--- linux-4.4.0.orig/Documentation/ABI/testing/debugfs-aufs +++ linux-4.4.0/Documentation/ABI/testing/debugfs-aufs @@ -0,0 +1,50 @@ +What: /debug/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /debug/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /debug/aufs/si_/plink +Date: Apr 2013 +Contact: J. R. Okajima +Description: + It has three lines and shows the information about the + pseudo-link. The first line is a single number + representing a number of buckets. The second line is a + number of pseudo-links per buckets (separated by a + blank). The last line is a single number representing a + total number of psedo-links. + When the aufs mount option 'noplink' is specified, it + will show "1\n0\n0\n". + +What: /debug/aufs/si_/xib +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xib (External Inode Number + Bitmap), its block size and file size. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. + +What: /debug/aufs/si_/xino0, xino1 ... xinoN +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xino (External Inode Number + Translation Table), its link count, block size and file + size. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. + +What: /debug/aufs/si_/xigen +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xigen (External Inode + Generation Table), its block size and file size. + If CONFIG_AUFS_EXPORT is disabled, this entry will not + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- linux-4.4.0.orig/Documentation/ABI/testing/sysfs-aufs +++ linux-4.4.0/Documentation/ABI/testing/sysfs-aufs @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /sys/fs/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /sys/fs/aufs/si_/br0, br1 ... brN +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of a member directory (which + is called branch) in aufs, and its permission. + +What: /sys/fs/aufs/si_/brid0, brid1 ... bridN +Date: July 2013 +Contact: J. R. Okajima +Description: + It shows the id of a member directory (which is called + branch) in aufs. + +What: /sys/fs/aufs/si_/xi_path +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of XINO (External Inode Number + Bitmap, Translation Table and Generation Table) file + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- linux-4.4.0.orig/Documentation/ABI/testing/sysfs-bus-usb +++ linux-4.4.0/Documentation/ABI/testing/sysfs-bus-usb @@ -134,19 +134,21 @@ enabled for the device. Developer can write y/Y/1 or n/N/0 to the file to enable/disable the feature. -What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm -Date: June 2015 +What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1 + /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2 +Date: November 2015 Contact: Kevin Strasser + Lu Baolu Description: If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged in to a xHCI host which supports link PM, it will check if U1 and U2 exit latencies have been set in the BOS descriptor; if - the check is is passed and the host supports USB3 hardware LPM, + the check is passed and the host supports USB3 hardware LPM, USB3 hardware LPM will be enabled for the device and the USB - device directory will contain a file named - power/usb3_hardware_lpm. The file holds a string value (enable - or disable) indicating whether or not USB3 hardware LPM is - enabled for the device. + device directory will contain two files named + power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These + files hold a string value (enable or disable) indicating whether + or not USB3 hardware LPM U1 or U2 is enabled for the device. What: /sys/bus/usb/devices/.../removable Date: February 2012 --- linux-4.4.0.orig/Documentation/filesystems/aufs/README +++ linux-4.4.0/Documentation/filesystems/aufs/README @@ -0,0 +1,390 @@ + +Aufs4 -- advanced multi layered unification filesystem version 4.x +http://aufs.sf.net +Junjiro R. Okajima + + +0. Introduction +---------------------------------------- +In the early days, aufs was entirely re-designed and re-implemented +Unionfs Version 1.x series. Adding many original ideas, approaches, +improvements and implementations, it becomes totally different from +Unionfs while keeping the basic features. +Recently, Unionfs Version 2.x series begin taking some of the same +approaches to aufs1's. +Unionfs is being developed by Professor Erez Zadok at Stony Brook +University and his team. + +Aufs4 supports linux-4.0 and later, and for linux-3.x series try aufs3. +If you want older kernel version support, try aufs2-2.6.git or +aufs2-standalone.git repository, aufs1 from CVS on SourceForge. + +Note: it becomes clear that "Aufs was rejected. Let's give it up." + According to Christoph Hellwig, linux rejects all union-type + filesystems but UnionMount. + + +PS. Al Viro seems have a plan to merge aufs as well as overlayfs and + UnionMount, and he pointed out an issue around a directory mutex + lock and aufs addressed it. But it is still unsure whether aufs will + be merged (or any other union solution). + + + +1. Features +---------------------------------------- +- unite several directories into a single virtual filesystem. The member + directory is called as a branch. +- you can specify the permission flags to the branch, which are 'readonly', + 'readwrite' and 'whiteout-able.' +- by upper writable branch, internal copyup and whiteout, files/dirs on + readonly branch are modifiable logically. +- dynamic branch manipulation, add, del. +- etc... + +Also there are many enhancements in aufs, such as: +- test only the highest one for the directory permission (dirperm1) +- copyup on open (coo=) +- 'move' policy for copy-up between two writable branches, after + checking free space. +- xattr, acl +- readdir(3) in userspace. +- keep inode number by external inode number table +- keep the timestamps of file/dir in internal copyup operation +- seekable directory, supporting NFS readdir. +- whiteout is hardlinked in order to reduce the consumption of inodes + on branch +- do not copyup, nor create a whiteout when it is unnecessary +- revert a single systemcall when an error occurs in aufs +- remount interface instead of ioctl +- maintain /etc/mtab by an external command, /sbin/mount.aufs. +- loopback mounted filesystem as a branch +- kernel thread for removing the dir who has a plenty of whiteouts +- support copyup sparse file (a file which has a 'hole' in it) +- default permission flags for branches +- selectable permission flags for ro branch, whether whiteout can + exist or not +- export via NFS. +- support /fs/aufs and /aufs. +- support multiple writable branches, some policies to select one + among multiple writable branches. +- a new semantics for link(2) and rename(2) to support multiple + writable branches. +- no glibc changes are required. +- pseudo hardlink (hardlink over branches) +- allow a direct access manually to a file on branch, e.g. bypassing aufs. + including NFS or remote filesystem branch. +- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. +- and more... + +Currently these features are dropped temporary from aufs4. +See design/08plan.txt in detail. +- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs + (robr) +- statistics of aufs thread (/sys/fs/aufs/stat) + +Features or just an idea in the future (see also design/*.txt), +- reorder the branch index without del/re-add. +- permanent xino files for NFSD +- an option for refreshing the opened files after add/del branches +- light version, without branch manipulation. (unnecessary?) +- copyup in userspace +- inotify in userspace +- readv/writev + + +2. Download +---------------------------------------- +There are three GIT trees for aufs4, aufs4-linux.git, +aufs4-standalone.git, and aufs-util.git. Note that there is no "4" in +"aufs-util.git." +While the aufs-util is always necessary, you need either of aufs4-linux +or aufs4-standalone. + +The aufs4-linux tree includes the whole linux mainline GIT tree, +git://git.kernel.org/.../torvalds/linux.git. +And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot +build aufs4 as an external kernel module. +Several extra patches are not included in this tree. Only +aufs4-standalone tree contains them. They are described in the later +section "Configuration and Compilation." + +On the other hand, the aufs4-standalone tree has only aufs source files +and necessary patches, and you can select CONFIG_AUFS_FS=m. +But you need to apply all aufs patches manually. + +You will find GIT branches whose name is in form of "aufs4.x" where "x" +represents the linux kernel version, "linux-4.x". For instance, +"aufs4.0" is for linux-4.0. For latest "linux-4.x-rcN", use +"aufs4.x-rcN" branch. + +o aufs4-linux tree +$ git clone --reference /your/linux/git/tree \ + git://github.com/sfjro/aufs4-linux.git aufs4-linux.git +- if you don't have linux GIT tree, then remove "--reference ..." +$ cd aufs4-linux.git +$ git checkout origin/aufs4.0 + +Or You may want to directly git-pull aufs into your linux GIT tree, and +leave the patch-work to GIT. +$ cd /your/linux/git/tree +$ git remote add aufs4 git://github.com/sfjro/aufs4-linux.git +$ git fetch aufs4 +$ git checkout -b my4.0 v4.0 +$ (add your local change...) +$ git pull aufs4 aufs4.0 +- now you have v4.0 + your_changes + aufs4.0 in you my4.0 branch. +- you may need to solve some conflicts between your_changes and + aufs4.0. in this case, git-rerere is recommended so that you can + solve the similar conflicts automatically when you upgrade to 4.1 or + later in the future. + +o aufs4-standalone tree +$ git clone git://github.com/sfjro/aufs4-standalone.git aufs4-standalone.git +$ cd aufs4-standalone.git +$ git checkout origin/aufs4.0 + +o aufs-util tree +$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git +- note that the public aufs-util.git is on SourceForge instead of + GitHUB. +$ cd aufs-util.git +$ git checkout origin/aufs4.0 + +Note: The 4.x-rcN branch is to be used with `rc' kernel versions ONLY. +The minor version number, 'x' in '4.x', of aufs may not always +follow the minor version number of the kernel. +Because changes in the kernel that cause the use of a new +minor version number do not always require changes to aufs-util. + +Since aufs-util has its own minor version number, you may not be +able to find a GIT branch in aufs-util for your kernel's +exact minor version number. +In this case, you should git-checkout the branch for the +nearest lower number. + +For (an unreleased) example: +If you are using "linux-4.10" and the "aufs4.10" branch +does not exist in aufs-util repository, then "aufs4.9", "aufs4.8" +or something numerically smaller is the branch for your kernel. + +Also you can view all branches by + $ git branch -a + + +3. Configuration and Compilation +---------------------------------------- +Make sure you have git-checkout'ed the correct branch. + +For aufs4-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. + +For aufs4-standalone tree, +There are several ways to build. + +1. +- apply ./aufs4-kbuild.patch to your kernel source files. +- apply ./aufs4-base.patch too. +- apply ./aufs4-mmap.patch too. +- apply ./aufs4-standalone.patch too, if you have a plan to set + CONFIG_AUFS_FS=m. otherwise you don't need ./aufs4-standalone.patch. +- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your + kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. +- enable CONFIG_AUFS_FS, you can select either + =m or =y. +- and build your kernel as usual. +- install the built kernel. + Note: Since linux-3.9, every filesystem module requires an alias + "fs-". You should make sure that "fs-aufs" is listed in your + modules.aliases file if you set CONFIG_AUFS_FS=m. +- install the header files too by "make headers_install" to the + directory where you specify. By default, it is $PWD/usr. + "make help" shows a brief note for headers_install. +- and reboot your system. + +2. +- module only (CONFIG_AUFS_FS=m). +- apply ./aufs4-base.patch to your kernel source files. +- apply ./aufs4-mmap.patch too. +- apply ./aufs4-standalone.patch too. +- build your kernel, don't forget "make headers_install", and reboot. +- edit ./config.mk and set other aufs configurations if necessary. + Note: You should read $PWD/fs/aufs/Kconfig carefully which describes + every aufs configurations. +- build the module by simple "make". + Note: Since linux-3.9, every filesystem module requires an alias + "fs-". You should make sure that "fs-aufs" is listed in your + modules.aliases file. +- you can specify ${KDIR} make variable which points to your kernel + source tree. +- install the files + + run "make install" to install the aufs module, or copy the built + $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). + + run "make install_headers" (instead of headers_install) to install + the modified aufs header file (you can specify DESTDIR which is + available in aufs standalone version's Makefile only), or copy + $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever + you like manually. By default, the target directory is $PWD/usr. +- no need to apply aufs4-kbuild.patch, nor copying source files to your + kernel source tree. + +Note: The header file aufs_type.h is necessary to build aufs-util + as well as "make headers_install" in the kernel source tree. + headers_install is subject to be forgotten, but it is essentially + necessary, not only for building aufs-util. + You may not meet problems without headers_install in some older + version though. + +And then, +- read README in aufs-util, build and install it +- note that your distribution may contain an obsoleted version of + aufs_type.h in /usr/include/linux or something. When you build aufs + utilities, make sure that your compiler refers the correct aufs header + file which is built by "make headers_install." +- if you want to use readdir(3) in userspace or pathconf(3) wrapper, + then run "make install_ulib" too. And refer to the aufs manual in + detail. + +There several other patches in aufs4-standalone.git. They are all +optional. When you meet some problems, they will help you. +- aufs4-loopback.patch + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message like "you may want to try + another patch for loopback file". +- vfs-ino.patch + Modifies a system global kernel internal function get_next_ino() in + order to stop assigning 0 for an inode-number. Not directly related to + aufs, but recommended generally. +- tmpfs-idr.patch + Keeps the tmpfs inode number as the lowest value. Effective to reduce + the size of aufs XINO files for tmpfs branch. Also it prevents the + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. +- lockdep-debug.patch + Because aufs is not only an ordinary filesystem (callee of VFS), but + also a caller of VFS functions for branch filesystems, subclassing of + the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging + feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will + need to apply this debug patch to expand several constant values. + If don't know what LOCKDEP, then you don't have apply this patch. + + +4. Usage +---------------------------------------- +At first, make sure aufs-util are installed, and please read the aufs +manual, aufs.5 in aufs-util.git tree. +$ man -l aufs.5 + +And then, +$ mkdir /tmp/rw /tmp/aufs +# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs + +Here is another example. The result is equivalent. +# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs + Or +# mount -t aufs -o br:/tmp/rw none /tmp/aufs +# mount -o remount,append:${HOME} /tmp/aufs + +Then, you can see whole tree of your home dir through /tmp/aufs. If +you modify a file under /tmp/aufs, the one on your home directory is +not affected, instead the same named file will be newly created under +/tmp/rw. And all of your modification to a file will be applied to +the one under /tmp/rw. This is called the file based Copy on Write +(COW) method. +Aufs mount options are described in aufs.5. +If you run chroot or something and make your aufs as a root directory, +then you need to customize the shutdown script. See the aufs manual in +detail. + +Additionally, there are some sample usages of aufs which are a +diskless system with network booting, and LiveCD over NFS. +See sample dir in CVS tree on SourceForge. + + +5. Contact +---------------------------------------- +When you have any problems or strange behaviour in aufs, please let me +know with: +- /proc/mounts (instead of the output of mount(8)) +- /sys/module/aufs/* +- /sys/fs/aufs/* (if you have them) +- /debug/aufs/* (if you have them) +- linux kernel version + if your kernel is not plain, for example modified by distributor, + the url where i can download its source is necessary too. +- aufs version which was printed at loading the module or booting the + system, instead of the date you downloaded. +- configuration (define/undefine CONFIG_AUFS_xxx) +- kernel configuration or /proc/config.gz (if you have it) +- behaviour which you think to be incorrect +- actual operation, reproducible one is better +- mailto: aufs-users at lists.sourceforge.net + +Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, +and Feature Requests) on SourceForge. Please join and write to +aufs-users ML. + + +6. Acknowledgements +---------------------------------------- +Thanks to everyone who have tried and are using aufs, whoever +have reported a bug or any feedback. + +Especially donators: +Tomas Matejicek(slax.org) made a donation (much more than once). + Since Apr 2010, Tomas M (the author of Slax and Linux Live + scripts) is making "doubling" donations. + Unfortunately I cannot list all of the donators, but I really + appreciate. + It ends Aug 2010, but the ordinary donation URL is still available. + +Dai Itasaka made a donation (2007/8). +Chuck Smith made a donation (2008/4, 10 and 12). +Henk Schoneveld made a donation (2008/9). +Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). +Francois Dupoux made a donation (2008/11). +Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public + aufs2 GIT tree (2009/2). +William Grant made a donation (2009/3). +Patrick Lane made a donation (2009/4). +The Mail Archive (mail-archive.com) made donations (2009/5). +Nippy Networks (Ed Wildgoose) made a donation (2009/7). +New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). +Pavel Pronskiy made a donation (2011/2). +Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy + Networks (Ed Wildgoose) made a donation for hardware (2011/3). +Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and +11). +Sam Liddicott made a donation (2011/9). +Era Scarecrow made a donation (2013/4). +Bor Ratajc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +POIRETTE Marc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +lauri kasvandik made a donation (2013/5). +"pemasu from Finland" made a donation (2013/7). +The Parted Magic Project made a donation (2013/9 and 11). +Pavel Barta made a donation (2013/10). +Nikolay Pertsev made a donation (2014/5). +James B made a donation (2014/7 and 2015/7). +Stefano Di Biase made a donation (2014/8). +Daniel Epellei made a donation (2015/1). + +Thank you very much. +Donations are always, including future donations, very important and +helpful for me to keep on developing aufs. + + +7. +---------------------------------------- +If you are an experienced user, no explanation is needed. Aufs is +just a linux filesystem. + + +Enjoy! + +# Local variables: ; +# mode: text; +# End: ; --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/01intro.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/01intro.txt @@ -0,0 +1,170 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Introduction +---------------------------------------- + +aufs [ei ju: ef es] | [a u f s] +1. abbrev. for "advanced multi-layered unification filesystem". +2. abbrev. for "another unionfs". +3. abbrev. for "auf das" in German which means "on the" in English. + Ex. "Butter aufs Brot"(G) means "butter onto bread"(E). + But "Filesystem aufs Filesystem" is hard to understand. + +AUFS is a filesystem with features: +- multi layered stackable unification filesystem, the member directory + is called as a branch. +- branch permission and attribute, 'readonly', 'real-readonly', + 'readwrite', 'whiteout-able', 'link-able whiteout', etc. and their + combination. +- internal "file copy-on-write". +- logical deletion, whiteout. +- dynamic branch manipulation, adding, deleting and changing permission. +- allow bypassing aufs, user's direct branch access. +- external inode number translation table and bitmap which maintains the + persistent aufs inode number. +- seekable directory, including NFS readdir. +- file mapping, mmap and sharing pages. +- pseudo-link, hardlink over branches. +- loopback mounted filesystem as a branch. +- several policies to select one among multiple writable branches. +- revert a single systemcall when an error occurs in aufs. +- and more... + + +Multi Layered Stackable Unification Filesystem +---------------------------------------------------------------------- +Most people already knows what it is. +It is a filesystem which unifies several directories and provides a +merged single directory. When users access a file, the access will be +passed/re-directed/converted (sorry, I am not sure which English word is +correct) to the real file on the member filesystem. The member +filesystem is called 'lower filesystem' or 'branch' and has a mode +'readonly' and 'readwrite.' And the deletion for a file on the lower +readonly branch is handled by creating 'whiteout' on the upper writable +branch. + +On LKML, there have been discussions about UnionMount (Jan Blunck, +Bharata B Rao and Valerie Aurora) and Unionfs (Erez Zadok). They took +different approaches to implement the merged-view. +The former tries putting it into VFS, and the latter implements as a +separate filesystem. +(If I misunderstand about these implementations, please let me know and +I shall correct it. Because it is a long time ago when I read their +source files last time). + +UnionMount's approach will be able to small, but may be hard to share +branches between several UnionMount since the whiteout in it is +implemented in the inode on branch filesystem and always +shared. According to Bharata's post, readdir does not seems to be +finished yet. +There are several missing features known in this implementations such as +- for users, the inode number may change silently. eg. copy-up. +- link(2) may break by copy-up. +- read(2) may get an obsoleted filedata (fstat(2) too). +- fcntl(F_SETLK) may be broken by copy-up. +- unnecessary copy-up may happen, for example mmap(MAP_PRIVATE) after + open(O_RDWR). + +In linux-3.18, "overlay" filesystem (formerly known as "overlayfs") was +merged into mainline. This is another implementation of UnionMount as a +separated filesystem. All the limitations and known problems which +UnionMount are equally inherited to "overlay" filesystem. + +Unionfs has a longer history. When I started implementing a stackable +filesystem (Aug 2005), it already existed. It has virtual super_block, +inode, dentry and file objects and they have an array pointing lower +same kind objects. After contributing many patches for Unionfs, I +re-started my project AUFS (Jun 2006). + +In AUFS, the structure of filesystem resembles to Unionfs, but I +implemented my own ideas, approaches and enhancements and it became +totally different one. + +Comparing DM snapshot and fs based implementation +- the number of bytes to be copied between devices is much smaller. +- the type of filesystem must be one and only. +- the fs must be writable, no readonly fs, even for the lower original + device. so the compression fs will not be usable. but if we use + loopback mount, we may address this issue. + for instance, + mount /cdrom/squashfs.img /sq + losetup /sq/ext2.img + losetup /somewhere/cow + dmsetup "snapshot /dev/loop0 /dev/loop1 ..." +- it will be difficult (or needs more operations) to extract the + difference between the original device and COW. +- DM snapshot-merge may help a lot when users try merging. in the + fs-layer union, users will use rsync(1). + +You may want to read my old paper "Filesystems in LiveCD" +(http://aufs.sourceforge.net/aufs2/report/sq/sq.pdf). + + +Several characters/aspects/persona of aufs +---------------------------------------------------------------------- + +Aufs has several characters, aspects or persona. +1. a filesystem, callee of VFS helper +2. sub-VFS, caller of VFS helper for branches +3. a virtual filesystem which maintains persistent inode number +4. reader/writer of files on branches such like an application + +1. Callee of VFS Helper +As an ordinary linux filesystem, aufs is a callee of VFS. For instance, +unlink(2) from an application reaches sys_unlink() kernel function and +then vfs_unlink() is called. vfs_unlink() is one of VFS helper and it +calls filesystem specific unlink operation. Actually aufs implements the +unlink operation but it behaves like a redirector. + +2. Caller of VFS Helper for Branches +aufs_unlink() passes the unlink request to the branch filesystem as if +it were called from VFS. So the called unlink operation of the branch +filesystem acts as usual. As a caller of VFS helper, aufs should handle +every necessary pre/post operation for the branch filesystem. +- acquire the lock for the parent dir on a branch +- lookup in a branch +- revalidate dentry on a branch +- mnt_want_write() for a branch +- vfs_unlink() for a branch +- mnt_drop_write() for a branch +- release the lock on a branch + +3. Persistent Inode Number +One of the most important issue for a filesystem is to maintain inode +numbers. This is particularly important to support exporting a +filesystem via NFS. Aufs is a virtual filesystem which doesn't have a +backend block device for its own. But some storage is necessary to +keep and maintain the inode numbers. It may be a large space and may not +suit to keep in memory. Aufs rents some space from its first writable +branch filesystem (by default) and creates file(s) on it. These files +are created by aufs internally and removed soon (currently) keeping +opened. +Note: Because these files are removed, they are totally gone after + unmounting aufs. It means the inode numbers are not persistent + across unmount or reboot. I have a plan to make them really + persistent which will be important for aufs on NFS server. + +4. Read/Write Files Internally (copy-on-write) +Because a branch can be readonly, when you write a file on it, aufs will +"copy-up" it to the upper writable branch internally. And then write the +originally requested thing to the file. Generally kernel doesn't +open/read/write file actively. In aufs, even a single write may cause a +internal "file copy". This behaviour is very similar to cp(1) command. + +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/02struct.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/02struct.txt @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Basic Aufs Internal Structure + +Superblock/Inode/Dentry/File Objects +---------------------------------------------------------------------- +As like an ordinary filesystem, aufs has its own +superblock/inode/dentry/file objects. All these objects have a +dynamically allocated array and store the same kind of pointers to the +lower filesystem, branch. +For example, when you build a union with one readwrite branch and one +readonly, mounted /au, /rw and /ro respectively. +- /au = /rw + /ro +- /ro/fileA exists but /rw/fileA + +Aufs lookup operation finds /ro/fileA and gets dentry for that. These +pointers are stored in a aufs dentry. The array in aufs dentry will be, +- [0] = NULL (because /rw/fileA doesn't exist) +- [1] = /ro/fileA + +This style of an array is essentially same to the aufs +superblock/inode/dentry/file objects. + +Because aufs supports manipulating branches, ie. add/delete/change +branches dynamically, these objects has its own generation. When +branches are changed, the generation in aufs superblock is +incremented. And a generation in other object are compared when it is +accessed. When a generation in other objects are obsoleted, aufs +refreshes the internal array. + + +Superblock +---------------------------------------------------------------------- +Additionally aufs superblock has some data for policies to select one +among multiple writable branches, XIB files, pseudo-links and kobject. +See below in detail. +About the policies which supports copy-down a directory, see +wbr_policy.txt too. + + +Branch and XINO(External Inode Number Translation Table) +---------------------------------------------------------------------- +Every branch has its own xino (external inode number translation table) +file. The xino file is created and unlinked by aufs internally. When two +members of a union exist on the same filesystem, they share the single +xino file. +The struct of a xino file is simple, just a sequence of aufs inode +numbers which is indexed by the lower inode number. +In the above sample, assume the inode number of /ro/fileA is i111 and +aufs assigns the inode number i999 for fileA. Then aufs writes 999 as +4(8) bytes at 111 * 4(8) bytes offset in the xino file. + +When the inode numbers are not contiguous, the xino file will be sparse +which has a hole in it and doesn't consume as much disk space as it +might appear. If your branch filesystem consumes disk space for such +holes, then you should specify 'xino=' option at mounting aufs. + +Aufs has a mount option to free the disk blocks for such holes in XINO +files on tmpfs or ramdisk. But it is not so effective actually. If you +meet a problem of disk shortage due to XINO files, then you should try +"tmpfs-ino.patch" (and "vfs-ino.patch" too) in aufs4-standalone.git. +The patch localizes the assignment inumbers per tmpfs-mount and avoid +the holes in XINO files. + +Also a writable branch has three kinds of "whiteout bases". All these +are existed when the branch is joined to aufs, and their names are +whiteout-ed doubly, so that users will never see their names in aufs +hierarchy. +1. a regular file which will be hardlinked to all whiteouts. +2. a directory to store a pseudo-link. +3. a directory to store an "orphan"-ed file temporary. + +1. Whiteout Base + When you remove a file on a readonly branch, aufs handles it as a + logical deletion and creates a whiteout on the upper writable branch + as a hardlink of this file in order not to consume inode on the + writable branch. +2. Pseudo-link Dir + See below, Pseudo-link. +3. Step-Parent Dir + When "fileC" exists on the lower readonly branch only and it is + opened and removed with its parent dir, and then user writes + something into it, then aufs copies-up fileC to this + directory. Because there is no other dir to store fileC. After + creating a file under this dir, the file is unlinked. + +Because aufs supports manipulating branches, ie. add/delete/change +dynamically, a branch has its own id. When the branch order changes, +aufs finds the new index by searching the branch id. + + +Pseudo-link +---------------------------------------------------------------------- +Assume "fileA" exists on the lower readonly branch only and it is +hardlinked to "fileB" on the branch. When you write something to fileA, +aufs copies-up it to the upper writable branch. Additionally aufs +creates a hardlink under the Pseudo-link Directory of the writable +branch. The inode of a pseudo-link is kept in aufs super_block as a +simple list. If fileB is read after unlinking fileA, aufs returns +filedata from the pseudo-link instead of the lower readonly +branch. Because the pseudo-link is based upon the inode, to keep the +inode number by xino (see above) is essentially necessary. + +All the hardlinks under the Pseudo-link Directory of the writable branch +should be restored in a proper location later. Aufs provides a utility +to do this. The userspace helpers executed at remounting and unmounting +aufs by default. +During this utility is running, it puts aufs into the pseudo-link +maintenance mode. In this mode, only the process which began the +maintenance mode (and its child processes) is allowed to operate in +aufs. Some other processes which are not related to the pseudo-link will +be allowed to run too, but the rest have to return an error or wait +until the maintenance mode ends. If a process already acquires an inode +mutex (in VFS), it has to return an error. + + +XIB(external inode number bitmap) +---------------------------------------------------------------------- +Addition to the xino file per a branch, aufs has an external inode number +bitmap in a superblock object. It is also an internal file such like a +xino file. +It is a simple bitmap to mark whether the aufs inode number is in-use or +not. +To reduce the file I/O, aufs prepares a single memory page to cache xib. + +As well as XINO files, aufs has a feature to truncate/refresh XIB to +reduce the number of consumed disk blocks for these files. + + +Virtual or Vertical Dir, and Readdir in Userspace +---------------------------------------------------------------------- +In order to support multiple layers (branches), aufs readdir operation +constructs a virtual dir block on memory. For readdir, aufs calls +vfs_readdir() internally for each dir on branches, merges their entries +with eliminating the whiteout-ed ones, and sets it to file (dir) +object. So the file object has its entry list until it is closed. The +entry list will be updated when the file position is zero and becomes +obsoleted. This decision is made in aufs automatically. + +The dynamically allocated memory block for the name of entries has a +unit of 512 bytes (by default) and stores the names contiguously (no +padding). Another block for each entry is handled by kmem_cache too. +During building dir blocks, aufs creates hash list and judging whether +the entry is whiteouted by its upper branch or already listed. +The merged result is cached in the corresponding inode object and +maintained by a customizable life-time option. + +Some people may call it can be a security hole or invite DoS attack +since the opened and once readdir-ed dir (file object) holds its entry +list and becomes a pressure for system memory. But I'd say it is similar +to files under /proc or /sys. The virtual files in them also holds a +memory page (generally) while they are opened. When an idea to reduce +memory for them is introduced, it will be applied to aufs too. +For those who really hate this situation, I've developed readdir(3) +library which operates this merging in userspace. You just need to set +LD_PRELOAD environment variable, and aufs will not consume no memory in +kernel space for readdir(3). + + +Workqueue +---------------------------------------------------------------------- +Aufs sometimes requires privilege access to a branch. For instance, +in copy-up/down operation. When a user process is going to make changes +to a file which exists in the lower readonly branch only, and the mode +of one of ancestor directories may not be writable by a user +process. Here aufs copy-up the file with its ancestors and they may +require privilege to set its owner/group/mode/etc. +This is a typical case of a application character of aufs (see +Introduction). + +Aufs uses workqueue synchronously for this case. It creates its own +workqueue. The workqueue is a kernel thread and has privilege. Aufs +passes the request to call mkdir or write (for example), and wait for +its completion. This approach solves a problem of a signal handler +simply. +If aufs didn't adopt the workqueue and changed the privilege of the +process, then the process may receive the unexpected SIGXFSZ or other +signals. + +Also aufs uses the system global workqueue ("events" kernel thread) too +for asynchronous tasks, such like handling inotify/fsnotify, re-creating a +whiteout base and etc. This is unrelated to a privilege. +Most of aufs operation tries acquiring a rw_semaphore for aufs +superblock at the beginning, at the same time waits for the completion +of all queued asynchronous tasks. + + +Whiteout +---------------------------------------------------------------------- +The whiteout in aufs is very similar to Unionfs's. That is represented +by its filename. UnionMount takes an approach of a file mode, but I am +afraid several utilities (find(1) or something) will have to support it. + +Basically the whiteout represents "logical deletion" which stops aufs to +lookup further, but also it represents "dir is opaque" which also stop +further lookup. + +In aufs, rmdir(2) and rename(2) for dir uses whiteout alternatively. +In order to make several functions in a single systemcall to be +revertible, aufs adopts an approach to rename a directory to a temporary +unique whiteouted name. +For example, in rename(2) dir where the target dir already existed, aufs +renames the target dir to a temporary unique whiteouted name before the +actual rename on a branch, and then handles other actions (make it opaque, +update the attributes, etc). If an error happens in these actions, aufs +simply renames the whiteouted name back and returns an error. If all are +succeeded, aufs registers a function to remove the whiteouted unique +temporary name completely and asynchronously to the system global +workqueue. + + +Copy-up +---------------------------------------------------------------------- +It is a well-known feature or concept. +When user modifies a file on a readonly branch, aufs operate "copy-up" +internally and makes change to the new file on the upper writable branch. +When the trigger systemcall does not update the timestamps of the parent +dir, aufs reverts it after copy-up. + + +Move-down (aufs3.9 and later) +---------------------------------------------------------------------- +"Copy-up" is one of the essential feature in aufs. It copies a file from +the lower readonly branch to the upper writable branch when a user +changes something about the file. +"Move-down" is an opposite action of copy-up. Basically this action is +ran manually instead of automatically and internally. +For desgin and implementation, aufs has to consider these issues. +- whiteout for the file may exist on the lower branch. +- ancestor directories may not exist on the lower branch. +- diropq for the ancestor directories may exist on the upper branch. +- free space on the lower branch will reduce. +- another access to the file may happen during moving-down, including + UDBA (see "Revalidate Dentry and UDBA"). +- the file should not be hard-linked nor pseudo-linked. they should be + handled by auplink utility later. + +Sometimes users want to move-down a file from the upper writable branch +to the lower readonly or writable branch. For instance, +- the free space of the upper writable branch is going to run out. +- create a new intermediate branch between the upper and lower branch. +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/03atomic_open.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/03atomic_open.txt @@ -0,0 +1,85 @@ + +# Copyright (C) 2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Support for a branch who has its ->atomic_open() +---------------------------------------------------------------------- +The filesystems who implement its ->atomic_open() are not majority. For +example NFSv4 does, and aufs should call NFSv4 ->atomic_open, +particularly for open(O_CREAT|O_EXCL, 0400) case. Other than +->atomic_open(), NFSv4 returns an error for this open(2). While I am not +sure whether all filesystems who have ->atomic_open() behave like this, +but NFSv4 surely returns the error. + +In order to support ->atomic_open() for aufs, there are a few +approaches. + +A. Introduce aufs_atomic_open() + - calls one of VFS:do_last(), lookup_open() or atomic_open() for + branch fs. +B. Introduce aufs_atomic_open() calling create, open and chmod. this is + an aufs user Pip Cet's approach + - calls aufs_create(), VFS finish_open() and notify_change(). + - pass fake-mode to finish_open(), and then correct the mode by + notify_change(). +C. Extend aufs_open() to call branch fs's ->atomic_open() + - no aufs_atomic_open(). + - aufs_lookup() registers the TID to an aufs internal object. + - aufs_create() does nothing when the matching TID is registered, but + registers the mode. + - aufs_open() calls branch fs's ->atomic_open() when the matching + TID is registered. +D. Extend aufs_open() to re-try branch fs's ->open() with superuser's + credential + - no aufs_atomic_open(). + - aufs_create() registers the TID to an internal object. this info + represents "this process created this file just now." + - when aufs gets EACCES from branch fs's ->open(), then confirm the + registered TID and re-try open() with superuser's credential. + +Pros and cons for each approach. + +A. + - straightforward but highly depends upon VFS internal. + - the atomic behavaiour is kept. + - some of parameters such as nameidata are hard to reproduce for + branch fs. + - large overhead. +B. + - easy to implement. + - the atomic behavaiour is lost. +C. + - the atomic behavaiour is kept. + - dirty and tricky. + - VFS checks whether the file is created correctly after calling + ->create(), which means this approach doesn't work. +D. + - easy to implement. + - the atomic behavaiour is lost. + - to open a file with superuser's credential and give it to a user + process is a bad idea, since the file object keeps the credential + in it. It may affect LSM or something. This approach doesn't work + either. + +The approach A is ideal, but it hard to implement. So here is a +variation of A, which is to be implemented. + +A-1. Introduce aufs_atomic_open() + - calls branch fs ->atomic_open() if exists. otherwise calls + vfs_create() and finish_open(). + - the demerit is that the several checks after branch fs + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/03lookup.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/03lookup.txt @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Lookup in a Branch +---------------------------------------------------------------------- +Since aufs has a character of sub-VFS (see Introduction), it operates +lookup for branches as VFS does. It may be a heavy work. But almost all +lookup operation in aufs is the simplest case, ie. lookup only an entry +directly connected to its parent. Digging down the directory hierarchy +is unnecessary. VFS has a function lookup_one_len() for that use, and +aufs calls it. + +When a branch is a remote filesystem, aufs basically relies upon its +->d_revalidate(), also aufs forces the hardest revalidate tests for +them. +For d_revalidate, aufs implements three levels of revalidate tests. See +"Revalidate Dentry and UDBA" in detail. + + +Test Only the Highest One for the Directory Permission (dirperm1 option) +---------------------------------------------------------------------- +Let's try case study. +- aufs has two branches, upper readwrite and lower readonly. + /au = /rw + /ro +- "dirA" exists under /ro, but /rw. and its mode is 0700. +- user invoked "chmod a+rx /au/dirA" +- the internal copy-up is activated and "/rw/dirA" is created and its + permission bits are set to world readable. +- then "/au/dirA" becomes world readable? + +In this case, /ro/dirA is still 0700 since it exists in readonly branch, +or it may be a natively readonly filesystem. If aufs respects the lower +branch, it should not respond readdir request from other users. But user +allowed it by chmod. Should really aufs rejects showing the entries +under /ro/dirA? + +To be honest, I don't have a good solution for this case. So aufs +implements 'dirperm1' and 'nodirperm1' mount options, and leave it to +users. +When dirperm1 is specified, aufs checks only the highest one for the +directory permission, and shows the entries. Otherwise, as usual, checks +every dir existing on all branches and rejects the request. + +As a side effect, dirperm1 option improves the performance of aufs +because the number of permission check is reduced when the number of +branch is many. + + +Revalidate Dentry and UDBA (User's Direct Branch Access) +---------------------------------------------------------------------- +Generally VFS helpers re-validate a dentry as a part of lookup. +0. digging down the directory hierarchy. +1. lock the parent dir by its i_mutex. +2. lookup the final (child) entry. +3. revalidate it. +4. call the actual operation (create, unlink, etc.) +5. unlock the parent dir + +If the filesystem implements its ->d_revalidate() (step 3), then it is +called. Actually aufs implements it and checks the dentry on a branch is +still valid. +But it is not enough. Because aufs has to release the lock for the +parent dir on a branch at the end of ->lookup() (step 2) and +->d_revalidate() (step 3) while the i_mutex of the aufs dir is still +held by VFS. +If the file on a branch is changed directly, eg. bypassing aufs, after +aufs released the lock, then the subsequent operation may cause +something unpleasant result. + +This situation is a result of VFS architecture, ->lookup() and +->d_revalidate() is separated. But I never say it is wrong. It is a good +design from VFS's point of view. It is just not suitable for sub-VFS +character in aufs. + +Aufs supports such case by three level of revalidation which is +selectable by user. +1. Simple Revalidate + Addition to the native flow in VFS's, confirm the child-parent + relationship on the branch just after locking the parent dir on the + branch in the "actual operation" (step 4). When this validation + fails, aufs returns EBUSY. ->d_revalidate() (step 3) in aufs still + checks the validation of the dentry on branches. +2. Monitor Changes Internally by Inotify/Fsnotify + Addition to above, in the "actual operation" (step 4) aufs re-lookup + the dentry on the branch, and returns EBUSY if it finds different + dentry. + Additionally, aufs sets the inotify/fsnotify watch for every dir on branches + during it is in cache. When the event is notified, aufs registers a + function to kernel 'events' thread by schedule_work(). And the + function sets some special status to the cached aufs dentry and inode + private data. If they are not cached, then aufs has nothing to + do. When the same file is accessed through aufs (step 0-3) later, + aufs will detect the status and refresh all necessary data. + In this mode, aufs has to ignore the event which is fired by aufs + itself. +3. No Extra Validation + This is the simplest test and doesn't add any additional revalidation + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/04branch.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/04branch.txt @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Branch Manipulation + +Since aufs supports dynamic branch manipulation, ie. add/remove a branch +and changing its permission/attribute, there are a lot of works to do. + + +Add a Branch +---------------------------------------------------------------------- +o Confirm the adding dir exists outside of aufs, including loopback + mount, and its various attributes. +o Initialize the xino file and whiteout bases if necessary. + See struct.txt. + +o Check the owner/group/mode of the directory + When the owner/group/mode of the adding directory differs from the + existing branch, aufs issues a warning because it may impose a + security risk. + For example, when a upper writable branch has a world writable empty + top directory, a malicious user can create any files on the writable + branch directly, like copy-up and modify manually. If something like + /etc/{passwd,shadow} exists on the lower readonly branch but the upper + writable branch, and the writable branch is world-writable, then a + malicious guy may create /etc/passwd on the writable branch directly + and the infected file will be valid in aufs. + I am afraid it can be a security issue, but aufs can do nothing except + producing a warning. + + +Delete a Branch +---------------------------------------------------------------------- +o Confirm the deleting branch is not busy + To be general, there is one merit to adopt "remount" interface to + manipulate branches. It is to discard caches. At deleting a branch, + aufs checks the still cached (and connected) dentries and inodes. If + there are any, then they are all in-use. An inode without its + corresponding dentry can be alive alone (for example, inotify/fsnotify case). + + For the cached one, aufs checks whether the same named entry exists on + other branches. + If the cached one is a directory, because aufs provides a merged view + to users, as long as one dir is left on any branch aufs can show the + dir to users. In this case, the branch can be removed from aufs. + Otherwise aufs rejects deleting the branch. + + If any file on the deleting branch is opened by aufs, then aufs + rejects deleting. + + +Modify the Permission of a Branch +---------------------------------------------------------------------- +o Re-initialize or remove the xino file and whiteout bases if necessary. + See struct.txt. + +o rw --> ro: Confirm the modifying branch is not busy + Aufs rejects the request if any of these conditions are true. + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/05wbr_policy.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/05wbr_policy.txt @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Policies to Select One among Multiple Writable Branches +---------------------------------------------------------------------- +When the number of writable branch is more than one, aufs has to decide +the target branch for file creation or copy-up. By default, the highest +writable branch which has the parent (or ancestor) dir of the target +file is chosen (top-down-parent policy). +By user's request, aufs implements some other policies to select the +writable branch, for file creation several policies, round-robin, +most-free-space, and other policies. For copy-up, top-down-parent, +bottom-up-parent, bottom-up and others. + +As expected, the round-robin policy selects the branch in circular. When +you have two writable branches and creates 10 new files, 5 files will be +created for each branch. mkdir(2) systemcall is an exception. When you +create 10 new directories, all will be created on the same branch. +And the most-free-space policy selects the one which has most free +space among the writable branches. The amount of free space will be +checked by aufs internally, and users can specify its time interval. + +The policies for copy-up is more simple, +top-down-parent is equivalent to the same named on in create policy, +bottom-up-parent selects the writable branch where the parent dir +exists and the nearest upper one from the copyup-source, +bottom-up selects the nearest upper writable branch from the +copyup-source, regardless the existence of the parent dir. + +There are some rules or exceptions to apply these policies. +- If there is a readonly branch above the policy-selected branch and + the parent dir is marked as opaque (a variation of whiteout), or the + target (creating) file is whiteout-ed on the upper readonly branch, + then the result of the policy is ignored and the target file will be + created on the nearest upper writable branch than the readonly branch. +- If there is a writable branch above the policy-selected branch and + the parent dir is marked as opaque or the target file is whiteouted + on the branch, then the result of the policy is ignored and the target + file will be created on the highest one among the upper writable + branches who has diropq or whiteout. In case of whiteout, aufs removes + it as usual. +- link(2) and rename(2) systemcalls are exceptions in every policy. + They try selecting the branch where the source exists as possible + since copyup a large file will take long time. If it can't be, + ie. the branch where the source exists is readonly, then they will + follow the copyup policy. +- There is an exception for rename(2) when the target exists. + If the rename target exists, aufs compares the index of the branches + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/06fhsm.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/06fhsm.txt @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +File-based Hierarchical Storage Management (FHSM) +---------------------------------------------------------------------- +Hierarchical Storage Management (or HSM) is a well-known feature in the +storage world. Aufs provides this feature as file-based with multiple +writable branches, based upon the principle of "Colder, the Lower". +Here the word "colder" means that the less used files, and "lower" means +that the position in the order of the stacked branches vertically. +These multiple writable branches are prioritized, ie. the topmost one +should be the fastest drive and be used heavily. + +o Characters in aufs FHSM story +- aufs itself and a new branch attribute. +- a new ioctl interface to move-down and to establish a connection with + the daemon ("move-down" is a converse of "copy-up"). +- userspace tool and daemon. + +The userspace daemon establishes a connection with aufs and waits for +the notification. The notified information is very similar to struct +statfs containing the number of consumed blocks and inodes. +When the consumed blocks/inodes of a branch exceeds the user-specified +upper watermark, the daemon activates its move-down process until the +consumed blocks/inodes reaches the user-specified lower watermark. + +The actual move-down is done by aufs based upon the request from +user-space since we need to maintain the inode number and the internal +pointer arrays in aufs. + +Currently aufs FHSM handles the regular files only. Additionally they +must not be hard-linked nor pseudo-linked. + + +o Cowork of aufs and the user-space daemon + During the userspace daemon established the connection, aufs sends a + small notification to it whenever aufs writes something into the + writable branch. But it may cost high since aufs issues statfs(2) + internally. So user can specify a new option to cache the + info. Actually the notification is controlled by these factors. + + the specified cache time. + + classified as "force" by aufs internally. + Until the specified time expires, aufs doesn't send the info + except the forced cases. When aufs decide forcing, the info is always + notified to userspace. + For example, the number of free inodes is generally large enough and + the shortage of it happens rarely. So aufs doesn't force the + notification when creating a new file, directory and others. This is + the typical case which aufs doesn't force. + When aufs writes the actual filedata and the files consumes any of new + blocks, the aufs forces notifying. + + +o Interfaces in aufs +- New branch attribute. + + fhsm + Specifies that the branch is managed by FHSM feature. In other word, + participant in the FHSM. + When nofhsm is set to the branch, it will not be the source/target + branch of the move-down operation. This attribute is set + independently from coo and moo attributes, and if you want full + FHSM, you should specify them as well. +- New mount option. + + fhsm_sec + Specifies a second to suppress many less important info to be + notified. +- New ioctl. + + AUFS_CTL_FHSM_FD + create a new file descriptor which userspace can read the notification + (a subset of struct statfs) from aufs. +- Module parameter 'brs' + It has to be set to 1. Otherwise the new mount option 'fhsm' will not + be set. +- mount helpers /sbin/mount.aufs and /sbin/umount.aufs + When there are two or more branches with fhsm attributes, + /sbin/mount.aufs invokes the user-space daemon and /sbin/umount.aufs + terminates it. As a result of remounting and branch-manipulation, the + number of branches with fhsm attribute can be one. In this case, + /sbin/mount.aufs will terminate the user-space daemon. + + +Finally the operation is done as these steps in kernel-space. +- make sure that, + + no one else is using the file. + + the file is not hard-linked. + + the file is not pseudo-linked. + + the file is a regular file. + + the parent dir is not opaqued. +- find the target writable branch. +- make sure the file is not whiteout-ed by the upper (than the target) + branch. +- make the parent dir on the target branch. +- mutex lock the inode on the branch. +- unlink the whiteout on the target branch (if exists). +- lookup and create the whiteout-ed temporary name on the target branch. +- copy the file as the whiteout-ed temporary name on the target branch. +- rename the whiteout-ed temporary name to the original name. +- unlink the file on the source branch. +- maintain the internal pointer array and the external inode number + table (XINO). +- maintain the timestamps and other attributes of the parent dir and the + file. + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/06mmap.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/06mmap.txt @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +mmap(2) -- File Memory Mapping +---------------------------------------------------------------------- +In aufs, the file-mapped pages are handled by a branch fs directly, no +interaction with aufs. It means aufs_mmap() calls the branch fs's +->mmap(). +This approach is simple and good, but there is one problem. +Under /proc, several entries show the mmapped files by its path (with +device and inode number), and the printed path will be the path on the +branch fs's instead of virtual aufs's. +This is not a problem in most cases, but some utilities lsof(1) (and its +user) may expect the path on aufs. + +To address this issue, aufs adds a new member called vm_prfile in struct +vm_area_struct (and struct vm_region). The original vm_file points to +the file on the branch fs in order to handle everything correctly as +usual. The new vm_prfile points to a virtual file in aufs, and the +show-functions in procfs refers to vm_prfile if it is set. +Also we need to maintain several other places where touching vm_file +such like +- fork()/clone() copies vma and the reference count of vm_file is + incremented. +- merging vma maintains the ref count too. + +This is not a good approach. It just fakes the printed path. But it +leaves all behaviour around f_mapping unchanged. This is surely an +advantage. +Actually aufs had adopted another complicated approach which calls +generic_file_mmap() and handles struct vm_operations_struct. In this +approach, aufs met a hard problem and I could not solve it without +switching the approach. + +There may be one more another approach which is +- bind-mount the branch-root onto the aufs-root internally +- grab the new vfsmount (ie. struct mount) +- lazy-umount the branch-root internally +- in open(2) the aufs-file, open the branch-file with the hidden + vfsmount (instead of the original branch's vfsmount) +- ideally this "bind-mount and lazy-umount" should be done atomically, + but it may be possible from userspace by the mount helper. + +Adding the internal hidden vfsmount and using it in opening a file, the +file path under /proc will be printed correctly. This approach looks +smarter, but is not possible I am afraid. +- aufs-root may be bind-mount later. when it happens, another hidden + vfsmount will be required. +- it is hard to get the chance to bind-mount and lazy-umount + + in kernel-space, FS can have vfsmount in open(2) via + file->f_path, and aufs can know its vfsmount. But several locks are + already acquired, and if aufs tries to bind-mount and lazy-umount + here, then it may cause a deadlock. + + in user-space, bind-mount doesn't invoke the mount helper. +- since /proc shows dev and ino, aufs has to give vma these info. it + means a new member vm_prinode will be necessary. this is essentially + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/06xattr.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/06xattr.txt @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Listing XATTR/EA and getting the value +---------------------------------------------------------------------- +For the inode standard attributes (owner, group, timestamps, etc.), aufs +shows the values from the topmost existing file. This behaviour is good +for the non-dir entries since the bahaviour exactly matches the shown +information. But for the directories, aufs considers all the same named +entries on the lower branches. Which means, if one of the lower entry +rejects readdir call, then aufs returns an error even if the topmost +entry allows it. This behaviour is necessary to respect the branch fs's +security, but can make users confused since the user-visible standard +attributes don't match the behaviour. +To address this issue, aufs has a mount option called dirperm1 which +checks the permission for the topmost entry only, and ignores the lower +entry's permission. + +A similar issue can happen around XATTR. +getxattr(2) and listxattr(2) families behave as if dirperm1 option is +always set. Otherwise these very unpleasant situation would happen. +- listxattr(2) may return the duplicated entries. +- users may not be able to remove or reset the XATTR forever, + + +XATTR/EA support in the internal (copy,move)-(up,down) +---------------------------------------------------------------------- +Generally the extended attributes of inode are categorized as these. +- "security" for LSM and capability. +- "system" for posix ACL, 'acl' mount option is required for the branch + fs generally. +- "trusted" for userspace, CAP_SYS_ADMIN is required. +- "user" for userspace, 'user_xattr' mount option is required for the + branch fs generally. + +Moreover there are some other categories. Aufs handles these rather +unpopular categories as the ordinary ones, ie. there is no special +condition nor exception. + +In copy-up, the support for XATTR on the dst branch may differ from the +src branch. In this case, the copy-up operation will get an error and +the original user operation which triggered the copy-up will fail. It +can happen that even all copy-up will fail. +When both of src and dst branches support XATTR and if an error occurs +during copying XATTR, then the copy-up should fail obviously. That is a +good reason and aufs should return an error to userspace. But when only +the src branch support that XATTR, aufs should not return an error. +For example, the src branch supports ACL but the dst branch doesn't +because the dst branch may natively un-support it or temporary +un-support it due to "noacl" mount option. Of course, the dst branch fs +may NOT return an error even if the XATTR is not supported. It is +totally up to the branch fs. + +Anyway when the aufs internal copy-up gets an error from the dst branch +fs, then aufs tries removing the just copied entry and returns the error +to the userspace. The worst case of this situation will be all copy-up +will fail. + +For the copy-up operation, there two basic approaches. +- copy the specified XATTR only (by category above), and return the + error unconditionally if it happens. +- copy all XATTR, and ignore the error on the specified category only. + +In order to support XATTR and to implement the correct behaviour, aufs +chooses the latter approach and introduces some new branch attributes, +"icexsec", "icexsys", "icextr", "icexusr", and "icexoth". +They correspond to the XATTR namespaces (see above). Additionally, to be +convenient, "icex" is also provided which means all "icex*" attributes +are set (here the word "icex" stands for "ignore copy-error on XATTR"). + +The meaning of these attributes is to ignore the error from setting +XATTR on that branch. +Note that aufs tries copying all XATTR unconditionally, and ignores the +error from the dst branch according to the specified attributes. + +Some XATTR may have its default value. The default value may come from +the parent dir or the environment. If the default value is set at the +file creating-time, it will be overwritten by copy-up. +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/07export.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/07export.txt @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Export Aufs via NFS +---------------------------------------------------------------------- +Here is an approach. +- like xino/xib, add a new file 'xigen' which stores aufs inode + generation. +- iget_locked(): initialize aufs inode generation for a new inode, and + store it in xigen file. +- destroy_inode(): increment aufs inode generation and store it in xigen + file. it is necessary even if it is not unlinked, because any data of + inode may be changed by UDBA. +- encode_fh(): for a root dir, simply return FILEID_ROOT. otherwise + build file handle by + + branch id (4 bytes) + + superblock generation (4 bytes) + + inode number (4 or 8 bytes) + + parent dir inode number (4 or 8 bytes) + + inode generation (4 bytes)) + + return value of exportfs_encode_fh() for the parent on a branch (4 + bytes) + + file handle for a branch (by exportfs_encode_fh()) +- fh_to_dentry(): + + find the index of a branch from its id in handle, and check it is + still exist in aufs. + + 1st level: get the inode number from handle and search it in cache. + + 2nd level: if not found in cache, get the parent inode number from + the handle and search it in cache. and then open the found parent + dir, find the matching inode number by vfs_readdir() and get its + name, and call lookup_one_len() for the target dentry. + + 3rd level: if the parent dir is not cached, call + exportfs_decode_fh() for a branch and get the parent on a branch, + build a pathname of it, convert it a pathname in aufs, call + path_lookup(). now aufs gets a parent dir dentry, then handle it as + the 2nd level. + + to open the dir, aufs needs struct vfsmount. aufs keeps vfsmount + for every branch, but not itself. to get this, (currently) aufs + searches in current->nsproxy->mnt_ns list. it may not be a good + idea, but I didn't get other approach. + + test the generation of the gotten inode. +- every inode operation: they may get EBUSY due to UDBA. in this case, + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/08shwh.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/08shwh.txt @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Show Whiteout Mode (shwh) +---------------------------------------------------------------------- +Generally aufs hides the name of whiteouts. But in some cases, to show +them is very useful for users. For instance, creating a new middle layer +(branch) by merging existing layers. + +(borrowing aufs1 HOW-TO from a user, Michael Towers) +When you have three branches, +- Bottom: 'system', squashfs (underlying base system), read-only +- Middle: 'mods', squashfs, read-only +- Top: 'overlay', ram (tmpfs), read-write + +The top layer is loaded at boot time and saved at shutdown, to preserve +the changes made to the system during the session. +When larger changes have been made, or smaller changes have accumulated, +the size of the saved top layer data grows. At this point, it would be +nice to be able to merge the two overlay branches ('mods' and 'overlay') +and rewrite the 'mods' squashfs, clearing the top layer and thus +restoring save and load speed. + +This merging is simplified by the use of another aufs mount, of just the +two overlay branches using the 'shwh' option. +# mount -t aufs -o ro,shwh,br:/livesys/overlay=ro+wh:/livesys/mods=rr+wh \ + aufs /livesys/merge_union + +A merged view of these two branches is then available at +/livesys/merge_union, and the new feature is that the whiteouts are +visible! +Note that in 'shwh' mode the aufs mount must be 'ro', which will disable +writing to all branches. Also the default mode for all branches is 'ro'. +It is now possible to save the combined contents of the two overlay +branches to a new squashfs, e.g.: +# mksquashfs /livesys/merge_union /path/to/newmods.squash + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. --- linux-4.4.0.orig/Documentation/filesystems/aufs/design/10dynop.txt +++ linux-4.4.0/Documentation/filesystems/aufs/design/10dynop.txt @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2015 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Dynamically customizable FS operations +---------------------------------------------------------------------- +Generally FS operations (struct inode_operations, struct +address_space_operations, struct file_operations, etc.) are defined as +"static const", but it never means that FS have only one set of +operation. Some FS have multiple sets of them. For instance, ext2 has +three sets, one for XIP, for NOBH, and for normal. +Since aufs overrides and redirects these operations, sometimes aufs has +to change its behaviour according to the branch FS type. More importantly +VFS acts differently if a function (member in the struct) is set or +not. It means aufs should have several sets of operations and select one +among them according to the branch FS definition. + +In order to solve this problem and not to affect the behaviour of VFS, +aufs defines these operations dynamically. For instance, aufs defines +dummy direct_IO function for struct address_space_operations, but it may +not be set to the address_space_operations actually. When the branch FS +doesn't have it, aufs doesn't set it to its address_space_operations +while the function definition itself is still alive. So the behaviour +itself will not change, and it will return an error when direct_IO is +not set. + +The lifetime of these dynamically generated operation object is +maintained by aufs branch object. When the branch is removed from aufs, +the reference counter of the object is decremented. When it reaches +zero, the dynamically generated operation object will be freed. + +This approach is designed to support AIO (io_submit), Direct I/O and +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. --- linux-4.4.0.orig/Documentation/kernel-parameters.txt +++ linux-4.4.0/Documentation/kernel-parameters.txt @@ -193,6 +193,12 @@ (e.g. thinkpad_acpi, sony_acpi, etc.) instead of the ACPI video.ko driver. + acpi_force_32bit_fadt_addr + force FADT to use 32 bit addresses rather than the + 64 bit X_* addresses. Some firmware have broken 64 + bit addresses for force ACPI ignore these and use + the older legacy 32 bit addresss. + acpica_no_return_repair [HW, ACPI] Disable AML predefined validation mechanism This mechanism can repair the evaluation result to make @@ -750,6 +756,10 @@ /proc//coredump_filter. See also Documentation/filesystems/proc.txt. + cpufreq_driver= [X86] Allow only the named cpu frequency scaling driver + to register. Example: cpufreq_driver=powernow-k8 + Format: { none | STRING } + cpuidle.off=1 [CPU_IDLE] disable the cpuidle sub-system --- linux-4.4.0.orig/Documentation/security/keys-trusted-encrypted.txt +++ linux-4.4.0/Documentation/security/keys-trusted-encrypted.txt @@ -27,17 +27,26 @@ keyctl print keyid options: - keyhandle= ascii hex value of sealing key default 0x40000000 (SRK) - keyauth= ascii hex auth for sealing key default 0x00...i - (40 ascii zeros) - blobauth= ascii hex auth for sealed data default 0x00... - (40 ascii zeros) - blobauth= ascii hex auth for sealed data default 0x00... - (40 ascii zeros) - pcrinfo= ascii hex of PCR_INFO or PCR_INFO_LONG (no default) - pcrlock= pcr number to be extended to "lock" blob - migratable= 0|1 indicating permission to reseal to new PCR values, - default 1 (resealing allowed) + keyhandle= ascii hex value of sealing key default 0x40000000 (SRK) + keyauth= ascii hex auth for sealing key default 0x00...i + (40 ascii zeros) + blobauth= ascii hex auth for sealed data default 0x00... + (40 ascii zeros) + blobauth= ascii hex auth for sealed data default 0x00... + (40 ascii zeros) + pcrinfo= ascii hex of PCR_INFO or PCR_INFO_LONG (no default) + pcrlock= pcr number to be extended to "lock" blob + migratable= 0|1 indicating permission to reseal to new PCR values, + default 1 (resealing allowed) + hash= hash algorithm name as a string. For TPM 1.x the only + allowed value is sha1. For TPM 2.x the allowed values + are sha1, sha256, sha384, sha512 and sm3-256. + policydigest= digest for the authorization policy. must be calculated + with the same hash algorithm as specified by the 'hash=' + option. + policyhandle= handle to an authorization policy session that defines the + same policy and with the same hash algorithm as was used to + seal the key. "keyctl print" returns an ascii hex copy of the sealed key, which is in standard TPM_STORED_DATA format. The key length for new keys are always in bytes. --- linux-4.4.0.orig/Documentation/usb/power-management.txt +++ linux-4.4.0/Documentation/usb/power-management.txt @@ -537,17 +537,18 @@ can write y/Y/1 or n/N/0 to the file to enable/disable USB2 hardware LPM manually. This is for test purpose mainly. - power/usb3_hardware_lpm + power/usb3_hardware_lpm_u1 + power/usb3_hardware_lpm_u2 When a USB 3.0 lpm-capable device is plugged in to a xHCI host which supports link PM, it will check if U1 and U2 exit latencies have been set in the BOS descriptor; if the check is is passed and the host supports USB3 hardware LPM, USB3 hardware LPM will be - enabled for the device and this file will be created. - The file holds a string value (enable or disable) - indicating whether or not USB3 hardware LPM is - enabled for the device. + enabled for the device and these files will be created. + The files hold a string value (enable or disable) + indicating whether or not USB3 hardware LPM U1 or U2 + is enabled for the device. USB Port Power Control ---------------------- --- linux-4.4.0.orig/MAINTAINERS +++ linux-4.4.0/MAINTAINERS @@ -2029,6 +2029,19 @@ F: include/uapi/linux/audit.h F: kernel/audit* +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" +L: linux-unionfs@vger.kernel.org +L: aufs-users@lists.sourceforge.net (members only) +W: http://aufs.sourceforge.net +T: git://github.com/sfjro/aufs4-linux.git +S: Supported +F: Documentation/filesystems/aufs/ +F: Documentation/ABI/testing/debugfs-aufs +F: Documentation/ABI/testing/sysfs-aufs +F: fs/aufs/ +F: include/uapi/linux/aufs_type.h + AUXILIARY DISPLAY DRIVERS M: Miguel Ojeda Sandonis W: http://miguelojeda.es/auxdisplay.htm @@ -5283,6 +5296,13 @@ S: Supported F: drivers/net/ethernet/ibm/ibmveth.* +IBM Power SRIOV Virtual NIC Device Driver +M: Thomas Falcon +M: John Allen +L: netdev@vger.kernel.org +S: Supported +F: drivers/net/ethernet/ibm/ibmvnic.* + IBM Power Virtual SCSI Device Drivers M: Tyrel Datwyler L: linux-scsi@vger.kernel.org @@ -5684,12 +5704,23 @@ F: drivers/dma/mic_x100_dma.h F Documentation/mic/ -INTEL PMC IPC DRIVER +INTEL PMC/P-Unit IPC DRIVER M: Zha Qipeng L: platform-driver-x86@vger.kernel.org S: Maintained F: drivers/platform/x86/intel_pmc_ipc.c +F: drivers/platform/x86/intel_punit_ipc.c F: arch/x86/include/asm/intel_pmc_ipc.h +F: arch/x86/include/asm/intel_punit_ipc.h + +INTEL TELEMETRY DRIVER +M: Souvik Kumar Chakravarty +L: platform-driver-x86@vger.kernel.org +S: Maintained +F: drivers/platform/x86/intel_telemetry_core.c +F: arch/x86/include/asm/intel_telemetry.h +F: drivers/platform/x86/intel_telemetry_pltdrv.c +F: drivers/platform/x86/intel_telemetry_debugfs.c IOC3 ETHERNET DRIVER M: Ralf Baechle @@ -7586,6 +7617,12 @@ T: git git://github.com/jonmason/ntb.git F: drivers/ntb/hw/intel/ +NTB AMD DRIVER +M: Xiangliang Yu +L: linux-ntb@googlegroups.com +S: Supported +F: drivers/ntb/hw/amd/ + NTFS FILESYSTEM M: Anton Altaparmakov L: linux-ntfs-dev@lists.sourceforge.net --- linux-4.4.0.orig/Makefile +++ linux-4.4.0/Makefile @@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Blurry Fish Butt @@ -366,6 +366,12 @@ AFLAGS_KERNEL = CFLAGS_GCOV = -fprofile-arcs -ftest-coverage +# Prefer linux-backports-modules +ifneq ($(KBUILD_SRC),) +ifneq ($(shell if test -e $(KBUILD_OUTPUT)/ubuntu-build; then echo yes; fi),yes) +UBUNTUINCLUDE := -I/usr/src/linux-headers-lbm-$(KERNELRELEASE) +endif +endif # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \ @@ -378,6 +384,7 @@ # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option LINUXINCLUDE := \ + $(UBUNTUINCLUDE) \ -I$(srctree)/arch/$(hdr-arch)/include \ -Iarch/$(hdr-arch)/include/generated/uapi \ -Iarch/$(hdr-arch)/include/generated \ @@ -385,6 +392,9 @@ -Iinclude \ $(USERINCLUDE) +# UBUNTU: Include our third party driver stuff too +LINUXINCLUDE += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include) + KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ @@ -546,7 +556,7 @@ # Objects we will link into vmlinux / subdirs we need to visit init-y := init/ -drivers-y := drivers/ sound/ firmware/ +drivers-y := drivers/ sound/ firmware/ ubuntu/ net-y := net/ libs-y := lib/ core-y := usr/ @@ -1060,6 +1070,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= PHONY += headers_check_all headers_check_all: headers_install_all @@ -1069,6 +1080,7 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1 # --------------------------------------------------------------------------- # Kernel selftest --- linux-4.4.0.orig/arch/arm/Kconfig +++ linux-4.4.0/arch/arm/Kconfig @@ -2154,6 +2154,7 @@ source "drivers/Kconfig" source "drivers/firmware/Kconfig" +source "ubuntu/Kconfig" source "fs/Kconfig" --- linux-4.4.0.orig/arch/arm/boot/compressed/Makefile +++ linux-4.4.0/arch/arm/boot/compressed/Makefile @@ -3,6 +3,7 @@ # # create a compressed vmlinuz image from the original vmlinux # +KBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS)) -fno-stack-protector OBJS = --- linux-4.4.0.orig/arch/arm/mach-highbank/Makefile +++ linux-4.4.0/arch/arm/mach-highbank/Makefile @@ -1,3 +1,5 @@ +KBUILD_CFLAGS += -I$(srctree)/arch/arm/mach-highbank/include + obj-y := highbank.o system.o smc.o plus_sec := $(call as-instr,.arch_extension sec,+sec) --- linux-4.4.0.orig/arch/arm/mach-omap2/omap_hwmod.h +++ linux-4.4.0/arch/arm/mach-omap2/omap_hwmod.h @@ -41,6 +41,7 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type1; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3; +extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type4; /* * OCP SYSCONFIG bit shifts/masks TYPE1. These are for IPs compliant @@ -81,6 +82,16 @@ #define SYSC_TYPE3_MIDLEMODE_SHIFT 2 #define SYSC_TYPE3_MIDLEMODE_MASK (0x3 << SYSC_TYPE3_MIDLEMODE_SHIFT) +/* + * OCP SYSCONFIG bit shifts/masks TYPE4. + */ +#define SYSC_TYPE4_SIDLEMODE_SHIFT 2 +#define SYSC_TYPE4_SIDLEMODE_MASK (0x3 << SYSC_TYPE4_SIDLEMODE_SHIFT) +#define SYSC_TYPE4_SOFTRESET_SHIFT 1 +#define SYSC_TYPE4_SOFTRESET_MASK (1 << SYSC_TYPE4_SOFTRESET_SHIFT) +#define SYSC_TYPE4_AUTOIDLE_SHIFT 0 +#define SYSC_TYPE4_AUTOIDLE_MASK (1 << SYSC_TYPE4_AUTOIDLE_SHIFT) + /* OCP SYSSTATUS bit shifts/masks */ #define SYSS_RESETDONE_SHIFT 0 #define SYSS_RESETDONE_MASK (1 << SYSS_RESETDONE_SHIFT) --- linux-4.4.0.orig/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c +++ linux-4.4.0/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c @@ -223,6 +223,7 @@ .sysc_offs = 0x84, .syss_offs = 0x88, .sysc_flags = SYSS_HAS_RESET_STATUS, + .sysc_fields = &omap_hwmod_sysc_type4, }; static struct omap_hwmod_class am33xx_aes0_hwmod_class = { --- linux-4.4.0.orig/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ linux-4.4.0/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -4691,6 +4691,59 @@ .user = OCP_USER_MPU | OCP_USER_SDMA, }; +/* + Crypto modules AES0/1 belong to: + PD_L4_PER power domain + CD_L4_SEC clock domain + On the L3, the AES modules are mapped to + L3_CLK2: Peripherals and multimedia sub clock domain +*/ + +static struct omap_hwmod_class_sysconfig omap4_aes1_sysc = { + .rev_offs = 0x80, + .sysc_offs = 0x84, + .syss_offs = 0x88, + .sysc_flags = SYSS_HAS_RESET_STATUS, + .sysc_fields = &omap_hwmod_sysc_type4, +}; + +static struct omap_hwmod_class omap4_aes1_hwmod_class = { + .name = "aes1", + .sysc = &omap4_aes1_sysc, +}; + +static struct omap_hwmod omap4_aes1_hwmod = { + .name = "aes", + .class = &omap4_aes1_hwmod_class, + .clkdm_name = "l4_secure_clkdm", + .main_clk = "aes1_fck", + .prcm = { + .omap4 = { + .clkctrl_offs = OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET, + .context_offs = OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET, + .modulemode = MODULEMODE_SWCTRL, + }, + }, +}; + +/* l3_main_2 -> aes1 */ +static struct omap_hwmod_addr_space omap4_aes1_addrs[] = { + { + .pa_start = 0x4B500000, + .pa_end = 0x4B500000 + SZ_1M - 1, + .flags = ADDR_TYPE_RT + }, + { } +}; + +static struct omap_hwmod_ocp_if omap4_l3_main_2__aes1 = { + .master = &omap44xx_l3_main_2_hwmod, + .slave = &omap4_aes1_hwmod, + .clk = "aes1_fck", + .addr = omap4_aes1_addrs, + .user = OCP_USER_MPU | OCP_USER_SDMA, +}; + static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { &omap44xx_l3_main_1__dmm, &omap44xx_mpu__dmm, @@ -4836,6 +4889,7 @@ &omap44xx_l4_abe__wd_timer3_dma, &omap44xx_mpu__emif1, &omap44xx_mpu__emif2, + &omap4_l3_main_2__aes1, NULL, }; --- linux-4.4.0.orig/arch/arm/mach-omap2/omap_hwmod_common_data.c +++ linux-4.4.0/arch/arm/mach-omap2/omap_hwmod_common_data.c @@ -59,6 +59,16 @@ .sidle_shift = SYSC_TYPE3_SIDLEMODE_SHIFT, }; +/** + * struct omap_hwmod_sysc_type4 - TYPE4 sysconfig scheme. + * Used by some IPs on AM33xx + */ +struct omap_hwmod_sysc_fields omap_hwmod_sysc_type4 = { + .sidle_shift = SYSC_TYPE4_SIDLEMODE_SHIFT, + .srst_shift = SYSC_TYPE4_SOFTRESET_SHIFT, + .autoidle_shift = SYSC_TYPE4_AUTOIDLE_SHIFT, +}; + struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr = { .manager_count = 2, .has_framedonetv_irq = 0 --- linux-4.4.0.orig/arch/arm64/Kconfig +++ linux-4.4.0/arch/arm64/Kconfig @@ -807,6 +807,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "drivers/acpi/Kconfig" --- linux-4.4.0.orig/arch/arm64/Makefile +++ linux-4.4.0/arch/arm64/Makefile @@ -43,6 +43,7 @@ ifeq ($(CONFIG_ARM64_ERRATUM_843419), y) KBUILD_CFLAGS_MODULE += -mcmodel=large +KBUILD_CFLAGS_MODULE += $(call cc-option, -mpc-relative-literal-loads) endif # Default value --- linux-4.4.0.orig/arch/arm64/kernel/head.S +++ linux-4.4.0/arch/arm64/kernel/head.S @@ -512,9 +512,14 @@ #endif /* EL2 debug */ + mrs x0, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer + sbfx x0, x0, #8, #4 + cmp x0, #1 + b.lt 4f // Skip if no PMU present mrs x0, pmcr_el0 // Disable debug access traps ubfx x0, x0, #11, #5 // to EL2 and allow access to msr mdcr_el2, x0 // all PMU counters from EL1 +4: /* Stage-2 translation */ msr vttbr_el2, xzr --- linux-4.4.0.orig/arch/arm64/kernel/perf_event.c +++ linux-4.4.0/arch/arm64/kernel/perf_event.c @@ -574,9 +574,6 @@ /* Initialize & Reset PMNC: C and P bits. */ armv8pmu_pmcr_write(ARMV8_PMCR_P | ARMV8_PMCR_C); - - /* Disable access from userspace. */ - asm volatile("msr pmuserenr_el0, %0" :: "r" (0)); } static int armv8_pmuv3_map_event(struct perf_event *event) --- linux-4.4.0.orig/arch/arm64/kernel/ptrace.c +++ linux-4.4.0/arch/arm64/kernel/ptrace.c @@ -58,6 +58,12 @@ */ void ptrace_disable(struct task_struct *child) { + /* + * This would be better off in core code, but PTRACE_DETACH has + * grown its fair share of arch-specific worts and changing it + * is likely to cause regressions on obscure architectures. + */ + user_disable_single_step(child); } #ifdef CONFIG_HAVE_HW_BREAKPOINT --- linux-4.4.0.orig/arch/arm64/mm/mmu.c +++ linux-4.4.0/arch/arm64/mm/mmu.c @@ -456,6 +456,9 @@ empty_zero_page = virt_to_page(zero_page); + /* Ensure the zero page is visible to the page table walker */ + dsb(ishst); + /* * TTBR0 is only used for the identity mapping at this stage. Make it * point to zero page to avoid speculatively fetching new entries. --- linux-4.4.0.orig/arch/arm64/mm/proc-macros.S +++ linux-4.4.0/arch/arm64/mm/proc-macros.S @@ -62,3 +62,15 @@ bfi \valreg, \tmpreg, #TCR_T0SZ_OFFSET, #TCR_TxSZ_WIDTH #endif .endm + +/* + * reset_pmuserenr_el0 - reset PMUSERENR_EL0 if PMUv3 present + */ + .macro reset_pmuserenr_el0, tmpreg + mrs \tmpreg, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer + sbfx \tmpreg, \tmpreg, #8, #4 + cmp \tmpreg, #1 // Skip if no PMU present + b.lt 9000f + msr pmuserenr_el0, xzr // Disable PMU access from EL0 +9000: + .endm --- linux-4.4.0.orig/arch/arm64/mm/proc.S +++ linux-4.4.0/arch/arm64/mm/proc.S @@ -117,6 +117,7 @@ */ ubfx x11, x11, #1, #1 msr oslar_el1, x11 + reset_pmuserenr_el0 x0 // Disable PMU access from EL0 mov x0, x12 dsb nsh // Make sure local tlb invalidation completed isb @@ -155,6 +156,7 @@ msr cpacr_el1, x0 // Enable FP/ASIMD mov x0, #1 << 12 // Reset mdscr_el1 and disable msr mdscr_el1, x0 // access to the DCC from EL0 + reset_pmuserenr_el0 x0 // Disable PMU access from EL0 /* * Memory region attributes for LPAE: * --- linux-4.4.0.orig/arch/powerpc/Kconfig +++ linux-4.4.0/arch/powerpc/Kconfig @@ -1072,6 +1072,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-4.4.0.orig/arch/powerpc/Makefile +++ linux-4.4.0/arch/powerpc/Makefile @@ -241,7 +241,7 @@ all: zImage # With make 3.82 we cannot mix normal and wildcard targets -BOOT_TARGETS1 := zImage zImage.initrd uImage +BOOT_TARGETS1 := zImage zImage.initrd uImage vmlinux.strip BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.% uImage.% PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2) --- linux-4.4.0.orig/arch/powerpc/include/asm/cmpxchg.h +++ linux-4.4.0/arch/powerpc/include/asm/cmpxchg.h @@ -18,12 +18,12 @@ unsigned long prev; __asm__ __volatile__( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: lwarx %0,0,%2 \n" PPC405_ERR77(0,%2) " stwcx. %3,0,%2 \n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER : "=&r" (prev), "+m" (*(volatile unsigned int *)p) : "r" (p), "r" (val) : "cc", "memory"); @@ -61,12 +61,12 @@ unsigned long prev; __asm__ __volatile__( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: ldarx %0,0,%2 \n" PPC405_ERR77(0,%2) " stdcx. %3,0,%2 \n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER : "=&r" (prev), "+m" (*(volatile unsigned long *)p) : "r" (p), "r" (val) : "cc", "memory"); @@ -151,14 +151,14 @@ unsigned int prev; __asm__ __volatile__ ( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ cmpw 0,%0,%3\n\ bne- 2f\n" PPC405_ERR77(0,%2) " stwcx. %4,0,%2\n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER "\n\ 2:" : "=&r" (prev), "+m" (*p) @@ -197,13 +197,13 @@ unsigned long prev; __asm__ __volatile__ ( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ cmpd 0,%0,%3\n\ bne- 2f\n\ stdcx. %4,0,%2\n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER "\n\ 2:" : "=&r" (prev), "+m" (*p) --- linux-4.4.0.orig/arch/powerpc/include/asm/eeh.h +++ linux-4.4.0/arch/powerpc/include/asm/eeh.h @@ -81,6 +81,7 @@ #define EEH_PE_KEEP (1 << 8) /* Keep PE on hotplug */ #define EEH_PE_CFG_RESTRICTED (1 << 9) /* Block config on error */ #define EEH_PE_REMOVED (1 << 10) /* Removed permanently */ +#define EEH_PE_PRI_BUS (1 << 11) /* Cached primary bus */ struct eeh_pe { int type; /* PE type: PHB/Bus/Device */ --- linux-4.4.0.orig/arch/powerpc/include/asm/hmi.h +++ linux-4.4.0/arch/powerpc/include/asm/hmi.h @@ -0,0 +1,45 @@ +/* + * Hypervisor Maintenance Interrupt header file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. + * + * Copyright 2015 IBM Corporation + * Author: Mahesh Salgaonkar + */ + +#ifndef __ASM_PPC64_HMI_H__ +#define __ASM_PPC64_HMI_H__ + +#ifdef CONFIG_PPC_BOOK3S_64 + +#define CORE_TB_RESYNC_REQ_BIT 63 +#define MAX_SUBCORE_PER_CORE 4 + +/* + * sibling_subcore_state structure is used to co-ordinate all threads + * during HMI to avoid TB corruption. This structure is allocated once + * per each core and shared by all threads on that core. + */ +struct sibling_subcore_state { + unsigned long flags; + u8 in_guest[MAX_SUBCORE_PER_CORE]; +}; + +extern void wait_for_subcore_guest_exit(void); +extern void wait_for_tb_resync(void); +#else +static inline void wait_for_subcore_guest_exit(void) { } +static inline void wait_for_tb_resync(void) { } +#endif +#endif /* __ASM_PPC64_HMI_H__ */ --- linux-4.4.0.orig/arch/powerpc/include/asm/hvcall.h +++ linux-4.4.0/arch/powerpc/include/asm/hvcall.h @@ -258,11 +258,16 @@ #define H_DEL_CONN 0x288 #define H_JOIN 0x298 #define H_VASI_STATE 0x2A4 +#define H_VIOCTL 0x2A8 #define H_ENABLE_CRQ 0x2B0 #define H_GET_EM_PARMS 0x2B8 #define H_SET_MPP 0x2D0 #define H_GET_MPP 0x2D4 +#define H_REG_SUB_CRQ 0x2DC #define H_HOME_NODE_ASSOCIATIVITY 0x2EC +#define H_FREE_SUB_CRQ 0x2E0 +#define H_SEND_SUB_CRQ 0x2E4 +#define H_SEND_SUB_CRQ_INDIRECT 0x2E8 #define H_BEST_ENERGY 0x2F4 #define H_XIRR_X 0x2FC #define H_RANDOM 0x300 @@ -271,6 +276,21 @@ #define H_SET_MODE 0x31C #define MAX_HCALL_OPCODE H_SET_MODE +/* H_VIOCTL functions */ +#define H_GET_VIOA_DUMP_SIZE 0x01 +#define H_GET_VIOA_DUMP 0x02 +#define H_GET_ILLAN_NUM_VLAN_IDS 0x03 +#define H_GET_ILLAN_VLAN_ID_LIST 0x04 +#define H_GET_ILLAN_SWITCH_ID 0x05 +#define H_DISABLE_MIGRATION 0x06 +#define H_ENABLE_MIGRATION 0x07 +#define H_GET_PARTNER_INFO 0x08 +#define H_GET_PARTNER_WWPN_LIST 0x09 +#define H_DISABLE_ALL_VIO_INTS 0x0A +#define H_DISABLE_VIO_INTERRUPT 0x0B +#define H_ENABLE_VIO_INTERRUPT 0x0C + + /* Platform specific hcalls, used by KVM */ #define H_RTAS 0xf000 --- linux-4.4.0.orig/arch/powerpc/include/asm/icswx.h +++ linux-4.4.0/arch/powerpc/include/asm/icswx.h @@ -164,6 +164,7 @@ #define ICSWX_INITIATED (0x8) #define ICSWX_BUSY (0x4) #define ICSWX_REJECTED (0x2) +#define ICSWX_XERS0 (0x1) /* undefined or set from XERSO. */ static inline int icswx(__be32 ccw, struct coprocessor_request_block *crb) { --- linux-4.4.0.orig/arch/powerpc/include/asm/io.h +++ linux-4.4.0/arch/powerpc/include/asm/io.h @@ -385,6 +385,17 @@ { *(volatile unsigned long __force *)PCI_FIX_ADDR(addr) = v; } + +/* + * Real mode version of the above. stdcix is only supposed to be used + * in hypervisor real mode as per the architecture spec. + */ +static inline void __raw_rm_writeq(u64 val, volatile void __iomem *paddr) +{ + __asm__ __volatile__("stdcix %0,0,%1" + : : "r" (val), "r" (paddr) : "memory"); +} + #endif /* __powerpc64__ */ /* --- linux-4.4.0.orig/arch/powerpc/include/asm/kvm_booke.h +++ linux-4.4.0/arch/powerpc/include/asm/kvm_booke.h @@ -100,6 +100,11 @@ return vcpu->arch.pc; } +static inline bool kvmppc_is_bigendian(struct kvm_vcpu *vcpu) +{ + return 1; +} + static inline ulong kvmppc_get_fault_dar(struct kvm_vcpu *vcpu) { return vcpu->arch.fault_dear; --- linux-4.4.0.orig/arch/powerpc/include/asm/paca.h +++ linux-4.4.0/arch/powerpc/include/asm/paca.h @@ -24,6 +24,7 @@ #ifdef CONFIG_KVM_BOOK3S_64_HANDLER #include #endif +#include register struct paca_struct *local_paca asm("r13"); @@ -171,6 +172,11 @@ */ u16 in_mce; u8 hmi_event_available; /* HMI event is available */ + /* + * Bitmap for sibling subcore status. See kvm/book3s_hv_ras.c for + * more details + */ + struct sibling_subcore_state *sibling_subcore_state; #endif /* Stuff for accurate time accounting */ --- linux-4.4.0.orig/arch/powerpc/include/asm/pci-bridge.h +++ linux-4.4.0/arch/powerpc/include/asm/pci-bridge.h @@ -205,6 +205,7 @@ int pci_ext_config_space; /* for pci devices */ + struct pci_dev *pcidev; /* back-pointer to the pci device */ #ifdef CONFIG_EEH struct eeh_dev *edev; /* eeh device */ #endif --- linux-4.4.0.orig/arch/powerpc/include/asm/pci.h +++ linux-4.4.0/arch/powerpc/include/asm/pci.h @@ -149,4 +149,8 @@ extern void pcibios_scan_phb(struct pci_controller *hose); #endif /* __KERNEL__ */ + +extern struct pci_dev *pnv_pci_get_gpu_dev(struct pci_dev *npdev); +extern struct pci_dev *pnv_pci_get_npu_dev(struct pci_dev *gpdev, int index); + #endif /* __ASM_POWERPC_PCI_H */ --- linux-4.4.0.orig/arch/powerpc/include/asm/synch.h +++ linux-4.4.0/arch/powerpc/include/asm/synch.h @@ -44,7 +44,7 @@ MAKE_LWSYNC_SECTION_ENTRY(97, __lwsync_fixup); #define PPC_ACQUIRE_BARRIER "\n" stringify_in_c(__PPC_ACQUIRE_BARRIER) #define PPC_RELEASE_BARRIER stringify_in_c(LWSYNC) "\n" -#define PPC_ATOMIC_ENTRY_BARRIER "\n" stringify_in_c(LWSYNC) "\n" +#define PPC_ATOMIC_ENTRY_BARRIER "\n" stringify_in_c(sync) "\n" #define PPC_ATOMIC_EXIT_BARRIER "\n" stringify_in_c(sync) "\n" #else #define PPC_ACQUIRE_BARRIER --- linux-4.4.0.orig/arch/powerpc/include/uapi/asm/elf.h +++ linux-4.4.0/arch/powerpc/include/uapi/asm/elf.h @@ -295,6 +295,8 @@ #define R_PPC64_TLSLD 108 #define R_PPC64_TOCSAVE 109 +#define R_PPC64_ENTRY 118 + #define R_PPC64_REL16 249 #define R_PPC64_REL16_LO 250 #define R_PPC64_REL16_HI 251 --- linux-4.4.0.orig/arch/powerpc/kernel/Makefile +++ linux-4.4.0/arch/powerpc/kernel/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o obj-$(CONFIG_PPC_BOOK3S_64) += cpu_setup_ppc970.o cpu_setup_pa6t.o obj-$(CONFIG_PPC_BOOK3S_64) += cpu_setup_power.o -obj-$(CONFIG_PPC_BOOK3S_64) += mce.o mce_power.o +obj-$(CONFIG_PPC_BOOK3S_64) += mce.o mce_power.o hmi.o obj64-$(CONFIG_RELOCATABLE) += reloc_64.o obj-$(CONFIG_PPC_BOOK3E_64) += exceptions-64e.o idle_book3e.o obj-$(CONFIG_PPC64) += vdso64/ --- linux-4.4.0.orig/arch/powerpc/kernel/eeh.c +++ linux-4.4.0/arch/powerpc/kernel/eeh.c @@ -1072,7 +1072,13 @@ struct pci_controller *phb; struct eeh_dev *edev = pdn_to_eeh_dev(pdn); - if (!edev || !eeh_enabled()) + if (!edev) + return; + + /* Some platforms (like Cell) don't have EEH capabilities, so we + * need to abort here. In case of pseries or powernv, we have EEH + * so we can continue. */ + if (!machine_is(pseries) && !machine_is(powernv)) return; if (!eeh_has_flag(EEH_PROBE_MODE_DEVTREE)) --- linux-4.4.0.orig/arch/powerpc/kernel/eeh_driver.c +++ linux-4.4.0/arch/powerpc/kernel/eeh_driver.c @@ -564,6 +564,7 @@ */ eeh_pe_state_mark(pe, EEH_PE_KEEP); if (bus) { + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); pci_lock_rescan_remove(); pcibios_remove_pci_devices(bus); pci_unlock_rescan_remove(); @@ -803,6 +804,7 @@ * the their PCI config any more. */ if (frozen_bus) { + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED); pci_lock_rescan_remove(); @@ -886,6 +888,7 @@ continue; /* Notify all devices to be down */ + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); bus = eeh_pe_bus_get(phb_pe); eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); --- linux-4.4.0.orig/arch/powerpc/kernel/eeh_pe.c +++ linux-4.4.0/arch/powerpc/kernel/eeh_pe.c @@ -883,32 +883,29 @@ const char *eeh_pe_loc_get(struct eeh_pe *pe) { struct pci_bus *bus = eeh_pe_bus_get(pe); - struct device_node *dn = pci_bus_to_OF_node(bus); + struct device_node *dn; const char *loc = NULL; - if (!dn) - goto out; + while (bus) { + dn = pci_bus_to_OF_node(bus); + if (!dn) { + bus = bus->parent; + continue; + } - /* PHB PE or root PE ? */ - if (pci_is_root_bus(bus)) { - loc = of_get_property(dn, "ibm,loc-code", NULL); - if (!loc) + if (pci_is_root_bus(bus)) loc = of_get_property(dn, "ibm,io-base-loc-code", NULL); + else + loc = of_get_property(dn, "ibm,slot-location-code", + NULL); + if (loc) - goto out; + return loc; - /* Check the root port */ - dn = dn->child; - if (!dn) - goto out; + bus = bus->parent; } - loc = of_get_property(dn, "ibm,loc-code", NULL); - if (!loc) - loc = of_get_property(dn, "ibm,slot-location-code", NULL); - -out: - return loc ? loc : "N/A"; + return "N/A"; } /** @@ -931,7 +928,7 @@ bus = pe->phb->bus; } else if (pe->type & EEH_PE_BUS || pe->type & EEH_PE_DEVICE) { - if (pe->bus) { + if (pe->state & EEH_PE_PRI_BUS) { bus = pe->bus; goto out; } --- linux-4.4.0.orig/arch/powerpc/kernel/exceptions-64s.S +++ linux-4.4.0/arch/powerpc/kernel/exceptions-64s.S @@ -698,6 +698,8 @@ BEGIN_FTR_SECTION cmpwi r3,0xe80 beq h_doorbell_common + cmpwi r3,0xe60 + beq hmi_exception_common FTR_SECTION_ELSE cmpwi r3,0xa00 beq doorbell_super_common @@ -1270,7 +1272,7 @@ .globl hmi_exception_early hmi_exception_early: - EXCEPTION_PROLOG_1(PACA_EXGEN, NOTEST, 0xe60) + EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST, 0xe62) mr r10,r1 /* Save r1 */ ld r1,PACAEMERGSP(r13) /* Use emergency stack */ subi r1,r1,INT_FRAME_SIZE /* alloc stack frame */ --- linux-4.4.0.orig/arch/powerpc/kernel/hmi.c +++ linux-4.4.0/arch/powerpc/kernel/hmi.c @@ -0,0 +1,56 @@ +/* + * Hypervisor Maintenance Interrupt (HMI) handling. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. + * + * Copyright 2015 IBM Corporation + * Author: Mahesh Salgaonkar + */ + +#undef DEBUG + +#include +#include +#include +#include + +void wait_for_subcore_guest_exit(void) +{ + int i; + + /* + * NULL bitmap pointer indicates that KVM module hasn't + * been loaded yet and hence no guests are running. + * If no KVM is in use, no need to co-ordinate among threads + * as all of them will always be in host and no one is going + * to modify TB other than the opal hmi handler. + * Hence, just return from here. + */ + if (!local_paca->sibling_subcore_state) + return; + + for (i = 0; i < MAX_SUBCORE_PER_CORE; i++) + while (local_paca->sibling_subcore_state->in_guest[i]) + cpu_relax(); +} + +void wait_for_tb_resync(void) +{ + if (!local_paca->sibling_subcore_state) + return; + + while (test_bit(CORE_TB_RESYNC_REQ_BIT, + &local_paca->sibling_subcore_state->flags)) + cpu_relax(); +} --- linux-4.4.0.orig/arch/powerpc/kernel/idle_power7.S +++ linux-4.4.0/arch/powerpc/kernel/idle_power7.S @@ -277,8 +277,9 @@ ld r2,PACATOC(r13); \ ld r1,PACAR1(r13); \ std r3,ORIG_GPR3(r1); /* Save original r3 */ \ - li r0,OPAL_HANDLE_HMI; /* Pass opal token argument*/ \ - bl opal_call_realmode; \ + li r3,0; /* NULL argument */ \ + bl hmi_exception_realmode; \ + nop; \ ld r3,ORIG_GPR3(r1); /* Restore original r3 */ \ 20: nop; --- linux-4.4.0.orig/arch/powerpc/kernel/module_64.c +++ linux-4.4.0/arch/powerpc/kernel/module_64.c @@ -635,6 +635,33 @@ */ break; + case R_PPC64_ENTRY: + /* + * Optimize ELFv2 large code model entry point if + * the TOC is within 2GB range of current location. + */ + value = my_r2(sechdrs, me) - (unsigned long)location; + if (value + 0x80008000 > 0xffffffff) + break; + /* + * Check for the large code model prolog sequence: + * ld r2, ...(r12) + * add r2, r2, r12 + */ + if ((((uint32_t *)location)[0] & ~0xfffc) + != 0xe84c0000) + break; + if (((uint32_t *)location)[1] != 0x7c426214) + break; + /* + * If found, replace it with: + * addis r2, r12, (.TOC.-func)@ha + * addi r2, r12, (.TOC.-func)@l + */ + ((uint32_t *)location)[0] = 0x3c4c0000 + PPC_HA(value); + ((uint32_t *)location)[1] = 0x38420000 + PPC_LO(value); + break; + case R_PPC64_REL16_HA: /* Subtract location pointer */ value -= (unsigned long)location; --- linux-4.4.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-4.4.0/arch/powerpc/kernel/pci-common.c @@ -226,6 +226,7 @@ } return NULL; } +EXPORT_SYMBOL(pci_find_hose_for_OF_device); /* * Reads the interrupt pin to determine if interrupt is use by card. @@ -1469,9 +1470,15 @@ phb->controller_ops.disable_device(dev); } +/* Before assuming too much here, take care to realize that we need sign + * extension from 32-bit pointers to 64-bit resource addresses to work. + */ resource_size_t pcibios_io_space_offset(struct pci_controller *hose) { - return (unsigned long) hose->io_base_virt - _IO_BASE; + long vbase = (long)hose->io_base_virt; + long io_base = _IO_BASE; + + return (resource_size_t)(vbase - io_base); } static void pcibios_setup_phb_resources(struct pci_controller *hose, @@ -1585,6 +1592,7 @@ { return pci_bus_find_capability(fake_pci_bus(hose, bus), devfn, cap); } +EXPORT_SYMBOL_GPL(early_find_capability); struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus) { --- linux-4.4.0.orig/arch/powerpc/kernel/process.c +++ linux-4.4.0/arch/powerpc/kernel/process.c @@ -569,6 +569,24 @@ if (!MSR_TM_SUSPENDED(mfmsr())) return; + /* + * Use the current MSR TM suspended bit to track if we have + * checkpointed state outstanding. + * On signal delivery, we'd normally reclaim the checkpointed + * state to obtain stack pointer (see:get_tm_stackpointer()). + * This will then directly return to userspace without going + * through __switch_to(). However, if the stack frame is bad, + * we need to exit this thread which calls __switch_to() which + * will again attempt to reclaim the already saved tm state. + * Hence we need to check that we've not already reclaimed + * this state. + * We do this using the current MSR, rather tracking it in + * some specific thread_struct bit, as it has the additional + * benifit of checking for a potential TM bad thing exception. + */ + if (!MSR_TM_SUSPENDED(mfmsr())) + return; + tm_reclaim(thr, thr->regs->msr, cause); /* Having done the reclaim, we now have the checkpointed --- linux-4.4.0.orig/arch/powerpc/kernel/traps.c +++ linux-4.4.0/arch/powerpc/kernel/traps.c @@ -60,6 +60,7 @@ #include #include #include +#include #include #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) @@ -308,9 +309,13 @@ { __this_cpu_inc(irq_stat.hmi_exceptions); + wait_for_subcore_guest_exit(); + if (ppc_md.hmi_exception_early) ppc_md.hmi_exception_early(regs); + wait_for_tb_resync(); + return 0; } --- linux-4.4.0.orig/arch/powerpc/kvm/book3s_hv.c +++ linux-4.4.0/arch/powerpc/kvm/book3s_hv.c @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -3195,6 +3196,38 @@ .hcall_implemented = kvmppc_hcall_impl_hv, }; +static int kvm_init_subcore_bitmap(void) +{ + int i, j; + int nr_cores = cpu_nr_cores(); + struct sibling_subcore_state *sibling_subcore_state; + + for (i = 0; i < nr_cores; i++) { + int first_cpu = i * threads_per_core; + int node = cpu_to_node(first_cpu); + + /* Ignore if it is already allocated. */ + if (paca[first_cpu].sibling_subcore_state) + continue; + + sibling_subcore_state = + kmalloc_node(sizeof(struct sibling_subcore_state), + GFP_KERNEL, node); + if (!sibling_subcore_state) + return -ENOMEM; + + memset(sibling_subcore_state, 0, + sizeof(struct sibling_subcore_state)); + + for (j = 0; j < threads_per_core; j++) { + int cpu = first_cpu + j; + + paca[cpu].sibling_subcore_state = sibling_subcore_state; + } + } + return 0; +} + static int kvmppc_book3s_init_hv(void) { int r; @@ -3205,6 +3238,10 @@ if (r < 0) return -ENODEV; + r = kvm_init_subcore_bitmap(); + if (r) + return r; + kvm_ops_hv.owner = THIS_MODULE; kvmppc_hv_ops = &kvm_ops_hv; --- linux-4.4.0.orig/arch/powerpc/kvm/book3s_hv_ras.c +++ linux-4.4.0/arch/powerpc/kvm/book3s_hv_ras.c @@ -13,6 +13,9 @@ #include #include #include +#include +#include +#include /* SRR1 bits for machine check on POWER7 */ #define SRR1_MC_LDSTERR (1ul << (63-42)) @@ -140,3 +143,176 @@ { return kvmppc_realmode_mc_power7(vcpu); } + +/* Check if dynamic split is in force and return subcore size accordingly. */ +static inline int kvmppc_cur_subcore_size(void) +{ + if (local_paca->kvm_hstate.kvm_split_mode) + return local_paca->kvm_hstate.kvm_split_mode->subcore_size; + + return threads_per_subcore; +} + +void kvmppc_subcore_enter_guest(void) +{ + int thread_id, subcore_id; + + thread_id = cpu_thread_in_core(local_paca->paca_index); + subcore_id = thread_id / kvmppc_cur_subcore_size(); + + local_paca->sibling_subcore_state->in_guest[subcore_id] = 1; +} + +void kvmppc_subcore_exit_guest(void) +{ + int thread_id, subcore_id; + + thread_id = cpu_thread_in_core(local_paca->paca_index); + subcore_id = thread_id / kvmppc_cur_subcore_size(); + + local_paca->sibling_subcore_state->in_guest[subcore_id] = 0; +} + +static bool kvmppc_tb_resync_required(void) +{ + if (test_and_set_bit(CORE_TB_RESYNC_REQ_BIT, + &local_paca->sibling_subcore_state->flags)) + return false; + + return true; +} + +static void kvmppc_tb_resync_done(void) +{ + clear_bit(CORE_TB_RESYNC_REQ_BIT, + &local_paca->sibling_subcore_state->flags); +} + +/* + * kvmppc_realmode_hmi_handler() is called only by primary thread during + * guest exit path. + * + * There are multiple reasons why HMI could occur, one of them is + * Timebase (TB) error. If this HMI is due to TB error, then TB would + * have been in stopped state. The opal hmi handler Will fix it and + * restore the TB value with host timebase value. For HMI caused due + * to non-TB errors, opal hmi handler will not touch/restore TB register + * and hence there won't be any change in TB value. + * + * Since we are not sure about the cause of this HMI, we can't be sure + * about the content of TB register whether it holds guest or host timebase + * value. Hence the idea is to resync the TB on every HMI, so that we + * know about the exact state of the TB value. Resync TB call will + * restore TB to host timebase. + * + * Things to consider: + * - On TB error, HMI interrupt is reported on all the threads of the core + * that has encountered TB error irrespective of split-core mode. + * - The very first thread on the core that get chance to fix TB error + * would rsync the TB with local chipTOD value. + * - The resync TB is a core level action i.e. it will sync all the TBs + * in that core independent of split-core mode. This means if we trigger + * TB sync from a thread from one subcore, it would affect TB values of + * sibling subcores of the same core. + * + * All threads need to co-ordinate before making opal hmi handler. + * All threads will use sibling_subcore_state->in_guest[] (shared by all + * threads in the core) in paca which holds information about whether + * sibling subcores are in Guest mode or host mode. The in_guest[] array + * is of size MAX_SUBCORE_PER_CORE=4, indexed using subcore id to set/unset + * subcore status. Only primary threads from each subcore is responsible + * to set/unset its designated array element while entering/exiting the + * guset. + * + * After invoking opal hmi handler call, one of the thread (of entire core) + * will need to resync the TB. Bit 63 from subcore state bitmap flags + * (sibling_subcore_state->flags) will be used to co-ordinate between + * primary threads to decide who takes up the responsibility. + * + * This is what we do: + * - Primary thread from each subcore tries to set resync required bit[63] + * of paca->sibling_subcore_state->flags. + * - The first primary thread that is able to set the flag takes the + * responsibility of TB resync. (Let us call it as thread leader) + * - All other threads which are in host will call + * wait_for_subcore_guest_exit() and wait for in_guest[0-3] from + * paca->sibling_subcore_state to get cleared. + * - All the primary thread will clear its subcore status from subcore + * state in_guest[] array respectively. + * - Once all primary threads clear in_guest[0-3], all of them will invoke + * opal hmi handler. + * - Now all threads will wait for TB resync to complete by invoking + * wait_for_tb_resync() except the thread leader. + * - Thread leader will do a TB resync by invoking opal_resync_timebase() + * call and the it will clear the resync required bit. + * - All other threads will now come out of resync wait loop and proceed + * with individual execution. + * - On return of this function, primary thread will signal all + * secondary threads to proceed. + * - All secondary threads will eventually call opal hmi handler on + * their exit path. + */ + +long kvmppc_realmode_hmi_handler(struct kvm_vcpu *vcpu) +{ + int ptid = local_paca->kvm_hstate.ptid; + bool resync_req; + + /* This is only called on primary thread. */ + BUG_ON(ptid != 0); + __this_cpu_inc(irq_stat.hmi_exceptions); + + /* + * By now primary thread has already completed guest->host + * partition switch but haven't signaled secondaries yet. + * All the secondary threads on this subcore is waiting + * for primary thread to signal them to go ahead. + * + * For threads from subcore which isn't in guest, they all will + * wait until all other subcores on this core exit the guest. + * + * Now set the resync required bit. If you are the first to + * set this bit then kvmppc_tb_resync_required() function will + * return true. For rest all other subcores + * kvmppc_tb_resync_required() will return false. + * + * If resync_req == true, then this thread is responsible to + * initiate TB resync after hmi handler has completed. + * All other threads on this core will wait until this thread + * clears the resync required bit flag. + */ + resync_req = kvmppc_tb_resync_required(); + + /* Reset the subcore status to indicate it has exited guest */ + kvmppc_subcore_exit_guest(); + + /* + * Wait for other subcores on this core to exit the guest. + * All the primary threads and threads from subcore that are + * not in guest will wait here until all subcores are out + * of guest context. + */ + wait_for_subcore_guest_exit(); + + /* + * At this point we are sure that primary threads from each + * subcore on this core have completed guest->host partition + * switch. Now it is safe to call HMI handler. + */ + if (ppc_md.hmi_exception_early) + ppc_md.hmi_exception_early(NULL); + + /* + * Check if this thread is responsible to resync TB. + * All other threads will wait until this thread completes the + * TB resync. + */ + if (resync_req) { + opal_resync_timebase(); + /* Reset TB resync req bit */ + kvmppc_tb_resync_done(); + } else { + wait_for_tb_resync(); + } + return 0; +} --- linux-4.4.0.orig/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ linux-4.4.0/arch/powerpc/kvm/book3s_hv_rmhandlers.S @@ -29,6 +29,7 @@ #include #include #include +#include #define VCPU_GPRS_TM(reg) (((reg) * ULONG_SIZE) + VCPU_GPR_TM) @@ -373,6 +374,18 @@ lwsync std r0, HSTATE_KVM_VCORE(r13) + /* + * All secondaries exiting guest will fall through this path. + * Before proceeding, just check for HMI interrupt and + * invoke opal hmi handler. By now we are sure that the + * primary thread on this core/subcore has already made partition + * switch/TB resync and we are good to call opal hmi handler. + */ + cmpwi r12, BOOK3S_INTERRUPT_HMI + bne kvm_no_guest + + li r3,0 /* NULL argument */ + bl hmi_exception_realmode /* * At this point we have finished executing in the guest. * We need to wait for hwthread_req to become zero, since @@ -427,6 +440,12 @@ * whole-core mode, so we need to nap. */ kvm_unsplit_nap: + /* Before we head down to nap, check if HMI is pending and handle it */ + cmpwi r12, BOOK3S_INTERRUPT_HMI + bne 55f + li r3, 0 /* NULL argument */ + bl hmi_exception_realmode +55: /* * Ensure that secondary doesn't nap when it has * its vcore pointer set. @@ -601,6 +620,11 @@ mtspr SPRN_DPDES, r8 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) + /* Mark the subcore state as inside guest */ + bl kvmppc_subcore_enter_guest + nop + ld r5, HSTATE_KVM_VCORE(r13) + ld r4, HSTATE_KVM_VCPU(r13) li r0,1 stb r0,VCORE_IN_GUEST(r5) /* signal secondaries to continue */ @@ -1669,6 +1693,24 @@ mtspr SPRN_DPDES, r8 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) + /* If HMI, call kvmppc_realmode_hmi_handler() */ + cmpwi r12, BOOK3S_INTERRUPT_HMI + bne 27f + mr r3, r9 /* get vcpu pointer */ + bl kvmppc_realmode_hmi_handler + nop + li r12, BOOK3S_INTERRUPT_HMI + /* + * At this point kvmppc_realmode_hmi_handler would have resync-ed + * the TB. Hence it is not required to subtract guest timebase + * offset from timebase. So, skip it. + * + * Also, do not call kvmppc_subcore_exit_guest() because it has + * been invoked as part of kvmppc_realmode_hmi_handler(). + */ + b 30f + +27: /* Subtract timebase offset from timebase */ ld r8,VCORE_TB_OFFSET(r5) cmpdi r8,0 @@ -1684,8 +1726,13 @@ addis r8,r8,0x100 /* if so, increment upper 40 bits */ mtspr SPRN_TBU40,r8 +17: bl kvmppc_subcore_exit_guest + nop +30: ld r5,HSTATE_KVM_VCORE(r13) + ld r4,VCORE_KVM(r5) /* pointer to struct kvm */ + /* Reset PCR */ -17: ld r0, VCORE_PCR(r5) + ld r0, VCORE_PCR(r5) cmpdi r0, 0 beq 18f li r0, 0 @@ -2445,6 +2492,8 @@ cmpwi r6, 3 /* hypervisor doorbell? */ beq 3f END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) + cmpwi r6, 0xa /* Hypervisor maintenance ? */ + beq 4f li r3, 1 /* anything else, return 1 */ 0: blr @@ -2466,6 +2515,11 @@ li r3, -1 blr + /* Woken up due to Hypervisor maintenance interrupt */ +4: li r12, BOOK3S_INTERRUPT_HMI + li r3, 1 + blr + /* * Determine what sort of external interrupt is pending (if any). * Returns: --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/Makefile +++ linux-4.4.0/arch/powerpc/platforms/powernv/Makefile @@ -4,7 +4,7 @@ obj-y += opal-msglog.o opal-hmi.o opal-power.o opal-irqchip.o obj-$(CONFIG_SMP) += smp.o subcore.o subcore-asm.o -obj-$(CONFIG_PCI) += pci.o pci-p5ioc2.o pci-ioda.o +obj-$(CONFIG_PCI) += pci.o pci-p5ioc2.o pci-ioda.o npu-dma.o obj-$(CONFIG_EEH) += eeh-powernv.o obj-$(CONFIG_PPC_SCOM) += opal-xscom.o obj-$(CONFIG_MEMORY_FAILURE) += opal-memory-errors.o --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/eeh-powernv.c +++ linux-4.4.0/arch/powerpc/platforms/powernv/eeh-powernv.c @@ -444,9 +444,12 @@ * PCI devices of the PE are expected to be removed prior * to PE reset. */ - if (!edev->pe->bus) + if (!(edev->pe->state & EEH_PE_PRI_BUS)) { edev->pe->bus = pci_find_bus(hose->global_number, pdn->busno); + if (edev->pe->bus) + edev->pe->state |= EEH_PE_PRI_BUS; + } /* * Enable EEH explicitly so that we will do EEH check --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/npu-dma.c +++ linux-4.4.0/arch/powerpc/platforms/powernv/npu-dma.c @@ -0,0 +1,348 @@ +/* + * This file implements the DMA operations for NVLink devices. The NPU + * devices all point to the same iommu table as the parent PCI device. + * + * Copyright Alistair Popple, IBM Corporation 2015. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + */ + +#include +#include +#include + +#include +#include +#include +#include + +#include "powernv.h" +#include "pci.h" + +/* + * Other types of TCE cache invalidation are not functional in the + * hardware. + */ +#define TCE_KILL_INVAL_ALL PPC_BIT(0) + +static struct pci_dev *get_pci_dev(struct device_node *dn) +{ + return PCI_DN(dn)->pcidev; +} + +/* Given a NPU device get the associated PCI device. */ +struct pci_dev *pnv_pci_get_gpu_dev(struct pci_dev *npdev) +{ + struct device_node *dn; + struct pci_dev *gpdev; + + /* Get assoicated PCI device */ + dn = of_parse_phandle(npdev->dev.of_node, "ibm,gpu", 0); + if (!dn) + return NULL; + + gpdev = get_pci_dev(dn); + of_node_put(dn); + + return gpdev; +} +EXPORT_SYMBOL(pnv_pci_get_gpu_dev); + +/* Given the real PCI device get a linked NPU device. */ +struct pci_dev *pnv_pci_get_npu_dev(struct pci_dev *gpdev, int index) +{ + struct device_node *dn; + struct pci_dev *npdev; + + /* Get assoicated PCI device */ + dn = of_parse_phandle(gpdev->dev.of_node, "ibm,npu", index); + if (!dn) + return NULL; + + npdev = get_pci_dev(dn); + of_node_put(dn); + + return npdev; +} +EXPORT_SYMBOL(pnv_pci_get_npu_dev); + +#define NPU_DMA_OP_UNSUPPORTED() \ + dev_err_once(dev, "%s operation unsupported for NVLink devices\n", \ + __func__) + +static void *dma_npu_alloc(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t flag, + struct dma_attrs *attrs) +{ + NPU_DMA_OP_UNSUPPORTED(); + return NULL; +} + +static void dma_npu_free(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle, + struct dma_attrs *attrs) +{ + NPU_DMA_OP_UNSUPPORTED(); +} + +static dma_addr_t dma_npu_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, + enum dma_data_direction direction, + struct dma_attrs *attrs) +{ + NPU_DMA_OP_UNSUPPORTED(); + return 0; +} + +static int dma_npu_map_sg(struct device *dev, struct scatterlist *sglist, + int nelems, enum dma_data_direction direction, + struct dma_attrs *attrs) +{ + NPU_DMA_OP_UNSUPPORTED(); + return 0; +} + +static int dma_npu_dma_supported(struct device *dev, u64 mask) +{ + NPU_DMA_OP_UNSUPPORTED(); + return 0; +} + +static u64 dma_npu_get_required_mask(struct device *dev) +{ + NPU_DMA_OP_UNSUPPORTED(); + return 0; +} + +struct dma_map_ops dma_npu_ops = { + .map_page = dma_npu_map_page, + .map_sg = dma_npu_map_sg, + .alloc = dma_npu_alloc, + .free = dma_npu_free, + .dma_supported = dma_npu_dma_supported, + .get_required_mask = dma_npu_get_required_mask, +}; + +/* + * Returns the PE assoicated with the PCI device of the given + * NPU. Returns the linked pci device if pci_dev != NULL. + */ +static struct pnv_ioda_pe *get_gpu_pci_dev_and_pe(struct pnv_ioda_pe *npe, + struct pci_dev **gpdev) +{ + struct pnv_phb *phb; + struct pci_controller *hose; + struct pci_dev *pdev; + struct pnv_ioda_pe *pe; + struct pci_dn *pdn; + + if (npe->flags & PNV_IODA_PE_PEER) { + pe = npe->peers[0]; + pdev = pe->pdev; + } else { + pdev = pnv_pci_get_gpu_dev(npe->pdev); + if (!pdev) + return NULL; + + pdn = pci_get_pdn(pdev); + if (WARN_ON(!pdn || pdn->pe_number == IODA_INVALID_PE)) + return NULL; + + hose = pci_bus_to_host(pdev->bus); + phb = hose->private_data; + pe = &phb->ioda.pe_array[pdn->pe_number]; + } + + if (gpdev) + *gpdev = pdev; + + return pe; +} + +void pnv_npu_tce_invalidate_entire(struct pnv_ioda_pe *npe) +{ + struct pnv_phb *phb = npe->phb; + + if (WARN_ON(phb->type != PNV_PHB_NPU || + !phb->ioda.tce_inval_reg || + !(npe->flags & PNV_IODA_PE_DEV))) + return; + + mb(); /* Ensure previous TCE table stores are visible */ + __raw_writeq(cpu_to_be64(TCE_KILL_INVAL_ALL), + phb->ioda.tce_inval_reg); +} + +void pnv_npu_tce_invalidate(struct pnv_ioda_pe *npe, + struct iommu_table *tbl, + unsigned long index, + unsigned long npages, + bool rm) +{ + struct pnv_phb *phb = npe->phb; + + /* We can only invalidate the whole cache on NPU */ + unsigned long val = TCE_KILL_INVAL_ALL; + + if (WARN_ON(phb->type != PNV_PHB_NPU || + !phb->ioda.tce_inval_reg || + !(npe->flags & PNV_IODA_PE_DEV))) + return; + + mb(); /* Ensure previous TCE table stores are visible */ + if (rm) + __raw_rm_writeq(cpu_to_be64(val), + (__be64 __iomem *) phb->ioda.tce_inval_reg_phys); + else + __raw_writeq(cpu_to_be64(val), + phb->ioda.tce_inval_reg); +} + +void pnv_npu_init_dma_pe(struct pnv_ioda_pe *npe) +{ + struct pnv_ioda_pe *gpe; + struct pci_dev *gpdev; + int i, avail = -1; + + if (!npe->pdev || !(npe->flags & PNV_IODA_PE_DEV)) + return; + + gpe = get_gpu_pci_dev_and_pe(npe, &gpdev); + if (!gpe) + return; + + for (i = 0; i < PNV_IODA_MAX_PEER_PES; i++) { + /* Nothing to do if the PE is already connected. */ + if (gpe->peers[i] == npe) + return; + + if (!gpe->peers[i]) + avail = i; + } + + if (WARN_ON(avail < 0)) + return; + + gpe->peers[avail] = npe; + gpe->flags |= PNV_IODA_PE_PEER; + + /* + * We assume that the NPU devices only have a single peer PE + * (the GPU PCIe device PE). + */ + npe->peers[0] = gpe; + npe->flags |= PNV_IODA_PE_PEER; +} + +/* + * For the NPU we want to point the TCE table at the same table as the + * real PCI device. + */ +static void pnv_npu_disable_bypass(struct pnv_ioda_pe *npe) +{ + struct pnv_phb *phb = npe->phb; + struct pci_dev *gpdev; + struct pnv_ioda_pe *gpe; + void *addr; + unsigned int size; + int64_t rc; + + /* + * Find the assoicated PCI devices and get the dma window + * information from there. + */ + if (!npe->pdev || !(npe->flags & PNV_IODA_PE_DEV)) + return; + + gpe = get_gpu_pci_dev_and_pe(npe, &gpdev); + if (!gpe) + return; + + addr = (void *)gpe->table_group.tables[0]->it_base; + size = gpe->table_group.tables[0]->it_size << 3; + rc = opal_pci_map_pe_dma_window(phb->opal_id, npe->pe_number, + npe->pe_number, 1, __pa(addr), + size, 0x1000); + if (rc != OPAL_SUCCESS) + pr_warn("%s: Error %lld setting DMA window on PHB#%d-PE#%d\n", + __func__, rc, phb->hose->global_number, npe->pe_number); + + /* + * We don't initialise npu_pe->tce32_table as we always use + * dma_npu_ops which are nops. + */ + set_dma_ops(&npe->pdev->dev, &dma_npu_ops); +} + +/* + * Enable/disable bypass mode on the NPU. The NPU only supports one + * window per link, so bypass needs to be explicity enabled or + * disabled. Unlike for a PHB3 bypass and non-bypass modes can't be + * active at the same time. + */ +int pnv_npu_dma_set_bypass(struct pnv_ioda_pe *npe, bool enable) +{ + struct pnv_phb *phb = npe->phb; + int64_t rc = 0; + + if (phb->type != PNV_PHB_NPU || !npe->pdev) + return -EINVAL; + + if (enable) { + /* Enable the bypass window */ + phys_addr_t top = memblock_end_of_DRAM(); + + npe->tce_bypass_base = 0; + top = roundup_pow_of_two(top); + dev_info(&npe->pdev->dev, "Enabling bypass for PE %d\n", + npe->pe_number); + rc = opal_pci_map_pe_dma_window_real(phb->opal_id, + npe->pe_number, npe->pe_number, + npe->tce_bypass_base, top); + } else { + /* + * Disable the bypass window by replacing it with the + * TCE32 window. + */ + pnv_npu_disable_bypass(npe); + } + + return rc; +} + +int pnv_npu_dma_set_mask(struct pci_dev *npdev, u64 dma_mask) +{ + struct pci_controller *hose = pci_bus_to_host(npdev->bus); + struct pnv_phb *phb = hose->private_data; + struct pci_dn *pdn = pci_get_pdn(npdev); + struct pnv_ioda_pe *npe, *gpe; + struct pci_dev *gpdev; + uint64_t top; + bool bypass = false; + + if (WARN_ON(!pdn || pdn->pe_number == IODA_INVALID_PE)) + return -ENXIO; + + /* We only do bypass if it's enabled on the linked device */ + npe = &phb->ioda.pe_array[pdn->pe_number]; + gpe = get_gpu_pci_dev_and_pe(npe, &gpdev); + if (!gpe) + return -ENODEV; + + if (gpe->tce_bypass_enabled) { + top = gpe->tce_bypass_base + memblock_end_of_DRAM() - 1; + bypass = (dma_mask >= top); + } + + if (bypass) + dev_info(&npdev->dev, "Using 64-bit DMA iommu bypass\n"); + else + dev_info(&npdev->dev, "Using 32-bit DMA via iommu\n"); + + pnv_npu_dma_set_bypass(npe, bypass); + *npdev->dev.dma_mask = dma_mask; + + return 0; +} --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/opal-wrappers.S +++ linux-4.4.0/arch/powerpc/platforms/powernv/opal-wrappers.S @@ -64,7 +64,6 @@ OPAL_BRANCH(opal_tracepoint_entry) \ mfcr r12; \ stw r12,8(r1); \ - std r1,PACAR1(r13); \ li r11,0; \ mfmsr r12; \ ori r11,r11,MSR_EE; \ @@ -127,7 +126,6 @@ mfcr r12 std r11,16(r1) stw r12,8(r1) - std r1,PACAR1(r13) li r11,0 mfmsr r12 ori r11,r11,MSR_EE --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/pci-ioda.c +++ linux-4.4.0/arch/powerpc/platforms/powernv/pci-ioda.c @@ -116,16 +116,6 @@ } early_param("iommu", iommu_setup); -/* - * stdcix is only supposed to be used in hypervisor real mode as per - * the architecture spec - */ -static inline void __raw_rm_writeq(u64 val, volatile void __iomem *paddr) -{ - __asm__ __volatile__("stdcix %0,0,%1" - : : "r" (val), "r" (paddr) : "memory"); -} - static inline bool pnv_pci_is_mem_pref_64(unsigned long flags) { return ((flags & (IORESOURCE_MEM_64 | IORESOURCE_PREFETCH)) == @@ -780,8 +770,12 @@ return -ENXIO; } - /* Configure PELTV */ - pnv_ioda_set_peltv(phb, pe, true); + /* + * Configure PELTV. NPUs don't have a PELTV table so skip + * configuration on them. + */ + if (phb->type != PNV_PHB_NPU) + pnv_ioda_set_peltv(phb, pe, true); /* Setup reverse map */ for (rid = pe->rid; rid < rid_end; rid++) @@ -924,7 +918,6 @@ } #endif /* CONFIG_PCI_IOV */ -#if 0 static struct pnv_ioda_pe *pnv_ioda_setup_dev_PE(struct pci_dev *dev) { struct pci_controller *hose = pci_bus_to_host(dev->bus); @@ -941,11 +934,7 @@ if (pdn->pe_number != IODA_INVALID_PE) return NULL; - /* PE#0 has been pre-set */ - if (dev->bus->number == 0) - pe_num = 0; - else - pe_num = pnv_ioda_alloc_pe(phb); + pe_num = pnv_ioda_alloc_pe(phb); if (pe_num == IODA_INVALID_PE) { pr_warning("%s: Not enough PE# available, disabling device\n", pci_name(dev)); @@ -963,6 +952,7 @@ pci_dev_get(dev); pdn->pcidev = dev; pdn->pe_number = pe_num; + pe->flags = PNV_IODA_PE_DEV; pe->pdev = dev; pe->pbus = NULL; pe->tce32_seg = -1; @@ -993,7 +983,6 @@ return pe; } -#endif /* Useful for SRIOV case */ static void pnv_ioda_setup_same_PE(struct pci_bus *bus, struct pnv_ioda_pe *pe) { @@ -1007,6 +996,7 @@ pci_name(dev)); continue; } + pdn->pcidev = dev; pdn->pe_number = pe->pe_number; pe->dma_weight += pnv_ioda_dma_weight(dev); if ((pe->flags & PNV_IODA_PE_BUS_ALL) && dev->subordinate) @@ -1083,6 +1073,77 @@ pnv_ioda_link_pe_by_weight(phb, pe); } +static struct pnv_ioda_pe *pnv_ioda_setup_npu_PE(struct pci_dev *npu_pdev) +{ + int pe_num, found_pe = false, rc; + long rid; + struct pnv_ioda_pe *pe; + struct pci_dev *gpu_pdev; + struct pci_dn *npu_pdn; + struct pci_controller *hose = pci_bus_to_host(npu_pdev->bus); + struct pnv_phb *phb = hose->private_data; + + /* + * Due to a hardware errata PE#0 on the NPU is reserved for + * error handling. This means we only have three PEs remaining + * which need to be assigned to four links, implying some + * links must share PEs. + * + * To achieve this we assign PEs such that NPUs linking the + * same GPU get assigned the same PE. + */ + gpu_pdev = pnv_pci_get_gpu_dev(npu_pdev); + for (pe_num = 0; pe_num < phb->ioda.total_pe; pe_num++) { + pe = &phb->ioda.pe_array[pe_num]; + if (!pe->pdev) + continue; + + if (pnv_pci_get_gpu_dev(pe->pdev) == gpu_pdev) { + /* + * This device has the same peer GPU so should + * be assigned the same PE as the existing + * peer NPU. + */ + dev_info(&npu_pdev->dev, + "Associating to existing PE %d\n", pe_num); + pci_dev_get(npu_pdev); + npu_pdn = pci_get_pdn(npu_pdev); + rid = npu_pdev->bus->number << 8 | npu_pdn->devfn; + npu_pdn->pcidev = npu_pdev; + npu_pdn->pe_number = pe_num; + pe->dma_weight += pnv_ioda_dma_weight(npu_pdev); + phb->ioda.pe_rmap[rid] = pe->pe_number; + + /* Map the PE to this link */ + rc = opal_pci_set_pe(phb->opal_id, pe_num, rid, + OpalPciBusAll, + OPAL_COMPARE_RID_DEVICE_NUMBER, + OPAL_COMPARE_RID_FUNCTION_NUMBER, + OPAL_MAP_PE); + WARN_ON(rc != OPAL_SUCCESS); + found_pe = true; + break; + } + } + + if (!found_pe) + /* + * Could not find an existing PE so allocate a new + * one. + */ + return pnv_ioda_setup_dev_PE(npu_pdev); + else + return pe; +} + +static void pnv_ioda_setup_npu_PEs(struct pci_bus *bus) +{ + struct pci_dev *pdev; + + list_for_each_entry(pdev, &bus->devices, bus_list) + pnv_ioda_setup_npu_PE(pdev); +} + static void pnv_ioda_setup_PEs(struct pci_bus *bus) { struct pci_dev *dev; @@ -1119,7 +1180,17 @@ if (phb->reserve_m64_pe) phb->reserve_m64_pe(hose->bus, NULL, true); - pnv_ioda_setup_PEs(hose->bus); + /* + * On NPU PHB, we expect separate PEs for individual PCI + * functions. PCI bus dependent PEs are required for the + * remaining types of PHBs. + */ + if (phb->type == PNV_PHB_NPU) { + /* PE#0 is needed for error reporting */ + pnv_ioda_reserve_pe(phb, 0); + pnv_ioda_setup_npu_PEs(hose->bus); + } else + pnv_ioda_setup_PEs(hose->bus); } } @@ -1578,6 +1649,8 @@ struct pnv_ioda_pe *pe; uint64_t top; bool bypass = false; + struct pci_dev *linked_npu_dev; + int i; if (WARN_ON(!pdn || pdn->pe_number == IODA_INVALID_PE)) return -ENODEV;; @@ -1596,6 +1669,18 @@ set_dma_ops(&pdev->dev, &dma_iommu_ops); } *pdev->dev.dma_mask = dma_mask; + + /* Update peer npu devices */ + if (pe->flags & PNV_IODA_PE_PEER) + for (i = 0; i < PNV_IODA_MAX_PEER_PES; i++) { + if (!pe->peers[i]) + continue; + + linked_npu_dev = pe->peers[i]->pdev; + if (dma_get_mask(&linked_npu_dev->dev) != dma_mask) + dma_set_mask(&linked_npu_dev->dev, dma_mask); + } + return 0; } @@ -1740,12 +1825,23 @@ /* 01xb - invalidate TCEs that match the specified PE# */ unsigned long val = (0x4ull << 60) | (pe->pe_number & 0xFF); struct pnv_phb *phb = pe->phb; + struct pnv_ioda_pe *npe; + int i; if (!phb->ioda.tce_inval_reg) return; mb(); /* Ensure above stores are visible */ __raw_writeq(cpu_to_be64(val), phb->ioda.tce_inval_reg); + + if (pe->flags & PNV_IODA_PE_PEER) + for (i = 0; i < PNV_IODA_MAX_PEER_PES; i++) { + npe = pe->peers[i]; + if (!npe || npe->phb->type != PNV_PHB_NPU) + continue; + + pnv_npu_tce_invalidate_entire(npe); + } } static void pnv_pci_ioda2_do_tce_invalidate(unsigned pe_number, bool rm, @@ -1780,15 +1876,28 @@ struct iommu_table_group_link *tgl; list_for_each_entry_rcu(tgl, &tbl->it_group_list, next) { + struct pnv_ioda_pe *npe; struct pnv_ioda_pe *pe = container_of(tgl->table_group, struct pnv_ioda_pe, table_group); __be64 __iomem *invalidate = rm ? (__be64 __iomem *)pe->phb->ioda.tce_inval_reg_phys : pe->phb->ioda.tce_inval_reg; + int i; pnv_pci_ioda2_do_tce_invalidate(pe->pe_number, rm, invalidate, tbl->it_page_shift, index, npages); + + if (pe->flags & PNV_IODA_PE_PEER) + /* Invalidate PEs using the same TCE table */ + for (i = 0; i < PNV_IODA_MAX_PEER_PES; i++) { + npe = pe->peers[i]; + if (!npe || npe->phb->type != PNV_PHB_NPU) + continue; + + pnv_npu_tce_invalidate(npe, tbl, index, + npages, rm); + } } } @@ -2436,10 +2545,17 @@ pe_info(pe, "DMA weight %d, assigned %d DMA32 segments\n", pe->dma_weight, segs); pnv_pci_ioda_setup_dma_pe(phb, pe, base, segs); - } else { + } else if (phb->type == PNV_PHB_IODA2) { pe_info(pe, "Assign DMA32 space\n"); segs = 0; pnv_pci_ioda2_setup_dma_pe(phb, pe); + } else if (phb->type == PNV_PHB_NPU) { + /* + * We initialise the DMA space for an NPU PHB + * after setup of the PHB is complete as we + * point the NPU TVT to the the same location + * as the PHB3 TVT. + */ } remaining -= segs; @@ -2881,6 +2997,11 @@ list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { phb = hose->private_data; + + /* NPU PHB does not support IO or MMIO segmentation */ + if (phb->type == PNV_PHB_NPU) + continue; + list_for_each_entry(pe, &phb->ioda.pe_list, list) { pnv_ioda_setup_pe_seg(hose, pe); } @@ -2920,6 +3041,27 @@ #endif /* CONFIG_DEBUG_FS */ } +static void pnv_npu_ioda_fixup(void) +{ + bool enable_bypass; + struct pci_controller *hose, *tmp; + struct pnv_phb *phb; + struct pnv_ioda_pe *pe; + + list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { + phb = hose->private_data; + if (phb->type != PNV_PHB_NPU) + continue; + + list_for_each_entry(pe, &phb->ioda.pe_dma_list, dma_link) { + enable_bypass = dma_get_mask(&pe->pdev->dev) == + DMA_BIT_MASK(64); + pnv_npu_init_dma_pe(pe); + pnv_npu_dma_set_bypass(pe, enable_bypass); + } + } +} + static void pnv_pci_ioda_fixup(void) { pnv_pci_ioda_setup_PEs(); @@ -2932,6 +3074,9 @@ eeh_init(); eeh_addr_cache_build(); #endif + + /* Link NPU IODA tables to their PCI devices. */ + pnv_npu_ioda_fixup(); } /* @@ -3046,6 +3191,19 @@ .shutdown = pnv_pci_ioda_shutdown, }; +static const struct pci_controller_ops pnv_npu_ioda_controller_ops = { + .dma_dev_setup = pnv_pci_dma_dev_setup, +#ifdef CONFIG_PCI_MSI + .setup_msi_irqs = pnv_setup_msi_irqs, + .teardown_msi_irqs = pnv_teardown_msi_irqs, +#endif + .enable_device_hook = pnv_pci_enable_device_hook, + .window_alignment = pnv_pci_window_alignment, + .reset_secondary_bus = pnv_pci_reset_secondary_bus, + .dma_set_mask = pnv_npu_dma_set_mask, + .shutdown = pnv_pci_ioda_shutdown, +}; + static void __init pnv_pci_init_ioda_phb(struct device_node *np, u64 hub_id, int ioda_type) { @@ -3101,6 +3259,8 @@ phb->model = PNV_PHB_MODEL_P7IOC; else if (of_device_is_compatible(np, "ibm,power8-pciex")) phb->model = PNV_PHB_MODEL_PHB3; + else if (of_device_is_compatible(np, "ibm,power8-npu-pciex")) + phb->model = PNV_PHB_MODEL_NPU; else phb->model = PNV_PHB_MODEL_UNKNOWN; @@ -3201,7 +3361,11 @@ * the child P2P bridges) can form individual PE. */ ppc_md.pcibios_fixup = pnv_pci_ioda_fixup; - hose->controller_ops = pnv_pci_ioda_controller_ops; + + if (phb->type == PNV_PHB_NPU) + hose->controller_ops = pnv_npu_ioda_controller_ops; + else + hose->controller_ops = pnv_pci_ioda_controller_ops; #ifdef CONFIG_PCI_IOV ppc_md.pcibios_fixup_sriov = pnv_pci_ioda_fixup_iov_resources; @@ -3236,6 +3400,11 @@ pnv_pci_init_ioda_phb(np, 0, PNV_PHB_IODA2); } +void __init pnv_pci_init_npu_phb(struct device_node *np) +{ + pnv_pci_init_ioda_phb(np, 0, PNV_PHB_NPU); +} + void __init pnv_pci_init_ioda_hub(struct device_node *np) { struct device_node *phbn; --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/pci.c +++ linux-4.4.0/arch/powerpc/platforms/powernv/pci.c @@ -807,6 +807,10 @@ for_each_compatible_node(np, NULL, "ibm,ioda2-phb") pnv_pci_init_ioda2_phb(np); + /* Look for NPU PHBs */ + for_each_compatible_node(np, NULL, "ibm,ioda2-npu-phb") + pnv_pci_init_npu_phb(np); + /* Setup the linkage between OF nodes and PHBs */ pci_devs_phb_init(); --- linux-4.4.0.orig/arch/powerpc/platforms/powernv/pci.h +++ linux-4.4.0/arch/powerpc/platforms/powernv/pci.h @@ -7,6 +7,7 @@ PNV_PHB_P5IOC2 = 0, PNV_PHB_IODA1 = 1, PNV_PHB_IODA2 = 2, + PNV_PHB_NPU = 3, }; /* Precise PHB model for error management */ @@ -15,6 +16,7 @@ PNV_PHB_MODEL_P5IOC2, PNV_PHB_MODEL_P7IOC, PNV_PHB_MODEL_PHB3, + PNV_PHB_MODEL_NPU, }; #define PNV_PCI_DIAG_BUF_SIZE 8192 @@ -24,6 +26,7 @@ #define PNV_IODA_PE_MASTER (1 << 3) /* Master PE in compound case */ #define PNV_IODA_PE_SLAVE (1 << 4) /* Slave PE in compound case */ #define PNV_IODA_PE_VF (1 << 5) /* PE for one VF */ +#define PNV_IODA_PE_PEER (1 << 6) /* PE has peers */ /* Data associated with a PE, including IOMMU tracking etc.. */ struct pnv_phb; @@ -31,6 +34,9 @@ unsigned long flags; struct pnv_phb *phb; +#define PNV_IODA_MAX_PEER_PES 8 + struct pnv_ioda_pe *peers[PNV_IODA_MAX_PEER_PES]; + /* A PE can be associated with a single device or an * entire bus (& children). In the former case, pdev * is populated, in the later case, pbus is. @@ -229,6 +235,7 @@ extern void pnv_pci_init_p5ioc2_hub(struct device_node *np); extern void pnv_pci_init_ioda_hub(struct device_node *np); extern void pnv_pci_init_ioda2_phb(struct device_node *np); +extern void pnv_pci_init_npu_phb(struct device_node *np); extern void pnv_pci_ioda_tce_invalidate(struct iommu_table *tbl, __be64 *startp, __be64 *endp, bool rm); extern void pnv_pci_reset_secondary_bus(struct pci_dev *dev); @@ -238,4 +245,16 @@ extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type); extern void pnv_teardown_msi_irqs(struct pci_dev *pdev); +/* Nvlink functions */ +extern void pnv_npu_tce_invalidate_entire(struct pnv_ioda_pe *npe); +extern void pnv_npu_tce_invalidate(struct pnv_ioda_pe *npe, + struct iommu_table *tbl, + unsigned long index, + unsigned long npages, + bool rm); +extern void pnv_npu_init_dma_pe(struct pnv_ioda_pe *npe); +extern void pnv_npu_setup_dma_pe(struct pnv_ioda_pe *npe); +extern int pnv_npu_dma_set_bypass(struct pnv_ioda_pe *npe, bool enabled); +extern int pnv_npu_dma_set_mask(struct pci_dev *npdev, u64 dma_mask); + #endif /* __POWERNV_PCI_H */ --- linux-4.4.0.orig/arch/powerpc/platforms/pseries/ras.c +++ linux-4.4.0/arch/powerpc/platforms/pseries/ras.c @@ -40,6 +40,9 @@ #define EPOW_SENSOR_TOKEN 9 #define EPOW_SENSOR_INDEX 0 +/* EPOW events counter variable */ +static int num_epow_events; + static irqreturn_t ras_epow_interrupt(int irq, void *dev_id); static irqreturn_t ras_error_interrupt(int irq, void *dev_id); @@ -82,32 +85,30 @@ { switch (event_modifier) { case EPOW_SHUTDOWN_NORMAL: - pr_emerg("Firmware initiated power off"); + pr_emerg("Power off requested\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_ON_UPS: - pr_emerg("Loss of power reported by firmware, system is " - "running on UPS/battery"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("Loss of system power detected. System is running on" + " UPS/battery. Check RTAS error log for details\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_LOSS_OF_CRITICAL_FUNCTIONS: - pr_emerg("Loss of system critical functions reported by " - "firmware"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("Loss of system critical functions detected. Check" + " RTAS error log for details\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_AMBIENT_TEMPERATURE_TOO_HIGH: - pr_emerg("Ambient temperature too high reported by firmware"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("High ambient temperature detected. Check RTAS" + " error log for details\n"); orderly_poweroff(true); break; default: - pr_err("Unknown power/cooling shutdown event (modifier %d)", + pr_err("Unknown power/cooling shutdown event (modifier = %d)\n", event_modifier); } } @@ -145,17 +146,20 @@ switch (action_code) { case EPOW_RESET: - pr_err("Non critical power or cooling issue cleared"); + if (num_epow_events) { + pr_info("Non critical power/cooling issue cleared\n"); + num_epow_events--; + } break; case EPOW_WARN_COOLING: - pr_err("Non critical cooling issue reported by firmware"); - pr_err("Check RTAS error log for details"); + pr_info("Non-critical cooling issue detected. Check RTAS error" + " log for details\n"); break; case EPOW_WARN_POWER: - pr_err("Non critical power issue reported by firmware"); - pr_err("Check RTAS error log for details"); + pr_info("Non-critical power issue detected. Check RTAS error" + " log for details\n"); break; case EPOW_SYSTEM_SHUTDOWN: @@ -163,23 +167,27 @@ break; case EPOW_SYSTEM_HALT: - pr_emerg("Firmware initiated power off"); + pr_emerg("Critical power/cooling issue detected. Check RTAS" + " error log for details. Powering off.\n"); orderly_poweroff(true); break; case EPOW_MAIN_ENCLOSURE: case EPOW_POWER_OFF: - pr_emerg("Critical power/cooling issue reported by firmware"); - pr_emerg("Check RTAS error log for details"); - pr_emerg("Immediate power off"); + pr_emerg("System about to lose power. Check RTAS error log " + " for details. Powering off immediately.\n"); emergency_sync(); kernel_power_off(); break; default: - pr_err("Unknown power/cooling event (action code %d)", + pr_err("Unknown power/cooling event (action code = %d)\n", action_code); } + + /* Increment epow events counter variable */ + if (action_code != EPOW_RESET) + num_epow_events++; } /* Handle environmental and power warning (EPOW) interrupts. */ @@ -249,13 +257,12 @@ log_error(ras_log_buf, ERR_TYPE_RTAS_LOG, fatal); if (fatal) { - pr_emerg("Fatal hardware error reported by firmware"); - pr_emerg("Check RTAS error log for details"); - pr_emerg("Immediate power off"); + pr_emerg("Fatal hardware error detected. Check RTAS error" + " log for details. Powering off immediately\n"); emergency_sync(); kernel_power_off(); } else { - pr_err("Recoverable hardware error reported by firmware"); + pr_err("Recoverable hardware error detected\n"); } spin_unlock(&ras_log_buf_lock); --- linux-4.4.0.orig/arch/x86/Kconfig +++ linux-4.4.0/arch/x86/Kconfig @@ -1375,8 +1375,10 @@ config NODES_SHIFT int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP - range 1 10 - default "10" if MAXSMP + range 1 10 if !NR_ZONES_EXTENDED + range 1 9 if NR_ZONES_EXTENDED + default "10" if MAXSMP && !NR_ZONES_EXTENDED + default "9" if MAXSMP && NR_ZONES_EXTENDED default "6" if X86_64 default "3" depends on NEED_MULTIPLE_NODES @@ -2669,6 +2671,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-4.4.0.orig/arch/x86/include/asm/boot.h +++ linux-4.4.0/arch/x86/include/asm/boot.h @@ -27,7 +27,7 @@ #define BOOT_HEAP_SIZE 0x400000 #else /* !CONFIG_KERNEL_BZIP2 */ -#define BOOT_HEAP_SIZE 0x8000 +#define BOOT_HEAP_SIZE 0x10000 #endif /* !CONFIG_KERNEL_BZIP2 */ --- linux-4.4.0.orig/arch/x86/include/asm/intel_punit_ipc.h +++ linux-4.4.0/arch/x86/include/asm/intel_punit_ipc.h @@ -0,0 +1,101 @@ +#ifndef _ASM_X86_INTEL_PUNIT_IPC_H_ +#define _ASM_X86_INTEL_PUNIT_IPC_H_ + +/* + * Three types of 8bit P-Unit IPC commands are supported, + * bit[7:6]: [00]: BIOS; [01]: GTD; [10]: ISPD. + */ +typedef enum { + BIOS_IPC = 0, + GTDRIVER_IPC, + ISPDRIVER_IPC, + RESERVED_IPC, +} IPC_TYPE; + +#define IPC_TYPE_OFFSET 6 +#define IPC_PUNIT_BIOS_CMD_BASE (BIOS_IPC << IPC_TYPE_OFFSET) +#define IPC_PUNIT_GTD_CMD_BASE (GTDDRIVER_IPC << IPC_TYPE_OFFSET) +#define IPC_PUNIT_ISPD_CMD_BASE (ISPDRIVER_IPC << IPC_TYPE_OFFSET) +#define IPC_PUNIT_CMD_TYPE_MASK (RESERVED_IPC << IPC_TYPE_OFFSET) + +/* BIOS => Pcode commands */ +#define IPC_PUNIT_BIOS_ZERO (IPC_PUNIT_BIOS_CMD_BASE | 0x00) +#define IPC_PUNIT_BIOS_VR_INTERFACE (IPC_PUNIT_BIOS_CMD_BASE | 0x01) +#define IPC_PUNIT_BIOS_READ_PCS (IPC_PUNIT_BIOS_CMD_BASE | 0x02) +#define IPC_PUNIT_BIOS_WRITE_PCS (IPC_PUNIT_BIOS_CMD_BASE | 0x03) +#define IPC_PUNIT_BIOS_READ_PCU_CONFIG (IPC_PUNIT_BIOS_CMD_BASE | 0x04) +#define IPC_PUNIT_BIOS_WRITE_PCU_CONFIG (IPC_PUNIT_BIOS_CMD_BASE | 0x05) +#define IPC_PUNIT_BIOS_READ_PL1_SETTING (IPC_PUNIT_BIOS_CMD_BASE | 0x06) +#define IPC_PUNIT_BIOS_WRITE_PL1_SETTING (IPC_PUNIT_BIOS_CMD_BASE | 0x07) +#define IPC_PUNIT_BIOS_TRIGGER_VDD_RAM (IPC_PUNIT_BIOS_CMD_BASE | 0x08) +#define IPC_PUNIT_BIOS_READ_TELE_INFO (IPC_PUNIT_BIOS_CMD_BASE | 0x09) +#define IPC_PUNIT_BIOS_READ_TELE_TRACE_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x0a) +#define IPC_PUNIT_BIOS_WRITE_TELE_TRACE_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x0b) +#define IPC_PUNIT_BIOS_READ_TELE_EVENT_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x0c) +#define IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x0d) +#define IPC_PUNIT_BIOS_READ_TELE_TRACE (IPC_PUNIT_BIOS_CMD_BASE | 0x0e) +#define IPC_PUNIT_BIOS_WRITE_TELE_TRACE (IPC_PUNIT_BIOS_CMD_BASE | 0x0f) +#define IPC_PUNIT_BIOS_READ_TELE_EVENT (IPC_PUNIT_BIOS_CMD_BASE | 0x10) +#define IPC_PUNIT_BIOS_WRITE_TELE_EVENT (IPC_PUNIT_BIOS_CMD_BASE | 0x11) +#define IPC_PUNIT_BIOS_READ_MODULE_TEMP (IPC_PUNIT_BIOS_CMD_BASE | 0x12) +#define IPC_PUNIT_BIOS_RESERVED (IPC_PUNIT_BIOS_CMD_BASE | 0x13) +#define IPC_PUNIT_BIOS_READ_VOLTAGE_OVER (IPC_PUNIT_BIOS_CMD_BASE | 0x14) +#define IPC_PUNIT_BIOS_WRITE_VOLTAGE_OVER (IPC_PUNIT_BIOS_CMD_BASE | 0x15) +#define IPC_PUNIT_BIOS_READ_RATIO_OVER (IPC_PUNIT_BIOS_CMD_BASE | 0x16) +#define IPC_PUNIT_BIOS_WRITE_RATIO_OVER (IPC_PUNIT_BIOS_CMD_BASE | 0x17) +#define IPC_PUNIT_BIOS_READ_VF_GL_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x18) +#define IPC_PUNIT_BIOS_WRITE_VF_GL_CTRL (IPC_PUNIT_BIOS_CMD_BASE | 0x19) +#define IPC_PUNIT_BIOS_READ_FM_SOC_TEMP_THRESH (IPC_PUNIT_BIOS_CMD_BASE | 0x1a) +#define IPC_PUNIT_BIOS_WRITE_FM_SOC_TEMP_THRESH (IPC_PUNIT_BIOS_CMD_BASE | 0x1b) + +/* GT Driver => Pcode commands */ +#define IPC_PUNIT_GTD_ZERO (IPC_PUNIT_GTD_CMD_BASE | 0x00) +#define IPC_PUNIT_GTD_CONFIG (IPC_PUNIT_GTD_CMD_BASE | 0x01) +#define IPC_PUNIT_GTD_READ_ICCP_LIC_CDYN_SCAL (IPC_PUNIT_GTD_CMD_BASE | 0x02) +#define IPC_PUNIT_GTD_WRITE_ICCP_LIC_CDYN_SCAL (IPC_PUNIT_GTD_CMD_BASE | 0x03) +#define IPC_PUNIT_GTD_GET_WM_VAL (IPC_PUNIT_GTD_CMD_BASE | 0x06) +#define IPC_PUNIT_GTD_WRITE_CONFIG_WISHREQ (IPC_PUNIT_GTD_CMD_BASE | 0x07) +#define IPC_PUNIT_GTD_READ_REQ_DUTY_CYCLE (IPC_PUNIT_GTD_CMD_BASE | 0x16) +#define IPC_PUNIT_GTD_DIS_VOL_FREQ_CHG_REQUEST (IPC_PUNIT_GTD_CMD_BASE | 0x17) +#define IPC_PUNIT_GTD_DYNA_DUTY_CYCLE_CTRL (IPC_PUNIT_GTD_CMD_BASE | 0x1a) +#define IPC_PUNIT_GTD_DYNA_DUTY_CYCLE_TUNING (IPC_PUNIT_GTD_CMD_BASE | 0x1c) + +/* ISP Driver => Pcode commands */ +#define IPC_PUNIT_ISPD_ZERO (IPC_PUNIT_ISPD_CMD_BASE | 0x00) +#define IPC_PUNIT_ISPD_CONFIG (IPC_PUNIT_ISPD_CMD_BASE | 0x01) +#define IPC_PUNIT_ISPD_GET_ISP_LTR_VAL (IPC_PUNIT_ISPD_CMD_BASE | 0x02) +#define IPC_PUNIT_ISPD_ACCESS_IU_FREQ_BOUNDS (IPC_PUNIT_ISPD_CMD_BASE | 0x03) +#define IPC_PUNIT_ISPD_READ_CDYN_LEVEL (IPC_PUNIT_ISPD_CMD_BASE | 0x04) +#define IPC_PUNIT_ISPD_WRITE_CDYN_LEVEL (IPC_PUNIT_ISPD_CMD_BASE | 0x05) + +/* Error codes */ +#define IPC_PUNIT_ERR_SUCCESS 0 +#define IPC_PUNIT_ERR_INVALID_CMD 1 +#define IPC_PUNIT_ERR_INVALID_PARAMETER 2 +#define IPC_PUNIT_ERR_CMD_TIMEOUT 3 +#define IPC_PUNIT_ERR_CMD_LOCKED 4 +#define IPC_PUNIT_ERR_INVALID_VR_ID 5 +#define IPC_PUNIT_ERR_VR_ERR 6 + +#if IS_ENABLED(CONFIG_INTEL_PUNIT_IPC) + +int intel_punit_ipc_simple_command(int cmd, int para1, int para2); +int intel_punit_ipc_command(u32 cmd, u32 para1, u32 para2, u32 *in, u32 *out); + +#else + +static inline int intel_punit_ipc_simple_command(int cmd, + int para1, int para2) +{ + return -ENODEV; +} + +static inline int intel_punit_ipc_command(u32 cmd, u32 para1, u32 para2, + u32 *in, u32 *out) +{ + return -ENODEV; +} + +#endif /* CONFIG_INTEL_PUNIT_IPC */ + +#endif --- linux-4.4.0.orig/arch/x86/include/asm/intel_telemetry.h +++ linux-4.4.0/arch/x86/include/asm/intel_telemetry.h @@ -0,0 +1,147 @@ +/* + * Intel SOC Telemetry Driver Header File + * Copyright (C) 2015, Intel Corporation. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + */ +#ifndef INTEL_TELEMETRY_H +#define INTEL_TELEMETRY_H + +#define TELEM_MAX_EVENTS_SRAM 28 +#define TELEM_MAX_OS_ALLOCATED_EVENTS 20 + +enum telemetry_unit { + TELEM_PSS = 0, + TELEM_IOSS, + TELEM_UNIT_NONE +}; + +struct telemetry_evtlog { + u32 telem_evtid; + u64 telem_evtlog; +}; + +struct telemetry_evtconfig { + /* Array of Event-IDs to Enable */ + u32 *evtmap; + + /* Number of Events (<29) in evtmap */ + u8 num_evts; + + /* Sampling period */ + u8 period; +}; + +struct telemetry_evtmap { + const char *name; + u32 evt_id; +}; + +struct telemetry_unit_config { + struct telemetry_evtmap *telem_evts; + void __iomem *regmap; + u32 ssram_base_addr; + u8 ssram_evts_used; + u8 curr_period; + u8 max_period; + u8 min_period; + u32 ssram_size; + +}; + +struct telemetry_plt_config { + struct telemetry_unit_config pss_config; + struct telemetry_unit_config ioss_config; + struct mutex telem_trace_lock; + struct mutex telem_lock; + bool telem_in_use; +}; + +struct telemetry_core_ops { + int (*get_sampling_period)(u8 *pss_min_period, u8 *pss_max_period, + u8 *ioss_min_period, u8 *ioss_max_period); + + int (*get_eventconfig)(struct telemetry_evtconfig *pss_evtconfig, + struct telemetry_evtconfig *ioss_evtconfig, + int pss_len, int ioss_len); + + int (*update_events)(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig); + + int (*set_sampling_period)(u8 pss_period, u8 ioss_period); + + int (*get_trace_verbosity)(enum telemetry_unit telem_unit, + u32 *verbosity); + + int (*set_trace_verbosity)(enum telemetry_unit telem_unit, + u32 verbosity); + + int (*raw_read_eventlog)(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, + int len, int log_all_evts); + + int (*read_eventlog)(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, + int len, int log_all_evts); + + int (*add_events)(u8 num_pss_evts, u8 num_ioss_evts, + u32 *pss_evtmap, u32 *ioss_evtmap); + + int (*reset_events)(void); +}; + +int telemetry_set_pltdata(struct telemetry_core_ops *ops, + struct telemetry_plt_config *pltconfig); + +int telemetry_clear_pltdata(void); + +int telemetry_pltconfig_valid(void); + +int telemetry_get_evtname(enum telemetry_unit telem_unit, + const char **name, int len); + +int telemetry_update_events(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig); + +int telemetry_add_events(u8 num_pss_evts, u8 num_ioss_evts, + u32 *pss_evtmap, u32 *ioss_evtmap); + +int telemetry_reset_events(void); + +int telemetry_get_eventconfig(struct telemetry_evtconfig *pss_config, + struct telemetry_evtconfig *ioss_config, + int pss_len, int ioss_len); + +int telemetry_read_events(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len); + +int telemetry_raw_read_events(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len); + +int telemetry_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len); + +int telemetry_raw_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len); + +int telemetry_get_sampling_period(u8 *pss_min_period, u8 *pss_max_period, + u8 *ioss_min_period, u8 *ioss_max_period); + +int telemetry_set_sampling_period(u8 pss_period, u8 ioss_period); + +int telemetry_set_trace_verbosity(enum telemetry_unit telem_unit, + u32 verbosity); + +int telemetry_get_trace_verbosity(enum telemetry_unit telem_unit, + u32 *verbosity); + +#endif /* INTEL_TELEMETRY_H */ --- linux-4.4.0.orig/arch/x86/include/asm/mmu_context.h +++ linux-4.4.0/arch/x86/include/asm/mmu_context.h @@ -116,8 +116,36 @@ #endif cpumask_set_cpu(cpu, mm_cpumask(next)); - /* Re-load page tables */ + /* + * Re-load page tables. + * + * This logic has an ordering constraint: + * + * CPU 0: Write to a PTE for 'next' + * CPU 0: load bit 1 in mm_cpumask. if nonzero, send IPI. + * CPU 1: set bit 1 in next's mm_cpumask + * CPU 1: load from the PTE that CPU 0 writes (implicit) + * + * We need to prevent an outcome in which CPU 1 observes + * the new PTE value and CPU 0 observes bit 1 clear in + * mm_cpumask. (If that occurs, then the IPI will never + * be sent, and CPU 0's TLB will contain a stale entry.) + * + * The bad outcome can occur if either CPU's load is + * reordered before that CPU's store, so both CPUs must + * execute full barriers to prevent this from happening. + * + * Thus, switch_mm needs a full barrier between the + * store to mm_cpumask and any operation that could load + * from next->pgd. TLB fills are special and can happen + * due to instruction fetches or for no reason at all, + * and neither LOCK nor MFENCE orders them. + * Fortunately, load_cr3() is serializing and gives the + * ordering guarantee we need. + * + */ load_cr3(next->pgd); + trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); /* Stop flush ipis for the previous mm */ @@ -156,10 +184,14 @@ * schedule, protecting us from simultaneous changes. */ cpumask_set_cpu(cpu, mm_cpumask(next)); + /* * We were in lazy tlb mode and leave_mm disabled * tlb flush IPI delivery. We must reload CR3 * to make sure to use no freed page tables. + * + * As above, load_cr3() is serializing and orders TLB + * fills with respect to the mm_cpumask write. */ load_cr3(next->pgd); trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); --- linux-4.4.0.orig/arch/x86/include/asm/msi.h +++ linux-4.4.0/arch/x86/include/asm/msi.h @@ -1,7 +1,13 @@ #ifndef _ASM_X86_MSI_H #define _ASM_X86_MSI_H #include +#include typedef struct irq_alloc_info msi_alloc_info_t; +int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, + msi_alloc_info_t *arg); + +void pci_msi_set_desc(msi_alloc_info_t *arg, struct msi_desc *desc); + #endif /* _ASM_X86_MSI_H */ --- linux-4.4.0.orig/arch/x86/include/uapi/asm/hyperv.h +++ linux-4.4.0/arch/x86/include/uapi/asm/hyperv.h @@ -269,4 +269,90 @@ #define HV_SYNIC_SINT_AUTO_EOI (1ULL << 17) #define HV_SYNIC_SINT_VECTOR_MASK (0xFF) +#define HV_SYNIC_STIMER_COUNT (4) + +/* Define synthetic interrupt controller message constants. */ +#define HV_MESSAGE_SIZE (256) +#define HV_MESSAGE_PAYLOAD_BYTE_COUNT (240) +#define HV_MESSAGE_PAYLOAD_QWORD_COUNT (30) + +/* Define hypervisor message types. */ +enum hv_message_type { + HVMSG_NONE = 0x00000000, + + /* Memory access messages. */ + HVMSG_UNMAPPED_GPA = 0x80000000, + HVMSG_GPA_INTERCEPT = 0x80000001, + + /* Timer notification messages. */ + HVMSG_TIMER_EXPIRED = 0x80000010, + + /* Error messages. */ + HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020, + HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021, + HVMSG_UNSUPPORTED_FEATURE = 0x80000022, + + /* Trace buffer complete messages. */ + HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040, + + /* Platform-specific processor intercept messages. */ + HVMSG_X64_IOPORT_INTERCEPT = 0x80010000, + HVMSG_X64_MSR_INTERCEPT = 0x80010001, + HVMSG_X64_CPUID_INTERCEPT = 0x80010002, + HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003, + HVMSG_X64_APIC_EOI = 0x80010004, + HVMSG_X64_LEGACY_FP_ERROR = 0x80010005 +}; + +/* Define synthetic interrupt controller message flags. */ +union hv_message_flags { + __u8 asu8; + struct { + __u8 msg_pending:1; + __u8 reserved:7; + }; +}; + +/* Define port identifier type. */ +union hv_port_id { + __u32 asu32; + struct { + __u32 id:24; + __u32 reserved:8; + } u; +}; + +/* Define synthetic interrupt controller message header. */ +struct hv_message_header { + __u32 message_type; + __u8 payload_size; + union hv_message_flags message_flags; + __u8 reserved[2]; + union { + __u64 sender; + union hv_port_id port; + }; +}; + +/* Define synthetic interrupt controller message format. */ +struct hv_message { + struct hv_message_header header; + union { + __u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; + } u; +}; + +/* Define the synthetic interrupt message page layout. */ +struct hv_message_page { + struct hv_message sint_message[HV_SYNIC_SINT_COUNT]; +}; + +/* Define timer message payload structure. */ +struct hv_timer_message_payload { + __u32 timer_index; + __u32 reserved; + __u64 expiration_time; /* When the timer expired */ + __u64 delivery_time; /* When the message was delivered */ +}; + #endif --- linux-4.4.0.orig/arch/x86/kernel/apic/msi.c +++ linux-4.4.0/arch/x86/kernel/apic/msi.c @@ -96,8 +96,8 @@ return arg->msi_hwirq; } -static int pci_msi_prepare(struct irq_domain *domain, struct device *dev, - int nvec, msi_alloc_info_t *arg) +int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, + msi_alloc_info_t *arg) { struct pci_dev *pdev = to_pci_dev(dev); struct msi_desc *desc = first_pci_msi_entry(pdev); @@ -113,11 +113,13 @@ return 0; } +EXPORT_SYMBOL_GPL(pci_msi_prepare); -static void pci_msi_set_desc(msi_alloc_info_t *arg, struct msi_desc *desc) +void pci_msi_set_desc(msi_alloc_info_t *arg, struct msi_desc *desc) { arg->msi_hwirq = pci_msi_domain_calc_hwirq(arg->msi_dev, desc); } +EXPORT_SYMBOL_GPL(pci_msi_set_desc); static struct msi_domain_ops pci_msi_domain_ops = { .get_hwirq = pci_msi_get_hwirq, --- linux-4.4.0.orig/arch/x86/kernel/apic/vector.c +++ linux-4.4.0/arch/x86/kernel/apic/vector.c @@ -29,6 +29,7 @@ }; struct irq_domain *x86_vector_domain; +EXPORT_SYMBOL_GPL(x86_vector_domain); static DEFINE_RAW_SPINLOCK(vector_lock); static cpumask_var_t vector_cpumask; static struct irq_chip lapic_controller; @@ -66,6 +67,7 @@ return data ? &data->cfg : NULL; } +EXPORT_SYMBOL_GPL(irqd_cfg); struct irq_cfg *irq_cfg(unsigned int irq) { --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event.h +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event.h @@ -907,6 +907,8 @@ void intel_pmu_lbr_init_skl(void); +void intel_pmu_lbr_init_knl(void); + int intel_pmu_setup_lbr_filter(struct perf_event *event); void intel_pt_interrupt(void); --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel.c +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel.c @@ -185,6 +185,14 @@ EVENT_CONSTRAINT_END }; +static struct extra_reg intel_knl_extra_regs[] __read_mostly = { + INTEL_UEVENT_EXTRA_REG(0x01b7, + MSR_OFFCORE_RSP_0, 0x7f9ffbffffull, RSP_0), + INTEL_UEVENT_EXTRA_REG(0x02b7, + MSR_OFFCORE_RSP_1, 0x3f9ffbffffull, RSP_1), + EVENT_EXTRA_END +}; + static struct extra_reg intel_snb_extra_regs[] __read_mostly = { /* must define OFFCORE_RSP_X first, see intel_fixup_er() */ INTEL_UEVENT_EXTRA_REG(0x01b7, MSR_OFFCORE_RSP_0, 0x3f807f8fffull, RSP_0), @@ -1457,6 +1465,42 @@ }, }; +#define KNL_OT_L2_HITE BIT_ULL(19) /* Other Tile L2 Hit */ +#define KNL_OT_L2_HITF BIT_ULL(20) /* Other Tile L2 Hit */ +#define KNL_MCDRAM_LOCAL BIT_ULL(21) +#define KNL_MCDRAM_FAR BIT_ULL(22) +#define KNL_DDR_LOCAL BIT_ULL(23) +#define KNL_DDR_FAR BIT_ULL(24) +#define KNL_DRAM_ANY (KNL_MCDRAM_LOCAL | KNL_MCDRAM_FAR | \ + KNL_DDR_LOCAL | KNL_DDR_FAR) +#define KNL_L2_READ SLM_DMND_READ +#define KNL_L2_WRITE SLM_DMND_WRITE +#define KNL_L2_PREFETCH SLM_DMND_PREFETCH +#define KNL_L2_ACCESS SLM_LLC_ACCESS +#define KNL_L2_MISS (KNL_OT_L2_HITE | KNL_OT_L2_HITF | \ + KNL_DRAM_ANY | SNB_SNP_ANY | \ + SNB_NON_DRAM) + +static __initconst const u64 knl_hw_cache_extra_regs + [PERF_COUNT_HW_CACHE_MAX] + [PERF_COUNT_HW_CACHE_OP_MAX] + [PERF_COUNT_HW_CACHE_RESULT_MAX] = { + [C(LL)] = { + [C(OP_READ)] = { + [C(RESULT_ACCESS)] = KNL_L2_READ | KNL_L2_ACCESS, + [C(RESULT_MISS)] = 0, + }, + [C(OP_WRITE)] = { + [C(RESULT_ACCESS)] = KNL_L2_WRITE | KNL_L2_ACCESS, + [C(RESULT_MISS)] = KNL_L2_WRITE | KNL_L2_MISS, + }, + [C(OP_PREFETCH)] = { + [C(RESULT_ACCESS)] = KNL_L2_PREFETCH | KNL_L2_ACCESS, + [C(RESULT_MISS)] = KNL_L2_PREFETCH | KNL_L2_MISS, + }, + }, +}; + /* * Use from PMIs where the LBRs are already disabled. */ @@ -3511,6 +3555,24 @@ pr_cont("Broadwell events, "); break; + case 87: /* Knights Landing Xeon Phi */ + memcpy(hw_cache_event_ids, + slm_hw_cache_event_ids, sizeof(hw_cache_event_ids)); + memcpy(hw_cache_extra_regs, + knl_hw_cache_extra_regs, sizeof(hw_cache_extra_regs)); + intel_pmu_lbr_init_knl(); + + x86_pmu.event_constraints = intel_slm_event_constraints; + x86_pmu.pebs_constraints = intel_slm_pebs_event_constraints; + x86_pmu.extra_regs = intel_knl_extra_regs; + + /* all extra regs are per-cpu when HT is on */ + x86_pmu.flags |= PMU_FL_HAS_RSP_1; + x86_pmu.flags |= PMU_FL_NO_HT_SHARING; + + pr_cont("Knights Landing events, "); + break; + case 78: /* 14nm Skylake Mobile */ case 94: /* 14nm Skylake Desktop */ x86_pmu.late_ack = true; --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel_lbr.c +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel_lbr.c @@ -1028,3 +1028,17 @@ */ pr_cont("8-deep LBR, "); } + +/* Knights Landing */ +void intel_pmu_lbr_init_knl(void) +{ + x86_pmu.lbr_nr = 8; + x86_pmu.lbr_tos = MSR_LBR_TOS; + x86_pmu.lbr_from = MSR_LBR_NHM_FROM; + x86_pmu.lbr_to = MSR_LBR_NHM_TO; + + x86_pmu.lbr_sel_mask = LBR_SEL_MASK; + x86_pmu.lbr_sel_map = snb_lbr_sel_map; + + pr_cont("8-deep LBR, "); +} --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel_uncore.c @@ -884,6 +884,15 @@ * each box has a different function id. */ pmu = &type->pmus[UNCORE_PCI_DEV_IDX(id->driver_data)]; + /* Knights Landing uses a common PCI device ID for multiple instances of + * an uncore PMU device type. There is only one entry per device type in + * the knl_uncore_pci_ids table inspite of multiple devices present for + * some device types. Hence PCI device idx would be 0 for all devices. + * So increment pmu pointer to point to an unused array element. + */ + if (boot_cpu_data.x86_model == 87) + while (pmu->func_id >= 0) + pmu++; if (pmu->func_id < 0) pmu->func_id = pdev->devfn; else @@ -966,6 +975,7 @@ case 63: /* Haswell-EP */ ret = hswep_uncore_pci_init(); break; + case 79: /* BDX-EP */ case 86: /* BDX-DE */ ret = bdx_uncore_pci_init(); break; @@ -982,6 +992,9 @@ case 61: /* Broadwell */ ret = bdw_uncore_pci_init(); break; + case 87: /* Knights Landing */ + ret = knl_uncore_pci_init(); + break; default: return 0; } @@ -1287,9 +1300,13 @@ case 63: /* Haswell-EP */ hswep_uncore_cpu_init(); break; + case 79: /* BDX-EP */ case 86: /* BDX-DE */ bdx_uncore_cpu_init(); break; + case 87: /* Knights Landing */ + knl_uncore_cpu_init(); + break; default: return 0; } --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.h +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel_uncore.h @@ -338,6 +338,7 @@ int bdw_uncore_pci_init(void); void snb_uncore_cpu_init(void); void nhm_uncore_cpu_init(void); +int snb_pci2phy_map_init(int devid); /* perf_event_intel_uncore_snbep.c */ int snbep_uncore_pci_init(void); @@ -348,6 +349,8 @@ void hswep_uncore_cpu_init(void); int bdx_uncore_pci_init(void); void bdx_uncore_cpu_init(void); +int knl_uncore_pci_init(void); +void knl_uncore_cpu_init(void); /* perf_event_intel_uncore_nhmex.c */ void nhmex_uncore_cpu_init(void); --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore_snb.c +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel_uncore_snb.c @@ -417,7 +417,7 @@ } } -static int snb_pci2phy_map_init(int devid) +int snb_pci2phy_map_init(int devid) { struct pci_dev *dev = NULL; struct pci2phy_map *map; --- linux-4.4.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c +++ linux-4.4.0/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c @@ -209,31 +209,98 @@ #define HSWEP_PCU_MSR_PMON_BOX_CTL 0x710 #define HSWEP_PCU_MSR_PMON_BOX_FILTER 0x715 +/* KNL Ubox */ +#define KNL_U_MSR_PMON_RAW_EVENT_MASK \ + (SNBEP_U_MSR_PMON_RAW_EVENT_MASK | \ + SNBEP_CBO_PMON_CTL_TID_EN) +/* KNL CHA */ +#define KNL_CHA_MSR_OFFSET 0xc +#define KNL_CHA_MSR_PMON_CTL_QOR (1 << 16) +#define KNL_CHA_MSR_PMON_RAW_EVENT_MASK \ + (SNBEP_CBO_MSR_PMON_RAW_EVENT_MASK | \ + KNL_CHA_MSR_PMON_CTL_QOR) +#define KNL_CHA_MSR_PMON_BOX_FILTER_TID 0x1ff +#define KNL_CHA_MSR_PMON_BOX_FILTER_STATE (7 << 18) +#define KNL_CHA_MSR_PMON_BOX_FILTER_OP (0xfffffe2aULL << 32) + +/* KNL EDC/MC UCLK */ +#define KNL_UCLK_MSR_PMON_CTR0_LOW 0x400 +#define KNL_UCLK_MSR_PMON_CTL0 0x420 +#define KNL_UCLK_MSR_PMON_BOX_CTL 0x430 +#define KNL_UCLK_MSR_PMON_UCLK_FIXED_LOW 0x44c +#define KNL_UCLK_MSR_PMON_UCLK_FIXED_CTL 0x454 +#define KNL_PMON_FIXED_CTL_EN 0x1 + +/* KNL EDC */ +#define KNL_EDC0_ECLK_MSR_PMON_CTR0_LOW 0xa00 +#define KNL_EDC0_ECLK_MSR_PMON_CTL0 0xa20 +#define KNL_EDC0_ECLK_MSR_PMON_BOX_CTL 0xa30 +#define KNL_EDC0_ECLK_MSR_PMON_ECLK_FIXED_LOW 0xa3c +#define KNL_EDC0_ECLK_MSR_PMON_ECLK_FIXED_CTL 0xa44 + +/* KNL MC */ +#define KNL_MC0_CH0_MSR_PMON_CTR0_LOW 0xb00 +#define KNL_MC0_CH0_MSR_PMON_CTL0 0xb20 +#define KNL_MC0_CH0_MSR_PMON_BOX_CTL 0xb30 +#define KNL_MC0_CH0_MSR_PMON_FIXED_LOW 0xb3c +#define KNL_MC0_CH0_MSR_PMON_FIXED_CTL 0xb44 + +/* KNL IRP */ +#define KNL_IRP_PCI_PMON_BOX_CTL 0xf0 +#define KNL_IRP_PCI_PMON_RAW_EVENT_MASK (SNBEP_PMON_RAW_EVENT_MASK | \ + KNL_CHA_MSR_PMON_CTL_QOR) +/* KNL PCU */ +#define KNL_PCU_PMON_CTL_EV_SEL_MASK 0x0000007f +#define KNL_PCU_PMON_CTL_USE_OCC_CTR (1 << 7) +#define KNL_PCU_MSR_PMON_CTL_TRESH_MASK 0x3f000000 +#define KNL_PCU_MSR_PMON_RAW_EVENT_MASK \ + (KNL_PCU_PMON_CTL_EV_SEL_MASK | \ + KNL_PCU_PMON_CTL_USE_OCC_CTR | \ + SNBEP_PCU_MSR_PMON_CTL_OCC_SEL_MASK | \ + SNBEP_PMON_CTL_EDGE_DET | \ + SNBEP_CBO_PMON_CTL_TID_EN | \ + SNBEP_PMON_CTL_EV_SEL_EXT | \ + SNBEP_PMON_CTL_INVERT | \ + KNL_PCU_MSR_PMON_CTL_TRESH_MASK | \ + SNBEP_PCU_MSR_PMON_CTL_OCC_INVERT | \ + SNBEP_PCU_MSR_PMON_CTL_OCC_EDGE_DET) DEFINE_UNCORE_FORMAT_ATTR(event, event, "config:0-7"); +DEFINE_UNCORE_FORMAT_ATTR(event2, event, "config:0-6"); DEFINE_UNCORE_FORMAT_ATTR(event_ext, event, "config:0-7,21"); +DEFINE_UNCORE_FORMAT_ATTR(use_occ_ctr, use_occ_ctr, "config:7"); DEFINE_UNCORE_FORMAT_ATTR(umask, umask, "config:8-15"); +DEFINE_UNCORE_FORMAT_ATTR(qor, qor, "config:16"); DEFINE_UNCORE_FORMAT_ATTR(edge, edge, "config:18"); DEFINE_UNCORE_FORMAT_ATTR(tid_en, tid_en, "config:19"); DEFINE_UNCORE_FORMAT_ATTR(inv, inv, "config:23"); DEFINE_UNCORE_FORMAT_ATTR(thresh8, thresh, "config:24-31"); +DEFINE_UNCORE_FORMAT_ATTR(thresh6, thresh, "config:24-29"); DEFINE_UNCORE_FORMAT_ATTR(thresh5, thresh, "config:24-28"); DEFINE_UNCORE_FORMAT_ATTR(occ_sel, occ_sel, "config:14-15"); DEFINE_UNCORE_FORMAT_ATTR(occ_invert, occ_invert, "config:30"); DEFINE_UNCORE_FORMAT_ATTR(occ_edge, occ_edge, "config:14-51"); +DEFINE_UNCORE_FORMAT_ATTR(occ_edge_det, occ_edge_det, "config:31"); DEFINE_UNCORE_FORMAT_ATTR(filter_tid, filter_tid, "config1:0-4"); DEFINE_UNCORE_FORMAT_ATTR(filter_tid2, filter_tid, "config1:0"); DEFINE_UNCORE_FORMAT_ATTR(filter_tid3, filter_tid, "config1:0-5"); +DEFINE_UNCORE_FORMAT_ATTR(filter_tid4, filter_tid, "config1:0-8"); DEFINE_UNCORE_FORMAT_ATTR(filter_cid, filter_cid, "config1:5"); DEFINE_UNCORE_FORMAT_ATTR(filter_link, filter_link, "config1:5-8"); DEFINE_UNCORE_FORMAT_ATTR(filter_link2, filter_link, "config1:6-8"); +DEFINE_UNCORE_FORMAT_ATTR(filter_link3, filter_link, "config1:12"); DEFINE_UNCORE_FORMAT_ATTR(filter_nid, filter_nid, "config1:10-17"); DEFINE_UNCORE_FORMAT_ATTR(filter_nid2, filter_nid, "config1:32-47"); DEFINE_UNCORE_FORMAT_ATTR(filter_state, filter_state, "config1:18-22"); DEFINE_UNCORE_FORMAT_ATTR(filter_state2, filter_state, "config1:17-22"); DEFINE_UNCORE_FORMAT_ATTR(filter_state3, filter_state, "config1:17-23"); +DEFINE_UNCORE_FORMAT_ATTR(filter_state4, filter_state, "config1:18-20"); +DEFINE_UNCORE_FORMAT_ATTR(filter_local, filter_local, "config1:33"); +DEFINE_UNCORE_FORMAT_ATTR(filter_all_op, filter_all_op, "config1:35"); +DEFINE_UNCORE_FORMAT_ATTR(filter_nnm, filter_nnm, "config1:37"); DEFINE_UNCORE_FORMAT_ATTR(filter_opc, filter_opc, "config1:23-31"); DEFINE_UNCORE_FORMAT_ATTR(filter_opc2, filter_opc, "config1:52-60"); +DEFINE_UNCORE_FORMAT_ATTR(filter_opc3, filter_opc, "config1:41-60"); DEFINE_UNCORE_FORMAT_ATTR(filter_nc, filter_nc, "config1:62"); DEFINE_UNCORE_FORMAT_ATTR(filter_c6, filter_c6, "config1:61"); DEFINE_UNCORE_FORMAT_ATTR(filter_isoc, filter_isoc, "config1:63"); @@ -315,8 +382,9 @@ static void snbep_uncore_pci_init_box(struct intel_uncore_box *box) { struct pci_dev *pdev = box->pci_dev; + int box_ctl = uncore_pci_box_ctl(box); - pci_write_config_dword(pdev, SNBEP_PCI_PMON_BOX_CTL, SNBEP_PMON_BOX_CTL_INT); + pci_write_config_dword(pdev, box_ctl, SNBEP_PMON_BOX_CTL_INT); } static void snbep_uncore_msr_disable_box(struct intel_uncore_box *box) @@ -1728,6 +1796,419 @@ } /* end of IvyTown uncore support */ +/* KNL uncore support */ +static struct attribute *knl_uncore_ubox_formats_attr[] = { + &format_attr_event.attr, + &format_attr_umask.attr, + &format_attr_edge.attr, + &format_attr_tid_en.attr, + &format_attr_inv.attr, + &format_attr_thresh5.attr, + NULL, +}; + +static struct attribute_group knl_uncore_ubox_format_group = { + .name = "format", + .attrs = knl_uncore_ubox_formats_attr, +}; + +static struct intel_uncore_type knl_uncore_ubox = { + .name = "ubox", + .num_counters = 2, + .num_boxes = 1, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = HSWEP_U_MSR_PMON_CTR0, + .event_ctl = HSWEP_U_MSR_PMON_CTL0, + .event_mask = KNL_U_MSR_PMON_RAW_EVENT_MASK, + .fixed_ctr = HSWEP_U_MSR_PMON_UCLK_FIXED_CTR, + .fixed_ctl = HSWEP_U_MSR_PMON_UCLK_FIXED_CTL, + .ops = &snbep_uncore_msr_ops, + .format_group = &knl_uncore_ubox_format_group, +}; + +static struct attribute *knl_uncore_cha_formats_attr[] = { + &format_attr_event.attr, + &format_attr_umask.attr, + &format_attr_qor.attr, + &format_attr_edge.attr, + &format_attr_tid_en.attr, + &format_attr_inv.attr, + &format_attr_thresh8.attr, + &format_attr_filter_tid4.attr, + &format_attr_filter_link3.attr, + &format_attr_filter_state4.attr, + &format_attr_filter_local.attr, + &format_attr_filter_all_op.attr, + &format_attr_filter_nnm.attr, + &format_attr_filter_opc3.attr, + &format_attr_filter_nc.attr, + &format_attr_filter_isoc.attr, + NULL, +}; + +static struct attribute_group knl_uncore_cha_format_group = { + .name = "format", + .attrs = knl_uncore_cha_formats_attr, +}; + +static struct event_constraint knl_uncore_cha_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x11, 0x1), + UNCORE_EVENT_CONSTRAINT(0x1f, 0x1), + UNCORE_EVENT_CONSTRAINT(0x36, 0x1), + EVENT_CONSTRAINT_END +}; + +static struct extra_reg knl_uncore_cha_extra_regs[] = { + SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN, + SNBEP_CBO_PMON_CTL_TID_EN, 0x1), + SNBEP_CBO_EVENT_EXTRA_REG(0x3d, 0xff, 0x2), + SNBEP_CBO_EVENT_EXTRA_REG(0x35, 0xff, 0x4), + SNBEP_CBO_EVENT_EXTRA_REG(0x36, 0xff, 0x4), + EVENT_EXTRA_END +}; + +static u64 knl_cha_filter_mask(int fields) +{ + u64 mask = 0; + + if (fields & 0x1) + mask |= KNL_CHA_MSR_PMON_BOX_FILTER_TID; + if (fields & 0x2) + mask |= KNL_CHA_MSR_PMON_BOX_FILTER_STATE; + if (fields & 0x4) + mask |= KNL_CHA_MSR_PMON_BOX_FILTER_OP; + return mask; +} + +static struct event_constraint * +knl_cha_get_constraint(struct intel_uncore_box *box, struct perf_event *event) +{ + return __snbep_cbox_get_constraint(box, event, knl_cha_filter_mask); +} + +static int knl_cha_hw_config(struct intel_uncore_box *box, + struct perf_event *event) +{ + struct hw_perf_event_extra *reg1 = &event->hw.extra_reg; + struct extra_reg *er; + int idx = 0; + + for (er = knl_uncore_cha_extra_regs; er->msr; er++) { + if (er->event != (event->hw.config & er->config_mask)) + continue; + idx |= er->idx; + } + + if (idx) { + reg1->reg = HSWEP_C0_MSR_PMON_BOX_FILTER0 + + KNL_CHA_MSR_OFFSET * box->pmu->pmu_idx; + reg1->config = event->attr.config1 & knl_cha_filter_mask(idx); + reg1->idx = idx; + } + return 0; +} + +static void hswep_cbox_enable_event(struct intel_uncore_box *box, + struct perf_event *event); + +static struct intel_uncore_ops knl_uncore_cha_ops = { + .init_box = snbep_uncore_msr_init_box, + .disable_box = snbep_uncore_msr_disable_box, + .enable_box = snbep_uncore_msr_enable_box, + .disable_event = snbep_uncore_msr_disable_event, + .enable_event = hswep_cbox_enable_event, + .read_counter = uncore_msr_read_counter, + .hw_config = knl_cha_hw_config, + .get_constraint = knl_cha_get_constraint, + .put_constraint = snbep_cbox_put_constraint, +}; + +static struct intel_uncore_type knl_uncore_cha = { + .name = "cha", + .num_counters = 4, + .num_boxes = 38, + .perf_ctr_bits = 48, + .event_ctl = HSWEP_C0_MSR_PMON_CTL0, + .perf_ctr = HSWEP_C0_MSR_PMON_CTR0, + .event_mask = KNL_CHA_MSR_PMON_RAW_EVENT_MASK, + .box_ctl = HSWEP_C0_MSR_PMON_BOX_CTL, + .msr_offset = KNL_CHA_MSR_OFFSET, + .num_shared_regs = 1, + .constraints = knl_uncore_cha_constraints, + .ops = &knl_uncore_cha_ops, + .format_group = &knl_uncore_cha_format_group, +}; + +static struct attribute *knl_uncore_pcu_formats_attr[] = { + &format_attr_event2.attr, + &format_attr_use_occ_ctr.attr, + &format_attr_occ_sel.attr, + &format_attr_edge.attr, + &format_attr_tid_en.attr, + &format_attr_inv.attr, + &format_attr_thresh6.attr, + &format_attr_occ_invert.attr, + &format_attr_occ_edge_det.attr, + NULL, +}; + +static struct attribute_group knl_uncore_pcu_format_group = { + .name = "format", + .attrs = knl_uncore_pcu_formats_attr, +}; + +static struct intel_uncore_type knl_uncore_pcu = { + .name = "pcu", + .num_counters = 4, + .num_boxes = 1, + .perf_ctr_bits = 48, + .perf_ctr = HSWEP_PCU_MSR_PMON_CTR0, + .event_ctl = HSWEP_PCU_MSR_PMON_CTL0, + .event_mask = KNL_PCU_MSR_PMON_RAW_EVENT_MASK, + .box_ctl = HSWEP_PCU_MSR_PMON_BOX_CTL, + .ops = &snbep_uncore_msr_ops, + .format_group = &knl_uncore_pcu_format_group, +}; + +static struct intel_uncore_type *knl_msr_uncores[] = { + &knl_uncore_ubox, + &knl_uncore_cha, + &knl_uncore_pcu, + NULL, +}; + +void knl_uncore_cpu_init(void) +{ + uncore_msr_uncores = knl_msr_uncores; +} + +static void knl_uncore_imc_enable_box(struct intel_uncore_box *box) +{ + struct pci_dev *pdev = box->pci_dev; + int box_ctl = uncore_pci_box_ctl(box); + + pci_write_config_dword(pdev, box_ctl, 0); +} + +static void knl_uncore_imc_enable_event(struct intel_uncore_box *box, + struct perf_event *event) +{ + struct pci_dev *pdev = box->pci_dev; + struct hw_perf_event *hwc = &event->hw; + + if ((event->attr.config & SNBEP_PMON_CTL_EV_SEL_MASK) + == UNCORE_FIXED_EVENT) + pci_write_config_dword(pdev, hwc->config_base, + hwc->config | KNL_PMON_FIXED_CTL_EN); + else + pci_write_config_dword(pdev, hwc->config_base, + hwc->config | SNBEP_PMON_CTL_EN); +} + +static struct intel_uncore_ops knl_uncore_imc_ops = { + .init_box = snbep_uncore_pci_init_box, + .disable_box = snbep_uncore_pci_disable_box, + .enable_box = knl_uncore_imc_enable_box, + .read_counter = snbep_uncore_pci_read_counter, + .enable_event = knl_uncore_imc_enable_event, + .disable_event = snbep_uncore_pci_disable_event, +}; + +static struct intel_uncore_type knl_uncore_imc_uclk = { + .name = "imc_uclk", + .num_counters = 4, + .num_boxes = 2, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = KNL_UCLK_MSR_PMON_CTR0_LOW, + .event_ctl = KNL_UCLK_MSR_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .fixed_ctr = KNL_UCLK_MSR_PMON_UCLK_FIXED_LOW, + .fixed_ctl = KNL_UCLK_MSR_PMON_UCLK_FIXED_CTL, + .box_ctl = KNL_UCLK_MSR_PMON_BOX_CTL, + .ops = &knl_uncore_imc_ops, + .format_group = &snbep_uncore_format_group, +}; + +static struct intel_uncore_type knl_uncore_imc_dclk = { + .name = "imc", + .num_counters = 4, + .num_boxes = 6, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = KNL_MC0_CH0_MSR_PMON_CTR0_LOW, + .event_ctl = KNL_MC0_CH0_MSR_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .fixed_ctr = KNL_MC0_CH0_MSR_PMON_FIXED_LOW, + .fixed_ctl = KNL_MC0_CH0_MSR_PMON_FIXED_CTL, + .box_ctl = KNL_MC0_CH0_MSR_PMON_BOX_CTL, + .ops = &knl_uncore_imc_ops, + .format_group = &snbep_uncore_format_group, +}; + +static struct intel_uncore_type knl_uncore_edc_uclk = { + .name = "edc_uclk", + .num_counters = 4, + .num_boxes = 8, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = KNL_UCLK_MSR_PMON_CTR0_LOW, + .event_ctl = KNL_UCLK_MSR_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .fixed_ctr = KNL_UCLK_MSR_PMON_UCLK_FIXED_LOW, + .fixed_ctl = KNL_UCLK_MSR_PMON_UCLK_FIXED_CTL, + .box_ctl = KNL_UCLK_MSR_PMON_BOX_CTL, + .ops = &knl_uncore_imc_ops, + .format_group = &snbep_uncore_format_group, +}; + +static struct intel_uncore_type knl_uncore_edc_eclk = { + .name = "edc_eclk", + .num_counters = 4, + .num_boxes = 8, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = KNL_EDC0_ECLK_MSR_PMON_CTR0_LOW, + .event_ctl = KNL_EDC0_ECLK_MSR_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .fixed_ctr = KNL_EDC0_ECLK_MSR_PMON_ECLK_FIXED_LOW, + .fixed_ctl = KNL_EDC0_ECLK_MSR_PMON_ECLK_FIXED_CTL, + .box_ctl = KNL_EDC0_ECLK_MSR_PMON_BOX_CTL, + .ops = &knl_uncore_imc_ops, + .format_group = &snbep_uncore_format_group, +}; + +static struct event_constraint knl_uncore_m2pcie_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x23, 0x3), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type knl_uncore_m2pcie = { + .name = "m2pcie", + .num_counters = 4, + .num_boxes = 1, + .perf_ctr_bits = 48, + .constraints = knl_uncore_m2pcie_constraints, + SNBEP_UNCORE_PCI_COMMON_INIT(), +}; + +static struct attribute *knl_uncore_irp_formats_attr[] = { + &format_attr_event.attr, + &format_attr_umask.attr, + &format_attr_qor.attr, + &format_attr_edge.attr, + &format_attr_inv.attr, + &format_attr_thresh8.attr, + NULL, +}; + +static struct attribute_group knl_uncore_irp_format_group = { + .name = "format", + .attrs = knl_uncore_irp_formats_attr, +}; + +static struct intel_uncore_type knl_uncore_irp = { + .name = "irp", + .num_counters = 2, + .num_boxes = 1, + .perf_ctr_bits = 48, + .perf_ctr = SNBEP_PCI_PMON_CTR0, + .event_ctl = SNBEP_PCI_PMON_CTL0, + .event_mask = KNL_IRP_PCI_PMON_RAW_EVENT_MASK, + .box_ctl = KNL_IRP_PCI_PMON_BOX_CTL, + .ops = &snbep_uncore_pci_ops, + .format_group = &knl_uncore_irp_format_group, +}; + +enum { + KNL_PCI_UNCORE_MC_UCLK, + KNL_PCI_UNCORE_MC_DCLK, + KNL_PCI_UNCORE_EDC_UCLK, + KNL_PCI_UNCORE_EDC_ECLK, + KNL_PCI_UNCORE_M2PCIE, + KNL_PCI_UNCORE_IRP, +}; + +static struct intel_uncore_type *knl_pci_uncores[] = { + [KNL_PCI_UNCORE_MC_UCLK] = &knl_uncore_imc_uclk, + [KNL_PCI_UNCORE_MC_DCLK] = &knl_uncore_imc_dclk, + [KNL_PCI_UNCORE_EDC_UCLK] = &knl_uncore_edc_uclk, + [KNL_PCI_UNCORE_EDC_ECLK] = &knl_uncore_edc_eclk, + [KNL_PCI_UNCORE_M2PCIE] = &knl_uncore_m2pcie, + [KNL_PCI_UNCORE_IRP] = &knl_uncore_irp, + NULL, +}; + +/* + * KNL uses a common PCI device ID for multiple instances of an Uncore PMU + * device type. prior to KNL, each instance of a PMU device type had a unique + * device ID. + * + * PCI Device ID Uncore PMU Devices + * ---------------------------------- + * 0x7841 MC0 UClk, MC1 UClk + * 0x7843 MC0 DClk CH 0, MC0 DClk CH 1, MC0 DClk CH 2, + * MC1 DClk CH 0, MC1 DClk CH 1, MC1 DClk CH 2 + * 0x7833 EDC0 UClk, EDC1 UClk, EDC2 UClk, EDC3 UClk, + * EDC4 UClk, EDC5 UClk, EDC6 UClk, EDC7 UClk + * 0x7835 EDC0 EClk, EDC1 EClk, EDC2 EClk, EDC3 EClk, + * EDC4 EClk, EDC5 EClk, EDC6 EClk, EDC7 EClk + * 0x7817 M2PCIe + * 0x7814 IRP +*/ + +static const struct pci_device_id knl_uncore_pci_ids[] = { + { /* MC UClk */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7841), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_MC_UCLK, 0), + }, + { /* MC DClk Channel */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7843), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_MC_DCLK, 0), + }, + { /* EDC UClk */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7833), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_EDC_UCLK, 0), + }, + { /* EDC EClk */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7835), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_EDC_ECLK, 0), + }, + { /* M2PCIe */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7817), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_M2PCIE, 0), + }, + { /* IRP */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7814), + .driver_data = UNCORE_PCI_DEV_DATA(KNL_PCI_UNCORE_IRP, 0), + }, + { /* end: all zeroes */ } +}; + +static struct pci_driver knl_uncore_pci_driver = { + .name = "knl_uncore", + .id_table = knl_uncore_pci_ids, +}; + +int knl_uncore_pci_init(void) +{ + int ret; + + /* All KNL PCI based PMON units are on the same PCI bus except IRP */ + ret = snb_pci2phy_map_init(0x7814); /* IRP */ + if (ret) + return ret; + ret = snb_pci2phy_map_init(0x7817); /* M2PCIe */ + if (ret) + return ret; + uncore_pci_uncores = knl_pci_uncores; + uncore_pci_driver = &knl_uncore_pci_driver; + return 0; +} + +/* end of KNL uncore support */ + /* Haswell-EP uncore support */ static struct attribute *hswep_uncore_ubox_formats_attr[] = { &format_attr_event.attr, @@ -2338,7 +2819,7 @@ } /* end of Haswell-EP uncore support */ -/* BDX-DE uncore support */ +/* BDX uncore support */ static struct intel_uncore_type bdx_uncore_ubox = { .name = "ubox", @@ -2360,13 +2841,14 @@ UNCORE_EVENT_CONSTRAINT(0x09, 0x3), UNCORE_EVENT_CONSTRAINT(0x11, 0x1), UNCORE_EVENT_CONSTRAINT(0x36, 0x1), + UNCORE_EVENT_CONSTRAINT(0x3e, 0x1), EVENT_CONSTRAINT_END }; static struct intel_uncore_type bdx_uncore_cbox = { .name = "cbox", .num_counters = 4, - .num_boxes = 8, + .num_boxes = 24, .perf_ctr_bits = 48, .event_ctl = HSWEP_C0_MSR_PMON_CTL0, .perf_ctr = HSWEP_C0_MSR_PMON_CTR0, @@ -2379,9 +2861,24 @@ .format_group = &hswep_uncore_cbox_format_group, }; +static struct intel_uncore_type bdx_uncore_sbox = { + .name = "sbox", + .num_counters = 4, + .num_boxes = 4, + .perf_ctr_bits = 48, + .event_ctl = HSWEP_S0_MSR_PMON_CTL0, + .perf_ctr = HSWEP_S0_MSR_PMON_CTR0, + .event_mask = HSWEP_S_MSR_PMON_RAW_EVENT_MASK, + .box_ctl = HSWEP_S0_MSR_PMON_BOX_CTL, + .msr_offset = HSWEP_SBOX_MSR_OFFSET, + .ops = &hswep_uncore_sbox_msr_ops, + .format_group = &hswep_uncore_sbox_format_group, +}; + static struct intel_uncore_type *bdx_msr_uncores[] = { &bdx_uncore_ubox, &bdx_uncore_cbox, + &bdx_uncore_sbox, &hswep_uncore_pcu, NULL, }; @@ -2396,7 +2893,7 @@ static struct intel_uncore_type bdx_uncore_ha = { .name = "ha", .num_counters = 4, - .num_boxes = 1, + .num_boxes = 2, .perf_ctr_bits = 48, SNBEP_UNCORE_PCI_COMMON_INIT(), }; @@ -2404,7 +2901,7 @@ static struct intel_uncore_type bdx_uncore_imc = { .name = "imc", .num_counters = 5, - .num_boxes = 2, + .num_boxes = 8, .perf_ctr_bits = 48, .fixed_ctr_bits = 48, .fixed_ctr = SNBEP_MC_CHy_PCI_PMON_FIXED_CTR, @@ -2424,6 +2921,19 @@ .format_group = &snbep_uncore_format_group, }; +static struct intel_uncore_type bdx_uncore_qpi = { + .name = "qpi", + .num_counters = 4, + .num_boxes = 3, + .perf_ctr_bits = 48, + .perf_ctr = SNBEP_PCI_PMON_CTR0, + .event_ctl = SNBEP_PCI_PMON_CTL0, + .event_mask = SNBEP_QPI_PCI_PMON_RAW_EVENT_MASK, + .box_ctl = SNBEP_PCI_PMON_BOX_CTL, + .num_shared_regs = 1, + .ops = &snbep_uncore_qpi_ops, + .format_group = &snbep_uncore_qpi_format_group, +}; static struct event_constraint bdx_uncore_r2pcie_constraints[] = { UNCORE_EVENT_CONSTRAINT(0x10, 0x3), @@ -2432,6 +2942,8 @@ UNCORE_EVENT_CONSTRAINT(0x23, 0x1), UNCORE_EVENT_CONSTRAINT(0x25, 0x1), UNCORE_EVENT_CONSTRAINT(0x26, 0x3), + UNCORE_EVENT_CONSTRAINT(0x28, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2c, 0x3), UNCORE_EVENT_CONSTRAINT(0x2d, 0x3), EVENT_CONSTRAINT_END }; @@ -2445,18 +2957,65 @@ SNBEP_UNCORE_PCI_COMMON_INIT(), }; +static struct event_constraint bdx_uncore_r3qpi_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x01, 0x7), + UNCORE_EVENT_CONSTRAINT(0x07, 0x7), + UNCORE_EVENT_CONSTRAINT(0x08, 0x7), + UNCORE_EVENT_CONSTRAINT(0x09, 0x7), + UNCORE_EVENT_CONSTRAINT(0x0a, 0x7), + UNCORE_EVENT_CONSTRAINT(0x0e, 0x7), + UNCORE_EVENT_CONSTRAINT(0x10, 0x3), + UNCORE_EVENT_CONSTRAINT(0x11, 0x3), + UNCORE_EVENT_CONSTRAINT(0x13, 0x1), + UNCORE_EVENT_CONSTRAINT(0x14, 0x3), + UNCORE_EVENT_CONSTRAINT(0x15, 0x3), + UNCORE_EVENT_CONSTRAINT(0x1f, 0x3), + UNCORE_EVENT_CONSTRAINT(0x20, 0x3), + UNCORE_EVENT_CONSTRAINT(0x21, 0x3), + UNCORE_EVENT_CONSTRAINT(0x22, 0x3), + UNCORE_EVENT_CONSTRAINT(0x23, 0x3), + UNCORE_EVENT_CONSTRAINT(0x25, 0x3), + UNCORE_EVENT_CONSTRAINT(0x26, 0x3), + UNCORE_EVENT_CONSTRAINT(0x28, 0x3), + UNCORE_EVENT_CONSTRAINT(0x29, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2c, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2d, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2e, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2f, 0x3), + UNCORE_EVENT_CONSTRAINT(0x33, 0x3), + UNCORE_EVENT_CONSTRAINT(0x34, 0x3), + UNCORE_EVENT_CONSTRAINT(0x36, 0x3), + UNCORE_EVENT_CONSTRAINT(0x37, 0x3), + UNCORE_EVENT_CONSTRAINT(0x38, 0x3), + UNCORE_EVENT_CONSTRAINT(0x39, 0x3), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type bdx_uncore_r3qpi = { + .name = "r3qpi", + .num_counters = 3, + .num_boxes = 3, + .perf_ctr_bits = 48, + .constraints = bdx_uncore_r3qpi_constraints, + SNBEP_UNCORE_PCI_COMMON_INIT(), +}; + enum { BDX_PCI_UNCORE_HA, BDX_PCI_UNCORE_IMC, BDX_PCI_UNCORE_IRP, + BDX_PCI_UNCORE_QPI, BDX_PCI_UNCORE_R2PCIE, + BDX_PCI_UNCORE_R3QPI, }; static struct intel_uncore_type *bdx_pci_uncores[] = { [BDX_PCI_UNCORE_HA] = &bdx_uncore_ha, [BDX_PCI_UNCORE_IMC] = &bdx_uncore_imc, [BDX_PCI_UNCORE_IRP] = &bdx_uncore_irp, + [BDX_PCI_UNCORE_QPI] = &bdx_uncore_qpi, [BDX_PCI_UNCORE_R2PCIE] = &bdx_uncore_r2pcie, + [BDX_PCI_UNCORE_R3QPI] = &bdx_uncore_r3qpi, NULL, }; @@ -2465,6 +3024,10 @@ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f30), .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_HA, 0), }, + { /* Home Agent 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f38), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_HA, 1), + }, { /* MC0 Channel 0 */ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb0), .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 0), @@ -2473,14 +3036,74 @@ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb1), .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 1), }, + { /* MC0 Channel 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb4), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 2), + }, + { /* MC0 Channel 3 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb5), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 3), + }, + { /* MC1 Channel 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fd0), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 4), + }, + { /* MC1 Channel 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fd1), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 5), + }, + { /* MC1 Channel 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fd4), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 6), + }, + { /* MC1 Channel 3 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fd5), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 7), + }, { /* IRP */ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f39), .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IRP, 0), }, + { /* QPI0 Port 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f32), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_QPI, 0), + }, + { /* QPI0 Port 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f33), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_QPI, 1), + }, + { /* QPI1 Port 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f3a), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_QPI, 2), + }, { /* R2PCIe */ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f34), .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_R2PCIE, 0), }, + { /* R3QPI0 Link 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f36), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_R3QPI, 0), + }, + { /* R3QPI0 Link 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f37), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_R3QPI, 1), + }, + { /* R3QPI1 Link 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f3e), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_R3QPI, 2), + }, + { /* QPI Port 0 filter */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f86), + .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV, 0), + }, + { /* QPI Port 1 filter */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f96), + .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV, 1), + }, + { /* QPI Port 2 filter */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f46), + .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV, 2), + }, { /* end: all zeroes */ } }; @@ -2500,4 +3123,4 @@ return 0; } -/* end of BDX-DE uncore support */ +/* end of BDX uncore support */ --- linux-4.4.0.orig/arch/x86/kernel/reboot.c +++ linux-4.4.0/arch/x86/kernel/reboot.c @@ -182,6 +182,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"), }, }, + { /* Handle problems with rebooting on the iMac10,1. */ + .callback = set_pci_reboot, + .ident = "Apple iMac10,1", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "iMac10,1"), + }, + }, /* ASRock */ { /* Handle problems with rebooting on ASRock Q1900DC-ITX */ @@ -407,7 +415,46 @@ DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"), }, }, - + { /* Handle problems with rebooting on the Latitude E6520. */ + .callback = set_pci_reboot, + .ident = "Dell Latitude E6520", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 790. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 790", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 790"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 990. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 990", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"), + }, + }, + { /* Handle problems with rebooting on the Latitude E6220. */ + .callback = set_pci_reboot, + .ident = "Dell Latitude E6220", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6220"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 390. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 390", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390"), + }, + }, { } }; --- linux-4.4.0.orig/arch/x86/kvm/trace.h +++ linux-4.4.0/arch/x86/kvm/trace.h @@ -268,7 +268,7 @@ #define kvm_trace_sym_exc \ EXS(DE), EXS(DB), EXS(BP), EXS(OF), EXS(BR), EXS(UD), EXS(NM), \ EXS(DF), EXS(TS), EXS(NP), EXS(SS), EXS(GP), EXS(PF), \ - EXS(MF), EXS(MC) + EXS(MF), EXS(AC), EXS(MC) /* * Tracepoint for kvm interrupt injection: --- linux-4.4.0.orig/arch/x86/kvm/vmx.c +++ linux-4.4.0/arch/x86/kvm/vmx.c @@ -8932,7 +8932,8 @@ best->ebx &= ~bit(X86_FEATURE_INVPCID); } - vmcs_set_secondary_exec_control(secondary_exec_ctl); + if (cpu_has_secondary_exec_ctrls()) + vmcs_set_secondary_exec_control(secondary_exec_ctl); if (static_cpu_has(X86_FEATURE_PCOMMIT) && nested) { if (guest_cpuid_has_pcommit(vcpu)) --- linux-4.4.0.orig/arch/x86/kvm/x86.c +++ linux-4.4.0/arch/x86/kvm/x86.c @@ -951,7 +951,7 @@ MSR_CSTAR, MSR_KERNEL_GS_BASE, MSR_SYSCALL_MASK, MSR_LSTAR, #endif MSR_IA32_TSC, MSR_IA32_CR_PAT, MSR_VM_HSAVE_PA, - MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS + MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS, MSR_TSC_AUX, }; static unsigned num_msrs_to_save; @@ -4006,16 +4006,17 @@ /* * Even MSRs that are valid in the host may not be exposed - * to the guests in some cases. We could work around this - * in VMX with the generic MSR save/load machinery, but it - * is not really worthwhile since it will really only - * happen with nested virtualization. + * to the guests in some cases. */ switch (msrs_to_save[i]) { case MSR_IA32_BNDCFGS: if (!kvm_x86_ops->mpx_supported()) continue; break; + case MSR_TSC_AUX: + if (!kvm_x86_ops->rdtscp_supported()) + continue; + break; default: break; } @@ -5775,7 +5776,7 @@ goto out; } if (ops->disabled_by_bios()) { - printk(KERN_ERR "kvm: disabled by bios\n"); + printk(KERN_WARNING "kvm: disabled by bios\n"); r = -EOPNOTSUPP; goto out; } --- linux-4.4.0.orig/arch/x86/mm/tlb.c +++ linux-4.4.0/arch/x86/mm/tlb.c @@ -161,7 +161,10 @@ preempt_disable(); count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ALL); + + /* This is an implicit full barrier that synchronizes with switch_mm. */ local_flush_tlb(); + trace_tlb_flush(TLB_LOCAL_SHOOTDOWN, TLB_FLUSH_ALL); if (cpumask_any_but(mm_cpumask(mm), smp_processor_id()) < nr_cpu_ids) flush_tlb_others(mm_cpumask(mm), mm, 0UL, TLB_FLUSH_ALL); @@ -188,17 +191,29 @@ unsigned long base_pages_to_flush = TLB_FLUSH_ALL; preempt_disable(); - if (current->active_mm != mm) + if (current->active_mm != mm) { + /* Synchronize with switch_mm. */ + smp_mb(); + goto out; + } if (!current->mm) { leave_mm(smp_processor_id()); + + /* Synchronize with switch_mm. */ + smp_mb(); + goto out; } if ((end != TLB_FLUSH_ALL) && !(vmflag & VM_HUGETLB)) base_pages_to_flush = (end - start) >> PAGE_SHIFT; + /* + * Both branches below are implicit full barriers (MOV to CR or + * INVLPG) that synchronize with switch_mm. + */ if (base_pages_to_flush > tlb_single_page_flush_ceiling) { base_pages_to_flush = TLB_FLUSH_ALL; count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ALL); @@ -228,10 +243,18 @@ preempt_disable(); if (current->active_mm == mm) { - if (current->mm) + if (current->mm) { + /* + * Implicit full barrier (INVLPG) that synchronizes + * with switch_mm. + */ __flush_tlb_one(start); - else + } else { leave_mm(smp_processor_id()); + + /* Synchronize with switch_mm. */ + smp_mb(); + } } if (cpumask_any_but(mm_cpumask(mm), smp_processor_id()) < nr_cpu_ids) --- linux-4.4.0.orig/arch/x86/xen/suspend.c +++ linux-4.4.0/arch/x86/xen/suspend.c @@ -34,7 +34,8 @@ { #ifdef CONFIG_XEN_PVHVM int cpu; - xen_hvm_init_shared_info(); + if (!suspend_cancelled) + xen_hvm_init_shared_info(); xen_callback_vector(); xen_unplug_emulated_devices(); if (xen_feature(XENFEAT_hvm_safe_pvclock)) { --- linux-4.4.0.orig/block/bio-integrity.c +++ linux-4.4.0/block/bio-integrity.c @@ -66,7 +66,7 @@ } if (unlikely(!bip)) - return NULL; + return ERR_PTR(-ENOMEM); memset(bip, 0, sizeof(*bip)); @@ -89,7 +89,7 @@ return bip; err: mempool_free(bip, bs->bio_integrity_pool); - return NULL; + return ERR_PTR(-ENOMEM); } EXPORT_SYMBOL(bio_integrity_alloc); --- linux-4.4.0.orig/block/blk-core.c +++ linux-4.4.0/block/blk-core.c @@ -646,7 +646,7 @@ } EXPORT_SYMBOL(blk_alloc_queue); -int blk_queue_enter(struct request_queue *q, gfp_t gfp) +int blk_queue_enter(struct request_queue *q, bool nowait) { while (true) { int ret; @@ -654,7 +654,7 @@ if (percpu_ref_tryget_live(&q->q_usage_counter)) return 0; - if (!gfpflags_allow_blocking(gfp)) + if (nowait) return -EBUSY; ret = wait_event_interruptible(q->mq_freeze_wq, @@ -1292,7 +1292,9 @@ struct request *blk_get_request(struct request_queue *q, int rw, gfp_t gfp_mask) { if (q->mq_ops) - return blk_mq_alloc_request(q, rw, gfp_mask, false); + return blk_mq_alloc_request(q, rw, + (gfp_mask & __GFP_DIRECT_RECLAIM) ? + 0 : BLK_MQ_REQ_NOWAIT); else return blk_old_get_request(q, rw, gfp_mask); } @@ -2060,8 +2062,7 @@ do { struct request_queue *q = bdev_get_queue(bio->bi_bdev); - if (likely(blk_queue_enter(q, __GFP_DIRECT_RECLAIM) == 0)) { - + if (likely(blk_queue_enter(q, false) == 0)) { ret = q->make_request_fn(q, bio); blk_queue_exit(q); --- linux-4.4.0.orig/block/blk-mq-tag.c +++ linux-4.4.0/block/blk-mq-tag.c @@ -268,7 +268,7 @@ if (tag != -1) return tag; - if (!gfpflags_allow_blocking(data->gfp)) + if (data->flags & BLK_MQ_REQ_NOWAIT) return -1; bs = bt_wait_ptr(bt, hctx); @@ -303,7 +303,7 @@ data->ctx = blk_mq_get_ctx(data->q); data->hctx = data->q->mq_ops->map_queue(data->q, data->ctx->cpu); - if (data->reserved) { + if (data->flags & BLK_MQ_REQ_RESERVED) { bt = &data->hctx->tags->breserved_tags; } else { last_tag = &data->ctx->last_tag; @@ -349,10 +349,9 @@ unsigned int blk_mq_get_tag(struct blk_mq_alloc_data *data) { - if (!data->reserved) - return __blk_mq_get_tag(data); - - return __blk_mq_get_reserved_tag(data); + if (data->flags & BLK_MQ_REQ_RESERVED) + return __blk_mq_get_reserved_tag(data); + return __blk_mq_get_tag(data); } static struct bt_wait_state *bt_wake_ptr(struct blk_mq_bitmap_tags *bt) --- linux-4.4.0.orig/block/blk-mq.c +++ linux-4.4.0/block/blk-mq.c @@ -229,8 +229,8 @@ return NULL; } -struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp, - bool reserved) +struct request *blk_mq_alloc_request(struct request_queue *q, int rw, + unsigned int flags) { struct blk_mq_ctx *ctx; struct blk_mq_hw_ctx *hctx; @@ -238,24 +238,22 @@ struct blk_mq_alloc_data alloc_data; int ret; - ret = blk_queue_enter(q, gfp); + ret = blk_queue_enter(q, flags & BLK_MQ_REQ_NOWAIT); if (ret) return ERR_PTR(ret); ctx = blk_mq_get_ctx(q); hctx = q->mq_ops->map_queue(q, ctx->cpu); - blk_mq_set_alloc_data(&alloc_data, q, gfp & ~__GFP_DIRECT_RECLAIM, - reserved, ctx, hctx); + blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx); rq = __blk_mq_alloc_request(&alloc_data, rw); - if (!rq && (gfp & __GFP_DIRECT_RECLAIM)) { + if (!rq && !(flags & BLK_MQ_REQ_NOWAIT)) { __blk_mq_run_hw_queue(hctx); blk_mq_put_ctx(ctx); ctx = blk_mq_get_ctx(q); hctx = q->mq_ops->map_queue(q, ctx->cpu); - blk_mq_set_alloc_data(&alloc_data, q, gfp, reserved, ctx, - hctx); + blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx); rq = __blk_mq_alloc_request(&alloc_data, rw); ctx = alloc_data.ctx; } @@ -1175,8 +1173,7 @@ rw |= REQ_SYNC; trace_block_getrq(q, bio, rw); - blk_mq_set_alloc_data(&alloc_data, q, GFP_ATOMIC, false, ctx, - hctx); + blk_mq_set_alloc_data(&alloc_data, q, BLK_MQ_REQ_NOWAIT, ctx, hctx); rq = __blk_mq_alloc_request(&alloc_data, rw); if (unlikely(!rq)) { __blk_mq_run_hw_queue(hctx); @@ -1185,8 +1182,7 @@ ctx = blk_mq_get_ctx(q); hctx = q->mq_ops->map_queue(q, ctx->cpu); - blk_mq_set_alloc_data(&alloc_data, q, - __GFP_RECLAIM|__GFP_HIGH, false, ctx, hctx); + blk_mq_set_alloc_data(&alloc_data, q, 0, ctx, hctx); rq = __blk_mq_alloc_request(&alloc_data, rw); ctx = alloc_data.ctx; hctx = alloc_data.hctx; --- linux-4.4.0.orig/block/blk-mq.h +++ linux-4.4.0/block/blk-mq.h @@ -96,8 +96,7 @@ struct blk_mq_alloc_data { /* input parameter */ struct request_queue *q; - gfp_t gfp; - bool reserved; + unsigned int flags; /* input & output parameter */ struct blk_mq_ctx *ctx; @@ -105,13 +104,11 @@ }; static inline void blk_mq_set_alloc_data(struct blk_mq_alloc_data *data, - struct request_queue *q, gfp_t gfp, bool reserved, - struct blk_mq_ctx *ctx, - struct blk_mq_hw_ctx *hctx) + struct request_queue *q, unsigned int flags, + struct blk_mq_ctx *ctx, struct blk_mq_hw_ctx *hctx) { data->q = q; - data->gfp = gfp; - data->reserved = reserved; + data->flags = flags; data->ctx = ctx; data->hctx = hctx; } --- linux-4.4.0.orig/block/scsi_ioctl.c +++ linux-4.4.0/block/scsi_ioctl.c @@ -28,6 +28,9 @@ #include #include #include +#include +#include +#include #include #include @@ -705,8 +708,17 @@ case SG_GET_RESERVED_SIZE: case SG_SET_RESERVED_SIZE: case SG_EMULATED_HOST: + case BLKFLSBUF: + case BLKROSET: return 0; case CDROM_GET_CAPABILITY: + case CDROM_DRIVE_STATUS: + case FDGETPRM: + case RAID_VERSION: + case MTIOCGET: +#ifdef CONFIG_COMPAT + case 0x801c6d02: /* MTIOCGET32 */ +#endif /* Keep this until we remove the printk below. udev sends it * and we do not want to spam dmesg about it. CD-ROMs do * not have partitions, so we get here only for disks. --- linux-4.4.0.orig/crypto/hash_info.c +++ linux-4.4.0/crypto/hash_info.c @@ -31,6 +31,7 @@ [HASH_ALGO_TGR_128] = "tgr128", [HASH_ALGO_TGR_160] = "tgr160", [HASH_ALGO_TGR_192] = "tgr192", + [HASH_ALGO_SM3_256] = "sm3-256", }; EXPORT_SYMBOL_GPL(hash_algo_name); @@ -52,5 +53,6 @@ [HASH_ALGO_TGR_128] = TGR128_DIGEST_SIZE, [HASH_ALGO_TGR_160] = TGR160_DIGEST_SIZE, [HASH_ALGO_TGR_192] = TGR192_DIGEST_SIZE, + [HASH_ALGO_SM3_256] = SM3256_DIGEST_SIZE, }; EXPORT_SYMBOL_GPL(hash_digest_size); --- linux-4.4.0.orig/debian.master/NOTES +++ linux-4.4.0/debian.master/NOTES @@ -0,0 +1,4 @@ +eSCO patch removed. Replaced upstream with a disable_esco module parm. +airprime: Module gone, use option driver instead +AppArmor: Patch is all there and ported. Ooops when enabled, so default + off (still can be enabled apparmor=1) --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/abiname +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/abiname @@ -0,0 +1 @@ +5 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/generic @@ -0,0 +1,18710 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x6598ccd1 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x73892a61 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe4e6dc39 acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0xc3050617 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xb52d03b0 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7593d520 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xbaa45fc7 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x074936b7 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x20edef78 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x2682b84e paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x29cc801b pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x314fb712 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x57c91ecf pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x6ac19e78 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x6fdb42df pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbb5b582a pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc033ea7e pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xcf2eb5a2 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xe74e81fc pi_do_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x56003468 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x094f789a ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1d6d4257 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x39323936 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x47d73916 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x51182a76 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x0a3cf5a0 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2e13f932 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x3019ae4a st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xdea90461 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x12cdf55f xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x934d70ad xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xfc3aa272 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1a4e470f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6111f88b dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f1a4325 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f61ea6c dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf0f9908c dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfe044c2e dw_dma_cyclic_start +EXPORT_SYMBOL drivers/edac/edac_core 0xecd3349c edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a3dec26 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x114faedc fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1bb05c9a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1d41a43b fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2432e268 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d01fa13 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x428f65a6 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x59b30e26 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x603de2ff fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x66644e86 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6eeba461 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x84895a03 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ddae4cd fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x95c95a51 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9bcf2f21 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa12e1a29 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc44f7b3d fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc5b1f409 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcdbdc1e9 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd30f5d60 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde7feb52 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf6cded4 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdfbe8b47 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe5cc077f fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe66460a1 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7ac8535 fw_cancel_transaction +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x0dfa07f9 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x1058341d fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x112da57e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4ac49dae fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x519a3757 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x79ffe8c7 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xb508f672 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xbdb33a39 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc5ec666e fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xd1d5b212 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xf6aa64b2 fmc_device_unregister +EXPORT_SYMBOL drivers/gpu/drm/amd/amdkfd/amdkfd 0x77b7a9ba kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e87af6 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x019b7b2a drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0253ec0c drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x028097cf drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0430614a drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0433112f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06a34f8a drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a4a549 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091bee5c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09446c97 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a84a4a1 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b0990fe drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d42a6b1 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f4748 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x103889b1 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10d49d22 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10dd97e0 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11a015b4 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x129951c7 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14e43e5c drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1664a0cc drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x177f5c7c drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17db3776 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193693c9 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a53b4f1 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b2c5828 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c47bd4b drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fee8d05 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d8cafa drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x215ee4a3 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2195b14b drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21d284f7 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23d35205 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24a6c3c7 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2539836b drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25660dde drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x275af226 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27d253ed drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2884c934 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29badc9e drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aa4f148 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aaeeb32 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b7c2684 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cce3f9e drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d6f43c4 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dd7746d drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e556025 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fa87331 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x310b0356 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31adb219 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x326bc338 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x340f3789 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35333561 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x357497e0 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37d987c6 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3810cc6e drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x383afbe3 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39af706d drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a3ce3a8 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3af6d802 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e34f0c2 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ee6bfd6 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2f0010 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40386257 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4185fb12 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44019e0d drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x442dc08f drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4533af1e drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45a31315 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x467a7dee drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4779ad1d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4946945b drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497929b7 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a16f833 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a6850a0 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a73eb29 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ad4a13b drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c1c9d93 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d978caa drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e1007ac drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x516e7512 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51a2b430 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52e088b1 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5460da01 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x557bdbbe drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e4b9ac drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56d5cf13 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c70425 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5819fc17 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x599166ca drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e74e13c drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6216c178 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x625ad454 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x626eaac4 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62ea4a4e drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6483a3d4 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66289652 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6657575d drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6816de6d drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x681c0bc8 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68e4d1d3 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x696c0210 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a69ba00 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a8156dd drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b1ac73e drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d52d8b3 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d6d9725 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d7e49ee drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ee871a0 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fb0abb0 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7028c7c9 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7097c032 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70fff7e3 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7192a86f drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x720ee20a drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x728e5cc9 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x734a950f drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76726ab6 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76eaa7a8 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7702a47e drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78457098 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x789022f4 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x795877e2 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79d344fb drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b187115 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ccff72a drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e4ec39b drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f983d33 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81f67220 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82b9e8ff drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x835df9c9 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8445eee9 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84fb8d3f drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x868c53b8 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8718f97e drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x879642ac drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e91f8c drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89624c69 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x898e4da3 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d11b7f7 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e1e47eb drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e1e738b drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e4eb58e drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91df8b38 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92395560 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9248fa94 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x932f3025 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x934ca9b4 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x939c3a24 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93eade00 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x940999f7 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x954bab92 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f27220 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f76eca drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96c548fe drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96cb4f8e drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x988af0dc drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9898e95b drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98b43963 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a5c9c01 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a8a0235 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b60fb39 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c59913c drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c60d474 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9763a2 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cd26a3c drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ceb7e5c drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cf74a95 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa058ff8b drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa077e675 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0dbab21 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0e0858c drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1236c94 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa5c70f3 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabfc288c drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacc7e0ca drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacca57a7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad7b9f17 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf14e314 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf430b6b drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf8bebe2 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb043935e drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb30825dc drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3980f1f drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3c2a806 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb408aa70 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb48fc584 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb573f71e drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a261da drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a0192e drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb81004b0 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbacf4750 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb705c9a drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcaec9e2 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcbacc74 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbceed33c drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbceefeda drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfdb3732 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0bce7e5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc145b64e drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b0b39c drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c190a0 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3947525 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc464068e drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc60ebe2e drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc96f84e3 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaaa9fb0 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb35ce50 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb5804a9 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9106e4 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc1ee0f8 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc77b757 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdd1aa33 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf501333 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf8eecda drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfbd642f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1959973 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2c7f5e1 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4f9b978 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5152e34 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd523c084 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5fdb097 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd634bdf5 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7511df5 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9caecbf drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda0709d1 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac12094 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb0551ec drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbd7c9d5 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdca5ef76 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcd03dfd drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcf03200 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf37ea26 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfa11043 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a507b4 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe303fe63 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe34ebf2a drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4075c7e drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe485438a drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e9bf56 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe522d4ba drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe52ec610 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7273344 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8625a36 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9a17dd7 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec1d6677 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed57d935 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee3b616f drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef18279d drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf04e4dab drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf09f2234 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1711833 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1d7450b drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2215b71 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf22bb56f drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf24d5840 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf254f9a3 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf447f5a8 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf44af24f drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4811bad drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf49b6160 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5b76485 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf670144c drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf73f534e drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf77126d6 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7715c0b drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf79e78a4 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf811a8ce drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf81e44ba drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86f8097 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9129d86 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9df5023 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbba9b13 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf34871 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfec13a13 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff095b5f drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff2f0dfb drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff386e7a drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00fb988b drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07b45f80 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bf15cfd drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e60f0af drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ee71f16 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f6b404d drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x133ec896 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15c16cde drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18ef7e5b drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18fafd27 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1992a0c6 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b82355e drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1dd5ddae drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23071084 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24490c8e drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24a8b327 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x259a00b1 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25f95187 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26554dd1 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x292b0188 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29fe98fa drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b2c6fb5 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c7ef8b1 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cab2cb4 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d6cdb69 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36f20578 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b6a9aec drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c005c45 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4267d79a drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x485e9800 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49f51c30 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f3c2fa9 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51e2e5f9 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5276412f drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59e6e9e8 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ea176d7 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60102dd8 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60d1aad7 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6116c1d8 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6200cf81 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x622fad30 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x636cad4d drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63f78d4c drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6632dacf drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66574844 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68d07d4f drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69ee0411 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ca0af58 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7095cfab drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71c271d4 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x740b891d drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x745706fb drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75ffde75 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x765ef58e drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7802a929 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ac0e081 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e8fe55d drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f27a07c drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f2ea011 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f9f20d8 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fb8aa82 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80ec461a drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81f3f498 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x822eaa91 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x869e8a2c drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f1f744f drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f47ed48 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92671b34 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9364aa47 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x964f5842 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98b53205 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x998653aa drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ab2accb drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9af7f09c drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cf3743b drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa20a0435 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2c2c79a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2e4be1a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa34176c0 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8c79045 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9aa4895 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb07594a8 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb079ba54 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2786f20 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2f8dd5a drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8bf7e9f drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8c58f4d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba3e2aa2 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbabb4fab drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdcd8aee drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe770b4d __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbeb56118 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf074fc9 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc29d6d38 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc443126a drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb7915a7 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb922ca1 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xccb822b1 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce725740 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xceeed73f drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02baf91 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3633773 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee4e43 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda8be629 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdabd6ab4 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb29d74d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdeed2959 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2ffbde7 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4517b1a drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe485d8eb drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4af88fa drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe56bb168 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7ad8e68 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe837beec drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb47db40 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf01d5194 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf33fb4de __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf605d99b drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8378bf3 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf907cae0 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfad017f1 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb16bdaf drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb5399c3 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb69fbcb drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x010f38b0 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05886ef3 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0be2a5c1 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c31360d ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fa5c9ed ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1151e7fa ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c27b332 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f0c94d3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23dd7bfc ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2637ac4f ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a54ee18 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x417d217e ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a85a9f9 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4eba77a2 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4fef5caa ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x52184433 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56eab754 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59de95f4 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a75145e ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5fa18c1e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64c1a8e7 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65e8f7dd ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67bca9a0 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68fc534c ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fd71633 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72100fe3 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75630ff1 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75790932 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7816fe36 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79574173 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7f014bc2 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80b73526 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x873cefc1 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8863ddc2 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a7201a3 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90c9d05c ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99b5e34f ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bf36479 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2177c73 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa431e4a0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa76c5c14 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa84c4ec ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab1f1f2f ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4bc7892 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfad0395 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcce405eb ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2577718 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7576d0e ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdaf57ff4 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdde0c366 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed1680e1 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed66f7d1 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0583f07 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf341cb06 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfed2a939 ttm_mem_io_lock +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xd0d284a6 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xee92c0ab vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xf7989703 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x1415e57c sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x05fdc650 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x84eaba4d i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xda7d8c94 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x500a6a31 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x9f7878a3 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x2c5e4e1d amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x075d1243 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x096fa8d6 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x15220fbd mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1b6b1690 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x21a63189 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x38178916 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x44585801 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x51d4cb58 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6c629314 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x78974c31 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x84d442e5 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa64e1bf2 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb8da7491 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc291214d mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfd5b8d9e mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfebb10a1 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x555c3843 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x7e172a00 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x335c82b7 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xf9c90e5a iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x198a2577 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x83f847c5 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xaf69de8f iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xd1372798 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x04190ede hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6c865715 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa3e07355 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xab4dc58b hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb0933994 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc343c6d1 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x77cf3def hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x80878f39 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb6d180b4 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xdc3c0556 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x0ed73497 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1a520ce0 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x60951311 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x667416a2 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa27a997c ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa6fd57a9 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc2f93c74 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd5585033 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xf1593d36 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x29c94647 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x703b8740 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x94ac15b0 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9b0812a6 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xfe3f11c4 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x0defada0 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4390944e ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xd5ab27d7 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x03478b68 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x039a4ed9 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0713147f st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0ce5c177 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x14d0159a st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1b30dbcf st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x336e5556 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3631ca11 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4720d5e5 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x58ce80ef st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5abab72b st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x71314727 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x78356cc7 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x992ad2a8 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa2e26862 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbe760945 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x5f34f494 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x83e26192 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5d22fd2c st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xec358f87 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x067734b9 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2583d76b adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x08ca3c74 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x0d1d60a9 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x29d21490 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x30887a41 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x354fc984 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x3ac58fd7 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x5630dcff iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x5c3dfde2 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x610bed63 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x6a7e12e6 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x6e717f1a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x8f849fa4 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x9460e72a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xa917448f iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdd4c1857 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe096eeb3 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xf99bf482 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x315fdf69 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xc18116c4 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x2464a204 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xdb5efe1e st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xf7293fb5 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xb6887a09 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc95e7288 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x65322679 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d427e10 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xbdfe73ea rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xfb1d0e51 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x012dbf68 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x097fa4a7 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0a87320a ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2ca3e1a0 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3357a50c ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x42d27f1f ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x49e52d73 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x555b1ace cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5f56347e ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6a5cde1f ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x826cf073 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x85143655 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x94cd1221 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x97af733c ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc5ff7934 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcdb5eccc ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd61628a1 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf104cf3a ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00529440 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x019fec2b ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x025f299d ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0bd13add ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fc93c52 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x103b3f3c rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11632bbc ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1317690e ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14edf37a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18ee6689 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f581aed ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x243af092 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c49f33b ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c946659 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cf90f6d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f3c6877 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ffcf2fe ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30528e9a ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33bbecca ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3abe36d9 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3cd605e3 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x484bf32f ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x492e1a0a ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b525f5a ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dc1e61d ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f592726 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50ec70b6 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56da7332 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c2db85e ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f257a47 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f810dd3 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x624ab508 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x636e145b ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63760183 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x658c2eee ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66325cca ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67124b1c ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d5492d1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70076e86 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74e17ccd ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74ec3d04 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x763c3942 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77c7e35b ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78c7515a ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bbf9de0 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82938282 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88392bc9 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ff7fb70 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94891ab8 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96968f58 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96991da9 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99c4229d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a2f3a58 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cc143c7 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ee0ede0 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0ac5e69 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0f7ff80 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1e34c90 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa689729f ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad0c2585 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae88695a ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6cf334e ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8a28664 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9b3f212 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcc7f0bc ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2b1d5e3 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc376aa9c ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7f1b323 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8482d53 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8fe3ca1 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb74da96 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcff747a9 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1553855 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd389c151 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd794480d ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2b5373a ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4bac54c ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe504365f ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb518e8f ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefc84459 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3091191 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3fc7864 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfceb6407 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x03e3056e ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1016985b ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x12a99bb3 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1a1e3f52 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x20c504e3 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x30a13fb3 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4ee54d43 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x54c9eb43 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5a4bc0b2 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x60d2e31a ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93603c2e ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa9ed20cc ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb83888aa ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0e42b2ca ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3852ca1f ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6a329a9e ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6ea9190e ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7a149adf ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7e294e63 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x94cd9939 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x993efa47 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xef2fc5df ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0e437d5f ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdcabe5a1 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1017b261 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2087fc71 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x667c5ad8 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6f0aefce iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7467c472 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x75f7061f iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7bd61b3e iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x80e69b97 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x83afba64 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8714080c iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb5c6c730 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb7a419ba iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd7e40471 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdcdd4c7c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeecaff9b iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x105d83f7 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13fae448 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1412d907 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19fed318 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1b760b7f rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2e922d9a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2fed11c9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2ffe862b rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x31c518b3 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e962890 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4fe91742 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x57eadb03 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5f257d6a rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6940f693 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x75e39a08 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x859c8fc0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa31d6f17 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xccff77c1 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe3ae5e6d rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf217c320 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfc0c6a28 rdma_get_service_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x090dba33 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1652cb4b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x184e9e34 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41a3a8a0 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4b94edfc gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x656f081b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x85a54348 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8da9e209 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcafcdcf2 gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x02d1b635 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b737e3c input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x58f7d0c3 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x6b8d414d input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8b1c442b devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x38f86780 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x08925d39 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x2688e89c ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7f5cc9d9 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xf2c18e37 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0cd19d50 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x73764019 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x981cacf9 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9b18a10a sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xad94e91b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe6d9ec02 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x368e4ddc ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xefdf13fd ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x1643db74 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x196cf011 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x21717c15 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x5a912c42 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x7e93c647 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x9b78df4b amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2614f650 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x284ef1a1 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x293d219a capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3bcf8f0c capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x54aac528 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f2a152b attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa5a87d45 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc1e1d21e detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc3daf910 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcd80a4e1 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x56bac7d8 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5848df87 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x64625706 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x77be599d b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x82ebb498 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x93a1aed6 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x95bbef0b b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9a334983 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9d2ed897 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa1333ee3 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc65b3165 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdc949102 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdd2eefbc b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe0637e9a b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xee97beaa b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1431087e b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2160891e t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x31709e56 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x716800b0 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa0c1a12d b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd2fc31a0 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd766af59 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe3eedc14 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfa342ddd b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x22f234b0 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa90591fb mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa93ef63e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf557b4ef mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x265d92a4 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x488c3a7c mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x31991146 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x05586f8f isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x70b80aff isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x745b7bc6 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xca74dc24 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe6bfb09d isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x20e58a54 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x41b34197 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x689ed87d isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0a123175 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0c3bd513 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0c555ac3 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x15a90aba mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1a1b79ee recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x213274ec bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2e05b4bd mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45c373a6 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6a864e2d mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x93f8f5cf bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa010289d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb7a462d7 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc6c3c471 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcbe4b840 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd02292d3 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd466dec7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe25ffef3 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe57d82fd mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xed24a829 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf1e56c7c create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf3159c22 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf4498ed9 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6c79e1d mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8f8fc624 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x94c83dcc closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa32f9fb1 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xcca07726 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd97c32a1 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf20de1b closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x3d578013 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x9f905637 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xb10297a9 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe3d11086 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x36e1edb3 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x439a3b9d dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc104674a dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc2f904ed dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdb591390 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfac4d53e dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x25592b1e raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x06b6fefa flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x17eaf85f flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1bcbe0ff flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x35b4c353 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x41876198 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5cfb9383 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x656fd6c7 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xda3bbbf8 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdc51f8dc flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe13b1b85 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf00e897b flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf49cc296 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xff235b6a flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x623819d2 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8ea47afe cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xae6695c4 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xfde2412d cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x672e79c9 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x150a8eba tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x3fa3eabe tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x05410319 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c0ecf2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d3c856a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12f5425e dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14fdf0ee dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ed70b58 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3405dbfc dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x390b3bde dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x453abde4 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x55815d0b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x56b4f5a4 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x586de1e8 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5bb0afd1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6560e532 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6b3e4cd0 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6c52da34 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x724f6147 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7357c03a dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcbbafd dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8c3e87ea dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8f48d311 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x93636a4e dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x940f1f70 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98ce31b6 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9b48853e dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa12edf75 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac97bf3b dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc27c16d1 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc437ccaf dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8a17038 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8988b7b dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdbeecd7e dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdcd655ce dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2068fc8 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe897533d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe9d1abc1 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeaf47cb5 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x09529b60 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x699e2b64 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xb5872076 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x14c5173b au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x24106a60 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2759de4a au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2b960ba0 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6c64534a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x95cd92ab au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd1a81b82 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf167b4b2 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf43cf4dd au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x2347d3b0 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x8e8c4892 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x692c20d2 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xb0232462 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xa6b5ec0e cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x4e8401aa cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xa4ea40cb cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x288b2b49 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x87127500 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x1fafb70f cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5d61d6fe cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xbbb5a8af cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x26aebf1a cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x34fc8c02 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xccedd5ae cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x114c1cd2 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x42036112 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x56f6b544 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x697979e9 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe0e993d6 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x13655ebc dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1c8670b2 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2c2ab754 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x36cdee79 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x63ff3fe3 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6d9b5d0c dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x80c3a0fd dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x905d582a dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x91cef75b dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa4fa3b60 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xabafb760 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcd60cd2c dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe57d0af1 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfb32baba dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfc913a26 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x4412746c dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x05e8ef7b dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0795884d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x083a6797 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x855c202d dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xebc9a778 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfaf2b663 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0817f973 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x210ea8ad dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9dadbbdb dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xbd9afaa7 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf7e4a650 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x589fa576 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x6ad892eb dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8278a6a4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad1e4213 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xeb772bc5 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfcbbe29e dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x55b9c187 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xa4f23147 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x2c7f7e77 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x99070d5d ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xef90f055 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xd5df6463 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x510c021d horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x4f130df0 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xe3b7524c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x110ee337 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x833b7028 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x3317ee43 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x5611835a l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x512ec1d4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x418e3336 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xf8488d18 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x043e09be lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x6bb6b74c lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xa62aa1f4 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xa04777bb lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xbb60a960 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xe8750fcb lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x26151e78 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x5e957c86 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xed66bf22 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x1f2a968b mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xa51200bf mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xd87c0d4f mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x068fd228 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xc0510961 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x755a52a1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x7b8ff954 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x9d8f30fb or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xb13ed572 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x33a0db23 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x46222652 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xe0617bbd s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe78d0093 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x09d5b1d1 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x0f7446bd si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xa6f8241e sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xf54de6df sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xf597d82a stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x9ff27967 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x6c1eb838 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x4ca017ee stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x5063e632 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x4099a413 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7cc04e29 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7f997633 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xae50fa23 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x949de629 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x30e8e2fb stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xb63900b8 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x94e7b66f tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xc70698a5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xec3a9464 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x5358e7b2 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x674d4fda tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xbdf784d0 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x180fd4db tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x0496208e tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x050ff28f tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x29de121c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x2f842a34 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x5438e4a6 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x3e4b638d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xa4ebc048 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xbd5104dd zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x660c46eb zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x04fd2d00 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x219cf486 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2722468c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2fee77cf flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x51ffbc68 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x886f6f74 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa42ff588 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc2e07a01 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x32536f78 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x50a5dd8b bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5c7021df bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa426ad61 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x1ba47966 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x224e9404 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x59e3eb46 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0cc36313 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x31b23a52 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3eb59af4 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7128258b dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8b9d15af rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xad3d8d72 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbf81a268 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xefb63be8 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf0ffe9c2 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xf7f10e42 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9b021b73 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xacf222cd cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc24ffa50 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xebd466e9 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf63a781e cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xf29d016b altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x172a17ca cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x228afd6a cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x560eb30d cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x75e0b1c2 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x96453318 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9e1cae3c cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf3e4f201 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x52e3d530 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x95c60166 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1feb3b97 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5726a1ec cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb01f12b5 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc042551b cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0f138dc3 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1f3ba060 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xaf5ab37b cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xceb27a17 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd4ddde13 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe7a3a153 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfdbb8ca3 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x08b9e4ba cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x112d5719 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x24669a56 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3e89527f cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3f70ada0 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4a6a3146 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4d485d9f cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x52160592 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66c1480b cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66f9bafa cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x720e21a2 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x843fae79 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x908a4692 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9799bdca cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9a080534 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xabbcbdd3 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaee2544e cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb31fd9fb cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb51653f2 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf64e6173 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x06bcb1dc ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0d9dcdc8 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0f5e4c5e ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0feb92de ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x314dfc2f ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x46006310 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6321f7a3 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x85ff839a ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x91993915 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa1b78072 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa8ff2643 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb4ece351 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb65fb5ab ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xba1ea5f7 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd51370e8 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xef37dca6 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfca01c42 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0ef3d9ef saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x288234f6 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x28a14706 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x460b98b5 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x50d3c62e saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5e516055 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x94ee4be9 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa4e1de37 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xaa9a0cb9 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbf5bd87b saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc1f53ab0 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcc45ad1f saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x19629348 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x0648dc25 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xac5b7762 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xdf0a8843 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xfb87eda0 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x15188030 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x29e54ee2 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2d0a5efe soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x44dc67f7 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6d2ebb88 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x70a89696 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7472037b soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x03d2c29a snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x36e4a5f8 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4c773403 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6fbe86c1 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x828c84b4 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc465f691 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe11c5cad snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0e75f4a7 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1650ccdf lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x20ce7bce lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x68e7e8b7 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x986c7925 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcde0d996 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8fedbba lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf52d419a lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0f4ac04c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3ff86e18 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x5522f6ec fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xabe3c2be fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0903a63d fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x80e28bc1 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x832a3dd9 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x61f2557f max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x1561f370 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x16ed3ad5 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x2ea58df0 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x24cf665e mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x1f82c7df mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x5d606574 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xa1cdfa62 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xc54bc974 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x0f1a850d xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4887a164 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x470a82fc cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x471bf175 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x14f6336f dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x413cd740 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8890b922 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb204a424 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xba260ced dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc84ff582 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc8cb2703 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xce905425 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf7bf42fc dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1020c97e dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x26d218b0 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4066d137 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4068c72a dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb5bf45b3 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdd2f26e8 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe0642bc6 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x23e14ecb af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x04a0d8d9 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x21fb9a6e dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x30e9d09a dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x780c4f33 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7c2c8fab dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7e43759c dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa0d3eade dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd29dafb3 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd406b018 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe0ca72ac dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfc614466 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x62ea76b5 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xcb3d1fd8 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1d692718 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7165c04a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7ff16913 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x81dde663 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x82e10433 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa9518922 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb988da4d go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbbe2aa19 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe3101d1e go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0188b90e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x094dc025 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2aa9b733 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4f6f6d21 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8486a481 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9ff73552 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xee5a19c9 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf6e76549 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x6cd99d80 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9d44513c tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xbc3e1bfe tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x5ada036d ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x711d02a7 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc5f8e5c3 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xd0ea1ba2 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xf6f77df4 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2c54a441 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x349763c6 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x42ff327e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x88782c38 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9423f9d9 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xcb44e7d7 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x2651becf vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x89d72ea7 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x156e4778 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x53913404 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7c0e0619 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xaf207bcd vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xcbd5207e vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe7dc1e8a vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x2aff98f8 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05e9d443 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07272208 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f65d66d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x148d7943 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b0d16a5 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1bc1c16e v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f2e221d __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x267b0fe3 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2735dfc8 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28cc4079 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2db43c58 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f819422 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b34e1b4 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c2ec1b5 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40f07ae4 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41328f1f __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43fb97cc v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4570fce2 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46fc5e26 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61fa4c2b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6234529d v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6258aebe v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6beda9da video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c96044d video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e10bfe7 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ffea3d6 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77a1650a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78ba6a4c v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79e9c9de v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a7b1254 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e6b4057 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82e9c236 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8354b4d1 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83e3c6b9 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x869401ed v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8934cbea v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x976df308 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x998bf408 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d70335a v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e67de70 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4a45e68 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa632f134 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7817900 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9ec9c74 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb05c00e0 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb70a2f4c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9a3141f v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb86bf22 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbe43910 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbfa42d89 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbffdef45 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc580e79a v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccf9eaf3 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1333357 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6941544 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd86f2fff v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde2cf346 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe33d3e3b v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9411bf9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9c52452 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec15367d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeeae7172 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf207608c v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2342d00 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2827b49 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2960d36 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6830074 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff09dd79 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/memstick/core/memstick 0x24b36d80 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2d9406bc memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8ea1aeab memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9bc0e050 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9cb5ea8a memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5b664ff memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8182793 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc9b956a4 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe5257744 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe8d5a7ba memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xea2938d4 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf1071880 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x186b4917 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x191ce86d mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a2bf9c7 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x23d6c14d mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x24df2030 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2a1ccfac mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2a6d33f2 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b1e3f8a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45f2d238 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x59f44c88 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b9fb542 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69b37e2b mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69fe5c16 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6b9cf39d mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7677b791 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7add469d mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c95a7b3 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e287f92 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8522dab0 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9186928c mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x98cc3f57 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbedea1bc mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc09c70dd mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd1b86c89 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd8a834cc mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe17b0f9d mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf3ed4432 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf7391390 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfce1f88d mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x01487d96 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2588aefa mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29b068a0 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2efa7437 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2fac3bff mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x35e60872 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x39ef3f33 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3cdec3d3 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d806b5a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3ee778e7 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6d0d6ee2 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7edf56e0 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8133ff9e mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x85f3b1aa mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88d8cae7 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e3ae179 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f99279e mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9e62d378 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa59f7c83 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa7e10c88 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb21cc2f6 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb9fb216c mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbc824e80 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcd8129f4 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd3b60e9b mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8372758 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfabb293a mptscsih_event_process +EXPORT_SYMBOL drivers/mfd/cros_ec 0x744307d1 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8a34db53 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8c3b0b5b cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe8ffe6dd cros_ec_resume +EXPORT_SYMBOL drivers/mfd/dln2 0x2f1ef486 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x3095c87f dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xcd41bc83 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7733282d pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfda7db0e pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x019136cb mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x03252df8 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1371daea mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x241589df mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x316885a5 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52a60b8a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6207b1d9 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9458dbb5 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4092218 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcaa6b50e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd7916754 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x7e1b34a3 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xe47f238c wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x51cd57da wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x63f7ec43 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xc9959d65 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xfc95ee6e wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xc2795c31 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xfbb89dda ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x13090222 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xd2e9ebde c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xfb906ae9 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x98a8733c ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa3e59d4e ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x5eddbbc9 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xdd1b8214 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x158e5a79 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x2b8b6bab tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x34b1b9a9 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x374c8cd7 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x40024d82 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x435395b7 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x57d3ea60 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ae1e7c2 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa35eadd6 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9abd485 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9b18fa3 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd70273e9 tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x56e3971a mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0eba682d cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x22b1a86c cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x25fa3e7f cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x539ebf51 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaa14dad6 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf5c247d0 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf958300e cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2be8cf8b unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3b572cc2 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7d860220 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xeb4041a0 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xe85ba80b mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x07d9b5b0 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x411ee5f0 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x77d15a54 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf69b68d0 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x0f564656 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x34eb8e22 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8c51c6de nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbdda9ecc nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc5d446a8 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdc08b054 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf377a992 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfc19affc nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3bf08176 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5d6d74ee nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8e2cd17d nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x52f95d26 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xbcf94494 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1a2a9276 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x275ea96c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5174a9ae onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa81e2e5d onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1f6ededc arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x493a1b70 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x67d28de0 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6c47309c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc0be95b2 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdfe72c51 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe6fa733c alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xed3b1496 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf3ed51ed arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf6145b0d arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x592dd889 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xee3fde01 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xfd8b4550 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x07f678fc ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1be4d405 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2715aee1 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x703b1a7f ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7431b4cc NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc1c61da0 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xceeaa2c1 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcf77086f ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf24025b7 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfa7dc7ed __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x0f9ed9df bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x96d5758d cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x40b900af dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4289d4e6 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e0358aa cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x589a7672 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68ec8d95 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x87b737bc t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x88a66f23 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2566a24 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd7ba4fa9 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd8c2cb01 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdf38c6a7 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeef42a30 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf6489dbb cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf6815f46 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfc71c6df cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xffd7bee7 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0459e3c6 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0afd5e7d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f0e77f3 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x177254ba cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22a97b3c cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x26052daf cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x294dd362 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2b342a00 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2c908c87 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x30f2d8ab cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3273364c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x347e9ceb cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35d51ca9 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x361c1714 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3addd6f9 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4a429a22 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c9d748e cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57707dfc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e7d6820 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7cdfd974 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7d6826e7 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x91e83480 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa189ba69 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8c2cd9c cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac827120 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaed9933b cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb026b342 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb778d16f cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd058bf3b cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdbc1dd73 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe4db4c97 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedad6185 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf8978891 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe333f6e cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8461e011 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xbd170b2c vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc5460816 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xda6502a6 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe08b0ef9 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xef3e26de vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xc5e9064e be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xf2c83a41 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01beac66 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01e3430c get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05d934ba mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c25da42 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c33e455 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1026cf5c mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1df573bb mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20953a18 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x225205df mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22e3ac3e set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cd1f006 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x435a27f3 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x467990bd mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x470231a6 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4cfd2a38 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a0cdff7 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ef6b6dc mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x601597a0 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d66c1d9 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82e0a2de mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91925182 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94015994 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c2ff7e4 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa76f2c81 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadf425ef set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1d4b616 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2fb68af mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc62f8528 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd24bfc9e mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd547a854 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd67b8da3 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xded56d79 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9fb2d50 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea9c3216 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec799ffa mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeda54b54 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf29b4f73 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb18314d mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b52d307 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ba58a8c mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cecb98e mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10369196 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29f5cbaf mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34ffac4d mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3be8f012 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fdee495 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4236b0ed mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4daaec11 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54f59852 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d3ba24c mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d552275 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e60a317 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61355d09 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80ba2d8b mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9421f83f mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9bd053ea mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f27f708 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f8578b6 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3e648c9 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa798539c mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaee92444 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb72475ce mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb56363a mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3fbc53e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc65c799c mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc78c21f1 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8a4d421 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd17786e7 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8ee9c23 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe03aa7c7 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5179681 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6b6cd62 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe868bd91 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8c9d87e mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf55a1b22 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6f81897 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07cacc90 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e46298b mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15ffafbb mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x488e3ab2 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x90aa2722 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9b04e929 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e1983a5 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x03381156 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1c7d0fc2 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2965dbd8 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5f12996b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8c73c40d hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xbbca6ef2 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1169702f sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1ebee1a9 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x22baf8a2 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x35753b38 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4e16cdb1 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7b737a5c sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x99ebef8a sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb901c4bb sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdb26e699 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe27a8753 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x20420033 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x3dd4587d mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x40f9ebb6 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x5e391d96 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x6cd2676e mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x87c30828 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xb9ca7d8b mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xc6571928 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x85a38767 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x93757f6d alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xc7969985 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x18c7dc69 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x45282179 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x525c2194 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xd50d5c9d sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0e3a39d5 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x33e287db team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x52f84c55 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x6b8ec465 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x6f0b9674 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x7a4a6fa5 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xb63c6d2c team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xdf7b14e5 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x1738bd61 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xafaeedd9 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xcff706b3 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf5e91c86 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x09ed45c8 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0fea8447 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x373a9537 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3dfa1b2d unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4def3e72 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x625c882a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6891993a attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb1027bab register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd6d28252 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd8d9a000 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe6c2976f hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xd807f677 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0xad627d7a reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xd2cae41e init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf77c514f stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x13c7df70 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x15d4e4b6 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x438bfaf8 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x509adc39 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5c0da2f4 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x840f55a2 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x84381be2 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8e825195 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xae6db864 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc14edadb ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc329cf58 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xde2df3ce ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2f3b09f8 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x337fb0b9 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5291cf69 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5afdfab1 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x621b13e0 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x755ec293 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8bdbf0be ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x94d706bd ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9a52e5ea ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa1967ac6 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb2e5aecd ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbca69153 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd43799f1 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf1506392 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfbfd2336 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x03c5e4d9 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x34242de7 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x412a6eba ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x49f63404 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x70bc5a7b ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8d11baad ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa312b3a0 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa648d0e1 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbbf37a40 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc89e8d9f ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe373b093 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0c8d5d98 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1bb85b76 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x23efafa2 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x34abb666 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3fffb4bf ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x44d9e9d4 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4ad2be12 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b035f1f ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5bf11620 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x658995f1 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x673f6bca ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7333d62f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x76c444c8 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x78fdcf3f ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7e02ee65 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x82643cb9 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x869fd84f ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9ea6097b ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xac525f6b ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc425d026 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdab9cf50 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xec085771 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfc31da4a ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x019bae1d ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02639c63 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07441b59 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x087dd5a2 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09b3d114 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09b81c28 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x10489838 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11f4d9ab ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13432e4b ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15ae7bc6 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16a157ca ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16b8a24f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x171fd6ba ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bd3323b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e3ff2cb ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f077b04 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23f127db ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24b79063 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d4edac8 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d965240 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ddb4000 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ef3dd64 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33910141 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34f1d14b ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37a4343d ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37ccb147 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3994c8fe ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e00d901 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49b32a0e ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49e264ac ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49e43206 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a3ab05d ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b2aedca ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b6641bc ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c390493 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52a9ea3c ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54ac472a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x558e3bc9 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5758ece9 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x577bab2c ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aab09b5 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cfd7327 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e57189a ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x605ee5ea ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x607fdc4d ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x643fc915 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6aa71633 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c9282e0 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f3ded48 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72595689 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x727d15ab ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72be93cb ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72f0de4f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77d306d9 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78631f03 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f24832d ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82a96774 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x847e3e2a ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85dc8cf9 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cbcbee4 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d228948 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e238e47 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x904fe19a ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90f05f66 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96a07a4a ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99d2859f ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ab52c64 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cf26077 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee935ae ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa06ca5a5 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1a795f4 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaca08307 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf1e9402 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb21ac973 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb39ecc9c ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7a4d720 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9a14fb7 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0216430 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0b649b7 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0e01c5a ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc0e0673 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf481de8 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf852567 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfaa4520 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0f39289 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7ca574c ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd830f28a ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdad9328e ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc32368e ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdca0b632 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde5b209f ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf3154fd ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe12050eb ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2a204d9 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe67522de ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8228a2a ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef8bc0b3 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef94822e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf19a77f3 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf70e3ada ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7772af5 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf78c8c55 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa18a8a2 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfba44e54 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x936ab3e1 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xce69ad47 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xef40bc91 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x06180067 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x093a332c brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x234cd881 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2c314053 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3b046f94 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x850b1542 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x98aaf2bd brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa2af4e9e brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xad37858f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb7aa4022 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe2cbb645 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe42a7bcc brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf88f6f76 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2a8855c0 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30d95381 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47dfc818 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4aa3e343 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5268e88f hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5c0abcf2 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5fdd0ef2 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x67b018aa hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x702ddd76 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x742cc9c1 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c9674ef hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7f0a09b7 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x803a1ee7 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x81bdcb1c hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8239937f hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8456748c hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2960f6a hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc081db76 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcbc19f7e hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd065761e hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe09fa122 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe337b96e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe9863d97 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf13f0582 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfdeeb9fd hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0a8ce786 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c9b16a0 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x278bfe5a libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4001aee7 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x51708ab3 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x52051e4c libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x537e4fb1 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5ec17883 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x679880ec libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x679b5814 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6e39f873 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x893ebcd4 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a7ed232 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa18092df libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbd732119 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc7151ea7 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc7237b57 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe0f8b20e libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe8470fd9 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf48f8076 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xff777c03 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x015e7032 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x018868cc il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x086df1f9 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09e80265 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c3a8454 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cba97c4 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19da1269 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c9f0142 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x201b1856 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24b14461 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x260b8ac0 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26dbbae6 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27073adf il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2780adf8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28790720 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a09cc28 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a49814c il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d8f389e il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30cc57da il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x313d83f5 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32ca0e9c il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3816ac52 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38f85d76 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x395f96f4 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f16a3c0 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40d1547d il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x423c5efa il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45956675 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x472a9325 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x476bf612 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4eaa61ee il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4fc76c11 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52eb1aa7 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53633627 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x537ec687 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62fc293d il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64da1919 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6952cb4a _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b0de0e3 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b60dff8 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cde2d43 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f2c152c il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ff87c5a il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73c82fdf il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7927eafa il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x817c54f3 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8633bd60 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x87e0f9d9 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89284df4 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x906a28dd il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9273db47 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9330bafd il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x945fd088 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95ba9846 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9779b6d0 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98fbd966 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99212b99 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b4f67a6 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9de10913 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fabe164 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa290b3f3 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3c67fc5 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3d0f753 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa562ef4e il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab62e2e5 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab90277c il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xacd1c7fe il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaedd6edf il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1818ca7 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb287df8b il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3e3eb07 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba7148f5 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd0d07c3 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf19d937 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc22c92b1 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6990f4c il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6d953a8 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6e303f5 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7c9f0c5 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcaebc0eb il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1ec6567 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd320ee12 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4b64072 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd56adb43 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd664c5a8 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc155649 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe09401dd il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe279535b il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe368a01a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3ae65c8 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe62620dc il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6aecaaa il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6c23685 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef84892d il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf43cd683 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6a78cec il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7ee2c0a il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdfabe3e _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3c9629bb alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4fac7ee7 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5aaa9c4c __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x60e9b9e6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x80fc30ee orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9444bfc2 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa9378614 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc363642d orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcf6ebbe8 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd2b59f6a orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd2f74b82 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe0012394 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe8d56b36 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfc6372b4 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfdaef932 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffd8ba8d orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0xa3ee3880 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x01b212b1 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0502c299 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0e20eb65 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x11c44dec rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1f3e8597 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x20de53f3 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2478fd86 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ac38bd1 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ff77ce5 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x33712d4e rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4048397f rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x463e0b77 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x488bde1a rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x488d727a _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4e18b945 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4fa3ccdb rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x53da9528 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61dcd4de rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7da6fd9a rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x827ab328 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8c0a3cff rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9650c293 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9ab17d21 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9cb9641b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa39e4b35 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa8e6baad rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb6b1d9a1 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc184548a _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc1e71402 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc5b06bc2 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc61792e1 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcb57b338 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdb176169 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe2712214 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe48e441c _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xec0841f0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf199c52a rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf5f1d78b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf7a7d7c2 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf7b55905 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfe86186d rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x552dfdc8 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x8de98bc3 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x958dd37e rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xbdcf20f7 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x0a7f5297 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x2cfdd9cf rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4a497dab rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x59e9e13e rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x013eac43 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x028819ec rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02e0f1e5 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0bf217a0 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x12da18b5 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x144780e8 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1addac78 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3474885b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x40d4bf1b rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4664c93f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4c36aefc rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5f55408e rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x67312ebf rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6ef05c3d rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6f897f3c efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7215b75b efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x851a4273 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x90942fbb rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa8b526fe rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa9002ba0 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaa3e6a10 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc27adb81 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xce6babe0 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd20dc633 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xddad233d rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe3f2d947 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe7a04fa7 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe9bbbd8d rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xea80b61f rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec651bd9 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x050a0578 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x74138e48 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa4793e88 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb8042829 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x210f6091 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x21faac0a fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x91d91e73 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x27ca307a microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9e15bee3 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x10bcd686 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1eb23392 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x221daf96 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x7903670a pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xabd5f1c9 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x1ba5d92c s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x6aa99253 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xcf40ea26 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0ae64909 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1b289a39 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2399fd92 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x341cda8c ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x36bc799b st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5586dedc st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8b4263d2 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc721a656 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe2130278 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xecc76c21 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfa01d12d ndlc_send +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x06f3ebbd st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0ed8e99c st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bb1b9db st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1e70b250 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2de12be2 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3cd7e2ff st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4b48e9dd st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x516bec92 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5e469e1b st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x72e9356a st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x85bd24a7 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x97b23690 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xad1a5dbd st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb996b986 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe4ce7db0 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xed563638 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf0ed6128 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfc5d1fc7 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x156c6cd9 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x1a269338 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x3a6d321d ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x51a13914 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x5bf53b36 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xa162b01b ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xd06f567a ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xda477297 __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x62d1155b nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x6894719c nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x5f9b953c devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x059675e9 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x12f6711d parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x148b06d6 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x30c35b5f parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x32bcf175 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x3bf9efce parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x42e048f5 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x448319ff parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4cead2a3 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x50f56c31 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x55f1226b parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x591e3f0c parport_release +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5feda379 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x61f3049f parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x7fd219c9 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x9218101a parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x9736b395 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x98a3e089 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x9e392326 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa41de71b parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xb127a85e parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb21f80cb parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xba0472b3 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xc4fa7b7c parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xcb070f0c parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xcd47baf2 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xd3efb061 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xd8fbd4aa parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xe7bb6c9e parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xee461b3e parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xeea96ed0 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf3a68e06 parport_find_number +EXPORT_SYMBOL drivers/parport/parport_pc 0x63ca23b9 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf9389481 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x02bbedfe pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f0f7c88 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x11db749d pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1c839848 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1ea22ea9 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x26f6d769 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2ba6dea0 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3637078f pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36ef1920 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ee60296 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x856a0b8f pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8ac9cd26 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8d03f00a pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8e20d998 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x92cb2115 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x97562d8c pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xae6bd19a pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd769f642 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeed13b3f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1fdeabfb pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4ba787db pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5de865fd pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x677db51f pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6a5c0908 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x835e297d pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9ecbf9bf pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaf86f523 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd4d4fbe3 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdb3dd1bf pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe4a67124 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x89a95f3e pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xcce6f550 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x06ab02ca pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x658be397 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xaf974a5b pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb0a1931e pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x0951141b ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x3b4e3998 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x4ae7da3e ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x4bb50cef ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x9073c238 ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x03f1bf31 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1c85f36c rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x281f7d03 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x28db3240 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2f4fabec rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x534c05f6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x54d7298c rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5f547f03 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe7d77ccc rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfa5406bd rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xdbb21c32 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x3bb7b9ac scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x92468d30 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x98f2e057 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xa17d1838 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02b26d46 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0815261c fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x15bf939b fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3f7e8df0 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x40e4eadc fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5bba7991 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6c520038 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x750b3ea7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x887eafe7 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9f0da615 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa8ab7678 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbceadf19 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x01f26b0b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06674682 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07593ca7 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0bf7e46f fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x149b68b6 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37febed5 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42fe3652 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x459edc0b fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4676f46f fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4840f7fb fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x49d166d4 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d08e589 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53583f67 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56cef38c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x655b5b29 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x680121c6 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68acd241 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6eca4c95 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ffa5ee6 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72efe021 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x746e3d19 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79ac074e fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8424aee6 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bc7ef29 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e13758a fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9029926e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96cb8323 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9acd2e75 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f24f81d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa33e8b64 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae32f22c fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf01ef4b fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3b43485 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfce7735 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdad76646 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6ed530a fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf065c994 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0a9252a fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf43e5f76 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8a42411 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8ac1920 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfcd0c5bf fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe307e6c fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1ac17477 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x49dc3490 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x850b8e23 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x9373dcb1 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x18c5ff32 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0037a227 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x028e1549 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x02f8a164 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x064525ec osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1779ba45 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17e530d8 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2f25a669 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33d30b01 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x357ff53d osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b0010fc osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ed438d0 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x484b1066 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f438d27 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x50d96a22 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x532d37f7 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55276fb9 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61b1230e osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x650bbb43 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x685eab77 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6a95742c osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6dda0a7b osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7038d59d osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x765619d5 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d9e6470 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a0bdf3f osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9de5fed3 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb95b362c osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc1b2b788 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd1c0b658 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4262ec8 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd750052a osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf4f6479 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf1b1ec6a osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf3e0d83d osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf56f6a11 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf67b5bc5 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/osd 0x233e2ac3 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5762e023 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5b85878c osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x629f4adc osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xad02c389 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf453998f osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2743b08b qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3e4920b4 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x492dfff4 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x52919cbc qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5d616e12 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x60242529 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6227563b qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x80a6591c qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa26a81e8 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xafa62855 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd048c5d3 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfba16127 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x51d3d472 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x758479c4 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8d596ef7 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe181812a qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe90317b2 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf7ebe1ce qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/raid_class 0x8f23d245 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x9968e90f raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xfe172a30 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x33052149 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x887ecd78 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xad9943b3 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbafb2cf7 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbdd3baf5 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbe459beb fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc382e30c fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd233eaac scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdbfc93c4 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4bee0e8 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe5f1ca89 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe84c682c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfedda126 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x01f11323 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02017079 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x041bac5b sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x083b0817 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1279b6dc sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1798ae7e sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1935765d sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x28e20bad sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3279d1ec sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3384b8cf sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5250f4a9 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x69b8d777 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x73f7a247 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7540a08d sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81519d14 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x849b5c9a sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86bf9fcf sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fa54681 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb3547390 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb60d6c65 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb94f83e9 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc11f0dfd sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcd24f8f2 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce3d91dd scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe2bbc60e scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeaaad586 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee6e978d sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3654a18 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42636316 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x45f5b327 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6ae0ffe9 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6c05f18d spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7e1baf1e spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x1a6cd03a srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7fe592c2 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xad1b9f94 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xd691ca86 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x202647ee ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3bcbe966 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3c86ba23 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x68329719 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xdd16394f ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf629e352 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfcbedc10 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x1f8be1a0 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x237a7298 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x3646ed51 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x38ddbd13 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x3c15a4e7 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x424e0e36 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x4a35c737 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x64e681e5 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x6cb75fe9 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x6def435d ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x7989a4e9 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x87ed5134 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xa7474e53 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xbcb20c00 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbf18f985 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc015c261 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcaef1818 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdeb1cf9b ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe9548bf5 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf2f640b2 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x033da0d3 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x16261a63 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x162fea55 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x287d95fe fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2ff7098f fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4a5d16ec fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4c6259c4 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x51939a4f fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5436d2a9 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x556a47ab fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5a091dc0 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x63ef3ee2 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6b13ca26 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7b65f14c fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa5d0cfc1 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbbbb87f3 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc233ad86 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc5519cee fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xccdb43a8 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcd613e20 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xce83f2b2 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd2e13eff fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdfb7461f fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf3310e73 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x2070bfcc fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x43c66fd3 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x73fc0598 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x33968756 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x506d9331 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5f840345 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa4899125 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x3291a775 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x32a9e94c ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x7a863ef8 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x8b4c9d7e most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0689c123 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x085eb54e rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x090ce696 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a937eb0 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16a0c3d0 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b09e9b0 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c55602b rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cfeeb34 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f4818cf rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x23d8bebb free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26dd939d rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a7b5337 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2adcef33 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c49039f rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e013198 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x327dcde7 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37bc9943 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ef4f3f6 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f28f3db rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45569904 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45d71cda rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47ec0138 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50bda0fe Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5ac01f7e HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f8a380c rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x61dbe603 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63e98be6 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66447023 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e6c46a7 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76ffa7c7 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79392ec4 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8778a13f rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e03a86b rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x996abc4c rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9d5b6bb3 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa24c9d82 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8946969 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xacb4f8ad rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4c0266f rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6f37306 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbea5b2e6 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc34e29df rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc6de4f15 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0354cc0 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd11fde7f rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd32db39a rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd680485f rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd8bc0ccc rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde3f6d79 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf358c7eb rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0e42b0a0 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11159c06 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1510dc52 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c1b6439 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ad547bc ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3256e987 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x336210cc ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ee3e81a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4264396d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x550db74e ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58ec4e8a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59318d7a notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d131866 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ef9e020 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x620f4e81 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62c77c9c ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67dc509f ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x686c7a18 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6cd9627e ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e68f0d0 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x737c29b0 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x766ab2a0 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78c3a392 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ba9eecd ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x83cb4cd8 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88a74986 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x921503bb ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93c350db ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a7202e4 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa085891a ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa70e7dd8 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa740c1f0 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7de3d73 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7eaf3ba ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa9bfe3e1 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa9efc2e0 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc07cbf42 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1810d84 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc903a78f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd06e7db ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5ab6a46 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8815ee8 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8c3ef28 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9409e36 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd95d02eb ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe2caadb9 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb1ee44a ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf00eb7e2 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0c2ed4b DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2c37c35 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5ec32a8 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf783631a ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf835e3ba ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0x5d39eba1 visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x04c59b22 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0dab8460 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0fe4eb3c iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a206012 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f62ca6d iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c585ffe iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39ea0ae6 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4720b217 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x72285dba iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79d1ae7b iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8de40d1c iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e347aa4 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x956070e6 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x96069723 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ad072c6 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa1b6ace7 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb7fbb315 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb86b7945 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc8227b45 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce7de998 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce81219e iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf6e4ba4 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd3bc9684 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdc6afc11 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe7f88d57 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe9919c46 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf4078bd3 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfadd7ebe iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a91e85a sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x104ff191 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x14cb4aaf passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ae6c72f core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d0f950d sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e61554e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x22ff97f0 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x2dd5c86a spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ea5efa8 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x30f894f3 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x318fd26e transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x327bd61f target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3403f508 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x3645c800 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x368c9b46 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x42edeb6a target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x466ce8f8 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x46b81708 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x47e18b6c transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x4891cbcd target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a0c1e9d core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a38e30c core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e612855 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ebfd40d core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x63c0605d transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x64f943e4 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a576019 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ab53bfb target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c2f9053 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x73e56217 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x778b6517 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x77af823b transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x79a022e2 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x79edcef5 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d098cbc target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x845e080f target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8cbe2caa core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ef69f71 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9311fe09 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x9565b6f2 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xa29a0e10 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6a82be5 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xab90cda2 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xafec541c target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0c484d3 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3889b0d core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xb44be646 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4f66776 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc80fc2d transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc06521ef transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xcac20516 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc191326 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xce102070 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9c0a427 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd9c5ec2 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xdffb0cab spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xe05c8a2c transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4004441 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xe572d9b9 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5c2975e target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf65ab259 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xfae7c97a target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb76356d transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbe073e6 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x51e6859f usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x37365881 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x377ced29 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x17ddb57f usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x581f7ab0 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5e21a42d usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8d9a9cc9 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x92f03f96 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x99db6914 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa8c26bc2 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc278e577 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc66a6ead usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd30109df usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd4113396 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf725a012 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4833a99e usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x67635801 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x32a46d02 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x413b00fa devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd2fff79d devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd9d72ad3 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x123759c2 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x341cb385 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6f485040 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x73b3079b svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x74c4b58c svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb7dd8383 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe6b1c7e5 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x8a15f8c4 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x7211304b sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xce134c72 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x4b7416eb cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x7408be5d mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x00bb3842 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8c67ba10 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xf003b481 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x32fa22fa matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x8dec99ae DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xa267e797 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf27793ed matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x68ef5468 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x7075f8a7 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x858e0f6d matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa4e9a7fc matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcf64036d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd5d97c92 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x554dd637 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xd54b81ef matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x05e0ffd0 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x46189517 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4aa3a70f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8268ca89 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe7bab785 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x97f34531 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x40d63cd6 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x431f1be4 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9d8cf66c w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd3f4e062 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x76a7c14c w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xec90561b w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4395afbc w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe7508c6 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x64ad4591 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xa2febfc2 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xb7f63967 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xca56a2ad w1_add_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x046b3818 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x0bc20680 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x0e78cb89 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x18a8d14a configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x2ab8047a configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2d75f754 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x336cbc6d config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x377dbfd2 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x5458ac88 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x65e66c8a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x72e1e40c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x9a3675dc config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa7cd4718 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xb960db8c configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xba082356 configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x0210ab7a ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x1cc95f3d ore_create +EXPORT_SYMBOL fs/exofs/libore 0x24d04be3 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2d037ee5 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x68fca74c ore_write +EXPORT_SYMBOL fs/exofs/libore 0x76644353 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x7a2543e5 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8dafcf6c ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc4c7a17f ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd55bde44 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x00a36ee9 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x01b6307e fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x12c1f6dd fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x27e2279d __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x282f5f9f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2fb963ad __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x33aa471b __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x39298536 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x4699369c __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4866b793 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4965c755 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4cfb4e32 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4dfdd432 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x50ff3eb1 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x54a06ffe __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5cc36b6b __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x60e38325 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x66336b9f fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x76c1d2dc fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x79765794 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x7bd7ea11 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x80feef07 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x834a9823 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x83acf34b fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x876b8fee __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x88fc221f __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x956d5c2e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x95e025db __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9ce2c1df fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xb208b760 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xb3055e68 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc1839509 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xdec1870e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xe857a7ea fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xed8db711 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xf0a6cfa5 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf368053b fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf39e0141 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xfa7eb10b __fscache_disable_cookie +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x7660223f qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x797d5812 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc0bc1b99 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe198aba6 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xec0fb70b qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x3f3c92ac lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xef763c54 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x0041192c lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xb7a5ea31 lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0xb99c66a8 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x31d32567 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xee9b71de register_8022_client +EXPORT_SYMBOL net/802/p8023 0x93075b9f destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xa8bbfb7f make_8023_client +EXPORT_SYMBOL net/802/psnap 0x7bb37d66 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfa5f838e unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x046b3ea5 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x0ef7f953 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x1935b984 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1b2f3614 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x253d0dd6 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x2e746f11 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x313cd04a v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x35a1d715 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x48133112 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x48a406e2 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x49da2bb7 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x4a5857f2 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x631b6511 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x7582df4a p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x78a6cb57 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x7d8c5d42 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x7f1ff56e p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8095b098 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x84795555 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x891411d3 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8ad4c0e7 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x8cb6476e p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8f76d88d p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x9355c0c0 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x93c214d6 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xa18ab2c9 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa40f1fbf p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb177b695 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xb38ad7df p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb43fba6b p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc11bb3b6 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xce323704 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd61cb3e8 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd90b9801 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xda1118bd v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xdb10c7e6 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xdfa2b800 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xe31c8f41 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xec092caf p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x0041fe1a aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x7b1e0d89 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xa35642f5 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xdcc329ed alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x23df2714 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2ef0cb80 atm_charge +EXPORT_SYMBOL net/atm/atm 0x39477f67 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x45eaca40 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x6e45f343 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x8ddbfc86 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x8e841141 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9cfaf5fa register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa5c48b8d vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb8531b26 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xc5f9b4f9 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd7916e88 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xdd5367f8 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf020d63f atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0a8b5cea ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2a440968 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x54cf3263 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x5ee6fb24 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x91fa83ae ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x9fe9f26b ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xa5b42f78 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb8599b26 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b7c7d92 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e407acf hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1597415b hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x177e7f69 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1b4efbab hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x22208035 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x28efde7c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2bb15e65 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c6fbab7 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d3cf55a hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f583032 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x302d2064 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34da6f80 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34f8d859 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e76cc3c l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x41084256 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4560051e l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x585598b3 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x644ed7ba bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6d7b0b07 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x710b7372 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79dbd46e hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x88380b4f hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a7c997b bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f36aecb l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a677554 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c8cbcab bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9fe06aab hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa1fd449b l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa394215e hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb14e3e05 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbb71c4e8 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd66c78f bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd52ecdf0 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda754262 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe09e490b l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe467b692 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe75d2d95 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8c43ac0 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfaafd6c4 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc2870c0 hci_resume_dev +EXPORT_SYMBOL net/bridge/bridge 0x80374b50 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x39a5d055 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x7554658f ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe6052a38 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x19ff5098 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x229cab12 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5d47b3f6 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa43bc67a caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xfe8e6122 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x0ed4f349 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x276b49e2 can_proto_register +EXPORT_SYMBOL net/can/can 0x3ddfbbf0 can_ioctl +EXPORT_SYMBOL net/can/can 0x7efd5994 can_send +EXPORT_SYMBOL net/can/can 0x86103194 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xe0e4976a can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x007066d5 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x0898d744 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x09265442 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bbc52b1 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x0c60ccb6 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x12d26e0e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x1469b772 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x15e28144 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x22d3eef2 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x23931346 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x25f56198 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x2a041a5a ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2b0eef16 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x3225db17 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x35cbbd12 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x379754cd ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x39e7d2fe ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4c88e0cd ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x540cda70 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x54f89269 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x5792a0e5 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5a7c1954 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x5c0c7aeb osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x5c3869ba ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5cf64739 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x60658989 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x66706263 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x669d02a2 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x66a25ec8 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6d6003e6 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x718d06b4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x77cc9c89 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7c0cd031 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7da4e292 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8053da2c osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x82aa2675 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x85ae9af7 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x8b987de3 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x8ed6269e ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x9397cd9d ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x94af48dc ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x971a73a1 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x9730b169 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a6d405b ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x9b706755 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2cb143e ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xa31146a3 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xa39b80b0 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xa845dd59 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaaa5a04d ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xadd2a508 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xae0a616b ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb2a3122d ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb43a3fb6 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xb483a38d ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb80e3aff ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbfee7d64 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xc147b610 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc156927d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc2823e44 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc4520406 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc5d5563d osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xc70d8d45 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc7d9203e ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc834ba47 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbc78ed1 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xcd3268f0 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd2ed60c1 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xd5e4313e ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd651ab25 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd9ea4005 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xdabb5f7c ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xdedd5625 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe703de6b osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xea96bf09 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xecf2f157 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xed8a2914 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xee26e080 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf425bfeb ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf4c9d814 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xf970942f ceph_put_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x9eece9ba dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xdc9f11c3 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x10c8a94d wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x134c3a53 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6a37f346 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb1151710 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc6d74da0 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf3c00272 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x5f127eb2 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x68fe3f6f fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x160925ed ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2616f039 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x541008fa ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8db0bed2 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd2844046 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe38691b0 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x45719c51 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8f510010 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc8faa223 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x07c863c6 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x621ab2e2 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd9f56bac ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x425cf8cc xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xdb990920 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x968aeb6f udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x70c26226 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x78c44796 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x91bc4670 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb8447c81 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x8c0a4314 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xad139917 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xafccab6c ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x0b224f2f xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xaf10477b xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6a658d76 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc3d8b756 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x145b251e ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4424f09a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x54f3e8bb ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5cf45f5b ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x69399ec1 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7109df9f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc202d84d ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd8e43b3c ircomm_flow_request +EXPORT_SYMBOL net/irda/irda 0x0203387f irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x02e262c0 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x0ab05d88 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x0cbea215 iriap_open +EXPORT_SYMBOL net/irda/irda 0x0e60ed27 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x1259c875 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x1c2df0c9 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x28c8a208 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x3028094c alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x30eaa488 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x355658db irttp_dup +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x4042cbac irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x4178eb45 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x66af1ba3 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8370afb7 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x96acebaf irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x98e5f2c4 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x9dd958f8 irlap_close +EXPORT_SYMBOL net/irda/irda 0xa8921a17 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xa915985d iriap_close +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc4e6cfd5 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd7d1f931 irlap_open +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xddd282a7 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xebf529ce irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xef4d44a5 irda_notify_init +EXPORT_SYMBOL net/l2tp/l2tp_core 0xcb7e8b70 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x005b9f92 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2a5e53c1 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x7c556b0f lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x92ad1452 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9a9e9776 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xd3e88a49 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xdfbb53e3 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf84c1966 lapb_connect_request +EXPORT_SYMBOL net/llc/llc 0x0b699574 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x29a7a492 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x63ce635d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xa693cfa0 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xe270ee36 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xef3aa202 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xf2a846c4 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x02c53299 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x088d0aec ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x0991ab47 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x09e028c8 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x0af9d24d __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0f7245ed ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x11e896bb ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x17a188e3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x21082639 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2364cfdf ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x24220acf ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x2a73300f ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x2bddceae ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x311137df ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x3124f5c6 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3aaea8e9 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x3b7e0c6c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x3c5bc3e3 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x4060079b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41bd9abc ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x43d6bba5 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x449b0167 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x467b4ed0 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x477b4f3d ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x4a206cdf ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x4b25c6d3 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4c3bbb78 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5609413f ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x5a5c8b96 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x5dcbf62e ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5ecd4739 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x65581715 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x67807f49 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x693f317c ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x6965baa8 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6fbaa4cb ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x73c55079 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7438de14 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x779991e4 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7c4da491 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x7ed07c9d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7f91c9e8 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x80206efe ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x8491622a ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x84fa49a4 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x86b25d6d ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x890d1ebd ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x897b95b0 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x8b069134 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8d09e126 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x93f2a041 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x96bda544 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x990ea215 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x9d1b02ab ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa626bff0 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa88a62e4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xab68e014 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xad802a8c rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xbda87ed7 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xbec1839b ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xbee6b3f0 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xc0453fa5 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc133e8cf ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc763c552 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xd61185e8 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd66a24f2 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xda6133ac ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdb1c1f63 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdb57f526 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xdf68946a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe04153d8 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe360cf0b ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xe3682552 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe54a0375 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xead28569 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfd1be3da ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xfd3fc7b8 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xff78a312 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x19707ce5 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x2521249e ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x34e49268 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x624cb26e ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xbcb9c5c4 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xd789d4cc ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe288c726 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe6bd8470 ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x14a5cc58 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x15a734b3 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x19db415f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x20f2bb8a ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x21e94cfe ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2deb544f ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3c123dc2 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x71a45fa7 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x930356ba register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc7fd9b03 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd0c6e23b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd4d01262 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe571ab8e unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe77fd81b register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x79c27712 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7d87b26a nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xedc31fce __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0adf684d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x4d48311e nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x688a6d50 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xaf2184ee nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xc1babe14 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xc38e7dbe nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x114ff415 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x262af09a xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x26607700 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x284ff492 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xaa795730 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xadc3d427 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb5cedf84 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xe25288de xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xf74e20e4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfaf68dad xt_find_target +EXPORT_SYMBOL net/nfc/hci/hci 0x02836499 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x15775765 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x161e3923 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x1df982b0 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x25e352bf nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x31be5441 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x3ef6e45f nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x43b459d6 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x4cc48e4b nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5ac04763 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x68762a4a nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x6b5cf64d nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x79a2b29e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x9fc40f3d nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xacf99adc nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xd5b7df57 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xefc42cfc nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf40c3f80 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xf458aea0 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xf4819f78 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf999bf59 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x00daea4e nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x16854afc nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x21ca3346 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x2eb670be nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x56c14d54 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x5a85c34c nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x5b689407 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x731e483d nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x742b1e53 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x7d253eb4 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x8c5df7f0 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9e3e2ca4 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xa2e23ec8 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xabec4b57 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xb02c73e4 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xb86e0700 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xb895a9d2 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbbc3fa84 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xbd867192 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xbe9a5021 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xc1df9f95 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0xce64cbfa nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xcfd09b5e nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xcfdad7ba nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd3b4588c nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0xd63162ce nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xe187c995 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xf96a8515 nci_core_cmd +EXPORT_SYMBOL net/nfc/nfc 0x1218c107 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x183cb1e9 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x1f3e4c7e nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x2ec0fe2b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x3091b3b4 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3373bc87 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x3bdac76f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x437309df nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x5b036cd0 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x5c2eb7b1 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x610973d8 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x63be1578 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x6bbc9fac nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x71501f30 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x7232365e nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x779dbc85 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x92e36868 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x95bd1d0a nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x99583fb7 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xba324abc nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xbef054a1 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xc226810d nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xc290d984 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xe232c0eb nfc_add_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x43ac5d4d nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x5a767397 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7c391a3b nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa1198659 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x32f5ff17 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x46e234af pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x609d47be phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x70747b7b pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xbb11cf8c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xc6b66e4c phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xe2521129 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xe6abb019 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0c4ba20b rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x157c7fbf rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x260c8f74 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2660eb64 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5cb40d23 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x67bb1be4 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x85c0612c rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9555e61f rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xacea73d0 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xafd1a382 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb7b6b6ab rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcd5a652c rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcde6c9ca rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdf2d9365 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xeb034114 rxrpc_get_server_data_key +EXPORT_SYMBOL net/sctp/sctp 0x2d63c38a sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0f1ecad5 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x34915036 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfc78eeb3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd2fb6a43 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd6bde54a svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf4249486 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x807a7dbc wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xd50a0bfe wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x02a8c86f cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x120b881c ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x12fe8185 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x14c21059 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x16931f26 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x1794df07 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a203ce4 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x1c54e96d cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1d8fd249 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x27b08645 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x2cc0a0be cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x2e4823dc cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x31ecde73 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x3ad30897 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x45f6f11e wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x48a4b4ad freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4b631469 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x4eac3ebe cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x50d0ff54 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x512e0911 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x526562c5 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x532dee4d cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5585433d cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x583e0b85 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5b1dae9c cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5b8ed3a9 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x5ec9312a cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5fb9d3d9 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x63500a20 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x63ab0dc1 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x63e59cc7 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x64decd36 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x65a32c87 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x679e56f9 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6881c2b9 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6a503686 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70534c6d cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7360b67a cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x75054b84 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x76b31e97 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x798035aa cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x7b7bc91e cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81392428 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x81661391 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x836b4eb5 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8a04b342 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x92973773 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9683243b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a2ba4c1 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x9b7ae4f0 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa163acbb wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xa1848e15 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa19d0c31 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xb23e91ef cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xb4cb0d01 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xb6beee3d cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xbdd42050 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbeb24678 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xbefbcb22 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xbfa0fe63 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc32c4157 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7d3895b cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xca05d321 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xca7fbb4d cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xcac155bc cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xcce70ad7 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xd3e83981 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd690fe98 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xde265458 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdf495ef2 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe0142470 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe0a61bfd regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xe5353ed5 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe5f8e6f7 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe7d8534a wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xeab58c36 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xeade4518 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xeb9e09f9 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf18c9fc4 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xf39b9aad cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfd713234 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x36193ad9 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x5260bee9 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xc1604513 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe0ddb3d7 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xed9c4305 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xf9b413f4 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xc75e3836 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x7184abc0 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1816a1da snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x29b7aa69 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa8767fc7 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd816da37 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x7266176b snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x32c012d4 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x01992516 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x06e4e705 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x090b9d83 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x10a1e951 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x10dbed04 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x27c53d81 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x31816cef snd_card_free +EXPORT_SYMBOL sound/core/snd 0x3371bca8 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x37b51040 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x37eb4c3f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x39803902 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3a458f76 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x3aaa679c snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x3ebedbe5 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x45fee9f7 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x4a39eadc snd_component_add +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a6535f7 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x4de724c3 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x52d7b66e snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x5a70de19 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x5d76dee4 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x6e07c306 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x6fd83dd1 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x77cc2272 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x77d88c67 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x7edfb409 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x81b6863c snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82c246f9 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8e9ee327 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9bb3be7f snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa3b8896f snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb4b84908 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb5154fe2 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xb6928fe6 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xb9bdb982 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xbd706810 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xc0bbea35 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xd522c04d snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xda202816 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xe56f4007 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xe8d111dc snd_device_free +EXPORT_SYMBOL sound/core/snd 0xe8d2bfca snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xed110343 snd_cards +EXPORT_SYMBOL sound/core/snd 0xee15d329 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xf9965f45 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xfa942941 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xfb4fe45d snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xfbf32ebc snd_card_new +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x4309cf0c snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x086f6695 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x0bfcbe14 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x12385701 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x26ce0eaa snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x2879e265 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x2baa005d snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2efe3045 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x35ae1780 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x4070f6a8 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x41dcbeb6 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x46792c79 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x4cc93553 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5991d35f snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x5b3c1b85 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x5d06144c snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x5d3c8726 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x5e02129e snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x616c2608 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x679bc140 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x680cee53 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x76e97665 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x7b97c812 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x7edff9d5 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x8295b44e snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8a2dac43 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9d1f48e1 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xa2ef9109 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa5d0e9a0 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa644211e snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xb6203eb5 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba2ff78a snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xc060e294 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc2ac522d snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xc4353023 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc467b479 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xc92c93a2 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xcd7ecdac snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xcea5956a snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xcf86f768 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd11f1b9c snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xd46da10c snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xdbd03a48 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xddc6927f snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdff1dd09 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe83258d1 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xf7189aa0 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf77644d7 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xfd7b8aba snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x08621a21 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x125d1de2 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x158984a2 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x44dd9230 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x484ca4da snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5efd3081 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6bab733a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x830eaaf4 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x86a5bc4e snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8752179d snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9095b25e snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x91aa3577 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa5fb3135 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa9643b97 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc90ba8e0 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd697d80f snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf5602cd9 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-timer 0x01f7c52f snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x18b86054 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x3402b528 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x3c2e342d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x6beefce9 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x83df6266 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xa0c02c0f snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xa4c9f740 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xaa986e72 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xb16625c6 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb188f498 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xd5695de5 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xdc196883 snd_timer_global_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc5d29c97 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x31512704 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50c63184 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x58aec0d0 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x830c1859 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x95b3ef75 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb6509a59 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc9382af3 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfadcbfae snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfdc151e2 snd_opl3_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x16e80130 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x17dc3b7f snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x36a5e836 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x42071ad0 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x42c0327e snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x655f1557 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x78aebc30 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8044f696 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc1cd2631 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x07da57d6 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1fa4836d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x22e78849 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d47ab5b fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ddb2976 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3e487778 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x403257b3 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48e73378 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x531d352a amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x549f4d53 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f8d299b amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6186ef6f fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x62d602c6 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6547a44a cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x65722a14 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x81094e6f amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x90af6cf8 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x95311988 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9798a8b2 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa191195d amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb04d5c6a fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb29a267a fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbc2e2ab7 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbe2b0cb2 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbebfb0b9 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc0e79199 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc59f7e72 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0638480 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf64aaa1e amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf6e6ccee avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf7282b58 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfeb7afa9 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x73bb8abd snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x9ea9f0a0 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x130e1e77 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2f49efb6 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x80ab9930 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x828a260f snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8d114827 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa9601d34 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdf865b12 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf49d7143 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x38725e99 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x987a1347 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xcbe0fced snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd0320e6d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe637bc91 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe8863ff2 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x21ca5e13 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd6b68485 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe0726302 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfa7e65ed snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa6bd3c3a snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf48fa6b7 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x34544f5f snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3e91bd22 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6b956072 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc0cc9e75 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc668f68d snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfcbaa291 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0b7a9803 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x24756cba snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5e35b128 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd0c02785 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdfbcb998 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xeca7ead4 snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1932fba9 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x36d2db29 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x67d9efa5 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7167444a snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x80be1a62 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x86fd2ab0 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x968b14fb snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb8581399 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd9317f3e snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xddd32c04 snd_sbmixer_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x027fbaa2 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x02d6cf54 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x082260ea snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x259d58b1 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2abf6247 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x54017051 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x55ac6267 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6225e3bb snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x62d74b27 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ebece2f snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x88e619e7 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b660080 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa1e855ec snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb71fc98c snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd752f3d6 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf74f6889 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfea123fb snd_ac97_resume +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x954631bb hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7b4eee0e snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x866c2d5c snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x87571558 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8afc3c47 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x97166f35 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcc0dbd6a snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd6f7297c snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe8343fd8 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfa081c80 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x62676fe0 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa38edb41 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc88da638 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0705dae6 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x09efcd5e oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10ba7588 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x15d65e46 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e49fbcf oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25222c93 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x313862ef oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x32177fb7 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3cf09d7c oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x46fc1b09 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4d360044 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4dccbeba oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x574f39c3 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x658d112c oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81f2781f oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8236a5f1 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaf42796c oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9613deb oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf5ca32b2 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfbef657f oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xff5f340d oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3021738b snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x38499035 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5e9c2e5e snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7e587f29 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x976ec13e snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x7c50fecc tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x97d9fb66 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xf3ad4c5f sst_dma_new +EXPORT_SYMBOL sound/soc/snd-soc-core 0x04523d78 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x5e64bf57 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x781f1cdc register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xac7f35f1 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xb5b5fc86 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xcbb8f370 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xe560c4d3 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x08fe19bf snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x172559ab snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x17352ed5 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x630e78dc snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x784cf185 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd18a67e0 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x14368012 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3fc9f74b snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4cc4319b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x69d36853 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x70eb921f snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97e7d8e3 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc809aecb snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xdbc7a780 snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x2ce40fee snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00322056 VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01674ab7 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0429a6f0 VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x057fd386 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0731e88d VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x079b132d VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08ed98db VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09a88bc3 VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0a442050 VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0beb235d VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0cd1b64d VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d10d1ca VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f3e114a VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f884b3a VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11ced39a VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11e95d2e VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11f80121 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12614b82 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12f430f3 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x147206e1 VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x151752ec VBoxGuest_RTHeapSimpleGetFreeSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1520b2c8 VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x160b14d4 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1926b25c VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19790b4c VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x197acd65 VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a6d7d86 VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ae28abb VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1c3b0f90 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1dc5ebbe VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f3e577b VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f70d065 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2003169b VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20728ae6 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20d9d625 VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22058511 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2254228b VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2387f039 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25219f5e VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2580d04c VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2632a013 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29708cf0 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2a2284fb VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2af3453c VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c2b5b46 VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2cfefa48 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d445217 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d581c06 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2eca7777 VBoxGuest_RTHeapSimpleAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2fb7502f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x30e40c69 VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3168cadf VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x31ac4c5f VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x33d7313a VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x343e3e1b VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3480f453 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x358153bb VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x362275e8 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x372d5e29 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x376d539c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x381d7c24 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x383a0b9d VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a47392e VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b04381e VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b231c95 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3bcf543a VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3de43f66 VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3dfc9ab8 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3fbf3c07 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x40996438 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42ecc6d1 VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x43fdd8d9 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44cfbc28 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x461fa9fe VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46c14223 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f1be17 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f4d19c VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ba5006e VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4bbec091 VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4c7d8a56 VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cac3157 VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cecc93d VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cf913a1 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ea67110 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4f041d39 VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fc8e10c VBoxGuest_RTMpGetSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fe9e5f1 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5040043b VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x508bb2c4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x51ec28bd VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53265abc VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5352c915 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54098f34 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54ddf87c VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5595fc22 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56596e82 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56c939fe VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5847ae52 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x58d1b65e VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x598d3622 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5a97195c VBoxGuest_RTHeapSimpleRelocate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5aa6ed66 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b3a5164 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5cc0b1b2 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5d3b1bd6 VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e071eb3 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e17b70e VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e75c570 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5eaea89a VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ee65bb7 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ef42fe5 VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5f2f48bb VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61143878 VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6173b384 VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61770e8c VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63378722 VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x634946f7 VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x637a1d69 VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6381bb97 VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63b1fde6 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63bc10b0 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x658cd915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x67135d2b VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6862822a VBoxGuest_RTHeapSimpleSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x695d63ad VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b01bbf3 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b58b79d VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b91f1ce VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c8460ac VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6cec7c3b VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6d8e9c87 VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6e8541b7 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x704e1f6f VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x70867323 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x71060970 VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x716e3be3 VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x729cc4ab VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72ff1bc3 VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x730a01b0 VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x74812dde VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x759e7492 VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x764ecb18 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76a3c47b VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79d59e24 VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d0d9dae VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d15e878 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7dcc30d8 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7e29739a VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7f0a40ea VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7fc5bdcf VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8196c4e6 VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x82e081bc VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x83e78406 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x841e42e9 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8484a0d6 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e227f6 VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86120100 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867be0d2 VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x868b79a5 VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x879761cf VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87da3860 VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8826d9de VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x883d496c VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x885274fe VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x89117f68 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a3c154f VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a454b31 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8e01e3fd VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8f1309e3 VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x90312938 VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x91204a9b VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x916e42f0 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9264ffc0 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x926bf9f7 VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x92e716ae VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x94f7365f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x95fa480d VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x961772f3 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x967ea4b6 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96893ce3 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96f2e65b VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9796440b VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x97eb2414 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9874cd16 VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9a2ee747 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9bcc539d VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9cd9213f VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9d6b527c VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dbd63d6 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eaecd9d VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f301085 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f4f616a VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9fb0596d VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa168a070 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa34eb1b3 VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa486e710 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa554bd97 VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5a26703 VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa696baed VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6a22472 VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6de1bcd VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa86c5a96 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaba9bc9c VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xac990d74 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad4fdf4e VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad649089 VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae3e0ecd VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaf6ffbfc VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb05840a7 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb1cc9148 VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb444f4a1 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6941b2e VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8c6e615 VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8ca8fcb VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8df2b3a VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9b070b7 VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9d7a27d VBoxGuest_RTHeapSimpleDump +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbb1ead73 VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba928e6 VBoxGuest_RTHeapSimpleGetHeapSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc4d30f6 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc85935a VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbe4e6114 VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbffedb55 VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1095c44 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1b3ada4 VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3a1e5de VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3fee96e VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4bd5fd8 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc63cc2f0 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc71362b7 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc8fbf4aa VBoxGuest_RTHeapSimpleInit +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc91cea98 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9a6a8e7 VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcaee97bf VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb2a6b54 VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceae9d6a VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd14e8ec2 VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1f3f0b9 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2a37e73 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2d290ab VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd3a125cb VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd46c35d4 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4b597fc VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd5bfc897 VBoxGuest_RTHeapSimpleAllocZ +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd637869e VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd69bc8e4 VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd706d85c VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd88c9330 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd984a7f4 VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdc700594 VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde9ca744 VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfbc69bb VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe054d759 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe095cef8 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0dc7391 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe1c6b3d7 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2765c54 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe38d562c VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe3fd228f VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe7e42113 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe88dae73 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe8fad285 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea2f2944 VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea38e4f7 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea71842b VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebeefa0e VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xec3cc9a6 VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xee774b8e VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xeea4ee73 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xef6e1359 VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf02f22ab VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf0dbb702 VBoxGuest_RTHeapSimpleFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf26294bb VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2aa79bb VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3943009 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf5d89855 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf69aec24 VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7397dd2 VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf8113d66 VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf956a4e8 VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf958d9cb VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfa7d95c9 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb31e12b VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfba93ac9 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfbc67e88 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe72cef7 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL vmlinux 0x000a8bd9 seq_open +EXPORT_SYMBOL vmlinux 0x001e8837 __sock_create +EXPORT_SYMBOL vmlinux 0x0040deec inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x0059bb2f input_get_keycode +EXPORT_SYMBOL vmlinux 0x006e4e56 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x007e659e d_genocide +EXPORT_SYMBOL vmlinux 0x0080f3dc inode_permission +EXPORT_SYMBOL vmlinux 0x00835a33 done_path_create +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x008611cd add_disk +EXPORT_SYMBOL vmlinux 0x00a93626 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x00b34660 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00d516c7 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0105440d compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x0118091b inode_init_once +EXPORT_SYMBOL vmlinux 0x011cc084 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0129b418 dev_err +EXPORT_SYMBOL vmlinux 0x014248fc param_set_charp +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x017f254a pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x01902a48 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x01c5c25d d_invalidate +EXPORT_SYMBOL vmlinux 0x01dc5869 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x01de8217 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x01ea91b7 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x020c3d73 get_super_thawed +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0238ebe3 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02769230 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x0298bbc0 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x02a03e28 brioctl_set +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a67984 tty_vhangup +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02adb3a2 seq_escape +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033a03f5 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0345dd34 bio_init +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f1508 __vfs_read +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03846e04 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x03a1d892 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x03af1c1f do_splice_to +EXPORT_SYMBOL vmlinux 0x03cd25de blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x03e1d745 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040fab58 serio_rescan +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x0430bff7 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x043f4038 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0483e1f9 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x04970f32 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x049a6abf nf_log_unset +EXPORT_SYMBOL vmlinux 0x049b491c inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x04a0e0f0 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x04b36356 clk_add_alias +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x053b1af7 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x0549a005 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05721491 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x057caef2 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x05a9e7d5 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x05bf4bd1 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x05edef3c kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x05f68f8d __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x05febc02 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x060c4ccc blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062843da kill_pid +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0644234d scsi_block_requests +EXPORT_SYMBOL vmlinux 0x0670d577 iunique +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x069834de phy_device_free +EXPORT_SYMBOL vmlinux 0x069ebacd bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x06b94443 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c71578 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x06e75383 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x06fdfdd6 inode_set_flags +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07006fdd proto_register +EXPORT_SYMBOL vmlinux 0x07112a40 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x07213018 generic_removexattr +EXPORT_SYMBOL vmlinux 0x07271b6b __serio_register_driver +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072c0efe __ip_dev_find +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074736ed skb_push +EXPORT_SYMBOL vmlinux 0x07516d41 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x075b05b3 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x075c064c tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x07615dce pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x077b9e8d input_unregister_handler +EXPORT_SYMBOL vmlinux 0x078021c2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x078822e4 gen_pool_create +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a82346 __free_pages +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ade9da md_cluster_ops +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf65b3 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x07dcc605 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x07e36072 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x07ef4f01 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x07fe5133 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x07ffc192 mdiobus_read +EXPORT_SYMBOL vmlinux 0x08046fa2 dev_close +EXPORT_SYMBOL vmlinux 0x08176479 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0830c898 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x083b5f73 mmc_erase +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084d1381 unlock_buffer +EXPORT_SYMBOL vmlinux 0x0860bee2 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x086da68a blk_execute_rq +EXPORT_SYMBOL vmlinux 0x087371be icmp_send +EXPORT_SYMBOL vmlinux 0x08828664 finish_open +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08a69ba7 i2c_transfer +EXPORT_SYMBOL vmlinux 0x08ae876b iov_iter_npages +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08fe5396 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x08ffb35f dump_emit +EXPORT_SYMBOL vmlinux 0x09039a91 simple_fill_super +EXPORT_SYMBOL vmlinux 0x0909d247 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x0910e615 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095c65c5 unregister_nls +EXPORT_SYMBOL vmlinux 0x095d06aa kthread_bind +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x097343fe pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09979b57 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x09a6043c __vfs_write +EXPORT_SYMBOL vmlinux 0x09afcdf6 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x09b015b8 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x09b1a2c2 block_read_full_page +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09e9dea9 serio_interrupt +EXPORT_SYMBOL vmlinux 0x09eb03aa dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3d2377 registered_fb +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a58f595 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aad5920 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0adcfff9 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x0ae5a9fc nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b0d99b8 __breadahead +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b26e17a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x0b2a94b8 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x0b2ef5c8 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0b363364 i2c_use_client +EXPORT_SYMBOL vmlinux 0x0b42a084 _dev_info +EXPORT_SYMBOL vmlinux 0x0b4af932 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x0b542d41 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x0b5a57ed skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b64ea48 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x0b6fb770 twl6040_power +EXPORT_SYMBOL vmlinux 0x0b73a044 devm_iounmap +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7f84d5 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x0b8a8730 dst_init +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b9a6b89 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x0bb4f086 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x0bb5cc4f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c069a69 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x0c0d127f sg_miter_start +EXPORT_SYMBOL vmlinux 0x0c0f82ab textsearch_register +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c233900 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x0c2cc19e pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x0c2f1a5a blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c69c353 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c706922 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x0c82158c inet_sendmsg +EXPORT_SYMBOL vmlinux 0x0c98374b nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x0c9a0572 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca2982f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc31d0c xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce085e9 from_kprojid +EXPORT_SYMBOL vmlinux 0x0d17c0c8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4da655 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x0d5216ae vfs_write +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d692297 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d937bb2 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dec687f pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x0e011587 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x0e02e8d4 mpage_writepage +EXPORT_SYMBOL vmlinux 0x0e03ab19 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0e34e6b0 security_path_link +EXPORT_SYMBOL vmlinux 0x0e4be3fa genl_unregister_family +EXPORT_SYMBOL vmlinux 0x0e5b8706 km_query +EXPORT_SYMBOL vmlinux 0x0e5f5d4d __init_rwsem +EXPORT_SYMBOL vmlinux 0x0e625417 register_netdev +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e766549 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x0e83ddfa param_ops_short +EXPORT_SYMBOL vmlinux 0x0e970f00 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x0ea02101 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x0ea207b4 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x0ea2379b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x0eb924a4 netdev_err +EXPORT_SYMBOL vmlinux 0x0ebf9af0 dquot_file_open +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed32d27 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0eda8e03 irq_set_chip +EXPORT_SYMBOL vmlinux 0x0ef5d6a2 md_update_sb +EXPORT_SYMBOL vmlinux 0x0ef73894 amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f1edc3a inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x0f242973 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x0f35db06 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6e7cbf swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f926fe9 build_skb +EXPORT_SYMBOL vmlinux 0x0f9a69bd d_splice_alias +EXPORT_SYMBOL vmlinux 0x0f9b5e16 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x0fad4eaa module_refcount +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f00b amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb932e1 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x0fc1827c check_disk_change +EXPORT_SYMBOL vmlinux 0x0fc19111 nf_reinject +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff67399 sk_common_release +EXPORT_SYMBOL vmlinux 0x0ffdecce nobh_write_begin +EXPORT_SYMBOL vmlinux 0x102497e9 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x104dfe70 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x105ba445 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10836c30 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a95ae7 dev_open +EXPORT_SYMBOL vmlinux 0x10e2a99c sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x10e2bdec down_write +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110b0f3f dma_async_device_register +EXPORT_SYMBOL vmlinux 0x1120d3ad inet6_getname +EXPORT_SYMBOL vmlinux 0x1147f07c pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x115178b7 inet_offloads +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11755173 wireless_send_event +EXPORT_SYMBOL vmlinux 0x117ec752 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x118091d6 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x1183143e dev_printk_emit +EXPORT_SYMBOL vmlinux 0x118fb7ff sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x11954167 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x1199de44 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11f44c8f mdiobus_scan +EXPORT_SYMBOL vmlinux 0x11f55466 elv_add_request +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ff48dc blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120c8b1b pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12331b73 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x12379cd7 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124684c7 set_blocksize +EXPORT_SYMBOL vmlinux 0x1249c690 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x1253f400 fget +EXPORT_SYMBOL vmlinux 0x12672afc mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x126cd6a1 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x128ca5de mmc_remove_host +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12af9e27 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x12c50bfb tcp_splice_read +EXPORT_SYMBOL vmlinux 0x12d86b1c amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x12dbc689 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x1305d5d9 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x13077508 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x13156d1e tcp_prot +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133d7006 address_space_init_once +EXPORT_SYMBOL vmlinux 0x136ef008 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x13731fea i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x137b8f47 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x13aa821b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x13b805ba __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x13c8e0b2 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x13cc7072 skb_split +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dc5dad phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13ff982b reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x1421ba85 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x142af8f8 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x1438126d tcp_make_synack +EXPORT_SYMBOL vmlinux 0x144fc62c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x14562db3 genphy_read_status +EXPORT_SYMBOL vmlinux 0x146423e0 flush_old_exec +EXPORT_SYMBOL vmlinux 0x14718494 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x14926ece netpoll_setup +EXPORT_SYMBOL vmlinux 0x14a1e004 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14e0716c tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x150d178c udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x15119231 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x1541de60 generic_fillattr +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155f3e4e agp_put_bridge +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x156f4892 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1572eddf fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x15799c11 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c113a8 dm_get_device +EXPORT_SYMBOL vmlinux 0x15c176dc xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15cdc685 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x15dc3a4a input_free_device +EXPORT_SYMBOL vmlinux 0x15eab0e3 sget +EXPORT_SYMBOL vmlinux 0x1608f941 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x160c0342 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160efdc7 sock_rfree +EXPORT_SYMBOL vmlinux 0x1615b781 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x162cdf5b tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x162cfc1c pci_dev_put +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163cddb1 bio_put +EXPORT_SYMBOL vmlinux 0x1650d123 seq_dentry +EXPORT_SYMBOL vmlinux 0x165642be mdiobus_free +EXPORT_SYMBOL vmlinux 0x165aa5b9 pci_iounmap +EXPORT_SYMBOL vmlinux 0x167b0fd5 vme_register_driver +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x16832fea devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x168533b1 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x168d14a3 sk_dst_check +EXPORT_SYMBOL vmlinux 0x1696efef tcf_action_exec +EXPORT_SYMBOL vmlinux 0x16a1be9e param_get_bool +EXPORT_SYMBOL vmlinux 0x16aa89d5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x16ad4f3b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x16b8a0ab tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x16d3cedd d_obtain_root +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e3d56a xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x16fe71a5 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x17251734 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x172d96ba generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x176ae111 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x17759ead single_open +EXPORT_SYMBOL vmlinux 0x177c864c netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x178cdd1c mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179651ac _raw_read_lock +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17bf13b2 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x17eaa349 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fec4d3 keyring_clear +EXPORT_SYMBOL vmlinux 0x181ca53a cpu_info +EXPORT_SYMBOL vmlinux 0x1821ba7d i2c_master_recv +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184fbc3f i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x185aae85 processors +EXPORT_SYMBOL vmlinux 0x18602884 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189089c5 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189e1e6c dquot_free_inode +EXPORT_SYMBOL vmlinux 0x18a0104a flow_cache_fini +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18c8cd72 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18cbadfb vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x18d2ff95 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x18d4290c bdi_destroy +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18f39042 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x19008b3b module_layout +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1926a687 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x192ceb3b blk_register_region +EXPORT_SYMBOL vmlinux 0x1945389b km_is_alive +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cbf067 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x19dbae09 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x19f810b7 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x1a01a817 d_set_d_op +EXPORT_SYMBOL vmlinux 0x1a29c9e3 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a55bc16 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a657313 __check_sticky +EXPORT_SYMBOL vmlinux 0x1a8b2fcf security_mmap_file +EXPORT_SYMBOL vmlinux 0x1a97a53f simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x1aa6efee dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x1ab9b7d4 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1adf4d01 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x1ae68c8b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2083c1 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x1b2aa7fb netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x1b30d2ea fd_install +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6eaf78 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x1b78c926 fb_set_var +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb33246 ether_setup +EXPORT_SYMBOL vmlinux 0x1bb427ad vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x1bc3e87d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x1bdebd7d blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1bf60638 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x1c01aa6c dev_mc_sync +EXPORT_SYMBOL vmlinux 0x1c120024 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x1c37164a request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1c488d6a dev_get_stats +EXPORT_SYMBOL vmlinux 0x1c49a3c1 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c992bde locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x1cb70a96 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x1cc8dfbd unregister_quota_format +EXPORT_SYMBOL vmlinux 0x1ccbd4fd generic_update_time +EXPORT_SYMBOL vmlinux 0x1cce0d91 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x1cdb4c0d blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x1cf0e618 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x1cffedd1 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d1791fc rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x1d19fc17 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x1d1b01c2 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x1d257723 iget_failed +EXPORT_SYMBOL vmlinux 0x1d6f93a8 set_trace_device +EXPORT_SYMBOL vmlinux 0x1d737774 elv_rb_find +EXPORT_SYMBOL vmlinux 0x1d7d2f75 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x1d816df3 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x1d97e708 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x1d9fa8f8 user_revoke +EXPORT_SYMBOL vmlinux 0x1db0b127 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x1db6ef9b iterate_mounts +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc48bba amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x1dd399d3 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddee422 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x1de2bd19 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1debee2f tty_kref_put +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0567c2 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e120612 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x1e141199 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e373fa4 cad_pid +EXPORT_SYMBOL vmlinux 0x1e421954 dcb_setapp +EXPORT_SYMBOL vmlinux 0x1e47dfa6 skb_unlink +EXPORT_SYMBOL vmlinux 0x1e560b73 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x1e673d91 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7b108d dev_addr_add +EXPORT_SYMBOL vmlinux 0x1e8cffd8 kill_litter_super +EXPORT_SYMBOL vmlinux 0x1e8d3d84 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea3a5bb i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ecf9aa9 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x1ed0f697 init_net +EXPORT_SYMBOL vmlinux 0x1ed99605 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x1eebfcce __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x1efa7fd5 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x1f04b03a blk_queue_split +EXPORT_SYMBOL vmlinux 0x1f0d5a22 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1f46a517 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x1f47030d pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x1f4e3240 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f724856 default_llseek +EXPORT_SYMBOL vmlinux 0x1fad8fe3 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc3f849 netdev_printk +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd32903 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffb04c4 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x2007654e blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20194d59 d_alloc_name +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x203b1c00 update_devfreq +EXPORT_SYMBOL vmlinux 0x203bdd1b fb_validate_mode +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x2049c3b8 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x204b8c16 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x205df5d7 bdev_read_only +EXPORT_SYMBOL vmlinux 0x206f4479 devm_free_irq +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207b4874 vfs_create +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a001a2 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20b91dfd n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20f80e1e phy_find_first +EXPORT_SYMBOL vmlinux 0x20fc867a iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x2104e1d8 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x21067eba phy_start_aneg +EXPORT_SYMBOL vmlinux 0x210ed480 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212053bf con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x2121585c vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x212bc7f0 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x214cfc0c md_write_start +EXPORT_SYMBOL vmlinux 0x2167dcb9 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x216a843f mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x216c0430 genphy_resume +EXPORT_SYMBOL vmlinux 0x218bc88b import_iovec +EXPORT_SYMBOL vmlinux 0x21905a81 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x21919f1f d_drop +EXPORT_SYMBOL vmlinux 0x2198ba74 sk_net_capable +EXPORT_SYMBOL vmlinux 0x219aaad4 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x21a1fec6 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21bb51f9 mount_subtree +EXPORT_SYMBOL vmlinux 0x21c539c0 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x21c8b87a tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x21cc5481 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21f25a79 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x21f5aa28 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2239e3e6 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22840161 tcp_close +EXPORT_SYMBOL vmlinux 0x2287a8bf pci_dev_driver +EXPORT_SYMBOL vmlinux 0x229a9de5 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x22a405ba phy_stop +EXPORT_SYMBOL vmlinux 0x22b2766b jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bb4390 console_start +EXPORT_SYMBOL vmlinux 0x22d86e4c tcp_release_cb +EXPORT_SYMBOL vmlinux 0x22dcee04 blkdev_get +EXPORT_SYMBOL vmlinux 0x22f24e71 start_tty +EXPORT_SYMBOL vmlinux 0x22f2b573 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x23153525 pci_clear_master +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x233e7810 do_SAK +EXPORT_SYMBOL vmlinux 0x237552f3 md_reload_sb +EXPORT_SYMBOL vmlinux 0x237b1700 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x237ee262 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x238c15e1 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x238c55fb sk_ns_capable +EXPORT_SYMBOL vmlinux 0x23982bd5 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x23a3bdb8 phy_driver_register +EXPORT_SYMBOL vmlinux 0x23a43a5a setattr_copy +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c015eb cap_mmap_file +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cdbad4 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23ee2a15 agp_enable +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2404187b submit_bio_wait +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24722173 devm_release_resource +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248a9a04 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x24a3391d neigh_event_ns +EXPORT_SYMBOL vmlinux 0x24b29698 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x24b6d430 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x24b80f83 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x24cfe1f0 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x24f4f25d cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x24f70642 generic_show_options +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2506ae9b filemap_fault +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252cba9e generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x25394237 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x254a2001 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x256e4dc7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2593af10 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x25976bd0 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x259a625e xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x259def56 tso_start +EXPORT_SYMBOL vmlinux 0x25cd061e gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25eb8f54 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x25ec52e7 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x260af943 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x261fbbbd mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x262e22a1 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264b386a release_firmware +EXPORT_SYMBOL vmlinux 0x264d8ea7 set_binfmt +EXPORT_SYMBOL vmlinux 0x264f1b82 agp_create_memory +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265b6135 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x2664566f genphy_update_link +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x268682c7 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26966a10 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26cbf7f7 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0e5ad kernel_listen +EXPORT_SYMBOL vmlinux 0x26f33839 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x27071722 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x27077c96 generic_read_dir +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x271f545b scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x2732a1fb agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x2748eff0 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x274aa170 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27515989 generic_setlease +EXPORT_SYMBOL vmlinux 0x27671f82 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x27a12ced dput +EXPORT_SYMBOL vmlinux 0x27a5ed6f param_get_byte +EXPORT_SYMBOL vmlinux 0x27a65e99 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27cea89e generic_make_request +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f0d9b8 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281d108b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x287b024d pci_save_state +EXPORT_SYMBOL vmlinux 0x287b5b2e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x2889d9e1 kill_fasync +EXPORT_SYMBOL vmlinux 0x2890b0e0 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x289674da mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x2896cec2 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28c1a57f pci_scan_slot +EXPORT_SYMBOL vmlinux 0x28c97b80 no_llseek +EXPORT_SYMBOL vmlinux 0x28d94ce8 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28f1e7b3 open_exec +EXPORT_SYMBOL vmlinux 0x28f899b5 elevator_alloc +EXPORT_SYMBOL vmlinux 0x293bf018 seq_putc +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29b1501d filemap_flush +EXPORT_SYMBOL vmlinux 0x29be2057 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x29d22d3b skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x29d41a81 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x29f31031 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x2a00012b __register_binfmt +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a40dc3b sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x2a48cf6c nf_log_set +EXPORT_SYMBOL vmlinux 0x2a54151e pci_release_region +EXPORT_SYMBOL vmlinux 0x2a560dea ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x2a565071 kill_pgrp +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a9c4377 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2aeb4f11 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x2aefc34b vc_resize +EXPORT_SYMBOL vmlinux 0x2aff68ef __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2b05a21b intel_gtt_get +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b6bbba0 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x2b6d8922 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x2b764941 find_vma +EXPORT_SYMBOL vmlinux 0x2b8448d3 vc_cons +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2b9fc8eb kfree_skb +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bc0eecf rwsem_wake +EXPORT_SYMBOL vmlinux 0x2bcf6876 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x2bd13f4a nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x2bd7326a truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x2bd9fc4f init_special_inode +EXPORT_SYMBOL vmlinux 0x2bda82f3 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x2bf62faf pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x2bfad686 genphy_config_init +EXPORT_SYMBOL vmlinux 0x2bfc8722 arp_send +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c24f142 first_ec +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4298a7 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x2c8dd98c swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x2c8f753d soft_cursor +EXPORT_SYMBOL vmlinux 0x2c900fdf dget_parent +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2ca85885 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x2cb15a00 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cf15d5c __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x2cf1ab72 vga_tryget +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cf836bc __genl_register_family +EXPORT_SYMBOL vmlinux 0x2cfd8c28 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d1bb242 security_path_chown +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d309b38 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d38e465 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x2d3fa158 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x2d41ae40 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x2d533c08 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x2d7e59cf agp_free_memory +EXPORT_SYMBOL vmlinux 0x2d965a25 notify_change +EXPORT_SYMBOL vmlinux 0x2dbe3d60 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x2dc3f3d2 inet6_offloads +EXPORT_SYMBOL vmlinux 0x2dc593cc get_agp_version +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2ddae847 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x2de1dfb6 dquot_drop +EXPORT_SYMBOL vmlinux 0x2de6af5f bdevname +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e07284d generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x2e0b3a04 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e118e8a page_symlink +EXPORT_SYMBOL vmlinux 0x2e162e4b __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x2e1b8c87 fb_blank +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e555e43 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e7dffc7 deactivate_super +EXPORT_SYMBOL vmlinux 0x2e8f0542 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x2e9ff8e4 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x2eb5c186 tty_mutex +EXPORT_SYMBOL vmlinux 0x2ec56f61 dquot_enable +EXPORT_SYMBOL vmlinux 0x2ee1a1d5 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x2ef4f860 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0b1631 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x2f0dc593 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x2f0f08c8 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x2f102eb0 consume_skb +EXPORT_SYMBOL vmlinux 0x2f11dfbc input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2f2f94b7 param_ops_bool +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3e02ce __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f48491d sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x2f68a41b kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2f6e1eef __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x2f8463e6 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb7e551 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x2fd919b2 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x2fe10c37 tty_name +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe762e7 nvm_register_target +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff7cf2a param_set_copystring +EXPORT_SYMBOL vmlinux 0x2ff89754 con_is_bound +EXPORT_SYMBOL vmlinux 0x2fff7ec0 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x301d9bfd follow_down_one +EXPORT_SYMBOL vmlinux 0x301ebba5 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3027b418 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x30290134 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x305cdd38 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x306575ec free_buffer_head +EXPORT_SYMBOL vmlinux 0x30748e75 nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x307b0945 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308590b3 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ae3db6 simple_dname +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30e6e153 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fa304e hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x312068bc scsi_register +EXPORT_SYMBOL vmlinux 0x3133e969 dst_release +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315b0d73 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x316f44d4 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x317427c4 sock_register +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x318448f9 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x31a97e28 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b75ffa xfrm_init_state +EXPORT_SYMBOL vmlinux 0x31bfb384 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x31c1a6e6 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x31deb2bc bprm_change_interp +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ec44a0 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x31fafcc9 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3209ffa4 ll_rw_block +EXPORT_SYMBOL vmlinux 0x320b5c9f pnp_possible_config +EXPORT_SYMBOL vmlinux 0x320ee497 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x322b4cfc md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x323e3013 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x326092f1 set_pages_wb +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32ab61be mount_single +EXPORT_SYMBOL vmlinux 0x32d9c9a8 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x32daa133 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e07c31 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32e8e98f gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x32fc9cba eth_header +EXPORT_SYMBOL vmlinux 0x3321fa6b bdgrab +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33462f6f sock_recvmsg +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x33773fdf param_set_invbool +EXPORT_SYMBOL vmlinux 0x33850aef agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x338bc842 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x33907486 register_gifconf +EXPORT_SYMBOL vmlinux 0x33939753 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x339a6ac3 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c0f8b4 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33e36c4a dev_addr_del +EXPORT_SYMBOL vmlinux 0x33e9ef6b padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340b47e1 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x3459272b pipe_unlock +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x3469576e tcf_em_register +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3489d366 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a0cf02 inet6_bind +EXPORT_SYMBOL vmlinux 0x34bfeb8c compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x34d951de security_path_symlink +EXPORT_SYMBOL vmlinux 0x34e5f49e wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f71dcf seq_hex_dump +EXPORT_SYMBOL vmlinux 0x35005ac7 d_path +EXPORT_SYMBOL vmlinux 0x3503c004 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x350ab314 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x350e24d3 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35314c7d in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3579a2af sock_no_bind +EXPORT_SYMBOL vmlinux 0x357edfa4 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b469e5 to_nd_btt +EXPORT_SYMBOL vmlinux 0x35d15b83 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x35fc40b4 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x361be54d dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x361f1d8a delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x362eb035 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x365581b5 generic_writepages +EXPORT_SYMBOL vmlinux 0x3659c8e4 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x365eaddf netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x36708bb4 invalidate_partition +EXPORT_SYMBOL vmlinux 0x368a3f10 skb_put +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e9b167 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x3710f6a9 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374c0ddb unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x374f70b2 kill_block_super +EXPORT_SYMBOL vmlinux 0x3763472b __alloc_skb +EXPORT_SYMBOL vmlinux 0x376dc888 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x37710cae padata_start +EXPORT_SYMBOL vmlinux 0x37800f97 flush_signals +EXPORT_SYMBOL vmlinux 0x37903196 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x37a1eba6 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37b9df98 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d11d6e __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x37d2bb34 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x37d78211 proc_symlink +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f39bdb security_inode_permission +EXPORT_SYMBOL vmlinux 0x380459e2 put_filp +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x383e8868 from_kuid +EXPORT_SYMBOL vmlinux 0x383f4446 simple_rmdir +EXPORT_SYMBOL vmlinux 0x3869b094 udplite_prot +EXPORT_SYMBOL vmlinux 0x387b81d8 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x388367e2 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x38849dcb alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x38858eec freezing_slow_path +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388e1eb7 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x38a05b8b deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38acb23b compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x38c94253 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x38d3789c netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x38e04c4f blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x38ef5adb touch_atime +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x39045378 key_unlink +EXPORT_SYMBOL vmlinux 0x39105f20 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39709916 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39b0696f devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c60be6 vme_lm_request +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x39f6c9c2 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a126499 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x3a21dae4 napi_get_frags +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3e6350 find_lock_entry +EXPORT_SYMBOL vmlinux 0x3a40dbbe textsearch_prepare +EXPORT_SYMBOL vmlinux 0x3a645d7e genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x3a6559fe read_code +EXPORT_SYMBOL vmlinux 0x3a85c658 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3a92e8aa ata_print_version +EXPORT_SYMBOL vmlinux 0x3a9a680d agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa81fdc blk_init_tags +EXPORT_SYMBOL vmlinux 0x3aaf8d7d skb_dequeue +EXPORT_SYMBOL vmlinux 0x3ab4159f generic_listxattr +EXPORT_SYMBOL vmlinux 0x3afba33f netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x3b05068d open_check_o_direct +EXPORT_SYMBOL vmlinux 0x3b110fbf xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x3b37fc1c jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x3b3b65c4 __bread_gfp +EXPORT_SYMBOL vmlinux 0x3b63ac2b request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b65c767 led_set_brightness +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b8950a9 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x3b8b595b pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x3babb2a8 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bb6cbc3 vm_mmap +EXPORT_SYMBOL vmlinux 0x3bb94adf __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3bcb0426 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x3bcf6818 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x3c0c4191 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x3c24e11a bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9674a8 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x3cc874ae input_set_capability +EXPORT_SYMBOL vmlinux 0x3cd18663 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf0134d loop_backing_file +EXPORT_SYMBOL vmlinux 0x3d0f256e nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x3d1391e2 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x3d1d2292 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x3d34b5b1 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x3d3790ad elv_rb_add +EXPORT_SYMBOL vmlinux 0x3d751b81 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x3d78aa38 tcp_check_req +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d87358e pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x3d913a77 fb_find_mode +EXPORT_SYMBOL vmlinux 0x3d96d525 unregister_key_type +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3db1870a netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x3dbc65f4 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc6925c blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcc0043 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0579e0 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x3e05b00c inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3020bf generic_write_end +EXPORT_SYMBOL vmlinux 0x3e524e95 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x3e5d126d bdput +EXPORT_SYMBOL vmlinux 0x3e62b1be misc_register +EXPORT_SYMBOL vmlinux 0x3e65f001 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3e6a1a8e scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x3e824a67 phy_attach +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e886adf kernel_param_lock +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e98e878 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x3e9eba0c dev_get_flags +EXPORT_SYMBOL vmlinux 0x3eae8d7c devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x3eca62d3 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x3edb3588 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x3ee5f81d pci_choose_state +EXPORT_SYMBOL vmlinux 0x3ee96c1a dquot_acquire +EXPORT_SYMBOL vmlinux 0x3ee9e73e tcp_init_sock +EXPORT_SYMBOL vmlinux 0x3efab621 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f32859d xfrm_register_type +EXPORT_SYMBOL vmlinux 0x3f3de6e5 framebuffer_release +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6bf472 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x3f730b88 iov_iter_init +EXPORT_SYMBOL vmlinux 0x3f9aecbb fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x3f9b2b37 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x3fa2bda8 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x3fab3e84 blk_put_queue +EXPORT_SYMBOL vmlinux 0x3fbc5341 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff571ff remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x3ff84702 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x3ff9fd62 x86_hyper +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402cfc42 simple_empty +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403d6bf6 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40672578 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x406b4420 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x40808188 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409facc3 pnp_is_active +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ba6500 security_path_unlink +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40c8be2d bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40f330ff uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x40f6759a __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x410479d5 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x4111ce0b vme_master_mmap +EXPORT_SYMBOL vmlinux 0x41232fe6 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415c8093 mpage_readpage +EXPORT_SYMBOL vmlinux 0x41697bb9 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x416d134c dquot_disable +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418cfb79 ata_link_printk +EXPORT_SYMBOL vmlinux 0x4194fabe scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41b5a401 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41c0bcde twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x41c34d70 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x41cd319d parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x41ceecf0 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421df779 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424cb529 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42601314 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x429c0347 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a353ab ppp_dev_name +EXPORT_SYMBOL vmlinux 0x42c2f6d1 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d50126 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x42dd5041 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43103a8b lock_fb_info +EXPORT_SYMBOL vmlinux 0x433d7fb8 param_set_long +EXPORT_SYMBOL vmlinux 0x43431135 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x434a74e9 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438be11c nonseekable_open +EXPORT_SYMBOL vmlinux 0x4391e14a new_inode +EXPORT_SYMBOL vmlinux 0x4399dfcb input_release_device +EXPORT_SYMBOL vmlinux 0x43a63f61 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x43a9514a blk_rq_init +EXPORT_SYMBOL vmlinux 0x43b8fe7f jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x43c27e32 vfs_link +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43d70676 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x43db6c4c param_get_ullong +EXPORT_SYMBOL vmlinux 0x43f081d1 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fbd980 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4442529b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x4489aa5f md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e00cf __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x4499186c kobject_get +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eeee4d md_cluster_mod +EXPORT_SYMBOL vmlinux 0x44f2327e qdisc_reset +EXPORT_SYMBOL vmlinux 0x44f3dad3 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4519a63f mmc_start_req +EXPORT_SYMBOL vmlinux 0x4519def0 lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x451c71ef blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x452345d6 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454f4255 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x45511ba7 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45894398 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c75377 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x45ca3f84 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x461ac072 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4628f21d ip_do_fragment +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x4638869f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x463fe97a netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x465660c5 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46624476 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46809e2d xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x46895eac pci_map_rom +EXPORT_SYMBOL vmlinux 0x4696882f udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x469f62d5 simple_readpage +EXPORT_SYMBOL vmlinux 0x46b7f6e9 up_write +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46f25a57 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470b9e51 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x4716a49b scsi_dma_map +EXPORT_SYMBOL vmlinux 0x472daff5 send_sig_info +EXPORT_SYMBOL vmlinux 0x4731e70b dquot_commit_info +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x47471549 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x475ddf7a nvm_get_blk +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x477e6dcb amd_iommu_pc_get_set_reg_val +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b92407 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x47ee286a __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x47eeb974 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x47f5ae90 neigh_for_each +EXPORT_SYMBOL vmlinux 0x480693ce max8998_write_reg +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x483978f6 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48558ce9 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x48581077 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486ab000 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x4897541f add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x489bb979 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x48aa1f6d mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48de73da __elv_add_request +EXPORT_SYMBOL vmlinux 0x48e41a83 mpage_readpages +EXPORT_SYMBOL vmlinux 0x48e64c52 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x48f6b09d generic_readlink +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x492294b4 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x4923ef60 inode_change_ok +EXPORT_SYMBOL vmlinux 0x4929c05f nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x4946ac6d jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4997a326 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x49a1ab8a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b9cf6a inet_del_offload +EXPORT_SYMBOL vmlinux 0x49d16120 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x49de40be __skb_checksum +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a08eead dev_printk +EXPORT_SYMBOL vmlinux 0x4a0e2fd4 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x4a15f03e is_bad_inode +EXPORT_SYMBOL vmlinux 0x4a2061fd __serio_register_port +EXPORT_SYMBOL vmlinux 0x4a2eccb0 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x4a383f83 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x4a5d990e pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4a6b6c5a dquot_operations +EXPORT_SYMBOL vmlinux 0x4a6ea22d bio_phys_segments +EXPORT_SYMBOL vmlinux 0x4a765a7b dev_get_by_name +EXPORT_SYMBOL vmlinux 0x4a85a3fb cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4a8fec88 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x4a967e06 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4ab9e303 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x4abaec95 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac1a981 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x4acc3d9c phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ae813d7 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0d8b07 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x4b1f2876 bio_reset +EXPORT_SYMBOL vmlinux 0x4b2e6d42 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x4b3469db inet_accept +EXPORT_SYMBOL vmlinux 0x4b546026 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x4b589fa1 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b733ce0 do_splice_direct +EXPORT_SYMBOL vmlinux 0x4b747365 bio_advance +EXPORT_SYMBOL vmlinux 0x4b876fa1 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x4b92b7ca mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x4b98912f dqget +EXPORT_SYMBOL vmlinux 0x4b9c4277 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bf2c28c dump_align +EXPORT_SYMBOL vmlinux 0x4c076166 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c1fcfae key_reject_and_link +EXPORT_SYMBOL vmlinux 0x4c241500 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x4c288ab2 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c8a9759 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cbe5431 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdc9fd8 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x4cdf83a3 netdev_emerg +EXPORT_SYMBOL vmlinux 0x4ce276a7 phy_suspend +EXPORT_SYMBOL vmlinux 0x4ce5615c iov_iter_advance +EXPORT_SYMBOL vmlinux 0x4d137247 serio_open +EXPORT_SYMBOL vmlinux 0x4d2cfbe5 param_get_uint +EXPORT_SYMBOL vmlinux 0x4d2d766f zero_fill_bio +EXPORT_SYMBOL vmlinux 0x4d3ed3c6 elevator_change +EXPORT_SYMBOL vmlinux 0x4d44cd5a iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x4d5e503d pcim_pin_device +EXPORT_SYMBOL vmlinux 0x4d76ba2d ip6_route_output +EXPORT_SYMBOL vmlinux 0x4d84c0de sock_i_uid +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dad1a17 scsi_host_put +EXPORT_SYMBOL vmlinux 0x4dae68f7 fb_class +EXPORT_SYMBOL vmlinux 0x4dbc1d3e netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x4dcf10aa ppp_channel_index +EXPORT_SYMBOL vmlinux 0x4ddb19d1 dev_deactivate +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec0d85 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df59e54 single_release +EXPORT_SYMBOL vmlinux 0x4e081892 mmc_add_host +EXPORT_SYMBOL vmlinux 0x4e0f1430 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x4e259ba9 inet_bind +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e503081 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4e66770d udp_del_offload +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6ae872 vme_dma_request +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e783821 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x4e8458b0 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x4e944571 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x4e998a81 simple_open +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ec2c103 __f_setown +EXPORT_SYMBOL vmlinux 0x4ee574ca blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x4f0c0621 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1d6b2d param_ops_int +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4f79eac1 __kernel_write +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fbab2b0 phy_print_status +EXPORT_SYMBOL vmlinux 0x4fbb2901 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x4fdb7a49 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501d2a65 simple_follow_link +EXPORT_SYMBOL vmlinux 0x503e7494 netif_skb_features +EXPORT_SYMBOL vmlinux 0x5044e3ab __sb_start_write +EXPORT_SYMBOL vmlinux 0x50485bcf dev_activate +EXPORT_SYMBOL vmlinux 0x505221cd security_path_chmod +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x505731a8 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x5062967c mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5092f9bb __d_drop +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b9f6ed unregister_netdev +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50becb19 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x50c7bd27 thaw_bdev +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50da6e52 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f07b23 eth_header_parse +EXPORT_SYMBOL vmlinux 0x5108b9a4 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5139b793 finish_no_open +EXPORT_SYMBOL vmlinux 0x513b0967 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x513f015c ipv4_specific +EXPORT_SYMBOL vmlinux 0x515138f1 udp_prot +EXPORT_SYMBOL vmlinux 0x515c46b7 empty_aops +EXPORT_SYMBOL vmlinux 0x5163b254 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x516c2f48 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5173656b inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x51751915 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x51757a4a __blk_run_queue +EXPORT_SYMBOL vmlinux 0x518efaa9 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x51ba5774 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x51bea128 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x51d00c00 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d3d16c tcp_child_process +EXPORT_SYMBOL vmlinux 0x51d80226 blkdev_put +EXPORT_SYMBOL vmlinux 0x51dcc56c __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x51f688f5 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52279f0c amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0x52373f92 account_page_redirty +EXPORT_SYMBOL vmlinux 0x523e2c1c blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5260f9c5 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x5265f9fb netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x52916562 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52d245f5 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x52db8412 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x530094e2 phy_device_create +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53109302 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x53166dd6 sock_create +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x5324b1d1 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x53320e5b phy_init_eee +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5333f48e devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x5349b40a page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535bd329 get_disk +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x5361d0ca ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x539ab0ea dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a06b54 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x53b5d67d mmc_can_reset +EXPORT_SYMBOL vmlinux 0x53d9901d tso_build_data +EXPORT_SYMBOL vmlinux 0x53f1048d cdrom_release +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ad945 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5441abe3 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x5449e9b4 arp_create +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x546a4f08 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abd947 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x54b42499 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x54bce6e3 dev_notice +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c9f568 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x54ddcc74 __getblk_slow +EXPORT_SYMBOL vmlinux 0x54e660de register_console +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x550d0ef2 elevator_exit +EXPORT_SYMBOL vmlinux 0x551b4dae dst_destroy +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x551db69b register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x55273dc9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x552af20c inet_frags_init +EXPORT_SYMBOL vmlinux 0x552b1e39 iterate_fd +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x556049ac vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x55620e3e ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55841272 skb_find_text +EXPORT_SYMBOL vmlinux 0x559367c6 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x559987dc dcache_dir_open +EXPORT_SYMBOL vmlinux 0x55a6583c vlan_vid_add +EXPORT_SYMBOL vmlinux 0x55d27c2b __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5624fead seq_puts +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x5649d1c0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x565268e8 sg_miter_next +EXPORT_SYMBOL vmlinux 0x566ec029 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x56812d26 sock_init_data +EXPORT_SYMBOL vmlinux 0x568bbb0a param_set_uint +EXPORT_SYMBOL vmlinux 0x568eb322 key_invalidate +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x56a252ed proto_unregister +EXPORT_SYMBOL vmlinux 0x56ab4a08 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x56b396ad jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x56b5662d lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x56b8b10d sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x56b9b0b6 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d4ca56 seq_printf +EXPORT_SYMBOL vmlinux 0x56e14d43 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x56e36b76 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x56efdc02 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57364332 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x57383949 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575a7815 ip_options_compile +EXPORT_SYMBOL vmlinux 0x5760a4da register_framebuffer +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5777310f input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x5779ced6 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579467c9 phy_device_remove +EXPORT_SYMBOL vmlinux 0x57a87fc5 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57e32a74 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x57fcc9b2 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5851cc6d set_device_ro +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x586d8805 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5878d8f2 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58ddc695 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e9e77f lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x58f9c32a try_module_get +EXPORT_SYMBOL vmlinux 0x5907599a pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x591be825 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x592fa36c pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x59462605 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x596935a1 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x596dc4d2 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x59785196 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x5985876a account_page_dirtied +EXPORT_SYMBOL vmlinux 0x598983a1 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59a89ebf generic_ro_fops +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ad26ff bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0d828c dm_put_table_device +EXPORT_SYMBOL vmlinux 0x5a1f78c6 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x5a328b09 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x5a3e7e78 pci_release_regions +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4c6b44 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5a74d85b pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x5a7e5464 phy_connect +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aaede8d set_anon_super +EXPORT_SYMBOL vmlinux 0x5ab964d7 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ad38f52 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b094733 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x5b14778b security_file_permission +EXPORT_SYMBOL vmlinux 0x5b282604 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x5b3052e8 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x5b3b79ed key_payload_reserve +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b599c10 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x5b5d7297 param_ops_uint +EXPORT_SYMBOL vmlinux 0x5b7f33a3 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x5b8cf8dc alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x5b9c808a acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0x5ba9f59c mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x5bb6ca82 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x5bb75bd9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcedd72 set_groups +EXPORT_SYMBOL vmlinux 0x5c002149 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c18e7a8 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x5c22ff6f xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5c2d802b nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x5c39b857 d_tmpfile +EXPORT_SYMBOL vmlinux 0x5c4d6f33 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x5c60afbe __register_nls +EXPORT_SYMBOL vmlinux 0x5c60c2b9 override_creds +EXPORT_SYMBOL vmlinux 0x5c7dd09a __sk_dst_check +EXPORT_SYMBOL vmlinux 0x5c924add __neigh_create +EXPORT_SYMBOL vmlinux 0x5ca51630 uart_register_driver +EXPORT_SYMBOL vmlinux 0x5cacaef0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x5ce06668 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x5ce3ff32 single_open_size +EXPORT_SYMBOL vmlinux 0x5cecdd0e dev_uc_del +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfccae0 ps2_end_command +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d11d013 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5d23411d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x5d2adb8d xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x5d3c4fe0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d98f6f2 simple_getattr +EXPORT_SYMBOL vmlinux 0x5ddc997f mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x5df1fb30 ppp_input +EXPORT_SYMBOL vmlinux 0x5e1e391f scsi_device_put +EXPORT_SYMBOL vmlinux 0x5e1f9084 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x5e37be11 device_get_mac_address +EXPORT_SYMBOL vmlinux 0x5e443cf3 freeze_bdev +EXPORT_SYMBOL vmlinux 0x5e587b3a seq_open_private +EXPORT_SYMBOL vmlinux 0x5e5d4ef7 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x5e6e5a83 set_security_override +EXPORT_SYMBOL vmlinux 0x5e8031ca netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eae1ff8 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec1f404 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edaa0cb padata_stop +EXPORT_SYMBOL vmlinux 0x5ee0daa2 force_sig +EXPORT_SYMBOL vmlinux 0x5ee28af6 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x5eeb4b02 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x5ef1a741 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f120f88 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x5f483ea7 genlmsg_put +EXPORT_SYMBOL vmlinux 0x5f4c7837 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f6a46c4 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x5f6c6892 netdev_change_features +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fbd2cd9 udp_disconnect +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdf9b2c inet_addr_type +EXPORT_SYMBOL vmlinux 0x5ff85d30 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x6002b00f input_event +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6011e776 mmc_put_card +EXPORT_SYMBOL vmlinux 0x6013677d to_nd_pfn +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60349f4f pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604292ba blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x6042e46f xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x605ad21f nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6087e6c5 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a546a5 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x60a7fa69 up_read +EXPORT_SYMBOL vmlinux 0x60c9ad3a __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x60d20109 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x60d5ec36 seq_write +EXPORT_SYMBOL vmlinux 0x60d6d107 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x60db2114 dev_uc_init +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f1543f __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x60f9e1a4 vfs_fsync +EXPORT_SYMBOL vmlinux 0x6103beef jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6132be6d del_gendisk +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x615d6bd5 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x615f7701 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x6198408c vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a75090 revalidate_disk +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bd444c setup_arg_pages +EXPORT_SYMBOL vmlinux 0x61cd4952 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x61cd6841 scsi_add_device +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61e2fe13 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x61fdcb51 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x61fe3e70 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x61fefd86 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622ab8b9 page_waitqueue +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x62569c2d kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x626a8028 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x627ede96 write_inode_now +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6286d176 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x629ba962 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x62a0421a posix_lock_file +EXPORT_SYMBOL vmlinux 0x62a89057 nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x62c74df9 vfs_mknod +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631e7cc8 copy_to_iter +EXPORT_SYMBOL vmlinux 0x6345a1b5 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638e65d2 tty_free_termios +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c96960 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x63d57a95 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x63dbf04a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f10286 skb_pull +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x645e1222 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x6479ff91 abort_creds +EXPORT_SYMBOL vmlinux 0x648325b0 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x6486df1e clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64baeaf9 sk_stream_error +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x65048909 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x6504c38b ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x6505775e dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x65100be5 set_page_dirty +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65189be5 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651fab88 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655195a8 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x6551d6a6 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x65620e28 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6583b162 inet_sendpage +EXPORT_SYMBOL vmlinux 0x65918e27 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x65b746d2 request_key_async +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6613809b __dquot_transfer +EXPORT_SYMBOL vmlinux 0x6624e51f pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6635d138 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6642f39e sockfd_lookup +EXPORT_SYMBOL vmlinux 0x66430353 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x66593fb8 mount_pseudo +EXPORT_SYMBOL vmlinux 0x6685788c xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x6687229e blk_finish_request +EXPORT_SYMBOL vmlinux 0x668af376 block_write_full_page +EXPORT_SYMBOL vmlinux 0x66bf39ac __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x66bff34a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x66c6703f __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66eb0385 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x66f224a0 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x66f57d32 dev_load +EXPORT_SYMBOL vmlinux 0x66fb189d genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x670a6dc5 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x6716a7a5 pcim_iomap +EXPORT_SYMBOL vmlinux 0x67183b9b replace_mount_options +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67526fd4 bioset_free +EXPORT_SYMBOL vmlinux 0x675ec6df __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x679f3a88 kernel_bind +EXPORT_SYMBOL vmlinux 0x67a29480 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x67b13f70 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b52440 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d724ac netpoll_print_options +EXPORT_SYMBOL vmlinux 0x67f47937 mmc_free_host +EXPORT_SYMBOL vmlinux 0x68019157 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x681f2e53 down_read_trylock +EXPORT_SYMBOL vmlinux 0x68242b8a phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x6826d355 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x6827d0b4 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x685857fa skb_clone +EXPORT_SYMBOL vmlinux 0x687a18cc ip6_frag_init +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689461eb call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a10eb6 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x68aab516 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x68ab7466 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b9c1e8 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x68c312a2 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x68d0adf1 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x68d24d7e mmc_release_host +EXPORT_SYMBOL vmlinux 0x68d94b2c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x68da3fbd blk_make_request +EXPORT_SYMBOL vmlinux 0x68dc9b00 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x68fd843e cfb_copyarea +EXPORT_SYMBOL vmlinux 0x68fe9508 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6910a0bf i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x692f79e6 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x69301510 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69950f6e inet_select_addr +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a6bf02 bio_map_kern +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d3da14 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x69f53672 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x69f85433 inet_frag_find +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1a68ed scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7c3943 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x6a9054f2 ping_prot +EXPORT_SYMBOL vmlinux 0x6a9df3e5 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x6aa8056c blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x6aae2ede dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aea6b36 km_state_notify +EXPORT_SYMBOL vmlinux 0x6aecee0a sk_free +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af3717c pipe_lock +EXPORT_SYMBOL vmlinux 0x6af78be3 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b14d5dd install_exec_creds +EXPORT_SYMBOL vmlinux 0x6b19f2c2 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b523cb3 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x6b5df7e5 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b9b2d1b page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x6ba55d6d kthread_stop +EXPORT_SYMBOL vmlinux 0x6ba899bb pci_get_slot +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcf066d _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x6bd62722 get_io_context +EXPORT_SYMBOL vmlinux 0x6bda079b may_umount_tree +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6bf8101f jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x6bfd6ddb skb_pad +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c2500d0 __brelse +EXPORT_SYMBOL vmlinux 0x6c27fff2 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c4b9b90 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c645ec6 lookup_one_len +EXPORT_SYMBOL vmlinux 0x6c6cbd37 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7d8f3c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x6c924dc5 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x6c93c5a8 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x6c9ce356 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x6c9ec08e blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6ce01b15 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x6cea1810 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x6cf30f71 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d20be29 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x6d2546f3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d367273 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x6d424161 pci_bus_get +EXPORT_SYMBOL vmlinux 0x6d5f461a udp_ioctl +EXPORT_SYMBOL vmlinux 0x6d68e7c4 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x6d7f41d5 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x6d98da81 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x6dbd9014 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e2f37d0 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e967e1b backlight_device_register +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ec320b0 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x6edc6439 __sb_end_write +EXPORT_SYMBOL vmlinux 0x6ef45cfa free_user_ns +EXPORT_SYMBOL vmlinux 0x6ef66e8a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x6ef6ad16 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x6f1bf786 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f475269 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f8123d8 load_nls +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc3bd51 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6ff1efc2 __invalidate_device +EXPORT_SYMBOL vmlinux 0x70139a9d pci_pme_capable +EXPORT_SYMBOL vmlinux 0x7019dbca ab3100_event_register +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x7048695a dev_add_offload +EXPORT_SYMBOL vmlinux 0x704e20bd rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7060afa4 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70796805 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70836752 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x709d61b2 simple_setattr +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x711c107b __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x711e6227 input_unregister_device +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712d2a63 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x7159a120 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x7166d9d1 netlink_unicast +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x718cbeab tty_register_device +EXPORT_SYMBOL vmlinux 0x718f14b4 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x7199f0a9 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a955ef twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x71b6f946 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x71be3489 current_task +EXPORT_SYMBOL vmlinux 0x71c6157a lock_rename +EXPORT_SYMBOL vmlinux 0x71dd3eec dev_mc_del +EXPORT_SYMBOL vmlinux 0x71ffe9b3 param_ops_string +EXPORT_SYMBOL vmlinux 0x72027ca8 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x72107d7c pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x72261561 elv_rb_del +EXPORT_SYMBOL vmlinux 0x7229992a param_ops_long +EXPORT_SYMBOL vmlinux 0x7241b1a6 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x72561c00 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x725acae1 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x72882f87 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b4668a param_get_ulong +EXPORT_SYMBOL vmlinux 0x72c9072b tcf_hash_search +EXPORT_SYMBOL vmlinux 0x72e764a7 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73064e56 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x7309e5e7 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x7312a8a4 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7321e751 set_nlink +EXPORT_SYMBOL vmlinux 0x73361bc3 kernel_accept +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734bb982 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x73541dab dst_discard_out +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x73924972 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x73a584b0 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x73c2d7ec mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x73cd1cac xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x73cf40fc tso_count_descs +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73f0451c dqput +EXPORT_SYMBOL vmlinux 0x7407952a vfs_rmdir +EXPORT_SYMBOL vmlinux 0x7408763a neigh_connected_output +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74431f37 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7473486c sock_wake_async +EXPORT_SYMBOL vmlinux 0x747c7299 lease_modify +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748817e7 d_alloc +EXPORT_SYMBOL vmlinux 0x748cfe79 sock_from_file +EXPORT_SYMBOL vmlinux 0x74b91a82 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c22748 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x74e3a9cd bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eb0426 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x74f89560 __frontswap_store +EXPORT_SYMBOL vmlinux 0x74fa26cf tty_port_close_start +EXPORT_SYMBOL vmlinux 0x74fc0ebe ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x750460ed blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754085f6 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x754ac2ab blk_fetch_request +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x755357f0 tty_port_close +EXPORT_SYMBOL vmlinux 0x7555da0c alloc_disk_node +EXPORT_SYMBOL vmlinux 0x759c0a46 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x75a9be43 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x75ac8ca5 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75daafa8 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x75e65940 nf_log_trace +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x7600975a netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76222f71 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7655541e nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76654628 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x768022fd ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x76aacdca devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ddf0aa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x76f2c708 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x77083f02 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x7711e3d9 register_qdisc +EXPORT_SYMBOL vmlinux 0x771a0543 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771ef56f tcp_prequeue +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77434dc2 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775982e0 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779fc72e udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77f49eb9 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7818fa05 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x783e54d2 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7868492c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x78722c2a ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789b467b xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x789c9ac7 md_error +EXPORT_SYMBOL vmlinux 0x78a24bac __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78c63dc6 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x78d986fd kfree_put_link +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e6cd58 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x791062a5 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x79577d43 cdrom_open +EXPORT_SYMBOL vmlinux 0x7961e2d2 simple_statfs +EXPORT_SYMBOL vmlinux 0x796c66b5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7970f413 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x7979ad0f __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x797a0e80 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x797eb1ef sock_wmalloc +EXPORT_SYMBOL vmlinux 0x7983c846 blk_end_request +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bb55a9 init_buffer +EXPORT_SYMBOL vmlinux 0x79c7f979 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x79cad497 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x79e9b10c generic_permission +EXPORT_SYMBOL vmlinux 0x79ee643f __scm_destroy +EXPORT_SYMBOL vmlinux 0x7a0da6ff mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x7a11cdc3 dcache_readdir +EXPORT_SYMBOL vmlinux 0x7a2518fc iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x7a27071e mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2f9d2c unlock_page +EXPORT_SYMBOL vmlinux 0x7a39c814 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a776d21 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8e2032 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x7a8f206b xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x7a9e84f3 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa44362 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acb0bfc xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7b046979 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b169d7f mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x7b1970e0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2d6952 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b59fe95 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7b5fd99c i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x7b6fdaee cdev_add +EXPORT_SYMBOL vmlinux 0x7b716e24 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x7b7a6779 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x7b7b3e93 dev_addr_init +EXPORT_SYMBOL vmlinux 0x7b98f222 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bbaa39c kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7bfd94c6 drop_nlink +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c206bff set_user_nice +EXPORT_SYMBOL vmlinux 0x7c2a88c7 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c2e1b23 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c57b894 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c727d06 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x7c8c04a7 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca26d9a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc38eda set_disk_ro +EXPORT_SYMBOL vmlinux 0x7cd04e47 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x7cd45570 thaw_super +EXPORT_SYMBOL vmlinux 0x7cde4b51 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce24aa2 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf7717c mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x7d0b6a60 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d159df3 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x7d16eb26 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x7d1bf0fa __get_page_tail +EXPORT_SYMBOL vmlinux 0x7d1c319d ip_getsockopt +EXPORT_SYMBOL vmlinux 0x7d287136 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7d289a5a skb_checksum +EXPORT_SYMBOL vmlinux 0x7d600ee0 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x7d6154e5 __ps2_command +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d76ff69 pci_bus_type +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dccca7c simple_write_end +EXPORT_SYMBOL vmlinux 0x7dd27e97 keyring_alloc +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7de4a39b lock_sock_nested +EXPORT_SYMBOL vmlinux 0x7dec5b07 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e229eb5 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x7e3d7a9c skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x7e400cb5 __register_chrdev +EXPORT_SYMBOL vmlinux 0x7e489649 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x7e5c35b1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7ea5482c i2c_clients_command +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ee4449a devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7f01c3e0 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f06759c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x7f0add9f jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x7f114e0f security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f4bf6ec page_put_link +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f886c55 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x7f9011b3 user_path_create +EXPORT_SYMBOL vmlinux 0x7f9565c2 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc94d61 filp_open +EXPORT_SYMBOL vmlinux 0x7fd4ce31 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x7fdef284 get_fs_type +EXPORT_SYMBOL vmlinux 0x7fe18b8a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ffb2c76 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x8008fc19 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x8016d6cc padata_free +EXPORT_SYMBOL vmlinux 0x80383ac1 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x803ede31 do_truncate +EXPORT_SYMBOL vmlinux 0x8052fb7f xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x808416fd tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x8097afdd inet_stream_connect +EXPORT_SYMBOL vmlinux 0x809c174b pid_task +EXPORT_SYMBOL vmlinux 0x80a7fdd0 put_cmsg +EXPORT_SYMBOL vmlinux 0x80ca204e inode_init_always +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cc9cd3 make_kprojid +EXPORT_SYMBOL vmlinux 0x80d19b2c md_integrity_register +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d792e2 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x80ef9977 irq_to_desc +EXPORT_SYMBOL vmlinux 0x81055088 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81250d19 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x81494e6e pci_select_bars +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815bdc70 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x815ca22d inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x8195ddcb scsi_target_resume +EXPORT_SYMBOL vmlinux 0x81997db9 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x81b98e1c vfs_read +EXPORT_SYMBOL vmlinux 0x81c5c774 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x81d63a5f copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e13d5e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f9beff __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8228a8ca __bforget +EXPORT_SYMBOL vmlinux 0x823a9f11 dquot_alloc +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x824b1779 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x824bdd31 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x825e8769 dentry_open +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82787d79 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x8279016b nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x8288ff5e softnet_data +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x8297cdfa seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bfdf6c bdget +EXPORT_SYMBOL vmlinux 0x82c431b6 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x82ce02ed ht_create_irq +EXPORT_SYMBOL vmlinux 0x82ced22f d_obtain_alias +EXPORT_SYMBOL vmlinux 0x82df0f85 datagram_poll +EXPORT_SYMBOL vmlinux 0x82e9fdf0 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x83072334 __blk_end_request +EXPORT_SYMBOL vmlinux 0x830917c8 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x83165bf4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x832c6bdf netlink_capable +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x83527a53 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x8356a694 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x8369eea7 setup_new_exec +EXPORT_SYMBOL vmlinux 0x836ad739 mount_nodev +EXPORT_SYMBOL vmlinux 0x8384647a acpi_map_pxm_to_online_node +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839c8e38 vfs_readv +EXPORT_SYMBOL vmlinux 0x83a8e075 nobh_write_end +EXPORT_SYMBOL vmlinux 0x83ab98ac bd_set_size +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83bf42ee path_get +EXPORT_SYMBOL vmlinux 0x83bf5faf search_binary_handler +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c89149 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x83cac8bf agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x83d2fbfb backlight_force_update +EXPORT_SYMBOL vmlinux 0x83dec7f8 sk_alloc +EXPORT_SYMBOL vmlinux 0x83df99cf get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84111df4 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84347b53 __kfree_skb +EXPORT_SYMBOL vmlinux 0x84468be3 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8453f199 dcb_getapp +EXPORT_SYMBOL vmlinux 0x84955512 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x84d8bbfe uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x84e1f58e skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x84ecf29a tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x84ffc865 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8504a393 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x855fc2c0 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x85651a0a netif_carrier_off +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x85906d89 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x8596a42b __frontswap_load +EXPORT_SYMBOL vmlinux 0x859a1cbc remove_proc_entry +EXPORT_SYMBOL vmlinux 0x85a3fc81 proc_create_data +EXPORT_SYMBOL vmlinux 0x85aa462a blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85ea20ba dev_addr_flush +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8601a94b try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x860318c2 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x8612595c jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x86142885 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x8628dc5c down_read +EXPORT_SYMBOL vmlinux 0x8640da10 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x864820a2 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x864c4e6b __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x866475b6 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867bdf14 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x86848283 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8696dc37 genphy_suspend +EXPORT_SYMBOL vmlinux 0x869e739e block_commit_write +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a6b430 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x86c7bc63 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x86d7258c phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x86db622f bio_clone_fast +EXPORT_SYMBOL vmlinux 0x86ed3801 __netif_schedule +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8701f58f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x8718d9f8 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8723af0a passthru_features_check +EXPORT_SYMBOL vmlinux 0x8723ded6 efi +EXPORT_SYMBOL vmlinux 0x87312a66 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x8731ae12 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x874e2536 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x8796d2f7 f_setown +EXPORT_SYMBOL vmlinux 0x879ac546 noop_fsync +EXPORT_SYMBOL vmlinux 0x879b1465 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x879e62e0 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x87a4ac7c tcp_parse_options +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87aed3d2 dquot_initialize +EXPORT_SYMBOL vmlinux 0x87bc85eb poll_freewait +EXPORT_SYMBOL vmlinux 0x87bcea93 sync_blockdev +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87f33d9e dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x88009cd8 kobject_put +EXPORT_SYMBOL vmlinux 0x8814e7a2 param_get_long +EXPORT_SYMBOL vmlinux 0x88173ea0 skb_trim +EXPORT_SYMBOL vmlinux 0x882bf281 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x88511664 lwtunnel_output +EXPORT_SYMBOL vmlinux 0x8852fc09 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x8855d05d iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88afdad6 dev_change_flags +EXPORT_SYMBOL vmlinux 0x88ccd60d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x89035e3b tty_port_init +EXPORT_SYMBOL vmlinux 0x8905e654 __seq_open_private +EXPORT_SYMBOL vmlinux 0x890d43b5 write_one_page +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x8971e332 udp_add_offload +EXPORT_SYMBOL vmlinux 0x89925bf4 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x899d3905 param_ops_bint +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89ba5470 nobh_writepage +EXPORT_SYMBOL vmlinux 0x89cdcfb5 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x89cde0c0 __napi_schedule +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e50006 fasync_helper +EXPORT_SYMBOL vmlinux 0x89e66d56 param_ops_charp +EXPORT_SYMBOL vmlinux 0x8a09e18b __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2a9af3 set_create_files_as +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4af04a nvm_submit_io +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6aa54b i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a72555f bdi_init +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab2de0e dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x8ac9912f nlmsg_notify +EXPORT_SYMBOL vmlinux 0x8adacd82 update_region +EXPORT_SYMBOL vmlinux 0x8ae290b5 cdev_del +EXPORT_SYMBOL vmlinux 0x8ae2d0d6 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b01ac4e qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x8b04820f bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8b0e21df pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x8b0ff9ef sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8b2a73ff cdev_init +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b411187 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b825520 vfs_writef +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9c2bb5 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x8ba40c12 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x8ba5a44a bio_copy_data +EXPORT_SYMBOL vmlinux 0x8bc7f568 kernel_read +EXPORT_SYMBOL vmlinux 0x8be2bc4f blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x8bffd924 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x8c05e47a mntput +EXPORT_SYMBOL vmlinux 0x8c07f376 iterate_dir +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c197f0d vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x8c274776 simple_write_begin +EXPORT_SYMBOL vmlinux 0x8c3aa0db inet_shutdown +EXPORT_SYMBOL vmlinux 0x8c460210 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x8c4dc7c8 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x8c5bf044 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8cb62a1a mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccf3f51 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce4d546 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x8ce6e288 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x8ceefac5 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x8cefd306 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8cf13260 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x8cfdfa5b key_link +EXPORT_SYMBOL vmlinux 0x8d08bb71 scsi_print_command +EXPORT_SYMBOL vmlinux 0x8d0ea77e padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6aec71 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x8d6dbdf3 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d923588 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db122e7 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x8db379e5 __dst_free +EXPORT_SYMBOL vmlinux 0x8dc5ca0b mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x8dc62ecf textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8ddca8db skb_copy_bits +EXPORT_SYMBOL vmlinux 0x8dded2c1 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x8de3490d tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x8de4b141 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8ded4817 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e134d55 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x8e181941 seq_release +EXPORT_SYMBOL vmlinux 0x8e1b2387 find_get_entry +EXPORT_SYMBOL vmlinux 0x8e299954 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x8e531618 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e7d4314 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb35f0c lwtunnel_input +EXPORT_SYMBOL vmlinux 0x8ebecc01 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x8eca8b1d nf_log_packet +EXPORT_SYMBOL vmlinux 0x8edfe8ed pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x8ef810c7 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x8efcd393 node_data +EXPORT_SYMBOL vmlinux 0x8f09ec41 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x8f10cefa keyring_search +EXPORT_SYMBOL vmlinux 0x8f177382 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f4781a5 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x8f65d55f con_copy_unimap +EXPORT_SYMBOL vmlinux 0x8f7bd9bf devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x8f92969b current_fs_time +EXPORT_SYMBOL vmlinux 0x8f9b7ff5 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fb83a3d pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x8fd16b55 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x8fe86b3f agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x902d48ca pci_dev_get +EXPORT_SYMBOL vmlinux 0x90308e54 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x90403b22 block_write_end +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904b9019 netlink_set_err +EXPORT_SYMBOL vmlinux 0x90696d1e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x908575fe queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x908d1181 fsync_bdev +EXPORT_SYMBOL vmlinux 0x90be0a7a phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x90ce264a netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x90f94cb1 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x90fc1830 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x910c6f77 cont_write_begin +EXPORT_SYMBOL vmlinux 0x910f50ca register_quota_format +EXPORT_SYMBOL vmlinux 0x91161c06 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x912184ed sock_edemux +EXPORT_SYMBOL vmlinux 0x912ac437 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x9137c02d kernel_connect +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x919e2b83 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x91a63e44 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b5101b kernel_write +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x9224face blk_requeue_request +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x927b87f4 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d09f2f devm_gpio_free +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fcbfc4 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9315ecbe iget_locked +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937bff66 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9382792a param_ops_invbool +EXPORT_SYMBOL vmlinux 0x9384ab2f jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x938ae150 d_delete +EXPORT_SYMBOL vmlinux 0x93a38abe sock_create_lite +EXPORT_SYMBOL vmlinux 0x93a434d9 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b5731e scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x93b96084 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x93be3091 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x93c620b6 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x93d56a47 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x93e68ddb pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x93eb4c32 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x93ee811d __scsi_add_device +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x947440a0 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a9f1a0 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x94cf5b81 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x94d6d05d sock_efree +EXPORT_SYMBOL vmlinux 0x94e04cb4 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95468d41 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x95543cb3 save_mount_options +EXPORT_SYMBOL vmlinux 0x95545272 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x955a998d tty_hangup +EXPORT_SYMBOL vmlinux 0x9572b16b simple_transaction_release +EXPORT_SYMBOL vmlinux 0x957ac78a locks_free_lock +EXPORT_SYMBOL vmlinux 0x95b8d90c nf_afinfo +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x9602a432 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x964da7cc pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x965a4058 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x965ae387 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x96903573 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96df414d nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x96e9b407 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x96f5da00 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x97010c0d sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9703bfd5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x970e4a19 bio_split +EXPORT_SYMBOL vmlinux 0x971ef1b2 input_flush_device +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x97472b00 md_check_recovery +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975542ac jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x976e3f89 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x9779fca9 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a0e094 amd_northbridges +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e28b58 udp_proc_register +EXPORT_SYMBOL vmlinux 0x97f9c990 phy_init_hw +EXPORT_SYMBOL vmlinux 0x97ff723e __scm_send +EXPORT_SYMBOL vmlinux 0x9812ab3e sock_no_poll +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9827418c lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x9827bec1 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98388f3d blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x986dac7b md_register_thread +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x987b75fb dev_driver_string +EXPORT_SYMBOL vmlinux 0x98837097 clear_nlink +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a1cec9 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x98acb2dd pci_get_device +EXPORT_SYMBOL vmlinux 0x98baaa75 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x98be76da invalidate_bdev +EXPORT_SYMBOL vmlinux 0x98bfd032 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98e2842f inet6_protos +EXPORT_SYMBOL vmlinux 0x98e500e7 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x9906012d pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x99158a8b __frontswap_test +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995dd7d0 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x99600c9c input_reset_device +EXPORT_SYMBOL vmlinux 0x9994b641 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b295f5 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x99b3be0b jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x99c79198 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d26ff7 clear_inode +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d607a9 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99e38f21 __devm_request_region +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x99f1ed68 noop_llseek +EXPORT_SYMBOL vmlinux 0x99f4e25f alloc_fcdev +EXPORT_SYMBOL vmlinux 0x99fa9157 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x9a04b3f6 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x9a06c98b md_done_sync +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a699bae jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x9a8427d7 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x9aa7766b iget5_locked +EXPORT_SYMBOL vmlinux 0x9aa8557d input_open_device +EXPORT_SYMBOL vmlinux 0x9ab3c2e7 blk_put_request +EXPORT_SYMBOL vmlinux 0x9ac0784a i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x9adc0059 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x9adc6dcd __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af2f0c8 __page_symlink +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9b089394 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x9b29f44b mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x9b30e051 mount_bdev +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b346175 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b634616 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x9b7d3852 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bafdaab neigh_parms_release +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc0180b inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x9bc6e551 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x9be2a7bc pci_restore_state +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bec6b2c param_ops_byte +EXPORT_SYMBOL vmlinux 0x9c03db44 ip_defrag +EXPORT_SYMBOL vmlinux 0x9c1f167f twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9c23d53d blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x9c2dd05f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c49ef23 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x9c4b14c1 devm_clk_put +EXPORT_SYMBOL vmlinux 0x9c674935 register_filesystem +EXPORT_SYMBOL vmlinux 0x9c8f1224 tcp_poll +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cce1419 netif_rx +EXPORT_SYMBOL vmlinux 0x9cd4c177 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x9ce4f24a filemap_map_pages +EXPORT_SYMBOL vmlinux 0x9d0507eb iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d15fdf3 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x9d17d8a4 sock_no_getname +EXPORT_SYMBOL vmlinux 0x9d255a3a end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x9d323f1a vme_irq_request +EXPORT_SYMBOL vmlinux 0x9d329d22 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3635fd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d76a054 mmc_request_done +EXPORT_SYMBOL vmlinux 0x9d7eea3b ns_capable +EXPORT_SYMBOL vmlinux 0x9d8075e7 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x9d826075 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dd3c6ac d_rehash +EXPORT_SYMBOL vmlinux 0x9ddac8a0 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x9df3f07a blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1b4839 pci_bus_put +EXPORT_SYMBOL vmlinux 0x9e26016b dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3429c2 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e3a6766 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e615235 sock_wfree +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e637cfe __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6e9b86 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e83c7df pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9e8b24fa blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x9e8bf016 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x9e90a311 agp_bridge +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eaf4194 dev_base_lock +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebf6523 __find_get_block +EXPORT_SYMBOL vmlinux 0x9ecb6b10 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x9ecba855 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x9ecf0095 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x9eff6963 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x9f08dd23 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x9f1e2d64 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f503099 d_find_alias +EXPORT_SYMBOL vmlinux 0x9f5a926c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f800065 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9ba429 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05b6d74 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06ff399 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa0715265 bh_submit_read +EXPORT_SYMBOL vmlinux 0xa076f8e1 skb_seq_read +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07bc83d km_new_mapping +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa07ee8e1 uart_match_port +EXPORT_SYMBOL vmlinux 0xa083d48b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0a0227b ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa0a8c0a7 padata_alloc +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ce6ac8 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xa0d3ea66 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e342f9 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ec3153 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fce02d scsi_host_get +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11863be tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12c64bb blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xa1375c55 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xa1389764 bdget_disk +EXPORT_SYMBOL vmlinux 0xa13ddee4 key_validate +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa1506070 complete_request_key +EXPORT_SYMBOL vmlinux 0xa151d584 igrab +EXPORT_SYMBOL vmlinux 0xa163e76d simple_nosetlease +EXPORT_SYMBOL vmlinux 0xa16fdc44 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xa1702e69 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cbdbb6 dst_alloc +EXPORT_SYMBOL vmlinux 0xa1da0c35 mutex_lock +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa2052c7e pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20bdd21 posix_test_lock +EXPORT_SYMBOL vmlinux 0xa2182b59 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xa219768f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xa21c8191 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xa265779b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xa2679e78 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28705bd dump_page +EXPORT_SYMBOL vmlinux 0xa29e4d4a jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2b500cd tcf_register_action +EXPORT_SYMBOL vmlinux 0xa2d40efb neigh_app_ns +EXPORT_SYMBOL vmlinux 0xa2d4993f __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xa2d51da3 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0xa2e0617a scsi_device_resume +EXPORT_SYMBOL vmlinux 0xa2f65871 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa34b0898 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa357dd16 vfs_writev +EXPORT_SYMBOL vmlinux 0xa370bbc3 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xa377d993 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3a2e527 simple_unlink +EXPORT_SYMBOL vmlinux 0xa3b5602a component_match_add +EXPORT_SYMBOL vmlinux 0xa3cadd93 param_get_string +EXPORT_SYMBOL vmlinux 0xa3da9020 param_set_bint +EXPORT_SYMBOL vmlinux 0xa3e375f6 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xa3f2cf3a dma_supported +EXPORT_SYMBOL vmlinux 0xa3f950db vga_put +EXPORT_SYMBOL vmlinux 0xa402134e md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa4123f5e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xa435b370 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xa44def50 dquot_resume +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa46aae5f phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa46d1b31 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa477d8ce tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xa484c949 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xa4a50642 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa4a8777f blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xa4acf8f2 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c19ab0 would_dump +EXPORT_SYMBOL vmlinux 0xa4d25dd2 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa504b1e7 alloc_disk +EXPORT_SYMBOL vmlinux 0xa51dc6ac dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xa5398c23 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xa54a9841 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5663f5e __mdiobus_register +EXPORT_SYMBOL vmlinux 0xa5732b49 skb_insert +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5fb0c72 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa5feba43 submit_bio +EXPORT_SYMBOL vmlinux 0xa6087e94 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xa61082ab skb_store_bits +EXPORT_SYMBOL vmlinux 0xa61257d3 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xa619759a md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa62d6228 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64caa1b free_page_put_link +EXPORT_SYMBOL vmlinux 0xa64ebedd netdev_update_features +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa680e1f8 put_tty_driver +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68adfb3 nf_log_register +EXPORT_SYMBOL vmlinux 0xa69af844 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xa6b1b56a proc_remove +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6fd80d9 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70f5075 tty_unlock +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa716ded3 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73807c0 iput +EXPORT_SYMBOL vmlinux 0xa75154c9 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xa76ba8a4 serio_reconnect +EXPORT_SYMBOL vmlinux 0xa7718c4e fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xa77248bc tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa78d1f99 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xa793fd1e xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xa7ae0ba1 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xa7b4076a register_netdevice +EXPORT_SYMBOL vmlinux 0xa7ec28e3 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xa7f51efc frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xa800abd2 secpath_dup +EXPORT_SYMBOL vmlinux 0xa8200e72 nvm_register +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8260bb9 filp_close +EXPORT_SYMBOL vmlinux 0xa837f38e thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85920db pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa875e83c bmap +EXPORT_SYMBOL vmlinux 0xa8944e55 __quota_error +EXPORT_SYMBOL vmlinux 0xa895bb3f request_key +EXPORT_SYMBOL vmlinux 0xa899626d devm_ioremap +EXPORT_SYMBOL vmlinux 0xa8998214 tc_classify +EXPORT_SYMBOL vmlinux 0xa899952e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa89dc15e d_prune_aliases +EXPORT_SYMBOL vmlinux 0xa8a8d32b blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xa8ee10af genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa8f4593e simple_lookup +EXPORT_SYMBOL vmlinux 0xa8f5eded vfs_statfs +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa903d342 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xa9165618 dev_trans_start +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa925ed21 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xa940302d blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xa94869fc misc_deregister +EXPORT_SYMBOL vmlinux 0xa94d1d93 register_key_type +EXPORT_SYMBOL vmlinux 0xa95986fd mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xa9610a46 skb_make_writable +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97da793 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xa987fe17 sync_inode +EXPORT_SYMBOL vmlinux 0xa98cbe3d clk_get +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b5b10f elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9e28b0f blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xa9e51106 param_set_ullong +EXPORT_SYMBOL vmlinux 0xa9f2e376 truncate_setsize +EXPORT_SYMBOL vmlinux 0xa9f458d9 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xaa081f0f genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xaa090e83 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xaa224663 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xaa38da53 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6e323e inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7452fd security_path_mkdir +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadfdebc pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf14a9c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xaaf3dcf7 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xaaf41b5d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab0f923c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xab1d7eb0 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xab47b8a3 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xab4ae0e7 fs_bio_set +EXPORT_SYMBOL vmlinux 0xab4f515d xfrm_state_add +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab57f624 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xab58c61b mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xab58d174 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xaba3159c gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabea9c5d bio_chain +EXPORT_SYMBOL vmlinux 0xabf4ef2c mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0dc891 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xac0f19ad follow_pfn +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac266fe5 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xac2c4353 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xac2eee06 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3e2127 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xac44986e prepare_binprm +EXPORT_SYMBOL vmlinux 0xac504dc1 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xac78e911 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xac7fa9e4 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xac9c26ea inet_release +EXPORT_SYMBOL vmlinux 0xaca0fa6d console_stop +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacbaae1d acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xacbe51e9 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf99ea2 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad040b20 __destroy_inode +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0bdc62 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad33d135 drop_super +EXPORT_SYMBOL vmlinux 0xad38ec76 napi_disable +EXPORT_SYMBOL vmlinux 0xad49d93d blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xad5ebd22 __get_user_pages +EXPORT_SYMBOL vmlinux 0xad696fa7 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad6ff45e agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xad73e07f elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xad7810f7 dev_set_group +EXPORT_SYMBOL vmlinux 0xad7ab6fd file_path +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada89548 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xadb0837a acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xadfd7603 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae0481ab find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xae04ac92 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xae1cdba0 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xae427a75 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xae614cd9 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xae7970c6 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xae7a7d07 set_wb_congested +EXPORT_SYMBOL vmlinux 0xae8098b9 tty_port_open +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeedc158 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xaef63452 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xaef89ef5 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xaf009adb scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xaf027bf3 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4980aa put_io_context +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf62588a blk_integrity_register +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6dc719 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xaf7977c4 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xaf7aeebc i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xaf8e02a9 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xafa6aa91 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xafb32a5b put_disk +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafd2d2e5 md_flush_request +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafde64a7 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xaffaa560 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb04ffee6 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb079f21f scsi_device_get +EXPORT_SYMBOL vmlinux 0xb0802702 from_kgid +EXPORT_SYMBOL vmlinux 0xb080ae61 netif_device_attach +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e13618 vm_insert_page +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f75c61 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xb0fade7f agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12bcc35 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15023dd nvm_end_io +EXPORT_SYMBOL vmlinux 0xb1586942 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1648feb fb_show_logo +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb18c3ce3 follow_up +EXPORT_SYMBOL vmlinux 0xb1a12f4f block_invalidatepage +EXPORT_SYMBOL vmlinux 0xb1a6941a param_set_ushort +EXPORT_SYMBOL vmlinux 0xb1b6eb97 block_write_begin +EXPORT_SYMBOL vmlinux 0xb1ba7398 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c7e02d __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d010cf generic_perform_write +EXPORT_SYMBOL vmlinux 0xb1fa8fb1 pci_find_capability +EXPORT_SYMBOL vmlinux 0xb20c5bd1 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb20f6ee3 vga_con +EXPORT_SYMBOL vmlinux 0xb211bb8f security_inode_readlink +EXPORT_SYMBOL vmlinux 0xb216182f commit_creds +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb219daee to_ndd +EXPORT_SYMBOL vmlinux 0xb22771bf swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xb22cf4c6 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xb22fa682 ilookup5 +EXPORT_SYMBOL vmlinux 0xb2391225 __module_get +EXPORT_SYMBOL vmlinux 0xb24a5118 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0xb24c6f6d sock_create_kern +EXPORT_SYMBOL vmlinux 0xb25b3c9e param_set_int +EXPORT_SYMBOL vmlinux 0xb25edc97 file_remove_privs +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26a5f6f nd_device_register +EXPORT_SYMBOL vmlinux 0xb2ad4728 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xb2b73c1f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c4cb69 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xb2cf5199 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2ef4bb5 vfs_rename +EXPORT_SYMBOL vmlinux 0xb2f3441e sock_no_listen +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3062b70 lro_flush_all +EXPORT_SYMBOL vmlinux 0xb306478f skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3307ace sock_i_ino +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35b5780 kern_path_create +EXPORT_SYMBOL vmlinux 0xb3630abd phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb364b5f7 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xb376ad4d ppp_unit_number +EXPORT_SYMBOL vmlinux 0xb382861d serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xb39c89bc pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb3c99f46 input_set_keycode +EXPORT_SYMBOL vmlinux 0xb3d0fe1b mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3ee0c21 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xb3f110cd __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb407faea tty_lock +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4417e47 follow_down +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb4984d5a inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xb4b85c6c mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb4bbf862 param_set_ulong +EXPORT_SYMBOL vmlinux 0xb4d5aab7 netlink_ack +EXPORT_SYMBOL vmlinux 0xb4e22d78 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xb52ccde9 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb533f0d9 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb54f57de file_open_root +EXPORT_SYMBOL vmlinux 0xb552db27 da903x_query_status +EXPORT_SYMBOL vmlinux 0xb55700d6 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb58a1a12 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xb5958fd9 d_lookup +EXPORT_SYMBOL vmlinux 0xb5a2dfce __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d49e06 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5ee80be seq_vprintf +EXPORT_SYMBOL vmlinux 0xb5f3b637 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xb5f62ccb simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xb5faa708 netif_napi_del +EXPORT_SYMBOL vmlinux 0xb6206953 sk_wait_data +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb647af9a redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67ef0ee agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69c5a93 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6e0097f proc_set_user +EXPORT_SYMBOL vmlinux 0xb6e9bd6f mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xb6f93743 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb72dd23f scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xb72e033b napi_gro_frags +EXPORT_SYMBOL vmlinux 0xb7336478 ilookup +EXPORT_SYMBOL vmlinux 0xb7349391 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74c44c8 blk_start_request +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb781399a tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xb78f47a4 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb7a62666 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb7c29e3f phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb7d38f0e devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xb817a88b devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xb8186efe __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xb82aded3 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb83070bf vmap +EXPORT_SYMBOL vmlinux 0xb85c3f73 neigh_lookup +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8a8b8fa read_dev_sector +EXPORT_SYMBOL vmlinux 0xb8abf915 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d29743 get_super +EXPORT_SYMBOL vmlinux 0xb8d6487b tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xb8d6b2bd fb_pan_display +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8eecd40 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xb8f6df28 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91dd6cc set_pages_uc +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb931d13c jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xb95962fd prepare_creds +EXPORT_SYMBOL vmlinux 0xb976bfed twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb9bda697 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb9cc3d11 seq_read +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba0e280f flow_cache_init +EXPORT_SYMBOL vmlinux 0xba2d1020 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4b2ad1 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xba4e664b blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xba5f8075 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xba73adab textsearch_destroy +EXPORT_SYMBOL vmlinux 0xba8b8409 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xbaae67a0 path_is_under +EXPORT_SYMBOL vmlinux 0xbad6e9f7 wake_up_process +EXPORT_SYMBOL vmlinux 0xbadb25cb vme_slot_num +EXPORT_SYMBOL vmlinux 0xbae81133 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xbb022518 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb2f2cb4 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb7c820b dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba66c6f blk_complete_request +EXPORT_SYMBOL vmlinux 0xbba6bec6 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbba8f97a xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbcabb86 nf_register_hook +EXPORT_SYMBOL vmlinux 0xbbd31ace dev_alert +EXPORT_SYMBOL vmlinux 0xbbd53c87 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf2dba2 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xbbf5aea7 seq_release_private +EXPORT_SYMBOL vmlinux 0xbc12c87f phy_device_register +EXPORT_SYMBOL vmlinux 0xbc1a4105 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2a6d81 sock_release +EXPORT_SYMBOL vmlinux 0xbc2aeb40 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xbc4299eb pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xbcb0fa13 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcdc5e62 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xbce8d3f6 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbd0d3aba dump_skip +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd18583b make_kgid +EXPORT_SYMBOL vmlinux 0xbd26b178 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xbd3d5caa neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xbd3e7101 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4c3236 padata_do_serial +EXPORT_SYMBOL vmlinux 0xbd4e726e agp_backend_release +EXPORT_SYMBOL vmlinux 0xbd6a84ae elevator_init +EXPORT_SYMBOL vmlinux 0xbd6d4cad set_cached_acl +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd71a78f dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd969513 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdd96545 read_cache_page +EXPORT_SYMBOL vmlinux 0xbdde9c4d bio_endio +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe25bde4 pci_iomap +EXPORT_SYMBOL vmlinux 0xbe35b5a6 seq_lseek +EXPORT_SYMBOL vmlinux 0xbe3c984f inet_getname +EXPORT_SYMBOL vmlinux 0xbe40d447 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xbe5542b4 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xbe6e3a95 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xbe979a5b security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xbe97aad6 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xbeb9932e pci_request_regions +EXPORT_SYMBOL vmlinux 0xbebb61a0 simple_link +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbee5e58a inet_put_port +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef4eaa0 netdev_crit +EXPORT_SYMBOL vmlinux 0xbf081a36 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xbf16300a dev_warn +EXPORT_SYMBOL vmlinux 0xbf19c49b amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xbf1ad29f netif_napi_add +EXPORT_SYMBOL vmlinux 0xbf2202b3 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xbf22b778 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xbf6b7f3a posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xbf6fa140 end_page_writeback +EXPORT_SYMBOL vmlinux 0xbf6fd0ff security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf90aec6 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xbf98d096 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xbf9b2c94 mapping_tagged +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb786e5 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc80ed0 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xbfd3fa18 sock_no_connect +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff78b69 __lock_page +EXPORT_SYMBOL vmlinux 0xc0171654 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xc025e8e2 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xc0596de6 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc05dfa78 free_task +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc06ec5d0 security_path_mknod +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc087238b forget_cached_acl +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ae8bd2 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xc0bd55b7 neigh_destroy +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0d57912 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc0f2c00d sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc10315a7 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xc1126fda abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xc12003cd vfs_unlink +EXPORT_SYMBOL vmlinux 0xc12c694e blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xc13eea28 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xc1433072 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xc1460e98 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1917685 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xc193774b PDE_DATA +EXPORT_SYMBOL vmlinux 0xc19b5d0a dm_register_target +EXPORT_SYMBOL vmlinux 0xc19fd01b tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1e57aa7 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xc20fcd00 scsi_execute +EXPORT_SYMBOL vmlinux 0xc221b6cf blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xc236047c dma_pool_create +EXPORT_SYMBOL vmlinux 0xc23ba80d mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc28c3337 dquot_destroy +EXPORT_SYMBOL vmlinux 0xc29149c5 kill_bdev +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2d2477e key_put +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ed56e4 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc30a6f1c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc314958e inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc32a9316 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc32b56c2 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xc34a8b65 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc34d0cdb blk_recount_segments +EXPORT_SYMBOL vmlinux 0xc368f461 input_inject_event +EXPORT_SYMBOL vmlinux 0xc369cf7c dquot_quota_off +EXPORT_SYMBOL vmlinux 0xc381c5ba input_grab_device +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b35f7c task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d0f8ff neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xc3e1dd67 ps2_init +EXPORT_SYMBOL vmlinux 0xc3f0d905 file_ns_capable +EXPORT_SYMBOL vmlinux 0xc431d333 register_md_personality +EXPORT_SYMBOL vmlinux 0xc45f63ef pnp_get_resource +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc484244e pci_get_subsys +EXPORT_SYMBOL vmlinux 0xc49808f9 pci_match_id +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc499f03a xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xc4c34218 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xc4d3bac8 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xc4e62363 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xc4e87ba1 file_update_time +EXPORT_SYMBOL vmlinux 0xc4f41029 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xc4fb581a pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xc50200a8 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc5050a21 d_instantiate +EXPORT_SYMBOL vmlinux 0xc50ae3d7 tty_do_resize +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc5296710 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc5616b9f d_walk +EXPORT_SYMBOL vmlinux 0xc56aeeee tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b96494 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5df1aa8 netdev_info +EXPORT_SYMBOL vmlinux 0xc5ed38dd pci_pme_active +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6030d61 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xc606eb56 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xc613c33b mntget +EXPORT_SYMBOL vmlinux 0xc6300be4 submit_bh +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc679c2a3 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c84cb6 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6da5b34 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xc6dd73e2 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xc71ddf6c csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc73536c7 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xc745d0bf rtnl_unicast +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bb4cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7bd553f pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc7f442df __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc7ffc17b sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xc809d3b3 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xc80dfc7a truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc814beff vga_client_register +EXPORT_SYMBOL vmlinux 0xc825f395 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xc8343eb8 __break_lease +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8526da3 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xc85781b3 eth_type_trans +EXPORT_SYMBOL vmlinux 0xc8623971 dquot_get_state +EXPORT_SYMBOL vmlinux 0xc8657042 genl_notify +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88ea09d scm_detach_fds +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89f3d96 vga_get +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b61a9b jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xc8b97fe1 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xc8c07b2e xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91d9308 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xc9427d3f devm_memunmap +EXPORT_SYMBOL vmlinux 0xc94f76a4 phy_disconnect +EXPORT_SYMBOL vmlinux 0xc9576651 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xc95bf0fb vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xc9629afd path_noexec +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9646d78 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc96ffe54 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9982031 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9a6b7a2 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xc9a8efd6 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xc9db3592 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xc9e2d102 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xc9fc5fe1 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0ef0e4 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1239d4 vme_bus_type +EXPORT_SYMBOL vmlinux 0xca235ad6 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xca36b1dd __skb_get_hash +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca66e645 make_bad_inode +EXPORT_SYMBOL vmlinux 0xca71613d key_type_keyring +EXPORT_SYMBOL vmlinux 0xca7fbafc napi_gro_receive +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa9e521 I_BDEV +EXPORT_SYMBOL vmlinux 0xcaac6403 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xcad38a77 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xcad46805 netdev_state_change +EXPORT_SYMBOL vmlinux 0xcad5f271 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xcae2c1a2 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xcaea5ddc dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xcaeb964f neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafa6c99 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb04721a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xcb1ebea5 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xcb205ba1 sync_filesystem +EXPORT_SYMBOL vmlinux 0xcb2457ec tty_port_put +EXPORT_SYMBOL vmlinux 0xcb34f274 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xcb37ffb5 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xcb4656e3 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcb52c853 have_submounts +EXPORT_SYMBOL vmlinux 0xcb56510c devm_request_resource +EXPORT_SYMBOL vmlinux 0xcb665724 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb7e4936 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc6bc79 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbdc2b66 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xcbddbc23 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xcbec30c7 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xcbf746f7 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xcc082f1f tty_devnum +EXPORT_SYMBOL vmlinux 0xcc1dcb60 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc26b7a3 d_add_ci +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5eff42 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xcc67a5e2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xcc7fc583 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xcc82add3 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc864dc4 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xcc8bb9ea udp_poll +EXPORT_SYMBOL vmlinux 0xcc8d3f4f acpi_os_execute +EXPORT_SYMBOL vmlinux 0xcc8e0863 release_pages +EXPORT_SYMBOL vmlinux 0xcc912ebc simple_rename +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xcca8cad9 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd7acb3 rt6_lookup +EXPORT_SYMBOL vmlinux 0xcce4d3b3 bioset_create +EXPORT_SYMBOL vmlinux 0xcd0e11de proc_mkdir +EXPORT_SYMBOL vmlinux 0xcd143691 blk_free_tags +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd275ed5 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd38dae1 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xcd44bf55 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5c1a04 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xcd6a8403 dev_crit +EXPORT_SYMBOL vmlinux 0xcd73be8b mfd_add_devices +EXPORT_SYMBOL vmlinux 0xcd8194e6 module_put +EXPORT_SYMBOL vmlinux 0xcd832ebf netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xcd8cb902 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc71e3a fput +EXPORT_SYMBOL vmlinux 0xcde88078 acl_by_type +EXPORT_SYMBOL vmlinux 0xcde9a91b skb_append +EXPORT_SYMBOL vmlinux 0xcdf35ce7 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xcdf91453 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3a0456 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4bdfc9 key_alloc +EXPORT_SYMBOL vmlinux 0xce4d87a9 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xcea3c0bb netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1d78bf alloc_file +EXPORT_SYMBOL vmlinux 0xcf1ee5d8 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xcf594fc4 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf8acef7 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xcf8cb831 kdb_current_task +EXPORT_SYMBOL vmlinux 0xcf997004 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xcfac1283 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xcfb068a0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfd525c3 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xd00039b3 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd03601af elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd074b6f0 key_revoke +EXPORT_SYMBOL vmlinux 0xd080ce6e netlink_broadcast +EXPORT_SYMBOL vmlinux 0xd08776bb tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xd087f47e read_cache_pages +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a414df __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b0b711 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0dd1416 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd13898cd udp_set_csum +EXPORT_SYMBOL vmlinux 0xd13b370a blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xd14a8024 write_cache_pages +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd16e2969 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18a8c78 d_make_root +EXPORT_SYMBOL vmlinux 0xd18b48bb ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xd1a2272f blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xd1bd0039 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1df5b16 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd1e50cbe mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xd1e55760 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1f9527c unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd20f3020 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd21c6bf4 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xd2317de0 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xd2325963 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xd23e8be4 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xd24f8912 param_get_ushort +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25a1332 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd263cf61 key_task_permission +EXPORT_SYMBOL vmlinux 0xd26ccebb blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xd26d368e is_nd_btt +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27c288b param_get_invbool +EXPORT_SYMBOL vmlinux 0xd29c63c2 init_task +EXPORT_SYMBOL vmlinux 0xd2aa2bcd max8925_reg_read +EXPORT_SYMBOL vmlinux 0xd2af9f9e input_register_handle +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f17572 unload_nls +EXPORT_SYMBOL vmlinux 0xd2f70244 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd2fe2ba4 __put_cred +EXPORT_SYMBOL vmlinux 0xd30a143e sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xd31159d1 param_set_byte +EXPORT_SYMBOL vmlinux 0xd3370cf0 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd34fa186 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xd36a6ac1 elv_register_queue +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd3807fb8 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xd3afc68d lookup_bdev +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c9387a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xd3d78871 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xd3eac6e3 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd3f5937f fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xd430b875 skb_tx_error +EXPORT_SYMBOL vmlinux 0xd44e3648 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xd4528569 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd46adbf6 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd46f330c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd471947f netdev_features_change +EXPORT_SYMBOL vmlinux 0xd47822e8 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xd480f657 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4b79694 simple_release_fs +EXPORT_SYMBOL vmlinux 0xd4f5ec2c xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xd50c9c98 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd53f2917 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55b18d4 dma_ops +EXPORT_SYMBOL vmlinux 0xd5728678 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd587c4b2 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5bf3b12 serio_bus +EXPORT_SYMBOL vmlinux 0xd5e41ded devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xd5fef88f load_nls_default +EXPORT_SYMBOL vmlinux 0xd613fe4a tty_unthrottle +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6168f6b reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xd61ed1c3 tcp_connect +EXPORT_SYMBOL vmlinux 0xd6233f0e eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd67d6f5f simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd6834d1a uart_resume_port +EXPORT_SYMBOL vmlinux 0xd6837c03 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68e1d1b _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xd69c222f get_unmapped_area +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6bd6de3 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fee409 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xd6ffc625 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7572957 param_set_short +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd76adf9a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xd76b7270 seq_path +EXPORT_SYMBOL vmlinux 0xd76e5de6 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd791987c alloc_fddidev +EXPORT_SYMBOL vmlinux 0xd79e975d fb_get_mode +EXPORT_SYMBOL vmlinux 0xd7b3873a security_path_truncate +EXPORT_SYMBOL vmlinux 0xd7c1fe76 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xd7d3e0fc tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd80acf37 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xd8194b8e get_acl +EXPORT_SYMBOL vmlinux 0xd8354e8e dev_uc_add +EXPORT_SYMBOL vmlinux 0xd8433999 pci_request_region +EXPORT_SYMBOL vmlinux 0xd859ad5d may_umount +EXPORT_SYMBOL vmlinux 0xd869935b send_sig +EXPORT_SYMBOL vmlinux 0xd86e76f4 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd879ae3c nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xd89b03c9 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a05800 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xd8a6518b ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xd8a73e86 param_set_bool +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8c98643 set_bh_page +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f52af5 stop_tty +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd920c696 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd948c6df tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xd9540fb7 __inode_permission +EXPORT_SYMBOL vmlinux 0xd9642279 agp_copy_info +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd9814e80 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd995aaa6 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9db8346 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xd9fde4e6 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xda3aac23 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda43790a pci_set_mwi +EXPORT_SYMBOL vmlinux 0xda5ff5af locks_remove_posix +EXPORT_SYMBOL vmlinux 0xda6c5177 tty_register_driver +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa0ead5 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xdaad88f6 dentry_unhash +EXPORT_SYMBOL vmlinux 0xdaba4073 vfs_getattr +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf883a5 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xdaf93f21 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xdafde9b2 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xdb025c7d devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xdb10e9af i2c_release_client +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb54c8fa skb_queue_purge +EXPORT_SYMBOL vmlinux 0xdb5fd18a mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xdb66b567 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb85e045 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xdb8eb1a4 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xdb901916 get_cached_acl +EXPORT_SYMBOL vmlinux 0xdb9bc895 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xdb9dd997 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xdba7285f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xdbbd90cb dup_iter +EXPORT_SYMBOL vmlinux 0xdbc3fefb ihold +EXPORT_SYMBOL vmlinux 0xdbc6eddf input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdbc99074 mmc_get_card +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc47b22a nf_hook_slow +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdc6ddb43 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdc8d7c49 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xdca63306 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcd771c9 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xdd0ba562 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xdd31250c vlan_vid_del +EXPORT_SYMBOL vmlinux 0xdd359525 free_netdev +EXPORT_SYMBOL vmlinux 0xdd388578 neigh_update +EXPORT_SYMBOL vmlinux 0xdd3916ba generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd7382f9 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xdd97d6e7 pci_enable_device +EXPORT_SYMBOL vmlinux 0xddb56d46 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xddb583f6 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xddcd77a4 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xddd0aa05 register_cdrom +EXPORT_SYMBOL vmlinux 0xdde462e7 blk_get_request +EXPORT_SYMBOL vmlinux 0xddee6456 bio_add_page +EXPORT_SYMBOL vmlinux 0xddf1c26d devm_clk_get +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde2020f8 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xde33ee07 dquot_release +EXPORT_SYMBOL vmlinux 0xde485d57 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xde4fb440 led_update_brightness +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde7251fe mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xde7391d6 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0xde810fe3 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea009cf inet_frag_kill +EXPORT_SYMBOL vmlinux 0xdeaccdad blk_init_queue +EXPORT_SYMBOL vmlinux 0xdecccf92 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xded1c556 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xded69b7f kern_path +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdef670a6 audit_log +EXPORT_SYMBOL vmlinux 0xdef7d134 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf397aa7 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5fbbf3 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf799484 input_register_device +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8de632 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xdf8e72fc inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xdf8f2d37 vme_bus_num +EXPORT_SYMBOL vmlinux 0xdf8fb509 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xdf914b20 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb73f39 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xdfbb1f3f netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffd58c6 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xe015ba07 dm_put_device +EXPORT_SYMBOL vmlinux 0xe0200082 touch_buffer +EXPORT_SYMBOL vmlinux 0xe022850b inc_nlink +EXPORT_SYMBOL vmlinux 0xe029e766 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe068becf ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xe069a9ff key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0761575 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0892bb4 blk_peek_request +EXPORT_SYMBOL vmlinux 0xe08d9ca2 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xe093a075 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b42f24 icmpv6_send +EXPORT_SYMBOL vmlinux 0xe0dc95b1 tty_throttle +EXPORT_SYMBOL vmlinux 0xe0ed71fb dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xe0eee1b8 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xe0fa0e72 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe119a1ef led_blink_set +EXPORT_SYMBOL vmlinux 0xe1234805 copy_from_iter +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13b348c pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe13bb976 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe153e6a0 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xe163f604 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe179d209 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe18821ec __inet_hash +EXPORT_SYMBOL vmlinux 0xe18c1165 seq_file_path +EXPORT_SYMBOL vmlinux 0xe1c35b90 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xe1cc2f0f xattr_full_name +EXPORT_SYMBOL vmlinux 0xe1d7bdb1 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xe1e13cf7 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe1efae30 unregister_console +EXPORT_SYMBOL vmlinux 0xe1fe34ed __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe2044ec8 path_put +EXPORT_SYMBOL vmlinux 0xe2104e4b xfrm_input +EXPORT_SYMBOL vmlinux 0xe21311bc tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xe214a2ed find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xe227b257 set_pages_x +EXPORT_SYMBOL vmlinux 0xe22eb36e udp_seq_open +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24001e0 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xe2403cc3 register_shrinker +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe2610b39 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xe26c647c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xe290b0fb param_get_int +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29d3210 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b6f4ce __devm_release_region +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d9ca7d devm_memremap_pages +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe303a602 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xe30f0e61 set_pages_nx +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe337b9ab compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe34b590d ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xe34d0751 blk_get_queue +EXPORT_SYMBOL vmlinux 0xe34d24e6 request_firmware +EXPORT_SYMBOL vmlinux 0xe35a4c9c pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xe3a4a3d6 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3aae409 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xe3b593bf scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3c0f3f5 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xe3cb36f2 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dc792d tty_set_operations +EXPORT_SYMBOL vmlinux 0xe3f37a08 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xe40a6078 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xe40c4661 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xe4230e16 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xe42a23d2 phy_detach +EXPORT_SYMBOL vmlinux 0xe463d72f dma_common_mmap +EXPORT_SYMBOL vmlinux 0xe468da66 inet6_release +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4902185 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe4bfeb4e buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xe4c29dfc scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4f955ff scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe4ffa333 netdev_alert +EXPORT_SYMBOL vmlinux 0xe51bc2db input_allocate_device +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe556b0f8 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xe573ce7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59c4099 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xe5b33a58 vfs_llseek +EXPORT_SYMBOL vmlinux 0xe5b5f567 mpage_writepages +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d68b82 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe6429305 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe659818f eth_gro_complete +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe65f95dc get_task_io_context +EXPORT_SYMBOL vmlinux 0xe6789397 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xe680e3f6 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xe684ca04 scsi_unregister +EXPORT_SYMBOL vmlinux 0xe68da428 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a6891b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe6e917fc security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fdd8a6 vme_slave_request +EXPORT_SYMBOL vmlinux 0xe7008169 param_get_short +EXPORT_SYMBOL vmlinux 0xe70ccd34 make_kuid +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe725e71a is_nd_pfn +EXPORT_SYMBOL vmlinux 0xe72ad169 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe785b6ce phy_start +EXPORT_SYMBOL vmlinux 0xe7a68853 vfs_symlink +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ffa053 vfs_readf +EXPORT_SYMBOL vmlinux 0xe8199cd1 get_phy_device +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe81efdcb skb_queue_head +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe842fc90 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe86755ca tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xe86f59ba pci_set_master +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b7b9e inet_add_offload +EXPORT_SYMBOL vmlinux 0xe87c1f23 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b33184 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cfc563 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xe8db8dd2 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xe8dd1a08 __pagevec_release +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe8f778f9 arp_tbl +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91a2ca6 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xe921abb7 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xe92396e2 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xe9404a10 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xe9430cb8 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe9950785 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe99f5cd7 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xe9aab913 audit_log_start +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9e0a10b __mutex_init +EXPORT_SYMBOL vmlinux 0xe9e16090 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe9f10dea sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe9f5c3ec dquot_commit +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fff7d0 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea1084ca cdrom_check_events +EXPORT_SYMBOL vmlinux 0xea1ef7d9 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xea28b92d generic_write_checks +EXPORT_SYMBOL vmlinux 0xea3e0d5f ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xea3f725d _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xea4dbd10 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7cd4e7 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xea84693e tty_check_change +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeaacff1f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xeabfebc4 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeadf30af unlock_rename +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae43694 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xeaf65a77 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xeb013047 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xeb1ea30a ps2_command +EXPORT_SYMBOL vmlinux 0xeb266b0d cdev_alloc +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb617cb2 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xeb63d4e6 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xeb717517 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xeb779dfa netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xeb7a5638 mutex_trylock +EXPORT_SYMBOL vmlinux 0xeb860e7e downgrade_write +EXPORT_SYMBOL vmlinux 0xebce6cc3 generic_file_open +EXPORT_SYMBOL vmlinux 0xebd0c08a nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xebf013fb xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec037365 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xec0a61a7 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xec10b0e9 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec67904a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xec6ba354 dump_trace +EXPORT_SYMBOL vmlinux 0xec75b843 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xec763dae tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xeca15bb4 sk_capable +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecbeb6c7 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecdb846a pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecedc262 mount_ns +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed13a774 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xed2abc3f sk_stop_timer +EXPORT_SYMBOL vmlinux 0xed575213 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed5b2247 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xed5c80a3 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xed5f68b9 generic_getxattr +EXPORT_SYMBOL vmlinux 0xed6d4081 tty_write_room +EXPORT_SYMBOL vmlinux 0xed6fdb45 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xed9fddcb crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xedb0f15a kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedee687f pci_claim_resource +EXPORT_SYMBOL vmlinux 0xee02ef1e rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xee0adc9f inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xee2a8509 rtnl_notify +EXPORT_SYMBOL vmlinux 0xee2b769e freeze_super +EXPORT_SYMBOL vmlinux 0xee2c7d29 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee67692d napi_complete_done +EXPORT_SYMBOL vmlinux 0xee69a0d9 input_close_device +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee858c45 __napi_complete +EXPORT_SYMBOL vmlinux 0xee8811b7 bdi_register +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeebbd43c dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xeec0269a skb_checksum_help +EXPORT_SYMBOL vmlinux 0xeeec4238 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xeeed7e72 input_register_handler +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xef041ec1 phy_resume +EXPORT_SYMBOL vmlinux 0xef06c45f block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xef07ab38 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xef274328 tcp_req_err +EXPORT_SYMBOL vmlinux 0xef29d936 __dax_fault +EXPORT_SYMBOL vmlinux 0xef317961 vme_master_request +EXPORT_SYMBOL vmlinux 0xef46415c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xef4cf569 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xef7f1328 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xef846351 param_get_charp +EXPORT_SYMBOL vmlinux 0xef8b88b2 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefb7c199 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xefc00d5f mutex_unlock +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xeffa62eb km_policy_expired +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf002f85e arp_xmit +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf025a3b3 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xf0369d18 dma_find_channel +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf086f1e6 km_report +EXPORT_SYMBOL vmlinux 0xf0877798 get_empty_filp +EXPORT_SYMBOL vmlinux 0xf08c431b dev_emerg +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0a96eb1 km_state_expired +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b82372 d_move +EXPORT_SYMBOL vmlinux 0xf0c35437 migrate_page +EXPORT_SYMBOL vmlinux 0xf0cbaef6 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xf0eaffce _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10fc8cd __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf11c358f posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf12b445f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf170451e xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xf1836ac3 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1bed31c dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf21a4af2 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xf21c3c45 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf2299575 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xf230e19f vm_map_ram +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2475877 get_user_pages +EXPORT_SYMBOL vmlinux 0xf25fdce2 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xf26739fa kill_anon_super +EXPORT_SYMBOL vmlinux 0xf27b4358 proc_set_size +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a1d9df try_to_release_page +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c93140 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xf2f2c396 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xf2fbce2f touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xf2fcf6e8 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf314eb97 mdiobus_write +EXPORT_SYMBOL vmlinux 0xf3256267 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf32a376b sk_mc_loop +EXPORT_SYMBOL vmlinux 0xf32a818f padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf340250b redraw_screen +EXPORT_SYMBOL vmlinux 0xf342cb83 neigh_table_init +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34dcd33 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf358e782 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xf3787901 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xf379d938 eth_header_cache +EXPORT_SYMBOL vmlinux 0xf37a8995 ppp_input_error +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a4bcc1 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xf3e3d8ea pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ec4e01 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xf3ef0bd8 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xf3f32350 md_write_end +EXPORT_SYMBOL vmlinux 0xf4151e07 param_array_ops +EXPORT_SYMBOL vmlinux 0xf416c752 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xf42a1953 do_splice_from +EXPORT_SYMBOL vmlinux 0xf42f878a rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf43b18a5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xf43bc0b3 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf454433f arch_dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xf455789c inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xf4604bdb ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xf46eeda6 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48d3423 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xf497bc22 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4aa6b36 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xf4b65d9d nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4b947d9 blk_start_queue +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ce4faa noop_qdisc +EXPORT_SYMBOL vmlinux 0xf4db680b sg_miter_skip +EXPORT_SYMBOL vmlinux 0xf4e3bdf1 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf4ebdd01 security_path_rename +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f44235 get_tz_trend +EXPORT_SYMBOL vmlinux 0xf4fd3b71 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf504ad6c dev_mc_add +EXPORT_SYMBOL vmlinux 0xf5070abb splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xf50fe1cc jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5442766 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xf55e24c3 dev_mc_init +EXPORT_SYMBOL vmlinux 0xf564413d qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf56d4163 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xf57db6f4 give_up_console +EXPORT_SYMBOL vmlinux 0xf58b45a8 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xf594d255 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a6596c skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xf5ac0d26 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb4a97 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ee50ae vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6700e30 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf6802b7a tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6b3be66 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e1deec page_readlink +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf708a778 vme_irq_free +EXPORT_SYMBOL vmlinux 0xf736040f sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xf74ea43b xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf768a9e1 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7b7563a scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xf7bb223f skb_copy +EXPORT_SYMBOL vmlinux 0xf7bfb3a8 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7d6f9b1 ip6_xmit +EXPORT_SYMBOL vmlinux 0xf7dd8c79 sk_filter +EXPORT_SYMBOL vmlinux 0xf7e780ae end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xf7fc16a1 revert_creds +EXPORT_SYMBOL vmlinux 0xf7ff3c18 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xf806fc50 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xf80eec41 dm_io +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf819163a pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xf8241224 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xf82788c9 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8417124 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xf844c5a5 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xf8631eda scsi_print_result +EXPORT_SYMBOL vmlinux 0xf8827e4c pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xf8833d97 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xf8862ed1 blk_run_queue +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8b44716 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf8c8fc3b phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d62391 i2c_master_send +EXPORT_SYMBOL vmlinux 0xf8ee3f2f vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf91f620d netdev_warn +EXPORT_SYMBOL vmlinux 0xf9219fac pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xf929ccf1 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf930e7d5 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf943122b pci_find_bus +EXPORT_SYMBOL vmlinux 0xf95019a9 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xf974f684 scmd_printk +EXPORT_SYMBOL vmlinux 0xf97d6a48 nvm_put_blk +EXPORT_SYMBOL vmlinux 0xf97f5b5a release_sock +EXPORT_SYMBOL vmlinux 0xf980867a get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xf9970c57 sock_no_accept +EXPORT_SYMBOL vmlinux 0xf9a31e1d mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ae2b14 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xf9b78fd8 vfs_setpos +EXPORT_SYMBOL vmlinux 0xf9bca868 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9cd100a inode_init_owner +EXPORT_SYMBOL vmlinux 0xf9cfab69 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xf9f5c20d devm_memremap +EXPORT_SYMBOL vmlinux 0xfa05f82f iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xfa0e77b2 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xfa4487af unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa9292bb pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xfa9da75d md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xfac79084 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xfac85254 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaca0f4d dev_add_pack +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfacf051a devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xfae4d767 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb22d195 ps2_drain +EXPORT_SYMBOL vmlinux 0xfb28de91 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xfb3088c6 ata_port_printk +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb691d2f gen_pool_free +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6c87df kernel_sendpage +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd78bef put_page +EXPORT_SYMBOL vmlinux 0xfbdb8b6e poll_initwait +EXPORT_SYMBOL vmlinux 0xfbfb2b6b max8998_read_reg +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc04ffde qdisc_list_add +EXPORT_SYMBOL vmlinux 0xfc0dc762 netdev_notice +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc56a848 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xfc6bbf08 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xfc6c740b serio_close +EXPORT_SYMBOL vmlinux 0xfc734327 queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xfc75cd29 down_write_trylock +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc939494 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbfe358 scsi_init_io +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc7621a block_truncate_page +EXPORT_SYMBOL vmlinux 0xfccda08a blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xfcce4242 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf0a3a0 neigh_xmit +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfa7a89 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xfd08711f dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xfd3c8d0d inet_ioctl +EXPORT_SYMBOL vmlinux 0xfd451698 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xfd65d6d5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xfd71ecbb fget_raw +EXPORT_SYMBOL vmlinux 0xfd7ec973 __lock_buffer +EXPORT_SYMBOL vmlinux 0xfd8c2be5 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc1b829 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xfde6f048 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe38a5f3 pci_get_class +EXPORT_SYMBOL vmlinux 0xfe5d30e9 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6f7a7b kern_unmount +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7cd326 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9411d5 pci_disable_device +EXPORT_SYMBOL vmlinux 0xfe94f177 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea410b6 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfedfe78a should_remove_suid +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff23b29a inet_listen +EXPORT_SYMBOL vmlinux 0xff26a05b get_gendisk +EXPORT_SYMBOL vmlinux 0xff2cbc92 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xff30ac22 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xff30be5b blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xff38fe86 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xff49f006 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xff65a30d locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6ce3ef km_policy_notify +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff89eec5 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffa7f749 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xffaf5998 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xffb60471 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xffd2c829 __block_write_begin +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffefebb5 skb_dequeue_tail +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x13a65ecf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x17bf48dc camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x1a08ded1 camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x47129015 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7d54edc2 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7e87ef55 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8f185793 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9e8086dc camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x16061d06 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1636abdf __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1da0e256 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x31bbe42b camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x3f1d79ff lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xc17bb237 lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xfdbbd97e xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x018899ce glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x36f2c575 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x48e18596 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x786a2f9a glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xf2f460e2 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0853a6ec lrw_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0c5a8af6 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0ff3c26d serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x79ff0b7a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x7f3da1a0 lrw_serpent_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9ae34b2f serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9e018632 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9f99663c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xcbdc3ec8 xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x19dc7881 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x5e752773 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x1fd77fb1 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x27351ead lrw_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x47e00bf5 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x61694b97 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8d75ab44 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8e856922 twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xe4ba8689 xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0125c1ce kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01ccd216 __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04715c98 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x070f9719 __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x080b49ea kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x080be3ad __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x09e461c4 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a334ea6 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b00eb33 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b679ca8 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d4adf8b __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f00f6fa kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1076dc16 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x120f58fe kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x13f78878 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1422e3ac kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15e8f5d8 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15efd715 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18d724c9 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a1a2fa0 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a25d0d5 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f2db502 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21564cf4 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21b65f6e kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2245a0ca kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2365ed35 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x266bc512 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x283aa3a0 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28d0f754 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29bebced kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a100035 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a62ee9d kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2df29e3e handle_mmio_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x327c61d6 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33a92f0f kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33e6b7bf kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x344b1f0c kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x369dc123 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38e91033 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b4376f4 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f360ede kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x405a88af kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43695caf kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44046cb1 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x444930dc kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x471f08fe kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48bcbc90 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b185f0c kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d3a9b72 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x52a87994 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x52e4297e kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54a1498b load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x573932ed gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x585a8f11 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5861f37b kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5946b418 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a866d57 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ac72db7 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61a235dc kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61d3d9ee kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64988013 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x654541f8 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a64c706 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b244256 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6bc47d38 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6e8af35f kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f75e3ea __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73974fdd kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73ae496a __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73d65090 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7457480d kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74e6abb2 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x784e992c cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78bdfd7b kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e595e69 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ff1ca84 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8123fe18 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x815ab538 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84a30ed0 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x862b3d16 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89cf21a8 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8cbfd4a7 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d2b4533 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e38a3dc kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ed5eb54 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x939a1005 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94ab49d5 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94b185c7 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x97a4017b kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x97c993bd kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c358207 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa194af73 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa357867f kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4d57013 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac135e7 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac1ac191 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac4fdf76 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac511468 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae98542b kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaebfd845 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf58068a x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb176e630 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1cc6be5 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2021486 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb51fb060 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb560fdfe kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb59bf24c __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb67f9c20 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb6a84a1f kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9842c72 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9abc857 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbcc1665d kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbea9cbcb kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc088f2ff kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc19fd6f3 kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1adc2cb __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3a8f598 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc419eaea kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc599bc18 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6c4b1f8 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7466463 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca796700 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce851e04 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf0b30d5 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3d07f54 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4dcab3d kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd73dfffd reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd977e3cc gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb6c55ec kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc05db2c kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc6e55cd kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd959b95 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde375dcd kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1a3a1fc kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4daa958 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe605ff51 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8163d17 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb4449e5 x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec588327 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec74b530 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed7510d7 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xedc9e321 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf029543b kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf137c807 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1d7581a kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2312a76 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf29f1d2a kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2f286c4 kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf41e94f5 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf6d47d1a kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf89be5fc kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8f4642c __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfaee3bf5 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbd95c91 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc32bffb kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe0ecc4f kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe51053c kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff5492ef kvm_require_cpl +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x43684c7e ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7ff5a779 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x96ddc1fa ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9abae842 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbae64d74 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbdbcb3bc ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe2583a02 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x10b4040a af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x284d6cf8 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4f4e111c af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x67debab7 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x776c7e99 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xaa65bf80 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xb164e14f af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xd30bcf92 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xfdcd7e47 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x93923089 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x08cb436f async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8933405c async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x114d3db4 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x66b24223 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0f995f50 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x13106a8c __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2cc8e5ed async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x657cc96d async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x7b448a08 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xce6583b3 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xf234c8bb blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x306e9beb cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xb3122050 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xe54c9d17 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xe585633e crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x1e972769 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x388ce50e cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x4b987026 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x61faa017 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6aca9a21 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb904b7a4 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xd16b13e7 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xdabd4936 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xea0eb07c cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xf8adde96 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xbe2823fc lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x12ae8eb0 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5db1747b shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6c0ab7e3 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x921dd08f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x97225ebc mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaf97b7f9 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd39efe2d mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xea31797c mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x09719400 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x1da6621b crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x9aa4f7c7 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xf5347b5e crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x1808dd97 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe1006905 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x60a34078 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x53a39b41 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x79a542ab acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x02580558 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1a06f834 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1bc80759 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x302a9b10 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4d7b5579 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5ba3e318 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6777c1ab ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x809a3054 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8942a107 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8a5a1175 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa3b2c158 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa4231511 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa5cb866d ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc52b2b1f ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcad5372c ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd18e8679 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd40c3647 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe77b9667 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeecd109b ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf2789a3e ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfa7e5974 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfe53c604 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3e253acb ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3ea0a8ca ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x656bacec ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x75dc0cb5 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x87f21b5c ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x88ab3894 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa14f0ae6 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa4d1cee5 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb8e85b22 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xddbbb1a6 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe28c9709 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe47ada4a ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf152ae77 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x8f9a07c8 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x516737dd __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6700aee2 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8e664d37 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa7377765 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x103946d6 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e232261 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ed05fc8 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4350792e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4c618dfe bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61a2ef31 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6260175d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x646199cb bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b83411f bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x81e4cad4 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87a41b62 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88b54cec bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa94be299 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbdac55ba bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4025c56 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd9783703 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdb7d51f9 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xef888da9 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf178ff7a bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5313205 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5473490 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6b1482d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf7f568d3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb0e1100 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x50a9b8ce btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5146cf46 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x82f3dcc8 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x883860ad btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x953b4f43 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xbf049354 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0b93c7c8 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x26dc331b btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3dc9a01e btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4702dace btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4ba44cae btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x61827f68 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x62e671fc btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8a9ab666 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb66fbd06 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcef16117 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf00377a4 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1a4a5348 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3307010a btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6a1ee6f9 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6ec59c9e btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x709094c0 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x745fc383 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x92c7b1fc btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb6c596d2 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd0ee0043 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdb2de2de btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe9d7a834 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x6fa0b988 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x96d6d0c0 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x78003550 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x1de1e6a0 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x808964b4 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x01ce01ba adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x032c2bd7 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0f32f141 adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x104d4c6e adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x18289070 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x24d3b9b7 adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2702817c adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2ce4b4dc adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2e253c40 adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x430e23d0 adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x45d28c52 adf_disable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4af45f06 adf_disable_vf2pf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4e2bcb39 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x67642a32 adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x69e3db64 adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6c7a020d adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6d2aa22f adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x87f2fc37 adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8c948e2b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8e845c91 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x968577b9 adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x975da3be adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa4153f83 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb2264564 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb41da947 adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb66dba3d adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc3347e42 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc5846318 adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd233662b adf_enable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd63cffc8 adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd7a3da0e adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe09d0572 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe3b1c3b2 adf_update_ring_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfc7d91e4 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfd090747 adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfe198ea0 adf_service_unregister +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x25642bc1 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x5c1afe0d register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x81038e9b unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x855a02fb alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xaa184c65 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbb78aa93 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd87f5a36 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8409abe8 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa6255755 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc9c3f91b dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xec9b4169 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf4047553 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x3af99288 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xbc347b92 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xebb012d7 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xb0491739 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xba449621 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xbe8f5d17 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xe37739e3 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x773f583b amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b72ed7f edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x24db85e4 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x40eda560 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5800bde2 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b40e3a3 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5bcdd340 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x62518365 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6987a2a1 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d14930e edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x78df0ef8 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ef887e2 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87847e86 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8f6010c0 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x95a3ac61 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbbca7aec edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbc2a105a edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbf0da149 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce2ff04d edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb1beb4a edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xde0dbf3b edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe19a662a edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xee1378e2 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4616739 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x81d75507 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xd3cc2686 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1240d45b fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1268fefb fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6134dedc fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6eeeb9b2 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x822eb58a fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x94319bd2 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x86926a16 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9cdff6b9 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe70027e8 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xeec9db59 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x34a9d9e6 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4670467c drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa4094d8e drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x7c801667 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x9e97f279 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xfc67e90c ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01cdc325 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x02acb12a __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0965c061 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c468975 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11045e74 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2161f475 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x218e483c hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24d3375b hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29977777 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2ce10303 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d9f0dbb hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x36f012ba hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b286993 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4075f34e hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40bfefa0 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x478d07ed hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x569c9c21 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x57729d30 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x590481b2 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x63219890 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d58c038 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84c79b94 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x854cec32 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9396fafe hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x965c6101 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb1f01a49 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2fe7efc hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc4230054 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc4dfe979 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc8037ff5 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb7ff408 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd82e5af8 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd9bd1ec9 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdefb5bb2 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf10c76a9 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe129fe2 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x20598481 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4a2caf18 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x696799ed roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x84616737 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x86560d70 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9a0be932 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd10fcbb7 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1bbdcf58 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1c8d4dad sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2c10275d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x483820b9 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9618acc8 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x98309867 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdec9aaf5 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe3909a3f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xeb9ce142 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x81b314fe hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x06545c71 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x201ef534 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x219c54e8 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3eda37c5 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ba74aeb hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4da36361 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x64142146 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x64b847d6 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x66f4889b hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6b5a2bc1 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x75a6af68 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x89b3bcb5 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8dbc01de hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9f178ac7 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb7f30679 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd152d639 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfbb2c622 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x170e7c08 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x189afc4f __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1a25cd8a hv_do_hypercall +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1c1a76a3 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x25a0a3d2 vmbus_cpu_number_to_vp_number +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2bc95935 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x457f1aa3 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x502608ee vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5a0992e7 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x77a70e86 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7a141dd3 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x86b15c7b vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc3bdf110 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc7a456dc vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe4afa30c vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xece7ed6e vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf53639fc vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x7f8b79ec adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa26f6f8a adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xff25e10a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x009f9284 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x084a4304 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0f8dbe23 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3260e12a pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x61238bff pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x67ed283a pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb2ce7a5f pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc67965c8 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc8018746 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcfd41337 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdf3f9647 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdfe27977 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe938bd4d pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe9628977 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf8339782 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x11f6ba9e intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x38cc56d9 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3c9637af intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3fd588ea intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x639f38bc intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x95049aea intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xa93cecd3 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x1d54708f stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x9734b5ce stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa3f25aa4 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa93cdce1 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd389dc7f stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x04777dad i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x203b3380 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x315e8514 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xafdff294 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf497d76a i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x40454987 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x29b05b86 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbe500375 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x8649e286 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xce9a7539 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x34b5d0ff bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x9d80d71a bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xdf3d779a bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4caca852 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5e05a71c ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7859dd0d ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xaea58657 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb5b85d7a ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb61e75ad ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe4e26d33 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe9af011b ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfcef71e2 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x00368cd7 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x56d1d594 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x12fe94e3 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x1dee58f8 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xb3f9616f bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1c9f3484 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3113ee52 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x37338024 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4c5ca950 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5b1b39d7 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5b6925fb adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x61021d1e adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x922d87f9 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9563bcbc adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9bce416d adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd44a01d4 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfad209cc adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08a98b9a devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x09778eae devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0aa98f32 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0d8d68ae devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x189c0311 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2359200a devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x34c612bb iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x42433948 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48fdba33 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54c5565a iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x55b43275 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x652898ba iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76804e97 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x783bd4a1 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8061fa44 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x843838f1 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x854b1ff7 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8de86e62 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x93f1ac19 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9895671a iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa19b8446 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa20a0f12 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5b2b892 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc74755f8 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcf297898 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd10e6d51 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc20bc43 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8909a68 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xec2efa25 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf1378a44 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf725070a iio_channel_release +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xce8eb239 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x745d7c52 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5a7dece0 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9e0f0ed5 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcde42b8f cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x16b6dfea cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x3f0a0e48 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4c0a3690 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xd1618c45 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf0af06ac cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0dba28a4 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x271bdacc tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x7a690466 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xa5c2c3bc tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0830729b wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0e2a6d69 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x574fdb03 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6be8eb03 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9bdd2169 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb588324d wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc0ffd7cb wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc2806df7 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc3ae79ab wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdf3e70ad wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xebeeca68 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf957d59e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1e62be76 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4553df70 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x60c7923c ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6b6d5891 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7a64c217 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x80a745e3 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb0176d2d ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd966bc43 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfc7492f4 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0b18cd24 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x19fb20a1 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1c60a284 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3769a185 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x38885e1c gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3e6a7add gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x441e36ff gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6820354a gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x76e861c2 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7802f3d5 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc1bd4982 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc3a6e3b8 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdad2946d gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdc9429f9 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe72601f0 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf4e42d91 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf5985b9c gigaset_initcs +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x08fa28dd led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1d0f525e led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x440c28e0 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa57533d6 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcc0566ac led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcdfd0a41 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0c450070 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x303bb8ec lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4dc7ab62 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x5fadfdd1 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x63aa0885 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6c2c8f12 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6c9d8a98 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7e807db7 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd85a8f68 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd9f738f3 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf90fd8f6 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0e5014c9 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x12fef6c8 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x28939cd7 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5f476aa1 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6c98f5b4 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x792db381 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7cb459e0 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7f293f1d mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa12280ec mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc4631195 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc52b9a8f mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc6660c35 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9da0a3a chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1c583d5a dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x32a8b389 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3552211e dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7b5b3b6b dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8e3b7a1b dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x920c52fe dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9ba50bc2 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcfcccc95 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfc2670f3 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9e5b2974 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0e6891f0 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x48df51df dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x78dda7b0 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8d69490b dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9dc21355 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa5909ec8 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb075e57e dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x58ff3a8f dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf0d7069f dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x224e5766 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x22a09fbd dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x73dd3ece dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb5ca7624 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd72fb28a dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf8d85a5c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xfc63447f dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x24f82503 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6d4935f9 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x70bd7e38 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7c3d13c1 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x86fcd710 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8c307bad saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa349bba0 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa3dac612 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdf2dfccb saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfb1fd970 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0b0a278d saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2a05039f saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x34b6d758 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x62ba96d6 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x63d7880e saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9c783346 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xaaf81d17 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0dfff95f smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x25abfdfe smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x26481749 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x29e0c958 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4c7c81b6 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5dcb9f62 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6b0ef45a smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x78b7428f smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9ac4367c smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9e6393ac sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa1de7bce sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaeec2fba smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcc6ed573 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe22613c5 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xea3b8434 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf1cab5c1 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf24a17c3 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xdb5cbca8 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x62fecc30 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x5ec71b97 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x12a657b1 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x244b4129 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x25dc122a media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x2c90964a media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x2e591cda media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x38781525 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x3d038fa2 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x3d7db359 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x3f5d1df4 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x402018d1 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x4da4e85a media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4f5a7f9e __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x9a0afd26 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x9b47542a media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xb7c0610b media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xd2b4265f media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xdc0ba441 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xe0c918eb media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xce26d3e6 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x035c4a8c mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x415c36fd mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4c434c6c mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x511b4c46 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x51dc4d64 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5def056b mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x60b1216c mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6f67f1c6 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x70315af5 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8ac5b809 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa19273ab mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb8f829f5 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcac10631 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd34cbae2 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdb23ed1f mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdcaa008e mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe6027a16 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xed647e19 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf2a1ad73 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x05b4122c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x179ce2a6 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3111e4b1 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x53af3bcd saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x83de3858 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8621233f saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x898da87e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8a4785ce saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8e02447c saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xab32b675 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb75f9298 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbe9b8785 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc6d0ff56 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcbb94d9d saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd2204d8c saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdf932cf8 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe7172912 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe8004474 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf8677715 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x025a2c78 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1e444854 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x500b484e ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6f7bbaa4 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7e1ae9a3 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcfdf5522 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf0a1be85 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x81b15958 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xac28b2ee radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00cdbab2 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0239eba6 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x27f984e0 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x30be7dd3 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x33c15045 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c163e3 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4b9c0a59 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5e4a46ec rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69e4eb31 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7051c8be rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7fc77021 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x80e9c53d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a9461e1 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa50facb0 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8d82c92 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb99c1e67 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc28901b1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0540808 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe14b6e4e rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xaf131c58 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xe157d80e microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x0ea5906f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3a57db1c r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xe58701d0 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe782cad8 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x72764111 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xff7cb3e9 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x24189b12 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x3dd9b5d4 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc9d748ad tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x2059e2f3 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb3914963 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xe0828d81 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x02243729 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x17d4c1a8 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x21d9bda1 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x40cf5c23 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5bea0f6b cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5fb4174b cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6281f485 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b74a7cf cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7278c256 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x83f5383a cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8afc4305 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x93dbffe2 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x99e0e1dc cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa51af819 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbe95e31b cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcc7e81bb cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd209eaf6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd39f7986 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe4e79646 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xffbddbde cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x505da250 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xbbfba144 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0fdb6aaa em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x15c71327 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x171ba703 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2e0bbc65 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5fd2fcdc em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x696f8240 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6e68feb4 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x71cecb67 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8cf43152 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x922d7af3 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa18ae179 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb5f05ae7 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc64ab1b8 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4f5b47b em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdba6ed00 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdeb899d4 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf9b36073 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfb608d7f em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x442f82a1 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x753d6451 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc5c24006 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xf5702ee1 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x8d32a2d7 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb9ff330a v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd69b8dca v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdb3ac67e v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdc348458 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xec748e19 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xcadf1e06 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xd70f35bf v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c330aeb v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x186e389a v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1f87140a v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x20537d60 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2fa58d58 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2fd7b377 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x397ba644 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3a01185a v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x418d4dc8 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4f340cae v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x55d2d11d v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x632e689b v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x637973fb v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7d52b423 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7d81e81e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x84d6091b v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89a5c93c v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8be2f774 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9912b541 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e3d4235 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb5fde681 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcb16a09e v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd848d1be v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe086d24c v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe47b47db v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe748599a v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf28fdb94 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e084f25 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e6be633 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2f17855c videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3f83bbf7 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x42ffe873 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44b88677 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4ed64a2d videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5d12aa34 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x679756f8 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x68b1dd03 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x750952ed videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x84faa6fe videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa10133d0 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa7dafa01 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa88bc40c videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xacd31ffa videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb35fc9e3 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb46eb46f videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbb504d2a videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc014b5e5 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc5263133 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcd59eb3b videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd237e0ff videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf552e3aa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4c20dfed videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xca0862af videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe88b4a50 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfdb60778 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x43eb9f0d videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x503d24ba videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd1c7a4c8 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x072d0d7f vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x07800502 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x46099b15 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x461337a1 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e0e70b0 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f773806 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8514c978 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x887de8f1 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93130547 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b7e1f36 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa80578a6 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc2665e5c vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc442c5e6 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc5e1a045 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd855df1e vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe023c6c0 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf11b3946 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfa84e572 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x1ed2dc07 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xf37d55b8 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xbb836d63 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd97ef9c2 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x32c856bd vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x00dcac08 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x04532001 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1dc34392 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2b8abc0d vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4ca2a7e4 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x65f1907d vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x68400b93 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x69eb59db vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6ce73a1d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6f4b2bf7 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x74099766 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8678c43d vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x926db7ef vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x959c912d vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x97824276 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa1e08e55 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa95714be vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xacb3e897 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb16d52c4 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb254cb43 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb7af3d06 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc62062ed vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc706db27 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xccf6eb84 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd1dff6c9 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe4d8cb5b vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe597d204 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe70cc4fc vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xeb1a7661 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf1bdc5a5 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf89ef6f5 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xfbcb903d vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x0c6ea758 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0525c6a5 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0741529d v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2790fc91 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2bf60e59 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x39284e10 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x39a69383 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3b4a3c73 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3baa019c v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3cf1acea v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45d61b25 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46272cd4 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4f5966c5 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x645625ab v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6c16b9e5 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6df762d7 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74bd3e92 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x761f582e v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x86cac522 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x935f4346 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9aea3dae v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9e6ec8e5 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc3b4ae0e v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5e85520 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe08755b7 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe87e3cee v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xed88d069 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3144a1f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9466abf v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfddc2595 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0bf54760 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6015aae9 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x884086f1 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1e322368 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x27bc872e da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x336d8ecf da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x440e3c68 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa76159a9 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xccf67a41 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xed28ad93 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x04348039 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x4e4bcf0b intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x86fd403b intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa14b6e42 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xbd6e60ca intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x23223144 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4b112d82 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5a915a81 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5a9e7129 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb02c2d34 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbd82c139 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd82b2a52 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfef91083 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2bd94eff lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc57e9a79 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd137a859 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4b40da8d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53d42e80 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x64978776 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x76c98981 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x89b219ea lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9c805e74 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9e83f973 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x01f288e2 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6fd950e4 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc8b8b764 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x94fee9b8 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb137871c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb4a6c5bf mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc64b57f0 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xca4c28fe mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd444a298 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1e9072c4 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x20036f19 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2c66814f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3eeec12f pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x42b299f1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x781657d7 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8b5d3519 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9a49d58a pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa84c046f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb3e97e79 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcbe4029a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2da93bed pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x875e7b9a pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x543a361c pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5e982684 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x86afd0f7 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8bec3810 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xcbcb81d0 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0557de6e rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0ac46a97 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x10b788ae rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x17af47c3 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1e79fd83 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2403c4c9 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x41aa4faa rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x462a8df6 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x49a0e840 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x67c3d18a rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d0754bc rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x76afc30e rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x835ad524 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9382a921 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d864ebc rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb15fe431 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb3c6426d rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb66c93d1 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcdeb7299 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd272270c rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdf7c16b0 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xec75d7d6 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf5cb3c81 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf75d6cea rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x26885665 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3fc2da4b rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x43c20e57 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6467bb76 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x740f3bc7 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8be95f02 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x948d1d1c rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x985e3fa1 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa7857f4f rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb12374b2 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb4ac80e6 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe69b9352 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf2c5ff6c rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0cd6e15e si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22eeb7a9 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22effdd0 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2be90357 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d7ab079 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3cb9cf3a si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3dee1c50 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x409d22ef si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x449ad9ed si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e9037ae si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x689f7e58 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6e6fe54b si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d04df79 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x872dc9d3 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x883bec72 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90273727 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x904d4723 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92ec77e8 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x939cc6f7 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9af1fcb8 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c2991f5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa2b2471f si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa2ea77b6 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa67c4561 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb0e7cd80 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb26a7849 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc624ebef si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd80a622 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xde141e8b si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xea2687d5 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xecb24495 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf1c232f3 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfbebe293 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfe9b27ce si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0463c22e sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x36ab0a81 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6a4cbcc9 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7b2fba8f sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd79049cf sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x65c8b41f am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x92eb14ce am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc184ded5 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfc254953 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x0bde6380 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x4daf400c tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x64f4e3fb tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x859450e4 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x275085c6 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x28c66428 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x94a50d9f cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xca60be24 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf561efee cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x179d0354 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4b0c290d enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x52af12ef enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x653c8529 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7d50edab enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x87040eb7 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa912c540 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe4a593fe enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x16e8575a lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2c1534fc lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4056ebe9 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x79c58537 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x84ccd1ee lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa4f6a76e lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbba0ed6a lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfef8c2c8 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0f273ca8 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x32a6eb42 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x34a3fc97 mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x356c1f6d mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3d562dc5 mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3f887420 mei_cldev_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4534db03 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4c95ca2d mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5b7a27c6 mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5bfd1901 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6876d6e1 mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x793734a4 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x90b87273 mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9f20fae9 mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa507a9c8 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xabbf7dd7 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xadc5e0f8 mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xaf302d80 mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb11212ee mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb46899c7 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb7067019 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcd0595bf mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd47862b8 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd7b1007a mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe155dfdd mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf351e8ce mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x3050fec1 cosm_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x5d640b98 cosm_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x6950045a cosm_find_cdev_by_id +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x762c2c46 cosm_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xeaf7aef6 cosm_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x08aaed5f mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x4515e3fb mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xe1d2ea9e mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xfc57bf57 mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x733abb86 scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x9c3d3729 scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xdc0562f8 scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xecbef2d6 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x03874ac6 scif_unpin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x09376918 scif_vwriteto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x1582f89b scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x19d8e04d scif_poll +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x27e9ce5c scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x2c7d374b scif_fence_mark +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x36997acb scif_listen +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3feada5c scif_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x40fd708c scif_client_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x43c4137e scif_writeto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x4e863ac1 scif_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x681266ea scif_vreadfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x73708936 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x7376bc44 scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x79595d31 scif_client_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x87c491e6 scif_readfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x8ec671d3 scif_fence_signal +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xaa09e08e scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xaf46bf3a scif_register_pinned_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xb2dde955 scif_get_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xbc1dd1f8 scif_put_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xbe9aed5a scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc2acc5c5 scif_fence_wait +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xca2172f4 scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xdf69b39a scif_pin_pages +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x17971288 vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7bf20b18 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xc9e33ee0 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x37befd74 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3a88440a sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3bf1cbb8 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x61051551 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6f39b406 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6f8c6215 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x72120bbf sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x73085157 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x75aef1e7 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7719d81e sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8ebce0c4 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbea12f07 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd3e8d344 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe721447a sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0213ed21 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6f3d5c0c sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7bb972d7 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7cd8a8a2 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9a473261 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9ca4df71 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa184c912 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd9b78d07 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xee53ea04 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x60034f41 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9d1d6ad7 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa2344f3f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4d68fc5a cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xbe9133dc cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc0c3780c cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x134e9ea4 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x07d614e2 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x61f24a9f cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9b054c06 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x05ecd6a5 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x088aac90 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0916b84d mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0b0c1865 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0fc44111 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1948a73c mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19706966 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25a39119 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2767f615 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ce12d71 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x362c15c9 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c74cb0a mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x497a87cd get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x608eaf5f mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x73678d11 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77aed998 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c281061 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x87f50894 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x88d662e1 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x89020df2 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x89812393 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b4aa612 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d641950 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9706aed1 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa14bab4e mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa7e8a5ea mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb8ffa80 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf240e16 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc03f8348 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc8f64219 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcfd0b0eb mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd6f08a31 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd860aef3 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd960e3e mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0db5884 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0f268d7 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe222ca69 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe5441e5d mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef47b1ee mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2a655bc get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf8e0a7d5 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf8e29543 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1479ea0b deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x34895585 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa732f763 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xabcb3cfb mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb19f96f1 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x6f885150 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x90241eb7 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xcecd2c1b sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1149c636 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x34e7f9d6 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x5269ab64 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1c91a70b ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2285240c ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c3a4869 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x40ee2760 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x44c9aa57 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x567d3e1f ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5856d015 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x79328f32 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e540a3d ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7f33bc9c ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8336908d ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x95bec40e ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa8097f4b ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe54f2e62 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x181bbba7 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x859abbde devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5f5b4e92 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x74868e83 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xaf81e9ae c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb605700f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd7f97ae3 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe9807a83 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x14133d11 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x44d5a824 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4a24f6ff can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x57bf429c free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5921fff3 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5a60da81 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5b3e948c alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x690a6fe6 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7a51c1d2 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa18d7aaf alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb4147510 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc0a6aab6 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc615d304 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcaec39ff open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd9e1d55e can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe91892f1 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe92430bd devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf6501d90 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0de84bfd alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1cd6b583 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4d16c8cb free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb8f5ea2a register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x41f08558 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x57e41c14 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7112faca alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd3f5f3f2 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00ba568e mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0218dac7 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0379969b mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05fc7d23 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x067bc7a2 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06c8c55d mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dca8d7f mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0efe387d mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x122251a4 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x125611b3 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14b36a55 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14e5a5f4 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1520e0f5 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x176873ef mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bf10866 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d478d1a mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d6a3d80 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dbca16f mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f6323b2 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2139fb75 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23d05049 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24532bac mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x279b8f16 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x285b76e8 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2954af8f mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a2eab0d mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30cf59b4 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3129242a mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3428759e mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x353de649 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x355610cc mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3887aae6 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c0ba575 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d7f358e mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e6f62c6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f87337b mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41e63b07 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42ba451d __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x470a61f2 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4906408a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ca84bb3 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df0d3c1 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f62317c mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51145749 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51bdf98d mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x527a8c0c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54ef4bdf mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56582227 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56c62ad5 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x592f3f74 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a38e7e6 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5efb4fce mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f128a8b mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60092ec0 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61337625 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x638faa61 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67514442 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67ab31c1 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67cec10c mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69676791 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b703fe6 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e3ffe87 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e65f5ae mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e89b2d1 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ef2ddb4 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72d90c84 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x735dd4fe mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a3d192d mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bc4247e mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80725172 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84ebf188 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a18d094 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c0e7daa mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x934bfce3 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93762196 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93b1dedb mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99aa49b3 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99b6d4ce mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a1e4e6b mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a585e36 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b605ee8 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b8b559d mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c781af5 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d9d3746 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8f72df1 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa95ab53d mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa4bf576 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacd9e273 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafa59db6 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafc9ea36 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0db6219 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb15f3ba5 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4fc2648 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb52e3276 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb696682c mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb70337aa mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7fb365d mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8eec3e0 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba9b2107 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc3c8d45 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc841d3d mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcf9450f mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbded1900 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc072e9ce mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc70bd0d9 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc70c8295 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8b08e4d mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb1c2941 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce5b806b mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce9c6f7f mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0468a90 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde95adaa mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2c79eeb mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3fc7ccd mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe44c9364 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6c099a3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe922b082 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9bd1ee9 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebd8dd1f mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee625b62 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee7fcea0 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0d9a639 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf10001f6 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf31d3e9e mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x019ac43a mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04db2e87 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x054a3852 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1593e4c0 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c92c26b mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d450c3a mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f2c89d4 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24ea9287 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fcead9f mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30114b39 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31f82c9c mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34c3bb76 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38f19595 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fee5554 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ac7c6bb mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x559f97be mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5687d3b8 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x657e3500 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x666f737f mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b953b6d mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cbabeef mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70e6cf26 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x711ae18d mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x716c9167 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b2cbf7e mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dfed8f2 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82d868ce mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ab9d562 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0f02e88 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xacafb73c mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3f899ab mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb59f8480 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9f12e92 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf35218a mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd037a6dc mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1f10e8a mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd302bb82 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc7b1f98 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0ea22be mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe29e9f97 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe34d8731 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2108f93 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf649ba34 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcd2b3da mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe160e9d mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x15538ff3 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xaf72a6cb stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb2e57ac3 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb8d68c80 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf0f72da9 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5ed6fcde stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x60d7a1b2 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x7c211050 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd7b8a503 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x062627a9 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0b985ee9 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1819ff04 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2b04e5a7 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x346611d1 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5aa91abb cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6f6f046d cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x72d0b1c2 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb58f9e24 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xba54539a cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbb0c1e59 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd68b34ca cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe107b09c cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf8116ab4 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfd310af2 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x44fbac2b geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xbd70cb0f geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x20fbe20e macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2ef61240 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x861d220e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb15dc2a8 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xd9516c84 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x03c5e3da bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x218a91e8 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5b0e03d1 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5c7fc942 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x636c0a87 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x71f1629f bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7d8cfc6d bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa884df9c bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbfb631eb bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf11669bc bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x889592a8 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8db98f3b usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb1acbfab usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdacbd313 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x09d52f70 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x344d53d4 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4c08ac8d cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5dc4dfd5 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x723564f4 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8706c190 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdae97f2d cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xec080b3e cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfc43b26c cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x09efc483 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x22ca96a5 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3fffec72 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5deb0207 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6e347dff rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x888b05e2 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x031e5da3 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x076e4cb1 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0aa4c29f usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x139b5cbe usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1683d837 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1aa08f1f usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1bd09fd4 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3051a371 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39861a26 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4575d92f usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4f268628 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x53583a52 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x63f84932 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6743d185 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x72898477 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x776965ec usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x79ffe7e0 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa41f1051 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaec84c15 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb21b7dd9 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2b8bb4e usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb569219c usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5f86b61 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc041d20f usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc5a94a1d usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc5f53cfd usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcaeb8467 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4d0a8cb usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd6999e20 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd74ceee5 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd892c7e6 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xefd93c77 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x76c42cc8 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xadaf8364 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1159c5ef i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x14840687 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x31d552d9 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x35a23867 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5a9e64d9 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6c988b3a i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7470a37e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x90a151b0 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x99f0ea14 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9ae682d4 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d4565b0 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9f28bbfb i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9f73c0f3 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb73be9c0 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe69bc4b7 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee033497 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x63fa360e cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x77902b4a cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc3e7b77b cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xcd43bb38 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xd9f4fe16 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5987886c il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5a39d364 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x68d16312 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc0d75dd2 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xfa5330e2 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x012f4c87 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x07f63667 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x147952b2 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b73b89d iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x25e7c472 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3afbab31 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4169eb14 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x50b86de1 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x50f11f80 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x512a2413 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a24e1af __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5e911386 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5ee5ab54 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x60aabe90 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x72831038 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7918d622 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7c448965 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8bb6b233 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa95831e7 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb1d22c84 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbaf8afa5 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbba7a8f0 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc112a7f1 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4a8fc91 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd0aec19a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd49b4b3e iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe93f88a7 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfeebfbba iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xffa6e882 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x06867371 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1a98ed89 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x21f5ad59 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4104aed9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x42883e6b __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x61de2303 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x77b860b0 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x97cd6ffe lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab64891d lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbcda932e lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd34d2a40 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd8b5778d lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe70eee63 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe85d61a3 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xedd76933 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfb11f1ef lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1654884c lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x177ba705 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x37e17ec2 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x46db1b8e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5caf0ab3 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x955eb6f1 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xac214e45 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaf124d84 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x07deb2b6 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x15ed8297 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2cc915f5 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x446b9370 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4b877f08 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x507adbf6 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x51efee12 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x54b547c4 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6a6818e9 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7c6e69e7 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7e2d4653 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x956beb89 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9d6be731 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xac28748d _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbfb1108e mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc83d894f mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe2b0dfe3 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe458f317 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe62bee50 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x007b1a97 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x18b961f3 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x74acdb32 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x75eb4fcc p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9b914f0d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9fba23f8 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xabc133cf p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb1762811 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc7df16ce p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x22d64c20 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7f1f1fe6 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc4684f94 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe40c1167 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x08ad7212 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0dbc1423 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x146fd3f3 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2f16d7a6 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x32d236dc rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x423a1b13 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x71f412c2 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x77d46504 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x79c51038 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x86e0ce2e rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8d408a7c rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x930645a3 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9a8c5302 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9c5cde1c rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf459542 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb0ab79fb rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb0d27d37 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbf92d041 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc1fd6d7f rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc8fee37b rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xce9c63dc rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd1204fa1 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe2199cab rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe5a79e36 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe8f752a0 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf8ec70d9 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf9d63aae rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0c2824b5 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d8e03ed rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x28524d38 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x530e7f4d rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b7b5674 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5e03c861 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5ea724b4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x615a4d1d rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6ce7ba0e rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x847414db rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ba04f73 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8e758776 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa4b74b20 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa93bff1a rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd542d3c3 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdcc24a84 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfac57a51 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0afc1814 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x22296cc5 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8f4c0b75 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf94316bf rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x015715e0 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x050db031 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x09d8ae7b rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0fe4fd0c rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x140b6f6d rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17b2a855 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x21453829 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28fac88a rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b7fece0 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2c56a2f0 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ccdb578 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e3f7d57 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4603951c rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x547e3ae5 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a2af867 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d5f5550 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x67b1f264 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6c7d9476 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78e22dff rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78e4e683 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85c783e0 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99864d27 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9a07adbe rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e97a095 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa636a7e2 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa9f4e09b rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb0772c54 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb09491ec rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb0d38ac6 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbfd9f9c7 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1da4acc rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc25a105c rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc5408a15 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc5e1d096 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf8631ba rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe380fe1b rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf54fee2a rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfa87e18d rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0bb441ee rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x11e0cdd1 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1943ec56 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x24948b23 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7b03f401 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x80fd0607 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x99e3e983 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc2402d06 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcd42a12e rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd029901d rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdd5a0c1f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xec03560c rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfd95340c rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x045ed223 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0782a64d rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x098805bb rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x147e2316 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x166bb918 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ce48da7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x22029968 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34218dea rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bedff6d rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3df1979b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44df5be8 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4adeb2d6 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x54dd07a2 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x613b43fc rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x663f7234 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6aa3fb27 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x71c5cfea rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73e6bcda rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7491deb1 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x780c39e4 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78bb75dd rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e2efabb rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e969bc2 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8687aa96 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9417b97f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x97702e00 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4f5d941 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xafad9697 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb07da950 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb86cffe3 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbeeba385 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3c76f31 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc72b8636 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc8557e93 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc9d411d5 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc9dd9cfb rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb4fa4be rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd1c94d0 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd3147cbb rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda19212f rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddb9f195 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0dbde23 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec1e23b7 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xedff8d13 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeec44623 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf89e8444 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0f302b67 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x30fca912 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6e72c75d rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8cabb26e rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbe3efe1d rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7d869432 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x93cdcaca rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x98817ee7 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa12b51c5 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x09adaf20 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0ad5d33b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33eb0697 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3bf37e0d rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3df948ff rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x58042d2b rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x59ec4f88 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x726904fd rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x78ee7914 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9fcd8039 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa0d9ed78 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaa37dbfd rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbd3d43af rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbef1d736 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdaea2f26 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe0940e28 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3988d77d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x627e32d7 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xdf741543 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03a15838 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0cbb4f8a wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e19b330 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x155cb00d wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1bf56aa5 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2667a136 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27fa9fd5 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x360d682f wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x393a816a wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x405e0904 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4dd2dcc4 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f1b0628 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6439f772 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x647581dd wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x658eb8d5 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x675df08e wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a684de7 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d290da9 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f2413c9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x74e63ad5 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x750eb5a0 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77330c40 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x790f7529 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x80e3215c wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x877f5f59 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ced8cdd wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x907eb77c wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x988ec981 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99b32a85 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3bae5f1 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa3ebb12 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xad7b8d8b wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb8bcbde7 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba8db513 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd45ac84d wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd76947fe wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7f74af5 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe341e9ba wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea217b4d wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xec15a394 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf002a7b7 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4015257 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf41f1b0c wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdc43da2 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x1dc0cb65 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xbb8daec3 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xccb4325b nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x626ef457 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x78ae9547 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xdc385d27 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xfec0cd99 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1dadd5ea st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8febfaff st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9319ceec st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9a4b0724 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbeae3949 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbfde17bd st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xca6ad883 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe1c0ab0a st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1b5eda38 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x6f479363 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x880136e1 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x45177166 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x84de8c78 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa44bfdb8 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xb40ea149 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc8e2a56b devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xed8b3166 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x0204f963 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x207874a7 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x27a68e70 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xf6745bed intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x809ab1bd asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xe9220cb2 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0xa6c87106 intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x111aafa7 telemetry_set_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1bbf0813 telemetry_add_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1be25432 telemetry_get_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x4294042b telemetry_get_eventconfig +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x4cb51f18 telemetry_pltconfig_valid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x50c1c0a8 telemetry_get_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5847f501 telemetry_clear_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x611fd2a7 telemetry_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x64c6a83e telemetry_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x73dcd24f telemetry_raw_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x82bb2dbe telemetry_get_evtname +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xb78846ce telemetry_set_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbb9a2726 telemetry_reset_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbf0d3d83 telemetry_set_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xcbdc93cf telemetry_update_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe7eb1528 telemetry_raw_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x561c634a wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x876d29f1 wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xda29f8b0 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xfb882fb7 wmi_query_block +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6b7358d9 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xef072283 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xfce8e627 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x2c766d19 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x4b3fbc77 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x8c5e6b4c pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xe0dc6d87 pwm_lpss_bxt_info +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x35acee10 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x40fd2b96 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4596e000 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3ec0b930 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x49ea023a wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x69f5bb0a wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x76876280 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9cb9c53e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa5cc0217 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x04979dc5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03075375 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0beba15f cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a6bc7c1 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1eea71c4 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c99f274 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3139053a cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x36d2e3e6 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x436f2752 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47f270be cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ea35c16 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52149272 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x59d0af8d cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a43c952 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5aae112d cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65c2c858 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66a370df cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66c9af6f cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cbeadf6 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f7e6b4c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76b52c9e cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9279643e cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x977ef767 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa758e7f7 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae1b4d79 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf6d81b2 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb225e56e cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc2529ffc cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc5255a86 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc58609bd cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc7ab0b22 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca5416d5 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4fec96e cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd57790e0 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7f78d1d cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7fc053d cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd917b611 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdcf405ba cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd28e97b cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe95355f0 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe962d506 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe9f66e8c cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea7fe86a cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf31ee460 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4f6e203 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf87463d7 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfadaa317 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x092c90b8 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3080b355 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x343a648e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4ff0eafe fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x636b307c fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e9ef9bc fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x80123b0b fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x932b92fd fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9e01847f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaf6f6ad7 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb2f9a74e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb60cef9f fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb9672351 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe6846a77 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfa242e0c fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfcc05c23 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x15a7297d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4bb735e0 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4cadae54 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x562f0de0 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x79b4525e iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xab0a18ca iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00896ded iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x01e6877a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x032d2e73 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x04ef72ff iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08d3cb0f __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09eed9a5 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0b72f16c iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x28201093 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c47ce50 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c8e5c85 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ed7b927 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3338ab91 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33fa560d iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x345b0988 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d8bdc53 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x498464c8 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ae454fd iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e386d27 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5706365b iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5867d19d __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61ed4d3d iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x629a5e0d iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x629afdd0 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64d1d5d1 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d01f8d8 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a20cb87 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97932166 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98300b56 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98b6313e iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa05d0f2e iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1799d80 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa7c92f06 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafb28873 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb250456c iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2520fba iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0617c5c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9713c09 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0900b8f iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed785563 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee0e9fee iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa9edb0f iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe19b579 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x07629f3a iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x13292199 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x14eed6d4 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x18ee48d2 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x20cd1f9f iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33887f8f iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x371e5f4d iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3c660d9a iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3fcacce1 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x410b6856 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x52eb8dcf iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x543d4025 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x71e18097 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x75b2b2dd iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7de9196 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3e71168 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf644ac64 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0535e43f sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0648ffc2 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x07e6bef6 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x17c9897e sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x193f4a8e sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x34dc1742 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x484a4b0f sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x49b990f5 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52bde04c sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x551c23bd sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x594b2dfc sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x79c1633c sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b965ae3 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8c8bcd09 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8df1092a sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa4a6426a sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc81d471f sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca5afed5 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb9010b1 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd0eaa5a6 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe069b893 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4c3a619 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe8b067c3 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf8696f90 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x035f66f3 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x077bde96 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x097b236b iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e32859e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x109aa745 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17d6ded7 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18a14505 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ea8239d iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26ea637f iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x306ef9e8 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32c4f04c iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f90da7f iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x492de783 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ba3f099 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63aeef0a iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6a10fbda iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70d0e8c7 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x71189fcb iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b9e6096 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x988cca89 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x992b47d5 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9dbdd4a4 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9f1e1973 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa1db0bb8 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa50458f7 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaddc828d iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafd58129 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb07608a6 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc51f96fb iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5623536 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5fbac4d iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc79f11dc iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7c2aa9a iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce5c7fe4 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd846bc8e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb4329bd iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe50b479d iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb0c0867 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0447e4b iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf3ccecd6 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x80177c19 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf3bdcebd sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf6b4af8f sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xfb87934d sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xdcce3b6a spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2bb48c27 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x602b7378 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x64c8e846 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9e3f87c4 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd6bc1999 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xebba94ea srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3c6cec1e ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6f7482be ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x83fba101 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9b660367 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa3a07dd5 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb326e802 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xcd86f1c0 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x1f62f2f9 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x691118f6 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x744779e9 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8bbf05c2 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xaab30819 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd4721e9b ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe6c53aa2 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0c602364 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4afe3ce4 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x62d8a569 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd470226d spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe4476f00 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x08c572c8 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x180332ed dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xadf61ab9 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdcc5ea6f dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x15b2204c spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1ac5b191 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x22b11c08 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3e048e0a spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4ada5717 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4f4171d9 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5c3bd398 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x62336e76 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6e27bc30 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x71c0deb0 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7d94ff25 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x887a9667 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8ece63b1 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xac49cee0 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc7f05fd6 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc8cbe03c spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd40716a6 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf6f86c05 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xa2613f6d ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1a96d458 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2724e258 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2cb6acd8 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x34ee9fd0 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35ee4aa8 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35ef71e0 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c0e1198 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c34ba8f comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d0f6514 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e4b3e24 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x407a55ca comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x426ac0aa comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47fddc75 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51d2f7fa comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b476c7c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a146248 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ba0fa8a comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c662734 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6d81cd8a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73467409 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x79889217 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x87af0bdc comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x894a169c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8bcda34c comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x924ed73f comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa13802a9 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa439240f comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7a8f98d comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba48ebdc comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc3936156 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3f4030d comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd765ad0c comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec1f248c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf54fbcd1 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb7d093c comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0cccb7a5 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1281f4dd comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x15f87bcf comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2a88b62e comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x51bed564 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8192076d comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8cfdda93 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa2dea439 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x18952d9a comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x212145e8 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x700a35f2 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x78587b25 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb4a0b864 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd556181b comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe2470ca8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x06de94e0 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x97a78b9a comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x97d065a5 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe81d46e4 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf33711d3 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xfaad741c comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x39d4003a addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2868d0a8 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x6e38a0f0 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x2b3202c3 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x05fd6405 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x205c2279 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2aa232d7 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2bc3a701 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x378d9393 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x514e1d0f comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6f30813e comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbec8636b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcdbd1278 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd15f76e2 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe56a5e69 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf4507cda comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf797a392 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5fee8413 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6c55b2ba subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe5010aab subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xd4eea263 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x62c698fd das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x14262d5b mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x27cb9239 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2853b369 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x287e115a mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x337c0e5b mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3e70e46f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x44663451 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4b2f1a17 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5ecdba10 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6b763e89 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6ce3c39c mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x76a6cd24 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7cb61a17 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f8ec953 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaddf3052 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb957e1a9 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdcd1d5c8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe1629ce2 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe31a1d6c mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeccf5079 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7945ef8 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xad56bdb5 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xbd9e1603 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x055cfd71 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x1e7aa339 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4d64cb0e labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa63a2bad labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xde9da330 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x03ec6c40 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0e88517f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5013a11b ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7144f392 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8569184a ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xadebdced ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb63acf4c ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb7a959bf ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x30325049 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x449da8a3 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb4fb64b8 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbe9436d6 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xed75fafb ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf2570720 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0ba7497f comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x37037af9 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8bd54c05 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb5f69f88 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb700b6ab comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe39c7b28 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfd3a288b comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x775ee8eb adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x0e9de164 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x16de9fa7 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4a0bc0b5 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x5b916bf5 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x622b275b most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa66d3356 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xb5dbc570 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xc7c5470b channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd5aed6ee most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xe12b169e most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xe1f94858 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf9b6de37 most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/rdma/ipath/ib_ipath 0x1514b2b2 ipath_debug +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x11788a91 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x120a0ce2 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x445c752b spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6e95ce8a spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7092fa59 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7ae58d77 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8d996dc0 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x94eedfc7 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbef528d spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd5d50205 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x064918ab visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0877dd5c visor_periodic_work_start +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0ec0434e visorchannel_zoneid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x149bde55 visorchannel_clear +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x1582a13b visorchannel_signalempty +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x37626eff visorchannel_get_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x39fe5de1 visorchannel_signalqueue_max_slots +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4063ea9d visorchannel_signalqueue_slots_avail +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x411b49e2 visorchipset_register_busdev +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4e4bfbe5 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x5e533597 visor_periodic_work_nextperiod +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x60aaf74b visorchannel_uuid_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x720775df visorchannel_set_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7948d062 visorchannel_get_header +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7a4ec5c5 visor_periodic_work_stop +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7d335b8c visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x85b49e2d visorchannel_get_uuid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x865e5ab6 visor_periodic_work_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x96401fe5 visor_periodic_work_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x9843a26f visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xa428b832 visorchannel_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xaba0634a visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xac7771ac visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xae9128e9 visorchannel_create_with_lock +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb4aab617 visorchannel_write +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xc5dc3977 visorbus_registerdevnode +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xca18358d visorchannel_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc1c63dd visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc89f91f visorchannel_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcd6e4c1c visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd50a1ee0 visorchannel_debug +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe3b5efe1 visorchannel_get_physaddr +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe9721e16 visorbus_clear_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xed313c21 visorchannel_read +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf990f627 visorchannel_get_nbytes +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xc581ed2a int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xfc2aab01 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x0e4ac1a7 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x640d2620 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x8f420b15 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xad1b7fe2 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x030523b7 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x491e6f2b uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd6acabd2 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6c8cdc1a usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9e5b873b usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x4165572e ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x722c6c5e ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5566b61c ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x55a1e133 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa9c9a307 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xd2aba9cc ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe0956520 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xecce3331 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x11057aad gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1188eae5 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x18d05290 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x19605be1 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2297a0fa gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x393b34a0 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x705e251e gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8b11fab7 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x94f8ae61 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9ec45d69 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xae87e947 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc8d34e94 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd3fef3e4 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdd6c80eb gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xee4251dc gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x0ee32c64 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x498c97a4 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x20cb5acc ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x5ad48f18 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xa5aabca0 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x04af16a3 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b63bf49 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x29a3c28b fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2cfb85b1 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3578a211 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x47f34e26 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x64c10adb fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6ae52981 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x75c2dee3 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x772a159f fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7bb3e44e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xacf93a2e fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xad1145e8 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcefc9ffe fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4b22cf1 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x07d09d72 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0906e7b0 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x36ee8a4d rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x401863f9 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5d2858eb rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x63df78ac rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6acdd0fe rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6da1c722 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa7672679 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb330b919 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbff25e02 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc661f6ae rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdf7457f3 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe0689799 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfde571c3 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0313b819 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0855e43e usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0ef5f793 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0f1ef680 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x11c7c4b2 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x146c5b34 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x17c9259c usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a0ea68c usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1ee6b00e usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e1b9cd8 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e2041c1 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x334d4ef8 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x537a0a4e usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a938983 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68b2f149 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x69b4016c unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x69edf93c usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7cddf561 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d21cce6 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x93a9246b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98071bb7 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa5aad57f usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb84a96bb usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbeaa33c2 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd6ca00a6 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd6dd36d9 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdf234e37 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea4d291e usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7dabcf3 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf95996c5 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x175db6db usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1aa7fb91 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1f2346c1 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3722e464 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x51d92696 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x54c4a6fc usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7c20007f usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa2944692 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xafdcae27 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb2e095ef usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc5005ff4 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc9861834 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf2621699 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x81425ed1 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xb8f0ed1a ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x25fc153b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2bd15202 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x40a73e2e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x84873530 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x96ebf6ea usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x97d4635a usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc963a391 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd44f470b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf34c7b99 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09f88f72 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x68536d4d isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x77f76698 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x26f82cf3 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c0c43a1 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34e21393 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x370d3739 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3fe53f0c usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x42fa2eec usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43b4b8a3 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4687a424 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f41cf12 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x62dc9c67 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x66486e51 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7636fe76 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7ad32346 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7b2d8e07 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa7c95667 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9b4fe29 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbf7c0f21 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd0d0424f usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe463a3d4 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xede71ac9 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfd1fc0ec usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0900d677 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x169f50d3 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1ce8f1a0 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b3decfc usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e7961ea usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d893c72 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4127249e usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4260d1ae usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4bf34af6 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4d5a294e usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57e3e061 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5e94f77e usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c638ae5 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7e8e3742 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x83aaea7a usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x95023656 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x97654661 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa84eb867 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb23d775 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc9c7b628 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd5c997ce usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe06096db usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe917fe69 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfaf90153 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x155f26c2 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1b4742ea usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2449cdfe usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x37b58d79 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4bb12492 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6a518b40 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8a77674c usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9a560dae usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xea003917 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xec459802 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf39bd2f1 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfd3f77d4 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1640f2f2 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3ea4f870 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x40d5ad33 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5d010cbf wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8527d367 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb2de060c __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd1bff9a8 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0e945e5b wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1ed7f8e6 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2fedee65 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3bd6dc6d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x54ba8a32 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6b8dee90 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x86dbf907 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa36d75a6 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaebbcae1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb094e283 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb125e4e2 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc6e9f75c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca219b81 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd6d6d330 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x0d2f3285 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4eaf6712 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa5ff2ce8 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x037532ca __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x23d970f1 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x38681898 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x41b152b8 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x96c6e654 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xceec6787 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd6f423c1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdd1a9b26 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x00803c9b uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d8ae524 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x16a28f07 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x16c7fab0 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21000d10 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x249de5bf uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x28b8ff7b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2d85c8c2 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39f450f7 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3d26ba43 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3d806de5 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3f727b8f uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x403eb4bb uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4f899d0f uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53dfae0f uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b24c538 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ba67cd1 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5c7c29f1 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6be54a82 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x73786ea6 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x746e6ac3 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a9c43a3 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa10dfc47 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1c4e097 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbb0b50ce uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0292ca7 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc4c0dff8 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd0b06d8 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd516f831 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe4701193 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe9bd1b6a uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee59a9f0 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef6a4bd2 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1105c9d uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf240b1b0 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4f23fa5 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf9c19fd6 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x79efb74a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x1b89684e vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x26a90dfa vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4b16aa6d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8c3e3b8b vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x97b6d1ba vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xebb7eced vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x73d42cf1 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xb5234ed9 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x03ffb581 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x05afce08 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x11ef905e vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f36a91c vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2b051387 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x34ad04e9 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x34f3e3dc vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35d78a61 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3d97d7cc vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x42873f17 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x434099c9 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49b96908 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ada1fc2 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f1c756c vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x54932740 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6155cb3e vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0d2e6fa vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa9cf1495 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc546a9dd vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd05f45b6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd6717664 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdbe19f5f vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe6dc2c03 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe75805e4 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf1a18830 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2b46557 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf89eba82 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfc3b9d76 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xff1b7545 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x02659c96 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x038d147a ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x14f54512 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x80a5a9b6 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe2438cc5 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xeb9de35a ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf5d3537c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x03276c5d auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3c99cfd3 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x406dfa2e auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4f6db322 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa510bd2c auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa6e60974 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xea6807b5 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xefe5966c auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf18d8da4 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf9a59b15 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xa1e68f23 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x2144c00e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x5752a4a8 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x05011366 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x79d8c657 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x56cc052b viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x03b72c4c w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0c5cdb32 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x39a9b679 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x528e28ab w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x60dd8966 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7858737b w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x92397676 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x98472ebe w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaee04157 w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x93844c3b xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x1c7d9d6a dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7455d50c dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcb9b446d dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1000a26a nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x35d8646c nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x74222a7f nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x810ec706 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc9ba0108 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc9df6eeb lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf8157d93 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02fb7978 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05382847 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07d6876d nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08a2f3f4 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09cb0785 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d189ff7 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0eb02938 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fe6a55b nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11093a73 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15b0bd88 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1aaceee0 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ad94af7 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d9def64 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e454cc4 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ee035a6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f3db5b7 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x208be16c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x212197d8 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21b1e9cb nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x223b835c nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x234aebff nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x279a7a04 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a1dcee5 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2be71dc1 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c65357e nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cda0ea8 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x333aa197 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x345f1a71 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37161fb2 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39d3e9b5 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e046811 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4065b3cb nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4099e893 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42cae765 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44e7cef3 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x490d4935 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a5e3c47 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a77e077 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x506915e9 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5130e86b nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54c2495f nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58225651 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58c73d7f nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x590d60f7 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59423862 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x595d9782 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a4d4ccc nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a9f7018 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5be89e38 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d646f79 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d8bd1b5 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ffa4e32 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x628c3e07 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6328e76b nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x637fe484 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f84990 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67b479b5 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67d4f7ac nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69c09b23 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ac0538e nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bafa05e nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d64d542 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fc9d014 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73a59391 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76c69c6e nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7752ad55 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x783eef5b nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7905fabc nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bad5d86 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bf069fa nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c13536d nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e7b4579 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x820700cd nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8244adaf nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83ff8354 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84406746 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8885c5ed nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b8067a2 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d3cea08 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d436270 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93b08472 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x986ec04d nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c3c2127 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e01adee nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f6f8ba2 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa08aa5f7 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa12d22a2 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1a252f3 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac928811 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7a78e6b nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb967c03c nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba302c6c nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbb1a164 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe38d568 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1d35963 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc23d5c54 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc28785fc nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc654f4c5 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc95e0c49 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca05b87f unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcda97b68 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce918e38 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf0b9778 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1b1b99a nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd991b316 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdad770e2 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc13277b nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc81726e nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd2dc51f nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd8702f0 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0ea315e nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0f95360 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7f6ac50 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe91d4dfb nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9725033 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9cdf1fe nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea256477 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf05fe5c0 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf063aebe nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3cdb292 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf44bd244 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8834dbf nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff89088c nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x01b55988 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02dbb742 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06287f38 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c129825 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e3210ce pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x168acbd8 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x230d6125 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27c2f9ec pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f3507a4 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3177bcea nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x368fb306 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3cc79512 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3eefa98f nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49dfe0e8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4cb35aaf pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x531df6a9 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x568e0f8c nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ef5fdec pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6239b70f nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62891d72 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67279a89 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d0f991a _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e45eeed pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fce4c2f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x701071c1 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x721ecbc5 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73c493d1 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x74f6a6f9 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7695bff8 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ebeaae4 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ef298b2 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81162d43 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83104973 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8815cbd7 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x88e0103f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8bcd7049 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91e03c1c pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94f0e30b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f2ae4ec pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa614562b nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7be8285 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb84db182 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbea210ae nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb51303e nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb851615 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcffd00e3 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd522c6ac nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5c9aff3 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7074afe nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd75988f2 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8435364 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda17e4b9 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe09d3ffb nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4addcbc pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6d7a374 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe892dd25 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeda8dfc1 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfcb82702 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd78002c nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x2d044ad0 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x6adf3737 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8c9513a1 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x1c6ad322 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x29a729f5 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x001616df o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0c428b35 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6be3c856 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x70541df1 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x79ef5812 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdad3ddcb o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe18bb012 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4402ffa4 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x45b329d1 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4ec5c491 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc1f6ecfd dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd1ee86fd dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf5d33693 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x07863a2c ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3da4e370 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x6530666f ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4021bc2f torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x5fc50f97 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x653c882e _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x1f65b283 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xdeb7518f notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x02fe7b4f lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe0c70bad lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x0404e82a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x62a860ca garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x974872a3 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x9eca24fd garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xc56edd32 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xdb813d32 garp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x16818781 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x50ca1cfb mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x8e328d8c mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x8ef6e8d2 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd87e8ff9 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xe1465e0a mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x1b5433a1 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x3bb2b260 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x74ae01b4 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa2d4b94c p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xebe665a9 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1a2aac58 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x329336a6 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x533aba24 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5de06120 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6e68d647 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7cb63498 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x901d7581 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9603d77e l2cap_chan_send +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x01177c75 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x57fe7632 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5bae399f br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x61cfc0ad br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9211aa0d br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa17651e7 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa7b86d68 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe6ba03e5 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x0a0d211e nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xd93b53ea nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01ecfccd dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03ab5998 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0fee17e3 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e2e7127 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ba38373 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f1ff4be dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4c7d7337 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d1b1449 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56a047b6 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56d944a2 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5cbb8386 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5fac56dc dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5fe17ee3 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x636ab04f dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69ffc038 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x78c55b4e dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e6f41d8 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f302dbe dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x85959e71 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88089379 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ee2d0cd dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x96f4970c dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa18c8d61 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2761869 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacfe5fd0 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc5aacf45 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc72ca792 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd19a72d dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1c16e32 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe41c20c5 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf18c81e2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3df843a dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfab283ff compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x29be5e02 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3ac0f506 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6b73065f dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d4010dc dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaaed79a4 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc30a3d61 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2272b7cb ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xbd039de3 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd3d846eb ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xeafe8150 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/gre 0x643d5e4e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x99418994 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x05a78b0a inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x15c1a432 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1d44448e inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x60902390 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe4eb2fa7 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xeaf48979 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x0ed382c8 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0aa6bccd ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3358026b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4c4071db ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x81f177f6 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x83e6f8ab ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x90525690 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9c0c9429 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa2bcd024 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc04e6d14 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc934c61c ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd1ac2ef0 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdbc97b16 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe409662c ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf4eca88e ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x208a23df arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x01286036 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xbc7a345e nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x02c2ae53 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x26e6aaf9 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x2c6a7266 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4372bc8c nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xba1c19de nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x03d42512 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x2198335e nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x30342023 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7f1cb833 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8a01612e nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xba6bd339 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x2e6ec5ee nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0672894e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3cac1c78 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3deee29f tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd8dd3d42 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf6810c20 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x95cc95fa setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9ab9be40 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9ba32640 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd02ea734 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0146232d ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x36669f4d ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x43e9382e ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc22bbfc0 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc45bc57d ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe91d11cf ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xeb45c671 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x8a688b97 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xe5d556af udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x36885b34 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x0277b8c8 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x67421c5b nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xc44cc277 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x0cc0c2a7 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x12c21f44 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x6243663f nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x6a1b39ba nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf8072b42 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x98b0e0e6 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x060fcd39 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1de63811 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xaa883e40 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcb132cc6 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xdbc17a67 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x4a432472 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x07abe3da l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0f45c66c l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1984d6c1 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x25ac56ae l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x38c11554 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3e2df0d4 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x56385d9b l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x612751d7 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8707ed96 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9bfc6d28 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xadb082a5 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb8299c05 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb8ff05f7 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe31109b3 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeb5412e7 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf65bca3d l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xb84e4c13 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0151fc66 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1150319d ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x13443165 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x23ee5867 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x26afa836 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x27101147 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3639009c ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a20c2d ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6c445f8a ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7428da39 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab546fb4 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb3a038fb ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc5c290b7 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf3d06e1b ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfc8b06f3 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x243461ef mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x2a9a25e3 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x93135d1a nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x9de3b86b mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x192232b5 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1effb8e5 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4be21d65 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x524881f8 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6c80cb2f ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7a7b8221 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7d90e62e ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x90c6ad3c ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9bc27e0a ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xaed9ac50 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbe30309e ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc14d7057 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc5fac883 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcbc4dc09 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe8b4fddb ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf06bbc7d ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x04c2dfc1 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x373c8277 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xbf9bf2dc register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf76d53ed unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00dc306e nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0194e421 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07e54657 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b165d87 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ffccf51 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14baff52 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bbabb98 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f025227 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20855569 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x22f9b17d nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24cd770c nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27d07d26 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28c7a5d2 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bd95063 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c4c2862 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c6c7e54 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3073cce1 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36d858b6 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x373b3228 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37708d32 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x389a4f70 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af556d4 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3dcaadd3 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x484b4f29 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5381de1e nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55e29e62 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58edaed9 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c77574c nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d6dae04 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dc3204f nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60c4758b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68cb0853 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6adbcc5b nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f0753e5 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x704b750e nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70f1e36c nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72cdffc8 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x761f021d nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x797629d3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x797fe827 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b186dee seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7cdafede nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8072c72f nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80e24761 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x834297e7 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b882fe7 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8cb224c7 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92efa906 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95cdbd5f nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97e62e51 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x982aeeed nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99a3a848 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa42a91d0 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa44485f5 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa82bca24 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac9715c5 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad2d6439 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaeef336e nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc8a354d nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1743321 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2dd5d30 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4f16d38 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc50947c5 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf75181a nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd002e3ef __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5110cbd __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5b5dd39 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdad0b520 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc3ba81c nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd52966e nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf671c1d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9b17a7a __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedef47b6 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf780b1f1 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc088fd7 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfda7c0d6 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfebeb085 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffcd06d4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xee390703 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xe0c0e784 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x33ed0b13 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00fd05a8 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0945ad44 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x29a4a7f4 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x363b192a set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x52ed29ad nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x53a983d8 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6608c2a4 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8b910c20 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8c865ce9 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf92c9ee4 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x4eedc38b nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0ce9eec9 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3c776e78 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x74cba204 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd93cfdb7 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x22ecd615 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x6177c5cf nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x40621c36 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x42043141 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x568077eb ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6d93dec1 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8fd118e6 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe33dd30e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xebeca5d5 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x2324e27a nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x331792e0 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x24501609 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3f300f98 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x785863a7 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb735b09e nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1b7e0274 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4fa20cfa nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5253246c nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x57b173e1 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8342d4c3 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa2c04507 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb102ddef __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb9dc3aca nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xffaa6a7a nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x86a2c2ad nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xbd910a6f nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x39d44e68 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdf2ff59e synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0376bc73 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1154dfa9 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x16cb2a46 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1d030e27 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x292e33fc nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x51c529a1 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x703160a8 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71c07132 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa2d59e5e nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa6d89efc nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa786d467 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb6b26c35 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbfc5712b nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc8b152b7 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce3e10da nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd3bef54e nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd801d592 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2194d741 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6296e5b4 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8975f0db nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9b179d27 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9d3fa103 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbda42684 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcb995862 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x8428b980 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xaebd0f97 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xd2b95020 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x1caab13d nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x04d2dd3c nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x951524a5 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xcf11e830 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x1a48804f nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x985cd977 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb92eecb7 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc652406e nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe082399e nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfcc0dd41 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8e4724dc nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xaa8a7b35 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xbe7a1d53 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x0bed5949 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xeaebabff nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x209ff747 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x20d2bd66 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x289827f3 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a64d793 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f4d19e7 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40e81e57 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4776a844 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x48d2651e xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x54ac827a xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x76e31ff7 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x894d222d xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ae17f43 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c7fe360 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa2ab672b xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb4725d85 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc8dade2 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb31efe2 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcba70e12 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfa9832e1 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x799b5035 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7dd017f2 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xe6f86890 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x36a5f0ce nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x3ac36dfb nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xfaa0902a nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x038b1ad9 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2071d1ab ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3dfb9b81 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x44af46ed ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x719c46ae ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7c3826f4 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x964e4061 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xde4bbf23 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xff9b51b6 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4afebea5 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x636924f6 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x71b4f2ff rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7656640f rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7e4a5d74 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x8ed63d98 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x8f6d37e8 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x9761e6c3 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x9f48ddca rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xa0caf568 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xa113c8e7 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa45f540f rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xac4b06dc rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xb8cdd45b rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xbc5f36fd rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xc236d186 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc5993c9a rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xcf4a36ce rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xde0134fe rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe4749af6 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xedcb2573 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xefc32a5c rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xfad04879 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0827095e rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe92601a3 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0726e343 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x453fae9a svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5d259420 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01e62710 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04d3369c xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07e9bf3b bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x091b0f93 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b4f7c41 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfe10aa xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e993747 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f9a2748 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10640238 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x110e895c rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11914a1e xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c4b42b rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1440d2b0 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x174bf205 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1be22342 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c9b9dd2 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ca33205 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e6bcc55 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eb7e8ec rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fc09204 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20ddb62a rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x214b527c rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21a8f3cd rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x229fe653 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22e576ad svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x234d9fdd xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23c2de32 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x249e3bbd rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24a7c69a rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25577d81 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27e8e4ef svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x282602ff svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c74b6cf xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x302c8ba0 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x306df4be rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30ef1b9d xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x314e8718 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a9b50f rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x358f2579 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3845a409 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a58467 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a871262 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bc85c80 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c0b99c4 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40c4c57e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42774d39 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42eaf891 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x444acded svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44788799 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45dd25f2 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x462ec08c svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x465d8878 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46889a2d xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b7093fa rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b7c0e79 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ec3efc6 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f6da2dc xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x508e30c9 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x510c7cd1 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x511a5e25 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52780961 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52d27f7f rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52f07f2c rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x539042f9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53d90141 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53fdf48f sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x542b3e63 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5509970b xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55a9f71e rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f526d3 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58b07797 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x597211eb cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c706846 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f611364 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc437bf svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fffef44 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6233f597 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x628b96f6 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6470c19b xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66dc83e5 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x678ce6b3 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69cdcc12 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a225ce0 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ae6fac9 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bf2f54d svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c5042bf rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cfe6238 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d92ae7b svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6efb70de rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f7cf911 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73a52aed xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73f40cc1 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74f76a93 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7541bdfb rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76bf9fc0 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76dd86cf xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78eb0c12 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ae97069 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7caebcd1 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cfc6164 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e0d79f8 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x807eae8f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x851db82d rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e8bd95 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88c526a5 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89633e0a rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8974dadd xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aaf5742 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b0b83b0 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b82b1d7 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8ab7cd svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c5e6bab svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ca0f247 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90fb299c rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94d6e9d8 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95626e6d rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99e26083 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99f8b99e xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab8bbc5 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9be58a60 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d25dbef rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e0a427c svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e4445a1 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0f0a7e3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa11cdbd8 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1949657 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1c14c3f xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa37d74f6 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6d44c06 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7516043 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa932e01f xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaec776d8 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb08eafed cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1d77e7e xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2f49acc svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4091072 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4308bea rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6c94af9 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb803ed7f rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8e51e75 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8efdb3d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb96667d0 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb981c71c put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9c8d2c9 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb2c966b rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1caa401 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1d329b3 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc24364c7 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc27cc52f svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc296dbbf xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4270d2f rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6518c0c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc995ada5 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9f9eba0 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb7ca232 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb99e98d svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccc0ff09 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd09d7d68 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1689086 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd627910a svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd81e5cf3 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8e69045 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9b8035d svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdace80a5 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaec1f78 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaf853c6 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb08d47 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd59fb1c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdda4a80e rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde5c3959 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde813e16 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe02c163b rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe04a1e1b xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41d4833 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe420dacc svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5b061e2 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7ece557 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe836b779 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8b6fdee xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebf40bde cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec999ca9 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecb4347c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed2ea697 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef9d82b6 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefbd87d4 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0defd40 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16c8082 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3c3fce0 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf88812d5 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8b9f7e1 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9137e18 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9f57e9c svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff0fb071 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2dec9f43 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x37b62692 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x446f273c vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x57fcd9ec vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6adf0532 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8a042980 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb05661dc vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb5dc6c76 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xba155bd2 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc1ff113f vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xca9b33f5 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd5acc776 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf5accedf vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x15042181 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1d6542fb wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x209f9cf3 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x429579bd wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4bedd166 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x567862cc wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x788e685b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa96063fa wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbd39e1bd wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc2c353ba wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc2e17a4f wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1d4830e wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd5121fe5 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00f3bb43 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x241c7ac4 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x248034aa cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x31b49133 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x726ad576 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9d6329f1 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb8c70727 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbbd9a181 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc3878eb8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcfb0f108 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd5220560 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xefe5aa99 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf7b87491 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x21e9e570 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2360f1bd ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8b40140b ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbcd0fdea ipcomp_input +EXPORT_SYMBOL_GPL sound/ac97_bus 0x85010af6 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x176a5220 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x5658c2c4 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x09dab384 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x0ef77423 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x331b192f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x3f52b145 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x4a612828 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xa0a1c999 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xabce69da snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xba721420 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xf3324c46 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xf49a0e3d snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1740e946 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x23874720 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x33da3165 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5477837c snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5d991000 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6fc785bb _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7feb6b27 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb24be083 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xcd9f806d snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1c342890 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2bc8b147 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3d8dea8e snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5c9e7ac3 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6efd52b4 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7845364d snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x91004f92 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa2c4d525 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa4ac586d snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc1d8ca7f snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdab7153d snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x05264c6a amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1c15dd2c amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x202629e0 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8df0d37e amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xbdfba907 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe4f709c1 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xfad6e853 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x05a46bc3 snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x07c386c3 snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x114e3b82 snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x124e03c9 snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x182fd0a0 snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x18b52d20 snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1a61d8b0 snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1c0b662b snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1c83a84b snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1ca75b9a snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1f342c0f snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2602bd0b snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x262479b4 snd_hdac_ext_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x45cf7fd9 snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4a0f93d4 snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4e78e605 snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x503b6a57 snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x525a4d83 snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x7603c665 snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8235c152 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8bc781d7 snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8fa89e38 snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x96ef66ef snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb109d455 snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb4b48526 snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb9dc7f2b snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc54f3931 snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcde18cd6 snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd92d58c7 snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xe5b42ba6 snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xeff25e2e snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf27fd7c8 snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0097d845 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x060d3252 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0958dc74 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0aed6c09 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b872536 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0bef5c21 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c378dfd snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1733baea snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x18e91c57 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d3e3162 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d95db72 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22476140 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d937e57 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f07c4ec snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3277f87b snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x364309de snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37202b51 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37537390 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41b20051 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4326067c snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44308613 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x45e919c6 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4890cc1a snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c8224bf snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50acf991 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50cde829 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5385ae9d snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5aa1006f snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b7f350f snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61d660d2 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62e4b27a snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x648c8d71 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a7f06ca snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e8e9d53 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7757c5f7 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7a5b9175 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fcd3c46 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x80eea0e7 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x83094379 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85143c60 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85fddd2e snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c2940b0 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c2e5b0a snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d256766 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90bdbe73 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x916c13e2 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9391744d snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x962bc7ce snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x96308408 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xadb83191 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae99e5d7 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1338ce8 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb16aaaa7 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb19703f0 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8ed7155 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbaddb8a8 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc6f7c7d snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbfd41144 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc0cf4500 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc40947e3 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8d8769d snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcbaa4480 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xceba2b2c snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1f7cc67 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8df9517 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda86b18b snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdc11936c snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdddad8b6 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe1aef99b snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea550b1b snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf25c69f6 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4c3aab3 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4d0a847 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf518c1fb snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf785913c snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf89b0a1e snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x213fe7b6 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x314724bf snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3bcfcb8a snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9e60b07d snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe07873da snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe0824935 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x037a522b snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06aae626 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x087c4d41 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a1a1cda azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf9b6b0 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x159810d5 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17562f82 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18a5ffe1 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bb5511c snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22159844 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23980798 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24a448c7 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26bb8ef5 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x286c01c9 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d9913c3 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x305d5313 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30caa059 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x347aad5f snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35eb7ed2 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37ef877f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ee03a1 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f251011 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4199d9bd azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x435d2f24 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x438a668f snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43f12118 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x474ae4f7 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a0ccf56 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ab89d1d snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bb4511c snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ed7bc24 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ef3c860 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f3e7dd8 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5166fea3 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x524def4e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5566b126 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x561e07ce _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5934baf7 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a815cd9 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e382de7 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62dee31b snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x638f81e4 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x678d8870 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b130568 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b531858 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bb44680 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x704315a3 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x708f493d snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x720ba666 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73346dc1 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73be92fe azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75a9f6ae snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x763faee9 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ca11631 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ec38157 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7edfe6a8 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f568ffe snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7feb2cb9 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80e28f31 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81d03572 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88705716 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8989cb51 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e9f6c21 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ec9d1b8 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90b65b29 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92575df4 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9374297a snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x946d355a snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96bfa3f8 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96f7b1e2 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x976dd947 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97fa4dcc snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9999b710 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c0f7e8a snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c64ac35 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d561dde snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2d3e97b snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3ee0e13 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa550d28 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaafa3e22 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab68a441 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab9a5994 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac72dda6 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf4b0129 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb79956f2 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8aaf68d snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8b267e4 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9aab44c snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9d116fe snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf2104ca azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc36ca8e4 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc483ef0a snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5f61fdc snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc69fba5f is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc78ba625 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8e69d96 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb5283db snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc2a6391 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce14f7f6 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd09fbbdc azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0abf2d3 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4b620eb snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4fa9920 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9795efd snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda6afe91 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xded41952 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf086372 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfc61f9f snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3b6a3ca snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3b97306 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe52b45ad snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe84a8693 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9d4e626 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee1629a0 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef783f59 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefc260e9 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf02315fa snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf18e7c24 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf312f8d7 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf41d1a0c snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf427bc7b snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7072480 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb312e20 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd55ba67 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x03af7ce3 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x08b5aa5e snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1486923a snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1acffaf5 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x24a3d48a snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28789fc5 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3b41e90f snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3c43a4ae snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x425cba9d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5611d63b snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6a08035f snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6fff6f85 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x74770a3e snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x773fcd07 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa34c9421 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb3d938f3 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcd796640 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd03808e1 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd49a6c41 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeaeb23ad snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeef91092 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x01c9e3ce cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x2b835da0 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x628d9e98 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x973bf2a9 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x4bf48b55 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x51e1bca4 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x61f2a7be cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xe957669e es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xf0465307 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x65fdd176 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0f362a70 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x5c8e230f pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x5f73aa5e pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8860bdd2 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0x4a3f3d9b rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x41d5a7a8 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x7a9eb138 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xacbfdb8c rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x2cab0573 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x683eec38 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xd1e68ed1 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xd7499f76 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x221fcd75 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x5184cf84 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6461ef69 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb4720dc6 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf8adcae6 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x1eaa3607 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x39d1e28d ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8d83e554 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x4b3645e4 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x81d8b131 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xfbfc3780 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x289190b5 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x33434db7 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xa1bae08d wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd6460a20 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xafd52639 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x8c7352f2 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x04fd3537 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xa70e91a2 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x1a2f549d sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x27fa5898 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x25b0b8d2 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x333f885c sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x3961db29 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4a9bd91e intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xe1880399 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x2db1f009 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x52f96274 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x53b279e4 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x817304b2 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xf4b1d3fd sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x019eca59 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x04b94278 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x06b743f4 sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x08bdbfef sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0bcf7651 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0c4c06a3 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0d402d47 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x10e77ec2 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b237b3d sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1e2179fb sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1f80349a sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x24b9296b sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x255667df sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2bf4ba65 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2c22b0f0 sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x336d3db0 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3f7cc22f sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x431382f1 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4540c0ea sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x47223c4b sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4b28b8f7 sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4d0f090d sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4e23ecd4 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5bc16ac8 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5d007086 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6318c052 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x65a909fa sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x67d0d988 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6c7aee8f sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6c820900 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x77f8b676 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x79248111 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x80be9227 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8122fe1c sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x84b007bd sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x868cef48 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x87a0b318 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8bb9b7ec sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x910bf713 sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x972a62cf sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9b8ceb1e sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa49f4476 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa6996456 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaf2f9e26 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc3c22cba sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc8572bfb sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc9ba622c sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcac1bc95 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd07e6fec sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd7269a47 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdb40df24 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xddc006bc sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe0658adb sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe2de2d23 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe6919136 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf224d845 sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf42970a9 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf6523a53 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf6b5119e sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf6f15e0e sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x2c466775 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x32f48119 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x60aa7acc sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x6bda410b sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x6c73a70d sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xb491b05b sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xbfdc42d2 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x49e10868 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xc523804c sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x0864a3f6 skl_ipc_set_pipeline_state +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x1446b41a skl_sst_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x21e7ab96 skl_ipc_delete_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x22cf4b34 skl_ipc_set_dx +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x2f2f800a skl_ipc_create_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x42d81ebc skl_sst_dsp_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x5111c9d9 skl_ipc_restore_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x55f49b9f skl_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x8d2d5108 skl_ipc_save_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x9931a5ca skl_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x9f67bd2c skl_ipc_set_large_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xa44e5238 is_skl_dsp_running +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xbb9ff35b skl_ipc_init_instance +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xecb4b6a6 skl_ipc_bind_unbind +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xed6c8ae5 skl_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02b36cc5 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x081fa896 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a71985f snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0abd51a2 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c3b1123 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ce6bfe2 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f7bc27c snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fdb1c5a snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1467fe5b snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14bb0acd snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15223686 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1591307f snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x195cd240 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19bdfdf3 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a4bf42d snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a9e7335 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b09be04 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b8aa6f8 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1beeacdd devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f3d33b3 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2194eb83 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x248a178f snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25c8db04 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26902c46 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27ab50db snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b237245 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c549a59 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e8951dd snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e9f6adf dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30c70af2 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31740cf3 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32428f95 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32fda804 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34853522 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38177c30 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38b0548f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39ec0e16 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a1c322e snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d7304c3 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f4965d1 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42edea85 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x497739cf snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4aac060d snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4be04f4e snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d728f2b snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f55de58 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fbbe975 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fc40adc snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5069d266 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55ed1661 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5679adb5 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56e8e392 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58a52990 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5981f11c snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5996897f snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x599708d1 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a4abb33 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cdde8dc snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cffd066 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dbd0e5f snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x613a5ef8 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62cd5a47 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6395273f snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67f16432 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cc94b98 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d54779b snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7024beec snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7072e2a5 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70a76d7e snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70ada755 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x730efadf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7327ebbc snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76f7b23a snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cc075b6 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f86eb9f snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81c2fd5a snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81ececee snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81f324a7 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8427ec6a snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84374b47 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8494148a snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84d2cdb1 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8503a733 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85da2061 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87346f9d snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87cb0b94 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8827ed11 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x892fcbe9 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8944bd41 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a3ae58d snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8de43595 snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x909fde17 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9136eff4 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93cf27e1 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x945ff1a9 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9571ba52 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95c8387f snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97dc1106 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x999ca6bd snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c3c5087 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cae7e70 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fbfaa47 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa40c184e snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa493a0dd snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa60ce2fc devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9daf49e snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab039c2a snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac81b92b snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae8041a1 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0572f3a snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb16e19af snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb19ecc36 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7b01a58 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb89b4f9d snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8be73fb snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe530e6c snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf1940aa snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf85c110 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0b53208 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc27be036 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5d9fa18 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc63485e7 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc897353a snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca59b401 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce751050 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd218b87f snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd225034e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd53d97c0 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6a6a93b snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd70cb81c snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9874163 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc21d0b4 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0486673 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe05098a8 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe95d862d snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebfd8019 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec121fee dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec5a8038 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeca37d51 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf177d95c snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2c9bdd0 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5388f03 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5421aa1 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf56dd24f snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5c24b2a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7989748 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7d75861 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8526862 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbbdfe00 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd5d37c9 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd73dace snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd98eb5f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfda23291 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff2ecffa snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x03521cea line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b5a861c line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x117e80e2 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3bd2a4ea line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5b4e1224 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x66708ed4 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x80d28963 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x886f8b3d line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9055f6c1 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa3197e0c line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbe4d8b2f line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc355eee0 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd3f84aba line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfa6bc337 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfd6ab21e line6_write_data +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x0007880a nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x002eb9e5 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00bdf775 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0108ccaa usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012584e0 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x0130bfa2 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x0136a3f9 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x0148ee78 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x01515534 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x015393cf xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x017da20e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x017fbdba of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x018161e2 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x0198eb0a securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x019d9f8d __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02205840 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x025c544f rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x027a26b5 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x0284e191 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02c5edcd debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x02c940ed skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030411ed usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x030808cb gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0320db4c phy_init +EXPORT_SYMBOL_GPL vmlinux 0x0335c390 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0341927f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034dd40a regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x03920c3c proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03d01cb4 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f752ff inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0430c136 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x043b935f __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x044328fa da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x045f94e3 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046c334d iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x046eb173 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0474aa35 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x0489edc1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049333f4 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x049adb21 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04ac3515 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x04b233d3 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c576cb ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x04c6b8e4 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x04c6dd68 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x04ce2925 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x04d0300a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04d7bc7f led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x04db5f42 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e8202d percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x04ea1a65 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x0506f609 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0554027d tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059dc493 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x05a9edb2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x05b2368d platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x05bb325f tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x05e08353 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x05e9b2f1 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x05fe4274 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x06252d79 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06339578 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0680820e spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x0686bccb virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x06a75deb pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x06a98389 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x06b27588 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06c4570c thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x06cc26ea rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x06ce59b0 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06da15fe crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x06e87849 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0702a647 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x073eaef9 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x0740c429 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x075d599e debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076c5f6c __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x078af40f fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b6f947 find_module +EXPORT_SYMBOL_GPL vmlinux 0x07dbb18c sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x07ecaf95 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08253f96 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x0828fa8e rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x083d6872 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x085136d0 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0871b449 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x087f54cc __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0894bbc6 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x089710a8 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08bd09bf ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x08c70c2f crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x08e5eb2b lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x08fbc75b skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x090af282 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x09180d5c ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09b5d0f9 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x09d99e78 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x09dfc17b regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x09f0d8d3 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x0a086947 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x0a1afdbb netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a519c13 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x0a52bc86 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x0a5d601f ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x0a62e1d7 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x0a8663ec add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x0a922740 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aa5b635 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0abb535e da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0b03d228 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b177294 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x0b1f8c49 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x0b304b6f dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b6751bf phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0b7509f1 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0b84d21a mmput +EXPORT_SYMBOL_GPL vmlinux 0x0b872020 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0b8d103f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0b8f3b48 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x0b9e3096 fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x0ba162b5 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x0bbc64f9 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfdd354 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c123ae0 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x0c173b8a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0c1abfa9 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3af512 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0c63aedd gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x0c6d474f mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c876237 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0c90d8bf x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0x0ca1397a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc653fa usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x0cc9a1a4 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x0cf34134 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x0d21b043 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x0d4927da clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4e1bf5 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x0d5bb120 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x0d767f70 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d9c89df gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x0da2aa24 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x0db0a872 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x0dbada36 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0dd1e094 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1f8e07 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x0e2c245b i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x0e4a3971 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e4a72ac devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x0e4cf6d7 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x0e58feab usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0e83867c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0e9866e5 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ebda5b0 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0ebe3ae3 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ee6d643 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0f012044 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0f0e5ab8 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f2f159f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f35c06f regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x0f39ef6e gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x0f507d9c bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x0f526d2c show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x0f583e72 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7ad041 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x0f85f937 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x0f894953 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x0fa05a7f handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fa273e9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x0fb8697d iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fedd749 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0feeb8ad inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1001bd8f register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x10064c8c crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1018abe6 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1037c31b crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x10515748 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x10694cea da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x109379ad usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x10981a0b acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x10b6e1d8 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x10bdcd14 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x10c06fd5 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x10ce1e43 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x10ce7bae tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x10de38ee serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x10e9d946 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110b7d67 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x112a59e5 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x114f2181 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x1181ecd7 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x118fef9f skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11a4f095 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x11b0d13b debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11b30211 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11cd613e debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x11d4863a dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x11d5806e fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x11e501ae pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1200b990 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12055f1a ref_module +EXPORT_SYMBOL_GPL vmlinux 0x121ce6f9 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x124eb891 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12576bd2 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1266180c regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1269814e smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x12af1824 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x12bfde0e tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x1313a069 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13371185 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x1339ae98 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13989c58 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x13ad514d blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b1c415 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c44067 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x13f767c7 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x140384b5 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x141bf1c2 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x142e3661 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x1457e1ca xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x148e67bf xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x1494f881 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x14d678f2 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x14dabb84 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x14e81210 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15149f5a fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x151f09f1 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x152ff6b2 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x157621b0 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1595952e fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15b34fba i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x15b3763a ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x15e47e34 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f371eb ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16018bdc tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1690cd28 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x169644f3 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x16e215c6 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x16e50825 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x170c8a7a rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x170d0c8c serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x17183253 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x172b5abb usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1733eb02 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x175a3230 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177ec6ae acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x1783c085 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x17988894 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x179b7890 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x17c51086 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x17c6d4d3 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x17df81d9 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x17e5d5e0 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x189ad796 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x18b66664 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x18ba5da2 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x18c97ac7 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x18dcc4a4 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fb48d2 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x19054689 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x19269644 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x193b3440 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x193ef4e1 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x1949ccfa acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ae1c04 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x19ae4b3f cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x19b16d08 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x19c2105b blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a0fd520 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x1a68bc2d platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x1a775dc3 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x1a800fc7 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1a941c5f crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa851f4 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1abdc6f4 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad561e3 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1ad7be27 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1ae45e07 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1aef1a84 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x1afe9da5 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1b0c6f0f irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1b1ae177 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b3e0464 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1b43c367 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b96cd84 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc07754 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x1bc2a181 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd98a52 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x1c00c1e8 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x1c0dcd40 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x1c20e390 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x1c318619 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1c48b974 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x1c52e51b rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cb34f7b sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce5e40e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1cfb0fcd ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d3756d3 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x1d3abfb1 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1d432ab5 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d652735 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1da02f9f rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1deaa936 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x1decdb5c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dfef9d5 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e1cf634 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0x1e3276b2 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e3c87d5 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e696030 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x1e6e5b39 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e82ff52 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebaff45 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1ecde014 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1edd4f47 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1edf6758 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x1efa36bb metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f016553 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f3bbc7f page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x1f6f2163 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f93b2a5 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x1f9d3096 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x1f9db6f1 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1ff2ef62 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x200cc695 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x202d4dce mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2042b5b0 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x2044eff4 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2046b990 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2061261d i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x206ac3b0 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x2074c692 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x20784f85 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x208e3a82 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a12da5 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20aad784 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x20bc0bd7 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x20c07c9d device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x20c6f5a7 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x213beb11 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x2149b6f8 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x214c2ebd ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x219cf438 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21bb8015 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2218d3b8 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x2226143a gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x22314798 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x22466c1b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x226a7e29 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2283b2f8 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x22937541 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22bca67c regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x22c9c814 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x22e79b87 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x22eafe0b extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22ec6d2f rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23bb5f4b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x23bfc270 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x23c24e44 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x23c82bfa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x23e91f46 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x23f1c04f anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2422291d dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2447fb97 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x2449e6f6 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x246e4c39 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x247586bb pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248bce55 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x249f6025 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24dc45e3 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24eeed52 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x24f59f6b xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x2516013b trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x251b423f cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x25299141 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x252c09be injectm +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253ad2c6 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x253b7172 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2545510f dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x2550890a ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x25932a0d gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x25948bdc print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x25a8fe2a tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x25af8421 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x25c58e13 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x25d700b8 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0x25e1723c rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f418e8 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x25fc062a __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x2604d890 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x260d95bb power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x261ddf94 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263b82a7 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26539cbd restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266fc4eb pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x268415ec posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b15494 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c2c7aa shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x26c4efe2 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2757928e device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27b9bf8a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x27bf279a spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d13714 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x27d9815d wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x27f1a1e2 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28084a7d reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x28132039 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x281fe3d8 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x28220f86 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x2826e948 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28399d4e hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x28523e7a irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x288b9683 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x28a175db inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x28cf8b89 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x28e2b9e6 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x29472ada pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x294ea542 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x297ccded extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x29897310 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x298b581b usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2993ccac sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x29a855a5 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x29c08534 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x29d4d499 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2a28ac79 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6b4ddc acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x2a800949 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2a9a78e1 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2ab31cda tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2ac395cf fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b116fc8 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2b149d3e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b44ccb5 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b4542f8 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b81234e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bbf064b md_run +EXPORT_SYMBOL_GPL vmlinux 0x2bc6a611 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2be83ea9 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2bef87f8 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c0619e4 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c1f187f dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c227b48 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3d1df5 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x2c413a42 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x2c51d8b3 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x2c6b07c3 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x2c74b99d perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c9c56b8 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2cc093df xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x2cc5be56 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2cd1dcfe netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2cd636d7 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cef1b74 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x2d00d973 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x2d0c4d5c to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1ca911 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2d2c7c1f serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d60bd4c sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2d628a5e __class_create +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dab711c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x2db529c8 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x2dbe177f netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x2ddef7e2 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x2dfc0557 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e2e49dc crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3776fd hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2e4aad7d devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2e867d8a usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2e90ad0c devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2e9dd56c ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2eac7ebe irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ec7d574 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2ed5185c percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ed8b5df inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x2efd0407 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1e39bf ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x2f225309 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2f24e81c ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f295e15 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4848c5 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f854099 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2f909b32 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x2f99df06 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x2fac96ad bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x2fbb0aac rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2fd0cc92 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x2fd60de3 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fe89cff user_describe +EXPORT_SYMBOL_GPL vmlinux 0x302edfce gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x304a30ea xen_remap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x304d41aa pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x304ec29a phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x305f962c anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x306a55de rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x306bf9a7 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x30a90d1e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d63ed0 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x30e45aba efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x31045cc2 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x311cfb7a pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312773e0 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x312a4a8b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x317f4cbd skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x31871797 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x31940744 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x319e038b rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x31b2cf01 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x31b9a1c3 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d022cc sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x3219eb6a debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x32233a56 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x322566d9 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x32262e1d i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x323d0706 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x32556384 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x32588404 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3289c689 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x32981cbc subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x32a7a31f gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c5cce6 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x32d327f0 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32d4efb3 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x32e6f9d3 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x32e792c3 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x32f2b528 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x32f7ab47 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x32fa1ff3 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x33046120 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x331d6c59 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3325f3a2 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x3337ff6a raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3354743e crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3365ea69 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x337dcd5f usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x33848d07 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x33943630 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x33a55ab6 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x3406692a usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x3433919c page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x34455a16 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3484f30d ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34ac765b blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x34e996f3 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x34fcb3d9 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x350504f0 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3529dc1b dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x356052fd usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x3580093b disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x35b4fa67 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35cbdd80 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x35daefd7 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x35df118c devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x35ebaf17 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x35f9e7e7 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x364d079d blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x36665ff9 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x367c3e5a sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369c1a0d skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a98f84 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x36b465d0 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36ccb80b single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x36d2998b default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x3718017a blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x371ebec3 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x372668d9 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x373f465d devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37d3e56d input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x37df79c0 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x3802ec45 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x380de5e3 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x3815c37d nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x382f5311 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x383128ff pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x383588a1 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x383d7a32 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x384f3cc1 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x385e5224 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x3874ba0f power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x38a84e6a get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x38b62423 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x38da525f fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x39223b9a mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3966ee21 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x396c33d3 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x39787bde debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x3990fbd1 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x399b0aa2 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x39c04b58 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d80e68 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x39e0ece5 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x39e10de2 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a07fc06 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3a1bfa11 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a550bc9 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3a5a8f2a phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab43bb7 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3aba3841 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3aebcd20 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x3aee8a6b usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x3af40849 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3af8ff1f led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3b0288c2 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3b06146c pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x3b221bae dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x3b4d3300 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x3b4e24b8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b54b425 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3b5da30f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3b644823 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3c2c24f3 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c831887 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c9d1154 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce77e70 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x3d37a7f1 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3ff70f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d7dbe67 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d8f3844 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3daa0afb nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3dc31f58 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3de7c3d9 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dea4993 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e389f46 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3e3d4bf9 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e565f8b cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x3e5a156a trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e762e76 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ee1c5b6 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3eeb24be xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x3eefa8f0 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x3ef54c4c dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f026859 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x3f15459f usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f4bd1c9 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3f4c1f4b acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x3f674786 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3f6a3e10 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3f71a911 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x3f79a378 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x3f7e3550 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f880faa ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x3f8bb4dd uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fa1db98 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3ff27758 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x3ff9d82c __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x3fff3e4d blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4010b80f pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x401e84c8 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4037709a led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40557112 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40cf3b03 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e79859 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410ae8e9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x410ea426 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4112d5b3 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x41135c87 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x4121b286 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x41277ea4 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x41398f73 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x414628b5 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x41648761 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x4173ff1e pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418710e7 mce_inject_log +EXPORT_SYMBOL_GPL vmlinux 0x4199989d hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x41c86421 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41dcc2af usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x421742af pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x4228b935 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x4249b8e4 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424e972c pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x42563704 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x426202c4 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x427455fc wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bb8d80 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42c3fc90 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x43190dfb wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x432c0a92 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x436bd7bc subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x43781780 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x437c8504 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x43815b34 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x43853639 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x438a5d3f pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x439cff54 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b0e0ff acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x43b857bb extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x43c2b711 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x43c59fde dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43e351b9 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x43e96ebe vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x43ec3558 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x43f01e14 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x44133697 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x441e87fa mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x4426213a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4487a924 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x448caad5 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x44a4925e aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44d6dc94 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x45064180 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45308039 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x453ab462 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45793ef1 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x45aebcc4 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x45b1b71e ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c410dc dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45da7988 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x45daa2f6 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x45db428b nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460e3c09 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4619d905 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x464fde09 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x465c346f rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x465c34ce dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x46709ea2 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4686f442 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4691d4e3 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x46e066b8 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x46e9991b __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x46ecbe83 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x470b78db __class_register +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47460e27 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4746192e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x475e7bce iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x475fe720 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476e0531 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x477f79fc skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x47872414 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0c124 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x47b0de33 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x47b30a66 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x47b4bb17 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x47bcf33d __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x47ca0372 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x48040f12 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x480e25ca acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x48169b32 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4830f448 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4852fb8b devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x48581eea arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x486807ea wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486f043d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48de7a64 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x491f3340 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x492b87db device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4935d22c find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x493b4320 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x4945e1a7 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x495ccb0c serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x49603dd8 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x4969611e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x497e54ec dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x49870a78 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499f01e1 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x49a02e42 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x49a26752 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x49a48ffb ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x49ba6b53 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x49cb2c80 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x49d26244 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x49e4eb33 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x49e5627d driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f04302 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x49f5d896 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x4a10268e devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x4a1b8c76 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4a1e38c9 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a4d9e3b clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4a61ffc5 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a6e5022 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4a763510 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac853c3 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x4afb321f nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x4b05a74c pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4b1ad1f3 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x4b240ad8 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x4b3ef66b crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x4b661afa platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x4b6f28e4 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b8ec827 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x4bbc2528 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4bc49924 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x4bcab972 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x4bde5a21 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x4bfd17a3 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c117fe5 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c2f25d7 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x4c337918 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x4c35578b bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x4c4e9111 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x4c503a40 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8a62ae __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4cc4bb40 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x4cd5b6e1 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4cea27db __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x4cfba5ee regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d876653 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x4d930dd4 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x4d942282 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x4da85f6d rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e00bc48 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4e06eb7e usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e469813 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e59d966 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4eadd638 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4ebbe610 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x4ecbbe2c __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x4ed1728d mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x4ef1e9e3 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4effe660 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f0ec830 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f12219a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4f13a667 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4f1f86ac locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x4f20d6c3 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x4f243c47 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x4f279ae4 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f464ca4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4f585b0c xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x4f66fe35 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7ef894 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x4f905572 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f9a3913 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4fa82d25 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe0d4e5 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fee6af7 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x4ff0d297 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x5005802b device_rename +EXPORT_SYMBOL_GPL vmlinux 0x50087221 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x500be74c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x5013c238 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5016efb9 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x503f2b88 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x503f4d16 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x5046ca27 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x50569324 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x506f8940 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x50709b2a usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50ae173c yield_to +EXPORT_SYMBOL_GPL vmlinux 0x50c374e3 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50dd2d7f device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f0eb85 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5144b9d5 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x5149c277 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x515126f8 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51994cb9 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x51b29b26 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x51c6e884 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x51f79b45 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52313dd6 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x523bd457 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x524f884d regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a03d36 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52abc096 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x52d4eef5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x530067f8 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x530bfbe0 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x532e8f02 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x53473e54 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5363ba7e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x5363cce2 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5371e0d4 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x5385f6b2 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x539405ea task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x539abe4d uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a2bbfe pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x53a6caaa regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x53bb3dbb bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x54135b7a device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54372b33 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x544b40f4 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x545ee955 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54630078 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549c2bce blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x54a7508a page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x54c9e3bd xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54f0b5a5 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x552d7ca4 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553e12e2 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588a079 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x55978a0c bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x55d84039 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x55dce134 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x55dda44e regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x55ebbaad perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55fd8362 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5607fcdf device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x561d9448 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56309419 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x567b5cbf __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x567ced17 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569d0a39 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56a2ba3b tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e996b8 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x56ec7b56 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x56ecec20 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x57016a65 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x57396f68 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x574fb96b regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x57566ca8 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x575c7145 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c2c8b4 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x57fa5911 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5841b9ea nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x584f39e7 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x5853f91d bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x585b63bd kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x586b7723 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x5886baff pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b938c7 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x58c50a5d raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x58dcb316 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x58ed95c8 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x58f70d0d tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5903c53e __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x592b8eb8 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5940050b blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x5942c38e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x594b1d70 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x59632cbc acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x596b6b0e gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x597715a8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x59a3a005 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x59a822b4 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x59ae8385 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x59b0882b md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c86d57 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ef80bc rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a58c66f find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x5a7031c3 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5aadd16c bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x5abf1265 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ae300ad set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b1899f8 free_iova +EXPORT_SYMBOL_GPL vmlinux 0x5b2c63fb crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5b90adc1 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5b9301c9 component_add +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c03cfc2 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x5c08da60 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5fc2f7 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c7392c6 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x5c97f176 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbc495c bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ce0ea5a extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d8e2488 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x5d94af92 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5d9f62e2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5da4e05f register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dbdbfd5 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5dd9bbb7 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5dfdaaa8 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x5e08afdb crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x5e0bec63 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5e18b971 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e75f17e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5e7a78f4 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ea49331 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x5eac8876 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x5ebff05f devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5ef282bf xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f3f875a rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f45acba kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5f719fcb pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe75189 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fe907b7 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6036850d devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60406b50 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x60579fa4 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x605b7ebc platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x609e1cad dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x609e22a0 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b20388 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x60bc88c1 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60dbc6bd pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x60de44d3 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x60e0d55c sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x60e73399 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60fd8783 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x616c616f param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x617c843b dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x6181527c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x618d740d unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x61a94a49 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x620fe382 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623775b6 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x625cc084 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x62756f3b spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x627a4cc4 apic +EXPORT_SYMBOL_GPL vmlinux 0x62838916 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x628cba77 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x62924bc1 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x629515cc tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x629dc224 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62c146ab ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x62cc6763 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x62d5c410 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x62e541db __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x62ec83de scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x62f01095 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6302b055 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6333072c gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x6344078c gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x63494fd3 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x634f83f4 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x636cdd72 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x637ee6aa ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x638798e3 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x63913715 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x639e7c96 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x63aa44d3 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x63ca5d01 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x63dcbb3f nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63e6dc24 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x63f75d9d regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6409c5cd pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6411a6cc pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x642b7ee5 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x643518f2 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x643a2bae fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x6445f621 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x646dfa57 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x646f5b94 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6473f6ae ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x6474bcb2 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x648c5253 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x649e0c72 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x64aca601 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64d4f7d0 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x64dc8e31 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x64e0f538 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x64e4a3da adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64fc141c klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6501539a netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x6510bbd1 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x65464190 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x657abd5b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x6591cb55 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d1bde4 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x65d8f221 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x65d998b0 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x65fb825d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x65ffdd74 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664be77a usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x665ecab0 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c79e54 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x66d73485 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66db25b4 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x66e95cf6 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x66e973df cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x671ed8f3 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x6728dc6e pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6736204e fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6774049c l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6785159d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679f51ee wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x67a04f27 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x67a52ab0 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x67c941f9 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x67ff62d5 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6807bc54 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x6836585b usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x683a767a ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x684807be srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x684b9824 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6859e8a2 device_register +EXPORT_SYMBOL_GPL vmlinux 0x6861a815 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x688e6829 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x68a2e787 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x68b42741 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x68bc55a1 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x68c68245 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x68cac664 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68e5e4f8 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x68f1cf54 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x68f6801f devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x690f3072 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x691c782c wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69221e37 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69242a89 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x6944102b tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697ffe5c platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a466d2 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x69abd341 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x69df67ac subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x69e2acbd debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x69e5e818 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69e75551 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a1d93b4 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6a27f097 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x6a2c6b20 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x6a376718 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x6a39c309 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a597ba2 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6ae9e8 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a83ea32 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6aaf87fc PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ada68ec blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x6adb1ca4 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x6ae56ca1 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x6af9324e sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b1d8229 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x6b25dcf6 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b4a7e51 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b690c5d led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c120c5f register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1f3705 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6c22f8f1 of_css +EXPORT_SYMBOL_GPL vmlinux 0x6c2c39d6 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x6c3037a8 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c44cfbb dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4d790b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x6c568a38 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x6c5fb2ac crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6c6538df init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c9408d8 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cbc4ed7 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6cbff5aa mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x6cc9bf07 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x6cc9e3af get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd411c2 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x6ce43d4a usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6d132b72 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3f1455 intel_svm_bind_mm +EXPORT_SYMBOL_GPL vmlinux 0x6d4334cf usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6d50be67 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6d63eb52 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6d70e52e posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x6da85445 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x6dc32449 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6dce62d5 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e120567 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6e257310 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e5b668d crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6e6003c7 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x6e6e27f6 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e804948 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x6e83aaea rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8d6df9 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x6ea4d8c5 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6eaedf97 device_move +EXPORT_SYMBOL_GPL vmlinux 0x6eb4d722 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x6eddf62f transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6ee4aa93 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6eee4ee5 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6eeea59e __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x6ef06424 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6ef2a39d gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x6f05c146 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x6f118d60 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3119d1 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x6f350419 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f47414d regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x6f4ea72f fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x6f6274c1 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f85b78d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x6fa80c18 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x6faea2db pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6fb04eeb xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe3dd25 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff91c49 pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6ffd316d regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x700a6f1b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x70120a2c register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x702a6112 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7036d0ac class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x70589592 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7062d6ef eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x70650587 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70a885a6 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x70a9879a scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x70be4a1a kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70eaf0c9 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x70ed931e blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x70eefb17 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x714031e4 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x71447852 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x714f554c each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71752f76 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x7183f095 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x718cd02c pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71c5b4c9 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x71c6f8af efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7210a23e regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x721e3c44 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x722394a9 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7234020f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x727292d1 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x72765667 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x72787f1b iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729eca6f ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x72a94965 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x72ae571f power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x72bae5ad led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x72ca8e3f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x72ce9547 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72fab946 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7302ee3c device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x731051c7 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x7313db0a wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x731a2a6a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7358cbea aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7360bb3f sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x73754fc1 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x737996ec xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x738d3c8b ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x7393ee74 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73afb372 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x73b15088 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d39d91 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f38267 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x740488eb setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x74083b56 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x7411ac37 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x742f1b4d acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743a70a8 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7448cfd4 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x744c9494 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7452c749 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x747cd657 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x748e15cc gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x749d0476 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x74a3843e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x7501df21 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75204be9 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752ade7c __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x755b7ce2 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758d4ad7 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x758dfb25 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x75926ff2 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x75c3f40d param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x75ece893 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x75f75006 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x7610147b policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x762637ce shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7638ac4e dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x7670e7d8 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769ac73c unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x76b48aa8 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x76c0da9f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x76d23852 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76decc3a blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x7703fc53 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x770c4f33 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7726cbda fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x77550cd1 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x77753753 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7783674d ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x778b675a pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x778f32da usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x77945780 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x7796e9b2 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x77a6c736 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x77b085f5 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x77bb96e7 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x77bfddd6 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x77d456df __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x77da1bd0 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x77f4d018 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7819d108 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x78253da6 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x783fec05 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x785c5bfd skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x7871c993 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78770229 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78ad0394 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b5986e x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x79025aed anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x79205e40 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x7941baf9 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794dda75 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x795213e6 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x796985b2 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79704d3c irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x79849f16 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x798d3aa9 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799e50b3 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x79d1641e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x79d83164 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e18889 device_del +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x7a032b9b dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a0a1a9f pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7a28c19c phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a567b70 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a6bf4c4 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7a7578cb rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x7a7e9690 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7a8b4b53 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7a8b6d8a acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a958fcf crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x7aa70122 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7aad07c8 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7ab8e4f2 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ad03b84 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x7b066828 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b116de6 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b72b534 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x7b79a922 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9ac29b gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7bbc0a9d usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7bc1577d mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x7bd1439b mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x7bda759f iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x7bdf1dee nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c10eb1e usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x7c2b7be9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7c8a345b devres_release +EXPORT_SYMBOL_GPL vmlinux 0x7c8e9b42 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x7c99eeda regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca620b4 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x7cd9b525 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ced5364 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7cf41b3b edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d062a99 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x7d0e1d95 hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d162a40 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7d21c07f gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x7d30f637 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x7d50afa4 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x7d53f713 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d78be5b pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7d8cc63a xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dac50f7 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x7db35a8b find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x7dbeb5d2 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7dcdc93f __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7ded8594 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x7e07b28c tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x7e0aa2e0 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x7e102639 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x7e2375bf regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7e2955c7 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x7e546770 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x7e629287 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea2c667 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7eb00ca5 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x7eb45286 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x7ee0fd99 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x7ee45588 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x7ee93b7e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x7f023606 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7f0c83df regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x7f0d9f76 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f22e856 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x7f2d7dfc regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x7f3658e6 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f937a27 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7fa3d265 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fc0f10c bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x7fd19c59 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x7fd8c6cf firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x800155c9 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x800d22c3 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x8011afb1 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8015fb3d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x8031a296 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x80395dc3 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x803d67a3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x80445598 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80699892 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x80785f3e scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x8079e259 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x8086a4d0 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809529fd alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0x80995293 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x80a5bb29 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x80b01825 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x80b2669b perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x80b50e83 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x80b65666 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x80be605a tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80da3917 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x80f1223a regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x810c52aa crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815046c1 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x819e6867 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x81c520c6 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x81e87525 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x820651e2 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x823c26f7 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x8254fc4c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x82620b71 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x82868c2c smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x828b4622 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x8294e66b crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x829e8d07 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x82b8e57e sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d8b38b xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e1bb16 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x82e28f42 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x82f6ce14 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8303fc2b dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x83089a7e iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x83102f99 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x831c9e44 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x835e9f54 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x835ff7fe xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x8361a89c ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x836878b5 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83932dc4 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x83b8877a iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x83cc1432 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x83d0204b ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x83ec52f0 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x83ed0914 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x83f4f92e fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x84053d40 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x842de35c usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x84320b11 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x843e1e2c ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x844d9430 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x84607b3e fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84a189da unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x84b33b7b sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851df2e0 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8530600e iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x85425796 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x85490f02 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x854dd2d8 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x855d7493 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85a110b0 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x85a7de38 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85f8e7ec evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x86065b6f rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86321f4f ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x8658b819 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869a3e48 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870baf16 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x87136a71 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x871f0088 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x871fcfff ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x877135ac inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x879d520f device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x87b643b8 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x87e5b343 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883e980b devres_add +EXPORT_SYMBOL_GPL vmlinux 0x88469f0d virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x88497bd9 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x886d0f9a blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x886f6d8c dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x887d7058 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x88ab1185 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b33c74 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88caee65 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x88e970df sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x88ea8023 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x88f0f263 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8905816f gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x899c32b5 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x89b82701 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bdaa15 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89e86d4a gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8a0ff1f4 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x8a294db3 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x8a3936ca regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a910776 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x8aaf7b43 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abc2b88 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x8ac79100 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8add7e52 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x8af32728 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b414044 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b841310 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9373ae devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x8b9f2b79 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x8bc4d739 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8bd3751b tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x8bebe6a4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8becf6c6 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x8bfbc1da ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x8bfc56dd power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c007852 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c2eaf56 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x8c470092 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c4fea4f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8c580a0f cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x8c5e0b4d ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c66e380 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x8c6d821a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c866b39 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x8c96cd1e fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8c9c0c4f virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8cb88237 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x8cc35134 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cdc4f29 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d4ee3be debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x8d6cc888 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8d8cf30b inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x8d93f799 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8d94fd78 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8dc291a5 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x8dc4c38b tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8dc67aa6 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8dce196a dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x8dedadb5 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8dfa013e ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e542fbf fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x8e635a07 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8e6c6dc1 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x8e76599e vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x8e8c7485 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x8e9ea3ef xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x8eafabe3 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f141197 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8f144b7f usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x8f17766b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f2da620 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f85f852 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8f99295f skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x8f9ec26e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8fb1aed1 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x8ff75049 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x90071d2c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9014b346 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x904dfe20 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x905f625c smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9074ebbc fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x907eff09 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x909331a1 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x909af742 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90d311a3 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x90d4e908 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x90d93f87 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90debb8c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x90e23e18 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x90e46738 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x910080ca serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x910eab75 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x91261004 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x9166c320 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x91870034 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919c65dd sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x91b91a12 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x91ba2c4a bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x91c0ef9c rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9211fcab led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x92175421 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x922fde6d ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x9231d31a pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925224f7 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x928a4e59 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x92986501 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x92b09ca6 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x92b362fa swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x92be49c1 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92df3de6 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x92f18610 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932b4206 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x9341ec28 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x93457ea1 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x93520465 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x93761d28 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x9387d7ac sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x939496e4 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x939a46c6 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x93ae5b24 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x93b67f1e ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x93cf3c24 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x93f3a16e regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x941a0c93 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9465709f bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x947e23c7 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x9493ce21 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94b3ce21 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x94b9e561 klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0x94bca6e1 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95354e71 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9552e78b devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x957ca68c phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x958c0aba wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959cd67e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x95a4c948 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x9602391f cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x960d12b6 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x963507a2 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96579e9b bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x96b2eab0 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x96c34900 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x96cd4435 get_device +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96f05bec proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x9720a779 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x97327130 user_read +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9762d0c3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x9775a73f hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x978474a2 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x9790ede8 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x979d5b31 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x97b1a865 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x97bd3597 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x97c6d710 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x97dcfae9 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ecde37 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x9828cd4d i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98568678 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x9871ff88 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9877e3cc usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988a337c aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x9897ba5e sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x98d439bc devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98f9c89e pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9913d8c7 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x991e75ae blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x991f429b debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9925ba3c pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x9948c2bb usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x995280c1 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x99595e93 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x995cbaa1 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x9998bc9d device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x999d83bf __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99fd0e03 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1218bf efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a36827c acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x9a393198 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x9a54c02f pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a960882 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x9ab34f4a powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x9abf00a8 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9acfb79e event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x9ad3530c print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x9ad8ed88 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x9adf4200 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9b235673 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9b3ef469 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x9b5d36ca da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9b603f4c xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x9b67c39d tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b9d5d41 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba7f824 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9bb967c1 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9bc6f2b7 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bcd8ddb irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9bd5c5c5 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf96aa3 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9c09dc5c nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c186053 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9c187ce5 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x9c1e3d52 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x9c28c307 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c5694d5 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9c5ddd96 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9c6590d1 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x9c735200 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x9c796d57 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x9cb60034 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x9cb8e195 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc5a7f1 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd2c4fc scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x9cd76711 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9cdfe61f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d6a323d tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9d6ca56e virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9d7a2f25 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x9d7f6cec sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x9d9aaa03 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9d9bfb70 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e1bb073 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e31d1d8 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9e33a898 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e71dd6e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x9e85c13e ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x9e89d0c9 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x9ea48c93 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x9ec33e20 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eed99c2 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9f0ced89 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9f2e33e1 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x9f46acbf device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9f7c181d usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9f81b2d6 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x9f87f8a7 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x9fa3de1b ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9fa9a9de blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffe9377 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa006c4aa sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xa00f3743 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa0191aa7 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xa026ec4b thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa02984e8 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xa05aa0d8 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xa0693d7c regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xa085565d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa08c323a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa0c2a794 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xa0ddc48d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa0f334d1 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xa0f73fde devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa103abe2 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa12b80a2 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa12fef87 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xa1498221 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa14a2842 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa16ba300 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xa1786388 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xa18dbb5d vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa196e109 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xa19e230e sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1af7e83 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xa1b20df8 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa20a4996 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xa20eff8d usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa217e0d8 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa2384760 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa23d2fc5 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa243bcb1 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa25555d3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xa258d95d pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa2a9d23e pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2ae9ac4 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa2b1fd43 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xa2b4db68 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2e78d1b crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa2e9c4df ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa304e19d gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xa33a9270 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xa3455c0d kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xa3468688 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3908e14 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3ae65c6 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa3b6bfc8 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c14261 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xa3c382ee devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa3d42bed cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3e37b92 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa404a36c pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa42768bc ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xa42fe19e pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4536a07 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa4553e6c device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xa457cdeb max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa45942c3 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa45c7544 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa4670c05 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa4711c4e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48f9bfd __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa490acae thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xa4a01f49 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xa4b89f8e uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xa4fbd0a7 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xa50b2623 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa515d7fe acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xa5293223 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa5370ccf get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xa540a37e gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa57d3730 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xa592b473 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xa594e916 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa59ff6a8 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa5ab6296 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xa5ca6c0d usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xa5d0f5a1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5fa8624 intel_svm_unbind_mm +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa631e5d0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa640af9b device_create +EXPORT_SYMBOL_GPL vmlinux 0xa657965f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6746fdd ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xa677c037 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xa68004e5 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xa697c812 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa6984eba mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa6a2579f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xa6ab21b8 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b4cb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa6c85f80 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa70bc61e inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa70cfe46 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7175a7f irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa71e8e9e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xa73deddf tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xa753107c __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa76f1523 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa7857241 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa7a9e673 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa7b31a03 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xa7bebcaf usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80493d6 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xa8070786 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xa808a53f devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xa8138b7f __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa81663d8 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa82df24a class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8609809 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xa8745cfe pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xa884a33f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa88a5d1d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa88eb348 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xa89db743 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xa89e491d ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xa8a4829e efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xa8aacafb __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8df5d8c crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9143342 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xa921cef6 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xa92922cd sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa931bb07 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa933bf95 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa9a82300 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xa9ad1137 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa9ce340f shake_page +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa0cd535 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xaa116cff scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xaa28c5fd __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xaa2afd9a usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xaa2e60f6 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa7e25c7 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xaa9bb251 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaae4c6b4 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xaaf74259 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab0b22c0 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xab124506 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2d7b70 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xab3f3f6a power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab68bbfd pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7656d9 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xab817be9 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xabaa8352 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xabaeb402 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xabc1f486 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabca2363 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xabd0f472 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xabd32df9 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xabdcc9ca ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xabe23e5d gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xac018e73 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xac10c242 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xac4083b3 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xac5306c2 device_add +EXPORT_SYMBOL_GPL vmlinux 0xac6e6814 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xac7537b2 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xac9c9c2f ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xaca084d2 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacc27717 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xacc8646d skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xaccc3205 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xacd62ddb ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace6f734 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xacf9155b blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xad4cddc6 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xad640ed0 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xad6baf50 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xad821ac9 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xad8295ac watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad94eae9 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xad9d3603 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xadb78b58 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd996f1 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xade61805 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xadec0553 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae05fbe3 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xae0f662f unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xae124548 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xae2be1b0 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xae30bca6 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xae3989b7 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xae5203f5 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xae5dad3c usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae9a69ea debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xaeb47907 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xaec5e1e0 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xaed3ec2d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xaee7d9ef debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xaeeb5b52 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xaf1b24a5 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xaf64ac48 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xaf854d67 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafaa7e10 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xafb68863 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xafb6961a iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xafdd4ef7 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xafe787ef vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xaff77696 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0xaffc581f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0346b83 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04a543e input_class +EXPORT_SYMBOL_GPL vmlinux 0xb04f863a device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb09a2b94 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0be501c usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xb0cdce99 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0defd4d i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xb0e1e96d dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xb0e66402 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xb0f75c62 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xb11348f4 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xb1171f30 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xb13723e0 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb155e22e usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xb1565a7c kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb174e47b wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1955dc8 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bedeb7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1eca78c regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xb1ffe403 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27d84bf platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb284ad34 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb2ddf986 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb309d169 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xb30ebf5b devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xb316e3d0 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xb31c8c17 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xb3246186 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3332a26 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xb33d7ee5 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3520dcb devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb35960ea pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xb3854e40 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb3a3f9fe blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb3d11419 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xb3d1f5a7 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb3d9ccb9 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xb3dce48c user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4254f0b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb42d01cc phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb46b8455 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4733e94 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cd863a ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5240367 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53ba69a fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb53f65b1 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xb5460ae9 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xb5521555 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xb56f3c39 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xb5771767 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58e7c35 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xb59f8342 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c0b950 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0xb5e1ba8f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xb5e3ba1a thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62af633 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xb645de8a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb65ae975 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb6a46342 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c62e5d regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xb6de99a7 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eb0558 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xb6f6200f __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb7158224 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xb7159ac9 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb73b9db9 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xb74efb10 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xb795e6a9 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb7a436f2 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xb7bbff3d __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xb7cae129 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb7d1f87e task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xb7d7119c virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e00eab devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb7e0f0d7 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb82a26f0 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xb82f6aec regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb866d6c6 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb86f5695 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xb8732475 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8c38c8d dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d72ad4 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb93578d7 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb93e08be blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xb945ace8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb95973df sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb961a19e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb963d13f usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xb9787d16 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a4fd75 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c4cbe2 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e4a4b3 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xb9f4fb62 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xb9fb43e2 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba49114a ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xba528d6c key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xba8dfc07 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xba939fc6 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbaa29bc2 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad12703 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb45d4ac __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbbb56d2d pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbbbdc32 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbe02170 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbbe6e41a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xbc4217d4 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xbc449924 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xbc4e15cd unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbc56537b ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc7ef484 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xbc99cf3f regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbcac4541 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc0d544 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd8530d tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce6e0ef usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xbcf0f419 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xbd022d5b shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xbd11219c ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xbd3c22db __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xbd3d8da3 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xbd3fcc0b crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4a490d regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd76e155 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xbd791c56 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xbd827853 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xbd857ad9 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbda694dd rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xbdb9ca7b crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xbdcd7275 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbdd0c8f7 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdf0bc95 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe5d220f ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xbe639e8d scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6da1e2 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xbe9bfd42 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbecf9f4c __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbecfdd02 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xbed66204 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbef01eaf blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xbefbe598 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xbefe3a22 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xbefeb56e acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf08bc7c xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xbf0d53c2 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xbf15f4b1 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xbf1d00d1 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xbf238842 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbf2490d6 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xbf4e11b5 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xbf60644c acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xbf6a4ce9 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbf6c1957 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf984b52 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xbf9ee0f9 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfa60e7e pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xbfa6aeb0 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd67406 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff8cd97 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xbffad937 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xbffd4142 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0514cf3 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc05150db bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0xc0517587 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc0667933 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc094fb37 dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f22746 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc11f8a51 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xc121b824 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xc12be87f regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc152dcde ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xc15b16b5 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16cbed5 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1944d8d fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc1a9ce99 __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xc1c4d613 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc1c5ec7e devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xc1cb1546 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xc1ec6188 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc2017efa regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xc20f4b9a devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc22790a7 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc231b3e6 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xc23b121e debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xc25758fe pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc25c9da3 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc28cb9d9 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xc2eea92b module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc316bd91 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xc3266109 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xc33f97da ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc372ef48 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc37c35d3 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xc37fd19e key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3b13562 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc3da3840 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xc3e9273e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc3fe7bb2 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xc4246b88 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc447e2aa do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc468f800 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47283ac crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc48a2a7e fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49665f3 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xc4b61f4c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4fc0712 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc4fce60b i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc50f6cb8 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc513ff34 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xc52c2813 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc55fd05c cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc597e520 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xc5a118dc sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5b12a43 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc5c23670 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xc5c6c407 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5df9e7c pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xc5e0d4f5 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xc5fb0340 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xc5fb1609 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b4524 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc68611c7 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b886e1 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6d73832 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xc6da7a0a __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xc6e537b5 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xc6e642d9 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xc6e992e1 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc70c7917 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc76d458a pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc79f0d8a nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7edd9ac thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xc7fb53c5 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7fcfd89 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc804b34a sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xc809e274 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xc8128f88 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc81b765d put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xc82294ff sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xc840e473 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc84239a6 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc850cc73 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc85f0174 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc87aa42d pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87c460f led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc89d4842 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b392c8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xc8b795a7 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e643f8 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc8ed1a41 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xc8f27cf0 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xc908309e tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91abf62 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xc91e826b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc99fe2a0 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc9bc4546 put_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9c78d7b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f0e20f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc9fa4712 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xca0d45f2 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xca21c145 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xca334ff6 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca3b0e33 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xca5386fb __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xca67daca tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xca6e3c6c regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xca7689af xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca830cf3 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcade2a88 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xcadf4a23 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xcae8f7c0 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xcb07b97a __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xcb0f9eec rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcb136de2 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb316e68 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb59bb2a fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb67b633 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb9d58de __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcb9eaef0 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xcba20b30 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfb73e5 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcc0924b9 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xcc10dac4 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xcc1ab343 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xcc33c609 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcc49f06c virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xcc7d757c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccb1f875 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xccb7cf58 put_device +EXPORT_SYMBOL_GPL vmlinux 0xccc3c521 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xccc5b7b7 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce50720 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd188063 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcd1c4977 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcd43d168 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xcd46c5fc efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xcd4c4b03 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd978908 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcb0474 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xcdd81812 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xcde69cff rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcde94de5 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xce031871 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce30fd22 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6f0104 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xce7316b0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xce85a631 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcecf8f3b get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xcee06e1c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee7b0c2 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xceec5882 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf049026 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf08df71 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0xcf2c764c clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xcf3dbe52 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xcf3f4d6f devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf581dc0 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xcf887221 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xcfa0221c blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfce167e device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfe3e922 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcff22430 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcffc456c free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd01c2667 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xd0265815 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07f6ebc crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd08007f8 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd09d9b5a aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c6de3e pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xd0c90ccb uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xd0dcdcca xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xd0e83672 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd0f9e3d5 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd101335c ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xd10b49e7 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xd11bce59 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xd13b3239 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1553b3b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1692428 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xd16dee34 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xd17572d2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xd187a5a7 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd1944b9d rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xd196b570 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xd1972afd iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xd19ff1d2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xd1bb358b xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xd1c8012d pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xd1cc5583 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xd1eff426 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f5f88d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd1f70e90 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1f74744 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216ddc3 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b3090 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd220d215 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xd221e76d md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd2991c6b irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0xd2c4fb8d vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2c821d8 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f4bc76 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xd2fca208 acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xd3014b89 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd301dd85 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xd32e1b32 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd347c57e scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xd359eadc class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd35bf1c9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xd36859e0 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd3ab8958 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd3ef6165 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4241369 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd43ac0d1 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xd43c40b5 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd4422a73 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd45c9cb8 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd466a339 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd4a73e15 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd4b7b47d blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4bee4df da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cf6416 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd4d08f67 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd5108217 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd53cb66d gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xd546aaba __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xd5583cb9 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd561f258 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd598f525 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5aa58f4 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xd5bd0495 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5befe42 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xd5fd4cfd crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xd6092ab4 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60d43c6 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0xd623b096 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd632d79f dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xd64bbb3f flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd658867b ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd65ef0e3 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xd65f7b21 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd69a4ed7 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xd69e3809 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xd6e15d32 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6ee8f73 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71ecda1 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd71fe93b reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd76068bc pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd7667634 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd772e75e regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xd77308c2 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7871ee7 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd7b2db50 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xd7b80eaa crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd7cf3589 klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0xd7d3fa27 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7ecbeca kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd8063fd5 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xd817c0b8 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd84c317a pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xd85a1d7a crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd866a124 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xd8741e34 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87744ac usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8801689 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd8802a74 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd8823b72 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xd8857864 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd8e7333a nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd8fe63e9 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xd90cfddd devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xd90f8909 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xd9113b38 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd9295aa8 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xd92ad44e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f33e19 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xd9f4b9f3 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xd9fcd2fb wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xda2f146e nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xda46fb45 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xda70c5d1 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xda893b08 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xda99b7c7 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdab43e67 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdac61241 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdadaef90 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb7a1279 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdb92e0bb __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdba28bad ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xdba2deb8 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xdba5e1f8 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xdbb4597a regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdbca7822 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xdbd0b147 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xdbe10601 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfe4701 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdc1279d2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1a74f8 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xdc54c381 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xdc57565e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca11fc6 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xdca1c0ad tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdcb3e254 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xdcc98d3d regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0xdce9435f pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4602b0 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xdd502b90 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd6444e4 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdda59208 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xddab88d8 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xddaca31a seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddd91753 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xde0c96ac fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xde2161d8 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xde22306e nl_table +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde57d114 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde7e8502 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xde8b348a ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde92d26c fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdedd6d3d bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdef2536e tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf198823 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xdf2354fd adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xdf247179 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xdf3472ea usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xdf39f990 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xdf3f3910 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xdf543ad6 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xdf576447 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdf8246cd regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xdf85cf64 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xdfa8d3c8 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xdfb8718e lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xdfdaf411 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xdfede2d8 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xe0050d51 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe008e635 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03be310 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xe04b0346 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe057527e split_page +EXPORT_SYMBOL_GPL vmlinux 0xe06463ac event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe07f2b69 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09d0f29 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b6ef17 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xe0c296ae eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c811b0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe0d8d136 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe0f2b376 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe1015e8f tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe1120fbe ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xe1176c79 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xe12adb11 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe137a3f1 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe13b18a5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe166f6ae i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe16b04c3 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1701524 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xe17241bc devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1b287fe regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1cc5cd1 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe1e61f03 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xe1f91bce device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xe21149a2 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe21149b7 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xe21312c9 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe214c6c8 xen_remap_domain_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xe24dd25a devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe28dd35c relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xe2913962 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xe29349dc copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe29b7d7a dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe2a1b829 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xe2c2f36b iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xe2cdf6db regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe2d7cbe9 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xe2fa5bd3 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31268b7 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xe325409a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33edbf2 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xe3451726 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38a11cd regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xe3939f9a crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe395b3d1 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xe39b6dcb cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xe3ad9972 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3c50ec6 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe3c9358e acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xe3d1eacd dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe41aecee raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe42b5af4 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe437ad60 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4534ff1 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47678e1 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe487154c swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4bdc7d0 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xe4c17664 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4f4dc43 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe5076ec7 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe545a811 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0xe54ac99a posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe54fc167 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe555c2e0 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe56836a5 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xe57089ee user_update +EXPORT_SYMBOL_GPL vmlinux 0xe5711913 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xe5790a8d spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5942d11 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xe5a16ac7 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5d028db spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe5db3048 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe607daa7 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe62aa2f6 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xe64a0ef4 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65e142c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xe65fa209 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe66e7e78 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xe6745d62 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xe68460ed pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xe6950a74 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe69a5708 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f23940 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe6f81e3f clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe705a9f4 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe72d21c0 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xe7331cf9 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe74ef3a4 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe74f40fb dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xe755ae0b led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe769fc1f unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe78a2866 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xe7c47db2 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe7c6a619 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xe7ccdb65 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe7dc92c7 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe7ee438e genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe805c47b sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81ba30d ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe870c3a9 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe8822945 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8ab7f2a virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xe8e87101 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe8ec49d3 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe909e6f8 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xe9298cf8 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe93b427b platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9449769 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xe9510673 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xe9514b50 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xe9678041 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xe97512da sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xe97f2b72 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe97fedbf vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xe9bef4a9 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe9c2d346 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe9c77714 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9db6902 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xe9de6228 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe9f30691 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xe9f3f6c0 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea18b0ee vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xea1ec8ac sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xea21880d arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xea253fb7 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea774052 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xeaa8cb03 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xeabcac1b gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xead611a1 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xeb0af671 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2a920d acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb39f147 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeb46b24a dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xeb66c65d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec16f062 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xec189260 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec3b1c6a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xec3f0f6f disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xec46620e pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xec542597 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xec5c68ad acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec65ab5a virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xec861d0c dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecb91703 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xecdeeafa debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xeced40c5 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed0414bb regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xed241994 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xed3309ab sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xed50ebaf cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xed546b44 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xed7b62cd set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xed807e94 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xed85ae09 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xed9ce7ef inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xeda678a7 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xeda8f1fd rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xeddeebd6 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xedfedb25 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee1df54b subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee29a6a0 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xee557bab pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xee5ea112 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xee61cde0 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee806b9a pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xee8f7d60 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xeea9bef9 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xeeb7ad91 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xeee1f21f scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef5724bc usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xef643572 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef6fa7a0 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xef8b49af palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa834b5 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xefd51047 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xefe1c68f dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xefea9426 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xefeb8619 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xeff74cec fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf012d2bc disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf015a285 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xf01ca4f2 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xf01eec1d xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xf0203b59 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0511e53 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xf05b914d usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf060cf47 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06b5dff simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf092fdeb inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf0af58c1 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xf0baedf4 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf0bed684 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xf0c3c535 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xf0c796cd __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xf0e12aae thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10c9680 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf119ba98 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf13af3a4 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf13e1477 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf1586287 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf166d460 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xf16c3768 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18e494a __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xf1966533 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1cc8270 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xf1e8de0e mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf21a5b5f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf242dd38 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xf26bb3c8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28d76b8 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf297ceb8 component_del +EXPORT_SYMBOL_GPL vmlinux 0xf29ad3b5 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2bfd797 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf2c3b415 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2efe591 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf2f9d24a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30a5aa6 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30e4cf3 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf315165f sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf320a40d driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf324dab6 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf32cec73 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf339305b virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf35d67f6 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3a90da6 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3d6f6d1 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3dfc2fd iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xf3e1901e dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3eda7ed _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xf3ef04fb pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f97ac3 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xf432aea4 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xf445d046 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xf4473ba1 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xf46aea31 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4d05be7 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf4de8a29 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xf4eb81aa usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5074d79 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xf5165230 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf53bbaaa blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf5421ca1 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf548a38e rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5591b9a phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xf56e7891 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59d5501 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5e648df regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xf5eb8823 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xf5eb8a3b ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf6805f1a driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xf688c5c9 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xf68a150e component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6ca94b2 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf6d40877 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf6db7908 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xf6e78cf7 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ecc1d7 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf721d116 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xf72ce1ac wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xf73f217d __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xf786198e xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xf794190b blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xf7977f3d wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7a5b5fd usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xf7b645bb tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf8051ff2 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf81b9960 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8339155 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xf846e5a7 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xf87ea30a debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf8a6dd33 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8d6bd1e driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf91d828d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf92ff3f1 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93650e4 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf940b646 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xf9439073 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xf94ac26a ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9648956 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99736f7 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a74bce dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xf9bb0830 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cd8844 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf9d2f7f7 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9e731c6 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xf9e84248 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xf9ef016b usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfa03a4a8 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfa0dce50 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfa14bb54 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xfa191320 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa262434 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa71f8e1 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfa834315 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xfa8849f2 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xfa8ab2eb ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfaf68914 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb1f819d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb270a5d mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfb2dd58d crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb332427 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb79b36f irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xfb84bf99 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc3e712 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc026a17 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1648ac invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc261281 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfc3401b4 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3c12e6 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc5ad2e7 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xfc5cbb23 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xfc5d8a69 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfc683a0d devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xfc7bab5e tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca8a4e3 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfce24984 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xfce9ef7f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xfd2edc03 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xfd498227 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd73923f set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7b4961 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xfd7c36e1 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfdb4878c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xfdc18c61 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xfdd8cb5d device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfdeea348 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfdf56cd9 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xfdf6c62a usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xfdf94ae8 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xfdfac1d2 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xfdff65b7 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xfe1468d2 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfe2a4451 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xfe346a5c cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xfe363921 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xfe47ef70 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe752ce4 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfe7e2170 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xfe98fe6d blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea79811 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfeaed30e led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xfec77a47 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee746af fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xfeeadea8 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0c30fb subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xff2834a6 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff3269c0 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xff403645 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xff41342b __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff77cf75 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xffa168d4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xffa70d05 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xffafecd2 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffbabd44 devm_power_supply_register_no_ws --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/generic.modules @@ -0,0 +1,4592 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_fintek +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd_iommu_v2 +amdkfd +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +aquantia +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +ascot2e +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx2 +camellia-aesni-avx-x86_64 +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chacha20-x86_64 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cosm_bus +cosm_client +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +crct10dif-pclmul +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-104-idio-16 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfi1 +hfs +hfsplus +hgafb +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i810 +i82092 +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_oaktrail +intel_pch_thermal +intel_pmc_ipc +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_telemetry_core +intel_telemetry_debugfs +intel_telemetry_pltdrv +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mic_bus +mic_card +mic_cosm +michael_mic +mic_host +micrel +microchip +microread +microread_i2c +microread_mei +microtek +mic_x100_dma +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_hw_intel +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvmem_core +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-broxton +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +poly1305-x86_64 +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qat_dh895xccvf +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-x86_64 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sb_edac +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scif +scif_bus +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx2 +serpent-avx-x86_64 +serpent_generic +serpent-sse2-x86_64 +serport +ses +sfc +sha1-mb +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-dmic +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-skl +snd-soc-skl-ipc +snd-soc-skl_rt286 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedstep-lib +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spl +splat +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surfacepro3_button +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshiba-wmi +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish-avx-x86_64 +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +visorbus +visorhba +visorinput +visornic +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zavl +zcommon +zd1201 +zd1211rw +zforce_ts +zfs +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +znvpair +zpios +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zunicode +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/lowlatency +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/lowlatency @@ -0,0 +1,18723 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0xb8f223e0 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x73892a61 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0xf2b0ba9f acpi_video_get_edid +EXPORT_SYMBOL drivers/atm/suni 0x7019076e suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xb74447e9 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7593d520 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xbaa45fc7 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x2b6a194a pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x37eeb0c9 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3d649d29 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x57684f3e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x98b0b6f7 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x9bf1081e pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xab143caa pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb40769ac pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb74a7155 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd47c7195 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xf08e50b9 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xfc5dfb55 paride_unregister +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x1fb53e26 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x06be46b6 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4697e425 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x755a6b37 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb4fb0c81 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2232645 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x304521a9 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5356042d st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5eefc4ba st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6270604e st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x1e540b86 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x38510ef1 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x61233eaf xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1a4e470f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6111f88b dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f1a4325 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f61ea6c dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf0f9908c dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfe044c2e dw_dma_cyclic_start +EXPORT_SYMBOL drivers/edac/edac_core 0x2163bcff edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a3dec26 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x114faedc fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1bb05c9a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1d41a43b fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2432e268 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d01fa13 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x428f65a6 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x59b30e26 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x603de2ff fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x66644e86 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6eeba461 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x84895a03 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ddae4cd fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x95c95a51 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9bcf2f21 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa12e1a29 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc44f7b3d fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc5b1f409 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcdbdc1e9 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd30f5d60 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde7feb52 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf6cded4 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdfbe8b47 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe5cc077f fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe66460a1 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7ac8535 fw_cancel_transaction +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x0dfa07f9 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x1058341d fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x112da57e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4ac49dae fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x519a3757 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x79ffe8c7 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xb508f672 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xbdb33a39 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc5ec666e fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xd1d5b212 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xf6aa64b2 fmc_device_unregister +EXPORT_SYMBOL drivers/gpu/drm/amd/amdkfd/amdkfd 0xc3d7b47c kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x002b651e drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00598228 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0061599f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01074245 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x031346b8 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08f4e3c3 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x095ab5eb drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d0b1dcf drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d4d84e9 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e7597c6 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f4748 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f9c3234 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fcdd9c4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ff58bb8 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10dec27c drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11385409 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12a68e4a drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13684db4 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14180c03 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15fad23e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x165df767 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x165ee845 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17cc028d drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17dbd149 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x180ee3ea drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x186b417c drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a8fe7e drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18cd358a drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19b71839 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19fccf6e drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b90cdc9 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c7baa74 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d56df26 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d9a06de drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f9c125f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fcf4017 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2079d83b drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x215143e1 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x221482af drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22e5a6ab drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x240ebf7a drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2501dd97 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25555f9d drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x257e5f8a drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26005a89 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x268565ed drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26a4e905 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26dbfece drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2700ea46 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27148674 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x273a3bf0 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27f1ffdc drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28fc9851 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2937f0d0 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2be555a5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d33cb88 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d917adf drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30f6403c drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31d204bd drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x322a7150 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34156abc drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x386021eb drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a0ab44 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x391fbbd4 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39cf9d56 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a0679eb drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9dbfa5 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bb666c1 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c8916cf drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cfda8d1 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d4d19e1 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d798c1c drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eebb25a drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40c06efa drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4352b51d drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44837b30 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45ca40b9 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46d9978b drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47578aff drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4885087f drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49332e63 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f466c0 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a6e8584 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bde07d2 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c1007e0 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e6fe872 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e7ac5a4 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea173cb drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f569220 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fa8e592 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4faffa29 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x508c8a15 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5095c8c0 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x513828f1 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52dfc0d9 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54baf44c drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55a54ce1 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5674ade8 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x569c2417 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56cb194a drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x584e692b drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58ce36f5 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ae4ca6b drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b5f50f0 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bfe4b20 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c11687e drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c4ee2b8 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c5d05d5 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c8d0b62 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ec37aac drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61e1395c drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64723cee drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a8dafe drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67fdafed drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7954e3 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b44e912 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bcc8ab0 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dc10979 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e07431e drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e1a3f0c drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71dfab8c drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72ceb071 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7342ad04 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x738b803f drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74449064 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x756e3fd4 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77f9b5bd drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78863a5e drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790e652a drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d927da6 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x808fe057 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8139b524 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81b9edc8 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81cbe187 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82fb7788 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83417de0 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83797dd2 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839a6ca4 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x841492b5 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x846663bf drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8612e925 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8618ac77 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8632f8be drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x865ff798 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86b9c13c drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x872f23c8 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8793b382 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8809cb5d drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89f15689 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a278604 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a715b36 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a721006 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c37607c drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e558d6d drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ed8cc51 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9078d0c5 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93bc3987 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94e84192 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95b466ef drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96e6c457 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97b47e8b drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97f428c9 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9898e95b drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a2cd30 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98e283e5 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d341aa2 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f384fb4 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa06a7b4c drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1144beb drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa24615fa drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3b32f8c drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa44e471f drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4b7cf6c drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa585e8c0 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa59874dc drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa67ba506 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6b3f62b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78e5d21 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaace7be9 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaba5c55c drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac639d63 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacbbc40e drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacca57a7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0c42b6 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf2acffc drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafc3d01f drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd9e642 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb05b5ea5 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0706f5e drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb13a4fbf drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb156085d drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2f59e13 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb65002a5 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6783007 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6875cd4 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6c85f97 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7330cb9 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7ba2359 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb80d5631 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8223a19 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8393085 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb898d778 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc2bc9f5 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcc3f450 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcfd0a64 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbda73552 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe4606cc drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf3afabe drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf677ffd drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0094e2f drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0a83774 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0f91961 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3232cd9 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc378a8cb drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7b677aa drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7c669da drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91ba286 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd9841a0 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdccd499 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce5af923 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd016e96a drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd026cc1d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd029fe6e drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1409c5f drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1985165 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd199d1c2 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3cc10a8 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd44db0eb drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4647dca drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7095e45 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8e6154d drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8fc8aae drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9c37bd5 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda6d8d49 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa3e2ae drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb3dbf1f drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb4cd9bf drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfbdf455 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0799a9a drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0928cde drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe10b0261 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe235fc26 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2986579 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2c44d5f drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2fb9330 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe33e1a8b drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e81e5d drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe522d4ba drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe858bf5a drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8b4f1f6 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8d21094 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d9834a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9fa0b07 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb60a640 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebeaabaa drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec781766 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecf2b121 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedce434a drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef21c3e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef580b01 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefc19b90 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf01ede24 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf208039d drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2ba0e6e drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf312d2e3 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf38623be drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4810ec1 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf55f0ff2 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7da8edb drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf811751b drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf81e44ba drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9852b53 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9d7ce54 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa26de25 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa48ce6a drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb7e481b drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf34871 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd927400 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x035c6b07 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06e39d24 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a80208e drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cd591d2 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ceb7906 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d4dbfa1 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f350d1b __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x178a93fe drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18469337 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1867ba3a drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x192dbf15 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1cd8644d drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e8a2d2b drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2101da31 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x226ab91a drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24f53538 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25435dd1 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2951b8c1 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x297028a0 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a3f12b3 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b26e048 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cbceb14 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3329b872 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3357579e drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3746a466 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38adc48e drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a361519 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fedbf8b drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x486e5957 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48d64c87 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4984199b drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a26b357 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a5b37b2 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4be36647 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c81b399 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f784793 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x523151c7 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x548c888d drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5583c1c4 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57a0145a drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x583aab05 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5915ff3d drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b5bc7e2 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5db8c52e drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60a21bce drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x612ac1d0 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61dd992f drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6aa456ad drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e981435 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f06f5a0 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7121085d drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74d82e47 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x756701a5 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75a96ac5 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78e2ccef drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dc43f83 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82127e64 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85f5a35e drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87ab2cb7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ae022f0 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c323709 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c8eb493 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fcbdee6 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90cbf618 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90de0097 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93431aea drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93981660 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95392c1f drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9612ee80 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96905c55 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96eb7bc9 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x973269c7 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c2c0cee drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fae8b36 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fbd3ede drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4321ab2 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4a18bf5 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa64dbffc drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa678cefe drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ae1055 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7f2bfd2 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8f26a6e drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa99dc4fe drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad927431 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb046d540 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3821079 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5da1184 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f8db8f drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb867b420 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc098b99 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0e5c177 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc25cf76c drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc543e398 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc804a267 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9b2991c drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca4ce0e0 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd6f0081 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd7c4b72 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1d82130 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd46d3bf6 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd48bdc09 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5a631b7 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd60ef5cd drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd76cf27f drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8571393 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd91dabdb drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9bc95fb drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9d10da1 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf2ff8cc drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfd051a2 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4aa1c52 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4adebb4 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe79d0f6c drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea78afc0 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec16f32f drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeccd0766 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee072091 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf16d5349 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf302f0fb drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf357f5ae drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8d48bcc drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbfcf144 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc852409 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfec4c6dd drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03f0e2c9 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x041da8ae ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x059e38c8 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x06cd97cb ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b569e54 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b834729 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e3c9577 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ef361a3 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17aedc6c ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cb9be31 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f152258 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25ed4e75 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26b5bc96 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2d8c0faa ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34e7309c ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x35452d8f ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x38c0eb3f ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39a307de ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b436c55 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5940ff3b ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c015765 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5da0948b ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e2f58b6 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x622612fd ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x690a508b ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a7a212d ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7099635d ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73f3a4df ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x741ba1af ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x74dab735 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x771c019a ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x776580ac ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d42615c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7f27b5b7 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8323c0e9 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84353f4e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87bbb1a5 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a832c3a ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cef3109 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92fabfb8 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9306a0eb ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d27577a ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d7fefe7 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa441b6a4 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaad267f9 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac278afe ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb374bba7 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe2e4cb2 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc74ab9ad ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc7c8cfd3 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd211b0b6 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc0cd76a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe198bf80 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1aabad6 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe22ddce ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x34aa59d9 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x6fc3b6dd vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc811fd0f vmbus_recvpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x4e1b51fa sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x399aa6b6 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb3deda95 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbcb7af12 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x04cc3044 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd048826c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x18c4e940 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2a882101 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3834bb63 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x61f32808 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x66a9b912 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x760b53ee mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7707692c mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x84871a4a mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8a8f1305 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x90ca5164 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x93552a99 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x94a092e5 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa4651001 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa573d4d8 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xba72a655 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc739fac5 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfb2cea55 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd088be47 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe5e0f505 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x335c82b7 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xf9c90e5a iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x5eac0985 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x7621430a devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x93f5eb80 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xfa02c84a iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x04190ede hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6c865715 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa3e07355 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xab4dc58b hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb0933994 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc343c6d1 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x77cf3def hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x80878f39 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb6d180b4 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xdc3c0556 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x25e0592e ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x3c27b7f3 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x491d1f4b ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x5f07d74a ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xaf1eb4b8 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbc66ce00 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd088eb4b ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xec658a3b ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xfaaa37e0 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x0f8c787c ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x49c8ce57 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x60df26a5 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x77db955b ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x995a8f97 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x0defada0 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4390944e ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xd5ab27d7 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x06e8153f st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1cbd3c65 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x304edae7 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4d7d17d9 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x54ea5e63 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x57a098ba st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x80b4a050 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x82c4c55e st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x83114150 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xae3e7e0c st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcabd716b st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe4618046 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe59d0f7c st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xef9bf57c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf1734764 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf34d7f29 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x2c794f2a st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xd708c0bc st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x12b67249 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xeeceb28d st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xa4e7010e adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xbbde7653 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3ac58fd7 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x54c2f69c iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5c3dfde2 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x60adee4a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x610bed63 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x615a6db5 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x6e717f1a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x8581900e iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8e513246 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8f849fa4 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xa917448f iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xba780eb5 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdd4c1857 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe096eeb3 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xe2374aa9 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xe9841b91 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xf99bf482 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x315fdf69 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xc18116c4 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x1a98e829 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x9059875f st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xf7293fb5 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1a2994aa st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x3b91caea st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3d203e80 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9b634c9a rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa71a2088 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe583b56c rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0a2d1d34 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1f2707c5 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x20445f44 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2a0dc3b3 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3645c712 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4a018db9 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x57992ddb ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x63210267 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7abdfc28 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83e3fee8 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x84aa85b9 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x87bb87f1 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x89260481 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9045707b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9bbf685f ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb56819d0 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbf08d06f ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfc5ae77e ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x019daaa7 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x060c7f52 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11278128 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11e1501e ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13c7fff4 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1500dbf0 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c6cdb01 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1daefb22 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f420214 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21bf53bf ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2844902c ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c4b2667 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31bfd5e4 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31feef32 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32ae95c7 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3bdf63c7 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40638e62 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4433ea9b ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4703b09d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c2ff243 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50948f61 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5233606e ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52dc9fbd ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x586011c5 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5aa9c11d ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cb49917 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d16cdc3 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5eaeaca4 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61a24b76 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63958e0e ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6972b836 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c5be5e3 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cca3f1e ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6edca4d4 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72347b83 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76997d9a ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7974a9a1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79aef0ce ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b253d58 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e4db847 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fb845dc ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fe09c64 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8245f8de rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82b945cc ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8624228a ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95254c28 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97f9aaca ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99d2a639 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99fe86ca ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9be4f571 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f6c1499 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaae4f4ef ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad16735e ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8365556 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaa614a6 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe61f95c ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf182736 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2e2d6ff ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3dd4171 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc4427e39 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc66d6150 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd028a2ce ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd44dbae0 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd968b159 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdeb000c2 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf437253 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe054b3e9 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe351b171 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4b7f65c ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6778823 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7e9663a ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb1ae378 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedd98455 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee13ebe6 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeefbabc3 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf111801e ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf280dfb2 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2859941 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8c1a822 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9ad7b38 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc202ba6 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdd633c1 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe59cba9 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x03e3056e ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1016985b ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x12a99bb3 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1a1e3f52 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x20c504e3 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x30a13fb3 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4ee54d43 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x54c9eb43 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5a4bc0b2 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x60d2e31a ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93603c2e ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa9ed20cc ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb83888aa ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x09cb05dd ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1f538a5f ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1fdb1b96 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2e63f972 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x32d5b72b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3f8f05d7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4b6e398f ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6b48cb04 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xaeaad317 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x70d1662f ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x86d680b4 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x008a5cc6 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x12658b91 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b4ddf21 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2744d13f iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2f989aaa iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6bfd3604 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x79e647b1 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7d6e9d4e iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x92412655 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9d05d091 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa9729a20 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb6a64685 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca4ff783 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd95e1e07 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xebb286df iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0436e395 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0f094140 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a48affc rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x33d0afed rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3eb4d65b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3f8f81cd rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x547f3b6f rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5b46b648 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8c228166 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8f4f589c rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9951d086 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9b35c524 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9fa79dda rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa66ec8a9 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb5a13e12 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb5bccf45 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb852fa9b rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb912dbc1 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb9b022b3 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc52bb8b0 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe8446484 rdma_create_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1ed1a5e9 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3cf31b4c gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x458ec9b2 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x788829e4 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x925eee91 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xaa982bcb __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb49c1f5a gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc493bfdd gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd2cb0c9e gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x02d1b635 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b737e3c input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x58f7d0c3 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x6b8d414d input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8b1c442b devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x38f86780 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x08925d39 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x2688e89c ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7f5cc9d9 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xf2c18e37 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0cd19d50 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x73764019 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x981cacf9 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9b18a10a sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xad94e91b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe6d9ec02 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2268a101 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2348079f ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x027efa01 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x19887052 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x63716632 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x6913f09a amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x6ce5f4a4 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe7544a63 amd_iommu_init_device +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1e19e953 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x21cc3ec0 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x30d3b4fc capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3877b2ef capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x48a57678 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4ebf750f capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x749c78a8 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8ac049d9 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf574bbac detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf63f0e3c capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0e2981b4 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x11228558 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x31f36fc1 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x46fa96a6 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x51bd35ff b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x58d36559 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6c0fc220 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a87e743 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8ee375a4 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa1ed2538 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd6294d18 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xde83d08d avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xded7ced8 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe0070278 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xee8b1faf b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x10c0dd49 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2023529e b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2372fccd b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x26e6aac2 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x99b78fa1 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaa79d7dd b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaade3bd0 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf15f0cef b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf5a31878 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x37475e5e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6754564b mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x70c581ec mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xed671a37 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3cefacf4 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x92d7e3d7 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x8c89b54a hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x168dfb2a isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x52ccc462 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x52f07806 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa2b85ec9 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xef38a380 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x734aa341 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x780b6c57 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x899641b8 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x01c6540a mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x02149893 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17f48bbe mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x393ca329 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x47ad10d9 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x484a32b2 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e7c7e90 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e8fbafa queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x544f3877 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x574d9c97 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5ca64f87 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x61f6dd70 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x634456c4 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7589b1ea mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8c69e072 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa548516e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xacfb3598 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc0534d95 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcc70d8f2 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd1c87547 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdb2a7493 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf81ea6d4 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfa2e62a1 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x18becda4 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b030620 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8f8fc624 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd82a6f66 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd97c32a1 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd9a125d4 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x2d7667d6 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xa7730a50 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xda54526b dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xef7b8451 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x12a1f2c4 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1d9b4820 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4c367607 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6fd5cefe dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xccfab828 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe385f92a dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0xa5e8e960 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x057cb779 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x17b18822 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x28a1f14e flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fc6a729 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x429254df flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x654c0897 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x670812ee flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7563a676 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x835c3095 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x845fd697 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8323b90 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbcc2946d flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc0c1c3f2 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x4a8c15be cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x87b47e7d cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xaa449475 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xd2a80ecc cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x475f72af cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x25ebd04e tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x371e70e4 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x05f57643 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c0ecf2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d3c856a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12f5425e dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14fdf0ee dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17c7764d dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x24366fb8 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2adecc14 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3405dbfc dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x37fb1cdf dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3c004fa7 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4044689d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c1c3444 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x55815d0b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5bb0afd1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f9d9532 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61d085dd dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6560e532 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x68bd5473 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x68bd5780 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6e32bc69 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x86753ebf dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcbbafd dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8f48d311 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x940f1f70 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x97bb344d dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa12edf75 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3e1dd5c dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc4058129 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd020d6e3 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd5c148c8 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8988b7b dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1d2cfd0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2068fc8 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe897533d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeaf47cb5 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfd23d60c dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x756cb5a3 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xcd0cc8bd ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x97434a50 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2ba4f30e au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4040a086 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4af775b4 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5941aaf4 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x69245092 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6a346779 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x91102dad au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb96ff343 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xea31d68d au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x5421cd14 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x3463a528 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xc92f8f9c cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x3603b5f0 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x06b64340 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb23888d7 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xd0a31bc9 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xa43fd4af cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x8d514b3e cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf646b704 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xfe5191d4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xce8110b0 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x7c3c1e9b cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x842d4737 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x967f742f cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6d3eac76 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9fcf4242 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa63ee43a dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xef2e3b99 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xefee9ed2 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x140c3aba dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x20dc862f dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x274f9b5c dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x38cf0706 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4afe682b dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6a8cc7bc dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x72a2a3a7 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x80a2cdbc dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8a99f6a9 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb2a09bcd dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb5e4a31c dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbc5abd69 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc44acb1d dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xce103095 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdd2e9bcc dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x42b1a3c2 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x14e46a09 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x374842cd dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x492fa942 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5f699cc4 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7d9de408 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf8b46b90 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6ef21c01 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9a7eaab2 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb260f248 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe2fdac47 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe4de4864 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x57d1a1c2 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x283d6322 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2863a067 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x405b5911 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7699223e dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf26492cc dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x68dd3340 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x2bc0a142 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x7499249a drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x413a90ac ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xfcce3f35 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x83dc718b ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0xf59ee1c4 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x888dd94d isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xae166ddb isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xbb14d4b4 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x707836f8 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x5cff1a65 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xad6b4856 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x12bed85a lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x0c34819a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x54d1a61c lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xbb631040 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x81c3f472 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x4003cc9c lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xa06e4d23 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf21ca01b lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x95b173fd lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xaa3614ef m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xebb26454 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x18e5dec9 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x23ef3e8a mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x4bde0edb mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x3e556027 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x38e0f80a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xebc69d79 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x684adca1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x50186d4c or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xd86fc2ba or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xcd00fbb1 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xb5283a62 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x4d81cc75 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xe5126178 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe6de17e9 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xac365172 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x8954d72f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xc8410db8 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x9bf4cf79 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x1357e7d8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xad6112ef stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x5fe8f5af stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xc005abb9 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x73ad6c88 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x12d975f5 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4005e628 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x435cde32 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xffd7e396 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x3f731c0f stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x2705e70c stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x5c7299de stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x50987b05 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x3285f94e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x8c54f9c9 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x5ed2d874 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x6ac7701c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xd21f70f6 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x1adef8f2 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xa4958fc0 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x9234c207 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xbdc5bd41 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x776270d9 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x66ab8f2e tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x1b98f28e ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x4a27ce2c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x9871ac6c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x2d0b2dc7 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x702ecb8d zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x12fdfa71 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6e66778f flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x719d54e1 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc7cf8a17 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xde5c9028 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe00e26c8 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe1ea3b6e flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x09349830 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1616f987 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x74dec465 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x91a6cc96 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x44010266 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x5dd0d331 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x68adaf82 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x76278f76 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7e784eb9 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x843c4052 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8726fd56 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc34e9077 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc445e750 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcfe408dd dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd60f6bd0 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd63f5e1f dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x30d5aae2 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x887c112e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9768bf12 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb2bbee49 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb2d1d833 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xea7aa13d cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xf550a149 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0a371e5b cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4c1d42bd cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x52f6e628 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xad25943c cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc2f307b3 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcb47b9e3 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf6b1e981 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x53bf8534 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x736ad444 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5a02637e cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5a48c5f0 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x76f1764d cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xdb190046 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x12a38ac5 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1fde6835 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6b87eb44 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa7821bb2 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbeec8927 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcb86f809 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf9de7f4b cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0a8f9790 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x161fda6b cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x20f52d3b cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3224ef69 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4501b6a1 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x534b65f6 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5ea1f7fb cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66e72d61 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6d73b71c cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x74c344c6 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x75d5ad7b cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x84979683 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x879023f6 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8fdf173b cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9ab1ac80 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde056fb8 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde80b394 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe07729da cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf37566ea cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf576c7d8 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x03c2dbb6 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x05ca54c2 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0f1239b7 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x11d4cca5 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1461f8cc ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1ab1ea48 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2c6597e0 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x43d18af2 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5745ed6f ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6c83c287 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x74a6fc53 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8bd33b0a ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa90ed1d3 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb176363c ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb948eb28 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbb79a921 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcdf613e6 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0b371b11 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14ff61bd saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1a1a56b6 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x21b641dc saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x33ebcdfd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6e4d6cc4 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x72cfe7c0 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x866e4d35 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x86bfd84a saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x959278db saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdeb5f5a3 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfed91cfe saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x6d94c5d1 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x0648dc25 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xac5b7762 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xdf0a8843 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xfb87eda0 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x155f7ce9 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x20178831 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4d31bd76 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8dd82fd5 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa4e43c0b soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc6c62f8c soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfdbecd37 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x04e6a453 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3920bb50 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x96b75b0f snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb821bb61 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc975cebe snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xcb09aa68 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xdcaab523 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x15709615 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5c9e7413 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x67caa080 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x84bccc54 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8df9bcf9 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa3e2b2e6 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdbdbf268 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf5778bd3 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2b916af0 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x37abce97 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xf8810167 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x80ed77c1 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x19dda8e1 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7bdda013 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf59b6f52 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xa39d1d7d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x5f509a3f mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc2c82d2d mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xfa809a08 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x1c6a1740 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x47649d32 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x65c5146a qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb620ff95 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x1b9abc81 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x8992644c xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xe56716ac xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1df6ac95 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x7c0b08cd cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x031d22af dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x059656ed dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x14d574dc dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1df723ad dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x449a86bc dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x464a8ae5 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5e7305a0 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x90a219cf dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfe2d18c2 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x10744047 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x33da8cfa dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa41b9f87 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc0e09d2f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc8263a98 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcd156a69 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd46d0874 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x98fa22fe af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2d30024e dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x31263e50 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5aeca98f dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6983cc64 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x744a34a1 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x83f54dd8 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa1bb00d1 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa9b9472c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbbae32fd dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbd132153 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf6a8ee47 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x56046215 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xb01b670d em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0922596d go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1fdacbd2 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4cac0897 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5643bf63 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x60490bb1 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6f0215b4 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x87b044c5 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xcf108481 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf2209fff go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0a2b0534 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x444031b6 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x861f4341 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc810da5b gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd1866036 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd44eb8f6 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf33fd222 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf91b0022 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x07e50025 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x53a7f2e6 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb0d63424 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x1f24c91c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x34e3c8d6 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x0c529b3b v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x77a528b2 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x95600199 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x04f8cc87 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0959cb34 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x33dc316f videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xea53190d videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf7c0bf49 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xff5a0da0 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x3b6ba11a vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x9a9361ce vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x10fb849e vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x2b02d8dc vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5c7283b0 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6372fe27 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xaa97fc77 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfa7c23fa vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x9a6d3de8 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x064ef77c v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x09514fd1 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1120ecef v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x135fd0e6 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x13737547 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x198dee41 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a50dbb4 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1c12c8dc v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2085dd6d video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28491ecd v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28505fd7 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38e8e2a1 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b2828cd v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ed795cf v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f3a3597 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x400abdd7 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x406a90dc v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45184214 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46dd1ac1 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x487790df v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a13d7dd v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ff84481 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x500e0175 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54ae9819 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c08ea41 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c4b184b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x641e0a2b v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66ed858c __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6bd18270 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72c98518 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73da8c7f video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75671590 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75def951 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76c26c8a video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80940a2b v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x81af663a v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83e984fa v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89f8fec5 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8acce8c6 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9026ff13 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9851c19c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x99242ad1 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9bb68491 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb248f460 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb28d4bd2 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb475c657 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5d55f2c v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5ebe10e v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb64ecf2b v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb82954b1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcd0ed8b v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2387527 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc553cce8 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc881e2da v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7a18a43 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda462354 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbcfecce __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe26052b7 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe547d981 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xedf44062 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2124d40 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2853bec v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf289286a v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf4f34c48 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa1e3770 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa7c2452 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe59c0fa v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff745cb4 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/memstick/core/memstick 0x24b36d80 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2d9406bc memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8ea1aeab memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9bc0e050 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9cb5ea8a memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5b664ff memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8182793 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc9b956a4 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe5257744 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe8d5a7ba memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xea2938d4 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf1071880 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x01908c43 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a427d96 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a63301a mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x168c0f59 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x29209313 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2ddaee33 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30b8c32f mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b37e375 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3d48032c mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3deba237 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4e8aa60b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68545205 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x71349bec mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75b2a70e mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x78e2ca7b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x939d3a78 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x944e2634 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x96349d59 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x988bf0d7 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9ca3e576 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9cca99ba mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb4acb5a7 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd2641750 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd2b06611 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd3f6a0dc mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdca4465d mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe9d4a8de mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb98ec80 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xebf01033 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0c9d241a mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x121e5bfd mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31b65f02 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31d776c1 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x322123f4 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45975086 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48ea75c3 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a278468 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4d407e30 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a67a29a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x703289c5 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7998a5df mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8395ee28 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x83cad7a9 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9513709d mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c56ce93 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa590aa8f mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb4cb0bdb mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb7bde758 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca727273 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1d7695d mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdb044556 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe3f903c5 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6fe330b mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe8ffc310 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf5c065cb mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc95f7a6 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/mfd/cros_ec 0x744307d1 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8a34db53 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8c3b0b5b cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe8ffe6dd cros_ec_resume +EXPORT_SYMBOL drivers/mfd/dln2 0x3a6137e4 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x8a2babc5 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xb7646d91 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7733282d pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfda7db0e pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x019136cb mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x03252df8 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1371daea mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x241589df mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x316885a5 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52a60b8a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6207b1d9 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9458dbb5 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4092218 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcaa6b50e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd7916754 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x9f5d6317 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xbfbdcb2f wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x51cd57da wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x63f7ec43 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xc9959d65 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xfc95ee6e wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xc2795c31 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xfbb89dda ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x13090222 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x5def90c7 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x75926a5b c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x98a8733c ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa3e59d4e ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x5eddbbc9 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xdd1b8214 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x158e5a79 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x2b8b6bab tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x34b1b9a9 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x374c8cd7 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x40024d82 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x435395b7 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x57d3ea60 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ae1e7c2 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa35eadd6 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9abd485 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9b18fa3 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd70273e9 tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x68dbd43b mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2b822c47 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x52fcb053 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6ea4cbe0 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x730fe716 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xca2f146f cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xdec4be6c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xeeba98fa cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2be8cf8b unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3b572cc2 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7d860220 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xeb4041a0 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xa44ead59 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xed58601c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x411ee5f0 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xb486c494 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xb5789535 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x940f46f9 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x9f56ada5 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x26871552 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x52f2283a nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6dfaffa0 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xccfbcae2 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xecd6e9dd nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf625e033 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x2f4b04ae nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x370233b7 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb6801899 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x92ede499 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x983a4752 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x046661fe onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3cadcaff flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5310eb71 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf5f2f17b onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x61b16f4c arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x660e21ea arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6a94e11a arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6b5e7052 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa272f85b arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb08af8f5 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbbb6cf1b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbc92e68b alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xce3fc0e9 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdb8a6e9b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x00923991 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x99d1d51c com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf04607b5 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1d2f4095 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x265b80a0 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x28c69037 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3250da6f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x352dfa98 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6cb5fdb9 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa6b4a7de ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb1333bd4 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd56623fd ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfae3ebcd ei_poll +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x2e2910ae bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x7a9ef96c cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x08cda606 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x16ccca3b cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1b301282 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2810dac3 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x44bd3745 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5730fdd7 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5eeb9b99 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x60f782ff cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x683a3bb3 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68fd68b3 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6f2dd72f cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x73c36a6f dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7973b161 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb1ebf0a4 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xce911abf t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe97daab9 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1b063d60 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x317fba1e cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3273364c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35d51ca9 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3734724d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a5454cd cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3c492bc5 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4942d453 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b84dba4 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x523633a3 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57707dfc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x58e53002 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6164ffe7 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x620b1919 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6d62b58c cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7541a5e8 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f043a3e cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f98aa79 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92b930d6 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96707548 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9bb87d05 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa56134c5 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac44996a cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaccb4196 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xacd847c3 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaed9933b cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0dcdd73 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb96b33d1 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc28d65ac cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd35aa3af cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdd9bb545 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe3b13699 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedad6185 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe333f6e cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1f865eb6 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4c68800d vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9a568881 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xaca0d844 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe7d28d26 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xfe6b19ef vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4ac7a37a be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xcc758bba be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0608bb65 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06ff480e mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x073dca9d mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x085c17be mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10b82d52 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2390a73b mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2986e389 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b0d0d0e mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2db3a132 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ef91ad3 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3506d5fe mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f3786ed mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43a7ab52 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44176c57 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4751698a mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49c19eb1 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5119012a mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x664385a1 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6879b717 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a48ffd0 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c84e6e4 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e763c26 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8bd88e52 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90b6b9a9 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d9502de mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4852aca mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4db896d mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb40822fe mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2f2aa78 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc61f8bcf get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd34c1ad2 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaa4d9cd mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc225d0a mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddbeeeb3 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5c02b94 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8452998 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf889e3ca mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb94cff0 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01bee922 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ef2d964 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x138441d5 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19bf1f19 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ed00648 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2600b919 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a85f528 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30049b43 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b3001d1 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e6b5782 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5168d1af mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x570c0422 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5aba0f3c mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6500f4d3 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x709a4032 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7311f966 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74fd0248 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7855d039 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79375216 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b11ecb1 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a2afefc mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94911e7f mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95e0f60a mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa258346b mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5fd9965 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab05b474 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad6ed205 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb4499972 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6ec2579 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba660284 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb24673f mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3af94ed mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd18cbc0c mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6a5024d mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc3e763f mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe65615c9 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea1af6b7 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf12c341a mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x472e8875 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4ebb7ac8 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x536de4e1 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6bd7ce7d mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7f7a7973 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ae9ee73 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf69595e6 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x03c93ea5 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0451b64c hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x36ee613e hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x697d3321 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xba2dcc45 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xba956026 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0ae40290 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x111e9d0a irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x28fe2038 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x29770d5c irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3ff59eb5 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5fe29b73 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc90d71b2 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcb32980c sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe7d095c1 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xed60fe7d sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x2a9a3ce1 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x3409811d mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x53275a91 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x91280186 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x96e4f70c mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xa6192059 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd38e2cab mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xeb8f2e13 mii_link_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x9bd32ed7 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xdef5cf9a free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x810d2a75 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x0a402749 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd00f96b8 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd55a7f1a register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xd10c6e30 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x097a2e68 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x4c2bb268 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x56754335 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x9dc1e96b team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xaa7cdff9 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xab870e5a team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xbd3b5a56 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xf84c30be team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x21008350 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6f5f3d58 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x95e40cc0 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe4d56e25 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x12f39717 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x26f2b1e1 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x436239d3 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49ea777e hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4d720b5a unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x55f80231 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5875aff2 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8c807c2c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa4a2ae05 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd08ad489 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdf69ddee hdlc_ioctl +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x2536193d i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x0f031204 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x34bbe770 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5bd47a3c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1204bcff ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1ad23153 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3c1387a5 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4a6007e8 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x540c00fa ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x68af2ec9 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8baa3aa4 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8e563229 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa6d6cf65 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbf568ccf ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdcc0634e ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe933cca7 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x03410b23 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x16fcc991 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x44035047 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4e8a08cb ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x58132e01 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x613eb698 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x74645e7c ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x749ebb2b ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x76deedb4 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x84d56079 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8de9a7ca ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbbea2e1d ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xde38095e ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe4d7dadc ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xeb598d72 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x07657f01 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1f929563 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x28a1f37c ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2aa42275 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4a75f1d7 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9ae1c516 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaf689452 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb648bb3b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdc15309b ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf5e7ba92 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfc55bafc ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0484d84d ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x074bcc71 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x162f140b ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1cf465c6 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2c01e920 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x30a4717f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x38ce3149 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a3b8082 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5890f9c0 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x67693eaa ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6d765932 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7112bb31 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7289f05e ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x80168420 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8666c107 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9770ff89 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x992d50d8 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x99fcdd6a ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb322bcc4 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb61bb448 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc8e656b7 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe979bc9d ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfa3b5971 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00362df1 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01967581 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01bab432 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07b72fcf ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07d9bcca ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08582b65 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cda539f ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12458af4 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1271a3e8 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12b3dd8a ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14de281d ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15578565 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1823a801 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1832afd7 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x199ab124 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ee61704 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x209941b0 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2110cdcd ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x222f92c1 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x293795e7 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2aea5a17 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cfd3acc ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e24c57e ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32298813 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3358636e ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3641e8c0 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x367900fc ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38620774 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39879738 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bcb4640 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cf71b08 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d005444 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40f39700 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4284c222 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44fb1b76 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4528d16a ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4624750f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x480e0081 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c0598e2 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fe9db03 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5163fda3 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56b43a42 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60484a47 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6163f590 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62227eee ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x649ae3c6 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x686e0644 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6996d206 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c7c3fe1 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ce24906 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d35db18 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e023727 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ff42b11 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70bc3dc9 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x717c64c3 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72f1bf2e ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73c1b01a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e07eae ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c8d9432 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e3e27b2 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x809e9303 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82e88952 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8623562c ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x886fbce0 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88d7bdfc ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e5bee84 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91f99efd ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x923393bb ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92752fdb ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93ee1f72 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9487daac ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x952ecae3 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96f008ed ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x977fecf3 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99edd9d7 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9acd3562 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c2b48e9 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa31c5521 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9767aa3 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac6f65c8 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafc0826c ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb01f63c7 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1f424cc ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5427c54 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb80b3682 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf80ed25 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3713920 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5b055f1 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6f576bd ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc821921b ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd106f87b ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd415d3f9 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4a6b520 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5e24c23 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6f24488 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8aa51f ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf20d7f8e ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3a54abe ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4a17bb6 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c78952 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf659bb2b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8447584 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf92a6205 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbf4b1cb ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4d73beb3 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb3d30a15 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xea3285b3 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x13028657 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1db4db89 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x516fdc3e brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5718a5cd brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6c35fca6 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7dab407d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x83273de2 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8b26d8e8 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa7cc0485 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb1226ac2 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbbe488b1 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe1f8c447 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfda1a08c brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0336d611 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x20cb09e5 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2d209451 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30bd74bf hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x353ba3c0 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e178088 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e9270ed hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x405a8dd1 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x499969f3 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4be1eabb hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x57e90dd3 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6ba99319 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x97aec041 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0d286c3 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa77e1191 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xad644fb5 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb8bbb69d hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc4bbb734 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc797c779 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcc2e0e79 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd38f66cc hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdbb33b5c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe34735d7 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf643cd4f hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf71abe66 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x04fe74d5 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x098086e0 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0c996a0e libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1cfd525a libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2443ecb3 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f6bbd2e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5b789a3a libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5cbbebd6 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x72d4f87a libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa192973f libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa19959cd libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb1b328db libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8017e2b libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5cafbbe libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe1c40330 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe20fb458 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe5b461ce libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xefe01e0f libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfa92f900 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfbeb3882 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfd8b5256 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00a5c32c il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x023f9767 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x075823b7 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08680b8a il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08d7096b il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a0df60e il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1076021c il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x148b5f5e il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14dfa7b6 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x172230e6 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c619c3d il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x281a066d il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c15ff0d il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34792ad9 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3591a913 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36b0c74a il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x392a2ce1 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b985341 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3bb47120 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e5f4a31 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ed1dd46 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ed50266 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41a47949 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41beeb7c il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45e09e32 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45e519ab il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d1dfb59 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e4e8ac2 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e8c2c0f il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50ba7d0a il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x537788c1 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5821c086 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5902fa61 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x651933a2 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x673aca06 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6794cd1e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x682a3978 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a53b150 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72356e92 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77519445 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7808fe78 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a7b61e4 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a8e3bc6 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7aad749c il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x807ee078 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x817a238f il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8943fe89 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a8e194b il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b6556ba il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92cba63a il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x938fde5a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x947369da il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94d5d0d5 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95712070 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x981c637f il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9830924c il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e28747b il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f347340 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1818d8b il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa46399ce il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6fbe537 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9d663b0 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaaa6353d il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadc12781 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xade19da1 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae0064ad il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaffa672a il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2726f9c il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3f872de il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb905f212 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc008e87f il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc05cf787 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc238756a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc59597ae il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc76c1071 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7e593e8 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7f29342 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca54f585 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb4cd805 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc10e2f1 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc98b44e il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd045292b il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd222eb3e il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4b5708c il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6fa7e02 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdac376a0 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdaff488e il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xded11260 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7e8c91e il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe94e10cf il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9c99329 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf140660e il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf64fdc30 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6702f06 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7da3f37 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9d01c0a il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfeddedbd il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff2e4daa il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x17f83ac5 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1fb3fa2e orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x27cbaec7 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2c6dfa56 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x39cb1e1b orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x46fe7352 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x622fc60d orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x829c63c1 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x85095872 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x99ebe6c9 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xba7619ab orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbc1887e6 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbc996c36 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc90164f9 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd6fe41dd __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe95a1ebe orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x3a1e6cb6 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x045a02e4 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x04d3a6a6 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x12b11821 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x16591b27 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1bfe652b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1d2a7542 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1d776409 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x223f8ac1 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ebf42c0 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3795790a rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x37b8fef1 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3f5cb93e _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x43f7e034 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x481c7372 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4a123805 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5a795d80 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5c84b192 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6303c716 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6cf504fb rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x72e9c026 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x73e26344 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x79b1f208 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x92eae30f rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x99ec6d47 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa4dfaf2d rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa709bfdd rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaabbec1a rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb023bb52 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbc787034 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbe41ddc0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc11dd027 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc645d911 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xccc0f982 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xced0f619 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd7712717 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe02c7efa rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe570ef05 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe7de983a rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf41916b3 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf5f31a76 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf7ee9c7d rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x28c0c687 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x52a42fd8 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x9ac097ec rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xc7152925 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x3ccea6fe rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x65f3ad40 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x91358f31 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xbbaf360a rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x105d80f9 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2a241077 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x31eb4ade rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x36a49802 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3d74b53b rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x41578171 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5e6ac2af rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x68d644ba rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74318357 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74d3b58d efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x776d0a72 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7dbd2baf efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x84129111 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x87b661b1 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x897036d7 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x90d6d937 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9214ff45 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x98651acd rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9b34fd5c rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaf60a329 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb0a90234 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbcfe660e rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbf350adb rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc0ee1208 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd0f28da5 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd31de9d7 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd98d5843 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe55ecce1 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed9a26f9 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfb955d29 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x07fa86d4 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8ca4d964 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xdb06d144 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf529d264 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x36f85c27 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x53cc3925 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xc43dff17 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6345dbe4 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x659f0891 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x02de5b96 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x2e4945a7 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x9aab8f85 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x0bc5ab17 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x63930554 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x27553003 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x39916193 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xce4281df s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x09ae0664 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1062b1ea st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x490945dd ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x66ac3b15 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x78d3fc92 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7de76817 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8e704b95 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x92249932 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc99d4674 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe396583b st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xff39f8ab ndlc_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0921367b st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x103c2729 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x317625eb st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x58684c88 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5b096324 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x65774d79 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6b7f0bdc st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x829a2e42 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8413479c st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8d00d908 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x95a8df93 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaf556754 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc09ec196 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc692fff2 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcbe37f9f st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd02cfb2b st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd05ea38c st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdf28b4ed st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x156c6cd9 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x1a269338 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x3a6d321d ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x51a13914 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x5bf53b36 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xa162b01b ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xd06f567a ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xda477297 __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x340fbf14 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xb58b07b1 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x5f9b953c devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x0031a690 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x02c36288 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x070a2cbc parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x182be16f parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2084b4b2 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x28440041 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x2d91db0a parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x34d0a307 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x392559d3 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x3a6b3aba parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x56481b5a parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x5b2c9898 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x704b794e parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x86320ac6 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x8e9da640 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x8f627907 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x9983617e parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xa55b93b1 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa9849bbc parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xaf3cff2a parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbd983a9d parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc228ac85 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xc96720a0 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xca4da528 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xce5da079 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd08a7eee parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xddfdb9d4 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xdeb3dabd parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe026cd82 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xe15a60c7 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xe8add6f7 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xfda171d3 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x2ef65420 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x61258254 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06ee85eb __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0d4f298f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x133f7711 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1cb9647f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x26bd3667 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x38dd87f8 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bc06d2e pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3e9667db pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4970aeee pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5fc1f480 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7d4d9dca pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x85aee987 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb8165c9d pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc5cfe570 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd6b96dd1 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xda9ebf1b pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe6f420db pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe76fa410 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeada2d94 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0a2800c5 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0de7ebe0 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x199e772d pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1cb625ff pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1d62b992 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1f74b75e pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3a4249f3 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4747b96e pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbb042863 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc361603b pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe810f581 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x1c869fbd pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xecf6924a pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x85a2154f pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb16b0099 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xe0d19d45 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xee314aba pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x01d5e8a4 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x2e8909c2 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x7c57ce0e ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xb8a074b6 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xf1c6f9d6 ptp_find_pin +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x03f1bf31 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1c85f36c rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x281f7d03 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x28db3240 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2f4fabec rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x534c05f6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x54d7298c rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5f547f03 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe7d77ccc rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfa5406bd rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xdbb21c32 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x07bbb4db scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7ea922b9 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb49a1a44 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xfd5e8d2f scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x09a1cbd8 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x28f59d91 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x365b535c fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x551dd4e7 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x598e3fbd fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5d82d3db fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x653c3d6e fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6b8ed15a fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9b169c21 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbf4e30a9 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe1c6e3ba fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfd61b8d8 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x026e535c fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0584569b fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x083c7603 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0857c909 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16434616 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18381401 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a758c98 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29f369d1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4cbae952 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d8a90c7 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4eeb67bf fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fc5d685 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x502d22c0 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x593958ca fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d9ddb70 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f336780 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ac6ce83 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ad73090 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bfd1109 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d9cb8bd fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x730478b6 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74cd8079 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7be19d5e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cbc0da9 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8190b6aa fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x865072b0 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x884cbe6f fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x952d0873 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a7ab5e8 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ac00a63 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ed8471b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7bce386 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbddb6440 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4cc68f1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7d3e9a1 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee18d6ad fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee76790b fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef27ac53 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef4e3c71 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf27173f4 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf54a5f9c fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6ed9893 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9c1bb3e fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x69b72b39 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6a699b3a sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbdafbf39 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf9b17e6b sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x966275f0 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x02ac24a0 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x03a89ed5 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x03c35744 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x07cc439c osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f8ce408 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16ff3ba5 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a6497ef osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x288d7edc osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x29f1577d osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b129d21 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x30a9630e osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31d42399 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x32282695 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x344a8830 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x385f8600 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4136ad79 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x527b99f2 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x601cf995 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f87070f osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x82903565 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c43c53b osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb1d6b7a6 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb3d4a56b osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb3e3d29c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb4d4a8cc osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbbae50c2 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc04c7df7 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8cea730 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd69a1fbb osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdae7ad8d osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd2ecf83 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2033fdb osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6818b1b osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee37bde4 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf86ddd22 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb9606aa osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/osd 0x269fc909 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x32170b2a osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x94b40e42 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xabd31b60 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaff4a9b6 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd2e3f05f osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1d0a97e7 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4182f918 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4aebfdfe qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6f9b5b6e qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8adbd474 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8ddc8bb8 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaa793c34 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xab2a536c qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xba24d251 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcbdcdf3b qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd4d5482b qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe6278f50 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x00dd4b3e qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1d9b97da qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4dce16c1 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x91def586 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbdd41221 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf9ab1199 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/raid_class 0x639b494b raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd4830b76 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xe910ec20 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00083769 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20d63308 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x34bdcb85 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51fcdd51 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x98795bac fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99697a5a scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9f1a76d9 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb50c925 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd62f58ce fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe19fb7b8 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6d582e9 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xed94d2b6 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf67d1b60 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x054437ee sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x07fa1b83 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0dc452bc sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x175a21f5 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x201a0858 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2d4a324e sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x324e0304 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x353fe2b4 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3bc51d06 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x578733ba sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7aa4c8e9 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ddc3b8a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8526894b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8aa8c037 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ba62763 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x93c514be sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa10e7513 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa451e2a7 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa45df279 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab2f9cdf sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb9c78d00 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc028c46d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc1ce6b8a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9d49c50 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc0a4d9e scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1d57649 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6397f1a sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf89b5ece sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4254f0ed spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x565ed711 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7923c3dd spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbfff3fe2 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf1375440 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0ccc8147 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x1b43f183 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4dc73209 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc8c0dad4 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2da39bee ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x46a63460 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4d948be7 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x79bfb21b ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8017915d ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x94bdccba ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x965e523e ufshcd_alloc_host +EXPORT_SYMBOL drivers/ssb/ssb 0x1af99b20 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x1c755cb3 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x256f95d3 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x29ad167b ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x33d35ec2 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x3a26eac7 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x3c15a4e7 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4a35c737 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4e47fad2 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x53180842 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x58473e94 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7e683513 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x9e9df5a3 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xba7c2756 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xbcb20c00 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcfd12395 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd9cec710 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xdeb1cf9b ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xebc97794 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xf2f640b2 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0fc8eda3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1b287428 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x21b072ca fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2992dc24 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4616ccc9 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5724ce53 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58df9d80 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x63f84fcd fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7da74ea8 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x890b933c fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x89406a68 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x89c7e6ef fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8b0de3ba fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8b235fca fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8ea3f7c1 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9ac46bb8 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9e8d89c5 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa882820e fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbb3f294c fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcdf527e0 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdc9e075a fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe9969caf fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeaafd15d fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfff59d87 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x8c5d3375 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xde968aaa fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x30b65f70 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x33968756 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x506d9331 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5f840345 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa4899125 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x3291a775 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x32a9e94c ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x23908905 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0xc64360ac most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03178a71 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0497fb86 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06c46ff9 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a8353ea rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c3f1ac2 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d342ea7 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0fd82cfa rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11c1bdd8 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1647e350 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16ee6bcc rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a755eea rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x20203e7b rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24e592ee rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26fc92e4 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e4b4f74 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33901ffe rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x35be3c3f notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39f7a044 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e0789d0 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45fa46e5 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ba9da59 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4be52915 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x582e6226 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5a2d8f7e dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x69779ddb rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6caab81c rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a6df5fd rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c305cf3 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94e0f1c5 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a04bbed rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e1d2619 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fe44817 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa2d6df77 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xabc69f57 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae5ec5d6 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb47cb14e rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbaa19626 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbccb6cde rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4e71ac9 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc64dc009 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc86faa3c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xccb017d5 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd39419e3 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb4d356b rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe306f9b1 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe47e4fb0 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe81ee68b rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7540f4c HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc1ecf0a rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc245af7 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x09019fd7 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10c99847 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13bee4a7 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x142bd301 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2874384c ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2cd8faf8 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x33fc13ba ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x377351d2 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3878924e IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d5dfe45 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ded37c0 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3febe1f3 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45700983 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x477bb232 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e90639b ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55adea7f ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5706a5b5 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b5a8557 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d280a22 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x687100ec ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d045366 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ec1eacd SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x723655e3 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7fcbbf2d ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x839c739d ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88559eeb notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ba493f4 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c3c3d37 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9407eb1a Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x948d9307 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94cd333d ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9524cbc7 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa51464e4 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa78e5cd8 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad0bb273 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2bf745b ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb564c8b3 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb8385983 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc98fcdc5 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce6654aa ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1c8b64e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3c9e377 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5b32ad8 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbb7bf1b ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7edc6da ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xead5e53d ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf16e6583 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2777c0b ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2f405d4 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf686a125 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf897855f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb21837d ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfec0727d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0x9f0ef3f1 visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x034521e6 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x11022db8 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x133401f8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2b329fe2 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3286a839 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e48bd4e iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4031d13c iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x425cc7d8 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x46f78678 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x47100f38 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x512c9607 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x543da3f4 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6ec82e1b iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7713aae6 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8253ed02 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x850b0261 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x861d3ea0 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x879aad0e iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8a11d662 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ea9d4df iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa52cde8e iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa7f6bc2c iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb4f39104 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbac593b6 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbc446421 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd4371d1b iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd6ea74d2 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe123eef8 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x00637b15 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x00d586de core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x01027cfe transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x064147ca core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x074b2a9d target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x09692719 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x216ff580 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b90db16 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f8a76e7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3170f836 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x3abc8332 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d018ae0 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e789fcb transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x402deb02 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4341b207 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x495afd7c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x505b2d3e transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x521b6104 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x5369256c passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x544814eb target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x57f3b951 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x59814786 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ae38d93 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f5093ce target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x61d50aaa target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x639ce415 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x63d88af4 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x66222823 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x68c5173e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a0f8929 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x72cd0010 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7324a228 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x785e28c7 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x81d3e768 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x834ca802 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8becc5a5 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e6e04bb transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f5d1398 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x93c3f858 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x99758acc target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ecfc96b transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9f8d1380 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fb30d78 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1814afc core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1f00c3a transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7e827a8 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xaed14ef1 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb54f26ba transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xb861572f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8954d13 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb949d460 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9bfce07 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb121194 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc79d0779 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf9d6e11 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xe116bb12 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xead47059 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xee3c4392 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xeff97b35 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0f448a7 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5beedd4 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6554d58 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6913721 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7ba9c16 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x4ee459bc usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x37365881 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x04dccdd7 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x128068cd usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x17fd70ff usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x281c5014 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6402a842 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6cedc232 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6d221d7d usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x85ab0e4c usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa3b908a9 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb282abb5 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdaa750e4 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe3d12b8b usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfdfa9d1e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x58488187 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xa68c1947 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x11210980 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4a47e908 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc7c5b819 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe5e3774e lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0d70f886 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x22553f6f svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x2f2a1c70 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e869d80 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8509d9c5 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x92f99422 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xec0131c3 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x8e1b06bd sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x70ee7a46 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xbeb794cb sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb33be167 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xd5a1f98e mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x29314d1c matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7459d225 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xbab51c8b g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x31c1a26d matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x7caa2edd matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9d611bd8 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xea7d6454 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xbb57c8ae matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x2746f1d8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x23c77b7e matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9ca92a72 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa40b06ec matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xef3323a1 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x1b4b19aa matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x98eb6429 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x07ab499f matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x16aa8fdb matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9e3aeadd matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd555f147 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xfd1b81ed matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x59ba0eb5 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x40d63cd6 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x431f1be4 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9d8cf66c w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd3f4e062 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x76a7c14c w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xec90561b w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4395afbc w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe7508c6 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x364c6769 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x55500266 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x6e53922a w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x72da7a9d w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x046b3818 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x0bc20680 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x0e78cb89 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x18a8d14a configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x2ab8047a configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2d75f754 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x336cbc6d config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x377dbfd2 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x5458ac88 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x65e66c8a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x72e1e40c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x9a3675dc config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa7cd4718 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xb960db8c configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xba082356 configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2f5af560 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x46bd60f1 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x5a623c79 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5ff771db ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x86decf44 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x8dbde001 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x8ec1292d ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xab8f0af3 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xcb56f77c ore_read +EXPORT_SYMBOL fs/exofs/libore 0xd0a45122 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x0b62e443 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x150bfd61 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x154f9af6 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x1a80afef fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x1e5fc4d8 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x25731af5 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x263c97bb fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x2f552eef fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x376bcd79 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x3b7f6d5d __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x46c553be fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x5291499d __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x55416f0f __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x5fe40507 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x64602c80 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x72f1c845 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7cf11b39 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x7f7a1a62 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x80c4a6fa __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8f0a228f fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9b37793e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9dc037e4 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xa4f29c84 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa7d4715a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xa90d72d2 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xb0e7eb0a __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xb261c76b __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb4246d9a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xc61f501c __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xceb384eb fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xd00e270a fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xd4e4f47a fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xd677c85d fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe00bef6c fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xe72ba0b8 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xe97bc839 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xf88cf27b fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xfb844290 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xfc87a6ac __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x7660223f qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x797d5812 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc0bc1b99 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe198aba6 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xec0fb70b qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x3f3c92ac lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xef763c54 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x37d39617 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x77b8937b lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0xcf3d9955 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x8b1c2f61 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xa447f8f5 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x2b2d5aa8 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xb199cdad make_8023_client +EXPORT_SYMBOL net/802/psnap 0x67147573 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xb59e30fb register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x11635f4d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x132f0666 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1856c2a0 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2689e2a0 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x360c01b6 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3b7a3a74 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f23157b p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x41e5ce8b p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x49f3ed1e p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4b4bfbf1 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x5c220027 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x62151c76 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x67d9b753 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x7d7a52ea p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x7d8f8ad3 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x7f1e2cca p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x7fed2aec p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x818e27a6 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x83421c03 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x844eb247 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x84c8931b p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x8e8988a3 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8f76d88d p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x942876ca v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x98f3439a p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x9e3cd4a9 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xa4248c58 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xa50289cc p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa74a8dcd p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xac834eab p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xb719e8c1 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xba5f02de p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xca1a6b01 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd114ccdb v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xda0b0acd p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdc8efec9 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xde27233f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe8fb1441 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xea980d78 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x305dc9a7 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x53736af4 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x70521c62 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x979f9ee4 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x03dd44a7 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x10818d59 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x17232582 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3b92924e atm_charge +EXPORT_SYMBOL net/atm/atm 0x4431b4d2 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4a385e03 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x6480b983 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x856c914e atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x8ddbfc86 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xaf252928 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xc132d236 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf4efce8f atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf4f4f77b atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf8abd6b6 vcc_release_async +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x754e0082 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x880ad362 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x99dd3269 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xa71256df ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb54dabea ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xbd97745e ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xef1a3833 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xfb827497 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0519d1d1 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x085f518a hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c97673a hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e2eecb5 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a3c34fe l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30518a21 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x36bf6f02 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3715a209 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x489fab83 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x491282f5 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4bea1801 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x56047a74 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58cc29e0 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x611a6053 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d6cd7cd __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7e1bf978 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b02f3eb bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b8287ed hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x966fad35 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ccdb5c5 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0b97841 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa2f52323 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa45e9be4 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa790ea9b l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb406e768 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe26d7ac hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbeda9755 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbfc9998e l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2f2da27 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcaa1d339 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcfd8d41e hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdccdbc79 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde303856 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2e8b19f hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3c11016 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe4f72490 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed23e305 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeda8efa4 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee61d242 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3f4b0c9 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc9d4fff bt_sock_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0x0320a84a br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x331e5e48 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x79b1a867 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf0c7b2fe ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x149ae38d caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4d83cb21 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9bc2698e cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbda6fefa get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xed9aff17 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x0615034f can_send +EXPORT_SYMBOL net/can/can 0x0fa0aef9 can_proto_register +EXPORT_SYMBOL net/can/can 0x89e0e089 can_ioctl +EXPORT_SYMBOL net/can/can 0x9cb917e8 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xaab741ac can_rx_unregister +EXPORT_SYMBOL net/can/can 0xe68bb838 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x06983225 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x0832a4d5 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x085675d8 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0cccef90 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1078dddd ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x10bf2c65 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x1318ea45 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x18548dc4 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x1928546f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x1b2902d3 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x1cbbc51e ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x1fa4ca8c osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x2041a283 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x238acc25 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2b9d8e61 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x2f678e10 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3117427b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3166aa9a osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ae781ec osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4052409c ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x438e3c7f ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4776201c ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x48b270eb ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x51acc8d8 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x537dad02 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x54c1c6fa ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59c4693e ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x5caf59c4 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x5fe3fa41 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x619ec98c ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63b2ba41 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x675168cd ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x687c510e osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6dad75cb ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x6f1c765b ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x6fda6e31 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x70082af7 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x787ba97a osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x7dc08a80 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7fafeb5a ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x90d57252 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x94d47804 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x968584df osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x982c3bee ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x99bae164 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9bc4dc02 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa055433d ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xa35797f7 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xa3f9e4dd ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xa6f85284 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xaa7b2eca ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xadfc0189 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf204a68 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0c2a87c ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb281bd80 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xb2fe6345 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xba77c9e0 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xba9ef858 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xbeee0283 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xc258233f ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xc3d9d0a4 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xc4462547 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc7f71993 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc8c97d75 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd00c9ab8 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3697a89 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xd3bde75d ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xd3be70b5 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd4b7b260 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xd6c20d29 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xda1ac0f2 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xdbf80361 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xddfeddfb osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xde079e8a osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xdee1497b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe650dba4 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe7dcc26a ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xeb7bcbe6 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xfa76b566 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xfa96cd41 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xff2aa40e ceph_monc_validate_auth +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xb9eb8f61 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf9cb41a1 dccp_req_err +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7c64a4c1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x80d0a298 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x83521ff0 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcea8e1e8 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd0a55bd1 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd25298aa wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x4497171c gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xe227838b fou_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x14d0ce0b ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x58582db0 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5a18780d ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5f5c274b ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xde3b3c4c ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe6cbbce3 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0399cafe arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x699de746 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf0e69b42 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7afee499 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8d839a32 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xda678bdd ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x19549d73 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xbeaf1a4a xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x1b9a2fb8 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2dd8d40b ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcb3c89b7 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd377b0a4 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf2c366f6 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x59f65a59 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x76865675 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa1cacd83 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xa9eefd7a xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xafe9aa10 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x490b5360 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf545883e xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0d6d2571 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2336cfb1 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4414328e ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4ec2da44 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7575f965 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9a2338ed ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa0a088e3 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf77d47f0 ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x04aacce7 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x0cec4010 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x0e897fd8 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x121dfbcd iriap_open +EXPORT_SYMBOL net/irda/irda 0x2014d682 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x3348af69 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x37ca1746 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4d0e3552 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x56076aae irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x64905461 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6e861a4b irlap_open +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x741c4570 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7be44e82 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x825f92df irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x8a53d74e irlap_close +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x96d65559 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x976bf278 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x9f65845d irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xa64dc41e irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbddacd88 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf17d3fa iriap_close +EXPORT_SYMBOL net/irda/irda 0xc098a9ad async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xcd9b239b irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xd09f22e5 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xfa89c049 irlmp_open_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0xe1ef93e9 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1ca0b8f3 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x2f580834 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x71ce24df lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x8ddc1d78 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xc04b9070 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xdd0528e2 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xe2770c1b lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xe6eb9503 lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x41f880f8 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52898c79 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x8d92d66e llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xa470b58e llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xb32e3d37 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc9a4bc2a llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xe3b22f01 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x03185e8f ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x041eff47 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x07f0c5aa ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x092292f9 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x09f17426 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0f8367c0 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x10d0e7fd ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x1203eb9b ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x132ec618 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x1929fd20 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1a954171 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1c90a1a6 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1cabaa5f ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x1e3737b5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2319330c ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x27279ae7 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2b064ae3 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x2dfbe732 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x33e1d870 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x348a48eb ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3c22659a ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x3d448aca ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x433c9471 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x46e71705 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x470aa430 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x48cbe1d6 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x48df7bac ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x49dcfd55 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4cb7ba77 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x4cb9dfdc ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x4dc7edb3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x4e07f0ce ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x56e89a1f ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x5751525f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5beda6fd ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5c845989 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x60a68709 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x63c47cb7 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6e40730e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x726fa686 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x73e40afe ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x76372cf7 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x832fbf89 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x8b5d2df4 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x8bad8b94 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x8f6792e2 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x8fb97c4c __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x98310d0f ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9f2deb55 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xa0f79dbf ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa1d23b31 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa4d74881 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa6ad0cbd ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xaaa56a03 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xb16dc3a6 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb2405268 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xb5130977 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xb8182ad8 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xbb79564b ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xbc34bbf0 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc09e4ee7 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc290a024 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xca12700f ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xd0f6e784 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xd47d280a ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd8f256c1 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xdac4e7d1 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdbc54e38 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xdda53e15 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xddd4fc4b ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xe5751aaa ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xe57f6b4c __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe7ac6010 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xe7c16615 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xee899d05 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf97a827d ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfa830fd2 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xfe4a9739 ieee80211_radar_detected +EXPORT_SYMBOL net/mac802154/mac802154 0x050806b1 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x1d0a7fad ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2230d4a7 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2ee74146 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x386c3268 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x92446f0e ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x9ed98edf ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xca591a61 ieee802154_stop_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0ce1a3fa ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2dafcd52 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x42bbd97f register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5718f283 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x646ba68a ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8090fec1 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x81140691 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x815b78ad ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x943571d9 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc3379ed7 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd77d0beb ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd80d4548 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe4b5a053 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf6e73f10 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x04c70f1a __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8261750e nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xdd96a19a __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x2d908fb7 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x38a56c5f nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x5bee754f __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x75ea9547 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x7b901adf nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa9bcb52e nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x0031ed43 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x4dfd1348 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x5f0554ca xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x73d6bf0d xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xacf90b35 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcb396f51 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcb7d715f xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd445ec58 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xef77c463 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xf369d5ea xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x05151b67 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x0b651dc2 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x12c3e317 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x213175e0 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x25d0b4b4 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x40079d34 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x40e5ceef nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4471a0af nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x4b7a2928 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x57441735 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x5ff93d20 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x6dc8bf65 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x892ecf20 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9a907219 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xad02857a nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbf03604c nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xc2e253b5 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xcb1dd9e6 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xd5df733a nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf43c0c31 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xfc6e7aac nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/nci/nci 0x02bceb79 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x066228b2 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x11a5c0eb nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x17a22a19 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x21fcc43e nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x415f5fe1 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4d49e14b nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x514014af nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x53870b64 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x56ea420e nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x6620b3d1 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x680d49a0 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6f0ff583 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x7b6aea4e nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x81e1d40e nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8275edf2 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x85ba1fb0 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x8993a2b9 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x9518816f nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xa1cc558f nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbc47abcb nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xc528bf4e nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xc9736d3b nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xc9dc251f nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd52a0110 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xda0fe974 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xfa319cde nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xfb595296 nci_req_complete +EXPORT_SYMBOL net/nfc/nfc 0x0345fb0d nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x0c8b3fe4 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x14f65990 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x19ec7e3f nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x1f85e5d9 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x36eeeee4 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x41209fa8 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x47695030 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x49a17a27 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x50d2b1ac nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x6d131578 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x8a337513 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x9a4b21b9 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x9c648ccb nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xaad46292 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xb0e0c850 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xb4c37edc nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xbbaf5e52 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xc4b863f8 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd9e05602 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xdb276373 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xdf90b799 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xeac9c75e nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xf37f9e81 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc_digital 0x483e0fcb nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x578ac32a nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xafdf93d2 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc454bc93 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x1c25daf4 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x34a79466 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x34eb9a7c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x41a816ee phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x898c67d9 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x8f1f4b07 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xc55d9ff5 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xfa12c905 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06ea3f77 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x24965972 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3302246f rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x53f1486c rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6b11aa7c rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6f761f4f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x728a66da rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7558c33a rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x98a368b2 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9e80a2ca rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa4f936bf rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd1e526d8 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe5b2e233 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xebbae8e5 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf08cabd9 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/sctp/sctp 0x10c2800c sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x427a0270 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x638c5c7f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xdae68f38 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x14b7be6b svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x40395ca7 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xa6f93505 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x2752b7e1 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xd60f461a wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x086f61e6 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09f05961 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0a471b95 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1046c605 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x153cc1ad cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x161c0612 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19ae039e cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a8356c0 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1b28306d cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1fb6f9fb cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x21897abe cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x23a93ae2 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2421013e cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x246dc0fb cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x294895d9 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x2b8123dc cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x2fdecf82 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3590a188 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x384f2688 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x398ceb21 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3aa3e93b cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4228dd49 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x4545064e regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x45c526c5 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x48161fa9 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4a831643 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4b1c6594 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5161a84d ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x52630f96 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x592b871a cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5f624ce6 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x5f928f4e cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6fec10cb cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x704705ac __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x717e2089 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7571df2f cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x78ea6e5e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7a7bb5e4 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8371b1de cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85d1212c cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x918a8df5 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9528e453 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9627ecfa regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98cd9d3b wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x9c1a10bc cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa4f5ceac cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa8d7232f cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa8e91940 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xad787879 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xae6ccf01 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xafb9617f cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb135a39b cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xb184c915 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xb46b05ae ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb46b1441 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xb9c6e3aa cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xbc54267e ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xbd401880 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xbd8e43a8 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xbe38c34e cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xc0f7ab38 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7e2343e cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcbac060c cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xccc65fb6 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xcd9c18e5 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd17bb978 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd6817fa4 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd68a7f19 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe2d908fa regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xe2dfefb2 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xe3800788 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xef5a707d __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf1af944c cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf3914659 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf3cb9d6b cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xf42c917a cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xf873e6b8 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xf9d5e472 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xfb502016 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff10ec3f freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xff393f85 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/lib80211 0x714472aa lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7c475292 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8149519a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x95ee3bc7 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xe95f7868 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xf4fc4123 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0x91991bde ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x4d93cc3b snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x368bee05 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x4d2af8de snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6569eff8 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd5401d72 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x8f0ba690 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x9878c872 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x071f511c snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x0cacc8ed snd_card_free +EXPORT_SYMBOL sound/core/snd 0x0ea15905 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x12da69ed snd_device_free +EXPORT_SYMBOL sound/core/snd 0x16b9a9f3 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x174fa0b9 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x228e54de snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2f5910c7 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3910d62b snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x39cc0886 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x3fcb1826 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x482b414f snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4f12f871 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x5ce8606b snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x5dd02882 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x60be02cd snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x63ece809 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x66492c77 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x72297b5f snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x7ab3106c snd_card_new +EXPORT_SYMBOL sound/core/snd 0x807bac59 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x821b78aa snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x83a21c78 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x96b2cff3 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x96f0cf5e snd_cards +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0c1bb62 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa1d5c0fe snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xac0e7160 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5912d80 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xbc68105e snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xbf4437c9 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xc1340356 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xcac8ba99 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xd824e168 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xd9e661a4 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xda0141b7 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xda2992fd snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xdab3ef2f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xe06589df snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xe0de0676 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xe4820f39 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xe5f7bf74 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xec533540 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xef2b928b snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xf4862c10 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xf679613c snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xf76635a2 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xfc0ebbc0 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x2c014128 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x003541c3 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x0297491b snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x13a41cdd snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1c15782e snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x21f421c9 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x23f0fc3c snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x26ce0eaa snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x2a89342d snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x2bc4e6f3 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x376f2f35 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b3871a8 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3c3aab92 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x3cbfc9f2 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x493a7ef7 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52af95db snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x56b53223 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x570b26c6 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x57e930f7 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5c91df8c snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x608a1648 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x608ebc5a snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x642ea77b snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6438abc4 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6b693db9 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6c255399 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6e6e29e8 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x703cb7ce snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x749616c3 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x819b3f4a snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x846c8728 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x8ba6aabe snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x8d274209 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9a05c20e snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x9e6bdb49 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xa0495f4c snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa67ed14e snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xab004196 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xb81c1d5b snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbd96195d snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xc060e294 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xd6b138db snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xddc6927f snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdf13b338 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xe1dffff2 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xe20e996e snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xec909f0f snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf003adf9 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xf3aae05d snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e840bfa snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1fd1c596 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3e601c67 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x41bd0e98 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8476d5cd snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x861c2d6a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8796edc2 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9109d7a0 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x97de5132 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xab7f9e83 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xadbaf5a6 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb10ed93d snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb533e951 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0574c29 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe2e4da81 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeaeac3f0 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb6ed4bc snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-timer 0x0419248f snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x093d2724 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x0b522fe4 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x244a106e snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x336252e7 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x3b902b58 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x51aa3dc3 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x7d737a9c snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x92b46d59 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x966af4db snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xa663122f snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xea225315 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xee583579 snd_timer_close +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc75d96bb snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x16714baf snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1b7878e4 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x30e5a265 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8163d629 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x96fbb849 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xab35a0db snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbef6a3c4 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe37e317b snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf36d76cc snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0ed4a636 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2dde4c76 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x42a98edd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x66fbe36a snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x71792618 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x79a472f8 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8bc70fc4 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc4542782 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf808fa90 snd_vx_free_firmware +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x061636b3 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x06d1aa23 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x07da57d6 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x100bdb44 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1aa61115 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c8d5a32 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d0b555e cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1f03af06 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34cda4c8 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x39b58154 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x55261967 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68995eb9 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ee62c20 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x74fb1c16 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8eb6e0ca amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8f32c8e0 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x948f7a36 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9876c5fd amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9c8090ff fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa52fc921 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa7ee0959 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac06afad cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xced43eed cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0638480 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd26c2fe2 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd6184b93 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd8f213f3 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdee2d2e0 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdef73f4c amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe569e7fc amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe8da957f fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfe65bd2d avc_general_get_sig_fmt +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x4df31484 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xa3ca7278 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x294b961c snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6fb9864a snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x75d647e5 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7e36bf29 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9c7652dc snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb82edba7 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf4ae00e8 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfc62da66 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1441cfbc snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x25230247 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x35acd31d snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x46512de3 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x92bf1235 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x95d7a4c8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x13d7e0c5 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1f8618b0 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa43cbb89 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa8b54d93 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x015b7da1 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x7057250e snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x314bbe6b snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6462b01b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x91463194 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xabf638df snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xced37258 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xebc02eb0 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x28d81098 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x314a4c3c snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6b677ff8 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6f15499c snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcfc24a83 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfb3fe971 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1c77a294 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2e439f45 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x51acc870 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9292bda5 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9d080087 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9e9e50d1 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbfad653a snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcd78d4e1 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd66e5fe8 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe4948983 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0cea5a32 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2713d988 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x42941aa0 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4440e6d3 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x47ed30e8 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49789e0a snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4bc50767 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7f683847 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x854837a0 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x899718de snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8c28c333 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9a646389 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb51b2aa8 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd3bad65a snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd56cfefe snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdef87dbb snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe17ef387 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x16d1e3dd hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x019b8540 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0238f733 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0d4d474f snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x46ec924c snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5f29f1bc snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8a92835d snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa8955303 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb70f5291 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf1f0ced3 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x2a901320 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5f09d851 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xfff6b1fc snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x159f2e39 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1977622c oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2010ef60 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x300d0d98 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x683ba76f oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x68b75d2d oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x79cf8800 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x872fe594 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x96123a7e oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa71b6e45 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa971715c oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa1ab564 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb5e48a93 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb65b6cf9 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc4d259d7 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcb27360a oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb50112e oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb9a7b1b oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdcc9d377 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe402173d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeeb07db9 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1ec464eb snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2452fdac snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x708964e9 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x873f0b98 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd25f24de snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x3c678e2e tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x66d9004a tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x91035f55 sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0xe337a915 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0e44d92e register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x12466aec sound_class +EXPORT_SYMBOL sound/soundcore 0x569046b6 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x5954841f register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8bf0a043 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xdda70095 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x083d9b95 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x254e9746 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6c4588d2 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x745b4f30 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8c7b78f4 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcdf41442 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3fcf3c70 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x433f2911 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4e94d9e6 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x74cb3235 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x87219c92 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb3355604 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb5af59b8 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9883f8e snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xee5b86f4 snd_usbmidi_create +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00322056 VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01674ab7 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0429a6f0 VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x057fd386 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0731e88d VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x079b132d VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08ed98db VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09a88bc3 VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0a442050 VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0beb235d VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0cd1b64d VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d10d1ca VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f3e114a VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f884b3a VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11ced39a VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11e95d2e VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11f80121 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12614b82 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12f430f3 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x147206e1 VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x151752ec VBoxGuest_RTHeapSimpleGetFreeSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1520b2c8 VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x160b14d4 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1926b25c VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19790b4c VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x197acd65 VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a6d7d86 VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ae28abb VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1c3b0f90 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1dc5ebbe VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f3e577b VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f70d065 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2003169b VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20728ae6 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20d9d625 VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22058511 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2254228b VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2387f039 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25219f5e VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2580d04c VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2632a013 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29708cf0 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2a2284fb VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2af3453c VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c2b5b46 VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2cfefa48 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d445217 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d581c06 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2eca7777 VBoxGuest_RTHeapSimpleAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2fb7502f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x30e40c69 VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3168cadf VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x31ac4c5f VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x33d7313a VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x343e3e1b VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3480f453 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x358153bb VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x362275e8 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x372d5e29 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x376d539c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x381d7c24 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x383a0b9d VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a47392e VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b04381e VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b231c95 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3bcf543a VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3de43f66 VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3dfc9ab8 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3fbf3c07 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x40996438 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42ecc6d1 VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x43fdd8d9 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44cfbc28 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x461fa9fe VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46c14223 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f1be17 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f4d19c VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ba5006e VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4bbec091 VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4c7d8a56 VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cac3157 VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cecc93d VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cf913a1 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ea67110 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4f041d39 VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fc8e10c VBoxGuest_RTMpGetSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fe9e5f1 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5040043b VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x508bb2c4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x51ec28bd VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53265abc VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5352c915 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54098f34 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54ddf87c VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5595fc22 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56596e82 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56c939fe VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5847ae52 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x58d1b65e VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x598d3622 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5a97195c VBoxGuest_RTHeapSimpleRelocate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5aa6ed66 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b3a5164 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5cc0b1b2 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5d3b1bd6 VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e071eb3 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e17b70e VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e75c570 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5eaea89a VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ee65bb7 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ef42fe5 VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5f2f48bb VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61143878 VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6173b384 VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61770e8c VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63378722 VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x634946f7 VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x637a1d69 VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6381bb97 VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63b1fde6 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63bc10b0 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x658cd915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x67135d2b VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6862822a VBoxGuest_RTHeapSimpleSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x695d63ad VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b01bbf3 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b58b79d VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b91f1ce VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c8460ac VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6cec7c3b VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6d8e9c87 VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6e8541b7 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x704e1f6f VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x70867323 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x71060970 VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x716e3be3 VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x729cc4ab VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72ff1bc3 VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x730a01b0 VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x74812dde VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x759e7492 VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x764ecb18 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76a3c47b VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79d59e24 VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d0d9dae VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d15e878 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7dcc30d8 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7e29739a VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7f0a40ea VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7fc5bdcf VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8196c4e6 VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x82e081bc VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x83e78406 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x841e42e9 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8484a0d6 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e227f6 VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86120100 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867be0d2 VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x868b79a5 VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x879761cf VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87da3860 VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8826d9de VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x883d496c VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x885274fe VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x89117f68 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a3c154f VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a454b31 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8e01e3fd VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8f1309e3 VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x90312938 VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x91204a9b VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x916e42f0 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9264ffc0 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x926bf9f7 VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x92e716ae VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x94f7365f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x95fa480d VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x961772f3 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x967ea4b6 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96893ce3 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96f2e65b VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9796440b VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x97eb2414 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9874cd16 VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9a2ee747 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9bcc539d VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9cd9213f VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9d6b527c VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dbd63d6 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eaecd9d VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f301085 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f4f616a VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9fb0596d VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa168a070 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa34eb1b3 VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa486e710 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa554bd97 VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5a26703 VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa696baed VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6a22472 VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6de1bcd VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa86c5a96 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaba9bc9c VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xac990d74 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad4fdf4e VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad649089 VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae3e0ecd VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaf6ffbfc VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb05840a7 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb1cc9148 VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb444f4a1 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6941b2e VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8c6e615 VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8ca8fcb VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8df2b3a VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9b070b7 VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9d7a27d VBoxGuest_RTHeapSimpleDump +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbb1ead73 VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba928e6 VBoxGuest_RTHeapSimpleGetHeapSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc4d30f6 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc85935a VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbe4e6114 VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbffedb55 VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1095c44 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1b3ada4 VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3a1e5de VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3fee96e VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4bd5fd8 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc63cc2f0 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc71362b7 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc8fbf4aa VBoxGuest_RTHeapSimpleInit +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc91cea98 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9a6a8e7 VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcaee97bf VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb2a6b54 VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceae9d6a VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd14e8ec2 VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1f3f0b9 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2a37e73 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2d290ab VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd3a125cb VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd46c35d4 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4b597fc VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd5bfc897 VBoxGuest_RTHeapSimpleAllocZ +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd637869e VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd69bc8e4 VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd706d85c VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd88c9330 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd984a7f4 VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdc700594 VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde9ca744 VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfbc69bb VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe054d759 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe095cef8 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0dc7391 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe1c6b3d7 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2765c54 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe38d562c VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe3fd228f VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe7e42113 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe88dae73 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe8fad285 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea2f2944 VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea38e4f7 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea71842b VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebeefa0e VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xec3cc9a6 VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xee774b8e VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xeea4ee73 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xef6e1359 VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf02f22ab VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf0dbb702 VBoxGuest_RTHeapSimpleFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf26294bb VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2aa79bb VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3943009 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf5d89855 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf69aec24 VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7397dd2 VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf8113d66 VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf956a4e8 VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf958d9cb VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfa7d95c9 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb31e12b VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfba93ac9 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfbc67e88 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe72cef7 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL vmlinux 0x000a8bd9 seq_open +EXPORT_SYMBOL vmlinux 0x002c2c90 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x00321924 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x00344074 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x00378671 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x003e0812 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x0042cc2f force_sig +EXPORT_SYMBOL vmlinux 0x00676dad noop_fsync +EXPORT_SYMBOL vmlinux 0x0069a654 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x006dfc14 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x009a383e ps2_drain +EXPORT_SYMBOL vmlinux 0x00a18678 ip6_xmit +EXPORT_SYMBOL vmlinux 0x00a93626 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x00ade3e1 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x00b329e8 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00bc47dc read_code +EXPORT_SYMBOL vmlinux 0x00be19cf devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e2c0d9 from_kprojid +EXPORT_SYMBOL vmlinux 0x00f39c5e i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x00fa5834 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x00ff756b phy_device_register +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x011e6a84 blk_init_tags +EXPORT_SYMBOL vmlinux 0x0122fad7 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x012f42a9 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x013de71a uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x014248fc param_set_charp +EXPORT_SYMBOL vmlinux 0x0154329a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x017d60ed skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x019de9a8 ll_rw_block +EXPORT_SYMBOL vmlinux 0x01a88d68 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x01c8a4bb jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x020a42e5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x02384ecc generic_file_llseek +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026a6ab1 input_register_device +EXPORT_SYMBOL vmlinux 0x026ae999 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x026ba535 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x026f4460 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027fe3d1 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02adb3a2 seq_escape +EXPORT_SYMBOL vmlinux 0x02b71c0d nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x02c63c0a tty_unthrottle +EXPORT_SYMBOL vmlinux 0x02ca6407 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x02ced29d __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x02d8f07e kmem_cache_create +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x03043c81 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x032ac7b4 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x032e9860 iput +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033e7999 free_user_ns +EXPORT_SYMBOL vmlinux 0x03439d3f tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036b7cf4 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x0376006d devm_release_resource +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0391fa1e blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x03a18372 pci_match_id +EXPORT_SYMBOL vmlinux 0x03d27267 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x03d8d142 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ff2923 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x04072034 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x0414a9ca generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04233242 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x0428ec45 __brelse +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044a8695 nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x0473e94b arp_xmit +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048cc7cf blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049d1cad set_pages_uc +EXPORT_SYMBOL vmlinux 0x04b36356 clk_add_alias +EXPORT_SYMBOL vmlinux 0x04c61b8e get_unmapped_area +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04c7e37a qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04db414d acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f57094 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x0502785e __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051f6aae crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x05239758 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0536acf9 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x0549a005 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x05526325 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05610eac inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x05bd34aa __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x05c13fa2 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x05c99f0f __check_sticky +EXPORT_SYMBOL vmlinux 0x05e0979f neigh_destroy +EXPORT_SYMBOL vmlinux 0x05f2bf61 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x060c60db cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062eb65d mmc_detect_change +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0675914c skb_copy_bits +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06b769dd blk_sync_queue +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c71578 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x06cb0993 read_dev_sector +EXPORT_SYMBOL vmlinux 0x06e2b2f3 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x06ec90c0 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070b8be9 request_key +EXPORT_SYMBOL vmlinux 0x07112a40 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x071517c3 blkdev_get +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073b8c81 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x076c01ce skb_append +EXPORT_SYMBOL vmlinux 0x07705a12 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x078822e4 gen_pool_create +EXPORT_SYMBOL vmlinux 0x0798bed4 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b54b04 md_register_thread +EXPORT_SYMBOL vmlinux 0x07c7c4e6 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cdcaea lookup_one_len +EXPORT_SYMBOL vmlinux 0x0809c383 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x08211ca5 __quota_error +EXPORT_SYMBOL vmlinux 0x08223e1e processors +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08555715 request_firmware +EXPORT_SYMBOL vmlinux 0x085be927 md_error +EXPORT_SYMBOL vmlinux 0x0894bf96 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08cd9907 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x08d1fec3 scsi_print_command +EXPORT_SYMBOL vmlinux 0x08d30f28 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x08d8e08d xfrm_state_update +EXPORT_SYMBOL vmlinux 0x08e0bccd tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x091a4d59 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x092ed2cc blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095c65c5 unregister_nls +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x09715477 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x097343fe pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x09749bcd netdev_err +EXPORT_SYMBOL vmlinux 0x097851b6 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09ab1f97 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x09adc78e mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x09bd20cf mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x09bde29f pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x09c26757 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09eb03aa dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x0a02c8ad ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x0a07e05f fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x0a14366c acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x0a1dbca2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a38d17f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x0a5116c8 __napi_schedule +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a58f595 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x0a64eb32 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a70adcc gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x0a73d0f0 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a7bf525 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x0a811df6 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ab1d569 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x0abf0a20 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x0ac5a3e9 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0adcfff9 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x0af0164a follow_down +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b15db8e qdisc_list_del +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b28cb96 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b73a044 devm_iounmap +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b93f1f1 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x0ba269e9 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x0ba51de9 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x0bb1f362 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x0bb24f7c pci_dev_get +EXPORT_SYMBOL vmlinux 0x0bbc22ad iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc83db2 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x0bdea5dd blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x0bffab1e dev_close +EXPORT_SYMBOL vmlinux 0x0c0f82ab textsearch_register +EXPORT_SYMBOL vmlinux 0x0c1ba74a bio_copy_data +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c2cc19e pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c66cb08 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x0c69c353 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c706922 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x0c7b62ea sock_alloc_file +EXPORT_SYMBOL vmlinux 0x0c935eb9 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc2530b pid_task +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ceafb68 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x0cfcd934 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x0d1481d0 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d421e93 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0d47ae7b free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d75d1f4 genphy_update_link +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d876c59 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x0d88c4ba ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db1713e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dd93797 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x0e35e699 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x0e3bfbc8 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x0e442c63 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x0e658667 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e766549 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x0e7db326 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x0e82f706 write_cache_pages +EXPORT_SYMBOL vmlinux 0x0e83ddfa param_ops_short +EXPORT_SYMBOL vmlinux 0x0e970f00 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x0eacfddd __lock_page +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ecf96a3 napi_disable +EXPORT_SYMBOL vmlinux 0x0ed0c4da ether_setup +EXPORT_SYMBOL vmlinux 0x0ed42f6b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0ef73894 amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x0ef9fbca wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f02688a generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x0f3ecbab dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x0f3f46f8 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f518117 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x0f5d3894 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0f681eaa linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f7c96f7 __vfs_write +EXPORT_SYMBOL vmlinux 0x0f7ca7d4 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x0f8eb7a1 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fafc8ab set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0fb2f00b amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb6a26e __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1000d3df elevator_alloc +EXPORT_SYMBOL vmlinux 0x1017f380 key_put +EXPORT_SYMBOL vmlinux 0x101ba26c would_dump +EXPORT_SYMBOL vmlinux 0x102497e9 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x103ba07c __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x104f96f3 fsync_bdev +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1085b7d9 do_splice_direct +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x1097db1c inet_getname +EXPORT_SYMBOL vmlinux 0x10a26e80 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x10a51384 tso_start +EXPORT_SYMBOL vmlinux 0x10aca982 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x10b6d8ef down_read_trylock +EXPORT_SYMBOL vmlinux 0x10ec9efb d_rehash +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ef6ddd sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x110050ac simple_pin_fs +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1109928d skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x110a8633 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x112fe489 tcp_connect +EXPORT_SYMBOL vmlinux 0x1138a35e security_path_unlink +EXPORT_SYMBOL vmlinux 0x114766d0 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x1147f07c pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b0c3ba vfs_readf +EXPORT_SYMBOL vmlinux 0x11b0d380 nf_reinject +EXPORT_SYMBOL vmlinux 0x11c173c7 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1205b12d pci_dev_put +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120c8b1b pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1228c9f7 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x12364839 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124dad96 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x124e5f10 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x12795459 dm_put_device +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ba7bba __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x12d86b1c amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12ede226 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x12f05320 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x12fcc3d1 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x1328c4c4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x13b3b92a iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fa9263 __breadahead +EXPORT_SYMBOL vmlinux 0x140176c6 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x142af8f8 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x14456407 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x149ad3dd vga_tryget +EXPORT_SYMBOL vmlinux 0x14a445d8 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14e3dff4 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x14e7a706 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x1518474c to_nd_pfn +EXPORT_SYMBOL vmlinux 0x151bdb88 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x153ba682 tty_devnum +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x15799c11 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x159e15b3 unregister_console +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c275f4 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15e8e459 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x15ee720f ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x1604a5d7 dev_err +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x161ac723 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163badb9 padata_start +EXPORT_SYMBOL vmlinux 0x1650d123 seq_dentry +EXPORT_SYMBOL vmlinux 0x1650f149 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x165a37e2 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x165aa5b9 pci_iounmap +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x16832fea devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x168c2f53 serio_interrupt +EXPORT_SYMBOL vmlinux 0x1690f336 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x16a1be9e param_get_bool +EXPORT_SYMBOL vmlinux 0x16a324c0 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x16c63d96 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x16d2ecc2 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e25b1a scsi_unregister +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f7fa36 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x16fde662 md_done_sync +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1750ee69 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x17575336 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x176586ec dev_emerg +EXPORT_SYMBOL vmlinux 0x17759ead single_open +EXPORT_SYMBOL vmlinux 0x1776024f vmap +EXPORT_SYMBOL vmlinux 0x177a02a9 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179651ac _raw_read_lock +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b48950 up_write +EXPORT_SYMBOL vmlinux 0x17bbef58 kern_unmount +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f5c1aa input_set_keycode +EXPORT_SYMBOL vmlinux 0x17fe9912 get_tz_trend +EXPORT_SYMBOL vmlinux 0x180393fe scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x181ca53a cpu_info +EXPORT_SYMBOL vmlinux 0x1824c5b1 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182ea915 tty_do_resize +EXPORT_SYMBOL vmlinux 0x182f43b2 icmp_send +EXPORT_SYMBOL vmlinux 0x183e7097 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184af300 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1850d346 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x1890ba64 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18ba3a12 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x18c8cd72 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18dbbc6e xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x18ddb750 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x18e0de25 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e96fb1 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x18f1adca bdget +EXPORT_SYMBOL vmlinux 0x18f5a4be do_splice_to +EXPORT_SYMBOL vmlinux 0x18fdb8f0 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x18fee275 should_remove_suid +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x191dd4ad bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x192d9c38 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x1949737f crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x1964e89f xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x197b719c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x197e8976 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x19811409 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x19895bff call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19b65734 key_type_keyring +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x1a1c9a4c scsi_remove_device +EXPORT_SYMBOL vmlinux 0x1a283846 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x1a37a182 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a5493be __frontswap_store +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a74572f tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x1a78ef41 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x1a878162 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x1ab9b7d4 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x1abddda2 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x1abe4784 finish_open +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acbd200 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x1acd7ef2 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x1ae09f75 _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x1aebe839 __pagevec_release +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b04e35e from_kuid +EXPORT_SYMBOL vmlinux 0x1b14b769 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x1b1518c7 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b289c1a lease_modify +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b652b30 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x1b77fe98 to_nd_btt +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9c6d5b pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x1ba2e71f __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x1ba512a3 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1beed175 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x1bfe22ec __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x1c027c5b vme_lm_request +EXPORT_SYMBOL vmlinux 0x1c31e316 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x1c38a434 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x1c3f4572 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x1c443c8a skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x1c49a3c1 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x1c4ad9fa scsi_register_driver +EXPORT_SYMBOL vmlinux 0x1c88e449 netdev_printk +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1cafe441 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x1cf13851 skb_checksum +EXPORT_SYMBOL vmlinux 0x1d0b7d62 iterate_dir +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d1b01c2 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x1d251965 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1d257723 iget_failed +EXPORT_SYMBOL vmlinux 0x1d4d1b42 d_genocide +EXPORT_SYMBOL vmlinux 0x1d7d2f75 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x1d9de629 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc48bba amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x1dc7fd08 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de414c2 acl_by_type +EXPORT_SYMBOL vmlinux 0x1de445ea __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e014a81 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e045470 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e132d7c vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x1e189211 put_page +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3c93c9 generic_read_dir +EXPORT_SYMBOL vmlinux 0x1e46bb82 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x1e56bcbc redraw_screen +EXPORT_SYMBOL vmlinux 0x1e67eca4 vme_dma_request +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e02a3 block_read_full_page +EXPORT_SYMBOL vmlinux 0x1e792006 dquot_transfer +EXPORT_SYMBOL vmlinux 0x1e7e87ff kernel_listen +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebd3bb8 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1ed64b75 d_obtain_root +EXPORT_SYMBOL vmlinux 0x1ef68407 input_close_device +EXPORT_SYMBOL vmlinux 0x1f018b14 fb_class +EXPORT_SYMBOL vmlinux 0x1f1f8322 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x1f2243dd phy_drivers_register +EXPORT_SYMBOL vmlinux 0x1f248df4 dcache_readdir +EXPORT_SYMBOL vmlinux 0x1f47030d pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x1f5c4413 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f73d386 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x1f771424 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x1f8abe05 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x1f8f3d1d agp_put_bridge +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd9b3c8 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x1fe398f3 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x1fe39b92 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff2ad2d try_module_get +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x20226ab6 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x20288679 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x202c1a8c blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x202f98a8 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x204b8c16 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x206f4479 devm_free_irq +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207693a7 add_disk +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20bc0e1d dquot_enable +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cc9158 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20cd3134 d_alloc +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20f7acf9 ata_print_version +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212053bf con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x21234f0e input_release_device +EXPORT_SYMBOL vmlinux 0x213169ee get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x2151575c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x216e8193 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21aff9b9 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x21b101f1 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x21b39182 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x21b7f782 drop_nlink +EXPORT_SYMBOL vmlinux 0x21cc5481 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x21cc873b abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x21da28f8 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21e9ade8 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x21eee22f __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x2221c403 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x2226ccbd nvm_put_blk +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2240bcb0 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x224150e6 set_user_nice +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226edd43 __lock_buffer +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x228e8fa2 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x22a3eeda __sock_create +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b5f3cf ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x22c701f4 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x22f0d6c3 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x234563db do_splice_from +EXPORT_SYMBOL vmlinux 0x2368317f netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x236bd4a2 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x23748840 dev_mc_init +EXPORT_SYMBOL vmlinux 0x238c15e1 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x2399dce7 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bb6f58 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x23bbac59 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x23bf1f55 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cb0b34 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23ffd973 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x2408403a __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x240f79b5 simple_write_begin +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2428044d del_gendisk +EXPORT_SYMBOL vmlinux 0x242eb079 skb_put +EXPORT_SYMBOL vmlinux 0x243e3f21 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244d1452 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245cbefb agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x247110df scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x249d2442 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x24beee22 eth_type_trans +EXPORT_SYMBOL vmlinux 0x24ca2d0d dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x24d7e892 dump_align +EXPORT_SYMBOL vmlinux 0x24e68a73 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25096ce7 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x25174322 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x255739d4 page_put_link +EXPORT_SYMBOL vmlinux 0x2561aec3 locks_free_lock +EXPORT_SYMBOL vmlinux 0x256e4dc7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x256eafb0 input_get_keycode +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2577a62b inet_frags_fini +EXPORT_SYMBOL vmlinux 0x25788296 alloc_file +EXPORT_SYMBOL vmlinux 0x257e724e nvm_get_blk +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x259f0c95 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x25cd061e gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x25d35bdf touch_atime +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f88dd3 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x25f9b193 noop_llseek +EXPORT_SYMBOL vmlinux 0x25ffd96e mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x2601a36c register_netdev +EXPORT_SYMBOL vmlinux 0x262e22a1 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264e45fd unregister_key_type +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265ee6fe tty_port_destroy +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x266eff00 vfs_symlink +EXPORT_SYMBOL vmlinux 0x2675ad1d rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x2681e4e8 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x268c6b69 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26a661c5 skb_find_text +EXPORT_SYMBOL vmlinux 0x26be7a3a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x270236dd nd_integrity_init +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x271d89bd iget_locked +EXPORT_SYMBOL vmlinux 0x2738ba3f nf_ct_attach +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27688df2 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2797aaa8 kthread_bind +EXPORT_SYMBOL vmlinux 0x27a5ed6f param_get_byte +EXPORT_SYMBOL vmlinux 0x27addb97 read_cache_pages +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bef5d5 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x27c03b20 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e7294b acpi_device_hid +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x283397f5 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x2840c26b first_ec +EXPORT_SYMBOL vmlinux 0x2847c0a9 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x2855e7f4 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x28694fb8 skb_copy +EXPORT_SYMBOL vmlinux 0x2887f48a security_path_mknod +EXPORT_SYMBOL vmlinux 0x288e0fe2 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28f0b370 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x293bf018 seq_putc +EXPORT_SYMBOL vmlinux 0x29536257 mapping_tagged +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2970870d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x297da79e vme_register_driver +EXPORT_SYMBOL vmlinux 0x2998a925 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x299daaca cdev_alloc +EXPORT_SYMBOL vmlinux 0x29c0e94d pci_release_region +EXPORT_SYMBOL vmlinux 0x29e20590 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x29e6a414 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x29eeca26 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a373fe6 d_lookup +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a801ab6 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x2a8850bc elevator_change +EXPORT_SYMBOL vmlinux 0x2a90e34e unregister_netdev +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abfe4c1 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2afbfc79 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x2b05a21b intel_gtt_get +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1c8c23 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b403aad serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x2b446c42 put_io_context +EXPORT_SYMBOL vmlinux 0x2b484e6c neigh_xmit +EXPORT_SYMBOL vmlinux 0x2b6ca3d7 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x2b785e05 give_up_console +EXPORT_SYMBOL vmlinux 0x2b8f7593 inet_shutdown +EXPORT_SYMBOL vmlinux 0x2b9d966a inet_bind +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba325f1 devm_request_resource +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb126d3 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x2bb27d41 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x2bb2e99e ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c127f06 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3be021 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x2c44a84c skb_dequeue +EXPORT_SYMBOL vmlinux 0x2c4e7d43 xfrm_input +EXPORT_SYMBOL vmlinux 0x2c87cb51 blk_rq_init +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2ca4f353 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x2cbd07d6 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cc78901 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x2cd2c681 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d1034fa jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d2090dc blk_put_queue +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d84a4e2 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x2d9ad29b prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x2dc9d8a7 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd1b11d gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2df78144 genphy_suspend +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e423936 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e66f3b5 vfs_setpos +EXPORT_SYMBOL vmlinux 0x2e9a32bd do_SAK +EXPORT_SYMBOL vmlinux 0x2ecedfc1 uart_match_port +EXPORT_SYMBOL vmlinux 0x2ed5f264 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x2edc4cb5 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0725ab notify_change +EXPORT_SYMBOL vmlinux 0x2f09c230 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x2f1efd2f input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x2f2f94b7 param_ops_bool +EXPORT_SYMBOL vmlinux 0x2f37d92c vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f41db95 input_grab_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f921940 register_framebuffer +EXPORT_SYMBOL vmlinux 0x2f92684c pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x2f9f6ce8 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2fb1a2da __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb88e3d __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2fbe79ab generic_writepages +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff7cf2a param_set_copystring +EXPORT_SYMBOL vmlinux 0x300a1d53 dput +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30290134 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x302e3cb4 follow_down_one +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30904a63 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a59d20 tcp_poll +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30ba934f bio_advance +EXPORT_SYMBOL vmlinux 0x30e5f82d generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f9887b serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x30fa304e hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310b1ee8 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314ca596 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31789eed tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x31812a1a security_mmap_file +EXPORT_SYMBOL vmlinux 0x318e8e68 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x31a108c4 inode_set_flags +EXPORT_SYMBOL vmlinux 0x31a221c1 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x31abf992 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x31ae8885 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31df7a0f __get_page_tail +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ec44a0 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x31ef8289 audit_log +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x320b5c9f pnp_possible_config +EXPORT_SYMBOL vmlinux 0x321cfe06 mount_ns +EXPORT_SYMBOL vmlinux 0x3242a77a security_path_chmod +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3280de19 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x3285a4e7 blk_queue_split +EXPORT_SYMBOL vmlinux 0x3297c6a0 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x32c4c27b inetdev_by_index +EXPORT_SYMBOL vmlinux 0x32d9c9a8 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x32da5e30 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e39cbb i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32e72efd dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3344837a eth_header_cache +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x33572843 __elv_add_request +EXPORT_SYMBOL vmlinux 0x33773fdf param_set_invbool +EXPORT_SYMBOL vmlinux 0x3398368f dev_mc_sync +EXPORT_SYMBOL vmlinux 0x33b82d08 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33b9fffa key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33e5af43 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x33eeb519 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f1d7fd skb_copy_expand +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34127b07 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x341c81bc __sb_end_write +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x344192e9 __ps2_command +EXPORT_SYMBOL vmlinux 0x345748d2 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3470a1ab set_security_override +EXPORT_SYMBOL vmlinux 0x34751aac security_path_rename +EXPORT_SYMBOL vmlinux 0x347e0d57 netif_napi_add +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b1f199 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x34c0d0c1 flush_signals +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f71dcf seq_hex_dump +EXPORT_SYMBOL vmlinux 0x34fd36d8 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x35065c02 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x3507a37e jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x350ab314 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x350e24d3 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351f900b abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x35210b99 d_alloc_name +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x354bff23 keyring_alloc +EXPORT_SYMBOL vmlinux 0x35528ada dev_addr_flush +EXPORT_SYMBOL vmlinux 0x355c77e4 nobh_writepage +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3576d0a7 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x359e5b21 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x35a193c9 qdisc_reset +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35d15b83 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x35d90764 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3601010e release_firmware +EXPORT_SYMBOL vmlinux 0x36051eeb fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x36094f1b scsi_print_sense +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36273cd3 rt6_lookup +EXPORT_SYMBOL vmlinux 0x363b87ab update_region +EXPORT_SYMBOL vmlinux 0x364e2bf8 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x3661d7c9 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x3674abe1 get_phy_device +EXPORT_SYMBOL vmlinux 0x36760f9f sk_reset_timer +EXPORT_SYMBOL vmlinux 0x367ddf3c default_llseek +EXPORT_SYMBOL vmlinux 0x36839a7b ata_port_printk +EXPORT_SYMBOL vmlinux 0x3685db65 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x36863052 register_shrinker +EXPORT_SYMBOL vmlinux 0x3688a741 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x368b39fa vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x36929a6a kill_block_super +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36aef117 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x36b0d6d9 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c8e913 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x36c95221 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x36e9b167 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x36f9f818 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x36fff814 dev_get_flags +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x3718bc28 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x371b90ee scsi_execute +EXPORT_SYMBOL vmlinux 0x3725ec35 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374a4c11 account_page_redirty +EXPORT_SYMBOL vmlinux 0x377dc57f blk_get_request +EXPORT_SYMBOL vmlinux 0x3784248c phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x37a1eba6 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d7a362 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37dd79b7 elv_add_request +EXPORT_SYMBOL vmlinux 0x37e2cf4a cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x37e889df inode_get_bytes +EXPORT_SYMBOL vmlinux 0x37e8f59d pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x37fa179e inode_init_owner +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3820c4c5 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x382d513a phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x38761b3d blkdev_fsync +EXPORT_SYMBOL vmlinux 0x38767232 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x389bc5ab vme_irq_handler +EXPORT_SYMBOL vmlinux 0x389c4567 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x38a5fb5a vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aaf1a9 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x38b627b5 nf_log_register +EXPORT_SYMBOL vmlinux 0x38cca613 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x38d21a9d generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x38df2e16 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x38f21d3e __sk_dst_check +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x393da27a rtnl_create_link +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x396da5a1 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x397c1a03 loop_backing_file +EXPORT_SYMBOL vmlinux 0x3990bce5 skb_clone +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39b01875 write_inode_now +EXPORT_SYMBOL vmlinux 0x39b0696f devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39e5ff0e blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x39f4c4d9 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a1f59b5 set_nlink +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a40dbbe textsearch_prepare +EXPORT_SYMBOL vmlinux 0x3a53f43c vfs_mknod +EXPORT_SYMBOL vmlinux 0x3a5f0d48 set_pages_x +EXPORT_SYMBOL vmlinux 0x3a8e0e1b set_bh_page +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3b0c7f53 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x3b3d1364 put_cmsg +EXPORT_SYMBOL vmlinux 0x3b580eed dma_pool_create +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b65c767 led_set_brightness +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b72a4fc blk_run_queue +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bc9d319 prepare_creds +EXPORT_SYMBOL vmlinux 0x3be7e576 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x3bfccc02 PDE_DATA +EXPORT_SYMBOL vmlinux 0x3c120bda sock_no_getname +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c4b875c kdb_current_task +EXPORT_SYMBOL vmlinux 0x3c514564 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x3c555aa7 vc_cons +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9674a8 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x3ca54b3c cfb_fillrect +EXPORT_SYMBOL vmlinux 0x3cbcbdd8 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x3cc2d612 mpage_writepages +EXPORT_SYMBOL vmlinux 0x3cc34580 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x3cd92a52 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce8901f revert_creds +EXPORT_SYMBOL vmlinux 0x3ceb03be netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x3cee19c2 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x3cfd9b87 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x3d1391e2 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x3d2cfc1f pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x3d352cbe mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x3d385adb dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x3d388e28 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x3d39292c eth_change_mtu +EXPORT_SYMBOL vmlinux 0x3d5c0199 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x3d6131f2 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc4f986 netdev_alert +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd23aef tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x3de0ab0b generic_setlease +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e00e89c i2c_master_recv +EXPORT_SYMBOL vmlinux 0x3e05192d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x3e0b2733 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e461a82 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3e585baf dm_register_target +EXPORT_SYMBOL vmlinux 0x3e62b1be misc_register +EXPORT_SYMBOL vmlinux 0x3e766611 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e886adf kernel_param_lock +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e920be5 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea3831b proto_unregister +EXPORT_SYMBOL vmlinux 0x3eb93af7 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x3ec3e490 sock_i_uid +EXPORT_SYMBOL vmlinux 0x3ec6ee76 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x3ecceef6 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x3ee376e1 write_one_page +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f2c8b1e nf_log_trace +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f514478 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x3f53ea2b serio_close +EXPORT_SYMBOL vmlinux 0x3f80dea4 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3f908202 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3f925a34 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x3fa24e48 udp_seq_open +EXPORT_SYMBOL vmlinux 0x3fc4add0 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff09df3 register_key_type +EXPORT_SYMBOL vmlinux 0x3ff9fd62 x86_hyper +EXPORT_SYMBOL vmlinux 0x3ffe45b7 get_cached_acl +EXPORT_SYMBOL vmlinux 0x4006097f tc_classify +EXPORT_SYMBOL vmlinux 0x401b8ced tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x401c2541 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x4027ca26 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x404d5685 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4065e8af phy_connect +EXPORT_SYMBOL vmlinux 0x4077e479 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x408c2df3 bdi_register +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409b39dc i2c_master_send +EXPORT_SYMBOL vmlinux 0x409facc3 pnp_is_active +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b1018b sock_wfree +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dac635 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x40f93897 simple_rmdir +EXPORT_SYMBOL vmlinux 0x410479d5 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x410ffc8e pskb_expand_head +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4148c837 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x416a5300 unlock_page +EXPORT_SYMBOL vmlinux 0x4185ddbf alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41e8c8b4 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x42139d85 tty_write_room +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423a7c86 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x4249b329 tty_unlock +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424fbc0c tcp_req_err +EXPORT_SYMBOL vmlinux 0x42514f12 dquot_file_open +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42601314 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x42661f82 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x4277a402 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x42798df9 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x42818ca0 bioset_free +EXPORT_SYMBOL vmlinux 0x429b7725 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x429c0347 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d4e091 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x42d95dc5 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x42e2ae90 blk_put_request +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4307df48 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x432e52ca pci_find_capability +EXPORT_SYMBOL vmlinux 0x433d7fb8 param_set_long +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436d6019 sk_filter +EXPORT_SYMBOL vmlinux 0x436df0c6 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43994a25 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x43b0c9c3 preempt_schedule +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43d5f457 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x43db6c4c param_get_ullong +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f99eea mmc_add_host +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44288a92 dget_parent +EXPORT_SYMBOL vmlinux 0x442f7186 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x443b4d41 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x4455d259 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x44663ee8 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x4468e100 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x44895714 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x448991b2 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e00cf __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x4499186c kobject_get +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44e5447f udp_set_csum +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f0c57d blk_complete_request +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450e012c adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x45229651 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x4532070f lock_rename +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453ca967 sock_edemux +EXPORT_SYMBOL vmlinux 0x4569af15 ns_capable +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458adc8d inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45e0ea29 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x46322f1b sock_rfree +EXPORT_SYMBOL vmlinux 0x464b5531 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x464ebfef set_anon_super +EXPORT_SYMBOL vmlinux 0x464fd633 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x465660c5 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x46686b13 skb_push +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467bea1c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46895eac pci_map_rom +EXPORT_SYMBOL vmlinux 0x469cb865 set_create_files_as +EXPORT_SYMBOL vmlinux 0x46b831e6 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x46c10b28 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46ce471c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4775ecb0 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x47761183 km_state_notify +EXPORT_SYMBOL vmlinux 0x477e6dcb amd_iommu_pc_get_set_reg_val +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b7fe65 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x47eee92a compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x47fd9cd3 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x48229d47 dquot_initialize +EXPORT_SYMBOL vmlinux 0x48319f91 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x4837e767 udp_proc_register +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486ab000 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x48824816 bdgrab +EXPORT_SYMBOL vmlinux 0x48851b6e set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x4897162a unregister_filesystem +EXPORT_SYMBOL vmlinux 0x489bb979 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x48a069d5 irq_set_chip +EXPORT_SYMBOL vmlinux 0x48a27d8d xfrm_register_type +EXPORT_SYMBOL vmlinux 0x48a63c65 key_task_permission +EXPORT_SYMBOL vmlinux 0x48aa1f6d mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bd2665 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x48d26f6e xfrm_state_add +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48e3656c kfree_skb +EXPORT_SYMBOL vmlinux 0x48e39e30 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490fa8b1 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x49217b7a swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x49271818 md_flush_request +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x49517fc2 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x4956f26e fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49ab4815 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c75fed page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x49cebc9a inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x49d16120 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x49f0b2a0 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49f9bf46 kill_pid +EXPORT_SYMBOL vmlinux 0x4a1113cc blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x4a14d593 tty_kref_put +EXPORT_SYMBOL vmlinux 0x4a15f03e is_bad_inode +EXPORT_SYMBOL vmlinux 0x4a36e7f4 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x4a40112c keyring_search +EXPORT_SYMBOL vmlinux 0x4a4c1e08 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x4a4e605c sg_miter_stop +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4a8b8a05 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x4aaa0e70 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x4aacb6ed inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x4aafd796 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x4ab1cca8 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abc4f77 pipe_lock +EXPORT_SYMBOL vmlinux 0x4ac3e0ac inode_change_ok +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad8076f dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x4ae24ee0 km_state_expired +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0c87b2 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x4b24674e __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x4b343508 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b7cb99a blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x4b876e2e mmc_can_reset +EXPORT_SYMBOL vmlinux 0x4b94ad39 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bba53b4 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x4be78e93 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x4bf745a5 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x4c020772 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c1548b0 serio_reconnect +EXPORT_SYMBOL vmlinux 0x4c1a9b3c inet_stream_ops +EXPORT_SYMBOL vmlinux 0x4c241500 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x4c288ab2 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c36d2a7 scsi_host_put +EXPORT_SYMBOL vmlinux 0x4c39f282 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c8b269b proc_set_user +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca24e17 dquot_commit +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cadb388 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x4cc81653 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x4cca40cd netif_receive_skb +EXPORT_SYMBOL vmlinux 0x4cd2e6cf netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce7415b __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x4cf2ce12 phy_attach +EXPORT_SYMBOL vmlinux 0x4d0ea44c nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x4d27e573 bio_map_kern +EXPORT_SYMBOL vmlinux 0x4d2cfbe5 param_get_uint +EXPORT_SYMBOL vmlinux 0x4d2fc445 _dev_info +EXPORT_SYMBOL vmlinux 0x4d4212f7 vfs_unlink +EXPORT_SYMBOL vmlinux 0x4d6daf19 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x4d7c9a88 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x4d86507b inet_register_protosw +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da7f81b pcim_pin_device +EXPORT_SYMBOL vmlinux 0x4dd74889 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x4ddc3a0c register_md_personality +EXPORT_SYMBOL vmlinux 0x4ddf91a1 flush_old_exec +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df503df vfs_getattr +EXPORT_SYMBOL vmlinux 0x4df59e54 single_release +EXPORT_SYMBOL vmlinux 0x4e04a21b dst_discard_out +EXPORT_SYMBOL vmlinux 0x4e099636 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x4e1ec61d phy_stop +EXPORT_SYMBOL vmlinux 0x4e27c090 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x4e33e064 down_read +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3fccbb abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4e4cbcf6 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x4e4de9c1 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x4e52e8ff mdio_bus_type +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e710865 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x4e714175 km_query +EXPORT_SYMBOL vmlinux 0x4e75d23d simple_transaction_release +EXPORT_SYMBOL vmlinux 0x4e83ac84 __netif_schedule +EXPORT_SYMBOL vmlinux 0x4e8d4d6a dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x4e9498ba sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x4e9a8587 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eabf2d6 generic_listxattr +EXPORT_SYMBOL vmlinux 0x4f11e478 pci_bus_type +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1d6b2d param_ops_int +EXPORT_SYMBOL vmlinux 0x4f1d8ff3 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2a222a ip6_frag_match +EXPORT_SYMBOL vmlinux 0x4f2f8e92 key_unlink +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f39f8d1 tty_mutex +EXPORT_SYMBOL vmlinux 0x4f473063 kern_path_create +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f53d297 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4f649fce tcp_seq_open +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f7a89e9 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x4f8ac4a3 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4faea70c nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x4fd2c82a inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe22dc2 __devm_request_region +EXPORT_SYMBOL vmlinux 0x4feaf214 vga_put +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500eb015 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x501a7982 eth_header +EXPORT_SYMBOL vmlinux 0x501ceeba try_to_release_page +EXPORT_SYMBOL vmlinux 0x5029d1a9 key_link +EXPORT_SYMBOL vmlinux 0x5030ae65 thaw_super +EXPORT_SYMBOL vmlinux 0x50411518 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5060d1dd i8042_install_filter +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x507064ba netdev_crit +EXPORT_SYMBOL vmlinux 0x50766d79 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x50942b76 md_update_sb +EXPORT_SYMBOL vmlinux 0x50992a53 find_get_entry +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a70764 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50d50414 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50feddf3 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x51124e68 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x5113e527 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51270625 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x513b0967 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x513d66bc dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x5158c18e __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x51936d47 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x51b857a9 key_alloc +EXPORT_SYMBOL vmlinux 0x51b9f9bb __kfree_skb +EXPORT_SYMBOL vmlinux 0x51cf695e mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d2eb4a ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x51e8e594 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x51eafb8e bdput +EXPORT_SYMBOL vmlinux 0x51f3e81d set_blocksize +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520ec360 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52279f0c amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52663748 mmc_free_host +EXPORT_SYMBOL vmlinux 0x526b2293 simple_getattr +EXPORT_SYMBOL vmlinux 0x5290ef6b abx500_register_ops +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52aa7122 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x52efad48 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x52fa81d1 arp_tbl +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5313dad0 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532486bb mount_bdev +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5333f0b5 arp_send +EXPORT_SYMBOL vmlinux 0x5333f48e devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x5359a1e7 sk_stream_error +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5396d70f search_binary_handler +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53c901ef key_payload_reserve +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5408dcbc md_unregister_thread +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ad945 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544753bd devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x544ec0e7 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x54681108 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x546dafa4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x546e0be4 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x5493386a blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bf91fb blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x54c0ac01 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54da62ba sock_kmalloc +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x54ffcda0 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x5503767c bmap +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x55237105 register_qdisc +EXPORT_SYMBOL vmlinux 0x55273dc9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554b3285 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55838122 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x5596e306 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x5598f4fd tty_port_hangup +EXPORT_SYMBOL vmlinux 0x55a64918 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x55a8cdf8 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dbafb9 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x560cbce5 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x5624fead seq_puts +EXPORT_SYMBOL vmlinux 0x562a7bd7 input_allocate_device +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x5649d1c0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x565f1338 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x5678df15 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x567fb61d invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x568bbb0a param_set_uint +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x56aac57c xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x56ac6bc2 sk_capable +EXPORT_SYMBOL vmlinux 0x56bbb8a6 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x56bc2d32 free_buffer_head +EXPORT_SYMBOL vmlinux 0x56c700e7 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d4ca56 seq_printf +EXPORT_SYMBOL vmlinux 0x56e0f93a tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x56e14d43 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x56e36b76 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x56e972a2 prepare_binprm +EXPORT_SYMBOL vmlinux 0x56eeee64 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x57036541 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x570c9c55 mmc_get_card +EXPORT_SYMBOL vmlinux 0x57273077 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x5728c249 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x572e2bec locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573cb7b5 key_invalidate +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5777310f input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57aa2795 blk_free_tags +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57ce1ec7 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x57daafdc __bread_gfp +EXPORT_SYMBOL vmlinux 0x57edac4a security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x580fcf97 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582bc92f nd_btt_probe +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x58478d43 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5876db24 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x588e4788 __invalidate_device +EXPORT_SYMBOL vmlinux 0x58a8b42c devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d1827d sock_create_lite +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58ee14eb pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x5912988d ps2_begin_command +EXPORT_SYMBOL vmlinux 0x592fa36c pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x593660b2 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x596935a1 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x596d0fa4 dev_add_offload +EXPORT_SYMBOL vmlinux 0x59764035 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x5976edca tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x5981c80b __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x598983a1 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5990ba68 __init_rwsem +EXPORT_SYMBOL vmlinux 0x59a8a8fc blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b2b7ce __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59db4187 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x59ec0933 set_groups +EXPORT_SYMBOL vmlinux 0x59ec5d94 ping_prot +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0c3282 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x5a3b867b max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4b8c5e write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5a68048f sock_i_ino +EXPORT_SYMBOL vmlinux 0x5a74d85b pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a8c35f3 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa66681 sock_no_connect +EXPORT_SYMBOL vmlinux 0x5aa99295 agp_backend_release +EXPORT_SYMBOL vmlinux 0x5ab95dc5 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5acbfc70 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x5ad38f52 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x5ad5f24c tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x5ad66f52 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x5ad6b21f jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x5ad892c5 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5ada0e4a dev_crit +EXPORT_SYMBOL vmlinux 0x5ae8e4bb swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b078a0a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x5b299b01 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x5b4523c6 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x5b5269cb dump_page +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5d7297 param_ops_uint +EXPORT_SYMBOL vmlinux 0x5b7da7ff compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x5b880df4 nf_log_packet +EXPORT_SYMBOL vmlinux 0x5b9c808a acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0x5bae47e4 dentry_unhash +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc83ccb tcp_ioctl +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bd1a792 dentry_open +EXPORT_SYMBOL vmlinux 0x5bf8ebed lwtunnel_output +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c0d1699 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x5c146307 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x5c17e3d9 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x5c1f661a __dquot_transfer +EXPORT_SYMBOL vmlinux 0x5c415ec0 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x5c490394 proc_create_data +EXPORT_SYMBOL vmlinux 0x5c504982 netdev_features_change +EXPORT_SYMBOL vmlinux 0x5c60afbe __register_nls +EXPORT_SYMBOL vmlinux 0x5c8439f4 d_path +EXPORT_SYMBOL vmlinux 0x5c8953ed get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x5cba5b59 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x5ce040d5 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x5ce3ff32 single_open_size +EXPORT_SYMBOL vmlinux 0x5cf1719d i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cff369a pci_scan_slot +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d139a4f devfreq_add_device +EXPORT_SYMBOL vmlinux 0x5d3ec3db inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x5d54f712 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5b6524 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x5d5c09fb tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x5d6cc27c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d9d2f27 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x5dc5673c open_check_o_direct +EXPORT_SYMBOL vmlinux 0x5ddb379d blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x5de07ea1 dev_deactivate +EXPORT_SYMBOL vmlinux 0x5e16092d mmc_can_erase +EXPORT_SYMBOL vmlinux 0x5e211f70 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x5e2262e4 agp_enable +EXPORT_SYMBOL vmlinux 0x5e4b3631 inode_init_always +EXPORT_SYMBOL vmlinux 0x5e587b3a seq_open_private +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9c2d8e blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec5e37c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x5ec699df pci_write_vpd +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee25210 __devm_release_region +EXPORT_SYMBOL vmlinux 0x5efb0844 vm_insert_page +EXPORT_SYMBOL vmlinux 0x5efc8f72 pci_restore_state +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0119ba tty_port_put +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0ee086 inet6_release +EXPORT_SYMBOL vmlinux 0x5f159299 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x5f1fdf96 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x5f29e995 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f627b9c dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x5f7036a8 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x5f96c8d3 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x5fa8550c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fda1717 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x5fde1fec km_is_alive +EXPORT_SYMBOL vmlinux 0x5fea11e8 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x5febefb5 vme_bus_type +EXPORT_SYMBOL vmlinux 0x5ff7a43a acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x5ff98412 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600c4696 iterate_mounts +EXPORT_SYMBOL vmlinux 0x601172a9 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6039cd44 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x60441adf mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606dad58 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x6086c0ee bio_put +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60be4153 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x60cca037 scsi_device_get +EXPORT_SYMBOL vmlinux 0x60d365e4 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x60d5ec36 seq_write +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f161a1 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6117edc9 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x612597ac md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612a964f cdev_del +EXPORT_SYMBOL vmlinux 0x613053f4 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x61740729 mntget +EXPORT_SYMBOL vmlinux 0x61771bd9 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61dbddb0 netlink_unicast +EXPORT_SYMBOL vmlinux 0x61e7171b down_write +EXPORT_SYMBOL vmlinux 0x61ef2b9f skb_make_writable +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x61fb39ed netif_rx_ni +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6211988d phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x623e304f check_disk_size_change +EXPORT_SYMBOL vmlinux 0x62487787 __vfs_read +EXPORT_SYMBOL vmlinux 0x624bdc51 scsi_host_get +EXPORT_SYMBOL vmlinux 0x6257029a skb_store_bits +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629166bf nf_log_unregister +EXPORT_SYMBOL vmlinux 0x62a33f57 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x62ab794c mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x62dcf676 address_space_init_once +EXPORT_SYMBOL vmlinux 0x62e4e238 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x632f56be fget +EXPORT_SYMBOL vmlinux 0x633008e9 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x633dfb18 drop_super +EXPORT_SYMBOL vmlinux 0x6349ae34 tty_hangup +EXPORT_SYMBOL vmlinux 0x635c37e8 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x6361eddc call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638938ef tcp_check_req +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a2f140 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63a9202a delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x63b12c74 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x63b63e3c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x63c39e4b dst_init +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d57a95 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6411c638 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641bf3c6 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x64330d82 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x645c20b7 input_event +EXPORT_SYMBOL vmlinux 0x647c0932 inet_accept +EXPORT_SYMBOL vmlinux 0x647ccd31 phy_driver_register +EXPORT_SYMBOL vmlinux 0x6486df1e clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x64985a9a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a0b28e read_cache_page +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64ba4aee dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c300b5 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64c62a8a dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f87b89 dquot_drop +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x64fcf788 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65189be5 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6553c8cf blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x655a8506 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6584420b scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x65943cd4 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660a6a45 d_move +EXPORT_SYMBOL vmlinux 0x6610f9a1 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x6613b761 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x663b3577 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x66d368e1 arp_create +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66dba977 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x66dd915c nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x66f224a0 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x6706ea3c iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x67088f2b __nlmsg_put +EXPORT_SYMBOL vmlinux 0x6716a7a5 pcim_iomap +EXPORT_SYMBOL vmlinux 0x67215bc5 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x6739771b proc_set_size +EXPORT_SYMBOL vmlinux 0x673f3cd3 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674959d6 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x67559a88 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x6757b1c7 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x67655b3b bio_endio +EXPORT_SYMBOL vmlinux 0x676dd741 path_get +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67970acb blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x67ac7426 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x67ad03f2 phy_device_free +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ec136c __destroy_inode +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680cb22c generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x680cc654 setup_new_exec +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x6847d769 pipe_unlock +EXPORT_SYMBOL vmlinux 0x6870fbd8 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x68718fd0 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687bb85b proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d94b2c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x68f97131 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x69344c26 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x694c1519 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x6961bd21 simple_dname +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697bd746 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x69852e4f from_kgid +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699cbda0 generic_write_checks +EXPORT_SYMBOL vmlinux 0x699e8f7d mutex_trylock +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a3c4ec __dst_free +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b673bb neigh_update +EXPORT_SYMBOL vmlinux 0x69bc2396 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x69cd547e nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x69ce2299 genphy_resume +EXPORT_SYMBOL vmlinux 0x69d258ac vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a18692e generic_file_open +EXPORT_SYMBOL vmlinux 0x6a213540 dev_notice +EXPORT_SYMBOL vmlinux 0x6a23c928 dquot_resume +EXPORT_SYMBOL vmlinux 0x6a292415 pci_save_state +EXPORT_SYMBOL vmlinux 0x6a348950 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x6a362908 iterate_fd +EXPORT_SYMBOL vmlinux 0x6a396ea9 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a6d6a6a netif_carrier_off +EXPORT_SYMBOL vmlinux 0x6a73184c md_check_recovery +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a9a1438 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6abb7cf0 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb857b send_sig +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae2333b scsi_remove_target +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af3d8e6 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x6af89546 __genl_register_family +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1002be __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x6b123359 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b219dc5 dev_uc_del +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b48e104 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x6b527f61 nvm_end_io +EXPORT_SYMBOL vmlinux 0x6b551f84 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b64bf72 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x6b73dc9b neigh_table_init +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b75e673 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x6b7c0038 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6b7cea7a unregister_qdisc +EXPORT_SYMBOL vmlinux 0x6b9ccc2c vc_resize +EXPORT_SYMBOL vmlinux 0x6ba370b3 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x6ba899bb pci_get_slot +EXPORT_SYMBOL vmlinux 0x6ba9c574 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x6bb0a11e __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcf066d _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6bf65c51 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0c5b6b swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x6c1f12a3 current_task +EXPORT_SYMBOL vmlinux 0x6c38f492 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c497ef4 register_netdevice +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7d8f3c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x6c8f6c80 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x6c97dc81 napi_complete_done +EXPORT_SYMBOL vmlinux 0x6c9998af bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x6cab7c4d scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x6cc18174 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6cd80dda mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x6cdb93f6 pci_choose_state +EXPORT_SYMBOL vmlinux 0x6cefe6c4 phy_find_first +EXPORT_SYMBOL vmlinux 0x6cf2c34a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x6cf30f71 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d15be35 kernel_read +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d2684c9 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d41a583 generic_update_time +EXPORT_SYMBOL vmlinux 0x6d424161 pci_bus_get +EXPORT_SYMBOL vmlinux 0x6d6b4d32 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x6db25f7c agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x6db34e67 block_write_begin +EXPORT_SYMBOL vmlinux 0x6db35417 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6dbee805 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfaebee rtnl_notify +EXPORT_SYMBOL vmlinux 0x6e091d1d acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x6e0b8fc7 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x6e3908cb sock_register +EXPORT_SYMBOL vmlinux 0x6e58ad44 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e73be87 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea72cbd __scm_send +EXPORT_SYMBOL vmlinux 0x6ea9aacf xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x6ef66e8a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x6f1bf786 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f22818a dump_trace +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f32ae14 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x6f43351a ___pskb_trim +EXPORT_SYMBOL vmlinux 0x6f4d3291 dst_alloc +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f8123d8 load_nls +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa306ed do_truncate +EXPORT_SYMBOL vmlinux 0x6faa318b __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x6fab676f skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x6fb0a054 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x6fb8fb77 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc3bd51 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcfe181 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6fd390f5 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x6fe649c3 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6fee048f simple_open +EXPORT_SYMBOL vmlinux 0x6ff6d74b agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x6ffe1413 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x700b1c3b ppp_input_error +EXPORT_SYMBOL vmlinux 0x700ca550 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x700f260d tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b282 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x7069c3b9 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70796805 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x7095c500 vfs_read +EXPORT_SYMBOL vmlinux 0x70c4e092 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x70d0e965 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70ef652e sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x710432b5 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713c15c8 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x71508829 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x7158ed7b pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x7163e1d0 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x718396bb inode_add_bytes +EXPORT_SYMBOL vmlinux 0x719612d9 console_start +EXPORT_SYMBOL vmlinux 0x7199b8c0 vfs_llseek +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71abf180 nvm_register_target +EXPORT_SYMBOL vmlinux 0x71d19f97 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x71ffe9b3 param_ops_string +EXPORT_SYMBOL vmlinux 0x72052924 __serio_register_port +EXPORT_SYMBOL vmlinux 0x7216ea44 free_task +EXPORT_SYMBOL vmlinux 0x721e2467 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x7229992a param_ops_long +EXPORT_SYMBOL vmlinux 0x722be61d request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x7238a330 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x7260e249 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x72a539b4 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b4668a param_get_ulong +EXPORT_SYMBOL vmlinux 0x72b811bb ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x72e8fdd0 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7309e5e7 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x735a4610 f_setown +EXPORT_SYMBOL vmlinux 0x73739fa3 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738a2384 dquot_alloc +EXPORT_SYMBOL vmlinux 0x73924972 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x73a117ce try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x73d12125 udp_del_offload +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e55daf dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x73e67525 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x7405ed19 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x74092646 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741d3fc9 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x74247939 tty_check_change +EXPORT_SYMBOL vmlinux 0x7424f9d5 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x742725c2 set_pages_wb +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x746e50c1 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74b91a82 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c22748 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x74c34669 simple_statfs +EXPORT_SYMBOL vmlinux 0x74dec9a8 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x74df5be2 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x75077cce bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x75301aae sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x75302fa1 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753d2b51 ihold +EXPORT_SYMBOL vmlinux 0x75443cf9 __alloc_skb +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x756a2772 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x758adb98 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c1df78 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x75d1f4a5 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x75ea4834 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x75fcfa83 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x75fd0f6e mount_nodev +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76431671 vga_con +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x76a1a01b page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e262c5 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x76e89150 netdev_change_features +EXPORT_SYMBOL vmlinux 0x76eb7576 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x76fb0655 dev_load +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x770c4b16 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x7716aeb9 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771ef945 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x774a04b8 get_gendisk +EXPORT_SYMBOL vmlinux 0x77627b67 blk_finish_request +EXPORT_SYMBOL vmlinux 0x7770cda6 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x77822ed9 d_splice_alias +EXPORT_SYMBOL vmlinux 0x778ff498 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x7803ad76 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7811214f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x781ffcaf xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x782c66e0 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x783a9225 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x783bbf6a get_super_thawed +EXPORT_SYMBOL vmlinux 0x783d1e67 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x78412800 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78678129 dev_uc_add +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788550b7 ilookup +EXPORT_SYMBOL vmlinux 0x7889e76f i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x789835ec mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78b14a44 no_llseek +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e6609f devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78ee633d phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x7923d2ed mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x7925b1a0 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x79352c25 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x795a6b86 padata_alloc +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798fa00e simple_fill_super +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c95d43 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x7a0689c8 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x7a0c62f0 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x7a127632 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x7a1ee0d4 generic_show_options +EXPORT_SYMBOL vmlinux 0x7a2acc41 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2eabab __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x7a3680a4 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x7a3bfeb0 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x7a3c1a5d ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a67eaf1 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a6d8618 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x7a76a4ab intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8743cb agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x7a91f49a __block_write_begin +EXPORT_SYMBOL vmlinux 0x7a9c0a7c netdev_emerg +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa59ebb bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac63a63 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x7acb59c3 km_policy_expired +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7adf92a1 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7b004e10 __put_cred +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b169d7f mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2e0a4c brioctl_set +EXPORT_SYMBOL vmlinux 0x7b38925a find_vma +EXPORT_SYMBOL vmlinux 0x7b49b31c skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x7b50da78 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b608ebd skb_trim +EXPORT_SYMBOL vmlinux 0x7b66199c tty_lock +EXPORT_SYMBOL vmlinux 0x7b6f864d inet6_protos +EXPORT_SYMBOL vmlinux 0x7b716e24 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x7b918828 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x7b9756fb elv_rb_del +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7be37075 current_fs_time +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7bed59b5 sync_inode +EXPORT_SYMBOL vmlinux 0x7bf4118b ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x7c0d8db5 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c14bc40 set_disk_ro +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1a4eb5 blk_get_queue +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c2e3d81 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x7c3445f5 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c727d06 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x7c79c434 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x7c93eba7 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca55cea pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce24aa2 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d16595a key_revoke +EXPORT_SYMBOL vmlinux 0x7d26062f sk_dst_check +EXPORT_SYMBOL vmlinux 0x7d287136 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7d37964e dquot_operations +EXPORT_SYMBOL vmlinux 0x7d3b08ba phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d8f5a2f kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7dec5b07 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e198508 netif_device_attach +EXPORT_SYMBOL vmlinux 0x7e49223c phy_device_remove +EXPORT_SYMBOL vmlinux 0x7e5c35b1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x7e6cccab generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7ea82b4c fget_raw +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ebecf0d cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x7ed3c7d1 set_trace_device +EXPORT_SYMBOL vmlinux 0x7ed56756 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x7ee425cf bdget_disk +EXPORT_SYMBOL vmlinux 0x7ee4449a devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef713c3 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f066153 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x7f17a05e iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f29fdbf md_reload_sb +EXPORT_SYMBOL vmlinux 0x7f3f29f6 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f6aa3da __frontswap_load +EXPORT_SYMBOL vmlinux 0x7f7d7e25 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x7f94adc9 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x7fad148a kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc39860 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ffb815a netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x80107d1c xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x8028595d blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x802e28ef vfs_rename +EXPORT_SYMBOL vmlinux 0x8039ebd9 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x80438985 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x806ec602 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x80818ec3 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x8087f810 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e54250 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x80e7db71 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x80fcbe43 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81250d19 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x81357505 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x814490ae fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x81543a5a netif_rx +EXPORT_SYMBOL vmlinux 0x815527d7 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x815acae8 phy_start +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x818f033c genl_notify +EXPORT_SYMBOL vmlinux 0x81b48dbb kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x81c8ec23 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e14ecd blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x820471af fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x825af634 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x825cb14a sk_common_release +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x8289d422 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x8297cdfa seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x82a8aa84 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ce02ed ht_create_irq +EXPORT_SYMBOL vmlinux 0x82e10663 is_nd_pfn +EXPORT_SYMBOL vmlinux 0x82fa19a6 nf_log_unset +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x831fcec2 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x832f0bff filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x833a4a02 key_validate +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x834be352 make_kprojid +EXPORT_SYMBOL vmlinux 0x835c421a input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x8384647a acpi_map_pxm_to_online_node +EXPORT_SYMBOL vmlinux 0x838ae324 bio_chain +EXPORT_SYMBOL vmlinux 0x838c7650 user_path_create +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83da23ed vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841d65c2 security_path_chown +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845338d9 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x8456435d d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x84955512 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x84a3ee76 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x84a68f3f stop_tty +EXPORT_SYMBOL vmlinux 0x84ae5b7f agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8501fe84 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x85051d47 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x8527685e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x8559d988 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x856584ec posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x8579e167 dqget +EXPORT_SYMBOL vmlinux 0x858a2bc7 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x85b2f2dd igrab +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85ba94ff kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fbe89a kernel_getpeername +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x864c4e6b __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8653141b __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866e6362 unlock_buffer +EXPORT_SYMBOL vmlinux 0x86853bb9 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a6b430 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x86c31d7c uart_resume_port +EXPORT_SYMBOL vmlinux 0x86cee493 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x86d3981e neigh_connected_output +EXPORT_SYMBOL vmlinux 0x86ec4930 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870ee94b mmc_release_host +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8723ded6 efi +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8768de1e napi_gro_receive +EXPORT_SYMBOL vmlinux 0x876c720d sock_kfree_s +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87b4cef1 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x87b581e4 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87cf4320 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x87e9736b __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x88009cd8 kobject_put +EXPORT_SYMBOL vmlinux 0x8814e7a2 param_get_long +EXPORT_SYMBOL vmlinux 0x883a0311 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x884132b1 tty_throttle +EXPORT_SYMBOL vmlinux 0x8855d05d iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x887a366b input_flush_device +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888c097e is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x88988189 lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x88b7895a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x88caa10e mpage_writepage +EXPORT_SYMBOL vmlinux 0x88d04985 d_invalidate +EXPORT_SYMBOL vmlinux 0x88d6ef80 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x88dc244f tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x88e5778e dev_alert +EXPORT_SYMBOL vmlinux 0x88ed7863 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0x88ee9ed4 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x8905e654 __seq_open_private +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x893036e8 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x8937f017 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x894f80b1 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x895820c0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x899d3905 param_ops_bint +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b4c849 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d74d9e simple_transaction_read +EXPORT_SYMBOL vmlinux 0x89e66d56 param_ops_charp +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2c894b netdev_notice +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a6d534f phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x8a70084c kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x8a7975aa set_page_dirty +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9ca120 padata_stop +EXPORT_SYMBOL vmlinux 0x8ae1bfd8 register_console +EXPORT_SYMBOL vmlinux 0x8afa9940 bdevname +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b38a865 get_empty_filp +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4f1b46 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b77cef4 ata_link_printk +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8f8889 lock_fb_info +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba13c34 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8bb19a8e dqput +EXPORT_SYMBOL vmlinux 0x8bb6e2a4 wireless_send_event +EXPORT_SYMBOL vmlinux 0x8bcedf32 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8bd44889 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x8be89307 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x8bf1d701 noop_qdisc +EXPORT_SYMBOL vmlinux 0x8bfbe7bb cdev_add +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c23ce47 vm_mmap +EXPORT_SYMBOL vmlinux 0x8c276daa put_disk +EXPORT_SYMBOL vmlinux 0x8c5bf044 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c68b2a5 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x8c6c22c5 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x8c78ca53 bd_set_size +EXPORT_SYMBOL vmlinux 0x8c9c34b3 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x8cafcd0d vme_register_bridge +EXPORT_SYMBOL vmlinux 0x8cb62a1a mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x8cbb3313 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8cc418a4 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce6e288 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x8ce8f610 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x8cf733f1 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x8cf8fb22 proc_remove +EXPORT_SYMBOL vmlinux 0x8cfba726 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x8d0869a6 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x8d247b73 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x8d2810bc mutex_lock +EXPORT_SYMBOL vmlinux 0x8d3734ac max8998_write_reg +EXPORT_SYMBOL vmlinux 0x8d3fca97 block_write_full_page +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55a883 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d57bca4 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x8d701526 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8cce81 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da11af4 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8dab3815 mpage_readpages +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dbda5f5 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x8dc5ca0b mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x8dc62ecf textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8deca278 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x8dee41f0 xattr_full_name +EXPORT_SYMBOL vmlinux 0x8df1524d have_submounts +EXPORT_SYMBOL vmlinux 0x8df6eddd tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e181941 seq_release +EXPORT_SYMBOL vmlinux 0x8e186bdb dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x8e4a3a67 serio_bus +EXPORT_SYMBOL vmlinux 0x8e619ed1 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e848857 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ec7ab0c compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8eca31fc __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x8eee6b55 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x8ef699f9 netif_device_detach +EXPORT_SYMBOL vmlinux 0x8ef9beb6 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x8f00a267 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f32cb05 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x8f45f64f vme_master_request +EXPORT_SYMBOL vmlinux 0x8f52f71c scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x8f61dd63 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x8f65d55f con_copy_unimap +EXPORT_SYMBOL vmlinux 0x8f73e60a inet6_offloads +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa827fd ip_defrag +EXPORT_SYMBOL vmlinux 0x8fb85764 vfs_readv +EXPORT_SYMBOL vmlinux 0x8fc0995d get_super +EXPORT_SYMBOL vmlinux 0x8fcf01cb neigh_lookup +EXPORT_SYMBOL vmlinux 0x8fd1152e _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x8fd43e33 dma_find_channel +EXPORT_SYMBOL vmlinux 0x8fd49771 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x8ff98e34 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x902aa19a inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x902d50fc generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x905f9c18 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x90696d1e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x907d6e3d mmc_erase +EXPORT_SYMBOL vmlinux 0x908575fe queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x9092665b generic_make_request +EXPORT_SYMBOL vmlinux 0x90b1cd47 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x90c8e8d5 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x90de2829 fb_pan_display +EXPORT_SYMBOL vmlinux 0x90f51344 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x90f987f9 mmc_put_card +EXPORT_SYMBOL vmlinux 0x9101679b netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x91161c06 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x911d56cb dst_destroy +EXPORT_SYMBOL vmlinux 0x91261e8b ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91862737 dquot_destroy +EXPORT_SYMBOL vmlinux 0x919324db iunique +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91a2c06f i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bea48b proc_symlink +EXPORT_SYMBOL vmlinux 0x91ca26f3 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x91e2fba0 mdiobus_write +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x9205a606 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x920c841b pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x9238365d __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x926195ed deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x9283ef5d sock_create +EXPORT_SYMBOL vmlinux 0x9289b08d scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d09f2f devm_gpio_free +EXPORT_SYMBOL vmlinux 0x92e6bfb3 kill_litter_super +EXPORT_SYMBOL vmlinux 0x92ea1059 bio_reset +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9315003c lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x933690cd phy_suspend +EXPORT_SYMBOL vmlinux 0x9344ceed md_write_end +EXPORT_SYMBOL vmlinux 0x934c0555 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9351f433 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937bc3fa dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x937cb3f8 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x9382792a param_ops_invbool +EXPORT_SYMBOL vmlinux 0x938f03dd kernel_write +EXPORT_SYMBOL vmlinux 0x9391bea2 ipv4_specific +EXPORT_SYMBOL vmlinux 0x939a2405 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x93a55ff6 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x93b10c18 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93d56a47 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x93d964a5 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x93da3d54 netdev_state_change +EXPORT_SYMBOL vmlinux 0x93e43354 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x93eb4c32 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x93edc7a9 generic_getxattr +EXPORT_SYMBOL vmlinux 0x93ee8c7b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9401f3b6 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x941578fd fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x94219718 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x9429c318 inc_nlink +EXPORT_SYMBOL vmlinux 0x942a032f scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x942addb4 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x943528c3 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x9444765f fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x94514a23 copy_to_iter +EXPORT_SYMBOL vmlinux 0x946da65f ip_options_compile +EXPORT_SYMBOL vmlinux 0x9491d463 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b3d6e5 dma_ops +EXPORT_SYMBOL vmlinux 0x94b535dd tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x94ba1f84 touch_buffer +EXPORT_SYMBOL vmlinux 0x94c3febe qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x94c41253 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x94cf5b81 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x94d2f0a1 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x94df0a95 deactivate_super +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x951c9c88 sock_create_kern +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95554682 scsi_register +EXPORT_SYMBOL vmlinux 0x955a832f ___preempt_schedule +EXPORT_SYMBOL vmlinux 0x958a07c9 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x959a3e88 __skb_checksum +EXPORT_SYMBOL vmlinux 0x959a689c agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95cc0f31 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x961d797a serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x9631784d inet_add_protocol +EXPORT_SYMBOL vmlinux 0x9633f870 proto_register +EXPORT_SYMBOL vmlinux 0x96488edb alloc_disk +EXPORT_SYMBOL vmlinux 0x96697c84 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x96903573 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x969f6582 d_tmpfile +EXPORT_SYMBOL vmlinux 0x96a02245 ps2_command +EXPORT_SYMBOL vmlinux 0x96a1a270 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x96a461c2 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96b1d60e __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cf748d security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x96faabc4 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x9710beee generic_perform_write +EXPORT_SYMBOL vmlinux 0x9718bf5f xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x97433aaf thaw_bdev +EXPORT_SYMBOL vmlinux 0x97512952 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975e5205 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x97757da9 import_iovec +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979b3a06 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x97a0e094 amd_northbridges +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97a7b355 block_commit_write +EXPORT_SYMBOL vmlinux 0x97b5f149 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x97c26bec pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x97c2ddea simple_rename +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97de809c buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x97e1c3ab skb_insert +EXPORT_SYMBOL vmlinux 0x97eff224 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x97fc0f3b tcp_release_cb +EXPORT_SYMBOL vmlinux 0x97ff962a inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x980a5feb neigh_for_each +EXPORT_SYMBOL vmlinux 0x981b251a rfkill_alloc +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829e9c9 agp_free_memory +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98372d6f ppp_dev_name +EXPORT_SYMBOL vmlinux 0x9856a7b0 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x98675309 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986f7ab7 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x986fa595 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988c0988 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x988f84a1 follow_up +EXPORT_SYMBOL vmlinux 0x989f15b3 netdev_info +EXPORT_SYMBOL vmlinux 0x98a626ca inet_sendmsg +EXPORT_SYMBOL vmlinux 0x98acb2dd pci_get_device +EXPORT_SYMBOL vmlinux 0x98bee7b0 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98f4fcce blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x9907f487 migrate_page +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992ea8c4 kthread_stop +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x9940049b try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x9944c98a register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99582e35 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995eecb0 tty_free_termios +EXPORT_SYMBOL vmlinux 0x996fb67c console_stop +EXPORT_SYMBOL vmlinux 0x99712ac3 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x9987f62a dev_trans_start +EXPORT_SYMBOL vmlinux 0x9994b641 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99990c00 init_buffer +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b0c43c kernel_accept +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a0a93f9 sync_filesystem +EXPORT_SYMBOL vmlinux 0x9a1482fc inet_release +EXPORT_SYMBOL vmlinux 0x9a1c85c0 vm_map_ram +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a39bedb __dax_fault +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a55feed fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x9a6cf2a3 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9a754145 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x9ab2497d elv_register_queue +EXPORT_SYMBOL vmlinux 0x9adc0059 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x9ae34b7f submit_bio +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3aff41 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x9b61c207 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x9b80ae1b blk_integrity_register +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb3b1aa blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bcbc582 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9bdfc3b6 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9be60ac8 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bec6b2c param_ops_byte +EXPORT_SYMBOL vmlinux 0x9bfd7c1f jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x9c02d013 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x9c109c0c lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c49ef23 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x9c4b14c1 devm_clk_put +EXPORT_SYMBOL vmlinux 0x9c4ee423 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x9c656669 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x9c7dc5b4 simple_link +EXPORT_SYMBOL vmlinux 0x9c85316e devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x9c8a4ad4 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x9c9ed37f dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x9ca03811 bdev_read_only +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb245c0 dev_addr_init +EXPORT_SYMBOL vmlinux 0x9cccb947 pci_disable_device +EXPORT_SYMBOL vmlinux 0x9cdef380 page_symlink +EXPORT_SYMBOL vmlinux 0x9cdf5937 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x9cf5a202 md_integrity_register +EXPORT_SYMBOL vmlinux 0x9d00abcd pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0f2c12 dev_addr_add +EXPORT_SYMBOL vmlinux 0x9d1de3f4 node_data +EXPORT_SYMBOL vmlinux 0x9d1e90c8 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3635fd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x9d38e92b set_wb_congested +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d66bf4b qdisc_list_add +EXPORT_SYMBOL vmlinux 0x9d83f9d0 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x9d850c7d cfb_imageblit +EXPORT_SYMBOL vmlinux 0x9d90ffe9 netdev_warn +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dc1fa5a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x9dd05b67 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x9dd0b2a9 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x9dd1bae9 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9dd4e3f8 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x9dda8f41 __blk_end_request +EXPORT_SYMBOL vmlinux 0x9df13cbe passthru_features_check +EXPORT_SYMBOL vmlinux 0x9df4f4cd dm_io +EXPORT_SYMBOL vmlinux 0x9dfb03e0 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x9dfc34d8 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x9e076006 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1b4839 pci_bus_put +EXPORT_SYMBOL vmlinux 0x9e26016b dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x9e2801f7 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e46b803 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e532392 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x9e5839fb skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x9e5e6e6a sock_wmalloc +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e754dbe tty_port_close +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e8abf60 dquot_release +EXPORT_SYMBOL vmlinux 0x9e933717 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea10096 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9ea5f36d simple_release_fs +EXPORT_SYMBOL vmlinux 0x9ea70098 cont_write_begin +EXPORT_SYMBOL vmlinux 0x9eaf4194 dev_base_lock +EXPORT_SYMBOL vmlinux 0x9ebad409 vfs_write +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9eebdcb1 scsi_device_put +EXPORT_SYMBOL vmlinux 0x9efb9ab5 tcf_register_action +EXPORT_SYMBOL vmlinux 0x9f041b5d blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x9f0732d0 skb_unlink +EXPORT_SYMBOL vmlinux 0x9f213eaf jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x9f22a497 inet6_getname +EXPORT_SYMBOL vmlinux 0x9f22d6d6 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4b4445 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9f5a926c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x9f6cbf42 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa40559 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x9fbdca0d rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x9fc5e31c clear_inode +EXPORT_SYMBOL vmlinux 0x9fceb864 input_register_handler +EXPORT_SYMBOL vmlinux 0x9fd52cde mark_page_accessed +EXPORT_SYMBOL vmlinux 0x9fd79233 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa004d2e9 ppp_input +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06ff399 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0865cd4 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa0908115 mutex_unlock +EXPORT_SYMBOL vmlinux 0xa0957b0d __get_user_pages +EXPORT_SYMBOL vmlinux 0xa09990cc pci_select_bars +EXPORT_SYMBOL vmlinux 0xa09c7bd2 audit_log_start +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bf03e8 register_quota_format +EXPORT_SYMBOL vmlinux 0xa0ce52c0 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f72294 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa101fa52 skb_queue_head +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12681fa elv_rb_add +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa144ce6d check_disk_change +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14ece6e vga_get +EXPORT_SYMBOL vmlinux 0xa177aa2a scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xa17c210a elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xa1a84561 pci_request_region +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b7e6c9 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f47006 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20abb45 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa2100d7b pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0xa21b9f6d release_pages +EXPORT_SYMBOL vmlinux 0xa21fc75f iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa2275775 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xa22b6f72 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xa233cc26 free_page_put_link +EXPORT_SYMBOL vmlinux 0xa23b7eb8 __module_get +EXPORT_SYMBOL vmlinux 0xa24fd63a tcp_disconnect +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa29bd39e nvm_register +EXPORT_SYMBOL vmlinux 0xa29dfd3e scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2d51da3 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0xa2d7d155 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xa2f3401d cdrom_open +EXPORT_SYMBOL vmlinux 0xa313f7f9 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa33f299e inet_frag_find +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa352e5cd tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3b5602a component_match_add +EXPORT_SYMBOL vmlinux 0xa3bce5c7 posix_test_lock +EXPORT_SYMBOL vmlinux 0xa3c80593 inet_ioctl +EXPORT_SYMBOL vmlinux 0xa3cadd93 param_get_string +EXPORT_SYMBOL vmlinux 0xa3cfbbeb phy_resume +EXPORT_SYMBOL vmlinux 0xa3da9020 param_set_bint +EXPORT_SYMBOL vmlinux 0xa3e6f559 blk_peek_request +EXPORT_SYMBOL vmlinux 0xa3ea824a blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xa3f0ff55 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa411ae9b pci_enable_device +EXPORT_SYMBOL vmlinux 0xa424e470 km_new_mapping +EXPORT_SYMBOL vmlinux 0xa4337777 da903x_query_status +EXPORT_SYMBOL vmlinux 0xa446e33e dev_mc_add +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa453b6aa pagecache_get_page +EXPORT_SYMBOL vmlinux 0xa465420b ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47f3546 __page_symlink +EXPORT_SYMBOL vmlinux 0xa483dcac mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xa4b4a3f2 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d25dd2 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4dd248a vfs_writef +EXPORT_SYMBOL vmlinux 0xa5077316 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xa531484b bio_phys_segments +EXPORT_SYMBOL vmlinux 0xa5398c23 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xa53c5df2 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa559c9f6 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xa5715528 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xa5836429 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a4138b scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b4acb8 init_task +EXPORT_SYMBOL vmlinux 0xa5ca7608 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa5d06b34 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xa5d64ed3 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xa5ddee7a iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xa5df05b6 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xa5e55ee7 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xa6169203 lwtunnel_input +EXPORT_SYMBOL vmlinux 0xa629f86f udp6_set_csum +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6473592 put_filp +EXPORT_SYMBOL vmlinux 0xa64c34c5 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xa6601a8e dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xa660c26a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa66c4e86 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67a7456 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xa67aac15 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6832400 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xa688fa69 simple_unlink +EXPORT_SYMBOL vmlinux 0xa69209b0 mount_pseudo +EXPORT_SYMBOL vmlinux 0xa698570b simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xa6a8526f path_put +EXPORT_SYMBOL vmlinux 0xa6b23de5 input_inject_event +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6d9c577 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xa6dd891a nd_device_unregister +EXPORT_SYMBOL vmlinux 0xa6f15a45 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa728a850 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa72f2247 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa75154c9 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xa75d671f netif_skb_features +EXPORT_SYMBOL vmlinux 0xa76948c1 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xa76cf39c filemap_flush +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7b9af61 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xa7d0b660 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xa81672ba pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83d48ea kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84aff1e __secpath_destroy +EXPORT_SYMBOL vmlinux 0xa8515075 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa88499c6 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa899626d devm_ioremap +EXPORT_SYMBOL vmlinux 0xa8e6f37c __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xa8f5dcd4 skb_tx_error +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90c23c9 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa90fc856 register_cdrom +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa917dca9 consume_skb +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa92f3984 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xa930169f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xa94869fc misc_deregister +EXPORT_SYMBOL vmlinux 0xa96637fd file_open_root +EXPORT_SYMBOL vmlinux 0xa975b24b phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa98cbe3d clk_get +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa99c3aa7 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9e3acf6 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xa9e51106 param_set_ullong +EXPORT_SYMBOL vmlinux 0xa9ee50f6 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xa9fc7e8b scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xaa0439dd inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xaa2787ec tcf_hash_create +EXPORT_SYMBOL vmlinux 0xaa2a9742 inode_init_once +EXPORT_SYMBOL vmlinux 0xaa53b87a inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa9331e4 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xaaa67268 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xaacc1dff rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf2d226 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xaafdaad9 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab0ad223 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xab1a0a03 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xab1fc9c4 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xab382ef5 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab566381 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xab5f5feb pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab66bb48 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab80dff1 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xaba3159c gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xabb233b0 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe5dbb2 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xabe73304 vme_irq_request +EXPORT_SYMBOL vmlinux 0xabf4ef2c mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2eee06 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac42e6f9 unlock_rename +EXPORT_SYMBOL vmlinux 0xac609b6d add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xaca4737e nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacbe51e9 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xacc16da8 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd2dae6 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdd5144 skb_pad +EXPORT_SYMBOL vmlinux 0xace21ff1 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf99ea2 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad18ef8a pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xad1e8764 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xad23a862 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xad2e5c5a wait_iff_congested +EXPORT_SYMBOL vmlinux 0xad410bad loop_register_transfer +EXPORT_SYMBOL vmlinux 0xad4aca33 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad771362 __getblk_slow +EXPORT_SYMBOL vmlinux 0xad798956 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xad7c4e06 blk_make_request +EXPORT_SYMBOL vmlinux 0xad7ed2fc netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadb76980 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae3e05e5 fasync_helper +EXPORT_SYMBOL vmlinux 0xae6c2cd1 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xae709c6a ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xae79c6c5 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xae82daa6 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaef89ef5 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xaf15cb58 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xaf171220 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xaf1e6a23 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6354f6 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf757a77 pci_release_regions +EXPORT_SYMBOL vmlinux 0xafad9323 override_creds +EXPORT_SYMBOL vmlinux 0xafb4e699 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xb00464cf d_walk +EXPORT_SYMBOL vmlinux 0xb0126798 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb02bd591 _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0xb02c56f5 input_register_handle +EXPORT_SYMBOL vmlinux 0xb04e24fc lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb075765b pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xb07ae2ba unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xb08760fb inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xb0927272 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0c4e0cb inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb0df4fa1 fb_show_logo +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb10820e4 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0xb10bd27e nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb127ea96 udp_prot +EXPORT_SYMBOL vmlinux 0xb12bcc35 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1370c9d tcf_hash_search +EXPORT_SYMBOL vmlinux 0xb1447b1e pagevec_lookup +EXPORT_SYMBOL vmlinux 0xb149ba4e xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xb1504cc6 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16a3b57 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xb16e3a89 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xb17132ba free_netdev +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb192e8e5 secpath_dup +EXPORT_SYMBOL vmlinux 0xb1a6941a param_set_ushort +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c96abb bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xb1ccbf60 sk_net_capable +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1e88a58 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xb20c4068 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb231967e wireless_spy_update +EXPORT_SYMBOL vmlinux 0xb2371537 vfs_fsync +EXPORT_SYMBOL vmlinux 0xb25b3c9e param_set_int +EXPORT_SYMBOL vmlinux 0xb26142cc __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2724d31 set_pages_nx +EXPORT_SYMBOL vmlinux 0xb28d043b tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xb2ac925b sock_setsockopt +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2ebd463 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb2f1a529 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fa2e3f udp_disconnect +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb2fef87e inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb3039f4b inet_listen +EXPORT_SYMBOL vmlinux 0xb30a37c1 setattr_copy +EXPORT_SYMBOL vmlinux 0xb314df8a twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xb31836e1 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb33b744b dev_printk +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb36911cd make_kgid +EXPORT_SYMBOL vmlinux 0xb38a3f1c simple_write_end +EXPORT_SYMBOL vmlinux 0xb39c89bc pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb3b24bdc xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xb3cbff34 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3db93b6 mdiobus_read +EXPORT_SYMBOL vmlinux 0xb3deab59 register_filesystem +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb408106a xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xb412e194 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42c6adc dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb45d0ddb scsi_target_resume +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb489b98d pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb48dcf98 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xb4981559 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xb4ae191b poll_initwait +EXPORT_SYMBOL vmlinux 0xb4b5f4fc module_put +EXPORT_SYMBOL vmlinux 0xb4b62880 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xb4bbf862 param_set_ulong +EXPORT_SYMBOL vmlinux 0xb4bc39aa d_make_root +EXPORT_SYMBOL vmlinux 0xb4f9cdad vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xb502d627 __d_drop +EXPORT_SYMBOL vmlinux 0xb5055a61 poll_freewait +EXPORT_SYMBOL vmlinux 0xb50c5831 scmd_printk +EXPORT_SYMBOL vmlinux 0xb518c3ab compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53f77cc block_invalidatepage +EXPORT_SYMBOL vmlinux 0xb5408363 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xb54f5f15 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xb568e6b8 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb56ba4ab truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a7a54d md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c66c11 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5ee80be seq_vprintf +EXPORT_SYMBOL vmlinux 0xb5f068e9 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xb60628c9 tty_vhangup +EXPORT_SYMBOL vmlinux 0xb60b2cb7 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62b3962 datagram_poll +EXPORT_SYMBOL vmlinux 0xb6424085 inet_sendpage +EXPORT_SYMBOL vmlinux 0xb6491444 block_write_end +EXPORT_SYMBOL vmlinux 0xb64e7cf5 page_waitqueue +EXPORT_SYMBOL vmlinux 0xb663580f inet_addr_type +EXPORT_SYMBOL vmlinux 0xb67055ae acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb678468f neigh_seq_start +EXPORT_SYMBOL vmlinux 0xb68feced mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69aacae pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a79cca km_report +EXPORT_SYMBOL vmlinux 0xb6afc0a1 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb6defb88 down_write_trylock +EXPORT_SYMBOL vmlinux 0xb6e9bd6f mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xb6f8d4ac netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xb700ffd2 dev_mc_del +EXPORT_SYMBOL vmlinux 0xb710b5e6 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xb72a2ab6 icmpv6_send +EXPORT_SYMBOL vmlinux 0xb733ad02 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb755203a to_ndd +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb7695890 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb775b04d security_path_truncate +EXPORT_SYMBOL vmlinux 0xb7764e1d blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xb777d55a pci_fixup_device +EXPORT_SYMBOL vmlinux 0xb7a62666 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb7b0a675 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb7b2c79c sock_recvmsg +EXPORT_SYMBOL vmlinux 0xb7b9d786 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xb7cd86d1 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xb7d38f0e devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xb7d7d0fc xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xb7db6669 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xb8461510 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb8586917 put_tty_driver +EXPORT_SYMBOL vmlinux 0xb864f518 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb88c5635 agp_copy_info +EXPORT_SYMBOL vmlinux 0xb897d3cd jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8c49c71 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xb8d0edab vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xb8da67ec inet_del_offload +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8f635a8 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xb8fc9660 ip6_route_output +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90fa2d9 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb92e3cb4 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xb9742145 security_inode_permission +EXPORT_SYMBOL vmlinux 0xb98eb2c7 simple_lookup +EXPORT_SYMBOL vmlinux 0xb9a1df77 iov_iter_init +EXPORT_SYMBOL vmlinux 0xb9c51532 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xb9cc3d11 seq_read +EXPORT_SYMBOL vmlinux 0xb9e4d225 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba025fa8 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xba05f598 skb_seq_read +EXPORT_SYMBOL vmlinux 0xba0ce69c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xba0d6ce4 vfs_writev +EXPORT_SYMBOL vmlinux 0xba1fd8ec tty_register_driver +EXPORT_SYMBOL vmlinux 0xba2cc7f8 get_fs_type +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5075c7 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xba5e4ab3 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xba5eda54 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xba73adab textsearch_destroy +EXPORT_SYMBOL vmlinux 0xbadc68d5 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xbaff8719 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0dcd27 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4cae4c finish_no_open +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb56c985 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5ef794 find_lock_entry +EXPORT_SYMBOL vmlinux 0xbb7d3692 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xbb875aaf mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xbb8fce87 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb37b1c uart_suspend_port +EXPORT_SYMBOL vmlinux 0xbbb67790 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xbbd7f65c kmalloc_caches +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf5aea7 seq_release_private +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc8b5cdc tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc61e5f agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xbcdb057b __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xbcf58e78 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xbd03570d inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd26b178 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xbd36e086 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd49f9a4 generic_readlink +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd81246d may_umount_tree +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda533d0 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xbdadce6a lro_flush_all +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb9447a proc_mkdir +EXPORT_SYMBOL vmlinux 0xbdc98559 dump_emit +EXPORT_SYMBOL vmlinux 0xbdceae7e open_exec +EXPORT_SYMBOL vmlinux 0xbdd1008b phy_device_create +EXPORT_SYMBOL vmlinux 0xbddf6ef7 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xbdf979f6 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe25bde4 pci_iomap +EXPORT_SYMBOL vmlinux 0xbe310e20 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xbe35b5a6 seq_lseek +EXPORT_SYMBOL vmlinux 0xbe4c60b0 backlight_device_register +EXPORT_SYMBOL vmlinux 0xbe5935ff agp_create_memory +EXPORT_SYMBOL vmlinux 0xbe74a905 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xbeb5bd0e vfs_mkdir +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec4de29 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xbed5ab53 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xbedaaa48 framebuffer_release +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf19c49b amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xbf39097f dma_supported +EXPORT_SYMBOL vmlinux 0xbf469fab nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xbf4f6907 dev_warn +EXPORT_SYMBOL vmlinux 0xbf630694 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xbf751fcf nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf87dd4b kernel_sendpage +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa62718 backlight_force_update +EXPORT_SYMBOL vmlinux 0xbfbfd03c skb_split +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffedc87 skb_pull +EXPORT_SYMBOL vmlinux 0xc009c33d bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xc01031da scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xc050ee76 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xc05a3f67 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc064bd3d nobh_write_end +EXPORT_SYMBOL vmlinux 0xc06d1e60 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc099d010 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0d4f497 security_file_permission +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc1000f13 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xc1188f33 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xc12bcdf3 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xc143a37c nvm_register_mgr +EXPORT_SYMBOL vmlinux 0xc14e0c97 module_refcount +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1643527 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xc17806a8 sock_no_listen +EXPORT_SYMBOL vmlinux 0xc1920099 inet_add_offload +EXPORT_SYMBOL vmlinux 0xc19283c0 dcb_getapp +EXPORT_SYMBOL vmlinux 0xc1aff030 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xc1c48bc2 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ea6ec4 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xc1ec3b24 up_read +EXPORT_SYMBOL vmlinux 0xc1f29693 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xc1f9edba netlink_set_err +EXPORT_SYMBOL vmlinux 0xc20026fe nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xc203dff6 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xc20a9b7d __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc21b10a6 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xc220c568 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc242da02 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xc25037c7 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xc27dd87d sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xc27faa42 file_update_time +EXPORT_SYMBOL vmlinux 0xc2959165 elevator_exit +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2b0dd4b i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc2c6622d ip_check_defrag +EXPORT_SYMBOL vmlinux 0xc2d4d7c4 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2faa6d9 generic_removexattr +EXPORT_SYMBOL vmlinux 0xc301e352 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc33b17c5 submit_bh +EXPORT_SYMBOL vmlinux 0xc33baa45 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xc340cbe5 file_ns_capable +EXPORT_SYMBOL vmlinux 0xc35e23db generic_ro_fops +EXPORT_SYMBOL vmlinux 0xc377afe0 filp_open +EXPORT_SYMBOL vmlinux 0xc39f026d fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc3a82ea0 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bca5f1 __break_lease +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d921eb phy_init_hw +EXPORT_SYMBOL vmlinux 0xc3edc1e2 keyring_clear +EXPORT_SYMBOL vmlinux 0xc428087a security_path_symlink +EXPORT_SYMBOL vmlinux 0xc42dc990 mmc_start_req +EXPORT_SYMBOL vmlinux 0xc44d6df5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc45f63ef pnp_get_resource +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc484244e pci_get_subsys +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4b8cbda __blk_run_queue +EXPORT_SYMBOL vmlinux 0xc4ee3f70 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xc4f7eea1 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xc501b2ac mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc52ceb37 ps2_end_command +EXPORT_SYMBOL vmlinux 0xc53ace9b invalidate_partition +EXPORT_SYMBOL vmlinux 0xc53d050d tty_port_init +EXPORT_SYMBOL vmlinux 0xc5413da6 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc57780b9 blkdev_put +EXPORT_SYMBOL vmlinux 0xc5805a02 commit_creds +EXPORT_SYMBOL vmlinux 0xc5892ed8 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xc58a2470 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xc5989b0a skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59c9f93 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xc5a1c466 sk_alloc +EXPORT_SYMBOL vmlinux 0xc5c74e0f agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xc5cb5cbb mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dcc917 fput +EXPORT_SYMBOL vmlinux 0xc5f46a14 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60fdc80 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc6142867 inet_select_addr +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc635d294 inet_offloads +EXPORT_SYMBOL vmlinux 0xc63752ea __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xc63b63fb scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc6433005 generic_permission +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6658f64 dev_uc_init +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6747c68 elv_rb_find +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc67be997 nf_afinfo +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c1c9b1 agp_bridge +EXPORT_SYMBOL vmlinux 0xc6c1e86f qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d0622e __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xc6d7dd72 wake_up_process +EXPORT_SYMBOL vmlinux 0xc6f44acd mark_info_dirty +EXPORT_SYMBOL vmlinux 0xc7012ae7 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xc7158d49 I_BDEV +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72d4f01 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xc730d1df netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xc741d30d jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc7523231 mount_single +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc7630328 security_path_link +EXPORT_SYMBOL vmlinux 0xc76635b4 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7957fdc locks_copy_lock +EXPORT_SYMBOL vmlinux 0xc79bb4cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b96082 flow_cache_init +EXPORT_SYMBOL vmlinux 0xc7c5644b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xc7ca7fc8 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc804cce0 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xc838f4b8 copy_from_iter +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc840499f set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc8491137 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc86c6609 request_key_async +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c508d9 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc8eef0ce reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc933ae1a neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xc9427d3f devm_memunmap +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97afa80 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xc99114ad xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xc995cf9d tty_set_operations +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9d94191 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xc9e2c302 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xc9ef1e8d blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xc9f6fa81 tty_name +EXPORT_SYMBOL vmlinux 0xc9f884bb dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2daad3 fb_blank +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca63d918 block_truncate_page +EXPORT_SYMBOL vmlinux 0xca66e645 make_bad_inode +EXPORT_SYMBOL vmlinux 0xca82e624 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9041f5 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcab0ba7a scsi_print_result +EXPORT_SYMBOL vmlinux 0xcaee6dc5 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf99a70 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0afb81 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xcb0b3d4f dup_iter +EXPORT_SYMBOL vmlinux 0xcb1bd9fd kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xcb493573 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xcb5a7553 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xcb60399d tcf_em_register +EXPORT_SYMBOL vmlinux 0xcb705232 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xcb7301a1 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb8fbdf3 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb96074f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xcb9c131c backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbddd5ef sg_miter_start +EXPORT_SYMBOL vmlinux 0xcbebefb3 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc40f708 dquot_disable +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc689749 sock_from_file +EXPORT_SYMBOL vmlinux 0xcc77bbdf fd_install +EXPORT_SYMBOL vmlinux 0xcc7dd07f pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xcc82add3 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc8d3f4f acpi_os_execute +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xcca26256 filemap_fault +EXPORT_SYMBOL vmlinux 0xccb2f465 make_kuid +EXPORT_SYMBOL vmlinux 0xccbe5405 km_policy_notify +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccfa880 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xccd00df8 __frontswap_test +EXPORT_SYMBOL vmlinux 0xcce55d29 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xcce7e0e8 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd226478 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd5389ac tcp_proc_register +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5d9bfa dev_driver_string +EXPORT_SYMBOL vmlinux 0xcd6d378b netlink_capable +EXPORT_SYMBOL vmlinux 0xcd7bb1f3 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xcd7c0067 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xcd7d9af2 blk_start_queue +EXPORT_SYMBOL vmlinux 0xcd90c11d set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xcd9cd66a d_drop +EXPORT_SYMBOL vmlinux 0xcd9d55a1 dev_change_flags +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc6aad8 d_set_d_op +EXPORT_SYMBOL vmlinux 0xcdcb85a3 sock_no_accept +EXPORT_SYMBOL vmlinux 0xcdfb813e vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xce2613ed always_delete_dentry +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4cd781 bh_submit_read +EXPORT_SYMBOL vmlinux 0xce4e0002 dump_skip +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce666922 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xce6e4c65 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce853406 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xce86d4af fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xce996190 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xcea4519e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xcecaaa69 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xceedf779 arch_dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef8c49b alloc_pages_current +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xceff0dfb inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xcf29d2cb csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xcf674396 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6eb5ad done_path_create +EXPORT_SYMBOL vmlinux 0xcf709478 softnet_data +EXPORT_SYMBOL vmlinux 0xcf984eac mfd_add_devices +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfd525c3 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xcfec3972 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xd02b4b91 elevator_init +EXPORT_SYMBOL vmlinux 0xd031c737 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xd046a703 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd048abc2 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd092de40 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a414df __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ae77cb padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xd0b59bb5 follow_pfn +EXPORT_SYMBOL vmlinux 0xd0c33b84 phy_detach +EXPORT_SYMBOL vmlinux 0xd0ca1083 pci_pme_active +EXPORT_SYMBOL vmlinux 0xd0ccc5e7 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0ded8e7 vfs_link +EXPORT_SYMBOL vmlinux 0xd0e579b4 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10ec2b7 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xd12f160d alloc_fcdev +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1b1f6cb vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xd1b26bda ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xd1b4d9bb padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e50cbe mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xd1e78d76 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xd1ea46da xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd20f3020 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd217e870 complete_request_key +EXPORT_SYMBOL vmlinux 0xd2317de0 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xd23d6faf eth_gro_complete +EXPORT_SYMBOL vmlinux 0xd2458960 vme_irq_free +EXPORT_SYMBOL vmlinux 0xd249dbe1 netif_napi_del +EXPORT_SYMBOL vmlinux 0xd24f8912 param_get_ushort +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27c288b param_get_invbool +EXPORT_SYMBOL vmlinux 0xd2893dc7 uart_register_driver +EXPORT_SYMBOL vmlinux 0xd2a21c27 __napi_complete +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2d3b418 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f17572 unload_nls +EXPORT_SYMBOL vmlinux 0xd3104129 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xd31159d1 param_set_byte +EXPORT_SYMBOL vmlinux 0xd32e1a9b scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xd35210a8 input_set_capability +EXPORT_SYMBOL vmlinux 0xd35aee2b fb_set_cmap +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd390ea21 set_cached_acl +EXPORT_SYMBOL vmlinux 0xd3923369 get_user_pages +EXPORT_SYMBOL vmlinux 0xd3a6ebb9 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3bc630b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xd3bfd36c vme_slot_num +EXPORT_SYMBOL vmlinux 0xd3dc0039 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd3f5690c user_revoke +EXPORT_SYMBOL vmlinux 0xd40cc922 init_net +EXPORT_SYMBOL vmlinux 0xd4528569 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd45ddbcd jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xd4732395 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xd4834abe get_agp_version +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4a3fabd tcf_action_exec +EXPORT_SYMBOL vmlinux 0xd4b9b128 tcp_close +EXPORT_SYMBOL vmlinux 0xd4c0751d inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xd4d1b4d4 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xd4fabb20 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xd50e69d8 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd512109c __sb_start_write +EXPORT_SYMBOL vmlinux 0xd534aa1f blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xd54b906d phy_disconnect +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd56fd735 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xd58b25ca xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5b67bc4 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xd5bb2db9 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xd5cfa3e2 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xd5f58c0f udp_add_offload +EXPORT_SYMBOL vmlinux 0xd5fef88f load_nls_default +EXPORT_SYMBOL vmlinux 0xd604d81f pcim_enable_device +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61cc0b3 update_devfreq +EXPORT_SYMBOL vmlinux 0xd62293e0 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62d15c9 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66cead3 serio_rescan +EXPORT_SYMBOL vmlinux 0xd677f3e4 padata_free +EXPORT_SYMBOL vmlinux 0xd680b443 bdi_init +EXPORT_SYMBOL vmlinux 0xd6837c03 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd689fd47 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xd68e1d1b _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xd6a474b7 kernel_bind +EXPORT_SYMBOL vmlinux 0xd6ad9caf new_inode +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b450d5 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xd6bc41fb ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xd6e30d66 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd709694c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xd71533df netlink_ack +EXPORT_SYMBOL vmlinux 0xd72c0797 input_reset_device +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7473121 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xd7572957 param_set_short +EXPORT_SYMBOL vmlinux 0xd75765ca ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd768bada xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd76b7270 seq_path +EXPORT_SYMBOL vmlinux 0xd7747da8 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd788c2d2 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xd7948d47 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xd7b377f8 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xd7bec58f bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7dff620 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd80e7217 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd81afde2 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd823c6ad xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xd82430b6 md_write_start +EXPORT_SYMBOL vmlinux 0xd8471f39 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xd8996962 mdiobus_free +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a73e86 param_set_bool +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8af4b30 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xd8b00f56 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xd8cbe857 nd_device_register +EXPORT_SYMBOL vmlinux 0xd8cd1d8a pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e2b0f5 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd90bb65e vga_client_register +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd932a648 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9980077 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd9a0d832 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xd9aff0d9 blk_register_region +EXPORT_SYMBOL vmlinux 0xd9bbbe2c kill_bdev +EXPORT_SYMBOL vmlinux 0xd9ccc89e ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9ea17b6 simple_readpage +EXPORT_SYMBOL vmlinux 0xda165a09 udp_ioctl +EXPORT_SYMBOL vmlinux 0xda3c9d63 i2c_transfer +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7db0fa blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9845f0 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xda9c9f15 scsi_init_io +EXPORT_SYMBOL vmlinux 0xdab37ebc file_path +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdace31d6 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf94491 blk_init_queue +EXPORT_SYMBOL vmlinux 0xdb025c7d devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xdb087227 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xdb1e1d56 netpoll_setup +EXPORT_SYMBOL vmlinux 0xdb27997c dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xdb3052a2 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3db4e4 nvm_erase_blk +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6c40ac __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xdb714284 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb9dd997 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xdba5c130 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xdbc6eddf input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdbcdc419 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xdbde0f8d fb_find_mode +EXPORT_SYMBOL vmlinux 0xdbf20a7c serio_open +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0c7707 dcb_setapp +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc245214 napi_get_frags +EXPORT_SYMBOL vmlinux 0xdc320e93 cdev_init +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5587a2 kill_anon_super +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdc722a81 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xdc7ab1e0 tcp_child_process +EXPORT_SYMBOL vmlinux 0xdc96d076 set_binfmt +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdce48c78 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xdd2bcddc ps2_init +EXPORT_SYMBOL vmlinux 0xdd3a0515 freeze_super +EXPORT_SYMBOL vmlinux 0xdd5aa3f5 fs_bio_set +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd6f25de vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xddb583f6 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xddcac21b __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xddd6c020 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xddf1c26d devm_clk_get +EXPORT_SYMBOL vmlinux 0xddf74fdf scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xddfc0b20 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xde00c9b5 d_add_ci +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde1fdd2e soft_cursor +EXPORT_SYMBOL vmlinux 0xde4b10bc ilookup5 +EXPORT_SYMBOL vmlinux 0xde4e3d3f bprm_change_interp +EXPORT_SYMBOL vmlinux 0xde4fb440 led_update_brightness +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6d2707 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xde724ad2 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xde7391d6 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0xde8cf0b2 bio_split +EXPORT_SYMBOL vmlinux 0xde8ea0af nd_iostat_end +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeac6a86 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdee601b0 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xdef61ca5 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0e9911 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4fd8bc qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf823d66 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xdf828bbd tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8de632 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa2e0ea __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xdfc182d0 cdrom_release +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfe715b5 sk_free +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe011007d path_noexec +EXPORT_SYMBOL vmlinux 0xe02dfbef pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xe039d0de tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xe04e58e8 __kernel_write +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0506ca2 vfs_statfs +EXPORT_SYMBOL vmlinux 0xe05db92e sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe064e6d3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe0722ce2 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xe0723cc0 tso_count_descs +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08d9ca2 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xe09999e5 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xe0a2f402 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b2d0ac tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe0b4e3b7 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xe0bbfa77 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xe0db698e nf_register_hook +EXPORT_SYMBOL vmlinux 0xe0e23fd2 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xe0fa9751 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe10f4831 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe118c49f sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xe119a1ef led_blink_set +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14e6547 netdev_update_features +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18939ea rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xe18c1165 seq_file_path +EXPORT_SYMBOL vmlinux 0xe1b3e8f1 truncate_setsize +EXPORT_SYMBOL vmlinux 0xe1cac194 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe20dd746 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe21918df vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xe234375e __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe2610b39 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xe26f1198 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xe287aa65 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xe290b0fb param_get_int +EXPORT_SYMBOL vmlinux 0xe296bccd pci_dev_driver +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b098e0 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xe2c4b639 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xe2d18cad jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xe2d30d24 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d9ca7d devm_memremap_pages +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f97899 eth_header_parse +EXPORT_SYMBOL vmlinux 0xe300135e simple_empty +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe3560016 sock_no_poll +EXPORT_SYMBOL vmlinux 0xe37bfa38 tty_register_device +EXPORT_SYMBOL vmlinux 0xe385a8de ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a98ba1 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3cc8902 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe3d11e2f input_unregister_device +EXPORT_SYMBOL vmlinux 0xe3d1b1a8 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e852ac dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xe3eb1fd8 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xe3ff623b twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xe4110068 tso_build_data +EXPORT_SYMBOL vmlinux 0xe43a307d iterate_supers_type +EXPORT_SYMBOL vmlinux 0xe445d18d vme_slave_request +EXPORT_SYMBOL vmlinux 0xe44b8da0 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xe4570330 get_acl +EXPORT_SYMBOL vmlinux 0xe457ba5d register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xe463d72f dma_common_mmap +EXPORT_SYMBOL vmlinux 0xe473abed __mutex_init +EXPORT_SYMBOL vmlinux 0xe475b173 locks_init_lock +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49ec4a4 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xe4af5e0d __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xe4b3c5d4 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4ecc510 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xe513eedd end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xe51705a1 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe541fe8d starget_for_each_device +EXPORT_SYMBOL vmlinux 0xe556b0f8 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xe560005e netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xe5672fb9 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe56d4601 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xe573ce7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57f6131 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5aed1eb d_delete +EXPORT_SYMBOL vmlinux 0xe5b506d6 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xe5b59120 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xe5bd6f37 inet6_bind +EXPORT_SYMBOL vmlinux 0xe5c149f2 genphy_config_init +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d06b2f vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xe5df05e7 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xe5dfbe42 freeze_bdev +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f537f7 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xe6010c04 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xe61015da sock_release +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe61ad784 mpage_readpage +EXPORT_SYMBOL vmlinux 0xe621ac8f is_nd_btt +EXPORT_SYMBOL vmlinux 0xe631ffa5 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe66133c0 bio_init +EXPORT_SYMBOL vmlinux 0xe68da428 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6d1f5f6 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xe6e7e386 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7008169 param_get_short +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71fbf1e __neigh_event_send +EXPORT_SYMBOL vmlinux 0xe72db7a5 sock_no_bind +EXPORT_SYMBOL vmlinux 0xe7663d25 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe7a33a89 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7abe121 iget5_locked +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e5e274 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe806c5ef __bforget +EXPORT_SYMBOL vmlinux 0xe816d3fc vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xe81c94b6 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe82058ab netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8245215 __f_setown +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe834af76 kern_path +EXPORT_SYMBOL vmlinux 0xe84f0ea2 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xe850faeb unregister_shrinker +EXPORT_SYMBOL vmlinux 0xe85a838f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xe874976b sock_init_data +EXPORT_SYMBOL vmlinux 0xe877a06b inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8908d14 sock_efree +EXPORT_SYMBOL vmlinux 0xe89366c0 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8af8941 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c03403 nonseekable_open +EXPORT_SYMBOL vmlinux 0xe8db8dd2 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe906adae neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91a2ca6 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xe9403eed mmc_register_driver +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe97a3d3b dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe9810128 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a2967c blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9c864b1 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xe9e026d9 bio_add_page +EXPORT_SYMBOL vmlinux 0xe9e448e7 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xe9f4d59f input_set_abs_params +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fff7d0 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea3be807 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xea3f725d _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xea3fa703 blk_end_request +EXPORT_SYMBOL vmlinux 0xea424872 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xea43ec5d sg_miter_next +EXPORT_SYMBOL vmlinux 0xea582baa sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xea5b577d end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xea5cfa4c jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xea5e6475 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xea6b06a9 generic_fillattr +EXPORT_SYMBOL vmlinux 0xea6ca7fd eth_validate_addr +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeaa7c5fe jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb05aa49 con_is_bound +EXPORT_SYMBOL vmlinux 0xeb0bedbe tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xeb34d330 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xeb357561 dst_release +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb399725 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb79a469 empty_aops +EXPORT_SYMBOL vmlinux 0xeb86bdd7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xeb9427d9 d_instantiate +EXPORT_SYMBOL vmlinux 0xeba00080 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xeba8d429 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xebbcafb0 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xebdbd8da tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xebe667d5 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xebf6721a vfs_create +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec041ce8 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xec05eb72 fb_get_mode +EXPORT_SYMBOL vmlinux 0xec2c4d52 get_disk +EXPORT_SYMBOL vmlinux 0xec2e8d3e blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xec41ec56 sync_blockdev +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec9f746c posix_lock_file +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecaf0830 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xecbff1e1 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xeccd5415 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xecd6d22b generic_write_end +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed007e5f get_task_io_context +EXPORT_SYMBOL vmlinux 0xed1243c7 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xed128199 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xed41756d scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xed456278 build_skb +EXPORT_SYMBOL vmlinux 0xed5563f0 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xed575213 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xed57e2fa generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xed588060 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed5c80a3 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xed75be78 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xed95d4ba simple_follow_link +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedad0ad6 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedcc4ad3 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xedcffd09 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xede66058 twl6040_power +EXPORT_SYMBOL vmlinux 0xedee687f pci_claim_resource +EXPORT_SYMBOL vmlinux 0xedf23a7a __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xee1222cf sock_wake_async +EXPORT_SYMBOL vmlinux 0xee126ef8 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xee1abe56 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xee28dcc3 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee5b41eb phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xee5b6a98 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xee72258c netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xee7c9ead sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xee7e3b27 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea422b2 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb0df51 dev_addr_del +EXPORT_SYMBOL vmlinux 0xeee2685e unregister_quota_format +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xef0a0160 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xef0bfb41 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xef0da631 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xef1a6a87 pci_clear_master +EXPORT_SYMBOL vmlinux 0xef71bbe7 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xef749539 i2c_use_client +EXPORT_SYMBOL vmlinux 0xef7bedb6 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xef84365d rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xef846351 param_get_charp +EXPORT_SYMBOL vmlinux 0xef87fa6f vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9d2db9 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xefac66a8 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xefb05d38 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xefb8cf22 dev_open +EXPORT_SYMBOL vmlinux 0xefc919d7 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde18df path_is_under +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe4223a compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xefea5093 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf03e846c tty_unregister_device +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf072770f vme_bus_num +EXPORT_SYMBOL vmlinux 0xf07893b6 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xf07c5333 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf089f2be may_umount +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09ceb41 save_mount_options +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b79a6c nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xf0ce9e92 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xf0d311a6 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xf0eaffce _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0fe1f14 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf110f53a nf_hook_slow +EXPORT_SYMBOL vmlinux 0xf1138c4e __inet_hash +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf1298902 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xf12b445f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xf1376e8b uart_get_divisor +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf14626e6 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf151a739 irq_to_desc +EXPORT_SYMBOL vmlinux 0xf16ef56f fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xf184de70 __free_pages +EXPORT_SYMBOL vmlinux 0xf1876c86 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1b2bc42 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e11197 dev_set_group +EXPORT_SYMBOL vmlinux 0xf1e6c575 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ff5c88 i2c_release_client +EXPORT_SYMBOL vmlinux 0xf2046892 __inode_permission +EXPORT_SYMBOL vmlinux 0xf20aeed0 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf241b7a0 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xf256d6a5 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf26eb6ed nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xf28b9361 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xf28d5d91 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2a54790 filp_close +EXPORT_SYMBOL vmlinux 0xf2ad609f pci_request_regions +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2ce3c89 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xf2e61552 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xf2fbce2f touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31c6294 pci_set_master +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3635e88 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf3663e70 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xf373ec59 __scm_destroy +EXPORT_SYMBOL vmlinux 0xf37813a5 page_readlink +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3aa1756 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf3adab89 blk_start_request +EXPORT_SYMBOL vmlinux 0xf3b1a013 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xf3b911ef bdi_register_dev +EXPORT_SYMBOL vmlinux 0xf3e3d8ea pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf410b7c9 inet_frags_init +EXPORT_SYMBOL vmlinux 0xf4151e07 param_array_ops +EXPORT_SYMBOL vmlinux 0xf41e467e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xf431b405 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf446a8cf vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xf44acba5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xf44ba01f nf_log_set +EXPORT_SYMBOL vmlinux 0xf44f7f51 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47f662b simple_setattr +EXPORT_SYMBOL vmlinux 0xf489785d generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bcd21f neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf4bd7b5d __register_chrdev +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ca1289 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf4dde58a bdi_destroy +EXPORT_SYMBOL vmlinux 0xf4e64dae revalidate_disk +EXPORT_SYMBOL vmlinux 0xf4eb9d14 sget +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4ff000c padata_do_serial +EXPORT_SYMBOL vmlinux 0xf50f3321 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xf5148405 dm_get_device +EXPORT_SYMBOL vmlinux 0xf51865b6 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51b53e7 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf533adea kill_pgrp +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5681dbf padata_add_cpu +EXPORT_SYMBOL vmlinux 0xf57aabd6 udp_poll +EXPORT_SYMBOL vmlinux 0xf5870c13 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a6b030 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xf5ac5994 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xf5ae5a27 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ddd56d tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xf5e594b4 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5edf5ca sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xf6191b8f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xf628b7eb sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64ba7fa tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xf64d93c2 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xf66afcca phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xf67306c1 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6a0297f default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf6ab1d3e dev_activate +EXPORT_SYMBOL vmlinux 0xf6ab234b jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xf6b3be66 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d5d896 dquot_acquire +EXPORT_SYMBOL vmlinux 0xf6e4ff0c end_page_writeback +EXPORT_SYMBOL vmlinux 0xf6e8f714 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fe06ed generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xf74adf18 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7635214 downgrade_write +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf77faf7f pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xf78e91f8 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xf791fdfb mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7a3d0d8 __register_binfmt +EXPORT_SYMBOL vmlinux 0xf7bc2ae6 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xf7bffddc del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7d0b431 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xf7d9e949 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xf7e23025 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xf7e8b5d4 d_find_alias +EXPORT_SYMBOL vmlinux 0xf7fb40d1 inet_put_port +EXPORT_SYMBOL vmlinux 0xf806ffea ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf819163a pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83632a3 __neigh_create +EXPORT_SYMBOL vmlinux 0xf86aecd2 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xf88b101a bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8b342ef kernel_connect +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d44939 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf9130f0d init_special_inode +EXPORT_SYMBOL vmlinux 0xf913e123 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xf915b174 genphy_read_status +EXPORT_SYMBOL vmlinux 0xf91f51d8 replace_mount_options +EXPORT_SYMBOL vmlinux 0xf93354fe scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf943122b pci_find_bus +EXPORT_SYMBOL vmlinux 0xf94c6dc8 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xf955de23 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xf9578336 mntput +EXPORT_SYMBOL vmlinux 0xf96e2590 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xf9848645 kfree_put_link +EXPORT_SYMBOL vmlinux 0xf9a30963 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9f5c20d devm_memremap +EXPORT_SYMBOL vmlinux 0xf9fe1515 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xf9fefa51 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xfa0c3892 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xfa4beebd tcp_prot +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa528923 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa75db52 dev_get_stats +EXPORT_SYMBOL vmlinux 0xfa7761f7 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xfa86a939 register_gifconf +EXPORT_SYMBOL vmlinux 0xfa90bc3c phy_init_eee +EXPORT_SYMBOL vmlinux 0xfa984210 lookup_bdev +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfacf051a devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb061507 set_device_ro +EXPORT_SYMBOL vmlinux 0xfb269aba bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xfb28de91 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xfb2a7ee6 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xfb2af86f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xfb2ef3e6 fb_set_var +EXPORT_SYMBOL vmlinux 0xfb37a872 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xfb37a8aa ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xfb54f551 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xfb561576 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5b1bf2 release_sock +EXPORT_SYMBOL vmlinux 0xfb691d2f gen_pool_free +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb896778 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb435b1 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xfbbb6458 install_exec_creds +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd78768 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0xfbe90eef xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc040ccd module_layout +EXPORT_SYMBOL vmlinux 0xfc1d35f2 rwsem_wake +EXPORT_SYMBOL vmlinux 0xfc204f9a tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xfc2a03c1 inode_permission +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc42816b udplite_prot +EXPORT_SYMBOL vmlinux 0xfc49bcb9 input_open_device +EXPORT_SYMBOL vmlinux 0xfc57daef dev_add_pack +EXPORT_SYMBOL vmlinux 0xfc6bd8c2 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xfc734327 queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xfc7d2f5a __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc285f6 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd04e34 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xfcd27ae3 registered_fb +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcdf39d8 input_free_device +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd08711f dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xfd0d6574 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xfd397eef alloc_disk_node +EXPORT_SYMBOL vmlinux 0xfd64b4e2 send_sig_info +EXPORT_SYMBOL vmlinux 0xfd6e2c23 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xfd901722 file_remove_privs +EXPORT_SYMBOL vmlinux 0xfd95e13d inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9a2754 start_tty +EXPORT_SYMBOL vmlinux 0xfd9b03e5 dquot_get_state +EXPORT_SYMBOL vmlinux 0xfd9b6b58 phy_print_status +EXPORT_SYMBOL vmlinux 0xfd9db14d try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xfdb3cd66 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc1b829 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xfdd74cd8 get_io_context +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe0737ed bioset_create +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe195fde sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xfe201404 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe27aede serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xfe31fa68 mount_subtree +EXPORT_SYMBOL vmlinux 0xfe38a5f3 pci_get_class +EXPORT_SYMBOL vmlinux 0xfe5d30e9 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7dc7c2 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe971e69 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeab9854 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xfec16c2d __find_get_block +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef87aa3 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xff028651 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2113d4 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xff4a5959 genlmsg_put +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff783c37 kill_fasync +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9d94a4 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffb9e22f cad_pid +EXPORT_SYMBOL vmlinux 0xffd455a2 abort_creds +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe9d94b clear_nlink +EXPORT_SYMBOL vmlinux 0xfff6d127 tty_port_open +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x13a65ecf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x17bf48dc camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x1a08ded1 camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x47129015 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7d54edc2 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7e87ef55 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8f185793 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9e8086dc camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x16061d06 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1636abdf __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1da0e256 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x31bbe42b camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x96e72d0f lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xda1bec3d lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xfced3c7d xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x5f36a422 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x66ca3389 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x96141692 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xad6ca815 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xf677f6dd glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0c5a8af6 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0ff3c26d serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x21400491 xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x24a22d21 lrw_serpent_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x79ff0b7a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9ae34b2f serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9b718480 lrw_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9e018632 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9f99663c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x19dc7881 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x5e752773 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x1fd77fb1 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x304809cf lrw_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x36e75c2d lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x61694b97 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8a7989de xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8d75ab44 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8e856922 twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00028989 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00e91d8a kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01ccd216 __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03020f45 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0464d09c kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x070f9719 __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07816c2a cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07c7360e kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x080be3ad __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x084ce879 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d4adf8b __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0de37d6d kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0e6067ed kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f525ca9 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f5ae13c kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x104cde18 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1130fe2a kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16c66dd2 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18aa9057 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1ad4849e kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c141b75 kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2127d5ad x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21564cf4 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21618329 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25677bef kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a271369 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2abeaca4 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c43870d kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2fc4569c kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x308c89bc kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x30fedabf kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x335b64aa kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33c70fd4 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34c6d0de kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34d61c28 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38595a2d kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38a27a3b kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c1aad40 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c2ccade kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41618a34 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41b21d85 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42d84766 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44046cb1 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45b76238 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46ccda42 handle_mmio_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x473c8759 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x475fb54a mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ae8d52a kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c06eb42 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f83766b kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50aa5c72 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53481ebe kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x536d6308 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a48cb7 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x551d88c2 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5715e354 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57beb349 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5920b940 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x594b9729 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c1e1b9b gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c43a220 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x638a7f91 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a05763 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67ba0352 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x682e341a kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68dfd3aa kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a154e39 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b9f46e6 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f75e3ea __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x713a1d8c kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73ae496a __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74617dd9 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75163773 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76a0363a kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c1d38b8 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e7567bc kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f24ea3d kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7fe2705a kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ff1ca84 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x803d6196 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80b134f0 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81b66009 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x830ea4f2 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ab88c0 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x850af064 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87bcc0b6 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8981eca5 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8abc76cd kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e57af45 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9070f243 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92022aa1 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x938ea7bd kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94992678 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x951d5ca0 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a6e3d16 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bd57189 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bfbc994 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c0efdd7 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c7fd704 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e76c11f kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f7256c4 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ff5bb49 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa249ca1e kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa2a0be42 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4d57013 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa8c460fa kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa9c03f2 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacb4d39a load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb071812b kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb116c094 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1cc6be5 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb420f327 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb774164e kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc0303bdf kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1adc2cb __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc257486b kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2c7ab18 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3301322 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc338cd54 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3e9d6a2 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc45dd8de kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc599bc18 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5b67d19 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7df6a60 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc83ac30f kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9a0593b kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb7c3c5d kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcbe321fa __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcdcf02a0 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce423575 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf0b30d5 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd2957dfa kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd602f971 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6e90fea kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd72c899b kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc5b87af kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd3688fe kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0044d94 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe22dba02 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5e38a38 kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea8c8fce kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb7c4103 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee0c43ff x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee3c413b kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee88adfc gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeebb6a44 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf124bc8a kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2312a76 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2f286c4 kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf41e94f5 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf492c592 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8f4642c __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfac3ae04 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbd95c91 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd9278e2 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd9e8385 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff2a3925 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff691655 kvm_set_msr +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x003ed004 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x01ec859f ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x53260af0 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x700d9f24 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x824b7a30 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x95983316 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfdc24790 ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x2f647480 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x4164342e af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x54a509de af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6d811ef1 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x9b0709b0 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa5d930a5 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xb7f8153b af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb843f328 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xebc6f095 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x871b3a9e async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x24a39b43 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x88e26a34 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x18b8462b async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xbae9ea71 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0f995f50 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x13106a8c __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2cc8e5ed async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x657cc96d async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x7b448a08 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xce6583b3 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x4699ddbf blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x90c9e9eb cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x93681bbf cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x624d2cf2 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xf6a0e05f crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x25369deb cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x64120a42 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x67eca1d4 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6cd3cc43 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8b12b12f cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x9b0e4d34 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa6c3d0ba cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xca365386 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xdf859826 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xfdb6403a cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xafd9d4f4 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x29f2209e shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2c9e2266 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3ac5ce25 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x536a212b shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x663c496f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8a1277a0 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x964fcf4a mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc7b9d6c9 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x6b4b0d9c crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xdba158a4 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xe0578059 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xe59ab05e crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xe499637d serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xfd294e77 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x93017a7d xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xc545ded9 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xc6a24610 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1138ea64 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2ae4de14 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x48bc1989 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x537bfd7b ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5dfc77c2 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x64631af9 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x777750dc ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7b57751d ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7bd6e65c ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ab8af71 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8c230961 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x900307db ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9ae48b6b ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9f8fd25b ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa2e346b6 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaa3a3a62 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5cf185b ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4af44fa ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf168ef4a ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf5bb51c9 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfb452529 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfb744d37 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0c73b026 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x213157c8 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x29eeb591 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2da1cf74 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4fa3fd76 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6a8aee08 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6ce7f8b7 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x75a1e530 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x90b3ae00 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbf6a92ae ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcc0f6735 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xccd1a827 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfc9117ea ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xe007e5a1 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x516737dd __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6700aee2 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8e664d37 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa7377765 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x103946d6 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e232261 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ed05fc8 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4350792e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4c618dfe bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61a2ef31 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6260175d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x646199cb bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b83411f bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x81e4cad4 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87a41b62 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88b54cec bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa94be299 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbdac55ba bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4025c56 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd9783703 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdb7d51f9 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xef888da9 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf178ff7a bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5313205 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5473490 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6b1482d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf7f568d3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb0e1100 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x35fa577e btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x66312930 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x986826a6 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa1973ebb btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xab067977 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe2f502e1 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0bf8a4c0 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1d788dd5 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x68913bf5 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x83fc05c2 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9043f939 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9803eab3 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xabbb89a7 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb117b555 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xbf7fdccb btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd7603f02 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf7d9aa35 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0168bb2f btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x045bcd39 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x26b385f7 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x55ad95e1 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x740dc894 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7757f95e btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7f0aaea1 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8f234dfd btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x90abd2dc btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbd5227e1 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd044dd51 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x49378bf4 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x7d39cd8f qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x9b164f6c btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xbd6b0ec9 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x30646eac ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x01ce01ba adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x032c2bd7 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0f32f141 adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x104d4c6e adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x18289070 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x24d3b9b7 adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2702817c adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2ce4b4dc adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2e253c40 adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x430e23d0 adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x45d28c52 adf_disable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4af45f06 adf_disable_vf2pf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4e2bcb39 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x67642a32 adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x69e3db64 adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6c7a020d adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6d2aa22f adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x87f2fc37 adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8c948e2b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8e845c91 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x968577b9 adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x975da3be adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa4153f83 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb2264564 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb41da947 adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb66dba3d adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc3347e42 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc5846318 adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd233662b adf_enable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd63cffc8 adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd7a3da0e adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe09d0572 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe3b1c3b2 adf_update_ring_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfc7d91e4 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfd090747 adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfe198ea0 adf_service_unregister +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x25642bc1 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x5c1afe0d register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x81038e9b unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x855a02fb alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xaa184c65 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbb78aa93 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd87f5a36 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8409abe8 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa6255755 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc9c3f91b dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xec9b4169 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf4047553 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x3af99288 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xbc347b92 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xebb012d7 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xb0491739 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xba449621 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xbe8f5d17 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xe37739e3 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x13a85b67 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x056c9ba0 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x134b11d5 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x215e2df1 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x33e25b68 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x39253b93 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x421c2501 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x424f63fd edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x486f56ae edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6c104492 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d09addc edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x714a4208 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x92c9501e edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa4c3f8a3 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xab7e3b10 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xae188697 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbbf4bba6 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbc09d9d6 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbfd1aafc edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc9fbf337 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe002ff2e edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xed96c058 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf489486a find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfa151cf9 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x81d75507 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xd3cc2686 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1240d45b fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1268fefb fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6134dedc fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6eeeb9b2 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x822eb58a fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x94319bd2 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x86926a16 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9cdff6b9 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe70027e8 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xeec9db59 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa4bfd641 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa4ceae8a drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe3019e91 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xcc6831fe ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe57d874b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xffaad538 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01cdc325 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b0f7a3f hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e1062b8 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0edda20a hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x196355e8 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2118ccc3 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d9f0dbb hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31aa0dd2 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40205dbd hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x478d07ed hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d2d34c2 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x518f465a hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x569c9c21 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x590481b2 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59dfe443 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5beaa7a4 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6069fda1 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6af57c57 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6b984ee4 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7d14412f hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7deb70aa hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x81a0e1eb hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8207dd99 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84c79b94 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8500c48c hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x891de7de hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a055636 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d0fc5c0 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa2df3056 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4c8e3e5 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf75e62b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc4dfe979 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcbf4bdcb hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf6a9c41e hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf721e9c4 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfab10255 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x957d76ec roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5cf1814c roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x77d67342 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x82fd0e68 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x91c36f76 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9c95f1f5 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc20e969a roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1bbdcf58 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1c8d4dad sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2c10275d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x483820b9 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9618acc8 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x98309867 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdec9aaf5 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe3909a3f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xeb9ce142 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x8317a5c4 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x06545c71 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x201ef534 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x219c54e8 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3eda37c5 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ba74aeb hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4da36361 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x64142146 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x64b847d6 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x66f4889b hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6b5a2bc1 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x75a6af68 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x89b3bcb5 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8dbc01de hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9f178ac7 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb7f30679 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd152d639 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfbb2c622 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x10a299db vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1139f540 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1a25cd8a hv_do_hypercall +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1b49612d vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x25a0a3d2 vmbus_cpu_number_to_vp_number +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2b79e4b8 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2f2895cf vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x53f8605e vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5d192325 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x66d8b3ae __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6b69460b vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x81e65df2 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa2708eb1 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc37d01ce vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xceb47440 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd28dbbbc vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe6a2cd6f vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x7f8b79ec adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa26f6f8a adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xff25e10a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x13659532 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4937ac03 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x53f9d9dd pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6db96a7b pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6ea87624 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x78140816 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x78ef6fd5 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x89178229 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa5ea5614 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa690c8f8 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcd42a7ad pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd030cfaa pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd0f0fb9e pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf13be5c0 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf61e5518 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x11f6ba9e intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x38cc56d9 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3c9637af intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3fd588ea intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x639f38bc intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x95049aea intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xa93cecd3 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x03a1b6f6 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x13f88b46 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3bb10edc stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x724334f3 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x925ac332 stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x18c6dbff i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7389d206 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7ea7d25b i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9654da4a i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb6bd4f9 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0xd5bda424 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x077e3689 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xedced18a i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb93b3f9a i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xf6935e02 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x1f6447e1 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x2f047b55 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x697ee3f9 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0ec5cc5f ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4ec5e54c ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6ac8ff0d ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7936afee ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9be81ce7 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbbbc0948 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdfedc4eb ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xea1e6987 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfcc718f9 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x00368cd7 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x56d1d594 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x3f9221db bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xa8fec0ab bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xdd2604b9 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x002e467d adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2888ba8c adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x29914be0 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3cefc67e adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x460852c0 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x662fffd8 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x933be77a adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa4b862a5 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbdcc4c13 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcd3d7144 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdf8989c1 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe8ac227c adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08a98b9a devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1cd9c5cb iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1db2b8e2 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2359200a devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x340d2b4f iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x34c612bb iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3af7e212 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x42433948 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x466670eb devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x52fdab71 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54c5565a iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76804e97 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x783bd4a1 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8061fa44 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81e8677a iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88075a07 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8de86e62 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x93f1ac19 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa20a0f12 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa69dbb01 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3caa388 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc3c3ccc3 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc74755f8 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd10e6d51 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd1aadead devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd43f6836 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc20bc43 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe2c45164 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8909a68 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xec2efa25 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf725070a iio_channel_release +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xce8eb239 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x745d7c52 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x26eabb3f cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x3bee99f8 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xdba5de17 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x16b6dfea cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x3f0a0e48 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4c0a3690 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc5433587 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf7332de3 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0dba28a4 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x271bdacc tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x7a690466 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xa5c2c3bc tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0fa72709 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2d986495 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3d13fc53 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x49cc0c77 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5472112d wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x61d06ca6 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6add042c wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6b7817fd wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6d9f643b wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x749a0233 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x85660ce9 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9f968cc2 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1e62be76 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4553df70 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x60c7923c ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6b6d5891 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7a64c217 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x80a745e3 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb0176d2d ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd966bc43 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfc7492f4 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x12d184db gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x168b9bca gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1c8cf70d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1df8bce6 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2416cff7 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a899a50 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4818ffff gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4fcc6895 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x565cafef gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6651a35b gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6cf63299 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x71821feb gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x75e1faef gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8e075d1a gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe50a6e3c gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe5d67900 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf65e9937 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x08fa28dd led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1d0f525e led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x440c28e0 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa57533d6 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcc0566ac led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcdfd0a41 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1f74f137 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2655527a lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x28592049 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2f35af1d lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7deff5d0 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9642008d lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xaa272c57 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb6de1bfd lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc6e7d93a lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd27945cb lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf6cc84c9 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0e5014c9 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x12fef6c8 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x28939cd7 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5f476aa1 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6c98f5b4 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x792db381 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7cb459e0 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7f293f1d mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa12280ec mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc4631195 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc52b9a8f mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc6660c35 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9da0a3a chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x22a1cd17 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x46858b52 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x75fe4f26 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7e3778f0 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x89e8c713 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcadf9edb dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd076a0ff dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xec58e835 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf473d642 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x09a171cb dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0c344e67 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3f276ca2 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4adcb01b dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7d08e104 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa0d9f288 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe4d00612 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf60017ba dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x803164b2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd0903d01 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0a31fabe dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1cf17b4a dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7030124c dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8fd1aaa3 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc0eccb57 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd81f1c97 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe1fdcd7f dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1be03b66 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2177ce71 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x35fe3895 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3f301767 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x857c757a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9ff68133 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc6361ef2 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc77d189d saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdcbf43c1 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf0e5b00a saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2a97f9ea saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x54a8b1a8 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5d144f84 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad02cd60 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad212dec saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb5cfac99 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb9390cde saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0bab3485 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0ef0389d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13952cc1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x29d185e4 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2c642076 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3226ab9a smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x35205fa8 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x494e9bdf sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4974f670 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5b32e43c smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6fa2ab62 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x88bd07e4 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x97536a7c smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9da4e0be smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc1e8d710 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc9d0cd50 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf9aad777 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xdeba285c as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xc2fd637e cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xa01329db tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x03ca29b2 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x12a657b1 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x244b4129 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x25dc122a media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x2e591cda media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x3d038fa2 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x3d7db359 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x3f5d1df4 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x4da4e85a media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4f5a7f9e __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x504199fc media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x9a0afd26 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x9b47542a media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xa5eafd01 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xb7c0610b media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xba6d1b24 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xd2b4265f media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xdc0ba441 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xfccc35fa cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0462dffd mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x14df1846 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x35a0a26b mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x42ffeadd mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4fdad565 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x51234ffe mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x555058d3 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x60e8a1ad mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6b9c10a9 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x75e56b72 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x772fcf86 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7836ee4d mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x82a91f42 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8b751317 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9c5085d9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xba5c05a1 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe78b083 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd46d13d8 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdad18f8e mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x020e66c6 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0c3b23c0 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x148f776b saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1504ca77 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2c76d0e7 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x45711b07 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x46be1414 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x52d71421 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x66c41e5e saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8e0badf6 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x906fa522 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa1210157 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa4675e83 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb7c2319a saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc45e31a3 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc7685bc3 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf129158d saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf2eb4e0e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf4e35bc9 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x056d32fe ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2abc1902 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x42873dd0 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x638c55cc ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7594a3a4 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x77f726ad ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x98a6b0cb ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xa35ecca4 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xf10b405e radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00cdbab2 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0239eba6 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x30bf5ab0 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x33c15045 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c163e3 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4b9c0a59 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5e4a46ec rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69e4eb31 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7051c8be rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7fc77021 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x80e9c53d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x88694670 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8980c895 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb99c1e67 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc28901b1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0540808 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe14b6e4e rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xed2eaf06 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf3228fe8 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xe5227517 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x02064077 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x096d0d1e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xad751472 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xf62d99be tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x477fe11e tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0d03e0ac tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xe93c1435 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x03f7686f tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x788eee2c tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x82d02381 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6b5e89df tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9c414adc tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x6976ebd3 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x05d2c5c3 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0d234b23 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x13975fb5 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x263579dd cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x26d7640b cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x273b1b7a cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38189083 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x41b40ee7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x46272a3b cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x48d41791 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4b61f89d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5dc88399 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x60f41796 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x91e5d3a2 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96aa14f4 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa254defa cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa2db9d8f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe7cf3fea cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf1e1e35e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfbc955ae cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xb84abe96 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x24660fab mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x310c2d1a em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x38e36cfd em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53014083 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5beef751 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5ed9f25f em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x616c1434 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6a5da9e9 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9716ee08 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9f87bee0 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa5fd4af3 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb13c029f em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb6707870 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbd89f0b5 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc89a7f23 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd6b837ed em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdf45fd44 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe7f3e301 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf15abb43 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x14062666 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x36431dfd tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xad7dca5d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe6a40d8b tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x49292c47 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5af27106 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x8388ca34 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9e3abd7f v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xcecbe45f v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe91be805 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3bbbc138 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x8957fc1e v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0680f8e1 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x098bd191 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x19565f0b v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x21f62e38 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x37e7d548 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4b78cd7a v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4f84f25d v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x523cdff9 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x540f9641 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x572a5dee v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5a54e598 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5fb7f34a v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6a753b65 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x756fb649 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7a948350 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7dadbe0a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7ecb457f v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb6bc7949 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbc0c23ac v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc3713422 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xceb58c19 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcf3d9519 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd1b5e99d v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdaa0c930 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3e29d03 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe50b060f v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed37e4a2 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x00aa258a videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0a1c8cc9 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f2a3302 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1e275938 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3e285dbf videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x43434fd9 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x48e1bc5b videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x563de793 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x660208ca videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7471d734 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x820a56a2 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9532a972 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c112a10 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa1cab27b __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaab5a810 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xad2b6fe7 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbb3142e9 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc1e9d72c videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2cac635 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd046c349 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd6df0ac0 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd70692f8 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf877f1cb videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfd60aee8 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x65548d1c videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x96b49a7f videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9a6aeb6a videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfbdff334 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x53602511 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9bc88d06 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe837852c videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x13198a39 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19bc93c6 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x22bfe1bd vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2764333b vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3239958d vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x446ef828 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x47303d72 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4dbbda53 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5ffa08c8 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7a5c9eae vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x80c6a38f vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8e924607 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb5955627 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbfc3bfb2 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc2dbc4e9 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc689908f vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xccdb852e vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe2b183a1 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x22acd61c vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xea22073f vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xa8ac2c8b vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xdb11cdac vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa3e9a98b vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x02458660 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x05a4ea81 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x05bb25fc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x09455af8 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0cdc313a vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x10a7bebc vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1eafad65 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3ce94ae4 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x40c8864f vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4550a608 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x47eb09f9 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x48cbd8ce vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x542dff67 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5873e0a4 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5c5d672a vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5e4200d9 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x63874928 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6449247c vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7cf0053f vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x84063fd6 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x847a86c1 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x887f58ba vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8c607bba vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb2bfa581 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc2552457 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xce3c8344 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd1cd6805 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd8983698 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd97b2e8e vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdb7daa1a vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xebd33da3 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf740853f vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xa6668433 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0117fe6a v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x20c2c710 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32907be8 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x39284e10 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x40d7f5f1 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46272cd4 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x473e6112 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x48b30d37 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5f1d889e v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x64668cb9 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a11db22 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6c16b9e5 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6df762d7 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8edc2771 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94fb702e v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c827b4c v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fe14044 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb46f7918 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc346b489 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc34b388f v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd1d7f6f3 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5e85520 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd8f10e48 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe08755b7 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe458d385 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xed0a69bd v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedeac021 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2280c4f v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3144a1f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb2eaec09 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd3c87f9f pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xfef11773 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x0bdb0e6c da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x11143c8a da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x40236b07 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x45336911 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6f759d7b da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbb389190 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc7e54064 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x04348039 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x4e4bcf0b intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x86fd403b intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa14b6e42 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xbd6e60ca intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x23223144 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4b112d82 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5a915a81 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5a9e7129 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb02c2d34 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbd82c139 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd82b2a52 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfef91083 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x04003875 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4f15a0ed lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8324c394 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4b40da8d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53d42e80 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x64978776 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x76c98981 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x89b219ea lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9c805e74 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9e83f973 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x08f1dc55 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6657f3e5 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa94d61c5 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x94fee9b8 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb137871c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb4a6c5bf mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc64b57f0 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xca4c28fe mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd444a298 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x07b48685 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2b204c06 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2e784ae4 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3f1028d3 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x64605e73 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x74f7250b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa20b1197 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa815b955 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb52bfc1c pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb5792a6e pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb62817de pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x73465993 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf913f835 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5ce23437 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x95069fef pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb2af80db pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc5b52713 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfd8fb747 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x003e87d6 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2cf4d28a rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3247369b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3296a11d rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x64b8a6b1 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6cf449fa rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x98377d87 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9903f4e5 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa2e3aa42 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5f00b48 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa96f14eb rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaab09829 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xae77a462 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb058073d rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb93a7981 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbe65f771 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc2d27c05 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc918ac5e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd547a0b7 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd78fc6d1 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd7937218 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdf0d0169 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf2df2ec9 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf7a82bd7 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x04d6a403 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x09318f2a rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0b7cdf02 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2e5e08e5 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x57dbca80 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5cd1c65b rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x62f9e47d rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x77a5760d rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7d4ed97d rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7e638675 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7f4858a4 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8ba1dcfa rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe26aeddb rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x024ae34d si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x141fd912 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x193f6f87 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e22494d si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x284c0af4 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2e649690 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3488ca83 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3904e25d si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3908b099 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3bad3a75 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4138b9fe si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4663845c si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e246f57 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x50a8c640 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x549e31de si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5f29db9e si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x696fe2f0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7986c5f4 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x81bca453 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82d766bb si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84c50109 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x872d32c7 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8fbbcc35 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ca54af9 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xacfc5b3e si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbbdfe269 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbff3e29c si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4a14364 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4f39c5a si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9f06dad si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcb1d89e9 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xebfc4ee4 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeeeeea08 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7e13e94 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x291ca1c7 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5012e4da sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8504a2a1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xde7b67e8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfa602458 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x5304cd9d am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x66a41f6c am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa2703283 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfa9b7076 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x625c5a52 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x74c34168 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa085a4eb tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb18174f8 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x0a4fd75b ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x065b0e4a cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9fe15384 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xbaef2324 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xeaf34f2a cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x179d0354 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4b0c290d enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x52af12ef enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x653c8529 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7d50edab enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x87040eb7 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa912c540 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe4a593fe enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x185f118f lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1987fa6c lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2f914e40 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x915db591 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbf539225 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc4cf1f22 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdd042f17 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe9d51ed6 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0634ab5f mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0c523d14 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0f88efd9 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x100c3834 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x31c4f32e mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x31fffed0 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x33984fc7 mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3d399a94 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x41cc8c7e mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x43088fc2 mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5b54b445 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5f8fa35e mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x635f3e77 mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7bbc7493 mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7c10007a mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7d7c9374 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8be86ebd mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x91b2452f mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x97b8d2b1 mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa54b6878 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa93d481d mei_cldev_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcbc85cc3 mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe433f7c6 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe4cab6ec mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xea7e8303 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xed26ec65 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x3050fec1 cosm_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x5d640b98 cosm_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x6950045a cosm_find_cdev_by_id +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x762c2c46 cosm_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xeaf7aef6 cosm_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x08aaed5f mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x4515e3fb mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xe1d2ea9e mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xfc57bf57 mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x733abb86 scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x9c3d3729 scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xdc0562f8 scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xecbef2d6 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x035cdb8e scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0e4efcdf scif_readfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x11838638 scif_pin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x11c4223e scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x1b5a7e61 scif_vreadfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31666654 scif_unpin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x39dc91b4 scif_poll +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x488442cf scif_fence_mark +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x57730169 scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x581e4162 scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x597c367f scif_client_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x67156220 scif_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x88d89420 scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xa99646e3 scif_listen +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xbaefd498 scif_vwriteto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xbc1dd1f8 scif_put_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xca16fabe scif_get_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xcb7b1928 scif_fence_signal +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xcd6d6ab7 scif_fence_wait +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xce766796 scif_writeto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xd66e5e7d scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xeaf5cac6 scif_register_pinned_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xecd7157f scif_client_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xfaef50ef scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xfed24b81 scif_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3e03c4f3 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xb3a9e586 vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xf3d2e864 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x03576306 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0ded4291 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x20c86de1 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2f3eba71 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6595c7d0 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6ffc9ce5 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7113844f sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x778f8362 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8ae281b2 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaf078946 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xafb7ed37 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb09af918 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc135eb95 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf20f28fc sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0ba9986c sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1bf5462a sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x22a8102e sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2769d8a5 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3e9f8828 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4b0c94ea sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x706d6277 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x712e4e4d sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb75f14ea sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x40a2f3e4 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7f8bd60c cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8295f39a cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2f1fafb1 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x514de461 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa2b42be7 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf1d8227f cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x09a3ae5d cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0a340c44 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x459eada1 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0b0c1865 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0fc44111 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f9060d4 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x28bb2bdf put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2bd5abfa mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x371f7c62 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c3484f6 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47bbdea0 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x488bba88 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x50aa65fb __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6213de88 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c461000 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d703243 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8211f180 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e0555f5 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x91f1cea3 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x94823313 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9706aed1 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9944cb04 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b7e84dd unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9ffab41c mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa0e781b0 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa22a6da6 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa7e8a5ea mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xace9b8f8 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb13d1bc8 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb76e6c4f mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd506bea mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf69a898 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1b344c6 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc23c3b25 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcdcfdca4 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcefac82d mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd860aef3 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0db5884 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0f268d7 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8ecedb1 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeaa28e69 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef47b1ee mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0aa4849 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf42ddd0b mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf8e0a7d5 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1ee6fcab register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2af48f6f mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2d8e1406 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x5f1a0706 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6986ba95 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x18be6228 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x70acce8d nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xee73ef73 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa3d0b213 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa889f733 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xcc8e4d79 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x186a9eb1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1dcb0401 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x22371359 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x44319b44 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x449e6d1f ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x467772ff ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ce9e281 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e031fda ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9a90a5a4 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc28b3774 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc5e89bfe ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc7552e8c ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdb8009ed ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf9ea2c60 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xd22c56bd arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xd473386e devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0deea228 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1ee3451d free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3d5196d5 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x929861f1 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc8c82c6c c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd7e918d9 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0acd5b55 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x132f7441 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x17c92c19 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x19d395d0 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1dffce48 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1f0902eb alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1f6debb9 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25c2defd alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x35e205e4 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6580e347 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6737bc3f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x884c13c9 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa4de35d5 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb216420a can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb9e871f8 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xba313726 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcabefee9 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcd0252d4 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x29a149ea free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6a1a62a6 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8f11786f register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9605bf3d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x63962e51 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6aef81cb alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x74bce4d5 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xee1b5f80 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0192efe2 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02f51be1 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x034302f0 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x049dbbd8 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05ba466a mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x066ccab7 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x079df05b mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x096950db mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d7752eb mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d88ed87 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10b6c008 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13d9db68 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19cb2b01 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a25ecd9 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e54eb92 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2108675d mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2393d4dc mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24fbe60f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25b1a2a2 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29a36e71 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b9fc36a mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d1cf427 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e2fd987 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e372994 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30d99ef0 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31b7a602 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3241fb7c mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32f7db9b mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3304b39c mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37160a58 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37ae66d2 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3874b6b2 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39780fdf mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a57622b mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a97f012 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b11027f mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bc7b178 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c2dcbfe mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3de66ede mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e1b2c62 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44d4ec44 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ea655ad mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f07abae mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f2c3e09 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x523c479e mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56ae4102 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x579a053c mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5993b9fd mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59fc3734 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e7e99ea mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6029d50a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x642eee5a mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x652a5cc3 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66e35426 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6aac94e4 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7557163a mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7687b354 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x792f6982 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c99c927 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81e6bacc mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x827684ed mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83b493a1 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x877a6ac0 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x889e4bf4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89d9adb9 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b790b42 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x907bd952 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x911ffdeb mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91ac4d4d mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92b10827 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93a7fe46 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x952450f4 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9615fad3 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98d2ebc9 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a71d8ba mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cfac7e6 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ec957f3 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ff08bba mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa01212d7 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1af89d2 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2eca839 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa512357f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa627f3f6 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb33add3b mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3712978 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3c47761 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3d77f58 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb476a98e mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5c140ea mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6076f67 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb608d560 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc02f2237 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0303ac6 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc05a00d9 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2a02e86 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc37a9494 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4322d50 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc64ddadb mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6da34c8 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7f1cf68 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8670a46 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8b9fb98 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8e51e65 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb9e070d mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd5889ac mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd65736fb mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd756f9ba mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7a104ca __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8d0abbb mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda72b632 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf4e0438 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4225983 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4a68ce1 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe602ad58 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe792c26b mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8d1f5ae mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecabb2c1 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefa9473e mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3b94d9e mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7920b8c mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcd474a3 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfce8c572 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff6f4403 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff96f339 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04dd7835 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12a3c6b3 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13fb89fd mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x144f9114 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1aa6b22d mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2455e576 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24878440 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24effa26 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26f319ce mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30a24617 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3125fa7c mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x350fb058 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3685197e mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3eab50b4 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x431bffb7 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x467c5c0b mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48253b7f mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c27e8c7 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56810e76 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58e9bfe3 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f5b3e26 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60288c40 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64b86373 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67111a32 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69d52820 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x771f158a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x788b456d mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ed30699 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8de3ee3a mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92e1ec8c mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa246a5de mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa889f2a2 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa93bcdd7 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaad7c935 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad1b4d53 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6d873a0 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb21edd5 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5d45148 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc99b4c39 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1ea36ac mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb878d55 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde4184ba mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee7717f5 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf75a893b mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8e768e0 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x54de37f1 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0f36326e stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1ead93fd stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc930040b stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xca862272 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x05e6aa55 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8e5e7e8e stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xced1424e stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xfa0fc232 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1c84076f cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3257e14b cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4f82ceb5 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x57a4574c cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5a750f1b cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x694628c2 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x733261da cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x846f41a7 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e88afd5 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x97fc9034 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcf654123 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe02d3332 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe5fa713b cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf24ab223 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfd9f39a6 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x1a67835a geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/geneve 0xab61331f geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0e9e0496 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0f42f6e6 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1fc484c0 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc41c9f8d macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x75212e58 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1b781fba bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x32d094e9 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x40ecc311 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5a6d8386 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6d24b354 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x93c7e8a5 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9b431831 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc8640d0e bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd5c7ea73 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe33a52ba bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x209c1ff5 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4328ba0f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb08391a5 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xfd26200c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x17ef0983 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1de8caea cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2edacf3e cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x40cfb3d0 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9b9faa9e cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xca031bdb cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd5de9274 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdcbbad80 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xecebe08e cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x055aaf14 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2531f322 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4bbc7f95 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x52df5b8f generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x94797ed0 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf1e2d01d rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0fc17a66 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2907af4e usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2da5049b usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x330cfb05 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x46718a2a usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x49fd256c usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5312c635 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5a15eaa0 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x666dba58 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a9928d7 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6e341704 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x85586466 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8964655a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8bce7baf usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e444d58 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x926ff715 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x94c38d47 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x967f08b9 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xafdafa7b usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb76def78 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xba86af95 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe18a7d1 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbfd088f3 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc69d9424 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc713cda9 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcef1c4b3 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfc451b1 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd07c5b63 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd24e9228 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1ca8163 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1ed6946 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb13d34b usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5198e51e vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd3f4851b vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x02cba4b6 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2e223b29 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x32a1cc97 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3fefe51f i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x46569a78 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5310acc2 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x58f14acc i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x703bb367 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x728a9d75 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7fb3466d i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0c3b3d9 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa295b19a i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xac148945 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaf6e3ca9 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc8dfcb1e i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe31fd30d i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2c9b72ae cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5a9ee150 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7f8de665 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf1ba3447 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xaab18663 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x20324d52 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x68d76f96 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9ab70727 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc6ecd9e0 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xde6acfb3 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ab8de93 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0c1c6f41 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0cd25516 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x122eeee6 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x16ec88cb iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1eb449ca iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x242492f3 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47ba337f iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x512a2413 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x58b75734 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5bb67271 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5ee5ab54 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5f5dcfd6 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x65330f9e iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x873a7bfa iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9503e83c iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaac11e52 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xad80cd61 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xae6e42ce iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb87a76f9 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbb5a0e5b __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbd60e9c8 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4a8fc91 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc53496fc iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd1af9ae __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcecb2652 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd205d521 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd49b4b3e iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xddbdde30 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17cc2699 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x39524fd3 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x47c6a775 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4891e86c lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4fe950f5 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9181a02d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x94c867c7 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9578a2d8 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd64780c1 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd861ab4e lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe0105dfd lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe25e613e lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe4a9c328 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeee0e0c8 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf07eae44 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf22f4b4a lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x052cdb13 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x20595fd0 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2e515a88 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4136e12c lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4ad4e7d8 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7b632828 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7ba365e7 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe53231f6 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0dd9db9d mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x13def72f mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x165be935 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18cf65f7 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x25134dca mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3ac05d7a mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48290223 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4b1251bd mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5de9682f mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x630dae40 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x64c6738e mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6938a42b mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x74463c22 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7e69f62a mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7e840b9c mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x81cade1c mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x931f2006 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb1f703cd mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcf0a6a26 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x259e99d2 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x96247881 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9e2dc1b2 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa7bf60c7 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xad5cacbc p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbfc0d2cc p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc42ab0d5 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd531f719 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf0db9d90 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0195322b dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3d2d2fa rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb559626d dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd1071736 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x017343b5 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x08c2865b rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0bdf8c34 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0fd01e02 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x152d5f17 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x23ba700d rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2d340680 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2f594450 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x399e27f2 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x50a5733d rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5ea2da15 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6b6583df rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x773eaac5 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x799fdcc0 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7b122e76 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9711b782 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xae60d0c2 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb81a3f9e rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xba7eb0d7 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcc6fa8a4 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd052c6c7 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd3aeedb0 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe8a578f2 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xec6eaa2f rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xee73920f rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfa06fa71 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfe436451 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x01630189 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x298447e3 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x42970225 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x49f379de rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4df4d2f9 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x528c8408 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x95493563 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97027a52 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9c1c7250 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb9f20f3b rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xba4756e9 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc434c007 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc65b9ce4 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xca984368 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd04c2515 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd1e6cef5 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd7ae988b read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x15576068 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x3347576a rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd127f1fe rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd4c393dd rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x005d4745 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x015e6848 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x09b09558 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b6a34a5 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0feb8fc8 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x169449f0 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16bbb648 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x257b0184 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x278e705f rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2804fcb8 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ecc4da1 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x51adad6e rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b7aa3d7 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b972647 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x76063f91 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b1aef67 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e8093c3 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7f55c778 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x862e06c7 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x92a3a606 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96560620 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7d02a55 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb396c31c rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb5078734 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9f880e1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbc923c3e rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc381b6a7 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc5fceaef rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcf409712 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdaf5edd5 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe3b5c36c rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9ab6531 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9fe239c rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xee64db13 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf413fb57 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf47f6b78 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5639ffe rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdb3cb17 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x18a4cb61 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x18cd586a rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x206e54f6 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x386a9761 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4db05a27 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x691f313a rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6d6ea4e5 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x88ce1b5e rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8a5c8462 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x98fae638 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x99c4baa1 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe9cb0b54 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0ff4edf rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x112581d2 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x12b88852 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2096003c rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2516552c rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31712759 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31b6ff8f rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x375c81fc rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b3e0248 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40407123 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40860543 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x415f62ac rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x561f5143 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x681055fc rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c9c1a46 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6e40c66f rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7729fb98 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77f125a1 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9630d400 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9dad0b3e rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1daf202 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1eca7e5 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2fc75b0 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa792ae6f rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf781964 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfd8329e rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2f2a40c rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc33afac9 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc36fa360 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6196411 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc693a743 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb440ffc rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce989b8d rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1465747 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5ff7631 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9eb92b1 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdadeb024 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec04c4bd rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeca93de3 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed9ca587 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee81254d rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1face7e rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf23eb317 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf783b2fe rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf934b0bc rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfd3ec619 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfda478e4 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1278ad10 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x26bb61f1 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7fee8ef9 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb173e226 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf233bf7e rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x00bf6b91 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0b0572e1 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7be587b4 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa02985f5 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3472babb rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3cbf7ee7 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x75397b8a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7717af59 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f00d368 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x846e3b2c rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x84c09ef3 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x90bb7b0e rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1e741e1 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc286cdbf rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcc1748ee rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xce3448ed rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcf45ee70 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xda43188e rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf0f4be7e rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf7d8bdd4 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x9577668c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa2e1e1f4 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd41d8e35 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0099a018 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00c8dd75 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x02a5c611 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0598af9b wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07a3a1d7 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x108e66d3 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12db09ab wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18a13479 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21856119 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2cc0bd3f wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36c4d25e wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3bd54608 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3bf8d1bf wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c6bf8f6 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3f43e192 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x432d3326 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48db93e3 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f53ba0c wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50b2b005 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53247a06 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5cef1327 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5fa8f00a wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c400658 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7a762371 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b3ca537 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e00fde5 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x80b6f2d7 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x846c73f0 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a5d4cc9 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91b8bc5b wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa046fb32 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa2f3c7f2 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb28985db wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb95b181c wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbac674fa wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc3e632a8 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcaf5ae4e wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcea7d8ce wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8e8ee2c wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdcfde4ab wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfbf3fdd wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe8a1b193 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1b62cc5 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd3744d2 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x0a30698a nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x1957747f nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x1dc0cb65 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x15017935 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x50ecc4fa nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8bb0edc1 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xdffc17d6 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x47b22b68 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4f25fa51 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x85eab1cb st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8dabe7a0 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb06940cd st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbcfa71ea st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xca4504a6 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd87e9e18 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x81349cb2 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x848089ce ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xec11cb54 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x45177166 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x84de8c78 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa44bfdb8 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xb40ea149 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc8e2a56b devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xed8b3166 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x182e54d7 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xaa858634 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xbfd09321 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xee241a87 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x1d127dd5 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x4bbd97d5 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0xa6c87106 intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x111aafa7 telemetry_set_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1bbf0813 telemetry_add_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1be25432 telemetry_get_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x4294042b telemetry_get_eventconfig +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x4cb51f18 telemetry_pltconfig_valid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x50c1c0a8 telemetry_get_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5847f501 telemetry_clear_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x611fd2a7 telemetry_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x64c6a83e telemetry_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x73dcd24f telemetry_raw_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x82bb2dbe telemetry_get_evtname +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xb78846ce telemetry_set_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbb9a2726 telemetry_reset_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbf0d3d83 telemetry_set_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xcbdc93cf telemetry_update_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe7eb1528 telemetry_raw_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x561c634a wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x876d29f1 wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xda29f8b0 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xfb882fb7 wmi_query_block +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x94b928fe pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa669dbf9 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd1eff939 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x2c766d19 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x4b3fbc77 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x8c5e6b4c pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xe0dc6d87 pwm_lpss_bxt_info +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0591225f mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x09fac48d mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8ffeea91 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x371d5c4d wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa80c960d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xaabf98d1 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xafadfa51 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdccfe83f wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf8586cc6 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xabdcb8e5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x036dcdc6 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x062dc816 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x094f757e cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b6a0ebe cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bbb7d24 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0fd7a618 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28c1b12f cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x330e558b cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39ab8e52 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4815e35e cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4edfb08b cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f1e2cc7 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f6538ae cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60001a44 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6687d0dc cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6c7d6400 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f1c753c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70495054 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7195585e cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x762e3541 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8d744ca8 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e28d0a3 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95b0bc36 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97e59004 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98fab22d cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9c568a80 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e25c05d cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa77c00c0 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7e93818 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa91cfaf cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf89b06b cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb7e9588 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbda54eb4 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbf88f2f9 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0db7af9 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0ed10cd cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3afde6c cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc5d94d94 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc844022b cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc8e0e674 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd27573d4 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4c8b73c cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd6b95a8c cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1ff4812 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe440c2f7 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xebfd6048 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x01e046f3 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x283db559 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x389fe36a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5c16d1fd fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x69674922 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x70439359 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e61ad61 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x86bc9e82 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x91884f35 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa6479f15 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaa8a0c29 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbb02fdb7 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd32a5540 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdabcfc86 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe2a266c9 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfc8c831c fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x15a7297d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4bb735e0 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4cadae54 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x562f0de0 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x79b4525e iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xab0a18ca iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e2524a7 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x103fc888 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26dc9d3a iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35c176ad iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x420a9537 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45f201d7 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c9f9f5a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d5a92b6 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50829329 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51a9fae3 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x559cac9a iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x571ebba1 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57f0414b iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ac79e2b iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d405cb3 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d973bad iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67eea648 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72287ca6 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x755c8631 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77585d50 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bc5d4ee __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7cb6c52e iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e182393 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x83d6699d iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x853e5077 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d77ef66 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d43ade1 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab3858bb __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac5e904f iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1f73c8d iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8325bec iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf0db11f iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf83be4d iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd224edf0 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd47f2023 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdafddc14 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdea327b2 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe2a3b2f3 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9a027a1 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf18ccce9 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf69067ac iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xffc740f8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x05037c98 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x16cdeea1 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1805d33f iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1826ac2b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x239ef9c7 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x31738dbd iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x34428702 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x36155a78 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x73930853 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x81148d60 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x88350399 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb1e92183 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb340fe5a iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2c9eec3 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd44810bd iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf5ad0209 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf74e7658 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x06c96f0e sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x08ae4b66 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ffe4267 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13c451e8 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ebe2154 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x30c55f88 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x330f9d4d sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3b4452bf sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x443bd02e sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x46d230dd sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4869b0d3 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5235c4b1 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x65d49911 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x776ea711 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x78cb32a1 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x86239f64 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9342b34e sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb5227bc0 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xccae9e01 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd9d5ab1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf647b05 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd4bf35bb sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe57e9f05 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf789634b sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00f30d19 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x071ec974 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0aee9edf iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1af87265 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1df806f4 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x239ce297 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x28241bec iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35eb4f7c iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42a1f2ee iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4724b606 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4b8cd393 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5a446c49 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b6d909e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x661eeb36 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6ec44070 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f5056d0 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74506b76 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7fcb80fc iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8026136b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x872c8a16 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87de06be iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x88aaa717 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9db14a91 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9fcdff48 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa083d05e iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa2fdf9c8 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb31d8e56 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb864b1ca iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8adda23 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb989ba86 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1348a2c iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xccca4666 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd372b901 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb7561d0 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe42d9d8a iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4cc407e iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe7186fd8 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea4d5601 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xedadfcfd iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf65bdfd9 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2e782af8 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x553b86ea sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6f52f5e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x75587f59 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x2db3357d spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x303dbad2 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3d8a3f96 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4e80919c srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5f665911 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x783c7015 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaff8d56e srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4045f409 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x50350037 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x68c256a8 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6fa598e3 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb8f06c9d ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xba786e30 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfda00c93 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x17bfff58 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x1d40bf28 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x51e2c95d ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x6ac7589a ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8a1ede61 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8f25ace3 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xbfb69c36 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x46ac45b6 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x801faa06 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd3b1f8fe spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdd86c4ce spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea944fb6 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x42ce2f4c dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb66c15b3 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc166665d dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfe6b77a5 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x00ee2174 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0b039118 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1f324572 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x21b0546e spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x24f52339 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x33e6afe8 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x37f333a4 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x434e4325 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x43e6eea7 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x61ad203d spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x64e3de81 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x770553ed spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7f93fe54 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbd4dcbb9 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd402978c spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdcf42c12 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdf798597 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf1cb381c spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xa2613f6d ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x10137ea2 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x16c6ca54 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1a96d458 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2724e258 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2cb6acd8 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x34ee9fd0 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35ef71e0 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c0e1198 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c34ba8f comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e4b3e24 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x426ac0aa comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x45e90937 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47fddc75 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51d2f7fa comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b476c7c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a146248 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ba0fa8a comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c662734 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6d81cd8a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x79889217 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7c43ebc6 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x87af0bdc comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x894a169c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8bcda34c comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x924ed73f comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa13802a9 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb4515a5e comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb8d256e0 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba48ebdc comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc16468e4 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc3936156 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3f4030d comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec1f248c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf54fbcd1 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb7d093c comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0cccb7a5 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1281f4dd comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x15f87bcf comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2a88b62e comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x51bed564 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8192076d comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8cfdda93 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa2dea439 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x07e8a2d6 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x5c1547bd comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x7292b29b comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb2e5dfeb comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcc2ce6cb comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe91804b4 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf06665a1 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x169ecdd2 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x5af6f994 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x930924ee comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa4c2f6e2 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xaa088dff comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb61cc831 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x39d4003a addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2868d0a8 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x6e38a0f0 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x2b3202c3 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x05fd6405 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x205c2279 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2aa232d7 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2bc3a701 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x378d9393 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x514e1d0f comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6f30813e comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbec8636b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcdbd1278 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd15f76e2 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe56a5e69 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf4507cda comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf797a392 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5fee8413 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6c55b2ba subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe5010aab subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xd4eea263 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x62c698fd das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x14262d5b mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x27cb9239 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2853b369 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x287e115a mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x337c0e5b mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3e70e46f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x44663451 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4b2f1a17 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5ecdba10 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6b763e89 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6ce3c39c mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x76a6cd24 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7cb61a17 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f8ec953 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaddf3052 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb957e1a9 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdcd1d5c8 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe1629ce2 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe31a1d6c mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeccf5079 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7945ef8 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xad56bdb5 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xbd9e1603 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x055cfd71 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x1e7aa339 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4d64cb0e labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa63a2bad labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xde9da330 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x03ec6c40 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0e88517f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5013a11b ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7144f392 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8569184a ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xadebdced ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb63acf4c ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb7a959bf ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x30325049 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x449da8a3 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb4fb64b8 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbe9436d6 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xed75fafb ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf2570720 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x651e52cd comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6deaa336 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7c7e2098 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xaf169f69 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb35b3242 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd82f0961 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdd9b9373 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xab42ae8b adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x205e66a2 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x41bddff2 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4ae03951 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x7393c7a6 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x73d35dd2 most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x9ed017cd most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd62570f1 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xe49445f1 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xe5eb15e4 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xeb34cba5 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf5bdde46 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xff8e0bca most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/rdma/ipath/ib_ipath 0x1514b2b2 ipath_debug +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x46191d73 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4de58153 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7092fa59 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x81a3c552 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84544d0b spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x94eedfc7 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa5a0444a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbca4828e spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc21d4097 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xddf1a0b7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x064918ab visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0877dd5c visor_periodic_work_start +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0ec0434e visorchannel_zoneid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x149bde55 visorchannel_clear +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x1582a13b visorchannel_signalempty +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x37626eff visorchannel_get_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x39fe5de1 visorchannel_signalqueue_max_slots +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4063ea9d visorchannel_signalqueue_slots_avail +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4e4bfbe5 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x5e533597 visor_periodic_work_nextperiod +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x60aaf74b visorchannel_uuid_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x720775df visorchannel_set_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7948d062 visorchannel_get_header +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7a4ec5c5 visor_periodic_work_stop +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7d335b8c visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x85b49e2d visorchannel_get_uuid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x865e5ab6 visor_periodic_work_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x96401fe5 visor_periodic_work_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x9843a26f visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xa428b832 visorchannel_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xaba0634a visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xac7771ac visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xae9128e9 visorchannel_create_with_lock +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb4aab617 visorchannel_write +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xc5dc3977 visorbus_registerdevnode +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xca18358d visorchannel_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc1c63dd visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc89f91f visorchannel_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcd6e4c1c visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd50a1ee0 visorchannel_debug +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xdf741bc1 visorchipset_register_busdev +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe3b5efe1 visorchannel_get_physaddr +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe9721e16 visorbus_clear_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xed313c21 visorchannel_read +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf990f627 visorchannel_get_nbytes +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x09b2822b int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x179c66d1 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x0e4ac1a7 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x640d2620 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x8f420b15 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xad1b7fe2 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2fbd362d uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb436ae50 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe0dc7a32 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa2d0ddb6 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xe6c996b9 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x01523c32 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xfb4ee386 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x18e57077 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x194a8887 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x46383c7d ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5579489c ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb4dff69f ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf08767d7 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1f214c6e gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5246a1c1 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6a569f89 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x87dddfad gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa99eb67d gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb2574fcc gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb2f6699e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc301a0e6 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd2f371fb gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd6485865 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdc0884d5 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe15e280b gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe4ae1362 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf725d238 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf75af247 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe69afcd4 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe8439a12 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x174242b7 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x2e2b277b ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x444335fa ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1a38973e fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2f3e8cbb fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x38804d89 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6cfc9b87 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x70c61aa1 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8b9716fb fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb522a41f fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc153bcfa fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc7afa82e fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcddb1aa0 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd356994c fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xda06a7c3 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe1da22fd fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xec7e7f6e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf86b3637 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0c1d4dac rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1112f90e rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x300ca82a rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x37e81d2b rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x90a1f5b8 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x93e8fb80 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x957700ac rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9fd80fb2 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa76ce4d9 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbb732484 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd3c8fc7d rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe38e43bd rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf357b5b9 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf6c1d63c rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf7b191e1 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x146c5b34 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x17fcd647 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1ee6b00e usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a4b0fb3 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2b53ea47 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e1b9cd8 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e2041c1 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31e05e35 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x334d4ef8 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3f7de41c usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58a3776d usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6371b854 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x69b4016c unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x727c6b4c usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d21cce6 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x837dd63c usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98071bb7 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab6585bf usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb81e80c1 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbd7e3713 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6a214ec usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcde82786 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd22c31b4 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd645df67 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdf234e37 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe0e38515 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe49080e0 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeed301ae usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7dabcf3 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfbfa89ab config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x02b8cfc0 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x06d1e1c2 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0896bc62 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1271cc40 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1dc40076 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2c42ebb0 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x568a99d5 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x62881889 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x70ed4261 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8e4a171d gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf79b2a7 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc53f2757 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf2540dfb usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x487ce4f0 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x79a07bab ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x045c8471 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x08ff33c3 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2eb80f91 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x51edd27b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x56c78062 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd0be5b61 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdaebfeca ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xea70a018 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfda5a71c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe9d62cb7 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x10f4c4eb isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xda7cd70c usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0801d6b9 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e32a283 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x17683c9e usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2a833210 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x324a2b89 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34556bff usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x350f149f usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5cbf8986 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61de16ed usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65708b6f usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6bff8dca usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6f082bdc usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1a274df usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb5cfff79 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb77a6801 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe5d53b8d usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe7643d74 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeb96270c usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xee150111 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfc78161d usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfd40e8b8 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0112e677 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c5148b7 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a3fd44e usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b083ffa usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4eea38e1 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5073eb5e usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x51305338 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5980e224 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x66bf6d74 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x71a7087a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x88ac278c usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x98928dc4 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9906e56d usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x99f0506f usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb121a1f9 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb3f3e733 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb9359128 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbe2ce9b0 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc7c1a018 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc845998c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2698600 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd280ce98 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe24e1200 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf9cc2818 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x27bfba03 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2d8251ab usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x40bd8e75 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x40c9d55e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5cd9388c usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x84281891 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa3d1ed50 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xac602664 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb356146d usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbb490df3 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe153f562 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf908a330 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2b25c5ce rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3b6a5929 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa830d257 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc4419da5 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe8300b23 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf285fd24 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfd8247e2 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1db05f40 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1fbedb32 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x278a5677 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x347d7739 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x584a0d1c __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6e25ed34 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x850ba25c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9b117fd0 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb3566b52 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd80903c6 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe8d5d596 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xefdad3d0 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf3906f91 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf4b57827 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x57373b65 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x5eae76fe i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xfa834ae4 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x037532ca __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x23d970f1 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x38681898 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x41b152b8 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x96c6e654 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xceec6787 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd6f423c1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdd1a9b26 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x02255511 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0778dd8c uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12b468e0 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12b93001 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1cb175d4 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21640bde uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x26f8267a uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2c745b05 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33a45719 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c44da68 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c65f35a uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4cd343a7 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53e54423 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5527a86f uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5c0c1301 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x66d7a338 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x68a9bc53 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x712e1828 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x773d4db8 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c074113 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d0354c0 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d36e2fc uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9761b137 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97cf8d28 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c1c96da uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9d76ec38 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1200b46 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1ef19a3 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa8ca7270 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaa6478fe uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xad5c56cf uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6a83173 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0ff18fe uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9344fdc uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe56f08b4 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4b6ddfc uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc0c7021 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x79efb74a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x19d172a2 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2adedf4d vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x409c7995 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x909eaef5 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe34076a1 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf5eca5d7 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x73d42cf1 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xb5234ed9 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0850d3de vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0968c1f1 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ea5b5a8 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x198f7372 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1a2cfee2 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x219df19a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x309e4194 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x36541c5c vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x41c872d4 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ab2fd5e vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ea4d69f vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x60cb990c vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6219081e vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6f796ea5 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x72f75722 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x896a90e8 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x90fa9829 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x92e02db1 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa2b0ae94 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xabb20930 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc17bfcc1 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcbff21d2 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd9958216 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xddf3ade9 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdf57e823 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe55606db vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeb64c4e3 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8720a6c vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf98d1205 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0d7e9e09 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x478769c5 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x58888432 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x70d4f496 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x97d4083e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xad67c084 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf4feac35 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0cdb67e4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3f6beee5 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4caac0b2 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5da677aa auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6e3c6e7d auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x832b5370 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x857b99b9 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe825c2fb auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xea9f15b4 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf3956404 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xfb564012 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xb4d18447 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xcb91c684 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x00bf77ee sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x35643085 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xa36e642e viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x03b72c4c w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0c5cdb32 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x39a9b679 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x528e28ab w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x60dd8966 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7858737b w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x92397676 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x98472ebe w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaee04157 w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xbab8875c xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa32ec491 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xca07e575 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf56f0c6 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x352548b8 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3b1c59f3 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x466402e9 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4cbddd54 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8a96c179 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd22b289a nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf7a9b8c7 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x028c5f86 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0418a176 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x064c3c5d nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0684e0c6 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07216dc4 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07e5537c nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07f8d490 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09bf9149 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a9230ca nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c3a2ea6 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cc4e5c7 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d6278bc nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e384dd5 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e78f9ed nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1181a323 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x120b7f69 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14a76391 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a13d902 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a48df20 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c24c19a nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d519fb8 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fd28fb1 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2225f315 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x227ac9e1 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22e1dcd6 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x233bf0b0 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x249ee5cb nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24bdc7fa nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26df5cda unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2801bd32 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c5c01ae nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c86cf6f nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d702256 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d796c9f nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f4330fb nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3027ff8e nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x318511e9 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36adc92c nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3763577a nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39778e10 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc77eeb nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c9e83c3 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cbf1c07 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e1d9cc1 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ed6d730 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40af620a nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x468d10aa nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a16a5c0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a9d7a9a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b9e9ed2 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52ceaa98 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5761ac66 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58ddd66b nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x591b7539 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b9885a0 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60a83e11 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x618d5d21 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63a59863 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63a73b5f nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63af6a82 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6977a809 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f7a8e1e nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74ce6a78 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76850b94 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7717fca6 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x798d3bfc nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a143767 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f3867a3 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81c7facd nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84368715 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x844b5a2c nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88666aca nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b67ca27 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f388554 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93ccbb4c nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93d2574d nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ac6dc2f nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c41c514 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e480884 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e7fc68a nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa017fb6e nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0afba7d nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0caef89 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa230548f nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9cfbaf6 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaadc863c nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab86f1b3 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad81c856 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafa2bae2 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb25ffcb7 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5a8ad58 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9e0a2e3 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba253d2c nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbba9de6f nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbfd661c nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6441f6 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc06dcbd6 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1be8fee nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc684340e nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9bf3c12 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfa674f0 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd42e1833 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5e33200 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb4259cb nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb524139 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde141628 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe217e650 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5f21023 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe74120ce nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe90ce70a nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9a9a907 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb3fae75 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef058331 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeffed50a get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf07befaf nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf163a48e nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf460c8f9 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4aea9ef nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf51e73e1 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7102a92 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9366495 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfddd3ba6 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe33318c nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x155c92d2 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x01f85657 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04da57b4 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x072225a2 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07d36647 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c538711 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cb13ef2 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093dec9 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1223362e nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15a485b7 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21ec4f96 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x271fa200 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2995bb4a pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a4e7b26 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e9997de nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x316b543d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37fb0377 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4c7f1b62 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52e07627 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5373f925 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56bbe955 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5b50ef20 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5b69c848 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5be8a59b nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ef9deba nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61f6a4c9 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x641cf39e pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67894148 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69cfd2a0 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6bfa503f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b188afe nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83a52d11 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x852852b1 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8b41b3d4 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e0053da nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e9304d3 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f10bb09 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x903c7499 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x92e59a54 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9654a8bd nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e5d863b nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fa32825 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0f4d472 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5e17431 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae2cafde nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf62ba80 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8fdd24e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3fa872c pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5e6abde nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7dd8871 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd460d47 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xced5fafd pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfded5c5 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd660958f pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8876e87 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbb07f31 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4f634cd nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8312316 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe91f9bbd pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x657b405c opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xcc3bb47f locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xe1950c89 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x1c6ad322 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x29a729f5 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x18f58bed o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x259abb4e o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3c5865de o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x42fca3b6 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4c87f1ac o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6b60f9fb o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7e388b39 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x074bfe47 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2746c84c dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x41ca17b5 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5d99a334 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8864680a dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xedb2c1c8 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x07863a2c ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3da4e370 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x6530666f ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3cb933b2 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x9c23063c _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe8d77d1f torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x1f65b283 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xdeb7518f notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x1b58c18f lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe42b23b6 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x1d80abc5 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x51101d65 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x87e01cd6 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8becec7a garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xcb9d802e garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xe7b5e588 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x0260f797 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x43b928ad mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x475bcb68 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x77095574 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x7a50bec7 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa49a662e mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x18545853 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xef51d2f3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x46905c62 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf29b7501 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xd650da0f ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x06e403d2 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3a590387 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5f4a2006 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x75a7a069 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa4461491 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc224fd52 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe55a991d l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf4195f2e l2cap_chan_send +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x31d9e6b0 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x51e794ff nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5c750742 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x61fed74d br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x78da7984 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9b122f32 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc25714dd br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd5e2452b br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x105ce714 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xceb6685e nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0c07d297 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1ca1f3d5 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x25983492 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28c287c1 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33174236 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35695d8e dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3a896891 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d388d57 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d439397 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x407a95cc compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x41f08924 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x430ffebe dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x52076c0f dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6e28961a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73cfe852 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73ff8868 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x77417afe dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80fd27c7 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x85b33e40 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86d1913a dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x875c3e0a dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ed56e37 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92920f5e dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x952c8a68 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e921546 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1fac05c dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5942118 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6762742 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6095b5d dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd373b26 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd3d06cf9 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf036204 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe43b4ed9 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x42e589c3 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5be47ec7 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7e90979a dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaf27c75f dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc74a2bf3 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd6c1ceb1 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x01e41831 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc11b314b ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd33bdcf0 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xdaab3bb1 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/gre 0x22b8e3e7 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x74152c13 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1b67f1c2 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2a158bc2 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x43b05a90 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x54175b9b inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x72d1ddb2 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8879aa59 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x26c107bf gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1fda3cbe ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x25e4d0de ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x32b6d976 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x33dbf6ad ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39647f3d ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x44fb4457 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x745cbda6 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8be6f373 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa1331725 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa7d96849 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbd2a0379 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc0bec7a1 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe528472d ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf781cd9b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x49a5cb40 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x3c28cdbc ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x6f88d74d nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x497bf800 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4d504ffd nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4f1e6866 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa40a402e nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb6979c2c nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xdf05317a nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4808163b nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9641f314 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb5938582 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc9ca051a nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf211b4cf nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x3ae5132e nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1bba10d7 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x37e4fcb3 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x666f79ec tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xad1b34c0 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xad3f6691 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x18cc2b03 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7b94c50d setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xcca9e77d udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf37157eb udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x103d6043 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x513a2987 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x92498e23 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc27e757e ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc2bdccdc ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xde4c859f ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf73bd2e9 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x50ee1a4b udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x9cd18a33 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x03f72b2c ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x66102bd6 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xf0940f39 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xe6cbfedb nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x1dcb31b4 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x311bbf95 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3ad3317c nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x958210da nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x95ed9ee3 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x1d0effcb nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0c0b813a nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2baa865c nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x414738e2 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x50cb5733 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa9b329c8 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x76e4c968 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x12557caf l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x46cb48cd l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4859e668 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x59057cf4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5c4767a4 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6b654ff0 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x73984c82 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x745d7b75 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x99927bb3 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb53a9aed l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbde0b023 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc3042b91 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcd678ec6 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe462802d l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeab6da10 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xebec5037 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xacf01123 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x073ba184 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0c0aed52 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x159167c4 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x17b9c4d6 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e0628e0 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3fff4f3e ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x52d85450 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x53bceeb6 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x75de3e17 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb3e82ded ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc509372b ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xce994bd8 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd07d3fcb ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf23e7202 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf65da01d ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x5e11bb80 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xa12c7194 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xae3fec73 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf33d599c mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00ea858b ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x08876435 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0970b6cc ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1b328300 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2ca8d126 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x41dbeaf9 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x468bedaa ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x71cf7d64 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7952972d ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x84ac9f07 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e33b7b7 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9f187b0e ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbb3f0c69 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd6fdccce ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe6d75fed ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xedfab650 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x510f182a ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x87518ecc register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe80e86bc unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xffdd46c0 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0393ed89 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x081981f8 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x084e63d5 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09fce1c7 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a76dfb7 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x148154b6 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1533d3a9 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x163366c2 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c15fd2b __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20cfbff0 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x229e6b73 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x282c7cf7 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c0d3119 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cea9f3b nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3500c703 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3575ab49 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a3b1eba nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c69e450 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4471c8ce nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4efeb438 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51412f3d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x529b069f nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x567f8e42 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x579acc30 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5933e073 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a4635c5 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5defef4b nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62a76364 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x662c3346 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e252e00 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70ce0afe __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7209fb5d nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x724afdd3 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79b795a9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7adec9b7 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b6fe91b nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c793b5c nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84dac5a2 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x879891d7 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87dd2b8b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8bb4f65a nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d46872b nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dde5fc9 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e446671 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98c2d0d3 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a313994 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa153dc85 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2a243fe nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa445c670 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7f6d7a0 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9b2ea70 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab8f6399 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf8aaec5 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb04f4fef nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3abf601 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb45f416d nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb577bb6 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbcd71d23 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbfe83d4b nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0a161c2 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc136c257 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbd58dcb nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc2e1a67 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd5e57a3 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd17eab85 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda032688 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda61178d nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde00a7f6 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec77b26e nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedb0ed52 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf220f132 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2970340 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2f0c40f nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf55a9400 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf66ad922 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7ab5ec0 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb526c6c nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe272b07 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x3ed55642 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x3713f734 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x582d8d95 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1807f5e0 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x312077fd set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x37e1fde4 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4d3a2b0a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x56323549 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6f301044 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a4f4a22 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa906ddca set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb714038d set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc59f45ef nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x07bbb0f9 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5dcf94fc nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb43c6756 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xbe2c33e6 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc75005fa nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xce700c6a nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd0cc2a70 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x03714f00 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x42b0b83f nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x502b8241 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb34f2cdf ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbc826e2a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd8ecfef8 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe7234686 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xd1d39fc8 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x60254bf9 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4959287e nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6cf19ba9 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6f2388fb nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8c304336 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x14d4597c nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x43de39b4 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x578dd8b4 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x61af8a29 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x754f92e6 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9217e704 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb989f730 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbf09799c nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc9c11f59 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x9e53f798 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xe6e65bf7 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xd3f68d58 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xf42c957b synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x012410cb nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x03d9d376 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x095c7382 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x18930395 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x23179142 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3584052c nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3bda419b nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x40cf6f76 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x56bf73ca nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7ec8a28e nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x94dd0012 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9652c91a nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b35f4cc nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xba4aedd5 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcd261a9c nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe66f1ed8 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe8d183f6 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0b16831f nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x13d2f049 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3b87f466 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3e9cd63c nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd0e01c91 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe13b93c5 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf1aa291f nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x255c85ef nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x86e5137d nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x89f16e58 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xa9eb3bb2 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2fff69fa nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x40e674d2 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x5e249b89 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x674def27 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x802179f5 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x813cbacf nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x8b146117 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xba8c9e31 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc82c049e nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x26c53cc0 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2aefd3d0 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x5ed744db nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8914e668 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xd4a47500 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2d3e30c5 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3b1d3ab5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x42486d6f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5db77609 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x708314dd xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x726541ff xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x798b936d xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7dce4c4c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8a05df41 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8eccc464 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9ce7cddb xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7ce54f2 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa9eb699c xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb10f6fc6 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcfc56ba2 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0da0492 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe2d49f17 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xebd5e691 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf36bde27 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x032b02a2 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x3f7aaba2 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x54288e22 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x07b9ac71 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x62c170fc nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xe0c8bed6 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0ae4edb5 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0eed8a29 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3528f6dc ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9188fb17 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9864b5d2 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9f158dff ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb5f49813 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xefb11590 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf69e41c7 ovs_netdev_link +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x01db2839 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x05b385f2 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x0ecc060e rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x14ad316c rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x162f9d95 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x204873c4 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3e699983 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x3f273fba rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x4f1fc723 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6150a41e rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x6222c8c6 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x8217a0bf rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x94f0d551 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa3b2d1dd rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xbc403fd1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc35d9426 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc8983336 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xd92d3280 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xdca914f5 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xde2ac91f rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe2439c18 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe9922963 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xfa9f5b42 rds_conn_drop +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0a46a5f5 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x19516d49 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xaeb8281b svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb50feecd gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd4090871 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02e0eb78 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x047d7bf8 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x048f35cf svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04ca71e6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05f33a10 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09507517 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0983f3ce xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b2e8483 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bba6ab4 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ce2f014 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dc0e115 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f039b5b svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11baa5c0 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x126ab8e5 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1337e327 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x134757ea rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13baca41 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14c560e5 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x150d2fd2 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x164a93eb xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x174d772d svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1856dc9b svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a154276 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b04db38 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b3b645a svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d4cc8ec rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eacb690 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ed8483d rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20f04328 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22d760a1 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x233d6ac1 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23a28740 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24fc54b1 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x262a3306 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26fb483c rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27cd2c16 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27cf236e auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b28abf2 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c769f8c xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c8eaa51 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d89dc74 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e9bb7c7 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30c686cd xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3286c0a8 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34640c71 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34e6cce1 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35c9b784 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x377553af rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ae06e46 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ae3b3a2 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c3f66f9 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ced00e3 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d99434a rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4f5faf rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f67bca1 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f6a6da0 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fed2dc9 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41057c7b gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4206f222 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4397891c rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44680771 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4581f793 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x460d570f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49ad4248 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b1bd393 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dbf0973 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f64ca0c svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x506d47f4 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x507f41ce cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5237108d svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x525f7c0f rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52fb240b cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54ee5a4a svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5580bdc2 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55b2e8c5 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x560c57ad rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56cfc9b5 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f91026 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a68df2e xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cbe4b0a svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ccb4f47 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ec6da4e svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fbdb4df rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc40c8c rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60f95adf read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63d471bf cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6599d682 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65daa4b7 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x668edd3c rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67620b31 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a8c4ba6 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e05e141 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70547134 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70dccfdb xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77f65c70 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78a41e27 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7df4ede0 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7feff5d7 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8077d179 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81185ac2 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x811b809f rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8146a9f2 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x814f13c8 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81b95fcf rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x821436bc write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x830f6649 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x835b989d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8767a251 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87a4fae5 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8960767a rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89846f05 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89cedc9f rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bac5f2a svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d162ccf svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dc11d8f svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90a7e9e9 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92435cdd xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x924ebfab sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9477e642 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95ba73cf rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x968c17e4 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x987546f1 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ca51816 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d12a974 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df299cf xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e10741e xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e623370 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3787ea7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5da5afe rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6f2875d sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa873666b sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9f24ead svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9fd4d75 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa57ccd4 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad38fd54 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae6b38ab xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafa2e02f cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafaa5818 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1c3ec44 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb30bfda9 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3de43fe xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5e8bdbf svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb69d9045 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb970e8ad xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9b9c53b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa6983d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb4c7c5d rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd5ce49e xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc367ce8e xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3b309e4 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3bab326 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3d82b2f rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3fef859 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc531256a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7c3a74b xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9273059 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9902199 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbe2e567 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbf4e9ca cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc128b40 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccc61792 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccf79dbe svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0ed5c8e xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd12bcd32 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2337974 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8781c75 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8c3fa5d sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda9e1102 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb08e887 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbca2d10 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdebe8789 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe02d4f70 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe24f7393 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6435777 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8506c7f rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb8445b7 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed40615f svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef147f9e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0e28ec3 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16e79bb xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2f0eab4 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf352fb47 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3deeaf7 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf53aef28 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf58baf6b xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf68735f2 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf78fc963 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7d42c11 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9dacd76 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa2e4272 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbc3369e svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd174a72 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa47aa2 svc_close_xprt +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0067d6d1 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2ab6d014 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3022e074 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x448ea44b __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x51a89e1b vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x52ff5175 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6115ceaf vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x68aba348 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x89cdf525 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x945c5d6c vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb70b3cb6 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd810510 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe24397c2 vsock_add_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1a4cbfd8 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5514c8df wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x587b881b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x89a3e913 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9b892877 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaf008041 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc41e60ee wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd3d99cf7 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdd172b8c wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe55086a8 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xebb2d4a0 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xee7a97ac wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf8e8cb41 wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0d9aea9b cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1123f9a2 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2e4bc1a4 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5dd942c8 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6acc5507 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x70ccca6e cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9f786337 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb84a836d cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd3e24b56 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd8ce5349 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdceaf876 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe3a564fe cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf70bacfa cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6335358e ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8c97450f ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x91f82b12 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa2251b24 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/ac97_bus 0x71cfc03d snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x84df94b6 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xeda6ca52 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x003070cd snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x0a986f0d snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x30d093bb snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x47213fda snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xa96d4271 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xd2428dc2 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xf5baf1af snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xa5462686 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xbdc9ef47 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xeef1f352 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x12921044 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x66f22c3d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6b414c55 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7fba7afc snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbb5e6eac snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xce88dbe2 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd0b3e6a2 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdf1bbc14 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf5608674 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x03f1f282 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0e9fd6fd snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x195126c3 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4062ffc7 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5516f533 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x763a97ae snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7d90bb52 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8775a8ed snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x93e63bf4 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x97d9ff0c snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf1802660 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2265aa25 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x36eb1eb6 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x447274cc amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6d693366 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x85fb79af amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa427b66c amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xcd6e093b amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x04559139 snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x0f75a584 snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1b211364 snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x23517d6d snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2590b8a8 snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x38ba8075 snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x46e3431b snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4b1866cd snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x570f83d5 snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x5abe587e snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x5c35c32c snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x640cd24e snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x769b4291 snd_hdac_ext_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x77352034 snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x7d4cdec1 snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x80a29267 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x89d6b418 snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8a00862d snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x9691a648 snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa0442b76 snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa04ac403 snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa63e353d snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa83916bf snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xbb70fa32 snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc055f4f5 snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc68cbaf4 snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcd81cc0b snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcedf5353 snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd2f8c554 snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf35dc358 snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf8a0ca80 snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xfae01baf snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x03958fa5 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x074a6b2f snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e95c30d snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f895d97 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23316f07 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x245a7060 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25318994 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2917cfa8 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x29bff430 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x340ea311 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c4b87bb snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3d0eaa17 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47a5bd02 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b614e08 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c4aeea6 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x51d16127 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x52b4403c snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53a21480 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53a6ba70 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59342083 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60ec794d snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x655382d5 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65c9ae78 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6900e750 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6bc11c1c snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e1f44a0 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e51e081 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7209a97d snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7370bdf1 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7615c669 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76f7d948 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77b30d8a snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7bb9c286 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c39ddb9 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8880cce9 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88c2c085 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89730d33 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89ca74c1 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8cb7f166 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f3d9b3d snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f557958 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97a7cc3c snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99d24e02 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c6ee2a7 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9de1d610 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e612bdc snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f772c16 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9b1090a snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae7aac10 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaeaad265 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb00434ab snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb13c3222 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb450007a snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb622e401 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba399b67 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc229f2cf snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5b00a61 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc87452bb snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcefe74bb snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1b11974 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd615f8fd snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb0a7349 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe25f5767 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe906e9fe snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeb22570b snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xedc7ee6a snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee85d826 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf05b69ad snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf15258e6 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf408c096 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6227b89 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb0077cf snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb940f12 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff34fb70 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff97af99 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xffb09f49 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x15f718da snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1c1f681f snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2ab9e23d snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x338af83e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x451acd88 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa1a64cad snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x008eddf1 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x022cdcd7 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03160172 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03dcfda6 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04ac2c41 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fbc38c5 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10888a1c snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x112b7a95 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11a9f3af snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b974de3 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23886fb7 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24434ed9 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25d3c88f snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2797bcb8 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x279e8d09 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x282fd6f9 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bb63659 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c517170 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2db18bdc snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f8f737a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x320e929a snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x326b6a7f snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32e61080 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x333d335a snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35e418e4 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35ecd849 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36011d05 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36ea43bd snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x371208c1 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37190fcf snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ce3bb58 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4772b56b snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49b1300d azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bb771a3 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bd7cc30 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cf21e2e azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f1ff304 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53a57bbc snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56d000fc snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5779bae1 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a151205 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a9149eb snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d72b4b2 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ed9170f azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f6328a5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62a67fcd snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66a16606 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6889cd00 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ae1a00d snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cf9628b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e2a1711 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fad14c3 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71e95444 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x730deb36 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73806bef snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74cbb9be snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77df9c44 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78cd1e98 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78dff79a snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79fcaedb snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7aea923e snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d71a5e3 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e41230f snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8117800a hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x836d10b0 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86ca954c snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87831c20 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89e7b333 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a054651 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d3f8516 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x906614e2 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91d90f43 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x939349c7 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae0087d snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ee819bd __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa122819d snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa595b601 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa71dea13 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa99c3682 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab7742d1 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaba4c5fc __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafe4ccef snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafedc931 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1851bc7 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3bc6e02 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb67b0a96 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6ebcfac snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9fb9a08 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba1ea13e hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc312f35a __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc41ebcc6 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc54af4d9 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5ab5d60 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7947c96 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7e74d3e snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcce3ea80 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce754b7e snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcea06023 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2c9fe21 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd681cb30 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6ef8774 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd90a6566 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd959dec9 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde638010 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdea7bf9a snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2322377 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe34fe9e3 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4186cc5 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4587c64 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4705bcf snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4e751da snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9a3848e snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea2f4e81 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeaacf1b4 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeadd8bbf snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec8e2eeb azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed5ceb2b snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1c6549d snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf34612a2 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4f39c3b snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbd8e07f snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc276e27 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff0ba2e1 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffd28608 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1c6c2e9c snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28a217b2 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x362a4b7e snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3b339c28 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x50cdaa7d snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x542bb650 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5641b523 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x57f9eb37 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6504c126 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6822664c snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x68b8074a snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x96cd9a41 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x98fefd95 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9b9550c3 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa4eb0a04 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaf1e68a9 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb2f17bce snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb6af5d62 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc4979bfc snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf555e230 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf9e21c20 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xeccf8846 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xff68013d cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x232f7f7b cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xf54f3930 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x97fe3ba7 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x9881ea1c cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xe9ea0bfa cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x8b2f9b9a es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xe318e23d es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x21e3ee33 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x61bd1fda pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x6579e69c pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xc9c25c31 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf9e2db2a pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0xf558e075 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x3818bc97 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8520b1e2 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8ed85fbf rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x09b91f42 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x10943f58 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x2dabdbeb rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xd3ef5cb6 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1f0dc2e4 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x273a5e17 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x37d16b08 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6f99dd6f devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xbaea8b68 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x88e53256 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x5e92d3cb ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xffce658e ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x98027416 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xae65d81b tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xf304e802 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x23b5ef6f wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3bcf218f wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x62950334 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x82268e45 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x45620392 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7453c9c6 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xbfad63a9 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xf5622860 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x1b69d5ca sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xac066482 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x01ee34c4 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x539b2eeb sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x6bbc1c80 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x7bd78397 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xc600422a sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x2af55f7c sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x55683724 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x72c494b4 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xe975b542 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xfbea9b55 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x016e067e sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0375a6f3 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0b945764 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0d2641ad sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1f564b44 sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x204666b5 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x257fe6c1 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2b635c6d sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3098c03d sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x32e681e8 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x399a0f96 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x39d66839 sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3e99cd68 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45797a90 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x457a32e3 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x49096b2f sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4db173fd sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5428c45e sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x55371c5b sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5637fad8 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x56e688ba sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5862f3f7 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5bd2b48f sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5c801665 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5dc90ccb sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x66963dc1 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x67eb7472 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6a1743dd sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6b352023 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6d2e21a8 sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x730be5e0 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x77d29fb1 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7da6dd80 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x802b548f sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8150f4fc sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x85ae07a4 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88a4e8b6 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x89a1040b sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8d9997f3 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x94525273 sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x95bb71f1 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9d076113 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9f5b4c39 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa1d4003c sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa6a8474a sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xacf980cc sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbb34b087 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbca0b762 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbd09461f sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbd5a1975 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc1637fd5 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc8c35d92 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc9dcc1dc sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd45181c2 sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd871f3ed sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe21ba0ea sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe46cb91f sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe62cad2f sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeedef242 sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfdcb9c99 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x07cc8bd2 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x2762f5ed sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5a4fc4c6 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x881671a4 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x8d09f7e9 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xa2c88f1e sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xf991da95 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x88f3f223 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1222be1 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x080f3f46 skl_ipc_set_large_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x0d747a27 skl_ipc_set_pipeline_state +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x227d3a2f skl_ipc_restore_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x27353c17 skl_ipc_bind_unbind +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x3221b653 is_skl_dsp_running +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x41dd7cb4 skl_ipc_save_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x42aa0459 skl_sst_dsp_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x437dedb1 skl_ipc_init_instance +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x49cc6bc3 skl_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x6469a716 skl_ipc_set_dx +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x7c71634f skl_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x8266283e skl_ipc_create_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xb88164ca skl_sst_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xbafcdf83 skl_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xc4a9cb3c skl_ipc_delete_pipeline +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x004fcaf6 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00be88ac snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0384ead9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x070c755a snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09027935 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x091eb0f8 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09e782ca snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10686e44 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10a4355a snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11b5eedd snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x120578ab snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1213b603 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1225884e snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1283e5cb snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17ce64b8 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17dd2d29 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a801684 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d596222 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f03fa05 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fbb571a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2171752b snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22d0003f snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22ee959e snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23178d1a snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24e7628f snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25329b05 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26c371f8 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a2970d9 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ab9ff3a snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ba7e2b1 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bad6d9b snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bc5ca1b snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d080fb2 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3021adc0 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3268f59c snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3854972a snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38f15534 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a5a9615 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c236558 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f1d64b2 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x448b5e6a snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45470c53 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a81cc21 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ab81b65 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b1c7c9e snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f5d4a2f devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53905fd1 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53fc5a6f snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5521dd1b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5743d1b2 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58447a6b dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b5a13b6 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ccf50db snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e1f83d3 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x606114e3 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60fb12a8 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61849460 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62e211d7 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x662e2bb6 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x691bd8f4 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6943e2bb snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6eee44de devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72727044 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74b05a81 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75078c58 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77d39732 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78afbf20 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b374fcb snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7bca4667 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80f07611 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81a6637f snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82dfdd2a snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x843b1044 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85b0fc34 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88f49503 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x893909a2 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8985496c snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ae41c5e snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b5001d5 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8be025f5 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x911165c9 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91b945bc snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x926ed171 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94a83a75 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x956df2cd snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96b9e815 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99426dbc snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d4e36ad snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e560ab9 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e6b002e snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa12ca7e8 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2b41c81 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa63a4810 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa64f7c56 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8cf2754 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8d4c4f7 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8e88e63 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9dc1cac snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa3b7300 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaac8c185 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacb41a96 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadd159ba snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb058dc3e snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb145c1cb snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb25901c2 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3d45953 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb430c882 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb47b4361 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6434338 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6f91362 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb700b81b snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb74e8c8a snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7b8cab7 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7fbfe39 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb58e47d snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb87c157 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd4111a0 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc011d306 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc03bacbb snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3f78138 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7bab28f snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcaf81597 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceadd16d snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcecdc00c snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2156f6c snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd648328f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7ad48d8 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8314bf4 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb0f70eb snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddb7ee76 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5795c1c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5dde24c snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe680233b snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe86afc6d snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe90cc2bd snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeba63bdc snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebb1f744 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebf228ce snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebfd794a snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef500a74 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0873530 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1b41c46 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf318dc54 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4303a09 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4ae5c8f snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf642cb9f dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6d517b4 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf80c9d4d snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa737da1 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfaacbca0 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfad71075 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfaf8de5b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe5ad8cb snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffcb4b22 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x020996e7 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0e7fca4f line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x112fd8ca line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x15d7aad2 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x17155f95 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1b8898ee line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x22782fb1 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x232d22b8 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x37143cdb line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3f63666f line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x909fad19 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa98a6850 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb8b062c2 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc2572bc3 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdca680ae line6_pcm_release +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000ac177 pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0x001b1f7d smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x0025fd9d vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006a3ee9 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x006c316a sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0082d3e4 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x00832a11 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009cc9ef mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x009e4be7 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00bdf775 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00bfcab0 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x00c021cb wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0104cdf2 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0124a5ae wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01604f25 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0179a9e1 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x017fbdba of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a6c76a dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x01aa561f handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x01b856c2 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x01c25b11 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02009115 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x021dba70 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x02253571 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x025c544f rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x02709b61 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x028bb48d tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x028e35ea sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x02a084a8 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x02c08d35 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x02c10bca clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02f8ce86 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x02faa4d7 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x031b0318 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x031d5070 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x0320db4c phy_init +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0341927f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034dd40a regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x035c626e wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0368449e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a280ac dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x03a6cea3 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x03a8895f sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x03b1ba04 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x03c13a4f unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x03cc4b0c tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x03d01cb4 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eef10e to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x03ff54f2 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040d289c put_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x0412affb dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x0421b58d pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x043b935f __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x044328fa da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046c334d iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x04727aed tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049adb21 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c6dd68 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x04d0300a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04d7628d ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x04d7bc7f led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x04db5f42 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04ea1a65 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f894b0 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x050abb82 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x0516f462 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0589b406 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059094b1 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x05a1dd1f trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x05a4de3c sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x05a9edb2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x05b92f64 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x05e9b2f1 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0655174b blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x065a2020 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x065b982f tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x0686bccb virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x068ccbe8 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x06992dcf blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x0699b608 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x06a75deb pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x06a98389 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x06b27588 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06b76a17 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x06cc26ea rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x06d259c4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x072497c3 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0747b206 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x0749e78b __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x07500a03 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x07593291 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0763f082 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x079182c7 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x0794ebd2 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bf1d5d fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x07edf961 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x07fd098e gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x080f4480 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08253f96 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089d29a8 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x08a7cb82 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x08ad3c29 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08f6545a relay_open +EXPORT_SYMBOL_GPL vmlinux 0x0916b2e5 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092765fd get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0994af82 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x09a5594e inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x09d8ac2f pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x09f95641 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x09fa4599 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x0a0f23d2 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0a1f3448 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0a22c72a sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a6d3c39 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ae64303 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0ae6d6ae usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0aeeb0b8 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x0af90bce device_rename +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1be76c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0b1f8c49 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x0b2ebbf9 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b556f20 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x0b6751bf phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0b8d103f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0b8f775d clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x0b9298b2 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x0b9e3096 fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c173b8a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3af512 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0c651ebe device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c90d8bf x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0x0c978371 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x0c9dafd8 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x0ca1397a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x0ca23f37 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc9a1a4 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x0ceba232 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x0d16c591 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x0d4927da clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8ca8a7 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x0da2aa24 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df2be10 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e2402f5 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x0e51215d tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0e77c656 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0e83867c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0e9866e5 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ee6d643 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0f012044 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0f0e5ab8 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f526d2c show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x0f5ca004 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f6d38cb usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8858f8 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fb8697d iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x10048584 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1018abe6 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x102a60e0 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x103db0fa blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x1065ee8d usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x10694cea da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x106dbcd0 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x10999e18 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x10c2f298 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x10e9d946 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11363e8e irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x114f2181 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11757da0 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x117b1204 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x1181ecd7 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x118e5a91 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11a53b8c init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x11b018a5 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x11ba1ebf tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11d05d1f arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x11d57e0c pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x11e501ae pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x11ea0c6a md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x1200b990 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x121103eb nl_table +EXPORT_SYMBOL_GPL vmlinux 0x1217f90b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1266180c regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1273e3c8 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x128570d0 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x1299db67 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x12ea1ceb regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x12fcc01c ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x135356eb ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x135fa91d uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1376dcd8 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138b85a3 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x13989c58 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b1c415 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c3036d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13cf1e9d scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x140b9f7d ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x1413fc66 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x14428fe5 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x14447029 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x145fed23 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14a3f599 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x14c635d6 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x14ee29b3 pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1537c4cd sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158cd797 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15ecd1d8 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x15ee637f scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f92dce get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16112fc8 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x162b84df dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0x162e7f2a ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16551a8a mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x167b3aed gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x16976a8d request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x169b6216 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x169bfdab spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x16e215c6 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x16e9e465 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x16f27f10 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x17183253 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x172e5d89 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x17480935 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1783e794 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x1791bb64 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x179756a4 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x179b7890 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x17a7212c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x17de46f2 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x183370aa bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x1834803f fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1856b2db simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1877cc81 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18894a76 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x18a7e1a7 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x18b66664 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x18ba5da2 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x18d82345 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x18dcc4a4 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x19095ba7 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x193b3440 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19607da9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x199a680c device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x199d27f4 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x19a22799 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19add986 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x19b785cd serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x19c3a4ba usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x19c82000 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x19d151d3 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a39b360 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x1a8973d0 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa851f4 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1aaf4e1f irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad7be27 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1ae45e07 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1aed39b8 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1aefb98f regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x1af4c3d5 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x1afc2f8d ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x1b15d475 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b495a5c regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba0e151 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x1bba0c56 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1c4be4f8 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x1c52e51b rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c56abb3 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c7a04e2 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8ca7ec crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x1cce074f __module_address +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1d006195 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d652735 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d90da2f set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x1da02f9f rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1decdb5c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dfef9d5 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fc48a platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x1e1136da ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x1e3276b2 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e51ab80 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e63579d ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x1e67cd00 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e76ea7b sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec37a0b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1edf6758 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x1ef3c4b9 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f29a519 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x1f2d5fb3 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x1f5feedd ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f9db6f1 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1fb57ad5 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x1fb83854 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x1fbef072 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x200b74fc __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x200cc695 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x2046b990 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x20533fbc kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x2064cefe reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2069ccc9 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x206d0da0 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20c2faf5 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x20c55f10 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x2113d021 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x2115f4ee __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x211a4acd init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x211aa320 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x2123f7c4 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x214f203e ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2157983b fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x2176430a blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x21822e77 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x219f6523 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21acdb5c xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x21aebcd6 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d1a961 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x21d5c914 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x21ebca09 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x21ec0fe1 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x21f49224 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x21fff9a9 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x2269ca92 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x226a7e29 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x227fcb70 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x2283b2f8 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x228e588e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2290e007 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22b1cd6d rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x22c6004e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x22e29af6 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x22eacfed crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x22eafe0b extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x2322e0df clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x234a0f51 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x234aa0fc acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2352ed6b ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23b67627 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x23c4c681 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x23cb90d3 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x23e72640 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x23e91f46 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x23fc8759 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x242ab80d aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x243b69e8 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248a960a crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c1c6b6 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24d43ed5 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x24dc45e3 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x24e8305f gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ed77a1 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x24eff914 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x250da2bd tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x252c09be injectm +EXPORT_SYMBOL_GPL vmlinux 0x2531f026 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x25335413 split_page +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x255d923a trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x255ff764 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2563cb73 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x25746814 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x257c51ad dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x257cb376 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x25858f94 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x25af8421 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x25b6fbc7 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x25c45045 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x25c58e13 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x25d700b8 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0x25de7ca3 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x25e1723c rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x2604d890 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x260d95bb power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26416fc8 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x2648309d pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266fc4eb pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x269b96ec unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x269e7816 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x26b15494 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x26dcb856 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x26e7b3b2 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2758bf15 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x2792aa23 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a14953 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x27a3a103 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d9815d wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28084a7d reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x281149e9 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28384bb2 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x28523e7a irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x28555a86 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x285cd3fd apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x28664a34 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2870da8b task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x288b9683 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28b30121 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x28df9e4b crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x28e2b9e6 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28f17d91 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x28f75fda device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x2941c2a2 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x2948422e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x295dd6a7 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x296daeae dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2970e190 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x2975696c ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x297ccded extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x29945156 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x29a855a5 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x29c08534 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x2a02c981 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2a28612c of_css +EXPORT_SYMBOL_GPL vmlinux 0x2a3fab39 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2a46d390 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a693a49 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x2a800949 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2aa23356 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2ab7bb3a __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x2ad03932 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2add1f97 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ae72045 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b1068f3 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x2b116fc8 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2b144e9a pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b2054af rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b2ed19d devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x2b4542f8 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b5ee451 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2b74137a ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x2b7c603a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bc6a611 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2bdff3b5 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x2be83ea9 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2bf9508a pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c0bf65d __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c58c62a rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x2c653e05 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x2c7d2dd4 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c828186 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x2c87731d crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x2ca82119 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x2cc5be56 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x2ccce59d rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ccfce98 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d024002 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d33f539 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x2d3ace61 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d628a5e __class_create +EXPORT_SYMBOL_GPL vmlinux 0x2d844487 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2da10956 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2ddc95f2 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2dded09b sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2df9fe07 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2dfad0b4 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x2dfc0557 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x2e01f905 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x2e1979cb __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3776fd hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2e4aad7d devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2e90ad0c devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ed5185c percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2edcc84a dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x2efd0407 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2f0614ca regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f352d44 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x2f3afa16 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x2f3ff0b0 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4848c5 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f909b32 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x2fac96ad bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x2fb03bcb usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2febf49f regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x30146f42 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x302a21d4 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x304b61f3 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x304d41aa pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x304ec29a phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x30519f1b pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x305f962c anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x306a55de rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x3087cfc1 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x308b3ee1 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d86395 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x30e1c1e7 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x30e45aba efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x30e92e19 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x30f15854 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x311f93b0 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x316c0fe7 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x31ab016d regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x31af9b9b pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x31b98317 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x31c01363 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ecee9c tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x31f54baf lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x31fde679 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x32088258 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322ce462 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x323a70fa dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x32443987 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x3255031e da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x32556384 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3263432c platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32981cbc subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32e3cd7a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x32e6f9d3 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x32f7ab47 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x330627fc blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x33083797 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3310b93b i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x332f7f9c regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3331226b tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x333e6df4 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335f5e71 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3366b8e7 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x33848d07 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33c63217 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x33d042c1 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x33e72b1c input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x342db319 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x343bd2f7 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x343ebf38 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x34646a71 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34ad0c56 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x34cff3b0 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x34ddf8dd blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x34faedec register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3529dc1b dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3540b402 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3550cd9f crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x359f9aca gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x35b4fa67 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35c5ec50 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x35df118c devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x35f31592 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x35f3ff4e regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x35ffba58 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3609d822 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x360b59b8 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3616d024 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3617c4da crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x3619711b sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361f55a9 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x36209007 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x3630875a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x363b717b ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x36613c9f i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x366407a9 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x366b9e3b sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x36782d32 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c924a1 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x36d2998b default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36ead3c0 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x36ef87b1 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x36fa0836 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x370356c4 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x370e5e4f acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x3716d2b3 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x371ebec3 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x372ae832 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x373f465d devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3743acd9 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x376f81a0 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x3787da0e vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x3794218d tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x379de5d3 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x37a6bb02 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x37ad06ef usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x37cc1f31 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x37d0bce4 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x37df5284 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x37df79c0 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x37e0838d print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x37f4f148 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x381925c8 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x383128ff pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x384ed5c5 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x385e5224 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x3874ba0f power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x38758e9e usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3883a7b0 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x38a20c7a __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x390c8441 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x39204981 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x3929f1b4 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x394b2101 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3990fbd1 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e8afea acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x3a0b3e74 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3cdfae usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a550bc9 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3a5a8f2a phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x3a5bdd5b crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x3a5de579 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x3a6ef51f spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a8d08d4 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab07585 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3aba3841 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x3ac6cc91 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ae75069 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x3af40849 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3af8ff1f led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3b06146c pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x3b37925b screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x3b41261a bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x3b534137 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b54b425 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b8afcf9 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b8d9cd6 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3bb1a9d1 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3c2c24f3 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c8138b2 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x3c831887 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb0f6f7 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x3cc4a55e _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce4de0a ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3d2ce1db ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d7ac6e8 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d8f3844 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3dbe8108 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dce78c3 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd280d6 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dea4993 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e0dd69e ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e41d98d tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e565f8b cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e62de2d inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x3e695734 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7c92dd usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x3e808edb vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ee1c5b6 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3eeb24be xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0d1ce3 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x3f13ad79 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f2cf80d devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3f674786 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3f6a3e10 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3f79a378 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb585af blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x3fd7a312 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x3fda77ac device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x3fdf0501 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4010b80f pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x401e84c8 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4037709a led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x406488ba device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x409c6834 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b5c7b1 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x40c107fd nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e79859 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410ae8e9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x410afad6 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4112d5b3 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x41389161 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x414f63e3 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x416ffeb3 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418710e7 mce_inject_log +EXPORT_SYMBOL_GPL vmlinux 0x4199989d hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x41c86421 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41d208b1 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x41f6f878 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x422eaa05 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x4249b8e4 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424e972c pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x426e50b6 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x427867e6 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bb8d80 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42e96c26 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x42f82828 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x43164628 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x43190dfb wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x434da868 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x435e9808 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x436bd7bc subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4374764f ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x43781780 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x43853639 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x439cff54 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b6916a regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x43b857bb extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x43c59fde dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x446904c2 intel_svm_unbind_mm +EXPORT_SYMBOL_GPL vmlinux 0x446b3199 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x447f03ba blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449c9aa3 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x44ad2376 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44b585f1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c398bf nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x44cb0ad1 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x452069ea blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x4523ec36 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x453056d8 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4592b74f pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x4597b327 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4619d905 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x461d08f1 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x4624a0ce dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x462a96fe pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x463430d7 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x464fde09 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x470b78db __class_register +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472e7191 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x475e7bce iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476e0531 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x4783c634 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x47872414 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4796c2f6 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x47a913ed xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0de33 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x47b443ed trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x47bcf33d __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x47c39810 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x48058b9e regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4852fb8b devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4860aee5 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x486807ea wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x48694005 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48829939 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x48b8a3fe dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x48e91691 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x49015e8b rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4945e1a7 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x498fd382 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499244ad ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x49a02e42 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x49a7ae24 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x49af855a ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x49bcf8ef udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x49e4eb33 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x49e5627d driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f257b2 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x49f5d896 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x4a004a8b blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x4a02667c rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4a18dc17 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x4a1b8c76 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4a261a63 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x4a3b3d28 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a6e5022 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a99ec8d generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab3b92f wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4ac23e93 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x4adf96c3 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x4b1ad1f3 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x4b4d36da usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x4b6d230a ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x4b849d90 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b9eb9f3 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x4bbc2528 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4bc22984 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4c0aaeb8 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x4c200905 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c467a9d debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c84c732 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4c8d7529 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x4ca41343 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x4cb86f3e usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x4cd5b6e1 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4cdea1c7 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d064bc3 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x4d46d52f ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4d57e9f3 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d6bbcb2 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4dc3d36b md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x4dc9b2f7 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4ddafc22 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4deba616 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x4df22387 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x4df63be3 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x4df96aa1 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e469813 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4e4a0091 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x4e4a697d regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5b0050 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e74873a fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e955b93 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ed1728d mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x4ededc96 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4ef1e9e3 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f28aca2 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f35a58d tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4f464ca4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4f6068e4 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4f6106db __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x4f66fe35 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4f676dd5 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f81a492 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x4fb3321d regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x4fc57b5a fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x4fdbeb0c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fdd75d9 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff1eca8 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x4ff2a15f sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x50077bf8 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x50087221 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502c1702 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x50886e25 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50aa4261 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x50ac5451 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f17dcb raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x51307f44 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5142e0e2 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x514413aa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5149c277 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x514f22da dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x516af97e inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x519a047e acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x51a5b22b to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x51b7e823 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x51c00831 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x51e8db24 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x51f45756 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x51f5fed2 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x51f79b45 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x524751e4 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x529f734e dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x52a03d36 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52abc096 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x52c3eb36 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52dbc2d4 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x5326fb3f spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5363ba7e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x536d98a2 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x53722a3e scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a2bbfe pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x53bb3dbb bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5423c0d6 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x544c8cef ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x545ee955 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54630078 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a16666 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x553a0f63 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553c9277 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x55407c7c inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5543689b usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x555f608c crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x556d3f50 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559bc6c0 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x55a35693 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x55e628d9 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55fd8362 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x561b191c debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x561c634a max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564ece3e usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x564ed3ae tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565ff390 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x567b5cbf __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x567ced17 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568a8dae __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569d0a39 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56aa9d2a crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x56c76fc1 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56ded0ff __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x56def829 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x56e0fad2 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x56e4218a trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57016a65 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572c2efe cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5731713b tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x5744ecba da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x5745f478 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x57566ca8 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57bb5baf posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x57c2c8b4 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c88a83 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x57d54b68 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x580aaa29 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5815cd02 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x584a42fd crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x585a79ad tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x586b7723 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x58740a39 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5880e274 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x5883d2d2 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x5886baff pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x588839e5 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b9fcbe crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x58ba09f6 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x58cae48e wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5903c53e __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x59211480 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5921d8cd acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x593a60bf disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x5942c38e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x59471b0e serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x5967fe7d nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x596e45b3 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x597715a8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x59797393 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x59ae8385 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x59b0882b md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c86d57 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ef80bc rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a3ab920 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a4f61e5 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5a616f11 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f6e3b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x5a97910a ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x5ab5c80b pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5adc1a35 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b02f175 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5b06ea4a crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x5b1899f8 free_iova +EXPORT_SYMBOL_GPL vmlinux 0x5b36b39b crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5b5748e3 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5b86063b handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b90f4a8 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x5b9301c9 component_add +EXPORT_SYMBOL_GPL vmlinux 0x5bac2775 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be5a676 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x5becd48c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x5bfdb5c3 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x5c1044ff usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5c18f1b7 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5c368371 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5c3e4bd1 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x5c410ac1 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c8be8b7 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x5c91ba44 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5caf9952 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x5cb8c1c0 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x5cc193c7 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x5cc1cf66 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cd488d4 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x5ce0ea5a extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x5ce933c1 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5cfac2a8 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x5d072caa thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5d0845eb __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1308d1 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x5d3393c7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d366a18 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d4ce6a1 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5d4ea328 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x5d5c3814 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5d7c6dfe serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x5d9f62e2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5dd4a88c usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5dfdaaa8 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x5e0bec63 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5598fb blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x5e5a7fc8 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x5e6440d2 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e75f17e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5ed4734c swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x5edfe156 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f138636 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5f218bca bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f243d68 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f3f875a rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f45acba kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5f719fcb pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x5f913cb5 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5f9c56db dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x5fb71317 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe907b7 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5ff40cff usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x5ff5f6b6 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x602492ed debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6036850d devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60406b50 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x60579fa4 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b20388 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x60bc88c1 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x60cae7f0 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x60cbe384 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60dbc6bd pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x60e0d55c sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x60e4cd9e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x60e73399 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60ea9fd1 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x612a4ccb bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x615b590e wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x616c616f param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x6172aec4 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x619d1da2 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x61a94a49 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x61ab4d41 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x61ad48d6 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61d71313 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x61fd3a20 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x620fe382 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x627a4cc4 apic +EXPORT_SYMBOL_GPL vmlinux 0x627ad7e5 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x62868090 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x628b7288 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x628cba77 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62c412d2 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x62cf1701 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x62d5c410 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x62d7b27f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x62e1e99e device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x6302b055 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x63095c0b device_create +EXPORT_SYMBOL_GPL vmlinux 0x63128b8c acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6333072c gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x6344078c gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x63494fd3 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63681202 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x636a272c balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63a01514 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x63aa44d3 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x63c34e18 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x63ca5d01 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63e6dc24 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x63f4015a sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x63f438f4 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x640b9e08 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6411a6cc pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x642da771 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x642fe6f0 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x643518f2 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x646bef0d register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x646f5b94 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6474bcb2 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x6483280a skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x64ab6c2d usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c124de skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x64e0f538 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64f2d164 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x64f55f90 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x64fdf36b __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x65011eeb devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x65044c02 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x6519e763 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653ec991 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x653f917d fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x656a38fc find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x656a69ea cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x657432ec usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x657883ca scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x657ba815 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65a02268 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65fd9080 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x660d391c balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66166f7f arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663c044c ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x665ecab0 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c79e54 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x66d73485 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66db25b4 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x66e224f9 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x66ea77ac gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x670180c0 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67519f9d device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x67535ebf netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x67628ba5 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x676a35b6 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x6785159d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6795c828 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x679f51ee wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x67bd66eb device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x67d10eae xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x681a9a87 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x6832ffaf blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x684b9824 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6861a815 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x68894b25 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x688ef081 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x6890bfc4 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x68a03615 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x68a15d78 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x68b42741 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x68b43884 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x68b4410f usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x68b702ce tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x68cac664 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68f07ebc debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x68f41105 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x69163e19 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69221e37 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69378f69 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x693b2103 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x693e025b uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x695d561e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x695fbc92 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6974d1ec device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69808d3a debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698d9dc1 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x69b87a9e tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x69d210a3 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x69df67ac subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x6a0a4517 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a27f097 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a527d6e tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x6a535b27 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6a597ba2 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6ae9e8 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a83ea32 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6a9af5f0 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6ab6da6e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6adb1ca4 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x6ae56ca1 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x6afaef7c usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b343433 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b690c5d led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b8518c2 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x6b90c1cc crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6bb98828 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x6bc8ea5a ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c120c5f register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c13d5a6 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x6c3037a8 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c55efdc vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x6c6538df init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c95d29c regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x6ca0757f cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cc9bf07 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d132b72 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x6d1988b9 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d6c5db9 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6da513e6 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x6dd97e0e regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x6df62939 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e053c22 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6e20182d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x6e3cb319 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x6e4fb575 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e83aaea rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6ebef4c0 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6eddf62f transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6ee4aa93 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6ee5465d aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6eec97bc kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x6ef8bc66 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6f098f4a cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x6f0b0042 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x6f0b1aff securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2d5373 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x6f342845 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f65aaca gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f8c0765 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x6fa4becb device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x6faea2db pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6fcea1da scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x6fd442a4 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe3dd25 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x6fef2a9a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70000508 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x70066b7d tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x700a6f1b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x70279256 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x7036d0ac class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7046a08f xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x7069eb02 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x706af7c3 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x707c7e66 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7099185c da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x709ed522 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70be4a1a kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d96c79 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x70dceda2 get_device +EXPORT_SYMBOL_GPL vmlinux 0x70e4b934 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x70ee8212 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x70eefb17 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x70fe8532 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7102ba42 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7183f095 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x718e07bf gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a64a33 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x71ba2eac arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x71c6bccb regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x71c6f8af efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x71cc0c72 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7238810b regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x723e35e7 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x72765667 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x72787f1b iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72aa0d35 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x72ae571f power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x72bae5ad led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x72cd9925 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x72ce9547 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72dc496c get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7302ee3c device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x731c2c36 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x731da73d gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7360bb3f sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x7363630d sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x736560b1 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x73696657 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x737996ec xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73afb372 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x73b36046 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c4d900 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d39d91 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f38267 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x74277318 device_del +EXPORT_SYMBOL_GPL vmlinux 0x742b01fa usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7440ef81 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x744c9494 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x74612702 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74662b73 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x7479fb6a dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x747cd657 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x748e15cc gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x7497ce43 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x74a3843e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x74aac365 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x74b42f69 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75238e7e ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x75264c92 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x754bffee irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x7551cb3a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x756169a0 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75926ff2 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x759b62fb adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x759c3e0d usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x75c300ec usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x75c3f40d param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x75c6f9d4 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x76013c68 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x760197e0 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7610147b policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x761bc9ab blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x7638ac4e dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x766f80c0 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x766fdfc7 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x767d9b44 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769ac73c unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77161301 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x7725a52f usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776300e9 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x77753753 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7782b5de scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x778b675a pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x7796e9b2 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x779f0c16 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x77a307f1 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x77a66bab tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x77bb96e7 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x77f4d018 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x78135fa6 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x7820fb57 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782f122d regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x782f578e simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x783d4306 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x783dcbd8 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x783fec05 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x78448200 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x786d515b rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78754993 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7895e09e shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x78ad0394 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x79025aed anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x790f359f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x7929ef96 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794dda75 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x795e340e splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796cc8e6 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x79704d3c irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x7997382f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x799e50b3 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x79a89291 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x79aa32dc pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x79ab4009 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x79c9fd15 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a28c19c phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a709c4d sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x7a7578cb rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x7a8b4b53 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab11d2b skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b08328b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x7b0c78d7 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1809cf usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b26941b handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b5a2ef7 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7b67549c __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b79a922 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7b89dba7 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x7b8e83c5 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b91331b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x7bad313a adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7bb1b8fd part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x7bc9c528 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x7bd1439b mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x7bda759f iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c0993a2 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x7c17f44f bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x7c2b7be9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7c3058df __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x7c351a58 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x7c6ef449 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x7c8a345b devres_release +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9c1036 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x7cb98cb2 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x7cb9e32c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7cd5f9ff shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7d271 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7cf41b3b edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7cfc9520 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0e1d95 hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d155c92 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x7d53f713 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d676468 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7d83ff68 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7d896cd5 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dabd725 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x7dbd1c82 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7dbeb5d2 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7dbf0797 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7dcdc93f __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x7dd9f0af bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7e0aa2e0 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x7e1e0dce ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x7e4a4ac1 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e59e5bc regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x7e629287 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6b6afc crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x7e78e961 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea2c667 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7f026882 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x7f0bc8e0 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f1b7a57 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x7f1ea504 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x7f22e856 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x7f2c129b nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x7f2f7ef2 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x7f3658e6 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x7f559767 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7fad528f file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fc3644e device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x7fd0c727 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x7fd8c6cf firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7ff4fe79 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x80297c52 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x802a11a4 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8031a296 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x8042d9f2 intel_svm_bind_mm +EXPORT_SYMBOL_GPL vmlinux 0x80445598 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8086a4d0 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809529fd alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0x80995293 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x80a1de18 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x80a6d6ed usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x80a88e2b serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e0d0dd ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x81151195 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81308eb4 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x813c92d1 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8174e1f3 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x81ae6dfc usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x81ba22cd bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x81dd6252 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x81df8c54 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81e5bab3 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x8209f424 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x821f52f3 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x823c26f7 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x8254fc4c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x8273c6f9 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x82762026 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x82954507 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x829e8d07 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x82b9057d cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x82d158e7 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x82d74630 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e4965f gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8306ebfb sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x83089a7e iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x831f181e xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x832c6cee percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x833fe015 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x835e9f54 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838dab94 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x8390f773 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x83b8877a iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x840d5ff5 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x84251875 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84578b92 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x846afe59 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x846bca7e tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84900a64 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x84a189da unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84ce100e usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x84f14e86 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851df2e0 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85405142 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x857b7d53 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85bb52cf fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d34c8e dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85ed2bcc tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x860971b0 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x863c955f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8668fabb netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x86774155 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867debc0 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86965449 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x869d1562 input_class +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86dc5f5d ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f5d471 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871d7a82 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x871d96d5 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x871f0088 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8744eb23 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8760bc6a vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x87844457 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x87a93e46 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x87ce2af6 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x87f7f3df rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x88273ef2 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x88336aac ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883c520e ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x883e980b devres_add +EXPORT_SYMBOL_GPL vmlinux 0x88469f0d virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x88497bd9 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x885d43ac dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x886f6d8c dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x88734a79 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8891c8dc serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b9a118 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x88d1dd9a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x88ea6221 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x89002d8f sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89545ae1 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x89789f9b crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8990a453 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8991b4f8 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bdaa15 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89ddaf9d dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x89e03080 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8a3936ca regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x8a3fcefa __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x8a48cfa3 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a4e67e0 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a67c352 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8aa8a5e0 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x8aaf7b43 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x8ab4501e irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac5ab67 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8add7e52 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x8ade735d __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x8af32728 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b71e202 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9373ae devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x8b9f2b79 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x8bc8f1b6 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8bcfa044 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x8be4c078 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x8bfc56dd power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0a7b06 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8c4fea4f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8c593e8f dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c67da6c exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8c6d821a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c750398 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8c8cfbc9 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x8c9c0c4f virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8c9d68d6 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8cb88237 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x8cc5242e crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3dbdcf debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x8d4b54bc tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d6cc888 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8d7fa7ba platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8dc4c38b tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8dde92c2 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x8de9d242 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x8e0b6098 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x8e123f84 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x8e25506c nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e2e192d inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8e542fbf fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x8e544e5d regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x8e56aa59 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8e635a07 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8e87bc27 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x8e8c7485 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x8e909902 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8e98e05c kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8e9ea3ef xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x8eafabe3 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x8eb37c48 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x8ebfb3d9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8ec109e8 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x8eca7f3c sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8ee1adcb usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f097124 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x8f141197 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8f3265e5 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f72ae3a inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8f74fadc __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x8fad70d4 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x8fb0b3ab irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x8fb1aed1 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x8fe0a76b tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8ffeb0f5 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x904532cc pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x904ec807 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90716d3d bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x907eff09 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a4bbfa usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x90ab975d acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x90c3ea98 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90debb8c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x90e46738 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x90e95b1b tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x90ef4f40 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x90f886a0 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x912e59a3 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x91868670 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x91870034 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918cff6b mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x91916488 blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x91953e65 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x91ad0e1f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x91aec389 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x91b58c7e pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x91c0ef9c rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x91f14f4b wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9211fcab led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x92193c07 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9231d31a pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9280810a skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x928a4e59 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x928dfb96 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x92986501 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x929ffec8 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x92b9a3fe max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x92cd0629 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x92cfc19e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x92d23d0b spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x92d3cfa1 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x92d6e721 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92df1815 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x92fd905b acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x93520465 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x935213ed tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x936542ad ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x937b712b genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x9380bdd7 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x9387d7ac sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x93b2090d pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x940c96be rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942c87b2 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94466408 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x94496ba1 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x9453e22e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x945b87bc acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x94622b91 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x94939195 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94beece2 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94d1bf65 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f87c87 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9512d865 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953db93f scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x953ee1a9 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x9552e78b devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956962c4 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x957ca68c phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95a4b878 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x95aedeba usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95d9bdc9 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x95f608e6 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x9619e2c0 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x96464f7f devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96477a87 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x967041cd regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x9671cd1b __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x96739e9a __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x967c7f2b __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9693f996 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9693ff04 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x96c47376 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x96cfc83b single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x96df31c6 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96eccc1b dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x9720a779 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97713751 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x9775a73f hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x979775b9 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x97b00550 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x97bd3597 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x97c3ebac skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x980e9a83 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x980f9391 xen_remap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x98269b55 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98435c85 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98576dc6 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x98697399 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x9871ff88 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98d7f11b sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x98f33fe1 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9908fa13 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x9913d8c7 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9925ba3c pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x9945f71d xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x99484451 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x995cbaa1 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9965d5c1 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x999d83bf __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99aae62d wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99f0fea4 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x99f91cc4 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1218bf efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a25f042 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x9a5b06a3 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x9a7d60d6 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x9a85ebaf usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a960882 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x9aaabf7a crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x9ab34f4a powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adf4200 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9afa9134 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9b235673 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9b47e72a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9b533c1e usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x9b5820e8 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x9b603f4c xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7e8a89 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x9b813d53 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9b94b3f6 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x9b99624d simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba7f824 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9bb62922 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x9bc6f2b7 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bcc3c41 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd5c5c5 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf96aa3 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9c09dc5c nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c1c246d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x9c1e3d52 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x9c28c307 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c2c0bde dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c5ddd96 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9c76844e pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x9c78cc10 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc5a7f1 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd76711 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d4abab5 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x9d54af96 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x9d6ca56e virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9d7f6cec sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dd9418c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9de4bdfa ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x9df952b3 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e0b3d35 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e1f16fd sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5654f0 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9e71dd6e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x9e75d038 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9e8033bf pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x9eb6b711 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eed99c2 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9f0ccbc6 user_read +EXPORT_SYMBOL_GPL vmlinux 0x9f0ced89 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9f2b9d8c ping_close +EXPORT_SYMBOL_GPL vmlinux 0x9f2e8564 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9f5afbcb blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x9f6b3254 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x9f768bb7 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9fa666ac use_mm +EXPORT_SYMBOL_GPL vmlinux 0x9fa7b0f8 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9feee93b noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9ffe9377 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa002a233 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa016d8b1 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xa0313f56 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa052d4a6 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xa080009c kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa0837c77 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xa085565d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa088159e usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa0a2bc56 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xa0c2a794 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xa0f334d1 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xa0f72db1 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa0f73fde devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa1017f5b swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa10a91a9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa12fef87 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xa1450373 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa1498221 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa171b908 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xa176e01d inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa1786388 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xa187c70a device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa196e109 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xa1af7e83 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xa1b20df8 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xa1b3d09b setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1c25516 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xa1c5e589 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xa1ed4605 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1f96987 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xa202995f zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa217e0d8 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa21c476e usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xa234d02c tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xa2477fd8 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa24bcb67 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xa258d95d pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa25ede92 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa2a9d23e pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2ae9ac4 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa2afcf3b usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa2b1c461 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2eb6cda acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa304e19d gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xa30a1ac8 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xa3245dc5 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xa3468688 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3708c16 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa37aa058 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xa382ea63 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa3835567 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39e76d6 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3ae65c6 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa3b19fb6 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c14261 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xa3c382ee devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa3cc6953 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xa3cda590 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa42fe19e pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa44e0f1f rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45fbf63 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xa4658907 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa4670c05 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48f9bfd __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa4a01f49 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xa4c91a0a usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa4cf77f3 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa4e98b36 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xa4f76f0c lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xa4f9b5b9 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa4fbd0a7 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xa518d5a1 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa5293223 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa52a78a8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa570e38a blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xa578e0f8 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa580aa5c __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xa58ea125 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xa58ea155 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa5a3cb01 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xa5aadcda crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xa5b5a67c acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xa5c9c4c3 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa5d0f5a1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa5d3cc94 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xa5de7b04 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5ff3083 __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa621c360 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa655b117 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa657965f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6b1e30e ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b4cb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa6c85f80 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xa6e0b763 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa7069ad0 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xa7175a7f irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa71e8e9e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xa7255df4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa731ce5a blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xa7621d2c nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xa762c8f2 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xa7660c41 klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xa76f1523 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa7cf4a5d securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xa7dfccc3 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xa7eb7a46 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80493d6 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xa81663d8 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa82bf37a regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xa82df24a class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa8336024 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa8506bdf pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85893ba __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8615507 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa8765d02 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xa88a5d1d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa8a4829e efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xa8a887d0 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8d2b65a device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa8f01fa9 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa8f2781c crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9143342 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xa92de6c2 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9495912 klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0xa95398f8 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa97d7ed9 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa985c67f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa99dc24a bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xa9ab0c13 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa9ad1137 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa9d3215c crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa00261f crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xaa0c010a nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xaa0d2058 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xaa16e740 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xaa2e60f6 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa3638a1 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xaa6c3c03 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xaa7b3a2b tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xaa7c54d5 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xaa7c78dd usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaab1208 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xaac80fd9 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xaac99b45 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xaacd3cd4 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xaad58490 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xaae2c20a xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xaaeb191a ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xaaef3c68 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xaaf74259 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab01c80c dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xab0de1ae PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab1fdf7c get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3f3f6a power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab68bbfd pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7307db ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xab7a6c6f ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xab817be9 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xab90ff8e srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabafdb8e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xabb6fac5 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xabc1f486 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd17daf max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xabd4ccf3 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xabf379db pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xac10c242 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xac125050 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac248f7a gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xac2f2e25 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xac5f4589 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xac6e6814 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xac96cb24 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb27cab ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xacb8b4d7 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xacbcc27a od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xacc9d9dd clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace6f734 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xad1803c8 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xad321f04 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xad4a37f7 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xad4cddc6 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xad52a305 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xad549f7d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xad602f54 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xad821ac9 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xad828c3a usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xad8295ac watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xad83ad52 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad921c18 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xadb78b58 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaded74fd usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0f662f unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xae20fc45 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xae506be0 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae795625 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaeb47907 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xaec5c4cd usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xaecb2e52 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xaecde6f9 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xaf1e5540 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xaf3b5752 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaf4e3eac scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xaf7a1f22 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xaf872033 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xaf914c5d regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa2838a fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xafb6961a iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xafdd65ca find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xafeff48f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0211d9e rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb05fea36 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0826c1a usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb0b10249 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0c04705 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e11261 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xb0fe580a br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xb1171f30 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xb13723e0 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb149e8bf ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xb157fb4c klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0xb1617ab8 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bedeb7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1fb1beb fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xb1ffe403 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22f4346 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xb242c584 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xb25197a2 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28674fd usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xb2963478 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2a7c0da debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb30ebf5b devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xb3246186 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32ce76f rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34dac2b ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb3520dcb devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb35d853d pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xb3644ec0 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3c6f75b get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xb3fdb57a yield_to +EXPORT_SYMBOL_GPL vmlinux 0xb4051b00 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb40be953 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xb41ae9d0 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xb42d01cc phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb44bbd99 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb45977e0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb464c751 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xb4733e94 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5081a95 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb5123957 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5256a09 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53f65b1 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xb54a0318 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xb54d0677 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xb57afcce regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59c030e blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cb7695 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6291a89 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb645de8a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb65ae975 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb667b101 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xb66ee6da ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xb68d174c platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6be7014 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xb6d14046 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f6200f __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb7158224 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb72fb177 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb745905f __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb74c9595 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb7841ca5 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xb787ab7d cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xb78e12bd nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xb79bf535 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xb7a436f2 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xb7aefea3 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb7cae129 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb7d07db4 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xb7d7119c virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e00eab devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb805e6dc crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xb80b1d3c filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb85ce9ae l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb869effc inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xb86aa371 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb86df2fa dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8a7d6ec print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0xb8aea545 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb8af906f sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8c459be usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f40c9d gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb90b64ee device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb93240ef crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb9457f01 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xb945ace8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb9583235 md_run +EXPORT_SYMBOL_GPL vmlinux 0xb961a19e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb972b065 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xb9787d16 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb987f7d4 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb99d4803 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c54507 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xb9cf966c gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9fb43e2 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xba238806 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xba2a6108 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba43bc91 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xba533478 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xba659bc8 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xba678941 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xba73a2ca usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xba7f4881 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xba83386e platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbaa29bc2 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad41a54 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xbad6a3bd clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xbadf891b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xbae5e8f0 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbaf9094f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0d10a9 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb1b8b05 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xbb329204 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xbb3d6c0f tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xbb45d4ac __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbb581fe8 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xbb5f3162 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb82bc40 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xbb87ad67 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbe02170 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbbf84413 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbc0a45ae xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xbc1c0e12 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xbc4217d4 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc803420 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xbc9a4e11 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc3457a list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xbccb434f fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbccd4d0a rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd2e39af blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xbd351d12 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5e4097 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbda061fd acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xbdcbf719 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdd6da9a rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xbdfce099 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xbe171ee2 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2e2e06 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xbe3895fc tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xbe48906e xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6dc208 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xbe9bfd42 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xbea48a05 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbed66204 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbefe3a22 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf08bc7c xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xbf15fe88 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xbf2c012f usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xbf629d18 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xbf6a4ce9 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbf6c1957 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf70fac0 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf88a612 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc55f53 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff3066c sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xbff574b9 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbffd4142 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xbffed7d1 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xc00ec1ae find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xc0244b99 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc033852f __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc07cd88e tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc0836dcc crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08f5015 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a33743 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b1b470 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xc0b8ffcf unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e4ba75 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc11f8a51 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xc12ea904 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xc1459e72 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc15311f7 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc1693217 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xc16b3215 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc178d02f nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xc1987024 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc1ac3e50 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc1c5ebf5 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc1c5ec7e devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xc1e36d36 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc1eb76fe dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xc1f06560 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xc20f4b9a devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc2157412 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xc224fd26 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc231b3e6 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xc23bbe48 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xc24bb7ab usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xc25758fe pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc25c9da3 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc2728a92 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xc2796a3f _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc283d3ba percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc29001b4 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xc2b819df set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xc2bd8e30 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xc2dec1bc ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc2e831f5 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2ff224b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34fba66 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc3656650 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xc36def0f rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37bb200 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xc37c2384 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc37c35d3 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3b819fc pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xc3d9d64f mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xc3e9273e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc4246b88 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4381340 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46590a2 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47bd4f0 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc490cb50 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc4c22dfb ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4e84841 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc4f07e75 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xc4f5cf88 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc5147c94 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc5261240 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc571cdef __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5958ff2 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xc5a118dc sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5c12729 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5df9e7c pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xc5f6f340 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc625ceb3 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xc6385859 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65487ba regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc688d72a usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a8556f shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc6a8b014 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc6c049a1 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xc6c316d7 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xc6c8274b crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6da7a0a __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc702a3d5 mmput +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc71318ab device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xc72326ce __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73b5fa0 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xc74e250b set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc76f139f usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xc7861bb4 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xc7890585 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xc793dbe0 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7fb53c5 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc809e274 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xc81977f6 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xc81b765d put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xc835b940 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xc877fa59 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc87aa42d pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87c460f led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc89adc4b spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xc8a6749f ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc8ac389a fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b795a7 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e426a2 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xc8ed1a41 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91753f2 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xc91e826b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc91f3fad crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc9214bba system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xc925c78e ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc9340fcb gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xc9550d25 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc96691dc ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc97831ab device_attach +EXPORT_SYMBOL_GPL vmlinux 0xc99fe2a0 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc9aae160 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9d01a14 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fa4712 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xca0d45f2 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xca21c145 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xca3102bc pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xca3d8275 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca991a53 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcaa5de9b pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xcaae9406 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad3758c ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xcad73ce3 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcade2a88 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xcaf7931d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xcb0f9eec rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb59bb2a fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xcb610ee6 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xcb635f82 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb820d6c fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb9d58de __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcb9eaef0 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xcba20b30 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcba58553 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xcba7839e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xcbade0fe relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xcbd7d074 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xcbdaff51 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xcbe470cf crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfb73e5 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcc22cdeb pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xcc33c609 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcc3a2a48 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xcc3d0f52 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xcc440534 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0xcc49f06c virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xcc59e4ce crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xcc5ca8c7 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8926ff crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcca9c6b4 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xccb7ced8 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd1f5cd1 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xcd3ed649 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xcd41939e ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xcd43d168 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xcd46c5fc efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xcd4c4b03 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd700b32 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcd760588 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb3742a device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc50e9e io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde69cff rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcdfa538b tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xce031871 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce4b03e9 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7316b0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xce85a631 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xce898f88 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xcea4c74e ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xceafa9a4 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xceb13a0f hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xceb1470d usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee7b0c2 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcef90f75 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcf1b92c9 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xcf2c832f __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xcf3dbe52 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf581dc0 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xcf62c764 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xcf91b9de ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc4144b sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcbd0fb gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xd029e898 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd043308b sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0adf129 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0fd2d94 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xd13b3239 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1553b3b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd164240d anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17c8ea4 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0xd1911d86 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xd1944b9d rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xd196b570 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xd1972afd iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xd1a64fc4 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd1ce6d76 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f58af3 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xd1f64cbe pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xd1f85e3b fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xd1ff6a87 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216ddc3 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd2533c44 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xd25a447e perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd2991c6b irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0xd2ab95d2 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d445e7 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e3c9b4 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2ebb9bf blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd359eadc class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd3ef6165 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd41adc01 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd4320214 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd434c9b9 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xd4422a73 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4903986 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xd4a73e15 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c42cd6 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xd4d0097e debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xd4f61883 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd4fb8659 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd50fbe75 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xd5108217 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd514055f queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd534f48c pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b372a register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd56f955c __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd595c3eb ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xd5b7e2da blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d73c43 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd5fa1ee5 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60d43c6 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0xd616592b blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd629ccbb posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xd65ef0e3 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xd65fd38d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd686639f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd6869daa nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd69a4ed7 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xd6ac570a usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xd6b09ccb irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd6bba104 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xd6ccd236 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xd6daf59a regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xd6ea339e fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71372e8 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xd71ecda1 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd71f94de ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xd71fe93b reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd731dce0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd7667634 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79dacab netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f2cea6 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xd7f76e3a find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8244fd8 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xd8333d00 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xd8402d0b regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xd84c317a pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xd8609f35 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xd86730bf fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd86a5057 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87cf6eb rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8823b72 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xd884c573 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xd8857864 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd8a25111 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xd8aed1b3 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xd8d4b9c3 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xd9023cf1 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xd90adb6a gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xd90cfddd devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xd90f8909 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xd9132749 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91bc4b5 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xd9398715 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96c1d21 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xd973d7f1 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9ce9b57 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xd9d1b08d sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xd9de0e03 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd9e925f2 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fcd2fb wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xda251c4a uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda3922e4 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xda496227 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xda4e3bcc pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xda5797ac gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xda64e8e3 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xda70c5d1 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xda93b9db spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xda96a47a xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xda9cf934 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdabc1903 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xdac0762a pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xdae316f0 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xdaeb0701 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb424771 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb4d8f50 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb609099 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdb94a16a ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xdba05f51 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xdba2b13f __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdbab23f8 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xdbb4597a regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdbc27698 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xdbd0b147 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfca646 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1a74f8 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xdc1f2908 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xdc54c381 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xdc5f662a platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xdc5f900b ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc919cda napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc2623e task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdce03cc6 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xdce9435f pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdd003822 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd18700e ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3c7e8e i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xdd4602b0 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xdd4afb88 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xdd502b90 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc325c4 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde0f2fcb exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xde187b04 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0xde2e4e81 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde7e8502 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9c7319 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdea0a19e dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xdea4484c usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xded087ef dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xded2e160 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdedd6d3d bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf44bf44 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xdf576447 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf59f790 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdfb37a43 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xdfc4c381 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xdfc73752 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xdfede2d8 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe088ece2 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xe089a592 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09ad350 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xe09fa559 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b37e89 acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xe0b6ef17 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c811b0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe0d8d136 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe10097e1 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe109b761 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe13b18a5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe14fca55 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe164e75a nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe16fd220 user_update +EXPORT_SYMBOL_GPL vmlinux 0xe17241bc devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1854d47 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe18c7f02 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xe1916116 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xe193db03 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1cfb679 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe229df44 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe22a547b pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe23acdfd inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xe2425753 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe24dd25a devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xe26ab7e1 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe26b2472 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xe277da04 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29349dc copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2abd0ee kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xe2bde24b arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe2c2f36b iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xe2c99b8a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe2cd6c62 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe2d982dd fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xe2e75497 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3160b6c xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe325409a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3487b59 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xe348af87 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3951f99 device_move +EXPORT_SYMBOL_GPL vmlinux 0xe3b26328 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3b87826 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xe3bb2f6a posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3c50ec6 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe3f82be7 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xe4037e8a __put_net +EXPORT_SYMBOL_GPL vmlinux 0xe40d0893 smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe426581d debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe437ad60 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe458fa12 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xe45b363b fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe465a57c nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46e2cfa acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xe46f9f83 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xe47f68de devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe499a784 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe4c17664 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe4c3c781 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4ce7834 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xe4dd772e crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4ef0e67 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xe4fce929 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe526eac4 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xe53f2a2c flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xe545a811 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0xe57a2bb8 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe588b75e unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5942d11 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xe5a6e71c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5db3048 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe5f9b6fa is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe656af54 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xe6705289 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xe68460ed pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xe6950a74 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c69cb6 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe6de5a49 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f23940 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe6f43090 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe70a7a31 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xe7101c9a perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xe713db26 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe747d84a device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe74ef3a4 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe755ae0b led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77cfd2e device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe79ee9af acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xe7e72172 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8787b59 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xe87b2f78 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xe8860956 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe89cbf3d cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xe8ab7f2a virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xe8abe080 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xe8cd768a pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe8dafda5 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xe8f1c67d cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe909e6f8 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe97018ca i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xe97f2b72 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe98a0123 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xe9a09017 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xe9a418c0 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0xe9bc5ab9 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xe9bef4a9 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe9c77714 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe9ca3bf2 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9fde4ca input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1e85db tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xea21880d arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xea248a91 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xea3f4f5e pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xea3ff7c2 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea72752f blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea774052 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xea8eda20 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xea95b6e5 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xeabcac1b gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xeaff94b4 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xeb036796 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb409c5e __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xeb5bedd4 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb5fe833 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebab293c xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec061b41 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec4606f5 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec65ab5a virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xec85120b serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xec861d0c dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xeca78fd2 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeca94478 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecb0fe01 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xecd65a82 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xece94aa4 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xececfaaf pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xeced40c5 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed3309ab sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xed381a4d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xed427133 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xed50ebaf cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xed807e94 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xed85ae09 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xed8beb6e find_module +EXPORT_SYMBOL_GPL vmlinux 0xed931d5d dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xed9ce7ef inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xeda678a7 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xedb25307 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedd16eba dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeddd701f __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xedea83b5 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xedfa76c2 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xedfedb25 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xee0c4fd9 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee1d61e8 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xee1df54b subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee4530a7 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xee557bab pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xee5ea112 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8bbaef crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xee8f9d40 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xee9eeac0 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeee812f0 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef3e2bdc inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xef452056 device_add +EXPORT_SYMBOL_GPL vmlinux 0xef5dad65 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef5ec9ea __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef87b3d6 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef9cad90 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xefa1b7a2 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefd51047 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xefeb8619 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf009b1ce task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf03fb859 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf04059b9 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf08d6ccb md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf0a710f4 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xf0baedf4 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf0c3c535 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xf0c4083e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xf0c796cd __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xf0ce915f driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fafd56 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xf10c9680 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf119ba98 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf1336898 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xf14406b1 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf17355ef inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf187b42b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1e8de0e mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf1f10975 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xf1f33ea9 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xf1fa8ede lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf20371aa xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf2170027 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xf217c4b8 device_register +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22d8475 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf23b7b94 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xf2684c57 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf26bb3c8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xf26f29af usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28d76b8 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf293d0ce mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf297ceb8 component_del +EXPORT_SYMBOL_GPL vmlinux 0xf2a259c6 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf2a53fd9 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2efe591 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2fd0734 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xf2fd5a09 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30e4cf3 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf315165f sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf320a40d driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3242979 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf329c8dd sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf32cec73 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xf32ed18c tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf339305b virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf33ec7c1 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xf348f07e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xf35d6023 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf35d67f6 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf389abce ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xf38edf57 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf396a7f0 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xf397fa80 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xf39c844e crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xf3a002d1 put_device +EXPORT_SYMBOL_GPL vmlinux 0xf3a6bd2f input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xf3b1347d regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3bcef01 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3ff7fa4 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf4049817 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xf4072b74 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf4130f8c blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xf437bc0b vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xf43d3989 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xf440f868 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xf482f656 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xf49105af cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xf492f09b acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a61c44 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf4c7bd0e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf4c97bd4 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xf4d5d9d5 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf4e36e88 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xf4e90c76 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5074d79 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xf5165230 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xf51fc127 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf53fcbff handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xf548a38e rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf555d5c2 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xf5591b9a phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xf5601176 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf56e7891 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5982b81 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c2bcab mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf5dfd6f8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xf5eb8823 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xf613d08c posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xf62575ae kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf62d1ce7 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xf6320b44 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xf663961c inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xf68a150e component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xf68a7743 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xf6c238eb page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6db7908 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ecc1d7 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0xf6f59b75 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xf6f795df pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70e4a4d preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf72daed3 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf746201e __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xf76f3a1d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf773e08d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xf786198e xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xf7914aa1 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xf7977f3d wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7b25ee5 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf7b83523 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d64a14 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xf7e5673d gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf8051ff2 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf818d679 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xf82d372e i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8339155 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xf86225a2 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf89b644e tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xf8a6dd33 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8d6bd1e driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8eb4cce __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90c7e4c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xf91d828d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf9215831 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xf9279b53 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf92b1aff regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf92ff3f1 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf940b646 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xf94cb9e7 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf952b2ff ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9e731c6 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xf9fc7f9f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xfa1411e1 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa292d09 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa419c85 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfa4ff2bb crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xfa71f8e1 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfa79abfa free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfa8849f2 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xfa8cb573 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9c5ab6 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfaf6a13d regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb79b36f irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xfbae5f93 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc3e712 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfbe694ee ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0d981d usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc4a2842 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xfc683a0d devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xfc86c02b ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca8a4e3 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfcb2a5de uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xfcf656e8 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd09bf14 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xfd1733ca nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfd17de02 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xfd19c03f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfd241fda fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xfd2e11aa ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xfd2ffd51 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd46b161 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfd4d8cf8 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfda0d081 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xfdc18c61 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xfdd8409f usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xfde2c77c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xfdeea348 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfdf5aacc __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xfdf9998e ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xfe2528c8 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xfe5036bb gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xfe6b149c xen_remap_domain_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe752ce4 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea4af5a relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xfeaed30e led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xfec4dac9 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfec77a47 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee1d5bd sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xfee8cdd6 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefd8476 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0c30fb subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xff140512 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xff2253b9 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xff2834a6 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2b7050 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff403645 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xff50ffaa unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff60b46d dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff780ef3 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xff8b3973 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xff8e9429 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xffa70d05 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffbabd44 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xffc1409c regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xffc72bd6 ehci_hub_control --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/lowlatency.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/amd64/lowlatency.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/amd64/lowlatency.modules @@ -0,0 +1,4591 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_fintek +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd_iommu_v2 +amdkfd +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +aquantia +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +ascot2e +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx2 +camellia-aesni-avx-x86_64 +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chacha20-x86_64 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cosm_bus +cosm_client +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +crct10dif-pclmul +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-104-idio-16 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfi1 +hfs +hfsplus +hgafb +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i82092 +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_oaktrail +intel_pch_thermal +intel_pmc_ipc +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_telemetry_core +intel_telemetry_debugfs +intel_telemetry_pltdrv +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mic_bus +mic_card +mic_cosm +michael_mic +mic_host +micrel +microchip +microread +microread_i2c +microread_mei +microtek +mic_x100_dma +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_hw_intel +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvmem_core +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-broxton +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +poly1305-x86_64 +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qat_dh895xccvf +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-x86_64 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sb_edac +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scif +scif_bus +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx2 +serpent-avx-x86_64 +serpent_generic +serpent-sse2-x86_64 +serport +ses +sfc +sha1-mb +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-dmic +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-skl +snd-soc-skl-ipc +snd-soc-skl_rt286 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedstep-lib +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spl +splat +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surfacepro3_button +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshiba-wmi +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish-avx-x86_64 +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +visorbus +visorhba +visorinput +visornic +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zavl +zcommon +zd1201 +zd1211rw +zforce_ts +zfs +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +znvpair +zpios +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zunicode +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/arm64/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/arm64/generic @@ -0,0 +1,17518 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x7726d288 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x8dfc5423 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xb045ecb7 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xce89cc71 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x5a23a95e btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x41e8aac9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x985bdc92 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2471c4e ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xdac22323 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe352b699 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x0df9573d st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x398ff757 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x96358e43 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa9b06db6 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xbdc671c4 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xcb243594 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xf3ff3e50 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0a089218 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0d887bea dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x21ae696a dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x23a41564 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x278c1f74 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5af67caa dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/pl330 0xd42ac67c pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x435a9e6f edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x029524e3 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d221cf2 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1e123baf fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1fb9649a fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x289b30db fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2aca5fed fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x336eb687 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x53ece0d2 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x675e164a fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x695ef3be fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6a0eaed7 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6bb51d59 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f726558 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8468d0f8 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8870e5bb fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0504045 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2466c87 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8fd0650 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb39f4685 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc59c582d fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd2d4bab4 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf58ca49 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb1e4185 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5960cba fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5fda867 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfa585b42 fw_iso_context_start +EXPORT_SYMBOL drivers/fmc/fmc 0x125f8dc7 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x32359fe7 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x590bb73f fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8077620e fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x9c5c65c0 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xa5a5c95b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xa8243dbe fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xb2c2504b fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xb6c8d314 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xfd1d1299 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xfd5319dd fmc_device_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00bf2ecb drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01ea1293 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03d6cdb9 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c33e15 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04fc71aa drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ff1372 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x057d10cd drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x063391e7 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x088e51a8 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08c74417 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa2c88f drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b2355df drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b889c52 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c302a42 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d61e301 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d875940 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f96eb7c drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x100ccad3 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10e457e0 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11721042 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117aa710 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11883fc1 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11cef0de drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11e67fd9 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x124ebbaf drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12b26be0 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12b45dff drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x132c60bf drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13c1dacb drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13cceec6 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x159493f8 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x166bf1cb drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16e4a7b0 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x188a84da drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ae5cb8 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18cfffa9 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a196a04 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a67069e drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1afe0cfc drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b83b170 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c787261 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d290cff drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d609a06 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e73f56b drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f35060b drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x226590cf drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22b838af drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22b92b2e drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x244fbed0 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x248f1330 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24e3cd31 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x258ca84b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2702acc7 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x298d40af drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a1f758 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a84fa86 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bf8a74b drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c5c0549 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d09264f drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50e670 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2da672e3 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e1d5278 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f426a6d drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f4d9d28 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x303b05ae drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304d5c14 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3065044f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3217350b drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33aa8b42 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34b9836a drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35d926fb drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e10e33 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38325783 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38452b15 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38e2d5f4 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a9f5e2e drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aee3275 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b2a23a7 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bbf2fad drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fdde589 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe3aed4 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44e417a6 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x452b5f0b drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47c1c920 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x481d940e drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4963edfd drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a5efa36 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b99cae9 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d55d5f5 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dec9619 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e1af0a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4eb6d918 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52d19f91 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x542bff1b drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54accb28 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56534f8f drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c93ed1 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59419995 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a6643ae drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a7b167c drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5af0f809 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5afcc9a7 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b1d4909 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b96da7d drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c2f123f drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d9185c0 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e15d4a9 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e5d63e9 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eb1feae drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fd2688d drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x600fd39b drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6130ad04 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6310c7ee drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6518cffd drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65385d57 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x654bd75d drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67273598 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x685e9fb1 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6929f6e2 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad62d06 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad895ff drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad96dda drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b8d128d drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bf8b5a9 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c3e147a drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cd96ecb drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d6ad2ff drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dd3ff4d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ea603dc drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f719c8c drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x709cbe85 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71829d49 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71e4846a drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72adfb41 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7343a5e6 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7369edef drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x754f297a drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b9a6b3 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78dafe98 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a3f00f7 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c691d79 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d1f09b8 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e3bff6d drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e47866a drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e7f85e2 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e920ea9 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ea0feb9 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f8f6cee drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8348bf30 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85987e5d drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8640cf1e drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x879750da drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87fd3d7f drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8992508d drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x899d1296 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a9b39f2 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ac32236 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b215bb0 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b63fa80 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d67ad83 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e9be097 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f839fe8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fec59fe drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908bbbc0 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x909d0be6 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90d43728 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92a73bff drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92e1c129 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9367991a drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94633b03 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94933ecb drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94dc196c drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9536ac58 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96049b42 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9612a9a4 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96db8e69 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x984dd406 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9882781f drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a30617 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x995ff733 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ae32da3 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b30fd60 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c926acd drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e55790d drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f5e2cf6 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fefe130 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa426115a drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa467edd1 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa51028ea drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5387977 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8053961 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa0d086f drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa8e0787 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa945154 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab056701 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab842d11 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf47af18 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafcf08cf drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0f52f05 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb16a8a37 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb195ca6d drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1eae4d4 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6c4376f drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb968453b drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaaaaea8 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac4eb44 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac6391f drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb404597 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbda7b63c drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdb043b1 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe84f4d3 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbee2c2af drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf3c37da drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfba495c drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfe4b67d drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc17eb5dd drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc285d942 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2afcc92 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33a058f drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc353dd88 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc430f30b drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc57aef74 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc813f9ec drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc870708c drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc46efc4 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0b1b9de drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0d6d1ad drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1456a73 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd230a6f5 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3194ce2 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd34fc35d drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4192976 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4bbad66 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5dcdbb6 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6c1f5b8 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7a7e6ed drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb07493 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdcd374 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde18bb99 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfa61d84 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0fdce0f drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13ad3e3 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2b0b851 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe301bab4 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe30d600f drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4b1d579 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e264e1 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5cd23f7 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe65847ec drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6d80a43 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe79bc856 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9bdaa81 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9f2a57a drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeadb37db drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb4a8d08 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xece01047 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefc17e3c drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0229640 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf10980be drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf15519f7 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1ebb925 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf20ad706 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf27e9eab drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3247c7e drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf445d52a drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf57f078a drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf609839d drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf61d7fbc drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf83246a1 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa9f0809 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc99e08b drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd285e96 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe8a4571 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfebcb0a4 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfedcc342 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7a1ed4 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x020877ce drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02fb72e5 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x034618fb drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03ce9af1 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x045e1a5f drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06759a20 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06f3c32c drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0af99601 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0fe9c145 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x110aaa74 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x134d9c54 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x154ae23d __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1acc0551 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f3be1b6 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22b1db5f drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x233ad20f drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2445c38a drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2aa0c88f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2da57983 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fbcb812 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x302a256b drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33574313 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37422f30 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37d6e2e6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38d7baa1 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3cb91a93 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e4e6449 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f53918a drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x415e5932 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44bf020f drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46cd38c6 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4859b216 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48e49b8d drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49d4f25b drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b4ae297 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f5269b5 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50ee0ea0 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x529c9e98 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52a7b9e8 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52af5ead drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54dda7e2 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x577dd84b drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x590ede95 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x594ddaf5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5af47f40 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cf10c3f drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cf5a0f9 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e2f2fce drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e833d44 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ea2d799 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62b7cb21 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63e64519 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64617ded drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64791882 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x651b9273 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x674ba202 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6848632f drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x714c318d drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7540df4a drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75d08038 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76f1b32a drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78a58eab drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b3ba85d drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cbd2e02 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e970c3f drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e9dc940 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83e2d711 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8714cea4 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87253215 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87ed7cf3 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8978dcb9 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dcc59d2 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e783485 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f54512a drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91b46f4e drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91d4d583 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92dfde40 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92ea26d0 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97af29a5 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a5d51b8 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c02ceea drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c630084 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d458b96 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fab531e drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2ee4641 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa356a912 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa495e616 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7a62644 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9592893 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad39d587 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf5d54fd drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb33aa370 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3b23bd5 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4201af3 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb528c31d drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb64ae24e drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb81f0030 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc13e1db1 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc398dab7 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc62ef90b drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca3ea5f5 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbb13805 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcda269e5 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce487aec drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd26938ed drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbb12603 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd4cc162 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf354173 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe07cad06 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe22629cf drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe446dd48 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe84f1342 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe88f727a drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeac24f37 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeccc3063 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed8041ad drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefeb9cbc __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf10b8211 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf29eb6ec drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3be7144 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4258cbe drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf715d751 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff293839 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff5c9ba1 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01cee0c4 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x030bd372 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0571f738 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07560ca8 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0eda3011 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f5f34aa ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c8ad7f4 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x221b92c7 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x263756e0 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a57838a ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c1fc621 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ded07b2 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fa3a471 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x357aaae4 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x38d403a3 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3acb45ea ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f0ca227 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x449d47d0 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45e12941 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46471b28 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ee2c30b ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5570c7f7 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x591d7b41 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59b28909 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ee757e7 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62edd1a0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63b09e37 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a77cd89 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6cd7ae96 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fa23711 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x709f89f2 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73d7e5c0 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x76f94bce ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d482043 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81a95a9a ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x871202e7 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8dc0fc65 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x909f3577 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9173bed7 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91f824bb ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95d2ff0e ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d11e77f ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f7087d0 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0e1f89b ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7d31f0a ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2ac6e2c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe51a26f ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdaee4e14 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc943009 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd16c4ea ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde7a674b ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe115a4f0 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe13adeb3 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6d36c1e ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6ec87f5 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7f93ebe ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe8f0e5aa ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xea399031 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf176b62b ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbf31139 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffb12186 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x8ce29434 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x25ba9466 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x72e90299 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xede56792 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x20360683 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x4c8c7bd7 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xf9254628 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0a1cc449 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x14c49ded mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x14c66c53 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x19eab7b6 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x234066a7 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x30703e58 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3bd8f448 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x70afeddc mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x89558adc mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9934c1c7 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9aef518c mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5c5e7ca mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc461e103 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd19a7108 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdf70b271 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xef02b68a mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xabfd6f13 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xf3264bb5 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x19da88c5 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xee1a535e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x1b9048b9 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x2c3cb7b5 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x4b4f409a devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xd31d5d6e devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x499778d3 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc2d3dce2 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc39125fd hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xca10f0f5 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xcaa532c0 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd5d81a47 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0e725f7c hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1a1bcab2 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1e202190 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6ad4e780 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1866f150 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1a7916bf ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2b71e24c ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x43aba87e ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x631ad629 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa9b60d14 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xb1845e85 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc7c14cea ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe87c7d8d ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1d7af91a ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x584e8e54 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5b53fbf9 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x623b6706 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xba904d9b ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8543b468 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xee82d6fc ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf79c1723 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x09f08b17 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0cc36ce2 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x29336306 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x47241923 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x59ac675b st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f47189f st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7af51a4c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7e96847a st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x846cafce st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8944a39f st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaed968cc st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb1e5fc16 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb683bfef st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb7400fb7 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcb1b069d st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xddcd3ddc st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x4df87f79 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x937b1106 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xdecb3223 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x7139ed58 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x7be3bb2b st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x25616d25 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xa8256b38 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x1f9bf7c0 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2fd89273 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x3f6cfa7a iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x40f61fa4 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x5e507115 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x68e63e60 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x6b5db0b4 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xace6e003 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xaed8121a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbdd931d0 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xc6c4b895 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xcbac046f iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xd56b9b46 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe81777d5 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf6997e09 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xf7aee3e1 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xfcced032 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xd4bf917b iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xed59e80c iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x4f91a196 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xbdd8aecc st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xdc85fbec ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x86f48dc4 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf82b114a st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x00cce5f0 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4c33e170 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa5ffc4ea rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb2a5b550 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc57b328d rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xfe6e58a5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x03b6b567 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1a6564ff ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x241dd5cb ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3858466a ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3db02963 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x47abce3c ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6f68773b ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x73b13ec6 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x766295eb ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8d2e53fb cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9be3ba8d ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa4f97144 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbcc71ed1 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbde4c4e3 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbeb36ef8 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcd779297 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd1b8f092 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfcfdfe8a ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x013e7987 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0658e8ab ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a2a9f5b ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cbc2ec1 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d44c255 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ee54698 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x120554de ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x132c6fd4 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1333e392 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a445571 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x204bc54c ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24b4e451 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28080aae ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a754ba1 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d4b03c9 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30ed1792 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32061840 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x330248e2 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36368431 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x369481d3 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c12aa7e ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fba6306 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41587f9c ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x418c6198 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4568ad0c ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4607c63f ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46c30d99 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47fd213f rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4cff3c34 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x500042f8 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x508ec47c ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ad12a02 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5db46548 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63c2b7ac ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x671a5766 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68755208 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69577b0b ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70cc59df ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x748d4976 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x761a6cc3 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7649c93f ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7753e90a ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f44af27 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fc113b4 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80d594a2 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x839f421f ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x888d2962 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a4b24dc ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x907ee58d ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x926b0d14 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94d062eb ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95da32a1 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a4c711e ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ae9a493 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b9db455 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9dab3f6e ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e6fa12b ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa514d8c4 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5e8e78d ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa68f2a03 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabff6378 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1293769 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf89c0e9 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8dbd5e8 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdc7d038 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd08be61f ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9216da2 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde11e34a ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde4334ad ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1a18e79 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2504e1f ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4830195 ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea2ebe88 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3d63611 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4129d67 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5c538cf ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf665818b ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf736ff08 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf82f639c ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb807d04 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc890976 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd377d18 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd82a513 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x37708014 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3940f67c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5d9badd2 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6ab4c30e ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa1dc9833 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb637cde5 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc225167e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc7be67d1 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe96c6c16 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xea548ffc ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xef5bdd69 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf221257d ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfc75edc8 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x04c229bc ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x06f934fc ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0e6ca99f ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2f2234b9 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4e7145c6 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x639a99b9 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6f7e97ab ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8ed9af46 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x95c8c868 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb0f8dee1 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb712215e ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6ac49389 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9c7f331d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x099f62b3 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0d0e9c9e iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x16c4fda0 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x30627fd1 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x50cefc26 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x59384fa9 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x65401e7b iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x711fd1e0 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7e5db12d iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8c99ab8a iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x95061484 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa91996b9 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc51ac3f8 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe97df79a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfef8dec4 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28d78151 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28e5da50 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x368e3c06 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x372945ad rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4811ca31 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4da1973a rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e4b7996 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x550c357d rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5c98804c rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d33ffe4 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5ddda3f7 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6d7dca75 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79d8499d rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d68e43c rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7ddb2d37 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8752f8af rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x876b66df rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa6e07080 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc07b3783 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf07d5aae rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf622214f rdma_connect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x15336825 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x28fd6538 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2a235218 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3f97da85 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5dfe942e gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x66b601f6 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa14c5609 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa3a428c5 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfe070156 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x4cc46f96 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x52633432 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd29a9aeb input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xfa00aaac devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xfa35d14d input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x66076d09 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x36f473e7 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x44ada8e1 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xba55fcea ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xbb3d980f cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1ec7b444 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x281196a4 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x28dd059f sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x85aa5d5c sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x86d84dd1 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xba02f92e sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xb8e3f6d5 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe456795c ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x08aa70f8 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3ccbc554 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x697eed27 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8e95accb capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x97fd20a1 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc59073e8 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcd0b5d4d attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xecc95288 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf78fa95b capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfb7206f3 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0fb59aca avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x456db67b b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x495418ef b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x56feb59f b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x579a8128 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x687338ab b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x73845133 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7bd0eaa7 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91c579c2 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcbfd7027 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd545338c b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe17515a0 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xed466dce b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfcd6a707 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfd89b1ad b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0e8f0a0b b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3fa454ea b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6002d8cf b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xba8f9175 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbde2a6e5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdca8155c b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe25020c5 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe3e87b1c b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xee474415 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x29d00872 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x81cfb582 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8ffd811d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xfb3234a0 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x1b5b4317 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x75300ed4 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x938c0009 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9a157050 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa8508231 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd374b44e isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe1916312 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xeea195ec isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4e985aa4 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x94cb4729 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd8a9c80f isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x01a4b47c get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e26dd92 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12e9aeb8 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x15785a7b mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1622cf2e recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a119d09 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2d36f6af mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x414f826e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ead71d1 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x55df61bc mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x571cd4a8 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6098c187 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x73052c22 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8b4505cb mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x972a223b mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x972c2205 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa4d5a59b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb47b53fb bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc8feabd8 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xca11bc0e dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd196331c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd4f05c69 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe3a3db19 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x06330838 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0b249043 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c161f5b bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x11f9991b bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6d7dda0f bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc3077d0c closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe462adff closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x8d62d0df dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x9108b400 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xa9bde85b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xccbc462d dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1f72a19f dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7126d9dd dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa4e69767 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbb13b0d2 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd180c1b3 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xef77c48d dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xeff2e950 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x06915bcb flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x17358b7c flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2261015c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x41e6552a flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5250ba70 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x53f3a43f flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x562edf5f flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x59eefdfb flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x820b4663 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x86b0f778 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xba973a91 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd1d9f20a flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd6e0a11e flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x211d3e93 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6b71a8c8 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x9a215ea2 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdeead59a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9c8304ab cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x38d232fe tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x532c6782 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0b2c835a dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0bf4686d dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d43f03b dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12d29cc1 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1a57339f dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x25da0c28 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2975b9bd dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2a513d30 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2dbfb494 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ef19bdd dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b55d61b dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45086006 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x46bf48cf dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x47c0b9cf dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x552d172b dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5ab4496e dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5d096dd0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5d41c1cf dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61525166 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66ac2713 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7092ba42 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7caa224e dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9510a851 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98b4fc23 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9f5a0b7d dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa10e976c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab56e804 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb25442d4 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc2c95f99 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3c77f8d dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd6664dae dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe040503d dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe226b82a dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe2867232 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe60d865f dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xea575f1e dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf23a08e3 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfd6db663 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x326e4ed7 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xbd87b5e8 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x2cbb63e6 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x45cdf08d au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x47cd6295 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x66b15579 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8cf55d36 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8eb6d50c au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb18fea86 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xeed59d82 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfaf69eab au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfeda6219 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xfb88b8cf au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xbb30c8b0 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x7ff28ef2 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x46dd0d9c cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xb06b422e cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2faaac77 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xe062e648 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x243a646f cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xef5a19f5 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x34b66dee cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x84e4d75c cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xf1ffebbf cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x4740f7f4 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x5512c4ec cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xad039d40 cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6ee51478 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7b75f788 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc51e5f09 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd14ae385 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xdba5c3c3 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x312a39f8 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x344fa91b dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x48c4b513 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4b74dac7 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8cebf893 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa2089537 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb08c37a5 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb4f5887f dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd04225d9 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd4f1902f dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xda841508 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe89b5ff5 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf53d927a dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf5cf3ece dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfe60179b dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x8608762e dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x162f9831 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1845b721 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x96789718 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb765e18d dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc3c06e70 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe7ec0841 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x45aea4fb dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd4dea334 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe0397cf7 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xfd163bba dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6d30e38e dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5d397a81 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x336d744a dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x5a504a9a dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x630930a1 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x869bd3d4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe552b1f4 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x6f1c050d drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x445f08a3 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xe80ad61a drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xf03db0bb ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x93333742 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x920c4554 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x85159c91 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x821b483a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x6018744c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x794752b3 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xc434d5fd itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x8df939e0 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x8a7f74e3 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xc4f1cc06 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xe844efd2 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xf96b8380 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x0c3623cd lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xb67b37e1 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x2b780ad9 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x6423f095 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9ea9ceaa lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xf674e33f lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x16193d01 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xa25d2b8d m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x222e8b24 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x984560d7 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x06150441 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x552ea662 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xb516ddb3 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xc3488d28 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x2d72f502 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x78967d1d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xeec34848 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x8a0200c5 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x497f53fa s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x27c13d95 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9fa727f0 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x623a3d4d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x81ff7bdc si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xf98a6f43 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x386c2712 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x6bd9e5d3 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x7acdd873 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xe3e3b548 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xec4ff304 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xbe0188d8 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xff05a3b0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xfcd36687 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xf8f6806f stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xfbafb875 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x479116e2 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xf50f0563 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x5cb62c52 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x71690e7e stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x5c6a14ce tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x084eaca3 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xe4646e21 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x011366b5 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3506cedd tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x03195373 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x3f384b42 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x12488eae tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xd22939bb tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x468f01eb tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xebf18259 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x28292889 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xdc116ffc ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x07ecc4b6 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x734ed914 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xab2fde25 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xdbd77ee0 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x61fbb9bd flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x702ced21 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7f1502d8 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xba2d35e0 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xce250cdb flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd5e5c1d6 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf8ca213a flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1f33fbf8 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3f8c22b1 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4920b092 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x67217cf8 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x75d07090 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xcb1a4d5b bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe2d46af0 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x13fd2db3 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3370d699 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x350ec945 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4e3ad6f3 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x575f096e dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x861763f3 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9aba2679 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcba2710b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe458f714 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xafa3072e dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x08ebbbb4 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x32ae77e2 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x69bfaa7b cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7d4a7245 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb3f319de cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x1ef07aed altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3422e357 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3a7e5239 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5ebd05d0 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8a557fcf cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xaba5ed70 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xae3359b8 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xae562879 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x73fdaeee vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe020c536 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0214b523 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3a6a108c cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xe7c8b99c cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf550f88f cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x031f0a90 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4d0b00ad cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5f7e6b7a cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc160f035 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe14c500b cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe2c9b9e4 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe5eaf469 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x04342e41 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0cfca2d3 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1242e869 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1fe057ee cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x25729dcf cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x371b5990 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4ab264f7 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x53213008 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5702580e cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5ff3d2fa cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x60cbd38e cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x70a2f0c2 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x725f4a69 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb7fac8f8 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc100df11 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd9a4cb49 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1bcf696 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xebcc0903 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xef6e76ad cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf260a14e cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x390e3d3c ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x456c33c6 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ab758ab ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5e989abb ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x75796e30 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7d9ed8ba ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x801432bf ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x872e3fd5 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8e5443a8 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x92689edb ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9e96b051 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa06c5d14 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa7a2fdea ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb45871f6 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc7a7f729 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe21e302d ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf5c97f21 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2b52d7bd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2bb34b00 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x36790b6d saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x512e3df3 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5df9ea24 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6d280322 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x903260ab saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa6894f68 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa9543f81 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb79795c1 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf114dd76 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf2d0db60 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x9497ca36 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0d3d4c4c soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2d165223 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x979dffbf soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9cfad3b6 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd6e61a87 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd6e64984 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf0d26baa soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x080fa8c8 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1588d907 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8ea58ced snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9761b70c snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd5d08ffc snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd732c6c7 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf86558ba snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2f6dfdb3 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6a36e52f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x75e02687 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa30b889b lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xafac91d5 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb609c11a lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbcefcfa1 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe03c339c lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x370a609b ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x5b23686e ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xf43be830 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x7eb63fda fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x4b8c3bad fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x8cd13e1f fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc36f1ba9 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xdaf6df1d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x4fc72b6f mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xeeeeba11 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xd6a60d34 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xf39794ae mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xdbf76fb2 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x8a389784 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xcd9334cb tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xae1b7dd5 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x75c50dd4 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x8f27e74c xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x27224238 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd9be62ae cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0f14c5b0 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x11fd3859 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x22499471 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x449fc6bf dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6e149a18 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x889c3c13 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc6d89b2d dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf89e7a89 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfe6eb3b9 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1eda5225 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1f6a87e0 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x23639992 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3a456660 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x45833dc7 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9a77b5ea dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xae409a25 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xdb152b91 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x18052957 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1dec257d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2709ac6b dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x47f59565 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x573b3563 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5f849d3e dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x783c1baa dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x90f48bc2 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x947d5fec dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x97aedb7c dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe7290a9e dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x044351d4 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x05e253f1 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ad2bcbc go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3eedde7e go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x61cf8a55 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x78d7423b go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x86976917 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x88708bd3 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa713a3c1 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb7b50c3a go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xddfc37c8 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1595df38 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1ff57619 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x216bf5c4 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x247802dd gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4f23a603 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x53ccfe7e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa23ea440 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcb6539b2 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x62df9d26 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x69671942 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7659ed12 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc3e35071 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xe82451bb ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x048a1ac5 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x49001bef v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x51715b25 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0d6a5297 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0ea28785 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1f6f9a3f videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x589286ad videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7aea43c9 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfbfec265 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x80ab4097 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xfde1df69 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x298284df vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x2a542140 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6fe3af5c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x90ef38b4 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9892f1bf vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe0df73a8 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x2cab3937 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0554865b v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x080c569a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08d2a2e6 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x09335195 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c0a18ca v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x114e8381 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12589716 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x158600f8 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d4455a2 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20a4df05 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x224269cc v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2418bc39 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d9e891e v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35f2de2e video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40b16541 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x415a16c8 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x424f1acc __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43ab0a3b v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4422b7f5 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4521c588 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x508dd0e5 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50a52796 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x528d045c __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58070a7a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59a2d805 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5eaffd19 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f67e855 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f9fdde4 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f734e6e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75704659 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75b6c53d video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76b98e8b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7871e6e2 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b4eea48 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bbba77d v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7face912 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87c624c4 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ef38d6d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f306bde v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f375883 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94c3c8ef v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1f424a3 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa3729984 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa5c951b2 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6ce620d video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7de3ea3 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa4c3c3d v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab7cb51b v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xadca39fa v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb353ece5 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9e38890 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb869510 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc2e4669 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6bca5ea v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc76cb04d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xceb54dd4 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf9e16eb v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfbf01c8 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd01ba338 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd03e66ab v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3ff189c v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf437579 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1838360 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe19b44c6 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2e86b91 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe82b028c v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe842fb48 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8f341df video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0cde576 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1856467 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3d8c204 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd795f11 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff85b0a0 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2bb290db memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x38ca70b0 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x520ba101 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x668bbfd2 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x66b3fca4 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x76785536 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x884e5c09 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8d68a5f6 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb2c4ffdd memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb3a2905f memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd86e19f5 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe4013e79 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x06f162ab mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x084aaee3 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x20c5b6c9 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f4fdb5c mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x302246d4 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3a07a9b3 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x41c541f6 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x473d0280 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d94b234 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52d6b7a6 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5c1112e4 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x648c1565 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x64e93ff6 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x850b7ad3 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a4b3643 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x94ea3f80 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x964a2d50 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9ac56a46 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9be01428 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e1a1511 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e38b73e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaa05930c mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb1cab79c mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbe32f33c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc9b5be88 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcdb95cbe mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd7f63503 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe031edb4 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf7972a3d mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0b3ad9ca mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0c571843 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x14aa4e2f mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15deb857 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x35060999 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3a8dcdd1 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b991385 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e989e09 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x562f6e76 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x64f654b5 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65ee4a46 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x73298f03 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x777fe9f2 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7e2d2299 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x83650cd1 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8371e724 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8bd1d44f mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8dc09873 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x95f905f5 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaa080ec2 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb1ef6d7d mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbff1c4ee mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd3e6247a mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdadfc0d9 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6324531 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed08982a mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9239be6 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/mfd/dln2 0x4a1e21b8 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xa9f2c0c0 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xe8369262 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8bf71077 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xdf6b2ee5 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0be58bec mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x30647405 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4add4302 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55ff4e53 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6d98e7fa mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7be03a54 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9a3a8097 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb772c535 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbd916d24 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe1010998 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe8f10c82 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0x295fb567 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x1d91d449 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x820f9eae wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x125b7f40 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x156ffd81 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x2061c4d9 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xbf03c6f4 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa2e4c002 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd757c85a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd2c54d67 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x5867ac7d c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x9e4c57a8 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x0f6fd472 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x52901104 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0f3fdbd9 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x1a41acdb tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x26884537 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x30498c2d tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x32873296 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x350495d1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x40d46d96 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x4ebe8e5f tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x617eee78 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x79e0ce7c tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x81761b45 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc91a5126 tifm_alloc_device +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4ebe0d2c dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x6b963eaa dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x93beded0 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xd89643ec dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x0d43586c mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xfb0f7591 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x026e8539 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x05ef5c34 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x743c33f2 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8926965d cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9becedb3 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa9bee398 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf5c2b32b cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb2e882c3 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd14ac7af register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe5e759c3 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xfd45a325 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xb0a8a661 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xe292db65 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x68c932ee simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x53b47aef mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xc0877f82 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x463b6f43 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xb291d010 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x276c5682 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2e1dd9aa nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x321a7c9d nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x501aa33e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8f9b6762 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa92e54dd nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x01e77d25 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf88f1ff2 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xfa3bbe8e nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb2981b0f nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xcacbd28b nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x4da1f137 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x4f8ba96e onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5c96619c flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5f7e272b onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x01fae4b7 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0ef34e4c arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ccd162c arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3d06732b arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4fa66dd1 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5fadbdc9 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb29b1b71 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc2bbcd80 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc33fb210 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf8301fdd arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x0107eeea com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1bac20bb com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6690e399 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x03d04771 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x195b5692 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x20362795 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4a7723b7 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x649c6502 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6b0ce672 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6f657d79 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x705827b2 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9faf6765 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb78c4d10 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x80c752d2 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x98ba882a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0313be8c t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x37d2f3b9 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x492ce7bd cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x499d5c2b cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4d15848f cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4de9edee cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6b574a7d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8763a714 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8f8a1213 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbd9b0e7a t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbde64a8b t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc9f3bab3 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xde2fa4c3 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe5679714 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe74aee10 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf4807e44 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0507c731 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0fc50a33 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16196d11 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1979516b cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1bec566b cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x214f44dd cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22566995 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23ed96f0 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35e6460b cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a8496ba cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4604e721 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x624fdb14 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66e032bc cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6c881f46 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x73221b92 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x76403e9f cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x782f630c cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x823fbfe6 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x971dcd29 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9c883d96 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa775a186 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4a124b7 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4f892d2 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb6160433 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8d5a0b3 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb9a685ec cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc8f3cba cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcf165385 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xded1d584 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe001d142 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5977e95 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe875a3a9 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeeca9ceb cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf99ca156 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0a738529 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x570c36b1 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6d0d4310 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa0dd3cb2 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf51d5e22 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf6d655b6 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xda06d424 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xe16ba8c3 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x59500631 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x6161e87f hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x700acd77 hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x7f6e27cc hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x9aabd56c hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x038cf8c4 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x151aa21f mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16f6774d get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26677e4e mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27f1eb09 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2da22cee mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e405395 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e63e653 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x304b2579 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31669fd9 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x316e7fa2 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31f8eee1 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3226e07f set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d2c5881 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e230212 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x648aad82 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64ddf8fe mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d0abef1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fceb5f0 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71626a23 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7184356c mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x781647d6 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78e7824b set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b9601ff mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90b3687d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb09afb91 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd3ad1b1 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe677eae mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbed56a61 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0898381 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7e1f571 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdebcc9c2 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe333f40f mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8110dd7 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf91c74ee mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa73f912 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfed107dd mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff6f2802 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0136e35c mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08035b66 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cdb1866 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1339d5ea mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17f7bd8e mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1826dd78 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21902f4d mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cf8a7fc mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d40ea31 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x468271e4 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53c33377 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54e7ead1 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59759dcf mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59785d7c mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5bfec2d4 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60dfff95 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x689038e4 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b999f2f mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cdfe268 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x758cae88 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x765e5f60 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8588f40c mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d539aa8 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x939f9e9f mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa958882f mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb12533a9 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc359f9cd mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3faaa37 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf4fa502 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8b9f44e mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdae4f65b mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb625823 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe652b869 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe84f2a7a mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8e39fd9 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf080bb74 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa0a3dca mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd215a0a mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x09f2ff2d mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4add265b mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x68965c08 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6aebbcab mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7470c4c2 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x958c808b mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc0433fbd mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4ebf3964 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2de8af7c hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4cfcf12e hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4db10931 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa4268c28 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xcafb7b7d hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x61a03369 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x67cd07b5 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x81d25882 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9fdd0538 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa2a3f079 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa2cfdc90 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa4bbb6bc sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcdba3868 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdba95eef sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe080521b irda_register_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb17c087e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xd7156e8b alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x5d09f992 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1739cb88 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xae0b77e6 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xeba932da pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x79411b15 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x2786889d team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x4dd078ef team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x6488b140 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x8d4a4347 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x964dcee2 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xca16a0fb team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xdfdaa59d team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xf40364a8 team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5691df65 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xc49716d8 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xc53bbbad usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe41bc4d1 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1590c3f0 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x21845f98 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2edf4ffe unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x384b4a48 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4d89e3ec hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7c55a6f6 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x84142a88 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9c82e46a hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc0febdb3 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcfb98f7f detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf90cdeb0 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xf8071eab i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2fb072f6 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3e4550b4 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x722a8432 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7366be3d ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7de4cf7f ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x819ee1e3 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x891ad7ef ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a06d0c ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xac11bcf6 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe6933bf3 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe9ef382e dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xed70d57d ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1394d1a9 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x55792f16 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x574e8e9a ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57e7569b ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5f66e473 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7673499a ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x81d90a94 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x85b19f37 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa3d813b3 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xadffe544 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb9184ec8 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc2d7604a ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc3e60859 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd06d03de ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdb8621ef ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x089b4898 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1de55136 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x33191737 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x412d55ee ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x577fc926 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6077b4c8 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x73fe47ea ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8fa1fa93 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb4384618 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc0422446 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdbce1ba9 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x025d7550 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x039fe7fb ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1ecc1e8b ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x21007aca ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2a02a6de ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2c7550dc ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f514314 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3283fc8d ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x476c9d9d ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57670414 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6de4e427 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x70f11453 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x84b59d19 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x989c3e23 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa529f448 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xad96c350 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb930b538 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbeac3697 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc95a7909 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcc4e4e35 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2189706 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe14a0205 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf0daef31 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0174c16e ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01de0966 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x027b4ef9 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0545ed55 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c6305c4 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d5a39a8 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0dd18efe ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fdd1c6d ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11914659 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13337244 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x150ba672 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dec6cef ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e466894 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x234b0654 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x246742a9 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x269e8564 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a8276f2 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d5009f2 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2debb68d ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31c8f1c8 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3415d6a6 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35b580f9 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3be68b6a ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3de44fbb ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e228af5 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41586488 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41b13afd ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x420e2ee6 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x427eeb85 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x458741d8 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x458d03e6 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4663cdf1 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47679385 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52729ec9 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x538b49bd ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5480ea74 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54979068 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56f53ec0 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57081b60 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c694b56 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6051d591 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x611c51ea ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x627937f1 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65dc4553 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68add094 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a22b3bf ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d8fc391 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e0ef896 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fcd4f09 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x711d10a2 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74d7321e ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75d2a772 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a0c3307 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c414474 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fe002a2 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82083027 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83816cfa ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83f05d09 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85debb13 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85e263ea ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c72831e ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x937c083c ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93a6ce6c ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95e75d89 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x990a4f52 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9950a2d2 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa69742e3 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6e353eb ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabce2c33 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacac2579 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb110c754 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2099919 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb47b5d99 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb57a6fcc ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5aa6140 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba3b94fd ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba8c5a42 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe67c596 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfedbe83 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc468034f ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc681c496 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8642403 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb0ea35d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcec9a88b ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd349bd9a ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3955342 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6012440 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd756c0fd ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7892480 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd86e79b7 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde154873 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1f80595 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe249475d ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe27a6e48 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe55a3697 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8a838bd ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb501a2a ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xebc8879d ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee368028 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5088c90 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf66c388b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa489978 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd2840a9 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffa3e653 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x47b5c4f9 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x49b1676b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe1a34ac5 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10713925 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2acd6e79 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x409ffa0a brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x56df9481 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5a63ece4 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x67357826 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x73bf7c5a brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x88dac3fb brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb9706e1b brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xba8274f2 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbd0bd8cc brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc29784ae brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdc3c44c2 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12b3b14d hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d2060a7 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d6b9700 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2598f407 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28efe041 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x40687349 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5a291217 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ef64ced hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x61202229 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c0aa213 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6cb04499 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x855be6b4 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8d19f1dd hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x93f28af2 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9b7db6b3 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa75b5ee6 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaaa5c81b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xac909189 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbc21176c hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb3fca81 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe4da5ea2 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe512ba76 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7a9abac prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7bcb423 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf556abb3 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x106c70f3 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x26e59027 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3edcca49 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4da90f7c libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5a218cb3 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x731247aa libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7e81ea17 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8f32b9f6 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa39002c8 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa987fb5d libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb065b074 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb0a4b869 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb2d2ebae libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc37c7eaf alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc59f0d77 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd048ccd5 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd64b3dc8 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xda4eb75d free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdb3ab84f libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xebf9af23 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xff0452cf libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03cb560b il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09665119 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b8452db il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bfb49be il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0db2fcd2 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10eaa0ac il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x164f28b8 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17f5be02 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a83606c il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21031606 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23293884 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x233fcf05 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28f8dd23 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a8e2124 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2cb305cf il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2efcb3d9 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30d2734d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x311baec2 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x363f766a il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37ed3422 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dbb5959 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4153689b il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4236ea1c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43727367 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44997b95 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x476ec6b7 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4eb3f512 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f6cd786 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54037fd6 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x543ebc51 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e8077f9 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6409aeb3 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64c3b965 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65f1bace il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67fd8c70 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6817cdb2 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a90c25e il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ad134db il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b2a1661 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70e84f98 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71472e25 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x791c7179 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82519d5c il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x825f4c61 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82ba481f il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83aa9695 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c21b40d il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x91edb385 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b4f0ff7 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9dd2c956 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f0fd3d4 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa00646a9 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa05f1b6b il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa733804c il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa88372e6 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9eb429e il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa5592c5 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae5283e2 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae788975 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0e16da3 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc2fc7e8 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe0d94e7 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc08085e8 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc166985c _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3c7651d il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5bf31b8 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc84d718a il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca09c1f3 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce1e5a43 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf03e173 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfa921a5 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfc5d3aa il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2038fa1 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd26d5901 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd77fcb69 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd783de55 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda946933 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb178f0a il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfa905ec il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1cafa22 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe21d97a5 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe78d128f il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb0865d3 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb3124ec il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec672cf7 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee626f42 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeef6dd5 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0cb224c il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf10b9eb8 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf14b0189 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1c92511 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf295189a il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4d2f1d5 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf677cfad il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc42c2e8 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd24d146 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd858c4a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe280578 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1d787e03 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5372d55c orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x634a9bc5 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x71f2119b orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9bf5bcca orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa3f657bb free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab1bf764 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb4998cc9 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbeba36ee orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc27126cb orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc81b1172 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcc4fa2f6 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcef675e5 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd5323e93 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd8ceb17e __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xef64033b hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfdb6467e __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x805fb940 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x015a2b2a _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x09cc3445 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1d14bfc0 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x24cde429 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2b4b5d98 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c4ffb30 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c51b22d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x382cff33 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3bbc91ad rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x438e9c87 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4be8cd34 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4f4cf607 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4fc7b7b7 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x58bad732 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5c707aa7 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6506c34b rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6647308a rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x74d8798d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8a59eeb6 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8fd7e614 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9e6afd1e rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa38ca5d3 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa65fe0fc rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xab2d4b80 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xad777d20 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaee57fdb _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb79aaef3 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xba26eebc rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbf3c494e rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc398ebc1 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcc3c64eb rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd0f42fdc rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe28db0ba rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe457eed5 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe63fbbcd rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe9722e72 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xea33415c _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeb92f3cd rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf3f0fb36 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf6fe3bf8 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfe500a98 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x5121c0a1 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x9811a47b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xc12a0897 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xda259ff9 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x1610984e rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x3bff0853 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xfafaad95 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xfd02e4bf rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x01c7b7a0 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0e6e6f89 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x11289b74 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x15d6b356 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1648fc34 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3c91d6f5 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4ac73312 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4ff51340 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x501a5adb rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x51b858a8 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5f2ed382 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6c43c9a5 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x75e1f9cf efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7a2395e0 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x899b03fa rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8a3f95d0 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8bdfacb4 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x92bc8246 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x95c045ae rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xacbf22de rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb019ce89 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2d3c0d4 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb3000839 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc5794a3c efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd0d11c3f rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd8b344a6 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe334b4b9 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeb2feb3d rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeb5415bb rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfbdddb3a rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6be3b925 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xadebbfe1 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb1074fe2 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbe6a34c9 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x9db3a4f5 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xa12e09ab fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xd4747720 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x433ffed9 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x97f55cde microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x8236917e nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xb028bcca nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe25d2c3e nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x166d8df7 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x78f27a43 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x110027f8 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x65cf6531 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x79762ed4 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x00f09449 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x120bc0b8 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x21fcb34b ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3a78e01a ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6318e638 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x753e40c9 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x880db3ed st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8b2eebb9 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x93679883 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb0153ec6 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xebe0760a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x04631f4c st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x133116d2 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x181b57c1 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x222464a4 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3f26f4cb st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5611882e st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5c74d02a st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6c98db64 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x78692780 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x82a3be08 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8cbce6a8 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x99fd1b89 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa339db87 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xab59d721 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd9c38241 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe84a271e st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf7812f72 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfb908692 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/ntb/ntb 0x2b71c6e6 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x8ee58934 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xa8cd7822 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xb73f264b ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xba9e76b1 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xc3cef6de ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xce760d8b ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf544645f __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x70a7a980 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xd02425b0 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x56392087 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x056d67a0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x072cef95 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x0e748498 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x18ce65eb parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x24c0aeea parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x27452065 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x2f0f2893 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x340c7b4f parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x34260993 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x55fdbd1f parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x61c9e357 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x6593518b parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x66e9db6c parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x6d851ec8 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x6f408105 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x70d539f3 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x77cf9407 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x84166a9f parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8736886e parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x885425e5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x8ea4a2e1 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xac749eb9 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xbb8c2381 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc925b26b parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc97dc12e parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xd3ddf020 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xd599e6d8 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xd69be6e9 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xe231fcb6 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xeb96b52f parport_write +EXPORT_SYMBOL drivers/parport/parport 0xf8c0a5a2 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfd87071b parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x80bf2587 iproc_pcie_setup +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xe0600c4c iproc_pcie_remove +EXPORT_SYMBOL drivers/pps/pps_core 0x1130156c pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x16b85939 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xa8480f4f pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xc44c0502 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x1329ed99 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x5424a3d5 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x939f4a03 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xca9d90da ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xead89e6e ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x014b0f51 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x018432f5 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1d48ece1 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x80be3e51 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x80c1e148 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xacaeefe5 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xad0a764f rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb70a780f rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe9c9ef27 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf8785de5 rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x4ee49472 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x68ad1def scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x982e7457 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xbf1edaa8 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc092ca80 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x09ce5fa7 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x26b32fea fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x28cdadb5 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2d9f5f21 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x314d270f fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x39bacb29 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5835c2a7 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5e1a4568 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x96b8ca39 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa1c244ce fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd485dafe fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfb614b35 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0db8b63c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18c7f064 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1d388d1f fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f27ddbc fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28b591ff fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30757dec fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x350bc4c7 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37b42fed fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38d0c8a1 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38f7a507 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3bfe704e fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d5d83ff fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53a373e9 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5731babe fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57e11030 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ad35084 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5aee2c2b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c1f879d fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x65f7e85a fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7fe4f4aa fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80581090 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8151d696 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x828882d0 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87996c2e fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8eaef3b5 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f54df0a fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9329efc6 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x957c4ee2 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4328d05 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4b40798 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9fa053a fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb4bb249 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb685a52 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfc02519 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0d79210 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd3c01694 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7002985 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6b0ef0b fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeb968356 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebfb3808 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeeece02b fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3ce967a libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9481963 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0779bc54 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8f242ca1 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x9f3aae2d sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xd32d0cd6 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2d50cc3c mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15c1becf osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16d64c11 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x184fdb78 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x231905a4 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x271bce3f osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c3058c6 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d6f0082 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2dcffce9 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3408fe8f osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x387dcecb osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x38d33674 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3d0c62d7 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f754848 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x43797890 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48378ecf osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c551805 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5408cc38 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5890effa osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5cae8707 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6091347a osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x71ac08bb osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x784792f8 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e9eb6ee osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c8b8db8 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa966f8c0 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac9c6bfa osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad67a9a5 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb683b6f2 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb7f19f4e osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc4df331a osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcffea70f osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd85d66b1 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd96ad3ab osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde158bb6 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6bd6f54 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff2d1e9d osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x07ab6943 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2bb143f8 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x87ee1faa osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaeda89a6 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xcc736fb0 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xde6b50c8 osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x50251272 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5baaebdb qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e414308 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa616f95d qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa9c1f97d qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb3119d54 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc4d422b1 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcb101f91 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd252d40b qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd6d50b72 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xde1ce083 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf8e8f447 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/raid_class 0x493a8a6d raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xf7ebfdba raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xf9874322 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x11f5a6bd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x14444e1e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x582ab98e fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5945fc1e fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6166a03c fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x746b8b4c fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9e7c577b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa8c1081e scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaba5af37 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc80b2b59 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd4ae56d8 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdbb80bab fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xea2bf5be fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1072f85e sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1184aad6 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x179d61c8 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x215212d0 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2da512a9 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3de1b41f sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47d87031 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x52116e70 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x61770382 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x766eb84e sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x77777996 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7efd44a4 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x82c413a6 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x92273424 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9f07d55f scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa4523e33 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf5f1c57 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb022f8cf sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb431aa20 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb75bab70 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd0acc595 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd58caf08 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe97c03c1 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xef10a2f4 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf638efb4 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfc518e87 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfda1930a sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff79700b sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0842f3c2 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0a5d6d76 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdcf964c9 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe3cf63cd spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfbb3b240 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0cd77e2f srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x10c93fe6 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6831d942 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xed21707d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x500e4acc ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5673d216 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6fa99a2f ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7b426850 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x84c917e8 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9ef0e8c8 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc4278d16 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/soc/qcom/smd 0x44952409 qcom_smd_driver_register +EXPORT_SYMBOL drivers/soc/qcom/smd 0x7cce7591 qcom_smd_driver_unregister +EXPORT_SYMBOL drivers/soc/qcom/smd 0xeda44e54 qcom_smd_send +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0xad43c23b qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x34b57571 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0xeeffa750 qcom_smem_get +EXPORT_SYMBOL drivers/ssb/ssb 0x169b550f ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x20a4c397 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x221cb01e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x25b3f58f ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x35699792 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3f2c6a4f ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x68983815 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x75ea4b91 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x88bd2308 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x89722d41 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x91657dee ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x97a25c40 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaad8d996 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xb35565b6 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc30049a8 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xc767b16f ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdd4e05dd ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe7784a39 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf661f6e0 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xfdd33d22 ssb_bus_suspend +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x066dad5e fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0f339354 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x437a02a6 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4503ffec fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4baaa6ce fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4c079f40 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4d3a2369 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x51ff10bc fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x54f44b0f fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x56ac2157 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x603e329c fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7e85cce8 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8378a2b7 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x83826146 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8a7b394f fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x976f9a08 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb11a0ef8 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbbf95667 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc8204317 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcd44e024 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe8bf4932 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xef2e431b fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf6d8cdb3 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf7757848 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x08997398 dprc_get_obj_desc +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1c99521e dprc_get_obj_irq +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1ccbc8d4 dprc_get_obj +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x26b64b63 dprc_get_res_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x6c939cd5 dpbp_close +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x74b1200e dprc_open +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x76c93a74 dpbp_disable +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x87349afe mc_send_command +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xac22a51b dprc_get_res_ids +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xc8a33373 dpbp_enable +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xcc9805e8 dprc_set_obj_label +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xce222268 dprc_get_obj_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd57436f3 dpbp_get_attributes +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd8edd063 dprc_get_obj_region +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xe841ac6e dprc_set_obj_irq +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xee8ed810 dpbp_open +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xf6a2e0e5 dprc_close +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x012bd218 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x91942589 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x330dec4f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x42048e21 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x4c95f7d7 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x6da64a21 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe0b6e2fd hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x2d141632 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x960dcbb0 ade7854_probe +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x7f875105 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0xa056ae81 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0032637e rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0941ff8d rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0dc7be67 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1667ce39 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19399fa1 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c6130ca rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1e7ed850 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x20190484 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x240a3980 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24170e34 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24f9a858 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26be7d75 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ff11e82 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34cc8b8e notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x38ce395f rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b77124b dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x422ce303 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42465063 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4307035a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x437473dc free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44dd900c rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x498792ab rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b449bf8 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x54382487 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68a06881 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a3d692c rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c3a3120 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7030e9b3 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x75fdf5a8 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7929c34b rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x996af922 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9cea200b rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa454afbd rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa96a60ce rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad3c0bf4 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb02dbeb5 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb20a7b4d Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbfed39b8 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7c33c39 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc440e92 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcce603fe rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0a0efef rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd86c95ca rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc629f7a rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4a3afbe rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe753b31f rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8b5da4d rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe92be203 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf06c94c2 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5ae668a rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01460162 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x048ca2a2 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06cd5706 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0dc08b30 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f02987f ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1080b2fa ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x108ce5e3 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x167efa61 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1cc97de0 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x257d199d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2616a33a ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x321def85 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3677f020 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x377a7f58 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cc077a1 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x40bb4509 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48619cc1 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c9f19c4 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51c60f41 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54937a3b ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56e5b9ac ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5de07957 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6532bafd ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x751207e4 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e7600ae ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x899a53ce ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8bfee630 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x934762df ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c3a0d1e ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4dddc4b ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa55b81ed ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa96f1f56 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac340365 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac8f33b3 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaea898ab ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaeceac98 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb27b3907 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb59529ed ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb76d606b ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba816cc2 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbde484f ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe3365a0 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd137abe9 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd52c4896 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd689f40b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd96357d3 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5387c93 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7982495 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef2c6288 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf65b9ac6 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfda88380 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe4d61cc ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe7cc6c0 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x01ca77e9 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x112aee25 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x13fe07eb iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x19dcb497 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x26ca98fc iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x28b84aa1 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2add13d4 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e935df7 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36cb0a30 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3a043a8e iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3b28f04c iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4d07e525 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x567aaaf5 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x59ab118f iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x68efa7c0 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6b4fdfd7 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7bc639ce iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88ca11d4 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x950bb20d iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x995a50e1 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x999304a8 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xae332fb0 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb5299ebc iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe56cb610 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe5ea376c iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe80d241c iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xeb2e5eea iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef85a5ad iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/target_core_mod 0x013669f5 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0bf85525 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x1247cca5 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x155f5137 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x25af9e1a transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x279fa04c transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b966960 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x31fd6210 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x349e9448 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x3528d56a sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x36948302 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bc373ac transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x40a5b736 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x49879451 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x531e6a59 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x552ef8f5 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x63c69303 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x654bad6c core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6de80dd3 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f08ccb1 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x79c8238e transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a9c8fac target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bb333bd transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cc68f8b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x82ec1ee1 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x851a2498 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x85d8f90b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e140c97 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ef74058 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f92b09c target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x93c4c853 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ed064c8 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xa34c0e5c target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xa63048af __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa77a7493 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xac5e9e23 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb07cc525 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0eaafc2 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb150b4ba transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2f304a3 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5d3fea0 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9364dcb spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xba24d668 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xbfff3ece transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0d9f494 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xc13dccda target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2ab08ce transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xce5a34bf spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcefcf975 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2402661 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd58fffa0 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb1e40dd target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc4d712a core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf81756b transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8162227 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xee6d3849 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xef6538df target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xefaf3313 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5c46c46 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8214983 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9b1f538 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa4a622b transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd49c6ed core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xfeaf6528 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x64267852 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x4becbfa7 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd53a0f54 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0070464b usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0851f4dc usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3b5221d6 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x59b6f890 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6400e965 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6f34da55 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9491772e usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb08ad126 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb84bef64 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbd8ab9f4 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbe30a7e6 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf7c27f43 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x93550745 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xdb531a83 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0b04b665 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4570be6b devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa27034bf lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfebab2d3 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0ae75e81 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x107581fb svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1eade7c0 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab9fc37 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8e5c2e48 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9cd48037 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc1b03647 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x1f99bf78 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x0909d736 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xbcbf63d9 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0fae2aa3 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x22e20504 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x374a4cad matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4b8a81af g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xc9188d94 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x0e470c61 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x55b9cbaf DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb58e65cd matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcdaa8b2a DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x268c36cb matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x64f42714 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x35b8e28b matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5dfe9b2e matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd50574be matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd5114074 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x8751a7ad matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xf73541c9 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x3e682591 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x50101e47 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5902d372 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb899943d matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe2798a2c matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x883494e3 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x18536a0f w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6c515493 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa6b49b2d w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xbcdb46be w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xd7013e61 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe35a8856 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x383c6fff w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xe18a7547 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x3b566e82 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x55f562aa w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x84199b1d w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xa326c23f w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x040224dd configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x045159c4 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x1cfc0379 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0x354defd5 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x415c2429 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x5f93e8d9 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x685320cb configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x6a98c25a config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x7cc8b1d8 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x9128236b configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0xbd070ba7 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xcda11011 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xd6947284 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd94b6aab configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xf8f82a95 config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x0e221977 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2f2c1c67 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x3da166d1 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x44ed868b ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4853f1b6 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x60b295cf ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x7126c8ef ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xacf93b7f extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xe7c3956c ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xfc743d54 ore_create +EXPORT_SYMBOL fs/fscache/fscache 0x0ef706fe __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x10007146 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x13d8f4df __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x19ad7e3d fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x1d68e83e fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x2104c044 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x21340f80 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x2aef83af fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x3512ef88 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x378e4cc0 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x386409a7 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x394cca08 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x44f64d8c fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x470ce68e __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x52e60d4d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x58b5ef4a __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x58c0236d __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5a199d0c fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x5f1daec3 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x607ceb2a __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x62e3f246 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x688ac3a1 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x704ac10e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x732e116a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x78e5ca36 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x7e255ce9 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x841510b7 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x8d5a4bfe __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x94a8d1bf fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa85a2e0e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xaa0a1947 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xab11c073 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xca90e479 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xd750ead6 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xd83a96da __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xe7202e03 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xf02b4bd9 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf28c2803 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xf63d2672 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xf8c28ed1 fscache_check_aux +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x4f72c0bb qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x9ab7c8d3 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa0bb1ba8 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd3fdfb4f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd9b7069e qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x55ef80fc lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xcdd71415 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x09097908 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x6d64463d lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x97a87d9b lowpan_netdev_setup +EXPORT_SYMBOL net/802/p8022 0x37e30507 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xe73f60f0 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x334243fe make_8023_client +EXPORT_SYMBOL net/802/p8023 0xa59089e9 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x81af76ec unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xd97babf1 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x05242dcb p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x06bf6e3b p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x08ab4753 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x09dce202 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x1dd93aed p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x25a203c2 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x26615f79 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x2a74193a p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x32a74870 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3720e430 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3744e746 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x38c9cc11 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3ceab642 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x43f2e40e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x5a5b8c76 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x65db6f68 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x660a451a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6aef1482 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6b2f6ff5 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x704ed41b p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x7b6bd715 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7c825838 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x7e83dfa8 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8784def3 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x88163147 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x97295c75 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xa1a6e0dd p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xaf07f122 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xb4ed8226 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xb81a77e9 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xb855246b p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xba2c0084 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xc00fb55f p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc85b59b7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xcccbb4b0 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xd50aff75 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xdc630f1a p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe247e3fa p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe35782b0 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf2a40d39 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd4a38a1 p9_client_create +EXPORT_SYMBOL net/appletalk/appletalk 0x326271c0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x34732936 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x4668d783 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xd67898b1 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x117f0ace vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x17b99dbc vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2b32082a atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3bc368bf atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x410e65f0 atm_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x446c1a0b atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x56a2c45e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x5b2a910e atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x72551f58 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x932c1025 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb860e614 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xc75a4237 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfac5ae25 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xff04d7d1 deregister_atm_ioctl +EXPORT_SYMBOL net/ax25/ax25 0x12714fb5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x44d29467 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x64c401e1 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x95fb97aa ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb1dd7d62 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xbae6c25c ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd9a406da ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xf10d39b9 ax25_linkfail_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06b826e2 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x08328da8 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0df17db0 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1415f57e bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x149e2582 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x190a9fb1 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x199d576b hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2439efd7 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2913680a l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x367b9551 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c4b344f hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47f225b8 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x49585916 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c28b30b bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x570706b0 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5910c51a hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f6416b1 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x60f98fc8 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70b48698 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x736d7cd3 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x768d58ca hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x769f77bd bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x848964e0 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x87075559 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8ce9b6d6 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5a453a4 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7e4b113 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaca31724 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc9048a83 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb05936d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7ec4385 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd865b3cd bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdd5723bb bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde312da0 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2036de3 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe20e4b12 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe30c0f1b hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec01c72a bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf12cfc5c hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3883715 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd62ecc5 hci_register_dev +EXPORT_SYMBOL net/bridge/bridge 0x4a9956d6 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3f2fee10 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6f13a053 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbf060b07 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x32d0ac0b cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5d9c2ab1 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xaf46fc19 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd5b9ef83 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xedfaea34 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x19fc89fd can_proto_unregister +EXPORT_SYMBOL net/can/can 0x4ee21996 can_ioctl +EXPORT_SYMBOL net/can/can 0x6b32e5ba can_proto_register +EXPORT_SYMBOL net/can/can 0x7095beac can_rx_unregister +EXPORT_SYMBOL net/can/can 0xac8fb4b0 can_send +EXPORT_SYMBOL net/can/can 0xede309f9 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x07a81c52 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x08d12dce osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x0925a135 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d5e462f ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x22016637 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x25c819c2 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x26ad748c ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x286d17e6 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x2d938211 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x2e0dcb1e ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x3110c50a osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x31a81450 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3450d5d1 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x397ac982 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3d62818e ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x4128ce7f ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4beacebc ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x500a46cf ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x52a0b77f ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x52ad157b ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x530f5577 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55628d71 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x56fa2ea5 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x57af0e68 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x57cf1f5c ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x5bd5105a ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5e85d3cf osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x5fa087c6 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x6024aa66 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x66fa61f6 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x681bd156 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x68a20cc7 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6bb4ca3f osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x71e31c45 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x76928364 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x77346f56 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x7badaf05 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x7df64c3f ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x81c9333a ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x82a2594b osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x879db998 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x87e48b37 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x904e7b35 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x90b4b86e ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x90f755ca ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x952ab3e6 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x99925d92 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9c807125 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x9eda3dee ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1b92c88 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xa850b870 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xacba96a5 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae6eae4f osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb07fb383 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xb19d9f8e ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xba6886f9 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xbe5a9085 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc05f8f7e osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xc1736743 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc3ecc3f6 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xc46505e1 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc7f82a03 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc8f2da94 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb047485 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb78f213 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xcc00e0f9 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd031e4a4 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd594e22b ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xd648047c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xdb0753bc ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xdb4cf16d ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdd715d38 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xdffc7b35 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe1994542 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe5d17c7d ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xe807a486 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xf1650a91 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf1a49e1d ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf4ace431 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xfcb39cac ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xff01aee0 ceph_print_client_options +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x08e8faa8 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x85a6a889 dccp_req_err +EXPORT_SYMBOL net/ieee802154/ieee802154 0x029bd776 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x135e8d67 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5e7145cd wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xac62d029 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdcf151c5 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe7aa74d7 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x76fb5201 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x9a7e2b88 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x160199ec ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3a5bd7c7 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xce1e4012 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd4b0fa8f ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xdf5a9f31 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe36ddf18 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x60f195c4 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa38760b2 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xcc234516 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x925bd9bc ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xabf4ed8d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xad8d8586 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x2ef5a615 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xd2958782 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xc14c2148 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1e93e779 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5512883c ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6a3115b6 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcb1294f0 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x64b5ea0d ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb1d6e1b5 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbc7d8752 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x22b0b5c7 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x49347445 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6ff0720a xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc250dbb5 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3ae79629 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5170f64f ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7d6f8e9f ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7eb6855a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaaa7653f ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd419f6b4 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe1d62b65 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfa7087df ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x01590a8b irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x041570a9 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07015ee1 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0de682c3 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x15e3703b irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x15e817c3 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x1a9f11b6 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x1bcf1351 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x1db37f71 irlap_open +EXPORT_SYMBOL net/irda/irda 0x2a17732a hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x35a0ea25 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x363a2c96 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x3c8d1cdb irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x49a9bc1b irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x4fd8321f irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x505c595b async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x56b99f6a hashbin_new +EXPORT_SYMBOL net/irda/irda 0x5b08a8fe irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x630a87b6 iriap_close +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b7f50b3 hashbin_find +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7ba118c6 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8b4455b2 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9516f690 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xa4dcbb41 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa8f2e24a iriap_open +EXPORT_SYMBOL net/irda/irda 0xaad2d90a irias_find_object +EXPORT_SYMBOL net/irda/irda 0xaec635e4 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe39e484 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc8732e7e irlap_close +EXPORT_SYMBOL net/irda/irda 0xd22e8861 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xd6780765 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xd7702e20 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xda22e23b irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xdd988ce6 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe58ba397 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xe7aa593d hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0f25ffe hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xf15680d2 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xfaba56ce irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xfac19b65 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xfbfd7951 irlmp_open_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0xea0f5d37 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x65907718 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x6b64e0cc lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x914d5cbd lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x9f39d7e3 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xa4a90807 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xd69cb5c6 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xece05273 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xf4acc027 lapb_register +EXPORT_SYMBOL net/llc/llc 0x29249dc7 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2f3a416a llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x36d92717 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x693d5554 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x86726839 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x91380477 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xfe8d15b9 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x00be3197 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x00fef029 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x02b98b10 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x081a2a22 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0b0860fd ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x0b540934 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0d972489 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x0df74341 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x0f96d4e2 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x105c86e1 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1101947c ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x11e8610b ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x12b41086 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x1a8a52c9 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x1b02d498 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1dcb1326 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1f9eb93a ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1fa03353 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x254a6cb1 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x296217c3 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x2b35f685 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2bb49c92 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x2d19f70f ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x346722b9 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x39f84f4a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x3d99ed0e ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x478de1bb ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c1be514 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4cb98be8 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4ffe7e41 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x50abea22 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x5165e7f3 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5168eee6 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5c785a69 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x6361d463 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x6700ffa0 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x6c7855b3 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x7055ab41 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x749d4e5e __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x769d7b7e ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7b3b1d3e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7c82bb6c ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x7d5fd7c0 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x85e3a846 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x86ef917f ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x87a82463 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x8d2b9fd3 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9110368d ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x92ac72bc ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x96dc41a4 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x98fa4e4d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa2134c0b ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xa50fe3c6 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa6015709 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xa632fad8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xaa818fe2 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xae242420 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb5d5fa58 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xb6717b00 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xb897dd1e ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xb905ef6f ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xc46d94a7 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc48f2223 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xc948ee4c __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcdb5b228 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcf60c1bc ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xd06a9a71 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd17448bd ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd1c4e1a0 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd9399ef3 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xdfc065cb __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xe28233d9 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xe59ed92a ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xe636eb2e ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xe9a59182 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xf8b4ab73 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xfcde8446 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xffe1edb3 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x05d0bf4b ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x20f786c1 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x2ee675d2 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x3ea63bf0 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x68618bcd ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x86de32d9 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x88130902 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x9ee4dbbe ieee802154_xmit_complete +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0da22fd9 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x215be577 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3657132d register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x508468e7 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5af1599d register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5c3048a6 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8964093b ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9c185c84 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa876dfc6 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc93db616 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd49102f7 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd7828c45 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd849ead8 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe33b1f42 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa8380217 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xc22d9df2 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe3c6641b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x28e7e761 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x676c320e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x68a18f59 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x87bafddc nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xbb9294d9 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd8e233d0 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x18321064 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x3699ca23 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x399a7808 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x39a3e004 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x4a803c6f xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x51b747d0 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x7038711f xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x73ac891a xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x996c227b xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe88f079e xt_unregister_target +EXPORT_SYMBOL net/nfc/hci/hci 0x00a0c7c0 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x06fcab29 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x09299ff0 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x1110dc88 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4de2f768 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5ae80127 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6296bd55 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x72b44f9f nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7920861a nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x7ab98f84 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x81e60c44 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x94012907 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x968de585 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xaf7a01a8 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xba9ecb0c nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc520dc9f nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xcce614a9 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xcddc4454 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xfc85a065 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xfe412a7a nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xff7fffbf nfc_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x047e6f05 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x16d3c0ba nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x2faa8193 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x30fadd7f nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x32fefa88 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x3ad6f73a nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x42f959e5 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x5122c526 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x59962ed1 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5ce8d348 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x619f6697 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x67f408fb nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x6d2f433f nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x719e219d nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x75223c7f nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x7fd9d115 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x8eec3697 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x93681351 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xa5e3fbb0 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xabe915ba nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xaf00554a nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb27ae3bc nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc30044db nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0xc6d352fe nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xcb89cc10 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xe1c2f816 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xef8002e2 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xf00702d0 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nfc 0x0f3bf2a8 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x10524c35 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x1d0a827f nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x2a88bfaa nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x35e4315c nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x3714d6eb nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x3a354d0d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3ed1e2ab nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x52433f6e nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x627710de nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x7138cb23 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x7dab5ca3 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x7f7ceba5 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x94b684f7 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xa16afe96 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xadd7201e nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xbc2e01dd nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc2b93c90 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xc30b67bd nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xd6acfcbb nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xda11f663 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xe6a16474 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xfb7ebef7 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xfe4b47aa __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x271ecf70 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa08e5a03 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xee047a2b nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf6508f9c nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x073987ed phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x3b3793f8 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x60ba60fb pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xa98a717e phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xc8607ff8 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xcb54a182 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xea1087ef phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xeafb72c0 pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0491384e rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0cc9b920 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x27157cd2 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3a67e911 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7d3c6a47 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x83401196 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9993605d rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xafde0c53 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbd221fbc rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc28fe44e rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc89c7a55 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd924583e key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe3df054d rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe498b8cd rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xff794e4a rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0x76c4cbb3 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x169e4bf1 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xbf541658 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xec52c818 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x512ba340 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x65a6d098 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7a516c20 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x3a0b0e51 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x68e88dcf wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x007c1ece cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x02b7b8ac cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x066cfe29 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x06a0edc5 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ba31d12 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0be8e1a1 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x0dbf6f08 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x0e4cfefe cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x11288d8c cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x12a1b0f6 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x16400ec5 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1eedeae7 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x20600d90 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x216f4b47 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x273a7819 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x2740c721 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x29214695 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x33119383 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x339cdc6d cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x351bc3ee cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x37fdcdc9 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3830ba84 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f8632d7 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x429d56dc cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x44fedce3 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4df50c27 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4eaeadeb cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52dd16d7 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x55f4a63f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x5ddd9f0e __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x61f82d32 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bca9342 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6eaf1372 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x70772c69 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x71741055 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7cfa585d cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80fa10b6 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x83795982 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x86e4c99f regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8b78d29c cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8d8b5283 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8e984aba regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x930e6ed2 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x93c11bb5 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x94aae0fa cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x94f963fe ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x96acdbc3 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9b92101f cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9cefef8d ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa24452f7 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa3a47abb cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xa3e81df4 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xacb5d3a8 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xad10b0d3 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xadaee868 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xb0cb6411 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xb546a6b5 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc35bdb58 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc652bc3d ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc82b351f cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcaa73570 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xcd524f44 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xd0b23934 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd6680020 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xd7929110 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xd8efd37c cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xdb96c040 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd337eba cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xdf27bd6f ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xe0a59437 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe1e9e6db cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe28d7ae2 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xecc9b6d4 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf17dbe8b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf492b599 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf553c454 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf855689d cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xf945713f cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xfa624638 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd3a8067 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffad3b42 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/lib80211 0x2f44e8f9 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x3ec0fe5b lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x439b1794 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xcad69fda lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xf9b59a80 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xfba75758 lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xd099b259 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xbde91f80 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6e0a1893 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7fb4e5c0 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x8e3a5abb snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa7181395 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x91556d37 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x045df6a4 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x19644b06 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x237c480c snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x46d509d4 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x48501cc2 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x57427cce snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x6e4581b3 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfdab5ab4 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x91dc84ec snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0f154e27 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x0f709caf snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x111e61cc snd_device_register +EXPORT_SYMBOL sound/core/snd 0x1166c902 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x12128f06 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x1272769d snd_register_device +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1be5a048 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x1e8168f2 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x24d7e388 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x2949694e snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2dac8c3f snd_component_add +EXPORT_SYMBOL sound/core/snd 0x33eddd16 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x35726ec1 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x3865c9a6 snd_cards +EXPORT_SYMBOL sound/core/snd 0x3937cbab snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3d38d102 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x525cec9c snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x52c4cc4a snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x5a0f35b6 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x5b2fdbc0 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x5bd7a8f7 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x6f26913e snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x72740fc6 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x744f836d snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x7726b75f snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x7cb65f14 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x7ee5175e snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x7fcc0426 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x80c7cc16 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8123dda6 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82f00b71 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x87382813 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x8895930b snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x93a9a90c snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x973f69e4 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa58f542a snd_card_free +EXPORT_SYMBOL sound/core/snd 0xa6ad756e snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb59f2fce snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xbb5eeec1 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xbc8c14c7 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xbcb14921 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xbfe2e59b snd_info_register +EXPORT_SYMBOL sound/core/snd 0xc641b244 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xca8fa560 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xd5973f1b snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xe6aa91ff snd_card_register +EXPORT_SYMBOL sound/core/snd 0xeff03d3b snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xfc22ea60 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x2e875309 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x003c936c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0675dd0d snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x093e29fd snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x0b284832 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x17f17937 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1de70ca3 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x233dfaa2 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x2bc57c8a snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x2c9689eb snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x33f46da5 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x36163062 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x3844d1d3 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x397e1ab4 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3d9d3e5c snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x422841a6 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x455419bc snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x4b8d8ded snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4f2223f6 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5509218c _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x653d6b5a snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x6689f9c9 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x695836a4 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x75436ff6 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8bd2f705 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x9322fa84 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x945aa6a8 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xa5c152a1 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa6320405 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa944e9ff snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xb41e9aea snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xb4bf9701 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xb8f97174 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbec2340e snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xc38b426d snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xc4bf6211 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xc5cfcfd8 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xcd029e04 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd1055041 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xdda20c0d snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xe028b629 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe9043d29 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xf10adaad snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xf23d31ff snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xf8928e06 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xff4b5bb5 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xff71296b snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1a687b39 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2bbc8746 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x301c0951 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3272476f snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x32b5e3d7 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x43d723fe snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4e61b01f snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7ced6563 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb38d0438 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb9b862d8 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc4b5910b snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcbf81776 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdb230d5e snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdcb1d68c snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4861626 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4ec7bae snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf99436ae snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-timer 0x1593a140 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x17911698 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x29689552 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x2ed5a90b snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x32699b3f snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x415bdd9e snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6ea9c222 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x87ea65dc snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xb2772a7e snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xc8f68c11 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xccd2f4c3 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xd2228e93 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xf879fbc7 snd_timer_notify +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x10e278dc snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1edace01 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x65fff3a9 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x80f872b0 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x99e88fe6 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xab4dbf1c snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc01cb005 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd9046c0a snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf5a8b4d4 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf86475b9 snd_opl3_init +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0b381dd4 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x43c557fa snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6afcbdf3 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9f16ebf2 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb8a3f33c snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc6b55680 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdae29732 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xef8450fa snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf314f7a6 snd_vx_setup_firmware +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x086187b2 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e56176d fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x113f7acd amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20517a5c snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a92c979 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2ce3ae24 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2dd65338 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34d886df amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46efec60 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x496d8f17 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x504e9913 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5768f75d fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6b528971 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ca66d61 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x80b66bb1 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x82ac4df4 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8c565707 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x95b5edbb fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9d111db7 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb10c603a amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2e501d0 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbeff5040 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc18bd294 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd81b2203 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdbf0c7dc iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdeb980aa amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3539de9 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3858911 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4289530 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe48069a9 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee24a536 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc37fe71 amdtp_stream_start +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x654a46ea snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x8c4e7e8b snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0c4bc9bd snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x13d118d5 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2f2a0ec4 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4f1547f0 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4ffb7b60 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x65b13e75 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa137463f snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe184d2bb snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3e668ca1 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x564a649c snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x68d06902 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfacd422e snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x39f84cb9 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb29d1d67 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x13cb7623 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x14d3c81f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x71afa596 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x916e4634 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe6f1871b snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfa25d858 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x166f0897 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4f35c1cb snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x978ce52b snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xab0b6cb8 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb6f6d967 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc700c77e snd_i2c_device_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0afa9508 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x14508d18 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x20fdca6e snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x22e21276 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x36907b7c snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x55dada4a snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c94e9b3 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x736a7a44 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x75978dcf snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x86688844 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x906c8350 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b5e7dbc snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa53b3f2e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb13f57d2 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc0c8d8c2 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdc62e070 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xef0fa8e6 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1681b40a snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1f5d1886 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x30a2e987 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4b5883f6 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x81889ae4 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb13b511b snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb2dbafaa snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe7ae45b8 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xef50a5fa snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4262b271 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5286c373 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x90cfd353 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x064cc9dd oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x08d8a2f0 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d4f4321 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x258b070c oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2d57681e oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x34fa1218 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x36dfdf0b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x58c02ce4 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5fb65778 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62a8c65a oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x759d821f oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84ff49f4 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9284beb7 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x94d1f634 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2abe32d oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcb5e618b oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcf3f83e4 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdaac6463 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe003ddb2 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf49aff7f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf7d6e7f5 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0dc06a1f snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2814bf7c snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x64988ec0 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x75378a9b snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa7ca6023 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xcd4c640f tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xf9258211 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0x10ee65d5 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0b62eaf2 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x5232482d register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa680336e register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xadb01012 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xc1f3d56a register_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xd97bf68d sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x144ddfd6 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x65fc3065 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6cf93ca4 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x75afc1b3 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa33ebad9 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc168d4b4 snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x336f78f1 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ffe80ce snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x559bd893 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6218f3ca __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x67abff40 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x79b15913 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe1f66cee snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xeabf995b snd_util_memhdr_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x578a7293 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0000c700 mmc_release_host +EXPORT_SYMBOL vmlinux 0x0007c229 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x005dceed to_ndd +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x00a255f6 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x00c00442 d_walk +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00eda107 xattr_full_name +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0103a273 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011666b8 genphy_resume +EXPORT_SYMBOL vmlinux 0x0124fdec key_revoke +EXPORT_SYMBOL vmlinux 0x012fe9e1 sock_wfree +EXPORT_SYMBOL vmlinux 0x0159fb5e elv_rb_add +EXPORT_SYMBOL vmlinux 0x01654da0 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0171d14d tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x01802f50 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x018b53c7 pid_task +EXPORT_SYMBOL vmlinux 0x0190d522 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x019d34ea jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x01b92f51 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x01ba4ab7 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x01e49a9a kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x01eaad82 dget_parent +EXPORT_SYMBOL vmlinux 0x0202aa26 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x0207542e kernel_connect +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x024e61c1 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x02621f72 no_llseek +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0287a756 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x02966911 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x029755a5 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d7829a scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ece93b __i2c_transfer +EXPORT_SYMBOL vmlinux 0x02f666e6 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x0319a00c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x03249936 d_obtain_root +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033d1ee9 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f891b down_interruptible +EXPORT_SYMBOL vmlinux 0x036401aa netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036cf94c mmc_request_done +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037a3a69 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x03b2a035 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x03b62a94 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x03ce2d1e sk_alloc +EXPORT_SYMBOL vmlinux 0x03e1dcae kill_fasync +EXPORT_SYMBOL vmlinux 0x03e1df63 mmc_get_card +EXPORT_SYMBOL vmlinux 0x03ee4846 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0410c529 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042a23c6 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0453b913 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x0457889d jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x047bc189 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048a185e cad_pid +EXPORT_SYMBOL vmlinux 0x04a911b1 bioset_create +EXPORT_SYMBOL vmlinux 0x04b31775 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x04c330a5 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x04c3519a jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x04e01afb fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x04e88748 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04eb032c simple_unlink +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052b5c38 amba_find_device +EXPORT_SYMBOL vmlinux 0x052bc9dd serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x0540dfb8 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x055689d4 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05bfc113 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x05cfb363 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x05d8dfd2 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x05dbd58e sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x05dc9582 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062638d2 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0642a356 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x064a7cae seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x06573cb2 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0680ea3f n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x06947ece seq_printf +EXPORT_SYMBOL vmlinux 0x06a179d7 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x06a385dd jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x06a8005d get_fs_type +EXPORT_SYMBOL vmlinux 0x06bb120c rtnl_create_link +EXPORT_SYMBOL vmlinux 0x06cbf3d6 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x06d59984 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x06eaaa0d kobject_get +EXPORT_SYMBOL vmlinux 0x06fac27f nobh_write_end +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0724126c pci_reenable_device +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073500f5 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x073c3c2b devm_gpio_request +EXPORT_SYMBOL vmlinux 0x07715c5d cdrom_check_events +EXPORT_SYMBOL vmlinux 0x07758eb8 freeze_super +EXPORT_SYMBOL vmlinux 0x07979f6b vme_irq_request +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bbe86c __kernel_write +EXPORT_SYMBOL vmlinux 0x07c012ee proto_unregister +EXPORT_SYMBOL vmlinux 0x07c7e487 security_path_chmod +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d4fdf4 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x07dff3b0 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x07e95120 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x08162461 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x081ed57e xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x082262c1 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x08363040 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x0838ab5d key_link +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0841306c jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x08416ec2 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x084a580e devm_memunmap +EXPORT_SYMBOL vmlinux 0x086cc967 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x088535d7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x0888c239 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x08951630 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x0895c933 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x089e9698 pci_request_regions +EXPORT_SYMBOL vmlinux 0x08b8fa9a kill_litter_super +EXPORT_SYMBOL vmlinux 0x08bb083f follow_down_one +EXPORT_SYMBOL vmlinux 0x08be119f tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x08d80a74 do_splice_to +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x090ed1c9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x0913362d nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x0913aaa3 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x093bfc3f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x0940a87c padata_free +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095a7482 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x0971ab52 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a0696f generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x09a20343 nvm_put_blk +EXPORT_SYMBOL vmlinux 0x09a966cd tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x09ac2237 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x09c52fb7 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cb4026 block_write_full_page +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09db837a blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x09e8231d mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x09f3ee7e simple_nosetlease +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a326efa ata_dev_printk +EXPORT_SYMBOL vmlinux 0x0a54586b blk_fetch_request +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a691ab3 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x0a6aadc3 sg_miter_next +EXPORT_SYMBOL vmlinux 0x0a85ae88 page_put_link +EXPORT_SYMBOL vmlinux 0x0a9a1471 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x0a9f2e1a kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ac8ff3a __devm_request_region +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae33532 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x0aea6455 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x0b0d6da3 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b192248 security_path_link +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b528653 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x0b5ca3dc vga_tryget +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b78ad88 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x0b85cfcf textsearch_prepare +EXPORT_SYMBOL vmlinux 0x0b8e6da1 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x0ba18597 dst_discard_out +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc5f126 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x0be05908 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x0be46d37 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x0bf57c95 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x0bf83296 misc_deregister +EXPORT_SYMBOL vmlinux 0x0c00d806 d_alloc +EXPORT_SYMBOL vmlinux 0x0c052fb6 pci_bus_type +EXPORT_SYMBOL vmlinux 0x0c174dc8 phy_device_register +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c2da03e bdput +EXPORT_SYMBOL vmlinux 0x0c431c37 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5e01ab inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x0c5f044d devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x0c62a449 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c7cac01 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x0c82d359 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x0c93d677 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca76c71 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cada2c7 finish_no_open +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbf16c0 netdev_alert +EXPORT_SYMBOL vmlinux 0x0cc62817 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x0cdb0567 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x0cf29bc2 __inet_hash +EXPORT_SYMBOL vmlinux 0x0cf79918 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x0d078e79 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4c658c devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d60e338 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6babf5 vfs_readf +EXPORT_SYMBOL vmlinux 0x0d7648e4 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x0d7ff076 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d85de10 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da18899 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x0da4d42f tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0de91a35 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x0e0989c7 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x0e25e902 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x0e279321 skb_unlink +EXPORT_SYMBOL vmlinux 0x0e28d9a0 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x0e36e4f1 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x0e3ef681 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0e489c9a pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e752580 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0e77a781 lockref_put_return +EXPORT_SYMBOL vmlinux 0x0e8c76db cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x0ea6fcd3 dev_uc_del +EXPORT_SYMBOL vmlinux 0x0ea9b796 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec68569 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0ee8e122 of_get_parent +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f06bef1 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x0f08a2b2 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x0f22f847 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x0f2ce6c7 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f55248d xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x0f5fda6e irq_to_desc +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f713f54 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x0f72e4d4 bdevname +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f7d0c26 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x0f9a9d4c nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0fa01f51 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff2c759 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x1022fad4 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x105220ec textsearch_register +EXPORT_SYMBOL vmlinux 0x1053fa0f genphy_suspend +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10947fe9 amba_release_regions +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a7271e pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x10a732ba simple_fill_super +EXPORT_SYMBOL vmlinux 0x10aad584 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x10adbb76 override_creds +EXPORT_SYMBOL vmlinux 0x10c20e3f param_get_invbool +EXPORT_SYMBOL vmlinux 0x10d26b96 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f52223 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11305685 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x11351d8d of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x1159ccf1 mmc_start_req +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11651250 __scm_destroy +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11916fd9 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11c3589e locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x11c4937a tcp_conn_request +EXPORT_SYMBOL vmlinux 0x11cf2b99 nd_device_register +EXPORT_SYMBOL vmlinux 0x11d5b2ce __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x11eb7c17 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x11ef9883 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120715e7 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121c6540 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124d3378 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x12515de3 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x1276dcb9 key_type_keyring +EXPORT_SYMBOL vmlinux 0x128ef10b registered_fb +EXPORT_SYMBOL vmlinux 0x128f8eda lease_get_mtime +EXPORT_SYMBOL vmlinux 0x12912eab input_event +EXPORT_SYMBOL vmlinux 0x129a9d2a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e74b6a netdev_change_features +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x131358e1 replace_mount_options +EXPORT_SYMBOL vmlinux 0x131be39f jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1336d06c inet_listen +EXPORT_SYMBOL vmlinux 0x1342fd45 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x137bf6c1 dentry_open +EXPORT_SYMBOL vmlinux 0x13a580dc skb_vlan_push +EXPORT_SYMBOL vmlinux 0x13b3fc06 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x13b6251e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x13b98d7e simple_dname +EXPORT_SYMBOL vmlinux 0x13cfde6f d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d5353f __vfs_write +EXPORT_SYMBOL vmlinux 0x13d640a3 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x13db330c mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x13fc52e1 input_set_keycode +EXPORT_SYMBOL vmlinux 0x1430883f mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x143ec49c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x144a6886 lwtunnel_input +EXPORT_SYMBOL vmlinux 0x144bac75 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x1453fc41 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1479677a tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x147e083f adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x14811c35 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x148c9abe netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d97cfc cont_write_begin +EXPORT_SYMBOL vmlinux 0x151cb1c6 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x1531051c msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x15364b63 ida_remove +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15532a54 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x1556affc textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x157592ba input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x157ae5b2 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x157d1b4a devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x15925b5b __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x15a44555 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x15b630b3 qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15c7b9e3 tcf_em_register +EXPORT_SYMBOL vmlinux 0x15cf8a4f md_cluster_mod +EXPORT_SYMBOL vmlinux 0x15e16ab3 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x15f40c36 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x15f7a36e default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x1627fc87 __netif_schedule +EXPORT_SYMBOL vmlinux 0x162f8519 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x1641026c skb_make_writable +EXPORT_SYMBOL vmlinux 0x1655bd79 udp_ioctl +EXPORT_SYMBOL vmlinux 0x165ce576 inet_frags_init +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16aa8eaf nvm_submit_io +EXPORT_SYMBOL vmlinux 0x16ab8aa3 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x16b26b19 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x16c7e83e bitmap_unplug +EXPORT_SYMBOL vmlinux 0x16d5b6ab blk_start_request +EXPORT_SYMBOL vmlinux 0x16d5d2cd cpu_all_bits +EXPORT_SYMBOL vmlinux 0x16dae0a8 key_put +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f6cb35 alloc_disk +EXPORT_SYMBOL vmlinux 0x16f98fb8 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x16fe7fed param_set_uint +EXPORT_SYMBOL vmlinux 0x1701280e of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x17024c21 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x170d5b14 drop_super +EXPORT_SYMBOL vmlinux 0x171d7317 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x1739aafd filemap_flush +EXPORT_SYMBOL vmlinux 0x174e35b3 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x178aac45 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1793ca3d cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b3da02 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x17b9b57a commit_creds +EXPORT_SYMBOL vmlinux 0x17d488cb xfrm_register_type +EXPORT_SYMBOL vmlinux 0x17e0fbdf dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x17ee1804 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x1805b6b9 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x180db0e6 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182bb742 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x183d05fd crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184da623 md_register_thread +EXPORT_SYMBOL vmlinux 0x185581f2 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x18699eac of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x1888f20e cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189474d0 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a1fb51 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x18a4d46b d_rehash +EXPORT_SYMBOL vmlinux 0x18b27fd3 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x18b44ae9 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x18c02e08 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x18ca90ee fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x18d52de4 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18ead9b6 force_sig +EXPORT_SYMBOL vmlinux 0x18fef9cb xen_start_info +EXPORT_SYMBOL vmlinux 0x191e863b ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x193ad6b9 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x193c956d dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x194c36d0 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x194c8394 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x196b2743 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x1979be50 uart_resume_port +EXPORT_SYMBOL vmlinux 0x19891a2d __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x1992d8dd tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x19943622 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19b661a2 lro_flush_all +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19db491e mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x1a328afd devm_request_resource +EXPORT_SYMBOL vmlinux 0x1a3cea6a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1a4040c5 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a63de4f dquot_acquire +EXPORT_SYMBOL vmlinux 0x1a658f53 __frontswap_test +EXPORT_SYMBOL vmlinux 0x1a720113 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x1a7cbcce tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x1a830ead __genl_register_family +EXPORT_SYMBOL vmlinux 0x1a8573f1 noop_llseek +EXPORT_SYMBOL vmlinux 0x1a8bff62 have_submounts +EXPORT_SYMBOL vmlinux 0x1a9a11d7 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x1a9ec1a2 param_ops_bool +EXPORT_SYMBOL vmlinux 0x1ab06748 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1afa014f uart_suspend_port +EXPORT_SYMBOL vmlinux 0x1afbec9f devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x1afc125d d_tmpfile +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b34f714 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x1b389293 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x1b422319 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x1b4825a8 inode_set_flags +EXPORT_SYMBOL vmlinux 0x1b52af7b pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6c84e6 init_buffer +EXPORT_SYMBOL vmlinux 0x1b6fdf1c set_user_nice +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b86fd5a tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb390c5 md_reload_sb +EXPORT_SYMBOL vmlinux 0x1bbb43b3 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x1bc274bf swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x1bca2a90 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x1bd26ea1 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x1bdf6ad1 genphy_update_link +EXPORT_SYMBOL vmlinux 0x1bfc6f70 request_key +EXPORT_SYMBOL vmlinux 0x1c272a57 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x1c278aae copy_from_iter +EXPORT_SYMBOL vmlinux 0x1c3a4b3d mdiobus_write +EXPORT_SYMBOL vmlinux 0x1c4b6fae input_open_device +EXPORT_SYMBOL vmlinux 0x1c4ee3b2 dev_uc_add +EXPORT_SYMBOL vmlinux 0x1c8709f9 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c9512db mdiobus_read +EXPORT_SYMBOL vmlinux 0x1ca65252 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x1cabfa20 find_lock_entry +EXPORT_SYMBOL vmlinux 0x1cb167e4 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x1cb636af trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x1cc6dfcf prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1ce47ed6 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x1cf86eb0 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x1cf9a15c nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x1d09b222 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d47a15f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x1d563947 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x1d6a8a29 xfrm_input +EXPORT_SYMBOL vmlinux 0x1d7745c4 tty_write_room +EXPORT_SYMBOL vmlinux 0x1d89bdac neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x1d92d898 complete_and_exit +EXPORT_SYMBOL vmlinux 0x1d9e2ee5 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcec7c5 sock_create +EXPORT_SYMBOL vmlinux 0x1dd1108b elevator_alloc +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddf8566 set_blocksize +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1deed09e dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x1def7f34 blk_init_queue +EXPORT_SYMBOL vmlinux 0x1df9b1c8 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e19a892 scmd_printk +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e582921 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7daf33 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x1e87f6ed vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x1e9e1047 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea06663 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x1ea0a7ab kernel_neon_begin_partial +EXPORT_SYMBOL vmlinux 0x1ea5d24f scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x1ec649ff neigh_direct_output +EXPORT_SYMBOL vmlinux 0x1ef8062f netdev_crit +EXPORT_SYMBOL vmlinux 0x1f037ad7 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x1f359963 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x1f4c3b80 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x1f507484 of_clk_get +EXPORT_SYMBOL vmlinux 0x1f6b7049 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1fa4a5ea serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x1fb124d0 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x1fb73a82 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fbd469d dev_printk_emit +EXPORT_SYMBOL vmlinux 0x1fc4e298 pci_bus_get +EXPORT_SYMBOL vmlinux 0x1fcf4d4b _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdc7df2 _mcount +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff7b229 mmc_erase +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20246115 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x202640e6 fb_find_mode +EXPORT_SYMBOL vmlinux 0x204346af proc_dostring +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204ffff9 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x20557c0d padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x205b32a1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x205c2c91 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x206b55a6 inet6_release +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207bc560 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208e4e8b ip6_frag_match +EXPORT_SYMBOL vmlinux 0x20906cd5 idr_destroy +EXPORT_SYMBOL vmlinux 0x209ae3a7 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x20a787f9 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ba603f rt6_lookup +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20da621c brioctl_set +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e259b1 nf_log_set +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ec1112 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20ffa7f6 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x210a507a block_truncate_page +EXPORT_SYMBOL vmlinux 0x211ec546 pci_clear_master +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x2148fc10 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x215bc009 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x21608981 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x21697349 bio_copy_data +EXPORT_SYMBOL vmlinux 0x2169bbe9 phy_attach +EXPORT_SYMBOL vmlinux 0x21869dbe of_get_property +EXPORT_SYMBOL vmlinux 0x2196ee27 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x219c8acb register_sysctl +EXPORT_SYMBOL vmlinux 0x21b994b0 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x21ddad3f ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f0e9e8 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x21f8769d gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x21facbec sock_edemux +EXPORT_SYMBOL vmlinux 0x2226969d xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x2229944c single_open +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x224ff4ad wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x2256e828 padata_alloc +EXPORT_SYMBOL vmlinux 0x2256f843 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2269aa04 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x2270b6b9 dev_load +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227f3f14 single_release +EXPORT_SYMBOL vmlinux 0x2281b0ab fifo_set_limit +EXPORT_SYMBOL vmlinux 0x228447f1 nf_log_unset +EXPORT_SYMBOL vmlinux 0x228df601 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x22b1ce65 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b50707 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x22b83fbf unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x22baea3d proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x22ee0d63 ppp_input_error +EXPORT_SYMBOL vmlinux 0x22f8aef5 unregister_key_type +EXPORT_SYMBOL vmlinux 0x22fcc990 sk_wait_data +EXPORT_SYMBOL vmlinux 0x231c5307 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2322ab13 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x232cefcc inet_stream_connect +EXPORT_SYMBOL vmlinux 0x2364c326 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x23686bfc __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x2374a47f alloc_disk_node +EXPORT_SYMBOL vmlinux 0x23840f38 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cc3c6b tty_port_hangup +EXPORT_SYMBOL vmlinux 0x23d96698 block_write_begin +EXPORT_SYMBOL vmlinux 0x23da44db get_super_thawed +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2419e788 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x241a5d1e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24554b35 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24bb2837 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x24c7c6ec netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x24ef7954 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x24fb7299 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2534412c param_set_charp +EXPORT_SYMBOL vmlinux 0x254f5c4e sock_alloc_file +EXPORT_SYMBOL vmlinux 0x255bb072 change_bit +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257362b2 udp_prot +EXPORT_SYMBOL vmlinux 0x257abd9f input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25899508 setup_new_exec +EXPORT_SYMBOL vmlinux 0x25914b39 sock_i_uid +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f65d44 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x25fe01cf pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x26108d7b of_n_size_cells +EXPORT_SYMBOL vmlinux 0x262aa7e7 security_path_rename +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265811c2 skb_find_text +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26663703 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x266692ee release_pages +EXPORT_SYMBOL vmlinux 0x266af3e3 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x26785d65 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x26849db9 up_read +EXPORT_SYMBOL vmlinux 0x26b202cf add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x26dfa950 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f56280 security_path_truncate +EXPORT_SYMBOL vmlinux 0x2717b1b6 get_cached_acl +EXPORT_SYMBOL vmlinux 0x271c0693 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272234e8 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x2724ba66 __ioremap +EXPORT_SYMBOL vmlinux 0x2735bbd1 kill_pgrp +EXPORT_SYMBOL vmlinux 0x273a82e1 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27530942 tso_build_data +EXPORT_SYMBOL vmlinux 0x27691c78 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x27757fb3 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2798f89c tty_unregister_device +EXPORT_SYMBOL vmlinux 0x27ab083a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b76d7b inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c25c97 param_set_long +EXPORT_SYMBOL vmlinux 0x27c5f259 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x27c7ea7f submit_bio +EXPORT_SYMBOL vmlinux 0x27e08e88 loop_backing_file +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f5e62f blk_end_request_all +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281f76d6 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x2820605a inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x2825f354 empty_aops +EXPORT_SYMBOL vmlinux 0x282879cd pci_disable_msix +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x285088e4 set_security_override +EXPORT_SYMBOL vmlinux 0x28534f25 dqput +EXPORT_SYMBOL vmlinux 0x28649a8f copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a8d2e2 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28af6891 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x28bfb36f udp6_csum_init +EXPORT_SYMBOL vmlinux 0x28d7ffea lg_local_unlock +EXPORT_SYMBOL vmlinux 0x28f41c17 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x29118d47 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x291ba05d udplite_table +EXPORT_SYMBOL vmlinux 0x291fc397 netdev_warn +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296f084f ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x298116f5 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x2981b051 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x29896ecf search_binary_handler +EXPORT_SYMBOL vmlinux 0x299de242 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x29c0d00b genl_unregister_family +EXPORT_SYMBOL vmlinux 0x29cacd4d pci_disable_msi +EXPORT_SYMBOL vmlinux 0x29f774a9 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x29fd8882 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x2a000441 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x2a04b8dd max8998_read_reg +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a349802 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3c33e1 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x2a4ed3f3 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x2a50f66e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x2a59460f flow_cache_init +EXPORT_SYMBOL vmlinux 0x2aa1ad41 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x2aa3c07d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2aba6ebe skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2af1f5fc filp_open +EXPORT_SYMBOL vmlinux 0x2af46cab skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x2afb457b pneigh_lookup +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b7c69bb sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x2b8682d7 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x2b9172f4 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x2b9ab67b mmc_free_host +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba55c9e param_ops_ullong +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb2f10f sg_miter_start +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bb8b03f __sk_dst_check +EXPORT_SYMBOL vmlinux 0x2bc7753e blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2bf4c721 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x2bfbab10 __memmove +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c07ea10 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x2c0d40c2 param_get_int +EXPORT_SYMBOL vmlinux 0x2c1f5c21 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x2c2213fb of_iomap +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3eff30 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x2c43c5d3 simple_release_fs +EXPORT_SYMBOL vmlinux 0x2c467904 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x2c5808e1 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2c6c4d9f skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x2cb31062 kern_path +EXPORT_SYMBOL vmlinux 0x2cd7a810 mutex_unlock +EXPORT_SYMBOL vmlinux 0x2cdefd93 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x2ce89fb1 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x2ceefe45 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d09ef70 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1f616d serio_interrupt +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d74f58f pnp_device_detach +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dcd3ee8 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2de1327b bit_waitqueue +EXPORT_SYMBOL vmlinux 0x2de593a5 mmc_put_card +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2df6861c bdi_register_dev +EXPORT_SYMBOL vmlinux 0x2e08e93a blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e221466 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2be90d thaw_bdev +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e32513b get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e71db54 seq_escape +EXPORT_SYMBOL vmlinux 0x2e7be112 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2e8e53d4 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x2e8fdefe inet_getname +EXPORT_SYMBOL vmlinux 0x2ea1c0a3 free_page_put_link +EXPORT_SYMBOL vmlinux 0x2ea4c1c9 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x2eb8fb40 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2ef6e310 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0f01a4 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x2f14b54d __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x2f1ef7f3 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x2f22c762 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x2f2bdc25 __dst_free +EXPORT_SYMBOL vmlinux 0x2f2e0e1a sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x2f2f03d6 save_mount_options +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3857e2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4ca14a dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x2f6700e9 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x2f741210 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x2f7f1d2c mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x2f81f2f3 write_one_page +EXPORT_SYMBOL vmlinux 0x2fa4f1cb vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x2fa74c38 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x2fb2388f xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc79eb2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x2fd6614f nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe4dd4e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff21302 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x2ffc74e3 keyring_search +EXPORT_SYMBOL vmlinux 0x300d4382 nf_log_register +EXPORT_SYMBOL vmlinux 0x30141b32 backlight_force_update +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304c86dc truncate_setsize +EXPORT_SYMBOL vmlinux 0x304ec72b _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x3054a41f dquot_get_state +EXPORT_SYMBOL vmlinux 0x305cec12 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x3074cf7c dev_uc_flush +EXPORT_SYMBOL vmlinux 0x30779001 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307d5031 mount_single +EXPORT_SYMBOL vmlinux 0x3081ec66 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x3088b51c dentry_unhash +EXPORT_SYMBOL vmlinux 0x3091316c vfs_read +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30da5ef6 init_task +EXPORT_SYMBOL vmlinux 0x30e4c97e try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f69007 revalidate_disk +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31033b81 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x311bd5bd tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x3139aa01 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x313bb819 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31581c36 dm_register_target +EXPORT_SYMBOL vmlinux 0x315dcecd inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x3161a91a dma_async_device_register +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x318a05a3 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x31a3a05e of_get_address +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31c69c2d __neigh_create +EXPORT_SYMBOL vmlinux 0x31db5306 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x31eaac74 dev_addr_init +EXPORT_SYMBOL vmlinux 0x31ef3d8d tty_port_open +EXPORT_SYMBOL vmlinux 0x31f3ab32 file_path +EXPORT_SYMBOL vmlinux 0x320716f1 blk_rq_init +EXPORT_SYMBOL vmlinux 0x32086fb2 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x320dba67 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3217b2de jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x321ccb82 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x324b3877 up +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x32ad54c8 of_match_device +EXPORT_SYMBOL vmlinux 0x32c6e79b xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32debe8b of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f4bd5e single_open_size +EXPORT_SYMBOL vmlinux 0x330c36fa blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x330f11dc open_check_o_direct +EXPORT_SYMBOL vmlinux 0x3335c2b2 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x334253a2 kernel_write +EXPORT_SYMBOL vmlinux 0x335bba19 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x3377936f mount_ns +EXPORT_SYMBOL vmlinux 0x3385a65f make_kprojid +EXPORT_SYMBOL vmlinux 0x33865dba bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x33c214d4 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d56f0a thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x33dac31d sget +EXPORT_SYMBOL vmlinux 0x33efcd5c seq_vprintf +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f81e31 pci_select_bars +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x3408ec06 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x34149a04 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x34413eff blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x345109ba phy_print_status +EXPORT_SYMBOL vmlinux 0x345a8935 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x3461d61f param_ops_ulong +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x346ad9f4 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x346f65c5 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34787eca cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x349733f1 try_to_release_page +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34cae890 elevator_exit +EXPORT_SYMBOL vmlinux 0x34cb5db8 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x34cd91d1 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x34dd1f95 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x34e3d4d5 keyring_alloc +EXPORT_SYMBOL vmlinux 0x34e8fc7a key_payload_reserve +EXPORT_SYMBOL vmlinux 0x34f0d2a2 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3509f935 unload_nls +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3518265a acpi_device_hid +EXPORT_SYMBOL vmlinux 0x352551c8 ll_rw_block +EXPORT_SYMBOL vmlinux 0x3539805d inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x35602c5a scsi_register +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x359da8f6 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ac07b5 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360f8f8a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x360ff19f down +EXPORT_SYMBOL vmlinux 0x3640e687 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x364b42ca mfd_add_devices +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b739e3 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x36b9548b nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bfce71 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x371269d8 down_write_trylock +EXPORT_SYMBOL vmlinux 0x371abbf2 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x3737ed60 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37566455 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x37644db3 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x3774cb0b buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x37881a2a elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x3791b272 mii_check_media +EXPORT_SYMBOL vmlinux 0x37a1b3a6 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x37a92114 blk_init_tags +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d0c184 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x37d42051 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37df6c88 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x37e012b8 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x37eb4878 of_root +EXPORT_SYMBOL vmlinux 0x37f4b722 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x380ee87a abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381b1e2f sk_net_capable +EXPORT_SYMBOL vmlinux 0x381be56c uart_get_divisor +EXPORT_SYMBOL vmlinux 0x38858cfa __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38894e8a locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x388f1fd3 nf_register_hook +EXPORT_SYMBOL vmlinux 0x38953bbf truncate_pagecache +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38bf30ae jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x38c852fa mount_nodev +EXPORT_SYMBOL vmlinux 0x38dec89b set_anon_super +EXPORT_SYMBOL vmlinux 0x38f0380c phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x390725c7 ip_defrag +EXPORT_SYMBOL vmlinux 0x392979d9 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39645515 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3977b81b neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x3985303c skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cfbd8f mpage_writepage +EXPORT_SYMBOL vmlinux 0x39ef1388 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x3a88390f elv_rb_del +EXPORT_SYMBOL vmlinux 0x3a914c1f padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x3a95a4b9 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aac84dd phy_device_free +EXPORT_SYMBOL vmlinux 0x3ab41b25 __copy_in_user +EXPORT_SYMBOL vmlinux 0x3abf8b6e alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x3ae369c8 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x3ae7f2b5 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x3b027760 md_flush_request +EXPORT_SYMBOL vmlinux 0x3b300948 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b38021f pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6c7c5e sock_register +EXPORT_SYMBOL vmlinux 0x3b712bfe dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b7f7472 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x3b807478 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x3b8c20eb tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x3bb0e462 free_buffer_head +EXPORT_SYMBOL vmlinux 0x3bbbe8eb pagecache_write_end +EXPORT_SYMBOL vmlinux 0x3bc594f4 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x3bcce6b7 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x3bcd67b5 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x3bde76a3 generic_make_request +EXPORT_SYMBOL vmlinux 0x3bf092c6 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x3c0e56fa down_read_trylock +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c5fc4c2 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x3c7e1a05 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c96ffb7 __get_user_pages +EXPORT_SYMBOL vmlinux 0x3ca1f5ab key_alloc +EXPORT_SYMBOL vmlinux 0x3cbabf6f vm_mmap +EXPORT_SYMBOL vmlinux 0x3cbf625c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x3cc9de69 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x3cd18af5 vme_slot_num +EXPORT_SYMBOL vmlinux 0x3cdf5e60 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x3ce23359 __page_symlink +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfae893 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x3d04298a current_fs_time +EXPORT_SYMBOL vmlinux 0x3d093081 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x3d28b0bf tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x3d2fe700 ppp_input +EXPORT_SYMBOL vmlinux 0x3d459898 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x3d548b19 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc0faef kthread_stop +EXPORT_SYMBOL vmlinux 0x3dca6cb2 dquot_release +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd3193e mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x3de189e8 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x3df22421 input_flush_device +EXPORT_SYMBOL vmlinux 0x3df45b1e qdisc_list_add +EXPORT_SYMBOL vmlinux 0x3dfc083d sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0ed0ef mount_pseudo +EXPORT_SYMBOL vmlinux 0x3e17538f phy_drivers_register +EXPORT_SYMBOL vmlinux 0x3e1a87cd bdev_read_only +EXPORT_SYMBOL vmlinux 0x3e1b3f1a ps2_end_command +EXPORT_SYMBOL vmlinux 0x3e1d3345 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x3e1e3ae8 ip6_route_output +EXPORT_SYMBOL vmlinux 0x3e2a875a register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3e2be743 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x3e4f5888 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x3e8e0738 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea44e04 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x3ec4eb57 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x3ecdb1d8 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x3ece3f32 __register_binfmt +EXPORT_SYMBOL vmlinux 0x3f14264c vfs_fsync +EXPORT_SYMBOL vmlinux 0x3f165f53 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x3f3cd100 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f474312 mount_subtree +EXPORT_SYMBOL vmlinux 0x3f484d76 inet6_protos +EXPORT_SYMBOL vmlinux 0x3f6642f2 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x3f7867d4 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x3f890655 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x3f8bf590 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x3f8e8500 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x3f8f0355 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x3f992af2 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x3f9e64b3 param_set_short +EXPORT_SYMBOL vmlinux 0x3fb5a38c iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x3fd62a23 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3fdea131 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fefb8cb security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x3ff9490b copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x3ff99bee blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x3ff9beca bio_map_kern +EXPORT_SYMBOL vmlinux 0x40214678 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4043af71 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x40440493 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a51987 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x40a872ec compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b99a16 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x40bd07a6 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x40be0f59 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40ce818a vfs_rmdir +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40f154cf do_truncate +EXPORT_SYMBOL vmlinux 0x40fb9cc3 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x41038792 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x412a2975 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x412dcc55 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4173d8ad devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x41877a76 generic_update_time +EXPORT_SYMBOL vmlinux 0x4188b6cf make_kgid +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41c7a139 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x41e41bbb block_write_end +EXPORT_SYMBOL vmlinux 0x41ec17fa mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421919d5 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x426a8ac5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x42770fce pci_remove_bus +EXPORT_SYMBOL vmlinux 0x427791d3 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x428f871f netpoll_print_options +EXPORT_SYMBOL vmlinux 0x42953faa ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ab9908 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x42ae5af0 dqstats +EXPORT_SYMBOL vmlinux 0x42c6c8db tty_register_device +EXPORT_SYMBOL vmlinux 0x42d52965 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x42da6542 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42f6d58b sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4310bcba alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x43240cb9 d_splice_alias +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4363a766 vfs_unlink +EXPORT_SYMBOL vmlinux 0x43668e42 arp_create +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439e40ef register_shrinker +EXPORT_SYMBOL vmlinux 0x43ab9288 param_set_ushort +EXPORT_SYMBOL vmlinux 0x43b06b84 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x43c4fa85 d_alloc_name +EXPORT_SYMBOL vmlinux 0x43d82429 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44063191 devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x44067b28 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441373e5 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x441a60c9 __free_pages +EXPORT_SYMBOL vmlinux 0x4428d636 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x44303727 nf_log_trace +EXPORT_SYMBOL vmlinux 0x443574f6 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x443f6666 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x4442bb3d qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x4489680c generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x4489e317 revert_creds +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a00d72 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44ce4be2 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45266620 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4528bd1c skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4548165c d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x45613270 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x45641f52 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457c1114 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45d85a78 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x45f195fe jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x45fa2531 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x46074932 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x4615597a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d9bf3 dup_iter +EXPORT_SYMBOL vmlinux 0x462c660f proc_dointvec +EXPORT_SYMBOL vmlinux 0x46375e7c pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x46393276 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x4646a1a1 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x464e0f95 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x46528b56 param_get_charp +EXPORT_SYMBOL vmlinux 0x465ba3b5 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46625bc1 vga_get +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46724f2f input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46927f12 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x46e01124 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x46ef7d0f iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x46f1b478 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x46f5ddf5 icmp_send +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47327255 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x47395880 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x4746e370 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x47579cbb __frontswap_load +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x475fdbf5 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x4761d8a2 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x4775592a vfs_symlink +EXPORT_SYMBOL vmlinux 0x477bafe8 dquot_destroy +EXPORT_SYMBOL vmlinux 0x47870ced fsync_bdev +EXPORT_SYMBOL vmlinux 0x478e0180 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47947037 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x4798cc3f param_ops_long +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a1b894 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x47a3cdba vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x47aca0ae mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x47acb383 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x47b8a557 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x47c4e4fc tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x47c720a7 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x47e4ac81 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x47fdf4d2 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x481512ee serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x481cd878 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482c04aa balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486d09a8 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x488e4789 __invalidate_device +EXPORT_SYMBOL vmlinux 0x489ee324 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x48b33f78 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d3c9df twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x48dab3a8 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x48dae52c __napi_complete +EXPORT_SYMBOL vmlinux 0x48eab47b down_read +EXPORT_SYMBOL vmlinux 0x48f290d9 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4912bbfe parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x491b95d4 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x49473449 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x4948582d kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4968a0c5 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x4972b84b bio_unmap_user +EXPORT_SYMBOL vmlinux 0x4976a31f page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x498b7493 devm_clk_put +EXPORT_SYMBOL vmlinux 0x49930938 idr_replace +EXPORT_SYMBOL vmlinux 0x49a3393b ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b3cacd mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x49c18102 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a28eb7e devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x4a3420e0 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x4a419ed4 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x4a75890f tty_name +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4ab8f319 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x4ab9c46b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acae04a page_readlink +EXPORT_SYMBOL vmlinux 0x4acc5695 napi_disable +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2b21e jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x4afaa6a6 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b26bd24 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x4b34144f __inode_permission +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b678d7c netlink_ack +EXPORT_SYMBOL vmlinux 0x4b8270c8 nf_reinject +EXPORT_SYMBOL vmlinux 0x4ba98017 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x4bad1354 blk_queue_split +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bc4fad4 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x4bc8fc62 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x4bd4c0ff dev_get_by_name +EXPORT_SYMBOL vmlinux 0x4bd9ecfc proc_remove +EXPORT_SYMBOL vmlinux 0x4bda309c lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x4be08405 param_ops_int +EXPORT_SYMBOL vmlinux 0x4bf8493f put_disk +EXPORT_SYMBOL vmlinux 0x4c03b4c2 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c1bca2f of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x4c20ade2 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x4c240ecd mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c47177a simple_readpage +EXPORT_SYMBOL vmlinux 0x4c5f0e5c sync_filesystem +EXPORT_SYMBOL vmlinux 0x4c6f9ef3 test_and_change_bit +EXPORT_SYMBOL vmlinux 0x4c81cb9d param_get_short +EXPORT_SYMBOL vmlinux 0x4c877a97 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x4c9a758f i2c_register_driver +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb04d08 elv_add_request +EXPORT_SYMBOL vmlinux 0x4cb4bbdc tty_port_put +EXPORT_SYMBOL vmlinux 0x4cb7de56 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4cc9aed7 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x4cce754d dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf1e04e ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x4cf2af9a bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d1d62bf of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x4d2c4c70 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x4d5130a2 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4d8cea4e ns_capable +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dc45839 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x4dc96c70 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x4ddaf3a4 fget_raw +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de7b0f5 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfc5d12 generic_readlink +EXPORT_SYMBOL vmlinux 0x4dfe2310 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x4e05f1dc max8925_reg_read +EXPORT_SYMBOL vmlinux 0x4e09fc71 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x4e28da6a invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x4e2b0225 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e36c6a9 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x4e522ba2 __alloc_skb +EXPORT_SYMBOL vmlinux 0x4e54139b misc_register +EXPORT_SYMBOL vmlinux 0x4e5c007f nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x4e6135ef framebuffer_release +EXPORT_SYMBOL vmlinux 0x4e62da72 mpage_writepages +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb05135 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x4ecf0868 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x4ed880ab register_filesystem +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f29a5d5 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3d18bc jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4d74a1 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x4f52f2c4 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6e97cd __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7958de rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4fb80042 bdi_init +EXPORT_SYMBOL vmlinux 0x4fc1cce8 kill_block_super +EXPORT_SYMBOL vmlinux 0x4fdc8db8 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x50013855 sock_from_file +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x502e61be dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x50395d40 __seq_open_private +EXPORT_SYMBOL vmlinux 0x50542d11 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x5060fd9b tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50947e99 netdev_state_change +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a57a8c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50ec9adf tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x50ff7d8c devm_free_irq +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51305105 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x51310c37 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x5147fb8b poll_freewait +EXPORT_SYMBOL vmlinux 0x515f8c9a tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x5166e089 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x51749fc8 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x51a5d428 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x51b3cb6d blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x51b79876 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x51cc25be fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51e2c771 put_filp +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51f6f34d I_BDEV +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521368ac simple_empty +EXPORT_SYMBOL vmlinux 0x5215e882 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5228dead __kfree_skb +EXPORT_SYMBOL vmlinux 0x5239ce3b ___ratelimit +EXPORT_SYMBOL vmlinux 0x5244881d path_get +EXPORT_SYMBOL vmlinux 0x524d20d3 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x525140f3 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x525248c0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x5253979b set_wb_congested +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526d5f41 sock_release +EXPORT_SYMBOL vmlinux 0x5283665d fb_class +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52e5cbb0 fb_set_var +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5321b1f4 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534058ac fb_pan_display +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x53714e5a phy_resume +EXPORT_SYMBOL vmlinux 0x5371f0a5 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x537b7ed3 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x538a2312 inet_add_offload +EXPORT_SYMBOL vmlinux 0x53971681 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53bb5d19 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x53d7e2b7 do_splice_direct +EXPORT_SYMBOL vmlinux 0x53f5ad7f eth_change_mtu +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x541104b9 phy_detach +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x547008aa inet_del_protocol +EXPORT_SYMBOL vmlinux 0x5471b2ef sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x54846391 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x548c6ac0 input_set_capability +EXPORT_SYMBOL vmlinux 0x54933215 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54afd568 processors +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c3d345 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x54c5931c block_read_full_page +EXPORT_SYMBOL vmlinux 0x54d4bded ida_init +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5501b2c6 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x550fb5c9 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55295c0b dput +EXPORT_SYMBOL vmlinux 0x552e779e loop_register_transfer +EXPORT_SYMBOL vmlinux 0x553f0500 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55452d22 free_task +EXPORT_SYMBOL vmlinux 0x556112ae fence_signal_locked +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x558c5acf install_exec_creds +EXPORT_SYMBOL vmlinux 0x558e17a7 inet_addr_type +EXPORT_SYMBOL vmlinux 0x55908bd0 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x55c0299f nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x55c98a68 make_bad_inode +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e2b6ca __blk_end_request +EXPORT_SYMBOL vmlinux 0x55e4ca28 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x55f971b4 __f_setown +EXPORT_SYMBOL vmlinux 0x5603e3f0 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x562f0f22 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x56342ce1 down_timeout +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642175d fget +EXPORT_SYMBOL vmlinux 0x56439ae5 nf_log_packet +EXPORT_SYMBOL vmlinux 0x566a3b5e qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x569dbf84 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x56b78a40 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x56bc54f1 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x56c1a00a dma_sync_wait +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ca101e inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x56d3bb9b blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x56f3107e reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x56f33e20 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x56f6598a filemap_fault +EXPORT_SYMBOL vmlinux 0x570d261c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x571054b3 tso_start +EXPORT_SYMBOL vmlinux 0x572d0104 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5734f839 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x574c154d dma_common_mmap +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574cbaaf inet_select_addr +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577c00cf simple_transaction_set +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x577eb5e7 pci_restore_state +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5798719c dev_deactivate +EXPORT_SYMBOL vmlinux 0x579b0ae0 set_cached_acl +EXPORT_SYMBOL vmlinux 0x57a45146 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x57a8792d walk_stackframe +EXPORT_SYMBOL vmlinux 0x57bbbe90 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x5806e316 kill_pid +EXPORT_SYMBOL vmlinux 0x5809c7f5 vm_event_states +EXPORT_SYMBOL vmlinux 0x58178ddb netif_rx +EXPORT_SYMBOL vmlinux 0x581bb64d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582971b4 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x58642d75 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58765196 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x5879817c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x588159e1 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x588b2564 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e777de scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x59148a9b __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5929afe9 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x59491132 dquot_file_open +EXPORT_SYMBOL vmlinux 0x5958f1e0 bio_add_page +EXPORT_SYMBOL vmlinux 0x596c28cf sock_sendmsg +EXPORT_SYMBOL vmlinux 0x59853dfe inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59af9564 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x59c961db led_blink_set +EXPORT_SYMBOL vmlinux 0x59cb3483 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x59e15a85 dm_get_device +EXPORT_SYMBOL vmlinux 0x59e66641 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x5a090c69 nvm_end_io +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a38bb9d pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x5a3fdfd9 scsi_device_put +EXPORT_SYMBOL vmlinux 0x5a43487b iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5a4d46a8 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x5a5393f4 ps2_init +EXPORT_SYMBOL vmlinux 0x5a552db5 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5a72618d tty_free_termios +EXPORT_SYMBOL vmlinux 0x5a76d4a8 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x5a783d86 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x5a7e73c3 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9b41ad inet6_getname +EXPORT_SYMBOL vmlinux 0x5a9c9cf3 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5abd5896 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x5aee2f9d vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b0d1cd0 pnp_is_active +EXPORT_SYMBOL vmlinux 0x5b0e8936 __napi_schedule +EXPORT_SYMBOL vmlinux 0x5b19653b iterate_fd +EXPORT_SYMBOL vmlinux 0x5b2bd18a pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x5b2cf395 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x5b4eac2d iov_iter_init +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b7af60c napi_complete_done +EXPORT_SYMBOL vmlinux 0x5b9c808a acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0x5ba5d9ed nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc18959 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x5bf3f999 pci_save_state +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c1e6e68 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x5c2435e1 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x5c342c66 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x5c376a8f scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x5c3c92b1 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5c468021 bio_chain +EXPORT_SYMBOL vmlinux 0x5c5f44d8 tty_kref_put +EXPORT_SYMBOL vmlinux 0x5c82ca82 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x5c9986d7 dquot_drop +EXPORT_SYMBOL vmlinux 0x5ca7a52e inode_change_ok +EXPORT_SYMBOL vmlinux 0x5cb23d40 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x5cb4bd3e set_disk_ro +EXPORT_SYMBOL vmlinux 0x5cccd6d0 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x5cd08b27 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x5cd885d5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x5ce1afcf seq_puts +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfd4de5 lookup_one_len +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d4b9f6d param_ops_string +EXPORT_SYMBOL vmlinux 0x5d521b74 deactivate_super +EXPORT_SYMBOL vmlinux 0x5d53d92a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d71c80d tcf_hash_search +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5da3581d xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5db1dbb9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x5e051e73 phy_suspend +EXPORT_SYMBOL vmlinux 0x5e0efc09 set_device_ro +EXPORT_SYMBOL vmlinux 0x5e21aa41 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x5e2d629e genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x5e4b7b10 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x5e6bbc69 devm_ioremap +EXPORT_SYMBOL vmlinux 0x5e743907 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x5e80419e security_inode_readlink +EXPORT_SYMBOL vmlinux 0x5e85b6ec simple_transaction_get +EXPORT_SYMBOL vmlinux 0x5e8a81f8 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea6f08f __irq_regs +EXPORT_SYMBOL vmlinux 0x5ea79efe fence_default_wait +EXPORT_SYMBOL vmlinux 0x5ead9eff of_node_get +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb5a55e msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x5ec09898 unlock_rename +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f04566b tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f256699 input_close_device +EXPORT_SYMBOL vmlinux 0x5f33e3b1 input_release_device +EXPORT_SYMBOL vmlinux 0x5f4d9e43 __serio_register_port +EXPORT_SYMBOL vmlinux 0x5f4ff6f4 dst_destroy +EXPORT_SYMBOL vmlinux 0x5f99e1fa vme_irq_generate +EXPORT_SYMBOL vmlinux 0x5fd4f9ff blk_requeue_request +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fddbdac ilookup +EXPORT_SYMBOL vmlinux 0x5ffdf5d8 set_nlink +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60091311 sync_inode +EXPORT_SYMBOL vmlinux 0x60109f40 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6047dde3 clk_get +EXPORT_SYMBOL vmlinux 0x60595d64 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x605aceaa dev_set_group +EXPORT_SYMBOL vmlinux 0x6069eaf1 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x60967673 sock_no_bind +EXPORT_SYMBOL vmlinux 0x609cf4fc scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60d66f76 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x60d88123 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e21139 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x6103e024 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x610c133e debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6129ab75 uart_match_port +EXPORT_SYMBOL vmlinux 0x613c2d16 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x6145a550 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x616f48f1 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x617a62f5 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x617f31ca inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a1cd53 seq_release +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c5f75a xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x61cf7d66 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x61d18ad1 cdrom_release +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61da4712 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x61da72dd neigh_seq_next +EXPORT_SYMBOL vmlinux 0x61ed776e tcp_proc_register +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6222fc2f ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62351849 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x624c731f blk_free_tags +EXPORT_SYMBOL vmlinux 0x624f7c98 ip6_xmit +EXPORT_SYMBOL vmlinux 0x626bfc63 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x62714c7f xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62c2b773 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x62dd795e pci_dev_get +EXPORT_SYMBOL vmlinux 0x6303f9df page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x630c0695 __check_sticky +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631a2275 vme_register_driver +EXPORT_SYMBOL vmlinux 0x63268151 finish_open +EXPORT_SYMBOL vmlinux 0x63614324 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x636b8844 param_ops_short +EXPORT_SYMBOL vmlinux 0x639334f3 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x639b98d2 of_device_is_available +EXPORT_SYMBOL vmlinux 0x639e4efa file_remove_privs +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a21b25 netdev_notice +EXPORT_SYMBOL vmlinux 0x63a25cf9 dev_printk +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63aba270 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63ddb0b7 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x63e719ce kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64090336 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644cbc58 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x6463ab44 vga_client_register +EXPORT_SYMBOL vmlinux 0x64774f40 vfs_create +EXPORT_SYMBOL vmlinux 0x6486df1e clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64afd67d dev_remove_pack +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c5c82f dev_get_stats +EXPORT_SYMBOL vmlinux 0x64ef59fe devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652191b9 put_page +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65345022 __wake_up +EXPORT_SYMBOL vmlinux 0x653565dd file_ns_capable +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6563cddf mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x65723c43 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x658380fb kern_unmount +EXPORT_SYMBOL vmlinux 0x65b8f340 follow_pfn +EXPORT_SYMBOL vmlinux 0x65d82a47 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65db493a register_framebuffer +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65df7225 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65ee64a7 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f588b5 lock_rename +EXPORT_SYMBOL vmlinux 0x65f9adab pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x65fd0d0d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x66079cd4 scsi_print_command +EXPORT_SYMBOL vmlinux 0x6612bb07 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x662518ae padata_do_serial +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6643c577 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x664bce12 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x665133cf tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x665aac36 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x66741a51 md_done_sync +EXPORT_SYMBOL vmlinux 0x66c99743 skb_clone +EXPORT_SYMBOL vmlinux 0x66cc65c0 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x66d6d3e2 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x66dd69dc __ps2_command +EXPORT_SYMBOL vmlinux 0x66e199ee dm_io +EXPORT_SYMBOL vmlinux 0x66f2863e sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x670a9726 km_query +EXPORT_SYMBOL vmlinux 0x67276286 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x674f9dd9 generic_write_end +EXPORT_SYMBOL vmlinux 0x6765aac9 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x6768ec72 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x676e62c8 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677e52df bmap +EXPORT_SYMBOL vmlinux 0x679fc270 netif_napi_del +EXPORT_SYMBOL vmlinux 0x67a47454 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x67a58730 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b6943a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bceb7b sg_miter_stop +EXPORT_SYMBOL vmlinux 0x67e05ebd seq_dentry +EXPORT_SYMBOL vmlinux 0x6807ff79 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680adbda gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x680ca07a compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x680da6fd inode_needs_sync +EXPORT_SYMBOL vmlinux 0x6826ba58 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x682e4974 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x683fb36d of_find_property +EXPORT_SYMBOL vmlinux 0x686c0090 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x6870f8a4 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687be465 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x688e83d8 generic_getxattr +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a42b09 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c85527 ilookup5 +EXPORT_SYMBOL vmlinux 0x68f7e816 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6918baa7 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x694fc000 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x69530698 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x696239ad pci_fixup_device +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69739dc6 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x6980e233 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x69867882 gen_pool_create +EXPORT_SYMBOL vmlinux 0x698d01b2 serio_open +EXPORT_SYMBOL vmlinux 0x69907b9a make_kuid +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b34a52 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x69ba5f4a proc_mkdir +EXPORT_SYMBOL vmlinux 0x69c1051d set_groups +EXPORT_SYMBOL vmlinux 0x69c4e724 devm_clk_get +EXPORT_SYMBOL vmlinux 0x69e3bbc7 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x69ef88a4 irq_stat +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a14b7a7 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x6a216bb6 freeze_bdev +EXPORT_SYMBOL vmlinux 0x6a26530d bio_copy_kern +EXPORT_SYMBOL vmlinux 0x6a289bc7 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x6a35af2a ip_options_compile +EXPORT_SYMBOL vmlinux 0x6a3a3502 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x6a3b89f3 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a85c2cd pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x6aa23153 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ace02e3 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x6ad65ab4 tty_register_driver +EXPORT_SYMBOL vmlinux 0x6ada5792 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae14495 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x6ae347b8 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x6aedb117 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af952e9 of_get_next_child +EXPORT_SYMBOL vmlinux 0x6b010d1f inet_del_offload +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b21f3a5 tcf_register_action +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b3edc03 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x6b59374e bio_split +EXPORT_SYMBOL vmlinux 0x6b5ab9ab tso_build_hdr +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b825264 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x6b99e088 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x6ba66251 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bec7787 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6c05c4ed input_register_handle +EXPORT_SYMBOL vmlinux 0x6c08b2c1 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1507f1 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x6c1eef72 read_dev_sector +EXPORT_SYMBOL vmlinux 0x6c2a826e vga_put +EXPORT_SYMBOL vmlinux 0x6c2cdc47 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x6c3b2588 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6c46caab neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c9eef82 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6ca93494 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x6cae6bbd irq_set_chip +EXPORT_SYMBOL vmlinux 0x6cd784eb param_set_int +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6da1e6f2 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x6da2ca7d prepare_creds +EXPORT_SYMBOL vmlinux 0x6ddb85ab dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0ef3f0 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x6e1cabd0 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x6e247fea i2c_use_client +EXPORT_SYMBOL vmlinux 0x6e602cd2 audit_log_start +EXPORT_SYMBOL vmlinux 0x6e667c87 pci_get_slot +EXPORT_SYMBOL vmlinux 0x6e66cf01 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e805810 fence_init +EXPORT_SYMBOL vmlinux 0x6e905b91 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x6e945e58 inet_bind +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea76843 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x6ea8d9fb generic_listxattr +EXPORT_SYMBOL vmlinux 0x6eae2e97 blkdev_get +EXPORT_SYMBOL vmlinux 0x6ed0419e kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x6edcc694 empty_zero_page +EXPORT_SYMBOL vmlinux 0x6eec2782 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6eec59ba scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x6efb0e3e dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x6f05afb3 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x6f176ac4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f267c56 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x6f26cb7b idr_get_next +EXPORT_SYMBOL vmlinux 0x6f2a3b4e tty_port_init +EXPORT_SYMBOL vmlinux 0x6f3258d6 seq_release_private +EXPORT_SYMBOL vmlinux 0x6f49d048 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x6f513a8a blk_run_queue +EXPORT_SYMBOL vmlinux 0x6f5ec7ec idr_init +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f94f519 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x6fa3933a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe47aa1 tc_classify +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x7002a05f truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x700944f6 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x700ed9ff xfrm_register_km +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7026efaf inet_add_protocol +EXPORT_SYMBOL vmlinux 0x702f1b47 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x704f3691 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707a5e67 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7087506b tcp_read_sock +EXPORT_SYMBOL vmlinux 0x70a0eeb6 input_grab_device +EXPORT_SYMBOL vmlinux 0x70aeae5a dump_emit +EXPORT_SYMBOL vmlinux 0x70b43306 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x70b68b11 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x70b998dd mount_bdev +EXPORT_SYMBOL vmlinux 0x70c4f482 dquot_transfer +EXPORT_SYMBOL vmlinux 0x70e1b223 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x70e70675 skb_dequeue +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x710cd0c4 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x712310b9 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712a1ee1 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x713c596b pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x716cea90 of_node_put +EXPORT_SYMBOL vmlinux 0x716fe292 inet_frag_find +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71885388 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x71909180 phy_device_create +EXPORT_SYMBOL vmlinux 0x719bdb8c ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bc70a5 mpage_readpages +EXPORT_SYMBOL vmlinux 0x71be146d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x71d23857 vfs_rename +EXPORT_SYMBOL vmlinux 0x71fc399f acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x7218e211 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x7218ec8f dev_open +EXPORT_SYMBOL vmlinux 0x7220207c nobh_write_begin +EXPORT_SYMBOL vmlinux 0x7220ed35 generic_permission +EXPORT_SYMBOL vmlinux 0x722e784f set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x723fb401 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x7240ff3b mark_info_dirty +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x72831d5a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x72894d54 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x729a69ed i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x729e8289 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x72e4fca6 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f50de8 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL vmlinux 0x73268378 get_io_context +EXPORT_SYMBOL vmlinux 0x7327003c scsi_device_get +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735030e1 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x73746748 drop_nlink +EXPORT_SYMBOL vmlinux 0x737d8d83 icmpv6_send +EXPORT_SYMBOL vmlinux 0x737e7a47 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x7391b006 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x739b7ebd pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x73b92ff5 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x73bc7da0 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x73c1e114 pci_bus_put +EXPORT_SYMBOL vmlinux 0x73c2b630 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x73c8b7b6 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x73d93fba dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x73e05fb6 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x7405cb52 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x74083976 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74143006 km_policy_notify +EXPORT_SYMBOL vmlinux 0x741608c3 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x74213157 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x743715b7 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x74667510 cdrom_open +EXPORT_SYMBOL vmlinux 0x746986b5 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x746ed0b3 tso_count_descs +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f6126 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x74978d68 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c983ea nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x74d4478c component_match_add +EXPORT_SYMBOL vmlinux 0x74deb4d8 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7510ddfb release_firmware +EXPORT_SYMBOL vmlinux 0x7515e901 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x7526c21c default_llseek +EXPORT_SYMBOL vmlinux 0x752e0de0 lookup_bdev +EXPORT_SYMBOL vmlinux 0x7531bb09 tcp_poll +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x75413997 cdev_add +EXPORT_SYMBOL vmlinux 0x754f2143 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x75660c2d inode_init_once +EXPORT_SYMBOL vmlinux 0x75696afc mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x756f324b scsi_remove_device +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x758a5396 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75beb5d5 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x75e2fe48 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x75ed666e pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7626fda2 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x763a9403 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x763dc6f6 seq_path +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766df575 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x7684d2fd input_register_device +EXPORT_SYMBOL vmlinux 0x7689ddf3 phy_stop +EXPORT_SYMBOL vmlinux 0x769ded97 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x76a5b343 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x76bd5e4e posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x76bf1559 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76dd0daf proc_create_data +EXPORT_SYMBOL vmlinux 0x76ed7cb4 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x7702a03f generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x771240f9 sock_no_poll +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773a62d3 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x773dc935 tty_port_close +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77414f24 bdget +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7770073f con_copy_unimap +EXPORT_SYMBOL vmlinux 0x7791a497 console_start +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779fc7b4 tty_unlock +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77e74ba2 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x77e754f5 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x77fe02e8 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x781410c8 is_bad_inode +EXPORT_SYMBOL vmlinux 0x783255c3 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78663a03 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x787f6356 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789f919f sk_stream_error +EXPORT_SYMBOL vmlinux 0x78aec50e ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x78b7543b security_mmap_file +EXPORT_SYMBOL vmlinux 0x78c19a6d mempool_resize +EXPORT_SYMBOL vmlinux 0x78d4fedf nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x78d5816e nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79098e7b simple_lookup +EXPORT_SYMBOL vmlinux 0x790b82f1 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x7935c193 tty_set_operations +EXPORT_SYMBOL vmlinux 0x794c8f34 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79a2f57a acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a643bb generic_perform_write +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bef25a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x79cba383 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x79d6170a jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x79dbe371 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x79f9566b netdev_err +EXPORT_SYMBOL vmlinux 0x79fc574c eth_validate_addr +EXPORT_SYMBOL vmlinux 0x7a1ccb4c dqget +EXPORT_SYMBOL vmlinux 0x7a285738 blk_start_queue +EXPORT_SYMBOL vmlinux 0x7a30bb1a netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4d3f1c __lock_buffer +EXPORT_SYMBOL vmlinux 0x7a563632 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aba03c3 bdgrab +EXPORT_SYMBOL vmlinux 0x7ac1241e skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x7acb743b generic_delete_inode +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad8034b skb_copy_expand +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae6a508 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b168d34 led_update_brightness +EXPORT_SYMBOL vmlinux 0x7b2ae3c2 user_path_create +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b363411 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x7b367643 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x7b6646bb _raw_read_lock +EXPORT_SYMBOL vmlinux 0x7b809578 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x7b817687 set_page_dirty +EXPORT_SYMBOL vmlinux 0x7b851b2c put_cmsg +EXPORT_SYMBOL vmlinux 0x7b9965b2 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x7ba5b4bb mntget +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bbf4ca6 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7bf62bf2 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x7c02bece md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1e1d52 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c3b0a3f unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7c450a4f xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c78f77e gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x7c81d733 inet_offloads +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc09d03 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x7cd725d4 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d03ecfa crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x7d09032a setattr_copy +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d165d70 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x7d29ae90 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x7d4cced4 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x7d4f4510 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x7d58486e kill_bdev +EXPORT_SYMBOL vmlinux 0x7d5ab05a udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x7d6e6b9f genphy_config_init +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7512f7 md_write_end +EXPORT_SYMBOL vmlinux 0x7d7aebc8 elevator_init +EXPORT_SYMBOL vmlinux 0x7d7d63df cpumask_next_and +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7da0fbe2 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x7da9be35 skb_pad +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e21fc56 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7e268430 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x7e2fcb5f start_tty +EXPORT_SYMBOL vmlinux 0x7e4b61e8 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x7e515f30 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x7e708411 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x7e94fcba blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x7e9da777 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x7eaec089 end_page_writeback +EXPORT_SYMBOL vmlinux 0x7ebb21ad generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x7ebba46a register_console +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ec1b684 iommu_put_dma_cookie +EXPORT_SYMBOL vmlinux 0x7ed68e24 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x7edcab13 copy_to_iter +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef66943 netif_napi_add +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f09c55e uart_register_driver +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f462faa iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x7f5dabd4 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f67a5b3 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7f67aa35 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7f710525 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x7f849d1c compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x7f9993ee __mdiobus_register +EXPORT_SYMBOL vmlinux 0x7f99a00c free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x7fa59a11 thaw_super +EXPORT_SYMBOL vmlinux 0x7fb81b07 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc596de __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ffdf0e7 key_task_permission +EXPORT_SYMBOL vmlinux 0x800b7977 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x80133237 of_phy_connect +EXPORT_SYMBOL vmlinux 0x802ba552 should_remove_suid +EXPORT_SYMBOL vmlinux 0x80376308 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x803aff1a of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x804b1892 udp_set_csum +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x806f7200 kobject_del +EXPORT_SYMBOL vmlinux 0x8074e2a2 dev_change_flags +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x808386e2 file_open_root +EXPORT_SYMBOL vmlinux 0x809070dd locks_free_lock +EXPORT_SYMBOL vmlinux 0x80be3e50 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x80c70dd2 give_up_console +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x8102e9d4 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x811ca22b module_layout +EXPORT_SYMBOL vmlinux 0x81256613 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x81299369 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x81476c0c security_path_symlink +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8166f8f9 input_get_keycode +EXPORT_SYMBOL vmlinux 0x81ad1e7c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x81ae3594 sk_capable +EXPORT_SYMBOL vmlinux 0x81cad6ce unlock_page +EXPORT_SYMBOL vmlinux 0x81d8eab9 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f2be35 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x81f6832d udp_disconnect +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821804b0 register_netdevice +EXPORT_SYMBOL vmlinux 0x821b6ac9 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x8225ce62 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x8234d00e lwtunnel_output +EXPORT_SYMBOL vmlinux 0x823e9360 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x826307d5 read_cache_page +EXPORT_SYMBOL vmlinux 0x8269283f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82754065 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8287091b param_set_invbool +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82a29169 read_code +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b73878 blkdev_put +EXPORT_SYMBOL vmlinux 0x82b7c325 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x82c8a370 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x82d6948d dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x82edddcb __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x83167e70 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x832a0116 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x833ddb37 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x83438e59 simple_follow_link +EXPORT_SYMBOL vmlinux 0x8343e438 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x8355373e netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x8362bcda mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x8363df7b try_module_get +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a554c4 scsi_print_result +EXPORT_SYMBOL vmlinux 0x83a6237d blk_complete_request +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b29c3f input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x83b7b26a dev_addr_add +EXPORT_SYMBOL vmlinux 0x83b861b9 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x83bf91e3 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83e381d3 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x83e4524f __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x83f10895 dquot_alloc +EXPORT_SYMBOL vmlinux 0x84039df7 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84317d55 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x844dea81 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x848071e5 wireless_send_event +EXPORT_SYMBOL vmlinux 0x848c6c47 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x8498e371 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x849af742 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x84beb337 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x84cd676b blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x84cfdf08 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x84d8a057 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x84f75762 vm_map_ram +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85061b76 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x8507e3df mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x8510ee64 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x852e9038 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x853db544 dquot_disable +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x85922a54 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x85a7496d amba_request_regions +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b971b7 of_phy_attach +EXPORT_SYMBOL vmlinux 0x85d306ae of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fc513d inet_ioctl +EXPORT_SYMBOL vmlinux 0x861190d4 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x8638505c blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x8641cfee alloc_fddidev +EXPORT_SYMBOL vmlinux 0x864b9e80 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86521d6e scsi_print_sense +EXPORT_SYMBOL vmlinux 0x8656df88 scsi_unregister +EXPORT_SYMBOL vmlinux 0x86649332 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8699680b __dax_fault +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86b134a2 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x86d3497c generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x86ea4d38 complete_all +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87069be7 sock_rfree +EXPORT_SYMBOL vmlinux 0x8716abd9 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8723ded6 efi +EXPORT_SYMBOL vmlinux 0x874ee756 km_is_alive +EXPORT_SYMBOL vmlinux 0x87569c05 __destroy_inode +EXPORT_SYMBOL vmlinux 0x876306f3 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x8763ef50 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8771c12d __lock_page +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878e534c flush_signals +EXPORT_SYMBOL vmlinux 0x87b566c9 f_setown +EXPORT_SYMBOL vmlinux 0x87b70410 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x87bf04e1 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x87d7f691 iommu_get_dma_cookie +EXPORT_SYMBOL vmlinux 0x87e4ed8d tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x87e6f91d of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x87ea2fb4 serio_bus +EXPORT_SYMBOL vmlinux 0x87f36779 prepare_binprm +EXPORT_SYMBOL vmlinux 0x87f5beb3 vme_bus_type +EXPORT_SYMBOL vmlinux 0x880cdc8f xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x883721ab dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x883e4496 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x88528b46 __bforget +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888bd744 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x88944274 sync_blockdev +EXPORT_SYMBOL vmlinux 0x88956ffa __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x88b4e83b down_trylock +EXPORT_SYMBOL vmlinux 0x88c4ecdf vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x88c9fd3a sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x890a80aa locks_copy_lock +EXPORT_SYMBOL vmlinux 0x892ae3aa vc_resize +EXPORT_SYMBOL vmlinux 0x892d87da vfs_mkdir +EXPORT_SYMBOL vmlinux 0x8930c9dd jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x8943ddf7 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x89571c4e mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x8982f29c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x8984ee99 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x898cb360 param_get_string +EXPORT_SYMBOL vmlinux 0x899d70fd dst_release +EXPORT_SYMBOL vmlinux 0x89af13a9 datagram_poll +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89bb08bd pcim_iomap +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d6b319 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x89f5d9fc __devm_release_region +EXPORT_SYMBOL vmlinux 0x89fac234 sock_no_connect +EXPORT_SYMBOL vmlinux 0x89ff346f get_disk +EXPORT_SYMBOL vmlinux 0x8a08c86f get_acl +EXPORT_SYMBOL vmlinux 0x8a1536ba netdev_features_change +EXPORT_SYMBOL vmlinux 0x8a16427b __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a3b4bd7 pci_pme_active +EXPORT_SYMBOL vmlinux 0x8a3e420e neigh_app_ns +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4b64b8 inc_nlink +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5f1cd0 netpoll_setup +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a74e108 register_qdisc +EXPORT_SYMBOL vmlinux 0x8a79604b pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a87e10e xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa57c4f udp_table +EXPORT_SYMBOL vmlinux 0x8ac50285 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x8ad07f9b pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x8ad5e70d compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b1b00ce uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x8b1cb128 proc_set_user +EXPORT_SYMBOL vmlinux 0x8b252129 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b484538 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x8b4cd055 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b983c11 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba58423 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x8bd0a3fd _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8bd4aa32 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x8be21415 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x8bfae59a vlan_vid_del +EXPORT_SYMBOL vmlinux 0x8bfde85d dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x8c1ba98d neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x8c535dea skb_checksum +EXPORT_SYMBOL vmlinux 0x8c5939bf of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8c5987f1 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c710691 udp_del_offload +EXPORT_SYMBOL vmlinux 0x8c7c4ec4 netif_skb_features +EXPORT_SYMBOL vmlinux 0x8c87aaed pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x8ca67650 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x8cbf1d25 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x8cc83c30 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdc004f scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x8d085fb6 consume_skb +EXPORT_SYMBOL vmlinux 0x8d198c70 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x8d1c1de7 simple_setattr +EXPORT_SYMBOL vmlinux 0x8d27ae36 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x8d2dbc50 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8d49f53e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x8d5275ee scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d59d537 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x8d6e78ce wake_up_process +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7a3941 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x8d852197 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x8d8895d7 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8dddb832 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8de9f448 poll_initwait +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e1aba40 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x8e24d70e scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x8e3f7517 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e843ff3 ping_prot +EXPORT_SYMBOL vmlinux 0x8e940d85 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8e950478 km_policy_expired +EXPORT_SYMBOL vmlinux 0x8eaeb476 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x8ebaa876 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x8ec711dc nf_register_hooks +EXPORT_SYMBOL vmlinux 0x8ee55e75 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x8eef2e53 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x8f1b9e54 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x8f30fa7b is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x8f3787be panic_notifier_list +EXPORT_SYMBOL vmlinux 0x8f3cbdf9 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8fd7773e sock_efree +EXPORT_SYMBOL vmlinux 0x8feec310 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x902a9f03 send_sig_info +EXPORT_SYMBOL vmlinux 0x9047adee phy_connect_direct +EXPORT_SYMBOL vmlinux 0x90488cab tcp_make_synack +EXPORT_SYMBOL vmlinux 0x905fdadb kmem_cache_size +EXPORT_SYMBOL vmlinux 0x90844ad3 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x90928426 pci_set_master +EXPORT_SYMBOL vmlinux 0x90928e6c dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x9098c5bb pci_find_capability +EXPORT_SYMBOL vmlinux 0x90ac3102 dev_base_lock +EXPORT_SYMBOL vmlinux 0x90ae9bbf ata_print_version +EXPORT_SYMBOL vmlinux 0x90d4f853 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x90d96d6c unregister_filesystem +EXPORT_SYMBOL vmlinux 0x90ee4c4e kobject_set_name +EXPORT_SYMBOL vmlinux 0x91260d57 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x913bf56c ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x9141b21f sk_dst_check +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914e3a97 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x9150f6a8 bio_endio +EXPORT_SYMBOL vmlinux 0x9164657e nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x9165067c kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91762abb __block_write_begin +EXPORT_SYMBOL vmlinux 0x9179d97c skb_seq_read +EXPORT_SYMBOL vmlinux 0x918c6374 mempool_alloc +EXPORT_SYMBOL vmlinux 0x91990a0f get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b29134 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x91b51c4a gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x91ca3d9d of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x91d77c5f sk_common_release +EXPORT_SYMBOL vmlinux 0x91df53c0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x91f0e261 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x91f91126 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x9205c1ec __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x92075177 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x9220ea08 simple_write_end +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9258d59b mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x926a50f6 bio_advance +EXPORT_SYMBOL vmlinux 0x927e616f __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x9288a69a pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92967848 param_get_uint +EXPORT_SYMBOL vmlinux 0x929f7e3b dev_driver_string +EXPORT_SYMBOL vmlinux 0x92a44a80 fence_add_callback +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92dc4f8f seq_hex_dump +EXPORT_SYMBOL vmlinux 0x92edf184 genlmsg_put +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fc77e9 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x93031e65 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x934bdeb9 md_check_recovery +EXPORT_SYMBOL vmlinux 0x935c73cf xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937dc768 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x93804eb9 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x9390f226 ida_destroy +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b60c91 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x93b713fe mapping_tagged +EXPORT_SYMBOL vmlinux 0x93cac9a4 netdev_info +EXPORT_SYMBOL vmlinux 0x93d51573 lock_fb_info +EXPORT_SYMBOL vmlinux 0x93df83a3 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x93e25ce9 input_reset_device +EXPORT_SYMBOL vmlinux 0x93e5d1a0 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x93ee08aa d_add_ci +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x941e50f8 blk_peek_request +EXPORT_SYMBOL vmlinux 0x942b31af xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x942f897a pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x9431d589 nvm_register_target +EXPORT_SYMBOL vmlinux 0x94554220 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x9456682f elevator_change +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949b754f mempool_destroy +EXPORT_SYMBOL vmlinux 0x949dbc18 dev_notice +EXPORT_SYMBOL vmlinux 0x94a5c82c jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x94b17252 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x94ce1e1f serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x94d42fa6 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x94dcf50d __skb_get_hash +EXPORT_SYMBOL vmlinux 0x94f34842 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x94fc00e5 dq_data_lock +EXPORT_SYMBOL vmlinux 0x95074533 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x951bc87e i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x953268b0 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954936bc tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x955a80e5 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x95a7280b mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x95b4bf9b blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x95fdf271 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x960eb7b4 blk_put_request +EXPORT_SYMBOL vmlinux 0x96123201 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x96220280 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x9622824f wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x962b2360 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x9632199d fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x963337b2 __find_get_block +EXPORT_SYMBOL vmlinux 0x9634039e blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x964d8bd0 seq_pad +EXPORT_SYMBOL vmlinux 0x96632c1d tty_vhangup +EXPORT_SYMBOL vmlinux 0x96687066 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x966bccdf smp_call_function_many +EXPORT_SYMBOL vmlinux 0x966d987d pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9676109d __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x9677f76a __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x967c081c lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x9684b4e8 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x96a52a02 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96f604a9 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x970cb831 arp_tbl +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97667710 iget_failed +EXPORT_SYMBOL vmlinux 0x97759aba dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x97770d4b blk_make_request +EXPORT_SYMBOL vmlinux 0x977cffbe __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x977fecc2 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9792ef3d vfs_readv +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97dca655 tcp_close +EXPORT_SYMBOL vmlinux 0x97f43f70 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x97fca434 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x97fdb037 dcache_readdir +EXPORT_SYMBOL vmlinux 0x97fdbab9 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x97feae19 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980ea988 tty_hangup +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982bcd2a mii_link_ok +EXPORT_SYMBOL vmlinux 0x982cfc34 seq_lseek +EXPORT_SYMBOL vmlinux 0x983f3760 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x9842a32d vfs_iter_write +EXPORT_SYMBOL vmlinux 0x98531633 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x986a16ec vlan_vid_add +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987d9f82 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x98b62324 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x98b752f0 console_stop +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98ef239f free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992ca651 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x9934cc07 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x9940fc44 con_is_bound +EXPORT_SYMBOL vmlinux 0x994eb0bd simple_dir_operations +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9951c180 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995cd3b4 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x99610473 seq_write +EXPORT_SYMBOL vmlinux 0x9962cac9 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x997c63cc skb_tx_error +EXPORT_SYMBOL vmlinux 0x99841cfb pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ab6471 seq_open +EXPORT_SYMBOL vmlinux 0x99b88e8c lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x99bc2743 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99db4541 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x99fd4bb9 param_array_ops +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a56db2f md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x9a5ad2e8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x9a62e8c3 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x9a6fbe1d elv_rb_find +EXPORT_SYMBOL vmlinux 0x9a8d65cc pcie_set_mps +EXPORT_SYMBOL vmlinux 0x9a908b80 test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x9aa9dc30 unregister_netdev +EXPORT_SYMBOL vmlinux 0x9ab2ad62 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9ab2d080 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x9ab8a120 dev_add_pack +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afb87eb pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x9b1469c1 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b44bd39 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x9b65ffbf neigh_xmit +EXPORT_SYMBOL vmlinux 0x9b94fc4c mmc_can_trim +EXPORT_SYMBOL vmlinux 0x9b9d6094 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba416c2 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x9ba4a2ac input_register_handler +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6ef31 add_wait_queue +EXPORT_SYMBOL vmlinux 0x9bc97860 clk_add_alias +EXPORT_SYMBOL vmlinux 0x9bdd1e20 nf_afinfo +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be802d4 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x9be8b5e5 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5bc552 finish_wait +EXPORT_SYMBOL vmlinux 0x9c654510 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9c662253 padata_stop +EXPORT_SYMBOL vmlinux 0x9c7dd473 invalidate_partition +EXPORT_SYMBOL vmlinux 0x9c7f92aa ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x9c996246 vfs_link +EXPORT_SYMBOL vmlinux 0x9ca23a88 put_io_context +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb483ba __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x9cd8ff85 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x9cfff2ed of_parse_phandle +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1777fa elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d1fbc7b mii_nway_restart +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d5183ef pnp_register_driver +EXPORT_SYMBOL vmlinux 0x9d59e62c mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x9d83509c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x9d9051fe vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x9d9c5380 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e18a748 up_write +EXPORT_SYMBOL vmlinux 0x9e2b0111 md_update_sb +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e476a92 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5b0fde __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9e605beb __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e68bc17 acl_by_type +EXPORT_SYMBOL vmlinux 0x9e742fce vfs_setpos +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e83b8cf eth_type_trans +EXPORT_SYMBOL vmlinux 0x9e893f35 netif_device_detach +EXPORT_SYMBOL vmlinux 0x9e89cc8d xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x9e8a73b3 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9e9ced05 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x9e9e95eb get_super +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9e9fe587 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec55d85 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x9ee5216d dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x9ef20bf4 mutex_trylock +EXPORT_SYMBOL vmlinux 0x9ef88857 tty_check_change +EXPORT_SYMBOL vmlinux 0x9eff9655 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x9f11be7e down_killable +EXPORT_SYMBOL vmlinux 0x9f1747cc inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x9f19c32c km_new_mapping +EXPORT_SYMBOL vmlinux 0x9f2eed90 dev_activate +EXPORT_SYMBOL vmlinux 0x9f429b8f param_get_byte +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4abaf4 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x9f6a8f55 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fc1c0eb __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe885f4 netdev_update_features +EXPORT_SYMBOL vmlinux 0x9ff49e7b generic_writepages +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa01557bf nobh_writepage +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa07ffdf4 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa085ae78 blk_get_request +EXPORT_SYMBOL vmlinux 0xa08c8872 km_state_expired +EXPORT_SYMBOL vmlinux 0xa08e54f8 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bfc053 __skb_checksum +EXPORT_SYMBOL vmlinux 0xa0c3b269 serio_reconnect +EXPORT_SYMBOL vmlinux 0xa0c3de07 bdi_register +EXPORT_SYMBOL vmlinux 0xa0c3f404 dm_put_device +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e4a30e module_refcount +EXPORT_SYMBOL vmlinux 0xa0eaa2ed __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa145648a nf_setsockopt +EXPORT_SYMBOL vmlinux 0xa147d96e dm_unregister_target +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14c36a1 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xa1551382 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xa1b01d0f compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c5baea downgrade_write +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d1288b blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa204476e register_gifconf +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa21963b2 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa2392d1c jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xa248da1e first_ec +EXPORT_SYMBOL vmlinux 0xa2557b13 __register_nls +EXPORT_SYMBOL vmlinux 0xa2564100 dev_err +EXPORT_SYMBOL vmlinux 0xa25e8bf9 blk_end_request +EXPORT_SYMBOL vmlinux 0xa25f119f sock_init_data +EXPORT_SYMBOL vmlinux 0xa275d266 bio_reset +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28517c1 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xa2a281a3 elv_register_queue +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2ac04e6 kfree_put_link +EXPORT_SYMBOL vmlinux 0xa2b4e4da inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xa2b87ec3 arp_send +EXPORT_SYMBOL vmlinux 0xa2d6c9a3 d_genocide +EXPORT_SYMBOL vmlinux 0xa2d73136 security_path_unlink +EXPORT_SYMBOL vmlinux 0xa2db6f8b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xa2e33d8a md_cluster_ops +EXPORT_SYMBOL vmlinux 0xa2f543fc blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xa2f7ac0b nvm_get_blk +EXPORT_SYMBOL vmlinux 0xa2f98e7c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa3034015 pci_release_region +EXPORT_SYMBOL vmlinux 0xa309e1c9 request_firmware +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa331aabe inet_put_port +EXPORT_SYMBOL vmlinux 0xa33befda mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xa363fab8 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xa3764f78 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3a3a37a phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xa3afb73c netlink_unicast +EXPORT_SYMBOL vmlinux 0xa3c27295 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xa3d51413 neigh_update +EXPORT_SYMBOL vmlinux 0xa41a5661 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xa42aeaf1 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xa4397f01 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa45894df ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xa46c1d62 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa472c512 lease_modify +EXPORT_SYMBOL vmlinux 0xa477c172 napi_get_frags +EXPORT_SYMBOL vmlinux 0xa4a8df9d tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xa4d1009c iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xa4da8ecf genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xa4de56a1 __register_chrdev +EXPORT_SYMBOL vmlinux 0xa4e1695a input_allocate_device +EXPORT_SYMBOL vmlinux 0xa4f86581 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xa50cb1e3 key_validate +EXPORT_SYMBOL vmlinux 0xa51c81ba __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xa5408681 dev_alert +EXPORT_SYMBOL vmlinux 0xa550ea12 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55411a5 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xa578bc56 udplite_prot +EXPORT_SYMBOL vmlinux 0xa58bae66 generic_read_dir +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5993de8 free_netdev +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5bb18ee jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa5c204df xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xa5c7fb34 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xa5d14174 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xa5efbd59 param_get_ushort +EXPORT_SYMBOL vmlinux 0xa5f0993f _dev_info +EXPORT_SYMBOL vmlinux 0xa5f0d19a reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xa60c9909 security_file_permission +EXPORT_SYMBOL vmlinux 0xa60dffd2 scsi_host_get +EXPORT_SYMBOL vmlinux 0xa61480af delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xa62e1f33 input_free_device +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6490582 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xa64dd454 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67ab8a4 bdi_destroy +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6b17ad5 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa6b355c3 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa6bb1111 alloc_file +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6c1fc1a __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xa6c80743 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xa6cbfd95 d_set_d_op +EXPORT_SYMBOL vmlinux 0xa6d0ca44 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0xa6d512e2 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7533d67 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa75b2bde vfs_writef +EXPORT_SYMBOL vmlinux 0xa784f161 padata_start +EXPORT_SYMBOL vmlinux 0xa7b5413b elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xa7b8ff15 unregister_nls +EXPORT_SYMBOL vmlinux 0xa7be526f _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa7c9b139 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xa7e7b3a5 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8267354 stop_tty +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa862f20b kobject_put +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87cf413 clear_bit +EXPORT_SYMBOL vmlinux 0xa88da1a1 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xa8a0e105 ps2_command +EXPORT_SYMBOL vmlinux 0xa8a2846a init_special_inode +EXPORT_SYMBOL vmlinux 0xa8a59a08 clear_nlink +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8b067e4 open_exec +EXPORT_SYMBOL vmlinux 0xa8e980f4 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa907de28 get_gendisk +EXPORT_SYMBOL vmlinux 0xa90c5304 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa913ce58 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xa9146132 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9205611 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa92db4ff bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa9362b09 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa994c670 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a8189c iterate_dir +EXPORT_SYMBOL vmlinux 0xa9ae1950 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xa9b248b6 idr_for_each +EXPORT_SYMBOL vmlinux 0xa9b452b3 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xa9bb4e5b pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c75c87 d_make_root +EXPORT_SYMBOL vmlinux 0xa9e2fa92 of_dev_put +EXPORT_SYMBOL vmlinux 0xa9e34e8d padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xa9e7b9b5 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xaa14eddb tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xaa468261 path_noexec +EXPORT_SYMBOL vmlinux 0xaa4d07e0 sock_no_getname +EXPORT_SYMBOL vmlinux 0xaa566a0f nf_getsockopt +EXPORT_SYMBOL vmlinux 0xaa61ee21 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xaa6e45ed iunique +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8b4d45 mpage_readpage +EXPORT_SYMBOL vmlinux 0xaab6f312 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xaabfbdff generic_show_options +EXPORT_SYMBOL vmlinux 0xaac1f3f6 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xaacaf982 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xaacc3134 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae2cb06 __module_get +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab08c6d6 write_cache_pages +EXPORT_SYMBOL vmlinux 0xab0e9d14 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xab3c561b blk_integrity_register +EXPORT_SYMBOL vmlinux 0xab40cca9 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab6947d6 __bread_gfp +EXPORT_SYMBOL vmlinux 0xab6b4d86 skb_pull +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab84223a simple_statfs +EXPORT_SYMBOL vmlinux 0xab8759e8 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xab8d493e of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xabb6901e pci_find_bus +EXPORT_SYMBOL vmlinux 0xabbbd444 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe4256d simple_write_begin +EXPORT_SYMBOL vmlinux 0xabe623f7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac27d962 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xac2ad0df ata_link_printk +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac580f87 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xac5eb5d5 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xac70b0fa vm_stat +EXPORT_SYMBOL vmlinux 0xac87d46a __d_drop +EXPORT_SYMBOL vmlinux 0xac8ab972 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xac9d2d83 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacade9df d_find_any_alias +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace49051 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xace76c93 i2c_master_send +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfdd56d mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad07944a notify_change +EXPORT_SYMBOL vmlinux 0xad14a51d blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1dd88a nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xad399cb0 dev_mc_init +EXPORT_SYMBOL vmlinux 0xad3c2af0 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xad6080d2 inode_init_always +EXPORT_SYMBOL vmlinux 0xad72ce66 amba_device_register +EXPORT_SYMBOL vmlinux 0xad78b156 twl6040_power +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8da6f3 ata_port_printk +EXPORT_SYMBOL vmlinux 0xad94416b phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xad98b85a dev_emerg +EXPORT_SYMBOL vmlinux 0xadbc340a tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xadbc4835 kernel_bind +EXPORT_SYMBOL vmlinux 0xadc9d3e9 do_splice_from +EXPORT_SYMBOL vmlinux 0xadf7dcef path_is_under +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0a3a62 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae5d3e39 param_ops_byte +EXPORT_SYMBOL vmlinux 0xae648fe4 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xae6698e5 mii_check_link +EXPORT_SYMBOL vmlinux 0xae8c4d0c set_bit +EXPORT_SYMBOL vmlinux 0xae8d915e simple_rename +EXPORT_SYMBOL vmlinux 0xaea76857 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeae7a84 fasync_helper +EXPORT_SYMBOL vmlinux 0xaeb1163d netif_device_attach +EXPORT_SYMBOL vmlinux 0xaf018dab d_path +EXPORT_SYMBOL vmlinux 0xaf0aae21 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xaf2d4b72 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf44c3bf blk_finish_request +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6d77ce dquot_initialize +EXPORT_SYMBOL vmlinux 0xaf8f2659 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xafa05589 security_path_chown +EXPORT_SYMBOL vmlinux 0xafa53b26 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xafbae622 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xafca4515 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xafcc1a76 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xafddfb49 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xafe52682 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xaff2a91c tty_devnum +EXPORT_SYMBOL vmlinux 0xaffe827e pci_release_regions +EXPORT_SYMBOL vmlinux 0xb019bcdf dev_get_iflink +EXPORT_SYMBOL vmlinux 0xb049e699 abort_creds +EXPORT_SYMBOL vmlinux 0xb04b8504 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07bab82 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb091002a netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xb094619f pci_scan_slot +EXPORT_SYMBOL vmlinux 0xb09dd097 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xb09edc46 find_vma +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a2a3fa mntput +EXPORT_SYMBOL vmlinux 0xb0ac8dbb phy_init_eee +EXPORT_SYMBOL vmlinux 0xb0b4599c __sock_create +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb1006462 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14d026c md_error +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15f8034 mdiobus_free +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1698974 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xb169d6cb dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xb16d6f95 pipe_unlock +EXPORT_SYMBOL vmlinux 0xb1900cd7 devm_iounmap +EXPORT_SYMBOL vmlinux 0xb199576d tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xb1a1c260 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xb1a50467 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xb1ad7269 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xb1afd39c gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0xb1b14261 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xb1b5e2a5 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb200e19b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xb208db16 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb22a92c4 d_find_alias +EXPORT_SYMBOL vmlinux 0xb266f37a blk_get_queue +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb271546d swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xb271f2a8 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb2761b30 ipv4_specific +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c1b556 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xb2c9541d max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xb2ca6120 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xb2ccf109 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xb2cd671d sk_free +EXPORT_SYMBOL vmlinux 0xb2d9cf7b dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb30318b8 is_nd_btt +EXPORT_SYMBOL vmlinux 0xb3098130 pci_request_region +EXPORT_SYMBOL vmlinux 0xb3147a0f nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3309dcc import_iovec +EXPORT_SYMBOL vmlinux 0xb33c982b mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xb33f3817 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xb3441b6d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xb356ada1 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xb361f156 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xb3796d9c clocksource_unregister +EXPORT_SYMBOL vmlinux 0xb37bee52 rename_lock +EXPORT_SYMBOL vmlinux 0xb3ac1d5a lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0xb3bfa075 dquot_operations +EXPORT_SYMBOL vmlinux 0xb3cdab96 rwsem_wake +EXPORT_SYMBOL vmlinux 0xb3ce45e1 pipe_lock +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d34473 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xb3e33097 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb410ee57 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xb4141137 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xb414150a pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb435f466 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb44095f7 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xb44476a2 __breadahead +EXPORT_SYMBOL vmlinux 0xb4512b2f kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb455bb63 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb4727deb phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xb498da43 generic_fillattr +EXPORT_SYMBOL vmlinux 0xb4a1976d gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb4abd195 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xb4b7a179 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xb4dce868 neigh_destroy +EXPORT_SYMBOL vmlinux 0xb4e9bc1e migrate_page +EXPORT_SYMBOL vmlinux 0xb4fc735b idr_remove +EXPORT_SYMBOL vmlinux 0xb5031e88 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xb50cc3d0 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb52573b1 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xb534d64f phy_driver_register +EXPORT_SYMBOL vmlinux 0xb54c3ee4 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb574bf40 led_set_brightness +EXPORT_SYMBOL vmlinux 0xb58092a5 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xb58200cb nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xb58ff6ed register_netdev +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d3b4ae arp_xmit +EXPORT_SYMBOL vmlinux 0xb5f90fba sock_no_accept +EXPORT_SYMBOL vmlinux 0xb5f9d327 input_inject_event +EXPORT_SYMBOL vmlinux 0xb5fe5671 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb618ef30 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xb61afd3f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xb61c0fba param_get_ulong +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb63305fb lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb64396cc md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xb646bbd6 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xb64c7c3e may_umount_tree +EXPORT_SYMBOL vmlinux 0xb656bf11 skb_put +EXPORT_SYMBOL vmlinux 0xb66f2319 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6783720 udp_seq_open +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69f9b00 mempool_free +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6beb386 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xb6c6a51a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xb6c9063f netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb6ef62e2 fb_get_mode +EXPORT_SYMBOL vmlinux 0xb6fd0c4a splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xb710851a d_prune_aliases +EXPORT_SYMBOL vmlinux 0xb711b551 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xb71d25d7 user_revoke +EXPORT_SYMBOL vmlinux 0xb71f188a dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xb71fb74f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xb72f57c9 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xb732409f tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xb73e06e4 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xb73faf5d udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb747a794 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74caff7 gen_pool_free +EXPORT_SYMBOL vmlinux 0xb7535e8f netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xb76db98d __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb788ea4f nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0xb79151ac unregister_qdisc +EXPORT_SYMBOL vmlinux 0xb7d59948 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb7e1a5f1 kern_path_create +EXPORT_SYMBOL vmlinux 0xb7eb3aa3 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xb7ee0f5f mutex_lock +EXPORT_SYMBOL vmlinux 0xb7f26b1b simple_getattr +EXPORT_SYMBOL vmlinux 0xb7f511da lockref_get +EXPORT_SYMBOL vmlinux 0xb805de90 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xb819db32 proc_symlink +EXPORT_SYMBOL vmlinux 0xb843d5eb netlink_capable +EXPORT_SYMBOL vmlinux 0xb8590b03 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb889b1ad compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb8ab9075 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xb8ac9f82 unregister_console +EXPORT_SYMBOL vmlinux 0xb8b453c3 of_device_unregister +EXPORT_SYMBOL vmlinux 0xb8bfbb3f do_SAK +EXPORT_SYMBOL vmlinux 0xb8da7ec2 pci_enable_device +EXPORT_SYMBOL vmlinux 0xb8fd210e input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xb9164112 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xb92b61a0 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xb92fba7e fb_show_logo +EXPORT_SYMBOL vmlinux 0xb93125cc devm_memremap +EXPORT_SYMBOL vmlinux 0xb9356f75 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb936ecee nonseekable_open +EXPORT_SYMBOL vmlinux 0xb93c4e20 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xb93fb966 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xb9406c58 d_invalidate +EXPORT_SYMBOL vmlinux 0xb94cb58f vme_bus_num +EXPORT_SYMBOL vmlinux 0xb9657614 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xb966ac5f ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xb9a65517 pci_map_rom +EXPORT_SYMBOL vmlinux 0xb9b038b2 vfs_statfs +EXPORT_SYMBOL vmlinux 0xb9d2b05c pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xb9e82a7b genphy_read_status +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ec092e to_nd_btt +EXPORT_SYMBOL vmlinux 0xb9ef72e8 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xb9f4ab4a fb_set_suspend +EXPORT_SYMBOL vmlinux 0xb9fb8f66 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xba28d335 proto_register +EXPORT_SYMBOL vmlinux 0xba29f15a disk_stack_limits +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba34d72d sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6773a9 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xbaa8b2ad __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xbab303cb genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xbab6234a dquot_enable +EXPORT_SYMBOL vmlinux 0xbacaa95a tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xbae1d5be bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xbb02f613 cdev_init +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb539f33 release_sock +EXPORT_SYMBOL vmlinux 0xbb5694dd vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xbb5c1b20 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5e3ef0 __mutex_init +EXPORT_SYMBOL vmlinux 0xbb64cc14 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xbb6dac6a kobject_add +EXPORT_SYMBOL vmlinux 0xbb6e517e page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xbb7c5680 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xbb7c7b5c add_disk +EXPORT_SYMBOL vmlinux 0xbb80872e __serio_register_driver +EXPORT_SYMBOL vmlinux 0xbb87df84 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbac20cd devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbcffebc param_get_long +EXPORT_SYMBOL vmlinux 0xbbdafc94 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbc055bdb jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2c6c10 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbc2ed3e2 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xbc5ac742 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xbc6eda08 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xbc86762c rtnl_unicast +EXPORT_SYMBOL vmlinux 0xbc8885c4 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xbc905321 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xbca78f68 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xbca80b7e __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc390a6 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xbcf2a7a4 complete_request_key +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd1b6aa9 fs_bio_set +EXPORT_SYMBOL vmlinux 0xbd406c02 page_symlink +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4f7703 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xbd5e15c8 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xbd6350c1 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd89192a inet_recvmsg +EXPORT_SYMBOL vmlinux 0xbd8fdcf1 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd96bbbe ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xbd9a4662 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xbdae0c9a __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdbc13a1 complete +EXPORT_SYMBOL vmlinux 0xbdbe8593 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xbdeb6726 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xbe1add73 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe21886c sk_ns_capable +EXPORT_SYMBOL vmlinux 0xbe30d223 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xbe31bf9a __nlmsg_put +EXPORT_SYMBOL vmlinux 0xbe6c1cd4 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xbe7a7a08 iget5_locked +EXPORT_SYMBOL vmlinux 0xbea0d926 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xbec2b56e sock_create_kern +EXPORT_SYMBOL vmlinux 0xbecf5821 tty_mutex +EXPORT_SYMBOL vmlinux 0xbee547c8 tcp_check_req +EXPORT_SYMBOL vmlinux 0xbef148b4 soft_cursor +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1069e7 dummy_dma_ops +EXPORT_SYMBOL vmlinux 0xbf230c51 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xbf5bfaa6 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xbf7977cd forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf835f8a skb_trim +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfafc3bf remove_proc_entry +EXPORT_SYMBOL vmlinux 0xbfd964f0 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffc08c5 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xbffc825b pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xc00c3ae4 bd_set_size +EXPORT_SYMBOL vmlinux 0xc012d515 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xc014e7ec of_translate_address +EXPORT_SYMBOL vmlinux 0xc0285728 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc02ec7f2 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xc06a6470 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0829155 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xc085f00c inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xc092a0ae da903x_query_status +EXPORT_SYMBOL vmlinux 0xc095b2b5 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xc09f0282 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0af6525 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xc0cb90f1 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc1108572 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xc112f4dd rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xc13331bf dump_skip +EXPORT_SYMBOL vmlinux 0xc138c1f3 kset_unregister +EXPORT_SYMBOL vmlinux 0xc13befd4 phy_find_first +EXPORT_SYMBOL vmlinux 0xc148609b jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1634496 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xc1937d8f neigh_for_each +EXPORT_SYMBOL vmlinux 0xc193bed2 bh_submit_read +EXPORT_SYMBOL vmlinux 0xc1affcef ps2_drain +EXPORT_SYMBOL vmlinux 0xc1b7315e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xc1d3b8f4 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc22e43c4 eth_header_parse +EXPORT_SYMBOL vmlinux 0xc24a7e28 inet_sendpage +EXPORT_SYMBOL vmlinux 0xc266474a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc27c08f0 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xc28017d9 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a1dd80 dst_alloc +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2b2ffb7 find_get_entry +EXPORT_SYMBOL vmlinux 0xc2be0a71 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xc2c41c7e write_inode_now +EXPORT_SYMBOL vmlinux 0xc2ced3ff swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xc2d3e7f4 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2fc5338 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xc3044991 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc30ecf25 sk_filter +EXPORT_SYMBOL vmlinux 0xc30f4255 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xc30ffa58 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc36502a0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xc377950b dev_get_flags +EXPORT_SYMBOL vmlinux 0xc392afd2 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xc39fcbdb from_kgid +EXPORT_SYMBOL vmlinux 0xc3a7be25 lg_global_lock +EXPORT_SYMBOL vmlinux 0xc3af5d38 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc415cb96 dcb_getapp +EXPORT_SYMBOL vmlinux 0xc448a202 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xc45abcd5 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xc4690f83 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xc478d1a5 file_update_time +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4ceb96d of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc4e0c7e8 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xc4ea901e shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xc4eb9c71 vme_dma_request +EXPORT_SYMBOL vmlinux 0xc50d9b3c mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc518f94f dst_init +EXPORT_SYMBOL vmlinux 0xc523edd2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc55ac02f xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xc58a1f96 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5ad9597 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xc5da6aee simple_pin_fs +EXPORT_SYMBOL vmlinux 0xc5da8b92 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xc5e53887 tty_throttle +EXPORT_SYMBOL vmlinux 0xc5e66477 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xc5fc3f44 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc5fe4193 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc60f31b0 pci_get_device +EXPORT_SYMBOL vmlinux 0xc626ba17 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64132d2 tty_do_resize +EXPORT_SYMBOL vmlinux 0xc64f78bd inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xc65b23a5 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xc663c437 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc695a2c3 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc6b2fe6f __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c3dedf simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d38cfc pci_dev_put +EXPORT_SYMBOL vmlinux 0xc6dec22d nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xc6eb54b8 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xc71ed705 scsi_host_put +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72b6c29 dev_add_offload +EXPORT_SYMBOL vmlinux 0xc739ccec nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xc73d9801 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xc7542cbd of_device_register +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc77b6444 inet6_offloads +EXPORT_SYMBOL vmlinux 0xc77f6e67 udp_add_offload +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78a2766 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a69a46 touch_atime +EXPORT_SYMBOL vmlinux 0xc7a69cbc genl_notify +EXPORT_SYMBOL vmlinux 0xc7b780f2 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc7c17cd4 noop_qdisc +EXPORT_SYMBOL vmlinux 0xc7c3ad0f input_unregister_device +EXPORT_SYMBOL vmlinux 0xc7cc4794 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xc7f2e72a key_unlink +EXPORT_SYMBOL vmlinux 0xc7f446a2 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc81ddd08 path_put +EXPORT_SYMBOL vmlinux 0xc824b0f5 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc82d8c1b bio_init +EXPORT_SYMBOL vmlinux 0xc8345e5c of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xc83620dd pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83bfaec vm_insert_page +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84370bb kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8575627 i2c_release_client +EXPORT_SYMBOL vmlinux 0xc86e4c28 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8787723 __pagevec_release +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc895f5a7 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc899f8aa __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xc89f79d4 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8ad1169 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bcbae0 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xc8c0d027 nvm_register +EXPORT_SYMBOL vmlinux 0xc8e5cb8f phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xc8efed4c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96b03ca fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97c38ba __vfs_read +EXPORT_SYMBOL vmlinux 0xc98c960f pci_choose_state +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9c6e0b5 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xc9dc90c0 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xca010f1b kill_anon_super +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1d6cc7 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xca1ebb69 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xca2ecf63 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xca31dd4a vme_register_bridge +EXPORT_SYMBOL vmlinux 0xca3570c1 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xca521618 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca6ad1c1 sock_i_ino +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca86ab06 from_kprojid +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca968e04 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xcabc7888 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad619a9 kthread_bind +EXPORT_SYMBOL vmlinux 0xcadd0f72 rtnl_notify +EXPORT_SYMBOL vmlinux 0xcae0dc9c nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xcae2741a mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0f5a10 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xcb128141 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0xcb224bc1 __scm_send +EXPORT_SYMBOL vmlinux 0xcb29c833 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xcb40b144 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xcb46a0e0 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xcb62459b fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb921359 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcba006d6 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc47fb1 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbff5e68 mempool_create +EXPORT_SYMBOL vmlinux 0xcc060ef4 request_key_async +EXPORT_SYMBOL vmlinux 0xcc205acc netif_carrier_on +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc357abb skb_insert +EXPORT_SYMBOL vmlinux 0xcc3e2e1b scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc538a8a iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xcc84cfcf of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xcc8d3f4f acpi_os_execute +EXPORT_SYMBOL vmlinux 0xcc94db76 load_nls_default +EXPORT_SYMBOL vmlinux 0xccb4360a skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xccbfd3fb lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc88a58 dump_page +EXPORT_SYMBOL vmlinux 0xccc9796b generic_block_bmap +EXPORT_SYMBOL vmlinux 0xccdc7275 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xccde336d dma_pool_create +EXPORT_SYMBOL vmlinux 0xccf2d0e2 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xccf9bc2b inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xcd0848aa dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xcd13e38f sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xcd1fdfb1 pci_disable_device +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd44464e dev_warn +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd58000b sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xcd68bbff bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xcd8cd437 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xcd8e9c4d scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xcd94f676 touch_buffer +EXPORT_SYMBOL vmlinux 0xcd97b654 from_kuid +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc99310 __sb_end_write +EXPORT_SYMBOL vmlinux 0xcdcf1e0c follow_down +EXPORT_SYMBOL vmlinux 0xcdf88cd6 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xcdfb188b vfs_writev +EXPORT_SYMBOL vmlinux 0xcdfbbdd3 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xce0461fd pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3f7dbd clear_inode +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6227fb xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xce6a9244 profile_pc +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce8b1e18 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xce9e59dd sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae4418 cdev_alloc +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb0c780 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0xceb1717d completion_done +EXPORT_SYMBOL vmlinux 0xceb26d15 kernel_read +EXPORT_SYMBOL vmlinux 0xced24bfb xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xcedbd059 param_set_ulong +EXPORT_SYMBOL vmlinux 0xcee6b70b udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefb90c6 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf09f46f i2c_transfer +EXPORT_SYMBOL vmlinux 0xcf5593c0 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xcf55a7e3 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xcf5bdccb tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xcf5dbc94 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xcf99738a xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xcfa66f69 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xcfb290f7 blk_register_region +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfd74ad7 backlight_device_register +EXPORT_SYMBOL vmlinux 0xd0307df5 d_move +EXPORT_SYMBOL vmlinux 0xd03530e3 inet_release +EXPORT_SYMBOL vmlinux 0xd062f927 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xd06c44f9 get_empty_filp +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07696ae blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xd08c2e50 serio_rescan +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09a5200 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b92963 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xd0bd427a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xd0e01fae copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xd0e70189 vme_lm_request +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0ef5e43 flush_old_exec +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd10a9213 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xd12ea286 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xd1521791 pci_get_class +EXPORT_SYMBOL vmlinux 0xd1554133 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xd160e8f8 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18ff827 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xd1aeffb6 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xd1b32363 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e46e82 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd2050a70 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xd2129fe5 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xd227f3b3 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xd22d5e88 netlink_set_err +EXPORT_SYMBOL vmlinux 0xd24610d1 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0xd24ba4c1 fence_free +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd253ee91 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25e16e3 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xd2657c2a ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28efcb1 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xd290c46a mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd3186c2e nf_log_unregister +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3259d65 test_and_set_bit +EXPORT_SYMBOL vmlinux 0xd34d2422 netdev_emerg +EXPORT_SYMBOL vmlinux 0xd3551d4a inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xd3559ef4 __memset +EXPORT_SYMBOL vmlinux 0xd362a266 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xd365a919 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd372ef1a wait_iff_congested +EXPORT_SYMBOL vmlinux 0xd3997682 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xd39ade6b set_create_files_as +EXPORT_SYMBOL vmlinux 0xd3b12742 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd41fe818 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd430415e scsi_execute +EXPORT_SYMBOL vmlinux 0xd433f62d blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd45d4c06 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd468e225 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4895173 param_set_byte +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4caae30 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd4e7aa3d ioremap_cache +EXPORT_SYMBOL vmlinux 0xd4ea5fa8 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd51b768a devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xd54edf49 dcb_setapp +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd56217bd fput +EXPORT_SYMBOL vmlinux 0xd5646240 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xd5753881 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xd576274c __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xd58de482 register_quota_format +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5a79723 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xd605f4aa tcp_release_cb +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd638a3fd would_dump +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6517a7c phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd655855c __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xd655f199 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd656475e phy_connect +EXPORT_SYMBOL vmlinux 0xd65778e7 iget_locked +EXPORT_SYMBOL vmlinux 0xd65dabd5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xd67802fe __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xd6788f1f pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6945754 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xd6d9113d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6eec02b tcp_req_err +EXPORT_SYMBOL vmlinux 0xd6f04f19 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xd6f74f99 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xd714dc4f pcim_enable_device +EXPORT_SYMBOL vmlinux 0xd71ae963 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xd727b835 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xd73ff639 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xd75915d9 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd7649fbc mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xd77212b2 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xd79f58a0 skb_split +EXPORT_SYMBOL vmlinux 0xd7bf5a63 init_net +EXPORT_SYMBOL vmlinux 0xd7c22928 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xd7dd2e8f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xd7e0075f mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd7e308cb vfs_write +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8074dbd ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xd82bf58b clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xd82d40e0 contig_page_data +EXPORT_SYMBOL vmlinux 0xd86a9c6a address_space_init_once +EXPORT_SYMBOL vmlinux 0xd88eb53b kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xd890a5a7 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xd89f20ff kernel_accept +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8eac291 d_delete +EXPORT_SYMBOL vmlinux 0xd9024d0a new_inode +EXPORT_SYMBOL vmlinux 0xd908ee1b dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd944fbac nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xd9468197 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xd94ebd7f mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xd98169d5 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9ec50e6 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd9fee927 get_tz_trend +EXPORT_SYMBOL vmlinux 0xda01479c mempool_create_node +EXPORT_SYMBOL vmlinux 0xda0687ec __quota_error +EXPORT_SYMBOL vmlinux 0xda07eea8 dump_align +EXPORT_SYMBOL vmlinux 0xda1b4c53 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xda25c843 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xda3b8f44 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda43ac97 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xda458f88 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xda705c93 __init_rwsem +EXPORT_SYMBOL vmlinux 0xda71074f swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xda72cc0a mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xda742a41 posix_lock_file +EXPORT_SYMBOL vmlinux 0xda7644f6 seq_putc +EXPORT_SYMBOL vmlinux 0xda76d823 __brelse +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8c663c pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xdaa28e26 mmc_add_host +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad775aa of_get_min_tck +EXPORT_SYMBOL vmlinux 0xdae1df3c cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf4c8c1 get_task_io_context +EXPORT_SYMBOL vmlinux 0xdafec50c param_get_bool +EXPORT_SYMBOL vmlinux 0xdaffb47b of_get_pci_address +EXPORT_SYMBOL vmlinux 0xdb0a06c4 __sb_start_write +EXPORT_SYMBOL vmlinux 0xdb0a8143 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xdb10b386 key_invalidate +EXPORT_SYMBOL vmlinux 0xdb15e8c0 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xdb2162ef jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xdb21ab6f rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xdb2c7df4 md_integrity_register +EXPORT_SYMBOL vmlinux 0xdb333482 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3e9158 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xdb40f0de tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xdb5dbf7e of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xdb640858 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6eb647 sock_wake_async +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8409a5 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xdb84a9ed ihold +EXPORT_SYMBOL vmlinux 0xdb8db153 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0bb75a dma_find_channel +EXPORT_SYMBOL vmlinux 0xdc0f4220 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3278c7 softnet_data +EXPORT_SYMBOL vmlinux 0xdc363800 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4c6e6a neigh_lookup +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5db282 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xdc8508cb xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xdc9e1962 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xdcab306b skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xdcaba471 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb1958c compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbc8ff1 security_inode_permission +EXPORT_SYMBOL vmlinux 0xdcbd8768 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xdce727c7 PDE_DATA +EXPORT_SYMBOL vmlinux 0xdcf3ea11 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xdd0e9f18 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xdd111892 bioset_free +EXPORT_SYMBOL vmlinux 0xdd158ba0 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xdd2ec868 update_devfreq +EXPORT_SYMBOL vmlinux 0xdd52954e mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd7115d1 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xddad2834 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xddb126bc __frontswap_store +EXPORT_SYMBOL vmlinux 0xdddffac5 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xde292b87 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xde2b7668 ether_setup +EXPORT_SYMBOL vmlinux 0xde434656 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xde4fd915 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xde5769e6 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde66f5cd unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xde6f5ddd update_region +EXPORT_SYMBOL vmlinux 0xde85e71b phy_attach_direct +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b9434 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xdea3fc74 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xdea575be register_key_type +EXPORT_SYMBOL vmlinux 0xdecdf33e inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xded7466e register_cdrom +EXPORT_SYMBOL vmlinux 0xdefc5cda vfs_llseek +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0dd173 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf146aa2 __get_page_tail +EXPORT_SYMBOL vmlinux 0xdf23b57b cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xdf2bfc53 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf40e3b9 simple_open +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf755372 send_sig +EXPORT_SYMBOL vmlinux 0xdf851dff devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xdf892218 pci_match_id +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8cecae ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9b1603 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xdfa216c2 secpath_dup +EXPORT_SYMBOL vmlinux 0xdfbc38eb param_set_bint +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd0147b km_state_notify +EXPORT_SYMBOL vmlinux 0xdfe03c03 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xdfe1fd3b d_lookup +EXPORT_SYMBOL vmlinux 0xdfeb53e7 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xdfefa57e sock_kfree_s +EXPORT_SYMBOL vmlinux 0xdff225bb lock_sock_nested +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe017bdfd block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xe046713f param_get_ullong +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe052c8a3 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xe057beca vme_master_request +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07d95f7 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xe07eaeac ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xe082db4f mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08de21e xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b38ba1 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xe0b93fed fb_validate_mode +EXPORT_SYMBOL vmlinux 0xe0cf4821 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xe0d6cc99 __elv_add_request +EXPORT_SYMBOL vmlinux 0xe0d86194 bdget_disk +EXPORT_SYMBOL vmlinux 0xe0f2688d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xe0f4c117 vc_cons +EXPORT_SYMBOL vmlinux 0xe0f6d0f0 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xe0f8db2b dev_trans_start +EXPORT_SYMBOL vmlinux 0xe10b2640 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xe110189e ida_pre_get +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f3cbc _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xe12a1f3b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xe13197f3 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13a59b4 phy_start +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14e5ae2 scsi_init_io +EXPORT_SYMBOL vmlinux 0xe14ee8a9 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe185c417 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe1888a89 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xe1c5261b kfree_skb +EXPORT_SYMBOL vmlinux 0xe1d2be4d devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xe1d9b2c3 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe256a8f2 dev_uc_init +EXPORT_SYMBOL vmlinux 0xe26b9d20 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe2962781 audit_log +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2afecf8 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xe2d37797 read_cache_pages +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e266fd skb_append +EXPORT_SYMBOL vmlinux 0xe2e29eaf tcf_action_exec +EXPORT_SYMBOL vmlinux 0xe2e90720 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe340fa3a of_match_node +EXPORT_SYMBOL vmlinux 0xe368095d submit_bh +EXPORT_SYMBOL vmlinux 0xe3a0e4aa tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b31896 kernel_listen +EXPORT_SYMBOL vmlinux 0xe3b5b128 vme_irq_free +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d338a6 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3ed7fbb ppp_dev_name +EXPORT_SYMBOL vmlinux 0xe3eda369 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xe3fd9204 set_binfmt +EXPORT_SYMBOL vmlinux 0xe40e38e8 param_ops_charp +EXPORT_SYMBOL vmlinux 0xe4581d26 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe45851fc sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xe47f112a vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4f3e5af block_commit_write +EXPORT_SYMBOL vmlinux 0xe506e5fc scsi_remove_target +EXPORT_SYMBOL vmlinux 0xe50e433a generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5408ccc iov_iter_zero +EXPORT_SYMBOL vmlinux 0xe55377c4 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ee5b28 xen_dma_ops +EXPORT_SYMBOL vmlinux 0xe5fda57d del_gendisk +EXPORT_SYMBOL vmlinux 0xe6130a5c vme_slave_request +EXPORT_SYMBOL vmlinux 0xe6504353 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe67adebc swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe67c8fcd dev_close +EXPORT_SYMBOL vmlinux 0xe6979810 dev_crit +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6ac66cb __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xe6c86f21 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xe6dbbcf5 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fc0c22 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xe707da7c blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xe72d7d49 skb_queue_head +EXPORT_SYMBOL vmlinux 0xe7384ad1 cdev_del +EXPORT_SYMBOL vmlinux 0xe74ebc87 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe76cd704 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xe7774093 phy_init_hw +EXPORT_SYMBOL vmlinux 0xe7790a23 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe786c6b7 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xe7898f7b twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6cdeb mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xe7d3c807 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe81873f7 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe83817ff phy_disconnect +EXPORT_SYMBOL vmlinux 0xe855bea0 inet_shutdown +EXPORT_SYMBOL vmlinux 0xe86448df find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87fdad2 of_device_alloc +EXPORT_SYMBOL vmlinux 0xe8951763 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xe8976038 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d044bf generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe8def323 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe8f96de4 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xe8fdd5d1 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xe913045f xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92afe7c pci_iomap +EXPORT_SYMBOL vmlinux 0xe93579c6 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xe9441262 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe954ab32 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xe95dcca3 skb_push +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe96b59b0 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xe9c15a19 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xe9ccce3e inet_accept +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f9d999 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xea0297a1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea1a14ac skb_queue_tail +EXPORT_SYMBOL vmlinux 0xea58bb18 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xea5fa768 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xea6bcc16 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xea6fc3bc qdisc_reset +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7bf8a6 param_set_bool +EXPORT_SYMBOL vmlinux 0xea8a73f9 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeab06ab0 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xeacc06f7 fence_signal +EXPORT_SYMBOL vmlinux 0xeacd9ec4 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb06e1d5 igrab +EXPORT_SYMBOL vmlinux 0xeb1c6afd down_write +EXPORT_SYMBOL vmlinux 0xeb204335 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb37178c d_drop +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4c739f vme_irq_handler +EXPORT_SYMBOL vmlinux 0xeb989eb4 udp_proc_register +EXPORT_SYMBOL vmlinux 0xebd25cbd kset_register +EXPORT_SYMBOL vmlinux 0xebe87710 check_disk_change +EXPORT_SYMBOL vmlinux 0xebfe17ea __put_cred +EXPORT_SYMBOL vmlinux 0xec0d75be generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xec1a1c6b ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xec20dfbe seq_file_path +EXPORT_SYMBOL vmlinux 0xec488b2b nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5a13dd twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xec9a6404 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xec9eae59 inode_init_owner +EXPORT_SYMBOL vmlinux 0xecb72878 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xeccae057 inode_permission +EXPORT_SYMBOL vmlinux 0xeccbb558 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd89fc2 dev_addr_del +EXPORT_SYMBOL vmlinux 0xecdbdfde seq_open_private +EXPORT_SYMBOL vmlinux 0xecdbeb58 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf16ce2 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xecfe9c2d dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xed0d6d76 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xed15f3a6 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xed2e6298 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xed433664 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xed464d12 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xed475637 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xed565a7d bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6588d7 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xed823b30 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda6b0f7 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc7bf59 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xedd06c72 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xeddcb013 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xedfb4ac6 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xee012860 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xee0ea1ce __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xee266d17 vfs_mknod +EXPORT_SYMBOL vmlinux 0xee2807f3 follow_up +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3f722c skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xee43b816 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xee693e91 iterate_mounts +EXPORT_SYMBOL vmlinux 0xee77810e put_tty_driver +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee903cbe serio_close +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea3a9e3 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef8055d9 dev_mc_add +EXPORT_SYMBOL vmlinux 0xefbf86a2 vmap +EXPORT_SYMBOL vmlinux 0xefc25546 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00b7365 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xf0131cb7 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf02f392c keyring_clear +EXPORT_SYMBOL vmlinux 0xf034210f unlock_buffer +EXPORT_SYMBOL vmlinux 0xf041e6f2 vfs_getattr +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf07c8149 tcp_prot +EXPORT_SYMBOL vmlinux 0xf087a027 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xf08836d4 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xf08af246 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0c50a29 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf0cd2e4a get_user_pages +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f76d28 filp_close +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf135ed75 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf1364e69 set_bh_page +EXPORT_SYMBOL vmlinux 0xf143396b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1606ffe phy_device_remove +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1bdfe9d neigh_table_init +EXPORT_SYMBOL vmlinux 0xf1c39445 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dd5c7f udp_poll +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2052b3f mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xf209e519 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf21dd284 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xf21dfb82 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xf222c48d netif_carrier_off +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24b3bf8 inet6_bind +EXPORT_SYMBOL vmlinux 0xf251669f ppp_channel_index +EXPORT_SYMBOL vmlinux 0xf255fdf8 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xf26c6c92 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xf277b51f jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xf28ecb20 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xf2945f1a remap_pfn_range +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0459d lg_local_lock +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c5328f param_ops_invbool +EXPORT_SYMBOL vmlinux 0xf2cab904 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xf2cd77e1 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf2ecaea6 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xf30283e2 build_skb +EXPORT_SYMBOL vmlinux 0xf304014a bio_put +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf3130d33 module_put +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3265543 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf346acf1 of_dev_get +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3849685 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xf3859d59 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38bb823 mem_map +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a426a4 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xf3b85639 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf3c37138 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xf3cc5cd5 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xf3d21a3f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fab5c2 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf41f43b6 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xf4550f97 fb_blank +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4835f92 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xf4837e1f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xf49f1d4d mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xf4a9bcaa tcp_connect +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c35496 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xf4c69997 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xf4cfb801 load_nls +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fb80c7 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf56a1360 locks_init_lock +EXPORT_SYMBOL vmlinux 0xf5722670 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xf576ec0d dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xf5778179 redraw_screen +EXPORT_SYMBOL vmlinux 0xf58079cb dquot_resume +EXPORT_SYMBOL vmlinux 0xf582c525 amba_driver_register +EXPORT_SYMBOL vmlinux 0xf5854f55 generic_setxattr +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5b915f0 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d01363 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xf5d29c32 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f9b26f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xf6273f1f pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xf62e72e6 devm_release_resource +EXPORT_SYMBOL vmlinux 0xf6342929 generic_file_open +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6519151 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xf65b4e93 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6b3c1b1 param_set_copystring +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6cd4776 fd_install +EXPORT_SYMBOL vmlinux 0xf6cdbdcd page_waitqueue +EXPORT_SYMBOL vmlinux 0xf6d85681 iput +EXPORT_SYMBOL vmlinux 0xf6e19879 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ec3d12 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xf6f0ffed _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xf6f512e1 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7351799 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xf74fde5c eth_gro_receive +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7b0695a mem_section +EXPORT_SYMBOL vmlinux 0xf7c3a434 km_report +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7d162b1 param_set_ullong +EXPORT_SYMBOL vmlinux 0xf7ed5551 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xf80d2b2c forget_cached_acl +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82133f6 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8385850 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf83b06a5 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xf87be80e pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf89f7a34 simple_link +EXPORT_SYMBOL vmlinux 0xf8a4e96b proc_set_size +EXPORT_SYMBOL vmlinux 0xf8afc004 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf8b4469d bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xf8c6bdb6 skb_store_bits +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8e7e5f4 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf9496d11 __getblk_slow +EXPORT_SYMBOL vmlinux 0xf94e5d0c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xf951cd2a of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xf956c339 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xf96a0720 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xf96e076a bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xf971b318 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf9741ebd devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf9797bdd pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xf98a742a of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xf99b84f1 register_md_personality +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9bdf45c may_umount +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9ccaa6e security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xf9d5eaab sock_no_listen +EXPORT_SYMBOL vmlinux 0xf9dde891 wait_for_completion +EXPORT_SYMBOL vmlinux 0xfa042c96 md_write_start +EXPORT_SYMBOL vmlinux 0xfa367551 generic_setlease +EXPORT_SYMBOL vmlinux 0xfa47465f ida_simple_get +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa676432 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xfa7e6402 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xfa853438 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xfabf1ec5 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad566d5 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xfae07d44 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae6d02d gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xfaf19ec7 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb12cebe simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xfb516035 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb8b92ce netdev_printk +EXPORT_SYMBOL vmlinux 0xfb929a1a seq_read +EXPORT_SYMBOL vmlinux 0xfb930e15 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb960a61 passthru_features_check +EXPORT_SYMBOL vmlinux 0xfb9fc085 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbafa919 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd94907 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xfbe8ff5e cpu_online_mask +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc08060d zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xfc16e139 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xfc3bfe66 __break_lease +EXPORT_SYMBOL vmlinux 0xfc4b6d0a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xfc52047f __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc5ac0a6 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xfc5f177c __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xfc61dd9e simple_rmdir +EXPORT_SYMBOL vmlinux 0xfc627b38 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xfc75611f ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xfc81a1bd iommu_dma_init_domain +EXPORT_SYMBOL vmlinux 0xfc8495eb tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc3153e pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xfcd94a48 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcdfee41 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xfce4e532 blk_put_queue +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfa2df2 get_phy_device +EXPORT_SYMBOL vmlinux 0xfd1ebf7f fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xfd346f6c eth_gro_complete +EXPORT_SYMBOL vmlinux 0xfd3f6d0d eth_header +EXPORT_SYMBOL vmlinux 0xfd48fdff jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xfd4908a2 noop_fsync +EXPORT_SYMBOL vmlinux 0xfd603268 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xfd684ab8 dev_mc_del +EXPORT_SYMBOL vmlinux 0xfd6ecf15 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xfd83a88f skb_clone_sk +EXPORT_SYMBOL vmlinux 0xfd905657 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0ad30 dquot_commit +EXPORT_SYMBOL vmlinux 0xfda5c194 account_page_redirty +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfddb1c57 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe3e0aa3 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xfe41ad3b mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5fdda2 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xfe6c040f ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xfe735915 skb_copy +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe804a6a d_instantiate +EXPORT_SYMBOL vmlinux 0xfe8288d7 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xfe8c7a06 free_user_ns +EXPORT_SYMBOL vmlinux 0xfe8ca366 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9977ab tcp_child_process +EXPORT_SYMBOL vmlinux 0xfe9b1b03 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeb41aa8 kobject_init +EXPORT_SYMBOL vmlinux 0xfeb696b1 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfebda1bc __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfedd4fd7 sock_create_lite +EXPORT_SYMBOL vmlinux 0xfee4f906 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22069e mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xff41748e tty_lock +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff992091 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb2c8bf ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffde17a3 done_path_create +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x37710b26 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x39f2aac8 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4e02f8d0 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4f192e96 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa3d00ff9 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xb2d5a7f9 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe9c80fcf ablk_decrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x199e2212 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x2e94e281 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x34d8d687 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x364c1249 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3c01eaaf af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x9082e425 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x9bfe2bc8 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xbf2115e6 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb39de78 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xff406c85 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa2018aa0 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x0a3ab299 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xdb3b6463 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x026fdec6 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xe8ec600b async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x04fc4ce5 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x13385f0f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5237461c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xad3145cd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xaa1b5bc3 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xdb8e7a08 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xc8cb48b8 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x256cedf8 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x4be3b0da cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x0f0b016c crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x4379476f crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x1ff40081 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x36605c66 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x68f2c254 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x71de842b cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x7a8e5702 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x99d0f84c cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd065837a cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd3b8eec8 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xde1db53d cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xebd8d1f0 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x0972fba8 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0de07cbc mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x342ad4e9 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3894265f mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x72d0e9c9 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa8f2aa5d mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xae9d76f5 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb28a46a1 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd8f7e747 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x08c600fd crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x16b943c9 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x324e7f4a crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xd57e2836 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x722e0e87 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x91ac02bf twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xe690f04a xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x071d897c ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0ce1ee54 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11fb8334 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1776602a ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2c860876 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x59468b8e ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61b301ad ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x674ef68e ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x76b3e5bf ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7d4b43e0 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f96ea37 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x82120123 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8a1ea390 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x938b2969 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa1f5622c ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa951c4e1 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb0c7a1e7 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8590645 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe15ca497 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe1b60583 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe4262dcc ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe897872c ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x07f9e773 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2231a289 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2cc6a99c ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4ce8b342 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4f8ef1d6 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x659ee38b ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x789c1ce5 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9b3f522e ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9d14b73b ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb79f038b ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbf10c63c ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcb567b41 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf79684d8 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xe9b36f4b __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x311314b3 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x33bc3996 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x4472d256 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x640273ec __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xf4f5f43e __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x09080d9a __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x10b6c39a bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x195b6cc0 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x213a6d51 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2811f117 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2a7132d6 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3077e68f bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x46998474 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x477cc36d bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x495e6394 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x544f33e2 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ff5817d bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6eeee98d bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x702908db bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7bdd3a5e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f271c8e bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x90ed361e bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb307eeb2 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbae27361 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe04a4de0 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe1f7230d bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xedc92df0 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf14517d3 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf55ff8c1 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8f492b42 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x98440f06 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa88da7b9 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xaa652ec7 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc7fa56c0 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdbc3a246 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1bf714ff btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x2a3386a3 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3ef1fb4a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4714da20 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x547aa3e3 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5940d5e2 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6d46bf77 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8aeeafb0 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9ad7ef3c btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xbc782653 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfb769716 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x03ccdcfb btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1bf11280 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x30963fdb btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3d8563f8 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x41d3de2d btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x450041f2 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x98803618 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9fa2748c btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb20e343f btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd449b39b btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe63862e3 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x69c07e10 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xb21c82e1 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x16fc26f0 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x558b74a0 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x09ee16fa clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x13764cce qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1ad28e9c clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1f4159b0 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3b0b58e5 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3bf9931f qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3e223cf5 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x501608da qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x53f95e39 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x612214bd clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x67ae803a clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6baea882 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x709d9cf0 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x73964fc2 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8c4dbdbe clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8d53d96e clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x90b53166 clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x999e1e71 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x99d2c773 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e2e91a1 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa5024189 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaace56b1 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc7994798 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcb0c5248 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcd0a83c6 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd25fd154 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe703bcad clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf1a3a317 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf1f136dc clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf69c2f55 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf93e315f clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xf6b06b2a bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xf7862a67 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x928d3148 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3ac61c83 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x44538df4 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x4f45306d dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x51534971 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x604a108e dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x40607691 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x6b671f65 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc7b093e0 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x16ad2484 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1ae7b202 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x295d0a8d edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2dbc3de7 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3284f7ec edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x38c4e244 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c90fa56 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4aca1935 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4dce12a5 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4e1a8d29 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b029d95 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6826f99d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x79a55385 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x84516458 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8781ffa4 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x92c86e5e edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x96e38ebb find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x98419e38 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9dddcd46 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbb1e02c8 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf9321d4 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xea801957 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4f2e9bc edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0xe342fbf5 get_scpi_ops +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x47a9af16 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6b7ada2b fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x81ddf793 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8a751d80 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9ffff3de of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb30d9eca fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x25212b05 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2ef56766 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x38326be4 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x60dbaa90 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7deb8a7d of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8f8cbcfc drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb87c8516 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xffed6132 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x64e9f9be ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x7a3535a0 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xf7d15308 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22223268 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x26f4dcf9 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d6df01c hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x518c8cba hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5190000c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5271b3dd hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a14805a hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x62bf57b2 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68a711cb hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bd9d3ba hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x711ad0ef hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x715e908f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x789ceadc __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7daf5d93 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x800370be hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa3098156 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa37e4e0d hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa4ca3c0c __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab32e9f8 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaccab4cd hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xadf34407 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb1c40501 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2874659 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb67f056b hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb886a7e0 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf9a4e4b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc20e8588 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd15247e4 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd9b9611f hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe2a05f5a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe2e8dc0b hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe5859f5e hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec34e4bd hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed85a718 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc4e88fe hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff0d7f1b hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xd32d29fc roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1c3f2d33 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4898b90e roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5aa171e2 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa6843e27 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xebc6a6eb roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf17dcad2 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x426bdd03 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4a56475d sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5e7c32c0 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x861f180c sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9fa36152 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa14ba019 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xac2462c0 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xae20a4e0 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe6916c9b sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4707232b hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x11920c9e hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3d22c1df hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3eb282fe hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4c0ca6fc hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7165d5b1 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7513bf56 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8d7fbf07 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x917670de hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa173c22d hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa3aebfe8 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4ed8327 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5d8c85e hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xab808c68 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabfceb76 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb5ba509e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbd4aad0b hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xde33ca1a hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xedfd74b1 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x1b653d93 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x1e0156a4 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xfaade6b9 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0624891c pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x092d0281 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x29bd33c9 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2bd5ece6 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2db392e2 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x473e54d8 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4ebaac2e pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x510f9871 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x59d7541f pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7df252d7 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8aa4caaf pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbb7ee3b3 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc502545a pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcd29baf2 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf7b66dce pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x1c84975e hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x2b195ac8 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x4228046b __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x59ee2804 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x681bc81e hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x718cf608 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xb5ccdf98 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xbe2d8798 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xe884cbd2 __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf386f772 hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x24514df6 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3227434f intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x35c4c4bd intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x8d59a836 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xadd0bd27 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb01f299a intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdc28cc23 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2fa51758 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3f50724e stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x42e5712c stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xccbf103a stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xdc39cf0f stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x29e5a7f3 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x41a4e372 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x855ae3d2 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xca555e3c i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf1450f79 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x79c7cb3c i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x938633c5 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x00b87ec8 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x6b3ed510 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x23aaddd5 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x88e5e6c1 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xceff28c3 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1dc2c596 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x64bee1a7 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6cff3665 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7aeffa2f ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7cf0d091 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdd711bdc ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xde5ad6a0 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfe1e074d ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfff95b0f ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x50aaab65 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xde4b8ed5 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x1912ead2 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x31749946 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x3e486e76 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x22ce2e8e adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x23a77cbc adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3e7e5c5e adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x55f96d94 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x568d1178 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6f15ca75 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x76c73020 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7d071505 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x896d7690 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa807b0b5 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xec246038 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf500dfc2 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08414341 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2aab8556 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2c75436c iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3006ed56 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x34938d64 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3932153e devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c67434e iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40bdce4a iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x485f0b03 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50f548e4 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54b04303 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6577c5c1 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a9053fa iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b9d5093 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ecef8b2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x75d41c7e devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76ba6b57 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8139660a devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e92e707 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95fe3789 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa237f348 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa336bb87 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa56f8bdc devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb0bef92f iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4d5a569 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xce50e9df iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd724d7a9 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd698547 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7d92e1a iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebf6b8f5 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb5a847a iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x8b6eb2ef input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xb3886cfb matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xbd3ef0b7 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x05d3f88a cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x22f55861 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x63d09f91 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x375a7841 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x5bd7009b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x83ad4b79 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x78165fbf cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xbcbeef12 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x571bfc29 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x7504bd75 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x99732319 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x99a09ad6 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x06f6bc66 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x258111a8 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3862b2eb wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3a29dca1 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4193d509 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4488b008 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5936ad52 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x959cadcc wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb296f8f0 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc5fc134c wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd0dc7c01 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf4febe45 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x23c0bd62 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3112d40c ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x331d0242 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x39b965e1 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8437866a ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcec976c7 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd9b442a5 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xde6fb4e6 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfbd1183d ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x010411fc gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x09d981b7 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x60b1d1cf gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6880f80c gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6b1675fd gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6c007134 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6fca0286 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x84474cf7 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9e6460ad gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa2ab7bd0 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaab2d391 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb501d8ef gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc5fd5b79 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdbb71935 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf69b2b26 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfb6ac284 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff188d43 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x46574225 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x663a75e3 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x6e7fe2d2 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x9e1305fb led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa7f39aff led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xfa3430ca led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1e1b8230 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3078c2b2 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4290faea lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4df7adbd lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x67d09068 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb06c8642 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb8443065 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbb548cef lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbdbd3ae6 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd5d6ffc6 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf0170fdc lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1a42351e mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1eb46de2 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2fbcaa65 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3ea8d571 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x61fe848c mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x69956c08 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x834c801e mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8497ef3e mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x925af9a9 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xade4fd01 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xaf1def20 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf757f736 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9a3e102 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0642f151 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2d5ecebf dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x32e7f19a dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x34fc26de dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x557637fd dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8db56602 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x912c8444 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xccc72d7d dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd0e9b660 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x81135223 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x03814887 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x333ad5d2 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3ed8bcab dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x50536d98 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6081010a dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xaa3d86af dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xab4ca6a7 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x20a71276 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc3ee1425 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x76b7a51d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x90d6e864 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9f3f4d98 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb541a215 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbdd8e6ac dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd948f121 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xae51b278 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2643c850 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4a0bd361 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5abad09e saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x909c33d4 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa4864597 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb042cdf6 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcd2fc4df saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdf9fc341 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe457ad63 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xee6f17ba saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x30779758 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x540032e4 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9a846e9b saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdcf582be saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdd17f408 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfa6d4b76 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfdb8f93f saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x145d86f3 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x23014dab smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x245ad678 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x272c2267 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x329edb0e smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32b6c109 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3b35dd2e smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x48e66ac5 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4f9ebced sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6c5f6746 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x897b9fd3 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbc3a489e smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd38786b4 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xedb734d2 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf2a6ee89 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfab2dc13 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfb82bcba smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xdecebe15 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x74206210 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x3449d5dc tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0e863190 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x2bd9cf0e media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x30645c14 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x30bc20d4 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x33f9250c __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x4755525f media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x4c12ad10 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x5ecd6aff media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x640dc2bd media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x7166c1e6 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x7bd42523 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x897261a5 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xa78662b2 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0xd63c2e75 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xdb1b772e media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xde31cde5 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xe542ef05 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xf63ccbbf media_entity_put +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x1095c183 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1003ef76 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2207981e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x235fe02a mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2bb6d2af mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33cdb46c mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3c22e012 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4c22e3c8 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x54ee60bc mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x58252242 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa4be4b96 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb005894a mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb57467e4 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xce95a0af mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdbc7ad2a mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xeb583921 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xecd50e04 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf4a4cef9 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf746b7e7 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfa921553 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1bd758bf saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2eb98a9f saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3ae4ce7d saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3b968a64 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4ab5627f saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5c06afde saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5ee943c3 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8fc0b371 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x95e497c0 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa9e11e2d saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xab44bb99 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaf69714b saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc16f59be saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcd431e8d saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcedbdd85 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdb197204 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe4b9bd60 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe600e07e saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe7a77c86 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x117d1c01 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x550f1943 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5e4797d8 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6a096a8f ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6c89a3a4 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcb95d348 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf3200776 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x23659484 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2c8f87cd xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6f9c73f7 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x94f10b51 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xcabd7827 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe48c62f5 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf9e05e76 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x86651712 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x3a77c78e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xdca4c48a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x17d5b187 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x26c9e5a6 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2f84ad95 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x30128f26 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4d20806d rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4df05676 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x82751a58 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x869139b6 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x86aa2ff2 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8c1979a8 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e63d0ae ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbd155008 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc1b41c55 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc4f6c231 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd2418589 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd5093073 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe7e8b632 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe8668bd4 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf6bf9797 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xf5b5c447 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x4afaf49b microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xf21ff09d mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x8bcbc106 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xf5fd9e17 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe9815b65 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x1b3d8867 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xba91d355 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x637d4874 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x04f4d063 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x4cc509b0 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x3ee5d45a tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xed7a7a3d tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x524dd99a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x00c9ffcf cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1a68b209 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x26fbbf88 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2dd2cea3 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3e54db05 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x451a13e0 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x55e2f9b5 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5a204be8 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5d5c6ea8 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f16ce0f cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x660e413c cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x70a4e9a4 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa1fb675c cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa8a4f015 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc046a061 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc90c71e4 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcceefcc4 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcdcc1239 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe646759e cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf42b8087 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x33cf0548 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xef54640e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0cfdf158 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x26c225ec em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2bee9253 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2db95b22 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4493c30b em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4c3725d9 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x578f6cf4 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5ae41bc3 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x692a31bf em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x88e59951 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9ca9d3fa em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9db93ee5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaeb8c0ab em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaf3d3d91 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbcf5efcc em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc6f96ad4 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc795b24c em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcebffea6 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x29aa3370 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5350c3cd tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5e38f3b2 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x6880974f tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x273763b1 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x45f8ad0b v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4f169523 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x65b613e4 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7a2ad156 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7d527811 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3c6eb8bc v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x4237bd43 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d350ba8 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x11922b11 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1472aeb4 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2648601f v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2902a10e v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b826e0c v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2cfa5f45 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x36c170df v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x36cdda06 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3ff4fa41 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3ffc8f40 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x48508606 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57227d16 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69b56b3e v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x722d89a9 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7cf62718 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x849cf7dc v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c0a1f91 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x90adf2b2 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9994b73c v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaaeeb18c v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc59a8d44 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe5647213 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xebd09c2d v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xee940c38 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeedb3181 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfbda8738 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x02c39d35 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2b6147f1 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e32e00f videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x373f8204 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x396dd145 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x47ac6315 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5abc0f12 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x615d4f6e videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x695a878c videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7274b355 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x913e5616 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x96eca44a videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa599f88d videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa82373ce videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb1ab60f6 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb76d1951 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc6e9ce99 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd033aa27 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd1a3bc85 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd3c4ed39 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdbd5f3cc videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe2a72dec __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe56894f3 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfea1f6a0 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x07182548 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1642c4f6 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa7f32e55 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfcb22fd4 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x27334cd4 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2ac7b561 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xfac05e8f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x08f982e4 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x09544997 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1d346ab5 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e7b0bbf vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x25eb5bec vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a7e5b39 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x356e6558 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x493c8f32 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x657a0518 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9f05c2bb vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa29568e8 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaafff18c vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb4e6190a vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc0c79272 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0579a56 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd37389aa vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdf94857b vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xef4d6188 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0bebc824 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xecad9253 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x2245c7db vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xccb856e8 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe0c1e28b vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x134acf57 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x148f5353 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x17aafab7 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x184a7c87 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2f65018e vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x366e4401 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3e2f4548 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x403c49e1 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x40eca6da vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x47c7999c vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x54797605 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5bb83000 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x70fd2da6 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x725107d5 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x726cce1f vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x78b024c8 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x82c7c477 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8cc1c337 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x95011821 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9c9a2d42 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaa214fcc vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb02b2e27 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc0d60551 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc19c4bc1 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc6e79f6d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc84ede75 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xcdcce5c3 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe1cdba23 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe6196b28 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf8f000ce vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xfb97c1d6 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xffb6d02c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x68fe34a6 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x089b2b69 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x10da929e v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x12731bc8 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x160789d0 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ffb2f3d v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3ed78b3f v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43f63981 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x49c23c48 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58856d9c v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e1f1ff1 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7ed161cf v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x881d2154 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x919ee77d v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x979a2384 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2a6cbcf v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa8332b8e v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb58c2886 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xba7997f4 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe045325 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcbc602f0 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd618ad87 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd64a3aba v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd736d5f8 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7c3f5f1 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0f82491 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe459d235 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeafacdf9 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfa3308a3 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfb3a9679 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x079289e8 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xde06016d pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe4bc9b71 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1d41b086 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2df1760d da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7176e8b9 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7b385e65 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x9cb447f8 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xaae16f0b da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcdbbec3f da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x245b9ede kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4532507f kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x678a9c88 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6deb3a30 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x77c8df24 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc93d4ad9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe15f8a93 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfd253525 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x1c038aaa lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x46ddd2bd lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xea9fd31f lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1bfc6a47 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x20ef0ff0 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3ec8b52f lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3ed78d6d lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6787038e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcbc158e1 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfa132b53 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x51b6df6b lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8b20cfa8 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb94b4367 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1dc73cbe mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2cc36c9f mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x33c0c0bd mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x61757ef5 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x737a8b9d mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xba61a225 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x07413d0a pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0b2078bc pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1ea478f3 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2f05eb83 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6a371e6f pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x884532a9 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e679290 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9dfb4c2a pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa7752d36 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb5b4c272 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd6272a1a pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6b655470 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xad6dada1 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x339f829d pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x37600f7f pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x57e440cc pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x883e8f51 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa1c831c5 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0f1ac383 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x15a820c5 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1f65dbe1 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2b7c974b rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x30fcf9a6 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x347dfc0c rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44562c7f rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x49abc87e rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x59e76aa4 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6c78e6b0 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x76173032 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7cece19e rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8aa33bd6 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x96ebb61d rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9ebb2e2e rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa17116f3 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc989366c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcc1897af rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd08e3a05 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdb6c7fd3 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdc2ae17b rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdfc1a980 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8702770 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfbb1bc20 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1a075ec5 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1dcebee1 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x48f4d812 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x53af35e4 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x551a23d0 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x664b86c6 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6bed6ba8 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x98f086ef rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa7a3d01e rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa9222434 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd490f9aa rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd7d3cdea rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf97510c0 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0395a3ec si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x070d5600 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b50b823 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0c93fb03 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1444e3d9 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x161eefe4 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17eeac20 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c333fda si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fd6a38c si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2325537d si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2eb6dc2d si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x300a71cc si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x344912c7 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3e3698a1 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4d60409f si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4f1b4836 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5699d2f5 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6a9923eb si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7f5b7467 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x80590400 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82ddaa15 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x86eebb27 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92422c3d devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x99a3b041 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9b4b54ad si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ca12020 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9df9dd7f si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3fa4ad5 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbec1fe99 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc54531bf si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbb43d05 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbe86b8e si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdc521c95 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf2c28754 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x51e929a1 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x61a22dab sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x92544b0a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xb31db4aa sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xdf3d8729 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2210ee56 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x520f1729 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe3c84dfa am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xea443acf am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x6ace5f3f tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa1e2f6ec tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xad354659 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xfb1ac3fb tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xadcb2cc8 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8b81dbd5 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x97d2be75 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb770f4bf cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd68c0074 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1963c4ac enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x387281eb enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4cd172e0 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6e1e097f enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7031d37d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x951e7fe6 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x984662cf enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe9f7fd61 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x27a8056b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3a6cf2a1 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x92176ab4 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x94276aa3 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc475bda6 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc6a95c87 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc8ef2302 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd8983ac9 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x0cafd877 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x32f416b3 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x663d24e8 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1f90655f sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2594ea5a sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2643f84a sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6754303d sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x688ae5fa sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8078689e sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9e547b61 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa24986ed sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa5e6f374 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xae1e83ed sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd2523227 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd6624754 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe5b54afa sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xff57e3d5 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1683ecd8 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b2c010b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x45cbc0a6 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5821bdfb sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7149a843 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x72cec495 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9da35303 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbf1e41c0 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf30fd297 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3fd19557 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc2cfb0c1 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xfde69529 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7b9845e0 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x88618a66 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf633c1b6 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x4c9c44b2 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x73beb1c0 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa79cf773 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe17623d3 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x017faf46 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x142539cd mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1b061756 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2362b7a9 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x23ad4d13 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x27b98476 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2f8328c7 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x39109d18 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c93466a mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3d5fe4a0 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x41540a17 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x457d8b0e mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e4fa014 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x508ccdc8 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x50a2f25b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53245233 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x533baef4 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x548a3842 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5961567b mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59a785f7 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c2117a9 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5d7076cf mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5da43119 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66d07364 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x72f497b7 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x813c7d45 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8476be57 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x856a8ea6 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x875bb697 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x908939a5 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x996434af mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a239506 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xabd8bdd9 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd892778 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfc7e227 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4c1ceb3 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd6604ce3 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd6616e1c put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe7c23855 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf6ae5485 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfbeb21d0 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xff7f2afd mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x20d11796 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3c70c319 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x436c6573 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf64af321 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf669921f add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x1f1e2df0 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x39a9fa1e brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xb581b86f brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x68b58e2b nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x877c3e77 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x003fe141 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x39061677 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x99d5da9f onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xf998cb54 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x19a98500 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x366de83f ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x39c760ed ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5ba6e3ee ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7736b923 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b6e201f ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9df7cb29 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa59cdaa6 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb1c15922 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb44e5d37 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb7ce3d9f ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb903c216 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xca1d92c5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xde6a46a0 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x09f7a9f6 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x5f1742f6 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x24f44134 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x77867488 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7ad3a4a1 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9263176b alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe0d7f817 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe13bd449 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x018c1a9e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x03681b2c alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x06b2c427 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x20dee8f7 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23c4a4a7 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x24576d5a free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x34576bad alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5654b37f can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5872619e can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x61f1955d close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76f73d33 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8813c57d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9a4713bc alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb47e1dd5 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbff51b3b safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe3bd8d1e devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf4c432a0 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf9bb877e unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0316d120 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x560e7a2d alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x683cf1f5 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x816216ea register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x501a0057 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x640feaf4 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x973b7aef unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa1f46409 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x67b756fd arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xcfafa6bc arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02d80b8a mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06d6de0f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x082317bc mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cc947b1 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15f75ab2 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a057e9d mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a2c97e4 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ad3542a mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21b99b81 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24307c5e mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x255c4116 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26c46f12 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27206aca mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x286de526 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28bd6d75 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x295afe7a mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a25f6dc mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b7cceea mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bafafe7 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c8653b7 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d29db7b mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dda905d mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e12fec3 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e89a9f2 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33068085 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3389c29c mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37bebd6a mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x387e1fc1 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x391b0346 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41ec1845 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42084cf0 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4787d7c2 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x479e2420 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48b9fc68 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48ed5352 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4af11b11 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b133ef8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e2234c3 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e907574 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f4ff6cf mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5436c42a mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54844bc0 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b690728 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bb48f9d mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e987b49 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6355b109 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64936e5c mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6727c792 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x684bc93d mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68d62863 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a242d1f mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a7820e0 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c0fca52 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71e45cc4 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7302e203 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76860b01 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d799b14 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7de3b2f6 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80e65e00 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81025a4b mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85edb644 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8756452a mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x876449db mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89f1f235 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f03ce29 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fb2fc88 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fd41e5c mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92b0387f mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93607645 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94e655e0 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95abe4dd mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d79118d mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9db5dc3c mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e213540 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e3543a8 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa674ca9d mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa89c9029 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8fbbe73 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab7140b2 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabba3364 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xada8a7b1 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaeb7e8f5 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1178f0e mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4b02a0d mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb58d0ef0 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9c07220 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb1611c1 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc5cc186 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd12bbd4 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0c1b085 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5ab7feb mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc61d7a54 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7429c6d mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcab19e5a mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd915a8b mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfd1971f mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfee0f14 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd03e6641 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0ed8b0e __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1115439 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd21737a4 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd73dd982 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb1a24d1 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb810f26 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde5876b5 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf248ffa mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf413c15 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0620530 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe30eb23a mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6350c60 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe82f63bc mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8d35196 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea3f0122 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb8987ae mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebd3997a mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec35057c mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5380498 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf652c9af mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8d92cdd mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb27a0ff mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbbf78e2 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcf09c95 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdc75791 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfead55a6 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00a37587 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b3f3d92 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x117c003a mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13540e0e mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18641fd2 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x267c1695 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2800292b mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ab63861 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30a737d8 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x312e9fdf mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36d49785 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b5def79 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b965604 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e9eb941 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40688ec0 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43090ce3 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47952d0d mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x520bc090 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53c8519c mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b150b27 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66ef69b9 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x690d04b2 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x741a791b mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77ef6e9c mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f51bdbd mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86896e37 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99e8b323 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa41e7f8a mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa531a824 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9ad442a mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xace23b50 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadc2466d mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae4db584 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0917e84 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaaa2abc mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd79942b mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2dc483e mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc30f0936 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc56003a2 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5c1eb07 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfb1a0de mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7f0995c mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda239aa6 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb8a8643 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeff85a40 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x1a9560f2 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4b14712b stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x80847e24 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xaf1a7f75 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd7aaf1e8 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x33be7010 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xb5e77a26 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc6213bc9 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe9f50582 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x22fca954 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x38ff2598 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3cc4cc35 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5258c7b9 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e9104ce cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x96db8919 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa89aa740 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc3d95978 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc7d38350 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc8abc2ba cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcf74b01e cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd14c574e cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xec6c7061 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf43d4ba7 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf9700abd cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/geneve 0x9776b727 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xb772ab2a geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0d7a8a3e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6e71ec9f macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xcc11eceb macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xdea21bc7 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xfa7b6904 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x089aabbd bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1351fa98 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4ec1e349 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5ba7787a bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x659c4795 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6cf72eb0 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7b6a6ecf bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa9d37190 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb2e48894 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc6ba8df6 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x5c26e710 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x12fb5b0f usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x17c20a93 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x26b341ee usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x48eb073b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x298127fd cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x41b5b1bb cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x45c03ae3 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5940ec27 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x697a5342 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8b9148e9 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd0c2354b cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd4b7ec34 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xea4f3ceb cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3cdedc66 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x90d8e242 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xab9a7812 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc1d42b85 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc354127a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd2bea1fb generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c2657dc usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f231951 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x267e096b usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3919a13f usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3fb83ccb usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x428c1242 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4fb9fd9c usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54f60f92 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5882d33e usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d157294 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x651445c5 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6bcce9de usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6c668209 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87238405 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88e31f97 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ac4c60b usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9304b7a0 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9ab41f19 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa173fa86 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5e1324e usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc208c291 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc2ac5350 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc684b931 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb03c272 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd1c2ee20 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed947742 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1aa5bb3 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf211a213 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf44f4d03 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf6a9807c usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfd275f23 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfebc7a14 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4f4a86d6 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x81b6d331 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x13878b59 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1548728e i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x21e23d96 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x27b660bd i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a627d86 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x49bef0cb i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x67bc10d6 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x67bdcae5 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9e2bb21d i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaacb21cf i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb487301 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbd2d7a06 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc321011f i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd0c2148 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf390c507 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfe573bd6 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x35c22606 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x541bcb3d cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x966c7627 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb0649ff4 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x99c021c3 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x04c2c42b il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6930f1c8 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x883a1306 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9687cc22 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbdfed947 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x01319fd0 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0e21b4f1 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x216d960a iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x248c540f iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34dbd91c iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35040e29 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47e5051f iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4b200d49 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x56845365 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x58e73efc iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6150cd09 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6e73486c iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7ab0e0f7 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7dde5b58 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7fbbf8f8 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x863a319d iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c54bc57 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8da16094 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x955ac118 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa3bea44f iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbe5622f0 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc7f0df06 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcb46618d iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcdbc3fa6 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd2daeab2 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xde8e4331 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdfe27032 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe454d9b5 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe48f4e61 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xea8b52e6 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf7edf2cf iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0ffd6b37 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1479c573 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17f95859 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x18e36a8d lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1b6cbf0b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x35ac1d80 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x379490fc lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x53ecb870 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x65cf83e8 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e8b8fc8 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7302f4a0 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x929317c9 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb077e6b9 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc688d13d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe4289d76 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xec40200d lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x20754991 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x369b397f __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x796b2d45 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x93d30bac lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x973d90f8 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9ce7804e lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbab65e25 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf7d889d7 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0e69c51c mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1bab7b24 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2d1ede30 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31a9d968 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x47836025 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x583de84c mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6cf4aa25 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6d942072 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x79c6964d mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7c702974 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7f0ba07b mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8888f792 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa173c979 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa3c1a612 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc1b7653f mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc2082b9c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcb32f4bc mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd089e965 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xde477a85 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x01589d75 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2a76b190 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x35ac878f p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7d8393ae p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x919dd60c p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa83bd946 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb4896234 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xef36bb22 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf497cd86 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0b78b3cf dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4e309811 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5ff2ad57 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6c4b42ab dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1074f6ad rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1196c569 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1789f9db rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x24d2aa19 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x35155e17 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x38cae6d9 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x464355ff rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x55105f64 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x554df703 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5f6ffc36 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5f92b73c rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x70042de5 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7cc32f71 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x859b28ae rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x87e5f569 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbdf79c70 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbf08aa46 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbfdaef6c rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcb680284 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xce16833b rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd0dcb7ef rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd53d0c7a rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd6efe39f rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdf67ad24 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xee4d4933 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfc3d83d0 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfe9ce947 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x01ccddbd rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x13390bd3 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2f31ee17 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x37f1b7ea rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a3c3b64 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3e57aae2 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x56f205c3 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5c08f552 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6f3d3525 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8c61d2a0 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9ed0e84d rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa50b62cc rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa78760a8 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc21def53 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc799eaa6 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xde65c01c rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe7872d8c rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xffaa89e3 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x1cd25893 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2ea26801 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x3fd61c91 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xfb4ef429 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00064539 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0072a3b1 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08002dfa rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x095fccc8 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cc8449d rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0d207cb6 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0fb7f01d rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x128c06f9 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x182aa870 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e67f237 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1fabdc12 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20a494b6 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x26a47bef rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x30d28311 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3913fc5f rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d859430 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x428307c1 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x43111a3a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x43622ed9 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x44dddd94 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5652698d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56891237 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x616235df rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ffa18a7 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7d9abf47 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87fde797 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b0e0a49 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8dfc3ac0 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9299388a rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9463e708 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa197a6ab rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa3779908 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad0b11d5 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb49d7b4e rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8723be7 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc067c06b rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd0acaef4 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2dae705 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x00db9676 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2555ec24 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x28dcc3a5 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2ac38aea rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x44d6c558 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5e0e14bc rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5f060cab rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ccbae21 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa2dfb032 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaa0caa78 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xac1395cb rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb449d281 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc7a5c181 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b1ec937 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0eed907f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ef38923 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f7017c1 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1425fb4b rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1cc13a3d rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x20d06800 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x21c8238a rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2268b3f3 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x27318683 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2d55102e rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4246a7ef rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45fac4de rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x47d66181 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50d67146 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x607691e9 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c120f5e rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d6332f2 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x747f2259 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x811812ea rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x81650530 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82a51f54 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8328fb21 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x84abb8c7 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x85ed3882 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92688cd1 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95c1f8a2 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96ecd4e3 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d09c025 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2a9f889 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa79433a8 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9803241 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb086aa68 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb66d607b rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd7534bb rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe33ebe3d rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe511214f rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe6e815ae rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe98a2916 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeadecfaa rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed0dba05 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef78dda5 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4d20913 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6a714ff rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf85edfaf rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfaa3ff4b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x066a7671 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x422d8cb8 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7c29ee9b rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x97fce386 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x9a9681a6 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x172de9b1 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x25a80e9e rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x45f6bb22 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb94a0788 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x03ceb471 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x146f6011 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x21da7ece rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2792b629 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3102d123 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4138b740 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x54aa4fdf rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5597c802 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x640eb68f rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x76264419 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8e6b3e1a rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb84c7862 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe1c540ad rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xea2ca94c rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xef20ddd9 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfdd92d70 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1c3f3638 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3571136c wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7af0a4c1 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07923fbe wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x146cd056 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19a9529c wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ee6b7a9 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x204041b8 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x28b3f3f2 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e8ebf96 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x383a29b7 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f3ca2ab wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x51c562be wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52701fd6 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x56097d1e wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x58bf44ee wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5dd6367b wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e2c2535 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x640f9123 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6439ed5f wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c3179ca wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6fc82215 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73bcd2c5 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77043052 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77280ccc wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7cc95506 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8aca9243 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x97eea2c6 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa68ac777 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaab00e41 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaef6a2f7 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xafb5fafb wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb52644e6 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb6123086 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb66da59e wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbaad3a87 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc1feed76 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc4a31ce0 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccdf0b6a wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdbed9b6f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe30e90dc wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe34daf99 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe723520f wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf494be12 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf90c1de3 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc21d7f8 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff78f1ed wlcore_remove +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x10eeb99d nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb9a40b2c nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc0d2dd71 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc6d95589 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2e7ae0bd st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x56fd3c99 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x610908c6 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xba972d97 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd955289f st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdd887a5c st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf62bce0d st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfe7f85b9 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1d650332 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa6ff46b3 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xe4e6deeb ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x0947871d nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x13052703 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x2b3303fc devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x9e60dbc3 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xab86a201 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe63ea3e5 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a48406 of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xfc638584 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x0c3f7bba ufs_qcom_phy_start_serdes +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x39916c5f ufs_qcom_phy_calibrate_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x4ce028dc ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x4d4dfbd5 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x51a2ffde ufs_qcom_phy_disable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5c0b221f ufs_qcom_phy_enable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x6f5da719 ufs_qcom_phy_enable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x717a209d ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x79c8fa9c ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x89cb4d9d ufs_qcom_phy_disable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x90cfe0d4 ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x9e96785c get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x9f6cb7c2 ufs_qcom_phy_is_pcs_ready +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x9fb15fa9 ufs_qcom_phy_disable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xa882fa76 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb5321a66 ufs_qcom_phy_enable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb84195fb ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xc7c661b7 ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xe52c331d ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xe88fc7e6 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x172f7426 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x69f30bb9 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcea3122a pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x2ef767bc mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc715e4cb mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc8127809 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xcd386897 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe69922df mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x44fb022c wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x507efd78 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x51c150fd wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5c9f980d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa43fd450 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdba50227 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x4de8d36d wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x00f03714 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x095e77af cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x099f74b3 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x10f629f7 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x123ea6ef cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16b78975 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16db8d13 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x185ff392 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1b3a8090 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ed4ff41 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f595fc6 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22f5c74d cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2491516d cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2530b32b cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28558f9c cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b94278f cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f0969bb cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f867868 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35b30846 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35c82b66 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x364350eb cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b5dc08c cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3da86841 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52c8c9f1 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e075efd cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64225fdf cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b8c54c3 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e6a8b04 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80fe31a1 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x812e810f cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91ce8862 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9c1b62b4 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6bac405 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb082cd79 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb11569be cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4c762dd cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba8f27d5 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd05b828 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc2cee744 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3663580 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc4517734 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf5e493f cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd0534184 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4ca65b5 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb1b0c49 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffbee6d7 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0b0ca030 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0c145d49 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1797e5c7 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3b89495c fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3f27be1b fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x46c02e57 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x699ff644 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6d53bb4f fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7d11b6b7 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x885b55c6 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9fdd4e2d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb0db21aa fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbcb7f101 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd691102a fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe590a716 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf19f57de fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x13a77b0e iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x5244acd1 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x68165a00 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8df4b3c8 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa9837c17 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe0c2c16f iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08c55e4b iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09e2b4bf iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0f1f432f iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x19c50e87 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2170e7e5 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x241cdf12 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2491ddf5 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27a3d09e __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3340101e iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3cb245ac iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3cdc67f7 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ede7062 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x408b960b iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x483cf24b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b636a22 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c2e2987 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c57a518 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x673c821c iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6856948e iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a40a127 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f6b771a iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f916a4b iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7156bf87 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c480d7d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8606e468 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d487720 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa40145e4 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa55c03e0 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa3001fe __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3333b9c iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb84b4952 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcf9cc25 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2c06c8d iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5e32274 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd81b4399 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd828fed8 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda979b37 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdc24beee iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe15fa2d3 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe70342e1 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf19a88ee iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf6a524e3 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1848b36a iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x19b87f78 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x447cf5b1 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x498998b1 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x52cfd035 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69e64718 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7b263ca3 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9082e680 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9bad02bf iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa99b38bb iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb28e2403 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcaa88a86 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcc509625 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd88d8b1d iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe26166dd iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe604b8b0 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfdc05c5f iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x09a12e30 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0b9e7120 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x25f9327e sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4e3087d3 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x554ece75 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x58dfe747 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f4c4943 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x96e99e00 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x98bdd699 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3e943de sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb212d0a3 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb40cf947 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb5b8d665 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc0b4a6e3 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc8675af5 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc8b5404b sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd00b3713 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd390bb3c sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd57eeb18 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7946df3 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf89ea8c5 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfabd45a5 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfcba88fc sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfddfac54 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0156ef69 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e2fa32b iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x171aba0f iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17e84455 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29632481 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2d2b9bc8 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x323663b5 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a38455f iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x409e0d09 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x43bb48de iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4508bc9e iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49fd770d iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55b71348 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x562423f4 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58739e3b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69ea7c0f iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e85cf01 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x724462dd iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75c09ec8 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ca0d35f iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b103dac iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cdce17f iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d2f0305 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8eed472c iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9121d0e6 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa7c51f86 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa112ee8 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb862adb9 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb21d18b iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfc8b359 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc03c981b iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc086fc47 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xceea9147 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd438b7ad iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd5b65d05 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2088d44 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5ee86ea iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf7b10cf0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf85e3944 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc7f3130 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x071b5a50 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4c5a1fd7 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x655db21d sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa38b1d5b sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x7bf90c06 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0493ecf5 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2ea93a0a srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x32f834fb srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x72f544c4 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x83f9a7a4 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x973e1931 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x1e8629ac ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x30e38a83 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x66fe7670 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6f752152 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa0873661 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc5436a05 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfaac61c0 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x23c7c443 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x354a1e49 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x64e7823c ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8424e6f8 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8695958e ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xb40d04ae ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe6e84596 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x59490f86 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x61a07c4c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x94791ea7 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xab106a8f spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea3e8138 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x22eac2ad dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd82ce4ef dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xda95b510 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xefd079db dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x037850f7 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x09524e77 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0aceaa10 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3509fc24 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x37b3a5c0 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4e6ef5b4 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5f890f14 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6250e3e0 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6dee09aa spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7a58c468 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x81af743e spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8cf7cd3e spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9621e19d spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9c3c8ecf spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa9e14d70 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb4c359c8 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe34c4779 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfd721fd7 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xbfebfa72 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x017cec59 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b482ef5 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14dd700d __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f5d9387 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26784db7 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d7f18f1 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3331c28f comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35e0a822 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3974b1cc comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47916a67 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4a9db4a5 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4adf1f54 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x549513f6 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57c12de8 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5854f165 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e232754 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60c4b1c8 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x63b0c1bc comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7d09be5a comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7fe2f5cd comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x84cfa246 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ab5ba78 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9400c740 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x99fe034a comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9ed1f0e4 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xad0eaf6b comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf3a01bc comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb39045ba comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0359830 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1c7a199 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec60b94c comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf28ba911 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf7d37e69 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfa90db2e comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb99b690 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x109e04d1 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4ae5000f comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x683b7d21 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x7157a8d5 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x720589c6 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x947a24c2 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb9816dfd comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfdcd6920 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2b09a293 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x532420bb comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xca5d79d0 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd61c363e comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd93088e9 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf417cbf9 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x059ef90f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7c86aea9 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xcbc3038f amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x89b1b494 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x007690a8 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0c576441 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0cac0fbb comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0f959952 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1b2ee9ae comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3e4a5f70 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9cfc3912 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa9572aed comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xace0ef3f comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb5a5bf9 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf66c303b comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf91840d3 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfa7db3c8 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x1bbaf536 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xa83d6517 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xcf17764a subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xb3ba1b2f das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x038e16f1 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x14369113 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x17e1789f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1bd04e94 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x267cbbe8 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2d201734 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2fb0f6f0 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x340dd38b mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3b6500bc mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4bcadbdf mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4fc5212f mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6d238dd1 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x74160e19 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8677b6d0 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8799fc8c mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x985d9c60 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa2ece865 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb169a52c mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc6ca2f2f mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcf938ad1 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe9cf8f12 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x1eed9e24 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xf6aa08ad labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1397860d ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x27d4f2a2 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4a84538e ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4e59d740 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x54fcd0ac ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xaa8efc81 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb087db16 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdd500495 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3340833b ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4cb8e35f ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7700798b ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8fbf9bb9 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x96c690a2 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xecfb739f ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x246f1aac comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x42e4b583 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x51b98284 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5340e11f comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x62e339d5 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb46d7af1 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xca68ddb3 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1c0cc58f dprc_scan_objects +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x278f9b94 fsl_mc_io_set_dpmcp +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x2a2564be fsl_mc_resource_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x316659cf fsl_mc_device_remove +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x31b9c152 fsl_mc_bus_type +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x3a6a9cdf fsl_mc_portal_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x3c944460 __fsl_mc_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x441e17ce fsl_mc_resource_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x4569694f fsl_mc_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x4ed9ad43 fsl_mc_portal_reset +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x62bd76b4 fsl_mc_object_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x6d48e82f fsl_mc_bus_exists +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x92797a07 fsl_mc_object_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x98ec51e9 fsl_create_mc_io +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xa5d67ee1 fsl_mc_portal_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xdff88ea9 fsl_mc_io_unset_dpmcp +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xe16480a8 dprc_scan_container +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xed2e436b fsl_mc_device_add +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xfc3cf497 fsl_destroy_mc_io +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xf160d710 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x05660aec most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x28e1ab16 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x405ef4e1 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x458b6b8d channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x65abe5e6 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x781ef15e most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x78639dd4 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x85af5320 most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x8d91668d most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x8f557ab3 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa886791d most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xdc8e84d8 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x03768ca8 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x161c0eda synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1b8405aa speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4a343395 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x56355aa9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f4da4ec spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8079cca0 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa85d28a8 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbd001b46 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd0a885a8 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf34f0f09 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfff111cc spk_var_store +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x11463537 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7c825d9f uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xefc403c9 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xcbfa3f57 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfa83191a usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x29378b7b ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf2b6b988 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa4ab2f91 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xcf952ecd imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd52d37d6 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x159cfe2d ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x32893e05 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb0cffb0d ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc261941b ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe31ab1f9 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf98f5682 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1a5b8b41 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x276c4957 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4f633d5e gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8343e2af gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x86941981 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x980e77c3 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9c3d7149 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa671e2fa gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb9afba52 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbea40809 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbf2e3539 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc0df30ac gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc1f3f966 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc5be2b91 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdfed7f97 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x12b8c45b gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x48bfb57f gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xbd40a09e ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xbeea6fb1 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xe1689a93 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x021c7a60 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1e4f9229 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x29256c3e fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x36ff558e fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x44696f7d fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5921049b fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x625ad887 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x671a0392 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x824acf4f fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9d806456 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xae943dbb fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xaf69a29c fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbd783323 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcb7a12ae fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdcd92260 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x02ff34b2 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0cb92cc2 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0e56b0dd rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2e40a8fd rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x44b645e0 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x65224a06 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6ed6464b rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6fab69c6 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x80323477 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa284efd9 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xadbc7198 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xca4dacf1 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc3114f3 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe4a5f78f rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf7df1e1c rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0dec62a3 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x13c6132c usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x15fdd13c usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1b8ed7eb usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2501dc83 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x32cd44e9 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x335cb505 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3673d5a9 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3c72e72a usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x422a5058 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51bd163a usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x589e8814 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58f01bdd usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5b09625f usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x619c28a0 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x65ea6007 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6c73839b usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7e1488b6 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8040470d usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82d80167 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8c294353 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9257fd84 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x99b857fa usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa8f169d usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb5b46ee1 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2004d50 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7661793 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd4394dd1 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc17f1af usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc8169bd usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x22e6ed8c usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x26b652af usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3a8fd6f6 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ce6aad8 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x503aa86f usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x53be0bc1 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5b79272c gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7d5bf1a1 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9b266cea usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9b9eb94d usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbdc2a86a usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xec2128ed usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfbbfb4d9 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x348f995f ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8ee9e592 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x64caca14 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9a461015 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa29bd65a usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa7853425 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb2386adc usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xce156a18 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd6bc26c7 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdcead024 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf1a76176 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xd0dd0ac6 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x79b711d0 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x37beb09f usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1ab351e0 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1be3fd4d usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2fc3de82 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c61e375 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5949fdc7 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x608bb044 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x76dfdbfd usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7f22a5f9 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8113f727 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8e201427 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8f5afee7 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9ddf3f94 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa69657d5 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbc255471 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd193a937 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xde823591 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe358d92d usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xedd259eb usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf161dd58 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf5eb8cdc usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf805748b usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06b20c2e usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x07176dae usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24294398 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x266cfce9 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b51af46 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x48ae1aa0 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x52ec201c usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x563e8fc2 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5842cb1a usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58d13707 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5a85b39e fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x79f2a954 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9331e942 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa8735d6a usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb36ff4d0 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb65aaed2 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb8aeb83 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbccca3a8 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc21d8f97 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc936f8cc usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc697da1 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcea384fa usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd74f9664 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf8933774 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x059d733d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x29921053 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5753dd7a usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x580526ea usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x70995d1b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x757ea754 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x76874e80 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb38bdc90 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb554c79d usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc3c17ab4 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd48f12bf usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe79f219d usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x10a72c0f rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3d407fec __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b3e7170 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x58e3ac8f wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x67d66f9d wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x77fa17ff wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xac2e0b70 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0dc3c87d wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2675b00d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x27299898 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x545d075b wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x565ec809 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5d9a9566 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7e6b6dee wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9162a87c wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa6dfe7d2 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa9f48910 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc0e99293 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc56c9c37 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe76631c7 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xedee9ad2 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x35d4dec8 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x7f87f195 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd9ffac2f i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0ea01dad umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0ff64751 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x13b9ab46 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4d80f454 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x714398e1 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8c1992c1 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa076979f umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe925df62 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12dc9168 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x14cee60b uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19353513 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19b5a0d5 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x280a46eb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a285a7c uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b57f498 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x302ee17c uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3bcfca69 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x40119c82 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4296947d uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x42b8ae17 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x58d9fd63 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a5ca2c0 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5bb45f87 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x61211889 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d491dde uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71eea97e uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x788f5fbd __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x806a022d uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ba25ad5 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x90d8f1a1 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98099347 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa79534ea uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb79df10a uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba7f197f uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1b7c4e2 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc4556ddf uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd37be741 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd5baab42 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9057f31 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde21aaaf uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe2e2f856 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe32269f3 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1283cc7 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1efb106 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd40d4e6 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x32a56f1a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x496c46ec __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x58facdc8 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x6678704e vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x9f42c1a2 vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x38ecebb1 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4ade46d2 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa387c93d vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa8eb3886 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xce287526 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe294a61d vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x0b1a182c vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x93f23ebb vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x03571c9a vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x12749781 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1388197f vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e52f6f9 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2fda8d93 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x338cec21 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x372fd38a vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x438fe2d8 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x50ba1d73 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x584739ff vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58c7a264 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5a37dcf0 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6743e473 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x72c6960c vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b5c993e vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b6ba841 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b704c7c vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8cb4bb37 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9583d1fe vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x963afc30 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f7e288a vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa241bfb6 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb71152f7 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb796bd08 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb87be3a5 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc6ff04d3 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe1578912 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe7be87b9 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf7620dc7 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd397816 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1f4b576f ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5434cb96 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x72867661 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x99691e28 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa37e4522 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbe46076e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc5b7c3fe ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x02812fc7 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x36d3bfbc auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4d478477 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x857043eb auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9207a18d auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x997515fc auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xaa328335 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbc5ca4ee auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc2c5d1bd auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xdcb0734c auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x673116a4 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x192a4247 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xa0c7557c fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x174fee16 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x9edf813e sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x21891c5a w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2da6d120 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x485a75fb w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x74356b11 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb00933a6 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb33579a3 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xea1d4fc6 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf5b440f1 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf74f5477 w1_read_8 +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x8d635abf xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8d86290a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8da258a6 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcb80c1bc dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x03956980 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1eaceb8f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x55f5fe71 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x823d8f58 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8fd17623 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb6f9dddd lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeaef4a2a nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0083886c nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x038d81b1 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04359d1c nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x062ad07b nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x077883c3 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x089461df nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0da0a856 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e08288a nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x111006b0 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11d193ea nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1234cf64 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14494685 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15c8602e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16299b3f nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x197aa34e nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x198c161c register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1da67d5d nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x235b6e59 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2968e315 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a810e9e nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b047fea nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b9b3afb nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d28c4f1 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36451e61 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39be2a9c nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a4ef906 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3af82bde nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f5a599a nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x408cff34 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40e45f70 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41e56b61 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42c098d7 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43d19100 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44781c5c nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4509ff51 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4676de6b nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46a72b12 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b4fd870 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d48b02c nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fcc4580 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x541b660f nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5693bbc8 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a3e4325 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bd94f96 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dd293f8 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x600249bc nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x609e9680 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62c6eeba nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x637ee193 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6559a9d1 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6592c651 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67eb9379 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e34bc30 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e9797fd nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x703c5abe nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x718a2396 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7363dc24 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x783bde4f nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7cb62312 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f839b38 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82e35a96 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8387bed8 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x840eefac nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87c9928d nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e548b78 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e9074d9 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90d300d4 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9180a070 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92be9d69 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99da9bc5 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c66e53e nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d14111f nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1e61d29 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3688c58 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6ac5826 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6caf1f8 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7fff5c8 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab06ffe1 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac77daf0 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaccac1be nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad9d590c nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaebfa325 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaef1e5a3 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb31f18b0 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3b5ebfd nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7480119 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7c45f3e nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba7b5d75 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba8de935 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb29ffd5 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc78705a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe9a7d77 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc03611bb nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2573dd7 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc438b805 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc651ab15 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8aa1a7c nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca4d7342 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcabe95b7 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcacd120b nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc6c1ab3 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccaf913f nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcea729c7 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1cdea99 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2c45d8c nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3bce897 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd660731c nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd668a845 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8fcec1e nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda0518ad nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb998300 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdeb22576 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe287d7e2 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe889ee90 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb88d84f nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0fb0723 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1eb0ea5 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf266debc nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf789d0cd nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf80c10c0 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbea9cd1 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd46c41f nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdec3e6e nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x68fc2039 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04764d85 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x055f1a67 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x05d21a39 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b5aae1b pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c86f7bd pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bf5f10 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11c6cc0a pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1434c53e pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c03d031 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x237c8e8d pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x29e94375 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e8f06d1 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2eb9a1da pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30938be0 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31e213b3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x35034be3 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x379ce2a8 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x401453cb pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x41ddb627 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x44a4616b nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x452bd95f pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x495fed38 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ddb871a pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x528187c1 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x544146a6 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x545a2dc8 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ab1c6cf pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5cb14fc0 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x66b41ddd pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69b973ee nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e6e0e3e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e8a39ef nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71b6aa41 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f5a505b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x86736896 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a23d2f8 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8abbdcd4 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93a8a1d6 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95e6f18f nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99c7acc7 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9afd8f01 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac66ab4b pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbddbe661 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0699d18 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9db40a5 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0813f36 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf6097ed pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdfae88a2 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1312235 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1c450df nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe3acb22a nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9b08128 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xec77d6f6 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeff276d6 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4c3aa53 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf54400b6 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfab5f3b2 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfafc4daf nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0251cfbf locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xac8dd1d3 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb4df84b5 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5386b0df nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf80098f6 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11e10ea4 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1eea663d o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x262dea83 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x78de4302 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb1eaed79 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd709d0bc o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdcb1bac2 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1f93c052 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x313848b3 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x44457d6d dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6d6dcd11 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe1d979f6 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf80488fb dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x01c361ea ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x427e96f7 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xea8097d3 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL kernel/torture 0x0b042344 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x38be78b2 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6911c137 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x65a5a335 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x74463c8f notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x39dcb597 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x4229750c lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x6e20430a garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x83dbce7c garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x97398022 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xab9d6948 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xd18277b2 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xfe9a1715 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x000c4437 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x099a0356 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x103b7e10 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x801bd35c mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x8197a50a mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xfd29664b mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x766afdb2 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xd3610ad4 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x70c860ae p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xb3ba6a6d p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xfa5d2546 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x07bf0306 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1267cd30 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x591cc6e9 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x78b7d7a6 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7e5f47f1 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x93d987b6 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd853fe53 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xea72e5cc l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0e457389 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x20187e7b br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x210edeb0 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4bdc7cda br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa15dc79e br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa68a09aa br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xac547c26 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf88e1fc6 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x86a37f4b nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xf286c9a9 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03fdacb0 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x044a2019 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x227b8113 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2a2baef8 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c8d13c7 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ce091fb dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x32ea2992 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e4afee3 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4435856e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4bf6d755 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x52b8c007 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5390de38 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x562f996a dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a784ff1 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x609abaa7 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x63a4a16e compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64e8ebe0 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6e2724ba dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7d50ebe4 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x819965f5 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8bdd0817 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90609501 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90980682 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa0476a77 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1519f22 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8c68571 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf2f0880 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc248f3b6 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc296e70a dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd27a7a33 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6932f7b dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9e0d990 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe165c74c dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3786cc8 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0651513 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xff1a0def dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x14020a35 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1a917f6c dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x36dfb338 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5abda1a8 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5f847061 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9cdf9818 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0533ab80 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1c460e3e ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5c7ceb47 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xe62343f6 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1d1f0f2f gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x30f2b7b9 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x09f8da78 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0f390d1e inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x23488107 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3a18fbcc inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x864462e6 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd1eb258c inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x157dcb86 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1960ead7 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x20126f45 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3737e01b ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3d5faaed ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5972d616 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5eb91374 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x628a9305 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x95376ecc ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9a92d895 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9c9c4f80 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa8d878f9 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xafe6ed44 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb4a3a99c ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfbcf4158 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x314ee8a8 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xfc94e58a ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x63464c06 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0958444d nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x63da170d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb401e6f1 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc20eee1d nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xd59c239b nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x72b1eaa9 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x45993dc4 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4dea4450 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x575d19d8 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xade7c8a5 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xbb1363a2 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x0031134a nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x48ada077 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xca75ed72 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd62d8298 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd8144705 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe904d940 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x39cd3c8b udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x55857234 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xaa47b68c setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb6514281 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x03b2e4ab ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x26893064 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6597a57a ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x70d71649 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8dd24249 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa82de9e6 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf18cab5f ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x32d7976f udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xd1953d22 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x90e25279 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x07d04fe9 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xedbebb29 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x23bc5bee nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x022290aa nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x258afe7b nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2dbf40b0 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x402b2750 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa9b5b584 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x22da9bc0 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x61be7cf8 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7129f5f6 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xaa9c26ef nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xbe314aa0 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf286f3eb nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xa3dde534 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x32848ab4 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x39ccd4a4 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4dda56a1 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x58faaf5f __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5e4622f3 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x733be775 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x77169cf3 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x909eaa52 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa0165c88 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa9e56f20 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc087f10f l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc5dfe1b4 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd1dc1c48 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd891554e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xddfcafde l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfdd41af2 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x00468c06 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x152135b0 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1711d358 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2f0a6cde ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33966a6b ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x35ccb478 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x42efb592 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4e5b4034 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x578d3668 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x71784532 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae40c9cb ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd81b89d8 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe1782584 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe6657b3a wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xeb9258e9 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf493a073 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x21894e13 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x48c78ff8 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x8fd998f6 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xd185ae02 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0e83612e ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x15669f04 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22a50b6d ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2c96f42a ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x54f8dd5c ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x68f96706 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x73559b46 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x85be57de ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x87be85ad ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x99b10d8c ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa7fa2a88 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd5f2e10 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf1ce0e61 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf554c8f4 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfdb637d5 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff72e1af ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5552fbdc register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8ae6a280 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xadae3aea ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc4e117fb unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x002ab180 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x021ea863 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x042f8df6 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0569ade9 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x063bf00e nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16e2c385 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17c6a9b2 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f109304 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2234dd29 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x244fb6d8 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2452db6b nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x245f76a2 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2552d551 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27ae35b7 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x291bf97f nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32b113b9 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34d4d3d2 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bc6bce3 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x407013f5 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4640536d nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4693704d nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x483a3f40 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b74ab22 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d7969b1 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e802ac0 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f96bd6d nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5403f1c0 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x585ef5fa nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ad801d4 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e1e50a3 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64e513e9 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x677f412a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x689fd9f6 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6bbf20a9 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c283221 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6db9f535 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74a512cf nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79928ba1 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85e2283b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8762a2c6 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e3e4e14 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9127b5d0 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x987c74bd nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x990775be nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x996ca2ee nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9994dfdb nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a2ce272 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9cf91310 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d7650b7 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0768289 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa64ec3d1 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa97c6441 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa0bf0c3 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabcb1ed2 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabddd137 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xacca0344 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xacd89497 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8299514 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb89015c9 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbce47018 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0270d17 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3a6dad9 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdf48308 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdfb1f49 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd25a78a2 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc4c02b2 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe555a258 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6be6331 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea8aacd4 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee7eb38c nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeeb0043a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3bd9fe3 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4ddcf9e nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf74cbdf3 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7a26da8 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc61a87b nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe64e28d nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff80c6f4 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffab7460 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffd5f739 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x4e240a7d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xbcfc927a nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x10bc7104 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x35efc12c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x47b9101f nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x49f40ef1 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4c9cfffc set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7304a3fa nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x75c08c7d nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcee406c8 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd261e885 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd86788a4 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf6ec56c4 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x4bd9f452 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x32a07b8b nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x347fa054 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8386a047 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb511b26b nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x5e860442 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x6b188759 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1102b1c7 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2a73119e ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x32dda51e ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6c77a41e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x87378638 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8c8bb0b8 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbab5618e ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xbbe5f0df nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xd9e5f313 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x09027182 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9e0be92b nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd5540e03 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf1ace5d9 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3858c0a4 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4976b4bd nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x54a67891 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x573a1666 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6d91e210 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x808926bd nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8233b6fb nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd07b4a52 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfc3c5176 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x591925d9 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x834ad5f0 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x408cce95 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdfac338c synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0b88d9d3 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x18a28197 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f1c3f2a nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b5e955 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5077a5ce nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5cd7e5fd nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x650cf2c0 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6701e8c7 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x74ee1621 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8a68cd32 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8abb8ee4 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x93dcdccf nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdde8abb9 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdf257dd0 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe36d9424 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xee7fc097 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xeef1107c nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4b60f472 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x65de915e nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8d2ba314 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc3137666 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd5975684 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xeece531e nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfb852207 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x20403861 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xcd92fd5c nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xf9ae5298 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x63a53dd3 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x1630fcd4 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xbe7bfcdf nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xc81ea77c nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0682a0fd nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x300513f0 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x46088573 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x81f600f5 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x977e6e3a nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf3c5ed39 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2fac5811 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x4fe1bc82 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc4f4d55a nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x087d0884 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x32a0ff4d nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0e512792 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x181f4ce5 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x27407d25 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2ed56b52 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3aaa882c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x453a7305 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x49300a8f xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x58264be3 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x62d5755a xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6417b2ef xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6caa8523 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6f67e61a xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x81231f53 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c560b4a xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb1f9371a xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb4531439 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc4a0a731 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe054c275 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfac44028 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xe9ef9dd0 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf156a7fd xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x1e418b79 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x9704a874 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xa2e3c575 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1da7b97a nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x627954ba nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7d845b63 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3cf02926 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x54a4cbef ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8446f5f0 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x95d027b2 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x95fd294d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xabbbfed8 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xad72c431 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb8292df4 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xdb662d46 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x099e3769 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x1bc63631 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x21980ce9 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3168cec8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3b9958f9 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x52605aff rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x5c9eae00 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x5f18793c rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x74692596 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x827a577e rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x8f6cef3b rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x97431ca0 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x9d47fe9d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xa8922d44 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xb1cc2a59 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xb84d92a5 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb87c5d9d rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xbf0ec856 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcb2bcae2 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xdd674f0d rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xe42fa98d rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe6c5ed26 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xee46312a rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf427249c rds_recv_incoming +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5534ecb9 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x6a8fb8fc rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x559d715f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8b119e80 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb528a7df gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x010b5a24 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x027c3086 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03b0971b rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0530d566 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05538dfd svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05d9b68e svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065dcd22 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x066bc5f9 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07bf2ad7 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x088b8705 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09046d69 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ae0a44e rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c0cf6c7 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fd70faa rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x116d5673 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x137d752b rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14651ce9 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14ce8e76 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x157230b1 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x174918b5 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ffdc09 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x197afa59 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac5c0b7 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bdbb818 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cd6a753 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f5c4413 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f745316 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fe8c257 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x204b4f3b svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2057c01f xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24fcd1d8 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25684f4f svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25b70d42 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26182c9f rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x297598f0 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b47114d rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3031b484 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31035ca1 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35988026 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36a5e0c2 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36a92b61 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39698753 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39bc984f xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d60945e xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e008938 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eefa2cb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4e8a92 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40757b8f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x457b5499 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45a4ac06 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46a4dc19 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47815ec4 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ca2ef8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48c5001d xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48e541a9 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4af71914 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cb7a645 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50a7dfe6 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51517dae xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52f3404e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55cc12f9 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5660f5a5 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5672eba8 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5709f18a svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57987123 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5983a47e xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b8b1976 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e103cee svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e6be6e8 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64b215cb xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x654cc37b rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65925182 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65d9298b svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6739ae5d svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x676c1ea6 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b66e9f9 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dad4e9e xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f201f22 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f5ddea1 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f9c0f33 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71d4bdad rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x740a83d6 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74584259 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76b337ed sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76e60496 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77885c52 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ea83f8 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78416c1b xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78d2728a xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79ceb0d9 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b525a14 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c0e75e1 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cd94c02 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f192dd5 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f8fd69d cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82cc36a0 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85886015 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87c828cb rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8856c01d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88b1a2a6 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a70a5d5 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b072b56 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ca82a5e xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eadf352 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90f86aa1 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x914598a6 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92e056f0 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x944c3b50 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x967625d0 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9916071e svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cd8fc49 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9db09948 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ec5361b rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ed28fa9 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef1d37a rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1562132 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa622a212 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa64e819f rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa759976c xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7c418bf sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7d0425b xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa85450e7 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8bbb2e0 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9743904 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9c31d01 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa6bf016 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaabdcf23 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab7c4cb9 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabe120a6 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacba331e rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad04e1ba rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaeb42c1d rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf3ce1d6 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1269f92 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb13a0001 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb39abf2c rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4517e75 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb765ddb4 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9181c65 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba0ba855 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb19bb39 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc4fda7e sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcc0da44 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcdda4f3 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd7654eb xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe6c08a6 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbed6c8bb rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbef49920 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0cbf888 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc122f365 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc132fd56 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18d1c55 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc310cbf4 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc40588a3 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5e45bc8 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc774a4af rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7bd8f9d svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8964031 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc90114e5 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc949f30b rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaade0e2 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcadb6b5e xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb56b764 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccd806e2 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd3311c4 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xced730c5 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf65615a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4eedda3 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6bc2068 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd73a7db7 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd73be74d xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7a70836 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9e0492b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaf69c8a xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd5ebe6e rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe30e57b1 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe35997d0 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe43a747d rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5c2e314 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9379ab4 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea2f6a2b rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec3a251e xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef9c9ab8 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf263bbfc svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf33fb540 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3b49a59 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4cba738 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4db1bbd rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4e7a405 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf64f94ad svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6f5e7a4 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf87b3258 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcca940c rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcdabf9f xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd7ffd5f auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdd10b62 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfde99eea svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff0258a6 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff6bb472 rpc_net_ns +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x034b0b6b vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x040cf751 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1938b6e5 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2c346e17 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x31d4eb96 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x40142175 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x670335f0 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x69f262b4 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x796ed662 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8f379e26 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc683d1b8 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe27a206d vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe7c71d42 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2d53e714 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x37658843 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x45391976 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x506f84c5 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x61db9358 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9eaee7d1 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9fe61b43 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbc8436e7 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc47e5359 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc5de3685 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd19b54d9 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd92d20ad wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb3c7a98 wimax_msg_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x26783ba4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2931a3c6 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x33c327c8 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96526aa8 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9a8ab91c cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb793906a cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb9406ae3 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbe27e23f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc1a849a1 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcea39310 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd6178f32 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe72fb3ac cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf5f734d1 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4607b7d8 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x62c94a55 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7120aff9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb10a9aa5 ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x943c7451 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x77214bf8 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xa9379e84 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x07fbd508 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x20610bd1 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x390bda3d snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x4a5c0396 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x5711393e snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x690e0d46 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x98d5c73d snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1ab0c244 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x412abe5b snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x45da0117 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5ef0fe30 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8032cf64 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xba706a5e snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbfe6989a snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc1c44adc snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc30f8e9a snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2f3898a6 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3cca6954 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3d4dd3ec snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x72a17aa3 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x784a174d snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa3daa362 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa42690f9 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd36a05df snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd4883bd5 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe42f3efb snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfec0de8f snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x12a64b2c amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x53eac647 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x59d5dcf3 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8bac1c3d amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa09e85c2 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe7e3a778 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xed3ebebf amdtp_am824_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x015e7000 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x023ecec8 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08474ee6 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x171392d5 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x178d84a8 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c5bac7d snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23495eef snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23aa5195 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x29948b9b snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b8d76ba snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x318bcd85 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31a46f9c snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x349309f1 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37902855 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37abb3bd snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4083b553 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4167c073 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x420c5e6d snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x482c844c snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x48300c96 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4ca80ac8 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4f1e8d1b snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4f34354c snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x55352e26 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5bac4005 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f06b8d8 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f19fa1d snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61a0eb72 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61b864e8 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x66255d26 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67d84a36 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68fd87e3 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6aa2b245 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7424756e snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ab6dbf6 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f6e4b17 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x80b2ad61 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x80cc9475 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x879ad552 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88db2703 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x911b5416 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x913c6b62 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9375384b snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x976a5968 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97792005 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e74a620 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa05c58b0 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0947c9a snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa3efca32 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7e737a3 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa85e929d snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae556dae snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1afcd67 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba04ec74 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8c558a1 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca76cade snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcac9e835 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcb988ecb snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc066f4b hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcede0f4a snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd0aa6a30 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd432af9f snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd722ae83 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda877b4c snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdae9882e snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdddd04c1 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe83fa145 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec537be2 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf011f9fd snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9fc1f4e snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfef05fb6 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0899a038 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0c63bdbb snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1c6f1115 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4fda44ba snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x74d44cd3 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb6b243db snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x033b0f2c azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059ef247 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05da68d9 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07299d4c snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09f95569 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a6fd777 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b3e3975 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b746c74 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d61c770 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d9fa864 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x130a73b5 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x132a20b2 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x141479e3 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18c7b75e snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x198edf81 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1aec01a0 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c235bd4 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d555a3e snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f277b30 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20e7fad2 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x238e9f9e snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23cf6111 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x255e7060 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x260a5844 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bf44e9f snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c4239dc snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37e29339 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ad677b snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a406350 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d64f759 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x425251f0 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4714d477 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47ce0804 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49d89be4 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4db9b012 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x516a6d21 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51aed867 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52b6d2f6 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54d36191 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54fae10f snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x577f3b3a snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5934ceec snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a66ad8f snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a7c61d5 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fc5f0d2 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60973bb1 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60eca6ed snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61697a18 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6240051b snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62424b44 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x637627e6 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65160279 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x691e7e61 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a680ad9 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a99458c snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70290172 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7507bcb6 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c1a68e0 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c912a96 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8700dd47 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88431374 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x886298d0 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89724d60 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8add9725 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8be39fd3 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ca54eef azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dda0c3a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fb6f5b3 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9025b47e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91d7892a snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93f11d3f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96349ff4 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x966ce561 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96c789ee __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98ba21b3 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b0afc73 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bf3a45b snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c757c9e snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9dbaaed1 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e9775de snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa374dc3a snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa579ea99 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa69f417d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacc2c335 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb321aa1c snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb967e5ed snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9afdc9c snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbaf8cb8b snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbd306b7 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc7f89a3 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc812c47 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcde4ad6 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0e813f2 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0f36e95 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1e47e47 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc240a704 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3c0ce66 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4c72c4d snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc534daee snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc53d6d9d azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7f97fe2 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8223fa4 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc903af3e snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9d1f810 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca0b865e snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca5775b7 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb05dfe9 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc5958d6 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf389f8e snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd47a79ca snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5a6c286 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6707c64 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6a0b2ae snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd721e1d1 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb63a751 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde41af77 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfef9328 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdffd3811 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1a90df0 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe556d2d6 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe641e768 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec4b5b15 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2263c83 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf94202af azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x019adf6a snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0f7b0a54 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28f5b84e snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2e9a2569 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x564ce00e snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5ff5c552 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6b7dda60 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x83e9ab49 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8f207831 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb13949be snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbae8ed3d snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc0d17042 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc1d74a73 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc1fc7a50 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc3657900 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc59f8baa snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd85fc6cd snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe195f859 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xea72238e snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf50b73a9 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf7f7e695 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x722c6b02 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x9a028124 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x41cd75e5 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xcc345fce cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x09ed2bf6 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x26c59ac4 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x4aa9be97 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xb9e11b52 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xc9975a8a es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x68ee1403 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0c006133 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x109216ca pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xab2056af pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb0211c44 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x0bd5894d rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8f6a3655 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x47315d1a rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x8d584a9f rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x98efda4f rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xd658ccf9 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3528b196 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x35769e55 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x8f3b0ed5 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb1bea1a4 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xc99cf02a sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x61ca37f5 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x2299e0be ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x4c70a27f ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x6a43a457 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xdc6fd7db tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xdae7429a ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6136d8e0 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7f2e2c33 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7f573491 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb6b14859 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x67a207a1 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x814fd8ee wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x26da0565 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xec81fada fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x1810b4b2 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x233d9448 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x3480c479 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x8fda883c asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x560dca3f asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0143f1cf snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0149ed26 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0207e1b6 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03ba7458 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03d402f4 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x046dc6c8 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04ddc3d0 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04e0f199 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0645d637 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07be5787 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x092dbeeb snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e9db9bb snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11a9b004 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1522216d snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17d57b10 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aefd194 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dbda03e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e0fef7a snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x230d272c snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x239de469 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x241e8b17 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24a0be4d snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2661f933 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26c2f7da snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26ded901 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x287a5919 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a1cacbe snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c01f647 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c6e3781 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d9924fe snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e452497 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f24860e snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30cd157b snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x340fd3d0 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34c9d848 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x359f2e77 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3851d806 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d47d363 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d86bbdb snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e445c31 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f9927c2 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4028d1ed snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4051d0a6 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40cde1ad snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45139e7f snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49887b2c snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c863446 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c9176d8 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x512719da snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x515fd019 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53d4893a snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x563f6854 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e248b16 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e4345e4 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f09be61 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f6ea523 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61d99389 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61e10a5f snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62c9b84f snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64fa444a snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a5fa24f snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c28dbb6 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cdc8d78 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d837a78 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e9e6d9a snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70eab61f snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72c9deb6 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77de6845 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78885bfb snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796b04eb devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a135cbd snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ebd597b snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f478a3a snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x816b5f57 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81dfe088 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84b22ff5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x855faefa snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85be2122 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86155461 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e57fa08 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ef3b6bb snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90d204ef snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90fdb931 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9327d8c6 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9426f407 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96744e01 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9841aab3 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x995b4e33 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b2de6b0 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d45a0e4 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e52ec72 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2aa803e snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2f74446 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3f5c71e snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa521d192 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5229b56 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7ae0d99 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7c99d60 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa836e5aa snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabef986f devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad04d8bb snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae12a410 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2083615 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb497cbc1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5e42141 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb720daa2 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb77dce95 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb90a5e21 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbaec0b2d snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc241d40 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc00d103f snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1baebfa snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2195ae0 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2e09b5b snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc330de1c snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc386a0b3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4924a53 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6578685 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc66dc634 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb4a505c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdb4d449 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf8aa6d2 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd081e1bb soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd64f322d snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd77d0e6f snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd945e1f8 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda55a294 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaab5787 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac8f94f snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbda348f snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0bb69fd snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9352f4d snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea23d650 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeccbeb34 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef74eb78 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0073d39 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf138d784 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3ec07bd snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3f5ba04 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf420833a snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf641e346 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf68f20f1 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf70768d9 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf84d6283 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9d133ee snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa468161 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc2b34df snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe385247 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1528a9ac line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x18e5a989 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1fa2f4eb line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3d538060 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3df9f770 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4290b5c5 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5b9a0d8f line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5f8cfd54 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x725fc2c8 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x74d7e586 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7f8b2eb8 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x94b74f60 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb77887fd line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe23c8a5b line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4fa183b line6_read_serial_number +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x00092fdd ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x000d6928 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x001957c9 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x00295264 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00398c01 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x0053fd50 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0055d6be dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x0061d69e usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006a3dfa acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00bddfde ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x00ca846a sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00d83570 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x00daf683 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x00e7cf0e pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x00e803a2 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01109b9d sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0123a9b5 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x01268824 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x013648a3 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x013758d3 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x01620554 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x016714eb nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x016f555a bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x017db80a blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0189ca4b pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x019589ba __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x01a35487 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f63766 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x02293b53 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x0233a6e0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x023cbcae sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x023dbccc pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x02431ed1 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x0251ae1d virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x026d9e4c of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x02700e0d crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x02829ed1 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x02c6f7fe cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x02d55b90 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x02d5bf18 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x02ec3131 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x02f23578 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x031e3800 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x032120cc gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03275457 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x032fcf2c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0342e673 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x03477b9a thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x037e03ba inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0382d8aa regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0392fc8a of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x039da546 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03af6622 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x03b71255 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x03c3089a devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04041167 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x040bbba0 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x04196326 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x04339a26 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x043852c4 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x043b935f __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x04411be4 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x044b1d26 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049e2c0f crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04ae6933 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x04bb4090 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04ee7155 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x04fbc4d1 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0521692c led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x052ed6f7 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x05377422 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x05386bb2 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x053a71d9 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0556998b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x05573fd7 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x056db1e1 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x057db067 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0597b528 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x05aaf100 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x05cc7faf xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x05cc8e5f blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x05fbbe10 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x05fdc036 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0600eaa6 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x060e7be0 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x061d731f devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062d8766 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x06394cf6 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x064c2466 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0661c50d irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x06660135 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x06706fa5 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x0695ffac reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0698a651 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x06a102d2 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x06b30290 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x06c42860 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x06cb2961 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06d834ab relay_close +EXPORT_SYMBOL_GPL vmlinux 0x06ea0664 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x06f11c46 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x06f59977 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x0704f8d8 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x071281e3 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x071f0761 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x07233784 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x07252c45 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x073c2dbd platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x074bc16e led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x075bbc2c fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0772aa90 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x07740037 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x07af9476 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c86807 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07d57b2a ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x07d743d1 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x07eef459 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x07f17344 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x08049cea sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0807a90e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0809a5cb pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x08115614 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0836140a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x08443b2a gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x084c073b sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x08500300 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08e98651 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x08e99897 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x090382f5 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x091aac44 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x091d8239 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092558f0 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x096b6eb8 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x097c2120 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x097dde1b bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x09babaac usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x09eac012 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x09eb0bd6 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0a05a108 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0a3e4bac bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x0a4821ba extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0a6bac5d virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x0a7d3ec6 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x0a8c3f8f devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0aa029d4 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x0aa8000a phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x0aa9d17d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x0aad90f1 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x0abdae7c anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x0adb87bc inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x0ae43ab4 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x0ae94a31 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1348a6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b72f7cd fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x0b8860d6 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x0bb556c0 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x0bc17646 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0be13fff smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0bed1988 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c386076 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0c501476 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0c59dc5b device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0c5bd605 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c821e25 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x0c8a5fe6 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x0cb3fe0f pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0cbc8adc rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cca0dd7 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0ce1540e __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x0ce63ba7 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x0ce7ba03 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x0cef4d3c dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0d0d684d dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x0d2a9c75 of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x0d3c362c l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x0d43651a gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d66e73b dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x0d6af677 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8d64a8 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x0da0ec77 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e060543 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0e0f8cad sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0e10bdea regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0e1e7ffe pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x0e25d99c class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0e2ccb97 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0e382f89 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x0e3f9e1c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x0e52e83c led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x0e575c1a tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0e750a93 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0ea2bf81 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0eedd6b5 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x0ef08d92 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0ef96c6a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x0f012044 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0f03d156 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x0f04a2ee bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x0f09bb25 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0f1e2ee6 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x0f2e97be max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f343b2c spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x0f6031aa invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x0f68eb1b posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa73128 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0faad2f5 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0fc92034 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x0fd6f7de device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0fe03503 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x0fe271a3 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10390c6e pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x10487cc7 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1052f998 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x10535d81 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x109496c6 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1094bcb3 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x10aa76a0 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x10bcdc74 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x10df29ce devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f3bee5 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x110eec2f acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x111743bb ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x11382578 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x1171d4c0 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117d830c pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x117f40fa usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x119d7a59 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x11a6e873 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x11ac49c2 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x11ac5e64 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11e4be25 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x11e9d98f device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x11f9efef device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x11fabfb4 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x120ca55a xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122af3d5 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1253f9f4 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x12590e33 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127c8181 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x12972d08 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x12996cac ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x12b17889 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x12bb7871 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x12e342ec skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x12e5f457 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x12eb2266 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x130a11c7 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131038e4 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x1311db2b netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x1316e014 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131e1e11 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x134affd2 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x134ba409 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13874483 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x139dce83 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x13a1ade4 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13cc425a disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x13ce6538 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13dd438c pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14045e0e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1406c535 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x1407b08e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x140aaa9a ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x140e655e crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x143fa725 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x14465d98 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1455a395 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x148eb5ee irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x14b5c626 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x14e57942 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1509764e xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x15288642 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x1531f6c3 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x154501db usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x1572cdba regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x157f1c66 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15d05d77 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x15e1568e rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f506fe kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1607039e ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x1611375c kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x1631b456 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x163a5d7a extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x163fa95d regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165d6114 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x1672e80e regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x16758239 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x167e6603 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x167fff75 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x168f0ce9 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1692520f dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x169e667c kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x16a20a07 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x16eafb3a pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1719f36d ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x172b2c19 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x1733034e power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1734b202 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x17409192 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x175c3910 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1763ef83 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x176d359d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a64043 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x17f30894 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x17f463a5 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x18028c00 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x1809afd2 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x181f1912 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x18506c43 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187b7511 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x189dcc4f kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x18b29633 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x18b42288 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x18cd658a smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x18d050e9 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x18e004dc __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x18f3a6c2 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x18f527ce device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1911fe56 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196be4ec system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x1978ebd7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x1993c154 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b410f1 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x19b602e9 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x19ca4c97 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x19e640f0 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x19f40849 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19fd8eae fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x1a098796 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x1a0e3c0e rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x1a16ca34 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x1a19f476 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x1a1a8156 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x1a2d8a1c power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x1a5c344e trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x1a6e3f61 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9bc694 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x1aa1d76c max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1ac98f2e tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae16615 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x1af0cc76 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x1afa9576 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1b2f6392 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x1b3bbe03 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x1b5fe2b2 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x1b609c30 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x1b6fbb3c crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b996eef pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd3d49f power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x1bf42df0 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1c0002ad fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x1c03565b uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1c08abe4 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1c1388a6 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1c13927d tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x1c169f81 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x1c260872 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1c448c87 component_add +EXPORT_SYMBOL_GPL vmlinux 0x1c551921 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5bce95 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1c5c6d33 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6e6e01 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x1c76d279 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c813db8 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca4e770 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x1ccb2558 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce6406f __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x1cee51a7 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1d09d523 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d3a5569 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d652735 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d9424f9 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x1dd48c75 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x1dee786e of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e0f7dab spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1e10a7b9 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x1e17b1e9 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x1e2c7726 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5f6ecc pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e6d39dc crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e872da4 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x1e9390ea ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x1ea89829 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1f1da3d1 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x1f4664ac smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x1f81223a desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f881dab vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f9281c9 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa42a81 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x1fae035f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x1fdf561f devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x1ff14f1a PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x20194200 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x202ad4a4 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x209e28a8 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b0aebe sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e9e943 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x210732ff ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x21290226 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x212cb82c usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x213dbf55 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x2150ca6f acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x216f2769 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x217f43ba crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x21806abf scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x21840e82 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x219cc19a get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b0e5ce efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x21b6b426 xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0x21c481f6 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x21cb6122 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21de8b74 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x21e5aa03 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2201a130 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x220d552d thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x221eb471 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x2221f66e gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x223bf7b2 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x223cf9d7 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x22741e99 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x227bbe5f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x2285954d request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a8fa89 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x22bd6930 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x22dfa7eb devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x22ee489c pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x22fdcddc devres_release +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x232594f2 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x232800d2 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2333ba02 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2340a984 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x2367bc6f pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x236f2626 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x23703e36 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x237208ef raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x237c226e pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a30cdb arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x23b36165 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x23b52661 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x23b797db btree_last +EXPORT_SYMBOL_GPL vmlinux 0x23d6b0e6 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x23e67fe7 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x23f1a749 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245394b6 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x247d3862 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24d5441d platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x250e8d62 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x251270f7 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2526c3c0 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x252746fb crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x2534fe9f tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x25362969 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x258503e1 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x258531b7 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x2586c5f4 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x25acc051 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x25b64480 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x25e237cc crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x25f00955 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x2601cd63 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263a83f5 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265783d5 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x268ba0df __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x26928c39 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26933a94 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2694c35f __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270ea66e xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x2720b7ce device_del +EXPORT_SYMBOL_GPL vmlinux 0x27244b1e of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x2732195e ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x27414a6c xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x27548d44 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x276b3059 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2771c19f free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x277fe534 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x2788be90 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x27bddfc1 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ca8d3e cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x27ddab79 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x27eabddb fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x27f202e7 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28186f14 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284f4ecd __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x28754f2e device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x287ed62a is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x289c1fa2 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x28a16b4d sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x28cc2115 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x28d1ce72 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x28d6686a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x28dbe830 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x28f3f19b pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x290d4dda adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2946f854 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x29553cd3 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x2983fd86 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x299cdb35 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x299d9171 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x29c27bea alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x29cef385 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x29d72f2c usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x29d88e93 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x29f9ec92 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x2a045175 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a0b30b9 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2a2aeb89 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x2a3c350e clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x2a473a53 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a686460 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x2a771261 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2a7b466b pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x2a826736 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2aa36b6d mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x2ae3504a dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b07c30e regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x2b0d8712 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x2b116fc8 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2b11d8d5 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x2b12f9af debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b3c1ebe device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x2b6f0c7e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x2b761b1f pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x2b85b028 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bc21ccf kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x2bdd1258 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c06e159 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3e925d of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x2c7ae403 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c894ff4 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca2304a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x2caf4752 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2cbadece usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cfa5477 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x2cff6d83 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2d04c183 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1f84ec seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x2d38b0b0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5a18a3 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x2d5c8725 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x2d63c7b2 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x2db20488 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x2dbe4bd1 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2dc4de72 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x2de8dc6f usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x2df58c0c __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2cb2d2 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e4feb20 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x2e6596fc usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e96b106 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x2ea67271 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ef5374e register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f148084 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x2f32b5be ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x2f37551d serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x2f3f0f2c usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x2f401e7f kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f5e8eb5 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f7d8635 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2f95cc62 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2fb2c804 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2fc6eac6 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2fcf0560 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fd8e033 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x2fdd9276 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x302e9d99 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x307092dc map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x308c4083 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x30c3d49f da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d9f5fc __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x30dcb70a bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312e24e2 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x313047b7 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x31362600 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x31847af7 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x31a2cccf pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x31a899af of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cb2342 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x31f00dce ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x31f5b8c2 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322fabb0 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x323dcdac sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x3248bf21 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x325420ff inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x326d4c14 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x326f6d47 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328c7930 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x3299dd6b of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x32a279e3 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x32aafc2b regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x32b7719d gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d0676f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x32f4fd67 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x332f3cac register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33831c26 cppc_get_perf_caps +EXPORT_SYMBOL_GPL vmlinux 0x3393ef43 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x33b59f93 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x33d22167 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x33de3dc0 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x33e33baa inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x33eb6ccc to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x33fbc297 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x34013571 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x3436273e blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3443909b ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x34700522 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x3472f529 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x3474a3ba init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x347c559d ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3495f22c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x352d98b7 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x354c3129 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x354f335e tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x355986d5 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x356d2550 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x358daad0 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3598bc65 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x35aaa24c devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x35bd7c02 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35ceaf38 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x35ec7422 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361a0a9a sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x361cd2c7 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36393b8c pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3643a596 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x367fb49a kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x368fb6c4 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b826d9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36f5cf9d ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x37011d43 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x370fd3a5 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x37402284 genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x374c78b5 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x377cabd5 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x37b94364 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37f1818a tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x37f8cf49 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x382e7f97 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x38413587 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x385e1f4a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x387fafca vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x38a7b3a9 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x38a7d653 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x38b7b8f5 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x38dc15a7 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x3907c574 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x392695e3 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x3937fb96 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x39457d3f kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x394b57c6 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x395696af key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x398fb008 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x39c3e3d8 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d115cc regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x39e3d117 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ef363d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a334681 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a6e7603 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa25052 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x3ac5f517 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3b3272e7 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3b9458fd hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3b9dce84 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3baf5ef8 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x3bbf8308 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3bc1a6ef usb_string +EXPORT_SYMBOL_GPL vmlinux 0x3bd93048 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x3bf31ad7 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x3bf3a567 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x3bff7f0e usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x3c2782b9 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x3c2e7407 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x3c5ac018 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x3c6ae24c pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c8d5c83 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x3c8d830a ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x3c935979 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x3c937da7 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb803f5 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x3cbd6d00 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3cc25b11 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd23475 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x3cdfdbd3 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3cf75808 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3d038570 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x3d318c6f __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x3d37648c devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5418b6 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d632057 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x3d6acfbd blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3db602a9 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3ddb0e68 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x3de5ded6 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3defa310 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x3df37852 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x3df8c36a __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e43ac3d ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3e4e955b regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x3e57bb9c of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x3e5a0999 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e939b9c tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3e966727 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x3eaf8abd blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x3ed9b13b ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3edaa8d2 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x3ee3a886 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3ef76cb8 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0bacff swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3f0f8be0 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x3f1576b0 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3f230327 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3f322bed gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x3f32ec15 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x3f504a83 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3f6c0dbe acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x3f75d05e regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f87850a devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x3f8874b9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fcb3552 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x3fdb0b0f ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x3ffbd4dc cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x401127c2 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40677185 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x40685dcc __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407aa48a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x407fb134 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x4081377c nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4085083f tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x409bf91a da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x40a2c639 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x40a66183 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x40ad278c usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x40ae33fc nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d202de devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40eab8a3 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x40ebba45 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x412c5800 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x412d9934 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x414e886a palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x41600fc0 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x41768937 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4196a565 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41db3d9f pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x41f5a37d rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x42080043 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x420c6f93 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x420f6db9 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x421c867f dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42682339 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429857f2 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x429adf77 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x42b0a12a acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42f21714 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x42fe1aeb skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x43085603 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x430d0867 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4317d8e5 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x4332bb52 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x434197ec device_reset +EXPORT_SYMBOL_GPL vmlinux 0x4344c146 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x435e19ac ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x436888c9 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x437db373 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b1c680 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43b9e2ec sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x43bdd515 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x43c2a786 __cpu_clear_user_page +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43d4121c blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x43da2a08 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x43f0b02d hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fe9b60 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x440afda0 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x440fe4ff platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x4414fb1b regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x444c20e0 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4490ad31 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c79b10 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x450f9310 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x452256a9 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x454229a5 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x4558da4d tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x456f8064 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576337f atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x459fbe64 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d7c090 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x45de641f device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x45fcca3f powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x46109789 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x461a2e5d clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x462ba56a mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46401657 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x464076e2 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x4653f2f5 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x466394ce pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x467703e9 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468dfeaf __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x4698ee83 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x46b62bbc of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x46cfe337 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x46d55d9d mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x46d63833 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x471c7159 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x471daf86 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47258ab5 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4734c6f8 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x473ffb82 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x47402114 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x475d0012 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x475e56d7 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4792d31e rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x479e2ea1 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e615aa kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x47efffd2 xen_remap_domain_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x48098106 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x481dfe8e usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x482c29de clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487184e3 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x4871fb50 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48902977 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x489a7ac6 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x48abaf3b perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x48add6df __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x48c65d75 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x48c83e92 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x48ce4b5f pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x48ec7c25 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48f5a728 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x48f612e3 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x48f67eeb tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x48f9c7a3 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x49034214 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x4930f6fb shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x4933d98a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x49704eed ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x497ef211 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49bbe3ff dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x49c3e396 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x49e0fd21 __cpu_copy_user_page +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49feb496 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x4a2892f6 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4a30ce63 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a35c1d8 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a73183e debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x4a783ba4 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aac71b9 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4af56a26 free_iova +EXPORT_SYMBOL_GPL vmlinux 0x4afb0c58 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x4b01b427 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x4b167f76 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4b1beaa1 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x4b2d414f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x4b3dfc66 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4b471ca4 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x4b52fe5d posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x4b561779 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x4b64b695 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x4b68812b of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x4b755331 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b9429b0 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x4ba57d0c cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x4bb00207 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x4bb0f112 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x4bb602fd user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4bf8596b xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x4bf86660 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x4c0e25c3 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x4c3900d4 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c8260ff acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x4cbd746e of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x4cc63375 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4cdcbfdd kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d2d6ce1 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4d346037 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x4d626c17 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4d85495a splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x4d872964 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x4db740a3 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x4dc5d7f6 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x4dce2b68 device_register +EXPORT_SYMBOL_GPL vmlinux 0x4dd793e4 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df64684 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e113519 elf_hwcap +EXPORT_SYMBOL_GPL vmlinux 0x4e1295d2 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4e1daf1b ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e314e3e tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x4e4ce665 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x4e540428 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e7d677b regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x4e8045ec tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4e993a79 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x4ea45e82 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x4ea6dada __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x4eb4c6c7 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4ec7c2b1 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x4ed54417 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x4edf6678 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f0491b5 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f70923a dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x4f9086b6 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fa538b9 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4fa54ebf bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fde1958 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x4fe186d3 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff6a68d serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x4ffbfbae pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x4ffeda84 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x5005b69e btree_update +EXPORT_SYMBOL_GPL vmlinux 0x5019a936 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50340770 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x504da204 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x504ed174 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x505f796b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x509179e2 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509eed3c usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x50a9b9cb ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x50d349c7 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e8b8f3 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x50ee707a fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x50f81278 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5112a396 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5124042d ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x5128b743 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x514c2b40 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x514c7876 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x516ab9dd pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5181baef wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51a7b179 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x51aa3fbc usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x51c97a31 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x51d5761c devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x51ec75e1 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51f57f60 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523570e2 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x52359579 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x5254c1ab spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527a5ed7 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x52a30747 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52e0b6e2 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x52e49442 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x52e62fab of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x52eec10b unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x52f0109b usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x530e4efe evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x531a0447 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x532ee0d0 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x5350a887 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535feaa5 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538a4aab wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x53a64cfc irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x53ad70f1 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x53f0581c pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x53f26cdd ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x53fd4179 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x540b0fa4 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541847fd serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5424ab52 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5434629b tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x543d3591 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x54538b7a mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546671b2 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5483c79e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54b1bc90 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x54bd684b ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54f2b279 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5528150f usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x552fa42d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x553755f2 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553b4caf rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554dfe82 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x5557a701 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x5561c1a8 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5589178e find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x558d28dd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x559c1ecf wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f5f8e7 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x55f8dbc9 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x5606adb5 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5630d40d platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56590d25 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x568483d4 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568b9401 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56a2077b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x56b56780 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x56b7a5e1 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x56b92d49 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x56be657c __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x56c6f64a hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f122bf crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x57094f3b sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x570ac4dd alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57337362 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x573cc8ed debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x57859fd1 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1e371 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x57a44a5c extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x57c118d9 xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c803d0 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57eb96a5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x57f34379 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x57f7f451 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x58085c6d md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5819aaef mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x581c44b6 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x58478a57 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5871ec6c dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a618db of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x58cec502 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x58f17722 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x590e6ff4 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x591cc597 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x5949e671 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x594a69a7 __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x594cdf58 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x598feb97 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x59ac051f iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x59ae092b acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f0488e device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x59f2ed27 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x59f365ae ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x59f7f082 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x59fc3a97 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x5a07eb43 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a1c0fa8 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x5a2865a4 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a34f013 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x5a485cf8 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x5a4cf0fd ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5a640050 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a885a3a perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a8a640d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5aa193bb usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x5ab6435e rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x5aceb895 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x5ae79466 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x5aeb2181 find_module +EXPORT_SYMBOL_GPL vmlinux 0x5aebed97 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b02b0df relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x5b11c3de mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x5b19374d aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x5b27924a blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x5b3d60a9 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5b4b8798 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x5b59da02 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x5b67d486 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x5b69f1a8 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5b8bd02b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5b8d23b1 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5ba441c1 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd9f822 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be0826e power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x5be5240b hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x5bec79a6 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5bff704d watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5c06da17 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5c22d357 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x5c42724e dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5c58deb7 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c6566d0 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c6e4a19 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x5c958386 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x5c9b600e of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb610d7 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cd09371 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x5d03d23a fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x5d127c22 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d12eabc crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x5d1dafe2 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5d246ded ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x5d31805f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d487e4e tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5d73f54d spi_async +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc63981 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5dd44623 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x5dd646d7 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x5de219dc __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x5de9f873 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x5df630d1 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x5dfa43a0 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x5e2a4d66 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x5e2df917 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x5e4c093d regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e8ac7c1 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x5e8e7684 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5e927f4f pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x5ea0947d i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5ebc5d10 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ebda7ef acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x5ec8aff8 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x5ecbb2b8 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ef66468 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x5efa61c9 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5f1b41da ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x5f1bd0e2 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x5f1f2795 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2cc1e1 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5f36ad03 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f392021 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x5f393634 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5f814683 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5f909d82 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x5f9dc0b4 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x5fa2b4a3 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fd17b8f regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5fd24e76 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5fdd5424 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5fef3df7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ff29cf0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5ff52bbd inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601859dc dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x601d4e4e dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x60207d0e blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x60223345 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x6043cc6c __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x6043f9a9 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6062c5f7 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x6072a23e tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6074f510 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6077fbbd class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x608ba029 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6093c8e6 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x609b9362 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x609fd743 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60c14105 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x60c7f289 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x60e412b6 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60fce283 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x60ffc68d of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x6121c898 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x612d17d3 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x61600a8f tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x616b2e6f rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x61a74bae cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61eb41b3 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x61ee0da0 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x62066a20 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x620bf64b cppc_set_perf +EXPORT_SYMBOL_GPL vmlinux 0x622c4f91 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6257887c pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x628c2f9f pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x629dbd89 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x62b104ca tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62c4a831 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x62c8cf81 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x62d171d7 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x62f6c9e5 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x630bd040 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x630ecf31 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x631165e2 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6315ac7e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x632d9485 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x634a71a3 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x63e0c74b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x63f3853a regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x63f51a9a usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x63f649ce debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x63f8fe99 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x63f9868c gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x640bb69e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64202ca3 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x642c8202 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x6445e989 device_create +EXPORT_SYMBOL_GPL vmlinux 0x6455f000 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64809b99 dev_pm_opp_get_suspend_opp +EXPORT_SYMBOL_GPL vmlinux 0x6489457d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x649bd514 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x64bcc3e9 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x64dafb5d find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64f9f9a7 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x65536973 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x656ae473 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x657969c7 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x657e776a gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x65885a49 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x658e0663 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x65a1279c usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x65ac0c8e dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d2d9ab regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x65ef19f1 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x65ef435d blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x65fa49b1 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66235dba __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663e78d7 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x663f8475 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x66489474 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x665d6a74 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x66623852 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6664e476 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6694f205 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x669fe0a9 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x66ab55c2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x66b2f841 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66cc13d6 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dcada0 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x66e18f9d pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x6718649f od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x671c6f1d phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x6723f392 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x67395a85 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675281ce __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6769cbf0 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x677932dc usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6779420a trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a9d6c9 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x67bbadba blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x67c8d258 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x67f9b713 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x67fc63d9 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x680a809d da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x680bed26 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6819fb6a crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x681e3d79 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x684edfb9 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x685ea024 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6865fe5f gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x686b0097 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x686f679e lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x68758ef6 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x68b8ec1e exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x68c20662 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x68f48477 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6914a8e0 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6931ba1d usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x695935b5 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6967c39c pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69906361 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x69bb35f2 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69bc855d pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x69dd0026 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x6a05c73d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a3a99f3 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7bee6d dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6a82d0b4 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x6a83cbfa __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6a944e52 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x6ab0366d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ab154ba fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad7c840 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x6ae564b7 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x6aeac1bc crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6af3379a sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6af53755 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6b094b8e tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x6b0b13f7 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b179725 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3e7625 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6b47ce3a fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x6b4fe03c sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x6b72ddf7 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b87c633 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6b8d1d89 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6b8d3e9a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6bbc64a2 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x6bde5be4 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6be4b18d xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x6bed4adb usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x6befdb73 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bff61f1 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6c04b7a5 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c152d92 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x6c234672 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c45fb54 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6c4645c7 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6c49a891 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cc31eac inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x6cc75970 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d0273ff con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6d1c40c2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6d217eee ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d405177 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6d418d07 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6d48174e security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x6d4850e8 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6d48b029 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x6d5bec46 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6d689c31 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x6d6b289f crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6d8c228f bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x6db30fe3 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x6dbce35c regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x6dbf85b3 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2e11c8 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x6e5739f1 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e97afcf extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ea18bd0 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6ea2749b reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6eb37316 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6ecbd0aa pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x6ed1fca1 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x6eeb64a1 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6eeb9a1d rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f36f606 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f433ffd __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x6f6030ed subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x6f69d9fc kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f90419b bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6fa1bb1a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x6fb229b2 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6fb41953 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x6fd88d17 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fefcea4 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700a1e05 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x70218944 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x70336d6f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x704b3913 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7064da8b btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x7068cf91 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x707136fa perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708bbe06 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x70966ba4 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70a617f7 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70b621e1 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x70be189e transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71173241 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x712fa1a5 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x71362d84 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x715b89dc device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717b46b8 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x717f2f8b da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x71907432 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x71908dc2 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b94c2c fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x71c6d656 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x71d6fa83 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e77025 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x71f1be38 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x71fe1453 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x72089664 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x723ed48b gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x724eb0d0 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x725293a5 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x72634b38 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x7266683d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728d006d regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72ae3ef1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x72d992f4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7317e29b wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x731bd6a1 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x7336b551 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x73607367 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73632135 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x737095b9 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x73931823 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73ab02d4 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x73b95349 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73dc0032 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x73fa2112 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x741d6ddb wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7423ae31 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744f9d6d alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x74560079 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746daf3d unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x747328fd dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x74778758 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749ac2df crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x74b47d5a i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74be6232 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x74d37ef0 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x74fe6637 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x75002963 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x754c15c2 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x756eaa91 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7589d71d pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x7595fae3 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x75b4d300 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x75deeaaf virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x75e2f711 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x762791ed uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x7647d123 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769f5bd6 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x76a4db63 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x76acf97a dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x76c5fce3 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76eb4a79 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x771a945d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x771df6a4 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77382fbd sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x77473fd4 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x778a584b ping_err +EXPORT_SYMBOL_GPL vmlinux 0x77bbde14 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x77f6e141 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x781b5a43 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x7828990b blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7845a660 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x78514d34 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x786050ef device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x7864b395 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x786c36c6 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x787164d3 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78926c66 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bfdd8c dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x791d68a6 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x793cc642 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795c2b26 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x79677c23 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797186ae regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x799126c9 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x79a0a3b5 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x79b217c1 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e0e457 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a2f8525 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a5c4e6b ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7a5f074a gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x7a87edd6 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9583e8 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ad2878c sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7b093c93 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2163bd HYPERVISOR_tmem_op +EXPORT_SYMBOL_GPL vmlinux 0x7b236140 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x7b26ce59 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x7b438b48 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b455f04 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x7b583c13 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b845e62 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9be224 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x7ba9e0d7 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x7bbd2df7 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x7bc099a7 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7bfce381 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c147be2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7c187aa5 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x7c46fedc usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7c585876 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7c79cd11 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7c7b127f regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x7c8123b1 init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cd66942 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x7cde52ff extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x7ce249f9 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d09ba35 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x7d180569 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7d1e1401 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x7d2e200a usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x7d502d07 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7c2fd8 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x7d968b59 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x7d9c2df5 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dca0518 HYPERVISOR_multicall +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7df0629a pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x7e011fb4 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x7e19aa36 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7e282d55 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7e2c9030 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e85c879 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7e959610 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ec87977 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f01c2cb dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f2f896f of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x7f674057 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x7f6ebf24 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7f79ad7e kick_process +EXPORT_SYMBOL_GPL vmlinux 0x7f7a828e ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x7f7c9b29 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f985329 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7fa9d7fe acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x7fba64bd of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fcd1087 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x7fcd6d72 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x7fe25b90 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x7feb99e4 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ff9891e phy_create +EXPORT_SYMBOL_GPL vmlinux 0x80045c53 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x801e8e5d skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x804e56fa efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x80558df5 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x8058d739 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x807b7778 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x80826940 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x808f7272 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x809cfd8b usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cab715 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80dc9e13 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x80f2ec87 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81027552 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812bedf4 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8169a4e2 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x817a56a9 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x817b9a38 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x817dd073 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x81892209 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x81940479 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x81a05aca of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x81b80747 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x81bd2c38 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x81c90a82 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x81dafa98 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x81dc3355 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x81e127fa console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x81e6cb2b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x81fce17c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x8209785e unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x821b7541 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x822a8fa6 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x824ff117 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x826a7477 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x827f1f74 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x829eff21 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x82abbac7 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x82b5d974 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dcc778 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x82f89e27 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x8317131d fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x836ae453 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x837cd11d of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a74a22 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x83b09747 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x83cc68ed inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x83d33931 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x83d9865c led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x841b6d0f led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x841f7192 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x84357ab7 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8473377e rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84c32285 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x84e2f0c4 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x84e9ba69 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x84eac18d task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x84eafef1 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8501b596 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851fca81 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8529a932 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x853d9805 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x853e373f ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x854ae5bf xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8560e5fe devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x85752f3e ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x858b6b8c tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x85924a33 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x859c0b8a reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x85a11710 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d436c8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x85d655ec bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x85db6013 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x85fd5980 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x862ab6ba ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x862c8fcf clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x8637f375 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x866caa16 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x86746f6f devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8692bba7 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86af9688 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x86b1264b regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f58af6 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x872ba9d6 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874f649f fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x87570ff0 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x876c1613 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8774f8c6 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x8777bf78 put_device +EXPORT_SYMBOL_GPL vmlinux 0x87964995 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x879b802c sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x87a647a6 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x87f43b41 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x88061414 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x881c3e28 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x88340280 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x883a0dee unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8855ae82 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x88784519 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x88977536 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b6df7f nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x88e509b2 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x88feea92 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x88ff424f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8910c3b4 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x891815bd ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8923e074 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL_GPL vmlinux 0x89433727 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89726cb8 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x899ae549 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x89b632cb __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x89bacf81 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89e037a6 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x89e46be0 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x89f1c210 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x89fb6851 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8a1b39f0 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8a3b0670 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a66d4e8 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a83ba19 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x8a8a0807 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad4f4ce acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x8ad8d0cb tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x8ad93e38 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x8ae15d5d da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x8aee1c3f trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x8b012079 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b22eda9 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x8b349c60 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8b34e7be virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x8b609c2f get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b8ee68d of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8ba58e72 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8bafdcc7 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x8bd8020c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x8bdde827 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0d149b of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x8c2079e6 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8c427be6 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8c49e034 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x8c4d7bfd ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c574291 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8c5781d1 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x8c627e6c xen_remap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c659b6c btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7b82b4 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8c86d7fe da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8c8f09d9 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8c971e09 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8ca1e204 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ca5bb38 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8ce9ec65 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d0e4e57 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x8d101866 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2658de tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x8d43978c reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8d46b551 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x8d4abf50 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x8d4c67b6 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x8d509116 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x8d56d049 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x8d5cc77e device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8d6d9eb2 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x8d71a6cd virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x8d81407e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8daae6b0 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x8dbf122b platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8dc0104a ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8de44a0d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x8de64cbf init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2a30ed phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e44d1aa register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x8e6b813d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8ea74d71 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x8eb36ee9 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x8ee09e58 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x8ee7f669 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8ef0e891 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f129533 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x8f345107 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x8f384b8c xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x8f4bb6a5 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x8f61605f fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x8f697a63 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6cf3b6 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x8fa99e41 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8faa2dcb acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x8faac947 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8fbd2616 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x8fbd90e5 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x8ff569d1 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x8ff6e2d1 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x8ffae027 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x8ffef0ff of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x900589cc usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9013ce89 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x90285398 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x902a038c gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9045adb9 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x904a7947 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x90547705 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9079e53f gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x908ebe2b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x909188a5 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x909514df irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9098b607 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ad27ce usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90dd6b4c fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x90dfd963 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x910866b9 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x911a4cd7 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x911bee89 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9141a485 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x9151b24f alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x915cc337 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9187d82d ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x91fa8b15 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x920aacca nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921de80d bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x921e466d kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x922a08cd skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x922d8c05 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x923a8d6f debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x92498604 acpi_cppc_processor_exit +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926f3d00 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x9283a63c regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x92a72fb9 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x92c298ad of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x92cdd519 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x92d20c25 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x92d87fc5 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e55c23 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x92f78771 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x92faf729 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x92ffbb18 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x930d1914 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93305a60 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9342107a ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x934fd450 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x93617c9e class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x93700767 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x938df05c regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x93a8fc4e dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x93b38fc1 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x93c8c792 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x93da1944 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x93e8f3e7 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x9410fcea ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x941a8380 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94368c52 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9478bace shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a2d88f blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x94e4c593 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f831c4 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x9502c587 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950d120d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x950d8087 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x9591e847 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x95a204cf acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c99372 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x95d7195d sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x95ef0ab5 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9620334c tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625e652 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x962a8600 reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x9636213f device_add +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965c1790 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965cc427 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x9660009a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x96679a99 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x966cc8f8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x967dc1b5 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x968304de __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9686ef29 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x968f9152 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x9695067a irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x969e0204 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x96a0f08d dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x96c50164 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9716bf5f usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x974d9e9b acpi_get_psd_map +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97587a9b da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x975a27ea queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9779cc52 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x97832efa hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e286ad cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x97ed7174 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x97f2ff8f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97f697c1 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x97fd4c20 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x9815ab44 get_device +EXPORT_SYMBOL_GPL vmlinux 0x982973b2 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x982f566d xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9838322b sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x9839abac blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x983ba067 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x983d5b22 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x983fd3fd pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98838eea sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL_GPL vmlinux 0x98a28d77 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x98b3fb25 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x98bcaba2 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x98cb051f pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x98d5fde9 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x98eb1bf3 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x98ef4812 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99428140 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x994ac659 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x99502a02 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x9975e999 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x997a7a84 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998667da pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x998a3d3b extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x999587b5 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x99a873fc ref_module +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99ad3f72 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x99b8ab33 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99c0c13b wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2fdd60 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x9a45a927 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9a541ef1 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9a5a0e21 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x9a613944 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x9a7efe1e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a923583 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9aaab168 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x9aba4aa1 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9abb7e58 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x9abe0971 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad57574 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeffc47 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9af33958 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9afa0e13 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x9b534a67 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x9b5a4572 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x9b6b58c9 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9b74d527 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x9b85e9aa ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x9b8ef5ed skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb2f961 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x9bc2c471 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd7c50e md_run +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0a8af1 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9c121ea8 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x9c15ea11 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x9c208a4a led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3e632b blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x9c50c32c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9c5b569f amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x9c69c4cf crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9c899e22 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x9cbeebe0 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ceadff4 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9d003e25 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d48fc17 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x9d578f24 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9d898f4c device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9d97bd68 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x9da036ba xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x9da5499a mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x9da7840c tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db15f4e xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x9dc0a125 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x9dd8f414 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9dd8fede single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x9ddda76e regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x9dfe8e3c dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x9e2e9bb5 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e433ba5 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x9e436401 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e61ddc9 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x9e648764 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x9ea92d4c regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef7dfda btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f113d64 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x9f121e07 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9f37777f blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x9f45ee5a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f53684f bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x9f5a433b kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x9f6fd357 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x9fbe5ea0 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe7bdbd irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9fe8ab5b inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0052d45 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa030e997 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xa062b69f efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xa082f7c8 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xa085c3d4 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa0a2de99 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xa0b65e75 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa0dbedca of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa11b4679 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xa12628d7 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xa13f0430 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa14851fc crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa1498221 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa14ba21d clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xa167e4cf fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1bc322a fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa1c980a4 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xa1cb69be devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa1cf943b fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xa1ec9c4c md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa2107f67 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa211dc72 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa221a01a mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xa226fddb srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa25a53ce netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa26ea3cd of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa28a468b xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xa28c34c7 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xa2a202f4 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b48d16 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bad612 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d86432 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b228 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xa2e3f67f ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xa2f055e4 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xa2fbb5a4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa31e5292 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3450c66 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xa34e41f4 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3601a4c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa3881305 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa394c68a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a133be ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3aa59cc inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xa3ad1fcf ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3cb4644 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xa3d6c9c3 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xa3d8ad44 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa3dc3fec crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3fd60fc to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xa407cf59 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa41c87af nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa4244afa srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xa42aae9c ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa42c3791 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa43066a0 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa431b305 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa43e0df2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa44290c5 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xa447603d ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45ed2f1 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xa46e0dcd __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4a8495b pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xa4c964e9 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xa4dd8ff7 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xa4df176b pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa4e63159 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xa4edb07c fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa4f3e273 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xa4f69876 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xa4f6fb2f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa5129d68 dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xa51aac31 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa5439517 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xa5761ad6 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xa586729b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa58fdff6 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa59045c4 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61526bd gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xa61b9294 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62cc60e pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xa6325a79 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xa6531e87 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6720e53 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xa68e5c74 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xa69d7d81 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa6a0bcc5 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fde9f0 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xa70d9fa6 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xa720f668 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xa74cc721 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xa76b5158 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0xa76baf25 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xa7871ef4 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa7d15c1c list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa81f79a9 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa847dcc4 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa84dde9e xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xa850dafc idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa869fdfd do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa8804817 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc24d0 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa8c8d19f device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xa8ccd100 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa8e9389c xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xa90aa49d gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa92d3f2f netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9837c06 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xa98c52cd proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xa98c59d7 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa9942207 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9ce0359 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xa9df11af cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xa9e00c43 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ee360c mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xaa023a57 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xaa059c2c file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xaa41a148 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xaa436cd5 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa5ba42a pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xaa5df063 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xaa5f1df7 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xaa6379ce usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xaa74acc7 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xaaa33be6 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaabaf0dc dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xaabd8a0e thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xaad1d52d devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaae89cc0 device_move +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3a6eff usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xab469872 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab636f94 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab8489aa spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xab86ded1 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xab8ceced gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0xabab79ed usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xabaedc03 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabea0439 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xac10b2c4 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xac267676 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xac32c20d blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xac41f328 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xaca4880f regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xacaeb13c swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xacc0a583 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xacc42ffc cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf1764d event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xacf5e6e9 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xacf6a397 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xacf70cdf of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xad08c14e ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xad2827a1 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xad2e8d95 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xad4ba80b gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xad83bce2 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xad8c49d1 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xadb51799 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xadc6d89a gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1a14a4 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xae2d36e9 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae78b1f5 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xae78d87d led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae9dc95f netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xaea10fc0 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xaeda4f80 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xaedc550c ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xaee0d13c __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xaf10673a xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xaf23dfad xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0xaf2a2f93 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf3995a9 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xaf489791 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xaf927b6a percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafb260df acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xafdc5d2d aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xb004f947 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xb00b52d4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb01deb20 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb029fccd efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb040e45e iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xb0537063 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xb0581fcb ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xb0662174 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xb0683dc8 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08246dd led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xb0835af8 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb0963ede ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb09c4295 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xb09d7ead devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xb0a1bdb2 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0bd834a crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb0cfe3cd iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0db1d92 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0e7d34f wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb0f29dc2 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb0f6f214 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb0fe4b15 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xb1147ec5 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb121edba device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb13e6baa ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xb13f2c76 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb158ce59 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb171f1c9 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c692a8 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1eca012 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb1f129da pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb21e6df5 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xb22007f0 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2462f5b power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb24b43e8 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xb260bfa5 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xb2805dc0 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb2838882 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb28a2a56 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xb28c824d sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xb28df1f9 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb290f89b inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xb2a75e94 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xb2d97d8e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f437a9 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb2faebe6 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb30af27c crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xb30da3c4 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xb30ed000 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xb31808d3 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xb3244d40 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xb329c705 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3498774 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xb3659789 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xb3675f30 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xb3710ff7 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xb378dc6e pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xb3825c07 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xb3896955 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xb38d53d0 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xb391445c pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0xb39b62d6 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb39d6bd2 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xb3a4baeb dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xb3a802ba nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xb3b50e2c perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xb3c39728 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xb3da3349 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb3e5794e usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xb3eb3cff bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb412174b acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xb41e9f46 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb4259360 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb45600fd rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xb46a8475 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xb4757873 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xb475c05b acpi_cppc_processor_probe +EXPORT_SYMBOL_GPL vmlinux 0xb494c197 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ba7372 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4bec9e4 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb4bf4f22 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb4ced140 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4d4640f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xb4d51822 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f76390 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xb5038d9d hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb50bfed2 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb529a28f pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb52e5a4c irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb544c39f clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xb54f5897 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xb571f3c5 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a19a5d pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb5a5f290 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb5c8d0fc ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb5d91b80 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xb5de965c subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xb5ea9308 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb5f0ca5a acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fdc38a of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xb6009caa register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xb601ae77 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xb6052e0c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb61997f0 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62c9a88 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb62dcd03 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb64f8427 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xb6615a86 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb6abdf19 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xb6ae66c6 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6ba0734 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xb6ca32d1 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb6e5813d fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb7237dac device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb72cb135 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xb72f8eb0 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73aaa9a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb740fa8f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xb750302a shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xb7565ef9 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb7952afb of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xb7ac7fa8 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb7c93fb5 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb7d3cd9a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8257218 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb82611fa acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb85038d0 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xb859c9e6 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xb884d0d9 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8aa8bda devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xb8ab9d85 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb90107c9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb91e0b18 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xb9373ff3 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xb945ace8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb954899e fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb95cbf8c bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xb95d6e02 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb96a20f2 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb96ba29c irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb98502c7 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xb987b5dc acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb9888fe8 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xb98f3d12 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cae6e3 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d402ac cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xba0de15a blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xba19434e default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba4379f0 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xba4574ed wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xba8f78f6 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xba90dc95 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xba925cbc dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xbaa9b500 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xbab24821 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xbab269b9 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad282ea srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xbad94948 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb12ecd0 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xbb17bad9 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbb39fffa component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xbb408072 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xbb59a91d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb702502 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xbb98d138 user_read +EXPORT_SYMBOL_GPL vmlinux 0xbbac1b9d kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbbb84a6a alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xbbb9f3b9 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xbbbd56ba sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xbbdeb14d nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xbbe3809e dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xbc2459ab thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xbc3999a0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbc64f60f find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc75bcd4 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xbc87c7a8 user_update +EXPORT_SYMBOL_GPL vmlinux 0xbc89fa5a irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xbc966c5a spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc80b42 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf5429d of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcf9454e udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xbd0a9818 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xbd3c9751 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd70457d invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xbd7636e4 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbd872a7c of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xbd87efd6 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbd97828d ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xbda52af5 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xbdab0574 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xbdb0d3ed gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde149bb __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbdf81938 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xbe184569 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe269716 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xbe28d1d8 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xbe3351e6 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6ed347 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbe8a69e6 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeade8f8 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbeb6c4c5 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf114a01 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbf15db65 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf2a2446 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbf442686 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xbf60cb28 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xbf9c14ae arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfa31227 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbfab3e75 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xbfb119c1 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd44347 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xbfe05bc8 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff2b190 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xbffed9aa devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc01f2352 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc024eac2 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xc0319e70 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc031ac5f gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08abcd4 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0cdb821 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0eb2cdf usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc11f1d17 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xc13ae67a __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc15d28dc virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xc161d68d of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18ac1e0 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc1ac7962 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc1bcf632 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc1d7c2e8 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc1da4ed2 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc1ea24e0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc1f1d5d8 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xc22587aa rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xc225ce5c devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22c6885 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xc257e5f4 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc282b745 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xc2a847b3 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc2bd7249 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xc2d84efd genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xc3138cd3 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc3144141 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3448653 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc352cb02 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc3575936 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc36dcf87 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc38d7ecb blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3c87a5d device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc3e00e80 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xc4060ab8 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xc4165b89 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc441a6ef phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xc44a65eb nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xc44ca0c9 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4b951be pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d1acc6 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xc4dc5445 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xc4e872a6 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xc4e9e47b percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc4f8dfc2 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xc4ff2544 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xc507b772 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xc519952e mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xc534e771 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xc538ee04 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5466dfe ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xc566c9bc __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57cac18 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0xc58c4956 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc58ce76f hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5decdc6 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0xc5fa586b mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61db191 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc624107b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc62a987f usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc62f7887 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67cf900 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc6968428 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xc69699e8 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a8758c crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xc6a96f66 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xc6cf59c7 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc6da7a0a __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc7178c09 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc7277056 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73e3cac get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xc749f28e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xc74f6a8b devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xc7631a8a pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xc768950d of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc7704655 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xc78480f6 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7aa68ea crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xc7c5f9be gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e2a5a0 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ed48c8 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8466134 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xc84ef74f debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc892fc4e generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc895cc07 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8bbd7c5 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0xc8d1cde5 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e36df8 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xc9069eb9 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9172257 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xc9219be7 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xc9338698 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc9427905 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96150b4 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e54c9 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc990c0b5 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xc9929a82 input_class +EXPORT_SYMBOL_GPL vmlinux 0xc997db5d blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xc99cd022 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xc9a088a3 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xc9ad3e9a bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xc9ada8df skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xc9b1c154 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc9be8115 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9eceffe __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xc9fdc2f0 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xca270f8b xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xca2f9324 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xca324cb1 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xca33c3e2 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xca53e888 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xca65aa10 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xca6c69e9 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca8d4bc1 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xca9cd466 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xcaa85ca8 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xcaa89ce5 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xcabbfff6 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac083ad debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xcad4e289 component_del +EXPORT_SYMBOL_GPL vmlinux 0xcaeb347b i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xcafe11bd tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xcb0b8363 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb42f4c4 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4fd227 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xcb8f15ab __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xcbb2108f crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xcbb865ec pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbede7a4 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0af673 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xcc408562 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xcc48d83d uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xcc697e79 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xcc78dd84 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc907dea crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xcc972826 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xccb4f123 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xccc900e1 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd19c17 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xccd23df5 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf0620d __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xccf2a704 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xccf58a4a bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xccfca962 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcd1c7576 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xcd3800b8 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xcd3ef09c ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xcd455e95 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd98e0e8 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xcd9c5d8b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb01e54 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc1ebfc usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0f31af __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0xce139d13 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce4f037e class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce848fdb skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xce8542d3 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xce8af74f led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee5193b spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xceea4cda driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xcef2b9d9 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xcf12e3ac wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcf38bcc2 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xcf4828e5 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5cd830 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xcf61f986 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xcf8b17d8 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xcf8bad1a unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xcf93088c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xcfa2d321 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xcfad1bff wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc88055 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xcfccbe6d tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfd5654b gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd02a091d regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xd035cada __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xd0392b38 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0679546 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0733040 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xd08c0eb7 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd0926479 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd097c7f8 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd0a085d0 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xd0b8f247 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c2d3a4 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xd0d750c3 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xd0f534ee setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd11d3a67 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xd11f6444 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xd12c5548 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd182f9c3 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd191cb73 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd1add0b6 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd1b148e9 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xd1c8c807 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xd1d6e44a alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f7dab0 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd20968f8 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20f27f1 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd225dd29 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd226a28f reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd259c9be pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27a659c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd282ff2c scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xd29eb1c6 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xd2ab202f usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd2bf3c74 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xd2bfbbff crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xd2c214d4 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xd2cff3c2 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd2dfa77c rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e64671 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd328b573 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xd32a46fe md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3417727 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xd3ecdfea of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4064abb i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd40ef8b5 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd422b160 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xd42ee212 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2fb3 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd45d0c28 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xd463caa0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4676777 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd46c4813 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xd47b792d attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd490797d vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd49b8f81 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4a26bd0 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xd4a39a41 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xd4a7b65b xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd4b01376 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cc2c22 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4cf9afa acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xd51bb61c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xd552d6e4 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55bc3c9 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xd5600dc3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xd567aacc device_rename +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd56c68e9 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd56d4da4 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xd56ec9b5 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xd5781520 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd580c094 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd59266ef sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xd5aaeca4 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xd5ad3471 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c14601 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5f0e39f of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd60b0682 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xd60b33d4 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6494d84 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68c35e1 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xd69aa3eb extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd6afde31 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xd6d1399d inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7260832 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd746b209 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xd74ea2d3 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78381d3 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xd7854af0 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xd78cd1cf pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xd792294d klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xd795b3e9 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xd7962903 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xd7ba8146 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xd7c534f5 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd7c5a9be regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e63059 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8562866 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xd85c33f7 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xd861b6f5 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xd8710d0d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8970cf3 mmput +EXPORT_SYMBOL_GPL vmlinux 0xd8aad868 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xd8ae30d5 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xd8b5cb7c usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd8bc749f usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xd8cf9ef9 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xd8eed2fe sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xd8ef3b8e ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xd8f16963 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xd92266ab ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xd9242cf1 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xd929749e ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xd930de30 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd942ff27 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9874fa7 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xd98ee99c blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xd99c8b3a simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xd9ae120e sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xd9b5237d kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xd9ce1122 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0781f6 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xda5fcd49 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xda63238d of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xda865ed8 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xda8edf2e amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xda9b5c5d pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdacce150 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xdadc7de9 copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf9bc72 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xdb1f0a4e usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdb39ec3e wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdbadf91d __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xdbb29e97 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xdbb583f7 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdbb78919 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xdbbad62b tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xdbe4d457 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc00729c extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xdc044051 of_css +EXPORT_SYMBOL_GPL vmlinux 0xdc101cbd kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0xdc1205df list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc647b81 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc7fc165 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb279cd clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xdcb579ff crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xdcb93ba7 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xdcdf3519 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xdcefb5d4 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xdcf01f12 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xdcf50b5c of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd8e54e2 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdd94fb49 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddccce8b pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xddce62b0 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf6ef2f elv_register +EXPORT_SYMBOL_GPL vmlinux 0xddfcfd64 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xde0242f9 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xde150ca4 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xde150dec rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xde19fef9 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xde248e39 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde6aae22 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xde6bd8ec of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xde81a3b7 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xde82ed99 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xde989ce3 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdea56aa8 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xdea77748 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xdeb88305 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdebc6bb2 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xded0d47f acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xdee03558 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdef8b19c rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf00e84a kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf11f6dc serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xdf1bd21f pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xdf24a7c0 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf3bf4b4 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xdf55a1c0 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0xdf59940f sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdf6d37ed iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xdf934821 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdf9abb4c dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdfa234b0 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xdfccea6a raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xdfde8ad8 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xdfee264f ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xdffb2e41 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xdffe814f irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe029bf75 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0339b41 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xe036fd74 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe0b136b8 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b47e5b regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe0b659f6 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe0c3d4a0 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xe0cc6518 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xe0d36865 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xe0d8bd58 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe0dde429 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe0e5cc6b usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe1059664 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xe109a7b3 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xe111decb ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe11c375c transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xe11dfa36 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe13c1fad sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1881034 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe192351e pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xe1994c65 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe199f4a9 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xe1a61ab0 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe1aabaaf ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xe1b06061 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xe1b44aec shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe1f82e7b list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xe21b786a class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe2393311 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xe249ed2e ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xe24a233c use_mm +EXPORT_SYMBOL_GPL vmlinux 0xe25c3a89 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xe2644d6a trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xe279e8b9 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2a02086 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xe2f366a6 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xe3024432 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30b0079 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xe3347509 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xe33c677d __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0xe3417f6f virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe392ceae powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe39c733b acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xe39ebb0d cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xe39f6592 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xe3b4454e ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe3eb5945 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3f556a6 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe406e396 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xe40b0b4c wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe40e0565 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43207e8 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xe4359aed vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe4573629 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xe4632be9 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe463cfa8 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xe4667244 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4b3bd8c da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xe4b5beca kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xe4c0b36b pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4d91b5d percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xe4eb8c4c device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xe50a3d93 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xe526f257 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xe52729b9 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xe53d056d klist_next +EXPORT_SYMBOL_GPL vmlinux 0xe57bc8c0 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xe58307eb irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe592351e crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe5c6063f gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe5d344b3 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xe5d74d97 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xe61e943b posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe6470310 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65a6c6f __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe6630734 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xe68f5d26 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe69b7849 __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xe6b80afc sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d9150a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e6731b hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6fe8ac8 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xe71244ed __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe71c4271 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xe7216340 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe723badf l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe72584e9 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe7261e7e crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xe732d49e unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xe73aa235 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe752c7aa sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe75aba0b efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xe75beabe stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe779c5f4 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7834ec3 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xe7a63192 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe7a6bd36 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe7bd63d7 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xe7df376b crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe7e5e0df stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xe7ef9a19 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xe7fe8363 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83b5af9 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe83fd1b3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe851052c init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87b3c9b tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe87f33c2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xe8826764 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a96073 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe8c19800 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe8d5390c arch_pick_mmap_layout +EXPORT_SYMBOL_GPL vmlinux 0xe8db3c54 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe8f9dde8 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xe9104bba __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xe91fa55f ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe981fb5d syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe98a69ec gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe9a33b19 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1c3575 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xea1ecd87 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea511ec4 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xea584220 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea9c1564 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xeabbc090 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xeae8fdc2 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb503f3d ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xeb627c93 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xeb6fc730 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb73f7cf ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb90a11c __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xebafbbea inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xebcb85f2 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xebe52393 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf0b898 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xebfadfae driver_register +EXPORT_SYMBOL_GPL vmlinux 0xec07d086 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0xec140457 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1b9f20 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec42b35d xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xec73eb36 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xec7fcef0 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec8f463d devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xecbb75f0 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xecddc712 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xecedea6a tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed03794d fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xed037a1d param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xed3addef ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xed5e9ae5 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xed6d227e of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xed807fdd param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xed8129ff __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xed8ac591 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xedb4dc00 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc99bf5 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0xedd26dec cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xedf3f1df platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xee047d04 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee12751a crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xee2d3516 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xee3898b0 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xee424750 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xee58bc97 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xee60ed2c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xee6636a2 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee87a30c gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xee9ff400 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xeec02d95 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xeec34e4f inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeeda2d63 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeeff71ce fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xef11d58e usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xef223a94 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xef3a3646 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xef45ca2f pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xef48a9d3 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef83fc5b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8ecac8 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb3573a of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xefc7f65d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xefe12854 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xefe572f9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xf00a371c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xf01e183f eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf025c69a usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04700f9 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xf0523434 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xf0619611 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf070cdd4 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf08b2025 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xf0cb74f3 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf0cbab63 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf0ce1f5e i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xf0d175de sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf12db1b5 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf12f419a blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xf144be5b regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf14ef1fb vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xf16e9505 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1920635 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf19924fe key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xf1aeb53d blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b7377b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf1bf4fd2 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xf1c00e2a dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xf20b2b45 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xf20fbb27 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xf2124eef bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf21d8b02 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22381b7 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf23a902d pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28782b0 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xf288350f regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xf28b6f31 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xf2909634 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf2986a4f tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xf2a93371 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf2a9996e of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xf2abdfda iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2b4e5c7 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf2cfaafc acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xf2d237e2 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a18e0 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33a82b9 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf33b8af9 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf33cc7e8 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf340cf7c mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xf347cbfe iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf391e77e skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xf3a415de arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3ba3dc4 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f88974 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xf449fa57 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf47eb0ac sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a3e0b9 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xf4a633c4 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xf4f718e8 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf52025b1 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b5349 pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b752b1 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf5b92b50 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xf5c62fb6 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xf5c7072f regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xf60c65d8 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xf612030e fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xf629fac5 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xf62ca9d1 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xf6544ac0 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xf67ccc0c cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xf6b8fdee max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xf6ba0c6a devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xf6c725e4 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf727dc10 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf73fb23c md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xf7465a07 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xf749c151 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xf7558123 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xf772a3d3 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xf7a03bd5 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7a9e3ba debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7e807ea hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xf8075406 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xf82e8d84 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf85affb0 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xf8711f01 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf88ec2d1 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf89cbf73 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf8ac29f3 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf8c36664 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8ea733b usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf91a1d33 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xf91a7d4e virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xf921fbfa tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xf9285c87 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xf928bb72 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf946718d regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf95f62be mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf9629f8c devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a878c7 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xf9aa1118 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d4188c sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xf9e20708 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xf9fbe437 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xf9fd4b4d usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa1fdffd of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xfa78f3fe crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xfa79dd55 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa372cb wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xfaa6f763 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfaaeae80 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xfacfc075 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xfad32b0e __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfb061358 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfb0d4294 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfb3191d7 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3715a7 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xfb41dadc crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xfb46ba92 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xfb596df7 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xfb5c565b led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xfb6cf263 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb788322 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xfb8034b1 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xfbbb5662 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd011fb tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xfbe46c04 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfc019fa0 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc25da26 put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xfc2edd06 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfc304f4d sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfcbc1266 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xfcdf2c6a of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xfd05ea1f pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xfd1d9a8f ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfd3aa709 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfd4df30e kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7c97f5 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xfd8e5247 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xfd90b565 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xfd9a64c7 split_page +EXPORT_SYMBOL_GPL vmlinux 0xfd9ee5c5 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfdbcd65f __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfdf44fce ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfdff7afe __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfe017916 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfe022059 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xfe0ab36c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe109868 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe432574 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xfe7bb734 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xfe8af86d blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee1d742 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xfeed9d2d dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xfef74f1c ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff0068c8 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff148862 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xff2779bc xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2face4 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xff3ee3ef wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff635edb blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0xff863f03 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xffa4eda4 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xffb3c49f regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffd3982c amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xffd57f7e spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xffeb9695 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xfff1a743 blk_mq_cancel_requeue_work --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/arm64/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/arm64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/arm64/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/arm64/generic.modules @@ -0,0 +1,4375 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_fintek +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acpi-als +acpi_ipmi +acpiphp_ibm +acpi_power_meter +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-neon-blk +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +ahci +ahci_ceva +ahci_platform +ahci_qoriq +ahci_xgene +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amd-xgbe +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_big_little +arm_big_little_dt +arm_mhu +arm_scpi +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm_iproc_tsc +bcm-keypad +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +berlin2-adc +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-scpi +clk-si514 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cppc_cpufreq +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc3-qcom +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +ec_sys +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +egalax_ts +ehci-msm +ehci-platform +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdp +fdp_i2c +fealnx +ff-memless +fintek-cir +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fixed +fjes +fl512 +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +fsa9480 +fscache +fsl-edma +fsl_lpuart +fsl_pq_mdio +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-ce +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xgene-sb +gpio-zynq +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hip04_eth +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hnae +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-bcm-iproc +i2c-cadence +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-qup +i2c-rk3x +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xgene-slimpro +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imon +ims-pcu +imx074 +imx2_wdt +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +iproc-rng200 +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mc-bus-driver +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +md-cluster +mdio +mdio-bcm-iproc +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvmem_core +nvmem_qfprom +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +ohci-platform +old_belkin-sir +omap4-keypad +omfs +omninet +onenand +opencores-kbd +openvswitch +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +parkbd +parport +parport_ax88796 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcie-iproc +pcie-iproc-platform +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pfuze100-regulator +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-msm-usb +phy-mt65xx-usb3 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-8x16-usb +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-qdf2xxx +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl172 +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-pwrkey +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +ptp +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-berlin +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-mtk-disp +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa168_eth +pxa27x_udc +qcaspi +qcaux +qcom_bam_dma +qcom-coincell +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-efi +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scpi-cpufreq +scpi-hwmon +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sdhci +sdhci-acpi +sdhci_f_sdh30 +sdhci-iproc +sdhci-msm +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-pci +sdhci-pltfm +sdhci-pxav3 +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-ce +sha2-ce +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +sm_common +smd +smd-rpm +smem +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98357a +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-fsl-dspi +spi-gpio +spi_ks8995 +spi-lm70llp +spi-mt65xx +spi-nor +spi-oc-tiny +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spl +splat +spmi +spmi-pmic-arb +sprd_serial +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vf610_adc +vfio +vfio-amba +vfio_iommu_type1 +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgene-dma +xgene_edac +xgene-enet +xgene-rng +xgifb +xhci-plat-hcd +xilinx_can +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zavl +zcommon +zd1201 +zd1211rw +zforce_ts +zfs +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +znvpair +zpios +zr364xx +zram +zunicode +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic @@ -0,0 +1,17502 @@ +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x276b2f72 private_AES_set_encrypt_key +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x6c62e582 AES_decrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xc30fcbed AES_encrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xcf024ae9 private_AES_set_decrypt_key +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x60680c21 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xd15935bb crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x28865246 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x6c66dfe1 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xf391a5d6 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xfc4ccf2e bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x0e5f9616 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2778ed36 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x292a3c84 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4091b18d pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x44878d1e pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x524b870a pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x86fbb09a pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x8e4f481c pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc5459be9 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd1019448 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xd80445c0 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xe5658cae pi_disconnect +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xdd8c55bf btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0708e7d8 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x25f189f9 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2a80a9d5 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc40a7f51 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xffdbaba3 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x26ee0785 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x64df1f9d st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa03448a9 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd73da7ba st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4db19fa8 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5ea2773e xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb2434a39 xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x11a11b88 caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x37833b97 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x3e0c1469 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xb6bf0033 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xef0f4ff8 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xf5a5a305 caam_jr_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0f0da2fb dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x21f03128 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2e97c9bc dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4d5c141a dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb0ff1053 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xba255c1d dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/pl330 0xde4e243d pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x6034ecad edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x087e0681 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a5672bb fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0b2d8eb8 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ded20b3 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x133a5bd2 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x17c6bba3 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f61d263 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21a94957 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x28c4c052 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d5005f1 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x443e7304 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x50d1e56b fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x614ebaab fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x78246211 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fc62a58 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a33459e fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9bb244a5 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc4ac9704 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc5fcde31 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc79e7cff fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc2d1c6e fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd1bd5ed6 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd94570ab fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdc0cb2b2 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe6c494de fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xefd9e26c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/fmc/fmc 0x0b725ab5 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x16a0c5bd fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x4c1949f0 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5dc29989 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x6cc62087 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7c7cbf87 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x86742793 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8d3565cd fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x985af57e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9f896219 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xaa681d07 fmc_find_sdb_device +EXPORT_SYMBOL drivers/gpu/drm/drm 0x016d9112 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01935a6d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a34578 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0487138c drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05148365 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06ff832b drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0748b460 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08187326 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08ed727b drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aafef36 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b536f13 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c7fee97 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dd34008 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e4ed97c drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ef64058 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fc4cc47 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x102ba011 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10a4ad4f drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x112e4955 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11a4a846 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12e1fee4 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x139742d5 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13ef9d3b drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f1cceb drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x164db3c8 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1662a036 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x189e0ac6 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18d30503 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19daf325 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a79c2b0 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dba666c drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1eed46ed drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4e0941 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f535612 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21714bc9 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21f12928 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x229801e6 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22c1d7a0 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cb3e42 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2405990a drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x253cbeb6 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25d206bf drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x290200c6 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29be4d9e drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29c4061c drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29e89d3c drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a39f634 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b099158 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d9e5453 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e75d1a2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f475136 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30710ffa drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30c94d87 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x310857a4 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x317f545d drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33da614f drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x356a3005 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x394065dd drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a7b89bd drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aa1c42f drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b13fae6 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b5db727 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7a8f6b drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bc4759a drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c705c24 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c84a8b1 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d60d3e7 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fff6889 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40695173 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4350fc91 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43ea80e8 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x453ccda5 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45c22405 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45f7be97 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46a60d59 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4750dee3 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f0fbe7 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x489df681 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4969bbb0 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49a0eb71 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a5feab0 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a7ec9a8 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a85cd97 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d82f5b6 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4df616d9 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x504c181c drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52f1b22c drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54966fdf drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x550b0596 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x552d58ca drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56a3b7b7 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57ce9a54 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58853b32 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5907872d drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d9eafc8 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dcef3c8 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dfbf823 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e338fc5 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6de6bf drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f9856e2 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x610e8991 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6178bcca drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61aee645 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62d55765 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62ddb099 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6435e44a drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65b8fb2e drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x660699b2 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6686ec49 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67dca10d drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x693ca277 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x698e1f3c drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a1d4d1d drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a88738a drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0cf04f drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bb20dff drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cdec24f drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fa4c4da drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fe18cd1 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x702c99d7 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70818e0c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x711c22ac drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71450d82 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x722155e1 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7434ad20 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7598095a drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7afecbc5 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bbe21b3 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c7bd651 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cf543c3 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d0640b0 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d1f85f5 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dee75e3 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7df0bf87 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ee6bf22 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7effe871 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f9823c9 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fe2e63a drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80a65e9d drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ead55d drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83552fdf drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x836fa89f drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x850f4781 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8680c1b4 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86fa8bf7 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8920a552 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x893b2231 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a223730 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d0c9566 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d27c3c0 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d63688d drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d9135ee drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6ce072 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90046da9 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90479700 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90951e3a drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x912df113 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92308ad2 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93821a8e drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93bee9d4 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9519384c drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96ccc10f drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97f61f1e drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97fad0f5 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x991467be of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a327682 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ad534cf drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ad70da3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9aec8991 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c032a79 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cfd35c7 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f047ae5 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa142614c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1888d6d drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3163688 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4c05028 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a19fbf drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6591be3 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa70297c0 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa93da389 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa95cd680 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa98dd7fe drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9fe0d6 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaabc628 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaeff4c3 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaf8856c drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab4e6a8e drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabda311d drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae9c822c drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafc3e70d drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34a093c drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb384c19f drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39aa9d5 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4ad2d42 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb529dc01 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb587fcbd drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6e95534 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb70958b6 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb747915b drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb87f9492 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb927658b drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95d5671 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbefe8d99 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc049fb03 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc07eb464 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1c606fc drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2e75ade drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc42f5d52 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5f6ff48 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc691ea93 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8437ff5 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9475f80 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9ab1226 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd729022 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce4a5b74 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xced1bc2f drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf788be4 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfb38cf4 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd135f869 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd25cd292 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd270130a drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd37fc51e drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3cbe15f drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd459b164 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd67f7cc7 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7bb5523 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb29e142 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc072bbe drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3e62bd drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe055b98b drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0885e03 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0a8c09d drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe21554ee drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe22fd89b drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2fc5784 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe30effba drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a46134 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3d93f27 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe44febd2 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5274e44 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe646aefe drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe717ca17 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea3b27b3 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea7e7d12 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea9cace9 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed3d8d68 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed3f0132 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeecf6d1c drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeee94dc8 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef247faf drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefbe7af5 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeffbafe9 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf34b9e92 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3955786 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3c775fa drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf579eeee drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5af667d drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf631c9aa drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6676446 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8803188 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8ca5ddb drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9976bd8 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa91e9d5 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb4d66f2 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd38be76 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe467f8a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe795433 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe9517f8 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffa76edd drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0063ec7a drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x027efd65 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x038048cd drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04e8bf4b drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06f94fcf drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c43088f drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c664181 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d901267 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16826793 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16edf28c drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1937561c drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x199228e5 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19e7ac13 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c2ac5e6 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d5e93dd drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x222969c4 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2712521a drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29ce6239 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b3f1bc6 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2dd52c96 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3110f13f drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x317e96c3 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x320367a6 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3af6835f __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c2f18ef drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e6eaf33 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3eddb7f1 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4064ccd9 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4329f9b0 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x434b6e06 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4379dd35 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47526f38 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b2f2415 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ecdc73b drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55f9f568 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x570e577c drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5713bb24 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57c826b3 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5837bfd4 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5be405b6 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d281347 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e459ee3 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fa3aba7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63ff946e drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64f801fa drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66ae9a02 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66e32c56 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x676f15c1 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x687b0034 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a69faaa drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c6c196d drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6dbc922e __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e2e8bd5 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e618a9e drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ff341af drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x739e1e66 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7655a9f5 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x766f8c66 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x774465da drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77ae239b drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b384b08 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c9866e7 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e1391e1 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e983b4d __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f755d9b drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83263a4c drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x838d0953 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8584a4c9 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86846577 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b8449b4 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c19ce80 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f91fb86 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fae0e74 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fee4029 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93080056 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x967f8519 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ba6b2b1 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bf0f458 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c4c0fc4 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f76ac1e drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2a6f7ba drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5dec3eb drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac9b1577 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad0e2ad2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4ebfdf7 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f8fd6b drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7a4aa51 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9f51009 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba7ad907 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe5f928b drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc323fca6 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3e7a611 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc51f78f6 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc57226d0 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc60f4cfa drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc62c5a69 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6feaca7 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc85e6502 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbf264f9 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcda46512 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdfd5c42 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3b3f02a drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4a23b8c drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4d73c1a drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd65e50f1 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7adc601 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc3e0dd0 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xddd3413d drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe32d71c6 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4008e47 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5f945b1 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe60b35af drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe78a28c9 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecc31357 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf24a500c drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf36303f7 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf54b88d0 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5772c2e drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6fd31e5 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf74ecddf drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb80b4af drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfba10c98 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffa25bb3 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffd556c1 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x028d5f97 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0322f306 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d069c93 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x136ec7fa ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15064fbc ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x191d09ac ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x192a4b04 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a0f0969 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e702cbb ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e7c4bec ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f381420 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25b1f690 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25ce0652 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c7fac9b ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2dbac402 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e1eb929 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f905b91 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x363dba87 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x422eb3da ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4628b006 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51532c63 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57522041 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8bc4b4 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f77e31a ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61260837 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x612d3968 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6bc50453 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fcc5617 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x724189ac ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x784092b6 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80a7135c ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83858bcb ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a8389a ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8589758d ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86bb8a6c ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cdaea17 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94c92c0a ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96f1755e ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97fdcdbd ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99e9c6ee ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e8eb144 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fd460a1 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1a69a1c ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6576738 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa6f4658 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf9c85f6 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3c3314d ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaffbb06 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc71acb3 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbffff3ab ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6f9dc4b ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc79a3ac3 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce3c8bd8 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4e73f23 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb4eac46 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc7f395c ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd7484d3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8148f6 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8cc064 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x03ff389f host1x_job_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1aa04cc2 host1x_syncpt_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1c25d035 host1x_syncpt_get_base +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x2a6db695 tegra_mipi_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x39be814d host1x_syncpt_incr_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x3b96b1f8 host1x_channel_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x43799a4e tegra_mipi_calibrate +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x5a77027c host1x_device_init +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x60ca879d host1x_syncpt_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x6a335b70 host1x_client_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x70184d75 host1x_device_exit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x723ebd82 host1x_job_alloc +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x7ef5ff2e host1x_syncpt_read_min +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x862bb4fd host1x_syncpt_incr +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x8b79f6de host1x_syncpt_read +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9173b7db host1x_job_add_gather +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9451a33e tegra_mipi_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9c6f4c72 host1x_channel_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa158b6e7 host1x_syncpt_base_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa547894a host1x_syncpt_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa54bfecf host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa59ada04 host1x_channel_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xacd7089d host1x_job_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xb7ea5094 host1x_driver_register_full +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xbee87db2 host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xbf9da726 host1x_syncpt_read_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xca0100d6 host1x_job_submit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd5fd50a1 host1x_job_pin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xda760338 host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xddc5de74 host1x_syncpt_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xe994e4d4 host1x_job_unpin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xec1c586c host1x_channel_request +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed251238 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x1b774b28 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x417a2607 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe4347f8b i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x1be3cdb2 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xef38db10 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x2346c5ba amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0cf740e6 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0fdefd1d mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1c039eec mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x24251ee2 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x25f96b05 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4fdc8d72 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x513e58ef mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x59b8aef4 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6601e08a mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x69d6d98b mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x837bb3bb mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x83d562e0 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e9efd75 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x95bf2077 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb9053b5e mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfb624eae mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x54885d0c st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xacf1d085 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x4501472a iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x87db2b2e iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x0a09719f devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x38d25eeb devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x8ba865bd iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xea23d877 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x009685d4 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x169c5bcf hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x44423c18 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6e1a2fac hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x91e85790 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa26ce486 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1e32697d hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4291a060 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xc99bd6f5 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf1f1cdbc hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1359537b ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x57dca13e ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x59a9734f ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x676b780a ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x69ad450d ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x7ccfb6b9 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x88d44fdc ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8c7fd634 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa4c61ed1 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1412a94d ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x21b4be69 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x44a3aa0f ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb58d146c ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf23e5ddd ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x17dd8789 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x806b2396 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x87264ce5 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0afa63b1 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1eea30da st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x25a793ec st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2a1df46b st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x832aec85 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa9ec2af9 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaddc5474 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaeae3dbf st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb0694097 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb8a62219 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xba7e69c7 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbbb075ee st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcf18c4ef st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe653f0bb st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe79950ed st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xec45f5d5 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x0b88f543 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xea010957 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xf598670b st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x4b3cbc52 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe0538f41 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x9ab93b59 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xc90b5213 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0057582d iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x55475abb iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x580b464d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x617b0747 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x69bfbc7d iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x6b387f37 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x7cb4323f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x839685db iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8ce9cd6e iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x919cec30 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x9cdc3729 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x9ee96417 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xab901430 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xc28502d5 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xce134b52 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xed34e968 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xfbee5716 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x58ff9d0e iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x6c634bd0 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x009149f7 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x46a475d3 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x9ee9b6e0 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x60e60030 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xef4f0ddf st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5347cc38 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5619e0c3 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6d066aba rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7d7dfe19 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7df81f32 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ec529cf rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x001259d9 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c64aba0 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0cfe369f ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0e3b8f39 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x13526bbd cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1f58480f ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x31b7290b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x32586660 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4fb90921 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5672e9f7 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x56b7720e ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x626cc992 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x683fa4b3 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83d74559 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa67e1e5b ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd23989fe ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdbbab842 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe080aa62 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00131bb7 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01f51588 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0571bfc3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06a24f72 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x071e0431 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x077c6840 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ace25b8 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f51ba00 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x121d7385 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x126fb88e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x132ca1f5 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16a9ddfd ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18035456 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a962d0b ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bf71f66 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1de5d7be ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a7347bf ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2bbe99c2 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3950c2ba ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39c9bd5a ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a3ce2bf ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ab5a00f ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ba0c21a ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e290115 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e858e76 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eb9848c rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4098a78b ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5258fa7f ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5518d504 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x571ad726 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a07eaf2 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a396650 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cf8e4ba ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x600db103 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62c6e970 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x633ad9d6 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x656e7853 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x692523ac ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b333a5e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c53f2cf ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c6727b9 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e7e2cf7 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71196996 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77a31a0e ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a0435f3 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8100b254 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87c525d0 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b124c39 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e67f673 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e829fce ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c253921 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d0f11e1 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e3c4567 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa08fd6c6 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa60fe7b2 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad0a4813 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf3c6561 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36c7765 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb565db0a ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba51bbb7 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb215e00 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbef7b2f6 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc007c2c7 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5d7692a ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc73b4966 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca55551f ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdf90261 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfd8d490 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0c5bed8 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3a29908 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6824d87 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9a4fe12 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddbe1cce ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddc2e2c4 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe03f6f63 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2f52b70 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeaf2093e ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefee6f74 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3e0e4d5 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf62ca8e0 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf69bc17b ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb01bf16 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbd777ce ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x06eb37ce ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1f0edbf7 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x224fdeb2 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4fcf432d ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x63d2dd8b ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6a8b1d96 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9aaaaec5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xba5a5c36 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc0818355 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0fe6f70 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd119dabb ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd29fc511 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe8699d98 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1228d0c6 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x264b36ee ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6cf5cd53 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x76925aed ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x95a73dbf ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb7ad2b2d ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1ffbc09 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd80aab2e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xea8f8337 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8c122431 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe2e847c7 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x12e23207 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b43b6f8 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x258e2ed7 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2d584dfe iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x38faaf7a iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x39294909 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x691a4872 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6ddfb7ac iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7d51160c iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x823a9820 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb11f3f3b iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbf8801d3 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd359e14c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd578ac5f iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd57bf71f iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0760e7d8 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0d33d778 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18d23226 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1949f869 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x24af8cc4 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a2e7cc4 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x37e51bf6 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3e2f3640 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x509e7b99 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x618fe2f1 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6b77ecec rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x90185478 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xabbc3ca8 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xacc57234 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xafad7211 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb303bf68 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb3bdaa2b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbf0d58cb rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd38e1d61 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2241811 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfcf2908e rdma_connect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2191317a gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x309d7d68 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x32284e53 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8629afb3 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x98b30bd2 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa1af64cc gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd42d7ff4 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd5ec4df3 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf30b0abc gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x2134670f input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3edf3851 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7172103d input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x93c06cb1 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xedb70636 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x35b8317d matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5a6571eb ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6d0f41a5 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaf2db537 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xabb59750 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x184f3bdb sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x50686d5a sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x52b1c3cb sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x76866509 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x78479885 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x84c19cf6 sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x01f10c9b ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xed7d5c83 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0ea63cf9 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2358190e capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2448c051 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x289c3f1e capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5d5f3877 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x736f373f capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x78269eb7 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x953b22b1 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc02308e0 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdbd8a1e1 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x18fcc658 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3109a8e8 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4217afb6 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x48398bac b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5adc7ebc b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x62439775 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa16d07ab b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xacee7773 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaf90d62e b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb607a09b b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbe6c2140 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfb49483 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe055a1cc b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf440557f b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf7158d49 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x102e1ceb b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1df1c92b b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2998f9bf b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x32e5d9e9 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3caf138b b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x71c63a49 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7f89a0ca b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x811ebf4e t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd51e016d b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x2e471792 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x393884bc mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x858a9b6a mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x99582c31 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x592d4738 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc5d9db8d mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x4dd69c71 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x58d2d0fd isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x96f39fc5 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa636ae5d isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa69a9e30 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xfc57b0f8 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x7fa72769 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc4b0968d isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc50f12db register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x07830b0c recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x099f05a2 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x09ab875d mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x11ba5828 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x266b81fd bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b8aaa11 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x53e5dab3 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6493019e mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6d183ff6 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x87882fc0 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9238cb48 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9555cde5 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x95f62e1d mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa1532a13 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc55819a4 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe1ca6897 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5d4fe62 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe692872c mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe819b10a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe89e4607 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf4799d4d mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf60de08a mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf73f7a27 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x325a7bdd omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x590a7295 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x81a84d00 omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xa6f92c30 omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xeee3db45 omap_mbox_request_channel +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8dcfb979 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc62faf27 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc76d2736 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8fd4bac bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf91ed5c0 closure_sub +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x0f13cff9 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x53843fe7 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xcb310cf1 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xff8a9b92 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0ecf2f7c dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x21748521 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2a79a2d4 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x51586fe7 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x548f136e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa3442839 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x9fac1f89 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x166f75bf flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x38f89314 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fc1b592 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5742aa2f flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5e960b4e flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6c0bc5df flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x79e3f8b8 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x844a34d0 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8e60e5d0 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8eef80c0 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd13622aa flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xec0716db flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf9095cd6 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x52a2f82d cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x57b93705 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5eb5709c cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe104999b cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x6e7e7742 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x4c258ca7 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xedeebbcd tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1114bcf7 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x123d0251 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x292b5ab7 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x421870cd dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x490400fe dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x49f2b077 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4f2d1cb0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x543ac023 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58f78e73 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5bdd69b1 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5eb8cdef dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6bd20026 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6f3ac43b dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72180695 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x735fc542 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d6fa0c5 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x90846ba7 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96b02250 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2082b35 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab20b852 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaeebffe8 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb55e26d7 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbc33558d dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbda7cc1f dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdf82bd83 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28d100b dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf4bdcabb dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf63c4927 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xffd06665 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x8510a111 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x6507f684 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x30fa6589 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x24855203 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x348dd604 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6dfa65cf au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8c7011fa au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8df178b9 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9d4d60f2 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xce110ad6 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xce1b6693 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf452f31c au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x3d5d5dc0 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xa6d095f8 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xc5c8225d cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x920b4b31 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xfa1dc56f cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2bbcaf54 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x66ec25aa cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x8548abc0 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xadfcdb37 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xbedc9ca5 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xcc8e389d cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x7467295e cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x02ccab5d cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x69291795 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xc61a9106 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x192f410c dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1d5356e9 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa36cf5be dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xac30e68a dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xafd7d2df dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x03303fbe dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0370774e dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x057c0d0b dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x09586196 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x23fdc2d1 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2e737bb0 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x31bea0f8 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x32a4a70c dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3a03e051 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3c51abf8 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8786b25a dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa19137ad dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab86550f dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe104c64b dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf81dc07c dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x883df24c dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x17949958 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x597e0057 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5f76893d dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6d5fec60 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8a33c172 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8ded0a24 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0aa1d809 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2975505e dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8d2f4642 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdb25d1d1 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7d247773 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xffba30a2 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x56924c97 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x646dd0e5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb4d90d08 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd1970fa3 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd3e4c2a2 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xe3dc66fa drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xaa5b8ff5 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x72dcfc87 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x418288a7 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x6737c627 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xac3e9ddf ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x92b232de horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xaf661c3d isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x72ff3351 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x767f1ab2 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xd1bf19f2 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x5173c3a9 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x84279499 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x4446faf4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xfdb5ed8d lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x38ca1346 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x899f00ac lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x70d04c35 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x98a6cc54 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x778be0c7 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd750a05a lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x046c2327 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x7cee796c m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xc0643278 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x5387bdd9 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xf838e71f mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x8759247e mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xead61410 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xd6e5853c mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x9ed36990 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x0b9c9886 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x30c899ef or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x4f482f5e or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x4904f7a8 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x4600a197 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x942c7454 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xa59f6c09 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xb093fcd7 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x9fb7e99e si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x7e1bf7b0 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xc81e9554 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xe9351435 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa10a54e2 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x07de858a stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x092732a3 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xcad90ae9 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x6a48367b stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x9723fc1e stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x25974ca9 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xf375494e stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x74b8157a stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xf9fefa45 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x9441f493 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x1dc4ec8f stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x23ed05f0 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x9da204b9 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x39cf2504 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xce00cbc0 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdcfe588a tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x92e9740b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x17be274f tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x1ccb220a tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x35b16c4e tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x82644271 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xea9245f5 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x4fb8995f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x1ab0b96c ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x20e3960f ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x4b97134e zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa4f93892 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x2af719c3 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x002d9f40 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0728982f flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x12f5e0f7 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x302afbec flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x320804a0 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7361036f flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc417fcf6 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0898a029 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x26063219 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x314ddc1f bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf1c36242 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x1fee6bbb bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xdc17c1be bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf7e0d734 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1cd6b880 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5f36caf4 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x84902b55 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x85aa6858 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9b7b3900 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xba0c15ae dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd6437fcc read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe91ae91f dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf4379643 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xf8ec9c85 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x3e7f94d7 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x58dde519 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa7f81130 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc4a183b7 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe3bf0f96 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x1c89bc2c altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1c068cb2 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1d26e734 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3daf06ea cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5c6e1d57 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5dfec2a0 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7360939a cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8503b5ce cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x1cf6b38d vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf8c4b8af vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x37b37d21 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x846fd41a cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb7510aab cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd6c9a1ad cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x16d9828f cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x73cd045c cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa2ac1946 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa90f0137 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd77d75d1 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf5b312b9 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfc4dfcec cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x007d04b8 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x08cbfca3 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x16f49913 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x204aa148 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2d122fc2 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3157e781 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x37f37707 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4fae8e66 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x608830c3 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x76be8c48 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7e50746e cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x86404394 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x88cc6850 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x899d9f51 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbcb673f9 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbf8a4024 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xda3fc5e2 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdbb9bfc5 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc76cc29 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdfce71d4 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x06f0e9dd ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14aca381 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x19c45cad ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1e47f312 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2de4d7ac ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x41545156 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x53905eab ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x66f5ea60 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x77a1a29d ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7b8ac9eb ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x83b82629 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x89785c23 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8cabb671 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xab2acbc2 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xafd7f673 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb2abb4c5 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xca33f349 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x00e55faf saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1275ff88 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3ede636b saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x63afa2fe saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7caf8f5b saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x80744ca3 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8cf018ce saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb7c427fd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcc3521c9 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd5a5ed7e saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd9524fbe saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf47ebd28 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xe1d41e63 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x083c6c7f soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1e7e7af7 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3e0d96fb soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa046f3ba soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xacf8610a soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xdde0c67f soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf8a62b94 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x35562e36 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x7c4c67f1 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x92f2b576 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xbbb2d74f soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/radio/tea575x 0x05f5d871 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x09f44596 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bae49ba snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x67ce6b79 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x79d57c63 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa4feb80d snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb840ccf3 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1ce40519 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x63d1e2d3 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7dae499f lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xae84659d lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xce02fa67 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8764412 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe92405c0 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf22afb95 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x20bd5e2b ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf11b5c6c ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x1348d7ab fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xfe01006f fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x18271da1 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x39313a79 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe73d835e fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x74c5002d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x592a2b63 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x637e9023 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xe0b696d7 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x125afd8b mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xfef7def0 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xa7e7aaa3 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x60e90db1 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x8775c427 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa5e47622 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x852d7f58 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xc3648952 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xece006e0 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x03266ec1 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x37fb254c dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6adbed95 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6ee81111 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x99c52819 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9a1ce0ca dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xad372962 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdf2717bd dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe2aaaffb dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x16ee7eb8 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x18f3e0a1 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1a557daa dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4049dcf7 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x680aa95a usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x78285bdf dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8938fbcb dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x3fa63bdb af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0b9218b6 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x108b840e dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x116af825 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x31a7b37e dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x47c56bb5 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x47e7b1cc dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa95fa2e2 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xad6b99a4 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb4e1d383 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc5876df4 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf19b2e6e dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x0abdea46 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xbe11552c em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x06a75244 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x445d68d7 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6370029b go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7e070357 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc433b71e go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xde5d3137 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe6800ac5 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf0e4b0cb go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfe083f32 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0e903f9d gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1b90afd7 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3524a55f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5df0f701 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7badfa51 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb2fea4bd gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbbf94afe gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf1c56d54 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8e7097c0 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x94f21064 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xe4d81d72 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8f383af2 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa4ff3b38 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x6f2dd060 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb60a0e82 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xe4655dd8 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x087ca04b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x319162e3 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x68fbf47d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6ec0ad28 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xaa33135d videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xabe9c709 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x21fdcd1a vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xf21c2710 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x04e68e33 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0da069b8 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x2d99a5a0 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9ea3430e vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xad76eae4 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf690aa36 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x167ac6b8 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0203e8cd v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0341146b __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08856b4e v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bb75834 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ccabe5f v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x184698a6 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e3f5008 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20328474 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21251ed1 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2307f795 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29aaf641 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2afcef35 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cd85681 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e017fbc v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f14aaab video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f7dc0ac v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30e24927 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35567033 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a56c91f v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ce5d408 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44f129f0 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45843b8c v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4aec2371 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d9c47dd video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x53165b60 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x532f20b0 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ed36d3e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f432570 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68a6eb4e v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d292664 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x701d920c v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73c36669 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7796500e v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7fd1ca7c v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x826fbab2 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x861ee157 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87c0d141 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8988c048 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b1d5750 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x921c47d9 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x945c8bd6 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x99e806d0 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x99f14293 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b663642 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2e7f557 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa92d862b v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac91f84b v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb19469f3 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb296a10e v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb35289b9 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb4b7d064 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba00426a v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb897190 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3aaf252 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3e57bc6 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc26c7e6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf799bf3 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd04446ea v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4b9ebf8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda5b6a49 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdaf74998 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde2fd8fa v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeae7250 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe461604b video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7308bd8 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8f6f4b8 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee323252 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeffca1cc v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6cb51d3 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8220f25 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfaea4b88 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc46a79e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc7667e7 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0548528e memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x34e172eb memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4189947c memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4cbdd2bd memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6869ca23 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6eb56f7b memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x72b642f4 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8af61e8a memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc4f61d93 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe0f8f479 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe3677e8a memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfd2bc105 memstick_next_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x025e6a8b mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0f85c831 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1198de99 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16eaf49a mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d1ec828 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x21c39033 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x263ebf76 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2cf24c52 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f07a13c mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x473dfee4 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5819dac9 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e1b865f mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x62181e69 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x652a724d mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x70aef244 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x76125ea1 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7b4b973f mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x86028ae4 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x94ae74da mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c41637f mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0cc5933 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2124aec mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa554be58 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb206bb44 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb6c496a7 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbad12f61 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbfc02e24 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc2e3179a mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfba176d5 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0bd54388 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x135e2c3a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15edb142 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2b9fb1ad mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2bc4e6cc mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b782c5a mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3ccf9326 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x403b7b01 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x43d7b236 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x46d52d64 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4f004582 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4f2a278d mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ccec85c mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x732974ae mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x75b82174 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7d631170 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fce95ed mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ccf850c mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b01f276 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa2d985f6 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa5558257 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xabebfaed mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba7bc8a1 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbe3bcd0e mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe7cdd42a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef6c8423 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfd96fb12 mptscsih_slave_configure +EXPORT_SYMBOL drivers/mfd/cros_ec 0x5f4e89d3 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9ca6c643 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9fe00d51 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xf9631b19 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/dln2 0x2de58aa6 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xbb921ad6 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xd954e402 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa8e09350 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb3b65552 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4be42c03 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4efb9466 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52e15652 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6eb3b7e6 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x90c73745 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x94264cd8 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9615242f mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbb80d56f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcb23f2ba mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf4facb3f mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf8bdad1b mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd042c9be qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x5706a717 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xfe56c37e wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x369c2f70 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x78b2d7de wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xd5ea6e6a wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xe7d0d5f3 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd95069eb ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xdee66c43 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x14bde2d6 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x84f92e14 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x353af688 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa3f17f88 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0fa5f4ca tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x209595cb tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x339fa048 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x3d332710 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x3fb6bc5c tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x493067c5 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x5956139f tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7fcc6efd tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc06bdb51 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd58863aa tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xec8ac9df tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf454fb9c tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4affb0d3 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4e72e0c2 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x841dff08 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xf587b968 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x0ab436c6 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x0c5d0873 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x332ca2f7 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8a1d8848 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x902c0b7f tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xcead0cd0 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x05fc473b cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x52456553 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x76e5f6f6 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8813b883 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x887a6ac7 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcef5de5e cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xda445ef5 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x1c32d5af mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x873f5e4f lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x05276496 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xfeec0a9a denali_init +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x43b5577c onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x77069438 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x964fbce8 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xdd41d536 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ae6e559 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x32cf728d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3f60a7e5 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x45220c0f alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4e029383 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x525e1436 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9169aae8 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa8584c2e arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xba217a5a arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe2fec39d arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1fbdeba6 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x47a6ceae com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x943a75b6 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x02d68cda ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1a809556 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x500ea48f ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x589483ae ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6f9ddda5 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x77ff9732 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xabee8872 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe1233c92 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xea822704 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9b59550 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x40bebcae bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x8504e169 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x12fd6664 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2e8994c4 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x51c0cc7b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x57bae1b4 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x69014a25 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6a499fb5 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6c1db533 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x71c0ab1f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7cdfec0b t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8a04abaf dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9298dd2a cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x982ad5df cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa26967ab t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd272ebd8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd956fd8f cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xde5a6073 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0010ef19 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0571d13a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0ec3aa1a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x11e9b480 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1a3a5647 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1d9c46b0 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2ffafc2a cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4332cb4f cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x448f3b34 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4922f65f cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4de31aaf cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5076cab2 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5f499b15 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x60d4b1a3 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61476e67 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67618ed9 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6a7b8c29 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7091e8b6 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x730c073e cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f641285 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8bed8f36 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96da54c6 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b41bb94 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9ced117d cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1ca4a60 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb6e379cc cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4542f76 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc531fffc cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00a4f2f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe74f3899 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe8d0f0b2 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe9c15ac7 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5cfa2db cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9f41423 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1d1d0647 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x36668db8 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x80817e5a vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8ebb9274 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd7543b22 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe7207636 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x06dee58e be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x76adc26a be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x0ee20cae hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x37d2540e hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xaa4db230 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb42a52c4 hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xf8948342 hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0077482b mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x049ef6ba mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x111cbb1a set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x167a18ce mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29817ef0 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3830b23d mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39ad2339 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b53e8a4 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b6f0951 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bebe436 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67937b66 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b596a0e mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eb356df mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x725723f3 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x765138af mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7811b24d mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7aab0e11 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f277297 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83584992 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x892f7a4b mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cf12427 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e011f80 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa62b1166 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa67e71a4 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabed06f1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb00c4c77 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb955fd62 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb4a9c3d mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc16479bd mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1653a77 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc57d13c2 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc8043ab mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfc4e268 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7c35a8d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7d31e57 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb9b5fa5 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec5577bc mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeee85f8f mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05c123d2 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x144aa9c5 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14ee2e49 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a0f1814 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a5d8f60 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x363cb939 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38e1de66 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x435d7374 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44f8f3fa mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x489a40ab mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c88d509 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ec98b3b mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f04efee mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x770c3de5 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80c4a3d6 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84790185 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b4fa11b mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9def7025 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0ab7d6c mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2a3eed2 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa765f557 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7aaea76 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf5b982c mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfe70b0b mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc00e5410 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6e7d7d4 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb2fbccf mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd37f0191 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd54b73b5 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5807477 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6646160 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe773f140 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7db5c01 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe849b2b1 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe96567c2 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf148c6d2 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf72d5991 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf91b9cf5 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x38fd5acf mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3ac7aa57 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ec006a1 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd54b30c4 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdd6c272b mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe7cdc5bb mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe8a889a3 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xc6b54968 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0338033e hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb85b3800 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc7a970e6 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc88402ee hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe25d82e9 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x06966de2 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1615d507 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x26b09847 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x37e90808 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5d6fae22 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x636d5e74 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x66b554e8 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x77a329d9 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x899b33d5 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xed56faa8 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x01216186 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x4f42ca77 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x8d7c8942 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x9c899774 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xa014a140 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xa928ab1f mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xe7ead58d mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xffce4921 mii_link_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7a0d2c1e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7b90b284 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xb0fd98ac vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1386da29 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1b8d0e8e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x8b5abe8b pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x2be69e68 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x47e047d3 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x56db95c8 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x75da1e42 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x76bc4972 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x85f6eaf4 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x91932e32 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x927b7249 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xd1859276 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x142e9522 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x21c48310 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5c483d0f cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xc263cdc0 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0d95ef36 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x349ddead alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3b9ef58b attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4d3f3722 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6106d02b hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x66085079 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc8c5142e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd9d2ec94 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdccc0fe1 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe2901c6c hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xff04e978 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xfa99a961 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x24c66f32 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x37930086 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x445b3706 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x60c4dda1 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x68013b2f ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x72fbe131 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa4a4dfe6 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xad5dae54 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc35fe390 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc3bc07af ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe39195fc ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xec27d3a7 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0163a687 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x06af3cdb ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f766c81 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3fd3567f ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4cc94742 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5e6571a1 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x65412df0 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6c8c6663 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x72517d89 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xadb519a6 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd5eee4ed ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe6164869 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf00e9cb1 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf29a0399 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xffa22d4a ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x18dfe059 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1f6e2ccf ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2bc75c1e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5860dc7b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7169b97f ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7fc907b4 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8551f483 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9949959d ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb5f523bb ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc8c162de ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf33e059f ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0284fe00 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1bceb217 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2180c299 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5dc02d70 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x604133c3 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x64df528c ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77951efe ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7a9a9122 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x82de17ad ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8acd6929 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9537b1d2 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x978f8a7e ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9a3800dc ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa8199a17 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb0f4b58c ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb60f5453 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbc43d4cb ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbdec9a37 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc4913162 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcd5d9cb2 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd331302b ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe3c771a7 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf8e305ba ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02ad3c74 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05fa1fc0 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08f83575 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a6bb389 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a9c8bcb ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c8d2926 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0dba21e5 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1318163f ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1375f550 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13dd7e1f ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16565a51 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16854174 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x189d235a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c82dd62 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d670e93 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1df71468 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20e769ab ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2270a333 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24709af1 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x255fa0b0 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b024004 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2be4189f ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dce14e1 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3880e7ff ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ead162b ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ef965ea ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f504566 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40830440 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43276064 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43c4f2d8 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46491f68 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47fcb285 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4979b71b ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4baa6568 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c902666 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d782eb0 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e295194 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55e82704 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56036fe6 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b7b711f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e8d392b ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62f1fff1 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63208551 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64c70d5c ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6542293e ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x665d1904 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66cda69d ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66e56edb ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b988534 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d7888f9 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f5e8d78 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f9eda90 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x794fad61 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a0d519e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a1b598f ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a90bf46 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ba546cf ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8420c22d ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x854aed84 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88107c40 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88243c23 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8844769b ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d097919 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fb02cc4 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x949140e5 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94dd6173 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95b1a9f8 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9edf75a5 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee210e8 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4ee63c7 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6da9bf0 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa509169 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafc398a3 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2b9863a ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5faf70f ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba0f0575 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb505b3a ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbce670a3 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfaa7a82 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc030cc89 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc27073a8 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3cb8de0 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca00bf18 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbb6d9ac ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd001a5aa ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0e0ee3b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3c53acf ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd61d6036 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda6751f9 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8377f73 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe853b68b ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8ed9601 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8186e8 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb0c84c8 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeba76ba3 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xece8f6b9 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeed86b2d ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefe76d73 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf09a54c3 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf118eff3 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4011199 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf401544d ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7d5a695 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff0e9e9f ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x02756b62 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4074ad7c atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe14975fa init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1ea514ab brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3cd833a5 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4473c1c3 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7064282c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7cdaf208 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7fd452cf brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa7f30efe brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb3e36f7b brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcf9c0fe3 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd5841043 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdd654cc4 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe26a29f8 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf4285081 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06ae4506 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0bffb765 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0d4a66fa hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x33249f89 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x333788bc hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3be07053 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6080ca5a hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6a07f71d hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6df9df12 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x716ca12b hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x792c7f0e hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x81d31cd6 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8d4dc4dc hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8d68bc53 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9dd7ec11 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa5ce8bdb hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbaa18018 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbe5b71bd prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc114a6d7 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb24bc3b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda7dc583 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdedda200 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe18f96df hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf1bc2248 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfcc2589f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x021a2438 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0795e6da libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2100a9b9 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2626b8a4 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x26d60bce libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3c1417a1 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f427dab libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x464d29cd libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x55472225 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6aead37c free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa339189b libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa6ca95e6 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb123d74e libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8ae9a38 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfdd188e libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc53cd701 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcc023b49 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdcf6f74b libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef5d1669 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfa873005 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xff7be1e9 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x028e7215 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03bab065 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04b7637b il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x050abb49 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0603ca5c il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0789ee8a il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bdec2a7 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x113516bb il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14862255 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15b22c97 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a02dcd3 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c95705a il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21bf7566 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24fbd3d2 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2547b36b il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26936078 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a600dbf il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f81c0d7 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3037f80a il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x342e956a il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x349c9950 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35c7e47b il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35ebb201 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39401eb6 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a4826d4 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a9dca9c il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ad97d06 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c56e154 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c6a340e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d863c7b _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x501fb3a3 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50c150a4 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50d9629b il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53a8d0f6 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5447f827 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5527dba7 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5745e5d2 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58363780 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d2ef74a il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f0598e3 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x604a5cfa il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6383dcdb il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69e9ff96 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e85dd72 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71f7a859 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72172a56 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x764132f6 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76a1cd63 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78ca6db6 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ba91059 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80cf0d5b il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81574fef il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83074e81 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x891b1dc3 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a32c21a il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b222e5f il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c178b58 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e601f59 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90390cce il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90a39f80 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x944e64bb il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94bc27fa il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9633c81c il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99d48aa8 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bf24a02 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9eb9c4d1 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fe29168 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa31f31b5 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa516fb8b il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6b6fdde il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8acb29c il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa93cd1c1 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa981015a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabf507e2 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae3e34fb il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba19f4a0 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba7eb1fe _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdf125e5 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf3c7425 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4d5649f il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc85894f5 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc85cb313 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcabc0b6d il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb0376ae il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbac1cc3 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3811306 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3edef94 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5fd84ed il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6d29d85 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbc0d4c7 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2ef5035 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7fbcfe1 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe958dae3 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9c0e9aa il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0ae6d83 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3c11ae8 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4cc8410 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf502b03a il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x180d7a46 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x208d96c4 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x26bb7eb8 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x436814a2 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x496d7aef __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8f81067c __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xfd34aff0 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0228c1d5 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1a26a577 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x22345053 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x28a601e1 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3fd903bc orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x583d401c free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x68f35b92 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x926d9957 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9cafb002 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa31aa194 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xacaa2ac0 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb5da956b orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbb852406 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc0a6de0f orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcdb68761 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xde2d056a __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0xaee08851 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x04c2ffd2 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x09966708 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0a92f279 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0ddcc8bd rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x12a3185d rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1b02401c rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1c7e3c05 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1dcbf0af _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x37678fb1 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3d72ddb4 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4920e888 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4e4c0cf8 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4f8bb895 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5428d860 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5904ac67 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5f69f61d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x62ad294b _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x63230713 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x64ad21a6 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x67cf09e4 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x694a8bb5 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7050e3bb rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x76417283 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8603a49b _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x904d3e7a rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x949680be rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x96dffae3 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x990e8dc9 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x99553a7a rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa5b464e9 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa6af22d7 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa85359ed rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaaf5684d rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb04c6a1e rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc2d77409 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc4bc2156 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc60a97e4 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc8b55482 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd0d459a3 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf63203c7 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xff644db5 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x6966de59 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xca1a6f4d rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xeaf30c7b rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xf681f080 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x24cf9d60 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x43bafc4f rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xdac75e1a rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xf612e04e rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x006170e2 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0129c73f rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0435f265 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d55780a rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x21d9bd40 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x441e97c9 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5154645c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x56493f82 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x56989bb6 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x64a62841 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x66225ec4 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6eeea7cc rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x92ce76f6 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x96aeccd1 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9cc6bb8c rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9dd9f890 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa36fa822 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa3792271 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaa099860 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb150e59a rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb36ebb5e rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbf176cdd rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcd13dd6c rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd37cf920 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdbc14889 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xde8166ac rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdf9e4410 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe81f8745 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe8438a0a rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xff0cb115 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5b82b35a wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x75c8d74e wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb8b89621 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcfb085bb wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x16571209 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x2c896e6c fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x2ebaf030 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0x08b13b84 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf528c346 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1d3f231f nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1d785ae9 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x84d3e267 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x2f9f784c pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xad9ab5ca pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x359ecb8b s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x8cfe344e s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xcd6712e6 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x04d71a03 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x155f2c95 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x30aa6181 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3f038102 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x414f8d24 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4b601152 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x61e4d88d st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8264cfa7 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x98a8cbcf st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa0cdacb9 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb86877ea ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2dda6210 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x39c35e6c st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3e61084c st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5073f557 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x667f64cb st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7cf54180 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7f97d472 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x87fb2550 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8daa77cc st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa661a298 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa9c55420 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xab4d5d72 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb31dc9ec st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb9a340a4 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe629899b st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe6559592 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xecd2db0e st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xee081523 st21nfca_se_init +EXPORT_SYMBOL drivers/ntb/ntb 0x1dae72cf ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x46f97723 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x6ed5660b ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x731f5218 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xad0422dd __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xb0b83d26 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xb54eb7c5 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xcf61df43 ntb_db_event +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x13780ca3 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x0276a369 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x0c9a5ac7 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x117c3281 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x1723e330 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x1b4728e2 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x2912b7ae parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x29b091fa __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x3205e486 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x499dbc84 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x56c35c26 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x68920487 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x6d884fb7 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x70574e4d parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x856678dd parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8e38a25c parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x92e1bab6 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x954336c0 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa4d3b08d parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xabbbcca0 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xadf8e4ca parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xb0a2dbb0 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xb58db663 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xb760e6bf parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xb7ae6fc2 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xc05387b0 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc83a2d13 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd00e669e parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd24c3548 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xd7411f14 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xd84d0bcb parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe6d2b58a parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xfc0e499c parport_get_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x1eba3b4d parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf0edd61d parport_pc_probe_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x121972df iproc_pcie_remove +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xf7ef939a iproc_pcie_setup +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x01637816 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x308d933f rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x37cbc4af rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6457cd90 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x754bb2ca rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x91a30408 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcbba286c rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe4b29740 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe941da19 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfb953ad4 rproc_da_to_va +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x3bc4888b rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x458143d2 rpmsg_send_offchannel_raw +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x94a1dfba unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x972888a7 register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xfc991ce4 rpmsg_create_ept +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x9ad5cc28 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x165f90ca scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x22748727 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4d3c0453 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xcaaa7bbc scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0e02f757 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2117a02d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3bc3e372 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x66b156ac fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7578f28a fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a3042c5 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a4b1af1 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8ec4adc8 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x94681ca1 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb04e8cc1 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc060a7de fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf3d14d03 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0710aab4 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07ef886b fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a9fcd2a libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0f84f443 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14c5d462 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c835ff1 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35c88006 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d830b2f fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4419cf8e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f33d8ca fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5dbca099 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f930bf3 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7605845a fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a54f996 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8596d99c fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e2f9f01 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x991dd739 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d3280aa fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa134ceb1 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa14b7b3e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa291569f fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3736f6a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa5a8c058 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6d12d6b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xabbe6c40 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb5ed1db4 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbac3a915 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc88fcd94 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8eac358 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7c502d9 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9a88f85 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb6faa10 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdf61d6e5 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe01626bc fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2ece4d5 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe34cd396 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4b9c07e fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6a8a9fd fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8c60e3c fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf19cfcb4 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf217cd75 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9bbe27b fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfc6f0480 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x536884a0 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5d9519d9 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc6a8bad1 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe48f6ce1 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x6192c2c8 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x05d7384c osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x078ba8b3 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1208602b osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x14d56005 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c212de4 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1cb67237 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22c979b1 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c5edcf6 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x32a69fe5 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x37763e31 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x389fa329 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x38ca0021 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3baf8815 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e5b77ff osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51a8c0b2 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5550f59a osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6345fade osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6a65e0d5 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x748beb66 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x891853f9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x905bbaee osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x98a66793 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9bc38338 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa165e60a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa1b5e837 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa326102b osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7837f9e osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb80b060d osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd3f447be osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xddf92316 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe13ae2ef osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9c7082f osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf1f40d80 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2f955e3 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf3a5dbf2 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf8332970 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xada12784 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbcfb37b8 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdefe6722 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe3535cd4 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe436af39 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe7aff2ff osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0c1eb44e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x306b88a3 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6598a3be qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x766b8fb3 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8886d0bd qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x952c4ff1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x97e7c248 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa75e2905 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc3dc0e7b qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf3f1de10 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfb3d6b68 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfd0e9400 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/raid_class 0x6c58c1e6 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x7a9cea99 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xff1054b2 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x04c324a9 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x06cca551 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1cb53e9c fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2b42129b fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2eaf86e7 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5ce62d05 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x725a9c4d fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7959514b fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x90030c7c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a72679e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa84d04b8 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdffa7dfc fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe729de7d scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x03fcebad sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0552cbb5 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09564c39 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1dfcfcbf sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32d5df42 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x45b31582 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4af26367 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x58bad979 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5c976022 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x61eef00a sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6dccc0fc sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x72552527 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7315ba4f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x763abd3a sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c2b04c4 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x854e0322 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8577f9a8 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8666c890 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x912b7c14 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x91577b59 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa030b125 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xafdeef8f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5eb9940 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd92a408f sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe73c9310 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe81c3169 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf83eec1f sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfbb15b5d sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x420e9803 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa5730552 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xae035164 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdd30b864 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf0f6223f spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0de428cb srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x85b22728 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xcbb6565b srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xde248b95 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x33a3432d ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3c6bfaa7 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x45aa3141 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x462fb58d ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x47e6c2e1 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x48c893c6 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x777a84bf ufshcd_alloc_host +EXPORT_SYMBOL drivers/soc/qcom/smd 0xae64689d qcom_smd_driver_register +EXPORT_SYMBOL drivers/soc/qcom/smd 0xb7f657e0 qcom_smd_driver_unregister +EXPORT_SYMBOL drivers/soc/qcom/smd 0xeda44e54 qcom_smd_send +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x2f5501c0 qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x63ef36e3 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x932eb0e3 qcom_smem_get +EXPORT_SYMBOL drivers/ssb/ssb 0x02f30ad8 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x17a8f3a0 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x31732d63 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x3aea79c4 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x44896be2 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x58f3fc7b ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x782f0312 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x8aadbc72 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x9035ed70 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x9e9ed112 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xa2424d53 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xae90a726 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb9cbdb2d ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc7fe059f ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xcbafa71b ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd59f9649 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xdd636513 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xe9282425 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xeb17ac52 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xed774862 ssb_clockspeed +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0ad94cae fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x13943252 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x28c774f5 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x299aa130 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3366c862 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3d8f8874 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f7ed9ef fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x55aa2e5e fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58b79492 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5aef8cab fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5b6c852e fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6167ffda fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x68125a50 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6999ed8b fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6a18321b fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8f9484d6 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x92cd8cb2 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xab326e5f fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc7d6c596 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcc894b6d fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd4142a3a fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe0ecd598 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xedfdb188 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf9d4639d fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x40cfcac9 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6dbf7a51 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x05d20556 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x69d85434 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x71cce7fd hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa8d41f31 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xed2acc43 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6cd12a0f ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xef97ddd4 ade7854_probe +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x5d0e4318 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0xdaaa9081 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x10a10263 nvec_write_async +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x19c2c778 nvec_write_sync +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ea172ce rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a331e5d rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e4967ae rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30277511 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31459c6f rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3344b067 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33535a28 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36083c18 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x369610c9 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ae509b1 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3edba695 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42c8e1c9 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x46ad7fbf rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49f5a2fb rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x574c6fca rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x598bf0f8 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b48c615 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c1e7ccd rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f4301fd rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5fd056e8 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x61dcaf0b rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x627bf9f5 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a8e35e8 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6bf745da rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x734b79da rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74e66710 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76cb81f4 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7cabc8b5 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85f87d19 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86920a71 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x891e9ee9 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9db2f0f6 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa4cfe0bd rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5bfbc4e RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xabb8c3bd rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb9d859f rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc01aaa51 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc39fb6d0 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc79a9b5f rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xda50ce51 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc6d4013 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf81e281 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2cbf846 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xecc00e90 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed774786 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf02711c7 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1b7692e rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf37ee7e2 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe57d841 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff447f80 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x070b18d7 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x08a91469 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13203716 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14bfcce5 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x156228c9 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19ccf6be ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b311f22 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d3d9396 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x225bd243 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26656965 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2dc6011f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x326a1bb5 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a2ee537 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x402bf546 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x417a6234 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x520ade63 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x52c8c3a3 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x551b4184 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x586daf18 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67c37fd3 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b4a443c Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fe5dad6 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7481aa51 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b09f41d ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x929fb7a2 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x980e9b41 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x982cad0a ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a525e0e ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fcf2a7a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0cc849a ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa39041ee ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4b46807 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4f1a57f ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa54d26a8 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa58e5085 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb15561ca ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb33cc7c3 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4ff1878 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb928d3e1 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9b4db66 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcef14e27 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcef6536f ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd012106f DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd05720c2 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd232d4e1 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3400146 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5f76915 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd610af3d ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6f4cbf1 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe0b7f118 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe28f1e95 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xed5c4173 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2092fec ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x01d4c9d1 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x04a616e5 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0d914c8d iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x239414a0 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2cb971b3 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3211e122 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x326ecc37 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x38c45fbe iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3fd6fbcb iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x494161aa iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x600e94fa iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x83b7f90e iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x861c7b3b iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x97e369ea iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa1080bd3 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa8331426 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb01f64df iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8ac4e22 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8e6390b iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe9581e60 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe96b0029 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xee257940 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef50f4c4 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf253ce69 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf3dca1ed iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf3fd03bc iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf486c1b3 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa1339dc iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02f338e6 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x03460e28 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x08adfed7 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x09cb8e9d target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a75fef6 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d22f119 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e678b72 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x22108082 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a93c2da spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cf896fd transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e62be43 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x3233a1d9 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x36247590 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x395501ec passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d69d0e6 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e0d4e9b target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e395e28 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x40457d25 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x44ba55c3 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bf0695a core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e569005 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x577dc356 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x59bc88e8 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a800e76 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ba00f93 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f2992d2 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x60d6f25e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x69320ea7 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b0f50c0 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d9490d6 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f467242 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x77c02beb target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ee135d5 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x806a4652 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x8176b3d6 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x84faee49 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8cc1782e transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x915a62ed target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9270ad38 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9912e4dc transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x995a3602 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a3252db target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d4482b6 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8bf0721 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xac930fc4 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xacf40396 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xae70ca74 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3b7c554 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xbccd2682 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1044f60 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xce3cc4a0 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1899857 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd660683e spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xdba494f5 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xe21aee5c core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe546e310 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe58a33dc sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7d24922 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xea88639c sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xeeb679c8 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf2a38c49 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xf799b04b target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf81e043d target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9097e16 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xb03a69bc usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x8bc949a3 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x6c2f12c1 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1bc84aa4 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2ed40a4d usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3545e8d6 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x764f4aa1 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x883a078c usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x88d60069 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c5ec479 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb6111d9b usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd8cff17d usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe2ce61df usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf03ec0ce usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf461a7cb usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x357b1de7 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4f8e8ede usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x22394cb1 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2ffb8318 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x912add49 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaa21151d devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1acca25e svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x44212d6c svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x60dd2678 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8ff3702f svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x93fa007e svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc48c9fbc svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfc5e9522 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x1be3698b sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x8c6ebc4a sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xc6d525db sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xe60a815a cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x71c516b2 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x612f74eb matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8f4acab8 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfa34d015 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1f2e4001 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x80a90e69 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x945e2fcb matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe4b28973 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xd00389c3 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x820d5497 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x05fffb9d matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x12b88b94 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x21fae88b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9c3c7ca3 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x1dbbf74c matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x6806d19a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0f395a9b matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x2a506a4b matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x2d204eca matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x85e20df6 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xeca8b07c matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xd46bd655 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4f3c053f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x76384c1a w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x93e5e6a1 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0539f12 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xadbb2e79 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc4313b59 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x89578f6d w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xf626a1c5 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x6fa86925 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x90c193f0 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xcad89eac w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xee46f800 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x0032ce74 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x0926be80 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x1f1e65d3 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x4feb581b config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x56cdb6e8 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x79f4548f config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x8ea57118 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x91fd19fc configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xa1992d83 configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0xa39efa89 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xa4339e84 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xbb7b1839 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xc04dca95 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xe53bf8e9 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf8b67fe5 configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x101a823a ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2c70465d ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x45f9d573 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x8b74709e ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa37e6269 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa65be9e4 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xcc5b5d3d ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xcd5a6e8d extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xed7a5ec5 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xf004d441 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x08580cda fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x09f64218 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x0c3dc20e fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x0feecd7c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x132d525f __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x143ea7e0 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x1e29da9e __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x1ea8b961 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x230c3f0f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x25d65798 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x29819301 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x2a1d92d0 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x33fce37f fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x3e444d2f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x46514d63 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x4c7a9715 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x50aa1719 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6304faf6 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x6fa1e4f2 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a7c19f2 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x8d1abbf0 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x8e87f78b fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x926ff86e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x95a4637a __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x98394d4d __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x99512af9 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa41d276d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xb37601eb fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc3a1fd29 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xc4473614 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc6e346a5 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xcba82fea __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xcbf7dbb4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe15264d9 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xf1514be9 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xf649f76d fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfcd27021 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfe4d10db __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xff51d5bd __fscache_alloc_page +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x20fbd0cf qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb94eb160 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xdb665f98 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xeba601ed qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf4aed97a qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x7d28f74a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xad52ca6a lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x2fd3b98c lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x66c7333b lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0x67b74dcb lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x6733eb4f register_8022_client +EXPORT_SYMBOL net/802/p8022 0xe9e31b4f unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x02c6b4c0 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x450410f0 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x9a98a11b register_snap_client +EXPORT_SYMBOL net/802/psnap 0xb1bae2fe unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0340c1ee p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x0925b10c p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x110a4397 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x1909bbe3 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1b74e28d p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1e42530b p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2f2d9d85 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x2f3ec1ba p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x307e6f26 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c62d0ed p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3fcc77e4 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4831a190 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x4ad9d119 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x4c05de58 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x5e23c816 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x6c19fb0d p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6f33bade p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x730f02ae p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x7f957a08 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x83aab0ec p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x850ad323 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96a6a9c1 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xa23b8a1b p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xaeeaed53 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xb5b3d082 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xb89fcaa9 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc1607a86 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xc4383da4 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc707232a p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xcf9f5606 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xd5588f6f p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xd605f6ef p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xdc88c424 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xdf73fdac v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xe4e5c400 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe98c2f40 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xef0cbe33 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xf004805d p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf9293b93 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x4525892a atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x9b253f5a alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xac4f9aad aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xbe358b84 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4ef01470 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6d8fe958 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x7cd187db atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x944b6452 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa27d3e91 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xadb08e4f vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xb463b9a0 atm_charge +EXPORT_SYMBOL net/atm/atm 0xbdb253cf register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xbeae637f atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xc0d1683a atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xcdd5e325 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xd4b2da4c vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf3ada1fa vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x1b5fcbd6 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3eabf706 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4ee451dc ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x878f1397 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8a5dab71 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x90adefc8 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x969db09d ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe709a1e2 ax25_find_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x040aac2c bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b49a046 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c93206d l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19ffc86a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1cddbe6d l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25724e30 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2721f57d bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2aee7450 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x350cd9dc hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x402fd2fe hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x472ac197 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cbca7e7 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c45c9e9 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f84dc51 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62136638 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ce88b0c hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70037a74 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x714d5ea8 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x762f25ce l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x798ffb6c l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b88eee3 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f86f506 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x964eb1b3 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98f2fee1 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99a2d08d hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99f8709e hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c16c8a5 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9dcd67e6 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0d6cffb l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa6c3329f hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb164902e hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8d4ae40 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0f2d4ee hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc190b25f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc6e97eb __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1ad8a18 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd8ce266e bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdb174d30 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe92350f8 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe9dfb43f hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3816fbb bt_sock_reclassify_lock +EXPORT_SYMBOL net/bridge/bridge 0x1ab60850 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x520538e5 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd3d78e51 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xda36a45b ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1e94c488 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x76ad8b04 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc2769ed6 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xe58f5ec7 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xfd9e7911 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x11caf356 can_send +EXPORT_SYMBOL net/can/can 0x2b830662 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x466d128c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x67b6bb7b can_ioctl +EXPORT_SYMBOL net/can/can 0x6fbcc33d can_rx_register +EXPORT_SYMBOL net/can/can 0xacb32edd can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x00c9afe2 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x00d72ec5 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x0464df1a ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x089b9772 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bceb754 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x0f795aa2 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1120023a osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x14a0df1b ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x18605cdf osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x1bee0e6a ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x1c947221 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1f302799 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x201991bd ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x30c3bd7d osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x337b1e61 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x3423ecc0 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x34765d9b ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x35a83821 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fec1f77 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x401dee60 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x4248e935 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x431560fc ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x448b637d ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x46480fbf ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x49e40c0e ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x4b12f738 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x50229356 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53d8c22d ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59b4c7d6 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x5f047dd8 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x602b4638 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x61548ec4 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63d0dbb8 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x699f7636 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e3d62be ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x719a8b9e ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x7214d476 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7621a8ba ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x764156b9 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x76d14545 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x7f2facef ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x7f3b8a57 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7f8c2844 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x84299071 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x85b78661 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x8bc8a7d5 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9285cfec osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a0112bd osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9a1f89a5 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x9bfc1384 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa4e0d2b8 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xab3d7c7e ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xac9c50f9 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xacf04acd ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae3f07dd ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xaf538545 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb211fa4d osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb620d6b4 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xb6c155ef ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xbda05829 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc129a468 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc550dc9c osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xc5636a19 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc7da43f5 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb5dfd65 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcdca129b ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4cb6265 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd6548c3f osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xd7246580 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xd75f3a33 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdaea87ef ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe606d7a2 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe7165c9c ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xea235e98 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xf036bed0 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf04da1c5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xf1ab4876 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xf37838c0 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xf3f32e8b ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xf424656a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xf83eae6b ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x6183d01e dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe6c4b284 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x630e86fb wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x86b0d2b4 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x877e9287 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8c932e7f wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe32ecdc8 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfff03179 wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x57be2656 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xe7ce5e79 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5cbc2c65 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x777d3cb2 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa1cc6249 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xaeab0c57 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xbb6e6a19 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf3106813 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6efcc66d arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x93a64fb1 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd6c5ffef arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x84992636 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd60ca46d ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd9ad195a ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x559a0b42 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xf00cf67b xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x0f80f35a udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc55d61ad ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc60fa927 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xccdcf6d9 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcd2a31a8 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa95be2c8 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc272406f ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe667d578 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x8776868d xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xce18a712 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x22ed4483 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf58cb3e7 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0e570c1c ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1597c563 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3fa4a127 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x78e79649 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd20f264c ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xee1f9a73 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf172b8ff ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf3b1bd0a ircomm_open +EXPORT_SYMBOL net/irda/irda 0x01393026 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x01ff734f async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x092eb9b9 iriap_open +EXPORT_SYMBOL net/irda/irda 0x13f36e75 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x1fba83f8 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x22894031 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x2e993e9a irlap_open +EXPORT_SYMBOL net/irda/irda 0x32daeb6d irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36cad55b hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x37791344 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4f4585b2 iriap_close +EXPORT_SYMBOL net/irda/irda 0x4f5ad82b irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x649ae64d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8c874498 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x8f9828ca irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x97665319 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9b0302c8 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x9bfb9dac irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x9c945c11 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xa1607f92 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa48e6b89 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbd9dee20 irlap_close +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xcb1f127d irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe7367c40 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xf32378c4 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xf4b7ebca irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xfa70ad46 irlmp_connect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0xbc3fde40 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x271abbe6 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x4d6e0efd lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x78139cc6 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x9e27e5c9 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xdcd9c9b6 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe58554be lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xf1ff52d7 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xf2fd5f9f lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x53adfff1 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x699e8431 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x8e2de8f6 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x8eeaaa99 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc1b6c4ba llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xd21d7564 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xffa7976c llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x029ce7f7 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x067a42d4 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x06a28798 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x0a8dbdd4 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x0e18c43a ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x0f08f3fa ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x0f0a4dda ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x0f2c89fd ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x1109da7a ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x13d98c6f ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x17dc2528 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x1d37575c ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x25f0febf rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x2895dbfc ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2fc13a90 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x30250e58 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x337bbadf ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x34601f31 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3b360b45 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3cefeaf9 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3e03624b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x3f62bbb7 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x41d2ac5b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x445219c8 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x47483eea ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x480d0a3f ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c9804d9 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4d355ee5 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x5546ae56 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x585c563e ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x5a4c83cc ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5ab6e2fe ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x5d2565b5 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x608bcec3 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6b3f81a0 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x6e83df60 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7e97434f ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x81292f2b ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x823022a7 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x84f40dd7 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x85ff3295 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8eaab027 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x90b780e3 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x91c433e3 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x9b8f9c6f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9c53859c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x9db9bfac ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9e3c192c ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xa042e6de ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xa19609a2 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xaa67b9bf ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xaa80c317 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xab9753fe ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xac305c76 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaf9bbde3 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb3344ed3 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb3d5067b ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb8793032 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbc71bdc0 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbda57f53 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xbdeda42c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbfd5ed48 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xc572b506 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xcc55ef1c ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xcc96c4b2 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcd9e6828 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xcdf54ba1 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd662bfb2 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xd69b1f19 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd83b07fa ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdb7860e0 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdcbf6e32 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xdffe717c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe85c6cf2 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xeb58e20c ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xef8df6dd ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xf5cdaf5a ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xfb45df25 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac802154/mac802154 0x5f556420 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x881a1f28 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x91f54693 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x9e5b41c3 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xb7ee6695 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc5fbb5ee ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xf2afadc4 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf405e969 ieee802154_wake_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x16eb28c8 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x263fb5b4 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2d109763 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3b5c28c9 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6f9a3667 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7ceaeecc ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8e0552c1 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa874e477 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb9670ed1 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xccbb1046 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda06dbcb ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdffc43dd ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe2145b70 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xec8c84ea ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x12f2ec1b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x590d2113 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7da54a80 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x195110ae nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x7e098459 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x955554d3 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xba489876 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xcca2dd47 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd9a3bf06 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x0f69c440 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x2b29febf xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3c580785 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x5a95bb25 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x680dfee3 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x68325fde xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6da6f2bd xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x75fd06eb xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x8eba1c46 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa34d68bf xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/nfc/hci/hci 0x01a9dfb2 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x09cf8acf nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x1387c068 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x21231f73 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x27c0606a nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4fe3e196 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x7ca9163f nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8de6627e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x982adc7f nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x983c8790 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x9ead08f9 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9f4c1810 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9fe35d31 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa81ced81 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xae8ec94e nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb4d7a760 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbd51c9c8 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xc8cf62e8 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xe0b4ba39 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xe8002dad nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xf986fea4 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x05ba3007 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x0e22e9c6 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x27b44e82 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x27ca0c35 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x34dea37e nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x39576716 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x3a960453 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x4a20b415 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x5a7cbc1c nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x7501851d nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x785247c5 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x829ffc89 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x86429e40 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x89462d52 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8cd779c2 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x969dde44 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x9a28d0ab nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x9b21dbaa nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x9f33f090 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa5815309 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xae63b009 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xb452b4d9 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbeb23ef1 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xbf2da30f nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xc53d2763 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd4625dd4 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xf3aeb83c nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xfc81ead3 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nfc 0x0d7a8552 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x0fa0336e nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x171dfeff nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x2671e74c nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x29e4eb75 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x2faff7b0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x32018c2f nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x39655625 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3f07147c nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x51620a56 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x53236eec nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x91905e7c nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xa38723bb nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xb17cf26d nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xc17800ee nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xca398e32 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xce371d12 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xdc040ebe nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xe156042a nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xe97fbcdb nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xf3cf5c0e nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xf6047a1b nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xfe279fcb nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xfeb85c69 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc_digital 0x66e96c28 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x97e3cebc nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe2cd4315 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf414bf64 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x2f7605ea pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x4135b9ed phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x43c4be87 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x5a2f8614 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x6f3d578b pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x738ddf3d pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xae56d845 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xcf1e2a5e phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06ed5500 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x35e2f129 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x37519059 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x421f6c3f rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5cfa4c36 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e288250 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7bd7f5b8 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x93643545 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xaeb67765 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbad86fe5 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd2a5c1a9 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd97b0375 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdfee7ac0 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2e638c6 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xeeadc913 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x00482d2a sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x154979e6 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x86a5bc45 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xc0086325 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb5fe6d03 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc296d780 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd37e86a2 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x37fc0a8c wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x8bee1c47 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x02a7bfa0 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x1152f6a0 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x11a93d5f cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x149f0fbc cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x14e2a063 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1e695a4e cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x21f411b5 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x24019014 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x27ef36d1 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x2a1bbf6f __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2a96357e cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x2b2c8072 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x2cf0550b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x31ea924a wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x3a289f0c wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4267568a wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x4271254e cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x4524b994 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x462cb82e cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x48f68e4e cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4a05518c cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x4af44f18 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4b580f8b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x4bf4aec8 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x556429dd regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x58395865 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x596a0668 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5bd2146f ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5c36dd26 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x5ec11530 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x61fe553d cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x6253f5c4 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x65d52752 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x6645bb8b cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6d7a2722 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x704cdd33 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x72b75dff cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7447e4ca regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x807bc4f7 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x809e5eaf cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x86ca4d49 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x88a06074 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8dddd3ef cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8e901385 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x925aa3e6 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x9386e533 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9acab43e cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x9ea9c9bb wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xa034f94a cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xa07683f9 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3129a05 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xa5798ce5 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xa61dfc5e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xa65e2629 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xacd6344d cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xad16eacd cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xb1afc08d cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb431b618 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb9977e0b ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xbf7d94b2 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc108d643 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xc4e5a116 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc75be116 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc8a66a0c cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc9e62968 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcb81d1ac ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xcb9e193a __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd4e47aed ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xd722e40f cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd8e1d017 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdf75389c cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xe9dcb749 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xeb42ecf2 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xed8bba21 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xee19f63b cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf3276a65 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xf72bb932 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xf7b635c2 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf8d72082 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf9ca09ad cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfd981b92 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x06b81ece lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x0adb5ad7 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x74a67078 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x77151a72 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9678a3a2 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb802db83 lib80211_crypt_info_free +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xa4a5bb87 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x450f42c4 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x9f88b07c snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd8eb0084 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe1f0ff47 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x53eb4553 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x127b30fb snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cdc0812 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x59eb74ae snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8102ed2f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb11ba32d snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb2c7f684 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xea0e5748 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xed42580b snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xa001b49b snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0xdd58afa7 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06862ab9 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x09064c9b snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x15a3af07 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x195f44ba snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1f8fca40 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3d25343e snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x43cb96bf snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x60d89f58 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x67c979ba snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7248b311 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9c90a9ed snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9d5c720b snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9eeac14e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xac247d77 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xad0c377d snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc13617af snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd29268e3 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xff9f29e2 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0cf0b327 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1b48667a snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1c4a595c snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3579c3fb snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6409b909 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x76d9866d snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9bd32ad3 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc8b62ce9 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdc94b864 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x085be2a8 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0a80628c snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4bb11843 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5966c6d8 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x768b7d0e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9e6c2b1a snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb2904479 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdf17ee75 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xebd60390 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x03c94574 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0792cc8e fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x101456a7 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1808a3e1 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c03025a fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x203df03f amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fb5c261 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30f80e75 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x58876d38 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63c7f2e9 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6513ca09 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6e34fcec fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6f412f09 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7562d669 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x76e6d2de amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7c11710c cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7e149064 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83c6da7c snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x971304db cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9edc41c3 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa974dee1 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xadb45c10 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7a020d0 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbbb65bf2 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc0c17c33 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcf24f6f5 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd6d0caa9 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe11e726a amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe7c2566b amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf69eab35 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfacc9d01 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfb7591ca amdtp_stream_start +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x34feeba2 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xaf2e0940 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2953d5c6 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x32366a42 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3f6aaa73 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x52c6b124 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x76be9095 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x89aad675 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa58a5f6f snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd4504ca7 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3116159b snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x31d9eb21 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6065c212 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x8953c90c snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x039128ae snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x80d5d60b snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-i2c 0x57b707c3 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x60e77946 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x84340107 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x91839ada snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe65c2f0d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xec3f492e snd_i2c_sendbytes +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x154b5be4 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x31bf88f5 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a693a1b snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a7357e3 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3c4ab594 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4d152602 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e777fd4 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x72f6f868 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x765e18e4 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x895bf94e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9f65e63c snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbd8ac48b snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd12464fc snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe0443c3c snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe661fda5 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe83690e5 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff00860c snd_ac97_update +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x58471140 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x666600a0 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xde8bf13a snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x057d7e1f oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1ae8ea93 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e976274 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3575ff98 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x37138679 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3f5e7aed oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x479003de oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5139a53a oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5a4ed785 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x66bae066 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8685692b oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8697297d oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x88828f59 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8a1d4597 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xabce3490 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb767d3a5 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb83d1876 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbac63235 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd21d6bf9 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdbd2168e oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe982aa29 oxygen_pci_shutdown +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x9332c1a0 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xdc1aac4e tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0x7f65642d fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x193a5cc5 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000737a8 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x001ee95a imx_ssi_fiq_base +EXPORT_SYMBOL vmlinux 0x002a1758 uart_match_port +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0060b781 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00727825 vfs_symlink +EXPORT_SYMBOL vmlinux 0x009af4bc cap_mmap_file +EXPORT_SYMBOL vmlinux 0x00a1d42d devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x00a45c5e scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x00bd7601 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x00c150d1 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x00c69073 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x00cb4206 shdma_chan_remove +EXPORT_SYMBOL vmlinux 0x00d5c40f scsi_device_resume +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00d89fd1 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x00dc3ba8 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x00e9f6bf get_task_io_context +EXPORT_SYMBOL vmlinux 0x00f7c980 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x00fe7080 ip_defrag +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101cc38 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010c5fda udp_set_csum +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x01263e55 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x012a7660 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x016c369d inode_dio_wait +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01947ede i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01bb602c inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x01efcbd8 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x0207a51f set_user_nice +EXPORT_SYMBOL vmlinux 0x0211eaae __vfs_write +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x02240a13 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x0225d529 get_fs_type +EXPORT_SYMBOL vmlinux 0x022848b1 dcb_setapp +EXPORT_SYMBOL vmlinux 0x0235738c skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x025f1fd9 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02677f9e sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x0273397a tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a8dfca blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x03005606 omapdss_get_version +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x0307e133 truncate_setsize +EXPORT_SYMBOL vmlinux 0x03080dda scm_detach_fds +EXPORT_SYMBOL vmlinux 0x03144a5c page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x0324ed7a max8998_update_reg +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03380730 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x034085eb bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x0348b4ba debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x035186dd blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0365b44f inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036c79ea __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038188fa sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x039b3cd3 dev_emerg +EXPORT_SYMBOL vmlinux 0x039b7f31 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x03b41530 inet6_protos +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03e2de0b d_obtain_root +EXPORT_SYMBOL vmlinux 0x03e96cdb iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x03f502e6 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04749f31 module_put +EXPORT_SYMBOL vmlinux 0x0478acfc snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x047a08e0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x047c86cf xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a119ef devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x04bac799 __lock_page +EXPORT_SYMBOL vmlinux 0x04be2ec0 follow_down +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04d1cf29 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x04d1dd66 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x04df3d18 __pagevec_release +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f9c70e netdev_features_change +EXPORT_SYMBOL vmlinux 0x04ff62d1 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x050b8335 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x0514dffc seq_putc +EXPORT_SYMBOL vmlinux 0x0521c103 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05293509 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x0536a8dd qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x053bbbaf udp_disconnect +EXPORT_SYMBOL vmlinux 0x0555b2a0 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x05651a88 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x05a0e9d7 snd_power_wait +EXPORT_SYMBOL vmlinux 0x05a68514 pci_save_state +EXPORT_SYMBOL vmlinux 0x05ac6ad3 module_layout +EXPORT_SYMBOL vmlinux 0x05b007de key_reject_and_link +EXPORT_SYMBOL vmlinux 0x05b4cef6 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x05ba0804 address_space_init_once +EXPORT_SYMBOL vmlinux 0x05c85cf8 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x05cfc07b fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x05d81eb5 seq_open +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061a7550 __napi_complete +EXPORT_SYMBOL vmlinux 0x06268dff netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064827a1 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x066e6355 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x067337f8 __napi_schedule +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069a8854 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x06b8a9da nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x06d34a3d __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x06dd3efc mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x06f30e81 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0715750f cpu_user +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07378cac pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x07448975 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x0746e14e vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x07528921 led_set_brightness +EXPORT_SYMBOL vmlinux 0x0763bb8a blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0775cab1 processor +EXPORT_SYMBOL vmlinux 0x078bbbea pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x0797ed3c simple_getattr +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07affb76 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x07b04512 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x07bc31e2 vga_client_register +EXPORT_SYMBOL vmlinux 0x07c5c7fb twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x07c9d032 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07d346bd mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x07dcfede ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x07e28474 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x07fdc727 vga_tryget +EXPORT_SYMBOL vmlinux 0x080edabb mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x0828c41e submit_bio_wait +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x08364d1d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08487665 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0854600d __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x08589bc7 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x0874bf2f abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x08778730 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x088663d9 pci_map_rom +EXPORT_SYMBOL vmlinux 0x088c1b2f lock_sock_nested +EXPORT_SYMBOL vmlinux 0x08a3c7d6 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x08abcd5f key_invalidate +EXPORT_SYMBOL vmlinux 0x08af1b13 inet_release +EXPORT_SYMBOL vmlinux 0x08b37628 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x08b45300 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x08cb4c4a ppp_register_channel +EXPORT_SYMBOL vmlinux 0x08d77bc6 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f12d16 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x08f81b3e ip6_frag_init +EXPORT_SYMBOL vmlinux 0x09125a6d inet6_add_offload +EXPORT_SYMBOL vmlinux 0x092c9562 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x093d943f unregister_md_personality +EXPORT_SYMBOL vmlinux 0x09570e41 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09764974 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x097c6c16 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b7a5e5 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x09bd95af netif_receive_skb +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c58a22 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ca13f4 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d3f9be vme_irq_handler +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e6dc59 account_page_redirty +EXPORT_SYMBOL vmlinux 0x09eafcb6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x09f20b0d vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a0a56e3 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x0a0b0c7f release_pages +EXPORT_SYMBOL vmlinux 0x0a0e5cbb delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x0a162d6a swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x0a1d7423 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0a288cd5 __break_lease +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a380d59 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5a219f __mdiobus_register +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae3daf4 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1b0df8 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2c9335 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x0b2ca895 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x0b392258 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b57155e tegra_io_rail_power_off +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b696493 i2c_release_client +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7abbba dev_remove_offload +EXPORT_SYMBOL vmlinux 0x0b83263d tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x0b83411d of_root +EXPORT_SYMBOL vmlinux 0x0b90fa6d nf_log_unset +EXPORT_SYMBOL vmlinux 0x0bb13773 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc10e89 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd8a5f4 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x0bdb65dc register_framebuffer +EXPORT_SYMBOL vmlinux 0x0be9e8ad register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x0c2693cd snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x0c3ab3ee simple_write_begin +EXPORT_SYMBOL vmlinux 0x0c409c37 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c549551 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbaedb8 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x0cbe7f79 dev_uc_init +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cd8454b send_sig_info +EXPORT_SYMBOL vmlinux 0x0ce989ef dcache_readdir +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d0fd527 register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x0d380755 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x0d398d5e keyring_clear +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d4bf75d __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d577a9e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6761ad security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0d67d87d sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x0d76db73 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x0d963d6b nand_scan_ident +EXPORT_SYMBOL vmlinux 0x0d9856bb ppp_dev_name +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da921c9 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x0dbb47b0 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0de218ba nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x0e1e0e68 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x0e6321cf zero_fill_bio +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e778918 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x0e7de83b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x0e8aa8b2 tty_write_room +EXPORT_SYMBOL vmlinux 0x0e8b024f skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x0e9f020b __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x0ea7ed22 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb0d463 genl_notify +EXPORT_SYMBOL vmlinux 0x0ebb5e4f devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0eeddf84 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f1c31bc pid_task +EXPORT_SYMBOL vmlinux 0x0f200a14 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x0f28be4e scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x0f4840e3 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa9f3f3 skb_copy +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbe9a82 sk_wait_data +EXPORT_SYMBOL vmlinux 0x0fc8caba release_firmware +EXPORT_SYMBOL vmlinux 0x0fd5fcca __inet_hash +EXPORT_SYMBOL vmlinux 0x0fe91e2e of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10051a5a tso_build_data +EXPORT_SYMBOL vmlinux 0x101945c7 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x101a895a elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x10373a99 md_write_end +EXPORT_SYMBOL vmlinux 0x10474b44 iterate_fd +EXPORT_SYMBOL vmlinux 0x1054381e phy_stop +EXPORT_SYMBOL vmlinux 0x10579a7f blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x1061eeca __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1082188e pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x1084cc47 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x10af7160 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x10b1636c tty_unlock +EXPORT_SYMBOL vmlinux 0x10b241e9 md_register_thread +EXPORT_SYMBOL vmlinux 0x10e8116e d_instantiate +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fee27f pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1108fe75 blk_put_request +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x11322d4f pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x1132a79e filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x114354ab generic_readlink +EXPORT_SYMBOL vmlinux 0x11487b67 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x11624a9c key_unlink +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117ff022 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b08ef2 dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x11e94f79 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121a21fc seq_hex_dump +EXPORT_SYMBOL vmlinux 0x121e535f make_kgid +EXPORT_SYMBOL vmlinux 0x124f38dc simple_dname +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b9473e set_anon_super +EXPORT_SYMBOL vmlinux 0x12c85751 omapdss_register_display +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12fd70a8 km_new_mapping +EXPORT_SYMBOL vmlinux 0x130999b0 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x131ff7be fasync_helper +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13297c33 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x132afa16 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133173c5 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x1343a60b tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x136aa836 of_device_register +EXPORT_SYMBOL vmlinux 0x136efaee reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x13756f7e sock_setsockopt +EXPORT_SYMBOL vmlinux 0x137b9a85 netdev_info +EXPORT_SYMBOL vmlinux 0x13935fc6 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x1398c8f5 input_close_device +EXPORT_SYMBOL vmlinux 0x139e8a89 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x13a73079 generic_getxattr +EXPORT_SYMBOL vmlinux 0x13ce4147 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e81824 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x140fa9c2 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x1417d5af blk_requeue_request +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1479c1fc gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x14824799 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x148824a0 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x14a27f74 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x14a930fc of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x14b32cd7 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x14c63125 set_binfmt +EXPORT_SYMBOL vmlinux 0x14cb2b15 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x152e5c8d sock_no_poll +EXPORT_SYMBOL vmlinux 0x15432e3d led_blink_set +EXPORT_SYMBOL vmlinux 0x154c4b6e dentry_open +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15684446 netdev_update_features +EXPORT_SYMBOL vmlinux 0x157f098b twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x159c8906 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x159f6f5a ptp_clock_register +EXPORT_SYMBOL vmlinux 0x15a45e41 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15de604a blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x15f236c2 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x15fa5562 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x15fc7a22 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x16270f6f amba_find_device +EXPORT_SYMBOL vmlinux 0x1628ce44 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163171cb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x165b7964 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16a11cea pci_set_master +EXPORT_SYMBOL vmlinux 0x16af5a21 bdget_disk +EXPORT_SYMBOL vmlinux 0x16c7dd3a snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x16daed4a locks_copy_lock +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16faacfb fget_raw +EXPORT_SYMBOL vmlinux 0x16fe005a do_splice_to +EXPORT_SYMBOL vmlinux 0x17134c46 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x171fbf72 sock_no_accept +EXPORT_SYMBOL vmlinux 0x1721fc96 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x1735a1d3 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x174063ff do_SAK +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x17704a57 locks_free_lock +EXPORT_SYMBOL vmlinux 0x1776a20e dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x178eeba6 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x17a1b293 __init_rwsem +EXPORT_SYMBOL vmlinux 0x17a50bf7 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b1b741 input_release_device +EXPORT_SYMBOL vmlinux 0x17c4dcaa generic_show_options +EXPORT_SYMBOL vmlinux 0x17c9512d tty_vhangup +EXPORT_SYMBOL vmlinux 0x17d5f45c pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x17eeface pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x18120525 of_get_next_child +EXPORT_SYMBOL vmlinux 0x181d7604 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182c16e1 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1830a375 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1845fb8d get_gendisk +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1863734c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x1875f64e skb_copy_expand +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189c5980 arm_copy_to_user +EXPORT_SYMBOL vmlinux 0x189ec0e2 amba_device_register +EXPORT_SYMBOL vmlinux 0x18a0011c sg_miter_stop +EXPORT_SYMBOL vmlinux 0x18a6bef9 generic_make_request +EXPORT_SYMBOL vmlinux 0x18b4e5ba clk_get +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18bda4ec dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18d041fb simple_write_end +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e6dad5 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x19188eeb genphy_suspend +EXPORT_SYMBOL vmlinux 0x191b9dc3 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x192a905e sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x1947398b mmc_request_done +EXPORT_SYMBOL vmlinux 0x1955acd1 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x195b062b register_netdevice +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19644db9 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x196f0d96 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x19765613 get_io_context +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x1996f021 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a190b3 get_acl +EXPORT_SYMBOL vmlinux 0x19b0968d dquot_quota_on +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ca07ce vm_event_states +EXPORT_SYMBOL vmlinux 0x19cc767e i2c_clients_command +EXPORT_SYMBOL vmlinux 0x19d0a483 elevator_exit +EXPORT_SYMBOL vmlinux 0x19f4026b pci_release_regions +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x19f5a5f5 genphy_resume +EXPORT_SYMBOL vmlinux 0x1a1d97de dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x1a20c540 omap_vrfb_supported +EXPORT_SYMBOL vmlinux 0x1a2ec730 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1a3b14e7 skb_pull +EXPORT_SYMBOL vmlinux 0x1a541550 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6ed17d sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x1ac449e6 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1af1cbed inet_csk_accept +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0c6b0f dma_sync_wait +EXPORT_SYMBOL vmlinux 0x1b130488 elevator_alloc +EXPORT_SYMBOL vmlinux 0x1b25cb95 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b54989e security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b776047 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b892cb2 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x1ba4fddb simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bbe8f76 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x1c03db6b security_path_mknod +EXPORT_SYMBOL vmlinux 0x1c092683 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x1c2b1dc2 __skb_checksum +EXPORT_SYMBOL vmlinux 0x1c2d5d93 sock_init_data +EXPORT_SYMBOL vmlinux 0x1c323fb0 omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x1c3e9903 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x1c5bca1b ps2_end_command +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c6b2e9c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1c8c033e security_path_chown +EXPORT_SYMBOL vmlinux 0x1c8dd2a9 tty_lock +EXPORT_SYMBOL vmlinux 0x1cbdd069 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x1cf7aa56 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d0d81a3 udp_seq_open +EXPORT_SYMBOL vmlinux 0x1d155b2e input_flush_device +EXPORT_SYMBOL vmlinux 0x1d39703c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x1d3e86cc pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x1d40dbfb dev_driver_string +EXPORT_SYMBOL vmlinux 0x1d445720 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x1d56997f dev_load +EXPORT_SYMBOL vmlinux 0x1d5bf731 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x1d72206b snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x1d85bc10 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x1d90fbd4 security_path_unlink +EXPORT_SYMBOL vmlinux 0x1d9a13b9 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dc0fa8d __register_chrdev +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd0e7a dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x1df3e86e __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e055a5b genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x1e23e2e9 kill_litter_super +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e4b44c7 generic_fillattr +EXPORT_SYMBOL vmlinux 0x1e52bdde vfs_writef +EXPORT_SYMBOL vmlinux 0x1e63e261 register_sound_special +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb50e20 sock_create +EXPORT_SYMBOL vmlinux 0x1ed1d901 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1ede3834 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x1edef226 __d_drop +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1ef35122 blk_make_request +EXPORT_SYMBOL vmlinux 0x1f0080ff linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x1f1d6984 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x1f3fd831 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x1f42ab88 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0x1f44ad8b i2c_master_send +EXPORT_SYMBOL vmlinux 0x1f54c51e seq_file_path +EXPORT_SYMBOL vmlinux 0x1f573b6a ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x1f5d4c90 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x1f723b09 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9ff0f2 tso_count_descs +EXPORT_SYMBOL vmlinux 0x1fa21bf2 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fab7b39 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1feea2f4 simple_statfs +EXPORT_SYMBOL vmlinux 0x1fff95e4 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2014df2b inet_frag_kill +EXPORT_SYMBOL vmlinux 0x2015f6f1 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x203c4558 posix_lock_file +EXPORT_SYMBOL vmlinux 0x203f9c4f single_open_size +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20754349 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x207d3df3 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20bc8e7d inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c808c8 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x20d87705 kthread_stop +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20f3e9cb cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x20fad7c4 of_get_parent +EXPORT_SYMBOL vmlinux 0x210a967d tegra_dfll_register +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211ed0a1 md_flush_request +EXPORT_SYMBOL vmlinux 0x213364f7 ps2_init +EXPORT_SYMBOL vmlinux 0x21504d04 bio_put +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x215cadca snd_device_new +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x21781340 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x217e85ed phy_driver_register +EXPORT_SYMBOL vmlinux 0x218b5c7c scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x21911edb devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x21b89965 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e2ef2c blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x21f69ee4 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x22186014 km_is_alive +EXPORT_SYMBOL vmlinux 0x2229ac9a of_translate_address +EXPORT_SYMBOL vmlinux 0x222e368c of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x2241c67b audit_log_start +EXPORT_SYMBOL vmlinux 0x224b86be mfd_add_devices +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225a7cd0 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x226052bb cdrom_check_events +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226a4c80 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277d558 mx53_revision +EXPORT_SYMBOL vmlinux 0x228d27f4 ppp_input +EXPORT_SYMBOL vmlinux 0x22a601e8 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22cbcc99 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x22d513f1 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23042a1a __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x2305b886 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x230eb23c ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2340fdd9 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x23560577 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x23574bef dentry_path_raw +EXPORT_SYMBOL vmlinux 0x235df2ba reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x2369b7b2 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x236ed4eb nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x236f5e16 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x238c0e23 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x23936810 flush_old_exec +EXPORT_SYMBOL vmlinux 0x23956ea4 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2398bebd amba_device_unregister +EXPORT_SYMBOL vmlinux 0x23a38652 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23ad6b72 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23be1a40 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x23c42f8f dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x23c645d4 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23dc7913 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x23e414c1 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24055b6d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x24178313 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x241ba7f2 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2431054e pci_select_bars +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24537c9d __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2468f429 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x24759828 bioset_free +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24bbc4a9 kern_path_create +EXPORT_SYMBOL vmlinux 0x24bd1829 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x24c4773d scsi_host_put +EXPORT_SYMBOL vmlinux 0x24db3d44 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x24f900bf ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x24f9d4a2 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x24fea526 key_link +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2504977b neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x252ba8a2 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x253640d4 elv_rb_find +EXPORT_SYMBOL vmlinux 0x253acc20 skb_split +EXPORT_SYMBOL vmlinux 0x2557dd14 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x255acb5f tegra_powergate_sequence_power_up +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257aa4ed follow_pfn +EXPORT_SYMBOL vmlinux 0x257f5812 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25afb2b6 blk_run_queue +EXPORT_SYMBOL vmlinux 0x25c3f876 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x25d31617 snd_info_register +EXPORT_SYMBOL vmlinux 0x25d8643c input_set_keycode +EXPORT_SYMBOL vmlinux 0x25de0c20 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x25e8ef1d ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25edf03b pci_fixup_device +EXPORT_SYMBOL vmlinux 0x25f586fc kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x261b0111 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x2631da85 iterate_dir +EXPORT_SYMBOL vmlinux 0x2638db13 posix_test_lock +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265c4c64 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x266577aa scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x268ec516 inet_getname +EXPORT_SYMBOL vmlinux 0x269400c3 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x26a79352 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26c867ba tty_register_device +EXPORT_SYMBOL vmlinux 0x26d50a39 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x26e26fd3 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x26e4fac6 generic_write_end +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2706f779 page_address +EXPORT_SYMBOL vmlinux 0x27385383 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x27500e7b mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x27509eca nand_unlock +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x277e3fb3 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x278febf3 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x27993705 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x279ab39c skb_queue_head +EXPORT_SYMBOL vmlinux 0x279c0b62 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x27a2242a __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x27b26fb7 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x27baad5d mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c1bb6a tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x27ca1318 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27ec1eaf pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x27fa7fd0 snd_component_add +EXPORT_SYMBOL vmlinux 0x280536c4 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281d9824 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x2820d572 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x2827a266 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x282dd452 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x2854a7b8 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x288f6751 genlmsg_put +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7a5dc deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x28bc85fe skb_trim +EXPORT_SYMBOL vmlinux 0x28cf7cfd up_read +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28ee3196 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x28fb8229 generic_removexattr +EXPORT_SYMBOL vmlinux 0x2910e265 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x293ef924 netlink_capable +EXPORT_SYMBOL vmlinux 0x29427213 simple_rename +EXPORT_SYMBOL vmlinux 0x294a87f6 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x294c8e80 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x294f450f iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295ad529 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x2991087b lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x29a83203 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x29c268bb rtnl_create_link +EXPORT_SYMBOL vmlinux 0x29c67578 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29f53894 tcp_poll +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a2c1bc1 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a372208 dma_supported +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a4d7b45 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x2a53efa0 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x2a5f6b5c kernel_bind +EXPORT_SYMBOL vmlinux 0x2a6a7a80 __frontswap_test +EXPORT_SYMBOL vmlinux 0x2a7314d4 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a7d6999 dm_put_device +EXPORT_SYMBOL vmlinux 0x2a90fd69 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x2a9de0e6 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aaa5859 skb_pad +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab8bf9b elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2abf3d5a abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x2acd1f8c scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2adf275e dm_io +EXPORT_SYMBOL vmlinux 0x2af7b388 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x2b02a2ab netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b1ad193 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x2b1ca244 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x2b20a9de adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b49e87b blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b62f685 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x2b698089 write_one_page +EXPORT_SYMBOL vmlinux 0x2b699856 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x2b6ce6ad crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x2b9202ee devm_request_resource +EXPORT_SYMBOL vmlinux 0x2b964a92 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2babc860 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x2bbd8b7f blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x2bc5bf2a pci_release_region +EXPORT_SYMBOL vmlinux 0x2bca852c find_get_entry +EXPORT_SYMBOL vmlinux 0x2bd46ffc nf_getsockopt +EXPORT_SYMBOL vmlinux 0x2bd58ec9 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be58e36 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1700a0 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x2c194884 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2dc492 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x2c376cdd __netif_schedule +EXPORT_SYMBOL vmlinux 0x2c37e807 scsi_add_device +EXPORT_SYMBOL vmlinux 0x2c589e77 lwtunnel_input +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c9089fe d_invalidate +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2caa0e8c tcp_conn_request +EXPORT_SYMBOL vmlinux 0x2cad6a9c inode_set_flags +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2cd1825b xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x2cf4a918 sget +EXPORT_SYMBOL vmlinux 0x2d036f15 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2d088070 generic_read_dir +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d167a27 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x2d252f5e mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x2d2aac63 snd_device_free +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d36d068 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x2d4800b3 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x2d49c37e devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x2d4f2cd6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x2d5fcf21 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d77578c blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x2d80a4f4 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x2d86844c commit_creds +EXPORT_SYMBOL vmlinux 0x2dabb6db dquot_release +EXPORT_SYMBOL vmlinux 0x2dae0efd from_kuid +EXPORT_SYMBOL vmlinux 0x2db79c23 inet_sendpage +EXPORT_SYMBOL vmlinux 0x2dc278d9 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2deec0db seq_read +EXPORT_SYMBOL vmlinux 0x2dff29ea install_exec_creds +EXPORT_SYMBOL vmlinux 0x2e00a2f7 snd_timer_start +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e0e73f9 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e325cc4 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x2e396bc1 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2e46d5b6 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e82318a unregister_console +EXPORT_SYMBOL vmlinux 0x2e97f033 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x2eab718b follow_up +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2ed99436 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2effd207 mpage_writepages +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0cfaa3 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x2f1431b5 skb_dequeue +EXPORT_SYMBOL vmlinux 0x2f2ad360 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5081f0 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x2f577bf9 md_done_sync +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f683a8e fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2f7c294e invalidate_partition +EXPORT_SYMBOL vmlinux 0x2f9b800b netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb7d0c7 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x2fba8d4e generic_file_llseek +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x300365bf kdb_current_task +EXPORT_SYMBOL vmlinux 0x3003b0ef __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x30088691 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x30089909 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x30091827 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x30202fb1 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3039c379 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x3046f4ad blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x305e63a5 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x3061c481 clk_add_alias +EXPORT_SYMBOL vmlinux 0x306441ef devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30c8e869 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x30c9a2a9 tegra_ahb_enable_smmu +EXPORT_SYMBOL vmlinux 0x30df975e sock_efree +EXPORT_SYMBOL vmlinux 0x30e34d3d vme_register_driver +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e823dc d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310b6a89 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x310beb7d iov_iter_advance +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x316d4c73 scsi_device_put +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3177500e bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x317b35c7 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x317fdd3d unlock_page +EXPORT_SYMBOL vmlinux 0x31830134 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319f150c dst_destroy +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31a75f02 vga_get +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b8aa82 skb_tx_error +EXPORT_SYMBOL vmlinux 0x31e8e63f dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f0de40 cpu_tlb +EXPORT_SYMBOL vmlinux 0x31ff5cbe phy_resume +EXPORT_SYMBOL vmlinux 0x3216be41 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3217ca45 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x321e542c __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x32239d95 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x326f36fd jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x3279102d xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x327b6ffd generic_file_open +EXPORT_SYMBOL vmlinux 0x328288f2 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328e10ea bdevname +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32a6d00a kernel_write +EXPORT_SYMBOL vmlinux 0x32a9097b sk_ns_capable +EXPORT_SYMBOL vmlinux 0x32b17d38 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x32bf2e82 netif_device_detach +EXPORT_SYMBOL vmlinux 0x32c01c04 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x32c6aec3 kthread_bind +EXPORT_SYMBOL vmlinux 0x32e0debc sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x32e3b5c4 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x32fcce33 __vfs_read +EXPORT_SYMBOL vmlinux 0x33119748 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x331cb918 snd_card_free +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x33341999 sock_wake_async +EXPORT_SYMBOL vmlinux 0x3349e167 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x334fc301 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x3374917b scsi_device_get +EXPORT_SYMBOL vmlinux 0x337dca49 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x339735b7 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cf75dc bio_advance +EXPORT_SYMBOL vmlinux 0x33dace8b shdma_request_irq +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e8dea4 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x33ec6bf1 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fa9a8c snd_card_set_id +EXPORT_SYMBOL vmlinux 0x340dd839 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x340e3c89 dump_page +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x3450075e ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x3452829e snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3476e5f0 netdev_notice +EXPORT_SYMBOL vmlinux 0x347fd22d skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bd2b02 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x34be2965 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x34ea2b04 vfs_mknod +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9403c inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x3506a2f7 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x354ca323 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x3558676d snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x35627ae8 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35666def inet_del_protocol +EXPORT_SYMBOL vmlinux 0x357639f7 inode_init_owner +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x35934dd2 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ac1e7a generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x35b0dafa pci_get_class +EXPORT_SYMBOL vmlinux 0x35b4fadf dquot_disable +EXPORT_SYMBOL vmlinux 0x35b6659d get_super_thawed +EXPORT_SYMBOL vmlinux 0x35cb5e21 register_console +EXPORT_SYMBOL vmlinux 0x35d51643 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0x35d7a13a block_write_begin +EXPORT_SYMBOL vmlinux 0x35d8d79e blk_end_request +EXPORT_SYMBOL vmlinux 0x35f146e6 down_write_trylock +EXPORT_SYMBOL vmlinux 0x35f411fe zpool_register_driver +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x35fda108 cdev_init +EXPORT_SYMBOL vmlinux 0x3608a07c nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b6cf9 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x361ca9c4 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x361fa80f fb_pan_display +EXPORT_SYMBOL vmlinux 0x362c0fcf tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x36608ded memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x366c0cb1 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x3675364a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3686d3a4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3688eed8 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x3693066b tcp_release_cb +EXPORT_SYMBOL vmlinux 0x36bb7fc0 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c2261e blk_start_queue +EXPORT_SYMBOL vmlinux 0x36c53a73 noop_llseek +EXPORT_SYMBOL vmlinux 0x36e43824 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x36e86c47 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x36e9c387 ns_capable +EXPORT_SYMBOL vmlinux 0x36eb1d12 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x36eb6287 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x36eff6b2 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x36f950a6 snd_card_register +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x36ffd527 dquot_transfer +EXPORT_SYMBOL vmlinux 0x371586f3 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x3719e438 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374be51c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x37725f0a blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x37763111 skb_append +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37eb8304 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x37f23eb7 redraw_screen +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x38073daa mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x3809bba6 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x380e061c alloc_disk +EXPORT_SYMBOL vmlinux 0x3813e816 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3829b6c4 dst_discard_out +EXPORT_SYMBOL vmlinux 0x382f2061 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3838e04d pci_reenable_device +EXPORT_SYMBOL vmlinux 0x3856bd81 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x3856ca56 padata_free +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38878910 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x38966431 lro_flush_all +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b28f37 init_special_inode +EXPORT_SYMBOL vmlinux 0x38c47609 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x38df9c3d copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x38faea44 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x39200f64 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x392b1e79 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3964b68c netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x396e2bd8 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399d8919 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39ca5aac file_ns_capable +EXPORT_SYMBOL vmlinux 0x39f2c877 security_mmap_file +EXPORT_SYMBOL vmlinux 0x3a02183b snd_timer_pause +EXPORT_SYMBOL vmlinux 0x3a0d499b snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a26894b of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x3a2d99fe lookup_bdev +EXPORT_SYMBOL vmlinux 0x3a4eee8b vme_slot_num +EXPORT_SYMBOL vmlinux 0x3a5a2232 set_device_ro +EXPORT_SYMBOL vmlinux 0x3a61738b phy_start_aneg +EXPORT_SYMBOL vmlinux 0x3a814a6b file_update_time +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab0655d sg_miter_next +EXPORT_SYMBOL vmlinux 0x3abb26b0 ioremap_wc +EXPORT_SYMBOL vmlinux 0x3ac11c44 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x3ac5f043 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x3aef2b9f scsi_dma_map +EXPORT_SYMBOL vmlinux 0x3b180b87 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x3b483765 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x3b57ac74 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x3b5b4d9d kmem_cache_free +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b7775a4 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x3b82a3f3 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3b881760 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bc48324 iunique +EXPORT_SYMBOL vmlinux 0x3c190839 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x3c27dde1 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x3c349304 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x3c377914 inet_addr_type +EXPORT_SYMBOL vmlinux 0x3c3cfc9f blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c5c20ad phy_init_eee +EXPORT_SYMBOL vmlinux 0x3c5cd2db netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3c75b2da pci_find_capability +EXPORT_SYMBOL vmlinux 0x3c78f004 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8b6559 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x3cd76eea of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3ce45bbe d_move +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d0f1e34 pci_find_bus +EXPORT_SYMBOL vmlinux 0x3d1cde65 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x3d1fd4b9 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x3d2c81d5 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d318d1f i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d57acdf fb_blank +EXPORT_SYMBOL vmlinux 0x3d5941cb remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x3d623fed sock_create_lite +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3d8ec741 netdev_alert +EXPORT_SYMBOL vmlinux 0x3d983fc3 path_is_under +EXPORT_SYMBOL vmlinux 0x3daf74d1 param_get_long +EXPORT_SYMBOL vmlinux 0x3dc1bdf0 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcfc07a padata_alloc +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e3096d5 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x3e64e33f register_sound_special_device +EXPORT_SYMBOL vmlinux 0x3e6ae8dc __neigh_create +EXPORT_SYMBOL vmlinux 0x3e7de885 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x3e827926 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e9c93d6 neigh_table_init +EXPORT_SYMBOL vmlinux 0x3eb3a6ed scsi_scan_host +EXPORT_SYMBOL vmlinux 0x3ec7cb8e tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3edc1115 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x3ef49db1 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x3f032328 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f2683dc input_grab_device +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f556449 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f5d5690 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f74753c have_submounts +EXPORT_SYMBOL vmlinux 0x3f93c5d8 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fac4e14 netlink_unicast +EXPORT_SYMBOL vmlinux 0x3feb113e snd_timer_close +EXPORT_SYMBOL vmlinux 0x4012c432 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x40150d85 mpage_readpages +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403d00dd __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x403f0cc1 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x40459bba bio_copy_data +EXPORT_SYMBOL vmlinux 0x405399ed tty_do_resize +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405de951 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x40756649 omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x4080315f gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x40826031 dump_emit +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b727ac dmam_pool_create +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c55dfa pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f07e63 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x40f29d5f neigh_lookup +EXPORT_SYMBOL vmlinux 0x41103f65 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x411e5863 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x4138802d generic_delete_inode +EXPORT_SYMBOL vmlinux 0x4145d53f put_io_context +EXPORT_SYMBOL vmlinux 0x414773c5 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4156d370 ilookup +EXPORT_SYMBOL vmlinux 0x4158c24f do_splice_direct +EXPORT_SYMBOL vmlinux 0x417899dc __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x4178c558 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x418251d2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41a6bfd6 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x41afca34 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41c42aa9 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x41c58267 input_reset_device +EXPORT_SYMBOL vmlinux 0x41cdf37e pci_request_regions +EXPORT_SYMBOL vmlinux 0x41d2a387 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x41fb97de tegra_dfll_unregister +EXPORT_SYMBOL vmlinux 0x4205fcb2 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x42156124 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422151da __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x42261a50 update_region +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x424141a5 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x428a4b41 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42da38b3 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43031fd2 __inode_permission +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4371d440 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4394e020 dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x43ae6255 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x43d98855 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4411ec55 iput +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x44208a11 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443fea32 get_user_pages +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x447b202c alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x449517fc __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x44b0068c snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b39fb8 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x44baedea downgrade_write +EXPORT_SYMBOL vmlinux 0x44cf88b7 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x44d0668c request_firmware +EXPORT_SYMBOL vmlinux 0x44d4a36d mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454ddd07 generic_update_time +EXPORT_SYMBOL vmlinux 0x45758147 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457ff384 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x458d8b3c ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x45901063 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x459fa39d register_cdrom +EXPORT_SYMBOL vmlinux 0x45a67da8 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x45b75aae pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45e0479d fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x45edc8a0 bd_set_size +EXPORT_SYMBOL vmlinux 0x460b6734 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x4612df44 vme_irq_request +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462d3c74 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x462d959b netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x46392e8d blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x467a0200 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x468baa41 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x46a980a6 __alloc_skb +EXPORT_SYMBOL vmlinux 0x46c10ffe scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46dfdfb5 shdma_cleanup +EXPORT_SYMBOL vmlinux 0x46e7dde9 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x46e8ecbe snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4715898c da903x_query_status +EXPORT_SYMBOL vmlinux 0x47279970 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47acf829 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x47ad0e96 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x47ccbf34 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0x47df7824 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f143d4 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48114481 nvm_register_target +EXPORT_SYMBOL vmlinux 0x48130f00 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4828c793 nand_scan +EXPORT_SYMBOL vmlinux 0x48577571 twl6040_power +EXPORT_SYMBOL vmlinux 0x48581223 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x489d1e59 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48b57fd7 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48df65f3 netif_napi_add +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49205c1e posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x493fd318 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4966c395 of_find_property +EXPORT_SYMBOL vmlinux 0x497646bd path_noexec +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x49830b9f call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x49841c61 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x498be8a2 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x49939e5a neigh_seq_start +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49ad156b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49be0d78 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x49c03efe add_disk +EXPORT_SYMBOL vmlinux 0x49e7f577 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49ed6393 sock_wfree +EXPORT_SYMBOL vmlinux 0x49f45153 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a00ff47 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x4a290362 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x4a306829 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a54ac0e inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a81ece6 dqget +EXPORT_SYMBOL vmlinux 0x4a976973 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x4a978262 tty_port_close +EXPORT_SYMBOL vmlinux 0x4a9f67a4 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac32daa tcp_check_req +EXPORT_SYMBOL vmlinux 0x4ac60d19 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x4adf148b con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x4af99d72 start_tty +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b019cc2 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x4b1715a3 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b429077 simple_release_fs +EXPORT_SYMBOL vmlinux 0x4b4e7fe4 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x4b5543b7 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b65222c snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4b98aa8c security_file_permission +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bafd021 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbd1c95 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x4bc345c0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x4bce0f36 gen_pool_create +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd1aad1 mpage_readpage +EXPORT_SYMBOL vmlinux 0x4bd3ee3b of_device_unregister +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bfe1a17 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4c0ff987 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x4c1b6e7d msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c42f6a9 dev_deactivate +EXPORT_SYMBOL vmlinux 0x4c4a5700 __seq_open_private +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c75e194 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c8b5fbc proc_mkdir +EXPORT_SYMBOL vmlinux 0x4c95e45f fput +EXPORT_SYMBOL vmlinux 0x4c97f645 dev_notice +EXPORT_SYMBOL vmlinux 0x4c9e0ecf is_bad_inode +EXPORT_SYMBOL vmlinux 0x4ca86ffe jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x4caef3f3 set_create_files_as +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cc2854d tegra114_clock_assert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0x4ccaefd5 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x4ccbb08a block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x4cd8993b pci_request_region +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf60ad1 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d21215b d_find_any_alias +EXPORT_SYMBOL vmlinux 0x4d2e2307 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x4d3680c3 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3bebe2 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d69ac60 skb_put +EXPORT_SYMBOL vmlinux 0x4d7ab867 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d890403 netdev_err +EXPORT_SYMBOL vmlinux 0x4d8e7b8c of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x4d8ec14e dcb_getapp +EXPORT_SYMBOL vmlinux 0x4d901b5d bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4d9be6a2 seq_lseek +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dff35db tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x4e264cdc nf_afinfo +EXPORT_SYMBOL vmlinux 0x4e3053f7 fget +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e37d2fa pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x4e39377a poll_initwait +EXPORT_SYMBOL vmlinux 0x4e431313 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e6234c0 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e71a5e4 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x4e7fe0aa elm_config +EXPORT_SYMBOL vmlinux 0x4e869eab twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x4e87f42d pci_bus_type +EXPORT_SYMBOL vmlinux 0x4eacfe8b __frontswap_load +EXPORT_SYMBOL vmlinux 0x4eb8889b fb_set_var +EXPORT_SYMBOL vmlinux 0x4ebb5d90 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x4ee7d9eb eth_gro_complete +EXPORT_SYMBOL vmlinux 0x4ee869bb pci_iomap +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f24ef84 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x4f3820d8 __sb_start_write +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f493bcc migrate_page +EXPORT_SYMBOL vmlinux 0x4f5083ea keyring_alloc +EXPORT_SYMBOL vmlinux 0x4f50db5a skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x4f568326 page_readlink +EXPORT_SYMBOL vmlinux 0x4f58be4e __serio_register_driver +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f77f3e5 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fa5551f blkdev_get +EXPORT_SYMBOL vmlinux 0x4fae7343 register_shrinker +EXPORT_SYMBOL vmlinux 0x4faf097b snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x4fb5ee6c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x4fbbcff5 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x4fd16b51 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x4fe971df sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x5003a028 register_qdisc +EXPORT_SYMBOL vmlinux 0x500887a8 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x5047ddc9 km_policy_notify +EXPORT_SYMBOL vmlinux 0x50510f08 input_unregister_device +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x508645da md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c0e17d blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x50cdc675 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x5102a9ca import_iovec +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511cbebc gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x51250b0a unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x51254a29 vm_insert_page +EXPORT_SYMBOL vmlinux 0x513ae5a4 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x514cc273 arm_copy_from_user +EXPORT_SYMBOL vmlinux 0x516545e2 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x5174a914 __mutex_init +EXPORT_SYMBOL vmlinux 0x517e7ea8 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x5182b5e7 snd_seq_root +EXPORT_SYMBOL vmlinux 0x518e8559 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x51957ba4 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x519c77db __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x51c558cc rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x51cfd5e0 set_security_override +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51d7f7ec blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51e9de1c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f1671f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x5200c8ea sock_kmalloc +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52159979 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522424cb of_get_next_parent +EXPORT_SYMBOL vmlinux 0x52273ac7 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x524d8128 d_alloc +EXPORT_SYMBOL vmlinux 0x525339f9 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x5263d344 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x526dfdad of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x529c7b60 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x529f63bd sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b2380f elv_add_request +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52bdbf46 md_integrity_register +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52e64f21 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x52f3aa50 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5325edab tcp_disconnect +EXPORT_SYMBOL vmlinux 0x532d0f83 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x532db2d5 serio_rescan +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534be134 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x535138c0 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53689c49 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x538860ee mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5399dc6d nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x53b4e311 nand_scan_tail +EXPORT_SYMBOL vmlinux 0x53bc72b5 update_devfreq +EXPORT_SYMBOL vmlinux 0x53c43a2b arp_create +EXPORT_SYMBOL vmlinux 0x53c8bc3d inet_add_protocol +EXPORT_SYMBOL vmlinux 0x53de8c13 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x53f02110 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x541db670 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x54248d88 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x543f09ff dquot_scan_active +EXPORT_SYMBOL vmlinux 0x5440ba5f inet_accept +EXPORT_SYMBOL vmlinux 0x54596449 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x545beb36 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x5466b847 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x549f6501 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b36084 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x54b683e6 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54d677ea dev_get_iflink +EXPORT_SYMBOL vmlinux 0x54de52a1 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ee3258 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x55105975 nand_lock +EXPORT_SYMBOL vmlinux 0x551098a4 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55396970 of_iomap +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5572a717 get_disk +EXPORT_SYMBOL vmlinux 0x558f7d80 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5592483c zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x55b552fe snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e9b938 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x5609701e xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x561dde1e udp_sendmsg +EXPORT_SYMBOL vmlinux 0x5627f584 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x562b0835 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x562bc65c set_page_dirty +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x563ecd1d snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x564a38d8 _dev_info +EXPORT_SYMBOL vmlinux 0x564cd8d4 __find_get_block +EXPORT_SYMBOL vmlinux 0x56677590 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x56889274 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x568992ce blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x568c231d inet6_getname +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x5695faf2 path_get +EXPORT_SYMBOL vmlinux 0x569a77f0 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56bc7cae skb_make_writable +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c92e67 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x56d00fac mutex_unlock +EXPORT_SYMBOL vmlinux 0x56d58a2a xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x56f5531b of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x56fe1353 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5739fad0 kernel_read +EXPORT_SYMBOL vmlinux 0x573c33d9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x5742fc23 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575b3f70 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5777bf4a nvm_submit_io +EXPORT_SYMBOL vmlinux 0x5781af1d fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x578de2fc mapping_tagged +EXPORT_SYMBOL vmlinux 0x57a5380a tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x57a6f94e seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x57ba4b32 simple_fill_super +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x57dea405 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x57e37228 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x57e4114e dev_addr_init +EXPORT_SYMBOL vmlinux 0x57ec36b4 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x57fe8915 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x580cb4d8 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x581150e2 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582c0793 __kfree_skb +EXPORT_SYMBOL vmlinux 0x582cbc23 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583cb317 contig_page_data +EXPORT_SYMBOL vmlinux 0x584cfa2d phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587f6ef5 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x58b61031 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58ba1e89 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x58c7c8a6 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x58d4cabd __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x590a79ad dquot_alloc +EXPORT_SYMBOL vmlinux 0x59167d7d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x591d4722 put_tty_driver +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x5953747c qdisc_list_add +EXPORT_SYMBOL vmlinux 0x59638d4b cfb_fillrect +EXPORT_SYMBOL vmlinux 0x59789c22 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x59852631 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59905143 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x5993e074 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x599a19a5 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x59a17bfc tegra114_clock_tune_cpu_trimmers_high +EXPORT_SYMBOL vmlinux 0x59a36da1 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc44a6 dst_init +EXPORT_SYMBOL vmlinux 0x59c2bc16 phy_detach +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d42050 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x59d534eb param_set_charp +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59d9cbdf nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x59de97a4 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59f86cec d_tmpfile +EXPORT_SYMBOL vmlinux 0x5a006be8 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0eb92d udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x5a1c9472 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x5a548107 lease_modify +EXPORT_SYMBOL vmlinux 0x5a86de82 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x5a9473b6 security_path_symlink +EXPORT_SYMBOL vmlinux 0x5a94b288 d_splice_alias +EXPORT_SYMBOL vmlinux 0x5ab6ce86 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b4ad108 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x5b54995c dev_uc_sync +EXPORT_SYMBOL vmlinux 0x5b5b89a4 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x5b677e22 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x5b6815b7 clear_nlink +EXPORT_SYMBOL vmlinux 0x5b84a6ca netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x5ba02a66 misc_register +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bc4862f scsi_remove_host +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5c119852 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c399058 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x5c6d75aa inet_frags_init +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cba9cd1 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x5cbb459e blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x5cd49616 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf76146 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x5cf8f9b7 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x5d075ff9 pci_get_device +EXPORT_SYMBOL vmlinux 0x5d17a218 of_get_address +EXPORT_SYMBOL vmlinux 0x5d288149 nf_log_trace +EXPORT_SYMBOL vmlinux 0x5d415e15 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x5d47faeb devm_memremap +EXPORT_SYMBOL vmlinux 0x5d487864 generic_write_checks +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5f545e of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x5d6138c7 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5d9cf688 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5dd89e57 read_cache_pages +EXPORT_SYMBOL vmlinux 0x5dda52ea block_read_full_page +EXPORT_SYMBOL vmlinux 0x5df9ab30 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5e004b60 override_creds +EXPORT_SYMBOL vmlinux 0x5e01d323 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x5e0ad24c mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x5e0f0dc9 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x5e18da77 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x5e612866 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x5e745d17 security_path_link +EXPORT_SYMBOL vmlinux 0x5e7c95e2 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8694bd amba_driver_register +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5ecd7dce ps2_drain +EXPORT_SYMBOL vmlinux 0x5ecde4fe nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc53aa input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x5ee38286 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x5f003a8f abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f00a9b6 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0db4ee bh_submit_read +EXPORT_SYMBOL vmlinux 0x5f17c2de alloc_file +EXPORT_SYMBOL vmlinux 0x5f19c78b snd_pcm_create_iec958_consumer +EXPORT_SYMBOL vmlinux 0x5f1f2d86 register_quota_format +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f27fb6e pcim_enable_device +EXPORT_SYMBOL vmlinux 0x5f433ac9 uart_resume_port +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f787356 pci_pme_active +EXPORT_SYMBOL vmlinux 0x5f7a1af1 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x5f7c7111 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x5f7f5419 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x5f829277 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x5fab33b1 set_blocksize +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fea9076 filp_close +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x5ff554ff xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x60055baa dispc_mgr_get_vsync_irq +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60339871 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605c3784 filemap_fault +EXPORT_SYMBOL vmlinux 0x605c4e4f of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x60638cbd inetdev_by_index +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x608545eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a94fc9 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x60bf3c61 key_alloc +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f6709f mount_single +EXPORT_SYMBOL vmlinux 0x60f783b1 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x60fda095 netdev_crit +EXPORT_SYMBOL vmlinux 0x610c409d dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x61141a31 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x61238c43 put_page +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61298ff3 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x614870af fb_show_logo +EXPORT_SYMBOL vmlinux 0x6154aca3 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x617e74eb simple_nosetlease +EXPORT_SYMBOL vmlinux 0x6191baab alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x619922a4 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c28af4 flow_cache_init +EXPORT_SYMBOL vmlinux 0x61e0c015 sock_register +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x62230420 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62296be1 qcom_scm_get_version +EXPORT_SYMBOL vmlinux 0x622a3a5b kmap_to_page +EXPORT_SYMBOL vmlinux 0x6233e596 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x62417e15 send_sig +EXPORT_SYMBOL vmlinux 0x6249ef29 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x626403f5 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x6267fabc vfs_writev +EXPORT_SYMBOL vmlinux 0x626d393b xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a41e00 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0x62b9cf9d device_get_mac_address +EXPORT_SYMBOL vmlinux 0x62d70726 scsi_init_io +EXPORT_SYMBOL vmlinux 0x62ec78aa pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631cc8d6 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x6321a14f inet_del_offload +EXPORT_SYMBOL vmlinux 0x6341a82a skb_checksum +EXPORT_SYMBOL vmlinux 0x63428f35 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x6358889d __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63767cd0 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x638b584d mmc_put_card +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63e3d4d8 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f5e38b kernel_accept +EXPORT_SYMBOL vmlinux 0x63f85137 neigh_xmit +EXPORT_SYMBOL vmlinux 0x63fa1eb1 napi_complete_done +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6401717e dev_mc_flush +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642013c1 new_inode +EXPORT_SYMBOL vmlinux 0x64290c1c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x64657c1c xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x64702894 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649c994b single_open +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64a6f727 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x64cb3553 kernel_listen +EXPORT_SYMBOL vmlinux 0x64dc0509 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x64f11400 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x650b5b15 km_state_notify +EXPORT_SYMBOL vmlinux 0x650ddfbe tcp_sendpage +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651ddafd flow_cache_fini +EXPORT_SYMBOL vmlinux 0x652e1b64 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x653be8f6 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x6567b770 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x656b6f7a xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65da47f6 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x65daa824 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e50f75 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x65ed1ed8 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fc4d91 vfs_statfs +EXPORT_SYMBOL vmlinux 0x6607080b inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x6628814b remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x6646ef49 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x668eb13b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x66909dde cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x66d38ed0 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0x66d41d76 neigh_for_each +EXPORT_SYMBOL vmlinux 0x66e80daa inet_frags_fini +EXPORT_SYMBOL vmlinux 0x672ba4bf inode_needs_sync +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x67344c3b snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x6744d497 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67877fdc jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c7477f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x67fe0007 shdma_init +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x683666f5 simple_lookup +EXPORT_SYMBOL vmlinux 0x6873581b skb_queue_purge +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a6bb0d dev_disable_lro +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b9015e empty_zero_page +EXPORT_SYMBOL vmlinux 0x68baee71 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x68bf5f85 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x68c96360 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x68d5ba70 dev_add_offload +EXPORT_SYMBOL vmlinux 0x68d94cdd udp_proc_register +EXPORT_SYMBOL vmlinux 0x68ebe8d9 sync_inode +EXPORT_SYMBOL vmlinux 0x68fa763f dump_align +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x69000a8a sk_free +EXPORT_SYMBOL vmlinux 0x6909db44 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6915bccd pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x691a0ff0 sound_class +EXPORT_SYMBOL vmlinux 0x6928a08d netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x69490d8f __ip_dev_find +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697c79db netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x697ca4b3 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x69aa62f0 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69af5f81 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69e34d09 read_cache_page +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a08d658 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x6a1571bc mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x6a1dae95 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x6a200ba6 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x6a368c6c tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x6a472fac cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7b1d22 noop_qdisc +EXPORT_SYMBOL vmlinux 0x6a8c5543 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x6aa47bcd alloc_fcdev +EXPORT_SYMBOL vmlinux 0x6abed42c pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x6ac5a7da forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ae33fbf inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6aec28ef dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1e13e1 tty_port_init +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b4a3f9f swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x6b53e4c5 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x6b5dc935 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x6b6a03e4 serio_interrupt +EXPORT_SYMBOL vmlinux 0x6b7cd95a blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6b82f9e1 tty_name +EXPORT_SYMBOL vmlinux 0x6b945829 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc72e46 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x6bd1cf7e single_release +EXPORT_SYMBOL vmlinux 0x6bd4ecce cfb_imageblit +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdda26c i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2b49fc copy_from_iter +EXPORT_SYMBOL vmlinux 0x6c36c121 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x6c48568a insert_inode_locked +EXPORT_SYMBOL vmlinux 0x6c4da5b0 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x6c517376 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c51b7d1 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c9ebf77 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x6cae15e4 mount_bdev +EXPORT_SYMBOL vmlinux 0x6cb4bd25 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x6cb876bb trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x6cc10672 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cffe2ec blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x6d0055ee dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d2683d5 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d37b972 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x6d63a3cd tcf_em_register +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d73db94 dquot_commit +EXPORT_SYMBOL vmlinux 0x6d81358f mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x6da03e42 PDE_DATA +EXPORT_SYMBOL vmlinux 0x6da196c8 pcim_iomap +EXPORT_SYMBOL vmlinux 0x6da4510b mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x6da9149e skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x6dd75fe1 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e16302b bio_split +EXPORT_SYMBOL vmlinux 0x6e396e1e fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e6610b4 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e754997 block_write_full_page +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6e9e131c of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6edcdbfb ip_setsockopt +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6ee5d4e1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x6eec5924 inet_shutdown +EXPORT_SYMBOL vmlinux 0x6eed0bbe unregister_quota_format +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f3aa11c parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x6f802964 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6f848324 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8a83c1 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x6f983616 blk_put_queue +EXPORT_SYMBOL vmlinux 0x6fa89fae scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc329df elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe058fe tcp_ioctl +EXPORT_SYMBOL vmlinux 0x6fedcbab iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700af114 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x704ffdb3 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x705edb90 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70735068 backlight_device_register +EXPORT_SYMBOL vmlinux 0x707d30bd jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709090ca devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x70c03afb dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x70cad774 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70e55b23 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x70ed9e33 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x710f96e0 may_umount_tree +EXPORT_SYMBOL vmlinux 0x71136218 inet_select_addr +EXPORT_SYMBOL vmlinux 0x711725ce cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7142e846 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71815af3 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0x718c9903 down_write +EXPORT_SYMBOL vmlinux 0x7196c5a4 sg_miter_start +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c6b6c4 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71c95ccb snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x71cddc0c sock_no_bind +EXPORT_SYMBOL vmlinux 0x71db1bd5 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x71eb0ca6 sock_rfree +EXPORT_SYMBOL vmlinux 0x71eea7f8 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f86a5c max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x727221b2 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x729b29e7 amba_release_regions +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72af2399 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72c2d5da snd_timer_continue +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef027b devm_gpio_free +EXPORT_SYMBOL vmlinux 0x72fb7f15 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x73087cbe tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73169623 put_filp +EXPORT_SYMBOL vmlinux 0x732953c6 kunmap_high +EXPORT_SYMBOL vmlinux 0x732f0452 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d2b3c __quota_error +EXPORT_SYMBOL vmlinux 0x73615207 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x7384651a console_stop +EXPORT_SYMBOL vmlinux 0x738588ac ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x738af90a dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x739c2365 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x73a37a52 sync_blockdev +EXPORT_SYMBOL vmlinux 0x73c24688 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x73da0fd3 nvm_put_blk +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fa0416 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x7405ac66 lwtunnel_output +EXPORT_SYMBOL vmlinux 0x74063cd9 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74209781 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x7436a7a2 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x74372941 of_dev_get +EXPORT_SYMBOL vmlinux 0x746dafc4 d_find_alias +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7476784b may_umount +EXPORT_SYMBOL vmlinux 0x74823a70 pci_restore_state +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74921a92 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x7496562b dma_async_device_register +EXPORT_SYMBOL vmlinux 0x7497639c inet6_ioctl +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d50bae neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x74e46dac imx_ssi_fiq_tx_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74f83ff2 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750725e3 tegra_dfll_runtime_resume +EXPORT_SYMBOL vmlinux 0x753075ff xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x753580f5 mmc_free_host +EXPORT_SYMBOL vmlinux 0x75384d84 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x7539d222 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x753a9285 drop_nlink +EXPORT_SYMBOL vmlinux 0x75511919 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x75643e9b mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x756a4c2b stop_tty +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x7596d033 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x759c7991 simple_open +EXPORT_SYMBOL vmlinux 0x75b62313 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d83ba5 file_path +EXPORT_SYMBOL vmlinux 0x75e71b1f of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x75e72ed6 soft_cursor +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762c0c0d dev_printk_emit +EXPORT_SYMBOL vmlinux 0x764646db dev_err +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x769b9590 should_remove_suid +EXPORT_SYMBOL vmlinux 0x76beb348 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e9adf9 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x76eb32a7 pipe_lock +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76fbdfba eth_type_trans +EXPORT_SYMBOL vmlinux 0x772519be gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x77251d48 unregister_key_type +EXPORT_SYMBOL vmlinux 0x77460010 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x77589706 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x778c64de arp_xmit +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779207c6 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a571cd __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x77b04540 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77e9a946 audit_log +EXPORT_SYMBOL vmlinux 0x77eddff6 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x77fa1a63 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x78130555 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x7816de11 eth_header +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7865d932 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x7868993d input_set_capability +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789a6fa8 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a3c625 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x78a6e201 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x78b1f029 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x78bf266f netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e979ed f_setown +EXPORT_SYMBOL vmlinux 0x78fc586b blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x790e84ae jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x7925b561 from_kprojid +EXPORT_SYMBOL vmlinux 0x79353f08 mdiobus_write +EXPORT_SYMBOL vmlinux 0x7944288e dev_warn +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7974fac4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x797ab067 netdev_printk +EXPORT_SYMBOL vmlinux 0x797d1993 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x79a8c378 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x79a8cea9 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b864be tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x79beb722 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x79c50406 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x79c5a9f0 ioremap +EXPORT_SYMBOL vmlinux 0x79e25699 vme_irq_free +EXPORT_SYMBOL vmlinux 0x79f08625 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x79f814ab nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x79fa1deb imx_ssi_fiq_rx_buffer +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a74a0e8 module_refcount +EXPORT_SYMBOL vmlinux 0x7a946460 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x7a9484f3 load_nls_default +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9f621b dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x7aa006f5 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b01220f shdma_chan_probe +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b4ea9fc of_get_pci_address +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5f50f0 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x7b72c014 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x7b84cdff dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7b89bd83 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x7b9fc896 find_lock_entry +EXPORT_SYMBOL vmlinux 0x7ba299e7 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x7bab757c dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x7bb65110 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x7bcf1e30 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x7bcf97e9 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7bdaf88a padata_do_parallel +EXPORT_SYMBOL vmlinux 0x7c00529a jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1715c3 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c176028 check_disk_change +EXPORT_SYMBOL vmlinux 0x7c24f5d4 try_to_release_page +EXPORT_SYMBOL vmlinux 0x7c33f0d0 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c52be42 netdev_change_features +EXPORT_SYMBOL vmlinux 0x7c7e07e6 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7c939af1 proto_unregister +EXPORT_SYMBOL vmlinux 0x7c983b7d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc3ce7d dev_mc_init +EXPORT_SYMBOL vmlinux 0x7cc6276f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe21d3 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x7d003f30 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d31c5e4 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x7d5f56d6 tty_register_driver +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7d86a0 of_device_alloc +EXPORT_SYMBOL vmlinux 0x7d82c443 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x7d84d966 try_module_get +EXPORT_SYMBOL vmlinux 0x7d89bd0a pci_bus_put +EXPORT_SYMBOL vmlinux 0x7d97d2b2 generic_perform_write +EXPORT_SYMBOL vmlinux 0x7d9991fb tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x7dbd78ca phy_device_register +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7ddaa769 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x7dec23ca vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e6b2e66 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x7e6c7cb0 register_netdev +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e6fbfed __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x7e6fc59c neigh_table_clear +EXPORT_SYMBOL vmlinux 0x7e8f449b tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x7e98d06b phy_init_hw +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7e9f6df4 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x7ea32009 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x7ec1a634 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x7ed7e23d register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7edad23c make_kprojid +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7efb2ff7 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f20991f rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f49333c mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f814031 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x7f9c34eb mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x7fb96141 set_groups +EXPORT_SYMBOL vmlinux 0x7fd53dfe nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x7fd668f2 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff5c1ef release_sock +EXPORT_SYMBOL vmlinux 0x8008ecbc devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x800d8961 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x800e995d inet6_del_offload +EXPORT_SYMBOL vmlinux 0x800f28b5 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x8010ceed netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x802f8f65 kfree_skb +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x8062895e tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x8062f862 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x8067600a __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x80844491 dquot_get_state +EXPORT_SYMBOL vmlinux 0x80888cfc pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x808aedf5 dev_mc_add +EXPORT_SYMBOL vmlinux 0x8091cb54 __genl_register_family +EXPORT_SYMBOL vmlinux 0x80982906 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x80c676ea generic_setxattr +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ca9567 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d84ad3 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x80e13340 tty_set_operations +EXPORT_SYMBOL vmlinux 0x80e263c4 tcp_close +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x80e5fadd __destroy_inode +EXPORT_SYMBOL vmlinux 0x80ef4be5 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x80f74c14 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x81329423 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x8132ddbc bio_endio +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81862866 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x81919963 seq_vprintf +EXPORT_SYMBOL vmlinux 0x81991e8c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de4808 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x82043557 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x822137e2 arm_heavy_mb +EXPORT_SYMBOL vmlinux 0x8221d730 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x8222e911 tty_free_termios +EXPORT_SYMBOL vmlinux 0x822cda66 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x82498d97 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x82641109 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x82641c0b pci_get_slot +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829e876e jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x829e90da udp_ioctl +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c43d96 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x82c6fbdf register_md_personality +EXPORT_SYMBOL vmlinux 0x82cf48b0 up_write +EXPORT_SYMBOL vmlinux 0x82f5e2f0 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8315a933 bio_map_kern +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83274776 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x8327acc0 free_user_ns +EXPORT_SYMBOL vmlinux 0x832db517 blk_get_request +EXPORT_SYMBOL vmlinux 0x8352a1e6 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a8f4b4 kern_path +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b37ec1 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d58202 proto_register +EXPORT_SYMBOL vmlinux 0x83f12f05 dev_get_flags +EXPORT_SYMBOL vmlinux 0x840cf9db ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x840ddd5f snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x8418d08a lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x8422589e mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x8449dbfc __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x846992a1 seq_release_private +EXPORT_SYMBOL vmlinux 0x847b4db6 eth_header_parse +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84b4ce36 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x84bd2bc7 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x84cc02f5 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x84eb9d63 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8509ab47 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x850c5209 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x851b64b4 serio_reconnect +EXPORT_SYMBOL vmlinux 0x8522e5b3 request_key +EXPORT_SYMBOL vmlinux 0x854b0ee4 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x854fec83 tegra_sku_info +EXPORT_SYMBOL vmlinux 0x85627a8a __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x85a52ad7 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c7ebf7 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x85de8873 inet6_bind +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e6d90e sync_filesystem +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f7b02f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x8605ecf8 bio_chain +EXPORT_SYMBOL vmlinux 0x8611ea30 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x863651fe phy_device_remove +EXPORT_SYMBOL vmlinux 0x8639498d prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86518652 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x865d50d4 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86695f88 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x86860195 dss_feat_get_supported_displays +EXPORT_SYMBOL vmlinux 0x86881cbf fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868b6331 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x8693fbd5 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x86a240a2 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c92069 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x86cd0162 md_write_start +EXPORT_SYMBOL vmlinux 0x86cd0990 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x86d000d0 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x86d23f58 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x86dd6416 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x86e1e602 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x86ef7de8 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x86f31595 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x87026423 wireless_send_event +EXPORT_SYMBOL vmlinux 0x8710b5a1 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872e116b ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x873f6844 follow_down_one +EXPORT_SYMBOL vmlinux 0x87404764 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x874fab1d cdev_add +EXPORT_SYMBOL vmlinux 0x87861d26 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879bf294 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x87b77922 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x87be4e84 of_device_is_available +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x87fd78cc blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x880db83b fd_install +EXPORT_SYMBOL vmlinux 0x8815c050 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x881cfc62 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x884681e0 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x8868cd96 km_report +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x88722d0d rtnl_notify +EXPORT_SYMBOL vmlinux 0x888e7bef dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x88a6ca16 of_get_property +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88c7d05e vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x88e507f6 __scm_send +EXPORT_SYMBOL vmlinux 0x8916e212 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x8941e7ad iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x89805093 d_genocide +EXPORT_SYMBOL vmlinux 0x89b48d40 con_is_bound +EXPORT_SYMBOL vmlinux 0x89c925ef jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x89ca5e98 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e25fd4 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x89f3def3 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8a01db5a nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x8a0528fe current_fs_time +EXPORT_SYMBOL vmlinux 0x8a0b7a46 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2858e7 seq_dentry +EXPORT_SYMBOL vmlinux 0x8a3f0e1f page_waitqueue +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5a3b83 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x8a7ac628 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8aaae0 page_symlink +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aab4a9e blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x8ab40cbd pci_choose_state +EXPORT_SYMBOL vmlinux 0x8abcee08 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x8ad07ad6 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x8af57000 tcp_connect +EXPORT_SYMBOL vmlinux 0x8af70d10 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x8b061bd1 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x8b2463ff xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x8b31106d snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4a4d1a dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7a9aa0 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8bb9894b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x8bc0450d devm_gpio_request +EXPORT_SYMBOL vmlinux 0x8bd1be13 sock_edemux +EXPORT_SYMBOL vmlinux 0x8bd2692e dquot_enable +EXPORT_SYMBOL vmlinux 0x8be52409 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x8bebf384 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x8bfd84d6 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x8c082de8 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8c095402 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x8c09d0e7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x8c0ee541 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x8c524646 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c7ec970 sock_no_listen +EXPORT_SYMBOL vmlinux 0x8c8cf474 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x8ca314a3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x8cc88415 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x8ccb276e omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cdaa111 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d12bc29 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d300804 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x8d481479 vfs_fsync +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5f3a01 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x8d652f0d inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d9ea8ea input_register_device +EXPORT_SYMBOL vmlinux 0x8da8ef5c iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x8da9b364 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x8dcb17f8 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd617fa tcf_exts_change +EXPORT_SYMBOL vmlinux 0x8dd7b9c9 mutex_trylock +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8df42983 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x8dfd597e sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e213f99 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x8e488629 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x8e54c270 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x8e690af8 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e8a5d86 netif_skb_features +EXPORT_SYMBOL vmlinux 0x8e978699 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL vmlinux 0x8ee2e3e1 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8f0a0220 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x8f52f430 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x8f53ad90 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5c3707 register_sound_midi +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f7e4362 would_dump +EXPORT_SYMBOL vmlinux 0x8f89c8da ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x8f8ada6a grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x8f904e68 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x8f925b41 ihold +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8faa5b93 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8fb1dea8 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x8fc15cbb vfs_unlink +EXPORT_SYMBOL vmlinux 0x8fcf64e3 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90045296 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x9004b7f6 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x90088436 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x9024870e blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x9027de9c arp_tbl +EXPORT_SYMBOL vmlinux 0x9036d172 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x905376df sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x905669e7 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x90b4a3cb cdrom_open +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x910408fb pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x9104b829 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x91067838 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x911ae024 vc_resize +EXPORT_SYMBOL vmlinux 0x9131c688 dquot_initialize +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x916d17e1 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91755d79 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x91819f94 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0x91836f05 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91d0e51f of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x91e28af3 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x91ea2f99 get_empty_filp +EXPORT_SYMBOL vmlinux 0x91ea7a6d unregister_binfmt +EXPORT_SYMBOL vmlinux 0x91eb77aa register_filesystem +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x921a55a9 nf_log_set +EXPORT_SYMBOL vmlinux 0x9231814e nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x923681da alloc_disk_node +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92465c51 kernel_connect +EXPORT_SYMBOL vmlinux 0x924f9a10 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x9299f741 d_set_d_op +EXPORT_SYMBOL vmlinux 0x929a8789 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92adae0a pci_enable_device +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92f11101 vfs_llseek +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930645fa kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x930807a2 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x930a29d1 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9322f7dd mdiobus_read +EXPORT_SYMBOL vmlinux 0x9329bd5d snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x932e6713 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93379824 notify_change +EXPORT_SYMBOL vmlinux 0x933d723c phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x934416dd freeze_bdev +EXPORT_SYMBOL vmlinux 0x93507cf8 devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937fbd37 vmap +EXPORT_SYMBOL vmlinux 0x93861007 sk_alloc +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x939f86a5 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x93a443aa seq_escape +EXPORT_SYMBOL vmlinux 0x93afe019 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x93b1e369 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b7f8da pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x93cf193b __dst_free +EXPORT_SYMBOL vmlinux 0x93d24e02 kmap_atomic +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93ffba71 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x942b574e cdrom_release +EXPORT_SYMBOL vmlinux 0x9433c61c setup_arg_pages +EXPORT_SYMBOL vmlinux 0x94427546 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x94451b30 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x9445520b generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x94626d7a dm_put_table_device +EXPORT_SYMBOL vmlinux 0x946547f5 save_mount_options +EXPORT_SYMBOL vmlinux 0x946da8d7 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x946efbfa __wait_on_bit +EXPORT_SYMBOL vmlinux 0x94733c8d inet_listen +EXPORT_SYMBOL vmlinux 0x948a39ad snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x948c031f of_parse_phandle +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949b4d03 vm_mmap +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94c797bb mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94e120bf __scsi_add_device +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x951988fa phy_start +EXPORT_SYMBOL vmlinux 0x953aec8b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x954022d7 lookup_one_len +EXPORT_SYMBOL vmlinux 0x95409136 mount_subtree +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x9570e5e4 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x957bca7b datagram_poll +EXPORT_SYMBOL vmlinux 0x95836774 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x9590c601 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x95a4e7f5 phy_device_free +EXPORT_SYMBOL vmlinux 0x95afc80c sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x95c599ba __brelse +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95e267ab security_path_truncate +EXPORT_SYMBOL vmlinux 0x95e575ef snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x95e712fe pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x95e879a8 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x95eb2a7c __secpath_destroy +EXPORT_SYMBOL vmlinux 0x95fd0134 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x9617860d ata_print_version +EXPORT_SYMBOL vmlinux 0x96370a76 setup_new_exec +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96680010 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x96684cca init_buffer +EXPORT_SYMBOL vmlinux 0x966f94d1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96939ce1 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x9693ef60 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x9693fe73 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d19ca9 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x970b36ed snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x97116ad1 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x9713d0d4 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9734efe2 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x973a4caf bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x973ca498 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x9744bd81 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9767c90b blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979b0dd6 read_code +EXPORT_SYMBOL vmlinux 0x97b719f1 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x97dcef6f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x980b9c07 input_register_handler +EXPORT_SYMBOL vmlinux 0x98105b2f vfs_whiteout +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98298baa do_map_probe +EXPORT_SYMBOL vmlinux 0x983f8b3a remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x984a9d2b keyring_search +EXPORT_SYMBOL vmlinux 0x984e5275 down_read_trylock +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9872c2b7 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x98818dfd twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x98887935 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9889daa5 omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0x989014eb dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x989dcde3 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x98a7639b path_put +EXPORT_SYMBOL vmlinux 0x98a88e47 led_update_brightness +EXPORT_SYMBOL vmlinux 0x98a8bf26 elevator_change +EXPORT_SYMBOL vmlinux 0x98b5f966 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98ef324f vfs_readv +EXPORT_SYMBOL vmlinux 0x98fe63ff sock_i_ino +EXPORT_SYMBOL vmlinux 0x9921831b phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c0289f snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99caa146 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x99cdbd63 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d335f8 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x99d42152 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x99f75a70 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3b9957 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x9a409986 put_cmsg +EXPORT_SYMBOL vmlinux 0x9a5ff8ea __put_cred +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9ab7b9ca of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9acd03ed inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x9ad1808e fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x9ae266b0 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b34a042 inode_init_once +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b39b1d2 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x9b4ebe2f bdi_init +EXPORT_SYMBOL vmlinux 0x9b68bfba vfs_read +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b75e96e generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x9b789856 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x9b861861 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6126a param_get_byte +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c3624c7 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x9c389dce of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x9c444ef0 dev_addr_del +EXPORT_SYMBOL vmlinux 0x9c520437 rwsem_wake +EXPORT_SYMBOL vmlinux 0x9c7f0db3 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0x9c83c586 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x9c85b96e tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x9c87aeae bio_add_page +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cbc1dc4 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x9ccfd224 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x9cd5b335 iget5_locked +EXPORT_SYMBOL vmlinux 0x9cdfac06 dev_add_pack +EXPORT_SYMBOL vmlinux 0x9ce9ae73 inet_bind +EXPORT_SYMBOL vmlinux 0x9cf48bdb cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x9d03b4df get_cached_acl +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d12812d snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x9d189c26 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3e23ef pci_enable_msix +EXPORT_SYMBOL vmlinux 0x9d3fd817 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x9d458500 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9da1a5cd scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x9dd2274a amba_request_regions +EXPORT_SYMBOL vmlinux 0x9dfa4196 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9dfe9cb9 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x9e01ae92 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x9e04a26f done_path_create +EXPORT_SYMBOL vmlinux 0x9e04f24c sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x9e0916a6 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e11e9ff qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x9e146042 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5818a2 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e61c6c5 simple_empty +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e6750ee phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x9e6c12c5 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7ada5f eth_validate_addr +EXPORT_SYMBOL vmlinux 0x9e9527e6 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea3ec2a __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x9eafc861 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9f04457c xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x9f12319f dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x9f3e87da jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6a559a disk_stack_limits +EXPORT_SYMBOL vmlinux 0x9f737688 bioset_create +EXPORT_SYMBOL vmlinux 0x9f77a6e5 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f8e0915 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9f969e63 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa425cb write_cache_pages +EXPORT_SYMBOL vmlinux 0x9fd3d5f2 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff5d185 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00daca0 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa01a0199 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xa023fa63 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa033ddaa netdev_state_change +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa047b62f param_ops_long +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04e473b blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa083815c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa09242a2 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xa0aae687 imx_ssi_fiq_end +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c63b7a kfree_put_link +EXPORT_SYMBOL vmlinux 0xa0d6066f xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0de59fc __devm_request_region +EXPORT_SYMBOL vmlinux 0xa0e69373 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xa0e85b9e snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd1d0c __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1231211 set_bh_page +EXPORT_SYMBOL vmlinux 0xa127022e skb_find_text +EXPORT_SYMBOL vmlinux 0xa12d1a58 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xa12d2b4a netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa156a75e i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xa176e7f2 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xa17c0fd3 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa17c7625 input_get_keycode +EXPORT_SYMBOL vmlinux 0xa1882069 nvm_get_blk +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa1983c91 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa19d91d3 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xa1ade7dd pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xa1ae42fb devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa1b44a19 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d1dd39 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1e8c871 __devm_release_region +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1f46faa snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa216006c sock_no_connect +EXPORT_SYMBOL vmlinux 0xa254ed59 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xa25eed43 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa266d161 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xa272f383 snd_ctl_add +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28fb969 dev_printk +EXPORT_SYMBOL vmlinux 0xa2af66ea skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xa2f0b002 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xa3098c48 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0xa31ae961 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32e68c6 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa341b7c2 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa35037bb __serio_register_port +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa379ab13 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa37ee1c6 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3905b54 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3c25e52 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xa3c4a3a8 dev_alert +EXPORT_SYMBOL vmlinux 0xa3cebbc4 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xa3fb20b0 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xa3fc35b1 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa41b23ee genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xa4365570 kmap +EXPORT_SYMBOL vmlinux 0xa436cb5e block_truncate_page +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa489cc65 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa49e6267 pci_dev_put +EXPORT_SYMBOL vmlinux 0xa4ace6cd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa5186d81 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0xa51f3420 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xa52d40e9 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xa538aaa0 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xa5436795 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xa54930f0 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa557bd2a pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xa578e760 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa5911c1d abx500_register_ops +EXPORT_SYMBOL vmlinux 0xa594fd4f dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5ae78e5 km_query +EXPORT_SYMBOL vmlinux 0xa5b896ab __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa5cd07f5 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5de4e68 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xa5e9749a kill_fasync +EXPORT_SYMBOL vmlinux 0xa60076b0 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xa6017b54 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xa614339c tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xa6196bb9 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa624e6c8 inet_offloads +EXPORT_SYMBOL vmlinux 0xa62f701e seq_puts +EXPORT_SYMBOL vmlinux 0xa637022d of_clk_get +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa63dee44 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65b4464 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xa6710942 netlink_set_err +EXPORT_SYMBOL vmlinux 0xa67190ee snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6884bde unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xa68f1e30 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6be7fc6 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xa6d28281 nf_reinject +EXPORT_SYMBOL vmlinux 0xa6e10dd5 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xa6f75f5b xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70a7287 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xa70ad66b dentry_unhash +EXPORT_SYMBOL vmlinux 0xa71b3b6c key_payload_reserve +EXPORT_SYMBOL vmlinux 0xa72aea09 devm_clk_put +EXPORT_SYMBOL vmlinux 0xa7321545 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa733e688 vfs_readf +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7389e2b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xa7523f5a key_put +EXPORT_SYMBOL vmlinux 0xa7579b8f snd_card_file_add +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7843e91 give_up_console +EXPORT_SYMBOL vmlinux 0xa7b8a8a1 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0xa7fd0fe0 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xa816510d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82ae271 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xa82c805a dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84af4f9 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xa8569814 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xa86a0ea9 free_page_put_link +EXPORT_SYMBOL vmlinux 0xa86d34d7 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa88097fe sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8b8ddac blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa908b3da xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91ad65c mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xa9257a07 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xa94349c8 brioctl_set +EXPORT_SYMBOL vmlinux 0xa94a135d neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa95caf10 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa9679a38 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xa9708725 dev_addr_add +EXPORT_SYMBOL vmlinux 0xa973dd0b km_policy_expired +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9b81390 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xaa1294a7 proc_create_data +EXPORT_SYMBOL vmlinux 0xaa133581 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xaa36b58e blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xaa571b43 dev_close +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa802e07 complete_request_key +EXPORT_SYMBOL vmlinux 0xaa861d19 unlock_rename +EXPORT_SYMBOL vmlinux 0xaa9afa32 genphy_update_link +EXPORT_SYMBOL vmlinux 0xaa9b2c3a scsi_register +EXPORT_SYMBOL vmlinux 0xaaa8f284 dev_get_stats +EXPORT_SYMBOL vmlinux 0xaab5f7ca devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae2e8d1 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0xaaf133cd pskb_expand_head +EXPORT_SYMBOL vmlinux 0xaafb1cad snd_timer_new +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab01c6b4 ata_port_printk +EXPORT_SYMBOL vmlinux 0xab157fa5 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xab55df9a swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71d339 param_get_charp +EXPORT_SYMBOL vmlinux 0xab7603e7 imx_ssi_fiq_start +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8a803a vme_bus_type +EXPORT_SYMBOL vmlinux 0xab9c38dd kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xab9d5387 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabc5082f elevator_init +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac35a03b end_page_writeback +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac39b0bc proc_remove +EXPORT_SYMBOL vmlinux 0xac40e511 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xac48ac97 tegra_powergate_remove_clamping +EXPORT_SYMBOL vmlinux 0xac60451e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xac613ec9 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xac688e83 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xac9fc281 omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xaca8abf1 nonseekable_open +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacba9042 tegra_dfll_runtime_suspend +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccc4062 dquot_drop +EXPORT_SYMBOL vmlinux 0xacd216ec lock_fb_info +EXPORT_SYMBOL vmlinux 0xacd4efc1 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdc83d0 kill_block_super +EXPORT_SYMBOL vmlinux 0xacefccc9 netif_napi_del +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad006452 input_open_device +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13d3d5 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0xad4dc3d5 copy_to_iter +EXPORT_SYMBOL vmlinux 0xad5889ac dm_get_device +EXPORT_SYMBOL vmlinux 0xad60abd2 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xad68826a i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada60192 nobh_write_end +EXPORT_SYMBOL vmlinux 0xadacf701 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xadb4940e of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xaddc163d end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf8b06b dev_change_flags +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xadffa453 deactivate_super +EXPORT_SYMBOL vmlinux 0xae0162ce ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xae07ce0e cad_pid +EXPORT_SYMBOL vmlinux 0xae0e8936 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xae1b35b3 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xae2b1adc tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xae4130a6 read_dev_sector +EXPORT_SYMBOL vmlinux 0xae447064 __scm_destroy +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae870178 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xae937bb3 __bforget +EXPORT_SYMBOL vmlinux 0xae946528 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed74f8d __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf46dbd1 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf8ecd70 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xafa70c13 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xafe4c7ca d_rehash +EXPORT_SYMBOL vmlinux 0xb00fbec6 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb066e8e2 key_type_keyring +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb09b68d3 irq_to_desc +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0ab77bf uart_register_driver +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0c9f519 d_add_ci +EXPORT_SYMBOL vmlinux 0xb0cd19b1 ip6_xmit +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ee7a4e dev_open +EXPORT_SYMBOL vmlinux 0xb0f03ba3 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xb0f29264 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xb0fc7c0b tcp_prot +EXPORT_SYMBOL vmlinux 0xb0fd2e69 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xb100f7ab elv_register_queue +EXPORT_SYMBOL vmlinux 0xb1013fc2 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1239d22 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb138866e tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xb1456fe3 revalidate_disk +EXPORT_SYMBOL vmlinux 0xb1460ef5 of_phy_connect +EXPORT_SYMBOL vmlinux 0xb150b854 vfs_create +EXPORT_SYMBOL vmlinux 0xb15b1250 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b5c1c0 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xb1be49c7 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cd403a phy_disconnect +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1e6bcd4 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xb2018986 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xb221fe87 block_commit_write +EXPORT_SYMBOL vmlinux 0xb2246791 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xb2305083 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xb23639c4 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xb239e3e1 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xb23b0f89 from_kgid +EXPORT_SYMBOL vmlinux 0xb2552401 pci_iounmap +EXPORT_SYMBOL vmlinux 0xb263770d free_netdev +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26fd69c kernel_getpeername +EXPORT_SYMBOL vmlinux 0xb2b63c83 ll_rw_block +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2eec9e3 __sock_create +EXPORT_SYMBOL vmlinux 0xb2ef1cab mdiobus_free +EXPORT_SYMBOL vmlinux 0xb2f8f2f3 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xb2fe9471 pps_event +EXPORT_SYMBOL vmlinux 0xb3047cdd pci_dev_get +EXPORT_SYMBOL vmlinux 0xb3062c7a pci_claim_resource +EXPORT_SYMBOL vmlinux 0xb30b4a6b bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xb3161531 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xb31c451e skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xb32635cd of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb3296f93 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb33931bd tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb35c8ae7 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xb367c984 mxc_set_irq_fiq +EXPORT_SYMBOL vmlinux 0xb3725855 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xb374a8e7 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xb38972e1 param_get_uint +EXPORT_SYMBOL vmlinux 0xb3bf0caf ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e86902 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xb3ee39c6 blk_queue_split +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb428702e dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb439ccd9 generic_permission +EXPORT_SYMBOL vmlinux 0xb43a8107 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45d928c mem_map +EXPORT_SYMBOL vmlinux 0xb468d39c tcp_make_synack +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c6432b input_unregister_handler +EXPORT_SYMBOL vmlinux 0xb4dd0068 inet_put_port +EXPORT_SYMBOL vmlinux 0xb4e95ef5 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xb508b9b0 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb522de8f blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb5437c56 sk_capable +EXPORT_SYMBOL vmlinux 0xb55437a5 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57c76f9 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb59dc20d dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5aaa571 prepare_creds +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d4f724 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5e1a33d dst_release +EXPORT_SYMBOL vmlinux 0xb5e548be gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb5fa502b dup_iter +EXPORT_SYMBOL vmlinux 0xb5fc2b18 snd_card_new +EXPORT_SYMBOL vmlinux 0xb60c4490 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xb624b1bf generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb663e5b3 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xb675c645 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6980d2e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xb699c08a mount_nodev +EXPORT_SYMBOL vmlinux 0xb6a09cc5 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb6a51e45 dev_uc_add +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c763e7 snd_device_register +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb6ee8866 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xb6f78efb gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xb6fecfcf sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb7115621 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xb7485a53 tty_devnum +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74b2d54 drop_super +EXPORT_SYMBOL vmlinux 0xb756182e mdiobus_scan +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77c0a80 __check_sticky +EXPORT_SYMBOL vmlinux 0xb7823e2f dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0xb78fe20b of_match_node +EXPORT_SYMBOL vmlinux 0xb78fe2c6 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xb79b12ed of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c3999e dev_set_mtu +EXPORT_SYMBOL vmlinux 0xb7dd3315 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xb7e7bdae sk_net_capable +EXPORT_SYMBOL vmlinux 0xb7fb79ea udp_del_offload +EXPORT_SYMBOL vmlinux 0xb800e2d2 mount_pseudo +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb836218f devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xb83687b7 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xb84a46c9 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xb85ab853 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xb85de9af pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xb8605a22 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87c9ef5 nvm_end_io +EXPORT_SYMBOL vmlinux 0xb8843224 skb_seq_read +EXPORT_SYMBOL vmlinux 0xb89247b8 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xb893d9ec abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xb8abd6e5 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xb8be70a1 neigh_destroy +EXPORT_SYMBOL vmlinux 0xb8d76b33 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xb8dc224d dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f739c2 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xb8f9be05 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xb8fdfbaa rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xb91b9695 free_task +EXPORT_SYMBOL vmlinux 0xb92223c4 vme_dma_request +EXPORT_SYMBOL vmlinux 0xb94124b6 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xb9428931 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb94cd09f misc_deregister +EXPORT_SYMBOL vmlinux 0xb950fccd bmap +EXPORT_SYMBOL vmlinux 0xb951a777 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb9a5c39b nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9bcea47 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9e2dafc sock_create_kern +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ff0f2f vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xba0eb161 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xba1c1e0f tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba544096 default_llseek +EXPORT_SYMBOL vmlinux 0xba7d870a __mxc_cpu_type +EXPORT_SYMBOL vmlinux 0xba8ada7f ip6_route_output +EXPORT_SYMBOL vmlinux 0xba94350e devm_free_irq +EXPORT_SYMBOL vmlinux 0xba9a84eb dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbaebd5be freeze_super +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb031791 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xbb048788 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xbb04a86b snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb1406f2 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xbb161e50 do_splice_from +EXPORT_SYMBOL vmlinux 0xbb227158 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xbb238998 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4c9200 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb8dd5ac tegra_io_rail_power_on +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9bf4e2 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xbba4fc37 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xbbaf4494 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xbbc48dd7 __get_page_tail +EXPORT_SYMBOL vmlinux 0xbbc86e39 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xbbcca84e phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xbbd1383e netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xbbd501c2 inet_frag_find +EXPORT_SYMBOL vmlinux 0xbbf4b085 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc11cf20 icmp_send +EXPORT_SYMBOL vmlinux 0xbc28dd95 d_walk +EXPORT_SYMBOL vmlinux 0xbc2cda3b inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xbc46b820 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xbc610d6f scsi_register_driver +EXPORT_SYMBOL vmlinux 0xbc6329b0 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbc7c9813 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xbc86ba54 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xbc98c0f1 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xbca560f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xbcb56103 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc9f8a9 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xbcca2544 input_free_device +EXPORT_SYMBOL vmlinux 0xbcca25a7 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xbccd225d rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xbcdb129c netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xbceeefa7 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xbcf5692e key_validate +EXPORT_SYMBOL vmlinux 0xbd00c264 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xbd07edbe invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd17f4e8 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xbd19ad04 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xbd2a7a0a remove_proc_entry +EXPORT_SYMBOL vmlinux 0xbd57eb51 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xbd6fc2a2 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xbd7bfb28 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd984092 scsi_print_result +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdef911e i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xbdefd383 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xbe057854 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe19b3c5 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe216436 netif_device_attach +EXPORT_SYMBOL vmlinux 0xbe404ed6 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xbe48782e blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xbe48dc54 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0xbe5ed155 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe6a345c nvm_register +EXPORT_SYMBOL vmlinux 0xbe6bbc94 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xbe7f29fe register_sound_dsp +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbeb76f4f vme_slave_request +EXPORT_SYMBOL vmlinux 0xbec3f45f key_task_permission +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf000f82 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xbf349931 ata_link_printk +EXPORT_SYMBOL vmlinux 0xbf412ac8 ether_setup +EXPORT_SYMBOL vmlinux 0xbf44829a ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xbf75ea6c tegra114_clock_tune_cpu_trimmers_low +EXPORT_SYMBOL vmlinux 0xbf762320 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9815a7 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa582a2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xbfb37ba4 padata_do_serial +EXPORT_SYMBOL vmlinux 0xbfb566cb blk_finish_request +EXPORT_SYMBOL vmlinux 0xbfbcde2c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfd924d1 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff7f83f of_node_put +EXPORT_SYMBOL vmlinux 0xc002ff37 I_BDEV +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc014baf9 input_register_handle +EXPORT_SYMBOL vmlinux 0xc02ded4e i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xc0490eca simple_setattr +EXPORT_SYMBOL vmlinux 0xc04c78fd __ps2_command +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc067a74a dquot_acquire +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07d2764 __block_write_begin +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc096a583 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc098d82c secpath_dup +EXPORT_SYMBOL vmlinux 0xc0a6a238 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d8037e mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc10424bf mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xc1102f7f search_binary_handler +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc167dda9 md_update_sb +EXPORT_SYMBOL vmlinux 0xc16b084d create_empty_buffers +EXPORT_SYMBOL vmlinux 0xc1a868e9 acl_by_type +EXPORT_SYMBOL vmlinux 0xc1ad816f mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xc1b8383b balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xc1baffe6 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc1cb19a3 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xc1d818fe add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc21afaa2 simple_rmdir +EXPORT_SYMBOL vmlinux 0xc22edb40 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xc26af189 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xc28a74fd open_exec +EXPORT_SYMBOL vmlinux 0xc296b8ed jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xc29d9a70 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b389b1 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xc2b3ef64 vme_bus_num +EXPORT_SYMBOL vmlinux 0xc2d58fa4 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e5d61b rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xc2f191df nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xc2f42546 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xc2ffe451 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc303b322 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc3068e10 sock_release +EXPORT_SYMBOL vmlinux 0xc3124033 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xc31753c3 tegra_powergate_power_off +EXPORT_SYMBOL vmlinux 0xc32ca36e backlight_force_update +EXPORT_SYMBOL vmlinux 0xc33128ad qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xc333b2e1 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xc33afb16 ip_options_compile +EXPORT_SYMBOL vmlinux 0xc353b8d8 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc3ba0d80 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cea2fa nvm_erase_blk +EXPORT_SYMBOL vmlinux 0xc3ff4592 sock_no_getname +EXPORT_SYMBOL vmlinux 0xc4108979 seq_pad +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc47cdb34 block_write_end +EXPORT_SYMBOL vmlinux 0xc497de51 key_revoke +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49e0fec snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xc4a54922 proc_set_size +EXPORT_SYMBOL vmlinux 0xc4c99604 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xc4cbf29f dquot_file_open +EXPORT_SYMBOL vmlinux 0xc4deba0b proc_set_user +EXPORT_SYMBOL vmlinux 0xc4fd4b9a audit_log_task_info +EXPORT_SYMBOL vmlinux 0xc5278066 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc54c1273 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc566c446 dput +EXPORT_SYMBOL vmlinux 0xc5683aad skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc58e0879 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5af259a bio_init +EXPORT_SYMBOL vmlinux 0xc5d5a18a vme_lm_request +EXPORT_SYMBOL vmlinux 0xc5dde707 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xc5e92751 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc604b644 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63659e0 mutex_lock +EXPORT_SYMBOL vmlinux 0xc65537d0 memremap +EXPORT_SYMBOL vmlinux 0xc6626873 unregister_netdev +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc6719a45 kill_pid +EXPORT_SYMBOL vmlinux 0xc67be094 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xc69c4b1f dm_register_target +EXPORT_SYMBOL vmlinux 0xc69d2e49 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xc69df5b3 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6e0df01 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xc6eaa965 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xc6f66af0 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xc705b5b7 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xc71268b5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc726c665 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xc72b91a1 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0xc7440cce eth_header_cache +EXPORT_SYMBOL vmlinux 0xc744b135 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc761bffc mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xc774e457 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7894757 __frontswap_store +EXPORT_SYMBOL vmlinux 0xc78da21b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a06332 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7ad9082 dget_parent +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7bd7765 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xc7c95efa of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xc7d0f9b3 ps2_command +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8015f27 devm_iounmap +EXPORT_SYMBOL vmlinux 0xc806a142 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xc80cd060 map_destroy +EXPORT_SYMBOL vmlinux 0xc816110c mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8489b22 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87452b7 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xc878f3ca submit_bh +EXPORT_SYMBOL vmlinux 0xc88b140e snd_timer_stop +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a3ab88 kmap_high +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ccef42 udp_poll +EXPORT_SYMBOL vmlinux 0xc8d04c2f security_inode_permission +EXPORT_SYMBOL vmlinux 0xc8d403a1 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc90781a9 tc_classify +EXPORT_SYMBOL vmlinux 0xc9082221 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc914554a tty_check_change +EXPORT_SYMBOL vmlinux 0xc9165942 vfs_setpos +EXPORT_SYMBOL vmlinux 0xc91b9f66 arp_send +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96b8ea2 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xc97b6b6a scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xc9925b62 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9f18345 blk_complete_request +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca134ab6 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xca13fb35 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca5497d7 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xca76e29d pci_set_power_state +EXPORT_SYMBOL vmlinux 0xca79ac89 pipe_unlock +EXPORT_SYMBOL vmlinux 0xca881ba4 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9faae8 md_check_recovery +EXPORT_SYMBOL vmlinux 0xcaba191d d_drop +EXPORT_SYMBOL vmlinux 0xcacfc031 security_path_rename +EXPORT_SYMBOL vmlinux 0xcad8aa18 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb044cb4 vfs_write +EXPORT_SYMBOL vmlinux 0xcb2a13a9 dump_skip +EXPORT_SYMBOL vmlinux 0xcb35be1e dss_mgr_set_timings +EXPORT_SYMBOL vmlinux 0xcb464787 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb4c9d40 tty_kref_put +EXPORT_SYMBOL vmlinux 0xcb548842 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xcb5edaa6 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xcb8499e6 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xcb924320 touch_atime +EXPORT_SYMBOL vmlinux 0xcbb0484b set_nlink +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe0f793 netpoll_setup +EXPORT_SYMBOL vmlinux 0xcbea0375 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbec15be fddi_type_trans +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcc076c2d dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xcc1a86d5 dss_mgr_connect +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc297587 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xcc33158c bdget +EXPORT_SYMBOL vmlinux 0xcc41ecdc padata_start +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5747ad mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xcc5d70bf iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xcc8be541 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0xcc925e26 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xcc98ff82 i2c_use_client +EXPORT_SYMBOL vmlinux 0xcc9edaa3 blk_init_queue +EXPORT_SYMBOL vmlinux 0xcca49913 tty_port_put +EXPORT_SYMBOL vmlinux 0xccb68c02 __module_get +EXPORT_SYMBOL vmlinux 0xccba00ac dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd2d597 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xcce1a64f scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd1f85c2 mount_ns +EXPORT_SYMBOL vmlinux 0xcd25d2e1 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd366557 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xcd47d8f7 __blk_end_request +EXPORT_SYMBOL vmlinux 0xcd5748f9 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xcd5dda62 phy_find_first +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd65c35d napi_get_frags +EXPORT_SYMBOL vmlinux 0xcd6e1ddb of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xcda5408c nand_bch_init +EXPORT_SYMBOL vmlinux 0xcdb1bc20 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xcdb8761e blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xcdc29d27 input_allocate_device +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xce25cc2c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2ec515 blk_rq_init +EXPORT_SYMBOL vmlinux 0xce30f482 gen_pool_free +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce580ccd dev_mc_del +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5ad814 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xce6882ba blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xce6da4d3 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcedd05d1 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xceeb0985 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xceee23a3 scsi_execute +EXPORT_SYMBOL vmlinux 0xceee588a cfb_copyarea +EXPORT_SYMBOL vmlinux 0xcef01acc vme_master_request +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf15e04e skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xcf30c48f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xcf708ac2 snd_pcm_new +EXPORT_SYMBOL vmlinux 0xcf7eaae6 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcfa1e4ff posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xcfa2d7fa dev_change_carrier +EXPORT_SYMBOL vmlinux 0xcfbb9ba4 __elv_add_request +EXPORT_SYMBOL vmlinux 0xcfce83f4 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0xcfd7b63e find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xcfed9560 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcff8b57a nobh_write_begin +EXPORT_SYMBOL vmlinux 0xd00f9b81 free_buffer_head +EXPORT_SYMBOL vmlinux 0xd025b4b7 xfrm_input +EXPORT_SYMBOL vmlinux 0xd032e385 snd_timer_notify +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd043cbc9 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xd04a0c07 blk_start_request +EXPORT_SYMBOL vmlinux 0xd04e2d6b padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xd0500228 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xd0544741 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd05635d4 mntput +EXPORT_SYMBOL vmlinux 0xd05b7e31 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0826f42 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a48457 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bdb867 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xd0c29d90 dquot_operations +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f1d93e consume_skb +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL vmlinux 0xd111ccad pci_iomap_range +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd13b28cb ping_prot +EXPORT_SYMBOL vmlinux 0xd14279fe devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xd15d22aa udplite_prot +EXPORT_SYMBOL vmlinux 0xd15d2332 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19cec2c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xd19e0a4c __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xd1b5b135 finish_open +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1c00657 get_tz_trend +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd1e96e6e unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xd1ef7f75 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xd1f53bb3 genphy_read_status +EXPORT_SYMBOL vmlinux 0xd1ff40c1 noop_fsync +EXPORT_SYMBOL vmlinux 0xd21eaf51 fsync_bdev +EXPORT_SYMBOL vmlinux 0xd23066e2 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd252f5cf eth_mac_addr +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd260b4a3 elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0xd26dc318 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xd26f87ef down_read +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd290c797 snd_unregister_device +EXPORT_SYMBOL vmlinux 0xd2a3e677 seq_write +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2aa0cf8 mntget +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2c1fcbd dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e26cbd mmc_add_host +EXPORT_SYMBOL vmlinux 0xd2e292be kunmap +EXPORT_SYMBOL vmlinux 0xd2f6dda1 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xd2fa7a5d of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xd3030df2 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xd3193dbc dev_set_group +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd31f7d02 vfs_link +EXPORT_SYMBOL vmlinux 0xd32456d3 nf_register_hook +EXPORT_SYMBOL vmlinux 0xd331b89a pci_get_subsys +EXPORT_SYMBOL vmlinux 0xd33bcaab user_revoke +EXPORT_SYMBOL vmlinux 0xd34374ef pwmss_submodule_state_change +EXPORT_SYMBOL vmlinux 0xd3656647 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xd36c40c0 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xd373da5f scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xd3768fc7 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd3785e3e simple_transaction_get +EXPORT_SYMBOL vmlinux 0xd39f7f8f flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0xd3a76a4c xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd3aa4c24 md_error +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3ea3893 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xd3fe9f0b blk_register_region +EXPORT_SYMBOL vmlinux 0xd402c128 igrab +EXPORT_SYMBOL vmlinux 0xd40e4d9b xattr_full_name +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd41f2b5c fb_get_mode +EXPORT_SYMBOL vmlinux 0xd44238aa scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xd44e21e8 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xd4554d8e fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd46929af __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd477b7fb dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xd4b786d5 pci_match_id +EXPORT_SYMBOL vmlinux 0xd4b7a54f cdev_alloc +EXPORT_SYMBOL vmlinux 0xd4c64ac1 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xd4f1cb12 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xd50cfeb9 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xd534555b swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xd54c5663 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd56eb247 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xd57203d1 tty_mutex +EXPORT_SYMBOL vmlinux 0xd58f4443 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5b22039 fs_bio_set +EXPORT_SYMBOL vmlinux 0xd5b60b98 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd5be6dc5 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xd5c03e9f blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xd5d64155 scsi_unregister +EXPORT_SYMBOL vmlinux 0xd5dbc7f6 get_phy_device +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd60641ab omapdss_register_output +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd618d5c6 replace_mount_options +EXPORT_SYMBOL vmlinux 0xd618daa2 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63d5554 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xd645fb54 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65cf98a shdma_chan_filter +EXPORT_SYMBOL vmlinux 0xd6627e07 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xd670d6b2 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6907cb9 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xd6959721 inode_permission +EXPORT_SYMBOL vmlinux 0xd697b787 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xd6b68c47 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xd6bdde58 __lock_buffer +EXPORT_SYMBOL vmlinux 0xd6cc4cdb bdi_register +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6ef43fe input_inject_event +EXPORT_SYMBOL vmlinux 0xd6fb83a4 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xd714a22d bdi_register_dev +EXPORT_SYMBOL vmlinux 0xd737b8b0 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd748e70d generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xd75a441f page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd7618bc5 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xd762d309 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd7855840 softnet_data +EXPORT_SYMBOL vmlinux 0xd790f74d of_get_mac_address +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7993b3a blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xd7a57fed d_path +EXPORT_SYMBOL vmlinux 0xd7b4e982 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xd7b8284d security_path_chmod +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd80cf8cd pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd84b643a netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd87450c8 input_event +EXPORT_SYMBOL vmlinux 0xd88159d0 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xd8940b66 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xd8988e79 netdev_warn +EXPORT_SYMBOL vmlinux 0xd8989d39 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xd89e7ee7 mmc_start_req +EXPORT_SYMBOL vmlinux 0xd8a8e20d skb_vlan_push +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b43b03 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8fda2a8 qdisc_reset +EXPORT_SYMBOL vmlinux 0xd8fe5df8 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xd91107f0 iterate_mounts +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96d7cee pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd9731bef shdma_reset +EXPORT_SYMBOL vmlinux 0xd97cce70 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99eb8e0 ppp_input_error +EXPORT_SYMBOL vmlinux 0xd99ecb7d xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xd9a81ade tty_unthrottle +EXPORT_SYMBOL vmlinux 0xd9b2b8f3 napi_disable +EXPORT_SYMBOL vmlinux 0xd9c7080e set_disk_ro +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9ef5e25 snd_jack_report +EXPORT_SYMBOL vmlinux 0xd9fcbd98 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xda015b7c devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xda1cfe04 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xda2c0d9c of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xda2ef92b lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0xda3828e0 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda48aae1 ipv4_specific +EXPORT_SYMBOL vmlinux 0xda6d26f7 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdadaea0c mmc_get_card +EXPORT_SYMBOL vmlinux 0xdae4e40f iget_locked +EXPORT_SYMBOL vmlinux 0xdaec68b7 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xdaee366e xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xdaf6f323 vfs_rename +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb43053c __neigh_event_send +EXPORT_SYMBOL vmlinux 0xdb4cdb23 ilookup5 +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6c4880 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xdb6f664d ac97_bus_type +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7dbd01 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xdb8f7a09 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdb9cc4ae md_reload_sb +EXPORT_SYMBOL vmlinux 0xdba6bc36 seq_printf +EXPORT_SYMBOL vmlinux 0xdbb3566f neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xdbb3b2f8 touch_buffer +EXPORT_SYMBOL vmlinux 0xdbb884a6 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xdbcd09ef inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xdbe74816 elv_rb_add +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0f4cb5 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xdc143014 inet_ioctl +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1e8148 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xdc36163d __register_binfmt +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc586c0f tty_hangup +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdc5e4128 generic_writepages +EXPORT_SYMBOL vmlinux 0xdc8a40d9 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc990582 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcbdb017 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xdcf00d2e blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1b9713 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd479c92 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xddbce685 passthru_features_check +EXPORT_SYMBOL vmlinux 0xddbd8980 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xdde021f1 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xde1fca2e ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xde241b2c snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xde24fc73 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xde356f89 write_inode_now +EXPORT_SYMBOL vmlinux 0xde40eb89 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xde4fdd31 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xde512503 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xde6c3f14 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xde6e9457 pci_disable_device +EXPORT_SYMBOL vmlinux 0xde83a24b add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xde912cfa xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdeab95e6 request_key_async +EXPORT_SYMBOL vmlinux 0xdead0d74 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0xdeba35ea inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xdec030e5 arm_clear_user +EXPORT_SYMBOL vmlinux 0xdec7e2ce register_gifconf +EXPORT_SYMBOL vmlinux 0xdecd987c kmalloc_caches +EXPORT_SYMBOL vmlinux 0xdeeb8cbf bdev_read_only +EXPORT_SYMBOL vmlinux 0xdef4b0e5 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf32a525 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3bd4b2 console_start +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf789081 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xdf7dd4a1 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xdf876949 skb_unlink +EXPORT_SYMBOL vmlinux 0xdf905d1b netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf994101 component_match_add +EXPORT_SYMBOL vmlinux 0xdfa28422 init_net +EXPORT_SYMBOL vmlinux 0xdfaa24c7 snd_register_device +EXPORT_SYMBOL vmlinux 0xdfb8a5c2 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xdfc067ea filemap_flush +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd33727 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfe523a1 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe00e5644 simple_link +EXPORT_SYMBOL vmlinux 0xe017d226 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xe0210099 elv_rb_del +EXPORT_SYMBOL vmlinux 0xe037b53e skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xe0422377 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05302ac d_lookup +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe089478f omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe08fc107 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xe090bd25 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe0a17073 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xe0a65b45 dev_activate +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0be42ed blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c6c760 tcp_req_err +EXPORT_SYMBOL vmlinux 0xe0d34926 pci_bus_get +EXPORT_SYMBOL vmlinux 0xe0d6d7af unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0xe0d982bf __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe0de1406 of_node_get +EXPORT_SYMBOL vmlinux 0xe0e72885 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xe0fb36b0 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xe109ce5a fb_find_mode +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1229863 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe137565e xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xe15d7973 mmc_erase +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17c069a no_llseek +EXPORT_SYMBOL vmlinux 0xe1861a52 dev_trans_start +EXPORT_SYMBOL vmlinux 0xe1aa4e6e km_state_expired +EXPORT_SYMBOL vmlinux 0xe1aabcc0 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xe1afb06c tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20f9250 udp_prot +EXPORT_SYMBOL vmlinux 0xe21265ac cdev_del +EXPORT_SYMBOL vmlinux 0xe21e1587 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe221b676 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xe2224a0d scsi_host_get +EXPORT_SYMBOL vmlinux 0xe223eebd d_make_root +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24754a2 dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25a9dda jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xe296f495 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b75fbc lock_rename +EXPORT_SYMBOL vmlinux 0xe2cc96f7 __do_once_done +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dec618 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f56518 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xe2faca12 padata_stop +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3155741 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xe3359ba6 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xe3426da4 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xe34f3200 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xe362f65a register_sound_mixer +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe38c3d5d snd_timer_open +EXPORT_SYMBOL vmlinux 0xe393f18f bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3c7b159 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xe3cdc9e9 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f4f25a alloc_fddidev +EXPORT_SYMBOL vmlinux 0xe40faf37 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe41bad4c __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xe42d4097 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe455acba tty_port_open +EXPORT_SYMBOL vmlinux 0xe46f5cdf __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xe49b97a0 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xe4b150bc pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xe4bb222c mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4e0bb04 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xe50da684 scmd_printk +EXPORT_SYMBOL vmlinux 0xe5216ce6 vc_cons +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52be004 file_remove_privs +EXPORT_SYMBOL vmlinux 0xe52be187 force_sig +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe56aef79 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57c7240 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5857bf4 __kernel_write +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58b706c jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xe58e839d rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe592667a inc_nlink +EXPORT_SYMBOL vmlinux 0xe5afc793 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xe5bd73ef mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xe5c37156 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cedc89 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xe5cf86f1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe5d6d9b4 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xe5dd3fa0 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xe5e308bd xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe5ed31dc inet_register_protosw +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe613eb52 inode_init_always +EXPORT_SYMBOL vmlinux 0xe65b6249 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe678126c blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69bd994 seq_open_private +EXPORT_SYMBOL vmlinux 0xe6ba83e0 dquot_destroy +EXPORT_SYMBOL vmlinux 0xe6d5f9e2 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xe6db439c nobh_writepage +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe73fedc4 serio_close +EXPORT_SYMBOL vmlinux 0xe745102c bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xe76b29e7 abort_creds +EXPORT_SYMBOL vmlinux 0xe78d69cf devm_release_resource +EXPORT_SYMBOL vmlinux 0xe793c8e0 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7cb7ec4 file_open_root +EXPORT_SYMBOL vmlinux 0xe7d21a15 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe802d15b inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe80af443 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xe80ca1cf set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe836e68f simple_map_init +EXPORT_SYMBOL vmlinux 0xe8406df1 of_dev_put +EXPORT_SYMBOL vmlinux 0xe8452357 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xe84b9128 tcf_register_action +EXPORT_SYMBOL vmlinux 0xe8627693 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xe870829a user_path_create +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8818128 vga_put +EXPORT_SYMBOL vmlinux 0xe88cbda0 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8ab1f83 framebuffer_release +EXPORT_SYMBOL vmlinux 0xe8b9a3d4 mx51_revision +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cfce09 tegra114_clock_deassert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0xe8d110f9 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xe8d991ce snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xe8da6fcd __free_pages +EXPORT_SYMBOL vmlinux 0xe8e3ffff __breadahead +EXPORT_SYMBOL vmlinux 0xe9009383 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9258b8d snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xe92ed826 revert_creds +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe961e234 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xe96dbc2f submit_bio +EXPORT_SYMBOL vmlinux 0xe98e63ce netif_rx +EXPORT_SYMBOL vmlinux 0xe990f513 dma_find_channel +EXPORT_SYMBOL vmlinux 0xe99ec9b3 registered_fb +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9ccfcd3 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe9d7aa4c __get_user_pages +EXPORT_SYMBOL vmlinux 0xe9e90582 dev_crit +EXPORT_SYMBOL vmlinux 0xe9e907a2 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea1ae8c7 tty_throttle +EXPORT_SYMBOL vmlinux 0xea1b1f08 d_alloc_name +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea394664 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xea3d627f inet_add_offload +EXPORT_SYMBOL vmlinux 0xea3ee19b devm_clk_get +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea93505a nf_log_packet +EXPORT_SYMBOL vmlinux 0xeaab54bd vfs_getattr +EXPORT_SYMBOL vmlinux 0xeabf4f77 __sb_end_write +EXPORT_SYMBOL vmlinux 0xead80fd5 loop_backing_file +EXPORT_SYMBOL vmlinux 0xeae91f26 sk_filter +EXPORT_SYMBOL vmlinux 0xeae9a576 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xeaeadd4f simple_readpage +EXPORT_SYMBOL vmlinux 0xeafaae85 thaw_bdev +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb263998 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb85b0e5 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xeb86143a snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0xeb89dd0d phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xeb8add47 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xeba8fbaf __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xebcbcd0d seq_release +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebed86af sock_no_mmap +EXPORT_SYMBOL vmlinux 0xebf86dbf generic_file_mmap +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec0e4bb4 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec2058b2 dquot_resume +EXPORT_SYMBOL vmlinux 0xec433d40 flush_signals +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xecb0ffba skb_insert +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecd865e5 setattr_copy +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf70bbd padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xecfb7d3f skb_store_bits +EXPORT_SYMBOL vmlinux 0xed136aaf __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6b94de d_obtain_alias +EXPORT_SYMBOL vmlinux 0xed891129 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9cad2e __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedaba84d do_truncate +EXPORT_SYMBOL vmlinux 0xedb0f135 kern_unmount +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc4f837 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedceeae1 inet6_offloads +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede6bb16 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xedefc895 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xedf79a98 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xee0f84b8 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2c8f3f of_phy_attach +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee98a52b inode_change_ok +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed1c0fb udp_add_offload +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeee7d61c netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xeeefa0fb jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xeeefd204 set_wb_congested +EXPORT_SYMBOL vmlinux 0xeef0843f phy_drivers_register +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeeff77a6 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xef0f3eb3 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef46675b get_unmapped_area +EXPORT_SYMBOL vmlinux 0xef485c2c swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xef4c94fa genphy_config_init +EXPORT_SYMBOL vmlinux 0xef55e540 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xef5f1d76 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xef8f3947 blk_peek_request +EXPORT_SYMBOL vmlinux 0xefbd136b thaw_super +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeffee903 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf058a6d5 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xf05adf62 poll_freewait +EXPORT_SYMBOL vmlinux 0xf05ff953 __f_setown +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf061b2e3 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xf065d14f phy_attach +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf08aee50 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09ab550 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0bb92ba nvm_register_mgr +EXPORT_SYMBOL vmlinux 0xf0d04c89 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xf0d0789b tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xf0d37f23 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xf0d8797a get_thermal_instance +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ee7383 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0ef7b47 of_match_device +EXPORT_SYMBOL vmlinux 0xf0fe79d0 seq_path +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10850f2 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xf1128072 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xf1181949 sk_dst_check +EXPORT_SYMBOL vmlinux 0xf12076aa generic_block_bmap +EXPORT_SYMBOL vmlinux 0xf128a1e2 kill_pgrp +EXPORT_SYMBOL vmlinux 0xf13bb9df fb_class +EXPORT_SYMBOL vmlinux 0xf13f53f1 ptp_find_pin +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf16377f2 find_vma +EXPORT_SYMBOL vmlinux 0xf18185c9 serio_bus +EXPORT_SYMBOL vmlinux 0xf183ca75 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1a7dfdd i2c_transfer +EXPORT_SYMBOL vmlinux 0xf1cae22c mpage_writepage +EXPORT_SYMBOL vmlinux 0xf1cb5df8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dddfbd ptp_clock_index +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf20feec4 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf21518a3 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xf2174e33 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24259b0 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0xf258856c of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf264086a blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xf2661043 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c47128 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf2d1f420 dqput +EXPORT_SYMBOL vmlinux 0xf304f783 register_key_type +EXPORT_SYMBOL vmlinux 0xf30bf2a2 make_bad_inode +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32f67ba scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xf3368ba6 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0xf33c194b max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf350e14f blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3543a29 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xf37a2c60 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xf37e8bca make_kuid +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390eda5 iov_iter_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396ae56 blk_init_tags +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3bf2d1e tegra_fuse_readl +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f60b8d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xf3fbd4ab blkdev_put +EXPORT_SYMBOL vmlinux 0xf40019c0 tegra114_clock_tune_cpu_trimmers_init +EXPORT_SYMBOL vmlinux 0xf400204a omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf43a20ef blk_free_tags +EXPORT_SYMBOL vmlinux 0xf447cb92 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xf44d8b25 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xf45777ac phy_print_status +EXPORT_SYMBOL vmlinux 0xf4711a9d init_task +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4a6d1bc sock_from_file +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c1c871 devm_memunmap +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf4fe5059 sock_i_uid +EXPORT_SYMBOL vmlinux 0xf51fbf7a __dquot_free_space +EXPORT_SYMBOL vmlinux 0xf52565f3 locks_init_lock +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf546c8e5 bdi_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf54d19fe mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xf5513775 dma_pool_create +EXPORT_SYMBOL vmlinux 0xf5580cea get_super +EXPORT_SYMBOL vmlinux 0xf562c69f md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf57046b1 __getblk_slow +EXPORT_SYMBOL vmlinux 0xf5796b0d swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xf58fb4b3 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0xf5be647c bdput +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d8793e icmpv6_send +EXPORT_SYMBOL vmlinux 0xf5e0b07f kill_bdev +EXPORT_SYMBOL vmlinux 0xf5e6d9c1 serio_open +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ece137 build_skb +EXPORT_SYMBOL vmlinux 0xf5fdc433 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xf61e506a kill_anon_super +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6525c68 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xf662be51 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf685c6b6 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xf687b2d6 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xf6b403bc edma_filter_fn +EXPORT_SYMBOL vmlinux 0xf6b73172 neigh_update +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e0e0ce gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fcc8c3 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xf70dd3a9 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xf70f7342 vm_map_ram +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf7234b18 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xf73f9325 rt6_lookup +EXPORT_SYMBOL vmlinux 0xf7489f40 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xf7522955 tso_start +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7633b48 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xf763945d simple_unlink +EXPORT_SYMBOL vmlinux 0xf7652203 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xf771d84c __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xf77bf837 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xf77cc0ba cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf79a2fa3 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xf79fd372 bio_reset +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7b05b16 dst_alloc +EXPORT_SYMBOL vmlinux 0xf7bb0a3c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xf7bb62a9 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7de27ed dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xf7eada01 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xf805a745 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xf80ffa4f generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8128bb2 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xf81b989d wake_up_process +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83c7b0c dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xf83e1c0a phy_suspend +EXPORT_SYMBOL vmlinux 0xf83e68e3 nf_log_register +EXPORT_SYMBOL vmlinux 0xf84d8b86 cont_write_begin +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf85c5409 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xf877ff7d dev_uc_del +EXPORT_SYMBOL vmlinux 0xf89917fb netdev_emerg +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf8a1579e empty_aops +EXPORT_SYMBOL vmlinux 0xf8d6dbda xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xf8d81d00 clear_inode +EXPORT_SYMBOL vmlinux 0xf8e49152 generic_setlease +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8fd04fa __invalidate_device +EXPORT_SYMBOL vmlinux 0xf9058615 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xf919facf finish_no_open +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf95f0073 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0xf97d3c71 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xf985a405 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf9977170 filp_open +EXPORT_SYMBOL vmlinux 0xf99dc167 netlink_ack +EXPORT_SYMBOL vmlinux 0xf9a00b60 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xf9a19e3c simple_follow_link +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ccc68c task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf9e31812 phy_device_create +EXPORT_SYMBOL vmlinux 0xf9e6a05e sk_common_release +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f2fa3a scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xfa0ee6f4 devm_ioremap +EXPORT_SYMBOL vmlinux 0xfa2f534d set_cached_acl +EXPORT_SYMBOL vmlinux 0xfa392078 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xfa3b049f blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xfa423077 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0xfa47888c __page_symlink +EXPORT_SYMBOL vmlinux 0xfa49bb1e mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa71771a tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xfa799fa8 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xfa85c077 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xfa9c098d simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xfab826ad tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadc22f8 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb177730 del_gendisk +EXPORT_SYMBOL vmlinux 0xfb1a26b4 d_delete +EXPORT_SYMBOL vmlinux 0xfb28b84f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xfb2f99d6 unlock_buffer +EXPORT_SYMBOL vmlinux 0xfb34fd04 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xfb353134 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xfb410727 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0xfb55c4e7 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6fdda8 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9e92c8 irq_set_chip +EXPORT_SYMBOL vmlinux 0xfba0999b inet6_release +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcc0ec5 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xfbcc8946 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xfbe2e7ca scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xfbeb8a71 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc086d5f swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xfc3908f5 fence_default_wait +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfcbb5a38 generic_listxattr +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd9e5d2 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd10e948 mmc_release_host +EXPORT_SYMBOL vmlinux 0xfd18db65 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xfd283c81 bdgrab +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd63f4c2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xfd8c5afc release_fiq +EXPORT_SYMBOL vmlinux 0xfd8e052d proc_symlink +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdcda279 pps_register_source +EXPORT_SYMBOL vmlinux 0xfdcf5911 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xfdea67c8 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xfdf2a6c4 skb_clone +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe04dd31 snd_jack_new +EXPORT_SYMBOL vmlinux 0xfe28114b jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xfe2cb994 iget_failed +EXPORT_SYMBOL vmlinux 0xfe30116a nand_correct_data +EXPORT_SYMBOL vmlinux 0xfe34777f snd_cards +EXPORT_SYMBOL vmlinux 0xfe3ab1d8 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe582353 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe657f0e devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xfe673943 prepare_binprm +EXPORT_SYMBOL vmlinux 0xfe682629 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xfe6f730a __bread_gfp +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe98f0e8 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xfea8f732 page_put_link +EXPORT_SYMBOL vmlinux 0xfec27bef skb_push +EXPORT_SYMBOL vmlinux 0xfec8c668 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfecd61dd blk_get_queue +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfefa7f33 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xfeff6bfb dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff40e409 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff67c2c1 put_disk +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb5fdab sk_stream_error +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffb9e483 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xffcd0475 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xffd0e2a6 phy_connect +EXPORT_SYMBOL vmlinux 0xffd12ae8 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe8ebf3 scsi_print_command +EXPORT_SYMBOL vmlinux 0xfff7bc6a pci_clear_master +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x850f6d48 sha1_update_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xf3c1a08c sha1_finup_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7cd9483c ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x922eedd8 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xacc58a77 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbaaa876d ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xcd4845fb __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe4c0897c ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf3797bbe ablk_decrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x0e82056f af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x45597126 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x544917ba af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x92800010 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa0bb671c af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xba564a1a af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb4d952d af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xf43cbf91 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf87f3a35 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xe9723e74 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x6879f1fc async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc5c4c18c async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x14754abf async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x74d39c9a async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x27d1096d async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x32eeac66 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3891eb6a async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe39282a9 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3d9a5e73 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x407e0e38 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xb11914aa blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xcc423b7f cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1a5e6008 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x5dfae122 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xe9016e23 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x15bb4e7d cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x3cf2b19d cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x472a5657 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x57939b84 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6cd94c0b cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x83e052fa cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x925c0359 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa883aa9c cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa89e9606 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf1a98f89 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xe004b32f lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x01fbf470 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1add1bc4 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x499cfe37 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x74f7b0a7 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaaf243b5 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb4b332a9 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd96f9b1b mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf09b4a3e shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x288b89a9 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x51ede837 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xdc77f3a5 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xf2371200 crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x86d6f755 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6689dec6 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x4c8e6083 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xf1a83e09 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xe9eda38f sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x30e586fd __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x462c6089 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5a8ea150 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xfe453dac __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x03c6189c bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a84252d __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0b649877 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x17f8d387 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x18fb6efc bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1e43e3cd bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x213e151b bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2371be4e bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x32e6b9c6 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x37f5dbb9 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x441ee55e bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x49efbd3f bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5a51c70e bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6556aa87 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x71861cb7 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x75812f21 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x789ea07d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82ad4c9f bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2a8230c bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc9918674 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce161eb2 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe64e3405 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xed6a0630 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf655f9e8 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5f6098c0 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8baeac35 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x98636cd9 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa109f535 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcbcfcc66 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcffcbc6a btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0310422d btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x55d39500 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x621d0af2 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x698c567f btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x79f11f97 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x81d90462 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa4fa449a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xc1717eb8 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xc9eeea99 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xef6217c4 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfc3a76de btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x01e3a1ea btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x02799bab btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0aea863f btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1db56ba0 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4d9012de btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7323d63d btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x958bb207 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa3e1bb6a btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa4f64ebf btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xeceeb216 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf1373cd7 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x1b59f56d qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x57d693dd qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xb55bb8c6 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x2b71dc7e h4_recv_buf +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x09ee16fa clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x13764cce qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x17dca245 qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1ad28e9c clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1f4159b0 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3b0b58e5 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x40e67b03 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x53f95e39 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x612214bd clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x65b68634 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x67ae803a clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6baea882 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x709d9cf0 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x73964fc2 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x83181667 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8c4dbdbe clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8d53d96e clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x90b53166 clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x999e1e71 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x99d2c773 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e2e91a1 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa5024189 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaace56b1 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc7994798 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcb0c5248 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcd0a83c6 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd25fd154 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe703bcad clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf1f136dc clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf69c2f55 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf93e315f clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x8a570100 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xfcf3740e bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x16de053a dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x43d059c9 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8ffd1a78 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc1c8477c dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc9575f10 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc747d4d1 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xca9d1b75 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xf4cc8c00 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x13ee21af edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1612a911 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x174e5b42 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1a261682 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x201c09d2 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x264dcc16 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2aa21ce2 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2b70bcba edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3788c635 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x39c77a16 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c0acc5f edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4db1f096 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x535001a4 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6adf5114 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6aea1c1e edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x80955a51 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x91b3b2a5 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9a64bcac edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa5a8cd57 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb0f7425c edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xccd66209 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd3e1d891 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe73a1408 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0xe342fbf5 get_scpi_ops +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0ef48339 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1add7871 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2dda8266 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9e7aeecf of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa5b35676 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb08157f5 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x4bb45165 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xf9ca2be4 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xd41af28f dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xeee6b265 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0509301b drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x198fff8b drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2307fa51 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x28f73a19 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2ab4d6ea drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2b1fcc05 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4e157c41 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6ca8f57b drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x71e72bc0 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7e825d38 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x826f511e drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9dbe1453 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9ebb1794 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb543bc41 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbe515c46 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc5654430 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd57d5bf2 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdb6c85a6 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xef918f47 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x017f4523 drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x55f5caf8 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x775cd10b drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x8e5c7400 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb2c912af drm_fbdev_cma_hotplug_event +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x0855f885 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x1cfe024a imx_drm_crtc_vblank_get +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x37707c0a imx_drm_crtc_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x419b08de imx_drm_handle_vblank +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x51894c1b imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x51cc0b5b imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x8b15585a imx_drm_encoder_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x93beb88f imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xe4812df6 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xf4a4d319 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x43637f8b ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe4aeb585 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe5f3a208 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x01794b2f ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x04f7075a ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0bcac529 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0c24ea08 ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0e42bd95 ipu_csi_set_dest +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x118160e1 ipu_ic_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x11d8f100 ipu_stride_to_bytes +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x13952dfe ipu_dmfc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x159db02e ipu_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x199bd5c8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1ba497eb ipu_pixelformat_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1e913d9f ipu_csi_get_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x23654f4d ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x25d84e59 ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x29ee5895 ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f92d651 ipu_ic_task_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f9751b4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x30b6999c ipu_rot_mode_to_degrees +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x31348b1c ipu_dc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x315169d2 ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3166aec7 ipu_dmfc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3ae4994d ipu_cpmem_set_yuv_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3afbb44e ipu_smfc_set_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3e86ea72 ipu_di_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x41a5fbff ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x44c5494f ipu_dc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4ceb926f ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x51475e87 ipu_dmfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x527f3b94 ipu_smfc_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x527f6a6b ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x53de277c ipu_di_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5fa8e8a6 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60bdf2ec ipu_csi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60e3d496 ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x616f24a7 ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x623722e2 ipu_ic_task_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x69fc9b6c ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6aa2637d ipu_srm_dp_sync_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6eca9bcd ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x70ae328c ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7121bd07 ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7156a3a0 ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7270d3b3 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x751d345a ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76302d14 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76a62725 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76a6df03 ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x771211f6 ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x85a030b8 ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x886c35aa ipu_smfc_map_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x88724aba ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x904411cf ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x91f552ed ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x99a0ef07 ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9c335d85 ipu_pixelformat_is_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f38e177 ipu_dp_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa4b0cabd ipu_dc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa579616b ipu_di_adjust_videomode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa60b144b ipu_csi_set_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xad3bab3c ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xaf2f2750 ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xaf6af2a5 ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb228bf1e ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb453cc72 ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb615ec02 ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb94ca95a ipu_dmfc_init_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb9970d65 ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbbb1516d ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc01c0ed3 ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc059570d ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc062d678 ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc6675aa9 ipu_csi_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc677177d ipu_smfc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc848c5d7 ipu_dmfc_free_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc88d89a1 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xca5d8c86 ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd2e96f6 ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7c6998 ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd0470c80 ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd064a453 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd5055dd9 ipu_dmfc_alloc_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe26f9739 ipu_cpmem_zero +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe300a959 ipu_dp_setup_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe3b86336 ipu_csi_init_interface +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe55f4b1b ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe6243c52 ipu_dc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe82b46a6 ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xea8ea901 ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xece7323a ipu_dc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xed96ca56 ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf50155af ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf69d6cb6 ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf7d99d69 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf80fb9bd ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf9ed222e ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/hid/hid 0x045cbba7 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0837f946 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11d36dea __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27da086b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3499b29c hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x368eaa5e hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x38733769 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x49b8cd59 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a3ffb75 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a8f4205 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6630d10e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a94dfb0 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x70615181 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74a0f8a0 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x88f367f0 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97469d7d hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa409b496 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa5eb8748 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa617c52f hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab7c0d1a hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf8005aa hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc40e1cd3 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcdaf96e9 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcfd327a3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd809f3f7 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda759fc5 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdc213ce9 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe07eb208 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4c3818a hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe92aeb71 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed99af79 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xedc132c4 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef0aef68 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf4467986 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf56235c2 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfec5640b hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x6085c57b roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x36606d07 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8615b8b9 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa04f16a2 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd5a16e19 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd65279bf roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf3136c0c roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1b404ea4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x333eaea1 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3e9971bc sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5c42f1c3 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x643de6f3 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7039161b hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbcbaea0e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc29a32ff sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf22aa362 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x3b9d3521 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x1489cfdc ssip_slave_start_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x33910ee0 ssip_slave_stop_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x4608b9a8 ssip_reset_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x50fbdc50 ssip_slave_get_master +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x9fa5fd52 ssip_slave_running +EXPORT_SYMBOL_GPL drivers/hsi/controllers/omap_ssi 0x620f356f ssi_waketest +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x040fc6e0 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x16c630d8 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x19d0377e hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2f9bc1c3 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x450b668f hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4d9b273d hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5824d332 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5e661dd2 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6de67ec7 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7c78b124 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7ea3ef7f hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9ca715c3 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xde79664f hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe3ab6862 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe5cf948b hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf8eaf385 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf9539384 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfdf5a075 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0218457d adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4e8eae0a adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa831cce8 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0ca2cf3f pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0ddee86a pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x23867602 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x286863a8 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x401aeaef pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4d3fecc5 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x88264528 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9701b634 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa6216f9c pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe081b00d pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe285f266 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe65f59d9 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xeefa84f7 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf17cdbde pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfdd2ec24 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x166e62fd hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x3442e2ee of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x40219f2d hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x5cd8aa91 hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x953f9792 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xa57b948f hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xd4a1f4e0 __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xd4b95d7f __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xdda17155 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xe1b34b8f hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3323f935 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6b63729f intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6fefe7e2 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x88ddccf0 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xae6e4da2 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xe8e15d73 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf8cfb54f intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x038c8d42 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x169328aa stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x6997369f stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc3df0d7a stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc753f129 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3e914a73 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7d490093 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x92fca2c2 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc8c85bd6 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdd5f584f i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x857a21cd i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xba545719 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2c668852 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x6162c85e i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5deaa879 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x85e5e07e bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x8ec673c1 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3f5b647b ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x659737a7 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x97a67b89 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9b5afec5 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbf2ee6f8 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe387caff ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf2cfd06d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfd990dca ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfeec6169 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xa7f2d8c0 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb8f411fd iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x4c32a00e bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x5edd2885 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xb9b28fbe bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0b026eeb adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0e46afc6 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x16209ebc adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x60c29d2c adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6d50c8bf adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8654e36f adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9bbc2892 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa679f51d adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa98acacf adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb61bbaed adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbc00e878 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe924572 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x075265ca iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x114e6416 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1466fe4e devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x14b77649 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b55c7e9 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2edeeb95 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x44c4fab9 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4eeca5c9 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x58718104 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x59bddd42 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a08571f iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x70ca104c iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71bc3a43 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x77c2b262 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7c0034a5 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa115aabf iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xab8b567c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabd90cfb iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xace4073d iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaf71885c iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb25c021d iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb35b8acd iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4ecdd6c iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb565dd7e devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc5df74fd devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca5fa8f4 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd45a9f3b iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1cf9582 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8f46403 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf3609bf4 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff4bc3a9 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x8e5d42af input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x48ca7c34 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x769d5a58 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x0b03f052 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x87400696 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc2694978 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x85fcfc48 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x89ba3324 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xce4ae349 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x11f07952 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xaadd35f1 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x555d07de tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x56cb1c6a tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x9c31a49c tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xde508beb tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0470050a wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x100b6824 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3a250223 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x54f55476 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5e27345d wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8bbf6e76 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8f332999 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x928d34c3 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x94227d85 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb04b6115 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeba75f41 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf3dfe507 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x312b1e9b ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3446f367 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6334d59b ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x65f7979a ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x925b9747 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x987f11ef ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa31b2e39 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xadf204e5 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc61a315f ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x01ccd28e gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x17c2026d gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1f0256e9 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x267ce3bb gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x33cd8190 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x48c472de gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4d107da5 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a031d97 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8211f917 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8b6c41ec gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x94b1bc96 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9bff4704 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9dc10b73 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa895cb9a gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbaa53f13 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xea8cb044 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xec7a3823 gigaset_start +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x12a1853f led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x23b04799 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x64f976f5 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd773c845 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe8e49e23 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf2897dc7 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x00c35a3a lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x03df19a4 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4eff2896 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x5425a848 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa11ae944 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xaae609ad lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb0fa39bc lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd1675179 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe244e7cd lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe7629f5c lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfa34f423 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x05d0de6e mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x16ee7dd8 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x25eb2a6a mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3ac811cb mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4967d40a mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4f401274 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x537a4f14 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x56a6e81b mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5f9aba37 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb14c90fe __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc60fc72c mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcd890214 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf3c74761 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06628c2f __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06b11706 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x07e2c777 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0b1ed8cb __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1683a5f6 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x16c3fa29 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x16c8cc13 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x18d1988c __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2061620b __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x230dd380 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x29a4c5fd __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b277945 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3ee17aab __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x402d6200 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49c216ec __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d1e9f82 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7930d50e __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7d597e2d __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8461608d __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84e60671 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92d61794 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9415be3c __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xad2d4ca2 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb21fadc0 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb364194a __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbe406c76 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc72008a2 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd6d1aa5e __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc24ee1e __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcc8ed24 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffd8c38e __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0ce03ce4 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x145ad01d dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x184c5c4e dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x235e43d9 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x463825c4 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x46d54abe dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7ed8dcd6 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x804e88a0 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc742240b dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xce7eb255 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1711c8ca dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4c40dcf8 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9b04d8f3 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa73c76c5 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbde52f2e dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe25835de dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xef59d822 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x96c8db57 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xfa318561 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x10a59454 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x459c02b1 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4f1f7af0 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6c576739 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6caa3392 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xaf5a67bc dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f9401c9 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0e80496b saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1689554b saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x278dd710 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x29c1ccfd saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x872b307f saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x96ca3dad saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa62424b4 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdd6bdcfe saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe6aead21 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfb93f64b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x268eb92c saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2c051ff7 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4189f319 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4b00a6a1 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x53a718b7 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6d0b0935 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe26f73c1 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0106e859 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1902fbd0 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2625d75b smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2a7b4802 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2ada9986 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2aec14b5 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2f79bf5b sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3bd7f3f6 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x689e7d96 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9e2944c8 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaf1aa980 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb1d04a2d sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd05e0c61 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd39343ce smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe854ca91 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe91543ce sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfca05567 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x761fd817 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x0100a321 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x41168ab2 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0fef1916 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x30824df3 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x37d601b4 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x3e719e59 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x4600ef9c __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x48cc01be media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x61313c32 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x6db21278 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x6fd16cff __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x7e6d8b00 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x81a5ff62 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9cefffd0 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xa11c6046 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xb6a03d36 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xca5e9dc2 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xe902580b media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xfa6abdf3 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xfdb710e4 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xc6263fe4 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x093fb8c8 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3b287d4c mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3e3a09f9 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3e8157e7 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x41930a55 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x43133ca1 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5ac87ea9 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x72434f3f mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x769539d4 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x78ed11e8 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7aeaff21 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x849a1e2e mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89e4a307 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb3e2631b mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb9805b20 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbdbc7acf mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc0954f97 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc4a96e78 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf161791f mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x302ca080 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4432fddf saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x49ab2f14 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x50b13347 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x69d2d764 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c696f56 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x704ec828 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x76e1353e saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7782bff7 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7791f9c7 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x844efbae saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8720bd81 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8a8aa8e3 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x94e74445 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x98e0fdf3 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbee67986 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdad32116 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdee5be0e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xea97f66c saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x10270a17 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbf5f86a8 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc9265c47 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd8663a95 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe105f0a7 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfbdaf045 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xff335863 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x085d8e48 omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x1da5563e omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x3739df24 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x6db65fc8 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0xc1644e97 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3fff9f1a xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x43fa2cd4 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6378541c xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6a9fc72d xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9096e369 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x93577fc4 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x997e4b28 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xfbcb96c4 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x70c8eaf7 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x76cb8f42 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03ee88cf rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x13c707f5 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x25e5a2b8 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4146e98f ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x634f33b0 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x67ec3100 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7185b53f rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b9cf6fa ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa197a20a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb92e1387 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbaad1090 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc7f999e9 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc94826f8 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca9ea515 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcebfb0b1 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd63ab197 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1d16e58 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe2d85bb2 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf7795333 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x1c049b78 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x546cd2a1 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x05679feb mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x03fa4574 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xdc513a6b tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x9d5f0f32 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x596a1b0e tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xf4633d1b tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x26f5ee42 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8e1553da tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf0077a4b tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb54009b9 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xcc7ee27c tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x7b8d1b81 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0e09f55b cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1469d3f8 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x16ff5cc8 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x40e1ce15 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x54fb0301 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5b36ef19 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64fd287f cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6ab9a8e6 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6da90539 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8033f87e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80e6f262 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x84816e92 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x858f0109 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc2ca1b35 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc6e1ab76 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xee320760 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeeed3d0b cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf6299f68 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf6671bb2 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf7b5d834 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x717577fc mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x078e244f mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0de4d651 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2655009d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x32bc9e54 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x57f88821 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x59c1264e em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6969366a em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6eab893b em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x72f8bab7 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8c0b8111 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9917ca9d em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa0e603c5 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3d90ccb em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb1584359 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xce8631f4 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4b2e8a6 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf278a8ec em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfa88dbce em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfdc567e5 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x812d7ed7 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x9dbb4d59 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa3403d25 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcddb874a tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2dc6581a v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x803c8c1c v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xae36fa3d v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb255e5ca v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd1b33c37 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfa812785 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x8e56b35b v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xad5196be v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0350c4fe v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x09cdade6 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x10f77a7e v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x115778c5 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x22143300 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2527aaa3 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b2c5f55 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x31310bc8 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x34b3a1a3 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3bbf25a1 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x55ea4ad0 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x62b286e9 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6edb29dd v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73d4125c v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x87db7340 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8897fc54 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x980750d0 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9982756f v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa2e73839 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb18b30da v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf9fb352 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc8778b99 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcba95646 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xce239c2d v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd63d72e3 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3a1470c v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf41b15dc v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x037c9e44 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x08d320c0 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0b1cd52b videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0dc9104c videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x24c70800 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2d796d87 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3f8dc4b8 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4779e82f videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4dab4c0a videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x617a1647 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ce7f2b9 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7605957f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x79344198 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7e367554 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7ea8a541 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x86d1eacc videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9408fd0e videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa4f6c41b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa6608eae videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd103dd66 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd2447925 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe63d62ee videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe80f248f videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeb9df1d3 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2bfbe4bd videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x704a3580 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xeeb93363 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x416c7a2d videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa8800c7d videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xadd89614 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfa82ae8a videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x18b9600a videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x284505bb videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x512c8f8c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x080acced vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x205c00e2 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2be02e17 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d919709 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51cfb29a vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55c2f09a vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x62489233 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x659fb685 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6ecafa06 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8be6eea7 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9dd5ac7d vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb20df982 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbba45676 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe3b4206 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xccdfd7f2 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0f0e0cb vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd648b508 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd686b56c vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x918157d9 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe56f25b3 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x51553fc6 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xbdc25e8e vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x0f7b0b20 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0d19f848 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0fe1e361 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1ad6da8c vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1da24fd2 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x27856042 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4e71573c vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5ea745ca vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x72ecbaf3 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x77430773 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7dc46cb2 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8be6eea3 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8d0fb3e6 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9777990e vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaf94c1e3 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc223b3e9 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc60c0913 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc7d38b54 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc850158d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xca6dff47 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xce2d753c vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd1e5ea0a vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd38d2e29 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd824de77 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdada2ddf vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe01d5a64 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe2cbbe13 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe42def27 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe52d2ede vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe76f2f44 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf130d4e8 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf6aa90f9 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xfe4325bb _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x0b8b4887 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x023992ae __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x026df4fb v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x04eb56a0 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07d8d334 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15ab1a51 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x189a3a75 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1963112d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x200739a8 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x22bd0c2f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x248a7f50 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x26a22844 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27686d98 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2f66206d v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2f828290 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x38c61e9f v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x47c1260f __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4862a44d v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x49d5b3f9 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4c73f88c v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4ccfbc72 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50fd9764 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52d6e5b3 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5dc0ee37 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7beb52e3 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x84c7dbd3 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x881acecd v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fc7e570 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c400adb v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa00ac3ac v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaa2eec78 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xab06e74e __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3ccdc05 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf823f19 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd9d69cce __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0e83c69 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe53ae0aa __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x95440ecc pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xcc1a1405 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe7b5fa39 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1a255d1d da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1a80a699 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x25f7569e da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x29532dff da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x65104819 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbcd6232d da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf947d061 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x074d2c74 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x30309c49 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3e9f2f3c kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x625504be kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x869079d2 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x91630e06 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc876301f kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe0ead2d9 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x1a455211 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x287d0a16 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x969cae0b lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00a681af lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0f4174b4 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x224a6517 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x44348b8c lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6647336c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc804ecc4 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe32afe67 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1759821d lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc28a80aa lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf855d5c0 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x283cab29 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3a335e41 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7a891561 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa0c86038 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc2312529 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd1cec50d mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0ebdd30a pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2c840416 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x313f0af6 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x415f6309 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4b266bab pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x671aeab1 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x734a8402 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7a42be7b pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e660919 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc39ca8df pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfb89528b pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2c966d21 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x91f6a1b6 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8886dbfc pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb0d094ee pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xbbd15da0 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd3577c4f pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfbab8e00 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x01233781 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x15e5ce65 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x33723b4d rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x34e89bf5 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x35eb2e30 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x41313666 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x473f0e17 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x50bbb3c7 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x582408ef rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x592670ec rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c8aaac8 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f386872 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d134e5e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7949eac6 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7b5994a0 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x86b19a20 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8cde492a rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f4e4ab6 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa001bd6a rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5f1b5cf rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xae15ac1a rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe2e92d1d rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe899e1df rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1a642f5 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x13a4d95c rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x239cba43 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x254c6e2b rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2aa1b29e rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4bdbd934 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x583540b1 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6649f628 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6c51469b rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x915fa969 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x959e7431 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbb073290 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xecc3c580 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfeced485 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0885ab14 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x111bcce7 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1673d4f5 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1dac0177 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ed6e117 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x27d1437d si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3531c6c9 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x385d1756 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46ef2875 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4803fc35 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e4ae79a si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54c295a6 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55bfd338 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55c26567 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x564d253a si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x56bd7695 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x631c201d si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ad0a2b1 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6b2cbb35 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6b8919ea si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x725ed24e si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7ddb3ecf devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x964d4601 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab69ff55 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb022b0da si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9671ba5 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbacfd734 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbc40f8fa si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc0559119 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc2dd135f si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd0387b55 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd269a81b si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdcfcbe1f si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf2dbbd78 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x38887caf ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xe09119d7 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x08b792b3 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7d1b4dce am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x8979060a am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf1e2a33f am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x43b44028 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x738b83c6 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x88427ebf tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa8c88e7d tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x11e686e2 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x122949fd cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa3666a5d cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xad5b3585 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xbf0ba611 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x07766995 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x40936762 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x539e2404 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x54ff399a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x77a94aba enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x988561d3 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf2bf78c5 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfad1c4ac enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x408b9e69 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x74359432 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x753707a7 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9fd87b7e lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa5c9aa29 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb741dfa9 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbe021a84 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf1fa7d50 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x0ccb2823 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x86a4ae60 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xc132706b dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4d84ec99 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x72adc971 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb09ac90f cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x32165dab cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xbfbdd9fd cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc1ef922d cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc3d718ea cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6c919854 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9121c098 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xbf79d051 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x36937574 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xc9cc52ff brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xd44f1ddf brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xe4a6a11f sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x46d07b3c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x601903c3 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xb6c44083 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x07b815a2 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x09bca2e6 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x20612c4a ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x27104de9 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x29d882b4 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b11fa61 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4db8e548 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4e12a210 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x77d6522e ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8e9ae338 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9e62db05 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa46b16a2 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc9df1e6c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd9406d65 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x251bab5e arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x7a4a22e4 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3691cbac free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3fd47c9f register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x88a9b02b alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa5b468b1 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xec2a06cf c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xfc0cc77f c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0f4d6e28 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x133e3060 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x200a4ddf devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x28d64e34 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x32f47e1e can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x58295b7e alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7d855bb5 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x80112f8e free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x88c5d63f alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8cb52748 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e02af6d alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa234b722 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa4fbc34c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa5d42263 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa5e0996f alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa9b18e5a safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xba919c7a can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc5ab3a53 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4e9a04c0 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x92732414 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa40e8b74 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe0d39cac register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0037b29e alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5e236baf unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x69bffa3b register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x80199795 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xd0c4868a arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xeb973570 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x027b5ed5 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0691c3ec mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x097f7e4d mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bb97a49 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bc98231 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c83d3c2 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cf17101 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ef18e45 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fd30df6 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1303163a mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1511ecc9 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x157aa8a2 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17e25f35 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b7851e2 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c20ea72 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e74fa52 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ff23811 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20b6e515 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21c06f80 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2241e508 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23d945e8 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2697e208 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2775ecdf mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x281c7564 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29f26aba mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c0136ca mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x327adefe mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34d45d5a mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x382ef8f4 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a18912c mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c3960f8 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ca790d5 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d90c9ae __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dc77804 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41d16aea mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45bc14b6 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46223e66 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4865576c mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x495171a9 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df73740 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52c9576f mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5443e879 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54bb889c mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58d7dc7e mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59b1b3b2 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a066fd7 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a2ae659 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5acf0bc4 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b64c0f9 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c2090ea mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ea2f03a mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62c808bd mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x676441b5 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a381a56 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eb8011e mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x708dc0ed mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7371a809 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73fceab1 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x789874b6 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bd21ffe mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d00bdd5 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e70efc8 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ff5bb65 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80facd39 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8194875c mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x836e2147 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8432d76b mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x851f1348 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x853f0d1f mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87eedcb1 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88bc7759 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a5cecc4 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b0db1f8 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fe71e51 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91dc657a mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96adce5c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96ebc470 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x973b2574 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d3c06f7 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e2d8307 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa17e6bad mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2f59d9e mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa57284ee mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb12938c7 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1a59b77 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1aec64c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb77ef8df mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8603a60 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8a107c4 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8b34664 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9baf86e mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbad68ce1 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbaa3580 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc08ca47 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2d0c89b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4c011ac mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc63403e4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc67c51dd mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc82dac0c mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccd825d3 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdd0b171 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdf2de9e mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf1ea4b3 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf21fa7f mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd090d45a mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2cad198 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8e62d68 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc2fb2b9 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd4adfa7 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddb0f978 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe44dd04e mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6394c42 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe764d2b6 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb325632 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec6ae54c mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee1f07b5 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf046c0ef mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf05f19fd mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf29d2984 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf31de247 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4543294 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb8ebcd2 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc2ea457 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcf60718 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03b335f3 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x150ac814 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16735075 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17a1addb mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fa0e023 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20570184 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x22a42e7c mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24e693cb mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24fe7d2c mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27c9f022 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x284b1fe1 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30375100 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39d167f8 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a0508eb mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a85b560 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4cdef302 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e5a9177 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54bc8c38 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56854ffc mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5929b46c mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59f1a1d1 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61fb885e mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c462af4 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ed6d8d1 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79e00ddd mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d0aaed7 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ed20dae mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x840b24bc mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x872b2910 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89da9f7e mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90e6fc9e mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x932595fb mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f18897e mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa49108a1 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa9e49b2 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad17d530 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc476ca1 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe08aafc mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb63899d mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd979661 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfecab50 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4fbe497 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7390b68 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd755dfaf mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb494761 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd65e3d0 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd6f7c46a devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7e302272 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa7330a3a stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xbe5f6ef2 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xfc5eca4f stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x284ccf41 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5e75af2a stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x6b5d9369 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x9daf341b stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/geneve 0x0df62467 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xbe1530a9 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3952fdd7 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x799ff0cc macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7e3b1e34 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8f3a592d macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xbc188a6d macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x365bdff2 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4fc5d129 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5aa97a8c bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x72e5eb97 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8949ca5e bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa0ac4f34 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbdcdfec1 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd71d7643 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xdd489d1e bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe51b4f3d bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x0f493f3b mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8ebb1107 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9e2e1c04 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc5c57ae3 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xeecf1455 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0f52ffaa cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x311fcedb cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x31f87086 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x555b5540 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa6be786c cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xccb0e749 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdaf6ef44 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe0cba8c1 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf53a0140 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x19c1a6f2 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4532019b rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5d3239e0 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x7a363e0d generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc2f84ab6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc683af15 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0289353e usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0bfcfd45 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1227fe05 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f361ecf usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x218d33b1 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x22f0f368 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x27975030 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x36438d6f usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x380ba42c usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3912bff4 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3df2c6df usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x420e4cb4 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4aa16d73 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x670c2f5f usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x691dcb62 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74e659ca usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x760b59d9 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7b88c52d usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x80757538 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ba99f4e usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b5eec18 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb1f262d8 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb725f702 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb4ffbc9 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcad75964 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd1a4f51f usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4c7805e usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb1b8694 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdfcfb08a usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5952687 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xede9a9ed usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeef19ef2 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1138d93a vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x65f6af6d vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x05c73585 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0d62894c i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4f55285d i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x50f867aa i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x60309152 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6111ebb7 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x690ca8cd i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7a1239d4 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7a2ef163 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8f3870c0 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9841a9ca i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb4a8b0a9 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb6282a9d i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc11c3142 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe075ca3a i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe70928a6 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2e74102b cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7787a4c8 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xcd02a13c cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf8cb4044 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xeaceb05b libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x23ad6b94 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x33c04b40 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7ab90cc1 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc7699260 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf2ace125 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x097a97cb iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0b00a6f3 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x142d0be3 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x16474139 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x212afbc9 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x22083f73 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2792ea45 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x28a64761 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x30d36c28 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x429652d1 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49b542fb iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4e68633b iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x517af84c __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5cdeac77 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6142675b iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f8ede64 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x72384de8 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x75b6b281 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x79500c49 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86df871f iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9bf16097 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c77eed0 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa2bcb62c iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa64a5d6c iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb9a9cde2 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xba2b137b iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd1519540 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd34ef655 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xecb89471 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x07c5ddfa lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1afaae8f lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x33c19990 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x76d23a50 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x813d58dd lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9ab2f317 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9f775743 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa33a3212 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa95818ec lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab0d50de lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd15bbbcc lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd33dcc77 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe72fc180 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeb85b407 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf8c9d3fc __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfc76371d lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x064a22e1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1077ba6c lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2f89d15c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x375dde6f lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5001cace __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb4fa3e03 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdc768097 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xff13cb88 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x08d11187 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1a55e0a7 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x23cea6be mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x267349c1 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2e5fde68 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x30e05996 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3372c64d mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4dc36ece mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x80619963 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x94908e40 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x952c2348 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa4fbb131 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaec8664e mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc28d43f3 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc6db028f _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe0f1a515 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeac8c3c6 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf2ea3dda mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfc7644e7 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x04d1e98a p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x530617a4 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7c887e03 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8d9243dd p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbec4e968 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc7879c3f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe19c892a p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe8138b69 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf56ff7b1 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1a3fff71 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x707d0f69 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x870711ce dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xca48028e dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x21d79054 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2ac59612 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3cdd2e61 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x481a7211 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x48948e26 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4dea4a3c rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4f0494d3 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5879a29a rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x65614e7b rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7a781f4d rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8ace5d67 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x94229bd8 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9636a658 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x989c6f9c rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x98e6f6c5 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa759a320 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa94ba3a9 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb2e12376 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc3e5fb74 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc470e696 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc9f2dc71 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xca265ca8 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcb833f6c rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xde99784f rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe533de0a rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe9d5d761 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xffd7483f rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x07c23aaf rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x09860404 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x201e504f rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x214b4806 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x348e59b6 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x55274be2 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x57761bb2 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6c99122e rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x82291cd8 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x82c23580 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa0d3a31f rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa84b43e3 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb1672e22 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc5171117 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdaa72c49 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdc60551c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf2e197c3 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x5832d815 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8d61c3d5 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa5bc2e0a rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc8077b59 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0d7dc0d7 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e609368 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x12e6130d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28ed7b82 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ba40a65 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2dc4e0d3 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3362193b rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3bbe0ac6 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4227919f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x44b71889 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53b6beef rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x572123f5 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b3bfe07 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5efadd37 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66d10f3f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ea56107 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f07b1de rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x725cb808 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77f867e0 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7fb9ab50 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8276bcc2 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x83929eb8 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8fe51d95 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x968efb22 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x971250a5 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa835c75a rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9ee839a rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc70e179b rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd16eee0f rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd35fe7db rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9318661 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9fa88dc rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xee5cb44b rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf286ddce rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf36aa927 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5833cb3 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5aab70b rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf710a3bb rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0322071a rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x16bb88cb rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x379d15bb rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6c332cc9 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ab12cd3 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x988fd13e rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb1acba8b rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc4f25fb9 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc7e421e1 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc86c5e80 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xce3a417d rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf66eada2 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf7019369 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x002912c5 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04072431 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x062847b8 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x066cbd38 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b2efbca rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d16ef69 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1410ae1e rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x16c49cec rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x18189ee8 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x26f84ecd rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ca97a3c rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2d8195bf rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e8e050b rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x385715ad rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x457e9fe6 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x504e560c rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x51bc0793 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5463a313 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x580eaadc rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b686e80 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ba5a6d7 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d0b777f rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5de58eb4 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6209abe2 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70247c0e rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7c41df80 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96d16810 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9daffc5e rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0227c33 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa32820b8 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4287a94 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4efb694 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xab5279e4 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb075ea76 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf8243f8 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd23e9abf rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6585e3f rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8d4a8e6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9d33993 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe07fc534 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeaaa0b67 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed715ba9 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf04bcd09 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0693a9a rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf41d5ed6 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf856af26 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0e3c213f rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x34932c6d rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x53d4d615 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8aac24fe rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbb72ad2d rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2616eec4 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x572de057 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb5119fe1 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf7336caf rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x037f5d84 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2e79a35b rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x431168eb rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x63fd952f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x72f3254b rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7614726d rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f2893c0 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f5efbab rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8549fb97 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x87326bf9 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9dae7b41 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaac47ffd rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc12de1c6 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeacbba47 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xec5a1d87 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf46aa0fa rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x128b1661 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3f951b14 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x61868482 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x055b6833 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06aa0e40 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0cbd6396 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b61540c wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x28b2a069 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29759c96 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ac4b50a wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49b4b541 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5b3b095d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e0c7527 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a8ac5a0 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6b58027f wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x706bb355 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76c5b491 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78dd9c4c wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78ebe05b wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86518789 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9063330f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94f091db wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96cafbfd wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x977ad2d0 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99fe8a61 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a1ac30b wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ea61360 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1260a3d wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa22d5cee wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3b0a060 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa63fda5f wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa108ac4 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac1e7490 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xafed3e22 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbf1a1f90 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc21b8752 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd497887 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd36f14f5 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8571b5d wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdc1f2582 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdce34b98 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6ddfe1a wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf8c27191 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf91d1bec wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf9cb133e wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbc9b341 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd98e377 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x34dea49a nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8053338d nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf066450e nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf4fa5a6e nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2be6ed73 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4230aba3 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x69437b94 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7ed1cea6 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x817994bd st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x89a5d361 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8ab4fc95 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe890dd1c st_nci_probe +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2c1fc7c2 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8643f31c ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xe126c040 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3aa9eaa2 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x6714327a devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x7bd9452b of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xab9e14a1 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc1dfe998 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe0d82654 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xf89c7e72 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xffe8ed8b of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x205ae211 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x22a50316 omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0xb3f9e0a6 omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x03ffa5e0 ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x099f6b1e ufs_qcom_phy_enable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x1d59241b ufs_qcom_phy_is_pcs_ready +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x22ce3202 ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x23b36ba2 ufs_qcom_phy_disable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x2f52fb0a ufs_qcom_phy_disable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x30466843 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x4d8d2d7d ufs_qcom_phy_disable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x50cd5d09 ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5537710f ufs_qcom_phy_enable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x55dc8228 ufs_qcom_phy_enable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5b8e695c ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x64c4bf34 get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x67360a6a ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x699e6f00 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x76111df1 ufs_qcom_phy_calibrate_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x8a418cfd ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x96f176d2 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xd084efe1 ufs_qcom_phy_start_serdes +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xf03e4da6 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x222d410f pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6282769f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x72bf0d8b pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1110a346 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3f459f14 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x811ad330 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xdeb6f3f6 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe8c20f38 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6cbc08b0 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9e04f0a8 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa0133395 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcdbdeaab wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe07ca806 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe6467a18 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x906a98b6 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x04466e4d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1586409e cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x160f388d cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x27398360 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2971b1e7 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x316d3acf cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33e8fdef cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3aec200a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b7f2b26 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e8729c7 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ebb01d3 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fe21bc1 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x429f0ddb cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ab23c53 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4e311d76 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a65a1af cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x665fa6a7 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f802c46 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7f5c737b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83ba1f82 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x87bf1370 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9052ca55 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x977bafbe cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99083367 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2225f2d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa864163a cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafb25488 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1355cfd cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb17792f9 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2b7ed7d cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3ad442b cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc743c0e5 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd179aa24 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd914cf15 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9a6070b cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe000449f cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3c11e19 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xee8ace4d cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf275f8ce cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf51ce973 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf7292b95 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9c3daf4 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfaa83a78 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb30aa18 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffdb2f2e cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffec1683 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x223c2d9a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x24f90ec1 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2dd4bafb fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5858d10f fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5cf70ae0 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x624cb6af fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x66c3cc81 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x98655c59 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x99e0fcb8 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9e3f4d97 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa38bf76d fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb962b96d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb9cbe354 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbe112a64 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc3f10997 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcc782401 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x620004bc iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x63e06097 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x774e1bab iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82e9bed9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9877a7ff iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd1854324 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00ecd9c6 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0511958d iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0abb1ecf iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0f406e52 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x144010b7 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ad895aa iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26333107 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x308707eb iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x38f70fb4 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c5bf454 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x565d7331 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f015d8f iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ea703e6 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7cc51663 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d86f804 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x814feb51 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x849f29bd iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x90b4ae3b iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9507be34 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x95ff449f iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96ae328a __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9972965a iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9db5a632 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab7fda1b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf5b5670 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb61a0d48 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7a7d199 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb812f463 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba360395 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfc541b4 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc50b694d iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6e9e708 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc7c0226c iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc1a1d45 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd09d2802 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd795017e iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd82994d8 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd975444b iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1213ec5 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf2dc670c iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf2f7f064 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf645d548 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x036dc374 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x34b4862f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x37a7a15a iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x57aff24f iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8bae7185 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x977eb76b iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa56d715b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb1d385d1 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb3380610 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf7b9d51 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc123cc1c iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc99a763f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd983947c iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe279cb12 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf7866031 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf7c2c9ea iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfdbfe7fa iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x05bde13f sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x067b65f9 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e4819fb sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x130d858d sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13abc94e sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x177a7850 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x22331767 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29153548 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a8667d3 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ae7e36c sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x40ebd0c6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4311ec20 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x484f57cf sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x53c6ecdc sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8b41acf3 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9aac8ffe sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9abdd21e sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0dfcb66 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf1a7d5b sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd66e1228 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7f4cafd sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe899864c sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf57df757 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf592a0ba sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a138ac0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13476dc3 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1b6674cb iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ca92315 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29f6308e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4157354e iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45f0355e iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49b56761 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x520df730 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65cd98a8 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67eef4a6 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c7cd60e iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6ec3c2be iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x842684e1 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84e6d147 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x891f55ce iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8dc8f8bf iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x935f9c8d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98c0fc35 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ba4a1f6 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa2f4b841 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa3a8405f iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaacedf03 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaca64018 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafda99bb iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba862cff iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbcd81681 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8382970 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcb5421d0 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2d870f7 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd35a177d iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7cca669 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd99cc8cc iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb4d66ef iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc4eb3ab iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xecf1f7f7 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf51417d5 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf71ef25e iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfdc9141f iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xffa85c36 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2c32cc25 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6bf2bb35 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x927e0007 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xea666d84 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x2401a848 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1f31e56f srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4adae924 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8a4ee224 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x93d80106 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9954194a srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf490a82c srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3de3ec7d ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x711505ca ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8cda8f61 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa95adb15 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xad4d75ef ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb47fdb2a ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbf555fbe ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x24e2268d ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x3206c681 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x464d414f ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x6a39b6e5 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7690ca82 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x872fb693 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf555abcf ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x144a253b spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5ce12105 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa1a0484e spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc10f3fcb spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe3f5d70a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x989e0744 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb04eb5c8 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe7a0caef dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf262f40c dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x37583677 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x42c9f5af spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44a238ba spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4d44411b spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x51351c5a spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x68d5082b spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x79ec4aa7 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7a616468 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7ae24980 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x979ac2f9 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa08e6740 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xabf11343 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbe4ea31c spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcabecb7d __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdad1632e spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xde47ad6f spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe1691151 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe7c424c9 spmi_device_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xe14f64bc ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x048b6a6f comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a3ee64f comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b40a129 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b758862 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d55e1c9 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24da68a9 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3111593e comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x43806264 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f1db4bc comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68394b64 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a67439b comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6f37b264 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x706fd264 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73292ecb comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7fa82801 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8a06065b comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9009e4df comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x91634e62 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92344b77 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9704b642 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x986adc85 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x989c698b comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e8160ce comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa70ae6bc comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa98836b6 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabba7a0d comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae31c819 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba862d2c comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc42f2e89 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc79a44e3 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1b3356e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdaefa191 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1ba4d56 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xecf3bbb0 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf384fb7d comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x00cb1e38 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x06eefcdf comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3803af43 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5bf9dcb1 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5ca27c42 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5fe65db2 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb44bdd68 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe25bdbc3 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1edef8ad comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3782cc22 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x39abf2b1 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x51c701ef comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xaa552ffb comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xec8c75d5 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x1598261d addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xd68994aa amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xe981c640 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xaba073a2 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1a73d7e7 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5407b324 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x61461874 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x68412402 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x68d92181 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6ac3ced4 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6eaee4ad comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9d0d2e57 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc2f490cf comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc5875412 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe27a635c comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe3bd73f8 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfacc1d1e comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x92b502ba subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xb0a37919 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xf0568df6 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xf5ccf772 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x03776884 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0dc6fba4 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1af176f5 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1df86c2c mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x266400d3 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x37543d15 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x40259a74 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x49770c80 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x53101198 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5693127e mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x638f69ff mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6af4fa3b mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x857f5318 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9e7ca13b mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaf83547f mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb08be313 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd1a51b9b mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd1d1b155 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2b3479c mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe9760196 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf96a847e mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x7a80d8c8 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xfe308d8e labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x13e7021f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3203b3cf ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x490bef28 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4b4196af ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4c3e6895 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4ea4f4f3 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x52411042 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9b2a1f96 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x070b49d3 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0b657e10 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0ba090a9 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1c492222 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x39b274c8 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xcad72804 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x31ec6abf comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbfd1dbb7 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd181760a comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd6853f63 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xebcbeb1f comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf009f4a4 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf74bc71c comedi_close +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x1598f8e6 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x097b1af0 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x389fc457 most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x3faff512 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x475025f9 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4ae9d72e most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x60f75113 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x65ca1845 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x7e771f6c most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xbefef2ea most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd24adf6b most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd43edbc3 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd5871e70 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x3a01fc46 nvec_msg_free +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0xa2b8c9bf nvec_register_notifier +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0xcd7bd36f nvec_unregister_notifier +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x012f01d5 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x42a01345 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6afa3e2c spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6c946ea3 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6e50d86a spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8ae74af1 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb34fe566 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc65baaa0 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd216eb3d synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf44d85a3 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x393c2dac uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x750f81d7 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xcd5e3493 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x144b5e9e usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc877751e usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x2189b770 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xcc231aec ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0d9f4924 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xc3d1a7a1 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf1cafcc3 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1b55369c ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x658fe34b ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6aee7f52 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9b57d23a ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa7b9bbd5 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf6941cea ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x17ed80e7 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x19052eb5 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x22088cf3 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2e1350dd gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6a9e4f24 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x734e3254 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7548844e gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7fe99d9d gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x855e560f gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xad762ca8 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc5402ce1 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd5e19e1a gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe6aada3e gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf62bf1c5 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf6bd3c9b gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x692041fb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x7a7be8f3 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd442e477 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xfb39f842 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x20d4e0bb ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x4bca8b0e ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xaf382c66 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x100e6a28 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3f7e8f6b fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x44e4d839 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4b34d98a fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4cddca8f fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x65c18b0e fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7815ca95 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x818034e4 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x89682ba9 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x96dc5e2e fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x97e3674c fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xaea3f8e3 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc29f9e1f fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd8da1d4a fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe9fdedf2 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0bfb823a rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x27479c81 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4438b5e8 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x58ce07a1 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x68839e31 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6d342330 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb775b1dd rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb7ee64ea rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbb787ed0 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xca18f509 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc726e1d rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd03b653a rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe05ac0da rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe4449ca6 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf626026c rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0eb5f182 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a6153f0 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1b1f7300 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1cac8b87 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x248704e3 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2b0c5aca usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4215f89b usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b1cb8dc usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x527c3cc7 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x55e65a44 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x56023077 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x63a6e6e7 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x651d3bf8 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x71bc22fb usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8141cb76 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8c20562f usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8cb5b1ec usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f856728 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94ffcb80 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9752727e usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x97b172fc usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9ccdd9a4 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaf3f9b7c usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1659ebd usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb3ba5c9f usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbf50b142 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc5b04168 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd1ef954d usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe3a52516 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe9b3185d usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea3dc9eb usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb3d7978 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4833da38 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8c1025be ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x232f6d81 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa0d75518 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa13e9fc6 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb01c09f5 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd5071fe5 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd622cc03 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdc63890d usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf1e1e24e usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfe0039dd usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/omap2430 0x6fb55e1f omap_musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x78d4c79e am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x03843e65 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x26afd6f5 tegra_usb_phy_preresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x47dbc397 tegra_usb_phy_postresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xb0613c67 tegra_ehci_phy_restore_end +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xb63835c2 tegra_ehci_phy_restore_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x8dac2aa2 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x011ef17f usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1a07f06d usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x20c2b188 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2964f946 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2edb2b8a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3127171c usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3af2caaf usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x51336724 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f84e60e usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x631b0ab0 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65d57b74 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x675ca0bc usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d02ab03 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8baacb51 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8bcd562b usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8f45f024 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9325bed4 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbe7ddaf9 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd6612930 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe1b62c26 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfe6836c1 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x08c626f2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x09f3d756 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x209a49e5 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x31e8282d usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4532f187 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x47e9fdf7 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x558926c8 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5e496cfe usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x62d151e4 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x706b34ac usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x77f803e4 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaac773ec fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb5f9114f usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc25b29d8 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc3c184d4 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc92cba05 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc8402ce usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce3e35bd usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd26b0e64 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd39dfa13 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xda689427 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf505ff69 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf75e6dae usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfeef0bc8 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x08dae47e usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x09e2c71b usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x14dbc3ab usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3514bd12 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x390f60e8 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x44e1c83b usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4fa9aba0 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5a9c861b usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7572e829 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbe2d7540 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd9100aa4 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe204a711 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0074473b wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x10ae6d03 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2d9492ab wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x98f65f1c rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9df962c5 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa17760fd wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdbdb2b4b wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x05bd2358 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x119636c5 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2fa2f9e2 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x45c2ba52 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4c7341fa wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x64d88296 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x817309f0 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x83553d53 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa97d0823 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xac99fc9b wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb798e78 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf232d23c wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf9ab326b wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xff4117a2 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4a5070dd i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x663debeb i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xad19c67c i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x13b4890d __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x19ff7ca3 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x25f9a30c umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4bfc3bf2 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x86e1cb3f umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9c409fc5 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe57bea40 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfaecd1ed umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1f569a38 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1fa060b1 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x222af1d9 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x227e14b4 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2a23574d uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3b2f4902 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3cb3e124 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d722a88 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4fe86839 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x57800f3c uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b3fed24 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5d86f9ac uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5eabe2f5 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7e34f18f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x86655a94 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x906dca02 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x92766ca9 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa2acbdf9 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa2baf6e7 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaf762f1c uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3734e87 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4725fe6 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba330449 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbbb6e977 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc0111fb uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbd2d99a7 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc43b756f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc84363d4 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcaac10e3 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd9787858 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe00674e7 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe8f94a49 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xebc4959a uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf387a1a2 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf49956cf uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf80da4da uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdc9a588 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xddcb668f whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x66fb0fca vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x7108b1cd vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x822890b7 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x9b743028 __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6e713fb3 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x7e3845ad vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd436b515 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xeacb1c38 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xeb6e9c6b vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf12695a5 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x1590c775 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xcf20d0d7 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x052de097 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x053d60a5 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x05cb1eea vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x168735c0 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1789cdbb vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x27921545 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x47a25aea vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a732f6d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6953a593 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6b9a4cf6 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6fd48d25 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x721b445b vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x738c7f4a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b405add vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96ba554b vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9ed120ef vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa02fce68 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa07fe580 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa4278c4a vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa57a03c0 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa702755c vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa725c2ba vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xac282964 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb14191f0 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbcdfa128 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc359fddb vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcbb30d75 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcbd57311 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf70d69c7 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x071cada2 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x478d81f3 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x600f0410 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x872d0071 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x96ff14d8 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc759f8db ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe144494c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x11ae5fbd auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x359ceb55 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6a175895 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6aab6003 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6da622e0 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xae698981 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xce3947fa auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd3e5e8c4 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd6654cf4 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd75d5647 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xfe2c0041 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x4f34e8d9 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xa1c3d9d8 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x44e086b1 sh_mobile_meram_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x4bcc6455 sh_mobile_meram_cache_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x7b3cfdbd sh_mobile_meram_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x9f2f2582 sh_mobile_meram_cache_update +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0xe55edfac sh_mobile_meram_cache_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x452140c3 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xcbd2d10f sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1868dc4a w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20d16901 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x414279a9 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x52216b81 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5556d4db w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x61cb4c43 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xad2875bc w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb0544ae6 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfda61e99 w1_read_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2eb6545e dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xe66a2537 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf80efaea dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0a9cbeff lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x18b00110 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x202bd26a nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5e5e3757 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x81586342 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x86218bd0 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe01a3d3c nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0187f2fc nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01a5751c nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05bd09e1 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0665ab29 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x069c8fe5 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b210d98 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ed171c0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ede41db nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1017cc29 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14283a00 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15d4f8c2 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x195a6390 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f26e115 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21d3aaeb put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21d83412 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b1af0d nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29116049 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x292fe0da nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29bcb83a nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a6e501d nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b1d7404 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d6d8b88 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e01cfc6 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ec1b2fd nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f0474ab nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c80175 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36d67ffd nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3772dac3 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cc85885 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dd8a7fa nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f305387 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f4c21ac nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418a37fe nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4228589b nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45431984 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4882f4bf unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49420a97 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bfb8821 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x516d74e7 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51c76ca9 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52f5853b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53825e59 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5508a525 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56c71d91 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59b3bcd8 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ac8d48b nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c9cbf5a nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ec4c701 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60b974ac nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6161fa15 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6425cae0 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e5093b8 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70dd6f99 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7223d603 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72687222 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74041c43 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76b91f7d nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77519295 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77ed0457 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bfb0ea9 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c2eef9d nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fe27e37 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8201bfc6 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85de859d nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ba28fa9 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bcc3944 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x919d9862 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x931c8046 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9363a5fe nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x976282d5 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x984f31c7 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b1d27ca nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bbaec03 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d259238 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ef7dc2d nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f9abc97 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9faee9e8 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa181c43b nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa412efc6 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa564ba59 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5cb6ad9 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa781c5d9 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabb8714f register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacb3742b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade58d85 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb282c37d nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5e3c95d nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7c2b9d6 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbdd1c20 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc5937be nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc86eb59 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd25b79a nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd382829 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc13cf9ee nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc14945e5 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc364e944 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc40a5c9d nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6ee57a6 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc88a71fe nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc96f9701 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc986f2f8 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb5ea6eb nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc464b8e nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcde1cce2 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1d70fe9 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1de46d8 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3b17559 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd89d7841 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9a48ef9 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9b7fe73 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdac44a35 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbb6a5a0 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc0437b0 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3af34a4 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe61593ad nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7dbc1f9 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb35e840 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec979580 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed813552 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef262dd8 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1f072fb nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3b7a2f5 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf784994b nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8258025 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbd30606 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xde216b32 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x00163cc4 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07936eaa pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09d3509f pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ab855ac pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f32c2c7 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1214b25d pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16918ac8 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d6fc5de pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ff4ee53 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x218a461f nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x296e2535 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ac217e6 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3aa32358 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4af78f9d pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d88dcb2 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4da8326b pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5a49add2 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5d82ee9f pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f24da9d nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x637b11cc pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68a3e9d5 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cfcebf9 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x729e8cc6 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x77f33197 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x786fb036 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a031c98 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8611edc5 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x879e58a5 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x894406e3 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e9fdc7c nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x942beaad pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94654576 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98ae99ad nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9accfff0 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1b29d83 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa234d6af pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa65e2ef1 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa6ac27d9 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaabd7d97 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0b51e21 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb431a3ac pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5a1f98d nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5c036e1 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb61d185d nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb668200b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc89fdb04 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca322dc9 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd3cbd8f pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce62f208 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0dfd41c nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd26679fa pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda9dbaf5 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9b34e02 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeca127af pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed55d425 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf1cb8c31 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5c935d5 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7316f22 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf98c7f87 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfc51a4b8 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe95c6ba nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x2d54f576 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8f8f117d opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xe3bdee3b locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x01e1b70a nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x0fab3877 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x02b53396 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x156b0e56 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x488599ec o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x496674b4 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a36fcec o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x75e084dd o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x877f8144 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0843b644 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x30dacd8a dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x60911157 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xad434812 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd1b63d46 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7dac3cc dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7a6854d1 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8afe93ec ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xee27be50 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x7133fe7b _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x7d07043f _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xd316fa0d torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x0f854574 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x7b404abd notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x2d107b5e base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x41ecf87a base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x72eb4ea9 base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x767b8ba8 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x8d490167 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9af6b231 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xdba4feef base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xde0e6eb2 base_old_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x250652a2 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x3df6614f lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x1ab53445 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x6f48403a garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9820f33d garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb33c157a garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xdaf35ab0 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xec10f9cb garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x341cd38b mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4a6dcc90 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x521684f2 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xb3f1adb8 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc7c553fd mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xf9cab86a mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x45f426b1 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xd88e4b82 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x4dce7f2f p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7b7d7371 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x44749a56 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x36c82e6b l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6568e454 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x79c72193 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xaab9684a l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb0979b8a l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xba57cbb8 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbc40504f bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc67dd03d l2cap_add_psm +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x145b3580 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3838ee20 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5645a29b br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x583088d0 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6b9d8096 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7fbca460 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xefbdb324 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfefe68ca br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x83d82977 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xca442f3b nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1141b99f dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15082f9a dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15085169 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x25d6fe56 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26a9218b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x39e07ed4 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d7d68ee dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x46d785ab dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49fa151c dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4c4b1a54 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d9a3cb0 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5afdf39c dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x620d6bd7 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x98c3cb85 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9ae743bc dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cfb740d dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5851f7f dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa591a524 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa59b1ba7 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6786e2d dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaa59c5e2 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb7ade426 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb91aff43 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfe41ac2 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc89290da dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf2ff8c6 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2720357 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdaca1ea2 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf79d92a dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe81e2f93 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf33eb778 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x045a1be6 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x827043d8 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x99337167 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc0687dd3 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc49288af dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe0d599c6 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3e6efef2 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5e5e118e ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6de41950 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xaf098142 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/gre 0x33a25785 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x542b1f3c gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x28797b0a inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4db8f919 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x69625386 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb1a295a4 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd0bce3ee inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfe0dd385 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x0037d243 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x00c83a0d ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x039db6d3 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0ebaca76 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1fdf11ea ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6acb95c6 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7aba38e8 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7e1ad98d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x837afe39 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8b28fe6b ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa9509b0 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc4f03f91 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcd6baf92 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcddbae7e ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf386967a ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xd9acceca arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xb6dcc769 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x9e4f8cfe nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0e848dfe nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x3af5f5c4 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x41f3f32e nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x95577534 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xae903f73 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xad4011c8 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5cb38ec9 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x79870402 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc4c6fe56 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe9f8a5da nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfcbe5e4a nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x0a4487e0 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1181d1c5 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3f0b1c65 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x449d97da tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x709c3c5a tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xabc913cc tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x30489bd6 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x5b25cfec udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xcd13c007 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf67f585b udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x33731c8c ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x34c4190b ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x574c1365 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x94c7b980 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xbe3983d9 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd8fed6ee ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf50cb9f6 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x44d02f36 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x8f9bbabc udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x50afe6f1 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x8bf0a40f nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xbbba6ccc nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x12bf27fd nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x28f0b413 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x66a390fa nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x7887364a nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc5892d8f nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdf0e7271 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x32ed2142 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x05a40bd4 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x77a54af6 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7ebb4e5b nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd336ef95 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xea4b69f3 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x5cece1f1 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x10d570a6 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x16de44fd l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x16faba29 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x333fdd87 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4d79ba71 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x50949a29 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x58eef293 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5f4284a8 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6655f90a l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6ca73fb3 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x79ec92f8 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x944a0d47 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaeff4522 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb997ec05 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc6def180 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf375fb09 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x511d39e0 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x05e1091f ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b31085f ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1249d130 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2446fa71 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3bc6964e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x490987ec ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x53af0348 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6d734621 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7491bb78 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x842553dc ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9118b42c ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa6690061 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb09c1f05 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd67605a5 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xec0d848f ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x06fdb2ce mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x8046fa24 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xd959911e mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe17aa2b4 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2c06fac2 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3fa206f4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x43316a87 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x509a40a0 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5730dc42 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b1c417d ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6c39d609 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x92a74819 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9bf10a06 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa19d500a ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa4244208 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xba45bc28 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbd0c4ac4 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc634a947 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xed6b4f3c ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf145bcac ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7c5c007c ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x935b66cb ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa81fe989 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe32840c4 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01ee23b9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02172f16 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x027df65d nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x039637de nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10e3a79a nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13f353c2 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1652dd7e nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d21fb18 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dab2da3 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fb2389c nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ff76f36 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x21471fd0 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x235483ac nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28feeb3d nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d4a7c7b nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31a0555c nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3963810b nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a07c842 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c8e7e78 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4087ae4c nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42f87ea9 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x430701e3 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43310103 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44e6c0fc nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4641a228 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48e31924 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a16a398 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ee3ca59 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x513668d9 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x517463f8 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5283fe1d nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bf01027 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x608c0d52 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63b11609 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67c4dcc0 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d88fa9f __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e318a60 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f8eb24d nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71316361 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fbf8813 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82867910 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83be6d85 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9068cf00 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9098d3cb nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92e97206 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93b02b62 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93fb514c nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95aae873 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b61e603 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d51fd3c nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa89899e7 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8e9d333 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8f7d359 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb19cb4bb nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7dda007 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbad1f814 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe70987d nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc014d211 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2abd2fd nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc61f9874 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8baf2dd __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9c9af0d nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca6832bd nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbb0706b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd32260bf nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd37068e8 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd374b872 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8a88075 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc37b694 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdce91aa6 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe02c1c59 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1ff4ee0 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe50e1bb7 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe90abc92 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebf30553 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4b03c28 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8308eeb nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe9188d5 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff3698c6 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x3ca772d5 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x46c82823 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x846e3f2c nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x54e7eae5 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x576fad0b nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x60daf59b nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8a3de45f get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8e819444 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8f10dbf3 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9ab28702 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbd9de610 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd3e35a50 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfc252bfc set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xfb66fb12 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x191dd9ca nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x70d096e3 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x95f58e3f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xef5b6be9 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x1d6b9de3 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xf1a54c40 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7715893e ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a608aa1 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xaa9c6814 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc35edbff nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcf75a175 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe7069872 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xeef9a526 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xa22eff52 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xeae44104 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x17a3b776 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x1f830c81 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6364bc0e nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8a135a11 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1fc43d68 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3fe7d042 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x586b68f8 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6c61d1c9 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8552bd4d nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa4406cf2 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb322edd9 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbb51038b nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe70f25fc nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xa0f5c687 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xebfe107e nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x63895cbd synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdc426711 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1160f914 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1d856c74 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c43676f nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x32127b0d nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3a380be9 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5504a5e4 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6dad3dad nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x830c6c90 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa2213005 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa914fe4d nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd0327e25 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd5d22507 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd8d7f22f nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd92e35da nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdcb6051a nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe81f4a79 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe98f92d5 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x149cd460 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5554e66d nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x80060290 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x87b9d994 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x87d93ead nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x950f8b33 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb7ce524f nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x07e11e33 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x4fa4df9a nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x98e4c063 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x3638e496 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x1b07df4a nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x9cbc45ba nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xae970229 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x2e38af9f nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x67202fe7 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x94763c98 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa34e5f83 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa9d473bf nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe229cab9 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x0eb9c4fb nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x5db5258c nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x6b8c4d9e nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8f9257cb nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xfb4ff344 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x151f19a9 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f1ef70a xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x498522b0 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5ba22649 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5d074b17 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x62218769 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6cb77ab6 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7677b2c9 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8d3a5c52 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99f1b3f3 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd70e6ceb xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe38313bc xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf6d048fb xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfaa55ce2 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x1af87e89 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x4d1d865d nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x730ad00a nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x0bcdce9f nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1a1db59a nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xdc4bdd00 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0e3a9c46 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x26eff703 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x73df499d ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x759ac7e3 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x770f6acc ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7d469c08 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8f1664fe __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaa38786b ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcd2091e6 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x009c2058 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x09cb1bd7 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x205201f6 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2e979fee rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2ea4e502 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x35d6f762 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x37acee86 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3c538972 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4721598a rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x60c81ad8 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x71ef068f rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7468e808 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x7f7e957b rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x84cd689c rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xac619833 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xb6fc8880 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xb8a687b4 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xc87957f5 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xd37c08f4 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xd89d3714 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xf330d2ef rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xf34037e4 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xf9c8b479 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x33297db7 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5a603020 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x05f9635c gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc0ffe2e6 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc2278b00 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0014e838 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x012481d9 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0198b640 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03fce430 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03ff20bf rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x060035fa rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07ebf567 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0878296d xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ae28b3b xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c911007 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0cd32a9c rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d6f61d8 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da8b029 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0daa73ff rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ff834eb auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10602e94 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14c56ffa svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16236629 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1720d682 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17bb5297 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17cf0766 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1919f443 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aff5a5d sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b98d898 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d0938a3 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ec2ccbc rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f10df0d xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20fa365a svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x239cf8b3 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23abed06 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25dbf307 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26880d4c xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c2f817 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2713c3aa xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x276efb67 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x284928c9 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ab2584d xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b51cb80 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfef0c4 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fb88e8c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3100e919 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31fcb684 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x350fc500 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x359d6a45 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3631e5c9 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x366a352d rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x385a48f9 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x385bae36 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bb73c27 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bf2b79f auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa94909 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fc436be xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40335fd6 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x403bf365 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x411fd884 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4385b652 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43d14301 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4420e2e1 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45fba36f xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489b98d7 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b142184 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b71ea90 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ba083eb cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ed9206f rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f1ac777 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f3766f9 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fba3fb3 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50b84a00 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5191a3ba rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51ad61ac svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52295c40 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x527a52b8 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5495bab6 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x555b95b8 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57631680 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59fe7503 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a3b2da9 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b3d3dba svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c01af8f put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60885e0a xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x620a4fc5 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64053e73 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66453a08 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68510cb9 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a71d1e1 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b8c1594 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb06545 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6eeae41c rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f38ea1c xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70a4fc87 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7200bc5a rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72d51c59 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7358e631 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7408fe57 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75addac9 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7721e193 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77d97f7a sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cb5424 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a765866 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bc8da24 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c161335 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c2bdbbd rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c3e4dea svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8091aadc rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x819f021a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83924dfb rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x864f6379 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x869fc254 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88e1a4f9 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ba320d3 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ddc5c68 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x919b0dba cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x925eaa5b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x926e3fa1 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93f515ad rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94741cd9 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94e33c84 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x954a2613 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95c78593 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x961bfe3d xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96c17c98 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97b42544 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x985f679e rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98821f08 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a483c90 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d3c7c36 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d6a840d rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fae0f26 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1a97cf5 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2dd5be3 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa48e2b71 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4f88a25 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5218022 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e8310f rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaafdbec8 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7f9f86 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadf80d07 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadfdee46 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf16f775 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf4bf184 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf72e366 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb001c1f8 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb106b986 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2ad3a27 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb32a3fad cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3d407f2 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb487bd82 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb57557b6 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb631053f svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9031181 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba375960 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa6e53c rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbb80288 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc96eef2 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbde66170 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf012155 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf3df7cb rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0d9def5 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc40f5b30 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6373d1a rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc66d9f4f xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8cb07fb rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9399f8b xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca0825e4 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca5818ab rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd341d1 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcedf8a04 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf62caca xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf6ac1a7 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2e3b2e5 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2fbe8aa svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c42a69 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd88bf129 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda68d735 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb9c55c7 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbd3a355 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdde9210d xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf8c0263 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe40cc633 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe412ffb6 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4af1a1f rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5f875f2 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe68f6068 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8f61977 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb4bb85e __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeca8f415 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee7513b7 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6022709 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf74f03e9 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8712e32 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8754690 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8cc6473 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfeed9f5c svc_set_num_threads +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x16ce17b0 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1c1aff01 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x23e8c7ad __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x351dca35 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x46058765 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x473c53b7 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x551a2e83 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x603001b3 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x69b021e2 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bbe113f vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa67da738 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xafacd8f5 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdc9eba09 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x081b9192 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x12ade2d0 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x141e5807 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x17f1d487 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1a6a3d4c wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3d11840e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x528becbc wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6a7ddcf7 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x82b35358 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x85299bf5 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb18d71a1 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc27e993c wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc4fddc3c wimax_msg_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03a94fe4 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2c6cc06c cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2f9f4486 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5635cfd9 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x748eb579 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x80c3ce6c cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8cb390cb cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x92ee4362 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x94e5ff93 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x95376652 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x969d7c1d cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9d7e81a1 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa80cc6b4 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5298a11e ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8bc39f17 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xcef82f94 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xfb73257b ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x89664a7a __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xc3f71a3b snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x135ae94c amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x288a5cce amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x7d83465b amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc9ea3467 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xcdc3ba7f amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xde9fa0c4 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe1618360 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e0f6ba8 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x104cec9d snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14ec58ea snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x153f3708 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d6498ad snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20afb4cf snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26df1193 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c5dbd24 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32dc746b snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34230d2b snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37fb6fe2 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b0e40d4 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c2d1f02 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3dfc0ee3 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f100eb3 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4171ec27 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4374a22c snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44c5434c snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x464e2e53 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4edb9813 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x507d418d snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50afa133 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x523199ad snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5974068d snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5a01b8b9 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60ddda20 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61f0233b snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62722ef8 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62a8cec0 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x659fc382 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77f16376 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79ef2f52 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f4873a7 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fab8ad9 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x846a8dee snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87d8d1e3 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8b36c818 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8dd301b8 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e3e8436 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e64f071 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x906dfcdd snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x968dee33 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x972d49ef snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e10a535 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e761590 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9eb1a4ec snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f91a5f4 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa6cde624 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9ee2138 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7000476 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbce94413 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc08c941b snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc11898a8 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc3b83e9e snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc3cd8123 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcae29911 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xccc29603 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xce6a82ac snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdbc347e3 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdc62d900 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd032d1c snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0fea50f snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2edb314 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3ed68bd snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe80987ac snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea7006d9 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee112771 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf029d042 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6c7b6b3 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6f5c07a snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff3d9354 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1a383bfd snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2080d10d snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x53491399 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x57ae05a7 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe93357d5 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xeb327288 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0116394b snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0247c039 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06a36f58 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0827299b snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x095abea0 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c90c570 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d5fd131 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1401eb07 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16d83cfb snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ced9542 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x203e300f __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x208bcd9d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21569144 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2242339f snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29d50dbf snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29fed4df snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c908842 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d7dcf7c snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d9c8b1e snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff43f0e snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x303de7ed snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x303f4d80 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30b650c9 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x313061ff snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bb1cfd8 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ddb3988 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x442ae77b snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45930a6a snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x477ce587 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a1151cd snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d601065 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dd7c609 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ef0e81c snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x529f3eaf snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55475c9a snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56ae6e57 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a2c2a35 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a48dd24 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dabe2da snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5de44399 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e279b3b __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60533952 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6245a95e snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62996f92 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63c750eb snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6446f1f8 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65aaf0d9 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65ec248d snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6763b34b azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x687b3cbd snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69db0ca6 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dbf4809 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fb29f2b snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7343634a snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7795259e snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78c4a2fd snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bde442f azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d3933e7 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f0219dc snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80c1c340 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82f4f04b snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88156dfd snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a045ef9 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f26f111 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fd65c16 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ff02c44 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93c3cb7f snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93eaf04b snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94518152 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94681fd4 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9518dbc2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x951af5a9 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97542142 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97ebaedb snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x997b6c33 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bb29231 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bc98598 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cf73072 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d4d5a18 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa22bce23 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa28cc542 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa717acc6 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa74bedc2 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa780b1df snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae3ece43 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf971067 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2a1ed10 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3cdf2ba snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4c1db05 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7d0fc5b query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb807d35d snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9c958f4 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd3ae3d3 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf562503 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0419d89 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2251d3f snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc32b2b35 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5899f4f snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5b7f280 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc64575af snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6dfa6a4 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc825abed snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc94c90ca snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccdf0510 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce8ad221 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4689f09 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd471be94 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd909eb7e snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd3c3b95 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd43a166 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3b87c8a snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe505e3f7 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe59707ad snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8ba359c snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8bf0934 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed9731fb snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf10cc784 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf22ddc2d snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf288348f snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4963e40 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4d4a391 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6498c44 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf78293f6 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa9e2ed1 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1493d94b snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2abf9231 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2d9d8457 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4e9ef66c snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x52d38634 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x532634b5 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5544820f snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7b08b9d0 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x80da60c8 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x849e26a4 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa64aa91c snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb5f73f15 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb8982cb4 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb907eb5d snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb9963828 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbb9f6eaf snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcc493f5f snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xda2fcc32 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xde5830d0 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe9e898b3 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf812d708 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x44a27b40 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa6a27eb5 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x61be612c cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xc8e9190e cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x9028f32e cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xc4f07472 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcb513b1a cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x58147239 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xe37d1e14 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x409a7b63 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x8005ce5c max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x02ca2b83 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x22043a44 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x7b50cc3d pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf8d8b362 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x6e7aa00c rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8a3b4ef0 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x990b3dba rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x3ecd12e2 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x1ffb6d57 rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x952df541 rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xdc9e2327 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x06fed8d8 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3fb6eb12 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x639587b0 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x74b27834 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe622a022 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x26593492 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x27423e7f ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xf818ad07 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x058cc621 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb1586a73 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x7a7c23de ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x07bb494f twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x1fa73801 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x72736927 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x8ad1719b twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xba21fc96 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x37ed2371 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x3ad9ab98 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x47483f31 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x77a4508a wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8157d685 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8e63ff1b wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb88bb56e wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xbdbe13f3 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x25294d31 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3b25ea90 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x80c3b18b wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x8c25a4ed wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xefc2eb0c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x37338488 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x1607b3b8 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x5f139a32 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/davinci/snd-soc-edma 0xe58c69f3 edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xa3af2505 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xec7d2fd1 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/omap/snd-soc-omap-mcpdm 0x13f4022d omap_mcpdm_configure_dn_offsets +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x429038e6 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x466b06ef asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x546f3be8 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xbcc8e0b2 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0xd967bbd2 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0x776c599d idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x291d8683 samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x2af6850b samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x1fd80393 tegra_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x31f3a503 tegra_pcm_platform_register_with_chan_names +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x39a1308d tegra_pcm_platform_unregister +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x16e16faf tegra_asoc_utils_fini +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x39829759 tegra_asoc_utils_set_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x5231e52a tegra_asoc_utils_init +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x8ec46825 tegra_asoc_utils_set_ac97_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0x0d54c9b9 tegra20_das_connect_dap_to_dac +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xb52cfca4 tegra20_das_connect_dac_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xbced7431 tegra20_das_connect_dap_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x04ecb471 tegra30_ahub_allocate_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x55a40206 tegra30_ahub_disable_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x5d7237ff tegra30_ahub_set_cif +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x6fe20143 tegra30_ahub_set_rx_cif_source +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x72a91a91 tegra30_ahub_allocate_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb419329b tegra30_ahub_disable_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb4a9367d tegra30_ahub_enable_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb81bca9d tegra30_ahub_free_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xc78c7125 tegra30_ahub_free_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xccb67e55 tegra124_ahub_set_cif +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xccc98372 tegra30_ahub_enable_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xe549513a tegra30_ahub_unset_rx_cif_source +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x029128e3 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x02fb331f line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x30675047 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x334ef848 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x37fb183b line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x83a05fb5 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb4a288f7 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc5b4c1cf line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcc16f5f6 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdb7b0266 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdedcfa0b line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe1a77c49 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf26d9cf5 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4c88f49 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfbcb93a7 line6_send_sysex_message +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000c3a6b class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x001aff73 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00587706 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x005e6bb6 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x00717a96 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0078525c usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x0080429d nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x00855fb1 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x008e86f5 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b0ac51 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x00bcf2a8 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00d04e7c of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x00d8d14b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x00e17d38 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x00e5be56 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f2ecea pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01066012 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x010fc95d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x0113f867 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x01154a29 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x013fbff1 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x014c1ee9 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0161ffd1 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x01725090 omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0x0173a2de clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL vmlinux 0x0194266c register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x01a2fcbf of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x01aa92db scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ed13f6 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x01f1f3ed crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x01f33faa ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x02150ee0 cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0x02196c34 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x02285faa spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x023c322d ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x02a6f3ba blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x02b3f31b blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x02b68f81 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x02bbef7a snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x02bdc161 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x02df9887 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x02f256bf ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x02fea9d8 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x0304f17b irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03234573 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x032b022b regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03650c30 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x036c6eb1 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c2a1f7 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x03dd05b7 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03fb173d regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0426dbc9 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x04376ff4 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x043da7e5 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x043dac49 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x045ae782 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x046393be device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04778d38 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04a9e507 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x04c4e25f dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x04f53485 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x05105e02 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x052327dd driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x052b5f95 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x053f4959 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x05458e8a iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0591bb7a snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x05ae4fd9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x05ccc6da power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x05e02821 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x05ee8e7c ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x05fcefb0 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0603c9fc page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0651cc0f rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x06692d9b crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x066fda08 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x06877657 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x06a27f8d da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x06a4cd56 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x06af4fac __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x06bd52aa cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06eedb2a sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x06ef2a1f ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x06fd553b devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0711963b of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0718ce2b usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x073889be mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x074c1c96 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x075bff08 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07689126 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x078def53 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x07a59d48 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07f57d74 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x08138d05 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081a16a6 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x08324a14 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0x08326777 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x086f0300 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0878cef8 ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x087c5ba3 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08af06f8 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x08c7b364 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x08d0d909 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x08d5f9bd kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x08e0fa48 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x090deeb9 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x091e77b5 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09418308 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x094f53dd device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x09661e65 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x09b07d6f i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x09ba032f remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a1deb72 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x0a2579fb pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x0a3525ed register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0a4582bd mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x0a54ddf1 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0a727a62 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x0a7bef11 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x0a850b4a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x0a87306f usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a93852f irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x0aa07af2 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x0acefa49 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b449340 omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0x0b506aed usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x0b7abb8b shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b7d5db9 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x0b7f0551 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd4d219 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x0be73568 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0be9b95e pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0x0bedeb8c led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x0bf1d5d4 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3d4d4b tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x0c3e4440 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x0c507810 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x0c6a14fd crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x0ca304a7 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x0cb43122 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce4b335 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ce90c55 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x0d03af6e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x0d0c2311 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x0d119a28 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d34b551 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d357c14 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x0d3a8d05 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d780707 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d9f0aeb ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x0db9c949 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x0dc8c81a vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x0dd5a5f2 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddba570 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0df601fd regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0df80acf usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0dfca115 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x0dfe8ac4 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0e22acfe pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x0e23b720 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x0e3ccd87 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL vmlinux 0x0e870983 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0e8a574a cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0e900f9a gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x0edd7dc3 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x0f079440 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x0f0cc03a snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f4a368b ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x0f6adc53 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x0f71d09e ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f72c278 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f78c226 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x0fcd2aad dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x0feaf396 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x100b29c7 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1031f0eb crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x10401372 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x1063d6de debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x109386dc transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x1098d67c bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x10ab1e0d ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f5924d clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x1108bf7c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x1131673d blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1144664c sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x11488c90 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x11603cab regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11764acc omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0x117baccc devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x117fce8f ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1187e99c regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x11993f9d snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x11b59574 of_css +EXPORT_SYMBOL_GPL vmlinux 0x11d4129d ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11ed21ed of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121e0c7d of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x122fadaa blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x124ab395 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12756715 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x12873c77 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x128bb374 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x1297f8a1 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x12998071 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x12b037ca dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x12b60b5f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x12c490b8 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x12c89ad4 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x12cb6926 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x12deda17 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x12e1aeb2 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x12e8e203 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x12f50829 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x12faa170 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131d8e2f iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1325c630 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x132b3d9c dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x13397bbc mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x13464deb max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x134f8ad2 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136f63aa iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x137649bb task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1381d4f3 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1384f880 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x138e33bd cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x139350b2 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x13984ba7 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x13a14d6c dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x13a39532 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x13a50643 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x13a8304f cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x13b1cbe0 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13b9e050 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x13fb9cb4 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1400549e cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x14328390 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x144d598a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x1468506a pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x147d7e20 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x14a98a21 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x14f3f311 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x14f4dba6 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x151ea30b led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a48b8b pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x15b33bb9 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15ccd163 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x15ce1899 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x15d87448 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x15df6686 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x15e27a4e snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f2e7ef of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1609c4eb init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x161e7246 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x162bde8d dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x16325d6d ref_module +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16549922 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x166cfeff skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x1678ae09 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1688c9b0 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x168e54f5 usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x16b95318 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x170b67dd omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x171b5be4 omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0x171e95aa simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x172c57ac __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x172db9ba ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x17405494 mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0x17406672 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x17454047 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x176324b4 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1764e066 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1770063f scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x17709640 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x177a84be ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17926459 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x17ba2f91 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x17cdd37d put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x17ede6d9 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x17f4e80c sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x17f7cc63 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x17f8fdef pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x182bc568 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1847f53e perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x184f40a0 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1881200b adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x188b6434 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x18a122e8 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x18bb987f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x18c6f88f usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x18cd79cc snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x18f80596 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x1903bda3 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x19164e91 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x191d639a mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x1927a4c9 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x19389d8d syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x193a954b snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19673a03 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x196e423e hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x198c5b1f snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x199865a2 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x199aba63 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x199ad0e2 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a7508b ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x19aebcbf skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x19cf2110 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x19ee2318 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a0f7a3c usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x1a15323d amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1a184144 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a5103ae omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x1a618bd7 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1a66a657 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x1a6c692a put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aab1a4a cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ab4674a watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae5d5eb pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x1afe0fd2 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b10dce9 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x1b1bbf61 omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x1b26feb3 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b3a3160 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1b3ce549 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x1b49bae7 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b5ed82b devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8c10f2 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bba5e98 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd0e14c crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x1bde4f80 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x1bef4fb5 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1c27266e usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1c381a2b platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x1c5026b4 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c716881 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c826365 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1c846276 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cb8c480 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x1cbab932 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x1cc8169b ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x1cd2340d wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1cdf8762 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d26764a snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x1d27fffb tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1d3b763a of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7aeb11 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d852018 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1d88231a sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x1e0fef94 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x1e1078ea sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1e1de5a1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x1e2def4b ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6e26a9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7d6157 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1e802a13 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1e972496 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x1ea1cde9 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x1ea4b16c bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebcf16d simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edf574a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x1ee66755 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x1ee78911 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x1f3597ae uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1f3bbc33 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x1f645776 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x1f774f46 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1f7df5c5 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f927750 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1fc6f4d2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1fe132cc ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1ff6e8f4 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1ffe87eb inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x203af8e9 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x205db192 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x2069cbcf pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x20b18664 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x20b36efa devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x20cc3661 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x20dd23bd bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x20f4c572 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x21154dba fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x212e4df3 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x21476544 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x215da048 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x218f793f clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x21a23756 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x21a2a3ec of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x21a4a41a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b7512f crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x21bfd982 sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x21c2260e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x2205338a __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x2219fe82 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x221ce215 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x22223cc8 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x222f3e94 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x2234f6a1 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x223cefe8 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x2260f7a5 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x227339ed crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x22932537 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22d4b36c ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x22e27a23 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x22f0c34b regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x231911c4 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x234ee75d pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x235b4d42 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2364dc7f balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x237e464c skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x237f6201 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23911f05 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23bd5f2b sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x23bf41b0 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x23eb52bf key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24224dbb regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x244392e4 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2448a494 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x244c1899 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x24508fff dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x245ade5e device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x246a6d57 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x247d2980 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24840b10 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x24a2d7bb cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x24a63862 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c257a6 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x24d14029 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2518a6ba ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x254bc803 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x2563a780 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x257438f4 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25a86c3c cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0x25bf41c3 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x25bfe511 tegra_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x25d4afea extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x25e08933 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2603c24f balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x2612ef08 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x261361e8 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x2621987d irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x26225d53 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2631e84b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x264835bd dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265e4792 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x265f7397 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2676ffce of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x2687e9a3 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x268d6758 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x26911119 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c7498e device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d4910f dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x26e25536 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x26ee0486 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x27231292 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x273e02fa thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27453924 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x274b7e6a thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275b383f ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x275c5ab6 user_read +EXPORT_SYMBOL_GPL vmlinux 0x276ca6d3 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279034dc nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x279109c8 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x27931460 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x279a3cb7 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x27a7d6f7 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c625eb ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x27cc0f39 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x27dfb059 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x27ecb9c0 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x27f232c6 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x282429c0 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28346f82 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x2848644f rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x284a5d41 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x284c18d9 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x28772c5d sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x2882fae1 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x28d2547a dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x28d6da7f seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x28d75ad7 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x28e61747 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2908abec regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x290beb6e ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x291b53cd platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x292138e4 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x292c512b wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x2934042e snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x294e5b5a usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x297cea51 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x299872df crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x29a3cf7e xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x29c525a3 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x29daf63a snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x29f8af05 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x29f8d421 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a16fb8e pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x2a1959ed __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x2a370916 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x2a3aa0c8 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2a3e6b28 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x2a4b943b ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x2a4e5524 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x2a4ee348 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0x2a514fd9 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x2a53195f usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6abd01 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a6fcb2e __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2a77f804 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a816a05 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x2a906464 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x2a95c45c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2aaf1f9c crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x2ab1bcd7 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2ac13e48 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x2ac46f86 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x2ad1186e get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2af85000 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x2b0a7560 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2b1ac1a9 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b1ea6d5 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b394439 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x2b3c3838 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2b4057e0 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x2b4494b6 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2b4ef746 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2b8c09f8 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bd95609 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x2bdbc45d regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2be801bc clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x2bea3fa0 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2c16a6bd devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3d792d sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c4c7c25 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7e2256 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2c8b4a89 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9d7c96 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c9fc31b of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x2ce14f6b crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2ce9cb6f wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0b5abf usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2d100c62 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1f242c free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2d2adb98 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4bf742 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2d52b786 omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0x2d584027 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d9c8901 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2db71086 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x2dbc2708 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2dc11512 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x2dc6800e component_del +EXPORT_SYMBOL_GPL vmlinux 0x2dcafd22 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x2dcf39f0 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2ddcef21 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x2de45870 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2deb88d4 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2e0a59fd snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x2e0a8569 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x2e1e2cfd snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e278f88 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e77e3d5 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x2e84a79f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x2e859287 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e96bc7f snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x2eb92506 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x2ebaafc8 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ecbfd0c blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x2ef4d512 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2ef7c475 snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x2f0877c5 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f238cce usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2f3a02a4 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4ae88f ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x2f65508d kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f78231a iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2fa1b21a dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x2fba6ba2 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdbaa90 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x2fe69e32 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x2ffb0b26 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x300d7c67 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x301d497d devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x30540366 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x30820671 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x3093d344 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x30a2b5f5 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x30a2cb92 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b90040 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30cf15b2 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x30eb3ba8 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3109db8f regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x310d64d3 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31582d52 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x31772625 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3178dd04 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x319525c7 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x31962dd7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x319dd1ba mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x31a4efaf sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ca8c00 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x31dd3d18 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x320852ea crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x3222f929 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x3247fc7c amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x324e60fd mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x32513976 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d71384 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x32d9b3f7 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x32de4ff0 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x32e89747 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x32f0babc crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x32f23b22 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x32fb9b1d usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x334627cb register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x334f5f18 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x335573ba of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336ab5b8 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x336bb39d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x336d5d61 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x336fec6a snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x33797bee alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x339c0dd5 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x33a8e063 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x33cb6d05 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x33cf60c0 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x33d33168 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x33ec226a rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x33f2eb3b of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33fc6ef4 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x342406d8 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x34316ef7 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x346aa525 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347a0210 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x347ec63c posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348c4b6b snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34e302b9 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35242ce2 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x352f4dfe irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x35359a01 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x35396848 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x353eeb30 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x3575ba06 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x357bb8f4 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x358ae846 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x358f692e regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a2dcc7 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x35a6a369 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x35aef629 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x35b0bc8f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x35be4f10 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35dd551c hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x35ea3ee2 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360cbef2 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x360fa966 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362213c2 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x362c3666 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x3649e576 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x367f8e2d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x369c2d75 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36db4c7c smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x36de35a3 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3722bb66 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x3723c2b8 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x372ea539 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x3732cc35 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x37371cde bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x373a3555 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x373e4297 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x37443f2f debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x374f5856 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x37b01084 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x37d9675a sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x37de8b3c blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x37e27033 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x37e5a7fc inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37ffbd1d extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x38049f1f vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x3821ecd0 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x382229c9 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x3830d953 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x383dffc4 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x385bf419 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3871ae09 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38c7d762 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38e62624 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x38f784e2 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x39244fa3 snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x3937bd64 omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3938f25a inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3941204b relay_close +EXPORT_SYMBOL_GPL vmlinux 0x3958513e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x3982779c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x398eecdb mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x3995c8b7 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x399ef128 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x39a0ce35 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x39b0cfdb dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x39c71236 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39cb05b3 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x39e5ddec spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ea86f0 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x3a0047d9 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x3a064205 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a3c714d mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a70e16a ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x3a8229b2 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ac0787b ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3adc877f gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3ae05a3f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x3ae36097 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3aeb67d1 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x3b0e1e5a inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3b1ffa67 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x3b3a29a0 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x3b3ecab6 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x3b4157a0 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x3b42472c gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x3b42ab40 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b7a0fa2 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3b7a1537 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3b853750 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3b87394b __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x3bc6b0ac __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x3bd38987 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x3bda230d adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c8e28da max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3ca31df3 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3cbabd70 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x3cc26b6a ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfbc580 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d499679 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3d7d97b2 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x3d8b7b1e crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3d9d3b1f mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3db62543 sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0x3db6b7ea omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x3dc4ef35 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3ddfd34a cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df6c2d3 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e31d9c3 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e51d260 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x3e574b94 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e89ef00 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x3ea6447d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3eb82bb7 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x3ecdaf40 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x3ecfa69a unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f04f095 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x3f11f9ee of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x3f1d0481 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3f27c1b7 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f586765 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x3f664fa5 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x3faf0260 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x3fc0b9c8 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3fd81bfd vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x3fe4d096 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x3fe7f4a7 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x400737cb inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x40345f09 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407a4e34 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x4082a9e9 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x4096f920 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x40a704d4 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40bc95a3 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e11f23 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x40e4c8ca pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4112c1c7 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4122e060 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x415c44fa tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x416822f3 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41c5274c __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x422c2864 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x424a3a66 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x425fc8cf nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x427d2cd0 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x427f975a fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42a548e9 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42d2cd42 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x42f7fa0f pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x4308545d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x4310a378 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x431744a2 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x433350b2 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x435d2d19 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x435ee026 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x437ba44f locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x43981c13 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x43a19df3 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a648e8 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x43c922d9 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43d3697e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43f9e497 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x4401129e regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x440a34d2 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4410dddb pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x443ae1c7 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4451a70f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448f7a25 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4496663b ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c5df63 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x44df504a dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x44f14468 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x450aa94d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x452ba1f4 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x452cce2f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457accae iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x4589ea98 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x458a640e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x4595167f spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x45a27e63 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x45ab7d71 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bcc3b6 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45e276f9 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x45e88e8e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460754fb irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x4610fe0f aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46129152 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46371a20 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46644326 ti_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0x46699822 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x466e5342 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x467b838c class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x467c8171 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46ab0ce4 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x46b496f1 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x46cf34d3 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x46de79f9 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x46ff0df3 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x470e6200 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472b8561 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47339af4 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x4743bcc2 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x47445f46 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x474ffd39 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4769a8db pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x478080b0 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47c6d7cb snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x47dce116 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x48135d0e of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x482c44b0 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x483bd45c ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4871fb7c __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x4877ab80 omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48949e8b snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x48b3ee87 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x48bdaf7a tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x48c82171 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x48d79313 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x48d99933 uniphier_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0x48de2f95 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x49166669 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x4917211d crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x49174786 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x491bdccb simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x491d7f1e __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0x49317c41 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x497c3dc4 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498af761 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a09ea4 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x49a37092 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x49b97b85 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x49dfe9c3 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f84b6a iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x49f8d7b8 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x4a017d54 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x4a1a407c ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x4a20cabf tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x4a266446 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x4a30176b snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a5dcbdd usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4a619b5c pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x4a6952e6 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x4a7cb37f usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x4a973e45 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4abf697c usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x4aebfe13 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x4b004537 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4b2bbc3a spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x4b4112fd dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x4b43435e __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x4b5954f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b7ed4c8 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b901658 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bbbbbe7 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4bc66e29 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x4be786e7 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c0ba78b regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x4c3232b8 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c36ab1b powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x4c44d948 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c68ec96 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x4c7509d4 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x4c837027 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x4ca08dfe tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4caa942f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x4cb5332c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x4cce71c1 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4cd92dc4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x4ce26b59 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4ce38795 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x4cfd274f da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d045f1f sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x4d356054 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d480510 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x4d6f0945 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x4d78fd48 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x4dc7791d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x4dc8fe4b devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4dc904b9 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x4ddfb3cc ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de2411e list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x4e0fb71c tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1361e4 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2a5111 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e33248c rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4e3f84cb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4e62d0de virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x4e68a5d0 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x4ec3d77d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x4ec46f17 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efcde0d srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x4f26ffde tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x4f2a29e6 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x4f2e5299 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f40625f omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5c5464 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6d3517 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4f6e66bb __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x4f7d2899 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f819f39 imx_pcm_dma_init +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9da6e6 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x4fbd29e8 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x4fd21f46 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x4fd53cdd regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe82365 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x4fee9fcc ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x5000a7bb pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x5003636f gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x5032f1b1 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x5037da77 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x504ac376 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x505023cb pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5078d9aa extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x507e88f7 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508eb50d screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50c99ab0 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50edf4be mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x50f1865a class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511e418e clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x51325645 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x515fb649 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x516b8eee of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x51788535 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x51855f81 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x51ba5685 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x51cf32cf amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x51d9e5a9 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x51ff51be snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x52098503 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52359992 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x523e0154 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x52429cf8 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x5256d9fc wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x526ee617 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52925513 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52af3147 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52c211b6 of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x52e53571 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5303a499 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x53093f6c disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x53198c85 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x532905eb tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x532aaf11 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x533312f2 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x53453160 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x534cfba0 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0x5355f826 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53a66e59 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x53b7f7e0 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x53c91085 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x53cff78d ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x53efb53b blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5416890e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bc172 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541e0589 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x54245152 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5432b59b pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x5434a78c usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x545fec86 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54649233 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54864874 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549bcc4e platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x54c9482a crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54ee9280 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x54f9d431 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x55056583 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x550a26b2 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x551936ce bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x5521eb7c bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x552d379c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x553005bb __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553fd58c sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55549d63 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x555efb94 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5572ee43 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x558da4b7 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x558e236f cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0x559cf39f regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x559d2c26 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55aa7a5b ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x55b81eda dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x55d0c4f5 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x55d1ec1b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x55d49675 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f8d5c8 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x56157c27 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563b7a7e md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564c0c0d kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566657c7 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x5668d45f pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5688790f snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0x568f71d1 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x56994558 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x569b2ccb rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x56a3f237 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x571122e5 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57442264 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x5766488f dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x5770bd6d syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x57870344 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57ad9e8b snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x57c093d0 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57cebf02 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x57d44a36 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x57e7184c snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x583dbcf2 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x58444003 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x585e4750 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x58656e60 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x58797d42 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x587dd36c netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a4f910 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x58b663cc device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x58c9d31b ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x591e518c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x5925f413 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x594b9c73 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5971ef86 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59e14f55 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x59e280db snd_ac97_reset +EXPORT_SYMBOL_GPL vmlinux 0x59e99f95 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59fd1648 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x59ff7cdd device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5a185da7 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a27d63e crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x5a4adb51 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5a670601 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a80c3b3 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5a9291bd devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5ab56c7a arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x5ac09b24 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5ad10b1d of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x5ad8fd93 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x5ae483ee __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5b00099a dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x5b2439a7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x5b2ca814 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b307f6c ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b4e185b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x5b571e59 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5b6362c0 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x5b731f65 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5b79030b relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x5b7f44a1 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x5bc8c48e i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfeb0e1 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c41e753 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x5c488866 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x5c51569a mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c595f05 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c724709 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5c78f0fa pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x5c98cb9b tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb08fb8 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x5cb21fa7 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc5a7c2 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x5cd2e4a7 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cfc1f50 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5d01da1d rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1633bb vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x5d327700 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d331649 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d54a2f4 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x5d54b3b6 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x5d5c3967 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x5d7522a5 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc333f1 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x5dc7d849 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x5dd43842 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5de5a79b mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x5df0b4c7 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x5dfb3bcc device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e738fc1 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5e75f619 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x5e772513 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5e7b5841 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5e9a1dc8 cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0x5ea24ba1 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5ebc72cf irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5ed4dc13 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x5f2937f9 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x5f3e2b5a gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x5f46e241 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x5f603d01 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5f6df8f5 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x5f8425eb sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5fb108fa get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x5fb181e3 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x5fd50b72 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x5feaf541 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x60042acf blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6019e5d8 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6060aed9 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a97f54 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x60dd29a5 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x60dea91c tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60f73a36 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x610cee97 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x61220186 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x613837b4 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x613b893c ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x614d05f7 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x616d819b vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x6193c2f9 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x619606ac dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x61a40dc3 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x61aae792 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x61b8da0b wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x61ebed54 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x61ee8116 cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0x61f15136 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x61fa8525 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622d8401 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x623fed4d regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x6244a596 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0x6250ad41 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x626aa242 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x627653de sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x62980895 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x62a2e281 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x62a4a239 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x62acf956 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x62c420c3 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0x62e548b7 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x62e7d12e regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x62f1f09a stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x62fe4cd1 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x6302547c pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x63070e66 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x634e2bcc rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6356a4fe cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0x6364c305 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x63791911 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x6384446c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x639e9879 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x63df4dca __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63f87cc9 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x64018a1e ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x640aa9d1 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641b796c device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x641e8b56 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x642101af devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x6424f149 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x64482491 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x6456bcdd ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6487b167 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6491ba3f ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x64a68515 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x64ab7367 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x64b3a9b5 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x64b964d6 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x64ba140c crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x64ecbf36 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6501acde ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x65073add xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x65097472 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x65169a1c snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x65275a2c mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x65427d72 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x65537437 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x657b7739 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x657e59ca netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c1d907 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f4729d debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x66034586 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x660c7f87 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x6610ce8f regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661cb35e da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x661f47aa fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x6627e8ec max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663d32e7 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x66431641 smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x6645178c ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x664f26b8 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x665fc248 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x66709fe5 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66b4d86b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x66ba3c08 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x66c65cb0 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c7a6be dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eb7661 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675cb02b regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x675f31f9 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x678abf80 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6796801d register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x679b778c of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x67b1a9d3 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x67bc3547 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x67c23747 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x67c89b88 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x67db1ff2 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x67e5a777 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6815eca6 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68201229 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x685b15be alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6865be67 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x68794650 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x68dbb8b8 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x68de9567 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68e66de7 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x690399ad snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x69180198 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x694d4e8d pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x6952be9c dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x695411b2 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x695cb147 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6962c292 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698e9296 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x699a3a3e usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x69cb17fd device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6a035c87 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x6a10eeae tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a220cc3 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x6a316264 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a56d1d9 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a64a6f2 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x6aae21e7 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x6ac44e1e ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x6ac78172 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x6ace309a blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x6ae3ed1b regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x6ae4a527 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x6aeafbf8 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b0553e8 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x6b13d361 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x6b175c80 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2c9568 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x6b44cf0d security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba34468 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6bd1f634 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x6bd8e839 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x6be00197 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x6bf56665 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c111755 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4c4450 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x6c563305 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x6c5fd1d5 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c99e21a of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cbfa534 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6cc0b3a8 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x6cc36bd0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdd4fdc dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x6ce3305d snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ce90869 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d556c71 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6d69706d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x6d802f5c vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x6d8f00ed fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6da416ff tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x6db5d2fb public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x6dc49d94 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x6dcc98b0 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x6dd08c92 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x6de23450 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1349f3 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e1e3ed4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6e2222df of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x6e2f6c84 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e4080e9 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e51eb10 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7b457c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x6e7d022f tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8bd274 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x6e9f7e86 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x6ea49fc4 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x6ec93045 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x6ecccd96 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x6ecf3e17 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x6ef81d09 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x6f07eda7 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6f0b59a3 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f24b344 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f347460 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6f477f8b regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x6f6868eb perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x6f709918 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x6f7100db wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x6f7799a4 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f92250e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x6f954a9b blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x6faddad5 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70160d5a stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7021dfcd sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x70389898 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x70526569 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL vmlinux 0x706e3d2e serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x707093b6 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a94e7b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x70bbd49a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e984d1 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7100169c tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710b0e3f disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7114544c usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x7118c7bf ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x71203439 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x71254455 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717c3256 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x718852ca serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x718c51d3 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x718eb4f3 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a60e7f snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x71d13218 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x720fd560 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x724b1f37 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72599c9d sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x725acf10 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72b4c923 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x72bbb806 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x72c00dd2 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x72cf7e2f ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x72d24922 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x72d2e767 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x72fbbe37 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x730b7336 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x73173082 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x73439cec regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x7353efe6 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x736bbedc device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x7374a6bd device_move +EXPORT_SYMBOL_GPL vmlinux 0x7382d386 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x738775f1 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x738a6205 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x73a3a2de ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73eb5df4 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x74017751 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x74168704 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745bcc2b usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7484ad11 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749fe9d6 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cb6276 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74e7c671 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x74fc6da3 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x74ffa805 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x751778e1 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x7522b354 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752812bd snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x753157f9 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x7559c940 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x755be3b6 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7563a5be component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x7564ef55 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x75727641 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x757cfa2f crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7584bf27 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758f2a53 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x758fd24b net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x7590c053 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75b4854d tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x75b4fa4b pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x75b63490 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x75cee742 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x76019020 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0x760abbda ping_close +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x76308314 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x7651372f dev_pm_opp_get_suspend_opp +EXPORT_SYMBOL_GPL vmlinux 0x765d8aa1 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x7660a7be of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x7662184a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x766ea969 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76879168 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76ebb9d2 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7720f86e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774f9701 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7775d9fb device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x777b0e5e mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x777ba7be blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x778f5fa9 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77ad7339 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x77bdfcf0 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x77c212b4 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x77cb5737 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x77dfd0fc aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x77e539db usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x77f13726 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7803afb2 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x78147fb0 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x782684f1 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x784d206d blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x784eb5a4 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x785a3136 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x7863df91 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x78768072 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7884a2ef usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x7898a171 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x789aea04 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b0514e usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x78c2c042 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x78f58085 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x78fe1dff extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x7917f601 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796f5f91 __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x79aeaa72 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x79b7a7f2 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x79cf0e1b irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f11e72 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x79f659ac __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x79ff0909 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x7a28f419 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a2f5c4d virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a538ce3 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a5dbd92 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7a60dd77 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a950133 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x7aa45f92 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac914ae fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x7ad09eb4 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x7aeeccbf sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x7af6aff9 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x7af8cc94 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x7b01b8d8 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b18cbea set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b1dbc45 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x7b40e8fb ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x7b519906 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x7b6148d8 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x7b62e29d subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7b7d86e1 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x7beb9ea9 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7bf8ff24 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c0edceb ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x7c2ec8ad device_del +EXPORT_SYMBOL_GPL vmlinux 0x7c32035e gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7c57a9b2 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7c662a14 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c8b84b3 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9ca0eb mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7ca2784e mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x7cbc705e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x7cc7af7f irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d1cce3f regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x7d376ca0 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x7d430a39 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7d43e639 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x7d492e6a input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5f8525 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7d6edef7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7d920e5d rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db77258 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x7dbf55b4 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7dc20900 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x7dc42ce3 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7dd03509 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x7dd6c86c omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dfd96f0 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x7e05e0df gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x7e2e55a7 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7e3f71e7 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e774f54 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7e8606eb bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea53854 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x7ebc0a5f inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7edd43ab __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x7ee10027 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x7efd9df3 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x7f216ede serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x7f4398e8 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x7f445c4e pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x7f502828 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f938453 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x7f9f45c5 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7fad8c99 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x7fadce68 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fce2b7b cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x7fdae655 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x7fee374f snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x7ff2f37f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7ff62fed usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x7ff90279 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7ffea469 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x801736fe gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x80356212 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x803b20cb devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80630fa4 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x80631e8c pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b43df9 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x80b6dc11 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e1cc4f serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x80fba99f usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x81091dd6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x810a13f1 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81229795 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x812c3cc9 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8167c0ca virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x81a23a26 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x81a8bae1 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x81b349df clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x81ed5cbd snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x81f91718 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x81fb55ff cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0x82256210 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8235337f iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x82601ec7 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x826807ec __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8272baad devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x827b381e of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x828ff74d irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82b2948f blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x82b434ed cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0x82cdd010 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e4231a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x82f86480 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83074077 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x830d5ad4 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x83186390 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x831cf338 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x832bc508 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x837eefde __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b1fc3a tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x83b58dc2 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x83bdb8d2 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x83c6c8a8 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x83d2a7e1 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x83e7a316 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0x84326614 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x844712df perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x844923c5 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x845afdf6 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x848405a1 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x848db017 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8494d051 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x8495da7e blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x8496da95 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x849e80f2 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84c9c45c ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x84d7d297 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8523960a nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x8527e2b1 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x8548c304 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x855586c4 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8557ad2d devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x855ce194 mmput +EXPORT_SYMBOL_GPL vmlinux 0x85700242 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x85929534 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x85bed8b8 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d8e543 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x85e49dd9 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x860ebde9 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x861aa292 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x862511dc dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x862aef57 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x862fc962 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x864d90d3 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a06ed1 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x86c99f69 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x86eea22b usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87038f41 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8710b987 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8717df8b __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x8729e5e4 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8730b315 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x87325a89 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x877bb1ef skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x877d7f66 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x87830d5d security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x87aebb6f ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x87d889bc mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x87f10ade tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x87fbeb3c task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x884e0ec8 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x885bbf0a crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x885e11a0 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x8867bc25 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x88893b6e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8889e3e3 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c3b7da snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x88c790ca class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88d27dba led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x88f80cd1 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x8912da03 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x891f44cc snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ee7fc crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x8938456b mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89710f06 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x89a7dcf8 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x89b47cfc led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cb37ec pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x89d06fa6 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x89f8d4c8 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x8a055090 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8a36fc26 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x8a3c6190 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x8a3f631b fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x8a4257e1 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x8a4d697e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a595491 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a7067ed ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a8763b0 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8da0a0 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a92f782 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abcac43 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8ac49b99 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8ac9244d mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x8ad2e292 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8ad6ffaa inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x8af4d67a security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x8b07b7f2 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b29a8dd class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8b44c961 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8b593963 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x8b621a51 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b62a137 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x8b6e30cd snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7bf5ad usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b9c9d83 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x8ba49734 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x8ba701ba gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bb3fab5 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8bb47bc1 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x8bcd779f genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x8bd1d7b8 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8be14a22 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x8be54511 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x8bf6c35e regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c3cb929 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c4907c2 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8c60a4d8 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x8c62aa7b dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6e75e0 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c80980d clk_register +EXPORT_SYMBOL_GPL vmlinux 0x8caa2644 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x8cb587c7 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8cb60d80 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8cb8b14b wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8ccb769f pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8cd96bf4 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x8cda2a54 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8cdd05af dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x8cfa972b __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x8cfeff7e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x8d008b4a pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x8d047902 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d17e2b2 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d35b4c0 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8d57441c mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x8d5b785d __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd046 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x8d77cd81 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0x8d82b2a2 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8d9947dc cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0x8da06a6d pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dd38ed8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8e018c09 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x8e226108 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e32243d ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x8e3b8a98 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8e42e821 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8e48d978 device_register +EXPORT_SYMBOL_GPL vmlinux 0x8e494b3b user_update +EXPORT_SYMBOL_GPL vmlinux 0x8e5d7088 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e888de1 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e99e14c usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8eb460af of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x8ec068fd tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x8f014638 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f184ac5 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x8f1c0eda usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8f2e3c88 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x8f6a7103 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f930eb7 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x8f934383 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x8fad3527 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8fb43ea5 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8fbc9930 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8fbefc30 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x8ff15c21 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x8ff4a26c of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x90223c96 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9055e4cb led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90851101 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x9094bf09 component_add +EXPORT_SYMBOL_GPL vmlinux 0x9094d3b2 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b44a1e regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x90b98728 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x90bce523 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x90c7e135 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x90e80d84 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x910007af dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x9100ac40 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x91276f6f __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9132a892 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x913efedd thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x916148ed usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x9173db18 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91918b8a __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x919787cd devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x91ad0382 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x91afc125 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x91b4dc96 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x922aef85 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x92405572 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x92448c24 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x92474731 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9270c27f regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x927e54b2 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x929da15c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x92a5f832 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x92accbf3 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x92b4576c snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c68a7c xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e2a9a2 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x92e89d99 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x92efb04c usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x930fdb4d alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x9318b88e amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x931cbb7d snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932ee5ad ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x933e4550 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x93563c6d pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x937602b5 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x9380e8e2 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x93c1d285 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x93c511f5 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x93df42e4 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x93ff2183 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x940e9985 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94393e76 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x943cb187 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9459ad1a nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x946ace04 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x947404e8 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x947909b9 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x94810487 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x94a2bd30 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x94a2fca1 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94ad0b46 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9508207b crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x950df524 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x950fba01 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x9517312d verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x953ff01f extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x9559e26f reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955ec204 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x9582d701 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b039f0 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95efc225 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x96082a15 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x961cf87a adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625ab12 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x9642c14d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x967c11ea shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x97355d91 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x9747ec6a alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9767447a xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x97689720 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x97913a07 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x97a4ed1b tegra_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0x97d048c4 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x97d3f4b2 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97fbab61 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x981a09c4 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x982a75fc do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98583b34 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x986c68be blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x9872c5d2 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987a1ce3 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x98890fa5 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x9896a531 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98a94fa1 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x98a9707a devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9903b77f sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x990568c3 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x9915f57e device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993ee3ca clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x9942a1d6 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x994dddf6 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x995344b6 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x99559d37 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995f6391 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x99620759 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x9962a8fd serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997b7289 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997d4ef7 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99927c1e skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9992a860 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x9995cd4c sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x999fd14f wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x99b038cc usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x99b0d5bc cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99b3ada3 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x99b3d8d5 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x9a07b565 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x9a0abb5d device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9a0c2c07 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a253c7f usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9a2cd106 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x9a5901d6 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x9a75f920 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9e05a0 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad72e73 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aed07f0 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9aed4684 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x9b133ff7 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x9b1774d5 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x9b4966a6 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9b88500f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ba997b9 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9be1cd33 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c2008c6 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9c297370 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x9c38306f ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x9c3dbd3f crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c4da65b hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9c595235 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9c988c4c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd25849 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9d020324 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x9d1a326d crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9d1e2dec dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9d2cd837 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x9d5c467e blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9d746094 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x9d75078a regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8b68ab iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x9d8befeb ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae8d6b alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9daf20ab device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x9daf6f3b platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9dbadec6 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9dc323ca omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x9dd8eddf sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9de2f45e _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x9deb2e03 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e320f01 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e50bc60 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x9e5f0326 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x9e968890 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x9e9b302e get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9ea71e30 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x9eaa7fe9 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x9eb1da06 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x9eb6d9fc rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9ed00bc0 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x9ed1b1fe usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eef7e2a snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9f368116 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f3a609a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9f418063 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x9f4be304 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9f6a6cb8 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x9f863ece gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9f8cedec irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f9b3eb5 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x9fa42c06 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9fc1bf72 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x9fc70bc2 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd3d1fb gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x9fe68eb0 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa0660621 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xa091ae01 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0xa093d919 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xa09b6dc8 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xa09da48f gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xa0ad24f9 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xa0ba32c0 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa0c61e74 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xa0f4bccb pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa10809a3 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa1264be3 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa161c2cb i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xa1792f21 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xa181a87c posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xa181e4df crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa183a20d relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1b23a80 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xa1b57809 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa1c50859 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa1c6c669 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xa1c9cc6d crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa2604167 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2b9a17c wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c13759 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa2c1b536 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xa2fbfa6c rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xa31f700c crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa34f9b33 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xa35e2826 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xa36c9839 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2a102 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa3ab6a10 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3cd4a2f snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xa3d5c4d4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xa3dba14a ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xa3dbd362 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa3e4e16f gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ef8e4d dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa45977f4 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xa45a9bf4 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa45f337d tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa481d0bd blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xa4aff2cc key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xa4ccc95c inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa4dc8396 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xa4dce435 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xa4e25f46 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xa50b8e4d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xa55a2c2f ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0xa5820472 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xa588bd96 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xa5892088 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa5983738 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xa5a8ff02 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xa5b717e5 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa5bcc8ee of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xa5c5db2c spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xa5e396df of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xa5ebeda5 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa5ec0310 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xa5ee6de1 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa60b7430 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6266c4e alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa63fef4e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa64fd5ac regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa65dc3f9 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa679f952 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0xa69cd8fe pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xa69f64ca tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ba65d8 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xa6cf7ee2 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f5fce8 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa6fbbb48 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xa70cb6f5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa721de2a usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa72b0402 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xa749ba4a of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xa76f9642 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa7818672 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa78861a7 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa7bf31ca __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xa7c46cab uniphier_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0xa7cff15b gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xa7dfaea4 cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa7f0ee60 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xa7fc1734 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xa80b5fd4 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa8174801 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa81b1e5b tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xa820ed36 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa8307570 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xa839bd6d virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xa846c827 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa856399f irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa8577905 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa86787ce pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xa868a033 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa87a24ea class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xa8861fb2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa8932b6e raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8c6ea03 sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0xa8e55149 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa8fc38e1 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xa902e605 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xa9125b73 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa928116e dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xa92ae327 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xa92dcffe __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa92e3b3b wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa9482b74 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa94c56ee to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa952db59 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xa958daf8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xa95ba5ae add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xa992e2ea posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa99ab3d4 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xa9e05660 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xa9ff1714 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaa03042e __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xaa24f282 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3130b2 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xaa36f179 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa5dd927 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa73ecb2 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xaa781482 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xaaa4e992 omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaad773ca ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xab117ed9 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xab22bc67 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xab56b699 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab762086 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xab7f9d3d snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab91e368 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab9ac198 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xabb73f4e spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xabc4a739 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd0ffe0 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabf51153 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xac0438cd tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xac07155d scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xac1a6b49 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xac22c5b3 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xac2bb914 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xac3617b6 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xac405d89 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac6bbd51 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xac8aaef3 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xac927924 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xac9549c3 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xaca7fade msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xacb23957 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfec2da tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xad025598 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xad1508cc ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad249a6e ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xad28e427 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xad52d41f of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xad6ba1fc ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xad79b780 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xada7bdcb tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xadae8fb3 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade64824 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf8f5df devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xae040c89 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xae11196b component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xae14325a crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xae15a37c ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xae3e1b6b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xae4f9fc9 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xae58ecd4 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xae5c98e5 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xae63821b fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae743926 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae930e27 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaeabc797 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xaeaf3cb9 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0xaec76c00 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xaec9d872 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xaecd7846 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xaefcf52d fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xaf12bfb3 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0xaf246e4c devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf45ff70 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xaf51d0c1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xaf54a2bf usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xaf580346 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xaf5b0203 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xaf91da66 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0xafb0d97d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xafb2af05 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xafb3429b shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xafbccf03 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xafc99fe2 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xafdc6cf3 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb048342a inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xb04d1f7b perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb069e439 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0d23358 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xb0e1f1ea desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xb0e55575 omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0xb0e97027 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xb10e79e2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xb11625b9 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb11ae8ef crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb125ceb2 cpdma_control_set +EXPORT_SYMBOL_GPL vmlinux 0xb12f831e device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb147241c phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xb166f8d4 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb1710103 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb1719fe6 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xb1744a27 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb17f53ae pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1a1dd76 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b5ef70 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c054ff pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1d10f1c sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb1e20379 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e3de9b blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb1e64456 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xb1efcb4d do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xb209217c serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xb20ee03a of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb236e34f init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xb241c9c2 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28d8af1 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb29ae65c crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xb2b42d78 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb2c2c3fb uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb2df385b gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e81c96 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0xb2ec7b1f regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb302bbb2 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb3217031 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xb327d911 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xb346aff1 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb34b7788 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb34f0695 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb35058af find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xb361561d gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb368f66b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xb3743bc6 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xb3bc7407 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xb3c37c7e devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb3c46ad0 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xb3e1decc __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb3e2d2cb __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xb3fb451e stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb3fd7bc4 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb4095e2d usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0xb40c6376 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb4203aee of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xb4342392 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0xb44a7843 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xb468e1b7 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb46a6c92 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0xb476f577 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xb48bd41b ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb4a3c137 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bf3c6a usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0xb4c656d5 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5066133 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xb5095987 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53f7904 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xb58a746e snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59889d6 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5db180b ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60af6b2 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63f94d7 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xb64cc1c8 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xb669718b ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xb672c8a2 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb67fa27c subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb6aad8d8 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f40ffd thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb70526f0 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb72bcccb __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb740f740 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xb74fbb72 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb774a6dd platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb77fc85a devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb7a7eef6 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb7b1eadf crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xb7c6033f register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb7c6188b sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0xb7e07fd6 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xb7e5f289 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb7ed838f snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80b06f4 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8306d2d snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb842e32e snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xb851b6df device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xb8677d99 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89c7d61 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f98bba kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xb8feecf0 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xb9091b1e snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb911c049 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xb9157fa8 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xb915dec9 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb95621db blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xb968da40 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb98ccb22 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xb98d10e5 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb99adeee pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d73633 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9e9cabf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xb9ec6108 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xba22dd2c power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba66a2d7 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xba82f22b thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba99525e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xba9c574a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xbab8b55f ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaea01db rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xbafa46f6 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb037002 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0cba13 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb20ed37 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb320a71 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbb4c7570 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbb73fea1 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xbb782413 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xbb9c76cc sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xbba6f1ef tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xbbda35ec snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xbbde560c regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xbc274fc5 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xbc2b96a9 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xbc3204e4 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbc3d93df trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xbc4dbd72 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xbc5ff91b scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbca0777c fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xbcab351e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc2d403 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd222d5 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xbcdad888 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd18136e register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbd25a32e ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4c7d8b pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd689fe0 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0xbd71a591 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xbd984454 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xbdc57592 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbdc7baef cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbdcb52ae blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf4331f of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2c2cc5 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbe30153b snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xbe3754ca cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xbe439337 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe635529 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe763de4 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xbe7ffd8d snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xbe847e3c da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xbe8be143 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb5f496 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xbee11c15 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee4d156 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbef544ca usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf55350b input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xbf567432 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xbf64f217 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xbf6a14b5 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbf78a81a mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xbf80915a devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xbf82b5b7 cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0xbf845ce5 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xbf9e64e1 device_create +EXPORT_SYMBOL_GPL vmlinux 0xbfa0303c serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfd1aa83 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xbfe11ef9 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe915a2 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xbff3a82e md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01ee274 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc02262dc snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc029e269 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc049eb87 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xc054f45d put_device +EXPORT_SYMBOL_GPL vmlinux 0xc0769b30 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xc079ab27 omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b8bd0f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d687bd snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0e9dc60 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f44074 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xc10ef03e __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xc11a070d snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0xc120b4ec gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc1243238 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xc1257507 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xc1257c77 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc137581c musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc1391467 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc1398b08 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xc14f18bc sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xc15a61a2 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc16060ce pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xc165f790 split_page +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17cf317 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1b8653c blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc1cc4ab7 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xc1cfe0fd regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc1d243db pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xc1dc0921 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc1dde8f4 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc1e05595 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc1ef46c3 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xc1fc8b7b crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc21b3cca devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc21b3e21 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22b58b0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xc23357a4 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc252d755 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc2796dd5 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2877920 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc28f7a7f usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc2d1c4ae pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2f99858 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xc301e40e ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc31d177a dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc32c0e5f scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xc32ddf94 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xc32e4b7c phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc338a30e md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xc33933a3 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34cca0b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc38b9ab3 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xc3a0daaf smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3bf46d3 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xc3c4f84d phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc430cee3 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0xc44fc9b0 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc466f544 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4c5cc12 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xc4c5dc38 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xc4c64314 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xc4ccda75 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d4efbe pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xc4de548b regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xc4e749b6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xc51f96c2 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xc53958c5 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5455952 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xc54d8fa7 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58610a1 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xc5d313f4 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5e0dd66 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xc602daac debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc60929f0 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xc612ca8c pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6180406 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6425248 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc65e1228 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc673dd05 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xc676e60e regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6926fc4 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a2022d wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b431ce led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6c2b0ea mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xc6c3796e of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xc6c89d3b usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xc6d3ba18 get_device +EXPORT_SYMBOL_GPL vmlinux 0xc6d53d83 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xc6ec8685 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc6ed226f of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xc6f6d01e dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0xc70d1625 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xc721ee05 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc757e505 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc761fe2d devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc776fbb4 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc78eabcc ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc7920547 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a64890 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc7a823c8 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xc7a85877 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8033bc6 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0xc810581a crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xc8116735 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc81bc1ee of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc864332c dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc871670d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc87f9094 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc8835fa7 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc902d20c __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91616c6 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xc924bf8b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95c43d0 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc968081e __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc96f1bae __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc97c7334 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc98d6606 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc98d89e6 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xc9a238c4 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc9d79145 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f4ef06 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xc9f9159e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xca1bf832 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xca23d35d mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xca3feea4 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0xca6b2083 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca94335d pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xcab8bfa7 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xcab8e8e4 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac06ec2 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xcad390ed handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xcaf2261a ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xcaf6924c mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb305b21 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb53dac8 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb5b6ab5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xcb6b5bb5 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xcb87b6e7 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xcb8996f2 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xcb992bf1 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcbbb56e2 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcbc4d968 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf11890 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xcc04b384 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xcc083909 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xcc0c0049 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcc17f360 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcc1bceb1 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcc1e564b thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xcc1ede8d rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba77e dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xcc4567d7 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xcc68a5d5 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xcc7592c2 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xcc85e8bb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc927435 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xccab7155 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xccad9602 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xccc29c30 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xccc43b3a ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd308b6 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccf3acbe snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xcd80c4db pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xcd848a5b ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdaf8ea6 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xcdb5b09b blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbf0e52 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xcdc84709 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddc2694 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xcdef53ba of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xce3db280 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xce442d51 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xce4bc19f led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xce4bcb6c fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xce59200f pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xce6a5cb6 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce731565 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xce85bd3b fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xce96e390 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xcea7c812 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xcebd03f3 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xcedcb67d tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceef17e3 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcf40a955 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5c97a6 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcf6bbe66 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xcf7b53b3 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xcf835c12 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xcfaa0426 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfd71230 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd014a9d4 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd020534d scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xd026c674 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd033449a max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04ef6d0 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd0523ef0 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd072b020 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xd0757a19 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xd0762076 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd07808e4 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0xd09d041f fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xd0b3aa49 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd0b8766e scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d7bd02 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd0f08eab ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xd0f5e5c2 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xd1056aa5 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xd1227182 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xd1475da6 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1762a33 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1b6b825 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd1c8bff6 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xd1d00518 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd1d97fff ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd1da64fd dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd207cd0b imx_pcm_fiq_init +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2335463 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd255d36d pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xd2659410 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0xd272df02 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd276fb96 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xd27b9393 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xd2932b2a ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b23df3 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xd2ca28a0 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f36d85 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xd2ffc04d kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd307e175 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xd31dca19 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xd323ea30 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xd3277b78 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3427f8e dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xd343eda7 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xd34b3d89 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xd35409db task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xd35780c6 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xd35a6e7a arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xd36b0647 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd391c33a imx_pcm_fiq_exit +EXPORT_SYMBOL_GPL vmlinux 0xd3ed9dc8 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd3eead58 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0xd3ffa9cf sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xd401336e cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd412009f vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd437a487 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd44c3437 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xd46994e6 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xd4998b84 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xd49e29a5 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0xd4aab0d9 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xd4bc51b5 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xd4bd8db5 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d28d69 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4d7d4aa snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xd4e36d3f __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xd50dd675 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd5284c92 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd5416e42 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5695963 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd5823cd9 blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xd5982b82 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xd59cadbc iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xd5ad82fc dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c273cf omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0xd5c3947b crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd5cc0acf tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xd5dde4a7 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xd5e1d63f skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd618703b crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd619b8c2 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xd63150cc crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd6485a38 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd64efba3 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xd65f2968 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xd66a4a26 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68ba149 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd6a4ea8d md_run +EXPORT_SYMBOL_GPL vmlinux 0xd6a6a717 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd6e255c8 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd722d806 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xd729b08f crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xd73e10f3 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76eb9d8 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7869ed3 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7d3f0bd pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e07f77 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd7f08c57 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd7f4dd26 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xd80806e5 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xd80bfe0e skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xd813fbb8 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd81db11c devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd825ddf1 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd8564b6e blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xd860d2ea ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd86d71f8 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88f0ad5 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd8c18d2c __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd8d52a55 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xd8e3cad9 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xd914e487 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd9172efd mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xd91ae618 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd91be94a ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9476540 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94c00a4 find_module +EXPORT_SYMBOL_GPL vmlinux 0xd95ad56d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd974e9d5 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd9768330 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xd979099d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xd98f8039 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0xd99654f2 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd9a5e9b0 device_add +EXPORT_SYMBOL_GPL vmlinux 0xd9dd51a9 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd9e84640 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda1b1b53 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xda204e36 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xda468e65 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xda4bbd21 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xda4dd929 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xda530a6e set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xda5704c7 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xda5cb29b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xda642bf5 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xda7d03dd cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xda8c169b __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdabbe9b1 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xdabf8907 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xdaca8a29 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf05301 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb0a1f0a pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdb100476 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xdb152227 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xdb2375b3 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb6ebe5c dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba5b8d9 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0xdba7855a mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xdbbb1c37 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xdbe126a1 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xdbf2b001 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xdbf74194 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0eb5d6 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc2a271e page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xdc2bf40c scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xdc306608 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc45552f debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc5b62f1 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xdc7c7571 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xdc7fef20 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca276c9 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0xdca49358 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xdcb9685c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xdcca17da pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xdccaf772 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xdcdda0f9 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xdce08a91 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xdce7da08 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xdd0366e7 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd28a49d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd65e2f8 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xdd67d636 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xdd7513a9 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdd900824 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xdd974739 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xdd98a2df mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd9f6889 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc33f92 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddd6a7be devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xddf9ceb0 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xde02c162 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde22f1b2 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde3311a3 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xde36ead7 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde48c110 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xde576f7e dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0xde651f98 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xde795830 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0xde7e45bc device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xde9535d6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xde973961 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xdea9439c dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdeb0dffa device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xdebe59cc register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xdedba42e device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xdef87d70 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xdf00b732 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xdf0728e4 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf11e288 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xdf2030a4 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xdf255dcf memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf353acd snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xdf655928 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xdf76748c of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xdf85102f __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xdf876965 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xdf9cd582 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xdfa760bc bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xdfd30a2e pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01193a6 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xe018e9da snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL vmlinux 0xe0247b0e usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xe02a5b53 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe051ac1b devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe05b5c87 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe092bb0e mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xe0a36c84 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xe0ab9c4d dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0b1972f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c0025d gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe0ca8930 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0d95a68 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xe0f5af38 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe0fd80d6 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xe1115931 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xe1127a92 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xe11e7e45 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xe120f736 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe1442b02 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xe1465689 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1816030 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe1ac8da3 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0xe1c527a0 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe1d3fbd2 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe1f266cc posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe1ff5b44 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xe1ff7407 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe2402b93 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xe24ce267 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xe25ad393 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xe2820d7d iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2a51ebb pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xe2ae2d33 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xe2c9444c omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe32c2bb2 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xe3396267 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xe345caef crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe347c7c7 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xe353f0fc bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe35df176 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xe36ce24f arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xe3727eb1 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xe3822bd4 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3900949 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xe39c9daf wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xe3d9309d ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xe3de137f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe3eb5945 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3f0a6d3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xe3f953b1 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe3fe2fb4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xe4104a1e ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43705cb tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xe44db26c unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46b79d5 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xe47c686d max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe47da48f gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe499fa77 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xe4b6b4f8 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe4bccebf pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4c26aab power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe4c42dea platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4c9636b get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xe4c982d4 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xe4cb09a8 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4d77713 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xe4d88197 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xe4e9e466 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe523fc46 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xe5348d26 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe53972ef da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xe54b9d56 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xe554a5a4 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xe566f279 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0xe57b6a40 snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5a3f2f3 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xe5b566f1 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0xe5db762a tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe5fb58ee swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xe6182395 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe627b5dc snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xe62cc84d regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe645075d __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xe64e85e6 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe64f8704 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6587951 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe6886ed2 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xe690b02f hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6ad355c nl_table +EXPORT_SYMBOL_GPL vmlinux 0xe6c1873a device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6ca76f8 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xe6d67ae2 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f22536 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xe70099d0 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0xe71858d4 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xe737d830 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe748d514 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe75cd4bd tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe75fc4c2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76e9e6c fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xe770e3b4 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7d1779d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8162b55 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe829f119 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xe83429da usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xe8469f78 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8690a87 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xe872d13d snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xe89fd753 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xe8aee7f9 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe8d5bd2c __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe8ffdd80 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe9045635 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xe9073a1a regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe91dd0e1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe9308f74 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9434c8f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe96df5a4 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe9985880 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xe9aa7ae5 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xe9bb9cff wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e70494 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe9ea9b6e usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea24e624 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xea2543fa anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea2ef06b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xea3dd716 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea71aea1 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xea9b9c88 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xeabb909c __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xeaf1e9f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeafb182e devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb276882 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xeb325417 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xeb385fbf regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xeb425e7c iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xeb42f0ec fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xeb5e78f2 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb72b332 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeb8e5e95 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebbe1622 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec32c4e7 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xec3dd0f2 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xec4ccda8 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xec587af0 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xec5ef7e3 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xec5f64fe xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xec78e5e8 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xec7fb86e sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0xec88950f md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xec8ac0a0 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xec8f22be swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xeca5412f phy_create +EXPORT_SYMBOL_GPL vmlinux 0xeca7cb41 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xecac4db4 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xecbb159c get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xecdc015c ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xece1cca4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xece8936e mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed106e5a flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xed11d460 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xed26b94d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xed27b97e xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xed2c41d9 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xed3d2509 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xed6698f4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xed6cad73 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xed705f31 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xed756d45 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xed7da8ff device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xed84c32c regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xedaa4632 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xedc16ba0 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xedc20916 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xedff006c sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xee1aecae rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xee2bfc33 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xee2e2d58 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee3d0e5c cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xee4e8b94 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8136a3 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xeec13178 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xeee050e3 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xeee59d95 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xeefb463e ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xef2bcb89 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xef3d0e7d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef5b7813 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xef5f77b0 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef724b01 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xef7325f7 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xef75a2c1 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa5b08b percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xefa78d3e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xefdbf4eb unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf0140f29 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xf019725c regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04f5e6a wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf052bd56 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf0548988 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xf0621895 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xf06880f1 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf0694454 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07a9d66 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xf09ac1ff of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xf0a81f7f regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xf0b6a26e fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xf0b9d3f8 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xf0d572a4 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf0e46131 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xf0e6dbe0 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf0f12895 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xf0f5a92d inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10310b4 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf13c902c omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0xf14c3fea ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf175616d swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xf179b91e regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf17ef3d1 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c2c125 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf1d579bb sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1f21b71 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf20bfa7f tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf2127963 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0xf2196659 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf239bd5d rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf23c481b __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xf255e032 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2865e6b sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2cee3e8 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xf2d60222 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f9f588 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3004ba9 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3265a1d pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xf326e758 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34fa4f6 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf3541d25 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xf36b14bd bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xf373f491 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xf3759ab2 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf37eea80 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3df7b88 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf458d383 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xf467a95e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf480ac97 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xf481ff00 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xf48ceebd net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf4915849 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a0f8d4 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xf4be476a debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xf4c8364a usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4d97f0f usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4db97a4 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xf4f64255 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xf4f8a2c2 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fe617a raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54bedac crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5a63e0e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b5835f ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xf5ba8592 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xf5c1493f sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5de7b1d snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0xf5de8a79 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf5e8830f pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xf60fa2de ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xf613466c cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf61baa65 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf64567b0 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xf6511258 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf663fd8b skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf66c13ff ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xf6738af2 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf695a8f3 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xf697e0ba __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf6aa26cd of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xf6b34931 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ecc336 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xf702ad24 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xf73da921 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xf75b335f tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf77605d1 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xf7869836 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf78938d5 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xf78afbcb register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xf78fe054 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xf79d3ab6 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xf79e1a92 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xf7a154c8 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0xf7a5d702 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf7b8c992 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xf7dda023 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xf7efe9f0 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf7f24d8a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xf7fd08d1 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0xf808c3a9 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xf813e6d1 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf81b4142 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8567525 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xf871ebd4 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf8bc6bee get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xf8cc9bf8 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xf8d3dffe devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f49a03 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8f9b744 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xf8fb7c32 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf968c688 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf96ee684 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf9727817 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf992b6c9 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a89f88 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xf9aa4abe cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xf9aee5fa power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ffb6c8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xfa061e7e regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0xfa1a2371 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa3a144a snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa5d6424 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xfa7972d1 omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xfa79f969 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xfa890900 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa4fc4a thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xfaa93a2c ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfae1edff pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xfaef322c mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xfb02a76f snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb454b41 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xfb4a8d60 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb88a338 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfb986df8 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xfba43437 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xfba7c3dd sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbbf6b28 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xfbc9275d of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xfbc9b61b thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfbdc6d03 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfbe1cd76 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xfbef099e tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xfbf55ed3 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc448b24 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xfc46a22e dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xfc55e77e snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0xfc5fca22 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfcb8fc12 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfcd53667 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xfd0b3f8c usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd425bbe omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd9dd541 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xfdaf9769 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xfdcae422 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xfdd7fecf of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xfddccba3 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfe0fb795 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xfe1ba432 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xfe464f30 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfe6d2647 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xfe881c9d blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea33203 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xfeca5a2b tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed8b592 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xfee31d97 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xfeeaacd9 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2a47dd ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xff4fc427 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xff58ed24 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f4f47 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff8c3576 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xffac66df snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffbc52fe bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xffc38c82 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xffc6b6de ahci_start_fis_rx --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic-lpae +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic-lpae @@ -0,0 +1,17520 @@ +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x276b2f72 private_AES_set_encrypt_key +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x6c62e582 AES_decrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xc30fcbed AES_encrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xcf024ae9 private_AES_set_decrypt_key +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x299ed1f1 crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x2e5a2c56 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x28865246 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x1d570ec7 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x1f8aabe7 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x273a3114 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x0db7d573 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x228a6a3b paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x759e7dec pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x76a271ec paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x871aa831 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x894d065a pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xa39f7cb7 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc653d820 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xda622b8c pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xdd1ec12d pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xed756091 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xf2a98e3a pi_do_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xbb7b4cc8 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3f7b3a85 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8061d039 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8dff8c01 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd610e2f9 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaead678 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x024bc638 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5d8ae24b st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x92e7818f st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf545cd2f st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5abea45c xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5c40ce5e xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x83062b3a xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1b6d6fd0 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x31123999 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x3d116c7f dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8bc55ec8 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xae120d43 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfd6ccca4 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/pl330 0x885c05bd pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xa3031033 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0b41adef fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0cdf4a62 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x18f0b623 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21a46cd5 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2fd4b235 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a09cb87 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3d313b33 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3f5aae2d fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x41e8040c fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x44209852 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5bedb06e fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x71c6c213 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x81c93d22 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x852870fb fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x944ccb1b fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x96e04667 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9eae4e46 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa101815d fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xab3b5884 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad524abc fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbe777dea fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcfb3ff2a fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdc6ca1c8 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1e3aec1 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf94ff276 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb7a9b79 fw_iso_context_destroy +EXPORT_SYMBOL drivers/fmc/fmc 0x0b725ab5 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x16a0c5bd fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x4c1949f0 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5dc29989 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x6cc62087 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7c7cbf87 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x86742793 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8d3565cd fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x985af57e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x9f896219 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xaa681d07 fmc_find_sdb_device +EXPORT_SYMBOL drivers/gpu/drm/drm 0x049befd4 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c25ef2 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ffc26d drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0583c819 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0584cfc5 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x059366fc drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06053240 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08970615 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091fdeb1 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x092fc3cc drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a382cf6 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a56d306 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a58128f drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e2d61f1 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f103b9d drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f1bfe04 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f964fda drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fbcb48b drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11deb7d9 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x123c0efa drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12d5b0e8 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a52963 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13edeef4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1485e42f drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15427a14 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x178829ce drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187c390e drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19534553 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x196052fc drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1980ff6e drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d46a8ea drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e0b0de3 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e78e850 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x206c31b6 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21095cea drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2294e1b8 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22c1d7a0 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cb3e42 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cc223c drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x231d20c6 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2435c3d6 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x245b3808 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26150ab6 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x279bf48b drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2897bcf9 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d12513 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29bf5174 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b27f68b drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a70a0 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d32d519 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e237230 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3110095a drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33490c89 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3374e86a drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3432a035 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x349e0c5a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x351293de drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35b798ee drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3959a020 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39768f34 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39a9475f drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a083306 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a2d3d91 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac0420f drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7a8f6b drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7b0ce6 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3be488bd drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c4a4e53 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c8a12fd drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ccd2d96 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d295f8a drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f08edaf drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x419c65eb drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42c52417 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43345680 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4376681a drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43fa21f6 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x446f8981 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44865263 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4573cce6 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46859eae drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48c6b6f8 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x499710c6 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x499eff18 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b3fdad drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49cd55e8 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49da2a60 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49ea85b8 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a4bc27b drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5067207b drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50c3d757 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x510f57be drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51d4744f drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5209f594 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x538b5161 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54e55ed1 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5614fe5f drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x599c7a3a drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a380dc4 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a9bc1f9 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d5b297f drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f92618f drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60a1e1d2 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60f21c6e drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x615b0e65 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x631d75de drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x635eef20 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x636cc299 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63d502b6 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ffcc06 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x651a884f drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6559ef53 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65bd5f3a drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65df10c3 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65efe030 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66720d54 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x674bf6c5 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x674e1b9f drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69935b93 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a291097 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b2c65f7 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d51e53c drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7003e852 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70794536 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71ec69ff drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74df4d01 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x764ef1e2 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x767b2a25 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x769ce8f1 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x777baf6c drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79854d77 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a60408a drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b2dca60 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b73f8fe drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ba953f8 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3133cf drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c34b09f drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c7bf65d drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cea314a drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f1b7a0a drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x811c37bc drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81c967ac drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82367356 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82acf084 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82feb949 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82ff578b drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x831d6d78 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x845ccb5b drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8538a264 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8666e8e6 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x868e72b8 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89dc1610 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89dd68c4 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89fa8e30 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b9637aa drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0ba43a drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d5f064e drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e3a3621 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90d73ac7 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91c71110 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x946adb7b drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94d6e6b5 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95046143 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95ce9919 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9650de29 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9665f982 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96a0d90e drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9741e7e1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9759c1ec drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x976b7318 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97f19921 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ae74469 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c207ee5 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c926cd1 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cd84fe5 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e1a2b3b drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e3cc035 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f81ba91 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa142614c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa19e4a92 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1b46ed2 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa230abb1 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3457c9c drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa380becf drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaa4276f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaafb0096 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc182f4 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae6ed0f4 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf25e8df of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0f0e039 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1ac6729 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2f51533 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb385f721 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3dd3b56 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb734358f drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb797e46f drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89735c5 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94a8679 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba736d8d drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb22a2b6 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb63b0ec drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb775c7 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbc615b5 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc6f619e drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcb82e44 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf3f69fb drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf9e969b drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc10391e4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2adb1e5 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c39a74 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc590f8b8 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5cf0fd8 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc782a9cd drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7bc9c64 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc83627f9 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc84ef91e drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc95f8e08 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9cbae7 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0f6fe8 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd8540d0 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd02d8873 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0cd59cc drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2649e05 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3a2aa98 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5142ed9 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5a6c233 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd730752d drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7b9d7d0 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7dbbbb6 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8168334 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9267997 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96deaec drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb35dbb8 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc610392 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd0defdd drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd38a478 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd74a7c5 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddfec17a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde7964ca drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeac3c51 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeb42cfa drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf5f792a drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0fd50a7 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1e626b6 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe47c7737 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e4fafb drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5879070 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe631552d drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe759ae58 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe80527c0 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8fc161d drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9f23782 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9ff10fa drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea4fd504 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea9a0df5 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaf0f83b drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec392fcb drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee3a87df drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeedfe183 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf12c7285 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf18954e1 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf24db43c drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2b166cd drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406eb46 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf60eab95 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa63a4ca drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbb5eb68 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf30d45 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffddc1d3 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x006deff9 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04029b71 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x059015fd drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x080b0684 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0810afad drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08f71b9f drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b6a7730 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x122bcb57 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1516a414 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1531d1a9 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27b48ff1 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b078d67 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bd27d56 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cbcec36 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ec6cafb drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x357ab659 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39dad5f8 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a7fb2fb drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ada7638 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c128d3e drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d2d5ef3 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e1e5848 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e2bdea1 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fb1f8e4 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41eca5aa drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42bc5427 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x443ecfc8 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44d903c8 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45bc5b42 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45c48ed3 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x469b4f77 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x490221ce drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4970d88b drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a4e0283 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c6a14d0 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c904f80 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e8014ce __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f0e5ac2 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fea43cb drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54a4631d drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5691c407 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57869e56 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58aa7da9 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x591c0fb9 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59e34a09 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ef35be8 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60492284 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x604daa48 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68a7f8cb drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c72f5dd drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cbc09d4 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d7c4d8c drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72f9efca __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76449722 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78468ed3 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7bfb6132 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c87891c drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c880a1d drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cbb4047 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dc595bc drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dd09ba4 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e5af574 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f4b0d21 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8294b7a8 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84d47868 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85f450c0 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x876d430f drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a0e6532 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c6c2e4d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d9c353a drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e52c90b drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f2bcb6e drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x906711b0 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90f3ebeb drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96754c48 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b85a785 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ee023b8 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa109fca5 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa25ba2dc drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa57265e1 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5ad1df7 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7f323f0 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9cef1f4 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabd9e573 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabe4ba5f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad8a3a49 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1c93ea3 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb55e368c drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5ae0fc0 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb73786f1 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb776580b drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8de164f drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe4671af drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe87dde8 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc09c5b55 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc243e222 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4a76414 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc66a0983 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc723e685 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc073b27 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd225bdaf drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3b4026f drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4063e88 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd76866ed drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8422d43 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd911738e drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb4025a8 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc421e20 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde66d9cf drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf92c0d3 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0447ad9 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7b5b603 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8a7d978 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeef95b69 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef963a0c drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf102e7b4 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf28fec2e drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2a43847 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3d74c76 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5b6db70 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf939f32f drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9544dcf drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa3c99c4 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbfdf62f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x031b48a2 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03a9d964 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x054b7c14 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a319bbd ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bebedee ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1142209c ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x136ec7fa ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15f3be0b ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17647b16 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26c328ea ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3128b125 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3cbfabee ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4628b006 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48ad6599 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48c3ed90 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x493e46f9 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51f68954 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a2f48c4 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5fe718e3 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6057d533 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62c074a1 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63848a69 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63afdc52 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64f9e69e ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65141998 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6724f0ca ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7399d9b4 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7fc4ff1f ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84d3afa7 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8589758d ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86bb8a6c ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8db87337 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90f39f89 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9543c3e9 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d6e83d7 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fa3727b ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0fb5450 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa41d1440 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa5850d89 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6a0d7c3 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7ceba1d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba238bda ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaace1f4 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb315660 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd306ade ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbff7437c ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2638e26 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2b46534 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd186e90d ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd71804bd ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdda338f6 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde51b925 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf157197 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed4ef3ba ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf22a85a4 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbad38fa ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd7484d3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8cc064 ttm_vt_unlock +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x16017e04 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3de5ba8b i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x559cd764 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x8f0717b9 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3f87d89d i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x415968c6 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa109911d amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0bf18dce mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0c78c30d mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1283c708 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3762d5b6 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3a4da4ec mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3dede029 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x49eae944 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5a54d432 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5c5972ad mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7cfcfd09 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x804a613f mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x95560dd8 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9c860503 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa5e1d4f9 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb08d043f mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfa9da901 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x2dbb0a27 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x834bfe7a st_accel_common_remove +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x3e134419 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xc9cba59a iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x212577fc devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x291e97c0 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x30c43660 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x9216fc6c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3bc2cd84 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x577e558c hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5af78154 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7d264638 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9938acd6 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xdd838d0b hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4291a060 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x7f074492 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xcaa585ec hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe3fca1e8 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d1abe11 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x43043710 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x71b3078a ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x7f9b4ac9 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa64b9540 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xcbfbb3de ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xdf376510 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe71a7909 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xea30c277 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x55c15e3c ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5d06b8be ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xa26807fa ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe0cd15e0 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe601ca1c ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x1a44eef1 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x7ed24b2f ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xab22e255 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0a70ccc4 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0c6843b4 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x13f05fb9 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1961241d st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x19c4c892 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x23e4a9d3 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2c8abeb6 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x30773ec8 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x60bea002 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x726fef72 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaf90a237 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd0d13bd3 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd2aa7568 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd4e97124 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe50440c7 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfb22f364 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3944f0e0 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xc23d22a8 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x1181f95e st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x55b520d4 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xcfead90c st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x62785d60 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xba1630b2 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0057582d iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x17f87595 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e38f264 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x30d2e069 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x4dcb3f8f iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x55475abb iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x6129f08e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x69bfbc7d iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x77d2bf82 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x839685db iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8ce9cd6e iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x9bfdb58b iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9cdc3729 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xab901430 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb846b342 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xce134b52 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xed34e968 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x58ff9d0e iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x6c634bd0 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x406a01ea st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xb0f33908 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x9ee9b6e0 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x37b0bdfa st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xdd46bddb st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1340ddb2 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x389a3d87 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4974215d rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5347cc38 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7df81f32 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xdea1e26b rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x06be8807 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x08ab9a7c ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x18cb8d52 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x28b8ad2f ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x396bf4c0 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5a48c779 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5a86a4bd cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8ad389c3 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x940a53e2 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb50cdc63 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb4bd8dd ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcf2c77b4 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd7ed10df ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd94b1573 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdda50d42 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe3e499e8 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf38fdb1d ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf71aa0a1 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01ff1de5 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x050566aa ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0571ea4d ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07326956 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07971f28 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0823c602 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a814b8a ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c326e70 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11709511 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x129b15db ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18714214 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19fb8aed ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b1ae890 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x301f9be4 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x328b693c ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x336244b9 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34fb993b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35e45daf ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x370dc994 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d1a7a75 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fde07f5 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4612d223 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47d0d162 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50d84e46 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x526adf31 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x545d666c ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a436e71 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d46c7f6 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ff9d999 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60421e04 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6119b6d4 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64e82ead ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67f65f42 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6868b2aa ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d90816d ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75017cb2 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7da7af91 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82bd7604 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83cb1997 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89b110c8 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a1a401d ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ed15108 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93eebf15 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x999b6cc9 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d27af18 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2461584 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa48b4329 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6723be8 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa710c187 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaab85de1 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab7683af ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad9eef92 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae387270 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae6a1e16 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb294a24f ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb30daf25 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3a5b15e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5100c40 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb54f9bd2 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6883fe9 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb97b4ff6 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc147d8c ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe443978 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe490c4b ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc99936a1 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca8e8fed ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcafdba12 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce0c2e36 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd930274a ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4d36424 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5da6da5 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9ffb90e ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeabf4060 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee43f0eb ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee84ab57 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefffacf5 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf06d7bea ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf143283e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf648e0d7 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6c2fc9a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa1f8bb6 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb0e2e3e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe47b237 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x109d4417 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x11ea4edc ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x197a737e ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x37a7df01 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5143c727 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x61bc462c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6ca2c7c0 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x816d1378 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x866a74b3 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb75763e3 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc14e495f ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc7591912 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xce2b4c25 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x31f5a004 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3ab4e19a ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4fb7ad0b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5e5c671f ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x635c252c ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa17d572f ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc8dc95cd ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xdc722adb ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe853b376 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x35c85ad2 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4f0626d7 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0037d3fa iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x07c73951 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x15cf82dc iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1704daa0 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x33089b26 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x43473acf iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x548f20cf iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5b49e31c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x60b4593a iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x60c80d60 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7efcb30f iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x890bd768 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb46f4ca2 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbc1a822d iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xff676351 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0321fad9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x04d9f96e rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x050d14ee rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1222bf3b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x131b9fd9 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x183bab78 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ad88d38 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1dcc629b rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1e9037ed rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25783e0e rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50a1b481 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d1d16e7 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d822211 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x66128934 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x81e9b673 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x92a28319 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa5bada91 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae1223ac rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbafee7e9 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbb3723cb rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf1435627 rdma_init_qp_attr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x09f06bb1 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1435033b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1671cd28 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2080bd62 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x25685284 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80d89a62 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa6a77bda gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xab782c98 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd69bdb6a __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x2134670f input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3edf3851 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7172103d input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x93c06cb1 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xedb70636 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x35b8317d matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5a6571eb ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6d0f41a5 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaf2db537 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xabb59750 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x184f3bdb sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x50686d5a sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x52b1c3cb sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x76866509 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x78479885 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x84c19cf6 sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x06d0517b ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x59f31813 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1ceffc37 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x225c274a capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a935b5c capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7de5e609 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8e8c1362 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x93d55b07 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb6ef8003 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe9cefed4 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xee0ed049 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xee5b2662 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x07b691e5 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0ac47437 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2e04f2ce b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2f4fadad b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4e850b5e b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5b650577 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x63c37c98 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x834261f0 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x973cc0c9 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9ed7da77 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb4478231 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb5c1aa00 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbf64da53 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc826a299 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd105c83d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x24c7a0da b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6831ada7 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x73175fe3 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7777caa8 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7ed38114 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x85100b12 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc3c05455 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe9decd9a b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xecb4af1e t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x121daeb5 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x745011af mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbe247438 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xcae0af60 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x1dbc8f12 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x43206635 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe9053d12 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x571705ef isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x605ccdbe isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd4ddb432 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe2c2a5ee isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf7665b16 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x445ac221 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb71b0f8b register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xf1c6b93f isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06b58fe0 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x19abd266 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x218c19af bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c76aa17 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2da42fb0 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x31016c0b mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x369653ab mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b9a4f65 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f21ebc6 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x40945d1f get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x41db4c18 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5ae2aa02 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f3cacc2 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89a077ea queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x964bfb08 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9677b9ac mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7ca0e2d recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb97a41b4 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce23dc6e recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcfc5b960 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd19dd991 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe020b995 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xed80bea9 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x024d1c07 omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x3dbeb9f6 omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x4cbff63f omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x5e0919c2 omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x6bb0413e omap_mbox_disable_irq +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x24404244 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4d45684b closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b592923 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe1691baf closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8fd4bac bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x4f24c6b2 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x65fd3636 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x77340c66 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x85f6d8e6 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3fbc89c2 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4b67339d dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5b6673c9 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5db5d6d6 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcd723fd9 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf07e70f8 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x0461f75f raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1e9ee0aa flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x30decca4 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3d685bfd flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x49bdde24 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4d445e21 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6ef02797 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x836a2eff flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x88a9ded3 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc13a8a8d flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc6745bb1 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcf42aa14 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd71ada35 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd7491417 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x21f5decb cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x545653bc cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x73a8c754 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc7a62808 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x780b0020 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb3cd8191 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xe3cd8c2d tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07d98a44 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x080b34ce dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17ce42af dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39d02c62 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f6a4067 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3fbf70ec dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4f2d1cb0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5220a5e1 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58f78e73 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5eb8cdef dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72180695 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ebc89b9 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x82c6242e dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9090fb58 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96b02250 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9abd3761 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa572f4e7 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa701cd3a dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa9238f19 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xabaccda2 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb55e26d7 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb6c81546 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbc33558d dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc5dd9477 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6d43d1c dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb88b0dc dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdf82bd83 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe99e490d dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc32244e dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x0d676a45 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x7513b7b2 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x48a724c6 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x264da289 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x27d07f08 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x499453f0 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x51af7fd2 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x71b55944 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8a64493b au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9236d400 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa7646cb1 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcb1339f0 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x436c3915 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x4534e073 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x44c52b86 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xe8131a0c cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x7b10ccb4 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2b6e5f1c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xd572c422 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xdad26f4e cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x6f536e18 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x1cc89fa6 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6c457aee cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x89f88263 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x14694a91 cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x7f8cf659 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xd0bf70ca cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x08b1da84 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x56c49da5 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x58bdb2b0 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7a530dae dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9b6dd4da dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x018a601b dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x09762bab dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x12c501b6 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1bf71ac8 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4d9591ff dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x53031a25 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5c66a62a dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7df3de9f dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7e7fbb2e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8a1b1e15 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9bce164c dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0050cd5 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa441736e dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xab6e6aa2 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd6127af0 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x15726cf2 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x489852f8 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6671b290 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8f24ed38 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa024c13e dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfaecc902 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfda5cdd3 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0d61307c dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x12888007 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xad7b8990 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xfdf0a433 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1d192bfb dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x42f1ceb9 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2b55af0e dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2b574499 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x60ae9d64 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbaae2f7d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc74c3896 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x27a4cf44 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xd642bc44 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xce25aaaa drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xd365ddc3 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xf44d4a20 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x3efab6a5 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x82a673e8 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xd1296f60 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xec08dc7e isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x44a7d2af isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xa3b48c79 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x150b68f9 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xfd4b6e61 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x3c0c7248 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x5b03d9b6 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x0485f199 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xdd035907 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x423be4f7 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x32722940 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x0daa4985 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x295f4057 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xd2604069 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x10036e11 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x6ef77f31 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x4b9d11ad m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x01248c18 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x958c8f93 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x4002f104 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xa18eb395 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x7f5cdadf nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xcc1144b1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xd1472aa0 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xa9cab63c or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc1733cfc s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x46aa4dc3 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x3804be5f s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x77068a42 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x79bd7508 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x22357393 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x0403a68d si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xbe24cfc5 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x9f0f4ea4 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x529839d8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x5b45fd1e stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x829c20b7 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x6732093e stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xeb636130 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x5142d40c stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x0a692249 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xdc8b27ae stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x0928db38 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa2c40056 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x01007247 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xbb4cfd25 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x55695634 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x85b8a8cd tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x9bed37d3 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xa514acac tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xb7ea3fe6 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xd691df5b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x9d5e2594 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x9dc62bd1 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x846ac3cd tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xc2d60c5b tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x566b13d8 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x1323e1cb tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xa43b696f ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x32363de2 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xeee3aadb zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x8ceba829 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x76d37240 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x29dc68d9 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4ff97949 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x58594dfb flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xac17f43b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc41d63bb flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd12590b8 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe168086f flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6167b18f bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x72adf4db bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd6d02269 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf3d8ff9d bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x5cee5b3a bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb194ebd3 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf81325d1 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0af43878 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x12241a85 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3b11cea3 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x41ab26af rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43d016c3 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x51334b68 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9e5a7099 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb4a9ba13 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd7c43cf0 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xec347059 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2d185bb5 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x39a6dc4c cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x3b1484e1 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7931a157 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd851aef4 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x63c30955 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x87b173d9 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9649545f cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa6afad81 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc4692bfe cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xce9b50b3 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe1d38bd9 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf683ef49 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x125646dd vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe135cf1d vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1de20515 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4fbcb0a6 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5186ec18 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xca1801d8 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2130d6bb cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4f9efad2 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x57d54f0d cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x60f850fb cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x63eda2d3 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7f21b08e cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xac63b0f4 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0348240b cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x30ebc6da cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x459d47c7 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x484c6529 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4d6ae520 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x62509a1b cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66275333 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x810848e5 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8bb2a4da cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8ed22b93 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xace6561f cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2280955 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb7c43208 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbe4d1410 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc01d58bc cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8bad2e5 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc026031 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc14057f cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xeb9695cd cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfdc5d9c3 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1b57f8ee ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x250280d8 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x34d9faf8 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5f5f11ae ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x63c9a693 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x79d86df2 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x93405b1f ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9a86851d ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa91c7229 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa9e240c4 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb0580f7c ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbe06d2df ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbed34958 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc96c9a45 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2b60db2 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf4e0b9c8 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfbabfcda ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x02723a9b saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2d47e837 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4efe9184 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x52c6af50 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73e60e25 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8b62c206 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8c839d6d saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9a99a380 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa913ed06 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xade0fa87 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xefafac97 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf9f5ffe2 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x6b1c1684 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0836b2b0 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6b72e1da soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7ae8c8b7 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc7f9d02e soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc9f6b9a6 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe841c0f8 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfb6d768e soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x2f65b374 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x38c40cb0 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xbbadee4b soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xe4ec93f9 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/radio/tea575x 0x07ba0d3b snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3754491d snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x498caf23 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4da2ccd6 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x90d7cab5 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xbe9501ab snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xda3f5f4b snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x40848212 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5c8d2be5 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7051ed75 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7c0326ee lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaaef71ce lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb17202b8 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xed1710fc lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf8ff5753 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4104c060 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9c27e590 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x8f375551 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x8488beb2 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x3dae4dd2 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x59840bd7 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5e8f73df fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x1687bd74 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x8783600d mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xdae68a41 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x592e8cb5 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x564f0340 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x420e88dd mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xe3f25468 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xf5a88b65 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x2c2c47b7 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa54e9a76 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x2905b553 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5f56f8a3 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x945d8986 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x15f87b7c dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3cac3a15 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x793b5730 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7f0efdf0 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x82908216 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x832fa21a dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x901a7f5b dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa05af0fe dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xafdb067b dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6d488f6c usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x877bef38 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9525d350 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x988c0613 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa5daa5aa dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcebf145f dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfaada776 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x677f68c3 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x049561dd dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3fe6e7e4 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x67443a25 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x69e3b3d9 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7d690015 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8184a245 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x855d65c9 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x94bf068b dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb7d3ec91 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd6f3be0f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xee48feec dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x155e2106 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x3d4f9c4c em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x08bf6c2f go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x12d39c28 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2fbd63d3 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3a45a8c3 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x490580a1 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4cd7f4e0 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6cd9ce04 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6da9c419 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xacc2bac6 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x13eb9282 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x73a7b515 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x76d91990 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x89c1772d gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaee77538 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd6937324 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd97b1e5f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xeee22384 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x5b1ba33c tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x82f7eae8 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xd068da8c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x997926e3 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb2be2729 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9c473d1a v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc8379532 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xccca2241 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x37e0d85c videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4ff284b4 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x67649ac8 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7595adb3 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x765f6c1d videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8cbe213a videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x07cc4b5c vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x91677831 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4afbac13 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa12bac71 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xb4c7358a vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe240e20d vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe25c615d vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xeb252e3a vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x8871cde5 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01901e67 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x040cf679 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05084558 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x074109f2 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x09c369bd v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bb75834 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10baec2d v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x15f72ca0 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x176e945f __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x17dd4655 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x19ae28f0 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x19f6e022 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a6e1a40 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5a6079 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21251ed1 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21597fbc v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x234b9254 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24d3613e video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2718c48f v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x280a680a v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e4a0c92 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x414bd037 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x437499a2 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4406dd5a v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45843b8c v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46b58392 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a079792 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d03fb8d v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5228dd75 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x540315d1 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5abe8195 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f1d25e7 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6bded811 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c193935 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bc02883 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c0f0ae2 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88f370ca v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ab5a055 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9dbd4e27 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e98d3d3 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0940dde video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa3a18bcb v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac395045 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xafb9a978 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba00426a v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd95bcc5 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe8241ed v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc44c398f video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5a163b3 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8d07ea3 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc984c4bc __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0298b31 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd03c5117 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4b9ebf8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6b1086d v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb649792 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbdd199e v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeb6de3e v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf6f47cf v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe686bbc5 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea40a1ca v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea76b913 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea8f4251 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb836b96 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec4c3b28 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xede3c196 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf02924f9 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf25bf4b4 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf782cb2a v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfaf2122a v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbe5722b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc553b1b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd6b933a v4l2_clk_enable +EXPORT_SYMBOL drivers/memstick/core/memstick 0x02d3bb15 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0aedd6dd memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1996c8b9 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1ed47bb2 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2f7fda2e memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2fd33599 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x749595cd memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x98d95368 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9b9471e6 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb0884338 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc8e34ec3 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd6d2a46e memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0bb36127 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0fb98490 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x121bb32b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19c5640f mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x23c6b7f6 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x273400ba mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b173e20 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x55503209 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x562f37e0 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5a2cacd2 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5a8bfd5f mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x66d3ba0e mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69021bfd mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69ef25d7 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a300a6e mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6b1ad05f mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74aa6d79 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x812b4915 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9730928a mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9cf85731 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9fa71711 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa1451d19 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb2f9554d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc077b9a8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4bc3411 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xce17e886 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe48e91f4 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe987e281 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf1a24909 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x017fb21c mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0212e67f mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1a94169d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1fca5ea8 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x235d79f4 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d69b229 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3ddc3c89 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3ecabf76 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x41caa009 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4ad9f836 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x54fc2a04 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x62c56716 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c2f2a50 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x862a227e mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x904f9e59 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9bb3f873 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e35f3b mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb70bb63f mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd369b38f mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe320ba56 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe570d43b mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe894be91 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea4ec4b7 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeb816938 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xebbc3c5c mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xee1c8a0a mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0fad54a mptscsih_ioc_reset +EXPORT_SYMBOL drivers/mfd/cros_ec 0x5f4e89d3 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9ca6c643 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9fe00d51 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xf9631b19 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/dln2 0x92469d7a dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xbd11c5d7 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xf0cac7ed dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa8e09350 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb3b65552 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4be42c03 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4efb9466 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52e15652 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6eb3b7e6 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x90c73745 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x94264cd8 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9615242f mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbb80d56f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcb23f2ba mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf4facb3f mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf8bdad1b mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd042c9be qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x2d040e5c wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x9ebfc965 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x369c2f70 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x78b2d7de wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xd5ea6e6a wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xe7d0d5f3 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd95069eb ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xdee66c43 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x276dcdbd c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xb55aa237 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x266fc49a ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xc8244ac4 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x46b1400c tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x69e97cae tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7395b9e9 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x750fc64e tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x7b9fabd4 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x7bc23aa3 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa7c9e1c4 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa9ee04f6 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xbdff69f7 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc677ad35 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xf42cb321 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfe702105 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x0c290721 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4457d531 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xc54c805b dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xcf414b76 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x805ddbbf tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x92e3ac7e tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x98d6e4c5 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xb7dd5d18 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xc1326837 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xebd56f66 tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2905c821 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x58c760b9 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6b1052bc cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7d1446ba cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaa44af78 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf1c34bf2 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfcb18d71 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x517cfa41 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x0c78c135 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x3c330502 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xd99d2901 denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x10153fe6 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1699c0f0 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3d0a6613 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7893d495 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x24f23a29 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4dfc753f arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6475c5d0 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x987e5114 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9eb58a31 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb8b671bb arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc9a18cbf arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd520c703 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe4437b64 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe88ea483 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1c1ca855 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6f675eb1 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x82c1709d com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x451a1c3c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x49997e0b ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x59f99f95 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5f422152 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x81a4b1dd ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8c8c67ee ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xacca04a6 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb2982db4 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb5cf05a1 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf002f789 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x9491527f bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xdbb146dc cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1fca6de4 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d556bc9 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41a80666 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4a5cd60b t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x55739d83 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x637f5fb0 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x66ab87a8 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7f60bab2 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x80bdc47a cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x93774208 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x95c441c9 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa40dc6b4 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaaf9f779 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb1e331df t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xefd9a4a4 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf6c31fba t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0ec3aa1a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1096b197 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12063f05 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x146c2a6c cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x17941662 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22be5e12 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31f77588 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x42511964 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x448f3b34 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4de31aaf cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4f9c42fc cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x524728ca cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5d3c87d2 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e48507a t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x663478f0 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6fbf8ec9 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x810fc07c cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x89748943 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f1a4f44 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf0a6557 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb31a7f0a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb69cea71 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb7ecd95d cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xba47c584 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc531fffc cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc61b7dc3 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00a4f2f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd2894214 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd33e059b cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdbf06a02 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe74f3899 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf4211c3f cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9d82136 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb6e4726 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x42b1aed9 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6353af23 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xaab22dc3 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb4f938e9 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xca152a23 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xdc9ede5f vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x3a3465c2 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xcf81400c be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x2fef2ec0 hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x4357088b hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x6ee826a4 hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x7de9e38b hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x8e4c90d6 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x036601e3 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03d38c4c mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bc3ded7 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13c64ddd mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x148d8990 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c6bff42 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e70866f mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2422d49a mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x255b7519 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35360734 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x381ed9ba mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f0a1453 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x453b1a14 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b02122c mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c913ca0 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55936e0c mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59551462 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5de5a084 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f4fe9e7 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b3a12d7 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x706ed1fa set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70d4f80b mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74e26e5b mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a064d95 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87de41c7 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f005f64 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1f76a9e mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4815b56 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8679b80 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc109c15d mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2b281ff mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc04cdef mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd24c687 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd03f1812 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2007a7e mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd63fc0df mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe32a05a3 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeca65fa7 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01e6dd2b mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02172d7b mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x044d2244 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0fb601f0 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e222ad1 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x231a280e mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f45a30d mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33f0b85e mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ea0036b mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48a5b7f2 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48c55ac9 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56f1271f mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ae1cc1c mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6dc485de mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74d9261d mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x838a37f9 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x891634dd mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x909d844f mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x925960fc mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92e02435 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94aeabf7 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9640c9d0 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9bc07843 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4abf88e mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa63a89f4 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa81c9e71 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb53dec13 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaaac4e2 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf1595a8 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc20f5e43 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7f58d62 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb519a6e mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5ad0a72 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6d4e4d1 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe997d7b4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef31ae7e mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf359cadb mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe356e13 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x215e99c9 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x33ecddc2 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4e653aa5 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6e765545 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x83d3f3c6 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb052c130 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdb99bf42 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x221b54e7 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3ede688a hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5f036f4a hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x85835daa hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8f33ddb2 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc5025afb hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x54994aa8 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7dc7a05f sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x97d25cbd sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa1787b4c sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb00eae76 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb27afc35 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbfbfda06 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd0c3bcfc sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf8557272 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf99a7518 sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1ec78530 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x41622dbd mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x4742e82d mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x73c713a9 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x75783397 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x7e7099be mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xc0aee2ef mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xc8df83ea mii_check_gmii_support +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa81ea78e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xde9b166e alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xeae2bdbf vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7b007eae pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7f890f1a pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbdbc96d0 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x67d5c3ca sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x24dbbc19 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x328deca2 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x65011312 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x7145c2df team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x9f9cf343 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xb8621d96 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xca9de93c team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xe8d3c91d team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x1481b36a usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x61d9e4cc cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9763a053 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf3769e7f usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x09069130 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3152525c hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x47f16b92 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x48720931 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x683e1468 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8737376e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9842222d unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb1829534 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb9fc449a detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xeaf3a6f1 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xec382e7b alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x6e3632f9 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x04aa1a3a ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0d7d8637 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x33aa7472 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x543bfaac ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x78727504 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8668d40c ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9208fc8c dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc7a14e05 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdb58667b ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdbbb9b25 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb5a029c ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfe5dbc76 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x00cd4099 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1897eb5c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2e34e557 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x307d9baf ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5b603cbb ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5b94fb7a ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6e800b6f ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x72edba8b ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7c0f32da ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x82be9ec9 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x89efe47a ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb5b17d02 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xea42bc78 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf7ff49c3 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfcd21937 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x171c14b0 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x31c521de ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x33366dea ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3cf76735 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e9dca8b ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7539d856 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x799ca59b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa3a9dca9 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe7141d0a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf0a4d696 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfdffe504 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x04a5e210 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06920aad ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x140429d5 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1ef8d258 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x318aba24 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x58625912 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59ebfa09 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x679007d6 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6be9f83f ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6cd5e0ee ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x821e6fef ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x859926b9 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8e405969 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x90ba5ba5 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9c6207bd ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9e122fe5 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa66ae8e8 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaa841076 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb8777337 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe8ea54f ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc644653f ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd99e62f9 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe2840ffd ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00ba3bf9 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0190a6f7 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02f8b877 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05c55570 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a020af4 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0afe6f6c ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bb5dda7 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x107c157c ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x150f1c06 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17fc6043 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18084a91 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1cc7042c ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d69bcbe ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d72f1e7 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d9a183a ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20bc185d ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2409a72b ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x254caa4b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29de5e50 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e96a024 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ea46f82 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f07aafc ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c1de5f1 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a31fb9c ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ed01ce6 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50af8700 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50b04c73 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5908d7ec ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59ad6ce8 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ac29898 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b37faad ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b5a6cb3 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bb697d8 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x620fa6d1 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63300ea4 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68d8f17c ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a9c3a1e ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b5947b8 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c4206e9 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6de86c36 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e38aea3 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71e751e2 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7215aa85 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72850b7c ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76063584 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d29302d ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x809259c4 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x845a1775 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8605e59a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86343352 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86fc7637 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87405b8f ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e2fe5b3 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9314078b ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94c91c22 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95d669dd ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96492041 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x972940d3 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c46e38d ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa43aec38 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa728e289 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8887133 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8ea847c ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9eb6694 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac9d6458 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf892858 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1343dcb ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1cdc9c4 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb33b0887 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6f02ce3 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbe73718 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc206ca0 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe1c5faa ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe86f2a9 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfc8e93e ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1e278a7 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1f927f6 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc20ee1d0 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc59378f7 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca966859 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcaa33cd2 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcecf400d ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf57143a ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd49f7917 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd930febf ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda2dfd23 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbf5471e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf3b60f3 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdffe96e3 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0bcbf27 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1d0f60b ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2fd64ed ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3efb678 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7837285 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb1deadc ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb22a182 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed7c0619 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2b9029b ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf372de3e ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf627e5d3 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6556aa4 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6bf2170 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcb02445 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd30dadf ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x9f1292c2 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbb712828 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xee61c595 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x068464c0 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3c9a3677 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x57ea89ac brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x581c108a brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x640f12f5 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6a589af6 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6b77e0c6 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x84c95566 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8c760313 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbba5a45e brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc3632abb brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcb1829db brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcf6217dd brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x03640a5c hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x03ea003f hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2c29bbf6 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x398eabde prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e8e390d hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x403417a1 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x44788de3 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47dab1e9 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x605127f6 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x770dce3b hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7834283a hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7a880a2b hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ef09b8a hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7f4cee28 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8c67a418 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x946d8f21 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x960b790a hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x99fca9bf hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa3ca073e hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa7fca5f0 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbb9ee3e2 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6883ec2 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcea6c9d9 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6e744ab hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xedbc8e75 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0047f474 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1e386fb7 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2af2ad00 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x318addfa libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3fc0b18d libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x41d1a43b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x43252ecc libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5a33efa0 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8523deb0 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x86b0a1fa libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b075705 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9abdb1e0 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9cba55dd libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xad0c462b libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb363cf03 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd8323f4c libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe5bc141a libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef6de97a libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xefa9e457 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf64feca3 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfdb3bed0 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02054cd1 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04452911 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04797d80 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06e8d976 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0794d817 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07af04c8 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f7cc932 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1368d1cb il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16a1a7a2 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1883978d il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19d0de85 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f669aba il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20bdc1eb il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2393ff4d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x274c3aba il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2be2311a il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fda41f8 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3570344a il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35c44f0c il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x383171f8 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c4f7fe7 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3fe959e5 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4174b7c3 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43f7de18 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44c702aa il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45d5b568 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4654f247 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x491178a2 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a7ad5ed il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b0aef50 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f8a290c il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50eb0ad6 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52a0b6dd il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53f43a27 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x547ca9e8 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bcc26c3 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c19be50 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c46d65f il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5cb63fe0 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dac82e9 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5de18f9d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f7f1edc il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64ea5ec6 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66036e11 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68657947 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d68dbce il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x705f2f29 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70ac1b41 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7360036a il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x74117cfd il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7749f42b il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x775f314b il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x789f041e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79440102 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8473cdcf il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84d48b52 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8527887a il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x880c636a il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e0c673b il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90940f48 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x926e22e5 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9275a308 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a87e7a2 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bf257f3 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e5743b1 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa028268d il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0f17cf5 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4ee4370 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa670ba95 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa90835d1 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1251923 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb33e39ce il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb74c828e il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb83d78ba il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9f5bb60 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe071fc6 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0905a46 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc165619b il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2a6884c il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6653858 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccfc5ad3 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf16447a il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf4ecdd5 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd34f9b61 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7ed9b19 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8989e17 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbcf0dbd il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddef6fc5 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdeb7d3cc il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeaab348f il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeae66b73 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed3ddf49 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf372a557 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf82e77a6 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa2b0529 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb9e7da5 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbacc62e il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfcf4f229 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x180d7a46 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x208d96c4 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x26bb7eb8 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x436814a2 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x496d7aef __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8f81067c __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xfd34aff0 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x009c4bf3 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x020fadf5 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26969bc0 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2a69598b orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x41031bc3 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x41bb89b3 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x55ee2902 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5b7d542f orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5e6bf7bb alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x687a20c8 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6bd2568f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8e8ad45f orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab395fdc __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc2384372 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcf334d3a orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe1907c2c __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x44603b5a rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x227fcc24 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x28614cf0 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c43a55b rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e721c8f rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e93eabf _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3568e6dc rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x373453da _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x37ffb4ab rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4006db83 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x49b9f43f rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5f0d0533 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61e729c5 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61eae643 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x630f09be rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x64d1e73b rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x664cf8f9 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x67986008 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6cb7d04f rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x70cf85c4 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x71704cab _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7796f79e rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7d03d510 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7ff5cb13 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x810f312c rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x859eb371 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x86db8673 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x885171c4 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9eb0fc66 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa7c0fcc8 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xadaa6473 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb9b09e28 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbaac68dc rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbe909c52 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc79d1388 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd327e1de rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xed13d1e1 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xef183846 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf1afac75 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf50ac40d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf58c4f76 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfd3393b9 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x33ac70af rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x416b2c79 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xd9f1f44b rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xdc8180bb rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x3f57d6d3 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4b364bf7 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x7225d326 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x7f20258f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02a82548 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x05c48282 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d3b36d1 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x144766e3 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x14863197 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1636db51 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x174b29a7 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x19983aa4 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1cedff90 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2be59a09 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2cf2276e rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x31f95f3d rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x56bd5103 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5ca86eb9 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62334560 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x666fb549 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x80ed42cc rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x80ede9a2 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x82fb6be9 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x895b9767 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x94d4e177 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x96526570 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9bbe4b56 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa47af97f rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xae9c5f6e rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb87ddfd9 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd0bfef43 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf86a187c rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfcd910b8 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xffce41d1 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x22c4d2f5 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6eded6f0 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xaffccf1e wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd3d58d85 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x0a1ad640 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x62868cf8 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xd65b4b8b fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xa5d67861 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc7cf9844 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x44e679d3 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x4d6c485f nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xb4becc4e nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xceecd7a6 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xf1161e63 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x176b9732 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xa33720e4 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xa80633c0 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x171bdcf0 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x224c8fa8 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x301d4964 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x45ebbd72 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5af6540c st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x60a686b2 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x76b8daff st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa8e544fd ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa91024a6 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd3cb7e0c ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdcaeac99 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x21197abb st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x252604d8 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x38897651 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3bbbc787 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5cbda1c8 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x67cfd22b st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x746936af st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7db3de51 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x84ea4581 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x97eeb763 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x99bbc598 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9ba9df27 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa196ec42 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb31ac13b st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb4784c20 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc284f9a6 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd18f7a7c st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd98d02f0 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x0aaca669 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x6796173f ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x7a184f1f ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9de6e789 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xa4e6ac4e ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xaeb82074 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe55befc4 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xe66c26e6 __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x19fa831f nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xc8716584 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x13780ca3 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x0863bbfc parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x0d301921 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x0f9ef430 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x1b9a5516 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x1e5130b4 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x234b0b05 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x269249fb parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x38e8bca7 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x3fe4e4ca __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6377a114 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x68cb89ab parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x7f35501f parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x80fd6cfd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x82cec322 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9e700fb6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x9f90458c parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xa0a6fd6e parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa11cf089 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa53221b0 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xa5517bfa parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xaa54121b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb3ef9756 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xc36b5809 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xc3751706 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc6863e5f parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xca12eedb parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xcc74d12a parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd7b6b484 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xeae55891 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xedb86216 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf0f40428 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xfd918685 parport_del_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x254ba70b parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x7efabad1 parport_pc_probe_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x2c10d74d iproc_pcie_setup +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x9ed2084f iproc_pcie_remove +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x06c59368 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0abff014 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x19e861c9 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2758e985 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x33110f56 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x384d2772 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x92120fc4 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd9e387d4 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xefa3e3b1 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf0d5d728 rproc_boot +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xf65be988 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x29d32b7d scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x2f83bc0a scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5c6bc0d9 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb69d7a4c scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02e3b67d fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x23c1b988 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x32a54f1d fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x42a59934 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x467ec4b6 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x48e14edf fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x52722e4b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5bad3102 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x785a9019 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa0d5ed30 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcfe09a79 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd953381b fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x011faf7c fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a1fc468 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0f3324ae fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x139ffb88 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b95a59d fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b9a1347 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f6c1ba3 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x347d4ba8 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x396d7032 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ce2df61 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3db78e8d fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e17a1f0 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46f6da11 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69d4f285 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ac2c422 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bdadc18 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ff227fa fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7095f28d fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7182e9bc fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76858d18 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x769904cc fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x798f24a3 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82708339 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83316c4a fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8caac37f fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x975f39fc fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x981e45ab fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4c69a02 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa72c7ed1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab3a368b fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xada46faf fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3cc70ea fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc140750f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc51c30a0 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc796bb8b fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd206f1bc fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd54e2ee5 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd87f0cc7 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9a88511 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0e0a007 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb203cbd fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd25ed07 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffd6f9f4 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x97be17f4 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x98195a4d sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa3c697fd sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xca2cca36 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x6de4d889 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x103d8309 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1129fcb2 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11f2661c osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24e05736 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d693113 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39f5a212 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ab67335 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41ed949f osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x46e9e16c osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d8d490e osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x542eb67b osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b8a6c6a osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x632e23ad osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d52c520 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74f8f891 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x790c694a osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x800d7e96 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87dbdd28 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9023c791 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x930610aa osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x95ffbe89 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x99e3a4a9 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b82fb9f osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9cea325e osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9eaa1371 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa574164f osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6fe6924 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb3962f1c osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbf017185 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc473c8ff osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6c500cc osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6da8ca3 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe1c0dba6 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9b00752 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6276498 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xffe6fcc1 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x017f25e8 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2e08eb07 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3497176f osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5a24b308 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x69d97bf4 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe9db4861 osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x30c7a300 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x37fb52ea qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3cb25d67 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x46e624fb qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x51e917f8 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x65302087 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x81ec5829 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc50b90ed qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd12eab19 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdcfedd64 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xee04791d qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xff681915 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/raid_class 0x31aba02c raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe0689980 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xf4805956 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x09144972 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x14b12643 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x16152e65 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x202088f9 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x235533dd fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x351ae211 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4cf8b8ed fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x634d0c69 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7d1d4203 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8b69a223 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcc8c688b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd03f67b9 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd5c41c4a fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x03b9c5b9 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x08120719 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1238788d sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x12bafbe6 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x19b9198a scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c12ef1f sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3219c2c9 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3cdba024 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x487bfd26 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x54e7a271 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x59c3ebe6 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5eb335da sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f88b650 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6c7f6846 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7dd29e1b sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x962322b2 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x974333b8 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fe6abf5 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab900186 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaff1d82a sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb46c8813 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbb10853e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc3b1433a sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc880544b sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb2e981e sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdcfafe51 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf410989c sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf6a6a749 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x11e3e9c7 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5c1b649c spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5f72927b spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6f5f12d8 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x836c8526 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0f16683f srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3171e4ac srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6100577c srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x89e5f07d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0ecafcc4 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0f78bd16 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x385be9b1 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xca8592bf ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd0df0ad3 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe0568229 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeadc8619 ufshcd_system_suspend +EXPORT_SYMBOL drivers/soc/qcom/smd 0xd4f8a7a6 qcom_smd_driver_register +EXPORT_SYMBOL drivers/soc/qcom/smd 0xe7cccb13 qcom_smd_driver_unregister +EXPORT_SYMBOL drivers/soc/qcom/smd 0xeda44e54 qcom_smd_send +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x2f5501c0 qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x63ef36e3 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x932eb0e3 qcom_smem_get +EXPORT_SYMBOL drivers/ssb/ssb 0x0f338a14 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x16071cfd ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x2cd5a049 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x4dbd7be1 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x6d0563c9 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x70fd603c ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x770a08e8 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x812f38d7 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x87d4d8a0 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x9e213f5a ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xa7d5445b ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xab16a2df ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb5dfd15f ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xbfb601e8 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcc9def7f ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xcef1a2d4 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xcf9f56db ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd9f309bc ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xfde6b52e ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xff107ad9 ssb_commit_settings +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x023b42fc fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x05509f46 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0cccd689 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0e3e70e9 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x17e8f808 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x24d5c6e2 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x321c2a4a fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x38026c09 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4293b3b8 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x446fe0f6 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x48f5d36e fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x55d89d9a fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x68fe692d fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x706b192f fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78d237e6 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x850b9c9d fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e0d29bf fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8fff71bd fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xafdddfd2 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb0cf1f44 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb6b17653 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd947b669 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe4d8e830 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf0c1ec1b fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x004a298f fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xe28cae6e fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x539c8652 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x69d85434 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x71cce7fd hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa8d41f31 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xed2acc43 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6cd12a0f ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xef97ddd4 ade7854_probe +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x98e11300 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x60f09239 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06c56722 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b8b4f5b rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ce8df16 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x136fd219 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1495dbc4 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14b9ae00 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x17b27ea3 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19457234 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a9d199b rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ead2229 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ac5212d rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e83c952 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30552429 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x369e0bd2 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3837bc72 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f5bbd54 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x412618aa rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42f64690 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x482d235a notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x553d7fa1 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5cebf7f4 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x613b8282 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79da37e7 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8513be01 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x861b2486 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8777f4df rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x89428d72 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x926c963e rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9be5645b free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa61b447f rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa82873b rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xadd92425 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaf7e9ba1 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2732782 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6431c30 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf1cab16 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb45272c rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce234539 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd58bd6f5 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdde0403d rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdfd9e504 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2225cd4 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe55adbeb rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe58b1ff4 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe6f19409 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb2a235e rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedf81d01 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3ba784a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf53de98e rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc054fcd rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x040c37bc ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06b7d625 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ac88faa ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21ade5eb ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c035d2a ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e71495a ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x352b215f ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36607c21 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38b3c929 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39e0d234 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x410684fd ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x46028284 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5be1dbf5 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c36c7b2 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d50540c ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61b8e1eb ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62ae752f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68309dba ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6974af42 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6de31560 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e3bf8d4 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fea2c8b ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7668cbed ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d2758c8 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x884583c3 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ce57b8e ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92598d09 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9329e349 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e63c513 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa233c460 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa320f7f6 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf65b9d6 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb19e1b7f SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb313346e DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc8693bac ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcab1850f ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcef7b865 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd0ccfc50 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd301e505 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5e709d9 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5f3ebaf ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8ab3af9 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe0e9a829 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4073919 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4abb281 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6aa185e ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xed1bdcdb ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0f5d7c2 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf493f201 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb8f49bb IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfbb5d095 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc742679 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd82bcc1 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b1851ed iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fede46e iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x254994ec iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e5931b0 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3881fd1b iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4793bed6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4a8399b2 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4b078ca6 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53c4da40 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x68b40ae8 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6e330c9c iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6e6fe9f3 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x763b3898 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7998bb60 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x846dc48a iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88667f89 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89e3adda iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8bb0451e iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8ce94585 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a6197d6 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ed77f93 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa414fafc iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb59c4735 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc384e48b iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce02f683 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdacb6c84 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdc87da02 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf6f06d64 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/target_core_mod 0x016aa278 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x04481809 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x06427ef4 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b94e36e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c8ab036 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x12063d07 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x176d47fe target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x185bcb47 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x19b40b67 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x19cad28e target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bf55de5 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ec11e18 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x218d1654 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x228fcd96 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ba4e5e2 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cded774 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d818be2 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x38bd2ecc target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x41fec2e6 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x5044ce37 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x541bce82 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c32079e target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x607a96c8 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x619279d3 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c53293c transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6cafbf67 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d0923a5 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fab8c1c target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x72712ba5 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b68b51a target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c066f96 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x819ff3c4 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x81d70631 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x82c8a716 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87da4bee sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x8fa786c2 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x9267a43a sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x93bf142f target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x95169d38 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x95837280 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x95b61a57 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x97694f1e target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c5a3466 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c607665 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9eb233e9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4b8cfaf transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa536eaef target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xabbd425c sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb11ca8f7 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6a4dfcb target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb7eaa63a sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc00b135 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5f2e22f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6d8cdf7 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcab2d8f2 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xcef6632b target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd403f46a core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5a32d23 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xd89335e5 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd90d1dd6 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf241837 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf4cc4d9 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xee1a4c13 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5d73743 transport_kmap_data_sg +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xb0063b58 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xf5b0dcac usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x94f50742 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x15bafcf5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x17cf4f2b usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1e525ce9 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3b532afa usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x487bf254 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7d2c7475 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7d930c2b usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x86d3b2c5 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9beab147 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xee95987e usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf8c9c975 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfe170c38 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x2ead335f usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x685db8f5 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x012ecaa0 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x09000a78 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4862f9df lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf28b5003 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x024e5513 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa1143e71 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa5cdf1d8 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa5d6ab3a svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa777145f svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd0aa931a svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf989ebd7 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x1240d4aa sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x2d801a67 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x6ce1c572 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x9987b4ff cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x8fe63788 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x15da1db8 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6356f172 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x856c1aad g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x134d714e DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x196de725 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x20105685 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x260a809a DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x85419010 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xd07e0400 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1de06fe6 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x388a88b0 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x3d0c77ad matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8043ce94 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x35169eb9 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x75cfabf1 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x1c6fc45b matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7a8e367d matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x80a48e17 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb244698a matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe38e8840 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xd853bd5a mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4f3c053f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x76384c1a w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x93e5e6a1 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0539f12 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xadbb2e79 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc4313b59 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x89578f6d w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xf626a1c5 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x055dbb22 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3d084e73 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x5c25aef8 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xdee53edc w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x0032ce74 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x0926be80 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x1f1e65d3 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x4feb581b config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x56cdb6e8 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x79f4548f config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x8ea57118 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x91fd19fc configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xa1992d83 configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0xa39efa89 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xa4339e84 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xbb7b1839 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xc04dca95 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xe53bf8e9 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf8b67fe5 configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x12d0ddb8 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x1342d48e ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x205f98a4 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2fcfc877 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x42dda079 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x48cc486a extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xcb9bc079 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xe71f3ce2 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xe7b7a5eb ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xfd123daf ore_read +EXPORT_SYMBOL fs/fscache/fscache 0x02163d10 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x06625927 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x0b3ad398 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x0cbefd4b __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0dd1734e fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x10c82c4e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x1134b6fa fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x11802573 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x1f744974 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x2c59585e fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x31183609 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x34abd867 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x34cbf11e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x39de497c __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x3cb57951 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4b7930c0 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4f245dfe __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x51022545 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5505dc73 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x65d98774 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x6968b8a4 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x6da75f56 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x83ad7d82 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x85846223 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x8c8bb05c __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8cd29436 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x961b72b7 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xa84c8d8b __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xb2234b5e __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb39c4b01 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xb41a2493 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xbce2f483 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xbd21e9b9 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xc55ea5fc __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xca6f5172 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd8dfdd0a __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xde5a845b __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xe3f87b92 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xfe8e978b fscache_init_cache +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x20fbd0cf qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb94eb160 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xdb665f98 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xeba601ed qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf4aed97a qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x7d28f74a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xad52ca6a lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x1737159d lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x6439436d lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xaf0ca156 lowpan_netdev_setup +EXPORT_SYMBOL net/802/p8022 0x270ade44 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xb7afe488 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x4a3f63a9 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xd8663f14 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x462f3994 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x4d69f9d5 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00ff229d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x041b1280 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x0ff32596 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x10c35579 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x16d0189a p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1dee25f1 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x27b19cb4 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x282c384d p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x283e9693 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x2a379524 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x38107dd2 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3b3d9e42 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x45efc738 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x4a0fb514 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x4c7f4c07 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4e2adb30 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x50c7a2f5 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x55d70f02 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x6368ff69 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x71b3c598 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x79c239b3 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x7b4d2481 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x7dfdc3a1 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x80377158 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x81c991e8 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x89a99c20 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x91263632 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xa51131c8 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xb37d20a0 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xb7f32d9b p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xc097bed9 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcc348aac p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xcf6900d1 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xd09e0c89 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd605f6ef p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf284a912 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf8cf1e58 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xfbe5cee0 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfdcc98d9 p9_is_proto_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x464334fb alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x628e84ff atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xce21b8a0 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xd32feba5 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0cee531c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x1bbd7b76 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3be7bc25 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x3f2bd302 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x550094dc atm_charge +EXPORT_SYMBOL net/atm/atm 0x593257bd atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x7111f6a2 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x828f0458 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9ebc880f register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc86698c0 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xcd56cdb4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe9dde614 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xebbdab23 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3bbf4c61 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x4164dcf5 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5b1a6fd3 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x79037f2e ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x7b89a486 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9a2bf8e3 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb5a4cb56 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee6125d2 ax25_linkfail_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04758eec bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a6d3b55 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2793192a bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c5a71fb hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x31a8aadf bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3af71698 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3bee3b94 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c861fa4 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e3dc020 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f97b96a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x524b9598 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x561ae606 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63974b78 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x690ed5b0 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6b159876 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6b55b403 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70fa1807 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x723f7d3e bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x736b059e __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x759dfe29 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x76288946 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x92a1542b bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97e84620 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9cdd5453 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e973c6d hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa2c4b1b4 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb1c38238 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5a33850 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe86b96f bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcda116a4 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdb3fd08e hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcc4084a bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdff20402 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe074a345 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe09f9edf l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe31c9dbd hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6dc8175 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7aa1452 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeae8765f bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec67e5cc hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf6d5eb76 hci_conn_check_secure +EXPORT_SYMBOL net/bridge/bridge 0x5b7ad271 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x19d1e66f ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc88b166b ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf77d7a81 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x438f1a36 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x625fbf30 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x69e72be9 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xb8ee2b25 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xc9c4a241 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x3eb8d710 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xb5f73c08 can_ioctl +EXPORT_SYMBOL net/can/can 0xc0aa7f3b can_rx_register +EXPORT_SYMBOL net/can/can 0xc93be2e5 can_proto_register +EXPORT_SYMBOL net/can/can 0xe008ecf1 can_send +EXPORT_SYMBOL net/can/can 0xe4528010 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x014f6d51 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x01568854 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x01a5dea1 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x050771a2 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0b8faf08 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x0c3639d6 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x14865553 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x170f209d osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x17ce68a4 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x1b5cfa49 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x1b953529 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x1c59342f ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1ce80021 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x1d7c4a4e ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x1d87c4dd osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x221fde6a ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x235eb582 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x2781f4f9 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x279cccde ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x289b0627 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x32d44184 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x34c1d10b ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ddb4d27 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3eb2d405 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x421db210 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x4535ac5d ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46996848 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4ab33487 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x4b0668d2 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4fa94270 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x4fe3a448 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x50c88c95 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x5361253d ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53ee060a ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59a89995 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x5b4461f9 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x5d02fad2 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x5f81d6e2 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x6225e3f3 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x6258f5bc ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x656b67ae ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6901f5ee ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e24dc71 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x704c9db3 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x706593c2 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x7aaa6ab0 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x81cbb558 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x84fc0a5f ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x88ec2bc1 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x8b8c7e8c ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x8bb6a98a ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8dc9bee9 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x8f3e4078 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9ab78541 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa40d12c7 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xa61f105f ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xa845e8b5 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xac211d43 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xadff5006 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf2127e3 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbed8c3e0 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xc28e7486 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc30bbe28 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc546b26a ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xc5c671c2 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb092363 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbd4eb0c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd514b80b osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd6f94bdd ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8955c4b ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xd92b1443 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xda0ab09f __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xdc034f5a ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xde7ed9c7 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xdedb8a54 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe1cd89d6 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xed6d8d76 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xefcf1c92 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xf083bbae ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xf6dbfbd7 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xf77cb689 ceph_put_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x78f7ae7e dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x913d6eda dccp_req_err +EXPORT_SYMBOL net/ieee802154/ieee802154 0x26e9bb84 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x567cfba8 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6e6fb763 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9829d5f9 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd35440c9 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf1606d93 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x56173578 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7daac580 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x36cd89d1 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x4c741c94 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5875c61f ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xaa81b269 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xde06cdc1 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf7d92a66 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x98bd14c8 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe2552cdc arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe29e5298 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0fac82ba ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6828e852 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb9275cca ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0xdd3e5ee3 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xf843ed40 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x99598c86 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x02974c87 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0400990b ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc59cd23b ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd3d46466 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x582efdb9 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa7412503 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaeb4ab6e ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x29e8ecdc xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x8638c99f xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x66ab0457 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x92876e93 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x887e1507 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8a3d1c15 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8c53e789 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9c274a10 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc1aa29db ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcde755a8 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe9bc828e ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xed6d7e70 ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x09c077ea async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x19190a20 irlap_open +EXPORT_SYMBOL net/irda/irda 0x2e3b6d0e alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36cad55b hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x37791344 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x3a75d6fc irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x3cfa8aeb irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4f58c1ab irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x50430d64 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x50e5c942 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x5a093821 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x5a8cafc1 iriap_open +EXPORT_SYMBOL net/irda/irda 0x5aefbab2 iriap_close +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6a6459be irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b2b6143 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7bf0fdc9 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x854eabd8 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8aafdb60 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xa5ffbde3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xb25b41f3 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb912264f async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xc4a087da irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xcb995c47 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xdd444cff irlap_close +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe03fdec4 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xebc46baa irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xec3c21ee irttp_dup +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/l2tp/l2tp_core 0xc534ce1d l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1a3d4847 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x5c8c240b lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x6728126d lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x7af51473 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x86e4b5db lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x88a6c49a lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xc7812c99 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xe273a9ce lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x1a651d35 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x24716071 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x346a4af6 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5e975151 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x8b141f81 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xd4d48674 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xe7dc491c llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x0003a831 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x07ac003e ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x0941c9df __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x0b06fdff ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x148b64c8 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x1c357605 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x1d03db3a ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2108ecde ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x22997cf8 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x248a4c25 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x2526e51c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x25ca0191 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x2780e59a ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x2ba7ca3e ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2d866d20 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x35a5236e ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x35e1134d ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x393c2717 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4696038c ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x48276f87 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x48505580 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4aa4c1d8 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4cb36634 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x4f3ffdce ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5476c28c ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5670ce51 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x591e39d8 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5a826e98 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x5ff6964c ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x638b3242 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x661a87e7 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6766fb43 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6d45bdf3 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x6e663081 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x6f81be27 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x725cba82 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x730d557f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75cd3468 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x769d4c5e ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x76b3ab7f ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7e05046b ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x821f2e8f ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x8263b4e3 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x893d508f ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x8a69c689 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8be644fa ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x8ee388d3 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x8f19ee6e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9032d254 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x944b5ad3 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x94d5c767 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x967baf45 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x96fa1372 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x9a8df6d3 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x9aba69a5 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x9bda36a4 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9c2cf0c0 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e2cf76 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa6f542da ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xa9e87847 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xad697396 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xaf2b2498 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb2ddcb9b __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbdc4fc79 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xc290ed3a ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xc478766f ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xcb9b122a ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd192b83e ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd3a0967b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdc89cdfd ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe204996e ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xe410c906 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xe6ffd669 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe769c1d3 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xe7c08b06 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xeab1b254 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xeab7af9c ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xfaff32c9 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac802154/mac802154 0x22bf6dd6 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x65c7a015 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x92c2c017 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x9a274b3d ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xaeb10181 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xe33ba2d0 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xef8279c7 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xfe9005c0 ieee802154_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x16509077 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x560762f8 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x580f741f ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5eaa45d1 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaae4375b register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xadf6ce4b ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf8c5520 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb22a3996 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc0d7d584 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc797ccf ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce822edf ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd150496e register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd8ba861a unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe00fc459 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa54c3ab6 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xaec69f1b nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe675e2fc __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0f85a8be nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x115fb8cb nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x390bc9ad nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x63530753 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x7c7c4c80 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xdbfa815b __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x370a3396 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x5698ae1e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x622bd883 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x76a4032e xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x791620f7 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8679ce50 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8e139f77 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9a0024aa xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xdd33d088 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xe797118f xt_unregister_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0349cbae nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x1de86d4d nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x1df740fc nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x23e4036f nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x2bbe51de nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x330f001d nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x37480c0a nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x51883c8e nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x583f3c1f nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x597a75a6 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x6f9940f6 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x7fd73bea nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9273ece3 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9630769c nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb41c0df1 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbbfc6788 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbeab5139 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd5177413 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xdb4228c2 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xe37fbf8e nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xfac32604 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x2898b5a3 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x2b0ee8dc nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x2c8fd254 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x2dcd82c1 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x3704cbde nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x3787de38 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x4566f607 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x48fc7753 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x583b23cb nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x5bae8e13 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x62ffb1c7 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x669b1c94 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x8179e043 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x881d04a5 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x8b17f437 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8c39069d nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xaaaaebe8 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xb4521d76 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbbd97830 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xbe459fcc nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xc97f1197 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xced4d51a nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xd77f7157 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd852ec23 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe94db6a7 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xf8e23b40 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xf9207126 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xfc0bb4e7 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nfc 0x0a5b1be4 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x13f39bfd nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x2c864848 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x2e4b7de4 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x35e759ef nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x3cd6d7d6 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x48fdc6e0 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x4ab4ff7f nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x4d9aefe5 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x70fd44b9 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7ff2dfa1 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x836c949f nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x892c3083 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x89883afc nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x8a81f7a5 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x91b4a894 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xc6aa7e35 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xd54c4638 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xd7597ca1 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xe6efee2d nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xea7cd345 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xf13e36f6 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xf875f796 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xfb056b94 nfc_class +EXPORT_SYMBOL net/nfc/nfc_digital 0x174d9b62 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x2dfa3209 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa8aaaf1c nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd2f5b869 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x0d16e164 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x3dfc64ef pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x563bb90b pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x83cdd91e pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa90ae136 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xb11ccbae phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xdb08a445 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xfee122e9 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x088b01bc key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x106b4f4e rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x242ccc41 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2f71f207 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4934060c rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x54f0ab35 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x59f487b6 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5ee68184 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64fb7c3f rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa733da17 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb5914241 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc42bfaef rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xefd14423 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf310bd98 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf66ee7bd rxrpc_kernel_begin_call +EXPORT_SYMBOL net/sctp/sctp 0xfe8031cb sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x381c9fd9 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x40561fa4 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x929c83eb gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1d37181a xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x22ba7af7 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x359678c5 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x91ec26f4 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xd02d40ed wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x049f83f1 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x082b2f84 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c190db1 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x121fde69 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x13966608 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x13fbb859 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1b0b8c23 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x1dd87f6a cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x1e4082b5 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x221ca1cc cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2e4bf232 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2ea4f259 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x2f501112 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x2ff7ac69 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x375818bf cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x37fbdcec cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x3b3f3be3 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d3fd61c cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d900e2f cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x43f44f4d cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x44685a7e wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x451a3098 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x45af8f78 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4ada796e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x4b3b1885 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x4bcdd444 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4d4e1fea cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x54783a0d wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x56c4db8e cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5afd090c cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5e6c0ca2 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x5ed81b27 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x685fa521 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70935ad5 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x72326412 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x76520e67 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x7b51c03f cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3646e6 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7c648665 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f073e50 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80ecd9d9 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x9124875b regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x94cdfc68 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a570bda cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9c59a9b0 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xa0bc3011 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa801b8bb cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xa8d0a4ed cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xad51ebdc ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xaf7c0bec wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xb08f7801 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xb09898e1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb1406e07 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb64c9142 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xb87fa22d cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb9439fc1 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xba1843f7 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xbe6a099a wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xbf5313eb cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xc49f556a cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xca5eac33 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd1e5c457 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xd6a82186 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xd6bab31f cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd6e6bfb9 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd7c64e5d cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xd8d68b42 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xd926aa25 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xde41a7bf ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xdea95a7c __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe99e8054 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xeaf7a730 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xee3218a2 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf3031529 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xf450eb2a cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xf4ae64eb cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xf5fe03e1 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xf62f9ac9 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xf75bbe02 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xfad88828 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xfbe10ea0 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x42346a27 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5ce003f1 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x62997fa0 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x78b5203b lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9ba83042 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb5b8dec0 lib80211_crypt_info_init +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xce5bf00f snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1136ff23 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x28466466 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x444c9525 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc5ecc5e7 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3100cf0f snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x127b30fb snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cdc0812 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x59eb74ae snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8102ed2f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb11ba32d snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb2c7f684 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xea0e5748 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xed42580b snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x752f43a5 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0xb1621dee snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x01fee5de snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02b985b3 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14b853b1 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x31fc9872 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3e18575d snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4ce23816 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4dda9217 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6fa7aa0a snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c906904 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8979e1ac snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8c9fd71e snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8d900d96 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9e3c7492 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa5f8a008 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb90cc3c3 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc50242bb snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf83e0400 snd_rawmidi_output_params +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6acf5567 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0e52d9f5 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3612862f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x37b54d2a snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x439eaebd snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x669e8b34 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8dfb11c8 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x96b70ada snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf9922bcc snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfe6426bd snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6307476c snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x64132391 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8bae2f0d snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8eefa3b4 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x95ac7b04 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x97a4b9d6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xac974eef snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xaeab2f45 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcda521ee snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0171df09 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04c76793 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0b8736d0 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20cc778b amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34560387 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3466b5bf amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x38c1d296 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c11458f amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x479e6f1d fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x58985d17 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59780f28 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x614efb34 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ba55f8b cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6fba8447 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x728d6241 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78f01d25 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b2d5580 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b7ce212 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x85faf400 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ede3c29 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaaae7a19 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xae8c3fc6 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbb3de2a0 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcab318e4 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcd5eba2d fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd70712f4 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb8c9069 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdbe3fbbb amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe8c4215a snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf4c044a8 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf7d9c5c5 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8456bd4 fcp_avc_transaction +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x3d74c861 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x80c3b3a9 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0c1e9ca0 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3ab7bd8c snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3ac9d8f9 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x46594263 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5b6500dd snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc6bf4fcf snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf11861da snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf44be6e5 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1a9cfa17 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x57150b41 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6c7f6656 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xdb0c9500 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x8d8ee038 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb1474a91 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1533f074 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x29775515 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x36f51a7d snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x38a45cc9 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4b9e8deb snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7e1642a1 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x09e12527 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x58a1cd26 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7ef42340 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa27e367b snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf46d9efa snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfbe3d540 snd_i2c_device_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0c2b8d25 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0d2a8902 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2d3a8aa1 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4727e0be snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6070ae75 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x66da44cb snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x81635e8e snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x90e20f86 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xac56a0d7 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb05443d7 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4c5ae5f snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe18d58b2 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe42aa64a snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf491efa6 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf6328568 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf9f0722f snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfa3adda1 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x031b948b snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x29e88f54 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x69d14ae7 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x77087554 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xab6daba7 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb3944836 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcce9cb6e snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd794ee59 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xff82d075 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x036f3602 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x75f46c66 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb2a41bad snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x017dabbd oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0464bb16 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1d974bd3 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1f799594 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2c15d596 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x603541c5 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7d9d833c oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7e69e15d oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9461cf23 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa5732edf oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaaffeede oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xac930380 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xad8b203f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe571d1c oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcb7cd98c oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcbfe1c46 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd7553978 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd89fd0f1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe844e942 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf8f47253 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfa8a7e80 oxygen_read32 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2275e5f8 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3951126e snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb984bdf3 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe46e9b7d snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfcb6ff3b snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x3789834e tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xe4d22373 tlv320aic23_regmap +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x307a50f3 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x553a9c4a snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x87e84ac0 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x97bbbb16 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9dcc8f58 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb84c2a0b snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4e542754 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x59e6f13b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x67e45ed9 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x81e81b42 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbae476ce snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe11a52a3 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe143a9af __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe8b958e8 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x9fee01e0 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000459ac audit_log_task_info +EXPORT_SYMBOL vmlinux 0x00277be9 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0041243a kdb_current_task +EXPORT_SYMBOL vmlinux 0x00657ffa page_symlink +EXPORT_SYMBOL vmlinux 0x0069ee09 tty_mutex +EXPORT_SYMBOL vmlinux 0x008679e0 tty_port_init +EXPORT_SYMBOL vmlinux 0x00963b9e dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x009f1624 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x00a1d42d devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x00ac6858 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x00c27d84 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00d7ed9c simple_transaction_set +EXPORT_SYMBOL vmlinux 0x00f7f9c8 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x011e0a42 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0174fd54 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01a9d377 elv_rb_find +EXPORT_SYMBOL vmlinux 0x01aec128 blk_end_request +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01c472bd scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x01d389de tcp_check_req +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x01efcbd8 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x01ffea68 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x0202af14 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x02487860 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027b7855 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x027ba21f elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x027f3c7b dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x029b2e46 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x029f6aa6 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a31e90 amba_find_device +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02bae2d4 netdev_err +EXPORT_SYMBOL vmlinux 0x02bc7945 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x02c034d6 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x02c9c7b3 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x02ca6949 register_sound_mixer +EXPORT_SYMBOL vmlinux 0x02cf1dd3 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x0300257d pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x03005606 omapdss_get_version +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x03034f52 current_fs_time +EXPORT_SYMBOL vmlinux 0x0309f59b put_tty_driver +EXPORT_SYMBOL vmlinux 0x031ececb snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x03209b91 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0365a7af ip_defrag +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0372d92e tcp_close +EXPORT_SYMBOL vmlinux 0x03792603 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038b99fd pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x03ae76c6 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03e134ab devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0415ba28 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042bc24e prepare_binprm +EXPORT_SYMBOL vmlinux 0x04449e5a done_path_create +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044e91bb pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x0457187e snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x045ff9c0 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x047a08e0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x04817817 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0492da2d dst_discard_out +EXPORT_SYMBOL vmlinux 0x04967057 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x04a119ef devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x04a1f723 empty_aops +EXPORT_SYMBOL vmlinux 0x04b1c4a5 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ed3a3e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x04ef33f4 key_link +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x053e0939 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x058c408f xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x0594e05f pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x05a1e503 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x05c42de3 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x05c81ec2 seq_puts +EXPORT_SYMBOL vmlinux 0x05e3a385 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x05f0bd6c pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x05fef1e4 flow_cache_init +EXPORT_SYMBOL vmlinux 0x060e5963 mount_pseudo +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062fd82e mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064827a1 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x064e08b5 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0658ff18 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x06777805 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06a0cdc6 phy_print_status +EXPORT_SYMBOL vmlinux 0x06ae2c10 of_phy_connect +EXPORT_SYMBOL vmlinux 0x06dd3efc mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x06faec9e pci_set_master +EXPORT_SYMBOL vmlinux 0x06fb3f18 nf_log_unset +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07041dfc devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x071eb100 inet_bind +EXPORT_SYMBOL vmlinux 0x072ae051 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07528921 led_set_brightness +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x079866cd sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a8bf79 inet_ioctl +EXPORT_SYMBOL vmlinux 0x07b7f4d0 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07e64e33 dm_io +EXPORT_SYMBOL vmlinux 0x07eeaace pci_dev_put +EXPORT_SYMBOL vmlinux 0x07f670be lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x0821ee84 blk_finish_request +EXPORT_SYMBOL vmlinux 0x08244b47 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0829d926 devm_release_resource +EXPORT_SYMBOL vmlinux 0x082b71be skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08770b5e sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x089cb109 pci_bus_put +EXPORT_SYMBOL vmlinux 0x08a3c7d6 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x08a8c2a8 simple_getattr +EXPORT_SYMBOL vmlinux 0x08ab0834 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x08ba6941 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x08bc47f6 scsi_device_get +EXPORT_SYMBOL vmlinux 0x08c1f956 stop_tty +EXPORT_SYMBOL vmlinux 0x08c21111 phy_detach +EXPORT_SYMBOL vmlinux 0x08c79d43 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x08cc8a0f end_page_writeback +EXPORT_SYMBOL vmlinux 0x08e17827 fd_install +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x0923c224 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x092ce6eb sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x09377cff kthread_bind +EXPORT_SYMBOL vmlinux 0x0942b2b6 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x0963dda9 snd_device_new +EXPORT_SYMBOL vmlinux 0x097e4e11 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x09843f20 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0999ed58 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x099ec9a2 mount_nodev +EXPORT_SYMBOL vmlinux 0x09a82195 vfs_readv +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09da5b52 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x09db2c94 sock_no_connect +EXPORT_SYMBOL vmlinux 0x09e26fec cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x09ed9626 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x09ef1d63 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x0a04a91b mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a17f642 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3b11cb ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a51e638 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x0a5f0d6c blk_stop_queue +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa4cb55 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae7d25e km_is_alive +EXPORT_SYMBOL vmlinux 0x0af09ffa bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x0af836fb __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x0b09acee file_ns_capable +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b181c15 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5428c9 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x0b5a98e0 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b6fd67d input_inject_event +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7a776d pci_match_id +EXPORT_SYMBOL vmlinux 0x0b83411d of_root +EXPORT_SYMBOL vmlinux 0x0b94f6f9 single_open +EXPORT_SYMBOL vmlinux 0x0bb57210 fput +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd0087b tcp_proc_register +EXPORT_SYMBOL vmlinux 0x0bd029b5 km_state_notify +EXPORT_SYMBOL vmlinux 0x0bfcce61 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x0c0b2014 dentry_open +EXPORT_SYMBOL vmlinux 0x0c1a3727 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x0c1ee71c tcp_splice_read +EXPORT_SYMBOL vmlinux 0x0c1f00f6 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x0c21df87 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c549551 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c933671 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb83bee ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x0cd23803 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cec3560 audit_log +EXPORT_SYMBOL vmlinux 0x0cf1e2f1 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x0cfd49cf inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d0cb42a snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x0d0f8821 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x0d380755 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d4ff0dd mark_page_accessed +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6a298c xattr_full_name +EXPORT_SYMBOL vmlinux 0x0d92048a blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0d95d087 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da81f15 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x0daa7449 contig_page_data +EXPORT_SYMBOL vmlinux 0x0db0c0eb __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dd0bcff eth_type_trans +EXPORT_SYMBOL vmlinux 0x0e01b090 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x0e134aca kernel_getsockname +EXPORT_SYMBOL vmlinux 0x0e44d3a3 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x0e694301 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e778918 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x0e79f9df bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x0e8314a9 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x0e886587 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x0e8a232b dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x0e92a665 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x0ea22519 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed1dc60 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x0ee8a7ea start_tty +EXPORT_SYMBOL vmlinux 0x0ee8d203 block_write_begin +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0eeca1c9 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x0ef3c240 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0eff5598 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x0f0da841 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x0f168784 snd_register_device +EXPORT_SYMBOL vmlinux 0x0f22432e netif_napi_del +EXPORT_SYMBOL vmlinux 0x0f3ceb25 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f77ac94 proc_set_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f9b834f scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x0fa10d02 register_sound_dsp +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa707e0 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbb3c38 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x0fc5a4b5 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x0fda298b inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x0fdba423 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x0fe40155 uart_register_driver +EXPORT_SYMBOL vmlinux 0x0fe91e2e of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10265ec2 get_disk +EXPORT_SYMBOL vmlinux 0x1036d589 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x104ebf73 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x1056b0c2 copy_from_iter +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1073b999 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x107711e2 generic_read_dir +EXPORT_SYMBOL vmlinux 0x10772211 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x107eeefc __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x10933f20 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1094446d __frontswap_test +EXPORT_SYMBOL vmlinux 0x10a46e3a i2c_register_driver +EXPORT_SYMBOL vmlinux 0x10a6e460 to_nd_btt +EXPORT_SYMBOL vmlinux 0x10e9a8df tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110ce129 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1192d00b padata_do_parallel +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b08ef2 dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x11b4ac39 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x11c09b05 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x11e4fcbd snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121b4e4b memremap +EXPORT_SYMBOL vmlinux 0x1237430e make_kgid +EXPORT_SYMBOL vmlinux 0x1248873d input_get_keycode +EXPORT_SYMBOL vmlinux 0x124925ed dev_add_pack +EXPORT_SYMBOL vmlinux 0x124dcb2e __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x1252f5a1 try_module_get +EXPORT_SYMBOL vmlinux 0x12792d08 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a892b1 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x12c85751 omapdss_register_display +EXPORT_SYMBOL vmlinux 0x12d26758 __free_pages +EXPORT_SYMBOL vmlinux 0x12d73ba6 seq_printf +EXPORT_SYMBOL vmlinux 0x12da00bf md_check_recovery +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f4a350 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1352628d block_write_full_page +EXPORT_SYMBOL vmlinux 0x1352fbf2 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x135858e4 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x136e4927 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x13773954 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x138bd05b blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x138dd972 cdrom_release +EXPORT_SYMBOL vmlinux 0x13935fc6 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x13a9e11d request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x13b24374 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x13bf0959 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x13cbd97b dquot_initialize +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13df43a2 __page_symlink +EXPORT_SYMBOL vmlinux 0x13eefd53 ihold +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143c48e5 sync_blockdev +EXPORT_SYMBOL vmlinux 0x1447e997 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x147b5070 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x148049a8 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x14824799 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x1487578d dma_supported +EXPORT_SYMBOL vmlinux 0x14bae720 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14d60c71 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x14ef0126 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x14f7c0b2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1500ae1f snd_card_file_remove +EXPORT_SYMBOL vmlinux 0x15104ba8 softnet_data +EXPORT_SYMBOL vmlinux 0x15198c6f blk_start_queue +EXPORT_SYMBOL vmlinux 0x1526cd52 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x152ea1d5 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x15432e3d led_blink_set +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x159c8201 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x15b815aa devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bd01ab set_binfmt +EXPORT_SYMBOL vmlinux 0x15c946ea kern_path_create +EXPORT_SYMBOL vmlinux 0x15d3472d mutex_trylock +EXPORT_SYMBOL vmlinux 0x15e20efd inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x15fc7a22 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x160ef5d5 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x161f9f8a swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1647c726 __destroy_inode +EXPORT_SYMBOL vmlinux 0x164f4d9a sk_stream_error +EXPORT_SYMBOL vmlinux 0x164f6e88 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x1652756c skb_pad +EXPORT_SYMBOL vmlinux 0x166eeeda posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x167486c5 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x167f91d3 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x169c3244 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x16b6b9ca tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x16bf2982 pci_find_capability +EXPORT_SYMBOL vmlinux 0x16c62180 block_write_end +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16fd3ff4 kill_block_super +EXPORT_SYMBOL vmlinux 0x1730e0cf generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x174bff3e xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x178f0316 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x179fc57e inet6_del_offload +EXPORT_SYMBOL vmlinux 0x17a199ba blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x17a404d8 lease_modify +EXPORT_SYMBOL vmlinux 0x17a4aa17 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x17a50bf7 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c0d5ce mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x17c1a4d0 vfs_link +EXPORT_SYMBOL vmlinux 0x17cda4a7 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x17ed7b45 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x17fa6ba4 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x1809556d pneigh_lookup +EXPORT_SYMBOL vmlinux 0x18120525 of_get_next_child +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x185f13a2 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x186d790b skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x186dc8db pci_reenable_device +EXPORT_SYMBOL vmlinux 0x18716622 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1890e85e vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189c5980 arm_copy_to_user +EXPORT_SYMBOL vmlinux 0x18ab1b78 snd_card_free +EXPORT_SYMBOL vmlinux 0x18b4e5ba clk_get +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18caf376 __scm_send +EXPORT_SYMBOL vmlinux 0x18d68d6d rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18f16cca pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x18f84ed6 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x192356a9 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x195fd87f dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x196166c4 d_instantiate +EXPORT_SYMBOL vmlinux 0x1962dde1 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x196e84c3 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x19700c04 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1978fa1c tty_lock +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199c6321 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19b2441f inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x19b34318 security_file_permission +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be067e security_path_rmdir +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a0830f2 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x1a1284e1 generic_readlink +EXPORT_SYMBOL vmlinux 0x1a43b26b inet_shutdown +EXPORT_SYMBOL vmlinux 0x1a525f07 seq_vprintf +EXPORT_SYMBOL vmlinux 0x1a549d4f inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6797f2 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1a6d85d3 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x1a6f962f netdev_change_features +EXPORT_SYMBOL vmlinux 0x1a9ba1c2 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x1aa54c3c snd_card_new +EXPORT_SYMBOL vmlinux 0x1aabde34 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x1aba0611 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x1abcd66b phy_drivers_register +EXPORT_SYMBOL vmlinux 0x1abdfbcb d_add_ci +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1aebc252 neigh_lookup +EXPORT_SYMBOL vmlinux 0x1aef1f47 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b12086b snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x1b147c76 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b42142a seq_read +EXPORT_SYMBOL vmlinux 0x1b4be681 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x1b515e98 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b645b59 udp_set_csum +EXPORT_SYMBOL vmlinux 0x1b73d67d lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8af27d snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x1b9afa85 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x1b9d6240 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x1ba08190 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x1bb14a5b fb_class +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb4f043 napi_get_frags +EXPORT_SYMBOL vmlinux 0x1bc6a9e6 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x1bd7f8fc dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c323fb0 omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x1c40c183 i2c_release_client +EXPORT_SYMBOL vmlinux 0x1c537ae6 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c5f25b3 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x1c701c6d __neigh_create +EXPORT_SYMBOL vmlinux 0x1c80343a netif_receive_skb +EXPORT_SYMBOL vmlinux 0x1c99eb7a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x1cbe09eb clear_nlink +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1cfe871e blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d30430a pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x1d31cf4c tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x1d34d39f reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x1d4a6831 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x1d6cf4c4 generic_removexattr +EXPORT_SYMBOL vmlinux 0x1d88f045 dquot_alloc +EXPORT_SYMBOL vmlinux 0x1d89f32b proto_register +EXPORT_SYMBOL vmlinux 0x1d919432 mmc_free_host +EXPORT_SYMBOL vmlinux 0x1da8ecbd skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x1daae0b7 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x1dbe044d block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc4f57d blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0d6def kernel_read +EXPORT_SYMBOL vmlinux 0x1e0e5114 dev_err +EXPORT_SYMBOL vmlinux 0x1e152ffb tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x1e1b1bcb get_fs_type +EXPORT_SYMBOL vmlinux 0x1e220bc7 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e4f7c63 path_is_under +EXPORT_SYMBOL vmlinux 0x1e562b7b ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e844e28 register_sound_special_device +EXPORT_SYMBOL vmlinux 0x1e8c3f25 dev_load +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea877b3 secpath_dup +EXPORT_SYMBOL vmlinux 0x1ee3e724 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1eecc4f6 mpage_readpage +EXPORT_SYMBOL vmlinux 0x1f2c4427 __register_chrdev +EXPORT_SYMBOL vmlinux 0x1f4f0fe7 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x1f54b15b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x1f5d257f generic_update_time +EXPORT_SYMBOL vmlinux 0x1f723b09 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x1f78c1c4 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x1f7d35bd jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x1f7e0153 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8b7545 prepare_creds +EXPORT_SYMBOL vmlinux 0x1f9d52a9 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x1fa2fafa tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd5afae inet_getname +EXPORT_SYMBOL vmlinux 0x1fe748c7 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fea7472 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffc06cd bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20193da7 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x201c15e3 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x20283dc5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204bdbf4 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2084ae60 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x208e05c5 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x208e8841 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x20a1be3a pci_dev_get +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c416b2 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x20c41e0f unlock_new_inode +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d6b762 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20fad7c4 of_get_parent +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x21353b97 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x21403338 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x2141e0da pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x2150f058 neigh_xmit +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x21707910 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x217c7940 netdev_notice +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x219dc144 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x21a69ee3 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x21c8d9c1 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x21d1d80d netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x21d71a1b sk_receive_skb +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x220a2c10 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x220a5234 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x2229ac9a of_translate_address +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x22385a6c vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226a4c80 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0x227612db __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278aeb0 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x227dc5ac mmc_register_driver +EXPORT_SYMBOL vmlinux 0x2295d0a8 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x229a5d77 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b91e45 vm_map_ram +EXPORT_SYMBOL vmlinux 0x22bace16 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x22c2c16e pci_map_rom +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22e5a6da __inet_hash +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23283e65 genl_notify +EXPORT_SYMBOL vmlinux 0x233750c9 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x2345ac02 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x2346dc3c kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x2347d194 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x23563c43 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x235b3fe6 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x23629da9 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x23686443 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x23792db3 irq_set_chip +EXPORT_SYMBOL vmlinux 0x237ec5a4 pci_get_slot +EXPORT_SYMBOL vmlinux 0x2398cf65 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x239a5c86 fb_find_mode +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23abdd05 sock_efree +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23cc6196 __bforget +EXPORT_SYMBOL vmlinux 0x23cfe1e4 write_inode_now +EXPORT_SYMBOL vmlinux 0x23e0befa inode_get_bytes +EXPORT_SYMBOL vmlinux 0x23ef05f7 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x23efd487 single_open_size +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2411d634 release_sock +EXPORT_SYMBOL vmlinux 0x24191691 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2434d168 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2443ad29 follow_down +EXPORT_SYMBOL vmlinux 0x244dd4d4 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a39a2 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x24641e04 should_remove_suid +EXPORT_SYMBOL vmlinux 0x2468f429 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x2472cdad __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248d0dfa __napi_complete +EXPORT_SYMBOL vmlinux 0x249042e2 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24cb0929 __module_get +EXPORT_SYMBOL vmlinux 0x24cea9b3 key_alloc +EXPORT_SYMBOL vmlinux 0x24d54908 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25060448 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x250db590 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x251927fb jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25417874 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x254c6e0e scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x25606697 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x25664870 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257d5857 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2598113d dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x25d4f9cf phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ea10a7 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x25edc6fe pci_read_vpd +EXPORT_SYMBOL vmlinux 0x25eee032 give_up_console +EXPORT_SYMBOL vmlinux 0x26056f72 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x2616de3b free_buffer_head +EXPORT_SYMBOL vmlinux 0x26300125 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2646eede file_open_root +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265554b9 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x2657fb1e xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x265a3f8a scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x265c4c64 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x265ef63e passthru_features_check +EXPORT_SYMBOL vmlinux 0x268680b4 fb_get_mode +EXPORT_SYMBOL vmlinux 0x26adfe6a revert_creds +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26be8810 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26c2d6ff i2c_master_recv +EXPORT_SYMBOL vmlinux 0x26c5d6c5 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x26c8bda1 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27305432 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x27447ec1 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274c2357 snd_pcm_new +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27887c15 elv_add_request +EXPORT_SYMBOL vmlinux 0x2788dc31 inet_addr_type +EXPORT_SYMBOL vmlinux 0x2791c932 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x279545bd fifo_set_limit +EXPORT_SYMBOL vmlinux 0x2796aa94 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x279aa7e7 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d8f963 tty_port_put +EXPORT_SYMBOL vmlinux 0x27e0a6bf genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e8b80a of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x27ecbf17 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x27ffa9ad deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x2807553b tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2854a7b8 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x285e95ef dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x285fead2 blk_queue_split +EXPORT_SYMBOL vmlinux 0x288c573c poll_initwait +EXPORT_SYMBOL vmlinux 0x288f2a64 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x2897728c udp_del_offload +EXPORT_SYMBOL vmlinux 0x289defed __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28bb1a76 tty_port_close +EXPORT_SYMBOL vmlinux 0x28e744eb nonseekable_open +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x28f8ca34 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x29268093 unlock_buffer +EXPORT_SYMBOL vmlinux 0x292f691d dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x2941a845 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x294c3ff4 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960a87e bio_endio +EXPORT_SYMBOL vmlinux 0x2980de1c __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x29a192e1 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x29cb84d4 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x29e1475d mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29e52fc9 tso_build_data +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a034307 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x2a22366c skb_pull +EXPORT_SYMBOL vmlinux 0x2a2f25f2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a34829e __sb_start_write +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a4f2aa9 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x2a5694e8 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x2a86570a iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab181a7 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x2abab54b netdev_emerg +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad64543 snd_pcm_create_iec958_consumer +EXPORT_SYMBOL vmlinux 0x2adfaee8 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x2ae27e84 iunique +EXPORT_SYMBOL vmlinux 0x2ae33694 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL vmlinux 0x2af9a89c kmap_atomic +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b17001e block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2b176b57 lro_flush_all +EXPORT_SYMBOL vmlinux 0x2b181a1a gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b68c722 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x2b709dcd snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x2b799975 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x2b7d6734 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba9f2c6 dget_parent +EXPORT_SYMBOL vmlinux 0x2bc1f56d inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x2bca79b8 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2bcae4fc pci_bus_type +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be204c3 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x2bf4e2fc abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x2bfdbda8 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2c0bcf8e netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c155205 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2cae95ad netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2cc356be fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2cc3a908 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x2cca21bf blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x2cf180d0 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x2cff6c52 cdev_alloc +EXPORT_SYMBOL vmlinux 0x2d02e01b nf_log_set +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1f819a padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2d252f5e mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3881de copy_to_iter +EXPORT_SYMBOL vmlinux 0x2d4159dc keyring_clear +EXPORT_SYMBOL vmlinux 0x2d58a73d cdev_add +EXPORT_SYMBOL vmlinux 0x2d5fcf21 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2d64276d xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d66deca dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d80a4f4 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x2d9063bc pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x2d9f089c blk_put_request +EXPORT_SYMBOL vmlinux 0x2da12a9d ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x2dae8dde phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x2db010cd sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x2db3b802 get_tz_trend +EXPORT_SYMBOL vmlinux 0x2dcf1464 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dde9672 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x2de9664a simple_dname +EXPORT_SYMBOL vmlinux 0x2debd204 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2fecc6 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x2e394b2e xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x2e46d5b6 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x2e480f96 __find_get_block +EXPORT_SYMBOL vmlinux 0x2e505ed1 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x2e57aefa security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e602836 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x2e6e492f netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x2e82e5b7 init_net +EXPORT_SYMBOL vmlinux 0x2ea4945d netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x2eb86052 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2ef3be16 from_kuid +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efa7bdb inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x2efe9cff xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f20947b of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x2f215735 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x2f3bb4f3 datagram_poll +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4a0df6 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f717a7b drop_nlink +EXPORT_SYMBOL vmlinux 0x2f81ba74 map_destroy +EXPORT_SYMBOL vmlinux 0x2fa25fb5 init_special_inode +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff39c1f vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x30089909 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x3016a9d7 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30472662 tcf_register_action +EXPORT_SYMBOL vmlinux 0x30610d5b del_gendisk +EXPORT_SYMBOL vmlinux 0x3061c481 clk_add_alias +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x309036e4 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x30963d99 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309c9cb7 serio_close +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a9bde0 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fedc82 skb_make_writable +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312b1cd4 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x31469e59 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31582ba2 input_open_device +EXPORT_SYMBOL vmlinux 0x315cf880 input_close_device +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31783277 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x3178d73c vfs_unlink +EXPORT_SYMBOL vmlinux 0x31885dd4 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31b02389 simple_rename +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b8aabf bdget +EXPORT_SYMBOL vmlinux 0x31ba5f71 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x31c11054 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x31d09859 account_page_redirty +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x32056ccd inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x32167cd2 do_truncate +EXPORT_SYMBOL vmlinux 0x32183848 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x3220eca1 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x3248924f __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x324e66b4 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x326887ba tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x329e90d8 skb_dequeue +EXPORT_SYMBOL vmlinux 0x32a1d210 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x32ae9040 pci_iounmap +EXPORT_SYMBOL vmlinux 0x32af9dda cdev_del +EXPORT_SYMBOL vmlinux 0x32b7ccfe get_mem_type +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32ed8019 search_binary_handler +EXPORT_SYMBOL vmlinux 0x330bca73 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x330dc968 clear_inode +EXPORT_SYMBOL vmlinux 0x331598b8 nf_log_trace +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x332bcd95 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x3337a5f3 generic_writepages +EXPORT_SYMBOL vmlinux 0x3347eb79 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3357e760 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x336268aa mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x33683630 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x3374f02f inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x3379fccf zpool_register_driver +EXPORT_SYMBOL vmlinux 0x337ff903 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x3387cac5 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x338940bd scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x33915f0b blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x33943f64 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x339f1340 filemap_fault +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33ea74ca iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f5881e nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x34081000 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x34111604 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x34173258 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x34178795 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3424fba9 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x346333ed down_read_trylock +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3471083b kmem_cache_size +EXPORT_SYMBOL vmlinux 0x34744173 netpoll_setup +EXPORT_SYMBOL vmlinux 0x347de5d1 open_exec +EXPORT_SYMBOL vmlinux 0x347df15f filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a6a6e0 phy_init_eee +EXPORT_SYMBOL vmlinux 0x34bddb1b bd_set_size +EXPORT_SYMBOL vmlinux 0x34cb9486 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x34d80818 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x34d9b909 bdevname +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351d5164 __devm_release_region +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3572abc9 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x3573fbbe blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x35951855 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ad51e5 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x35ba06e8 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x35bc0d55 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x3608ece3 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x362e22e0 simple_lookup +EXPORT_SYMBOL vmlinux 0x363114dd arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x36330ea2 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x366122ec tcp_prot +EXPORT_SYMBOL vmlinux 0x366d59db request_key_async +EXPORT_SYMBOL vmlinux 0x3674a196 free_page_put_link +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36810d13 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x36bb7fc0 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36d9271c down_read +EXPORT_SYMBOL vmlinux 0x36dff091 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x36e40647 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x36e40c50 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x370c012c xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x373b818a ps2_begin_command +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x377ce5c4 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x37966b78 lookup_bdev +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37bb3979 vfs_create +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d8adad blk_get_request +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3838c734 sock_create_kern +EXPORT_SYMBOL vmlinux 0x38390c22 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x3853d301 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x385eecbf tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x3874a328 console_start +EXPORT_SYMBOL vmlinux 0x38783739 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x387e04d2 __invalidate_device +EXPORT_SYMBOL vmlinux 0x387ee3e1 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x387f2a16 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x388187eb dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3897ad62 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a53aab unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b403c5 tty_free_termios +EXPORT_SYMBOL vmlinux 0x38bad370 sk_capable +EXPORT_SYMBOL vmlinux 0x38c36ec0 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x38d994de elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x38de5f4b always_delete_dentry +EXPORT_SYMBOL vmlinux 0x38e98a8e udp_seq_open +EXPORT_SYMBOL vmlinux 0x38eabf98 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x3914c2b2 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3956c382 simple_empty +EXPORT_SYMBOL vmlinux 0x39639629 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x396bee73 vfs_llseek +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39af182e snd_device_register +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39ed3ed3 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x39fb4b6b __skb_get_hash +EXPORT_SYMBOL vmlinux 0x39ff6918 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x3a09e803 blk_init_tags +EXPORT_SYMBOL vmlinux 0x3a0bed12 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a1c68b5 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x3a34ac15 dput +EXPORT_SYMBOL vmlinux 0x3a4324a3 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3a4639ac generic_file_mmap +EXPORT_SYMBOL vmlinux 0x3a4e6b57 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ad6c6fc netdev_state_change +EXPORT_SYMBOL vmlinux 0x3ae89055 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x3aef312b blk_integrity_register +EXPORT_SYMBOL vmlinux 0x3aff407a dup_iter +EXPORT_SYMBOL vmlinux 0x3affd579 input_set_capability +EXPORT_SYMBOL vmlinux 0x3b090147 address_space_init_once +EXPORT_SYMBOL vmlinux 0x3b18f1c1 d_set_d_op +EXPORT_SYMBOL vmlinux 0x3b1ef4de skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x3b3f9a24 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x3b607685 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6ffbe3 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b99b4e9 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3c24c21a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3c290697 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c40e837 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x3c502087 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3c5f3a8e seq_lseek +EXPORT_SYMBOL vmlinux 0x3c6b8a19 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x3c6e978f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x3c7c72de nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c80f362 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x3c8b6559 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc8a1d9 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x3cd76eea of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x3cd78ede __nd_driver_register +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3cdb1001 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x3ce26c5e netdev_features_change +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfe0ef1 generic_show_options +EXPORT_SYMBOL vmlinux 0x3d03367f kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x3d071e2a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x3d1fc72b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x3d2c81d5 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d471002 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x3d77db21 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3d99b4fc snd_jack_new +EXPORT_SYMBOL vmlinux 0x3da5d652 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x3da9860a inet6_ioctl +EXPORT_SYMBOL vmlinux 0x3daf74d1 param_get_long +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0636d5 bioset_create +EXPORT_SYMBOL vmlinux 0x3e071c00 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x3e1770cd tty_write_room +EXPORT_SYMBOL vmlinux 0x3e26edbd security_path_rename +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e308352 ptp_clock_register +EXPORT_SYMBOL vmlinux 0x3e71bb90 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x3e731b46 cdrom_open +EXPORT_SYMBOL vmlinux 0x3e827926 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3eb078e8 release_pages +EXPORT_SYMBOL vmlinux 0x3eb36fba dump_align +EXPORT_SYMBOL vmlinux 0x3ed71a9b wireless_send_event +EXPORT_SYMBOL vmlinux 0x3ed774e0 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x3ee709d9 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x3efdc9e3 icmp_send +EXPORT_SYMBOL vmlinux 0x3f00f6ef mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x3f099378 mdiobus_free +EXPORT_SYMBOL vmlinux 0x3f20f183 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f660437 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x3f7b1cd9 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fb49c32 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x3fba5c4e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x3fbec408 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x3fd2ea20 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fed669e simple_unlink +EXPORT_SYMBOL vmlinux 0x3feeb758 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x3ff1c317 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x3ff3111e default_file_splice_read +EXPORT_SYMBOL vmlinux 0x3ffc4ab5 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x3ffee13e nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x40165879 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x40202089 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x4021d9fe pci_platform_rom +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4069fed4 vfs_writev +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x40756649 omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x4082814e skb_checksum +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ac551b gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3bb60 mpage_writepages +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d79f25 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f07e63 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x40faf338 register_gifconf +EXPORT_SYMBOL vmlinux 0x410ede7d seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x4119f04e invalidate_bdev +EXPORT_SYMBOL vmlinux 0x411aa5cb elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4149ed8e of_get_mac_address +EXPORT_SYMBOL vmlinux 0x41634282 poll_freewait +EXPORT_SYMBOL vmlinux 0x41635872 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x417595c9 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x418251d2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x418bf2fc __init_rwsem +EXPORT_SYMBOL vmlinux 0x4191bbc3 set_page_dirty +EXPORT_SYMBOL vmlinux 0x41971172 send_sig_info +EXPORT_SYMBOL vmlinux 0x419deb58 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41c42aa9 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x41eccbfe phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x41eceb94 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x41f6387a phy_init_hw +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42193413 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x4229fbcd lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x426dd461 __dst_free +EXPORT_SYMBOL vmlinux 0x4290b13a ata_dev_printk +EXPORT_SYMBOL vmlinux 0x4293a51a __break_lease +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429b94fe snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ecf546 ioremap +EXPORT_SYMBOL vmlinux 0x42f8e18a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4305dca0 to_ndd +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x4328f9d0 skb_find_text +EXPORT_SYMBOL vmlinux 0x4345e80e sk_filter +EXPORT_SYMBOL vmlinux 0x4349ec46 bh_submit_read +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x437d11f6 elv_rb_del +EXPORT_SYMBOL vmlinux 0x4380746c drop_super +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438f7ff1 eth_header_cache +EXPORT_SYMBOL vmlinux 0x4394e020 dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x43c15713 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4401b6b8 replace_mount_options +EXPORT_SYMBOL vmlinux 0x440ed94b d_set_fallthru +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4419fe9b amba_device_register +EXPORT_SYMBOL vmlinux 0x441ab2ca __pci_register_driver +EXPORT_SYMBOL vmlinux 0x44208a11 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44288c1d thaw_bdev +EXPORT_SYMBOL vmlinux 0x442ce968 netif_skb_features +EXPORT_SYMBOL vmlinux 0x442e7265 lock_rename +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443a8703 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x4442e872 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4443f918 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x444fffc9 of_dev_put +EXPORT_SYMBOL vmlinux 0x44562218 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x4463f7c9 blk_start_request +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4465bd1d __bread_gfp +EXPORT_SYMBOL vmlinux 0x44829da7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x4496f61f netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x4499a8f1 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x44a09bc7 fget +EXPORT_SYMBOL vmlinux 0x44ae6984 path_get +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c23cb8 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f5186f phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x44fa0982 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x45053397 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x4508e67a seq_hex_dump +EXPORT_SYMBOL vmlinux 0x450c4c80 register_console +EXPORT_SYMBOL vmlinux 0x450d81ae vme_slave_request +EXPORT_SYMBOL vmlinux 0x451369f4 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x45159b87 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x452f1f4c tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x452f459f tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x4530ce39 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453f63f9 brioctl_set +EXPORT_SYMBOL vmlinux 0x4549eefe thaw_super +EXPORT_SYMBOL vmlinux 0x454abb99 proc_create_data +EXPORT_SYMBOL vmlinux 0x4561f77f tcp_disconnect +EXPORT_SYMBOL vmlinux 0x45680285 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x456b43ef dev_remove_pack +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45901063 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45a9e749 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x45b86ba7 dev_uc_add +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45ee183d tty_hangup +EXPORT_SYMBOL vmlinux 0x460ad8b7 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463b4919 kfree_skb +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46633caf sk_alloc +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x4681bfe2 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x468d1f83 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x46b6a8e3 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x46bd159f dev_mc_sync +EXPORT_SYMBOL vmlinux 0x46ca246c omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46db1538 iget_locked +EXPORT_SYMBOL vmlinux 0x46dde3e7 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x46de3e96 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x46e7076a ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x46ecf590 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47043ba5 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x47089a06 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x473f1c74 kmap +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474fa65c bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4776d526 dev_mc_del +EXPORT_SYMBOL vmlinux 0x478363f0 do_splice_from +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47acf829 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47ec1124 i2c_transfer +EXPORT_SYMBOL vmlinux 0x47f2c0bd snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x480c3798 inet6_offloads +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4842ea04 dqget +EXPORT_SYMBOL vmlinux 0x484b8f40 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x48562396 ppp_input +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487856bd mmc_start_req +EXPORT_SYMBOL vmlinux 0x4888da1d snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x4889ab68 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x489b4c62 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48b4521a pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bac2b7 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x48c97bdd rtnl_create_link +EXPORT_SYMBOL vmlinux 0x48d831a5 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490650f3 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x491b9256 sock_no_accept +EXPORT_SYMBOL vmlinux 0x492d7820 kmap_high +EXPORT_SYMBOL vmlinux 0x493c64d4 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x494444cd serio_open +EXPORT_SYMBOL vmlinux 0x4945729c xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4966c395 of_find_property +EXPORT_SYMBOL vmlinux 0x4970ff36 d_lookup +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x499c53d1 km_report +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49be0d78 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x49c06623 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x49dfa794 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x49e1cae8 elevator_change +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a00a782 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x4a061054 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x4a0e3f47 backlight_force_update +EXPORT_SYMBOL vmlinux 0x4a109001 kernel_listen +EXPORT_SYMBOL vmlinux 0x4a142484 snd_card_register +EXPORT_SYMBOL vmlinux 0x4a152281 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x4a1d4ee6 set_nlink +EXPORT_SYMBOL vmlinux 0x4a1d63e0 security_path_unlink +EXPORT_SYMBOL vmlinux 0x4a31706e bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x4a386ce0 input_register_handle +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a493b34 tty_throttle +EXPORT_SYMBOL vmlinux 0x4a4ed1eb fsync_bdev +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a6c527c netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x4a714fdf md_write_start +EXPORT_SYMBOL vmlinux 0x4a83971b __ip_select_ident +EXPORT_SYMBOL vmlinux 0x4a8fdd24 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x4aa6f27f device_get_mac_address +EXPORT_SYMBOL vmlinux 0x4aa9c358 dquot_drop +EXPORT_SYMBOL vmlinux 0x4ab29424 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x4ab37c2d fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4af71472 backlight_device_register +EXPORT_SYMBOL vmlinux 0x4afc1176 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b066462 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x4b0b03cc dquot_get_state +EXPORT_SYMBOL vmlinux 0x4b18e59f ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2a19ac try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x4b3932a5 dev_change_flags +EXPORT_SYMBOL vmlinux 0x4b527a2e uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x4b5ef7bd gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b621a9d dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4b735eeb input_reset_device +EXPORT_SYMBOL vmlinux 0x4b7578cf inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x4b76f2e1 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bafd021 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bce0f36 gen_pool_create +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd6cb29 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4c03a879 phy_find_first +EXPORT_SYMBOL vmlinux 0x4c0fed82 kill_anon_super +EXPORT_SYMBOL vmlinux 0x4c0ff987 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x4c123624 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c39d7de mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x4c473639 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c7d2f84 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c8c8704 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4c94c5e3 dump_emit +EXPORT_SYMBOL vmlinux 0x4c9e0ecf is_bad_inode +EXPORT_SYMBOL vmlinux 0x4caa92b9 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cbfea64 skb_tx_error +EXPORT_SYMBOL vmlinux 0x4cc9ac73 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x4cd9f723 tcp_poll +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf00fe5 seq_putc +EXPORT_SYMBOL vmlinux 0x4cf2165a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x4d07d9a6 fb_set_var +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d399b83 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d50f7a1 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x4d619827 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4d6b4386 blk_complete_request +EXPORT_SYMBOL vmlinux 0x4d757b84 km_query +EXPORT_SYMBOL vmlinux 0x4d7e20e0 simple_link +EXPORT_SYMBOL vmlinux 0x4d8a8fa0 from_kgid +EXPORT_SYMBOL vmlinux 0x4d8b3860 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4daede21 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x4db5da6a unlock_rename +EXPORT_SYMBOL vmlinux 0x4dcf5140 sock_wfree +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4010cf down_write +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e76fdad mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4eb7a6fd vme_lm_request +EXPORT_SYMBOL vmlinux 0x4eca9a4c sockfd_lookup +EXPORT_SYMBOL vmlinux 0x4ece2424 touch_atime +EXPORT_SYMBOL vmlinux 0x4edcd968 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x4eef14a4 install_exec_creds +EXPORT_SYMBOL vmlinux 0x4eff7ab6 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x4f0c5613 bio_put +EXPORT_SYMBOL vmlinux 0x4f0d3094 edma_filter_fn +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2c1245 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x4f2e2285 consume_skb +EXPORT_SYMBOL vmlinux 0x4f344c44 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4d3b9a filp_close +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f779340 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x4f7a19a3 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f9d1823 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x4f9d936c shdma_cleanup +EXPORT_SYMBOL vmlinux 0x4fb5ee6c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x4fd8b5af bio_chain +EXPORT_SYMBOL vmlinux 0x50034355 inet_add_offload +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5017c7a4 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x502b73f0 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x5034e4a9 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x50388b90 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x5044218a seq_dentry +EXPORT_SYMBOL vmlinux 0x5053eb04 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x5058a6bf unregister_console +EXPORT_SYMBOL vmlinux 0x50603456 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5066a5bb pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x506ad867 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x5074fd9d tty_devnum +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5089a22d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x5094b2e7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x5099e0e1 add_disk +EXPORT_SYMBOL vmlinux 0x50a03552 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x50ae4a83 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b38f70 bio_split +EXPORT_SYMBOL vmlinux 0x50b3bcbc __blk_end_request +EXPORT_SYMBOL vmlinux 0x50b55d84 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c74b7f ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50d6e3e0 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5120952e elm_config +EXPORT_SYMBOL vmlinux 0x51328b1d twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x514cc273 arm_copy_from_user +EXPORT_SYMBOL vmlinux 0x514f1bfc fb_set_suspend +EXPORT_SYMBOL vmlinux 0x51639749 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x51857ea8 iterate_dir +EXPORT_SYMBOL vmlinux 0x5191b459 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x5193a57b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x51948851 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x51957ba4 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x51c489c1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x51c8720e bio_copy_data +EXPORT_SYMBOL vmlinux 0x51cb5b73 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51e2f4c4 dev_addr_init +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51e9de1c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52065bf0 snd_component_add +EXPORT_SYMBOL vmlinux 0x5211743c jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x52159979 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522424cb of_get_next_parent +EXPORT_SYMBOL vmlinux 0x5225a313 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x523ea555 elevator_init +EXPORT_SYMBOL vmlinux 0x526dfdad of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52bd5ac0 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x52c84e6f blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x52cec1ec get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x52e2b614 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52e8e2a0 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x52ea574a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x52eb1caf pcim_enable_device +EXPORT_SYMBOL vmlinux 0x52f72c47 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x53081581 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533987f0 simple_open +EXPORT_SYMBOL vmlinux 0x535c82e8 simple_release_fs +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x537c3738 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x54091dbd pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5423b1c8 seq_write +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5459ea05 generic_write_end +EXPORT_SYMBOL vmlinux 0x545e6dbd nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0x546106c6 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x546368cc input_flush_device +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x5475956f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x548ddbbe phy_register_fixup +EXPORT_SYMBOL vmlinux 0x549b2508 genlmsg_put +EXPORT_SYMBOL vmlinux 0x549d9139 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bbf433 of_device_register +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54de52a1 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x550d45db up_write +EXPORT_SYMBOL vmlinux 0x551098a4 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55396970 of_iomap +EXPORT_SYMBOL vmlinux 0x553d2e10 input_free_device +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554ea0d9 arp_xmit +EXPORT_SYMBOL vmlinux 0x555bd887 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x555c70b2 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5581eee1 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x55a0638f dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x55bf96e5 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55d4a8b2 __get_page_tail +EXPORT_SYMBOL vmlinux 0x55d7f527 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x55f9518c snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x55fcdf6c mount_single +EXPORT_SYMBOL vmlinux 0x56017138 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x56104b68 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x56128cb9 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x564aac3b truncate_setsize +EXPORT_SYMBOL vmlinux 0x564af59f devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x564ec1be vfs_fsync +EXPORT_SYMBOL vmlinux 0x564f90dd inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x5667abcf scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x568e2816 skb_trim +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x5695f231 set_blocksize +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c2f5a1 check_disk_change +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cc00aa dst_init +EXPORT_SYMBOL vmlinux 0x56f5531b of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x56fe1353 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x5705e79c __vfs_read +EXPORT_SYMBOL vmlinux 0x570bab77 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x570ce8c8 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x571067d0 __kernel_write +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f4307 console_stop +EXPORT_SYMBOL vmlinux 0x5731f035 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5746583d tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5775a19f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x579ab1e7 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x580b5696 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x58172213 fb_pan_display +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58322d46 dev_warn +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583dfa06 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x5857b7cd pgprot_kernel +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58b9f31d vme_dma_request +EXPORT_SYMBOL vmlinux 0x58cf461a __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58d75c48 security_path_chown +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f38570 snd_jack_report +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594f8b86 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599a27a9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b0b5fb dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x59b90a48 dm_register_target +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d534eb param_set_charp +EXPORT_SYMBOL vmlinux 0x59ddb554 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x59e38237 nvm_get_blk +EXPORT_SYMBOL vmlinux 0x59e4ffa8 simple_setattr +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e702be dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x59f90619 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x5a05c08f nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1ad115 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x5a1c7003 init_buffer +EXPORT_SYMBOL vmlinux 0x5a34b75a __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x5a3cec51 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x5a54d8f5 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x5a5e03fe key_revoke +EXPORT_SYMBOL vmlinux 0x5a682a1c mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5ab4cf2b ip_do_fragment +EXPORT_SYMBOL vmlinux 0x5ac41ae3 dev_addr_add +EXPORT_SYMBOL vmlinux 0x5ae1ace7 user_revoke +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b13ce3c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1de04d inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x5b25a5cb tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x5b71f8e7 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x5ba02a66 misc_register +EXPORT_SYMBOL vmlinux 0x5ba683b4 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x5bb156fd __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x5bb74183 module_refcount +EXPORT_SYMBOL vmlinux 0x5bbba684 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5c2511c4 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x5c4a7f88 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x5c51a7e1 __devm_request_region +EXPORT_SYMBOL vmlinux 0x5c6a6e76 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cdb3853 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0a2e7f ps2_init +EXPORT_SYMBOL vmlinux 0x5d17a218 of_get_address +EXPORT_SYMBOL vmlinux 0x5d1cdf06 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x5d22c58e ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5d3ab141 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x5d498f29 freeze_bdev +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d6e1640 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x5d9cf688 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x5dac7bdf snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x5dcece1f proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5de7c4c4 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x5dee64ba blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x5e0f0dc9 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x5e1562cb ether_setup +EXPORT_SYMBOL vmlinux 0x5e18a0ea pci_dev_driver +EXPORT_SYMBOL vmlinux 0x5e3e4322 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x5e4b8d3d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5e6d7b65 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x5e753b0f i2c_verify_client +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e8188fc crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea02d59 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x5ea0e89b kunmap +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec9ebed in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc53aa input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0697ae kill_pgrp +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0ca199 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x5f22ce91 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x5f24b78c generic_write_checks +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f50cdff tcp_seq_open +EXPORT_SYMBOL vmlinux 0x5f559e67 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f9a3ad5 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5fd0bdb2 dev_get_flags +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe8ea6d writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x5fec1680 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x60055baa dispc_mgr_get_vsync_irq +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602878b0 ipv4_specific +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6037081f generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x60391505 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x603c0737 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x6050347e netif_napi_add +EXPORT_SYMBOL vmlinux 0x6054e08e generic_delete_inode +EXPORT_SYMBOL vmlinux 0x605c4e4f of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x606a6558 ip6_xmit +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6075e53e eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x6082e162 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609e3f2d skb_copy +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a474c8 sock_no_listen +EXPORT_SYMBOL vmlinux 0x60a97629 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60df0d41 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60ed79f0 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0x6101f4fa security_inode_readlink +EXPORT_SYMBOL vmlinux 0x6104e7a4 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x610e81be snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612d9a95 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x612ec2e3 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x61359a01 kill_fasync +EXPORT_SYMBOL vmlinux 0x61584ab8 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x616a9daf bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x617dc3f2 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x61a330dc padata_do_serial +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b65cee blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61fdeeab nd_iostat_end +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x62271c99 kmap_to_page +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62296be1 qcom_scm_get_version +EXPORT_SYMBOL vmlinux 0x6240fffb netif_device_detach +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628b820a mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x62a1583f phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x62a32400 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x62b38765 vfs_symlink +EXPORT_SYMBOL vmlinux 0x62b4fee2 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x62fc8f0d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6314ba12 dev_printk +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x632ba6c0 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x634cccea elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x634e649c mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x63501626 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x6370b57a __ps2_command +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63de6568 netlink_set_err +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ececc8 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x63f87b3c __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642299a3 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x642a2b99 processor +EXPORT_SYMBOL vmlinux 0x6434d153 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x644140b6 skb_queue_head +EXPORT_SYMBOL vmlinux 0x644729ab __neigh_event_send +EXPORT_SYMBOL vmlinux 0x6452a586 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x645e1096 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x646b8228 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x646f83fc locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x64702894 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x64742021 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x64949b66 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64aab2db cad_pid +EXPORT_SYMBOL vmlinux 0x64b6bbb4 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x64bb23d3 udp_prot +EXPORT_SYMBOL vmlinux 0x64bd00b1 input_grab_device +EXPORT_SYMBOL vmlinux 0x64fd36b6 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65144a61 dst_release +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652c2df5 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x6557e2c7 set_groups +EXPORT_SYMBOL vmlinux 0x65602868 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6567b770 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x65687757 dquot_disable +EXPORT_SYMBOL vmlinux 0x657a29e6 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x65abf6f9 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x65b3de70 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x65b8146c kernel_sendpage +EXPORT_SYMBOL vmlinux 0x65c45387 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65da47f6 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65de7353 dquot_destroy +EXPORT_SYMBOL vmlinux 0x65e0bdbe of_phy_find_device +EXPORT_SYMBOL vmlinux 0x65e34c33 ll_rw_block +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f4ad7a blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x660c1707 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x661c8c67 downgrade_write +EXPORT_SYMBOL vmlinux 0x6646831f bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x664e52d1 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x66705f27 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x6673b8c3 scsi_execute +EXPORT_SYMBOL vmlinux 0x6699b145 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x66a75821 bdi_destroy +EXPORT_SYMBOL vmlinux 0x66b0aab3 nvm_register +EXPORT_SYMBOL vmlinux 0x66d38ed0 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0x66f01aa4 __sock_create +EXPORT_SYMBOL vmlinux 0x670d7f59 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x67255628 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x673cc6df dcache_dir_close +EXPORT_SYMBOL vmlinux 0x674d7ef1 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x6756ed05 register_netdevice +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676ef95a __d_drop +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67771c5a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x677fc050 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x679c20c7 mdiobus_read +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67fb0216 netlink_ack +EXPORT_SYMBOL vmlinux 0x68035735 file_remove_privs +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6812f6f2 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x681f94ae netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x683f8fef default_llseek +EXPORT_SYMBOL vmlinux 0x6845777c dcache_readdir +EXPORT_SYMBOL vmlinux 0x68574a7b mdiobus_write +EXPORT_SYMBOL vmlinux 0x686ead86 kthread_stop +EXPORT_SYMBOL vmlinux 0x68762985 ip6_route_output +EXPORT_SYMBOL vmlinux 0x6878d596 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x6895f926 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a79df7 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68ad10c5 sock_no_poll +EXPORT_SYMBOL vmlinux 0x68b6bf2c mutex_lock +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bedfea pipe_unlock +EXPORT_SYMBOL vmlinux 0x68c7802e security_task_getsecid +EXPORT_SYMBOL vmlinux 0x68e616c8 security_path_link +EXPORT_SYMBOL vmlinux 0x68ee177e free_netdev +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x692c5a6b fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x694956a6 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x694b624c wake_up_process +EXPORT_SYMBOL vmlinux 0x695087b5 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x69509a75 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x696046bb d_splice_alias +EXPORT_SYMBOL vmlinux 0x696d60b5 d_path +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6978ab24 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x699b23fb inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a3790e sk_common_release +EXPORT_SYMBOL vmlinux 0x69a9ff2a open_check_o_direct +EXPORT_SYMBOL vmlinux 0x69ab99d9 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69af5f81 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69c1222b arp_send +EXPORT_SYMBOL vmlinux 0x69f938eb bio_init +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a19dc42 dcb_setapp +EXPORT_SYMBOL vmlinux 0x6a21b6b2 inet_release +EXPORT_SYMBOL vmlinux 0x6a21c2f6 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x6a2a5a4a simple_dir_operations +EXPORT_SYMBOL vmlinux 0x6a5947b0 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a68f05a dev_set_mtu +EXPORT_SYMBOL vmlinux 0x6a6b19a8 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a77b6bc blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x6a828756 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x6a8c8697 phy_suspend +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ae94417 netif_rx +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af1a378 key_put +EXPORT_SYMBOL vmlinux 0x6af5ae6d netdev_printk +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b157d97 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1ba22c seq_open +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b308746 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6b4bec36 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x6b650c57 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6b6ec1ac phy_attach +EXPORT_SYMBOL vmlinux 0x6b71e0bf jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6b78b38a scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x6b85ca75 devm_request_resource +EXPORT_SYMBOL vmlinux 0x6b86c566 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x6bac5384 would_dump +EXPORT_SYMBOL vmlinux 0x6bbf251f tty_register_driver +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bed3c5c xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2aa9ba generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x6c4da5b0 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61a9e3 ns_capable +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8432fc genphy_resume +EXPORT_SYMBOL vmlinux 0x6c923328 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x6cc10672 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce3fae6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x6d0442c6 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x6d06aacb parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d0f23bf inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6d164c97 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d22143f key_reject_and_link +EXPORT_SYMBOL vmlinux 0x6d2683d5 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d57a735 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x6d623772 nf_log_packet +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6b55f9 get_phy_device +EXPORT_SYMBOL vmlinux 0x6d89f284 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x6d8ad5b5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x6da82b46 devm_memunmap +EXPORT_SYMBOL vmlinux 0x6dd549ab bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x6dd89592 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df4cca0 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x6e07ac4f inode_needs_sync +EXPORT_SYMBOL vmlinux 0x6e19899f phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x6e255720 vm_insert_page +EXPORT_SYMBOL vmlinux 0x6e301f77 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x6e387526 get_task_io_context +EXPORT_SYMBOL vmlinux 0x6e3aac58 noop_fsync +EXPORT_SYMBOL vmlinux 0x6e3ea86c dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x6e4cf4ef inet_offloads +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea2e211 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x6ea5b61d trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x6ebd9e67 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6ee1063e bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efa83e8 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x6f09adf4 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x6f0e1a16 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x6f10d8d4 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x6f1b3eb6 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f39b495 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x6f5d24ae of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x6f6f3474 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x6f8788ac mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8dde29 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc1b566 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x7003fc04 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x702cf406 seq_release +EXPORT_SYMBOL vmlinux 0x704d20f8 md_flush_request +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709090ca devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70f96035 sg_miter_next +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x711725ce cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7131dac0 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x713e02a3 vga_put +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7172a84e pci_remove_bus +EXPORT_SYMBOL vmlinux 0x7180f8b9 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x71815af3 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0x71a40a9d dma_find_channel +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f6da1d nf_log_unregister +EXPORT_SYMBOL vmlinux 0x71ff0d3c iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x722186aa cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x72405a80 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x724c9a78 submit_bh +EXPORT_SYMBOL vmlinux 0x724e5d8b dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x72546855 invalidate_partition +EXPORT_SYMBOL vmlinux 0x72645bed pci_find_bus +EXPORT_SYMBOL vmlinux 0x728b5065 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x7299323c devm_iounmap +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72ba25e2 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x72bf5fe0 d_obtain_root +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72dc0040 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x72dff8c0 __kfree_skb +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef027b devm_gpio_free +EXPORT_SYMBOL vmlinux 0x72fe98e8 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7318e911 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x733b6c36 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733cd18f ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x7347588a empty_zero_page +EXPORT_SYMBOL vmlinux 0x734954ed mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x73547bfd inet_frag_kill +EXPORT_SYMBOL vmlinux 0x7366d115 snd_device_free +EXPORT_SYMBOL vmlinux 0x7377f734 vfs_write +EXPORT_SYMBOL vmlinux 0x73787e5a pci_get_class +EXPORT_SYMBOL vmlinux 0x737d670c key_task_permission +EXPORT_SYMBOL vmlinux 0x738b8ad5 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x73a9f146 seq_file_path +EXPORT_SYMBOL vmlinux 0x73b378ea udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x73d44a00 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x73d5e6d2 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x73de217d dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e2871e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x73e3246e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x73ed400f find_vma +EXPORT_SYMBOL vmlinux 0x740649be nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741934fc skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x741c60d1 __scm_destroy +EXPORT_SYMBOL vmlinux 0x742ebbb2 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x74623f19 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7493ab51 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x74958eb7 get_gendisk +EXPORT_SYMBOL vmlinux 0x74aefce9 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x74afb6f7 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d11578 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74fb3fcf ip_getsockopt +EXPORT_SYMBOL vmlinux 0x74fd863d sock_edemux +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x753a786b phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x75552e27 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x75643e9b mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x7564e7c2 __frontswap_load +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x759d5868 simple_write_begin +EXPORT_SYMBOL vmlinux 0x75b18b4b mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75e1ef62 kfree_put_link +EXPORT_SYMBOL vmlinux 0x75ffcaa5 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760f2837 nvm_register_target +EXPORT_SYMBOL vmlinux 0x7629cfc6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7648b902 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764cacdf sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x764fc51d twl6040_power +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x76612b7b pci_enable_msix +EXPORT_SYMBOL vmlinux 0x766186f8 pci_iomap +EXPORT_SYMBOL vmlinux 0x76664266 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x76691e43 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x767f69df forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x768052a1 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x768e13fe swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x768e8edc do_SAK +EXPORT_SYMBOL vmlinux 0x76aee592 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e57273 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770d45cf wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x7713945f find_get_entry +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7720fe70 mmc_erase +EXPORT_SYMBOL vmlinux 0x772519be gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x773fcdf2 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x77456b07 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x77460010 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x774e0c66 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77adc2bc scsi_target_resume +EXPORT_SYMBOL vmlinux 0x77b9478f max8998_write_reg +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bccbd5 pci_select_bars +EXPORT_SYMBOL vmlinux 0x77c008d5 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x77f56461 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x77fa1a63 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x780fb97f __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x781523df of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x7833deb2 pgprot_user +EXPORT_SYMBOL vmlinux 0x7838b594 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x785f7d03 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x78788a04 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789590fb pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789ee758 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x78a8cea9 snd_cards +EXPORT_SYMBOL vmlinux 0x78b996ba input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x78da69e8 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x7901f25a tty_port_open +EXPORT_SYMBOL vmlinux 0x791ef05b cfb_fillrect +EXPORT_SYMBOL vmlinux 0x7931a9da sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x7939200c pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x794d6ad3 bio_advance +EXPORT_SYMBOL vmlinux 0x7961f195 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79847b9f phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b6e29f read_code +EXPORT_SYMBOL vmlinux 0x79b951f2 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x79c1cb70 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x79e221ce __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x79faff3d bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a26e423 pci_enable_device +EXPORT_SYMBOL vmlinux 0x7a284f32 write_one_page +EXPORT_SYMBOL vmlinux 0x7a294849 up_read +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a50635d __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7a7d60a6 blkdev_get +EXPORT_SYMBOL vmlinux 0x7a9484f3 load_nls_default +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac6aaa1 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x7ac80db1 dev_mc_init +EXPORT_SYMBOL vmlinux 0x7acede44 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b1670d6 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b20e384 napi_disable +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b42c941 skb_put +EXPORT_SYMBOL vmlinux 0x7b4ea9fc of_get_pci_address +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b924ff3 dev_notice +EXPORT_SYMBOL vmlinux 0x7ba6a0e4 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x7bb7ee60 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7bee4670 shdma_chan_remove +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c224ae7 dev_get_stats +EXPORT_SYMBOL vmlinux 0x7c280527 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x7c2f1795 alloc_file +EXPORT_SYMBOL vmlinux 0x7c45a48b scsi_unregister +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5c2075 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c775477 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x7c7d12db tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x7c8d2079 inet_accept +EXPORT_SYMBOL vmlinux 0x7c958174 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca1f918 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x7ca56012 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x7cadb4f7 skb_insert +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb8a5e1 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc746cc fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x7cd018a6 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7cdf56f2 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf7a9e6 vme_bus_num +EXPORT_SYMBOL vmlinux 0x7d07297c pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0ec970 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1790f0 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x7d2ab957 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x7d463a82 kill_litter_super +EXPORT_SYMBOL vmlinux 0x7d4b27ee fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x7d4d0591 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x7d4d10d8 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x7d6c1b88 set_device_ro +EXPORT_SYMBOL vmlinux 0x7d6e9857 __serio_register_port +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d95286b uart_add_one_port +EXPORT_SYMBOL vmlinux 0x7da410a5 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7dde0be2 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x7de637ae __secpath_destroy +EXPORT_SYMBOL vmlinux 0x7defe9b8 inet_listen +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df18c60 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x7e1e0295 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e4e4364 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x7e514fbb nand_bch_init +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e88a07d sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x7e9bb01a sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7e9f6df4 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x7ea167ab snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x7ed552d1 proc_mkdir +EXPORT_SYMBOL vmlinux 0x7ee52823 phy_connect +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f072bbd copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7f246f3f dev_change_carrier +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f275d5e cdrom_check_events +EXPORT_SYMBOL vmlinux 0x7f43dd42 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x7f494583 free_task +EXPORT_SYMBOL vmlinux 0x7f4ed965 shdma_reset +EXPORT_SYMBOL vmlinux 0x7f4ee81d path_put +EXPORT_SYMBOL vmlinux 0x7f55604c PDE_DATA +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7fade346 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x7fc2b1aa scm_detach_fds +EXPORT_SYMBOL vmlinux 0x7fd82298 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x7fdcab1c jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ffea7aa find_inode_nowait +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801be013 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x80315eef tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x80321bb3 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x803224d9 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x803c4ece blk_fetch_request +EXPORT_SYMBOL vmlinux 0x8041d318 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x806ab62c vlan_vid_del +EXPORT_SYMBOL vmlinux 0x80982906 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x80b5c30c md_integrity_register +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ca9567 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x80cd608e kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80daf240 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x80dd0ae0 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x80e0211c genphy_read_status +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x80e397b9 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x80e5a8bc scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x812d5ff6 inet_put_port +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x813b4a2c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x8142df76 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x814dd79c skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8157413d ptp_find_pin +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816b3d52 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x816be8bd splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x816f6faf pci_assign_resource +EXPORT_SYMBOL vmlinux 0x8170f518 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x817e574a netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x8192e1b9 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x81aa9fe7 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81be7246 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f54909 simple_fill_super +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212c951 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x822137e2 arm_heavy_mb +EXPORT_SYMBOL vmlinux 0x82405d01 seq_path +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828d3c76 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x82a1af82 md_error +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c24e12 rtnl_notify +EXPORT_SYMBOL vmlinux 0x82c4fc5c xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x82f0727c free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x82fffdfb xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x830ff76d phy_resume +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83677f17 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x8368fe62 posix_test_lock +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x839196b8 follow_down_one +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b8832d mmc_can_discard +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83e1395c genphy_update_link +EXPORT_SYMBOL vmlinux 0x83f6e9ad __breadahead +EXPORT_SYMBOL vmlinux 0x8417d4ed rwsem_wake +EXPORT_SYMBOL vmlinux 0x8444fef4 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x847e2319 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x848d0aa6 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x849d0b79 lookup_one_len +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84b4ce36 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x84ccf4df flush_old_exec +EXPORT_SYMBOL vmlinux 0x84cfff3c security_inode_permission +EXPORT_SYMBOL vmlinux 0x84e60b75 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x84fc2a94 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850011b0 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x85270db7 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x8529e9f3 get_empty_filp +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x85a5d3dd i2c_master_send +EXPORT_SYMBOL vmlinux 0x85b38c7c d_make_root +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85baeccf skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x85ddcb57 scsi_print_command +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f4a2fe pci_choose_state +EXPORT_SYMBOL vmlinux 0x861e9f5d netpoll_print_options +EXPORT_SYMBOL vmlinux 0x863fc983 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8651bfd4 amba_request_regions +EXPORT_SYMBOL vmlinux 0x8653fb8f snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x865d147e __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x86611ca6 abort_creds +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866f8d35 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x86718789 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x86860195 dss_feat_get_supported_displays +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86bb370e pci_scan_slot +EXPORT_SYMBOL vmlinux 0x86f983da keyring_alloc +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x87186609 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8719bbef sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87272888 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x873e3c5f ioremap_wc +EXPORT_SYMBOL vmlinux 0x8741a25e bdi_register_dev +EXPORT_SYMBOL vmlinux 0x875cde58 dentry_unhash +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87975aa6 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x879a9736 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x87a1914b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x87a2985b qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x87b2133d udp_ioctl +EXPORT_SYMBOL vmlinux 0x87b77922 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x87be4e84 of_device_is_available +EXPORT_SYMBOL vmlinux 0x87c5067c pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x87dcaf2b dev_get_by_name +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x87e784f8 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x881cfc62 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x883e9f84 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x883ec32f max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x88410494 vfs_statfs +EXPORT_SYMBOL vmlinux 0x88494fb0 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x884f9d8a jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x885cdc03 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x885ef80e lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x88a6ca16 of_get_property +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88c215f0 fasync_helper +EXPORT_SYMBOL vmlinux 0x88c3b1eb __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x88cdd8f8 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x88da7c3e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x89179388 get_cached_acl +EXPORT_SYMBOL vmlinux 0x892fe1d0 vc_cons +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x89462689 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x8997e04b mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b4b9ce tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x89bf2042 kill_bdev +EXPORT_SYMBOL vmlinux 0x89ce3f0d dm_get_device +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89dc7e80 _dev_info +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a309a13 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a52a46f tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x8a541909 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x8a556338 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x8a7115aa pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab50545 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x8abee66c __frontswap_store +EXPORT_SYMBOL vmlinux 0x8ad07ad6 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x8ad9d24f netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x8b07af3b sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x8b256efc pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b697fe2 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x8b716f6e block_truncate_page +EXPORT_SYMBOL vmlinux 0x8b735d56 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x8b786957 vga_tryget +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8b9b33 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x8b8fe6fb mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x8ba25839 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x8ba52ac4 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8bc0450d devm_gpio_request +EXPORT_SYMBOL vmlinux 0x8bc21874 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8bc672b2 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x8bcfa09a shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x8bd41076 netlink_capable +EXPORT_SYMBOL vmlinux 0x8be7a6e6 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x8bed0e67 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x8bf783ea set_disk_ro +EXPORT_SYMBOL vmlinux 0x8c095402 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x8c0d21a1 follow_pfn +EXPORT_SYMBOL vmlinux 0x8c151dd9 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x8c2a4cf3 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x8c2f979a __getblk_slow +EXPORT_SYMBOL vmlinux 0x8c492be2 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x8c6085ac xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74dabe sock_recvmsg +EXPORT_SYMBOL vmlinux 0x8ca767a7 new_inode +EXPORT_SYMBOL vmlinux 0x8cbd63e5 read_dev_sector +EXPORT_SYMBOL vmlinux 0x8cc509a9 shdma_init +EXPORT_SYMBOL vmlinux 0x8ccb276e omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cdaa111 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x8ce1dc23 scsi_device_put +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d02efb6 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x8d0f57a3 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d46435f proc_remove +EXPORT_SYMBOL vmlinux 0x8d4cb6e0 register_sound_special +EXPORT_SYMBOL vmlinux 0x8d500ad4 blk_run_queue +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55b80f dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d56e793 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x8d5b2280 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x8d61f133 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f2509 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d78846c scsi_register +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d99f573 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x8dbc0243 vmap +EXPORT_SYMBOL vmlinux 0x8dcc278e nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd3b691 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x8de65b52 mmc_add_host +EXPORT_SYMBOL vmlinux 0x8deff0f5 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e1c8fb6 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x8e1ce18b tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x8e213f99 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x8e364db9 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x8e41a61a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x8e54c270 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x8e5ba232 dquot_transfer +EXPORT_SYMBOL vmlinux 0x8e5e82ed block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8e690af8 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e84e622 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL vmlinux 0x8ef0c886 sock_i_uid +EXPORT_SYMBOL vmlinux 0x8ef15405 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x8ef6faae blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x8f007a34 skb_seq_read +EXPORT_SYMBOL vmlinux 0x8f03eb8b mmc_can_reset +EXPORT_SYMBOL vmlinux 0x8f10dd2d pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x8f271955 release_firmware +EXPORT_SYMBOL vmlinux 0x8f416a13 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5e44e3 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f73c3b1 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x8f74b4d7 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x8f802903 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x8f82cd9b i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x8fa39e45 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fb6945d __alloc_skb +EXPORT_SYMBOL vmlinux 0x8fc8e573 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fd4597d snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x8fddd94f dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x8fe2f9ca skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x8fe61769 snd_timer_open +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x900198c9 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x900b44a2 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x901a84a4 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x902b0e5e kern_unmount +EXPORT_SYMBOL vmlinux 0x9036d172 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x903fc573 tc_classify +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x908919c4 dcb_getapp +EXPORT_SYMBOL vmlinux 0x909ee348 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x90aa260e nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x90bc0d6b simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c78a0a tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x90df8255 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x90e9ae95 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x90f4bdf0 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x91047f78 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x911ba29a mount_ns +EXPORT_SYMBOL vmlinux 0x912bbe64 finish_open +EXPORT_SYMBOL vmlinux 0x91376161 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91552978 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x916f29da ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917298ac __dquot_transfer +EXPORT_SYMBOL vmlinux 0x9177255d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91a28dcb dquot_release +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91c0d1e3 md_register_thread +EXPORT_SYMBOL vmlinux 0x91c13f69 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x91d0e51f of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924029ca pci_clear_master +EXPORT_SYMBOL vmlinux 0x92717f45 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x92969edd udp_add_offload +EXPORT_SYMBOL vmlinux 0x92a89849 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b05c2f update_region +EXPORT_SYMBOL vmlinux 0x92c3c2e2 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x92e8e9a5 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x92e96d7b locks_free_lock +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93018d04 padata_alloc +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9316f850 commit_creds +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932389db remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x93366022 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x93507cf8 devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x935ab4eb vme_slot_num +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937d28ff mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x93837347 vfs_read +EXPORT_SYMBOL vmlinux 0x938bca7a dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x93935e88 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x93a8802b i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b76750 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x93c32d03 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x93c48970 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x93e4b55e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x93e6f9f3 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fd9cbb simple_write_end +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x941b2f4e blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x941b6fd2 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x943e044b sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x945c007e pci_request_region +EXPORT_SYMBOL vmlinux 0x94652b88 registered_fb +EXPORT_SYMBOL vmlinux 0x946a07af dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x946efbfa __wait_on_bit +EXPORT_SYMBOL vmlinux 0x948b0978 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x948c031f of_parse_phandle +EXPORT_SYMBOL vmlinux 0x94937147 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x9498ecaf may_umount +EXPORT_SYMBOL vmlinux 0x94a530c7 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x94be38d2 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x94c224b8 make_kuid +EXPORT_SYMBOL vmlinux 0x94ca5286 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94e11f5e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x94e34004 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f85d80 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x951f53c8 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x95308feb amba_driver_register +EXPORT_SYMBOL vmlinux 0x953c2e7e __ip_dev_find +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x95b94aa7 __skb_checksum +EXPORT_SYMBOL vmlinux 0x95bbfc0e pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x95cd0918 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95e07282 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x95f3945a set_anon_super +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961bef00 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x963ab11b __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x963ef3e4 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96658845 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x967637d8 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x967b25c0 padata_free +EXPORT_SYMBOL vmlinux 0x967f2d5f ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d3ce31 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x96ddbb8f dev_printk_emit +EXPORT_SYMBOL vmlinux 0x96fa209f dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x9722decf bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x972c9484 tty_unlock +EXPORT_SYMBOL vmlinux 0x973103b9 put_page +EXPORT_SYMBOL vmlinux 0x973d44ee scsi_add_device +EXPORT_SYMBOL vmlinux 0x973f3977 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9765c851 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x9766a28d vme_irq_free +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x977b9b3e page_readlink +EXPORT_SYMBOL vmlinux 0x97905ad3 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x9793eb81 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x979761aa eth_header +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979f6c37 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x97cee7f2 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x97d55238 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x97dee829 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f99fd4 dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0x98187032 uart_match_port +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829cb41 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x9847acf1 scsi_host_get +EXPORT_SYMBOL vmlinux 0x9869cd80 d_find_alias +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x98875e1c inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x9888f38c snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x9889daa5 omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0x988d97cf read_cache_page +EXPORT_SYMBOL vmlinux 0x98a88e47 led_update_brightness +EXPORT_SYMBOL vmlinux 0x98ab02a0 serio_rescan +EXPORT_SYMBOL vmlinux 0x98b85287 migrate_page +EXPORT_SYMBOL vmlinux 0x98bbb06c swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x98ce5246 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x98d02a30 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x98d9a881 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x99078834 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993a152e jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x993ae865 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963db9b blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9976b47f register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x997ce52b inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x99902c1d have_submounts +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a26e59 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfcf90 __block_write_begin +EXPORT_SYMBOL vmlinux 0x99c119e3 blk_peek_request +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x99f75a70 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x9a049821 seq_release_private +EXPORT_SYMBOL vmlinux 0x9a17671e sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a56aec0 tty_check_change +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a6ca48e unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9a731e32 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x9a792ddc netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a9c2d0e d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x9ab6012f sock_register +EXPORT_SYMBOL vmlinux 0x9ab7b9ca of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9abeef8a unregister_filesystem +EXPORT_SYMBOL vmlinux 0x9ac589dc get_user_pages +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af17284 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x9af99c4d scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9b001193 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3a2911 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x9b60459f account_page_dirtied +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b85180b snd_card_file_add +EXPORT_SYMBOL vmlinux 0x9b9c0aee snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbc704b max8998_read_reg +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6126a param_get_byte +EXPORT_SYMBOL vmlinux 0x9bcdc8bd __vfs_write +EXPORT_SYMBOL vmlinux 0x9bcefe5d jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x9be579c8 redraw_screen +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf4fe63 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c20b5ec d_delete +EXPORT_SYMBOL vmlinux 0x9c389dce of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5748c6 km_state_expired +EXPORT_SYMBOL vmlinux 0x9c702652 build_skb +EXPORT_SYMBOL vmlinux 0x9c7e411d tcp_req_err +EXPORT_SYMBOL vmlinux 0x9c7f0db3 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9ca7677c get_super_thawed +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cad5691 netlink_unicast +EXPORT_SYMBOL vmlinux 0x9cb48ea5 read_cache_pages +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cc2e0cb __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x9cc54f20 dev_addr_del +EXPORT_SYMBOL vmlinux 0x9ce9e95f input_register_device +EXPORT_SYMBOL vmlinux 0x9ceea67a fb_show_logo +EXPORT_SYMBOL vmlinux 0x9d06261b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x9d0813e8 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d66b4e1 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x9d8129c1 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x9d965573 proc_set_user +EXPORT_SYMBOL vmlinux 0x9dad9539 mapping_tagged +EXPORT_SYMBOL vmlinux 0x9dd600d7 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x9de99dc9 km_policy_expired +EXPORT_SYMBOL vmlinux 0x9dedb8a9 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9dfe9cb9 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1421de security_mmap_file +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e379109 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x9e3c7581 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x9e4eb090 snd_seq_root +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e639ab0 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x9e69cb46 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x9e6bd41c ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eafc861 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x9eb1960c igrab +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed9311e register_qdisc +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9ede3fee snd_power_wait +EXPORT_SYMBOL vmlinux 0x9ee45e7c inet_del_offload +EXPORT_SYMBOL vmlinux 0x9eedd1fd nf_register_hook +EXPORT_SYMBOL vmlinux 0x9ef08994 register_filesystem +EXPORT_SYMBOL vmlinux 0x9efbe01b unlock_page +EXPORT_SYMBOL vmlinux 0x9f014be0 shdma_chan_probe +EXPORT_SYMBOL vmlinux 0x9f185c12 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x9f2ce0ce setup_new_exec +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f49e003 simple_readpage +EXPORT_SYMBOL vmlinux 0x9f4ec961 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9f4f3619 bioset_free +EXPORT_SYMBOL vmlinux 0x9f69c99d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x9f6f8f42 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x9f734500 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x9f737268 phy_stop +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f856ca3 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9f874279 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb1e44f snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x9fb35b87 flush_signals +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe3c56c __mutex_init +EXPORT_SYMBOL vmlinux 0x9febfd0f __check_sticky +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0303ece twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa047b62f param_ops_long +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05a5870 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05ebadc ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa083d95c bdput +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08c1536 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xa0907a39 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0xa09c78d1 dev_set_group +EXPORT_SYMBOL vmlinux 0xa0a3ab9a dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xa0afd982 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b44aa7 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa0d93d89 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa113e856 module_layout +EXPORT_SYMBOL vmlinux 0xa11702b1 register_md_personality +EXPORT_SYMBOL vmlinux 0xa1209206 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1372233 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1499349 rt6_lookup +EXPORT_SYMBOL vmlinux 0xa14aab4c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa1566620 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa17272bd do_splice_direct +EXPORT_SYMBOL vmlinux 0xa1744a3c crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa193ad75 setattr_copy +EXPORT_SYMBOL vmlinux 0xa1a2432a atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xa1b63c7c dev_deactivate +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c53ed2 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1fdcc39 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20c1ea2 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xa21197b2 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xa21f4e72 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xa224009b __quota_error +EXPORT_SYMBOL vmlinux 0xa2551373 pcim_iomap +EXPORT_SYMBOL vmlinux 0xa25816e5 input_allocate_device +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2905073 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xa29e2852 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xa2f7e4d3 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3298c52 security_path_mknod +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33fa5a8 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3a1f968 phy_start +EXPORT_SYMBOL vmlinux 0xa3b13f9a pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xa3bc1a85 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xa3d5e4ef phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xa3dd7bd7 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xa3f6723e tty_register_device +EXPORT_SYMBOL vmlinux 0xa4069c9d devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa41613b6 phy_device_free +EXPORT_SYMBOL vmlinux 0xa41d9aa3 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa460258c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa49df581 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xa4b11635 inet6_release +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b76269 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xa4d74cae snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xa4dd98fc filemap_flush +EXPORT_SYMBOL vmlinux 0xa4e1034d sk_stop_timer +EXPORT_SYMBOL vmlinux 0xa50ce299 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xa5186d81 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0xa51e6510 inc_nlink +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa562e442 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xa568462f pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xa5742fa4 mount_subtree +EXPORT_SYMBOL vmlinux 0xa576137d phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa58cf61b security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa599e6d6 tcf_em_register +EXPORT_SYMBOL vmlinux 0xa5d832b6 revalidate_disk +EXPORT_SYMBOL vmlinux 0xa5ec02d7 shdma_request_irq +EXPORT_SYMBOL vmlinux 0xa602bf04 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa609a43b twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xa60a84cf netlink_broadcast +EXPORT_SYMBOL vmlinux 0xa617e7be set_cached_acl +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa62fb9e9 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xa637022d of_clk_get +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa63dee44 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xa648405d bdev_read_only +EXPORT_SYMBOL vmlinux 0xa658ca35 ps2_command +EXPORT_SYMBOL vmlinux 0xa667c4ad vfs_writef +EXPORT_SYMBOL vmlinux 0xa673514c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa682a4d6 dump_page +EXPORT_SYMBOL vmlinux 0xa68b8322 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa72aea09 devm_clk_put +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa742380f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xa7509f9d down_write_trylock +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7635ea1 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa76948f0 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xa7d59e1c tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xa7dabcac __sk_dst_check +EXPORT_SYMBOL vmlinux 0xa7db9bc7 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xa7e8fdc4 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xa7f846df vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xa80a2e8d security_path_chmod +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa825a705 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8dc841f dqput +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9088c6b freeze_super +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa933e1c4 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xa94d39c4 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xa94d39f4 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa972c9c2 nobh_write_end +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9851353 do_map_probe +EXPORT_SYMBOL vmlinux 0xa99a70e0 mem_map +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xa9d55d4d netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xaa3c6840 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xaa59686f udp_disconnect +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7f6938 unregister_netdev +EXPORT_SYMBOL vmlinux 0xaaa1599c pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xaab3c346 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae2e8d1 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0xaaeccebc mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab0d07a1 bio_map_kern +EXPORT_SYMBOL vmlinux 0xab10b836 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xab18b273 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xab557508 inet6_getname +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71d339 param_get_charp +EXPORT_SYMBOL vmlinux 0xab7484ca tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8edc3a netdev_update_features +EXPORT_SYMBOL vmlinux 0xab950ca9 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xab9892b4 simple_follow_link +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabc67a4c serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd72228 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1bc340 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xac4f8656 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xac5925e5 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xac8f8de4 neigh_for_each +EXPORT_SYMBOL vmlinux 0xac9fc281 omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacbc13b5 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd1041e vfs_getattr +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad183b02 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xad239c39 pps_event +EXPORT_SYMBOL vmlinux 0xad2d2474 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xad367932 register_framebuffer +EXPORT_SYMBOL vmlinux 0xad45c2d3 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xad4fe4c0 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xad56ae3f pci_bus_get +EXPORT_SYMBOL vmlinux 0xad660877 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xad71c192 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xad768698 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xad7774d6 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xad840519 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada5ef6b register_shrinker +EXPORT_SYMBOL vmlinux 0xada9a557 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xadb2b48c save_mount_options +EXPORT_SYMBOL vmlinux 0xadb4940e of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xadda6475 __inode_permission +EXPORT_SYMBOL vmlinux 0xade532ec nd_device_register +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xaded1a28 mount_bdev +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0a4875 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xae0d83cd mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xae2c6ecb iput +EXPORT_SYMBOL vmlinux 0xae35bee3 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xae3f496f jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xae4c782c poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7c230c pci_release_region +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae8b682d iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xae8bbfa3 pps_unregister_source +EXPORT_SYMBOL vmlinux 0xaea3cdde i2c_use_client +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee71555 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xaf1d6d71 d_rehash +EXPORT_SYMBOL vmlinux 0xaf280797 inet6_protos +EXPORT_SYMBOL vmlinux 0xaf30f201 kernel_bind +EXPORT_SYMBOL vmlinux 0xaf3190c1 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3f8eb6 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf668b56 d_walk +EXPORT_SYMBOL vmlinux 0xaf731335 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xaf7dc019 udplite_prot +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf86de1f vme_bus_type +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf90862e vm_mmap +EXPORT_SYMBOL vmlinux 0xaf9a7376 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xaf9a9922 mpage_readpages +EXPORT_SYMBOL vmlinux 0xafa21e9e vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xafa3a442 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xafc3782a bdi_register +EXPORT_SYMBOL vmlinux 0xafc89899 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xb009c75a abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xb00bfb57 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xb0414eef __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb04dc97b bmap +EXPORT_SYMBOL vmlinux 0xb04eafc5 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0602d51 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb07560e9 noop_qdisc +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb08e392d seq_open_private +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0d00ed7 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f29264 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xb0ff7f47 kernel_accept +EXPORT_SYMBOL vmlinux 0xb11a8ce7 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1356b50 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xb13c404d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb163c785 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16905c9 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xb16934ff __elv_add_request +EXPORT_SYMBOL vmlinux 0xb16af627 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xb1719c4b tty_name +EXPORT_SYMBOL vmlinux 0xb1820d34 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xb1a6f06d __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b378cb tso_count_descs +EXPORT_SYMBOL vmlinux 0xb1b92f9f unregister_qdisc +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c3feb7 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0xb1ccab55 neigh_destroy +EXPORT_SYMBOL vmlinux 0xb1cf2db5 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1dba1a1 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xb1f14dbc of_match_device +EXPORT_SYMBOL vmlinux 0xb1f332c3 phy_driver_register +EXPORT_SYMBOL vmlinux 0xb1f66076 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xb2051a66 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb214ad03 dquot_commit +EXPORT_SYMBOL vmlinux 0xb22c82fd ilookup5 +EXPORT_SYMBOL vmlinux 0xb23639c4 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xb250c941 dev_crit +EXPORT_SYMBOL vmlinux 0xb2649176 loop_backing_file +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2694e79 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xb2a35b75 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c7dee8 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xb2cf3101 find_lock_entry +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d4b1a8 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0xb2d6ce29 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xb2d72b7e md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb2d88feb __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xb2e114c0 blk_register_region +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb3022e35 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xb318144d elevator_alloc +EXPORT_SYMBOL vmlinux 0xb32399f2 inode_permission +EXPORT_SYMBOL vmlinux 0xb325fd35 deactivate_super +EXPORT_SYMBOL vmlinux 0xb32635cd of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3352e53 no_llseek +EXPORT_SYMBOL vmlinux 0xb33c351f ioremap_cache +EXPORT_SYMBOL vmlinux 0xb3432c03 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xb386f18f nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xb38972e1 param_get_uint +EXPORT_SYMBOL vmlinux 0xb3a0160b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xb3a56318 dma_pool_create +EXPORT_SYMBOL vmlinux 0xb3a77fc6 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xb3ce1a13 dev_emerg +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d9a6fe dev_alert +EXPORT_SYMBOL vmlinux 0xb3dc6178 snd_unregister_device +EXPORT_SYMBOL vmlinux 0xb3ed5cac mpage_writepage +EXPORT_SYMBOL vmlinux 0xb3f2e3af snd_info_register +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40ef54e netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb428702e dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xb42b7501 generic_setlease +EXPORT_SYMBOL vmlinux 0xb42b771e ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb440f594 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xb44c63f2 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb45075cb security_d_instantiate +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4542e66 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xb4672254 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4b3d464 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4bb9af3 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xb4d39c47 register_quota_format +EXPORT_SYMBOL vmlinux 0xb4ff8a24 mmc_put_card +EXPORT_SYMBOL vmlinux 0xb5175e5b devm_memremap +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57c08ec sk_wait_data +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ab1365 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5eb7653 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xb6002a65 pci_get_device +EXPORT_SYMBOL vmlinux 0xb601852b security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb60db668 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64cf60c register_netdev +EXPORT_SYMBOL vmlinux 0xb65d57f6 netdev_crit +EXPORT_SYMBOL vmlinux 0xb671b16b nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0xb675c645 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6795bdb free_user_ns +EXPORT_SYMBOL vmlinux 0xb6801f0e pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68a3813 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xb6924322 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xb692e1dd security_path_truncate +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb696e225 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7f418 napi_complete_done +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb6e7cce9 snd_timer_close +EXPORT_SYMBOL vmlinux 0xb6e9128d iget5_locked +EXPORT_SYMBOL vmlinux 0xb6fc54c1 kernel_connect +EXPORT_SYMBOL vmlinux 0xb71cf7a4 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xb71e41cc __genl_register_family +EXPORT_SYMBOL vmlinux 0xb73916ba dst_destroy +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb7674abc padata_stop +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb78fe20b of_match_node +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7afeba6 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7bc0c7e twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb7c37627 scsi_host_put +EXPORT_SYMBOL vmlinux 0xb7d641a1 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xb7dd3315 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xb7e46ca5 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb7e67f40 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb7f537da ata_print_version +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81f1c1a write_cache_pages +EXPORT_SYMBOL vmlinux 0xb82aebb9 generic_perform_write +EXPORT_SYMBOL vmlinux 0xb836218f devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb83e005f pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8753011 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xb881d41f add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8945af1 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xb8d92bfe blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xb8db7e50 blkdev_put +EXPORT_SYMBOL vmlinux 0xb8e1906f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xb8e5bd03 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xb8e84cd5 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f68798 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb917ef29 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xb94124b6 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xb94cd09f misc_deregister +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb98fcaca put_io_context +EXPORT_SYMBOL vmlinux 0xb990bf91 km_policy_notify +EXPORT_SYMBOL vmlinux 0xb99797cf set_bh_page +EXPORT_SYMBOL vmlinux 0xb9a6848c devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xb9a7731e neigh_update +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9af1062 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb9c18606 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9e26bea iterate_fd +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ebdeeb serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xb9f57c53 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xba04855d fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xba05b1b9 md_update_sb +EXPORT_SYMBOL vmlinux 0xba0d66dd fb_blank +EXPORT_SYMBOL vmlinux 0xba20b225 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xba2513aa __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba647915 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xba87d5bb pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xba94350e devm_free_irq +EXPORT_SYMBOL vmlinux 0xba948876 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbad2ba62 ac97_bus_type +EXPORT_SYMBOL vmlinux 0xbae003c5 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xbae10913 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0ccacc pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xbb19b982 inode_init_always +EXPORT_SYMBOL vmlinux 0xbb318c1e unregister_key_type +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb42ec40 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb67a5ed mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xbb6879cc mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xbb71cac8 simple_rmdir +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb7c7a3e sk_free +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9b28b7 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xbba4fc37 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xbbaf4494 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xbbbac335 icmpv6_send +EXPORT_SYMBOL vmlinux 0xbbbda035 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xbbc297be cont_write_begin +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc174bcc sock_update_memcg +EXPORT_SYMBOL vmlinux 0xbc18f6d3 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xbc241961 noop_llseek +EXPORT_SYMBOL vmlinux 0xbc253ad6 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xbc384b89 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xbc40e42b mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xbc476b33 tty_do_resize +EXPORT_SYMBOL vmlinux 0xbc6329b0 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbc7ecd85 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0xbc80f976 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xbc9c05d5 ping_prot +EXPORT_SYMBOL vmlinux 0xbc9e21ac xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xbcba85de i2c_clients_command +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc889f4 dev_mc_add +EXPORT_SYMBOL vmlinux 0xbccdcf36 proc_symlink +EXPORT_SYMBOL vmlinux 0xbcdf2f0e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xbcea7da1 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xbd045f52 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xbd09657e snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0xbd1034a7 d_tmpfile +EXPORT_SYMBOL vmlinux 0xbd15eace nobh_write_begin +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd257b79 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xbd40ebfa blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xbd438a4f check_disk_size_change +EXPORT_SYMBOL vmlinux 0xbd4f8297 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xbd81fe74 of_phy_attach +EXPORT_SYMBOL vmlinux 0xbd893085 vfs_mknod +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdb73314 filp_open +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdf693f7 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xbe03f5e2 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xbe063775 dev_uc_del +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1f68a1 ip_options_compile +EXPORT_SYMBOL vmlinux 0xbe338e72 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xbe47fb40 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xbe4ac6c2 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xbe6c6be8 md_write_end +EXPORT_SYMBOL vmlinux 0xbe70e036 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xbe80273d sg_miter_start +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbe927753 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xbea84e03 vme_master_request +EXPORT_SYMBOL vmlinux 0xbeb48aa3 phy_device_register +EXPORT_SYMBOL vmlinux 0xbeda77d5 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef061ab netdev_alert +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf195db1 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xbf1b4bae devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xbf25e597 cpu_user +EXPORT_SYMBOL vmlinux 0xbf374f06 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xbf42c267 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xbf6b0246 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xbf762320 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf86ab98 arp_tbl +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9981ed qdisc_list_add +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfdf6f2c scsi_dma_map +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff7f83f of_node_put +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc008f689 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xc023933a xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xc055bb4d is_nd_btt +EXPORT_SYMBOL vmlinux 0xc05ad9fc skb_free_datagram +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06b1d95 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc06e24b2 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xc073c65f lock_sock_nested +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08fdc7f vfs_rename +EXPORT_SYMBOL vmlinux 0xc0a04891 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a760a6 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0c5099e d_invalidate +EXPORT_SYMBOL vmlinux 0xc0d6b5c8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xc0d8037e mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xc0dcddc9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc104c571 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xc11d4e1d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc13ba3fc page_address +EXPORT_SYMBOL vmlinux 0xc13edd0f register_key_type +EXPORT_SYMBOL vmlinux 0xc164e243 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xc17a3105 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xc19df48a vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xc1aa24ed inode_add_bytes +EXPORT_SYMBOL vmlinux 0xc1ad816f mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xc1b2b3c2 bio_reset +EXPORT_SYMBOL vmlinux 0xc1c1cdf5 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xc1c59db7 vga_client_register +EXPORT_SYMBOL vmlinux 0xc1d0bd55 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xc1d1d240 pid_task +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1e8859c dev_trans_start +EXPORT_SYMBOL vmlinux 0xc2040f4f make_kprojid +EXPORT_SYMBOL vmlinux 0xc20be82f dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xc2197493 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc26299b9 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b389b1 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xc2b3d233 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xc2c1c8e4 iov_iter_init +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc303290f inode_init_once +EXPORT_SYMBOL vmlinux 0xc303b322 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc3052b75 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xc3074483 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc316cabb vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xc31bcce9 acl_by_type +EXPORT_SYMBOL vmlinux 0xc320c813 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc329ff1d jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xc32c64fa netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc35df2c4 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xc3b3a809 pci_restore_state +EXPORT_SYMBOL vmlinux 0xc3bc4ac7 inet_select_addr +EXPORT_SYMBOL vmlinux 0xc3c055b8 amba_release_regions +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cc079d sock_setsockopt +EXPORT_SYMBOL vmlinux 0xc3dd7818 input_event +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc42f334f pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xc43431f1 __f_setown +EXPORT_SYMBOL vmlinux 0xc48c8436 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a90422 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xc4aa033f snd_timer_start +EXPORT_SYMBOL vmlinux 0xc4c99604 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xc4f3d9d2 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xc4f68314 kernel_write +EXPORT_SYMBOL vmlinux 0xc4f8d487 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc543dcc2 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xc55e7a63 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xc5710e71 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc58e0879 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a51bf8 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xc5c2f9e6 put_cmsg +EXPORT_SYMBOL vmlinux 0xc5c806aa tty_unthrottle +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc5fe9e73 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc609a5ae from_kprojid +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64da359 phy_device_remove +EXPORT_SYMBOL vmlinux 0xc66e6d43 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc68674b0 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xc6a35c81 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xc6adc570 ilookup +EXPORT_SYMBOL vmlinux 0xc6b070c4 of_dev_get +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6ced46e blk_free_tags +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc7061bd5 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xc709f359 inode_init_owner +EXPORT_SYMBOL vmlinux 0xc71b3011 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc726f81f nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc7334091 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xc73815c2 finish_no_open +EXPORT_SYMBOL vmlinux 0xc74ea359 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xc751d717 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76d377e xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xc77444d2 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xc779c847 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc797bdc6 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a06332 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a79aa1 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7b0a824 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7cdcd04 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xc7e62ea6 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8339d43 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85d1ecc prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88d4dcc scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89377fd devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8adde25 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c72286 sock_no_bind +EXPORT_SYMBOL vmlinux 0xc8d73f92 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xc8d90fe0 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc8e447f1 init_task +EXPORT_SYMBOL vmlinux 0xc8f96711 mmc_get_card +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc93f162f sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xc940107a linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xc9467f79 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9869cf5 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xc99ca5ee i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9dedae1 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc9e1af5c scsi_init_io +EXPORT_SYMBOL vmlinux 0xc9e503fe seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xca021bb9 inet6_bind +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca223c0a dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xca2822a6 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xca304d30 follow_up +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca4d077d block_commit_write +EXPORT_SYMBOL vmlinux 0xca6b7663 simple_statfs +EXPORT_SYMBOL vmlinux 0xca76811c irq_to_desc +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca949bb1 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xca9c4b05 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xcaa8d17c setup_arg_pages +EXPORT_SYMBOL vmlinux 0xcab04f1e get_super +EXPORT_SYMBOL vmlinux 0xcacd65bd iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xcaddaed3 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xcae6cc8d sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0ad949 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xcb0d58ce vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xcb1b9ced jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xcb35be1e dss_mgr_set_timings +EXPORT_SYMBOL vmlinux 0xcb415e22 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb5123ff bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xcb6eaabc vme_master_mmap +EXPORT_SYMBOL vmlinux 0xcb7fc57c put_disk +EXPORT_SYMBOL vmlinux 0xcb999fac md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee5577 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcbef911f skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xcc1a86d5 dss_mgr_connect +EXPORT_SYMBOL vmlinux 0xcc1cc0e1 tso_start +EXPORT_SYMBOL vmlinux 0xcc1f5b89 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xcc22f755 __brelse +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc297587 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xcc4db8f9 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc56a571 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xcc5747ad mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xcc5d979c pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xcc695f0d snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce51697 generic_setxattr +EXPORT_SYMBOL vmlinux 0xccf9ac21 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd1695d3 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd54a2a2 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd70090e user_path_at_empty +EXPORT_SYMBOL vmlinux 0xcd92ca67 elv_register_queue +EXPORT_SYMBOL vmlinux 0xcd93a3fa nf_setsockopt +EXPORT_SYMBOL vmlinux 0xcdb18596 genphy_config_init +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdccd798 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xcdd797fd nobh_writepage +EXPORT_SYMBOL vmlinux 0xcdea71a1 single_release +EXPORT_SYMBOL vmlinux 0xce0232bf key_type_keyring +EXPORT_SYMBOL vmlinux 0xce181c28 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce30f482 gen_pool_free +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce3d95d4 dquot_acquire +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce633865 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xcea2e36c nvm_end_io +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebcf018 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xcede6fec unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xcee2c7c0 set_create_files_as +EXPORT_SYMBOL vmlinux 0xceeb0985 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xceec3180 skb_clone +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef311df bdi_init +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcefff950 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xcf22953d dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xcf2f072d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xcf3535a4 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xcf4c9651 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xcf5023d2 pps_register_source +EXPORT_SYMBOL vmlinux 0xcf7e8933 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xcf7eaae6 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcfb2661c kill_pid +EXPORT_SYMBOL vmlinux 0xcfbc6d22 nf_reinject +EXPORT_SYMBOL vmlinux 0xcfce83f4 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0xcfe1b06c snd_info_free_entry +EXPORT_SYMBOL vmlinux 0xcfee1524 tcp_child_process +EXPORT_SYMBOL vmlinux 0xcff30d2b gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcffb9bdd md_finish_reshape +EXPORT_SYMBOL vmlinux 0xcffd0a3b nf_afinfo +EXPORT_SYMBOL vmlinux 0xd012371d skb_append +EXPORT_SYMBOL vmlinux 0xd0221b14 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd051e2f4 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xd0556e53 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xd05e9549 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07be4d5 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xd088f393 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xd08964ba __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xd08da4dd pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd099da60 uart_resume_port +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a7b756 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0e65be2 sock_create_lite +EXPORT_SYMBOL vmlinux 0xd0e80555 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f70bb3 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL vmlinux 0xd1199eb7 nf_log_register +EXPORT_SYMBOL vmlinux 0xd14279fe devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xd14962c0 nand_scan_tail +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18a821d page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1ccc4b5 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xd1cd8c05 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd1d1a98c blk_recount_segments +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd1e9871d input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xd21c7abb ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd23066e2 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xd2366b17 tty_set_operations +EXPORT_SYMBOL vmlinux 0xd245d494 km_new_mapping +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27423b5 of_device_unregister +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd284849c __blk_run_queue +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2cc94d3 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xd2cfc687 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dea05f _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0xd2fa7a5d of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd31e8d52 md_done_sync +EXPORT_SYMBOL vmlinux 0xd327d425 iterate_mounts +EXPORT_SYMBOL vmlinux 0xd34374ef pwmss_submodule_state_change +EXPORT_SYMBOL vmlinux 0xd35329f5 pci_pme_active +EXPORT_SYMBOL vmlinux 0xd355e92c sg_miter_stop +EXPORT_SYMBOL vmlinux 0xd3567067 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd378acab f_setown +EXPORT_SYMBOL vmlinux 0xd37a1ffe security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xd37c0024 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xd38a5516 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c88958 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xd3c92823 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e1ae2c sock_wake_async +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd404607d posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xd4098eed iov_iter_npages +EXPORT_SYMBOL vmlinux 0xd422306b send_sig +EXPORT_SYMBOL vmlinux 0xd4234bd2 audit_log_start +EXPORT_SYMBOL vmlinux 0xd429e23d qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xd45c768d mntget +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd4757e2c snd_timer_stop +EXPORT_SYMBOL vmlinux 0xd48e2953 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xd49eb0db kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xd4a76c0c kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xd4a930d8 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xd4ae596f pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xd4c4fe9e dump_skip +EXPORT_SYMBOL vmlinux 0xd4c64ac1 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xd4ff8030 security_path_symlink +EXPORT_SYMBOL vmlinux 0xd507161d dquot_enable +EXPORT_SYMBOL vmlinux 0xd50c31f7 __register_binfmt +EXPORT_SYMBOL vmlinux 0xd5159e79 dev_uc_init +EXPORT_SYMBOL vmlinux 0xd51afa03 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xd5268259 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xd5391666 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd553274c dev_open +EXPORT_SYMBOL vmlinux 0xd554a925 sock_release +EXPORT_SYMBOL vmlinux 0xd56dea1a loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5b124bf sock_i_ino +EXPORT_SYMBOL vmlinux 0xd5bf38e8 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xd5c62928 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd5e0c1bb nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xd5f2dab4 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd60641ab omapdss_register_output +EXPORT_SYMBOL vmlinux 0xd60c4369 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd667ac69 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6b4ead5 kern_path +EXPORT_SYMBOL vmlinux 0xd6b5d9e8 force_sig +EXPORT_SYMBOL vmlinux 0xd6de5626 path_noexec +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fa9c0b tty_port_hangup +EXPORT_SYMBOL vmlinux 0xd733f71d bdget_disk +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd758c4af max8925_reg_read +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd762b62e __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xd76398ae d_alloc_name +EXPORT_SYMBOL vmlinux 0xd79111fa ata_port_printk +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd79e27f5 dev_activate +EXPORT_SYMBOL vmlinux 0xd7c1689c iterate_supers_type +EXPORT_SYMBOL vmlinux 0xd7c19663 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xd7c684bb snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xd7cc4cc3 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd7db146b serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e62b3b mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd809da5d from_kgid_munged +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd846a4c4 scmd_printk +EXPORT_SYMBOL vmlinux 0xd847705e __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xd850dd6c request_firmware +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ac2cfd blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e8e6d7 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xd8eb3dd1 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xd8fa77c0 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xd90200d9 user_path_create +EXPORT_SYMBOL vmlinux 0xd909d09f __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd93811e5 inode_change_ok +EXPORT_SYMBOL vmlinux 0xd9401a84 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xd9541c80 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd966737c generic_file_fsync +EXPORT_SYMBOL vmlinux 0xd971e2cd scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd977b5d9 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0xd978b2bb generic_file_open +EXPORT_SYMBOL vmlinux 0xd978d857 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd981bfa5 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd995b99a con_is_bound +EXPORT_SYMBOL vmlinux 0xd99f8f94 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xd9a425f9 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd9b54ab6 lock_fb_info +EXPORT_SYMBOL vmlinux 0xd9bcb7e2 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xd9ccb1bc d_alloc +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9cff5ca mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9dab5cd inet_sendpage +EXPORT_SYMBOL vmlinux 0xd9e50d64 vme_register_driver +EXPORT_SYMBOL vmlinux 0xd9e7cee9 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xda2c0d9c of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7cb72f sound_class +EXPORT_SYMBOL vmlinux 0xda86da32 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9263fe inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xda944041 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xda949628 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xda975220 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xda9ea782 generic_make_request +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdac2f2af d_obtain_alias +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac90b92 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xdac92f61 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdadae77f pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xdaf5870d blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xdb0b3023 blk_rq_init +EXPORT_SYMBOL vmlinux 0xdb35305f blk_put_queue +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb47df24 sock_create +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6f0525 soft_cursor +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb77d590 shdma_chan_filter +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdbac6174 pci_request_regions +EXPORT_SYMBOL vmlinux 0xdbdd3039 udp_proc_register +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1c98fb locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb74fa2 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xdcda60b0 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xdcfec91d unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdd0449b1 inet_frag_find +EXPORT_SYMBOL vmlinux 0xdd0a2725 d_genocide +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd130874 notify_change +EXPORT_SYMBOL vmlinux 0xdd1b7665 locks_init_lock +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd24d02c tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd32ecb2 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xdd344ca3 pci_save_state +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd3cd803 key_invalidate +EXPORT_SYMBOL vmlinux 0xdd3fc1e7 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xdd5aaf01 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xdd66ad3c tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xdd6db2c0 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xdd70c9ea udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xdd71a547 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xddc3c905 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xddf0f364 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xddf1a0d1 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xde051a8c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xde0dee96 tcp_connect +EXPORT_SYMBOL vmlinux 0xde5ecbbe key_validate +EXPORT_SYMBOL vmlinux 0xde7c0f92 page_put_link +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdebe103b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xdec030e5 arm_clear_user +EXPORT_SYMBOL vmlinux 0xdec58fbb neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedbbe25 d_drop +EXPORT_SYMBOL vmlinux 0xdf23a6e3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4a2e12 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xdf51d2aa dev_add_offload +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf68ea18 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xdf75f99f __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xdf7a1890 input_release_device +EXPORT_SYMBOL vmlinux 0xdf7dd4a1 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf994101 component_match_add +EXPORT_SYMBOL vmlinux 0xdfaf1dd9 ata_link_printk +EXPORT_SYMBOL vmlinux 0xdfb32a65 put_filp +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd25f0f jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xdfd49a28 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfda2cd0 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xdfe30bd5 I_BDEV +EXPORT_SYMBOL vmlinux 0xdfe3a35d posix_lock_file +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe02d9219 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xe03ca0b3 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xe03ef4bc jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xe0431565 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xe045ded4 dm_put_device +EXPORT_SYMBOL vmlinux 0xe0462c50 elv_rb_add +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0551602 set_wb_congested +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe07456d8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe089478f omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe08b7292 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xe0aa82c6 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe0acf343 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c55c71 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xe0d85fc4 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xe0de1406 of_node_get +EXPORT_SYMBOL vmlinux 0xe0f439e4 dev_close +EXPORT_SYMBOL vmlinux 0xe110ef3d cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe118987d udp_poll +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe12fefe9 sync_filesystem +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe143564c mmc_release_host +EXPORT_SYMBOL vmlinux 0xe14583d3 sock_no_getname +EXPORT_SYMBOL vmlinux 0xe146bbf7 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xe165f5e6 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe17132dc key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17c8a64 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xe1814d0c pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xe1acc9c4 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xe1c54fe2 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0xe1cf7740 set_user_nice +EXPORT_SYMBOL vmlinux 0xe1d1795c dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23eadd6 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xe24754a2 dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2737f5c blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xe27837a3 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2bfa42e dma_common_mmap +EXPORT_SYMBOL vmlinux 0xe2cc96f7 __do_once_done +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e19277 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xe2e5bac0 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e9d56f alloc_fddidev +EXPORT_SYMBOL vmlinux 0xe2ef012e pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe30c10b8 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xe31adc35 key_unlink +EXPORT_SYMBOL vmlinux 0xe31cfaed md_reload_sb +EXPORT_SYMBOL vmlinux 0xe331f045 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xe33ada44 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xe3404c24 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xe357c18c blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe39a2464 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3c7f567 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f698c3 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xe40ba2cd ppp_input_error +EXPORT_SYMBOL vmlinux 0xe40d8167 dquot_resume +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe41f674a inode_set_flags +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe446fc17 xfrm_input +EXPORT_SYMBOL vmlinux 0xe47deb02 phy_device_create +EXPORT_SYMBOL vmlinux 0xe4aa1584 register_sound_midi +EXPORT_SYMBOL vmlinux 0xe4b09ed0 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe5064685 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xe50ae9b4 get_acl +EXPORT_SYMBOL vmlinux 0xe51741a3 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5285e7a cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xe536eaf7 pci_release_regions +EXPORT_SYMBOL vmlinux 0xe551746f netdev_warn +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57716eb pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59e4ee7 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cedc89 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f7f51d jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe600ff20 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xe606deff qdisc_destroy +EXPORT_SYMBOL vmlinux 0xe64738d7 import_iovec +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe69095e9 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a57fbd file_update_time +EXPORT_SYMBOL vmlinux 0xe6b476c1 nand_scan +EXPORT_SYMBOL vmlinux 0xe6b7d3d4 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xe6cdc310 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xe6e904bc inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6ebc60e reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xe6f311ef filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe70cf881 mmc_request_done +EXPORT_SYMBOL vmlinux 0xe711addb snd_timer_new +EXPORT_SYMBOL vmlinux 0xe733cdd4 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xe73ce314 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe74933cf scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe752671d udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe783f8c7 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0xe7874587 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe790afc3 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe7a49192 lwtunnel_input +EXPORT_SYMBOL vmlinux 0xe7a80227 arp_create +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7c6b2b4 fs_bio_set +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7dabfe0 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xe7de988e phy_start_aneg +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8242e0f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe824c3e4 input_register_handler +EXPORT_SYMBOL vmlinux 0xe8542d6d dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xe8715b5a task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe8996d25 sk_net_capable +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8aad441 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xe8af2ad6 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8e2323f filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xe8eb7cd9 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xe8f9f0a6 fget_raw +EXPORT_SYMBOL vmlinux 0xe8fad91f nf_register_hooks +EXPORT_SYMBOL vmlinux 0xe90e6e66 generic_listxattr +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9195cca dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xe91ce9bd phy_disconnect +EXPORT_SYMBOL vmlinux 0xe92dd13b inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe9378c2d generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe93bacb7 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe9747065 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe9918650 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe9b54bfe dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea193c0a phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea3a62c6 tty_vhangup +EXPORT_SYMBOL vmlinux 0xea3ee19b devm_clk_get +EXPORT_SYMBOL vmlinux 0xea4a21e7 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xea6fb6c9 serio_bus +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea817122 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xea8891d8 skb_split +EXPORT_SYMBOL vmlinux 0xea8a2ebf inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xea9be9f1 of_device_alloc +EXPORT_SYMBOL vmlinux 0xeaa3b669 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xeaa44e7b blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xeaa98128 complete_request_key +EXPORT_SYMBOL vmlinux 0xeaaff340 vfs_setpos +EXPORT_SYMBOL vmlinux 0xeab745ff lock_sock_fast +EXPORT_SYMBOL vmlinux 0xeac8c824 sk_dst_check +EXPORT_SYMBOL vmlinux 0xead2911c clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xeaf4df09 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xeaf8d05f xfrm_state_update +EXPORT_SYMBOL vmlinux 0xeb01914a serio_interrupt +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb13365b blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xeb191196 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb609b65 qdisc_reset +EXPORT_SYMBOL vmlinux 0xebbe0ac8 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfe91f8 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xec0e3eca seq_escape +EXPORT_SYMBOL vmlinux 0xec0f5e4b set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1d3c92 nand_unlock +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec613935 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xec710aa4 __put_cred +EXPORT_SYMBOL vmlinux 0xec7d1ae3 alloc_disk +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xeca000f6 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xeca802ee omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0xecb6bf54 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xecba58fb ps2_drain +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed024828 sync_inode +EXPORT_SYMBOL vmlinux 0xed19aa6a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed637af9 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xed6b942d security_path_mkdir +EXPORT_SYMBOL vmlinux 0xed6bae80 genphy_suspend +EXPORT_SYMBOL vmlinux 0xed79dcfe tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb6c280 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xedb78d54 submit_bio +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbfdbf3 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedcbd896 __get_user_pages +EXPORT_SYMBOL vmlinux 0xedd38270 try_to_release_page +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede77d05 may_umount_tree +EXPORT_SYMBOL vmlinux 0xedef7225 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xee2741ce lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee470078 netdev_info +EXPORT_SYMBOL vmlinux 0xee4712c7 ps2_end_command +EXPORT_SYMBOL vmlinux 0xee59d0fd twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee873d30 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee921e12 dquot_file_open +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea68398 cdev_init +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb4be93 seq_pad +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeeff9cfb swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xef010a78 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xef0f3eb3 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef433d24 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xef5e5805 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xef678385 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xef82ee9a jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xef8d2aa7 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xef91405a kunmap_high +EXPORT_SYMBOL vmlinux 0xefa7494c ppp_register_channel +EXPORT_SYMBOL vmlinux 0xefaa4c1c mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0xefccfef1 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd50413 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe04261 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00110fc skb_unlink +EXPORT_SYMBOL vmlinux 0xf00cd777 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf04212e0 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf0702f5b kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xf07dd20d request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08f66b4 mutex_unlock +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0d1ee68 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf104f311 override_creds +EXPORT_SYMBOL vmlinux 0xf10509cf elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf109730b register_cdrom +EXPORT_SYMBOL vmlinux 0xf136a00e request_key +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14d89a3 vme_irq_request +EXPORT_SYMBOL vmlinux 0xf17a826e jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1a72fb5 nand_lock +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf20aac79 lwtunnel_output +EXPORT_SYMBOL vmlinux 0xf20d4b32 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf2165116 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xf2382b14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf23c1e6f generic_fillattr +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24259b0 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0xf247fe29 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf2550720 module_put +EXPORT_SYMBOL vmlinux 0xf258856c of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c857e8 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xf2d844fb nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xf2ee1559 inet_frags_init +EXPORT_SYMBOL vmlinux 0xf303db59 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xf30bd792 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xf30bf2a2 make_bad_inode +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf324a079 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xf344200f vfs_readf +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3543a29 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xf36418e4 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38edb26 blk_make_request +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3a2649d unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xf3a7ec60 eth_header_parse +EXPORT_SYMBOL vmlinux 0xf3a9f83f of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xf3d85a83 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0xf3dd55dd scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3e8b4f0 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf3f31ea0 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xf400204a omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf437a1ba debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xf438140c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47b0361 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xf4861682 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xf4a39090 tty_kref_put +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bdcc01 generic_getxattr +EXPORT_SYMBOL vmlinux 0xf4d4b643 sock_init_data +EXPORT_SYMBOL vmlinux 0xf4dc0955 file_path +EXPORT_SYMBOL vmlinux 0xf4e2edb7 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xf4ebc507 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf4fccd82 set_security_override +EXPORT_SYMBOL vmlinux 0xf504f8b6 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xf5112e08 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xf537ed9c elevator_exit +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf550064a fb_set_cmap +EXPORT_SYMBOL vmlinux 0xf550caa3 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0xf5514ce0 ioremap_page +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf594c050 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c41f0a pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xf5d443b0 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xf5e08d5b pci_disable_device +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ee8b85 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xf6149b7e xfrm_register_type +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63a64a9 cpu_tlb +EXPORT_SYMBOL vmlinux 0xf6455399 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xf66f2618 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf679218b input_unregister_device +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6876a73 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xf688274d pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf6910ec3 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xf6914737 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf6a7f28e neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xf6afe9e7 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e8a7ea of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf712421f nd_integrity_init +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf7186d4a kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xf7252d47 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xf7468581 nand_correct_data +EXPORT_SYMBOL vmlinux 0xf7489f40 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xf74b7cb4 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78bff5c __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xf7a053ad bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7f57c93 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xf7f59bb5 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xf808ce00 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81b161e skb_store_bits +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82dd933 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8467d8f proto_unregister +EXPORT_SYMBOL vmlinux 0xf877b2b2 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xf885bad7 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf89c02ff __sb_end_write +EXPORT_SYMBOL vmlinux 0xf89ff892 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xf8a0cd50 mntput +EXPORT_SYMBOL vmlinux 0xf8aeee99 sget +EXPORT_SYMBOL vmlinux 0xf8afca30 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf8b1d346 pipe_lock +EXPORT_SYMBOL vmlinux 0xf8d3d305 touch_buffer +EXPORT_SYMBOL vmlinux 0xf8db2a59 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8f83baa get_io_context +EXPORT_SYMBOL vmlinux 0xf8fe8de3 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xf93375e3 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93cd38e generic_permission +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf9461973 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xf9535b0d sock_from_file +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf9709ef5 mtd_concat_create +EXPORT_SYMBOL vmlinux 0xf98d4a12 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xf991bc6e sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad639e page_waitqueue +EXPORT_SYMBOL vmlinux 0xf9b84640 snd_ctl_add +EXPORT_SYMBOL vmlinux 0xf9d01f76 __napi_schedule +EXPORT_SYMBOL vmlinux 0xf9ddbe95 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f871c8 d_move +EXPORT_SYMBOL vmlinux 0xfa0210ae skb_push +EXPORT_SYMBOL vmlinux 0xfa090fdc blk_init_queue +EXPORT_SYMBOL vmlinux 0xfa17251c sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xfa1be131 dst_alloc +EXPORT_SYMBOL vmlinux 0xfa1df2ff keyring_search +EXPORT_SYMBOL vmlinux 0xfa2825b3 simple_map_init +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa5752b4 da903x_query_status +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6fe2ee scsi_print_result +EXPORT_SYMBOL vmlinux 0xfa84d414 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfada7916 bdgrab +EXPORT_SYMBOL vmlinux 0xfadcc8fd mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaed93fb dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xfb097b91 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xfb13ad1b pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xfb350032 devm_ioremap +EXPORT_SYMBOL vmlinux 0xfb5745c2 bio_add_page +EXPORT_SYMBOL vmlinux 0xfb5b8291 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xfb6972b9 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb709eeb __netif_schedule +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb83a728 block_read_full_page +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9e1958 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xfba25330 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xfbaa957e i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb987ca mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xfbbc93dd neigh_table_init +EXPORT_SYMBOL vmlinux 0xfbc18464 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xfbc43411 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcd90b7 sock_rfree +EXPORT_SYMBOL vmlinux 0xfbd6689f do_splice_to +EXPORT_SYMBOL vmlinux 0xfbe70b1e nvm_put_blk +EXPORT_SYMBOL vmlinux 0xfbf4e669 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1f5147 serio_reconnect +EXPORT_SYMBOL vmlinux 0xfc300c34 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xfc3908f5 fence_default_wait +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6b2c9c vc_resize +EXPORT_SYMBOL vmlinux 0xfc94ce77 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xfca34d06 vga_get +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0ae0da padata_start +EXPORT_SYMBOL vmlinux 0xfd2b771d serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd337383 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd379faa mmc_can_erase +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd43911d iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xfd470db2 update_devfreq +EXPORT_SYMBOL vmlinux 0xfd557902 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd73828f __lock_buffer +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdaa3726 framebuffer_release +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdb6700b __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbfcfdc blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xfdc9ecc4 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xfdcf5911 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xfde7d67a blk_get_queue +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe053c3a tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xfe2b9a0f dev_driver_string +EXPORT_SYMBOL vmlinux 0xfe2beb0d __lock_page +EXPORT_SYMBOL vmlinux 0xfe2cb994 iget_failed +EXPORT_SYMBOL vmlinux 0xfe3c4418 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe42e219 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xfe4ea9db iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5d5376 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xfe657f0e devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xfe6baae9 dquot_operations +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe80ed5c xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xfeaf2444 __seq_open_private +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee4486d tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xfee6f4e0 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xfeef663a __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xfef421c2 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xff0f019b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xff11b42b adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xff1c4308 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff3fc6c9 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0xff55dc63 netif_device_attach +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff8ea67d blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb1241e __serio_register_driver +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffd6aed0 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xfff57c02 tty_port_tty_get +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xa95bf035 sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xd1450e8a sha1_update_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x36fdadee ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7636bf43 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x8b003744 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9fa4411e ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9fa53f07 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd164bdd5 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd293f366 ablk_set_key +EXPORT_SYMBOL_GPL crypto/af_alg 0x470f76b1 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x4d4823ad af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x7c4cab1b af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x87ad2b89 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa3567089 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xa87f1d95 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb62a945f af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xcf05b196 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xe49c8253 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x075ad522 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x7b1a50da async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb8b54032 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x16dc9fa3 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xee3745a4 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x053b949e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x358ca95f async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb0369daf async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe8747254 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x86f1fdb0 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xa1f26443 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xb3a40e74 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xde62c65b cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xadbe2d62 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x57e58157 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xd616c78e crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x1b92d0a4 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x2d0d5bcc cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x420efdcb cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6743566e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x97deb55d cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x9d0f3419 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xaf7e128d cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb8053b82 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc0a57394 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf5ccec49 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xd9e7a675 lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x163454b2 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x18f89830 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x57f537ba mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x65b47be4 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x69d42beb mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x71cef6b5 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbe6b54cf mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd7d63592 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x0c9a8f5c crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x462862e9 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xd57643bb crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xfe0de367 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x2d868e15 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x224421ac twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xf1ef110e xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xcb8d0010 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xc4d764a0 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x30e586fd __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x462c6089 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5a8ea150 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xfe453dac __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1b62afb0 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x224971e1 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2d789c65 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e9a8961 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x326c41b3 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3aa6a310 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3bf4b9d5 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4676de7b bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x640c0463 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6906757a bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x763b62f3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x915e3576 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa5ab229b bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaefdee73 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb305dfc1 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb31fa298 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb4c787f3 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6cce9da bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xba597729 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbad16a05 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd06ec21b bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe0dc767f bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe8662106 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfeb15f30 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2b537abe btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x38f7b1c5 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6c8aaec5 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7a182eca btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x91a4dfbc btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xacc18465 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0c70d137 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x263cb630 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x2e12d47f btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x39b2accf btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6a8c90f0 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6c57cf5e btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x72b40cc2 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x97cae62f btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcfae5a63 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xecf7e605 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf592ba83 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x04c6629f btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x55718de8 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5ce0d740 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x66fb48a5 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8c0e54f6 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc75a1705 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcc79f53e btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd1d593f0 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xde991afa btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe69012f7 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xea884689 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xcce766ab qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xee488f47 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x47f37d7a btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x1c0c242b h4_recv_buf +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x09ee16fa clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x13764cce qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1ad28e9c clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1f4159b0 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3b0b58e5 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x40e67b03 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x53f95e39 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x587ac0ca qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x612214bd clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x67ae803a clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6baea882 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x709d9cf0 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x73964fc2 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8c4dbdbe clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8d53d96e clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x90b53166 clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x999e1e71 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x99d2c773 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e2e91a1 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa5024189 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa583480d qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaace56b1 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xb8ce89c7 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc7994798 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcb0c5248 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcd0a83c6 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd25fd154 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe703bcad clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf1f136dc clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf69c2f55 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf93e315f clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x8a570100 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xfcf3740e bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x33af3613 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbebb47a5 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe2aa90f0 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe368dd63 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf0e440b2 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8f39601a hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xdc401c48 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xe10ead9e hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0567647a edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x15a2ebbe edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x18680a27 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x18803248 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1ada73b0 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x280dd0ae edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4a936a59 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5aecb180 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5d621e89 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5f82e793 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6183ae1b edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x626e6185 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x686dcf18 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b7b6ee3 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x92e53cf5 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9c5ba288 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9e795ebf edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9ffe11be edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd3838da1 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd3ed477e find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd9d90aa1 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe3df1c83 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef87c3f3 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0xe342fbf5 get_scpi_ops +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0ef48339 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1add7871 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2dda8266 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9e7aeecf of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa5b35676 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb08157f5 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x4bb45165 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xf9ca2be4 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0x36edf130 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xc3142622 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00ef08d8 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x167c4845 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x18225b61 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x24949136 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4f7e659a drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x53889fd6 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6e977800 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7424ee61 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x77db3af1 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa1f5d119 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xceff3c13 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcff51dba drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd780c196 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd943bbc8 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8345e74 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xebf26c5d drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xed241882 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf7acaef3 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfaedf144 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x14902be3 drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x21396b70 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x64fbb521 drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb2c912af drm_fbdev_cma_hotplug_event +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc137a61e drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x15a8df4f imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x1cfe024a imx_drm_crtc_vblank_get +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x37707c0a imx_drm_crtc_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x419b08de imx_drm_handle_vblank +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x66620a7c imx_drm_encoder_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xa2183d49 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc486b217 imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xdbc70746 imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xeee0cfa4 imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xf589a3b2 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xab623a3a ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xbcb3ae8c ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xf169d34d ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0074b2a9 ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0468bb40 ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x04f7075a ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x06d6e6c1 ipu_dc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x07a70da3 ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0e42bd95 ipu_csi_set_dest +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x118160e1 ipu_ic_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x11d8f100 ipu_stride_to_bytes +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x13952dfe ipu_dmfc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x16ba56ef ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x199bd5c8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x19edf185 ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1ba497eb ipu_pixelformat_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1e913d9f ipu_csi_get_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2032d92c ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f92d651 ipu_ic_task_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f9751b4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x30b6999c ipu_rot_mode_to_degrees +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3166aec7 ipu_dmfc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x343d29a9 ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x36281f7d ipu_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3afbb44e ipu_smfc_set_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3e86ea72 ipu_di_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3fdef365 ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x51475e87 ipu_dmfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x527f3b94 ipu_smfc_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x53de277c ipu_di_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5812096c ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x58b89cdc ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5dff3d30 ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5e4ba84a ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5e8bd408 ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60bdf2ec ipu_csi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x623722e2 ipu_ic_task_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x663082d4 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6ad5b863 ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6cac18dd ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7121bd07 ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x72e2e99c ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76302d14 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x84a5a208 ipu_dc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x86ee1e14 ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x87afc269 ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x886c35aa ipu_smfc_map_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8e68f965 ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8fc72ee6 ipu_cpmem_set_yuv_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x95c066d5 ipu_srm_dp_sync_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x97686fe5 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9892992c ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9900f65d ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x99a0ef07 ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9c335d85 ipu_pixelformat_is_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f38e177 ipu_dp_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa04f9b44 ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa1980ef4 ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa4b0cabd ipu_dc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa579616b ipu_di_adjust_videomode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa60b144b ipu_csi_set_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa8055436 ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa81c9c4b ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xad81115c ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb228bf1e ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb94ca95a ipu_dmfc_init_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbe22494b ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbf025983 ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc6675aa9 ipu_csi_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc677177d ipu_smfc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc6b1c026 ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc7a4fca5 ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc848c5d7 ipu_dmfc_free_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc88d89a1 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc8fce0f0 ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcbb05bf3 ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcc233ff9 ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xccef97b3 ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7c6998 ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd064a453 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd5055dd9 ipu_dmfc_alloc_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd7989942 ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd9a4e223 ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdc19aa61 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdcbfe1b6 ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdd12da5e ipu_cpmem_zero +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe1e2bd1c ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe300a959 ipu_dp_setup_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe3b86336 ipu_csi_init_interface +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe6243c52 ipu_dc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xec44b75f ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xec983852 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xee1198ce ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf09add95 ipu_dc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf2632150 ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf69d6cb6 ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf7d99d69 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf9ed222e ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c52753e hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11d9a725 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x15b09667 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2095f26b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2dd3ca18 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3499b29c hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x44a609d8 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4838c890 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d5e63e8 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4dc33d07 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58c51db8 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x670b0247 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a94dfb0 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7398cd20 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x76d7e944 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b85333b hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8f4ec771 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x94f53d40 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97469d7d hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97c5c6a1 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa82c8945 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb20832ba hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf8005aa hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1a7fab7 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc8cb7c8f hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2db332c hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd416a57a __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd809f3f7 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe07eb208 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb90e506 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef2583fe hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf296c9eb hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf56235c2 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf66fd5c2 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7ffc009 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfde47e60 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8050a321 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x015cae73 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0f8989a2 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x41e296cc roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x89195920 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9816f8a5 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd1f04ae0 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1b404ea4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3e9971bc sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5c42f1c3 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x643de6f3 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7039161b hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9353fd2b sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbcbaea0e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc29a32ff sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf22aa362 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x84af290a hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0259c745 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x07bcb602 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0f72d245 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x24e41009 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2ad44de8 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3231b649 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x579124cd hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d3a2132 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6e0ab672 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x93f6e8ae hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x95d41f58 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5e6e55d hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xba755219 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc4919d7a hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xca058f7c hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce80a44c hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd012ddc6 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xda4a1b93 hsi_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0218457d adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4e8eae0a adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa831cce8 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1898c5f5 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x195d399f pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2264f70f pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x27088e41 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4130a80a pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5d818382 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x856ecf98 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8c90b49b pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8f787c7f pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa4c8c56a pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbe5f5a17 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd15284df pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xef176694 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf19bb6a0 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf409b561 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x22541f79 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x2db2cfea hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x45ae2060 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x569beb2f __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x70f4d0f0 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x7e4e762a hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xc133a2a0 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xcc2c1d81 hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xd929c339 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xefe42c88 __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1a956892 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x49735143 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x8e96d2ee intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb1fd2a62 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xd3a12f76 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdc244ab1 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xe843d67b intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x07a8e390 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x34d171dc stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8dc20bf6 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x9f23a441 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xde2ab0dc stm_source_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1dcc249d i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x31417425 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd11bc8f3 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdb8e709f i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xee091480 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x30cb444a i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xb64f57c0 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4f0831dc i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xf9fba913 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x57424415 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xaddf4d13 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xe0cd75dd bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1c7af625 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2354c11f ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2c8a56aa ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2e3f2373 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5024949e ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6ec3023d ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x77f9f261 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9c898081 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc7663b11 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xa7f2d8c0 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb8f411fd iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x5743e27f bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x9651bddc bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xaffed34e bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4b474fc6 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4c588beb adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x55e24cff adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5bcdf8ee adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5f5920ac adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x947928fc adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa93a9f67 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbaf1ba4f adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdd6c3482 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe0b71cbe adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe5525fb1 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xee0f12e1 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x075265ca iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1466fe4e devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x14b77649 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x151b987c iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2edeeb95 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x471624de devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a08571f iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6f614a6d iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x70ca104c iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71bc3a43 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76805985 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7aad88c0 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7b49bc7a iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c2e821f iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e730d2c iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x98f4cd4d iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa115aabf iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabd90cfb iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb35b8acd iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4ecdd6c iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb565dd7e devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca5fa8f4 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd350c9aa iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd45a9f3b iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd9aeb688 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xda71875f devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1cf9582 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe3aa8c5a iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8f46403 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef161be6 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff4bc3a9 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x8e5d42af input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x48ca7c34 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x769d5a58 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x613ba947 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xbf850412 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xde4cf356 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x85fcfc48 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x89ba3324 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xce4ae349 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x10754d43 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x8d280180 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x555d07de tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x56cb1c6a tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x9c31a49c tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xde508beb tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x12ce07d1 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2d20043b wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x30ed1b11 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5ee78ac9 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6f79c76c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa4e2814f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd5a814c7 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe1f906d5 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe5f978ae wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe5fb0187 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xef7081fe wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfc471b8f wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x148498f9 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1ea01e51 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x25c42187 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2b2d0b5b ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x40e036c6 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x600fa489 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa9b59c9b ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe3289824 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfe83d685 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0ae079ee gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x334b8024 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x38701e64 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x47d78c4f gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x53815e3b gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x698d5b41 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7219f58f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x87d75eb5 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9dd68c1f gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcd84f78c gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd5e0e3b5 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd765601f gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xda767604 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7c437d1 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xee984daa gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfc7361be gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff600ff8 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x12a1853f led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x23b04799 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x64f976f5 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd773c845 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe8e49e23 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf2897dc7 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x17a8df34 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1c9e3b1b lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2cba34a7 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x396749b4 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x49170bd7 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x5a3f637b lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x71a77905 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x72ab7035 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9fe19345 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc0a22285 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdb68cb8e lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x098f747e mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x10165ea1 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1286e7ba mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2cff8dd4 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6fd5ff14 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7bd12db2 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x92df4ec1 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x99cc54ac __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa4c7de34 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc08022d4 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcb71216d mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe7844279 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf4b9e658 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06628c2f __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06b11706 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x07e2c777 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0b1ed8cb __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1683a5f6 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x16c3fa29 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x16c8cc13 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x18d1988c __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2061620b __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x230dd380 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x29a4c5fd __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b277945 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3ee17aab __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x402d6200 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49c216ec __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d1e9f82 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7930d50e __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7d597e2d __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8461608d __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84e60671 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92d61794 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9415be3c __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xad2d4ca2 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb21fadc0 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb364194a __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbe406c76 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc72008a2 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd6d1aa5e __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc24ee1e __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcc8ed24 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffd8c38e __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x04a507ea dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0c642511 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2262d9cf dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4be6fa9d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x691bf7a4 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x878f470c dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa445fae4 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbbb5aa18 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcb4aedb6 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x5fa85101 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2571dbc8 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x26c5b278 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2ce50601 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3c5bd397 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3f87b121 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8c594b6c dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x92c02227 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x584d4cef dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa7f6da36 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5a73f181 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8ef93701 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9a16c132 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcb4c1077 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd12ddd3d dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xec8f1dd3 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe7a5e196 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0bb57a62 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x20f82ed7 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x20f972b9 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2b5936c7 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4c64b87f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7b36dc43 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7c292924 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8fb4338b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb340e8fb saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbe398bef saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4a881eb4 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5d862033 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6c613e3d saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x88f0aa92 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb427a7b0 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdbb4859e saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf0f89960 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2972320f smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x304459db smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x314a3c86 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3666373c smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x52c47482 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x58e3aa2c smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8107fdc4 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x85afec40 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x88b88f75 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8c726d88 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x98535b02 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaf7b3d94 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbf191c6d smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc1a8d22d smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd0b2e1ad sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe33f993b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf3692ba1 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xb8ade0a8 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x800daafa cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xd9be8ba7 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0fef1916 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x30824df3 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x37d601b4 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x3e719e59 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x4600ef9c __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x48cc01be media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x61313c32 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x6db21278 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x6fd16cff __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x7e6d8b00 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x81a5ff62 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9cefffd0 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xa11c6046 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xb6a03d36 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xca5e9dc2 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xe902580b media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xfa6abdf3 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xfdb710e4 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x11f86564 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1b0873f6 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x22c2404b mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x244b862d mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x258e3c84 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x317af05e mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3fbe4e83 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4481984c mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6d0de082 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7550f319 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x881f381c mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa0ef1b36 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaccd4dd9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb9565a07 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc4320868 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc6534e65 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd65ea274 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdf730fc2 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf77da864 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfb5ffe8b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0007ef30 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0f126a89 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x111233ab saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x216dd732 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x503b0ce7 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x58f6f511 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x59c1ccdb saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x630eea13 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7e258f94 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8206b131 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9c3fafef saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa128d2fc saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa9309a69 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc3b9679c saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd3107df4 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdc36901a saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe9a4571f saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf8f12236 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf9bdae1b saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7efb3f0f ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x95551a8a ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9fdaa0aa ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa5d3b875 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcb28012e ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd3fcfa23 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xed2f7c45 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x45c59429 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x4637ee3f xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x4ad266e9 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x56968c67 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9284204d xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe0255c7c xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xee0ecf8f xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x121aa0ad xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x0bca82c9 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xfcc49c26 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0dcad3b3 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x13cd7647 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x264eda0b rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x38bed0c6 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45d8171b rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5048fdfc ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x602397bb rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6fdd9265 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x75ef3fbd ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x82891b30 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x99a83e27 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a686a27 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7e705de ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbbe5efc0 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca9ea515 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe0d1db82 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1d16e58 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe2d85bb2 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe753bd32 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xc2add016 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xa3521e84 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x94bc03bd mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x9028e1d6 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xc762a832 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x13acaa1a tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x458fae0d tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xfe4d649c tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x55548e17 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x675e5199 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd815eaf0 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x897960ca tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9d529902 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xc5e42736 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x034ecda9 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b4ee7e2 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2f4aee57 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x41df12d8 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4872ce04 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x53479440 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5eaaa536 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x61c61070 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6de04b9a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8b5ef029 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x944cb0eb cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96804042 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb1507745 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb40025d2 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb58ce4c2 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcd273bc0 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd526f62a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd7b4e11a cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf4f4cbb8 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfded644f cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x8ea3ac2b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x099fe196 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x20b9329a em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2beb991d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2e8708e2 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4b82d3b4 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4dc2ef5d em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x538f6e55 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x54501b0a em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5e369505 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6240c052 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x635c1b54 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x65852ff2 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x69649b96 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x741a8875 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8efe4e38 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9099dbd9 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe5933ee8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xee9620aa em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf87b3d9e em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3d4b59c6 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x866c08f2 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xaa09f67b tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd0a17ed2 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2e6c9acc v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3f99e96a v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x81316480 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x8e1d7dc3 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe4997619 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a02709 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x64110a4d v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x8f8a4a98 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x05ac02d8 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d660b7e v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1bd1e54c v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x31a3f6b9 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x437c1a13 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c11fd82 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4fdd7dea v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5980fd79 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61a4c10d v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x631602af v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7295faf1 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x737fcd29 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77201576 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x83e1d0ac v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89ec4723 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8b0ef488 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9499690f v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa29c93ff v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa4461d5c v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc3e5aa35 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcc82bb94 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd2550d35 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd3ab3205 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd53fde64 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb53547b v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfcd85338 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe58ac70 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0bd5d106 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d806a2b videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0de78e50 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x10941e8d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1eb5d820 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e9efa14 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4731b085 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4a7733ee videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x599ed712 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5bb64209 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5bfc2504 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f1f4ba7 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x756e5ee8 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x819d0a9b videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8e85694f videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9094c9ef videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9b6a4743 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa9c822e6 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbd76a68b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcade9d30 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd7d2e648 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed4aa45b videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef7831d2 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfbfbe448 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x5842a92d videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x95a90f3f videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xa3fceae9 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x379fd55f videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4e78512e videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x63001cd2 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x687de65e videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2d032726 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc7a9f8de videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xefb880f5 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0aea8909 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c9677f0 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1c073712 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1f98befa vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x27ecb9e2 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b5aece7 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x46ae4baa vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4a163751 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x767c9c56 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x90a9fdbf vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9af2ca7f vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9f9eeb81 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab31bab7 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab97c964 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb64746e5 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe6cd0bc vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc2e792bf vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfdffd0ce vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x5a5c20e6 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xae9375d0 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x1b19e706 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xe5525989 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x66107a9d vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x066267f0 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0b867c69 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x188636f8 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1999185e vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1d57c82a vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x20240171 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2ae01526 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2b1f25de vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2d09330a vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2f56d716 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x31b6b69d vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x35e941b8 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3bce05ad vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4df85f76 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4ebce8f3 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x50109605 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x50370294 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x554d0fca _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5f5c6c0a vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x793c0240 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7c83fcdb vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x84d192be vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9ceab133 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa6bc08c7 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xac244aa8 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb2e84985 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbb9f1c42 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbde513e0 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd281362d vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe838a771 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf5fa18ef vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xfb2fa2ab vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x90a5c6ef vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x023992ae __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x04eb56a0 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x189a3a75 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1963112d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x200739a8 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x20370dc1 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x22bd0c2f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a117225 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2f828290 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x47c1260f __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4b3db08c v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52b0fcb3 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56d0dd67 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c91ac39 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x648c81ad v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x65205445 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x72fb52b5 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x783e1562 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x84c7dbd3 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x867ab32f v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x881acecd v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ce2da88 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8dea593b v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x93a8316c v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x948de708 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9bb874e9 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9e41cb2d v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xab06e74e __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb13793ae v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3ccdc05 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc286c173 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7d839ca v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd9d69cce __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb9f59cb v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0e83c69 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe53ae0aa __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x067d9b71 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x598f351f pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x78279195 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x084b4e53 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1f689b64 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x95396c00 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x954ce5fb da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x9911bb69 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb1abee4c da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xec24f10a da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x074d2c74 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x30309c49 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3e9f2f3c kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x625504be kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x869079d2 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x91630e06 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc876301f kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe0ead2d9 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x65eb354a lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7ffbf8a4 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbc4aeccf lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00a681af lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0f4174b4 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x224a6517 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x44348b8c lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6647336c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc804ecc4 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe32afe67 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x57d6df4e lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x7ec18bca lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd3a7f2cf lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x283cab29 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3a335e41 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7a891561 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa0c86038 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc2312529 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd1cec50d mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0532068f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x55b6849a pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x70266d61 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x90e8077a pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaf8878e9 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb089e592 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc6be5fe5 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc7db6320 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc9795737 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd3d3c700 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xedfea455 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x47cacbb8 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xd065fd32 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4ed36376 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x57ade7dd pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x74f1f5c0 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x842f70b2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8a5257f0 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0970a351 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x190ef0a4 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1975843e rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1cf0b29a rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1eade1db rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x312adf68 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3571996b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x41362979 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x620e2ca9 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x682787fe rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a17481a rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88ff7992 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x89e57527 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9a2d5a9c rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa0a78945 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa41ad10b rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa4ec9a73 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa51e922f rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xac47d7f7 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc88fd9f4 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbaa585e rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe159fe9e rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xef208780 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xef2b9866 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0939de0a rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0a91c72d rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x18dcab64 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4666ebec rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6387c7dd rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x765f4980 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x932683f4 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa217216f rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb50ef168 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbff26d78 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc90bf9d8 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xce34754e rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf0b57b97 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0023f661 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x04508187 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16da514f si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x181df608 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28ea93fc si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28fa8fdc si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2c76e126 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2da057fb si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x31847e5a si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3266c324 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4bcb58dc si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x525615bd si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x633cbd36 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x67e5f365 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x67ec3a6c si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x80438c5c si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x87ee7ec3 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8ce28067 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90e42363 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93286d21 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9381716a devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9aa75efa si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb321ddb5 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbaf1ae06 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc44b35c4 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9894ade si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcf525d47 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdacf1bf6 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xde1da872 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf8175d4 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe422804c si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe72cdbc0 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeda8e4d7 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf334f776 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x38887caf ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xe09119d7 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2b07af1f am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x58b20a39 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc0ea16ab am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf786f744 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x49871964 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x69d8aef5 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x82629231 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xe1aaafb8 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x86e230a6 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x47d4766e cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x99c8c31f cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xabe063cb cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd5d53a6a cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x07766995 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x40936762 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x539e2404 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x54ff399a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x77a94aba enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x988561d3 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf2bf78c5 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfad1c4ac enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3e5a1227 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x715eaf79 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9b8c65b9 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa06e5ebe lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa30c4503 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb886e020 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc388429f lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcd040633 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x0b92d1da dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x0b95fd65 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xe77e377a dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x145b898b cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2b72ac63 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd66c89f5 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x268f9a29 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xab241e7f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd57655af cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xa5215810 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x39fa617a cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8531fd2e cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xb5c253da cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xbc66403a brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xe4627068 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xf24f46c1 brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x534a0a58 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x0a44daf4 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x76001987 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x1ca99b90 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1a08d8b3 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x25c5330f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c981902 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2caf975c ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3f144c1f ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x72034e9d ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7659dbda ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x77c1f76b ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7eb197a1 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa9bb5ea8 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe2a812e0 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe52444fd ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xed0f64bd ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xede3d398 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x269d208a devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xd63da4bf arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1ca56c89 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x23a8e248 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa867396d alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xab491c22 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdd99436b free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xedfd753b c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x01a650b1 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x094bd834 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1d9d11cf open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x306a41a9 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3a848299 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e29c1ad close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x404a912e can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x494883c5 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4fac6023 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x57e712e0 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6dbb1fb6 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6e01d4db can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a152e54 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb9ce33b7 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbabc06eb can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe68eb671 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xefed0c8e can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf30e0dac free_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7927bac3 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xdb6935a1 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xedf0c516 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf55b248c alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4ba63bf4 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5d9fc70e unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x616a0e2e free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9a3b3607 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x7a70a492 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x8deff92f arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04235d5d mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07602912 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a159f1f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a999afc mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11e3932e mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12324ba1 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19559d69 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19776962 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1acc7e25 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1be4f507 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d453dc8 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e4365bc mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f96fc02 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x216a4a4f mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25706c1d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25f39258 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2926a037 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2da53b49 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dc4eb4f __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fa753e3 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3265465a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35bb72e8 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x365bb57c mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x369358a5 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e2bf304 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x408753d1 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4090a8a3 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41d773ad mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x420a34ff mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e43764 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45521580 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4916b36d mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b3f9cfe mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4be078e4 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d1519ae mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50f114e6 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5489fc9a mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x573a34d1 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59efa052 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a07ab11 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5be4a220 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e2f8ff3 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x603b9734 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61abbdbe mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62090915 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6292f858 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6985a678 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69fe000c mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71a836d3 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74186bca mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x763a3749 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b66f736 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81a77662 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8908b7f4 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8adcd858 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f5accf0 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x910f3ce7 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9184b4d6 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x925b931f mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9431396e mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94bb4062 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94d26e67 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9539ce1f mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x953f699c mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95e8e94c mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x970fdece mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99bcc069 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9aebbf38 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b636bd6 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b6c5f67 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bc6287b mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e3ac6d4 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0553975 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4885e2a mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5250cab mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa56f1da2 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7b94540 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0308d69 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1b78530 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1d05f21 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb29ff01c mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3ada611 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4d0b879 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6b01dc1 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6ee9563 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8053b82 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba8a4445 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb7be34c mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe2e736a mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe3be7af mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf63ff2c mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbff3c817 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3b7b8e2 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5c91926 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7cc28f8 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8d8a1c1 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9006c33 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc40cf98 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd324484 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce980cfb mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0b832d7 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd405ae89 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4c63f53 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd66460a8 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7d0746c mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdbb46ba6 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0481827 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0dfaf9c mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3425c37 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ae1da6 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe556bdd8 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe641cf9b mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe82f7f1e mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe94737e5 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebaa269b mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeca0eb1e mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecee7f6e mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefb62fd8 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf32a98b6 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf33b09c0 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6ab293a mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8498584 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf913b0d8 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf99f6aac mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08d272a9 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0de40abe mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b0aa289 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b0cb132 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x269a8345 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e57c842 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f39c38c mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31cdef48 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31e1785b mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9a00c mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44462164 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46dc27aa mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4bb3e314 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b01405f mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c1fd44f mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63e08f78 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63eb8721 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66977b1b mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c8458c3 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f839a4a mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75d44fb3 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77d64513 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x784d6c06 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7915ff3f mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b5b38f6 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x810c368b mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x921182fc mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9691d7fd mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96fe5e93 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9847e06f mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa23a5fa4 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaab1db96 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad32a520 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb41fb0b2 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb3ca559 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbb9999b mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc9203ae mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd693010 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdaf95fe mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbeda0a0b mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd330c538 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0878d6a mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe24d5477 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xedcc4a3b mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee0d3ef2 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8453460 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2e836718 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x31cfbc86 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x42ebfffa stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x8c4d606f stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x06110cc3 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x43be0998 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xa5005d49 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xeb16d105 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/geneve 0xebe2399b geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xf6f4019f geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1c45e7be macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x25ac898d macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9bcd5b65 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd016e5a8 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x3646e98a macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x209b5955 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x28c1895e bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3c96c4f9 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3d5a6340 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x49b02aa3 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5f18570f bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb29ff80a bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb2ba5413 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb41f7d9d bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xce49bb85 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x9360f820 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x169ab583 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3eaf4710 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x52a1764d usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x73aefbda usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x08ed3d40 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0a930ada cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1ab38695 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2a7015f0 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3b6e8af6 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3e3ed76b cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6b985c92 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8a76d9b6 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa2df4970 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x15c14b0a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3b3f0ea0 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ffd28ad rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5a2df9a0 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc379648b generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe8597e2e rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07da5f4b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x09714404 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0db055af usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1139c433 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1eaac75c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2119e526 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x28f8f3e2 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x35a8375c usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x491f1adc usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x572efd34 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6629e8f0 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x690395d4 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77bfc277 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c559a82 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x809f1f55 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x823a3686 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x867f1c85 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8c41f43e usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x940715c8 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x97c6f3f8 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab543515 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xabe5c491 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5ed9e26 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5ef39be usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3f26e27 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xebb5ec8b usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed50dfe4 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1882586 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2d4b14a usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf44a3a5d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf859b2da usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfad02d53 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x45368cde vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xaf47ac5b vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x011f5a8d i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0b1cff5c i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x133a1033 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x21b9fb1e i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x787bd319 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9afa25e0 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa73f8b3e i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaab48cbd i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb1895c24 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xba664217 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcb54a4d7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc3ad89d i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd885eb4d i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdb91adde i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe53edec7 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfe05a3e6 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x053a2530 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4098dfb4 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x583399b9 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x66bb237b cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x8f322270 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x09377d9a _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x54c8d2f3 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x614c85a0 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6544c746 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe1739dc3 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x16474139 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x250a5bba iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2a87604d iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x347e12f4 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x37742892 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e2a47de iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49b542fb iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5407eb7e __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x55132fb9 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x551d4d3c iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6ded31de iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x76c32bcd __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7d75def3 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x927ba75c __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9aa2fc33 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9bf16097 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c77eed0 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa3a5dc0a iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa4c20085 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa905cd58 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f43001 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc0caee38 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5506161 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc56cb321 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc633a965 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd7a093e1 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xde5fa261 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf64a8e7a iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfbc82003 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0f3b707b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x38b31bbd lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x425ba5b7 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x430d2291 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d42773b lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7f54ebaa lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cd97763 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x957263ac lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xabb2eb7d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaf1ce23c lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc860056d lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xccd51b50 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd6397615 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xde7a5907 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe79baf4b lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xff58f076 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0bb75109 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x260603fc lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4880bc6f lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x793027eb __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9ce079b3 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa080afef lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc23c8c32 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf387cd19 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0cf16835 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x13b43276 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x47ab3ab2 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5c9e83cb mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x74fcbf61 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8f691202 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x902a78a1 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x91c15901 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa2c59d58 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa2e674c6 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa530aad3 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xab3e6b57 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb158f5c4 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb214a9d8 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc891e4f9 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcd457899 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe2b5f0cd mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf92e4c16 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfff459b0 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0f1f198c p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6470ec47 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x647f9c60 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x71987622 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7a68a3fe p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa09021d5 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa43d363b p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc7a32a79 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe5a91ed0 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3e1aac9e dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7c4bd58a dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xca0d5cab dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd3859ed0 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x085e3e9b rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x15f6838b rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1814c271 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1aa2d171 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1d673043 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1eed01c3 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x29634754 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3a805b0a rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3c21bfc7 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x501d3f11 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x62966375 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x68c9a79d rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6f936d31 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x79106385 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x86a141e9 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x90faaa22 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x917320a2 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x922821f1 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x955827ad rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb02e6c72 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb2254f78 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xca7ba561 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdf43c201 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe8d1062f rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xeccc6a98 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfa23efaf rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfc1367b9 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x002a4093 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x26cc4e8b rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x311d689f rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x37a1e8b0 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3c0f8b6e rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3e10a4c3 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x464da0b7 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4b5c5711 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5dd4e051 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x673f45ac rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x80af3da2 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9149b507 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa4181eb1 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbe4ee20c rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd277c458 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebebb75f rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xedf1a4d2 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2dc3451d rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8b208976 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x948519da rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xade0e09b rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03a1ed84 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0953cd96 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1008e716 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x166f0534 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3b7fc32e rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c2dd9b4 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e1bbb37 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4834ac34 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x495e2da5 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x64c677cb rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6efe54e0 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72fd5e16 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77c64f05 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7af5b01f rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7dce88be rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8115bff0 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87beeae8 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8c0d9499 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2731bf3 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf92abc4 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xafe17574 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbeef5bb6 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc19ed0af rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1a0968c rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6b2677e rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xccd88785 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcd3a5b98 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdbb93c6a rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdebed2b3 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe32d5597 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeaefe049 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xecb16a38 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeffd6ee8 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf20b15c8 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2b7c39c rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7b239af rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf83f08cf rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfc7e62c1 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x101adc67 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x252522c9 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x41b44cdf rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x59bc87da rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9a00c332 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb912f2d9 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbfdba439 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcb8e9bf8 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd5092791 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe3336680 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe9b64097 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xea90a2ee rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfb24bfa4 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b186ebc rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b1c9cd9 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f583125 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x15150583 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x170f7e21 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x173ba9ae rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1991d4dc rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28a0b15e rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2945042a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2d245cf0 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34ac53cc rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x353cd673 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39260002 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x448de337 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x505190ab rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5847bebd rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6bf43634 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6e67c326 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f2eea15 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f97bd82 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74fa42cc rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90416116 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9115b867 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93f0408b rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94b250aa rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a14f83a rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a5811ca rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c62d6ef rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9ea75e4f rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f5c7a9f rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1e782e9 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1247102 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb407f58a rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb9841d40 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xca0ff12f rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc781ae2 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfcc9117 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd17431c6 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6841c87 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdfc23484 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4370cf1 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe604c518 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeafa69f5 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xedfc1289 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf02919ce rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf44484d2 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0fa6a405 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1df7df82 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x83a21ca8 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x9540ae15 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x99678be9 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x28a66644 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2cd5e874 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7455feac rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9fad672d rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x16893fda rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1a03b85c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2c9352ed rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3a4a511f rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x42e457df rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4c2b1c12 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x705a2077 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x76cc8749 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x79022513 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f26274b rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x950a7a51 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd463cf04 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd7bdafc4 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe03b1bb4 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfa040b34 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfd66f939 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x28e4c37b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6991af2d wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfa6a9868 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10aea352 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1a267716 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1a92e932 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x23b8c7f5 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c5ac9f6 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c6115f0 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d232780 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2f727f31 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x32ff93b9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x346b0e7d wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x42a62bfa wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x459ab428 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x469a86ec wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46e1ca04 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d34911d wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c8209d7 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64da6f21 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7147f761 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7be8efbd wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x828573c4 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83e7b6e6 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x859bb64c wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8cf60035 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f8bcb86 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9265dc9f wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x98d60a1f wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9fb5af20 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb42aaa48 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb646df6a wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb8728c41 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba290c4b wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbb72f5c4 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc497736d wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc9088f5f wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc90f711d wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcaac4900 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd56a5551 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb9f0ef8 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0313d84 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe8b28e13 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xecd672f2 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee8b9522 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf290daa6 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf37a20a5 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x450d8aac nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x88764338 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb97e7dd2 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xdaa60ea2 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0fddd3ff st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1806dd6a st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3853df1b st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x40a89a75 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x57d9770f st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5c011a47 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc8073712 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xce292513 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8e4eb710 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x990845cd ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa550259b ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3aa9eaa2 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x6714327a devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x7bd9452b of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xab9e14a1 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc1dfe998 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe0d82654 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xf89c7e72 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xffe8ed8b of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x205ae211 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x22a50316 omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0xb3f9e0a6 omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x03ffa5e0 ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x099f6b1e ufs_qcom_phy_enable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x1d59241b ufs_qcom_phy_is_pcs_ready +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x22ce3202 ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x23b36ba2 ufs_qcom_phy_disable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x2f52fb0a ufs_qcom_phy_disable_dev_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x30466843 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x4d8d2d7d ufs_qcom_phy_disable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x50cd5d09 ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5537710f ufs_qcom_phy_enable_iface_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x55dc8228 ufs_qcom_phy_enable_ref_clk +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x64c4bf34 get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x67360a6a ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x699e6f00 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x76111df1 ufs_qcom_phy_calibrate_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x8a418cfd ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x96f176d2 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xd084efe1 ufs_qcom_phy_start_serdes +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xdaedbcfb ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xf03e4da6 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x19443f29 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc99a892b pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xece147cf pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1cd62805 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4642fa94 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9615749c mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb8ac7061 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xba93e627 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6a480832 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x77d080b2 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9a778bd0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc0667f70 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdcbd6aab wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf49a7a44 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xe8559521 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b09ab87 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f3f993f cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1258a816 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x131fe831 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13402ab1 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15c5c460 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18f37b02 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2311de33 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x27b8f944 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34bd27d7 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38470e81 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3eaeebb0 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4077c347 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4830c39b cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52586de7 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b5d91f1 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ea5bfaf cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6095e886 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x615853e0 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63c1d138 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6d9d63b2 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x786706d5 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7af226a6 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7bd9d48b cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80f583f0 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8392aea3 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9390f839 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94c9051c cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa790b47e cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf20da7a cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1c7469d cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4b2df25 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb99b6735 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbdd620fa cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbf01f35d cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb80b8f1 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcfd63109 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd29b913d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd6acd7c0 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdca30beb cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd982aef cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe39ea2a5 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6619f05 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea29debc cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf595040a cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf65dfa20 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x04fb0c1a fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x17ec7c4d fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x26fb0dc9 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x27936fda fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x33a6b1c5 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x717f6e4c fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x75070037 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7d68367a fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7efe14d5 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa01adecd fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa99cba64 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb3f78a22 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbc435987 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbf7f0dde fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe1a2051a __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeb61b028 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x620004bc iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x63e06097 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x774e1bab iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82e9bed9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9877a7ff iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd1854324 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0153a48a iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x01ba3662 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ccfa525 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x10a68065 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x178c7f67 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x229a0734 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f4c5f2f iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31b5d179 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x354cf3d2 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3752c523 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3818fc26 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c3e3fbf iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e1fcabe iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54b17a34 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x657cc67d iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66c9c901 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69100621 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69e841fc iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x74e026d0 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77f284ee iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7ba1ef0f iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d705351 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86ddc30a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d3a5532 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9434d8bd iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94f05632 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa327ac42 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4db68f5 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5d00b5e iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa81a5cc9 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xabb56a14 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaefe0801 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcba39bb iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5ea5f1d iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9045046 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca93afa2 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda5f5b16 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb52a08a iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xddf4e8ed iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1193ffc iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9b8e944 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfd7b4882 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x09af1436 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1b73e876 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x207d9fb8 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x35b303e6 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x38510c79 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x40a96ef7 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4c6878f3 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4f8055f5 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x63118b1d iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8f0eda4e iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa22dd48e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb80e299b iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbe0c1784 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7d70ae0 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcec4f7fa iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd1dccd9f iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf5bc5ce5 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f58df41 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13f36306 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3af19b42 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3fa1ec44 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x49426227 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x495036c3 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c008cef sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4dab92ac sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e9c7de8 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x676901af sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7394e55e sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b09351f sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x81d6d207 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x830aedc4 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8fd26605 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9b9f3bd4 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa070eeb2 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa8269873 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc619f049 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf6ecbf5 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd454255f sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe332a478 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xec1eee9e sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf52975b1 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x012754b3 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04d11766 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x06e8e0df iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0dca7465 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11e3e625 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1720d994 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18d3a261 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24b13196 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c9d559b iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2da2b759 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32f9677f iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3484b812 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ed19377 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45b52df8 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a806149 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e3e2572 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5344b8ea iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x585c8b36 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6089c41c iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67169818 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d23f308 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x759155d6 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7aa46a76 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x875291c3 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8da818d0 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98cb532f iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9e76658d iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9f1b2f21 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa3a8dfeb iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xad3ee8a3 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf99cb61 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0871db6 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb42f7622 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4c2cb86 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcb077040 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd467392 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0cdda10 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1bd9b93 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2a1e637 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf55bb6a0 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1447eddf sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xae92fc15 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb16c24b4 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc138d64f sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xb3e80c55 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x21b8b73c srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2b57030d srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3c9a66eb srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3e6ad6a0 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5f318673 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x819cab30 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x003939fd ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x06b7763e ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0eda0567 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3fd56789 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x78e6485b ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x932a2680 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf7550f1f ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x126e3bb9 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x3edb9996 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x4094096c ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa18a82ba ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd3aedc49 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd9bb89ce ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf071a8bb ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1c0541b4 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2470c8a9 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x33124dac spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x826f03c9 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc341bb1d spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0ed7d8e2 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x845503bc dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8d0c9148 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaa39defb dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x013cc250 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0b2f2186 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1f96e82c spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x29021da6 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x420631c6 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x51a59b3b spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6a061424 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x71f37c0e __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x95d88239 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa01bcf59 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa80c634f spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb72524c9 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb7949035 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc94f19e8 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcbb8097a spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xedfe0182 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf53e2912 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf6bba406 spmi_register_read +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xd27ae12b ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c7814db comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1622f2d0 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1a6c79ae comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2920fa1e comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x38077bf7 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3948e42b comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3f037892 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40672e02 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4198ebcb comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x48059d7b comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x582f80b0 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5bd6c88e comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5fed18d3 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66fc18e6 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6caec515 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x74b0e9dc comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77cb4ccb comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8099290d comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8398b5e2 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaa1ec525 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf7071c9 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb376863f comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb295739 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc3187c88 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc398cb53 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5981b0b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc9c821b5 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1063033 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd885af66 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd977350c comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdcab21e1 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe553335a comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe8e0d073 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xefda32f8 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf9768044 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1b0c6c1c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3985822c comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x404b27d4 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x6146a6ce comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9d9196d3 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa11c1291 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xab2d5186 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc5a2aa5b comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x468c1976 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6f17262a comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7fe77447 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8745f94d comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc29b4451 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe66790e1 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xafd4f4d8 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x773cc7ac amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xbc33de5e amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xf6a4a2f5 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x30436913 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x388829c5 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x49fa4668 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x70a46785 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x752f9252 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8072ab20 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9a16f808 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9b0d0d08 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa19c29d5 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa2a08f94 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbcfb71a9 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc0c17ac8 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfc95a552 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0d5d8fba subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x7dbc1c00 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xd6dedfe6 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x62d841ca das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1206e61d mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2718af9f mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2aadf0d0 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2d121e01 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3dcc69b8 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x526f7225 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5f302ac2 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ed5bc9d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8cd47527 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x94653c98 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x94bec191 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x980f5195 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa063f724 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xafa3c134 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb742fec8 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbe5cff78 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc19a005d mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc31f371c mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc901e6d0 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc1334ca mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf3128a02 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x2d3b70b2 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x625fc672 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3301ba1c ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4a7e42ed ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x663dafe3 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7667c59a ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7f131cde ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa16804ae ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa76029b8 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xba027a15 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x22224603 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x47bb9105 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4b266ead ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x751b1c62 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x778aedc8 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf2b1c4a3 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x18046bd8 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x395d717a comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4127e282 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x50621c48 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6966f1cf comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb2258ed4 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc093c855 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x38b0dd87 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x0468de80 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x1ee49a23 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x21d280e0 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x48084060 most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x50a4f2ad most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x511e1522 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x5cbada91 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x7f168a4e most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xbb72d1c2 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xc1b6631b most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd576db3a most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd7f6bf93 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1ebafc8e synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab55cc6 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2e7d8bf8 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x414ba09d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x45c79209 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x63c22c55 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6ac220b5 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8587f3b2 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xac05e399 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe74ff9e7 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x1a529b00 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6fab7b5a uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbcca1340 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1c1fbce5 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x5767ab3b usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8b634e6a ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xaf0f8eb8 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0d9f4924 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xc3d1a7a1 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf1cafcc3 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x263413a7 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4168351e ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5d99f942 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb0d9cfe7 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb2c3f0aa ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc66eb82f ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0f6951f9 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x14ae3990 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x392efd67 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x411c7dfd gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4f5e6f0c gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7a1fd83f gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x95bd691d gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9dec8ca0 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xacb3aed3 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb0791db4 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb378e08f gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbe7b573f gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc21bd875 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdb6d41f6 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdf911fcf gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb3dbf19a gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf0e1788e gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x00fee4c3 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x4f763ece ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x83b54e8e ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x133eabef fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x13d2d46c fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x25698fad fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x25acc662 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3044c91b fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4054feab fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x457f434d fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4ff6d0fc fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5e9b3daf fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x80ee20c7 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa6ed87e7 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbed799ce fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd75fd217 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe381e1cc fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1be3c56 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x00a9e99f rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x02858409 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x141f6f56 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3a357b1b rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3c3f2ae0 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x44833aea rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x64e27965 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7020077f rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8421fd1e rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x93f919fe rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb9402f3e rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc5bcb877 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd0f0a26a rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfacb7688 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfd73fc77 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x00fe6ab8 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0a55f0e5 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0d975d15 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2399fce7 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x259f1158 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x363a2677 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x42a48645 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x497663e5 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4de62022 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6defca42 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x76c042ef usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x79b88679 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8176e578 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x92ca93da usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9373b1c9 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x947dd437 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x948ed46b usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9526a8db usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9cdb2b42 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9f741908 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaacd179d usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbc3b6999 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbf8b19ce usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd6564ad5 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc8f42cc usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xef5d3c2b usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeffc80b5 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf355db32 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf643268d usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe1c7408 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xc6791c1a ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xf3eeb2c9 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x13ef011a usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3ef09f52 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x75400bc2 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x93268b26 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9f7b60cb usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd03ccf40 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe11d977f usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xee509bda usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xeff49cfb usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/omap2430 0x6fb55e1f omap_musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x78d4c79e am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xf145b7a0 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x7705e16f usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x09f29f45 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x113a59b9 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1168455d usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x214cc03a usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x261109ff usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x35232a31 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4a735df8 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x50b65602 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x63dee807 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x70a80a15 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9747fa04 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc566d6d7 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc801c613 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcdc26951 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd88f19d9 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdae6ee8c usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe0fadcf9 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf0536061 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9c85bb0 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb11a42d usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfcfeaee0 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x020ffe8f usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x13006e1d usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16a7ba48 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x18c01ff5 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1e4cd371 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2013c254 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x22ecc8ff fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5db36463 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5e5ab8f1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61795d49 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7921202a usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81e91458 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x820111e2 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x84c5db1b usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8cde1e0c usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x94be5368 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa8f0bbea usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xab741ee4 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba738167 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc3ab1f55 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd1f03ac6 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd30500e6 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed4ce6d0 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf85b457b usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2870d29b usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x31b92547 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x46cba871 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5b6fa0cb usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6368f905 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6e7364b4 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x75ddaa69 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7846c3c3 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x91c94bc7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa06370fb usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc0054535 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc14d9742 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0b6fb350 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x102d3319 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x24013d34 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b7ecab8 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8af1cdb7 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xda92a743 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf026fdd0 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x05b9bf70 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0b0321e7 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1fe336fa wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2dbdfa1d wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x579f4bba wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5ac25bb5 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6a950ddf wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6e898b70 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x77850f6e wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9fe5657a wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa72bd6e1 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa87e86de wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xde570f6b wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe1d07f44 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x6e1e3d55 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd72170f3 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xec0a4dbd i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x05b1d5cf umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x25a0dd92 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3735dcac umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x546e71c0 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x63898fae umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb39cdaaf umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe7188e25 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf5eec01f umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x083eb509 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ab9b589 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x14329615 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1ee8a018 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1f373e9e uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x238fd10c uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2832dae1 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x299e8996 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x30d592cb uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x30e9666b uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33b745b2 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c9db20a uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x42303aaa uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49acbfa9 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x562c9f1a uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e7b62ff uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67d3bd05 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x683affe2 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d044cb5 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ad0fa52 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7d9506a6 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x80e4282b uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x841c787c uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x91f206c0 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a113dc7 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e890ea5 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa4ef7d8b uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac0be255 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaef065fd uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5e7d143 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb68d52e4 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbef5e082 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcbd11b12 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd5a2260 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeee1a06c uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd72ac1b uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe260f35 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xd46fe92a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x88f058b0 vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x90fa96b4 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xa30ea62f __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xd57040d6 vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x204cc204 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2a9f56b9 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x40961111 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x45809274 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe7f071d0 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf1bb7330 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x9b5e1441 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xc339340e vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0931949b vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x187022d4 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x21a57e63 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x243a93c8 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26ef798f vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x40692b44 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x41e319d1 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4790490c vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49762cde vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4be73a74 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x556dabb8 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d4af3fa vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5ee2a842 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6274ca83 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6706e9f5 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ceaa85b vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x788a9acc vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7ab6da89 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x808fcd6c vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x989567c3 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa07dc157 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1554bd4 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa64e055d vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc52af0f1 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca89f6a1 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd65bd541 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xecfd5787 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef090a6a vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfbc50419 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x08287919 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x10963ef4 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x60240786 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x658e8ea2 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xadd47ae0 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc65a1dc9 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd97a92f0 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x14bd0a49 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1653c0b7 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x33e4cf18 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x995b4eb0 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9d9b138a auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd38101bd auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe01a1178 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe06770aa auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe227bc4f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf83a1339 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xdae6dc90 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x26d3245e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc8571ea0 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x3e85e036 sh_mobile_meram_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x4384dd63 sh_mobile_meram_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x7374448b sh_mobile_meram_cache_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x78c4ff0a sh_mobile_meram_cache_update +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x8e1aeb6b sh_mobile_meram_cache_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x99f40e04 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xd14eabf5 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1868dc4a w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20d16901 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x414279a9 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x52216b81 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5556d4db w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x61cb4c43 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xad2875bc w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb0544ae6 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfda61e99 w1_read_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x22daa276 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x43e78623 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdb7c7dba dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x116499e3 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1ba625f0 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2a13c30b nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x37f92fa4 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d8ad6e5 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4cf06742 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa27520a9 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0073c93a nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00cc72db nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x015002c2 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x042b4527 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05d009a6 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07f89891 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08fb1c86 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a0f03f4 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c08cb29 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0df33322 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f2cbfb6 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10674e25 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x153346b4 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x191a3620 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b38058b nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cdf6ae9 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f23031a nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20c802d8 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25e59cc7 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x260dbfb0 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a4fd2ec nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cf48602 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d1d07d4 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2db619a0 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31b7f392 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35582094 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3629ff6a nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36a1f8fb nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38b538a5 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cb1b7f1 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40de1baa nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41d73b7e nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41fd07d6 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42a3d99e nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x458a6327 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48915bf3 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4937324e nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49672b1a nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51496484 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51b9b9dd nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x526c0a0e nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bc33021 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6024f2e1 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60db3519 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61af92e5 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x655a219f nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67a784a6 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a2012ac nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b956f0a nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c26def7 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d70a3b9 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f242907 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70c71148 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76952ef5 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78ef66b5 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fa2a29d nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fb9b9e8 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x801a037f nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8031f1e6 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80cab975 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82833871 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8746d989 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89c06922 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a44ead9 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e8be25e nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92c9c8cc nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x953d81ee nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x965b1284 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x972bdffb nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97a442d4 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a51eb6a nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a9525ed nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e063038 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e767575 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eb07737 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa139b4cf nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1659551 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3c6ea4c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa47bcb1d put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6e2e337 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac4fe0bc nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac85f69d nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaea28ee8 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1a7a5b8 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1b7c843 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4ed2a58 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4f28f95 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6f4157d nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb786d866 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7b1837b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb89e747a nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb84849d nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdc2449f nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf019585 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc04fc426 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc153e4cb nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc610f29a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc753ed75 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc89b66af nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd038bb5 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce17cddf nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0f344cd nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd25ddc98 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd48b297e nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6745d4f alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbb6a5a0 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcd13440 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd647747 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde236c3b nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf36dcb8 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe06cbc60 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe323226d nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe457a451 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4ad884a nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7dbc1f9 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe826f2af nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8c6f768 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec0d01ac nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec730759 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf410f9ac nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6f968d6 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8a03bec nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf95aade6 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9bebad3 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe7eecbb nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x77cf837f nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b4846da pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e438f23 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e4be40d nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2214860b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27e02754 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28d6befe nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a2d31cb nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e90d420 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2eea719e nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3247b2c1 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36a09871 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42d8db18 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42e3106d nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a98551e nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b2d9851 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4c8e1e97 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d88dcb2 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5256a892 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53dbb4d4 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56de3cd5 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6734155b pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a2d1fd7 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x729e8cc6 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73cc08c3 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x77a9702c nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x808a81db nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x82de0561 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8486d2ca pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f28606c nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x932b1d79 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93401c2a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x985af499 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0d5a11b nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4b858d8 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa74888f9 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa9512cfd pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab4cc77b pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xadaa6580 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf65c848 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1bf0a88 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1d90e95 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5c036e1 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb76a83da pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb96767e5 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbae54dec pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc97ab92 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbf267b88 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4f041a4 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd7c6197 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8eec347 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd98883e4 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd3c13be pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdfc5db10 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe00eea79 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe147ebf9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4ee5ed3 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe692e3d6 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xead2228b pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2918b19 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfae1c847 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd87d789 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0a7df32e opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x61cb2f36 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xfdd0b87f locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x03bd06c0 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x669ab229 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x10eb2881 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x360b8b35 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x39694816 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x64bcf73d o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7a68943d o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe5c7de63 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe5d20f3a o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0473e1dd dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x193d1be5 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x545e7db3 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6bfa8dff dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe5c40121 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf36bf436 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7a6854d1 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8afe93ec ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xee27be50 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x235fceb2 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb3445634 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe61448a1 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x0f854574 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x7b404abd notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x2d107b5e base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x41ecf87a base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x72eb4ea9 base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x767b8ba8 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x8d490167 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9af6b231 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xdba4feef base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xde0e6eb2 base_old_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x8e8f0d33 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd54eb325 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x04dc6220 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x1f389888 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x95ad8f72 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc529af8d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xca12adbc garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xfb9b42b3 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x38e12dad mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x41ec29b6 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x94d5bc26 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x9909744e mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xae35d6e2 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc93654c7 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x56111078 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xc3e59ea9 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x48334350 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x5eaddde8 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xb9382c2a ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x100b8e07 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x15d13a41 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4fb32a42 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x57e203a3 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9fb0ff20 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcb04e8f0 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdd051662 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xef885c50 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x471e3c2f br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x675d10da br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x680cc756 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb1d3b754 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbef06d57 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc35dfefb br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc4aab8bb br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd3cf8cc4 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x3cc56fdf nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xf069a973 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x001631da dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x02bea7f5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1495e918 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x154df61e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42d0776b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4327be6b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x53839809 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59c98a83 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e6ab25a dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6611bfdf dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x675f1f47 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ef4f3cf dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a9429fc dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8d627aa2 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94ee8f7a dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a1e5059 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa09d8d3c dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa3e6f2a4 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa7bb3cbe dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc85ecba5 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc89b65ec dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcb91abca dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xde403323 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe97cdf05 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeafc2df6 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb4c4cc8 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef4960c1 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0529789 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf593c656 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf65603da dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf98a5aaa dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x50f5cd26 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x691ebb0d dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa1e6d3dd dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa6a3c152 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcabacc41 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcb528628 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x54a7c775 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x57282444 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x67ddae69 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x78433e74 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/gre 0x3145cf4d gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x818259c9 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x08f16994 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x53a40f90 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7c739fe8 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb4a10221 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc423bb62 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf159ebb5 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xa3809ebb gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06375e23 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x079b2858 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x15bcd74a ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2738efc9 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4188c87b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4f3ab0e8 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x51e6db59 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x55e76161 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x93a85c46 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xac40b0e0 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc12762a4 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc5aa789a ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdceab120 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xecb35087 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xf9b9625b arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x5dad9a19 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x84d3ed61 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x82389854 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x839d981d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x8ec31f6b nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb2923464 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf37ca745 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x5500a066 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x1534866b nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4dc7aca3 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7376225b nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x99328678 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb3bb3c55 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x6e0ff638 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2af37136 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x50e0d043 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5c09b0fe tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9e99f491 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9f5f66a9 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x42e41c45 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x859bf41a udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xcc52171b setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xcdd486c4 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0709bb78 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x09fb7416 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x13444c7e ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x55c1caa0 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x93993bce ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x95669b3b ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd349d5bc ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xb0305099 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xdff5a18d udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd1d22826 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x4fa4b6ec nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xa436f5f7 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x5d152c2c nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x56217619 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x57522416 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x5c6fb0c9 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x7990b650 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe4aed5bd nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2035b5e0 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x23c9174b nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3032ee11 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3ca9112a nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x8ca80f6d nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf04ebda2 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x2d83a7a0 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0dd1ce83 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x126442c5 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x12776bf1 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3bad00ba l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ef59e02 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5cf6ceda __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5d7ee453 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6227235c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x799e5618 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7d2efa60 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87b76fb5 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa21fc721 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xadeb0abb l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb7fd7901 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdae9e1ce l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe9fa3175 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x5be43d9a l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1245b60b ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1935b84b ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x28f0e462 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4130b9a3 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x468164ee wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4cf83af0 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5d95f344 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x949fb8c5 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb57e8826 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xce349145 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5e8d6e7 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd994a50f ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe5d03017 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed014912 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf20a9e20 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x13f46855 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x6b0e7393 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x8f7d6082 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xdca92f5e nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0ddc00f3 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1ad6db57 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3bd7bcb2 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x509793c2 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d37f90e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d7d852d ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6be548f7 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x774e2848 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x89589633 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa38cf5c6 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xad827ba4 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb02aca85 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbabdcfd7 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc50cca63 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc1953be ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf672f145 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x89a72fa8 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x93d6bad0 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xee97e220 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf114b0f6 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x002cc557 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00e6f2de nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03c8745b nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04b6b60a seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05b73ba8 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05fbf6ec nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x074b6575 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0eb8bfd6 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x120d21c6 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12543c04 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x161cc4e2 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1669b433 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b37889f nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c920e19 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fee1d3d nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24568696 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25fd0ddc nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2982ea8c nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c7a7d73 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fefbe53 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33bfee8c nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x357e8738 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x369bb600 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bdfcf0f nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3be3b759 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46aec258 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50786c8a nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x515dd6b5 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5600b8da nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e9da23e nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x609273b3 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66227c5e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6976a3f3 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d27eed1 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72bd452a __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72cc0643 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73044fc5 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7abc2288 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7de70a0b nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x819b78ca nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84b2ec28 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x852549cc nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d89c456 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x920d69b5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95c04237 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99b540ce nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d5babea nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9dfbd39b nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e57688e nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5dcc6d1 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa88b5be nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac610a0c nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xacabbc65 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1cc218a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1e0eae4 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5187957 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5bcc76a nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5cbcadc nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb189eca nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbeeda679 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0761a0e nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2abd2fd nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40ea569 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4ee5ae1 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc84b3772 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8fc1245 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca194553 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd071b007 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd08632d1 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd41974c3 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd77154aa nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd93e1336 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda7cc689 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb9371a6 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe316909b __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7986dee nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe84aa40b nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee091ec0 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0f256ec nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xfe6b8e29 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x00cd03d4 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x3e33b5a0 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00e92756 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0b38672c set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x10c37f19 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3ae67c32 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4d75c661 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x723b241c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72d019c0 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa90b9c26 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf64dbdc nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb178c3a0 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x0bb2bae2 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x11c2c863 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc88853d1 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd221119c nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xefb5b5cd nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x843ae969 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x8888a775 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x47e67d9f ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x773613a1 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x95b5db11 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa4f501dc ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbecc40ca ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdb0883b0 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xee8e121c ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xfaff3a38 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x155235a5 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6448774f nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7a670992 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9a7ec1a0 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe6ba22ea nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x03bd1bb6 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2647ce89 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x45ea771d __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x725037c1 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x83491f44 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8936e2d3 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaacf6945 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb05e8a3a nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe8f46eda nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x22e05713 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x48b9f837 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6e260c61 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x98e48060 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x01c7fa98 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x094d8db8 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x265d0272 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x279aad7e nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x285b6e19 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x38073965 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4117471b nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x44e4a650 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x775b277a nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8b0aa8e6 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x93df6a7d nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc04aca9 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd039272f nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd94a02e8 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdb388a6b nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe022bdb5 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xff8c1cd5 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0c54aedd nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3b83f9e2 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb1382a56 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbd5d0087 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd25a28b7 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdfb9c895 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfcceb00f nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x516ce09c nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x99965cdf nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9ab312f8 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x79bcd00b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x4ce0ebbb nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x79c4e47b nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x96376bd1 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x1024783a nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x8d9eccd1 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa0c68a85 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe82a6c99 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf2df069d nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfa4e1735 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x87428d3a nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb80397a4 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xbda1fff4 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x2f4891a3 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x738b5473 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1dccf645 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f1ef70a xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5813ec69 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b736b46 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7a273c42 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x86f4d8e3 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa12112ec xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa23e4b66 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa9eb3f15 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc95eccdd xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd08bc8b8 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdcbf53d3 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe5d2fa4c xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xead1e24f xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x0cb72efc nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x43b4d6c7 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x6bfed76b nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x0322fb00 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x14a9d146 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x8765dad8 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x34a8ac58 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x46c10252 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x52f54095 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x78f811e5 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8a02d737 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaf93541b ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb85179bd ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd5ebccc6 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xef81970e ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x04a60219 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3bfe5721 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x3f2768e8 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x58b21567 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x5bacfb35 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x62859498 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7b475bd8 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x8c56b9b7 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x91caab7e rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x937e615a rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x943da662 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x94f63ef9 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9efa7ca8 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xa01a84d9 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa07d5afb rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xa4a2d066 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa56565ef rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc51d297a rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xce17aed7 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xcf6487f1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xd2ba8420 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xd49df896 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xde661704 rds_trans_register +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x418beb48 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x62dc953f rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4da10415 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x72897b5b gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc5bbc706 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x072e5b1c xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ae8e87b rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bd3f41d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c10b241 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0daa11c8 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ff56889 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1059f102 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11d120b7 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12ea9e9d rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13856225 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x171e5316 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19256d19 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c283627 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c5c8ef6 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d94ead2 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x205f1340 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2127ed6e gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x250b8b02 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x256adb61 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25e9423e rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27daad3d rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x280cc234 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2829a12d rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x282d1530 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ae83efe svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ccd4ce1 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3157b04a xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x317d8e4f svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b46c2f rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3677f60f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3693cb4c svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37260993 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38746589 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39933b8e cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bde1f42 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c137788 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c547630 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e2e52b4 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e9d36cb svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40430282 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x411f2527 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4261e7af rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42d66234 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44003d72 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x441a6532 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x456ed104 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x465704bb rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x483e6cdf rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x486ed241 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48f8e59f xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bbafb7d rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d44ddca sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5138241e svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52f25f7d xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x534bf4ea rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5410c4cd svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x560305cf rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56204adb cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c4bd3b xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a7ac433 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aace972 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b59b62a rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d43347f svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6251e7e3 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62de3032 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x645adb69 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64844008 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x669c6557 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x685104c9 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x691fa262 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69339222 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a326bbb rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cda59d2 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cf0a314 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f9186d5 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70191b37 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x709c64d6 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7174be5c rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72462815 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x741a5e54 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74485c56 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x754a83f9 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75ed7ad2 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7713be77 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x792da35c rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d009ab2 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d75ac44 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eaf4203 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ffb2e57 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x805596ea xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x825c1685 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x839451cd sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8413423b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x844071ce rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84495618 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8493c773 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84e12e50 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x889648f3 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89927df4 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89fd3b51 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d0d804d svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d19253c svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ede1dad rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fd316ec xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92144560 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x930c166c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x939f6870 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93ddea68 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x955cf754 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95ad06e2 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98676890 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a04a911 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a5e5a30 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b3ae076 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ba43a05 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0af0590 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22346f2 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29d345b svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2f96a2d auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa43f2057 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa912a5ae rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9296542 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa0ca19a put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac5b3531 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad545d56 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae076853 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0d8d095 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1153377 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2becfee svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb344fa24 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb47db1f3 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb54e3e14 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6352312 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb65ba4cf rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7d08876 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7efbdff rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9b03003 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9bcc6c9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba76ac05 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb40b933 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbf179e2 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca398f0 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd49d6f1 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdb83d91 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe5aee7e svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe72303b svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6a39d45 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc70ecee3 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc88419f8 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc97d9d24 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaa553ba rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcacff545 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcad2ab7d svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce039d6d rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceb834ff rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcebe3570 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf86fbdd rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0608204 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd131a603 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2753264 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd62088ab svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda861ec5 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb69098b xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde573030 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf27878d cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0c84020 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe192101c rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ca0417 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe28b3ef6 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4b9d813 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe76ad40b svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8a89c8d csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb2af421 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebaa9c3c svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecb20a4a rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeecee141 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeed54cfc __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef06163b xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef9cfcc1 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf084a603 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0deb314 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3de14ef svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf49b4f9c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf572e98f xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf60ac389 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80aa5c2 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf88da268 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d55563 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa24ccb3 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb810607 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbaf4bf3 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcc9484b rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdaedb83 rpc_malloc +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x171b086c vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x27609709 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3cfc6398 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x41f9cdf6 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x732278f6 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7d5c2b1f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa6911344 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbdedc68f vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd0c36d04 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4d43e08 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xda991280 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe2328884 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe3a0f689 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0468234a wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0aa35625 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0d64a779 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x364e0d42 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4b334034 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x50b69edf wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x542bc243 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x583c0b6c wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5e0a4691 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9e2806f8 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1c68fc6 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xed76c941 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfb737661 wimax_msg_data +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x56bbdfb6 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5b396b69 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x61b1d3ef cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x721edcf8 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x760e39c5 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x77c6b551 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x788df64c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7e4ff1a3 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5429430 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbae834c0 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcb979e32 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd0895890 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd97645e7 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x53261259 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x594599ce ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x66115054 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe04e9ef1 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x16fceeba snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xca8603f4 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2db0f984 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x36bbb989 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x44842cc7 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6703d2a9 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa33567f0 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xd16160c1 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf9dfc604 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x001dbe4d snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x07e6bfd9 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b1c6bbb snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b4d4ec6 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f5e263b snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x103ace48 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1053dbc8 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1817eef4 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2373f872 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26a44898 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27d8bd0b snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x36a74f46 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3857b126 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b67597f _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x423685e4 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x45fdf344 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a1a4a1d snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x553021b4 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x556bddeb snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57ba11dc snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x58b964fe snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62c3ae50 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x664e9506 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68f8fa9f snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x692edacf snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x694e2d2c snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6acf85df snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6d4c9a83 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e9edb42 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x762b3a5a snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x768fae7f snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b8044a2 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c071fcd snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8176ab3d snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85c045a3 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a04823c snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8b87310d snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f4ca46b snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90464cdc snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9af43acd snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9cad1374 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d77bd12 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4435270 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa666b0dd snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad33f326 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf6cbff7 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xafbf3df6 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb6223f7c snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb99c8882 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb033369 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb778f65 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbd9df43f snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf2caf3c snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc10a8a18 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc421791e snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc522447b snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc78b6365 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xccc4350b snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd040c196 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe11d873d snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe34c0c72 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe351811c snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe58f0807 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeca8ee14 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee7c0ff7 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeedf769e snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf07ab534 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf71318cd snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf78d1fa1 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf916d5a0 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc4468e2 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x53a82015 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7001d5f2 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7c842c78 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9f2b7c97 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb1946a3c snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcf0a8260 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05e750c1 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x062402d9 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08360d5c snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c285409 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d81d08c snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x105c472b snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1075b9a1 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10f9caf9 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x126fd7ba snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1456b8c7 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1477606a __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15ba6415 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x186a9585 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a3aeb0a azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cb3b84c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e4c287d snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1eca18bf snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f649b87 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f6bdcd5 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x204e1540 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2086535f snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20eb262d snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21019248 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24299580 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29d180bf snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b87afc4 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2efcd3f2 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32384c93 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32684112 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38dfff6c snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a7088d2 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bd3580e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bd3b825 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d2c1169 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4073a150 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x415c6000 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41830e57 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4651af89 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48272c98 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x496958cf snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49eac5b1 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c392afa snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d475100 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e5d60fe snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fd64f5d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5009131f snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54a78700 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54c8de7a snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5546d30c snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5589bb8d snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x575591c9 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x583f129a hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59696706 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b532c75 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cc56994 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e5ada1b hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6497ef0d snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65edc02d snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6aa5ef63 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ab2b610 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cfa2462 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f0b0a96 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71b9f029 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7293f946 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75efc526 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79680551 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79ded1f4 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7aa883c9 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c697663 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7db69992 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8db3d892 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e6e348b snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95dcd6fc snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97f5d0ed snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a7f037a snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae70e0f snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bf56619 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2b5268f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3b9e286 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7db9aa5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9245829 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab8ab539 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac60a6e8 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad1104a1 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5e25033 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6f12bab snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbadf8eb3 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7231f1 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe8dbeb7 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc03ae10a snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0c7df0c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc21dea79 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5614574 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2b008c1 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd37bef0e __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3c3334d azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3de6d2f snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd55a0807 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd598b171 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6b55c0c snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd90cdb95 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddb3747c snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3ed16b3 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe40278b1 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe457e808 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4710d76 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4bd3e85 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4da5595 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4e872c1 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe52deea6 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5b48b2a snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe79f83bf snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe977c6d2 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe97d21ed azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9e5c754 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee3e5417 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4d8d21a snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf77f8d95 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf91cc6f5 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf96b3bd6 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa8b6c00 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb06c154 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcdd3560 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff4c24e9 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0d5d6811 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1cd9658c snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2002a6e0 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x27f4ad00 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2da3fff9 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x38137895 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d73b042 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x448e784f snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5a9f0ad8 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5aaaf6e9 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x729034f1 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x74c334a2 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7ab647d2 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x996eae31 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xad0c79d2 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb029f7e2 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb5aaaf85 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcb880478 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xce35c178 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe194144f snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfc5afbc5 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x232b46ba cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xed25e3e9 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x37fb283f cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe0d32ee8 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x055ae6f5 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x953f4bd3 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xeb7ab018 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x3cc13a22 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x4ffb9cfe es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x3922a976 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x2cd8d1e5 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x37eae8b6 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x462fc2b1 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd3d0a85e pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xdd160b75 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x2eaa2b79 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x64dbb0f4 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x258600c4 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x952df541 rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xdc9e2327 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xecaa754d rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1757f6d9 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x343cb603 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x4b988397 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x8158532a sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x95c0b37b sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x48651019 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xba1b5ca2 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xfd0f15fa ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x30790dea tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd163f827 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xef044384 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x48f984dd wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x87d448b5 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x89f5f687 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xaa8528ab wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xade815db wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb029956c wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xbb29a442 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdc9a4295 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x672dc675 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x972c5f4c wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xa866eb78 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xde9d07ac wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xc4d0f430 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xca5436a3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x618580fe wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x854e2f0a wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x16b24b2a fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xd1dc266e fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x30991e96 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x362fac6f asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x4f4ddb36 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xcda3c32c asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0xbe3bc8f1 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0xade84e1d idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x8a8ccfc8 samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0xda079ff4 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x08972b8e line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2ea1c368 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6970de81 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6e8db054 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x95da2911 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa546b94d line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb9bcd80a line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc36b1ac6 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc767f0ae line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd34dae15 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd98c8dcc line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdc9651d5 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdd4e2fae line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe2c21427 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe4338880 line6_init_midi +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000c3a6b class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00144869 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x001609f2 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0047c359 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x0056832a scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x005e6bb6 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00647eda snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x00855fb1 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a9f711 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x00ad2d04 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x00bb388d crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x00caa4ec ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x00d04e7c of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x00d8d14b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x00e17ba5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x00e17d38 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012829cd snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x013bdd3a blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x0148a71a snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x014d29eb vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x0151a296 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x0161ffd1 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x01674f45 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x0173a2de clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL vmlinux 0x01a2fcbf of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x01b44509 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01d01040 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x020f7e15 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x021d4f28 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x023b65e6 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x0241983b ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x024e9645 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x025f7b67 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x028ad287 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x028cd699 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x02a45dc4 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x02a579d0 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x02bdc161 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x02d0a3f7 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0304f17b irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0330b455 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x03334f07 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0341647a trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x0341c098 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x034b8bd4 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x0361d1af deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x037ad312 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x0381c8c2 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x03896f6f snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x039ca5a0 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03aa0d24 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x03c2a1f7 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x03d33500 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x03e115a5 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0426dbc9 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x042bb92d usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x043dac49 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x04408159 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x0448b78c platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x044ff42e max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x045aafe1 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0471d20c virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x0472742e kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x047ca53e pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x048813c4 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04990b6d relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04a9e507 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x04b85000 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d91202 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x051ca0d5 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x052327dd driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x052485e2 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x0539f688 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x053fe42d ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x0543cc8f usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0552dd04 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0567c638 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x05879da6 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0597518c regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x05b2cad6 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x05cbd5d2 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x05ccc6da power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x05d6c2b7 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0631345f crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x063736d5 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x064eac8a usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x0660161e of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x0684810e relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x068fd9e8 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x069ce4c9 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x069ff911 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x06a37b36 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x06d0d2f8 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06fd553b devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x070fd017 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x07197cfd thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x07272c2a __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076f73ea fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x0782fcee regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x07975a5a usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0798d8bd init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x07a59d48 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x07a601dc kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x080b4bd5 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081aceb3 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x0859ae34 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x087f0689 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08983983 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x089f5a5f __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x089ff22d ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x08b725f7 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x08b801b5 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08b94e4e nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x08ca7100 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x08d1d5a1 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x08ee10cd amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x08f7e333 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0931a43e __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x0940b16d ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x0940e235 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09512822 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0959d867 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x09600161 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x09616e24 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x097927ee yield_to +EXPORT_SYMBOL_GPL vmlinux 0x097d5c2d snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x09828ee7 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x09846c80 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x09ae049f ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x09b2a108 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a3f8c9d blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0a491cb0 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a575889 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0a588c8e pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0a58d55b disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0a5b2234 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0a61c68f device_create +EXPORT_SYMBOL_GPL vmlinux 0x0a6ebf15 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x0a788efb smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x0a7bef11 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x0a890f45 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x0a8c7dc0 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x0a93852f irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x0ab3bf2e i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x0ac84cc7 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x0ad07eb4 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x0adf1f94 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x0afc0362 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b43a3c6 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x0b5c13a9 nand_release +EXPORT_SYMBOL_GPL vmlinux 0x0b6fad3b perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b7d5db9 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x0b926c10 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x0b9cf4d6 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0b9e2fe5 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bbf686c kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x0bedeb8c led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x0bf47d1c metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0bf8e0f1 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0ce718 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0c2be300 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c2f6da2 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x0c44b24c sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0c479e25 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0c507810 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x0c600805 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0c81233c spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0c9a0bad ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0ca304a7 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce75636 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0ce90c55 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x0d0148e4 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d2ad119 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d50cfe0 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0d51c4f6 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x0d745d59 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d7f1151 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0d9cfb74 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x0da4e8de dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x0db5235a crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x0dc74dbb sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0dd5a5f2 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddba570 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0dde8c10 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x0dfc9482 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0e1d28bf crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0e4daf91 of_css +EXPORT_SYMBOL_GPL vmlinux 0x0e685813 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x0e7a454c regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x0e7c6c46 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x0e8a574a cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0ec0b812 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x0eed74c0 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x0f079440 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f2ee33e scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f761e99 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x0f863402 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x0f881725 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x0f8a3946 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x0f9d0474 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x0f9d6980 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x0fb08882 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0fb5d429 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x0fbadfad ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x0fbfae41 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x0fbfdac6 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0fc6216f of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x0ff34ce9 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x1002500e of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102190c7 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1034a541 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x104c98b0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x1053eca1 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x106a8cf9 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x109386dc transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x1097a342 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ee99fa nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x10f62bb5 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x10fb0439 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x114de6e5 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x116abc3c kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1174592b cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1174a6ef key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x117786b7 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1177c875 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x117baccc devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x117d41c0 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x1181f36c usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x11845553 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x119830c7 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x11b0136c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x11b88fef pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x11cad25e amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x11d60aed serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11f35217 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x11fc5a99 cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0x1212ab4f ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122dc173 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x124ab395 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x124d6c8b user_update +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12752cca __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x128bb374 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x12998071 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x129fb62b ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x12a4afbc serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x12ae5d2d crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x12b037ca dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x12b60b5f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x12e1aeb2 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x12f50829 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13244baf seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x1325c630 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x133e915f blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x134a3166 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1367fa05 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1381d4f3 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x138e33bd cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x139350b2 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x13984ba7 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x13a14d6c dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x13a50643 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13e8206c device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x13f6f61e crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x1419b5b7 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x147072f3 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x148d5c52 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x14a98a21 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x14bc122b xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x14e34500 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x1500916a shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x151ea30b led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x15283e86 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x153ab934 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15897ab1 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x159a83e5 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x15a11d87 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x15b4f155 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x15ce1899 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x15e50ff0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f2e7ef of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16128b8b ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x16249367 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x163afb08 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x16455094 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1673363d device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x1684e47a regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x16888f55 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x16d304d5 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x16fcbe76 cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0x1702d8bc rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x1705038f ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x170704f7 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x17240a10 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x1764e066 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17926459 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x17a1cb10 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x17adf99f of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x17ba2f91 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x17f8fdef pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x18207aad device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x18226154 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x182bc568 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1830bdf4 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x183bab96 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x183e41ae __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x184b6d2d pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x184f4930 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186efc80 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x187659b6 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188b6434 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x18a06d08 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x18b142a0 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x18bf2e02 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x18c362b1 usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x18edb2ce clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x18eedb46 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x18fdf5bb md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x1927a4c9 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1933c831 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x19389d8d syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19670694 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1990006e tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x1990b286 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x199aba63 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x199ad0e2 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x199b3c75 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b0693f inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a01d7c7 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x1a07ed65 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x1a0f59d8 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a26113d exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1a739fd9 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1ab29691 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1ab4674a watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1afa1723 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1afe0fd2 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b27a538 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b427c89 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b49bae7 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b5ed82b devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1b619f0c clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba52c6f snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd11a0c task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1bda0e09 omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x1becaa40 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x1bed965f dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x1c03eb0e irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1c26ada2 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x1c301f02 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x1c3c56d7 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x1c432b64 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x1c4ee439 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x1c4f87e9 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c60d8bb kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x1c716881 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8feacc raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x1c9f6b1f sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x1ca18e27 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ca87b20 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x1cbab932 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x1cd2340d wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1ce2276e ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ced2588 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1d074f35 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x1d1c0d28 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d521d13 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d612afa pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1d74aa16 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d7cf2f1 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x1d852018 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1d8eaf89 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1d9775ea ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1df4ea20 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1e3912f3 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1e4a6547 omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6e26a9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7d6157 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1e9d4d94 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e9f8b38 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1ea4b16c bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x1eaf9bc8 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1eccad67 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x1ed611fe pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1eddc91c sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x1eede05d snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x1eef8bcf ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1f0f3e80 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x1f421f44 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x1f62c361 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1f774f46 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f9db92a ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x1fc4f311 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1fe012a4 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x1fee3aea platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1ff6e8f4 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2000ddf4 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x201e9a40 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x203af8e9 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x20482ff4 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x205676b6 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x2058f6d7 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x205974d2 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0x205aa572 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x205c64b5 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x2075608d xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x207b66a5 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x2095a04b blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x20a9371d rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20a958c0 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x20a9917b usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x20b36efa devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x20c1feda pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x20dd23bd bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f4c572 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x210c8942 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x211cc4d8 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2130ce22 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x213c670c wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x216220a6 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x217cb625 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x217edab3 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x21958e71 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x21a19213 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x21a4a41a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21bf1efd dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21e283fa snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x21ed6362 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x21f978c4 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x2214db07 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x22223cc8 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x2234f6a1 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x227151b9 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b75494 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x22d0a5e1 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x22e27a23 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x22e4a33f fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x22f0c34b regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x22f4471c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x22f80431 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x22fa5731 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x23191f40 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x231e4ff6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x23348158 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x233b65d4 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0x233c7a1e sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x2340493c to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x234ee75d pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x237f6201 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x239516c4 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239d5ddf ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x239f2a80 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x23dc0042 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24341a38 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2441571a rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244c1899 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x247a8d31 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2483ee6b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x24a3de9b dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x24a63862 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x24a77062 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24adfae9 omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x24b74852 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x24d4c84c mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x24ea1b09 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25044e2e snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x25488855 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x254b0718 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x258d6f37 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2598b4f9 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x25a58ac4 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x25c7d1a4 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x25d4afea extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x25f53f8f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x260ac957 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x261361e8 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x2621987d irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2635bcaa pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x264c5842 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265fae1c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x2660a304 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2687e9a3 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2690bc91 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x26972736 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b6cdc3 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bbb41d register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e70358 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270de6ec crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x2712c35c register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x273e02fa thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27421d49 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x27740532 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279a3cb7 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x27a454f5 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x27a91c90 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x27ac8349 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28153e7b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28448435 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x28660cb1 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x286e4be3 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x288118ed pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x288c4a05 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x288f2597 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x28ac5908 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x28b2462a crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x28c45df0 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x28cbc5a9 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x28d2547a dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x28d60757 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x290e1ebb devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x291b4d98 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x291df8e2 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x291f0815 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x292be4c8 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x292f379f __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x2933ae58 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x29412d68 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x295764c0 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x296eb3f5 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x29719045 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x298b0606 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x299cccff snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x29aec645 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x29b171f6 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x29ba21e7 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x29efe9b2 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x29f1f99e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a14c7e0 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x2a1959ed __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x2a1f2e5c pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x2a4c1b9f kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x2a514fd9 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6ca886 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2a710395 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x2a7218e2 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2a816a05 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x2a95c45c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2aa5291b sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ab1bcd7 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2ab2b7b7 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2ac11948 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2ac13e48 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x2ac56aaa blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2acdd727 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x2ad407a1 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae0e32a mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2b009b8a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x2b1ac1a9 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b1ea6d5 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2b245eb3 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2b274833 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b28dee9 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x2b37b057 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x2b4eafcf usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b619bc1 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x2b6c03a4 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x2b81dcaf user_read +EXPORT_SYMBOL_GPL vmlinux 0x2b8c09f8 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bb387ad blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c145a04 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2c16a6bd devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2c205030 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c25232f of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x2c2a046a usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c331a43 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x2c3a1812 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2c4c7c25 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2c4f344a irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2c71e8a3 cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7e2256 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2c850495 __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9fc31b of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x2cbfacdc regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2cc6705e bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x2cd6cbc8 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2ce9cb6f wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cfea183 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2d015414 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x2d145844 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1e1517 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5a10e7 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x2d8d5050 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x2d8eb575 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2d9416d6 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x2d9abfbb __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2d9c8901 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2dc6800e component_del +EXPORT_SYMBOL_GPL vmlinux 0x2dcf39f0 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2deb88d4 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2e03fc74 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2e10d7ed i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e27724d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x2e278f88 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e4a985e nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x2e68a7d2 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e806194 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x2e84a79f devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x2e8bce9c bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ec67cd0 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x2eded620 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ef4d512 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f0877c5 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f266d79 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2f2b7d2a virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4aacea snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x2f6049ca wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x2f649db8 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f79e775 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x2f856541 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x2f8aa6d8 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2f8e51d2 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f955b27 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x2f9d0696 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x2fa1b21a dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x2fa99e8b crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x2fba6ba2 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdbaa90 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x2ffedeff snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x300eb383 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x301d497d devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x301d705d inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x304252f2 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x30490568 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x30507ff3 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x30540366 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x305d545b pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x3067ab2d of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x3082abec ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x3084fb81 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0x308a0704 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x30a2b5f5 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x30a2cb92 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b90040 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ceb79c platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x30dea125 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x31020595 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3109db8f regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x31128cb8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312815c1 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x31362afb regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x313f5660 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x3149e3e8 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x314ff8a3 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x31582d52 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x315ca551 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x3163634e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x31680ccb ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x316cdde0 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x3188084a ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x31a7c53a usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x31af8f96 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x31bc4bac ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cffebe scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x31d77584 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x31dd3d18 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x31f729ad spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x31f73244 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x3220660b max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3222f929 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x32507da0 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x32510d87 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x326282e6 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3271d099 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32a4c22e mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32de4ff0 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x32e89747 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x32ec3f2e sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x32f23b22 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x32f7e9da blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x331dcca3 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x335573ba of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33682e51 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x33797bee alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x339df704 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x33afd366 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x33fc6ef4 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x3407633d crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x340ff338 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x342a563c crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x343508da sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x344ecef3 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x345543b2 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x345867ec crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x346790b3 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x34765e7b con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a15580 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34afbe04 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x34e249a2 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x34ec2642 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351f832e snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x353932e6 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x353eeb30 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x35428769 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x356fc2b3 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3594b566 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x35a2dcc7 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x35b0bc8f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x35b1798f mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x35d75a66 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35dd8505 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x35ea3ee2 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x35fc2376 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36153c49 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362f2776 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x363c9221 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x36421ed6 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x366800de sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b12345 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x36bdaa84 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x36c2cc72 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e42f0a nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x36e572aa usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3722bb66 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x376d7408 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x37adb143 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x37b01084 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x37b67918 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37ca8035 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x37de7dc5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37ffbd1d extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x383dffc4 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x3849ca57 omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x384b8c7e blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x384f48cb vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x385707e7 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3876de04 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x3877d880 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x38785ae8 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x389f327c snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38acea32 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x38c94f2c virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x38d73d7c dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38f784e2 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x3937bd64 omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x39436c41 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x3989240e ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3995c8b7 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x39a0ce35 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f89e5d ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x39f90f51 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x39fabc4f ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x3a16c0fb usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3a1b2b7a rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a64d7d3 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x3a8e882a blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x3a96201b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa49983 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x3ac1c136 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b0f6283 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x3b1ffa67 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x3b3a29a0 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x3b3bc75f console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x3b434010 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x3b52efea wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b87394b __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x3bb69a71 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x3bc6b0ac __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x3bcdb333 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3be6ae51 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x3be91c0b _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x3c048c88 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x3c0a1a15 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x3c2264f7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3c2d06c7 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x3c31129f blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3c330025 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x3c6e219e ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x3c6ebc29 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c9f364f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3ca31df3 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3cc0ac4f __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x3cce45d1 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d08f7f7 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d121fe0 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x3d32ff2d sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5a087c __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x3d5bd1f7 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x3d77d581 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x3d9cb5ca netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x3d9e04bc fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x3db6b7ea omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x3dbde17a blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcb6be1 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3ddfd34a cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e0bec47 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e31d9c3 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x3e34980b cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e476b15 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e619bc3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e9e1fe2 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x3ed26dad ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x3ed9b486 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x3edfb954 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3efcffee usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x3f006579 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x3f11f9ee of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x3f1f3867 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x3f251e18 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3f392bbf crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f3d4bc3 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x3f48f659 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3f56de58 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x3f664fa5 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fad4738 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3faea486 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x3fb16326 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3fe26e81 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3fe43ad0 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x4004023b vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4049e087 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x404dd9e0 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x4055a3ea ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406b0806 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407c4dd4 omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x40802213 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x4083ca7c of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f6f939 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x4100ee81 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x4104acd2 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x4128683f i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x4175bce3 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4190db8c of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x41bb65ab hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x41be502b of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x41c5274c __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41fb8f6f skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425f7306 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x4267552c kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x426d41ec ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428c0e9c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x429d5ab5 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42bd0c68 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x42c2849c sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x42f6059c tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x430f202c crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x434fc4c8 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x43591535 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x435ee026 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43981c13 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a648e8 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43ccbe31 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43d11d3d mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f76618 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43f9e497 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x440a34d2 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x441297b1 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x44314fbf pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x4437587d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x443fa0c2 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4447f6a9 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44699d3c skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bdb510 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x44c7f4a9 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x44c99fab rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44cf1379 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x44d1c75d user_describe +EXPORT_SYMBOL_GPL vmlinux 0x44ecb923 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x44f14468 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x45383bdf dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x456133db nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4596f35e regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x45980ae6 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x45a1abea relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x45ad6973 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460754fb irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x460f85fe ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x461855ad invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x466b4bbb ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x466e5342 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x467b838c class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4697b7f9 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x469ea71a usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x46a67571 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x46ab0ce4 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x46c9634f regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x46e6d01d virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x46e9e578 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x46f41137 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x46f5213f snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x46ff0df3 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x471782e1 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4748d333 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x47507491 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4753e4c6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478e19c7 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47b7bb93 split_page +EXPORT_SYMBOL_GPL vmlinux 0x47c005c3 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x48079dd5 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x48135d0e of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x481fffbe get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x482ae138 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x483bf727 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x484bea36 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4871fb7c __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x48756cf9 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4876d059 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48915b28 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x48a38b3e nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x48cbb343 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x48fd68d2 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x49076b5c iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x491103c1 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x491df8b6 find_module +EXPORT_SYMBOL_GPL vmlinux 0x49794cfb iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x497fd6d9 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x49828257 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49b97b85 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x49de09c2 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x49e1454f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a266446 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x4a39b313 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4a619b5c pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x4a8b019d xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x4a973fab crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab0ac17 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4aef4de4 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x4afb4725 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x4b04e408 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4b0c98f1 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x4b1da8ef tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x4b218613 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x4b23ab08 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x4b4f79db mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x4b5954f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b9d0fde iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x4ba5b7fb devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bcdf5d1 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL vmlinux 0x4bd3d057 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x4be313df da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4c134f9b ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4c1b7d43 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x4c32952e sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0x4c36ab1b powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c70eec9 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x4c83b8d1 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x4cce71c1 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4ce26b59 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4ce3a7f0 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x4ce66dc7 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x4cfd274f da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4cfde769 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0673f6 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x4d1728d2 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4d262734 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x4d356054 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d485e2f clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x4d5e5b01 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x4d99cf02 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x4daa53e9 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x4db1fafb __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x4db95ef9 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x4dc14792 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4dc7791d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x4dd1604e regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4dd68cb8 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x4dde83a9 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de3bdac unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4e079fa9 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e11671e sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x4e1edaeb snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2a5111 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3d4c8e serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x4e42a98a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x4e617159 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x4e67c71d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x4e88bc59 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x4ebf08e1 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x4ec46f17 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x4eda8421 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4edef8fb pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef66bdf snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x4ef74c11 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x4f251e0b dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x4f260867 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f316fe5 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x4f4d993c get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x4f57e1d6 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0x4f670903 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6a0bc8 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x4f7379f7 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4faad6ab omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x4fd21f46 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50122293 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x503f94e8 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x503fae90 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x505023cb pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5078d9aa extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x507e0af0 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509db2e7 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x50ab3c22 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x50b0731c gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f1865a class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x50f66927 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5107306e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x5117864b scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x513641d6 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x513c22b7 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51544088 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x5157467e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x51588156 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x51855f81 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x51a954be request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x51c15ecf regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x51df364d tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x520d8510 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5212038e clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x525527d3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5292176f gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5293cda6 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a7573f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x52a962f2 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x52af3147 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x52d04457 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x52d566e4 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x52d9569b ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x52e0f063 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x52ebdace of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x5308c831 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x53198c85 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x532aaf11 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x533312f2 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x5349ca9e ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x534a372b pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x534b93a8 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53a3883d bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x53c514b7 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x53c91085 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x53c9bacc gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x53cf92b0 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x53eb4b94 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x53ed89ef security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x54083474 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541e0589 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x54530ab2 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x545fec86 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546701b2 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5488b854 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c346bc kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54dd0ee9 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x54f0337f vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x54f9d431 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x55254e19 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x5529bfca serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x552d379c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553dd162 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55549d63 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5572ee43 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55788b45 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x559d2c26 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55c24912 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x55da6a83 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x56157c27 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5616aa04 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x56194190 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569856b0 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x56994558 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c785ab uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x5716a15a blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573db495 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x57449b06 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5766488f dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x576fe63f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x5770bd6d syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x577c6e46 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x57870344 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x5788776c __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x578b3283 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57bd748a snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d7f8f1 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x57e53dcd register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x57ece5db cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0x57f1d225 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x5828fe8b snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x582e9277 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x5833a3ad crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x583f9dee unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x5846c995 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x587ad670 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b31633 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x58f3b8b1 ti_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0x5924adf6 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x594831a0 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x594b9c73 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x594d9535 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59627dd1 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x5964e037 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x5971f0bd mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x597b186e device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x59bd687e tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x59c58a12 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a185417 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x5a284f22 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x5a3c684e fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a82aced clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5a8ca105 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5a9291bd devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5aa93321 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5ad81948 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x5ade321d usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x5afe0310 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x5b244315 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x5b2ca814 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b35657d snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x5b409484 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x5b40a775 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5b44a75f vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x5b45a78d wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b6362c0 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x5b67fc46 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd3da7c usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be39e2c default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x5bec3d54 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x5bf24f14 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x5c12320e pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c147aef bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x5c1fcbf5 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5c270103 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5e582b __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x5c70d42b omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0x5c724709 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5c78f0fa pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x5c917b8a snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ce24b28 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5cf220bc debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x5cfc1f50 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5d08fa6f cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d389fff fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5d513682 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d5c3967 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x5d63a416 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x5d7158bd ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5daba847 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x5dd2f69d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5dd43842 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5de2e433 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x5df8b2a5 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5dfb23a0 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e15b367 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x5e228f46 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5e4dd7ab sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e654694 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x5e669a84 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x5e70ffb9 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x5e738fc1 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5e772513 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5e7a9068 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x5e8e1336 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x5e9dd718 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x5eb061ef tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x5eb3e4ae crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5ebc72cf irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5ee6bb5e single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x5f0b7dc1 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x5f2455e0 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x5f462f4e sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5f696e27 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5f786617 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f8425eb sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5feaf541 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6009a8b1 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60740aec key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x608be738 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x60907cd0 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x60933a1b flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b7dd98 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x60b90469 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60cb1e39 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x60dd29a5 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60ecd17a sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x60f86a0c max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x60fa7fbb snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x6121e511 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x61220186 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6122cce1 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x612cc1b6 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x615bfbf8 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x61766f9a da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x6177a3ea crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x617def4a device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x61875236 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x618dd9bd uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x6193c2f9 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x619606ac dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x61a2ff2b unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x61a40dc3 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x61b74a68 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x61e0d8b5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x61eb9a31 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6209318a crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622d8401 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x6232aaf4 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x626ebeae ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x62d5c944 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x62fe89a6 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x63070e66 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6345530c hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6359c84b tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x63aeb5ac ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x63b6f3d6 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x63c28977 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x63c6bb31 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x63ca0768 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x63d1e433 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x63d63163 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x6406041c regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x640668e5 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x642101af devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x646cd186 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64761375 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x64b964d6 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x64d00254 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x64ed922d ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x65031add ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x6519cf51 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x65275a2c mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x653cb678 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x65427d72 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x65537437 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x656880cd tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x656eb52a devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x6590414b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x65921ff0 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d5246c gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x65d85339 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x66034586 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x66072487 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x660988e3 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661cb35e da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x66299a83 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6642503c fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x664f26b8 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x666f1df0 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x668008d6 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x66816442 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x66838a4d of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669b1f9a gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66b4d86b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d8737b fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ffd40e dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x67144f04 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x67271854 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x672850f0 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6731448e pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x673316b6 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x6745863a usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x674d2fe9 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675cb02b regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x6763e56d dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x676526a3 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x676998f8 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x67795eb9 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x67937fec blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a42374 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x67a89ec7 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x67ca654c snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x67db1ff2 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6815eca6 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x683db4aa skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x6859f546 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x685b15be alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6864da9b cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x68868961 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x68dbb8b8 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x68e011a6 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68e66de7 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x69227acd kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694a79a2 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x695cb147 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6971e17d dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69831221 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x6988d71b swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69be13b9 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x69d6bccb snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x69da4df6 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x69dc8395 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x6a10eeae tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6bfd20 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x6a9c1cc9 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x6aafd0b4 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6ab0d7ce ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6abef2a1 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6acef719 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6aeafbf8 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b0ee001 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x6b13086e bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6b1998a3 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b5d8448 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b8aa507 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x6ba4ec4e spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x6bb09fc5 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6bc2f77e __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x6bd8e839 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c37f358 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c563305 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x6c787bf8 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x6c7ee1b3 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c99e21a of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6caf66b7 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x6cb18147 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x6cb229b0 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x6cc36bd0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cef7b8b usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6d0dec1a snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x6d17ad3b ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3b8ac3 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d40dd6c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d69706d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x6d6f36c8 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x6d708b53 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x6d7799e1 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d9b63c4 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x6da34118 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6dd97cf6 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0x6de0543a regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x6df67600 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1e3ed4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6e2fa73d usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6e346dfb usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6e4178ae omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x6e50b784 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e51eb10 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7d022f tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea1879b handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x6eb0f889 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x6ecf3e17 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x6eda3013 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x6ee48f60 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6ef79d80 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6f0aeb3a scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x6f0b59a3 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f29287c snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x6f310beb l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6f314fa3 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x6f38ad39 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6f4bc0ac skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x6f5c8d7d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x6f723fe2 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x6f7877c9 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f846a66 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fd392a3 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700f8566 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7010cc48 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x701a3f08 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x703cee6f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x703e4311 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x70473c29 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x70526569 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL vmlinux 0x705b9700 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x70718ae2 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708a7feb regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x70b63637 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70ca1e7f ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d70ef0 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7139e7c7 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x713f32b8 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7169faf6 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7172b888 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x7175e658 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x71822019 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x7186af5e ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a820ae mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x71d1fba5 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x720875f9 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x7212ec3a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x72131e6c tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x721d5c95 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x7225f5a7 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x722903ae inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x723bd08a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x7243a5cf usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x724b1f37 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x725265f8 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x72614509 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x726c23a0 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7290715c xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7292a3ef mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x72b5d6b0 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x72cc6b30 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x72d24922 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x72d2cfce kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x72eae7e7 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x72fdec00 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x7305847e snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x73497784 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x7371d89c snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x737f164b tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c40ef3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d20b69 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e6464e kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x73eb5df4 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x73f7acca mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x7404692b ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x742850f2 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x7439a53e i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745d594f kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7480f3e6 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x74833454 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x748c6204 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749543e8 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b95a95 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x74ba3e79 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bd6b3e ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x74cb6276 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74f48824 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753f1148 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x7563a5be component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x758772cd __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x759d0389 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x761680ad sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x762a9c02 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x76504e16 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x7651372f dev_pm_opp_get_suspend_opp +EXPORT_SYMBOL_GPL vmlinux 0x7660a7be of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x7662184a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x76672918 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76879168 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x76a81f0c vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x76acee4f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x76d8e49d mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e082bf wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x76e0b9ed blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x7708b01a trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7715c39f register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772fd51d ping_err +EXPORT_SYMBOL_GPL vmlinux 0x77398685 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x7747fc54 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775cc680 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x777bccc6 omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x779cfb9e device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x77aa20bb irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x77b0e802 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x77bad50c kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x77c212b4 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x77fabdc2 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x780300e0 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x781efeee wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x783a19ec tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x78673d8e of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x787ef9c2 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x788972e1 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x788a8028 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x788d91f5 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x789f839b regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78fd4239 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x78fe1dff extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794d9914 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x795ca0a2 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x79612035 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7975f02b ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x799929b3 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x799c166d pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x79a29d5e of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x79aeaa72 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x79cf0e1b irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f11e72 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x79f3b9ae pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x79f659ac __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x79f66159 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x7a0a146d debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x7a136866 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x7a28f419 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a5f45d5 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x7a6326e8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x7a6eb266 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x7a7bac63 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa3e026 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7abffb67 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7adc1c30 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7b01b8d8 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7b043673 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b14de67 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b33c86a modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7b37ef32 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x7b452938 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7b4bc929 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x7b4be47e i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7b5418e8 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x7b62e29d subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7b649d4a crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x7b78deae snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x7b83c2dc tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x7ba19b2e pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bbf7cce dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7bd07ad8 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7bd0cf51 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bd95616 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7be489c1 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x7be4f0ca snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x7be7e7d0 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x7c01d905 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x7c05c62c crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7c4a87c5 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7c9f63c9 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x7cb039d5 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x7cbb6333 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cecada8 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf6143b debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x7cfe2fce ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d387044 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x7d430a39 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5f8525 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7d678d02 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7d78c42b platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x7d79a98b cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db3bbb7 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x7dcb8240 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddd8ca9 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL vmlinux 0x7df2b53f pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7e11b6fa devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x7e2a026e fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7e2e55a7 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7e30b49b snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7e3e0979 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6840ee regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7e8606eb bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e86e311 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea1fe1f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7eab9300 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x7eb2b5ed ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x7ec4898b i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ef73be6 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7ef8efc4 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7f015075 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x7f2e57d0 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x7f445c4e pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x7f641a36 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f9838ae ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7f99caee ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x7fa4ff82 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x7fadce68 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7fb44290 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fd0d6e5 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x7fde716e mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x7fdf625f kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7fe30924 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x80109d2d pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x80356212 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x803b20cb devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80403967 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x80449c66 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x80509173 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x80597fad mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x80653191 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80698a68 pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80aa1bcb scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x80bf5105 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c7d2ac vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x81007f0c gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x81091dd6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114a8b0 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x811d7efc sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812c3cc9 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8149ed30 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81a82947 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x81f91718 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x81facd8d crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x82114fb4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8253fce0 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x8266f51f usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x826807ec __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8272baad devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82cdd83e __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x82d30c50 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x82d4c7ed usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e4231a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x82f14743 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x82f86480 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8304ce07 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x8307b874 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x831cf338 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x83275b5f rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x8328d23e i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x83714153 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x837550ff usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x838148ac fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b93f9b __module_address +EXPORT_SYMBOL_GPL vmlinux 0x83bdb8d2 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x83c6c8a8 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x83d41b11 genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x83e7bd28 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x840dfe62 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x843e245b regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x844712df perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x844a731c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x849d75f6 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x849e80f2 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x84ac31f7 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84bbdfe8 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x84d7d297 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x84da8ed8 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852832fa regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x85408c06 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x854493cd elv_register +EXPORT_SYMBOL_GPL vmlinux 0x854bd62d mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x856018d4 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x857a2c98 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x857ab7c6 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x85929534 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x859737f9 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x85a509e1 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x85c666a9 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d84f35 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x85ded75f ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x85e49dd9 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x86040711 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x8640b845 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x864a16f3 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x86567483 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x86602b13 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x86704aef __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867a4ade task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x867bb38a xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868f7c0d flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x86b0b539 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x86c99f69 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x86cc0a40 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x86daf774 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8717df8b __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x8730b315 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x87325a89 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x87350c7a omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0x873f085d fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8762f0c4 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8774e414 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x877f721f pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x87d69ce2 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x87f93574 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x885e11a0 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x8867bc25 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x8889e3e3 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x8894d910 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x889a68cd usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x88a78b84 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88ad120c snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c790ca class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88d07fdf crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x88d27dba led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x88f4b828 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x88f4e1f2 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x89188af9 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8965008b blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x898b79da sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x899eb0b6 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x89adfd42 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x89b47cfc led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89de43e1 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x89eb7678 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x89ee86e2 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x89fadfd2 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8a033b44 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8a12860f iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x8a2bebd1 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x8a350e79 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x8a4257e1 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x8a4d697e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a7752eb device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x8a8763b0 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8982dd omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x8a8da0a0 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8aa85806 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad4199c pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8af52ff4 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8b01e613 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8b0e78f7 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8b1460f1 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b26a211 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x8b29a8dd class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8b332762 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x8b390d44 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8b493b50 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b635c43 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x8b6a49ff rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b92fc90 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bb2d52e wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8bb3fab5 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8bb45c20 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x8bb5fa75 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x8bbbc48f snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x8bc8714f sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x8be14a22 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x8bea8dad sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c09b7e0 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x8c2f2db4 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c49bdd7 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c79022b md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8c798dde snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x8cc1a41b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x8cda2a54 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8cf8ea38 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x8d18feb3 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3e9e2a pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x8d4441af ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd046 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da06a6d pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x8da5ed9e xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x8dd38ed8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8df479e4 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x8dfbcc34 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e20a095 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x8e22eaab cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e2fbd7a ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8e3c6d02 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8e42e821 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8e683694 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e888de1 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eb460af of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x8ec0f579 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8eca147a tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x8ed44804 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8ede6d8d usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x8eefa886 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f56c6f0 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x8f5f2bc5 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8f6a7103 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x8f6cd8a5 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f78c733 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f81a06a virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8f930eb7 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x8fad3527 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8fb01c30 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8fbefc30 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x8fcda521 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x8fda1902 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8fda23b9 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x8ff4a26c of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x90223c96 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x9034d389 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9055e4cb led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9094bf09 component_add +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b73a67 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x90c0032d debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x90d28ee0 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x90e25ecc ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x910007af dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x91023338 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9132a892 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x9138decb scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x914976ec ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9165c1c0 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x91693df7 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x9173db18 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x91818136 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919dfcbd regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x91aca584 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x91ae70eb ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x91afc125 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x91b01d25 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x91b4c54d usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x91be089f gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d705ed regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x91e0c61a regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x91ee74ee sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9212011c dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x9237f033 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x92405572 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9240e921 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926c8aa7 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x926eddb4 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x92917360 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x92accbf3 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c06f6e gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x92c5658f ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92ea4258 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fae151 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x931b89d6 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9331063c usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x9332947e pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x933e80cb uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x93648fa8 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x936776eb dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x9399a719 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x93d3e41c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x93d8c040 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x93ff2ad9 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x941731e8 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943cb187 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x943d60a4 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x943edf9e arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x94430d71 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x9479005c scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x94899ba5 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x9496c412 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x949cd83c of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x94a2bd30 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x94a62b3a snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94c68331 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x94d7c587 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x94f6661e tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x953ff01f extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9583f21d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95953685 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x959ac504 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x95b6015e usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cfe2f2 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x9601e66c dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x960c37d2 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625ab12 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x962f7889 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9642c14d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x967a0989 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x96e1c939 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x96ede70d genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x96f37f85 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x97308b53 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x97355d91 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x9735f72d regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9743a1c2 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x9747ec6a alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x974ad174 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x978a97da mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97ad7bc1 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x97bdc1f5 cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0x97c52583 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e373a1 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x97f2366d vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x97fb073d pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x980605ea arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x9811a337 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9848dd3b ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98583b34 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x985d1469 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98842c8e snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0x989511f8 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98a05c85 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x98bc3f5c platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98ed95d6 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x98eeac7a nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9903b77f sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x991488d7 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x991819a7 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x991e3209 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995344b6 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9962c954 snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99875666 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99bf146f pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x9a0abb5d device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9a0e19ea dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x9a118de8 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a25f63f pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x9a597677 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x9a5e704e kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x9a614101 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9631f9 input_class +EXPORT_SYMBOL_GPL vmlinux 0x9aa332f1 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad93d7f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aed4684 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x9af76282 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9b2e324f usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x9b345dd2 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x9b6bf0e3 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x9b6f384b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x9b78dd4c of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x9b869d20 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9ba1654b __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x9bd78c73 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x9be22871 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x9be592ab sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c2008c6 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9c2b7eba __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c405845 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x9c4da65b hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9c50445a device_register +EXPORT_SYMBOL_GPL vmlinux 0x9c5dbf83 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x9c64893d __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x9c742c0c snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9c7ecb88 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x9c89cd8a snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9c988c4c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd04e90 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x9cd18e08 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cef6941 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x9d020324 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x9d0af6e9 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x9d1df5fc clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9d1efc22 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x9d25944f of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x9d2c74ce PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x9d58e359 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x9d72decf crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x9d746094 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d7d8301 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d86f9fc mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x9d9be277 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x9d9cca84 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae8d6b alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9db1281d to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x9dd0872b virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x9dd2fccb usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9dd45a8d ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9de76054 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9dee5852 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e063ef1 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x9e320f01 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9e33163e blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e8ac786 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x9e8ea1f1 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9eae9e4c regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x9ebf82a6 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x9ec397a3 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x9ed1288c tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed5f2aa locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ef63102 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x9f0792e5 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x9f19dd8c debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x9f1a448a device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x9f1f2720 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x9f35cb98 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x9f3a609a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9f43cfc7 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x9f496acb of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x9f506768 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x9f56d4e9 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9f5c90f6 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x9f8cedec irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f98eb7f bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x9f9ae1e5 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x9fb902a2 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x9fc1c3d5 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd9916e blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fe9c587 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xa008d23d crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa01053f0 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa015a15f mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0xa0241076 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa052cc7d usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa0642432 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa07bc2eb pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa080d871 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa08b0528 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xa09b6dc8 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xa0ad24f9 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xa0b81821 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa0b86a0b sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xa0c61e74 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xa0f32c1a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xa0f4bccb pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa104e63c sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xa107ab3d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xa11fec8b pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xa12fb4a0 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa1843227 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa189db58 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa191a61e pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa1955e75 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0xa197f1d8 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1a2ea7b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa1acd642 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa1c61223 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xa1c6c669 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xa1f3f6ed virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xa1f6c7a4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa22113fe irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xa233b1a1 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27be8dd tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xa27eb359 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xa2862853 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa289fd31 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa28aada2 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa28e250b bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xa2a85f4a rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa2b333b2 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xa2b9a17c wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bda7c6 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa2cdf332 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa2d6d954 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa2ea6595 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa3051a07 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa328bdb9 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa334be38 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xa33f4e8f rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xa341b3e3 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0xa3625360 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xa36c9839 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0xa36dce98 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a91632 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xa3afc5a7 mmput +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bdfb42 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3c1bdfa inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa3d5c4d4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xa3dad557 uniphier_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0xa3dbd362 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa3dc7822 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40c982c blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa415df4f platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xa42a9fbd trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xa43b028c omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0xa45a9bf4 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa45f337d tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa484a58e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa489e83d cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xa4911f84 device_del +EXPORT_SYMBOL_GPL vmlinux 0xa49a285f serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xa4c97f6e usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xa4d5c109 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xa4dce435 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xa4e0b9e7 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xa4e698ba cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0xa5092613 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa529981a gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa539f860 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xa575502d max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa598c619 omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xa5a20650 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa5aeb496 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0xa5dce40b fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xa5e396df of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xa5e5a2f4 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xa5e9c0c5 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa5fab588 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6266c4e alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa65f6056 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xa688921c ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xa68c089e snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c00aa3 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xa6c24e54 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa6cf7ee2 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xa6d8510a pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0xa6e09da9 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xa6e11634 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fc096c iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xa70cb6f5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa74bfbf5 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa75b75f9 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xa7604c19 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa7639860 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa76d43b2 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa7a3ebd4 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0xa7b1516b kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xa7cff15b gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xa7fc1734 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xa7fc59bd inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xa82df9eb pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa8362569 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa856399f irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa868a033 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa86f65a3 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xa87a24ea class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xa87e8ebc iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xa880fbd2 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa8861fb2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa888037b dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8d7bdb0 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa90e00d1 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xa91f84d0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa92639d7 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa9450bbd inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa9482b74 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa96e8d0c crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xa980f138 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa986d3b3 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9c13eb7 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xa9c7d34c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa9ca30ff pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa9e05660 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xaa2a461a ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3082f7 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa46ac85 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xaa49c11d register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xaa5dd927 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa8138fb virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xaa8915e6 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xaa94f891 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xaa9e3137 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaabba790 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xaabe123a ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xaad5bdec device_add +EXPORT_SYMBOL_GPL vmlinux 0xab117ed9 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xab19c955 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xab22bc67 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xab2378bb device_move +EXPORT_SYMBOL_GPL vmlinux 0xab54ec5e device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab738b74 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab91e368 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xab93a3d2 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabc4a739 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcc09b3 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xabd5c61c snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabe7bf55 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xac0438cd tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xac09e07f of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xac0dde02 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xac1a6b49 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xac405d89 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac898fca tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xac9009b4 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xac938f16 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xaca3fa4e omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0xacaee21c pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xaccc151f usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xacce8aa4 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xacdde275 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace3059b crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad24541d inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xad2cd677 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xad50e732 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xad52d41f of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xad65cf32 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xad7a3e36 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xad889ba6 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xad90b8a9 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xadae8fb3 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddac05b i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xaddd856f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xadeb2df9 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf8f5df devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xadfefcf2 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xae1096c6 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xae11196b component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xae3e1b6b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xae55c530 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xae606864 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8b0cf9 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xae930e27 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xae93bdd9 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaea47158 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xaeabc797 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xaeb340d1 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0xaec70d67 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xaecb5b1d __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaed74cba crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xaef007b1 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaefcfaf1 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xaf12bfb3 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0xaf246e4c devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xaf26ed1a usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf52d7bf pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xaf532063 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xaf593f80 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xaf64e79e usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xaf749e8d devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xaf943bdd snd_ac97_reset +EXPORT_SYMBOL_GPL vmlinux 0xafa4ffc9 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xafc6ffe7 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xafcb79f0 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xafe5981d blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xaff4ae03 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xaff8f145 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb01384af virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xb0153a39 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xb023e18b sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0407c4c dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb04bee54 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0xb04d1f7b perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb05d9176 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb069e439 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07d7bfa ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xb0a69281 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bbfeb4 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0f4af38 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xb11625b9 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb125ceb2 cpdma_control_set +EXPORT_SYMBOL_GPL vmlinux 0xb13a943b ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb147241c phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xb166f8d4 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb169aabe regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb183683c pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18db7d1 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xb1957dd0 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1affe04 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xb1b5ef70 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2039752 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xb20ee03a of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb250268e task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26b959a gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xb27fc22c disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xb287a489 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xb28822c8 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb28d3151 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xb2912fa7 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xb2a894ad ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb2ce8d2b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ec7b1f regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb2ee1924 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xb302bbb2 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb30d8334 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xb3107599 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb3193f8a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xb32aa023 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xb346aff1 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb34b7788 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb36b1870 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xb3c37c7e devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb4060924 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb4064076 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xb40c6376 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb416a064 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb41bac4d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb42ea77f usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xb431e664 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xb4342392 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0xb43dc2ef irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb44a7843 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xb468e1b7 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bff627 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xb4c15669 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0xb4cc36ef amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4ea657a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ead148 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xb4f1da9f rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xb4f2c1b4 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xb50f8d30 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb548f7fa ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb580b073 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5949065 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5ef0715 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63abb10 cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb64cb248 sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0xb67e6cbe udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb67fa27c subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b17401 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xb6c49c82 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb6db998b __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eb94ce bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xb6ecfb45 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xb6fe1f15 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xb708a286 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb71d79b7 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb7267081 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb7393338 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb77e1876 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xb77fc85a devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb786c4bb device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb7a7eef6 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb7b7012a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb7cd0a86 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb7d19d0c dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xb7e07fd6 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xb7f4823e crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8090489 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb80b06f4 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb81652b6 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xb824b817 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb85895fc perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xb86224d2 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xb8677d99 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb8685195 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb86d2c73 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb892f841 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xb89d9a57 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb8a69afe regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f4b58c tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908f1c5 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xb9140e72 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb943319f ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xb9646d9c thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb968da40 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb96a5ba6 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xb98ccb22 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xb98d10e5 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb997e46b gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb9a74601 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xb9af3d5c spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cf6c1d regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e0a390 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9ec8788 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb9fcbe19 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xba03aee9 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xba04713a dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xba1677ce pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xba22dd2c power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba56a32d sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0xba5a6ad7 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xba82f22b thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba89a057 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xba966b30 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xba99525e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xba9f3c23 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xbaa069cc tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xbaa9570c __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xbab53daf snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaeeac7d snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafa46f6 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb12ef61 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xbb4c7570 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbb51bf36 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xbb7588d9 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xbb782413 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xbb8ee13e snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0xbb9c86ba clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xbba816a8 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xbba88d21 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xbba9eee4 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbbd1d8b6 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xbbfa795e omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0xbc07757c rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xbc0fb87a of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xbc17daef of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xbc24e6e5 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xbc274fc5 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xbc2eea8e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0xbc36d479 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbc46ac2c queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xbc528188 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc7aeba9 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbc9a7a97 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xbcab351e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb61d71 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbccbad74 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd222d5 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcdddce2 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd15f5af ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbd1b4156 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4f7dda nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbdb47832 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xbdc7baef cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf4331f of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe052a0a thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2c2cc5 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbe3754ca cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xbe467221 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe51e552 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xbe59a98e usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe763de4 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xbe7e8740 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xbe897694 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe97df3b register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb70bb5 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xbeb712b8 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xbebdfe26 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xbecf83f8 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xbed2e230 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xbee11c15 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf110731 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xbf64f217 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xbf69d86d posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfc198fb pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xbfd6f44c nl_table +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff38eb8 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc05d7033 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc06f4085 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc06f6064 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xc0779ac8 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc083a619 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc09bb849 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc09f1b23 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc0a08e1f posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xc0a67cf3 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b7d391 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc0bcf8ed vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f4caab sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc0fd9b49 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xc11e6131 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0xc124e1ae skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xc1257c77 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc1319355 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xc1391467 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc1398b08 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1772cca sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1916906 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xc1a67e9c fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xc1b2d4e7 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc1bc060e dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc21b3cca devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc21b3e21 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc252d755 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc2532d7b xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xc275e31f kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2933724 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc2b24c4a of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xc2d53fd2 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc302acfb pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xc313a176 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc31d177a dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc3238035 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xc32e4b7c phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc32ef0e3 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34b89d4 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37f8091 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3874b2b gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc38a24a3 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xc393c678 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc3a59d38 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc3a743b7 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3c28445 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xc3c4f84d phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc3e007ed virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xc3f263f2 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc401f541 blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42d6624 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xc4491e0a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4572787 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xc470b5a1 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4de8c9d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xc4f38dd5 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc4f8d3a0 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xc535e672 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xc539cd62 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54d8fa7 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xc552f4f7 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xc553be08 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5d0baf0 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xc5d2f3a1 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc5d39246 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5d7cf20 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xc5db34e6 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xc5db3f10 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xc5e0dd66 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xc5ed3602 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5f077d6 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6191401 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc63cd0dc relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xc63cf848 put_device +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc643f3e5 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc649c9e7 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc65e1228 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc666d316 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc676e60e regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6926fc4 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xc697f751 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a2022d wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b431ce led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6b5bafe tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc6c3796e of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xc6e818d3 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc6ed226f of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xc6f7ad88 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xc729d41b fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc74f4622 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc761fe2d devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc78fa27b regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xc7969afe blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cf8f93 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e4083f ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xc7ef2e20 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xc81bc1ee of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc85ba254 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc8a04877 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc8a8794d cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0xc8ad1ee8 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8afdf2c ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xc8d104f2 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ec4e05 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xc8ed55cf bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc8feed08 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xc907ebc9 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xc90da87d ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9672235 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xc968081e __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc975b77a debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xc97c7334 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97dd897 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xc97fe28b regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xc9b9073c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xc9cca11e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca15f34d mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xca1df6a6 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xca373709 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xca52a051 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xca65ef9c crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xca6b2083 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca6dc3cb pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81d4f3 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xca8eba79 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xcab1c866 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad634e2 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xcae4c0df cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb3ddc73 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xcb451a53 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4a490b uniphier_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0xcb5b6ab5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xcb8f8e35 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xcb992bf1 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcbbf9919 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcbdc5933 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0b10fd crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xcc17db43 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xcc1aecca fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xcc1e7254 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba77e dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xcc34da80 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcc51cb7a clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xcc57f0a3 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xcc6f2037 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xcc72b831 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xcc782af8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xcc85e8bb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc876e71 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xccaff79e rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd308b6 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcce47ce5 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xccee2073 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xccfa6deb of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xcd2a9615 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcd2dc86a get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xcd427e5a ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xcd6236e2 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcd6a97b5 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xcd6efaeb ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcda663a5 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xcdac35dd ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbf0e52 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xcdbf71ea snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde5d0a8 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xcdef53ba of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xcdf1c846 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xcdf637a2 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xcdf8997b soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xce37e2da ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xce4bc19f led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xce571e24 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xce69b3ef bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8d81c7 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xceadada1 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0xced0e48d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee17110 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xceeb29d6 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xcefe135e debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xcf11227f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xcf25d329 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcf45904d gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xcf4b6dc7 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf6085ad device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcf625064 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcf6bbe66 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xcf7b53b3 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xcf978d14 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xd010626c percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd05221a7 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd076f923 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd0b3aa49 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd1056aa5 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xd1235a57 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xd12ef83c event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xd15b982a blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd15df8f6 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1762a33 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1922219 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd197dd87 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xd1a2ba83 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xd1bd6492 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0xd1cf24bf omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0xd1d327c8 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd1e13811 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f5835f ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xd204da1b rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21aea50 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0xd2586d1a ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xd25e812e netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xd2659410 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd293f8ad pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xd2a24819 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2ca28a0 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f36d85 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xd2f47cc3 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3407b7d crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd343eda7 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xd35c3b2b lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd364f24a mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd3800a6e musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd3973e93 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xd3db8553 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xd3dfe378 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xd3e97c21 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd3ed9dc8 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd3eead58 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0xd3fbc15a usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd3fcda8c ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xd400241d inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xd401336e cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40e94b3 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4247289 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xd4285b80 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd44c3437 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xd4690420 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50a4706 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd50dd675 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd50dfd91 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xd514ee51 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xd52482fb crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd52954cb __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xd53d14e5 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd5445c84 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5697cd8 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0xd57429b6 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd5a05b26 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd5b1d85e fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bf3a47 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xd5ca57f8 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd5d226be snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0xd5d93400 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xd5dde4a7 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xd5e8f1b6 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd605010a sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd6398d85 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xd63dd91f stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd6501d73 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6909523 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xd6a48739 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xd6a6a717 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd6c1a263 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6c1e5ca kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xd6e2ce69 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xd7002255 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70964d9 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd744f85c amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xd75c19bf ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd75f6a47 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd781cc30 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xd78d1ad4 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xd7a814c5 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0xd7d3f0bd pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f08c57 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd7febf42 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd824ced3 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xd825ddf1 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd82d3843 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd859bd0c securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd86d71f8 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88b7a26 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0xd8a22824 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd8a38f53 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd8b46f59 cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xd8bdd883 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xd8d1a1a8 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd8d52a55 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xd8ea4abb snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xd903b27b bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xd9147d22 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xd914d476 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd93a436b dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96c3155 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xd96ec0b7 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xd977c4ce ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xd98d9622 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xd9b1b93f cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xd9b2e51e relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xd9d9cc29 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd9e6bc6d aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda17573f spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xda235fc4 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xda70cddf sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdac92025 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdae92d44 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafe5c44 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb1aae48 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb493a60 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xdb5ed1ea disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdb721ec6 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xdb7acca1 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8af5e4 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xdb9f8676 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xdba6cfe6 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xdbab59a1 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xdbc231ce ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xdbc4490e serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0xdbe126a1 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc2b5d2e ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc306608 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc309872 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xdc3eec3d dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc56755f pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xdc7d2e23 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9ccb6b devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9e204f nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca018e9 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xdca49358 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xdcb352ee virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xdcf41368 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd01d6fc regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1f0e25 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd302991 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xdd36081c snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4f23a6 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd584db8 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcfb7fc gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddd6a7be devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xddd7aa72 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xddebf93f tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde119ed0 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xde15fd2b gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde48c110 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xde651f98 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xde7c3d7a relay_close +EXPORT_SYMBOL_GPL vmlinux 0xde875c1c dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xde9c2d73 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xdeb4cd07 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xdeb52a2c usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdebca41e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xdecdacb2 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xded58ea7 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdedba42e device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xdee84e40 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xdeede544 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0xdef5ba3f da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf255dcf memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf411101 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xdf442857 __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0xdf557e2b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xdf670715 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xdf6b2e29 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdf76748c of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xdfa8b164 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xdfc081dd skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00b9c56 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xe011f037 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0444664 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xe051ac1b devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe05e446d bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xe06096da gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe0710423 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe096d1b6 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe09fbfaf trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xe0aaad93 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xe0ab9c4d dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0b1972f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c0025d gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe0c86c66 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xe0c9b9d9 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xe0ced15f sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0d32b84 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xe0ee38f7 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xe0f5af38 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe0feaeec usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xe1115931 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xe11e7e45 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xe128ca6f ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xe133da7d smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1816030 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe1891599 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe198cf21 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xe1aec137 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe1be999e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xe1c99889 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0xe1ce5367 md_run +EXPORT_SYMBOL_GPL vmlinux 0xe1d80dbc crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe1e2c5f4 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe1eb899a gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xe1ff7407 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe24ce267 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29eb741 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xe2a5f7a9 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe2ae2d33 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xe2b0de64 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xe2bac77a regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xe2da08ca ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xe2e2a287 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xe2f0a70d thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xe2f692ae gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30d1c2f pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xe31a909a sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe32c2bb2 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xe353f0fc bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe35d75e1 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xe37478c7 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xe37f90e4 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe3822bd4 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3a50149 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xe3a73a73 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3b09c22 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xe3bd40f6 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xe3cf6a71 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xe3e49273 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xe3eb5945 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3f953b1 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe4031953 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xe40ed3b8 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xe4209174 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43c5d3b snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46bc34f regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xe47f2c0f uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe485e64e snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4ac7094 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xe4bcf585 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xe4bdba1f iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe4be4ebb skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4c26aab power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe4c33044 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4de95a5 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xe5107b22 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe5348d26 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe53716e8 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xe538d2dc pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xe53972ef da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xe53bbfc1 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe54b64bc sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5779f24 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe598df87 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xe5e098c6 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xe5f07d8c snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL vmlinux 0xe5fd9b37 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xe6030a31 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xe60854d9 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xe6182395 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe63447ba dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xe645075d __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6525a05 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe663e1d2 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe67a7d78 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0xe6886ed2 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xe6a27bc9 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xe6b77b74 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d22d98 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xe6d67ae2 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f9816f hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe700c657 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe70e5696 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xe71858d4 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xe720b6a5 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0xe7215b91 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe748d514 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe755cfc3 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe75a21fb rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe770e3b4 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe790a31b usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe790e01e snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xe792faf1 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe7af2be3 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xe7cd42e7 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8277158 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xe82fb4ed inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xe83da95c crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe868b1f2 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xe8a6e8b6 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8af1ed3 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xe8bad9ae tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe8bfe3a4 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe8c1e98a bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xe8c87c82 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe8f2ce2d regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe8f96c17 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe90f658d usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe9115276 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xe912650f bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe924c7e2 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe93e9c11 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe94923c8 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe94bd701 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe958d8fa preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe96a9bea sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xe97495be ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xe97a9b50 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xe97bead5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xe97eb50b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xe981c5b3 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe9948872 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe9a610fb gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xe9b68cd5 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9f3aff5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea1f6e0e hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xea2543fa anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea2ef06b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4bd5ad pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xeaad8a92 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xead32850 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0xeaf1e9f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeaf50636 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xeb05d290 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xeb26c2c4 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xeb2a2978 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xeb5874dd alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xeb5b4d93 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xeb5c86a1 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb97b0e4 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xeb9a7b3a pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebb8e472 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xebbe1622 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xebd7bcae nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf5d5f0 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xec1adcd4 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec576ea6 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xec589131 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xec77c88e page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xec78e5e8 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xec7d3161 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeca5412f phy_create +EXPORT_SYMBOL_GPL vmlinux 0xecd91104 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xecfb4b91 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed0f732e ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xed18f2a6 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xed381975 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xed55a2a5 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xed5c3336 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0xed6698f4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xed6a06b1 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xed902bac of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xedcdc402 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xedd9ab13 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xedf56bc7 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0xee0e9081 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0xee2c1923 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xee2e2d58 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee3a7651 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xee45fce3 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xee67b1f1 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8155e8 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xee935aa4 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xeeaebe0e gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xeeafd214 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xeecc6964 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xeed08601 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xeee050e3 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xeefedc42 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xef01d514 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xef0ed92b srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef168adf gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xef1968ee snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0xef335038 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xef3d0e7d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef40a651 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef724b01 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef97dcbd get_device +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf00842ef snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0xf00cf089 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xf0140f29 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xf023435b tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf0258e41 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xf0272c0e __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xf0276627 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xf028428f usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf042af3f nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf0554045 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xf06880f1 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf06e6908 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0774f05 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xf081ad1e sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf0969798 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xf0a33eaa adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xf0d572a4 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf0db9dd9 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf0dc6d3f perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf0f0816c omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf0f154ed fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f60c1f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf1126f57 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf135496b ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xf14f2327 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xf16c6c7a ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xf16fe43a arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xf171da99 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf179b91e regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a4d3a0 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c2c125 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf1ca8b62 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf1dad722 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1f21b71 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21fd379 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf2303ea4 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xf2334bb5 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf25580bc wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27c0c38 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf2964604 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2cc1d83 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xf2cee3e8 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f3dfbd snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xf2f9f588 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31be395 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf32399bd nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33c7c23 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xf33fff03 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xf35ebf08 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf37eea80 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3830b6c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xf38a39ac pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b908e1 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d78bc2 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf41b4927 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xf431bc03 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xf458d383 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xf467a95e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf46bebdc crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf481ff00 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xf48ceebd net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a0f8d4 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xf4b53e82 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xf4c038d9 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf4c80b84 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf4ea5fc7 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xf4f645f5 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51c8aef __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf53f9806 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xf5455d5a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55f9417 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf5600775 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xf58dac1f usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xf59a808c iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5aa0d00 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf5d8a094 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf5e8830f pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xf5fb6bc6 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf5ff07ca xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xf6043d44 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xf60a106d bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xf61baa65 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf61e675f tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xf62fbec5 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf6551fbe of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xf6aa26cd of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xf6c8604e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf6c8880b gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6c9f2cf stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf6ca22e8 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xf6e3022d irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xf6e798a4 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7092c84 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xf7200ad1 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf72470f2 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xf734e269 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xf73c3b53 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf73da921 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xf74cd5b0 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf76aa306 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf76e0b40 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xf7aa7fb1 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0xf7b8c992 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xf7ce82bf ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7d95c22 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf7f24d8a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xf805899f tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf89b93c3 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8a7a581 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xf8af1063 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xf8d3dffe devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fd11e3 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93bdcbb i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xf945af34 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xf94a9ceb register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf968c688 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf969b7df skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xf9727817 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xf97296f6 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xf9804adc serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xf9833fe2 omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf992b6c9 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xf999747f dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xf99b8b1c ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9aee5fa power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf9afe860 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ced895 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf9e9d891 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf9ee17f3 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f8548a sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xfa18f31d device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa594478 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xfa5d6424 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xfa64c114 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xfa890900 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xfa910612 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0xfaa353d1 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xfaba2d0e aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xfabe0d20 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfb00786b bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xfb235023 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xfb257eee tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb46679a handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xfb4a8d60 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xfb533ea7 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb912eec ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfb9c99f6 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbdc6d03 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfbe2b753 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xfbe43ac1 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xfbe9dabe nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1150cb inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xfc4ed32d usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xfc5fca22 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfcb8fc12 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfcd53667 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xfcd7f167 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xfcdedf1c rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xfcfe3492 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd439211 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xfd4ef4a6 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd9dd541 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xfda4f27b fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xfdcae422 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xfdd435bd device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfdd686a1 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xfdd7fecf of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfde9ae2d of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0xfdea5cba ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xfe08b3f5 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xfe0ac226 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xfe464f30 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfe54a3aa scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xfe686b14 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xfe6b61e5 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xfe82c0c0 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb4c0a2 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed8fdb3 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xfee1b6fd snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xfeecd839 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfef694ac sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff02eb7e stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1b0192 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xff1e21a3 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2dd77b scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xff37a626 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5ce1e9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xffaec10b blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xffb11cea list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffec612e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfffd80d3 tty_port_register_device --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic-lpae.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic-lpae.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic-lpae.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic-lpae.modules @@ -0,0 +1,4515 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +aes-arm-ce +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_mvebu +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am35x +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +armada +arm_big_little +arm_big_little_dt +arm_mhu +arm_scpi +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-flexcom +atmel-hlcdc +atmel-hlcdc-dc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm63xx_uart +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcm-keypad +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +berlin2-adc +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bL_switcher_dummy_if +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-scpi +clk-si514 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +connector-analog-tv +connector-dvi +contec_pci_dio +cordic +core +cp210x +cpia2 +cppi41 +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +cs89x0 +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9000 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dove_thermal +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dwc3-qcom +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi +dw_hdmi-ahb-audio +dw_hdmi-imx +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-msm +ehci-omap +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +emif +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encoder-opa362 +encoder-tfp410 +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +exynos_adc +exynosdrm +exynos-gsc +exynos-rng +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +flexcan +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-dcu-drm +fsl-edma +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-arm-ce +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hnae +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-axxia +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-exynos5 +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-uniphier +i2c-uniphier-f +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx6ul_tsc +imxdrm +imx-ipu-v3 +imx-ipuv3-crtc +imx-ldb +imx_thermal +imx-tve +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-ns2 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +meson-ir +meson_uart +meson_wdt +metronomefb +metro-usb +mf6x4 +mga +mg_disk +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_am335x +musb_dsps +mv643xx_eth +mv_cesa +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nbpfaxi +nci +nci_spi +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsp32 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nvmem_qfprom +nvram +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omap +omap2430 +omap4-keypad +omap-aes +omap-des +omapfb +omap_hdq +omap_hwspinlock +omap-mailbox +omap-ocp2scp +omap-rng +omap-sham +omap_wdt +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-dpi +panel-dsi-cm +panel-lg-lg4573 +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-simple +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +parade-ps8622 +parallel-display +paride +parkbd +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pbias-regulator +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcie-iproc +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-dm816x-usb +phy-exynos5-usbdrd +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-msm-usb +phy-mt65xx-usb3 +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-8x16-usb +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +phy-rcar-gen2 +phy-rcar-usb +physmap +physmap_of +phy-tahvo +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-ph1-ld4 +pinctrl-ph1-ld6b +pinctrl-ph1-pro4 +pinctrl-ph1-pro5 +pinctrl-ph1-sld8 +pinctrl-proxstream2 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl172 +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8921-core +pm8941-pwrkey +pm8941-wled +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-berlin +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-mtk-disp +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-samsung +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pxa168_eth +pxa27x_udc +pxa3xx_nand +qcaspi +qcaux +qcom_bam_dma +qcom-coincell +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ravb +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rcar_can +rcar-dmac +rcar-du-drm +rcar-hpbdma +rcar_jpu +rcar_thermal +rcar_vin +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +regmap-spmi +regulator-haptic +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rmobile-reset +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3c-fb +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s5p-g2d +s5p-hdmi +s5p-hdmiphy +s5p-jpeg +s5p-mfc +s5p-mixer +s5p-sdo +s5p-sii9234 +s5p-sss +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung +samsung-keypad +samsung-sxgbe +sata_highbank +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scpi-cpufreq +scpi-hwmon +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci-dove +sdhci_f_sdh30 +sdhci-msm +sdhci-of-arasan +sdhci-of-at91 +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha256-arm +sha2-arm-ce +sha512-arm +shark2 +shdma +sh_eth +sh_flctl +sh_irda +sh_keysc +sh_mmcif +shmob-drm +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_mobile_hdmi +sh_mobile_lcdcfb +sh_mobile_meram +sh_mobile_sdhi +sh-sci +sht15 +sht21 +shtc1 +sh_veu +sh_vou +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501fb +sm712fb +sm750fb +smb347-charger +smc911x +smc91x +sm_common +smd +smd-rpm +smem +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-armada-370-db +snd-soc-arndale-rt5631 +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-davinci-mcasp +snd-soc-es8328 +snd-soc-fsi +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-i2s +snd-soc-idma +snd-soc-imx-audmux +snd-soc-kirkwood +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-odroidx2-max98090 +snd-soc-omap-hdmi-audio +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rcar +snd-soc-rl6231 +snd-soc-rsrc-card +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rx51 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-smdk-spdif +snd-soc-smdk-wm8994 +snd-soc-smdk-wm8994pcm +snd-soc-snow +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-wm8994 +snd-soc-wm-hubs +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-meson-spifc +spi-mt65xx +spi-nor +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-ti-qspi +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spmi-pmic-arb +squashfs +sr9700 +sr9800 +ssb +ssbi +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +st-asc +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm32-usart +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sudmac +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teranetics +test_bpf +test_firmware +test-hexdump +test-kprobes +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +ti_hecc +tilcdc +timeriomem-rng +tipc +ti-soc-thermal +ti_usb_3410_5052 +ti-vpe +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usb-dmac +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vexpress-spc-cpufreq +vf610_adc +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xhci-plat-hcd +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xor-neon +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/armhf/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/armhf/generic.modules @@ -0,0 +1,4607 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +aes-arm-ce +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_mvebu +ahci_qoriq +ahci_tegra +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am35x +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +armada +arm_big_little +arm_big_little_dt +arm_mhu +arm_scpi +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-flexcom +atmel-hlcdc +atmel-hlcdc-dc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm63xx_uart +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcm-keypad +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +berlin2-adc +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bL_switcher_dummy_if +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +caam +caamalg +caamhash +caam_jr +caamrng +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-scpi +clk-si514 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cmt_speech +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +connector-analog-tv +connector-dvi +contec_pci_dio +cordic +core +cp210x +cpia2 +cppi41 +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +cs89x0 +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da8xx-fb +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +davinci_emac +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9000 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dove_thermal +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dwc3-qcom +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi +dw_hdmi-ahb-audio +dw_hdmi-imx +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-msm +ehci-mxc +ehci-omap +ehci-tegra +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +emif +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encoder-opa362 +encoder-tfp410 +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +exynos_adc +exynosdrm +exynos-gsc +exynos-rng +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +flexcan +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-dcu-drm +fsl-edma +fsl_lpuart +fsl-mph-dr-of +fsl_pq_mdio +fsl-quadspi +fsl_usb2_udc +ft6236 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusb300_udc +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-arm-ce +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpmi_nand +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hifn_795x +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hnae +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +host1x +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-exynos5 +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tegra +i2c-tiny-usb +i2c-uniphier +i2c-uniphier-f +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx21-hcd +imx2_wdt +imx6q-cpufreq +imx6ul_tsc +imx-dma +imxdrm +imxfb +imx-ipu-v3 +imx-ipuv3-crtc +imx_keypad +imx-ldb +imx-sdma +imx_thermal +imx-tve +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-ns2 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +meson-ir +meson_uart +meson_wdt +metronomefb +metro-usb +mf6x4 +mga +mg_disk +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_am335x +musb_dsps +mv643xx_eth +mv_cesa +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mx3_camera +mxb +mxc4005 +mxcmmc +mxc_nand +mxc_w1 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxs-dcp +mxser +mxsfb +mxuport +myri10ge +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nbpfaxi +nci +nci_spi +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nokia-modem +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsp32 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvec +nvec_kbd +nvec_paz00 +nvec_power +nvec_ps2 +nvidiafb +nvme +nvmem_core +nvmem-imx-ocotp +nvmem_qfprom +nvmem-vf610-ocotp +nvram +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +ohci-omap3 +old_belkin-sir +omap +omap2 +omap2430 +omap3-isp +omap3-rom-rng +omap4-keypad +omap-aes +omap-des +omapfb +omap_hdq +omap_hwspinlock +omap-mailbox +omap-ocp2scp +omap_remoteproc +omap-rng +omap-sham +omap_ssi +omap_ssi_port +omap-vout +omap_wdt +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-dpi +panel-dsi-cm +panel-lg-lg4573 +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-simple +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +parade-ps8622 +parallel-display +paride +parkbd +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_imx +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pbias-regulator +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcie-iproc +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-dm816x-usb +phy-exynos5-usbdrd +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-msm-usb +phy-mt65xx-usb3 +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-8x16-usb +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +phy-rcar-gen2 +phy-rcar-usb +physmap +physmap_of +phy-tahvo +phy-tegra-usb +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-ph1-ld4 +pinctrl-ph1-ld6b +pinctrl-ph1-pro4 +pinctrl-ph1-pro5 +pinctrl-ph1-sld8 +pinctrl-proxstream2 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl172 +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8921-core +pm8941-pwrkey +pm8941-wled +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-berlin +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-imx +pwm-lp3943 +pwm-mtk-disp +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-samsung +pwm-tegra +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pxa168_eth +pxa27x_udc +pxa3xx_nand +qcaspi +qcaux +qcom_bam_dma +qcom-coincell +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ravb +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rcar_can +rcar-dmac +rcar-du-drm +rcar-hpbdma +rcar_jpu +rcar_thermal +rcar_vin +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +regmap-spmi +regulator-haptic +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rmobile-reset +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-imxdi +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-mxc +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tegra +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3c-fb +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s5p-g2d +s5p-hdmi +s5p-hdmiphy +s5p-jpeg +s5p-mfc +s5p-mixer +s5p-sdo +s5p-sii9234 +s5p-sss +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +sahara +salsa20_generic +samsung +samsung-keypad +samsung-sxgbe +sata_highbank +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scpi-cpufreq +scpi-hwmon +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci-dove +sdhci_f_sdh30 +sdhci-msm +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdhci-tegra +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial-tegra +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha256-arm +sha2-arm-ce +sha512-arm +shark2 +shdma +sh_eth +sh_flctl +sh_irda +sh_keysc +sh_mmcif +shmob-drm +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_mobile_hdmi +sh_mobile_lcdcfb +sh_mobile_meram +sh_mobile_sdhi +sh-sci +sht15 +sht21 +shtc1 +sh_veu +sh_vou +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501fb +sm712fb +sm750fb +smb347-charger +smc911x +smc91x +sm_common +smd +smd-rpm +smem +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-aloop +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-ens1370 +snd-ens1371 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hda-tegra +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-apq8016-sbc +snd-soc-armada-370-db +snd-soc-arndale-rt5631 +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-davinci-mcasp +snd-soc-dmic +snd-soc-edma +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-eukrea-tlv320 +snd-soc-evm +snd-soc-fsi +snd-soc-fsl-asoc-card +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-utils +snd-soc-gtm601 +snd-soc-i2s +snd-soc-idma +snd-soc-imx-es8328 +snd-soc-imx-mc13783 +snd-soc-imx-spdif +snd-soc-imx-ssi +snd-soc-imx-wm8962 +snd-soc-kirkwood +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-mc13783 +snd-soc-odroidx2-max98090 +snd-soc-omap3pandora +snd-soc-omap-abe-twl6040 +snd-soc-omap-dmic +snd-soc-omap-hdmi-audio +snd-soc-omap-mcpdm +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rcar +snd-soc-rl6231 +snd-soc-rsrc-card +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rx51 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-smdk-spdif +snd-soc-smdk-wm8994 +snd-soc-smdk-wm8994pcm +snd-soc-snow +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tegra20-ac97 +snd-soc-tegra20-das +snd-soc-tegra20-i2s +snd-soc-tegra20-spdif +snd-soc-tegra30-ahub +snd-soc-tegra30-i2s +snd-soc-tegra-alc5632 +snd-soc-tegra-max98090 +snd-soc-tegra-pcm +snd-soc-tegra-rt5640 +snd-soc-tegra-rt5677 +snd-soc-tegra-trimslice +snd-soc-tegra-utils +snd-soc-tegra-wm8753 +snd-soc-tegra-wm8903 +snd-soc-tegra-wm9712 +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-twl6040 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-wm8994 +snd-soc-wm9712 +snd-soc-wm-hubs +snd-soc-xtfpga-i2s +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +snvs_pwrkey +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-fsl-dspi +spi-gpio +spi-imx +spi_ks8995 +spi-lm70llp +spi-meson-spifc +spi-mt65xx +spi-nor +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-tegra114 +spi-tegra20-sflash +spi-tegra20-slink +spi-ti-qspi +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spmi-pmic-arb +squashfs +sr9700 +sr9800 +ssb +ssbi +ssd1307fb +ssfdc +ssi_protocol +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +st-asc +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm32-usart +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sudmac +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tegra124-cpufreq +tegra-devfreq +tegra-drm +tegra-kbc +tegra_wdt +tehuti +tekram-sir +teranetics +test_bpf +test_firmware +test-hexdump +test-kprobes +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +ti_hecc +tilcdc +timeriomem-rng +tipc +ti-soc-thermal +ti_usb_3410_5052 +ti-vpe +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usb-dmac +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vexpress-spc-cpufreq +vf610_adc +vf610_nfc +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_rpmsg_bus +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wkup_m3_rproc +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xhci-plat-hcd +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xor-neon +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/fwinfo +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/fwinfo @@ -0,0 +1,996 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: a300_pfp.fw +firmware: a300_pm4.fw +firmware: a330_pfp.fw +firmware: a330_pm4.fw +firmware: a420_pfp.fw +firmware: a420_pm4.fw +firmware: acenic/tg1.bin +firmware: acenic/tg2.bin +firmware: adaptec/starfire_rx.bin +firmware: adaptec/starfire_tx.bin +firmware: advansys/3550.bin +firmware: advansys/38C0800.bin +firmware: advansys/38C1600.bin +firmware: advansys/mcode.bin +firmware: agere_ap_fw.bin +firmware: agere_sta_fw.bin +firmware: aic94xx-seq.fw +firmware: amdgpu/carrizo_ce.bin +firmware: amdgpu/carrizo_me.bin +firmware: amdgpu/carrizo_mec2.bin +firmware: amdgpu/carrizo_mec.bin +firmware: amdgpu/carrizo_pfp.bin +firmware: amdgpu/carrizo_rlc.bin +firmware: amdgpu/carrizo_sdma1.bin +firmware: amdgpu/carrizo_sdma.bin +firmware: amdgpu/carrizo_uvd.bin +firmware: amdgpu/carrizo_vce.bin +firmware: amdgpu/fiji_ce.bin +firmware: amdgpu/fiji_mc.bin +firmware: amdgpu/fiji_me.bin +firmware: amdgpu/fiji_mec2.bin +firmware: amdgpu/fiji_mec.bin +firmware: amdgpu/fiji_pfp.bin +firmware: amdgpu/fiji_rlc.bin +firmware: amdgpu/fiji_sdma1.bin +firmware: amdgpu/fiji_sdma.bin +firmware: amdgpu/fiji_smc.bin +firmware: amdgpu/fiji_uvd.bin +firmware: amdgpu/fiji_vce.bin +firmware: amdgpu/stoney_ce.bin +firmware: amdgpu/stoney_me.bin +firmware: amdgpu/stoney_mec.bin +firmware: amdgpu/stoney_pfp.bin +firmware: amdgpu/stoney_rlc.bin +firmware: amdgpu/stoney_sdma.bin +firmware: amdgpu/stoney_uvd.bin +firmware: amdgpu/stoney_vce.bin +firmware: amdgpu/tonga_ce.bin +firmware: amdgpu/tonga_mc.bin +firmware: amdgpu/tonga_me.bin +firmware: amdgpu/tonga_mec2.bin +firmware: amdgpu/tonga_mec.bin +firmware: amdgpu/tonga_pfp.bin +firmware: amdgpu/tonga_rlc.bin +firmware: amdgpu/tonga_sdma1.bin +firmware: amdgpu/tonga_sdma.bin +firmware: amdgpu/tonga_smc.bin +firmware: amdgpu/tonga_uvd.bin +firmware: amdgpu/tonga_vce.bin +firmware: amdgpu/topaz_ce.bin +firmware: amdgpu/topaz_mc.bin +firmware: amdgpu/topaz_me.bin +firmware: amdgpu/topaz_mec2.bin +firmware: amdgpu/topaz_mec.bin +firmware: amdgpu/topaz_pfp.bin +firmware: amdgpu/topaz_rlc.bin +firmware: amdgpu/topaz_sdma1.bin +firmware: amdgpu/topaz_sdma.bin +firmware: amdgpu/topaz_smc.bin +firmware: ar5523.bin +firmware: asihpi/dsp5000.bin +firmware: asihpi/dsp6200.bin +firmware: asihpi/dsp6205.bin +firmware: asihpi/dsp6400.bin +firmware: asihpi/dsp6600.bin +firmware: asihpi/dsp8700.bin +firmware: asihpi/dsp8900.bin +firmware: ast_dp501_fw.bin +firmware: ath10k/QCA6174/hw2.1/board-2.bin +firmware: ath10k/QCA6174/hw2.1/board.bin +firmware: ath10k/QCA6174/hw2.1/firmware-4.bin +firmware: ath10k/QCA6174/hw2.1/firmware-5.bin +firmware: ath10k/QCA6174/hw3.0/board-2.bin +firmware: ath10k/QCA6174/hw3.0/board.bin +firmware: ath10k/QCA6174/hw3.0/firmware-4.bin +firmware: ath10k/QCA6174/hw3.0/firmware-5.bin +firmware: ath10k/QCA9377/hw1.0/board.bin +firmware: ath10k/QCA9377/hw1.0/firmware-5.bin +firmware: ath10k/QCA988X/hw2.0/board-2.bin +firmware: ath10k/QCA988X/hw2.0/board.bin +firmware: ath10k/QCA988X/hw2.0/firmware-2.bin +firmware: ath10k/QCA988X/hw2.0/firmware-3.bin +firmware: ath10k/QCA988X/hw2.0/firmware-4.bin +firmware: ath10k/QCA988X/hw2.0/firmware-5.bin +firmware: ath10k/QCA988X/hw2.0/firmware.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: ath6k/AR6004/hw1.3/bdata.bin +firmware: ath6k/AR6004/hw1.3/fw.ram.bin +firmware: ath9k_htc/htc_7010-1.4.0.fw +firmware: ath9k_htc/htc_9271-1.4.0.fw +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c506.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmsar11.fw +firmware: atsc_denver.inp +firmware: av7110/bootcode.bin +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.12.30.0.fw +firmware: bnx2x/bnx2x-e1h-7.12.30.0.fw +firmware: bnx2x/bnx2x-e2-7.12.30.0.fw +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac43143.bin +firmware: brcm/brcmfmac43143-sdio.bin +firmware: brcm/brcmfmac43143-sdio.txt +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac43241b0-sdio.bin +firmware: brcm/brcmfmac43241b0-sdio.txt +firmware: brcm/brcmfmac43241b4-sdio.bin +firmware: brcm/brcmfmac43241b4-sdio.txt +firmware: brcm/brcmfmac43241b5-sdio.bin +firmware: brcm/brcmfmac43241b5-sdio.txt +firmware: brcm/brcmfmac43242a.bin +firmware: brcm/brcmfmac4329-sdio.bin +firmware: brcm/brcmfmac4329-sdio.txt +firmware: brcm/brcmfmac4330-sdio.bin +firmware: brcm/brcmfmac4330-sdio.txt +firmware: brcm/brcmfmac43340-sdio.bin +firmware: brcm/brcmfmac43340-sdio.txt +firmware: brcm/brcmfmac4334-sdio.bin +firmware: brcm/brcmfmac4334-sdio.txt +firmware: brcm/brcmfmac4335-sdio.bin +firmware: brcm/brcmfmac4335-sdio.txt +firmware: brcm/brcmfmac43362-sdio.bin +firmware: brcm/brcmfmac43362-sdio.txt +firmware: brcm/brcmfmac4339-sdio.bin +firmware: brcm/brcmfmac4339-sdio.txt +firmware: brcm/brcmfmac43430-sdio.bin +firmware: brcm/brcmfmac43430-sdio.txt +firmware: brcm/brcmfmac43455-sdio.bin +firmware: brcm/brcmfmac43455-sdio.txt +firmware: brcm/brcmfmac4350-pcie.bin +firmware: brcm/brcmfmac4350-pcie.txt +firmware: brcm/brcmfmac4354-sdio.bin +firmware: brcm/brcmfmac4354-sdio.txt +firmware: brcm/brcmfmac43569.bin +firmware: brcm/brcmfmac4356-pcie.bin +firmware: brcm/brcmfmac4356-pcie.txt +firmware: brcm/brcmfmac43570-pcie.bin +firmware: brcm/brcmfmac43570-pcie.txt +firmware: brcm/brcmfmac4358-pcie.bin +firmware: brcm/brcmfmac4358-pcie.txt +firmware: brcm/brcmfmac43602-pcie.bin +firmware: brcm/brcmfmac43602-pcie.txt +firmware: brcm/brcmfmac4365b-pcie.bin +firmware: brcm/brcmfmac4365b-pcie.txt +firmware: brcm/brcmfmac4366b-pcie.bin +firmware: brcm/brcmfmac4366b-pcie.txt +firmware: brcm/brcmfmac4371-pcie.bin +firmware: brcm/brcmfmac4371-pcie.txt +firmware: BT3CPCC.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw-3.2.3.0.bin +firmware: cis/3CCFEM556.cis +firmware: cis/3CXEM556.cis +firmware: cis/COMpad2.cis +firmware: cis/COMpad4.cis +firmware: cis/DP83903.cis +firmware: cis/LA-PCM.cis +firmware: cis/MT5634ZLX.cis +firmware: cis/NE2K.cis +firmware: cis/PCMLM28.cis +firmware: cis/PE-200.cis +firmware: cis/PE520.cis +firmware: cis/RS-COM-2P.cis +firmware: cis/SW_555_SER.cis +firmware: cis/SW_7xx_SER.cis +firmware: cis/SW_8xx_SER.cis +firmware: cis/tamarack.cis +firmware: cmmb_ming_app.inp +firmware: cmmb_vega_12mhz.inp +firmware: cmmb_venice_12mhz.inp +firmware: comedi/jr3pci.idm +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: cs46xx/cwc4630 +firmware: cs46xx/cwcasync +firmware: cs46xx/cwcbinhack +firmware: cs46xx/cwcdma +firmware: cs46xx/cwcsnoop +firmware: ct2fw-3.2.3.0.bin +firmware: ct2fw-3.2.5.1.bin +firmware: ctefx.bin +firmware: ctfw-3.2.3.0.bin +firmware: ctfw-3.2.5.1.bin +firmware: cxgb3/ael2005_opt_edc.bin +firmware: cxgb3/ael2005_twx_edc.bin +firmware: cxgb3/ael2020_twx_edc.bin +firmware: cxgb3/t3b_psram-1.1.0.bin +firmware: cxgb3/t3c_psram-1.1.0.bin +firmware: cxgb3/t3fw-7.12.0.bin +firmware: cxgb4/t4fw.bin +firmware: cxgb4/t5fw.bin +firmware: cxgb4/t6fw.bin +firmware: cyzfirm.bin +firmware: daqboard2000_firmware.bin +firmware: digiface_firmware.bin +firmware: digiface_firmware_rev11.bin +firmware: dvb-cx18-mpc718-mt352.fw +firmware: dvb-demod-m88ds3103.fw +firmware: dvb-demod-m88rs6000.fw +firmware: dvb-demod-mn88472-02.fw +firmware: dvb-demod-mn88473-01.fw +firmware: dvb-demod-si2165.fw +firmware: dvb-demod-si2168-a20-01.fw +firmware: dvb-demod-si2168-a30-01.fw +firmware: dvb-demod-si2168-b40-01.fw +firmware: dvb-fe-af9013.fw +firmware: dvb-fe-cx24117.fw +firmware: dvb-fe-drxj-mc-1.0.8.fw +firmware: dvb-fe-ds3000.fw +firmware: dvb-fe-tda10071.fw +firmware: dvb-fe-xc4000-1.4.1.fw +firmware: dvb-fe-xc4000-1.4.fw +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-4.1.30.7.fw +firmware: dvbh_rio.inp +firmware: dvb_nova_12mhz_b0.inp +firmware: dvb_nova_12mhz.inp +firmware: dvb_rio.inp +firmware: dvb-tuner-si2158-a20-01.fw +firmware: dvb-usb-af9015.fw +firmware: dvb-usb-af9035-02.fw +firmware: dvb-usb-dib0700-1.20.fw +firmware: dvb-usb-dw2101.fw +firmware: dvb-usb-dw2102.fw +firmware: dvb-usb-dw2104.fw +firmware: dvb-usb-dw3101.fw +firmware: dvb-usb-ec168.fw +firmware: dvb-usb-it9135-01.fw +firmware: dvb-usb-it9135-02.fw +firmware: dvb-usb-it9303-01.fw +firmware: dvb-usb-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.fw +firmware: dvb-usb-p1100.fw +firmware: dvb-usb-p7500.fw +firmware: dvb-usb-s630.fw +firmware: dvb-usb-s660.fw +firmware: dvb-usb-terratec-h7-az6007.fw +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot2.fw +firmware: edgeport/boot.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: edgeport/down.fw +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010b.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: fm_radio.inp +firmware: fm_radio_rio.inp +firmware: fw.ram.bin +firmware: go7007/go7007fw.bin +firmware: go7007/go7007tv.bin +firmware: go7007/lr192.fw +firmware: go7007/px-m402u.fw +firmware: go7007/px-tv402u.fw +firmware: go7007/s2250-1.fw +firmware: go7007/s2250-2.fw +firmware: go7007/wis-startrek.fw +firmware: i1480-phy-0.0.bin +firmware: i1480-pre-phy-0.0.bin +firmware: i1480-usb-0.0.bin +firmware: i2400m-fw-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: i915/bxt_dmc_ver1.bin +firmware: i915/skl_dmc_ver1.bin +firmware: i915/skl_guc_ver4.bin +firmware: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: intel/ibt-11-5.ddc +firmware: intel/ibt-11-5.sfi +firmware: ipw2100-1.3.fw +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdbt_nova_12mhz_b0.inp +firmware: isdbt_nova_12mhz.inp +firmware: isdbt_pele.inp +firmware: isdbt_rio.inp +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-3160-13.ucode +firmware: iwlwifi-3945-2.ucode +firmware: iwlwifi-4965-2.ucode +firmware: iwlwifi-5000-5.ucode +firmware: iwlwifi-5150-2.ucode +firmware: iwlwifi-6000-4.ucode +firmware: iwlwifi-6000g2a-5.ucode +firmware: iwlwifi-6000g2b-6.ucode +firmware: iwlwifi-6050-5.ucode +firmware: iwlwifi-7260-13.ucode +firmware: iwlwifi-7265-13.ucode +firmware: iwlwifi-7265D-13.ucode +firmware: iwlwifi-8000-13.ucode +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: korg/k1212.dsp +firmware: lattice-ecp3.bit +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: liquidio/lio_210nv.bin +firmware: liquidio/lio_210sv.bin +firmware: liquidio/lio_410nv.bin +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: me2600_firmware.bin +firmware: me4000_firmware.bin +firmware: mixart/miXart8AES.xlx +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mrvl/pcie8766_uapsta.bin +firmware: mrvl/pcie8897_uapsta.bin +firmware: mrvl/pcie8997_uapsta.bin +firmware: mrvl/sd8688.bin +firmware: mrvl/sd8688_helper.bin +firmware: mrvl/sd8786_uapsta.bin +firmware: mrvl/sd8787_uapsta.bin +firmware: mrvl/sd8797_uapsta.bin +firmware: mrvl/sd8887_uapsta.bin +firmware: mrvl/sd8897_uapsta.bin +firmware: mrvl/sd8997_uapsta.bin +firmware: mrvl/usb8766_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mrvl/usb8801_uapsta.bin +firmware: mrvl/usb8997_uapsta.bin +firmware: mt7601u.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: multiface_firmware.bin +firmware: multiface_firmware_rev11.bin +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366_ap-3.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: ni6534a.bin +firmware: niscrb01.bin +firmware: niscrb02.bin +firmware: orinoco_ezusb_fw +firmware: ositech/Xilinx7OD.bin +firmware: pca200e.bin +firmware: pca200e_ecd.bin2 +firmware: pcxhr/dspb1222e.b56 +firmware: pcxhr/dspb1222hr.b56 +firmware: pcxhr/dspb882e.b56 +firmware: pcxhr/dspb882hr.b56 +firmware: pcxhr/dspb924.b56 +firmware: pcxhr/dspd1222.d56 +firmware: pcxhr/dspd222.d56 +firmware: pcxhr/dspd882.d56 +firmware: pcxhr/dspe882.e56 +firmware: pcxhr/dspe924.e56 +firmware: pcxhr/xlxc1222e.dat +firmware: pcxhr/xlxc1222hr.dat +firmware: pcxhr/xlxc222.dat +firmware: pcxhr/xlxc882e.dat +firmware: pcxhr/xlxc882hr.dat +firmware: pcxhr/xlxc924.dat +firmware: pcxhr/xlxint.dat +firmware: phanfw.bin +firmware: prism2_ru.fw +firmware: prism_ap_fw.bin +firmware: prism_sta_fw.bin +firmware: qat_895xcc.bin +firmware: ql2100_fw.bin +firmware: ql2200_fw.bin +firmware: ql2300_fw.bin +firmware: ql2322_fw.bin +firmware: ql2400_fw.bin +firmware: ql2500_fw.bin +firmware: qlogic/1040.bin +firmware: qlogic/12160.bin +firmware: qlogic/1280.bin +firmware: qlogic/sd7220.fw +firmware: r128/r128_cce.bin +firmware: r8a779x_usb3_v1.dlmem +firmware: radeon/ARUBA_me.bin +firmware: radeon/ARUBA_pfp.bin +firmware: radeon/ARUBA_rlc.bin +firmware: radeon/BARTS_mc.bin +firmware: radeon/BARTS_me.bin +firmware: radeon/BARTS_pfp.bin +firmware: radeon/BARTS_smc.bin +firmware: radeon/bonaire_ce.bin +firmware: radeon/BONAIRE_ce.bin +firmware: radeon/BONAIRE_mc2.bin +firmware: radeon/bonaire_mc.bin +firmware: radeon/BONAIRE_mc.bin +firmware: radeon/bonaire_me.bin +firmware: radeon/BONAIRE_me.bin +firmware: radeon/bonaire_mec.bin +firmware: radeon/BONAIRE_mec.bin +firmware: radeon/bonaire_pfp.bin +firmware: radeon/BONAIRE_pfp.bin +firmware: radeon/bonaire_rlc.bin +firmware: radeon/BONAIRE_rlc.bin +firmware: radeon/bonaire_sdma.bin +firmware: radeon/BONAIRE_sdma.bin +firmware: radeon/bonaire_smc.bin +firmware: radeon/BONAIRE_smc.bin +firmware: radeon/BONAIRE_uvd.bin +firmware: radeon/BONAIRE_vce.bin +firmware: radeon/BTC_rlc.bin +firmware: radeon/CAICOS_mc.bin +firmware: radeon/CAICOS_me.bin +firmware: radeon/CAICOS_pfp.bin +firmware: radeon/CAICOS_smc.bin +firmware: radeon/CAYMAN_mc.bin +firmware: radeon/CAYMAN_me.bin +firmware: radeon/CAYMAN_pfp.bin +firmware: radeon/CAYMAN_rlc.bin +firmware: radeon/CAYMAN_smc.bin +firmware: radeon/CEDAR_me.bin +firmware: radeon/CEDAR_pfp.bin +firmware: radeon/CEDAR_rlc.bin +firmware: radeon/CEDAR_smc.bin +firmware: radeon/CYPRESS_me.bin +firmware: radeon/CYPRESS_pfp.bin +firmware: radeon/CYPRESS_rlc.bin +firmware: radeon/CYPRESS_smc.bin +firmware: radeon/CYPRESS_uvd.bin +firmware: radeon/hainan_ce.bin +firmware: radeon/HAINAN_ce.bin +firmware: radeon/HAINAN_mc2.bin +firmware: radeon/hainan_mc.bin +firmware: radeon/HAINAN_mc.bin +firmware: radeon/hainan_me.bin +firmware: radeon/HAINAN_me.bin +firmware: radeon/hainan_pfp.bin +firmware: radeon/HAINAN_pfp.bin +firmware: radeon/hainan_rlc.bin +firmware: radeon/HAINAN_rlc.bin +firmware: radeon/hainan_smc.bin +firmware: radeon/HAINAN_smc.bin +firmware: radeon/hawaii_ce.bin +firmware: radeon/HAWAII_ce.bin +firmware: radeon/HAWAII_mc2.bin +firmware: radeon/hawaii_mc.bin +firmware: radeon/HAWAII_mc.bin +firmware: radeon/hawaii_me.bin +firmware: radeon/HAWAII_me.bin +firmware: radeon/hawaii_mec.bin +firmware: radeon/HAWAII_mec.bin +firmware: radeon/hawaii_pfp.bin +firmware: radeon/HAWAII_pfp.bin +firmware: radeon/hawaii_rlc.bin +firmware: radeon/HAWAII_rlc.bin +firmware: radeon/hawaii_sdma.bin +firmware: radeon/HAWAII_sdma.bin +firmware: radeon/hawaii_smc.bin +firmware: radeon/HAWAII_smc.bin +firmware: radeon/JUNIPER_me.bin +firmware: radeon/JUNIPER_pfp.bin +firmware: radeon/JUNIPER_rlc.bin +firmware: radeon/JUNIPER_smc.bin +firmware: radeon/kabini_ce.bin +firmware: radeon/KABINI_ce.bin +firmware: radeon/kabini_me.bin +firmware: radeon/KABINI_me.bin +firmware: radeon/kabini_mec.bin +firmware: radeon/KABINI_mec.bin +firmware: radeon/kabini_pfp.bin +firmware: radeon/KABINI_pfp.bin +firmware: radeon/kabini_rlc.bin +firmware: radeon/KABINI_rlc.bin +firmware: radeon/kabini_sdma.bin +firmware: radeon/KABINI_sdma.bin +firmware: radeon/kaveri_ce.bin +firmware: radeon/KAVERI_ce.bin +firmware: radeon/kaveri_me.bin +firmware: radeon/KAVERI_me.bin +firmware: radeon/kaveri_mec2.bin +firmware: radeon/kaveri_mec.bin +firmware: radeon/KAVERI_mec.bin +firmware: radeon/kaveri_pfp.bin +firmware: radeon/KAVERI_pfp.bin +firmware: radeon/kaveri_rlc.bin +firmware: radeon/KAVERI_rlc.bin +firmware: radeon/kaveri_sdma.bin +firmware: radeon/KAVERI_sdma.bin +firmware: radeon/mullins_ce.bin +firmware: radeon/MULLINS_ce.bin +firmware: radeon/mullins_me.bin +firmware: radeon/MULLINS_me.bin +firmware: radeon/mullins_mec.bin +firmware: radeon/MULLINS_mec.bin +firmware: radeon/mullins_pfp.bin +firmware: radeon/MULLINS_pfp.bin +firmware: radeon/mullins_rlc.bin +firmware: radeon/MULLINS_rlc.bin +firmware: radeon/mullins_sdma.bin +firmware: radeon/MULLINS_sdma.bin +firmware: radeon/oland_ce.bin +firmware: radeon/OLAND_ce.bin +firmware: radeon/OLAND_mc2.bin +firmware: radeon/oland_mc.bin +firmware: radeon/OLAND_mc.bin +firmware: radeon/oland_me.bin +firmware: radeon/OLAND_me.bin +firmware: radeon/oland_pfp.bin +firmware: radeon/OLAND_pfp.bin +firmware: radeon/oland_rlc.bin +firmware: radeon/OLAND_rlc.bin +firmware: radeon/oland_smc.bin +firmware: radeon/OLAND_smc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/pitcairn_ce.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc2.bin +firmware: radeon/pitcairn_mc.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/pitcairn_me.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/pitcairn_pfp.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/pitcairn_rlc.bin +firmware: radeon/PITCAIRN_rlc.bin +firmware: radeon/pitcairn_smc.bin +firmware: radeon/PITCAIRN_smc.bin +firmware: radeon/R100_cp.bin +firmware: radeon/R200_cp.bin +firmware: radeon/R300_cp.bin +firmware: radeon/R420_cp.bin +firmware: radeon/R520_cp.bin +firmware: radeon/R600_me.bin +firmware: radeon/R600_pfp.bin +firmware: radeon/R600_rlc.bin +firmware: radeon/R600_uvd.bin +firmware: radeon/R700_rlc.bin +firmware: radeon/REDWOOD_me.bin +firmware: radeon/REDWOOD_pfp.bin +firmware: radeon/REDWOOD_rlc.bin +firmware: radeon/REDWOOD_smc.bin +firmware: radeon/RS600_cp.bin +firmware: radeon/RS690_cp.bin +firmware: radeon/RS780_me.bin +firmware: radeon/RS780_pfp.bin +firmware: radeon/RS780_uvd.bin +firmware: radeon/RV610_me.bin +firmware: radeon/RV610_pfp.bin +firmware: radeon/RV620_me.bin +firmware: radeon/RV620_pfp.bin +firmware: radeon/RV630_me.bin +firmware: radeon/RV630_pfp.bin +firmware: radeon/RV635_me.bin +firmware: radeon/RV635_pfp.bin +firmware: radeon/RV670_me.bin +firmware: radeon/RV670_pfp.bin +firmware: radeon/RV710_me.bin +firmware: radeon/RV710_pfp.bin +firmware: radeon/RV710_smc.bin +firmware: radeon/RV710_uvd.bin +firmware: radeon/RV730_me.bin +firmware: radeon/RV730_pfp.bin +firmware: radeon/RV730_smc.bin +firmware: radeon/RV740_smc.bin +firmware: radeon/RV770_me.bin +firmware: radeon/RV770_pfp.bin +firmware: radeon/RV770_smc.bin +firmware: radeon/RV770_uvd.bin +firmware: radeon/SUMO2_me.bin +firmware: radeon/SUMO2_pfp.bin +firmware: radeon/SUMO_me.bin +firmware: radeon/SUMO_pfp.bin +firmware: radeon/SUMO_rlc.bin +firmware: radeon/SUMO_uvd.bin +firmware: radeon/tahiti_ce.bin +firmware: radeon/TAHITI_ce.bin +firmware: radeon/TAHITI_mc2.bin +firmware: radeon/tahiti_mc.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/tahiti_me.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/tahiti_pfp.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/tahiti_rlc.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/tahiti_smc.bin +firmware: radeon/TAHITI_smc.bin +firmware: radeon/TAHITI_uvd.bin +firmware: radeon/TAHITI_vce.bin +firmware: radeon/TURKS_mc.bin +firmware: radeon/TURKS_me.bin +firmware: radeon/TURKS_pfp.bin +firmware: radeon/TURKS_smc.bin +firmware: radeon/verde_ce.bin +firmware: radeon/VERDE_ce.bin +firmware: radeon/VERDE_mc2.bin +firmware: radeon/verde_mc.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/verde_me.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/verde_pfp.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/verde_rlc.bin +firmware: radeon/VERDE_rlc.bin +firmware: radeon/verde_smc.bin +firmware: radeon/VERDE_smc.bin +firmware: riptide.hex +firmware: rp2.fw +firmware: rpm_firmware.bin +firmware: rsi_91x.fw +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/rtl8106e-1.fw +firmware: rtl_nic/rtl8106e-2.fw +firmware: rtl_nic/rtl8107e-1.fw +firmware: rtl_nic/rtl8107e-2.fw +firmware: rtl_nic/rtl8168d-1.fw +firmware: rtl_nic/rtl8168d-2.fw +firmware: rtl_nic/rtl8168e-1.fw +firmware: rtl_nic/rtl8168e-2.fw +firmware: rtl_nic/rtl8168e-3.fw +firmware: rtl_nic/rtl8168f-1.fw +firmware: rtl_nic/rtl8168f-2.fw +firmware: rtl_nic/rtl8168g-2.fw +firmware: rtl_nic/rtl8168g-3.fw +firmware: rtl_nic/rtl8168h-1.fw +firmware: rtl_nic/rtl8168h-2.fw +firmware: rtl_nic/rtl8402-1.fw +firmware: rtl_nic/rtl8411-1.fw +firmware: rtl_nic/rtl8411-2.fw +firmware: rtlwifi/rtl8188efw.bin +firmware: rtlwifi/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cufw_A.bin +firmware: rtlwifi/rtl8192cufw_B.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192cufw_TMSC.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192eefw.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: rtlwifi/rtl8723aufw_A.bin +firmware: rtlwifi/rtl8723aufw_B.bin +firmware: rtlwifi/rtl8723aufw_B_NoBT.bin +firmware: rtlwifi/rtl8723befw.bin +firmware: rtlwifi/rtl8723efw.bin +firmware: rtlwifi/rtl8821aefw.bin +firmware: sb16/alaw_main.csp +firmware: sb16/ima_adpcm_capture.csp +firmware: sb16/ima_adpcm_init.csp +firmware: sb16/ima_adpcm_playback.csp +firmware: sb16/mulaw_main.csp +firmware: scope.cod +firmware: sd8385.bin +firmware: sd8385_helper.bin +firmware: sd8686.bin +firmware: sd8686_helper.bin +firmware: sd8688.bin +firmware: sd8688_helper.bin +firmware: slicoss/gbdownload.sys +firmware: slicoss/gbrcvucode.sys +firmware: slicoss/oasisdownload.sys +firmware: slicoss/oasisrcvucode.sys +firmware: sms1xxx-hcw-55xxx-dvbt-02.fw +firmware: sms1xxx-hcw-55xxx-isdbt-02.fw +firmware: sms1xxx-nova-a-dvbt-01.fw +firmware: sms1xxx-nova-b-dvbt-01.fw +firmware: sms1xxx-stellar-dvbt-01.fw +firmware: sndscape.co0 +firmware: sndscape.co1 +firmware: sndscape.co2 +firmware: sndscape.co3 +firmware: sndscape.co4 +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard2.bin +firmware: softing-4.6/ldcard.bin +firmware: solos-db-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tdmb_denver.inp +firmware: tdmb_nova_12mhz_b0.inp +firmware: tdmb_nova_12mhz.inp +firmware: tehuti/bdx.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: ti-connectivity/wl1251-fw.bin +firmware: ti-connectivity/wl1251-nvs.bin +firmware: ti-connectivity/wl1271-nvs.bin +firmware: ti-connectivity/wl127x-fw-5-mr.bin +firmware: ti-connectivity/wl127x-fw-5-plt.bin +firmware: ti-connectivity/wl127x-fw-5-sr.bin +firmware: ti-connectivity/wl128x-fw-5-mr.bin +firmware: ti-connectivity/wl128x-fw-5-plt.bin +firmware: ti-connectivity/wl128x-fw-5-sr.bin +firmware: ti-connectivity/wl18xx-conf.bin +firmware: ti-connectivity/wl18xx-fw-4.bin +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso5.bin +firmware: tigon/tg3_tso.bin +firmware: ttusb-budget/dspbootcode.bin +firmware: turtlebeach/msndinit.bin +firmware: turtlebeach/msndperm.bin +firmware: turtlebeach/pndsperm.bin +firmware: turtlebeach/pndspini.bin +firmware: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/adi930.fw +firmware: ueagle-atm/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: usbduxfast_firmware.bin +firmware: usbdux_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vntwusb.fw +firmware: vpdma-1b8.bin +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vxge/X3fw.ncf +firmware: vxge/X3fw-pxe.ncf +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: wavefront.os +firmware: wd719x-risc.bin +firmware: wd719x-wcs.bin +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wil6210.brd +firmware: wil6210.fw +firmware: wlan/prima/WCNSS_qcom_wlan_nv.bin +firmware: xc3028L-v36.fw +firmware: xc3028-v27.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: yamaha/yss225_registers.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/generic @@ -0,0 +1,18700 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0xe9dacdbd kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x254e5667 scx200_gpio_base +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x35a3c008 scx200_gpio_configure +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x8cfa375c scx200_gpio_shadow +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x907665bd scx200_cb_base +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x2d7e229d mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x0d77dadf acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x36a9d4d7 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x5938e7aa uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x597571eb bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xd38e4ec6 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4eb4130a pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x4faf7b14 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x5d36f984 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x61789d54 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x673c26cf pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x7d6c5187 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xd18b58fe paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xd885fdee pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xdd9bd306 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xdef2d2fe pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xfc273f40 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfd912558 pi_read_block +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x17d6418a btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3482f76d ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x60e8032d ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa03535f8 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc0375085 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe720c71f ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x341ad669 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nsc_gpio 0x48d9cebf nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0xb350fed8 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x09d62dc7 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x20a8fcb0 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x25163bd5 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc4df4802 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x0a01d7cf xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x2d8fc017 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x666843a1 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0317f8e0 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1b84b301 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4d7b33b9 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x714c6e89 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd39e18e8 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe6dea13b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0xca0bdbc1 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x073a000d fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e09a55 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16f2ad06 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31c9b3b0 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c3bcc80 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x448704f4 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x675151b1 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7c655ee0 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x824fbed3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8923a163 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8c48d7f6 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94b52f44 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e7bd587 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0d1a2d2 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa5a46834 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8001098 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xac03b715 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0587e2a fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc63be1db fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc74e95a2 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc77d71b3 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0d37721 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd8a7b35b fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd5381da fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde339626 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec9e345f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x09cf0784 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x2127f129 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x4e40439d fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x5ee61fce fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x62ab0741 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x67cf7e70 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x7dea0f67 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x847c21be fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x87e18b35 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xd7736980 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xebe57dc9 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x041f9ab3 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04205200 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x056fb9b3 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06aceb8c drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06fcbf38 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0861f7cc drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b4ef2b7 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bab861a drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c598a6b drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f78b855 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fe64f54 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11349adb drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1134f0d5 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117770b2 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1286bdb8 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x143637da drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15a643d4 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15ac79c4 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17eb650b drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x184446f6 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19635273 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a88a248 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c68efd4 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d12555f drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dae18f9 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1de10d09 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7a7345 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ffc7cd9 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20be6982 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21805d44 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2302f8d1 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2387ec65 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23d695ec drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24ea3000 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24f2afbb drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2517f208 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2565afd0 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e5c91a drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x274147bf drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a345f1b drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6e430f drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ccd65f9 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cf35e37 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d34f128 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d41ae40 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d58dbfa drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ddf4838 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e2d99c0 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e5487a3 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e6babdc drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2efb4e0a drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f8733b5 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fb74caf drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x301d6d43 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304c0646 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3406fa91 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x377de092 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x385fcfb5 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x391a6964 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39aa1d2c drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39be12ff drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b4f77c1 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dc6750e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e01c66d drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb0e0e8 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fa2c069 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4157dfb1 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x417bfde9 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41e1f8dc drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x425e1e7b drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x452d2028 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4540c47d drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4560ba8b drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x461beb62 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46ad29af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x482345b5 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4885d9de drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a208ef7 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aee23d4 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b1605c3 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b53e069 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b699e2e drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bd235c3 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c75e86d drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e30418d drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ec24174 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f17f623 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f3c2e37 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50a89220 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x521e8dca drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52a17eec drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x541aed14 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54ad0a8b drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54fd05ea drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x555f61ef drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x558a2a88 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55bcdc9a drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5603d59c drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x560a88c9 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58f2038b drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5aaafebc drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b06920a drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b9f1011 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bb636ce drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c2567c9 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c591d8e drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cd6fd11 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d178291 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e45cb68 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f481adc drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60c82de2 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61c12d6b drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6367ad45 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63fc3e81 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6475a82f drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66dabb93 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6955524c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69779b40 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aafa2a0 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aba49e8 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0e8e4f drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bba39ce drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d212ada drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d24f8f8 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f360c99 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fb3f70c drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716c07d8 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71fd930a drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x736e16e3 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x784c43ee drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79b0af82 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a1ec67a drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7acdda01 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b019a5b drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b2648b6 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7be35f36 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d0d8fdd drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ec11bbe drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8043d386 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8080d165 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8179732b drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81d39bbf drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81fccac3 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82ff6b68 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x854e4f5d drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86383385 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86ece3c7 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x875e3689 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88dbf97c drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x892ba3bb drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a3926f2 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ba0448f drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8be94be2 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c1a420e drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce880cc drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d2bd757 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x901fbee3 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x910eb91a drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91c71b20 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92d77fde drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x938d3aec drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93dcbc73 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93eca1a5 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941895eb drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941ad975 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94684aa9 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95a8e532 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f74f2d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x960e6584 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x960ea6e6 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x975c0e7a drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97aec325 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9872db54 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9898e95b drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98b7ec88 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99b5ca7b drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99c82a67 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b14fc48 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d481215 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f8f0d09 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa30dde19 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3948a5a drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa487a09e drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5738e4d drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6f4aed3 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa73d2850 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa850f138 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9aa2eb6 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9b2f38a drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaf22822 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacb9a012 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacca57a7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadb43c70 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf2e24bf drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb077e1cd drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11612b8 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb14ff558 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb176b588 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb340f878 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4004801 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb59b954e drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5c5f6a6 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5da3560 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb630918d drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c2f35e drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c54473 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89aa64f drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8c71dbf drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb2e62a7 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc8a2509 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbccb2e54 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe45697b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0dcb589 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0ee8697 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc35fdd87 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc52c6a33 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6079222 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc74c26ee drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc88b73c6 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca4bace0 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcab5d7d7 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc3f6b32 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce1ff523 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce973756 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf0e51cd drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf83cdad drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1be3d73 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2aff28c drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2c67e89 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd38e1e9e drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd398bb59 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd48acad6 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd49e76b2 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8f92497 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9b6edef drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb19bb48 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc10ccb0 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcb972f9 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde07a7dc drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf59b1f3 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfe5a1e3 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe208dae7 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe342be31 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe45f90b1 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe522d4ba drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe57fa504 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6953064 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe69e6e56 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe972dd43 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea5aabf8 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea924b64 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeadc30a9 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecf933da drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeda4823e drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef297fae drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf038b0ed drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf212234a drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2aba9b2 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf359cff3 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5433d63 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf57fc2c9 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5a7e4de drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5afac92 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d6f74e drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7adaa21 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7bb8502 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf81e44ba drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8c26119 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf908321b drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa3c2795 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfae20f03 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb161d5f drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf34871 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdaee9d7 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe4f1271 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff3f2f2c drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff43da26 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02a5c9a2 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03027030 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x042eb466 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x054dd76f drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x076d1725 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08be8429 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08c2e228 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x091b6c87 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0aeee1ac drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0af23be5 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dcddf89 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0eaab265 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f605fc2 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12bb55d5 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12d4db62 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12f0ddd1 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x151f145e drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16520c7b drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e19d84 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x178dbbb1 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x190ba01c drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d8f5729 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ea81753 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21d5db9b drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23254ffe drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2428a2d4 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2492a57b __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26266ad1 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x280af80c drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28680516 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b11cbed drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bb41d77 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e002a2e drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31cf321a drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3442b9f7 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3442f484 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39213026 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a5a6167 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b52c59e drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f7528f4 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44a314b6 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x452e2810 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x483a1eaa drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b9c6362 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ba6c819 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cb75323 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e33b04a drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50d9c217 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52c7f1c8 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54ffb66b drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55b55caa __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cbc2d4d drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5db5bd8d drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62ff54df drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6599ecda drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x676e95e6 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69635215 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c898b25 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x705c9a3e drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71591df5 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72e92ff9 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x757cbffd drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75cc606f drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76de2441 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fcccee2 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x809a9587 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86c26730 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87f1a6f7 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8966d6ca drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f351dda drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f43bd14 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f55b098 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92e04ece drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93671542 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94f46bab drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96da1424 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x986fdf6a drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a4d7082 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9abfc419 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9abfec36 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e5efbb7 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f17d462 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa13875b6 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa51fb279 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7f613e6 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac445584 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac8d8ff4 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1b237f1 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1cb06df drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb25abe34 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb47f9551 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5219d80 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5a27cb1 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb64c521a drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb843c3e6 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe020c4a drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc00382b2 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc127be98 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc360c714 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc40ef4df drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb9c65a8 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0635301 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7dca19b drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb58465b drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4a561ca __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7294fad drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe85a6e76 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8923614 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe989b984 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea4668ec drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea4b4e6a drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeabd9617 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecfbc5ff drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeef336a4 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf18c37da drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf371f1a3 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3b8bfd3 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3f1809c drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4131bec __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7a2833a drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7a92db8 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb435806 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb63cd26 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbf309bb drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02957cce ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02982d93 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x053a6dfe ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0744a00e ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x098f9763 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c575120 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x131954a2 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x137ca453 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x160b5efc ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c12e28b ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22f0e782 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24fe6a1c ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2589b665 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f8c25d7 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30d3a2e7 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3143ec2a ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x396016ad ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4081aeb1 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x410dce09 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4340cb27 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43dde6a6 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c917cca ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e9c68dd ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ed36c0d ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x515e4faf ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6147007b ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71e09cd9 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7540e0cc ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7689bd7d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x797ac4a9 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a3067ba ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84c98685 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ba41605 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x976e3062 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99121079 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9973fb0f ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9dddf9dc ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f11640d ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabf48391 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcdcb26a ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0084268 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc350316c ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc36ef4e0 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6bdd5d1 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc971598e ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc99ed96a ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcebe51eb ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3a703ba ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3fccd12 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd47b2204 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe68dc747 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7845e21 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb529d63 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf6351814 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa2b8005 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x27cdbcaa vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x4f75d8a0 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xcf69e2a4 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xd5e31665 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x2c140d5c i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7958f2e6 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7bd948c1 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x84bd5d64 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf36615d9 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xec9f7d10 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x307e4acf mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x425b1fc0 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x43b2f3b4 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4cfd7b3c mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x60db3a58 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x67b3ba1e mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x97a294b3 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x98a7bdfc mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcfaa1580 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd1e8dbf1 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd688a3ef mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xde476bc1 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe3bc6f3e mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf9c00f8e mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfbcdc79a mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfc19ea2f mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x01479ea2 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x4ee514c7 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x87aeda6d iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xee751dfa iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x34bf7c8d iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x7269162b devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x879b2736 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xefb249be devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x101c3dc1 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x43fa2de8 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x490aeafe hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8971a0d8 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8abbf175 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd1042bd7 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x08dc84c5 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2c3312cd hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x870a04cf hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa7858dfd hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x425137e8 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x4b7a1a14 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x55a42b77 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x782dacf3 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8cb05ba2 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x9a952d9c ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x9bb5d611 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xb09555f9 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc0165225 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x378b5755 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5215ff10 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5bca4682 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9489fb55 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbff58e4b ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x752a4b17 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xa7da2471 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xff9c9b50 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1de5f377 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x211a7e39 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2375800e st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x23854356 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3a6283a0 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x77ca67af st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7f56a5ad st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x882abd68 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b2804a5 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9989c587 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa1f72e89 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb3cf9576 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcbb59955 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcda65f99 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd764d95e st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe48df659 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x6f8ed93d st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x64c0f49d st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x07eb0b49 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5bfce963 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x7f082f17 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xd8c04873 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0ee781c4 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x0fac4e21 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x270344bc iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4514bdbf iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x73a17f3d iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x792552b5 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x84c91462 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8923faee iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x9063db0f iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x91c7fbb4 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xa08f32b0 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xaa4e2266 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xad74eb85 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xb1a20310 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xddbc4a7d iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xde749c52 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8809379 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x950630d5 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xfc627ce4 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x79111e38 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe80ae9ff st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x939d7d51 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x50dcf203 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9d50a1ed st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x2403594b rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x25cd9c52 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xd2240545 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xd6f8c28e rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0266526f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x20bace7c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2575f0fb ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x34d3c6e5 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3b4ea38d ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4188c445 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5eebb43c ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x837c6f58 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8921167f ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x94ed4f0b ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9f666b2f ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa2f59413 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaf860749 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xced8579e ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd4e678ac ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd7907923 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe0a25dcc cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf58abf23 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02aa2557 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x037fb469 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03bac651 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dfbddf7 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ed0b74b ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1388f289 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14fce0db ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15649417 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f7846b4 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ff1a6e5 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2186e091 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25c095d4 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2780568b ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27d58985 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c5b1c26 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d408443 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2faaa5f7 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30d4b8cb ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x329db450 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34e40afd ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37fa1f76 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42eeb071 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43272a30 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48249026 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x493c53a3 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52383695 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x538533b5 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x547ba854 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56b608c8 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e24ebcb ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ff9423c ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x645974f7 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66438132 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69c1fbb0 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cd3ee16 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6db7f379 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6eb2e292 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71306d81 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7174dd8f ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7463f8c1 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7960a7d0 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ccf28c5 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7dd1a542 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8cbe9eb4 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8de876dc ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e1550bb ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x915e2015 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x934a1630 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x942418c9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b622fa0 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e6f9a0a ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa22b73b9 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2d845c7 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa43529ab ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4fc7509 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa61ed8a3 ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8c3f92a ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa957fccf ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa9a995d ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae54c5b1 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb21a6c96 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb31f8cbe ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6558b97 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7b3d745 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8dadf17 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbef0ee7b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc010f284 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc18669c3 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1957555 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce1cbf7f ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf97eb17 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3f25699 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd504134d ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda4ca7ca ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf09bba1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe41b0d2b ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe67c5f31 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7c5c072 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee63916b ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf95ce5c7 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa87d8ed ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe514c81 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe9a1bda ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x08035e21 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x16b4d226 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3a6351d7 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4103c69f ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4ef45fbf ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x72653b0f ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x85f31298 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93ef9b4f ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9a5fb149 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa5d8fc9f ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xac8b7d89 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd7cb8e5c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe24e219e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2083aebf ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2cb3fa23 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5d6e4b7c ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8da6f47c ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa0db4279 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbef6710d ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe5c49b1b ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xeb2bccc5 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf3aeea10 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2c33951e ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb41d1bf5 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0694cb02 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0e038bc4 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x14e695dc iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b226161 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x37b1076c iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3ed9357a iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47d1a51a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x70f076c5 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x77d855c7 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x868b911e iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x94c80666 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x975676e4 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xce6a3c61 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd50ef986 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf196b78b iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0a81cee9 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1aaedf09 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2996da03 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3f4fc8ba rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x42a9e752 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x51f09e8e rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x596da3e9 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70b83459 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x757d830a rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7bb94203 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x870b3c06 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8aac401a rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94713d22 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x98135fc6 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa79b4b25 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa931c638 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb4965193 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb61b48f0 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc50e6522 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdbb5854d rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffade47a rdma_join_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2d03b56c gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3887fb62 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x72b08886 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9987e9f8 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa0d242b5 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb0525ad6 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbb4ea224 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc4cea583 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd8fc8e9f __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x2ccca603 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x417c7a91 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x50a36b5a input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9d65d9f4 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc11babc1 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x23d11899 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7fcc4576 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9534d9eb ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc211def6 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x5e4b911a cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0ef8741e sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9f8ff70a sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbb0340e1 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc25a9d40 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd9111b13 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe54251c3 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x42301cee ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x55cbe22a ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x00232b0c capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2ab44eff capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x92f3d866 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa90ae50e attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xac7d5826 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb8661d66 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb9897e26 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe17d6463 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf39e08e4 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf808c782 capi20_release +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x22d92e1e b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x32aa0992 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x37433675 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4eda53ef b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x54a5044e b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5ccefe60 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x94f8fc68 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa9f04240 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xafe90033 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd7db2897 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe4012e3e b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xeb7be7d8 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf033e862 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf129e76c avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfd7bd6da b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5c1523aa b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6bf6160f b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x72664c6b b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8155c9fb b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb1908d27 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd66f0d4d b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdd53f254 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe4ae27a5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe768df7a b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3ba20fc3 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x5b7d2feb mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8f377555 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd65757d9 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x05f52de8 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x41cab627 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf032784e hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8e249e2f isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb54fbf3b isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbdabda3e isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xce8bf759 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xce9fe374 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x363042c1 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x97fd41d0 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbe81c152 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0309ff7b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x071cc3c0 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x15f6ee11 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x182427eb create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x228e8e6a mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x273e1de6 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x312df3aa mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50a17d7c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f8ae188 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6bd39dc1 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x79f73013 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ca63215 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x867f3fc6 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8ead4c59 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x967b0d08 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa3942cda mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaa1800ae mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb48c8d3d mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc4b4e18c mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc82a6551 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcd3de4cd bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcdd922d1 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf7cbe0b3 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x274f66ef closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8a87a21c closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x98694e60 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xecf7cef9 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf0ab033c closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfbf30701 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x07bb8276 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x2dfab107 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x32f7f453 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xdb1d83c7 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x32432edb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x88690c64 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x92c92324 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb1b85987 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd6043f8a dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf7d09024 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x73685e7b raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0f986cc1 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2e1e9576 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x43e52911 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x446b1a3f flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x66702a35 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x99ccfe6b flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9af6607f flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbd530178 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcd004bf8 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdcae3d2a flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe5f1afc7 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf44e813f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf5f6c192 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x29d2f2b5 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x88b97d2d cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcad305ec cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xfb8b72a6 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xfb206ede cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0cb0814a tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x6a20f657 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x00dac4a7 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x043a623c dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0e4a53ea dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x132e7acb dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x208ca28c dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3195e3d9 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x369c0b2b dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ee8cfed dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x50d6b6a3 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x56361d2f dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58c0b3ca dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a6f883d dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f3072c3 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x686a30c4 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6ecad22f dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70de704a dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x76910e98 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x79c313e1 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8498b90c dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x898d0f6a dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d0286a2 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8f330128 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91b55ee7 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9835329c dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa5cb9d83 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa946bc23 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc1720c7f dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc645fbc3 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8874a99 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xca6ffbd8 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd0e9b9f7 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe33fcc34 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebd38af9 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfcd4634b dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x6521fc3c af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x01877583 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xc284f3f7 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x00dbf15e au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3c153e1c au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x845813ad au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa04b6d44 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xaab1819f au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc21d5a57 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe485e221 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf81f5247 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf8e6fd03 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x942d48aa au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xb1eaa5f9 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x5ce17619 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x2eacecf7 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x9378bac5 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x22328eda cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x22ee0164 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x046940da cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xfd9afa15 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4392c6ea cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x69a64129 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xbcb86640 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x4f11449f cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xa5522e2b cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xb7001d33 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5316d58f dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5703ef8d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x79d5d9c1 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb44c6164 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xfe722046 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x082009a3 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x14297d6d dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x238c396e dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x32b00c69 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3a674b39 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4fed89c0 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5dc2eabd dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7be195c4 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7cae805c dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x81761e64 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9f695b1c dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa1d3c783 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd4838c12 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd7364ca3 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe139363b dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xd6c66af0 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0b931f73 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x45ca7597 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6ec01f8a dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x86dde9f4 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb825de29 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd5e70604 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2a7d8142 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2ee1e561 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8745566f dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8986eccb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc06083d3 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf483631c dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x381b53ee dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x66b068e4 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x687f6321 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa7861a66 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa92b2220 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x0e463d33 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x4be596ee drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x62daa519 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x7bae5c87 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x3dd33477 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x848298c8 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x39155cfa horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x368a98f5 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x3605506c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xcc15d2bc isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x6866462f itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x6105013c ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xafe90912 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xb3fb7c5f lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x806b4d0a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x498053aa lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xb002c057 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x8d6940c9 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x6c2fd78e lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x661860e1 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xfe4d0869 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xdb35c816 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x521692d6 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x9de1e925 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xce22858a m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x814e5e20 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xc183e78c mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x12797b35 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xe071940b mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x52f23d52 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x6c1806a4 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xe92ccd67 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xf7bb323b or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xdd4db22e s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xfbf53ba6 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x58d13646 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x63122cb6 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xc899f684 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x4ffe50c9 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x91fb8e28 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x9bba7979 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xc80fbbb8 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x2ffe5163 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xe3663ae8 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x286d5893 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xd1fd0019 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x21d94efe stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xe16fcc07 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xe1fdbe98 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xe2a48682 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x6b75cc8d stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x053b3caa stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x3bc5a7bf stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x39991232 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x0d6e1c3d tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xe442a20d tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x064597b4 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x1257f12d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x26425945 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xefe56baf tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x8915c010 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x315b7645 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xd7747e84 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xb6a2714f tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x6121f15a ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x28aca729 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xea09bfa6 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xc07a277b ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xe8470841 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x2ea07e25 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x0b08370e zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x00a27c0b flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0a8d664f flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x23131422 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2690f88a flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x422464b4 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6fda5d1f flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeec7a75a flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0256a30e bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4f98e8b6 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc8369f3b bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd4dc1883 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x72efa2d5 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x97d64db1 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd263f59a bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x08be44bf dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x13e70f64 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x258419d1 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4592eb0d dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6083ca94 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x66725c84 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb229e09e dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb883461d dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe8638743 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x5abaa8c4 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x249a0420 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x30199dc3 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8429ec73 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb8115687 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe89699b4 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6a2d02ce altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x2b6ae72c cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7b159bc6 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9c2d24c2 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb58cf2fd cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc95f84dd cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd81d8812 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe2658a75 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x2a0c6bde vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x55b0cdcb vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x62473e15 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x709ecbd1 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x73d2ce7e cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xda11a058 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4c152a7f cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4cdc6951 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x56f3f3d6 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x99b8601e cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9a053c00 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xae9e0410 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf803a8c0 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x08a75af0 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0cf5a735 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1bcc82b8 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1f2a11ed cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x254eaa67 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x26fe6d53 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4842bf58 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4c0f014e cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x55152af2 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x69d8886f cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6f5bc3fa cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x73386898 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x772ca35d cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x812a4376 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9e72e376 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaad039c1 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc54bcdf2 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xce5d6b0d cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe58896ca cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe8c01dab cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0a529356 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x20a70985 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x22aac999 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x22b5febd ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3e2304e5 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x568feeed ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5b8ea909 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d881c8d ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x74d618a1 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x96f1deec ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa4207c33 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaf5c8905 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc2cb9e13 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd8e57733 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd9ca7220 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe6864212 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd83336c ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x11e0fe0d saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x15c20118 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3f1cd46f saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x43426dae saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5a3be38f saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6a67ef81 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x81cdb54c saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8c24267a saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa8bdd38d saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe5e193d3 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe6a3e1f8 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeb1a6ef8 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xddd363f7 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x271f9351 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x36cff8ca videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x66531aca videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9e1b2451 videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x10b023ed soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x49f60569 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x726dc14b soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x75683287 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x78e3c60f soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xab97bb52 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xed53d355 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x63bb45e0 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6e8a2ab5 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x79e0717c snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7ea6f992 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc08dab68 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd7dd52bf snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe0ac5ca8 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x11c62ac2 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4abcfa02 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6a1ba492 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x73e9e350 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb5780a4a lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc1139808 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe146f872 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe57c13f5 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x20148e68 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x6ed7cc4f ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xd0de4f9e fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x71bc1c83 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x553d88e7 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x9cb1b52e fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xda9fc1bb fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x9bbda666 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xaad50381 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x4684fd66 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x7ecc4a43 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x976493ac mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x51271cb1 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xeecb9086 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xaae0bf26 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xc784f9de xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xc74f6588 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xcbf4f66f xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x15e8eb45 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd3f82fa7 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x031fb745 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x52635827 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5a93aca3 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6c46915e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8f834831 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa23c1308 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa269054b dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb925b1b9 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbdea34b5 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x03104bd2 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3b8dc1f4 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3c2a1bf6 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x637abfd7 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6419d9a2 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8850be09 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc5d09781 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x7b5a35fd af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x04c505c8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x13c667df dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x21eb4e06 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2362d6c6 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x43136e87 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x45d725c4 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4b39edc8 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9cea8939 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xba0090a0 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc1576dbb dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd816cb77 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x5e668878 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf19d0780 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1560ca31 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x24d0243c go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2ec8b6a0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x317cadf6 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5324f6b1 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x830976be go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x9dd3a252 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbd6409b9 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xca37ab20 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x08e813e9 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x194e9e3b gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1ec9a509 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x681d09cf gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7a28cb04 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9347ce6d gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xab9c58f5 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdfb67c89 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x72dcc09b tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xcc942614 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xdbb088be tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8d40916f ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa68790a5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2aa065d0 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x6a028cfb v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xcc1388ff v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1b3ce636 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4033bb7d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4f31931a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb7865960 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd7f2162a videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfcf27d3e videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x1b3278b9 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xa9f85235 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0bfa2ffc vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1484befe vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4f179eb5 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x74908a91 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7f70946f vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xddb2cf50 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0xe4974ae9 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x022cfbc8 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0695abb7 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f94f73e v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10cced02 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x135cde54 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x143c4088 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e91927a v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21a4ee5f v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25b8a577 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2697fd30 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x297c991a v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x300f9f4f __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3551e7ef v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3af5d0c2 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b370d20 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c3a6961 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46cef5aa v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48df8052 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c400eaa __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x562a3b2a video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ad1ac1f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ce00e7d video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5dcd550f video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x607b5449 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61c2e3e9 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6226b3dd video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64ab45ad v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66c2e86e v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7748d7ee v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79979841 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bfb0e80 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83a932dc v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8566723a v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87209d67 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x875d05d2 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a474537 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bc671d1 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d11da70 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8df0f0bd v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9173c57f v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93f9c826 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x965ea6c5 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1fce98d v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa5ac7664 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa64fef02 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa742b67 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab72cc8b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xacc6ea5d __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5f7ba9b v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6e68dca v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba70bbaa v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbad0dadb v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc66bb979 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca5e19d3 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcec2c349 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6dd0840 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7f30042 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8d2f0c1 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd90d98c2 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc0357ac v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe25d94cf v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec48f615 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xefb7ddba __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf022ceaa v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf51ce476 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7254b41 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8005f4e v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8a7f002 video_device_alloc +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0b3a8dab memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x24e057ae memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4456dcea memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c7de9d8 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c969013 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b4d9348 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a42525a memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb62c0ac2 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc6d4dc76 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xca1c63ed memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcc79cc4b memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe8f286ca memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x11854dfa mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14fbae69 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2d31ee76 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x37e9e61f mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x43412e30 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4343730c mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x532c7f9f mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54d5fc45 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x567e3a8c mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6389a17f mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x693cef93 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6bcb5d58 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x77a7835f mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x939e1690 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x93b8223c mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9420c459 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2ba6392 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa49075c7 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaccb35af mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb6059cde mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb92b7cb0 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc44a4ae2 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd2aa2161 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdaf1b1de mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb0476e6 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe2e1a1c5 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe95aea47 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeaff5883 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf92906a6 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x00e57e65 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x045225e5 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f5c7e7c mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2396b137 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x242ee1a4 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2abe0993 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d6c9cb5 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5139ca63 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5494092a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x66b67fee mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x68e46b2a mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6abba8ef mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x835c4a75 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa5bd7e01 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbcbb4e44 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc171fd8c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1fcf1a2 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc69fda5 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcd3edf99 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd5bc506e mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd700b980 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd99869c7 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe4ee5294 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xedd6b2cb mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef809761 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf6701718 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfbbbbac2 mptscsih_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x709dead0 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7172d4d3 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9e348870 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfffeead0 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/dln2 0x3382a2d6 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x48fdd002 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xd69fe3c0 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x053cdc39 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb4cba15c pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0b11412a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x19322f64 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x336a3a74 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x49d7d11e mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x653e9e0c mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x79c03405 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa2ef541f mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbbe00c33 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc94e99f8 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf259643f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf66e09a0 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x05cf9294 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x189f315a wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x06819c29 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x34bb27b0 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xabd9259d wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xeb3761d8 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x135d93bb ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd0697f10 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x075983d1 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x2f31213c c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xe7918f3b c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x1a1539af ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x74bc1a6c ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x0b3c2389 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/mei/mei 0xafdfce69 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/tifm_core 0x00a8a4eb tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x0c1b2b6d tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x13e5ff71 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x156f667a tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x7bbc7925 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x81d72cb2 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa10a33f0 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc8f85485 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xdc1d2be1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xeeeb18bf tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xf3b12f7e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf653c934 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xc914085a mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x507ff65a cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x67a6a8be cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7d442afc cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8c0735e3 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc2df229d cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe5ad1933 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfd034a94 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0c4676b5 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x18bc9a56 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8e8ed424 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9553316f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x89767c23 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x33652126 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xfe94a883 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x84a4adb5 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf9e01f18 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xde7cb4f6 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xf132cc6c denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2f5ee5d0 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x399bec81 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3bedb601 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x88c3f064 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa2270038 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc02a9f74 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x075c1786 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x95118788 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xbe5176ec nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x68848348 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xcc8f6735 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x2c40bab1 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x739c3fa4 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb893ecfd flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfd6f8983 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0e33a1e1 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x132dc5b7 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x58325bbe arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6bff5397 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x748a2550 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9a2503e9 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xca0c9987 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd500a607 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd5b1f155 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf9308349 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x852c60e3 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa7fed2b9 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd76d4d7f com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x19113a37 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1c340f7b ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2c3f9835 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x59c65c70 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x62d1f0ab ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6788fd7b NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbff79075 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd660d9a2 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf635095b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf97c579b __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x01071033 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x3ea48c65 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x6109f89e eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x658b2edf eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x895efafa eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x972995a2 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x9d7c22a0 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xa46bc7b8 __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xdc2b90e2 eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xf4835b9f eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x8715895c bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xf5e681fb cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0bda886e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0e085bff cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x140250da cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41e92b15 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x62437e0c t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x63db66f2 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65655cec cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6cdb7355 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x75be77b6 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9762b129 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa542a1eb dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc6396cd2 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdea0c67a t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe0611b53 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe688f3ca cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf8e5fdac t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d086c8c cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x149bf551 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x21143226 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x251a295b cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3273364c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35c0015d cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35d51ca9 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3800a649 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b8d2171 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x457ca753 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x56edb0f5 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57707dfc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5c922a18 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x604a4bda cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x694515a1 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x754ab508 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7ce2dc4d cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8e9b86aa cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x927dc347 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x97fa266c cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x97fb41e9 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac0dbcbb cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaed9933b cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbd49e50f cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc63ed12d cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc7a25a9f cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcbd112c9 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3d68c55 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4fce569 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde7d0dc3 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1b85cbc cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe39a7613 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedad6185 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe333f6e cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6fa49611 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd1d99ded vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe1412457 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe85b4b85 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf38a2673 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xfbb1055a enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x1c20d810 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb1341c75 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01860a73 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x072381c2 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b17290a mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1727a51a mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b5c3008 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b9ccd53 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31784679 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39b8a8b5 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e33f13a mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f311ecc mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4311610a mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d7a6dc6 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51f0a61c mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5932d898 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64d229c0 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x664a13c6 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b18e177 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cd0c5ba mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e3c3a28 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fc515f2 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8082fc22 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8992be46 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9021f09c mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x916a7e3b mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93defcdd mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94f64a35 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96161d29 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fed77ba mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb31e96ee mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd95b4fd mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7e5bacd mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdebd5b5a mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7c3996a mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed587be9 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf88ea1ba mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8a9f075 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcd944fa mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdfb6030 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x046ca1cf mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x057cd256 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14587ad6 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19ed30a4 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ddc2d7e mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25ca0de7 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2600e546 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26a0dba2 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fbb0610 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fbb950d mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x300bc940 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41c0b502 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x437d0c54 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48281673 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60db4901 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6132c663 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63266ec9 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x720ec259 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75a36553 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x792bbaae mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ba79532 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x819c6c75 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92c7ff3a mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9304fcfe mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x949842e3 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96049b91 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb17d33bf mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9f4753b mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc5306d9 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4cb7dcb mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc941b18a mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf18c9d1 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1891d5a mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd33bad55 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd975e120 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc16cc38 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeef1ff83 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8f40d4c mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1d0313b9 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa25fa2ec mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd010cfcc mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1f3de8e mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd5015b20 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe0421b2f mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf1271394 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xae79abd3 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3413b967 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x548964cf hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xabd0917c hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd34699bc hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeb9c3b91 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x06868484 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3a7aa884 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x69409d39 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x91b79b27 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x95cdca9d sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc0403e5d sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcc5b0baa irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdd56dbc2 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf4f4dbdc sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf526099f sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1cde0e94 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x3ac1859f generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x4fc2e5c9 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x5472a8a9 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x5ffcbfbb mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x70497818 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x7287b080 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x96acc3ed mii_check_media +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x0d25a8fd alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x987160bb free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x3246e396 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x30f85aba pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3713a03f register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x8506b114 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x8bb0ab00 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x274c220e team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x29396176 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x62496645 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x84902916 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x9e262640 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xa7fb17a9 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xb3276c57 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xde8741fa team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x36341903 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0x54a6183d usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x7f5b2b3b usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd49ef27a usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0fc575e4 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1afdf3c3 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x449dcfea hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6015ece7 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x71129393 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xac0a3529 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb7b041c6 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbc822470 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcc43b393 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xff5198f5 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xffdcca1c hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/z85230 0x05cf3258 z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x07ce16db z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x1762a49c z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x1f8478f9 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x420646bd z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x431b3674 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x54cdb954 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x6ae8a1d1 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x6b37ab47 z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x8587c2b8 z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xd6a72c62 z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xedeb5021 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xefdfaae0 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xf88d548c z8530_shutdown +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x43569690 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x5365b280 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5d77c919 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x7f597af5 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1b39057e ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x209d4756 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2e424835 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3ee6f09e ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x57904aeb ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8ba7add0 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb4f5a604 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbf8c7f90 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcb234d38 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcc11fe65 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe0f3e87c ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xec71d61d ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0016220c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x185abc0d ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1cb6a64c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2cc51d55 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x53dc1d93 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x685750dd ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6f46b918 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x73236928 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8404be4c ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x931e5282 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x93cc42af ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaa9103bf ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdc88f261 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe0ca33b4 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf0005c62 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x19a3a0f2 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1d0a0901 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1d6a97fc ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x67cc2ab3 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x69a3e929 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x86968570 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8a657079 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa8acd11 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc5ff5fb9 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe3a235c2 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe93a97e9 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0771ef9a ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x21ba73e0 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3ac29005 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3b91616b ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3e38fe5d ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3e52a8ef ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3efcb57c ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x44b6fc9f ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x454c1375 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x47e7db41 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5b6efef2 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5b88e753 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5c883116 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x677bf53e ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6d917496 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x76bec971 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x98a1ba5a ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaed35019 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xba05decd ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbf779dbe ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc777ae13 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcd61a20a ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdcd2baaf ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03701e90 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07b908ba ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x084560e0 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x131a0874 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14111d88 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x179f9c4b ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17d3988e ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a853d2f ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b498e9a ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ca18ab0 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dade9e1 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f1bfc05 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21117e1a ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24b08e5a ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27c5dedd ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x314ff32a ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34b67ede ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37a0e671 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38b569f2 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3eb28044 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4028380a ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41ffb93a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42b95f7a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x480afb2c ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c32fd38 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f311cd1 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52a44f64 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52c87bee ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x559b3cbd ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58b99f1c ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a5a611b ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x629b31d9 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65559c2a ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x685be123 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69175bf2 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ca26064 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7086875f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73f00967 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x761db2a2 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77fd77d4 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78a7d10c ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e52adfd ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e52c49f ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x801c9758 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x836045f8 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89c3fe79 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b96df26 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95a44804 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95eac92e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97340929 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9afba6cd ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b6ffbaf ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d68ed8e ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e767597 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9eb4be28 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f4bfbbe ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa85e9a1a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa63b87c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaec46ac7 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafc72a43 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb02eee0b ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb499ad03 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7fca1c9 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb898d4d3 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8c283cb ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb95176bb ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbc2c7f9 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf937751 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1bb15fd ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc32bc4f3 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc66140e3 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6935c3e ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc850fc2a ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8fa2acc ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc518343 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcddf0d1d ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce912e67 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf58f2cd ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4b5dfcd ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd74a8993 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd75c2d51 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda693261 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc290cdd ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xddd16443 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde5c015f ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1fad821 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe256ec9a ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe38f638b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3987674 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe48f7949 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7285cac ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec1a66d6 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed414963 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1065a3e ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf423e0bb ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4aa2e63 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5fe7126 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf61f540e ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7349ec0 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7eb95a2 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8a996ad ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfaee91f4 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd6f6218 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe175cfd ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x65ca72e9 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xaf75994b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc4dbf368 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0650e5d5 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x133d1ed0 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x207947f6 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2eb20021 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3566802c brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3fe37e37 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x559f62a8 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb6fc57c1 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbad2e2df brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbecf2e51 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdd262bc7 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe06d2c42 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfccf2f02 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x121ae3ba hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x21738419 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x27770187 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x27b6e9c1 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2968a8d0 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x41073e46 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x50324db2 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5042742c hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5dffb62d hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x66fcb5d9 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x67274dc4 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6ab7cffc hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x75212748 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c1b9de2 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8aa14579 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9a070c60 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9f8ce1fa hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa3c2342d hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xac8744a9 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xba162eb5 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe2814012 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe68f7c13 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf40687af hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5a723a1 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf7b1ed9f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x028ca8a8 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0662e662 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0c1a4c85 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0c23d83b libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1cf3ce36 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x34351be2 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5418ecf1 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x55908713 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62c5bfe2 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x67d86870 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7306f788 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7ca329a0 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x81357a30 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x940879f6 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xada0d45e libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb0ff7da8 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xed9576a2 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef3ef0ff libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1d21791 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf67a541d libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf6fc3cca libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01738747 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x017536ce il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01ae688e il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x042d4f3d il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09adea9c il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c65ed01 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d3439a2 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e5081f1 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ef2e6d1 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x190b32f1 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a83bfe6 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cd4f66b _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20669077 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21553719 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28f873ec il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x292c5b56 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ed90635 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x340ed612 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3af11ecc il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b369d16 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b975cfc il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dc38976 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e4a4406 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x403cc02f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x446d8da6 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x457ca802 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46b8227f il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a05fcc4 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ec3ad68 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52ed3499 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55c24c35 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57af8d32 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b54297b il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c979016 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f3f7197 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x621fdbd1 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69777902 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d577a44 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73047278 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7443f808 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x749d7a9a il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76a54a53 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a80b55b il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84349668 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86835201 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x87e48960 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88dfd125 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88ff4cf1 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x921166a9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93049247 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9541eca6 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9648bfe0 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x968060b9 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98f66ec2 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9988ce71 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aedc2ef il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9af70861 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9efea13d il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f1d02bf il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa23ab190 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa720499d il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8516170 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaccf6cff il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafabfd5c il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb14ff318 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb218f688 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb564a606 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb697cba1 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc61402e il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe37f1ce il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc26ac8ec il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc50d163d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5b85479 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9a358ae il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccb2b2f4 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf3df18d il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfc601a1 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd144c8ff il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd17e5a35 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1b61740 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2460a20 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd40bf8b5 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4f3847e il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd521b18f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd69ca14d il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9f99ca9 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde44ad38 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf749797 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1ca0d42 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe21cf7f6 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4e7349d il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeaa4671f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedb009b1 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeee4bd48 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefd205e7 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf57622b2 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa75255b il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb353c6e il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08c6664d __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4379786d __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x95a8ab3c __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xa2b6ec39 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb69add1f __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xcd60e86e __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xd4f50457 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0d939cfc orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x101ef094 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x35820eb3 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5996d58b orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x602cb4b8 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x650f3ae9 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6e7ed9c4 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9ac53edc orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb2e9a572 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbbbd5c5f orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc35e13ee orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd01deda5 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xea7a8a2d orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeb75471e free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xecdc1a06 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfa7c711b orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x0772efe6 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x051d2275 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x057a6b2b rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x05bebb05 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x099a0251 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x153f1947 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1cdb3792 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2222cd7a rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x23433ed5 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x277c0467 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2933dd89 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c850d6c rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2cdab5ae rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3aaec567 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x40ad8f6b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x47d3b9ec rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4b13a665 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5d79bcac rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61b143e1 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x664d8b39 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x69eeec12 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7a9d727f rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7b7a4e15 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7c5eb3b3 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9c446c69 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9d12e649 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9e5c0d68 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9f848456 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa28389de rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xac52945c _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb9707880 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbf641bc3 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc4d1dd9a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcc411710 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd2833f08 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd2f1fb7c rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd91e1dce rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdd306f64 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe162c268 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeddea4db rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfcea3eb6 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfd3d7d36 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb0ca2f2c rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xbd577a2b rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xc1b506a2 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xfc716509 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x230438bd rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x426b25e0 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x93dab227 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x9da541bb rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02082b1c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b1f0385 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x10aa28f1 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x140bdc07 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x197b2d3e rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1e098060 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x32449592 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x36b6d375 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x38b1891c rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3920957d rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3ba37f78 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x402d42c4 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x482b790a rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x52b55381 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5faa5ef0 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x753a077f rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x75be9325 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7f201ed0 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8458f130 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9b3d3fff rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaa9cec32 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb9de7bd4 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb9e7c8fd rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xba0fc4a8 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc7c7594a rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd18eb142 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe01ef9c5 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe50dde0c efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xedc5ec33 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfe2ef302 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1985c00f wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7e8306f9 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7fe86a41 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xad6b9614 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x0e892879 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x4d3468fa fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xcd3b074b fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0x842d6798 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb4a848c1 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0b8439f4 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x7c82fbcc nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x943ea9dc nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x92e6af2d pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xa937fac5 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x79fbf647 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xce851338 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xea7bc891 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x127aee82 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x12c2c0e7 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3d778304 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5e6d3530 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6d408a3f st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x91758a50 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x98ff7c9c st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9b888606 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa7123ae4 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf2bd4970 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf97c015c ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0aa744b2 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0e63f44a st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x102ba61d st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x10512bc1 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1b139e5d st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3df3f151 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x57384d4d st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x59a8afaf st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5a3ed5fb st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7c625aec st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7fce2d37 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9077f4ef st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xadeb6edb st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcc64b57b st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd107b57b st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd13a3866 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf03c86f7 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf8249564 st21nfca_se_init +EXPORT_SYMBOL drivers/ntb/ntb 0x0846ff6e ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x0969fab4 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x289cf102 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x56f85ae0 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x62ad9172 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6dfa39c5 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x853a3f84 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xba4b0e0e ntb_unregister_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x7402dd59 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xace0fad1 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x36cff03e devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x06cad498 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x08412a00 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x10120912 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x1204625c parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x1617fc5d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x30fde3a5 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x49d7fbdd parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4abaeb9c parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x507048a9 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x51e70792 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x53a20060 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x59185cfb parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x652fd6fd parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7d7cf5ef parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x7ee08724 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x86f5e485 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x8997361c parport_release +EXPORT_SYMBOL drivers/parport/parport 0x8c8db1a9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x9d21f9f0 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xa6544055 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xae291f7a parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xb3383c77 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xb4960225 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xbe38cc36 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xc640aabf parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xc6afe9e4 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xcad7bd70 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xd83ae84b parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xd9b6ef7c parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xdc742310 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xee88242f parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xffdc7adb parport_read +EXPORT_SYMBOL drivers/parport/parport_pc 0x92b13818 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xde2f20da parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1bc6678a pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3274ac70 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x331739f1 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x35de3d0c pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x42bc13a4 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x43f4e4a7 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x586e7f78 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5f0e5c48 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6946d85c pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x695b02ca pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73deb1c6 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa1f07002 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa52b0825 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb3e9bccd pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd0dd3812 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdc1f6c86 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdca414ea pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe7f1f3d7 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf7471a27 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1368ac8d pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3b9820fd pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5a214e71 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x61070b54 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x735d5d21 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x738f0e66 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x95a3f06e pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9a21b3d4 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaddac92d pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcca26b1e pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xefa62aee pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x2e874e0e pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x4da8c125 pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x603e0a9f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x64bcf1d1 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x82682e63 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x8f840d28 pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x2d8bfb48 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x3c31a837 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x431c6663 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xcdde393a ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xfa53d730 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x0f9c90dc pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4d52806e pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x5574f530 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xaafe33e6 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0a571b1 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0af8104 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe2eb17e0 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf64494c4 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xff3e8796 pch_ch_control_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0ef79f4c rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2fb69b23 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x44bb8053 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x592ba1a1 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97e13127 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb721a9ad rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc4daea62 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc66dd9da rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe98f2067 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfa69c40a rproc_del +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xac12a67e ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x26da6d9e NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0xf566b634 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x032ebfb6 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1b58af79 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x59fa1511 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xf6d5ba60 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x19933c0c fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1ce6a5d8 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2811dc2e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x61aa02b3 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x66b3f664 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6e8fea30 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x78b457ec fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8ff40574 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb5434d75 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbaaaea77 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xee14704e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfd02b7c8 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02a0b3b0 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x036cde74 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06f0bf2c fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x093d36c2 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0bff36e2 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c9a7691 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0dd159ec fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11897d36 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ee77ed3 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2aad9fbc fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d08d496 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d5e3f25 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f7e5a15 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34a2e669 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37121294 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x395bca75 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ab1ecdb fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b482f51 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e9fe74d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x431ac722 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x48255adb fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56dc6ec4 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69eef59d fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bbab69c fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c357d1a fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ee7d868 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70027e16 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x715c17d2 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a137ee1 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a6af65c libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7bd1d98c fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83d8141a fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9144e66a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97bf1307 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9971d47e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3d5a959 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa33ad7e fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb61d9106 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbcc4298b fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc6ce12d4 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcd372e90 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe096f715 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8b03d88 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0312a726 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x16e5c42f sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6f010e35 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8589ecf3 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x549fb0f0 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x01b6feab osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x023fb849 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08332ce4 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0e0ffafd osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13eb576b osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2537b962 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2f489863 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x34ace05b osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39bcb1f0 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3bfdeb93 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3cf08453 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x44f914ab osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x46d495bf osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x47286294 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e4fc631 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x512d67bd osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5407395f osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5a785eb2 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6387b1da osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x766539ed osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7c1c7d1c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x989fe3cc osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9d07c49a osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f325d33 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f9e90a4 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa13fe9aa osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa32ed536 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa683b794 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe2e6c2e osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb5c41ad osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcd872fc4 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xce14ce0f osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd349223b osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4edd33e osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd99959c7 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfce83b80 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0d43970d osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x129c13f5 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4cb05be5 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x77df4ef1 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd368adcf osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf43516f7 osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x11b3292e qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2147f53d qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x24339246 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x38cdab88 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x56651961 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5a1f2173 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5ec906b8 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa86e69f6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb3b78960 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbeb983ff qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd1f26222 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xebf4e040 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x01cc7f6f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4396d089 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9d896d1e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb12c9194 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc581c293 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe6867be9 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x1c8160c7 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x1fbf7b0d raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd2a6104d raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x03f20a4a fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0564c204 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0f049580 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2bc17cb3 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x33ddc50b fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x37593b1b fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x620abc4e fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x62285f3c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7bf0b4e3 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9e9fc13e fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa4c2bf1a fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd0d2a1e scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf85ff635 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2af86eb8 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32657729 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b5c45ba sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f51c9f0 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5560d412 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5791c99d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57a61c39 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57ff5736 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5949a4f4 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x78bfc2d6 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x792bf347 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ca06dc1 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8b5aa1a4 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f6624c1 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x944777a3 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9a2a589b sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9ae48a8f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa8e66ffe sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xabd55999 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0c78901 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc8190a85 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc21a4b2 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd620b293 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd812de4c sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe23a27dc sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe946d5d2 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee46d2fa sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf8d2d2d0 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0f098e51 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4bbff64b spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6b735578 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd658eb8d spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdb82032b spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6095c08d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x89deed0b srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8b1526c4 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc4d08a8b srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4102a2b2 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x65256764 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7e3ed2fa ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xaab14b7b ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xad7ac973 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd5b5dd2d ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeee11350 ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x01eb1f9b ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2d98a8d5 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4aa4e7f3 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x4bee0519 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x4f09e8e7 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x57f18aac ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x69d0575a ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x748f7ace ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x79b6c6cf ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x7ad1bd15 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x80792042 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x8b5626f3 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x9193b30e ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa8441e1e ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xb7ed812d ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc302c311 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc9e236b2 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd03f5e53 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe9e60a6a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xf3ba8fce __ssb_driver_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01183d49 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x197139af fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2358df0f fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2678d43c fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2c1ea94f fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x367ddf5b fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3c933f4e fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x43d4b6d7 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5da47338 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x613d2030 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x64819cb0 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x66bb2e63 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6cc9696d fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x70a7d8e7 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7362d7ac fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x76469860 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x96365485 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x99b05720 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9cd91d76 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9fd68e6d fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbb490cdf fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc00bf26d fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xce2a2625 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd567ebdc fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x73ec4b9b fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xcb108465 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x222b5f88 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x2ddef2ce hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3aa98793 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8ba32ce6 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9ba28c3e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x86f8451f ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa02f73bb ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x13e7f4e5 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x530df814 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00983890 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x054b6435 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08dc2aee rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cb97cb8 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0dc8cad4 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1086311e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x17df4609 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19c507d9 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19cdf1dc rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1abcface rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21331a47 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b4a598f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c3e876a rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31270449 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3347dc8e rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x368233f7 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x388bcbf2 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f67c8b2 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d9ed37f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x54fa3af6 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59da496b rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d99e1d0 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e7f07f4 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x787b051d rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83dd5640 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d569fb3 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8dd8b382 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97107cc7 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b9171f1 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa508726c rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5c36020 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa78a5756 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xadd16461 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaed5a80c rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaf669ecc rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb435a2fd rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb168a23 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2660007 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc46cb0eb rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcaa778bf rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb334195 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd690728 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd1b14b5f rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd719a9c7 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc124df5 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4eb4b39 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe63cfecb alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7521e12 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed350540 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf19fc393 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bd58147 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fa93cfa ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x133863e6 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1665eaa2 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f45eb02 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x250baf07 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a1b56c7 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x301b2b4e ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37a05559 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37dd2bb1 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3954d9b9 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f20bd25 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ffd53d4 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44aac25a ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d08d19f Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e215d77 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51c33cbd ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x52c8d220 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x570765fe ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59fb05ec ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cf5307f ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6540b4e6 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70531e3b Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70a54f83 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74720a30 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7af61448 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7bd98893 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f192efa ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x820fc2f6 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x844b77e4 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x925c0250 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x949f5c77 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9620bfed ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96b747a1 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x970069a9 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98cbc771 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9989d918 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xadb9eb24 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb357bb0c DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb772f85a ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc2a4b85 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc822c10 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbddba91e ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbde8e822 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc383abcc ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc54bce46 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7e0ce1e ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd188400 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe183457b ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xedfb8927 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3ef43c7 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6be14af IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd1cf132 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ed09c83 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2232bd14 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36789eac iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3907707f iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50173a4c iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5102fdfc iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x535a73d0 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d0cab66 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5f533c28 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x67036d63 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x673ce869 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x71f9be02 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ccdb13e iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7dd79e28 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x81fcc44e iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89d234cb iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8eabc843 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9341ac25 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95b34595 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98eb23dc iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc32a9e53 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd8623e6e iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb9a576a iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe395f892 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe43e707e iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6b19b7c iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe99a94e6 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf3aed827 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03c9f333 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f7d73ce core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x11df531e target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1396e296 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1fd28c76 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x202e56da core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x3015a6bc transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x30a5a1ea transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x30ad9841 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x30f92e78 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x32a64569 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x39161c52 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bebdb5d sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x3fdc1ffb sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x44fbdaa2 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4aa373b3 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f1141fe target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x51a8ec74 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x5351c097 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x54b4e393 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x54f5dcb9 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cdbf973 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x69762dea target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bbe1739 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x71ef2290 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7368efc6 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7387d455 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7681396d transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ac958f4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d2d8e0d core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x818b6607 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87257167 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x88d4905a target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b704915 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f97b6f2 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x9313b864 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x97bcde91 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x996f25bf core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c5a8c01 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xa177cce2 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3925803 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5a1ece5 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9eea0c6 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1064f02 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb17d753c target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6c412f1 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb97b8a4 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc00448ea transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2fc53a1 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd03d606 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd98b16c8 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xddc5585f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1e878d7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4158153 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8d90f58 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8f4798d transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb147873 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xebc7aa35 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xebded25d transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xed584a97 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf2fe456a target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xf692dc44 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8539741 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xfcafa45b sbc_attrib_attrs +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x53bf8d0c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xa2722af0 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xe0c1890f sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2a773f22 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x534237a6 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x59ed37c6 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5c9528d9 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5f6513a5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7a61a167 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x951a9511 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa07cecf5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xac4c76b5 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb0fed215 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb83a782b usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb899b0bf usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4094cec0 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x99784f0e usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x295ca4c3 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x54b9505d devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb97ca0b7 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe61b2496 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x297bbd8d svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x49d5d375 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6100301b svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x65c45631 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa52c3a67 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc74f10e7 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfb560a59 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x93c10a7e sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x0006f83d sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x03d55603 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x05f42db5 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x972c3072 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x804e7750 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8c6ec48f matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x9fc99a7f matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x12cb69d1 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x504c73a6 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9b0741fd DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xd82e9029 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xe795fac0 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x8efdda5b matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0e3c1539 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9619cbca matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa954c454 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xce78b67f matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x706bbbd4 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x7a1102e1 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4240465c matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4336ff4e matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5803d801 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x63e9bd43 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xff5587e6 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x6623c240 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x2e24938c w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x36e73e7f w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x55ec5b52 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xbf2bf719 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6f698f9e w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf07d5d6a w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x0af7c1c4 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xd9d486b4 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x4fecff22 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x5888fcec w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x96913278 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xa564895c w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x14a22706 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x18adabdd config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x53ec62d3 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x53f2e7db configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x54edc6e5 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x57b74be0 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x5c0a3dc1 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x843823b9 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa0e37a91 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xd363e259 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0xd72f279e configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xda3087ff configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf238781b config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf50c9d36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf8f9fee7 configfs_unregister_default_group +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4457898c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4ef5f34f ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x7aa579ce ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x7c56239b ore_create +EXPORT_SYMBOL fs/exofs/libore 0x89ffeb32 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9b4fd9cf ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc2e0839c ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd2acc63a ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xf364bb6f ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xfc36eae9 ore_write +EXPORT_SYMBOL fs/fscache/fscache 0x04723bca __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x0cb59d3e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x0d66bff0 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x1f3cb1f4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x29dd8d9a __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x337fc217 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x3652b733 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x40fc9576 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4138791a __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x477e07f1 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4e33705c __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4fb477df fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x6632ce3d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x6da54bcf fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x77cb7542 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x79ada0c3 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x84acc9d1 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x89b43e5c __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x8e1034bb __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x90cd96f2 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x978dc39c fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x98226b4a fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x9b7c7be5 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xa95e5757 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xa967f7d1 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xabf53e95 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xb6917aba __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xbbbd4fe9 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xbf110c5b __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xcb5c497c fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcb864d11 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xce4abd38 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xd83d2576 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe999c9f7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf8c957f5 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xfb90a589 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xfbb121a1 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xfbee079f fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfdeab993 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1ee0ffa4 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x22a73963 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x3052208e qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5cf63692 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6b91e9bb qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56930467 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x6a059eb3 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x2842840d lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x99130b11 lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0xbeaa926c lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x68ccabd9 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x82df739e unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x35cdc781 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x4a60c5fd make_8023_client +EXPORT_SYMBOL net/802/psnap 0x51e85509 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x8337afde unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x04147f5b p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x04bd5b1f p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x0761071c p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x0b991077 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x148cbd3c p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x19468218 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x2427d159 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x28fb82d8 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x2f4c5fb9 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c0c51aa p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3fa1323c p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x4152a7bc p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4328d8b7 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x490e9170 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x62a1aefe p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x62f0236b p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x69c2bd99 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x74b3ef02 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x8f0df84b v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x990a1157 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x9f5f0127 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xac1dc751 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xad7a1985 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb7340496 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb76692b3 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xbe3be90b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xca38bd2c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xcd241275 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xd45ded67 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe651b474 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xec191ee3 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xee08b975 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xf136a53a v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf6764c3c v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf6bf3f37 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf98f6205 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xfc42d6c0 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd994d29 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xfe767faa p9_client_clunk +EXPORT_SYMBOL net/appletalk/appletalk 0x2d46976b atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x40efcedb alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xb0fa1a7b atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xeae2858d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x038da6ef atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x0b23623d vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x0f98ae4e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2ff0c552 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x492c5d09 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x5970a505 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x86ba7056 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x898b031a atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x8ddbfc86 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa2a17932 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xa51ff8eb atm_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xba222e9c atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xc202c2d9 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xd518c1d1 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0b22ee11 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49a15be5 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5d7c737d ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x62eb0abc ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9f974ec6 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xddf9ac8a ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xe1470600 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xf96a62bd ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02cd44c2 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a98fffa l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x117d8e40 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1af2cfb2 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f43b99c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2114bff0 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x217efd39 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ac49b22 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30f61c83 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3249a64e hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x363f45ba bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4f090e16 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x59738985 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x603f27c6 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x651ddcd6 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c7e93f8 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x768e7fd2 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d698954 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7e79b4c7 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86d7d795 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a19ec55 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f0ab9eb hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f2111f2 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95195a67 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e20b62c __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa092588a bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8e01928 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa98b33c2 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb35428ff hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb53fc681 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6ca8d7f hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xba1dd52b bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc639fb19 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5b96a94 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd88364b4 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdac25307 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdd4d49fc hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe180bba5 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe292363a bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf37e8c08 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff0a59fc bt_sock_reclassify_lock +EXPORT_SYMBOL net/bridge/bridge 0x64a19dbf br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x66e37a94 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x731e9ef0 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd10cd609 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x37cd6646 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbb53cb6b caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xc4a8129e get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xcf6aeaea cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xd096a131 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x0cce4dac can_ioctl +EXPORT_SYMBOL net/can/can 0x186a432d can_proto_unregister +EXPORT_SYMBOL net/can/can 0x46a98549 can_proto_register +EXPORT_SYMBOL net/can/can 0x9b7502c0 can_rx_register +EXPORT_SYMBOL net/can/can 0xe2fc80bb can_send +EXPORT_SYMBOL net/can/can 0xe6316835 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x052d87fe osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x06aa2ba8 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0f004dc1 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x0fcfdb8a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x11abf6f6 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x123fa7e8 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x14f58a17 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x15ceb397 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x28d02afb ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x28dbe29b ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x297d0646 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x29b0c3be osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x302b30b1 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3297fc0c ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x33ea9714 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x34da2049 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x355c2681 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3aeea9b3 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x422fb5f9 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x42eaa71c osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x451fb3a2 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x472f262d ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4c29fbae ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4e6c3847 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x4edacd70 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x4efdbe60 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x4f4bf8d6 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x535e99e7 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x597bd1c8 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x5fbd9dbd ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x6030d4f9 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x65bb800d ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6ba71d1e ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6d07e18e osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x6deb2447 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6eb9648b ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7ba396f1 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x7cd4dd85 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7d5368dd ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7f483367 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x805f5a71 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x813ac97d osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x824a6775 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x845cc840 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x8829f219 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x882e6bd5 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x8837e021 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x8e715bd9 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x93dd3306 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x953c578e ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x97ffe5ee ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x995ac83e ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a57c6fa ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x9c5b7a42 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9e9ef0e9 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa02a67cd ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xa172e874 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xa1be7acf ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa711814c ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xa8795237 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xa8c0fe9c ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb3f8bb46 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb48b7500 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb690d7f5 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xb7ce5f41 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xbaf5f405 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xbb17e7a6 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xc1d0cf0b ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xc31567ea ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc80c89cf osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xc904e973 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd24d7976 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3f47a9b ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd43c6d2d ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe5a8af86 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xea6845f5 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xea988e7e osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xedca7aab ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfa2683c1 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xfa885b01 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xfd341e1a ceph_osdc_set_request_linger +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x02b4bcf5 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x3cc81092 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4c55cc4e wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5a1c6118 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc355ae34 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcfee0957 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd13bdee0 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe6f869e6 wpan_phy_new +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x5702cc14 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xeb84f1ff gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1d738f20 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x446cb088 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x61bc105e ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xbacab98b ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc528a94f ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf0248ac4 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6b808ae0 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbedc668d arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc3227de5 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x05dda20c ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2e653a81 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5dad9ed9 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x9050262d xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xdfe16a65 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xdb12be4c udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x920cc475 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb339dfbe ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcdebdba5 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd820367a ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x084749e4 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5c7c83e7 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x790268d7 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x274e2114 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x8270f100 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x139c4888 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x248f76a1 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x132cab53 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5039149e ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x68542749 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa195720a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb18ea5d9 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc1cbec59 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf8776dfc ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfb4ac9f3 ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x1989428e irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1d8460f7 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2bf04612 iriap_close +EXPORT_SYMBOL net/irda/irda 0x325c3f4c irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x40fc0820 irlap_close +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x51e9a4a0 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x571da28c irlap_open +EXPORT_SYMBOL net/irda/irda 0x5a8826c0 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x5aa112f0 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7c4a3148 iriap_open +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8771cddd irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x8e74de24 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x917de168 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x92e971cc iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa3db1c30 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xa606d19d irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbac97572 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdb5e5caf irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe071a130 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xe63e17e7 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xeb728e47 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xeb76148a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xef5a53fd irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf8808b81 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xf8ec68ca irttp_udata_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x36949846 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x03b8c581 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x193d1cd2 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2495efeb lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x346a50ae lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x5e2542bc lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x616239ac lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x82e20796 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xc3b6c1ea lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x0ae568c2 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x0be55033 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x13113b75 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4e0f2534 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5806ec73 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xcb932ad5 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xd176bef9 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x03a0be34 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x04728b23 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x0a130ace ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x17032720 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x1add7858 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x1c685a0c ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x1f6df5af ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x230f9372 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x282adcee ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x28d69941 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x2e51d8f5 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x35658dfe ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x37086d0f ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x39627ca7 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x3bffbed5 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x41d6ad35 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x42ed4c57 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x4619f805 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x469cfb60 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x49a93dde ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x4b686ce3 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5f8a5d38 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x67422e50 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x687f461b ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x6c9fbc92 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x72536956 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x75cb6f3f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x75f74d0c ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x76419cb9 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7801544f ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x79fc39b8 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7be2e681 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x7c039483 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7da05f37 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x7ebb6b33 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x84eb730b ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x87fc4843 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x885a7156 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x8953e465 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8a6d73bd ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8ac18a3d ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x8d429713 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x8e8bc0c4 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9411f169 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x943d988d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x94c1a733 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x965c89ee ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x98ac8d86 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x9c22b79d ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xa14a0709 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xabd7fe01 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xad62535d ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xae1d7df6 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xba4e9a67 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xbb9d9735 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc094d474 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc0fb100a ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0xc1c5f4c3 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xc1caf7bd ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xc963b49a ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xc9f8f7c7 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xca0a2433 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xca36db92 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcac322b1 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcb24def6 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xce09dfb7 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd91849b9 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd9a8b1c8 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xe284e234 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xeb6c3e41 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xecdbb032 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xee69cfaa ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf4900bf6 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xf49e2b87 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf733f936 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xf8461aa2 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xfa1e04b1 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfbb92518 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x4016fc7a ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x4d2d5152 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8689a796 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x9bd1c2cf ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa35dc5e0 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xcd4590c2 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xce0fe4df ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xd7651a94 ieee802154_xmit_complete +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x111ea975 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x18278b6c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x23357fbb register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4c3eef0c ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x598562a2 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9e983f0c register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa2e52e14 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xace1c5bf ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc4db0d55 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc65de166 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xceea6cf0 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd02a510d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdb03ba3f unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xff1495b7 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x3ff15b06 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8d40729d nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xabfccbc8 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0a248b5f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x583e0831 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x8389b8dc nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xc245486e nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd6f660dc __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xdb0e4b48 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x108fa048 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x117c93a1 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x11c171e1 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x169cdfef xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x2f9acad0 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x590d11c1 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x88a5b908 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8c3a38c8 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb31d631c xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb9978a72 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x0ccfded5 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x101e85af nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1ed6fa70 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x202f859c nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x44a559bf nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x4995504e nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x562cd738 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6014f0fb nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8246c365 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x901c9611 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa49988da nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xadcea25e nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xba332da5 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xba9e7363 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xcab3bc2d nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xd123c9a2 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xd5017e48 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe35aaedd nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xef5dd5e5 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xfb914a49 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xfdc26bb1 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x02f0cfe3 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x1d6593ee nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x246894b8 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x27e88f66 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x36961559 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x3fa8115f nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4f68ef5f nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x624634f8 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x641a22a9 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x65625773 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x6bb5fd56 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x70bbfa45 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x7e9510d8 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x81b91fad nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x9a7dad1f nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x9a7dd8d7 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x9f00976c nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa4501214 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xa89da218 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xab5f8aa7 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb9db2792 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc095329c nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xd6a4393d nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xe1d11d46 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xe1dfb5d6 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe8e89175 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf0e544b2 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xf5c0cac7 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nfc 0x020f1a14 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x07045fe1 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x25e9d93a nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x2b6c6ec9 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x4b24e79d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x5dbc49a4 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x602a6acf nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x6c29d1b1 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x6f341923 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x73c66458 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x7b98ff08 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x8057d13b nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x8e7fc7f3 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x8fd59f16 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xa6b3b9c6 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xa7071e6a nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xabde4b8b __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xba843ad4 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xc4be3453 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xd2256a42 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xd7341619 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xdd8bda75 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xde3ba5d7 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xff43529d nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc_digital 0x055cf919 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x314d2b4f nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x39ce79e4 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x69f29ad6 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x0811522f pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x6f85aeef phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x775ab06e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x7afef49e phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x92cb6d49 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb4314d8a pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc1593df5 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xd7a06468 pn_skb_send +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x230e9d5f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x30c5fb7d rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x401a37d8 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4219dcad rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x49a28529 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4b22fbf5 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x56359735 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6aa0fbd1 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb2235dc0 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb41fd6b2 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbb1e2644 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbed39ef7 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcd0b9d4c rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd2c324de rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe11fa3b3 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/sctp/sctp 0xbbc2fccf sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x7f6cf34b gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xad3c469a gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf82af2c8 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x55caeeb4 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7663199c svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xa56a3631 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x0a779a8c wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xfbd00239 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x041c2b34 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x04fab640 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x05bf866d cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x07340223 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x086cc5be regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0d1be654 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x1331ae11 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1861a324 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x194c8712 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x19726245 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x19c6e23a wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bff1a5e cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1d811d3c cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x202d659d wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x25bb31ae cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x2d818026 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x319cba56 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x358a518c ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x374082d1 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x398f6653 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x39c23ee3 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3e4bb7ea cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x44b83bd1 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x458244ba cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4eccb072 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5fc1fdf2 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x5ffdfd71 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x6314400e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6369b39d cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6aef80b9 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x6b87d6c9 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x6c5732fe wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x6c9b0368 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x78fa9a99 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f71f46f ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8149ea28 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x879417fa regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x954261ff cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9711684a cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x980fd91e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9b00c150 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9be0b45c cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x9de81115 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x9f1d23c0 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa232eca4 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xa4acb1c1 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa4eb776f ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa6b695fd cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xaa7bc439 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xabd66603 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xacbaa0d3 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xaed92554 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xb04851b2 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xb10f3f8c cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb229ffa6 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xb5a5f23d cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb75b7b60 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xbd91f24b cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbef3d322 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc8f19e8b wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xd2e991dc cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xd3c60f7e cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd442ae24 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd58d4e2e cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd9c4f0fb cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc6a20bc cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xdd5603c4 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xdd95b88f cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xde1d8f9f cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xde998e60 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xe05a116e cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xe0d3915b __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe780272d cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xea243364 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xeb270b64 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf035185a cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xf04bbde3 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf051229b cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xf388d2e6 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xf59dbfb1 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf8ce2b08 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x054178f9 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x19766782 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x292c3f2b lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x6ef8dd04 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xd0fc4aee lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe0acd2d2 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x0457ed92 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xf4ba0305 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x535cd342 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x61846f02 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x680023c9 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x793983c5 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x77e81a5c snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x73aab22d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04aa5f71 snd_cards +EXPORT_SYMBOL sound/core/snd 0x076536cc snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x0aa782d5 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x0ac9a027 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x0dc0d74d snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x0e7e21a8 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x139c9c4b snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1ebc41d0 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x20ba5427 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x219dd672 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x22fbdd40 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25e152cf snd_card_free +EXPORT_SYMBOL sound/core/snd 0x2653186b snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x290ddb23 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x29672097 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2fd6caa4 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x392fbaed snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x52b39fd0 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x5d333d62 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x5fe1ea90 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6622c58f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x6ac3a787 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x6b3760c1 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x6bdb9b1f snd_card_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x72efa2b4 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x7891d16b snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x8f8a410b snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x9471f910 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x9737a2ca snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0c8c3d4 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xac93f59e snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xae63efbd snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb9679913 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xbdf1e57b snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xbe400bcf snd_device_register +EXPORT_SYMBOL sound/core/snd 0xc3478348 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xc429c5b3 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd57ff410 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xd5f870da snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xd652203e snd_info_register +EXPORT_SYMBOL sound/core/snd 0xe39a5eb8 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xe5cb2d5c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xe8e200e0 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xf1610a0e snd_component_add +EXPORT_SYMBOL sound/core/snd 0xf37aaf3e snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xfca3a4dc snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd-hwdep 0xdc58be89 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00cbcd12 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x02466456 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x071316ff snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x10b06e3f snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x13bd128a snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1b054e4c snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x1b3cd73c snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x269dee62 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x281f790b snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x28a5d797 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x29334e80 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2ca06892 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x2dcf6973 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x31d7ef56 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x376f7002 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x3845f0af snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3a9ec302 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3cbb1eb9 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4c3bad6f snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4dee8663 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x4f1e0b5f snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5a524144 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x695d85ef snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x6d8bd06f _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7662839b snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x7d15ec5f snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x84362c94 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x99a09b42 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xa538b47a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaa25643b snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb119361c snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb123da75 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba814d23 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xc6ffb112 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc7c696b4 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd620220a snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xdc32eedd snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdc8a2c9f snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xe1c530ef snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xe2226935 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe634b3ce snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xea13a28a snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xebf2f074 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xef183119 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xf43d7ea8 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xfb88b76f snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xfc0656f2 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xfc209be4 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x12214e5f snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14db4fec snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1f3958e4 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x20fb3d3e snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x46fc3760 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x647ad4af snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6d869c36 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x797fac8b snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8003e332 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x980b6afc snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb5ee939a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd6f5799f snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdae1051a snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4cfa1b2 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf8993efe snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf8e1414f snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfdf438db snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x02a1e10e snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x18de9cd7 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x5a149a88 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x5dd21279 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x7223f01b snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x79f91758 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x93ca5d65 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xa4d21a01 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xbc200610 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xbc95eff1 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xc8619a0f snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xf77be53b snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xff32a07d snd_timer_global_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xf642c960 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0274caa0 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x23e36347 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4ebf9404 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5ffa8d73 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x61c12dca snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7823a051 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x84716c08 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb53a139d snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd29010d4 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x43127d4a snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x56bbc2cb snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x7037d3cf snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x71d40fee snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xca1c39cd snd_opl4_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0ddbf0fc snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x35c62079 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x407a3044 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5de654fb snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x90a764ca snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb01bd188 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb04e8291 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe23eef18 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf94eb5df snd_vx_check_reg_bit +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x06e8d36c fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e8d06d4 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18fadd33 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2d160e82 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32ac8846 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c139f11 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x43553a2b fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52672ccd snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x552f2393 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5a2837e4 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5bb319c1 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5eb14a24 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63a7e3ae snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64b78004 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6c8e487a fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6e6540b7 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x70569e39 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ae76cb0 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8e80f0f1 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8f4f6d40 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9596ad2f cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98930d36 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb5d58a69 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc6d42557 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd215bc9a fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd387c9a7 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd65826e7 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe62d93a8 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec23baa4 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf47dc46b iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc4193b4 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfd04e0de snd_fw_transaction +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x166c1ce6 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xb7b0088e snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x32b76cd6 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x57fd6a5d snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6749c071 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6d2e10ba snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6f21d5cf snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x71d6925e snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe31d2b30 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe33b8704 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x136d463a snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1ead8b45 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6490b288 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7f8c9873 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb43c0864 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xcc80e8df snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0f59e4eb snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x4abe159e snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x8930d157 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc7ff24c8 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x3865c87a snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xcce700d5 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2ef146f1 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5a434fdf snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x80e3e363 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x816451d4 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xae725fac snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xefd2e01f snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x63759e5b snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7099e049 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7614af37 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xabe64731 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb5714318 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfca259ac snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x9d41d06c snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xa8a87cdf snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x30c679e1 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x7ddf28c6 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x9dc1c5bb snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xc8b2a1bf snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xff9592cc snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0e70e97f snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2eabbc37 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x358702c7 snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3fed636e snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46bc0cdc snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x47935828 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x575259d2 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x59023008 snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x59903a19 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x714c76c9 snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x745a7980 snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x779f51f0 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7baaa46a snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7f124b07 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x86006569 snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x996ec670 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9fc7aeba snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa04278af snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa21fc847 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa23e72b5 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb2d1c4f1 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb811b9a7 snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbba0d5fc snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbeda858f snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc2f96858 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xceb94f72 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdf9c72d3 snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe321479e snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xebf96f75 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf1b7ead3 snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0da970c0 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x429f4710 snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x609d4e0e snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x67cee96b snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x7703c7b8 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x83292d53 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x90b74f47 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9e206596 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xa2f1cf6a snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xc3f9460f snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd55985c0 snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xe7bddadf snd_msndmix_new +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x0c8710bd snd_aci_cmd +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x613bd090 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0a9e2811 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x39e9c597 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5a7c8115 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x64f8096f snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xabd8f1b4 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc56dc3a8 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcc057dc1 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xce358da2 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe71d0dba snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xea41ea47 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0xdaa50b9d snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x06d3a102 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x6735b294 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xfbb572f4 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x3998d059 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x46958ef0 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xa697e8b7 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xbd9fb470 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0ea318db snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x38af0eba snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5119dfe5 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5985361d snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xaa3b5c17 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xacf4b760 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xc0c2da53 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xd92ecfa9 snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xe2200f45 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xf5aecd88 snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfc826482 snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x28a39397 snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x345d6428 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x39abdf22 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x48bc6721 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x578abed5 snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5c181286 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5d98e820 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5e3c6a95 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x67948ef5 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x69e91b98 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x70208423 snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7f46030a snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x8c525e0b snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xac2b269b snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc7705931 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd9d66cfb snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe6b7fc2c snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xf03239a0 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xf11ad124 snd_wss_put_double +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x06e5727e snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x32180c93 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3667edc2 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3acaec9e snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3f323ce5 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x583ac7c6 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5e1c657d snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a0c8179 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6b23b78e snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83d16967 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x949dd64a snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9904cc57 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb8fae7cd snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb90eec0d snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc3564ec3 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd3275c70 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe9634a4b snd_ac97_update +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xccf25244 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x52727a43 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5b0ef673 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x692e651e snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7c54ff98 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8718e42e snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8ce0eea6 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xca1044a1 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf57f40e2 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfeef8675 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x3e707ff3 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6f208713 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8e6ba5a8 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x196e7dbf oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x30875ed4 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x378d2fe8 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x424cc620 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4e0deff8 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x564c1eac oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5bf4bacb oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6be805ef oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7e1a2fdb oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8bfe79a2 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa88043f6 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb71d9f10 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb72310e2 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb91adf91 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9897e3f oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc18b30a oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8805521 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9f5cad8 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb0bb897 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe9f98119 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf28b8151 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x12483989 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x50e6d33c snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa3993285 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xdd19f902 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfdeed608 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x2505fe63 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x57175a0a tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x3468b968 sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0x1c617116 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x1bbc6a2e sound_class +EXPORT_SYMBOL sound/soundcore 0x54cc6a50 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x839e2684 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8c04e1b7 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9f39b6f7 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xb40cf5dd register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x096b0551 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4d388036 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x53ffcf37 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8374b690 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9a9b0beb snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd628c130 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x434df84f snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4dbec95e __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x85e37cf3 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9fd280a4 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa8b95225 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcb9ebb66 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xce956b4f __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcf789067 snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x188d5ac0 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x002d778d VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0064d4f7 VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00712528 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01795170 VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x03d8513f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x05626dc7 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0665bcaa VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x06ab676b VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0823cb2f VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08b98b3c VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08d7a261 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09458185 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b14ec2c VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b628628 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d1abebe VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0dfb68c6 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0e1a390f VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x104391d1 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x113a02d9 VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x127e9d01 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x143fba5b VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x14835127 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x16d72922 VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x17d84704 VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x187c16e2 VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19087f6f VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a79fedb VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1abe7e93 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ad481e4 VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1d042132 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1e7216d7 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1efa8169 VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f152547 VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1fc40aab VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x21b1ee43 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x221205d1 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2280771d VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22bd51c7 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x23a552fd VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x246391eb VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25938e5f VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x267da4c4 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x27740cb3 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2902013c VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29066860 VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2972116c VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29bf3685 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b015c38 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b5f52a8 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2bad2a8e VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c5b3002 VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d27c026 VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2e136d3c VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x309de102 VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3519743a VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3534ed69 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353b64a3 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353e5a81 VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x365d44f1 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x36e780e0 VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x37b2d47a VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x39df70a0 VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a29bcdb VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a77155a VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b0a3d87 VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3ed3a918 VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f452f12 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f8d56e7 VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4002b8b4 VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x405901ff VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428e3456 VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428eb5ba VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42c5bff2 VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x432b6724 VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x433ceadb VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4453e900 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4484f9ee VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44ce618e VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x453e64fb VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45933412 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4597652f VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45d332ae VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46b36f60 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4819f15e VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x48487b79 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4983ea42 VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4aca506e VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d0161ca VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d47859f VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e6d6986 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e7faa59 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x503f488a VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5045b702 VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5118e8ae VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x52041f46 VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53602f45 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x539dd662 VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53b772da VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x543527dc VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5460fc01 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54abe5d4 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54e45046 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x55c48692 VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57280c42 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57406d20 VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5929b954 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5936a317 VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x59390acb VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ad3216a VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b0eaa4d VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5c15981f VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ca67994 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x613042f7 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622a261f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622bf330 VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x62fd45a8 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63ba9fd2 VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64655cd4 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64af2463 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x650e77e8 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x651c778b VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6549a3e0 VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x65b04e5d VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x687ae6ac VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6a930d21 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6bcedab4 VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c17021e VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c2df755 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6ca5b4ec VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6f8ed216 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6fd2e761 VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x713f25d5 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x715699a0 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72d1c8f4 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73a23c8b VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73f65247 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x744623d2 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x753d3a3a VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x755479c2 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x75bee68e VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76608be1 VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x766a8684 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76b885fb VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76bb35b9 VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76dbecb7 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x77248ef3 VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7841b10d VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x78ad2401 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x797e701f VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79aefc0b VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ac53b51 VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ae3b63b VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7b423f4c VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7cef940f VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x80162938 VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8229caac VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x847577ac VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e86094 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x854806f2 VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8587f091 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x85afce7f VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867199c4 VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86f9f023 VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87abe8dd VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ab21a95 VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8b4fd3ef VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ff5c8e5 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x937cd6a2 VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9474d99a VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x951fbe81 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x953b2ba4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x983f332c VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9853901a VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x98a8f55f VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x993cc778 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x99ee476f VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9b02b021 VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9be73ec4 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dc75797 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9e97ef59 VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eb3db26 VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa21775d1 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa2c23601 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa3ff74bf VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa52847a2 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5655a80 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa582aeba VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5f0f1ad VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa61aa915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6209fc7 VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa74258ab VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa8a47d40 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaaab8c57 VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaadc0b5d VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab5ee692 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab871924 VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xadb5cc54 VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae21ae1f VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb2f248c6 VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb33ca348 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb3f592b9 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb4227efb VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5676d46 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5ec2977 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6fc848a VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9a86152 VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9e03c35 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xba349142 VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaf6967f VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba29a48 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbbc6e84 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbccb0c7 VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc7fbd2a VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbcd1b6de VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbd0aa67d VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbeed82c5 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbf5b421e VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc272f283 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc2e0f25a VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc312f533 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4b8857d VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4c265c6 VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc5151dcf VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc56f27ff VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc57a9c9b VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc636859e VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc6b243bf VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc7601bb1 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9978a5f VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb6463c6 VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdbc5e5d VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdd40e5b VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceb98390 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd032523c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1c8b171 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2ebb507 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd38c5d55 VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4f35c7d VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd63c8527 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd76ab832 VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd8730925 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd31359f VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd699fb2 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde296aea VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdead7a1c VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfaa7e65 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0453bfd VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0afcea8 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0ebf12c VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe16047ab VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe19acf09 VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe208c712 VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2aa3ed6 VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe4104f8b VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe46f3670 VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe47b5364 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe5908cc3 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe59fc65c VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe6a00917 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebbe4bc3 VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xecd69ee8 VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed0424f7 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed92363f VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf244ec46 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2e6e2c5 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3cd37e7 VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf450a3d4 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf722f7d1 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7c384ae VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf81b13f5 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb5ca767 VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfcfe8381 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe4fce41 VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe5c0dc7 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec59082 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec8da5c VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xffc16d99 VBoxGuest_RTMpGetSet +EXPORT_SYMBOL vmlinux 0x00043e9e xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x000945ae account_page_dirtied +EXPORT_SYMBOL vmlinux 0x000a5ef0 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x0037e044 scsi_register +EXPORT_SYMBOL vmlinux 0x0066651f gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x00753906 set_bh_page +EXPORT_SYMBOL vmlinux 0x00827a62 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x008840a1 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e63313 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01084f40 input_reset_device +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011b7f36 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x0122ae39 do_SAK +EXPORT_SYMBOL vmlinux 0x0131bbcb seq_file_path +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x015c4eb7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x015cd4a7 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x015ff1fd bdi_register +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x017d95ed freezing_slow_path +EXPORT_SYMBOL vmlinux 0x01c66779 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x01df3a27 vme_lm_request +EXPORT_SYMBOL vmlinux 0x01eb2d61 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x021492cf serio_unregister_port +EXPORT_SYMBOL vmlinux 0x022b5bfd scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x02316c34 seq_release_private +EXPORT_SYMBOL vmlinux 0x0234bb59 param_set_ulong +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x02393dd8 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x025307fe freeze_super +EXPORT_SYMBOL vmlinux 0x025af1c0 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0280a40c blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02abcc30 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x02b5470f xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x02bc0b6c blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x02dc6853 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02eeb8d7 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x0307839c blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x03305ba0 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03608756 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037accf5 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x0395ed15 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x039a3389 proto_unregister +EXPORT_SYMBOL vmlinux 0x03a47fea sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x03d16f2b tcp_release_cb +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03fe08ad netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x0431ab17 register_key_type +EXPORT_SYMBOL vmlinux 0x043cf1e7 proc_create_data +EXPORT_SYMBOL vmlinux 0x0440967d tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x04449f96 simple_release_fs +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0455737b i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x045abf0e neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x045c1834 inet6_getname +EXPORT_SYMBOL vmlinux 0x046a5b30 tty_register_driver +EXPORT_SYMBOL vmlinux 0x04830a15 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x049bf548 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x04afd383 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x04b94c8f dquot_acquire +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04e09685 key_invalidate +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f099af pci_find_capability +EXPORT_SYMBOL vmlinux 0x04fb5f11 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x0523562a fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05429d6e scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x05500d47 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x05624244 agp_bridge +EXPORT_SYMBOL vmlinux 0x05e17b50 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x0614eff0 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062e0167 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063fe406 block_read_full_page +EXPORT_SYMBOL vmlinux 0x065b9686 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x06616c89 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067dead6 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06988c7b mount_subtree +EXPORT_SYMBOL vmlinux 0x06a36c08 register_gifconf +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06ceeccf pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x06d0d8be uart_resume_port +EXPORT_SYMBOL vmlinux 0x06d6f66b eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x06efac8d sockfd_lookup +EXPORT_SYMBOL vmlinux 0x06f60ae1 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070235ed input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x070d8602 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f14fa pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073d5b07 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x0742d095 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x074d96f2 clear_inode +EXPORT_SYMBOL vmlinux 0x074da47e acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x075fcbb5 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x0768d163 follow_pfn +EXPORT_SYMBOL vmlinux 0x076f8f00 notify_change +EXPORT_SYMBOL vmlinux 0x07797957 eth_type_trans +EXPORT_SYMBOL vmlinux 0x078822e4 gen_pool_create +EXPORT_SYMBOL vmlinux 0x078d0d63 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b2ae41 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x07ba6bf1 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x07bd7f0b flow_cache_fini +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x0824bd7f d_path +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082f2621 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084a561d tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x08622b86 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x088e62f4 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x0896e1f6 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x091df99a tcf_register_action +EXPORT_SYMBOL vmlinux 0x0923ec7d md_register_thread +EXPORT_SYMBOL vmlinux 0x093d6ec1 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x0955a0f6 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095f5ec7 __lock_buffer +EXPORT_SYMBOL vmlinux 0x09659388 inode_init_once +EXPORT_SYMBOL vmlinux 0x09724f8f __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09923967 sk_common_release +EXPORT_SYMBOL vmlinux 0x09a0ef8a scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x09ac56e3 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d3c041 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09f0dc92 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x0a093ac8 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x0a1ccdc7 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x0a1e4dca mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2cf00e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0a2e6da3 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3f77b6 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x0a420d75 set_binfmt +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a561c00 kern_unmount +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a7119de f_setown +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a81e402 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x0a958aaf input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x0a9c9bc6 seq_putc +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aab61db stop_tty +EXPORT_SYMBOL vmlinux 0x0aabbc64 __d_drop +EXPORT_SYMBOL vmlinux 0x0ac8bcd9 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0addf50a dquot_get_state +EXPORT_SYMBOL vmlinux 0x0aef6e25 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x0afc070e serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x0afd9df1 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x0b09c874 security_path_mknod +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b3e22a8 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x0b41992c try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x0b47122c padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4fae9c inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b63fa90 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x0b6b7fa3 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7b591b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x0b88e191 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0bab4acd dev_open +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bce47f0 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x0bdd800c gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0bde89bb nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x0bdfe719 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0bef1bb1 d_splice_alias +EXPORT_SYMBOL vmlinux 0x0bf1517e param_ops_ulong +EXPORT_SYMBOL vmlinux 0x0bf39d63 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x0bf65713 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x0c1f1d90 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x0c267193 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x0c2f3d1e setattr_copy +EXPORT_SYMBOL vmlinux 0x0c2fb106 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x0c354f2e blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x0c3eacda twl6040_power +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c54662d xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c640cdf try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x0c69c353 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0c791505 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca1062d locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cccde82 simple_lookup +EXPORT_SYMBOL vmlinux 0x0cd95144 path_put +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d0bd2c5 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0d3ce8fa udplite_prot +EXPORT_SYMBOL vmlinux 0x0d3d7543 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d588114 sock_wake_async +EXPORT_SYMBOL vmlinux 0x0d5d94c4 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d715dc7 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x0d98e0f4 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db2ca80 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x0db35664 kfree_put_link +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dd78058 inode_init_owner +EXPORT_SYMBOL vmlinux 0x0e0229b9 misc_register +EXPORT_SYMBOL vmlinux 0x0e056964 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x0e1c8804 generic_removexattr +EXPORT_SYMBOL vmlinux 0x0e3e54e8 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x0e5731d1 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0e60905a pci_release_region +EXPORT_SYMBOL vmlinux 0x0e6309d7 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x0e68cfcf force_sig +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e86aba7 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x0e959c56 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x0e9669cf downgrade_write +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ebe73bc nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed81fd8 inode_set_flags +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0eeb7a6e rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x0ef8e446 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f01d468 security_mmap_file +EXPORT_SYMBOL vmlinux 0x0f0f97e8 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x0f1adc3d __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x0f1e829a dma_supported +EXPORT_SYMBOL vmlinux 0x0f3024dd tty_register_device +EXPORT_SYMBOL vmlinux 0x0f327944 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a1398 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbdea14 vm_map_ram +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x100c4993 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x1019b325 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x105b5de6 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x107ff20d dm_register_target +EXPORT_SYMBOL vmlinux 0x107ff220 set_page_dirty +EXPORT_SYMBOL vmlinux 0x109f8942 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x10aa9480 blk_peek_request +EXPORT_SYMBOL vmlinux 0x10cc159f tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110ea951 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x112f9dd7 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x1150431b pci_request_region +EXPORT_SYMBOL vmlinux 0x11545854 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x115f8235 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116806e5 kmap_to_page +EXPORT_SYMBOL vmlinux 0x11707ce0 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11cea79a vme_slave_request +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11f54aff dev_printk_emit +EXPORT_SYMBOL vmlinux 0x11f69b9b module_put +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fb08af mmc_can_discard +EXPORT_SYMBOL vmlinux 0x12087ca4 skb_dequeue +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120e8f5e register_netdevice +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121380e4 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x12163185 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x12191201 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x121b4e4b memremap +EXPORT_SYMBOL vmlinux 0x12239fb6 simple_rmdir +EXPORT_SYMBOL vmlinux 0x1235ff4d jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x125b03d4 mmc_start_req +EXPORT_SYMBOL vmlinux 0x127a3578 d_invalidate +EXPORT_SYMBOL vmlinux 0x12a1dfa3 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12caa746 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x12cd44b6 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x13002a7d agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x135c46f1 put_page +EXPORT_SYMBOL vmlinux 0x13679b0c xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x136c4684 blk_get_request +EXPORT_SYMBOL vmlinux 0x136cb117 noop_llseek +EXPORT_SYMBOL vmlinux 0x13879dff dev_crit +EXPORT_SYMBOL vmlinux 0x139b43cb phy_attach_direct +EXPORT_SYMBOL vmlinux 0x139e28d0 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x13b2659b skb_free_datagram +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d820b9 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x13d8418b fasync_helper +EXPORT_SYMBOL vmlinux 0x13e6a94a ether_setup +EXPORT_SYMBOL vmlinux 0x13f1ae3e km_policy_notify +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1409af0a vfs_create +EXPORT_SYMBOL vmlinux 0x140f4a25 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142dc4ef genphy_update_link +EXPORT_SYMBOL vmlinux 0x14412aab read_code +EXPORT_SYMBOL vmlinux 0x144baf49 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x145c3944 path_get +EXPORT_SYMBOL vmlinux 0x14be7673 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14e61e28 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15060d38 d_find_alias +EXPORT_SYMBOL vmlinux 0x1506e202 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x150d3016 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x150f6351 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x1538f8c8 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x153e4c39 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x153f6286 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x15799c11 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x15875c41 blk_run_queue +EXPORT_SYMBOL vmlinux 0x159bcf3d cad_pid +EXPORT_SYMBOL vmlinux 0x15ad0501 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x160643fc mmc_remove_host +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x16175bf0 skb_split +EXPORT_SYMBOL vmlinux 0x1620fc51 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1642b9f1 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x1669b70e dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16a9e074 __alloc_skb +EXPORT_SYMBOL vmlinux 0x16b93b34 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e50e59 kmap_atomic +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x174dd34f netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x1775c1d3 dev_err +EXPORT_SYMBOL vmlinux 0x178e6a57 param_set_charp +EXPORT_SYMBOL vmlinux 0x1794449e cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x179651ac _raw_read_lock +EXPORT_SYMBOL vmlinux 0x17990e72 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x17a53486 md_check_recovery +EXPORT_SYMBOL vmlinux 0x17ab424e remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x17ad0747 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17bcb3f4 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x17cf91f5 fput +EXPORT_SYMBOL vmlinux 0x17d205b3 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x181905eb scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x18303a29 wireless_send_event +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1850385b block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1863c806 neigh_for_each +EXPORT_SYMBOL vmlinux 0x1888b080 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b00799 d_add_ci +EXPORT_SYMBOL vmlinux 0x18b80666 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x18bb972c rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e61971 tcp_check_req +EXPORT_SYMBOL vmlinux 0x18e8620e skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x18f7e6a9 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x190c7035 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19182b5b __ht_create_irq +EXPORT_SYMBOL vmlinux 0x1924f8d2 register_qdisc +EXPORT_SYMBOL vmlinux 0x197ea12b inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b069b2 elv_rb_del +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19b59e20 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cc0a35 do_splice_direct +EXPORT_SYMBOL vmlinux 0x19e32579 netdev_change_features +EXPORT_SYMBOL vmlinux 0x19f9d30d path_is_under +EXPORT_SYMBOL vmlinux 0x19fd5707 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x1a0efa1d pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x1a10f616 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x1a24f0c7 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x1a29088f __skb_checksum +EXPORT_SYMBOL vmlinux 0x1a3d6b88 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a4604cb netdev_notice +EXPORT_SYMBOL vmlinux 0x1a594778 mutex_unlock +EXPORT_SYMBOL vmlinux 0x1a5a68a3 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x1a5b64bb phy_find_first +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6d8650 qdisc_reset +EXPORT_SYMBOL vmlinux 0x1a733a65 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x1a897413 fb_show_logo +EXPORT_SYMBOL vmlinux 0x1a8b8e34 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x1a904b7a netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x1aa6a2eb pci_set_mwi +EXPORT_SYMBOL vmlinux 0x1ac1e471 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x1aec3a52 km_report +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b21416d fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x1b47b476 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b576f8c ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6da8cc d_move +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b994a89 fget_raw +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c14e966 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x1c1aeefd fs_bio_set +EXPORT_SYMBOL vmlinux 0x1c43b9c3 ppp_input +EXPORT_SYMBOL vmlinux 0x1c570503 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c91df73 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x1c95a217 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x1cb264e1 neigh_update +EXPORT_SYMBOL vmlinux 0x1cb4ba02 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x1cb607ad bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x1cc8735f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x1cf1f79a x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x1cfc63e5 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x1d021abe alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x1d39d2e3 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x1d4d961a nvm_put_blk +EXPORT_SYMBOL vmlinux 0x1d5cb422 dump_page +EXPORT_SYMBOL vmlinux 0x1d6b17bb kill_pid +EXPORT_SYMBOL vmlinux 0x1d9702cc kill_litter_super +EXPORT_SYMBOL vmlinux 0x1d98988a ilookup +EXPORT_SYMBOL vmlinux 0x1da28b8c vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x1db0a836 pci_bus_get +EXPORT_SYMBOL vmlinux 0x1db0cf86 simple_rename +EXPORT_SYMBOL vmlinux 0x1db1ba87 blk_register_region +EXPORT_SYMBOL vmlinux 0x1dc30bae loop_backing_file +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de6f23b dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1df9fdc1 serio_reconnect +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e1547ca __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1e1f4b1b inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e416994 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x1e5490b1 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e738a19 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x1e81275f dquot_file_open +EXPORT_SYMBOL vmlinux 0x1e9bc32d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebf3ec6 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ef1c125 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x1f314581 open_exec +EXPORT_SYMBOL vmlinux 0x1f57b7e2 tty_mutex +EXPORT_SYMBOL vmlinux 0x1f6e0252 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f7f0f7b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcb50b3 wake_up_process +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x2006617f xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x201d3ca5 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20511adc ip6_xmit +EXPORT_SYMBOL vmlinux 0x206eaa37 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20766d8f lookup_one_len +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ae58d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20db97d1 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e2f9fd pagevec_lookup +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20f95c5f ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x214b699e i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x2155cefc bdi_destroy +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x218617ee vfs_readf +EXPORT_SYMBOL vmlinux 0x2192cab0 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x219b5139 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21a844b0 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x21c5bef4 pnp_find_card +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x22084688 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x2215d114 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x221ea605 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x22309a06 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225b031d mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2273d01c vfs_llseek +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22959594 component_match_add +EXPORT_SYMBOL vmlinux 0x22b2b910 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d10f92 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x22d3602b sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x233550f3 nf_log_unset +EXPORT_SYMBOL vmlinux 0x23399d0f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x2354f55a wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x23601199 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x236b53bd abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x2376920a tty_unlock +EXPORT_SYMBOL vmlinux 0x2382eed4 vfs_fsync +EXPORT_SYMBOL vmlinux 0x23a3b72d fb_set_suspend +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b2f2a7 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bfbfd9 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23d1a243 tty_check_change +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2418a940 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x24205b1e vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24536010 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x24537bb7 cpu_tss +EXPORT_SYMBOL vmlinux 0x24573ed0 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2466603f devm_request_resource +EXPORT_SYMBOL vmlinux 0x247df2d0 block_write_full_page +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x249103f0 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x249357a9 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x249d4aff __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x24acc4c0 mount_single +EXPORT_SYMBOL vmlinux 0x24d9066b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x24fc2847 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250e1a62 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x251cf7da input_close_device +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25516085 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x2565b99e address_space_init_once +EXPORT_SYMBOL vmlinux 0x2568fde8 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x256e4dc7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a6475a backlight_device_register +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x2623f1c4 iterate_fd +EXPORT_SYMBOL vmlinux 0x26327740 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26576a28 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x267381ad mmc_get_card +EXPORT_SYMBOL vmlinux 0x2678a22a ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x26943369 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x269d3414 agp_free_memory +EXPORT_SYMBOL vmlinux 0x26a6d6ac unlock_buffer +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26dae327 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ec4fef netlink_ack +EXPORT_SYMBOL vmlinux 0x26fd7ee4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x270e0c50 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272935f0 __bforget +EXPORT_SYMBOL vmlinux 0x2742f6c7 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2760c343 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x27737ad7 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x2773b078 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x2774af89 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x27859ba4 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2794b0e0 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x279fca6f devm_ioport_map +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27cb633c put_cmsg +EXPORT_SYMBOL vmlinux 0x27e7b192 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x27ee860d jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x27f9d99e ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x28116da3 pci_dev_put +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x283d55f8 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x2879adca inode_change_ok +EXPORT_SYMBOL vmlinux 0x287a91c9 inet_ioctl +EXPORT_SYMBOL vmlinux 0x28815592 page_waitqueue +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28b058c2 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28c2fd50 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x28de0653 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x2902bf4c jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2976d0be tcp_prequeue +EXPORT_SYMBOL vmlinux 0x29bd055a __pagevec_release +EXPORT_SYMBOL vmlinux 0x29f3b412 security_path_rename +EXPORT_SYMBOL vmlinux 0x29fc8588 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a1682e4 simple_link +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a32eb93 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x2a356c6c scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2a35cf22 install_exec_creds +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a54174b twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5ae4d0 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a648f92 tcp_req_err +EXPORT_SYMBOL vmlinux 0x2a6770f6 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2a72c515 dev_load +EXPORT_SYMBOL vmlinux 0x2a8307b3 __find_get_block +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad89533 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x2adcbef7 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b289478 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2e11e6 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x2b455bb5 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x2b50db4a __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x2b68e969 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x2b75ba6a pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x2b945cf8 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bb8aa8b try_to_release_page +EXPORT_SYMBOL vmlinux 0x2bbab4f8 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x2bbb9b3e single_open_size +EXPORT_SYMBOL vmlinux 0x2bdc6ba1 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x2bde6772 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x2be31bc1 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c11e463 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c19c087 read_cache_pages +EXPORT_SYMBOL vmlinux 0x2c21d090 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2863e2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x2c3e0df8 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x2c5346fd block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2c693de5 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x2c8ec507 dump_trace +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2ca82012 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x2cab9ea2 page_symlink +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2ce96e07 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x2cfef3e7 bio_chain +EXPORT_SYMBOL vmlinux 0x2d03dadc scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d1c781f copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x2d2ab1a8 i2c_master_send +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d31c699 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d34f507 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d37c6a5 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x2d4a6cf5 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x2d892968 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x2db59416 do_splice_to +EXPORT_SYMBOL vmlinux 0x2dc3e58c mark_info_dirty +EXPORT_SYMBOL vmlinux 0x2dcb4f86 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2de35ceb phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2df3b180 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2df517b3 key_link +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e2a5cb2 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2dc3aa __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x2e6e77cd inode_add_bytes +EXPORT_SYMBOL vmlinux 0x2eadf932 dev_uc_add +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec57e94 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2ed0e5f7 file_remove_privs +EXPORT_SYMBOL vmlinux 0x2ed28129 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x2ed609f3 get_acl +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f17d03c dcache_readdir +EXPORT_SYMBOL vmlinux 0x2f1e3f2c kernel_accept +EXPORT_SYMBOL vmlinux 0x2f3596d4 vme_bus_num +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f540448 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x2f69b7ef agp_backend_release +EXPORT_SYMBOL vmlinux 0x2f72eae3 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x2f731aba md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x2f7af880 padata_start +EXPORT_SYMBOL vmlinux 0x2f864431 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x2f96acfb mutex_lock +EXPORT_SYMBOL vmlinux 0x2f9b9ff7 __ps2_command +EXPORT_SYMBOL vmlinux 0x2fa6992b dev_set_mtu +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x30094a7f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x300dbb13 update_devfreq +EXPORT_SYMBOL vmlinux 0x30136ff7 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x305a8456 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x305fab30 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308a6034 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x308af6bb inode_needs_sync +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30c3d516 lockref_put_return +EXPORT_SYMBOL vmlinux 0x30d2a24f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30edff8d frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x30f688a7 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x3101b5b6 bio_init +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310d8225 input_register_device +EXPORT_SYMBOL vmlinux 0x310e58a1 genphy_suspend +EXPORT_SYMBOL vmlinux 0x3111de97 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x3115da71 vga_client_register +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x313ea598 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314aae4f dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x314c2e19 blkdev_put +EXPORT_SYMBOL vmlinux 0x316f2baa __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a864f6 vc_cons +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ec44a0 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x320180d1 do_splice_from +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3222c035 sync_blockdev +EXPORT_SYMBOL vmlinux 0x32358137 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x323dd9b7 genphy_resume +EXPORT_SYMBOL vmlinux 0x32449f03 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3264a1ff inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x326a03bb scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x32769b94 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x32813643 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x3287b63e generic_ro_fops +EXPORT_SYMBOL vmlinux 0x32ad92bb input_open_device +EXPORT_SYMBOL vmlinux 0x32b5fa2f mem_section +EXPORT_SYMBOL vmlinux 0x32bfc338 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x32cc8c50 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x32d0efac scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x32d795f5 skb_append +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x33090bf1 get_phy_device +EXPORT_SYMBOL vmlinux 0x332dae52 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x33512965 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x335419a9 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x335bbdc1 d_genocide +EXPORT_SYMBOL vmlinux 0x3387bff9 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x3392ab82 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x33941402 __check_sticky +EXPORT_SYMBOL vmlinux 0x33a35345 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x33b72554 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x33b821d3 genphy_config_init +EXPORT_SYMBOL vmlinux 0x33c3b137 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d53aff __dquot_free_space +EXPORT_SYMBOL vmlinux 0x33d557e0 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e66a51 proc_set_size +EXPORT_SYMBOL vmlinux 0x33f07305 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fd1089 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x3412d97f get_tz_trend +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3445d0a5 scsi_device_get +EXPORT_SYMBOL vmlinux 0x344d21fb inet_addr_type +EXPORT_SYMBOL vmlinux 0x34557b6e jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x346bc3ba tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348d84b2 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34af6c6f input_unregister_device +EXPORT_SYMBOL vmlinux 0x34de5fcb __devm_release_region +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x354c44d2 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x355bb764 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35acc4a7 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x35b2aae6 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x35b49d9a would_dump +EXPORT_SYMBOL vmlinux 0x35bd0747 dev_uc_del +EXPORT_SYMBOL vmlinux 0x35c11b85 sock_create +EXPORT_SYMBOL vmlinux 0x35c5969d pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x35c6d048 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x35c76896 key_task_permission +EXPORT_SYMBOL vmlinux 0x35dfe6a5 bio_reset +EXPORT_SYMBOL vmlinux 0x35f2d262 dst_alloc +EXPORT_SYMBOL vmlinux 0x3606ef1b registered_fb +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36314e52 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x3639b2b5 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x3646ba63 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x366c766d user_path_at_empty +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36826ddc dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x3684c3bc fb_class +EXPORT_SYMBOL vmlinux 0x3696529d deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x369d1519 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x36a6af3c write_one_page +EXPORT_SYMBOL vmlinux 0x36b6a911 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x36bb1bab inet_shutdown +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c04d34 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36dd0310 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x36eadc55 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x36ef022c udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37015d25 truncate_setsize +EXPORT_SYMBOL vmlinux 0x3703b1c2 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x370dac39 sock_wfree +EXPORT_SYMBOL vmlinux 0x37212806 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x37239fbd blk_queue_split +EXPORT_SYMBOL vmlinux 0x3733fe20 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x37952254 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37ddb7e4 _dev_info +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x38041f69 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x3814b509 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3829da4a vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x382aaf79 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x38370a00 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x387417b1 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x387b4a42 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38c57d35 inet_release +EXPORT_SYMBOL vmlinux 0x38d86df0 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x38dc81f2 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x38f493c9 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x38f62bb6 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x38fad0e3 redraw_screen +EXPORT_SYMBOL vmlinux 0x38fcb741 mount_bdev +EXPORT_SYMBOL vmlinux 0x3900d512 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x391b7b6c tty_vhangup +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393f42e1 __frontswap_store +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3949e131 __break_lease +EXPORT_SYMBOL vmlinux 0x3956105e eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x3957b31d kern_path_create +EXPORT_SYMBOL vmlinux 0x3963eb27 generic_setxattr +EXPORT_SYMBOL vmlinux 0x39768aaf single_open +EXPORT_SYMBOL vmlinux 0x39805146 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a860cd inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b7e6f3 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x39e1373b d_tmpfile +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a206ff0 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x3a2779e4 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3ce165 nf_afinfo +EXPORT_SYMBOL vmlinux 0x3a3d9e71 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x3a3eac32 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x3a457fa7 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x3a585a3c inet6_del_offload +EXPORT_SYMBOL vmlinux 0x3a62e906 inet_getname +EXPORT_SYMBOL vmlinux 0x3a6480c0 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab7ce03 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x3ac4628d vfs_unlink +EXPORT_SYMBOL vmlinux 0x3ac5d036 netlink_capable +EXPORT_SYMBOL vmlinux 0x3ac86e28 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x3ad6ace0 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x3ae084c2 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x3ae58c61 kern_path +EXPORT_SYMBOL vmlinux 0x3b046b7b kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b21aa6e kthread_bind +EXPORT_SYMBOL vmlinux 0x3b24a086 serio_open +EXPORT_SYMBOL vmlinux 0x3b2c159f tcf_action_exec +EXPORT_SYMBOL vmlinux 0x3b318eeb sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x3b37609c adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x3b5c2de4 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x3b60a406 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b792743 fd_install +EXPORT_SYMBOL vmlinux 0x3b7a331b neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x3b8bb787 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bfcef99 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x3c2e774c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c628322 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3c694434 pci_pme_active +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3ca3ca0b add_disk +EXPORT_SYMBOL vmlinux 0x3ca42bce dqget +EXPORT_SYMBOL vmlinux 0x3caf3bd7 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc8fbfa dquot_quota_off +EXPORT_SYMBOL vmlinux 0x3cc9e2e3 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x3cd391c9 proc_remove +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d0abb50 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x3d117cea dma_sync_wait +EXPORT_SYMBOL vmlinux 0x3d1391e2 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x3d1dc77d mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x3d329d31 __quota_error +EXPORT_SYMBOL vmlinux 0x3d597fd1 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x3d628848 seq_open_private +EXPORT_SYMBOL vmlinux 0x3d6daa96 tty_port_put +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d844f8d alloc_file +EXPORT_SYMBOL vmlinux 0x3d8f5c12 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x3d91c6ab jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3db74672 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x3dbb4601 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0dbae1 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x3e18a864 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x3e18b167 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e2dfbd9 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x3e5183ee __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x3e654f49 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x3e7dd76e param_get_bool +EXPORT_SYMBOL vmlinux 0x3e7e8ca9 set_groups +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8b8988 key_put +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9883ac pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x3eb80dfa xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x3eba7d84 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f141ed1 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x3f16ff2c led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x3f1f7d04 param_ops_bool +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f2af3da devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x3f35ceac PDE_DATA +EXPORT_SYMBOL vmlinux 0x3f379308 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f8b352e __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x3f941105 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x3fa2fbeb generic_fillattr +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403e6e2d vfs_writef +EXPORT_SYMBOL vmlinux 0x4040459d blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40691e56 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x406c6303 ll_rw_block +EXPORT_SYMBOL vmlinux 0x4084c072 d_instantiate +EXPORT_SYMBOL vmlinux 0x408933b1 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad9b5f vfs_setpos +EXPORT_SYMBOL vmlinux 0x40aeb876 d_set_d_op +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40ca8b8f devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d4e0fd rtnl_unicast +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x4123e2d9 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4151a71d led_update_brightness +EXPORT_SYMBOL vmlinux 0x415e9970 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x41699ae0 page_put_link +EXPORT_SYMBOL vmlinux 0x4171ca63 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x41771754 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41a9d956 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x41c44b42 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x41eac15f km_new_mapping +EXPORT_SYMBOL vmlinux 0x41f671b2 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422b94f6 tcp_close +EXPORT_SYMBOL vmlinux 0x422d2301 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x423097a9 tso_count_descs +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42581f4a udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4264ea60 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x4270b5b5 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x427751f6 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x42787fda param_set_short +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x4295b5a8 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42df8c64 input_set_keycode +EXPORT_SYMBOL vmlinux 0x42fb1773 dcb_setapp +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ed7a1 finish_no_open +EXPORT_SYMBOL vmlinux 0x4327b264 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439b1e7e inode_get_bytes +EXPORT_SYMBOL vmlinux 0x43c006c0 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x43d80010 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x43daf7eb get_agp_version +EXPORT_SYMBOL vmlinux 0x43e3a82c dma_common_mmap +EXPORT_SYMBOL vmlinux 0x43e3bda5 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f395c9 param_get_int +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44188c95 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4440616a nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x44424829 seq_lseek +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4457f7c6 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x446c4007 devm_clk_get +EXPORT_SYMBOL vmlinux 0x4479b521 I_BDEV +EXPORT_SYMBOL vmlinux 0x448a5300 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x4498e953 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x449d0272 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c38497 bio_add_page +EXPORT_SYMBOL vmlinux 0x44cfba59 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efad07 sock_edemux +EXPORT_SYMBOL vmlinux 0x44f37759 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x44fc0f63 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x4503272e __pci_register_driver +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4509f89a skb_copy_bits +EXPORT_SYMBOL vmlinux 0x450be97c ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x451525ce set_wb_congested +EXPORT_SYMBOL vmlinux 0x4522205d up_write +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45411b34 amd_northbridges +EXPORT_SYMBOL vmlinux 0x4564d0df set_blocksize +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457e773e mdiobus_write +EXPORT_SYMBOL vmlinux 0x4595e145 sock_rfree +EXPORT_SYMBOL vmlinux 0x459b448c security_task_getsecid +EXPORT_SYMBOL vmlinux 0x45a59724 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45b1944c processors +EXPORT_SYMBOL vmlinux 0x45c14c73 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x45cc7866 ata_port_printk +EXPORT_SYMBOL vmlinux 0x460a4e73 blk_start_request +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46384437 make_kprojid +EXPORT_SYMBOL vmlinux 0x46502426 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468d3082 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x46e21765 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46fed7cc pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x46ff26b1 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x47013ff5 set_create_files_as +EXPORT_SYMBOL vmlinux 0x47085ca4 vfs_mknod +EXPORT_SYMBOL vmlinux 0x470a4cf8 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x471154ef blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x4713a55c tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4717353f dev_addr_init +EXPORT_SYMBOL vmlinux 0x471a7959 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x472e66da create_empty_buffers +EXPORT_SYMBOL vmlinux 0x4739f823 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x473b7f34 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x474012f8 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475211eb scsi_print_result +EXPORT_SYMBOL vmlinux 0x475a9ad4 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x475c0888 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x476b92f2 kthread_stop +EXPORT_SYMBOL vmlinux 0x477892d2 pci_set_master +EXPORT_SYMBOL vmlinux 0x47826575 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47e87822 vme_dma_request +EXPORT_SYMBOL vmlinux 0x480fd388 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x4813495b __f_setown +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4833c5bf set_pages_uc +EXPORT_SYMBOL vmlinux 0x484d68bc sock_recvmsg +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48660903 ip6_route_output +EXPORT_SYMBOL vmlinux 0x4868058e cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x48771913 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x487c00ab thaw_super +EXPORT_SYMBOL vmlinux 0x488683a4 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x48871b3a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x488f5073 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x489aec2b ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x489c396b dev_close +EXPORT_SYMBOL vmlinux 0x48a00ce0 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x48aba978 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x48ae5e87 dst_init +EXPORT_SYMBOL vmlinux 0x48b3db36 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48e78c57 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x48fe9fe0 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491a4ef4 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496900e2 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x49713b65 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x4989c13d bitmap_unplug +EXPORT_SYMBOL vmlinux 0x498ed881 skb_put +EXPORT_SYMBOL vmlinux 0x49956638 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x49a63a58 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c455db simple_unlink +EXPORT_SYMBOL vmlinux 0x49cf4d60 pipe_unlock +EXPORT_SYMBOL vmlinux 0x49e8be31 serio_bus +EXPORT_SYMBOL vmlinux 0x49e9ee44 vm_insert_page +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49f8debc fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x49fd5ef4 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x4a2519fe dm_put_device +EXPORT_SYMBOL vmlinux 0x4a2acddf release_pages +EXPORT_SYMBOL vmlinux 0x4a2c2516 search_binary_handler +EXPORT_SYMBOL vmlinux 0x4a2eb3bc pci_disable_msix +EXPORT_SYMBOL vmlinux 0x4a3e21ff set_nlink +EXPORT_SYMBOL vmlinux 0x4a4eaaa8 dev_alert +EXPORT_SYMBOL vmlinux 0x4a52deb0 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x4a578ae2 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a732414 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x4a826a08 dev_driver_string +EXPORT_SYMBOL vmlinux 0x4a9db3ca key_alloc +EXPORT_SYMBOL vmlinux 0x4a9eac11 inode_init_always +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ae306c2 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x4aebc3bd pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x4af499a7 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x4afbea77 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b052177 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1a93f6 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x4b1ca3d9 load_nls_default +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2624d5 request_key_async +EXPORT_SYMBOL vmlinux 0x4b2820ed dqput +EXPORT_SYMBOL vmlinux 0x4b2af5b3 free_buffer_head +EXPORT_SYMBOL vmlinux 0x4b4b06f3 blk_put_request +EXPORT_SYMBOL vmlinux 0x4b525d0f genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b659cf9 find_vma +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b69e003 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x4b6d9b24 param_ops_uint +EXPORT_SYMBOL vmlinux 0x4b701617 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x4b819b85 tty_port_init +EXPORT_SYMBOL vmlinux 0x4b830f7e ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbd6ae1 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x4bcee24e ipv4_specific +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4be10088 drop_nlink +EXPORT_SYMBOL vmlinux 0x4be2595c mmc_put_card +EXPORT_SYMBOL vmlinux 0x4be54718 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf7a7d0 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x4bf98276 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c0e6a03 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4c111853 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x4c19e89c pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x4c1a9fb0 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x4c20beb9 lro_flush_all +EXPORT_SYMBOL vmlinux 0x4c24ad75 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ad679 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c5a8444 scsi_add_device +EXPORT_SYMBOL vmlinux 0x4c603cce build_skb +EXPORT_SYMBOL vmlinux 0x4c617b2a inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x4c655824 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x4c67b5c4 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c895fbb pneigh_lookup +EXPORT_SYMBOL vmlinux 0x4c971753 inet_offloads +EXPORT_SYMBOL vmlinux 0x4cb1cdbd clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x4cb7e445 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4cc5903e inet_frags_init +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ceac307 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x4cf35cf2 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x4d2955b8 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x4d392ce0 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d45ddd4 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x4d5dd477 pci_restore_state +EXPORT_SYMBOL vmlinux 0x4d71486e skb_trim +EXPORT_SYMBOL vmlinux 0x4d75c8a2 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x4d93ee76 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db3510a proc_mkdir +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de3bb4a netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x4defc7e3 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e0c886d dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e38ec53 tty_throttle +EXPORT_SYMBOL vmlinux 0x4e527808 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e6fc25b __blk_end_request +EXPORT_SYMBOL vmlinux 0x4e773bce sock_no_connect +EXPORT_SYMBOL vmlinux 0x4e82578b sk_stop_timer +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ee19b83 igrab +EXPORT_SYMBOL vmlinux 0x4efe1c96 param_get_string +EXPORT_SYMBOL vmlinux 0x4f02e61c mmc_register_driver +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f719d38 serio_close +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f80aada read_cache_page +EXPORT_SYMBOL vmlinux 0x4f8278a7 kfree_skb +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fba4647 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x4fcbda70 get_cached_acl +EXPORT_SYMBOL vmlinux 0x4fdc2eb3 sock_release +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe8d024 dst_destroy +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5014514f __scm_send +EXPORT_SYMBOL vmlinux 0x501c3756 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x50208b3b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x502bf468 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x504ba560 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50ba6a9e security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x50bdab96 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50dd3034 get_fs_type +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x50f66ec8 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x51018012 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511c92bb nf_log_register +EXPORT_SYMBOL vmlinux 0x51236c08 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x51259dca mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x5132ae7a devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x513c20d1 skb_copy +EXPORT_SYMBOL vmlinux 0x5157ef67 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x515dcd00 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x5189f0a7 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x518f1f40 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x51991516 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x51a7226a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x51adfdeb blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x51c2c6a8 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d5c2e8 free_netdev +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x523068b6 elv_rb_add +EXPORT_SYMBOL vmlinux 0x523716fb blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x524a6bec eth_mac_addr +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526690cf tcp_seq_open +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52a97bd9 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x52ac4d00 netlink_set_err +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52af805f blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x52bc86c0 i2c_use_client +EXPORT_SYMBOL vmlinux 0x52db494c nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x52e17e38 __invalidate_device +EXPORT_SYMBOL vmlinux 0x52e7293a con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x52f23778 skb_store_bits +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53249f1a finish_open +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5335d372 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x533f803d blk_integrity_register +EXPORT_SYMBOL vmlinux 0x534e80aa __nlmsg_put +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53772fd8 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x539f81e6 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x53b1fa3f vme_slot_num +EXPORT_SYMBOL vmlinux 0x53f36a48 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x53f3e861 flush_signals +EXPORT_SYMBOL vmlinux 0x53fd1cb4 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x54003ec3 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x54046b36 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x5408d8e5 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540e15a1 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x5421448c blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x5425fff8 iterate_dir +EXPORT_SYMBOL vmlinux 0x5426d269 __serio_register_port +EXPORT_SYMBOL vmlinux 0x542ddb27 release_sock +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5445aa17 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x544b9ef0 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x5467b731 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x54771cce md_error +EXPORT_SYMBOL vmlinux 0x5486b436 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x5498adcd try_module_get +EXPORT_SYMBOL vmlinux 0x549cb623 keyring_clear +EXPORT_SYMBOL vmlinux 0x54a24df7 udp_disconnect +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c8a177 bioset_create +EXPORT_SYMBOL vmlinux 0x54d77021 simple_readpage +EXPORT_SYMBOL vmlinux 0x54dd2ed2 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e9206f __sk_dst_check +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x5501405b file_update_time +EXPORT_SYMBOL vmlinux 0x55027b49 sync_inode +EXPORT_SYMBOL vmlinux 0x5512bcf3 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x552c9ac2 serio_interrupt +EXPORT_SYMBOL vmlinux 0x553294a5 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55778a01 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x557a335d set_pages_wb +EXPORT_SYMBOL vmlinux 0x55a35190 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x55be45f5 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x55bf299e pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e5d1f0 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x55ed6670 generic_show_options +EXPORT_SYMBOL vmlinux 0x55fb853c __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x5601734c block_commit_write +EXPORT_SYMBOL vmlinux 0x56168636 generic_getxattr +EXPORT_SYMBOL vmlinux 0x561b752d register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x5647b751 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x564d56e7 file_path +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x568a409f fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x5691f0a5 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x5694c331 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e145be page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x56f70e0d x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x56fd1406 param_set_long +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x571345ed cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f723d tty_port_hangup +EXPORT_SYMBOL vmlinux 0x5738f16a invalidate_partition +EXPORT_SYMBOL vmlinux 0x573e1530 dev_emerg +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576dc123 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x5775d713 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x57855376 backlight_force_update +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57c4e90f remove_arg_zero +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x57dbd20d pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58283bce dcache_dir_open +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583e8538 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585ca6da cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588b8a99 tty_name +EXPORT_SYMBOL vmlinux 0x58963352 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x58ab81d0 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x58ae1d9d copy_to_iter +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c18f97 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x58c3505d nf_log_set +EXPORT_SYMBOL vmlinux 0x58c8eeaa security_path_chown +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e365c2 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x58edcf72 vme_register_driver +EXPORT_SYMBOL vmlinux 0x58f03576 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x590482bc dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x5939641e scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5976634b sock_sendmsg +EXPORT_SYMBOL vmlinux 0x597efdc6 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x59832cb3 phy_connect +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59966e3e inet6_bind +EXPORT_SYMBOL vmlinux 0x599ebb20 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ad3990 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59ce0d51 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x59e2dc6d blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a2cf7b4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x5a375fbb keyring_alloc +EXPORT_SYMBOL vmlinux 0x5a415a22 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4c0d2e vfs_iter_read +EXPORT_SYMBOL vmlinux 0x5a54ba69 eisa_bus_type +EXPORT_SYMBOL vmlinux 0x5a7a38bc __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a94f6b7 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x5aa4aa4f kernel_connect +EXPORT_SYMBOL vmlinux 0x5ab640cb scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ac3fd7c genlmsg_put +EXPORT_SYMBOL vmlinux 0x5ac87da2 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x5ae144a2 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x5aff248b sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b25576c set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x5b2a4f73 mmc_request_done +EXPORT_SYMBOL vmlinux 0x5b3286c8 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5b3e669d scsi_scan_target +EXPORT_SYMBOL vmlinux 0x5b448937 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x5b698a9a simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5b723300 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x5b8726eb sk_capable +EXPORT_SYMBOL vmlinux 0x5b8cb072 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x5b92a843 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x5ba12c6c locks_remove_posix +EXPORT_SYMBOL vmlinux 0x5badd258 md_write_end +EXPORT_SYMBOL vmlinux 0x5bba4008 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bd30586 vme_bus_type +EXPORT_SYMBOL vmlinux 0x5bfcc163 __inode_permission +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c073ab4 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x5c20860c sock_update_memcg +EXPORT_SYMBOL vmlinux 0x5c346720 default_llseek +EXPORT_SYMBOL vmlinux 0x5c3ab676 set_anon_super +EXPORT_SYMBOL vmlinux 0x5c41c110 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x5c43d2d9 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c55d94b devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x5c7ba5d2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x5c7d4f86 register_console +EXPORT_SYMBOL vmlinux 0x5c8c69b4 tty_devnum +EXPORT_SYMBOL vmlinux 0x5cdadc3d phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5ce19775 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x5ce8d7a9 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x5cece1d0 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfa6bba devm_release_resource +EXPORT_SYMBOL vmlinux 0x5cfb0f25 param_ops_short +EXPORT_SYMBOL vmlinux 0x5d136395 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x5d2b007d __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x5d2cde33 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x5d2ed692 da903x_query_status +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5dc224cb cpu_info +EXPORT_SYMBOL vmlinux 0x5dc9c07f revalidate_disk +EXPORT_SYMBOL vmlinux 0x5df3cf2d cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x5e0b7ade inet_frags_fini +EXPORT_SYMBOL vmlinux 0x5e215a5f genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x5e2d7337 iunique +EXPORT_SYMBOL vmlinux 0x5e521ee5 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x5e65cfac ps2_drain +EXPORT_SYMBOL vmlinux 0x5e6e8a1f skb_find_text +EXPORT_SYMBOL vmlinux 0x5e79c2a4 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x5e7b11e7 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x5e7f2c69 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea8d59e nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x5eab2711 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ece19e0 nvm_register +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee0a065 ilookup5 +EXPORT_SYMBOL vmlinux 0x5eea881f inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f1c8cf9 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x5f4e5724 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x5f5013cd filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x5f749a49 blk_free_tags +EXPORT_SYMBOL vmlinux 0x5f776e4c param_set_byte +EXPORT_SYMBOL vmlinux 0x5f85e717 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x5f8fdaf0 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x5fa3276e filemap_fault +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd432e5 xattr_full_name +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe8ff43 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x5ffbd92e sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x600170c6 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600e94a2 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x60497134 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x60563829 set_cached_acl +EXPORT_SYMBOL vmlinux 0x605dd8f1 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6078f8fa jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609bb9c4 input_inject_event +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b27984 register_shrinker +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60c22738 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x60ced942 unlock_rename +EXPORT_SYMBOL vmlinux 0x60cee5cc pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e0be44 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x60ee8c6a abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612d9164 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x613d126e skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x614ce610 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x61a34294 get_user_pages +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d67501 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x61e38f50 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x61ec8341 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x61f86e46 netdev_err +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62197099 param_ops_long +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62331501 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x623b96a6 ppp_input_error +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x6243df60 dev_trans_start +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628a363f sk_dst_check +EXPORT_SYMBOL vmlinux 0x62aa7cf2 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x62b0ee27 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x62b3cf83 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x62c116c6 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x62cec58e generic_update_time +EXPORT_SYMBOL vmlinux 0x62dfef20 arp_create +EXPORT_SYMBOL vmlinux 0x62e3229d ppp_channel_index +EXPORT_SYMBOL vmlinux 0x62fc90df param_ops_ushort +EXPORT_SYMBOL vmlinux 0x6316b185 __get_user_pages +EXPORT_SYMBOL vmlinux 0x631725f1 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63337ca6 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x6355a257 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x6368a76a padata_add_cpu +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x63721516 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638a17ec i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x639a94dd blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x639f499a simple_write_end +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63af35fe __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x63c3fbea lwtunnel_output +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c6d210 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x63d57a95 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6408dd5f xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64186f8e rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x643f53fe seq_release +EXPORT_SYMBOL vmlinux 0x64460baa isapnp_protocol +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x6459ccab bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x64644d08 pci_clear_master +EXPORT_SYMBOL vmlinux 0x6471eb38 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x648b4cd5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a3fa88 lock_fb_info +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64a7906e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64ae570d __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x64c19ded agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x64c584a1 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x64da711a iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x64e70097 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x64e90a82 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x658fbbf5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x65a06fca unregister_cdrom +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65b70746 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65c00ec1 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x65d09cfa mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f8d72d __frontswap_test +EXPORT_SYMBOL vmlinux 0x66141fbc scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x665a5e20 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x66686d21 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x666d5631 dquot_alloc +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x66832197 eth_header_parse +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x66ab0a13 mmc_add_host +EXPORT_SYMBOL vmlinux 0x66c75df1 security_path_unlink +EXPORT_SYMBOL vmlinux 0x66d3018d vme_irq_request +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66e6e8ec mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x66e9fca8 vga_tryget +EXPORT_SYMBOL vmlinux 0x66f85aa9 __init_rwsem +EXPORT_SYMBOL vmlinux 0x670a8ae0 vfs_rename +EXPORT_SYMBOL vmlinux 0x671a25ee init_net +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x672f35a2 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x673d952a pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67409c9b find_inode_nowait +EXPORT_SYMBOL vmlinux 0x6767a8c1 proc_symlink +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677c3a43 tty_lock +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c15e24 param_ops_string +EXPORT_SYMBOL vmlinux 0x67c23b8f netif_skb_features +EXPORT_SYMBOL vmlinux 0x67c810c3 simple_follow_link +EXPORT_SYMBOL vmlinux 0x67dbdf22 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x67edc2b7 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x680861b1 param_get_short +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x680fba38 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x6815b60d tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x6822855e xfrm_input +EXPORT_SYMBOL vmlinux 0x6854981b rtnl_notify +EXPORT_SYMBOL vmlinux 0x685febdd drop_super +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6882bf88 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x689b2c69 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x689c384c md_update_sb +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68ba1ba7 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x690651df done_path_create +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x691243b2 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x6914911d pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x6928aac7 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x692e6b31 seq_read +EXPORT_SYMBOL vmlinux 0x6945d877 nf_register_hook +EXPORT_SYMBOL vmlinux 0x6955716a xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x695f32fa rwsem_wake +EXPORT_SYMBOL vmlinux 0x69685dc4 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697fdf48 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x69842299 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x6985c745 devm_free_irq +EXPORT_SYMBOL vmlinux 0x6986092f tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x69886f57 mpage_readpages +EXPORT_SYMBOL vmlinux 0x6988b6dd mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699828d6 pci_save_state +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6c168 devm_memremap +EXPORT_SYMBOL vmlinux 0x69ca5581 dquot_drop +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a297473 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x6a2f6080 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a60d708 bdput +EXPORT_SYMBOL vmlinux 0x6a709a16 dev_warn +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a99f527 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x6aa0e702 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x6aa439f4 inc_nlink +EXPORT_SYMBOL vmlinux 0x6aa5c2c9 simple_getattr +EXPORT_SYMBOL vmlinux 0x6aae1bf0 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x6ac7dbfe dev_get_by_index +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af908d8 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x6b042f6b pci_get_class +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2a1b20 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6b548b3f cdev_del +EXPORT_SYMBOL vmlinux 0x6b59398e inet_stream_ops +EXPORT_SYMBOL vmlinux 0x6b64d8b5 __dax_fault +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b9a711a load_nls +EXPORT_SYMBOL vmlinux 0x6ba2d58d memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x6bbdad9f jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcf066d _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x6bd7b7ad mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x6bda4ec6 down_write_trylock +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beae2a9 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c040506 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x6c058220 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1034fa neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x6c104753 passthru_features_check +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c22d3e5 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x6c268d2d __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c469035 block_write_begin +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c621c50 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x6c6a6aa9 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7e48be xfrm_register_km +EXPORT_SYMBOL vmlinux 0x6cdb298c scsi_remove_target +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0a88e2 __sb_end_write +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1acfd6 icmp_send +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d27ddd6 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x6d2865f1 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d8122a5 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6d9c8cde __sb_start_write +EXPORT_SYMBOL vmlinux 0x6dafd6de ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x6dba99c0 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc30939 is_bad_inode +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dc6f0a5 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6dc7d539 netdev_info +EXPORT_SYMBOL vmlinux 0x6dc9b93c ns_capable +EXPORT_SYMBOL vmlinux 0x6dcb5644 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x6dd0d38c __dst_free +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0acca4 register_framebuffer +EXPORT_SYMBOL vmlinux 0x6e0fe032 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x6e10a181 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x6e13f0be pid_task +EXPORT_SYMBOL vmlinux 0x6e31538f is_nd_btt +EXPORT_SYMBOL vmlinux 0x6e334d52 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x6e388865 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x6e3903a1 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x6e5d8344 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e71e426 bdget +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e872680 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6e89b8ad alloc_fddidev +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea18572 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x6ef66e8a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x6f1bf786 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f29b82f __kfree_skb +EXPORT_SYMBOL vmlinux 0x6f2a93b8 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f4f423d fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f90d03f crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x6f94aa5f inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6fb3c639 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd2a09a bh_submit_read +EXPORT_SYMBOL vmlinux 0x6fdff228 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6ff5fe58 __vfs_read +EXPORT_SYMBOL vmlinux 0x7006cca7 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x700be88b input_unregister_handle +EXPORT_SYMBOL vmlinux 0x70174ec2 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x702ad8ef tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x70472b90 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x7047e340 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x704e5357 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x70684a69 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70731be2 inet6_release +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7088ce72 printk_emit +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x709f7ac6 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x70a3fc4c xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x70a7cd4c audit_log_start +EXPORT_SYMBOL vmlinux 0x70b3fd83 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x70bc9918 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70dfbd6f xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x70ec7723 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x70ed9755 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x70f59d14 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7123c50e __breadahead +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712c0cb4 skb_pull +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x71323342 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x71454e58 tso_start +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a6d11b agp_copy_info +EXPORT_SYMBOL vmlinux 0x71c7bc31 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x71d566cb __destroy_inode +EXPORT_SYMBOL vmlinux 0x71d842ae scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x71e008c9 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x71f14de8 sync_filesystem +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72047ef1 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x72222dff xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x72256296 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x72375551 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x72425128 nvm_register_target +EXPORT_SYMBOL vmlinux 0x725ce146 kunmap +EXPORT_SYMBOL vmlinux 0x726db32b bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x7274efe0 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x728f00c2 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x728f6086 md_done_sync +EXPORT_SYMBOL vmlinux 0x72ac64d0 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x72aed918 end_page_writeback +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b61fdd is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x72d2613b security_inode_init_security +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x7360f493 tty_kref_put +EXPORT_SYMBOL vmlinux 0x736c38f1 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738734e6 ps2_init +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x738affd1 submit_bh +EXPORT_SYMBOL vmlinux 0x73a64eae bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x73ab64cd mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x73b6597a dev_mc_flush +EXPORT_SYMBOL vmlinux 0x73bacd3b pci_request_regions +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f9aac8 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x742cdd51 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x7459545f rt6_lookup +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x7461d81f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x746587fc set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74af7180 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x74afe53b sock_create_kern +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ccb973 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x74d19b9c nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f1f451 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x74f22908 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x7501ebbb sock_no_bind +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7515004f iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x7516b6ff param_get_long +EXPORT_SYMBOL vmlinux 0x75256def tso_build_data +EXPORT_SYMBOL vmlinux 0x7525d4f7 vfs_symlink +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754bd51b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x75556a97 sk_filter +EXPORT_SYMBOL vmlinux 0x75701836 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x757df510 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75ad15b1 dup_iter +EXPORT_SYMBOL vmlinux 0x75b4747b unregister_quota_format +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75d7ffab skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x75f28380 __block_write_begin +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x75fd3d80 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x762cb6aa napi_disable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764af5d3 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765a90c2 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x7666621b do_truncate +EXPORT_SYMBOL vmlinux 0x76686c03 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76866b20 dentry_unhash +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76cd6b0b prepare_binprm +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76fcb9aa pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x76ffb99d filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x77067216 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771df6d3 netdev_alert +EXPORT_SYMBOL vmlinux 0x77443969 param_set_invbool +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x774f194f ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x7784e020 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x778538ff from_kgid +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b09913 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x77b1f283 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x77b40381 elv_add_request +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d6dd5a netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x77f2568a block_write_end +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x782b12c6 phy_device_register +EXPORT_SYMBOL vmlinux 0x78361239 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x785497f2 iget_locked +EXPORT_SYMBOL vmlinux 0x787003d0 set_device_ro +EXPORT_SYMBOL vmlinux 0x7874fe40 ping_prot +EXPORT_SYMBOL vmlinux 0x787ce575 netpoll_setup +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7886e672 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789fe3a1 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78aba819 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x78b97644 irq_to_desc +EXPORT_SYMBOL vmlinux 0x78c73b42 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x7908b845 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x79545f78 generic_perform_write +EXPORT_SYMBOL vmlinux 0x7956c825 dst_release +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7971fcd9 skb_unlink +EXPORT_SYMBOL vmlinux 0x7995632d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b94ffb xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x79bf6086 vfs_readv +EXPORT_SYMBOL vmlinux 0x79c588bb elv_rb_find +EXPORT_SYMBOL vmlinux 0x79d1a689 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x79f66ac4 dquot_enable +EXPORT_SYMBOL vmlinux 0x79fd208f sock_register +EXPORT_SYMBOL vmlinux 0x7a170d2b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x7a20b609 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a44c2b3 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7a68c5ae blk_init_queue +EXPORT_SYMBOL vmlinux 0x7a6dda64 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8a43c3 iget_failed +EXPORT_SYMBOL vmlinux 0x7a95711b wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aaa6931 register_filesystem +EXPORT_SYMBOL vmlinux 0x7ab2a1ee tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acca4fd sock_no_poll +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad9af61 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7adb4d2e phy_resume +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af21620 sock_efree +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0667cd tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b156693 dst_discard_out +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1da283 dquot_commit +EXPORT_SYMBOL vmlinux 0x7b260c96 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3b0ebf replace_mount_options +EXPORT_SYMBOL vmlinux 0x7b49c7f4 mmc_erase +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b69ffcb rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x7b9de936 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bca7637 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x7bcc0ed0 send_sig +EXPORT_SYMBOL vmlinux 0x7bdc12c0 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x7bed9bec sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c48b559 phy_start +EXPORT_SYMBOL vmlinux 0x7c514a6e inet_add_protocol +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c8b87ea dput +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cdd753a inet_listen +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7ce8d615 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf80fc5 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d12ffc9 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x7d48254c rfkill_alloc +EXPORT_SYMBOL vmlinux 0x7d4e68d9 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x7d6a6e3e eth_gro_complete +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d932258 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7d9eee03 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7da0fcbe pcie_get_mps +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dc4ef61 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df4e938 dquot_operations +EXPORT_SYMBOL vmlinux 0x7e14c3fd simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7e5c200e fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x7e5c35b1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e890805 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eec9da9 netdev_features_change +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f158d45 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2dbc29 kernel_read +EXPORT_SYMBOL vmlinux 0x7f4af557 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f6a0b65 soft_cursor +EXPORT_SYMBOL vmlinux 0x7f81d2c6 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x7fa12e4f vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x7fbe588e pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x7fc11abc d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x7fd00a73 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fecf397 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x800de91a blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x8024c5c1 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x80407e61 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x806d965e copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x80930b7f tty_do_resize +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80c4cef5 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cf61c1 param_set_copystring +EXPORT_SYMBOL vmlinux 0x80d3fc1a elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80e4e269 make_kuid +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x810ba758 bio_copy_data +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x812df5e5 posix_lock_file +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81679b89 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x8177afee ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x819345d5 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x81a51783 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x81b8acb1 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x81d2df47 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x82487a30 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x8263dee2 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8286d6cd pci_pme_capable +EXPORT_SYMBOL vmlinux 0x82870ebe netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b3bf8e dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x82d3a566 pci_select_bars +EXPORT_SYMBOL vmlinux 0x82df9794 cont_write_begin +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x832fa791 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x83382b08 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x835921f6 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x838e5e07 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a16e38 __kernel_write +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b3b271 fb_pan_display +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cb756b key_type_keyring +EXPORT_SYMBOL vmlinux 0x83f8730d vfs_writev +EXPORT_SYMBOL vmlinux 0x8400caf1 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x840100f3 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x841598da twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84379138 dquot_resume +EXPORT_SYMBOL vmlinux 0x845e0bf0 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8463e05e sk_net_capable +EXPORT_SYMBOL vmlinux 0x8467f671 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x84c73c78 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x84d36819 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x84e5a19b tcp_make_synack +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85262d41 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x85397bfa __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856afafc scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x85761988 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x85888233 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x858c6e08 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x8596f89b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e96793 bioset_free +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f23f22 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x85f5fc2c import_iovec +EXPORT_SYMBOL vmlinux 0x85fe4bf2 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x85fed007 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8605e9ec __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x861697aa mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x86182550 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867d4e96 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x86896491 may_umount_tree +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869239a8 generic_permission +EXPORT_SYMBOL vmlinux 0x869a540b sk_ns_capable +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a41273 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86bc208a udp_sendmsg +EXPORT_SYMBOL vmlinux 0x86c33604 devm_clk_put +EXPORT_SYMBOL vmlinux 0x86f4f43b write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x86fb2aa5 arp_send +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86ff16e4 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x86ff467f vme_master_request +EXPORT_SYMBOL vmlinux 0x8700b498 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x87056570 d_lookup +EXPORT_SYMBOL vmlinux 0x871847c3 put_tty_driver +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871cc4b9 read_dev_sector +EXPORT_SYMBOL vmlinux 0x8723ded6 efi +EXPORT_SYMBOL vmlinux 0x872ecb11 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x874d2789 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x8764142b nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8778a030 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x87813bd0 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x8790f42e xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x8795b2f5 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x87a4a240 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87da4eb2 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x87e3c67a mmc_detect_change +EXPORT_SYMBOL vmlinux 0x8805fe34 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x88067446 d_drop +EXPORT_SYMBOL vmlinux 0x88174de7 get_io_context +EXPORT_SYMBOL vmlinux 0x8823731e register_cdrom +EXPORT_SYMBOL vmlinux 0x882ef87f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x8832a6ac cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x889fc199 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x88c13463 to_nd_btt +EXPORT_SYMBOL vmlinux 0x88ca6e2a phy_init_eee +EXPORT_SYMBOL vmlinux 0x88cf9dce find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x88d732c5 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x88ed3726 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x88f085a0 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x88f5a4fa kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x890588be __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x8905a0ae tc_classify +EXPORT_SYMBOL vmlinux 0x892313cb reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x8923668a lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x89515fa8 flow_cache_init +EXPORT_SYMBOL vmlinux 0x897b239c inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x89908902 dquot_disable +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b7397f unload_nls +EXPORT_SYMBOL vmlinux 0x89bdbe70 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x89c2e5ce dev_set_group +EXPORT_SYMBOL vmlinux 0x89d1df60 flush_old_exec +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89df0573 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x89ea2010 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x8a066c84 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a246701 send_sig_info +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51b369 pci_find_bus +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6c475a simple_open +EXPORT_SYMBOL vmlinux 0x8a6cc623 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x8a784e5c led_set_brightness +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a8739c0 padata_stop +EXPORT_SYMBOL vmlinux 0x8a996ce8 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa4918c sk_free +EXPORT_SYMBOL vmlinux 0x8adb1095 locks_free_lock +EXPORT_SYMBOL vmlinux 0x8af913dc inet6_offloads +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b1db6da find_lock_entry +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8c1e4e scsi_device_resume +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8baab33f cdev_add +EXPORT_SYMBOL vmlinux 0x8bca7903 param_set_bint +EXPORT_SYMBOL vmlinux 0x8bd60e0b blkdev_get +EXPORT_SYMBOL vmlinux 0x8bdc829f param_ops_byte +EXPORT_SYMBOL vmlinux 0x8bdd826f key_reject_and_link +EXPORT_SYMBOL vmlinux 0x8c1032f7 noop_fsync +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c2e54ae bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x8c3a8910 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x8c450d5c skb_tx_error +EXPORT_SYMBOL vmlinux 0x8c513eba __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x8c5a257e simple_fill_super +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c91b993 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x8ca0fcf5 write_cache_pages +EXPORT_SYMBOL vmlinux 0x8caa9d7d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x8cb69d79 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x8cc32525 __scm_destroy +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce5e96a page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x8ceea749 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d615336 pci_iomap +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d9171a5 iget5_locked +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8dac3f37 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db2536e i2c_master_recv +EXPORT_SYMBOL vmlinux 0x8db5e2dd pci_read_vpd +EXPORT_SYMBOL vmlinux 0x8db7c736 set_pages_nx +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8dc7dd66 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x8dcb188f devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x8dd14420 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8de09e53 dev_notice +EXPORT_SYMBOL vmlinux 0x8df1dc99 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8df9d263 touch_atime +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e04b17d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x8e072733 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x8e07a952 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x8e171767 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x8e20ea7f kill_pgrp +EXPORT_SYMBOL vmlinux 0x8e4a0d6e set_security_override +EXPORT_SYMBOL vmlinux 0x8e4a6c33 save_mount_options +EXPORT_SYMBOL vmlinux 0x8e5e1c18 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8e670d15 pci_release_regions +EXPORT_SYMBOL vmlinux 0x8e6da4f4 bdevname +EXPORT_SYMBOL vmlinux 0x8e6fc395 down_read_trylock +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e780706 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x8e844371 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8f47ee inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x8e9968c4 vm_mmap +EXPORT_SYMBOL vmlinux 0x8e9dd97d tty_port_close +EXPORT_SYMBOL vmlinux 0x8eaabd31 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb2bbd3 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8ebea8f3 mapping_tagged +EXPORT_SYMBOL vmlinux 0x8eee9be6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x8f040ed9 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x8f079f26 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x8f12bb47 security_inode_permission +EXPORT_SYMBOL vmlinux 0x8f186cf8 init_task +EXPORT_SYMBOL vmlinux 0x8f238512 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f2dc3a0 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x8f336dfd netif_napi_del +EXPORT_SYMBOL vmlinux 0x8f4dd08a vfs_link +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f9a8b60 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fb969d9 bdget_disk +EXPORT_SYMBOL vmlinux 0x8fb96d7f udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x8fb98892 vga_con +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x900ad50b agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x901053d1 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x901a7dea swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x90338674 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x908575fe queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x90965c44 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c64699 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x90dc17dd pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x90e83468 inet_del_offload +EXPORT_SYMBOL vmlinux 0x90ee8ce2 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x90f6024e jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x910c6b6f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x91138827 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x911d67b4 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x91296231 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x9131b660 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x91415c59 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x9145737d mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91b72f1c blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x91d46b1e inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x91d97bfc scsi_execute +EXPORT_SYMBOL vmlinux 0x91eb29d8 blk_make_request +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x91fd5e29 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x92202a0d jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x922ffff4 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924911ab fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x925f6729 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x9272f6a9 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x9275a0f3 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x927a7ca3 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92e5c4d6 __register_chrdev +EXPORT_SYMBOL vmlinux 0x92e8313d __napi_schedule +EXPORT_SYMBOL vmlinux 0x92eaf668 seq_path +EXPORT_SYMBOL vmlinux 0x92f4040c follow_down_one +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93077677 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x93269b3a pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x9341eb6f generic_make_request +EXPORT_SYMBOL vmlinux 0x9355c2e0 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x9355f3e7 inet_accept +EXPORT_SYMBOL vmlinux 0x9361e66a jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x936f6f92 tty_free_termios +EXPORT_SYMBOL vmlinux 0x9376b448 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x939ecbea of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x93a5c3ff generic_listxattr +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c1e731 scsi_device_put +EXPORT_SYMBOL vmlinux 0x93d63ee3 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x93e72562 devm_memunmap +EXPORT_SYMBOL vmlinux 0x93ef40ed cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9401dabd locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940322ff new_inode +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x942806c0 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x9431fab1 nvm_end_io +EXPORT_SYMBOL vmlinux 0x94389662 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x943a7589 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x94539f69 sget +EXPORT_SYMBOL vmlinux 0x945a0ea2 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x947403b0 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x949096da cdev_alloc +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949f7965 vfs_read +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94d0d270 fb_get_mode +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f4dec5 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954dfb57 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9553da85 udp_ioctl +EXPORT_SYMBOL vmlinux 0x9559ec2d ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9581f4f5 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x9589ed01 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x95904dac agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x95b77c70 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95bd8ae8 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x95c5259d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x95e1f3d3 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x960d903f seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x9614d801 free_page_put_link +EXPORT_SYMBOL vmlinux 0x9618687f msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x96281736 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x962b2e3f get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x964431dd cdrom_open +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969d6571 ht_create_irq +EXPORT_SYMBOL vmlinux 0x96bb74da vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x96c50ea9 input_register_handler +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cd456d pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x96d1c098 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x96de91c4 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x96f51bfa nobh_write_end +EXPORT_SYMBOL vmlinux 0x96f5842d inet_sendpage +EXPORT_SYMBOL vmlinux 0x9715d1cd __devm_request_region +EXPORT_SYMBOL vmlinux 0x971a209f __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x971e1552 netif_napi_add +EXPORT_SYMBOL vmlinux 0x973a2006 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x973a624b __inet_hash +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x977f9a7b skb_clone +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b7ab02 __free_pages +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x9814c7a5 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9839460f file_ns_capable +EXPORT_SYMBOL vmlinux 0x983a60d6 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x984a6763 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986f115f agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x9891d15c d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x98afd10d kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x98afd9c3 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x98b0d0f4 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x98b6d527 seq_vprintf +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98fe3384 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x991423cf key_validate +EXPORT_SYMBOL vmlinux 0x991de83d security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993dbcb1 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x9943ef95 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x994d98d1 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x99628d67 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x996ae5ba blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x997b0ceb qdisc_list_del +EXPORT_SYMBOL vmlinux 0x9987bf8e inet_recvmsg +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9999866d blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99add0b6 param_ops_bint +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99decdfc jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x99e4c98c scm_detach_fds +EXPORT_SYMBOL vmlinux 0x9a0a5f62 blk_get_queue +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1f8bc9 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a33f6a2 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a6f8b7a insert_inode_locked +EXPORT_SYMBOL vmlinux 0x9a72b09a filemap_map_pages +EXPORT_SYMBOL vmlinux 0x9a7d0528 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x9a8a0670 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x9ab480b3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x9ae6b504 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af693c5 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x9af95028 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x9b078e9f xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b447631 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9b572802 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b6ed0aa dentry_open +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb0e2a0 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9bb79e84 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bd6e049 nf_reinject +EXPORT_SYMBOL vmlinux 0x9be3ad17 dev_uc_init +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c00bd5b blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x9c06c745 inet_add_offload +EXPORT_SYMBOL vmlinux 0x9c0e9b4f ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9c1a9e5d padata_free +EXPORT_SYMBOL vmlinux 0x9c21b49f dev_addr_add +EXPORT_SYMBOL vmlinux 0x9c233b68 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c388fcb __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c58f54d dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x9c74daea bio_split +EXPORT_SYMBOL vmlinux 0x9c8fb2c7 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x9ca46c7f dev_add_offload +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cd92e73 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9cef72ef __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d24e3e1 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x9d262847 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9d29cb56 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3adaab scsi_register_driver +EXPORT_SYMBOL vmlinux 0x9d3c8122 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x9d4a4bf8 write_inode_now +EXPORT_SYMBOL vmlinux 0x9d4e8d86 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x9d547478 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x9d560fa0 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x9d636c90 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x9d6c38c5 generic_writepages +EXPORT_SYMBOL vmlinux 0x9d72c56e register_netdev +EXPORT_SYMBOL vmlinux 0x9d7d0838 kill_block_super +EXPORT_SYMBOL vmlinux 0x9d8b2aad ip6_frag_match +EXPORT_SYMBOL vmlinux 0x9da216b7 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x9db821dd kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x9dbc61d2 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x9dc3ff02 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x9dc4c2db mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x9dcc35fc free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9ddaa6ed generic_write_checks +EXPORT_SYMBOL vmlinux 0x9ddc70e7 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x9de2f62c tcp_disconnect +EXPORT_SYMBOL vmlinux 0x9de6768c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e087753 phy_driver_register +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0db163 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e4fce5b netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9e61596c register_md_personality +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6f0815 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9eaf4194 dev_base_lock +EXPORT_SYMBOL vmlinux 0x9eb2b336 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec29efa pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9ecdee24 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x9ecf9959 dma_pool_create +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9ee89b48 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x9eee81ed generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9f093db1 sock_no_accept +EXPORT_SYMBOL vmlinux 0x9f46340a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6fb29a dev_change_carrier +EXPORT_SYMBOL vmlinux 0x9f8fd094 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x9f95ffe4 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9b5fc7 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x9fa49bd8 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x9fa4c6e3 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9fa5e085 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x9fb4e171 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x9fb6ae6e rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x9fbf6d52 tty_set_operations +EXPORT_SYMBOL vmlinux 0x9fc29fc1 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x9fc3481b bdi_init +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe300df make_kgid +EXPORT_SYMBOL vmlinux 0x9fe32a45 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x9ff7356a device_get_mac_address +EXPORT_SYMBOL vmlinux 0x9ff840a6 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa01244f2 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa01b5a0c copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xa0209500 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xa02c7bb0 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa03f81e5 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa0460603 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa072b959 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08a3b87 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xa090a41f devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bd6334 udp_poll +EXPORT_SYMBOL vmlinux 0xa0c2b4e1 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xa0ce1bde phy_attach +EXPORT_SYMBOL vmlinux 0xa0da1131 generic_read_dir +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e331c6 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0facf7c down_write +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b1fe8 blk_end_request +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa1876b0d audit_log_task_info +EXPORT_SYMBOL vmlinux 0xa18c995a xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xa19798b9 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xa19c2483 elevator_change +EXPORT_SYMBOL vmlinux 0xa1b18a80 sg_miter_next +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1ce993a inet6_protos +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f011b5 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xa1f12d05 inet_put_port +EXPORT_SYMBOL vmlinux 0xa1f46369 netdev_update_features +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20a0c59 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xa20bc792 prepare_creds +EXPORT_SYMBOL vmlinux 0xa223a532 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xa22a23f8 migrate_page +EXPORT_SYMBOL vmlinux 0xa2500cf3 elevator_exit +EXPORT_SYMBOL vmlinux 0xa25612f5 proto_register +EXPORT_SYMBOL vmlinux 0xa25c95ba nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a09723 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xa2d8ae4a input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xa2dd6aa6 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xa2e7fcda to_ndd +EXPORT_SYMBOL vmlinux 0xa2fe7887 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xa31b9f46 ps2_end_command +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31c4ba5 dquot_destroy +EXPORT_SYMBOL vmlinux 0xa335b4f5 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xa33a8f26 path_noexec +EXPORT_SYMBOL vmlinux 0xa34ad89a nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa357abe8 module_refcount +EXPORT_SYMBOL vmlinux 0xa35b144c napi_get_frags +EXPORT_SYMBOL vmlinux 0xa36ede2e max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa39f946d mmc_release_host +EXPORT_SYMBOL vmlinux 0xa3a8a1b5 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa3c94ae7 put_io_context +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3e91a5a free_task +EXPORT_SYMBOL vmlinux 0xa3fef745 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xa4032343 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xa41e6adc d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa449f448 nf_log_trace +EXPORT_SYMBOL vmlinux 0xa46d9a5e vme_register_bridge +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa48b9032 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xa4af52a3 seq_puts +EXPORT_SYMBOL vmlinux 0xa4b43d50 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f9c3c6 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa535eb5a tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5610aa6 phy_init_hw +EXPORT_SYMBOL vmlinux 0xa564b037 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xa575985c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xa58e82b7 param_ops_int +EXPORT_SYMBOL vmlinux 0xa5957cd2 mutex_trylock +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ba11e6 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xa5bdf7af nobh_write_begin +EXPORT_SYMBOL vmlinux 0xa5d4ebfc generic_readlink +EXPORT_SYMBOL vmlinux 0xa5e7168f udp_set_csum +EXPORT_SYMBOL vmlinux 0xa6008b3d pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xa609f8ed md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xa6278dbc find_get_entry +EXPORT_SYMBOL vmlinux 0xa62cb20d devm_ioremap +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6535bf1 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa66356bf nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xa66dccd8 param_array_ops +EXPORT_SYMBOL vmlinux 0xa670afc8 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69b3db6 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6c6327e dget_parent +EXPORT_SYMBOL vmlinux 0xa6ce2d00 update_region +EXPORT_SYMBOL vmlinux 0xa6e3c021 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa6fe3e69 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7012d29 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa7127076 genphy_read_status +EXPORT_SYMBOL vmlinux 0xa7316bd3 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7423043 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xa7498dcb iput +EXPORT_SYMBOL vmlinux 0xa7839226 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7ad93b6 brioctl_set +EXPORT_SYMBOL vmlinux 0xa7b51884 x86_hyper +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7da326f eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xa7f1e2f4 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xa7fddfb3 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xa7fea7c7 tcp_prot +EXPORT_SYMBOL vmlinux 0xa8011d50 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xa803b9b7 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa837f744 sg_miter_start +EXPORT_SYMBOL vmlinux 0xa83c8085 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa854235f param_get_ullong +EXPORT_SYMBOL vmlinux 0xa85ee881 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa863e572 __napi_complete +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa876d267 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xa89c015b may_umount +EXPORT_SYMBOL vmlinux 0xa8bc77d1 set_disk_ro +EXPORT_SYMBOL vmlinux 0xa8e3f529 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90642e6 mntget +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9491138 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xa96ad5e4 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xa9712e89 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97ff6f2 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xa986cda7 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xa99f7c8c sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b4050c pci_map_rom +EXPORT_SYMBOL vmlinux 0xa9c34ec1 alloc_disk +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9cab2ee pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xa9cacde7 dev_addr_del +EXPORT_SYMBOL vmlinux 0xa9cbcdbd d_walk +EXPORT_SYMBOL vmlinux 0xa9d49f39 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xa9db83e3 sk_stream_error +EXPORT_SYMBOL vmlinux 0xaa03664f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xaa15d150 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xaa376deb kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaa3aa8eb unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xaa3cc22b page_readlink +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6d9312 __neigh_create +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaa925860 __vfs_write +EXPORT_SYMBOL vmlinux 0xaa975cdc pnp_start_dev +EXPORT_SYMBOL vmlinux 0xaaa57929 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xaaa705d2 __brelse +EXPORT_SYMBOL vmlinux 0xaab38c84 follow_down +EXPORT_SYMBOL vmlinux 0xaab49705 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab00fb46 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab57c2ad gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab60e38b file_open_root +EXPORT_SYMBOL vmlinux 0xab6490fc tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6dba2f set_trace_device +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xaba3159c gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabc6a6b0 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabdd8993 pci_dev_get +EXPORT_SYMBOL vmlinux 0xabfbd75f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac051b63 unregister_key_type +EXPORT_SYMBOL vmlinux 0xac063f0c ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2ebc98 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac514377 uart_match_port +EXPORT_SYMBOL vmlinux 0xac59a451 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xac7652da netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xac83f8e2 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb78fb8 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd2faa5 devm_iounmap +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdf91c1 dev_deactivate +EXPORT_SYMBOL vmlinux 0xacf0db78 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1f5856 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xad1f5d01 nobh_writepage +EXPORT_SYMBOL vmlinux 0xad288789 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xad469a5b generic_write_end +EXPORT_SYMBOL vmlinux 0xad476ea3 setup_new_exec +EXPORT_SYMBOL vmlinux 0xad547243 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xad5aefc8 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xad5e811c key_revoke +EXPORT_SYMBOL vmlinux 0xad6812ad phy_print_status +EXPORT_SYMBOL vmlinux 0xad686332 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad719137 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xad763fe8 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xad83756c udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadc57faf generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xadcc06e1 filemap_flush +EXPORT_SYMBOL vmlinux 0xadcf0138 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xade7a024 simple_write_begin +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae3231f3 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xae409d4c cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xae44dbf0 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xae53cfd8 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xae679726 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7ff97e elevator_init +EXPORT_SYMBOL vmlinux 0xae82439a __module_get +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae9325da __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeabf0dc dentry_path_raw +EXPORT_SYMBOL vmlinux 0xaeb338d6 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xaebd494b udp_prot +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaedb0d87 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xaedce77b mark_page_accessed +EXPORT_SYMBOL vmlinux 0xaee01eed dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xaefc9523 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xaf0a98ba devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xaf1d8e84 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xaf21092f unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xaf3608f3 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4a89c3 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf865f08 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xaf988d46 __register_binfmt +EXPORT_SYMBOL vmlinux 0xafba3608 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xafc4b78c xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xafeac19a unlock_page +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb020d302 __get_page_tail +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb074d2f4 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb09a2c42 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e65a86 d_alloc_name +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f29264 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xb0fa7714 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb126da31 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb132558b skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xb1333a75 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xb138119b blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xb142334d input_free_device +EXPORT_SYMBOL vmlinux 0xb1513900 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb1898459 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xb199be45 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb19d1815 page_address +EXPORT_SYMBOL vmlinux 0xb1c12c31 inet_bind +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1e2033a mdiobus_read +EXPORT_SYMBOL vmlinux 0xb1f4f9d4 current_task +EXPORT_SYMBOL vmlinux 0xb208aa94 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb21a8e6d vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xb22b9a4f generic_setlease +EXPORT_SYMBOL vmlinux 0xb23856e4 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xb248cac1 seq_escape +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26f8376 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xb27fbbf1 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xb28bb8e5 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb29945e0 scsi_host_put +EXPORT_SYMBOL vmlinux 0xb29f87f8 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c51245 sock_no_getname +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2d8fbfc dm_put_table_device +EXPORT_SYMBOL vmlinux 0xb2f358ba input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb2fda426 follow_up +EXPORT_SYMBOL vmlinux 0xb3151e08 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb32e75b5 security_path_symlink +EXPORT_SYMBOL vmlinux 0xb347c4b1 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xb34f137c abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35690bb kdb_current_task +EXPORT_SYMBOL vmlinux 0xb35b2024 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb35d4ab5 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xb380fa39 elv_register_queue +EXPORT_SYMBOL vmlinux 0xb39ef76b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xb3a8ef8f sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xb3b75a3f inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xb3bcd43e ip_defrag +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d7a60b skb_pad +EXPORT_SYMBOL vmlinux 0xb3dcec40 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3f34134 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xb3f6ad08 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fc3d89 elevator_alloc +EXPORT_SYMBOL vmlinux 0xb4029be6 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0xb40ca60b simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb40eb203 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xb41fc8c4 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4459fa8 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb46b0d41 dm_io +EXPORT_SYMBOL vmlinux 0xb46f7c7f __elv_add_request +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47d9d3e param_set_bool +EXPORT_SYMBOL vmlinux 0xb48c997e request_firmware +EXPORT_SYMBOL vmlinux 0xb4a331d8 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb4dabcae xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xb4e12bf7 phy_detach +EXPORT_SYMBOL vmlinux 0xb4ede0dc set_pages_x +EXPORT_SYMBOL vmlinux 0xb4effd1e sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xb4fc32db cdev_init +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb522c505 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb5517476 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xb55339fc current_fs_time +EXPORT_SYMBOL vmlinux 0xb565932d bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5761284 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xb58f09fb neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xb58fe2ec give_up_console +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5acb7dd param_set_ullong +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5fb72e4 kmap_high +EXPORT_SYMBOL vmlinux 0xb616dec8 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62fe630 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb646a2a7 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6916b1a scsi_host_get +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ac58aa elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xb6be2f85 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xb6de2351 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f3dd90 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xb6f8cb51 pnp_find_dev +EXPORT_SYMBOL vmlinux 0xb732651c eisa_driver_register +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb749ae7d __frontswap_load +EXPORT_SYMBOL vmlinux 0xb7547f96 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb773699e truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xb7880b9e d_obtain_root +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb79fbbf5 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xb7a1d149 revert_creds +EXPORT_SYMBOL vmlinux 0xb7a47116 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xb7ec33ab lwtunnel_input +EXPORT_SYMBOL vmlinux 0xb7f05d18 dev_printk +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb8108ae2 filp_open +EXPORT_SYMBOL vmlinux 0xb8145c3e fb_blank +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8311185 lease_modify +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8581f5a vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8812008 dm_get_device +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb88f3abb inode_set_bytes +EXPORT_SYMBOL vmlinux 0xb89595d5 phy_suspend +EXPORT_SYMBOL vmlinux 0xb89facc6 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb8a4a7d9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xb8a6ee8c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f134b6 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xb8f67ff7 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb92ca3a4 __getblk_slow +EXPORT_SYMBOL vmlinux 0xb93a3893 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xb93d013f km_query +EXPORT_SYMBOL vmlinux 0xb9642f8a vlan_vid_add +EXPORT_SYMBOL vmlinux 0xb970b6e3 unregister_console +EXPORT_SYMBOL vmlinux 0xb988c20b sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb9a2c165 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xb9a5a4ba neigh_connected_output +EXPORT_SYMBOL vmlinux 0xb9aba277 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xb9c03817 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xb9d709df netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xb9e23061 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f8fa10 param_set_ushort +EXPORT_SYMBOL vmlinux 0xba0578be proc_set_user +EXPORT_SYMBOL vmlinux 0xba0e9f47 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xba0f73b9 sock_i_ino +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba368113 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xba3a75d4 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba74a896 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xba76077e netif_device_detach +EXPORT_SYMBOL vmlinux 0xba799779 fb_set_var +EXPORT_SYMBOL vmlinux 0xba8ab2de security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xba9444e3 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xbaa2745b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xbab64053 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbad66864 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xbaf42cb6 __page_symlink +EXPORT_SYMBOL vmlinux 0xbaf73b6e neigh_parms_release +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb15511f blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3fe57a xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xbb52b4e0 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb633cd1 tty_port_open +EXPORT_SYMBOL vmlinux 0xbb8bc5fa handle_edge_irq +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbbae379 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xbbdc4ccd bdgrab +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbc132689 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc532fbd eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xbc70e0d2 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xbc76ec3d bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xbc8807f0 request_key +EXPORT_SYMBOL vmlinux 0xbc96793f param_get_byte +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd4a9c6 dma_find_channel +EXPORT_SYMBOL vmlinux 0xbce3bf18 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xbce8bd60 __genl_register_family +EXPORT_SYMBOL vmlinux 0xbcfa7430 dump_align +EXPORT_SYMBOL vmlinux 0xbd02a0c4 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xbd0bdb34 account_page_redirty +EXPORT_SYMBOL vmlinux 0xbd22d597 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbd35f5a0 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xbd41d52f linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xbd52a759 mount_ns +EXPORT_SYMBOL vmlinux 0xbd6aec50 consume_skb +EXPORT_SYMBOL vmlinux 0xbd8610d3 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xbd8663fa locks_init_lock +EXPORT_SYMBOL vmlinux 0xbd8d3dbb jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda1feb1 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xbda59c8a truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xbda5c834 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdd15b71 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xbdee5108 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xbdf18070 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xbe096d24 audit_log +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe69c1ec inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe8c5697 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xbe8ca822 __bread_gfp +EXPORT_SYMBOL vmlinux 0xbe967121 neigh_xmit +EXPORT_SYMBOL vmlinux 0xbea5f0e2 kill_anon_super +EXPORT_SYMBOL vmlinux 0xbea6ee5d blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xbeb3f7fe dma_ops +EXPORT_SYMBOL vmlinux 0xbec0dc99 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbed6c6c9 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef58d58 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xbf10eef1 dev_add_pack +EXPORT_SYMBOL vmlinux 0xbf239286 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xbf26d38f genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xbf27f2c2 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xbf32b742 pci_bus_put +EXPORT_SYMBOL vmlinux 0xbf61351c tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf873f93 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc81eed security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xbfca3c9f netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbfeefdce tty_hangup +EXPORT_SYMBOL vmlinux 0xbffbeb25 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xc0001b80 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc00cd6f6 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc02059f6 neigh_lookup +EXPORT_SYMBOL vmlinux 0xc02f2bfd jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xc055daaf cfb_imageblit +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc063d8f7 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xc0648ca2 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0690709 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc071a862 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09ca358 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ade451 get_empty_filp +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0d13910 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc0e29a19 copy_from_iter +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc106ec82 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xc116bae5 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ed533 skb_seq_read +EXPORT_SYMBOL vmlinux 0xc136e3c8 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc141c3bf blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xc169f34d blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xc16e1e80 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc16e34e5 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xc18485a7 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xc1859200 blk_finish_request +EXPORT_SYMBOL vmlinux 0xc18ad167 netlink_unicast +EXPORT_SYMBOL vmlinux 0xc19f42eb max8925_set_bits +EXPORT_SYMBOL vmlinux 0xc1cedae9 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc1d25a66 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xc1d76cfa __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1db1da6 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ebd442 ata_print_version +EXPORT_SYMBOL vmlinux 0xc1f33744 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xc21b93d4 thaw_bdev +EXPORT_SYMBOL vmlinux 0xc2392ac0 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc262b0db uart_register_driver +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc282cc95 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2a89da9 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b1bde9 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2dcca52 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xc2e22a19 __put_cred +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e99f86 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc2f2ef4d iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xc2f3e5e9 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc31db4d4 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xc3425664 phy_device_free +EXPORT_SYMBOL vmlinux 0xc3477eee blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xc347e75e nlmsg_notify +EXPORT_SYMBOL vmlinux 0xc35261c5 generic_file_open +EXPORT_SYMBOL vmlinux 0xc3696264 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xc39c0c9a phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xc3a2b863 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xc3a357cb dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xc3a4b3e2 netdev_state_change +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3fe21ef pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc4005189 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xc40a87ab km_state_expired +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc4488850 fb_find_mode +EXPORT_SYMBOL vmlinux 0xc4580056 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc45cff48 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xc46532e8 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xc46b3f19 nf_log_packet +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49e7526 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xc4ae03c7 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xc4b1a34b tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xc4ba6210 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xc4bfdaa0 scmd_printk +EXPORT_SYMBOL vmlinux 0xc4d7853b irq_set_chip +EXPORT_SYMBOL vmlinux 0xc4e9ab3a dm_unregister_target +EXPORT_SYMBOL vmlinux 0xc4ee0f44 submit_bio +EXPORT_SYMBOL vmlinux 0xc4f558c1 kill_bdev +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc51a7565 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xc54333fb scsi_register_interface +EXPORT_SYMBOL vmlinux 0xc5456340 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc570b75e d_rehash +EXPORT_SYMBOL vmlinux 0xc57cca3c task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xc5872827 input_flush_device +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5d6ca8e agp_put_bridge +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dcf778 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc607a193 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xc60afbf3 agp_create_memory +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc624a184 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc646a74a bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc67a09fe intel_gtt_get +EXPORT_SYMBOL vmlinux 0xc6865f70 register_quota_format +EXPORT_SYMBOL vmlinux 0xc69e45f7 textsearch_register +EXPORT_SYMBOL vmlinux 0xc6a32c95 pcim_iomap +EXPORT_SYMBOL vmlinux 0xc6a44164 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c3b514 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d6e4dc ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xc6f5bee0 __lock_page +EXPORT_SYMBOL vmlinux 0xc7037e2b abx500_register_ops +EXPORT_SYMBOL vmlinux 0xc70ca47b bio_advance +EXPORT_SYMBOL vmlinux 0xc71d1db7 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7233d38 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xc73c6b36 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc757e2e6 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xc76487af xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77d2174 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7af26e1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xc7de11ff pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc7e89284 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc8154ab6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xc81a5b71 udp_del_offload +EXPORT_SYMBOL vmlinux 0xc823b325 __mutex_init +EXPORT_SYMBOL vmlinux 0xc827215a vme_master_mmap +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82c5c58 dev_get_flags +EXPORT_SYMBOL vmlinux 0xc82df5a5 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84bedd0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xc861aeda pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xc8700997 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a1c305 put_filp +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b7e5fa mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xc8eb11b3 mdiobus_free +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91c953b serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xc93280b7 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xc94ceb3f netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xc962d021 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xc9634bac module_layout +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc99b92da dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9a81b41 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xc9c121e7 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca22c57b sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xca2461c9 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca46540b bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xca6fbcf7 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xca75758d simple_pin_fs +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8e24fc bio_put +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca97fbd6 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xcac0e41b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xcac2cfd0 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xcad59373 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xcad66acb seq_dentry +EXPORT_SYMBOL vmlinux 0xcadf4312 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xcae4bb5f pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0xcae93c75 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xcae94fe9 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xcaedda80 blk_start_queue +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafc4f67 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb02ddc5 nvm_get_blk +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb7fd52f bd_set_size +EXPORT_SYMBOL vmlinux 0xcb8d7be9 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xcb9fdf12 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xcba4d504 pci_iounmap +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb0fa6a __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcbbe9248 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc31b14 vga_get +EXPORT_SYMBOL vmlinux 0xcbc651db make_bad_inode +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd9cc18 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee8f60 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xcc18800d serio_rescan +EXPORT_SYMBOL vmlinux 0xcc21766f mpage_writepages +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc55e98e pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xcc6707b6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xcc7f5aad udp_seq_open +EXPORT_SYMBOL vmlinux 0xcc82add3 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc8d3f4f acpi_os_execute +EXPORT_SYMBOL vmlinux 0xcc9c09d6 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcca50c5b phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd0ce4da __sock_create +EXPORT_SYMBOL vmlinux 0xcd13dc7c ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xcd1e5b96 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xcd266345 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd40b1cf touch_buffer +EXPORT_SYMBOL vmlinux 0xcd5437dd phy_stop +EXPORT_SYMBOL vmlinux 0xcd5b39a9 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd832a97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xcd8439da dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xcd8eaad0 mntput +EXPORT_SYMBOL vmlinux 0xcd93de56 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xcd9dae85 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xcdaefa4f scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdca5334 phy_disconnect +EXPORT_SYMBOL vmlinux 0xcdd8bd65 tcf_em_register +EXPORT_SYMBOL vmlinux 0xcde10dce fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xce110f11 d_delete +EXPORT_SYMBOL vmlinux 0xce1f0f41 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3689a1 kobject_del +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce874476 sock_from_file +EXPORT_SYMBOL vmlinux 0xce8e7f3a xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xce98b43c scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xcea027a0 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xceeeb23a blk_put_queue +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcefe98f2 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xcf21e19b napi_gro_flush +EXPORT_SYMBOL vmlinux 0xcf29142d input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xcf36692d splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcf38b5fc blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xcf4ac085 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xcf564f96 softnet_data +EXPORT_SYMBOL vmlinux 0xcf65c1f2 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6ea806 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xcf7316c4 ihold +EXPORT_SYMBOL vmlinux 0xcfd4664c misc_deregister +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfe9c523 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xd0004357 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xd02d15ca devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xd064659d jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xd06817b6 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b560b0 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xd0bbcb7e jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xd0c49d4a init_buffer +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0e38a24 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd0ed7e8a sk_wait_data +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0eefd84 init_special_inode +EXPORT_SYMBOL vmlinux 0xd0ef5188 netdev_warn +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd0ffac1e __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd10421e0 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xd11786b0 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xd12d32fc devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xd149ca27 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18dc420 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d6f578 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e1836e pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xd1edafe8 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xd1f5e525 input_event +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1ff6bf1 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd20f3020 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd21d4da5 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xd2212a25 arch_dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd267f24d iov_iter_init +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28599d5 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xd2989322 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd2ab3678 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2bffb82 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xd2ca6d37 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd320f96c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xd346d7f3 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xd347bde3 mpage_writepage +EXPORT_SYMBOL vmlinux 0xd35e991b dcb_getapp +EXPORT_SYMBOL vmlinux 0xd3775ed7 netdev_printk +EXPORT_SYMBOL vmlinux 0xd38721ec netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xd395667f input_release_device +EXPORT_SYMBOL vmlinux 0xd3a85f79 complete_request_key +EXPORT_SYMBOL vmlinux 0xd3b7fbed blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd3b8ba7d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xd3ba3e5a mem_map +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c040e8 kernel_write +EXPORT_SYMBOL vmlinux 0xd3c37e1c bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xd3d0f50c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xd40af0a8 abort_creds +EXPORT_SYMBOL vmlinux 0xd41d2d24 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xd443532a xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xd44becac nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xd44f254b pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xd477b74e scsi_init_io +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4d7a551 kunmap_high +EXPORT_SYMBOL vmlinux 0xd4e6a14d scsi_remove_host +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd5195e23 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd52a4bb1 key_unlink +EXPORT_SYMBOL vmlinux 0xd52dc7b9 mmc_free_host +EXPORT_SYMBOL vmlinux 0xd52eb877 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xd535c9d8 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd57263c2 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xd57c6ab7 ata_link_printk +EXPORT_SYMBOL vmlinux 0xd58861a4 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xd58cc6c0 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xd59274a0 eth_header_cache +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd59909e8 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd59a73f9 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xd59e3111 icmpv6_send +EXPORT_SYMBOL vmlinux 0xd59e7c46 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xd5baa18b __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xd5e170c8 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd600a183 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd625a456 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65930d5 vc_resize +EXPORT_SYMBOL vmlinux 0xd659ce95 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xd681a71a con_is_bound +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68e1d1b _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6be3bef scsi_print_command +EXPORT_SYMBOL vmlinux 0xd6c2d311 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xd6cc8ef8 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd70a84bf vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xd7237dd4 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7443e50 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd769c1a2 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd77530cd abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xd7826fa5 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xd78814d2 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7adc71d kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xd7c75aaa mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xd7d1b6cc console_start +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7dd79b3 unregister_netdev +EXPORT_SYMBOL vmlinux 0xd7ded85c remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xd7df067a kernel_sendpage +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd87521e0 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e29e83 udp_proc_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e4b43d md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xd8e6e158 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd90a9bff posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xd91aa685 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xd91db258 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd9335664 unregister_nls +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95c0252 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xd966ddc2 __do_once_done +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9d083ea sk_receive_skb +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e4a502 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xd9e6ef93 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xd9f1ae5b vga_put +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda0fbf7c __netif_schedule +EXPORT_SYMBOL vmlinux 0xda34ee6a tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda40d7b6 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xda5ebf21 input_get_keycode +EXPORT_SYMBOL vmlinux 0xda623488 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xda6437b6 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7d0564 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xda829f2d clocksource_unregister +EXPORT_SYMBOL vmlinux 0xda89e862 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabf72e6 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad4037b seq_printf +EXPORT_SYMBOL vmlinux 0xdad40e82 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xdad73653 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0xdad9ba35 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xdaf8d40e devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xdb03cce2 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xdb06e948 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xdb07f533 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xdb08f0bb neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xdb2f5de0 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xdb478de2 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xdb540283 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7907de pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xdb7bdd96 pci_match_id +EXPORT_SYMBOL vmlinux 0xdb7fc7da invalidate_bdev +EXPORT_SYMBOL vmlinux 0xdb9cc3bf blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xdb9ebf89 param_ops_charp +EXPORT_SYMBOL vmlinux 0xdba0220b agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xdba42adb pnp_register_driver +EXPORT_SYMBOL vmlinux 0xdbb95148 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xdbbc6a23 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xdbca233e pnp_device_detach +EXPORT_SYMBOL vmlinux 0xdbcc76f6 bmap +EXPORT_SYMBOL vmlinux 0xdbd60f8f param_get_uint +EXPORT_SYMBOL vmlinux 0xdbea710f dquot_release +EXPORT_SYMBOL vmlinux 0xdbef23d7 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xdbf00f09 arp_xmit +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2866e4 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc46aebc kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc4b9643 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc69bd2d tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xdc775903 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xdc785384 secpath_dup +EXPORT_SYMBOL vmlinux 0xdc8bd3c4 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xdc917a4d fsync_bdev +EXPORT_SYMBOL vmlinux 0xdcc1f3bf tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xdce15bcc jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0fb595 lock_rename +EXPORT_SYMBOL vmlinux 0xdd12178f blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xdd13cf4a console_stop +EXPORT_SYMBOL vmlinux 0xdd30739b max8925_reg_read +EXPORT_SYMBOL vmlinux 0xdd80d491 should_remove_suid +EXPORT_SYMBOL vmlinux 0xddac2ed9 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xddccda05 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xddf776ca cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde2f3a42 __register_nls +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde74b759 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xde79e18d unregister_filesystem +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde95bee8 dquot_transfer +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeaa5457 simple_empty +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdef16b4d param_get_ushort +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf21052f scsi_unregister +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3ea57d ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xdf45c779 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xdf4fc797 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xdf51ff33 udp_add_offload +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf58c878 dump_emit +EXPORT_SYMBOL vmlinux 0xdf5b8fd5 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6fbf5e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xdf793739 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8caa16 sk_alloc +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfbddce1 vfs_getattr +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc92d9a vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfe8a962 arp_tbl +EXPORT_SYMBOL vmlinux 0xdfeb67a9 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe004796b fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xe03f4400 up_read +EXPORT_SYMBOL vmlinux 0xe042e374 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xe04ac63f ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0732566 netdev_emerg +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe082f78e simple_setattr +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0866607 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xe087c82e scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xe09cf93e bio_map_kern +EXPORT_SYMBOL vmlinux 0xe09f773a csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0a8c9dd tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b5d0f0 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xe0b8867b param_get_invbool +EXPORT_SYMBOL vmlinux 0xe0e30b91 dump_skip +EXPORT_SYMBOL vmlinux 0xe10dc351 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xe10e8dfa qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe119e1d1 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xe11b76eb vme_irq_free +EXPORT_SYMBOL vmlinux 0xe1216f93 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13e094a writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe16b9ae4 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17adb79 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xe19820de first_ec +EXPORT_SYMBOL vmlinux 0xe1a3abdf tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xe1b68cac x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xe1c49a04 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xe1f36e4f dev_addr_flush +EXPORT_SYMBOL vmlinux 0xe1f51879 netif_device_attach +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20391cb proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe20d2ec5 iterate_mounts +EXPORT_SYMBOL vmlinux 0xe22d6531 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2426277 neigh_destroy +EXPORT_SYMBOL vmlinux 0xe245a52e netdev_crit +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25663fa mmc_of_parse +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe26438ce tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xe2722fb6 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xe27646d8 vfs_write +EXPORT_SYMBOL vmlinux 0xe27ec163 d_make_root +EXPORT_SYMBOL vmlinux 0xe286cdf5 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xe28bbaff tcp_connect +EXPORT_SYMBOL vmlinux 0xe28ea52e dev_change_flags +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f0c6d4 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe30ed4e3 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3243652 clk_add_alias +EXPORT_SYMBOL vmlinux 0xe3382070 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe35148bf padata_alloc +EXPORT_SYMBOL vmlinux 0xe355459c iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xe35a6962 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe3782c8c posix_test_lock +EXPORT_SYMBOL vmlinux 0xe37ff657 keyring_search +EXPORT_SYMBOL vmlinux 0xe3856a8f pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xe3ba42e9 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3cf2cc1 tty_write_room +EXPORT_SYMBOL vmlinux 0xe3d59dcf inet_frag_kill +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d9285e skb_queue_head +EXPORT_SYMBOL vmlinux 0xe3e47840 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xe3ee4220 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe41002f5 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe475eaf4 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a73dec acpi_device_hid +EXPORT_SYMBOL vmlinux 0xe4c17741 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xe4d1520b udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe503d8d3 kernel_bind +EXPORT_SYMBOL vmlinux 0xe508f8ed xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe510dc6c devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xe512c31d mfd_add_devices +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe56bd0f1 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57dedf6 commit_creds +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58af171 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xe58c87a0 neigh_table_init +EXPORT_SYMBOL vmlinux 0xe5976772 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xe5985b61 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xe5a3edce param_set_uint +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f22c25 skb_insert +EXPORT_SYMBOL vmlinux 0xe6138a48 acl_by_type +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe6195a11 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xe62a9f32 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe63e08fd vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe690ba93 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe6ba0753 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f6fde0 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe703306f xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe75bda24 free_user_ns +EXPORT_SYMBOL vmlinux 0xe778cb58 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xe77e7398 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe787aba0 inet_select_addr +EXPORT_SYMBOL vmlinux 0xe79e40b1 get_super +EXPORT_SYMBOL vmlinux 0xe7a18dd4 block_truncate_page +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7b95047 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xe7c078cc phy_device_remove +EXPORT_SYMBOL vmlinux 0xe7d1e2e8 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d9f114 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xe7dd3a36 kernel_listen +EXPORT_SYMBOL vmlinux 0xe7fd8855 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xe800ece6 mount_nodev +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe83555ff blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe845b19b blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xe866dfac agp_enable +EXPORT_SYMBOL vmlinux 0xe8688373 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe870f13d ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xe8779581 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe87c5af1 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xe891d540 i2c_transfer +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8b768e2 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xe8be5966 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d307ae mount_pseudo +EXPORT_SYMBOL vmlinux 0xe8d94329 seq_open +EXPORT_SYMBOL vmlinux 0xe8db8dd2 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xe8f2eef2 md_write_start +EXPORT_SYMBOL vmlinux 0xe905bbc7 netif_rx +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9327bf4 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe9403fa7 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe97ab6ab get_task_io_context +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a8f911 param_get_charp +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9ae2e41 user_revoke +EXPORT_SYMBOL vmlinux 0xe9bdbdc4 security_path_chmod +EXPORT_SYMBOL vmlinux 0xe9f3661e dev_mc_del +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea06f8ab put_disk +EXPORT_SYMBOL vmlinux 0xea3177c0 param_get_ulong +EXPORT_SYMBOL vmlinux 0xea3f725d _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xea4f2871 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xea5e8411 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xea6949c0 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xea76801b dev_alloc_name +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea92c13e bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xeaa93f49 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xeab34bf3 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xeac0f7be mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xead2c972 set_user_nice +EXPORT_SYMBOL vmlinux 0xeadd9f00 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb0d0a07 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xeb14b8d2 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3c2c16 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xeb4a3e5c input_allocate_device +EXPORT_SYMBOL vmlinux 0xeb5424df empty_aops +EXPORT_SYMBOL vmlinux 0xeb5560bc abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb8ffc78 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xebb57cee clk_get +EXPORT_SYMBOL vmlinux 0xebbb8740 sock_i_uid +EXPORT_SYMBOL vmlinux 0xebc22bbb end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xebd02010 dev_activate +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec216bd1 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xec3549fc tcp_child_process +EXPORT_SYMBOL vmlinux 0xec44f39d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xec476bb2 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4eff47 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xec53108d scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xec61c92c xfrm_init_state +EXPORT_SYMBOL vmlinux 0xec718668 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xec97b31f inode_permission +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd9e103 nd_device_register +EXPORT_SYMBOL vmlinux 0xecda7f62 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecedea18 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xecf015c4 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xed27aef6 check_disk_change +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed5a6af8 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xed6e68cd down_read +EXPORT_SYMBOL vmlinux 0xed6fbcd2 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed986e07 kmap +EXPORT_SYMBOL vmlinux 0xed9d9163 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda49be9 framebuffer_release +EXPORT_SYMBOL vmlinux 0xedb066d9 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xede738b9 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xede913e7 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xedec26a0 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xedf5d0cb tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xedfab711 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xee059abc dquot_initialize +EXPORT_SYMBOL vmlinux 0xee1a8e18 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3f2924 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xee6cdcd8 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xee753431 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee933f48 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xee98b2b5 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xee9d3fb6 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaafb25 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xeeb3acfe del_gendisk +EXPORT_SYMBOL vmlinux 0xeed7f71f blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xeed8c7cb from_kuid +EXPORT_SYMBOL vmlinux 0xeeda3998 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef9a22e md_cluster_ops +EXPORT_SYMBOL vmlinux 0xef1d7f8a pci_bus_type +EXPORT_SYMBOL vmlinux 0xef44bdb3 __seq_open_private +EXPORT_SYMBOL vmlinux 0xef4c993c i8042_install_filter +EXPORT_SYMBOL vmlinux 0xef6048e4 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xef6d75ae pci_claim_resource +EXPORT_SYMBOL vmlinux 0xef748b91 simple_dname +EXPORT_SYMBOL vmlinux 0xef89117e gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa89286 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xefb3a315 i2c_release_client +EXPORT_SYMBOL vmlinux 0xefc74983 lookup_bdev +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefee767b sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xeffbd36f vme_irq_generate +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf014c567 get_disk +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06e87c7 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08c9612 pci_get_device +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0bb90a8 get_super_thawed +EXPORT_SYMBOL vmlinux 0xf0c7157d __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xf0cea08e dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xf0eaffce _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f6b636 km_state_notify +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf1399fc9 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1642d6e genl_notify +EXPORT_SYMBOL vmlinux 0xf166d36e cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf189fd59 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a2cb83 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xf1ab1ef9 km_policy_expired +EXPORT_SYMBOL vmlinux 0xf1d9efd5 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e43c55 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1e9e9b4 dev_get_stats +EXPORT_SYMBOL vmlinux 0xf1ec0242 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xf1ef8e09 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xf1fbdb0f d_alloc +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf215e947 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xf21a464c lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0xf21b4ab6 filp_close +EXPORT_SYMBOL vmlinux 0xf21ed3ed phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xf21ee189 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xf22b633d cdrom_release +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25b9b38 param_set_int +EXPORT_SYMBOL vmlinux 0xf263ae0f security_path_link +EXPORT_SYMBOL vmlinux 0xf2670c6b pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf26e9005 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xf27d1f5d generic_file_mmap +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a5c7c8 blk_init_tags +EXPORT_SYMBOL vmlinux 0xf2b01208 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2da384c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xf2e3986b dev_mc_add +EXPORT_SYMBOL vmlinux 0xf2e4b8c4 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf2f4ac64 start_tty +EXPORT_SYMBOL vmlinux 0xf30e2871 poll_initwait +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32cd295 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf36c8c25 led_blink_set +EXPORT_SYMBOL vmlinux 0xf37ea624 pci_choose_state +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf39f51d4 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xf3aac70a netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xf3b6a59b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf3cae09a padata_do_serial +EXPORT_SYMBOL vmlinux 0xf3d389b9 bio_endio +EXPORT_SYMBOL vmlinux 0xf3d4af73 sock_init_data +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf41e2680 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xf42585e4 inet_frag_find +EXPORT_SYMBOL vmlinux 0xf42c8a0c tcp_poll +EXPORT_SYMBOL vmlinux 0xf4389b39 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4774147 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf4789d29 noop_qdisc +EXPORT_SYMBOL vmlinux 0xf4837f77 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d789d1 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf4ddc300 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xf4df6ab0 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf523fc3e input_register_handle +EXPORT_SYMBOL vmlinux 0xf5311763 pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf567e427 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xf5785bea __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf586e688 md_reload_sb +EXPORT_SYMBOL vmlinux 0xf59cf52e user_path_create +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a9f823 blk_complete_request +EXPORT_SYMBOL vmlinux 0xf5aa4a07 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xf5b00842 release_firmware +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5b890f3 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d0b1d6 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf5d51919 have_submounts +EXPORT_SYMBOL vmlinux 0xf5dad531 contig_page_data +EXPORT_SYMBOL vmlinux 0xf5dcfa98 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xf5dfa749 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f46c3c security_path_truncate +EXPORT_SYMBOL vmlinux 0xf610a27f kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xf6310e76 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6483f59 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xf64fa46a call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xf670a52e swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xf6755784 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6899c5a acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xf6918d62 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf698c9a8 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c66d43 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xf6e98c62 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f75de8 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7207793 pnp_is_active +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf7443fef md_unregister_thread +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf74bfdef blk_rq_init +EXPORT_SYMBOL vmlinux 0xf74ffde0 ip_options_compile +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75bde97 from_kprojid +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf76784ef __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf7749067 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xf779bbfe deactivate_super +EXPORT_SYMBOL vmlinux 0xf77f50b7 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf7891779 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf7988b6c skb_checksum +EXPORT_SYMBOL vmlinux 0xf79b1f6a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf79f5a41 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xf7ade28c netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7dec7a8 input_grab_device +EXPORT_SYMBOL vmlinux 0xf7ebb206 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xf7f06f40 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xf7ff159e mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81b8f06 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cb368 md_integrity_register +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8341acc devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf862f980 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xf8646524 sock_no_listen +EXPORT_SYMBOL vmlinux 0xf8677305 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xf872d8a7 skb_make_writable +EXPORT_SYMBOL vmlinux 0xf87631a7 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8b65954 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xf8e83ca2 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8f2c8e9 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xf916cb25 napi_complete_done +EXPORT_SYMBOL vmlinux 0xf9195ac6 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9523607 phy_device_create +EXPORT_SYMBOL vmlinux 0xf954b8fb __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xf964c28e zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xf96523a7 kill_fasync +EXPORT_SYMBOL vmlinux 0xf96c6e2b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xf98f5b18 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf9a23420 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a71177 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xf9e4501b skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ea2972 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xf9ea77dd security_file_permission +EXPORT_SYMBOL vmlinux 0xf9f7366b dev_mc_init +EXPORT_SYMBOL vmlinux 0xfa08b138 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xfa2f1529 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xfa3667be open_check_o_direct +EXPORT_SYMBOL vmlinux 0xfa39fec9 clear_nlink +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7b279a pcim_pin_device +EXPORT_SYMBOL vmlinux 0xfa852157 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0xfa910b52 pipe_lock +EXPORT_SYMBOL vmlinux 0xfaa2fa6f blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb02d739 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb17256e filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xfb1873d6 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xfb28de91 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xfb29e524 datagram_poll +EXPORT_SYMBOL vmlinux 0xfb414915 get_gendisk +EXPORT_SYMBOL vmlinux 0xfb4e1668 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xfb5a6024 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb84493 input_set_capability +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcd50ab pci_disable_device +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfbe70859 sock_create_lite +EXPORT_SYMBOL vmlinux 0xfbf90dbc truncate_pagecache +EXPORT_SYMBOL vmlinux 0xfbfb9e5e default_file_splice_read +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0c61ef shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xfc215cf7 km_is_alive +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4a56e5 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xfc4b654d jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xfc5410c0 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xfc55214e twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc5a531a vmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc7310d0 md_flush_request +EXPORT_SYMBOL vmlinux 0xfc734327 queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc91b729 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfca809bf tcp_splice_read +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb43562 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xfcbc2f13 ps2_command +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfce63973 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf57e1e pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd4b2a4d tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xfd619996 eth_header +EXPORT_SYMBOL vmlinux 0xfd658af0 simple_statfs +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda25a64 poll_freewait +EXPORT_SYMBOL vmlinux 0xfda5c221 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdd2045d pci_enable_device +EXPORT_SYMBOL vmlinux 0xfdef2b46 override_creds +EXPORT_SYMBOL vmlinux 0xfdf1aca4 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xfdf544f8 no_llseek +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfdff417a param_ops_invbool +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe3cbbc0 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xfe3fdb7f inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xfe432728 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xfe5d30e9 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8ac8c9 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeaca113 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfece7d2e tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfedfbf0a fifo_set_limit +EXPORT_SYMBOL vmlinux 0xfee78b8c generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xfeed3d85 single_release +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfeff8040 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xff1b94e6 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2c5676 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xff458507 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff4a5565 skb_push +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7a8bd0 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xff82fabb nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffae85e2 bdev_read_only +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe467dc fget +EXPORT_SYMBOL vmlinux 0xffef45e6 intel_gmch_probe +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x3771fc35 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x5bcd57a5 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x66f94521 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xe9c1c319 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xff956324 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x02e9ed9e kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04c0833e gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0533a156 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05da1384 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08394c2c kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08fd603b cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ad56228 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b3d8f03 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0fe4c8dd kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10e8926d kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11fc2985 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12fd040e __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15b295d6 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15ca080f kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x171c2ddf kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1799e7b7 kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x194cff7c kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1bbe5ffb kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e14b156 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e8dc8eb kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x202b4dd7 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2047b83a kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20d6cdfa kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x22a35a66 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x22f27395 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x247a1f0b kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x261211c9 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2814951d kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2883045c kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d3db83c kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2de7880c __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e51c815 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f74001e kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x30d53165 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3173d7d9 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35f58781 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x36ff21fc __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x382d2cda kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3849ae3e __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a06e2de kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bd1ec1b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ca04b39 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e094575 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e922082 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ef92f60 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40ce1e45 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41ac720f kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41dee293 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43f4230c __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x440706db kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44c8fd5e kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x456e8ccf kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x478bbb74 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c3cbed2 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d4de5f4 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e2c224f kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ec10d50 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x500c894c reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x502a4c35 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5150ebe9 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51aa058c kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54a0d800 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x56f12a8a kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59a39986 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a63af1d kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b3949b8 x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c397bce x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64dda91c kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65580d36 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x665673c0 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68138a79 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6abfe811 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c99e558 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f5c84b9 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70517d5f kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73f0e541 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x765c063c handle_mmio_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c59e22e __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d798639 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80ecfb6b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a36c0b7 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8db3b110 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92d713dd __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x937696ba kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9476c90f kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x960c3c93 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x961b9c1d kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x982cd932 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x990042f2 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b5b2ce7 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c171a59 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9dfa1865 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e0a65d0 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ff160c7 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0a2502b kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0c993fa kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0d14428 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0e5f305 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa730352e kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa7e4eec kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac871790 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2aa7384 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb43593da kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb4bffc53 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb84b6219 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8af7df9 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb916f4cc kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb94650b0 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9c951a6 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc4f5f13 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbce0f847 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd554c06 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbdbc98b3 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc10f94ec kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1d2d812 kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc23f3bc8 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc599bc18 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9b2ef77 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9cdee90 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca9eadda kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb3243b2 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb55d432 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcd69ed52 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce4ddc7d kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf0e989d kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf363a0a kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf3e323b kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd02c8d9d kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd16e13f2 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1715e5a kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5be7622 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5cd73f6 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6893d32 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7eb738b __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd920e0fa kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9c144d5 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda11af86 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde9c017c __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdef5f611 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf0c1696 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf4f0881 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe29a90be gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3daf15a kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7214c03 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8e46f9f kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea336de8 kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeace50c7 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebf18489 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec406ec1 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed4b1a51 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef320dd5 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xefb3a03d mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf071f2f2 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf113b9f8 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2f286c4 kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5f6b627 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5f7446d kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf90f9159 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc1922fb gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdc68132 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x10df46a7 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x17c94a0b ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x20eea320 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2aa8d07b ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa55bf263 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xb28526f4 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xdef6a76b __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x09f10473 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x12392ffa af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x40ab4558 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x6d71f22e af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x9a8efafc af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xab2027d5 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xc90e48e7 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd6148262 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xff4e4e85 af_alg_release +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xce676463 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x957629c9 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xac181508 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x5eeaf9c5 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xdaf541e6 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x62395562 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6d1ee03 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xbd6e968c async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc0e4d65a async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4f0569e0 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x6d56b927 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x86bde7fd blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x33cc25a2 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x60cc01c9 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x15f73d00 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x426bc526 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x702aefce cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x8c70b9f4 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9d6d9604 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa3148d5d cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xb4500636 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc9f96588 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xcebbc831 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xced979a0 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xd02f7989 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfd07c7da cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x13ba3351 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x09501deb shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3a176daf shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4f49dd5d shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x9c3b39aa mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa11eb645 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbad83ff4 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdba9a20f mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe7dc0117 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x5fab6080 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x86718de1 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xa3055ace crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xf79f8359 crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xc613cb0d serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xdd9cabe5 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xb5ddc132 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x5c967415 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xf0e35add acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x05db0294 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1765b391 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3590c6df ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3aee86b0 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5215ec23 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x631d3cfe ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x660df03d ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6765f40d ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e29e63b ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x79690c60 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f82428c ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8eac17f2 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9ad3c15c ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xac0cf901 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xae82c80a ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb81539af ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xba61d777 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbb1687b6 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcf27f006 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd4683960 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8941497 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8bec2d5 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3ff405a0 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5361a5fe ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x554f5a01 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x685dc240 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6a607010 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6d64a344 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8d3dc686 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x97d44bf7 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x98ac36e1 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa5d8c906 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd45d2a99 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xde379f68 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe5847c53 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6195b372 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5e1ca0c5 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xb0254408 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xd6c2d632 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe1473730 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x09989ef1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1a7dc605 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3639167e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x496e03e3 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ad75f4f bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b9d00fd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6a63f8cb bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6b91d162 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6c67d7ee bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x74062b35 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x77ce967c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f7e2f6e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97ac3a7d bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9e8ac044 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa1b7455a bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaf194867 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1841e9a bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb8517790 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbb59b153 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6477a27 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcc8996d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdf843ce4 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe6136567 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe74cd411 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x06c8c723 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x211e5be8 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc0de90df btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcaa2265c btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd2de2ff1 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe9f63eb4 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x03ee2ac8 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0d83c0b8 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4d9b71b2 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4f187bba btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x502155ab btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x58c7875b btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6858f613 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x77987aab btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x785fef01 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x948824de btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xaa3e4569 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x16bd3fe9 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4c4393f5 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5a57a77e btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7409fb09 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9f24d08e btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa701a15c btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xaa3b4954 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbeaf6ab0 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc88570d2 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc8e32953 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf96a983b btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x4ea17c97 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xba6ae0c5 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x616d7324 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x8ca5132f h4_recv_buf +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xc81d8af2 scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xc4bd751f ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0719bd1c adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0ab401f6 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x120826a9 adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x1233f9ed adf_update_ring_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x188a83d2 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x36c60148 adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3d4ea42f adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3d621558 adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4436e913 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x54a13085 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x619ef49b adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x63b2f6f6 adf_enable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6bb04b31 adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x871be13d adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x885831e8 adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8c7d7a32 adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8dde686a adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x96f2c86a adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x978d2155 adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x97fd7299 adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa1bcca70 adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa284c164 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa7f6ef48 adf_disable_vf2pf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xac4b5575 adf_disable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xad3af966 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb8e339d9 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb9820288 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbc253a64 adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbd7b8680 adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc4e6c22f adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd025c156 adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe959a934 adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xed259a79 adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf3e462c3 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf7ac98f1 adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfa61d108 adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x185aec38 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x20ec4815 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2e24f92c dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd52c3af4 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd70c6bb5 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x06d289da hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1ea6ab97 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8068fe0d hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x06898670 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x16bdc195 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1e962d12 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc88aa86a vchan_init +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xce48615e amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1678044f edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1eabd6b5 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x242a946f edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a785374 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3712a67c edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x42d63e86 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x51ba7af2 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x65278cfe edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x679cc3a6 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b77541e edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x77a4f094 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x780c42db edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9a26a0ab edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9f17357d edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaab8e7ba edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb7449b25 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc392efde edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce68dd22 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd5ad2ae1 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xea3e3cb1 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef2d43ea edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf00851bd edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd0d7b83 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x81d75507 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xd3cc2686 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x61dacb3d fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x714f45cd of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd854cef4 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe7edfbcb fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xeceee6a0 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf85b9ef1 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x7e123df7 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x813bf45f bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x001afba7 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe3f7840c __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x09c34d13 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd9460e0b drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf12e8804 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb188d23c ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe43c422a ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xf3397283 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0d53960c hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0f3d48fb __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1c01978b hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x25237a0b hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27731852 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2801c3b9 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a3e3c26 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4479b18f hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4afbd630 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4f52bc4c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53e1cae5 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58840631 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a468299 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x608efd16 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x661dda7b hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68a9fd95 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78f62c78 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8f5a0ef3 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9887409e hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c0785e9 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d8d8061 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa409692e __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa57409e4 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac19d0e8 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4083e8c hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb415044a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb631ac7f hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc21686b1 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9d9816f hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb5675c1 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8e60e91 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdac4d09a hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3e50a78 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed7c47a0 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf0eaa7d2 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5a10c31 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x68ab2aee roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3921ce10 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x433cc870 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7c458351 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x89699ea6 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8f5924ea roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe25176af roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x00244907 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x15e79719 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1725771e sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x42065958 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4de04972 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8ee319df sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa4cd4688 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcbd66cd0 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xffe6df86 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x44326775 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0512d31c hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1bd7cb38 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x677c9061 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6a04f065 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x70dc2a82 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x792d3ade hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x96ac8c31 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x96d2eefc hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabb598f0 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xad702b48 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb5341eb2 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbf8bdad3 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc0d698c9 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce2a6bee hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd213c38e hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdfceaa9f hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xef1bbb6a hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x07e19350 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0d0e0a59 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1a25cd8a hv_do_hypercall +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x25a0a3d2 vmbus_cpu_number_to_vp_number +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2b3c980e vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2c055fdd vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2cb4c40b vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2f4f65ae vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x43d7bf68 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x80e641c0 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8637b26a vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa2fcf799 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa8f7b0fd vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc0198c58 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc3ff90e0 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcbbdf1af vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf3dc5d87 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4a853eec adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6b369f5a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa876c0f8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x03f644e0 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x15ccd9a2 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1801b103 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x234c55a3 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2f77e11d pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48a58e05 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x520b6beb pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x81b87c0f pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8a09bb7b pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9730b9ef pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9e022bc2 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa264f2e9 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xed23a08b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf87d36e7 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfb81902e pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x0d8069a2 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1f42bfc9 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x342d5287 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x34d1630f intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb385fe94 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xeb584f23 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfd542d98 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x12a3d328 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2dcd813a stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3049cec7 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa37c5efc stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xf6794dbe stm_source_write +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x162e48ec i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x29c6ab49 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2c6cf698 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x41148fd0 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x45e0c9d5 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x50954d02 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x9ae6ae3e i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf916176b i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4df80f4a i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xdaddf184 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xbdbf8f35 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xd1170bcf bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xfb376b5c bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0eeec21d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x75d82f73 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8040f03d ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8689af2e ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9317aa14 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xaa5721d9 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xaaa62abb ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc60eee07 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc9b83d60 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x96739c01 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe4cc8598 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x4191142d bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xe7f8d671 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xfc912390 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2862b391 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x388e82ef adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x49b0c0c3 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5b30f342 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5f65999c adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x61dc0141 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x631fc8c0 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x64c91129 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7895a2bd adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa7395a89 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaaf5564c adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbc6662a5 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x09305da6 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0e8f2eaf iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x111a15a4 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15f3eead iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e55518f iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x36feca7d iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39b1a464 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39cb12ea iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3da67493 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x41ada858 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x45191eb9 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48b5c5bb iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a639076 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d72cb4d devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7cb9e2aa iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xac710a73 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xacdb12ba devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad6b04dd iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb0af92c5 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4f542da iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb7bff6aa iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc6bcf6ba iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdaa02f32 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd893c0b devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1e4b002 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4ae25a9 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe67619eb iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb515ebb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xec67e681 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbc03631 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff5a670b iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x20f92854 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xd313b98b adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x98b927bc cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xaba8bd25 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb37f38d1 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x048888b0 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x258a2eb0 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x79c09bec cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x71f5aabd cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xbb19d7e6 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0a3d5a4d tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0ca6b359 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x8929c8c1 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xe6aae170 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x26cb4e31 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2965e767 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3b75536b wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x55f22b0f wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x624dcc30 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x937096b2 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9bab9d97 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb75b4a92 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba116b39 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xea614eaf wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfa50b159 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfcaf7fe2 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b30e43f ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0fc439ae ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1557eec5 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x242823c4 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5481c6bc ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x54b0f154 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb2476113 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd932fbfa ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd9393708 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x07676b3b gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2b0420b4 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2d9992f7 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x315e53ae gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3800e6e4 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a890715 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f74284d gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x40aac49e gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x41e7d517 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5dc3e03d gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8c940f7b gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8e76391c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ba168d4 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb0981514 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xba167689 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xefc22195 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf120a723 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x238a6dcf led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3970cec7 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5f3887b2 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdb1ea6ee led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe78faeb9 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf527eaa1 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x26117ff8 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x27d4810a lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2ad71711 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3b52b46e lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6a652552 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7b5c4b3d lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9bbe3b84 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb8fd178f lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc1660dc2 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe7b73f3c lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf93191be lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0fb81a48 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x11fc307f mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2b81d341 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x34aff4f9 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x55c057ac mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7fc87c34 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x836ed383 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8d9dd6df mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa6d52d31 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbff36113 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd75d0e65 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf576796a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf8cf2ac8 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00b74659 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2a1a7a99 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x374f45ea __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3a4dfef7 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x48991e9c __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f124797 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x614e860f __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x647af374 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6724de29 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6726a0c1 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68f1ea6d __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7114cfcc __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x78c57fa5 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7cb4bd6f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x816ebfe0 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x833b99dd __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8afe3e2b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x912566ef __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92c55e92 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9c59320b __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa7004101 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf2376ac __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb3942afe __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4cffcbb __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb9c28744 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc0bd3171 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc773563c __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd81ad8c9 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe30b6b2a __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf6169c53 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcb52b5f __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2292d5cb dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3081cd01 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x43275597 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x56a9915e dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x63a61221 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xaa23b5f3 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb270c426 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xee11f778 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfd54f6f8 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x4c4449ea dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x02de19e4 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x050abc2b dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x58d9ae5e dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x996d9cbf dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb893ff92 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc5041996 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd7ce3548 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7a91d37a dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7cd6da69 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x08aede20 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0d9327c3 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x13634b12 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa79c6e4a dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbca2f737 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdb0a7129 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb897a9ac dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x220405da saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x247c234c saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5beba786 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7c0ec770 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8b266993 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8f952702 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x943d6fab saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x979f93aa saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc07a607e saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xde950a47 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2058c69c saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x316eb7f6 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x42ab8a10 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x56b5836a saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5bcb1324 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5d6ed2b4 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x93415b34 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1a8863cb smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2a6d387a sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2e9ef927 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x409c7d46 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x44e2c47c sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4b67daf2 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x706d7b85 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x706ef18d sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x726eaf3a sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa027c5f1 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaab024d3 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcaf06de1 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcd189a20 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd4927e86 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd6e84adc smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe06f6213 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf3aa6a6e smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x328fedd9 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x57339afb cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xd5bffc6a tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x1a3e420c media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x206c8420 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x26782f46 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x42665398 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x481dc9d0 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x51a11b93 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x574c7b32 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x70f1fba3 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x74f8f2eb media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x8a5e51ad media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xade7d663 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xc1ada721 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xc9433b5d __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd356cff5 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xd53e81c6 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xd91cd05a media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xe95f2e6d __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xf539eaa7 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xaadff490 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0dc1256a mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0fc2dcdd mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x106b92d0 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x40ea532f mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6bf5ff85 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73652c94 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x76104e43 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x887307f6 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x98f6266b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa29cb445 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa493bf1c mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb570ad64 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc50b3e89 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc79d0158 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd12c1b2a mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdd0aa7bf mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe336a622 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xed28a250 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfbf8982f mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x05c7a192 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x14ccabb9 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x160b5720 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3b77f226 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x49c1d663 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5280cf6a saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6d6425e3 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6dcca57e saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x72383816 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7279f44e saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8124ac52 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8b7680ab saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x98f1b138 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb22a8487 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdeeb83cb saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdf40660b saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xebd725ac saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6759e28 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6c70b69 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x11985816 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6176365f ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x627a3b2e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x82d10ab3 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xaa76fb11 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbf574d07 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc53a7961 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x0374cda9 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x53c700cd radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xb8b2a760 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xbc8d0af2 radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xdc20a69b radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc54ed87d radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xf5432fe1 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x02db1a6a rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x264a8b3c rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c163e3 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4049da90 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x40a66c10 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x47a1dd80 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a63e387 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5921bdaf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70d72959 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x837d9901 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa560763b ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb99c1e67 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbbe6cbc7 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc28901b1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc5894f9 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe40b1925 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe7359fc0 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe84ae3c9 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf742c171 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x10a7eca9 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x9c2cd2fc microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x93118c0c mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x69eda689 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xf7c46412 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x6f3c6005 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x103eec64 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xc036b21f tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x1d9184a3 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x52fe5572 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x817b7063 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x68f5da3d tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x8fca2258 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x4adf7137 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x063a7da5 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0f5c8ae2 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0fadd5e1 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1bfb9e51 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b84fa0b cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3f66cd9f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3f6afac1 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5fc159ee cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x658b8991 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68313615 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6c57e44e cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8d57581c cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x964fd25b cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x972d6a4a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa00bf4cd cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaab9b283 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc90d704e cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd8b6cbda cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd9882cad cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe02b2d0d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x3120d0b3 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x3223f80d mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0225945b em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x03bee6e3 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1a39ab2b em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x47b1c8ee em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5570a5cb em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x62eff2dd em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x71e43b24 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x74541100 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7c6ff873 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7ea2f4e3 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x957770e9 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa29dd319 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbd531273 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcdf5c310 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xce5a8850 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe12c1170 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe6c5dee5 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf4839539 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x75e6109f tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xac34fd64 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xaefcd667 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcb3379d2 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x1105ab26 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5c0a3a2d v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5c9ee0ff v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6a11b54f v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd9becadf v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe264d869 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x92ad35ba v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xf7e5f97f v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0227380d v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0789ba81 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x120e8788 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x201871b6 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2f859cf1 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x37e2f4d8 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x39679c6d v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3a14d025 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3a313c64 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f0d7799 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b515e53 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x83a193ab v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8994976e v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8a9e0cea v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e1a16a0 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa91b6818 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb034ff05 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd59ca800 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd7320195 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe1e8832f v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe225ea67 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3c21509 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeb3df0c1 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed272ad0 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xee4cd5e5 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef6351de v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf335cc9e v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x041cd600 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d8a8b2e videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1dd57bba videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1f5343b9 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1f90903d videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e8309d9 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x35f8b7a2 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x397a41b4 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3dd7afc9 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x49fad05b videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56a7bf67 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65e29505 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x78f00dec videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87067278 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8eb6a325 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa2225411 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa4c656b6 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xac489cc3 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbafeadd3 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc4544454 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd92d2064 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec36e414 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf24e86fe videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf6d27d33 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x1f52634c videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xaf2488d2 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xb132dff2 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1d867633 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3694b20f videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xca582df6 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfe5cec50 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2a000efb videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x50ed4f01 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x995574d0 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x071fa20e vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0932f626 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c6ab146 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x15b2b173 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x253bb254 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x32afdcc3 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5bc7c217 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x61748bd9 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6e914029 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6ffa31d3 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7735d7fa vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x79c85f85 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7a0f34a2 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x80e8a417 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8d4babd1 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb388571d vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdc2abe2e vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf44fc3b2 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0a23f5c4 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xfae21b98 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x0187aa74 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x60ed2e0f vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x718b82de vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0d7af3e5 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1019af12 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2675663b vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x28c974a1 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3114de00 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3a0eaa53 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3f6a9ac4 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3fc90210 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x433af8bc vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x53f7abd8 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x54e211d6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x592ac452 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x67b3efcd vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6ec2c09c vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7f2064d5 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x835477b8 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8b2fc544 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x94393d77 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x95f85340 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb3e13da7 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb7abb6bf vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbc158d19 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc43d65ba vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc8a58bd5 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xcf1e54af vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd0ae255d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd2c1d506 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdf06e89d vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe3ccb74a vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe7adec47 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe867f787 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xee6d7f92 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xe9028a82 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x085c1c98 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0bba3978 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28d20b15 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31e3d76e __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32c4e5cf v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3740e82b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x391b95f3 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c405c7b v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x42340e2c v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43714539 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45e03d33 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46f56c7e v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5aa8078b v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x60f38635 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x662058fa v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x666cc227 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7157a76c v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x78e66a8c v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a85f5d7 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bb79c28 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7deb77c7 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fa601e9 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92bad2a1 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98545b10 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2e0aaa1 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb31a37c6 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb66aee98 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbac5088d v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbd77cc90 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd34e338c v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd4d2ffcf v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0dd7365 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe1077181 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5956f8c __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf71503eb v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc5540a7 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x00cb6c61 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x61982752 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xdbea2915 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3fc53093 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x404eb8db da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x51d756c5 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x59cec284 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7620900b da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x84ac048b da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe49481d8 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x1c545d60 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x659b4c6a intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7addc09f intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7f3435dc intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xedcded12 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0a5b052a kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0c999c96 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1baf199a kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x20ff8376 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x276fd3a0 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3e06a606 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc2e5d7a6 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd15f1cf3 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2eee0d83 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x48c3efb4 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x57e119ab lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x250080ac lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2b814d32 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x67e30215 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x814b659b lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x969fb10a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa5fb0022 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf41b3f1f lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x4c923524 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb2abc98c lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf7d78e86 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2e9ab83c mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3c954d54 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6888c91b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7c2f0674 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8514413e mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x914f0a8f mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x062c0546 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x53261552 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5e749181 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73662963 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7a863a63 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x86ce5504 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e9f7481 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa0f165e2 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcf742c31 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe21571d0 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeffa69f6 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x5fb5f105 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xce104a10 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0a095aa7 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x145e3b85 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x32a658a7 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x378b4013 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xde9688db pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x05b83491 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20813f17 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x242b4337 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x33684773 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x35989d0b rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x372f52e7 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5608df22 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x56a138c7 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5773dde3 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x59a89bdf rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x661c15d9 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x729e28ef rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x805488ee rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8a7982a0 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8df2c1da rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9336b110 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa7006d4d rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaf1212a6 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc92a9673 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbfacc97 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd3bf46e5 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd8c6bae4 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe785f9e5 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf7e4dc11 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x212d3b89 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3499128c rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4603f5b6 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x51478742 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6eb1f3bb rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8e017e31 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x98d3949b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9e279f13 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa72cde19 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xcaeba346 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe01f7a37 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe68e58c0 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf4980237 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x155f00ac si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1cb56c32 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x27512708 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x286031a3 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b3c7403 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4f496c9e si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5a71b6c8 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e986981 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6185c630 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ec4b7f9 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7b20d5c1 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92088024 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x97dabecc si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa078d6b9 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xadf63241 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3c2cef9 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb57f83e9 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbcea5a81 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4f168b0 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6d4f28c si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca9581f6 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd400edd si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd74c0786 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0e93ea5 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe161bfa2 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2588ded si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2bdf999 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe3c3c3a0 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6412821 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe68a96dd si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe862f816 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe92ac310 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xef6089a8 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf734b929 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1934b2a8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x29fb3037 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x41ca25e6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x526e2b8a sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7543561d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x3d3092c2 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7adc2f32 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x933e3d50 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x97ff6529 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3282a708 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x459ce600 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbe202bc0 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdd788c50 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x97479cdb ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x65f7c052 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x68eedae3 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc281f109 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xda342d98 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x613fb8ca enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x633b5bd2 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6cc647d3 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6d96dc03 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x866daa14 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa03473b1 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xda6ebd3b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf30fe93a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x41d2c0cf lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x72e61da7 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa70d704b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa976b0d3 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xab17ea92 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb5887060 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc0f08eb1 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd6272061 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x031ef7fa mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0f961cec mei_cldev_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x24278425 mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3840da74 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4a427e97 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x50ac5cca mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x54620b87 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x56317f0c mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6a174ce4 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x782236b8 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7fef3a9d mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x867953fd mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8ce2f876 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa0320a50 mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa616a6a8 mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb03863a1 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb046a313 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb5333bf9 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb9542489 mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb9df8d0f mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbc0fc04a mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc1003b6d mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcf0c8984 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd59fca0f mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xeded41ab mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf4f37616 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0860c8f6 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1acc7d2f vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2e30d970 vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x8b8ad67a vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xde055fd3 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0822b10c sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x309f85f1 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f892042 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x467cfdf3 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x70917f5b sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9966d786 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaab554c6 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb0b10ddc sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd6afd618 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd8282cab sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd89c646c sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe5e0b042 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf3247a0d sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf4390391 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0fe0f208 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3dc383d8 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4ce5a47c sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7867992c sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x93078066 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbd646d33 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbe7a0fb2 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdc82a5cd sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe0eec063 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5278e839 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x6d51cdd1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xaf66cdaf cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x17bf2601 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x69ed6dd1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9a14a257 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xdc2b1c4a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x564f32c7 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x95745daf cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe7a260ef cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x041b8670 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x071d48d8 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10d8e145 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f9e6062 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x201584ab mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25ab0789 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3acc5d7f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x408ff7e6 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40cdcee8 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x45a3d886 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e70392c mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51321f59 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x577c0d1b kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59cc41f9 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65855b2b mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6af8959e __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7efbb422 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80600743 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81b34869 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8214b24b mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83413381 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x89872b6c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8f68b878 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8fc4fa3e mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x98f4de56 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9909ea15 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa99c3652 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab619039 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad244261 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafcb8b9a __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb2038a22 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba0a4f1f mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd35a8ab mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc675abe mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcef5a1ba mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd619faf7 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdaf11ef9 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe48bc9cf mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xecefba48 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf650e90e mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf912075d mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfbc9af53 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x644463ea register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa209e392 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcd399678 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd0d82dd2 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xecbddc22 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x86149fe0 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xc3919758 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xaf042c3e sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1c90e8f3 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xb1203710 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x73c5f6fe spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0e7b257f ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0edc1a86 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1b05906a ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1de42bab ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b48dd1c ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x543fd929 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8ce083a5 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8d670fc5 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9d03f102 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc8db1fc7 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc9a219fd ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xea9ba8b5 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfa059f95 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfefb46c4 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x2916cc89 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xe0202fe3 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x22f74430 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4c5f0cc3 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x608b0061 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9fb69851 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa44683dd c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbfee71bb register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05562f57 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x10a023d4 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5738693c can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x84e6fc26 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8722b210 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8f7cda93 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x92bbc637 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x99ecd948 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa6d2abad can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xab66144d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb012977f can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbc866ba9 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbd2b924b can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc33fc348 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xccad5140 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xced44b05 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd4b8d89f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeab8a74a alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x16ec0ef6 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1aa2b940 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x57f9f4fa free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9c0c0a07 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7bbbd474 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8a66c16f free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9c21f72b unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9e9a131f alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x026937a7 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03a660da mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03e84f27 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07605957 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09972231 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0abe6247 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e021273 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f06d8dd mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1007f7a6 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11d39322 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x136ea238 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13945a4a mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14ad9e73 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14dcc4c3 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17126c34 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17a585e7 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19da3034 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c40da11 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d31048b mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e78aaaa mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x204f9710 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21f45665 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x227a0284 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2796d9dc mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29f762e2 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a89943e mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2eabd648 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f0c5ce1 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3049e2c6 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x345bfdd0 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34d4df64 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35072f73 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39b18d2c __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f8662f1 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41ca3747 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4312da1c mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49a77f7e mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e05dbbc mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ef13902 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x501a50e1 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50640003 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x507d879c mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54c08b16 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x555c290f mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x560fc930 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fd03a81 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62bd10a0 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66e39ccf mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6826facd mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68c86f6e mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6aaaba07 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6de35a33 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fa116b4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70e23b9f mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71ba021f mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73476fa8 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7559948e mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7818876f mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79357d9d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d66d89d mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7df018b5 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7efb713b mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f0cb552 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fefb09e mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8419bf6a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86343cfb mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x866c7e7d mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87f724cd mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x886ed162 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88dbb2a1 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a5f0f1a __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ae6f618 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b556f02 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d71adbd __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9007a00d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x915ec729 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9183c6d0 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93afaf35 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x957be85d mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95f08733 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96f3775f mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a601588 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c5b2d1b mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e56fa15 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa072e602 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa310c44c mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa56b7551 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8192b6b mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab32f47d mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac7ac18f mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaed27c85 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6d76314 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb90b265b mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9488b03 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc01d9270 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1a9fede mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc21931da mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8470a1b mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9a5735e mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcaf87f4f mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdd4d4d4 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfae7a65 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd038daaf mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd171c217 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2d052b7 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd37efbbf mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd97e2850 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc8e8564 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf1e1e1c mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfe9ba4a mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe04bae50 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe93f106d mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe98cc7e9 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec2c2d21 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xede26968 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf01fb5dc mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf13d6d8e mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf315f0c7 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4cdc8b1 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa97fad6 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd856a0a mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe5ce24b mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe66e78f mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfecb7c38 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0509a285 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a05589f mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f3aad92 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20f93122 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2369a8f2 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e301c50 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47cc53c4 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ed422dd mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56a2668d mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58ef3c57 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d3ba8cc mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c4cecf2 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c4dfa4c mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d26b54f mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73dd3d56 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78284510 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7843a38c mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cfa8c1d mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f0c1dcf mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82248cf1 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82a0306b mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x843c1e2a mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b769b96 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b9a68a9 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98851b6a mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4b01200 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa44992f mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb732835a mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb90cd108 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfe6f867 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2dd3e83 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc54c69ca mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc9a745bd mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce20f323 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4a7c967 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8078b23 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8678af5 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd923417b mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe16199a0 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4c5e1bb mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb7ecb16 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee5bc3ef mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf33b7a87 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf48878d7 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf656b460 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x937dd880 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2e0470d1 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5605ceaa stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7c69f437 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb0dcad50 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x14d6b88d stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x3adb14ae stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5dd97263 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x6ee228dc stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x086938bb cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x10ba3382 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x27df0ee6 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x280d76b6 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2f4d408e cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x303eeda2 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4796e152 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x653def1d cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x792bccbb cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x80e680b3 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9727b2f6 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa20b7d58 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xab173c32 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xac809562 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc05961f6 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/geneve 0x915a19dc geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/geneve 0xa46dc7db geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x53c1daee macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5a7bcbca macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6e47369a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9236d67f macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x87913b92 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2fb304c4 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3861f150 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6259f659 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x97cee3c7 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9ec43191 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xaa3bfd54 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd8de93d1 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xdf034695 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf07d8e55 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xfc01ad0e bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x80caff32 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa97a97f9 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb9a755bf usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xfb42168f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0f78611f cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2e2d015b cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x50a5eae0 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6e9e7329 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x87424c62 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb5f5cf82 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc0639773 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd248d1f7 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe115eb80 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x069d63c6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6a79e051 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x915597ee rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9fea2ac4 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb19aab4c rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe635a12e generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x02271ec7 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07098278 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08993580 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x183059e2 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a6814a3 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a065218 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3ab8b498 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3fdc6d9e usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x46982b3f usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48081200 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x598dcde9 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6419e0ed usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7023ea6a usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74e3f21b usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x780db668 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c2db26d usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99722359 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d685340 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9f46f6e5 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa4bf2c56 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad8b13ba usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb294a91d usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb42619de usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbaf9b83c usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc43867bb usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd540c9b9 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdcec414f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf5ddf2d usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0228549 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe57b761b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe62c2521 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf5251f38 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x834c9d2a vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb60a231c vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0ce2d9e7 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0efeca52 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x181edff8 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x22fbbef5 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x25e0027c i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3ba40aa9 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3ba7cd58 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5fae361c i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6ec60da9 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x71d68387 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x96a7ceff i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d5be753 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc2cb58a4 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd6f22cf6 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xde623340 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf48eb851 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3c73002d cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5b807e76 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xafb392d7 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb8a2a0a3 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x52990125 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0490abca il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7b13c4ca _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9885f664 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc7f15bb8 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd8b3745f il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x02110a5e iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ab639d7 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x234fec07 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x252555a5 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2f55f465 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x37a5a82f __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x42d3d8a7 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4d7b3a42 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x512a2413 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51fe708d __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d04c1b6 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5ee5ab54 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6e6f914f iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7614d521 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8709086b iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x91d16d5e iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4a8fc91 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc9fecd8d iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xccee874c iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd49b4b3e iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd96dcae3 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdce0ec8f __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0856c1c iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xec765c29 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xef8e6c1f iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf79a4ce9 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfac7fc2c iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfadf88ed iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfb7e7e21 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0a63a6af lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0fbea65f lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x206b282c lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2cfdf419 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x377242ee lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5750ba3f lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x57a66553 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8aecd9ac lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9b153847 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa9149612 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab0ab8fc __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb4978dda lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd02dabb5 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd73e58bf lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdba94064 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe41f457f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x274eb6da lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2b85cc8d lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x41f1fca7 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x51d07571 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5baf33f9 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6bdaaef7 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7f05971f lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfd1b03a4 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x082c7c69 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x172de327 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1fb8697b mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x25169475 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2b229922 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3d89b033 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5c9097fe mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x913ba31c mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa7468eda mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb39af549 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbcf6af9c mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc45cfe0d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc8c3feeb mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xca17e038 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd61b233b mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd982190b mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdcece148 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe9488d99 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf6269650 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1fef8e28 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6c91dc1d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6dd41880 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x78f7c239 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8ae47547 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa8bde2b9 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd2870f8b p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4e2c623 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfa4e6e59 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4e8b1c6a dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb85315e0 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc3e36d18 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe9480330 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x023d6611 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0cc024d0 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x13e5a656 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x156f4a6d rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x15b8c19b rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x17e49cb1 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2abc8c96 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3b32c339 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4cbb0597 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4ff77ac1 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x56d1fb20 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x570acb0d rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x59f9044d rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x75842bb8 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x851c7ae6 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8aa23ee7 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8deb6fbd rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x94a0ed9c rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x989eff89 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9fe5fa5c rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xade6292b rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb1b09aea rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbabfbaa3 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbd2fda78 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xecffda48 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf3aaf878 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf6b80154 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0a2c2ccb rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0be349f3 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x10faf315 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1ded54c0 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x583fd948 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8095fbc8 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x80a7239a rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x94949296 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9e281ec2 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaa4e1c53 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xabfc17c3 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xafa4e2f3 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2544890 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb7ea2b4c rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe705d589 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xecb996dc rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfd6f4154 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x70f055d1 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc05a0d3e rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd1e3570 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xe2b38d4e rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11191f3c rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x170ba97f rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x22cef519 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2815059d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28bc5516 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e96e928 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x39b48c51 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3cdbb046 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x40d215d5 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x47129032 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4972a9cb rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4d1c853b rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x525ae113 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5488609f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60b03a87 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6c4db635 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ca73232 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x709beeaf rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7101b381 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7189bd01 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x771a8aaa rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7c3a4009 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x810c3b0e rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x910641b8 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x93eef592 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ab38119 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d940958 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e5fc20d rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaec5aed8 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6237e50 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd22c4408 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2898980 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd7c7b999 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9ab417f rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb9ed657 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf1df566 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdfca3978 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf3495994 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2bbaad73 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2e252d55 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x34fd9290 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x55477302 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x748f22a3 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ad61fa6 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ef4bd6e rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xae84a1f0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc39b154e rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc5551d31 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd5084600 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe42d2694 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xeb720a9b rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x03224a23 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x141cce43 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14e250b8 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x291ffaa7 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29913851 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f69e5d0 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3077b345 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31605451 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b089fb0 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b5f165b rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x55c15025 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5613990d rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60c13133 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6620dc5c rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x687b87aa rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b557c67 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6e888bf0 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x780692f4 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78c6c782 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ad6e614 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7d1a54e1 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8884f533 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b65d8c8 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8efe24b5 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x996aa3ad rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9ae25634 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e3715ab rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa84eb0c8 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9a54e17 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae3e24e2 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae518d5c rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7106389 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb9030e3 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcf5c882 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc13d74bd rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcafaeb29 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdaf9129a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe517d335 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe58608c4 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7ed2e65 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7f65c91 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe91fc658 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeab60c4e rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf01db8e5 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf27fbbfa rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe92040a rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x3fcbc4b4 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5d156c23 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa0675a59 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa9578404 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf05b7d0e rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x04040604 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8ce38472 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd55bde7e rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdd853f72 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x239dc5d3 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x288dd0fc rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3421057b rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34970ee9 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4d069c64 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5354971d rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x683d985c rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8551dc8c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa38ceaee rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaf4a8422 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb09631a6 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcba19455 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe0977a61 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee94623d rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf1892299 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf492a833 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1ed5fc3f wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1fb987d1 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x69730e7d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x001818a2 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x058d8288 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x180d0702 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ca3bbc9 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1dded448 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1eb5f5ff wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2259940c wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27e94e5d wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2ccd5033 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3243069c wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x367d8e35 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37cbddbf wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x421a745f wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x42ad8d7f wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x450098eb wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x464a552c wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x497eb156 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50a4bf11 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52080f82 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5846628a wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66388f43 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d2b60cd wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6e8b0062 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6ee47087 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f6fc03a wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x738f1090 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7694ddbe wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b5b8301 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d577965 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x848469dc wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b9d0542 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e222c07 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae35b0e0 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb47fbda3 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb734a8b1 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6440b09 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc98bd1e4 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd79e68c7 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe002de47 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf233f015 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf9943e60 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbe8dff4 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfe42a814 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xffd454f9 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x05d4f290 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x4c4a67de mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8bced2d8 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3c1931ae nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x400d4d4d nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x4f249fb6 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9ca76824 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3b0d1adb st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4061bcc8 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7f33f49a st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9b7bc9ab st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb329c2e4 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcc2a8965 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe6d0dbcb st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe9c8f462 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3b14e578 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x63a6a1a5 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x99101cab ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x51e02562 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x54d170dc devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8ceed7c0 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa4d8b6a5 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xaffe641c devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xbdfb4ac6 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x1441c363 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x6072d8a3 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xe59c660a intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xebd0c23f intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x331924a7 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xebb02181 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0xa6c87106 intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x64ebe677 wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xa9b7afd8 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc5e3dddf wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe2426710 wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x101f8a39 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x67031089 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd3b7bbf9 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x181e53b9 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x2c766d19 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x8c5e6b4c pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xe0dc6d87 pwm_lpss_bxt_info +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x56989c24 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x95e6a5e0 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x98b13724 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x11c79e42 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1c53de43 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1fb7da7e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7c1b7a6f wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9100d0cc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcf4b6409 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xce575e23 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07e4a81e cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d3d8ada cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x134d3cb9 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x135be8f4 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18d113f5 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e97a009 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ebe53cf cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1fe66750 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a4e6169 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x452a2f5b cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b439040 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61a425b9 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x62d4e07c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64537312 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64c87c19 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6eaa0218 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70baebce cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x71b4cb9d cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x748f0431 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74a04caa cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77f03ddc cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e4523ed cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x809fdc05 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x82b60482 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83011ad8 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89a4642c cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8cb69c80 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90cb371c cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95450277 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x96024348 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97385796 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e1cee9d cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f2aa450 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa0dcc7d cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa224bb6 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb281282b cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb70e12ea cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbbd9e239 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc918bf4 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd8ee8fb cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc39de68b cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc49c3741 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc8bb1190 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb4f0d4d cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2e761c7 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf791e4e1 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x04f87d21 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x122d0fab fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c72a336 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1d9ceca4 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x38d33b83 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4742cd38 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4a423638 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x644cad0e fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9000d523 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x99993478 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa6111849 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb21c79ec fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba28bb4b fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd977285e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee61e6b4 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf51cc5b0 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4f6f9026 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6053e6a2 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6cceae87 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x86616c40 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc64b3c25 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xfa70bec9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x016bbceb iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08278ce2 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08d96f59 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e02a526 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13f4a089 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x195ba4c0 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x234f6503 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25b282bd __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x34d8838a iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3aacb25c iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3cba46c1 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46c41357 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x495ca4c2 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b98c26d iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ba8085d iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x628a35e6 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63e6a0c4 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64d3da67 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66b81f44 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x75c710f0 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e323696 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c42bdb8 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8afcd56 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa4d4054 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaaeb04dc iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab7d6b84 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0c604cb iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb108ed6c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc62f917 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc88b987 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe1c4a7a iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc16f7d91 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9c331aa iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd08418e3 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1024fb2 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe12f7c68 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe948fcc6 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb1d5862 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec12f7ce iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee65097d iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef8db666 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf29fa568 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0b1596ba iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2354630b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x260ff960 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3feeb025 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42f26b59 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x43b42455 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x76ec64fc iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x861e9b2e iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb2f1ade2 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc64221be iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd21dab4 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdfb0ed35 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe422fe0f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe885205c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf2156ac2 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3a02825 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfb420345 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x26872caf sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x27db476a sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f4ba9df sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x31eb6389 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32771359 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x36b17354 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x400f5070 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x40584d81 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4c075bff sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x50572dbc sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x533b7f27 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5bbcaeb1 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5fe5bdbd sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x656c6c52 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x819cb987 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x82bac234 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9ae09747 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xabcf9a8b sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf879a96 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb84afe8a sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb97df0a1 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd6aea057 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf34471a8 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf7eb49cc sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x015f5edb iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e001a65 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ec5c2ea iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11073f48 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12430f88 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d91c5ea iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x204457fe iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a36d32e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3b5912e4 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f07abba iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f7533c8 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41c6d6cd iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47dd6d7f iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49c6ac5e iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52c52cdd iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52cdad82 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67be901a iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68c37b4f iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6a30911a iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70633cda iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x721ab7e6 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8352d7e4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87d14c47 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cfdbff2 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98868280 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa377ee84 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5c33a59 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xadfc6435 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb09aeda8 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb397fd4a iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4ab98d5 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb9d94bfa iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb884878 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf3a8c51 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfdb2e7e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8668dd6 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0d33d90 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe15f1ad7 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea286054 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee56ec90 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4ce02e06 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x748ea4fb sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8ed7dc07 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa70f84ba sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xea578dc2 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2fcb5b9d srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x39c14791 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x648157f5 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x943c8327 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaea4cf36 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf7976cd8 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x04dddb18 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x313239a0 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x50ef3d7b ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x67f2f4be ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x85106601 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbac18d6d ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe7304c9e ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x29a008ea ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa0ee4308 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa4957ee0 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xc7d7a559 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xdba628ef ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf613eb7b ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xffbc6db6 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x327b90b0 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x40a73838 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x520ad42f spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x72f10b49 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf5a87cfc spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x09f8e477 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8b0aeb15 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc41ed2da dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc6a7b7a9 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1068cf25 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1b5d2cb0 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2e80d1b3 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2edf13c5 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x434f1fb1 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x476fb14b spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4c419984 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4eb7af6a spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4ff62b24 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5109d17a spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x521f7d86 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6b6f6389 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6b8a743e spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x754f2203 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x85812ac0 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb10469e9 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcb9b3c8d spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe63e6be9 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x3ee28bdb ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01a2370e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x05003b07 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b4ae36e comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c01f331 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x18d5423f comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c34d9f9 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3017da99 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x32f71d74 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x475ee07f comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4eb1b4e3 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x575ab360 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57c287e1 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x636e7d43 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x64b7c26b comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66fe6145 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7114fa1a comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x737f2d86 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75b3cf8c __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cfaa9f6 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x843d4516 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x84f388ff comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8d60fe9a comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f4b2e74 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf04895d comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb10a93ff comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbc0483da comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc418d818 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc43c25be comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc679844d comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc716dd7a comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd12c5ddf comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe44b0a06 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe6f55bff comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf04c1e1c comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xffaf9b0e comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0eb2ce0c comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5b94563b comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x71f57263 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x77378512 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x802743a0 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x941c2f32 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb4406333 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xccbee891 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3803915e comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4a65cffe comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x5ae86faf comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x5c1321ef comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xa55e9e44 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xc3b98465 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xfc0ee275 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2339347d comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2a06209f comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4a216aef comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7fa8342d comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x93f165d8 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcb4512b5 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xb55de259 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xae164d2c amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xd2818010 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x4cd82fc9 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x00f54f84 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3a2d5122 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x499754f6 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x581d7684 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x63e4ea80 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7ebb76b3 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8a2de92c comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8c720b50 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa4d5439f comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd107ed38 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdae0fdd1 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfd2876ef comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfdf39da9 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x48b37127 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x7b2f0c64 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe5c9c384 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xe2311991 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x0c939cce das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ce0a9ce mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12ba439c mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x145dd76b mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2b5382e5 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x46e5a0e6 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x59e0d753 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b14563e mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6011f877 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x63492693 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8381c868 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8fde276b mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x90cfb0c9 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9666beb8 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa1c8d9ea mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xab5e39c5 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc2632753 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcff42e4b mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd7aef421 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdc22abf5 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8e669d6 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc2a0cda mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x4090afe0 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe5bff939 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x07193364 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x6f470236 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8416bf7d labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xbb9a3501 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xd441316a labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x015e25b8 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x42e48eab ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x613de9c2 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x767937a5 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7fc55a08 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa34cfcbc ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb51bfc41 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe39c8888 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x24af66f9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7184d905 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7ba2b26a ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb1693176 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf339af4f ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf61ff2d2 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0071ab00 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4c5101d3 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4def95f0 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4f9ce89d comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7434be30 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa1c4f851 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd1ec3de8 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xae2e1011 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x0eeddb70 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x11e22732 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x42f37d62 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4369612c most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x67ae8ff7 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x89a25655 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x8fbb1071 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xc00223bc most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xceadc270 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd268b99e most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd850456c most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf76c0cc2 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x224b2a57 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2f86152e spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2fcfef6c spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x398887ff spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x418ef82d synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4b3fd665 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4db3fcdb spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4eab8ecc spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9976c998 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9e0dfca0 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x41fa31cc int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xd6ef4a89 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x1ecc7969 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x57f16410 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x7605069e intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xf31ec20f intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3da5b952 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x59b43b8c __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xacbecf91 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x204d01c7 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd3019f77 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xbaa2312b ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe2a7eece ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1dd00cd2 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6b444914 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9c596c7c ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa670faf2 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xd8c86f00 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe892e063 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0cb9f7cf gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1247bd65 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x292db729 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x320b3f91 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x37b15452 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x99d22cd1 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xad33f54a gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbfcc2af1 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc204a3f3 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd80f08fe gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe230c030 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe4136088 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xea2034b3 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xef1d3982 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf7dec8f0 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x394d35a0 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe507983a gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x2f27db1f ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x5ad63203 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xabbd3bf3 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x037577b8 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0b207f26 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0e130c25 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x109b4be2 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x471e597c fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5cf2685a fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x743007e8 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x83a2d9d1 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9799590c fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9d65336c fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xabc3643d fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb0cfe8d2 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb239af4a fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc3061dff fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf97acb74 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0312ba8b rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0da2043f rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x22e4a27d rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x27515904 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8b759d45 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8e932eaa rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9d45000e rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa0d82445 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa22d7fa0 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa67a6100 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb248b393 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdd97625e rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdf1bd1d0 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf3f51c2b rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf4a7e6b6 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x00891a01 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x034daf0d usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x042c42dc config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0995d397 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb4978f usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x10a3cd88 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x10d21522 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2020b616 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x216fbb83 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2d5db282 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x332b965f usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f532675 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c6b8771 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5e1bf9e7 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5e9b61df usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x65befeb7 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6a093912 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ab922f2 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75cf2deb usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x78191f0f usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ae9bea0 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f18eda9 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9483a3d4 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9763f368 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x97e2550b usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9ec9a50d usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdb90fc12 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb7e9a0c usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee2eed69 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf56f7037 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x14a6a546 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1897cce4 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1e017f2b usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x60da277a usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6c95965b usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x95970540 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa0717f86 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf8c1437 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbcbf4c4f usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbf14af1e usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc11dcf93 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc1cd9742 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcaab6a92 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x2d23ff2a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xb3f83802 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x16353b8c usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x27a7f00f ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x38e6d19a usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x69e98e4f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x81d83083 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa6319008 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb200a776 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbddabdd7 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd3cde388 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x743a6f64 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x75976dfb isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x29b0bafb usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0d56ce93 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1205c122 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x434c193e usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x45af0141 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49bceecb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6357ec92 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6384abe5 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7501b470 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7bbd5691 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b831a66 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa2a74d24 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa50512a2 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xad6bbbd3 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb90c7404 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb9e9f16f usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xca979d9a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd77c0eb6 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe0bf21a5 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe407c44b usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf125d49f usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf398135e usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0786a5b5 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x098653fb usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1199d34a usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2727b0b9 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3074b679 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d24f295 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c8fbce4 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x563cd413 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x603aada3 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x627a8083 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6470ca5d usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x69cb7756 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x75cbf2b4 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78296cd8 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8caa0907 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x95f11f33 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc1dc33b8 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc9cae7f5 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2c54b49 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd8e5af56 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd97464f7 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed823f0e usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf24a5e86 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfe0b9900 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x187b7a7d usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x40057d4a usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7342804e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7d0409f9 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb4dbf05a usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcad16eb2 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcdb95a00 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcf66164e usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd5f5fbe2 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xda5f5905 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xeb3f025f usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf33905c8 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0a87bf0f __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1b34d580 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3e7e01ce wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x41156990 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4d8d2b57 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xac4d5aee wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc8bdbd64 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0202536e wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x07b94d98 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x09294cda wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2753da6c wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3ea5a488 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x50150999 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x51678ea3 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x516c1a83 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6aa25976 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x89229062 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x93b395f9 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x97a37a4e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd4057245 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfb28c333 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x413bd3a2 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4b0cc8ef i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x6b1c2101 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0b921540 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0df3717d umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x25292aa2 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x41975bca __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8e0e4e51 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdb1b0c42 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe271892b umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf6d7a464 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0126a171 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b6f5804 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1df2cdee uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2089c5b4 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20e07745 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x284997be uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a61df3b uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3bd022a9 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5209229b uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x528d0f5c uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e2c39f5 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x684d1c71 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f0d73c7 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x731ffa74 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7577eac4 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x75db8498 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f3a4078 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8c95a23b uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e4cc542 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x94548268 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a8ed0ee uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ea91204 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f8d591a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa173eb30 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa90542d8 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb49e095e uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb3d2289 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcbaea3fa uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd0bf95ca uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdc2d18bb uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdca798e8 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf21db2a uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0fbb6ba uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe80386a0 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe8d6e2dc uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf68c05ba uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8279dbc uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x92b9b591 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3743d16b vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4a1db258 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5d2a7568 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xbb7ad553 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc5deaef6 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd11f9029 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x08704b87 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xda1850a7 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0b90b396 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x10165219 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x192e6c3a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x360cfbec vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3806de18 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3be87ca6 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x510d943b vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x57f9bb5f vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5b91a371 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6196b4a9 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61b556da vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x680cc006 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x767305eb vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x82e7157c vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x850e5079 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8d0e2e89 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9203b588 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9217a2c1 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x92e4d282 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9336af11 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa2795827 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa71a7797 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe6e18e0e vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf4468c77 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf732c8e6 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf9158f75 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfaaa2602 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd1e412c vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xffe0024a vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2659a989 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2b7b2b8b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x51325fe2 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x52cb5e40 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5d39fe3a ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa744d6d1 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb70176a5 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1278e197 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x196dadd7 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4a94ca7b auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7139306c auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa084cec5 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa36247ac auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb0d1c504 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc2f85e3f auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd8d2369a auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe6d8a62c auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xf9f21aa9 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x29aedd8c fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xbb9c90af fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x399a2bd4 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x7b15a9e5 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xa8ae61dc viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0eedd0fd w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x11e87350 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a6fd535 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6421d3d5 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x752752c8 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb1b8eadb w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb7fb7e72 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xce06cfd2 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe3ced7cf w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xf6e3a880 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x20df7201 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x851ddcce dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x88fa3b41 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x01559f1a nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0b2527ac nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4c13dd1e nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x80b74fa6 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x831f6e80 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbf4f5060 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd81523ed nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0286ddb5 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03e53b86 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04ed1d09 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0610d727 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06f25588 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07619a4d nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x098e79d7 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c662976 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f8056ef alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x110193e5 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x112bd9cc nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1335dbeb nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x146eaff4 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x160f6bf3 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x172fbc31 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1785af24 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b4b236a nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b66d636 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ba13a02 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c91ec2c nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dae37b3 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20dc2220 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2571ffae nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x268cec00 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26fea7bc nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2777fc5e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e75ee94 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x303953bb nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31a28d84 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33848641 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bcffef5 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d88aaf5 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e77d1d9 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ea3e4a2 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40178172 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x427007ac nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x441f89f5 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x473dd505 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a206fa5 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e8ee7cb nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f3dd1fc nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f5cd059 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53733c5c nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53d0514b nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54e5c79f nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x550fc6de nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cbfe55a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cc9eee1 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x648097be nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66555801 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x665dfe09 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67eeb055 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69b0f868 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fa43ccd nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70a35588 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7239664c nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74d12de9 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75277c7a nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7598bdba nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75af88da nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76200915 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7657e622 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79147eda nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79a9c7d1 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a0beae6 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dff3e32 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f25a2b6 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84ccb6ee nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8548a399 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x882a5d9b nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d25d229 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e7ceaa0 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f97b6af nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fc30edb nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b26c8aa nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e0e497b nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1c277b8 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2548dca nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3093972 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa589f05f nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5aefb05 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6cd88f7 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8412b8d nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa8ccf1 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacee438f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadcb2739 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf4139ad nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafb02706 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0d028b1 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2661326 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb303004d nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4859f74 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb81509b1 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb830e8cf nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbac468ed nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbba4c123 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf863226 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbff3ac36 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8c56cba nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd17847dc nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd77172c3 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd79a4568 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda76bfac nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdaa0f090 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6b02ea nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf750a68 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe07e56fa nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4ec88d0 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe807baf2 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8ba5bdb nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe978f4b5 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb79430f nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee001195 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee0e71ef put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0b17697 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf196ea2e nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1d494da nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf370d39e unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4bc9da7 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4c17265 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7bacb66 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7f556e2 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8144c01 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb2c03e5 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe223843 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x2dc15eae nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06e42f2a nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a49997f pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x128b2256 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1acc916d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f0f1fcd nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2053a3a8 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2141eaae pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x233ca58a nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2db878dc pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f2c14ba pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30f9bb40 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x324f2fc5 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x341d0213 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x370721a0 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3bf81901 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d2bf630 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x409eeea6 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48cba378 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48cddcb6 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49a7c298 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b06a12f pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bd4bd4d pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e7f85da pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4eaadc46 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4fb7abb0 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5432523b pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5d58d7d0 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5edd7f84 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6065342d pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ef250cc nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71eff6a2 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7254382e nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c8205e2 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f9d2b9c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8377eb4d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9263ae8d nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a47530f nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e03ae81 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa55c5c60 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa72ed938 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8b8fc6f pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac0e3ee6 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9364cea pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca2c0ac8 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb6b4380 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbfbe741 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdb84a1f nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd576bffd __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd59f9083 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5b6063f nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda02da21 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc2841e7 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd8dfc48 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe40f8c6e nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe824c69e pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe94f4258 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeae0a917 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf441d9c1 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8ee0544 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf93b7618 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff22cd0a pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x48541a8b opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xd883580b locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xe07bfc7d locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x17104232 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5c63c733 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x04b57b16 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0dc31221 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x119cb349 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x74b9d56c o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x87fd6964 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9470966b o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xcfb6aac0 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0c97da97 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0f77bd8b dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x17c4aea1 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x34dd4ce9 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf1aad0ac dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb8e3287 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2a3622e1 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x696f0afc ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xca7d8651 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xa6616097 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xbc199748 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL kernel/torture 0xf908c20d _torture_stop_kthread +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x6fcaad1d notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd9a7bc84 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57861324 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57d39367 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x882ce5fc base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9e0112d0 base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xaedfbb15 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xc8fca8a6 base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xd11741a1 base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xe3d900b5 base_old_false_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xaef5126d lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe537bc9b lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x28f87dee garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x334ac003 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x3b3f9c2f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x4d0f27df garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x6829a69d garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa291d1a7 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x06d13bb0 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x0f7a04a5 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x40ca7ab3 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x9bd1d723 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xb81d45a9 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xe3dc231d mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0xb9105257 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xfc3045f2 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xea322bae p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf7fe70a4 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x3a0e22f6 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0c02d84f l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2e999ddb l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x88ae0a6d l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb5f21be8 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcad895b8 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd15ffaa6 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd6708db4 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe0e2f489 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1f3afb59 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5d1c8097 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6522a3f4 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x721a6d7e br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x76419e0b br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7ecf5773 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x89323560 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe541ea90 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x2d03b435 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xeec456c3 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0192d2b8 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10c3122c inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10f1d0a9 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1547b96e dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b247ddd dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42289cd8 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4468fb99 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x52249678 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59b8461b dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6099eac6 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x620ea75a dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6399a8c1 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x65c1cbef dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72c42c9b dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x778e5ba7 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x78d86213 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f722e7d dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x906b805a dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9254b835 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa781cdd7 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb60fa7e1 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfb5c6d3 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc00161c4 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc264bae9 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8dbc021 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc91561f0 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd710a2e9 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd72c9c2 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe011c875 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3efa680 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0e7f4d5 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x419ac461 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x46d2d7fa dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x50b3b8d9 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x51e062d5 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb855cfe5 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfdd9720b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x227edd85 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc1b0865a ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xec1929f0 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xeef285c7 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/gre 0x18995d20 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x66423fe5 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x053a0af9 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x10299834 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1430ed9c inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8ae3030d inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x94ee8e27 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd19a2d8d inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x351c2297 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0c4d72c3 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x18922b83 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2b22361b ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x43b23314 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x85ba6e38 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8d0a5514 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa0db705e ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xae68e7a5 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb1ee4822 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb7fcee41 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbeb769be ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc67b9b69 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdb405812 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe8655cb1 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x4f074642 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xe4b7b5a7 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xb2610251 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0c04f34c nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x571569c9 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x59ef4e64 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6c9bbd5d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x923fca85 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x56356d47 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x430a61e2 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8597a93d nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8c2dc8c6 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xa01cb596 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf0084de2 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x7b365f3c nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5ec3e0b7 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x67b3b3ab tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x899d886a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xdb61b2d7 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfb79f562 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x3884d0b0 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6b084854 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xde800d98 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf5e78432 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0592963f ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x107eb813 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x59ef44b1 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6303c7c1 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9d10f258 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb97f09c6 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc366e044 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x7ceba747 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x9ad82b4f udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd470078c ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xc42b4846 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xce954562 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x8f89298d nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x18e2d568 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2db496c1 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x60b9803b nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa6cdfade nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf0c71cb5 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x7e49b918 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0f920fa6 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1caf4dbf nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x23925c8c nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x6471445f nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xec3fb6d9 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x33a0dd54 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b668231 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0db798f4 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x13ee7703 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2576a723 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x580e7b64 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6f6162cf l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8282b70d l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x879f8e52 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa3e66a64 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xad5e057f l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb1565044 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb220bb8c l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbcdf4f3f l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc36578b0 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0e7e0cb l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf9d55e2d l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x40fd4fea l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x291b4f54 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x30ce3262 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x387356de ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x516ae16e ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58d85ed5 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x61e12184 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8450eb4b ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9221bbac ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x922c053d ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa48a7278 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa7e1b0fb ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc3927962 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe7dfa81f ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe999594e ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf12302fb ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x38404e09 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x622ca6fa mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x70789adf mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xb3da4276 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x19db4cc3 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4260e2ef ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x46b0aaa4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x508e2210 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x554da4e3 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x568480b3 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x58126e00 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x689d3e01 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x83c0967b ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8fe9c749 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2bcea36 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa7c9fb8e ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb23000bb ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd960439e ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe4d2acf8 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe97a9134 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0a680854 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1d87adbe unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4663257f ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x68a79c50 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x004d01b9 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x009c37d2 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x028dac1c nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x042c8b83 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07b7057f nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0af1dda7 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ba89b0f __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ca785f3 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ceb5425 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10b3e558 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14f90d77 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16baf4ae nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17675517 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18a85997 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b90200b nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c1e9e6b nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cf6cf7c __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1db6df6e __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x206f55a4 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25513795 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25e8d251 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27370a96 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2915bfb8 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e28fce9 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e860005 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30293498 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e7a1115 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44312ec2 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4517d945 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x464e9d6f nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c771146 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ed33d5a nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f81e66a nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50f15805 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x522b7df9 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x586257ac nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59295bc6 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a1daff4 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ffc5f4f nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x668246b5 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69dc1a72 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71156538 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72d42c94 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x774f4144 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x794a2e90 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x809f1d0f nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85447bf9 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c76aa56 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x940d306c nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d77d2b9 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa06a777a nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa14a848d seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1ace984 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa26056ea __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5f9e964 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabc65638 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9cfe7c2 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc459afae nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc58a24a5 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc86fd1cc nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9861a8d nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7909b7b nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd88bf41b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde30adf9 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5053a5d nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe67c4431 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9ba6c6a nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb596ed4 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec100114 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefe7ff12 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1635f5e nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4be5762 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf58684a3 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5cbcfa2 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf800f147 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9280f7f nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9f33d42 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd28dcd6 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x25d3cf99 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x834e93d3 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x9889be02 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x112c358f nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x82caac31 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x883b7ed5 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x89408f17 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a6fd7e6 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbbaa98e2 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe714358c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeb66b20b nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf0471326 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf87c6804 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xec77aebe nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x60afb8d1 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa471dd1d nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcc966018 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xdf5485bc nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x501d9a8e nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xfe223a34 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x42c66d71 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x47b59c7d ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6b171d7c nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe13c71c2 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe26e4c45 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe79efeab ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xee9919cf ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x30cc7ec7 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xc9a2f24f nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8353b872 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xac0c26bb nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb0931b39 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd8844821 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1b36dccd nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3f005751 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x464134e4 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4802e0a6 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5e04cbbf nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x72c09e7d nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x99509712 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x996d0f09 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9c8366b8 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x3d5441a3 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x4fd41b42 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x42aa23d6 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xf86ae1b3 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3161647d nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x44235fb3 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5e0ce153 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5f3c7d77 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x60fa9bb7 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x675e168e nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x67b7b32d nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6edfae65 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77241d31 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x90523a9e nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9109c885 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa5be7420 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaf73e8a7 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbcddf7fc nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc6d2563b nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf9361d9 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd3980533 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x04210bf7 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1aff66ea nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x919e4719 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x96de1e0e nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9c66761a nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9e4955b8 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd189cbfb nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x06cee04d nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xa88cad16 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe6fd50a1 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x6a7bd575 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x12ead514 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x91f0928a nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xb2349c9e nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x298355e5 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x43aeec8c nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x76909b5c nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa6b3d4b0 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xef8d76f5 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfeba28a2 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x084f7447 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xaac29007 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xbbdfb09a nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x4c3a2a7f nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe687a379 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x07bbd2a8 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x07d9181a xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x16474485 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2b7ceac7 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2c79b696 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x300c7e77 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4743f9e2 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x483bfdf9 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x78b42339 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ae62bb0 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8afb7a5f xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf820a21 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd70124e3 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd9b42c30 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7604a7cc nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7e32216f nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xa79cf4df nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x075c5ed1 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x24628176 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x37ad2ebe nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x11aa6efe ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1640f5de __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1cd3da5d ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x371ffb47 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x39f6c1ab ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x470e6f59 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x6d2a3281 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa9ce8c91 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbe2ea8ad ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x2a0c5561 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2e94fd42 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x2feae5c7 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3bf3b1c8 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x3c51b77a rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6399dd01 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x63c531f6 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6f763b35 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x74b8be02 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x75affc5b rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x7668fa00 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x7dbd5eca rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x8d9d99d0 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x900bd55f rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9948d14f rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x9f8fd6db rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa67e8259 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa955bc47 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xac035a36 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc21359c6 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe23a5f0a rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xedc0d3f2 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xfc3371b3 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x29e50c12 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xff65be4e rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2aa46b8f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3ae34ca1 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9baa97e7 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00703241 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x019a414e svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01bfa67a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01c3b269 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x048982f6 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0582758f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x061fd7cb cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x072f3ac3 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bf20c37 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e31abb3 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e9d3c77 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11687e82 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11fc673f cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13e67772 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x142cb1ed svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1656eff1 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17512219 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17cefda1 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19082b3c svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b1c1d0d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b7f2fe3 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ed8b343 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eed3247 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20694504 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x211d40c6 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x222957fc svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2293e2e0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22a9744e svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22c2a4df svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x234be155 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x288ddbd4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29ccb965 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b5a7284 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d31f0c6 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d504457 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31b380e7 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3452a852 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35288c50 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3669f88c rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37b0ec2d rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e9160c svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x385a274f xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7df7ac xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4347e7c4 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43eb792c xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4515a89f sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x462fc6b4 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4654e393 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x475b7e92 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47d6ce58 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48a99a5d rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48acf2db write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e83a3a0 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f6d8b9e rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51ce505d svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x526323df rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x549f86ca rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56064ce0 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x564fd159 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x570d1d34 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5865208d rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a230c8d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5af951fa xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b40cf81 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b87a646 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c238ee3 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cb784a9 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d5916d4 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ee8f46a svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ef94f86 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x610f8f06 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x621cd3f0 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63e193be xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6411f4e0 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x648a3220 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64c1f02e rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65198c2c xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a12ce0 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6843a6de xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a27f612 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a7f3dc3 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c89bab5 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7055d933 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x753fd98b sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75e7272f svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76282c50 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76b6681c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77aba0f8 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cffbac cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b8a68f5 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bb9cb9e svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e7113e8 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ea2109f rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x824b4247 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82bcac3e xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8374ff64 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83cb4166 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8409e2d9 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88da748c xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89691cae rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c32a35b rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c8dcf1c svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d7d30b6 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e4a754f xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fd15ba8 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92fb7a18 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94919505 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9896854e xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98a25c20 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x991d3c4a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99b263e4 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ad72dc1 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cd28199 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d4b093a read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e645794 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fa58442 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1bd19ed cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2195e75 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa65ea365 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6bbeb5d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa769096e xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9f69cca rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac4a32c6 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacaf9ebd cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacfe8280 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadc322ec rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xade7f6af xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadf31c30 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae72841c rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0b51caf rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0d983c8 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1bc883a rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb29adda1 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb32e72d1 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb467eaa5 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4af98cd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb539dd8c xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5ef5fb6 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7dce37e rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8307757 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb6abe0c rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9b7901 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2490d50 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6daf794 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc070808 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd62a283 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd28d46aa rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2a96a4e svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd52ba728 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5ec4ae6 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd778757b rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd77a37a0 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7ff1992 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd85f8487 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8ccd5f5 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda6f90fc xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbc4844a sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc955504 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdccde704 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde12e90c svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde6f726e xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdedc9e27 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf36fcd4 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2215f3a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe33d73e4 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4e45e54 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5196af3 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5abd645 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5b36a28 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe70c5eb5 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe96e71b1 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe990978b rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea547aad sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb2688b9 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb399b01 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebc64775 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec908650 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedbb749b cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee49b18f xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef782315 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b765bf svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3ef6dec rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5ccbe87 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf609cb19 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf66a73a8 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6ecd1cd rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf75fb0e4 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf84936fb rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9c02d45 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa9dac6d rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb02b9bd rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd87431d rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdfd3282 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x03cde0fb __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x05bb29d9 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0653a7cd vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x08cf765f vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x13de6708 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x286e83ed vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x392432b9 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3cb99a4e vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x67eb6e05 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x776dff91 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x94558077 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe845e5bf vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf75c4ede vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0fe19361 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x258156b2 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3127be7e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x43db8fa5 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4cfc9502 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4e029795 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x50774d51 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6fd96d22 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9a49c09f wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbb5d1171 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc92fd4b6 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd9818f2c wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfd36dfb7 wimax_msg +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x061a4027 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0a6ec487 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1b1d5891 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x27e45342 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2cfcd830 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x699b6e57 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7edfb897 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7efdf63d cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb6aa5b91 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb9ab9348 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbfd25739 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd5217254 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf73e63f5 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x17d587b3 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x181c425b ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe55b2e03 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xedb41590 ipcomp_input +EXPORT_SYMBOL_GPL sound/ac97_bus 0xde763666 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x3e612912 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x880cbbd7 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x108bee71 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x122f4f66 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x125d1a39 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x5569f8e0 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x64000452 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x8bdc0f0d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xe2b21ca0 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x43522f99 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x95b785ad snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd344a566 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1173db42 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1bfc5082 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2e2ad48c snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4c15f82a snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x66f01556 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x79a2f571 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x91c041a4 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xadd7f14f snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe4d014cf snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x01567a11 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x01aa8824 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1061ded6 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2878c097 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3bed491b snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x83fab1e5 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9295b5a2 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa512600d snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xaeb3cb43 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf5cf7e3f snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfc35dde9 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3352c491 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x69a7f229 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x76f8b25e amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x79a9e92c amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x894f1b4d amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8de570a8 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe9f30781 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x041c346b snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x05871d29 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x09fafed9 snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x0be77271 snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x17b3665a snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x26ec4f2f snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3692c250 snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3d4c3c1f snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x48a1545c snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4b910aca snd_hdac_ext_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x5686af4b snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x57c00e13 snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x622ce3cf snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x6cae0f3b snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x6db95dee snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x760c44f6 snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x89549945 snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8f50f7c5 snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa26b23e1 snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa5db37f1 snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa6fc4fa5 snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xae561e22 snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xbf0ea09f snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc4427b8a snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcf8319dc snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd046fcb2 snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd322d456 snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd582d7a9 snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xde0267b0 snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xde2ba2e9 snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xdf1babb2 snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf813d0ad snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0294be6e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x051b4403 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a07f964 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e896f8f snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0ea7036e snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1057331b snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11e50785 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1298a501 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x18686309 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1bb24b58 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f0de489 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f6de258 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20142484 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x283ab50a snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28b992a7 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x29fe8b4d snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2ac11f45 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2bb923a0 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2ee77259 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3026fc78 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38d2c817 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x390e49de snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a8a5659 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x426b73af snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x468e3c23 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x48b49fe9 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49f14ea3 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4ad97f81 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4be01b1f snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c1f7c65 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c951739 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53f55b2f snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x624f6ceb snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62ffa4d5 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64aefb7c snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68653aa0 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a73a6c6 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b90271c snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6cdd44a8 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x70adbf8c snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7bf73cce snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f07e439 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x800bce92 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x853ed731 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x859448c5 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x871f2eef snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87206347 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89c88e79 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89e2df91 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d470224 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x920d6079 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94130fb1 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94d30ac8 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e564981 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa38df610 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4e3668a snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac57619b snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb47d584e snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb5a50ada snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb614da17 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbafe113b snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb8999e3 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf2e6fdf snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc74cc4ed snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8edbff9 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcdb78f54 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1627f76 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe1f6cdd9 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6a44d5d snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8908f27 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xed5a4630 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef69ea11 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3341d94 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf98361bc snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa9462bc snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd36d843 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x50086616 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x887cc26e snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8a4b5e55 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x92e8eb45 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb073a4ee snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbb705b8b snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01cab13a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x021851c5 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0873f264 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x096e3a81 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x097b4ea7 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0aa9361c snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bcac5c6 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ca88304 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf462ba snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d92f684 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ed6e14e snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f67b339 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11c58107 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1345f084 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13471acb snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1417668b snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16628101 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ba8b3f9 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d29ff8b snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1dcd9859 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e2d648d snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24750918 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24ecae7d snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b4b2560 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c202cdf snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e5439dc snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e697fba azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30b325dc snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32a9309c snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x331aebda snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33ba8e63 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39853d51 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a933e23 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b0bc428 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d825ef3 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41691e9a __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42b4d67d snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4642a4c0 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48787e2e snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a7d8cd2 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ce40243 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ced9c55 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x533c46ce snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56043098 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57e58afc snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x595007a9 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b5f36cd azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bd869d2 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c76f5c2 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5eab8a1e snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f64122b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x613aa9f8 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61ae6de6 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x683e7cf0 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b85c619 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b92ccf2 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fc0d349 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x766b8bb2 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e2d97e8 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f228eb3 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x805de0a2 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80e95309 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83d3b0c2 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8656f278 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x881a4e41 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8aa0c84b __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8cc807ee __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d18901e snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ee8abb2 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fe0ae36 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9267677d snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92fdeae4 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95ff8f94 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96528909 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x973ccb9c snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x980064df is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9908761a snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a292484 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b86e46f snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b9cc814 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c48c1db snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d6b3eef snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d7074b7 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3816d0d snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3ffdae8 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa68fdb5b snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa75392a1 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa97f5bd9 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac551bc3 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xace2cbc9 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb189736a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1fc23d1 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb46c840e hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb494fb87 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb787f1ce snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9803b64 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba27e202 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd7c37f9 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdd3c756 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc58f7fd6 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7ed10fb snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcac6c6db azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce6bed58 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd048540c snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1316804 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4947140 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd6c1845 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd753410 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddb8f517 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde6e0417 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde978d4f snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdeae1c21 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3ed3b6a snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe62ac422 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec0536e4 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedac1314 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf16fcc51 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf624b1d8 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6873cca snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6b3d5eb azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf92d4ce7 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf951d937 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbb0aa97 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbc63722 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x11f62556 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2ee8a204 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x31de3c5f snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3287c4f0 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x359b955b snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d795291 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4169cb34 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4da945f5 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f992536 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5bf05f93 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5ce06fe7 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6711def3 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9ae20087 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa02084a3 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa4d99a27 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xab7b3b4f snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xba1c2239 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd4d20444 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdc485c55 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdef14325 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfe047387 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x46e80e6a cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xbe172038 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x25ee8e76 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xd22cc9ae cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x3a7f496d cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xb4f750ad cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xdbecec3f cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x98df241c es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x9f107a22 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x41143d24 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x25676c35 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x38c1eae4 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x756058d5 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x916bcbd5 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0xd6488245 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x5369c191 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x2dcdf604 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xb5a84a7c rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x89ab89d5 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xa8580ddc rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xc6f74cb9 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xde0daccd rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3e9840e1 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x61fd686e devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x773a902f sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb730dfee sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe703b00d sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x4fe8395b devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x237088e8 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x4b91d49a ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb3dcb216 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x373a81f0 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xeb9f5486 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xfb4a4e23 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x4008e7ae wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x56f5ba95 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc58344a3 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd6c599b4 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x53e82a93 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7531f2f0 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x430a175d fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xefabbab7 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xa035c347 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xf5a560e2 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x08ad2a36 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4b8e8f68 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xb3073da2 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xd0d3967c sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xd3cb776a sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x29e1efab sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x301335c6 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x527eddea sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x59f97ee2 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xa58188cd sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0f0830ad sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x12c181dd sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x14295450 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x157d7016 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16208eb8 sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x198b9ef2 sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1c41006e sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x24659b16 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x25c5136f sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x263b878a sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2753aaa4 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2a9f9621 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3a9910aa sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a00086b sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4d8c95cb sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x523ebdd5 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5522dabb sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5b02b010 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x67043ba8 sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x70e292bc sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x712258d1 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x763e31c3 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7769cc0d sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7e7cccb2 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7fb78381 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x802b4af2 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x86dc0f86 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8dbb6c29 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x90374f02 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x91497066 sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x924f5eb8 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9daf133f sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa0336f22 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa28f33a9 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaedff1bd sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb07d0b73 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb41b6596 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb4a498f5 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb7ab4a55 sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcb193d5 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbdb211be sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc01b0e9e sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc4e7ab23 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc5fdc796 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcb183d9f sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcc0243ca sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd7890dc9 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdb1270f9 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe8cbd7b5 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe8dd21a2 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xed213ff6 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xede89fa8 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xef52eb78 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xefccf352 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf11571c3 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf27d3622 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf33d7e20 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf7b0a0d1 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf957405b sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xff9f89fd sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x320fd179 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5d6efa2d sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xa95da4c8 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xadf1b9ff sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xb0b05e63 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xe594cfb5 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xedd75f99 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xbaee240e sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xc2ac7e78 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x011e240a skl_sst_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x06033860 skl_ipc_set_large_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x173eac12 skl_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x21d8f514 skl_sst_dsp_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x2591841e skl_ipc_set_dx +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x46f3e5ed skl_ipc_restore_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x637f6e70 skl_ipc_init_instance +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x680255e7 is_skl_dsp_running +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x70128023 skl_ipc_bind_unbind +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x80d5688e skl_ipc_delete_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x88fdcfb8 skl_ipc_create_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xc0f93e0a skl_ipc_set_pipeline_state +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xc79163c2 skl_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xc9c78c06 skl_ipc_save_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xf25aaeda skl_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00143396 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0186db47 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x073a9161 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07cdfbc1 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08e358ca snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0feaebb4 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ff039dd snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10d1dfc0 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x158f6883 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15e4b983 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x171cc02f snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17c88985 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18a6a818 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18d8c65d snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x198168aa snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e76c3ed snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e96e93d snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ec11aa9 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x207df95c snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21d3f784 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2214623f snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23c6c3d8 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2731c279 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27f1be1f snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x288b7c59 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29a2b491 snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c5f7290 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f346505 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30db61f3 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31209af0 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3180bdc6 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31e5c8e5 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33b6923e snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x344c8bd8 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34a1065b snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x378820e9 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38bd2bce snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bd8dfb2 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d6a3413 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e122c34 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40234ce1 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x402be5ac snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40c1e5c4 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42327c32 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44bcc02c snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44da1efd dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x456bbf9f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4732126c snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b4ef985 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4be59448 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4be5cf6a snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c0eee01 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x526c26b0 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52ce09f0 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53d3a6ec snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54868d3d snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55f6321a snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57ab9946 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d1ea29f snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dd911c1 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eea9822 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f2054d4 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63431292 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66ee821b snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a8bb205 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x718216cb snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7464e007 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x748b6db2 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x759dcb7c snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7766bff9 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77bc3c61 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78acb211 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a061a47 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a1fb3ba snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7aca752f snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b09bd70 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b62244e snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fe8aa36 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8159991c snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82de2e69 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82fd6dc9 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x854ac0e2 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87971207 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87a16fa7 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89faa40b snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c7c5418 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c9586aa snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ed848b1 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90ecc295 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9332c5a7 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9439a104 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x951c768a snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x954c1349 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97933634 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f7eaff3 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa02ad590 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa096043c snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa136fade snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa492b015 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6b93867 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa70e2202 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa65c169 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa909bc7 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaafee27c snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae081844 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae62cbe6 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0fb6ac0 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4eb1fb2 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc420d933 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc421002c snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4291f0e snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4b233f4 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7ef2128 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc94b23f4 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcabe1f69 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcac5bcaf snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc802ab5 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf7dfaa7 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd30229e8 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd433d135 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd53a16a3 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5c128c7 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd696d471 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8aa0c79 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda2bc0a4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdab1ba68 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac4c5ca snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb9bd94b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbacc6d8 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc064109 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdcc40e2e snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddd98c11 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddfc8b8b snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdeeedbe8 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe017776c snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2540654 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe30c6c6a snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe332ce6a snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe42b0aed snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5a05db1 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe60eeb95 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe858c9a5 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe85c1e93 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9730ba3 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebd149cc snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec9ced8a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf027ea74 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf465bf0b dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5e666b4 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9de3808 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9fe9787 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd5794a0 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd8f7ad6 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe013c93 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x070bd7d2 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0c67911c line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1cb6677b line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1e89afe2 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1f85eb08 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x214caa63 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4949f644 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5d3a39c9 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8809bd55 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaa41e887 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xadfa4857 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb0dae4b2 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb5083119 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe7691e4d line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf2672066 line6_pcm_release +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000bff64 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x003495ab regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x00397036 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b8bbf1 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x00c2ac85 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x00ca6633 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0119f47e pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012acd39 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x012ef9e7 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0130e653 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x014fb79b dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x0155db43 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x017e84cf cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x0184d0ba pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x01934555 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x01cafc1d of_css +EXPORT_SYMBOL_GPL vmlinux 0x01cb0c50 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e81d94 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x01f4198b fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01f85779 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x020495a9 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x020bcbfe ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x0223d213 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0236bd5a get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x025bc1c4 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x025d0384 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x025e72d5 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x0280a6c6 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x02b42592 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02df5e6e of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x02fe42a3 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0318efc6 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0344c4cc ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x035335a9 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x03655efd sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0378bdd8 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x037d5954 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03994097 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a255d9 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x03a34e9a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x03ae365b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x03d9eadb __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eb8eeb bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x03fa9812 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041aab47 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x043db14f crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x04407098 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x045fd64d efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0469d2b3 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x047ab445 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x048137f3 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04aeaafe ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x04b01c4d blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04c3ad17 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c40254 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x05086576 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x05153dfb device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x05293ebb netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x05306bfe for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x053c8912 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055bdde3 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x05637d94 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0573535b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05934a43 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x059409d7 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x05a842c0 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x05ae9f80 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x05ee726e xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x05ef85b8 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x0619ba2d irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0622c578 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063c6921 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06686126 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x069554ac __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06c60048 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x06cf99a5 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x06d34286 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x07185d3c __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x071ee624 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x07358c5e rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x073a338b fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x074e39ed public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x07527a7c regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x075fa1a3 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077de154 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x07a07dbf acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x07afa4d6 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bcc12f phy_put +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0808413d devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x083ccd6e crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x08789914 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x089191e1 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x08bc0915 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x08d2646f virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x08d9ecbb dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x08f10258 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x08fe6ff0 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x0902f010 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x0911766c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09489eae regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x096df88c iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x096f1371 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x09953ca7 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x09b97f37 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x09d2792a pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x09e91b00 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x09f42673 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x09f80cab dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x0a3c1144 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a89ba1b irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0aa512d4 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x0aa57abe sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0aaae0d6 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x0aaf0c49 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x0ab174ab sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x0af57ad0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x0af962ee blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2c9e3c xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x0b34f06e gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x0b386f4c __put_net +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b5efdfd skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x0b6cfd7b sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b6d8554 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b87f6dd sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x0b885c45 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x0ba1dc23 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0badd46e edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0bb74169 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0bc5d5ce bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x0bd3ced5 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x0bdf8c23 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0bed1e02 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01e1d5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x0c099e6a __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0fbb47 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x0c1a912e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x0c26d120 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c43962a vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x0c4494f8 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x0c595c70 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c87de49 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc26369 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x0cca6835 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0cfca9ac nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x0d3b6eb3 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d7299fc get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8601e7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x0daf394d ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x0dc88f65 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0dca8ccf pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0dd74b40 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e155f39 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x0e1ba464 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0e36a54d ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x0e3c37e2 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x0e3ca245 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0e43cf20 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x0e4cacfa unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0e501b9d device_rename +EXPORT_SYMBOL_GPL vmlinux 0x0e63a7e0 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x0e66505a dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0x0e83c099 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x0e8be7ee xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0e9386ef wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x0e9e4334 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x0ea93c0c blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0ead0759 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x0eb50b9b bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x0ee9730c bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x0ef6f9fd __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f24302a tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x0f269c54 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f292556 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3c3d86 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x0f4fe481 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x0f6e4206 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7852e7 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fc2d86d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fe6466c xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x1001469d __class_register +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10307243 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x106193a1 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x108f3eb6 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x10b72c28 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x10b873d8 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x10d704b2 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x10e57a9e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ef09a3 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11049ddc rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x113fc5b5 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x115f448c inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1167fde9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x116e2159 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118a1150 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x11b887a4 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x11c26b18 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11cf8f11 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11f10cec __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x11f47fae sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x11f62117 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x123b732c transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125f7cf4 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x1262ca42 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x12669fd9 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x12685222 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1285e278 md_run +EXPORT_SYMBOL_GPL vmlinux 0x128bfa28 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x1292ae3f pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x12b872d6 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x12ca8e17 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132a22b9 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x132c8100 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x1331c6b0 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x134e7211 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1372ed8c ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x1373d8ac led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138b2d1c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x13a60cba i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ced224 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x13e246fa mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x1421bf59 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x14261be5 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x1428e040 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x142e9c58 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x1457bdb4 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x14613627 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x14874eaa __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x14c8eb15 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x14db2a9f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x14df6adb ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x14f62d8f bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x14f7e86a pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x151f555c ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x15266c87 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x15293a52 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x1546fb67 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x15802d99 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1590b6c7 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x159390e0 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x159ed540 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x15ad6f76 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15d08dd2 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x15e9cad9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16149d7c pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x16216b80 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x1631ace7 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x164c76c7 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166fe768 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x168e10c9 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x169b0d2c dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x16c24146 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x16ded361 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x16e215c6 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x16f4ebb7 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x17031752 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x17064074 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x171818eb fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x172a3ff5 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x172d184d gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x172d1dd6 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x174e0eb4 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x175d4973 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17704789 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x178a1f8f ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x17b0d394 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x17e96df4 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x180be9f3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1816648b blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186e9b62 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188060bb tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x188239ab list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x188a2d81 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x189215d7 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x18a30a7c sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x18a312cb ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x18d3ae49 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x18dab388 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x18dfc6d3 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x18edd4ab pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x191f71a8 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x193a307d __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x19462d18 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195a2903 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19674ecc pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19915198 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b36786 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x19ba373d ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x19bc7741 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x19cfae4b inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x19d8fe5b usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x19e658e8 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a10f6e0 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a299cd1 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a69d5bb spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x1a79b1ea __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a88eaa6 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a996006 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x1ac70b61 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1adb5c4c ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1adc4547 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x1af3ad88 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x1b0ea30d ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b3f8704 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b546621 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b59154e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bfb958e ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1c0d938e rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x1c0decbf ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x1c23e0e8 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x1c425224 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1c4814d3 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c84dce2 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9a01d3 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x1ca8046f clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x1cddc0c6 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1cfd4486 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d28928e rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1d2e1634 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1d449b65 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d569291 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5e873a __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d688850 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d9052dd regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1d9c373c usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1dbed4f3 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x1dbfb6a8 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x1dc41d00 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e3026fb ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e4561f0 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e9fe82a acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x1ea353fe devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1eb4756d __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee139b6 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x1efba49e usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1f0f039c driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1f37409b dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1f54a5cb regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x1f6bca37 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x1f7693c4 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x1f7f6fac register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8791e2 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x1f8b0c32 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8e8502 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1f93d72f ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x1f96484e blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x1fb13a37 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x1fb965af iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x200cc695 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x201b4ef4 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x2031d94f usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x207c6c9a regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2090a37f mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x2098ae85 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a1b95f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x20a46c20 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x20a53300 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x20a6ed8d blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b8d5b7 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x20c663a9 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x20cb5db3 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x20d8c59c usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x20f953a2 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x214d06c8 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x21712352 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x217c22fc tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2185c3ff blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x21a3d3ab xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d33135 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x21e135be device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x21e59ab9 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x2204a2a5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x2233494f ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x223c8cf3 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x226450c0 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22ab4a28 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x22cd404e clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x22cd7d8b preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22dba5d5 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x22e18975 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x22ee3909 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x22fa3a35 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x23048011 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x233797b5 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x2342154f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2354a6ab irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0x2357da63 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23bee7f9 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x23c6cdb8 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x23d7be6e ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x2408dc5f extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x24233f46 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x242f2b7a usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244a6b0d regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2465171d sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2483fd4f __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x24a9c07c da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c20dbd sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x250d3e29 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x2514f1f6 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x252c09be injectm +EXPORT_SYMBOL_GPL vmlinux 0x25323a5c pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x255e3e04 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x25a05771 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x25a06366 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x25ac723d pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x25b08004 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x25b4b6e1 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x25bacdba anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x261dd96c acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26548b4c regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x2655f183 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2680071b pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x26895fc3 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x268d5124 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bb283a blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x26c166aa fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d31fee usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x26e1051e tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x2702a01e pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x27050e79 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x27087a38 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x2708eeef fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x271db55f rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x277c4fc8 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27aac812 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x27b709b0 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f3497e regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28084a7d reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28329ddb irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x283673a2 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x28492d1e __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x285897a0 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x2896346c tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28ee3127 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x28f26366 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x29253164 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x29273aae regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x292e5ec7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x294e4d97 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2960864c usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x2968b6be sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x298def4f sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2997b99d usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x299b262d rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x299c07ef tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x299ea674 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x29c870ae pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x29da1652 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x29ea3f6d device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x2a021afd register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x2a02a1a5 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2a150f43 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x2a26966d netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a631e47 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a77043b _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x2a8caca6 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x2aa70d13 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x2ab999f4 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2abfc05b devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x2ac35f9e set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ace1edb pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2afd2fc2 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2b0cd852 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x2b1d4f73 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x2b26302f usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b32636c component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x2b6052ae dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b6b3128 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x2b7e5623 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x2b80cca6 user_update +EXPORT_SYMBOL_GPL vmlinux 0x2b8b75b7 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x2b8d8e3b netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bb62123 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2bc68b25 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x2bdaeec5 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x2bdeabbd efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x2be505b8 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c06bbba xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x2c205e95 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3786da pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x2c40e7bc dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x2c4a3bd8 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c630bd1 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c73022e ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8d0a89 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2c9ed74c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca678dc iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x2cb40fb7 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2cb4cdb8 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d664d10 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x2d722a73 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2d77cf9e wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2d806f39 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2daedce1 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x2dc01cd7 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x2de0e58b sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x2de11320 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2e1788a3 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e35844f rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2e40290c max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x2e5e2d87 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2e791b82 device_del +EXPORT_SYMBOL_GPL vmlinux 0x2e8d373d iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x2e989ab9 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2e98a1da led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ebf225a input_class +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ed0e3fc wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2eed52ec usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x2eeda74a rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2ef204e9 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x2efdf9b0 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x2f02761e devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x2f0a48af ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f498bfd ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x2f5c5336 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x2f5cda94 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f9064ab disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2facd4af led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2fbef2e3 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x2fc97be8 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fd8fbab wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x30332014 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x30611378 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x306e052b iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x30a424a2 device_create +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x311ff7c3 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x3125c964 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31416963 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x314f75d9 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x3154ece5 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x3183871a regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x31a5cd31 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x31b90480 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d04a70 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x31ee2ca0 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x31fa4d7b ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x31fce70c ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x31fd39c3 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3239f531 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3243b35f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3252fb05 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x3254e718 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x32557712 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3263d968 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x326868d5 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32a44b7a init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c3f8e5 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x32d89e5b __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x32d8a3a6 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x32db85bd class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x32df0aed rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x32e2dc3c blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x32f12edd cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x32f21b5c ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x330e3770 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x335a0585 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3391bf13 pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0x33969771 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x3403cfb1 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x34570e97 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348fa539 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x34904617 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x3493b624 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34ab0311 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ad7072 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x34d09130 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x34dfd79c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x34e5375e fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x34f0cfbc __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x34f23a48 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x34f513c4 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x34f56c91 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x350827c3 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x35163a28 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351ad95b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x351bd0d7 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x3524142f ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35290d83 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x35795b9c da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x35811fb5 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x359a7807 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x35b97a3a device_register +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360db162 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x361553b8 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3622b438 user_read +EXPORT_SYMBOL_GPL vmlinux 0x365283ae ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x3658fd4c gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x36746d0a gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x36758037 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e20ce1 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x36ec8106 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36f93dd8 device_move +EXPORT_SYMBOL_GPL vmlinux 0x370810f2 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x3775f8d0 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x377a6b89 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x37d2612b hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37db07ab blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x381ab1db ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3826ee0d debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x38409a46 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3849fb87 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x3869c686 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x386d88b8 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x3887a6dd gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38ac0155 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ec4cca crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x394deb67 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x397bb6b7 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x398b44fa pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x398e8595 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x39a5fbee blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x39c2714d devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39dd107b __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e6c0ec pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x3a130f36 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a368579 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a42f7b5 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a47e8a2 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a7d9a2d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab9e067 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x3ac599fb rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x3ac81e57 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ae882fd pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3afdc6fc devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b024b80 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b5f181f clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x3b5f889a rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b763481 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x3ba8eeb2 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3bb1aa2b serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x3bbdb24c devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x3be5e4be io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3bf181b6 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3bfc05aa device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x3c0ccf52 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x3c29c7ca irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c67ff6f acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x3c8aa28d sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x3c9088fa ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3ca0592a crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x3ca4107b ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x3cb890d3 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd3f303 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3d0a8d95 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x3d0f8de2 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x3d10f682 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5a6916 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x3d5b4409 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3d5e2f3d simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x3d77e766 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3da7d1bf clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3daccfd7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8ac1f gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3de91f03 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e045bd9 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3e19b6f5 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e45cc3d power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3e483463 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x3e49a085 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e93e406 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb17d5a devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x3ecb0837 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f2ac94e pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x3f3bfaec acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x3f437917 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x3f7194e9 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb80fdb syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fba9482 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x3fdbb8e5 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x3fe0e023 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x3fe622d7 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x3ff732c3 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3fff94a9 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400f1bce dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x4010b80f pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x401d905d crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x401e84c8 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x402a1502 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407adeee sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x409e1873 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c6be4e dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4116bac1 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x411aebc4 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x413b8601 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x41760ddf spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x417b29d8 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418710e7 mce_inject_log +EXPORT_SYMBOL_GPL vmlinux 0x419621ab mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x41c8dbb3 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41f19dea acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x41fb1854 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x421c9436 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x422b05ef genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x422c6255 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x422ccffe regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x423353a9 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x423d84fe blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x42407605 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42ab8419 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42cd5620 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x42e33a9a cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x42fc3cfe ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x430f4abd sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x4318feb7 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x43464af0 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x435de046 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43683ea4 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x437993dc scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x4386fdb0 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x43944f30 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43cbe382 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x43cd5723 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43df101c blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440eb89f crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4413f18f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448ba624 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x449c5799 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x44a0175f elv_register +EXPORT_SYMBOL_GPL vmlinux 0x44b4a53b fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x44b85217 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bdb916 put_device +EXPORT_SYMBOL_GPL vmlinux 0x44c6f3c0 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x44c8891d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x44d91ba7 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x44fec9e2 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4513c6b5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4514214e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45627319 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458c507e gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x458f519d list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x45a8aac2 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4617ad98 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464b89ce efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x4656f6d6 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4658de9d i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x465f489d ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x467375a7 split_page +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x46807b70 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x46875a63 apic +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4693d113 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x46966f44 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x46b1e269 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x46d81e46 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x46d9bdb6 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x46e61781 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x46f4e5b8 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x47052b2b __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x475e6782 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477a43d4 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x47801a24 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x47874ac2 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x4787eedb usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47971cc0 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47adf444 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x47cf5aa7 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e69c05 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x47f0ebbd crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x47fb6d9d cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x482fa590 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x48342339 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x486049b1 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x4862bd8c cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x48739055 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4882a82b xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x48bdaa66 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x48c6790c nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x48d706bc debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4923c35f pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x49446d22 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x496d0fcb ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49cebefc syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x49d733a6 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ead1cc xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x49f5504d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49f7506c tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x4a120448 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x4a259d78 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4a275dea udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4a3bb2b2 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a3efd51 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4becfc thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a5bbe70 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4a725410 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4a74558e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4a87ac7f ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4a88d4f5 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4a8a5b3e ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x4a94eb8b devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x4a9c5fe5 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4a9fdb57 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abcdf4e iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x4aea22ac platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x4af6370d fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b1afb80 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4b376918 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x4b768221 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4b7d2f0e arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b89dc16 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x4ba1a4e8 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x4ba27c1e sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x4bc0fb4d bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x4be2b288 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x4be770af tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4c005731 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c082629 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x4c0c274d ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x4c1ad22c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x4c27428d regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c35c132 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4c5b2ef9 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c63e7ed rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c793511 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x4c8a2b15 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x4c8ffea3 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4c93cf34 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4ca56685 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x4cadb515 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x4caf99a3 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x4cb3b00e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x4cd492f7 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x4cf15aeb crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d03a50a spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4d12899c wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x4d514517 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d6c4dbe param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x4d7ff268 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x4da6be39 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de7fe81 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x4dfe3cef shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x4e08cfe6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2a7355 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e771274 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x4e94de59 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ea701b8 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x4ec637f8 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x4edca0e3 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efaa4a2 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f01ab7e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4f0331a4 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4f06b183 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x4f243bf2 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f3ac0a7 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x4f4bf92c net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4f4cebe5 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f744a69 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x4fd0579c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe06d2d nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe605cd dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x4fea12ce regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x4feed136 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x4ffc7228 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x500ecd12 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502c0f18 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x5032b6a2 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508eab95 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b4f8a7 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x50b66dee regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e815e7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50faf61e tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x5107d772 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x51127895 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x51499629 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5154113b ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x51719489 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51799ac7 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c1f49 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x518e1ffc usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x51966b51 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x51d00a64 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x51ea7c5b irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x51ee5741 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x51f8a36e crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x51f9c79b clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x520379c2 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x5209c1f6 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52323a51 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x524c9071 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x527261c4 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527330ed blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x527675d3 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x52924f20 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a80764 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x52c95bf8 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52e5b672 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x52ecd85c usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x52ef1933 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x53104c42 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x532a39b9 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x532a9317 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5332c4bf pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5334467b devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x5353579e add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5386cf4d reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5392ae9f xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53dd17c9 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x53ee222a skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x53ef76ae devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x53efc216 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x53f6e20b regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x53fe369c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x54171e7c ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54213895 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x5434342a crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x54479364 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x544bd761 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x544cd50d get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54696b7d ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x546ffd9d pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x548ea09a acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c25465 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54ecaede lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x54edb2ec ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550f201d anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x553a3e0e rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x5540a23f tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554fa171 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55a510f6 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x55bf343c ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f64c2e blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5602824a percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x560904ab iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5633592b component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564a8dfd skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565624f5 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56ad3aec pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x56b4021a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x5718f0ec ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x5721bbfb pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57287c72 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x572a5f5a phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x574cd27c usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x574f3d44 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x575881b5 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x577b5a96 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57921fef rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x57978a59 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x579c9c0c gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a164de ping_err +EXPORT_SYMBOL_GPL vmlinux 0x57a18a81 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57e4cad3 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x57ea3a5c debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x57f40b13 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x584f01df blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x584f78af gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5872175c __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x588d2b7f nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x589c7924 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b51789 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x58cbf146 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x58dd4924 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5902652f usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x591053d8 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x59107aec xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x591f7500 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5955fc99 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59a16294 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x59a3d54e pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x59bcb7d7 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ed4914 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5a05e07d perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x5a0cf95a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2cf86c pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5a37cb0f regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a65c37b devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5a67f857 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5a699c6a fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a866b55 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x5ac71c00 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x5ace8100 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x5aeaea23 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b150ae7 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x5b1899f8 free_iova +EXPORT_SYMBOL_GPL vmlinux 0x5b38a297 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5b5391d8 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x5b577b3f rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x5b60165a cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x5b677d9d usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x5b67a781 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x5b69e5e0 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x5b7653f0 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5b7c0ac3 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5b87cea7 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdd426c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5be9ced6 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5bed36ed acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x5bf72d3d platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x5c229728 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c6cc4c0 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x5c7c217b filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5c852038 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x5caabc25 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbab7c9 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cd1f15d register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2f2e59 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5d331350 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d62efbe dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x5d862dec ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x5d9425cb __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5d9e04ca virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da83177 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x5daeac95 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc5e0ee bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5dd1a83c ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5dea34d6 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x5df66ed7 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e0c7728 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x5e251021 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e2f3588 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x5e4374ec gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x5e4cf0ec mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e636401 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e76a7d9 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5ed211f1 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x5ee7d47a uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x5efd9129 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x5f2b70a9 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5f2c943f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f57f8e1 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5f6a1738 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x5f87f3b1 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5fb4f2fb bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5fc1c3ed device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x6007815a xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x60459142 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6058f365 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x608210ab ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b7bdad rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60d25386 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60fe2622 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6103f28b fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x610d5ed1 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x61b0f0c9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61ecdf03 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x62249c90 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x622a8c19 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x622c628c spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622f06a7 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x622f9a2a fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x62444f6d usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x624ea372 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x62670bca ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x627fdff3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x628c3832 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6296d162 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62a3739a pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x62cbf379 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x62cfc696 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x62d2bc88 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x62e50252 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x62e647c4 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6359033b regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x635a95c4 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x638eeb5d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x6392449b mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63b8a0e1 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x63bf1a8d rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x640842d2 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x642d59c1 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x6432d116 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x645a4dd3 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x647234db blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x649f228a fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x64a70cfc io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64d4314c cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x64ddcabe driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x64e24a5e memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x64f6fcc2 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x651843b9 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x65190ac8 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x65305843 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x653ef25b xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x6540db7c sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x65690cde __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65a365a9 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65bfc6d6 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d886ff sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x65dc9135 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x65dfda4d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x6602523b inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6627c5af gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x662d3d24 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664304c8 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6652c468 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x665ecab0 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0x666d24da rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a2e3b9 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x66b7a9cf component_add +EXPORT_SYMBOL_GPL vmlinux 0x66bceaf5 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x66c694ee transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66fad698 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x67130e15 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x67296fde xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x6729a3ee fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x672ee487 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673e5a53 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x67498011 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6759648c nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x678ed718 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a12d54 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x67a1eef1 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x67ad30b1 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x67f634a2 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x6818f44e pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x68281368 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x682e6bb0 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x6833e8fa debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6834ac43 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x6841a759 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x684a4733 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x684e62e5 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x68559930 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x686a55a7 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x686ed0cd balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x687fb8bb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6894132f __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a7af02 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x68b46417 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x68bc7dff rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x68bf8b81 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x68da0910 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x68f2d8c8 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x68f830ac virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x6900eaad regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x6904a6f2 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x690876f4 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x69149eeb ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x69231ae2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6943e7e1 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6977c3ae usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698dd1cc usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x69955649 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x69a19c76 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x69e72d35 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6a069c42 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x6a16f7b3 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a341d04 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x6a47a23e ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6a4b261c regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6abf6917 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ace5c6e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x6b096241 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b14cf6b phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bb067de iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x6bc6f52f nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6bce859f led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x6bd7b699 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x6bda9a41 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6be393cf transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bf8b0c9 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1626fd ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x6c1a0df3 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c3864be devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c6538df init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c6f2035 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c9e14f4 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6caebdcd rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdcd8e3 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x6cfd11d4 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x6d09cefd balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d373090 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6d522150 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x6d6bb6f0 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x6d77015f pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x6d8c78c3 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6d8d6251 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x6da741f1 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6daacc36 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x6dac0acb hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6dcbf9cb blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x6dff10d6 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e3db336 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x6e445ce3 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x6e4da762 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e5bc415 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8c6824 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x6eb08a59 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x6eb4f775 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6eceb304 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x6ed7a201 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x6efc3f24 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x6efd4a80 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x6f185e8c rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3e28e2 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f644f2b devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6f77dfdf pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6fd73aed dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe7bab3 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x6fe884e9 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7000a4a3 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x70231e20 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x703c71fa mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x703cf039 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x7041f01d regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x705ae303 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x705fabc6 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x707d7f2d xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70833e47 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x708e62ad agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x709dfd8e dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71418e0a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719b9f92 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71c97ad2 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e06140 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x71ea711e rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x721e465e xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x722dbfa0 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x7240f2ef blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x72450d7c devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72553ea7 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728464b6 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x72991d35 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x72aa34ed ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x72b9231a ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x72c0bc9b rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72ffaa76 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x73008009 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7316f5d4 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7324745f pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x73414841 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x734b6a3e ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x734f0276 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7351cf88 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x735617b0 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x73894e5c devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a813c2 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x73ae0e55 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73bfefc4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f47369 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743eb008 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x7443ca1d shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7468b74e __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x748a6909 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x748e2b34 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x749d29ff fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c271d6 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x74d007c2 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x74dd860c power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74f097e0 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x74f2d3b7 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752a07d3 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x752c3386 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x753adca2 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x754dda3b gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x75587ecb pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x755a0277 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x7563fd16 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c5520b nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x75ca6726 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x75ca8460 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x75da6214 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x75de27d5 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x75eb802e xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x75f54391 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x75f9ec49 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x7601d1af ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x761259d2 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x7655cb24 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7687c533 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x76a961a2 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x76b72c60 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x76d24c20 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x7705cec2 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77133436 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x7726d395 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772e600e wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77590e16 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776fb803 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7774a7d4 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x778b675a pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77a3acbd irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x77b40594 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x77c8fd3a dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x77fb792e set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x780c8e88 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x78151326 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x781538a0 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782daa0f pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x785cf1c3 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7887b979 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x788f1ee7 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x789f475a unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b8aa51 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x78c2eb23 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x791af94c regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7953f612 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x79668583 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x796bcb2d blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79b68d5f wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x79c98099 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x79dc2b5b devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ef7447 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x79f7ef7b register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7a07b590 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a1edc6f led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3b0759 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7a5e45ed class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a948022 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7a9888e1 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7abeb874 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7af01716 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b340ef4 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x7b343b6f usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7b390a99 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7ba3f21c ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7bae1ada ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x7bc86899 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x7bcaf72f fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x7bf6fe01 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7bf7055d __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x7bfc6278 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c1aa10e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7c59e309 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x7c6b2468 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7c72a4b0 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x7c7e071e ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9d4b10 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x7cb784c2 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x7cd2d8af pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cddf596 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceca4d7 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7cf196b4 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d097f10 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7d487a86 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d809595 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7d80c855 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7d8eda4a power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7d974366 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7d9e9bc7 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7decd81a debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7df2e39b platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7e10961b serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x7e110797 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x7e31ef43 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7e370a44 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x7e53663d phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6fafbe ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x7e91ab55 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7eac5923 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ecbd966 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x7f24eebb kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f7d2ed2 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7f8bd782 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7f8e0e22 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7f8f1c89 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x7fa161d6 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x7fb23f1d wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fd7d0f4 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x8007d88e pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x800ed055 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x80248e7e sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x802ec1c3 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x80529f21 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x80612680 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806ccce3 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x806d5c22 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809529fd alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0x80a8462d key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80da2ae1 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x80e0e7c5 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x80eff66c __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114d31d device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x811d8d08 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812f31c1 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x81347be9 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x814819e7 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81540cf1 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x818c2366 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x819ca7c4 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x81ba2bfa pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x81c727e8 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x81e749a9 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x81f38d0e usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x81fe89fa rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x820c5086 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x824f8268 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x826119d8 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x827a14f6 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x82854951 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8297cc33 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x829e4c68 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x82b80b84 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x82cf4fe8 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82df5b3c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x82e22bfa device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x82e75acf bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x82eb2242 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x8306b8ce scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x8315a34a irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x831da876 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x8361cec0 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x83631df5 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83ac3b8f scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x83b1983f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x83def4cd ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x83e2cc7b device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x83e3bda0 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8421717d acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x842e38e5 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84513a9f tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x845ee38b irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x84620dfc ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x84664172 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x846eaee6 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x847fe5f1 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84bca344 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x84c78950 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x84df7ab6 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x84e839a9 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x84ef1246 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852e550b ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x8533311b crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8535cb92 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x85483bfd aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8563ad5d irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8574f81f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x858a5b86 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x85a65892 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85d8ba73 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86329f9b skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x86344ec9 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x8634a6b5 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869e736f ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86c20d23 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x86d73674 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86fbc8a5 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x872b1c90 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x87369e95 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x873c07a4 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x873db938 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87466a88 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x874ec789 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x87612afe dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x876e3088 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x8775f448 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x87930084 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x87c09e73 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x87c49f53 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x88263e80 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883f328d fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x88520657 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x886c66b9 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x887061ad ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x889124b3 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x889feeb2 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x88a57aca crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x88a9d0b2 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b42708 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88ca5de1 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x88cd42a1 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x890b8681 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x8916b66c aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x897b10de sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x897b2e4b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x89857348 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x89885c58 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x898bb3b1 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8995b0c3 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x89976aaf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x89b8d28b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89def717 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x8a35381e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5b5667 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a61bfdd skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a975412 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x8a9e21be ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8aa993a0 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adcec5f usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2143f4 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8b270cb7 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x8b407757 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8b4166eb tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b8d2b05 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8b9f4267 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8bc39635 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x8bc41382 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c20689a tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x8c2c348c pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cd5bc4b devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cfff8fe regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x8d12d5d8 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d386b67 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x8d3cacb4 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x8d7b7ab1 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8d886499 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x8d8dabb0 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8da861d6 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8db8bab0 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8df5de28 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e374ccc pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x8e410a9b __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8e52a644 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x8e8b15a9 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x8e8f5643 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eb2b994 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x8ece8492 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x8ee83323 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x8eeba76d device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x8efd15dc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8efee280 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x8f02a040 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f404f41 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6d6288 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x8f9f0f6b usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x8fa3bb16 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8fae152b regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x8fb58f22 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x8fb66e28 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x8fbe8a2b usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x8fc8a5b4 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x8fd37f4c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x8ff8e086 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8ffd23c3 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9022d5bc memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906e20af hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x9076cf66 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x907cc09c clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x909435e2 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x9103093e shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x9104f4de led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x910a2a36 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x91289e6e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x914bbdc2 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x915f0394 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x917724de xen_remap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919a70c3 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x919bfd38 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x91aaf3fb fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d64aab usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9239394a dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925c8960 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x926c973f cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x927757de fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x927c4731 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x92811111 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x92913628 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x929de038 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x92a06d4f ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x92a24c05 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c1fe15 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x92c5cfa4 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e2df44 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fb3429 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9313cfcf xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x933b0da6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x935fa776 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x9366a77f rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x936ae399 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x93a9b0b1 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x93bf2fcd __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x93c1c0f7 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9408f786 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942472ec __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x94272e36 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x9432b036 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94507e7b iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x9456db3a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x947f3a5a platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x9493405c __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x949bc8d6 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b3654b usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x94b6ac61 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x94baaff3 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94c53639 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fce747 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x95067e27 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x95136622 pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0x95166f85 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952abfc0 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95487cae ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956ccdb2 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x95712ffd scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e19d3 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x95b721a3 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c0486c nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x95c875e5 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x95d26b28 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x961b3d5e dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9630516d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x96313f74 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x96363be2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x967b2d03 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x96d3f4d7 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x96d64a57 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x96daa090 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x971f943b is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x972754c3 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x9744738e crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x976443f3 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x9769623a remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x978ddc2b phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x979a1e61 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x979ad8d4 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x979e47f9 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x97d3e56d iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97eda938 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x9805dc7a xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9843ecb1 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985a35e2 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987a7a94 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x988707da fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x989cfd1d crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98b85d33 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x98d26a3f tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x98eb68e6 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x991ba497 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x991e2aa2 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9937881f intel_svm_bind_mm +EXPORT_SYMBOL_GPL vmlinux 0x995bb36d tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99759c04 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x999a4682 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99bb10c7 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x99ce0592 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x99d42396 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x99d9fcec cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x99dfda23 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x99e14c32 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x99e3fd9f blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x99fa3de6 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x99fa4c43 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x99fb463a xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x9a10da89 __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a15ebe6 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x9a16da17 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a2dea2e set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x9a84ac6e spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a98aaa9 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9aac158e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9ab68166 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b05cf13 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x9b226734 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x9b274213 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x9b70f24c ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7edfb3 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x9b91217c platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9b92fa0c x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x9b94eb91 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9b9cabd4 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba6003f pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x9bc03d7e register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bdcbe6d __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9be233d5 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c09dc5c nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c1a079b pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x9c287e16 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c4dd879 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9ca9976f usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc60063 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9d011b43 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d029807 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d7f5dce rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d83ca8c gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9d88e8d6 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db27cd4 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9db49566 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x9dd98535 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x9dd9e46c eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x9ddca8c8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e08c602 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x9e1e90e5 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9e3177d9 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x9e421b96 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x9e42c885 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e614f91 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9e7121a0 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9e91ec1d __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9e99def6 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ea5526f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9ebfc45d ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee8c739 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x9eede9f4 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x9ef0e8cf regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9f11e46e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9f16dd53 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x9f1d4bba powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f69089c crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9f6adb76 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9f6b4257 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x9f85fde9 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x9f9883f9 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9f98a0df ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x9fb9ba64 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x9fcb71b6 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff07477 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xa01c68dc pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa0406668 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xa0744b03 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa07a5960 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa08861e4 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa0f047e2 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa10ef648 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa11820a6 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa12cf49f ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xa1324c3e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa18f7911 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a3be6f uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa1a8e4c5 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xa1cfc43c efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xa1f082bd tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1f16c54 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xa1f3aa58 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa2195650 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xa21fe15a pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa22135de tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xa22ffef8 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xa23492f4 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xa25b178c dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27cac22 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xa2b6f7da pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d01f3d pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa2ee9d32 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xa319c18b da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xa3209a2a usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xa3471326 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa36b3733 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xa370ed7b rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3779466 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa37cbab4 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa393d5b5 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b70cec usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c2337e tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa3ddcffb rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa3e181c2 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40b9401 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa40b9aaf trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa44b0a1d devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452ecbe gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4568635 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xa4574870 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa46564aa inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa47e5ddd pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa486e410 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xa489bc99 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa4978f2d spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xa4ad2ada tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa4b058d7 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa4c0d1a2 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xa4d7c336 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xa4e1b0d6 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa4f43353 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa4fb3e09 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa5256210 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xa540fc0b devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa569b439 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xa57d4b73 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa599b10f trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xa5c8088d scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xa5db3a87 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa5e40f58 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60082be ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa624a974 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62db5c8 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xa635f79a crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa66da2d4 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xa67c88f3 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xa6ac10c8 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b63122 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fa6226 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa719d9ac spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa71de57d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa72b03b3 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xa743b5cf scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa76b0d0d sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa77840c1 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa77fa2a2 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xa7862e1e inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xa7894b84 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xa7af7202 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa7b16af6 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xa7bb3d76 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa7beb118 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7fd2914 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa8108174 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xa81f6f72 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xa83052bb serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85f9ced usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xa863183a efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xa8a88ba0 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa8aa16e4 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xa8ae8392 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8cfca25 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xa8de2d3a crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xa90e9f69 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9143342 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xa92f8609 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa95016bb __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xa9784155 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xa979a04e gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa9a4088e xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xa9aa5238 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa9b07c93 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xa9b887b8 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xa9de7d08 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e22e5f gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xa9ee0ee0 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xa9fc7480 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xaa15f525 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0xaa192f56 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa287e10 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2e5191 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaa53dbea __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xaa6542f9 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xaa66dc16 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xaa6ef292 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xaa8e234c iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xaa90bcb4 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaad401fe regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xaad4a356 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xaafcbd98 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xaafe8ad1 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab056efb screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xab0f6459 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab316ca9 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6c95f9 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xab7a46ea __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xab81ea6b rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc959ab aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xabcfa6cf dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xabd8ca68 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabeb3102 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xabfc4640 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xac0daa1e bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xac11865d xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xac26348d pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xac2f9ee0 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xac3e8959 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xac439e3d xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xac65573e relay_close +EXPORT_SYMBOL_GPL vmlinux 0xac6785f0 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xac8458e7 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac9321ee isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xac9eb7bb regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xaca9265a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xacacb180 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb0ac59 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xacb8dc9b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xacdfa15e serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad05c733 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xad2f4f8b napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xad4b996e posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xad63c9c2 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xad6adf6b __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xad7eac4b __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xad87d895 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad986193 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xadac8184 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc86bd2 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xaddde4d2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xade5f5ac blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf93149 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xae005885 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xae32dddd crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xae490cf3 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xae6783b5 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae83e8e1 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xae92609f crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xae94d0f9 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xaea644f7 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaf03ba61 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xaf36fe14 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xaf3be6c5 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf6b8560 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xb00abc8a nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb040aa93 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb05daf44 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb064bb91 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xb070ad32 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0985cdd srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0d60c30 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xb0e0f51c wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb0ff3d3e pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xb1047347 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb125527a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb1277b40 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xb139f80f dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb13cfdc4 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb151f956 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1663d5b usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb16ccf1d xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb190eb5d bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1a7bbf9 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c60692 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e631f8 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22b7a24 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb23a9bd8 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xb24586ba __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27ca201 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb2beaa63 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ef3bcb pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xb2fabee5 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xb306b4a8 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb31f196f pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3272363 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xb328df51 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb33ad30f subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb36fc123 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xb3776b50 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xb37d70ad regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xb3ac35fc mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb3c07c69 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xb3fea1e2 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xb3ff3f5d crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb40d8d8f __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb420d79b ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb48130aa power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xb4ab5ad5 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4b949d8 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f260ca spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xb4f80814 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xb517224d devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5240cb4 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb52b0286 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54d40db cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb568db66 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb586435b sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58fa343 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb5925824 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xb5a03a55 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a4aaaa pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb5b91065 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xb5cac2d5 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb5d4cc2c ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xb5d71017 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xb5dc702c devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb5e4309f iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fc62e8 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb622770f debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb65d6bbe cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb66a0dcd clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0xb68ebb7c __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xb6a130b9 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c35e5f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb6d864f1 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xb6d899f0 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb6daeed2 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f31a70 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb70b1aca pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb711d130 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb76cb997 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb77883a7 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xb7be27e1 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb7c31c0b iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xb7cdf6c2 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f499e2 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb848a0d9 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xb84e7662 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb850a50e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xb874e9e0 component_del +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89dcfc6 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xb89f7836 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8bd4691 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e413a5 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xb8f0d750 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8fd71ed pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb90588b4 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb95f741b pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xb9680468 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb970730d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b65326 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ca79e1 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e1158c devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xba0b66d2 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xba29f866 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3a0ea2 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xba3b04e5 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xba429418 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xba66ae84 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xba74f463 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xba8481ee devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8c70f9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xba95b2cf cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xba9bb3f4 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xbaaa8aa3 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xbab580bf bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaf3e8cd debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb15be31 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xbb2a55ef max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xbb3740c8 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xbb3a1057 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xbb42a5f4 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb7d910f tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xbb87f598 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xbb8cd68c gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbbb6cb3a rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xbbb7f2d5 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbd1b2d4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xbbd32dc5 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbebd967 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc14c21a wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbc213116 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbc4217d4 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xbc44e7e0 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xbc4cb6be mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xbc59f462 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xbc67a72e led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc94bff7 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcae30b0 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xbcb5c3c3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccd8f68 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd5fef6 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbcd6517c pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce295de blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbce43d41 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xbce8aee6 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xbd1c5674 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbd34e005 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd3a9156 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd650c25 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xbd812b5d thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbd814e4a proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8d5936 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xbd996498 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdfb69a3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe5213f1 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xbe637016 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7c8baa sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb73303 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xbeb76026 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbee10b84 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee9c2d7 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0bc976 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xbf1865d8 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf6bfc51 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xbf713280 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xbf72f650 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd12dce pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff8d024 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc02404f1 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc02dc984 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc03b5d0c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a0ab66 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc0a498af device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c0ca59 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0c8b5ac spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xc0cfc1e9 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0deffff da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f38958 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10650ed power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc12b7724 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc12cdca1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc1421655 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc143806e get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1758539 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc1821c95 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xc185056f disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18cad96 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc1b01448 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xc1dd3787 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc1e54ae0 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc1eba34c do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22c8c2d perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc23003f4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc234c04b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc2567ec9 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xc25ae674 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc25bed3b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26b8898 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2a58bf9 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xc2a9d6bf to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xc2b8ae6c find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc2d2b300 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xc2d378d8 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xc2d51e53 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2e98744 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xc2ff00c6 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xc3179496 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc3296461 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc348851d devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3842437 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xc397aef7 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc3be3fb2 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xc3c2d484 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc3c6165c serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc3e77d4b posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xc4098ae4 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xc41fe1a4 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc433bc7d invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xc4446475 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45847b6 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xc45bc141 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4c6ea23 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d3cbaf scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xc4de0b88 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc50641a3 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc50a3618 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc520e644 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xc52e1369 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xc535f983 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc53bcd51 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5461e3a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xc55be838 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xc55e65ae pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5d09869 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5d8f581 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc5d9fd3f netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xc5e9c67b tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6317e0d xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc642d9de dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc64c9aa2 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xc65a640c usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67d957a ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xc68221aa vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xc6894a80 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a2246d device_add +EXPORT_SYMBOL_GPL vmlinux 0xc6a26d4b attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6c9b930 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xc6cce3e2 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6e4c4cf pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc6ec6b56 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xc6f68a1a vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc74055ca usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc7758e86 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc777e24f intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc77a65c8 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xc783e40a smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cb11b5 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f0fc6f nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc803be2a usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc8129439 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc81b765d put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xc830b563 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xc83e5d06 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc8547883 xen_remap_domain_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc89ed12f devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc8a6040c powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8af9156 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8fb335b ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc920c1ce skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc9404724 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc9408343 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc97b3049 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc9c25b39 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ce566b put_pid +EXPORT_SYMBOL_GPL vmlinux 0xc9d695f9 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xc9d84cb6 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc9e5141e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f2d99b gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xca04170c PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xca06f41f __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xca1b1e52 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xca1c0b1b rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xca3d7439 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xca4f1285 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xca4f577c fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca83891e pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xcab616f9 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabea7b7 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xcad530c5 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xcadaf70a devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xcae33f94 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcae54240 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcaeb8d6c rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xcafa59aa cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xcb01f12f pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1f826d __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb69b8dc debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb88555d class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xcb903a03 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xcbbee1a5 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbdce6b1 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbec1614 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfee40a gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xcc25794b ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xcc3969e9 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc608353 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xcc76fed3 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xcc826958 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9cd456 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcc9eeef0 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xcccc578f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd7d625 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd09af1c ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd1ef019 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xcd5a1c72 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd8cc945 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xcd8fbe2a scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd929b24 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcda47aaf sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xcdad8af8 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xcdb00fe3 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd6056c skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xcddd8cd7 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xcddf00d8 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce1f3ec1 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xce4159ac ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xce5f1455 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8a491a nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xceae03d3 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xceba7770 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcecb3470 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf07b52c ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xcf40f2a3 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf618c30 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xcf867ad2 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf8ddb30 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xcfaf7eb8 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd0d2b9 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfd514ec hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcff042a5 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xd01b9947 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xd02379c2 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd02ce5ef dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd042236d smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd051bedd ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0685866 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd06cb369 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd07d242c clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xd09fbbd5 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d61882 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xd0f2990a da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd1179f13 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd13ddb75 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd144916c spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xd145dce8 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1654878 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1a16972 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd1b37cb0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1bd14cc pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd1d66f8d cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd1d89ce2 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xd1df0b39 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f9aa52 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20fb953 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21c32c2 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xd21dc2ab crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xd2503ea8 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0xd25127e3 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd26bb797 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd29ad8de clk_register +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b3512c perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xd2b89e61 acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d93ef3 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e4403d __module_address +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd33c3e92 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xd34db320 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd34dcecc led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd38059a0 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3b67ae3 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd3c632dc phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xd3d2dca4 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4267f61 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xd43963e1 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4854afa cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd49b9d2e serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd4aaeccf acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xd4b30939 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d4026e x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd4daf310 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xd4dda5b8 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xd4ee0de9 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4f36ae2 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xd4fca953 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4fe1dce pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xd50ac9d6 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xd51ac9f9 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd545b19e xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xd5484e9f devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xd5527f37 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55b889c __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd5626fa7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd56fdfcb ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd573af7d lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5855287 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xd5989f83 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xd5ac2e9f proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xd5b85c98 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c9576e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd5d746e0 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xd5dfbdf0 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60e062b dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xd60e2e82 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd60f5184 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xd614c367 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd623a66a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xd6285e54 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd62bda6a get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd654e059 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd6573b50 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd65f991c mmput +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd694691e intel_svm_unbind_mm +EXPORT_SYMBOL_GPL vmlinux 0xd69bde5d acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xd6b91d99 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd6dfdc5e page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xd6e3d5cf fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xd6e4247a get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6eec642 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70b99f7 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd74dc624 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xd74f5758 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xd760b79b apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd779540f devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd792bbe8 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xd797283d device_reset +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e56b3b platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd802c3ab arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd83f57cc crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xd8456667 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd84b1896 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd84ec74d usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd85f8ff1 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd877b252 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8956e64 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xd89de6fe tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd8a8b6bd sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xd8ac8014 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd8b0d14a usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xd8c76c4b pv_info +EXPORT_SYMBOL_GPL vmlinux 0xd8da0a10 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xd8e01b49 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xd8e21df0 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xd8fb6d4d __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd9043bc5 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91a1252 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xd91b3197 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd91ea21c pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd9503809 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd96a2e53 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd99cd635 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda07cc70 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xda1d40b0 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0xda3b3aa6 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xda4c03b7 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xda4ceed8 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xda70fb8e regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xda715f1a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xda84162a pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda853513 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xda87145b alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xda90e103 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdae45d34 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb0a77b8 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xdb1be9aa tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xdb2a7b07 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xdb2f502e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xdb3b18e4 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xdb416cbb event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb51e0f8 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xdb5cbd92 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb887b55 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbda3000 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xdbddb0fd xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xdbde21b1 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc09f6f4 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xdc106884 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc20f1dd usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc72fc03 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9fb1e4 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdcc31794 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xdce0916e device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xdcf1c77b cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xdcff85dd devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdd03b7bd shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xdd0caa33 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdd0e7feb component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xdd14b5a4 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd5df0a9 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xdd656880 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xdd72ea41 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xdd765ec4 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xdd81d627 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xdd9b19cd serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xddbc2c48 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde9f241 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xddf30641 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xddfed2e6 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xde04e000 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xde06030a cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xde2b62be __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xde3a4c68 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xde41bced regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde650ad1 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde7c9bfd __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xde807b2a ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xde81b650 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9463a6 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xde9f7cee shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xdea142c4 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xdeb11d9b tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdeb2fc6d usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdec63a1d regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xdec71938 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf11e0f8 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf3bc5f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xdf46bd27 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf62dc2b efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdf866a4c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xdfaf4c7c mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xdfb69a74 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xdfbdaad9 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xdfbfbb05 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xdfde8dd4 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xdff5045b pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdffd4512 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02c60cb md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xe02e80aa arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe04d59b6 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xe0513b5a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe059e9b5 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0d70792 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe0fa28bd fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xe1083ae3 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe114be48 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe139cce1 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe14feff3 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xe163ecfa __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe16c614c policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xe16cb7b2 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xe16f6e91 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17b3f1a rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe1a5c418 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1d5be7a thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe1d6fe2b nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe2168e4a blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xe2548c58 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xe258add8 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xe272a69a trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xe276abb8 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xe27d770c subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe27ec27f rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29349dc copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe299cc00 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe29a8a58 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe2bbc99a dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31eadde trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xe33080e9 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe349ab86 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xe350230d hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xe3513d6f devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xe35205ca skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xe35b9d98 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xe3781628 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe399a1c0 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe419a2d3 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xe42bfb79 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4344699 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe455e159 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe45a5fb6 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xe4637c3f cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46d3b01 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xe471ce98 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xe48a47fb usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49ef64a virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe4a0d7af __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4c7b868 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4f5af35 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe4f88a9e debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe51defc1 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xe535502c ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xe545a811 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0xe56d1444 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xe576dc9e power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe578afb7 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58ccd61 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5923cf6 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xe5afb334 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe5b3aabc sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5c664ad __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xe5d42533 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe5ed49c9 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f0e765 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe60397a8 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xe60ace6c ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xe61d29e0 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xe6382e3c tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xe63e2fd0 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xe64136cd xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651175e regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6532b7f find_module +EXPORT_SYMBOL_GPL vmlinux 0xe65ff0e6 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xe6647c0b xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xe66bccce crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xe670a77d key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xe68d1249 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xe697fbf2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6be5044 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cdd709 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe70af0ac preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe73483d7 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7366329 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe74c5d17 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7a540c9 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe7a7f937 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7ce81b3 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe7eb95cd elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe805ff8b blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xe811a449 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe8132d67 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83794f2 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe83e033c rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86c23aa kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xe877c80d pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xe88a8a7d kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe89543cc cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe89abefb ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe89b17f1 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xe89d9f39 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xe89f9abd unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xe8bd3288 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe8c0828d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xe92b0156 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9484085 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xe9589237 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe96853d8 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xe9711005 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe97451fd swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe9810706 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xe9b56d2e dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xe9c44c59 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xe9c46c17 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9f9bb4a extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea125089 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xea2fab88 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xea2ffb65 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4ce6c8 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xea4f5b41 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xea73c388 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xea8626e3 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xea94aa5a ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xea99b795 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xeaa9930b inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xeab2bf85 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xeacba45f pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeafdfaf7 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xeb0589dc __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xeb16599e blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xeb19a63b crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2eba91 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0xeb2ee068 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb48e3ea acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xeb7f9559 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebaf0009 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebb486c8 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xebd27cbb tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xebd34fea inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec242b71 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec88b169 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeca19b11 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xecb34cb4 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xecc5c168 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xecce530a scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xecefb3fa dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xecfc7d34 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xecfe2dcf fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed06c5cb pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xed319de1 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xed6a8082 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xed6d90f9 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xed72a97f ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xed871a27 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xed9ce7ef inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xeda7a122 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xeda81de4 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc2f67b shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xedc5ff1e vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xedf0eedb sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xee07ee8c unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xee21b579 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xee43aade agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6ce4d5 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xee772abe fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xee906da7 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xee968f89 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xeeac36ce call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xeeb12b34 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xeeb5c6cc sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xeef0ccb9 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xeef414c0 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xeef82272 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xef12d511 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef369b4d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef4758d5 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef9c2111 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefba70af da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xeff60277 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xeff7595f __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf00b1bbb da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xf013c201 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf01b0b6c bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xf0304486 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf030c628 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf0313a9e nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf05cd5f0 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf075cc90 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf079c3ae seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xf0841497 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xf0876a65 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf092bafb pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0a92115 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf0ac9a48 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf0c01bc7 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xf0d235da crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xf0d79a9c devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf0e1ecc6 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f61327 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf0fb87b9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf0fc7cab dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xf0ffd289 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xf10a5010 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf1104740 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xf12e0803 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1bdb234 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xf1c4376a unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf1c464b8 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf1cd08af splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xf1df93c4 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1e5d21f regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0xf1ed900b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf1f5ea4a sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf2092790 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xf20b6a32 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xf20e500c digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xf2196393 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22217d8 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xf223cbeb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xf2269b14 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xf232dcfe xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xf2461710 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf29c05bf crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2cf1f23 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30ce7af usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3520b24 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf37c4b1d kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf392aa96 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf393a4a7 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3fd81e9 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf4055105 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf414bf64 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xf4388c86 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xf43e395b phy_create +EXPORT_SYMBOL_GPL vmlinux 0xf484c7d4 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a9a09d net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xf4d29f67 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fed5f9 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xf5064299 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf519b558 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xf53c6a00 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf5451cec cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xf548c0cb phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55e11c9 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf56955cf irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5aa3535 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xf5c8b983 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xf5cf7ebd pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xf5da6e68 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xf5eaa301 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xf5feec8e ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xf60a9dfe __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf615386f percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6257c6b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xf693b0da bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xf69c9bff platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cc42c3 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf6e12287 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70cdfe0 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xf72038b6 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf738488b rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf73ea6d6 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf764e235 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xf799c5f2 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf7bd1a0a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xf7c0b30f ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf7c0e423 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7dd3c06 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf823f5c1 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xf8287197 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf82b7076 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf85004dd devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8891329 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf894ba00 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xf8bd27c9 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xf8c29529 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf8cac278 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf902b720 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xf9138837 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf928779e kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf954829c usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xf968e5de bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf9820eb2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xf98f1754 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a65ad7 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf9a75f2f get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xf9b99994 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xf9c57c2f regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d0a9f6 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f48468 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xf9fbaa2b find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa38faf9 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xfa39d6cd cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xfa3a5434 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfa4c2636 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xfa5b77c3 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xfa6aff51 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xfa8d905f exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfa8df627 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfa9ed276 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfacf869f __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xfad01b61 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xfae26a99 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xfaeda7ce ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xfaf133e8 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfafb88b5 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfb16c65d regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb5af77d ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb988c26 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcbfa47 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xfbcc55fd pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xfbd15ada tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xfbeef6ca hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfbf424d2 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfc02d003 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0ab1a1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc35e785 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xfc37bf9c tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc5b3e68 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfc7289a1 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc81c286 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xfc8dd8d3 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xfc9116f3 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca19927 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfcb5cc3d tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xfcc01168 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfcc1534e tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xfcd478ff device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfce9ad6c reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfcfb94bb tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xfd01bcb6 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xfd16a10e clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0xfd2479cd __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xfd2d8737 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xfd41f137 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd853897 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xfd915e47 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xfdb98fbc debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xfdfd6f55 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xfdfe91cb xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xfe0f6b34 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xfe335f8a da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xfe49f21b __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xfe5b0674 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xfe65a714 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfe6bea36 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe774fbe devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xfe88ed7e driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfe97d065 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea45324 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xfeb7aac3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xfeb9b698 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xfed03c55 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefaded5 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff06e2a5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xff1e7b89 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xff254728 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff49495b spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7d886a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xff89870d xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xff95bca3 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xffa491c2 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xffebec0a wm8350_set_bits --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/generic.modules @@ -0,0 +1,4737 @@ +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_dw +8250_exar_st16c554 +8250_fintek +8250_fourport +8250_hub6 +8250_mid +8255 +8255_pci +8390 +8390p +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act2000 +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-agp +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +aquantia +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +ascot2e +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtc +dtl1_cs +dtlk +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efficeon-agp +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-104-idio-16 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-eg20t +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810 +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_mid_battery +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel-mid_wdt +intel_oaktrail +intel_pch_thermal +intel_pmc_ipc +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel_scu_ipcutil +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan78xx +lanai +lance +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +logibm +longhaul +longrun +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lv5207lp +lvstest +lxfb +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +NCR53c406a +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvmem_core +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5535 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_isapnp +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc110pad +pc300too +pc87360 +pc8736x_gpio +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-broxton +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powernow-k6 +powernow-k7 +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +pti +ptp +ptp_pch +pulsedlight-lidar-lite-v2 +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qat_dh895xccvf +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-bcm2048 +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-mrst +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-i586 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +scc +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +ses +sfc +sfi-cpufreq +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmi8328 +snd-cmi8330 +snd-cmipci +snd-compress +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-interwave +snd-interwave-stb +snd-isight +snd-jazz16 +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-miro +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-sis7019 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-dmic +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-skl +snd-soc-skl-ipc +snd-soc-skl_rt286 +snd-soc-sn95031 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-sscape +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surfacepro3_button +svgalib +sworks-agp +sx8 +sx8654 +sx9500 +sym53c416 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t128 +t1isa +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc1100-wmi +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshiba-wmi +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tscan1 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +ultrastor +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wd719x +wdt +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/lowlatency +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/lowlatency @@ -0,0 +1,18713 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x1b907f1f kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x254e5667 scx200_gpio_base +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x35a3c008 scx200_gpio_configure +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x8cfa375c scx200_gpio_shadow +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x907665bd scx200_cb_base +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x2d7e229d mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x5b6b0a5f acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x7988a4fb suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xdcbd4cf1 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x597571eb bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xd38e4ec6 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x0b2a398f pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x0fa8b6ff pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5bb75b56 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x5ef210ac pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x630e03d6 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x88d96a55 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x902e3f57 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xa092dd98 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xaf9ea600 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc4ab4592 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd0b1b54e paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfd7a4ed4 pi_release +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x6f253356 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x18f079d9 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x81bbf511 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x83e50e0e ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x95c0c132 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x9eac0312 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x341ad669 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nsc_gpio 0x48d9cebf nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0xb350fed8 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2916e001 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8160885d st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8e26db94 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xe78d1928 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4be7afd7 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x9aa00de6 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb8a1af8c xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0317f8e0 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1b84b301 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4d7b33b9 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x714c6e89 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd39e18e8 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe6dea13b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x14d0186a edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x073a000d fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e09a55 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16f2ad06 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31c9b3b0 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c3bcc80 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x448704f4 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x675151b1 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7c655ee0 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x824fbed3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8923a163 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8c48d7f6 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94b52f44 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e7bd587 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0d1a2d2 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa5a46834 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8001098 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xac03b715 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0587e2a fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc63be1db fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc74e95a2 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc77d71b3 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0d37721 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd8a7b35b fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd5381da fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde339626 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec9e345f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x09cf0784 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x2127f129 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x4e40439d fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x5ee61fce fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x62ab0741 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x67cf7e70 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x7dea0f67 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x847c21be fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x87e18b35 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xd7736980 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xebe57dc9 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01108d8c drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x011b1da8 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x021b71f4 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02449000 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05978df2 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05d0f684 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06e112a8 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0758b7e8 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08c1f7ac drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08d711cb drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0914bf71 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x094a9992 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bc9977e drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd253bd drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c743be4 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d00bd8c drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e4da7eb drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e509dc7 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f9cee6a drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd0e998 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ffaf209 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x105e7bea drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11817048 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12004383 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x124b2838 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13116a30 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13196aba drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a7a18b drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x174fe65c drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x180ce817 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1882887b drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f6d32f drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x191bf541 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1974bbd3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19eae250 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af6f0dd drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bcb6a48 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c587ab4 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cb2eb77 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ed58351 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20377880 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x203d1b4d drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228f07ab drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24a6daff drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24c4ba3d drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x253a8cf9 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x270de8e6 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x292d19fb drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a1fd0f0 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2afed68f drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b1da303 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c914930 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cb50f98 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cb6071f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a4c63 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d3f9848 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e072332 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e52643c drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e5357c7 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33c946cd drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3406fa91 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3530b308 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x357451e6 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3584876f drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35cf32c9 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3646d9fe drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36dacb64 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x377177b7 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37aa679e drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x388aa20e drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x391bbc66 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39a4e9bb drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a59f21e drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b764a04 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c2be3d0 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c799ac7 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f85123c drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fc5f029 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x400bc835 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40dbf428 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42086c7c drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42d26911 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43cbf3b0 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x462a1a0e drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46459d10 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47a722b1 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47cb4e9b drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bbe4d37 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bdd7fdf drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cbcb222 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cd70f93 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cf6c3d2 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e65e732 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea0792a drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4efc0514 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f0b4c32 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f0d8502 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x506b9232 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51a7a3e7 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x533c743c drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5372bb93 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53d40d3f drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54673dd5 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e05c47 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x562b6e82 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56e8a62f drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58021150 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58061961 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x587bdde5 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x588677c7 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59bd42ad drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ecd57cb drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x615a5d60 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61a9e7c3 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e9642a drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63e73b37 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66977586 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x677d77f1 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68bb9bb5 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69ee40b0 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a06adf7 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cd01b35 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d1db087 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6db25a50 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ea19d33 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7067d761 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70cd5e53 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x712fb4e1 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71750d06 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x752ddbcc drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75657176 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x756c3275 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75cbf90b drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78c2b27c drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x795df488 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79a4b7f4 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79f0696c drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9d1e39 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bd86521 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c205eda drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2ad795 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cc8e05c drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e70f0a8 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ecffbab drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f55e706 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f95d86f drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8062e330 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8085adb2 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81251948 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x827a16d1 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829441dd drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e8b867 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840f0c95 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8460d9c0 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85082410 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87a4f51c drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87cb5ad9 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x884847a2 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88e7e130 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8aa7fe74 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b47a436 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b9d7bb3 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6ae70b drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c8d4938 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8df43f89 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e89390b drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eadf397 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fedba19 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90ae3bf3 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93d7a0cc drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94089e3c drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9468ef08 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x948a3650 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95176607 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x967fca1f drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9683202f drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9828ef88 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9898e95b drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c34d02f drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d7fbc3f drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f1229bb drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f771adf drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f8d1655 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fdc6f58 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa33e5f90 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa45c4be9 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ffe49f drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5332f4b drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6a6f3a5 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6b98281 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa884a2b3 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa89d5dd6 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa909d5ca drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa913dd5c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab27fae6 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac265147 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacca57a7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf545502 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb02cd33f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb06a2ad4 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1f36718 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2560af7 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34a3e3d drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb44f673e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5c3bf37 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb64806fb drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb669aee2 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb66b55c7 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a60b34 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6b0c120 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77d6099 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7f1dafb drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb86c3839 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba66b45f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbabd2220 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc312c58 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd334a9 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd1032c5 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd51c9ae drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbda68f6c drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe231786 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbea51027 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb4e19a drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09b1bdb drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc21fe8e1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc38f32bf drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc491c1a8 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc542de8f drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5fc594c drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8baf97b drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8fc1d5f drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a01211 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca1d9019 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca57a44d drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb64d7c6 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfd2b247 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1323b0c drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd14270c2 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd193f3d1 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd26e3251 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42eb18a drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4fd4160 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd66f78a6 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7a06734 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7a6210e drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9602c9c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda3492c4 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac74eb8 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbca004b drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc20659f drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdaf117 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde030b62 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdec19b0e drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0f1df7c drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe522d4ba drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5b69169 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6778553 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7d71c43 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9512c03 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d87226 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebc88e19 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec3db105 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec3fd439 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec5df535 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeb70c53 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf040927f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2acd517 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4e00226 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf586e0be drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf65fdcb2 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a7e6d5 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf81e44ba drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf34871 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc1eb320 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe623a8f drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe8cf47e drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8aa064 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0195d3f4 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a6eba92 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0afc7017 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dd93443 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x108ba712 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1470537b drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17c5fdb1 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ab7d333 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b824b98 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c788055 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2193da59 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2378a6e8 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x243787fa drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27f342da drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29ec7a88 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ae5e3b2 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cc3d521 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32066205 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x336d45e0 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34b838c4 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39235240 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8fc869 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c402893 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fda30fd drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4279bea3 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46f962a2 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4913cf09 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fe84005 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50aea41a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52476482 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x557a7e1b drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55a8d2c5 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x571a1ea7 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x571ada0d __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d35c93 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x599b3789 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c2421d7 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6105a433 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63510bf6 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6443379f drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x646d5307 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66000062 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x664be698 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bdcfbbe drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c921439 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6eb4a49b drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f9015f4 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70a521f8 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73b4ddbc drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x747c49e0 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76d128b9 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78c013c6 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f3493a0 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f608ec0 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x823efa41 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87d2c7fd drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8acebe9f drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91d31d4c drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9317d500 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95a12058 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9715e50f drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a74f133 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b9e4853 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c723a7e drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cdb0587 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dbbd152 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e6cb237 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0a3669f drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa37e41b1 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa44717a1 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa49ef8a4 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa58fcbd5 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa60dfb6c drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa25c316 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1e7a89f drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2f1a842 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5838a2a drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5bb4268 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5c2b6f8 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb901db12 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb92b5bc9 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9508e53 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb962bc46 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb4b3a7e drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc56b49a drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc750e17 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbec48665 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc16b025e drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc18e9c96 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1aba004 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc263ec46 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc342ef6d drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4c0adfe __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc52e6594 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5ed5106 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7387eff drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb335c16 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc7873f2 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc8a64ca drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xccd99d21 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcef00780 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf227ba6 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0d93e75 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd232c963 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd33de755 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd56d83e3 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7daf5d6 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8f8fc3a drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdae8a408 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf59be52 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1f16585 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2418cef drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4c31a97 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5652ba3 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe839f5a5 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf9010 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0a05a96 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1bf41cd drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf60e4949 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf779900b drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8a136e8 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8a63945 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf933f115 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd81f403 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01f20454 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bf4bb92 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1184280e ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1257aef5 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a6acdef ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ca6c090 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a839d14 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c5da7dc ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ee7d17c ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fceb81c ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x344d1e1a ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39843590 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4038820c ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42021951 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45291eb2 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46814b6c ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49b91d11 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bd1c207 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d893037 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f9c3cc9 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x557597dd ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x591db67d ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x628fedd1 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f17111f ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73279137 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x740d6625 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a96c087 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b2708d6 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7e5cf5a7 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81ea0342 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92b2325e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x956a395b ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96e770f3 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97f23971 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ad20a46 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0935829 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa285d46c ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae4ce820 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7ecd04b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbbba81f6 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc49a9f3 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcd94b5e ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbea6d86f ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2d78503 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8125abd ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc601a5d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcccea261 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd487e5b9 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd54cfdfb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1b74e2e ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf13fc8ce ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4b0f604 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5e4aeb4 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff8bc4c0 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffe9cc90 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x50fc3944 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x71a30c5f vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xa029a18a vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x7ed241c3 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x14912128 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x14e4b08b i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x95747af5 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x9b76a569 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd53c327e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xadf47cf6 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1aadb4cf mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x200499eb mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x24835d3b mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2f51451d mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41cb2afd mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4d599421 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x54532eba mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5676e73a mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6c586aff mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6d49fba5 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x819fcde6 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9af7d985 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5a9afdd mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5b31839 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe50974ee mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xeab3bded mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x887c24f9 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xcf4f2626 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x87aeda6d iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xee751dfa iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x421dfb69 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x5e89370e devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xd5b802f9 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xe023692b devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x101c3dc1 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x43fa2de8 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x490aeafe hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8971a0d8 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8abbf175 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd1042bd7 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x08dc84c5 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2c3312cd hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x870a04cf hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa7858dfd hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x00ad974b ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2c7074fa ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x3adf5018 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x5ae4f995 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x5e7df78b ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xaa133ec9 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xb47a13db ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbf483dd2 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xecae1213 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x172f943d ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x21811980 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2feb1c5e ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4157edce ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4db9768c ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x752a4b17 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xa7da2471 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xff9c9b50 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x12809d6d st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x45e1ab6a st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x50f7d94b st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6706b5c3 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6873c2c0 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f73fcf0 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x752ac81e st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x77656db2 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x81cb1f01 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x887b35a3 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8d4db30f st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xab6f2b0c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb187e358 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc98db894 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd879ed2f st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xee3940a3 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xa62c511d st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xdfba41c4 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa59a4caf st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xbfe2760f st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x4bf50de8 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xf59e4d0f adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x02d00529 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x0fac4e21 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x14aa0002 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x59348825 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x73a17f3d iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x7ba94d9b iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x7cea0570 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x84c91462 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8cf419b7 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x91c7fbb4 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xaa4e2266 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xad74eb85 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xcf4e5c5f iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xddbc4a7d iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xde749c52 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xdeb6c17f iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8809379 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x950630d5 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xfc627ce4 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x73a83817 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe3a3c11b st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x939d7d51 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x302b77de st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x3be53a86 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x0fabc897 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1cc17720 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5805e713 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x75565373 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x006a51d6 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0dd0806c ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2a1d04c4 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2e1869b6 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2f767479 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x42404542 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5314a31f ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x58f629b4 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6f0dab1b ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7bc1ecbf ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8159290b ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x84b450bc cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8811c957 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa65634bd ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbe310dba ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc6515054 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdede0f7a ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf65a2fe1 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x016942ec ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03432033 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0af20100 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e8d0ff0 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x100d1e66 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x123214fb rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x128f9552 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1dd939a8 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f68dfed ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x229ecf45 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24cc263a ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x267af062 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2933a993 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x294dfb91 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c000821 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ce499e8 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d03fb60 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2fa63371 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ff5dbee ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3059debb ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34fd456f ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x450f4856 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x496edf03 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55e73357 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5805416e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b2d506c ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e2bb374 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f20cdf4 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f97497b ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61ca66fd ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x677e663c ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69293f5c ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a78d0d4 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f240d7f ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7148130e ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x726da334 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7411ba6a ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x757a1362 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76432e9d ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76674ba7 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78167bb9 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fa9ba07 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x807477f4 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x817b642c ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x848968cb ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x878612db ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89c5aaa1 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c3dc406 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c776dc5 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d1b5d09 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f1d3c47 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9448fd4c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95ea2552 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x977dbf4c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9eea0279 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f8614b0 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2d06d92 ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa449ed56 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5c0502b ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9a15524 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab859bab ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabef9d65 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1875ff6 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2a6a074 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb333a5aa ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb562cac3 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc8608d4 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc34a8d08 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6109f0d ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc68e96b6 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6925adc ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcef91502 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfdcba34 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0788104 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0dee414 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2cf16a4 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3109b25 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd647be1d ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef651b61 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf14aa2b1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2c41864 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7d11d45 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf80c5374 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x08035e21 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x16b4d226 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3a6351d7 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4103c69f ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4ef45fbf ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x72653b0f ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x85f31298 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93ef9b4f ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9a5fb149 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa5d8fc9f ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xac8b7d89 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd7cb8e5c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe24e219e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x12c779f5 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2128a846 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6ffff9a1 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x73a171ad ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7b11b430 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb98999d2 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbe46e22e ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xca35d3d5 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe60b187a ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x26496c3d ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6ef2b5c2 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x08079304 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x381ca3e9 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4c42abbf iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x595eb8d1 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5b5b6125 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x98c0e186 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99526542 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbbd1c8d3 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc8c45915 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc90be525 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd41dadec iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd522db7c iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd6b8ecfe iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd881894f iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf18f17fc iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0ab3a224 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1f2f0c97 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x24adb4fb rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x26433098 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x41921b84 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x54cde5ec rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6192ff07 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x657b6520 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d5e9a12 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82869999 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x913ab920 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaf239cef rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc5da8471 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcaf5ac04 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd87e7ac0 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xda9e6b99 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdb937f49 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc7e45f2 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdf147ccc rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xecdc4357 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf1bd2c45 rdma_reject +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0ea39e4a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x431b265d __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4e18025a __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x765ec287 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x81b231d6 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8bcffecd gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdbc81086 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf87535a6 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfe6fd286 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x2ccca603 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x417c7a91 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x50a36b5a input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9d65d9f4 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc11babc1 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x23d11899 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7fcc4576 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9534d9eb ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc211def6 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x5e4b911a cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0ef8741e sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9f8ff70a sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbb0340e1 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc25a9d40 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd9111b13 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe54251c3 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x5ee07134 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc172858d ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0143f39d capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x09d031f9 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4ad62150 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4c1fd539 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7967748c detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9d754251 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaf9b325f capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xddae93e9 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed420310 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf6d92893 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x011d871e b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x10583861 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x23c5abd8 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25e1cd4d b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2cb5480d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x35a12945 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x665fc31c b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x70395adf b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7f16338e avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x98d4dfab b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb5f3fe06 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb83ba6e0 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbece46ff b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe7a066b7 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xee15e804 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x09684d39 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1ee80ba7 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x20f7b1c5 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x274a6b77 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8d35c296 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa4b4df61 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe51760a2 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf19ff9f0 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf79aa8ed b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1c443751 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6f6e4899 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x92b9e136 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb7d1225d mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9dd70e82 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb5989076 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xbf1a4877 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1d50d944 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x75f579fe isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7e3e8c2f isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xae4fa922 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbac4d96a isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xab59de60 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc042e703 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd445a47c isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0446efe9 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fe1094 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0c707981 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x273d2130 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2bad1cc5 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x35a4ccc8 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36828a55 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3ca0aa91 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4434efc3 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x456e0faa get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x72f1171f mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d22f28f mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa3419d07 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa87cd2ed bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe74188c queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc0988aa7 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3c708f2 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc9a97641 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5557c91 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd8370259 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda350082 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda8876f4 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf579357e mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x335b0bef closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x963cbebc closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbf9726e0 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xecf7cef9 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf67aa376 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfbf30701 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x06a2dd2b dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x1e25470e dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x2c90d8cf dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x97b7b7d5 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x17a228b0 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x39c4da29 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x431fd658 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x81328a95 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9e1483eb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc2a98c30 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x4afd923c raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2892e1ff flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2c8df4ce flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2c9a5c88 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2fa345ba flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x44e4c7d5 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x45e6aede flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4667190c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4c546f64 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x69747fd0 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7cccca62 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xee4295c2 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf77c2e00 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfa5478cc flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x322feada cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x9ed1ad74 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xaf9dea70 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdd5c3a16 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xcba59533 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x3c7bccca tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xe1ffb8b2 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x00dac4a7 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x043a623c dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0cea558f dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10bbbefe dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1c5b8ebd dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x200c0904 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x282ef28d dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x369c0b2b dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3720db8c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3907f250 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ee8cfed dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d4c99ba dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58c0b3ca dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a6f883d dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70de704a dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcc2a15 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d0286a2 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8dae42fd dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8dd594a3 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa75e6f5b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa8c1c949 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa946bc23 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xafe4b5c3 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb8f43639 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbaec51dd dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc501c93c dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc645fbc3 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8874a99 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xca6ffbd8 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcec8d747 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebd38af9 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf4eb1cd5 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf61f7378 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb316348 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x8789ae10 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x11831941 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x8e7bff34 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1770e676 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x18795e3a au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1c4e4584 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1d833b19 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6d352fed au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x737d5459 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa29165e4 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdefde292 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe5620c11 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x2bfe8474 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x3046edbc bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xc0eb2480 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x0505e80d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x0f72e85c cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x287b82e0 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xad8301a5 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xac4c5094 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x21ead967 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x84944230 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xd14918d0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x1aed6fc9 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x6ca806f0 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x7efa35e8 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x94b95f5c cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3524aa8c dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x47504563 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4addd38d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x75afa506 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa649151c dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1c507dba dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3b0d0c1e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3dc89d0e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x587d6564 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x59392648 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6c554b13 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x950eb6a4 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x99668934 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae22db61 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xaea882cf dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbeef73bc dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcc4ba47f dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe10fdd9e dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf05607af dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfc0fd9d2 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x425b6c43 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3baf2fde dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x77c874be dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x83a15d94 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xba724f17 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xbc391db4 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc551aa64 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2a5e7557 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9d7b5f9a dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa64436c0 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd7cab4a0 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1d128cd6 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc488cfc1 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4e480eb8 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7e5fbf14 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb9ae5352 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xcade1df3 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe2d46c97 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x5ecd11e9 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x037b872a drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xa48221a9 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x61b31c28 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x3714f244 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x8634a3d9 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x29113038 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x4cc1f3fa isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x89dff6bc isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x89f6116c isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x75382e95 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x9d54e149 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x4d3bc190 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x15d5c171 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x7fc2b6c4 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xe3e3a03b lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x62ca63d0 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x3275a58d lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xa7751468 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xc93f6651 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xdf7cafe2 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xc7782bbc lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xc19a77e0 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xf263aa9f m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xdb1e5ddc m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x1923d999 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xdfc99fac mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xd923b8d3 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x6eb29ea5 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x7d8fc71d nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x7efe7406 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xc6513728 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x28d8bc23 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x3fe5e002 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x193c1729 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x6dad4d31 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9fd7b29c s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xdb4be3ae s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xd3461c06 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xba528ad2 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x72dbfd20 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x216e3fe1 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xe0d9505b stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2ac1ab3b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x0c8e19c9 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x37081f44 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x335f86c2 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xfe93c4a5 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x79903921 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7ac9013b stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x9f9c37dc stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x14583a5a stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x0ae4cbe6 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xb5024c0c stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe450faba tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xf17e7a5b tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x0855b86d tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x53553c2c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x67409444 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x13b48bda tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x3fd19333 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xad5124dc tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x13addb65 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x80ac9d1d tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xa77975ea ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xe10b36fa tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x6802ce8d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xde305f5b ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xdb4f52c3 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x85112b56 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xa4e67e83 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5e2a756e flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x611cba42 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbb8cc81e flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xce057ba3 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xde22a0a0 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xdfd9fda3 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xea91db15 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0914d2cb bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1c04cf62 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x81b24eda bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x823638c4 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8c49a4af bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x9e5b4274 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xa7e90a30 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2a726454 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4835d176 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5714579c write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x79bacdd5 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7cf8eb9a dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2db08cf read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xce2d86bc dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd002c165 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe4d0be66 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x653ac2d4 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1efdb5f1 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x48ea9f88 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe78b5a93 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xeb07e2ae cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xecdfbf31 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x8818df55 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0bfe3ec6 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x432f81e2 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6051d83b cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc3ba398b cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd3e4ac81 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd6155aa3 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xebfe9840 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xc4c562e7 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xd3433ef9 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x620e1562 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x63f08ed7 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x97dc4fce cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf2d4d2da cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x197a3ff7 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x84edeb8a cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x87335fc5 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x96e8a74b cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbc16a8b2 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf15061d8 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf7c1e3c4 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x078f8456 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1c3a8b94 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x30c7f945 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3371b813 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3cab04a3 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3e60afd2 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x40508acf cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5a9de214 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5dacb173 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6164829a cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6471d808 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x91123248 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x92b66149 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa4992eaa cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb5e13563 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xea511387 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xee6d49a4 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf77c5531 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfaa68f87 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfcff361c cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0de14c9e ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1695d27b ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2ee4940c ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ddbcb88 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x65400201 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x70cc4a2d ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7341d58f ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x850241d2 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8d131712 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x927a833b ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x939799d3 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa51ab3a9 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb464e5e6 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbd974349 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcb8f591b ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe57930ee ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd79c394 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2a7f9155 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x32e11e01 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3cb6b1a4 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4ad5e9d9 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5bed5967 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6e7f5592 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7ca19d30 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9c184d52 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb3accea7 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd55c0960 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xee568e80 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf4fe7f07 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x85c731f9 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x271f9351 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x36cff8ca videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x66531aca videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9e1b2451 videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x374469a5 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6e7f05ea soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x79550478 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb4e2114c soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbd27c0f8 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcc07d368 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfab403a5 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x316fcf44 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5907cd9a snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6b1dbc73 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x742cc7ee snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8c4677a5 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xcd1a605a snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe7469272 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x076fbb94 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1e58fe50 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x35444496 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x549e267c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x59aea6ce lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7db40dab lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x988c8fe7 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xafc3338c lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0x05971954 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0bf9515d ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xa3eb67fb fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x778b05d4 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x4635d845 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7fb4ef52 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xdcc7c28e fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xd037eef4 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x91a56931 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x80826dd8 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xb8cadafd mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x8c1fb6aa mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x977f9801 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xf5b0b580 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x9bc1d37f tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xf0facd69 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x25864907 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xc54b97e8 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x081d5410 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x43248936 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1999a87e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x269269d3 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x338f76dc dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3f38384c dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6c62ab22 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa870c96b dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc41abd95 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe1d07c6b dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfe41b424 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x43964d6b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5ce1f941 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5d92d2cf dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x70011535 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa47577ac dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xba3c122c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf4686ca7 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xc8d4bc0c af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0b90b064 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x411918f0 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6953cc76 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6deb267c dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8b64424f dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc07356fa dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc195bdeb dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdc7d8478 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe85c7f46 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf66899c9 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfb065dad dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x32e87017 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x4d2498c4 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0b1e1c73 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x119a833d go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1fd3df8e go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x391afa35 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x39e78131 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x55815a12 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb6e6ec89 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd1dc3060 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf0116ee5 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x20ea012c gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3996c8eb gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x415d1a2e gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x66c01971 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6972fd8e gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9f2a5ed5 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd6419adb gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdfe1886d gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x83b2125e tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xad2a96bc tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf20d3206 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x99a2d92b ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb265d8e1 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x0d36c9bc v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x34cd0757 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb159645e v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x690930b6 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x792c8ded videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7acd60f8 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8f0a31f6 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa322b6f8 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf1506524 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x2655f3fa vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x3ae28cb4 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0f1be697 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x30e5d333 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x641096f0 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x92d19e24 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xba90cb93 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd117d115 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x11f92b1a vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0022db0b v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0056e61a v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x023d460b v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03c022c6 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0adba3c0 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0eff1382 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x17e14e85 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d258581 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d3f8e08 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x216afc42 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x219e0079 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25425cd4 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a977d10 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e204407 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e90803d v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31ffc93e video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x375f8bc1 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38857c46 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c3e6497 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4586053d v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d7d3a33 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x654c2993 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65a87187 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x67697c0c v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b67e4da v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e551787 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e6a26f8 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73bb1f41 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x749dce49 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7959c216 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7cacb440 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80a76b58 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8278443f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x834a2fda v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e62df10 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x99e8f252 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cc21a44 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9da8955d v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ee122ed v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa02b146f v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2c5adca video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8354d25 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9f874d7 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad6fb3b0 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf547578 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb65d8b1c video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6ed9219 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbb44024 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbcd47e0 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbfcbb1df v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0921f8a v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc577d43d v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7ba4adb v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8ed966d video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb65d696 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbe52b7b v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfa7dcdc v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfcc878a v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd54c6328 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd56f27e3 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd955f418 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc311718 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddb0c4b2 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe023808d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1537f86 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea862939 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3334b94 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd251a33 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0b3a8dab memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x24e057ae memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4456dcea memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c7de9d8 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c969013 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b4d9348 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a42525a memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb62c0ac2 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc6d4dc76 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xca1c63ed memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcc79cc4b memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe8f286ca memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x035e56ca mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x042d3406 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x173c5c2e mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x271911d5 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2e476684 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x332972e5 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x43ae8665 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4da5c0f6 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x51499b07 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x57f974b1 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f3ec0f2 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x64643ec6 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67bb73e1 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6db5471d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e6ed43d mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81b7d64a mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a13e44f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9f0a0dcb mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9fd1cdb8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa8f7d150 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae3ed298 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb25eab51 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb74ca5f7 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc785c677 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf6b2c9d mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe239cc97 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf42b8e60 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf568ea6d mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc63fc36 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x09cfb793 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x24f177dd mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x38b94887 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b72c666 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a416724 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6125366a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65eeac4c mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6fda3795 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74d35ac0 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x78b4ab38 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b6b5d02 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fe33996 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d29eb95 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93ae2e31 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x988f2d5c mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a90ca52 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa689c701 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaa6f75cd mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc0528de4 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4ac5942 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca118d76 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc50e7ce mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xccd937fa mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd4ce01cc mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdbbb2c5f mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec7b3faa mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8d48ab0 mptscsih_bus_reset +EXPORT_SYMBOL drivers/mfd/cros_ec 0x709dead0 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7172d4d3 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9e348870 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfffeead0 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/dln2 0x04256232 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x58349c22 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x95efb6cd dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x053cdc39 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb4cba15c pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0b11412a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x19322f64 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x336a3a74 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x49d7d11e mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x653e9e0c mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x79c03405 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa2ef541f mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbbe00c33 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc94e99f8 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf259643f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf66e09a0 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x198a76d5 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xb837bfac wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x06819c29 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x34bb27b0 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xabd9259d wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xeb3761d8 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x135d93bb ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd0697f10 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x075983d1 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x710a1ff3 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0915da5 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x1a1539af ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x74bc1a6c ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x0b3c2389 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/mei/mei 0xafdfce69 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/tifm_core 0x00a8a4eb tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x0c1b2b6d tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x13e5ff71 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x156f667a tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x7bbc7925 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x81d72cb2 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa10a33f0 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc8f85485 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xdc1d2be1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xeeeb18bf tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xf3b12f7e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf653c934 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x71484001 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4f0a502e cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6517d462 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6f40ee02 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8c0ab8ae cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa958bae5 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb2a59650 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xce59299f cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0c4676b5 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x18bc9a56 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8e8ed424 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9553316f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xc87c71a5 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x46b1ed89 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xfe94a883 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x038513b0 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xcd31ecf0 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc76c5513 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xd57e1a83 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x07b41dc9 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x230a7025 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3beb1d09 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6a71b76b nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8a21f2cd nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe56126c2 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x41f8b1ab nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x426cd3bf nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8e9565ab nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdde073f9 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf791d079 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x4c6db287 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa1bd79b9 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa80a8fea onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd1b97694 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2fce41b1 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x425fb8c3 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x432ed67d arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4e75b910 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6742e407 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6cc71ecd arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x919b90f1 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa66f9159 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbf49ef18 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc21a57c5 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1f52b995 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4a1b4bb7 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x7828a1cd com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x11b48bd0 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2d119f6b NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x36b896f9 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x54a0b99d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6383937b ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6ddf7b8a __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa6e3b1cb ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe9886143 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf89d9b86 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9c899a2 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x12d578a1 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x2499e5ae eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x614c0d67 eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x845c767d eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x8755754c eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xaadf41b7 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb315ffe0 eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xce4f4466 __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe0e37c14 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe7774f26 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x06f5d462 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x0e48023f cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x04083c55 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x26f381e5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x28b92bd0 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2b5dfe2d cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d3dc631 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3db46455 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x476a3f69 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7b0e734c cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7e37d100 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8746fdc3 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8d2dc145 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9dfe3bd3 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xae97c336 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd18a29f8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd3246735 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd7b5c0d3 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b8cfab9 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x172488ed t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d958744 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3273364c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35d51ca9 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x367abed2 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3961b9e8 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b64b90c cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b81ab1e cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x414160da cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41849dba cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x44f04d6a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4caad777 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54086c8b cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57707dfc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5f24c199 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e48f351 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6fedb959 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7750c7d3 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7828a3ba cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7adfdc65 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8020c9e9 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x85656a22 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a3712a cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1237def cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa97dfbaa cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaaf64d4a cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad3e8b98 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaed9933b cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3701453 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc44fd9fd cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca8be57f cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedad6185 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe333f6e cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x079aad04 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x56b4555f vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x5cd75f08 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x99dff381 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf0b607fd vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf9ab1a83 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x73acb45b be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x74e4a94d be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x120067da mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14ff90cd mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1643b3ec mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17a9870b mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c19ef41 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b304005 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x431e7eae mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43de2db9 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x470d8a62 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4aa35fa5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x527b840d mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5536e435 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55f9c0eb mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58448b63 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5afc853c mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6297844e mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x634f7bdc mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68662b66 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68d66b4c mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ba43f50 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89062937 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95fb985d mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b66285c mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadb6cef5 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb893384b mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbde45a89 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe2ec34e mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc780b6fc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7e8aace mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7270d74 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8b38d67 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe92060a4 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeedf68d5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0582afd mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0a5862d get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0ad229b mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b23f57 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc4bc1df mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x067e6abb mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08b84958 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b5034ac mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x125b1472 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x22cf20be mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28fa13a3 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c473f62 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d0f64dc mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3638a363 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c82e4d2 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ff55c26 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46f82a4a mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4dc60cad mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4dd13b0c mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x509e17d9 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5196d334 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b9935f0 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64aec312 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b14d2d3 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c453c2d mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84576fa2 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x883fafa6 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e0d5b60 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9471ad2b mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x970fee3d mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x980c9fc3 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb709066b mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca3d0eb0 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd31c0eb9 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd62647c2 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8042c4d mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfff020c mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4d2900d mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0176e16 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8edffdb mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf917b35e mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfccadc44 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff52309b mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x01762db2 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x233e5967 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23c80ecc mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2fc763e6 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a7dfacc mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x998f0f21 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9f634d5d mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x00515d5c qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2868fe16 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2d40bac5 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x30cf657b hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb7d445ab hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xccc0432a hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x06e66347 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1b4313ff irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x603406c2 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6209e992 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x63cc522b sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x706747ef sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb28bf070 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd8a7e881 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfa48c172 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfa87f6f2 sirdev_get_instance +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x29237d18 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x3770acab mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x41033fa1 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x69fc3930 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x77c18610 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x81049cf9 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xad5642da mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xb55dd50c mii_nway_restart +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x38a62199 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6cc31621 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xa5800695 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00f3b239 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2cb2de58 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x52a1d5c9 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x540b7259 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x2e288386 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x3b8a1527 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x6b5c1f74 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x6e630f10 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x9080da84 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x9c9bbcbb team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc8a27453 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xec33da30 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x72362639 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x77a53788 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe174fb8e usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf7a903bc usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x16baba79 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2de52216 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6ebdeda5 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x73a33a71 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7fe8a80d register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa10f0bdf unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa262a9a1 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xad6c8dbe hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xae9f2b09 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb4d76af8 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfd425073 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x199fa87f z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x32d6ea99 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x3bb9b0ee z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x5bba034d z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x69cb4d65 z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x717ef524 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x899dd5a7 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x8fe9137e z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xb525d6a7 z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0xb8e03cfd z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xc1b481a7 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0xc6ab1d71 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xcff6e272 z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0xd2d6471e z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x7ae738de i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x004a0f02 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe9bd2a48 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf5f5e347 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x09fcebd6 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2c3ed53b ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x34500a65 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x39a0fdd3 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3c2ba803 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x40f4fb17 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5272e1f2 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8150c91d ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9285143d ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc02c7944 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcddced5e ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe7cbeb65 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2543578c ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x27048e85 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x377e10c3 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4a1ca310 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5b60a0f7 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5d657b5a ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x62cfdf8a ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x76913c2e ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb1572a94 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb73704c8 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcd22bd08 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdb858df2 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdde067be ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe8e45bd6 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf40718af ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x113860a1 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4ada9790 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x50177823 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6b994be6 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7a1d5c54 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8a9f59f5 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x993f4ba6 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb2590981 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xeccede6c ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfbf83291 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfd52a6ef ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x04f63bcc ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0b06e77a ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1277ca0e ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1d96117d ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x272ff75a ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4f03e915 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x540c4a4f ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6a6154f1 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x703acfdd ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x74797278 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x767f7e48 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8166913f ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x882f1115 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8d2bf4c9 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8e4fdfad ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x90bf649a ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x96308977 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9dd5a599 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd3f97e7c ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd444391d ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd9b103e3 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf083c06f ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xff744a1b ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03909efe ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0683eae3 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x081f378f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ab084cb ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f7cfe52 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1211604a ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12bc3a57 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x136984f9 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x159cb854 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21ed5035 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22870488 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24b701e2 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2515e219 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26b6b7a4 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x283b4cc9 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b8b70ae ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2da20ebf ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d6dbda8 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x461bc848 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x463bb78c ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48d9871a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49304c1a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4eeb7343 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f86a842 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ffa8f7e ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51c4ad07 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x533be7ac ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x533d858d ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5adc7f1f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6232e898 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62d3fa17 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x633114da ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65ffdb16 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69000267 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ebd6920 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f84ecf1 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x700db3f4 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x749246c9 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x781e65f3 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x783e6259 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fe88613 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8230e667 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x836ce57c ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x866cadc3 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8782e867 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88d51446 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x894187c7 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c481000 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f2aede4 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f2c651a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90345bcf ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94cbadd1 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97057c5d ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99cb6401 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99d1ad08 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a6317aa ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b4eac0c ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e51ed03 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f43427c ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa05e48af ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaac175bb ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaeefaffc ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb09730e7 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2af88d0 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4d093f9 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb56902a2 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6f81778 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb10b4bf ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb428152 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbcc295c9 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd53146d ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd54ce09 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbec9b586 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5d35c65 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6ffcda8 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc96de225 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccdf2a22 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcec41a6b ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd12e6f18 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1a14a37 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6b10727 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd83e8642 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd85c5c21 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8e37bc8 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda1508d6 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb08e7d6 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb13156a ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb84df33 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbf4e218 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde84d7d9 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe09192b5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1eab67e ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4266d14 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe72a2727 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe76f8b56 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe96c3888 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xead7a58d ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb5e9b5c ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef504e4e ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef8f496e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf43ac7a8 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf63f17e4 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa84c1e2 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcf5bf99 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x37f66b94 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x8d1c907b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb673e097 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4f07627e brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x54424f18 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5a642b48 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5f8dcd42 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x82004fc2 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x877031db brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x886f3995 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb7a72641 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd252d330 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd85166d3 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdbac5979 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdd021de7 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf4d414df brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x01ab837d hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06ac7687 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06e1b595 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12d838fd hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x16e3baf8 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1b0e5524 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x32aa11ca hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3a5b5c9b hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4053302d hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x438ec1b4 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x562b6b8a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x84c137a7 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86de3dab hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8f0b47d6 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d2df9f9 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d7c916b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9daf6f71 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa17e69e9 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xae7bee39 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb59bce8d prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc17ca895 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3d7f18a hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcbe0f1e7 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcef69ab0 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd2b52d18 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1af249bc libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x216e7ab9 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x23f36a63 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2c151cb5 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x39771d1b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3ae2d3a8 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x46fc7e98 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4bab7c55 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62a5037e libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x701f5923 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7a6ece69 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8596baa9 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8aa0cc84 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9553bec2 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa177fab1 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xab8665ed libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7145e04 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc83c8617 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcc48be6d libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdc415f5d libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe3491a47 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07fbce76 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0809e26a il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09d85952 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a175af5 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0abc6808 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d0ae43b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb19678 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x105a1a89 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1162e930 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19c0c998 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c66fa58 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2136fdd4 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2224b666 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x225c2dfa il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2509e39e il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x251e33fe il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26eda5eb il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x272d775e il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c9da4f4 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e68e545 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2edaf111 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x302b951b il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32e316df il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33c47dbc il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3583ff3c il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39248509 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3afb0aee il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f74043f il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b418865 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c2a7b71 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d86c2f3 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x504ab8f0 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5134d93d il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51a77641 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57479764 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a4b64b1 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d317f75 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5de38a58 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x615e1b96 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x632d528e il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x640e58ac il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x676ff3c8 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68e4434e il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a9cb4a5 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d4fa85a il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x713518ea il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71eddc8f il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ebb93b7 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x818af694 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x841b4d1c il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d84e8c1 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9036ef67 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x914f576d il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x91bfd47e il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92bbe1e4 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92df89da il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93b3f25c il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96c078bd il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a463151 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa44955f5 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8b66033 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa91c4c07 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadd11790 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2682e4c il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3f57fae il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb49a32f5 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb570d9cd il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb63a1916 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9a2fd76 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbaf7f416 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbd98f7b il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc01eae5f il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc146d83e il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2d7bec0 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2d82472 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2e68fef il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3655f9d _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb864720 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbbdbd61 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccd10b31 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccf0f54d il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce1c0d1a il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1b935f8 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1e09f11 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7d38aac il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8436a6e il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdef3269e il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf673376 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfe3dd24 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3311825 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe747d299 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe87c7490 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecc7515d il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf08c5436 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8664afb il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf86dd695 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc05d214 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfefcccbc il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08c6664d __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4379786d __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x95a8ab3c __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xa2b6ec39 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb69add1f __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xcd60e86e __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xd4f50457 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1cdad83f orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2308e518 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2f965e05 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x46c203c5 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x520a766f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x81677124 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8cbcd0d3 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8edbaf1a orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9f16b0cc orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9fcc1772 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb8ff625f alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9ec654a free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbe408468 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc9a4b679 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd4392abd orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeac213e7 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x31000da7 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x07269906 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0c6dd9d8 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0faef806 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x16c888dc rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1db6983e _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ab8c185 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e781603 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x31f4d944 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x34dbb242 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3be61b34 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x519997d6 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x55a6e02d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5ba388bb _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x643d5083 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x65c58286 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x68d5dbc3 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x724c5d7c rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x744a150c _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x777c2262 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x79325b72 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7ade722a rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8a1a3b51 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8d82e7ed rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x97fa90ff rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9c2e4d2d rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa4049ddc rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa6571dbe rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xac6cb0ba _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaed381e5 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3bd76fc _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb9a881fe rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbb29f825 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbffcda7d rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc8c48957 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd92f90e4 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xddbd8079 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xea01207c rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf059929f rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf2b0c284 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf322ee4f rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfb101663 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x25a11b6d rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x571cfc4d rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb5cc8d25 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xbca20101 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x013e91f2 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x8a085645 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xabf5ad88 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xedd47650 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x12ef5083 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x17916eb1 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1fc63f0e rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x35096d7d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a0e42ac rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3dfe3ea8 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x48c46f41 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b4a1724 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6003253f rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x64b03b89 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x751a6414 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x77724ec0 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7a352633 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7e79e869 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x972fdf8b rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xab7f675f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xac6d54eb rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb3d532ed rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd2a44cdb rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd3dde8ed rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd419a8b9 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe01507c0 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe20ce2cb rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe8bb876e efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeb3d8b4d efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xedfbe61d rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf0f6451a rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf1676e32 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf27292a9 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfe4caf71 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6e9c6107 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x88a8ebd6 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xeeaf77d5 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfab17dec wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x41b88bdf fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x9c2a2d5f fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x9ef5048c fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x03e62732 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x70d7d625 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x20cfbd05 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x73798a13 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe8b4bbd9 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x02afe04a pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xb7ce27f0 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x5f811330 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x8a941960 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xc6d3fce3 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x233e90a5 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x239b4df3 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x55c99cdc st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5e489b50 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7cc12521 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9ac8fc7a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9e406895 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xaff1899d st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd96f46b4 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xea8c7e1f st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfd8baa86 ndlc_send +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x06ef55bd st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x11f480f1 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x318b942b st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4a27fa50 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7fc560b5 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8977c3c2 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x95ed2848 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x979e04fc st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9c24960d st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa2a8cb21 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa7b88094 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd004ac39 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd38bd40d st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdda18e17 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe891e981 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe9692ae1 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf98912ef st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfb8932b4 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/ntb/ntb 0x0846ff6e ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x0969fab4 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x289cf102 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x56f85ae0 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x62ad9172 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6dfa39c5 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x853a3f84 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xba4b0e0e ntb_unregister_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x53c30343 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xc62d7c88 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x36cff03e devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x005232d9 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x07de4996 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x0a95d02e parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x1ec22f98 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x29382e0d parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2b26a74b parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x2b52d523 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x2c1deec6 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x3740f519 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x3756ed51 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x43cce1e0 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x486a089b parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4d7a3145 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x54c12e2d parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5f9b9f19 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x64b48009 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x70eacf28 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x74f39e83 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x75647ce6 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x76bfab29 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x7fb6364f parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x981ffbbc parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xaa6d2092 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xb50b8c59 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xbe3fbe75 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xc238472c parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xc4151eac parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xced2fc5b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xdbd271be parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xf21ccd7a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf738f13f parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xfb8007c3 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0x236d86f9 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x37904b47 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1c9a3422 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3c609357 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3dd0af52 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x56eed0cb pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6052d780 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x609645e5 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6268c47f pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x84986740 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8878fdce pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8a755d68 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x922d0722 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d54852a pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d582d24 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa0834115 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa47e79e8 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaa16c348 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc8d18191 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe7890275 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeca5faab pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x00a8f8e4 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x01588c41 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x04b21073 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x13543b1d pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x19c38706 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x304e38e4 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4ae73af0 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x695d186a pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6a8dd085 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8b62bb86 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9287d107 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x33cc32c4 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x9c72d46c pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x4ae0de34 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x7d1b7aa0 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x9b9307c6 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xd236b11a pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x1db14701 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x4bbe7bd5 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xa72e4486 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xb90f87f4 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xee2710c4 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x0f9c90dc pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4d52806e pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x5574f530 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xaafe33e6 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0a571b1 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb0af8104 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe2eb17e0 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xf64494c4 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xff3e8796 pch_ch_control_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0ef79f4c rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2fb69b23 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x44bb8053 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x592ba1a1 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97e13127 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb721a9ad rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc4daea62 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc66dd9da rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe98f2067 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfa69c40a rproc_del +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xac12a67e ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x0d19a4c2 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x68300d82 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xa79baeab scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xae6f8359 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc08f154c scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xf61b78aa scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x015464bc fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x17023193 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1f26504c fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x602e6ded fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7075712c fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x897d9ad7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9d0b4c92 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb01ab1e0 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcd280ec9 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd0cf3cc1 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd93bc684 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xde7f4dd2 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x006feff2 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x024440f8 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a2a6917 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e4571e1 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12eced03 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a64fb15 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x252ce4a6 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28f7d1a8 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b2b2c45 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x422daa46 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x59b6add6 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5da2942a fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ec5df5e fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f8606f9 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61a857a9 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x627f852c fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8073d15f fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81022753 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x873ac874 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a2afc9b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8d044c9b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90626fcc fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9665824e fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8b174d5 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaaa3fa8c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb4af2114 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6627fed fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb716c2c7 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbacef9b9 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb43979e fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdb2662f fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe5c45ce fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbed86404 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc017ca3b fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc6f4c81b fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca8e3816 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcde92da6 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd856eed2 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd87e5579 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdd88b6e9 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef445c57 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9bca8fe fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb1836e1 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x14721b60 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x632787e5 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xae6155da sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xef45265a sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x5f82bb69 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x057477a9 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x068432f3 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x134fe7e7 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13668098 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16ab38b1 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16ecc77e osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1ee0590e osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2ba77dfe osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35e11104 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x403b9ac6 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41ae6067 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4795c2f6 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48b5f382 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x56fd17e4 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5748506b osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x650ab77a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x67910fbc osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x707fb296 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x70ee061d osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77178291 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d35533e osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x911080b7 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96287ff9 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97579642 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97a138d0 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97e47fa5 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9ec7c856 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa1b70704 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xab32c868 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf26e5f5 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb7a51fbe osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb71088c osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb9f4833 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe61c856f osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe81d9576 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf794baef osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x585158b9 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6aa6b41d osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9bd77e22 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb0784de1 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb7ca0781 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdc3d21c0 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x14aaaa99 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15f87888 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x48e1a7be qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x59236451 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x75c4e5a7 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa4f0005b qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbcbb93f1 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc147321f qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd86dfabe qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe493c30b qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf3044e34 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf30c6035 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5e924147 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x69082ad3 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa551975a qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbaebbfd3 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd24cf377 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd2b40f70 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x4c16a38b raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xc9a4c07f raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd04d8dc0 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00d03074 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x01126fb8 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0f274483 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x13b62b9f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2b5eafa0 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5f4e2de5 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x74876396 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x86a3ca1f fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xac9b8df6 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb09edbba fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbd267ead fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc4ba3196 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd279a3f4 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x07774d4a sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b7f1d59 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0f2cdd9f sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x121dc9ee sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17204950 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f612b1d scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x35f7b01e sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b3caaaf sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d98402a sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e851c8a sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4140c5b7 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x48663f2d sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f110d55 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b1766c2 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79dc2132 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ffe7150 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8de723bb sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95080364 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95ff95a0 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xafac51be scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb196d847 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbcd24e4a sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbf04b4fa sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcfd2db0d sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd59eb963 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xebc88500 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf96b23ec sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff021c5a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5af2e632 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x71197726 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8f1e5ffd spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe5df6180 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf45d97c5 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x1599ab10 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x39e283d0 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xa8bdf4a6 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe6867359 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0108569e ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x09682df4 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x429ac82b ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x928f0efa ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x994fc0e5 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe7bfee8e ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeff52016 ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x01eb1f9b ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x18d3a083 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x1c5795f9 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x21836eaa ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2ac75b60 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x3c85e4d2 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x43e8dbc8 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4bee0519 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x5b05eef4 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7ceb5644 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x80792042 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xb4480bdd ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb7ed812d ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xce4b129e ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd54709e5 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xe727ac17 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xe984393a ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xe9e60a6a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xf0d906c0 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xf83ac33e ssb_bus_resume +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x009ec827 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x02293503 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0729a86e fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12eb9b5d fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1a406ad5 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x37a67eb1 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3b4ec035 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ea0eab0 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x54cb79f1 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x577d6688 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58b44b2b fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ac7cce6 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5caf0570 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ec9fb4b fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x68d06f00 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7e06a336 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x83df93b7 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9b34782f fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xca96a532 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd0377ff3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe34f3a5c fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe5e29d75 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf0622d6e fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf9d8a15f fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x3f3f7e79 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xa1951536 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xce33bcab adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x2ddef2ce hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3aa98793 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8ba32ce6 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9ba28c3e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x86f8451f ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa02f73bb ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x99de1761 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0xf60dd4e8 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x048a6b7a rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b2364aa free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x13204d80 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19cb9feb rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b1d4b5e rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24fe2f5a rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x27cae759 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2835af41 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a81ff4c rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d5199fa rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3911589f rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b8a108a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x40bb8eee rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x411eb2d5 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x428b719a rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45453d58 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47bc13fd rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d0f0954 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x520d54f8 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5547484a rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x56ce719b rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5db5e41b rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63986dbc rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6ed6ef06 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7147a277 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7dc156c4 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8df09adf rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ff889bd rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad54b633 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2aa4db4 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7e01720 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8a63b08 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc9bfc28 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf803282 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf8cfc36 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc233c422 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc307f401 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca4cb83b rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb1f2cee rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4efdb45 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6745b21 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9b3a276 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb28ea63 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe26b38fa rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe6cd6dad rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3b7076a rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9531da5 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfeac8cbb RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfefc1f7f rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff852aff rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05a82683 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0e219772 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ec80c18 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ff9ae43 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17edbf19 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18b72711 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e15ef4a Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x225ded58 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x239c23a6 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29d3af3a ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3100348a ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x389167f5 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ca81cd5 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d9a505c ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x405e2054 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x42cad60f Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b97e4a4 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d10ff19 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5186fa9f ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56135cd4 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5890b34c ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d4d2054 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5f08b751 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60d24768 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x625122ba ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6916a1a9 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fa35c1d ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71bdfd40 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73b37daa ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79a17a29 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a0f7c7c ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x842146a2 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86a9eb84 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8a74b839 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f632e01 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91a10af7 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a137f6e ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f0b00fe ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa78a421d ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbad2218 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbdd9e6cb ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb8bf546 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1891bd1 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5cb8506 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdeb716a1 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfc30a77 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe071db4d ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe32e2bd2 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb653112 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb6c54e3 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeddd318a ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1a0de4e ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb12fe0d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x000da427 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07ed24f9 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x142e0cbb iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b7b0c88 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1c9ea38d iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2def299f iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x30f2efec iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3284fb5b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x388e6b63 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39fa2339 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39fe291c iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4747e703 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5249bfbe iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x54b0b954 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d456827 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x688d6196 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6e704a9a iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ca2b4f1 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x859c02fe iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e26f292 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a43fe16 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb473d02c iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbcffe141 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc5e5ab8f iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdf1999a0 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe1253466 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf4e7e63b iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf83ede49 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/target_core_mod 0x016d34c7 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03477777 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x067650cc transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x06f7da5d spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x071b4fc1 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x12fe4c31 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x145d1f78 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x16e38e75 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x176fc595 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x177e480f core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x24c24b3a transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2502a862 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x27efb8b1 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x298c5230 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b96137f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e11bc45 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x326dbf80 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x351d5979 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3aa25a14 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ec88c3e target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x40baa175 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x44c37800 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x45b2ce84 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x46743ff1 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x48315a27 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x52dd668b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x532b1dd2 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x59e35ac4 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x5bfcd35d core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e57aec4 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x606f1cc0 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x65d24cce target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a267dcc target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x7374bb26 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x759c4d1f transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x778c5466 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c01a274 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7eeb6b84 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x80f393bf target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x85a4ab6d target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x865a4353 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x894dbc29 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x89d2e799 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f2773ed core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b7d04a8 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e348ee6 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xa078c648 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa44c9519 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7518c95 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8cf4ae9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc6ecfc9 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe0a1cd2 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbfda9a21 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc45a9d6c transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xce3acdcb target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xced1ea80 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1e5ea96 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd201ad59 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd58398dd core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xdebc216b transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2f00cf1 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xea9b88b4 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb3651e3 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb6bf0be passthrough_parse_cdb +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xe0ddff23 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xa2722af0 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xb0b499db sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0fffaaf9 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x12ad05bb usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x18b114db usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x19b34db4 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x249fd40f usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x38a1f194 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3b9ea9ba usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x51208f31 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x593e4be8 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6adda276 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x935d408c usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba6e6dd3 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x642e390b usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xba4fe656 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa433b0ea devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xad588450 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb6073d89 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xcc435368 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x2d1ba388 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x56e27d8e svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5b560944 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x73d604bd svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x88802f6d svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9813da97 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa690d8c9 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x236fa1d9 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x433ee52f sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x750995a0 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xf435c776 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xba6c8aab mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x27db6f01 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5c9cc4cb matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8985c116 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1807c3de matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x379e10bd DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xacb5a7f8 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xd3382995 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x1d581b4a matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xd0bb3e2c matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1da04fbf matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5408088b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd2d8b4fa matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf6083244 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x480dd098 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x7db70173 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x239d2a74 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x69c5535c matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xae7768c1 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe3a910d4 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf5589487 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xaa7390cd mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x2e24938c w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x36e73e7f w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x55ec5b52 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xbf2bf719 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6f698f9e w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf07d5d6a w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x0af7c1c4 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xd9d486b4 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0xa44c4a65 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xd8b2fc46 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe16bd029 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfccf0f0c w1_unregister_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x14a22706 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x18adabdd config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x53ec62d3 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x53f2e7db configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x54edc6e5 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x57b74be0 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x5c0a3dc1 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x843823b9 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa0e37a91 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xd363e259 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0xd72f279e configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xda3087ff configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf238781b config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf50c9d36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf8f9fee7 configfs_unregister_default_group +EXPORT_SYMBOL fs/exofs/libore 0x0f0b23ac ore_read +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3a5a71c2 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x46f1aa67 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9e08ec87 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb68ca28b ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xd36487ff ore_create +EXPORT_SYMBOL fs/exofs/libore 0xdd7b2f8b extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xe21799af ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xedf5478d ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xfa2c25f0 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x11a66528 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x1460af76 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x2a0f4726 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x2acfa645 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x36cf9514 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x36f936bf fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x390f3563 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x412f9ebd __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x462a6a8f __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5616bf0c __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x588fbdcc __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x5a878c9e __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5f21e761 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6131a161 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x63277f4b fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x649b614f __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x6783ad04 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x77c066a2 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x84e3ca7f fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x97737e86 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9fdb1ca0 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa3e9e64b __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa4543a0b fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xaef3ed7a __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xafed21e4 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xb11d6e11 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb4556a21 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xb704d6ef fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xb75aa2c8 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbb0d59d7 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc1c610de fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xc48298cf fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcf545fc2 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xd35ee850 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xd3eda313 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xd7f8f585 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xdd33a9d7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf81207bd fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xff984f33 fscache_object_init +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1ee0ffa4 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x22a73963 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x3052208e qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5cf63692 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6b91e9bb qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56930467 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x6a059eb3 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x85ba7852 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xdf1e600e lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf2636cf7 lowpan_netdev_setup +EXPORT_SYMBOL net/802/p8022 0x110584f9 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x936118fd register_8022_client +EXPORT_SYMBOL net/802/p8023 0x65679a7e make_8023_client +EXPORT_SYMBOL net/802/p8023 0x7776155f destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0xa72f0fe4 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xe570da26 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x09ef2b1f v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x10a1a47a p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x15e9fe8f p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x19468218 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1aeb2107 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x20e1fb78 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x292d7cfe v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x2cd6a833 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2edd8b70 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2f3572c4 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2fae2b6f p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x3039bfa0 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36226f5d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x36356935 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3df2eebd p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4a71406f p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x64ebb007 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x66b2d70c p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x67ab1f00 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x70c6f311 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x728d8cfc p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x7d69ac46 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x85d884d3 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x8bf145b0 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x8fb72347 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x94eefd4a p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xa3572f60 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xafba6fa9 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xb53be47e p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb55ec695 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xc222486a p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7624057 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xcd479c64 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xd554055e p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd64d5c43 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xdd1ec70f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xee19f7dc v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf518af31 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf904ca7e p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x2f257970 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x36ab46ee atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x7a25fdcf atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xc7be18a4 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x009cbcdd atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4571fb1d atm_charge +EXPORT_SYMBOL net/atm/atm 0x49016208 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x589fb080 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x5eaaeda1 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x6b3b8f85 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x8ae5b343 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x8ddbfc86 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc6f5989b vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xeb44e5e1 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf6c1c6a1 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xf75d13e0 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xfbfbc91e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xfed49b89 atm_alloc_charge +EXPORT_SYMBOL net/ax25/ax25 0x01ce0322 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x121aac36 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x1c44a69a ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x23980a17 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x41760de0 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x578b57b0 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x761aa60d ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb67941e2 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0219e946 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0649ccfc bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06539d0a bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a3b7d1d hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ccd19d8 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fdcecd0 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x309c1a07 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x395c5102 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3dc13fb0 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4382a2fa bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x52ad58b3 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x54dea0ef hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x572d0e9f hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c99e918 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d4fef81 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x60ece61c bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6565452f bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7367b11a hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84fb2648 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8faa588b hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91777499 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x96ef504b hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97897c70 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa1d5caae hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa24e1e36 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa785dd68 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xac7e688f bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf1008a6 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb22c865e bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb55e74d9 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb609cf39 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc19412cf __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc264156b bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc90a59c6 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca53c2a4 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcbf994d2 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf157e1a bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd9830f82 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcc7414b hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec96274e bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf0be321a hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bridge/bridge 0xd956a6d2 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x514acbbf ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa32a9bd7 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xcea819c9 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0cd191c7 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x59247dc9 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa6e0a0a5 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xde367f8c get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xefa4c10f caif_connect_client +EXPORT_SYMBOL net/can/can 0x3186a4c4 can_rx_register +EXPORT_SYMBOL net/can/can 0x5dc204d1 can_ioctl +EXPORT_SYMBOL net/can/can 0x603f909e can_send +EXPORT_SYMBOL net/can/can 0x74df10c3 can_proto_register +EXPORT_SYMBOL net/can/can 0x8a1a3b6e can_proto_unregister +EXPORT_SYMBOL net/can/can 0xd327f196 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x028d0e40 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x047b036b ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0c29fb01 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x0d5d660a osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x0ec36787 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x104203de ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x138387bb ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x18c1539b ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x197ff5ec ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2187b604 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x27f834ef osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x2bae234a ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x2caeac6e ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x2e860b33 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x3032734a osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3249ae9c ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x340ea220 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x35cd0da9 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x37e0114d ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3cfcebe7 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x3d48e629 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x3d7a8820 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x4388a8b6 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x43ad4a4c ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46869bb3 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x47889017 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4cae6973 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x580873ba ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x590bfdaa osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6169c03b ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x61ee2a8e ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e62e79d ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x6e77ecb0 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x73fd9f83 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x78a62a75 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x79583003 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x7c927afe osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x7d0b4030 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x7fcf49d4 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x80bcf7f4 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x817d5ee0 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x81d5d758 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x979493f2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x980e1f50 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x99b55572 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1484666 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa3f3fef3 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa835e4e4 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xaa325275 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xad2fd83c ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb57a8717 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xb58ced9f ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xb5ed2db9 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb6ddbd05 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xbbcbca70 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbc844551 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xbcd519c2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xbffb47b6 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc457be7b ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xc478b6c3 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc689a492 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xc6a65b10 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc76b44c3 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcaa8ed0c osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb95b45c ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xccc5c0ba ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xcfb85bdf __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcff2b888 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xd21a0b34 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8205a37 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xdab52cd7 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe0f82cb7 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe1fe0e5c ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xec3e25a4 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xed84c1d9 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xee606e6a ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xee97479a ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xf5cd3313 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xf744b7e3 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xfb343e0b ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xfb984aa8 osd_req_op_watch_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x7af8fd33 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd3326cb5 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0258d761 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0a02b8b0 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4b3ca7e2 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xadfd2dc1 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcb193369 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xea98ce7a wpan_phy_for_each +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xa7844636 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xc381c725 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x010818bf ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x09f84ba8 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x64dd9a02 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x9ced739d ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc2e53680 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xeeb4d92b ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1d94adce arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x4c27d053 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xff63cfa5 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x43c61633 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x454da957 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd8352c42 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x248f42c7 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x627e5e5b xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x5d5bd5ec udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1bd7fe74 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4b5db397 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6e62ee17 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcc6703ba ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5c7b55df ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6a201197 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9f2bfdf6 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x3fa8a1a6 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x99b97d5e xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x2957dff6 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa67e0f1e xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0fd487ea ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x23811c2c ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2d3fb948 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x55ec02bc ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xadc034b1 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb5d3281e ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xca76ec01 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf103fa2c ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x0734510b irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x0a966960 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x14ab812d irlap_open +EXPORT_SYMBOL net/irda/irda 0x1e0402aa irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2796ed67 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2d9ccc16 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x442d0570 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x577bdf81 iriap_close +EXPORT_SYMBOL net/irda/irda 0x5b85a6f7 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x5c6226ca irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5f507e52 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x783abaa3 irlap_close +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e63981f irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x89563e67 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x8abc4ac3 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x92e2eb7d irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x987f7d2a async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9c6d9e66 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa40600d5 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc43e3070 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xc7e50848 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xcbe4c776 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd50ee80e iriap_open +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd763ef08 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdec5383a irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/l2tp/l2tp_core 0x99439707 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x12952f71 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x30d4e33b lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x5a504b4b lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x6126ce6c lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x74183634 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x87168d5b lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xb6fe8c31 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xe6c42310 lapb_register +EXPORT_SYMBOL net/llc/llc 0x1d251c5f llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x2a5b1dc2 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3a843659 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x43347211 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xbab5557e llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xc7d4b122 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xd40ae206 llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x0172d3b8 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x0364aa48 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x076f8b7a ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x08b0bd17 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x0be8dde1 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x10661c86 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x12677b4d rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x1749f960 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x17bba73f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x187fd182 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2cdbd4af wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x337ae6f1 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x345b7231 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x34857904 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x34b6686c ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x36b5941c ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x3865471c ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x39695b74 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x40fc7344 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x4518cded ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x47dde5b5 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x503a129d ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x51236a3d ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x543cb7f8 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x58097fde ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5be20518 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x61adc992 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x61bccb36 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x65dd2ab9 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6f0ca2a6 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x772a354b ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7c1c80cb ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x7d9cd2c1 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x7de4878a ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x7e2cef20 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7e9f01ff ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x825cd706 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x8a6121ee ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x920f16ae ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x950a9a5a ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x95b1b147 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x9877187e ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x9ae35ea0 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9b28047a ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9b99534c ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9ec0e4e6 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa5ac3b94 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaeaa03e2 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xb2bf6caf ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb2cc3ad9 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb7a2d641 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xb9fc038f ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xc49ea173 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xc4d0d4c9 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xc671a37a ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc6d75347 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc7ec03e4 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xd09c9610 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd867ba1d ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xd8ca029a ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdebe4dde ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdf7cd637 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe0a073ab ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xe1630bdb ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xe2bd5d28 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xe4143387 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe5235ab3 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xe5b283c7 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xe875d5a5 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe9c1dbc6 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xeb93c674 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xec375459 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xec4c9aff ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xee64c06a __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf0003a09 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xf08389f2 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xf576acb2 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf7573851 ieee80211_stop_queues +EXPORT_SYMBOL net/mac802154/mac802154 0x212ca378 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x51db7cd8 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x89fdb9d8 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x9648a13f ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa3c8f2de ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa41c62d0 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xd7ae1606 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf3a5465b ieee802154_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x075c3402 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4e11100b register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x50db86b6 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x65c8c440 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x851ca752 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa63f3ea9 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb3f59fc9 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc3796649 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc3a84dd5 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb766273 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd23102d4 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdfe74f48 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe9619a2e ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfdc00bb8 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x10d4b524 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x327780eb __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xdc7ec327 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x15d2666f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x2009ec89 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x43359a25 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x67351a1d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xae8ccd2e nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xd718e00c nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x1b017f91 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x365ce7b8 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3785c9f9 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3c56e89f xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x7e675c6c xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x8d8ff81c xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x99c38fec xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9ac4b4dd xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa9796a0e xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xe5871f9a xt_register_match +EXPORT_SYMBOL net/nfc/hci/hci 0x11ccf027 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x1492180b nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x2f2fcbd4 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x42108484 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5001d4c8 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x507cd8b0 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x785ca875 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x7f4c3d88 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x882ee88c nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x8b7ad966 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8ca83900 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x92f9684e nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x97089552 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbcb66b30 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbf449030 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xc2a62fc5 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xc6659962 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xd673af1f nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xe3eefdb7 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf23160c2 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xfb018601 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x066f5362 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x1a3fbb1f nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x1d149a2a nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x310c6890 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x326d7f0e nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x35a81c57 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x385c8592 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x38e77527 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x3d2cf552 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x4b9ea227 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x72a69832 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x85eaa41e nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x894523f4 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x8fee5d19 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x944299ab nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x99dddb67 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x9fdceaa7 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xa9e71f48 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xaa327562 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc42a4542 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xc5bc282f nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xc7be3e48 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xcbce5dc0 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xcfaf5607 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd42bdf52 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xd4689903 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xd7465c4a nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xf979986c nci_hci_send_event +EXPORT_SYMBOL net/nfc/nfc 0x26db12ba nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x323a04f5 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x39ed7868 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x442a0d89 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x46c321e2 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x561fbc7e nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x59c72e99 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x6715009f nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x6b12910e nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7123d427 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x739ff681 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x7d0e371b nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x99de61d0 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x9e5d10c1 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xae151a1b nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xb51f93e9 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xbb965da4 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xc251c456 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xd4b82523 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xe2cc0041 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xe553951d nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xf2398475 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xf43705a6 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xf979083d nfc_class +EXPORT_SYMBOL net/nfc/nfc_digital 0x7227cb73 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa73e5b10 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xbe41b49b nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf6280d01 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x1b9f0395 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x524752bd phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x7452232e phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xb0e30d68 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb19fbbee pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xba73b189 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xc5350a79 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xd04f7d4e pn_sock_get_port +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x044f3abb rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0b26e5d7 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1633fe27 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x20db8ad1 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x676dd8f6 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8a5de303 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x92ffe163 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa32df410 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa9d1e03a key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc603d2df rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc65ae686 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc6801a9a rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe1ab6742 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xee9dd72c rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf7a80716 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/sctp/sctp 0x366224a1 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0649a758 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3931f4b2 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x786ee4e1 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3e5c28fe xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x57f44cb4 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xdbfd6d5e svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0c1a104f wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xde2ce70c wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0019bd21 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x05b8d338 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x097b20e8 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a4b61ed cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x0c6dee6d cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0e7f5aaf cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x128d93c8 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18f4d607 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a92d1bc cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x1e2bf1e7 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x290347a6 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x29c8bb4d ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x2b6225ee regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x2debcf9c cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2e0e623e cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x2e58cd5b cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x2fea2383 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x327b288d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x3404138f cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x3af8aba7 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d77b5c7 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3fbeae51 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x418e89c2 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x44c5886b ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x456ecbfa cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x49cbe673 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x4a5d21f1 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5270f0f2 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x54488ac0 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x54ba00a5 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x5848b1c4 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x5b7a66d8 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x632d201e cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x63a90d6d cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x672e27c2 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d5b5fee cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6fe85b0d cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x71fe7beb cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x771057e7 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7aabc6ca cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7dd3ef12 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x7e961f44 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x813bc033 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x8355498f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8929b2aa cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8c1e2a00 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8c3289a6 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9501db85 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a1a6001 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x9bd98390 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9ece5cfd cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x9f68ab14 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xa0eba804 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2e8fc07 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa472f2a4 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaa126173 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xaa38e5ac wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xac9456b7 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb10740eb cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb6b638ed wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb86d3eca cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xbb5d9599 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbc001c7e regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xbfb88163 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc3158f38 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xce57a41d wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xcea98624 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xd45c153d cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xda8eaa06 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xdb39d473 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe3da6fe5 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe3dffc30 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xe940dc6c freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xe964e820 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xea6fae06 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xebda2afa cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xec28b230 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf89dc7c5 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xf8a56740 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd9beeec ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff857e58 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/lib80211 0x0b83c1cc lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x4af5d465 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x54cd0585 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb4ccbc4b lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xbfd3c9ca lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xdf664ac0 lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xb28b4af5 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xacbb10b1 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0b4e0f20 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1aaac8cd snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x498a043e snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x573f3e95 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3690d431 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x22503e78 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x033e5153 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x05f9c30f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x0e4139d6 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x0ee7f4c4 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x0fde9aab snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1cd80d71 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x2025117e snd_register_device +EXPORT_SYMBOL sound/core/snd 0x205f2e51 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x34e80410 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x36206b8d snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x396d6120 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3bc4521e snd_device_free +EXPORT_SYMBOL sound/core/snd 0x49ecbe83 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x5567549d snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x5573f775 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x5c0ca29d snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x5e74930f snd_device_new +EXPORT_SYMBOL sound/core/snd 0x5ff9ab93 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x63a7f7a8 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x63d567f5 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x65ea6cfe snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x6c39b126 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x6e8cf102 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x715fa141 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7557769b snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x76bfc95b snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x790782dc snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x7acbdee7 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x816ac18f snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8812435c snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8ccc08d3 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90d9b4d0 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x9354b9c2 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x97830f88 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa1b1a498 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xa27b7670 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xa2f0c87e snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbcb76208 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xc0a0e27b snd_info_register +EXPORT_SYMBOL sound/core/snd 0xc187e345 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xc68b5da3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd2f66f1f snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xdaadf23f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xea5c4f3b snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xed87d8f2 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xf5632b3a snd_cards +EXPORT_SYMBOL sound/core/snd-hwdep 0xfd73614e snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0b1e57d1 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x10b06e3f snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1639fccf snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x17461240 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x17b9351b snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x2334450f snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x28fb7cd0 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x332800c4 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3bc94784 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x3f2c1c2b snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x4295c467 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x478aa8db snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x492e61b6 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x4b21666e snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x508b947c snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x52ec623c snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x566657f9 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x5d17f496 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x607872f3 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6728698b snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6c530ec9 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x6e5283a1 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x6ea0f39d snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x703ed277 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x73139809 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x7aef2a56 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x7fc341e5 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x828d525b snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x84a8e90d snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x8b4ead26 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x8f857289 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9426d7c5 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xa51d7cdc snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xa538b47a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8886e6d snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xab424dac snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xab6b1571 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb65cd84f snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb73ef6be snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb876d4e4 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xb8863213 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbd14a84a snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xbe991777 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xc7c696b4 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdf7b6652 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xe24b5431 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe7ad84b9 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xf6e1720f snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x24ab9047 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3bc55835 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x45232fb2 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54998749 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x665a2784 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa0de9858 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa61480b0 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xab18d90a snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb699468d snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc914b212 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0b75292 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdac9bbad snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdbb745b9 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe0cf2e1a snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe50c356c snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea891f3c snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xffcc41cf snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-timer 0x04777a8f snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x05b803fb snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x0dfa2b88 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x13d4b6d8 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x1e79ae71 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x3731ae4e snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x4be1fba4 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x5ca0c461 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7476a9a2 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x7a569d01 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x81eec34f snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x8ccbcc4d snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xf3e7ed62 snd_timer_pause +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x0489604d snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0461e48b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0c851715 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3c419e40 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x540aa5cb snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6460b99c snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7d531f33 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac3b4f80 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb590a65a snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc3c61cef snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x18ce4f76 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x83e1513c snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x9d02588f snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xa32e77dd snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xe119e989 snd_opl4_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3adfb72e snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x59d7273e snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x87e93610 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9dcd7d46 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbfd75e91 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcbc814fc snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe4c3179e snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeaacd484 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeb59fe11 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x068c18ae fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c208679 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x22e4f429 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a85d3fe cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x353af3b7 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35ab6364 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x408438a3 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4b74b4fd cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x51e05e02 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x527ecfea snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x55122ca9 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5a1cd02a amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f62c32a fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6ae6eb74 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7004717b amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x769d0478 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x82b4b120 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ad63147 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8f4f6d40 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ff864bc amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xad173b7d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaef7f3e5 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb53655f6 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc46c0516 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc6a422b7 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcea79717 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0293733 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdae4aa68 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe9d131a8 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf47dc46b iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf6dc7de9 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf6ea2e23 amdtp_stream_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x962a4014 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x97b66d25 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1a2986ed snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x25c19768 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4b9baae4 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x57664ad7 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x85ca3656 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9e05710a snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa14201c5 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcdd2ec17 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7b62de36 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x83d1e0c4 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xad5dd22f snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd3813ba6 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd85ccfd0 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf72420ad snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x212449b3 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x247f5a57 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7398bdce snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x849eaf40 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x43028085 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x791ff872 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0663ed87 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1cac91d5 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x262bbf88 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x323b0c1e snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc4ad290e snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdaf2e3ee snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x44e196e4 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x66846f11 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8992c0ba snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb2345e08 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb94a0dc0 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf6ffb458 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x86e09f7a snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x8c558f4b snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x61b2c2df snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xb23704b0 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xbc06735f snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xc3321be4 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xf20bcd01 snd_es1688_reset +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x01003374 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0e944adb snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x315df0e5 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4099ae1a snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x44dcfb7f snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x45ab0d3e snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4a43e58b snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x60671ce7 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6631b39e snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7b595dc7 snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7b99831b snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8282a98a snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x85bcb10b snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8e7e2f89 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9abae747 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa146e5a1 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa7fa8155 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xba0e273b snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbfdd171e snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc4ed5360 snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xce141290 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xcf853667 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd3006c45 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd4568e9a snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xddb062ba snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe567ddfd snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xea9aa473 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xef958346 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf60c6b26 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xfa1cb56d snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x342632f0 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x6706e24f snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x7008dd90 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x72c07e40 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x7aef9308 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9cede87d snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xa2a780ce snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xaac63c18 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb70ab4a6 snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb926500b snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xc3c2bff6 snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xfb785f10 snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x52187c2a snd_aci_cmd +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0xa1cce763 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0f29c9b7 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1f203bcf snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4c3e4b27 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4f2f7a06 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x59de30c3 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x833f9289 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbb747a9f snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd59ad3b0 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf5765c57 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf73f9c46 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x7ec2b36f snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x9c8a536f snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xa030732c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xaddc04ec snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x4005bc12 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x497bead0 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x6c20b55a snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x76183c6f snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x11e545a5 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x1d93eab9 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x224c8a36 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x27e1275e snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x40acb96f snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x4d98757d snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x4f738303 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xa324c7ce snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xa8d13e74 snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xb56edbaa snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xd03e86cd snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0c5de1d8 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0ce71194 snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x1be47eab snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x1c66d5c4 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x1d7aa266 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x26cc4719 snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x512437e6 snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5ac7af14 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x79797304 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7fc1a1c5 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x812177ff snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x863f0030 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9711507c snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x99ca43bd snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9c3607d4 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xce4a4efd snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xf110c8e8 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xf4bf156f snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xfe569b7d snd_wss_out +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x07e3cb00 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f169342 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x130b5c10 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13bc9081 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1fff7359 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x23dff9d7 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2bf1a4ee snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5d0a6796 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5f162a7b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7a8c24b5 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x935744fb snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb5563d0b snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc98bc6db snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdb81f9aa snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe9e0a914 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeeee115f snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf02d8f77 snd_ac97_write +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x75deff83 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x169b6708 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x254bd8b1 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x29eb7288 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3bacde24 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4a8fe957 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9466eb39 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9657b6f2 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xaa752016 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcfe11193 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x82099535 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x86d14c8e snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb78f406d snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x288acdfd oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x45fa8bc3 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x49ff1ea3 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4c723dd7 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4f8835c4 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5ab557af oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5eb9c7e6 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8f15716d oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9360fbd8 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x94f62f90 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa05d40c7 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa489b575 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaedeaf5a oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaffda8c3 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb32b1a93 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb3a5f3a4 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc62e646e oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd4a9e23a oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xebcc9809 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xebd852ec oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfcba56ab oxygen_write_spi +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x17d804b9 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x386e486b snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8fc85f0a snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa1bb3e5d snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb50f1f54 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xd7b22f59 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xeb154cee tlv320aic23_probe +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x596b0e6f sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0xff492f7f snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x2d56134a register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x6694a078 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x880583c8 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x98c00b55 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xc71aa409 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xf280e113 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x67528fc6 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x75a88e8a snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x87334285 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb3d603ac snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xec9dd8b5 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf74ba970 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0c36d12d snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2356e54f __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x61af07ee __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8413f2ff snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8e019741 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb9495b96 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbb3c8282 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf42ca8ad __snd_util_memblk_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x8fa49b23 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x002d778d VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0064d4f7 VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00712528 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01795170 VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x03d8513f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x05626dc7 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0665bcaa VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x06ab676b VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0823cb2f VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08b98b3c VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08d7a261 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09458185 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b14ec2c VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b628628 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d1abebe VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0dfb68c6 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0e1a390f VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x104391d1 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x113a02d9 VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x127e9d01 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x143fba5b VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x14835127 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x16d72922 VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x17d84704 VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x187c16e2 VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19087f6f VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a79fedb VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1abe7e93 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ad481e4 VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1d042132 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1e7216d7 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1efa8169 VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f152547 VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1fc40aab VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x21b1ee43 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x221205d1 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2280771d VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22bd51c7 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x23a552fd VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x246391eb VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25938e5f VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x267da4c4 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x27740cb3 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2902013c VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29066860 VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2972116c VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29bf3685 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b015c38 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b5f52a8 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2bad2a8e VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c5b3002 VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d27c026 VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2e136d3c VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x309de102 VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3519743a VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3534ed69 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353b64a3 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353e5a81 VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x365d44f1 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x36e780e0 VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x37b2d47a VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x39df70a0 VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a29bcdb VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a77155a VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b0a3d87 VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3ed3a918 VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f452f12 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f8d56e7 VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4002b8b4 VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x405901ff VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428e3456 VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428eb5ba VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42c5bff2 VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x432b6724 VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x433ceadb VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4453e900 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4484f9ee VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44ce618e VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x453e64fb VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45933412 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4597652f VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45d332ae VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46b36f60 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4819f15e VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x48487b79 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4983ea42 VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4aca506e VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d0161ca VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d47859f VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e6d6986 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e7faa59 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x503f488a VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5045b702 VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5118e8ae VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x52041f46 VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53602f45 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x539dd662 VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53b772da VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x543527dc VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5460fc01 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54abe5d4 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54e45046 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x55c48692 VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57280c42 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57406d20 VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5929b954 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5936a317 VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x59390acb VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ad3216a VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b0eaa4d VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5c15981f VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ca67994 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x613042f7 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622a261f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622bf330 VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x62fd45a8 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63ba9fd2 VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64655cd4 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64af2463 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x650e77e8 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x651c778b VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6549a3e0 VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x65b04e5d VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x687ae6ac VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6a930d21 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6bcedab4 VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c17021e VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c2df755 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6ca5b4ec VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6f8ed216 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6fd2e761 VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x713f25d5 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x715699a0 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72d1c8f4 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73a23c8b VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73f65247 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x744623d2 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x753d3a3a VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x755479c2 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x75bee68e VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76608be1 VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x766a8684 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76b885fb VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76bb35b9 VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76dbecb7 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x77248ef3 VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7841b10d VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x78ad2401 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x797e701f VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79aefc0b VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ac53b51 VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ae3b63b VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7b423f4c VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7cef940f VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x80162938 VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8229caac VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x847577ac VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e86094 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x854806f2 VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8587f091 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x85afce7f VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867199c4 VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86f9f023 VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87abe8dd VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ab21a95 VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8b4fd3ef VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ff5c8e5 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x937cd6a2 VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9474d99a VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x951fbe81 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x953b2ba4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x983f332c VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9853901a VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x98a8f55f VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x993cc778 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x99ee476f VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9b02b021 VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9be73ec4 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dc75797 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9e97ef59 VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eb3db26 VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa21775d1 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa2c23601 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa3ff74bf VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa52847a2 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5655a80 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa582aeba VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5f0f1ad VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa61aa915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6209fc7 VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa74258ab VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa8a47d40 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaaab8c57 VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaadc0b5d VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab5ee692 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab871924 VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xadb5cc54 VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae21ae1f VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb2f248c6 VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb33ca348 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb3f592b9 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb4227efb VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5676d46 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5ec2977 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6fc848a VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9a86152 VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9e03c35 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xba349142 VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaf6967f VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba29a48 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbbc6e84 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbccb0c7 VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc7fbd2a VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbcd1b6de VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbd0aa67d VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbeed82c5 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbf5b421e VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc272f283 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc2e0f25a VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc312f533 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4b8857d VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4c265c6 VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc5151dcf VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc56f27ff VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc57a9c9b VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc636859e VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc6b243bf VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc7601bb1 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9978a5f VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb6463c6 VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdbc5e5d VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdd40e5b VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceb98390 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd032523c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1c8b171 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2ebb507 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd38c5d55 VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4f35c7d VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd63c8527 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd76ab832 VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd8730925 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd31359f VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd699fb2 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde296aea VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdead7a1c VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfaa7e65 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0453bfd VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0afcea8 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0ebf12c VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe16047ab VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe19acf09 VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe208c712 VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2aa3ed6 VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe4104f8b VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe46f3670 VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe47b5364 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe5908cc3 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe59fc65c VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe6a00917 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebbe4bc3 VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xecd69ee8 VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed0424f7 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed92363f VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf244ec46 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2e6e2c5 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3cd37e7 VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf450a3d4 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf722f7d1 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7c384ae VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf81b13f5 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb5ca767 VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfcfe8381 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe4fce41 VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe5c0dc7 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec59082 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec8da5c VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xffc16d99 VBoxGuest_RTMpGetSet +EXPORT_SYMBOL vmlinux 0x0000dc70 __put_cred +EXPORT_SYMBOL vmlinux 0x00037d25 vfs_write +EXPORT_SYMBOL vmlinux 0x00088e4c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x0014328e tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x00611f31 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x0066651f gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x008474a4 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x0092740b bd_set_size +EXPORT_SYMBOL vmlinux 0x00a515ec sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00ce8994 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00ed8140 dquot_disable +EXPORT_SYMBOL vmlinux 0x00efde80 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x00fc6949 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0105b5ae arch_dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x010fdcc7 simple_link +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011d78de get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x0131bbcb seq_file_path +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x01440589 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x014bd659 get_phy_device +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0175d904 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x01cfc6fe tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x01d2a56f inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x01eaa30a security_task_getsecid +EXPORT_SYMBOL vmlinux 0x02064134 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0228fd75 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x02316c34 seq_release_private +EXPORT_SYMBOL vmlinux 0x0234bb59 param_set_ulong +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023a0b68 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x023a2f25 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x02521c19 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x025ae7e0 key_unlink +EXPORT_SYMBOL vmlinux 0x025af1c0 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274bf30 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02870604 inc_nlink +EXPORT_SYMBOL vmlinux 0x02889662 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a75652 i2c_release_client +EXPORT_SYMBOL vmlinux 0x02be8cf1 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x02d7ebe1 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x02d86355 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x02daf356 sk_filter +EXPORT_SYMBOL vmlinux 0x02dc6853 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x02e15c1e netdev_emerg +EXPORT_SYMBOL vmlinux 0x02e19317 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x02e77fe6 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f7886c generic_file_llseek +EXPORT_SYMBOL vmlinux 0x02f9ba2b netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x0300c4a6 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x032a7074 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x032bd7a7 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0358f420 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037427c2 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x03790dc8 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03918ddc input_inject_event +EXPORT_SYMBOL vmlinux 0x03a2e8c3 security_path_chmod +EXPORT_SYMBOL vmlinux 0x03a5cf89 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x03c3ba62 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x03d45d83 phy_device_remove +EXPORT_SYMBOL vmlinux 0x03e6d75f cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04028158 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x041b48f9 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0424ada1 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x042a7c05 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x043c72d1 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x0445299e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044a32fb netdev_features_change +EXPORT_SYMBOL vmlinux 0x046a0471 netif_napi_del +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x049a045a input_allocate_device +EXPORT_SYMBOL vmlinux 0x04b14da6 generic_listxattr +EXPORT_SYMBOL vmlinux 0x04b9ae3f d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x0504c72d input_open_device +EXPORT_SYMBOL vmlinux 0x05051c19 dm_register_target +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051ead57 arp_xmit +EXPORT_SYMBOL vmlinux 0x05239140 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0526f810 vfs_create +EXPORT_SYMBOL vmlinux 0x053302df con_is_bound +EXPORT_SYMBOL vmlinux 0x053d93e0 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x054936bb nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x055b9173 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x05668ac3 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x05672585 bio_split +EXPORT_SYMBOL vmlinux 0x05816c21 inet6_release +EXPORT_SYMBOL vmlinux 0x058e118d input_unregister_device +EXPORT_SYMBOL vmlinux 0x05b5dc0c genphy_config_init +EXPORT_SYMBOL vmlinux 0x05bc8f1c blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x05c64d61 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x05e55f84 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x05e80deb page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x05f4af48 phy_find_first +EXPORT_SYMBOL vmlinux 0x06037c43 freeze_super +EXPORT_SYMBOL vmlinux 0x0609f13d md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x061205cb dst_alloc +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062eb56b security_path_unlink +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064f1757 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x0654909e ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x065a8b51 md_check_recovery +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0676aeb8 d_invalidate +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0688f931 km_policy_expired +EXPORT_SYMBOL vmlinux 0x068b3c3a blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06920607 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x0696ac88 revalidate_disk +EXPORT_SYMBOL vmlinux 0x06a3763b blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c6c04d set_trace_device +EXPORT_SYMBOL vmlinux 0x06e309c9 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070235ed input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x0702a96e crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x071e62cc request_key_async +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x0776be51 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x07842068 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x078822e4 gen_pool_create +EXPORT_SYMBOL vmlinux 0x07968d21 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x07a1c185 ihold +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a67252 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bab75d max8998_update_reg +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07e63ad5 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x08114674 loop_backing_file +EXPORT_SYMBOL vmlinux 0x081dc355 tty_port_open +EXPORT_SYMBOL vmlinux 0x0828ccf3 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0845824f tc_classify +EXPORT_SYMBOL vmlinux 0x085141a3 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x08593e3f prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x086f5b43 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x089e895f nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x08a6596c uart_add_one_port +EXPORT_SYMBOL vmlinux 0x08d294b1 dquot_alloc +EXPORT_SYMBOL vmlinux 0x08d29e7b iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x08e647a5 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f28a9f ip_getsockopt +EXPORT_SYMBOL vmlinux 0x0916e03c security_inode_permission +EXPORT_SYMBOL vmlinux 0x092d3059 fsync_bdev +EXPORT_SYMBOL vmlinux 0x092e2d15 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x0930190a acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x09477376 dst_release +EXPORT_SYMBOL vmlinux 0x0955a0f6 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a9374f security_mmap_file +EXPORT_SYMBOL vmlinux 0x09af9713 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09ef58c4 simple_rename +EXPORT_SYMBOL vmlinux 0x09fb7e1b tcp_seq_open +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a308d10 filp_close +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a36094f inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a42e26d start_tty +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49fd3b path_noexec +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a82ceb0 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x0a931b69 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x0a958aaf input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x0a9c9bc6 seq_putc +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa6c5f4 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x0ac3200c agp_put_bridge +EXPORT_SYMBOL vmlinux 0x0ace5763 bio_map_kern +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad529c6 wake_up_process +EXPORT_SYMBOL vmlinux 0x0af65a00 md_update_sb +EXPORT_SYMBOL vmlinux 0x0afa9622 blk_free_tags +EXPORT_SYMBOL vmlinux 0x0afda905 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b10225a key_reject_and_link +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1d5541 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x0b3cd69d blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0b3e22a8 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5acae7 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b6b7fa3 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b77554d skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x0b820775 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x0b8abecb simple_fill_super +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0bac2161 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd5243b cdrom_check_events +EXPORT_SYMBOL vmlinux 0x0bdd76e1 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x0bf1517e param_ops_ulong +EXPORT_SYMBOL vmlinux 0x0bf498ca parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x0c3fa762 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c69c353 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0c6b7154 mmc_erase +EXPORT_SYMBOL vmlinux 0x0c88b85f register_netdev +EXPORT_SYMBOL vmlinux 0x0c98c50a copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce5d52e __scm_destroy +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d144744 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x0d3211b7 path_is_under +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d42828b nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d51da4b eth_header_cache +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d58ea60 xattr_full_name +EXPORT_SYMBOL vmlinux 0x0d5d94c4 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da1e4de sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x0db2a811 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0ddcca13 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x0de072f2 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x0deb5200 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x0e0229b9 misc_register +EXPORT_SYMBOL vmlinux 0x0e0fcf0f cdev_del +EXPORT_SYMBOL vmlinux 0x0e2a3040 tcp_connect +EXPORT_SYMBOL vmlinux 0x0e51338e skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x0e54946f tty_port_close_start +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e72c003 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x0e84a390 tty_kref_put +EXPORT_SYMBOL vmlinux 0x0e8a67fb nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0ea55cfb simple_getattr +EXPORT_SYMBOL vmlinux 0x0ea61313 scsi_print_command +EXPORT_SYMBOL vmlinux 0x0ead2584 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb29271 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x0ec50150 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0eca7347 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0ed5acb2 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x0ee10ce1 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f06102d jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x0f0914dd set_user_nice +EXPORT_SYMBOL vmlinux 0x0f2318b1 tty_unlock +EXPORT_SYMBOL vmlinux 0x0f245845 vme_dma_request +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f597387 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x0f5cba3a xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f783959 simple_write_end +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f8329da __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x0f89546a simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbcb035 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fe87297 inet_put_port +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1002798b locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1008e8ad dev_disable_lro +EXPORT_SYMBOL vmlinux 0x10123e12 request_firmware +EXPORT_SYMBOL vmlinux 0x1019b325 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x102b32dd vme_register_driver +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103a6690 __frontswap_store +EXPORT_SYMBOL vmlinux 0x10454cf5 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x105f78ab ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10a0542a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x10a2534c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x10c9a22e scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x10d21247 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x10d80154 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x10df26bc xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x10e5ac47 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11129bd1 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x111e5371 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x1124bab1 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x11269db8 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x112f9dd7 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x113a853f mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x115453e3 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1166b5a2 add_disk +EXPORT_SYMBOL vmlinux 0x11706de1 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1177f558 vme_master_request +EXPORT_SYMBOL vmlinux 0x1193a98e make_kgid +EXPORT_SYMBOL vmlinux 0x119bac6d sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b9342d blkdev_get +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12163185 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x121b4e4b memremap +EXPORT_SYMBOL vmlinux 0x1229ac61 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x1247fe17 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x124a078f phy_init_hw +EXPORT_SYMBOL vmlinux 0x124c8657 phy_resume +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x1255777d padata_free +EXPORT_SYMBOL vmlinux 0x1276c666 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x128f0ea0 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x12a1dfa3 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c0b5e2 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f6290a blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x12fa7df8 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x13003e0a kmap_atomic +EXPORT_SYMBOL vmlinux 0x130a28be nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x13149589 generic_make_request +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132edcc6 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1338d617 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x13621d7b d_tmpfile +EXPORT_SYMBOL vmlinux 0x1378e3d3 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x139444d7 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x13bb2969 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x13cf2d25 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d820b9 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f5df77 mpage_readpage +EXPORT_SYMBOL vmlinux 0x140ad8cd scsi_unregister +EXPORT_SYMBOL vmlinux 0x1412444a dev_set_mtu +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x144b4db6 napi_complete_done +EXPORT_SYMBOL vmlinux 0x1451fccd dcache_readdir +EXPORT_SYMBOL vmlinux 0x145602fe kill_litter_super +EXPORT_SYMBOL vmlinux 0x14593bc0 cdev_add +EXPORT_SYMBOL vmlinux 0x1475f222 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x14844d15 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x148a66b4 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x14c45438 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14f29344 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151ab826 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x1528e2c1 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1554daaf uart_match_port +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x15799c11 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x1584e0f8 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x1599493f d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x15a977eb jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15e9d53a register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x161d9318 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1652178e pci_clear_master +EXPORT_SYMBOL vmlinux 0x16580996 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x166d0115 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x1675c766 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16b01c4f __inet_hash +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1723e595 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x172f0eed sock_recvmsg +EXPORT_SYMBOL vmlinux 0x17354329 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x174787ed unregister_key_type +EXPORT_SYMBOL vmlinux 0x176302b1 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x178e6a57 param_set_charp +EXPORT_SYMBOL vmlinux 0x179651ac _raw_read_lock +EXPORT_SYMBOL vmlinux 0x179fca3b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x17a2308d forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17be5e8a unlock_new_inode +EXPORT_SYMBOL vmlinux 0x17c147dc blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x17d2c371 input_register_handler +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x181ba5b1 file_ns_capable +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18435194 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x184590b1 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1870fe80 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x18984d66 dev_change_flags +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a54cf6 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x18aea803 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18e48f09 nvm_register_target +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18f61931 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19182b5b __ht_create_irq +EXPORT_SYMBOL vmlinux 0x193bfcaf current_fs_time +EXPORT_SYMBOL vmlinux 0x1948314e neigh_lookup +EXPORT_SYMBOL vmlinux 0x195b9a92 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x1986f7ff xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19adca85 generic_write_checks +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba372f cfb_imageblit +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ce0fad bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x19d67c6c vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x19e1b7ec sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x19f5747f udp_seq_open +EXPORT_SYMBOL vmlinux 0x19f635b2 nvm_put_blk +EXPORT_SYMBOL vmlinux 0x1a04682e mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x1a07b48e pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x1a1952ce proto_register +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a7aca76 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x1a8606fd netdev_notice +EXPORT_SYMBOL vmlinux 0x1a910c9a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x1aafb207 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x1ac92ec4 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x1ad53922 inet_add_offload +EXPORT_SYMBOL vmlinux 0x1ad94779 register_quota_format +EXPORT_SYMBOL vmlinux 0x1ade27aa ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x1ae09f75 _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x1aec8711 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x1af5c9ed jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b028c35 __scm_send +EXPORT_SYMBOL vmlinux 0x1b1cebb7 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b28599b genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x1b4513c8 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x1b54e554 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b5adaf2 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x1b600567 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d5f4d blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x1b7b5082 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bab56f0 pci_release_region +EXPORT_SYMBOL vmlinux 0x1bb1a5e5 set_create_files_as +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb565ae sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x1bb73ce1 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1be5fc32 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x1bf35789 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x1bf5b33a lease_modify +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c2f9035 do_splice_from +EXPORT_SYMBOL vmlinux 0x1c3af38c nf_afinfo +EXPORT_SYMBOL vmlinux 0x1c6d46f2 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x1c732ea6 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1c87befc dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c91df73 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x1ce7170c scmd_printk +EXPORT_SYMBOL vmlinux 0x1cf1f79a x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x1cfe276a kern_path +EXPORT_SYMBOL vmlinux 0x1d027fe7 dqput +EXPORT_SYMBOL vmlinux 0x1d05966f kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x1d0c1541 i2c_master_send +EXPORT_SYMBOL vmlinux 0x1d1e43a5 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x1d1ff422 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x1d447577 d_drop +EXPORT_SYMBOL vmlinux 0x1d7d0421 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1d82d4da inet_select_addr +EXPORT_SYMBOL vmlinux 0x1d8edd93 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x1db0a836 pci_bus_get +EXPORT_SYMBOL vmlinux 0x1db7a654 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd4db26 to_ndd +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddde303 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1dfe21b2 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e1547ca __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e28970e netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x1e41b7f3 device_get_mac_address +EXPORT_SYMBOL vmlinux 0x1e43250a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e861943 tso_start +EXPORT_SYMBOL vmlinux 0x1e98da7f vme_irq_handler +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea3f6fe truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebc3055 module_put +EXPORT_SYMBOL vmlinux 0x1ec2a3a0 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ee09a4e tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1ef4a12e rtnl_unicast +EXPORT_SYMBOL vmlinux 0x1eff3008 downgrade_write +EXPORT_SYMBOL vmlinux 0x1f30b7a8 tty_register_driver +EXPORT_SYMBOL vmlinux 0x1f34c501 backlight_force_update +EXPORT_SYMBOL vmlinux 0x1f365b74 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x1f39d374 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x1f6e0252 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x1f7c9a29 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9bdc87 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x1fb26c07 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd1629b d_prune_aliases +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1febda21 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x1fed605a twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff47d96 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200b55bb security_path_symlink +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x2028ff40 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x202944af blk_get_queue +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x2037af5f simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x203fa3fa to_nd_btt +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207dcee0 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20878840 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ae58d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20da0269 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e7dbdb pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x20e877df lwtunnel_output +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x210ca73e qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x2112c0c2 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x212c0698 tcp_check_req +EXPORT_SYMBOL vmlinux 0x2131d39e blk_init_queue +EXPORT_SYMBOL vmlinux 0x213dd07b skb_put +EXPORT_SYMBOL vmlinux 0x2147b669 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x219e8ac2 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21bf3d94 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x21c5bef4 pnp_find_card +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e4f227 write_cache_pages +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x221b290a pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x222672c2 nobh_writepage +EXPORT_SYMBOL vmlinux 0x222b085b bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x2251d1ec bio_chain +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225b031d mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x22634998 dquot_release +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226c6618 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x226ceed8 setattr_copy +EXPORT_SYMBOL vmlinux 0x227327b7 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x2275508b scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22795a58 nf_log_trace +EXPORT_SYMBOL vmlinux 0x227d6e29 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x22959594 component_match_add +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22e80e70 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2326853e agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2337fb31 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x233cd4c6 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x23601199 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x2366d8c7 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x23695691 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x2394567e sync_inode +EXPORT_SYMBOL vmlinux 0x239fb753 napi_disable +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bfbfd9 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23d638be phy_attach +EXPORT_SYMBOL vmlinux 0x23e16880 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x23edfd2a cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24537bb7 cpu_tss +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245e828d __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x2461fdc7 neigh_destroy +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24884e8b km_new_mapping +EXPORT_SYMBOL vmlinux 0x249d4aff __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x24d2209d put_filp +EXPORT_SYMBOL vmlinux 0x24d7ab7f mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x24fc26d4 udp_proc_register +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250a2d1e remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x250c692f uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x250e68c4 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2512c6cb skb_split +EXPORT_SYMBOL vmlinux 0x251615c9 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2564cacf generic_update_time +EXPORT_SYMBOL vmlinux 0x256bf8c7 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x256e4dc7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25b8b509 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x25d9411e swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9a20c pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ee90af sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x26057250 mount_pseudo +EXPORT_SYMBOL vmlinux 0x2635613b free_buffer_head +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26c425b9 dquot_file_open +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f40d5d nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x2716c9f4 finish_open +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272be95f inet_release +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2762cbca bdevname +EXPORT_SYMBOL vmlinux 0x276a42d1 input_close_device +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x278e48f2 fb_find_mode +EXPORT_SYMBOL vmlinux 0x27908c7f alloc_disk +EXPORT_SYMBOL vmlinux 0x279fca6f devm_ioport_map +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c4839d xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x27ea627d sk_mc_loop +EXPORT_SYMBOL vmlinux 0x27fd851e tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x28024da5 netdev_state_change +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2822f3cb check_disk_change +EXPORT_SYMBOL vmlinux 0x28280973 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x2828cacc register_md_personality +EXPORT_SYMBOL vmlinux 0x283a88c8 thaw_super +EXPORT_SYMBOL vmlinux 0x285033d2 __invalidate_device +EXPORT_SYMBOL vmlinux 0x28696a30 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2876984e generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x287d389d phy_attach_direct +EXPORT_SYMBOL vmlinux 0x2889bcde vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x28a0cca9 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28e2f0fc __bforget +EXPORT_SYMBOL vmlinux 0x28f02e3a pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x28f89576 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x2907fc5c rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x29128279 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x29179e9d __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2925c4ed pci_request_region +EXPORT_SYMBOL vmlinux 0x2927eec1 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x292abbd6 kernel_accept +EXPORT_SYMBOL vmlinux 0x2943966d fb_validate_mode +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2953f695 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x2969ee7c km_state_notify +EXPORT_SYMBOL vmlinux 0x29d52481 serio_bus +EXPORT_SYMBOL vmlinux 0x29dad512 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x29de6c38 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x29e54f1a abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a224adc blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x2a23fe90 d_lookup +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3eabe2 install_exec_creds +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a7a31d4 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2a85315d debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x2a8717d2 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x2a9d781b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac5b7c0 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x2acd5dd6 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae74e16 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x2aef9c9c xfrm_register_km +EXPORT_SYMBOL vmlinux 0x2b05852c skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0ef9fc blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b302322 __getblk_slow +EXPORT_SYMBOL vmlinux 0x2b554fc0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x2b61d973 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x2b7893be netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x2b892f45 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2b941c6c __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x2b9cefb4 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba4d5db get_disk +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2baca4f5 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bbb9b3e single_open_size +EXPORT_SYMBOL vmlinux 0x2bdd0f94 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x2be17fad bdi_register_dev +EXPORT_SYMBOL vmlinux 0x2be54647 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c21d090 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2935d5 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x2c465afb __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x2c54d703 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2caf6f0b input_release_device +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cd458ec jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x2cda0bd4 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x2cf020cc blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x2cf72046 generic_setxattr +EXPORT_SYMBOL vmlinux 0x2cfe6c65 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2d10d624 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d22cea6 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x2d27a408 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x2d2d59d0 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d30cc95 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x2d3207ca md_flush_request +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d474207 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x2d657214 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x2d91a9ba ppp_input +EXPORT_SYMBOL vmlinux 0x2d93f534 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2d9e3cfd dcb_getapp +EXPORT_SYMBOL vmlinux 0x2d9ebb5c simple_transaction_release +EXPORT_SYMBOL vmlinux 0x2dbad537 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x2dbf76c7 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x2dcb4f86 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd3ce42 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2ddce69a sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x2ddf1a0c dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e0f5f34 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2dc3aa __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x2e390287 udplite_prot +EXPORT_SYMBOL vmlinux 0x2e73a53c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x2e748aa6 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x2e7623b7 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x2e911118 dquot_acquire +EXPORT_SYMBOL vmlinux 0x2e98f91e tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x2ea50d7e padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2eb4fa04 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x2ebd678d blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed54d9e agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x2eecc0be ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2ef6d6a3 mpage_writepage +EXPORT_SYMBOL vmlinux 0x2ef8866b atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f16de91 init_buffer +EXPORT_SYMBOL vmlinux 0x2f1c7346 module_refcount +EXPORT_SYMBOL vmlinux 0x2f2c3c4f nf_reinject +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f604d86 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fdda0ca scsi_remove_host +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe3b920 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x2ff2ea14 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x2ff3348c fb_show_logo +EXPORT_SYMBOL vmlinux 0x30123849 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3035a0a9 dev_mc_del +EXPORT_SYMBOL vmlinux 0x305a8456 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x305b657c udp6_set_csum +EXPORT_SYMBOL vmlinux 0x3077ee74 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308339f4 generic_perform_write +EXPORT_SYMBOL vmlinux 0x308dfe56 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x30923122 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x3092a069 register_filesystem +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30afb168 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30c3d516 lockref_put_return +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30eb1d01 skb_unlink +EXPORT_SYMBOL vmlinux 0x30f688a7 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x30f6c6a4 migrate_page +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310cc6ab iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x31218dd8 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31506f82 read_dev_sector +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3180c34a down_read_trylock +EXPORT_SYMBOL vmlinux 0x3181c556 devm_release_resource +EXPORT_SYMBOL vmlinux 0x31821abf bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319f0ebb generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x31bd5b53 skb_push +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ec44a0 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f4f2be set_pages_x +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x320ccca0 page_readlink +EXPORT_SYMBOL vmlinux 0x3213b167 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x32449f03 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x32478d7b dev_crit +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x3255b2f1 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x3259f272 inet_sendpage +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32643db9 input_register_device +EXPORT_SYMBOL vmlinux 0x3283beae xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x329924af udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x32b065f8 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x32b5fa2f mem_section +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32ec29a2 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x32ee5815 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x3314b0c9 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x331b5d98 revert_creds +EXPORT_SYMBOL vmlinux 0x33512965 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x3363de40 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x33800b0b tcp_disconnect +EXPORT_SYMBOL vmlinux 0x3380444a ata_port_printk +EXPORT_SYMBOL vmlinux 0x33881c71 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x33951158 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x33c1aaf2 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f07305 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f1e82c eth_type_trans +EXPORT_SYMBOL vmlinux 0x33fd1089 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34757832 file_remove_privs +EXPORT_SYMBOL vmlinux 0x347ccf62 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x3480fd66 skb_pull +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a0f002 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x34a735c0 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x34b35f2e crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x34dbe696 kthread_stop +EXPORT_SYMBOL vmlinux 0x34ec1059 __genl_register_family +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fdf4f9 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x35107160 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35792957 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x358a8403 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x358c3984 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x358e2457 proc_mkdir +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35a93ce0 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x35acc4a7 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x35c5969d pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x35ea5bbd scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x35f3aca2 mmc_add_host +EXPORT_SYMBOL vmlinux 0x35f47002 phy_device_free +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612da01 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x363e6624 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x36506481 noop_qdisc +EXPORT_SYMBOL vmlinux 0x3662f59f __napi_schedule +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36826ddc dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x368ed588 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x36914c2a xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x369d1519 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36cf1192 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x36e98c4b blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x36eb72d2 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x36ef50a8 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37036e3a jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x371ebc7b bdi_destroy +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x375bf1ca padata_start +EXPORT_SYMBOL vmlinux 0x375c2773 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x37627c10 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x37980f74 kernel_connect +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37a3039a ps2_init +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d68d67 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e326e5 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x380eec9e ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x381f0be0 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x3834ef67 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x38370a00 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x386e0267 inet_accept +EXPORT_SYMBOL vmlinux 0x387417b1 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x38839517 neigh_update +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388b6d39 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x38a39cf9 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38dd3342 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3902cf50 simple_readpage +EXPORT_SYMBOL vmlinux 0x3903568e jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x3912d2be sock_i_ino +EXPORT_SYMBOL vmlinux 0x391715af udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x391e3edd nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x394236ab invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3970f9f1 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x39768aaf single_open +EXPORT_SYMBOL vmlinux 0x3993ce5f dev_driver_string +EXPORT_SYMBOL vmlinux 0x39981973 vme_bus_type +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399a01cd set_blocksize +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a67bea d_find_alias +EXPORT_SYMBOL vmlinux 0x39ab79d0 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39da6742 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x39eda405 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a48030d jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x3a54f184 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3a59aa42 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x3a6480c0 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x3a6f7db5 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x3a7b291c mfd_add_devices +EXPORT_SYMBOL vmlinux 0x3a7f8315 vc_cons +EXPORT_SYMBOL vmlinux 0x3a88acbc rfkill_alloc +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa49be9 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3ac631f7 sock_no_connect +EXPORT_SYMBOL vmlinux 0x3ac94f67 inet_frags_init +EXPORT_SYMBOL vmlinux 0x3ad5e00b fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x3b034bd4 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x3b159e5c __destroy_inode +EXPORT_SYMBOL vmlinux 0x3b18d779 vme_lm_request +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b280058 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x3b2a30fc pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x3b302456 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b82fa5b mmc_can_erase +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bccfdb0 nf_log_set +EXPORT_SYMBOL vmlinux 0x3bd92ac9 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x3bdb0273 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x3bf75720 security_path_rename +EXPORT_SYMBOL vmlinux 0x3bfc8ef2 __dax_fault +EXPORT_SYMBOL vmlinux 0x3bfcef99 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x3c03b452 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x3c0b548d pci_fixup_device +EXPORT_SYMBOL vmlinux 0x3c1e2f4b mapping_tagged +EXPORT_SYMBOL vmlinux 0x3c275058 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x3c2e774c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x3c3c676e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c49976e sk_receive_skb +EXPORT_SYMBOL vmlinux 0x3c6d8ad3 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x3c70858f phy_connect_direct +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c97bf3a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc81183 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfbde89 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x3d1391e2 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x3d3a65e3 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x3d3c6448 put_disk +EXPORT_SYMBOL vmlinux 0x3d628848 seq_open_private +EXPORT_SYMBOL vmlinux 0x3d650c2e pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d8b74c1 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x3d8f5c12 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3db14552 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x3dba9107 sock_no_accept +EXPORT_SYMBOL vmlinux 0x3dc5a057 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dccfbd5 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x3de035e6 sk_alloc +EXPORT_SYMBOL vmlinux 0x3df1aaca __devm_request_region +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e408310 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x3e654f49 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x3e718a5e swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x3e733fe2 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x3e7dd76e param_get_bool +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8be764 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e99f622 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x3ea4c1b9 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3eab6c43 poll_freewait +EXPORT_SYMBOL vmlinux 0x3ed1862a skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x3ed56ca5 dev_uc_init +EXPORT_SYMBOL vmlinux 0x3ee60591 __napi_complete +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3effbc29 nd_device_register +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f16ff2c led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x3f190479 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x3f1f7d04 param_ops_bool +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f27099b from_kgid_munged +EXPORT_SYMBOL vmlinux 0x3f2af3da devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f86ceb7 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x3f870a37 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x3f91ffcb abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x3fbcfd22 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x3fc0a548 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x3fd84a80 account_page_redirty +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fecb390 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x4008420e ps2_drain +EXPORT_SYMBOL vmlinux 0x401ac53c __inode_permission +EXPORT_SYMBOL vmlinux 0x4022de34 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403c64c8 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x4056b48c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4075e422 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x4095907b __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c4e3c1 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40c8ec68 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x40ca8b8f devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40e140a1 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x40feba5d skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x4138efe3 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414e52d0 audit_log +EXPORT_SYMBOL vmlinux 0x4151a71d led_update_brightness +EXPORT_SYMBOL vmlinux 0x415f815e __get_user_pages +EXPORT_SYMBOL vmlinux 0x4161f3c3 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x417250e5 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x41854957 sock_register +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x418e27d0 from_kgid +EXPORT_SYMBOL vmlinux 0x41923ac1 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x4197e20b km_policy_notify +EXPORT_SYMBOL vmlinux 0x41a1c269 from_kuid +EXPORT_SYMBOL vmlinux 0x41d3bed3 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x41d9d39d cdev_alloc +EXPORT_SYMBOL vmlinux 0x41e3a8bd vga_con +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4235969a __sb_start_write +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x425875cc xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426ec114 udp_set_csum +EXPORT_SYMBOL vmlinux 0x42787fda param_set_short +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b00375 phy_detach +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42de25c3 datagram_poll +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4327b264 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43595796 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x436b1baa simple_empty +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4388f3cd uart_suspend_port +EXPORT_SYMBOL vmlinux 0x4398fbf9 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x43b31736 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x43cbf33c devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x43d79d78 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x43e3a82c dma_common_mmap +EXPORT_SYMBOL vmlinux 0x43e3bda5 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f395c9 param_get_int +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x442eb3cb vme_irq_generate +EXPORT_SYMBOL vmlinux 0x443127b3 ata_print_version +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44370963 __frontswap_load +EXPORT_SYMBOL vmlinux 0x4437827c mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x443dee51 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x44424829 seq_lseek +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44532b44 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x445e240f pci_scan_slot +EXPORT_SYMBOL vmlinux 0x446759f6 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x446c4007 devm_clk_get +EXPORT_SYMBOL vmlinux 0x447b3bb3 vfs_llseek +EXPORT_SYMBOL vmlinux 0x448221f4 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x448707ec bioset_free +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x449718f8 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c14aea dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x44d11c10 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x44d4e2cd skb_checksum +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f37759 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x44f785a1 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450c52cf sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x4522d8b6 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x45345b6f inode_add_bytes +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45411b34 amd_northbridges +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45993c27 ipv4_specific +EXPORT_SYMBOL vmlinux 0x459add45 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45a9f539 __vfs_write +EXPORT_SYMBOL vmlinux 0x45ab3837 agp_create_memory +EXPORT_SYMBOL vmlinux 0x45d3a4d1 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x45d9a4e2 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x45dad287 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x45ea6237 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x45f1a262 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x46044cf7 inet_bind +EXPORT_SYMBOL vmlinux 0x46276656 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462d2b3b mount_nodev +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x4669c9d3 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468355fe elevator_exit +EXPORT_SYMBOL vmlinux 0x468e6a6f posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x469fa301 skb_store_bits +EXPORT_SYMBOL vmlinux 0x46b9a4fb __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x46bf905f vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x46c79ec6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x46d48b4c pci_select_bars +EXPORT_SYMBOL vmlinux 0x46d74abf ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x46df085f tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x46e37d8d block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x46f5c116 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470a9e95 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x471e5aa4 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x47378595 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x4739f823 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x473b7f34 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x47685582 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x47692d57 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x477a8366 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47cb373c set_binfmt +EXPORT_SYMBOL vmlinux 0x47d05471 vmap +EXPORT_SYMBOL vmlinux 0x47db8935 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x47e613a8 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x4819b655 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x482e7ae8 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487924dd dquot_resume +EXPORT_SYMBOL vmlinux 0x488683a4 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x48aba978 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x48ada5d7 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bf826e key_task_permission +EXPORT_SYMBOL vmlinux 0x48c40693 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x48fa126f blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49061dc3 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x492339f3 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x49490b6e scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x494abb6d is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x494be002 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49622c70 __lock_buffer +EXPORT_SYMBOL vmlinux 0x496900e2 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x496a28f3 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x496a50b6 release_firmware +EXPORT_SYMBOL vmlinux 0x496d4bdf elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x4979b9d3 __find_get_block +EXPORT_SYMBOL vmlinux 0x497d1fd9 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x497fa5c0 mutex_unlock +EXPORT_SYMBOL vmlinux 0x498c80a4 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x49a5030d kernel_listen +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49bf9113 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x49e8ba92 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a18421e scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x4a2bc6c7 netlink_set_err +EXPORT_SYMBOL vmlinux 0x4a2eb3bc pci_disable_msix +EXPORT_SYMBOL vmlinux 0x4a35689b pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x4a39a181 simple_release_fs +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a65ba9b acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x4a908045 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x4a958714 scsi_register +EXPORT_SYMBOL vmlinux 0x4a9eda97 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac92305 blk_start_queue +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afb1ea4 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1231c4 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x4b1a93f6 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x4b1ca3d9 load_nls_default +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2aca3b fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x4b363ada sock_rfree +EXPORT_SYMBOL vmlinux 0x4b3b54fb pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b67ec69 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x4b6d9b24 param_ops_uint +EXPORT_SYMBOL vmlinux 0x4b77726b nf_setsockopt +EXPORT_SYMBOL vmlinux 0x4b7bcd70 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbc79e8 register_framebuffer +EXPORT_SYMBOL vmlinux 0x4bbf0a0b jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x4bbf96b2 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3d8065 serio_close +EXPORT_SYMBOL vmlinux 0x4c434ff8 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x4c667f5c netif_device_attach +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c8c75c6 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x4c8d99d4 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x4c90ccc8 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cea8302 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x4ced87d0 sock_no_poll +EXPORT_SYMBOL vmlinux 0x4cfedbd9 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x4d04e69f dump_align +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d7f4413 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x4d93ee76 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da143a3 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x4dbf6618 free_netdev +EXPORT_SYMBOL vmlinux 0x4dca5319 scsi_device_put +EXPORT_SYMBOL vmlinux 0x4ddd7089 netdev_info +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df1a42c xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4e049111 dm_io +EXPORT_SYMBOL vmlinux 0x4e1c355f simple_dir_operations +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3cc7fd dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x4e3f89aa vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x4e438d78 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6d9511 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7b5061 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x4e7dfb71 cdrom_release +EXPORT_SYMBOL vmlinux 0x4e814d25 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4e87a9a0 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4e8def69 tty_port_close +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ee40fef netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x4ee45e64 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x4efe1c96 param_get_string +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1e1eac skb_tx_error +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2af6b9 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3ea0dd vfs_rename +EXPORT_SYMBOL vmlinux 0x4f41bf4e lease_get_mtime +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f57c9ec fd_install +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f6465c4 unlock_buffer +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f849292 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f926c3c inode_set_flags +EXPORT_SYMBOL vmlinux 0x4f984882 passthru_features_check +EXPORT_SYMBOL vmlinux 0x4fd57fad tcp_read_sock +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4feedc6f __kfree_skb +EXPORT_SYMBOL vmlinux 0x4ffa15e5 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50208b3b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x504bfd4c unlock_rename +EXPORT_SYMBOL vmlinux 0x504e9576 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x50635aa8 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50bf3cf7 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x50bfa491 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x5103189e pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x510863f0 user_path_create +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511cb8c4 bio_endio +EXPORT_SYMBOL vmlinux 0x515fba83 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x51683b8f user_path_at_empty +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x5186ead5 phy_disconnect +EXPORT_SYMBOL vmlinux 0x51988152 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x51a3d99a dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x5218f7de register_console +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52224c0c qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x523e3d91 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52638a1e mmc_request_done +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d1477 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b05460 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x52e7293a con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x52eb5ed6 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x52ee511c ns_capable +EXPORT_SYMBOL vmlinux 0x52f269a8 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x5324461c jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x532c566f inode_needs_sync +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x538d4549 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x539a7ed6 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53af9a47 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x53bf8aae module_layout +EXPORT_SYMBOL vmlinux 0x53e07fd2 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x54003ec3 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x5408d8e5 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x541b97ca set_device_ro +EXPORT_SYMBOL vmlinux 0x542e7c08 pci_enable_device +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54440aee md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x54490ea8 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x544b4980 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x545aa9b9 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x54622900 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x548ecb35 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5491aeff inet6_offloads +EXPORT_SYMBOL vmlinux 0x549432c1 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x54a58723 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b27555 md_integrity_register +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x5500ccb5 inet6_bind +EXPORT_SYMBOL vmlinux 0x5517262c kern_unmount +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55592f47 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x55624c81 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x557db130 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x558282db scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x5595da7a security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x55aad100 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x55b87f6e sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x55bc698f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x55bf299e pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e58120 input_reset_device +EXPORT_SYMBOL vmlinux 0x55f3b9d1 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x5611493b tcp_proc_register +EXPORT_SYMBOL vmlinux 0x56265909 input_flush_device +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x563b7e62 scsi_execute +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x565f41a1 dev_mc_add +EXPORT_SYMBOL vmlinux 0x5670dcb7 mdiobus_free +EXPORT_SYMBOL vmlinux 0x5672d83e nd_device_unregister +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x568520da generic_getxattr +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x568f758f xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x5691f0a5 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x569f6f30 mmc_start_req +EXPORT_SYMBOL vmlinux 0x56b0403c __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x56b852db md_unregister_thread +EXPORT_SYMBOL vmlinux 0x56bb793b vm_map_ram +EXPORT_SYMBOL vmlinux 0x56c582ed request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x56c71c98 mutex_lock +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cc9b67 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x56dfc787 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x56e4fe21 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x56f8f408 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x56fd1406 param_set_long +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x570e3b85 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x571345ed cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x572a01f0 softnet_data +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57334100 tty_port_put +EXPORT_SYMBOL vmlinux 0x574b726e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574f02ca max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x5755feb4 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x575f8906 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5782bdb8 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x579879a5 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57ae45aa touch_buffer +EXPORT_SYMBOL vmlinux 0x57af3f8f skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57bca0f0 genphy_suspend +EXPORT_SYMBOL vmlinux 0x57bef849 pci_release_regions +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x57c6a6d5 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x57dbd20d pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x57ea3037 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x57f500c0 arp_tbl +EXPORT_SYMBOL vmlinux 0x57f70f64 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x5804bbd2 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x581e593f generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5840df90 dev_warn +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x586e7986 copy_from_iter +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58b39978 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e6db9c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x58ec6939 km_query +EXPORT_SYMBOL vmlinux 0x58edc6ff dst_destroy +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x591e781b simple_nosetlease +EXPORT_SYMBOL vmlinux 0x592a8550 iterate_fd +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59629b89 dev_err +EXPORT_SYMBOL vmlinux 0x59689027 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x596e401c replace_mount_options +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59a8b530 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a112b3d try_to_release_page +EXPORT_SYMBOL vmlinux 0x5a13ea99 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x5a1bb05a set_bh_page +EXPORT_SYMBOL vmlinux 0x5a1eb72c lro_flush_all +EXPORT_SYMBOL vmlinux 0x5a26ba25 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x5a40dcb6 find_get_entry +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a54ba69 eisa_bus_type +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ac3958c ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5ac87da2 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b0d754d blkdev_put +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b3286c8 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5b5e2493 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x5b796d3f sock_no_mmap +EXPORT_SYMBOL vmlinux 0x5bc821e0 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bee6dcf blk_end_request_all +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c1df32f update_region +EXPORT_SYMBOL vmlinux 0x5c30b654 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x5c4050fb scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c55d94b devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x5c745ba5 dentry_unhash +EXPORT_SYMBOL vmlinux 0x5c7845b8 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x5c7cfbb0 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x5c903d3a kill_pid +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5ce358a4 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x5ced249f blkdev_fsync +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb0f25 param_ops_short +EXPORT_SYMBOL vmlinux 0x5d3cd1ab vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d59177d udp_poll +EXPORT_SYMBOL vmlinux 0x5d675a74 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x5d70738e blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d9e3da3 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x5daae3ff bio_copy_kern +EXPORT_SYMBOL vmlinux 0x5dc224cb cpu_info +EXPORT_SYMBOL vmlinux 0x5e02d12c twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x5e465459 key_put +EXPORT_SYMBOL vmlinux 0x5e56ad03 sock_create_kern +EXPORT_SYMBOL vmlinux 0x5e6405a7 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x5e855e2a dquot_commit_info +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e911e0f neigh_seq_start +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea1f1b1 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb489e9 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed46a13 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x5ed51d57 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x5ed8fca9 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x5edb0086 may_umount_tree +EXPORT_SYMBOL vmlinux 0x5edf36bb path_get +EXPORT_SYMBOL vmlinux 0x5ef928ed write_inode_now +EXPORT_SYMBOL vmlinux 0x5efbc439 blk_run_queue +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f08e9d5 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f1ed2bd netdev_change_features +EXPORT_SYMBOL vmlinux 0x5f2698e4 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x5f3995f0 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x5f776e4c param_set_byte +EXPORT_SYMBOL vmlinux 0x5fabd67e eth_gro_complete +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdd6989 __sb_end_write +EXPORT_SYMBOL vmlinux 0x5fe54a89 block_write_begin +EXPORT_SYMBOL vmlinux 0x5fe8f779 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600c7f8a netdev_warn +EXPORT_SYMBOL vmlinux 0x600e94a2 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607d7e39 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x608ba494 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a0aa23 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x60a1645f tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60b8d741 import_iovec +EXPORT_SYMBOL vmlinux 0x60c68a62 sock_release +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e0be44 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x60f1da63 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6112fec5 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6144f5a6 vfs_link +EXPORT_SYMBOL vmlinux 0x617eab18 md_done_sync +EXPORT_SYMBOL vmlinux 0x61984db0 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x619c99c9 do_splice_direct +EXPORT_SYMBOL vmlinux 0x61ae7a00 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b59000 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c099b2 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x61d5b726 nf_log_unset +EXPORT_SYMBOL vmlinux 0x61ec15db acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x61f452c1 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621787d0 proc_set_size +EXPORT_SYMBOL vmlinux 0x62197099 param_ops_long +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622da62e dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62747a02 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x6274cf83 set_groups +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628d1254 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x62bdcbc5 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x62f08514 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x62fc2bca dev_get_stats +EXPORT_SYMBOL vmlinux 0x62fc90df param_ops_ushort +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x633b49a4 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x633d8daf generic_setlease +EXPORT_SYMBOL vmlinux 0x633e94f0 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x63721516 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x63723b56 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x639a3adb dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d57a95 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x63d6356a __dquot_transfer +EXPORT_SYMBOL vmlinux 0x63e6d9c4 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63ff2104 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64295f18 __register_chrdev +EXPORT_SYMBOL vmlinux 0x643f53fe seq_release +EXPORT_SYMBOL vmlinux 0x6442f688 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x64460baa isapnp_protocol +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x64837d82 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x6496bd49 skb_seq_read +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64d76c15 agp_free_memory +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64eb6122 mem_map +EXPORT_SYMBOL vmlinux 0x64ebabd1 get_fs_type +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x65041020 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651c7ee0 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x6527a771 dquot_commit +EXPORT_SYMBOL vmlinux 0x65313388 dump_emit +EXPORT_SYMBOL vmlinux 0x653f06db nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654f3ef1 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x65778b74 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x657a6eaa free_page_put_link +EXPORT_SYMBOL vmlinux 0x6582aa5d elv_rb_find +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65b283e2 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x65b5f1e3 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65bf1ae6 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x65d64659 set_page_dirty +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x661d0c31 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x661d1ecd pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66ed4e89 skb_dequeue +EXPORT_SYMBOL vmlinux 0x6714695b vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673d952a pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6742dfeb dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x674672e9 vga_tryget +EXPORT_SYMBOL vmlinux 0x675bf52c inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6790b54d dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x67931746 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b33190 __page_symlink +EXPORT_SYMBOL vmlinux 0x67b43c29 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b829b9 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x67bf2a35 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x67c15e24 param_ops_string +EXPORT_SYMBOL vmlinux 0x67d1aa5e agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x67d2c6f4 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x67e24050 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x67e6c18f dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x67e72d85 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x680861b1 param_get_short +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680dbfa4 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x68124090 pci_dev_get +EXPORT_SYMBOL vmlinux 0x681e9c49 vga_client_register +EXPORT_SYMBOL vmlinux 0x6839ea3b bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6881abea cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x6882bf88 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x6893ca3d dst_init +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c165e1 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x68cf4c5f skb_trim +EXPORT_SYMBOL vmlinux 0x68eb2548 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x69086e3a iunique +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x692e6b31 seq_read +EXPORT_SYMBOL vmlinux 0x69394243 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x6946b8bc mmc_release_host +EXPORT_SYMBOL vmlinux 0x69475c50 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x695aeaf8 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69768fc8 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x6984e543 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x6985c745 devm_free_irq +EXPORT_SYMBOL vmlinux 0x6988b6dd mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x698ac5ad jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x698b98b5 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x6995a977 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a54488 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ad95a8 __sock_create +EXPORT_SYMBOL vmlinux 0x69b2ba30 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x69b6c168 devm_memremap +EXPORT_SYMBOL vmlinux 0x69c5d7a8 dev_emerg +EXPORT_SYMBOL vmlinux 0x69cf1e8d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x69d3b616 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x69da7950 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x69dfc41d blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x69e2cdff ping_prot +EXPORT_SYMBOL vmlinux 0x69e795f0 skb_find_text +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a41977c iterate_mounts +EXPORT_SYMBOL vmlinux 0x6a49b643 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x6a4f2deb filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a62b998 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x6a6c7c57 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x6a6e7d92 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a842f03 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x6a888efc mmc_can_reset +EXPORT_SYMBOL vmlinux 0x6ab5ecb2 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x6abf4ef4 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad2b0ff netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af0b7ab set_pages_wb +EXPORT_SYMBOL vmlinux 0x6b036e3f unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6b042f6b pci_get_class +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b17979a blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b261485 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x6b26c7f2 register_key_type +EXPORT_SYMBOL vmlinux 0x6b2a96b5 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x6b343895 find_lock_entry +EXPORT_SYMBOL vmlinux 0x6b42d8b2 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x6b5f3f51 PDE_DATA +EXPORT_SYMBOL vmlinux 0x6b603fb8 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6b61a332 inet6_getname +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b9a711a load_nls +EXPORT_SYMBOL vmlinux 0x6bb37ec6 napi_get_frags +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcf066d _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdd88e9 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x6be7449d flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2394a8 may_umount +EXPORT_SYMBOL vmlinux 0x6c268d2d __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x6c2b34f9 __free_pages +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c343879 do_truncate +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5cb48d i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c828f1a iget_locked +EXPORT_SYMBOL vmlinux 0x6caff068 vga_put +EXPORT_SYMBOL vmlinux 0x6ccc9d95 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce29463 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x6ced14a4 sync_filesystem +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d249d8f blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x6d2613d4 commit_creds +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d330a7f scsi_remove_device +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d553fbb jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x6d857638 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x6db67d31 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc30939 is_bad_inode +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df863ff __pci_register_driver +EXPORT_SYMBOL vmlinux 0x6e0d570d sock_init_data +EXPORT_SYMBOL vmlinux 0x6e16b2b5 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x6e1889f7 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x6e1bea47 __skb_checksum +EXPORT_SYMBOL vmlinux 0x6e4c9cb6 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e654ce4 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f1ad9 mount_bdev +EXPORT_SYMBOL vmlinux 0x6e82eed2 __check_sticky +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eabdc83 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x6ee99b88 try_module_get +EXPORT_SYMBOL vmlinux 0x6ef4565e pci_save_state +EXPORT_SYMBOL vmlinux 0x6ef66e8a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x6efa53ab blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x6f117031 get_super_thawed +EXPORT_SYMBOL vmlinux 0x6f1bf786 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x6f1c2b6f __alloc_skb +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f4dfd2d nvm_submit_io +EXPORT_SYMBOL vmlinux 0x6f5399c9 mpage_writepages +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f809100 nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x6f877316 put_tty_driver +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8a7a06 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x6f91a5de tcf_hash_search +EXPORT_SYMBOL vmlinux 0x6fa131cb skb_vlan_push +EXPORT_SYMBOL vmlinux 0x6fbd67f6 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd097e0 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x6fde81d3 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x6fdff228 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x6fe3a360 __lock_page +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x701d9ab0 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7028d502 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7028d591 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x7029dc16 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7061357a noop_llseek +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x707f93dd preempt_schedule +EXPORT_SYMBOL vmlinux 0x7088ce72 printk_emit +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70989552 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x70ae0122 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x70b0b4bd pci_bus_type +EXPORT_SYMBOL vmlinux 0x70b26e1a vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x70b6e8b8 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x70c841d7 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d60df3 register_netdevice +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70dc6f39 register_shrinker +EXPORT_SYMBOL vmlinux 0x70de0ef1 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71073fa8 input_get_keycode +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x71312139 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x7150cec8 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71748689 blk_put_request +EXPORT_SYMBOL vmlinux 0x7174e6e6 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x71889917 ll_rw_block +EXPORT_SYMBOL vmlinux 0x719a0411 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x71a0dfd0 skb_queue_head +EXPORT_SYMBOL vmlinux 0x71a3cf02 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71cd1f08 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x71d65825 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x71dfe57c sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71ff5053 __quota_error +EXPORT_SYMBOL vmlinux 0x72097884 get_tz_trend +EXPORT_SYMBOL vmlinux 0x72174a27 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x72440dfe netdev_err +EXPORT_SYMBOL vmlinux 0x724b1c75 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x724d7ea6 dqget +EXPORT_SYMBOL vmlinux 0x726bab7f touch_atime +EXPORT_SYMBOL vmlinux 0x727ee61b in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x72809638 build_skb +EXPORT_SYMBOL vmlinux 0x7283cd52 dma_find_channel +EXPORT_SYMBOL vmlinux 0x728e6642 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x728f00c2 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c3a8b9 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x72d40cbd lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e6cb6e trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x730322dc register_qdisc +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7317c261 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734b2b53 d_instantiate +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x736ee7fb proc_symlink +EXPORT_SYMBOL vmlinux 0x7372ac96 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x739dca2e padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x73a58935 sock_efree +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73ec3228 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x74348920 init_special_inode +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x7461d81f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x7462eeeb netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x747a4eac set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x747bae3c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a49a94 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x74b1928b kunmap_high +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cfc8a5 pci_request_regions +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fcdc8b blk_peek_request +EXPORT_SYMBOL vmlinux 0x7500bab7 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7516b6ff param_get_long +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x75333602 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7546fb35 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x756b70a9 page_symlink +EXPORT_SYMBOL vmlinux 0x757c8fee uart_resume_port +EXPORT_SYMBOL vmlinux 0x758d4f3d acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75b3484e vfs_mkdir +EXPORT_SYMBOL vmlinux 0x75b34ae5 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x75b8453b abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75ca4755 truncate_setsize +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75ed005a netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x75f4eb21 sk_stream_error +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761dfbe6 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x7626046c file_update_time +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x763d7cb2 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x76418f75 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764af5d3 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7651e34b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x7655d001 bmap +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x766eb5f5 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d48e17 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76fd443d netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771211de d_set_fallthru +EXPORT_SYMBOL vmlinux 0x771741d6 netdev_update_features +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7730b3bf arp_create +EXPORT_SYMBOL vmlinux 0x77443969 param_set_invbool +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775228f7 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x775c0e70 __serio_register_port +EXPORT_SYMBOL vmlinux 0x7774f00d pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x777fb375 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x779704be dquot_initialize +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c45ba7 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x77dc748e __module_get +EXPORT_SYMBOL vmlinux 0x77efa4d4 blk_rq_init +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x78107ceb init_task +EXPORT_SYMBOL vmlinux 0x781709a7 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78405023 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x7853e196 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x786b0ed2 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78941cf2 tcp_prot +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a2e136 sk_net_capable +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78d21167 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e0cd7c kfree_skb +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79084fb3 kill_block_super +EXPORT_SYMBOL vmlinux 0x790bc2f0 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x791f9bcb flush_old_exec +EXPORT_SYMBOL vmlinux 0x7937fff1 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x7947530c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x79491ce9 console_start +EXPORT_SYMBOL vmlinux 0x7949bb98 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x796f9fa1 bioset_create +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797e10ec sock_no_getname +EXPORT_SYMBOL vmlinux 0x79a72121 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b54209 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x79bb5a3b dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x79c1dbbc ip_check_defrag +EXPORT_SYMBOL vmlinux 0x79d6eb4b phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x79e0fe63 skb_pad +EXPORT_SYMBOL vmlinux 0x7a04bc84 generic_file_open +EXPORT_SYMBOL vmlinux 0x7a187c6f down_write_trylock +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a3b1179 udp_ioctl +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a62e361 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x7a68fb91 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x7a6a8e85 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x7a7b43e1 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a843983 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x7a8a43c3 iget_failed +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9cc035 elv_rb_del +EXPORT_SYMBOL vmlinux 0x7aa081f8 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab03f17 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acebe6e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b171b52 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b260c96 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b4df1b7 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b6c4a6c deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb1e172 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1bc35d security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7c25ba72 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4697ed jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca7c9c0 kmap +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cce4447 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x7cdb1d81 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce60913 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d08ad75 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11685e get_io_context +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1bf0f9 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x7d2cc405 pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0x7d352f5b md_register_thread +EXPORT_SYMBOL vmlinux 0x7d4c5e15 d_add_ci +EXPORT_SYMBOL vmlinux 0x7d4e4189 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x7d4e68d9 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x7d6c6e0e tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dbd4daa vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x7de5e66c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df09fe5 security_file_permission +EXPORT_SYMBOL vmlinux 0x7e054218 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x7e26781a open_check_o_direct +EXPORT_SYMBOL vmlinux 0x7e2a1820 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x7e3d99d9 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x7e461e6f sk_stop_timer +EXPORT_SYMBOL vmlinux 0x7e5c35b1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x7e747f37 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e8fcdcd cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7e9066e1 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f826e8f tcp_parse_options +EXPORT_SYMBOL vmlinux 0x7f982398 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x7fd91c02 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x80012cbb pcim_enable_device +EXPORT_SYMBOL vmlinux 0x800a6bad sock_no_bind +EXPORT_SYMBOL vmlinux 0x801f5a1b devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x80201f43 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x80201f97 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x803d2d23 search_binary_handler +EXPORT_SYMBOL vmlinux 0x80543e9e pci_disable_device +EXPORT_SYMBOL vmlinux 0x80793480 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x8096a9a8 key_alloc +EXPORT_SYMBOL vmlinux 0x80ad89ff generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x80af5da1 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cf61c1 param_set_copystring +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80e68646 kmap_to_page +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x810b1568 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81962b70 simple_write_begin +EXPORT_SYMBOL vmlinux 0x81a401a4 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x81b62e8b pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x81d0085f poll_initwait +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81fd862d sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8226d2ba from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8246ef7d pci_match_id +EXPORT_SYMBOL vmlinux 0x82490d5d ab3100_event_register +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8281718e blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x82844fad dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8286ae9e fs_bio_set +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x8293d86a agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x829b667d nf_log_register +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c22616 udp_disconnect +EXPORT_SYMBOL vmlinux 0x82c4065e dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x82fd5d84 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8324cbc8 key_invalidate +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x832fa791 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x833f5a91 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x835921f6 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x836054df phy_device_create +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8374ccef pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x837d0f85 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x8389d478 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839804c1 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b6ac59 skb_copy +EXPORT_SYMBOL vmlinux 0x83b73395 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x83c2c3d9 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c75d4c genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x840f94b3 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x8417906c wait_iff_congested +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84181fa6 input_event +EXPORT_SYMBOL vmlinux 0x8427a9fb mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x84344514 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x845f6ea6 sync_blockdev +EXPORT_SYMBOL vmlinux 0x846a9610 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x848acae4 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x8492e01e sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x84934e58 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x849dfc75 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x84a425c3 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x84b3c1ab sk_reset_timer +EXPORT_SYMBOL vmlinux 0x84ba7bf1 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x84cc7577 neigh_for_each +EXPORT_SYMBOL vmlinux 0x84cd0ff8 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x84d36819 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x84fea798 would_dump +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85090f2a __sk_dst_check +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x85464304 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x854d4b1a ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x8561f5a2 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8568b0c9 file_open_root +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x85758e3b tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x85880fd4 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c64d76 rwsem_wake +EXPORT_SYMBOL vmlinux 0x85d1a5c4 registered_fb +EXPORT_SYMBOL vmlinux 0x85d68427 filemap_flush +EXPORT_SYMBOL vmlinux 0x85d7aec6 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f62fd3 proc_set_user +EXPORT_SYMBOL vmlinux 0x86182550 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x8624d27e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x86412347 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8674cdf9 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x8679dbc2 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x86819535 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a77ab3 __brelse +EXPORT_SYMBOL vmlinux 0x86a84dab tcp_shutdown +EXPORT_SYMBOL vmlinux 0x86c33604 devm_clk_put +EXPORT_SYMBOL vmlinux 0x86c8cb53 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x86db2e47 d_path +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871a2a13 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871f9e8d i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x8723ded6 efi +EXPORT_SYMBOL vmlinux 0x87414b39 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x8753125f rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x87743fe8 i2c_use_client +EXPORT_SYMBOL vmlinux 0x87813bd0 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x87901195 rt6_lookup +EXPORT_SYMBOL vmlinux 0x87982857 get_gendisk +EXPORT_SYMBOL vmlinux 0x87a83444 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x880e6cca blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x8810cbf1 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x88491d23 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x88609c52 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x88875824 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x88e51e8e serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x88e80422 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x88f5a4fa kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x892a2a8b blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x892f78a6 elv_register_queue +EXPORT_SYMBOL vmlinux 0x89479680 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x896654df register_cdrom +EXPORT_SYMBOL vmlinux 0x8968dcd4 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x899be65b pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x899bea6b __vfs_read +EXPORT_SYMBOL vmlinux 0x89aad169 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b7397f unload_nls +EXPORT_SYMBOL vmlinux 0x89cf0333 page_put_link +EXPORT_SYMBOL vmlinux 0x89d4f1d2 dm_put_device +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89da1282 md_write_start +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a0e33bf arp_send +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51b369 pci_find_bus +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5ec194 icmp_send +EXPORT_SYMBOL vmlinux 0x8a6644ac dget_parent +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6cc623 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x8a6cc766 default_llseek +EXPORT_SYMBOL vmlinux 0x8a784e5c led_set_brightness +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a8d4e6c i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x8a912195 bdget_disk +EXPORT_SYMBOL vmlinux 0x8a996ce8 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab3c651 __frontswap_test +EXPORT_SYMBOL vmlinux 0x8ac23ecd filemap_fault +EXPORT_SYMBOL vmlinux 0x8ac9d8ed in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8acd8b44 blk_get_request +EXPORT_SYMBOL vmlinux 0x8acf12cc icmpv6_send +EXPORT_SYMBOL vmlinux 0x8ad3b4d1 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x8af92ead netlink_unicast +EXPORT_SYMBOL vmlinux 0x8b15ed2b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x8b1802fd d_alloc +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b2c8f32 dump_trace +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5d4868 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba0821a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8bca7903 param_set_bint +EXPORT_SYMBOL vmlinux 0x8bcac14d acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x8bcf4e60 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x8bd06912 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x8bdc829f param_ops_byte +EXPORT_SYMBOL vmlinux 0x8be66cdc dquot_get_state +EXPORT_SYMBOL vmlinux 0x8bf3ec27 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x8c04bb88 __devm_release_region +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c237186 blk_complete_request +EXPORT_SYMBOL vmlinux 0x8c49b68c neigh_event_ns +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6a4bb9 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x8c6aa401 genphy_read_status +EXPORT_SYMBOL vmlinux 0x8c8032d7 stop_tty +EXPORT_SYMBOL vmlinux 0x8caa9d7d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x8cac8989 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda4d81 phy_driver_register +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d3c36a9 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x8d4024bd end_page_writeback +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5a64ae i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8d615336 pci_iomap +EXPORT_SYMBOL vmlinux 0x8d63d307 bdput +EXPORT_SYMBOL vmlinux 0x8d66a08b from_kuid_munged +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8de46e35 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x8de72c3e pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x8dece8b5 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x8df132b2 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e292f83 kernel_write +EXPORT_SYMBOL vmlinux 0x8e44f233 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x8e57ae21 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x8e7327e3 dquot_enable +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e844371 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e88a1fb pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x8ea4df20 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x8ea72b52 key_link +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb2bbd3 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8eb88413 nvm_get_blk +EXPORT_SYMBOL vmlinux 0x8eca3493 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x8ed2736d blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x8ee9a8f2 make_kprojid +EXPORT_SYMBOL vmlinux 0x8ef148a5 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x8ef6075b __ip_dev_find +EXPORT_SYMBOL vmlinux 0x8ef79ab9 d_delete +EXPORT_SYMBOL vmlinux 0x8f1c5185 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x8f1c7246 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f43a29d blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f75840f sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x8f7919d2 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x8f98b54b free_task +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa285a6 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x8fd1152e _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x8fd8e8b4 blk_put_queue +EXPORT_SYMBOL vmlinux 0x8fdcce2c scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ff45f47 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x901053d1 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x9021b037 simple_unlink +EXPORT_SYMBOL vmlinux 0x90294311 update_devfreq +EXPORT_SYMBOL vmlinux 0x90360b7e simple_lookup +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x9048f386 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x9083ee2e dquot_destroy +EXPORT_SYMBOL vmlinux 0x908575fe queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x908b8547 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x9094ea69 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x90a730fd qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x90bb19ef mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d47b7e serio_interrupt +EXPORT_SYMBOL vmlinux 0x90d628b2 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x90dd1e74 key_type_keyring +EXPORT_SYMBOL vmlinux 0x90ddc924 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x90f186a6 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x910bff1f phy_stop +EXPORT_SYMBOL vmlinux 0x910c6b6f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x911d45d6 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x9127c422 irq_to_desc +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915bb5a9 mmc_free_host +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x916194bd generic_permission +EXPORT_SYMBOL vmlinux 0x91692116 proc_create_data +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x9197486a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x919c2981 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x91a85ffa skb_copy_expand +EXPORT_SYMBOL vmlinux 0x91bb5b84 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x91e045e8 agp_copy_info +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x91fc123d try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x92103a2d tcf_em_register +EXPORT_SYMBOL vmlinux 0x922c96f2 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92528b91 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x926b52e4 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x9273c5f6 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x9275a0f3 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x927b86c7 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92898d1d send_sig +EXPORT_SYMBOL vmlinux 0x92a19b00 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c66619 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x92dc85f9 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x92de3b89 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x92eaf668 seq_path +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fe3af3 iget5_locked +EXPORT_SYMBOL vmlinux 0x9302e65b rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x93362248 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x93509722 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x935956e1 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x93596536 secpath_dup +EXPORT_SYMBOL vmlinux 0x93682fa2 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x939ecbea of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x93a6c86d dquot_free_inode +EXPORT_SYMBOL vmlinux 0x93abb8ad scsi_remove_target +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bc8071 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x93e72562 devm_memunmap +EXPORT_SYMBOL vmlinux 0x93f16d5a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9420a6e8 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x9448b065 input_set_capability +EXPORT_SYMBOL vmlinux 0x9472b312 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x948d0da0 dev_notice +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949d6bd7 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x94aeb44e vfs_mknod +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9516da8d current_task +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954bc84c ppp_input_error +EXPORT_SYMBOL vmlinux 0x9577e284 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x9581f4f5 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x959779ea scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x95ab831f blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95dd2d17 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x960a8474 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x960d903f seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x9618687f msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x9656ec5f xfrm_input +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96797f92 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x967ce6e8 init_net +EXPORT_SYMBOL vmlinux 0x96894df1 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969d6571 ht_create_irq +EXPORT_SYMBOL vmlinux 0x96bbe262 __break_lease +EXPORT_SYMBOL vmlinux 0x96c59c6b skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cd456d pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x96e57917 kernel_bind +EXPORT_SYMBOL vmlinux 0x96ff7a0b iput +EXPORT_SYMBOL vmlinux 0x970beec0 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x972d387e put_page +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975b125e lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x975d361a bitmap_unplug +EXPORT_SYMBOL vmlinux 0x97708911 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979efa27 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x97ab57cf scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x97b4c5f7 dst_discard_out +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97cef999 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f68f4f tty_set_operations +EXPORT_SYMBOL vmlinux 0x97f807e3 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9814c7a5 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x981dcca3 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x984f6aa1 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x9850fe68 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x9866fc19 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x986bf957 clear_nlink +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986fa1a4 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98915183 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x98a2b16f tty_free_termios +EXPORT_SYMBOL vmlinux 0x98a97e94 override_creds +EXPORT_SYMBOL vmlinux 0x98b32e21 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x98b6d527 seq_vprintf +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x99055ad6 qdisc_reset +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x9939ee8a bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x993d16f5 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x9944ca81 mmc_put_card +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x997bd30b cad_pid +EXPORT_SYMBOL vmlinux 0x9988ac64 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x998b1a02 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x998dbb9f __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99add0b6 param_ops_bint +EXPORT_SYMBOL vmlinux 0x99c2af60 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x99cce3f6 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d1c9cf tty_write_room +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99e9d09d xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x9a02b11b tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x9a02cd68 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a24a246 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a566e46 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a74aa2b sk_wait_data +EXPORT_SYMBOL vmlinux 0x9a7e4c9b scsi_init_io +EXPORT_SYMBOL vmlinux 0x9aaf9016 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aee26e2 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x9af3793e drop_super +EXPORT_SYMBOL vmlinux 0x9b0905a8 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b41af23 dev_get_flags +EXPORT_SYMBOL vmlinux 0x9b447631 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9698dd d_make_root +EXPORT_SYMBOL vmlinux 0x9b9a0655 __init_rwsem +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba5413c blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc4bdcb unregister_md_personality +EXPORT_SYMBOL vmlinux 0x9bd27458 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x9be36430 sock_create_lite +EXPORT_SYMBOL vmlinux 0x9be4c883 inet_addr_type +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be96bd3 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x9bf1e836 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x9c07c980 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x9c1880ac swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x9c25f3bc pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4d7c70 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0ee516 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4db212 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x9d707a78 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x9d74ecac phy_start +EXPORT_SYMBOL vmlinux 0x9d816389 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x9d952786 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9db584b8 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x9dc325c3 kern_path_create +EXPORT_SYMBOL vmlinux 0x9de538f3 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0db163 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x9e1db89e __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9e28f1ab fasync_helper +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e449456 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9ca031 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9eaf4194 dev_base_lock +EXPORT_SYMBOL vmlinux 0x9eb40806 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9ee16b2d _dev_info +EXPORT_SYMBOL vmlinux 0x9eefb336 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x9efd1298 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x9efec37b nf_log_packet +EXPORT_SYMBOL vmlinux 0x9f190aaa nobh_write_end +EXPORT_SYMBOL vmlinux 0x9f41adb9 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4dca36 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x9f65466b simple_dname +EXPORT_SYMBOL vmlinux 0x9f7115f4 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb4f1be inet_offloads +EXPORT_SYMBOL vmlinux 0x9fcc0222 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x9fd249de ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe32a45 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x9fe827ff xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x9fefcb5d mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0007ec0 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00af962 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xa038474c elv_rb_add +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06c772a nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa0702785 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xa0766b0d kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08690ff bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xa08f93e6 pci_restore_state +EXPORT_SYMBOL vmlinux 0xa0947587 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xa09fbd03 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b87bb0 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f6aa56 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa1079e20 fb_set_var +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1177c6e copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12814b2 proto_unregister +EXPORT_SYMBOL vmlinux 0xa12f4bc9 tso_build_data +EXPORT_SYMBOL vmlinux 0xa1340a4d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa149df9e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa176fd71 netlink_ack +EXPORT_SYMBOL vmlinux 0xa19a14d3 inode_init_always +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1ce3ce2 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xa1d8c0ea dma_sync_wait +EXPORT_SYMBOL vmlinux 0xa1dde62b dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1ee8181 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa21a69e7 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xa2724648 kernel_read +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a53644 __block_write_begin +EXPORT_SYMBOL vmlinux 0xa2a7ebc8 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xa2c81b39 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa30da29e bio_copy_data +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa335b4f5 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xa3374aa3 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xa3464d5e d_walk +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa3658f8a tcf_action_exec +EXPORT_SYMBOL vmlinux 0xa36e6313 nvm_end_io +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa382d448 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xa39ab345 mount_ns +EXPORT_SYMBOL vmlinux 0xa3b2f935 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xa3b9e20a gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xa3c9f2d6 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3f5bc84 flow_cache_init +EXPORT_SYMBOL vmlinux 0xa400c305 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xa429ac37 vme_bus_num +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4419d49 copy_to_iter +EXPORT_SYMBOL vmlinux 0xa44f905e neigh_app_ns +EXPORT_SYMBOL vmlinux 0xa450f403 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xa4586eaa jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4845e04 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa48868e1 done_path_create +EXPORT_SYMBOL vmlinux 0xa48d7e49 nonseekable_open +EXPORT_SYMBOL vmlinux 0xa4af52a3 seq_puts +EXPORT_SYMBOL vmlinux 0xa4afd739 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xa4b8a718 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bd6a7e fput +EXPORT_SYMBOL vmlinux 0xa4d04add tty_register_device +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d6696a phy_suspend +EXPORT_SYMBOL vmlinux 0xa4f93c45 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xa4ff2998 tcp_child_process +EXPORT_SYMBOL vmlinux 0xa51545a0 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa520a910 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa572f55e f_setown +EXPORT_SYMBOL vmlinux 0xa5745e3c pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xa575985c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xa5810918 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xa58e82b7 param_ops_int +EXPORT_SYMBOL vmlinux 0xa5911334 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59e4308 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xa5a71d3f __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xa5b9c5ac tcp_make_synack +EXPORT_SYMBOL vmlinux 0xa5c1f76b ppp_dev_name +EXPORT_SYMBOL vmlinux 0xa5cd0eca dquot_transfer +EXPORT_SYMBOL vmlinux 0xa60adf02 sock_i_uid +EXPORT_SYMBOL vmlinux 0xa60aed8a udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa62cb20d devm_ioremap +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa62eea7b __breadahead +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa642a2cf nd_iostat_end +EXPORT_SYMBOL vmlinux 0xa6494e2b ppp_unit_number +EXPORT_SYMBOL vmlinux 0xa66dccd8 param_array_ops +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67f3a92 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69b3db6 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xa6b6b79d mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7012d29 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xa7052974 dput +EXPORT_SYMBOL vmlinux 0xa7055030 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa712f56e netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xa713ad85 bdev_read_only +EXPORT_SYMBOL vmlinux 0xa72f5712 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73f6368 page_waitqueue +EXPORT_SYMBOL vmlinux 0xa744c6d8 tcp_req_err +EXPORT_SYMBOL vmlinux 0xa74cadc6 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xa7557ecc vm_mmap +EXPORT_SYMBOL vmlinux 0xa769611b read_code +EXPORT_SYMBOL vmlinux 0xa772109d mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xa7815ca6 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa78bbac9 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xa78d3e2a cdrom_open +EXPORT_SYMBOL vmlinux 0xa7ac8b2a cfb_copyarea +EXPORT_SYMBOL vmlinux 0xa7b51884 x86_hyper +EXPORT_SYMBOL vmlinux 0xa7c55a7c alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xa7cd147e tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7d308cc dev_add_offload +EXPORT_SYMBOL vmlinux 0xa7d9551e i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xa7da326f eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xa7e21a5e add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xa7f1e2f4 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xa802804d tty_hangup +EXPORT_SYMBOL vmlinux 0xa803b9b7 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xa81a9afb scsi_dma_map +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8391060 vfs_getattr +EXPORT_SYMBOL vmlinux 0xa840a7b5 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8461a24 blk_end_request +EXPORT_SYMBOL vmlinux 0xa854235f param_get_ullong +EXPORT_SYMBOL vmlinux 0xa859a025 __register_binfmt +EXPORT_SYMBOL vmlinux 0xa85db1a4 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87c6bcb sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa8aad4d5 agp_backend_release +EXPORT_SYMBOL vmlinux 0xa8b34239 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xa8c3cb48 soft_cursor +EXPORT_SYMBOL vmlinux 0xa8e06afe thaw_bdev +EXPORT_SYMBOL vmlinux 0xa8f3a63c padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90aff4d fb_set_suspend +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9644354 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9854652 fget_raw +EXPORT_SYMBOL vmlinux 0xa9949277 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xa997775c tcp_release_cb +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b4050c pci_map_rom +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9cab2ee pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xa9d6a7ed ilookup5 +EXPORT_SYMBOL vmlinux 0xa9e8455a vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xa9f63790 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xaa29c0c9 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xaa351f86 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xaa376deb kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaa38b14f dev_uc_del +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa5d58a7 block_write_full_page +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7ebd99 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaa975cdc pnp_start_dev +EXPORT_SYMBOL vmlinux 0xaabd1404 lookup_one_len +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab2e3f63 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8ab06b nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xab995946 pci_set_master +EXPORT_SYMBOL vmlinux 0xab9e4251 get_super +EXPORT_SYMBOL vmlinux 0xab9e9484 generic_write_end +EXPORT_SYMBOL vmlinux 0xaba132c9 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xaba3159c gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabaf0b5e phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xabb9e891 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xabc070e0 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabea61cb __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xabf2ab40 netif_rx +EXPORT_SYMBOL vmlinux 0xabf80268 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xabfe40b0 padata_alloc +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2ebc98 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac495268 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xac4a5ab8 generic_fillattr +EXPORT_SYMBOL vmlinux 0xac6a77af agp_enable +EXPORT_SYMBOL vmlinux 0xac874af9 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xac942ae2 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb03265 bio_reset +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacc5105f inode_init_owner +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd2519e blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xacd2faa5 devm_iounmap +EXPORT_SYMBOL vmlinux 0xacd5b80f block_write_end +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace06a92 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfcc0cb i2c_master_recv +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad117788 ip6_route_output +EXPORT_SYMBOL vmlinux 0xad288789 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xad547243 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad7703a9 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xad841c8a km_state_expired +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad91fad6 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xadd5493f xfrm_state_add +EXPORT_SYMBOL vmlinux 0xadd7ecd3 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xade1572f nf_register_hook +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae1d0f43 notify_change +EXPORT_SYMBOL vmlinux 0xae3182ba __neigh_event_send +EXPORT_SYMBOL vmlinux 0xae44dbf0 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xae520685 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xae577a6e twl6040_power +EXPORT_SYMBOL vmlinux 0xae61996e scsi_block_requests +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7e1aeb __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae8d4095 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xae983472 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xaea714d4 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaedd475d phy_drivers_register +EXPORT_SYMBOL vmlinux 0xaee01eed dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xaf0a98ba devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xaf1a9930 md_write_end +EXPORT_SYMBOL vmlinux 0xaf398361 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf5ca01e vfs_writev +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xafa3bc3b release_sock +EXPORT_SYMBOL vmlinux 0xafb07362 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0xafc3f0ba bio_advance +EXPORT_SYMBOL vmlinux 0xafcca2cf dcb_setapp +EXPORT_SYMBOL vmlinux 0xafd02cd5 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xafdbae2b blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xafdf0bee input_register_handle +EXPORT_SYMBOL vmlinux 0xafe5d0b9 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xaff53124 netif_skb_features +EXPORT_SYMBOL vmlinux 0xaffc0ff0 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xafff4191 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xb003a540 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb02bd591 _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0xb04eba16 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xb05b50ae nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0655dbd task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a1815a swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0b95024 kill_pgrp +EXPORT_SYMBOL vmlinux 0xb0d73049 __dst_free +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e2cf3a up_read +EXPORT_SYMBOL vmlinux 0xb0ea744a inode_get_bytes +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f29264 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xb0fa026c phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xb10032d6 dev_trans_start +EXPORT_SYMBOL vmlinux 0xb10820e4 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0xb1138fdd dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13d6cd8 give_up_console +EXPORT_SYMBOL vmlinux 0xb13ea90b ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xb14789ed skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb198eba1 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xb199787c abort_creds +EXPORT_SYMBOL vmlinux 0xb19c62dc save_mount_options +EXPORT_SYMBOL vmlinux 0xb1b5132a from_kprojid +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c9768c dev_get_iflink +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d67743 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xb1e969b0 mntput +EXPORT_SYMBOL vmlinux 0xb1f100b7 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xb20ab577 set_nlink +EXPORT_SYMBOL vmlinux 0xb20e9788 vme_irq_free +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb2264dc2 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xb2377eda gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xb245cc3e simple_rmdir +EXPORT_SYMBOL vmlinux 0xb248cac1 seq_escape +EXPORT_SYMBOL vmlinux 0xb253c426 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xb2546778 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb27db553 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xb28fe584 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb295a780 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb2ab82c8 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c2aab6 bio_init +EXPORT_SYMBOL vmlinux 0xb2c61288 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xb2cba830 netdev_printk +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f358ba input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb30b64b1 generic_removexattr +EXPORT_SYMBOL vmlinux 0xb31a18dd mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb3240ed8 neigh_xmit +EXPORT_SYMBOL vmlinux 0xb327b0eb bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35ac5e7 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xb36cffc1 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xb37a5eee dquot_drop +EXPORT_SYMBOL vmlinux 0xb38be290 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xb3a824c7 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xb3c79a2e get_user_pages +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d65e1f skb_make_writable +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3e79a47 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb41033ea inet_shutdown +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb457fbed vme_slave_request +EXPORT_SYMBOL vmlinux 0xb468a02f vfs_symlink +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47d9d3e param_set_bool +EXPORT_SYMBOL vmlinux 0xb49eebb2 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb4a1f876 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xb4a258e8 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xb4a96e6b tty_mutex +EXPORT_SYMBOL vmlinux 0xb4afd62d netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb4dccaaf kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xb4e18677 down_write +EXPORT_SYMBOL vmlinux 0xb4f335ec pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xb5105cd3 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xb5182466 ip_options_compile +EXPORT_SYMBOL vmlinux 0xb5217ccc jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb5541644 path_put +EXPORT_SYMBOL vmlinux 0xb5629a43 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5acb7dd param_set_ullong +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5ce46f9 vme_irq_request +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb60d8977 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb633256f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xb649f733 input_set_keycode +EXPORT_SYMBOL vmlinux 0xb66e4673 phy_init_eee +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69dacc7 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b2a745 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb6be2f85 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xb6da04c3 elevator_change +EXPORT_SYMBOL vmlinux 0xb6db7f20 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f7866a reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xb6f8cb51 pnp_find_dev +EXPORT_SYMBOL vmlinux 0xb705fbef udp6_csum_init +EXPORT_SYMBOL vmlinux 0xb732651c eisa_driver_register +EXPORT_SYMBOL vmlinux 0xb73c6659 blk_start_request +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb75375dc blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb766f63b scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb78ba357 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xb798f1e2 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7b3fc4c xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xb7c94f7c scsi_host_put +EXPORT_SYMBOL vmlinux 0xb7c97422 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xb7ccb6fa ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xb7e55fe1 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xb7e6b018 simple_statfs +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb801b948 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb82990a5 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xb8321203 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb85a06c9 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xb8718df1 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xb874af8c dev_add_pack +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8a4a7d9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8b79b48 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xb8bbd5e3 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb8d12aa0 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xb8d698cb have_submounts +EXPORT_SYMBOL vmlinux 0xb8da8881 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb91d2375 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb928d603 serio_reconnect +EXPORT_SYMBOL vmlinux 0xb9445b9f __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xb98971a8 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f8e978 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xb9f8fa10 param_set_ushort +EXPORT_SYMBOL vmlinux 0xba00dfaf new_inode +EXPORT_SYMBOL vmlinux 0xba0de632 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xba125104 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3ae547 get_empty_filp +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6769cd km_is_alive +EXPORT_SYMBOL vmlinux 0xba83755d pipe_unlock +EXPORT_SYMBOL vmlinux 0xba953945 clear_inode +EXPORT_SYMBOL vmlinux 0xba9a24a2 vc_resize +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbaceabbc mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xbaffba74 keyring_clear +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4ea8b9 force_sig +EXPORT_SYMBOL vmlinux 0xbb52b4e0 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xbb5a2fa6 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6ad528 pci_dev_put +EXPORT_SYMBOL vmlinux 0xbb7113d7 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbcf7286 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbed4d4d pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xbbf0f8c5 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc207f02 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc44e339 d_rehash +EXPORT_SYMBOL vmlinux 0xbc4b86aa tty_do_resize +EXPORT_SYMBOL vmlinux 0xbc52f2a7 set_pages_uc +EXPORT_SYMBOL vmlinux 0xbc57165b xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xbc6b179b blk_make_request +EXPORT_SYMBOL vmlinux 0xbc84abf6 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xbc8c7ffc set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xbc96793f param_get_byte +EXPORT_SYMBOL vmlinux 0xbcaa0c9d input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xbcac0cf1 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xbcb98d9b i2c_clients_command +EXPORT_SYMBOL vmlinux 0xbcbd1d77 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc3b59b alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xbcc3be4f netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xbccb3f84 file_path +EXPORT_SYMBOL vmlinux 0xbcd45093 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xbce06905 __mdiobus_register +EXPORT_SYMBOL vmlinux 0xbcf1909f inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbd255774 pipe_lock +EXPORT_SYMBOL vmlinux 0xbd385dbc scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xbd44d8db __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xbd4a18b8 framebuffer_release +EXPORT_SYMBOL vmlinux 0xbd4f026b serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda77393 put_cmsg +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb9a533 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xbe0cc41b xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe3c45ac page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xbe45e9ed posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xbe7a1c9f posix_test_lock +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe8c5697 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xbe9199fa netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xbe9390b8 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xbeae5150 generic_show_options +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec800b0 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xbed6c6c9 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0098e5 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xbf32b742 pci_bus_put +EXPORT_SYMBOL vmlinux 0xbf334df1 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xbf3486f4 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xbf483b77 d_set_d_op +EXPORT_SYMBOL vmlinux 0xbf58cb3c devm_request_resource +EXPORT_SYMBOL vmlinux 0xbf5c0eac acl_by_type +EXPORT_SYMBOL vmlinux 0xbf6d5e85 set_anon_super +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf80879f release_pages +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa2e93a xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xbfc1611f iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc70acd empty_aops +EXPORT_SYMBOL vmlinux 0xbfd095bf tcf_register_action +EXPORT_SYMBOL vmlinux 0xbfe66665 tcp_close +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfe8b849 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc027fa5a dump_page +EXPORT_SYMBOL vmlinux 0xc036129e sock_wfree +EXPORT_SYMBOL vmlinux 0xc03e5f67 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xc0464dac generic_ro_fops +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc062ac9d mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0690709 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc06ffc05 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc072458a end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0816ec0 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc099b0ed mdiobus_scan +EXPORT_SYMBOL vmlinux 0xc09a7734 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xc0a3ac8a sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a9c64c key_validate +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0e2c7f0 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc10785e9 kill_anon_super +EXPORT_SYMBOL vmlinux 0xc11331dd dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc1274f52 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xc12df704 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xc13a8c38 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xc162bb6b max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc169df0b mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xc173cc10 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc175058f dump_skip +EXPORT_SYMBOL vmlinux 0xc18e6df3 finish_no_open +EXPORT_SYMBOL vmlinux 0xc18f6212 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xc1b07573 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xc1bb3329 neigh_table_init +EXPORT_SYMBOL vmlinux 0xc1d18ee3 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xc1d22653 flush_signals +EXPORT_SYMBOL vmlinux 0xc1d25a66 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f45445 genphy_resume +EXPORT_SYMBOL vmlinux 0xc1fe0667 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xc1ff012e generic_writepages +EXPORT_SYMBOL vmlinux 0xc209850e sget +EXPORT_SYMBOL vmlinux 0xc212750d xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xc21e7a1a vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc21f8018 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xc2346a07 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2760743 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc29b88e9 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2c8cea3 __blk_end_request +EXPORT_SYMBOL vmlinux 0xc2ca743e __i2c_transfer +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc3560bcc dev_alloc_name +EXPORT_SYMBOL vmlinux 0xc3567005 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xc36a23fd blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc3766d9f bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc3793024 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc3829463 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc3914b94 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xc395ee2a inode_change_ok +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b2b288 fb_blank +EXPORT_SYMBOL vmlinux 0xc3b89a61 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c5dd80 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3fe21ef pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc42905b8 fb_class +EXPORT_SYMBOL vmlinux 0xc42cc2b8 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc44aedba wireless_send_event +EXPORT_SYMBOL vmlinux 0xc4551cdb ilookup +EXPORT_SYMBOL vmlinux 0xc48c990b block_truncate_page +EXPORT_SYMBOL vmlinux 0xc49706b2 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49e7526 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xc4a19f87 lock_fb_info +EXPORT_SYMBOL vmlinux 0xc4a548b5 phy_connect +EXPORT_SYMBOL vmlinux 0xc4b74ebe genl_notify +EXPORT_SYMBOL vmlinux 0xc4ba601f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xc4c99575 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xc4ff8e58 uart_register_driver +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc52d0258 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc566f803 bdgrab +EXPORT_SYMBOL vmlinux 0xc56de955 tty_check_change +EXPORT_SYMBOL vmlinux 0xc58661e0 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59e682e kmalloc_caches +EXPORT_SYMBOL vmlinux 0xc5ad6dd5 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xc5b09053 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xc5b4bf45 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xc5d10c02 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc5d9b9f0 bdi_register +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e91b90 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60daf42 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc6293978 scsi_print_result +EXPORT_SYMBOL vmlinux 0xc63151b7 set_wb_congested +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6418a94 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xc657a5b4 inet_del_offload +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc67a09fe intel_gtt_get +EXPORT_SYMBOL vmlinux 0xc69e45f7 textsearch_register +EXPORT_SYMBOL vmlinux 0xc6a32c95 pcim_iomap +EXPORT_SYMBOL vmlinux 0xc6a6ea77 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xc6afb729 dma_pool_create +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6c94a0e dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6dc4801 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc720cdd6 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xc74f9f14 tcp_poll +EXPORT_SYMBOL vmlinux 0xc7506c46 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77d2174 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc789b347 security_path_mknod +EXPORT_SYMBOL vmlinux 0xc79326d1 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c3ffb5 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xc7c92792 fb_get_mode +EXPORT_SYMBOL vmlinux 0xc7d039bd blk_register_region +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fb3701 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc7fdcfdc cfb_fillrect +EXPORT_SYMBOL vmlinux 0xc8154ab6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84b3579 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xc856a7fd blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xc8683bc2 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xc86d6799 ___preempt_schedule +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87876f4 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc8834c2f write_one_page +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a130bb xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d91f0a __elv_add_request +EXPORT_SYMBOL vmlinux 0xc8dfa469 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc8f470a1 noop_fsync +EXPORT_SYMBOL vmlinux 0xc908705e capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc92027c3 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xc92be2c6 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xc95cef2d tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96e697e ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xc97117e7 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9b71b74 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca137179 elv_add_request +EXPORT_SYMBOL vmlinux 0xca1efe8c dev_change_carrier +EXPORT_SYMBOL vmlinux 0xca3ca5b0 tty_devnum +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca4df578 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xca5a4971 unregister_netdev +EXPORT_SYMBOL vmlinux 0xca758395 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8d143b ps2_command +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa93927 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xcab3f3a1 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xcabe9e21 scsi_host_get +EXPORT_SYMBOL vmlinux 0xcad66acb seq_dentry +EXPORT_SYMBOL vmlinux 0xcae71505 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xcae93c75 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xcaf0aa92 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafc0e1a kill_fasync +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1c7cd4 get_cached_acl +EXPORT_SYMBOL vmlinux 0xcb31d844 blk_queue_split +EXPORT_SYMBOL vmlinux 0xcb3cdcc9 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xcb5c644a mmc_get_card +EXPORT_SYMBOL vmlinux 0xcb706edd read_cache_page +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb8a6303 tty_name +EXPORT_SYMBOL vmlinux 0xcb9fdf12 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xcba4d504 pci_iounmap +EXPORT_SYMBOL vmlinux 0xcbae5a5c prepare_creds +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb31a3d vfs_setpos +EXPORT_SYMBOL vmlinux 0xcbbd6896 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc651db make_bad_inode +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcad40e lock_rename +EXPORT_SYMBOL vmlinux 0xcbe58b99 down_read +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcc062ed1 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3884ee pci_choose_state +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc50f72e pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcc525047 dev_uc_add +EXPORT_SYMBOL vmlinux 0xcc5965de vfs_readf +EXPORT_SYMBOL vmlinux 0xcc5c317e __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xcc82add3 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc8b7e5d dev_mc_flush +EXPORT_SYMBOL vmlinux 0xcc8d0708 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xcc8d3f4f acpi_os_execute +EXPORT_SYMBOL vmlinux 0xcc9ae98a kill_bdev +EXPORT_SYMBOL vmlinux 0xcca1b4ba unregister_shrinker +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xccfff3dd dm_get_device +EXPORT_SYMBOL vmlinux 0xcd13dc7c ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xcd1f1671 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd5bda13 simple_open +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd6a0ccf bh_submit_read +EXPORT_SYMBOL vmlinux 0xcd6e5898 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xcd805bca keyring_alloc +EXPORT_SYMBOL vmlinux 0xcd832a97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xcd8439da dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xcd9bfc72 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xcd9d2e06 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdcbe5ad mmc_can_trim +EXPORT_SYMBOL vmlinux 0xcdcd96ea ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xcdeb4d5a pid_task +EXPORT_SYMBOL vmlinux 0xcded3d90 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xcdf04dc9 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xce11a1e3 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xce1f733f dev_remove_pack +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2be640 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3689a1 kobject_del +EXPORT_SYMBOL vmlinux 0xce42cd5a udp_del_offload +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7078ae netif_napi_add +EXPORT_SYMBOL vmlinux 0xce869e46 deactivate_super +EXPORT_SYMBOL vmlinux 0xce8ad24f phy_device_register +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xcea1b376 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb0d431 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xcebc9649 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf29142d input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xcf3ad734 sock_no_listen +EXPORT_SYMBOL vmlinux 0xcf58bc34 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf7e7012 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcfba44f8 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xcfc37827 i2c_transfer +EXPORT_SYMBOL vmlinux 0xcfd4664c misc_deregister +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xd008ab2f fddi_type_trans +EXPORT_SYMBOL vmlinux 0xd02d15ca devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xd030d1ea inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xd03752dd unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xd04585f1 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xd0596973 follow_up +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd086e5a3 set_pages_nx +EXPORT_SYMBOL vmlinux 0xd0893325 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b93997 keyring_search +EXPORT_SYMBOL vmlinux 0xd0c93abd skb_queue_tail +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0eabe2d vlan_vid_add +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd119f1b5 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xd141948c elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xd1529d3c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xd15a4587 no_llseek +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd175fb55 __bread_gfp +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd191a36c cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1ce7579 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1dc0c59 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xd1e1836e pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd208be8b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xd20f3020 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd2225013 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xd223cd28 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xd226abf9 vfs_unlink +EXPORT_SYMBOL vmlinux 0xd226f1c0 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xd2341ea1 padata_stop +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26a881d d_splice_alias +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2af93b2 submit_bio +EXPORT_SYMBOL vmlinux 0xd2b4638e block_read_full_page +EXPORT_SYMBOL vmlinux 0xd2b87223 netdev_crit +EXPORT_SYMBOL vmlinux 0xd2b99f5d vme_slot_num +EXPORT_SYMBOL vmlinux 0xd2c62da4 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xd2d4233c skb_clone +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd2f3cf6a pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xd2f62fec ip_setsockopt +EXPORT_SYMBOL vmlinux 0xd2f76d8b netdev_alert +EXPORT_SYMBOL vmlinux 0xd30c7ca5 d_genocide +EXPORT_SYMBOL vmlinux 0xd3284023 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd34ce181 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xd365162a dev_open +EXPORT_SYMBOL vmlinux 0xd369e4a9 kmap_high +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3bd4ecd blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xd3ce90d8 mntget +EXPORT_SYMBOL vmlinux 0xd3d0f50c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xd3d5e3b1 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xd3daaa14 request_key +EXPORT_SYMBOL vmlinux 0xd449b2fe dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xd4506641 __mutex_init +EXPORT_SYMBOL vmlinux 0xd452373f genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd46e198d pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xd47be112 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4ec4c7d twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xd4f4dcc6 dma_supported +EXPORT_SYMBOL vmlinux 0xd509abbe bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd51833b5 netlink_capable +EXPORT_SYMBOL vmlinux 0xd518b4e3 complete_request_key +EXPORT_SYMBOL vmlinux 0xd522bc63 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd5409e85 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xd5437dbd blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xd54d4cb7 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd54f8fd5 scsi_add_device +EXPORT_SYMBOL vmlinux 0xd58861a4 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5b69dd7 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd60974d0 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xd615fb08 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61aee1b register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd620973b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xd625337a tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63fcca5 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xd6426843 do_splice_to +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6760db1 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xd6843745 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68e1d1b _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xd6b19192 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xd6b1c6f8 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c2b1de dev_addr_del +EXPORT_SYMBOL vmlinux 0xd6d4c43b km_report +EXPORT_SYMBOL vmlinux 0xd6eafe75 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f76c01 udp_add_offload +EXPORT_SYMBOL vmlinux 0xd6fba7e2 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xd7007e32 page_address +EXPORT_SYMBOL vmlinux 0xd714dd69 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xd7166310 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xd71ddd3a generic_readlink +EXPORT_SYMBOL vmlinux 0xd72f35cb xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd737dcd9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xd756fecc unregister_console +EXPORT_SYMBOL vmlinux 0xd75b9f72 md_error +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75ec110 mutex_trylock +EXPORT_SYMBOL vmlinux 0xd79458c6 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xd794f2b7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7acf496 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd7b705fc __neigh_create +EXPORT_SYMBOL vmlinux 0xd7c75aaa mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xd7db28b8 I_BDEV +EXPORT_SYMBOL vmlinux 0xd7dd4b05 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e68c0b set_cached_acl +EXPORT_SYMBOL vmlinux 0xd7e782e0 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ecfd83 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xd809b63e sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd82008d6 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd84fe543 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd866c0a3 dev_mc_init +EXPORT_SYMBOL vmlinux 0xd877395e tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xd878e9e4 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xd888060f dev_alert +EXPORT_SYMBOL vmlinux 0xd88f612a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b4cc66 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd8da9c6f get_task_io_context +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd90b21a2 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xd911cdba mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd9167916 vfs_statfs +EXPORT_SYMBOL vmlinux 0xd91d2e2b read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd9335664 unregister_nls +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95c0252 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xd95e0ce2 input_grab_device +EXPORT_SYMBOL vmlinux 0xd95f7f52 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xd966ddc2 __do_once_done +EXPORT_SYMBOL vmlinux 0xd967ee46 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd984ccbd sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd997ebc7 vfs_read +EXPORT_SYMBOL vmlinux 0xd9be2409 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd9c413fe neigh_table_clear +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9db1c32 user_revoke +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda0a79ff pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xda15a9e5 del_gendisk +EXPORT_SYMBOL vmlinux 0xda2f424e bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xda3a653a __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4bd145 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xda53ba8e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xda5b4bdd scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa2a777 fb_pan_display +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaaecbf1 dev_activate +EXPORT_SYMBOL vmlinux 0xdac29ab2 kunmap +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac5dccd mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xdad4037b seq_printf +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdaf20b12 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xdaf8d40e devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xdb0a11d5 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xdb2050cc security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xdb2cf176 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xdb34fa5d generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xdb540283 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb816314 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xdb9ebf89 param_ops_charp +EXPORT_SYMBOL vmlinux 0xdba42adb pnp_register_driver +EXPORT_SYMBOL vmlinux 0xdbca233e pnp_device_detach +EXPORT_SYMBOL vmlinux 0xdbd60f8f param_get_uint +EXPORT_SYMBOL vmlinux 0xdbdae520 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xdc024e20 drop_nlink +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5ef971 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xdc60476e mount_single +EXPORT_SYMBOL vmlinux 0xdcd80fe3 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xdcff652e bdget +EXPORT_SYMBOL vmlinux 0xdd0693ac i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0d783a vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xdd0f787b elevator_init +EXPORT_SYMBOL vmlinux 0xdd5c3e4f mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xdd7d8fc7 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xdde40dc7 sk_capable +EXPORT_SYMBOL vmlinux 0xdde6f9c4 read_cache_pages +EXPORT_SYMBOL vmlinux 0xddf51818 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde1b8b5a inode_permission +EXPORT_SYMBOL vmlinux 0xde2f3a42 __register_nls +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde51d7d6 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xde552cab address_space_init_once +EXPORT_SYMBOL vmlinux 0xde698192 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xde74b759 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde99f680 tty_lock +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdec24d17 dev_deactivate +EXPORT_SYMBOL vmlinux 0xdecc3cfd xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdef16b4d param_get_ushort +EXPORT_SYMBOL vmlinux 0xdf0d52a3 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0f2f5b bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf155035 register_gifconf +EXPORT_SYMBOL vmlinux 0xdf282cd0 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4fc797 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60a506 kfree_put_link +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf63c813 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xdf6fbf5e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xdf791810 d_obtain_root +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf9ab298 eth_header +EXPORT_SYMBOL vmlinux 0xdfb1ab4e simple_transaction_read +EXPORT_SYMBOL vmlinux 0xdfb925df __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfe4d7c0 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xdfee4d75 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdff62714 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffe2a2a vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xe012d402 simple_follow_link +EXPORT_SYMBOL vmlinux 0xe0269ee6 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xe049ab18 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xe04d2118 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe053306b inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06f1010 dev_addr_add +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07d14d1 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0846e8d inet6_protos +EXPORT_SYMBOL vmlinux 0xe08d0c7f __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xe08f48c7 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xe08fdf8e cont_write_begin +EXPORT_SYMBOL vmlinux 0xe097311f d_alloc_name +EXPORT_SYMBOL vmlinux 0xe09bd0f0 get_acl +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b8867b param_get_invbool +EXPORT_SYMBOL vmlinux 0xe0bcbdc5 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xe0c4d279 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xe0d48b66 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xe0d79b60 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe0ed41f7 __f_setown +EXPORT_SYMBOL vmlinux 0xe0f3b3f6 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xe0fca4e8 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe10dc351 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xe132fcfc lookup_bdev +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe176d1f2 freeze_bdev +EXPORT_SYMBOL vmlinux 0xe1893f5a inet_listen +EXPORT_SYMBOL vmlinux 0xe1a58aac csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xe1b68cac x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xe1c66c2d mdiobus_read +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2030f89 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xe20391cb proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe21439b9 inet_frag_find +EXPORT_SYMBOL vmlinux 0xe235b5b5 inet_getname +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe270dcc7 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xe27586d1 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xe276029b security_path_chown +EXPORT_SYMBOL vmlinux 0xe27b2ce1 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2aefd59 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dbcef5 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xe2e4e9d3 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2ffdd38 bio_add_page +EXPORT_SYMBOL vmlinux 0xe30d3bac sock_edemux +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31eef70 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe3243652 clk_add_alias +EXPORT_SYMBOL vmlinux 0xe3382c96 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33dee8f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xe362b78c jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xe36c78dc mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xe36e14b2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xe38d2bce __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xe39109f6 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xe3afa73b sg_miter_start +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d51b1f md_reload_sb +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e6f21c tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xe3f36ad3 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0xe3faace5 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xe41bb195 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe438582e i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe4633719 ata_link_printk +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4b315e4 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe4c17741 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xe4c8e1bc netlink_net_capable +EXPORT_SYMBOL vmlinux 0xe4c96ae1 kthread_bind +EXPORT_SYMBOL vmlinux 0xe4ee68b4 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xe4f58c73 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe4f69904 tty_port_init +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe510dc6c devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe529e546 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe546705b inet_ioctl +EXPORT_SYMBOL vmlinux 0xe5538414 get_agp_version +EXPORT_SYMBOL vmlinux 0xe566eeb2 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xe5784f6d dquot_operations +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57b6ff5 __d_drop +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58d80cf page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xe5933e74 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xe5985b61 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xe5a3edce param_set_uint +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d2d749 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe5ec31cc peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe61febfa __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe65dc041 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xe65e8c12 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xe668b6c1 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xe67a9537 brioctl_set +EXPORT_SYMBOL vmlinux 0xe6806bd3 proc_remove +EXPORT_SYMBOL vmlinux 0xe680c57c sk_free +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe69b4bb5 __get_page_tail +EXPORT_SYMBOL vmlinux 0xe69c7f9b nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0xe6ac8aed generic_block_bmap +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f6fde0 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fe4df8 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xe70948b8 key_revoke +EXPORT_SYMBOL vmlinux 0xe70cc251 blk_init_tags +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe72de156 genphy_update_link +EXPORT_SYMBOL vmlinux 0xe740cb7d phy_print_status +EXPORT_SYMBOL vmlinux 0xe778cb58 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xe77a178a __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe7869fc3 iov_iter_init +EXPORT_SYMBOL vmlinux 0xe79ac054 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ed3ad7 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xe7eff1bf tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xe80a507a pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xe81bd249 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82eac77 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe8341c4c freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe8371e88 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe83fb884 bdi_init +EXPORT_SYMBOL vmlinux 0xe8688373 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe86a097b dma_ops +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe875ef69 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe87b7366 dup_iter +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8aaad91 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8b768e2 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c57e2f ip6_xmit +EXPORT_SYMBOL vmlinux 0xe8d94329 seq_open +EXPORT_SYMBOL vmlinux 0xe8db8dd2 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xe8fa1a68 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe946bd51 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe958fcf7 free_user_ns +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe9688edd blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xe9704fff nvm_register +EXPORT_SYMBOL vmlinux 0xe97e9986 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xe98d0200 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe99e1fcd pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xe9a8f911 param_get_charp +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9f5f61f invalidate_partition +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fe93cc mmc_detect_change +EXPORT_SYMBOL vmlinux 0xea0187d9 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea08e5a5 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xea1448b4 irq_set_chip +EXPORT_SYMBOL vmlinux 0xea1c24fe swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xea215c26 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xea3177c0 param_get_ulong +EXPORT_SYMBOL vmlinux 0xea3f725d _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xea43bad1 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0xea6a0077 find_vma +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bbc2 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9561b6 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xeaa4a26f neigh_parms_release +EXPORT_SYMBOL vmlinux 0xeaa93f49 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xead5ff8c first_ec +EXPORT_SYMBOL vmlinux 0xeadd2470 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaed8cce nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xeb0ce242 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xeb1f5dfa scsi_scan_target +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb8ffc78 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xeb9c4abf ps2_end_command +EXPORT_SYMBOL vmlinux 0xeba13dc6 do_SAK +EXPORT_SYMBOL vmlinux 0xebb57cee clk_get +EXPORT_SYMBOL vmlinux 0xebcdf932 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xebe8e5cc console_stop +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec192660 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1f7c58 rtnl_notify +EXPORT_SYMBOL vmlinux 0xec34c5cb sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xec4318f5 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xec436ae1 put_io_context +EXPORT_SYMBOL vmlinux 0xec43794d dev_addr_init +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4eff47 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xec5cf443 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xec812ffb mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xec880c10 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xec89e80b agp_bridge +EXPORT_SYMBOL vmlinux 0xec94d039 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecbd4bd7 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd17cd5 is_nd_btt +EXPORT_SYMBOL vmlinux 0xecd78a90 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf6183d set_disk_ro +EXPORT_SYMBOL vmlinux 0xed0bc92f __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xed16062b prepare_binprm +EXPORT_SYMBOL vmlinux 0xed1e2335 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xed247830 serio_open +EXPORT_SYMBOL vmlinux 0xed320713 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xed37482e genlmsg_put +EXPORT_SYMBOL vmlinux 0xed3db2c1 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed8d8248 dev_set_group +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb5946d __netif_schedule +EXPORT_SYMBOL vmlinux 0xedb8eacf d_move +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedcd8895 should_remove_suid +EXPORT_SYMBOL vmlinux 0xeddc82ad mpage_readpages +EXPORT_SYMBOL vmlinux 0xedeafa6a tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xee1a8e18 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2ee79e cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xee4523eb scm_detach_fds +EXPORT_SYMBOL vmlinux 0xee6a7039 follow_pfn +EXPORT_SYMBOL vmlinux 0xee6e5a47 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xee700f92 tso_count_descs +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9ec3b2 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeec5c5b9 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xeecff055 kdb_current_task +EXPORT_SYMBOL vmlinux 0xeed40742 setup_new_exec +EXPORT_SYMBOL vmlinux 0xeed5a682 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef000b57 netif_device_detach +EXPORT_SYMBOL vmlinux 0xef0679ed tcp_sendpage +EXPORT_SYMBOL vmlinux 0xef3bd6d7 make_kuid +EXPORT_SYMBOL vmlinux 0xef44bdb3 __seq_open_private +EXPORT_SYMBOL vmlinux 0xef5ab0f1 follow_down +EXPORT_SYMBOL vmlinux 0xef6d75ae pci_claim_resource +EXPORT_SYMBOL vmlinux 0xef7773ea dentry_open +EXPORT_SYMBOL vmlinux 0xef80bcdf netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xef89117e gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa02015 vfs_writef +EXPORT_SYMBOL vmlinux 0xefb0498e __nlmsg_put +EXPORT_SYMBOL vmlinux 0xefcbac03 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0059baa setup_arg_pages +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0264abe vme_register_bridge +EXPORT_SYMBOL vmlinux 0xf0294853 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xf0333aae pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xf03f5359 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xf0465bc7 tty_throttle +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06e87c7 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf081fb95 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf084a5ff wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08c9612 pci_get_device +EXPORT_SYMBOL vmlinux 0xf09712c1 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a9ac7a vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xf0b76091 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xf0d0ec81 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf0d24f86 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xf0d6e3de redraw_screen +EXPORT_SYMBOL vmlinux 0xf0e93ba8 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xf0eaffce _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1553a39 dev_close +EXPORT_SYMBOL vmlinux 0xf1604d95 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xf16a0468 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xf1723f12 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf183aa46 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1bc81c0 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcef27 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f69d5e pcie_get_mps +EXPORT_SYMBOL vmlinux 0xf1f8d98b ether_setup +EXPORT_SYMBOL vmlinux 0xf207928c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22d0b89 lwtunnel_input +EXPORT_SYMBOL vmlinux 0xf2376898 blk_finish_request +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25b9b38 param_set_int +EXPORT_SYMBOL vmlinux 0xf25d37c2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xf263ca17 padata_do_serial +EXPORT_SYMBOL vmlinux 0xf26ae5d8 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xf26e9005 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xf27a2cb6 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xf281dc28 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a6b770 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xf2b727e3 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf2c419ae scsi_device_get +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2db288c dev_printk +EXPORT_SYMBOL vmlinux 0xf2f9d5fe nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xf2ffff99 __kernel_write +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf316ce1a bio_put +EXPORT_SYMBOL vmlinux 0xf32c1658 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf343ab07 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3520ee8 tty_vhangup +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3549a45 audit_log_start +EXPORT_SYMBOL vmlinux 0xf35fbab0 pci_pme_active +EXPORT_SYMBOL vmlinux 0xf36c8c25 led_blink_set +EXPORT_SYMBOL vmlinux 0xf3721442 security_path_truncate +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390619c remap_pfn_range +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3b6a59b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf3ca1f24 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xf3d2bcd9 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xf3d3326f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xf3d671f4 sg_miter_next +EXPORT_SYMBOL vmlinux 0xf3dca832 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xf3e43dd7 igrab +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf45b337b insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48a7e1f kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf4908f80 sk_dst_check +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4ad8c71 vm_insert_page +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bccfe2 sock_wake_async +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bf9603 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf4c46779 mount_subtree +EXPORT_SYMBOL vmlinux 0xf4d43c93 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xf4e09050 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xf4e2cfff submit_bh +EXPORT_SYMBOL vmlinux 0xf4e85f68 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf51497d9 filp_open +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf553265d input_unregister_handle +EXPORT_SYMBOL vmlinux 0xf56c7478 sk_common_release +EXPORT_SYMBOL vmlinux 0xf56cf64e mdiobus_write +EXPORT_SYMBOL vmlinux 0xf56fbf99 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xf583ee7d iov_iter_advance +EXPORT_SYMBOL vmlinux 0xf591ab34 generic_read_dir +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a1579e ip_defrag +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c7d0b5 cdev_init +EXPORT_SYMBOL vmlinux 0xf5d0b1d6 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf5d3887f dm_kobject_release +EXPORT_SYMBOL vmlinux 0xf5da96a0 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xf5dad531 contig_page_data +EXPORT_SYMBOL vmlinux 0xf5de55a2 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ef1b41 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xf5f2a9da ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xf6005300 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf606a2ab consume_skb +EXPORT_SYMBOL vmlinux 0xf60d8292 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf60ebb3c udp_prot +EXPORT_SYMBOL vmlinux 0xf618968e __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xf61dcb6c disk_stack_limits +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67fda63 iterate_dir +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf686da2e get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xf6899c5a acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6ab7379 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c950aa devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xf6e2e896 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xf6e80d9c __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6feb651 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xf70404d1 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xf7207793 pnp_is_active +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf729188f open_exec +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf76e4c47 vga_get +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf7891779 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf79e7a81 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7a4e1c6 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xf7a58188 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xf7b37b44 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xf7c88082 unlock_page +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7e62cca tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xf7ea4e48 sock_create +EXPORT_SYMBOL vmlinux 0xf7f4606b processors +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf8097a18 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xf80d3375 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xf8111980 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82d543d follow_down_one +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf836758c find_inode_nowait +EXPORT_SYMBOL vmlinux 0xf83ee688 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xf85dad4b inode_init_once +EXPORT_SYMBOL vmlinux 0xf86c5cb5 set_security_override +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8a911d4 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xf8aaee67 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xf8c5b3d0 simple_setattr +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8fd94c6 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9359cbc sock_from_file +EXPORT_SYMBOL vmlinux 0xf9413492 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xf9477f41 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xf987199c generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xf9985b8e devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b4b1a1 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xf9c38e6c nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xf9e07ca4 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf9e499ce nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa44dfaa pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7010fd kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xfa80ac03 security_path_link +EXPORT_SYMBOL vmlinux 0xfa919799 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad2f60d serio_rescan +EXPORT_SYMBOL vmlinux 0xfadf9a3b dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae77918 locks_init_lock +EXPORT_SYMBOL vmlinux 0xfb033d3c __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0f30d5 elevator_alloc +EXPORT_SYMBOL vmlinux 0xfb2332aa phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xfb28de91 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xfb40b8d7 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xfb457361 up_write +EXPORT_SYMBOL vmlinux 0xfb45fffb sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xfb5c0763 vfs_fsync +EXPORT_SYMBOL vmlinux 0xfb5fe253 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb89b15f x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0xfb8db653 skb_insert +EXPORT_SYMBOL vmlinux 0xfb920a26 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb9df38 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd219d4 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfbede77e backlight_device_register +EXPORT_SYMBOL vmlinux 0xfbf645cf send_sig_info +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1b4586 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xfc1fd439 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc568788 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc734327 queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xfc7d633f dev_load +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9f6acf __ps2_command +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc6d6d9 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xfcd1fa46 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xfcd6c73b ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xfcd8cb2e da903x_query_status +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcdde7da crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfcc634 eth_header_parse +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd1c5145 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd65350e genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xfd6d88d0 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xfd70adab skb_clone_sk +EXPORT_SYMBOL vmlinux 0xfd80fae3 fget +EXPORT_SYMBOL vmlinux 0xfd81453e skb_append +EXPORT_SYMBOL vmlinux 0xfd894ef6 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdda1a0a netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xfde2f05c alloc_file +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfdff417a param_ops_invbool +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe385a0b __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xfe38778f mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xfe4083c1 pci_find_capability +EXPORT_SYMBOL vmlinux 0xfe432728 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xfe4fc492 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xfe5bf016 netpoll_setup +EXPORT_SYMBOL vmlinux 0xfe5d30e9 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5dd4fe input_free_device +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeabd199 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xfeae8d61 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfed9013f vfs_readv +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeed3d85 single_release +EXPORT_SYMBOL vmlinux 0xfeef575c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xff0c9180 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff94e217 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffca9ae4 block_commit_write +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffd9caa7 max8925_bulk_write +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4fc03310 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x659d12d9 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x90b2afbe glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xb90b0f37 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xecbab582 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03f1333b kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0460754b kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08124dc8 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0884235b kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c7f7757 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c91e9d8 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ce52ea1 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0da51dae kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ef8d2eb kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f9863a4 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1299896a kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15351fd6 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1861edf5 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a58feae kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1ebdb448 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20c51643 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21304c3c kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23044a68 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2497eb84 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x24dbe9f6 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x278f255b kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2861a147 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29f44952 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2beea078 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2de15467 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31cdd2fe x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x353ca96d kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x36ff21fc __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x372a4a52 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37eb84ad kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3847d56c kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3849ae3e __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3944f83d kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b4791f6 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b4cd2e1 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b51e86b kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bd1ec1b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d91bbe7 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e094575 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40379eac kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40667e33 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40b9a501 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40ce1e45 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4171b721 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4263f241 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42d75690 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43f4230c __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x453468ff kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4538978c __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45f4fafc gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x477ae3d7 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4939ebf4 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a8cc6ce kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x545562d2 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57224fdd kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59107641 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c768f46 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5dfe59f3 kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5faf7de2 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x605792f6 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62650dc5 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6332d349 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x640fbccd kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a1b99a kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66d6d625 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68138a79 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x685ed628 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x696b5c4d load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x69d3d714 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d4017e8 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70843b75 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709112a5 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72de5cf4 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74c172f0 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78eb86a4 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c59e22e __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d2bd3b2 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7db9ac51 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7eed63b4 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80ceb676 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80ecfb6b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x854f32ad kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85595262 kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x858fd0e9 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86eea45c kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87c6f551 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8945f8f8 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x898524ac kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8af2ae6d kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e51b9da kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x90e8ecfe x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x914a7c39 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91db5b3b kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92bc2486 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92cadc60 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92d713dd __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92e283f6 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94138a84 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9543137a kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x982cd932 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98911d6c kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98d33e2b kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a957722 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c171a59 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9caeee93 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9dcd7dc9 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e0a65d0 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa23a2004 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa479dcb9 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaaa42186 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab9e8cfa kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacbfd5e8 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae0d520a kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xafe69b15 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb349acae kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb574be83 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb3bce24 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc0911ad4 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc0a81520 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc23f3bc8 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc41125ab reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc599bc18 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc636525c kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc70fe8a1 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcc6ac588 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcdd72cb7 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1454f7e kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd2656b75 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3a13620 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7eb738b __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd920e0fa kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda11af86 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda11d794 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde9c017c __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0f1a336 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1b36076 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe29fac17 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe51c14eb kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe546473e kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7196c63 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7bc631a handle_mmio_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7e38cf7 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe868c24a kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8dc9d90 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb47050b kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb63e6e1 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee1314b0 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf17da707 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2f286c4 kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4c1e568 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf50330d0 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5b7cc37 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf817cf2a kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf84761e3 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9557801 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfac4657b kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfafed687 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb5b4e93 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdc68132 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdef79dc kvm_write_guest_page +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2a65147d ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2b523efa ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x376cade8 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x59866436 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x850c88dc ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xc21322c7 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf7dc1e18 ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x18a6c3aa af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x26cce73f af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x341be467 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x6b39b886 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x83c2bbda af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x985004ba af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa9a7d1bc af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xbb5e51ae af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xea6799f9 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x5549eeaa async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x0533349d async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x7c42749c async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x5430bcf7 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8cfc94a9 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x62395562 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6d1ee03 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xbd6e968c async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc0e4d65a async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4f0569e0 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x6d56b927 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x760e9a3e blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x7ebc7c29 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xfc742224 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xf1ed877b crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xf47b48b9 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x125a1e4f cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x1899123d cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x310667e4 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4a4b7a34 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x768c52d0 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x815ff028 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8ce42105 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xb1445782 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xe1bab570 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xeb3ebec1 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x0d6446fd lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0eb67ec5 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2139152b shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x442c3c7a shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x57d8c273 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x9fdafa9f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb6f0b30a shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb741fc48 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdb94b28f mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x633377ac crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x79e7db4f crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x88eea8b9 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xd6375bb6 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x25864ab7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x2436a549 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x9db26d50 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x4e55e895 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x83c5e570 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2053ba34 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x280985e4 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x41a647e0 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x46194bdb ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5a25d11c ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x69b5f263 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7150a7b4 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7378c995 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x784b28e6 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x85674d1e ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x89023ad1 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x926b1709 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbe783aef ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc8b36c34 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcd4d2262 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd7987663 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8b071f8 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde74c09e ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe5974af4 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf92c3c49 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf9b15def ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfdc4cc06 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x041fd141 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0dd26494 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x35a19685 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4aa4c8d2 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x67a2122a ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8ac0014d ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x920b7adf ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb213194c ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb7d3b0a9 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe1790e4b ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe9f6ee6a ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf088d343 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfcec71b7 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x9b6aa750 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5e1ca0c5 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xb0254408 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xd6c2d632 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe1473730 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x09989ef1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1a7dc605 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3639167e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x496e03e3 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ad75f4f bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b9d00fd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6a63f8cb bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6b91d162 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6c67d7ee bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x74062b35 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x77ce967c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f7e2f6e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97ac3a7d bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9e8ac044 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa1b7455a bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaf194867 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1841e9a bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb8517790 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbb59b153 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6477a27 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcc8996d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdf843ce4 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe6136567 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe74cd411 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x045cb168 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2d1e281a btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x595300f7 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9378bdc4 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xae5d2800 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe9e66f63 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x08dc73d3 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x29f2a1a1 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x66f17996 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x7631d04a btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa9b5f4df btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb7df0e7b btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcf13d7c6 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xdcea162b btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xeb5eb258 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf3b824f0 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfeb30792 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3767f393 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6313e83e btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7a65aa9c btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7daf24a4 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x906b7979 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9b13d838 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xad1386e6 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc0d92e4c btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc26bc649 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf4cca399 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf871b45f btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x02d3b705 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xd9fe5d78 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xca001038 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xc9de9884 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xc81d8af2 scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3f2c0830 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0719bd1c adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0ab401f6 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x120826a9 adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x1233f9ed adf_update_ring_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x188a83d2 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x36c60148 adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3d4ea42f adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3d621558 adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4436e913 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x54a13085 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x619ef49b adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x63b2f6f6 adf_enable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6bb04b31 adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x871be13d adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x885831e8 adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8c7d7a32 adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8dde686a adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x96f2c86a adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x978d2155 adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x97fd7299 adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa1bcca70 adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa284c164 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa7f6ef48 adf_disable_vf2pf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xac4b5575 adf_disable_pf2vf_interrupts +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xad3af966 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb8e339d9 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb9820288 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbc253a64 adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbd7b8680 adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc4e6c22f adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd025c156 adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe959a934 adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xed259a79 adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf3e462c3 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf7ac98f1 adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xfa61d108 adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x185aec38 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x20ec4815 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2e24f92c dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd52c3af4 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd70c6bb5 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x06d289da hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1ea6ab97 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8068fe0d hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x06898670 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x16bdc195 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1e962d12 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc88aa86a vchan_init +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x9b1af1e4 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x07811558 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x07a0f0ff edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c0364d6 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1297c924 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x15549991 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x536bc2f1 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x63f36e78 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6beae606 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7a8447e4 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x84994799 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa33af4fc edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa58e9c95 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb3d9ef3a edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8789faf edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbb7a6c5f edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd2e89101 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd855669e edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd5b9e08 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf0d25d0d edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf47b395b edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4c4364e edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd1b661f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff087f09 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x81d75507 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xd3cc2686 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x61dacb3d fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x714f45cd of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd854cef4 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe7edfbcb fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xeceee6a0 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf85b9ef1 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x7e123df7 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x813bf45f bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x001afba7 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe3f7840c __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0a306955 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6e4365af drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdc5e5040 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x591a75ee ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe5c00c2f ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe86000a6 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06b0b971 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06c905e3 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cb10bec __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x18230824 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1dff0ed7 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27731852 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2ac83e55 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2c3e0c29 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2fe6aa81 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33d7c338 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a5756b1 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4a485786 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55ef1056 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5671e32f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x661dda7b hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x692c38a1 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d6ea855 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6fca4078 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7f19f9f0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x856bcece hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ffd873c hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9464d92e hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9887409e hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad62d6f4 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4083e8c hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb5304ad7 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb631ac7f hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb9cf61e8 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf00c980 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1ad2a6a hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd85358e0 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdb20c761 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdef63a1f hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf0eaa7d2 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5a10c31 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdd17d0d hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x17143227 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x037c8f78 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x28ee8e0e roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2a9fdf85 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4833aaf4 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x59fa256e roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf58fdc04 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x00244907 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x15e79719 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1725771e sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x42065958 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4de04972 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8ee319df sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa4cd4688 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcbd66cd0 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xffe6df86 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x477dc791 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0512d31c hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1bd7cb38 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x677c9061 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6a04f065 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x70dc2a82 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x792d3ade hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x96ac8c31 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x96d2eefc hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabb598f0 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xad702b48 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb5341eb2 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbf8bdad3 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc0d698c9 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce2a6bee hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd213c38e hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdfceaa9f hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xef1bbb6a hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1a25cd8a hv_do_hypercall +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1bb1498c vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x25a0a3d2 vmbus_cpu_number_to_vp_number +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2ab2628a vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4f00cc82 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6bef4af9 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x732f58b4 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8cf6dac9 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9ec87616 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xac8eeacd vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc84ede57 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xce3b222f vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd6eff206 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xde1d99f8 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf21ac859 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfe4543f6 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xff5daf2e vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4a853eec adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6b369f5a adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xa876c0f8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x07ff80aa pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0884c1b9 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x20702b36 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x373812d2 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3c68438a pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x448d584b pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a0e1515 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6c503faf pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6fc96dfa pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x71385362 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9eb52b01 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa353639b pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa727603a pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xef723af2 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfaf387e9 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x0d8069a2 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1f42bfc9 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x342d5287 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x34d1630f intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb385fe94 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xeb584f23 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfd542d98 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x235c2f5a stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2f2ce584 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x79e1cb95 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x98b43566 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xfaf997a1 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b8ea87f i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa3fda99c i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb1b60ecd i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd02fc246 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdde29748 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x3e8168c0 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x0011d790 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x30167eb9 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x902be72d i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb11353fc i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x448c8f57 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5033bc02 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xe4ea431a bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5ad2f81c ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x62d87256 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6cf3237c ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6d70febe ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x75ed69de ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x84fb3790 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8e0f02a3 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb2c8747b ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe7e57e4d ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x96739c01 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe4cc8598 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x9392a582 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xb6cfe41c bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xbb18cbd8 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0782ba32 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x17e9ce36 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4b7945b0 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x812d7754 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x83c3b10b adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9762eab8 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa4c827a3 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe98eee7 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdd6d6283 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe6e12804 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe72432e4 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfe8e7d16 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x070e9023 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x09305da6 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15f3eead iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x162cd7b5 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e55518f iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x328774fc iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39cb12ea iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3da67493 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x41ada858 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x523fb0ea iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5b8fcecf iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d72cb4d devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x656e8abf iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x73c459f4 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76ee61ce iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f5de43f iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9af66f33 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa6cd4ac8 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xac710a73 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad6b04dd iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb0af92c5 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4f542da iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb7bff6aa iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1e4b002 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe66306b2 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe67619eb iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb515ebb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf200e5bc devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfbc03631 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfc6be998 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff5a670b iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x20f92854 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xd313b98b adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x519f5672 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5eac5ee5 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x90641296 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x048888b0 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x258a2eb0 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x79c09bec cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x02d55d2d cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x913c2037 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0a3d5a4d tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0ca6b359 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x8929c8c1 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xe6aae170 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2c498bde wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x30f4f6ed wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6d4feaf1 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6e8a4d70 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7864a33a wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa9879e8f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xab8d2f3b wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbc7902bd wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd1b7679 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd97ff781 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe1e0eb29 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfc5ef673 wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b30e43f ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0fc439ae ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1557eec5 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x242823c4 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5481c6bc ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x54b0f154 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb2476113 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd932fbfa ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd9393708 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x05831fc3 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x097c580e gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2ee94614 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x640fdb88 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6c36b244 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x77b65b2b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x92f31397 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9bc9046e gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa41c3761 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa9b2948e gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb4e1426e gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbeabec5f gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd9c01fb5 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xea3c0c76 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xefcd30fa gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfbff4614 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfc41f25d gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x238a6dcf led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3970cec7 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5f3887b2 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdb1ea6ee led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe78faeb9 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf527eaa1 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0f4cd463 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x136f1eec lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1ce47f64 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2367b7c3 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x24bbbaa6 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x268c0949 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6d2546e4 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x77cd13bd lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x795eebf4 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa0757af8 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfa683774 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0fb81a48 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x11fc307f mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2b81d341 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x34aff4f9 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x55c057ac mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7fc87c34 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x836ed383 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8d9dd6df mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa6d52d31 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbff36113 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd75d0e65 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf576796a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf8cf2ac8 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00b74659 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2a1a7a99 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x374f45ea __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3a4dfef7 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x48991e9c __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f124797 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x614e860f __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x647af374 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6724de29 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6726a0c1 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68f1ea6d __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7114cfcc __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x78c57fa5 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7cb4bd6f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x816ebfe0 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x833b99dd __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8afe3e2b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x912566ef __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92c55e92 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9c59320b __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa7004101 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf2376ac __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb3942afe __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4cffcbb __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb9c28744 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc0bd3171 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc773563c __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd81ad8c9 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe30b6b2a __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf6169c53 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcb52b5f __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x150733ff dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x64c5dd46 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x68272973 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6aebc656 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7336115e dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x75ebd82c dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa93184e7 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd1693a0c dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xea530a89 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x64eeaad8 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x40ad4765 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x695081c8 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x84025b75 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8acbb964 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa35e3e9a dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcd65a52c dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd0416076 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x9f308f0a dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xcec2be0a dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2cccf629 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a7d6d3d dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x814b5b42 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x93b3f1fd dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb5857528 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd873c865 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x604bd832 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x09040c47 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x207068e7 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4026b8e3 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5c05a584 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6cce8964 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6fbd8cf7 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7f396992 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8bf670c6 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcbd4c9a1 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf63e867d saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0d4bf0e5 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1b8297de saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x43aa81b2 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa5690639 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc67e3a7e saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xde25d80a saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf55ad5a7 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x05b24cd8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1351bb45 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x18876785 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x281861e6 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x287c73da smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x296f9c8b sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x355b88fd sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3594b60a smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x49d02a81 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x522a7c05 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x55d6b605 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ad30d4d smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x93630a81 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x980f89dd smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa61a584e sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb76837fe sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xea802efe smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x73080d44 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xcb39c862 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x1e7168e0 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x1a3e420c media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x206c8420 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x26782f46 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x42665398 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x481dc9d0 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x51a11b93 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x574c7b32 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x70f1fba3 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x74f8f2eb media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x8a5e51ad media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xade7d663 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xc1ada721 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xc9433b5d __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd356cff5 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xd53e81c6 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xd91cd05a media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xe95f2e6d __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xf539eaa7 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xd96ea473 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0f104edf mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x173df0a6 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x292a4c2b mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x37db7df1 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39bf3096 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5d9dcc4a mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6556ff64 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x87900e35 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8c64e3c7 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8f3fff9f mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x985ecb00 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9c2fb81e mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb5e430ce mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb7f4ccb1 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbb7a0656 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc5fc99e4 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcb029727 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdbd22026 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf805b0cd mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x06190e1e saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0800c172 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0f7913fe saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x14f12f73 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18e41ba6 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1f0f30ab saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x21770642 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x22e049b1 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x262a6e3a saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3dec205c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x403e20b9 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x45c9e260 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x47163789 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4bf233cb saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4f539d99 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x517dbb15 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7e43b2d7 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9d362026 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6d58645 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1e8de804 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x786a1a86 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x925473bb ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa0b591c2 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb26a283f ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfa208104 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfacc378e ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x4ece3417 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x8531db2a radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x99b1fc52 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xa594686f radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xe551869e radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xa1d9bceb radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xaf4379eb radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x02db1a6a rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0e1b5df7 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x264a8b3c rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2ad1d3b0 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37c163e3 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4049da90 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x40a66c10 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x44d6048c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x47a1dd80 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5284067e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x55335b86 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5921bdaf rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70d72959 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb99c1e67 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc28901b1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc5894f9 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe7359fc0 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe84ae3c9 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf742c171 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x2bd78619 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x833ff603 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x024c2b1e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x27e070dc r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x78a46e43 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x69929ec0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x73f39745 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xa96c21ec tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xb9a32e00 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x2aca2510 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa48dbed4 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xc3448f4e tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe8d56ab6 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xc4edc89c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11d4d496 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x13420b22 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x262ff0aa cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x36b2c23a cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x58d1e295 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x58f91fdf is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x644a413d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x714b0b1c cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7cb7b5da cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8baef2b8 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e511a25 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x957c98c9 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9a387dd5 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbc596f24 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd04671f8 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xef4bfa77 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf02d2ec5 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf356f943 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf5deef13 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfad94409 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x43d1c083 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8a1b84d4 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x02b18c9e em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0eb49b7f em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x48a3023a em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8cd1c1e3 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3eb4936 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa85617a5 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa870d245 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaabf8b75 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaf1b5e9b em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb108f811 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb2878382 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbab59296 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcc10191d em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe2499cf5 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe878916a em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xecefd570 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf29f0db2 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf710dbfd em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x00b17982 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x15dc4698 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5a2320c0 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xb7581437 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x08e7e16d v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x36760f1c v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9abc916f v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa140c674 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xbc7eae33 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc530e62b v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x57f86670 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x91553ace v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0de86da9 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0e8242cd v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x15830551 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x24b10ccc v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x38d959c5 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3c01139f v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x488f69b5 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4a070a5f v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x535cec47 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57c41b54 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58f4fdb6 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x72b87ea2 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x88c04486 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8e18e680 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x969dbf51 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a967e7d v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa7e24b75 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb943e45e v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc0bde0af v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc28f093f v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc3517f03 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc7ba3eff v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd24b991e v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3fb65da v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed538467 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf26eec8c v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfea6fbe7 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f92f93e videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x11144fec videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2155cddf videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x31349ef6 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x37032f77 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x397527d9 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3b59d290 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x43c40d51 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x441da083 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4a77f13c videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e95f353 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f23880b videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5142776f videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6988db66 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x79c8ce27 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8127e0cd videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8ef5a29c videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa0c68358 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xba90b373 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc1990ce7 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcbef296f videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd0360d98 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeee705bb videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf6845b37 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2bbf5f38 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xeb5cb691 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf5cd07e9 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x10a81d81 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3beff5a3 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6e3020c4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb804bc70 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x0c713ebc videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x500ed03b videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x6dad9abe videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x01562437 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f5f28d8 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1bc5c4fd vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1d6b0363 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x35fbb3b7 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4f72defc vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50464ac4 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x559036de vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5b15e374 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5b7d4e07 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x785ad3ef vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c5a30ae vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8e12effc vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa969bed7 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb08e4a50 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc5a3876b vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdb60ee37 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf0c6faa9 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0f31962b vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x46b20651 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x543cec2a vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xe18541a5 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x57c775a5 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x15e383ec vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1b2dff5a vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x237105df vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x25731764 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x288dc7df vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x34ed62b8 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x37a62a2f vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4caaea77 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x52495639 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x528d8e1a vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6da4e35f _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6e5cac71 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7564a767 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x79ba0f2c vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9b2466ac vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9fee22b6 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaa48ad54 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xad35793e vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xadc33045 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaefbb631 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb64bce75 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xba03d0fb vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbbbef6b5 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc311ff6b vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd7266ffd vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd7918890 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdfc28246 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe4e5b849 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe81da7cb vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xebfdbc7d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xec5e4fc3 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf6360d01 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xa2328f07 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x085c1c98 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0bba3978 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28d20b15 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31e3d76e __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x327897b5 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3740e82b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41f07522 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x42340e2c v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46f56c7e v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x482e803a v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4be8b674 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58c01870 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5be37f43 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x60f38635 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x65b5cd04 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x662058fa v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7157a76c v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74be828f v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a85f5d7 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x82949180 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fa601e9 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92704c4a v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x929b40ef v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98545b10 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x99eb1907 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9a43208d v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcad9c14d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcb85dfb7 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc1182a1 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcce8644b v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcea1ef83 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd4387e40 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0dd7365 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe89bb4d2 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5956f8c __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6eab008 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x120bac51 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8641afed pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa4b1f84b pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3726174b da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3d5ac055 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x70e24f42 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa9c24451 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc055fc43 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcdcfc531 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xfa7af527 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x1c545d60 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x659b4c6a intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7addc09f intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7f3435dc intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xedcded12 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0a5b052a kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0c999c96 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1baf199a kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x20ff8376 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x276fd3a0 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3e06a606 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc2e5d7a6 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd15f1cf3 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4169de15 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xdcb5e59b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe92986c3 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x250080ac lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2b814d32 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x67e30215 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x814b659b lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x969fb10a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa5fb0022 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf41b3f1f lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x30b23f98 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xe42b44ab lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xec203feb lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2e9ab83c mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3c954d54 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6888c91b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7c2f0674 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8514413e mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x914f0a8f mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0a3b3185 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1565123b pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5d499442 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6757bdd8 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6cbb5004 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8a4d624a pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9c02e023 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc9f37e2b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd371d97a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xda5c2809 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe81dbad1 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xce94b22a pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xe2a1af7e pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4c4fb8d3 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x750b4e08 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7daaa47b pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe6e01871 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfeefb280 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x03b29ed0 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0766403c rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x18e0a2d6 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2367a311 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x301c2ab8 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x37ea9740 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x49a11cad rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4b842dc9 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x567d562f rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x58701e7c rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6116345c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7774bdf6 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9865ee17 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa37e4982 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3f19f0d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xad5cd63f rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb8b2ff5d rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc5827ec4 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc7ee4549 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcf779db2 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd9ca8322 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe91ac2f0 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf38d4b4d rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfbc06ff0 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5dfa4c1f rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5fe6e148 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x619386fb rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6367623f rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x767f404b rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x76dd30e7 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9150ec7b rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x983398d8 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x99dffa09 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa8c515de rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdc97e05f rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe87e7841 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xea2ee017 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x01250889 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0284a3a3 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09703b53 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09a36afe si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x121bda94 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19992eb1 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x24bc57b7 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x254bffb6 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2f4f1758 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x315dac6a si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x332593e0 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x341194fc si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x34ddd49b si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x38c34859 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39cf7378 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3e38e0b3 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ebaf738 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3f9b39eb si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x52493831 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54745808 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d5bfbff si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x71d8958b si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7a5ede6d si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x806225e5 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x88ea4b3d si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f7aff57 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9100582c si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xae134031 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb13f0101 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb312c984 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc08f48ea si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcdfde383 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf00a002 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2bf7201 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x719b2177 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x71e9239d sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9340d6fc sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xddab4d20 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfb1e7528 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x398a5fa0 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x518ed453 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x9bdd4725 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc976b50d am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x57c91759 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x61cb5fd7 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x780e93ec tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbde0777a tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xa571a99e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2a73c1ee cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x49bb67e8 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9c5eaa93 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa9be9e81 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x613fb8ca enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x633b5bd2 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6cc647d3 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6d96dc03 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x866daa14 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa03473b1 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xda6ebd3b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf30fe93a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x22370b8c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2fd5d5d9 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x81cea661 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8faf0d35 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb49682da lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc3fbd1f8 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe4de0ad3 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf991ceb9 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x00eedd2d mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0112907d mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0e9e4de2 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x19942722 mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1be98ab8 mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x20833e41 mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x45986acb mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x485339de mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x48bac544 mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4d400312 mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4e36c950 mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5085cf5f mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x54ea3fc9 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5a9d0a35 mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5fff897c mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x698616a4 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x69d3cb2e mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x70acfc9b mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x845b6d81 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9003220a mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x96e4c090 mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa691dcc2 mei_cldev_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbda7da65 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd09620f2 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdf5d8c3e mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfd8cbcfd mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2e30d970 vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4cf55b4e vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x5e1cd28c vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x8b8ad67a vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xeca851d7 vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x00c6badf sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x08ad1e9a sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x154832c1 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x293e3536 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2ea98917 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3140e78d sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x61ac28a6 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x71c1ceb7 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9de518b0 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb9ce55ae sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc8679b0a sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd1ed1a3a sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xda817576 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdaf20f3f sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x154e26f2 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x25f57d48 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b850e64 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x512be603 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x77c3dc8a sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8534ac02 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa099de6e sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbed86fe1 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcba5eeb0 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x34d3b6b6 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc9cd9320 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf6e4b6c8 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x276bb43f cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xaac03069 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd4927bb9 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x479e6753 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7f436db1 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc47ca76f cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xde1e50f6 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x041b8670 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x08b8c3fb __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x094a6d31 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1415170c mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x201584ab mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31a4aa0c mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32e942e7 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x339d8b84 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x366f468d register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3acc5d7f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3d9e7ef6 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x400285a8 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x408ff7e6 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x443498d3 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f291313 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51321f59 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53f83ec9 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x577c0d1b kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b88745a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x605343cd __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x663ce3f7 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x71c6ae57 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x767491a6 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x778f7af7 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e5c25ce mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80600743 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c723bb6 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x92c0462d mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x945204c7 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2302bed mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb576e856 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb7558115 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbe3dfdc2 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc386a7f8 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc6003a4d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7658112 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcbac26af mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd611712c mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd619faf7 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9eb5d83 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xebe6fb3d unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf650e90e mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1c7abd01 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x317949ee deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x59e2b33f mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd9509518 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xfcf888b4 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x83d063eb nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xe25858c8 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x96303d76 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x7ab5d1a8 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd17692ea onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xb1489de3 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x03bcc71e ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1d15befe ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x24ceab09 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3263ee44 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x484964aa ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4bccb07b ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x57929c7c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5ec06824 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66bdbc52 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x88ce46c6 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa59ef2a8 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa844d12c ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xad92f6a5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc8392f50 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x83f38a67 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xa1f0ffba arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2be9ef9d c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x42790330 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x42d97d64 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x94d15e21 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa79c95e8 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd8db32aa register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1cfc88dd free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2de00cf6 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3b5af30a alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x42587398 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5a26b30e alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6efaaf27 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7817051d can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a90366f can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9b254e9a can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa1bb11a8 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb782e974 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbc4c526c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcb0ab177 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd50259a0 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd8c7761c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xda42e509 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe3d7efdd open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf5e7e7bb alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x012de3aa alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x56f0401a free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5f8135d0 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb94f6e61 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x449701df unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x45f0f094 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x55edb2d9 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5ce51646 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00420321 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x006776e9 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x022bd4f1 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x024175b3 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04ca6d41 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c29675c mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dfa8dc4 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ec40284 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10a78c42 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x122c573b mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12607fe3 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1507cce5 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15d33c7a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x160fd4a9 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bcb10d2 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e703820 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2122cd61 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25c4f4bb mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x263c7f11 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d5ae87c mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f440ed5 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33d0c625 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34d9007b mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34e3cc5b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34f44b23 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34fc42d0 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3553b50b mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36088bb2 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x360dc854 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x368c9aee mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a67e2ef mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ba2875a mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x409b7fc8 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42ae75ee mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43a1f734 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43a881f0 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43f07b76 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45c859b6 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49763ee5 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5008d861 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50ddf552 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52e0e2cd mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54eaf043 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x578abb90 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c58c9b1 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d57c78f mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6326918a mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x637b84c4 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65663e43 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65f20f12 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6700b5a2 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a15ebdd mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dc23919 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72001c74 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73efd665 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74a324c2 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7525e3c8 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x762bef4f mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x769f66a5 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e58f1a2 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x801b6b50 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8453a0b6 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86f1163a mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x892fd413 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89ac20ec mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a0bda93 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af399d2 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c1b5845 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ef70f81 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f26e057 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90ca4957 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x941a40a1 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95f2dc9f mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9daa1ca4 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5cbff83 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7a62a8b mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7fe413f mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa210c6b mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaabb3754 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaf29919 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab9edd0b mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaba619f6 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf7869d2 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3d5de17 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb49eb362 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8dcb716 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9224d5a mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbea35399 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbee8623c mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbef3bebc mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfda9081 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0c57f9e mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7bce171 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9b7d084 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf15a84f mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfc389e1 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfe9262f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7c1ff8c mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8b09296 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda1741be mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb3d6f3b mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfbf2c82 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdff7f583 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdffa9ebc mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe22bd632 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe33099f5 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe332ca28 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe55d9565 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5ad6732 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6a406dd mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6e7af19 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe70227b0 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe94ea66f mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed2f0a9e mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee7f7b6d mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee9ad7f4 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeffff96c mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf072c498 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf095ec19 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf349be3d mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4032ac5 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf454b3ca mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf91cec74 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb4ff8f5 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cc1d25c mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12455e22 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2140fc38 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23bf6900 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27522730 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33694ae2 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a9f97f7 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3bcb8037 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x448747a7 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45bfad3a mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51565626 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57ea0493 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ba5275e mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66a9f222 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69f60b03 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ae9c735 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e5ba658 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70606bed mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70d46b7b mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71775826 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x726c4310 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8229b3fb mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82eea38e mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8603dad7 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ce22ae3 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94f87839 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x955c24e0 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a962559 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa35793e2 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8956f27 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb51f85fc mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb677c54d mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf653cf5 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd16f562a mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2636df4 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbd3fbc9 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe49e9282 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7091928 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9de1ed1 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea588f12 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebc0ef6f mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee446ede mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef3d533d mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf13ad360 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1e0d9ac mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8d892b2 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1f6a643e stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x79af1a83 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x83f45436 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa2748759 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x02f522ef stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x2a45acf4 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x656c2f63 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xdebe8526 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1960cbcb cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1e6821c6 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3f4c63fc cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3fb2313a cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6b6cd979 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x75995494 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x77586e85 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x835329db cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8f5adbe2 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x97796fdc cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xad704ff3 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xad966c01 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc6966b89 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc6ac3f2c cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc9c17946 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x16a3c276 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xad1ea726 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x128949ec macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4552dd66 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x65e6fb24 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xba9a3e80 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x078a0e96 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x25b81cf3 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x30a35570 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8334e3a5 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x85086f7f bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9ff6a7ab bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc16df405 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd0952bac bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe23212bf bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xed29ab59 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf27d8180 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x037d0433 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4711d753 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb27375ad usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc8e237e7 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x13554f5c cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x325c1029 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3e2f5555 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x92b2e30d cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa34be16f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa5578156 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa7887363 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe7b32723 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xeba73eac cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9344995b rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xafb65c5e generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb5bd4d6a rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbbb4ea12 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc623bc52 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf8271551 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x06c3344a usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0dca00b8 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e2d4939 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f859fb2 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x22d040c4 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2699c25a usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3600ce05 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3ab236d5 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b3b8ab4 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4d810efc usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4faaf135 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5644f3dd usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6da68e8a usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77197bdc usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8377a611 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x96c74715 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa39afded usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa531369f usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xafe6101a usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb7b8e76 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbd1c679b usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc649f31d usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8af54df usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd196a9ef usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb700a73 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd7d7139 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde5e56fb usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe43ede47 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5bfdffa usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xec4b97d7 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1c9de37 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc58123b usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x9b60069d vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf1727e0e vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04593b1f i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x366888ec i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3f376aec i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x434dca9c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4b8ff02e i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4be0d189 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x535953d8 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x686dc08b i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6d8551c1 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x75a1f673 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9622c9f7 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xafe5cb49 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb5d903a1 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe5515b68 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf6a9b06d i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf84cb862 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x04e8a312 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6ae4f9a0 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xbf98da35 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xced6f2ab cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x764aacf9 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x4e668905 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc395814e il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc3979323 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd35e1a54 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xffd9af3e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0370a674 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a7d9fc1 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0b9c65ec iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x12184ae9 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x13c2881c __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1c7d69cb __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34614aef __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x377de31a __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47f59db0 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4a564fe9 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4bf59303 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4f135232 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x512a2413 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5253cd69 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x52fd72d0 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5ee5ab54 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6bc33a6c iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6edf1ed8 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x70456429 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x78357d70 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7e185df9 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8557c709 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaadab81d iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4a8fc91 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd49b4b3e iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd8d8044a iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d255ca iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe39f35df iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xed0fe09a iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x01d692da lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x096239f5 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x28ac0900 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x40001804 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x52fa8161 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x56fd3703 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5c9ed723 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x68e7107c lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7aa3655b lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x83903c0c __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x98a163c3 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd641789e lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe6d85bcc lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xea4d93bd lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf6b1ce2b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfca47688 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0913c49d lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1377dd34 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3472b33e lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x43b7795f lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x69d2c3fa lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8fce60a5 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa2f3ce94 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xcbf80acd lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0999618f mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x09de4fee mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x176c67cf mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x257a615c mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x397e1b3e mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3eeb18cd mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4372b0fb mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x474f8983 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4e9b3ded mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5b4bec4b mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5f30cc2c mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7ead1295 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x962851c5 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9a8e5ce3 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9aa4df88 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa4557049 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbb38116e mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc2b22be6 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd964a8ba mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x02df9f2f p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x04c4e523 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x06f41317 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x33220421 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x46532fe3 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4a6dbfac p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8788f612 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd0e4cbfd p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe758b41a p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x09527f85 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0f5ffc8b dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbb943c57 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf056374c rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0217baf8 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1dabf2a3 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2e22a84c rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x354519f7 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3744a952 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x407b82c4 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4703769f rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x49506836 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4e76b0c1 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5a214935 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5d7e699d rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5e1fcb34 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x742275a6 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7479f4ab rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x80de824e rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x833ddaeb rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x91d4f01b rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x92f250f1 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc39af6b4 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd487da56 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd544a90b rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdd21dbb0 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdf30374b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe0e1e5ad rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe4cd7ab2 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xecf121c7 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xff8e36b3 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x06edb4c6 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4016a207 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x44e822f0 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4692ecab rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7c0a544c rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x80ec47cb rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x86c9c054 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x925dfac4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa2a716dc rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa5fc6be5 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa83711d4 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa8884964 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xad4c863e rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2801752 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdbca06cc rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf313d362 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf4feb036 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2c418447 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6c02a02e rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc031a755 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf3d27633 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x04786415 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x066d5404 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x100e65b5 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x26a2ddd7 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x26e6c6aa rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2c65317b rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c037206 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a0caa17 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f9c56d4 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x556dcf9e rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x596c5169 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6461f5cb rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x693a1141 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ae88f8c rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b5d4775 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7db660e8 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85d32212 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85fc679d rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x928bc1d1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x94088407 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x95f74461 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9c6f8bfb rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9cb9ebfc rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9dd1b853 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa184eb10 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa490dcad rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5edf810 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa776818b rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa949850d rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa85c2db rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xadacf932 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb6dc1402 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbad84c2e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe01acdbd rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0ea185c rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf48d3810 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5d886dc rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfee18b20 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x03879c1d rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0b5bf71f rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0d6615f7 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0f2cecc3 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x13165da4 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x78afe3ac rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x950e8370 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaf6b35f9 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc613d688 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xda91cbc8 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe7d12326 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf6400786 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfb648a99 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00ee14e0 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0cd44624 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e7ff3e7 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x192b6a0c rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x21d944e5 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x232bbce5 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33958611 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x399456d6 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ba8f366 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5bab7dd4 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5fedb12f rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64d680d4 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x670f0410 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x689c2c30 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69fce5e4 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6cd08f30 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x71c249ed rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73ad0852 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7d51d154 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f3ad167 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f90d003 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80c7168a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x85e1f8aa rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x89a3932e rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e274993 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e521f07 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x916f0482 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9431948d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x969f178b rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98a6842f rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9da18fe1 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e96174e rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f3ce76f rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8d751f1 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb21e7cff rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4594246 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbeeffd63 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf5ac464 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc1f040a7 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcbd4899e rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd100ec30 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb8820f1 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb9fc5c5 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xde959306 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfdbef2fe rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe124355 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x52987f42 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x649f6c82 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6e4f312d rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7e05013a rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc5af2d33 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x08e53d7c rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8e60fe28 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xaaa796e3 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf4a9a17a rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x441955c7 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4c5f9a53 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x591eb8b0 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60c47e55 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e8be810 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7065d5ed rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f189407 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x81f3370b rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x82979ef5 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x87205906 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x95799b2f rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb0fa6835 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc60edaff rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd0716173 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xed933218 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee71065a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x273ac8a3 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x41cdd2ae wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8302002d wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0269e008 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x079dd36e wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d8fecb6 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0ec4769b wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fac588e wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10ba06f2 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1196275c wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x16f91e00 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1afb00dc wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1cf63d0d wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x28132df1 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2ed5f818 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2f919e76 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fe1f527 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x305ca1a9 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e1c7d43 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e68cec0 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49daf236 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x508139b0 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x670769a9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7306f772 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82963422 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f73947c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x92cad675 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x947a652c wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9918c096 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ebf00bc wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9eff9d9b wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa589c303 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb30b85fe wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3fd8ee6 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb8ef4f98 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbb262ce3 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc275130d wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd608666 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd1fcd2d3 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd330dd15 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd6eda7cd wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfe957e6 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0532459 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5c8ecf4 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xede0d6ed wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf34edc47 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf763451e wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x3eb4064c nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x4c4a67de mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xc7af41c7 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x5a6e5a25 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x70d0bb34 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x95fccc67 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9f553238 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1b9cdfc0 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x32af3f4d st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x523981d4 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5eb139bd st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x70ae5ff8 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xadd4e463 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcb232642 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xee9858ff st_nci_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x10358fda ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x78aaccd6 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x91dd5674 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x51e02562 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x54d170dc devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8ceed7c0 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa4d8b6a5 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xaffe641c devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xbdfb4ac6 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x33889956 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x883407a5 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xc168c2c7 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xed8b978e intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x14b3583d asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x77d5cd41 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0xa6c87106 intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x64ebe677 wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xa9b7afd8 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc5e3dddf wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe2426710 wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2c4aa90b pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc8e0c9c7 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe125ced4 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x181e53b9 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x2c766d19 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x8c5e6b4c pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xe0dc6d87 pwm_lpss_bxt_info +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x537e4325 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x94dc18d1 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd513fba7 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x189e4529 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x38e15e5a wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5a8cb10e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x639b874c wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa626b0d7 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbba50388 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x668d8956 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x01dea9f6 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x04192acf cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07d3ff0d cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x195f0c55 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bc3d7e5 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f004245 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30b5561f cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x312e395e cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x355d7e1a cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d87a977 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x40eb26b9 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x412978ad cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57c411cb cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x58ac341b cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e5d3806 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x640416fc cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65ba7aee cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69b8fb1c cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76c88c5e cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x79ea6d19 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x81a362e9 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8ae1cf1f cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f94e933 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93fa35fb cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95f229df cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99eaf528 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa228aa49 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa50f404d cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad60ec27 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae84baec cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf985271 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb739ddf1 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb8468bd2 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe7dae30 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbf1ead16 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0db62ed cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3012d07 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3f3b7ee cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca1e6315 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd16282d8 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd55bb83d cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6e3833f cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6e7d16c cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf38ea458 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf44901c2 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf97f1298 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3dfb027a fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42ddb4ee fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4534edbc fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4b271d33 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x61eb47d7 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x67bba748 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6e68a1a4 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x70439822 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7287ef4a fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x781739c7 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb5042015 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbfadc6a8 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd01b124a fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd27634cd fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd9f04de5 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xff74a94f fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4f6f9026 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6053e6a2 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6cceae87 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x86616c40 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc64b3c25 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xfa70bec9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02152e94 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x051f3295 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0917398f iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e0b1c42 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2180da2f iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c24f42c iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c9be1cd iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x412a82b3 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42520667 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42686360 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45ffd171 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x472bbed0 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4bd6f377 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e205306 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x507f0dc1 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c32aa04 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x655c93ce iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d293792 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x74acfcef iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7538d21a __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78b6e021 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x888eef1c iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97e4f647 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9820cc6b iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaaea7caf iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb46686a1 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb4d69fd0 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb830cbce iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd6a783c iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbea22ea3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc799098a iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8c5b599 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9b97c90 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce25b4a0 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd85fd001 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8d87017 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe94c580c iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb492b18 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed63034e iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xedc696db iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf78523de iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf9d55a50 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x051a91ff iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c861e0c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x347f325c iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4b24a3b9 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x60b9fd61 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x68d66634 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6a7d1dea iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x778a9584 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x79df0733 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9f3219ab iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa0e44faa iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaaad5930 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc2f42a15 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdcb2e85e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe7042f63 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf9ad1ef8 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfd5caf0f iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a9ca705 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x16c5406a sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x233f27be sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24ac260f sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3491d9fe sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x367b94c9 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x391dd670 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a7b4b56 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67321438 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x68977477 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x70d34527 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x726b7c0e sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7e1e57a9 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x91efaf9e sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x925f0d4a sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xab56d756 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf1651ca sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xba1d5312 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xccfdbefc sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce5de4d2 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb1e2089 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdd3c386b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf84991d4 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff99ba09 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0203786b iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x075bc97a iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10bab103 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10da0f9f iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16845c27 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x19a033f6 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x19c3a7cb iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d4ae905 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22c887eb iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23d04903 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32c48ecd iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37472589 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x39f47036 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c7e851a iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45aa7b1d iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e91f456 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53a8a9f0 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x555a7960 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b56428d iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69728743 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c7b1a97 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x830f3ef0 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85a69828 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x865ff84e iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b686414 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8deee252 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96e66a97 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa64b9932 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc22d2ce4 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc80be25d iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd34b4a97 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd542882e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9201469 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe22d58e0 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe30ba46c iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb00eea4 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xebc7fd04 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6bf864b iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf91b6d10 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb6483dc iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0ad960ee sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x62cbbc21 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8d5c1383 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xfb2837ab sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x2aad2f83 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6b27d8a4 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x958934c6 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc651be0e srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf49cbf11 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf4cd6140 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xff900a0c srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x28600cec ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x49510e77 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x72d4d8c5 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x736168f7 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x787b97a4 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x7e7f0590 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe53a464e ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x01834fe6 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x41e484c5 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x4cf3b9eb ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x66482d82 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7aa60fee ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xad04f42d ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xea7560b2 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x36b796e6 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x66ac2a86 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x880a18ec spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9230ca7a spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbb67843c spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x364a3156 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x431f87be dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa5642d75 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb14dfd0a dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x02258df8 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x257d7865 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2c418fc9 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2f74482c spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3f3db8e5 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x480fb424 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4eee7d75 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x52c2061f spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5f604099 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7452c14a spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x919e2d91 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb004c551 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb1e7ad64 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb47ec74a __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb5d005ae spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbbcf2660 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbf67775b spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcaa6ce5f spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x3ee28bdb ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01a2370e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0744a0f9 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b4ae36e comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c01f331 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x18d5423f comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3017da99 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x32f71d74 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f7ea29a comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57c287e1 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x636e7d43 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x64b7c26b comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66fe6145 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7114fa1a comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x737f2d86 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75b3cf8c __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cfaa9f6 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x843d4516 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x84f388ff comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x89568882 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8d60fe9a comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf04895d comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb01be9bd comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb10a93ff comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbc0483da comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbcf452ad comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc43c25be comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4c52a6c comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc679844d comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc716dd7a comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd12c5ddf comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdae459d6 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe44b0a06 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe6f55bff comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf04c1e1c comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xffaf9b0e comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0eb2ce0c comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5b94563b comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x71f57263 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x77378512 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x802743a0 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x941c2f32 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb4406333 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xccbee891 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0222ac91 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2dc22472 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x371ef8b0 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x42f3c45e comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x45b8bd3d comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd1c723aa comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf8fe59fe comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x22a340f5 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x27710e96 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2ca78d21 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3710ccf3 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4499dd34 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xddbe1dc5 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xb55de259 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xae164d2c amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xd2818010 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x4cd82fc9 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x00f54f84 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3a2d5122 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x499754f6 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x581d7684 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x63e4ea80 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7ebb76b3 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8a2de92c comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8c720b50 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa4d5439f comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd107ed38 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdae0fdd1 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfd2876ef comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfdf39da9 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x48b37127 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x7b2f0c64 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe5c9c384 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xe2311991 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x0c939cce das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ce0a9ce mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12ba439c mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x145dd76b mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2b5382e5 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x46e5a0e6 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x59e0d753 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b14563e mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6011f877 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x63492693 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8381c868 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8fde276b mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x90cfb0c9 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9666beb8 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa1c8d9ea mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xab5e39c5 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc2632753 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcff42e4b mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd7aef421 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdc22abf5 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8e669d6 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc2a0cda mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x4090afe0 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe5bff939 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x07193364 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x6f470236 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8416bf7d labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xbb9a3501 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xd441316a labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x015e25b8 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x42e48eab ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x613de9c2 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x767937a5 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7fc55a08 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa34cfcbc ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb51bfc41 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe39c8888 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x24af66f9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7184d905 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7ba2b26a ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb1693176 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf339af4f ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf61ff2d2 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2e30e6a9 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5c5f4b9b comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7ee41095 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc7a96dbd comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xed5a5d19 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf4715948 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfc54e85a comedi_close +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x853c8f66 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x30ec447c most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x331abf9e most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x43742d01 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4517e20e most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x45cc3772 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x635d6717 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x6c7e6efe most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa87b531f most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xabe04cce most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xb06003a2 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xebb73699 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf50fd713 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x398887ff spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4b3fd665 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86f73bf6 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9899e7a2 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9b36883f spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa5a12780 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa646d128 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa7223d2d spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbebb309c spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xeccb5bee spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x05995edc int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x2e49b5d6 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x1ecc7969 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x57f16410 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x7605069e intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xf31ec20f intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x12a37530 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x702ffb16 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x81d099c3 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb0120de5 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc9301797 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x60615bf3 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xa7937b43 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3924d677 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x73667563 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x7e6056cc ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x8cd6bb7b ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x8d2ffdd5 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x901d01a3 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x19ffbf27 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1a8ec2a2 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1e6af338 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x20ffd7da gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x264bb145 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4721287b gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4c6eb0bd gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6d66071c gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x85949fd2 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x88c23d1e gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9c5b24b5 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc020fa07 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xceb1cfff gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd658c593 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe7ce2911 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x53015421 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xbbaa9484 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x09e49161 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x4de9b904 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x8f50e7fc ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x10781bcb fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x119eb0df fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2183611e fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2e0dc973 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x47a761a9 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x59f2d362 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x67081a2b fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x873829e1 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9ce24804 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa48d03a3 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd7edcd72 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdb35fbe3 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xecc40200 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xefaa80fd fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1f9fa93 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x05ff5217 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0d33768f rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x27b70d49 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3f22891b rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x533638e2 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x558cddcc rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5812b7a8 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6af8aabc rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x71c9062c rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x79bd9eb8 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7c22282c rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x82fb57f3 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8cb1ff1e rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc37c61c4 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd06913b9 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x034daf0d usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x08ff6d3b usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0bef7f01 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb4978f usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d820bd8 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x216fbb83 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3bcdc0b4 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5008d499 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58e204e1 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x65befeb7 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6a093912 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6fe36e57 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7ab2431d usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9483a3d4 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94f8aa34 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x97144c48 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9763f368 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x97e2550b usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9f335932 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab3f7e25 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd16b9feb usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd5ff7c17 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdb90fc12 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdbfef3b4 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe371716e usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea6eeccd usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xef44b328 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf56f7037 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfaec83bc usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe3e19aa usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a9dbdd3 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x13dd1f23 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x153b63c4 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x15c6e563 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2a9d0ffb usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3da18b25 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5b1e1bf3 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x822d8bc1 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x88b56bc6 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa1cd630d usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xde6af8fd usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf2e8202c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfa40a80a usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x18590c21 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xdcf1bd39 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x11d3a1e0 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1e868713 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3db0bd0f usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x542ce3e4 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x646f9523 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x84843e85 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x87c3abc2 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc9f7aa3c usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xccb83755 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x077ebed2 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xd53e678b isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xab2dc262 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e1df934 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12b529cb usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x26c4d3eb usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x27c59569 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x36ba4a5a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37f0e8dc usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3b4055ba usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b635399 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5a5c716a usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5d242efe usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x72e776af usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x780a01ea usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8342cb7d usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b9ac34a usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbea350b9 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcb68fc37 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xccce4511 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8b77192 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe82b6337 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf11945fe usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb4510d1 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0206aa2d usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x02441f9d usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06258da9 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x07bdd5fa usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x11b4adfe usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x172a9c0c usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x22a89252 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2605e9a7 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2d20d436 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3113ba3e usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4d58550f fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x55167617 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9028e1ba usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9e580635 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9ea69c2e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9eb88205 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbf4c3d99 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc4dc2bc8 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc662ec0e usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc81e5030 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd46ebe12 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdbc561c0 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe8432c14 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfb0f2d08 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2240c900 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3379ded8 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4985d29e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x66e741b4 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6aa4ddb3 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6e5414fb usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7d051ef9 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa83feed5 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb036fe03 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcb120bbb usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd3ee894f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdbc027f2 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1a113824 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x289e5d93 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3871ecee wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x75a21b3a rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7856109a wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9bf91006 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xce73deec wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x30c1ab91 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x40362cea __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4fc2e674 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5138e4f5 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x807d7b98 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8ee2f916 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9e97c4df wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb3b61145 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb89b3462 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbe03c78c wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc108c7a6 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd5e8e094 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe7081ccc wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeb470512 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3e2fa203 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x84e379c3 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdf2dd745 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0b921540 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0df3717d umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x25292aa2 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x41975bca __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8e0e4e51 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdb1b0c42 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe271892b umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf6d7a464 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0e49e92c uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1942e4cb uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21a4e7ab uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x276bc9a4 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x28c66948 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x310d36ed uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3cabf75f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3df18746 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53bc6b92 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x54ba4aec uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x56fbdfd5 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a3ec6c3 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5be2cb28 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67deb738 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x68722edf uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x735bdcb4 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x819f97d5 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x872c8460 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89d9c688 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a1de2ef uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9183963c __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9deee954 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3af6ce0 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb21aceb9 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xca901594 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb468deb uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce4b9d65 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcfbbb8a0 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xda391990 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdff366ae uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe422c3ed uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe981a1cf uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf17e82fe uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1fa503c uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf9711d40 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfa6e479f uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc628040 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x92b9b591 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x170f8f68 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2061360e vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2a6600c1 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x919e7a43 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x9b2c3b43 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xab99d75e vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x08704b87 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xda1850a7 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x037efc56 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0965121c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x18ad34ea vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1b8905f1 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x22ee0f58 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23bdcba6 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d752deb vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3e9245e0 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x427b6923 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4e6f565a vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5e2d0c54 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6562ea33 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x65a9f1f6 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x695704fb vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6e58bdd0 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9e29bd8c vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa3d3daf6 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaa01524d vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0e2e270 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2538b11 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbbbda70a vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc255fe2e vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd20549ef vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd2aaffd0 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd9e66316 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xde1d9249 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe4b7e3f2 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xee045fea vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfef7488b vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x135ee953 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x51444c95 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x774aba74 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x806547f6 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x863390f4 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8e9ad84e ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcb62f9e7 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1e08108a auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2a96e426 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x352ffa47 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x37652bdb auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3defe24f auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7d38e513 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9651f8c9 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa4cdb5e9 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd8051656 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf94ded95 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xd7fe41cd fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x504524bb fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x81c55a5d fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x4e8cdbf1 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x960ce710 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xaccdf189 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0eedd0fd w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x11e87350 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a6fd535 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6421d3d5 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x752752c8 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb1b8eadb w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb7fb7e72 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xce06cfd2 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe3ced7cf w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x8ff0d7a1 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9a14df5a dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf1a58667 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xfd833f9a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x110c1274 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1e566a9e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x430081cb nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x51194016 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x65514667 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x946f0601 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf92d1f14 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01b03e54 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02290076 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02a5f2f6 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02c3579a nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x037123d1 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x072493e3 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07695600 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08dd0de7 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b6bd218 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c4fb81f nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fab95bd nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1561a644 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1561c570 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15ceb5e0 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1637dfc6 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1698b543 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x193a5f3c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19c11571 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b663e64 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c5728c4 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ec3673c nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f2edfb6 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x213028f6 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x215c4b3e nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d97e5c nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29bf2929 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a52187f nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d98ce5b nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3043208b nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x342b6613 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34f20f21 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3632e511 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38fbae51 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3906184a nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ae7f08d nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bef56be nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ee2c771 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40e1823f nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43cbaa18 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4599e33a nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4701172f nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x471bbe53 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49ba1feb nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4caddf87 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ce93cc4 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e60f3dc nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fa51655 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50f30e68 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x526aaf08 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52e2d0f5 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55289f2a nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5673b62d nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59b7a57c nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a9aebd6 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ec47cd0 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ed893e0 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5efa63fe put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6194d9d3 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61e86bb8 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62bd8e73 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63c7e92f nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67665d22 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x676f1bc3 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67957329 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a0ecc4b nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ba45ae1 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d2150ee nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f8d9eb7 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c1f5a47 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c2b1076 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c53218e nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f25a2b6 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82d1f9fe nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83079d06 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x842dcc64 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88528795 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89dcfe2d nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c6be548 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f8a72ed nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x931df637 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93e00355 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x957de1de register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99e27dc9 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c1ec70a nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d2d92cd nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2f548b4 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa1818d6 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa5d0ce1 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab91f62a nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac086b1f nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac99e6cf nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae4dc245 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafcffa9e nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0453ab1 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb678c28c nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8cb73f0 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9d319ba nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdda1803 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc685466a nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7e84b57 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb1204ad nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbd854f4 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc812101 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3f31eab nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4232a27 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd44ab392 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5782dcd nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6e23ac6 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd98854fb nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc1be18b nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe27c41fb nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe41a2de5 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6e0a202 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8a49b07 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9054286 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9cf7e7b nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecf575a9 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefec787e nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0ee9acb nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1cf55f2 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7f556e2 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf94abb80 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9500238 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa14c4e8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa8c759d nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x417ac73f nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x00b73086 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03097c44 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08a87b28 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09471d64 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cf945e0 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15f47fad pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18de844c nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1adc718a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21921736 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b310379 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d252e0b pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2dbb2cb4 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e318394 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33c09635 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x378b79b9 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3acce1ae nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42cad592 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48cddcb6 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ef82b82 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52681880 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x556f1c40 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5613159d pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x570ecc3c nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57ef98d4 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x595e61ca pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e492478 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5edd7f84 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7025959d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x712d84e3 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x82a21a29 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83b5d3dc pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x858ac06c nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a8f0e59 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f127a30 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x964d90ea nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96ad3b6d pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f4a8910 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fca945f nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0cf3f92 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1a7d668 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa550a2aa pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa98bf65b pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacdf8754 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaebb816d nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1e0bcd7 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb3bed567 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6189deb pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe3aab9d pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9b5b24c nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf594f82 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd576bffd __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6d8c2d4 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6e5f01c pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd930eb2d pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda20366d nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb9187f2 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xec147e5d pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee38b2a9 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf08406a6 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5f9d845 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf95eaf0f pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x6eb748b1 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xac0d9261 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xc00a75ba opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x17104232 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5c63c733 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x01e82726 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x44b17fb8 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4d1374af o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x827aa033 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9a04ca26 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa05064e6 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb5cc4990 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1f1d7ecf dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5be20fc0 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7c6c3ca6 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa633163f dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe6077705 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfeb0b3a3 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2a3622e1 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x696f0afc ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xca7d8651 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x29d3b2b0 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xcb917bb7 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xd57a5c2b _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x6fcaad1d notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd9a7bc84 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57861324 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57d39367 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x882ce5fc base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9e0112d0 base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xaedfbb15 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xc8fca8a6 base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xd11741a1 base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xe3d900b5 base_old_false_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd22fc73f lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xfd729cb8 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x593d6b1b garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb3c43dde garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xdd1f3ed6 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xf7862a4f garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xfa116697 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xfeecfe6f garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x407d00d3 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x42eca472 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa0c4912f mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xb53cc529 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xf1095065 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xffc2e9ee mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x94bccebb stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xa386fd86 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa2ad4462 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf6c9f720 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xf0b3dc3b ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1f9e0f16 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5c9afd8c l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x77fc3492 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x88509bfb l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc51a9ec6 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcfbae98c l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe722e75b l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xeb728766 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x19e0da5c br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x45140aa3 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6a66549c nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9871024a br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd25077aa br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdd1c07a3 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xddca8718 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xff8277e0 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x470c0f9f nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xbc0f93a1 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06d07943 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07bde0ed dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ad57dcb dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1003e52f dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14f63579 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1acb275c dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x275954e3 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x279667f1 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27e4f0a4 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34601fda dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c96ee34 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e1695c7 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x405ee827 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b51cfa4 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x51f1b559 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x537012b7 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x62f73903 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7762c808 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82b7a327 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f268606 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x96f273b3 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9c981381 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5357b6e dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacddd673 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb1be517a dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb71a28dc dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7dd13d3 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd0d8d86b inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3e2e371 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf2a9d8a3 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf4617c12 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x261e005d dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7b0b4434 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9269e6dc dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa5766c61 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaafc6784 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd89aba98 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2f30d955 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x54bbe406 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5c68a5c1 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8fc59256 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2a9f4d3d gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x36a67729 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x329cd32b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x425be73b inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5085bab6 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6801ae90 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xdbb0ed26 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf9b0ff52 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x618e3d68 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1b2911ae ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1efba168 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1f65690e ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x43584d69 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x884ebaed ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8e9ff8d0 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9abaec22 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa77238a ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb1937bb2 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbb325cd8 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc0e3e098 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeaffbcd9 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xec10f94b ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf6ffeaf8 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x164ec6d3 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xf4662322 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xaa62463e nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x07834545 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x09d293be nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x266d0e4e nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x31cf6bb7 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe9bc5eb2 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x2debe2f9 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x015f7ac5 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x60fe9bbf nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb784b60d nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc1918878 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd42fbd79 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xba5c8584 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0cc11aa0 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3f468319 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x492c682d tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe5087c91 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf3edd758 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x147f81e9 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x2b0ab9f9 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa51dfb7e udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xfe719821 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x433268ec ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9403b550 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb04325e2 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc67fa726 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd4dbb20e ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe2b78fea ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe4f172a8 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x55ecf5d4 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xbb4ed84b udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x92b150d1 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xb79cf11e nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xe5c72408 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xcb8b1044 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x9153af21 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x9c574ded nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa7cc54fb nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe86ee013 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf3590f8a nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x6a2cdd2d nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3ffe9d48 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x572bdebd nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x615efd22 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd580933a nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf60559fe nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x300ee0da nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0434c894 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x38afefa7 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x46e7801d l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x49c7e004 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4c854755 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5372da59 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x609df32b l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c6d5d04 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x812f7c74 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8b0d1326 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8b70abe0 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8fd1c37f l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9527ec91 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcf310487 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe1962209 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfc217a4a l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x895698c7 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x04fee2a0 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x138274fe ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1e85ea11 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2e9cadf4 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2f06fc71 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6733497e ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa4627461 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa8d82a31 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc08f827b ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc8631a0e ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd15b4f03 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xda9278fa ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdf3b4892 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe852fc6c ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf2a36379 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x2072a437 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x459ebc9a nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x52521862 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xfd50dd95 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x07738a2d ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x208cf8bc ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x513c61ca ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x62a9edf0 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7ee45d61 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81366e79 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x840a20ab ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9b42a254 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9c2bd233 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa14b0b3f ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb3ef5d70 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb78924c9 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd0fb03e3 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe214741e ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe9ca95b1 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xee2883c7 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x635b5bbf ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x73f230ec ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7b608ebe register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9d266d4d unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0160795d __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x043c9199 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05b513a7 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08ca4129 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09744656 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d115774 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fb7c734 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16481dea nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d1c4e40 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20167e9a nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23687255 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24c21b11 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27ecc3fa nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29a0a6d6 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b461011 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30c944d1 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32e27bc6 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x360af31b nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37797e55 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39dad1c0 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c214f55 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e8557d0 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x435b30ce nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43897af1 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x463f9a4b nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49c2bead nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a7747fc nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51c4c41e nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54919037 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d6d8616 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6107a405 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64590e56 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x672f1dca nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6769a871 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7189716a nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73ae7dda nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7479d082 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74c045ba nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x76876d4b nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x76c9721c nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78e8c8b6 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d1ae183 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82272bcb nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86d02436 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90775399 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90af460d nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92c81959 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9683be13 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x992266ea nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb95e6 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c6dd729 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa026b5e1 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0b755db nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1032101 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3280bcd nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4215c12 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7deb75e nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa4058fb nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab140468 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad575e1e nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaeee279a nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb16fdfd9 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb54263b3 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba8a941a nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbaead65f __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1685259 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd090195f nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0a2e064 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8abe465 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdae8a584 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdeb3b68e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe156b7b9 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed04547c nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf27b59c7 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf74b2b0a nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff4a4e2b nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff74379e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffb1c67f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x0e2a3611 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xcff17dc2 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x7e217c05 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0d3dfc44 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x43e4fb66 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x596fd813 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6b2c866b nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8022602f nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x957d010d nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xae17e9af nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcf694d5d set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe4b2b5e6 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe7174e3c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xb46fce15 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1b84a9e2 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x44f9aca9 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb00b7c50 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb9e9454d nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x096ed945 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd2247eae nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1a31a460 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2b387b9c ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x578f0d22 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5a50a5e7 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa28259e0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbabcb863 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3c2c24a ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x19518d0e nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbeb7d2be nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x221af8fe nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x2adf4afe nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x63407028 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8e54eaaa nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0995e0e1 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x406565a5 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x46a4ae82 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x63c7e9d7 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6e1a231b nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x946136f3 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x99a58317 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaab84fdb nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf1e565fd nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x63aff3f2 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x7c2d7691 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2fc66522 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x815b64d3 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x026312f4 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x06cb98e0 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x20aeb74b nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x30434d79 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4cf55984 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x54e30859 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5b9f9f3d nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x81cd51a9 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa6eb5f6d nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbb35059b nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc3ab7e8f nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc83ba63a nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd2c77748 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd74c6355 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe2dd8b40 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe42e9205 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe9dc7293 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x368fe200 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x44c3750a nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x47fea34d nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x63b258af nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbcac2beb nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbd51d06d nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd1c149eb nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x16fe14e1 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x48ec82e9 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x74e07433 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xebbfde21 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x0c62aa23 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x3555fd99 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x3db7fb9e nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x3167ea16 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4cd04f14 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xaa5aa470 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd08a547e nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd2f329d6 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf6dafaa9 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x26883089 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x42799b1e nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x7167f94a nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xdde6d09e nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xfd42600e nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x098b214a xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x09a071d0 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0dbcc1ca xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3439dc40 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3a4df34f xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4d83c90b xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x69b38709 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x85d98b2a xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ae62bb0 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99dd0c2d xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb873f77c xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcca0450a xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1fe97d8 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd89f0cf9 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x13f0b46c nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xa0a5648e nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xcfc7e494 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x41ada277 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x5dec38f7 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xee1a1667 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x26f71173 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x36834a38 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5c0998e8 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x69d491ef ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8fafb35a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa04d5b5c ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaee0dc82 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd02b623a ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xdd31dcbd ovs_vport_free +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0d6e6434 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x17bdc93d rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x1d41eb2e rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x1f52efd4 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2572b334 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x26bea746 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2d2eacd0 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x461814c1 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4f587267 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x551956f3 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x642a035f rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x71e7e2f5 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8c04494f rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x8f741f77 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xbc2ae34e rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xbda2e74e rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc280d6ab rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xca874a82 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xcec6fa75 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd87452a1 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xee8a1362 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xf164abfc rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xfe40a981 rds_inc_init +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x4c254b3e rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe927877e rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x21514ef5 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7aa2d4b9 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf2e8746e gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0009a842 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01c4c166 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01cdc228 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03105589 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04fc64c1 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x083efe3f rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086789f3 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x099000dd rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b50aa80 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10007f09 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10071ea2 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14144f2c rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15da411a svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x163fbe81 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x168bd395 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17058790 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ebb377 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x199c1beb read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dcc94cd rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ed0195a xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x232808d3 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23ed4264 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2458c3c3 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x257b56c7 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27d696b5 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a0ecdc5 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a70de0a svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d7bfd85 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d82643f rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e8dacfa rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eb8ff80 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f6ef14c rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x310df006 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32615505 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3425dc8c xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x363a9724 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38af7e85 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b641121 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3edc9b28 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ef605d0 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x427bc873 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x435d13db svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43ffb363 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x446f7f26 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4494c47c rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45438fe9 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4692618e rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x470757e1 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48047d35 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48cb3502 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4f0712 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c79b567 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c817122 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c8fdc92 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x519b2ee3 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51a44746 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54c4d7c4 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56cff121 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x580cca80 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58d30b99 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a5d04fc svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b73832b cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5de9bbd9 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ec874be rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f64f937 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63823cd3 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67614ba8 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67f4fd2c rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68fad0ce rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69e936b7 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bbd9824 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d1df16f gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8ccb18 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ef9f5c9 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fcb672b xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70d1580a rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71691761 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71e8f223 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7363e954 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x738daa30 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73950dd9 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x745adf7d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75758973 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77cee2cd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7823a9c1 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x792392d5 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x797f91ac xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d39b249 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d75d6eb xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eb5ab68 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fb114cc rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80934266 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81b48d0f xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81c89f75 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x822485e2 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83bd3409 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x861396ff rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a864710 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d2f93cd xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e68f8f7 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eeb6ab7 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x913f6c3d rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92560c33 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94a2dda9 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94a39619 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x955ddf9f svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x959825aa svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95a087ee sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x972056ac xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98e40cb5 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x997b9513 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9983029a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99b8fa98 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f9045b3 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0766cc0 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa394990d rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa700b704 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9504d32 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa706318 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7dec16 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0d134a3 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2a3ceeb bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb31c3921 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb31cc19b rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb37b73b4 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4514fbd rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4c63b08 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9a90821 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc871481 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcb4e130 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd154882 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd701258 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdc9d590 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdcb0e75 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc096e25b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0cfb97b svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1abcc2e svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc32bd3db svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc32d55bf rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc381821b _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc43072d4 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4dbf8a6 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc620afdd rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6b1b1d6 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc76eb76f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9519400 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcafcf6e6 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb5779ff xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc9fae72 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd6785a8 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd91838f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdb495f3 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcffc251c svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1064a3b svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1c31e85 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2d9f481 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd44a9b50 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd499ab3d rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4cd6ca6 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4d415f2 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4fda948 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6641a89 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f5fb67 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda677ac6 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde4278d5 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdea682e5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2c163e8 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f4752a xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe458d019 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4dc7467 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe524d2c5 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5b9ff26 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5e2bd61 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe77546e4 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe78428a8 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe822fc36 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8b88705 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9265fb6 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe96b33c9 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea15e9d2 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebaa02ec xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee3eeeaf svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeef91415 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf11fa036 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf491d1b3 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4b25fab rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8c12986 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa6dbce4 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb660c96 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbbf4992 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfec56e54 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff154252 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff8b2762 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x177662b1 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x20089b1e vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x22fd38d4 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2d9d5786 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4be5ae79 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4ec49f8e vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x62b7fc3d vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x717e9909 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x859aa362 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa48a9a65 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb2462267 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4d5ac56 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xff570335 vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0b9dac04 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0df36b3f wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x14d89ae4 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3a9cf924 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3ce07140 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68039374 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8ff116e0 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa686ed20 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb0fdc71d wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb67694a6 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xba087ea9 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc33c9c4a wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde8bdb8e wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x344fb823 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3c2d96e9 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x464d31d8 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5c5eb1ce cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5fbcc449 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6b3809cc cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8aeb8374 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x902898d0 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x980b2bed cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc644d02e cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc7b6065e cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcb443052 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe4411c9d cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x720684f7 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe73330c3 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xecfcfb19 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xee8aaf97 ipcomp_input +EXPORT_SYMBOL_GPL sound/ac97_bus 0x6949588a snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x003e4c9a snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x41d1bc59 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x3f63fbae snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x42e2ffef snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x4ac590ed snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x72b00763 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x8833c543 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x9fccb199 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xf570ba6a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x00a13a89 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x244c8bb9 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x44bdb18d snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4d68a9d2 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x572e1209 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7d10ff44 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x92426304 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xac696e6d snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbc80718a snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbea30cda _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xce5f910a snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd421facc snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x15935f3c snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4777bad3 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4b171e11 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x63e8fee4 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x76ac4469 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7b1a4ded snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7bd12d7b snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x872e5546 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x91f23c71 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbfeedf77 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd3798b65 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2e42c269 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x439221d3 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x46439807 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5f4f93be amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x7692f02d amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x87f3a062 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8ec4307e amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x07f74512 snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x0a64fbd3 snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x0f26b40c snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x219c370c snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x225cad2e snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x26e07643 snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x28cba971 snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2f9df7fe snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x30edfa1d snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x368fe8b9 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x36afe4ce snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x37003619 snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3b738258 snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3fbbcc7c snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x400479ec snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x458e2634 snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4e42fd41 snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x50967cfc snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x5734c4e6 snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x89902a14 snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x95414ec7 snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x9e390eae snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa9668c20 snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb36f1374 snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xbd67f5f0 snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc142c1d2 snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc4d79d99 snd_hdac_ext_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xdccc2822 snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf6590b7f snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf7eaa39e snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf9f3a44e snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xfc631f59 snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x005c0e5c snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0221473a snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x039d0461 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x04b89c6b snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0592b575 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x06f7961c _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0991dc66 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11245ba4 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11a3e636 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x184fa902 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d6f1e41 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1db6845a snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1eea1844 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31fa4347 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3999a76c snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x427b4b2c snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43cb7ba1 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49fd9e80 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x522fec98 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5535b07d snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x595bb5c5 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x595df8d2 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x598b3376 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f77def0 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x63a319e8 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6826f49b hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x689da49c snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72f0a556 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77307dde snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7951fbf6 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7eea7aeb snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ef797d8 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x839fc5e3 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x894fdf17 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89bb314b snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92978291 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92e6deb4 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9759489c snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9831a82c snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d3f47b1 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d6582f9 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f64c12a snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9f16449 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9fcd413 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xab71db91 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xadcb6d57 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae039a27 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb48de5b6 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb743f024 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8509ac9 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8da19e7 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbd270333 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe8f603d snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc0f68262 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc25995ed snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc38a89bb snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc572ff1b snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8eaed8c snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3ced653 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4928d76 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4d596d0 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6103f74 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6e5be65 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd7c34781 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd87ab059 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd9a7be74 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb18970d snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xddd31499 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3bac652 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe852a3e7 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe96308c2 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea186cca snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee48c2aa snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf97cdf1d snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfe213579 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfe4e16fb snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2411d285 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4e1fdf6b snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6c444f55 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x73e7b9a3 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7a7fa270 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfe96c7e3 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06b6fa3c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bbece60 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10332c59 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1346954e snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x163edee5 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16f0d20f hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1da3c32f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ec2aa8d snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f3ce3f6 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2048aaf9 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25975950 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2aa4fbe4 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d6db1c0 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f6f7ede snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32182cee snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x329316db snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x337431df __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3581995d snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35c970ca snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39db0c1b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40e46f48 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41650e78 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x419fa995 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x467431be snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4924665d snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cb0a516 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e8544ee snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x513671a1 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x523a01d8 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52f1a81c snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53a5e380 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x547b1f18 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x563079de snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5aebd120 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b547774 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e80f8b9 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5efb6e39 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f4dec07 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fb5bd6c snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6172d982 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6284d608 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65ff898c snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67d1823f azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68ada7c2 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ac27411 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6afc81bb snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bdff4f6 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c1743f4 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c57c2bb snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ca5fe83 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x704c8119 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70b2ac3f snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70fab569 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7172986f azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71ae52e1 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71afe591 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72c267ed snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73905890 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77165795 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x772b90b0 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b03abd8 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b55b01c azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7de378ce snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ebe6486 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x805c2abc snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x809f67cb snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82a38b7c snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x833d38d8 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83f7fc3c snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88c0ea84 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8efe7f84 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9343f5f9 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95248274 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x964b4a69 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97f27a0c snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97fa7690 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98d13ca2 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a85d786 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c72ff13 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d1c32c3 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3c90c43 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa549abd0 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9a3761c azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae4e3503 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafab327e snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0fdc4bd snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4f89edb azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5ffe432 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8a6e283 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba6b1dcd snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba9a7cf8 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc113bcba snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3a417be snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4ee173c snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6c5a6a1 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6cbdc38 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9cb0c05 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca8d3809 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf730a35 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfb84f30 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6ce2890 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd790f807 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd93bea36 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda6d4c15 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdedd3f17 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3c44d75 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe58a1c81 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5b4d7c2 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe63b2b46 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe889bba9 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb3e5010 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebecd034 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xecba3eea snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xecf59a64 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed17bfd3 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef79dc37 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef7b04f8 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf06b092d snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf558d9b3 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf57401da __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7c2deca snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf940026d snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb754489 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfba68abf snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x031dbf25 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x257f478e snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28c5b75c snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b7d05b5 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4deb8cff snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x50b0385a snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x57852039 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x60148515 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x609e8800 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x78e74e14 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7c537a5c snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9197341e snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa0688e80 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa4a7e130 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb26d63ab snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb4596117 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb491c8e0 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc6b6e6b2 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd4207da0 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xda9128d1 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xddbbc8ba snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x067266c7 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7e8a70e6 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x15b5a19a cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x3cf9f923 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x41e2a682 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x75d3d8f9 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xa4eaa28c cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x19e01096 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x29262f9d es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x2f7d72ed max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x57732897 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x93a5ad78 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa4fbcf3b pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd614da69 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0x44207638 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xa69cb75a rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x24805483 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xda8a2b6f rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xc4074ff5 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xcac87b06 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xd47a96f2 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xf8756de6 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1a6f156e sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x22d19bbc sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa5494e95 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xae9c5ce7 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd423f013 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x178243e4 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x0f57372a sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x29d2f8ab ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x65068da4 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x15143704 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xe8719ca1 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xc2c392a4 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x136045ab wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x9ae439f5 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xeef07965 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf1f1ec2f wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xc325d849 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xc40595ad wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x286e9c14 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc4a19768 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x158b6371 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x3825733e sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x35197850 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4deef145 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x883e64f7 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xdb4dacca sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xef766463 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x4ef72b0e sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x55961e6f sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x5a80b439 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xd0344948 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xf48a6d51 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x04dd9ae9 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x062279e1 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x08f4a1fe sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0947f67e sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1e80c335 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x234e05c1 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x263fe4c7 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2f64cda5 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x301c0fcb sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3252ea0e sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x325bfbfd sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x32ef34c6 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x33941d58 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x374356fe sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3b6cd72b sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x42662f62 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x443dc215 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x47d0fbb2 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5c5d872b sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5d8fce60 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5ea2fabd sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x660698b1 sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x69c9ec82 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6c9dedc9 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6cce8de7 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x78b58184 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x79634d43 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x79d3cd0a sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x83c824e6 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8a7453b0 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8abe278c sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8f009306 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x92ebccc5 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x95e89dd0 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x97d47eb8 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9dfffe23 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9f51721a sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa08e9493 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaa26d335 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xac27ab99 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb1a3d2f2 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb91d4810 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xba712d42 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbad6bd65 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbb6ec3b2 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc82a182d sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd302a7aa sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd870e4d7 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd8e48fc3 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9bc4473 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdb42d6af sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdcf97aaf sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe31f9386 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeb5c150a sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xecf2596d sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf2859884 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfb6d10a4 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfd851bb9 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfe2c1071 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfe41720a sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x118e3364 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x2034deb1 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x7b8588dd sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x7dbdfaaa sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x8e913148 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xb1b7f1ef sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xca09402e sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x4b10fdcd sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x4d37146e sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x097e4908 skl_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x1cd41af1 skl_ipc_restore_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x405b09f8 skl_ipc_create_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x547d17f6 is_skl_dsp_running +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x5b425b6b skl_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x5cac7594 skl_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x80c50148 skl_ipc_init_instance +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x88bd6189 skl_ipc_set_large_config +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0x9c36dd79 skl_ipc_set_dx +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xbb473b05 skl_ipc_bind_unbind +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xbc218173 skl_ipc_save_pipeline +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xc07e8eed skl_sst_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xca2980e1 skl_sst_dsp_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xcb4e2460 skl_ipc_set_pipeline_state +EXPORT_SYMBOL_GPL sound/soc/intel/skylake/snd-soc-skl-ipc 0xd99208db skl_ipc_delete_pipeline +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08b91d52 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08e3bb57 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09b89745 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bf310f1 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ccf424a snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10d8ae4e snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x119e3bb0 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11eecf3d snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19dd2414 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b9246c9 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f140a8f snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f44a849 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f46ad6f snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f90023d snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x211cabbe snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x214e0e73 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22f3f58c snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x230c050c snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24661e80 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24e2cad8 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25c40e3e snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25d3fdc2 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2668e38b snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x298f3ae3 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b31aa98 snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c4a0c6a snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2cb010d5 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ecf8d3d snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x302b3025 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30d9225c snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33705d6c snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33f07f51 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x387c05c5 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3954ec69 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39692351 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b0dddc4 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bf82953 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d53409c snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3df8a6a6 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e78f3f4 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x401d3206 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40d0bc52 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42eb55e0 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43f250cf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43fd5ed7 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x443d7555 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44a53813 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4581d0e6 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45e0274c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x464f5461 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47c419ba snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48b23b10 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x495b0b92 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49db9412 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4df7a1ed snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x500e7b86 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53fc35a6 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55852b69 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56ba4bb7 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58f1a1ca snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59760615 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5afa5e5e dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cbaf39a snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e5883d9 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e6f2d49 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5fbd1402 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6052ba0a snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63e2dd98 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x686b4250 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bcf1032 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c3705ac snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c87d0a3 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c8a470b snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ce90159 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6db7c67e snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e964c8c snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70fd8446 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x729837f8 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73b32cb3 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x751fe14b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77a9ba17 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78f8664d snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79ed8b81 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f9aec17 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80d081c7 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82e9db19 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83be2fcb snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x853bf9a1 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85747969 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87a8f940 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a0accf8 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8aa8b1e3 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d516386 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9062d173 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x909b158f snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x992131c1 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a008b06 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d217a53 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e067b8a snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e3fa102 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa07e75bb snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa286f8bc snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3883780 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa53a8fc8 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6aedf26 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa4f7c3b snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0271260 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0ee67a5 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4558d6f snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb70ca256 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7bebc31 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb53ec1f snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc109c5b snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd4a151f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf950019 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0ce0ada snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2ccf56b snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc45b4c76 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc679342a snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8597bc5 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc88161ce snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc575c88 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd6f9744 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcda1b4bc snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf86a55e snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd07480d5 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4013950 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd86e4d21 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb9a37e1 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd22edb5 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf752648 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe02cc44f devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe20225b8 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4581a91 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4a9da74 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe53bc2a6 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5b2905d snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9e02682 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb9f3386 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebdd47d0 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec6ff949 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee3fbacb snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeea88d0a snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef500c7e snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf03af4cf snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf21b0b75 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2240d3b snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4b75654 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5ef9dfc snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8d90a2b snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa8d9721 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfab672dc snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd947adf snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff1333d9 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0afa3602 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b633a5e line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0f340774 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x29dda70b line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x444a26a0 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4bdfb3fb line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x59ad2296 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6c625e7d line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa178b365 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xca961448 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcf9b1de1 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd1cc8ed6 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe591ffeb line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe9789019 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf150befa line6_send_sysex_message +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000bff64 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x002e1fff bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x005e8d18 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x008911de sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x008dab02 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00ca6633 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x00d47884 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x00eb4700 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0110db67 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x0113611f sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x011ccf6a reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0130e653 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01934555 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x01b39260 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x01b5aef0 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e717b5 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0x020495a9 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x020c0bc6 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x021450a9 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x021b0a78 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0241f46a usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x024c0485 xen_remap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x02591e8f xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x025be3c1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x027071fe inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x02738d32 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x0289e0ca device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02aa49a7 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02cd94d8 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x02df5e6e of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03134012 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x03359536 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03655efd sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x03673063 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x038dbf92 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0392d381 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x03994097 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c8eca2 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x03d5ccc2 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x03da41e0 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03fc3e4e debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0411c076 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x045fd64d efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046769aa wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049c57bd filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04bee59c irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04c3ad17 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d5e9a9 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04efc6e5 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x0503fe63 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x0516ccc5 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x05173d57 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x052fdfb9 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x05306bfe for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x053c8912 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x053e7417 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x057c6af3 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0584dfc3 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05c10ab4 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x05cfc309 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x05d19fa6 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x05e4abde ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x05f6b7d4 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x061ce3e5 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067d3f53 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x0686b242 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06c16b51 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x07077912 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x0709568e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x070ceb3a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x071ee624 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x07211f57 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x073a338b fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x074959ff shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x074a476a device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x074e39ed public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x07527a7c regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07627494 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x07993e48 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x07af9b23 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b419ae crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bcc12f phy_put +EXPORT_SYMBOL_GPL vmlinux 0x07ca8eaf regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x07db82d9 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0808413d devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0827ce90 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x083d466c ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x084a6a77 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x084d688f ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x085ef16a dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x08a1d0f4 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x08d2646f virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x08e025af pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x08e62ee5 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x08ebfeca acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x08f10258 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x08f62ae9 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x08fe6ff0 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09224089 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x092c4232 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09489eae regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0954b3b3 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x09602b47 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09722319 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x09863bc4 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x09d2792a pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x09dc17e0 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x09ec022b xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x0a035717 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0a19cbd7 dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0x0a37bdad usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a89ba1b irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0aa57abe sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0aa9b384 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x0ab174ab sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0dda28 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x0b2c9e3c xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x0b45af14 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b6fcc9f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x0b73aa5e ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b7ff864 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x0b87f6dd sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x0ba62f8e anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x0badd46e edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0bb74169 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0bcac35f acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x0be54503 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0bed1e02 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c060045 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0fbb47 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x0c1a912e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c43962a vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x0c4cdb60 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x0c51fbdd xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x0c5d08c4 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c9c0663 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc26369 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x0cc4fae6 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x0ccacbb6 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0d0f26fc ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0d1b9100 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d863c3b uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x0d8695f3 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x0d981392 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x0db0c9aa gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x0db8d731 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x0dca8ccf pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0dd74b40 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de1366a ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e28f5fd xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x0e2bb3da dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0e38b390 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x0e3975c5 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x0e43cf20 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x0e4f7304 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x0e6c40c4 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x0e6d10e8 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x0e83c099 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x0e8be7ee xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0e9571b7 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x0e9cddc7 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x0eb72241 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x0ec5c87b crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x0ef4a5a3 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x0ef7b644 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x0efcfff2 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x0f1c06ec ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f292556 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f367755 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f3e5634 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x0f46e8de ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x0f6e4206 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fe6466c xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x0ff8b3ff device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1001469d __class_register +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x106193a1 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x108c628a balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x109b5f14 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x109c132d fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x10b5bcc1 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11049ddc rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x111f66aa blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x1127c8e3 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x112e7846 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x114e5680 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1150aff1 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11c00752 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x11c26b18 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11e86e97 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x11f62117 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x1205ddda cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x120b29d0 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122bb82d do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x123b732c transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d29f0 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x12671f1c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x12685222 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1276605c ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x12b872d6 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x12c83a6f uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x12ca8e17 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x12f6705e skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x12ff2cbf sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13212a8b posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x132fbae4 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1373d8ac led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x1395068b gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1398ffb0 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x139e0e00 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13bdc6d9 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x13de8cdd ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x13f84981 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x1405d44a ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x140e3976 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1421bf59 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1439bbe5 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x145278ed dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x1473e808 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x1475858c platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x147cbea1 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x149404b2 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x14b31a60 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x14eae647 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x14f7e86a pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15293a52 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x15440d23 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1546fb67 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x155018b9 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x157d42eb dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x158288c8 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159ed540 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15eb7cba balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15faf35e usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16045c86 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x160f1c02 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x163690b4 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x164a73a1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1659978d blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x1696d0da add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x16ad0aee regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x16d466eb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x16e215c6 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x16f4ebb7 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x16f9edfe cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x17031752 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x1718c43b crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x175d4973 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17765709 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17ba3024 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x17bd73a4 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x17dc5b92 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1800c2c1 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x1803db0a devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x180695ba pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x183761ee usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x189215d7 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x18a30a7c sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x18ab8b36 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x18d1c3e9 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x18d7663b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fd4249 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x191196cd find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x191f71a8 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x1921d825 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x192adf02 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x19462d18 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195ebe39 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19811778 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19c85a8a cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x19cbe6ea rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19fe626c acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x1a04baa9 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x1a10f6e0 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a5b2abf posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x1a6a565c rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1a742311 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x1a93fcdb acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x1a950bfc __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ada053f trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x1ade44b8 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x1ae0c37c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x1b1cf4e2 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x1b1ee835 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b27cb80 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b3ca0e2 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x1b3cc5cc kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x1b45a5db regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b59154e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x1b677263 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x1b68c7c0 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x1b68e665 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1b73ea91 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc52014 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1bc57984 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bece61d usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x1bf8dffc trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x1c0d938e rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x1c33d5a9 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x1c430884 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c66ed4b ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c84dce2 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9a01d3 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x1ca0a976 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x1cad2a8a serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1cd906c5 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x1cddc0c6 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1cfa73c1 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x1d0ec643 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d23c942 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x1d28928e rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1d2e1634 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d896d77 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1d9052dd regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1d9210d9 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x1d98fba5 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x1d9d1c5d rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x1d9d5781 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x1d9e105b pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1db86e0c usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1dbed4f3 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x1dc96f9e pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x1de91b83 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e1a91d0 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1e3cbb32 smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x1e50c7f8 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x1e526440 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5fccb4 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1e605cc0 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ea353fe devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1eb41863 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x1eb4756d __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec496a4 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x1ec64c27 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1ec8d04e device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1ed46a03 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1edaf6dc locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x1f0f039c driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1f10bdab scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1f215ffe dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x1f330262 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x1f3d6c9a xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x1f664a48 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x1f72c938 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1f72fcfd handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x1f7f6fac register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f807fba mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8791e2 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x1f8b0c32 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8e8502 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1fa5b19a preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0x1faa0ca7 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1fb13a37 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x1fb965af iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x1fef81e4 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x200cc695 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x2025720e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x2094c948 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x2098ae85 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a1b95f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x20a694d1 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b68792 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x20c90470 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x20e71d61 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x212c7615 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x213066e4 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x214bfb58 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x214f0f46 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x2171ab43 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x21744dbd find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x218e7729 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21e135be device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x21e59ab9 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x21e9f450 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x2201ca2b ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x221362f3 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x221d0b76 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x222a1edf blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2231d094 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x2234c931 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x22626022 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x228661ea md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x228aaa82 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x2294061e gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22987870 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22bdb1c6 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x22e3d900 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22ee3909 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x23048011 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x233c3c44 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x2354a6ab irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23756543 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23bee7f9 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x23c6cdb8 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x23d11320 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x23dc5681 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x23fb002f regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x2408dc5f extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x241314dd usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x24233f46 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2448c752 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x24524220 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x245d632b dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2491e561 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x24a9c07c da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24af9080 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x251a8d5c blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x252c09be injectm +EXPORT_SYMBOL_GPL vmlinux 0x25323a5c pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x255e3e04 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2560c007 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x2561213c nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x25680c3f sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x256d07c6 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x25880b42 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x258bcd9b con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x25a05771 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x25ac4c28 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x25b08004 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x25d73379 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f84f9d fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x2626f77e srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2637b41e ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265d607d handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x26623a9e xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e1051e tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x26ed8b03 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x271ccfc5 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275587ed fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x275aa89f sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27be5dcf device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d39ec2 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fd966f ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x28084a7d reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x28136156 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28329ddb irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x285ed08c kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x2898e7ed srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28b0569b inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28ee3127 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x28f06c8b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x28f1b3dd pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x292e5ec7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x294d0dfd shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2955f164 user_read +EXPORT_SYMBOL_GPL vmlinux 0x2962f90d ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x2968b6be sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x29838b07 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x299b262d rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x29c102a4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x29c41070 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x29c870ae pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x29f18dc3 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x29f7143c security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x2a150f43 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x2a258b41 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a38f84c dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x2a421fa4 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x2a439baf scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x2a49faf2 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a762e95 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x2a83a023 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x2aa70d13 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x2abfc05b devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x2aefd732 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b07c7c4 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x2b11a07d irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2b156b0d usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b32636c component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x2b36e1bb tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x2b66a03b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b6b3128 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x2b79c161 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x2b81ae96 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2badf876 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bba922c regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2bc48613 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x2bdeabbd efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bfbeac4 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2c19db67 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2d4eee tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3786da pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x2c4a3bd8 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c630bd1 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c90745a to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x2cadd5aa rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x2cbe7918 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d485fe0 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d8ad888 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x2d8b14a3 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2da867b0 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2dbca6c9 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2dc1331a srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x2dd66fe4 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x2de52ac1 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2e1d427c bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e35844f rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2e4c19fb rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x2e517554 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2e81f4b6 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x2e8689ca pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x2e886bdc adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2e8d373d iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x2e97ae61 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2e98a1da led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ed0e3fc wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2ee6e6c9 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2eeda74a rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2f02761e devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f0e8a3c inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x2f19ccad __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2f1ae29e pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x2f2551ae blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x2f2be4ec gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f5c5336 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f66e73b pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x2f69c804 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x2f88ee79 device_move +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2faaea18 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x2facd4af led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2fcd51fd cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x2fd2c32d pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x2fd4698a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fd8fbab wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x302e85b2 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x304698ae regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x306e052b iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x308782d8 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b1f394 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x30c3d2a2 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x30c55fd9 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x3125c964 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314f75d9 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x3161ca1f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x319cd50e md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x31a5cd31 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x31a92383 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d40d0a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x31dd1f2a yield_to +EXPORT_SYMBOL_GPL vmlinux 0x3212eb78 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x3214ad40 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3243b35f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x32557712 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3263d968 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328a1eb3 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x328f075e pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329cedc4 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x329d85f0 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32db85bd class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x32df0aed rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x32ec05be rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x32f12edd cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x32fcec62 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3367eb65 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x338aa810 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33c604d7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x33d1dba8 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x33faeef0 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x3408e6dd ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x3442e0e7 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x34570e97 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x345ce4b3 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x34782b8b mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348fa539 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x34904617 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x3493b624 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a70a96 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x350827c3 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x350c05ca xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x350d7371 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35196d84 intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0x351ad95b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x352cb219 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x353ca263 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x35843d05 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x359a7807 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x35c9f3d8 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35fb61f5 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361553b8 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x361b0189 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x364ab008 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x364c0089 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x36641468 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x36758037 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e8abde rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36ec8106 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x372c603f tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x3745cbd8 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x376c460e register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x3775f8d0 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x378aa72c regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x378b542b gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x378ee0b5 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x37a9fdb0 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x37b24021 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x37b8f047 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x37c8676f __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x37d2612b hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37ea7eee napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x383dcfb7 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3840eed5 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x385268f8 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387a272a da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3887d89c usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ee822e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x393197ac blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x39666200 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x396802a5 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x3970adac __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x3982a91d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x398b44fa pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x398e8595 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x399554db sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x399e90a1 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x39bc2267 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x39c2714d devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x39c4f3be __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d2ef85 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x39d83a09 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a076bf7 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3a1ab4e4 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a368579 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a3ad871 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a47e8a2 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a50a814 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a597b00 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3a6529fc xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a8029e5 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aac139f spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x3ac599fb rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x3ac81e57 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3afdc6fc devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b06bb2b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x3b547bc9 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3b5f889a rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b741615 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x3b763481 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x3bbca981 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x3bbdb24c devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x3bf181b6 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3c004f88 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x3c29c7ca irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c9f425e pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x3cac1230 xen_remap_domain_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x3cb987c2 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x3cbc9236 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x3cc2fdd8 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d0a8d95 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x3d0d554f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x3d2d645c crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3d3367a4 device_del +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d4556ab gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3d70aa52 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d7f5220 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3d9b6907 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3da36fe8 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x3daccfd7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd9320d scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x3de3fc5e hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x3de878ad usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e12daed ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x3e1735aa blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e422570 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x3e45cc3d power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3e48f884 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb17d5a devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x3eee0828 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f03a372 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x3f058016 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x3f073d2b ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f2ac94e pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x3f437917 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x3f47200c acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x3f482a6c acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f902b80 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x3f9c2ae6 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb52f6a sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x3fb80fdb syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fcf5e15 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3fd594b3 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x3fdbb8e5 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x3fecf3e6 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400bd89b regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x4010b80f pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x401e84c8 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x403e2c92 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x403ef167 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4048aa59 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4081ff0e crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4089154a usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x40978e67 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x40aca796 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40bc9ea5 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x40d2fe9c perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e27464 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f6bc0b proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x41154d5e rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x4116bac1 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x411aebc4 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x41213df2 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x4132355a usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x414fcf22 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418710e7 mce_inject_log +EXPORT_SYMBOL_GPL vmlinux 0x418d99f1 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41de0526 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x41fbc49f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420d7885 pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x4237e51b print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42821be0 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42ab8419 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x42b642df ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42c9fc4a n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x42cd5620 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x42cf42e3 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x42e33a9a cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x42e617b6 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x435dca03 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x4390c923 of_css +EXPORT_SYMBOL_GPL vmlinux 0x43920fb1 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a6c7bc apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x43cd5723 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x4426cad7 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x443bfa67 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x4466931e crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448c1cd3 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4491b0f2 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x44b87f33 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44e08c93 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x44eef807 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4513c6b5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x45148fcb fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x45297c9e trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x452a9e51 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x452f6280 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45446839 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x45627319 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45b57c64 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d6f65a devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46049f1f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x4607a3d4 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x4609972a trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4617ad98 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x462781fa serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x462bf7ef mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464b89ce efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x465be0c3 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x46807b70 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x46875a63 apic +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4688ded5 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x469678bc pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x46b132e0 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x46fdd2ad pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4702fa36 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x47052b2b __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47298a25 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47971f87 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x479ee9b2 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bf775f regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x47cadafe acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47d14e0c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47df3914 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x47f386a5 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x47f47fe9 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x48102fba ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4840d375 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x4862bd8c cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4882a82b xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x48ab5af7 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x48b27512 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x48d3ec43 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x491689e6 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x492185c2 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x497165be usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x49789619 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x497d5ec0 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a955ec gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x49ae2e5a cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x49b4175f crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x49ccc797 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x49cebefc syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x49cf690e i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a178300 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4a2f43b1 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a3efd51 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x4a411a68 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a56fc3b split_page +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4a725410 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4a94eb8b devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x4a99e566 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4a9c5fe5 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4a9fdb57 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abcdf4e iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x4ac1a37a crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4acdf876 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b0823db sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x4b1afb80 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4b376918 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x4b5a37f8 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4b7997fe ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4bce69f9 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x4bd7e57e device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c005731 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6396ce ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x4c63e7ed rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x4c745a5a crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8ffea3 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4c93cf34 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4ca56685 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x4caf99a3 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x4cb3cef1 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4cbe7a5e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4cc2e2a4 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x4cd0f33d spi_async +EXPORT_SYMBOL_GPL vmlinux 0x4cdd6789 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d09c0f2 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x4d1af015 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x4d43ea82 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x4d514517 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d6b2a20 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4d6c4dbe param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x4dbac70b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4dbd4098 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de7fe81 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e08cfe6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x4e0c182a put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1441f3 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3734ef clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x4e418189 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e43aa60 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4e4feb17 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e8763fc device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x4e9429ca ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ea8ee15 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x4ecf7aef dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f022efe irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4f12ec79 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f4bf92c net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f8b2f78 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x4fa3cac2 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x4fab2c58 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x4fd0579c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe605cd dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x4fe86282 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x4ff96724 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50315506 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x50402669 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5071edbc __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5072c6e1 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5080707b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50968121 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x50a8b9cf fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e815e7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x50f275d6 md_run +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510053b1 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5107d772 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x510aee8e gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x510ffec6 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x51127895 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x51350c6f fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x514d128f sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51719489 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x517c563a rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x517ef870 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x51966b51 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x51a9c7c5 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x51e269e1 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x51ea7c5b irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x51ef6880 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x51f03170 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5236edf7 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5241c41c vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x5257c6ae wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x527261c4 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5290754e __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x52924f20 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x529cdaea tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a80764 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x52c4570c generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x52c95bf8 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52d95861 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x52e26440 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x5332c4bf pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5362f301 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x53754f0d kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x5378bc89 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x5392ae9f xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a3ff6c device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x53ae3f5f __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x53ba2d97 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x53ce4a74 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x53dd17c9 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x53ef76ae devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x54086f7b mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5412f2bd regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541c02f8 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x54213895 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x542b957e kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x543fe4cf acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x544bd761 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546d153e __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x546d1e44 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x546ffd9d pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5479fc09 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54adb42d tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x54b19736 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x54c089b3 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54e49325 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550f201d anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x551c47e4 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x55242d6d __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557b772c acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x560904ab iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x561c19e1 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5633592b component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x5639233c unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56490ebf scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565d98e6 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x5666d43d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5672a594 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56a0ec5d device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x56af1d2d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c68d9d rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56daa9fd __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f99be5 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572a5f5a phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5734bfde blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x5738fcda usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x574f3d44 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x576a2567 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57921fef rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57cb0e0a tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x57da51b5 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x57f40b13 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x57fb809f acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x58431c72 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5869c56e device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x587a1b59 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x589c7924 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58aa6bd5 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x58c2b311 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x58f8b80e rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59107aec xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x591214be kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x5914bc9c pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5919ebfc ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x591f7500 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x594484e2 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x59469790 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5955fc99 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x59680002 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59859183 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f76bcb ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5a087f89 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5a1afc31 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5a1bce40 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x5a25b5f1 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2ba9f9 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a60e086 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a65c37b devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5a699c6a fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x5a72f669 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x5a746674 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7650b1 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x5a7838b1 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5abfca30 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af3c7fb device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x5b069137 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5b1899f8 free_iova +EXPORT_SYMBOL_GPL vmlinux 0x5b1b0af3 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b2ce79b lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5b31f0d5 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b428d74 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x5b5d7520 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5b780af4 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x5b8db00d __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bb10542 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5bc92e4c usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd7c76d skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdd426c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5bea791b crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5c2a2f01 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x5c4e6d02 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x5c504a39 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x5c58a473 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5e406f dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c852038 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x5c8d9c14 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x5caabc25 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc33af1 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cda446d usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x5cdda70a dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d25c874 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5d2f2e59 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5d30e001 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d51e41f i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5d76956d nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5d77325b input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x5d9425cb __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5d9e04ca virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db41a89 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x5db618a3 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc5e0ee bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5dea34d6 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x5dee7774 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e0c7728 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x5e251021 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e4374ec gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x5e4e7c11 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e56adb2 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x5e5f4d7b crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5e8e0a03 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x5e9170a0 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x5ebfb090 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x5ec8ab41 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f09584a blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f6a1738 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x5fae32b0 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5fb4f2fb bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5ff070c9 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x602db30c gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6084ec51 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x609c4bcc uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60aef823 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x60af477b ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60e0a9d5 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x60e4480e sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x6182b967 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x61899806 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x619c0af0 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x61b0f0c9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x61b2d142 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x61c4294e genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61cecbaf regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x61ebf531 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x61ecdf03 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x62080601 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x6208681f event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x621079fb gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x62249c90 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x624ed175 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x624f3904 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x62547475 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x62692cef exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x627fdff3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x629f2ea5 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62a3739a pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x62ad32d0 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x62e50252 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x630f09d7 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x632863f0 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x633e5f06 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x635458ef pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x6359033b regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6366bfe1 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x6392449b mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63a15850 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x63b8a0e1 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x63bf1a8d rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x640842d2 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x6432d116 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x645a4dd3 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x646df209 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x64799d9d security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x649906ac pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x6499e365 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x64a70cfc io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64d0057f device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x64d145ac ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x64dc1823 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x64ddcabe driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x64e24a5e memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x64eb5c78 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x64eba441 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x64fd3352 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x6507dda3 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x650990b3 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x65170c3f tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x65190ac8 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x653e7a6f dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x65405677 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x65593e0f cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x655fc959 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x65690cde __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x658b5464 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x659fd6f0 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65bfc6d6 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x65c15559 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65cf53b2 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x65e07525 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x65ea7e50 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x6606761a pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6616f1f0 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x66335d86 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6652c468 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x665ecab0 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0x6678e6f7 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66b7a9cf component_add +EXPORT_SYMBOL_GPL vmlinux 0x66bceaf5 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x66c694ee transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dfc51a pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x6700c38e dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x6726e95f usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x672ee487 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674440cb gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x676bd2d8 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a644d9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x67c4ee1a irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x67df263c pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x67fe9d04 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x682e6bb0 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x68336570 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x6834ac43 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x68361b8a ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x68559930 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x687fb8bb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a7af02 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x68a8e31f ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x68c7cce8 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x68dbe372 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x68f1e8d2 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x68f830ac virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x68ff8003 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x690876f4 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x69231ae2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69515c83 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x695322c2 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x69574113 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x69656196 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x69728bdf user_describe +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69b2be1b vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x69d622d4 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x69f7149d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a19bf0e fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a58255c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a6c6881 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x6a7061eb md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8de33c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x6aadc9cc xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6abf6917 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ace5c6e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b14cf6b phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b520290 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x6b68eda6 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x6b752c02 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6b75ec63 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b84394c fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x6baca655 __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0x6badf10e skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x6bb067de iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x6bb442d1 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x6bce859f led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x6bd9998b xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6bda9a41 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6be393cf transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bf63de1 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c145b3f blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x6c1cf16e crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c3864be devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3ae6ad single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5b71eb perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x6c6538df init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c6f2035 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c892b92 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cac50f3 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x6caebdcd rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6cb76896 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6cbe11bd sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x6cc01339 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cf44925 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x6d1cd872 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x6d1d0b00 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d8d6251 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x6dac0acb hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6de3d01b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6de4b0dd scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x6dfc86c6 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6dff10d6 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e34d287 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6e4da762 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e885f7c crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8c6824 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x6e939ac0 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6e9d49f9 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6ea556f7 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x6ecaade1 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x6ee2da28 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6ee436d5 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x6ef9c515 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6efc3f24 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x6f185e8c rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f265008 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x6f3e28e2 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f4303a1 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6f644f2b devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6f6f6553 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x6f77dfdf pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f9357ef nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x6f9d16ef cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6f9d931b gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x6fa1b6a0 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x6fa67330 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x6fbb1a3f aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x6fbb6729 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x6fd23fa4 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe884e9 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700660b3 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x701ac020 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x703c71fa mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x705ae303 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x705cb29f ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x705fabc6 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x706137bb iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x70677025 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x7070acd4 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x707d7f2d xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70833e47 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x708ee757 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x708ff836 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x7098279e ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dea35c tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x70f3b9a6 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x70fdc118 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711e503f ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x711f0a55 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x71328cfd pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x713e1e13 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x7143a349 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a5719e usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x71c97ad2 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e69d1c ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x71ea711e rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x721e465e xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x723409dc __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x7234ce7c acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x72450d7c devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x7249a7b3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72553ea7 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72e097ae dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x72e7c750 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x72ec60bc regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7316f5d4 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73405cfa __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x73440db6 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x734f0276 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7351f2a8 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x73613656 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a43e09 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73ab6fa8 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x73ae0e55 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73c8a6c9 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f23341 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x74166e1c __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7454bfeb ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x745747e0 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x7461c100 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7468b74e __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x747247d4 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74a7185e dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x74a8a626 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74d007c2 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x74d87e34 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x74dd860c power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74f2d3b7 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752c3386 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x75347e95 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x7542ead5 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x75587ecb pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x7563fd16 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x75676e7a fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75d5276a ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75e47f0f vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x75f2d55e ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x761eddf7 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x7624f9c6 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x7655cb24 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7684b255 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x76a25b7f inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x76b8fe2a rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x76d24c20 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76eb9366 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771188bf inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7737f54f cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77590e16 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x7763baad mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x776fb803 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x778b675a pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77b40594 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x77c168ac xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x77dc9d21 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x780c8e88 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x78151326 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782daa0f pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x785675ac dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x785cf1c3 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78767b34 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x787bb227 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x787ec3d8 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x788f1ee7 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x78a44457 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78c84ae3 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x78ed97af posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x79281fad sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x792b958c set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7983dbcf blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79989a1d usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79a9f982 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x79c1d978 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79c2c919 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x79dc2b5b devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ef7447 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x79f783a2 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a1edc6f led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x7a2431f5 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3b0759 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7a5e45ed class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7a6be771 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x7a6c9fe6 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x7a83a2d2 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x7a846aca usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa16c54 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x7aa9260d i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x7aaf2acd rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x7ab1e620 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7aeaa049 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x7aedfc09 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b4489da usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x7b4a91d3 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7b5710cd cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x7b5aab9f i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bc86899 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x7bc9a2fc regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x7bd258e0 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x7be802e8 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c107397 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x7c546ab2 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7c5a1131 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x7c794e86 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cc82e19 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7ccdf1e1 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7cceab7f ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x7cd2d8af pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x7cd56a33 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf196b4 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0ec4c9 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x7d46f4c6 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x7d522996 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d641227 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x7d6bc3f0 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x7d71aa7d devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x7d80c855 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7d8eda4a power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7d974366 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7d9e9bc7 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dd252da usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de3586f swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7e01d0b6 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x7e044e1c ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x7e1daab6 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x7e21aa3e ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7e53663d phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x7e55aabc raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x7e55b146 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7e5f3a11 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e647c59 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7e80193c usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e91ab55 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7eac5923 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ec6ab3a max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x7ecbd966 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x7f18b213 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x7f24e5b4 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7f28b6ec relay_open +EXPORT_SYMBOL_GPL vmlinux 0x7f593cdb sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f87bc38 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x7f8bd782 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7f90a886 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x7fab3580 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fe3031f dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x800ed055 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x801926bb ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x802f5480 device_add +EXPORT_SYMBOL_GPL vmlinux 0x80529f21 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8064cf63 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809529fd alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x80fe1fce register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x810870c7 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81347be9 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x8148a056 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8166f655 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x8192e86e dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x81a6f922 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x81ba2bfa pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x81e1f50e bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x81f7db0b dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x81fe89fa rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x820a1606 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x8227dda9 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x822ce978 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x823aec21 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x82513af6 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x82725d59 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x82b01ffb wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x82b2d15d pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x82b80b84 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x8319439c ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x8334a18f find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x8358a49d sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x83631df5 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x83848169 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a02759 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x83b882e3 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x83e5a48a ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x842e38e5 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x845ee38b irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8462ae9f wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x846a0951 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x847900f4 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x8479510e wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x84b0f7fe xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84c78950 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x84d3fb6b bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x84df7ab6 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x84df80c7 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x84e839a9 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x85034fcc dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x853f7b87 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x85416255 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x8563ad5d irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x858edb0b wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x85a7879d ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x85bdebfa __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x85be599b ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85e61512 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x8634a6b5 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x864e804b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86670c3b usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867f521a ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x8684de99 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869a268e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x869c69b0 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86b25dd3 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x86c0f860 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87052ca7 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871f962b init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x8728b220 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x873c07a4 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87693f81 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x876c5d37 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8799f27e tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x879a463a hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x87c09e73 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x87c0fd42 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x87c49f53 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x87cb358c inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x87d2e0f9 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x87ea79f4 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x87eb3a6b trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x87fb5f65 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8807c98e pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883b86d9 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883f328d fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x885161d2 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x8894c784 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x88a47450 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b38ce2 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88cb0291 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x88eafbac usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x890b8681 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x8917f9df regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892a7be7 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894cf696 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x894edddd dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x8961ff35 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x897ab580 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x897b2e4b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x89912050 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8995b0c3 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x89976aaf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x899b0537 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x89b8d28b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c05062 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x89cf040f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8a02fbb3 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8a047039 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a35381e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x8a53f6c5 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a57f380 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a69aba8 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x8a73e22f tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a87e7bb perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x8aa883d6 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x8ab24f8d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad07e28 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x8ad996cc sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0f2bb9 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b270cb7 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x8b2786d3 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x8b7b001d __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b9b704a palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x8bc41382 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x8bcbe04e gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x8bed0418 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x8bfe20fd get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c1cbbc8 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x8c288f42 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x8c29610e scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x8c2c348c pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x8c2feca7 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x8c55ddf4 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x8c60ec5f regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cd5bc4b devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cda7621 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d0c2adb fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8d0f7d70 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d464a88 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d525941 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x8d76e6a4 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d78f296 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x8d927afb fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x8da0cf68 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8db8bab0 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8dbe04c8 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8dc0dc0c crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8e15ac05 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e374ccc pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x8e3bb2d3 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x8e8c68f1 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dc8 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8eb205dd skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x8eb3e7d0 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x8ee83323 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x8ef6d6f5 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x8efd15dc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1ebc4d tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8f665659 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa2eb0e nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x8fb58f22 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x8fda8dc0 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x8ff3d0a6 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9022d5bc memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x905c63f0 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9076cf66 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x908baed6 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x909435e2 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a675ad crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x90b965bf ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90e6d49c pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x90fa9b26 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9104f4de led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x910a2a36 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x91716bd6 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x917d14af ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91adb887 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x921f30c5 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x92444767 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x924749f4 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9264361d acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x927dec9e get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x92811111 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x9283a4c8 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x92913628 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x9299b635 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x929de038 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b93754 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x92bbf246 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x92c5cfa4 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f40efe serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fb3429 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9313cfcf xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93272e4f usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x933b0da6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x93457899 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9349bcfe __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x935fa776 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x93650137 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x9366a77f rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9375b316 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x93a9b0b1 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x93b1f6c0 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x93b7c13d irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x93bf2fcd __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x93c1c0f7 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x93d6b079 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x93df1d07 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x93ef8636 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x941ab748 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9424d604 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x9432b036 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94470115 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x94507e7b iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x9456db3a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x94797c7a pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b6ac61 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x94baaff3 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x94c31051 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94c38ccc acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x94e77621 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f30084 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x94fdaa4b dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952abfc0 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9541f764 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9565248c sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x956ccdb2 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9572680f blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x9588d2f5 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e19d3 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x95977dd5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e3cef6 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x95efa808 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x96011cec usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x9613fe4d ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962a8515 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x96313f74 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9675437d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9697b39c iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x96daa090 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96f4bcfd device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x96f8a5d0 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x96fb4d39 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x97415cdc usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x976db152 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x978ddc2b phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x979c737c pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x979e47f9 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97eca009 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98a07d8d clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x98a2c2c1 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x98c36213 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x98da1005 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x98e1349e fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98f33bb2 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990ea37b device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x991e2aa2 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x991e6f22 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993e0df3 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x99408ddc ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x9942a396 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x994e21a7 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99759c04 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x997b25f7 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x999e6820 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99ce0592 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x99d3b2ff regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x99d42396 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x99e34fc5 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x99fa3de6 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x99fa4c43 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x99fb463a xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x9a10da89 __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ab21c0f handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ab5d518 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9acf6359 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b46f158 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba6003f pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x9bc16220 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x9bc1a1d5 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x9bd1f799 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bdc9a38 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bdcbe6d __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9be233d5 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c09dc5c nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c192258 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3fb2b7 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c484ca5 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9c4a10ca alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x9c4dd879 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9c4dd899 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9c57820a fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc60063 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cf1dc61 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x9cf42876 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x9d029807 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d3f1b3d platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d68aa68 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d9800ba pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9d9d475c net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dbc2e30 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x9dea2fc2 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e1fc802 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x9e2dee2b spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x9e3177d9 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x9e42c885 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4de64b usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x9e602ea3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x9e614f91 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9e683bf2 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x9e7121a0 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9e76a5db register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9e8f166b blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x9e903519 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x9ea7d6c2 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x9eb83945 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ecf5b2d nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f16dd53 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x9f1d4bba powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9f565a0f usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f683d77 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x9f727bcf device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9f87d6a6 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9f9883f9 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9fa17b22 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x9fa69d44 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x9fb21f2c gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9fbc4dfd sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9fcb71b6 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa01c68dc pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa04ad783 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa05b0124 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xa08861e4 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa0abc90d usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa0bc7e75 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa12631a2 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xa12d3e74 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xa13ddce9 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa151862a debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa16726a9 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1cdbb05 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xa1cfc43c efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xa1e42bb3 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa1e80f3a skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xa1f16c54 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fb9df1 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa20585d9 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa2098157 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa209feb2 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa21ba85d wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa21fe15a pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa22ffef8 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xa23a05ed netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa244c9b0 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa25bd893 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2767ea6 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa28a4957 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa2b6f7da pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d01f3d pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa30ed1a1 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xa319c18b da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa370ed7b rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3720f97 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xa3779466 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3aa1fed usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xa3af9a52 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xa3b89e25 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ed5c7f spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xa3f6b3ff register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa3fa9440 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xa3fe69b9 device_create +EXPORT_SYMBOL_GPL vmlinux 0xa4022746 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xa4130e43 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa44b0a1d devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b058d7 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa4cfc5d2 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa4d218be irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa4d7c336 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xa540fc0b devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa556204f sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xa55fc25d usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa56f9d72 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa58d45e5 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa5cf83f9 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xa5db3a87 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa5e1e3d7 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa5e20ef4 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61172d6 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa6227fcb clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xa624a974 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa63cc65e swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa64b934c ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xa68542e5 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa685b267 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa692750e ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b63122 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa6c50958 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e6a2d2 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xa7089ab0 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xa70f5290 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xa7378326 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa73f0f36 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xa751d1a1 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xa76c553b tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xa76f59d3 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xa77b0e30 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0xa77db035 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa77f0968 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a34dc8 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xa7a60e59 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xa7af7202 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa7b8cfbf da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xa7beb118 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7ef81c9 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa82bbd08 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xa83cb8a1 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85a665c unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa85f7c2d l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa863183a efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xa8662a04 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xa88f3669 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xa8997e1b platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xa8a88ba0 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa8aa16e4 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xa8ae8392 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8b93228 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xa8b990da ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa8c7f2dd usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xa8cfca25 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xa8e36aea rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa8f0ca94 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9143342 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xa92f8609 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9333d9a pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa94884a1 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0xa96f4b0d xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xa9784155 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xa979a04e gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa984d40f xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa98afc1f ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xa9a4088e xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xa9b07c93 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xa9dd697f serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xa9de7d08 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc7480 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xaa14bd93 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xaa15f525 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0xaa192f56 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2b1b55 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xaa2ce367 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xaa2de40e dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xaa2e5191 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaa3cf5e2 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xaa4de075 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xaa66dc16 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xaa8e234c iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xaa90bcb4 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xaaa6147a fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab94358 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xaac65a84 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xaae6c880 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xaafe8ad1 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab0f2e90 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab23f8ab crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab31721d ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xab33fc5b gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xab3d8803 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xab4d1a88 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab69a1f9 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab81ea6b rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcbec16 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xabd8ca68 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac092629 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xac11865d xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xac11f116 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xac1f19a1 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xac4b9007 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xac4d96f9 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xac6785f0 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xac74fff9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xac752d8d dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xac8458e7 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac9321ee isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xaca9265a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xacacb180 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb8dc9b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xacdfa2e7 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xacdfe738 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad05c733 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xad13b30e elv_register +EXPORT_SYMBOL_GPL vmlinux 0xad40bd5b usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xad62138e blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xad751bbe regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad8facfe spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xada88133 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xadaea303 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xadb056f8 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade31db2 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadff2312 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xae37a7be tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xae47a872 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xae630a83 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae75fd61 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7fbe1a wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xae83e8e1 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xae9dd2ca max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xaea3feb8 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaeb3e626 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xaecff482 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xaee7fd6c srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xaef8812e __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xaf36fe14 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf5625c7 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xaf6b8560 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xaf72445b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafb1d9cd blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xafb4a34b wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xafb50e07 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xafb7275b get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xb0105d70 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb064bb91 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xb0671535 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08250b6 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb088bab7 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xb09e0c18 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0b7bb2f devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bce4f0 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0d0378d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb0d3f3c3 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb0d60c30 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xb0e0f51c wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb12253bc rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb1277b40 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xb139bacb max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14837b6 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0xb151f956 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb16ccf1d xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18e434b skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xb19f1738 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ec3ac2 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22b7a24 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb2410f87 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xb2412d8b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xb24586ba __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb247a67c bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2aea28a sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb2cbc253 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xb2e3cd55 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb31fb22a sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3272363 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xb328df51 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb33ad30f subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb3491804 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb34cd634 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xb35fb205 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb3683d5a ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb36a1812 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb3772438 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb3b01cf6 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb3da0f1b is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xb40d8d8f __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb41c7b61 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xb42c1ea7 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb43a7565 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xb450dee8 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xb452efca ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb475b102 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xb476ac93 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb48130aa power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xb490de59 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xb4a43f93 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e3a08d register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb517224d devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52b0286 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54a3876 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xb54d40db cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb55709bc rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb58593fb gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xb586435b sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb58738ba blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a4aaaa pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb5dc702c devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb5e4309f iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63d9118 user_update +EXPORT_SYMBOL_GPL vmlinux 0xb6503e2f pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xb662f755 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb6a130b9 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xb6a1b423 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb6a6b647 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb6a77fd8 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c37341 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xb6d0a729 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb6daeed2 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ed26a7 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb6f31a70 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb711d130 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb7396adb usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xb7430aed devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb75e7bb9 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xb78110cd __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb7c31c0b iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f959c7 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xb818ed51 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xb82cfa6e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xb849e637 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xb84e7662 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb850533a ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb850a50e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xb85b945d xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xb874e9e0 component_del +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89348c8 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xb896ef39 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb8adf3f1 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8ba9bce root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8fd71ed pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9151e8e __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb9171874 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb95f741b pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xb96d4453 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xb97de619 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a33257 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb9b65326 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb9b8be9c mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ca07ee devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9dd92cf usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xb9e1158c devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xba0aae20 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xba1a843d rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xba2659a4 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xba29f866 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3a0ea2 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xba3b04e5 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xba66ae84 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xba83e278 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8c70f9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xba8dcb7e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xba8f5fbe regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xba966f41 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xba9bb3f4 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xbaaca60e xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xbab010dd spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xbab580bf bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbae9924e thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0db349 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xbb1277d8 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xbb2053cd __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbb24ea3c acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xbb3a1057 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xbb53dd50 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb59e46a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xbb6b42d4 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbebd967 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc1375b3 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xbc14c21a wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbc2fbe3c relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbc4217d4 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xbc421a32 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xbc4cb6be mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xbc67a72e led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb5c3c3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd3698b crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbcd5fef6 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce8aee6 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xbcfa3479 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd1b553c bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xbd1bbf97 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbd1d8ec7 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbd34e005 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd408b5c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd607c28 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbd6f6eae spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd81c99b ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8d5936 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xbda383ae tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbda70f39 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xbdabe049 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xbdaf0bb3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbdc9d0d5 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdd69256 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xbddb4101 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xbddeaa65 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xbdfb69a3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xbe06bc0d wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe26cbdb get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xbe3eff60 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe95281b perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb73303 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xbebdb7ac ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee9c2d7 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbef42229 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xbef7222f devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0ec76b ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbf1a571b thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf6541b5 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbf8185e0 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf8c7406 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbf93fa07 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xbf9a2640 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbce0d8 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xbfc55c8a blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xbfc716ed wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xbfcffb2d xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd12dce pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xbfe1b1cd regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff8d024 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0038c7a clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xc00cb6d5 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc01ef708 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xc02107d8 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc02404f1 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc03067bb debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc0723a47 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b60a69 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xc0c0ca59 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc100e1c9 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xc10650ed power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc1335a12 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xc1459a18 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xc149e5ce crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc15e1558 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1769d21 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18c1d0c tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc18cad96 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc19f28e2 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc1b074a1 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc1c8017a inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc1dd3787 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc1e2eada __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22c8bf0 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc23003f4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc240ffa4 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc292a035 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xc2d2b300 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xc2e4de2d __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ea6e1c ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc348851d devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc3666ccd tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xc36f1a98 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37c54f6 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xc38bc001 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc38c5f18 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xc3a5fdc0 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc3d01166 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xc3e6be55 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc3e86cd3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc40ccf8a simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc419f44b vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc429b3d9 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47315ab ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4c6ea23 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d39f3a debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xc4f90e04 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xc4fb5804 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc55e65ae pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc598c694 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc5d09869 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5d8f581 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc5ff768b aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6167def usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc642d9de dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6707a71 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc695fb04 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a26d4b attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6da221b key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7015096 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc7159723 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7520ce2 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xc75c0f52 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc7795147 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc79a608b __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc79aac40 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a36ed5 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xc7c297b8 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d7f8e9 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xc7d9d494 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8129439 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc81b765d put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xc82a07e8 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xc82d73b7 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xc833f18d _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xc8644050 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xc874b15c scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8a6040c powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ee8040 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91a65bf __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc9408343 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95cf145 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc97b3049 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc991f06a event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xc9b0e609 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xc9c25b39 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9cf2c75 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xc9d06fce nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc9d84cb6 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc9ec01f0 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca06f41f __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xca42d795 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca83891e pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xcaa0667d ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xcaa3c34d wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad245bf ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xcb01f12f pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1afbcc percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5404c4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xcb867a16 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb88555d class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xcb8b9f71 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xcb8be15b i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xcb938f99 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb9b3dfe irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xcba8b3b0 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xcbbee1a5 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbed76fe fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1deb88 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xcc315379 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xcc31aebb device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xcc3a1157 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcc558c0e __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xcc608353 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc88af6a pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xcc9cd456 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcca782ad raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd7d625 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccee00c0 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xcd0603f8 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xcd0c8c42 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd11a64d sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd2e86dc fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd86d28d ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcd8cc945 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb92dbd spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddd8cd7 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xcde6e9b6 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xcdf60680 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce376d07 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xce559807 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xce5e22cc skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xce60ce1f wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xce64548d acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xce69e093 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce81983e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xcead11a2 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xcebf734c trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xcecb3470 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xced1a1bb rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xcede042d ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceeb29ef debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcef3a713 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcefb3f7c crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xcf2412b0 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xcf3078f1 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xcf4dc8f4 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf580b8f dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcf5c99cd inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xcf867ad2 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfaf7eb8 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfd514ec hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcfe2bbd8 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xcff73e02 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xd0077dca blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xd0368afd pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0404114 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd04ce3a9 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0875a9b device_rename +EXPORT_SYMBOL_GPL vmlinux 0xd0885756 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd089e7f4 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xd08ca277 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xd0b06924 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d95061 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd0df2ad7 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xd0e1fdc0 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd10d5697 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd10f62f1 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd11557ac pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd13c3f6a regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd14648d2 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd19ecbde wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xd1b37cb0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1bd14cc pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd1ed7828 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd1f167bc ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21a3ac4 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd21c32c2 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xd2503ea8 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2790cc0 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd28006ce usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b2b124 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d93ef3 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e4854b crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3400e03 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd346c34a __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd34dcecc led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3651857 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xd37eeaef ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xd392d518 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xd3c632dc phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xd3de9f14 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd47ce773 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xd4a6cbc3 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd4afbbce mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd4b0d004 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd4b30939 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4ccc5b1 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd4d4026e x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd4df95e5 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xd4ee0de9 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4f36ae2 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xd4fca953 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd50ac9d6 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xd533e760 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd538bd89 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd5484e9f devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xd5509a69 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5626fa7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd5852e04 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd5855287 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xd5b6dce0 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xd5b85c98 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd5b91090 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c046d4 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd5c9576e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd60ab2de trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60e2e82 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd610d9e4 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xd623a66a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68fada7 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd6a4ba3f shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd708533e ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd71488fd gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd71f382a crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76c1885 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd779540f devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd792bbe8 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xd797283d device_reset +EXPORT_SYMBOL_GPL vmlinux 0xd79f8ffe nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xd7a38e77 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd7a9b56c gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7b45c54 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd7c0c64a vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xd7c9ffff regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd80de505 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xd81b4012 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd83fd8cc usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd8456667 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd84b1896 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd85f8ff1 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd86d6871 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a55684 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xd8ac8014 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd8acae82 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd8b378c1 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xd8c76c4b pv_info +EXPORT_SYMBOL_GPL vmlinux 0xd8dac24c fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xd8e21df0 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91ea21c pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xd92569e4 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd928859f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd9364027 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd9503809 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97c441a usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9919713 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xd9a4b619 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd9addeae platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd9d4243a gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd9e1a2f7 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd9ea3ad7 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f5d54f swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xda07cc70 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xda2c9d55 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xda4f05ee dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xda4f5044 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xda4fa94f pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xda8429fb input_class +EXPORT_SYMBOL_GPL vmlinux 0xda853513 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xda8542db ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xda955a4f fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdabda97c spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xdad1f23e acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf3e333 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb047f58 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb2575ae usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb4e1fff pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb735916 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xdb781cf1 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8d4d65 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xdba45b57 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xdbde21b1 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbeb5397 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc157c92 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xdc4ebb3c __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xdc57a05b __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xdc5c89f5 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc691ea8 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9c069e __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9e987b sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcebd046 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xdcee89b0 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xdcf1c77b cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xdcff85dd devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdd06e964 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xdd0e7feb component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd779cd1 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xdd7a78ef crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddfe9cd0 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xddff2498 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xde012174 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xde04e000 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xde2fa8d7 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xde3a4c68 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde4dd446 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xde689123 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde767744 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9463a6 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xde979d40 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xdea8d125 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdeb56859 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xdeba5069 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xded3da8a dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdee14ee1 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdef068e5 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xdef96453 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xdefe1297 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf0fce80 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf457f1a cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf62dc2b efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xdf66b0bd ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf6a5e16 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdf8b7830 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xdf94e8ea sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xdfa10325 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xdfd3382d skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xdff5045b pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdff809ab wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0122785 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe04d59b6 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xe04e3585 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe0654bec debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe06673a0 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe06f75a8 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0969941 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe09fdcef get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xe0a8a35d usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe0aa5586 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c71d1f rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0cc4e06 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xe0cfb465 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xe0d20980 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xe0d70792 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe0f6e2b1 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe1083ae3 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe10eaefe tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe139cce1 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe14af57b hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xe14b3beb ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xe14feff3 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xe16c614c policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19186a6 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe19274aa __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xe194928d init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c67ee2 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xe209bcaf __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xe20fc958 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xe24c14ec tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xe24c617f dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xe25e0a50 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe2641984 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe27b9020 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe27d770c subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe27ec27f rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xe282c573 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xe2863154 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29349dc copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe29a8a58 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe2c39c9f tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xe2fbe79e da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33080e9 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe332d1db pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe350230d hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xe3513d6f devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xe35b0671 device_register +EXPORT_SYMBOL_GPL vmlinux 0xe364d2f7 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xe3781628 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3929704 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3afa06f usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3bdb331 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe3f01fdb blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe443e6de percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xe455e159 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe45e51f9 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe4637c3f cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46d3b01 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49ef64a virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe4a0d7af __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xe4ad03e7 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe4be675d irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c3ea5d rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4ea0881 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe4f5af35 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe4f6ade8 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe545a811 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0xe56ea843 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe576ca27 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xe576dc9e power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58ccd61 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe59cdb94 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xe5afb334 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe5b3aabc sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5ca83e5 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe5df07a1 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xe5e65f26 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xe6083ce6 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe620e754 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe652b91f bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xe653444b gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xe6621c0c reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe675bd5a set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xe697fbf2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c86aaa gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xe6dae4fa xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e9a31e xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6fa2c09 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xe6fc0168 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xe701961d __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xe708790e fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe70beef6 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe73d9988 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe74c5d17 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xe75cb10f gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xe75cbc1e evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xe75f4daf usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7605e7a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe79ecb4f device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0xe7a7f937 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7e586a0 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81aff31 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xe82bc0ea pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85e345d mmput +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87035df debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe877c80d pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xe87b54b9 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xe87f23b0 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xe88d2afe ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xe89d9f39 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xe8cd77b5 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe8eb105f dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe8ec8a0d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe915b03f dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9492bb4 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe95a85cb l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xe967cbe8 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xe96995e6 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xe9af93e2 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xe9c26586 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d37a87 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xe9f9bb4a extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea2947e5 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4f5b41 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xea5c227b intel_svm_unbind_mm +EXPORT_SYMBOL_GPL vmlinux 0xea622909 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xea73c388 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xea8fdf66 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xea934796 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xea935e3e security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xea99b795 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xeaa54222 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xeab2bf85 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xeabeecba gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xeafdfaf7 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xeb0020aa to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xeb028d0f gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2ee068 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb7f9559 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb96da33 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebaf0009 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebb757d4 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xebbf4dcf ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xebc8b258 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xebd27cbb tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xebe82bc5 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec242b71 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec340035 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xec345730 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec3d93c0 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec9942a0 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xecbebe0c dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed06c5cb pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xed43ed8c platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xed52727a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xed696480 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xed6d90f9 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xed911d41 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xed9ce7ef inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xeda7a122 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xeddd5101 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xee653ec6 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee906da7 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xee916ec1 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xee95f908 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xee9a983a ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xeec51fe6 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xeef82272 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xeefa9802 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xef1d3f11 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef369b4d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef4d0c1d put_pid +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef88d2be gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8f764e wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xef9c2111 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefba70af da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xefbe344e serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04ea185 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf05b3f88 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf05f170b crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf092bafb pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0aa4c77 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf0cb45bd crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xf0d79a9c devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf0dce3b3 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xf0eedee8 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xf0f2b419 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fc7cab dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xf105fd39 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf1104740 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xf12e0803 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf169595c perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf16d6171 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xf184a71b regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18c4587 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1cabf10 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1df93c4 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1ed900b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf1f5ea4a sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf20b6a32 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xf2196393 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22217d8 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xf223cbeb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xf2243cfd dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xf22c35d1 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xf23213da sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xf24c1070 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xf25e2c55 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2a22f35 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2c9a77b intel_svm_bind_mm +EXPORT_SYMBOL_GPL vmlinux 0xf2db8c6a ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf323c8c6 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf326dea4 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf348e1da fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf3520b24 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xf3521e56 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38229f7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf38a9772 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xf3b1d0e1 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3ed84aa pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40742eb __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf418d95f devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf43e395b phy_create +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf498d042 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4ac1011 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xf4c688b2 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf4d29f67 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xf4e3448f __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fed5f9 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xf4ff3043 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf548c0cb phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf554b34d ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xf55e11c9 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf56ee513 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf57ae6ba xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xf58eb79f device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5dace83 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xf5e939d2 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf5eaa301 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xf615386f percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf618dd5e blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xf6257c6b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xf62d6167 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf632d23e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf64318e8 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xf66236e0 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf6644343 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf6680b16 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf6817c88 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xf6937685 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xf6aaae41 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d8b423 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f94739 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf7003773 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf71ac347 find_module +EXPORT_SYMBOL_GPL vmlinux 0xf738488b rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf74ac76b ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xf764e235 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xf769e20b dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf773b4fa ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf7820ab8 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xf78e3a97 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf79e2898 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7ffa503 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf80ce774 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf810141d blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xf8167e07 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf823f5c1 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8494379 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xf84b0b98 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf85004dd devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf86ba8ba __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf894ba00 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xf89a8417 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf8a21971 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xf8c29529 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf8cac278 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f749ab lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf913b13f tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xf91a5d0a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xf91ee23d ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf93137ec fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93d11f5 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a59 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf95639a3 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xf9699e1e inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97c0eea tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf981b536 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf9820eb2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b99994 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d7989f spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xfa17b34f xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa226463 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3a5434 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfa6aff51 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xfa73503f unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa941cd sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfaab0018 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfac6461b invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xfac913cc pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xfacf869f __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xfae6dda5 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xfaf133e8 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfaf218e9 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfb1698c3 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6c0db3 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb92e3ce __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xfb988c26 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xfbab7da0 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc95534 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xfbd1df56 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0c8f59 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xfc0dd7f2 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc368e4c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc463929 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xfc5f4b19 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xfc6aa94e acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xfc7289a1 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc81c286 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xfc9116f3 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcc01168 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfcdd2c20 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xfcddd281 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfd16a10e clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0xfd182e95 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfd2479cd __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xfd26aa37 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xfd47fd32 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd71432b put_device +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7b5746 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xfd915e47 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xfdaee6b9 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfdb7876f to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xfe1cac06 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xfe257643 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xfe335f8a da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xfe421396 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfe6a72f9 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe774fbe devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xfe88ed7e driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9a56d6 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xfeb7aac3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xfec75c21 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedf382e __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefaded5 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1e7b89 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff586d89 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5d8808 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7b165c rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xff839940 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xff8aa6ca fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xffa491c2 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/lowlatency.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/i386/lowlatency.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/i386/lowlatency.modules @@ -0,0 +1,4736 @@ +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_dw +8250_exar_st16c554 +8250_fintek +8250_fourport +8250_hub6 +8250_mid +8255 +8255_pci +8390 +8390p +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act2000 +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-agp +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +aquantia +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +ascot2e +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtc +dtl1_cs +dtlk +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efficeon-agp +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-104-idio-16 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-eg20t +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_mid_battery +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel-mid_wdt +intel_oaktrail +intel_pch_thermal +intel_pmc_ipc +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel_scu_ipcutil +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan78xx +lanai +lance +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +logibm +longhaul +longrun +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lv5207lp +lvstest +lxfb +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +NCR53c406a +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvmem_core +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5535 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_isapnp +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc110pad +pc300too +pc87360 +pc8736x_gpio +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-broxton +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powernow-k6 +powernow-k7 +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +pti +ptp +ptp_pch +pulsedlight-lidar-lite-v2 +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qat_dh895xccvf +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-bcm2048 +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-mrst +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-i586 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +scc +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +ses +sfc +sfi-cpufreq +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmi8328 +snd-cmi8330 +snd-cmipci +snd-compress +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-interwave +snd-interwave-stb +snd-isight +snd-jazz16 +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-miro +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-sis7019 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-dmic +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-skl +snd-soc-skl-ipc +snd-soc-skl_rt286 +snd-soc-sn95031 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-sscape +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surfacepro3_button +svgalib +sworks-agp +sx8 +sx8654 +sx9500 +sym53c416 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t128 +t1isa +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc1100-wmi +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshiba-wmi +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tscan1 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +ultrastor +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wd719x +wdt +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc @@ -0,0 +1,17194 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0xa8cfd13e mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x1c686f2e suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x956605ff uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x6f5c75ed bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xb8134713 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x00c2be74 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x33c0e6bd pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x547e95f9 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x5745f8d4 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x6ca24f97 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x6e352823 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7de0dba6 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x95d54c47 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x98216574 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x9bb5ff2e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xfc4a6d92 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xfea463d3 paride_unregister +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xaa6e7e1d btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x26bec6d5 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4fde9745 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6748285f ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6a566f63 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xbf85c4ac ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2d2dc6f0 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x45cd3cc3 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4c678f22 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x60b75299 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4cbf7a5c xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x86ed80c1 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x8d5102fb xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x3c7e6c4e split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x5a0c269b caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x5e8e1da8 caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x61f8e859 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbce14eed caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xedf08e6e caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/talitos 0x287bdab4 talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x007184ec dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x205131b6 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2cb924f5 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2f725c60 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x45ed38b0 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9ec45bb3 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/edac/edac_core 0x74cadf43 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0xeb917754 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0be86afc fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0eaea485 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1647f520 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x238e4381 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3ba75276 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x51eefcb9 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x786d367c fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a60516d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7ea96165 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f07cd61 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x89e2fbf7 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ab33140 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e9e3a49 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9fd5a06c fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa3327c01 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa5a429b1 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb91e0751 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc5f2a4cf fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc9f4304f fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd273a50e fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd647ad3b fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe1172668 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe96dd05e fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf459865d fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf535dcb2 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfc637af7 fw_core_handle_request +EXPORT_SYMBOL drivers/fmc/fmc 0x35a306ff fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x4c922086 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x622c9133 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x653afc1c fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7e29dd06 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x7e9c5129 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x83e2e45e fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xcc18826c fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xdff6057d fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xf0c7dc9f fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf1ed891b fmc_free_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00249fbf drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00c4e4b6 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0104841c drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x010e474e drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f30fa2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x025abd24 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0393eb75 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07ca47f4 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b38eb98 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b721b42 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bc9468e drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d6df3ba drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f0bf9c5 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f97ab3b drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x100c0e16 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x105a6485 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c989bb drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13045c0a drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x135e5fc6 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13ac96cf drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15017be9 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16bbd4ee drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1743f208 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x188fc130 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1948325c drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a285360 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b5e3588 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d647fb9 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1efcb05d drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f91ea74 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20ae9150 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21674808 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2171bfc7 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224350a5 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25c37876 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x274f961d drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27937df1 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2799f7d7 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a4e24fd drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b8d244b drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2d72c0 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e292ff6 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f3a7210 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f41e7f4 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f4a3bdd drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f835e0a drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x303d5213 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304a4ecd drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30e7a49c drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31599fdb drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34017910 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x349225ce drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34a12bd3 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34f7bd12 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3505e216 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x351d6002 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x355502d7 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x358c56e1 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38252f68 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389c015f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38b8aebb drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a1149a2 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b0de96e drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ca5aea5 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3caeaca5 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3def7200 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f1aa3dd drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fd6e686 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x421a5756 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44753289 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4651977d drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x465c1890 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46e31075 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x489e159d drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x499ce1af drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a9cf6f5 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bbb009a drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ca20ee9 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4df43824 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e637f25 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e89bb0d drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f386b35 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50802765 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5246f161 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52d65aab drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53beabc3 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x540e2000 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5471a3d7 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54988766 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x565961f3 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57354033 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58449131 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e61e13 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5963bd8b drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a401f47 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ac69bcc drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b1ee4b4 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b2379e7 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bbafd91 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c0d8d0e drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cc0e17d drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d606caa drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dda57e7 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e111879 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f2b819b drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f6bd8bc drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x602c69fd drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6043f65f drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x611c5279 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62065e9d drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63584985 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64021732 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6579a18e drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65af830c drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67d7f400 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68bde8a5 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x698bf5df drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69c55463 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ab4e5cf drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ae34a10 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c5464a2 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d138e38 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ecbd1c0 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f833edf drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x705e4a63 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71593d4c drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x735e14af drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77dad596 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78028914 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x783c9c34 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7aa14f65 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3d1ab1 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c6e05b0 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7db67e62 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e5ead2f drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e8104f0 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ec27f50 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f486ddc drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8142c806 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81f49862 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8230975a drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82795b21 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e00b43 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839c9423 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83c82377 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83f07a61 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853dc76f drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x858300a5 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86b3bbf8 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87424c9e drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x882bcc3b drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89928caa drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89ecea2e drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b809b5d drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c2cad62 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d0ea48e drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d2a488a drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ed4fede drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f5fba4c drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fbd1f01 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93309d1d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95002db8 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f46b76 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x960b8562 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96376092 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97465c0e drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97a200f9 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97c1968a drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98559d74 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98dee46d drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9905cd50 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x993b3fba drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99419700 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b1eca31 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c69d9c8 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cf9c469 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eff4129 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa05a6569 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa110a274 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa143290f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa14947f2 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa16c62c2 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c1f43b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa335d2d8 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4cb138f drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa76cea40 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8d15d4b drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaefe76b drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab656438 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8bf264 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacc782d2 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad01e0f2 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf9b8ac5 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafe8343d drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0399a23 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb07f433e drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb09f4f5f drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0a459ec drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb149691b drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb16c559c drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1d502b7 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1e9b366 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2a4f9d6 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2f7546e drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb346c2b5 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4bf0c5d drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5d2af59 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6f15fdf drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb71ee7bd drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7d1bbb6 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89cf397 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba583e37 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf1fedc1 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf87fc00 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc06976e6 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1ae9aa0 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc24426d2 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc27647f0 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2886305 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b391a6 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3852c69 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc44a114f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc54688ca of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8eab059 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9cda293 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaa12c2e drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2a5b0e drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb885fac drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc9158eb drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccb504c6 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce03e5bd drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce8b63a2 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0aeb638 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0b46cf0 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1c5f7c8 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd909f654 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9204593 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd92ea41c drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda5aeccc drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda87ede9 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdde5efd2 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde6dc2dd drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf0571fd drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0e22ed9 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe556fd8f drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5d51991 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6aaa1a6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe81ff82f drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe829a1d2 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe85867bb drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe952e1c8 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebac945a drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec49135f drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed135ede drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed80e21e drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedab8d90 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedcbfd77 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee8249f5 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeaa68ce drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefae4978 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf19f904c drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf26fa790 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a69849 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf45a09ff drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf46b9d12 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a1c710 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf89cf980 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8ed08a8 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8fca210 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf902bcc1 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf98e5d65 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa0f3bd9 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa7714bb drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb11de6c drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc8ab1a2 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe38b0fa drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7afdcd drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffa39684 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00ae976f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03a0d326 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0452bc4b drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x075f6460 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08811d92 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c8d3de3 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11a54a8e drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1656adc7 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19c7b45e drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a5b79a9 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1afb67d1 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c5a2d6f drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c775615 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2028f164 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x204e3f97 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20885213 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ebd6ce drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25720620 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25862bb1 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x285eed20 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d2e3460 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2eb4fbff drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3516ee81 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36a8e760 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3989eb4a drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ef6728c drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fef242d drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x407c69fa drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44570375 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x464d03de drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48703d93 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4875f3f4 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4978fd33 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4dcd592f drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52a2da08 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x557135c0 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59ae565b drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4a7bd9 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c461adb drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5dd4ae98 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63b7bded drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67e37722 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6912728f drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6927a18d drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a6968fe drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6db9cb3a drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6eb7adff drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70434b1f drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7057b73a drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70890cf8 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71e06c5f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7371ec0a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75edc3d8 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77b08102 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7989ee1d drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x799cd720 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79accd48 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cf8ad6d drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eb7a876 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fa1e49a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x827bdf71 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84cfd8dd drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x892ccba1 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a183307 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e270eb4 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9065c10f drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x948c4b3e drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x956e0467 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9632547e drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97d65794 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9844b365 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c2c2845 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cbee508 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cd20d7c drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2b50a59 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7b68feb drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa984a4c5 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacdc02b8 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xadc936d0 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae9c9d9d __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf24df29 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafbe2020 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0d3b59d drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0de5e91 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1399d09 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb38ca78d __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5620421 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb940792c drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaffe8d6 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb0f172f drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc0acaf2 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc4ba3da drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfda0ad3 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc00387e0 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5b74eef drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7a30265 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd35e367e drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd372cab9 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd482274d drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4c5f929 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d31f78 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9778ff3 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcdb1d9a drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd1dedde drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd8eaaab drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf10c873 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2826af1 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4bfbb5e drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5687c8d drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8c0491c drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcc7156 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef9b6d6d drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf17a3406 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1b83754 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf21551fd drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf38903df drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3d8026d drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5aecadb drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbc5aeb0 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc250479 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc7275ca drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe7ffdaf drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffc1e3b8 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfffac4a1 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0152cfd1 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04706186 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a5686d4 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1196ae95 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12a2cb0c ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13e041a1 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16158e4e ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20533569 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x225052dc ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2256065b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2618534d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c377d9a ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x316c222b ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31ae7263 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d1d0703 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d39fcb1 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e2ed2cc ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f046a56 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x526d59b8 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x593bb69d ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59c6f3be ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5eab0898 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x668bd8a5 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e1088ee ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e271d69 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ede5c02 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70efe56d ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7375c227 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a1f1f58 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x892ef079 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d201e9b ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8f2ff678 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97b45ec4 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c61d5a7 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa847c498 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab738d7c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac2650d2 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad15f676 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad87cf86 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb05ba0d7 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6d1ac0a ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe85e77c ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9d39f5b ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd64a4ae6 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd812c18a ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd2b4dcb ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf75802a ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe88d1c04 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef839a97 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf04f305c ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf371e171 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf6144196 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8e86abf ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa9d2825 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe1a9309 ttm_bo_device_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x47757b4a i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x4fc51312 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x9f01b50a i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0f26f3e1 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0f28d61f i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xfdf51c7d amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x09bc035c mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x28d92adf mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2a02c61a mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3f004bf7 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3f534323 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5140c76d mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x700b4873 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x758383a3 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7b3ad437 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7d37cbc6 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e7521d0 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9ed0ec70 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbc8dcd3a mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd8b38b1b mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe4115cb3 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf73014b2 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xc7adac3b st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xfc0782a9 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x2b4c12ac iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x3efaa6aa iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x135be087 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x3c7e99f7 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x4f813fe9 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xf9487e5b devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x11027a76 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2454f288 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x62a92bb7 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8bccbd19 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xab7f6f67 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc276af28 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5f514c08 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x65edea86 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6a984ab6 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb751901f hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x077aaad8 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x598fae89 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x607d797f ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x63ab0d48 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa576c9ea ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xae610815 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xaea92463 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd2c5c6aa ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xfbeb2aad ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2ed90084 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3b2eb31c ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc7823bed ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe02fd574 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf7d59f64 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x3b2c9cf1 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x61267948 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x6feecdf2 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0327065e st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x05925b96 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0a9be6a3 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1e073552 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x313cc513 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x504295c2 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5185ceca st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5c7c796a st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5d87eccb st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x65cca2d7 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9585dac1 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9ca9dc6c st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa1d23afa st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb7dbd236 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe9fbf49a st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf1fbb5a5 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x14c0b843 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xeb3e141f st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x7e062e23 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xcdc2c4af st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xf659e87f st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x53fa393f adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6165df15 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0a68b2a3 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x240cc6fb iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3427c5fd iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x35b97fa2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3e462463 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x4e861cad iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x553a89fa iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x60b7aae3 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x60c849ed iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x7d857ffd iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x7f3a8416 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa2c11f5e iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa364a69c iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xbe02ca85 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xcc954bc8 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdea7fde6 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xf64ce311 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x43f833cf iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xf9882532 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x78b721ec st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xa44ae898 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xaa07a6c9 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xe1635b82 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xebc09799 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6eeec126 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xcf109d79 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe04ac71b rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xed99eeec rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x03e8c27b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c826186 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3c7ee4c7 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x51d80fd9 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5d6a778e ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x783b27c2 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7c2fecf6 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x81b47bc8 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8290c88d cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa3d3febd ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xab616af3 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb6f7a206 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc086fde4 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd05b51bd ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xded024c2 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xebebcd4e ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf0206f08 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf792d0c2 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x050dd2e3 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0aaa86bb ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1097050a ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x112d17ee ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12c21e8e ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16d11ecc ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16fd823e ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17970450 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eb12081 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26d0dcc1 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x289100dd ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2aba056d ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d23c75b ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33b86981 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35223200 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35cca896 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38ae09a6 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d5e8069 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ddd69f9 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45d537d9 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47e14cb3 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48a90184 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48aca1ec ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b78d566 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c0eea40 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x511d3aeb ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x560c0e23 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c9b865c ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60f04161 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6133ffd1 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6370aa79 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x672de9ed ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bcf1b2e ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6fbd99ae ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x734bd99f ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75653baa ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7acbbd20 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8193183e ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x862041ac ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89542a4c ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8aa28c59 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b20e7ef ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b23fcb6 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ba36601 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8cbe428e ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x911fce48 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92ac9cd7 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92c6eb0c ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95ecbb4b ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9742526c ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x977ccd2e ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b2680ef ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c5cbaf5 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2c4e020 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa583c50e ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab8e6539 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadac0c6d ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf21adf6 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf973094 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba148843 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcc28db9 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd55fe9e ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0c1f176 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3fc4a39 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5f67df7 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb6a4df6 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce21658e ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf82d899 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3d72451 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7ae7a61 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd85db3ec ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe985e715 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe996606a ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb90e66a ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecb08193 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee4f6ee2 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1303fff ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf230f504 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf295119e ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf499be2e ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf570a89f ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe2cf15a ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff6c82f3 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c4483f8 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x214efa92 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2a501c87 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x39a459db ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5ade3495 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x842929bf ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x922c0b5b ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x969f4b3c ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xae78305c ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb0871888 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb97e8b4c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xca76af48 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xedea8a9c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x106d059c ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1e2dc852 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x38e14f27 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x67215820 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x860fff15 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb4672951 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xcbbf2631 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd9797037 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf11fd963 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0af13bcf ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4201ab31 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x10d14243 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x40b2aecb iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x41247b72 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5ef1b432 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x63d286b0 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6aec9d73 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x79cfe272 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x89e4024c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa65c9491 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xad4fc4af iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xadf4e882 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbc6de2d1 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd8a28a47 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe0992604 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe9019859 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x053a6c11 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x07c6e489 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x084750d6 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0ae7ea7e rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1e11a359 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3977c9aa rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x470126ad rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x494d2e6f rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x545501fb rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6394b416 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6765ee25 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70548676 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7373be1e rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x783cbc59 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb55ae64f rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbf6e5948 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc3ddf7d6 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcdf628ea rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd9ccf2f7 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe68ed0c9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf86ed002 rdma_connect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1627ce4b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x216f2895 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3e163d62 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x52033787 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x951fcfe3 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc5e40281 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xeacbb4ba gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf344622a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xff2b0286 gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x460ac6ce input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x711b5f42 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9697b457 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb4bbed57 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc2740f78 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x05e9579f matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5e222604 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc163f7fe ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xcd496769 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x93146a35 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0xadf5f4ab sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb26ba761 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc4e6fbe9 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcadfdaa6 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf2975f94 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xfacca677 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xb6cf37e9 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd45a4577 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x18a71928 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x26d0c4eb capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x69f2734e capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x763be474 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9a4b9ec6 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9c66a048 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9c777618 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdb8e8e7f capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8471bf1 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xedf931b1 capi20_register +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1633ac87 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x29eb062a b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2b0a2d6d b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2cfdc164 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3bb1a68e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3cfb6cd5 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80f693a8 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x95981beb b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9705c54a b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa5f5e8c7 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaa3f8150 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xabb27d5f b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc4efe516 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd08ca240 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe69332ca b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2471c030 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x27302991 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3bf546fc t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x54f48fbf b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x84376ed4 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbd67a6d5 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc2fa92df b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe6b6a2b5 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfdd22c5e b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x02e3366b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x438759d5 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x69f3e5df mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9cb67e70 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x05607650 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3b6e0414 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x61d7d71f hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x0acfefa3 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x0b9fc3d9 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x21645363 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4decd17a isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xae287a20 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4a9d8dda register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x5493ded9 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe8943a16 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0b684d83 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0bbe2810 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12c910b1 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1b80c8ad recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ee3bfaa get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a3792c0 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4aff8f61 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4f14f39c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x56d4d8f8 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x64a73eeb mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7141aed3 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x735a9b4c mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x814b2e43 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8de17763 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9670d8b0 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x99edb06f mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9e235659 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbb71701b get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc7ee26ca mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdf934d09 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5e6b04c mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xee1c32d6 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfbb93089 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x09315554 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c4d0956 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1c212ed8 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xac2bde57 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbc125ff6 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc0b9ef00 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x3fd36ae7 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x42dda46c dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x65d56ef6 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xfd745d75 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x59134a9c dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5f67396e dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8576dcfb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd50af291 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd95998ec dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe86aa0a8 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x9d7c233e raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2e6ce702 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5fb954d3 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x63730774 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x694dc0e1 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6c267db6 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6d419520 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9de0bf12 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa371cddd flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb1d4796c flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb83d1282 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe644eace flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xef36fe46 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xffe8cf54 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/cx2341x 0x10e3aa00 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2910c6dd cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5481a708 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x87394427 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xa57138bb cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x8c3df95a tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xe963ea51 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x02800ba1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x04d2d142 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08faa7f2 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11e1c7b1 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x262271f0 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ce14fa7 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x315190bd dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x47692c1f dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x50e83c8f dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x51b98415 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58029f49 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c01864b dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x638ae597 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x706c9e9d dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x71585565 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7bf5b870 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x88113cf8 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8ca25383 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xacd98016 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae94a778 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc220c260 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6f5c6e3 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcedb11b5 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcffa7d91 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdeb3cfdf dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe774e78d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf6caff17 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb98ccaa dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xca548f37 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x5bf755ac ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa183f15d atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x204ae57c au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x20f42eb7 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x44f3c394 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6f73d009 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7421e273 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x757dcbad au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8a5a8dfa au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdc52fb5a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfeff23a8 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x8a0e73b7 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x0b422ed3 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x66269fc0 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x61da2b15 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xa9bf531c cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x83962cd9 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xff400474 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xb8532a94 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x1abbf0c8 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x89ce186b cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x93d9615e cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xa2bec51c cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x18c45b43 cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xe0d502ef cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xf28731f7 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x19853e7b dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x716eb94d dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x96867dd7 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc284f596 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe0d59f90 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0dc78f78 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x100f44a5 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x19e99285 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1cb12f94 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2886443e dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5a698024 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x67ec214f dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6cfda53b dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7e986fd5 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8917eece dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xaf3acf17 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb38f4e91 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe9223739 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf672c691 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf6bdd34a dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x22829fed dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x053417a6 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x37a1b6b5 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x42b1bee6 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x92f3ba75 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xaf24fe29 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb3ffe144 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x088b7f9f dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6c65d211 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x79f67e8f dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa33779d4 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x02e40411 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x48fd2538 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7cdca8c4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa517f6dc dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb775e39a dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc4df9167 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf1441bb3 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x6f481ae0 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x754ce2f8 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x160eea56 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xed7bdf08 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xddcfa70d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x0bb0d328 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x63657cd5 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x25903a63 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x8635d4dd isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xbd481fb4 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xc153f68c itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xe202684d ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x1099edd4 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x2adca651 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x46d2352a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x7a19f8e6 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x4cf0b815 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xc0ae6313 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x37f1ea4c lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x70a9e384 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x8877c871 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x95a0bf9c lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x0498b0b8 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xea22b8f1 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x28359b85 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x71080067 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x525c588c mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x49a746f7 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x61f48787 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x4f790282 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xa38fa4f9 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xf4a7f2b7 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x3acd7f3d or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x7238c125 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x90942786 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x3fdcd175 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x928de8c7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x75330ff0 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xffbfb9cb si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xde8d49ca si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x215c2f31 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x72e9edf0 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xf2148fbc stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xbb0a3543 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xe1c28bd9 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xa5bf0e56 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x1df6faee stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xedeb6ca1 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x11bbe0df stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x12e2d8c5 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xe043f574 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x026163ac stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x1795669b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x1fdad8cf stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x64269536 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x0255bc02 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x97c7ecab tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x17d8484c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x23cde024 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x6ce202de tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xdf89540b tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x0b9c9f9c tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x19efe53b tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x54763000 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x15f5be15 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x70c0a882 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc43051ca ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x53a5987b ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x03a7805e zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x2ae3c418 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xfc0efd6b zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x131ee179 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3159259b flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6b35c87e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x72af5b37 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb55d865b flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xce7bd155 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xdca9ba5e flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9ff47e13 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe21817ba bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xede7423a bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf4c2091f bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb843c78b bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xeb5b48f9 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf1de00e7 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0d27b7c8 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x22ac213a dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x51f1daa9 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8e6fe0b6 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9c652d0a dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbd02a15a dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcc8cdd43 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xde9d8870 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdec14172 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x65b6cf2c dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x11eda564 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc0d04cdf cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc453fa25 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdb130177 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe2ff7ed7 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x161be044 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x059e7514 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1a2f105b cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3098c3c5 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x52f46c8d cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5d9a6330 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5f718953 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc938e0bf cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x88884c28 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8da01eed vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0a9152bd cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0d2ccf10 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8e766083 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc0bba5a7 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1f544e61 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x298bcc9c cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x60a74042 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x78a5581e cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x89946234 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9648c8eb cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfca8bd29 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x00f020f9 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x035f924d cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x03920b3f cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x079a3cca cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0d0a2fd0 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0e58bccd cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x10469c31 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1d3202bc cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x261e1399 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3caaabd6 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x48a43b3f cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5714c332 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6c8b4aec cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x75beb839 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x89e5edba cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d8184cd cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9e94b456 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbda420a5 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc2f22ab5 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfdf68b39 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0112bee3 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0639dbe1 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14e4e6d4 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x19c81804 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x23c5dc98 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2a959f0a ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x41c5a91d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4d7cf381 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5fdd68b5 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x65ae1d01 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8e1eabb3 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x99846324 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad663e49 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7db1923 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc8ec77ac ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe2dd8445 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeb74218f ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x03d15ccd saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x09896d6d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x304ce9c5 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x33002dea saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5f2709e3 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x830513bc saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa78791a4 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa8a81506 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xab470e6d saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbdfb1946 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xca0b5d65 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfb75677f saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x81c7f118 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x34af4703 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x3ef41391 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9b4f2396 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd80077af videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0e6c090b soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1075c582 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3db9f083 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x561d97f7 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd3767813 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe780fe1d soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xef789817 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x42fc34f2 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x583ff1be snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x69bbc59e snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8dcbfb13 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa6782839 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xaab18357 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf20fc68f snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x319564ab lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3377709d lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5b9108cf lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x65f20f3c lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x973a71f3 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc5230fb8 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd8d23800 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xebb78b52 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x34a428fb ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaa650328 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x4765de9f fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xaabd7dde fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x62637d4e fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc5595521 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xd3b1785e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x4dfd3beb max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xaa46dc3e mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xdf2c087e mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xe764bf5b mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x5abf9f35 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x25f353fe mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x23109c1f qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x86b07e02 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xc7621627 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xac2e79a8 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x973a0bac xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x10dd043b cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x37a7e5db cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x11e21f2f dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x27aee3a6 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4e26e314 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x565c53f0 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x688c0f02 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbb012d53 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc0e6e4e8 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc941d8ff dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd44afcb7 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x277e4c73 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3df9ec2d dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x42ae07f3 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5805790b dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5ef111e5 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd079ce48 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdc8271be dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xaddd1dcd af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0b8985b9 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1240adbb dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2041c3ef dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6044a49a dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9025dd42 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x92ba929b dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb2bdc241 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd970153d dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xed46e0af dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf2b2246c dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xff1035cd dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x3911d466 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xc8cff418 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x04fee25b go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x11189004 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1952bca7 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x266e0751 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa3ffe0e7 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd7db0ee1 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdde51b97 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdea211bd go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xedcf4fba go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1d535ed7 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x554654ea gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x67ab0e28 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6ff2d0fe gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7e119fd1 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa60264a3 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb8de1ffa gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf55c27e5 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2bb01202 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x42a51876 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x4447bd49 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x5b0afc56 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x70cdfd9c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1547e1a9 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x37dc1cc3 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x6077e939 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x230f280d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5c6a7f07 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7c22c6d8 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x91cbce1e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb04dab49 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc9c173cf videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0257c9c8 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xeb1344c7 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x183be0e3 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x44738c86 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x490cd9c0 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9e80e5c4 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd2a4bd66 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd518b212 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0xbd0827db vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03ba0b67 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0655c917 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07bb71db v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0eff97ee video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11a28f9d v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1888092d v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ec8df6c __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22199407 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x265791eb v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2bdaa41f v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cea673d v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x333fcaa0 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a08033c v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a99355c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b253e61 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40b3c7cd v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4fa12e28 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x556703df v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5650041f v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x568b13dd v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59fd6b28 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b97fe8b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5fbc966a v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x600c5d5e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x632dc600 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63fe36de v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65e0e603 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x726fab00 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75481dc1 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75f5ddd3 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76830122 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7801e356 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a107925 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a735aac video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e52f959 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83659148 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83aa0749 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86c6e350 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x877c6649 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d07b73b v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ff1d045 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91819ce8 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93672415 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9772f3a9 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x97e7b69c v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9929369e v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9af46016 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d20d2ee v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9fcc6acf v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1e7988b v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa6cad0a v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac7f25f1 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xafc00dff v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb137f559 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb4ca20b8 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7f72ee5 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12ced07 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2f314d2 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc30c060a v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3595aea video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4a5a23a v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9f68103 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb5a420b v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd2df2ef v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd18a77ea v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd79cd570 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8bd4d8e video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe429d188 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7c8afde v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9f83540 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6a65ab9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbfb299b v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc2d6b0f v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00996c26 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x01e7752f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1aacf9bc memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x53f0d382 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8d0a7142 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9b8454fe memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa7684954 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb0061ee4 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc308eced memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd23a8bb0 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdbcacde6 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfc206ff9 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x05954d66 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0f5b8cce mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16a77a5d mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26329f69 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26b6fd14 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x337f523a mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3dd50738 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a0a274e mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5592eb85 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63d00e38 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63eb4ed0 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68a36f7e mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69bacdfa mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a4ebfe mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x79bee4e4 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9317f6bd mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a6ebbc9 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa908b128 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc7eda459 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcd9f3e1d mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd63d572f mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb0d40b6 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb0e15b6 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb0f174b mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe585684a mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6d9ca14 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe998ef19 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb8cb54f mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xef1feeb5 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x05adfb2b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x09ff0eba mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0ba1b524 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x182761dd mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x232c504d mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x23ff7ae5 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2e1f7ba1 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x30a2d711 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b516653 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x40d7302f mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63cbfaaf mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x79e7b68f mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x86e3824c mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b72e61e mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa026bc64 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa1358de7 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa224688e mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4061e00 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xab973ba1 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac4abe3c mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3ee469f mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb90c2809 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbdedbb44 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc482b718 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed247b07 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7cd8ae7 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfd18c5be mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/mfd/dln2 0x0ffacbc4 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x7dc255fe dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x95d8857f dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x17bc60bd pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xce4f4fce pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x080dff13 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x10cbd358 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x24dc3029 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x44beb65e mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x493f38f7 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x51bc4c6b mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8ab0aca9 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9c962879 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdd64a739 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0d6b3d2 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xea36fa9e mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xd9c23bf1 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xfc8b3574 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x0b0d4c1a wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x3937f783 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x946f4e37 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xa48a3e73 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x29fb6d38 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x97e0b67f ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x37cbc168 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x494f6387 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xb6f58587 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x89dc76ac ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xd4d0bf52 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x08ea440f tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x104799b0 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x18e9c13c tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x22767be9 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x42620ba4 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x50bdbc4e tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x59524892 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x85eb0e6a tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9ad778d2 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xcd758c42 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe4b9febd tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe7c63809 tifm_has_ms_pif +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xce9ff23d mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0641ae5f cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x265cd1c5 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x29ef2ae5 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7ff58d87 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x93fb0d58 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb4204112 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb9f2e78f cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4c08619d register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9a7d1960 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb749ca8e do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe76844b5 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x334eefed mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x619adb10 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xe0287132 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xb3174b19 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xcabd2b0e mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x8fc1db32 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc4e383fc denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1dc8df36 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x43977208 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x558667dd nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x882ef192 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0x91ef7fb2 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xeaa6eb47 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x05c6a172 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xa42b943a nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc93d8c3c nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x81c6b984 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x92d070b6 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x17f43f40 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x629255b3 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb7a58f2a onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd7aeba65 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x17cd7bd4 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x488b5f35 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5196cebb arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x551ee0bc arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x63a70524 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7c0e2dd3 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8796bc53 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8bd2f908 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9c05bb3c arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xeb09df1f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa06ac0ff com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa3c2b474 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa4c8ce44 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x014fe9b2 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0b3698fe ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1214ba47 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x13a715d9 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1dc46a76 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x80e7cc72 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x82241dcf ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8b60cd2b NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa0d23621 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa4fc2c2f ei_close +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x68682640 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x9eac6bf1 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0a09b83e cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0bb1e8dd t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0eaa36dd cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x174c162e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2456de36 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x357b9518 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x395651b8 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3c6b07e7 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4582d303 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x58c06f9f t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x66655f86 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7a057072 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x88c92027 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x99c7c7f5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa7f9e981 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xce9354eb t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x036c18ad cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c43a498 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1bdcbae5 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1f99711c cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x223cdb4f cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b880136 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3c99855d cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3d13e59c cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x43aa7231 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x47639751 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4a867dde cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d8992cc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x538c309a cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5cb8d565 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ce76f1d cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63e5e525 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6fd15e5f cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7529f219 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x782d724d cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x807f9a2e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa46621db cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa5139d85 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa89ab186 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab71b54e cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb677e360 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbacaf19a cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbdcd8c6e t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd5e42a9d cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdc008277 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe032918c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe2ec47ae cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe3f3a0b3 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6efb6d7 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb8d62ee cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x14f03a74 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x33e19ebe vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x936ac2f9 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa5969a2b vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa65efcf4 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xaa30c2ad vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x3ac7a5ae be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb7ba08e0 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03537f67 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0984c66e mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a025528 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b44949a mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10ec1e8c mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19f1cb5a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25bc971d mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ccb558c mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b10a84d mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bc6a4cf mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c24e9ff mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c637488 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x485fadd1 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59dc5335 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x614510a7 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69aae7ff mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7529ae96 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f1b976f mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87024ba9 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8de93876 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97b32a87 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9904a837 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e04e2b1 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4457ee2 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8df8008 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad05f589 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb28d1bc7 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb31af8a3 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb902b3ae mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbc4eb59 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8a68bb9 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd15d134 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce61f510 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd709cd72 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4f04258 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe76dd97a mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefcfcfe9 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf159782b mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0433b0ef mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06a297cf mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06abb03f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09943a5c mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d45e059 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0df82092 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x220ba156 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2475d815 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x283c9a5c mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d530c00 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e7064bf mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2eab282d mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33f14d21 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x402d3b5c mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4521ae1d mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x581bbd21 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73ada9e4 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7de2e8b1 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ffad502 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80187a9a mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x869fc550 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c6b8ff6 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x960f088c mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x970a6fef mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa46bebb4 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab79f912 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1960a49 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5ab2ce6 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe5292b0 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1adc995 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5046e5d mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8c2229f mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf603168 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd292b801 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe762f1ed mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb5cfd38 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf63d9d55 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcca1304 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43bf8eea mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5e13207c mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x62b5fee7 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x66784459 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6e65f5ce mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe7acf003 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf1e271c8 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9521ecca qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1df4152f hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x31721ea4 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6a6d7428 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9f7df488 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe014630e hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x01fa19d3 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x07986e44 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0e66ec71 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x26f8dc3e irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5436e0fa sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5f4150a5 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6f67c492 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x719c8bc9 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb8c6c564 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfed08f91 sirdev_get_instance +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x031b5f6b generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x4aa540b3 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x5b65e295 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x834be2be mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xa2e6d71b mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xa75edcd8 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xc1d25d7d mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xde5becfb mii_nway_restart +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa3f47d1c free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xca97cd9d alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x949cf646 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x11ac2381 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb892f477 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf5e428a1 pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0xdbaf4d19 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x03fc159e team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x0afca697 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x4236b76f team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x5604c314 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x5f3703f0 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x78f6c285 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xae6f1066 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xc675475c team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x1ee8d681 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x7c5c8e07 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb94c853b cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbfe66fac usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x14b8b7a1 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x18d8b06c unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7320fa1a hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7e387dd1 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x88a34799 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb79caff8 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcbad6dfd hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcd78e3cf detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdfeaa14b attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe513ff49 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe586c01e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x9e824bd4 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x55722378 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x8bab3f72 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe54a1e9f reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x116d33f5 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x15d3cbf1 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1685319a ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x20d19ba5 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2b814227 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4ace857e ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7dc82edf ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x946ac281 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95cc9f4d ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbcfe5d4c dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc6d790f7 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfe72f171 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x05204717 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x247d96b2 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2aa75aa5 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x453256b2 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4e96ad02 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x50ba2508 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5c9ec51d ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x65fc5352 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x76f95fa3 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x80a5dc1c ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9008ce78 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc3b68abe ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xca7f5bf0 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcf41f062 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd590ad25 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x09d75620 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0ecd817c ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x14b70d3c ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x19ee4a8f ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1a5165d0 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x43acca58 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5ed81ee6 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x74c623df ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8e085cf2 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbc6468ad ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd32db0b5 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00cd6a7c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06820551 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x17af1328 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2152c6ba ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x22688c00 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x25679515 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c6b7074 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x564ad703 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5f288f52 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6968eff1 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6f7caef9 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8b3b2112 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9b9a1071 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d9e0b88 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa2967611 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb973ec2f ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbffebf76 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc7a9527e ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd41b1aff ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdec7789d ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe559e37e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe67ec7d3 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf40487f5 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x050eb1dc ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x051ce3de ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ac92161 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f2dc4f1 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x100858e4 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12e0dc1c ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x168aeda9 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a71fa1b ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dd251d4 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x258f7fa8 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x279b8e27 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28570da2 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2859d85b ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c0d6391 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33ab4b9a ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33c60997 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37b31dd4 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37ba8324 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b2fe39b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d76e90c ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ff01fba ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44286931 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45a8f00a ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c5b0406 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d0b0b05 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f715e52 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5058b64a ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x522f6d78 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bc1226d ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c02d800 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ccfca57 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e8e5440 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x621d0d10 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x650779c5 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65c85134 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65de98de ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x667702f6 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68d450e4 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a3e32f2 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c232a67 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6db90a7c ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f31cc1a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fb1efa6 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7085e53e ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7169b38b ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x733c8bc6 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7397a44a ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7432c75c ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74ffc565 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77913214 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7878c4aa ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b6465f4 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f60c925 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86847a63 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c482451 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f0c60a5 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91325f87 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92b3ba17 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9412c7cf ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x943fec5d ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x949fef24 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97fa09fd ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b20abd6 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d206dbc ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa179521b ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3b80405 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa536b7aa ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5deac52 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6616ebd ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6bd5c01 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac7a85ac ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadebffbb ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafccbd89 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb118c31a ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2abfc02 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb50312df ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb627626b ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb810e31d ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb89064eb ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc7ecbaa ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf21ca87 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc16fc5fe ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4e4c19c ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc52b12b0 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5caa7b2 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc832b7a6 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcad9a99f ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc8d2bc2 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd104b8f2 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd65dde58 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7897a7e ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda66c831 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb2cd4cf ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdcdf86a7 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3961646 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3e05077 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe87a7864 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeaec6f68 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xebce3460 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef57eb3a ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf25c402b ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf97f262f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc1abf27 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfddcc883 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x435436b8 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x5db484a7 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xd8623e24 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3bdac363 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5f98ce46 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x639cf40d brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a454986 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9bdee139 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa095d74e brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa1d730c1 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xadcccae0 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc56618e6 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc56909e9 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe42f0fb3 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xeb2da940 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfda63f3e brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x08c6cb06 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1375300a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1c0c17c3 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x23d11bae hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3aaf455f hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x421eca8a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47d16cce hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4dc571ba hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55e10bbc hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6bbe169a hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x763b35f4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x788c504b hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ccd0c72 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ef053fe hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8322a305 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x840298c0 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x94ede86e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x98b395e4 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa20e93ba hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc14cd7fb hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3174a48 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcc20164c hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5f91ce3 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9ec5a83 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdca5d93c hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0ec82fe1 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x189a8120 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x195d3ef7 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1a51bf72 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2759b5fc libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x332c147b libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x37066abd libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3721ec19 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x396e007d libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x45c27297 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6e581eca libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74fff877 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x803a6dfd libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d41c0b2 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa9b46877 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb99bbeba free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc73419cf libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd10a4694 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd5407f10 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd630fbb4 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd71c5eb9 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x004beca6 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01424967 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x069da6af il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06e871ac il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0754eea5 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08cfe20d il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x092c2b11 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a7adf0d il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fa2b950 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x175f7a44 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17e0fafd il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x180dc1d4 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a3c9367 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ae3e7ed il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x202d56c2 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x222cb7bc il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2daf79a3 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30159183 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x304cebd9 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30a219fc il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3635d6e9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3bafaa70 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40494634 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43534687 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44000172 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44478a15 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47ea0e89 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x492db3d0 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4dade4cd il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5086b03a il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51ac488a il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55492599 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5734d45f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ef7bdfd il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x629b2b48 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62a5f3f4 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66302ff4 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67871a7f il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x688ac7ec il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a44429d il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d636232 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71aa8a24 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72a3cf6a il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x782ec5d3 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78e25ecc il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b0f3694 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d403b2f il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7da93697 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e245fa6 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7fa5d727 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8069f9bb il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b175f36 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8edf8352 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9262b449 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94217897 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96919d6f il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a1246ac il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c8f8728 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9eea0715 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6405e2e il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8bd1501 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8ef4cd2 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac77eb3a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad31a4cf il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad99b3dc il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaede7da3 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3b5d505 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6a4b85f il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb87ac63f il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8a58c24 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9379da7 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbad29a9f il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd803a57 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe6385ea il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe9564c7 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf61233c il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3f089ff il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc48d04ef il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9ae436f il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcdca0f0a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfca78dc il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcff4aee7 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0ac2e44 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2833c8b il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2a9e9af il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2ddfc02 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd40ac323 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5858705 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5db6085 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf5d44db il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2576837 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe271efd6 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf04158f6 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf338a1ed il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf43ffa29 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc8b1dad il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe108a50 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff714384 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08c6664d __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4379786d __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x95a8ab3c __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xa2b6ec39 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb69add1f __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xcd60e86e __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xd4f50457 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x07e06494 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x18f7b4c1 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26abe43b orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4a90679c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4fab750a alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7365e5d9 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7778fd36 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa47c8b44 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbed061a9 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xda3f83c3 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe1c365b4 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe27386da orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe9876d3a orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xefc9a353 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf380d22b orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf5d792d6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x67068195 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x01639352 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x019a83e3 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x07fc260f rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0a1275fa rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x15260d21 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1c28d4c7 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x25b29b8f rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x351cdeb7 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3f65c51d rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x401b453e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4292d419 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4396803e rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x440d6253 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4509194e rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5759728b rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x58401760 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5ed9632f rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61273616 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x69474545 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x69f7d7f7 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x714aaab1 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x75d15428 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7db90c6b rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x85f1327e rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8925d278 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8949545f _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x927bdd39 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9a51b38c rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9d21f661 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb49cf414 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb54d00d8 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb9290e43 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc65042e9 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcb36cfd4 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd56ae203 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdbd41d08 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe13ba68c rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe2c58ef7 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe3024bb8 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe5c3e3be rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfca8c1b8 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x6f20bfa0 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x80130bb6 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x9319a011 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xaa506c5d rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x14e7cc8e rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x490fa7bc rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xf56ea3b7 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xfae83f9d rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x08f97eda rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d9a15f3 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x118cdac0 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x17b91f63 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1960d471 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1ecbbd9e rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x29ebc90c rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x315f0071 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x331848cf rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x44005a0e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x48339a2d rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62327992 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x70942c98 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74a15bec rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8a801043 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8cc624b1 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8e2b5c05 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa1919204 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaccae4d4 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xacd3cc39 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2eae809 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb44f759d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb64598eb rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb9b562df rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd23d47de rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdd423d25 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdebbf7f9 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe531f510 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf6b879b3 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfd5558c4 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6ab6e12d wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7aecd160 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x912257fb wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9cfb3236 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x4abb53ed fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x84204fd3 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xac8b72bb fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0x4ec6c96f microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9ff3c411 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0f4b821f nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x45f818b0 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x9afa2298 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x57fab686 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xbcb16aaa pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x8a0cc621 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xcb326e3e s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xdf85ab33 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x088c44e8 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1c1000f4 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x54af7908 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x64ef2084 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x67b78e65 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x83d9cce1 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x99b0f59c st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xae8150c4 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbe3cd6b4 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd31204d9 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf4f0845e ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0b3085f5 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0c18519a st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x12daccea st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bd93f38 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bf2960c st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x21883380 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x31ef30a2 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x46fb3e34 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4be1d392 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4c521ff9 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x74070462 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaafebf2f st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaba04168 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xadfb68e3 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaf4aa594 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdc6bbf36 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf7b27aeb st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfc4a4a84 st21nfca_se_deinit +EXPORT_SYMBOL drivers/ntb/ntb 0x045de9c0 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x514f1368 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x51776aae ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x8e3e7cef ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x996c5c28 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xac05ccd0 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xdda9c747 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xe21c4835 ntb_register_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x577be32f nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xa1357c8f nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x58a669da devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x07c822e7 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x114693f6 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x193f1a52 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x19e2e908 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x1a75b761 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x1bcb691f parport_release +EXPORT_SYMBOL drivers/parport/parport 0x3942c1f0 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3d8f0acb parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x4b4bb877 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5648b7ab parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x674cc00e parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x695fcc90 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x6c3e19d0 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x78ccb84e parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x78d900dd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x88466575 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x90ba12d1 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x91dd0062 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x97e14a43 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x9a5dd36e parport_write +EXPORT_SYMBOL drivers/parport/parport 0xa812d192 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb39ff0d4 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb9f9bf6e parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xbd21ccdf parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xbeb5bf98 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xd1e06491 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd4c64d37 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xd72d1487 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xe6119e3c parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe7a35c8d parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xed91f12a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf3433092 parport_del_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x48b79339 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x56ec5197 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x005dec1f pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x03e1893b pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0ff28848 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x115bb348 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1ad4f13d pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1ae09d19 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2661984f pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x459a529c pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4bd561df pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x63e30221 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6dd66a1f pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7ea544e1 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb195b90b pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb85a9bec pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc4bed9a8 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc7a78676 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd613baa1 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe02b5ff0 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf5bace6e pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2fa81241 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3bb8c2de pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4afdf2d4 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6f3fd244 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x711d9a4a pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7991162b pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7bec3688 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9a1c6f24 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc8d0a931 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcc8e218a pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd16730cd pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x6155a516 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xf6f4b336 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x9ea43db3 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xc3dbc945 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xdabf02c9 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xf36ea8a3 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x0465337a ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x7756d0d1 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x88423a26 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xfcda8d1c ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xff9d95e4 ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1c756667 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x241ffa13 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2c680d4f rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x44f9e188 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x79fd4f84 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9a132206 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa54c0333 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xaad5d899 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb982e1f2 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf538a9fa rproc_add +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xab9ca54f ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1a1ce717 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x976f138d scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb9a65e1f scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xf6ac9b2e scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1e3b8500 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4bac2320 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x56167dff fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ddc9567 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6aa4f7e4 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8d6e5c3f fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x955277dd fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa961993f fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc8abeb12 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcac937cb fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xce923532 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe86d0181 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x081920e3 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c5641b0 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1cc5936b fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2288430d fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x32475779 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x359c4a3b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38e964d7 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3dc70f8b fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x407cb931 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45d2c6f0 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46c8121f fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fa8e051 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5362b335 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55a04abe fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56e54869 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x595fac65 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f2bc43f fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x631394f1 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bddeee2 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6fbb0ead fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71e8609f fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74ee058d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80069551 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8521792e fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87d40f79 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a9b5c86 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9205f136 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98580869 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa280e01d fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6867a94 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae227823 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb28c3fb6 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb66ebfd6 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7cb3ee5 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba458185 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc13599fa fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0b0e049 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7d76010 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe229d6fc fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe26a70cc fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe70ac1d6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf60115f6 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfbbe95e5 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3ef131ce sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x96bacb1a sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa4091466 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xab3c83a2 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x8855823d mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00928174 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0168b458 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0e903331 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ff0d863 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1537a57e osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15697f4b osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1ac59c82 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x29b4ebea osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x310b4974 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x38e35511 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3fe85e06 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51faf568 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x606f58da osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61817efe osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b081769 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b2fcff2 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6dcd5cb4 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8a21e15b osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8e2107fc osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8e7bb087 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x90c13a88 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x92a20bbb osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x95f288a5 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9bea2c2f osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa99ffde8 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad8993bd osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb0775e2f osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb38ed8de osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb62ff131 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9741be4 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc0ced278 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2ac9ddf osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6f2df0d osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf303c195 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6047fe7 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf91c4511 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/osd 0x07a2ccbb osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3865da80 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7848ae68 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x93c9656b osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xad901144 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfe53ddc7 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0027dca0 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x250140f8 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x39295e5b qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x55a87a44 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5aa39fcc qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x69620af6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6cdf9b13 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e048532 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x998cab00 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xad1c2efa qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc99b7b07 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdb6326a9 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0677a6b5 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x06a25ddd qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7209eb01 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7b1cfd87 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9531d4b1 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfa9935dc qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/raid_class 0x05fb46c1 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x16a36bbe raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x37149f21 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0ae044fd fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ddafc82 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3fe517cc fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x446a44f4 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4cd72041 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5b76bfab fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5fa25003 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99a1e925 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb1515474 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc838ab61 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcfdb2466 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd6d180a0 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfdfe52ee scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x012e7ba9 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x01b74833 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04d39f61 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2c85c0c4 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x31d2c8b3 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3651c959 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x479428f4 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4824511e sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x493082fc sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d343078 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f6d7b14 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f4ffe16 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5fd83aa9 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x641a4bf1 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6dace5bd scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x77e02b63 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7938d5b4 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79aa19b1 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7a63fad1 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x938f555d sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x950100b9 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa040b96e sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb24535b4 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb57eb4e6 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb62f2ab5 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb8e293d sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd94b2100 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd779483 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3157cfe3 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x358fc57e spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9abad006 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xcde726e0 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xeb9ae347 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x32a5ecd4 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xac2ab1c7 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb72bbd2a srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xfb127f3c srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x07ba38de ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x38e03466 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8d43627b ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbe1ff4a5 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xcb6bdce4 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xdefcfe13 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe5739bd2 ufshcd_system_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x228938ab ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x24b44939 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x34732da5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x3c712bb3 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x3eec2c42 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x4362bcb2 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4d8a1d0f ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x6018b739 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x67486ec3 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x6f89f626 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x73678d3a ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x73d76d14 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x7ce3b3b8 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x99c55264 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xab68b710 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xca9b6f9d ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xcd4b640e ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe4db5116 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xe5076798 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xfccf6d4b ssb_pcihost_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0e7120e1 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x17e31d2a fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x25bee8d1 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x26757cd4 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2a9369db fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x431e87e6 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x49eb0029 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4c4bbf0e fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4d4a748e fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6a7962e7 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6d8731e1 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8763623f fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x91762b54 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x968a242e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x999a1e1e fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xad9ad3d4 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb196108c fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb63da7e2 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbc321ab0 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc3f24428 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc7582e9d fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcb24a83f fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdaecc1cc fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfed81724 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x0e8b131a fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xd6db9eac fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x3aaf3176 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x0a34a584 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x0b95313e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x0fec5bb6 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9fdf9553 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x7ab7e47d ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xce2d1ed1 ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x7af43f2a cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x47ebc88f most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x003c2513 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0beeb9ce rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x17e0d7e2 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21295735 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21c3b2e1 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2879e026 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c6d42ae rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33ade8d2 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d5ed57e notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d72e061 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4449deb8 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4eaa31c5 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50088cc3 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52737af2 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x537c864c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x567952f9 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57e793de rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x58897c0d Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e34d3b0 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6d95f4f0 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70fab804 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x71301ac9 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a0706b4 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81134290 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x860bdd17 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d300b57 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f3544b6 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x929c5672 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92f0a12b rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ce32c7e rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9da6ece0 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9df7da3b rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa51a526e rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4e71830 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb69c3d02 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb70c2c24 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7109580 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbbf1348b rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca8b7992 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd64668f rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce675b81 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2ba4bca rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd3081775 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4351df9 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd77586e2 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd856896a rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdaa004be rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdbe762c8 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf20d952 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xece1e1c9 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x015724d7 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03113e6d Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x046d76b2 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x087e005d Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a270d14 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10d1baa1 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x120865e5 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19864ebe ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e3717ff ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f120558 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2815774b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x292012c9 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e4e6b9a ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30667a4b ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31bee5e6 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37063c17 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x40b84a8e ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41300bce ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44c139d2 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44e412c8 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a2d23f1 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4bc9db7e ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53d90ec4 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d466811 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6623784e ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67704c58 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e5fb3c3 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70257198 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73993b17 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76e243aa ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b855315 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x84b74810 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c210408 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8cf57e67 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99194b50 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a1416d7 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa39ac66a ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfc33ba1 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5238507 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc655698b ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc8b79261 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd02ce60f ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd38b4bde ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4428d2c ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd864e8d3 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8df0701 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9259d93 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf7b94d4 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfe2afa1 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe200287c HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf881e45b ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf94e0776 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfdc6c085 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x023331f3 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0707fc1f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x19158f14 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ea76ba1 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f80650c iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ac1d09f iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c7bdcaf iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d753462 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2fc1ce30 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2fd3776e iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3133f415 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x391c2bf1 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3cb37a8f iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3d39034b iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4551395a iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x68108f34 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x71dd99a6 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80353b85 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c713e53 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8feceba6 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa92d3ed0 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb69800d5 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcbc5a453 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd97633b iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd0495aeb iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2e9f412 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd8c6b3af iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd944f786 iscsit_build_reject +EXPORT_SYMBOL drivers/target/target_core_mod 0x02a1b242 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03c0b417 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d388906 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e122991 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e547cb9 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e6801e5 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x100846cf target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x17dac820 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x197315f1 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2170cfa7 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x246da7c2 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x259c9394 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x260bc948 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x29a8626e target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x2be7e53e sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x36f34391 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b893d16 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c6e4d3c target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x41678a5b target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x46063ed3 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x48988997 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x54ef2541 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5904819f target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x62492050 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x64b91072 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x67a6c9de spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x6824e648 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x75a84964 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a0ea69c core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e2760e7 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ebec00e transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f41ee97 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x81087c80 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x826e7fc5 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x82989c62 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x855aea39 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bbb8bec spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f3ad0f9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x90383c1c target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x91b1a0b2 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x935e17bc transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x93b1c86e core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x98adc906 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ab802ea core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xa11f17f6 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xa57e3c4e target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6a0e621 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6c53243 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xabad83bc transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xadebe677 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xafa1595f core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb014fcf7 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2f090b6 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb484f39e core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5893b63 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc42f6fe passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xbdcf38d3 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd05d2333 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2769c3f target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1ddcbd9 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xe744824b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xe96ba66e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb3a4ba2 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xec2590f6 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x16598ec3 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x4b733454 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd5cedd9c sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0167ac18 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x01bf4e54 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x02640996 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x078bd8fe usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x126479b9 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x37ddc764 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x473711dd usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x693ff0ed usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x77e833c0 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7c2076f7 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc227768c usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe021fe58 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x3917b29b usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x6954fffe usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x27c9a4aa lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x3044f7a8 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x638fc0ac devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa5ec4702 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0ac7853d svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6aa2f472 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x71a80b5e svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8c2e6dfa svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9ee7141f svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe6c3e7a3 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfee2a1cb svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x355b114e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x0298499c g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7f4e6f47 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xcb3e66a3 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x180a4ac8 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb1522130 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb5ea8eed DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xfd007f94 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x864bf0f2 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xdb058a07 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9b3a7041 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcb0013d0 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe2094d22 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe814dd6b matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x16c851d7 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xe09851b3 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x650cb686 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8588cbad matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x96124e51 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb03bb815 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb2a57202 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x66e709fa mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x45fd1882 fsl_hv_failover_unregister +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x77c9b191 fsl_hv_failover_register +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x51b40a47 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xaa2816f5 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xfb36dbb8 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xfd4fb150 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x2ef00380 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x49c75431 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4ad3b7fd w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x57f8c6cb w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x0ae18c89 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x15b36257 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xb88c0be3 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xd93c0f1b w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x2315f1a7 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0x5318dbbb configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x7097b185 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x85760eb5 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x94fcd86c configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x956f8279 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xad8431c3 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xbb8edb9a config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xc2533c69 configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xc55fdec5 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xc82687cb configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xcbf7b80b configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xda64afb3 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xea5a0111 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xf74e381f configfs_depend_item +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2def0630 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x471b6f22 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x597c388d extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x6c259ba3 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x8782abe1 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9745ec59 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbbd90888 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc32c2aea ore_write +EXPORT_SYMBOL fs/exofs/libore 0xcff4265a ore_read +EXPORT_SYMBOL fs/exofs/libore 0xd9c9b3bd ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x073e6d6d __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x0d3e1bd9 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x0d8df825 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x0d93f531 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x195e7233 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2974b842 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x371079c8 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x383af0ec fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x3c8a78c0 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x3cb81ce6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x45300de9 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x564c7c00 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x5981967a __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6657cefe __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x69ce62b8 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x75f6510b __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x84fb9ffe __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8a8bbd68 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x8ad278b7 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x8b071c8f fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9169c527 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x928fc603 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9c792eaa fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xa0067f5c fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xa36b676b fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xa66815ca __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xaaf674e4 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xaee1dee4 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xbedf87fe __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xc6768592 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xcca75db1 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xd4db48e3 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xdb0400b3 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xdebea959 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe19db204 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe46b60c6 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xe8ee78d7 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xed950e9d fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xefae47f2 fscache_object_lookup_negative +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x01a2c8eb qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x360cc394 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x457e5a3c qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x7f44fa39 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf158a0dc qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x41bb6acd lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x789c5b32 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x0de9604b lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0x49e0ccba lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x5a7792a7 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x4116e182 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xd3a16770 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x021f8256 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x2ee9facd make_8023_client +EXPORT_SYMBOL net/802/psnap 0x1eee37b0 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc6abe292 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00353f4e p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0067348c p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x01ed3387 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x092a64ab p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x0ff9d5a6 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x188c0ffb p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x18ab6916 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x32d91ae7 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x353ee561 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3dbffd82 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x3dc26c12 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3ef9d4e5 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3fae8a10 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x4316a317 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x44039f41 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x59aa5b89 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6045be9c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x60e3271f p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6a29d602 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x6df7af56 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6f42777c p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x725d6490 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x72a9e9e7 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x80124157 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x95cb9b95 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x9a00ef07 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xb3eee900 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xbc4903d8 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc3357f00 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc3c58900 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc6774437 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xce7b6a33 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd0de67c8 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xd9227e1e p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xdbafe92c p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xde19e04d p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe366d56d p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe9bd39f5 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfb99172e v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x35f0ea92 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x5eb9684b aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xa6f5b795 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xfb761c56 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x26f784cc atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x44f2ad9e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x45f0df2a atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x5494650a atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x63d7b5c4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x73db8843 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x81d724f6 atm_charge +EXPORT_SYMBOL net/atm/atm 0x97aa5cbb atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb586fa9f vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xdce0dcb9 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xe5763c7a register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe65aa0d7 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5baf5b8 atm_dev_lookup +EXPORT_SYMBOL net/ax25/ax25 0x00aee6bc ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x0685870f ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4c0199f6 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x99df6e05 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc511f812 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd4fad1f8 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xe04ff674 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xe44b1ed0 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13d74d0f bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15073987 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2225ddc0 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x259047bd bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d838c17 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30c664d3 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34f19105 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x379b5fbb hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38074a12 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a7586d9 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3cd13f4c l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f9add8e hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x547fa741 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x634c6e5f bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6d2755dc bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c1b2600 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7de6e526 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81110e92 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8575d13f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8cd62586 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x92715cc2 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9275a619 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9fb606a4 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0d0c2f0 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa319a27a l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3f63ad6 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae59d81e hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb21a12be hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb536cb2c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf6ad982 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc705995c hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc887a475 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc9467fb l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcde9ee3e hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdd7df399 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2185c7a hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5640e4b hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe64f4da8 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf2969fd5 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfcb2579b l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfe59704e hci_conn_security +EXPORT_SYMBOL net/bridge/bridge 0x8cda681c br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2a9504c6 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5cdeb733 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xdb53ddda ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2532d6e9 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x2cd6adf7 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x31d7696c caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x35e0c8fd cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa25ba1b5 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x0096e784 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x283b3c45 can_proto_register +EXPORT_SYMBOL net/can/can 0x49c40cc1 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x557b8758 can_rx_register +EXPORT_SYMBOL net/can/can 0xd5d15a0a can_ioctl +EXPORT_SYMBOL net/can/can 0xfcf6c45d can_send +EXPORT_SYMBOL net/ceph/libceph 0x01f381db ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x1102fe90 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x15abe4c7 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1c7d90e5 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x1e7510f7 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x1efa2aea ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x22514140 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x2257409c ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x26cce79a ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x2af037ec ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x3086f723 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x33598b95 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x34445607 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x3571c78e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b011d90 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x3d49ea50 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x3f1185c5 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x3f5b0209 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x414ceca0 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x417b34c8 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x4669a435 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4847af4a ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x4a95af92 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x4c3557cb ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x4e3a755f ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x4e5107dd ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x50f61d87 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x51439028 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x52cf9dd2 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5d3c690a ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x68197d8a ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x72670d00 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x73021d17 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x74de3c9d ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x76d94249 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7d1502d1 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x7d268639 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x7ed448b0 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x7ed616cc osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x8546a26f ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x86f6cb8d ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x87d20ed0 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x911792d2 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9bcf3070 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa04cafe6 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa2a701c4 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xa36dde3c ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xa66cecfb osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xacf118fa osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb3213fd4 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb39a993d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb786a48d ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb7b3b3ad osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb8b199b3 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbe3a9ae5 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xbfdbe332 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xc0f18463 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc92cf8c9 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xc9c84ea5 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb2eb8a8 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcc597d82 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xd17c91e1 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd57688ad ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xd7a9ef86 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8179c70 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd8bb25f4 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd98f6906 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xdb0761a8 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe3437553 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe74dd3ef ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xe8a9aaa1 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xeb31212f ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xedb7f164 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xedd126c0 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf2a72600 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xf4d1ee82 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xf69d1514 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xf7b86c9a ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf8f73f42 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xfd9520ba ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xff355c35 ceph_copy_from_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x03d5f6c3 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x10eb4da9 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1c18dbd8 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2837463c wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3c85e9c4 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x771f7946 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbfc019d0 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe085f11f wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x50d822f7 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfaf903fb gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0e85e677 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5c608f0c ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x80c40ddc ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa882174d ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xaa8397e5 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe9ab484d ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x80ffd7e0 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc9fcc1fc arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd7c1bc8e arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x04258a05 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x49b24bb2 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x699e610c ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x58aa95cb xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x8617b409 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x03823d0e udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x13478ab0 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x54eee3c1 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd31dc80a ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf00bf50c ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x8168a97b ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb37b34a3 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc481d2a6 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x6daeea1f xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x8a781bdf xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc4943405 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe11ab864 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1e024634 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x23e35d38 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3d7f480c ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4cc8abb4 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5de1f2ee ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc9d26238 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcad56654 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd96e5cee ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x016e7753 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x02478b33 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x127be11a irlap_close +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2a5a90bb alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36abadee irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x393bd7e2 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x411fa1dc irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x44ae8543 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4b6ad0b8 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x53cab7d3 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5d3e7a15 iriap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6257dfdc async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x6836ee80 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6dbc987e irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x7581dd38 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x78aa00fa irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x805863a2 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8eded874 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x9457dcbe irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa3381d35 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xade723f3 iriap_open +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd180bdca irlap_open +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe6831e25 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf124d788 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf7b172d7 irttp_data_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1af1f401 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x00e3014e lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x0823e09a lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x1ee712ef lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x7083eccf lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x79b95021 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xa306571e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xa4988b9d lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xfde9df6b lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x751ebc37 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x7c8a3caf llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x91773963 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x93b5ee13 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xc8b59c9a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xd1fffacf llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xe0551d91 llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x031c1505 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x035113e9 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd713c8 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x0c5f917e ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1034035e ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x187741af ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x1c820094 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x1cbb795e ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x20b24a70 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x212d48da ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x21d76468 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x225ca4a9 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x2501eea3 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x2a1b8fd7 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x2a6ebd7d ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x2affb251 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x30407536 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x33e3a6f9 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x35ec32f6 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x405e45aa ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x41da0a74 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4602b48b ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4716a9ae ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x4a5e1899 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4da35d61 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x4f7d29a5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4f81e733 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5187fce1 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x536fc336 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5d4bb777 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x5daec070 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5e571dda ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x5ec9b67d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6457e8cc ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x64ee64d1 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x65c2677e ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x730b0140 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x75c8ab91 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x78d653c5 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x7ac4f552 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x7aec24cb ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x818ed3f6 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x84c75c51 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x898b51d7 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x8a7725d4 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8c8a3723 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x932a5f8b ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x962c05cd ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x971b0a93 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9fe3e2a4 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa0f41398 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa1534999 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xa3aaf1de ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa76b7c30 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xaad343d1 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xafc3905f ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xbd81ef37 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xbee96723 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xc0947d4e __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc3e47896 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xc5c06e5d ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xd303f666 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd8fa97be ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xd9a04dc2 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xda5e9066 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xdabcedbb ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xdd178722 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdfd98399 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0xe0eac992 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe380b8e7 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe731a7c2 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xedb3b30d ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xeede438e ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf28e7c9d ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf4706af4 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xf531feae ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf7c2fe44 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xff051cf2 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac802154/mac802154 0x2f287b3d ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x672a08ba ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x6a627437 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x7c89a9c6 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x8cc48934 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x932d7870 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xb19c67b1 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xcb7501bc ieee802154_free_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x13955e01 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1d2487aa unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2c203713 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3b8f34b7 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x54cfd782 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x578dea56 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x60957aee ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x78288075 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x88e15f45 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa59eee6e register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdfac94ee ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xecbd42ea ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf41cd0f8 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfa2c1640 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x01f58464 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x67ef9b97 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbecdd12a __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3e5ab116 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x5d6fdc43 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x61433494 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x7f28d3ad nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xcb62e01b nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd9b89f63 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x1ed311bd xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3481abbd xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x77284817 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa5283dc4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xaf66c5c3 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc8131e64 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe1b09ce5 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xedd03c45 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xee2a4457 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf48486d7 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x005b42fe nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x11d63231 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x27c06eaa nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4c68cc10 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x4ceb6ac7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5a410ed9 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x5b71c635 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5ef42f29 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x8dca21c6 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x9a54b32b nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x9fc0adfb nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xafa57b83 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xafdf264c nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc55edc00 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xc5845c7b nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xd875be56 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xe05a957e nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe6c1fd85 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xec7b1c04 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf6d8d2d2 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xfd5016e4 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x001a3e44 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x1388f7e4 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x1a0440c1 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x3e306f41 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x3e73f893 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3eecf8f7 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x3f55aea3 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x472de5b5 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x4a6837c7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x56856547 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x574169ae nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x69140899 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x69870bf9 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x6f49f819 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x769604e9 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x76ef548b nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x803bce0a nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x8313b1ce nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x8449d487 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xacb0f7f8 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xb715105d nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc2d4e035 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xd0ab5de5 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe1b36c79 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe6b17a83 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xec0528e8 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xeffc3e5e nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xf79d870d nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x019f1658 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x1524278f nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x1a07f9c0 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x1dc4d0a6 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x1e25818d nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x1e812edb nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x27bc00c4 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x38ea8644 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x47c784cf nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x4d67c240 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x50eea2b3 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x5ade444c nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x62d901ea nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x6496bbb0 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x65991b36 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x715cd8da nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x819304f3 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x97b85b21 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x98d10683 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9f41e132 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xaa3940ab nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xbdc08a5f nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xcefa3dea nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xe04aafac __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x4381af70 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x4f6050c4 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x5d972a55 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xbd1689a1 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x08cfeb8d phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x2229a211 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x363b1cce phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x4020c750 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xa8d8cbeb pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xd7921c2b pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xdfe1dee3 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe6f6ea64 pn_skb_send +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0336b4fe rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x16e80fa0 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1aa1dfdf rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x29d3ce4d rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4600ffac rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x738f9603 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x756dd510 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f8ee8b0 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa1552356 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa57f2901 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc194db68 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xccef7bfd rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdf6cf0a3 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe1f6a153 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xebd996d0 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/sctp/sctp 0x966a3e8c sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x5b1c2457 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x614870c8 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xcc393d6f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x0341539d xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb15fe9da svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xbbe787cc xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x08500667 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x790e8d6a wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x05b87455 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x0705e5f8 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x09c0f385 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0bf9e789 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0c855ec6 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x0e6dd9f6 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x121543fb ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x167807ac regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x16bdc770 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce08bd1 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x207a874d cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x22c17bd0 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x27bdb5ff cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x2c962246 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2e683302 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2fdafeba wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x358b1713 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x3a01ac0c cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x3b5e929a __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3cb62844 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d8c2bba cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x40a9615e cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x42cec8c6 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x498f7d5a ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4dc5d316 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x4feba2be cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52cebff1 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a1b14cf cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5ae9747d cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x5e06e433 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x6036a4f0 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x60c41a92 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x61366651 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x64fa886c cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x687d0a97 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6af58e66 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6dfcddd8 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x6f3937d2 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x6f87b89e ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x7009a690 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x716f7969 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x73fa27d6 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f9331fc cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7f98a25c cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x83bab23a cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x874fb3e4 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x87da2202 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8b03a9ca cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8e89ecce cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x90c708b1 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x97869758 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9af4e6fd cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa561ba31 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa7e179dd regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xa9365103 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xab96e7af __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xaca5d2e2 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xaee6b4ee wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xaf3774d1 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xbf5d17c4 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc04d815c cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xc45e0164 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xc4a263af cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc74a4f55 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xc823ab79 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xca6c0291 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xd16f0d4b cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd26df67e cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xd3547bb3 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd421f421 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xd51fce6e cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xd72c9e64 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc9eece3 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xdfebd0f8 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe23d59b6 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xe30664c1 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe427b34c cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xe70be9b5 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xfadca5d9 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xfbf4d2a1 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff48ab67 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/lib80211 0x34db73e2 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x3b231d05 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x59928299 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x63b6235a lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xb3532c6a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc8992253 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xb8bd6610 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5aafbfbc snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2fbc383b snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3d3ae746 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa9e1a801 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xab712bcf snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xebe1772c snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x5eefaf06 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x050d281d snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x08537c8b snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x10f0e8c9 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x11a6d84b snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x256c139e snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2fa0ba8f snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x341c5c0d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x34fde0ce snd_card_register +EXPORT_SYMBOL sound/core/snd 0x36c7c4ac snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3784372a snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3ba73019 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x40de0cf7 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x42e6f583 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b3500c0 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x4ffedbf6 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x554b2001 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x57bf9fa8 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x5e5d97f6 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x663e7057 snd_cards +EXPORT_SYMBOL sound/core/snd 0x66a50ff0 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x66e076aa _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x6938ed93 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x6f35dcce snd_device_free +EXPORT_SYMBOL sound/core/snd 0x6fa779d9 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x790f29ba snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84b1189a snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8ec97a4a snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x927880a5 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x95e88153 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x9771a944 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9ea888e7 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x9edac584 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xa0fc6b26 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa475feae snd_info_register +EXPORT_SYMBOL sound/core/snd 0xa60bb8ea snd_card_new +EXPORT_SYMBOL sound/core/snd 0xaa29e34e snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xae0f3bc3 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb03b20f2 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb85504d5 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xc743afca snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xcdcd8c3b snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd0df7751 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xd418a2a0 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xdbde50e6 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xe1313935 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xec55f00a snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd-hwdep 0xed8268ef snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0082c1d3 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x030c13d6 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x05e52950 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0ed08f4e snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1265268a snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x13e2c707 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x13f5b06c snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x211dca02 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x2752cab6 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x29edefe6 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x2cfb0e1c snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x31474e87 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38882467 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b34cdbc snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3c08b39c snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x3d7a7787 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x3e426236 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x446fbf3f snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x5130b565 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x55aaa686 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60ca10ad snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x64ac2889 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x68b66a57 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ae963fa snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6f5718aa snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x72f4a526 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x758c1547 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x77509b90 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x82472dbb snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x8f9c3306 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9d2ca71d snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbd6371a8 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xbf8ca521 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc2d17673 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xc87655da snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xc8a96749 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xc93b31d4 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xca6b9ec3 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd8944aab snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xe0af1919 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe58cb0ec snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xe5cf6028 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xea63b468 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xf38bcdcc snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xf5cea2b4 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xf89e9ebb snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xfca7fb40 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0557db00 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1eb4af24 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2069149a snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2c2c9dfa snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x506b4840 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x532f024a snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5da607be snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x60827134 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c936137 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7e5ebb13 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8dcda702 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ea04cd2 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94a20139 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaf16f69a snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb5118a7d snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc9365b8d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdb473d47 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-timer 0x0ef3fd78 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x3ea4cb2a snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x41ac8a87 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x4fdb0767 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x5d695721 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x727f903c snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x7498be54 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x86f42ef1 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xa8c5188a snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xba6b1858 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xce203ef8 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xdd0c40c2 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xfebc3038 snd_timer_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x2f26e05b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1278ad39 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3279bb25 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x46d15667 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6a546c5e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7bb597cf snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x85e8a9c4 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x960b2554 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcbe8216e snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xecc74d53 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1e42068f snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2771a5fe snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2cc142c1 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x32d388bd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4661671e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6d397595 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x840fe756 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x976b6e2d snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa524f7b5 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x036f1a36 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x148944a0 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x164fa7c8 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x171af5b9 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x19a30601 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2c08ca3e cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x38d48526 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ead97de amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x45836683 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49562c8f avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x565db251 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5dbe6cae amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f1a7ecb amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a297db9 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7272c6cf fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x73069a3f fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x793859bb iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a174dea cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x82c20390 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b8cbfd7 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9e52be43 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab7496ed fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb014d8f0 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbd066f69 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc56098c9 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc7afee65 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc94468b6 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd98bcab8 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdd263c34 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeb3a5dd6 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0bd0fec cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf961e9c3 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x2b55f02b snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x5781d3a3 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2379dbe5 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x49872512 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7258198c snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8aed9588 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa40a51d9 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbaf1c867 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcfb75d0e snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdf860cec snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x47c7203a snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x72fc9010 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8f3a50f3 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9745f8a7 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb993ef16 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfbf5e34d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x39d1a389 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6fb16a10 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x762e2027 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe6812688 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x8b109afe snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xdbb8a706 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x00e95997 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1b950ce6 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5c4d2b47 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x95f47de8 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa4477f40 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc7ab91be snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x38e77b07 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x88e86f9a snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa4b9a10f snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb36cf83b snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd39ca52e snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xda9a5463 snd_i2c_probeaddr +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x13d99ded snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3219a77e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x67202e38 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6fd230b8 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x97f08e31 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x994bf396 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbfa0cfc7 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd0604d6a snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd7950610 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf5e8eff2 snd_sbmixer_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0367db9b snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x047527ee snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2b35d7b6 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3c897f78 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f390701 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x580d8bef snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5a235f58 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c803923 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e8bfdd3 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x78c11045 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x922b336f snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x92fb348c snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaecf6c54 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb3a229d8 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbeb062b2 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xefd37d13 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8fb92bd snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x28c8fa61 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4f763a2a snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5ee97ebd snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x79a9cdaf snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8623c950 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa1631112 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc0b703c6 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe65e355e snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xee58348b snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x086e4786 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x657f857a snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x970a725f snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x02178859 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x19d6ba43 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1c20d081 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3d23a39c oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5f1229dc oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7fb994e9 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84097cde oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8b2561c1 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8d2368da oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x98715301 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa2f8c9d8 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xadb33022 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb1be434d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbdf67567 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc0a340e8 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc34a91fb oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xda09801e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdc93ca47 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe1959041 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xee4a4ed7 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf77f23d6 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1f23bd21 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5723f325 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8dfd2ff9 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xcefbc725 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xedf8301f snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x1e55423b tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x901825c1 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xd353d092 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x186f7016 sound_class +EXPORT_SYMBOL sound/soundcore 0x1c752e16 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x203fcaf2 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9f8989e5 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xec65b128 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xf083f856 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2c1ffd67 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2ca04d9f snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x834711ab snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x88a85911 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8b63fc9d snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb3bd1d88 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x19a6d554 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x19aeda75 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1f5dd8ed __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x73bce4b1 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x78866ddb snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbe844bb5 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd0a4b77b snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xdb192f4a snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x95b76176 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000a4aea tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x001a36e5 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x001f1f1f vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x00386778 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x00526ffa posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x00689cef lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x0068fed6 dma_find_channel +EXPORT_SYMBOL vmlinux 0x006d8f45 free_netdev +EXPORT_SYMBOL vmlinux 0x007b7984 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x00926405 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x009f5447 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x00abfe6b agp_put_bridge +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00d7f10c release_firmware +EXPORT_SYMBOL vmlinux 0x00f71b4d disk_stack_limits +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0120f8c2 put_io_context +EXPORT_SYMBOL vmlinux 0x012a66da udp_ioctl +EXPORT_SYMBOL vmlinux 0x0165f462 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x018045d0 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x018f0f3d param_get_invbool +EXPORT_SYMBOL vmlinux 0x019c829d mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x01fbf766 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x0208d357 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x020da45e n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x023ff849 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x025ea67d framebuffer_release +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026b6a34 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b04191 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x02b404a6 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x02bd9833 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f6c519 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x0319af77 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03692ce0 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x03779b69 md_error +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03aaee17 filemap_flush +EXPORT_SYMBOL vmlinux 0x03abc0c8 start_tty +EXPORT_SYMBOL vmlinux 0x03b18103 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x03b33318 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x03bdee4f scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x03e7569f check_disk_size_change +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04018cae pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04253193 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x042f6dd3 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0491171c skb_clone +EXPORT_SYMBOL vmlinux 0x049b5f01 vfs_write +EXPORT_SYMBOL vmlinux 0x049e9507 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x04a2f08d security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x04be7395 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x04cade8d __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x04cd484b agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x04d0a3e1 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x04f5035d phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x050220dc xfrm_state_update +EXPORT_SYMBOL vmlinux 0x051530b6 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x05179d09 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05232192 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052d6119 path_put +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05478882 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x056ee789 sock_rfree +EXPORT_SYMBOL vmlinux 0x05a0c2d4 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x05a29d84 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ae1808 do_truncate +EXPORT_SYMBOL vmlinux 0x05c7636e audit_log +EXPORT_SYMBOL vmlinux 0x05cbcc4b copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x05cc8c53 phy_device_remove +EXPORT_SYMBOL vmlinux 0x05dafc5d iterate_dir +EXPORT_SYMBOL vmlinux 0x05e7a090 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x05f197db pci_release_region +EXPORT_SYMBOL vmlinux 0x05f573b5 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06193790 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x06279919 skb_unlink +EXPORT_SYMBOL vmlinux 0x0627b536 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x0629fa85 netif_napi_del +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0646f776 __frontswap_store +EXPORT_SYMBOL vmlinux 0x0654684a new_inode +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x066999c2 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x066c6409 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067ac8a6 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06838511 inet_frag_find +EXPORT_SYMBOL vmlinux 0x06847854 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0684d8c0 sock_init_data +EXPORT_SYMBOL vmlinux 0x06893deb netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x06cb92b3 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x06d27ef0 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x06d54147 netdev_change_features +EXPORT_SYMBOL vmlinux 0x06da15da tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x06f5ed49 ns_capable +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0722edbc sk_stop_timer +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07350ff2 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x0738d55b igrab +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075e02d1 phy_start +EXPORT_SYMBOL vmlinux 0x075e5fba kill_litter_super +EXPORT_SYMBOL vmlinux 0x07a1bc25 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x07a832ca sock_from_file +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b5b44c blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x07c82e78 filp_open +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d16946 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x07d4de36 input_grab_device +EXPORT_SYMBOL vmlinux 0x07ef0ee3 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x07f699d5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x07fb442c jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082e49d1 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x08349cf7 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0844cb74 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x084ef322 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x085bd0b2 dev_notice +EXPORT_SYMBOL vmlinux 0x08605420 lease_modify +EXPORT_SYMBOL vmlinux 0x08615c21 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x08683aac kernel_write +EXPORT_SYMBOL vmlinux 0x086a0243 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x088a3b59 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x08ca16c5 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f310ed would_dump +EXPORT_SYMBOL vmlinux 0x08f77a45 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x090d33a0 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x0912e197 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x09203aa6 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x09503515 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x09536021 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096424bf inode_init_owner +EXPORT_SYMBOL vmlinux 0x09663358 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x096d67de uart_resume_port +EXPORT_SYMBOL vmlinux 0x097cfc42 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x0980230b get_fs_type +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098cfadf mmc_remove_host +EXPORT_SYMBOL vmlinux 0x098e698f fb_set_cmap +EXPORT_SYMBOL vmlinux 0x098fe554 page_put_link +EXPORT_SYMBOL vmlinux 0x099c5d1d copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x09a52786 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x09b18084 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x09b70869 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x09b7835c filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d84828 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x09e59b03 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x09ec2cf0 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x0a17b962 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2c0c2f unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a33931a send_sig +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a46b8cc input_free_device +EXPORT_SYMBOL vmlinux 0x0a6a5256 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x0a78b304 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x0a9de506 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0acf95a9 tcp_poll +EXPORT_SYMBOL vmlinux 0x0aea5b8c kill_fasync +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b129ec8 __f_setown +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b277be0 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x0b3ba6e4 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5d604e mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b63c115 inet_put_port +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0badf23a __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc5bd0a dm_unregister_target +EXPORT_SYMBOL vmlinux 0x0bdd0689 dquot_disable +EXPORT_SYMBOL vmlinux 0x0beca7b6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x0c01395c pci_reenable_device +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c21d806 of_get_next_child +EXPORT_SYMBOL vmlinux 0x0c31ea9a ip_ct_attach +EXPORT_SYMBOL vmlinux 0x0c3c9085 inet6_bind +EXPORT_SYMBOL vmlinux 0x0c3f9c45 kthread_stop +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c482b7f security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x0c4d2090 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c63649d cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x0c6deedb vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x0c78e695 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb20846 get_io_context +EXPORT_SYMBOL vmlinux 0x0cb33fee phy_init_hw +EXPORT_SYMBOL vmlinux 0x0cdf6b3c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x0cff075d __frontswap_test +EXPORT_SYMBOL vmlinux 0x0d095f0c devm_gpio_request +EXPORT_SYMBOL vmlinux 0x0d40de1d gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d7b7118 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x0d9a6bed mach_c293_pcie +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da1f895 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x0db8b59d md_cluster_mod +EXPORT_SYMBOL vmlinux 0x0dbbb807 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc832b4 registered_fb +EXPORT_SYMBOL vmlinux 0x0dcbcc03 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x0dd7e0d6 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0ddc6d30 d_drop +EXPORT_SYMBOL vmlinux 0x0ded8b9b security_path_chmod +EXPORT_SYMBOL vmlinux 0x0e01e9a9 kernel_listen +EXPORT_SYMBOL vmlinux 0x0e1b347a sys_copyarea +EXPORT_SYMBOL vmlinux 0x0e33a60e bprm_change_interp +EXPORT_SYMBOL vmlinux 0x0e562c5d genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8d7c5c netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e99624a vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed48fa7 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x0ee87a0d dump_emit +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0ef274ae of_node_get +EXPORT_SYMBOL vmlinux 0x0ef9f919 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f01068a __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x0f1a0212 mach_bsc9132_qds +EXPORT_SYMBOL vmlinux 0x0f20a785 km_report +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f3f6f10 file_open_root +EXPORT_SYMBOL vmlinux 0x0f3fc48f locks_free_lock +EXPORT_SYMBOL vmlinux 0x0f466ac5 input_allocate_device +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4fb880 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0f58a355 tty_write_room +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f78d672 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f98babe uart_match_port +EXPORT_SYMBOL vmlinux 0x0f9f09f4 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb90fca bdi_register_dev +EXPORT_SYMBOL vmlinux 0x0fe16445 skb_make_writable +EXPORT_SYMBOL vmlinux 0x1001e6bb max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x10022ced __inode_permission +EXPORT_SYMBOL vmlinux 0x100460f3 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x10148803 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x10585b3a brioctl_set +EXPORT_SYMBOL vmlinux 0x105c0001 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950093 vfs_unlink +EXPORT_SYMBOL vmlinux 0x10a73f64 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x10a851b8 i2c_master_send +EXPORT_SYMBOL vmlinux 0x10ae4d13 padata_stop +EXPORT_SYMBOL vmlinux 0x10c149ec pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x10c51877 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ef6a47 generic_getxattr +EXPORT_SYMBOL vmlinux 0x10f8e9ed vga_tryget +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x11391fda tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x113d3247 dump_align +EXPORT_SYMBOL vmlinux 0x116315ff vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118ba43d xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a62b13 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x11ad2991 commit_creds +EXPORT_SYMBOL vmlinux 0x11b2e41a xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x11c2e83e inet_del_protocol +EXPORT_SYMBOL vmlinux 0x11de5ab2 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f8eef8 kthread_bind +EXPORT_SYMBOL vmlinux 0x120b2e63 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12110c08 generic_file_open +EXPORT_SYMBOL vmlinux 0x12170766 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x121b4e4b memremap +EXPORT_SYMBOL vmlinux 0x12226f24 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x122c28a1 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x1263d1f4 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x126595ae __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x129de8a9 nvm_register +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a41d18 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x12a56e35 kfree_put_link +EXPORT_SYMBOL vmlinux 0x12d627d8 dev_deactivate +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133e95d6 put_cmsg +EXPORT_SYMBOL vmlinux 0x1340882f mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x1347beb6 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x13529bf6 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x1355059f nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x1355666a param_ops_int +EXPORT_SYMBOL vmlinux 0x1357d952 neigh_lookup +EXPORT_SYMBOL vmlinux 0x1362a6fd __get_user_pages +EXPORT_SYMBOL vmlinux 0x1399f2b7 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x13a34843 generic_read_dir +EXPORT_SYMBOL vmlinux 0x13c77598 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x13cf76bd sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dd9b93 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x13e96ea5 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x140aabde phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1425a71a udp_proc_register +EXPORT_SYMBOL vmlinux 0x147e43a9 fd_install +EXPORT_SYMBOL vmlinux 0x14a068b0 filemap_fault +EXPORT_SYMBOL vmlinux 0x14b35e84 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d8f1a3 inet_ioctl +EXPORT_SYMBOL vmlinux 0x14dd1688 fs_bio_set +EXPORT_SYMBOL vmlinux 0x14e652b6 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x14f7aaca security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x151ace0f md_update_sb +EXPORT_SYMBOL vmlinux 0x1530d54b blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x1531b0c3 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x153cd73a blk_sync_queue +EXPORT_SYMBOL vmlinux 0x154681cc pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155f0266 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x1564d33f __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x156bbf19 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x157677be pci_map_rom +EXPORT_SYMBOL vmlinux 0x15baa900 bio_map_kern +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e8bcde mmc_start_req +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x161d6f0c ab3100_event_register +EXPORT_SYMBOL vmlinux 0x16274570 block_write_begin +EXPORT_SYMBOL vmlinux 0x16434df2 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x16673d92 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16868196 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x1690a34c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x16988b50 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x16bfa21f fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x16d48005 scsi_host_put +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e7456f dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x16e754ea tcf_hash_search +EXPORT_SYMBOL vmlinux 0x1718f277 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x1728e3d7 tty_devnum +EXPORT_SYMBOL vmlinux 0x173d63a9 mmc_get_card +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17735c23 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x177402a5 bd_set_size +EXPORT_SYMBOL vmlinux 0x1798b47e twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17cda83b ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x17dc110d serio_open +EXPORT_SYMBOL vmlinux 0x17e205c6 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17ec1d80 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x17ec742c of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1805ba08 have_submounts +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182d7c78 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1857dd24 mntput +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a378c0 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x18bb49b7 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x18c95f1d kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18fe7a80 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x191d74b9 cdev_add +EXPORT_SYMBOL vmlinux 0x1920d6c6 dev_add_pack +EXPORT_SYMBOL vmlinux 0x19376752 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x19540ff0 simple_fill_super +EXPORT_SYMBOL vmlinux 0x196f31ea dquot_alloc +EXPORT_SYMBOL vmlinux 0x1973b56d pci_iomap +EXPORT_SYMBOL vmlinux 0x1983e156 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19fd3a7c dev_set_mtu +EXPORT_SYMBOL vmlinux 0x1a379b69 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x1a3d8008 rt6_lookup +EXPORT_SYMBOL vmlinux 0x1a5ce707 md_write_end +EXPORT_SYMBOL vmlinux 0x1a60a4db __neigh_event_send +EXPORT_SYMBOL vmlinux 0x1a74eea0 kill_pgrp +EXPORT_SYMBOL vmlinux 0x1a8b4e64 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x1a952a57 elv_register_queue +EXPORT_SYMBOL vmlinux 0x1a9c177a security_path_unlink +EXPORT_SYMBOL vmlinux 0x1aa29bce udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x1ac3c893 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x1acf85b3 tcp_prot +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0217a5 __break_lease +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b3dc10f clear_inode +EXPORT_SYMBOL vmlinux 0x1b4fd325 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8febfb neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1ba6d747 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x1ba79aa8 thaw_bdev +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc4cc17 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bc8088a tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd43880 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x1be94ed9 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x1c1096aa blkdev_put +EXPORT_SYMBOL vmlinux 0x1c10f07e bioset_create +EXPORT_SYMBOL vmlinux 0x1c1ababf generic_write_end +EXPORT_SYMBOL vmlinux 0x1c1b2bd7 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x1c1ed9ea clk_add_alias +EXPORT_SYMBOL vmlinux 0x1c240065 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x1c3a68ef find_vma +EXPORT_SYMBOL vmlinux 0x1c48c54f scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x1c4bfd53 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x1c6613cf textsearch_register +EXPORT_SYMBOL vmlinux 0x1c7510c8 del_gendisk +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c875659 phy_print_status +EXPORT_SYMBOL vmlinux 0x1c895c9c napi_gro_receive +EXPORT_SYMBOL vmlinux 0x1c990e5a blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1cd21682 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1cd9d321 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x1ce9738e ps2_command +EXPORT_SYMBOL vmlinux 0x1ced8c11 dquot_drop +EXPORT_SYMBOL vmlinux 0x1ceff8a4 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x1d0bfeee phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x1d2147bd wireless_send_event +EXPORT_SYMBOL vmlinux 0x1d377b9b of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x1d43ed10 register_shrinker +EXPORT_SYMBOL vmlinux 0x1d4f78c8 param_set_byte +EXPORT_SYMBOL vmlinux 0x1d590417 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x1d6bacee cont_write_begin +EXPORT_SYMBOL vmlinux 0x1d7d1da3 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x1d883c22 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db5bbcc dev_get_stats +EXPORT_SYMBOL vmlinux 0x1db95679 vfs_read +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd8b190 tcp_close +EXPORT_SYMBOL vmlinux 0x1ddb286f blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x1e0e3033 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x1e11fa81 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x1e1c858e pci_select_bars +EXPORT_SYMBOL vmlinux 0x1e23a4c2 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e29ccf2 iput +EXPORT_SYMBOL vmlinux 0x1e331564 __scm_destroy +EXPORT_SYMBOL vmlinux 0x1e38e2a7 up_write +EXPORT_SYMBOL vmlinux 0x1e3e21b7 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1e43f42d prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1e57546a ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x1e5fe54a skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x1e655cb1 vga_client_register +EXPORT_SYMBOL vmlinux 0x1e6c9b5e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea0f637 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x1ea3042f netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x1eb62e12 ip6_route_output +EXPORT_SYMBOL vmlinux 0x1ec270e2 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x1ecdc139 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x1edfa1b6 netdev_features_change +EXPORT_SYMBOL vmlinux 0x1f0326f2 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x1f04d98d neigh_table_clear +EXPORT_SYMBOL vmlinux 0x1f3b2aa8 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x1f543d96 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8f1603 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x1fb4d771 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x1fbd07ea scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcab8c6 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdfd953 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x1fe27a15 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2022504f jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x20714ce5 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075b895 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x207f1073 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x208adfb6 ata_print_version +EXPORT_SYMBOL vmlinux 0x209cf78b path_noexec +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ae58d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c712b6 elevator_change +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20ef7957 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x2128b83f build_skb +EXPORT_SYMBOL vmlinux 0x21304fb5 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x21349a30 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x2146ff90 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x214e6964 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x2153acc4 generic_listxattr +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x21827013 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x218d85a2 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x218ebb9b insert_inode_locked +EXPORT_SYMBOL vmlinux 0x21ad1d4f skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x2236fefa of_phy_connect +EXPORT_SYMBOL vmlinux 0x225437dd sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225d39e5 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226645cb devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x228712ff netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x228b37a6 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x229703b7 generic_readlink +EXPORT_SYMBOL vmlinux 0x22ab89ee fget +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c3affa uart_get_divisor +EXPORT_SYMBOL vmlinux 0x22d27226 __ps2_command +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22f6c617 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x23021e46 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x2303d9e2 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x2310cff6 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234c24e7 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x235025b4 to_ndd +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23602984 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x2360a728 qdisc_reset +EXPORT_SYMBOL vmlinux 0x2366f467 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x237ff202 ip_options_compile +EXPORT_SYMBOL vmlinux 0x23906d9d blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x2390fdb1 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x23975def mount_subtree +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23d8ee14 inet6_getname +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2430ee67 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x249c3bf5 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x249d4aff __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x24e0cf04 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f644d7 inet6_offloads +EXPORT_SYMBOL vmlinux 0x24f6ed84 mutex_unlock +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x250728ee generic_file_llseek +EXPORT_SYMBOL vmlinux 0x25077768 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x2510d924 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252d6b9a __frontswap_load +EXPORT_SYMBOL vmlinux 0x25537ce2 inode_set_flags +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257c9a2e fb_validate_mode +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2589b1eb scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x25b4230b vfs_setpos +EXPORT_SYMBOL vmlinux 0x25bff0a6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25fc0cb9 key_put +EXPORT_SYMBOL vmlinux 0x262c8090 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2635ad23 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26550557 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x26557168 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x26605135 tty_port_put +EXPORT_SYMBOL vmlinux 0x2663679a gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x267efdac netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x2694c941 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x26b0a988 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26be4fd9 do_splice_to +EXPORT_SYMBOL vmlinux 0x26c0f2bb jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x26c19fb3 d_rehash +EXPORT_SYMBOL vmlinux 0x26e0a752 devm_memunmap +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fafdee sock_create +EXPORT_SYMBOL vmlinux 0x272a525e skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x273bc857 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x27482d75 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x274e3863 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x27536466 rtnl_notify +EXPORT_SYMBOL vmlinux 0x2764ef7e generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x276ed03f rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x2780b02a switch_mmu_context +EXPORT_SYMBOL vmlinux 0x27860c3c d_find_alias +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279f43d5 register_qdisc +EXPORT_SYMBOL vmlinux 0x27b4442f zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x27b50cc1 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c27f06 bdev_read_only +EXPORT_SYMBOL vmlinux 0x27c9e62a nvm_put_blk +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27fd35a3 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x280a0a80 ll_rw_block +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28401a4e migrate_page +EXPORT_SYMBOL vmlinux 0x287936bb padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x287fc9d5 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x28817684 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x2886a8a0 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x2896fea9 phy_disconnect +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28ac83de pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x28b9c9a7 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x28c026f1 scsi_host_get +EXPORT_SYMBOL vmlinux 0x28d48c84 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x28e44e09 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x28e6ce45 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x28eb566f qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29187a14 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x2919f404 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x291a9e1f phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x291d20ad uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x2924bea7 bio_split +EXPORT_SYMBOL vmlinux 0x293640b7 eth_header_cache +EXPORT_SYMBOL vmlinux 0x29397c4f sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x29402309 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x294aaceb dev_load +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296b0762 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x2976956d inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x29b8eaf8 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x29be818e passthru_features_check +EXPORT_SYMBOL vmlinux 0x29c5e26f i2c_transfer +EXPORT_SYMBOL vmlinux 0x29d0e593 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a002a15 sock_create_kern +EXPORT_SYMBOL vmlinux 0x2a293df9 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a33e2d0 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x2a3461f9 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5fb97b lookup_one_len +EXPORT_SYMBOL vmlinux 0x2a673ca5 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2a7aa31e sock_kfree_s +EXPORT_SYMBOL vmlinux 0x2a8a3310 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abdf84c dev_uc_init +EXPORT_SYMBOL vmlinux 0x2ac41efe of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x2ac4df0b wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae28915 bio_chain +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2a29ec inet_addr_type +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4c2f52 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x2b5ded2e of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x2b73aa8c crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba10330 param_set_invbool +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2baf5d93 dev_crit +EXPORT_SYMBOL vmlinux 0x2bc28f29 arp_send +EXPORT_SYMBOL vmlinux 0x2bc7ab25 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x2bd71d63 km_is_alive +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bee3821 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x2bf7a037 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x2bff4ecc genl_notify +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1f36c9 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x2c239841 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3ecbce locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x2c553086 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x2c6ed63a __init_rwsem +EXPORT_SYMBOL vmlinux 0x2c703fe4 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x2c73fbe2 blk_end_request +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c825f5a mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x2c8a1f1c tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x2c9a9257 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x2cb53a1d agp_enable +EXPORT_SYMBOL vmlinux 0x2cb73bb8 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2d02ea56 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d14d067 eth_header +EXPORT_SYMBOL vmlinux 0x2d1b5892 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x2d2fc494 bio_put +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d5459d9 skb_put +EXPORT_SYMBOL vmlinux 0x2d562002 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x2d6c0de6 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x2d81d005 notify_change +EXPORT_SYMBOL vmlinux 0x2d8518a7 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x2da6693b locks_init_lock +EXPORT_SYMBOL vmlinux 0x2de12090 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x2df03859 mdiobus_write +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1f3299 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2cfd83 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x2e2dc3aa __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x2e498dc3 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x2e60da07 tty_set_operations +EXPORT_SYMBOL vmlinux 0x2e823e86 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x2e948e8c mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x2e9f400f xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x2ebad87b xfrm_init_state +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecfa887 scmd_printk +EXPORT_SYMBOL vmlinux 0x2ede3012 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x2ee4c16d page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x2eedce8f register_framebuffer +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f08ac71 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x2f1d23c6 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2f22593b tty_free_termios +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f74f5a3 netlink_ack +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff2dd5c nf_log_trace +EXPORT_SYMBOL vmlinux 0x2ff7556e search_binary_handler +EXPORT_SYMBOL vmlinux 0x3000dd09 follow_pfn +EXPORT_SYMBOL vmlinux 0x300c4b70 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30270e33 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x302c0a83 giveup_fpu +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3038b2be scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x304db89b sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x3059cc2d nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x3064e178 end_page_writeback +EXPORT_SYMBOL vmlinux 0x306e5bda md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x30706adb __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x307446ed simple_link +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30924835 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x3092ba73 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b3fb2f block_read_full_page +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30e8c569 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x30eb1268 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x30f34cfb end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x30fc083f find_get_entry +EXPORT_SYMBOL vmlinux 0x31001f5b genphy_suspend +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x311f3d5d blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314940cd of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x314eacff do_SAK +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3187ae2d kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31d21c40 sk_net_capable +EXPORT_SYMBOL vmlinux 0x31d904dc __register_binfmt +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f2af5a sock_no_getname +EXPORT_SYMBOL vmlinux 0x31f484b2 read_dev_sector +EXPORT_SYMBOL vmlinux 0x320c77ba read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x3221b7dc xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x322bf902 file_remove_privs +EXPORT_SYMBOL vmlinux 0x32331f05 request_key_async +EXPORT_SYMBOL vmlinux 0x32363d37 agp_free_memory +EXPORT_SYMBOL vmlinux 0x32372ab5 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x3267d1e9 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328ac087 led_set_brightness +EXPORT_SYMBOL vmlinux 0x328f0ccc agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x32909118 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x32aa4723 vme_bus_num +EXPORT_SYMBOL vmlinux 0x32b264ed jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x32bbd2a6 bdput +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32fc6d6d stop_tty +EXPORT_SYMBOL vmlinux 0x32fea2b5 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x332e6886 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x33462e52 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x33567a7e key_type_keyring +EXPORT_SYMBOL vmlinux 0x335e664e security_path_link +EXPORT_SYMBOL vmlinux 0x336a9fd1 pci_find_capability +EXPORT_SYMBOL vmlinux 0x337cecd9 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x33a81ab5 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cf53c3 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x33d9eb8a generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33ddf012 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x33ddfa16 scsi_execute +EXPORT_SYMBOL vmlinux 0x33df50f2 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fc9ca0 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x33fee108 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x34072dd5 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x34095654 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x340ada64 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34782623 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x34839268 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34ae9a02 tty_register_driver +EXPORT_SYMBOL vmlinux 0x34e4e782 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35008112 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x35094de5 free_task +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3521d8e7 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e603e __put_cred +EXPORT_SYMBOL vmlinux 0x354a4db2 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x354c25b0 inet_sendpage +EXPORT_SYMBOL vmlinux 0x3550c707 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35660f49 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x356d10e2 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x357ad1c3 blk_get_request +EXPORT_SYMBOL vmlinux 0x3580174e pneigh_lookup +EXPORT_SYMBOL vmlinux 0x358519b4 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x359ce730 param_array_ops +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b9a250 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x35beafe2 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x35c21199 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x35eab314 elevator_alloc +EXPORT_SYMBOL vmlinux 0x35f572c2 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x360a97b7 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x361a71ca fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x361b2902 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x363d78ab call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x365944fb pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x3667ee8c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x368bc313 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36caf449 of_match_device +EXPORT_SYMBOL vmlinux 0x36df8fe0 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x36ff1a8a tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x3719a9b5 netlink_unicast +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3759f39d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x3762b23c mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3766c76d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x378530a2 input_reset_device +EXPORT_SYMBOL vmlinux 0x37985976 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37bbb028 phy_init_eee +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37dbd369 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37ed33c2 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x37edd9e1 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x37f3bd75 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f80f21 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x37feac2a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x380f47ef inet_frags_init +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x382f2e8b tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x38406715 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x385595a1 mmc_put_card +EXPORT_SYMBOL vmlinux 0x387d2715 sock_wfree +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3894d99f ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x389aa187 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38bb0d24 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x38c5eb2f dquot_enable +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x39025e21 kmap_to_page +EXPORT_SYMBOL vmlinux 0x3913b7c2 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x391628fc __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x391b9b3f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x392024d1 elv_rb_del +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3945d5e1 of_dev_put +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x397a7a6f d_alloc_name +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39ebd634 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x3a10807b pci_write_vpd +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a283c7b set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x3a2d0966 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x3a495237 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x3a55cef8 component_match_add +EXPORT_SYMBOL vmlinux 0x3a6feab8 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x3a71f1eb sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3abbb7dc elv_rb_find +EXPORT_SYMBOL vmlinux 0x3ac90e83 register_filesystem +EXPORT_SYMBOL vmlinux 0x3ad9d71e dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3b08459d follow_down_one +EXPORT_SYMBOL vmlinux 0x3b19a6ea bdi_register +EXPORT_SYMBOL vmlinux 0x3b20dc66 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x3b37c182 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x3b3b2d1e truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x3b57f2e3 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x3b5a5fa9 init_task +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b73343b blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x3b994bd3 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x3bc48eab iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x3bd6d1e3 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x3bd9e455 devm_release_resource +EXPORT_SYMBOL vmlinux 0x3bf1e89b sg_miter_next +EXPORT_SYMBOL vmlinux 0x3c0777dc tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x3c1549f1 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3c2d7584 security_path_symlink +EXPORT_SYMBOL vmlinux 0x3c2d97fa blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x3c324b06 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3c328381 scsi_print_result +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c82c36e dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x3cac5435 sk_stream_error +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cb3d8b1 vm_mmap +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc58a13 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x3cda6d27 user_revoke +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf3bc6c input_release_device +EXPORT_SYMBOL vmlinux 0x3d1cf74b flush_signals +EXPORT_SYMBOL vmlinux 0x3d2516fd fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x3d449f7c sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x3d4759ce i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3d9403da tc_classify +EXPORT_SYMBOL vmlinux 0x3d9c50c0 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x3db48abd clear_wb_congested +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de87309 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x3dea0be8 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x3df22457 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e045536 key_unlink +EXPORT_SYMBOL vmlinux 0x3e6ba1a0 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x3e73b259 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x3e865e62 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ee45489 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f259677 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x3f293cd2 consume_skb +EXPORT_SYMBOL vmlinux 0x3f3b6598 of_get_property +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f627adb security_inode_readlink +EXPORT_SYMBOL vmlinux 0x3f62a6c0 path_get +EXPORT_SYMBOL vmlinux 0x3f6c1c0d mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x3f88434b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x3f89a6f2 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x3f9d50e3 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3fa02f05 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x3fade4b3 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb2954d mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x3fc12c1e clk_get +EXPORT_SYMBOL vmlinux 0x3fd72bb3 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe0f30a __genl_register_family +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff559b0 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x3ff776ec delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403e1126 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406ae61e cfb_copyarea +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c8f2b4 pipe_lock +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40ecf0cf save_mount_options +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x410ce9d0 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x410fbe65 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x418b346b skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x419d1ead noop_llseek +EXPORT_SYMBOL vmlinux 0x419d6637 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x41bc47ad km_query +EXPORT_SYMBOL vmlinux 0x41be44d4 uart_register_driver +EXPORT_SYMBOL vmlinux 0x41e224fe skb_clone_sk +EXPORT_SYMBOL vmlinux 0x4201b2b6 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4226bc7d sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x4237d375 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x4249d3b2 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x425541c6 __brelse +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427034f8 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x42790043 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42e7bc7e inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x42edb239 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431cccc7 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x4337291f generic_make_request +EXPORT_SYMBOL vmlinux 0x43460f01 phy_detach +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435bf453 blk_peek_request +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436ef02f i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4389aafc agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x438cc99d ps2_init +EXPORT_SYMBOL vmlinux 0x438faef7 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x43909f07 pci_release_regions +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43bbbe48 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x43c19b74 seq_open +EXPORT_SYMBOL vmlinux 0x43ee2017 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f9b6fa __breadahead +EXPORT_SYMBOL vmlinux 0x440384d9 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44144610 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x44187543 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x44301a0e pci_dev_get +EXPORT_SYMBOL vmlinux 0x4431331a tso_build_data +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443deb2e tso_start +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444b099f pci_assign_resource +EXPORT_SYMBOL vmlinux 0x4461146d mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b93129 tty_lock +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f4b6cd fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x4512c751 audit_log_start +EXPORT_SYMBOL vmlinux 0x45293afe d_alloc +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4541533b buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x4547a49b __get_page_tail +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4582aca0 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45dc284c pci_remove_bus +EXPORT_SYMBOL vmlinux 0x45f1fa52 kdb_current_task +EXPORT_SYMBOL vmlinux 0x460090ec release_pages +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463c6e72 security_path_chown +EXPORT_SYMBOL vmlinux 0x4641c0e2 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46638de9 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468bb360 cdev_alloc +EXPORT_SYMBOL vmlinux 0x46ab98cb request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x46ba1a76 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x46c0f685 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46fbfb74 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4702047e unlock_buffer +EXPORT_SYMBOL vmlinux 0x47275dae jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x472a0dd1 nf_log_packet +EXPORT_SYMBOL vmlinux 0x473f24e7 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4746bdcb pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x474e5174 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x4753447e contig_page_data +EXPORT_SYMBOL vmlinux 0x475842e7 skb_split +EXPORT_SYMBOL vmlinux 0x475b8544 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x475e3a9f of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x4767c90a __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x47782908 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x478952d5 unlock_rename +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47966dcb register_gifconf +EXPORT_SYMBOL vmlinux 0x479a65f2 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47af2733 deactivate_super +EXPORT_SYMBOL vmlinux 0x47bdc91a vfs_iter_write +EXPORT_SYMBOL vmlinux 0x47d0da72 devm_iounmap +EXPORT_SYMBOL vmlinux 0x47f6db77 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x47fd5264 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x47ffc956 touch_buffer +EXPORT_SYMBOL vmlinux 0x482a7a60 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x48343fb5 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486f9461 param_ops_charp +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48baa849 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x48d78644 netif_device_attach +EXPORT_SYMBOL vmlinux 0x48d7b51d netdev_emerg +EXPORT_SYMBOL vmlinux 0x48db9268 tty_throttle +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4946d20d seq_putc +EXPORT_SYMBOL vmlinux 0x4948122d eth_validate_addr +EXPORT_SYMBOL vmlinux 0x494cd6b7 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497702ee i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x4978506d blk_init_queue +EXPORT_SYMBOL vmlinux 0x497ef89f abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x499f71d2 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49be1449 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x49c36ff0 get_task_io_context +EXPORT_SYMBOL vmlinux 0x49e6ad88 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a33fcd5 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x4a3b4dc9 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x4a3ed28b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x4a5cf654 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x4a72fb94 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x4a7b91ca fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x4aba98fa of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac20c92 mem_map +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ade62d4 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4ae1844c dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2ec382 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x4b39b8b4 finish_no_open +EXPORT_SYMBOL vmlinux 0x4b404d5b xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x4b4a8402 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x4b59a331 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b8767af blk_fetch_request +EXPORT_SYMBOL vmlinux 0x4b9d857b dev_trans_start +EXPORT_SYMBOL vmlinux 0x4ba6de85 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bafa0cb inet_frags_fini +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bc844fc skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x4bca7870 napi_complete_done +EXPORT_SYMBOL vmlinux 0x4bce9379 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bdd0a7c flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4befdaae user_path_at_empty +EXPORT_SYMBOL vmlinux 0x4bfed79d devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x4c0ecee3 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c285f36 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2feb32 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4389c9 __napi_schedule +EXPORT_SYMBOL vmlinux 0x4c543e0c inode_get_bytes +EXPORT_SYMBOL vmlinux 0x4c77913b km_policy_notify +EXPORT_SYMBOL vmlinux 0x4c93aff9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x4c974094 kfree_skb +EXPORT_SYMBOL vmlinux 0x4ccb8a58 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x4ccfbc40 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdbbead __getblk_gfp +EXPORT_SYMBOL vmlinux 0x4cefff2e of_get_min_tck +EXPORT_SYMBOL vmlinux 0x4d0f723a pci_clear_master +EXPORT_SYMBOL vmlinux 0x4d1ed029 pci_disable_device +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3d85cd lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x4d40d790 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5430c8 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dcc5dea max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x4dcff52f blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4dedca2b napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df2b3bc of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x4df8e45c abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x4e12f1df xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4e2fb5c5 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e455b44 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x4e486713 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6cc827 generic_permission +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e8ffb12 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x4e97d250 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4e987acc inet_add_protocol +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4e9ec0cc devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x4e9fc508 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x4ecdcf7a tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4ed34cd9 __destroy_inode +EXPORT_SYMBOL vmlinux 0x4f16bb30 prepare_creds +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3c2897 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x4f4541df da903x_query_status +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f8b09cf phy_find_first +EXPORT_SYMBOL vmlinux 0x4fa9e56b bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x4fb9b539 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x4fdb42ce pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe6dbb2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x5002674c ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500ce78e sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x50348150 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x5047538d mmc_can_discard +EXPORT_SYMBOL vmlinux 0x5050d2bb set_binfmt +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x5056b39d ps2_end_command +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50760b0b dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50a5a04a jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c9a8b0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x50d3cf25 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f76ab9 mount_nodev +EXPORT_SYMBOL vmlinux 0x5102c605 bio_add_page +EXPORT_SYMBOL vmlinux 0x51096d6f force_sig +EXPORT_SYMBOL vmlinux 0x510b2be9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51319631 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x515c646d udp_poll +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x517bee03 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51b42573 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x51b903aa neigh_destroy +EXPORT_SYMBOL vmlinux 0x51c7c1e7 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x51e48c1e inode_init_once +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51fb9d2e tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x529d7e79 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52d9dffa tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x52fed501 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x5303535a input_set_abs_params +EXPORT_SYMBOL vmlinux 0x530e537c pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x53202936 param_set_ulong +EXPORT_SYMBOL vmlinux 0x532d0de4 simple_setattr +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534cd20a mdiobus_scan +EXPORT_SYMBOL vmlinux 0x535ae787 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536829a0 of_iomap +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x539f9a0f inet_bind +EXPORT_SYMBOL vmlinux 0x53aa877f writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x53cb43a5 check_disk_change +EXPORT_SYMBOL vmlinux 0x53d7c023 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x53e030b6 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x541988b3 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5433b842 user_path_create +EXPORT_SYMBOL vmlinux 0x543eb8f3 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54619d2f skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x5485caea xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x548a953d mutex_lock +EXPORT_SYMBOL vmlinux 0x548d0435 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x54a50881 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x54a70e2b phy_attach +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b887de flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54d4d853 cdrom_open +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f2447b serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x5515fb1e i2c_del_driver +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552d1446 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5543267e pcim_pin_device +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5576eb74 devm_ioremap +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x558a455a seq_dentry +EXPORT_SYMBOL vmlinux 0x55981a75 tcf_em_register +EXPORT_SYMBOL vmlinux 0x55a17d30 __elv_add_request +EXPORT_SYMBOL vmlinux 0x55bcbfae xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x55c02efc blk_make_request +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dcdee4 netif_napi_add +EXPORT_SYMBOL vmlinux 0x55dd83d1 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x55eca240 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x55f124fc jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x5608ec8c xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x560cb32a xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5649ab64 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x564a5204 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x5654fdef fb_class +EXPORT_SYMBOL vmlinux 0x56572fb4 nf_log_set +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x5691691e blk_integrity_register +EXPORT_SYMBOL vmlinux 0x569b0be2 complete_request_key +EXPORT_SYMBOL vmlinux 0x56abcc0a jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d101c0 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x56ebb230 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x56ef2bf4 napi_disable +EXPORT_SYMBOL vmlinux 0x56f4832d bioset_free +EXPORT_SYMBOL vmlinux 0x570e803d ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57412dac zpool_register_driver +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574c4f33 get_acl +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x575bad72 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576c7d96 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x577984b0 kobject_add +EXPORT_SYMBOL vmlinux 0x578f24e1 release_sock +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57ae095f decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x57cbbded vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x57da559c kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x57db8030 pci_bus_type +EXPORT_SYMBOL vmlinux 0x57e3bfc7 file_ns_capable +EXPORT_SYMBOL vmlinux 0x57f2ecd7 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x57f8049f twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58620e5e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58784809 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x588a4a38 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x588dd122 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x589a7c5e tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d9a80b dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f170bf fb_pan_display +EXPORT_SYMBOL vmlinux 0x5909faf2 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x5918b4bd mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x5924ccd3 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x595f5b28 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x596f587c give_up_console +EXPORT_SYMBOL vmlinux 0x597a4fff mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d4ace7 fb_blank +EXPORT_SYMBOL vmlinux 0x59e91b1e lock_fb_info +EXPORT_SYMBOL vmlinux 0x59fb2664 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x5a041f98 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0d3c85 nobh_write_end +EXPORT_SYMBOL vmlinux 0x5a396b9f led_update_brightness +EXPORT_SYMBOL vmlinux 0x5a571ccb nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x5a575943 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5a5a4892 default_llseek +EXPORT_SYMBOL vmlinux 0x5a6729ee netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x5a7505f2 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x5a7d274f dev_get_iflink +EXPORT_SYMBOL vmlinux 0x5a9163ae dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x5a9993ca try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5a99c716 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x5ab0aac6 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0x5acdf4a3 udplite_prot +EXPORT_SYMBOL vmlinux 0x5ad718e3 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x5adbf635 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x5add473c nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x5ae3c202 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x5af68060 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b0a491a __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2a6e72 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x5b30801a pci_fixup_device +EXPORT_SYMBOL vmlinux 0x5b3fa321 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x5b5d5901 vfs_link +EXPORT_SYMBOL vmlinux 0x5b7129a1 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x5b88c760 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9b8efd __pagevec_release +EXPORT_SYMBOL vmlinux 0x5ba253d2 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5baae3f4 devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5bbb914f scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x5bca1ab1 d_move +EXPORT_SYMBOL vmlinux 0x5bf5f3a1 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5c0139ea generic_removexattr +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c75d810 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x5c8f4bd1 simple_readpage +EXPORT_SYMBOL vmlinux 0x5ca8d44a dev_printk_emit +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5ce57ff3 drop_nlink +EXPORT_SYMBOL vmlinux 0x5ce88053 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x5cf4334f netpoll_setup +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0e0a66 of_device_is_available +EXPORT_SYMBOL vmlinux 0x5d11f533 vme_bus_type +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d7329db sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x5d85f8c3 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x5dbc7126 proc_remove +EXPORT_SYMBOL vmlinux 0x5de212e8 param_get_long +EXPORT_SYMBOL vmlinux 0x5de81c00 __vfs_write +EXPORT_SYMBOL vmlinux 0x5df46205 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e2cda2c sock_sendmsg +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e618cff input_close_device +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8d7620 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9881c3 skb_insert +EXPORT_SYMBOL vmlinux 0x5e9f0cb5 flush_old_exec +EXPORT_SYMBOL vmlinux 0x5eaf2e5b lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb780fd finish_open +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f07a545 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f27077c current_fs_time +EXPORT_SYMBOL vmlinux 0x5f46a9ec __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5f5885a0 ping_prot +EXPORT_SYMBOL vmlinux 0x5f686e9f page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9b61c8 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x5fbb4013 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5fc131d0 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x5fcda4ed of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6008703d open_exec +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60330168 sk_filter +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603735a3 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x6052e5ed dev_get_by_name +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609fb0e3 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60b999ca swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x61038a69 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61296936 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x6133d127 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x6152ad74 scsi_add_device +EXPORT_SYMBOL vmlinux 0x6179a53b param_ops_bint +EXPORT_SYMBOL vmlinux 0x6180e724 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x6189b41a ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b7bea9 __register_nls +EXPORT_SYMBOL vmlinux 0x61b94734 __invalidate_device +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f65b02 skb_queue_head +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624d6679 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x624f6061 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62d31f31 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x62ecfe30 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6341a34e swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x637ef60c blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x639b193e keyring_alloc +EXPORT_SYMBOL vmlinux 0x63a76922 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b65546 dev_warn +EXPORT_SYMBOL vmlinux 0x63b9c49f blk_requeue_request +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d1a36f vfs_getattr +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64118927 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6417b8aa ata_port_printk +EXPORT_SYMBOL vmlinux 0x64226183 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x64437923 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x646620f7 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x6489bf67 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x648af21a mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a48cf1 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64aade4e in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x64cabaa3 dst_init +EXPORT_SYMBOL vmlinux 0x64e1d447 xfrm_input +EXPORT_SYMBOL vmlinux 0x64e63327 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65183956 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x651a1d6a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652b2fbf max8998_update_reg +EXPORT_SYMBOL vmlinux 0x653f9551 seq_open_private +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654b462b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x65579e2b pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x655a6b8c vme_register_driver +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x657bf380 tcf_register_action +EXPORT_SYMBOL vmlinux 0x6587256c abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x659651ff lro_flush_all +EXPORT_SYMBOL vmlinux 0x659735cf pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x659abc84 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x65a5699c init_net +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x66013cde inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x6603fe61 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6616c4a7 proto_register +EXPORT_SYMBOL vmlinux 0x6622ffea bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x66483f8c dst_discard_out +EXPORT_SYMBOL vmlinux 0x66823fad __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x6698db49 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x66aea382 cdrom_release +EXPORT_SYMBOL vmlinux 0x66afb9b1 netdev_printk +EXPORT_SYMBOL vmlinux 0x66b59f5d of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x66c0a7bd submit_bio_wait +EXPORT_SYMBOL vmlinux 0x66ce9128 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x66d2fee1 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x66dd456c nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x67164203 simple_write_begin +EXPORT_SYMBOL vmlinux 0x671876e1 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675a1326 skb_pad +EXPORT_SYMBOL vmlinux 0x676d39ec textsearch_prepare +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678f3a5f dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x67b0f862 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x67b5113a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c4b224 security_path_rename +EXPORT_SYMBOL vmlinux 0x67c7965d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x67d4e2bd sk_alloc +EXPORT_SYMBOL vmlinux 0x67e401c7 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x67f67bae vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6807c8b8 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x68459dd8 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x685e55e4 from_kgid +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687e48bd vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x688c6644 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b680bc inetdev_by_index +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b8be84 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x68d37142 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x68d5c319 dquot_get_state +EXPORT_SYMBOL vmlinux 0x68dde687 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x68f5204d udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x6907d9f9 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x69388ba6 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x69397424 misc_register +EXPORT_SYMBOL vmlinux 0x693a7477 set_user_nice +EXPORT_SYMBOL vmlinux 0x69436987 filp_close +EXPORT_SYMBOL vmlinux 0x695d31ba page_address +EXPORT_SYMBOL vmlinux 0x696d3e18 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69705052 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6978cc4a iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x69926c95 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b93fe3 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x69b96209 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x69baa2f0 __quota_error +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69f41921 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1f739a ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x6a4b07db nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7f1fa7 cdev_del +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6ab8ee17 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6abe8d58 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x6ac2931f pci_disable_msix +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ae602ad ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x6aede699 no_llseek +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af284e3 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x6af5ec88 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b094289 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x6b1b22c8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1ea522 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b48e123 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x6b4a90fc down_read_trylock +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6e484b ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x6b946cee unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6ba66783 inode_permission +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd4af99 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be167cc sync_blockdev +EXPORT_SYMBOL vmlinux 0x6be712c4 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x6bea6d57 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x6bf1cd29 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0d6dc4 arp_create +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2160da md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x6c2c3fa7 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x6c42a169 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x6c49b01b inet_sendmsg +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c928342 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x6c9a656d powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca2ae01 register_md_personality +EXPORT_SYMBOL vmlinux 0x6ca73948 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cc71c37 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cfaafb3 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2cd8b9 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6d2de9a5 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x6d447aaa fget_raw +EXPORT_SYMBOL vmlinux 0x6d47cd9e create_empty_buffers +EXPORT_SYMBOL vmlinux 0x6d6cab54 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x6d702fb9 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d7d0a04 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df77299 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x6dfd2284 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x6dfd3619 revert_creds +EXPORT_SYMBOL vmlinux 0x6e20d305 seq_release +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e39484e skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x6e4c85be blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x6e5133f2 mmc_erase +EXPORT_SYMBOL vmlinux 0x6e565451 fasync_helper +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e653f7e twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x6e665e87 pci_request_region +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7e5b1e ip_setsockopt +EXPORT_SYMBOL vmlinux 0x6e8d51d2 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x6e972f4c kernel_getsockname +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eb05c2d nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ed2e541 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x6ee7ae43 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x6f007c69 __napi_complete +EXPORT_SYMBOL vmlinux 0x6f0a797c from_kprojid +EXPORT_SYMBOL vmlinux 0x6f0e70af of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f20f2a4 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x6f258628 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x6f2974d1 replace_mount_options +EXPORT_SYMBOL vmlinux 0x6f335b2b bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x6f33cae9 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x6f3456a1 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x6f378403 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6f3a5535 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x6f4f1760 d_add_ci +EXPORT_SYMBOL vmlinux 0x6f5967fc sget +EXPORT_SYMBOL vmlinux 0x6f6be45f param_get_int +EXPORT_SYMBOL vmlinux 0x6f7d01c3 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fb58dd4 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x6fb9ba1a blk_run_queue +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ff2b771 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x70457533 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x7050a4a4 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70780381 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x70785ae6 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x707d782b sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708a0b73 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x70b63420 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x70c7c709 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x70d25ea6 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70dfd74d devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x70e7124b tcf_hash_check +EXPORT_SYMBOL vmlinux 0x70ec0c62 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x70f13398 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fc0ad3 invalidate_partition +EXPORT_SYMBOL vmlinux 0x71130b95 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ac53b tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7160c2ef tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x716ce507 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7172ea4c scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7177bf5f phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x7193ef10 phy_connect +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a95510 security_path_truncate +EXPORT_SYMBOL vmlinux 0x71adf40d __blk_end_request +EXPORT_SYMBOL vmlinux 0x71af48e4 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x71b96ccb of_n_size_cells +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x722641d5 page_waitqueue +EXPORT_SYMBOL vmlinux 0x7251e186 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x726c3fd2 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x72985166 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x72b06092 copy_from_iter +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72cead99 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72db7dba dev_printk +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7308f712 param_ops_byte +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7322dee2 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x732adab8 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7351c66b inet_release +EXPORT_SYMBOL vmlinux 0x735ad53f block_write_end +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x738b0bf4 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x738d9f6b blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x73979de6 atomic64_or +EXPORT_SYMBOL vmlinux 0x73a406c0 d_path +EXPORT_SYMBOL vmlinux 0x73b093c6 kill_bdev +EXPORT_SYMBOL vmlinux 0x73b38031 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x73bef322 vfs_llseek +EXPORT_SYMBOL vmlinux 0x73bf4355 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x73c04205 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x73d4eb01 lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x73d6f26a clear_nlink +EXPORT_SYMBOL vmlinux 0x73da808c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x73dfcbb5 pci_find_bus +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x7409ad40 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x7409d4af acl_by_type +EXPORT_SYMBOL vmlinux 0x741034c6 bio_advance +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74677f73 dev_close +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74730aaa register_console +EXPORT_SYMBOL vmlinux 0x747c8b22 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748937dd xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7492326d blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x74b7c4e5 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d496e0 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x74d98a5b phy_suspend +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74efadcd mmc_request_done +EXPORT_SYMBOL vmlinux 0x74f2931f md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x74fc2398 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x74fe253f devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751d18a8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x75277ae4 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75588ae4 f_setown +EXPORT_SYMBOL vmlinux 0x755fd73f inet_listen +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x758f3f38 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75a4b638 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x75b9860c truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c06468 backlight_force_update +EXPORT_SYMBOL vmlinux 0x75ca9280 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x75cb1aeb sock_wake_async +EXPORT_SYMBOL vmlinux 0x75cbcbbe scsi_register +EXPORT_SYMBOL vmlinux 0x75eec04a netif_rx_ni +EXPORT_SYMBOL vmlinux 0x75ef3f2b dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760f2cee blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x761e094c neigh_app_ns +EXPORT_SYMBOL vmlinux 0x76266ac0 of_device_register +EXPORT_SYMBOL vmlinux 0x76340aee generic_write_checks +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x766925c9 inet6_protos +EXPORT_SYMBOL vmlinux 0x766afbd4 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x767d6930 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76aab804 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x76bcada9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e42b95 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x76f5c24b mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x7714d962 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771e1955 kern_unmount +EXPORT_SYMBOL vmlinux 0x77278efa jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x772ee384 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x7741dc79 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x7741e97d tcp_req_err +EXPORT_SYMBOL vmlinux 0x77479428 iov_iter_init +EXPORT_SYMBOL vmlinux 0x7771d0f1 param_get_ulong +EXPORT_SYMBOL vmlinux 0x7778a690 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a8d5e3 fb_show_logo +EXPORT_SYMBOL vmlinux 0x77b69161 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x77bb2c01 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c40f86 mutex_trylock +EXPORT_SYMBOL vmlinux 0x77d49ca6 simple_follow_link +EXPORT_SYMBOL vmlinux 0x77de5d72 vga_con +EXPORT_SYMBOL vmlinux 0x77e1ab66 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x77e73d33 __devm_request_region +EXPORT_SYMBOL vmlinux 0x780a53e7 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x7816525d sock_create_lite +EXPORT_SYMBOL vmlinux 0x7821116e fsync_bdev +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x7834ad97 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x786fe02d vc_resize +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b32174 agp_backend_release +EXPORT_SYMBOL vmlinux 0x78d53309 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78f2e890 dst_alloc +EXPORT_SYMBOL vmlinux 0x790e927f blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x7933157a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x79345a5b of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x7943e63b __sock_create +EXPORT_SYMBOL vmlinux 0x794c2f84 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x7958ba67 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79769703 sync_inode +EXPORT_SYMBOL vmlinux 0x799afb1b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b2f175 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x79b9b762 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x79be4d05 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x79f9b06a jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x7a048f47 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x7a1b4725 vme_dma_request +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a3fb464 register_netdevice +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a572c5e of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x7a606bff pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x7a6f18a3 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x7a771f6b phy_attach_direct +EXPORT_SYMBOL vmlinux 0x7a8453d7 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x7a8c64a7 i2c_release_client +EXPORT_SYMBOL vmlinux 0x7a925983 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adc9d77 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af4e375 km_state_expired +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0fbdb8 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b8b6fe1 bdget_disk +EXPORT_SYMBOL vmlinux 0x7b9732df ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x7b9c46dc xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x7b9e74af devm_free_irq +EXPORT_SYMBOL vmlinux 0x7bbc9e5b netif_skb_features +EXPORT_SYMBOL vmlinux 0x7bc406c0 thaw_super +EXPORT_SYMBOL vmlinux 0x7bdd7e5f tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7be5dc1f netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x7bfa8d4d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c393d6c phy_device_register +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7480c1 __dax_fault +EXPORT_SYMBOL vmlinux 0x7c78d164 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x7c7e7bfa blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c9700ba tty_unlock +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbb5008 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x7cc1364d default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x7cd00cd0 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x7cd75abf eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x7cdc0061 keyring_clear +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cedc755 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfc608d abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3ef3a7 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d9bef10 of_phy_attach +EXPORT_SYMBOL vmlinux 0x7dbc0970 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7de2aa99 ppp_input +EXPORT_SYMBOL vmlinux 0x7de688ba devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df5ccbb proc_create_data +EXPORT_SYMBOL vmlinux 0x7e12e7d8 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x7e25c321 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x7e6c2d05 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x7e73c89b serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x7e78be6e xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8858bf dev_change_flags +EXPORT_SYMBOL vmlinux 0x7e97af5a set_security_override +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ecbed62 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x7ed15ed2 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x7ee03acf nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ee7fa72 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x7ef630c7 km_state_notify +EXPORT_SYMBOL vmlinux 0x7f003639 set_nlink +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f1bf106 of_get_address +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f39791c nd_integrity_init +EXPORT_SYMBOL vmlinux 0x7f5bb803 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x7f5f68d3 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f780d92 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x7f78ac1a blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x7f86bf00 dm_get_device +EXPORT_SYMBOL vmlinux 0x7f8a4028 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x7faeb879 tty_mutex +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff96291 of_device_unregister +EXPORT_SYMBOL vmlinux 0x801cb325 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x802d3c8d put_filp +EXPORT_SYMBOL vmlinux 0x803441d4 netdev_warn +EXPORT_SYMBOL vmlinux 0x8044f8fc nobh_writepage +EXPORT_SYMBOL vmlinux 0x80946d88 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x80bcc108 udp_prot +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80de03ea of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x80e1e77a write_inode_now +EXPORT_SYMBOL vmlinux 0x80f44c88 abort_creds +EXPORT_SYMBOL vmlinux 0x81020b76 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x8115e85d __vfs_read +EXPORT_SYMBOL vmlinux 0x8119bcc6 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x811d8001 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x8126ebab register_cdrom +EXPORT_SYMBOL vmlinux 0x81332cdf devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x8138c3f2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x81444191 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81596b54 iunique +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8165c67b truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x81701764 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x8170a211 param_set_charp +EXPORT_SYMBOL vmlinux 0x81816f6b security_inode_init_security +EXPORT_SYMBOL vmlinux 0x81993b98 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a9164e of_get_parent +EXPORT_SYMBOL vmlinux 0x81ba9d95 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ddd30d swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x81ddd64c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821ef4fa tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82327220 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x824cb46e netdev_err +EXPORT_SYMBOL vmlinux 0x82613152 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c4aeaf pci_set_master +EXPORT_SYMBOL vmlinux 0x82cd540a atomic64_and +EXPORT_SYMBOL vmlinux 0x82da9883 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x82e2291e phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x830a834b get_empty_filp +EXPORT_SYMBOL vmlinux 0x8314cb80 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x832752da elv_add_request +EXPORT_SYMBOL vmlinux 0x832d0dde agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x832fa791 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b3d6c2 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x83bbc20c xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c7c0eb pci_bus_put +EXPORT_SYMBOL vmlinux 0x83f5075a ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x83fd1559 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x841c7748 genphy_read_status +EXPORT_SYMBOL vmlinux 0x84281e27 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x843cc992 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x8458ac02 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x84940da5 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84c8af35 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x84da8751 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x84e9d5ea nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x84ea3c61 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x84fca028 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850f42bf blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x85187f13 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x8522a630 poll_freewait +EXPORT_SYMBOL vmlinux 0x854da8f7 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x85501b8d pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x85611457 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858c971e setup_new_exec +EXPORT_SYMBOL vmlinux 0x858eba63 genphy_update_link +EXPORT_SYMBOL vmlinux 0x859370ed scsi_dma_map +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b98a3f tcp_check_req +EXPORT_SYMBOL vmlinux 0x85c3f2d6 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x85cb017d copy_to_iter +EXPORT_SYMBOL vmlinux 0x85d0705c key_validate +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8605e653 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x86182550 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x8622c01d serio_close +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866c3306 drop_super +EXPORT_SYMBOL vmlinux 0x867a1675 udp_del_offload +EXPORT_SYMBOL vmlinux 0x867fe197 dcb_getapp +EXPORT_SYMBOL vmlinux 0x8685c5fb mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868d7470 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86b3d3dd scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x86d1cbe8 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x86d2f922 mmc_free_host +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fcfcc4 param_get_byte +EXPORT_SYMBOL vmlinux 0x87061a0d load_nls +EXPORT_SYMBOL vmlinux 0x870e1045 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x870f6894 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x87113f0b write_one_page +EXPORT_SYMBOL vmlinux 0x871a5a29 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8730167c ip_defrag +EXPORT_SYMBOL vmlinux 0x8740305b pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x8752b1f0 serio_bus +EXPORT_SYMBOL vmlinux 0x8760a3f3 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x876eb845 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x8775b8b7 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x8785c67a done_path_create +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87aed54f swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x87b56d30 seq_vprintf +EXPORT_SYMBOL vmlinux 0x87bb4e19 dquot_transfer +EXPORT_SYMBOL vmlinux 0x87d02a72 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x87dcede3 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x87f4b33e blk_free_tags +EXPORT_SYMBOL vmlinux 0x87f576c2 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x8816fe44 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x88369676 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x8845d37c override_creds +EXPORT_SYMBOL vmlinux 0x88467d5d dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x884a9c09 mpage_writepage +EXPORT_SYMBOL vmlinux 0x886ead23 PDE_DATA +EXPORT_SYMBOL vmlinux 0x8879a29c filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x88886157 dquot_file_open +EXPORT_SYMBOL vmlinux 0x889ffb70 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88b9c05b d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x88bf693d dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x88c73e9c of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892d9576 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x893ca885 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x893ccc68 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x894288d6 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x8957cee8 __free_pages +EXPORT_SYMBOL vmlinux 0x8966ca25 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x896fdb51 of_find_property +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8981b80a __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c6d0d6 dquot_commit +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89dc5124 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x89ecbeda mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x89f4a9c2 is_bad_inode +EXPORT_SYMBOL vmlinux 0x8a039cbc rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x8a12ef37 sock_edemux +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a340cbc locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x8a376dc8 genlmsg_put +EXPORT_SYMBOL vmlinux 0x8a45405d write_cache_pages +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a654d53 clear_user_page +EXPORT_SYMBOL vmlinux 0x8a65c5a7 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7f93bb file_path +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9e8591 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x8aa50fbb cfb_fillrect +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ad46d54 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8afe653f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x8b023422 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x8b13c04d rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x8b178308 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x8b18755c ipv4_specific +EXPORT_SYMBOL vmlinux 0x8b1d7ee8 nf_log_register +EXPORT_SYMBOL vmlinux 0x8b1f2a5f netdev_state_change +EXPORT_SYMBOL vmlinux 0x8b31ae06 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x8b3514bc agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b47f564 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x8b4dccec __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x8b5138cb crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x8b60e702 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8bc3fb87 vfs_readv +EXPORT_SYMBOL vmlinux 0x8be97f76 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf459a5 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8bf64101 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c2e1162 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x8c4b388e con_copy_unimap +EXPORT_SYMBOL vmlinux 0x8c4e2727 tso_count_descs +EXPORT_SYMBOL vmlinux 0x8c59eba3 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6da5c1 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x8c6f1ba5 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x8c6f81d7 get_cached_acl +EXPORT_SYMBOL vmlinux 0x8c979429 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cca2f01 inet6_release +EXPORT_SYMBOL vmlinux 0x8ce684b2 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x8cea82e4 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d0f1d70 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x8d1d30c1 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8d2bf0df scsi_unregister +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d880890 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8d9d5ea8 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x8dbebce3 dqget +EXPORT_SYMBOL vmlinux 0x8dc4fc39 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8dd95f6b inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x8ddee9b5 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8e1716ec __inet_hash +EXPORT_SYMBOL vmlinux 0x8e1beed8 bdi_init +EXPORT_SYMBOL vmlinux 0x8e230b34 tty_port_open +EXPORT_SYMBOL vmlinux 0x8e28f904 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x8e419d0c cdev_init +EXPORT_SYMBOL vmlinux 0x8e4337ee tty_name +EXPORT_SYMBOL vmlinux 0x8e482854 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x8e5e6e2f lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8eb253e6 lwtunnel_input +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ee18f15 inet_getname +EXPORT_SYMBOL vmlinux 0x8ee55597 posix_test_lock +EXPORT_SYMBOL vmlinux 0x8ef55cf1 __register_chrdev +EXPORT_SYMBOL vmlinux 0x8f1a550f mmc_of_parse +EXPORT_SYMBOL vmlinux 0x8f4355b2 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x8f5c9ea7 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x8f6687d2 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x8f685e38 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x8f78ee2d locks_copy_lock +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8c3a3a secpath_dup +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fbfefd4 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fd1e7d3 get_gendisk +EXPORT_SYMBOL vmlinux 0x8ff7444c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9001dfd6 update_region +EXPORT_SYMBOL vmlinux 0x902899b3 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x9041fdd5 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x90766cb9 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x907c59a9 dev_uc_del +EXPORT_SYMBOL vmlinux 0x90c0f687 simple_statfs +EXPORT_SYMBOL vmlinux 0x90c149ea ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90fa0697 unlock_page +EXPORT_SYMBOL vmlinux 0x9104e057 simple_empty +EXPORT_SYMBOL vmlinux 0x910519df __mdiobus_register +EXPORT_SYMBOL vmlinux 0x91109469 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x9117ec4e dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x911ac278 __seq_open_private +EXPORT_SYMBOL vmlinux 0x911dc908 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x91275f73 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914b596d vme_master_mmap +EXPORT_SYMBOL vmlinux 0x91579666 unload_nls +EXPORT_SYMBOL vmlinux 0x915a5998 kill_pid +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91655f08 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x916c2726 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91716f7c dquot_acquire +EXPORT_SYMBOL vmlinux 0x9173401b kill_anon_super +EXPORT_SYMBOL vmlinux 0x9184e7e5 lock_rename +EXPORT_SYMBOL vmlinux 0x918dfa89 simple_unlink +EXPORT_SYMBOL vmlinux 0x91909c4c genphy_config_init +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91a0cc2c install_exec_creds +EXPORT_SYMBOL vmlinux 0x91af0e96 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x91bf60eb sock_update_memcg +EXPORT_SYMBOL vmlinux 0x91c720f4 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x92030e50 try_to_release_page +EXPORT_SYMBOL vmlinux 0x9211b14f inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923c7851 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x925ceec2 bio_copy_data +EXPORT_SYMBOL vmlinux 0x928118f2 __bread_gfp +EXPORT_SYMBOL vmlinux 0x92973629 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x9298df28 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x929ffa31 prepare_binprm +EXPORT_SYMBOL vmlinux 0x92a04323 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92aa56bb inet_offloads +EXPORT_SYMBOL vmlinux 0x92be1673 devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x92beda8a init_special_inode +EXPORT_SYMBOL vmlinux 0x92eb3300 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x92f4d319 tty_vhangup +EXPORT_SYMBOL vmlinux 0x92f5d7fe I_BDEV +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9302e4f8 napi_get_frags +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x934d5de8 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x934fd6a6 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937ba1b2 udp_add_offload +EXPORT_SYMBOL vmlinux 0x937bf713 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x937de5e7 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x938269a4 param_get_uint +EXPORT_SYMBOL vmlinux 0x938b7380 __sb_start_write +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c37e21 irq_set_chip +EXPORT_SYMBOL vmlinux 0x93c6ac96 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x93ebc165 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9433c825 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x943c0ffd rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x9446337a dget_parent +EXPORT_SYMBOL vmlinux 0x944fd0be scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x947f130d seq_pad +EXPORT_SYMBOL vmlinux 0x948ba6d2 ip6_xmit +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94979653 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x949baf0d tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94ca3070 pci_get_device +EXPORT_SYMBOL vmlinux 0x94d53e4d add_disk +EXPORT_SYMBOL vmlinux 0x94daabfc scsi_ioctl +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94fd8a28 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9510f6ff tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95513dac bdget +EXPORT_SYMBOL vmlinux 0x95548e14 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x95720317 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x95972c29 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x95ac89a2 inet_accept +EXPORT_SYMBOL vmlinux 0x95af5907 dquot_destroy +EXPORT_SYMBOL vmlinux 0x95b6978f blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961364b6 scsi_device_get +EXPORT_SYMBOL vmlinux 0x96138f7e qdisc_list_del +EXPORT_SYMBOL vmlinux 0x96148d47 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x96378dcd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x963901e1 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x963bbbd9 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9674c913 dump_page +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x967ffac3 make_kuid +EXPORT_SYMBOL vmlinux 0x96822ec5 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96899d18 __scm_send +EXPORT_SYMBOL vmlinux 0x969fdd9c of_translate_address +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cd4a24 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x96dd3e0e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x96f0154d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x96f999b8 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9734581b netdev_notice +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975b0810 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x976a5ab8 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x9778b052 param_get_charp +EXPORT_SYMBOL vmlinux 0x977e6cd0 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x977f1769 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x979334b5 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97c9c094 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x97ed6619 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x98007a96 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x980bc012 md_flush_request +EXPORT_SYMBOL vmlinux 0x9814c7a5 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x9815d2aa neigh_table_init +EXPORT_SYMBOL vmlinux 0x981bc733 serio_reconnect +EXPORT_SYMBOL vmlinux 0x9825961f blk_end_request_all +EXPORT_SYMBOL vmlinux 0x98270b36 padata_do_serial +EXPORT_SYMBOL vmlinux 0x9830b659 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x9832028f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x984a772b input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x9868425a tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98ce68a4 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x98d2b2b1 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x98da16cc blk_finish_request +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98f58a49 elv_rb_add +EXPORT_SYMBOL vmlinux 0x98f8fe71 kern_path_create +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x98ff0307 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x99078756 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x9921cd7a pci_pme_active +EXPORT_SYMBOL vmlinux 0x9937e2ff __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x994e461f seq_path +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9974943c devm_gpio_free +EXPORT_SYMBOL vmlinux 0x99778a13 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x997ce65f single_open +EXPORT_SYMBOL vmlinux 0x998b05c5 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99969e29 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x9996b72a inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a79a0b __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d19b96 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x99d3519c call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x99d790f6 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x99fb096c iget5_locked +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a25d643 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9a268c38 read_code +EXPORT_SYMBOL vmlinux 0x9a366da0 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x9a4f4c93 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x9a518633 vfs_writef +EXPORT_SYMBOL vmlinux 0x9a610933 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x9a798a12 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x9a827e3e security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x9a8647f5 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x9a973a78 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x9aacb1ba blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x9abae554 pci_request_regions +EXPORT_SYMBOL vmlinux 0x9acd0514 param_ops_long +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afa9c0b kernel_read +EXPORT_SYMBOL vmlinux 0x9b2d8e3f balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b353bba __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b40bfcd tty_do_resize +EXPORT_SYMBOL vmlinux 0x9b469b9b alloc_fddidev +EXPORT_SYMBOL vmlinux 0x9b5037e9 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x9b570f9f follow_down +EXPORT_SYMBOL vmlinux 0x9b616429 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b7cbd1d iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x9b848487 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x9b8d40dd inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bcb8a61 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x9bccf94f mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x9bd343d2 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x9be22c1a unregister_filesystem +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0723a7 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x9c0dc119 skb_copy +EXPORT_SYMBOL vmlinux 0x9c1ee373 param_set_ullong +EXPORT_SYMBOL vmlinux 0x9c2c48f7 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x9c35bae6 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x9c4122e5 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c963f85 agp_bridge +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cae0b64 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x9cb1aabd mount_bdev +EXPORT_SYMBOL vmlinux 0x9cb6b1be __mutex_init +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9cedf7e9 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d122e95 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1d8b6c mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x9d25ba92 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x9d2c4ccd skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d1293 kunmap_high +EXPORT_SYMBOL vmlinux 0x9d5069c6 param_set_uint +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d78457b iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d9ddc71 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9dad8dbb skb_checksum +EXPORT_SYMBOL vmlinux 0x9dd5a0aa bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x9ddb9c2d fifo_set_limit +EXPORT_SYMBOL vmlinux 0x9ddc84af blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x9de67da8 d_instantiate +EXPORT_SYMBOL vmlinux 0x9de93301 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9df00d83 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x9df8d296 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x9dfc84b1 bh_submit_read +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e24ee23 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x9e2c3cfa netif_rx +EXPORT_SYMBOL vmlinux 0x9e2fe094 iterate_mounts +EXPORT_SYMBOL vmlinux 0x9e327d32 send_sig_info +EXPORT_SYMBOL vmlinux 0x9e3c8fcd should_remove_suid +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5646ae blk_stop_queue +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e9f7374 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea48742 mmc_release_host +EXPORT_SYMBOL vmlinux 0x9eb175c2 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecee591 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x9ed41eb9 udp_seq_open +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9efe1133 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9f0a3590 skb_push +EXPORT_SYMBOL vmlinux 0x9f111720 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x9f175778 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9f1f6a73 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x9f44ee5a pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4819a1 dev_addr_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fde848b may_umount +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0235870 dev_mc_init +EXPORT_SYMBOL vmlinux 0xa0325c3e input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xa040594e blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa072f8a0 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xa077e31d of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa08365f5 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa09cd096 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xa0aa6b40 to_nd_btt +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bd4348 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xa0d8d344 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0efd262 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff2edb udp_set_csum +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1166439 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1305190 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xa13cac3a local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa155b2d6 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xa15f962c _dev_info +EXPORT_SYMBOL vmlinux 0xa1887c96 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xa1921693 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xa1af0603 make_kprojid +EXPORT_SYMBOL vmlinux 0xa1b12453 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1d45e07 seq_write +EXPORT_SYMBOL vmlinux 0xa1d64923 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f3f516 ps2_drain +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa203271f agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20b7604 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xa2181542 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xa26891e2 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa284e39c dev_alloc_name +EXPORT_SYMBOL vmlinux 0xa28d428b udp6_set_csum +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2d153df lock_sock_nested +EXPORT_SYMBOL vmlinux 0xa2d2d515 generic_setlease +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa33b625c d_tmpfile +EXPORT_SYMBOL vmlinux 0xa34bb056 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xa358291b i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xa36645fb inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xa37e7b17 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3ae76df ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xa3e48875 page_symlink +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3f378b2 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xa4049386 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xa41e2b24 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43d55a3 set_blocksize +EXPORT_SYMBOL vmlinux 0xa44177ad mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xa447c683 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xa44dd74c sock_i_uid +EXPORT_SYMBOL vmlinux 0xa451f00f scsi_remove_target +EXPORT_SYMBOL vmlinux 0xa4585e45 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47329ec mdiobus_read +EXPORT_SYMBOL vmlinux 0xa4a06787 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b4f537 __page_symlink +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bfeb3d elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xa4c0dc19 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xa4c569b9 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d8b0bf pagecache_get_page +EXPORT_SYMBOL vmlinux 0xa50d043c elevator_exit +EXPORT_SYMBOL vmlinux 0xa50f9b54 free_buffer_head +EXPORT_SYMBOL vmlinux 0xa51ac295 ether_setup +EXPORT_SYMBOL vmlinux 0xa51b6cfc nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xa5371aca of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa543ad3e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa552bbf6 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xa5640b46 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa581a49b xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59ec1d0 tty_register_device +EXPORT_SYMBOL vmlinux 0xa5a514b9 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xa5aaf7d3 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xa5edef26 submit_bio +EXPORT_SYMBOL vmlinux 0xa5f41031 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xa5f969f0 mount_pseudo +EXPORT_SYMBOL vmlinux 0xa6116d41 of_clk_get +EXPORT_SYMBOL vmlinux 0xa61deb84 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xa6391e6d sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xa6575924 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65bc385 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xa6720ab0 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69b4311 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xa6b2c189 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xa6d1f867 dev_uc_add +EXPORT_SYMBOL vmlinux 0xa6e93212 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70575f8 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xa705a888 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xa71130ea pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7305592 vm_insert_page +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa739e27e sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa73fcc5d bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7abc23f netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xa7b62998 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xa7b75c62 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa7ffa479 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xa801ee32 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xa803c83e dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xa812d434 generic_perform_write +EXPORT_SYMBOL vmlinux 0xa819d4c8 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa8213058 sg_miter_start +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8586142 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8724440 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xa887da69 fb_set_var +EXPORT_SYMBOL vmlinux 0xa88d17d3 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8995c95 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xa8abdf9a tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xa8b890b7 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xa8f1a58f max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9219d2d nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92e55a5 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xa932d515 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa960a625 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xa9612fe7 serio_interrupt +EXPORT_SYMBOL vmlinux 0xa966598c sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa986d6ba d_invalidate +EXPORT_SYMBOL vmlinux 0xa98b6eff nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xa99ea3c4 console_stop +EXPORT_SYMBOL vmlinux 0xa99febc3 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xa9c12811 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c80fda sock_setsockopt +EXPORT_SYMBOL vmlinux 0xa9cc7c6e tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xa9d1ce01 param_set_short +EXPORT_SYMBOL vmlinux 0xa9e84c83 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xa9ee8ba1 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xa9f7b4ae cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xa9fa12b5 input_register_handler +EXPORT_SYMBOL vmlinux 0xaa064740 ppp_input_error +EXPORT_SYMBOL vmlinux 0xaa0bbb1e mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xaa185cb1 request_firmware +EXPORT_SYMBOL vmlinux 0xaa30881b local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0xaa3af6a9 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa717dd1 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xaa7b8e75 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xaaa504d4 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadaa3c7 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab228e31 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0xab2bc93c dquot_resume +EXPORT_SYMBOL vmlinux 0xab2f5ef4 __kfree_skb +EXPORT_SYMBOL vmlinux 0xab4a5159 register_key_type +EXPORT_SYMBOL vmlinux 0xab56723d dm_io +EXPORT_SYMBOL vmlinux 0xab576bc3 make_kgid +EXPORT_SYMBOL vmlinux 0xab620f90 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6e2324 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabaeb06d csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xabb606c0 param_get_string +EXPORT_SYMBOL vmlinux 0xabbacd0c blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd01dea eth_header_parse +EXPORT_SYMBOL vmlinux 0xabef22d8 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac022d4f poll_initwait +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac150892 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac202a5d iterate_fd +EXPORT_SYMBOL vmlinux 0xac204b4d sock_no_listen +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac2e97db wake_up_process +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xac4ed5c2 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xac7c880a netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacc6a927 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace76f10 flow_cache_init +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0abca6 sock_no_connect +EXPORT_SYMBOL vmlinux 0xad215ac2 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xad33030e cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xad34337d i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xad356eaa alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xad547243 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xad5c2fd4 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xad624481 md_integrity_register +EXPORT_SYMBOL vmlinux 0xad6bc505 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xad7f6876 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xadab80cc __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadea87f2 vme_slave_request +EXPORT_SYMBOL vmlinux 0xadeac9c2 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae034e4a blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xae29a7b3 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae438409 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xae44b72f dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae598f5f rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xae74d441 nf_reinject +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7aa3a1 kobject_put +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xaebdc0e0 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xaec618d6 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeea64bf nvm_get_blk +EXPORT_SYMBOL vmlinux 0xaf008dae softnet_data +EXPORT_SYMBOL vmlinux 0xaf01bc9c pci_match_id +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf2a55dc block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf42e1bb kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xaf64936f inet_shutdown +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafb0fd09 gen_pool_create +EXPORT_SYMBOL vmlinux 0xafb4685d agp_create_memory +EXPORT_SYMBOL vmlinux 0xafcdacf0 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xafdbd5b2 get_phy_device +EXPORT_SYMBOL vmlinux 0xafe2baa0 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0095317 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xb013c1c2 dev_alert +EXPORT_SYMBOL vmlinux 0xb02ecdd8 skb_trim +EXPORT_SYMBOL vmlinux 0xb03431f3 freeze_bdev +EXPORT_SYMBOL vmlinux 0xb03cf1c3 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb052e6b7 generic_writepages +EXPORT_SYMBOL vmlinux 0xb053599b scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb067a584 param_set_int +EXPORT_SYMBOL vmlinux 0xb06b84ec nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb08e321f of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a91d08 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xb0aca3a1 dev_addr_add +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0c7e024 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xb0d74f86 d_obtain_root +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f29264 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xb11b7fcf param_get_ushort +EXPORT_SYMBOL vmlinux 0xb127a4bb vfs_create +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13e6747 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xb146836c dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xb1471396 sys_imageblit +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15d2a54 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb169a90a param_set_copystring +EXPORT_SYMBOL vmlinux 0xb1873ce3 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xb1a0b231 netdev_update_features +EXPORT_SYMBOL vmlinux 0xb1ad3d96 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1dd34c4 input_set_capability +EXPORT_SYMBOL vmlinux 0xb1e4eca1 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb1f88908 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb2012c46 __kernel_write +EXPORT_SYMBOL vmlinux 0xb206570b mach_corenet_generic +EXPORT_SYMBOL vmlinux 0xb20ea529 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xb2145109 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb23d6f46 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xb23fdb76 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2762e1f is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xb28440a6 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xb2ad684f security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c5bb7f blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xb2d1b777 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2dd508f scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xb2f1b235 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb2f438dc scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xb30259fc tty_hangup +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb32f8ffc bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb338c796 sock_register +EXPORT_SYMBOL vmlinux 0xb367033f inet_del_offload +EXPORT_SYMBOL vmlinux 0xb37abda9 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xb3b9eea9 param_ops_uint +EXPORT_SYMBOL vmlinux 0xb3cedb0e input_set_keycode +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fbe7d0 eth_type_trans +EXPORT_SYMBOL vmlinux 0xb3fef6ce agp_bind_memory +EXPORT_SYMBOL vmlinux 0xb4167773 freeze_super +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb447c80b find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb461303a __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xb4692d75 set_bh_page +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4968ff9 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xb49829a3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xb49afa91 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb4a0782c mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xb4d3e25a put_disk +EXPORT_SYMBOL vmlinux 0xb4dff9b2 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xb4ed7d10 block_truncate_page +EXPORT_SYMBOL vmlinux 0xb51dde82 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xb5209e2d xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5dc4cab netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xb5ee6c9b pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb631f2dd uart_suspend_port +EXPORT_SYMBOL vmlinux 0xb6619bd9 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xb6713931 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68e5f1f pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb694dde4 proto_unregister +EXPORT_SYMBOL vmlinux 0xb6a131c7 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c81119 dev_driver_string +EXPORT_SYMBOL vmlinux 0xb6dc3a37 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xb6e2f784 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xb6f3187f inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xb6f3a0df mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xb70c1591 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xb71fd091 dst_destroy +EXPORT_SYMBOL vmlinux 0xb72755eb nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74f0d9d is_nd_btt +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb75c57ab ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xb763aa0c __serio_register_port +EXPORT_SYMBOL vmlinux 0xb769f0dc genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb776939c blk_register_region +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7be0be5 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xb7bf9dce qdisc_list_add +EXPORT_SYMBOL vmlinux 0xb7c20c3b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xb7c57b8d pci_bus_get +EXPORT_SYMBOL vmlinux 0xb7ec3218 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xb801c557 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xb804c68e cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8198c5b skb_append +EXPORT_SYMBOL vmlinux 0xb8269c8e gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xb82fe156 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xb832f62a jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb847cd18 input_unregister_device +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8833d79 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb88cbf0d module_layout +EXPORT_SYMBOL vmlinux 0xb892a528 vga_put +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8c35fe5 datagram_poll +EXPORT_SYMBOL vmlinux 0xb8d8078b pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f6cfd7 netdev_info +EXPORT_SYMBOL vmlinux 0xb900394a clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xb901d15c param_get_ullong +EXPORT_SYMBOL vmlinux 0xb904bb3d fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xb9417cc2 nf_register_hook +EXPORT_SYMBOL vmlinux 0xb94b728e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xb9642c4e nlmsg_notify +EXPORT_SYMBOL vmlinux 0xb967dda2 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xb989a065 iget_locked +EXPORT_SYMBOL vmlinux 0xb995f3d3 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xb9b13f4b mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xb9b725c6 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xb9ba5383 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xb9d14006 dev_open +EXPORT_SYMBOL vmlinux 0xb9e29d53 d_walk +EXPORT_SYMBOL vmlinux 0xb9e75a84 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f4dce0 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb9ff6102 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xba13264f d_make_root +EXPORT_SYMBOL vmlinux 0xba1abfe6 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xba24a53f mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xba360808 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xba42090f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4f6bd0 dcache_readdir +EXPORT_SYMBOL vmlinux 0xba6695b3 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xba8dcd73 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xba9cc270 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xbabc940a input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xbabd1b2b devm_ioport_map +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbad4991a remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xbaed4281 i2c_use_client +EXPORT_SYMBOL vmlinux 0xbafa39cf request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb1f9292 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb52b4e0 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba506d1 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xbbb86607 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xbbc9a27b __sb_end_write +EXPORT_SYMBOL vmlinux 0xbbcb30f8 nvm_end_io +EXPORT_SYMBOL vmlinux 0xbbdbca24 dm_register_target +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbbfe754c bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbbfe8b42 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xbc0050ec dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xbc059938 dm_put_device +EXPORT_SYMBOL vmlinux 0xbc0e0160 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xbc0f0b14 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xbc1dcbfe dev_activate +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc55a421 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbc5c877c sockfd_lookup +EXPORT_SYMBOL vmlinux 0xbc75de66 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xbc879122 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xbc8b58d9 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xbca1615f unregister_binfmt +EXPORT_SYMBOL vmlinux 0xbcadad1b vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xbcaef133 dquot_release +EXPORT_SYMBOL vmlinux 0xbcb7c351 proc_mkdir +EXPORT_SYMBOL vmlinux 0xbcb8c6e8 udp_disconnect +EXPORT_SYMBOL vmlinux 0xbcbc28bf ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcdfb9cf key_link +EXPORT_SYMBOL vmlinux 0xbce09d96 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xbcff085b ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xbd34baca devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xbd5a6281 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d7f52 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xbd8f67f9 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdebc01b iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe190b52 proc_set_user +EXPORT_SYMBOL vmlinux 0xbe1965dd sk_common_release +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe69911b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xbe6da120 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xbe779356 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xbe9defc0 blk_queue_split +EXPORT_SYMBOL vmlinux 0xbec5d6da simple_rename +EXPORT_SYMBOL vmlinux 0xbec70de8 padata_start +EXPORT_SYMBOL vmlinux 0xbed09624 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef5d96b inet_frag_kill +EXPORT_SYMBOL vmlinux 0xbef73372 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xbef7e5ba ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xbf11ff49 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf148207 pci_restore_state +EXPORT_SYMBOL vmlinux 0xbf16a15c dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xbf3715e8 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xbf4a2dd4 do_splice_direct +EXPORT_SYMBOL vmlinux 0xbf4c6abc icmpv6_send +EXPORT_SYMBOL vmlinux 0xbf558216 skb_tx_error +EXPORT_SYMBOL vmlinux 0xbf5b6f81 sock_no_accept +EXPORT_SYMBOL vmlinux 0xbf5bac34 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xbf6aa936 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xbf6d06b6 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xbf767471 unregister_netdev +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfbe3430 vc_cons +EXPORT_SYMBOL vmlinux 0xbfc05917 mntget +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc74d09 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xbfec339d __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffa77f8 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xc066af62 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06ec93e tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xc06f2ae7 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0849275 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xc08ff87c mpage_readpages +EXPORT_SYMBOL vmlinux 0xc09ff14b xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ac7523 dma_pool_create +EXPORT_SYMBOL vmlinux 0xc0be8c69 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xc0cf4285 simple_write_end +EXPORT_SYMBOL vmlinux 0xc0e04cf3 arp_tbl +EXPORT_SYMBOL vmlinux 0xc0e1c479 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc0f59645 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xc0fbf9de pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc1094dc8 downgrade_write +EXPORT_SYMBOL vmlinux 0xc11becaa iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xc11cc6a1 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc123eb2f from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc17cd7e5 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc1a64de6 simple_open +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f22e82 kmap_high +EXPORT_SYMBOL vmlinux 0xc1f518a8 block_commit_write +EXPORT_SYMBOL vmlinux 0xc2008129 dev_mc_del +EXPORT_SYMBOL vmlinux 0xc203b06e nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2463ee1 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc26bd730 dentry_unhash +EXPORT_SYMBOL vmlinux 0xc274783c __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xc2840fbe __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2c0b7c8 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e6225f __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc2f17e5f dcache_dir_open +EXPORT_SYMBOL vmlinux 0xc2fa0175 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xc30fd4dd tty_port_init +EXPORT_SYMBOL vmlinux 0xc325c2bf tcp_seq_open +EXPORT_SYMBOL vmlinux 0xc33d9aa0 soft_cursor +EXPORT_SYMBOL vmlinux 0xc3550b8e of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xc3658e5a dev_addr_del +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc37c7a8d d_genocide +EXPORT_SYMBOL vmlinux 0xc3909490 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc39632d4 generic_setxattr +EXPORT_SYMBOL vmlinux 0xc3a4f6fa dev_remove_offload +EXPORT_SYMBOL vmlinux 0xc3b00224 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3de2828 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xc3e60006 sock_i_ino +EXPORT_SYMBOL vmlinux 0xc3e620ce __devm_release_region +EXPORT_SYMBOL vmlinux 0xc3f7d872 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xc402da3e twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xc406393a pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc42a31d8 dev_get_flags +EXPORT_SYMBOL vmlinux 0xc42b1524 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xc42e2e16 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48241ac dm_put_table_device +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4aec532 led_blink_set +EXPORT_SYMBOL vmlinux 0xc4b2c026 fput +EXPORT_SYMBOL vmlinux 0xc4d4dddf sys_fillrect +EXPORT_SYMBOL vmlinux 0xc4ef6836 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc50e8fd0 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xc510ad32 pci_enable_device +EXPORT_SYMBOL vmlinux 0xc527d42c bio_init +EXPORT_SYMBOL vmlinux 0xc52b6a68 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xc544d15a vfs_readf +EXPORT_SYMBOL vmlinux 0xc550e24e mfd_add_devices +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56b896d setattr_copy +EXPORT_SYMBOL vmlinux 0xc56ddcd4 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xc58d335d mach_ppa8548 +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b99f84 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ed50b5 padata_free +EXPORT_SYMBOL vmlinux 0xc5f27887 agp_copy_info +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc61e9955 down_write +EXPORT_SYMBOL vmlinux 0xc62b8b71 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6381ae2 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xc63a3ca3 input_flush_device +EXPORT_SYMBOL vmlinux 0xc64c962a iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc675161c mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xc677e00a of_phy_find_device +EXPORT_SYMBOL vmlinux 0xc6819c9a __lock_buffer +EXPORT_SYMBOL vmlinux 0xc6a79d24 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b62fb5 input_inject_event +EXPORT_SYMBOL vmlinux 0xc6c012b7 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d45b76 __module_get +EXPORT_SYMBOL vmlinux 0xc6dbc1b4 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xc6defe0b seq_release_private +EXPORT_SYMBOL vmlinux 0xc6e40356 __skb_checksum +EXPORT_SYMBOL vmlinux 0xc6fd6be6 ihold +EXPORT_SYMBOL vmlinux 0xc70425d2 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xc71357a2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xc71e5b94 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7210aca seq_lseek +EXPORT_SYMBOL vmlinux 0xc74b7e95 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75daec0 misc_deregister +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79fd87d kernel_accept +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c0977c shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xc7c49353 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xc7cb0889 param_ops_bool +EXPORT_SYMBOL vmlinux 0xc7cee1c5 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc7e4522f param_ops_invbool +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8003039 sock_release +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82b42c8 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xc8322368 read_cache_page +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8522eb1 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc866d288 inet_select_addr +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89e9249 pipe_unlock +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b60f4a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc8b8f4c9 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xc8e4a3c2 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc8eb6cfe machine_id +EXPORT_SYMBOL vmlinux 0xc8f4635e inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xc90dc137 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9157f85 __check_sticky +EXPORT_SYMBOL vmlinux 0xc928dc23 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xc92cd0a2 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xc92efddf get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xc930e79b devm_request_resource +EXPORT_SYMBOL vmlinux 0xc93b2084 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9694e5d pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xc983c545 param_ops_string +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a8b998 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc9c1514e skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xc9d633cb netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xc9ee78b0 scsi_init_io +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca2bf27a scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca6c0fd7 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xca81bd0a netif_device_detach +EXPORT_SYMBOL vmlinux 0xca843c33 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xca843e32 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9ac006 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xcab61cb9 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad392c8 alloc_file +EXPORT_SYMBOL vmlinux 0xcadd5c5c skb_seq_read +EXPORT_SYMBOL vmlinux 0xcae4ec94 blk_start_request +EXPORT_SYMBOL vmlinux 0xcae997d6 sk_dst_check +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf9943c nonseekable_open +EXPORT_SYMBOL vmlinux 0xcafb23a6 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb21efd2 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xcb3df009 blk_get_queue +EXPORT_SYMBOL vmlinux 0xcb46f94c eth_change_mtu +EXPORT_SYMBOL vmlinux 0xcb480b9d nf_afinfo +EXPORT_SYMBOL vmlinux 0xcb525c64 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xcb6c9f84 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xcb6f6340 dst_release +EXPORT_SYMBOL vmlinux 0xcb731109 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xcb7f8f9a blk_execute_rq +EXPORT_SYMBOL vmlinux 0xcb971f16 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xcb9d84a2 blk_put_request +EXPORT_SYMBOL vmlinux 0xcba8b314 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbdd6ee8 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xcbdf3e46 param_set_long +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbf08c9f msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xcbf99d63 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xcbf99f35 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1a41b3 pci_save_state +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc44cc28 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xcc4f9361 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc570221 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xcc5ad692 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xccabfe27 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xccbe0bbe param_ops_ushort +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc7642b try_module_get +EXPORT_SYMBOL vmlinux 0xccf5237d security_inode_permission +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0abf5d dquot_operations +EXPORT_SYMBOL vmlinux 0xcd13dc7c ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2e8fc9 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xcd646b9d neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xcd770f83 sk_wait_data +EXPORT_SYMBOL vmlinux 0xcd7c341c submit_bh +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8e5b62 devm_memremap +EXPORT_SYMBOL vmlinux 0xcd95f538 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xcdb02cde tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xce07e540 skb_find_text +EXPORT_SYMBOL vmlinux 0xce07fa15 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3a7316 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xce54eb20 km_policy_expired +EXPORT_SYMBOL vmlinux 0xce594c0f default_file_splice_read +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5d9d99 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xce5f5ea3 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xce646610 vmap +EXPORT_SYMBOL vmlinux 0xce7e4536 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xce948fd5 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xce9a5862 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xce9c4e7e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xcea4f069 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb5ae8c kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xcec2d469 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xced16237 blk_complete_request +EXPORT_SYMBOL vmlinux 0xced6fee1 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefaf72d mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf023901 pci_get_slot +EXPORT_SYMBOL vmlinux 0xcf0a24cd param_ops_short +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf3068f7 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xcf37f2c4 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xcf493388 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xcf637d3c tcp_connect +EXPORT_SYMBOL vmlinux 0xcf6a8ffb get_disk +EXPORT_SYMBOL vmlinux 0xcf80b649 seq_escape +EXPORT_SYMBOL vmlinux 0xcfd6a828 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xcfde759c of_node_put +EXPORT_SYMBOL vmlinux 0xd003f6b3 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xd00beb00 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xd01c8466 tty_check_change +EXPORT_SYMBOL vmlinux 0xd01f8884 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xd0385d20 param_set_bint +EXPORT_SYMBOL vmlinux 0xd052f1ca devm_clk_get +EXPORT_SYMBOL vmlinux 0xd0600e92 get_agp_version +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd076d06a of_get_next_parent +EXPORT_SYMBOL vmlinux 0xd08b6f71 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd08cdd98 mpage_readpage +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0acaef3 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1030c40 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xd1236672 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xd1459dcb pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd145ad71 d_splice_alias +EXPORT_SYMBOL vmlinux 0xd17fa7d2 dcb_setapp +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1864b63 dev_set_group +EXPORT_SYMBOL vmlinux 0xd18b3d36 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a98518 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xd1b666bb ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd1c5c8af netlink_capable +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d37947 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e10f9b kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1e422c5 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xd21c9c34 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xd223685d seq_read +EXPORT_SYMBOL vmlinux 0xd23c6e12 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26674af seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd29aafaf bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xd29cfe78 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd2aca251 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xd2ad3c78 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b90314 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xd2bcc9ff mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xd2c5c006 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd2c83540 phy_driver_register +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2db248a of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd3175f79 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd340fbae agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xd36c7677 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd3774484 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xd39d2ce4 kernel_bind +EXPORT_SYMBOL vmlinux 0xd3b05608 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3d51cdc kernel_connect +EXPORT_SYMBOL vmlinux 0xd3e6aa73 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd3f05d85 nvm_register_target +EXPORT_SYMBOL vmlinux 0xd3f8afd2 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xd41431f2 input_register_device +EXPORT_SYMBOL vmlinux 0xd420db90 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xd43ffbf6 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xd4422ae6 bdgrab +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd460f0b8 do_splice_from +EXPORT_SYMBOL vmlinux 0xd466c28b vfs_fsync +EXPORT_SYMBOL vmlinux 0xd47f795a tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd499a2b1 __d_drop +EXPORT_SYMBOL vmlinux 0xd49ccff1 __netif_schedule +EXPORT_SYMBOL vmlinux 0xd4ae93f5 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd4c9fd9c alloc_disk +EXPORT_SYMBOL vmlinux 0xd4eb3f51 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd4fd3a37 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xd51ce8d9 put_tty_driver +EXPORT_SYMBOL vmlinux 0xd5277970 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xd52855c1 pci_get_class +EXPORT_SYMBOL vmlinux 0xd53503fc tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5516601 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xd5563352 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xd55a44cd param_get_short +EXPORT_SYMBOL vmlinux 0xd58722f9 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd59c3c7f unregister_nls +EXPORT_SYMBOL vmlinux 0xd5b6dbc5 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xd5cbd78b page_follow_link_light +EXPORT_SYMBOL vmlinux 0xd5d25a9f jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd5d93f5e genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xd5e3fe71 get_user_pages +EXPORT_SYMBOL vmlinux 0xd5e5b1d5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5eb143a blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5fce7ba mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6210ad8 dev_add_offload +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd6275fc7 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xd62a72c9 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62e12da neigh_for_each +EXPORT_SYMBOL vmlinux 0xd63cfa1b get_super +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6501ca0 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xd650a828 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xd664393e get_tz_trend +EXPORT_SYMBOL vmlinux 0xd668dc7c ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69a10bb sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6aef672 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xd6b10f00 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd721d703 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xd7320b62 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd74629aa inet_register_protosw +EXPORT_SYMBOL vmlinux 0xd75b8b86 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77da3e1 arp_xmit +EXPORT_SYMBOL vmlinux 0xd78927af key_revoke +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7bd17be free_page_put_link +EXPORT_SYMBOL vmlinux 0xd7cdea56 vme_lm_request +EXPORT_SYMBOL vmlinux 0xd7d4b087 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd7e346b1 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e6793c mmc_add_host +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f08270 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xd7fa00ca serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xd82c3712 twl6040_power +EXPORT_SYMBOL vmlinux 0xd83987d9 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xd845b27e netlink_set_err +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd870f688 input_open_device +EXPORT_SYMBOL vmlinux 0xd8768d58 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xd8825db0 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xd8976288 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a1029e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bbb19b jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xd8c0f944 irq_to_desc +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f45516 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd90f138e blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xd9359e7b security_mmap_file +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd95d224f down_read +EXPORT_SYMBOL vmlinux 0xd966ddc2 __do_once_done +EXPORT_SYMBOL vmlinux 0xd968f917 set_disk_ro +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9989178 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xd9b1b3ae blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda2df04a swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xda3a4383 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4b570f icmp_send +EXPORT_SYMBOL vmlinux 0xda5c8b18 mach_twr_p1025 +EXPORT_SYMBOL vmlinux 0xda5d220f bio_reset +EXPORT_SYMBOL vmlinux 0xda645248 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xda71ff61 vga_get +EXPORT_SYMBOL vmlinux 0xda796eb1 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda981bf0 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xda9e4289 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdab7c89f proc_set_size +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad7fd76 lookup_bdev +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb023fb5 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xdb114507 make_bad_inode +EXPORT_SYMBOL vmlinux 0xdb4c7199 redraw_screen +EXPORT_SYMBOL vmlinux 0xdb544f91 key_task_permission +EXPORT_SYMBOL vmlinux 0xdb67a7cd fb_find_mode +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8540fa rtnl_create_link +EXPORT_SYMBOL vmlinux 0xdb90ca88 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xdb934580 of_match_node +EXPORT_SYMBOL vmlinux 0xdbc8371e read_cache_pages +EXPORT_SYMBOL vmlinux 0xdbef6ee9 proc_symlink +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc1481a9 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc214961 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xdc2c940e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xdc3781cb pci_choose_state +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc46a8ed tcf_action_exec +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5551a9 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xdc601bde iov_iter_npages +EXPORT_SYMBOL vmlinux 0xdc91c4bc pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xdc91cde7 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc986411 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcd8bdf4 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xdcdae26b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xdcfad9d6 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0b469c inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2cc0b2 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xdd35922e inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xdd3b0d12 pci_iounmap +EXPORT_SYMBOL vmlinux 0xdd62107b sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xdd69a310 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xdd7b5b7d pcim_iomap +EXPORT_SYMBOL vmlinux 0xdd86927b dump_skip +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdda76bbb md_done_sync +EXPORT_SYMBOL vmlinux 0xdddddbcc mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xddfd89b2 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde597165 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xde6ff5fb pci_dev_put +EXPORT_SYMBOL vmlinux 0xde7714f2 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xde855ea3 simple_dname +EXPORT_SYMBOL vmlinux 0xde8691e6 vme_master_request +EXPORT_SYMBOL vmlinux 0xde8cee36 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde946aa4 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9c0c8c uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xde9ea899 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xdea2d826 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xdea68c23 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xdead52ce max8925_reg_write +EXPORT_SYMBOL vmlinux 0xdec06390 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xdecf3dae scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdeea6408 noop_fsync +EXPORT_SYMBOL vmlinux 0xdf07008b dput +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf410707 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xdf459287 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5d6ba0 __lock_page +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6e2ae1 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xdf78bb2e nf_ct_attach +EXPORT_SYMBOL vmlinux 0xdf817d52 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xdf8a9436 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfa82d20 blk_rq_init +EXPORT_SYMBOL vmlinux 0xdfa92f00 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xdfad8aca follow_up +EXPORT_SYMBOL vmlinux 0xdfc07f23 mount_single +EXPORT_SYMBOL vmlinux 0xdfe09c18 of_root +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe0028049 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe002c6ba neigh_xmit +EXPORT_SYMBOL vmlinux 0xe014dcc8 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xe02eaeca napi_gro_flush +EXPORT_SYMBOL vmlinux 0xe03641e6 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06cf72c abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08de3c0 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xe09cf505 loop_backing_file +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0df0d95 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xe0f7501c i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xe1046bc9 seq_puts +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe132d95b __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe1394e76 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe14b2949 key_alloc +EXPORT_SYMBOL vmlinux 0xe159b30d pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xe15c6e59 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xe16ae9f0 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1d2a6e5 inode_init_always +EXPORT_SYMBOL vmlinux 0xe1dcedfd devm_clk_put +EXPORT_SYMBOL vmlinux 0xe1f7c8e4 kern_path +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20cbdb2 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xe21a9052 block_write_full_page +EXPORT_SYMBOL vmlinux 0xe21b10a9 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xe227789a iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe244d606 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xe2460860 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25ffbcb skb_pull +EXPORT_SYMBOL vmlinux 0xe26b865f blk_init_tags +EXPORT_SYMBOL vmlinux 0xe27390f9 genphy_resume +EXPORT_SYMBOL vmlinux 0xe28a93ef call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fa52d4 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3055da0 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe354f9a3 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xe35ad722 keyring_search +EXPORT_SYMBOL vmlinux 0xe364bc5a d_set_d_op +EXPORT_SYMBOL vmlinux 0xe3875bc9 mpage_writepages +EXPORT_SYMBOL vmlinux 0xe3a39cfa netif_carrier_on +EXPORT_SYMBOL vmlinux 0xe3b352ac of_device_alloc +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e17655 con_is_bound +EXPORT_SYMBOL vmlinux 0xe3e78cd1 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xe3f23b78 d_delete +EXPORT_SYMBOL vmlinux 0xe3f945b6 md_reload_sb +EXPORT_SYMBOL vmlinux 0xe424db7b cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xe447e039 blkdev_get +EXPORT_SYMBOL vmlinux 0xe44c00ce __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe457169a __bforget +EXPORT_SYMBOL vmlinux 0xe46044a0 single_release +EXPORT_SYMBOL vmlinux 0xe464cf86 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xe481d9b2 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xe4835163 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4b5945c input_get_keycode +EXPORT_SYMBOL vmlinux 0xe4bae5d4 phy_resume +EXPORT_SYMBOL vmlinux 0xe4bca80f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xe4c17741 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xe4d9738d tty_kref_put +EXPORT_SYMBOL vmlinux 0xe4e539d3 sync_filesystem +EXPORT_SYMBOL vmlinux 0xe4e7b0f4 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe4ea5726 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xe4f3a98c set_cached_acl +EXPORT_SYMBOL vmlinux 0xe4f7cc1b account_page_redirty +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5186997 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5447a1b unregister_key_type +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5904e2a mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xe594a2f6 scsi_device_put +EXPORT_SYMBOL vmlinux 0xe5a582fb phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xe5b76f9b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d0a58d sock_efree +EXPORT_SYMBOL vmlinux 0xe5dabf2c vfs_mknod +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe62c13e2 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xe641cda4 netdev_crit +EXPORT_SYMBOL vmlinux 0xe643b53b xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xe64676ae __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xe64f7db7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe66f4d7f scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6ba751e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6e8d297 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6ec1a3b d_set_fallthru +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe712f052 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xe7210ed0 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe736de21 key_invalidate +EXPORT_SYMBOL vmlinux 0xe751d972 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xe767491b fb_get_mode +EXPORT_SYMBOL vmlinux 0xe76888d1 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xe779d791 ata_link_printk +EXPORT_SYMBOL vmlinux 0xe77e7d54 kill_block_super +EXPORT_SYMBOL vmlinux 0xe77ffd43 set_anon_super +EXPORT_SYMBOL vmlinux 0xe782eb7a security_path_mknod +EXPORT_SYMBOL vmlinux 0xe7959c94 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe79c2cbd seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xe7a1225f scsi_print_command +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7aad2bc bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xe7ab12e3 vme_irq_free +EXPORT_SYMBOL vmlinux 0xe7b0661b address_space_init_once +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d6b5a5 sk_capable +EXPORT_SYMBOL vmlinux 0xe7e8a433 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xe7f16258 simple_release_fs +EXPORT_SYMBOL vmlinux 0xe8099279 path_is_under +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82b113b set_groups +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe8305e4e tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xe86a7a40 mdiobus_free +EXPORT_SYMBOL vmlinux 0xe86e1670 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xe86f2305 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xe87a67a9 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe87e2f4f ppc_md +EXPORT_SYMBOL vmlinux 0xe89e6b31 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xe8a0621b blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8aa6500 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d28c35 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xe8d8b61d mmc_can_erase +EXPORT_SYMBOL vmlinux 0xe8f97e56 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xe8fc4da3 seq_file_path +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9196edc sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xe91ac87b netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe939f4a2 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xe93ac1d7 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xe95163d3 file_update_time +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9561729 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xe96af68e phy_device_free +EXPORT_SYMBOL vmlinux 0xe96c2aa0 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xe96ec6c6 param_get_bool +EXPORT_SYMBOL vmlinux 0xe972517e inet6_add_offload +EXPORT_SYMBOL vmlinux 0xe982052a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xe997680f set_device_ro +EXPORT_SYMBOL vmlinux 0xe99fc384 dquot_initialize +EXPORT_SYMBOL vmlinux 0xe9dbb955 phy_device_create +EXPORT_SYMBOL vmlinux 0xe9e250a8 seq_printf +EXPORT_SYMBOL vmlinux 0xe9f11ee8 dev_err +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0f8cb0 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xea417fa9 get_super_thawed +EXPORT_SYMBOL vmlinux 0xea433b7f update_devfreq +EXPORT_SYMBOL vmlinux 0xea458fe0 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xea485d1a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xea52eb84 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xea575586 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xea5dca9d generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeacd2295 from_kuid +EXPORT_SYMBOL vmlinux 0xeaef6458 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xeaf09497 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xeb21ac14 blk_put_queue +EXPORT_SYMBOL vmlinux 0xeb2b3506 inet_add_offload +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3727d5 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xeb38f835 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb57dc1f tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xeb599945 sk_free +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeb93187f vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xeba2a933 validate_sp +EXPORT_SYMBOL vmlinux 0xebc67639 security_file_permission +EXPORT_SYMBOL vmlinux 0xebd6813c simple_transaction_set +EXPORT_SYMBOL vmlinux 0xebd714e6 vme_slot_num +EXPORT_SYMBOL vmlinux 0xebe2c7b9 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xec04db1d copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xec0f1f92 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec29024f pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xec35a12d bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xec3c923c iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xec43a07e load_nls_default +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec54f3a6 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xec7cc409 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xec87d8d0 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xec938290 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xeca62e34 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xecaaff43 input_register_handle +EXPORT_SYMBOL vmlinux 0xecb0fe5f xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xecb436df xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecbdf1bd nd_device_register +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xecde7311 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece7b83d cad_pid +EXPORT_SYMBOL vmlinux 0xed078b95 md_check_recovery +EXPORT_SYMBOL vmlinux 0xed0b318e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xed27f414 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xed2f2c83 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xed5974b5 mapping_tagged +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6f236d neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xed736a0f iterate_supers_type +EXPORT_SYMBOL vmlinux 0xed83e540 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed96b9c3 bmap +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda8ada1 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xedb034d4 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc50ea7 may_umount_tree +EXPORT_SYMBOL vmlinux 0xedc6acc3 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xedd14190 skb_store_bits +EXPORT_SYMBOL vmlinux 0xedd77d21 dma_set_mask +EXPORT_SYMBOL vmlinux 0xee082560 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xee0f65b7 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xee217c80 backlight_device_register +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3980d7 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xee3ed8ea of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9fa6d8 posix_lock_file +EXPORT_SYMBOL vmlinux 0xeea60e6c jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeec052fe request_key +EXPORT_SYMBOL vmlinux 0xeec15ed5 inc_nlink +EXPORT_SYMBOL vmlinux 0xeec72271 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xeed935b0 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xeee0b017 set_wb_congested +EXPORT_SYMBOL vmlinux 0xeeeab25c blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef7fa1c dup_iter +EXPORT_SYMBOL vmlinux 0xeefb21bd mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xef240535 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xef24f614 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xef2f2e15 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xef6ec1a5 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xef743bbe jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xef85970a serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xef950f30 generic_show_options +EXPORT_SYMBOL vmlinux 0xef9616ad blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xefb96026 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xefc197d5 sock_no_bind +EXPORT_SYMBOL vmlinux 0xefcadae3 touch_atime +EXPORT_SYMBOL vmlinux 0xefcdb3c5 set_page_dirty +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd4dcd6 param_set_bool +EXPORT_SYMBOL vmlinux 0xefd4f734 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe663d2 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xeff4562a devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00bdbef tcp_parse_options +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf026e461 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xf02b6866 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xf02bc230 vfs_symlink +EXPORT_SYMBOL vmlinux 0xf02d554a phy_stop +EXPORT_SYMBOL vmlinux 0xf041baef dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xf0497e48 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0747fcb module_refcount +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0b8f625 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xf0bba670 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xf0d78f38 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf115753b generic_fillattr +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf126a682 vfs_writev +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15f63d8 blk_start_queue +EXPORT_SYMBOL vmlinux 0xf1896a22 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a31655 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xf1acbf02 mount_ns +EXPORT_SYMBOL vmlinux 0xf1b9ca9b iget_failed +EXPORT_SYMBOL vmlinux 0xf1c793c7 tty_port_close +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2026a76 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xf20d0ae7 up_read +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2163b7f lwtunnel_output +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf241b42b dqput +EXPORT_SYMBOL vmlinux 0xf25e390f netif_carrier_off +EXPORT_SYMBOL vmlinux 0xf26e9896 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xf26fbb98 vme_irq_request +EXPORT_SYMBOL vmlinux 0xf29b16c4 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e9b978 single_open_size +EXPORT_SYMBOL vmlinux 0xf2ffb572 module_put +EXPORT_SYMBOL vmlinux 0xf30bf648 dev_emerg +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3277413 inode_change_ok +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf375f93a __getblk_slow +EXPORT_SYMBOL vmlinux 0xf383a2ed d_prune_aliases +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3d37bef inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf3e37e40 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f6e719 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf3f78098 import_iovec +EXPORT_SYMBOL vmlinux 0xf3fb6421 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xf4013d37 page_readlink +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf410f3a9 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf4315040 down_write_trylock +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf44896fd blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xf44ca671 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf4520e4a jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xf465a233 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4a6787a ip_check_defrag +EXPORT_SYMBOL vmlinux 0xf4ad20e7 dev_mc_add +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c3a9ad generic_delete_inode +EXPORT_SYMBOL vmlinux 0xf4d359e6 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xf4e24b97 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xf4ed0888 truncate_setsize +EXPORT_SYMBOL vmlinux 0xf4eef396 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5035eb2 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xf505205b sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf535e5ac bio_endio +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf55313a0 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xf5620148 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf57a8629 skb_dequeue +EXPORT_SYMBOL vmlinux 0xf57b7a5c bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xf589e8ae zero_fill_bio +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c39bc1 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64a3260 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xf64ea858 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf6511be1 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xf66d9559 simple_getattr +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf6789a40 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xf68094cf register_quota_format +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf68c631a mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xf698828e agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xf69ae0ad sock_no_poll +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6de6eb6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f17182 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7498292 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7974689 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7d5dc76 mach_p1023_rdb +EXPORT_SYMBOL vmlinux 0xf80ebdd6 tcp_child_process +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812fbd7 console_start +EXPORT_SYMBOL vmlinux 0xf813be1f ip6_frag_match +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf8287a56 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84d22ce xattr_full_name +EXPORT_SYMBOL vmlinux 0xf892c4b7 pid_task +EXPORT_SYMBOL vmlinux 0xf8a7615b blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xf8b8241a tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xf8b95362 generic_update_time +EXPORT_SYMBOL vmlinux 0xf8e1af2f unregister_console +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8eb86b2 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf90b0f8c put_page +EXPORT_SYMBOL vmlinux 0xf90e4343 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf923c599 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf93169ce d_lookup +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf93b18c2 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xf93f4e9a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xf94c402a param_set_ushort +EXPORT_SYMBOL vmlinux 0xf9558fb0 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf967c640 bdevname +EXPORT_SYMBOL vmlinux 0xf997f62e init_buffer +EXPORT_SYMBOL vmlinux 0xf99a9e17 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf9a09dde phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a58cc4 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xf9c04ecc revalidate_disk +EXPORT_SYMBOL vmlinux 0xf9e62c70 of_dev_get +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9fb5748 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xfa08bcfe kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xfa1bde5a mmc_detect_change +EXPORT_SYMBOL vmlinux 0xfa397ba8 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xfa479c65 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa538f43 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xfa539649 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfab293c8 free_user_ns +EXPORT_SYMBOL vmlinux 0xfac1c57c jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae418a6 dentry_open +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf24397 __alloc_skb +EXPORT_SYMBOL vmlinux 0xfaf2e17e sock_no_mmap +EXPORT_SYMBOL vmlinux 0xfb1f1120 serio_rescan +EXPORT_SYMBOL vmlinux 0xfb2453c0 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xfb39c910 km_new_mapping +EXPORT_SYMBOL vmlinux 0xfb507198 __block_write_begin +EXPORT_SYMBOL vmlinux 0xfb61a025 md_write_start +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6d0370 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfb714923 neigh_update +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba5055d inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbabc60d tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc806d7 register_netdev +EXPORT_SYMBOL vmlinux 0xfbcb5e0a con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xfbd2d507 vfs_rename +EXPORT_SYMBOL vmlinux 0xfbf361ad scsi_device_resume +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc3f3c69 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc70dcca md_register_thread +EXPORT_SYMBOL vmlinux 0xfc732c28 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xfc7c43be bdi_destroy +EXPORT_SYMBOL vmlinux 0xfc8443cc get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xfca0714e netdev_alert +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfccaa232 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcdd1c8f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfceda481 vm_map_ram +EXPORT_SYMBOL vmlinux 0xfcf84a93 atomic64_xor +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0de2fc simple_lookup +EXPORT_SYMBOL vmlinux 0xfd15f61b mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xfd1a92c3 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd4e72a6 padata_alloc +EXPORT_SYMBOL vmlinux 0xfd5f24a5 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xfd6ee1e7 ilookup5 +EXPORT_SYMBOL vmlinux 0xfd75f455 empty_aops +EXPORT_SYMBOL vmlinux 0xfd7b450c __neigh_create +EXPORT_SYMBOL vmlinux 0xfd83ae20 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xfd908761 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9af0d6 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xfda581f1 mac_find_mode +EXPORT_SYMBOL vmlinux 0xfdb1dbf7 input_event +EXPORT_SYMBOL vmlinux 0xfdb22209 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc1eca8 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xfdc2a13b pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0489b7 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xfe3f3e08 simple_rmdir +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe64175f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe925853 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xfe95e67b __find_get_block +EXPORT_SYMBOL vmlinux 0xfeb2620f account_page_dirtied +EXPORT_SYMBOL vmlinux 0xfebf8a7a noop_qdisc +EXPORT_SYMBOL vmlinux 0xfec0da50 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xfec3aafc __dst_free +EXPORT_SYMBOL vmlinux 0xfec8cfa0 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee36f9d pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xff016b3b elevator_init +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff274698 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xff3a1d99 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xff3abfc5 find_lock_entry +EXPORT_SYMBOL vmlinux 0xff40a821 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xff64cd9d simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff6ea1d3 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff77e3d7 vfs_statfs +EXPORT_SYMBOL vmlinux 0xff80b1c9 nf_log_unset +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc02c49 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xffd4512a ilookup +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL_GPL crypto/af_alg 0x0d66b991 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x2fd45f96 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x75761225 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x87fe582b af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x96bbe3d6 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xacc62e4f af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc9e3275d af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xd5b5359c af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xfa22d27a af_alg_complete +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xd25dd375 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc59dce6d async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf985f5b6 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1211915c async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xaaefa718 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x14c3cf9f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x39de5947 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9ac761c2 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xfee47b48 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3f79c3e7 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x7f15e8a7 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x72a0db11 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xd1b37203 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xce0f14a7 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x9d11aeb5 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xe14f0d91 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x38c5e43f cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x59489f30 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x658058a3 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x929692f2 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x93858483 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x9b68059f cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9be35ea2 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xae2854b3 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb0bb495e cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc89ad905 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x9721efaf lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x420baa94 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x603fd0aa mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x618d3948 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6c520982 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x766d3de3 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x80d14b64 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdb2e0a14 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdc0c2084 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x09464971 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x2a977339 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x2b937bea crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xb5d170be crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x720241d1 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x4e64ef73 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xf608d8c1 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x087b3655 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17a86bee ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1d685247 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x25b12a77 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2ce01ae9 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2d3d1aa8 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2e784cb8 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d28b1fe ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x41d3f200 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x451375d0 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x617b7d4d ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x71123ba2 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x846fea5e ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x851ead97 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9c39a212 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb8130a23 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbb87388b ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcca2ad4e ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdddb4071 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe87c233a ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xec2051d8 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xedc5001c ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2ae0b450 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x38c2ce29 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3d3c068e ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5269fa82 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x597b6b6e ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5c13ae41 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x80536652 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x815c9347 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x87feddd5 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8d21f684 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x93698189 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9e194c7b ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc71166f6 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xe46673a5 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x744cb293 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x1d47dee6 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x3213956d __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x3785bb5c __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8b3efc21 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cdcaf04 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x41a5b3e4 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x44e04c45 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a1844ac bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5f78ca06 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6097f2c2 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6599f838 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6927a51e bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x73e8fa6f bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x83f4ddcf bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9774b82f bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x98c4bffa bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9d1fb4f7 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9e9da8e8 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa5509576 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad8cce97 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb97874cf bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc5286e2f bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd12aa6d8 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7797bef bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe8da2f2e bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xef56f4bf bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa5a4885 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb92897a bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x196dd939 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x233deece btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x28572adb btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2c53ea34 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6045435d btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfb609bda btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x006fead8 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1447f1af btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1aa0e291 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x21d15ef6 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x287b38d2 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x505983d0 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6289b939 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x79e5ec3e btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x849a464c btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x92a8dff2 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xbdc3ea8d btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00f00af7 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0da4b36f btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x28744b85 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x37bb0b6b btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3ea84bca btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fbd4092 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8d40a07c btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa58c1cec btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xaea912b2 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb9496540 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe9b3ffe3 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xaced8e2e qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xc419d5a5 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x852fa913 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xc40ad16a h4_recv_buf +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x1d0158a3 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6dbbb67f dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbc890da9 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf15f08c6 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf5e8053f dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x60a18805 fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x03434d72 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xb053db1e hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xe4d9c60d hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x3003ff3c vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x7c0203d9 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x9366e092 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xdc5f5df6 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x06e8ec8c edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x16f13bc4 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x22e24516 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x245890d5 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x417a85df edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4a619073 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ef919c9 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x57738c9f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5ac24712 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x775baf25 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x834fdc6c edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x85b8c334 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x93958828 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x93ecd0eb edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9a5a4dc2 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa7ca6ffd edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaceb4c40 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xba65a5b0 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe205c92f edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe5423306 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf3b95300 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf56c9791 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff5d11e5 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x08b74b33 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x46047e51 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5d63a7e8 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6148dd1d fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x63fecee5 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x93baf90a fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9cd785e0 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xda7cedbe bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x96b3c924 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xa853bc2e __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2a566cf5 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5ba01983 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x668ed67d of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa8535a1b drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbbf69b6d drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe9826f09 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x60626948 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x7892ee80 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xdb6155b1 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x068c75e3 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08eb192f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x16fc70d0 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20bb8cc5 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x28adb0e4 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2aee8774 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x34ca1760 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e3ced5a hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x406cb61d hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x439f9372 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x44deb298 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d82cd6a hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5751eea8 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e98705c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x61901034 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d4ac2d5 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74cee56f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x775d3a9d hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e76e118 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7eeb32e7 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x80689fa1 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x810f59ba hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x836a171e hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ef7571d hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9031c252 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97e9319c hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb593debe hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbca4bd19 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbfcc4a49 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc0a9f214 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc75e0200 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8e6c03e hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdbb73dee __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe7e1e829 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe92fa838 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef5ba1de hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2ad0a6cc roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x658452b4 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7c38dee9 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9575d234 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x95b9a23a roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa2942b2f roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc0c2d7dc roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0769fef9 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1be8d0f9 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2ad3ddf6 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x369343b2 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x55a075f6 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x648621d8 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6cecdc9c sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbf3e19e9 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xed8b9c4f hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb6902d05 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x02725f4c hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x05141ebe hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0516991e hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0bf7ff22 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0ffa3e1d hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x196c065e hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1c844eea hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5e658c74 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x66bc8367 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x74a1d99b hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7556072f hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x796d42e9 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9cc517d2 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xad89a7b0 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe72ac03f hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xeb730bec hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf66fd4b7 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfc6fbbe5 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x476f5ca7 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x8d645727 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x96631cb4 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x05cb8206 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x173f9357 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x265cc67c pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x35909a4d pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3c8f69b5 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7c07eb31 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9edb0f57 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaafc56ce pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xae2e5afc pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbb26c009 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xddc9544b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xefff9863 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf1160382 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf146dea9 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf8de72d9 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x0a085e37 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x3c6fb619 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6e4682b3 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xa19eee35 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xd4d14486 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xd5f13077 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf9694681 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x5f917d00 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x6da1c320 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x887adc15 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa45f10f8 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc4208742 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b40a9de i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1cbc6060 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4d87fa16 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x98df9c87 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x99f0b28f i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x509010f8 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x88351a06 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x31060d1f i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xe7fa7e43 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x4619128e bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x905efd8b bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x97d2de47 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x34e6d328 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5cd88e2e ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x75c3be68 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa40c5bef ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xae18b7ac ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xaf5a3194 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd84c7d1d ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe199d257 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfac04a52 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x94e5e3e3 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb824b542 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x3f191047 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x8ce8f69d bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x8e2dfa63 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x213449c2 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4003264e adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x705101f5 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x78d50531 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x888b9876 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xae531ae5 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb1a72a2c adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb5ae8627 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbc91c12b adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc3ed4f98 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf0e1cfdb adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf34571fc adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x09214019 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0c0b8dfe iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1aae8e71 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23c7cb47 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x295b75bf iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3f50e736 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x47ee75c1 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4867f324 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4bf5d5f1 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x505689d0 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5246d644 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x716e713a iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x780ddab7 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7feff032 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8374b09a devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84d3c604 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x91f3423f devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x93f9186c iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5c63507 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa71be2ac iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa76ccc8b iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa9700e90 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3d061cb iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbaa9d3e4 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc62c59ca iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc74d10dc iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc7734bd0 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcbf12b6d devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc8fa9d6 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8fe1559 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff6321c0 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x590c41bf input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xe614a284 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x7fbaa53e adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x41b863a7 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x528f4bd6 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x58c6b296 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4f57b761 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x57cd5cb9 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xccb847ec cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x217615fa cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x88309c11 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x17ba1f8d tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x61e314ce tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xaa0ec297 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xbbebc5a0 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x04334a87 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2eeaa641 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3616002c wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x37156f5a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8064be3d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae4a5add wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb0cc2210 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb7c90d16 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba7c3bcd wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc8994a19 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd5275743 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf513a8b2 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x05420c24 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3e7e0fd5 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x55dce3b5 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x64473587 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x77822d64 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa15786ff ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc0329350 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc54d840d ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd0357cff ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x00e4fff1 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1a1537d8 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2428e765 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f1102ed gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4165344e gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x65e26379 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x76c029f2 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x799b9af5 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7eb6f739 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x88092823 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x903a34ef gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf152d2a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc30fa04e gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe13102f5 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xec691afe gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf1f1c555 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf6597ea7 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1066599f led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2f98f981 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x48b9905c led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5ecade24 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7369aafb led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdaa1d5bd led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0f6beac0 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1368982f lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3b6a5d10 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4cefd9f0 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x629e0c74 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x677070c2 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7e623f5b lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xde595f4c lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdea39d13 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe06e2840 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xec020ad2 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x009fe250 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1d6c438a wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x38b13ffc wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x52501c8a wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5fa21c46 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x683e5264 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x91e30c5f wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe8080b22 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1c93d9da mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x35560a96 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x470c94aa mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x68222d26 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7fc4df72 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x92b3dc45 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x92efd7f8 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa683eb1f mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xaf9520d1 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb5f371fe mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcd26f50b mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd38dd3f0 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf806a995 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00b74659 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2a1a7a99 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x374f45ea __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3a4dfef7 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x48991e9c __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f124797 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x614e860f __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x647af374 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6724de29 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6726a0c1 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68f1ea6d __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7114cfcc __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x78c57fa5 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7cb4bd6f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x816ebfe0 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x833b99dd __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8afe3e2b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x912566ef __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92c55e92 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9c59320b __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa7004101 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf2376ac __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb3942afe __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4cffcbb __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb9c28744 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc0bd3171 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc773563c __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd81ad8c9 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe30b6b2a __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf6169c53 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcb52b5f __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x036d6e20 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x06629d32 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2777165a dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2f124302 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x35c33f6e dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4a36da41 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4e0804be dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x674162c1 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x83a23b8a dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7280da6b dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x73dea4a5 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7dcee551 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb0422d92 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbb306b37 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd3182c62 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd43554d7 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf9a21a1d dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x87bcf044 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xbb886646 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x058980c0 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x316489b6 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4012dff2 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x461249ae dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x68f2bf68 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa5fb55c0 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf4dceb38 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x024054a8 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x479349d5 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x55fb635d saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x93057be3 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb76d3c1b saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc0342fce saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xce7a2782 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xddde52ec saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf3ebd919 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf6dde7fc saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0d77847b saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x13c38ff9 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x21fbb048 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2abb68a0 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x673c0f16 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x90e573bf saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xde81aae6 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x04d6275a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1e8c54d2 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2bc11883 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x327f8848 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x355d611e sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x54c724c0 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x60075777 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6167d0fe sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x68d6f8d8 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x723cfcdd smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x730c773c sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x90ebcae0 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9ab6fe11 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc19fb0a8 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc89de4ef sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xce4c4b81 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd69f9cb1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x8d678b9d as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x6df47322 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xe871d83e tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x169e43c8 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x22a65ade media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x23b49a5b media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x4d536d57 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x60fed08b media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x625da246 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x63ef16e6 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x6477daf8 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x6830049f media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x904675d1 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x957acd72 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x97703435 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x99077fdb media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x9c3cc60b media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xc5805f1b __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xc99c84d0 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xd6d8699c media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xe818dafa media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x707980d3 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0a2aa7f3 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1efa6970 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x241532b2 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x30c5fc31 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x31e64d78 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5a248cff mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5fc86067 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5fe1010f mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x65273ba5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x708d04a6 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x865e5c3e mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9990e6c5 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9a88420e mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa5aac09b mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaebc560e mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb7963525 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc7c59d3e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xecc53fc1 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfcd5024b mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x03558ac0 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1ac008c4 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2cba8cb4 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x344f6299 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5224c784 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5cce9d45 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x68a4cb86 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x71212461 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7aeddfc3 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x86bcf477 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8abe04d3 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8c1e2165 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x928e4b48 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x94b88026 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xba523683 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbb32f12b saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbfe08f1e saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc814e509 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcf7b98f5 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x09611506 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2540774a ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4b5dee18 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x53649668 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x72790de9 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9dae8ace ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdd50363e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x16a9dab3 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x18467dff xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x369eafbc xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x8e003a80 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9b011265 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb627dfe6 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd0588187 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xb8de47ac xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x110bdc28 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x66bcb8c4 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03dc6149 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0cec5e6c rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x39dfa19e ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f96995c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x456dadc8 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x552d1721 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7009d34f rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x719fa167 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7a1e5283 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x886e6a8b rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8d54903d ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa4eb0542 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8c3d59a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa9d6cb0f ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc60e2e9e rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd9589be7 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdfe41156 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe54d760f rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf300d085 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x10343316 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xdd70c493 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x0b3df698 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x7c938248 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xa45f4a87 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x22f76127 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x4fca3b5e tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xf8b10fa5 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x55a25905 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x7ad88501 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8538ca5e tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x0ecb3442 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6cb66000 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x6eb470a8 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x085ec329 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1baa335f cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1c1a60a7 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x263c7c6e cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d6ba126 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4161dc9c cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5002ff81 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x69b5fd7c cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6abd6e7a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x75c4bfa0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7c6f0b0e cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8151db6d cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8df7d714 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9b552b49 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa852f694 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaef89ef5 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd13f023b cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe6be4ded cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf9a4b3f3 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf9ce5ad3 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x1a53af26 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x58d92ca3 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x037e5aeb em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0fe3c514 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x14dff4bc em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x14fa3a37 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x19a7fb7a em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x251bc6f6 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x43f70a62 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x46d83c36 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4b2c6796 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x66970de8 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6fdb90eb em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x78ced298 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7f59d5fb em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8c5d20ac em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x98671cd4 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd1ebe3bb em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xda4198fc em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe23405bd em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x48e6aaa9 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa12e786e tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc351188e tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd7cb29ab tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0620ffd2 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x40ab291d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x90de4dc0 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc8796832 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xccbc253b v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfd289ca7 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x5aa3d58e v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xd0d7ddbc v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0693147b v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0fb19ac1 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x13bb6b5c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x18ec0466 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x198abec6 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1a454f76 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x22282064 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x24b9473e v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2e2890d2 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x340091ad v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x36621d9e v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4e293aee v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5bc220ab v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69958c33 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6ae718b1 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6d7a5f90 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x891c556f v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9635eaff v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa1981a61 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb0dc18d5 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc26ef062 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc3602398 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd79be1e3 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xde40daf4 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe8da332c v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xea5b090f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfee5f004 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0493e49a videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x13878557 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2cdaaae7 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x37e57bdc videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3f54ab11 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x49f6c4c9 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4b542db0 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4b8e630d videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5a7b4c6f videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5ba59efd videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5d6b771a videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x619bf77a videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x681077d6 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x702d46f4 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x703b536b videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c64db20 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8bf1806d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8f1d5114 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x90e59e6d videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x91b26d3a videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc25e481b videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd32dc639 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdeb16e7c videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfbc8fe83 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0f9ff22e videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x58b6d468 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6fa4a4c1 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd13c5ad2 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x4fa87f85 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8a15c4ea videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf13f9387 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x00a62b32 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0480a846 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x07b7b594 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a73a86f vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16ce2dc7 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x18803463 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a00f335 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x37e7f7b7 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x417dd0d5 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x41f359ca vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x672ae44f vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8462d39d vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x868bfb6b vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x988a0f97 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd167a924 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xda8605f0 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe881fc3a vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc944c04 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x29da8dfb vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3c4ea502 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x141cef9f vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xb1680ad6 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x92f527ab vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x06fe3525 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x24add0ac vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x33030934 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3350a36a vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x48ceaf12 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x520e72c8 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x52b9c148 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x560d040b vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x57278c07 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x57fb0bd4 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5b1afc49 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5c81b894 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x67fb959c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6bce0981 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x72306100 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7a7b1ad1 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x87b946c9 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8cbf7149 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x958d4b35 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa65a9bd9 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa960bbd5 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb5ab2a96 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb8875c44 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbfc97965 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc0a3426e vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc7861ea8 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd5f5ea32 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdf64b6e6 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe49073dc vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe628f407 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xea083756 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf5f2df34 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x16dc65d6 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x015482b8 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x085c1c98 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0a1314c3 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1336e87e v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x14cf33c9 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28d20b15 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31e3d76e __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x336da723 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3435cfbd v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3740e82b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3bd59ed0 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4264cb71 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x53ff5c0f v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5482efaf v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5847b2c0 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x62bcc540 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x638b5d81 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6aa4a9bc v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6dfa1e96 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x75639d85 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a85f5d7 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fa601e9 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x971601e8 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98545b10 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa0bcd2ae v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xba19ee40 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbddab220 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbf2655ad v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc646a987 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb78d66f v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe576a44a v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe74c7448 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xebaf3391 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf1fbadca v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2ab294a v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5956f8c __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1c3e3536 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x759ecdd7 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe55ad7b0 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2b09a201 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x404c64b8 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x44f25b24 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x5dba69ba da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7f9e55dd da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb9d360f0 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf32320e5 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x086da2f2 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2cf110d7 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x396fcd07 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3a2f74a0 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x44ef1c74 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6a8c3d99 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf1f0c92a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfd901fcf kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7ff40267 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x92d5a9ef lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd471651a lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2234d506 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4b8c2ad5 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9a810c19 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb8f985dc lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdc5f81a7 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf0894d51 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfbbd72eb lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x674fa8b0 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x7f1d1d42 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8a7e9321 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1e2c0a02 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f0a551e mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6fb01e3e mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7dbfeb56 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc5d71a3a mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcfcd0798 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25fc0db6 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2b5a91bc pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2c18dbbb pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x598a1733 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9b2c94c9 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa17df993 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa9b76546 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc988180c pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd1442b7d pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd4b32d09 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdc82121d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x14c9e79e pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x8110783e pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2672fbe6 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3fefd2fd pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x76598b8c pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x83e7dbda pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe8ff751a pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x02d3ab41 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x12b9585c rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x305014a7 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3cb30ea7 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4076cff1 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x48dd71e5 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x56f33004 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5b70c374 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x69b5cd99 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7357e2e8 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x79ca8a19 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x86e01bc9 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9907e51a rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9df375f1 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa35e7d7a rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa7a9f514 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xab4a92e6 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xae502feb rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb2f32fe6 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb9335c84 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc30bd5b6 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd283fe31 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe088356c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf949c4f9 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1295a097 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1ec75146 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3a34ba20 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x420adbfd rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x74316044 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8fddbd7b rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb6d4f331 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbe198760 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc445f959 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xcf797347 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd18c1c12 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe7ce3239 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe9086c02 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a291609 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x132004fb si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17fafa28 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x27218a97 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2746cd0d si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x300fb03e si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x31f9566f si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3a91dc40 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x422aeeac si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x44e59ccb si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x44ee2756 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ce95baf si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x67584d10 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6c5a2efc si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d24d4da si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x70d218a0 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74e6aa4b devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7b74da4a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7c4488e9 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8157dc5e si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x864174fe si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8dcb7adb si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x96cdb97f si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x991bcdc2 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa30b2e35 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb459dae2 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb60e8c74 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbb0c6563 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc19381e1 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc87682f9 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0160d95 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe51d057f si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf951ea9e si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xff8e8af1 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1f509f66 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4f856a84 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x964e6216 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9e434474 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcdb0fa07 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2a4d80d2 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x360e4927 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb39c8d03 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfd3646b4 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2c6caf22 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdc971b5a tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xfd6d20e2 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xff1c2b23 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x422558f4 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x17247863 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x23276c2b cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc9aed72f cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xdc1dfec1 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1c6cb6f2 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x38ed7158 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3ea6bae4 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x65031508 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8796db9e enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xba513902 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc5ee5bea enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd4d56bd2 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00c179be lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x33f8f3ef lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4caab501 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x70fbdfe6 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9e5bf552 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd17684d1 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe5f71a0b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf32e6a21 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x01f7da85 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0456e4fd sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x04e85672 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0d2e1c62 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0ede0ed6 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x10dc1a1e sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x27b71e5d sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4119fafd sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x572a5d64 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8498c84a sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdc9c5cea sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe19377fb sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xef867e30 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf8b93263 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4dbdec41 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x52cc9dcd sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x650703c8 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x673d147c sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x73c17d4f sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x82b3a486 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9d8c4456 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9e3644aa sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf8986e70 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x65f01dcf cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x98ee3859 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa7c71db1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7483652b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x877aaaad cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf928e17d cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x16bdcc2a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x01b0830f cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x3be9d022 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe96278ed cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x000c1d1c mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13faced2 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16c13538 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x192ac8e1 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1da00c8e mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x262d4610 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2874ac52 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32335911 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x34f47947 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x354adb94 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36cb8557 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36fec084 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3730b2fd get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3de20d64 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4049137c mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c167bba __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b780d13 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c42e775 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e64457d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x69244fd7 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x74281cb7 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x754d3f57 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x79ba0524 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b54b280 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x94a4c32d mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97aec707 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c1cd8f3 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9d65bb2b mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1d455fe mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab8ceec1 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafbd1336 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xccaf2ad1 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce6c438f mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd82e0c60 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdbf53ed8 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe43969e0 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6da954f mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec786c11 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed8f1e2d mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2a9d7e6 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4dc63e5 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf61e6b52 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1a083617 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x35ae50a8 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x760541c6 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xadfc311f register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb6c13571 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x7a357f9b nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xc4f4f47d nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x386ee55a sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x2cc0d5bc onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x3ea65ce5 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xf31a818f spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x081051d6 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x177a620c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x306bc57b ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x35a1d257 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x56e08aa1 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5a6f0326 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7230f8af ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74f2c2b4 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8719badb ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa02acb11 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa0f18ee4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc37c683b ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xefe292b3 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf2ae4a13 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x0221eede arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x85751679 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x01746226 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x025a1625 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x27a84d68 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb824b326 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdf477872 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf6b7cea0 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05faa4a1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2d790e25 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2f9b4128 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3b20807b alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x40506ea5 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x50e5e3ce close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x55115375 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7088b147 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x82528b21 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8e37701f can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x95a05c0e can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa46f6e5b open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xab6922df can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc8d0f2ac can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcb7bd8b2 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd5e9643b alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf176f8f0 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf69b2a3b devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x72ddc417 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x76ef90dd free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xabea9134 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe38346c4 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0127e5a6 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3a89ee1b register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9f21e536 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc2324b2d free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x3e89caab arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xa4c83846 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x002d81be mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01b16fe3 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x036389ee mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x056a8c3b mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05a3676a mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07a746bd mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07fe9ca2 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d6d9644 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1350dccd mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x145760ed __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1602d03c mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x166b14fa mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18747dca mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x197c52ad mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f5d0d89 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2123920a mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2151f128 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22eec5c4 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x242ebcec mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x250cd896 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28a398bd mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28e2ff4c mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c2a4bbf mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x305efc3e mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37e03b8d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x386a9503 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a4b49e3 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bce0483 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d397782 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3df0481d mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e13bfc6 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x414bb888 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45b6b687 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47d6292b mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47de4181 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4866a02e mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48978997 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48b07e4a __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b7f7096 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f466c41 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f968d6c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x510b25e4 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5156533c mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51bef566 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x551ba383 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56a7d9da mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a903af8 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bc00bd5 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d8288c4 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6214178b mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6328a694 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64030af4 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x670524c7 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6773f9c4 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69344e80 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6950da6e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b3100cb mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c597f9c __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f8d29b0 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70535d05 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70966717 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x736d6ad2 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x753a5267 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79100b1e mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x850596cc mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8693c4ab mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8777d3b5 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8895a82f mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x889718d0 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x893c04b6 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8950816f mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d2ca017 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x907f8145 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92b0b278 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96f627e1 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97312f16 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98316fb0 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ac8105c mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c0caa60 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cc60e8d mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f639d24 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2ef7088 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7d82dab mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9b39bc1 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa22d7f5 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa26085b mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabee8a9a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae92daaf mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0564300 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb08e1237 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb30f14c8 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4949e9a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb60881f2 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7a44e41 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb2f2847 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc130ec0d mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1f7a38a mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6106495 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc792996a mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc88bfecb mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc90623d9 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcae9efc8 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbc8ec5f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdc6e5b2 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0705507 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd59eba34 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd611daa0 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7c14773 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8b298e5 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9fcd9a2 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaa3d67f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdae45dc3 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd3ca0d2 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddc046f1 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1a4170e mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe32ef0cb mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe588278e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe98907c8 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb1ff44a mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf07aad42 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0ffb6a7 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5eb6cfe mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7d66c80 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa941bab mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04c1ea42 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13f5ca37 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d708e5e mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x201c40be mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x226a9f11 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x286cb103 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2efb56d1 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x303d0914 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ac17fe2 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e981f21 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4251e02e mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4aaa0b1e mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54dcf961 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56acb78d mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ab443b5 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65c9691e mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f46970e mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74741348 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78a8daba mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a1289b6 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b35056c mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8314b408 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x85913049 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x886d511e mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x913e4e0e mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x938f6504 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x986f8f8f mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa13cc74d mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa63596c mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb024d60c mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1372fef mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb335a014 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5e765d3 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb984ef9f mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc14092c mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfbdfb9d mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca4b0a48 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce3f20b0 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3141001 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xddf90e15 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7fe321c mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9bba290 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef1d4889 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1d9f221 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf68a730c mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x3fe0e753 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2a44f56c stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x49a640db stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x70778943 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb2d33ea6 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4aa43b97 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x7e9eb497 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc5645e91 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf66e4644 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0d572e27 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1407b11f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x32c2c5b7 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3810a8b0 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x43d6ef49 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x45c71809 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x68d5ac82 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x765afd24 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e886b24 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x91ef3ff9 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9c1c4517 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa4b52326 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc1b6b9d9 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc785779e cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfdd0b1a1 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x1359753c geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/geneve 0x543183d1 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x21059ac2 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbb575faa macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc5388cb3 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf1d7656a macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x26a7f47a macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x387dea2d bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x61ff5b02 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7926e794 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7a6af870 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x804ada13 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa18628bd bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa405c96e bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa4f88a1e bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc5eee708 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe2b9108b bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x5beaf2d8 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x111ec59b usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x85ffa523 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc52a0b43 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xea0b566f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x045200ae cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x09f077ae cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1fddebdc cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2852a933 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x99310796 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9fbeaf30 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa1f03117 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa9bd0eee cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfb872867 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x16c1e2b1 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x27c6ddd2 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x428b89bc rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x63adde18 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x709ae3ba rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb5a2e57f rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03cd6dcc usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0b1c3102 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0b273959 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0db24dbe usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ee723aa usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0fc1f0cf usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x114336cb usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x16c2fe5a usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1bfefa08 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1d05ac3f usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23264d19 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x249060e8 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c33d118 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2d52436f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a4c9e37 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x431a02fb usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x488e61f7 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54577f0e usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6fb593ea usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77f20d53 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91fe73e1 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9e92026f usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab1265b5 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd13bd745 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd3923a71 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe040a86d usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe28d6a74 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe439a0a1 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe716d9e7 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf0a13cf8 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2e65c5a usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfdfb3097 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x45580b6e vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x77483d34 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x05d6b94f i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x30f201c4 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x68875e0e i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x71027edf i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x783cc9f2 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x860c7ee6 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x982aae78 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9a21d833 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9cc9d20e i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd906943 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe5086ab6 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee064019 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf5cf1a2d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf5fb018c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf79214cd i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf8b92134 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x370dd60d cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x79b8b213 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x801b33d7 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8223ec99 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x4a82599d libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6c6450df il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x901299cd il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9db64831 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc011475b il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf70bc714 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002b2e74 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x004f6f12 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x06789480 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f48dcb7 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1c8cf4d0 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x225f1eec iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x28f22732 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x625021a3 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6d7e65ad __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x71554aaf iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7e88fa85 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x802a7f36 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa0fd9599 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb1ed2ce1 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbee1ca50 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc2028734 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcf3def06 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd23cecbe iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd4fcd2ee iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd7936482 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd8ca885c iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd92e7e29 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xde13ef9a iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d3442b iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xede42b60 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf4fcd363 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5aea4a7 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf71eab26 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xff5a0a9f iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x081636a7 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1a98f05b lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4114e98b lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x45c4bd58 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4bb578a3 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x604027ca lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6cf4e289 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e1b7574 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7a459c76 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x92941b1f lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9517f724 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x96ccb1af lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcecddf34 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdbbb918a lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdd644e11 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe0f90adf lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x01d93742 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3741af95 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x713822f6 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73e3f5dd __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8a75d4fd lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xac00fdf2 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdfe83635 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf4373398 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0e3143b7 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1ca6bfe2 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1ed40e37 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1ef56747 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x256a6139 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2d71d054 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x395b11b6 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x46755b95 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x680ec4d1 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8455708c mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa0d9b954 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xba2cd7a6 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xce231576 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcfb123a9 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd0f39e75 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe40a8f71 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe5e8539c mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfb6de92b mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfc5441c1 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6ad3f43e p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x72fa14cb p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x801ff6ae p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8afb1cf4 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbedcf597 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc7c7ff15 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd920a1d0 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdd3d77cd p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfd74a6c3 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x19c17335 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5f8bce90 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd9ee077c dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xec2b385d dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x01a48320 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x03d22d63 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x04e05902 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1b42c6e2 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1d9bb724 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2a91d8ea rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2d0a3821 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4eb0f334 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x51bab345 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6840e065 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x75947410 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x76a7232f rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x89915756 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x986beaf9 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa5c147f0 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa9f8dc6c rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf9670e4 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb347aeb5 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb73b5f03 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb805fa51 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb8181769 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcd2c69f1 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd31e2ef5 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdadc5dc3 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdba78f7e rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe1c6daa1 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf97a634e rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x10c68204 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x234ed712 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x599428c8 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x61a1d223 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x695443e1 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6ac4c099 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x701835e3 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7fcfa444 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8608d44f rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb217189c rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2658b32 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbf706c58 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd66e553c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdd91a2d9 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xddc9e590 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe911609f rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8c8adf7 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x168171c9 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x56245001 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7223a12a rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8176c890 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0309a5a9 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x05484111 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cddcebe rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0db93c76 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1107e1b9 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x235dea39 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2399b99b rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x276d1705 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x286bedaf rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x36474193 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4651d43a rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x46d7c833 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50663182 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50efaa4f rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f5a392b rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6074832e rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x608c9f66 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63ef115e rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a5b3d48 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7734c9b7 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x789bc881 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7bcfe904 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82f1f445 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa680ab42 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa91420b8 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf7c9ed5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb094163e rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb265aed8 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4bc0c12 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbc334865 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbf3a691e rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9f5ab0a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdca96414 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdd7634ac rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf49dfa12 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6ca572c rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfc638090 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe5cb9b7 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x40d35e87 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x623bbbbf rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6d39e8b7 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x70ffe916 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb4e612fd rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbd127fcb rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc0c8f1eb rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc33c8a78 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc7f2ace2 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd4753709 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdb02423b rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe5d92e18 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfd9a2bb2 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05b11fe6 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0feca44b rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17a28471 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1979392f rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1d43eb4b rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1d4a6299 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1fbe8548 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2066ef81 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c2354c3 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3700350b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38ab63d4 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c93b971 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e1bb90e rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b50c14a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x529c9065 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x651af60e rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6536a64a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6696bf98 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b90f81c rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f8c4cd8 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f97c0c1 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ad74180 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8174b315 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86e0a9c8 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x900f6d96 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90c1981d rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96c9516a rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9b1d6773 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa83f9b22 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa852116c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad1e12f2 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb8b60a92 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbdf2ea03 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc0b13232 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc4963a63 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd09f1376 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd169cfbd rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb4dc2d4 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc024217 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe18f5044 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe50434a7 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe84e98cf rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1009a7c rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf46d0aad rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6ec0a7e rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfad1802d rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1e3691fe rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5a43828a rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x73dba75e rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc8537358 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe872efba rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x018fb8e2 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x41fc9fb8 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4311aad4 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x70a09285 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x08816d31 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x112835f1 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2528e6e7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x273486b0 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x278acd6c rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2b82eb43 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5f2effa8 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e926a0c rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x756aba90 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9a73dd3b rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa5daa15f rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcbcc3822 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcf1b11de rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xddd06aae rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfc091865 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xffb74196 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x587f50ee wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xac3701e2 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd5355e46 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08c2f479 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08c47646 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09ca4358 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0a704411 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0cd8af76 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d0082ba wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x112c0bb7 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17c9266c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ebfd3b8 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22f5cc24 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x291fef92 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bb12947 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x34eccde9 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e3683ad wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3f8b1cb0 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x473924e1 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4978fce7 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4b5c7a7d wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x593e7ff3 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5cef41a9 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5d45aeb7 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64ac07fe wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x68a2da5c wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c15d243 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85a8384f wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8dfae0d6 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa12a2b95 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5a939e1 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa6d85e60 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8c6df67 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa490313 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab26c6bf wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xad8beffe wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc2a6ce65 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc828dcc1 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcf179881 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb047a56 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdc5790a0 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdc5bcf48 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xde74e7ae wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe10fc388 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe88f6e8d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee33f68e wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfcfcdbfe wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x51d5a71b nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xadfc04d5 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc66e963c nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe1983ed5 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x09f8cf9f st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x29f9668a st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4313f6f4 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6f4d2bfc st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xadb30556 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xca0b89be st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xceb4958f st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd01e5ef8 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x00203bd6 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x763277e8 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x855304ad ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3503545e devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4f08b624 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x5f2ad82d nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x7b0e8376 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8bdf9c09 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99606ba6 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xbcd5fef4 of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xd90154c8 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3149b6a0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x90d0cef8 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe32f774a pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1b16e593 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x483300e0 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6bbf335d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x87d80266 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb89afbb4 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8da51aec wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcb392de0 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd096edcd wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe42d8285 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf4a63589 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfbb676fc wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x47a06b80 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x05c49ba4 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0854fd48 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09b2741f cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e33f622 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e6b5482 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f2d8cde cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c694c1a cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1cdce558 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x26af6ce1 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x27925dbb cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x354338f9 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41b2250d cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41b4e11b cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x42f956d6 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44a24286 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d51fdac cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x562ec76c cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b418e54 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6aaf03de cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x735081d1 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7f761e08 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x82afd23c cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9236c147 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94ea1982 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e32476c cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ea46537 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa37e20a6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae2c5d23 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0d712c3 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba6e83cd cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc319e356 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc76522d5 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc8c8bd11 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc92d5bf2 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbd6298f cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd55b9b3d cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd780cf00 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdfc48a27 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdfdf25ea cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb9b5c7b cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xedd08619 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefbf9d16 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4168dc6 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf483045b cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4a01447 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb035479 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0929649c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0eba0f9c fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1286c5a5 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x12b128ec fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1cfc84b5 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6744a099 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x85339853 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9ae497b6 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaee67c8a fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbd1366d9 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc5b9cda6 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xccce6119 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd5ff55c7 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd697ceeb fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe3d791f7 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf8ff4ff9 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2b8c6992 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9396329a iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb4e63e30 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb4ecee10 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd18b0ec2 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf9537d94 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00d37201 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0306bb3d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x040d4d7a iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1c84789d iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27ad4d51 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2cab8b91 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x375ce8f5 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x39c32609 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ec2d288 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x437ad11b __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x470ea8d7 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x507e798b iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x538ffddc iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x58dc699b iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61af3375 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66d877c0 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68025fce iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73d1bfe5 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c01479a iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d0b2580 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x836c3c46 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86a34974 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x871234a0 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e45043a iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fc1c64a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaee26198 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3810df6 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb6d4d416 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcf7d81c iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc11f75bf iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc34e4367 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcda43d79 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd075eca3 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2fd3c56 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd3a9f35c iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd451e905 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd62b3d88 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd81ce9d9 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd9cfb649 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8581d82 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xead4298b iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf480aa7b iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3c2213f3 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3fde30b6 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x48cc19fc iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x57233c97 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5ca06129 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x79c504e3 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8837183d iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8e716b0e iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e6caa5f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa0b3c2d6 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb32ce590 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd0b8526 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbfbcd57b iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xca91d708 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xce3dc0b1 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd34efdb7 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe1f29940 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x09116f79 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e2f43b1 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ea913e6 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3b82b487 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4325353d sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47556771 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x51b05ab6 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5232facd sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x536a1847 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x55831c7e sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x73400118 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x76121ae3 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x85e70d1b sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x93a6f3a4 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x94c7e5a4 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9b8392aa sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa5a513cc sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb27178d8 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd6a90d0a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda7d836a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe823f187 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf39bd255 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf46a5e74 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf5bd7299 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x03c3de95 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09a64b76 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ac7061b iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x159cf1a0 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18672ea5 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18b5d06a iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20b4b3a7 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2659b043 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c9868cd iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4291bbf6 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e1e3dac iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b3635bd iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5df77ec6 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x658f8da8 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6b667fd5 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6bbb49d7 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76cdfd3e iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77e57e71 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8448d5ec iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b088c96 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8bcf4dca iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x929cd856 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92ab12b6 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x953c961e iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa4904906 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb3fbd82c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb498fc2f iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb89ea337 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2894ab8 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc37518c5 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc64e555d iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9fc5715 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xded069f1 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe01f445c iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe04aebab iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeca7d98a iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee53d399 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf53028b4 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf562461b iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc29baf0 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x48ed5b6a sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x794c6f14 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x80488a2e sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x94e2f623 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x6d514715 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x252839be srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x54acc9f1 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x67a54955 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa7039376 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd401ee8f srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfa3be3ab srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x03aa01dc ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x1d01cf20 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x21aee99f ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3272495e ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x434a65e8 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x68e2c888 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe41c1fbe ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x02464280 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x51798fb1 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x85d42609 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x966ff3c4 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xdbfee16c ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe7804758 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf5dfa187 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0aa558d8 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x54464322 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5cecc10a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa81e9a1e spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfbd9ec16 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x29bcce69 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x43c5596e dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc449029c dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xda6b6b4b dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x038cdbab spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x12b3ed52 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2a49b639 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x30fad54e spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x54408375 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x57f9dcca __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x59c21238 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6e3c2b5a spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7883842b spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9b81de36 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9fd8e188 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb233317d spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc0f96537 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcdba5947 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcfc04405 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe4dd1b66 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeabdadc6 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfe909626 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x3d6675c2 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c8bd023 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26741ae5 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x280d66b2 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x33ec4823 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x38151ba7 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3febca1a comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x42b4aa48 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x497d151e comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5ad131a4 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6201f3f2 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x660d7702 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75b5bc26 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x76c26594 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8bef0cf4 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c2c8c2a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f38c420 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x967f4fe4 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x97660f04 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x98a08652 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x98bb84e5 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b3ccc36 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9c8a800f comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9dd61eb1 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb235473d comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb7a2a30d comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb0a61d7 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbe2e2025 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce174d75 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf66fc5f comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3d1c664 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd9807c78 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe824eddd comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xea9304d3 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf8a65e0f comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf92ea525 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x02b6da4a comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0cf3de05 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x10bb8a57 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x149f950c comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3ed3a3ac comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa3347dae comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa5ca5e3f comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfb339747 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x13256463 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x28801f50 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x37d9ccc0 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x457642b8 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x9031b986 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x92a03155 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xad4d5ae0 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x15e07539 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x396081f7 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x401f8435 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6e1f4265 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb56076f8 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf1bb23cc comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x1a22170e addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x06224aa1 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x791bc923 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xa7499c5d amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x197bf4c7 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x40fa3296 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4d918534 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x539afad8 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x67ad55fc comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6b359bc9 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6da5157f comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x78d2bf94 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb81d235b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc739c3d7 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd251206d comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe2bb3b55 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf64ac546 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xda381389 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xdaf63dcd subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe8b2b817 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa0b9c0a8 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x6151b8f2 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x05da9589 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x08671fac mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0bb8f6b8 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3313b30d mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3d6f8b55 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3ecd4ac2 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x42872a8a mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x56a32acb mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ce63afc mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x823121cf mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f729f44 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x90b922fd mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9691f6ff mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9c9e99e2 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaad68d4b mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb6739500 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc42408d mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd2694337 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd64364d9 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf92835c9 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc6204f5 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x94c1dcf8 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xdb032719 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x5c05d346 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x60395c94 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x78740d2a labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x7f663cdd labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xe8252d88 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2b25f775 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x960db572 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa201be85 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa2e1a7df ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa41f2955 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xba9e4fdd ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe8b0cce4 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf207e05b ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x313d653a ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbaae1e8e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbe3d1e07 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd6172aeb ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf01f52f0 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf0e2616b ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x55e8a40f comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7e4a6b54 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x88c4835d comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8ada72aa comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xba8ca464 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf3dedb17 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf47b999f comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x6e138227 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x01479e9e most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x015efe7d most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x07fa4287 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4ae9d8e8 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x655dbdeb most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x91d9d4fb most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa1f9a189 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa394dd3f most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa67cdd95 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa81a445b most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xea6827b2 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xfb191d18 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3e74e9e5 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x42fe7c95 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x52f9ac87 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x67b60365 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x68d966a6 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x85ac56e9 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x95143158 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc3b62502 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfb3fbb50 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd066a09 spk_var_store +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa162bf02 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xaaec6d81 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xeed45398 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x60ddc594 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x7bbb9bf8 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x666e7c03 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf1f1b905 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x1d20dfe8 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x72bcb916 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xeee47a32 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x073aa573 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x14eb38d2 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1b9cdf9e ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x414792ae ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x441ca611 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x73560ad0 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x132608c6 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3e22f604 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4629e0a3 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6bdf8ebd gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7449375b gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7da0f554 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8757bd84 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa3b7dc3e gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb7e13246 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbe0c5024 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc352c38f gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcab1d886 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcde89252 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd09ade10 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf379a438 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x934d2f32 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xdc5a8e81 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x29b56955 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x7dae768c ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x8310f05b ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x01eed6fe fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x14c60ed1 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3afc4d02 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x44945863 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x57b35f59 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x727c5c9b fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x777e5104 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8bae4c81 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99b9c958 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9e0c2207 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc283b8a6 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe16b9d37 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe6e3ec91 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfae685f7 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfe2113ba fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x109ac9a1 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1fb63710 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2c9c0bbe rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x518bd9a8 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5fb79fae rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x64f64e63 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7d2e52e2 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8c200985 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9c34d997 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd39f835f rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe24e1175 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe839cc3c rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xec2d3f80 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xeece7a1a rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf454c32e rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0436d34c usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0db5dd40 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x106c3f58 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x14061c90 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x14cc12a5 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1afad6e3 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1e809379 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2c5d9ddf usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e6a38ad usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2f7bbecb usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f51723a usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5954e180 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x627bd445 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6685215b config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x735cff56 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x76bd7f59 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7e8c98c4 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8835f1f3 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa9c5f799 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1c661eb usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb37fa863 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb383a611 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb6085456 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2ceccd1 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd92c4675 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdd4512df usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdf56a48d usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe88312a5 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeda77336 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee8439e5 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0c849e2b usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0f1779d8 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0f42eb47 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x12bf9c8a usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3490c8f5 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6d2f218d usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x92afd5ad usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9e198100 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa70d4a89 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xae7f0106 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc51a0d87 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xef6407bc usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf010294f usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8a0790e4 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x95340328 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x37895d2a usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3c3dd7eb usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x74110057 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x82549de6 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9b79890f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbff1ab99 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf4f37e73 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf9167c41 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf97f800e usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xdedddd6e musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x7de43ea8 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x462dbc99 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0994f51f usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0c1ff071 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2bac9b5b usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3805abb3 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3b4529d5 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3d055da2 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3ff9dfc0 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4114fd4f usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x436bcd2e usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f729338 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x60bc0c02 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x86882e6b usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x89e96cc3 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa2675389 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb3ad84a0 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc186ae6a usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xca56545d usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcac3db92 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd080f5f6 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd910458c usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9a1b97b usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d4fcc71 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x21b8e4d4 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2202b59e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2eecf62f usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35b90871 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d3bfb86 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4319f2fd usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5bbdd513 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5ed41664 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x603ebe26 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6135f3de usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x643cd72d usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x799c9494 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7cf074be usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x80a0c105 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b030da9 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9af1094f usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa195c388 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb0ab665f usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb86a3fec usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb87cc8db fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbf33de62 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf6a3f45c usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfdc79c49 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3832de0f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x56b3e412 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6198b981 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6c456bc1 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x73db534d dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x770dd6e7 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x81f1efaa usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x823f753e usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8e5c2ae1 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc41b046b usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe28a715e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf5e3821f usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x016afe10 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1c367d0b wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x77471fbe wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9e4678ca rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf608773a __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf907b9de wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfc091e45 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x271af03e wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x56109283 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5b39a4eb wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5bb5755d wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x75627c2b wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x87ac660e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8ac64c32 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb2ab204f wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbfb4b5e4 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca6220a3 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf1372970 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf384e93c wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf51ca156 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfa90eccf wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x276fddc6 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3f6fae3d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x69ee9b8d i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x45ed3658 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x68ff1340 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6e52704a umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9241367c umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa8adb08b umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xad63f65d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc084e3bc umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfd16ad5c __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05bf4c8f uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0bdc66d4 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1035da25 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1412e3f1 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x166ca393 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x213e1672 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x27a3c10e uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b743d2c uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2e02de8a uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3f38a111 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x411854d7 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x428a64d4 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x42cddd92 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4da40e87 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e8d3ca2 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5531bfd4 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55c0e5c2 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x572e6e7b uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67b8f7ce uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ff94e64 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7e13e8f3 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8633faaf uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e638de6 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x910e061f uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x99094dda uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa91641e2 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa94f75c6 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc3b0c27 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1e5fe50 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc7b521c0 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd24a02fb uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xddff4a29 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe798bc30 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xed07891b uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xed9b7765 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf0f89808 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf652954f uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xfc481590 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x00349f00 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x010c4657 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0927c16a vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1a34c171 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e12e79f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x28d7696d vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2cb58484 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2f125b18 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53d8a4d4 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x56787432 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5cf7bc68 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5e0fb7f5 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x607b7183 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ba4dd1f vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x83360cc1 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e414212 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x97aac89c vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9ec85d55 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa67ba488 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xad67d1a3 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb02e99af vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb6ef6137 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc12d8158 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc3f70dcb vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdc57e9a2 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf64f72ed vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf71c7aef vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfdf22c97 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfffbfc93 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3155b01d ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x44f87181 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5bb5e0a9 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9e7a1bea ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb516d2a0 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcdde3efb ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe7aa0d21 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0add7746 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2260860f auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x55dfd110 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x59749d05 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x62c89212 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x970091be auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa722ca94 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xde36ab8a auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xede58455 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf8c06ef4 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x0ea5fd98 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x8bba4d97 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x99b9b4a2 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x042263c9 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x15526b52 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3168654a w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4c7be11a w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xafc60bc3 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc39e2237 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe4737d7d w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeccf4e05 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf76accc3 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2d6d378c dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa98481c1 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xefbe2311 dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3f3a6ea0 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x55d716eb lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x698994c3 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7439f8f3 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x89d4ea7f nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x92cf98fc nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbdd2f48d lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x036ae4bc nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x043a2b95 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06261928 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09223353 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0948cd1c nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x099248a3 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a2dae21 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cbc49a4 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0de1a04c nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fd148ff nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13964752 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13c04393 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15490736 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15ef0d95 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15f27c5d nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16bc7122 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x179f5bb2 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x195a8e88 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a13116c nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a205194 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c3a87de nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22af1b00 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24d61ab1 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x259c7dd8 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a31eb39 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f17ec39 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31751c3c nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3393ab30 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b38444e nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bbc0b4f nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2ada2c nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f7461b8 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x443c223f nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46926056 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4857e916 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c3503f6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ca4ccc5 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e0ad3c3 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50916a3f nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5308274a nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54824405 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x553decd3 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ccda99d nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cf3cacc nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x600f97e1 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6098a5e9 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6404147e nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x665605d6 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x689dd40f nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6da50a97 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ec3a293 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75bb725e nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75f90bac nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x762c20b1 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b300532 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c49fe3e nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e76028d nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f25a2b6 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85cd0eed nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86eecabf nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8719fc3c nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x892c9fa4 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ad8d680 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f308226 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96d19efb nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96ff6485 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a12708f nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a36a0e7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a828b3c nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b841f16 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa006cd3b nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa30e5a54 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3350149 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4581c51 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab352330 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad06171b nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad337f76 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2892cf7 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb47d957d nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4b9920a nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6d74930 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8bd0cd7 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb99ef8cf nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc4e1208 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd2f6a61 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca6bd362 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcca9ae74 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf441b82 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd274d81b nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5642c93 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd59104f0 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8b03b86 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8eff996 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd948caae nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3af0bd nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd3a355f nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddf2c3ab nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0beb96f nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0d3c5fd nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0f7e558 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe18eebed nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe331b7a7 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe38189cf unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe38a1f09 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe507ba86 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe67763a0 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe709acbd nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9903c24 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9f9ccd0 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed04339a nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeda31c98 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee3a1010 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee7ca700 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefa46d4a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf02122a0 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1c0550d nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf402a136 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf60555f9 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf748e449 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7f556e2 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf829d959 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf96fda87 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa318389 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc3bbbc4 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc75b4a7 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x932f9921 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x002c9136 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x043da8e3 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x05043ad2 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a7c30b5 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cd08db0 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0de11567 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e958c72 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f647e7b pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b1ee0e5 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e50435f pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x229cb65a pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23760ca2 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x253e0f2d nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26f79794 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a2a1d29 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b4f3acb pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3005b56e nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30aa4cd3 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x315b274d pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3281626b nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36697cf6 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3bd1ca68 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43f27600 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48cddcb6 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51582d5a pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x58ee29be nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5edd7f84 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x669a0e35 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6dc16ae0 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fe8c2be _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x766835dc nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89317ccc pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89ef525f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8b6dc37e nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f4d04c3 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9101bada nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x990acf4b nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa16ce551 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1d55f48 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacfc161d nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb017851a pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0cd205a pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1becaa4 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb41353b7 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6355bd7 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc439d9bb pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4fc9b68 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc967fb7d pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9a28a2d pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcc981733 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd01ab91e nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd023321a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd072154e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd576bffd __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6df5acf nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdac34b49 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdde6a62f pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6233d11 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6a433ca pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2a56448 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff2cd10a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x16deb4d5 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x2952d63f locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xaede0f8d opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x657eab30 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x9f4a7ce0 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2c1805fc o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x343db639 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x440d0b80 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5a0787ad o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x602cd139 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6eb524d8 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb67325d5 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x39c163fd dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6b131b82 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc463dbe5 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf802b616 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf99fbe44 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfbd913cb dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0329e0f6 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0ecdb981 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa208b14d ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3553f0e3 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x7f9c32f8 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x820404bb torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x4f3cb994 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x6b31ae16 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57861324 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57d39367 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x882ce5fc base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9e0112d0 base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xaedfbb15 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xc8fca8a6 base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xd11741a1 base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xe3d900b5 base_old_false_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x94118ca1 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xda0264cc lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x420bcbbc garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x58ca2b1c garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x66d9bccb garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xd2c4db06 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe2fbe906 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xfba0a005 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x2313f590 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x38c7d81b mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x7fca2f36 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xc786ed66 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc94d54ed mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xfaaa8034 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x9cb6c12d stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xbad57867 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xb86f1dd3 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xcd9db20b p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xa6668703 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x22e47dc1 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x262c7e28 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x310ee79c l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3b68cfa5 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4a266d1c l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x535ace16 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x650327ac l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x661d04eb l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0dcaa0af br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4db182f5 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x77ac592f br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x94a4ab5f br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9997ad23 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd584e9e3 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe4cf99bc br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf7524153 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x608b4b96 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x628840ce nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x02d2ad64 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0c587a02 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15b87405 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21321fea dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b16dd96 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3793d839 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x48af0952 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4fa214d4 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55af1a1e dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x571ca510 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6091198b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68f9318a dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ed9ad04 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74f8ef9b dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76967106 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c16604d dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82323079 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88b37530 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8a1c07ed dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9357408a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa383707a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb47696c9 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcb44382d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd9387af dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf293092 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd466406d dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7a8e3ed dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd1fd8b8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf44e3701 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf60a7151 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfb47e88f dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd94ced6 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x40ed593a dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x87252853 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa60d8e91 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe4c188ac dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xeacaec1f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf2fdc4bc dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x21b982f9 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3226c224 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa7310a2d ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xcdbe9d6f ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ipv4/gre 0xec3a58f5 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xefddb445 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x16f4402c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x193c8b72 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x58bb6cf5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6fba36b6 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa343572b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe0cd32f4 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x0c55bf84 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06d49c6a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x07ef1752 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0c07da2c ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x14b953f9 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x373b4242 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3f5164b9 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x44c6c21e ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6615d472 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x68bce823 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6f4938cb ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x74d0983c ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8a4f26a5 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbe9ecfb6 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc5ff0527 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x181d32bc arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x70ee4fae ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x1d9761f9 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0bfc663d nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x520cd49f nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x5c034c96 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x65b96814 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x95173e40 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x16c2e04e nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0c5d4294 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x24550ad5 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x268d5c15 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xa0e5b6ad nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xa21de18e nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x796cc8ed nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1310411a tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x300f0a90 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6481a9ac tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x774fd190 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcae54566 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7b7673ea udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9f2791de udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xe04afc77 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xe5d8344b udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3d5aacea ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3e23dffd ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x64aeadc8 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7f1f6fe7 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9f5289a0 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe0f38591 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe3bca9e1 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x493d9f2a udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xd4b7ccc0 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x1174cff9 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x34d0193b nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xe168b2fc nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xe25fe81e nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x067c45f4 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x41200985 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x435ccd08 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x900506ef nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xb520ae82 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xa1dfc107 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3f297e2e nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xb290c60f nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xde111ba6 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf0ad6680 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xff92a20b nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x8ccc8183 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x38737943 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3cccacbb l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x49c4eb5e l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5032e049 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x53f1e236 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6d1c66cb l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7150069e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87a5db7b l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8dab742d l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8ef3a561 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb244b782 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc4abeff2 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd992ecee l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf174d919 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf50d8097 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfd87584b l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xd297ebbc l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1270100b ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x25b47519 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x29e127c6 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2fbe467e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x324eeb64 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x383e7767 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3b521a49 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x472fcf94 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x51c38962 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x68b7a142 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x836e354c ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ad9969e wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e71fa2f ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xadade076 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb6c83437 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x11b53aba mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x15ed99d6 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x4d5f03e5 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x56893385 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x048bcff5 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1beff08b ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x314460aa ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x37e5caf2 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x39523a8c ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4107a4b5 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x44921143 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x60dc4896 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6d92e069 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa08caf24 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa9f659a7 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc9c030f6 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd45c402e ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdcb1ef83 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xedf01682 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf5942930 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5bbb3540 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc6d71f83 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd81ff0b2 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xef23ca8c ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00ec3ab8 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02782151 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x085c57c7 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11326da4 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a4e791f nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c74deff nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c8a27d2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2002f7a8 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x275eff40 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27b4946c nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2aa750d3 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cd42eab nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3319e988 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x343f0474 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37ca0e6b nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d96e85a nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x400ac468 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4259da94 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x489d4440 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4aea098f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bca54d7 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e1e5ccd nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5073006e nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50e746c1 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53669229 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x56225452 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57bf3e1f nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cb2e982 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6043c39a nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x628147b9 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6306e227 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x689b16aa nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a760a67 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ca14d37 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73329b2f nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73894629 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7bc135d9 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7cabce16 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e23d927 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7eb31bae nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f345aad nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8974463c seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8999a526 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c8bd2af nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d8c5de8 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9090a6b4 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91a3799b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91f789b7 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92243d5b __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9afd9807 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d072d52 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa336f8ef nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa72030d1 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa854df26 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbeec88 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1a5e843 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3906b8e nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8d490c8 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc41df8e nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbca60979 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbebdb02d nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc09120a4 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc13e5e15 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4510b21 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc54a9db8 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc587e70f nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd24f2d8e nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd31816f7 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd738970d nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe00bb9f3 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecff463e nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeed20717 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeeeb86d3 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefaa9231 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2a74226 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb8f1568 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe73a5fc nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff17c6cd nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xda25ea70 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1875c882 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xb6d95273 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x064b4fd1 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0a8b70d2 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x20c8655d set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5e39507d nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6ee4a2e5 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7e5a4c1d nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a2454b2 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa6349541 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd90388e5 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe68c9eb6 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x17a86793 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x02dbba34 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1a059db8 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6fa72e7e nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x75859ac5 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x30b9a755 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x85b91892 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x06fff989 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1f49a11a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x429a4243 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4d530320 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbc31b726 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfe881cae ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xffb9a168 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x6fbbcd77 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x8a27ea22 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5a99a812 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6608766b nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd59b86eb nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe4408513 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x25606565 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3d1d6fd3 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4e8ff610 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9785b2a0 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xae9ad5b1 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb45ddc54 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd17712e9 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd915a188 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf518b5fa __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x0bbf0014 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xeb31ba53 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x40002349 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8e451f0c synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x048422ef nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0610cd76 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x10730432 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2636b47a nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x285df480 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36ce650f nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x454a6e39 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46557405 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7f220cc7 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x96823592 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9821a34e nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9e6f1df8 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7711fa9 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xadbfd031 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe102be9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd2d8b94b nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf039dc14 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1b55b0fa nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x72bef71f nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x72dadf47 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7c172138 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x904c6648 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9b6c66b8 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd4167bfe nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x08053421 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x81f39fee nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x96341d20 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xaebe009f nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x18fc6047 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe725359d nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xf4d65828 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x119b06ba nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x271d6c37 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x52781f01 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x83fce8d6 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xad31988f nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xadc014e5 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x72f5f1ec nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x92ea2c72 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xe7b9bab8 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x092ceafa nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x7b5136e8 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x14b90ba5 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x15c7896b xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x376c691f xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e6d444f xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x414480e9 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4e99f0fc xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5c3b892c xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x61f06172 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88da6c65 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ae62bb0 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x90d22883 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x92f74cbb xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe2922a7a xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf67eff0a xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x4f89ad35 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x8a1ae9e2 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xc93e359b nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x2ae9b385 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xabe05716 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xd78e04c0 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x69689875 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x819eea1a ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa53131aa __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xab9546ad ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb87b476c ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb8995cd0 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbb013e85 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf373a01c ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xfc042ea8 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0685bd84 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x1d085d32 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x1e5d332d rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x208bf124 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x2467a849 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2e00e798 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x318eb34f rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x43f320f0 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x51c0fe7c rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x6318c1e9 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6dc2d3c8 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x72c20dbf rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x82d6a3e0 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x989dbb6c rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb199719f rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb9b12852 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xbce36403 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc6f4d428 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xdef1670f rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xe30c7f66 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xeb76f288 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf55e348c rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xf91fc493 rds_conn_drop +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x082f96ab rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x73f6858f rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x105d51f3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x379ab6d9 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc14d1b57 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x056ee7d7 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06cbad56 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x076295d7 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x078f0516 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x089ce5f9 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ae7dab2 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b3118a3 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2c533f rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f0507f6 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x133a0fb1 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13fffffb xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1430fc4c auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15944271 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16a45ed7 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181d091b rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x189911e9 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1af8ad5b rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b20b0bb rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c756fe9 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ce64d60 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22c7116c svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x232e2365 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2717d937 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x274b89c3 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2928454d rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b92e5f4 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d25951a auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2de2587b rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dfdb28f xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3148b694 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32595b45 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x343bc7ef unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34ee9269 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36387f93 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3847e501 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ac3e8e4 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c2f01b0 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cdd0b35 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41a1c46c write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41a5b7d8 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43c419d5 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x474161b1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48f5f707 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d8896d xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a8bddd4 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b8fe886 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b9d6c6a xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c8a4ae4 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d17ff8a xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e1f1504 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fb82e9f rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54afd66d cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54e0f179 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54f9e41f rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c0f13d sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x579824b0 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x590f777b rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c4b312d rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cdd2a1f rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60bea1d9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6259648d xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x645f0fc9 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x691ff170 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69a8eef4 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a00d2fe rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ad28b03 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b402875 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd08405 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d2110ab xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fc0f41e xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72e260f2 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75e6166c svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7617a886 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x766f5892 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a3c840 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76bab7e2 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x771ddd5f xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b0d38ff svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cd32019 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d6dcdfa svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e62576a svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e6f0675 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eecb5de xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8228364b rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8340ea94 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x859cb873 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8669f825 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86ea7333 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x879e5908 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8940f716 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a2be508 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b578830 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b6fb1d0 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d09456e svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d365a7b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d632e58 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f55fb6b __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90aaf3a5 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9128a330 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94afac17 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96a64f0e rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97013718 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97db164e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99326764 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bd24fc7 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c3057cf rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c5f1e10 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d7d8876 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e538149 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa024b397 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa06aaa1a rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa227b828 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa240db88 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2e3386e rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4240f5f xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa556624f rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5779c33 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa67457eb rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73359da svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaae5e7eb svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab707884 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xada93baa xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae06dbd4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaeef696a rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafc10a57 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaff44b80 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0af7b5d rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1e0b046 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb22876f3 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb402897e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb483bc0b xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb50938f3 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5dd8726 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb644017e rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8adfae7 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb98be538 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba15e525 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb144b2b rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb218b98 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb9a8be1 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc5b17fe svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc8778f0 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcc43dff rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc06e488d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc09058cb cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0e0716d xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc192a8a4 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc29018b7 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5da7dcd svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc64cae8f sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca61dd6f rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcab695d0 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccecb302 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcec20327 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2e5881f rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd424b214 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4395c39 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4c02de4 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7aa6638 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9a1d930 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda8552ca xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb72a711 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbb82c23 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbbb67c0 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc728832 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc9ff27a cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd1b4eed rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddb96172 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf87fb7f svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe38a33a7 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3a95a96 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f9b5e7 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5368885 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5d253ce rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea285caf svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebf47580 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed9dc74d sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee092ebb rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee8c2d31 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef115d22 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3137d48 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3b05142 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf412b35d rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4ef05a0 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5e011df auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6f0d83f rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8816687 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa1b8c9e rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa3cd622 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb05cf89 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbefcdda xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe812b12 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa2d484 cache_unregister_net +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x04a47e38 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x04f40311 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0de593d8 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x228ce18d vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x23d28712 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3eadb55f vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x525c6bbc vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6252bb8a vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x69ddafa2 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9cb68eba vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9d7bdd7f vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc1286b4e __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfb6f3c6c vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x111abd42 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x28ef4374 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4c6acb05 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5e58f5e9 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5ebbd945 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6eb1709d wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x764ad0c9 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x771a6144 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93053c76 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9c1b9476 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa6fa08db wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb6ffbbc9 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd2cbba81 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x071b9d1e cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x21f6de69 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2eed8d94 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x58ba2eeb cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x697debdb cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x82d46c75 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa131da5c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xac66eb99 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5c48857 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc0ce2410 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xec59ade0 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf14544bd cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf76436ba cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x71d333f9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb1cd2ce6 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xba532c1c ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe4efd581 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/ac97_bus 0xbb665ced snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x238ca6d1 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x2cd82dbe __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x007d72de snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x42bbfac3 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x44892cb6 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x7a43f9c0 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xe9370f65 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xf394cc38 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xfd32db36 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x06bbc27b snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1fa7421a snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x47ccd252 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4a54dcb0 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4c562909 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x59467d53 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6027e032 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc74acf31 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xcc14f2b4 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x04e8f16d snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0a7e0a57 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x12d24719 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x46f05c5f snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x753560ca snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x77df4e5d snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x801cda95 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa60c006b snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbc98dbf8 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd3eb8f77 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf7fa7adb snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x0337a65e amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x31cb99f7 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5935deb3 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x67da59c3 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x734b5aab amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb9353102 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xfb4a0b20 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0255f02a snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02f7f63d snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08a67dae snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11713e8e snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x122a5014 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19590662 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a659f5a snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20dba5a6 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23ab5cef snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x278c6b1e snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28d87122 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28f64f31 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2af95e08 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b2ef377 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e20f1dd snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e5930ff snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x304c0843 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x319d5bb8 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x347f1dcb snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b655ada snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x430e8f88 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x478e9c71 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x51343b7e snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5230ee29 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x528a0cc6 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x569884ff snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x56c83874 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5aea34b5 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ba1fd62 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5fcf1f80 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67c3acc2 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x681dc692 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ecd0597 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ee33e8e snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f90f393 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7802a7b7 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79ec032a snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b679d3d snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ee36e8f snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82252e6a snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8440afb0 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x895d3762 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8b5a6442 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8bf64a9f snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d0b4dfa snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x943370fe snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9da08b68 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f1a5876 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa04eb2f9 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa09dee37 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa65ca4ac snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9c868c9 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf4c8d5c snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb18e5961 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb51666ca snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb682858c snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7948184 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb502cae snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc54c4e60 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd56d1b89 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd7798a55 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda96e35c snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde8dfecb snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea5b177f snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeda2a23a snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xede230ee snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef2173a2 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf47c94ce snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5ffc46d snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6348eaf snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd3e87ec snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x158c55fc snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2c8eed98 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x679272bc snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x799ac92a snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7f4f2165 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8011bda1 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00358b7f snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03700d32 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06050d0a snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x062a8b54 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08c24d88 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09f50782 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a0c99a4 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d132167 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13640e1d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1656eb7d snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18b649d4 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18cd4a25 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d4913fb snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ed128b8 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2052a6f6 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x282cae1c snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29d985e8 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b824f11 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c3b6e77 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c470ef4 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d24dd41 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e73497e hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33a6a7c8 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x359278a2 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37730e44 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3981aef6 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39c1b026 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c24cc0f snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dc4c1c5 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f95cfcd snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x455ff3b7 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4823d2e2 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48f5d044 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49006018 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ab06f24 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d304635 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4eb274ff snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5179125f snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x523a9ee1 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55d404b9 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59a04b81 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59ddc59c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b439e4a azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c7424ae snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61ba17ee snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66c05120 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66d72593 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a88b63c snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b7ef7ce snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c8bd5ef snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d0fdb4e snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fcc63bf snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73c117d8 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7773725d snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x781a2c16 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cd598c4 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cfba067 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e3e397f snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e41996d snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8071aaa6 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8085480b snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83c64ad5 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8431b7b9 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8688a1c7 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87c308a5 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x891f5076 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8962eb8b snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89c32d34 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a821cdd snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b7fc233 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d866e6a snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x917ae3c2 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92c8ff91 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93437415 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9370f619 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9393e6af azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x967c49e4 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a063ed8 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b5dc03e snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c52cd71 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1c39251 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2500622 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3499817 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4da9951 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa70547d1 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaaa90422 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad9c01fe snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb00c7bf3 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1799b92 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2c3937b snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb411fe42 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb837f552 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb93f9669 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba2b77e1 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe418989 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc16b0e15 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7e593f9 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9eb6f64 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd25d175c snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd25d3743 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd260bb18 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd350d1cb snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3b3bb48 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd76f03e9 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd82f2a70 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb018045 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbb62ee0 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde40b7bc snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde5a5ba1 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeaea388d snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee81ba2c snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef1a7083 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf28ddeed snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2a16c64 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf46cdd09 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf50e2640 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7f86ffb snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf91cebcf snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9371125 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9578bd8 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc331fb4 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc564db0 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc97009b snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffca4773 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0e878bfa snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3964d105 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3a7b0122 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d4ed6df snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x44020fca snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x497d0c06 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5d6d72a5 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8c149532 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x95cd28d8 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x97d9e54f snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa497236c snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb26177c0 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb6ec247f snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc5b1671e snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcf83e50e snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd151a5dc snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd8599189 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd91db8e3 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd9e2a963 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe4eb856e snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf529209c snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x54b4a5dd cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x9d9db3a8 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x92119296 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xd034260f cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x58071bff cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7f84dd3c cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xe48cdb34 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x4deef2ba es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x560b7d1c es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x78fcb1dc pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x85ac86d3 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbe74cae4 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xc1022adf pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6de742f9 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x75349bf2 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7bf56a1e sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb7a4830d devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xfc65b953 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xc7bc4d13 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x50efa132 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8cbc851d ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x0aa5e548 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x8908ead4 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xe5295641 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x4963cbbd wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x73f7244a wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x95393108 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc54cce54 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xcd427100 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7c26e6d1 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x11a62ec2 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xea0934aa fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00f3ba17 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x034cdb2b snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x057643a1 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06285a36 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09f787f6 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ac3eacc snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ba9f02c snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bd2319f snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e32de5c snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1098c217 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11a2dc58 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12c390c4 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12ff2319 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13cc6508 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x147d0b7e snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x164c70a4 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1661559a snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175d5983 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18946e20 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f36eae3 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21826e95 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22537e81 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x227049df snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2433a7c8 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25835b8a snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25d90ee4 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28a3dca2 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29c856d4 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2be637bf dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bed01ec devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e6ade7b snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ef7ebd7 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f77bb89 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30519928 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x328ab569 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3311ba22 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b7abd8d snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bd65ed2 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3dccb92c snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42b86ffd snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x443f92b2 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x486ae1ea snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4975e855 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c9fd0a9 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d079bda snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x524b3a1a snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52c13bea snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5419ce82 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x548c2a24 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59a848be snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59b20df0 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a45045e snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5afc704a snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b31aef7 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60c0bd17 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x611c5c10 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x640aaf3e snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x647db955 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67e8b067 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x694bc87b snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a2903ba snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a750c94 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c05b015 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ffa204e snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7316a9e5 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73428f51 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78626664 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x795ea5c0 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ac2f17d dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c3d4291 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d4b810c snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d9b85e9 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7da001d3 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f873c43 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80bc21f8 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8140fbff snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x821722fa snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83dee193 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84d2e267 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8698442f snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87277d9b snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x874aae3f snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8848cdf3 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x898b97db snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8aca0cc9 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ba61b31 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c27a440 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9211ea9f snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94171b0c snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94684fe8 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95939d0d snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95a7e0c2 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95db7a8c snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98538a22 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9853c4a2 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ba35ab9 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9be85d97 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1378142 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2027a46 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa33da101 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa34cd9cd snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3a3d1fa snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4f0ae8a snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ab49fb snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7096be5 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa778ab16 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa860988b snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8c22876 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf132ada snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaff166ad snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1d69f65 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3b2bcff snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4401943 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb89bdc97 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9a7f394 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbacd05db snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbacfff84 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc12916e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdccdb99 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4962b54 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc641d2ea snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc878095d snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb09fc28 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd543732 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf4c00e2 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfa8216c dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0b312f6 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3a1f963 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd564ff3e snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda45e531 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb81245e snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde6af45e snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0989a0b snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe28372b9 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3b72f83 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe758b130 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9cdff5b snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaa1e71a snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebc22c43 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed6521fd snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed8a602b snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefc945c2 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf079b292 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2b939ab snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6a6d963 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6f961f1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9dc8ddb snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffb398ca snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0db48500 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1753e701 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x20c98527 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2fe59123 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x37ef3aa3 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4e260bf5 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7cd7582d line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7e056841 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8e83068d line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9e8a7935 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaf7eb243 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcc55e75a line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe3840787 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xea2156e3 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xed9812f5 line6_resume +EXPORT_SYMBOL_GPL vmlinux 0x00110821 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x0012ac83 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0029356a i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x0047e35f od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x004b6fae mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0065c2c1 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0067f7a6 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006b34c6 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x006c0762 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x0089d10f phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b6047f ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x00d6fdb9 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x00d9529b crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f05c9c bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0106f811 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x010ab03e of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x01158c41 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0131e5fd da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0143cde9 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x018d9145 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01a7674e rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x01aa7251 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01b1a18e of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x01cdcfdf ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x01cfb2c5 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01d0b49a sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02064b18 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x020e8519 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x024ce420 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x026e8500 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x02711b7b led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x027417c8 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x02abcc72 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x02cbe58d blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x02cfd0bd tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x02fb977c posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x02fe2087 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03123a66 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x031ce186 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035af92f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x03615e34 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x03856048 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x0392ff1b dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03afab12 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x03b9e5e4 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f2ad67 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04336841 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x0459f838 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0480b0fc da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x04882037 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d8792f gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x04f2b4b7 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x050912f0 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x05306bfe for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x053c0536 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x053fa62c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x057ee5e7 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a095f9 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x05ef20f5 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x05f11317 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x05f6e8d6 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x06197dd0 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x06252790 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064d4cf2 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06555843 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x06715834 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x0672492a devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x06814411 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x069c679c lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x06c72249 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x06c74c74 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x06f6725d sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x0711459e dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x0733821b crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x074acae4 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0780dd1d pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x079658ef i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x0799e757 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x07a42d29 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x07a7358d ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x07aa73b0 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b35a30 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bb4e36 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x07c4f2d8 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x07ff58f6 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x0813eda8 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081e5f20 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x08232fad ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x08444c72 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x088494e0 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x08ac3118 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x08c36e42 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x0905ffc9 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093a209a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x094a3411 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x0951dc70 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x09521df9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09676cce regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x0968d5c4 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x099ab71a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x09c0dcf8 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x09ef2c92 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x0a02a934 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x0a1f369c param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0a262981 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0a2c539f clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x0a42ba98 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x0a497b42 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a6d475f of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a8f55ca devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x0a91815a regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x0a9e3b16 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x0ad728c1 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x0ae9f9ca tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0aefadc0 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x0af256e2 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0af9a181 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2ac960 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x0b306ed2 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0b476aeb md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x0b5420ea wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b575063 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b8ab54c blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0b8c4c82 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0ba864c7 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x0bde0cd7 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c299989 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c328824 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0c47751e irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0c5a5419 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0c6272ca dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x0c6b5b9d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x0c9bc07e rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0ca664ea driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0cac8b54 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x0cb008ef gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x0cbfc35e __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0d014e3a ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x0d24151f wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0d28796e gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0d301a26 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0d488663 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d513341 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d64f7fa unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8cb1a8 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x0d92d886 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x0da966a7 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x0daba4a5 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e034c6e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x0e1faf26 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x0e2e1887 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e401afe pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0e65bb21 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0e69f87a usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x0e80db2a device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x0e88db0d tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x0eb92ce4 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x0f117d49 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0f1bcfab of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f44b089 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x0f58df01 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0f5ae150 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x0f70b46d extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7a3d34 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0fac88e3 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x0fbbdec3 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd6297c __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x0fe0bd16 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0fffd9ea preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x1011a369 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102895f8 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x102d7c02 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x10688794 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x106da7d9 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x1078a4fe devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x10997c7e xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x10a71990 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x10b7bbcd dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10e144be nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x10e4f80f hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa0a3c pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x1110d9d9 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1141a0ab usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x114ff6d2 split_page +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1188946b clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x118cc234 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x11928e2c led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x1195b198 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x11a07ed6 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x11a398e9 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x11ab5b5b ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x11b8ebbe dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x1201474b gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x1207e075 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x120e6b0b fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1239c833 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x123e3018 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x12498fa7 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125b79d5 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126aec7b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x127c2a14 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x1286247d pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x12955ca8 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x12af5946 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12bf276d srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x12ca8e17 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x12f26529 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x12fe3dac transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x130f0a62 device_move +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13464c3e regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x13566061 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x136c3419 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x13806b8f devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x13905cc6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13cec999 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ee9ce3 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x141e0169 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x141f015c platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x14245a56 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x143ed792 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x1453b7e9 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x146a83cc swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x14812ce8 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x14b67d1a ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x14eb1e6b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x1504e7ea pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1517af8c ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x152840eb mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x152df694 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x15432b80 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x15461257 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x154dfeb6 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1570542c get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15c6c2f2 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x15d37527 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16132a61 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x162f4952 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x1631eace platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x163d6424 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16642436 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x166a2d4f usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x167d94c1 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1682377f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1696d598 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x169c0f49 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x16a2cf94 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x16be6bb6 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x1707ee67 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x173ef90c scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x174f871f device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x17798528 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17cdfead regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x17e7ce06 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x17efa85d cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x1812b687 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x18169809 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1847ba13 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x184abc0f wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1855c7f8 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x185996b1 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18ab5667 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x18ae9710 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x18dae759 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x18f96c78 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x18fff892 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x192decc7 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x19374d6f bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x198230de __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x198251ba regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x198b55e2 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x199ecb55 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a4ace2 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x19be682d device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x19e135a7 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19f63243 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a03629d pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1a1a1cb5 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a27087f rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x1a41602a transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x1a4b5acc rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x1a79a0ab scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x1a83e83a arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x1a87039c regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a88ebf7 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1a89d85c pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa8bb88 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x1aabcbd0 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x1ab5980d irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad45cad irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x1ae9ceb1 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x1b02d06c driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1b02ece6 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x1b0ef82f wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x1b18ea52 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1b28ca0a __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x1b40e988 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x1b4847b2 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x1b4b1499 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b86a530 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1b8b8547 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x1b8f4ff0 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9bcc80 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x1ba057e0 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x1bc44a4e crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1be317fb arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x1befb4c9 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x1c3453dc sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b03a9 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c61c5b8 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x1c77f0d0 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cae38ca gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d15c6b0 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d365aff sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1db7a3d4 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x1dba5ae7 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x1dc03661 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x1dcaa4a9 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1dd01b53 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e260b35 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x1e33e706 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e3c986f of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7e2ca2 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x1eb3b029 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x1eb4888b stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec46ffe ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x1eca71db kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x1ecffb59 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1ef95732 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1f108898 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x1f18805b tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x1f2d753a pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x1f2e5b87 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x1f4abe1c i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1f77da01 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f78991e perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8da49c free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fadb55a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1feba791 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x2003ae26 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x200fd6d1 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x2020be81 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x203b5935 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x20417548 dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x20530ff7 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x206ce33d dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x20779dc9 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20c2e32b pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x20c418f1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x20c96062 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e9fdcd cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x20f7350e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x20fea484 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x2124459a inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x21320cda driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x21376014 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x219e0c58 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21b4bfae regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x21b95b60 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21df51e6 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x21ed163f pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x21f0bbfe ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x21f5bfb5 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x225ef425 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x226bfc47 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x22920a8e register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a23a50 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x22e93435 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x22f229c7 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x233a360d l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x234e00a9 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x2351f6cf sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x23587cab of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x237cf560 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x2398b6fe usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23d4d524 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x23d699ae ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x23e15883 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x23fd82c0 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24075db8 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x24360e45 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24617b03 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x247e73d9 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249fcdf9 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c90d6c shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f6296e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x25218fa9 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x25327096 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2538f444 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x25426979 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x25701e3d wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x25769e2d wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x257c47b8 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x258838b1 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25dcce22 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x25ea3958 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x25f7e29f regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x261fe7fd debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x2628b4a8 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x262b5b2a power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x262ceecc usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26367298 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x2636b060 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x263f49d2 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x264e96bb gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2659440d max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266e6169 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x266e7adb max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x2685f76c phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x268af2e1 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x268e10c4 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26a183e3 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x26b01572 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bd0a04 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e1051e tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x2704b8ee devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2750d4fd pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x27542af7 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x275a38ae irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x278112f8 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278b3b07 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x27abe05a extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x27bb8cea adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ccde85 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x27cf088d devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x27e69fd8 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fedff4 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x281fbcda extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x28217c30 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283dabea crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x283e7a36 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x2857c461 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x285fa6a7 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2896037b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x28a033ee ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x28c99737 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x2901c777 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x2904b90e kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x293098c1 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x293233b5 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x2958be84 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x2964cf87 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x29678ec0 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x2993341b ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x29967347 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x29bef017 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x29c472fb add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x29c88995 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x29f46d4a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x29f57ceb thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x2a03341e stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2a1212d1 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2a214e3e trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x2a403141 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a4ace94 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6e8ba4 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x2a75f449 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x2a92729a map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2aa300d3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2aac7303 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2b073695 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x2b09ac81 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x2b1bcc8d gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2b1fa4e7 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b3b1631 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b757cf0 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2b79443a of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7c5c5d skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x2b7dd4be remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2baa0097 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2bc00437 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x2bc63d1d dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x2bd2fb22 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x2bdfadab __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2be2f6de __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x2be97c80 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4234bd regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2c4fab2e crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2c5eca11 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2c5fb4bc cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x2c6027b4 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2c62a42a fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c86317c usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cb557d4 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x2cc3f210 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2cd66d18 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2ce92280 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d05ee2f devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x2d10548f gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x2d16bd61 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d3d0193 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d8cf7ef of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x2daa4a56 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc9324b ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x2de27eb0 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2de6f154 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x2df3e0e0 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2e210dfa msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e294bea trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3195b4 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x2e476714 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2e91babb gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2e9dc91d pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x2ebd57ef mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ec93fbd device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x2ed172e2 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2ed242b5 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x2ed69071 find_module +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1f9fdb wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f7bc4be of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x2f8ee385 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x2f90a139 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x2f9f25d4 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x2fa1c059 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x2fae78c2 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x2fcc439a gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2ff03bbd rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ff63c0d regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3003d618 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x30329eb0 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x30674212 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x3095df39 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b94064 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314d3955 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x314f75d9 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x315b6bd6 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3183dcb4 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x319a063e kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x31a4e9a2 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x31bc57e1 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c218c5 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31db8b76 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x32033948 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x32098f0f md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x32157966 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x32178548 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3250281e rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32ad8b5e crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x32ae6aaf regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x32bbf095 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c26f43 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d4fd18 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x32f98f41 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x330791bc dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x331c8036 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x3324365c cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x334902f6 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3350e6a1 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x337948a8 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x33932559 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x3394aeed devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33bd0850 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x33cc36d8 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x33cf1746 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x33e35990 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x342b3f03 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x34388a0f devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x34429dc0 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x34641abb regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348448d9 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34acd6b2 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x34db05d2 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x34f039f7 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34f1ba04 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x35058f42 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351babec led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x35373e9b kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x353c0171 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x353c983c pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x354a1a34 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x355a3a53 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x3562d825 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x35660397 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x3566f37a skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c04e97 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x35c4db09 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x35c5ca15 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x35df8dfa netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x35e1e32c ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x365acb37 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x366eeacd bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x36869330 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x369060c3 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x3696ef22 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a18ec3 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36bff485 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36f1b163 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x37005097 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3740594d dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3742a341 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x3774c1db uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x3792cf1b rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x379889fe usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x37b305e5 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37e8f0a8 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37f37106 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x37face32 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3809ae18 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3859edf8 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x387cd636 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x387daebc proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x388a7df1 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x38922df5 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x3894fbb4 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x390dcb43 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x39212255 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3928fa82 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x392e2711 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x39366aa8 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL vmlinux 0x394676b7 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x395a6282 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3992b8ab blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x39b0629d usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x39bae96b sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a02f11f uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a06aa14 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3a141f68 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a496703 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a552c1f arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x3a6091ce power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3a66eb5c tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3a730088 input_class +EXPORT_SYMBOL_GPL vmlinux 0x3a7c9702 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3a846881 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3a9fd4d6 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x3aaceab5 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3afac66c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x3afd9e85 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x3b1cfae5 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x3b39f5db of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x3b473693 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x3b4e23f7 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3b5d1e98 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b61805f netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x3b814dac debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x3b9545f4 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x3b9dc41b mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3bba36f3 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x3bfcfda9 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3c023e88 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x3c1d0c01 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3c41da1c crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x3c55ce80 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x3c58cb4d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3c681de8 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x3c7141ef gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x3c797202 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3c88167c put_device +EXPORT_SYMBOL_GPL vmlinux 0x3c91a6c5 dev_pm_opp_get_suspend_opp +EXPORT_SYMBOL_GPL vmlinux 0x3c92b97d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ccedba3 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ced3247 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x3d0140fd ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3d04d865 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x3d24b0d6 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x3d2f52b7 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d59e872 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3dacc982 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x3daccfd7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dbd23bc crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0ccf8 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de08a01 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3de8ba30 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e0964a8 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e2eebd3 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x3e453570 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x3e57067f irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e76acbd pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3e9eca2e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3ea90964 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x3eb6ed68 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3ecbbc52 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x3ecead23 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x3ecf1575 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f272d15 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x3f534450 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x3f5b3ab0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x3f8d612d crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x3f9bb2c7 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x3fa15073 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x3fa29281 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fdbb8e5 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x3ff379f5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x40027fad pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40738293 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4075d8ee extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x4079b369 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x408da7d5 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x40ac0edc usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d51d62 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f6430f regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4115b86f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x413ce486 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x414a90da md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x416004e5 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4196924b kick_process +EXPORT_SYMBOL_GPL vmlinux 0x41a65f7c cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41f71659 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420dbd76 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424b183d tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42569ab1 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x425742f7 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x426633ee debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x427c9af9 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42a70c2e __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x42d584c3 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x42d90696 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x42d9e75a rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x42ddbb91 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x42e33a9a cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x42fae453 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a9c5aa rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43b84c73 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x43ccf9c1 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43dd86bd rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x43e0ec70 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43f9cc63 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x43fec75d tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x44722c6c gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449824d6 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x44a06159 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bc917a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x44eb4eba ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x45152efd pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x45231382 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x4570924c mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45805f9b kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0x45b64c0a dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c3e017 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x45d81f6a virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x45fbb720 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f23e6 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x46144e60 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x4632afa4 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464653bd pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x464ecc52 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x46507363 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x46571098 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x465ba2e9 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x465e26e4 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x467bebfc crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x46818df3 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x4687fe75 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469be8fd smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x469e0c69 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x46d26e4a __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x46de3b4a dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x46fb8ac4 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x4708c36a of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x47200ae6 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4748de53 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x47497e85 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x47509748 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x475e3066 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4768bb83 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x477e066c debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a8dab2 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b09086 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x47c7c3f2 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x47c88df5 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47cbc0e3 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x47dc57ea device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47ec3254 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x47eed08f regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x4823fd77 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x482dca57 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x48479870 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x4848fc0f regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x48498c43 get_device +EXPORT_SYMBOL_GPL vmlinux 0x484bbda3 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4862bd8c cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486b4080 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x486d1c53 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48c55ff9 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x48d6f304 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x48decc3d ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x49074809 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x49177848 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x49314daf blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x497b77de virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x497e2cec sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4998c81c device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x499d577a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x49bd013e of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x49cfc3e2 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x49d12224 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x49e62bc4 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ececec percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x49fe9bed __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x4a005742 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x4a139f59 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4a1a0355 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x4a412090 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a56bbe3 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4a6084cb sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4a70484e dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x4a89a090 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x4a8de255 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4aa89b06 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x4aaaadcb rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abae433 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x4adeeb06 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b09fb3d dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4b1d77c6 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4b2d72bf devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4b2e18fd of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b6bf79d fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4ba2d099 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4c11f754 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x4c2ecdcb __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x4c452f2d find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4c46b93c mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c64b455 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7abb32 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x4cc1e1d7 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d105f7d sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x4d3f9a50 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x4d414b28 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x4d4e03f1 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x4d75cbb4 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4d75f816 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x4d819155 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4da180a9 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4db4b770 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x4dc56e33 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x4dc61f0a mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x4dd44b4e fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de7fe81 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e167ff3 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4e1689a1 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e280cbc get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3b474f kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x4e68f615 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x4e761101 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x4e78f573 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x4e92fcd3 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x4ea8ad99 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4eb14845 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x4eb1d49f ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x4edd1f79 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ee05b0a fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x4ee2187c kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4ee30400 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x4eeae1cf of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x4ef4a6ba register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef735b6 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x4f244931 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f4bf92c net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4f50528c __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4f561a38 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f739d96 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fece036 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x4ff2a4f6 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x500307ef thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x504c23a1 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x506a0b83 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x5072ffdc ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x507e4cc6 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b136bb srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d49389 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511469ee fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x511640af device_del +EXPORT_SYMBOL_GPL vmlinux 0x51391f93 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5144f4a3 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5151b06c crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x51719489 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5179c2d0 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x51966b51 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x51a90132 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c08c8f sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x51c9f54b shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x51d384a7 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x51d59493 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x51db1955 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x520f9cea scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52157577 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x521c68fc of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x524e29f2 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5270bdce ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x5274c88d kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x52924f20 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5308d329 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x53124f47 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x531b6bc8 pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0x531d5260 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x534a2b42 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x53586e31 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535a20cf blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537d8e1e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x53809ae7 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x539c61f0 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x53a6f12d simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x53ad31a7 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x53c2dfee inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x53c4e0ad class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x53ff9875 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x543779b7 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x544eb88e crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5463dabd __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5471cf9b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549329b6 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549d9752 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x54b0b953 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54ed4eb6 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x550cef3a nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5514f30e class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x551a4554 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x552f676d kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x553098b9 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x553acf9d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553cce33 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554da6c2 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x5560b37b tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5561ddb5 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557c1792 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x55bce0a9 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x55c1abe6 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x55cd6808 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f54618 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x5601c801 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x5604c710 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x56081e0e kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5609e0d5 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x560beb4e usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x561746e0 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56374d26 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566aab02 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x567b4510 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56b0ed5f clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cdf5a9 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d81ad8 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56ed3026 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x56f29cab anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x56fb300d uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x56fb7d94 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573cc479 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x574e28d9 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x57754c33 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579cc658 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b72106 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c7ac4d usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x57d3c91d blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x57e59d89 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x57fda06e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x58051c01 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x581a75ed blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x581f0637 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x583cf032 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a2ab9c bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x58bc7a79 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x58bee2d6 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x58bfd249 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x58c26376 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x58c647e4 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x58c7fe8b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x58c91c65 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59202388 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x593389a0 md_run +EXPORT_SYMBOL_GPL vmlinux 0x593a628c clk_register +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x5981350e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x598d1d76 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x59b0d67d sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x59c4f868 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x59e6c5f7 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a3ba384 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x5a57f039 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x5a65c37b devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5a72c3f8 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5aa464e9 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5aacb17d rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x5ad47860 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x5ada5e3b ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x5af6107b securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x5b1d35b8 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x5b21117e device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x5b4bba04 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5b50fe01 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x5b7dc9d7 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x5b80cf83 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b8bb4dd kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0x5bc81160 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x5bcd4032 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd8721f phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdea81e kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x5c12ed72 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x5c2296ee platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5c253b42 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x5c255ff5 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x5c2a5b45 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x5c2a7802 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5c3bf387 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x5c54badf ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c792a82 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x5c7f3e10 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c8f6c64 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x5c9da02c inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x5ca03b31 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb25deb irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x5cc10c54 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf7c034 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5cf9a37a ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2f8445 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x5d9425cb __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da8d9ee crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x5dc32d81 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x5dcba64e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5df736e7 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e1a1735 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5e1fbd12 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x5e4ca1a0 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e75f5a0 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x5ea0044b thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ea981eb fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x5ead9c3e dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x5ee35187 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x5eea116d relay_open +EXPORT_SYMBOL_GPL vmlinux 0x5f03f2ac crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5f29a0d3 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x5f4e639b debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5f63f1cf blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5f9393a1 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x5fd491d6 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x5fec71c1 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x5ff28b42 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5ff6c9b4 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601e44c7 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x601e9b7a __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x603e080b component_del +EXPORT_SYMBOL_GPL vmlinux 0x604060d2 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6081c685 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x608abc54 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x6093ad3c aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x609c47bc sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x609d103e mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a998cb ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x60af5459 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x60b104b3 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x60ce470f swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x60d46592 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x60e14516 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60ea45f8 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x6104e759 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x611150e3 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x6120e929 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x613b1c3f pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x614ede11 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x6183ded0 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x6196c8c8 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x619f757c pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x619ffd5c device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x61a3e7d9 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x61a8dd6b regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61acbf89 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x61cb22e2 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x61ec27db pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x6204cbf9 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62323547 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x624d71bb usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x62695c1c __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62da2561 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x62de20ed kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x6303cfa7 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6326b41d gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x6329a47e key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x632e3a71 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x6333bf7c kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x638c0d8a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x63a60204 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x63bccae1 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x63be3bbf napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x63cec9d7 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63f2dcba irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x63fbc4d5 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x63fcc27c transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6411ae40 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x64200764 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x64319d03 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x64531fa3 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x646ee914 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x647fa849 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x64a70cfc io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64b7b7b9 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x64ba3fc4 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64c529ab eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x64e17be7 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x64e24a5e memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x650efb17 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6538992d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x653e0c5d kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x653f5813 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x653fbd93 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x654f1aa2 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x6554d8ff netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65596d00 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x65690cde __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x656b3454 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x65708990 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x657e63cb ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x659ef299 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65cb5e8a __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f313d0 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x660d75bf usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x66136122 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6637f349 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x663cb34a devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b1f815 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x66c49152 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e91977 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x671f440a unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x67203532 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x67250e94 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x6729a721 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x678cefdc platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a084e5 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x67bea55a of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x67d31052 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x67eab385 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x68220731 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x68239161 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x682e6bb0 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x6842c46c inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6849d067 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x68574513 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x6871abee regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x687b3570 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x68865778 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x6890f73c tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x68925ad3 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68b1bc9f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x68e38dd1 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x68e66420 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x68ea80b8 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x68f4d0aa tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x68f94512 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x68fbd230 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69441b11 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x695d66b8 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x697ec0a2 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x698289cb tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x69885ba3 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6989e777 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x6993b22f crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x699b7c01 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x699d54d1 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x699fd2f8 irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x69a5c72d regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69be34a0 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x69c8a96d mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x69d6f46f kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x69d7a813 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x69daf71d perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x69f0b10b scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x69f3ebc5 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x6a328b39 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a56b1fe tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a7ed756 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a942773 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6ad60bea sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6b1fa55e blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x6b22d330 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b362ded pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b8df847 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x6bb70875 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x6bb94521 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x6bc3bd47 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x6bd8735a blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6bfbd30a of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6c041384 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c0a89be sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x6c15c018 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c31838d __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5c4bb6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x6c6b0282 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x6c7d7f92 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca913cd nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cb581d4 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6cca7132 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdaa1ce devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6ce0f9da usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6d04f2bd blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d5b9c50 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6d74237c __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6d90cc52 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6dac0acb hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6dbad3a9 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6dc5627f crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6dc66e62 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e05181d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x6e20d302 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e64ec65 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e726dc2 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e82bc1c dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eae6bb3 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x6ebd1c40 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x6edd9362 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x6ee86d29 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x6ef9a07a devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6f1b503c devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f42b527 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6f73faae pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f942a40 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6f9cd632 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x6fa9be0f pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x6fbc001c sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6fbe92b5 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x6fca9c75 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffd1601 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x700228c7 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x70028c82 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x702381fe perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x703354c6 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x704fc43a pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7052ad05 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x70595d82 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d20446 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x70dad105 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x70f40aec ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7121ab02 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712d2fc6 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x71366668 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x714e3d89 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x715bea70 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71769c78 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x7182344f regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x718af187 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71c22dd2 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f6b810 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x71fd04d9 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x71fe84c1 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x720d0524 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x724e55da driver_find +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72537d21 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x72723522 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x7272f62e crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72790fbf fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x72843b41 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x72a7e53d ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x72b1590c class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x72bb6706 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x73102efa clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x731be924 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x73379808 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x733f92c4 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x73715f4f shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73ae6a70 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x73aec4d3 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73b504b9 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x73b52798 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x73b96e53 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c5d6b0 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e72b2b pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x73edb883 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x741ca4fd rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7446df20 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7446e415 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x74577670 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7468b74e __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x7475f05b sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x747b7fc2 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x747fd716 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x748b1f5b pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x748f15e5 fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0x74b1606b da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d007c2 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x7506532f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7526ff65 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x75329035 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x753a387d regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x754e9625 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7550d029 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x757739b0 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75a49a06 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x75afca7f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75decd19 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x75f161cf usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x75f9729e get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7635c567 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x763c812a device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x764bbf3f ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x7652cdc7 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0x767e1022 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76905e3b dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x76bb301d cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x76c822e4 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76da3c74 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x76da602b rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x76f2f7a9 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x7708d66a devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x770ce416 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7710a45c devres_find +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772f7b5c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x773e367f class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x774400fc usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775e7230 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x777ad742 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77bc8995 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x77c9c659 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x77d5a911 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x78151326 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x78167486 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7817ada9 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x78386839 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x785cf1c3 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x785d88c6 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x7865d8a9 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x787918d6 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x78816fa5 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x7893d08d pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x789cd4dc devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78fc6e3a clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x79033b0e devres_get +EXPORT_SYMBOL_GPL vmlinux 0x790f73f3 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795c73b2 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x7968a96b sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7987e54b nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x7996b6e3 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x799a81aa nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x79bf0286 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79d503ee device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x79dc2b5b devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79ff9e08 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x7a01a1e4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x7a24870b sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a4d53d7 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7a641b41 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7a786dae driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7a8001f0 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a986052 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x7a9ea486 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae27462 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b12e8d6 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x7b13c22f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b4ee3bb usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x7b790142 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x7b8def48 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x7b9237cb fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x7b925a64 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bb4e94f da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x7bca731d rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x7bcf9785 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7be2d77e extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x7be683f0 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bec5336 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x7c1f3d85 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7c47409b devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c4d8fdb __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x7c5552f4 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c5ed99a of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x7c8a7609 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca376a5 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x7cad0448 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x7ccf21d9 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce712c4 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7ce7a030 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf1708e dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d1da7ed crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7d221091 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7d28fc49 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7d2df4dd ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x7d525b4e skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d98c936 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7daa2f08 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de04fab __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x7de4f7c6 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7dea2d07 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7ded9826 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x7df38a77 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x7df63c14 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x7dfcb328 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x7e02fba1 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x7e05634c gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x7e0ab580 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x7e0d409c mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x7e14e15a task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e1e866e ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7e3faff2 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x7e41ba16 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x7e48f803 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea7f205 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x7ef0b2fe led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f1c43fd is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7f4771dc usb_string +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f7d4381 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x7f879d14 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x7f8803e0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x7f8b7cf5 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7f8fe6e9 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7f99b0ba ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7fbc5d35 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7fbd6be3 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8006302b sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8007d5aa cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x803168b7 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x804347cd pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x8047e93c of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x804f29d3 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x805003b1 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8093faa7 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x80992340 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x809df83a device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d052fd scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80dc17ed dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812c1336 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81522826 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x816ec649 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x8173731e class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x817b321e crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x8180eb59 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x81b0a2d0 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x81e954c5 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x81f4cd53 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x821e8b13 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x823b9143 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x824cf652 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x825f02f1 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x826c5611 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x82744311 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x82985246 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x82bc27ae rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x82cdbd0d devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82eaa78d device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x8307c5bb ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8368d76e extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83775f41 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838d603d dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x83c2f4b0 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x83c574b0 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x83ebb43e nl_table +EXPORT_SYMBOL_GPL vmlinux 0x83fdc6a4 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x8411c23d sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x844cf498 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x845ec2db perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x84804082 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x849e3634 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x84abf57d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84d64578 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850e9449 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x8514c24a sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85300006 mmput +EXPORT_SYMBOL_GPL vmlinux 0x8566a1d8 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x85a14fb6 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x85a3afd7 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f6c6f4 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x860c9b21 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x8644fe5d ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8646fc17 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x864c308b gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x864d4613 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x865561e1 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x8657d62a usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x866267d8 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x866735d8 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867d2620 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86ac1819 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x86de81a5 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86fac1e1 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x86fd468b pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x87183641 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x87210ef7 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x8760f722 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x87775544 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x878ad5b2 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x87def0d1 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x87f58607 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x8802e48b ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x880e9802 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882ec5c2 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x88a569ae usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e90543 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89363987 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x8953d7d3 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x895a4b19 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x895b9bc9 user_read +EXPORT_SYMBOL_GPL vmlinux 0x898edfc0 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x89973421 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x89accd54 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d3b165 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a721cd3 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x8a9b2301 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8ab2a2ab serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8ab39b6c wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abdac00 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x8acbea65 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x8aeca816 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8aefdda8 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b329eaf exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8b53287f ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b55af18 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x8b5b42c5 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b7413a4 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b83560b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x8b84deb4 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x8ba0d61f power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x8bac4b19 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x8bc1854d sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x8bd57d9b regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c235679 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8c3c829c __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x8c4b54e9 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6f278c cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9411cc kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x8caaf130 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x8cc5a9c0 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8cdf8d24 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ce312ba __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8cf25c02 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x8d14e764 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x8d28c5cc ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x8d3e4aa7 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x8d48e165 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8d6a247b gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8d6a5ba4 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x8d8fcbc1 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dab4462 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8db84546 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbbd69e ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8de041dc usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8dff3ef0 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8dff7f20 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x8e0c1e43 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e1c60d6 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e371c15 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x8e48153b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x8e578c3e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x8e62a110 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8e636f2e dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x8e653552 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x8e69a2df crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x8e7f2bed tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x8e80a31e kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x8eaa0da0 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8eb5b758 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x8ecc24f4 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x8ed17692 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x8edabd09 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f091e2b of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x8f1d6c76 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8f1daeba regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8f1e528c crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8f2109ad serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x8f29dc38 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8f29f276 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x8f4a9c73 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x8f4faafe blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x8f673c13 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7bb43a clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x8f927d56 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x8fbb85a8 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x8fcb6dfc led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x9006635a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x9022d5bc memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90555680 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x9056f61b rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x905d02b3 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90693d6a __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9069e061 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x907f0bfa ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ab8be5 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x90b5b510 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x90c68af5 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x90cf30fa devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x90f68414 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x911d2b18 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x912da36e put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x913471f3 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9140951e input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x91488c96 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9154f2a4 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x91638d81 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x916c6fd3 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918c0615 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x91a7bc7b event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x91ac69f9 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d9795a rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x921c998b inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x922b01ee spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924e2bc9 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x92a5692e crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x92b39536 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x92b571ba crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c6fdc2 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x93088dad blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93503a3a unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x93587999 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x93706180 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x937d7b75 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93bf2fcd __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x93c7b171 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x93dd3d90 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x93df969e dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94266eda mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x942a56e8 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x9432b036 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x944128dc da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x94552387 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9458632f screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x945d5d95 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9470fe6f arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x947e38a1 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b95cfd mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x94ceae25 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x94d8b204 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x94e272dc wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fd8522 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x95006994 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950d985c uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x95159f68 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953196e2 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9533b502 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x9533b5cd key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95678c16 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95eb5cae ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x95fde1a4 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x961134f4 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x96216ffa shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9631626f __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x963c1e6c __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964dd830 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96711643 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x9671e49c blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x96a4fd12 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x96aa93df crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x96e02727 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x97253075 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x972c7c26 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9788871a irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x97a88f28 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x97b0713d get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x97b20c3c perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x97bb9033 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x97d1f71d kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x97dd5ea5 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e4cf9c crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x97f1b577 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x980950bd thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x981c842b irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x982b7dfc simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x983eb384 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x983f94a4 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985486dc pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x9861ebc7 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x986db4d0 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x98766041 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9899022f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x989a5f4f crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98c74ba7 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x98d44745 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98e6b745 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x98f4875e pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9908953f rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99280409 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x992a03e6 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x992ce714 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x993dda47 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99454752 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x9957f0d8 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9968d28a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x996e2220 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x99743808 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x9982320b gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99933968 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x999a652e virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x999c5786 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x99a1e34f blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99ce0592 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x99fbdb69 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x9a0d0ec6 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a11f5c5 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x9a2f1f3a generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x9a31fb38 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4e3b65 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x9a5d2554 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9a6bee6a rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x9a77c122 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9e8e9a of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab6b30d tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9abd726b pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x9ae60f8c call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b06dcbd of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x9b103b8c pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x9b5b8d03 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9b5cc1fe devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9b5e6b42 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9b812d0e ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x9b8d40be usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9bdff04b usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x9be233d5 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bedbcbc of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x9bfdab4c __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x9c024588 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9c1b09a1 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x9c4a18a1 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x9c785c59 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9c87c860 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9cadeb18 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cda03a7 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x9d065422 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x9d0af325 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x9d0bb5c9 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d96dfa0 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9d9b6bea ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db4baf9 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x9ddf0f04 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x9de5f972 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e0bbd6d devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9e236086 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9e2567ae rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e25fc0e alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e71d7f1 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x9e813da1 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9e8f1fa7 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9e93b6f7 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9eb5e51d usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x9ebb7726 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9ebeec2a usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f07cbde fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9f11c106 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f6175a8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9f6644eb pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x9f87a1ef ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f9a321f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9f9dee52 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x9fb20067 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa00bbc87 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xa01d78a2 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa028b5bc pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa0418435 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa05e6b0d fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xa06ac54f ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xa08a2976 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0eab774 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xa0f9e362 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xa1538064 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0xa16aa109 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa191b0b6 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa1965024 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xa198370d usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xa1c6f0b2 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa1edba52 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xa224f4d8 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xa23b720f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xa24f7ba2 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xa25b9f1b pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa26ed232 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xa28276f3 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xa284eff6 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa28bd71c clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c100f2 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa2c995ac vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xa30165bd usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa30c97c8 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa34a7f46 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xa358ee83 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b35c6d phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3b9dd64 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xa3bece56 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xa3cf80ef smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa3e5e537 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa47d9fe3 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b058d7 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa50a2df8 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa53f4f06 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xa554e89c hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5576189 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa55c3396 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xa5626642 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa5a31475 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xa5ab6cb0 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5bc89f7 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa6114d01 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63e7a67 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xa64c48b5 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xa64f355a pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xa663a3a1 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0xa68f916b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa695cd54 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bd886b rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xa6bed125 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xa6c5b504 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f91f76 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa702cf2c debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xa72d4fb3 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xa7394249 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xa7524760 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xa7593baa pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7885fa9 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xa791109c devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7acb8a4 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7b7aa5d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xa7d6f64c dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa7e6c310 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7ec893a __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xa81b20dc vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xa821e79e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa827c535 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa82b310b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85228ab pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa861c361 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xa87516ea pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xa88a6a81 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa8991059 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xa8aca9eb device_register +EXPORT_SYMBOL_GPL vmlinux 0xa8adcc5d pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8d04780 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa8ec96c1 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa8ecac18 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa8fcf4f8 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa91d539d sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa946d7c3 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xa94c35fa rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa96fcb95 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9b05155 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa9ba9ada usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fae4ad adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaa03e190 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xaa0d5aef cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa22f1b4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa95d406 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xaa979e19 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab8a4cf system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xaade8234 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xaae2e8f1 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xaaed3f0b tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaaf97c98 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaafe8ad1 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xaaff11dd regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab33ff26 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xab36acab vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xab4079e2 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6b872d devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab813dab kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xaba85b7e devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xabae5c79 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd99f9f ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xabffaf28 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xac044027 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xac168a68 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xac96f3dc md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xaca7c6d6 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xacbfd1d9 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xacdc2b3c sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xace0b599 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfdf5f8 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xad1d3bd5 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xad1e2bf4 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xad1f9b6a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xad27b984 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xad368af8 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xad44a1ae mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xad9f4521 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xada66614 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae14415b __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xae17d523 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xae3d14c1 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xae3d4b8d pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xae428f33 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8ee7c5 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xaebadb47 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xaebb7c16 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xaec61b89 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xaee54130 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xaefb80b3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xaf1bf3db udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf723993 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xaf81ed88 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xafe02ce4 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb01aa1f3 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb03ff589 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b4e9b7 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0fe0a96 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xb121b206 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xb12cf6ff to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xb1310c80 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb140dd35 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb146e2a8 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb150ec2b extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb17d2267 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xb183b95e mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18df05b wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb19b0651 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1d05998 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1f693ba __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb20faa65 component_add +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb2267371 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb242bc33 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xb25b60f7 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xb26dbf17 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xb29c0d6b unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xb2a0a70f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xb2a1e67d raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb2b9d27a rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2d92f82 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xb2fb3b11 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb30a456f regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb33ba2cd dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xb3558a5c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xb38ee54c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb39a57d9 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb3bebaf1 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xb3ce7873 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xb3e466d1 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xb40b5de5 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb40d8d8f __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb4141475 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xb41eb01a xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xb42bceba usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48b3185 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb499f793 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb499f7cb usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb49a6371 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xb4a58d5e unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c839c0 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eac4ad dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb508587b fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52cdec9 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54d40db cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb55d3432 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb56aef7f relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xb5788862 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a8a368 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5ac8529 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb5b47434 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xb5c0d7d4 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb603f522 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb668a546 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xb678fa5b dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xb6861d86 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb6915936 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb6a2da9e sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6cc849f usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb6cd50e4 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xb6cfc60d thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xb6da39d9 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xb6dc8fa8 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f36069 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xb7033ae4 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xb711d130 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb718a9b2 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb74cb552 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xb772658c phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xb77b1b02 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb77b87b4 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7977f22 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7a62bb6 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xb7e8851b scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fdd7a6 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb80d8c9c dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb817df20 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xb82ce372 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb87db425 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb87ec4bb zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8909285 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb8a36734 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xb8b0fc70 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xb8cca3f5 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ed164f locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9214df4 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xb92388a5 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xb924efea crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xb929a1a5 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xb9311ddc __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xb960e591 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb967e107 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xb9712cf0 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb97688d3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb98091c5 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xb9842cb4 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xb991e5e8 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c05313 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d09e44 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xba10cf88 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xba16b98d cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2fcc93 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xba6b11af regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaca145d gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0da272 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xbb124446 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xbb30bb34 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xbb584658 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xbb5b7f19 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xbb6c2892 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xbb7156a4 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xbb740f56 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xbb77059a disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb8ae36a rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xbb918cb9 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb9ae086 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xbbe4a062 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbbee2b15 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbeec7d1 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbc1a4272 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xbc270d51 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbc2b7416 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xbc34617d tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbc375f45 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xbc3bdce4 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xbc4f2cdd ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xbc6ba246 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc7173e4 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xbc853e0d of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xbc9f3421 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xbca2e268 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcdee27c scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xbce43ca7 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xbce9245d input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbcf891dd devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xbcff661d ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xbd28a02c ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xbd38b1f0 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd49c0cd pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5f3532 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xbd8cf31f regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xbd8d028d dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xbd902e75 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xbd90465c gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbd9fbaf1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xbdb11776 kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0xbdbdf820 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xbdc2f2b8 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbdcae191 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd36794 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xbdec0132 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbdeef456 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xbdfe1a0b led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xbe036914 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe22c4a9 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xbe2ce8bf clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xbe2fb104 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xbe633d6b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6a7a00 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbe7a8f50 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xbe84c3cb dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeabf375 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeef2925 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf22e1de dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbf7090db hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbf7b66cd fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0xbfab6996 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xbfb013c3 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd9e137 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfee2ae2 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xbffbd974 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00e09f0 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xc021ffa8 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc02e9945 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc0308dcd i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc04c9cc2 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xc053c7e7 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc085a809 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0889c65 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ac3074 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xc0c49f82 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc0cc3c68 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d2be8b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc10049b1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc1167319 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xc122e019 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc127579e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc169fd25 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc189bc4e ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc1952197 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc1dd3787 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc1f3cd98 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xc2125781 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xc21f46f1 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc237f4c4 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xc23e3d47 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc2587233 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc265a3b7 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28cdd87 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xc29d3f30 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xc2b16e15 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc2b9812c tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2f78fe0 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xc306c1df regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc309845a wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34fc8b9 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xc36734f5 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xc370ea1a security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc374c5d8 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xc3c43a7b usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc3ca3453 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc3caa80b extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xc3d40b2d sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xc3fa6bcd ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xc410f43f reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xc4134b09 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46201ce of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47fc724 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4cd52fb usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4ecfa19 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc56f1e32 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57be2c4 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xc5a0069d rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b9c009 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5d8d9dc usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xc5dbc928 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5f6fa41 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60d1d56 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc628345c vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xc63b9990 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6425e89 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xc65502e3 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6766b3a fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc6803626 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b737ef ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6c1dc3f i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xc6d884f2 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc6e5bc86 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc6ecba31 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72a8a4d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc734a9f0 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc73d67ee inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xc745fd5b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7bdfbad spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xc7c4f8ae __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cabb5e crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xc7db1c88 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f0d979 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xc80337ab regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xc806fc2e get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc80a2850 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc82588cb inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xc870ddf2 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc88a6687 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xc88c10b7 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xc8adbc12 fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8af3d3d rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f76db6 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xc91192eb bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc91e6e27 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc9211598 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xc927f710 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0xc945a6fc adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc94eaa3e spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc959b9e6 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xc95bac39 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xc95fb288 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc96abe91 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xc97621c5 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc97bfdbc mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9884383 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc98eae9e ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc9be5d73 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xc9c44d2c usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9d70f82 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xc9d71ce4 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca01e41c spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xca06f41f __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xca136e2e set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xca13824f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xca15b282 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xca4da1b0 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xca6580fb of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac299b9 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xcac2a5ac dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xcacbded9 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xcae13442 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xcae424b0 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1cad89 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xcb2ce278 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5c905c dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xcb695f17 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcb76dc62 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xcb7f2140 user_update +EXPORT_SYMBOL_GPL vmlinux 0xcb8f00b2 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xcb954952 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xcba0ae9b vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xcba43899 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbae538d rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xcbcce9ce perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xcbd61e31 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xcbd6a681 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xcbdab462 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf36713 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc2edd6a of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc7ee4a7 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xcc80fda6 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c1954 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xcc8f904b kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xccc8f9d8 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd2ef77 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xcd028ddd sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd3b6b73 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xcd3e00ec __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xcd55ed77 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd6ae865 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd727332 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xcd8ee8bd regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xcd91a6ce nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd928d4b ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcf0690 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xcdec756e pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xcdecdf08 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xcdef9f5e platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xce22886b ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xce235c8d of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xce337284 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce95d3cb arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xce9e6760 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xcebb63c3 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef3c56d ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xcef938f2 of_css +EXPORT_SYMBOL_GPL vmlinux 0xceff7f78 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xcf3c8234 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xcf4d493d usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf657b87 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xcf7ee9b7 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xcf84fea2 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xcf867ad2 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf8a2aa1 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xcf94b2d7 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xcfa1a983 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfdddb86 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xcfee0634 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xcff640ae da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcffb47d3 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xcfffafba power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xd00791a7 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xd00d54a0 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd014ddae thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xd02185c1 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xd023e6c1 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd02989c6 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0791cd2 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xd07c87ad __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xd086bdfd skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd096a6a9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd0a43305 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0eb42f6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd125ca51 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xd14194fb usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xd1475c3c tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd14c9a7c device_reset +EXPORT_SYMBOL_GPL vmlinux 0xd152dc10 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xd1549556 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17e116b __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd18a9889 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xd19b517a rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd19ff16a inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xd1b0f346 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20c3f98 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd20eed0a devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2250cbd serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd22cacb6 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xd240e3b6 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xd25c75e8 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xd26aa056 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2797a13 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd28de1f2 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2bd9487 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xd2d1b991 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xd2d557db get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f936f5 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xd3293f5f thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xd330bff0 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd35c553a debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xd35fa880 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd368f96e crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd39ae8c2 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xd3b9980f sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xd3c7c60c tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xd3f09dbf tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40e4607 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd431ac28 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd447f0d0 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c1d64 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd4555f9e crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xd45e2ef9 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd4872909 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd4a1d89e class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4a4521c fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4a4a1b9 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd4b30939 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd4bbf8c0 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c4ca8b pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c728f1 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd4dad11a reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd52c2102 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xd535f8b6 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd56007ad nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xd560e8a9 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xd563bb73 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd56a682f seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd56e62e5 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xd57ca045 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd582127c adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xd5b85c98 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d5d45d crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd5ed77f2 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd600dc2c regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd60976b4 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd619ea16 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xd62fc4b6 kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd63ea454 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xd645b99b fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd646a9f7 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xd668d938 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68937a3 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xd68d3686 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xd6acb26f blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xd6eef4ce fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd6ff4455 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd700293f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71684e3 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xd7354a9a skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xd74880af bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7724b56 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7c3e73c fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0xd7c83b35 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7eb839f ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd80fd253 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8452b05 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xd84d6300 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xd855743d pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a17550 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xd8af06fb mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd8cf3384 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xd8dfaa6a tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xd91061d5 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9130581 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xd91ae9c8 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xd91b125b public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd963673b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9721567 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xd9812fb9 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xd98abccf pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xd9abda6e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd9c0ba13 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0xd9c167dc xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xd9c3f364 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xd9d00e28 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd9d58098 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd9e24c4e fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd9e311bf ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f449e6 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd9fc1a77 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda4aeaaf blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xda60f60b dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb0ce462 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xdb328772 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb388628 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xdb3c4f88 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb4b05d6 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdb815510 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8e6d10 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xdb934fec sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xdb963d88 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xdbede2b3 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0e148c ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xdc126c15 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc4012a9 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xdc5c3415 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc921f06 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc938ad rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdce08fc8 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xdcefdf5e gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xdcfa5c3f power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xdd07e192 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xdd0aa6ed regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdd126bc3 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3a2ad3 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3a3ffe led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xdd6082a0 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xdd6ac430 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd74fe19 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd76822b regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdd8d2ddf usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd8e41b4 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xddaf6f73 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc00110 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf93cc1 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xde35bddf usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xde3de254 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xde46aaa8 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde48a02a fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xde58f95b nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xde9463a6 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xde950370 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xde9c05cb kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xdeb6a957 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xdeb82480 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xdebe8f01 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xdecbb309 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xdedee331 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf142bc7 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdf7cee12 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xdf8cedf7 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xdff73c7c blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe016a198 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xe01c655a perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xe02e5b30 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe041a682 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xe062c79f __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe071f5e5 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0951cec gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c63a7b ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe0c761a1 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xe0edb1f1 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xe0f5003d uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xe0f646f0 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xe1007a99 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xe1083ae3 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0xe1214440 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe12ac448 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe1433e2b usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xe17594ba __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1a5cad6 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1bf2be0 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xe1c5cfe3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xe1cb87b4 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xe1d1f00e dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xe1ea9836 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xe20cbd68 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xe2365d5e of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xe25d3e03 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe2791d78 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xe27b6d00 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe294b67a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xe2a40411 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe2e58522 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3210813 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xe329cd29 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe3771e5a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xe37f2747 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe393ce56 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3bab9fa device_add +EXPORT_SYMBOL_GPL vmlinux 0xe3bd251f da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xe3c85e0a spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xe3eb5945 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0xe4031018 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe4247059 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe431fc7c param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xe43f3a28 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xe43f3ecd ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xe45b1e4a of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xe45d6f03 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46c5eff napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe484f1a8 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a0d7af __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xe4a2d1d3 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xe4a7b5dc serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xe4a88817 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe522b500 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xe547ce51 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xe55514f6 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe55a8c27 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xe586e2cf devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b20917 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xe622679f dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xe631c9bf ref_module +EXPORT_SYMBOL_GPL vmlinux 0xe634a05f rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe676dcaf dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xe678e615 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xe6b85c15 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe7304d28 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xe736c198 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xe73db4cd thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe74cab17 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xe7546d5d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xe7583e81 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76e538a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7849a8f __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe79ad113 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe79bb04a device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xe79d8bdd ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xe7a56ccf kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xe7b72b8d kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f8a09e serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xe7ffceac blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8097242 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe80a1924 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe80a8e64 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82dd9f0 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xe832f0e1 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xe834ffde led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe83d5f21 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85069ee tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8a1c21a pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xe8aac65f mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe8bb6012 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xe8bbb7a9 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xe8eccb9c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe900f45a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe90e7fe0 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe90fd310 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe9168452 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xe9245dcb usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9373ae0 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9457c1f dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xe95174b6 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe951fa90 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xe981074e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe983f05c pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xe98c81af usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xe996e8bf noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xe99f7fab extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xe9a478c6 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xe9c595d3 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe9cfe02e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9f81989 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xea02b14f crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xea0454aa subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xea079fb7 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xea09a771 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea12d722 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea38ff49 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0xea3aec6e led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5d1dbd phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea67baf7 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xea874ddc ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xea95d07f blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xeab6c494 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xeabc2a98 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xeacdc409 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xeae00eea cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xeaf9d192 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xeafb371a virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xeb19678c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xeb814ff1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb02ab1 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebb92ded flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebe3c029 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xebe8792c xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf39caf regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xec079d13 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1bed15 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec362a25 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xec3e5745 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xec7c21a9 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xec8fc6f1 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xecd6454b usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed06c5cb pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xed5e5d57 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xed650ff1 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xed814720 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xed846aca subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xed880286 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xeda559e7 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xeda55b2b da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xeda7b70b dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xedbc1896 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xedc37075 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xede01b42 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xee1f6ceb fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xee243ad8 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xee576c44 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee721cf6 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xee7455e6 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xee9e6340 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xeeccfa76 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xeedcd3df page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xef1cc982 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8aba03 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb76afa pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xefca2058 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xefd0f511 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xefd8e55a get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xefdd691a ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xefddcb9d sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xefdf7291 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xefe3a53a device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf00c3752 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xf0241725 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xf0301aec ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xf0346dac tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04f6069 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf05e7d57 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0a66b64 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf0a87d95 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f86ef6 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xf10a2671 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xf10e2a04 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf13781a4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf16faedb eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf19e377a sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1acde22 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1bd2b04 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf1da5bf8 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf20acc3f sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xf216f90a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf2196393 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xf219cd32 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2261c91 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf232acf7 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf24978ef devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf266a0d9 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2a9400b dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2cba196 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf3028df3 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf3141488 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf31514b6 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf31b0ef7 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf320a074 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf345fbb8 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xf3576354 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xf35947de usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf3595183 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf3789aa1 fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c9b92 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xf3a58ea9 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d9042f bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xf3ec01fe pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf3effa6c irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4204077 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a329c0 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xf4a4d520 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4e002ee __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xf4e464ba usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf4f293b0 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf4f2b7ce devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4ffd051 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xf50b350f pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf518005f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xf533bfbe get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf555a603 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xf5657038 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xf568794f debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xf59188a5 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xf598f5ed sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xf59de7f2 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5ac155e register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5d9e5b2 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xf5e532a3 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5f701ec rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf604bee6 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf60fabe9 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xf6170850 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xf61aa638 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xf63c64f9 device_create +EXPORT_SYMBOL_GPL vmlinux 0xf64ae7e8 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf6517088 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf65b79f3 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xf6899f43 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf68a4bb3 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xf694b6cf wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6a672c4 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xf6b75981 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e41e5d phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xf6e537d4 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xf6e7ef3a usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6e90089 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf7393f00 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf76817a6 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf78f130f cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7aff6e8 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xf7cf5af9 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf7f0a3bf bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf833d454 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf8544f0c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xf86cceef rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xf86e6d62 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf8750505 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf89adfe5 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xf8b42c57 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf8c6d821 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fa3430 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xf8fa973b thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90af1e1 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9118394 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xf91eac65 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93984dc ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf965ecc6 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xf98fcddc powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xf9907265 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ada0ed of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cc41e0 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xf9dd5c06 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xfa01a4a6 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa322897 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xfa46a81a pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xfa679b7c regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xfa7ea672 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0xfa84e604 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfab24c97 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xfab5a50b rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad61dd3 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xfad8a192 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfad9fe84 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfade2908 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xfb10fb5a regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xfb18fd60 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xfb23978b pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xfb329177 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb80ee9b regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfb82123f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfba06d9d pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbdd042a irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xfbe68ac0 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfbe8c34b of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xfbeb3dab cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xfbf78424 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xfc003ac6 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0513e6 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfc0bf925 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xfc39fe70 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfc44c29f elv_register +EXPORT_SYMBOL_GPL vmlinux 0xfc4c9adc n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xfc512300 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xfc63bc70 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfc823fe6 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfc9a496e save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xfca2c3d0 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xfca59dad devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcc3e057 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xfcc81d88 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfce3eb70 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xfcf9b139 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd534c36 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xfd5894d9 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd95381f swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xfda8d4e1 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xfdac8e2d gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xfdaf7344 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xfdaf8573 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xfdb4025b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfdb933a3 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xfdd9e083 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xfe06c9cc __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xfe4c3f24 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfe64aa46 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb2cc47 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfebf460b of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed19d75 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1291d0 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2c4cd5 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xff489bb6 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6700f0 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff998186 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xffb315a1 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffc2efc7 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xffcc9ef0 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xffe4af1c pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xffe67088 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xffea5034 debugfs_create_atomic_t --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-e500mc.modules @@ -0,0 +1,4323 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-keypad +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c4 +c67x00 +c6xdigio +caam +caamalg +caamhash +caam_jr +caamrng +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si514 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpm_uart +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fs_enet +fsl-corenet-cf +fsl-diu-fb +fsldma +fsl-edma +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_lpuart +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-cpm +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-rk3x +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +mii-bitbang +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpc85xx_edac +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mv643xx_eth +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sgy_cts1000 +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_emaclite +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp @@ -0,0 +1,17007 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0xa8cfd13e mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xa7ba6aa6 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x06c352c6 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x096cd686 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xae7dbebc bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x0a19e64c pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x0efa1ce3 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x17801a38 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x25b38aca pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3c17fa7e pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x59bac8cb paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x86d4cb24 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x932cdb66 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x9fb2530d pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xa212c183 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbb6a35f1 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xc1561725 pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x11890b9e btbcm_patchram +EXPORT_SYMBOL drivers/char/apm-emulation 0x129e74f2 apm_get_power_status +EXPORT_SYMBOL drivers/char/apm-emulation 0xdf3329b8 apm_queue_event +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2313805d ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2905bca2 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2a3af76c ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2cbeef05 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8351ef9e ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x00add411 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x74a5270d st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x9e201876 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xde736ac0 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6bd9dc3c xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x7c1e9676 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xa1b44cfa xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x04a295bb dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x089687b6 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1f3db97f dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x3026538e dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x3d147088 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7ee8b02f dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x2dc1940b edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x028855fc fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1478ae98 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x17bf0329 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ab18dff fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c3da1b5 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x33e35da7 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x372cbd23 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x383ff93e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39ffa1c7 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c240dc9 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x502f7279 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6a759820 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a77d8ac fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9fbd719d fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaf553f29 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbc1cf6d3 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc765479d fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcb34256c fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xceaceef2 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdcaa3dd3 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe225a2e6 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe82c58e3 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xea70d09b fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee148d5f fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf965e528 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfcaf23de fw_iso_buffer_init +EXPORT_SYMBOL drivers/fmc/fmc 0x019e72b8 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x77351a69 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x83df1a91 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x8af4f13d fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xa845e318 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xbd3be9bc fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xc232db68 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xcc6ddbec fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xd5ffc84b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xd9782867 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xef13e7f5 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00ee64f9 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02064c66 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03ca74ef drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06260ab9 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07d3f4d6 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08967e2f drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a18c452 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aca3653 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b316079 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b5ea136 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dd2f730 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f972924 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0febdd51 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x123283e1 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1281637e drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12e9fb19 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14e231c4 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1779d480 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x184efe8c drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1901bce4 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19214dbd drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19f524d6 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a11f672 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a6cfd7b drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ca78248 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e3b1de0 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e8c6853 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f6e7782 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fd7daab drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fdf7e4f drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21085898 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2129aa86 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224350a5 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2252ca39 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22827335 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2604aef8 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26ce942e drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x287d3773 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x292b0c80 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x296d1520 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a369d98 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2afe7c20 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cad9302 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cda4658 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d184c45 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30249f16 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x317132b4 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x327b727e drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x338aa4a9 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x340666a9 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x344e0137 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3481a414 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35adaf68 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3643c985 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x368ed2b0 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x371a0907 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38108cf0 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389c015f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c2045d8 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e77e99e drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x404aa42c drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40d8b037 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4195656c drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x438094e2 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a6e054 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45e20669 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47674de1 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x495353f7 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a69f57e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c37c8cf drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d835852 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4de02ccb drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e5684ba drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea5ebc1 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f0d3639 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f9ca7e5 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fccf69c drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51fddf62 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52a4b5f4 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53a3ee07 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x545adbf4 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54dbd2ac drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e00d12 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x563df565 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56876917 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c43d30 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56fd3316 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5728e73a drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58241ca0 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a4f163b drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b28907f drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b6b4a82 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1099b1 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c7233d2 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d0ad5d9 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e1c2320 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e2dcc11 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f42f43c drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fd2fac6 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x600e6f56 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x621a0422 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62214922 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63aacd95 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63d42be6 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66340cb0 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69341649 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69693842 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b3feab1 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b7a8b7b drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c8e3e32 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f94a3af drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fbd2c06 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e9bcab drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74553dad drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76295020 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76bbda49 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7742e3e6 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7790a269 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x795a6969 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79ca93d1 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4c184d drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b02bda2 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bfbfd3b drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c6e491a drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d9574ec drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7de401c5 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e316ca0 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ea6e17b drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ed0eef3 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7efa4527 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f50ba5f drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ffa0049 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80dae791 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x826fe094 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a7169f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84d3dd8b drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8532e1f1 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x863fb714 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x873ae418 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8790d7bc drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x880836f9 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x892ab596 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89425754 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8998f206 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a571373 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b1dd374 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b3dca1a drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bd9c48c drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c7da0ba drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce3a9bd drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d6abd46 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f3393be drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x905c1034 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x931c06a7 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x934564da drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93846998 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9453695a drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9487a010 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x962e5454 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x963d77a2 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x968e7c16 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97bfae0b drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97ef8b1f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9864f6cd drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x986aaf1a drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9962f3db drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9af37d7f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d70cfbb drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dd89773 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa04d35b7 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28f0405 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2e8690f drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa335d2d8 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6431eb2 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa690773c drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabb124cc drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad70614f drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad8dca81 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae1223e9 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae5f85ce drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf6d4c1b drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafeeadea drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b8d0e2 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0dbfb2b drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1e02506 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb30c1090 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb371c46f drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb41df583 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4455b18 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb635e065 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6635a88 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb693ba3e drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8315f85 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8d5a961 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba976871 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbddfd5db drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf5ac926 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf67583c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0861f14 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0ac70e2 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0d6bf5c drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0daccdf drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc12078cc drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2a198a2 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3088c8a drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc55b6151 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5e636f3 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc618ecab drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc639149c drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc651c0cc drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc74d3307 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca2e43c3 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca97541b drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdc4dc46 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce55cafd drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0764ae4 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0797174 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0de6e8e drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd304dd22 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd32bf936 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd35cab3c drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4ccb726 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5a1f93c drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd700d3d0 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7cf8ddb drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8e8bffe drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8f40e49 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96e8ca3 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd98da256 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda162e3b drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda6ab79c drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac6ec6e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdae7614c drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb9f569f drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd5e18d4 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde0804a4 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde48e2d9 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf7533de drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfe7b1f8 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe013eabd drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0690d47 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0d3c70c drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1251260 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe14136b8 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe264ad3f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe26c4a6c drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2f01396 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2f5e876 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe32c8a9f drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe339ddad drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3f233e7 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5a06078 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5fb166b drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe86ce92a drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe91a9c6a drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9a3a54d drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeae4961a drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb590895 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec6c0da3 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecfedf24 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed42d9a4 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xede5f8d9 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1008422 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2466a85 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf65976a0 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6b7bb17 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf778c659 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7810cb9 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa02d8a8 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa263b86 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa5ea00a drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb785f11 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbded1b2 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd712f11 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdd5367d drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe764223 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfece7036 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed0bc87 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0650ab06 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x071118da drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08ada91d drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a5e7dee drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a8f0206 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b6283ce drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bc57741 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dea3973 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f3493e1 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f8d9967 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12367209 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12945ced drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14323842 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16bfd9c1 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19e1d7f8 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1eac7a0a drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x232de4be drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23deb0c5 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24fc3189 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2707d58e drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a70063d drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x309f798a drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3402be39 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x364d7606 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39c72a0d drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ebfa3c4 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4218a2fd drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43ff5602 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x458a1779 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a854595 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cd88d6f drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d0afe10 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4da9f5b0 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f0439f7 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f586ca9 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5032e979 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51b0d4fd drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x522076b7 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52aa6d0a drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x548df806 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54b3fdbf drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56b1e975 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x575d3942 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58fdb508 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59b24614 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59f7beea drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b7e43bf drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5da907d3 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e1eef7d drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5eb48aa1 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60303e48 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60c34dfb drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x624e1a92 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63b79247 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64540fed drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x654a8e7a drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x689cfb33 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a19cb8b drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6aebfeb2 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bbf7a5a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c69e24d drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d9e91b0 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f2c2d9e drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x765fed7c drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x774312ed drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77aaa8c2 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78beac00 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79906174 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dfa98f3 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x805409cf drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81a6c8aa drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x835ddee6 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86cbcee6 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87df4061 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c19b6b7 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c8e9066 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91c61e4c __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91ca27bd drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96782d31 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96e13bcd drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9968523e drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a016c1f drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c74cd4e drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa330c069 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa59998b2 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa70cca9d drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa91a8aed drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2bbe674 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4f828c1 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb970bdf5 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbea0d4fe drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbeedab33 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0fbb74c drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2e3d21d drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3fa0de7 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc64c62a3 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7bf4caf drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdd79711 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf04e19e drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf2de28e drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd060e83a drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0bea6dd drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1eeaf25 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd53bf7c9 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5e6e7dd __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb3b019a drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbbb80cb drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbe19654 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde99cf40 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdedeac58 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2415465 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3afffca drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe62d9808 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeefbcd5a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf072cad4 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1c03fca __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2ab8a72 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2d63244 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5a00ab4 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf761e6ed drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf84f9c2c drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8765e25 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa3451b2 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffdfab5a drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x089cee83 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ce0832e ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12909e70 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x141f3ce5 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1498c57d ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16500ae5 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1979c7f4 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23669a1f ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x28ff6dc1 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a86125e ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c959607 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ebbdd6e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f517378 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32dca968 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x38c712e4 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b17952a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b5d8807 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3dec6b4e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4abde5b7 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4cec4b67 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4faa79a5 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51c601df ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x53a75c94 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e9799a4 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64ec80c5 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a7fcea9 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x733335a2 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73fff065 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b2ff6a8 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x820609a0 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x867adfa9 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88129300 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a292706 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x904c17df ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90a8c769 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9319d93c ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x951882b9 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99e2fea8 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9abbb23b ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa290abd1 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa3ac7cdc ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa65b603e ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab59f895 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd7b11dc ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1b24b8d ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd05cae8 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd2c11e2 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd104ad6d ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd365447a ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4ab9a6d ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9e58264 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0b2da2c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1c5f00f ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe82ade3d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7da680f ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x47fc0497 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc4678bf9 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfdf63638 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7f33da78 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa31f83a2 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x93926596 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0691ffca mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x15911cea mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x25a615a9 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2ecb79ec mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2f04e0c1 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x64b7a258 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x82b1d654 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9427c8f2 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa4284ad2 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb2827eff mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbc4a9841 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc49d7ba4 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd36e5c37 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xeb277c1b mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfa4b4a97 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfa7fd8fd mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x7d7a9287 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xc3e43f19 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x413e7e04 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x88775c2a iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x00145cfc iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x1461769a devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x3c2157d1 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x5e904fd0 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0e3e548e hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x18a0dcc9 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x55afa33c hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa7376ea5 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa8ade82b hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc2534854 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x55607f98 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5a7aa333 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x9d613719 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd3c1ae97 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x0da6e627 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2594db2c ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x302ede4a ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x38944c70 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x993a9d1f ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa3a67ac1 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xcc7cb484 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xded72e53 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xefb42338 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x0681e318 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2042e2de ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3e2cc359 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6f152684 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd83d1035 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x2dee3ec8 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x7c776845 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb834d175 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0f9e890b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x20c7d607 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x532c7a47 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x62b367d4 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x68c19c62 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6a4fc5f1 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f2c24d5 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7103c650 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8068dec5 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8e9b17cf st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9fce03d4 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb4b119e3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbc2b5e6f st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcb6b74d5 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcc8dce57 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeac94cd7 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x31fa4df6 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x59133ed3 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xb447b092 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x4d924aaa st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x76d55530 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x44517bb7 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xfd34826e adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0368441e iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x182843ba iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4d6a2d22 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x6045671a iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x7a30e0b2 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x81b8d775 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x858a895f iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x98fd7493 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x9f8b2f62 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa365f219 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xb504e42a iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb961cc4a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xbc83dd92 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xbfb3af8f iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc40e1e73 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe0e8e53e iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xe4e41958 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x43e72873 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xe86e80dd iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x45c7c4c8 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x5c1e57c7 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xc5b53072 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x10bb2434 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xdfb6670c st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3076bc4b rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x444ca316 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x51902348 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe1dec2f1 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0e731d9a ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x10dbff48 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x25fb09be ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x27f3f3ce ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2ed5cafc ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3317f8b0 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x37542e80 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x56e05e88 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6856fa11 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x70f1ef49 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x73724caf ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7fa8e155 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x890e5fcc ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x93465597 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x97f102f4 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcb8cb868 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd4e12a20 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xef7f0fd6 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00dbde62 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01f18b4d ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x041b1aa9 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04a6f4ea ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dd4ef4c ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x109cc00d ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10ba6358 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x122a84d3 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15335740 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a4c723b ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1df371af ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x216c2df6 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24112207 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ad676d5 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30fc988a ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x332bc0d5 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x344eb8e1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36a61ef1 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36d59567 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38163e19 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e423744 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4912eed3 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a014f9e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c1bd613 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d5731f4 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f60e8ca ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55322ed4 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x558d4ca8 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58f3ec16 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f002c1b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62747c1f ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66d28433 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x678a6039 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e6d5c36 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ed7d1dc ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7109620f ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74c89ed2 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cdec4e4 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e1e0d8b ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f90431f ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80a04d27 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82aa7aa6 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83523587 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8545ac4e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86a77c74 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88376ed8 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a36b65c ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a5d3557 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8bc51bc8 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8eb1c9bf ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91e1c669 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99fc79b3 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a299554 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a3a96b4 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b171700 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d3420d9 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa20f21e5 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4c3e3f7 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaaab926d ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab981fb5 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabbfec15 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad0f35bd ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4803303 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba46fd1d ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd027972 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd21eeb5 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0a646d4 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1818ec4 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf2f5f0d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd32ace37 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd82cd26 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1bdd36c ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5c3a166 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6e5a986 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe917615c ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xead60ab0 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb36165b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec36fd5e ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeda349f1 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee85e79a ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1f508e1 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf273093a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6f28272 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0763fe2c ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x18cce592 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x252de7f1 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x39ae1c87 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3effe2e9 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6b8e8d22 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7fd569b2 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8e03c522 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8ff2fbfb ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x91a72e84 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x97f7d58f ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc8d7599e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe2f6eaeb ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0496c7e3 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x08be4286 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0c35776f ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1feb7363 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x25e4bc8c ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4b01278c ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5db4d22c ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x840ff1cb ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8fc0d0e9 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4eb9b958 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc3bf42b8 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x02e3a73f iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0453f22e iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x24af2c3b iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x295d0b26 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2d1ca6c1 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x32935c9d iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8763d39f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91cb0e4c iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9740af92 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa4b65c82 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa92d1aae iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb4bb4223 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc2f38d48 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcade4768 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xff672103 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0257c289 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x05e5d49a rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13062681 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2092e075 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2929cb68 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x33569259 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48d5406e rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4df1507d rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4eda2bd6 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6e21ece2 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7667d88d rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d120f89 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x89ac9a01 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99e14c85 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa79a6b29 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa8b512a1 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb16d6d58 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf0e37da rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe69c6f75 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe935648b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe9784437 rdma_create_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x361e3d69 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3a23045c gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3ac52d61 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x48c8bfa6 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x522b73ec gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x827b5d9d gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9c7113c5 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbfd53331 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdf580d13 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x1443336a input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa0e2cb61 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xac7f068f input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb32a12f8 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf940d0ac input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x17adf143 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x036461ed ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6e6180ef ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe1f46df3 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x91c8768d cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x037d3f3c sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x04187ae2 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1ece77f0 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x34d6bbea sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5a2d4fb2 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8066ce7a sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xcdfa712d ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xf91245ef ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x02ad181a capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0d83c871 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2062be13 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3c69796d capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4727fc24 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5603b441 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x63923878 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x98b1a228 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe3cd28b3 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe88ed920 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x06919e8c b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0ee7102e avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1d9f4211 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x263367ca b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5faeb46d b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b1c310d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x708fcc3b b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x71a07e63 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa6bdcd82 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb365ea0b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb45ab214 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc47e7658 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf5bb0a44 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf920c607 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa78b356 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x09444b80 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x139b4af3 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3b604ab6 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x543148d9 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5c51677c b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5faca6e5 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x77a7780e b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa9e77bf4 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfdd19552 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x253bbbeb mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x5e643378 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9293a93c mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xabd42fa6 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3c1ae0e8 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9adb0877 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x26809c93 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x30c67214 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x667671c8 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7cf010b7 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8d9248bc isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd7e1d5b1 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbc68593b isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc4174889 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfb1a382f isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0895e917 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0a7ea9b9 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0ad864ff recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0b5c5b64 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x13a12772 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1a5eba20 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1bc92f8a recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x22980373 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c4140cd get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c859b20 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x34f2e5d5 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36b7e31c mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x84df35cf mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x903d722e get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x90a3f850 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9acbd80f mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa96fa278 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc74e0361 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe72b8627 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xea8f8a8b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeb698207 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf8626301 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf8ef2926 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c4d0956 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3cd03a59 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x67569471 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbbf4c57e closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc0b9ef00 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xde959625 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0xbffa91d0 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xc21150bb dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf8c33134 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xfbb42e78 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x33dbd8e4 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x60807862 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe302ae0f dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe75e425b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf70af60a dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf9a30442 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x15b47dcb raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4c63c39a flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5569e816 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5ff9a25d flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x788707b1 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8c68d735 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa1e11511 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa7a3bd98 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaf09b2de flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbc9ed2d0 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbe3bd0db flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc3e74536 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xda5def95 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfb668318 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x60d19aaf cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa5e18ff4 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xaa9e2744 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe92d5f3c cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xca3919e7 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x522f76e1 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa97b57b8 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0da80791 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x15683f1a dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1c6eca0e dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2727d169 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3442a313 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f340f78 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45e51312 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5148b0f8 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x52c219ca dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66178c0b dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x73ecd0ae dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x792472ea dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x86b20a3c dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8c2a5a49 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96f77286 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ca4993b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa4b6bb74 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa8d577c6 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae2807d4 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd209ab8c dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd2eff555 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd4e25a9b dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe19d29e0 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebf34771 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xecbb1df9 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf46bfde9 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf8c18770 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc516e24 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xec1ae687 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x921446b9 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x2cfa301e atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0ca67a78 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0ff470b7 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1fe26f1c au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x309db5d6 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x364da26e au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3accf10a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7a41d88b au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x802733d9 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe352218d au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x105054ac au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x7f7a1855 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x0a9bc34b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xd9a1d229 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xc5020f97 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2696b343 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb2c8760e cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xd2cbb78f cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x7696c501 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x7982f449 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x86cb212a cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xe1bc8fbd cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x2d28d298 cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xc76bb82c cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xd5398b34 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0006a207 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3f610865 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x751aa7ff dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x786025c2 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa1a1016d dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x07a5079d dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x082d5d7e dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0b4a6529 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x249e3622 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x51c131e6 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x63f29f47 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6a2e7cea dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8371b211 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa5ab0352 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa8cc776d dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc7cac346 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc947b786 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdee9927c dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe6953cf0 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf1547cdb dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xce8b28d8 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x00441183 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1560e616 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1971086f dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x692c9cba dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7f7d80d3 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8ffd0121 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x18e4d56b dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x395f0d31 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xabc63de9 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd774375a dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8c440b34 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1d81afd8 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x1c69df90 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x48647b38 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x6cd1217b dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7d27f4e0 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfd8161bd dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xfbd2bcf7 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xd451dbdd drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5b9e38eb drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xe34884f0 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xbe8a27e8 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x1a8434fd ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0xaa866fc0 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x835f527d isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x563687aa isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xef744d69 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x070fc5bb itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x53c89c87 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xd2b8ba61 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x017c8205 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xfbfa601a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x1826a3cd lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x1ff4dddc lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x21e4cbe6 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x5636ada3 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd7951a00 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xfb48b1d4 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xb6d1d3af lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x53d0d17e m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x762a9a14 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x11027611 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x87a7969e mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x5699c6a7 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x28600118 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x7922fe36 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x6805eb08 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xc1592316 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xd3db1b3d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1207296c or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x5476a895 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xc5ad2358 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x62c104e5 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x96abe9ce s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x2c122ed8 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xf7f33cd7 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x66f6b0f6 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x166b4ca8 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x45de8e69 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x822edce1 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2b828c02 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xded8c35e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x91e158b5 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x635eda9f stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x1d13cbed stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xe44d4e3c stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xe7147626 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x98f1d7be stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x13c436d0 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x0ec9aa96 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd77bd3fe stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd3b41e0a tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x3b625196 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xae71c236 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x0afa50ad tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3eeff8c5 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xdd28f614 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x596a04a6 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x6721c317 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x4e92425e tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x585ba588 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x58656ca8 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xe04811c3 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x6b16e8bd ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x57600650 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x7802a2e0 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x1d471417 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xa73e1f16 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x05cfb80a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x05e606e8 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2f7b4c23 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x69d8e6e3 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa0d4dfec flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbc45889c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf9b8eb00 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1b1feeef bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3f6acb69 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x67aa94e1 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb1a4c745 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x0b7baeb7 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4389d178 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd0a2a8a0 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x265ed600 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x34513cd0 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x76bcd2ce dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9c534b48 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb1a3c9a8 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb5d8efbe read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc27557d4 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcfd1c5df dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf3d97e15 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x7b126e51 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x08c335b8 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x89488023 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc93b7276 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xeef70c5f cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf869ded4 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x66002a81 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1c85db16 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x47a2f100 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x65fc1df1 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9a8c9b65 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa267a5b5 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xddfeff96 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf7fd9754 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x36183af1 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x96df985b vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2cbd907b cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2f1ef243 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x77df09ce cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xdeb688ff cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x04aef293 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x3910b71c cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x89cd075f cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xccb8e439 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd730c5d3 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdddd11d9 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe3a6e082 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x070b0971 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0d6a4091 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1fa6ac48 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x366c1a2b cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x38a98159 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3d0cb9dc cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5c84cffc cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5def47a9 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x60ebe2a2 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7de3493f cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8da03211 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa1495569 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa3f51492 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa7a04609 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa9b01b84 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb9cfd54d cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc05b26c8 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcec26470 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd7f884f8 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc19d679 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x036c1222 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1581e811 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x240c9363 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x32f0461e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4a4040eb ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ea14c9f ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a610921 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8378bcbf ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x963c1c3a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9dbf4885 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa03fb5b1 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3d15bc3 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc6fba315 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcf0be77b ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd67a7083 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdcb19787 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf4056ac4 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0839b27e saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1d6c78d1 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1f67a51c saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x24bb0cf0 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x718b7835 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x71d75b42 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x79f700e2 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x85f229da saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9d464efa saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb44851e4 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc391bbdb saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xceed0382 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x1681255e ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x04595bea videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x5c146ff1 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xa50b87bc videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xbc376930 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x503f1ef3 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x53ecbb3b soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5d80f8e2 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x79598bc8 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x904ee447 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa2ceea11 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc68edc73 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x49827c01 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x870d7ebf snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb103d461 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb578bf36 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xec99576e snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xedf23524 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xfc6e55ba snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x09e0f3df lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2996abb5 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x34fdeea4 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x45d98f79 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x460a3e5b lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x835ed3f5 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa5040e7c lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc20ac828 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0xb4ed00d8 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xecda9c60 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x68bd3093 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xae1263fd fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x2bbe73e2 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x7ad9702f fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf23ce679 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x5345056d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x06fee0e0 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc7aa1153 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xffe2a676 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xb54b9945 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x68638143 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xcce49a6f qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x9fecb20f tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x13d6f52f xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xf9177d76 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x3e4d3317 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x084a4b4d cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x2db40583 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x00ca91b7 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x136f09d3 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7e0f2cc8 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x84500718 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8de2f5e7 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9b5c52ec dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9c91b3c8 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc9988267 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xeffabe4b dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4b25eb19 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5a9c0c08 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x78c0b03e dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8ca576e1 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa793119a dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb8258531 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe5402189 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xbb085bfa af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1ff7e1e2 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4c574617 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x54b53874 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x85763e59 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8a554886 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8aef0668 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc04dd553 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc52c9bce dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd416798e dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd49ca2e7 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xee0c9239 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xe4faff79 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf200700f em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ae07f29 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3d5a94ca go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x584a3157 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x76d9cc45 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8b999687 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb5e04a57 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbd00869c go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xeb5a5a46 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf20300b1 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x028d21a3 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2c3d11a1 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x62a52efe gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9c50c336 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb875f1dc gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbc3bbd6c gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xdd889f7c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xefde0c93 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x02810adb tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x0622a33c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xd688c045 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x9c5d6adb ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb79a6b11 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x0e95e62c v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x67c7d06a v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xe927a6d2 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1b279ca6 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x60e6038a videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9bf2a2e0 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb96a4e03 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdd698b66 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe26564ee videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0d864980 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xbd1fdea9 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x15e68db8 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x2d0aac47 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4d02a5d5 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x700eaa5e vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa4594eb4 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xadb31473 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0xaebd89f5 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0323dea2 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x036caf86 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x053d6ccf v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x061d2ae8 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x072ce8b4 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f0e9535 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0fb21b54 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10f92a68 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11f8148a v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x199407a0 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x19b0f9c5 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a315cab v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b4d2328 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1db6d891 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20bccd5d v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20d09e9f v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x210d000a video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24644b74 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26a574d9 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2783605b v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28384ade v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c6f5174 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d6ae73d v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2db94c98 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32fb19fb v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3358bf40 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34fa131a v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3894cbdc v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e28ca87 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42b00e7d v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44af2434 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44f705c5 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ec0bbe6 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x599bbc5f v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5fbf4fdf v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65facaae v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70323f97 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x712045e1 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x713afdbc video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71e898aa v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x780f35d4 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c056816 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ed7ab2b __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86cf65d5 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x887f9542 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x898c722a v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b2c3691 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c15c642 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e81cb65 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x918379ed __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91ad03fb v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x956a50a8 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9846c238 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ae3a2a4 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ce633fc v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaff06c11 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb51630ad __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6caf7eb v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf38a1d4 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc066848b v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc08f2aee v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc42114a9 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcae43e09 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccd47d6b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd7e79f7 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0139683 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd248a4a3 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2538387 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0cc330d v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf20c4207 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3ee3c04 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf91e6b54 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe3cc50a v4l2_querymenu +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0778c0c5 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1632c604 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x20162884 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2a92a344 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2fe7ef79 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x64961d48 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x86daf793 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbb2f6d37 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xda92158e memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdccf9d5a memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe477ca4a memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfd242c71 memstick_new_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0966578b mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0e9157d2 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x12830de0 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x178249f0 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19ceaac9 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22d198f2 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f8d908c mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3057fc65 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x367e6236 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x38baebd9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x481c81af mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4e65cace mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x542e1c84 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x56fbafe7 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b3e40ee mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6cbd17bd mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7e6f3049 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7f507fd4 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9489f34d mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x98e7949c mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0fca3f4 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa49b0a93 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa6fbaabf mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4ddd3c6 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe066f80c mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe5867905 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf64101a6 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf9141877 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xff7b6f50 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0427d88b mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1185b8dd mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x14f25514 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1fab22e6 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x26e5b259 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x36650b55 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x39131285 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3a974bcb mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x40096087 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45461e80 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x456c15a6 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x658cae77 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67dc4672 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6b29d0f3 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6f337661 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8db8d3dc mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x95d79d0f mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9ea46095 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0e561be mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbdaae004 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc500a2ae mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc6ac3d9b mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd21c66b2 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdff728e4 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea1d3d21 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeb7a0053 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf10642c7 mptscsih_io_done +EXPORT_SYMBOL drivers/mfd/dln2 0x9d50e66b dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xf1d9e496 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xf3975acd dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa386e4cc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xbc794080 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2df8ff1c mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3caa1327 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x51ce8d51 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x748fa933 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x79414eba mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9e4dd758 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb5290d4f mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb5ca0237 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd811e522 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe7f5ba2e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf1e540c4 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x02ac023a wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x0f54747b wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x37281700 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x9a70aeb4 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xa84a152d wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf1716ea2 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x14ef2f17 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xcbd301ac ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x37cbc168 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xd0cada7e c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xf9c7544d c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x6a62b3ed ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xded2d47f ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0fdef072 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x49aa9214 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x50c2dd08 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8045e547 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x85a6c220 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9843565a tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xa0caa398 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa5e40753 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xab106cee tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xb0d9e02f tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc14ccbb5 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xeedfd787 tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xeee89af2 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0683ddf0 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1a57aa3a cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3a77d3a0 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x46b73063 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6384e8d4 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x97a24dc5 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa0859e50 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2ff8ef28 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4dfb22f6 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5f442d8a map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xf9c066ab unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x96c19dc8 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xf4311aac lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb750e1ce simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x4937e07f mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xb3fff383 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x22be522b denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xfa93ecd7 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3da620aa nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x50a8fb63 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8e65e302 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0x938b4675 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd2204640 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe10bf0b8 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x35234e2f nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5ba59ef9 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc712cc58 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x0a718321 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf3d7edad nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3a01b90c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x55a012d5 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6b44a107 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xae9911c5 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x15b6bdb7 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6252ef3b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6cb5364d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x72570ec6 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x86e8dbdd arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc49e2bc6 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd438c437 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdff8c625 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xea816676 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf1afeea4 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x2cc24bdc com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5646bb5e com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6fc81a21 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0aead25c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x23b68288 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2bdec9e0 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x39f60f1c ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x42a8beb4 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x638b6dee ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x64c40fdf ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x753d6085 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb06f4c8e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xee65b13b ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xe8890408 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xc958211f cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x162ad3f5 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x21012042 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2cc2a707 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x328d868a cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x333eb9a0 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x340f8e13 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3d2925f2 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6faf23b3 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x75ab17a4 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x81409edd t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8c7a87b8 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90e27c40 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9317cbda cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9d20f3f2 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xab418973 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf3c41e01 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x01a9863b cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d505ec6 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1cfdff88 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2748fdc2 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48962f46 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x596f2fa3 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5f7879c5 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x65b76a46 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6a1f9deb cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ce3ad3b cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ebca3e8 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b950f2a cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b9b5283 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8678b64a cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86ca9a71 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8964b394 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8c27f0f5 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x90c8f691 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94bdcdad cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9874d089 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b9c322e cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d0dca6b cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d305c59 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d395614 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9effd973 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaafbf9f7 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad5a142b cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe06b32bb cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe4bcdc9a cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedba019f cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf400f5ee cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5346df5 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9267c52 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfd8263a1 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x060f326b vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x743d882c enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x75c4b292 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x7dab82ab vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa47c2d02 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc5b33406 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x294f44fa be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x9f92e048 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x017757a4 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c991210 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ef2725c mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23538d7f mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28a14214 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f695bda mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4201c615 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48f24233 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x562370f0 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x565a29e7 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dffd7c4 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61b7f3e7 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66ffb750 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69818f75 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c471fac mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ecdbc0f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85977286 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f03f91b mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94a2c356 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98459852 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa31ed3f3 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6008607 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad3b51a5 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae3b860d mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaea270fa mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2014e88 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc55bd8db mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd21b3933 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd34341dd mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda53fe15 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0eaf469 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe590bdeb mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7a1d27e mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed6c0470 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee083556 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3287182 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe641a82 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffebb9bc mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05862b6c mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b549a57 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b848dd2 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2be23785 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e15fdf2 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35f75bb1 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41e1ead7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x450c0cc9 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4db31e02 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f916bbb mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52e38d7f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59b7819e mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ec546df mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f3f5150 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67d68aad mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67e49fa0 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f3e3347 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x724e57f3 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79cbc536 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a9903df mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b4b38cd mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c67c29f mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99412050 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e2a74fc mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5a84b58 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad27ac1a mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb01dfa38 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3f3e1f3 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb50fad79 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9f33ee1 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba8c24cc mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcaef7d09 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdca88ca7 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe28b98fe mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe761dd9b mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed8434a5 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf542eeb1 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe9d6b41 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x86e088ba mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8b4e260c mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9089b2a1 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9ff062d3 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa5b6add4 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xaa48af00 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc24457c5 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcb5c8545 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xee181ea3 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x25af7ae1 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x38ff39ad hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x626bec9f hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x85247b48 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8be37e88 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2159bcf7 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x247f30bb sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2cd918e3 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x560bc856 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5c948e09 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6932c385 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6955bb34 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x881d58e0 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9dbad55e sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd3f7219c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0f6e4dc1 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x7ef88f64 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x95efe4ac mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xb57dd0ec mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xcb85d388 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd81d0e00 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xf23ee15e mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xfa4979f8 mii_check_media +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x2771c3dd free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xce7dded2 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x76f7fba6 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1a23313f pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2e30916c pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3e52e05a register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x38af53b3 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0bb7b886 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x38fd8edf team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x71305b85 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x9ebe7157 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc2e95dce team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xdecfe636 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xe2188412 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xe76b3eb0 team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x3405276b usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb38f10e0 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbc3bffff usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbf5129dd usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x074b7ea0 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1783de48 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x24c12dea attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2e3f8877 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4147dc6d unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x68a1ef96 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f329537 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbae343a3 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc22f6b53 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe87ab9f4 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf3ae8898 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x4e87b8e6 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x22874715 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5e3433bb stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc21e3bac init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x11f26731 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6307fe41 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6e6e69cc ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x75c0c0df ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x84a5fdc7 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x84d14756 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x98b2f620 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9932c69e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9eca63a0 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xadf30c76 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe5f713d0 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf8ba7130 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x01347b56 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f75576e ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x20879780 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3a939519 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x439ba2ea ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5aaa3f9a ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x71ab0350 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x820aaf06 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x946959a5 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9bd93cc7 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5211802 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd98d5b89 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xea8304d2 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xefb8937e ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfa5626bd ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0e9de7ec ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x14e5a70f ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1bf7aa33 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x26a5efed ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5ab16fe5 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x812dcbbd ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa33163c9 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa5b012be ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc30702e2 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd51e916a ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdd35ae66 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0a45c70c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x27a19c7f ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x398c45b0 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3b89ad15 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d142cb9 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x53b5fe83 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x55dbbc7c ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x60f62899 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x676b2033 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6f3d012e ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7cade559 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa672e912 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa7d31c38 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb3b32e38 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb86b4ef4 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe7147ce ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc829aef2 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd1c7a061 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdb017905 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe0b4714a ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xeec6c402 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfa173854 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xffbaef56 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x040fe7ec ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07bcfcb2 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b38d08c ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cd663ec ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18e0d6b8 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x194dd452 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19f1515b ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1da18d4f ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21db72ce ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21f0f44b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2564dce0 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x271927f4 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27d08bfc ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32c9a11d ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32eef374 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3925e6c0 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b27980d ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c812d12 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f01ade1 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4310b074 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43604221 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46b4cf0f ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x474b8127 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c1cf366 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fc77e4c ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5025ae9a ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50a9c328 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51cb76e7 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54d48d03 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x565a53ef ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57788ad6 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b8ea71b ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60bb5902 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63f8e4c9 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65bc6d7f ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66c74725 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x672d3330 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x681e86dc ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b9e85ad ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cdbc348 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ea0a57c ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fc4725a ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78b225a5 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7942dcec ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a06e845 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ad49d42 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c3a3c17 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e1b7cab ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x819eb1fc ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83efde64 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89113afc ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ad68e71 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bde83ef ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c65fe85 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x906af1bb ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9077ac94 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93f34680 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97e4a992 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d708322 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2499eb8 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa32f8ade ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa446b03b ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4c2508a ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8d515ad ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa97666d7 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabc058a6 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabdb1f41 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac0155f0 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaee543fe ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb367f58d ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb59102d7 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb686781d ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb771d37d ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9f4f2ec ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca9e1007 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccd2376d ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd04750c ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0d03ab8 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0fe03b0 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1134f31 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1db67f2 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd256e662 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3f1137c ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6b61f2a ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd81180af ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc2e6a74 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc9d731f ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdee20702 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf446357 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf811c94 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfd5a37a ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0ff1235 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1636172 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3290142 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4189783 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe54dfe77 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea9cadd6 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xead733b8 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecd2e27e ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf023ca0c ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4d1944c ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf50db07e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf66d7a18 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa1151d4 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1d4f64c9 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x2affdd59 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa692a074 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x11e7860f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3a20879c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3eae69a8 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4a7b765e brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x60615a73 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa6601ff2 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa987910d brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc753d9ce brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd70f05de brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe2201194 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe2fc0b00 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe9dcfe54 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf97779b7 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x154c2709 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1658961a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19e0de32 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1f0b0fef hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x36b189ed hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3c2d3996 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e232e56 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47a5305c hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x59518c5c hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5cd7d0a0 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5e56078f hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5f6b4446 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x614977aa hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x77096d02 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x82aabd82 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9cd25bea hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa800ce27 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8a34063 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xad1b074e hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbf5fbb6c hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3512216 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdcc2d597 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe56246e3 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe64a9b37 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf434ac10 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x01e63bcc libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x05ab7080 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x06dae2a8 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0e9d2254 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1217ec26 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x197e31da libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2b97bf87 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x31617413 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x318afddf libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62a7d042 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x75db2e6e libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x782097d0 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7af5761a alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b066070 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95b44bcd libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xab03f6de libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xade6d154 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6a20512 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd5619b37 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd8668b8f libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe6487491 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04d81f88 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06158c11 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0692092f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06a64acc il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07c5dc5c il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0878ef86 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cbb8326 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0db101cc il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0dfcd290 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb40e8d il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb5f4a5 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13d06493 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x181426d0 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1aa871d9 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1be598fe il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cadf175 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24380b22 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2498ee21 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28980de4 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dc579e4 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ebf69a7 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31f03d5b il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38de0036 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a5c77f9 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dc52527 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41d2d3c7 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43725c98 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x445ae529 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x445f114c il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x456ae3b4 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x491762a5 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52fa1581 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54766e11 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54c6f11c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a0910c7 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b0affad il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b7cc990 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60f33a9e il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x613f2d0b il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x622786b2 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x677c757f il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c5eba0b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d51acc1 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f3f8c64 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x707b1987 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b15bf52 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7bf6b5c8 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c25e345 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c7f0192 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e86aea7 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8344dc9d il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8baf1712 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8cb01a98 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x904c8401 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x915551fb il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95d730a2 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95dfa404 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x964bdfdd il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96df5bea il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99f352b4 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e037767 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fd5383e il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa07e22dc il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1aaef8c il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa55a9f17 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5a5ba3a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9bbb67b il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaaf5f3b4 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab7111fb il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac28c0cc il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaec95c35 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf351666 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8a9531f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb989a353 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe31ce64 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbffb93ee il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc38347e9 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc502cd4e il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf8a3285 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd19e32f9 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5d13e0e il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd92262c3 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0c991a8 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2a4c4aa il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2d322f1 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3747277 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe616a63b il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6729015 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6fb959a il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeba580ce il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef0360b0 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf06fbe04 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4424df3 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf55e50a8 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6d99755 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf79dee35 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9ccdbca il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc4ab9b4 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08c6664d __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4379786d __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x95a8ab3c __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xa2b6ec39 __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb69add1f __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xcd60e86e __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xd4f50457 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x029c246b orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x03e09359 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x078c9103 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x22f65314 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x24af53ec free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x540fe50f orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5c8e3bc7 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6212c31a orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7a0fd9e4 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x86a401d3 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a51f7c2 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb339073f orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb548ca84 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc3c309ee alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd265fd19 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf0eed3e0 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x872ffe12 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x01b59d2c rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x084158b1 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0c20ec21 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x11a5da64 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x186abd7b rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x26cd2010 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x26dc04a8 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2702e0d2 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e73486f rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x39ffc7aa _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3bc3844d rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3e2dd9b7 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x431246b9 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x473fab09 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x47719600 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x650e8808 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x694b251b rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x75baddbc rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x786cae02 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x78cdc62f _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x81af36a0 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x89421462 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8a5c8972 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8cdc61cc rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8ff7bf7e rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x92ce8d20 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9590a83f rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9fe4aad1 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xab3f3f99 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb144eab8 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb54fcb49 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc02c97b4 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc0dae6fa rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc3d8aae6 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdbf2463f rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe4e1cc65 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe99ed138 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xebd3f9c7 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xed9ce068 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf12cee68 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfce5a6b9 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x258fcb49 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x3cbdf8b4 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x7f5eb7d9 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xf2f262f2 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x00fb3fb2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x21fa3cfc rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x26b8a093 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xae12c61b rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x00f31fca rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0463c64e rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0fd6b6cb rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x11f65973 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1cede8e4 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1f211879 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x23f2f476 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x250707e8 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x29bc6378 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x398bde77 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x40b05888 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x421d00ed rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4916aada rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x491989b3 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5ac8cbc0 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5ef4027b efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74acee38 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7ad2f299 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x82bdd8c2 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x836e2f64 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa48b243f rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa7e2e4d3 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xae17fb19 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xca9ac7b3 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdb7802c5 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe5e9062e rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeb0b89d2 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec9df818 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xecec8598 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfd675391 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1370a368 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x554307ef wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x841b855f wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb666b9d2 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x1f6ddb3b fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xd105349d fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xebb3b14e fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x17ff5b8d microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc1bd18f2 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0d67576f nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1c377ffc nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x7648b845 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x32c007c2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xed31af9e pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x3a6db990 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x89e3a313 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xa40ed3fa s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x16dd6b7e st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3c8e1b0f st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x604b4b8c ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7956f7d4 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7d237496 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8ef6560f st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9a65bca9 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd829a8ae st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdbb1daa8 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdccb7c8c ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe8fc1397 ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x03ebf4b0 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1127f3d2 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1554ad2b st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2336920a st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2bc044fc st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x39ee13ff st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x47ad52e7 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4e8534f6 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x503959a6 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x567fdbb9 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5ed1caff st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x60fd64dc st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x69261355 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7cc62ff1 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x854d3121 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x86f9a448 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x94adc7ce st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9aaa1a3e st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x346df7be ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x5d47f8b2 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x74b0a950 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x767d09b1 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x8959b276 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x8ed7581f ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xf63b9217 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf86b092e ntb_unregister_device +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x15bb1230 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x0ebd3e29 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x128d4f16 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x13ba737f parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x152ebdf3 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x173eb4f7 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x237dd3a8 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x27dd25eb parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x45780c11 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5001be14 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5176c952 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x51ebb9d0 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x66e030d8 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x6a21f560 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x6bc8041a parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x6c8b36d7 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x6d223f0d parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x70124e5f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x784a664c parport_release +EXPORT_SYMBOL drivers/parport/parport 0x8c5e3e64 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x92ee03bb parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x9826f7a5 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xa4f4516a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xa6e6c70d parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xbfc34c57 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xc290b29c parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xc854dd56 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xcc528386 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xd2a0e4ca parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xd5b51638 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xdcabdeaf parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xded0b099 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xff237287 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x21d7e503 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x5d731c0b parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x11b8d357 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x34a9d239 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3e33d0e3 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5f68e19a pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x771be530 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7a14dbf9 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7f3b681c pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8643ea09 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8c67c624 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x942fcf47 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab92fe12 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb109d49f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc22c7bcc pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc44640e7 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xccf6b445 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcda6e487 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd2ea5fcd pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd808489a __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe5f19045 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0969ff44 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0af200cd pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0ed9e89e pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x30df0bc0 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x73f8b12f pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8e6d0a3f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa2bcd72f pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa8bc52e1 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa945ea23 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xab136e61 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf8e18cd4 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x0c64c891 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x81a6dd70 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x0fb2ade0 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x18d8e181 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x1d3bd4e7 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x1ed3a4dd pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x1807c312 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x5077cc31 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x52b54999 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xac80b910 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xd9f6d215 ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x103a3f11 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x24bc7ddf rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2dabd157 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x404147e5 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x473db727 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5cfa73ea rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6b8a9bbb rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbe5874f5 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc7c4f69d rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd70d82d0 rproc_shutdown +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x585f628f ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x38156448 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x38f448cf scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb7780650 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd8782f48 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x07b73cd6 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x151ce574 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2fc0b875 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x430ea367 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x544924eb fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5bb6737f fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x82603a7c fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc82d7c1c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcb2cb398 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd9265ff0 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe6056074 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xef576afe fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0837fa6f fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c6e56d2 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36ec7be4 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e8b1a5b fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3fae3639 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4270a6f9 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43347f49 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43e7a31e fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d47003a fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x530208b0 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x542704f5 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c087229 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x624ed663 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x649ab274 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69ae3313 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aac9ed2 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70553ba1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7527c2c4 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f846368 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81121dde fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86fa7d1a fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89ed43ff fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b78a90d fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96103619 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b22001 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1aee8d3 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa5dcb096 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xacdacf93 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad8540ac fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaee8a6d8 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf77c0e8 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb051d8a3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb318db48 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb62c647d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe07bd37 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc1ebc6ec fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc9eb2dc fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0780423 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd107a0a9 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1b77d8e fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd23ab2f5 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd39f5c21 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4be6218 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda807f61 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdbbd1576 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2d2e20f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe79ec313 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec4af424 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2a832ec fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf50fe1c0 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2d554baa sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x85242a6f sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8f3e5281 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa57698cc sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x556304c8 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x175880f8 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d5aa191 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21cc49c3 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25d4ee75 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3009cd0e osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3828763c osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49c995eb osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b81b620 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51fd9abb osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5257d00a osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5354e0b0 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x54cb687f osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5e8f9c64 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x668ba5a2 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6713eba7 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6ea6828f osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d06c8c4 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x911c3459 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7422cec osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa76fb8de osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaba76743 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb3725313 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb3ea65b0 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbf1f3cdd osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc743c053 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd23e9132 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd837f90f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd9872606 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde43f595 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe02bfc24 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe0bb0366 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2bbfb8b osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf24f9191 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb7ea201 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfd00a71b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfdb87d84 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3621a107 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x53238184 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x773268e1 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8f315f79 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc00da213 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd9f6c3c1 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0181e27a qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0652a0cb qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15aaa2a9 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1b04a0a8 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1f43d66c qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6410e0a2 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x691dd303 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb4449275 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc1ff8bb1 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd126e4b9 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdb4f92e1 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe021dd52 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1ff09981 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x22530a25 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4417eb39 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x614ba079 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x848771fc qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfcc67afb qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/raid_class 0x1e463810 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x51f88c3b raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x58e5a7f0 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x020c620c fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x046a9f07 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x095d48b3 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0fdc5dc9 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5a7479bc fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6fd6db0c fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8eefae7d fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xad5d4863 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaee47f0b fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb1ff4ac7 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb27c1d2 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdf502549 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe272d8f6 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x005809bf sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0204f7a8 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x036c51f1 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x06d2f908 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x14d62a60 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1dd47409 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1fe69411 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x251532be sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x29db1769 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x341c310a sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x503f40b6 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64870962 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f4657bc sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x72e97d5a sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x766db7ae sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x82b68f71 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83b0007d sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9ea61611 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7342a96 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9942d94 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb37fec8 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb5e0b02 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd8a65aa5 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb6b8186 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe2ef0b59 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee019cfe sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf229f9d9 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd568e30 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x48ae1925 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x75fa77d4 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa9f8a75e spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xece175d3 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf9c59124 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x42229c16 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5534c935 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf09b4098 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf6825d20 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5d061b30 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x633a1dca ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x673a6c98 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6b1abdef ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9973b8f2 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa3ba83e8 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xcb029915 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x33ff8ade ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x34a95cd2 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x3f6e7c99 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x44454f69 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x468121e5 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4dfb78be ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x63e4d120 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x6a084d4a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x7a928ab9 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x8c1c4caa ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xa9aeaede ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xb547d2ce ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xb5e94552 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xbbe3e592 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcf971c55 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdc05cdf2 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xe32f06dd ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xe3da0882 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xec65c99b __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf690ea77 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x21c009f0 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2dace721 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x42588f4e fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x486f6158 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4e0389a5 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5a7e4cc4 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ec41454 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x69804fe9 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x76b2fc79 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x76bd42ee fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78969c54 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x81e79363 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x839f5147 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x86a19e23 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x86af248e fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa2b7b4f1 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa6fa3008 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa9d8fbc4 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xab0d1513 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb50d312f fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbe26353d fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc09115b3 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe9b4ecaa fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeafeb30a fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x5bd8d7bd fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc0f320c4 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x37777d40 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3bbb28c7 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xba64313e hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xd10b779c hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xf22e5456 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x61793b5a ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x678f8527 ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x1f02aaf7 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x037f6300 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0314980a rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0829d00d rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0bb51b11 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c637ee4 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ec43d65 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1225034a notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x138c8c9a rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x186614fc rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x213a3979 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21d859a1 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bb6be69 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bfdf53e rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30e37075 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x32e46f06 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d831c17 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x457bee34 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x491e183f rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a17d25b rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4efbbda2 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x510f13b2 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51378d78 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5833af2d rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7b9d7eb1 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8bff6a3a rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x938e48b7 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94109844 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x955e1f9e rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97a3949b rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b792e7a rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f3233f9 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb58d35e8 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb5c0bcf5 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb65670b0 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba1f08c9 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb23e2d7 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc493920 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe4259a7 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0183290 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2e7faea rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc31adffe rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2bbfe93 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4e121c7 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc7c2c6d rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdda55ae7 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7663a61 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1845385 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5d309f8 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7d907b6 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd5783e1 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe91523c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0239713a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03747b0e ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07504905 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b705499 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d3919f3 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f20b9f6 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10117e27 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10abbade ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15f5ec5e ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16118b13 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16cb16a6 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x190e6191 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19fa9674 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24aa24a5 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x291b5014 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d3bbb83 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3026bb7e ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a1e07c3 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f173bac ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x461c68b7 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c38c1a6 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4eeb10e6 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x505b3a78 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62e23ebe ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x65e4ecac ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a5c1aa9 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c5a9dd7 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ca3ed9a ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ed91d48 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x740e1009 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b3050a8 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x809137ac ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82d299ab Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x877e3911 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9284103b ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x943c6970 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94f2253a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98601171 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d2de5dd ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1759513 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad0daed5 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb942b60c ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc44e62d ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfe41d2e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc887fb26 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde4dd59d ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe35317ae notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7ac7c36 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec772059 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0494fa4 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf791f897 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa15c892 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfff15aeb ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x00fafedc iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x014bc04e iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09e38d66 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a8864e5 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x110558ac iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x12530ea2 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x18b0ebfd iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x35396a61 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e38b3c4 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3ff6908a iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x61339435 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x64c83d4c iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6c4806a7 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6ebb9853 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7979e2c2 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e276fcd iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x928cf802 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9458c130 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9b262df8 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb5723855 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbfe928e2 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf1fe5a7 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd36c1451 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd62d5aa5 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xddb79cf1 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe5924132 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xeda2a380 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfff7c0de iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03096636 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x056c0098 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x06502bd0 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a828a3b passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ab88dd8 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ce929ae target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e74398c core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x111c465c sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x12f4f4bd transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x14a32560 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x176bbf3a target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x17beb648 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x17f7b881 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x19b145d1 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b06beb1 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f26db8b transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2aa98022 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2efcefe3 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x30257d7b transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x438885e3 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x52b5c2a7 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a5cafa7 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b311643 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c3b6907 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x60a19ed2 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x6777a670 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x69f8d8eb target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x6aebc265 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d8783e1 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e188a5d __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x772b63fb target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7874e95d target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x79d3bf5f transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8695b442 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x8696e10c target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x86bbe9e2 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x89780aea target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b415ef8 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d1b15f7 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f3a3443 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x9059eb80 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x91a98df8 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x930e1f53 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x953e08b2 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xab9cd9f6 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xafd14328 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0def853 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xb64d1e30 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7700ee5 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf6391a1 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xd05c83b4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0fa7072 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xd391ce20 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd549c84b core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd96f76a3 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xe25193e1 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4a63e50 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xea31715b spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xed3975c3 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf05f2183 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3fa5404 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9736332 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa590f3a target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xffd45470 transport_generic_free_cmd +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x7d55d627 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xd0e8a4ec usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x5fd67878 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x15719821 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x402befe8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4ca25b0c usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x683f6324 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7928f2fc usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7aafc760 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x89486d24 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c3c3543 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8fa2564b usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa1037b52 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcbcc5045 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xec34b42a usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x501eead0 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x923b3d04 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x21a6f533 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x358ea8d3 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x60570924 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaf740833 lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x3043a528 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x476532b5 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5da9350b svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x692623ec svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x7d19c43d svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9be2c0d8 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf450fc8d svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x07bbf946 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x6bf0d867 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x1514c801 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xbd9e9c7b cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x10eaf490 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4e4e1842 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5b7e5eb5 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3d676331 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x76be211c DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x8cd12802 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xaaa59a7b matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x8fcd5e83 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x2485994c matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1c7b5baa matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x3673e9fa matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xae4f4fc4 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcd408a41 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x10465c10 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x5601da5e matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x05c72d3c matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x20fd0c56 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x2c65f072 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x3adc746a matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x42f3afc3 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x43b316bc mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6a63e4bd w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6fc54a8e w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8266f7e0 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdf0f952f w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x15e552c9 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x77f551d2 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x5fd1d1cc w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xcbb9f88a w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x11f30c98 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x3d2cc216 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x84405d08 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xb0599590 w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x0dc124dd configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x226e302f configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x28c78dbd config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x2f52bb63 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3002739e config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x50dcbcfa configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x6db40b6a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x77472e9e configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x7a47fc64 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x8b3f51c8 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xb69d3142 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xc6199362 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xd4f742ce configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xeb98aace configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfc2f37ab configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3804dc1d ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x7780354a extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x7b431f01 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x90fe69b4 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbb843d71 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xbd034d5d ore_read +EXPORT_SYMBOL fs/exofs/libore 0xbd9aa910 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc3180efd ore_write +EXPORT_SYMBOL fs/exofs/libore 0xef8989ee ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xfd2ef854 ore_create +EXPORT_SYMBOL fs/fscache/fscache 0x032c1864 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x0e89fdde fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x0ed24052 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x10c72e3b __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x20717753 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x2d220042 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x32b1d493 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x3311f783 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x39cdbd57 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3c9d91cf __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x40aa5071 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x4e61b5ab fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x55b32c0c __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x5b85b43a __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x664ac72a __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x6a3d43bc fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x6b68c8d6 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x709db2a8 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x741ebd0d fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a751c18 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7bd2560e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7c1fb544 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7fb5deba __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x84a5d8c5 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x86daf565 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x8e0d62ff __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x9a0278cb __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x9bcc78c7 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xb7fe7624 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xc4bcdbd4 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xcff25ca0 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd9865ee7 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xdc51f96f __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xdd109c20 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe19cc017 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe4c139bf __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe6e24e53 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf2ae90fc __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf5661c52 fscache_op_complete +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2db540fe qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9b3c323b qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb590a48c qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xcf3d8e2f qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xdb810afd qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4eecc4eb lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xadb823ed lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0xc2474bc1 lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd3e76543 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd685b5e9 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x28aaf608 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xb455327b unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x855f8399 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xd4981705 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x4bbdfb80 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x5f031ff2 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x04311b0f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x200e4f0d p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x2dd2951e p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x3215a9ee p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x39982c4d p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x3d42d8e0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3dc26c12 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x400e2202 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4cc88b1d p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x50c0690f p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x50f4eea9 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x526c353b p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x5afc54f2 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x5b81e91f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x647f77bc p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x652cfa42 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x6b5b8a06 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x751da22e p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x76a88e43 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x77028118 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x79b47bbb p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x7db7c604 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x7ea8145c p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7ffda737 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x926c91bc p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x92acb01b v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x95ffcb10 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x962d3af2 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xaf284303 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xb1789c40 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbae3ef1a v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xbda788d9 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd1aeb939 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd2f148b6 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xdb5c8435 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xddfe1f44 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xec62fe3e p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xed0664fb p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfaa6931d p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x3fa3e9cf atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x4dfc7697 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xa700494f atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe27dfdac alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x0c279f18 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x142aa03d vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x25499a0c deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x30e68e68 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4098ae93 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x40e75941 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x7ed49c5d atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x966d33db atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x9c8b0e79 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa783c2a4 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc40d0181 atm_charge +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf1a5442d atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfe6d140b atm_dev_signal_change +EXPORT_SYMBOL net/ax25/ax25 0x237971ed ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x27455e5e ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x321eb1ff ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6049a7f3 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x70c44f96 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x88e58bdb ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa70d7b07 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xfb3d966f ax25_linkfail_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04ce2a54 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x062fc6cf hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0fd83c35 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30c350f2 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3ca07e30 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e9edba6 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f8cd993 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x458f5758 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x45c46aef bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46a2fb1f hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x485f82df hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48e92f79 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x497ea0ed l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cc8c495 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50b51e95 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62606fef hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68758d32 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70ab07ca bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77e9d2bf hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8751c32b bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b34b52e hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8eb55ef6 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99931d7c hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b37f066 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9bdc2fc7 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ebe0c1c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa60adc8a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb00637a4 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb14b6cb2 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbb659a4b __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbed0c33 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc93fcdc bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc473f148 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcafcb602 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd6c52505 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe38feb47 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe731bcca bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec3779b1 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1a76cce hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3c4a659 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfe4a99d3 hci_suspend_dev +EXPORT_SYMBOL net/bridge/bridge 0xb628c026 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x84cf6a47 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe93cc97f ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf7135548 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2259141d caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x260d1ce5 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x48b7f5f4 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x80753038 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xf41474b2 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x1174db2c can_send +EXPORT_SYMBOL net/can/can 0x445c0e04 can_proto_register +EXPORT_SYMBOL net/can/can 0x57ef58a3 can_ioctl +EXPORT_SYMBOL net/can/can 0x9100cbbd can_rx_register +EXPORT_SYMBOL net/can/can 0x93568ec9 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa90652cf can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x0094f542 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x023b8363 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x03c55260 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x049deeac ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x056b0526 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x065dcead ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bf75fc7 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x0e072084 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x102deecd ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x109605fe ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x1260b42e ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x198e74c5 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x1d633183 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1f97ecee ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x20c38c50 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21fb8cd1 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x27d965b6 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x294dbd36 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x2bb785b0 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x2d4ea247 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x332291f5 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x35229be6 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x353abdb5 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x3565831f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c363bb0 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3d52f665 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45ce0634 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4621c714 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46fa2ce5 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x4726888e ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4b5d9cbd ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x4eba9d6a ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x4f4f5d68 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x51fb9465 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5571514f ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5cae0a70 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6292d5b5 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x639a2282 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x68c9a4b8 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x6b252daa osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6f48f2e2 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x72be4f90 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x72d6be3f ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x73a050e2 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x73a6bb1a ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x75c80105 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x7f2fca51 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x82f7fbb7 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x85fa5bd7 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x8977deba osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x8b3af95b ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x8b43315b ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x8d928b06 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x949546bf ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x94d11879 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9cd9f651 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x9d181783 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1c82364 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa5820553 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xa76cd2bf ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb3d02f9f ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xc02947ed ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4607a7e osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc7dcafc3 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xce8725cf ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd18e613e osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xd2166ec5 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4ceefb8 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdc399b06 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe3f4f557 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xe50c2dd0 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xeb4691eb osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xeb4ea826 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xeb56e79c ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xec295598 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xed9b28ac ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xee407918 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xf0d77185 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xf1101218 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf2033e3e osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xf46f6db1 __ceph_open_session +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x39d9f360 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x59743ae2 dccp_req_err +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3ee51025 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4063ecee wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x51d3085d wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x80ec0538 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe28b4427 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xed93e2a9 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x0c07b4a3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x8a9a076e fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xed741d6f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfbe6d5f1 gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x12a4d6ed ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1c12f536 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8f052aa8 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x90e75d4b ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb655047a ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xee6484f4 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x01bd991e arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x7ce4258b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x87ad5559 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x09f8f594 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5dbd76da ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf62454c7 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x88126d29 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xc4c4164f xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xe2a98b15 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x655f87c2 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7a9e147e ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xef8927cb ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xefea3ef1 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x744c22ca ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbdbb9a15 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xde92f6c1 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xa34a9a44 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xe76b7cf3 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0b3f07df xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9d1703bf xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0dbe4075 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3f9cee54 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x953c022d ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb3ecbaec ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc9a67e67 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcd1c0e10 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe3631036 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf00e8312 ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x10143924 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x1303b585 irlap_open +EXPORT_SYMBOL net/irda/irda 0x1a259ce8 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x21dcfc0d irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x222428f7 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x22c4df01 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x2593f5c3 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x2c5a8a90 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x2f33c3e9 iriap_close +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x396c7468 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x399f85d6 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x3d13fbe5 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x42430ea9 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x60026f47 irlap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6171b1a2 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x68a4a391 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x75cdf39d irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x76094cb3 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8cb28c77 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x9053e6c8 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x933eed3e irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcaf98079 iriap_open +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xdbd3a219 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf09401a9 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf39b7fe0 irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xf45fbab2 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x269142d4 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0fa6e926 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x137c248e lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x19594fd8 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x631f3754 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x66dac809 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x8997a44a lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xa742604e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xc64ed716 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x42f130c5 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xab378654 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xbcd68bc6 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xbe8c12c4 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xc32861a0 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xccaf8b63 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xfc84b00a llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x00fc4d46 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x09279e28 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x096acc16 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x0f2f4bb8 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x15a10646 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x15c771fb ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x16083f6c ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1689121c ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x18b91b10 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1ce2767d ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x2470d15c ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x26c0ec5c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2788606b ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x28c486cc ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x28d30fd0 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x2b06ca85 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x2c153010 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x31cdd504 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x31dbf3c1 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x3881b8b8 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x38b7fd82 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x474a1fab ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x49022b49 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x4c4ecae7 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x50327d55 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x518116d1 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x52d5f5b8 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x53aafb98 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6a4124e7 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x729eaf64 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x79bb95e1 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x7cb0a536 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x7f4d5efd ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x835b6e43 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x84699f5a ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x853b3929 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8b6c7aab ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x8ce709b9 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x9358d2b4 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x93d983f2 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x940a1c87 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x94a26413 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x9666458d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9a145181 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x9de108ff ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9f3fa153 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9ff0fc6f ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa2e1f702 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa2f5bb51 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa3bb1e8e rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xa6ee3cf7 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa89d6831 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xac654609 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xacf9c34f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb0b748b5 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb2c29920 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb3d3ae64 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb6ab11bc ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0xb730ffa9 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb7d3f0d5 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xbd63b7df ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc210a1aa ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcdaf36d3 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd38ba925 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xd3f4a203 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd7d06fc4 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe076ffe6 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe1ee50c9 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xeb2f766f ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xed0f6114 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xefd8d09e ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf06adddf ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xf27bd26b ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xfa687492 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xfabf5d4b ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xfb61c487 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xfeb876a6 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xffab4837 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac802154/mac802154 0x0c67a2f6 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x0f0bfd1f ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2f25e0c8 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x3dddbfb3 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x554d760b ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x73511d78 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xd9a94d5b ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe3ef0bcd ieee802154_stop_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0176a3a0 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0219c9c5 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1126d2ba register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x19c25603 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1c13efb3 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x651fb239 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6622862d ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6c540577 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6ccf3642 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x93f30d26 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa1f6c7da unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa3984997 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbdf7958f register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe22532b8 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x30b7df2c __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xde65f08a __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf8b25107 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x271635f1 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x2e6582a7 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xd9f527e5 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xed78e8b7 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf4264893 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xfeef63ba nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x4c508529 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x4ce4cd12 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x4ef6645c xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x563e1851 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7cd3e873 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9f12bf7f xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa7c72d16 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xbaeb8b42 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xde723d6f xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe807f444 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x043d0811 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x3a6043e8 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4fe9b2d7 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x57b59ccf nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5e2788e7 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x72ce4a8c nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x73feaf0c nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x79abe804 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x7f79ff50 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8c56aea6 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x91703878 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x9ba4560f nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9f28a960 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xa938cd02 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xb656c55c nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xb874f394 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc7a267ba nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xe4c8fcb4 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xe72de9d6 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xea594a66 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xf22770ea nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x04cbb45c nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x05547239 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x10786b6f nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1bd809cc nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x1d956382 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x25ba05e6 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x40e9e85f nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x5c7bd6f9 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6b2ae07a nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x8ed35220 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x97851a09 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x99481f5e nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xa1d8c38c nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xabac3672 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xb4e506ff nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xb6d75631 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xb8995bb5 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0xb91b492f nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbc9c7b18 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xbd24bb69 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xc321442b nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0xd724d9ff nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xdeacc2fe nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xe08cde21 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xeb0b07bb nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xec4ef530 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf2c30aac nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xfb6593fb nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x0d921285 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x1ec1c918 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x2106fbcd nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x32925ac9 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x32e4505a nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x40c73c1a nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x5697e9a6 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x6eb58555 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x71046891 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x7d9bd7ae nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x8ba3ccd0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x8d347701 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x970ccd53 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x99644c31 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x9fe60a5d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa02461bd nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xa28980e4 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xd76117e1 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd7993d6b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xe98441e9 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xf05b6cbd nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xf871d2ba nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xf8c8ad03 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xfcfa5b80 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc_digital 0x3004f177 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x358e1b06 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6a85c5f1 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xec940ae1 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x3e4ead1f pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xad64a345 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xb5c02ae1 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xbd9ce14f phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xbe376576 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xd59b541b pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xda21dc27 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe4373535 phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0e814119 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1188b256 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1ecd9b31 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x27f5e80d rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x294ffa26 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2c62eb90 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5b115e22 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x73ad73c1 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x73af2c63 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x82c2700b rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa4dcc1a4 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbfacceff rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc851c740 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd332c5da rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe6e6d116 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/sctp/sctp 0x7d380aed sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb74a741b gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd3834734 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe68c43b1 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x0b41e23d svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x26e0eb90 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6460a6b1 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x9e7fcc13 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf85e24e8 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0090c55a wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x032220a2 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x068911a0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ddf2991 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x0e8501dd cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x192063e3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1b6061f9 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x23a1f1ce ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2852e340 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x2fcdd7f9 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x32c218e3 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x330cf874 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x3342c086 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x401bdd33 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x47faeceb cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x51868c4b cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x584409b0 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5c41883f cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x5e487bc9 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x5e63377f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x636dfca5 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x65219240 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x66c05fb8 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70a5fc1a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x72e9b300 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x73e4348d cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x77965896 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x78e051cf cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7ecfaf79 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f950ae9 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8238f9df cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x860ec734 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x887a4b8e cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8b148c16 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8b3aa2ad cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8e9f4c0f cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x8ea2d242 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x8f778380 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x97e198a0 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98e8287a cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa1e64b2b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa69b79a5 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa7db1272 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa986808c cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xab7d0a7e __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb7354608 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xb73de7ec cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xba71c070 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xbf5ea55f cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc1ab8831 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc432b1c4 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xc601f2ae cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc650e481 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc91b2178 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcad12a1e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xcd1299b8 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xce28063a wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xceb75b23 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xcf8f4f5f cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd4981eb7 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xd8358d6a cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd9856f3b cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc2bbc6a cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdf1944c3 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xe1a480c9 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe4856c4e cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xe57489ca cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe72f7691 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xe8f09f14 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xe9d6f3e2 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xea5013f1 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xeade3a37 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefa868f3 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xefe4f02b cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xf161aeb3 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xf1973de3 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xf1b683e0 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xf402c46d cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf53f8ef6 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfbd77727 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff71a3fc cfg80211_get_station +EXPORT_SYMBOL net/wireless/lib80211 0x80100fff lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8e9b0943 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xafa9070c lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xb852060d lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xbb4488bc lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xbd078e49 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x412364c9 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xb536aefd snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x02f25085 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0b5c4872 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc00e6e59 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc903e6ec snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x32a24d7b snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xcd303525 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x07c6b5ab snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x0c58d737 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x102d1a30 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x109c7220 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x166f6c17 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ef86e2e snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3030f0d7 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x35fa37b3 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4306a1ba snd_card_register +EXPORT_SYMBOL sound/core/snd 0x45642da1 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x45cfe389 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x490c7ab3 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4e76e0fc snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x52016bcf snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x5422391c snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x54788546 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x618371fc snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x63987ff5 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x6ad9e0d0 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x737c10cd snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x7512b751 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x78d92856 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x821aaf5a snd_card_free +EXPORT_SYMBOL sound/core/snd 0x85d48679 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x8c39b69c snd_card_new +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x935ecb6d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x96ae729b snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x99a17bb9 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa5459187 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xadab87cb snd_device_new +EXPORT_SYMBOL sound/core/snd 0xaef425c3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb73c300f snd_device_register +EXPORT_SYMBOL sound/core/snd 0xb93f68ab snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xbc3e08e5 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xc5d7a75e snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xc7b7b5ce snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd0f86031 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd11d1a7d snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xd39b4d98 snd_register_device +EXPORT_SYMBOL sound/core/snd 0xd9e976b2 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xdbad45f5 snd_cards +EXPORT_SYMBOL sound/core/snd 0xdda7f198 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xe9ade4f7 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xeb3743de snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xf720d1cc snd_info_register +EXPORT_SYMBOL sound/core/snd 0xf9a3b437 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd-hwdep 0x66037494 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04838695 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x07d57d1d snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x0b27fcf7 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x17788619 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20f39b3c snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x22e80354 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x309fc3e1 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x31a49b14 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x31e9586d snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x3365b975 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x380df204 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x49eaf945 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4decf4d0 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x500256fb snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x50c6815d snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x54df72f3 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x593a96bb snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x5b5495c1 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x5cc4ff0c snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5d48d77c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5e8951e4 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x600bd4ab snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x6091f010 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7663e99b snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x7664c661 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x77d276d5 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x797a5a61 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x79dfcf0c _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x7ece1f7e snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x84b28227 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x865c4ddb snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x926afdcf snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x961944f2 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x986a78a5 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x9e6b7631 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa40d412b snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xa484214f snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xa5660bb7 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xafdc7e57 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc615a490 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe18df966 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xe3088be9 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xe444d58d snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe9cfc99a snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xea35a1ae snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xefcf5cca snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xff6b17b3 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0374a0bf snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2346252e snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2797024e snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3695e038 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3b9cecd4 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x45dde1ef snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x568ce6bd snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x796fe625 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafe509c3 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbab765b7 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc2286f76 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc3886add snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb3255f5 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd10d289 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0999c52 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd504bff3 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe1769728 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-timer 0x0946acfe snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x13767e28 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x58aeb8a8 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x5a6a7bd5 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x5c2b2d71 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x6e878fe4 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x825383d7 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xa46c1207 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xb2b9c2a3 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xd0633aa1 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xd74fa1fa snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xdc5dd48f snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xf40b4351 snd_timer_resolution +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xb36def3b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x13e93049 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2eed1f51 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3d59ab0b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaeea30d1 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbbc33e43 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc001eda8 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe407318d snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xea507a7f snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xefbe3f88 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x07106a59 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1c2b7f0a snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x283e3f51 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6be2782c snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x87f72b3c snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x902b823e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9d740b43 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc588cfb1 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe9d9b233 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x08004415 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e243342 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x14e0bb6f amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18af98ec fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x22374f67 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4bca47b6 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4cf83df9 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4dd9da04 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5137a9a1 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52195c33 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x526373bf amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6527a7e1 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78eb5821 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x871d48cc amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8b1c99f6 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x912a244d amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x95218a01 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x95b3d7ce snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9bfb7ded fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa0718a18 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa73fa336 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab1282ba cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb9fa252d amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xba5440ec avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xba7d7c00 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc4eec4c1 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcea4514d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd091dc26 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd3f844d1 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe08fe6e8 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4a5d87d fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeb37e333 fw_iso_resources_allocate +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x66db08dc snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x6edd803a snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2199a9b5 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x276bf6c5 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x44ba284d snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7aa61202 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9b36c309 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc1a25688 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc2de9a4e snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfde16450 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1b9a87d0 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x252c4c61 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x320a4df0 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x38564b19 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa29df8c4 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc683d6ae snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x10401b29 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2644552e snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa6bc6eaf snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfc0ceb89 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x9f34c174 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc48873b5 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2c548983 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5572dcab snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x85aec53b snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xad54b802 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb486aafd snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xce31b244 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x340fb6d1 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x348b0656 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x40e8466e snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x97e3cba4 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xda665efc snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf9bdbe0a snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3be6f8a0 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3f5acdb8 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4be1b48c snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x53f8dacc snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x67064fda snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8b67ab75 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa9e132fe snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xac04dad8 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd4349437 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe4f402d0 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x26586d0e snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x29fe3cf4 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x36599687 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4361803b snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4949c24a snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5e228fd7 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x717b0d9d snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x88390651 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8a995e8d snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x930b4f28 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b36c223 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9e0a3ca6 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbcc46399 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd2d2cb25 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd628408e snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe1cd50fc snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf4735bf1 snd_ac97_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1945bf84 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x58b2b24d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x644c12c3 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6d1e1952 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9e9e0dcd snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa7f2e842 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xac860834 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xddfa8192 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1f49de0 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc2925e14 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd6e759cc snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe4e8b67f snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1410af9e oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x166bbf9e oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3f1498b0 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4d94e4d1 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4deeded3 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6b4a3826 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6da6b651 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x72172fde oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x957cc507 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9af915f7 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa0837f50 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xafed4482 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb45de7d7 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbdb55195 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc62add1 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd0e9eb55 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdd18d780 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3e5ee12 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe5f90eaa oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xed27a3a0 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf16a9353 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1731a501 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3ab7fd21 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x64cb0b9e snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x87ba3794 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xadad96d9 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xe64de1d8 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xfba562cc tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0x22a77c9b snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x3956d06f register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x4f015b02 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x76bc6dae register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7d33fd2d register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7e5b698d register_sound_special +EXPORT_SYMBOL sound/soundcore 0x845e1ef9 sound_class +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4516c62d snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x53147eec snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8e478a51 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb1ef8bcc snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb912e3f4 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc3c47072 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1ef3606e __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3784924a snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4db26988 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5aeba1b2 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x84cf9b40 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8870bb9d snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa6eca7fa snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbcc8edc0 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x7cafc805 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0011e81f dev_open +EXPORT_SYMBOL vmlinux 0x00386610 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x004741db param_get_string +EXPORT_SYMBOL vmlinux 0x004b82aa nobh_write_end +EXPORT_SYMBOL vmlinux 0x004bee83 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x004fe059 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x00528cdd macio_dev_get +EXPORT_SYMBOL vmlinux 0x0068d3fc xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x007215a9 nvm_end_io +EXPORT_SYMBOL vmlinux 0x007fcb97 fb_blank +EXPORT_SYMBOL vmlinux 0x0086b308 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x009028a6 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x00aa1f7a inetdev_by_index +EXPORT_SYMBOL vmlinux 0x00cb4337 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dad55e pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x00e9beaa pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x00febdfe nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x00ffeccf pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0123d413 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x013d3711 console_stop +EXPORT_SYMBOL vmlinux 0x015c85f4 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x0164ac67 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x0169e25c blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x018eccb6 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x01b79b57 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x01da9a68 input_reset_device +EXPORT_SYMBOL vmlinux 0x01de7a23 dev_alert +EXPORT_SYMBOL vmlinux 0x01ff42fe read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x02386a39 make_kuid +EXPORT_SYMBOL vmlinux 0x02410e4b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x02419cdd inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x025c0084 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026664ef blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283450a writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x02889ece unregister_cdrom +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a3e30f vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a86dbc vfs_whiteout +EXPORT_SYMBOL vmlinux 0x02cd3981 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x02d8a0d4 f_setown +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036ec4d0 skb_copy +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038e56b3 dup_iter +EXPORT_SYMBOL vmlinux 0x0396498c nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x039db0f9 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x03a9324b set_cached_acl +EXPORT_SYMBOL vmlinux 0x03ab924c tcp_proc_register +EXPORT_SYMBOL vmlinux 0x03e83aaf dev_printk_emit +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04062ff0 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x0413d88b xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x041e49b7 current_fs_time +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043e5333 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045b5fd8 consume_skb +EXPORT_SYMBOL vmlinux 0x045f040f xfrm_state_update +EXPORT_SYMBOL vmlinux 0x047e9613 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x049d001e skb_queue_head +EXPORT_SYMBOL vmlinux 0x04b55f4e bio_advance +EXPORT_SYMBOL vmlinux 0x04de8465 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea741c mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x053ca45b jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x055a2294 __module_get +EXPORT_SYMBOL vmlinux 0x0575f332 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x0586cde1 alloc_file +EXPORT_SYMBOL vmlinux 0x05a37ee6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05c491fe set_nlink +EXPORT_SYMBOL vmlinux 0x05d3c035 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x05e77379 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x06053c97 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0622f4de sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063a145c __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x063b6048 mem_map +EXPORT_SYMBOL vmlinux 0x0642d13e serio_bus +EXPORT_SYMBOL vmlinux 0x0646148d __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x065c7184 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0669cdbc ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067ac8a6 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x067cb980 input_flush_device +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0683ee0b scsi_block_requests +EXPORT_SYMBOL vmlinux 0x06bb5c91 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0714dea9 skb_make_writable +EXPORT_SYMBOL vmlinux 0x071f07d5 phy_device_register +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0790018c sk_dst_check +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bc5fef pci_claim_resource +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x08194b0f vfs_iter_read +EXPORT_SYMBOL vmlinux 0x08239a22 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085f7960 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x08628f88 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x0868e297 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x087f69a9 module_layout +EXPORT_SYMBOL vmlinux 0x08a631f0 dma_find_channel +EXPORT_SYMBOL vmlinux 0x08c9cdb8 bd_set_size +EXPORT_SYMBOL vmlinux 0x08ccb9a5 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x08cf56d5 nvm_register_target +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09222a53 dma_pool_create +EXPORT_SYMBOL vmlinux 0x0955e59e create_empty_buffers +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x0964a33b padata_do_parallel +EXPORT_SYMBOL vmlinux 0x096dd477 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x0979cb8e pci_disable_msi +EXPORT_SYMBOL vmlinux 0x09896b50 posix_test_lock +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a2d9d7 km_state_expired +EXPORT_SYMBOL vmlinux 0x09aa46f8 blk_init_queue +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x09bfdccd ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e1f141 __elv_add_request +EXPORT_SYMBOL vmlinux 0x09edff11 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x09ffdabc __sock_create +EXPORT_SYMBOL vmlinux 0x0a04af09 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x0a25ba68 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a30c962 of_phy_connect +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a44f972 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a585462 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x0a62f794 blk_run_queue +EXPORT_SYMBOL vmlinux 0x0a67d5c3 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x0a6c371a pci_dev_put +EXPORT_SYMBOL vmlinux 0x0a876970 dquot_disable +EXPORT_SYMBOL vmlinux 0x0aa119ea blk_queue_split +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aad6586 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x0ab54089 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x0ab8382c phy_disconnect +EXPORT_SYMBOL vmlinux 0x0aba4993 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x0ac37501 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0afc875b scm_detach_fds +EXPORT_SYMBOL vmlinux 0x0afc9b6c security_inode_permission +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1cee48 key_alloc +EXPORT_SYMBOL vmlinux 0x0b336c28 locks_init_lock +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5a7c8c bio_add_page +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b63bb7f eth_mac_addr +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7950e9 textsearch_register +EXPORT_SYMBOL vmlinux 0x0bb6fb40 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc53aed i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x0bf5d071 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c2075b7 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x0c23a5bd dput +EXPORT_SYMBOL vmlinux 0x0c31d2b6 __page_symlink +EXPORT_SYMBOL vmlinux 0x0c3319ae validate_sp +EXPORT_SYMBOL vmlinux 0x0c3f103f security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c55b94a __skb_get_hash +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c97fb2b devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0c9d9875 block_write_begin +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7363f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x0cab708c __breadahead +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb41e18 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x0cc6cc0c elv_rb_add +EXPORT_SYMBOL vmlinux 0x0ce2e22a blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x0cff9506 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x0d32b8b9 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d550d72 mount_nodev +EXPORT_SYMBOL vmlinux 0x0d61609a padata_do_serial +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d84b34e netpoll_setup +EXPORT_SYMBOL vmlinux 0x0da103c3 bdi_register +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dbe23a5 block_read_full_page +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0ded5862 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x0e2de7d0 led_set_brightness +EXPORT_SYMBOL vmlinux 0x0e376d9f agp_bind_memory +EXPORT_SYMBOL vmlinux 0x0e5813bc netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x0e6051be ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x0e6376a0 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x0e63e44d blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e74a7e7 blk_get_request +EXPORT_SYMBOL vmlinux 0x0e763156 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x0e8002b7 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x0e84db72 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e91432f of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x0e9b16ad genphy_config_init +EXPORT_SYMBOL vmlinux 0x0eacd7c2 fput +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec1e1c1 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0ef018f2 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f2af03d unregister_binfmt +EXPORT_SYMBOL vmlinux 0x0f4bf05f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4d72f4 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x0f5af604 add_disk +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f78ec41 i2c_use_client +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f860307 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0f93204e get_io_context +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd86c32 neigh_update +EXPORT_SYMBOL vmlinux 0x0fd988e8 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x0feda55f nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x0ff34b45 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x102ade60 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x1030e4db __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x10448ebb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x1056f6ef ip6_route_output +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x10783177 from_kprojid +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108ee419 security_path_chown +EXPORT_SYMBOL vmlinux 0x10b06307 unregister_console +EXPORT_SYMBOL vmlinux 0x10be28cf reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x10be7dab inet_add_offload +EXPORT_SYMBOL vmlinux 0x10cc4caa cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x10cf36ab vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x10e89837 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11100ee6 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x11145431 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x11183cae neigh_event_ns +EXPORT_SYMBOL vmlinux 0x1126c5d1 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x112c6af4 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x11306bf6 finish_open +EXPORT_SYMBOL vmlinux 0x11386cc6 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x113fbada of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x115269c7 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x115d008c security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x11703d33 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117a22ae kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118d429b soft_cursor +EXPORT_SYMBOL vmlinux 0x119aed45 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11af75a6 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x11b0ecee ata_dev_printk +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f81228 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x1209b624 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d739e truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121420ec of_match_node +EXPORT_SYMBOL vmlinux 0x12217e25 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x123e764a truncate_setsize +EXPORT_SYMBOL vmlinux 0x123fe160 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x123feb18 page_put_link +EXPORT_SYMBOL vmlinux 0x126f683a abx500_register_ops +EXPORT_SYMBOL vmlinux 0x1294240e request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a86f31 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x12b0f4ac devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12fd0304 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1306ba02 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x130bff64 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1333a59e inet6_offloads +EXPORT_SYMBOL vmlinux 0x135d5a0c ihold +EXPORT_SYMBOL vmlinux 0x136b182a iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x138d3c48 import_iovec +EXPORT_SYMBOL vmlinux 0x139cfff6 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x13b079f5 devm_request_resource +EXPORT_SYMBOL vmlinux 0x13b5387c dm_kobject_release +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13deb887 dev_err +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f94434 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x14145787 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x14173e73 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x14467c49 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x14558bc6 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x14603a34 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x147c641f gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x147e6f0a jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x1485c036 udp_proc_register +EXPORT_SYMBOL vmlinux 0x148b31ab dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x148ffb48 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x14c20dbc phy_register_fixup +EXPORT_SYMBOL vmlinux 0x14cd85ff get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d53925 fb_find_mode +EXPORT_SYMBOL vmlinux 0x14e42b8f xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x15002d35 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x150c0602 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x151a592a inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x154272bc vme_lm_request +EXPORT_SYMBOL vmlinux 0x1544eecb genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155fa0c6 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x15737c85 sock_wfree +EXPORT_SYMBOL vmlinux 0x15747ae7 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x159c611f param_get_charp +EXPORT_SYMBOL vmlinux 0x15b03a2c dentry_path_raw +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c72e50 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x15cbb4ce dev_disable_lro +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15f36d09 tty_check_change +EXPORT_SYMBOL vmlinux 0x15fe2db7 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x1600fba8 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161c61e3 set_page_dirty +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x164097b7 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x16686168 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x167768c7 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x1693d2a6 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x16a5d7e8 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x16a76945 kdb_current_task +EXPORT_SYMBOL vmlinux 0x16b904de __free_pages +EXPORT_SYMBOL vmlinux 0x16bb0bb1 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x16e0faae nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16ee8563 sock_release +EXPORT_SYMBOL vmlinux 0x1703cf66 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x172728ff ppc_md +EXPORT_SYMBOL vmlinux 0x17363674 make_kprojid +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x175e6ce4 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17785664 account_page_redirty +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17de7639 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f5c43c inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x17fc358d xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x1800bb31 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x185dfb73 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x18724869 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b2285a crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x18b9fb45 __vfs_read +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18ccc03b phy_init_eee +EXPORT_SYMBOL vmlinux 0x18d69616 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x18dec2fe lease_modify +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x1906a63d vga_put +EXPORT_SYMBOL vmlinux 0x191252ea iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x191cda72 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x193c02d6 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x19565aca gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x1958d422 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x196a13ee lookup_bdev +EXPORT_SYMBOL vmlinux 0x196d41fd phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c4d435 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x19f8b164 sync_blockdev +EXPORT_SYMBOL vmlinux 0x1a117e85 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x1a228c89 sock_no_connect +EXPORT_SYMBOL vmlinux 0x1a2338fb inet6_ioctl +EXPORT_SYMBOL vmlinux 0x1a29f24a iov_iter_npages +EXPORT_SYMBOL vmlinux 0x1a29f93f alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x1a2e9166 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x1a3653b4 sock_create_lite +EXPORT_SYMBOL vmlinux 0x1a4288ca skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x1a7a46ea pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x1a8023cb add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x1abd93af mmc_start_req +EXPORT_SYMBOL vmlinux 0x1ac2cd80 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x1acbd2f7 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x1ad5811f remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x1add746b param_ops_ullong +EXPORT_SYMBOL vmlinux 0x1aee915d of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1aff7a10 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b650911 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x1b6e0d7e netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x1b6ff2bc dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x1b71e0d0 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b97fdd5 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x1ba6f2bb backlight_device_register +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1c2bfe90 get_empty_filp +EXPORT_SYMBOL vmlinux 0x1c3f4fe1 kfree_skb +EXPORT_SYMBOL vmlinux 0x1c4b49e4 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c5e5d0d __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1ca30d14 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1ca42d30 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x1ca7cc5d find_get_entry +EXPORT_SYMBOL vmlinux 0x1cb144a7 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x1cb1dc5c nf_log_packet +EXPORT_SYMBOL vmlinux 0x1cba3bfe devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x1cd0fc82 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x1cef967c ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x1d14507e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x1d1ff68f dev_change_carrier +EXPORT_SYMBOL vmlinux 0x1d67ce2e vme_bus_type +EXPORT_SYMBOL vmlinux 0x1d9df7bd agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x1da541b4 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x1dabdd82 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df39092 init_special_inode +EXPORT_SYMBOL vmlinux 0x1e123f3e tcp_ioctl +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e4bb3a6 get_super_thawed +EXPORT_SYMBOL vmlinux 0x1e630fca bioset_create +EXPORT_SYMBOL vmlinux 0x1e6999af iov_iter_advance +EXPORT_SYMBOL vmlinux 0x1e6a55c9 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e4a21 blk_free_tags +EXPORT_SYMBOL vmlinux 0x1e95dcef flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ee3fe86 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x1f020e1e inet_frag_kill +EXPORT_SYMBOL vmlinux 0x1f06aeb5 __f_setown +EXPORT_SYMBOL vmlinux 0x1f0c106e new_inode +EXPORT_SYMBOL vmlinux 0x1f1cf01e __put_cred +EXPORT_SYMBOL vmlinux 0x1f3ed618 pci_match_id +EXPORT_SYMBOL vmlinux 0x1f46acdf __init_rwsem +EXPORT_SYMBOL vmlinux 0x1f614e3b blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2001c575 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x2003fcc3 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20157b95 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x20240c1e ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x202b4b5e seq_release +EXPORT_SYMBOL vmlinux 0x2031b340 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204f98d2 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208e09d7 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x2091bb4e tso_build_hdr +EXPORT_SYMBOL vmlinux 0x20963489 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x209c5836 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ae58d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x20b5d4c9 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d8c3a7 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x20df013b mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x210b9456 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x2139702b rtnl_unicast +EXPORT_SYMBOL vmlinux 0x2141457c register_netdev +EXPORT_SYMBOL vmlinux 0x21433930 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x21510cf0 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x2167db87 nla_reserve +EXPORT_SYMBOL vmlinux 0x2197c07f elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x21b3d450 d_path +EXPORT_SYMBOL vmlinux 0x21c50912 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x21d994f1 macio_release_resource +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e6c4d7 seq_printf +EXPORT_SYMBOL vmlinux 0x21ec9eda flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21fb0e6f input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2204b5a9 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x221ef13c fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f6207 __nla_reserve +EXPORT_SYMBOL vmlinux 0x223ebdfd inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x224974e3 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x22556016 seq_read +EXPORT_SYMBOL vmlinux 0x22563947 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x22707cc4 vme_irq_request +EXPORT_SYMBOL vmlinux 0x2275a598 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x229496b8 elv_rb_find +EXPORT_SYMBOL vmlinux 0x22a22352 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x22a5610e inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b734dc pci_get_device +EXPORT_SYMBOL vmlinux 0x22ba970a seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x22bd4d3e tcp_init_sock +EXPORT_SYMBOL vmlinux 0x22c7ccb1 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x22d3b9f4 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x22d56fed blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x22d65ec4 of_dev_get +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x2305d7f2 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x23495da3 __napi_complete +EXPORT_SYMBOL vmlinux 0x234e3d8e softnet_data +EXPORT_SYMBOL vmlinux 0x235c60d6 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b01a81 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x23b421ca tcf_action_exec +EXPORT_SYMBOL vmlinux 0x23b4b2ea of_iomap +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bc1d01 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x23ccf87a empty_aops +EXPORT_SYMBOL vmlinux 0x23ec3650 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241dfc61 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2427dfbc ilookup +EXPORT_SYMBOL vmlinux 0x242c34dc find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x242fb348 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x244120ba pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2444c38b simple_transaction_read +EXPORT_SYMBOL vmlinux 0x2447389d kmap_to_page +EXPORT_SYMBOL vmlinux 0x244b5a4c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x24562864 tty_port_open +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245d93ba d_lookup +EXPORT_SYMBOL vmlinux 0x24698735 get_user_pages +EXPORT_SYMBOL vmlinux 0x247a4588 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x249c50b8 sock_wake_async +EXPORT_SYMBOL vmlinux 0x249d4aff __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x24a834fc nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x24aeaaf3 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x24ba8502 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x24c42ea2 tty_unlock +EXPORT_SYMBOL vmlinux 0x24c9d1f4 param_ops_int +EXPORT_SYMBOL vmlinux 0x24dab3be twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f5409f inode_add_bytes +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25113e38 iget_failed +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x2543268d elevator_init +EXPORT_SYMBOL vmlinux 0x25443481 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x25653783 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257275ff sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x257a381a dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258c89ac dev_deactivate +EXPORT_SYMBOL vmlinux 0x25aefc3e devm_gpio_free +EXPORT_SYMBOL vmlinux 0x25bcf4c8 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x2604294f skb_queue_tail +EXPORT_SYMBOL vmlinux 0x2619499e inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x26205965 bdevname +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263fb3b7 seq_vprintf +EXPORT_SYMBOL vmlinux 0x264586b5 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26696548 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x26715ea2 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x267891f9 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x267906b4 of_find_property +EXPORT_SYMBOL vmlinux 0x269e0ba9 contig_page_data +EXPORT_SYMBOL vmlinux 0x26a2e42a __brelse +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c25c0c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26edf885 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x27239238 register_quota_format +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x27403e50 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x27689a83 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x2782afd1 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281fe6f7 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x282f1ef0 mdiobus_free +EXPORT_SYMBOL vmlinux 0x28331b47 nf_afinfo +EXPORT_SYMBOL vmlinux 0x2838179d genphy_read_status +EXPORT_SYMBOL vmlinux 0x2849feff sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x285bdc87 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x289333c5 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28e6ce45 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x28f8af47 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x292ac00a i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x292b91d9 backlight_force_update +EXPORT_SYMBOL vmlinux 0x29430245 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x29443b51 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296f737a bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x297d18ae I_BDEV +EXPORT_SYMBOL vmlinux 0x2995e08a del_gendisk +EXPORT_SYMBOL vmlinux 0x29baf24b d_find_alias +EXPORT_SYMBOL vmlinux 0x29bc8111 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x29d395b4 path_is_under +EXPORT_SYMBOL vmlinux 0x29d692df mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x29f413d9 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a05b597 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x2a07375b phy_init_hw +EXPORT_SYMBOL vmlinux 0x2a188d10 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a58dc6c deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x2a720af8 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a7f4b20 skb_checksum +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab75017 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae0cda5 release_pages +EXPORT_SYMBOL vmlinux 0x2af6d69d vfs_setpos +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b23b99f set_wb_congested +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b59ca60 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x2b5bfab1 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x2b79c2b8 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x2b9a5a07 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bba346a lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x2bcb3c5a nf_log_trace +EXPORT_SYMBOL vmlinux 0x2bddd52e unlock_buffer +EXPORT_SYMBOL vmlinux 0x2c07c112 skb_dequeue +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c43356e __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x2c4d2bbf pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c81f505 inet_accept +EXPORT_SYMBOL vmlinux 0x2c953180 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x2c9726dc sync_filesystem +EXPORT_SYMBOL vmlinux 0x2cb2018d gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x2cb6a610 dev_set_group +EXPORT_SYMBOL vmlinux 0x2cbe7738 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x2cc64f5d sock_init_data +EXPORT_SYMBOL vmlinux 0x2cd357c4 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x2cd3d03f blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x2d05cb5b ata_port_printk +EXPORT_SYMBOL vmlinux 0x2d1300d5 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d17e132 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x2d1b093b key_put +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d384dd6 macio_register_driver +EXPORT_SYMBOL vmlinux 0x2d42f3ff ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x2d4a29b3 netdev_update_features +EXPORT_SYMBOL vmlinux 0x2d5ae55a inet_sendpage +EXPORT_SYMBOL vmlinux 0x2d817663 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x2d85d4fb inet_release +EXPORT_SYMBOL vmlinux 0x2d8e9cbd of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x2da2f81d arp_tbl +EXPORT_SYMBOL vmlinux 0x2da8602d dma_set_mask +EXPORT_SYMBOL vmlinux 0x2dbb1608 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x2dc326d0 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x2dcc4cc0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x2dde6434 md_integrity_register +EXPORT_SYMBOL vmlinux 0x2de229f5 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x2df96ea9 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x2e022848 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x2e13eef3 input_close_device +EXPORT_SYMBOL vmlinux 0x2e1abcd6 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x2e2bd013 d_invalidate +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2dc3aa __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x2e312df9 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x2e4133c6 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x2e52a2aa block_invalidatepage +EXPORT_SYMBOL vmlinux 0x2e536121 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x2e58f702 vm_mmap +EXPORT_SYMBOL vmlinux 0x2e5c9bbc user_path_create +EXPORT_SYMBOL vmlinux 0x2e93d7d7 iterate_mounts +EXPORT_SYMBOL vmlinux 0x2eabfe33 da903x_query_status +EXPORT_SYMBOL vmlinux 0x2eb1c507 inet_getname +EXPORT_SYMBOL vmlinux 0x2eb2ba41 vfs_create +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed24845 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2edc53c0 search_binary_handler +EXPORT_SYMBOL vmlinux 0x2ef516c4 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0ec859 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x2f21d493 blk_make_request +EXPORT_SYMBOL vmlinux 0x2f2589bd pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f469f8c bdev_read_only +EXPORT_SYMBOL vmlinux 0x2f52b40a pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x2f5f6b6f input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x2f723f0f redraw_screen +EXPORT_SYMBOL vmlinux 0x2f905901 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x2f9736a6 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbe29d1 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x2fc1be41 generic_fillattr +EXPORT_SYMBOL vmlinux 0x2fd3562e swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ffedfe4 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x30019d8e netdev_state_change +EXPORT_SYMBOL vmlinux 0x30116876 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x30171dc8 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3024af91 tcp_check_req +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3030eccf pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x30326295 ppp_input_error +EXPORT_SYMBOL vmlinux 0x303f36d4 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x305f68e4 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x306e78e5 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309c0a92 blk_finish_request +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a99a40 param_get_invbool +EXPORT_SYMBOL vmlinux 0x30ad9a84 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c303fa sync_inode +EXPORT_SYMBOL vmlinux 0x30c84fa4 seq_path +EXPORT_SYMBOL vmlinux 0x30e09472 mmc_add_host +EXPORT_SYMBOL vmlinux 0x30e8b36a pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x30f18b8b register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x31024008 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3137f108 kill_fasync +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x31440ff7 dev_add_pack +EXPORT_SYMBOL vmlinux 0x3144378c tty_throttle +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3145f532 ata_link_printk +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3156c80c flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x315a207b scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x316e1984 __seq_open_private +EXPORT_SYMBOL vmlinux 0x3170959e netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319714bc input_unregister_handler +EXPORT_SYMBOL vmlinux 0x31b55e41 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x31b6159a skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x31bfe6a0 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x31dd4586 bdput +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31fa6fea update_devfreq +EXPORT_SYMBOL vmlinux 0x32046904 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x320cd8e0 key_validate +EXPORT_SYMBOL vmlinux 0x3215a14d scsi_print_command +EXPORT_SYMBOL vmlinux 0x321a16be generic_listxattr +EXPORT_SYMBOL vmlinux 0x321ea5d5 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x323121f0 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x323c24b0 bio_init +EXPORT_SYMBOL vmlinux 0x32499439 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x32579440 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x3262ee66 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x3274734f xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32a4cfb9 vfs_link +EXPORT_SYMBOL vmlinux 0x32ba63db simple_write_begin +EXPORT_SYMBOL vmlinux 0x32c09374 sk_alloc +EXPORT_SYMBOL vmlinux 0x32eb596a cdev_alloc +EXPORT_SYMBOL vmlinux 0x334c8bff scsi_ioctl +EXPORT_SYMBOL vmlinux 0x334e236f mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x33563b2a of_get_address +EXPORT_SYMBOL vmlinux 0x335f4d68 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x33721d50 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x3389b84b inode_init_owner +EXPORT_SYMBOL vmlinux 0x33a17669 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x33a53997 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x33b38f96 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c08498 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d5973f tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33de3a14 km_query +EXPORT_SYMBOL vmlinux 0x33de56ad __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34188df6 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x341aebd2 module_refcount +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3444d850 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x3446c779 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x3447c69b tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x34688835 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3471fbe8 dev_get_stats +EXPORT_SYMBOL vmlinux 0x347bfa28 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x348130d3 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34c2e03b __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x34c5be82 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x34ef0d3e skb_trim +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fe8134 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x3516f78e reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353b6bbd iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353eb2db dev_emerg +EXPORT_SYMBOL vmlinux 0x354b3527 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x35522ca2 noop_llseek +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356e6b5a do_splice_from +EXPORT_SYMBOL vmlinux 0x358d7e5a bio_copy_kern +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ac3052 of_device_register +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35f6aedb adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x36093180 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x36158d57 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x362159c7 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x36258bb9 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x36292316 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x36427655 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x365722c0 tty_devnum +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x36746a96 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x368ec603 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x36b03733 replace_mount_options +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b7153c phy_suspend +EXPORT_SYMBOL vmlinux 0x36b7cf61 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36edf41d sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x36f7aadb blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x36faeb56 misc_register +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37139ea9 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x371481bf generic_ro_fops +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3728a1ee mpage_writepage +EXPORT_SYMBOL vmlinux 0x372c9872 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37456365 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x3745cc77 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x3758fe15 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x37948814 flush_old_exec +EXPORT_SYMBOL vmlinux 0x379b3dd3 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37cd9c51 xfrm_input +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e2a3a9 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37ea6a65 page_address +EXPORT_SYMBOL vmlinux 0x37ee921f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x3806ffe8 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x3817675e tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382e2aa1 scsi_add_device +EXPORT_SYMBOL vmlinux 0x38338253 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x383439e5 seq_lseek +EXPORT_SYMBOL vmlinux 0x3854e4d8 try_to_release_page +EXPORT_SYMBOL vmlinux 0x3868f2db bdi_register_dev +EXPORT_SYMBOL vmlinux 0x387b4627 __register_binfmt +EXPORT_SYMBOL vmlinux 0x3884ec84 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3887ede0 register_gifconf +EXPORT_SYMBOL vmlinux 0x3889b194 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af916d inet_put_port +EXPORT_SYMBOL vmlinux 0x38b17923 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38f0de64 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38ffb856 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x391b3464 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x39293d1a cdrom_release +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d37d4 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39467730 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x39578ed9 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x395f4a99 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x396e6f94 kill_anon_super +EXPORT_SYMBOL vmlinux 0x397b1c90 phy_device_create +EXPORT_SYMBOL vmlinux 0x398202d6 mmc_put_card +EXPORT_SYMBOL vmlinux 0x398a74e2 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x398b5088 tc_classify +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399df607 simple_statfs +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c3ee98 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x39c8eaa2 vfs_mknod +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39fb390c skb_put +EXPORT_SYMBOL vmlinux 0x3a0bdf88 load_nls +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a35b285 simple_setattr +EXPORT_SYMBOL vmlinux 0x3a5daf61 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x3a8a5ed9 blk_complete_request +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9d7746 generic_removexattr +EXPORT_SYMBOL vmlinux 0x3aab73a1 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x3abbc55e kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x3b0784ac filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3b148629 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x3b26458c block_truncate_page +EXPORT_SYMBOL vmlinux 0x3b2fba0e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x3b4e9c3e blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x3b515a8c mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b96d21b __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x3b97af49 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x3ba876a2 generic_show_options +EXPORT_SYMBOL vmlinux 0x3bb71504 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x3bd12858 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x3bdc20b7 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x3c2c20a6 no_llseek +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c6d7e59 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3caf1349 generic_file_open +EXPORT_SYMBOL vmlinux 0x3cb4ba7f passthru_features_check +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceaa4b1 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x3cf78c50 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x3cfed9e4 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x3d0e74ac __dax_fault +EXPORT_SYMBOL vmlinux 0x3d2f79e7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x3d3dd137 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x3d75ea65 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x3d8746ac of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x3d8ae520 kmap_high +EXPORT_SYMBOL vmlinux 0x3d915594 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x3dbaa769 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x3dbb91db param_set_int +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dc4f1d7 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x3dc65c00 __scm_send +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ded228e ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x3df5635b kern_unmount +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e05826c of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x3e082ab1 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3e0e5aed free_user_ns +EXPORT_SYMBOL vmlinux 0x3e369984 security_mmap_file +EXPORT_SYMBOL vmlinux 0x3e41c5a6 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x3e4d120c get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x3e5ecd49 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x3e6585d8 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x3e76150d mdiobus_read +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea58a5b textsearch_destroy +EXPORT_SYMBOL vmlinux 0x3ed094cc nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x3ed90ed8 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f220d88 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x3f234c34 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x3f37eabc macio_dev_put +EXPORT_SYMBOL vmlinux 0x3f396925 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f43aab3 generic_permission +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f8d8334 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x3f936b15 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x3f9bc43c km_report +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb5370d dev_addr_flush +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3ff051aa __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x3ff5b159 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4007c544 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x400809a6 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x401360ab pci_iomap_range +EXPORT_SYMBOL vmlinux 0x401d25f9 d_instantiate +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402d26ef dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x403a7431 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x40403ae6 simple_fill_super +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4060375a thaw_super +EXPORT_SYMBOL vmlinux 0x407a3c3c tty_port_init +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409b2ab5 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40bdd7b5 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c3f909 __nla_put +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40e89c7a inet6_del_offload +EXPORT_SYMBOL vmlinux 0x40f0aa8d phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40fc61c1 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x4103030b of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x41046ab7 fget +EXPORT_SYMBOL vmlinux 0x4129f370 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x412b3986 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x413bf21f generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41648646 dst_init +EXPORT_SYMBOL vmlinux 0x41851353 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41ba1e5b __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x41e28240 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x41f97061 dquot_release +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4229774b __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x42378049 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424da354 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x42530d1d sock_edemux +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4273b766 key_invalidate +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b5a95f generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x42bc9d34 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x42bdb483 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x42fac3c9 inet6_protos +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43453209 vfs_readv +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43557b12 flow_cache_init +EXPORT_SYMBOL vmlinux 0x435863c3 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x43688144 kernel_accept +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4374b60a __sb_start_write +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a70a67 nvm_put_blk +EXPORT_SYMBOL vmlinux 0x43a850c3 iput +EXPORT_SYMBOL vmlinux 0x43af0fee udp_set_csum +EXPORT_SYMBOL vmlinux 0x43afa88e pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x43e64204 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f4eecc scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x43f59e0a param_set_copystring +EXPORT_SYMBOL vmlinux 0x43f87695 get_cached_acl +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4425c7ab pci_restore_state +EXPORT_SYMBOL vmlinux 0x4427859d tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x442934e1 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44632977 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x4471da68 generic_writepages +EXPORT_SYMBOL vmlinux 0x44aa60c4 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c66caf phy_resume +EXPORT_SYMBOL vmlinux 0x44dca684 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x45137a67 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x451d0302 tso_count_descs +EXPORT_SYMBOL vmlinux 0x451e1e8c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x4524efe1 mount_bdev +EXPORT_SYMBOL vmlinux 0x4533d49d genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x45392964 seq_file_path +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a0a1c7 filemap_fault +EXPORT_SYMBOL vmlinux 0x45c9d824 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x45ced0c7 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x45d1f6c6 tty_register_device +EXPORT_SYMBOL vmlinux 0x45e3a602 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x45ff07e3 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462ad3a8 param_get_uint +EXPORT_SYMBOL vmlinux 0x463c9608 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x4647e458 iterate_fd +EXPORT_SYMBOL vmlinux 0x4650b008 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x4652f33b blk_get_queue +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465ac9f7 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x465dc1e8 __pagevec_release +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x4665b612 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468d4139 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x468f9418 finish_no_open +EXPORT_SYMBOL vmlinux 0x46987005 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x469945d4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x469f7443 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x46a1b5f3 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x46a631ff sg_miter_next +EXPORT_SYMBOL vmlinux 0x46ae818c elevator_alloc +EXPORT_SYMBOL vmlinux 0x46cdb5df ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46f1d164 flush_signals +EXPORT_SYMBOL vmlinux 0x46f5f20a dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47022f17 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x47032a3c of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x47174fd9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x472de829 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474bc6bd secpath_dup +EXPORT_SYMBOL vmlinux 0x475f8791 nonseekable_open +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x4765ad04 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x476d4601 tcp_child_process +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a2fa90 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x47ada16d of_n_size_cells +EXPORT_SYMBOL vmlinux 0x47d06673 pci_request_regions +EXPORT_SYMBOL vmlinux 0x47dc4444 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x47e4545b scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x47f0863a inet_select_addr +EXPORT_SYMBOL vmlinux 0x480c68e9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x482ed454 devm_release_resource +EXPORT_SYMBOL vmlinux 0x4832df3a unregister_md_personality +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x484a370f install_exec_creds +EXPORT_SYMBOL vmlinux 0x4850d706 get_fs_type +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4875d536 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x488554a9 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x488962ce should_remove_suid +EXPORT_SYMBOL vmlinux 0x4895b02b nobh_writepage +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48dc931a pcie_set_mps +EXPORT_SYMBOL vmlinux 0x48e78667 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x48fa9cfa wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x48fb09de udp6_set_csum +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4905133d sg_miter_start +EXPORT_SYMBOL vmlinux 0x49062ee6 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x4909281d scmd_printk +EXPORT_SYMBOL vmlinux 0x49346b0d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x49349414 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x493ad781 d_alloc +EXPORT_SYMBOL vmlinux 0x4946f05d udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x49477ca0 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49727382 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x4992cd9f tty_set_operations +EXPORT_SYMBOL vmlinux 0x499fea98 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x49aa5e76 udp_poll +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49d148da generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a0876db security_d_instantiate +EXPORT_SYMBOL vmlinux 0x4a144e53 bioset_free +EXPORT_SYMBOL vmlinux 0x4a3fc58d __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x4a49ac1d nvm_get_blk +EXPORT_SYMBOL vmlinux 0x4a5b2eac xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x4a6f1d50 get_gendisk +EXPORT_SYMBOL vmlinux 0x4a72debf __devm_release_region +EXPORT_SYMBOL vmlinux 0x4aa22c72 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4aa8b77d init_task +EXPORT_SYMBOL vmlinux 0x4ab20989 poll_freewait +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac144cc jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x4aeecd32 genphy_resume +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0b6d1e md_register_thread +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b415d12 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x4b4be883 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x4b4f049e buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b68c040 submit_bh +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b8711fb kernel_bind +EXPORT_SYMBOL vmlinux 0x4b8dc98c file_path +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbf51a9 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4be7b55d bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c00d535 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1a326e __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3e32ba abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x4c6c2aed d_delete +EXPORT_SYMBOL vmlinux 0x4c740252 fb_class +EXPORT_SYMBOL vmlinux 0x4c9aca64 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x4cb36e33 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x4cb61393 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdb7437 mount_pseudo +EXPORT_SYMBOL vmlinux 0x4ce145d0 tty_hangup +EXPORT_SYMBOL vmlinux 0x4ce23e7c __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x4cf49e7f mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x4d230afb sock_no_getname +EXPORT_SYMBOL vmlinux 0x4d2c583e netlink_broadcast +EXPORT_SYMBOL vmlinux 0x4d3294f6 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x4d3b7eaa mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d504eb6 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db0c31e max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfb179f tty_unregister_device +EXPORT_SYMBOL vmlinux 0x4e06e7e6 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x4e1950c2 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e46a972 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x4e4da2c6 phy_attach +EXPORT_SYMBOL vmlinux 0x4e5339c3 md_flush_request +EXPORT_SYMBOL vmlinux 0x4e53556c filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x4e64079e sget +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7055d4 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ec17743 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x4ec44298 serio_close +EXPORT_SYMBOL vmlinux 0x4edf4cf3 pci_bus_type +EXPORT_SYMBOL vmlinux 0x4ee4abec flush_tlb_range +EXPORT_SYMBOL vmlinux 0x4f07e4b5 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x4f1c9db7 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f28d7a6 get_disk +EXPORT_SYMBOL vmlinux 0x4f29f494 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x4f2de47d path_put +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4666d0 genlmsg_put +EXPORT_SYMBOL vmlinux 0x4f4e0f41 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x4f51c355 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x4f5dfe3d follow_up +EXPORT_SYMBOL vmlinux 0x4f6041ef dns_query +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f76f497 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x4f8e564f dquot_transfer +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe61f6b pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ffd5bb3 __destroy_inode +EXPORT_SYMBOL vmlinux 0x4fffccd3 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5000caad xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500da858 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x5010fe3e capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x50163c70 dquot_resume +EXPORT_SYMBOL vmlinux 0x5024ea50 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x502c94e1 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b3359a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x50b43c67 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c19e98 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x50ca0dab netdev_features_change +EXPORT_SYMBOL vmlinux 0x50d5227e scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50ea5fa0 sk_filter +EXPORT_SYMBOL vmlinux 0x50eb7398 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x50fb785e skb_clone_sk +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x513d991b dev_mc_sync +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5160d270 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51b5dcdc start_tty +EXPORT_SYMBOL vmlinux 0x51cf158a blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x51e0a8ee simple_empty +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51ffa42c freeze_super +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5206a474 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x520a6828 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x523d28d1 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x52431469 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x52436874 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x5258b3d8 con_is_bound +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x527b22ee kill_pgrp +EXPORT_SYMBOL vmlinux 0x527f469e xattr_full_name +EXPORT_SYMBOL vmlinux 0x5286baae dquot_commit +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x529922ee tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x52a040ee i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x52a21b86 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52bf5f94 follow_down +EXPORT_SYMBOL vmlinux 0x52c28977 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x52d19ddd ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x52e55a95 __get_page_tail +EXPORT_SYMBOL vmlinux 0x52e5bb36 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x52f02c1b seq_escape +EXPORT_SYMBOL vmlinux 0x52f1cbe2 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x5301e18d nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x53023ee4 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5324a678 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x5329a65e neigh_app_ns +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5340fd3e dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x5341f6f8 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x534d639f blk_put_queue +EXPORT_SYMBOL vmlinux 0x534f356a wireless_spy_update +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53969b1c blk_rq_init +EXPORT_SYMBOL vmlinux 0x539c12d7 simple_write_end +EXPORT_SYMBOL vmlinux 0x53a3eac4 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x53cb532b ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x53df415c dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x53e37e46 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x53e9c077 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540f7235 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x542084ab blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x54234551 simple_release_fs +EXPORT_SYMBOL vmlinux 0x5436980a tty_mutex +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545b48b7 giveup_altivec +EXPORT_SYMBOL vmlinux 0x5462792d blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x548694e6 mntput +EXPORT_SYMBOL vmlinux 0x54a26eff netdev_err +EXPORT_SYMBOL vmlinux 0x54a2a1c9 dev_crit +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c7daae i2c_verify_client +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ef980e max8925_reg_write +EXPORT_SYMBOL vmlinux 0x54fd1c0d __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x550623d1 unload_nls +EXPORT_SYMBOL vmlinux 0x55118255 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x55635d4c blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5564e1c3 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x556541b5 dst_destroy +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556d57be xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x556ed674 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x5577ed38 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x559c4c50 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x55a99b22 sk_free +EXPORT_SYMBOL vmlinux 0x55b9fdcb tty_free_termios +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55da5cbb security_path_mkdir +EXPORT_SYMBOL vmlinux 0x560072c2 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x56033e9c bdget +EXPORT_SYMBOL vmlinux 0x56289f36 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x564c3d90 console_start +EXPORT_SYMBOL vmlinux 0x565dd788 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x566fd2e8 input_release_device +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cf1924 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x56e75ccf jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x56edc07c max8925_set_bits +EXPORT_SYMBOL vmlinux 0x56f33a7f netlink_ack +EXPORT_SYMBOL vmlinux 0x56f3d7f5 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x570db0e4 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x57126be4 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5727e202 pci_set_master +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5746c9f1 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x574c14c1 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574c7b36 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576ae94a vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x577984b0 kobject_add +EXPORT_SYMBOL vmlinux 0x57828ad6 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x578ecb2d ata_print_version +EXPORT_SYMBOL vmlinux 0x57c4d8d9 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x57c51a6b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x57d13a7a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x57e61707 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x57e86f46 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x57fb36ef of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x580b6b41 inc_nlink +EXPORT_SYMBOL vmlinux 0x5819f75a sock_update_memcg +EXPORT_SYMBOL vmlinux 0x581cc2dc dst_alloc +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5828d0e7 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x5874e2c3 dentry_open +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58772592 cdrom_open +EXPORT_SYMBOL vmlinux 0x5882485c inode_init_once +EXPORT_SYMBOL vmlinux 0x588796ea tty_unthrottle +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bfa973 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x58c90ac8 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x58c917ec locks_copy_lock +EXPORT_SYMBOL vmlinux 0x58d52989 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x592496a8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x59257ba2 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x592dda39 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5962fdc6 brioctl_set +EXPORT_SYMBOL vmlinux 0x596d3278 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x59728c7f of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x597cc83d blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x598bb39b phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59b830a8 may_umount_tree +EXPORT_SYMBOL vmlinux 0x59d1ee5a skb_unlink +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59f798c4 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1c6cb0 security_path_unlink +EXPORT_SYMBOL vmlinux 0x5a41e122 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x5a5b8228 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x5a71a52f nf_hook_slow +EXPORT_SYMBOL vmlinux 0x5aa41c17 dquot_destroy +EXPORT_SYMBOL vmlinux 0x5aa7c4a4 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x5ac7f51e udp_sendmsg +EXPORT_SYMBOL vmlinux 0x5aeda43a bio_map_kern +EXPORT_SYMBOL vmlinux 0x5af6495c phy_device_remove +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b01cc9c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b556381 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x5b6f2830 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x5b8d3bec pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b98a92f mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x5b98ac29 param_get_ullong +EXPORT_SYMBOL vmlinux 0x5ba04618 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5be309c6 block_write_full_page +EXPORT_SYMBOL vmlinux 0x5bf4ea92 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x5bf77a29 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x5c187197 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c289859 key_revoke +EXPORT_SYMBOL vmlinux 0x5c37635e bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c383cfc pci_set_mwi +EXPORT_SYMBOL vmlinux 0x5c51a19f md_reload_sb +EXPORT_SYMBOL vmlinux 0x5c5927df jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x5c62e0c3 input_grab_device +EXPORT_SYMBOL vmlinux 0x5caae475 find_lock_entry +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccc5df8 bdgrab +EXPORT_SYMBOL vmlinux 0x5cdc60ad nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x5cdcf53a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfad708 padata_stop +EXPORT_SYMBOL vmlinux 0x5d01994e thaw_bdev +EXPORT_SYMBOL vmlinux 0x5d0440d4 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5d16f293 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x5d2dd758 pci_get_slot +EXPORT_SYMBOL vmlinux 0x5d4dd368 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x5d52301c tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d656347 d_make_root +EXPORT_SYMBOL vmlinux 0x5d845bc0 blk_end_request +EXPORT_SYMBOL vmlinux 0x5d977246 end_page_writeback +EXPORT_SYMBOL vmlinux 0x5dcef9c3 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x5dd0101c sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x5ddb4fba xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x5e044727 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3077ca unregister_key_type +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e40b4a8 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x5e45afc6 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x5e5c2bc9 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x5e5ee96a linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8769fc ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x5e890560 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea42aeb fb_get_mode +EXPORT_SYMBOL vmlinux 0x5ea8316b dquot_enable +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed98618 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x5eea4f1c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f45e899 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x5f5c5c35 dst_release +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f97ab6e release_firmware +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd5dc02 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ffcf7ac of_dev_put +EXPORT_SYMBOL vmlinux 0x5ffe6580 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600a1dde block_commit_write +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602e44b4 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60407cb8 scsi_host_put +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x6081f6c7 ping_prot +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60c0a0da clocksource_unregister +EXPORT_SYMBOL vmlinux 0x60d652b4 __netif_schedule +EXPORT_SYMBOL vmlinux 0x60dd7844 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e6ef39 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x60ee36c0 dcb_getapp +EXPORT_SYMBOL vmlinux 0x60fb43cb kernel_connect +EXPORT_SYMBOL vmlinux 0x6100e9eb set_binfmt +EXPORT_SYMBOL vmlinux 0x6104fb3f swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x6108df58 do_splice_to +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x61739d75 update_region +EXPORT_SYMBOL vmlinux 0x61864597 dentry_unhash +EXPORT_SYMBOL vmlinux 0x6190a188 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x61ac49c1 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x61b1538c agp_create_memory +EXPORT_SYMBOL vmlinux 0x61b2b7d7 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d4f1be pci_dev_driver +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62200f32 of_get_next_child +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622cc6d9 macio_request_resource +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626be65d icmp_send +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628332e8 pmu_power_flags +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628594c5 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x628a4ae4 file_ns_capable +EXPORT_SYMBOL vmlinux 0x62ada72e starget_for_each_device +EXPORT_SYMBOL vmlinux 0x62af7d3a iov_iter_init +EXPORT_SYMBOL vmlinux 0x62beedad simple_dname +EXPORT_SYMBOL vmlinux 0x62e3a19f jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x62ff7b97 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x63081e54 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6350f14f touch_buffer +EXPORT_SYMBOL vmlinux 0x635dd054 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x63718fbe pcim_iounmap +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6382a1ad xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63ce16b3 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x63d1a0a9 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x63db8e04 do_SAK +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64124b87 genl_notify +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642a443c sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x6471c8a8 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x64731028 eth_header_parse +EXPORT_SYMBOL vmlinux 0x647d4d55 seq_open_private +EXPORT_SYMBOL vmlinux 0x6488d5e6 param_ops_byte +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649d38f4 __ps2_command +EXPORT_SYMBOL vmlinux 0x64a4e19a set_blocksize +EXPORT_SYMBOL vmlinux 0x64c373d9 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x64c665f1 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x64cdc6e0 from_kuid +EXPORT_SYMBOL vmlinux 0x650f291b generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65294f6b __kfree_skb +EXPORT_SYMBOL vmlinux 0x6530c3fe free_buffer_head +EXPORT_SYMBOL vmlinux 0x65386d68 devm_memunmap +EXPORT_SYMBOL vmlinux 0x653b6550 simple_lookup +EXPORT_SYMBOL vmlinux 0x653d13f5 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6542c5fc of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x654b8b5c netif_carrier_off +EXPORT_SYMBOL vmlinux 0x654e5c58 proc_mkdir +EXPORT_SYMBOL vmlinux 0x6572eacb vfs_writef +EXPORT_SYMBOL vmlinux 0x65768c96 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x657fd177 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x65993ccf inode_change_ok +EXPORT_SYMBOL vmlinux 0x659f5db5 blkdev_put +EXPORT_SYMBOL vmlinux 0x65a85f5f tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x65b44638 dev_driver_string +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f1cbc2 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x66560357 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x66680a2e mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x666ad94c sock_setsockopt +EXPORT_SYMBOL vmlinux 0x666d38e1 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x666e6ca5 param_set_ulong +EXPORT_SYMBOL vmlinux 0x666f5ee7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x66842281 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x668a8429 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x668d9590 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x6692e58f agp_generic_enable +EXPORT_SYMBOL vmlinux 0x66b61ec5 md_write_end +EXPORT_SYMBOL vmlinux 0x66bff005 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66e3429c put_filp +EXPORT_SYMBOL vmlinux 0x671b1ded km_policy_expired +EXPORT_SYMBOL vmlinux 0x672882b2 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x673d1448 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6748a1fb tcp_connect +EXPORT_SYMBOL vmlinux 0x674ff5d7 flush_hash_entry +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677e47a7 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x6793cbe1 of_root +EXPORT_SYMBOL vmlinux 0x679b7439 md_update_sb +EXPORT_SYMBOL vmlinux 0x67b26a2d devm_gpio_request +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c50952 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x67c9fddd give_up_console +EXPORT_SYMBOL vmlinux 0x6801f815 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6817d817 vfs_statfs +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68619c71 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6883ecd0 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x689cd75e machine_id +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68ef62f1 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x68fec6bd mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x68ffda0c elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x690e7963 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x69374ba4 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697e540d bio_integrity_free +EXPORT_SYMBOL vmlinux 0x699d6261 serio_rescan +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a9aff4 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bdf4e1 mach_chrp +EXPORT_SYMBOL vmlinux 0x69bff334 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e37c06 generic_setxattr +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a03ebd1 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x6a1eab9b udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x6a33efee fsync_bdev +EXPORT_SYMBOL vmlinux 0x6a547fb2 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8b04ca lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6a8d5434 notify_change +EXPORT_SYMBOL vmlinux 0x6aa90d37 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acbbaf0 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x6ad28f88 phy_connect +EXPORT_SYMBOL vmlinux 0x6ad773fd i2c_register_driver +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af00643 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x6af17186 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x6af489d2 register_cdrom +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b390ea1 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x6b4e73a7 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x6b5f0650 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6e54e9 elevator_exit +EXPORT_SYMBOL vmlinux 0x6b7a4bd7 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6b860cd9 generic_setlease +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bea3e57 param_get_int +EXPORT_SYMBOL vmlinux 0x6bf8cfae dm_put_device +EXPORT_SYMBOL vmlinux 0x6c06ff61 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1588d1 setup_new_exec +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c1e6688 simple_getattr +EXPORT_SYMBOL vmlinux 0x6c24c2f1 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x6c27c493 of_device_alloc +EXPORT_SYMBOL vmlinux 0x6c31fb30 skb_append +EXPORT_SYMBOL vmlinux 0x6c33b798 param_ops_string +EXPORT_SYMBOL vmlinux 0x6c41b2f4 vfs_read +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca62c4e scsi_scan_host +EXPORT_SYMBOL vmlinux 0x6cb2fe5d cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cbb401b vga_tryget +EXPORT_SYMBOL vmlinux 0x6cc03f20 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce38ae6 seq_write +EXPORT_SYMBOL vmlinux 0x6ce68708 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x6cfd3f02 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x6cfe9ff3 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1ba671 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d3d6012 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x6d428181 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6da7eacc remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dad2830 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x6db0534e iov_iter_zero +EXPORT_SYMBOL vmlinux 0x6dc21fb7 sock_no_bind +EXPORT_SYMBOL vmlinux 0x6dd5778f agp_bridge +EXPORT_SYMBOL vmlinux 0x6dd9ca12 init_net +EXPORT_SYMBOL vmlinux 0x6deda23b fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e19b3b9 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e4a705c dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x6e545b25 ns_capable +EXPORT_SYMBOL vmlinux 0x6e6363dc __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e69d69c pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ee7a68c locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6ee830fa devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x6eef3e25 _dev_info +EXPORT_SYMBOL vmlinux 0x6ef2129f vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x6efc18d7 cdev_del +EXPORT_SYMBOL vmlinux 0x6f16e920 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f29713d __mutex_init +EXPORT_SYMBOL vmlinux 0x6f395d70 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x6f3c0459 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x6f4597f7 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x6f6a912d blk_init_tags +EXPORT_SYMBOL vmlinux 0x6f7ab627 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x6f7b3138 iunique +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9a40ae __scm_destroy +EXPORT_SYMBOL vmlinux 0x6fa4c42f __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x6fa5c177 padata_alloc +EXPORT_SYMBOL vmlinux 0x6fb1a719 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x6fb66bcb jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fbff6a5 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x70073898 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x70102e8d set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x70113eab fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x7043cb0c bh_submit_read +EXPORT_SYMBOL vmlinux 0x705166f3 vm_map_ram +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x707fe390 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x7090d5b1 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71098fba pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x710af59e atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7146f2f0 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x714c71e0 __dst_free +EXPORT_SYMBOL vmlinux 0x7150ce47 macio_request_resources +EXPORT_SYMBOL vmlinux 0x71634389 put_page +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718158b3 vga_con +EXPORT_SYMBOL vmlinux 0x718c1379 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x718e856e phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x7191d811 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x7193fcef skb_tx_error +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71dca9bb copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x71f02eff mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7207987a scsi_execute +EXPORT_SYMBOL vmlinux 0x72150376 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x7226d289 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x72313647 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x7244e19f from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x724b609a blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x725bdf72 page_readlink +EXPORT_SYMBOL vmlinux 0x725d23ef sockfd_lookup +EXPORT_SYMBOL vmlinux 0x7268036a __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x72893e6c dcache_readdir +EXPORT_SYMBOL vmlinux 0x728c9978 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x729089e4 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72a3b640 clear_inode +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c2ab81 agp_free_memory +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d902fb blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x730e29e9 bio_endio +EXPORT_SYMBOL vmlinux 0x73111b1f check_disk_size_change +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x732fa65f nf_reinject +EXPORT_SYMBOL vmlinux 0x73346821 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x7362ba24 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x736a7001 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x736ca2e1 set_device_ro +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7382f0d6 seq_dentry +EXPORT_SYMBOL vmlinux 0x738bc242 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x73979de6 atomic64_or +EXPORT_SYMBOL vmlinux 0x7399e6dd irq_set_chip +EXPORT_SYMBOL vmlinux 0x73af5c9f input_set_keycode +EXPORT_SYMBOL vmlinux 0x73c23479 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x73c8f1ac of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x73e0e6d2 pci_release_region +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74370710 icmpv6_send +EXPORT_SYMBOL vmlinux 0x7466bddb get_phy_device +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x747b4db4 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a3df48 __find_get_block +EXPORT_SYMBOL vmlinux 0x74ad9656 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x74b7b9dd dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x74bce55d xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e1e44a set_groups +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75160a1d make_kgid +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75440a0e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x755a587c blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7574f0c5 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x75925b92 __bread_gfp +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75a1b37f __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x75aa2fde vga_client_register +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75cd92ea param_ops_short +EXPORT_SYMBOL vmlinux 0x75d8a315 drop_super +EXPORT_SYMBOL vmlinux 0x75e15495 pci_pme_active +EXPORT_SYMBOL vmlinux 0x75f13670 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x76064265 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x763cf493 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7649d0af nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x7653157a netif_device_attach +EXPORT_SYMBOL vmlinux 0x76563e89 set_disk_ro +EXPORT_SYMBOL vmlinux 0x765aaad2 nla_append +EXPORT_SYMBOL vmlinux 0x766e7e1f page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x766e9562 neigh_table_init +EXPORT_SYMBOL vmlinux 0x767e0e54 napi_complete_done +EXPORT_SYMBOL vmlinux 0x76855459 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x768ebbcc netdev_alert +EXPORT_SYMBOL vmlinux 0x76ad194c bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x76c467d1 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x76c688b9 file_remove_privs +EXPORT_SYMBOL vmlinux 0x76c6fb15 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76df1f5f __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x76efc274 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76f987cf param_ops_bint +EXPORT_SYMBOL vmlinux 0x76fe080a jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x770255ba clear_user_page +EXPORT_SYMBOL vmlinux 0x77066e94 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x77122524 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x771f9aab alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x772050e4 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x77393bb1 set_security_override +EXPORT_SYMBOL vmlinux 0x773fcb08 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x77435829 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x77437c3c __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x7760daa0 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c23306 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x77c5237e __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x77d008d4 vc_cons +EXPORT_SYMBOL vmlinux 0x77d88199 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x77e9d2ab netlink_net_capable +EXPORT_SYMBOL vmlinux 0x7800318a mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x78068cff ___pskb_trim +EXPORT_SYMBOL vmlinux 0x7807bf6c __skb_checksum +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x78269220 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784d95d0 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x7858f20d __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x7863b569 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x78737abe mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x78743752 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x7874ac54 revalidate_disk +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78d36e80 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x7903c63b serio_interrupt +EXPORT_SYMBOL vmlinux 0x790598e2 __lock_buffer +EXPORT_SYMBOL vmlinux 0x790c344b security_path_link +EXPORT_SYMBOL vmlinux 0x791d70ab tty_vhangup +EXPORT_SYMBOL vmlinux 0x7947efa5 __inode_permission +EXPORT_SYMBOL vmlinux 0x794cf41d datagram_poll +EXPORT_SYMBOL vmlinux 0x795cab8b ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x795d65a4 __getblk_slow +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x799618d7 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b3ea9b __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x7a2add7d current_kernel_time64 +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4eb231 user_revoke +EXPORT_SYMBOL vmlinux 0x7a539095 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x7a750edd udp_del_offload +EXPORT_SYMBOL vmlinux 0x7a84657b skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x7a913c2f skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aad59e6 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aedc82d pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b069797 md_done_sync +EXPORT_SYMBOL vmlinux 0x7b0976ce simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b2b6a15 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7b33ee14 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x7b3dcbe2 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x7b51dea4 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b60557f jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x7b8cf635 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x7b959c01 md_error +EXPORT_SYMBOL vmlinux 0x7bbcdaa9 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7bd7014c netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x7be0a8ef blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7beae9cb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x7beef536 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x7bf809eb pci_find_capability +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1438e1 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c387246 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c495aa6 vme_register_driver +EXPORT_SYMBOL vmlinux 0x7c589d83 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x7c73b044 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x7c7961e2 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7c7fc6c2 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x7c87bd4c inet_csk_accept +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c931a3b skb_insert +EXPORT_SYMBOL vmlinux 0x7c95d641 component_match_add +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfb4d1e dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d55e756 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x7d62e137 cdev_add +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d86e4ec genphy_update_link +EXPORT_SYMBOL vmlinux 0x7d9b38d4 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7db651d1 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7de3eb05 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x7ded11a9 mmc_erase +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df3e1ab msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x7e065b72 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x7e2f3601 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x7e2f6cd2 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x7e43295c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x7e496494 address_space_init_once +EXPORT_SYMBOL vmlinux 0x7e4dfeac padata_start +EXPORT_SYMBOL vmlinux 0x7e5e32b8 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x7e6e82a4 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e93e726 elv_add_request +EXPORT_SYMBOL vmlinux 0x7e9fa40b __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x7eb64ac6 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x7eb897e7 d_obtain_root +EXPORT_SYMBOL vmlinux 0x7ee517a0 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f136823 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f262195 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x7f3cdf80 register_md_personality +EXPORT_SYMBOL vmlinux 0x7f5225a8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f64fcda filp_close +EXPORT_SYMBOL vmlinux 0x7fa39c1e jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x7fbcf87f d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x8009f915 pci_enable_device +EXPORT_SYMBOL vmlinux 0x80247b71 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x8044f98a sk_net_capable +EXPORT_SYMBOL vmlinux 0x805a0b92 pci_disable_device +EXPORT_SYMBOL vmlinux 0x8065f2a7 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x80829b36 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x80a92466 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cabcd3 vm_event_states +EXPORT_SYMBOL vmlinux 0x80cc0ae1 ps2_command +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e72c57 pci_select_bars +EXPORT_SYMBOL vmlinux 0x80e85126 security_path_symlink +EXPORT_SYMBOL vmlinux 0x80eca8a5 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x81028be2 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x8115063d scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8120e36c dev_get_flags +EXPORT_SYMBOL vmlinux 0x813ad55e fb_set_var +EXPORT_SYMBOL vmlinux 0x813ea307 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x81455fbb ppp_dev_name +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b07cd alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8177aa6a pcie_get_mps +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f7eead dev_uc_flush +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821447e5 netlink_set_err +EXPORT_SYMBOL vmlinux 0x8220fc64 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x82220f34 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82308b52 sock_efree +EXPORT_SYMBOL vmlinux 0x823c877b xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8283aed6 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x8284570f __frontswap_load +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82a607c4 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82cd540a atomic64_and +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82eb0189 udp_add_offload +EXPORT_SYMBOL vmlinux 0x82ec1907 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x82f8ff8e blk_sync_queue +EXPORT_SYMBOL vmlinux 0x8307c7f6 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x83170d9e netdev_notice +EXPORT_SYMBOL vmlinux 0x832fa791 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x833902d1 wake_up_process +EXPORT_SYMBOL vmlinux 0x83487fcf redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x836e0442 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x836f687e nf_log_unset +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8379fe0d neigh_table_clear +EXPORT_SYMBOL vmlinux 0x8387af64 rtas +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8396614e mmc_get_card +EXPORT_SYMBOL vmlinux 0x83a47f1a elv_rb_del +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b3bbf9 seq_pad +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83dc707c free_netdev +EXPORT_SYMBOL vmlinux 0x83de6c41 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x83e08520 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x84219fe7 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x84226cb4 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x843d9740 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x8458a306 try_module_get +EXPORT_SYMBOL vmlinux 0x846ed653 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84bef6a1 vfs_writev +EXPORT_SYMBOL vmlinux 0x84d630b3 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x84d8a802 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x84e8fb4c serio_reconnect +EXPORT_SYMBOL vmlinux 0x84f6a3cc xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850efd62 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x85116850 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x851d1b1f tcp_disconnect +EXPORT_SYMBOL vmlinux 0x851eeeac skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x852077fb scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x8523616a devm_iounmap +EXPORT_SYMBOL vmlinux 0x85367207 block_write_end +EXPORT_SYMBOL vmlinux 0x85384b75 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x85403ae6 free_page_put_link +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x8549c0b7 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856b2246 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x857ff6e2 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x85909d23 dev_uc_init +EXPORT_SYMBOL vmlinux 0x85a80ff6 km_new_mapping +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c7a331 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x85ca1456 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86182550 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x863c8566 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8674a86c devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x8686d07c vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x86891dd1 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aa18f0 dev_addr_add +EXPORT_SYMBOL vmlinux 0x86d8f143 __serio_register_port +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86dd983b __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x86ddb432 of_match_device +EXPORT_SYMBOL vmlinux 0x86e6ab52 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x86ebc53a netdev_change_features +EXPORT_SYMBOL vmlinux 0x86f81055 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87020ac2 set_bh_page +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873235be scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x874fec7b jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x875850a1 up_write +EXPORT_SYMBOL vmlinux 0x87693c7c arp_send +EXPORT_SYMBOL vmlinux 0x87779701 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87b76b8a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x87eda8d9 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x881b1233 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x884daf59 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x885c84c2 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x88717ecc dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x887d8e64 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x8885bbcc bio_phys_segments +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88b2272a dump_emit +EXPORT_SYMBOL vmlinux 0x88c67032 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x890090fb ilookup5 +EXPORT_SYMBOL vmlinux 0x890c7168 kill_pid +EXPORT_SYMBOL vmlinux 0x890d1b5b blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x894e0671 register_framebuffer +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89878897 iget5_locked +EXPORT_SYMBOL vmlinux 0x8998beb1 agp_enable +EXPORT_SYMBOL vmlinux 0x89aeb679 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89c2647f of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x89c87c28 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x89c8b2b6 napi_get_frags +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a020e56 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x8a0886e1 fb_pan_display +EXPORT_SYMBOL vmlinux 0x8a0f9786 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1f76bc qdisc_list_add +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a642cf8 kfree_put_link +EXPORT_SYMBOL vmlinux 0x8a6cfe6e devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b3eac netif_rx +EXPORT_SYMBOL vmlinux 0x8aa3624c vfs_write +EXPORT_SYMBOL vmlinux 0x8ab309b8 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ac3ab4a sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x8ad917b0 udp_disconnect +EXPORT_SYMBOL vmlinux 0x8aea260e tcf_hash_create +EXPORT_SYMBOL vmlinux 0x8aed8efd blk_delay_queue +EXPORT_SYMBOL vmlinux 0x8b017c9a put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b17ae38 __get_user_pages +EXPORT_SYMBOL vmlinux 0x8b311309 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x8b39289d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b54d5bb registered_fb +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6ec9b7 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x8b7b9344 register_shrinker +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8ba36588 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x8bbd3164 fb_show_logo +EXPORT_SYMBOL vmlinux 0x8be0a6aa pneigh_lookup +EXPORT_SYMBOL vmlinux 0x8bf9d092 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c3cb43f read_cache_page +EXPORT_SYMBOL vmlinux 0x8c4db8fa tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x8c5074d8 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c640239 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x8c926dbe blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x8cb974b9 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x8cbb8534 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd62d44 inode_set_flags +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d495a92 generic_make_request +EXPORT_SYMBOL vmlinux 0x8d4d27e0 param_ops_long +EXPORT_SYMBOL vmlinux 0x8d4f2e97 vme_bus_num +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5b06f9 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d786633 netdev_emerg +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8db7ee1c pagecache_get_page +EXPORT_SYMBOL vmlinux 0x8dc1c4bf fget_raw +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8deba0d9 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8df2ec4a generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8df90e44 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8e18f00b neigh_seq_next +EXPORT_SYMBOL vmlinux 0x8e24eb38 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x8e39333f pci_platform_rom +EXPORT_SYMBOL vmlinux 0x8e555c34 kernel_listen +EXPORT_SYMBOL vmlinux 0x8e63260f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x8e70d1fb loop_register_transfer +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e7a2549 mac_find_mode +EXPORT_SYMBOL vmlinux 0x8eb0c34d genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ee1a05d ps2_init +EXPORT_SYMBOL vmlinux 0x8ee848d3 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x8ef372f5 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x8f290c91 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x8f3b1d7c pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x8f488549 inet_ioctl +EXPORT_SYMBOL vmlinux 0x8f5b5117 param_array_ops +EXPORT_SYMBOL vmlinux 0x8f70ee39 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x8f70ef50 inet_offloads +EXPORT_SYMBOL vmlinux 0x8f72037c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x8f756d97 clear_nlink +EXPORT_SYMBOL vmlinux 0x8f7d41bc skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x8f8020e2 mutex_trylock +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f90e4d9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x8fb867d4 param_set_bool +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc7318f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x8fdc0b2f default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8fdf8d94 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x8fea04a4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x902ec099 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x9052bd98 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x907415ec simple_transaction_get +EXPORT_SYMBOL vmlinux 0x907f959b set_anon_super +EXPORT_SYMBOL vmlinux 0x907fe283 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x90a19c7b tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c82a86 write_inode_now +EXPORT_SYMBOL vmlinux 0x90d196ce zpool_register_driver +EXPORT_SYMBOL vmlinux 0x90d52434 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x90dae380 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x90e20342 input_open_device +EXPORT_SYMBOL vmlinux 0x90ee9e79 posix_lock_file +EXPORT_SYMBOL vmlinux 0x90f9aa5d scsi_device_put +EXPORT_SYMBOL vmlinux 0x91026ab7 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x91073599 netif_napi_add +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91302b0d blk_integrity_register +EXPORT_SYMBOL vmlinux 0x913360e3 tty_write_room +EXPORT_SYMBOL vmlinux 0x91421c50 tso_build_data +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914b6eda dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x915e26b3 __bforget +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9195a17a sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91c74790 scsi_init_io +EXPORT_SYMBOL vmlinux 0x91e12836 ipv4_specific +EXPORT_SYMBOL vmlinux 0x91e2348e kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x91e6f10a device_get_mac_address +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x91fb579a uart_update_timeout +EXPORT_SYMBOL vmlinux 0x920245a2 inet_frag_find +EXPORT_SYMBOL vmlinux 0x922466ad __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x922f8148 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x923addd3 audit_log_start +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923ca442 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x925de3a6 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x92669b37 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x926a7d2b read_cache_pages +EXPORT_SYMBOL vmlinux 0x927807fd of_device_is_available +EXPORT_SYMBOL vmlinux 0x92920528 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x9296881b devm_ioremap +EXPORT_SYMBOL vmlinux 0x92994f4a pci_release_regions +EXPORT_SYMBOL vmlinux 0x92a5e820 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x9312f3bb vga_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9323e990 dqput +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x934b62b7 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93816c08 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x93861c1f pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x939eb5ed scsi_dma_map +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93f34eef qdisc_reset +EXPORT_SYMBOL vmlinux 0x93f48bed param_set_uint +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x944caa1d copy_from_iter +EXPORT_SYMBOL vmlinux 0x944d91b7 sock_rfree +EXPORT_SYMBOL vmlinux 0x94789a19 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x94889414 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x948fbcad pci_dev_get +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x9497a29d tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x949baf36 dev_notice +EXPORT_SYMBOL vmlinux 0x94af3b80 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94d013ad mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x94d55d1c force_sig +EXPORT_SYMBOL vmlinux 0x94e92bba may_umount +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94fbecaa drop_nlink +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x953744b4 param_get_long +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955de73a tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x9561daa3 __alloc_skb +EXPORT_SYMBOL vmlinux 0x956f817a scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x959fbb1c of_phy_attach +EXPORT_SYMBOL vmlinux 0x95e229cb macio_release_resources +EXPORT_SYMBOL vmlinux 0x95e3747a request_key +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961c8ddf scsi_host_get +EXPORT_SYMBOL vmlinux 0x963f1f40 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96581654 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969d1175 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x96a36352 bdi_init +EXPORT_SYMBOL vmlinux 0x96ab6315 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x96ac430e nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x96b4de73 lock_fb_info +EXPORT_SYMBOL vmlinux 0x96c15dd0 write_one_page +EXPORT_SYMBOL vmlinux 0x96c68e08 keyring_alloc +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96e3d301 of_device_unregister +EXPORT_SYMBOL vmlinux 0x96eebc1c phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x9704708b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x9714ec92 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x971fdc13 override_creds +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x97299f15 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x972a053b filp_open +EXPORT_SYMBOL vmlinux 0x972cfc30 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x972ded51 proc_create_data +EXPORT_SYMBOL vmlinux 0x9746597e seq_puts +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974be541 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976080a4 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a7aee7 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x97a99fcc qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x97bcf6c3 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x97c35a64 param_set_invbool +EXPORT_SYMBOL vmlinux 0x97d83a47 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x97f4f251 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x97fd024a dev_mc_del +EXPORT_SYMBOL vmlinux 0x9802bb72 request_key_async +EXPORT_SYMBOL vmlinux 0x980dd079 kill_bdev +EXPORT_SYMBOL vmlinux 0x9814c7a5 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x9841e72c twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98878995 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x988e741f seq_putc +EXPORT_SYMBOL vmlinux 0x98a0f1d2 vfs_readf +EXPORT_SYMBOL vmlinux 0x98a1d92d bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x98aab57a get_acl +EXPORT_SYMBOL vmlinux 0x98b40748 __blk_end_request +EXPORT_SYMBOL vmlinux 0x98d3f912 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x98d5b753 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98f9d95a rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99445cc0 mpage_writepages +EXPORT_SYMBOL vmlinux 0x99453f8b tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x994e26bc scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995acb5b ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x995b7898 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x99925d58 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99963bd8 skb_seq_read +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e14e04 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x99e8678e dma_sync_wait +EXPORT_SYMBOL vmlinux 0x9a03b205 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a206ce4 read_code +EXPORT_SYMBOL vmlinux 0x9a24c6d1 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x9a5b0cf2 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x9a7084f9 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x9a7acd0d dget_parent +EXPORT_SYMBOL vmlinux 0x9a809d06 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x9a94329a devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x9aa2555a pci_bus_get +EXPORT_SYMBOL vmlinux 0x9ab29ee1 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x9acfdc39 framebuffer_release +EXPORT_SYMBOL vmlinux 0x9ad27ad6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b2d2a0e block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b37d975 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3ddd9e d_move +EXPORT_SYMBOL vmlinux 0x9b601dd7 sock_create_kern +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b81e03e kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba3800b xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb0547b fd_install +EXPORT_SYMBOL vmlinux 0x9bc80353 unregister_netdev +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bce77db netif_device_detach +EXPORT_SYMBOL vmlinux 0x9bdd654a tty_register_driver +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bed74a7 complete_request_key +EXPORT_SYMBOL vmlinux 0x9bfc9816 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x9c28f157 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x9c3ef5e1 sk_capable +EXPORT_SYMBOL vmlinux 0x9c46d2c9 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9c5a148f tcp_close +EXPORT_SYMBOL vmlinux 0x9c84194d __register_chrdev +EXPORT_SYMBOL vmlinux 0x9c884d91 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9c88806b param_set_short +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb183c7 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x9cc6fa9a dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x9ccc12a5 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x9ce25c18 from_kgid +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d25e920 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x9d2d148d nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3dbc70 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x9d3ee697 proto_register +EXPORT_SYMBOL vmlinux 0x9d4f3a3d dcache_dir_open +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d680994 file_update_time +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d6d4d99 acl_by_type +EXPORT_SYMBOL vmlinux 0x9d75c01a mutex_unlock +EXPORT_SYMBOL vmlinux 0x9d7a945f of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d91004c dump_skip +EXPORT_SYMBOL vmlinux 0x9d9a6583 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x9da1c135 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x9dcb48c4 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x9ddd3475 down_write_trylock +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0640e3 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e10fe58 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9e12ef28 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e4553b8 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9e46ff2b audit_log_task_info +EXPORT_SYMBOL vmlinux 0x9e4807b8 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x9e4ab20b inet6_add_offload +EXPORT_SYMBOL vmlinux 0x9e4f1b2a iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e55b9bb pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x9e5cc1e8 tty_lock +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eda4718 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9f03c454 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x9f101990 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x9f15efe7 tty_kref_put +EXPORT_SYMBOL vmlinux 0x9f16dce7 put_disk +EXPORT_SYMBOL vmlinux 0x9f221ac1 inet6_release +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f478896 dump_page +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9ec4c0 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x9fb94e72 sock_from_file +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe1134c pci_choose_state +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa014401f inet6_bind +EXPORT_SYMBOL vmlinux 0xa02c0737 mach_powermac +EXPORT_SYMBOL vmlinux 0xa0306cd5 __lock_page +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0551980 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa061db9a fb_validate_mode +EXPORT_SYMBOL vmlinux 0xa062faad netlink_unicast +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa0713d2a __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xa07cb7e7 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xa07daded devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08e7dd4 single_release +EXPORT_SYMBOL vmlinux 0xa09127b7 devm_free_irq +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0cb6815 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0xa0ce486b jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa109139f security_path_rename +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1334def dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa143576f locks_free_lock +EXPORT_SYMBOL vmlinux 0xa147ac7d rwsem_wake +EXPORT_SYMBOL vmlinux 0xa1595011 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xa16487d6 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xa17c87e4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xa17da794 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa181bd4d gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xa1857c3d udp_seq_open +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1cbd3df agp_backend_release +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2101a5f dm_unregister_target +EXPORT_SYMBOL vmlinux 0xa21bb24a misc_deregister +EXPORT_SYMBOL vmlinux 0xa221ba5e blk_start_request +EXPORT_SYMBOL vmlinux 0xa2341a23 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xa235f1ea mntget +EXPORT_SYMBOL vmlinux 0xa246faba sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xa251cb1c seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xa278eca0 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa289629c dm_io +EXPORT_SYMBOL vmlinux 0xa28d91d4 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xa2a3013f netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c232b0 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa2e5ef1d blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa2f89192 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31202cd peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xa31bc36c nf_register_hook +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3298556 lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0xa3309cf9 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa334091c ll_rw_block +EXPORT_SYMBOL vmlinux 0xa349f69f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xa355909d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xa3562c64 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa392e3e5 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa399dbd4 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3a022ab n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3be4944 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xa3cd3812 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xa3d1c874 serio_open +EXPORT_SYMBOL vmlinux 0xa3dc0443 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xa3e105a0 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3ffc9a6 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xa409b458 dst_discard_out +EXPORT_SYMBOL vmlinux 0xa40af77f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xa43124f2 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xa439cc5d param_ops_uint +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4950c1f skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xa4a4f4fe vme_master_request +EXPORT_SYMBOL vmlinux 0xa4a7e5ff alloc_disk +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c2bfaf generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e31716 udp_ioctl +EXPORT_SYMBOL vmlinux 0xa4fddfe3 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xa507a733 neigh_lookup +EXPORT_SYMBOL vmlinux 0xa5329599 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa57ef40e vfs_rmdir +EXPORT_SYMBOL vmlinux 0xa58a42de PDE_DATA +EXPORT_SYMBOL vmlinux 0xa58dfa2a cfb_fillrect +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5a9597e cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xa5aa70a8 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xa5b6b256 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5d2dc82 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa5dac202 lookup_one_len +EXPORT_SYMBOL vmlinux 0xa5f422d6 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xa5fa1528 vm_insert_page +EXPORT_SYMBOL vmlinux 0xa6034c1f netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xa611404c write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa63dd9e0 skb_find_text +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6a8c02a i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa6b4f10b xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xa6e1d6ab proto_unregister +EXPORT_SYMBOL vmlinux 0xa6ead0e0 input_event +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7045973 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xa70c7895 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa713b9df ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa716635b path_noexec +EXPORT_SYMBOL vmlinux 0xa7198d2c pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7291884 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73be404 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xa73c268a __devm_request_region +EXPORT_SYMBOL vmlinux 0xa74021c0 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xa745d62c md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xa74924bb uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7595a9e d_splice_alias +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7a11814 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa7cc40d1 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xa7e7787f vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xa7f62461 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xa80ce3a2 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa8198721 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8305090 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xa8402d1d dev_remove_offload +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa855f350 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xa8616abd blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa86afc41 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87e6dec mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xa8923d48 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8d2d6d2 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xa8e34ac0 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91da78d posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xa9202caa mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa94ea18f dev_add_offload +EXPORT_SYMBOL vmlinux 0xa9548aae scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa95cb714 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97ab626 param_set_long +EXPORT_SYMBOL vmlinux 0xa9864037 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xa9a7fceb input_get_keycode +EXPORT_SYMBOL vmlinux 0xa9b58f60 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xa9c0ef5b dquot_drop +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9e5c175 vme_irq_free +EXPORT_SYMBOL vmlinux 0xa9f7acec skb_store_bits +EXPORT_SYMBOL vmlinux 0xaa2a9ab0 module_put +EXPORT_SYMBOL vmlinux 0xaa2b5214 pipe_unlock +EXPORT_SYMBOL vmlinux 0xaa2cc806 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xaa2e47d0 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa6453dc dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa6fcb92 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xaa9f3311 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xaab21719 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xaab30420 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xaab66904 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xaab94329 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xaabca14f input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xaac32c72 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xaacd935c rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad59bc8 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadaa3c7 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xaaed7b00 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xaaef33d0 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xaaf1d270 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xaaf8699e dump_align +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab1aedc2 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xab222220 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xab228e31 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0xab3f5851 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xab67d130 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7538fc __ip_dev_find +EXPORT_SYMBOL vmlinux 0xab77ab51 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7e67a2 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xab7f083b blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xab9b6abc register_qdisc +EXPORT_SYMBOL vmlinux 0xab9d4d70 noop_fsync +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe61121 invalidate_partition +EXPORT_SYMBOL vmlinux 0xabe6b2ad inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xabeb3d3c of_get_mac_address +EXPORT_SYMBOL vmlinux 0xabf450c7 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xabfffd9c __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xac00c56e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac156bf1 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac292c3c tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xac5d1690 ps2_end_command +EXPORT_SYMBOL vmlinux 0xac801a7a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xaca24e2e remove_proc_entry +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacaf80c1 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xacb26b5b arp_create +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacddcfe8 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xace20a8f phy_detach +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0358c2 rtnl_notify +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad072bad mmc_release_host +EXPORT_SYMBOL vmlinux 0xad170289 inode_permission +EXPORT_SYMBOL vmlinux 0xad2ab805 prepare_creds +EXPORT_SYMBOL vmlinux 0xad36b365 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xad4f5d29 bdget_disk +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad547243 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xad5ef2e6 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xad6ebe4f remap_pfn_range +EXPORT_SYMBOL vmlinux 0xad80d7d6 param_get_short +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xad973556 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xadaa92b9 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xadad65aa dev_uc_add +EXPORT_SYMBOL vmlinux 0xadbd3704 put_io_context +EXPORT_SYMBOL vmlinux 0xadcc0242 input_free_device +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadea7aee __i2c_transfer +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0656f9 km_state_notify +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae6426fe generic_file_mmap +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7aa3a1 kobject_put +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae955014 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xaeaa4874 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xaeb5f687 ps2_drain +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaef962b7 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf1789d0 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xaf18b735 path_get +EXPORT_SYMBOL vmlinux 0xaf1c3be7 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xaf26e93f fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xaf2964fe led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3bed9d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4768a2 release_sock +EXPORT_SYMBOL vmlinux 0xaf58b5b2 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xaf5abdc0 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xaf84412c fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf9858f6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xafa6c422 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xafb0fd09 gen_pool_create +EXPORT_SYMBOL vmlinux 0xafc446f3 padata_free +EXPORT_SYMBOL vmlinux 0xafc7959e blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xafea161b cont_write_begin +EXPORT_SYMBOL vmlinux 0xafea4229 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0006f87 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xb0091d20 __frontswap_store +EXPORT_SYMBOL vmlinux 0xb027bf01 kernel_write +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb048ddfa bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb075ac46 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xb07743c4 elevator_change +EXPORT_SYMBOL vmlinux 0xb079dbc9 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xb081b9c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0b82748 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xb0bf53e9 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xb0c485da __register_nls +EXPORT_SYMBOL vmlinux 0xb0cd0fc3 vfs_rename +EXPORT_SYMBOL vmlinux 0xb0da7bca is_bad_inode +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ea8801 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xb126f29c dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb145142b dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xb14f1f03 get_tz_trend +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb17993cd blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb1a3f4ff iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1ca77c0 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xb1cb589e down_read_trylock +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1e0afed copy_to_iter +EXPORT_SYMBOL vmlinux 0xb203ee61 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0xb20a3ea0 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xb228f98f neigh_seq_start +EXPORT_SYMBOL vmlinux 0xb22fb2aa blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb235c130 single_open +EXPORT_SYMBOL vmlinux 0xb246de67 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xb251e39e cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb255f5aa dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xb264e8c7 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb280407f uart_resume_port +EXPORT_SYMBOL vmlinux 0xb2a82257 tty_port_put +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2ca4136 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xb2d1c35b page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e145e9 udp_prot +EXPORT_SYMBOL vmlinux 0xb32059c3 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xb32c4479 follow_down_one +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb337e60d debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb354b391 d_genocide +EXPORT_SYMBOL vmlinux 0xb35c881c of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb3642d47 seq_release_private +EXPORT_SYMBOL vmlinux 0xb372b944 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xb3b10dc8 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xb3c60f86 fasync_helper +EXPORT_SYMBOL vmlinux 0xb3ccc74a i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3def8ac jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xb3f6ea46 vfs_getattr +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4055e73 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42acb95 down_write +EXPORT_SYMBOL vmlinux 0xb431a684 inet_bind +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45e144f kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4d41da1 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xb4d4fc5d scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xb4fbd945 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb50e9c4e of_node_put +EXPORT_SYMBOL vmlinux 0xb52f6edf netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb53e4fd9 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xb543837f skb_clone +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5776e21 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xb592cdb5 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xb59c6606 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a4a87c skb_push +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c8935f netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f3edd9 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xb6026269 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb6154e4e crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb63d1fd7 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xb6647947 netdev_warn +EXPORT_SYMBOL vmlinux 0xb6705ed4 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb686544b dquot_quota_off +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a0f4bf kern_path +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6aa5570 vfs_fsync +EXPORT_SYMBOL vmlinux 0xb6f0f888 lock_rename +EXPORT_SYMBOL vmlinux 0xb72dbaef __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb7654ae6 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7836492 pci_map_rom +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7c24fcb fddi_type_trans +EXPORT_SYMBOL vmlinux 0xb7d5a983 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb7d61d58 neigh_for_each +EXPORT_SYMBOL vmlinux 0xb7e7f1e9 sock_create +EXPORT_SYMBOL vmlinux 0xb7f1d6e8 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb7f7d7be __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb8071f23 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xb807d264 genphy_suspend +EXPORT_SYMBOL vmlinux 0xb8186bd4 param_get_ulong +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8269c8e gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xb8289091 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xb83b2f00 eth_header +EXPORT_SYMBOL vmlinux 0xb84689e5 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xb8516b37 pci_save_state +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb88a2585 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb88d403e __napi_schedule +EXPORT_SYMBOL vmlinux 0xb8b83d43 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8bd56c0 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xb8c9bb73 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xb8e0246f inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8ef51ab __vfs_write +EXPORT_SYMBOL vmlinux 0xb8f9ae3f ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xb920c5b5 km_is_alive +EXPORT_SYMBOL vmlinux 0xb921319d check_disk_change +EXPORT_SYMBOL vmlinux 0xb93dd686 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xb93e6029 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb946c892 dev_load +EXPORT_SYMBOL vmlinux 0xb951085e tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xb968a234 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xb98e98dd read_dev_sector +EXPORT_SYMBOL vmlinux 0xb99f1810 key_link +EXPORT_SYMBOL vmlinux 0xb9a2b0fa led_update_brightness +EXPORT_SYMBOL vmlinux 0xb9b49b08 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb9bc59f7 send_sig_info +EXPORT_SYMBOL vmlinux 0xb9bf1ebf page_symlink +EXPORT_SYMBOL vmlinux 0xb9d0cac8 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f55640 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xba0ea767 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xba1bcc5e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xba20f07a get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba56c08e deactivate_super +EXPORT_SYMBOL vmlinux 0xba604a77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xba692cba inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xba7e0ba1 request_firmware +EXPORT_SYMBOL vmlinux 0xba86528b nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xba8d95f1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xba92a108 input_unregister_device +EXPORT_SYMBOL vmlinux 0xba9fc7b4 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbac68599 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xbaeeb823 proc_symlink +EXPORT_SYMBOL vmlinux 0xbb04e00a inode_init_always +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb2f814b __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xbb30fc27 param_get_byte +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb52b4e0 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xbb54b3bd devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb7509cf sg_miter_skip +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9b43d6 nvm_submit_io +EXPORT_SYMBOL vmlinux 0xbba93067 send_sig +EXPORT_SYMBOL vmlinux 0xbbdbb48a i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbc1396ee i2c_transfer +EXPORT_SYMBOL vmlinux 0xbc22321f nvm_register +EXPORT_SYMBOL vmlinux 0xbc27f720 load_nls_default +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3c5e08 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xbc46b280 up_read +EXPORT_SYMBOL vmlinux 0xbc648cf6 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc585b0 dquot_acquire +EXPORT_SYMBOL vmlinux 0xbcce94b0 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xbcdd6477 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf49ac6 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xbcfd6ef0 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xbcfe8781 page_waitqueue +EXPORT_SYMBOL vmlinux 0xbd0a7583 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0xbd3bc24d param_set_byte +EXPORT_SYMBOL vmlinux 0xbd6f4e3b inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xbd7af2ad rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbaea91 ppp_input +EXPORT_SYMBOL vmlinux 0xbddc1040 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xbdf41ac3 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xbe0131b4 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xbe090c7b simple_link +EXPORT_SYMBOL vmlinux 0xbe0afdea dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe240f4f param_get_bool +EXPORT_SYMBOL vmlinux 0xbe284599 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbe2e27b3 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xbe34d715 __check_sticky +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe87aa8f kthread_stop +EXPORT_SYMBOL vmlinux 0xbeb8d88b i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xbebe25fa uart_match_port +EXPORT_SYMBOL vmlinux 0xbec74c0b gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0481af dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xbf065933 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xbf5d494e xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xbf778e59 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xbf7be5bc mmc_request_done +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf916cb5 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa7dd50 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xbfaea70d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc92e44 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xbfcdd944 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xbfd4fabd of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbfd760e5 scsi_register +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffb6bf0 d_walk +EXPORT_SYMBOL vmlinux 0xc01c6707 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xc026f594 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc02ff076 keyring_search +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc0576041 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xc05e5945 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08edb9c vme_slot_num +EXPORT_SYMBOL vmlinux 0xc0a0bd82 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a90ac6 neigh_destroy +EXPORT_SYMBOL vmlinux 0xc0b12901 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0de98ae mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xc0ee8789 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc0efc7c7 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xc0f29c58 __d_drop +EXPORT_SYMBOL vmlinux 0xc11afd70 dcb_setapp +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc11d85af inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc1810005 sock_i_uid +EXPORT_SYMBOL vmlinux 0xc187d373 twl6040_power +EXPORT_SYMBOL vmlinux 0xc1a1ab4e ip_options_compile +EXPORT_SYMBOL vmlinux 0xc1af9d43 uart_register_driver +EXPORT_SYMBOL vmlinux 0xc1b46f78 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xc1bb6faa register_filesystem +EXPORT_SYMBOL vmlinux 0xc1bf188e generic_readlink +EXPORT_SYMBOL vmlinux 0xc1d2fadd set_user_nice +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1de21b0 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xc1e244aa padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc214a912 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xc235e749 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc274fe42 tcf_register_action +EXPORT_SYMBOL vmlinux 0xc2781ba3 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xc2880350 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc2932d9e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2c0b7c8 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc2cf0fb1 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc2d11463 proc_remove +EXPORT_SYMBOL vmlinux 0xc2d315bd try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc3296f30 of_get_property +EXPORT_SYMBOL vmlinux 0xc33ed274 pid_task +EXPORT_SYMBOL vmlinux 0xc344e9e0 loop_backing_file +EXPORT_SYMBOL vmlinux 0xc362334f truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc3721a5b sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xc381181e ppp_unit_number +EXPORT_SYMBOL vmlinux 0xc3b682c0 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xc3b9992e zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xc3bc2d00 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xc3c0e05f skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c77320 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc3c8697c blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xc3e20679 pci_iomap +EXPORT_SYMBOL vmlinux 0xc414e02c input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xc41e67b3 napi_disable +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4432db6 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xc4528947 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49a86a2 netif_skb_features +EXPORT_SYMBOL vmlinux 0xc4a4cd75 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xc4bf191f filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xc4bf2d12 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xc4cf34f3 simple_open +EXPORT_SYMBOL vmlinux 0xc4d7ee39 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc4dc1853 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xc4eb151a skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xc4edd97c xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xc529713d inet_add_protocol +EXPORT_SYMBOL vmlinux 0xc5341c34 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xc547923c copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc553b967 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56f3057 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc588da48 d_alloc_name +EXPORT_SYMBOL vmlinux 0xc598348b generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5aa4a5a key_task_permission +EXPORT_SYMBOL vmlinux 0xc5b3f827 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xc5bf182c blkdev_get +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dbad1f i2c_master_recv +EXPORT_SYMBOL vmlinux 0xc5e75a90 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xc5ef291e trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xc5fbdbce framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6157b1c audit_log +EXPORT_SYMBOL vmlinux 0xc6171235 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6444078 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xc644aa8b kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xc65537d0 memremap +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc66027e2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xc67d4335 generic_getxattr +EXPORT_SYMBOL vmlinux 0xc6802ccb kernel_param_lock +EXPORT_SYMBOL vmlinux 0xc699fb17 mmc_free_host +EXPORT_SYMBOL vmlinux 0xc6a52499 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6bc2bab mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc6bdb7df tcp_req_err +EXPORT_SYMBOL vmlinux 0xc6be1869 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc6cb185a bio_put +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6da96cc kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xc6f9da09 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc70d937f pci_get_class +EXPORT_SYMBOL vmlinux 0xc71f879a neigh_xmit +EXPORT_SYMBOL vmlinux 0xc72064ce netdev_printk +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72307d3 put_cmsg +EXPORT_SYMBOL vmlinux 0xc7284096 sock_register +EXPORT_SYMBOL vmlinux 0xc737f84f pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75713ea __scsi_add_device +EXPORT_SYMBOL vmlinux 0xc76c9f1b jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xc7731a0d devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc77ea866 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7d0bcd2 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc7e02a60 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xc7ea0c49 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f6fff5 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xc7f926bd mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xc8037211 inet6_getname +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82a27ca input_register_handler +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83949df neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83c1b5f __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88cc4a9 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a90658 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d8e291 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xc8f8e0ab ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc916e26c nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xc91c63df ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xc931b3a7 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc963e072 setattr_copy +EXPORT_SYMBOL vmlinux 0xc967be21 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc96f3e36 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc990525a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xc99b2f0a lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99e9cdc bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc9b64b66 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9c6db0b cfb_copyarea +EXPORT_SYMBOL vmlinux 0xc9e4920c decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xc9f46c8b __sb_end_write +EXPORT_SYMBOL vmlinux 0xc9f515c9 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xca096049 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xca0afe3a fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xca0d8a39 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1f9d35 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca328fc9 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xca35bd99 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca3ff0b7 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xca41eaa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xca50fda9 flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xca51781b param_set_ullong +EXPORT_SYMBOL vmlinux 0xca724e5a stop_tty +EXPORT_SYMBOL vmlinux 0xca772223 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca8a8743 blk_put_request +EXPORT_SYMBOL vmlinux 0xca8bf60a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca999497 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xca9c27c9 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xcaa5a7ea sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xcac5f69d jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xcac91a51 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xcaca83bb tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb000221 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb08a180 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xcb0bbb9a pci_clear_master +EXPORT_SYMBOL vmlinux 0xcb0fdba2 giveup_fpu +EXPORT_SYMBOL vmlinux 0xcb322b9c inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xcb38b277 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xcb3fc27d generic_write_checks +EXPORT_SYMBOL vmlinux 0xcb7dc6fb __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xcb900303 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xcbaba1e8 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcff5a4 register_netdevice +EXPORT_SYMBOL vmlinux 0xcbe8aaaa pcim_enable_device +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbfc5ba2 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1c59a1 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6b2984 cdev_init +EXPORT_SYMBOL vmlinux 0xccacf04d input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xccae9a92 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xccbc1d3d eth_header_cache +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc4d259 i2c_master_send +EXPORT_SYMBOL vmlinux 0xccd0ed32 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xccdcf38f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xccf8700b ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd01837a irq_to_desc +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd13dc7c ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd37e25e param_set_bint +EXPORT_SYMBOL vmlinux 0xcd462dbc bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xcd4cc90f __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xcd7b159d __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd83c487 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8993a5 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xcd8bf109 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xcd8cdfc2 vmap +EXPORT_SYMBOL vmlinux 0xcda91aff md_check_recovery +EXPORT_SYMBOL vmlinux 0xcdad29fd gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xcdb93ac5 proc_set_user +EXPORT_SYMBOL vmlinux 0xcdc063ed down_read +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdea6aae ip6_frag_init +EXPORT_SYMBOL vmlinux 0xce114baa __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xce160dc4 mount_subtree +EXPORT_SYMBOL vmlinux 0xce1b55a8 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xce1c53da inet_del_offload +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce28d5c1 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xce2a75c4 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce4da49e md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6af879 inet_shutdown +EXPORT_SYMBOL vmlinux 0xce6f1f20 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xce762418 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xce8791dd blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xce92d55f bmap +EXPORT_SYMBOL vmlinux 0xce946a32 kthread_bind +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebb8154 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xcec48d8b input_set_capability +EXPORT_SYMBOL vmlinux 0xcec72039 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xcec803b7 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xcec8b29a dev_warn +EXPORT_SYMBOL vmlinux 0xcec9e065 have_submounts +EXPORT_SYMBOL vmlinux 0xcecf4c12 __quota_error +EXPORT_SYMBOL vmlinux 0xcedeba39 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf021df8 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xcf03ae17 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xcf546694 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xcf63d07e input_inject_event +EXPORT_SYMBOL vmlinux 0xcf7577ff tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xcf7c5f33 find_vma +EXPORT_SYMBOL vmlinux 0xcfcd470b jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xcfe27560 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xcffacf8f phy_find_first +EXPORT_SYMBOL vmlinux 0xcfffb50e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xcffffdd8 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xd020f48f wireless_send_event +EXPORT_SYMBOL vmlinux 0xd041b8e9 dm_get_device +EXPORT_SYMBOL vmlinux 0xd04b2a7d param_ops_bool +EXPORT_SYMBOL vmlinux 0xd058d3b8 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xd068816d netlink_capable +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0726193 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xd077ce01 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xd07f81c6 elv_register_queue +EXPORT_SYMBOL vmlinux 0xd091b278 macio_enable_devres +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09c11cd generic_file_fsync +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0c28362 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xd0d96209 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xd0dad7df input_allocate_device +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1081c54 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd10bdd96 phy_stop +EXPORT_SYMBOL vmlinux 0xd10e8ad2 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xd116911e disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd126999e security_inode_readlink +EXPORT_SYMBOL vmlinux 0xd140a309 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd17a8cac sock_kfree_s +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1af5518 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd1c270c6 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd1c4e836 pci_iounmap +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d39894 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1efd465 kunmap_high +EXPORT_SYMBOL vmlinux 0xd201a18b of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd250aeb2 open_exec +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2699f2e generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xd273bac9 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xd2741053 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28b8b15 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xd29d2896 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b2f68c mpage_readpages +EXPORT_SYMBOL vmlinux 0xd2b46ad3 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xd2b7930b scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd2c703df sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f8a6ba of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd3171656 blk_start_queue +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31b3e9c skb_pull +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32bc67c mount_single +EXPORT_SYMBOL vmlinux 0xd32e4fb8 sk_stream_error +EXPORT_SYMBOL vmlinux 0xd343d842 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xd36de600 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xd3972add bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xd39dcc67 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd3a80427 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xd3b091d8 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c9d723 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3ef6599 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd40d21ed get_agp_version +EXPORT_SYMBOL vmlinux 0xd4101cd3 prepare_binprm +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd41a7dcd tty_name +EXPORT_SYMBOL vmlinux 0xd44370d1 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xd4442dc6 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xd4463278 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd48bb163 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xd4a17907 mapping_tagged +EXPORT_SYMBOL vmlinux 0xd4bba9f5 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xd4ced874 nf_log_register +EXPORT_SYMBOL vmlinux 0xd4df29f7 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd5025a14 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xd5060b08 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xd52709a0 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xd53c2ee9 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd56e07ee tcp_splice_read +EXPORT_SYMBOL vmlinux 0xd5724e7a phy_driver_register +EXPORT_SYMBOL vmlinux 0xd577d47f ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5955d9a vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xd59f1363 eth_type_trans +EXPORT_SYMBOL vmlinux 0xd5a00c7f dev_addr_del +EXPORT_SYMBOL vmlinux 0xd5a9d56c jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd5bee19c mfd_add_devices +EXPORT_SYMBOL vmlinux 0xd5cac32c kill_litter_super +EXPORT_SYMBOL vmlinux 0xd5d41d55 dev_close +EXPORT_SYMBOL vmlinux 0xd5d4a31d security_file_permission +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd600c232 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61e49a2 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd655a6bf devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xd67b2c10 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd689de60 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xd6947b14 security_path_chmod +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd69c0eee devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xd6a94e83 register_key_type +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f3c463 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xd7250987 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xd74d871a kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f74ed of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xd760abdf agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xd77d983d agp_copy_info +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7999c51 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7bcbf28 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd7da5877 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd803c98b padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd80c30b7 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xd82421b8 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd829a807 inet_frags_init +EXPORT_SYMBOL vmlinux 0xd845cf95 nla_put +EXPORT_SYMBOL vmlinux 0xd84b8485 inet_listen +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd8642f6f scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xd8741388 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xd87621a2 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xd87bf7cb invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd8807d41 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xd88adf40 led_blink_set +EXPORT_SYMBOL vmlinux 0xd89aeeab pipe_lock +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b04c76 netif_napi_del +EXPORT_SYMBOL vmlinux 0xd8c40bcb of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd8d34b0b dquot_get_state +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f985de mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xd9109b14 of_get_parent +EXPORT_SYMBOL vmlinux 0xd9185c9c dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd94e17ef get_task_io_context +EXPORT_SYMBOL vmlinux 0xd964f55c unlock_new_inode +EXPORT_SYMBOL vmlinux 0xd966ddc2 __do_once_done +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9b6ba72 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c3edff pcim_iomap +EXPORT_SYMBOL vmlinux 0xd9c9d78a __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d50724 security_path_truncate +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e4382b __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xd9f74dde vfs_iter_write +EXPORT_SYMBOL vmlinux 0xda01a4fc lwtunnel_output +EXPORT_SYMBOL vmlinux 0xda0eaf62 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xda0f7da6 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda5349d5 fs_bio_set +EXPORT_SYMBOL vmlinux 0xda5cc853 pci_bus_put +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7d121a netdev_crit +EXPORT_SYMBOL vmlinux 0xda863f25 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f266a touch_atime +EXPORT_SYMBOL vmlinux 0xda9b698d mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xdaa44b2c set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdac216a5 unlock_page +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdaeba5e4 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xdb5f623d uart_add_one_port +EXPORT_SYMBOL vmlinux 0xdb624667 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xdb65f82f adb_client_list +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6d13ac lro_flush_all +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbcb8a63 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc05f7cd unlock_rename +EXPORT_SYMBOL vmlinux 0xdc0d98f3 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xdc0ed21b blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1b3230 dev_addr_init +EXPORT_SYMBOL vmlinux 0xdc214961 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xdc2f1d00 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc418c8b i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5cb5a1 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc953a9f netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xdca499ab inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xdca97de3 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb5d9fd dev_uc_sync +EXPORT_SYMBOL vmlinux 0xdccf7575 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1bb183 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xdd1e1bf4 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd3099b8 commit_creds +EXPORT_SYMBOL vmlinux 0xdd5210da scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xdd8905de register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdd8da8a8 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xde1460bd sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xde19cd47 dev_uc_del +EXPORT_SYMBOL vmlinux 0xde2073f8 would_dump +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6f748c swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xde8deeaa iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb74c79 dev_printk +EXPORT_SYMBOL vmlinux 0xdebad2db of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xdec163e2 bio_split +EXPORT_SYMBOL vmlinux 0xdec9ddf1 tcf_em_register +EXPORT_SYMBOL vmlinux 0xdf0c1984 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xdf0db07e blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf33e531 freeze_bdev +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf41b75d default_llseek +EXPORT_SYMBOL vmlinux 0xdf43eebd pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf54e902 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xdf5b6963 file_open_root +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfb20dd6 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xdfe3f9d2 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xdfe6d242 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xdfea4f29 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffbfe02 netdev_info +EXPORT_SYMBOL vmlinux 0xe01f99a1 param_get_ushort +EXPORT_SYMBOL vmlinux 0xe0412953 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0560885 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xe05b6259 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06c6380 cad_pid +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08aa04f single_open_size +EXPORT_SYMBOL vmlinux 0xe08de1c7 dev_change_flags +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe09fd4d6 __break_lease +EXPORT_SYMBOL vmlinux 0xe0aacc16 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0d3764e ppp_register_channel +EXPORT_SYMBOL vmlinux 0xe0dbfec2 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe0e00545 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xe0e5b957 iterate_dir +EXPORT_SYMBOL vmlinux 0xe0e8e3ac seq_open +EXPORT_SYMBOL vmlinux 0xe0f10f69 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xe0f7c104 dquot_alloc +EXPORT_SYMBOL vmlinux 0xe0ff4a96 __neigh_create +EXPORT_SYMBOL vmlinux 0xe1039dad dev_set_mtu +EXPORT_SYMBOL vmlinux 0xe1075823 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe116af1b pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xe11da566 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xe125e235 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xe12f34a7 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe1420cfc dma_direct_ops +EXPORT_SYMBOL vmlinux 0xe14c2aa2 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe186bdca dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xe1b49e5b dm_register_target +EXPORT_SYMBOL vmlinux 0xe1b9c949 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xe1ba027e xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xe1d08886 input_register_device +EXPORT_SYMBOL vmlinux 0xe1ee4bb6 key_unlink +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe207c102 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe20cdeb8 do_truncate +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe2332343 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe274a1f6 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xe2895c2a phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xe297dd8f kern_path_create +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe29fb550 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xe2a406dd scsi_print_result +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2becc45 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f774e8 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3146584 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xe329b7c5 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xe366f37b lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0xe3907c21 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xe3b9a3e8 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3fdb9f5 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xe429b343 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe42e2280 d_rehash +EXPORT_SYMBOL vmlinux 0xe4467b7d dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe449a42a tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe449aaa7 dev_mc_add +EXPORT_SYMBOL vmlinux 0xe44a53a2 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xe44d5116 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe44dc629 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xe4590023 save_mount_options +EXPORT_SYMBOL vmlinux 0xe468b014 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xe468d7e7 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xe46a752c param_set_charp +EXPORT_SYMBOL vmlinux 0xe4715a9d xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xe4742f0c blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xe482e463 __inet_hash +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4881c8b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe49991b5 iget_locked +EXPORT_SYMBOL vmlinux 0xe4a73b16 simple_rmdir +EXPORT_SYMBOL vmlinux 0xe4b0ad96 mutex_lock +EXPORT_SYMBOL vmlinux 0xe4c17741 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xe4daa896 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xe4de41d7 register_console +EXPORT_SYMBOL vmlinux 0xe4e1274b blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe54e65c3 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5867b46 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xe58b9d5d pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xe5916b50 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xe5a7e44b filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xe5ab970a tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xe5aba9ef fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xe5ae5579 unregister_nls +EXPORT_SYMBOL vmlinux 0xe5b71793 vfs_symlink +EXPORT_SYMBOL vmlinux 0xe5bdd0e9 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cb2300 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xe5d2ecad pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fd6ae1 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xe5ff21b4 md_write_start +EXPORT_SYMBOL vmlinux 0xe607bd53 devm_memremap +EXPORT_SYMBOL vmlinux 0xe64d117a max8998_read_reg +EXPORT_SYMBOL vmlinux 0xe65e6606 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe677fe9c dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xe68b4ee5 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6de5cf6 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xe6ea3029 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7067d0b d_set_d_op +EXPORT_SYMBOL vmlinux 0xe7205437 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xe725ef2f fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xe7262743 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe737b30b simple_transaction_release +EXPORT_SYMBOL vmlinux 0xe77520b4 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xe77ff352 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe793dbf5 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7c73831 tcp_poll +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe82edca1 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xe8344d19 __kernel_write +EXPORT_SYMBOL vmlinux 0xe8384c00 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe840b123 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe8419e78 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe850c60a agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xe8525936 phy_print_status +EXPORT_SYMBOL vmlinux 0xe8569460 tty_do_resize +EXPORT_SYMBOL vmlinux 0xe8601356 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xe8728f20 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xe880ff8c pci_find_bus +EXPORT_SYMBOL vmlinux 0xe8835097 init_buffer +EXPORT_SYMBOL vmlinux 0xe8a0381d uart_suspend_port +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8afd96d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c10103 blk_register_region +EXPORT_SYMBOL vmlinux 0xe8c41446 skb_split +EXPORT_SYMBOL vmlinux 0xe8c6fa22 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe8cb846c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xe8f2876a of_translate_address +EXPORT_SYMBOL vmlinux 0xe8f6462b param_set_ushort +EXPORT_SYMBOL vmlinux 0xe8fa796b neigh_direct_output +EXPORT_SYMBOL vmlinux 0xe90b064d xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe918dc92 mdiobus_write +EXPORT_SYMBOL vmlinux 0xe9303c63 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe93bd1d4 skb_pad +EXPORT_SYMBOL vmlinux 0xe93f2b98 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96a45af kill_block_super +EXPORT_SYMBOL vmlinux 0xe980d1b5 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xe9a59cb4 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xe9a77b14 bio_reset +EXPORT_SYMBOL vmlinux 0xe9b3f3da fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xe9bc4589 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xe9f1a09a bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xe9f6f8d6 dquot_operations +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0f2d69 set_create_files_as +EXPORT_SYMBOL vmlinux 0xea161810 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xea1ef09e pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xea27555a i2c_release_client +EXPORT_SYMBOL vmlinux 0xea2d0acd inet_sendmsg +EXPORT_SYMBOL vmlinux 0xea792307 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea80b23d bio_chain +EXPORT_SYMBOL vmlinux 0xea835096 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xea88a99a mark_info_dirty +EXPORT_SYMBOL vmlinux 0xea88c0fb vme_slave_request +EXPORT_SYMBOL vmlinux 0xea8becec i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xea91575d scsi_unregister +EXPORT_SYMBOL vmlinux 0xea9528be __frontswap_test +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9db98f dev_trans_start +EXPORT_SYMBOL vmlinux 0xeb2ed16c ether_setup +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5cba15 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xeb6bcf00 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeba0db00 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xeba2525d agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba44305 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebd5682d eth_gro_receive +EXPORT_SYMBOL vmlinux 0xec0ffe01 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec336bda dev_mc_init +EXPORT_SYMBOL vmlinux 0xec48697c udplite_prot +EXPORT_SYMBOL vmlinux 0xec57c695 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xec7678d2 sk_common_release +EXPORT_SYMBOL vmlinux 0xec8a8fcb jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xec9773ae generic_write_end +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc5370b inet_addr_type +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xecda1a56 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed0f389b mmc_remove_host +EXPORT_SYMBOL vmlinux 0xed32f640 revert_creds +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed99344d get_super +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedabbdde agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xedb43ae4 ip_defrag +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc9af24 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xedf20810 build_skb +EXPORT_SYMBOL vmlinux 0xedfa6267 __invalidate_device +EXPORT_SYMBOL vmlinux 0xee06c7da handle_edge_irq +EXPORT_SYMBOL vmlinux 0xee230f99 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee515830 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeebc1f29 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xeec688f6 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xeeec4f94 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef0c61b6 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xef1a1422 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xef2780c6 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xef2c0ce2 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xef42932c xfrm_register_type +EXPORT_SYMBOL vmlinux 0xef62c979 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xef89f7ed __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xefac35c2 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe817d7 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xeffb7935 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xeffc4077 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf009e208 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf00d08ac tso_start +EXPORT_SYMBOL vmlinux 0xf01d6d7c elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xf021cb39 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xf02f310b simple_unlink +EXPORT_SYMBOL vmlinux 0xf02fbce4 d_tmpfile +EXPORT_SYMBOL vmlinux 0xf02fe316 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xf0388d82 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xf04297a7 scsi_device_get +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf069581d phy_device_free +EXPORT_SYMBOL vmlinux 0xf086b465 sock_i_ino +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09ccf91 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0cff9de skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xf0d78aad lwtunnel_input +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0fe6905 dqget +EXPORT_SYMBOL vmlinux 0xf101f4c5 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10bbb3e submit_bio +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf1324d1f agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xf139e448 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15847e8 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1cac620 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2252a2f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf273f066 follow_pfn +EXPORT_SYMBOL vmlinux 0xf27563cb irq_stat +EXPORT_SYMBOL vmlinux 0xf294fdb1 sock_no_accept +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a82246 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf2b84cea tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2ebe53c dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xf3003ccc pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xf30679d7 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3187197 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32be38f blk_peek_request +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf350e91a sock_no_listen +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf38591dd mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38a8416 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xf38c3b2a tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a0a17a agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xf3aca397 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf3e4947a mmc_can_discard +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f819f2 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xf3f9ea43 d_drop +EXPORT_SYMBOL vmlinux 0xf3fa6212 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf3fdfa5d uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf43859cf generic_read_dir +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf4638e78 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4eef396 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf4f14670 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f4825e sk_wait_data +EXPORT_SYMBOL vmlinux 0xf4f8e714 do_splice_direct +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf531e7cc __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf55b458d arp_xmit +EXPORT_SYMBOL vmlinux 0xf566b8ae __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf586f486 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xf597209e nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xf59d5732 noop_qdisc +EXPORT_SYMBOL vmlinux 0xf5a09353 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d25e98 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f10c19 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xf605fc38 mount_ns +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63d9c31 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf6789a40 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xf67a6b70 simple_rename +EXPORT_SYMBOL vmlinux 0xf68266af md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6934112 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xf696b0ce nf_log_set +EXPORT_SYMBOL vmlinux 0xf6a12743 vc_resize +EXPORT_SYMBOL vmlinux 0xf6b56233 phy_start +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6be6280 generic_perform_write +EXPORT_SYMBOL vmlinux 0xf6d19658 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ebd796 kernel_read +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf703170b scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf70afffc ip6_xmit +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7163c68 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0xf729764e vfs_llseek +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf784148d km_policy_notify +EXPORT_SYMBOL vmlinux 0xf78ff097 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xf7940444 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xf797a668 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf7a578da blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xf7b6cafa inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xf7bdea15 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf7edff17 make_bad_inode +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8162cd0 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf81b9e29 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xf8260245 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82bdbcf i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83614c6 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xf83a6724 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xf88512f3 pci_request_region +EXPORT_SYMBOL vmlinux 0xf8b0b75a inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xf8b330ee bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xf8bdca5e mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xf8e4a7e4 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf936a7b7 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xf939f02b iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xf949921d tcp_prot +EXPORT_SYMBOL vmlinux 0xf95c66c5 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xf98ed964 note_scsi_host +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b4e051 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xf9b9c21c inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xf9e6cf29 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f2757c pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xf9f3ec79 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xf9f95b2e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa029ba0 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xfa258e94 key_type_keyring +EXPORT_SYMBOL vmlinux 0xfa3a8d0e scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xfa3c0bbc downgrade_write +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa829bba dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xfa922f58 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xfab61a23 input_register_handle +EXPORT_SYMBOL vmlinux 0xfabf5465 of_node_get +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb03c206 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xfb0ef92d key_payload_reserve +EXPORT_SYMBOL vmlinux 0xfb145dec simple_readpage +EXPORT_SYMBOL vmlinux 0xfb26479d pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xfb30efb7 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xfb3737a2 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xfb69de4b blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9588c5 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xfb98ab0a i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0xfb9cf055 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfba388e3 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb704d3 rt6_lookup +EXPORT_SYMBOL vmlinux 0xfbc1909a xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbe980fe tty_port_close +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc096d4d dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xfc307829 simple_follow_link +EXPORT_SYMBOL vmlinux 0xfc39e1c1 __block_write_begin +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc65524e ps2_begin_command +EXPORT_SYMBOL vmlinux 0xfc67a0c0 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xfc6df783 poll_initwait +EXPORT_SYMBOL vmlinux 0xfc7e9ecb switch_mmu_context +EXPORT_SYMBOL vmlinux 0xfc808f1a blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xfc841c8c kmem_cache_free +EXPORT_SYMBOL vmlinux 0xfc8bf356 filemap_flush +EXPORT_SYMBOL vmlinux 0xfca757e9 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0xfcabec49 done_path_create +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfccef0ad abort_creds +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcdc586a __nlmsg_put +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfceef058 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xfcf84a93 atomic64_xor +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd01666e __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd813261 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9b265f dev_activate +EXPORT_SYMBOL vmlinux 0xfdac0155 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xfdb3f290 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xfdb4a28d write_cache_pages +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc4ea6e __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe083631 __genl_register_family +EXPORT_SYMBOL vmlinux 0xfe1e7120 proc_set_size +EXPORT_SYMBOL vmlinux 0xfe30d767 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xfe373c45 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xfe389692 migrate_page +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe643f42 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe95d473 keyring_clear +EXPORT_SYMBOL vmlinux 0xfebc55a3 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xfec74b30 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfeccbb33 generic_update_time +EXPORT_SYMBOL vmlinux 0xfed18aa1 vme_dma_request +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfedfd77b igrab +EXPORT_SYMBOL vmlinux 0xfee7a17d sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff293638 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xff3fe849 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xff5b17e9 free_task +EXPORT_SYMBOL vmlinux 0xff5f42be tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xff621d6a blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xff656f2d mpage_readpage +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff8a52d8 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9d2eba d_add_ci +EXPORT_SYMBOL vmlinux 0xffcd7ca2 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe0999e dquot_file_open +EXPORT_SYMBOL vmlinux 0xffedeb79 sock_no_poll +EXPORT_SYMBOL vmlinux 0xfff7773a forget_all_cached_acls +EXPORT_SYMBOL_GPL crypto/af_alg 0x15220fa2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x5fb85655 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa436cfba af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xba995cbf af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xc1e4670a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc9efe4dd af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd8bbd268 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xde574fc4 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xf8a4d960 af_alg_complete +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x124b60fa async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x180e79ef async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xdac264c0 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7e6ada3f async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf65fa66d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6f7bc9c2 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xeb280f90 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xedf231a5 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf961255d __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x36b825f1 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4b439a84 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x543b7e95 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x95724d34 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x65a8c889 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x06ed06ca crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xd603e592 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x078f3ec9 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x474d3e2f cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x476dae59 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x7b238300 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x97fadedb cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa090176f cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa4a7d42f cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa80f858f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd87f839c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfcced6b5 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x7d5663bc lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x72eb4108 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x74889884 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7875cd71 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa6c44213 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdc6e4539 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdf687d06 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe478a4fe shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xfb8ff599 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x1af58f1c crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x4968becb crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x7b2ad139 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xa88f8f5c crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xee4098f4 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x475a632d twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x399a85c3 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1e70695e ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2bfe88d8 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2d80ee25 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3b85d298 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d451b0e ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3e1beb4a ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x44a8823b ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4a0d607c ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x73a5a3d3 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x81e89d25 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9c92eac5 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaae3d2b6 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xada8624e ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xae269c1b ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc25b8ab7 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc77ccf96 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcc678ba3 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcedf9fe6 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd167c0e3 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb604016 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb97cb96 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeb1e4a7a ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x030b55c3 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0457eeb9 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2f01fb88 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x647b9acb ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x74bf8f66 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7506e462 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x77f75fd1 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa3ed59a2 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbc99de8b ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd69948fb ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd791a9ca ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xeda62c8f ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf04b4b7b ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x772c1535 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x806d1adb sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x33233fea __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x46da31f4 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x4c688dad __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xdfc50f6f __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1c8aeba6 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x280e271d bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x34df43fe bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3fd9e597 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4854b973 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6696f8be bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x68046b0f bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x71030b83 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x73185ed0 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x819dafe5 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x840e2488 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x85fc8b35 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x881b7865 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fc086fd bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa4b04c86 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb9aeaba9 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb9c464b1 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbf5598b6 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc3b0fc9a bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca6ce76c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdbbd7b61 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb01c037 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb94b754 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xecc0105a bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x373459ab btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x56d9755e btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x594891b0 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xab495dd9 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf9ea2261 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xffab2a5c btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0a19abe7 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x11fba50b btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x16d44083 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1c92a125 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x26b22090 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3bf15a6f btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6a46bf61 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb6883d7a btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xbd568eff btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcc2203b7 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe498a289 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x03f855fa btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0b4ac414 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x16cb352e btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x28655d87 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x28f7c228 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2d2670e3 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x620663bd btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8c09c02d btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9175baa5 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb66eb525 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xeb5a17f8 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x5c227ebd qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x928b4f1e qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xf06ae858 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xb91a140c h4_recv_buf +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0042a8c4 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x1f49f0bf dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x4f75c9b3 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x98f726d3 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdc5039c7 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1030f459 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x2dbfabf3 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc87576b0 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x03e3ab7f vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x7216bd41 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc6561c0a vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xf31c6bab vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x01ad5694 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x085eed50 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0dfff481 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1bc48858 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29947e48 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2f975b27 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x48cd804d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x52ad3f3b edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x65ee4e9b edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7cad87b2 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x816bd90d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8e0687ae edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x937235e7 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa21591c0 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaeeae299 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbc8729bf edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbe51f7d8 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc07f0c96 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce8d9323 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd1e722c1 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd9346cc7 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf93fdd17 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd0fef9d edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0110d6d0 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0faa637c fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1a385344 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x330794a8 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5105deac fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd3949660 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x5fcaa7f7 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xe8eb784c bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xbc70d0ce __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xebb47724 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2436e86a drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x38354918 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x48fc1d2a drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x81626441 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x848e9fd3 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa5dd07f4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x37bbcbbf ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x3f8d248b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe5f44882 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05a1542a __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a139604 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a811a60 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11c68d17 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11caf83e hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2c242113 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31cea0d0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x34c05b29 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x365b3b72 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x42ec609e hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x44ae2d96 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x491a71c6 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5462bcfe hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5f15697f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6571a7fc hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6b2bed0c __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x71f12baf hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7c4611b2 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7eee4c46 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x80a2b4de hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x826e48b8 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x85c708a7 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a578de9 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8da3d788 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x94de8c38 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ac7ea80 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb915114d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd806dfa hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe996786 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xccbd0b8c hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2a64575 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe1e2b122 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec0d18b8 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf188d237 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf71de0d8 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfd91dcd3 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xfd040777 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0ef331ce roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2289d33c roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5c99140e roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x82a49c70 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd93bcf48 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe99c6779 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4bf1568a sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6e96ce25 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x858f877e sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa94822f1 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc011bd07 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd8789d97 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe87abdd0 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf7da6a6f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf9a7addb sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x91e98cbf hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x05a264a6 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x33c26699 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x394b5dd5 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x41f99094 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x56c22569 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x61f120d1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x70feb5cf hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7bd75bb7 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8aa51c68 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x92559b41 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x95c04cbf hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabf5aed4 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xacb19c62 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbdadeb1a hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xca668782 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbccd43c hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc515450 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xee89a21f hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x1c5f1dac adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x229f7571 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xccf678b4 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x06f29412 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x216ee750 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x36147ffa pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4b4b9579 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x560ef351 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x57a544d0 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6f94e762 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x70ab6490 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x935f9435 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb6d2d031 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xba9c0ed1 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd1709108 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdf4ead05 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe5ebadc4 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf2ff051a pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x2d65ad1e intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xc6e31160 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xca3b20a1 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xeac53b09 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xee09c4c9 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xef40f3c1 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf56c39b0 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x66b8f7b6 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x9a86446e stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xbb3642de stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc3abaea0 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xef20bbd1 stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x78c847e4 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x865b7e38 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa876b1be i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd6f9f1eb i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd76e8af2 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x50d9a72e i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf50b0d3d i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x0249feea i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4dd3ff47 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x62b157e0 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x7c681411 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xaa7f6732 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3620750a ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x79563f4d ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd92930f8 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdcb1c105 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdf438e27 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf0ee0df8 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf1c6470d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf4036c76 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfe5b25f6 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x0c70b362 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x270a7118 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x039fc213 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xd3efe842 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xe21ec7c1 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0dfa9fbe adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2588f72c adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2fc8fdb6 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3484d240 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x42e83bdf adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x478b0e66 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5277616e adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8bf52edb adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd02d64f5 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdf957c8a adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe07a3d31 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf77b76fb adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x020b8e6f iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0e8675ef iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x10e3fef3 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x126030f2 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x32a4eed0 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a6aba77 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40b1df57 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x418788ee iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46aca9f1 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dd56759 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50e771ee devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6388dbe2 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6f08c877 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6f4a9fb5 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x712868fb iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x717caf0f iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72f26741 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x768552fd iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8892ae6d iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8a851c89 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9ceedb0d devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb8dd3238 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd12c3c1a iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd38a5e5b iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb92cc90 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdbaa743c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed8bb6f2 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf04f189d iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf06a9707 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf5659575 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xffe1e54f iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x57e60ceb input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xc5031b36 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xdc501588 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x21c9294b cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x52be064e cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfe94946c cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x484d035e cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6edb066e cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa1262ac4 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x88b45097 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc6272ae2 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0c5ce46d tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x1173e3d1 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x9ac1ccd0 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xa66b11f9 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x093b37d6 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0ae8b096 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x532d6606 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x614a8e64 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6cd08a6e wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7adf1630 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa110dd84 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa6525b6b wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba9112b6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc642b008 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdbfcad52 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf6e714ca wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0416daef ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x34edd98c ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4e3b54fd ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6adb5253 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x759745a8 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8cc127b2 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe2134af8 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe60af3e3 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf1d4ddbc ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1e941cb4 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2689a974 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2ecbab01 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2fbe90cd gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x44a1050b gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x55637f76 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5dd85ef3 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x672820b8 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x70a2e33a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7e8645f9 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa0b9b4fb gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xceb713dc gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xde911d25 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7029aa8 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xed6914fa gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf7999e1a gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfbdf94a9 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0226f9e4 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0a466cc0 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x35fa4484 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x383c4d17 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x623b3490 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8a95c71 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x060a9bde lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0a50d188 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3a14b2fc lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3bd96a9e lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x565e285c lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7e9d488f lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x874c93a0 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8e98a14a lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x92b6b853 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xad1a46ef lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb9da15d6 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1f67ef32 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x97676169 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xae524528 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcab2e192 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd193851d wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xded3c06a wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xee1f0d0d wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xefe746f0 wf_get_control +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x07e87a20 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4652afce mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x765dc7e4 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8aa77217 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8b967805 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa3f55cd7 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa8bea958 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa933682b mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb0494cbe chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc5a258bf mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd1359af1 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd9890d19 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf55f5e48 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00b74659 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2a1a7a99 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x374f45ea __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3a4dfef7 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x48991e9c __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f124797 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x614e860f __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x647af374 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6724de29 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6726a0c1 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68f1ea6d __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7114cfcc __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x78c57fa5 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7cb4bd6f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x816ebfe0 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x833b99dd __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8afe3e2b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x912566ef __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x92c55e92 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9c59320b __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa7004101 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf2376ac __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb3942afe __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4cffcbb __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb9c28744 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc0bd3171 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc773563c __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd81ad8c9 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe30b6b2a __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf6169c53 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcb52b5f __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x002ddce6 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1178c001 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x12a85d2c dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x134a33ba dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1cd3b1d9 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x38bb7ebf dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6c9bc11a dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8f476f13 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xabe72208 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x15dd5d99 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0d853b1d dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x262e90b4 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x800c6afc dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x877d7ed9 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb4dac405 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb85e8c03 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf9dcb509 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x209483b5 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x5d405f20 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4757e4a0 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x553a081f dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7354f763 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc504c4d1 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe62e9b0a dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe68671e9 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x37b8a47a dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x038134af saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4a02b5b5 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x559ae8ae saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x609f231f saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7e4b679a saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7fa127e9 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x889d055b saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8a9a2642 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x92671d17 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9c9e7aca saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1c1f691e saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4dbff9ba saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6aa49981 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x99a7b087 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc6ddab8d saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe7552a59 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf7eef9e5 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2a892f5f smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2c08cd7c sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4799cacd smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4c411d49 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x784a951e sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x83b43d72 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x86a1c8b6 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x86d17f9d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa176da9e smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa37b9544 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa52f18aa smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc7f23f21 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd7ecaf58 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe03ae542 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe37ffd6e smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xea18f297 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf0f5be5d sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x1d1eb1f6 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x01492fa9 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x0203a3fe tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x01f205b6 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x05b0d7e2 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x1abcddae media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x2dd5c39c media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x31fcfc8c media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x464ad416 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x63306289 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x72e6761b media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x773d2d6e media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x880c8f7c media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x8ac6aa68 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x9dfb85fc __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xad965341 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xc511175c __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xe30215cc media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xee5d6620 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xf771a85d media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xfd8d38a7 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x502aef54 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0383d1ef mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x14286e91 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x187c811d mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x272f3bfd mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x48084994 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4d9cab90 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x57ae4333 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5acf6302 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5de5cc7c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x60f4901d mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x622bc593 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9d10b7e9 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xab392910 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xafb97e48 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb01f74ef mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb30138b3 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe39c3a0d mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xec5f39a3 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf399594d mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1ac9ef0e saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x23fd8e81 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2e2d3825 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x49c5adbf saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4bdbd512 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4cf69a9e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x61250a99 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x833c1412 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x88ee5d63 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x950c3a41 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9ac53428 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb60e24ae saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbdef9f23 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbf29e043 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc2ceebb7 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xded6bb8b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe722afd8 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xec80309f saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf4c34fe0 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x03f78d13 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0bb27064 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0de38a75 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x13fb8a95 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x41628fc0 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7e907615 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb92dfe03 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x1e522eaa xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3a987ab7 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x420ef3d7 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x70fef0c4 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbdd96620 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbf6f9a6e xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf3e7d21c xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x2043dbb2 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x1ef334ab radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5e38cb42 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03dc6149 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0545e8f7 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2b5b19b3 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x373f3a4f rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3ab7c7f0 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4eead333 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5613a41b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5e4f5c01 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6c1f4ab6 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x73f7ae71 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x867d8fe7 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa3680e82 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8c3d59a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc12cc37c rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc60e2e9e rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd00ad385 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd8777b7d ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xddba8500 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf1ab3913 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xbc8c0fc8 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xdc3b3d2c microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x5a5a5909 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x5181e54f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xdb007ba1 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xfd298185 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0ba2678b tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xad643966 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x9cddcf58 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x1d447353 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xb29c1a51 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x10870c56 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x5b12b00f tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xa03f8f9e simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x03b82060 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2f5d1a88 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3eb405b7 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4a57d1b3 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4ec81e5a cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x50ae67da cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x59d76f52 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x67568939 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68de25a3 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x79ac23d4 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b539aad cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7f6627e5 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x99a3e8c5 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x99b19a97 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa6a4f5f8 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb70176ad cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc0c06141 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc21027f0 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc5a3cf7e cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff0c0bd8 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xf2805a8e mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xc8c9ed5e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1490a182 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x26a10f9f em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x35ada22a em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3701659f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3a9c03d7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3b7c9159 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4a784c9b em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4b00f5b4 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4c83bbd7 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6e3f01d2 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7861efb5 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fb09a3c em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x873f28c7 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xba812aad em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcf4f8d48 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd21196fe em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdfad5b5f em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xff5b408d em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x098e54ff tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x41504f06 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xf6ae9a77 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xff9ca2cd tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0949825e v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x1b427218 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2a7c16fd v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ee1f4af v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x48326966 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x75a43c9c v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x8098d449 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xa995939f v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x03f30c84 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0454d801 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0db14115 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17bb6abb v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x187f7c35 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x25b09dd8 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4a88a3e8 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5695063b v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5998f5b5 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6649b14f v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8947cdef v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89b15790 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8aaad7e9 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8d032ea2 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92d51095 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x988529bf v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa2cc65d7 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa4c96953 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb45a4886 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4eb30c5 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb7859551 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3043d12 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe8a93fda v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe976e7a2 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xee6404c7 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf004817d v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf5a6aaa2 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d936f31 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1262f689 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d909d22 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2661d2fb videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2a2957db videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a5d39f7 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4dbcdc49 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x50b17b5c __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x59955df3 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x59c5a54b videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x64770ab1 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6fc1986e videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x828bb9bd videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93b79cf1 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f3d8ecb videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaab5cce3 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb94c8434 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc37aab93 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3c306ed videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdfb78873 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe6b48e84 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe81f8f30 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeae5c7eb videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5445650 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x14227860 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x54b64b0e videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8655a206 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb61faf5b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x1f76ec84 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x554963f2 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xda6bd11f videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0dcaabbf vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x241269fa vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x27f35958 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x48625463 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5375cbba vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6045c2ac vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x729ff823 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x78bd2ce9 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9955142d vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99f1ab44 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa75e94ba vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab6603b1 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xadf516f0 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb173e772 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc282433a vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xce36691b vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed79ca56 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xffa77516 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x343e16dd vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x985a0384 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x8a8531f0 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xe51283da vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe45c0abc vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x01adf3a7 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0703753e vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x07071e24 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x103c0ae2 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1046916b vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x1372845c vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x14b2df53 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x17b74b6d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x17d8b84c vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2b5b5e0d vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x31d55710 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x378c5dc0 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3d803818 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4e578cb2 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x56a720f3 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x61dd42d9 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x670d2662 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6ff2ecd4 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7f3f9f14 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x92d0f4cd vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa4dd444f _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa9955587 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaa776440 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc02ea4a9 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc60ac8d7 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc9d64062 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd14ac0f4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd63c6d7c vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd7192801 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xebce93e8 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xeff19778 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xfc13ebfd vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x1f3e5374 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x085c1c98 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0c085316 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0c75b2f5 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x18ae3f18 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1dd8c846 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x21be79c0 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28d20b15 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31e3d76e __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x324af199 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x369336ab v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3740e82b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3887fc01 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3fcf083e v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44391f90 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x47dd12fd v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63332d82 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6686a4a3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a85f5d7 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x86f17898 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fa601e9 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98545b10 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98a0e67c v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c6be73c v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9e6bcf1c v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa21f41ee v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa7e80bc9 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xac23178b v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbb73d4f2 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc2b896d0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd8960d49 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xddcda896 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeae657cf v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeafc3adc v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf1cff5eb v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5956f8c __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5f9ea65 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x31172453 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x46293b39 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe431bf6b pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x08931c67 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x54b570aa da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x91fa5e31 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x982ca432 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x9d56a151 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe4df2237 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf7f8e935 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x16fbe94e kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5010f5e9 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7ebe2208 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcc9792a1 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd249d1e6 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xdc7c11d7 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf963b725 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfea7bdce kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x56c1b635 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc38c6313 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xfe103588 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5c30074a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8a23059b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9c0635ee lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xce8c3c27 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe46ae6a2 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xefa7fc43 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf21fa2d1 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1962cb62 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa2c59bc0 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xee254a91 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2e2f886b mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3292049e mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x650bdd4b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x91341d75 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc381a33d mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd18e5655 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1fe07696 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x430e46aa pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x49858276 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x668aa4b1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x74169853 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9d7a6882 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbc6dceb7 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbc7583f8 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcc3a843a pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xce65618b pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdb27f111 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0c08a35e pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xdbd783ab pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5582dbd8 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5b06ae47 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa470f38e pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xadeab33b pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe468eea0 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0182e104 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0c0f8c3d rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1613d6ac rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19ba35b6 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x338a2703 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3520fbcc rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4cbf854b rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5acf468e rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x630afc0b rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6fa29846 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x73e8695b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a24b09c rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a834f31 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x91c789a7 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa9e5a5d1 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaa5b0e41 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc3f7f551 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xca9bb564 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbb2182e rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcc6a05e6 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd5f0addb rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf07054cc rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf2f6e9e9 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf4d00a39 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x08512799 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x19b5d871 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2743c7dd rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5b5f1bd9 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5fd5e5f0 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9cc752be rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa2fff844 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb64ef9d9 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbc962004 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe38c0a57 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe7268430 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe8f4fdbf rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xec9f3fdd rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x055fd0e8 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x06d883ab si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x18d25249 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2923abc7 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2da2004e devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x31ede813 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b9476e8 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x41c9cc55 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46ed49a0 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4766b755 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b8b2968 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4dbf728a si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5035cff7 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x59cff5cb si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x604b8586 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x673ba07d si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7bb72cdb si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x800c425a si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x861c0878 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x863032c5 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9f3e0a59 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xac2bebf1 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8118ff1 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba513484 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4afe5c1 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc99c66b4 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcede01ab si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd381d3ef si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd9f31989 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe210fc6b si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xea76df9d si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec329b8f si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd19e8c8 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd81ccbd si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0d67b6cf sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2bb8210a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x581422a2 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xb46b37a4 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf5808e4a sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x6b3d6b5c am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xab030221 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe36312d0 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf2d0c294 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x0cf703b4 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x548f2032 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x5a51dab2 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x84bd804b tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xd04faa45 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x03cccfaa cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x07dfd158 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x21a3ab48 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9bb771f6 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x34f34a0f enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x75c6a66f enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x777289e1 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x78fdf0e4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x86607a93 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x93253409 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa55f4c51 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xeee348d0 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01dedf43 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0ef0071e lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x255aadc8 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x480f34f1 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7b14a214 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xab6aea96 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xca2ebfa0 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcb909a20 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x98206a1e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xee4aba47 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0561d7d9 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x062d7b94 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0d84fa71 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2d2fbf0f sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x508fcd64 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5b1454e9 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8be5561c sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8dfc4918 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x984e4b9d sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaeb0afc3 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb534cedf sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbc64103b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbe3752a9 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe0571dc6 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3364a0a2 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x44619e39 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x475efe35 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4cd4138e sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4d871f45 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x545c504d sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa30c14f1 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb92c5487 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc91a193f sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5ae6f658 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x65cfd3b0 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x98d1f626 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x04090a94 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7a5b4144 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x89a28ec2 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xeb9c27c3 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x54dcda86 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xb4b4c2e6 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc01dbd91 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f00fdbe mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15fc835f mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1b09d64d __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f53db74 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2768db0c mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4cb785f8 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51209450 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53ad1b76 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x567d9f9d put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x574e9087 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59d7a5b1 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5d2776f0 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e97a257 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x67322c15 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x69bbe12f mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6b891c91 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7379894d mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78eb5782 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7fa04d21 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8593b24d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x883d1939 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e93b7ba mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x957d424f mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x99768c88 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa501d533 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbba35dfb mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbee939ee mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc24ccbae mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb576b56 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc96e1ee register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd6e5f61 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd80d48d0 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9f228ff mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc00c258 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdebe87dd unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe5f2b26b __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed90851d get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xedfb2448 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef3a4445 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0e27034 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf537438a kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd00d619 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8e18b588 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9aa60494 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9ab1d78e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb72fcb9a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc3453299 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x07a1d444 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x93079f36 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xf300aaca sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x302020be onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x79e54476 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xdd231277 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e5493c8 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1ebef0f7 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x270bcad8 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x308394c0 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x53260fc5 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5dd6f90e ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x609ef50c ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x83ec7b9b ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x96af594f ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa4305c5e ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xac354d72 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc062ad2e ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd432af7e ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xea8f9321 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x6a6c4235 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xe26c3c44 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x14f1c19d register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x779f146d unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8a0e56e8 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x982d6a28 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb3e00637 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbf252cd4 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x19f28df2 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x39ef04bc can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x472b67de free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4f4128ed alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x507d288b can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6ce7e39f alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x72d98539 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x837110a5 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a8e4e80 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8c05bb67 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x91f2d30c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x95df772e alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa592d051 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc1d8f115 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdadee78f can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdb1705cf close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe0d6c7aa devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf1e2f4b3 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7889449b unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x90630018 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xebee1934 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xee796e72 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x860d4998 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8ad0f6ae free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd78a4e4d register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xebcf5045 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x95553029 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x99d402c0 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0191525e mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03fbb61d mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x047412bc mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04817149 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x059c8cf8 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06a78adf mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0765dd0b mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b24bd59 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b875930 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10627297 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12e10942 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13bd2a88 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14a038d9 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15a1a9db mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17f26bb6 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ca76773 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f459b0c mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2148e745 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21c9bfb9 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2366f043 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x269bcdb9 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27a55dc0 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27dd31ce mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x281aca04 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28972be5 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28deb8e1 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c1e2165 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cfb8298 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d686ffe mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31bc9e4d mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e53fa1 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3542e319 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35f08b6b mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x372798bb mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c893325 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fb87119 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41e800ee mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x429bec25 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4301ee06 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x444d5316 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44659292 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a736aa1 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bd46873 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ebd20b6 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x506d7823 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52f2ddf4 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x532c686d mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x568dc16e mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bb30a83 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6191dc99 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x655d3057 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x665aded0 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68a39afb mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69526e1e mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a538f25 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c54de23 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cd8999f mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f43f6c4 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x765957c3 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c06c09 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c41772 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78e44184 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x791f26c0 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ac722cf mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bdc7163 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bdefdfd mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c578367 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e30f663 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8591ca34 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8be3b1ec mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c601297 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8eef2746 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f531d07 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x911dd022 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96102e71 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b0d99ff mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f757cdc mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0af4927 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5569729 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa56eb2e1 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5ce5552 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa86787f9 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaabadd5a mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab3c9c37 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaba3213e mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabe4088f mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb08099b9 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb15c504d mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1714e15 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb18ac907 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1b92cbc mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6c1764b mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb79abb51 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb81041f7 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbca7f3e9 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdab401d mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf19545c __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbff77654 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc633f52e mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7381321 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8fd749a mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb0e964f mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb33ed1a mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd6c08d6 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfbe3d0c mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd08892ed mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd304bf35 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5b8849d mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb847181 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1d22546 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4b4500b mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe637c5dc mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe74b9c3f mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec96bb94 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef9fb5df __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefed98f5 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1ca420b mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4e6f088 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf593bf05 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf74315a6 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf82ec302 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa40d938 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc08fc1f mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc4a2294 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ec565aa mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f55ed71 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x114c59ad mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18361908 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bd9d14e mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cb538de mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fdb0509 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21a4ffc7 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23304bd7 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24aa469e mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25e6b7ae mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b38774d mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35fb96a4 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36a10359 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x388af2e6 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40e1229e mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x422061f2 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b856ce3 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x585058fb mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cfba037 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5dea4c61 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60bcc6a5 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64d58e77 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67834da4 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69a5673a mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f1ceb27 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8315005b mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88d561c6 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f54322b mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96ee0507 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9efffc85 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa49108a1 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa494715d mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xabff0511 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb05be85c mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb851e9d9 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfc4f190 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc223597c mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6c6eca5 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc78c68cb mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce92e857 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda26bf18 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde162070 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe06343cf mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0ea8b14 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf459771c mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x368d3d71 regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xb7de5363 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd4ab3625 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x66255e5b stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x759aade7 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x784e3be6 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x80f3b450 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x49be5207 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4ef58ca6 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xbddcac47 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd9ffaf85 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2540ee36 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3451f23d cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x551e6f6d cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5c2fa55f cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x78cba15e cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7bcb7cc7 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x899119eb cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8db8b842 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8f535db4 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcd251292 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xce8225d9 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd8182cc9 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xdc720e66 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe78f6dfe cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfa6cf9e8 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/geneve 0xad0c085f geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/geneve 0xcbf5fead geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5de062e5 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x64990651 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x72250987 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe05f1ea8 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x89dac7ee macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x02fda24c bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0673bbd2 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3656aaa4 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5f3037de bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x69574b1b bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x785b9a1d bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x85900692 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9470baad bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9cc8215a bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe2bae718 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x03b62532 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0ccfcdce usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4b50ea6a usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9adb7293 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xffc67476 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x32967867 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x571a4825 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x57e4a091 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5fb98a95 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7029af61 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa20eb096 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdd8dbde2 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf857b809 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xff34340f cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2f36051e rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5c7d0529 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9eeb176e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc77b46bf rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe3b1e72d rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe9437e6a rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x01667e54 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0724cba1 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c24bf17 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x26a00ae0 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x28cc7317 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b8ff5d9 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45fc1553 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4ef4f4ac usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51525c9b usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x61755668 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67c08922 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6bba296b usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6ed9bf03 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e8e0b53 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x82c1f267 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b3b41fd usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8bce2cdf usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f2f047b usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9264cf27 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9485d18e usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99e40d83 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b9016ed usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab16ccf3 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xacb5d0fc usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad00d974 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbff3e4dd usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc690c090 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcaf8e44a usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd1e8782a usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2319160 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb81507a usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfbaa5c5c usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x11d48307 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x86728614 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0d90de8b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x158be7aa i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1eca4d83 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x260c3b92 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2b034c1f i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5012ce74 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6ae67d1e i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8aef1fb2 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9ae324df i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xad5aa965 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xde698d13 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeb334ea7 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeca198be i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf66a48d6 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf8be2a98 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfcc67940 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x073d238d cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x191dc072 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5a1c10bf cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x779065f4 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x25b12477 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x44b34d72 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x90c36647 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9c5a2f3d il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb9195dda il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd1fbf9ed il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002b2e74 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x00765ffa __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ab13431 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f48dcb7 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1aec7c2f iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x24fe15e2 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x261cdc85 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x478d8856 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4b9ef7fc iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4bba764e iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5085ac75 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x515614ec __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x52c4066a iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x621d745b __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x722b47e8 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa7f6639e __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb6a5fcd8 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb77a0c47 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbc62684c iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc1b2a26e iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4576065 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca855e51 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcc11583c iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd8d4d49 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d3442b iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe7e8d317 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xea86292b iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf4a302f0 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5aea4a7 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0cad126f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2244b803 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x394ba8b2 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54b5877f lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x74a91854 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x770b2164 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x78b80d3d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8e6f429b lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x92ed901b lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x945f89bb lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x95bb6706 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9906160f __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb3d7aec6 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbfd24e2e lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe3453a1b lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe6ba683e lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x019deaf0 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x028269d2 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x158073b1 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3b3fa295 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x88e5b318 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x916c02b6 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xeb471e93 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf58ffa44 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0be7343f mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x11ee589f mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1dba3ed5 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2a3ed27b mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2b8d9772 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2cffa31c mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3f218c2e mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x448a08d5 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x53b2e32e mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x57847381 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6bd01978 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6ce4eb6a mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaaf88c5d mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbdaa38f7 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc003bee2 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdb06e32c mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe7e3a8fc mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xec0c4c87 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf9b4bcc7 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0607a06f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x225a5050 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2bf3d3c5 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2f8ea0d2 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x52efd577 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x59fc0095 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f2d0797 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc29857b3 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd5d468fe p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2b84d1b6 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x63b415fd dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa088e5e1 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc3221342 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x05281ebc rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x07b9fef5 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0a9e7ac1 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x16b7e5b7 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x17b56554 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1f4da007 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x20ec0490 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x21c16dca rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x23992e50 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3abec22e rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x400aed31 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4d968543 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5351c60e rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x64b4b0e5 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x66f493ef rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6ce24541 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7fd1204f rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x888f8ad9 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8d3d0d26 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa8b9f8b3 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb7ef3cb5 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbc2bab32 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcfa1ae3a rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd18b05ab rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xeaae90fc rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf6e2a52e rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf9670e71 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02322684 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x03ae4eab rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x171c3230 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x29caef06 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3972bd3e rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3feeb363 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x411d271a rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x448d8817 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e1c46e6 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x55904053 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6ef83981 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6facd88f rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6fdfa9ca rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x790d5747 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7ddc2ace rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x843243c3 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf229f49c rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x05c74a44 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9870cc85 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xaf595c8c rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf9cc41d7 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0c91fa48 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11d25b99 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1d14fc3a rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2944dfef rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x30ccfa42 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31110628 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34616cef rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3596bc8e rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4003c7c5 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x449d2220 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a992006 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50e2bcb9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x52078a07 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5220306c rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x572ffcfa rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b477881 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x64811ad7 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x69235788 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x76f3ad28 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7ad7d9fe rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x89f5c66a rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e99a323 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x936ede3d rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x988053b4 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98d23446 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d32074a rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa552cb30 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb974b880 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xccd3fe4c rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcebb7060 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd60779e4 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdec1a6e8 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe21ecb2f rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe47ff14f rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf61e97c9 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6c0f643 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8a930a9 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb75657d rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x01c0f7a6 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x02456907 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1e072eb6 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x28340985 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x501d9706 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x56a38453 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x647e3c70 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6e4af3be rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6fb895c2 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x76bb25ee rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x89399f9a rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x89ed1ee6 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb272416e rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x01250a1e rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x08a6eeb3 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1029655e rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x119f48db rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13e0b904 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x163be8b0 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24295f86 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2eb548ad rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3660ff90 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x37b1f01c rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39c2ec80 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a3fc224 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e210644 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x406d4686 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42263520 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44a9891e rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49a680e8 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c445514 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5074cce3 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5102cdad rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5153d733 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53a45486 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5743919a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60af249a rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x612fb0c9 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ca39100 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x71bb6978 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72e57ef2 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75cce3c4 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x901445c5 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0528714 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0ee6043 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa31e0719 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa51ac44b rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfb2ecca rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6ede4f7 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc7a9656d rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc8a91a9b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcdc0b84b rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce0a5921 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf993b2a rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd667b376 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf242a3a rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5817ae4 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf8dac6d5 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfca3f0c0 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x25ef91d3 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x61244166 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x71174eac rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd0df9107 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf755ad2e rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x460a2e4b rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa794c691 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc6041992 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc7f03b64 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x22d70835 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2bf73dd5 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4be24f63 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x50507fd8 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5a7ee57e rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5b4995a3 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5d77c2f9 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6b502879 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x833d066f rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x878b672e rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9d9579c7 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa210f7f4 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaa841af3 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc9830bfa rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcbcd8a00 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe7e11983 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x33665822 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x4c660678 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb903fce2 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04748b78 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0da4444c wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22aa160e wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x241adaa3 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27c17c62 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a352543 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a729c3a wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x315061f4 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ff09585 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x45463429 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4878f0f0 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49644990 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4fd42bf7 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5cf5b527 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e1f2ced wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x692c2e59 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x69a8ad75 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7245dbee wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76290f18 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77357068 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x858a15f8 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b036862 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d3e74a8 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ded22d5 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e2103db wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9e1d758a wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3915785 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa6e4bde6 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9c8797f wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb13b97b7 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc2863341 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca79930e wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcf7ecced wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0cd1c37 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0f36a74 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2745081 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4571e43 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd70c17ff wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd9b9c9c0 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdbf17dcf wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfaa5b63 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe60281bd wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf39c128b wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbdb7dc9 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x5321be72 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x58667295 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb3858129 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe0f1359c nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x053ab58b st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x25bd1c99 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x681806aa st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa6f56f07 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa91cd3c3 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd743c321 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdce976c1 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe686eaed st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x49716dd2 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x57a7bba9 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xe616b654 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x1ba7c354 of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x2d18721a devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x651fe998 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xb23100f9 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xd791c2da devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xf2ccb670 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xfe4049ea nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xfebf461d nvmem_register +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x124baaf5 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x953eb77d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc8afdadf pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x28a24d9d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x683fb1b8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x83e86a2d mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8bb13996 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9cb31952 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x662fc39c wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7b17cffa wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7e1edc9a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xad70fd81 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdcc60281 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe147e293 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xdfcb7820 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03ee7654 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0732fb29 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b04cf68 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bf3ad82 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0dfb94c0 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ee8efa4 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x12510d5c cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16ed3df6 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x183c7499 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1fe48755 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2004409a cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b3900ef cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f5958e6 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44d0b95f cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b2ad567 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f1bf841 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5fdc2513 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6321c465 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65484a04 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66358e64 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b4f0724 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f450a33 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85a69af2 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c5938cd cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fc8cd76 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa359f6bd cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb69e3269 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba7a15ce cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbab3c5a1 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc4f6d855 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca13f490 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd313a360 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd445f750 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd497a83a cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4ecad5e cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd54fd020 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5a2e9ed cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd689fa05 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd820f411 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb5d731f cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde03aaa4 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe10148ff cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb13fff8 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf073916f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf491802c cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa223d65 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x08391a12 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0da947e0 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0dbc3273 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x12fc6faa fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x171018f0 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c2370f8 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2830c03d fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31b60d79 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x447a56c2 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4db1c884 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5542e1af fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6709a4cb fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8f03b049 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa688c9c8 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd2682cd9 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe85f1b3a fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x321d519c iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x780ec19b iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x88815952 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x89f87cfd iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd25ea005 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xfd00d0bc iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x040d5700 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x05edca64 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x061bd67e iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08fc0ce0 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0c3de8fd iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1130e5d3 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1259b745 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1950b89a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20e6a126 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25719b8f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27796aa9 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29cf532b __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x334a6832 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b41ccb2 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e99900c iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42e01d73 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4cdbb616 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x513b912b iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51444e90 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64308e1b iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69cd7672 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x75d2b8d6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7951d5f2 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81c084c9 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x84e13e37 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8fb01245 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9250b2fd iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94a5290a __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b06be47 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa013d95a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa234a964 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa24596ed iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba32cd9f iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc719aa50 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4b190b8 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd506edc5 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf690756 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef7e368c iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf99d7034 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe1faed4 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe97cda4 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff458a8f iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0bf4e1bf iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x10452224 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1a610a92 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6970cc20 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b3f8504 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6ffe5a1f iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x87538f80 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x91ac6928 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x968b1c85 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9de2e627 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa417d901 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb5db3602 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd1f0b068 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe46ae6c6 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf01d7f93 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3c9fb05 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfbd4120b iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x089f07df sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12840c61 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2224e57f sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x278c8d32 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f76cdf0 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x373ed175 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x49f83930 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57d3a36f sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x681b2990 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6a5685c5 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7e34005b sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8282bbad sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x873b32c5 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa093ba9b sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3e4846e sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3efa866 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa76cc39f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xacf1a7aa sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc3db8ae sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc733a4ec sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc786f26f sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb8f6315 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2f75bab sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf0f412c2 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x024f5bc8 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02ea9e71 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x08f0c7e4 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0afa7951 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ccdb6ca iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x149ac6a8 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17712009 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f90dd0e iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2089fbfb iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24044263 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x285e4bd8 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2e4d58a4 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a6c1195 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a72328b iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3b6b74f0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x470ae789 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f11caa5 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53e4915a iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55ad65f8 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6785ed07 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75ac2f85 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7963ed7a iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84b3f1f2 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87239834 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e45e9b7 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x90e85f06 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x961df1f5 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa2b7b312 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaabadf96 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xad7187ef iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb6756e04 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb68ea62a iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba6cafd1 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc207e08e iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc1dcc81 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe79d1c49 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xebbbed17 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0b8e442 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2578a3f iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf439df45 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x5e059985 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x63ca75b2 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7a9c8917 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xae83823c sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x23d26a7e spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x388528de srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x43714a5f srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x627c291f srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x72d3fd94 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8936f9bb srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfd566aba srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x431f1c95 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5ca90561 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6b654c40 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x71f23055 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb0b39b4e ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xefc23924 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf2c8fd6f ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x095e7338 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x13a1e4b1 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2aeb8435 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x6fc3fe46 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x89519305 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8c99b54f ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe5c121f2 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4a2ac144 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x673cfd41 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa34a8049 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc225a600 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf24d5537 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x87ae34aa dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa172c752 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xab9cebb3 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xeda4c950 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0b2ca1ff __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x24ba77f2 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2e793ac5 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x389ca1e3 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x46d545e5 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x61bee3a5 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x61eccc2f spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x62a3591a spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x68888e3d spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x693e1140 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6ba9a2d7 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x70d252ed spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x73d2568a spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc9e86193 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd647db4a spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xddec5694 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xde50fdb0 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe8ac3a72 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xfa908d8b ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x017f0b38 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0305abfa comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0551514e comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0870426d comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08b203d3 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0acaaee3 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b677b31 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1791ffe5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28d106f2 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2a4094fa comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c81bae4 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ee7d2ee comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f7236f5 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3b0652e0 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3cc06f7c __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x41358912 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47353e76 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b1b8c4c comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5bcd09c0 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e147d3e comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a96b24b comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7d9a3544 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7f9a2e9b comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x86fbc3af comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f82357f comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95a73fd6 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9630ab1a comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9a00ae9e comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7afed74 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4372cc2 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd202b749 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6a6270d comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0d78090 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe3808d89 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe891d022 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1a8bc7a4 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x23308676 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x38457b78 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x758b7bda comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd787d3cf comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe64daf97 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf795cca5 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfa59ae3e comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x014ebbdc comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x21f70105 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2912ed8d comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x6399a0e2 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x8a2227f5 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xec6728ae comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf962de70 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x01ab90a7 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x0639778f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x200777b3 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x68bd3818 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcbc4cbac comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe3c2efab comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x09c798d1 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xc4b9df24 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xe1682950 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x1763da53 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0415dd74 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1fe78ee4 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x214c3548 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x285b901a comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x29bb23ff comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x52957418 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9474dbd2 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa5b56995 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa94f2b7e comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbc3bd6bc comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc7820e0f comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf0e63e97 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfe7fd1cf comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x9677d16f subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x98720d83 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xcefabffb subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0ab7ffd8 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x124ce328 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x3789f086 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x7040990c comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa228e27e comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x8ba9d986 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x09e319da mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x233d8e26 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x234db76a mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x27d40943 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3a6fe433 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3df3e53f mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x56a78ce7 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5823dc81 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a6d7ed2 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a9425e0 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x72ece0a8 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x73058649 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x860b1eea mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x953ee60c mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbabf78eb mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc454cfef mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcb31a378 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd4ea6dab mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe57218f0 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe85e0baa mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf6c763c6 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x6cb39e7c labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xaec0e794 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x29dda7a2 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x40c31cfd labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x7e031439 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xe0b3e736 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xe792e53d labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0141983e ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0469d2f9 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x150d959a ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2b53501e ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4214cd1c ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5c0dec6a ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x79cd2231 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa38306ae ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x16891fab ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x448202fc ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5ded4255 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb4dac0c0 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdf82cd58 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xef0b0c54 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x13a9a1c9 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x508beaad comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5df6445b comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x69ab938f comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb1883ece comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbcfcca8f comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdf9c4811 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x67bf467e adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x1c5db659 most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x36811ec7 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x370cee20 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x73798343 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x8667a24e most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xb435258c channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xc8e09ce6 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd599c15e most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xedb79a5e most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf12a011f most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf1c7a7c7 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xf2e2601f most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x19530a53 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x228836c8 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x36026268 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3fa557b8 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x60f985b8 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x68a7287a spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x83e7d6ef spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9c167dfd spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfc2ea9c0 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfea42586 synth_add +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x1bdb0fff __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x51d72dc5 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5bc52f88 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1cb35a45 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xeb3b1799 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x508a55a5 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xcf4ef417 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x53c2a1b4 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x63ed1801 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x9342609b imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0fd3dce6 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4f1460e4 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x647f2c01 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc378db20 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc409ee12 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc8b21f06 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x01bd729e gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x202cd028 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x24fea8ee gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x585d0d51 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6f5e33b6 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6fb96663 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7f28357b gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x85e68c40 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8a1978f4 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9add1052 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa537e488 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbc23e794 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd71f00a1 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xda7009fd gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfc4afc41 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x2c7afbd6 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x5498fa28 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x692041fb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xfb39f842 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x25f3f340 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x47d3311f ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x9c087121 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x08d3f18e fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0b40cd9e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0c3bcc52 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x26d12d5b fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x355b6161 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3626dcf0 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3ad3e07f fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4b27692f fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4c7d3a10 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56985dd2 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5bc8cd85 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9ad453cf fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9f4be4ca fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc1951a84 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd01b7ac8 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1d4085df rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x309c7f1c rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x362cbb70 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x439dfeb5 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x495e8152 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x54f2d8c8 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5ec723de rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x61c48e05 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7ed43805 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x89514a4f rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb4f3fc03 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbcfbeb56 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd043fc26 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdfcb9953 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfd9d9015 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x00a191b9 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x04dcff16 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x07588a6c usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x112f4fb3 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x17730a95 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1849ae6a usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a3d21df usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1c071e45 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2babc990 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4a30cbc2 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b231ccf usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5310470e usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x53e07fde usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7022295b usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x73d76e2c unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75768121 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8dd00fa8 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f856728 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x939fdfec usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96e7b3d1 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9a460874 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbb06c17e usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbb40da31 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbcb77689 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc3b626c0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcfffa36f usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe3562a70 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe3a52516 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe6ac0ee8 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xec321ccc usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xed276d18 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xed77a221 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x09a724ab usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d5d3813 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x115be252 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4eaae978 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5c5a2423 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7dcca85f gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9e8b4515 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9ea6783b usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9fe7b1a2 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc00a0196 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe0f924ac usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe1ac8da3 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf4008735 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xff340b87 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x0254d5db ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xe0aed539 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x04cff03c usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2d588eff usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x512b42b4 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7cbf429b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8ff46e4d usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaef0bae5 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd634dc76 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdd874a04 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xea175bb6 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xc8568af9 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x494f1e8c isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x34b455ab usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1766ddd9 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1fb134f7 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2375d40c usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x278b6d8c usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3f898499 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x41a406ba usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x484d8282 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x52e79c12 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x55d59842 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x570f4eb1 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5c0f7caa usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f5f667a usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x72cc4e52 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x917f5e51 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa30f5c73 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdcd2d585 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe23d658c usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe636067f usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9f439f8 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb6c562e usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfd1b753e usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0b3a85da usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x105ff964 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x146f08d2 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16d51798 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3b400a2d usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5d31d582 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x613f787e usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b8ba108 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7fffdde3 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81a6e05b usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x857d784e usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8701d01f usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8707ebea usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b5d22a4 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x97dded4d usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa0fa62e8 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa7254d59 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa74b834f usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xadd99087 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc7f13a8 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd5a0a763 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xddbd6476 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfcee1c3b usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfd5d83bd usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x05cd3ab5 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1021d40e usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2c8beada usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3ec87e75 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5e6bea2e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x66615ffe usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6d44b4f9 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7512a311 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x83a8e4ed usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9b654b22 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xad02be63 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcbf0fedb usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x05c36c47 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x072487ba wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x66f85934 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6c0e0700 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7bbd5773 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xae9c0697 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb75eea87 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1571268f wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3966f7b8 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3d53ad2e wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x420b2450 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x52c8016d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x71826d8a wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7fc26da2 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9739bbcf wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9ada74af wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca3b0d8e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcadd9a22 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf3363c93 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf8ccf331 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfd2f3f77 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x018d1109 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xe96b28db i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xedd15a99 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x014ad9ca umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0e446e94 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1952dc77 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x32224b59 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8259e0b0 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x90017fb6 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa7c8d964 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb887d1f2 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x097092c9 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0eeb8a04 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x18e60960 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b3d43a6 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1e0381d8 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x268f115e uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3711dfac uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3806b249 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x38240840 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x439efb97 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d75e985 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x54d9e483 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x630e2850 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6607b1af uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x673fc962 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a866572 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6cf856b7 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x72429ccf uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7462fad7 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x857c88b4 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x868c6a9e uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87d9d50e uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9670e27a uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97a578a4 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a6a4276 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1bce84b uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xacdedc50 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xade70c6e uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb34e13a2 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbe0ba415 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc279e620 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc0546f8 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd993950 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe71bce75 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeec1fb50 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf50ac49b uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf7932b36 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x844b2e55 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x07f20f9c vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x149d6371 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1d02ce23 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1ec4cf65 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x29c10f9a vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2a2bbbcb vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49884c09 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x54e28c82 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x57126f9a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x62f686d6 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x65dfd7f1 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6a2b248a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8191abb7 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x926c0193 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9ac60063 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1dc8e30 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xae80a3f9 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1894d61 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2acb85b vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb31e3d45 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb350c630 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xba01f063 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcb0b1349 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd053f86c vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdffc7ab7 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xed8c6c0c vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf3145c66 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf3c0be32 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf6f47ff2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0ecda97b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x29252cf6 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5c74c4cb ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9cabcc95 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcc92cc92 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf01bf8ac ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf0aa5b50 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4dc88c0f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x51c3a86e auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x58d9953a auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5fb2982e auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x618dd22c auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x68e0b742 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6ba5995c auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb45928cc auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbbf22cff auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd42a0366 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x6ee68775 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x79387702 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x81af78b8 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x8cb75cbd sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xd4bccc9f sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2889d68c w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a5f77a3 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x54e5744b w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x68598b7d w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6ad0641f w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7020e432 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9c61793b w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xafd5ab39 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd68b89be w1_write_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4bd6c8ad dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xe35856fc dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf3cdc08a dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x86ff4379 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x90175917 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x945a2deb nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb6e0f928 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xba373696 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbf6ce70a nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xce52843a nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06658cfd nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07c642b2 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x097fb7b4 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c9b68ff nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10de0e02 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11553ace nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16cf0747 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16e9df41 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1754d14e nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19f6141d nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ca2b428 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dfdf8c3 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f341673 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2285322e nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2646a397 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27079bfa nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x280dc0c5 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x291bccf5 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ca1448c put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x317cc541 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32a9a0b4 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x359bd1e6 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36c31cad nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x395b235d nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a5048ce nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a70389d nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3aae96af nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ccec3be nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40ad3866 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x440df41a nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44a29b5f nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4795922d nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x484a80d9 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b235cb1 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f979e50 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50cd7d0f nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57017816 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d0d07b5 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f09638c nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fc7c536 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6382fe2f nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6480d1f9 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65a3407e nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66bc174c nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68d81a6a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69b21a68 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a8b4893 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ad84b2b nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6eb204a2 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72f4c691 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x731744f6 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73763a76 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x748b4710 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x754ec89a nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75801910 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x763194c8 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78b06ca4 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b0bbcf6 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c58180b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e20e9a9 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7efeb686 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f25a2b6 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81ba7e50 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82987eaa nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82f206d0 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x863896ed nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88d4cd20 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b349eee nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c29dba6 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f7d54f2 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9537d0e8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95792bda nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9df24960 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fc31e26 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1629681 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1d6ac15 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa41307aa nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad828b20 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf3414c7 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb08e9411 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1084cc5 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb123bcf0 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3f27cb4 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4d45694 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4e17d99 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5885c6c get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5ad8d43 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6891f64 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7a499b0 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf4ab7c8 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc335e788 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc64ef0f2 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca3a6946 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd6042da nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfa7a797 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd07cdc65 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd097796c nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd28f0aca nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd33fa188 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd47370f9 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd76c49f5 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8328ea9 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd90c9910 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd956c7ea nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd98a6b4f nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb302621 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdff7e962 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1a0330c nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2c6663d nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe36a2c60 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe522864e nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6a9f041 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6c68cf5 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7182896 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe72d41dc nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7e1f769 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8408e71 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeefec53a nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3963061 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4cf7cc2 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf510fed8 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5136bc7 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7f556e2 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8b98138 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa242cc8 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xd6a35e07 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x038b3b56 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f82cd88 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a9c883c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ec99bce nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24d5d20c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2548e205 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ae20948 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f176db5 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37999254 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ac1e222 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x406d2c18 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43fe063c pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48cddcb6 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e1b6490 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x516318b2 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5176fbef nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54e640f4 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5540aad0 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x55ce4a80 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x591a9185 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5b9fd2ca pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5edd7f84 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65f58bf1 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b0d349c pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c062676 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x70c463bf nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x72e1d38d nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7505400a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x82106301 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ebc0af nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8868b86c pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89acdf22 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8c81705d nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x972f4413 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9730a3df pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f9e5be1 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa498c1c4 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab986ad0 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaff50652 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb227bdf2 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb253eb39 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb26d6de2 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc7b0638 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1c56019 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9ae2e8e nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccde9d64 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2ec7c46 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd573459e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd576bffd __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5e4e113 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd749a118 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd945d4de pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4afbdf8 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6f55c38 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebacc229 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xecf915b3 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2823b86 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4436d47 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4629e43 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5aedf75 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7a7b517 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8e0f4727 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xbb8ffb78 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xbc33bb92 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3b66fee8 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x635c3afe nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0f633b51 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x27ce5bad o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x497697fa o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6b0a9a6a o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x739f6b2f o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7cf1c41a o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe72bca2d o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x05e64849 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1c471740 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x53564ebf dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6a037473 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa5be15d1 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe8d71b02 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0ce3b6f6 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5598e94e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdb249636 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x52d1178a _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xa630d036 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xcc90285b _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x7fe95394 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xfed80c06 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57861324 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x57d39367 base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x882ce5fc base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x9e0112d0 base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xaedfbb15 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xc8fca8a6 base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xd11741a1 base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xe3d900b5 base_old_false_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x1213a895 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x9a680138 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0xa030125b garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe0c96a89 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xec2d5b66 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xecd9a19a garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xf0e4bfee garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xf95834ef garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x10678887 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x2581e020 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x273ff0d5 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x43f15639 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x899b69d7 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa98dfdac mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x14edf4d4 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x66a67701 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7616abf6 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc602d8d5 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xd6b55d48 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x068b11b3 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2a46f42a l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x37fbe7fd l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3b84eab8 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8cb5618a l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8e962734 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbe6b7f17 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd318d2f1 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x00703558 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x177e4b1f br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1dfe4b97 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa1d76664 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa9e3a28a br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc761c474 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdf1ba729 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfe853310 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x500f93ae nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xe873acbf nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03711472 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27f3f7ae dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29b48c14 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b03a47f dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3dacc92a dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42f7adc3 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4370f7f9 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4618da2c dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x481763ef dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a2a6c3d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5da70982 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64b3c504 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64d459ee dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73f8b81d dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fa35758 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87ebe2ec dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8a453358 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92dbe512 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x95c85742 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a46bf02 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9fb800bf dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa7c96805 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9e63fbf dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xddae5b02 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1c8d8a6 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe37f7223 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe64e9b6f dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe91fb663 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xee0dae62 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeef87722 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf543e00d dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf844ca6b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfac920f6 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6af35d93 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa7a1174c dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc8c8a3be dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd20eb9c3 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf1e52a43 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf2c69c8b dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x71a6f4e0 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x7eb0e240 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc6b14f75 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xee357c96 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6116d34b gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x8dc452df gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3d6d6d38 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x58e5cb83 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x78c30dc9 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa1b96deb inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf2add362 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfea913a3 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xedf08540 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0049d180 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x00f5e9d1 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x05eb75aa ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0bb216b4 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2a7f7a85 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x334c1cad ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x34ed4dd5 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x60dcf069 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6e8dd57e ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x73e7cf04 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7920969e ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7fae82ba ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x902967fc ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9082c12a ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x15ab781b arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x390fb700 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xa5ef3ef0 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x22f5277d nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6b953612 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb8f70686 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xba0d66bb nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xfb76524a nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd6785313 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x2a25ec05 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3faee2be nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x614c02fa nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc77e2fb5 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xdf9b1800 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x5c4abe73 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1c88ca2f tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x22aa3702 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x376d0538 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x697dcb0d tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf9d97a85 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x1e4bb7c3 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x259f4fad udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x3d720bb9 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x79fd580d udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1ec990da ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2b0a1e70 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x31deff32 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x354760f4 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x51957c1b ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xaab14190 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xcb3a7427 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x6f4e5455 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x739e4fd0 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x6e3fc5ff ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x1bfaabf9 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x2251f535 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x2c6b2145 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2c9451dd nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x94be5219 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa2a4254e nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xd59a4096 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xff48ac3c nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x92bc0643 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1f2d004b nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x48c9a463 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x48d5a662 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x5d62e2d8 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf21693e5 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x76e1cda3 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x17ccfa99 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1a6cef0f l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3b1310a1 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4b1af3dd l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x62d0780a l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6eafe20a l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x78252846 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9693555d l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbdfdb64a l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc5c0c362 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdedd0097 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe2382b5a l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe602b57d l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf1e3d683 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf665f8bf l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf94759c3 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x8d098eed l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x02b12b9c ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0ca0c813 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2c1cd9f5 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x626921b0 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6932f8d0 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6d07f7d3 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7c04fa92 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d9d2841 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x848deab3 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8511844c ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb15d4fb9 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbeda0bea ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcb024d29 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcb370b2d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf20b6037 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x23c9e9c7 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x374fcd13 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x43f09350 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7689e7de mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x099482fe ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3a4ab640 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x54407794 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6a9130d3 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7d43e4bd ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x963f6e35 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x96d00a19 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb8357d0d ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb9ef8974 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc5708413 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc5e6802e ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce6c423e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd82e540 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdfe78fb1 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xee842a3f ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xefe6f19f ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7306a1bb ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf4726e76 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfb499592 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfddb7268 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x052ade79 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c9cc458 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0db790d9 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e02efa8 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e636d9d nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f415941 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fca2801 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x105fd444 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12fd8628 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x192f5f72 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1963876f nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x298b78a5 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d0a549e nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31636742 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3472cdcf nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b5178d5 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40a095f2 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45baf765 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47a3b80e __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b1e1b2d nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50039775 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52103869 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x542c8f17 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bc6d949 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cbc0e56 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e827e9f nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f33641d nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6023df73 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x611a1dc2 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65df7d9e nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67244b59 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6892c0b2 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x696cc5a8 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e3edd7d nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f7bb114 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ff8d1fd nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70c8ced0 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x719a7dea __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77a7ab41 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c59e2d9 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8264951d __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x838178db nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87f7e583 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c54dd6f nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dfc5012 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x910a20cd nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92e7746f __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9beb2806 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f85c118 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa36cae5f seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4ddbc5a nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6939b6a nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabd528a7 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadebed95 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae3186a6 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1b71a59 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2330f19 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3a2534b nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5c18701 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc42ed7b7 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc81db1ce __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8c403f9 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb02dd78 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcfed7d7d nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd40f6579 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda3d42f3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda7df48c nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0b375e5 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2285996 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe314582c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3882b5e nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3974f01 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe70e89c8 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3eb407c __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf483bdfa nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4c1c2c6 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf98a0e01 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdb70bbb nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xc458bc2d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xabca30f3 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xac7f8e6d nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x233cabcb nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x301fb394 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6c260a0a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x952e0de8 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9c1fe02f set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa81773a1 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb74ee15c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xce9701fb nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xde873f8b nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf3476ecb nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xa17069cc nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x012f7353 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1b58c3e4 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xbb312e12 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc9550c32 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x82948136 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xe79368b8 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2dbcd3af ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x38bc748c ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x688077dc ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x69519f24 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a068baa nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdf52097c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf1ca72ec ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x292bbc21 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x0f45cf99 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8e748ed1 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9ce1de8b nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa4794bf9 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xceee0986 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x01e6f881 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3338f5ab nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4f6b2749 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x87c72eb3 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb33ed744 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc0355130 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc14690c7 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdeae8928 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfb42a100 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x44fcae2f nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xc6e6adc5 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x88efb365 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb530e37e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x09c7d6bc nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x30ba3711 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3be4a4d1 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5ecda046 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x64e060f6 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x666b5797 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6f186a6b nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9a8c1b20 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9fd00869 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb64a21d9 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc39fa9f7 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdbcb4003 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde4d0774 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed8765d7 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xefc8565a nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf42e8926 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf715d1d6 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x12188f26 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3cfbe553 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5e82e92e nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd76fcee1 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf0d48bc7 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf218decb nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf4847079 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0888a50e nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xd0f9afc1 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xfede63b2 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x1134dbeb nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x1b972dcb nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x46f17abb nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xd8f672a6 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x2ba44d38 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x49426cf2 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x631d1e21 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x76b9a2ba nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb6559795 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc1de25aa nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x4eef2a30 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8f9a53bb nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb1da8a0b nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x387c218b nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xb759559c nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0fa376f6 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x100f90fe xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2fee3857 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4c01bdb9 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x70287ba3 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x76dbe4a5 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8304ea7c xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ae62bb0 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9211b7fd xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa85fe14a xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xabab767f xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb1a683d6 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb2dcc8a5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfef6c7af xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x4fe082f0 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x922e9d5f nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xc44ab013 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xb25be6bd nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xbff5f42e nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xdca37cbd nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0a9bc5ec ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x203fe5d9 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x298378a3 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x561a54cc __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x57ec95b9 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5c40cf1d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7c27846f ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc2b32bd6 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcb6a065e ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x21af944e rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x37ce3f46 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x490ce38e rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6a7777ff rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6b14db91 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x88879c31 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x89db2b84 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x8bdf2ee9 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9382098a rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x963deee3 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa3d4178c rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xaa062264 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xb3d05674 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xb7a8eea5 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xbde0e732 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc6d59212 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xd2378978 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xd6691cca rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xdc5d7d4f rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xe9dea63c rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xe9e73001 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xeff11742 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xf864b117 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x955e22b6 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc3597a00 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0bc7bc0b svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9f97da72 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcb2e83a8 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00e4b98a svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x012bc929 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0169ae63 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03d910bf svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03de3052 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03e56e30 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03ed1f96 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x042247e2 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05d0952f rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05ed5ce0 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06c03a6f rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08ab73ef svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0904ea1b xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c3cc13e svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dea7fff svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e76a039 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ead1bef svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0feb39ed xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1060cccd xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x126fb7a6 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12e18fb5 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12e8d2f1 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1433d369 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15e80d69 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16b5c1d2 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17cd4b60 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a4d07a6 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b54fe02 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cd0e807 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d0d4d1d cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d7b63fa rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e35122c svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ebebfb8 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23b6d76d rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27a5ca15 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28367547 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ab79cac rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d9570d1 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e044260 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ef59d68 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x314383bd xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3203b430 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32c92504 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3523f777 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35689753 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x371ecd69 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37af4c23 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39120257 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c08aa3d rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c653027 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dfbf1c7 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2df80c svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x410fceea rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46537a5c __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4992cac0 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49b15f07 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b52e19b xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c295cae xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c6774bc rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dd2e2cc xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e53b2e7 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ef43b24 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f6d218e xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5002bf07 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50907eaa rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x530de6ba rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x535b2dbe rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53ecaa18 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x564da483 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x568a136f svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5839b385 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b4e3652 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c122b8e svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c5bf1b8 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cb4625e rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cffaafe rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5edd0ea0 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x619ef589 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61a310d5 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64a64fae rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x663e42da xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a043c18 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a1f60de svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c86cd47 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd16332 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e60d505 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e9a40b9 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7010adc1 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74b6ff07 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76310bc7 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76ffe63c svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78eb035a rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ae97a5e rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ce25d94 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d7b11ae put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7db464f3 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f6c27f4 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fb41dcb csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81054e05 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81f06e34 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8223c2a1 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8412e5d3 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8452e3ad xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86946fd6 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88fdd3f6 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89158e3c svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8954d6be xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8968df5b rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x897301bb xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aa478f0 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e293ebc xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91328380 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94969a30 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94eefae4 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98c7d4f4 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c88bfc4 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d96f196 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e45b7e5 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e5b5c1f rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0ece7a9 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa19d60e2 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2ff1ad3 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa48e2332 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4e7d0e7 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa56285e5 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7c4127a _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa856448a cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa90de651 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa4e66f6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab1e50ce svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac7f2922 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad50595d svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb08f4847 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2285f8d xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6c5d2c9 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7ef408e rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb862182d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8d38d4f xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbc029fb rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd10de9f rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd47b5ef rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbda143c3 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdbaceaf xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe11ae29 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf1b2701 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfca7df9 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2cdd4b9 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3449dd3 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4f76e4a svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5c6c937 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5fd4566 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc668b2ee rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6df08e9 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca193683 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb685f3c xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd183875a rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd23887e6 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd24beeb7 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd28c1f32 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2d1d6a5 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6534820 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd763424a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f06214 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd858c149 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd86148d8 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8ec5dfc svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9e97c10 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdacd59f2 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbc8a07b sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdea410b9 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf661228 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdffd2ff6 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0528443 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0c8d8ff svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2551124 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe33a8fee svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3ab7f18 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3d0bfb0 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3d79a75 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe44a4abd rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7294ad5 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe77a9a47 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe85b871e rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed9dd8ab sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee70d1e6 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeff97a3b rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1132115 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1c7d83a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf572eb6f rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7381027 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb8f75e0 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd74b0cf rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe3ff212 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0e236a7e vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x12636753 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1608c55f vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x486ca1e2 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4d12cc7f vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x596b41be vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x83fdd5e9 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x87f97166 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x949be801 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bc44a03 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb99b6920 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcd90a2e8 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdb57dec1 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0a0414af wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x10fa78f8 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1c2adf5a wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2a2625a5 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2fd8c679 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3ecd5803 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x533fad4c wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x57c6bb7f wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x619ed297 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x83ee1e84 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa26ee7be wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1a15ec7 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde09b12c wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0832ca4c cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x34f0c763 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3d1f8a70 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x58467d8b cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x67a3a3c1 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8e329515 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb507e9c0 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdbc98e5e cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe3b9e313 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe98d2db3 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xef723331 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf3618ca9 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf7200a21 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x24eaf286 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4e2a44d8 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5d04f447 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x60fbc027 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/ac97_bus 0x6961c072 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x1f3439b3 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x40d2e7ee aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x42a89493 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6f427b3b aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xb284dc45 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc589fa30 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc936295f aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdb9bbf35 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdf5314e2 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xf7a3385c ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x3ae85762 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x4e59227c soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x6dc40b4b soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x744471dc soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa7354b98 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xf4df7caf soundbus_add_one +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x8e8b6fd9 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xf59d59ae __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x1c34fd03 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x3912ce19 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x474bbd8a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x6c83338b snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x7cb8fe47 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xa728a0f8 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xb16f37ce snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x095207db _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1f127f58 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x40abe2b7 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x778179a5 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9d6f4f0d snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbb0ebb36 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc44cdc21 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc959c7b5 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd494cc7f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x07b349b1 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x54559030 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x648aa45a snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x78897291 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa4b715c6 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa6b78646 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd2655189 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdceac342 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdd03fb78 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xea83031f snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf96c165c snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x240ea46d amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3fecd557 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x659e10cb amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x726f7bd0 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xca4fb47d amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe009fe25 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe968da02 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x00b3e089 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0873e026 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x09f7b7bf snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x15d7ae82 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e06f27f snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e6b79a7 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e99bbbf snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20352a1e snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a266f88 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2bb0a7ba snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c32e61f snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d6749cb snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30ea81c6 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3252c9dc snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x363ef653 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3eba87b4 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41be6c47 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4352bc6f snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47349aca snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x561568d4 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c71c7bc snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a49b2f8 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b403982 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6dd4bccc hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ed33c33 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x761ce633 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x773bec0a snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x788d1c14 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d978516 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7e6dcd35 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f586ed8 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82e7b10f snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x86e5a6b0 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x892f5a3b snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e38d41f snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f2e4550 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x980d5f9b snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9af87106 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d6b1935 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa02a7832 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa68d4afa snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa6940c85 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb0d15f1f snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb915720f snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb939a8d7 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7186e4 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf6c9de4 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc76d3aa7 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcd88d64a snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1687283 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd26ecac8 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3511502 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd701b789 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda7c5e63 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb863ca1 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd2781d7 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde8ab5ea snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdef58832 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe65d3121 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe774d657 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe97b9715 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeb14f952 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xed78c029 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee54ea21 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf12b894c snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf417f773 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9c9a7e3 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa5ef113 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfaf6f66f snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb9b8e3a snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd51c7c4 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1554b71c snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x42c508a6 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6009e4b0 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8edbf325 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe2e89e78 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xffe5b7fe snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x021a82bb snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x044eddaa __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05490e20 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05e0b3c3 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x066bfd93 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x083a9501 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a63bcee snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fb2c095 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ad7191 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15c12599 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d2dd3f4 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d851a44 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x234a80e1 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2555c83d snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x287d81c0 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x297ea790 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a1e8551 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ad2c479 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2afe401b snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b8bddd1 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bee4d09 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ccb9f77 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30218342 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x332f85f5 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x369e3d6e snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3765ce09 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397581d7 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ad3cb5e snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f84b67b snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x405dce8a snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4339b12e snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x442364df snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x484cdaa0 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49e76f2d snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a62f660 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a8e7ca0 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55467c1a snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55c96cfa snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x568a203d snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58ec3722 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cd827ec snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5df30265 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fe4b861 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6154e27a snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61c88d42 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x625bde4a snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64ce5ba2 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65ed110f snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66920908 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b1b24cd snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dfeba6b snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f970c76 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70a9b529 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71a35487 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x725152a1 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73d65378 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x748b1ac3 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74d0c735 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75470fdf snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x768b42b4 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76fc389e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7727efd2 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d0d8f5c snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f512ccc snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81b4b33d snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8204cc2f snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x822cc6dc __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85af04eb snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x873868d5 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x887617d8 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c559d60 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d12a511 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x904f1df0 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x924ab76e snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9566f8d7 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9930e473 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c65fa7d snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d1dff1f snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa324aa88 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa34003c2 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5534170 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa651c876 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabf9e58b snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacfc4844 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae999c6b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafcd8550 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb10317f5 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1d54b3e snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb53e5578 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb801b823 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbad0299c snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb40b100 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe5843c5 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbff87b94 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0fc7954 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc64c7ae2 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6791a9a azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc92b43fd snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb40dd86 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb5847d2 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdbea584 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce1e9df2 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcea52b61 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcecdf643 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd30ab9f0 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4f962d1 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5856e60 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6a28dc3 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd72206f5 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd864d03a snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbc99e16 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdef5f1c9 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1c0d071 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe21572ad azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7412985 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe995f18b snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebbe60e4 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2c37b9 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2669e8d snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2aeb153 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf53e7433 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9de94a9 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd30ab1f hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffb06dcb snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0327eaf9 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x03a1fcf9 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x10bbd7fa snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1217756d snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1520f0a3 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2e586f3b snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x31bfaebf snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x390f92fe snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3953a528 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76cebbce snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7b3d366c snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x876fe189 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x89c8fc86 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbd3c0831 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc01b44a7 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd1d5f4fa snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdb92eccf snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf471235b snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf5f1fb56 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfe2ad2de snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xff8c6f24 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa2640e9c cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa71119cd cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xc03c371c cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xcbf50345 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x21ab7499 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x83dd7a93 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd96ec249 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x776258df es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xd2934169 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x2ad11456 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa4dd0d49 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe82a3474 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf301986c pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x470e138e sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x515755aa sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x691f88e2 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x796c026a sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xefd195a0 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x6895ccfd devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x20fd468f ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb15e9c60 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x73c5ea95 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xc1533ee5 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x467958ec ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x1ae1c459 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xafb59b6d wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb59b0c5d wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf5142a96 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x8faf171c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xa6f7cf3b wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x05596c41 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xf0e5f170 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x000dfe8f snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02fb089b snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x065bcea9 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06738a23 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08d48a38 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09d55cda snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09fd6fe5 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c4bd0c3 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x133b3995 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x149c7ec7 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x153fc5db snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x164f36fb snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16547f3d snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17ecb477 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x182f5850 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x185c2567 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18757485 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c4ff522 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e244599 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20e17192 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21f766f2 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22537469 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22cf1153 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23fb63b4 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x241795eb snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x261e7946 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x263b6642 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27464e11 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a0291ce snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b3f272b devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31350575 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x334dac81 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x344142be snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35e1aa36 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x368365c8 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x376d2e57 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38b1d322 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39435795 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39872bb3 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3994d187 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b0a1454 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c84cc9e snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e84c74b devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40b65cc9 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40c5c055 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40f2f168 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42e9d796 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45ce92f8 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b76174c snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ba1f42f snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c27baf1 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5176c458 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5283886f snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x528b1972 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55a0c8c5 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5773066d snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57a74770 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a93c1e8 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b1ee72a snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bc30886 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6066eee8 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6316a2ec snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x639270e7 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66aeca93 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68395289 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b71a5f8 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d549ac4 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d5be1ef snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d7f808d snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70ddc44e snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74365866 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x779a11be snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7836db3c snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c15fc2a snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x818a423b snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8651e821 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86b93f43 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8869d3d5 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88ede69c snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a6b3df3 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a93e082 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cf57f61 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e713126 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91cb3fe7 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98dc6264 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99bfa84c snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a4c0f96 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a83e35b snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ad182ef snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b357259 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b53589c snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c357e9a snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c7a30fd snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa02132a7 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1466da7 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2090fdc snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2827943 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa99d5491 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa1c6ee9 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabfce1c2 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac3fcba0 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadf246ef snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf2d32e7 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5c4abfc snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8b05ca8 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb54c0fc soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbe163ca snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbced90ec snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbfc69dac snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0510488 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc978e7ff snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca2a44b0 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcadbf529 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb39f2b6 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdb6c22c snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcef429df snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd19c8655 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd571e597 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5f855cf snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd78246ba snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7a5763c snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd91f1161 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc423f58 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd084726 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde97cab6 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xded3dc69 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf8e2aaa snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe09c1416 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2611017 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4b2572a snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5eb7a4d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6638a82 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9ae1298 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaddac70 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb0d6803 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedd7c583 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee99ef4f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef001764 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef7766b7 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefb3e0c9 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf070f50c snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf43cdae8 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4d2778f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf708d779 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd706600 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfeb8547d snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfecca352 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff486aa7 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x022825b9 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x063ffe9d line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2a7530fa line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2e4ec3de line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x33aba04d line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x46cc72e1 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x476aabcd line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5a54094f line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x63e812c9 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6fb8fabd line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x78d51875 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbff52f76 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc539074a line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcbd69c92 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe06f6171 line6_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x000a0b46 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x000bb698 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x000e0993 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x003c5cab cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x004b448d pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0069c314 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x00888750 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00acbd9d register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00d30b85 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x00d77e82 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01131262 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x0116a437 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0128a039 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x017302ac init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x017662cc xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x01948058 device_del +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01c33ef8 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x01c87538 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x01d00d54 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x01e19690 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0202db6c usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x02050c5b spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x020e8e4e irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x02117ee2 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x02121338 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02201189 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x02410ebe rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x02475c29 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x02628d47 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x027252e5 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x02838f9e rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x02968f8c pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x029f8f1e pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x02b43998 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x02d55c97 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x02d7058a fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x02fce546 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030ace7e sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x0313d750 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x033698bf blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03602ad2 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x037028e5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x037ec421 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x038368d4 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x038f59dc extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0396dd34 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a44953 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x03b46405 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x03c84b90 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f64586 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x04370446 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x043fa58d tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x045da133 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0482a709 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04a87675 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cd1410 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x04d37893 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x04fb0972 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x04fd32f7 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x05306bfe for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0562b857 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x056ac9db fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x056d7b14 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x05775618 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0593d3fe thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05948b9e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x05a592e7 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x05aa2a81 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x05ad1753 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062ba604 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x062cdee0 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x06391385 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x0647ebeb inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065bb59b clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x06681817 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x067e6f47 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x06ab2e5a led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x06cadb2b rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x06f148e0 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0710fe91 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07218213 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x075756c4 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0767e70e dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x077fbad2 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b741ae pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x07ec78c5 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0828393c pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x0831deb3 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x085faf3f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x08992e27 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x08994564 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x08b399cf regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x08b6cc3e kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x08c43af5 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x08c5eae9 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x08cc1c7f blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x08d107e2 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x090bbd3d sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x09168a7b debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x0917b62e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0930649d vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09711ffc pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x097281fc inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x09a3d375 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x09c7be36 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x09d87942 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0a077151 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x0a0f375b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a15780a dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x0a15c380 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a981b8b regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x0ab81cdc devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x0ad2b398 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b08a384 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0b0d3aaa ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x0b1f8893 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x0b23d1da irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0b298e41 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x0b35aaec __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0b4ac43d usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x0b5b6be8 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x0b7ad25b pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x0b977a85 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0be73e36 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c005b61 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x0c049553 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c354bb5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x0c361949 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x0c438b65 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x0c44aebd list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x0c44c839 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x0c5de693 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x0c9bde4a trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0d00060f __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0d301f7d cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x0d341969 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0d47258e __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d6d4c4b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d73bb96 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x0d7b08b7 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0dfd9551 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x0e0faa23 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0e1d3d00 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x0e60e221 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0e68f7c0 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x0e78b6f0 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x0e8d8abd device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0e95ce7b da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0e9ef953 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0eb7f28d srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ebc5fc1 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x0ec08d26 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0ece338c device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0ee1f472 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f212164 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0f289ac1 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x0f2eabbb ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f34dd21 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0f36437d devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0f378a1f wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x0f4d3230 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x0f5c29f3 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0f689a26 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8d512b regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0f941f61 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x0fb807ac thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd06fd8 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0ff5f607 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1040dfea lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x104ca63d usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x104d2803 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x105a7a49 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x107b6c50 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x10a116ff of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x10a292f1 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x10a4c997 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x10d6428b devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x10d9e4b4 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1104f797 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1115c1c5 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x1123f22f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x114a3ba6 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7f87 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x118a3985 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x119829da usb_string +EXPORT_SYMBOL_GPL vmlinux 0x11c532e7 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d82fff bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12293061 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x123d1e2c regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1255dac0 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x125688b2 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1277d6e4 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x1294883e msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x12c3cea6 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x12ca8e17 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x12e97cb4 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x1307195b pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x134b05d1 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13650dd6 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1375abd2 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x138c6be4 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x13bc3140 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x13dfabf8 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1406a0dc pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x1412111b dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x1416ee3d debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x141dbae1 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x14338edf ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x143f70c8 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x146c2ea5 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x14828b5a devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x148558a1 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x14be0f68 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x14c2a384 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x14cb26dd usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x14cccbd2 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x14ef2363 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x14f9182f scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x14facb39 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x15064c77 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x150d600f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x1518ad36 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x151dc4a8 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x1524c389 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x1557a9d9 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x157901ba __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x15870f04 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15de9ee4 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x15e11a12 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f32b83 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x15f70230 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16112ea6 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16652cae page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x1674b243 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x1680e1cc fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x169e7bf9 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x16b22218 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x16c0cf24 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x16c655f7 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x16f29072 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x16f5758e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x16fcbe78 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x16ff991c usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x1715bd34 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x171ad90e cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x17206fd6 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x1726b50f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x17405494 mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0x1742f358 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x1747b5af regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x17556fb7 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x179c3ba2 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x17c0e09b ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x17d0bbfc phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x17d3f92d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x17ed3795 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18315765 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a31239 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x18af328a i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x18cc48ce tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x18de12ac gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x18f8c3ed class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x19002f9e perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x192d8888 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x19318dd0 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b40f85 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x19b7d8c2 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x19bf92a1 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x19ea1b69 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x19f1b5a8 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19f4c221 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aaeac66 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x1abaa68a ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aec4a73 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x1af8af8a dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1b05186f usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1b058ba0 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x1b28c061 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b553ce6 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba46c6c devres_get +EXPORT_SYMBOL_GPL vmlinux 0x1bb582af of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x1bf2285f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1bf23e65 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x1c14c4ea mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x1c1f073b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x1c239ae7 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x1c243531 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x1c31e8ed pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x1c474776 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6b1c19 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x1c766d66 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c8208f2 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8e9682 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1c90a157 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x1cc7daef anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ce0f652 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ce81a1e fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d24b148 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d89c02c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1dab35dc rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1dbb05e4 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1dcb28d1 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e36f16f debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x1e558502 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eadee29 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee43366 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x1f05ee65 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x1f102720 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1f1dcd75 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1f351b39 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x1f4c5421 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1f5c9095 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1f6f7139 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fdc7662 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x1fdf0e2f wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2018d8d9 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x201d941b cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x204d7a3d pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x208e3969 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x209d421a crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x20a815db crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b1edf5 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x20c34598 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x20d685f5 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x20da2df5 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2100861a crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x215a5eda ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x218e3cb3 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21ef4457 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x21f71bc6 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x220f2372 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x221917ca apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x22253342 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x222560ac cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x227aab88 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x2280980c ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x231b249d pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x2333263b tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x233ab078 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x233bf090 device_register +EXPORT_SYMBOL_GPL vmlinux 0x235da623 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x23762b09 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238aa357 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x2394cf41 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x239c0431 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x23a402f5 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x23abaa50 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x23b1e4ed of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23e646d2 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24037743 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x240d7196 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x2440df1e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244e503c dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2481d4ce ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x24964895 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x249f0490 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b14cef sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f7c0ed fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x25479fc9 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25e57d6b irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x2617b99e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2626bea5 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2641f832 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x2643b83c inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x264bc4cb regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2686c175 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x26871536 user_read +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x269ef3a1 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b80cf6 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x26bde5a6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x26be3bcd platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e1051e tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x26e4f2d8 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x26e75554 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x2714832f device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x276f0090 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c6fdfd inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x27d780ab rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x27ef2660 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f5b221 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x280b51e5 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x281714b7 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x287d8545 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x28b5de1c sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x28e174c6 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x28e25614 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x28e4cce5 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x28eeec9c ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x28f35849 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x29541da6 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x2957a833 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x2987a627 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x298f3ad4 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x299290cf devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x29a8831d rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x29ba958a scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x29d331b3 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x29efe55c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x2a1aac1c usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x2a38da85 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2a3d7cfa sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2a3e6b28 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a7419cf blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2a8d289d proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x2a938464 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2aa8a858 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2aaf94dc phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x2ab095c0 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x2acb297d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ae84b38 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x2b0e3651 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b528c8a gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b656a56 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x2b6a1f36 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7d093b pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x2b973148 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2b975292 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x2ba1d7b2 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2bbff5f5 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2bc88ac6 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x2bcec150 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bd252f0 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2bf15603 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x2bfa4477 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x2c039875 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2ed6b6 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c59fd11 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c879b62 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cb0371e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x2cb2bbd8 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x2cb7d0c2 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce92280 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cf463f2 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x2d09f6ac pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2132be usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x2d2d36ef dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d60bc75 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x2d6dd6c4 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x2d71ef5b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x2d79c029 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x2d9fd510 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x2dc57449 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2de681b6 system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x2dea8054 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2e1e25e3 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2513f8 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2e27290b pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x2e293a84 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e5477a1 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x2e696e45 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2e6f36bf bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x2e7e83ce blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x2e96f252 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec5589a blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x2ed55faf shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x2ef4d512 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2ef5ca9f mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f028894 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4fa598 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f9ce5d1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x2fbd78cd devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2fbdb148 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x2fcc977b md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x2fd22afd devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30277003 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3066ac94 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3066ad3c dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3072ef9a ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x3097b70b devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30be62d6 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x310199b1 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310eace5 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x3113321c dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313625b9 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x314d2119 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x314f75d9 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x315afe02 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x316a52bb reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x319dc05a blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x31bbee83 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c88961 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x31e05e74 md_run +EXPORT_SYMBOL_GPL vmlinux 0x3221b835 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x322db01d sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x32342f0f eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d31649 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x32e55193 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x330d02c3 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x332f14e4 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336a5c73 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x336fa9b4 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x3375c5ae regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x337c01c2 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x339a409a sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x33e6d031 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3400ddc5 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x34093426 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x342dbc4c ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x345562dd pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x345d5c8d raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348e7e87 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x349a21e6 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b291b0 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x34b8aa26 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x34d88cf8 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x34e59844 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x34ee9917 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x34fe6978 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352fed94 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x354dd375 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x355a0683 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x3566e098 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x35767aaa srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x3578e4c5 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x3581aa1b skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x3588c25d pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35970ebd clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x35c7ad63 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x35cc576a yield_to +EXPORT_SYMBOL_GPL vmlinux 0x35dcb3ba of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x35df2bfd cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x35f1daaf skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x3613a96d xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x364678f7 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x364a5a1b device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x365cdf59 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3660a25c ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x366d7089 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x36703b77 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a71836 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d87a31 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36eddc62 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x37191601 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x371f308b blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x37236676 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x37699244 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x3770f950 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x3782cac8 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x379fe002 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x37a5099a bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x37e2005d of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37f97ff6 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x38456433 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x384f4d14 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x387304c2 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x38a86b0f sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b14161 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x38c7bdb3 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x38e69b8d __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x38ebbe9d sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38fd89cb blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x39021952 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x396f75be usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x397c7175 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x399905e1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x399c4c04 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d1d8f6 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x39e59545 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a1801b6 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2f8c4f stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7043df sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x3a8dcce5 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab287c1 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x3ab81230 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x3acb1a97 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad50df0 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3ae24a3d debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x3b40b7c1 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x3b477e55 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3b5bc2d7 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3b5e1c6a irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x3b821cb2 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x3b8ec8d3 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3b9d6d37 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x3b9fde87 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x3ba15a6c is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x3bb1df78 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3bde4a70 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x3c159b99 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x3c173abd ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x3c208f55 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x3c30b5c4 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x3c45360c of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x3c50ebb3 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x3c5d40b2 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x3c93870f sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb3da67 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cda4f9e ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3ce7fafb sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x3d0df6b0 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x3d26b06a debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x3d2de6b1 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x3d320ec0 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d69f0d8 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x3d71ea51 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x3d894645 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3daccfd7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x3db1c728 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3ddaff17 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x3de6cb91 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df5e77d wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e723600 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x3ec56ed6 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3ecef338 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x3eda3b2e register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x3eea3fcc gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f07bb9d percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x3f2a2540 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x3f2e7b7f crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x3f3f8b8f of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x3f5f411b reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f96e326 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x3f9e91fa xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3fc86085 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x3fdbb8e5 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x403b326b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x403d2106 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40505f40 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x405dd930 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x408e76d7 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x4099b270 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b2b7b0 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x40c0fa46 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x40c96a6b virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x40cbf2f2 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e550a5 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fbaca3 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x411acc37 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x412ce4da pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x412e8773 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a8b458 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x41a8c97c tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x41c7fdfe devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x41d088a2 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41dea24a dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x41fb8904 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4201d36f get_device +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428c771f ping_close +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42b71ffb devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42b9b342 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x42c3b883 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x42cc60e0 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x42e33a9a cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4302cb90 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4321164e gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x43240de8 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x43250acd max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x432b6cf1 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x435dba88 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x4371d56b elv_register +EXPORT_SYMBOL_GPL vmlinux 0x43812d0a sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x4398c543 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x439d8cea netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x439dff6b pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x43a15436 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4406744a crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x44108517 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x442f2885 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x4435b1dc file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x445977de crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x44601473 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x44610ce9 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x446f2a3e phy_get +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4488a60a ping_err +EXPORT_SYMBOL_GPL vmlinux 0x448baddd md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x44a3e4d5 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x44aa6cd3 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44df5d6b crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x44eff47d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x4507dc13 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x45604e7e early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x45669bd6 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458a2904 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x45ac5116 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c38a04 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x45ca5ead pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x45e230d8 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x45eb3cf7 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x45fabb5f led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46311bbb cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4642d523 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x46554cc6 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x4671a59d add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x468739a0 pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46d2dbd6 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x46faf7ef usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x471acd0b regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47260394 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x4729f551 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x4738872d ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x4740d486 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x474186a8 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x475253e5 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47793f57 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4794098c pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b1f33c cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x47bb2389 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x47cc77c7 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x47d486eb blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4828a96b pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x483303f9 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x483c1596 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4842de8a thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4862bd8c cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486d93d1 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x489bf70f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x48a3714a rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x48b79a0f platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x48d5b289 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x48ef72f4 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x48f477df regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x48fca92b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x4928b679 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4937d74b rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49436323 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x4946ce62 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x494e04a7 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x495b2c75 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x496059cf crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x49707f9d dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499999cf regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x49a9e487 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x49b025d5 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x49b2d620 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x49d42b98 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f0b903 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x4a05036e vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a3987cf usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4a3cca87 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a583fa9 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4a600281 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x4aac65e4 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac24d32 device_create +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4aefccec power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4af369a7 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b308ffe pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4b4917f8 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4b6aefb3 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x4b860d98 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x4b870566 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4b93f1ae phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4ba9e31a phy_create +EXPORT_SYMBOL_GPL vmlinux 0x4bd5e0a7 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4bdd03a0 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x4c0114a7 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x4c3c1ff5 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4c3c9244 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x4c4314b7 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c64457b usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4c64b864 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x4c66a1f3 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c6ebbcf bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4caaf59b map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4cd718af dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x4cf6f030 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x4cfade8b devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d095730 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4d233b7d ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4d2b97dd spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x4d5c6af4 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x4d60f9ec ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x4da56b6f watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4dd76ea3 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de53e76 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x4de7fe81 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x4de9abcb gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x4df34560 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x4e07ec14 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e43a908 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x4e67f927 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e9f5b45 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4ed506c0 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4ed58735 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4effb2a5 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4f24aa4f __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4f2b0188 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f3d56fa platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x4f4bf92c net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4f63f4bd inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6b955f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x4f8a2788 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x4f93b794 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x4f9ce151 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x4fa56108 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4fb142ac __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4fbde4a5 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x4fcc5241 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4fd2a1cb led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x4fd2f075 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4fd40642 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff308f5 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x501b9184 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x501d042d of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x5020d36f ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508a1f40 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x508b6eae of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50971161 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x509d84c0 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x50b0f987 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50ce322e tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5114279c usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x5143fcda shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x5155c321 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x51719489 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x517bb399 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x517bb8ec adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x51966b51 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x519bd897 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x51a51c0c pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51ca7973 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x51db9655 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x51f7c3b1 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x52008c3e tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x5204581e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x52063e1d ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x520a4594 split_page +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x526f7de4 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x527cb024 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x528cb36a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52d2bc89 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x52e94194 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x52eb8495 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x52ec84fe ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x52f8b0f4 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x531e2a7b adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5329d82d crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538868a1 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x53d97cc4 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x53e5e725 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x53ee39b8 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x540de243 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x540ffff4 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5454e7be __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546baea3 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5471cf9b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x5472d7f6 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547c7bac transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x548a863b virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x548c04a0 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549704d1 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x54b0b953 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54f873c7 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x55327ad5 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55456482 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x55767f5d regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5595dfde led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x559ea05d param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x55b07122 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x55c91bf3 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x55e8eb86 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f0f25e power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x5619bd0b of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x561e6b0e sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x561fcaa6 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56294221 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5631f317 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x564218ef irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x564a8d9a crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x564d6f66 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5665c91a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x566e9d4b alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x56852605 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x568635d8 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x56b634b5 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bd532f devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x56cae41c register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x56cdf5a9 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56dd74c3 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56eae7b4 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x570209ed kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x570affff ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x570f13f0 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5721738e fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573da4bf inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5771b373 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5796e846 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a9ed37 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x57b01ab5 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x57c340e3 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57f9e60e cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x58153564 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x58195381 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x583008ea led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x5848b387 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x588d0472 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x589e4797 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x58b1edae dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x58df74fe rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x58e18cdb flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x58e36c95 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x58e8a215 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x58e9368c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590d847c ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x5915741a perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x59193ea5 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x591fdc88 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5942c1dd of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5966c785 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x596c0776 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x59714bc2 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59cfd30e pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x59d00673 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x59daf8a9 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a02eadd devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x5a4c88d3 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x5a501fdb tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5a5bf9e8 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5a65c37b devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5a6c2111 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7d872b gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x5a9bc3eb of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x5ab99781 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x5ac54b8b usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x5adaf05d scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x5af97b47 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x5b19e374 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x5b2ef0b3 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b2f5f40 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x5b562673 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x5b7c44a2 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5bb4343e irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x5bc0f027 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x5bcd705b device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bf4894f pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x5bfc7118 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x5c1c0360 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x5c1fa9e8 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x5c2912c4 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c620c59 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5c757c23 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x5c90dd52 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ccedb10 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5cd00148 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5cdc434a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ce7cf63 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5ce9ed5d of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d4cba58 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d604df6 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d698823 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5d75c97b device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5d9425cb __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5da356eb debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5ddee6ee debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5dfd6bcd pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e1b671c crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x5e1ea6ff crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x5e2679aa ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x5e31400f bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x5e35e77e napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e7f4612 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5e8916cd device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x5e9c6686 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5eda1acd invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x5eeadc35 pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0x5ef964f5 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x5f1a88eb ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x5f4dbdc3 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x5f94502b sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5f9ccb0e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x5fbadeaa vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x5fdf8b03 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x5fe403ac inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5fee1d3c gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x60026009 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x60070f7d devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x600b2059 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x6010425f regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x60214d04 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x6035b78e fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605a74ae irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x605f30a3 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6069d885 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x60869988 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60b782bd blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x60d6d27f bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x60e1eea0 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x60e43c6c rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x6127f4eb percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x612d599f devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x613bf2fc trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x619ef87f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61bbf8cd pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x61c4d3e3 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x61da0418 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x620432b7 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x6216bd73 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6231ca40 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x623e3136 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x62573d39 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x6265cbee blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x629ecc5b devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x62a70a55 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x62b82788 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62f3227f irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x6327a6fc pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x637616dc usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x63a78e42 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x63a87ea9 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x63b21a5d remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x63cae7cc fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63e624c3 mmput +EXPORT_SYMBOL_GPL vmlinux 0x63e6cf18 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x63fee482 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6419fd9e ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x6423b3f7 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6426ba6c syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x64301c23 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x64317fb9 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x643313ce mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x64454381 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x646c760f crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x646ce7ef fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x64941ba6 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x649c0b15 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x64a70cfc io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64cbcb10 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x64e24a5e memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x64f71532 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x64f7b1d6 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x65060252 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x65091fe2 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x651141aa usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x65163255 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65183e30 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6530c9d8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x655da5a5 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x65690cde __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x657887a3 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x657fa967 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c6c9ec dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x65cc5dac crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d879ef trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x66039895 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661c3b43 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x6628353d usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x663569c2 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669b5d16 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x66a8cac1 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66cb67b7 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x66d3dd24 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x670c3c66 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x674842d2 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x674a6526 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x674f7cf8 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67afc5a5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x67c43279 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x67de38dc mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x6818cb5a sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x68306ca0 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x6859aed5 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6865df3d usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x686f306f dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x6879a06c device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x6892a1f7 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x6892e140 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68b62671 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x68c6ed1c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x68d7baa0 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x68e25d79 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693c7df1 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694a915f usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x697fa13c dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69abace7 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6a046675 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6a299490 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x6a3a1822 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a635cd0 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a94de3f usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6ab1441d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6abbad0b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x6abbb9a8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6ad09aca devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x6afef5d3 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x6b0a579c transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4a0878 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6b4a8884 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6b58b189 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x6b6f02f6 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b8b1e17 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x6bb1bc81 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x6bc9eb0a debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c087c7c of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x6c090a7c devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c45b40d netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5f45ad platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c9070f0 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c90e781 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c9c996f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x6c9d5108 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cb3e9a0 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce818bd __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x6d2dd8a5 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d63b415 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x6d74237c __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6d760aee __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x6d88b57b regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x6dce1cb1 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x6ddcd90c class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x6df72594 pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0x6dfc638d sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e21e754 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6e41eb5c xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8ba503 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x6ee0f71e cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ee32573 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x6ee85d15 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x6f04a39b led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f126191 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2b91fc unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6f393732 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f59450c device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x6f707c0f add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f8762e1 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6fc587f1 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6fd9b0d5 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700264ba blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x70048cc6 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x700a1c56 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x700a65a1 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x701a9549 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x704ca8fc stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x704fcec0 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708ed5f8 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70b801d0 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x70c46762 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f3ffe8 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712e2142 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7152e07d cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7188f26a nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x71925960 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x71a20b79 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x71a3a8f6 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ec86e3 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x71fc44a3 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x71ff8238 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x7203fade da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x720eb296 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x7212a399 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x7229b444 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x722c0e78 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x723af02d crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7257e8e2 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x727334e8 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7286936f inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x728b9e23 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x728ee95a isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x729ad1b7 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x72f5abaf blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x72f62a48 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x730f9d41 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x7313353c debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x7320df0a regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x733a48a8 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x733ecf27 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x7346e787 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x7349a080 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x7359905b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x73706c87 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x7383fe8f pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x739007b3 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x739eac88 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x73a35586 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73ac2d4c rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x73adb4d1 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73ba4e13 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x7411243f usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x74157c69 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7451efe1 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x7458aea3 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7468b74e __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x7474f53b devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74a79f29 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d007c2 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x74d41a6a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x750586b1 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x751861d0 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75329035 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x7536fc57 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7544e0a8 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x75475cd2 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7569fa8e rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758c6708 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x758d0f4f crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c31085 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75eaef9d of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7606526b tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x76232efd driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7654e2e4 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x766e3e3d free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x767c77c2 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76a34840 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x76b14313 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x76b5eb50 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x76f3323d pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x770e5b46 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774531ac devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x7748df13 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x77542c73 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x775d5bc4 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x776bacdf mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x7780eb8c cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x778846e1 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x778bc794 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x77907bf2 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x77943556 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x77a81568 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x77be92d4 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x77ede03b devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x77fc0f63 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x78151326 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7824d61b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x78330a8c usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x784447cf blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x78565f58 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x785cf1c3 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7862b11d __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x786376a4 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x786494d2 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x78695b37 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x78817a67 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x789d181b l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b4c380 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x78d97af0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x78f95400 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7925d823 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79321466 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7948193b shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79881d32 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x79a15fca blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x79db8bc2 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x79dc2b5b devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79ead396 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7a0d347c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x7a29331e mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3243d1 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa041e2 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7aa3029c device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x7ab2ab8f posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac1e18a rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x7b06d18f tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b209b97 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b2ca411 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x7b30410d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7b38ebec platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7b3be48b bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x7b4d3a98 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b7209a3 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7b9b577e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x7ba2f8e7 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x7ba7decc ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7bc43676 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x7bcaa4f1 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7be1366e bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x7c4c2b43 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x7c54ca7e of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x7c672b67 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x7c91179b usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x7cac34c6 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x7cadcc06 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d1e1b1b rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x7d4bc59a serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d9365ec crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc7eb7d skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x7dccba44 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x7dcf04c3 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e0a6cba debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x7e12f4e8 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e22ed5f virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x7e35f7e6 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7e47bb3f power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x7e5ced07 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e8fbf15 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7eb39fe8 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x7ede71fc serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x7ee42251 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x7ef3decf perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f02536e register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x7f350f67 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7f378cd9 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x7f3e42d5 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x7f3fc844 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x7f424c82 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f807b15 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x7f9c8d86 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x7fab1f96 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x7fb22586 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7ff19be3 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8014ed31 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x804ea02d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806cd13e securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8077ca24 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x80866d50 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b6f537 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e369ee rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x80f04869 smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81323ea5 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81542cfc device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x815dd4bc ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x81777800 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x81948f4d inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x81a9004c ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x81c5334a arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x81cb52c3 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81e5540a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x81f091a1 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x81f4375d sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x8218d641 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x8222af71 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x824e2508 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x827a9caa pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x827cdbd6 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x82988f83 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x829b6bb5 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x82b162cd devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x82b362a1 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e6fe5c relay_close +EXPORT_SYMBOL_GPL vmlinux 0x83032266 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x83044f1e dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x831c68bb scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x83314dc2 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x8357f187 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x836f32a7 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x838452bc save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839089c1 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x839a24ee bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x83a81dbb blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x83aeaf1d spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x83b06fcb hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83f7ced5 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x8404f73f pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x84509c73 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x845e0658 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x846bff79 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84d4fe37 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x84d5513e napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x84e45f95 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x84e5a862 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850adaef regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852659bb usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x8527313b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x852b35ff rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8544931b __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x854a31b7 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x8553afff ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x855f8220 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858737ec fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x85b5c2df fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85da5d6b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x85ea2858 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x85fb5d0c usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86179d74 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x862d2d4e regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x864fc4b3 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x8655b64d stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x86588bff spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x86607bc0 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86865671 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a799cb devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x86b47221 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x86e5fae2 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x86e7c2c4 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f3c2e1 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8713d859 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x874ad977 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x874c186f gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8753f6f1 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x87606498 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x87630250 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x877dac8c phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x878a67e8 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x87a74ea2 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x87ad9357 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x87d15a9b dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8820764a gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x88600374 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8893b40c use_mm +EXPORT_SYMBOL_GPL vmlinux 0x88953231 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x889cfa05 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x8916f674 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x89227e97 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89373b68 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x894af6b9 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x895d3e5d watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x896cc6f7 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x89978657 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bc59f8 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89e16d14 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x89f6cb79 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x8a424cba ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5f86ce fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8a7f16e0 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x8a8c7b19 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8ab616a1 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae22060 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x8b04e30a ref_module +EXPORT_SYMBOL_GPL vmlinux 0x8b193ed1 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8b1b05de virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8b3001d2 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x8b402fed ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8b41b140 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x8b43d9ac platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8b444dd6 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b7af834 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b827665 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x8b84edc0 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8b95d2c6 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x8b97a8cf debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8bcebf85 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x8be3ac8f replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x8beab517 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8bf18fc6 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c081dab fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8c0d32f3 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x8c385659 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8c5b8901 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8cbdb835 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x8cca45b1 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x8ce73601 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8cfe9673 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x8cfef992 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x8d00694b regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x8d28f9f9 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x8d47f2db x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x8d4c6c00 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x8d8e072c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dab4462 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8db0fbc3 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dd9a33e devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x8de9e63c x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8ded1737 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e181a36 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e699857 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8e883026 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x8ea7faac powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x8eba6b38 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ecd940a pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x8ee91a77 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x8f0150a3 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f42fe34 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x8f46420f sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa3ac11 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8fae7027 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x900d24f0 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x9022d5bc memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x902797dc devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9031f008 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9048ee87 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906d62d7 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x90708ade ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b76ccd skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x90bd9a8d rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x90caf04d _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x90d6fca3 unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x910fdb48 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x911fff22 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x912043e7 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x91281227 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x912ead81 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x913fdb85 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x914f5397 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e9c3c4 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x91f9ceed unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x91ff2893 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x92067407 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x920e1cab add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x921a99f4 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92511468 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x92583052 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x92674018 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x927f5105 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x92a3476c ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x92ae47eb usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x92afe9f1 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92cc248a bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fe9877 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9321df52 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x9324b4d1 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9330e92d stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9335bfbf pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x9352c7f5 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x935eb238 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x93618c70 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x938ccd50 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x93a1eb85 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93bea1c7 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x93bf2fcd __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x93bf7886 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x93ce8517 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x9403acc5 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x940631f8 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x940fda39 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9430be43 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x9431b28f regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x9432b036 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x9448b7d7 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x948911f5 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x949dc375 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x94a163b4 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94a6d9f0 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x94ab2137 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b1e3db virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x94d21835 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x94d6babb devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x94dd3aa6 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x94ea741a usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x94ee306f devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f201af component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9527507d regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956fd3e8 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x957077ce regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95abb102 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x95ae451f devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x95af56c5 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96311e58 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x96346c35 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x96451238 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96863b93 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x96a17bca __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x96ae34ea gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x96b0c611 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x96c0996b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x96c2d5a0 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x96e36d58 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x96f97f9d bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x96fc6032 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x97013172 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x970f1d70 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x971aef18 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x97316876 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x97447278 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97816693 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x97a8d3a4 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x97db689f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f48a84 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97f65972 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x98261c86 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98455924 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986d5a53 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x987093af dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x98752743 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989eb047 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x98a268ab extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x98a3c2e2 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98bf3b89 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98c35896 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x98ef838e mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990aac01 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x991e3326 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99450db4 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9951ba8c regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x9959c0db pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99662ee1 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998cc850 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x9991fe53 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x999234a1 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x99a6c4fd pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99ce0592 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x99d13e34 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x99f91d01 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a17ed57 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x9a25ce66 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x9a3d74d8 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5060c0 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9a5e6024 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9df19d tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab87413 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9acdff81 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af97ff3 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x9b21adba inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b3a9e79 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x9b5da2b9 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9b682177 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x9b88deb8 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x9b96d0da wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x9b975a7d irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x9be233d5 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bff95a1 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x9c0b6c9f sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x9c1b96ac usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x9c22bfd7 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x9c4463d8 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x9c462500 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x9c539bba do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c8a2281 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x9cb904e7 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd4ed0b regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9cd6448d tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9cf5dc77 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9cf70305 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x9cfcc286 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x9d10e523 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x9d2120ce scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x9d4670f0 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x9d522150 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9d6e6996 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x9d71f764 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x9d7c6966 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d9017e5 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x9d9ffb53 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dc860ff __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9de8e65c ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9df9f8e2 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e1a44d0 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x9e321473 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e6bd3ec regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x9e72fcef perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x9e88cb86 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9eb5c558 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x9ec9e859 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee3c2fd ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x9eeca90a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x9f5077a2 of_css +EXPORT_SYMBOL_GPL vmlinux 0x9f59f411 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9f855c70 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x9f85d9fc tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x9f9654e0 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9fa51ca4 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9fbd7f76 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fda07cd ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff37117 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9ff8b309 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa009e296 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xa02afca6 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xa030fa29 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa04e23ee wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa08b7e9a gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xa0bb3636 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xa0d6b8c9 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0dd2347 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa0ecb175 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa0f20e7d devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xa10682d7 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xa10b7506 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xa1257852 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa12bd793 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa174aed7 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa17a144e scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xa17a2be2 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19931f6 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa1b49b5e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa22b08fc transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa22d7409 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xa22e9691 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xa240e87d devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa25d5168 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa2616b47 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27c8a29 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c750bd posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xa2cd5f5b usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa2e44955 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xa2e6b077 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa2fdd514 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa2feee4a sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xa3659ef3 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa371a0c3 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b72cbe da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3eb1add virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xa3eb8022 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xa4182394 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xa446d704 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xa456aee1 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xa45e4ebe regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa471ad3f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa47666ad pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b058d7 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa4bd131d device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xa4c70446 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xa4cbd461 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa4e01c6e device_move +EXPORT_SYMBOL_GPL vmlinux 0xa50dc797 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa531e06a __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa532f307 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xa535aea5 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa53b6a5d irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa54c867b bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xa55bada5 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa56a46c2 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xa572f7ee tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa583c121 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xa5910736 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5bedbf9 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5fe878f get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa633a506 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa6376ef6 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa6390157 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xa6602adb regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xa66195a0 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xa669841c crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa66fc75c clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xa68f80e3 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xa694ef7e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xa698cf41 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa6aab6de tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6d785d4 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e2c771 component_del +EXPORT_SYMBOL_GPL vmlinux 0xa71234cc dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xa71fe4c3 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xa7326215 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xa737248b init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xa74ae9c5 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa771aeb0 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7d00609 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xa7d7c025 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xa7e27f81 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa7e30f62 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xa7f46eca regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7f69a6c __module_address +EXPORT_SYMBOL_GPL vmlinux 0xa7fd737a inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xa8113492 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xa83cf06a pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8732a89 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa8a42afd pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xa8a95d34 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xa8b04ced usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc7d16 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa8fc1636 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9548b1e debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xa98202e3 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9840f0c sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa9b22f5e pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa9bb313c pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xa9d90af0 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xa9dad7b6 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xa9e0a247 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fee263 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xaa0819de input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xaa0aa72d crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xaa135f63 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa4a8a42 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xaa79307c shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaa94744e pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xaa9b4d38 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaabdbd4 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xaad081a5 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xaad652f3 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xaae7f2bd trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xaaeb8fb3 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xaafe8ad1 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xab0dff31 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xab1fc065 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xab2753cb pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3a7f78 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xab49b385 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab61131f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xab6663b1 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab813dab kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xab927351 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xaba3b686 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xabb280a8 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd3b37e nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xabf20a6b gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xabffe056 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xac161136 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xac404367 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xac6be867 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xac7e6584 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xac9c5b0b sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xacb222b5 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xacc4e75e sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xacddc7d9 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xaceb9196 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xacef4ebf user_update +EXPORT_SYMBOL_GPL vmlinux 0xad137124 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xad1a422b cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xad295e00 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xad3f63bf crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xad594918 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xad5a2e3c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xad679319 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xad7c7175 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xad80320b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd854d6 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xade51aa8 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae03869c tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xae23837a put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xae2e9a69 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae3169d5 find_module +EXPORT_SYMBOL_GPL vmlinux 0xae324828 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xae53b038 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6bd83a ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8d1350 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xae8fa89e sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xae9ab6ac agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xaed1b667 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xaef30631 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xaf0deb0c devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xaf200957 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xaf273b7d rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf30ba55 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xaf4f3872 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xaf51408d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xaf6a0223 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xaf92b7d1 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xafa0b58c usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xafb37e9d elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xafbba799 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xafcde281 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xafce6ebf ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xafe8e881 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xaffb52f2 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xb0052044 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb009cf0a of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xb0157d52 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb015a1dd pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xb01af35c dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xb02792c5 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0536724 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb07783bd usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xb07791d7 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0afe397 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0e0a8bc blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb114a2e2 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xb11a2e26 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb128e70d input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xb13f0ace wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb140dd35 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1604312 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb1739a10 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19897d8 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb1a959b8 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1cf6a2c of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xb1d214bd of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb20726fc blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb2285cd2 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb25ea345 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb26b87be gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xb28ed413 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb2a35d72 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb2a5590a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb2b8daec mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2fb82a7 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xb324dd71 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xb344c367 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb37ff492 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb3bc60fd wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xb3bf7f97 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xb40d8d8f __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb42c3bab crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb43cd730 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb448a9fa blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb4574fa0 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xb46a456a extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb476aca3 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xb47b5ebf regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48a1867 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xb49349df skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xb4abce4c ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f60e02 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xb5035109 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51af301 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5219834 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54d40db cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb561048b swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xb561a0b5 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb56681d8 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xb56f1354 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59154fb sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xb59b2163 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a98979 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f9a352 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb634eba9 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xb63cf569 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xb657742c rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xb65b98e5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb693bdf2 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xb6a94f7e ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb6ad951b relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bdf7d6 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xb6c966f9 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xb6d02948 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb6dd09b6 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xb6dfaf06 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xb705c96d ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb711d130 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb745223c arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xb74c31a5 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xb74cb92d usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xb77ac355 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xb79935c4 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7aa379a __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xb7d92d68 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xb7e0ddc1 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb811be2f sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb81eb547 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb855213d of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xb875713e serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0xb877f094 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb87c4d70 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xb87c8844 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb895f5d2 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb898a61e attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xb89ff4c2 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e424ea pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8ef08b7 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb902aa75 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xb9057e0c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb91a6370 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xb935218f sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb93e7290 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb958aa3b bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb9777df3 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb9b12c48 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d679e6 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xb9da0ee6 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xb9dab99c __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xb9efafd6 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xb9f9b3df udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba42446e pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xba4b91b4 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xba81ace4 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba93259e crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbae03974 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xbb00c71b usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb142c52 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xbb368c26 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xbb4d2f84 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xbb60d22a of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xbb72f121 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbbee5ca9 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xbbfb906b find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xbc097b8f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbc297697 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xbc4c6481 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbc5df059 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbc62d485 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc81d1a8 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xbc9531b3 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xbca7f550 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xbcaadb45 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbce2d244 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xbcf5a9c7 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd16c2c2 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xbd2f852a tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd519b05 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd78d93b scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbd7d3e29 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd7e1312 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xbd9862d0 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xbdc4a823 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbddc8f6f rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbddd989b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xbdf88d40 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xbe026d76 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xbe097cd5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbe12df25 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe18e9c5 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xbe2712bc percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbe479453 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xbe61ba44 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbecb99c9 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeec6472 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xbeecdea8 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xbef943e8 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xbefc75f9 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf05f11c usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbf0f8274 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf102d13 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf126e54 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf5c6567 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xbf6fb964 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xbf719710 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xbf9f3aea perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbfa16a6e pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd32d86 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xbfd4d7d8 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01b1af8 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc027f714 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc03d1eaa fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xc04e347e tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0958452 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0aa3c73 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f1ee31 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xc10ea1ef fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xc11654f0 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc134a47d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xc14aff77 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc15aeb16 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xc15d646e debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc1613d43 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19a4ba6 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xc19b0407 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xc1a2ed1f thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc1aa930e rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xc1aaf24a rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xc1af16be regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc1b9adae cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xc1bb35ab __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc1dd3787 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc1e45c93 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xc220969f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23e582a lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xc2533d2f ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xc261e1f7 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc27e3f40 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29e09bd tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc29e3ed3 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc2a3c6fc of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xc2b10aa4 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2eb51eb usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xc2f0d012 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xc3039bcf i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc330d25d skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xc33b09fe regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34b3a44 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xc35ea32c inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37cc671 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xc38a111b devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xc390211b __put_net +EXPORT_SYMBOL_GPL vmlinux 0xc3c7744f fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc3d4598c blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xc40af6f3 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc4235c74 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43e5947 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45675c3 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc460bb09 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xc46111bb blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc46b9a48 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47b354d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc48aa3cb user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49379a0 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xc4b36398 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xc4c0cb8a crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc4c1ecaf bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d1bbdf ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4f69b98 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc563c422 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc56b54d7 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58c8416 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b9483d simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xc5bd6d70 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xc5ecb788 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xc5f6dec2 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc621924a blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc645a328 device_add +EXPORT_SYMBOL_GPL vmlinux 0xc65aebb7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc65d9102 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66dc6e9 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc6961f67 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xc69b3129 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc69b5e39 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a45080 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc6ce7c58 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc6e85bc7 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xc6eead83 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc71083e7 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc75d38b1 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xc7619a45 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xc7755ed8 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc79c2814 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a38f5f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7dd8b0c regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xc7e1620e scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e9c8d6 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc7efea14 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xc7f869a7 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xc802e9a5 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xc804f5dd devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc841d78e ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xc8504a0a swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e2d7a sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xc8836f4e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8c3bb6e usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8fcc4a6 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91b0504 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc9241251 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc958ad7c pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xc96ea618 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9827954 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xc9a8ded5 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc9c306f0 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f8decf bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc9fe0df8 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xca06f41f __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xca1d8960 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xca3dd5bf netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xca3e9808 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xca6089ab dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca8b306f balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xcaa13848 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0xcaa531e4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac31a4b devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xcb11cc68 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4fa1c4 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xcb5bfead platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcb67a04d pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcbc3b0ab adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xcbd04e6a thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf1d150 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc13fc37 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc43e789 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xcc5f4f3b register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc99bf03 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccfbf749 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xcd0a167f set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd29aa32 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xcd3fa765 input_class +EXPORT_SYMBOL_GPL vmlinux 0xcd611dfb crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd8f0cef crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd95b67c blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc17a8f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xcdc8580a __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd2445b ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xcdd959f8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xcdfa35ae handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xce146fe6 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xce235c8d of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xce407f5d inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce9afab9 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xceafc2ab tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xced15aaa crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceebd2ff power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xcf12b6fd dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcf17737d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xcf17d690 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xcf18496c crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xcf1a9b1f pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xcf21ebb9 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf726091 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xcf867ad2 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf930d5e regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xcfa38105 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xcfa88f01 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfb7d27e __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd8d25f regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xcfe954ed blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcfec2e5f balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xcff00460 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd019a1ed bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd05dffe1 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd0636ecb of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd080c4d4 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xd0857e17 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd09176f7 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xd0a93f28 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd0bdf377 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c7a315 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xd0f4ceac usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xd0fb047d max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd0febbc7 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xd10f033b dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xd11eaff3 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1396c73 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17fd8d2 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd183f08c blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xd199fa01 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xd19cffb6 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xd1af934c regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd1afd213 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd1bdcdb7 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd1da69a3 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f4f6d1 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2253a3e ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xd23d8b9f pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xd24fbc97 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27807bd register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd297c5a4 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c61177 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xd2ca10a9 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd305cfb5 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xd31bc5fb xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xd3311528 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xd34969c2 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xd387ad0e fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xd3ab00f1 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xd3cf7a66 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd3e57e08 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40845fe trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xd40e59d3 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd410dde0 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xd418c396 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd42a70f4 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xd43adaef dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4823def __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xd48b384c devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xd48b5e01 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xd48db691 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd4984975 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd4b30939 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4fe258a ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd50ee16c ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xd525bf8e sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd527f73a ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xd528ddca rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xd54f5dbf blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xd55523f7 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd57cc0cd xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xd5858d6d rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xd5a17db6 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xd5b85c98 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd5bc6ea9 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cf355a tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xd5dc5546 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd613f9ae rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xd61502c9 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xd635534d user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd661685d i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd674b6a8 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd6827861 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xd6a111c2 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xd6a8e3a5 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd6abf654 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd6b8a6ef rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd6c6f091 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xd6e1445a single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd6e1ec11 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd6ebdefa crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xd6f3041c kick_process +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd709a8d7 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xd70e84d4 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd71ad33b perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd72186e1 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xd72754e0 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78f64f1 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xd7c00042 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd7c07abd fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xd7c30b61 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd7c5d54b pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7d7d7a5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xd7f984cb dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd838902b sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xd83e3de9 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd86a65ad hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xd8755d96 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8c68ec4 component_add +EXPORT_SYMBOL_GPL vmlinux 0xd8cf3384 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xd8e469fe firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd8f0df17 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd8f72ea9 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xd8f78406 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xd8fb89c2 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xd90422d0 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xd90e5894 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xd91004bf pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96881ec of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9799235 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xd9b043eb mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xd9de8623 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1ebfc3 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xda53818e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xda5a35b0 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xda6440f5 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xda97bce8 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xdaa29ec4 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb161a01 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xdb1bbddb exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xdb20e1a9 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xdb31d266 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xdb41f401 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb715edc usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9e741e xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xdba681d7 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xdbcb72f6 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdbd0acee wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdbd5d433 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1a714c pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc3e1bf1 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xdc3efe17 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc89a825 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xdc95c17b evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdccdc6aa irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xdcd03074 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdcff0371 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xdd072136 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdd13624d skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4c980b smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xdd713c0e virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7db2be i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc65894 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde1a6b77 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xde83d561 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xde915a97 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xde9463a6 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xde99c9f4 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xdeaefb1f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xdec1d986 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xdeee889f device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xdf0528fa crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf35b9b7 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xdf4a7dbc class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf55dbd0 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xdf709fa9 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdfa60041 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xdfbdabff spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xdfcab146 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdfce0d81 put_device +EXPORT_SYMBOL_GPL vmlinux 0xdfe5ca8a skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe017f4bb fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xe01d9996 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe047cc39 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xe06c63c7 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe080724d rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xe0821669 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xe083fac3 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08a52b4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe0975ac7 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe09d3992 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe0e51f64 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe0ea9acd rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xe1083ae3 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe169077a usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1852c57 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xe19f2524 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1ccf97f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe21db179 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe23fae0f tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe244fa84 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xe271563a __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xe289ee3a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe28c5a12 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe2914fad pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xe2937777 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xe2960cc0 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xe2dcd3e1 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe2e91185 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0xe2ef29a1 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xe2f45e3f debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe302ae9c kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3104674 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe335629d lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe33fd3e9 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe36eeb79 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3703945 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe37915d3 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe37cc4ff trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3a7ceae sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe3bf5e4d iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xe3e3e7ac bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe3fa9893 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xe3fff321 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xe40ff235 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xe42cf3b0 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43b25f9 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe4545c77 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46c44e0 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe484054e metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a0d7af __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c088b2 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4d60428 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xe4e8e26b dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe4f1f25c ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe531bef8 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xe54732e0 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xe551f1d3 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xe55893ab gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xe5693fc5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe5704894 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe587e483 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5898606 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5acea33 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe5c08e3e dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe5ec4a69 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xe5fb2ed9 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe616848a rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe617cff5 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xe632ee97 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6612b5b platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe677858b get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe67d63ac rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe690068a shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xe6ad7998 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e38c48 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe6e76c54 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe701e20e bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe7566a5b udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xe75d746c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77cb1c7 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7944758 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe796b8ce extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xe7bb8285 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe7cec382 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f38fc0 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82ca8a7 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe83865ff arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85b7538 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86b8543 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xe87636ba rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xe889d826 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xe89ab8bf fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xe8a5b1f7 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe8b08fde extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe8ca9dae usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe8d71536 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xe8d9fc5d pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xe8f1cb80 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xe90d2851 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xe916f2b5 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe91f23fc ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe9251261 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe9291db3 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xe936146f devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xe9373ae0 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xe93946a8 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe943a2cd devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe949504e dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe94b781e reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe9620921 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe97f8367 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xe9808610 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xe98551b8 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ea3277 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xe9ee96df sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea192221 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xea37d980 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xea39ea39 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea549226 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xea5c85fc thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea66432d blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xea78f202 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xea848bf2 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeadb566b ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xeaea6667 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xeaf96051 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xeb2ccc9d uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xeb35661b ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xeb7d91c4 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeb7da663 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb88f960 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb8b5bfb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9c1df6 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xebb3592b snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0xebbbad2c regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebe9458b device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xebeaabb7 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebee61c6 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xebf1a206 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xec05f6dc devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4140a0 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xec60a2bd regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xec69e975 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xec995f57 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xeca79b18 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed0346ed ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xed06c5cb pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xed36b00b pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xed483a40 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xed496c15 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xed51262b reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xed7eb43c pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0xeda27249 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xeda729ce usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xedf06ee2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xedfe38ad do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xee2b4392 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xee364758 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xee4feb8f serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xee52543d pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee92298b ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xeea26fd8 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xeea77198 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xeeb8ba8d crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xeec02882 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xeec52950 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeec9ca29 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeecf982e pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xeed0167b i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xeefd3f1e pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xef0842ca fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xef0dc540 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef48db96 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xef593368 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef970864 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefce8260 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xefcf2079 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xefe22510 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xefe38a90 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04921ac sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf04f22d3 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf099581b single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xf09ba4d7 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xf0c7490e wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf0cd7547 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xf0e6c25f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fee95d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf12d82b2 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf175dea1 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1a82cfa shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b8f622 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xf1d75157 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xf2196393 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22fb1fb kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf23cacdd syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf23ee0ab bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xf2521fa8 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf2635ef1 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xf266cd2d blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27f27d2 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xf29d6da1 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2c29517 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf2e09392 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xf2f89150 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf327fc63 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf341910c usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf347a99f pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf37e8ce6 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c3b6b __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xf3a37beb device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d4bd9f usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf3de2709 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xf3e21aa6 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4067b40 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf424a776 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xf4781754 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf496f97d xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xf499f2dd crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49cfcd9 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4b7f01a ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xf4c00751 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xf4cd304e genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xf4cd807f sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xf4d28e48 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51e0ae3 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5558924 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xf56b9623 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xf58cb3d8 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xf59af5e6 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b333cf fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf5b41e4a irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xf5b994df __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5bfaa06 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xf5c84b4c usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xf5cbfa1b dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf5eba152 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xf6096ed2 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xf64884ad device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xf685f5e0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xf69146a0 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf6a1df3c bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf6bb42fa pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d304c1 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xf6e559a3 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xf6e71eba unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eb48a4 check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xf7015d36 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf705073c ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xf709e73a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf70d2e0c of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xf7413c5d sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xf74d006f task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xf7781399 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf79fa737 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf7c28d3a skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xf7d21303 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xf7d54f26 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf7fa81c7 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7fbbf04 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xf8080028 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xf81c9bae inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834de72 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf84ddd3a smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf8761da1 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf897987b devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf8b05938 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf8c8eba6 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8ed0511 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf8f3865c of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f49fcb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf8f4c409 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf909c167 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xf91eac65 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xf923666f crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf938aae1 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf970a078 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99d24be ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bd227d device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d86ed8 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xf9f16954 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xf9fe6279 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xfa050d97 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa9fbff3 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfabd068b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xfad71960 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xfb029202 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xfb141b42 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xfb1d3a7d regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0d7f __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb45a4e7 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7f3468 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfc03277b usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0597da usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xfc3b8301 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xfc48f416 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xfc583866 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc659d85 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xfc695854 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xfc966671 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfcc38c10 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfce82156 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd00a7c7 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfd1b6d06 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfd20d841 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xfd21affa led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd3e6c18 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xfd53b984 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xfd74bad7 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd81d99f skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xfd8270e1 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xfda8c982 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xfdaf6d53 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xfdcb4b7a of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xfdd9e083 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xfe0478da ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xfe0aff52 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xfe22e519 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfe292a4f rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfe3079d4 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xfe31ad50 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfe411b7d kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xfe677016 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xfe751737 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xfe93bff3 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeaab266 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed55099 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xfeec67fa __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xfeececbb init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff005f2f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6b4039 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xff81c6ca __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xffa7922b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffb40881 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffc9b622 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xffd35574 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xffe9e73e ata_pci_device_do_suspend --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc-smp.modules @@ -0,0 +1,4308 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airport +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams +ams369fg06 +analog +anatop-regulator +ansi_cprng +ans-lcd +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +apm_emu +apm-emulation +apm_power +apm-power +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmac +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83848 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusb300_udc +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hifn_795x +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-hydra +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac53c94 +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mace +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +mesh +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mv643xx_eth +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct7802 +nct7904 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pmu_battery +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +swim3 +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +therm_windtunnel +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uninorth-agp +unix_diag +upd64031a +upd64083 +uPD98402 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_emaclite +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb @@ -0,0 +1,17121 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x6ecb5300 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x4efd258a bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xe4154890 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x04102bd5 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x427272c3 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x50fd7111 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x782358b8 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x83e1a71c pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xa12f8c93 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xae58c036 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xcced44af pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xcd29cf25 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xd93fc0c3 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xef57cd2e pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xf8d3a0b2 paride_register +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xd9204337 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2f88b75f ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3843c4de ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7ea9793b ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa69ab997 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xce934fc6 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4813aa3c st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x7ee27467 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x05899168 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x84d126a5 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xe7076f75 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x2fce00b1 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x88d18254 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xa7c1451d caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbdae0134 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xecb8c1ca caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xef13a9a6 gen_split_key +EXPORT_SYMBOL drivers/crypto/talitos 0xa24fdc99 talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x119e5104 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x93a06990 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa5d1d26b dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd2c7aff9 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xda47a340 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf3e13a11 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/edac/edac_core 0xf34c1272 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x4afc314d mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x021c9758 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x12d222b4 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x19e87e92 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x254f53f5 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2c312884 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3e132abb fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4895215d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x55350fda fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x55d03b70 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5e990495 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6293abaa fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f4db3b2 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x98136320 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaa0fec39 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaa32dfbd fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb13bf815 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb5e2a868 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbcfd65f7 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbfb18210 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc23e577b fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd63ffad1 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd76ed2a1 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd0ab7dd fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb75e858 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xef45eca9 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xffa9ae6d fw_card_initialize +EXPORT_SYMBOL drivers/fmc/fmc 0x55afe285 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x5bb17c9b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x612853be fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x664845f9 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x76150e09 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xa2b694f5 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xc2869046 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc663b91a fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc7506862 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xce997867 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xde988d71 fmc_device_register_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0x023b660b drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0316e66f drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ef14da drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05512103 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0727aede drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07d04738 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07ec0d0a drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08554265 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x090d5707 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0986c618 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a8f11a1 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0da763d4 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0de1423a drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e699673 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f4ba96f drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12094f5f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127dc2c1 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x129ad645 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12e85832 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1364bdbf drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x139e180e drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14bf30b0 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1627b4a8 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17301fc4 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1762e76d drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x183d0921 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ede361 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x196df6a9 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19efa173 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a3cea1c drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b662b94 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bc73b75 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bcfed77 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bdc8706 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x206ebe17 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20849d76 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e419a4 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26282e5b drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2660beed drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27b5d6f4 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28315832 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28cada30 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c23b6fe drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c6cdbd7 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2de9cc38 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e1b8ab7 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e322dc9 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304464be drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32215a52 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32243c4f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33159489 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33b7f1eb drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x347881d9 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x365c702a drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36c0e214 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b954ca drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x380a7f55 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x392584cd drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393b655e drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x397b223d drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c89f10 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aee19a4 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bae8bc1 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bd0712b drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c5a88fb drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ce182fc drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e84a5bf drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ea71521 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f6530cd drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe3ebd5 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x408e2af5 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41407c3a drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4198fb08 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41eef493 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4223d08e drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423e5f12 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4379dd42 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43a203d8 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45ae7664 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45cdbcfb drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x461b7e59 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48484f6c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49456a05 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a3a772f drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a74afdd drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b875dd0 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c549d0b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d65e807 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f62057b drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52706f28 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5393416d drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x543e155f drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54983369 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56774c4a drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x578af827 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ad8b3a5 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b748d03 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5be3d411 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c0c4d1f drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5df4d172 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eadc566 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7df5dd drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7e6921 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60a6e70d drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63b2b4fa drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63bb4f7c drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63f8951d drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6548ed46 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66490f5c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6650859f drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668a2b85 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66b7c6d5 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x692e04a6 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6989453d drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b818afe drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c86a98c drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d9603ce drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6df5ad96 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e3824e7 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e8bb41a drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6eb28071 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f609340 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70822d4c drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e50ca5 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73439705 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77395da5 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78b289e0 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fa8154 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a1af7a2 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a9606f1 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2b24ad drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb443dd drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cc50d2b drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cd98c62 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f8e9d83 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8096446e drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80aa3899 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8141320b drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x817933cb drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81a3be87 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x820de767 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x828c05a7 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83ce656c drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8430c69b drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85d7e56c drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x860b8b83 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8698be99 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87605b05 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87dbb831 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88c0078c drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8998c35f drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c431e4 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89efa526 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a90af15 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a9a3415 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b658b29 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cf931bd drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d1d3948 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d5d4406 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de11c86 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f150f1c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fdb493b drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91425134 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x915e06f7 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92a5aa14 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93dc8362 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95d5ec15 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95fef553 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9603065f drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983a6014 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x989c3dab drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a4125f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98fe5d81 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b01f15e drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b5d1811 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bd40f90 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cde77fc drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0c0707c drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa112324b drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2f89cc4 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3bbfc4c drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4c4fb1d drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa50973b5 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5188ef2 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5cf413c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa86a0877 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8706773 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa34721f drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa42a063 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac37d4c4 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8810a0 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad0d11aa drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad191868 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadcacfcb drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb005b37a drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb00815a8 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb01ceaa9 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0e83120 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb278d678 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2bb585c drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3931ffa drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb48b752f drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb71edb0f drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb726b795 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7eb6c35 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8b2939e drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaeec953 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcc106d4 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbccb34d4 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe712773 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbea4686b drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbec0dafa drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf64036b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0a4d02e drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0fa2f4d drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc11448a7 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc16de3b1 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc281095e drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc34cae90 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3700c39 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3d2fe10 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5822b86 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5973841 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6ede008 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc74e8cc5 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca2048e3 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaa95278 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9f8d69 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbab22f9 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccce81cf drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccde6b13 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfc2f275 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1a742ac drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd28b3f64 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ba2106 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30cb739 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd33c7689 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd361a769 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3ce43b5 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a03630 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5883f1c drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd92c92fc drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd952fa4d drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9910131 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd99a0640 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9d08402 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc604c2e drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdd29c9 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde305f84 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf6040d1 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe12ff715 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe16944f5 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1a29d32 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe24fa52b drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe55da722 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5a8dcbb drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5c54a5d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe77e458c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7f9c7a4 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8f11f43 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9e01860 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec54a43e drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef87c6f drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf02f4241 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf15f2f0c drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf34822f1 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3bcb563 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf68a5293 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf781ead3 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf840a5d0 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87e444b drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa83b51d drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfab009dd drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc50204a drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcef7d78 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe0dece1 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0162e4bc drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04b12448 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04ec5f4c drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0527059c drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x053158d6 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07dd3ca9 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x086fc5bd drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09782bb0 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b5e34ba drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11b4411e __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x123263a6 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19bae1fa drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1aa6529b drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1cbfa4cc drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1cc09f86 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1de1255a drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e989ea0 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f17c079 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21178402 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21d71bef __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21ddd81d drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x236a64b2 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2526bd03 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x271eb654 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x279b6ed7 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2881aeb0 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29bdbbc4 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29d2039e drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d6214d9 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x304d5c73 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32c6c55a __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33b3641d drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34a43a47 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3763f0ed drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38ff85bb drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ccffb0a drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e1f5736 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x467f8c08 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46af0cbb drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a448f6b drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4abee1eb drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4be4aeee drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f4dfa8a drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53fcdce8 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x551b9f95 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5746a3b0 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58e5530f drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a94ddee drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c09d10b drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c7910be drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ca06ece drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e29b8ff drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6127003c drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b75660e drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6de1c5b6 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e8b8c11 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fcbe4bf drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70197ef8 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72a81129 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x760b88c6 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a6d4ac9 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b6c3cde drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x815601a0 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81b2c7f6 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82df8441 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86eb9686 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89b3582a drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c13d9db drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d5d4861 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d9dc7f9 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dfec413 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e0ec768 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fee417e drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x928aba98 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x943075f3 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94b665e3 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94fe1907 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99c8970b drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa23dd6e2 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa28f4a83 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2db4bb3 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa72482ef drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa86b9b11 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa60383e drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaab4fe03 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaddfa220 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaea020eb drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0446231 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb183b408 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb58bc188 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5b230f6 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6c8d78d drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf32efda drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0993527 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1a57e95 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3d212a0 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc50732c0 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc683614b drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8744405 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9ff3bc2 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb2f3176 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbbeb984 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc7f4a7a drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce1731d3 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfeb2f77 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0610e14 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd12a4cc6 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8103c9a drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8a2cfcb drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd516956 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfc14d9f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe067f624 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0a07b7d drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0c96868 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2af88b6 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4b11119 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaa43996 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xece9970c drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed41e83d drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee5b92e0 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2d3251b drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf783ecb9 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc226d73 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc8fd158 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x048797ed ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a8dfed9 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x106ac053 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1798c6d8 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b496ae1 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ce8d716 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ffd7c77 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25d462d4 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c7de58c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x309690bb ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x41d58703 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b89e889 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d9186ac ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4dc69e58 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e0f32cd ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x538e4232 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x553b41d2 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5635e74a ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57439d11 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x599d9a76 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a91a724 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60a52fb3 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67f5de4a ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ab044a1 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71417ded ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72064aa2 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75515c8b ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x77fe891e ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x816413ca ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81afe3c8 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x838ff186 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d9bd563 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ae0c533 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c48a73e ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0f3521a ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4eddf8c ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa55fd74f ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa632d12f ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6905469 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa289ae0 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf51195f ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3c350fa ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9350a13 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2e8c9ba ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2f260da ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xceddb2e0 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf1683cf ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd173b103 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd38060b5 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xded537b3 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdfea3f46 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0b7dfed ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6f9a93b ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf3e203c6 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5cd72dd ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x26ecba18 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7f19ec2a i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x91b25714 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3ee34f02 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf03a263f i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xd76613dd amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x05820db6 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0c797de3 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0de4b44f mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x14193769 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1885ca37 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2b0c5951 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x471421d7 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x51612333 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5f6169f2 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x75877659 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8de6fb97 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa7e0949b mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc47d2e35 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd4f1e045 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf040ebac mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfe1aafa0 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x1be4d9ac st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xfe1e774c st_accel_common_probe +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x953210de iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xbff41566 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x49e9f605 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x617e86cb iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xaac96d44 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xfa463b1e devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x146120bc hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3fb9af43 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x61843bce hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8983b1d2 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xab295db1 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb06d395a hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3d66dedf hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb1ac6c6e hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xea449401 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xffb45754 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x0166fee1 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1689bd25 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1e8749df ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x21670083 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x379c2980 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa7b24129 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa81b6e3c ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc618a4d3 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xdd997a8b ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x164e1559 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x38d6005f ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3acc5aaa ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9d5d656b ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xdbb0f4e6 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x9e5814d4 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb6cf6e3c ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf4485891 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1fe94bd2 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b0a8762 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3abef49a st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3f3b0b86 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x477fbacd st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4ab1946f st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5b8181f5 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x676048c1 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6e62eceb st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7ce0b21a st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8f53fff9 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa7a3dadc st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd12343b7 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xda5df29c st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdc521054 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe9c2e010 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x6d914c6e st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xcbf4f863 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x98adeefa st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x82e5ee7b st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa79e9e6a st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2c7b9711 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xfbc04d75 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x220e52f5 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e1380be iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x4fd6c970 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x64fa999e iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x71857b46 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x7a60aee4 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x86103c80 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x9b793044 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa5b66479 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xb62bd36b iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xbbdad68b iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xc511dd37 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xc8376420 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xeecc73a3 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xef8e4a59 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xf9363c56 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xfaef815e iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x13376bdb iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x5540aa53 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x4023218c st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xb6aeced6 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7e3f3359 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x91ec4803 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xfde87792 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3bee8d65 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x899a94aa rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9a7f2c67 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb0f4e901 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x074e3317 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x08079262 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c1412e0 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0db472e5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x17405760 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x194118c3 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1f64c760 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2a7739b9 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x45fc41cc ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x63e0f460 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7186e783 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x78ce2019 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x80e08314 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8147fc3f ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb1d3c3e5 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc50a8da4 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdb32fe44 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeefb4448 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0317e981 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x067922ea ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e6bd519 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16ce5b8a ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a2be085 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c590d88 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d34f8b1 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f141f69 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x239854a0 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23a1c9dd ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a03f07a ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e1cdd87 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30ec3277 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b1db13d ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ff37676 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41ec4c13 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4223641d ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44b28e2e ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45f622fe ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46c3318c ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d359ca8 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58ef92fe ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x596179b7 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a1d063c ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bce9b68 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d1879d3 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e40eb00 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6024db22 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x612a8759 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6596b55e ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68e59086 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x693ef522 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cb1577f ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d4cab3d ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d573bfe ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e4687c3 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x755582c5 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x759785d1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b528e83 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x817d8e96 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8adfb565 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91ec6c12 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x973abccc ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97a955ef ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97f7510c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9aad034c ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9eb2064c ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f1137a8 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0ee77a7 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6afdf21 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa75d1daf ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaad05afc ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab6143d5 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabfdc1bc ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae5038ac ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1fdbdb3 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5e8e185 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb73d5c20 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7d94849 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8c122bd ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbce0ea40 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc031ec0b ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1d705f8 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2c5d74f ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc50b1036 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc89f1860 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc5890d0 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xccb55a38 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2beb5af ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd67a0b5c ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd68353ab ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde1a74cc ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0e33422 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4acc75c ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6061246 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedd2ad4c ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeff85c66 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf16cc869 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1808184 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf42d28d0 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe610aec ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfedcc306 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfeddef02 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x016e055d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x057094a3 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4e83aa71 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x638888d8 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x68740c40 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x72dc597f ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8f809637 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9615e0ee ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa97fe032 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc8d4c3bf ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcef38ef1 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe2c5f372 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe6bc0d43 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1058f2e9 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22de69d5 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x53bc505b ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x69f7fff5 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x75f3f703 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x85edcac9 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa89a516e ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb9977730 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf7bc4ca5 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xee1da400 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfa2d538a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x05d700b9 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0a8c1053 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x15aa178d iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4bd9b22e iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x73ac98d9 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x899110ce iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8f025893 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x93134761 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb0d888d4 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbaea43be iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe2ae49ed iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe84fb79b iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xea228270 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfb1670fa iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfeafc175 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x07f66cac rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1054dc29 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x136003c0 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x35c1eb2e rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x545a4735 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x552bfd35 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x559ab6ad rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x59e2b0f6 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6a19356b rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70d6c148 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73636544 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73d382c5 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7b86f375 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7dd6eab5 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9808a6e9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9f05939d rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa8c0c0f3 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaf2afea4 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb334914a rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb867ad81 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc42faa70 rdma_accept +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3e5420fe gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3fb1203d gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5b6604dc __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5ffebd0f gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7311a12c gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa33f1cdf gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb640ccfe gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcaf5eaa8 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdfbce2a8 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x121dd449 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x852aab4a input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x97c7a8c1 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd204dc03 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd7355491 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x49b18247 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x11caf7c1 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1321c298 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x69d39b30 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x42f9cae8 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x01104c99 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0d084615 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x383e00c2 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x39d28058 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x57439000 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa42e03e0 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x19613669 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x5cbb3d3c ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x079b235b capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x46b5bcd0 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x56571337 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x587307d2 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x58a7ed99 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x66434472 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8c3cf1ba capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x93cfea6b capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xac7c8033 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd0d535ee capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x05a07164 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1cad3ef7 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25f4e435 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3b3a1a34 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x427f9dbe b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x561a1eb7 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x63d83c12 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x770ab288 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7fd505d0 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91bc9ab6 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbf6005e2 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc26e7c24 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdd50da2e avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe6489c29 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xec3cb9a3 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x28297d2e b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x468e13b5 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4b395739 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6480a040 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x71c481a7 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7475f958 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd94d8ad2 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdd9a785e b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xee0b909b b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x04e69c94 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x2bd822f5 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x310714a9 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9d956760 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x40427bb4 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x407ea493 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x26179843 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x15c59ca0 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1af41206 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9b319838 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbe308d2a isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc2b0d987 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4889ba0a register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xabe41588 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb37c7982 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x080e5606 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0f1c4785 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d15e149 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x237ac0ef mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x319636dd recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3570e83b recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3750790e get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x55bc1d06 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x61da614b queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7377538f bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7d37b598 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7edad9ac dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x879e599a bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x92f2f11f mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb05730fa get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd003f1cd mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdcf372ea mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdd048060 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe4c334a0 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xea775a5f mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xecc109bc mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf29bf842 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf8ad1fc0 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x12b3b12f closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb64cdad5 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc95b6758 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf30f09e1 closure_sync +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x257c833e dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x687b1d29 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x8acfea69 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x9c8be991 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x08baa26d dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e274d23 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5416bb5b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8e7b70eb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb403ed50 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdbd7b6aa dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x0ddccb73 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x134dd752 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x14ce427d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x17ed7d49 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2822ef24 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3db2ae9d flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x433f8501 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4a27e40f flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x78940067 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc8c5a233 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe2e01144 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xec74a8f9 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf0606558 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf32aed67 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x32e3751b cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x38d52e01 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3e4afc5f cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8555617a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x4f5580f6 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x74935511 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x8f70479b tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x015b50ca dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x066f5b98 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11c32267 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2690ca05 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x289b9740 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3bbbb466 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43666002 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x51aeb66d dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65c3aba1 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6a676979 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6c42a818 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6f5d4b8f dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7d43613b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x88bd8f74 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9368e7e5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9f1e88b4 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa271e371 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa57d19ca dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaaffdd38 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xacc90b96 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb46fddab dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbabdf4e9 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc70c6077 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc77db039 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd56d7142 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe30df5ff dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef68f562 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf95f6ea4 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xadae175a af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xaaa80e9f ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x1b0efc0b atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0eb8396c au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6dc129e7 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x907401e1 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x917b0d54 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x94e776ff au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x97df68f2 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb82af3b3 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcb584fde au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcd9c72ca au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x9a5c7ffe au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x4865516a bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x5c04a183 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xe73eb70d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x939d6d5f cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x32583729 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x925b8ef7 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x3d9035fa cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xc4a6fcb1 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x68561286 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6af24abf cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x93edd755 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x478b95bf cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x55d9a6a7 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xadc8ff0b cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x14b132ef dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2c37e552 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x411039ad dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb85e239d dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xed4ef7ec dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0e7fd8ad dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1661bcbf dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x39b5a576 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3b3a6f80 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3b9840ef dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x66689ced dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7a83cbc5 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x87047443 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x95378fb1 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xad93c442 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb3017cfc dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc92bc101 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd06cffb1 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf018e6ed dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf7ad8440 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x1bc8c59d dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x09b67c80 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2e5cb719 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3c24aed2 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7bf81888 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xbdf3d27b dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe1bf7bf4 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6f7bba3b dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8d92ee32 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9a42959c dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xac368260 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd722d917 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x462b477a dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x09056cdc dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7af79047 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8bd91a6e dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8fc7abf7 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd4711054 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x48928959 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x357b1426 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xcaa518f5 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xd22d4b64 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x1cc52753 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x7302162e ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x923a27e6 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x80a63bdb isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x0a27a2ae isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x33b353bb isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf61d3a5c itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xa0e346d8 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xadcd04df l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x8c4e1abc lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x1f93653c lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xed84c1ee lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x31bc435b lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x717ed16c lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x92f4a4f8 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x71be38d0 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xb4c31b56 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xd2677fc3 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x10ca480e m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x1e2685c9 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x94632186 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x5d888272 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xa97a4bc5 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xeca20843 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xaf92372a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x942f5dbd nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x97ca8e89 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x2ff1ad88 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xd4bae712 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x15c25948 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xa9624982 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7315e22a s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xa1b8dd63 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xa958764d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x38a42f7e si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x5869d5d2 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xb30c13d3 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xe0b9d112 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x85f62681 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2289e6e6 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xb2ffed31 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x958617e7 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xf06013c4 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x6f471998 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x3d3b62ca stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x3e625ad0 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xc33ee1e8 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xb026d3ff stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x39ff6c1b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xb3685731 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x1f8454e4 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xbe030601 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x415e4c1a tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdf7e4a6c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xeb6be204 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x2e032c4b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x7b3df545 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x31bea1df tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xce1b1cfe tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xdedc2f7e tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xc95e4cb6 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xe9437b27 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xbb34b7a9 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xa8838b32 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x83792bc9 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa061db1b zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x6cc40eef zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x35c16fc9 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x845c7774 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa8497937 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb4045ae3 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbe34a76c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc5b33b80 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf499fa0a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x09bb8e58 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x60c2f77b bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xbb600315 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfb68d474 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x729cad9a bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8356eb3f bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb7e4e1d0 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4cb2a29d dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x53698f87 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7182b302 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x96406e4f dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x996ea75d dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xafcafcc4 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb3ad197b dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc1c80eb4 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf4ca6e19 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x50c9c09a dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0463b111 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0db28aa1 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x160c68c9 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xaded369f cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe278ffaa cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x4caa820a altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x58f314f2 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8e27b2f4 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x98bee973 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd3ab889b cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd815c527 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xeddb5d93 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfd10e53d cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xbf137596 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf74cf26c vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x09b2dcfd cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x114fbb1c cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x380fc6e5 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x6a3ec728 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x03893dbb cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x04217258 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7b3a7af8 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x85e171b7 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbeab8601 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcc28e128 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd811b71d cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0576b0a5 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0cb4510a cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x43f3c29f cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x48b75716 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x502e53ee cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x54f48f7e cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5861dc37 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x68198498 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x74467e8b cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7d7aa118 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x851c79f6 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9cebe5d2 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb32cd334 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb39152f4 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbde3995c cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc61c16b2 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xca0abeb3 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd0b12bee cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde6b67e6 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfb2bcecc cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x08e79a33 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0a4a7081 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x255a30a2 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5225c0d9 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x527997f5 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x825d9a38 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8b38055a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaea4fb83 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaecf3548 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb62ab829 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb81bdd07 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbedafebd ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc80bcef5 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcd5f68a9 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xda04b970 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdcfacab6 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfc8f25d6 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0c37e6de saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x11c7c829 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3197c24a saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x38c45d04 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3ca8da47 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4d0f1350 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x77b66761 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x89594f2a saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb674450b saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbaabf2b9 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc3e44a6d saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfa77427e saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x5dbb395b ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4e1077da soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x65d62a42 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x86abedfa soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa5e47328 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xca15d4ea soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcd406c58 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd9405df2 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x150b60b8 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3b3aa3e8 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3bd7295c snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5d52cec9 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd36ebd1c snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf47c9f0e snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xfdd67648 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x44761fd3 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4c2f60dd lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x56f95bdb lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6b5b1ce3 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6f493665 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa2063a0e lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaeb9920b lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfb1e1136 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1887ba6a ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x5532158c ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2fc3cfa6 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x18435189 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x23d959e4 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb6b78f71 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc169c041 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xbfa217b4 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xa5bd0319 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x03ebc813 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x3ba37f36 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xa437fa7f mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xf958a15d mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xdd98f955 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xa8da7482 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x72aeca14 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x95d817ac xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x095e07ba xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x70fe87d2 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x796294dc cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x00df2b77 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6f43b999 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x895ce66e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa5574435 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc06bff79 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc7d66021 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcfaf4341 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe507bdda dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfecc5ede dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x22de75cd usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6002edf2 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb24a524c dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xee36fe59 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf7b59ef5 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfd3e3ec7 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfebf9c77 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xbd0d0c16 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x12cc7c04 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4589bb81 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4b1e8f38 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x523dddaa dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5a59c920 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7a415336 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7d395312 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x80ea4dd5 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x993cfbc0 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb22f2926 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xefc66e96 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x1011034d em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xaa0c02a9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x26dce086 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2b530054 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3baebef3 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x487225a5 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x84067801 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa6e89571 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaaad00d1 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb51484a3 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc08e605c go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x00d55aed gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0756a188 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x22ffecae gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x437ab4ac gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4ae25c0b gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5ac3ffaf gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa5efd9cf gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf05bf85e gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x599fbdfa tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x5c4024fc tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x736f1443 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc00e16a2 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xebc91768 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1bf2be54 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x7d0578ce v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xab4339cf v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x067d94a3 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4ae09055 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x88afa6cb videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb0ebc9ab videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb83bf2a6 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbe9b947b videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0b171c8e vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xe304e677 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x40838ad6 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x579bac32 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5b1cd7e8 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x8296e275 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xafa0bd97 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd0ddf5e3 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x9a14c7ec vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00d89968 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x012f446a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02fdb51b v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x09a050fa v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b50ba04 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0db11172 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1060f677 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x112cbabf v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18223a42 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1c9a4b3a v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1cdb57a9 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x232cbc2f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2667e477 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26cdd0c4 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a6d2eaf v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b55ac6d __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ea618dc v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f4943e8 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ff20d12 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31ae8749 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38ec0584 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ae21c3e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41b88a60 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42813b48 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b0a4aff v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ba87d09 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4bfca885 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4bffa7ab v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f202bc1 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x507a0157 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5645f1e9 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ab6ca94 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63a19c08 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a78c418 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6af96d8f v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6df8dbca v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71bae326 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73ff267c v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77a66e9b v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83bbdf5e __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a22f2b1 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c10a019 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d82210f v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90e2aa14 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91f2db92 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9444b40c v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x999960d7 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9beb9074 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e306eca v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f0933e7 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9faee593 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0651934 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6e73803 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa97e570c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa982a666 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6e276c0 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8c2fc23 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbaba4e1f video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf25624d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc585827d video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca283d83 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce411e51 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf52e132 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd85662ab video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9a9ba9b v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda567c03 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5ea1516 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe843aacd v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb175bf5 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeba6ead6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed255565 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3f8438b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb6c8d93 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/memstick/core/memstick 0x168b3200 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2abc0ac9 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x42ef4e8e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4e5518e4 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x93e5acb5 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa90da8f2 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa9a1534a memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc822a48b memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xed80f113 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xed9b93ef memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xee4162c8 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf812f2c5 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0020797a mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08ddac55 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0bb46d6a mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14296171 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22387eb3 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30ee3214 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x43a90566 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d8b16f5 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x731b5e5a mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x759553c4 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x88797f1a mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90339d4b mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9b97631c mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d6c5936 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa44f159a mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb0db8e59 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb2c5efcd mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb52aa9ad mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb8ade174 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbfab4727 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc31323ab mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc405e7ca mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc490f5d6 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb4734ad mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xddaa2dbe mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe161e459 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6b14f3c mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8544b07 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf2aa75b3 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x066cefda mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1090346a mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x181d3eb2 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2078c7a2 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x289a1315 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4602f41c mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x509bfe77 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5510240d mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63d5e315 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6d02ecc4 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7a11548c mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7bf822a4 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7e956ac7 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x816baa6d mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x939db3b0 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9678dddd mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xacc94356 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaf41c95d mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbd7be1dc mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4e1f7e7 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcb7646ae mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcee59d2b mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdab6d4a2 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe469026b mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf4bdde41 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfeab4826 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xff19c844 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/mfd/dln2 0x0c0d76e0 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xc76e00cb dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xfb055933 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x30fc3fc5 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa1f4f00a pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x040dec10 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0d81e717 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1439e628 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f368336 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x82c17f75 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9dd7fd91 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa3ca2ecd mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa7e70ed8 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb554a0a4 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbbec8dd8 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbe2efb44 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x43c0b601 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xd7df4202 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x0e5d4acb wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x3c67f152 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xa305f37f wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf656557e wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x208d11f6 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xe7a79818 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x30b3ae49 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x0a96497a c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xdc98adb1 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x084fb07f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xeb81511c ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x2bed422e tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x3019ad7b tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x49fab6f1 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x4b362be2 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x727ad27c tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x76f6da9e tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xbb9be50a tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xbbb490e3 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc324a359 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xcab3d483 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe5923bd5 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf9dd9ae5 tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xa711face mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x2dde59e7 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x7e2651cd mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x04ea758a cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x564086e7 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6f9c4bbf cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xbfa214cf cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xee7396fe cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf9308e9e cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfb15de0a cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3bf41708 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x57eab912 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xc282dfb4 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd9032ca8 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xaed3ac23 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x7c582e1c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xa2ff9982 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x239c0394 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x94c41c6a mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x7ef69fef denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc19c59b6 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1a124bcb nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2e4530f7 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x33bf7709 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa6fafbfe nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbff2b359 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xeb33139c nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x23a40096 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x4818b009 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdb3fa2f4 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x65f1c438 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xfd033bcc nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1a2b1f0c onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x2cb91495 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8ad1100d onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xdacde909 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x006ecddc arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5344c606 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x544f9149 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6485278e arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x761d71c0 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9d6cb21d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc2920a68 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcc50df28 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd885e789 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfe733323 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5b7aac95 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6aec3c56 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xe00f9491 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x07be78ff ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1b9add24 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x36754415 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4b2245af NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7195ae37 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9e216035 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbd50177b ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe1c4d719 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xebc38ddb ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9692ef8 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xc865707e bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x50c3df50 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x16fa4549 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x17bedadd cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x18ba4e4c t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1c4df674 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1d033903 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x30f1ab96 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3a7b75a1 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6b233076 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x74ca6bc2 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa1ae162e cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa41d0292 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc3b702d4 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xce6530ea cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe1c20b3b dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe9d146a6 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf925d515 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0551895c cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x06260f50 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b49f324 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c43a498 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0dc26e57 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1452475a cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1cf7c350 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x201d799c cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2c1a9dda cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b880136 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3fcd2b1a cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4388d5d8 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x489bdebf cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d8992cc cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x538c309a cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5d266b23 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62eb2eac t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x664826a6 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x714def6c cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7593131e cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7807c061 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x807f9a2e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x85ad8cae cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8c23f4c3 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x964cbb7e cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d4999c8 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9ee2eb9c cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0916383 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa46621db cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb23dda60 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc5ac00a6 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc8a619b4 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd7a279d4 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa77efbf cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x05510405 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3329df31 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x5285e5c6 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6c1720e7 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xadc06181 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xda783845 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x1e99519e be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa6c860fd be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03f3dd7d mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05ef2690 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a811f95 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b7e514c mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x157319ea mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f36c631 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x210d6d5a set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22aee74e mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24e4ffc4 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25baf13f mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b9cb42c mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3350aa00 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x353aaccf mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35ef80bf mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38fced6f mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39ebe0db mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4dfcbe7d mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fd167af mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68d11697 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f8ea964 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72344931 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72583a53 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94353f54 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cfdb2cc get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5c1bf1f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaee9af48 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5bbb7b4 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca354b95 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf12c212 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdeb9d311 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe445d628 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4df557c mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe50c695f mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee5becd8 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5b21d84 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf675c777 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa6a19c9 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff551cde mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00d61b9c mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0322bdc1 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1418d9d9 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1923a515 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d3ee0af mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e05d461 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x217ac5e7 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2597d99d mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27f1e083 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x376be622 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3eae1a94 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5301632e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58553846 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b370c1c mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x617a972f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6612bca5 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7541626e mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a852c6b mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b92f04e mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82379321 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c2fd993 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9dd3e195 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb79c6dc0 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc429549 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe5a0c41 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbed95a21 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc754851e mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd17ff904 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd53fdf85 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6d53411 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9386eff mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde95464f mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe432f6af mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8455b5d mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9dec5f5 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea5f0e25 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea86d35d mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7fc380e mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x240d1277 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x403fee5b mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x45c971a5 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a8a7829 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x57e97491 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9eab79dc mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdef6df82 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x02c32900 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x77d1a582 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7d402f2b hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9851826e hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc83b407e hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf87d7bd6 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x095379a9 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x41cdf7f8 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4c10d341 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7ca557ed sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9de48f12 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcbac233b irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd1f85f70 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xda4276ea sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe535f6bc sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf1d7f953 sirdev_get_instance +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x179f1944 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x54121b90 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x5c1a8aa2 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xa5fb8614 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xaf00c2c3 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xd2a9998e mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xdc0626e5 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xf503c916 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x84db0285 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xed498983 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x49266cb2 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x448ada52 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbb531d73 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf96b3f27 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/sungem_phy 0xd1a91f01 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x3451128f team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x351d270c team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x494c6029 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x64554ead team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x6e2ef30f team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x8e127373 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x9c9b694f team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xb1ba1232 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4955d712 cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6ccf3c37 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9cfde8b4 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa2ba6544 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1e92d14d unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x466a080c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x483eb322 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x71d6b492 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8df8e192 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x96162e06 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa58cdca3 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdfb4a1d1 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdfcf5411 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe0627d5a hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf6e4edfb hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xbedccd7e i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x47e91d77 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x4a367138 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5b117fbe init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x13ad9f0a ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x19200f4e ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2287de19 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2bd68a58 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3bcd64d1 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3d849c34 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x487ea725 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x770fb9ec dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7db78818 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x860cf244 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95cc9660 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9944195d ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0e63c6de ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x14be1a20 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x263e597b ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5efe7793 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8568c299 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8751abcb ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x98b47bb2 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9fe172be ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa13a6072 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa9640e1d ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xda01f174 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe093517a ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe34eaa04 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xeb277449 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xec284a9c ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x04d936a8 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x276d2511 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3c42643a ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x54af6170 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6c4c4f11 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7519544a ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xab6a2c8b ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaf54e4cb ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb13b13b5 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc24408cd ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe388c9f1 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1a58508e ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2874a1a8 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3296fbd6 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x36db0867 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x38dbf520 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c4f5260 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5aa2c243 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x645b85ce ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x68e70303 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6a269296 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6c43ae7e ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8c4eb4eb ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8dc74513 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9916a7f2 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x99b066c1 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaec5ca75 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb9173166 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc8e38c90 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc980019a ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xea4357c0 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf0d13d8a ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf223d6f7 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfffd6d2c ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01149d13 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x014070fa ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09cdb8d0 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a58ab51 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0abeafc7 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ae02801 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d95f010 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e22da49 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11162b9c ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13bb3f37 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1423d259 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18e61dfd ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19799a81 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a06ec85 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ae0d2bf ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c74ea76 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x222fd9ad ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x249cb24d ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24d48def ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25eeab19 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27301592 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2770df30 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x292f7fb5 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dcdfc96 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f56dd09 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30561cdd ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31fb9389 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34d5e3b9 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38e728c7 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39aa6342 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45aa1d41 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4667bade ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50e96ba3 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x549a9a87 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57637176 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57e09096 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a340074 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ae315c4 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f5f6f6b ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60151fdf ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x616a6daf ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63a3f4b3 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63bacc4c ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x648b9165 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6586c039 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6dec897c ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7205da84 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7498369e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b3ba4bc ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7dd51680 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ffe5d0f ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81ca81f0 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84a99dfb ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x860da08a ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88682c97 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8eda9494 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fc341db ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91ac3981 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9337afb5 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94f294cc ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x952e9ddf ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x988e80fc ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99fc8cb2 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a6b7056 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ad3861e ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2fc7114 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa542f132 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7bb761d ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7e6461f ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac878152 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad5a3992 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae9f1651 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf8559a8 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb16c3916 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb231cad2 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb45ce08d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5634d74 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb61135dc ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7f7d623 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb976d87d ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9bd2838 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9d684ae ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfa44f50 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc13e9291 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc14895d5 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4f8b3ca ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca9a2bb4 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb3b5fd1 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb7c3817 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf10df93 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd686198c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7d42ec9 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd98e64e0 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdab6550d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb40852d ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1d701fa ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeacc1579 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecbf2819 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0a3ccbd ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2d51884 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf51e1617 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8f74dc5 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbb41135 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfde56c5e ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x28b06872 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x421997af stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xed8f3d1b init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x02003418 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x19fee422 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x51a9c940 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x529b4606 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x57f8b15a brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a19406a brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8b0fa610 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x96201cef brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa49d81aa brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xad9bcd72 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbe2b6d40 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc8291344 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd529d108 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c135413 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x13dba0e8 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28426208 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x33b55565 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x43cebdbb hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x474245ab hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4f180381 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5064d1a3 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x584fbedc hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5f9cd65d hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c103e76 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b34ca70 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8c5424de hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x95800c57 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9be0d769 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb5670ba3 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd725b3f hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc431f09c hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6c43483 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc0dc4f0 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xddddc41b hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xde66ac25 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe3c011d6 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeea0cb0d prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeed61598 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x07907d40 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x19182db7 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x25667cbf libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4751e99b libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x545e977e libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x59d3c8cd libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x684e2d3c libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6d4b8148 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x707105a9 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d686f58 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9a75e62f libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb3687398 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbb8ea690 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbc73279c libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc6f8efb8 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xce42034f libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd0be16f6 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd1e3e852 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4fe5677 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe9199c96 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf31ca6f9 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x009c5c82 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0533024c il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x055845e9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06284360 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08aea05c il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09a2c7d5 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0dd9164b il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e0c75a8 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e6852af il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13606f58 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13903953 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b84ab0d il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x224ab7a1 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26c6c4d0 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c28ee4c il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dca4a51 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3063fc41 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x313a662e il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3444aaf2 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36827ad4 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36eaab24 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x382d6715 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ac1f654 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b0790f0 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b390d33 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b6f4d2c il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40363396 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x424a883e il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44e7a33a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47b590f1 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x485d3fc9 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a497083 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b9a29c9 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c5fb9ff il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4dae2acc il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e9d15d2 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52b63a45 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55069dbf il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58db76ee il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b592c7c il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d9de3d8 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dbabe18 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f94870b il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60a97128 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61afa68f il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61e7f777 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x632ddaa3 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x693a92d5 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6940be56 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69ec0039 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c246863 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70108ad3 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7109f3c8 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72363529 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x779fed7d il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x809b67b7 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81c90405 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x831ec7f9 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8418bb4d il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x842d6ada il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86b9d857 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8fe1b929 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93f82dc1 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97421d59 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99758271 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a621fef il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ac9dc32 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c14d5a1 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa132de31 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4b38e54 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa59b812e il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb43c7458 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb55b813e il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb957d4c7 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbc637e1 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39fc6b1 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8dc8422 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc908b51e il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3a0c2cd il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7c0cd16 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdacbf3bd il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd17ca5c il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf97c740 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe02b1dbe il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0a3d584 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe24ebef5 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5c50c38 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6250f6c il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9150e39 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeaed6067 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf216afd0 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3138eaf il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3b0d8c0 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5a06adf il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf97ac990 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd91a4eb il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff2c5958 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0775286b orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0cd2f324 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x191f0430 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x22e2685c orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x23fb12e7 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3169bf17 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x52e9adb0 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x59279f10 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6c3cba86 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x72bbcfbd orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8a70a788 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xaf076c65 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9b3fb2d orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbcb7fe1a orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd6b81daa __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfcbc8e65 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x72dd7309 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x040cc002 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0ba7a6a0 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0f7cf764 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x27113b26 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2737b303 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2d3e293f _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x38543428 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3a9bf29f rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4b5679e8 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4ef245ca rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x56717a5f rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x60045de0 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61a587b7 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6576265a _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6c0bc434 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x721bcb23 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x728726d0 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7549a4e6 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x80291fb3 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x83d2ad88 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x84e80d6c rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x851aea6b rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8fa93a68 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x93eeae34 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x97d5ab32 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9bfbf197 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9e50519f rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa3993ea2 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa7c9b1f9 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaa1b2c09 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb07ddde1 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc3e3ba4a rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcc137f81 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xda66c3a7 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdd3b73e9 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdf86c762 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf039afab rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf40613e0 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfd247a58 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfef9b17b rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xff56ee82 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x69b3db49 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xe80aa4a0 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x1b88b247 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x39c31ebe rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x3caf3e2d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xad62a78e rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0894ce0a rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1223dae0 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x21cdc19a rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2cd52bf4 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a1c5113 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4025691d rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x441a22a7 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62487561 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x67091fa0 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7425e7c9 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74936775 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7743266b rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x838990ec rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x864556f9 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x90ba314a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9230e881 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9bdd3a09 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa4f20256 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa5487670 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa668eb9d rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xad55b932 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb4a874c7 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbc14a079 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc16e6e81 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc1a5a30d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc369061d rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd08dee12 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe45a996f rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeccd1f49 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xedd9c4e9 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x203fe3d7 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7e070d7b wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8517768e wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe01135c1 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x2ff3af20 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xc7797372 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xf8a6a103 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x2de748df microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x8a2bd2aa microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1ebb087b nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc59d9463 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd1202227 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x01b6b132 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xf69d4c19 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x5e97ef89 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xd7ac6c8c s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xe441615b s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x33654cf6 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x577d047e st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7a633cab ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x95ef5b6a st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa0f82319 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa408dfe9 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb2afdc51 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd11febf2 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe34a5b82 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe3be2d9c ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xff477f88 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x01ed3714 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x04df11d4 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x07743a7a st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1deec774 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x476a0e65 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x526416db st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5a2c8483 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5aa57532 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7aa1876a st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x87a8062b st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8e0a12c4 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x90b4a1e4 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9cdde66f st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa3b37d3c st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb7d54f1d st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbbc74696 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc9277eb8 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfe9934f5 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x1fa40140 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x42058f93 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x55364da4 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x7dcdc5be ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x86dfa31a ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe752082c ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xf60f53ad ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xfe8ded00 ntb_db_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x1ef4c040 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x76430cb7 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0xad0e10d8 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x1777a1f6 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x20d8d77b parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2a3eba32 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x3010dd5c parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x3862faf3 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x393962e6 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x3dff5753 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x49c9f5d8 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5a757af7 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x614b11d9 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x6553dd27 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x672e7ac5 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x69652fc0 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x79f79bfa parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x81bee637 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x8875032d parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x8875f980 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8950027b parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x9996204f parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xa8b3f1d4 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xa9e788f0 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xabbefd84 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xb67b145c parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xc87f6210 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xcbea806b __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xd033f77b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd76891cc parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd97453dc parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xe30b4ade parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xece02ecc parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xedadf05e parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xfca4888b parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x0e996c3f parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x4d8c4478 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x55d6d151 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x63613d43 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x64813263 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x68aa0ad5 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ecb0dc1 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7422ccad pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x77e2b3a8 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7a80238c pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9ea07ba3 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb28384c3 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb35f24ed pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc345b509 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd5c31761 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd6945305 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd8f7d0c1 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdb52d2d8 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe6570c91 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xebe06763 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xffea6200 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x184cdc83 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1f262b63 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3c5e537c pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3d992fe6 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4163f18d pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5fd086a0 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x901a06b3 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb7ff3c21 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbf5909d1 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc0823092 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcd60efdc pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x996115fa pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd082c05c pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0xb7b413f0 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xcf73fcbe pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xd91390e1 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xee12f12d pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x1ae29a6d ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x4e56c57c ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x71c16aea ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x9d27056f ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xf9ba2890 ptp_find_pin +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x06e266c1 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x39962a92 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3b764ebb rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5d63e7b4 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x71676185 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb8d1cbed rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbad375d0 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd8fb058d rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xdc8f361c rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfcae92e3 rproc_vq_interrupt +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xf5130b75 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x39c60d95 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5c25fbb6 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb394870f scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd29026f6 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x09b93454 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0ff0a598 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x27f8c532 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2bdd1e00 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5196062d fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x650d58ef fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x714eaa67 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa547109c fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb1663128 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe336e5c8 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe729a58b fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xee7ba29b fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x011aa0dc libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0130fdf1 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x042db717 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06cda9f0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c07eb56 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1107884a fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x155f4e80 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x156abbe1 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1724b757 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c499ac9 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x364c8b67 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3815913e fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39ac7c70 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3cdbbb72 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x41f95145 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43d56cfb fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4834a5fa fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58e0da58 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5916d539 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bcbb8c6 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d4b4c09 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x609da27d fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70813b0b fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d80e9ac fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80776e52 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bed400e fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c51fe33 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8eafd7e0 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91a074b0 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b372b3a fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4679565 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4fd5d0c fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xabcb1aff fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb124e132 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbbfba146 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf96ef1b fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8063623 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc843289b fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc7c3be4 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5d94cce fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdaffaa53 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7aa1aa1 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff372daa fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0ac2a520 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8f6eb817 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa2001201 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xdbb5b25f sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x200dacc2 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x04c221b5 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0822cf60 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19fdd440 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2469becd osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x289af882 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d3232d6 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x341fe4ed osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x442bbe3d osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x44960d94 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x502040f8 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x536e3f2f osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ae6c4d2 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5fb23c43 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x645e7c61 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6c4efb0f osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76d0ce2b osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7781a393 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8011abf0 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x82566a8a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85fd028b osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87605bf8 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x931bdf3c osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93294cd2 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f381b7e osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa4333f4 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xafda9426 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb8cc1bea osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9d0bcd9 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbfe75bd2 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc36597e osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0a2a121 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4219eeb osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd5f2b0a5 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb0d0769 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf3e13999 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff5d7239 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/osd 0x18f9dbfb osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x60f11e19 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x83b50896 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb94bdfab osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xddd68dc0 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe4dcc392 osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0055fd36 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x044328bb qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4e8facf3 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5b36693e qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6dd713d0 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x74497c6f qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x77917c6f qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x85a533a1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa4e25b2b qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd11a38d3 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe6965fc1 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xec4950f6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x03b31b6d qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x05dbba19 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x33434a02 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7c7630f3 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x98977b17 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xefd7d3e8 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x087e81ae raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x1ac634a1 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xa4b0371e raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x21443e59 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x253a74d3 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x37c35530 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x524b8b42 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x65122823 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x666f5812 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7400ef72 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb6cfecb9 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc12aa158 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc29e540b fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd54f0b88 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe158232d scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf8f65b84 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0ada04fc sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0c0bc8bb sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x26d51257 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ad0fd3f sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3c6fe997 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3dbb9410 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x45e9687c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x55fb7319 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ae1bb59 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b99b0fb sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ef7805a sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x80efdab0 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87f961f9 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8a6f0c08 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e8667c2 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96668962 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9e03bf7c sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb2e2ea9d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbfe506f3 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd27e2d0d sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3f74c2e sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd64df3a8 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd763d464 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd94bf69e sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdbc16b4f sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdeece785 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe571b15b scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf40d520c sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa34ffb2b spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb5a5c9aa spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd05fee1b spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xde5404b2 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2f49ab2 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x2d6f04f4 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3e774b61 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8d93a209 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xd2e2a4d0 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x1a829e64 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x1bfc9845 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x239d43af ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x361b79ac ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8e6f4b20 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xab54e99d ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe1bc90f9 ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x030135b3 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x18b95343 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x34c6cbaf ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x3d6aa7be ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x43eecfe1 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x68bd077c ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x6caad5fb ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x6ed517bf ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x8157c6ff ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x881e0cf5 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x89235f84 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8a980ac0 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xa0c476cf ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xb6418b17 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xbe125f44 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc494206f ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc847bb50 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xd2289b8c ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe45201e0 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xf7d8c4da ssb_device_disable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0c9350af fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0dddd043 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2071fdf8 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x233591ca fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x270bf30b fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x288716c9 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2cb9f8bc fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4acfe395 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5a7a62c2 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5e809ea0 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x69dca051 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x771d9ab0 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7c9a22b3 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x83a230e3 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8d46be04 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x94dd7c8c fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x97556b17 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa4e598da fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xabae0555 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb267bbfa fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc93eec2b fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcb583d4c fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe2ccab8e fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe7be5c83 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x34e6cdad fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xfc72cfd8 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xefb62cbc adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x92603445 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xbc8f5e52 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xc353f9b3 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xed2601ae hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x270a2c55 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xc893a1c4 ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x4fca4134 cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0xbd96e553 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x02d13954 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x04c6b545 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x163bf9e0 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d36abc9 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x225e04ad dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24d7e985 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x27970a4b free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28d59737 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36d087e1 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d18037d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e6a8034 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f097ffd rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4182b686 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4297f345 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4bf20f0d rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x548897b0 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5940df38 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f526b3a rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a06aeae rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a7450a9 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x723cc67f rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x728e4761 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x750681fc Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7cfc7b0a rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8034c139 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8242419c rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84d52dbe rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8714d9db notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ec61c43 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x913b0f74 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9251e56b alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96fe9574 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9d778e75 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa7ffdebb rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8c0cc92 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8d207f1 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9fedd20 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaddcbb4f rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb41e3e56 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6d7214c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb90fde37 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcbb71956 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce4a003f rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf9864a6 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdac12844 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe72d198f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7c91d72 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe84cd0ee rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4c918ff rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff5512b1 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x022ce7b8 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x08cf6533 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d91ba11 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f46850f IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1194be15 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11a6ff8b DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12b40cf6 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x157ed017 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x176cfaf6 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17f5a9ff ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x194d312b ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d8eccfc ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x20abb345 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2da2b4fd ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3898e043 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39f0f74b ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45381c47 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x484ab8fa ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d2eb4b8 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x651b8505 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x657e7320 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c4d13e1 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74ef813f ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a5c851c Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e141bdf ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8bc2f904 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d369c72 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90a7a4ed ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x917f87bc ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a530b1b ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3923e9c ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6f632de ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa795d815 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaba63929 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf007971 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf778bda Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb31850de ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb69616ca SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfb4eb99 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd074165d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd187fd35 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3104aff Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd91a42e0 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdaec9d5d ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbf0172c ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfd12c0e ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfef7e11 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe33c7455 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe71d4f77 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0bd42a7 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0dc824b ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf114df35 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf7daa1b3 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0056e202 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x00fa3452 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0113e10b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x08200317 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x134eee79 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fa467d5 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d970bc1 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ef6c9fb iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5b6d9736 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6c11ada7 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6e090eff iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x72d671de iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8aad5b30 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8f0350b8 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x99dbd522 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa9695ac0 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xac642771 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xae3c5d14 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8c36f97 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf0bdaf1 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd044c833 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd28959ea iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2f0e181 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xead65e29 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf425fe30 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf55484e6 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa643f44 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfd6eff81 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x0071aa73 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x05924b9c target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x06861554 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x07e105d1 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c3043ec sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x136fe82f sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ca6cd65 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1eee473d spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x22c89ca2 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x27cc7378 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x2834e058 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c3a2742 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x3fc2cdd0 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x41c90ac2 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x42efe413 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x465348ac core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a1c4042 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ded1af8 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x568a0bb0 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x583f91fe target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x59ec6c0a target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a17bc1d transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c4c4a12 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cdc874a transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e9e4b6c target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x6043f5ba transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x60feb18f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x62bf5056 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6603aba7 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a5d09f0 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b124479 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bf5e8f6 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x7096a8fa transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x71ca1fed transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7945928e transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cbd2dbe target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x85fd6f03 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x885af6bf core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a369d3b target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bfc4174 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e70a0ac transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9135c15a transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x9142430e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x9308da28 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d2236bf transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e08c839 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0803d64 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xacab1ed0 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xace33f89 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb02b82ee transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xb24f434d target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb50b95be transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe82c2d8 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5e439a5 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xce7c3e1e passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xce8aa1be target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5820ca1 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xddea8dbb target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe659dd07 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xe75b5b39 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe810c20a target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xe94fbbc2 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xea84507f passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xff7982a3 target_lun_is_rdonly +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x3093e47d usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x40ec39cf usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd7f3b4a6 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x06ec00a1 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x16294f69 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x379e6bf2 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42c40d4a usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa25ecf4a usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa8099581 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb059fc88 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb3f5e926 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb8d33277 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd0181e7e usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd127d93e usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf2b57fb6 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x16941f7f usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf48006b6 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x56378739 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa61a9461 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb5a3b5f9 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf231f96e lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x326c5907 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5e496242 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x88b892fd svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa536564c svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc02a1680 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe3000109 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf8589ee6 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xaeb2e392 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x43770ad0 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x899dbe22 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8fbf404f g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x6ad0c011 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x89574931 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x8f222a54 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9777aee2 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x56b0f0e5 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xcf8a7a3b matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x2688426e matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x46b38cd2 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x630ac5e5 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe202f6a6 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x51489e97 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x76a674ad matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4176a26d matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7ffe084d matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbebb25b9 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc2537810 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xff8d8e16 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xd72dcce0 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x45fd1882 fsl_hv_failover_unregister +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x77c9b191 fsl_hv_failover_register +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x0c8a57c6 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc1d4d7c2 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd03a37e2 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe1b2ad04 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5f34b616 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x610d6031 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1a3c0435 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xd86812db w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x3ce7f902 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x4beb1485 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x8e2cfc33 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9b47996a w1_register_family +EXPORT_SYMBOL fs/configfs/configfs 0x004e5a2a config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x01e35105 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x1c490ed0 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3791f19b configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x3877b1c9 configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x41f7c521 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x53035189 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x6d964d66 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x832e0d63 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x8bcbd0ef configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x9455c5f6 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xb18ca5e7 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xc496d562 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd3d48420 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf244cf95 configfs_register_group +EXPORT_SYMBOL fs/exofs/libore 0x0cfe996c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x25d58c00 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x368446e8 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x7920e0ef ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x7c22f01f ore_write +EXPORT_SYMBOL fs/exofs/libore 0x860017b6 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x8cd8d236 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x8f20971a ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xad2f977e ore_read +EXPORT_SYMBOL fs/exofs/libore 0xd093fa3c ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x07dfc183 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x0e81dd3c fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x18dc4447 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2139f1a1 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x25bae1b5 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x2bf90896 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x317d04ab __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x38374e59 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x4eaae378 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x53046db1 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5fb399e8 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x63dac90e fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x6f537b21 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x70057ec4 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x73353e62 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x769d6265 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x78620d70 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x786b2df2 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x7bdbd78f fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7ed5a3ea fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x883d7b4c __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x8f52f83b fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x8f9814ee fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x9ddfbf14 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa29b9419 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa3eddab8 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa3f15f4a __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa58c7d62 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xa6d6a6f9 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa8d8717c fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xb2da75b0 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xb78de9c9 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xbf3c2a25 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc05e6303 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xc6669ee6 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xcaa0ee6e fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xe07e5116 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf2afb2ad __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfc7feca4 fscache_mark_pages_cached +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1e8965c9 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3150310f qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x396c72fd qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x95260a6a qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa99fd77a qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x123950ee lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xda64d29c lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x011dce3c lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x18e3ad0c lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x9fad97c9 lowpan_netdev_setup +EXPORT_SYMBOL net/802/p8022 0x1ea4009e unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xa8b78315 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x05416603 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x3e721c73 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x08436553 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xf89a0b80 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x0e016aca p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x10b555ba p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x1274b6b4 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x279919d2 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x323e3152 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x361d1729 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x38fe833a p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3b2d961c v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x47f027f2 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x49c0f5bf p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x4afed8a0 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x4b224c11 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x684c6468 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x69e76176 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6eba6431 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8240bc0f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8473c627 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x87f73ff5 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x9611536f p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x99716e4d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xa303bf71 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa4b42ef6 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xa4e0f19f p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa924bbeb p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xad93f4c7 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xb219f66d p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xb69d5684 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xb90cdf5f p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc3a10439 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7546475 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xc84040aa p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc86b9cf9 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xce66b98a v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xe1245137 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe599edd4 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xec0ec414 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfc2ac70c p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfde54ece p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xffe97866 v9fs_get_default_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x6f1bcb0e atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x7d2e8238 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x9ba433a0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xda9edc2c atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0105b77c atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x2aed175b atm_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4ce6dc56 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x53fb08fd vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x55e9ada6 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6a24deed atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x6f0a43d9 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x72846560 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x781d1028 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x8a9b1854 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9e2ec9d9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa9fcae58 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcfc9f9c6 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x288143b0 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x2fc5d3e0 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x43f990b2 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4996f348 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6ce08678 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x738250ad ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9feed14a ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc67002b ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x003f1f3c hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f22793d hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x132cbbcc hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x16bc8a18 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x16bcdcff bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b383bed l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ca9d26a l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2cd7fc82 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x319bbf3e bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3293bce8 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44ed58ea bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50b51c79 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58cc981d bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5988a046 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x604571b8 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62c75c88 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x634ffa1d bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7cb4dc79 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x88e3f432 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89d360d5 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e006c63 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8ff041ff hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a9c2b38 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b68dc38 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c928207 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa2a91e1a hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0bfd8e3 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc069d6ac bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc91962e3 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc99087d7 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcbb60db7 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1872b4f hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdb9eadab hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeac882eb bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec858a36 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xecdb6515 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf09472ad hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3a2a53d hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa13e924 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb7ff599 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfff8ba61 bt_accept_enqueue +EXPORT_SYMBOL net/bridge/bridge 0x2459e8cd br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4471e446 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x464c4ba1 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5deeb2f1 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x62c56b01 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa79a9088 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb34fd6ec get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xb88143a1 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xf953de84 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x48106758 can_proto_register +EXPORT_SYMBOL net/can/can 0x5769e7eb can_rx_unregister +EXPORT_SYMBOL net/can/can 0x5b8e2ecd can_proto_unregister +EXPORT_SYMBOL net/can/can 0x75910f51 can_ioctl +EXPORT_SYMBOL net/can/can 0x9f2576a2 can_send +EXPORT_SYMBOL net/can/can 0xb8329434 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x02f3f822 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x04c4230e ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x08a290d2 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x08d3f82f ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a377d12 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0a92160c ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0ad96966 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x0b9086db ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0f0d35ae osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x0f981d19 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x19e589e0 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x1a28b23c osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x1fd3a424 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x29798e5b ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x2c93e276 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x2d2b1bb5 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x303c0ccd ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x36aff52d ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3be1f016 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x3bf09bb6 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3d552809 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x3ebcd91b ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x3ee77a4a osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40b3c268 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x41da7e25 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45aff428 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x463da3fc ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4bd5a8e7 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x598f08d8 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x5b7ae8be ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x5f7e8025 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x610c8f2c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x618b5370 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x6290ae01 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6684e840 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b459263 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6f05139e osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x70b0b7a4 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x78a794f0 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x7bffc5c5 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x7d9e50c1 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x7f52c275 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x83d2b7e3 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8688a69a osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x87137042 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x8b685613 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x8c29bce0 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x917c1e77 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x92a0aaef ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x94558dc4 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x94a6e89f ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x953e3131 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x990f6214 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa04a159f ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xa65f7407 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xa8d0f4e7 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xab1a8020 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xab3af465 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xad11f697 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb22e1202 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbc37185a osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xbfbc9f26 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc1c85230 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xc2c4ca7f ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc593bb27 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbcff4ae ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xcdc70e5d ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3e4a0f2 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd747ee7b ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd978dae5 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xdc553f16 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xdcf70603 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdf006250 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xdfd7f68f ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe8e1ce53 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xea8c06c3 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xeb68e950 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xed4571c9 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xed8c522a ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf13f95e2 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf781b4d9 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa26fdf63 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf428ad3d dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x43d360d2 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x569df61b wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7a447038 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x970d8626 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb2360106 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcb0092b9 wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x65cb9875 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xd532e9a8 fou_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x18d114b9 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1badb602 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2a59a303 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x4fe771cb ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa1c73c08 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf3c56b2f ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x4d41defa arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6a0fd1d8 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x7e61e339 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1d2434de ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x608cb5fd ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x69f42877 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x42e239df xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x51b86a88 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x09e3a348 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1f01567d ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x416d8891 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4b28b7d3 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xffa4c483 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x08e8c862 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa642d70b ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc146da03 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x97debb48 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xae73aeba xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x15e61b3f xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x739fb522 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x16b565fc ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1abb249c ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2376871b ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3247bea6 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8ff190e7 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbbb022fe ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe6c9b884 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf606e7f4 ircomm_close +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0adee76d irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x0b0bfdb4 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x126b8f04 iriap_close +EXPORT_SYMBOL net/irda/irda 0x1d7c2493 irlap_open +EXPORT_SYMBOL net/irda/irda 0x1e4696c4 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x381cf8f2 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x40b00b86 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4960b3aa irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x4c7c1356 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x521e5560 irlap_close +EXPORT_SYMBOL net/irda/irda 0x5ed3a325 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6ba10a41 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x7628508b irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9ce32255 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xadb58df5 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb7811367 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xb7eaea49 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf7d5665 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc79ee735 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd2f77989 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe8005cf4 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xeb5aa28f irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf4f48690 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xf5456c5f iriap_open +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf6dd9435 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0xcf2cd570 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x085d3211 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x1aee2d5f lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x27eade28 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x2d9b4e7b lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x2df9e2cf lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x71e16fda lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x99d9c703 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xcf31cb6d lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x29ca39d9 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x51efc275 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7df411d5 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x9ccffe36 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xa3183ac3 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xc2361110 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xfd2dc03b llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x03d64ecd ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x03ec5314 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x04f1a219 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x0619744b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x07e8f0f2 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x0a1c5552 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0fa65a11 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x11351ca5 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x15606123 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x1665adf2 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x16a5e302 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x176d15d0 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x1a51c501 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x1c94fd6c ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x1d860f02 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1fa433ea ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x27bc0ddc ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x2d2ac4e8 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2f8f1530 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x2fe1e4c5 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x38913da2 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3b6366f0 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x406273f2 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41c1c303 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x425c3e8f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x441fcc0f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x4bc740da ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4e62a6fa ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x4e973357 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x4f7aef3a rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x4fd43813 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x4fdf5a3e ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x505382aa __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x50eca072 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5545a751 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x55996fbb ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x563769cd ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x57ebae06 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x59db73fa ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5c6d9dff __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5c913a8e ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x5de9b77b ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5fbf0ed7 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x690c8f13 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6d852cd5 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x6fb4d0da ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x71f2f46b ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x79705318 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x813e7777 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x886ced02 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x8c09b0e5 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x90c04fe7 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x91610b38 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x928fde27 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x93844343 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x95c3b7a7 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x9b98492e ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x9e5988b3 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa7d166fd ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb6417ae9 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb6ad3f7d ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb9c68026 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xba2d7251 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xba538aff ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xbda46b5d ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xbfdc13ac ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xc3cb0b4b __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc6996754 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc834180e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc886e19f __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xd5754490 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xe4515ad5 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xe99393bb __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xea8c6996 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf37f758e ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf4f7b65d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfdc70e12 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xfe513e9d ieee80211_connection_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x0335688e ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x0d9de63b ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x76bb808b ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x95373ce5 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x95daf6ac ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa2a3ff10 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xdafd2bc6 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xff975057 ieee802154_stop_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0353f6fd register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x37a5c0f3 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x38d7f6d8 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4a656d1c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6562d04f ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6a6c6334 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9113350b ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa1539c13 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbab840c3 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc0d512b9 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc67d65d7 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdff527d6 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe8f19873 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf1dd6c2f ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x04499770 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xcc25dd8b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xecba4c5c __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x50022470 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x53a9e002 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x848e8430 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa7c1b8d1 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xacf758db nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xcad2698a nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x00c5491e xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x2d7c5b08 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x358a60b0 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x54825f8f xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x755132f9 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x767fd549 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9a34e5f3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xaed69d17 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xdd792e7c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xefbfe7b1 xt_register_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x0392400f nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1e79e2c8 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x2afaf087 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x3d3a8dff nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x3d8c30aa nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x44620d0e nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x4845d58e nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4c5c98d7 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x4ecafbd1 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x5c898772 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x6b910189 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x733e314c nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x8049dfb3 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x87a77d0e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x9544a613 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa3c557f3 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xb2f3c073 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbc6ef8d1 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbead7655 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xdf1cd262 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xf3b95d4e nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/nci/nci 0x07019d9e nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x0b7ac472 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x110961a0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x127b3697 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x19888770 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x20a3f33f nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x28a6402a nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x2d5ae62d nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x35321568 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x4004fb89 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6c845561 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x7146caac nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x78979ec9 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x96018493 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x9c1b7145 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x9e0c5acf nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xb17198cc nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb5e3b395 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbe0ecec0 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0xcdb5bde2 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xe3163839 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe456d373 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0xeb5c71c7 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xeb89e2e8 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xec493492 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xf78e27f4 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf970de96 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xfe0025e6 nci_send_cmd +EXPORT_SYMBOL net/nfc/nfc 0x04887740 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x04924ff9 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x118fb1ce nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x348f7c55 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x3f2899bc nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x425c220f nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x42e08427 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x87a3f55b nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8f21e87e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x98a50111 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa1b28788 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xae029906 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xae55ba92 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xbaa93243 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xbb20a0f2 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xce5104ca nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xdc4c05ee nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xddf15446 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xe69053ce nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xeda4b608 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xef6197fa nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xf42d7cd5 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xf56741af nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xf831613d nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc_digital 0x11d10d10 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc4fe2a62 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd65f3850 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf1f4d9fa nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x1a1336ac pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x35468989 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x72dba71c pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x77da4d67 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x9d7a8ef9 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xc8cbe340 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xe87a4827 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xf94aae16 pn_sock_get_port +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x09f6a79e rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0b8f46c2 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0fbcd845 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2f8eac93 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x302f9c71 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x54735cb6 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5f8c898b rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x74d8ee45 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x95c5bb09 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9a5a9c49 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9eb4ed54 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbf7b1d36 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc2296223 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc95c8d69 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4c1dd99 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x026f291f sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x1ab51e3b gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x4be53d6e gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb6edf8a4 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc0ccc76b svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xdecb7d80 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe731c484 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x4ae97531 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x8e84a68f wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x004b3d07 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x0160c178 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x0200cef1 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x02bb949c cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x04757678 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x049ea2e2 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x09153e41 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b82fc45 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x14dcf640 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1553c91f cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x16077920 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x17bc07ab cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18bbec25 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1cce5583 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1ef9c857 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x23dea20c cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x23ee4cd2 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x283d89ef cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x2abbd0c1 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x2ba65b21 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2ff3ec07 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x36869be7 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4057ca3b cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5a458a52 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x5d18872c ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x62d65b15 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6af532d5 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6f258dfe cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x71dd700a wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x7513c935 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x76b6c047 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x778300e1 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x7876b8e9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7b6b0f07 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7bf99578 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7effcc21 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x7fa3e95b cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8045f4fa __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x823cc095 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x859fb7b0 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x87660f97 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x88c9ec44 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8c9ae6bb cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99a9233c regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x9cbb18ea cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9ec486de cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x9fe3c507 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa1e68153 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xa4923c04 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa86dbcd3 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xa877b131 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xaac527f0 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xabf2e9e6 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xad279f03 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xaf6487e6 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xb6284d4c wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb8637dc9 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xbac779f1 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xbe9695a0 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6d4eff0 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xc78b1999 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xca9fe741 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xcb40cbb9 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xcb7ebba2 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xccaaf9d6 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xcebaa6a3 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd103d1db freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xd2235bd9 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd594bf1c cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd69b090b cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdeb9116e cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xe0373eac cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xe0ecefa1 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe1cdb4f6 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe1d04581 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xefe2f61c wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xefe86750 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf146682a ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xf1a403c3 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xf1a7d66e cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd8efd43 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x1b55ef99 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2b9e92b3 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2f65b9dd lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x5421d393 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xd62d6006 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xea7815e4 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x16edcc32 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x37fce9d2 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x101160e3 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x392b181f snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x842905a5 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc937b197 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa17b9c2c snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x42602221 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x05cfa4b8 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x20b4cff0 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x23cf80ec snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2b182578 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x34063e32 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3452f0e0 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b95a0ee snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x459af6a4 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x45aa80e0 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a797219 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x4aee3775 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x4b65a9a4 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x4cb70a1a snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x51f47a83 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x57f22239 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x598fd2d3 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x6063430b snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6322a61f snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x6412aacc snd_cards +EXPORT_SYMBOL sound/core/snd 0x65824b8a snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x65a22715 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x69dcf957 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x6b2029e7 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x6d84887c snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7100e159 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x72a1f4fa snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x7e49ede8 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x878b698e snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9172ae3f _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x92e9727a snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x9964d0d9 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x9b7a4f24 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa1c40730 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xa40bd961 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xa7dd6ad6 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb9550b13 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xbb3f5b93 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xbcb91842 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xc08c2469 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xc319a0f6 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xc32a1b2d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xd2a60c75 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xdcb66e52 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xe2d80392 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xe9bcdcd4 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xec0b2ce5 snd_register_device +EXPORT_SYMBOL sound/core/snd 0xecc87af3 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xf26e9566 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xf76b5901 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x024bbb20 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x05d6de62 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0dcfdf8c snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x12b54be4 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x19f10915 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ec1c02c snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x28215b02 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x2a4d7332 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x35fe81d7 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3d9c34c0 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x3fcb3250 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4082d05d snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x4177d473 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x49425499 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x4a034468 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4d1e72b9 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x51f3b842 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5b6315f3 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5e9b0229 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x60e317c5 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x648dd1ca snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x65eb88a2 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ebd38f6 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7102f0b4 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x729525df snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x7efc8c96 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x7f1cac55 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x837eb1a2 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x88fcdd4e snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x8fd5ddb6 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x9336c76d snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9af717ef snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xaca8a52b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xae159260 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xaf4a204f snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbc5a32ad snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xbf901ce0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc22a559b snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xc6976758 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc7b2fee9 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xcef51ad5 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xd06c4f88 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xd33bedd5 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xd56b3b98 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xeff77c6f snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf3973e0c snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xf4fd590e snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x07c39c77 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0fd27a6d snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3215c7e6 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x47abc901 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5261bd70 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x57aaa713 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x65be70b0 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6bea37a3 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x761d80a2 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ebc3730 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92efa0bf snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x96aed6ec snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa455deb5 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbec83ba3 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc3a769ee snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe5f16d31 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf0abeddf snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-timer 0x146f07bb snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x3a474305 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x6d2a0c03 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x854919be snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x9061cbcd snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x982455d9 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x9ce9cfe6 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xa22938c6 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xb01dd7b6 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xb91c60f0 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb92e89b7 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xc167bf27 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xcad2fe85 snd_timer_resolution +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x3ff90e79 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2c722aaf snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x64c0730c snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x864f30b3 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xae48c5ba snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb0e0eaa4 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb11d7ae7 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb4556514 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb8d1f9bc snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf341bfe9 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0008dc1d snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x048d4f23 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x26c12e7e snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4135ad1f snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4c1b97ce snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x51c1eab7 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5384d82c snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd1cd23da snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xfa2202ea snd_vx_suspend +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e97137f amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e9def50 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x23a7f64c fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x28ffb08a fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4f71410d avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52a90452 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54b6bc2f snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x57a94748 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5dc0e475 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x61556fd9 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x65cff5c2 snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a56506d cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6b8b1838 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6f0c70ee fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x750a8409 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x965e3edf avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b64f671 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa89dc393 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa8af519 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb3b7a07e amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4b55aac fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb531340c cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7c922bc cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc609b13d cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc7410efd fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcd343403 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0bc8298 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9c1c9ab avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe1a6020c iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5e69360 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0bfc77f amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xff42e646 amdtp_stream_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x04d27324 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x896bb46d snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x202b69b0 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4750063f snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x638a34db snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x643f4a8d snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x96d1cda8 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa3ee4772 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf819f96d snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfe24edb4 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0556e1a2 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x100a7e20 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1a54bf87 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7f5d90f5 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x976a2df2 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd691e823 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x58f40d79 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x85b4d25c snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x94ac85ef snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc12c7d76 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x408005a5 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x6e2e6829 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x07a01469 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x184c2bc5 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1edb1ce6 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4d861894 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8b154194 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x96669b72 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x091b0295 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x617799c7 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6dc66789 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7236414f snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc8902015 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd4ab40a6 snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0f6c3133 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x26f4aaab snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2df4cad7 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x64a15dfd snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6d3852e7 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa5bf7e68 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc18add7a snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc7eafc74 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xda923aa2 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xff9718c8 snd_sbdsp_reset +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0302677a snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x043be004 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x19a1ca44 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x51895989 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x610ad0c5 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x72899f89 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8c04d6fd snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8e738f83 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa10a2d78 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa38c6443 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaa331888 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4e99418 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc7900372 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd498214c snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xee9906b3 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf0c6bc7d snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1f5b1be snd_ac97_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x15a5d5c7 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1618d7a8 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x167f6f11 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3ad97a9d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x462f785f snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x809028ca snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x987385fb snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc6981322 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf1aecfbe snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x2a6de544 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8e26b699 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xf1d1ddf8 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x18c64e42 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2450f1d5 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x28b6b8ef oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3a44fa10 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5be6d172 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5e8c947e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5ffe3682 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7969edb3 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7e3f0e75 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8ae04178 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9651d321 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb490a9b4 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8bf4806 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcaf322f2 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcd43aa61 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcf46e2cf oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd55f66f0 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xda7418f6 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe823cc87 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe98e1f82 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1a436675 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3708ba6d snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7bc5fcf9 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xefdddd65 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfb65f947 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x72fbf633 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xefd0e0f7 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0xfef788b5 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x032bc873 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x2b174ace sound_class +EXPORT_SYMBOL sound/soundcore 0x6bebcbce register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x83e09444 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x84a5b0ee register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xd9737933 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x14dbd755 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x73ad02bf snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x93d4b9a4 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa84f2dfd snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xaab8efa7 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe3c37b24 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3316516a snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x357f669c snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5f45e1db snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x866425a5 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa17e5337 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xaf9c214c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb1f83a91 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xec4fa8a0 snd_util_mem_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x06dd9b32 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000a6d55 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x001f3cef sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x00226bb8 fb_set_var +EXPORT_SYMBOL vmlinux 0x0039585d read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x0058595d phy_device_register +EXPORT_SYMBOL vmlinux 0x00666901 tcf_em_register +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0075c915 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x0078a147 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x007f0958 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x0084e7e9 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x00888466 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x00b94669 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x00d4e495 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00f16c40 input_flush_device +EXPORT_SYMBOL vmlinux 0x00f72817 netdev_warn +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0102b6d8 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0116355a in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x014212c4 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x01450cd8 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x018cfd3f ps2_begin_command +EXPORT_SYMBOL vmlinux 0x01c5758c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x01c6bcda blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x01d904fc generic_permission +EXPORT_SYMBOL vmlinux 0x01da1864 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x01ee2011 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x01f53888 find_get_entry +EXPORT_SYMBOL vmlinux 0x01fbe7bf pcim_enable_device +EXPORT_SYMBOL vmlinux 0x021af5e9 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x0224362b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x022dc7cd xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x02439fbd nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x0247c4bb blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x0248f76b phy_print_status +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0268a73d phy_device_create +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c268ff __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x02e14c80 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x0302260d ppc_md +EXPORT_SYMBOL vmlinux 0x0319e417 ilookup +EXPORT_SYMBOL vmlinux 0x032b4c49 stop_tty +EXPORT_SYMBOL vmlinux 0x03300ff4 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0335858d machine_id +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035e6b57 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036d3888 pci_get_class +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0391ab9e i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x0396963c bdi_register_dev +EXPORT_SYMBOL vmlinux 0x03da05bf netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x03dbd856 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03fd9631 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x042067d5 prepare_binprm +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042863e1 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0453d0da pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x04563cff xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x0478add0 vfs_llseek +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04991364 d_alloc_name +EXPORT_SYMBOL vmlinux 0x04b2bfc7 follow_down +EXPORT_SYMBOL vmlinux 0x04c3d955 blk_complete_request +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05347173 ip_defrag +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05833729 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x059b2afc mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a9955a pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x05c28ba7 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x060932ef of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061bf73a freeze_bdev +EXPORT_SYMBOL vmlinux 0x0623342c kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063fa105 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x0644cfa9 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x06484c2b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x0651f060 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x06572232 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x065860a1 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x0658c3f7 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x0663a5ac param_ops_string +EXPORT_SYMBOL vmlinux 0x06753387 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x067ac8a6 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068207a4 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x06ac0e5d clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x06b1de11 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x06c1c035 pci_set_master +EXPORT_SYMBOL vmlinux 0x06c4386a blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x06cd57ca __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x06cea180 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0702a559 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x07054d14 dquot_commit +EXPORT_SYMBOL vmlinux 0x072609d9 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0757ecd4 account_page_redirty +EXPORT_SYMBOL vmlinux 0x075e43f4 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x07742a8f mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x07755e94 udp_disconnect +EXPORT_SYMBOL vmlinux 0x0795f173 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x07988347 scsi_add_device +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07abfda4 blk_peek_request +EXPORT_SYMBOL vmlinux 0x07b31520 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x07b73dc6 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6437f nf_log_trace +EXPORT_SYMBOL vmlinux 0x07f3bc33 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x07ff7ca0 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x0818e0e6 set_user_nice +EXPORT_SYMBOL vmlinux 0x0820d84d udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085f9526 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x08689b34 flush_signals +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x08889a3f mmc_free_host +EXPORT_SYMBOL vmlinux 0x08913083 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x08a7d9c9 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x08c3338d ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x08c3ee6d swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x08d7e1c9 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08eb9bf2 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x08faee2c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x092922ac agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09593eec copy_from_iter +EXPORT_SYMBOL vmlinux 0x096728dd nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x097bf612 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098d493a request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x09a97c68 netdev_info +EXPORT_SYMBOL vmlinux 0x09ad6712 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d96464 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x09ea1863 dentry_open +EXPORT_SYMBOL vmlinux 0x09ec322a up_write +EXPORT_SYMBOL vmlinux 0x0a1942d9 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a380f96 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x0a3d2982 udp_del_offload +EXPORT_SYMBOL vmlinux 0x0a432ad1 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x0a45e644 tty_devnum +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5e929e eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x0a5f79c0 arp_xmit +EXPORT_SYMBOL vmlinux 0x0a61f8e7 pci_release_region +EXPORT_SYMBOL vmlinux 0x0a694327 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x0a69620e iov_iter_npages +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaa2172 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af9b1af simple_release_fs +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b34b36b elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x0b5c9398 elv_rb_add +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0ba00fb2 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x0ba4cf22 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcd04af end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c50378a inet_csk_accept +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c7b5aa2 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x0c87732f cdev_add +EXPORT_SYMBOL vmlinux 0x0c8865f2 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x0c8e4f07 phy_driver_register +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca26d32 udp_set_csum +EXPORT_SYMBOL vmlinux 0x0ca42e51 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cf1b679 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x0cf25290 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x0d0cc116 nvm_put_blk +EXPORT_SYMBOL vmlinux 0x0d0d1754 module_put +EXPORT_SYMBOL vmlinux 0x0d15abe9 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x0d28be0c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x0d29245e __vfs_read +EXPORT_SYMBOL vmlinux 0x0d355d7a tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5f1a25 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d63988a blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d91745c napi_gro_frags +EXPORT_SYMBOL vmlinux 0x0da07462 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db63503 dump_page +EXPORT_SYMBOL vmlinux 0x0db68037 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x0db94854 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0df9d68d nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x0e04b696 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x0e104121 unlock_rename +EXPORT_SYMBOL vmlinux 0x0e3777cf soft_cursor +EXPORT_SYMBOL vmlinux 0x0e3868d4 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x0e3e6c78 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e84de05 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x0e855a18 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e92798a pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0eb7000d of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x0ebc73da xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec87794 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efefc3e vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4ecc17 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f64abcc input_unregister_device +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f722808 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb56b88 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x0fe969c1 blk_put_request +EXPORT_SYMBOL vmlinux 0x0ff14485 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x105c3331 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x1079dc8f phy_resume +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1090ca21 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10ae47c2 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x10b5fab5 vfs_statfs +EXPORT_SYMBOL vmlinux 0x10b5fe81 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x10bd8c2e kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1113d26d blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x112c8203 tty_check_change +EXPORT_SYMBOL vmlinux 0x1149eb42 simple_getattr +EXPORT_SYMBOL vmlinux 0x115a841f ppp_input_error +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1177066f nvm_end_io +EXPORT_SYMBOL vmlinux 0x1177cc09 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a66e5e put_filp +EXPORT_SYMBOL vmlinux 0x11a6dee4 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x11bd7a6a neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x11e257fb irq_to_desc +EXPORT_SYMBOL vmlinux 0x11f40d07 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fccbee xattr_full_name +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x129ae457 param_ops_charp +EXPORT_SYMBOL vmlinux 0x12a031ae blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bc7831 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x12c68be4 lookup_bdev +EXPORT_SYMBOL vmlinux 0x12cb9574 __init_rwsem +EXPORT_SYMBOL vmlinux 0x12d29fd3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x12d9e472 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e1e404 netpoll_setup +EXPORT_SYMBOL vmlinux 0x13049f57 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134dbd2f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x1366bf03 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x13677e7c inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x1386e4a4 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x138b87ce arp_tbl +EXPORT_SYMBOL vmlinux 0x13bd90c1 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x13c3be90 bio_chain +EXPORT_SYMBOL vmlinux 0x13ccb5c0 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13defab3 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x13ed2310 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x13fdde3d tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x141788c3 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x144cc2e0 km_policy_expired +EXPORT_SYMBOL vmlinux 0x145dc15d new_inode +EXPORT_SYMBOL vmlinux 0x1465dc91 mpage_readpage +EXPORT_SYMBOL vmlinux 0x148c0203 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x14aed903 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x14c19db0 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x14c292aa pci_platform_rom +EXPORT_SYMBOL vmlinux 0x14c99d03 fb_get_mode +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14cf8f8c neigh_seq_start +EXPORT_SYMBOL vmlinux 0x14fc45d1 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x150abd5b inet_bind +EXPORT_SYMBOL vmlinux 0x15192c08 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156de05b scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x159daa5f console_start +EXPORT_SYMBOL vmlinux 0x15ace319 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x15aee0d4 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15be14bc ip_setsockopt +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15c63af5 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x15cb27fb phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x15ce2c5e tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e0ab9c pci_get_device +EXPORT_SYMBOL vmlinux 0x15ea6163 scmd_printk +EXPORT_SYMBOL vmlinux 0x15eef80a setup_new_exec +EXPORT_SYMBOL vmlinux 0x1615efed give_up_console +EXPORT_SYMBOL vmlinux 0x16168d9b mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x162d54eb netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1641a6af vme_irq_generate +EXPORT_SYMBOL vmlinux 0x1642f1bc revalidate_disk +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x1683413a sock_create +EXPORT_SYMBOL vmlinux 0x169dd753 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x16c8dd84 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e9ead5 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x16f773b6 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x1728b2d9 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x175c6641 keyring_clear +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x176d99de abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x177abec4 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17a288f1 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1806a559 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x1813c7fd netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x18177880 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18437855 bio_endio +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1856f605 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x1882289a shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188e3d77 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18ab8d5d page_readlink +EXPORT_SYMBOL vmlinux 0x18b93681 tty_vhangup +EXPORT_SYMBOL vmlinux 0x18bb3066 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x18be3246 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x19036ca6 PDE_DATA +EXPORT_SYMBOL vmlinux 0x19042e46 tty_write_room +EXPORT_SYMBOL vmlinux 0x19484d88 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x196b658b xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x19949a74 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x1997aaaf filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19ab4bec dm_kobject_release +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19dc659c devm_clk_put +EXPORT_SYMBOL vmlinux 0x1a36844b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x1a3f5497 build_skb +EXPORT_SYMBOL vmlinux 0x1a4c131d backlight_device_register +EXPORT_SYMBOL vmlinux 0x1a502b53 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1a5db4d4 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x1a685758 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x1a974e2c __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x1a9aa577 dev_deactivate +EXPORT_SYMBOL vmlinux 0x1aa06f69 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x1aa3e657 elv_rb_find +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace6c61 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0dfcfe d_path +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1d732f __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b28935a memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x1b313997 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x1b44376a inet6_del_offload +EXPORT_SYMBOL vmlinux 0x1b46d859 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b694d48 nvm_register +EXPORT_SYMBOL vmlinux 0x1b76d382 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x1b77ba33 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x1b7e5aac cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb444cf generic_write_checks +EXPORT_SYMBOL vmlinux 0x1bbe2d57 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd04b6a i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x1beeb60b page_symlink +EXPORT_SYMBOL vmlinux 0x1bf2eb4b uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1bfae229 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c08eb41 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c442c88 dev_open +EXPORT_SYMBOL vmlinux 0x1c6a1ce9 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x1c7311f6 skb_store_bits +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c860269 nf_afinfo +EXPORT_SYMBOL vmlinux 0x1ca61b29 seq_dentry +EXPORT_SYMBOL vmlinux 0x1cb7e6ed write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1cc04873 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x1cc8ea30 devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x1cffbd10 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d13d708 kobject_del +EXPORT_SYMBOL vmlinux 0x1d18b8a6 scsi_host_put +EXPORT_SYMBOL vmlinux 0x1d362a42 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x1d4aa662 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x1d578cc0 phy_start +EXPORT_SYMBOL vmlinux 0x1d6a4543 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x1d7601a0 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x1d9ae5bc pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x1dae402d mmc_register_driver +EXPORT_SYMBOL vmlinux 0x1db4b3e4 generic_setlease +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df234eb tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x1dfb1ac7 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2bdd84 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x1e43ab4d jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e778acc scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1e7d1eff dquot_acquire +EXPORT_SYMBOL vmlinux 0x1e7eb675 pci_choose_state +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ebf5b0e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x1ee9f9b3 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x1eef4f03 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x1ef241ec lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x1efde893 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x1f10da7e phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x1f19d033 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1f1f0349 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1f283fb4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x1f2c8c67 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x1f30ab2d sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x1f31b33e dev_get_by_index +EXPORT_SYMBOL vmlinux 0x1f4fff01 __breadahead +EXPORT_SYMBOL vmlinux 0x1f58b877 km_state_notify +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f9903e2 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdbeca2 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x1fe005b8 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1fff083b skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2006a39b genlmsg_put +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201814f6 md_error +EXPORT_SYMBOL vmlinux 0x2041f10d dev_uc_init +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205410fa __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x2059365a iget_failed +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20842b59 input_register_device +EXPORT_SYMBOL vmlinux 0x20922f3d dev_uc_flush +EXPORT_SYMBOL vmlinux 0x209624f3 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x20a0ade5 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d7633b blk_finish_request +EXPORT_SYMBOL vmlinux 0x20dd2a94 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e64287 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20ee9f6c devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21251cde rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x2126b9bc filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x219dac44 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x21dc11ec udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f248a8 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2257b197 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x2257f90f input_release_device +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x227119fa i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22854795 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b337f8 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x22bd17f2 sync_inode +EXPORT_SYMBOL vmlinux 0x22ca8ffc of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x22ebe71a devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x22f30b4d devm_request_resource +EXPORT_SYMBOL vmlinux 0x22ff3568 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232392d0 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x23264fa7 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x23376503 of_node_put +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x23475ec9 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x234bfc75 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x235efb94 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x2364b42e agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x23a144a4 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x23a4c32a max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ab26bf unregister_cdrom +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c069ef mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x23c5590e mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24289ae0 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x242a372a devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x242bad59 tcp_req_err +EXPORT_SYMBOL vmlinux 0x2433458b register_quota_format +EXPORT_SYMBOL vmlinux 0x243f53e3 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445c299 bio_split +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246c83ea ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x246dc562 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x248122db scsi_dma_map +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2487eaa2 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x24a55b69 textsearch_register +EXPORT_SYMBOL vmlinux 0x24b4286c i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24e3b35d of_find_property +EXPORT_SYMBOL vmlinux 0x24e86cf7 get_gendisk +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f4dc15 netlink_ack +EXPORT_SYMBOL vmlinux 0x24f69e7c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25054a95 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x250969aa of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x2515d000 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x251aa00d blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x2526d40c tty_port_close +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25512415 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x2552e05f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25902741 pipe_unlock +EXPORT_SYMBOL vmlinux 0x25b17ab8 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x25c1665e dcb_setapp +EXPORT_SYMBOL vmlinux 0x25ce510f dev_printk_emit +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x2629297f dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x26392342 user_path_create +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264ceb25 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x264fc74a dev_remove_offload +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2660aeb4 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x266dc888 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x26717b94 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x2682b69b fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x269c74e7 skb_queue_head +EXPORT_SYMBOL vmlinux 0x26a46253 md_check_recovery +EXPORT_SYMBOL vmlinux 0x26b6b74f nf_log_packet +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26cb2f8e security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x26da9b99 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f88bf3 tso_build_data +EXPORT_SYMBOL vmlinux 0x26fde1d4 mutex_trylock +EXPORT_SYMBOL vmlinux 0x2709f2bc dev_crit +EXPORT_SYMBOL vmlinux 0x270daab8 from_kuid +EXPORT_SYMBOL vmlinux 0x270dfee8 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x2718adc9 __bforget +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2752b278 of_device_unregister +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x276b3e74 file_path +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x27742d2e netdev_crit +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2792e040 input_register_handle +EXPORT_SYMBOL vmlinux 0x2797abd6 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x27af1d97 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c3ea02 vme_dma_request +EXPORT_SYMBOL vmlinux 0x27df64d7 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e2b7f9 validate_sp +EXPORT_SYMBOL vmlinux 0x27f02252 device_get_mac_address +EXPORT_SYMBOL vmlinux 0x27f12fce devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x280c2c22 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281d2be7 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28360343 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x2872f145 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2876f026 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x288141d4 posix_test_lock +EXPORT_SYMBOL vmlinux 0x28814662 bdi_init +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28aae132 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28c9db39 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x28cc2e44 file_update_time +EXPORT_SYMBOL vmlinux 0x28ce0d3d vfs_read +EXPORT_SYMBOL vmlinux 0x28d9e96b set_device_ro +EXPORT_SYMBOL vmlinux 0x28e6ce45 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x29065e73 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x2916264b tty_unlock +EXPORT_SYMBOL vmlinux 0x2920fff4 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x292e9316 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x29369f62 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x2938bac9 bh_submit_read +EXPORT_SYMBOL vmlinux 0x2945b5cc bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x294ea219 tcp_prot +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295734c9 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x295c448b ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x296f9282 free_user_ns +EXPORT_SYMBOL vmlinux 0x2973aa65 fb_pan_display +EXPORT_SYMBOL vmlinux 0x297e1192 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x29800d47 inet6_release +EXPORT_SYMBOL vmlinux 0x29966da2 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x29aa440b tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x29bb2624 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x29d85596 follow_down_one +EXPORT_SYMBOL vmlinux 0x29dfd095 follow_up +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a38c5fb jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x2a65c6ef netlink_capable +EXPORT_SYMBOL vmlinux 0x2a734453 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x2a8369d3 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab17029 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2ac11833 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2ac2e7ed __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2acb8bad set_page_dirty +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad15b4f vm_map_ram +EXPORT_SYMBOL vmlinux 0x2ae8dd31 __lock_page +EXPORT_SYMBOL vmlinux 0x2af6199c register_netdev +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b26db7d security_path_rename +EXPORT_SYMBOL vmlinux 0x2b2873d7 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b508392 skb_checksum +EXPORT_SYMBOL vmlinux 0x2b6f097c phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x2b83f180 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2b93d18e tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x2b9400c1 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x2b97c84a mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bafa482 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x2bc6dec4 do_splice_from +EXPORT_SYMBOL vmlinux 0x2bd080e6 iunique +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2c0a8e4f xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x2c0de900 tcp_poll +EXPORT_SYMBOL vmlinux 0x2c1263cd __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2c19b6fc input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4a8a39 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x2c4bbac1 dquot_drop +EXPORT_SYMBOL vmlinux 0x2c501257 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x2c561a04 security_path_chown +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c81eefc i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2c8c824b dst_release +EXPORT_SYMBOL vmlinux 0x2c9d2b9c netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x2cbc0528 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x2cdf54a7 is_bad_inode +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d09e603 free_netdev +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d168460 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x2d25231b generic_file_open +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d56a234 kern_path +EXPORT_SYMBOL vmlinux 0x2d61e4a0 param_get_int +EXPORT_SYMBOL vmlinux 0x2d6b1378 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x2d7dc782 lock_fb_info +EXPORT_SYMBOL vmlinux 0x2d852b81 set_binfmt +EXPORT_SYMBOL vmlinux 0x2d98ba0e block_read_full_page +EXPORT_SYMBOL vmlinux 0x2d9b94dd bioset_create +EXPORT_SYMBOL vmlinux 0x2dbac0fc key_invalidate +EXPORT_SYMBOL vmlinux 0x2dc5e098 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x2dd45c2a blk_init_queue +EXPORT_SYMBOL vmlinux 0x2ddb9c4b generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x2ddd3cee __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1614c4 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x2e17df26 noop_llseek +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e393572 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x2e47a7be phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x2e555f39 tcp_check_req +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e61e1a9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x2e8515f8 generic_make_request +EXPORT_SYMBOL vmlinux 0x2e8a609c wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x2e912754 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x2e9546f3 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x2ea05eff is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x2eaa684c inet_del_protocol +EXPORT_SYMBOL vmlinux 0x2ec22668 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x2ecd7c98 d_make_root +EXPORT_SYMBOL vmlinux 0x2ed65ca7 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efac608 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f155335 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3c28d6 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x2f3f77c4 skb_find_text +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5d2d68 sock_efree +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f66e000 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x2f814112 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x2f81b458 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x2fa36727 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe4b80e twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x2fef6a8d uart_register_driver +EXPORT_SYMBOL vmlinux 0x2ffd1037 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x2ffee1db devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x300983ca read_cache_pages +EXPORT_SYMBOL vmlinux 0x30197ba2 dev_alert +EXPORT_SYMBOL vmlinux 0x30206064 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3024e25a mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x30273595 d_tmpfile +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304d0dec finish_no_open +EXPORT_SYMBOL vmlinux 0x305ff655 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x306f6ea8 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30840e69 security_path_symlink +EXPORT_SYMBOL vmlinux 0x30904411 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c46e45 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x30f70691 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x30fc0b73 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x310f8dd3 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x31172d54 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3132f9db dev_close +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317997db jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x3199f631 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x31b3ef4d sock_i_uid +EXPORT_SYMBOL vmlinux 0x31c5497f param_get_long +EXPORT_SYMBOL vmlinux 0x31d2cfe7 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x31f8f82f security_file_permission +EXPORT_SYMBOL vmlinux 0x31fda486 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x320b4cf9 get_phy_device +EXPORT_SYMBOL vmlinux 0x320c8410 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x322772c2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x32302335 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3241b6e1 dev_activate +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x32728ae8 __seq_open_private +EXPORT_SYMBOL vmlinux 0x32780a16 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x3284a8ad pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3295be0c scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x32b7d41f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32fb1b90 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x330a1858 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x330de284 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x332a0f4f tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33677d95 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x338a39ae input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x33a0fcdd register_cdrom +EXPORT_SYMBOL vmlinux 0x33a60256 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x33ad0da3 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c5ec75 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x3406c061 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3412dd15 sock_no_connect +EXPORT_SYMBOL vmlinux 0x342dd126 kobject_add +EXPORT_SYMBOL vmlinux 0x342f8cef key_task_permission +EXPORT_SYMBOL vmlinux 0x34445f24 blk_init_tags +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344ba8e2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3450201b cad_pid +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3470cd90 inet_shutdown +EXPORT_SYMBOL vmlinux 0x347f604d __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x34843537 rwsem_wake +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a4b426 check_disk_change +EXPORT_SYMBOL vmlinux 0x34a75231 revert_creds +EXPORT_SYMBOL vmlinux 0x34aa0a8d jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x34e09837 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x34f31075 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3500c8c9 d_move +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x35560813 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x358ae125 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35aad2e1 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x35b6ca9c mmc_add_host +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x3629e024 vme_lm_request +EXPORT_SYMBOL vmlinux 0x363e4f0b seq_open +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x369b7535 dev_set_group +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36ae7255 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36d3e2c2 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x36dc3ae2 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x371aba62 vfs_writef +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37642577 param_ops_bool +EXPORT_SYMBOL vmlinux 0x37712c12 pci_bus_put +EXPORT_SYMBOL vmlinux 0x377d9e90 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x37847de6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x378d6c72 neigh_update +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37cfb1f1 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e3a216 f_setown +EXPORT_SYMBOL vmlinux 0x37f36120 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x37f9ecec sock_i_ino +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3833998e debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x38370a19 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x38544f29 devm_ioremap +EXPORT_SYMBOL vmlinux 0x38583233 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x38621db0 vfs_readv +EXPORT_SYMBOL vmlinux 0x3862c58f of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38afad2e pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38f9e0d6 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393a8bab migrate_page +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x3943d38e tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39599b3c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x396f834f flow_cache_init +EXPORT_SYMBOL vmlinux 0x39732482 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x399b1227 kernel_read +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39ba6667 inode_permission +EXPORT_SYMBOL vmlinux 0x39c8bafd swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39dda303 nvm_get_blk +EXPORT_SYMBOL vmlinux 0x3a18258c skb_dequeue +EXPORT_SYMBOL vmlinux 0x3a2ce0b1 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x3a40f19e netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x3a43ced5 seq_open_private +EXPORT_SYMBOL vmlinux 0x3a457735 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x3a5880a5 send_sig +EXPORT_SYMBOL vmlinux 0x3a5ea39a vc_cons +EXPORT_SYMBOL vmlinux 0x3a5fbe0e of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x3a712edd __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aadc7b9 keyring_alloc +EXPORT_SYMBOL vmlinux 0x3ab576da padata_start +EXPORT_SYMBOL vmlinux 0x3ad70038 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x3b2c46cd dup_iter +EXPORT_SYMBOL vmlinux 0x3b345184 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x3b4af1f1 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b730995 devm_memunmap +EXPORT_SYMBOL vmlinux 0x3b770d1d jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b840fd8 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x3b858217 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x3ba4b980 register_shrinker +EXPORT_SYMBOL vmlinux 0x3ba762bb nf_log_set +EXPORT_SYMBOL vmlinux 0x3bb2f3b6 agp_backend_release +EXPORT_SYMBOL vmlinux 0x3bc4a93f sys_imageblit +EXPORT_SYMBOL vmlinux 0x3bde1d17 sock_no_getname +EXPORT_SYMBOL vmlinux 0x3bf6ea63 mmc_start_req +EXPORT_SYMBOL vmlinux 0x3c3c7422 __invalidate_device +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c65e691 d_instantiate +EXPORT_SYMBOL vmlinux 0x3c712b39 skb_push +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c973082 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x3ca60c7f inet_addr_type +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cd02231 arp_send +EXPORT_SYMBOL vmlinux 0x3cd0b966 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3cdcabee neigh_app_ns +EXPORT_SYMBOL vmlinux 0x3cdf9927 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfe43ef xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x3cff8f24 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x3d171b9c tty_throttle +EXPORT_SYMBOL vmlinux 0x3d6f5004 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x3d81f92f xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dce0b0c register_md_personality +EXPORT_SYMBOL vmlinux 0x3dce6cfb blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x3de22ad2 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3df14a37 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x3dfc01eb dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e05e835 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x3e2a8d6b ps2_drain +EXPORT_SYMBOL vmlinux 0x3e2f1971 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x3e34b006 vme_master_request +EXPORT_SYMBOL vmlinux 0x3e6ce47a d_lookup +EXPORT_SYMBOL vmlinux 0x3e80ad25 ip6_route_output +EXPORT_SYMBOL vmlinux 0x3e877be0 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ec20019 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x3ed64606 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x3ee21068 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f218259 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5ae402 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x3f735719 __serio_register_port +EXPORT_SYMBOL vmlinux 0x3f76d05f sg_miter_next +EXPORT_SYMBOL vmlinux 0x3f884fef blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x3fa59511 d_find_alias +EXPORT_SYMBOL vmlinux 0x3fb6572d bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x3fb6b7e0 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x3fc73518 down_read_trylock +EXPORT_SYMBOL vmlinux 0x3fd2e2b2 netif_skb_features +EXPORT_SYMBOL vmlinux 0x3fdbd9af skb_unlink +EXPORT_SYMBOL vmlinux 0x3fdce34d set_blocksize +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4004933b sock_from_file +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40636995 page_put_link +EXPORT_SYMBOL vmlinux 0x40916b4c pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x40950c20 sock_create_kern +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409739f1 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40bcbc32 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c0b83e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40cda14e proc_mkdir +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d4f909 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dbf9c3 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x40dfcae0 page_waitqueue +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4155fc4a qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x41763241 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4194b785 filemap_flush +EXPORT_SYMBOL vmlinux 0x419dbddc netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41af278d sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41c1be09 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x41de40a5 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x41fac87c __get_page_tail +EXPORT_SYMBOL vmlinux 0x4202eb93 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x4203a615 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x4214910e dcache_dir_open +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422d827a phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x42369174 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4261c1af mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x4267e869 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x427beff1 blk_free_tags +EXPORT_SYMBOL vmlinux 0x4292be1e md_cluster_mod +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a43cdf jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x42b18bfe __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x42b53dd5 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x42b693a7 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x42c41367 ether_setup +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431490a9 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x431596ca tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x4316c357 param_ops_uint +EXPORT_SYMBOL vmlinux 0x431eecd4 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x433b48f2 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4374c470 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x437e0624 netlink_unicast +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a78649 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x43d0f571 block_truncate_page +EXPORT_SYMBOL vmlinux 0x43e1579e blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x43ee412e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f2423d bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x43f520b7 dquot_release +EXPORT_SYMBOL vmlinux 0x43ffba2c xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44129859 seq_vprintf +EXPORT_SYMBOL vmlinux 0x44188322 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x442705db get_io_context +EXPORT_SYMBOL vmlinux 0x4440367c mount_ns +EXPORT_SYMBOL vmlinux 0x44593bbe __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x445b6500 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x44660c55 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x4472ea43 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x447bc92b clear_user_page +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x448f86e0 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44ceacf6 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454a06f8 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x455a7f77 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x4562cbcc of_get_min_tck +EXPORT_SYMBOL vmlinux 0x4567a4f6 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a19f84 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aa3d19 proto_unregister +EXPORT_SYMBOL vmlinux 0x45b0d879 km_state_expired +EXPORT_SYMBOL vmlinux 0x45ca92de dev_get_flags +EXPORT_SYMBOL vmlinux 0x45d306de inet_frag_find +EXPORT_SYMBOL vmlinux 0x45ee1143 serio_interrupt +EXPORT_SYMBOL vmlinux 0x460257f9 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x46081c1a xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4637107d tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46828aa5 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x468b4dae kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x46976799 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x46a20032 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d8c79c open_exec +EXPORT_SYMBOL vmlinux 0x46e07a27 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47095dd0 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x47393840 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x473f3d64 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x47508904 of_get_address +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x47663b64 misc_deregister +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47c3e047 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x47d1413a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x47e636c4 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x4809ac90 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x48230c84 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x484d4bdd handle_edge_irq +EXPORT_SYMBOL vmlinux 0x484db65b of_match_node +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48680ff6 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x486bae78 lease_modify +EXPORT_SYMBOL vmlinux 0x4870a6c1 set_nlink +EXPORT_SYMBOL vmlinux 0x4874cf1f pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x487a9e6a path_is_under +EXPORT_SYMBOL vmlinux 0x48933e33 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b04620 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bd4fa3 pci_map_rom +EXPORT_SYMBOL vmlinux 0x48bfbad9 param_set_uint +EXPORT_SYMBOL vmlinux 0x48eee9e2 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x48f962ec serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x49015765 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4922f1e1 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x49505c6e neigh_parms_release +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49633039 security_path_unlink +EXPORT_SYMBOL vmlinux 0x497cf919 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x497d8cea dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x49accdfa compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x49ae89b8 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x49aeaafc tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c68165 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a01ed2b unregister_md_personality +EXPORT_SYMBOL vmlinux 0x4a12adee km_report +EXPORT_SYMBOL vmlinux 0x4a15dd3c compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4a1630d5 sk_net_capable +EXPORT_SYMBOL vmlinux 0x4a24fa94 of_match_device +EXPORT_SYMBOL vmlinux 0x4a3ba18a pci_bus_get +EXPORT_SYMBOL vmlinux 0x4a3e2f70 register_key_type +EXPORT_SYMBOL vmlinux 0x4a4e174f __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x4a4e1af5 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x4a6dee21 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x4a6e49b4 single_release +EXPORT_SYMBOL vmlinux 0x4a720801 force_sig +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4a93e204 genphy_update_link +EXPORT_SYMBOL vmlinux 0x4a95e2b8 padata_stop +EXPORT_SYMBOL vmlinux 0x4a9ba8b3 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x4aa7ae77 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x4ab1f935 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x4ab22e73 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x4ab7ada9 finish_open +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4af67652 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0872e7 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6ae128 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b96f511 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x4ba852da neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb51f6f seq_puts +EXPORT_SYMBOL vmlinux 0x4be51c39 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x4bf50c61 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x4c0128f8 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c34a1b8 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x4c41621f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x4c459ce9 user_revoke +EXPORT_SYMBOL vmlinux 0x4c4fa6f1 bd_set_size +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4ca99221 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x4cb3f71f of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x4cbc54ee del_gendisk +EXPORT_SYMBOL vmlinux 0x4cbf84ae netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce8ba17 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x4ce98b75 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x4cec6acd tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x4d028c56 udp_seq_open +EXPORT_SYMBOL vmlinux 0x4d109d41 sock_create_lite +EXPORT_SYMBOL vmlinux 0x4d1f60bd phy_device_free +EXPORT_SYMBOL vmlinux 0x4d44fe22 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x4d4edb32 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x4d5a05b3 vfs_write +EXPORT_SYMBOL vmlinux 0x4d65a207 mount_nodev +EXPORT_SYMBOL vmlinux 0x4d6bdfe0 deactivate_super +EXPORT_SYMBOL vmlinux 0x4d77196f __f_setown +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d91df58 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db3e2f1 udplite_prot +EXPORT_SYMBOL vmlinux 0x4dbcb41e simple_write_begin +EXPORT_SYMBOL vmlinux 0x4dc74945 mntget +EXPORT_SYMBOL vmlinux 0x4dd72a4d drop_super +EXPORT_SYMBOL vmlinux 0x4de06815 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de4483b get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e02a1d1 vme_register_driver +EXPORT_SYMBOL vmlinux 0x4e072bf7 md_done_sync +EXPORT_SYMBOL vmlinux 0x4e1e42de genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e5f494c tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e733da7 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x4e7981fa tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x4e7c4c88 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x4e94b00b dquot_file_open +EXPORT_SYMBOL vmlinux 0x4e9b23df param_get_uint +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea35bdb simple_dir_operations +EXPORT_SYMBOL vmlinux 0x4ea95058 seq_path +EXPORT_SYMBOL vmlinux 0x4eba0212 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x4ec116d6 dev_mc_init +EXPORT_SYMBOL vmlinux 0x4ed82a80 dput +EXPORT_SYMBOL vmlinux 0x4eec3f4a audit_log +EXPORT_SYMBOL vmlinux 0x4ef3c5ad of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x4f01a61a lro_receive_skb +EXPORT_SYMBOL vmlinux 0x4f0a6b3c pci_domain_nr +EXPORT_SYMBOL vmlinux 0x4f0cfe77 clear_inode +EXPORT_SYMBOL vmlinux 0x4f0dca77 vme_irq_free +EXPORT_SYMBOL vmlinux 0x4f118272 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f39e9fd generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x4f3fff03 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x4f60ae48 netif_napi_del +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b8025 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4fa567c9 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x4fafa399 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x4fb2460b module_layout +EXPORT_SYMBOL vmlinux 0x4fbc6017 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x4fbea499 skb_trim +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe7c5a7 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x4ffcfbb5 kset_register +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500c34fa key_put +EXPORT_SYMBOL vmlinux 0x50435a77 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x50629386 agp_bridge +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x507b3c39 vfs_link +EXPORT_SYMBOL vmlinux 0x507f9ec9 __dax_fault +EXPORT_SYMBOL vmlinux 0x508a94f5 tty_port_open +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50bd301a ps2_command +EXPORT_SYMBOL vmlinux 0x50c556b8 param_set_short +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e7acc6 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511cdc31 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x513aa0f7 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x513b9837 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x513f8fb1 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x5147ae9a fput +EXPORT_SYMBOL vmlinux 0x514f46c3 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x5180ee88 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x518e91de sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x51940c18 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a9c8b1 sock_init_data +EXPORT_SYMBOL vmlinux 0x51a9d07a dev_add_pack +EXPORT_SYMBOL vmlinux 0x51b521e8 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x51b71dbc tty_unregister_device +EXPORT_SYMBOL vmlinux 0x51cced70 napi_disable +EXPORT_SYMBOL vmlinux 0x51e6c7a4 blk_put_queue +EXPORT_SYMBOL vmlinux 0x51ed5182 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x51f539bc vme_irq_handler +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5254ac60 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x5257b980 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5264940e serio_open +EXPORT_SYMBOL vmlinux 0x52793e60 free_task +EXPORT_SYMBOL vmlinux 0x527b7cf6 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x52825807 cdrom_open +EXPORT_SYMBOL vmlinux 0x52916ef2 to_nd_btt +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a94f16 d_delete +EXPORT_SYMBOL vmlinux 0x52c89106 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x52dade38 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x5302391f sys_fillrect +EXPORT_SYMBOL vmlinux 0x5303b350 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x53069bc7 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x53152965 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x53273640 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536256d9 dm_register_target +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x537115de mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5391b527 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53c54db2 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x53ce6df1 empty_aops +EXPORT_SYMBOL vmlinux 0x53d43216 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x53eb138e twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5426de56 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x54384ab6 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5445b849 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x544a1eab dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x546ba048 input_open_device +EXPORT_SYMBOL vmlinux 0x547d1c98 netif_device_detach +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b5027d dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54ca392f padata_do_parallel +EXPORT_SYMBOL vmlinux 0x54d0b90c i2c_transfer +EXPORT_SYMBOL vmlinux 0x54d8ee2a __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54eac44e inet_stream_connect +EXPORT_SYMBOL vmlinux 0x54ed6638 napi_get_frags +EXPORT_SYMBOL vmlinux 0x55117eb9 bdgrab +EXPORT_SYMBOL vmlinux 0x551524e3 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x55184cd7 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x551a5eda would_dump +EXPORT_SYMBOL vmlinux 0x551b49ea xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552095a4 seq_release_private +EXPORT_SYMBOL vmlinux 0x552d74b7 install_exec_creds +EXPORT_SYMBOL vmlinux 0x553b8449 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557fde91 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x55c2472c md_unregister_thread +EXPORT_SYMBOL vmlinux 0x55caf0fc dev_change_flags +EXPORT_SYMBOL vmlinux 0x55d3fa86 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f05551 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x55f1eb5f serio_unregister_port +EXPORT_SYMBOL vmlinux 0x5607777f dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x5609b07a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x561bc6c8 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x562d02d1 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x562d57e0 search_binary_handler +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x565122e1 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x565274ef mac_find_mode +EXPORT_SYMBOL vmlinux 0x5671b298 input_event +EXPORT_SYMBOL vmlinux 0x5678e7ab fasync_helper +EXPORT_SYMBOL vmlinux 0x568d5629 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x569f761d noop_qdisc +EXPORT_SYMBOL vmlinux 0x56ada900 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x56bd02a8 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x56c0b93c __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d4a1e9 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x56dabb1b up_read +EXPORT_SYMBOL vmlinux 0x56e5bdc4 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x56e73555 elv_register_queue +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x571b23fa xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57426a34 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574d164a i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57748789 padata_free +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579df5ef mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57aa8ecf kernel_accept +EXPORT_SYMBOL vmlinux 0x57ae095f decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x57c53606 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x57d67149 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x57ddce1b dm_put_device +EXPORT_SYMBOL vmlinux 0x57e04e08 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x57f1f086 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x57fd01ff vme_register_bridge +EXPORT_SYMBOL vmlinux 0x57fddbb7 release_firmware +EXPORT_SYMBOL vmlinux 0x58054e07 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x5815ede5 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58209fc5 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5848a339 request_firmware +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588defc6 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d3612e tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e7400c padata_alloc +EXPORT_SYMBOL vmlinux 0x58f18aee sk_mc_loop +EXPORT_SYMBOL vmlinux 0x58fc2089 genphy_read_status +EXPORT_SYMBOL vmlinux 0x590208ac ip6_frag_init +EXPORT_SYMBOL vmlinux 0x5932b12d clkdev_drop +EXPORT_SYMBOL vmlinux 0x594601af abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x597055cc kernel_getsockname +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5996031e consume_skb +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59cd7109 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x59ec83cd __quota_error +EXPORT_SYMBOL vmlinux 0x59faa5a6 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a178595 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x5a1c2842 init_task +EXPORT_SYMBOL vmlinux 0x5a23c1a1 phy_suspend +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a499a4d pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x5a657fdb mmc_release_host +EXPORT_SYMBOL vmlinux 0x5a660fb5 dev_add_offload +EXPORT_SYMBOL vmlinux 0x5a6fb5e8 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x5a7e3610 set_disk_ro +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aa0c9da prepare_creds +EXPORT_SYMBOL vmlinux 0x5aac4da2 input_close_device +EXPORT_SYMBOL vmlinux 0x5ac8537e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x5add1dcb tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x5ae0d3fb padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x5af1d427 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b170e3c account_page_dirtied +EXPORT_SYMBOL vmlinux 0x5b361826 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x5b482a33 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b92c200 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9cfa4c no_llseek +EXPORT_SYMBOL vmlinux 0x5bbe6fa7 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x5bbfd154 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc5186f ll_rw_block +EXPORT_SYMBOL vmlinux 0x5bdabc8e param_set_ulong +EXPORT_SYMBOL vmlinux 0x5bdcde6f __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5bea8acc __nlmsg_put +EXPORT_SYMBOL vmlinux 0x5c091a81 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x5c203578 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x5c295fc3 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c42c615 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x5c5ae701 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x5c5fdb36 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x5c6ab08c rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cc90923 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x5ccc98a1 pci_get_slot +EXPORT_SYMBOL vmlinux 0x5ce98839 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d04b64d vfs_create +EXPORT_SYMBOL vmlinux 0x5d078226 get_disk +EXPORT_SYMBOL vmlinux 0x5d3cf6e6 tcp_child_process +EXPORT_SYMBOL vmlinux 0x5d421119 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d564a2d cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d862340 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x5d886e19 vga_get +EXPORT_SYMBOL vmlinux 0x5d9dc9d6 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x5dac920c xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x5db2b19f copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x5db63183 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x5dbb8ac0 sock_no_poll +EXPORT_SYMBOL vmlinux 0x5de16295 of_iomap +EXPORT_SYMBOL vmlinux 0x5df37c7a __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x5dff2704 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x5e06a7f8 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x5e1397fd devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3b3335 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x5e3ccdde pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5e4070a6 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x5e45d2e3 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x5e48fd9e rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e99ec78 udp_add_offload +EXPORT_SYMBOL vmlinux 0x5e9ad11c dev_emerg +EXPORT_SYMBOL vmlinux 0x5ea9dd7b genl_notify +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5ef2e6b6 from_kprojid +EXPORT_SYMBOL vmlinux 0x5eff4e27 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1d18be __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x5f2e89b6 update_region +EXPORT_SYMBOL vmlinux 0x5f318aec pci_release_regions +EXPORT_SYMBOL vmlinux 0x5f4e4810 put_disk +EXPORT_SYMBOL vmlinux 0x5f6e53b0 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x5f6eacf2 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8b2e59 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x5f90ad9a truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5f9c9d32 elv_rb_del +EXPORT_SYMBOL vmlinux 0x5fbcf114 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x5fce7fc5 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x5fd21885 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdfcd91 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60075994 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x600b07d7 neigh_for_each +EXPORT_SYMBOL vmlinux 0x6015e9cc fsync_bdev +EXPORT_SYMBOL vmlinux 0x601b5345 __module_get +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605db51b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6075731d dump_align +EXPORT_SYMBOL vmlinux 0x608bbc41 locks_free_lock +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x6092741a tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x609b08e1 sget +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60bc8439 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x60bd4e70 lro_flush_all +EXPORT_SYMBOL vmlinux 0x60c888a9 phy_device_remove +EXPORT_SYMBOL vmlinux 0x60d2c347 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x60d454af dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x60ddb146 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x6101cf84 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x61256399 twl6040_power +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6178a493 fd_install +EXPORT_SYMBOL vmlinux 0x6190589e of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a73607 dma_find_channel +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x61f956e6 mmc_erase +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6216737e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623ba66f simple_link +EXPORT_SYMBOL vmlinux 0x623e09ac pcim_iounmap +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627afc55 ip_options_compile +EXPORT_SYMBOL vmlinux 0x627f1fef invalidate_partition +EXPORT_SYMBOL vmlinux 0x627f48ec __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6293587e __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x62b824e7 param_set_charp +EXPORT_SYMBOL vmlinux 0x62c6c67e skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x62cea1c8 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x62fb66ba bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x63035414 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x63420511 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63a9fbe3 lookup_one_len +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c5af57 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x63e0d836 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x63ea7bee kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640e3208 blk_queue_split +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641d3df9 vfs_fsync +EXPORT_SYMBOL vmlinux 0x646ac757 kill_fasync +EXPORT_SYMBOL vmlinux 0x647178da __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x64841b55 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x6486df1e clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x6492a54f jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649b6b5e mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x649f3222 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64be4de2 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x64ee94d0 clk_get +EXPORT_SYMBOL vmlinux 0x650e6308 input_set_capability +EXPORT_SYMBOL vmlinux 0x65110da1 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651b4768 nobh_writepage +EXPORT_SYMBOL vmlinux 0x6526f8b2 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653a8a19 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6547b6ee skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x6549c3fa dma_sync_wait +EXPORT_SYMBOL vmlinux 0x654c43ea console_stop +EXPORT_SYMBOL vmlinux 0x6554353b have_submounts +EXPORT_SYMBOL vmlinux 0x6565e2fa netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6578b492 redraw_screen +EXPORT_SYMBOL vmlinux 0x657b6dea jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c4495e nobh_write_begin +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x663ddf10 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x6648e4c7 unload_nls +EXPORT_SYMBOL vmlinux 0x6649d5f4 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x6650805e __kernel_write +EXPORT_SYMBOL vmlinux 0x665ffbd9 key_link +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x66796ce2 alloc_file +EXPORT_SYMBOL vmlinux 0x66817eb6 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x669b1388 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x669e237f nf_hook_slow +EXPORT_SYMBOL vmlinux 0x66a09b0e ip6_xmit +EXPORT_SYMBOL vmlinux 0x66a4280e fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x66cadfaf mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x66cf606c jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x6705ec63 netdev_notice +EXPORT_SYMBOL vmlinux 0x67089dd8 of_phy_attach +EXPORT_SYMBOL vmlinux 0x673c5320 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674fa98d sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x675a9a1a simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x676fa15b serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x677180f2 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677fa6f1 bioset_free +EXPORT_SYMBOL vmlinux 0x67952bea fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x6799d3bb bdget_disk +EXPORT_SYMBOL vmlinux 0x67a45dbe xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x67a6f54f led_blink_set +EXPORT_SYMBOL vmlinux 0x67b403b2 i2c_master_send +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d15495 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x67e70285 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x67e9c627 netif_device_attach +EXPORT_SYMBOL vmlinux 0x67f8f554 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x681af019 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x681ea2ce complete_request_key +EXPORT_SYMBOL vmlinux 0x681ec599 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x682bbe41 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x68490fc4 seq_pad +EXPORT_SYMBOL vmlinux 0x684c2b58 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x684f7803 generic_write_end +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6871bdf0 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6886ff82 dqput +EXPORT_SYMBOL vmlinux 0x688f3a30 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x689da068 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a56111 __free_pages +EXPORT_SYMBOL vmlinux 0x68ae5096 drop_nlink +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68dc1317 qdisc_reset +EXPORT_SYMBOL vmlinux 0x68dc6fdd generic_read_dir +EXPORT_SYMBOL vmlinux 0x6900e7e9 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x690c7ebb lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x69331851 free_page_put_link +EXPORT_SYMBOL vmlinux 0x69661916 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x696d3e18 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6983cb6b scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x698ff5c0 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x699ec45b max8998_update_reg +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d50282 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x69e7bd6f inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x69efb9dd inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x69fc42de fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a2dc1fd vga_con +EXPORT_SYMBOL vmlinux 0x6a33c9b0 truncate_setsize +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a6228ea param_ops_long +EXPORT_SYMBOL vmlinux 0x6a64f25c of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x6a6b1327 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a80232f pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6ab72316 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x6aca060d scsi_print_command +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ae0a145 pci_request_region +EXPORT_SYMBOL vmlinux 0x6ae3be4d i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af384ac genphy_suspend +EXPORT_SYMBOL vmlinux 0x6af5797d netdev_change_features +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0a4dad ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2b950a devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2ece59 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x6b433af8 path_put +EXPORT_SYMBOL vmlinux 0x6b51fb54 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x6b540edf mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x6b59eb27 copy_to_iter +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b605ccc led_update_brightness +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b8893d5 iov_iter_init +EXPORT_SYMBOL vmlinux 0x6b9b3f80 inet_put_port +EXPORT_SYMBOL vmlinux 0x6b9fdaf3 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x6ba27252 __scm_destroy +EXPORT_SYMBOL vmlinux 0x6ba93efc xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x6bc14afc compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcd3e15 single_open_size +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdd0180 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x6be773ef netlink_set_err +EXPORT_SYMBOL vmlinux 0x6bf8c06f pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c267b22 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x6c30e138 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x6c3e73d4 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x6c42afff iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x6c4b9ce5 bio_put +EXPORT_SYMBOL vmlinux 0x6c4c04ee km_policy_notify +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c56d9c1 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c749531 register_netdevice +EXPORT_SYMBOL vmlinux 0x6c7936e1 d_splice_alias +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cbfbc5c forget_cached_acl +EXPORT_SYMBOL vmlinux 0x6cdabae9 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x6cfe83a0 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1cf2cb down_write +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2afa19 dev_err +EXPORT_SYMBOL vmlinux 0x6d3eb109 set_groups +EXPORT_SYMBOL vmlinux 0x6d637377 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x6d67e857 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d7a12e1 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x6d7a519c of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dbc8944 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x6dda2007 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6defbced sg_miter_start +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfc8ec1 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x6e160b96 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x6e4a619d scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x6e552b0c kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x6e583ec3 of_dev_put +EXPORT_SYMBOL vmlinux 0x6e5ac025 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x6e61f14e swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e76dc88 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e96cf30 icmpv6_send +EXPORT_SYMBOL vmlinux 0x6e9c8cf3 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6edf328a blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x6ee9263b jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x6ef7205d __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f3a1c1a to_ndd +EXPORT_SYMBOL vmlinux 0x6f4baf14 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x6f4d96d6 udp_ioctl +EXPORT_SYMBOL vmlinux 0x6f699706 param_array_ops +EXPORT_SYMBOL vmlinux 0x6f70e85a zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x6f8286c0 kill_block_super +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fca746f bdevname +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe7fb4c fb_set_cmap +EXPORT_SYMBOL vmlinux 0x6ffb8206 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x70122c6f may_umount_tree +EXPORT_SYMBOL vmlinux 0x7020ed2a netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x7033c071 param_set_copystring +EXPORT_SYMBOL vmlinux 0x7037c49e find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x704500b9 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x70450a2a sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706c6135 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708d665f param_ops_ullong +EXPORT_SYMBOL vmlinux 0x7096c5ed nd_integrity_init +EXPORT_SYMBOL vmlinux 0x70adde77 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x70c4908b dev_warn +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71001f2c posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x7115cab7 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x71277b83 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ab5c4 unregister_console +EXPORT_SYMBOL vmlinux 0x71474b4d param_get_charp +EXPORT_SYMBOL vmlinux 0x714af5d2 neigh_table_init +EXPORT_SYMBOL vmlinux 0x7151eb80 blk_rq_init +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7195e16a i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x71960925 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a9811a inet_select_addr +EXPORT_SYMBOL vmlinux 0x71c6513f lock_sock_nested +EXPORT_SYMBOL vmlinux 0x71c7409d pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x71f025bb key_type_keyring +EXPORT_SYMBOL vmlinux 0x71f8b82e end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x720a747b compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x723d0dd6 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x725735a0 kthread_stop +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x726cc301 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x727bf5b2 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x728e0c0a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x72a37ce2 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72be1777 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x72c25c5b max8925_reg_read +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72d1a183 fb_show_logo +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eb98df abx500_register_ops +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x7339db63 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734ed259 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x735af2fb sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73681412 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x73703615 of_node_get +EXPORT_SYMBOL vmlinux 0x73830cd8 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x738a1978 __devm_release_region +EXPORT_SYMBOL vmlinux 0x738f648d __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x73c7ca95 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x73d2ad7c generic_file_fsync +EXPORT_SYMBOL vmlinux 0x73f2eced dm_get_device +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x742e068e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74845f2f nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748ad54a jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x7492d488 simple_open +EXPORT_SYMBOL vmlinux 0x74a1416a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x74b070dc dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cf4260 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x74e261bc __brelse +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f88f9d agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x750b0424 ppp_input +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753bca0d crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x754b2e6f scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x756292e4 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x75736725 security_path_link +EXPORT_SYMBOL vmlinux 0x758f7112 kobject_put +EXPORT_SYMBOL vmlinux 0x7596d0d4 netdev_update_features +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75c1b62d eth_header_cache +EXPORT_SYMBOL vmlinux 0x75c33860 genphy_resume +EXPORT_SYMBOL vmlinux 0x75e42b38 d_add_ci +EXPORT_SYMBOL vmlinux 0x75e673f7 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x75f7a1c0 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x763eaf0b md_flush_request +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764aa156 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76532cda register_console +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x767fc7b3 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x7685e4b5 input_grab_device +EXPORT_SYMBOL vmlinux 0x768a0ffc file_open_root +EXPORT_SYMBOL vmlinux 0x76987da3 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x769cbb7c dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76a90d9a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x76acdcfd bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x76ba2b2c mfd_add_devices +EXPORT_SYMBOL vmlinux 0x76caebfe pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76dc2192 clk_add_alias +EXPORT_SYMBOL vmlinux 0x76dfebc6 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x76e07260 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x76f42d4f tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x76ff615b try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x771004cb get_agp_version +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773de6df __page_symlink +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7744454b seq_putc +EXPORT_SYMBOL vmlinux 0x77895382 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77ed4d7a iterate_mounts +EXPORT_SYMBOL vmlinux 0x783afb73 mpage_writepage +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784aeeec inet_add_offload +EXPORT_SYMBOL vmlinux 0x7851ea57 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x786502a0 blkdev_get +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7886a6c4 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x7887df6e submit_bio +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a4e779 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x78dc9e29 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78f8fe54 serio_bus +EXPORT_SYMBOL vmlinux 0x790f56a6 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x793393e7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x79362b1c qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x793ec7b2 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x7969b236 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x796db25b __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x796ff2cf pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798efc57 napi_complete_done +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79dbddde nf_register_hook +EXPORT_SYMBOL vmlinux 0x79dc39b3 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x79de3c8f __ps2_command +EXPORT_SYMBOL vmlinux 0x79e84c23 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x79ef9999 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x7a1b0ffd blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a59bc34 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x7a5cda0e input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a6d33d8 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x7a7578c9 pci_disable_device +EXPORT_SYMBOL vmlinux 0x7a7b4666 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab40253 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac1a6ec lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad29a2d dquot_scan_active +EXPORT_SYMBOL vmlinux 0x7ad3e149 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae38750 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x7afeb2a6 ata_print_version +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b172866 fb_class +EXPORT_SYMBOL vmlinux 0x7b229c59 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x7b283266 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b3ba397 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x7b408d30 bdi_destroy +EXPORT_SYMBOL vmlinux 0x7b44eeb3 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x7b5dd845 register_gifconf +EXPORT_SYMBOL vmlinux 0x7b86631b blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x7ba52dd9 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bc5cc32 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x7bce10c9 put_cmsg +EXPORT_SYMBOL vmlinux 0x7bd5c31a qdisc_list_del +EXPORT_SYMBOL vmlinux 0x7bf91f58 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c24f846 devm_iounmap +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5cb702 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6413f4 bio_init +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c7fea20 elevator_alloc +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9ac32e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x7cb2ee93 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x7cd89c63 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x7cdf905b fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x7cdfa899 tcp_close +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce7098e xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x7cf30e44 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfd3024 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d17b1a1 __netif_schedule +EXPORT_SYMBOL vmlinux 0x7d2ddd17 pci_iomap +EXPORT_SYMBOL vmlinux 0x7d68b747 inet6_bind +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7dae8acb agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x7dc4cd6c blk_run_queue +EXPORT_SYMBOL vmlinux 0x7dd7281a blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7de1abc5 simple_readpage +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfc173a max8998_write_reg +EXPORT_SYMBOL vmlinux 0x7e036377 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x7e0ca1c3 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x7e17ec56 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x7e2f70dc bio_phys_segments +EXPORT_SYMBOL vmlinux 0x7e34e84f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x7e43a089 notify_change +EXPORT_SYMBOL vmlinux 0x7e4df8eb msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x7e71eb18 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x7e821dfe netdev_printk +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e9e4f8c tty_lock +EXPORT_SYMBOL vmlinux 0x7ea62c25 generic_update_time +EXPORT_SYMBOL vmlinux 0x7eb04104 inode_init_owner +EXPORT_SYMBOL vmlinux 0x7eb63c81 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x7ebbb493 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x7ec1b9e8 unregister_netdev +EXPORT_SYMBOL vmlinux 0x7ec569b8 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x7ec6d049 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed9d5f0 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f12a17b lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x7f16ba04 param_get_ushort +EXPORT_SYMBOL vmlinux 0x7f238f86 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f311a12 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x7f35b054 __bread_gfp +EXPORT_SYMBOL vmlinux 0x7f5ea400 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f72c36f __ip_dev_find +EXPORT_SYMBOL vmlinux 0x7f9b7e08 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x7fa27d42 pci_iounmap +EXPORT_SYMBOL vmlinux 0x7fa6fa5f con_is_bound +EXPORT_SYMBOL vmlinux 0x7fb91418 bdput +EXPORT_SYMBOL vmlinux 0x7fba4b2b pci_restore_state +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fbeb125 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x7fe0f6a3 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x8018ddd0 get_fs_type +EXPORT_SYMBOL vmlinux 0x802a86e2 pci_clear_master +EXPORT_SYMBOL vmlinux 0x8032ab33 mount_subtree +EXPORT_SYMBOL vmlinux 0x8048b0be param_get_bool +EXPORT_SYMBOL vmlinux 0x8052f5ab write_cache_pages +EXPORT_SYMBOL vmlinux 0x8063512c twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80750cb7 read_code +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x8083fed7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x80a11dac bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x80a57c0b d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x80b9b82b scsi_device_get +EXPORT_SYMBOL vmlinux 0x80c33131 abort_creds +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e56a13 add_disk +EXPORT_SYMBOL vmlinux 0x80f0215b udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x80fcbbd7 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x80fe635c netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x81006e0e xfrm_input +EXPORT_SYMBOL vmlinux 0x8106f528 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x811ce7e4 phy_connect +EXPORT_SYMBOL vmlinux 0x81250e35 bmap +EXPORT_SYMBOL vmlinux 0x81479b21 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8179ef42 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x817d87b7 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x817dbf07 mpage_readpages +EXPORT_SYMBOL vmlinux 0x8181ba5c get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x818391c3 get_super +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81bbbbe7 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ddb2db blk_get_queue +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8209c7c3 current_fs_time +EXPORT_SYMBOL vmlinux 0x820eebf5 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8257ecd8 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x82674209 serio_rescan +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828509be single_open +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b8dcb2 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x82bca2c3 __register_nls +EXPORT_SYMBOL vmlinux 0x82c0b7b1 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x82d53678 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x82e0550e scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82f500f7 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8345e58f pci_bus_type +EXPORT_SYMBOL vmlinux 0x8352fae6 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x83826f26 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x8389de9d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x838aaa77 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x83914299 inet_release +EXPORT_SYMBOL vmlinux 0x83a7daec param_ops_byte +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b8d159 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x83c2d243 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83e057c6 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x8411ec76 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x8415cf96 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x8444a815 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x84677d24 mdiobus_read +EXPORT_SYMBOL vmlinux 0x84705727 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x848110ea param_set_invbool +EXPORT_SYMBOL vmlinux 0x848c9b68 ipv4_specific +EXPORT_SYMBOL vmlinux 0x8491cad2 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x849d6b64 of_get_property +EXPORT_SYMBOL vmlinux 0x849dd0d1 eth_header +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85007140 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x8508df19 simple_write_end +EXPORT_SYMBOL vmlinux 0x8525c3d4 blk_start_queue +EXPORT_SYMBOL vmlinux 0x852fb94e dev_remove_pack +EXPORT_SYMBOL vmlinux 0x8533a386 brioctl_set +EXPORT_SYMBOL vmlinux 0x85663316 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85801f7e scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x858775fc blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x8599d1b0 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x85a66de6 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85b40087 make_kprojid +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bc90de netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85facd18 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x862f261b scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8632d919 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x863ccb6d phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x8642e669 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8662ab9a blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867cc002 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8696e34e inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86aa5da3 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x86c08880 vme_slave_request +EXPORT_SYMBOL vmlinux 0x86f2213a mmc_detect_change +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8704cead bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x87148c08 inc_nlink +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879531ef ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x87ab605b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x87b5fc2d textsearch_prepare +EXPORT_SYMBOL vmlinux 0x87cee324 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x87dcbe9e sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x87df1b6a inet6_getname +EXPORT_SYMBOL vmlinux 0x880bb2f7 dquot_enable +EXPORT_SYMBOL vmlinux 0x880d0760 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x88572617 bdi_register +EXPORT_SYMBOL vmlinux 0x88584d4e inet_frags_init +EXPORT_SYMBOL vmlinux 0x8876d23f iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x887ebcf3 kill_bdev +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88987d09 phy_attach +EXPORT_SYMBOL vmlinux 0x88ab56d6 load_nls_default +EXPORT_SYMBOL vmlinux 0x88d431fb noop_fsync +EXPORT_SYMBOL vmlinux 0x88e67f02 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x88e8c366 set_create_files_as +EXPORT_SYMBOL vmlinux 0x88ea12d2 __devm_request_region +EXPORT_SYMBOL vmlinux 0x88ffb727 of_device_alloc +EXPORT_SYMBOL vmlinux 0x890dc791 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x891fa15e serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8948e121 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x89533677 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x8964f5a8 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x896e4f12 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8985ac26 nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x898ac173 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a110a2f dma_pool_create +EXPORT_SYMBOL vmlinux 0x8a185027 inet_listen +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a21e5e1 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x8a266515 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4b3376 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x8a4e2f2e __blk_end_request +EXPORT_SYMBOL vmlinux 0x8a5093dc mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a60fbb9 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x8a62c891 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8a659aad i2c_use_client +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8230ae ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8a92f3c7 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa0e317 simple_dname +EXPORT_SYMBOL vmlinux 0x8aad1bf0 mpage_writepages +EXPORT_SYMBOL vmlinux 0x8ac17e4e devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x8ac2134e napi_gro_flush +EXPORT_SYMBOL vmlinux 0x8adff07a pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x8ae4b8b2 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b16805a scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x8b2a57e0 set_security_override +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b412e34 __d_drop +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8eebab agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x8b9d10b6 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x8b9eb6be xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x8ba3c6e3 pipe_lock +EXPORT_SYMBOL vmlinux 0x8ba78fdf led_set_brightness +EXPORT_SYMBOL vmlinux 0x8bab8370 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8bcd5684 dev_addr_add +EXPORT_SYMBOL vmlinux 0x8be39b59 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x8be41078 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x8beba840 genphy_config_init +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf4866d get_tz_trend +EXPORT_SYMBOL vmlinux 0x8c0dcade nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c41d338 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x8c426137 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c65aa57 dget_parent +EXPORT_SYMBOL vmlinux 0x8c95a2eb dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x8ca6e39b __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cce1f0f framebuffer_release +EXPORT_SYMBOL vmlinux 0x8cd33362 vfs_symlink +EXPORT_SYMBOL vmlinux 0x8cdebf15 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x8ce45177 skb_seq_read +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d17db5a d_invalidate +EXPORT_SYMBOL vmlinux 0x8d3a2213 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x8d43d9b5 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7d1f3d get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x8d801676 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x8d8da372 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d9b0bce vm_insert_page +EXPORT_SYMBOL vmlinux 0x8dadcc6a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x8db4d0fc scsi_device_resume +EXPORT_SYMBOL vmlinux 0x8dcd59cc do_SAK +EXPORT_SYMBOL vmlinux 0x8dddbd49 agp_create_memory +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e0556f9 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x8e074d76 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x8e1322de dev_mc_del +EXPORT_SYMBOL vmlinux 0x8e1b955b generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x8e1e4838 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x8e412519 mdiobus_free +EXPORT_SYMBOL vmlinux 0x8e5f243c __elv_add_request +EXPORT_SYMBOL vmlinux 0x8e6b7988 get_user_pages +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e7eabda devm_ioport_map +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8ea0d313 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x8eb3d1ed fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x8ebbd600 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ecdc548 fb_find_mode +EXPORT_SYMBOL vmlinux 0x8efe3d5c set_cached_acl +EXPORT_SYMBOL vmlinux 0x8f00431e done_path_create +EXPORT_SYMBOL vmlinux 0x8f062c60 of_phy_connect +EXPORT_SYMBOL vmlinux 0x8f0712b4 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x8f2523e3 module_refcount +EXPORT_SYMBOL vmlinux 0x8f4e3e00 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x8f70fbd9 clear_nlink +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8941fd mark_page_accessed +EXPORT_SYMBOL vmlinux 0x8f9ee758 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x8fa0a79a scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8fbb4d06 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc7e95c tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8fc8f65f sk_free +EXPORT_SYMBOL vmlinux 0x8fca1439 nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x8fcf3b7d lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x8fe201b0 of_root +EXPORT_SYMBOL vmlinux 0x8ff31c94 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x900d130d generic_file_mmap +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x9028804b __napi_complete +EXPORT_SYMBOL vmlinux 0x902d0514 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9033a3ed cdev_init +EXPORT_SYMBOL vmlinux 0x9039f9ac bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x90769ece submit_bh +EXPORT_SYMBOL vmlinux 0x9096d08e serio_reconnect +EXPORT_SYMBOL vmlinux 0x90d8cdf4 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x90d972c0 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x90fa3ae9 irq_set_chip +EXPORT_SYMBOL vmlinux 0x9102bf4f devm_gpio_free +EXPORT_SYMBOL vmlinux 0x910ddd67 kset_unregister +EXPORT_SYMBOL vmlinux 0x9112bc53 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9167d63b kmem_cache_free +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91798721 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x9189baec dev_uc_sync +EXPORT_SYMBOL vmlinux 0x919ba6b1 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c259e0 sock_wake_async +EXPORT_SYMBOL vmlinux 0x91d688c5 param_ops_bint +EXPORT_SYMBOL vmlinux 0x91eed411 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9242919f flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x925ae94a of_get_parent +EXPORT_SYMBOL vmlinux 0x92604a88 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x92822e50 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a0bd49 should_remove_suid +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92af7bc7 uart_match_port +EXPORT_SYMBOL vmlinux 0x92b3072a d_alloc +EXPORT_SYMBOL vmlinux 0x92b486aa sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x92d303fe scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x92e499b2 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x92e8a5ba inode_init_once +EXPORT_SYMBOL vmlinux 0x92f7e3f2 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x92f8dfdc sock_rfree +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930e3a2c iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x9325a110 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9330a03f generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x93380602 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x935afebb inode_dio_wait +EXPORT_SYMBOL vmlinux 0x9364790e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93a6393e __register_binfmt +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b9b01a blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93ff3863 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x93ffb8d9 d_genocide +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94359ee4 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x9465ac45 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x94716aae seq_escape +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c6c1a6 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x94d8fec7 cont_write_begin +EXPORT_SYMBOL vmlinux 0x94dbc4fc inode_init_always +EXPORT_SYMBOL vmlinux 0x94f67718 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x94ff1cd7 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x950e1b83 input_reset_device +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x950f558f devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9517c14b trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x951c70b3 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x951f4535 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9577a94d phy_attach_direct +EXPORT_SYMBOL vmlinux 0x957c8bfc dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x95811f83 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x958bde69 agp_copy_info +EXPORT_SYMBOL vmlinux 0x958ef10f dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x95acb0a2 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x95c09a43 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x95ff54fb param_ops_short +EXPORT_SYMBOL vmlinux 0x963e037e scsi_print_result +EXPORT_SYMBOL vmlinux 0x9646ed10 dquot_initialize +EXPORT_SYMBOL vmlinux 0x9649a451 __frontswap_load +EXPORT_SYMBOL vmlinux 0x9651d01f cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x96670695 proc_symlink +EXPORT_SYMBOL vmlinux 0x96693f63 ns_capable +EXPORT_SYMBOL vmlinux 0x968d050e blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96a7291f __i2c_transfer +EXPORT_SYMBOL vmlinux 0x96b0ecd8 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dc3d19 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x96f879dc jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x96f94197 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x96feca41 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x97209f3e input_set_keycode +EXPORT_SYMBOL vmlinux 0x9723f59a writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x973647e0 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x9741b95f sock_no_accept +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9776bff4 read_cache_page +EXPORT_SYMBOL vmlinux 0x977acde8 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9790700b blk_end_request +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97b345e9 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x97c48743 dm_io +EXPORT_SYMBOL vmlinux 0x97ca89aa inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x97cb6767 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x97fbeeed vfs_readf +EXPORT_SYMBOL vmlinux 0x98071c92 of_device_register +EXPORT_SYMBOL vmlinux 0x980fb808 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x981c0a15 seq_write +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9857e457 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x98671290 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x989ab108 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x98b5a66c scsi_remove_device +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98c85bf5 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x98cb388d fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98df3752 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x98ef3266 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x98fd0917 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x99056eb0 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99431ea0 devm_clk_get +EXPORT_SYMBOL vmlinux 0x99513a96 ps2_end_command +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99580495 scsi_unregister +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9979fe99 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x99814b1c skb_append +EXPORT_SYMBOL vmlinux 0x9982fdd7 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x9989b102 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9999928a nd_device_register +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a0b05d tcp_release_cb +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d4db0f bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x99e0f860 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x99e51605 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a4e0bcd devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x9a53ca83 __napi_schedule +EXPORT_SYMBOL vmlinux 0x9a8a902a nvm_register_target +EXPORT_SYMBOL vmlinux 0x9aa35b25 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x9ab9b84b block_write_full_page +EXPORT_SYMBOL vmlinux 0x9ac8d3b5 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b25074c nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5c0150 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x9b6d7432 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9b7183a7 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x9b7e85a6 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x9b9d965b nf_getsockopt +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba283ed textsearch_unregister +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc91d8b dev_uc_del +EXPORT_SYMBOL vmlinux 0x9bca3a5c do_splice_to +EXPORT_SYMBOL vmlinux 0x9bd343d2 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c02c42f sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x9c135962 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x9c1610fd sock_register +EXPORT_SYMBOL vmlinux 0x9c29fc10 thaw_super +EXPORT_SYMBOL vmlinux 0x9c340e69 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x9c48b4cb vc_resize +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5d4e44 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9c6d68a1 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x9c7a60e3 pci_enable_device +EXPORT_SYMBOL vmlinux 0x9c7b48ca ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x9c7f193d tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x9c8f5e9a mutex_unlock +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc0e885 follow_pfn +EXPORT_SYMBOL vmlinux 0x9cd9890a vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x9ce492d8 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x9cf87858 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x9d09c9be vm_mmap +EXPORT_SYMBOL vmlinux 0x9d0c989d netdev_state_change +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d26dac7 unlock_buffer +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3b2597 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x9d41c4fa insert_inode_locked +EXPORT_SYMBOL vmlinux 0x9d4f4e97 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x9d604441 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d6c2412 blk_register_region +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7b9796 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d875b56 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x9d8a216e mach_corenet_generic +EXPORT_SYMBOL vmlinux 0x9d8d81dc loop_register_transfer +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9de4ad1e iterate_dir +EXPORT_SYMBOL vmlinux 0x9df3b467 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x9df8dda3 acl_by_type +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e27e28a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e455b10 dev_addr_init +EXPORT_SYMBOL vmlinux 0x9e480db5 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6e22c2 uart_resume_port +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7a8092 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x9e828b57 tty_set_operations +EXPORT_SYMBOL vmlinux 0x9e99a969 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eb442b6 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ece662f setattr_copy +EXPORT_SYMBOL vmlinux 0x9ecf8f4f jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x9eedfaaa generic_readlink +EXPORT_SYMBOL vmlinux 0x9ef64ea2 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x9efb97af udp6_csum_init +EXPORT_SYMBOL vmlinux 0x9f084440 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4a4b38 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x9f5c9383 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f80010c dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x9f808eb9 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x9f82a6e5 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa7a477 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x9fd12bda __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x9fd389de of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x9fdd0217 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x9fddd2a5 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00bba8d __inet_hash +EXPORT_SYMBOL vmlinux 0xa01b5f46 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xa020a459 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa021f019 vme_bus_type +EXPORT_SYMBOL vmlinux 0xa03ecaf7 write_one_page +EXPORT_SYMBOL vmlinux 0xa03ff69c mmc_can_erase +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa0464ffd vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xa0469a40 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa0666f1b skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa07f15f4 input_allocate_device +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08e7707 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xa097b708 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0d02afb elevator_change +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e8c524 phy_init_eee +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ec1afa alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa1036d7a tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f45a5 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xa1181034 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa15141b8 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xa15b6f21 proc_set_user +EXPORT_SYMBOL vmlinux 0xa197854c skb_insert +EXPORT_SYMBOL vmlinux 0xa199dea8 seq_printf +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b8c329 vga_tryget +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1cc9703 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1ec29a8 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2500121 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xa2501037 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xa259caad ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xa263ed13 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xa26cd610 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28c44ff mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xa2906ec5 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2cf3e14 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xa2e222d8 skb_clone +EXPORT_SYMBOL vmlinux 0xa2ea20bc tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xa2ecd6d6 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xa2ed0395 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xa2f39a29 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa2fffef9 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xa3033178 do_truncate +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3065c0d input_set_abs_params +EXPORT_SYMBOL vmlinux 0xa30f99b4 param_get_ullong +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3779774 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3bf6765 padata_do_serial +EXPORT_SYMBOL vmlinux 0xa3ca604f mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xa3e651ff swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3efcdcf thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xa425897d devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xa43ccd3b dcb_getapp +EXPORT_SYMBOL vmlinux 0xa44d0ea0 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4568fbb inode_change_ok +EXPORT_SYMBOL vmlinux 0xa45e7bc5 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa493a12d of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xa49eae6d sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b7cc69 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e362fe tty_name +EXPORT_SYMBOL vmlinux 0xa4e99c22 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xa5132df9 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xa51e82c4 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa5775c68 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa58024a4 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa583cfbc key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa58b0672 may_umount +EXPORT_SYMBOL vmlinux 0xa59671e4 of_translate_address +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b23585 poll_initwait +EXPORT_SYMBOL vmlinux 0xa5e9847b make_bad_inode +EXPORT_SYMBOL vmlinux 0xa60cfb00 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xa62593db simple_setattr +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa65945e6 vme_bus_num +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa663102c tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xa66e5f79 key_unlink +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa683f856 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xa6855499 inet_offloads +EXPORT_SYMBOL vmlinux 0xa6931390 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xa69d0c79 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xa6df8ee5 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xa6e1e08b agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xa6e6c3d4 set_wb_congested +EXPORT_SYMBOL vmlinux 0xa6f0eb29 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xa6fa8268 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7044da5 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa70a4e17 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xa70b7c98 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7310d1e kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7659ae7 down_write_trylock +EXPORT_SYMBOL vmlinux 0xa7663bf0 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xa76d6e96 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xa789bab6 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7ad941d netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa7b853f5 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xa7c0a61f release_sock +EXPORT_SYMBOL vmlinux 0xa7e2fcf6 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xa7f31e0e pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xa801d7fe dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xa81a44cd dcache_dir_close +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa832f97c neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa852328c __register_chrdev +EXPORT_SYMBOL vmlinux 0xa8559dfe tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa865e092 dquot_destroy +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8920a38 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xa898c443 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xa89eb010 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xa8c9fbc3 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xa8d1ec08 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90e0ddc scsi_device_put +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa94a8f7f iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9b09d30 generic_getxattr +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9ce51a9 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xa9f0bbc9 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0xa9f44403 passthru_features_check +EXPORT_SYMBOL vmlinux 0xaa0e90da find_lock_entry +EXPORT_SYMBOL vmlinux 0xaa0f34d1 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xaa17dafc jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa5fea11 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaad032eb param_get_invbool +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaaf3a711 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab1855b3 param_set_int +EXPORT_SYMBOL vmlinux 0xab228e31 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0xab268096 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xab29ccd7 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xab3f043b jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xab54c798 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xab56f7df pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xab62cef4 import_iovec +EXPORT_SYMBOL vmlinux 0xab656785 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab79c43a mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xab7b5fc3 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xab876050 sock_release +EXPORT_SYMBOL vmlinux 0xaba1b257 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xabaa27d9 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xabc40858 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd08f7d set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xabe26f25 filp_open +EXPORT_SYMBOL vmlinux 0xabeaab31 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xabf6af56 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xabf987f5 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xabff4d2b nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xac06010a sk_receive_skb +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac144e67 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xac157159 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1bb802 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac33b2c2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xac3b49f2 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xac3ed05b netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xac5bf3e0 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xac70b0fa vm_stat +EXPORT_SYMBOL vmlinux 0xac8566bd kobject_set_name +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0c15f6 da903x_query_status +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1cf3fe devm_free_irq +EXPORT_SYMBOL vmlinux 0xad2af0c8 gen_pool_free +EXPORT_SYMBOL vmlinux 0xad2cede4 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xad45d290 kernel_bind +EXPORT_SYMBOL vmlinux 0xad4cb034 sys_copyarea +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xadc98ba9 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xadd1dcd4 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xadd9d845 commit_creds +EXPORT_SYMBOL vmlinux 0xadf12454 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae03d205 dev_trans_start +EXPORT_SYMBOL vmlinux 0xae2ac720 request_key +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae41d45b jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xae5129d7 get_task_io_context +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae599c56 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xae876f72 init_special_inode +EXPORT_SYMBOL vmlinux 0xae898828 generic_removexattr +EXPORT_SYMBOL vmlinux 0xae89a9b1 get_acl +EXPORT_SYMBOL vmlinux 0xae9b16a0 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xaecf7b54 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xaed544de phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xaee6fdf6 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xaeefa961 sock_no_bind +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf08e304 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xaf1e9a71 igrab +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4e1523 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xaf5792c8 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6e819e inet_ioctl +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafb0fd09 gen_pool_create +EXPORT_SYMBOL vmlinux 0xafb9bb58 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xafc2ed99 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xafe6bb92 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xafef0047 __kfree_skb +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb0439560 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xb055ad08 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb060acd5 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xb06b1add blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a42df4 skb_put +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0c81a60 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0efba85 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xb0f0acc7 param_set_bint +EXPORT_SYMBOL vmlinux 0xb0f75b2f generic_listxattr +EXPORT_SYMBOL vmlinux 0xb1012cbc __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb117d21f block_write_end +EXPORT_SYMBOL vmlinux 0xb1209aeb inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12ddecf mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xb13b27b2 proc_create_data +EXPORT_SYMBOL vmlinux 0xb158aa59 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb15a82fe __find_get_block +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15f0432 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb166c57c ppp_register_channel +EXPORT_SYMBOL vmlinux 0xb17f7c26 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xb18e21ba file_ns_capable +EXPORT_SYMBOL vmlinux 0xb190c74f agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xb1948156 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb1aaf88c generic_show_options +EXPORT_SYMBOL vmlinux 0xb1badb16 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xb1bffa05 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cba3d2 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb202abd6 iget_locked +EXPORT_SYMBOL vmlinux 0xb209b3bb sk_capable +EXPORT_SYMBOL vmlinux 0xb21250ef mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xb214405c serio_close +EXPORT_SYMBOL vmlinux 0xb21f402f kill_anon_super +EXPORT_SYMBOL vmlinux 0xb22edf1a nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb232a15e inet_stream_ops +EXPORT_SYMBOL vmlinux 0xb26196db param_set_bool +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26b8dea xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xb2737c25 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xb281f8d9 nf_log_register +EXPORT_SYMBOL vmlinux 0xb295e399 security_mmap_file +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c38e73 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xb2d73854 save_mount_options +EXPORT_SYMBOL vmlinux 0xb2e79c06 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb307e5ce tcp_splice_read +EXPORT_SYMBOL vmlinux 0xb3174add mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xb32a01b7 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb33a73fd get_thermal_instance +EXPORT_SYMBOL vmlinux 0xb355d4b9 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xb37f4cc0 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xb383cc60 phy_stop +EXPORT_SYMBOL vmlinux 0xb386d187 nf_log_unset +EXPORT_SYMBOL vmlinux 0xb38c6b57 posix_lock_file +EXPORT_SYMBOL vmlinux 0xb39ca8f2 end_page_writeback +EXPORT_SYMBOL vmlinux 0xb3a1e0de ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb3a72f93 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xb3bf2c87 bio_copy_data +EXPORT_SYMBOL vmlinux 0xb3ce040a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3ebdcfa param_ops_int +EXPORT_SYMBOL vmlinux 0xb3ee7dc4 simple_rmdir +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4111b96 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xb4224b43 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42dba5a scsi_register +EXPORT_SYMBOL vmlinux 0xb4428d84 generic_perform_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb4a152ed lwtunnel_input +EXPORT_SYMBOL vmlinux 0xb4a6ee57 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xb4b64275 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xb4c6c239 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xb4c9a6f0 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0xb4e6ab06 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xb4ecc885 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xb4f2685e default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb4fca758 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb503b7f9 md_write_end +EXPORT_SYMBOL vmlinux 0xb5058b3f skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xb5122815 dqget +EXPORT_SYMBOL vmlinux 0xb53ff1ea kfree_put_link +EXPORT_SYMBOL vmlinux 0xb552af3f dquot_transfer +EXPORT_SYMBOL vmlinux 0xb55923a6 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xb56b8775 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xb57185b6 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a13092 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b158cf i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xb5e2f669 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xb5f210b9 release_pages +EXPORT_SYMBOL vmlinux 0xb5f2ba8d kill_pid +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64212fa tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xb6456f83 vfs_writev +EXPORT_SYMBOL vmlinux 0xb657e9eb km_is_alive +EXPORT_SYMBOL vmlinux 0xb664c0db iget5_locked +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68da275 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69733bb dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c09fc9 netdev_err +EXPORT_SYMBOL vmlinux 0xb6cfd5ce tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xb6e65db1 sk_common_release +EXPORT_SYMBOL vmlinux 0xb70a0b77 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb70ee639 fs_bio_set +EXPORT_SYMBOL vmlinux 0xb721b578 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xb7222375 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb73d283a __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xb7452ba4 touch_atime +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7bd77d4 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xb8112e83 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xb8162a51 d_walk +EXPORT_SYMBOL vmlinux 0xb823eab8 update_devfreq +EXPORT_SYMBOL vmlinux 0xb8269c8e gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xb84b766a generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xb84e7d00 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xb8617297 inet6_protos +EXPORT_SYMBOL vmlinux 0xb862239c do_splice_direct +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb891c428 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xb898913c padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xb899b59f sk_stop_timer +EXPORT_SYMBOL vmlinux 0xb89a4038 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb8b38e9e ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xb8bbc674 tty_port_init +EXPORT_SYMBOL vmlinux 0xb8d67e05 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xb8ec306a make_kgid +EXPORT_SYMBOL vmlinux 0xb92c667c from_kuid_munged +EXPORT_SYMBOL vmlinux 0xb92e603c input_free_device +EXPORT_SYMBOL vmlinux 0xb92fedf4 skb_make_writable +EXPORT_SYMBOL vmlinux 0xb9498722 registered_fb +EXPORT_SYMBOL vmlinux 0xb9517e2b xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb953ed89 inet_del_offload +EXPORT_SYMBOL vmlinux 0xb9a36dd0 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xb9ab179f pci_find_bus +EXPORT_SYMBOL vmlinux 0xb9ad0385 pci_dev_get +EXPORT_SYMBOL vmlinux 0xb9ae2ac0 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xb9cd1c98 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9e9cd83 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xba195b4d pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xba293448 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba59b152 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xba60a0f4 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xba769a84 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xba856b7b arp_create +EXPORT_SYMBOL vmlinux 0xba8b4573 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xbac40580 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xbad5ebe4 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb06d6aa blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xbb0815fc blk_start_request +EXPORT_SYMBOL vmlinux 0xbb09a838 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xbb0fb121 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xbb196f44 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xbb1cfd5e simple_unlink +EXPORT_SYMBOL vmlinux 0xbb293a99 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbb305273 sync_blockdev +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb45b5f9 unregister_key_type +EXPORT_SYMBOL vmlinux 0xbb4a3900 kdb_current_task +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb682924 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xbb801004 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb624b5 set_bh_page +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbb90bef dquot_resume +EXPORT_SYMBOL vmlinux 0xbbbf0227 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xbbc0db3e tty_hangup +EXPORT_SYMBOL vmlinux 0xbc007e95 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xbc210820 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc4b714e tcf_hash_create +EXPORT_SYMBOL vmlinux 0xbc4d5128 md_integrity_register +EXPORT_SYMBOL vmlinux 0xbc54dbb4 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xbc651844 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xbc6676f4 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xbc769cd1 eth_type_trans +EXPORT_SYMBOL vmlinux 0xbc9b5e69 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xbc9bddb6 mutex_lock +EXPORT_SYMBOL vmlinux 0xbc9e176f __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xbcb06182 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd356d1 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xbceddcad kobject_init +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd1b9c72 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd5937e4 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdb478aa jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xbdc45020 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xbdc505ed find_vma +EXPORT_SYMBOL vmlinux 0xbdc73236 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xbdd494f9 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xbdd7a7df blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xbde2d2a8 dst_discard_out +EXPORT_SYMBOL vmlinux 0xbde45337 mntput +EXPORT_SYMBOL vmlinux 0xbdf00c71 file_remove_privs +EXPORT_SYMBOL vmlinux 0xbdfbe76f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xbdff8b85 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2c1184 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xbe3e49db eth_header_parse +EXPORT_SYMBOL vmlinux 0xbe8807ed mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xbe903f2c textsearch_destroy +EXPORT_SYMBOL vmlinux 0xbea7b59f pci_save_state +EXPORT_SYMBOL vmlinux 0xbed09d85 proto_register +EXPORT_SYMBOL vmlinux 0xbedae543 kern_unmount +EXPORT_SYMBOL vmlinux 0xbef0676d tty_port_close_start +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf079f5c vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf1ecb0d dma_common_mmap +EXPORT_SYMBOL vmlinux 0xbf25e3f4 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xbf2701b0 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xbf29be40 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf849bc6 ping_prot +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf8bc181 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf973dfc of_get_mac_address +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb4028a of_get_next_child +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc000dd06 proc_set_size +EXPORT_SYMBOL vmlinux 0xc004a285 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xc0108ef6 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc01a3b7f inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xc024d46d vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xc034ca77 kthread_bind +EXPORT_SYMBOL vmlinux 0xc0651862 i2c_release_client +EXPORT_SYMBOL vmlinux 0xc072ed96 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08dcdc7 tty_mutex +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0c2472f jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xc0c37234 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xc0e61f0a clkdev_alloc +EXPORT_SYMBOL vmlinux 0xc0ead36d block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc0fa469c page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc104c3e7 ilookup5 +EXPORT_SYMBOL vmlinux 0xc10f39bf generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xc1304b1e bitmap_unplug +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc14d117b poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1628e59 dquot_get_state +EXPORT_SYMBOL vmlinux 0xc181e7e7 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc18ce694 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc1a6e422 __scm_send +EXPORT_SYMBOL vmlinux 0xc1c55e42 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xc1d623e2 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1df3fdb dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ea3fd5 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xc2046c53 bdget +EXPORT_SYMBOL vmlinux 0xc205f18e cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc20d808e compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xc21106c8 bdev_read_only +EXPORT_SYMBOL vmlinux 0xc232df0b sk_stream_error +EXPORT_SYMBOL vmlinux 0xc23c7723 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc26ecf5c blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xc2754b27 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xc27aaa47 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc296e887 generic_writepages +EXPORT_SYMBOL vmlinux 0xc297fc0a generic_file_llseek +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc29df865 tc_classify +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2b3e5a3 cdev_alloc +EXPORT_SYMBOL vmlinux 0xc2d5ffe8 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ee3bf4 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xc2f50aa0 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xc2f6ddf6 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc32d2b1e km_new_mapping +EXPORT_SYMBOL vmlinux 0xc342d2b9 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xc35a95d5 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xc3a78bf2 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d19756 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc3e0e3c9 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xc3f1501a netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xc4333b97 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xc433db0f gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xc44a65c6 security_path_chmod +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc479981c dentry_path_raw +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49bab4c block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc4a5ad73 _dev_info +EXPORT_SYMBOL vmlinux 0xc4b81890 __mdiobus_register +EXPORT_SYMBOL vmlinux 0xc4cc4376 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xc4d6444e mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc4e3c3ee netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xc4e60039 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xc4ea12fe scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xc4ff60e9 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xc5276a73 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc52c9699 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55e2881 path_noexec +EXPORT_SYMBOL vmlinux 0xc58446f2 param_set_byte +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a2f6e9 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc5b9ddde tcf_action_exec +EXPORT_SYMBOL vmlinux 0xc5bba904 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xc5bd83f3 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xc5cb1f82 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xc5d89f40 __neigh_create +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ddd322 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc608242c lwtunnel_output +EXPORT_SYMBOL vmlinux 0xc61417c2 block_commit_write +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63c6de3 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xc65917e5 fget_raw +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc673a14f con_copy_unimap +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6854814 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xc6c03efa kmem_cache_create +EXPORT_SYMBOL vmlinux 0xc6ca842d dev_uc_add +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d8b325 override_creds +EXPORT_SYMBOL vmlinux 0xc6f17acd __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xc6ffd019 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xc71a43d7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xc71b0e2e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc73896eb udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xc743ac45 pci_match_id +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7853db0 send_sig_info +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc794fcd0 address_space_init_once +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79bf78a devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7aa07fb vga_client_register +EXPORT_SYMBOL vmlinux 0xc7daaffb pci_pme_active +EXPORT_SYMBOL vmlinux 0xc7e7e440 skb_pull +EXPORT_SYMBOL vmlinux 0xc7fa7cd3 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xc82482c6 get_cached_acl +EXPORT_SYMBOL vmlinux 0xc82acb7b dev_load +EXPORT_SYMBOL vmlinux 0xc831c6a6 kobject_get +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83e043b rt6_lookup +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc8464b37 ihold +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84ebf2b try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc8507ed6 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xc853bf6b blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xc85425dc lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c98c9c twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xc8c9a1bb pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc8dc4ed6 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xc8ddbee1 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc921a37f mdiobus_write +EXPORT_SYMBOL vmlinux 0xc9355d7d tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xc93a5c1a bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xc93ae526 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc954010d end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc976e0af pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc98168ec vfs_setpos +EXPORT_SYMBOL vmlinux 0xc98efee8 dcache_readdir +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9abd61b jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xc9d3b843 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xc9d4748d vme_irq_request +EXPORT_SYMBOL vmlinux 0xc9d538c4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc9f5afea phy_disconnect +EXPORT_SYMBOL vmlinux 0xca028ead vme_slot_num +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca0fa4e4 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xca21ae94 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xca25eb4a vfs_rename +EXPORT_SYMBOL vmlinux 0xca281f46 kill_litter_super +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca2d2751 tcf_register_action +EXPORT_SYMBOL vmlinux 0xca3087ba pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca41b037 giveup_altivec +EXPORT_SYMBOL vmlinux 0xca42506b dump_skip +EXPORT_SYMBOL vmlinux 0xca4a992e dma_async_device_register +EXPORT_SYMBOL vmlinux 0xca4b5b3b param_set_ullong +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca813918 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca87c437 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa2563f __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xcab427df kernel_write +EXPORT_SYMBOL vmlinux 0xcac5498c agp_free_memory +EXPORT_SYMBOL vmlinux 0xcac8736f __frontswap_test +EXPORT_SYMBOL vmlinux 0xcacc1fc8 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf71158 simple_statfs +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb03c08c elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xcb115fe0 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xcb58bb4a __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xcb63ed17 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xcb6c9af0 mem_map +EXPORT_SYMBOL vmlinux 0xcb7ce9cf sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc330df9 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xcc351951 bio_advance +EXPORT_SYMBOL vmlinux 0xcc37a823 dentry_unhash +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc53deb6 icmp_send +EXPORT_SYMBOL vmlinux 0xcc698c01 set_anon_super +EXPORT_SYMBOL vmlinux 0xcc7396cf bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xcc86a488 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd514f3 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xccd6bc30 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xccf27525 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0b463a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xcd1bb093 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd289b5c security_path_rmdir +EXPORT_SYMBOL vmlinux 0xcd3ea0c9 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xcd548dc5 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd62ba0f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xcd6d0289 netdev_features_change +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcdb29a02 down_read +EXPORT_SYMBOL vmlinux 0xcdb3e8fc pci_remove_bus +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc634d9 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xcdd9549d vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xcde59170 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xcdebb261 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xcdf3c26c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xcdf49c59 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xce0a8b5e dev_disable_lro +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce56d840 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xce57d506 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce7ae006 sk_alloc +EXPORT_SYMBOL vmlinux 0xce89f227 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xce994a0c dst_alloc +EXPORT_SYMBOL vmlinux 0xcea894c2 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb5e506 write_inode_now +EXPORT_SYMBOL vmlinux 0xceb6ad03 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0xcec31353 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xced76fc4 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcee766c1 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf14a4a3 rtnl_notify +EXPORT_SYMBOL vmlinux 0xcf1dc845 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xcf281a7b mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xcf2eff5b param_get_string +EXPORT_SYMBOL vmlinux 0xcf4c142c sk_wait_data +EXPORT_SYMBOL vmlinux 0xcf4f9e20 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xcf514924 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xcf67c164 __frontswap_store +EXPORT_SYMBOL vmlinux 0xcf7a72b6 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xcfa73394 __skb_checksum +EXPORT_SYMBOL vmlinux 0xcfb23698 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xcfb96cf8 misc_register +EXPORT_SYMBOL vmlinux 0xcfc3cec8 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xcfc8b919 block_write_begin +EXPORT_SYMBOL vmlinux 0xcfe059ac pci_dev_put +EXPORT_SYMBOL vmlinux 0xcff44276 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xcff67832 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xcff6b435 mount_pseudo +EXPORT_SYMBOL vmlinux 0xcff81a90 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xd014e23c inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xd01a916d scsi_execute +EXPORT_SYMBOL vmlinux 0xd01d63c2 backlight_force_update +EXPORT_SYMBOL vmlinux 0xd04ce4db truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xd05bcf6c contig_page_data +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08f2486 devm_release_resource +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a19231 inet_sendpage +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bf4fcb of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xd0c1334a __inode_permission +EXPORT_SYMBOL vmlinux 0xd0e588aa vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd120b5a0 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xd135a1af gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xd15cecf4 __mutex_init +EXPORT_SYMBOL vmlinux 0xd17a3eb5 put_tty_driver +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1922676 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xd19b3740 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xd19fd2e4 vga_put +EXPORT_SYMBOL vmlinux 0xd1ac742f blk_get_request +EXPORT_SYMBOL vmlinux 0xd1bbf531 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xd1bc523a ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e71d6d md_register_thread +EXPORT_SYMBOL vmlinux 0xd227cf6a neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xd2336dbe dump_emit +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd255a6c4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xd255aadb sock_alloc_file +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b1ebd4 param_get_short +EXPORT_SYMBOL vmlinux 0xd2d65f4e remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd304e7ed vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xd310bb78 dev_mc_add +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd325243b __getblk_slow +EXPORT_SYMBOL vmlinux 0xd3377a8a inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xd34a2738 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xd36bdf33 cdev_del +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3885b4a compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xd38b967e default_llseek +EXPORT_SYMBOL vmlinux 0xd3baf500 security_path_mknod +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3dd4873 filp_close +EXPORT_SYMBOL vmlinux 0xd3f00437 bio_map_kern +EXPORT_SYMBOL vmlinux 0xd41112fc scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xd4123378 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd41365cc get_super_thawed +EXPORT_SYMBOL vmlinux 0xd42c82a4 input_register_handler +EXPORT_SYMBOL vmlinux 0xd4395f02 locks_init_lock +EXPORT_SYMBOL vmlinux 0xd43e5227 skb_pad +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd4988436 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xd4a27e52 dev_printk +EXPORT_SYMBOL vmlinux 0xd4aa9c0d simple_fill_super +EXPORT_SYMBOL vmlinux 0xd4b0e0f7 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xd4bb886e __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xd4d937b9 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xd4e13905 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xd5044704 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xd50c8552 freeze_super +EXPORT_SYMBOL vmlinux 0xd51d6cdd vfs_iter_read +EXPORT_SYMBOL vmlinux 0xd526d81e ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xd535144e ata_port_printk +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5582442 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd55827d9 kfree_skb +EXPORT_SYMBOL vmlinux 0xd57af367 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xd58722e0 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xd58b0a93 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xd58bbf86 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xd58f3402 __dst_free +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5ba119a dquot_quota_off +EXPORT_SYMBOL vmlinux 0xd5c710a8 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xd5eb5d7f tty_register_device +EXPORT_SYMBOL vmlinux 0xd5fc947b ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xd610bec4 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63a44ef lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6491e64 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xd64a1432 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xd64bdff4 alloc_disk +EXPORT_SYMBOL vmlinux 0xd64eec14 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6b77828 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xd6cdb9ed tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xd6d4794a capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e06e3e filemap_fault +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd72837fe d_obtain_alias +EXPORT_SYMBOL vmlinux 0xd74e1d35 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xd754b90b phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xd7572459 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd76949cd xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xd76c6551 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd77472a2 unlock_page +EXPORT_SYMBOL vmlinux 0xd7865966 __check_sticky +EXPORT_SYMBOL vmlinux 0xd79c590b iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f9c399 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xd818c89b napi_gro_receive +EXPORT_SYMBOL vmlinux 0xd828523c make_kuid +EXPORT_SYMBOL vmlinux 0xd828ed57 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xd82f65fb unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd853988f seq_read +EXPORT_SYMBOL vmlinux 0xd859068b netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xd87817ab tty_unthrottle +EXPORT_SYMBOL vmlinux 0xd87968e0 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xd8846b6c put_io_context +EXPORT_SYMBOL vmlinux 0xd892826c inode_set_flags +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a2e6d1 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8d758ca pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e3c99f dma_set_mask +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8fb4dd2 wireless_send_event +EXPORT_SYMBOL vmlinux 0xd90797fb nf_reinject +EXPORT_SYMBOL vmlinux 0xd928c18d ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xd9480150 input_get_keycode +EXPORT_SYMBOL vmlinux 0xd94a65ba d_rehash +EXPORT_SYMBOL vmlinux 0xd94c984d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xd94cb475 netif_rx +EXPORT_SYMBOL vmlinux 0xd9695b5c phy_init_hw +EXPORT_SYMBOL vmlinux 0xd97c645d __destroy_inode +EXPORT_SYMBOL vmlinux 0xd97e6ecb ps2_init +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a8b57c of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda1c0f71 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xda2e1f49 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xda345bb1 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda488633 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xda5d340f inet6_add_offload +EXPORT_SYMBOL vmlinux 0xda6836ff fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda998085 request_key_async +EXPORT_SYMBOL vmlinux 0xdaaa2cdc tty_kref_put +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabf43f6 __vfs_write +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdae7089c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xdae981a4 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb0537e0 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdb334079 pcim_iomap +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb433b70 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xdb4b5652 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xdb6624dc audit_log_start +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6e26cc nobh_write_end +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8c0906 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xdb92c471 phy_detach +EXPORT_SYMBOL vmlinux 0xdb977314 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xdbaa910e __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xdbaaa584 sk_filter +EXPORT_SYMBOL vmlinux 0xdbadcb80 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc214961 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc65ba86 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xdc67a620 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xdc6acc1c iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xdc7c9fd8 __lock_buffer +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9597d3 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xdcacddce elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcc30caa nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xdce26794 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xdcf6653c sync_filesystem +EXPORT_SYMBOL vmlinux 0xdcfc5de7 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xdd3172e6 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xdd359578 pci_select_bars +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd7ca778 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd93084f __block_write_begin +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9e31c3 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xddb2cdea nd_iostat_end +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddcea3a6 dev_addr_del +EXPORT_SYMBOL vmlinux 0xddd53641 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xdde2bbbf compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xdde5748d skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xddeda6f5 mount_bdev +EXPORT_SYMBOL vmlinux 0xddefee74 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xddf432e7 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xde171372 sock_no_listen +EXPORT_SYMBOL vmlinux 0xde2d02cc bio_add_page +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde529c00 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6a2a74 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xde7651fd qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xde78ffc6 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xde7e3416 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xde84ccb1 scsi_host_get +EXPORT_SYMBOL vmlinux 0xde8708f7 __sock_create +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde96bd2c powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdec6317e ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xdecb6b03 mapping_tagged +EXPORT_SYMBOL vmlinux 0xdef2746a backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xdf14947c dev_driver_string +EXPORT_SYMBOL vmlinux 0xdf1db32e secpath_dup +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2ceeae generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xdf347d07 tcp_connect +EXPORT_SYMBOL vmlinux 0xdf41170c of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xdf481d0d pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xdf494d1e pci_assign_resource +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf590cbb tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xdf5c1ff1 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6d4053 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb8ea27 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xdfc33abb i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xdfe6fd94 sk_dst_check +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe0273bf8 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xe031ba72 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xe040abf2 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05bbd33 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07dae34 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0e4f896 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xe0f7caf9 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xe106a65e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe13ade90 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xe1414119 kernel_listen +EXPORT_SYMBOL vmlinux 0xe1445e31 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1aa8494 elv_add_request +EXPORT_SYMBOL vmlinux 0xe1afe1bd mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe1b0f93f blk_make_request +EXPORT_SYMBOL vmlinux 0xe1c0c4b5 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xe1dc440e pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xe1dca0f2 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xe1e4af74 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xe1eaaf61 __sb_end_write +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe21ed19f from_kgid +EXPORT_SYMBOL vmlinux 0xe2203695 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2291da5 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe230aab6 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe243dba2 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe2461de5 simple_lookup +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25d9e7f of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xe27a81ff pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe28e8c59 param_get_byte +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2ac7dca xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2bfaccf blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe2bfe37a of_dev_get +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f27a5f agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe30195bb keyring_search +EXPORT_SYMBOL vmlinux 0xe31225c6 pci_request_regions +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe31c401a replace_mount_options +EXPORT_SYMBOL vmlinux 0xe33c7cfe __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xe343be44 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xe353d871 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xe36196fa of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe3728a73 dquot_operations +EXPORT_SYMBOL vmlinux 0xe37cdc51 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b5ba81 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3cf52e0 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e78bb6 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xe401a0a0 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xe44d8cb4 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xe4618460 register_filesystem +EXPORT_SYMBOL vmlinux 0xe47c6401 vmap +EXPORT_SYMBOL vmlinux 0xe4814483 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48f7e3c devm_memremap +EXPORT_SYMBOL vmlinux 0xe490bd22 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xe49a22d0 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xe4c72c9b __serio_register_driver +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4fad0d8 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5149a9b __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe533c70a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe579c938 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xe5861250 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58bca44 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xe5b9e6d2 seq_lseek +EXPORT_SYMBOL vmlinux 0xe5c22a13 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ffe4cc pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xe6030830 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xe60e092c md_update_sb +EXPORT_SYMBOL vmlinux 0xe60eeb0f elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xe625d55e key_validate +EXPORT_SYMBOL vmlinux 0xe6261e51 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe63cd3c6 d_drop +EXPORT_SYMBOL vmlinux 0xe641dff4 lock_rename +EXPORT_SYMBOL vmlinux 0xe64ba4ab mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe6610f51 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9ba5 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe69d35e2 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xe6b12509 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xe6bab9f0 pci_find_capability +EXPORT_SYMBOL vmlinux 0xe6d8394b dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xe6df508d security_path_mkdir +EXPORT_SYMBOL vmlinux 0xe6f9b9ae get_empty_filp +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe715dfe9 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe716ea4e dst_destroy +EXPORT_SYMBOL vmlinux 0xe7251e3c init_buffer +EXPORT_SYMBOL vmlinux 0xe735702a dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xe75146f1 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xe7772040 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe799361d udp_proc_register +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7bb0690 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82ef9db udp_poll +EXPORT_SYMBOL vmlinux 0xe85bee4a dst_init +EXPORT_SYMBOL vmlinux 0xe8754a25 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xe87822be neigh_lookup +EXPORT_SYMBOL vmlinux 0xe879c14d invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8ab9501 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8c4ca60 netdev_emerg +EXPORT_SYMBOL vmlinux 0xe8ce8f88 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe8f057d7 ata_link_printk +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe921fa38 kernel_connect +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe944dbef vfs_unlink +EXPORT_SYMBOL vmlinux 0xe94bd9c3 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xe9516d47 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe963794f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xe9874af7 skb_copy +EXPORT_SYMBOL vmlinux 0xe9905841 giveup_fpu +EXPORT_SYMBOL vmlinux 0xe99cff41 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xe9a418f6 __alloc_skb +EXPORT_SYMBOL vmlinux 0xe9aa8db2 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0xe9bd6098 __put_cred +EXPORT_SYMBOL vmlinux 0xe9cc8e80 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xe9dea3b1 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xe9e3561b iterate_fd +EXPORT_SYMBOL vmlinux 0xe9f4173d dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10793d inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xea26b758 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xea43af14 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xea64c215 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xea722178 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeab2bff1 elevator_exit +EXPORT_SYMBOL vmlinux 0xead5a6f7 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xeae1eaa7 dev_notice +EXPORT_SYMBOL vmlinux 0xeaf26571 kern_path_create +EXPORT_SYMBOL vmlinux 0xeaf4d140 inet_accept +EXPORT_SYMBOL vmlinux 0xeb016e0b crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xeb02f3a8 agp_enable +EXPORT_SYMBOL vmlinux 0xeb1e8f7c phy_find_first +EXPORT_SYMBOL vmlinux 0xeb2683e7 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xeb3111a9 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb49e896 key_alloc +EXPORT_SYMBOL vmlinux 0xeb4ea289 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xeb712a64 neigh_xmit +EXPORT_SYMBOL vmlinux 0xeb79a5c8 loop_backing_file +EXPORT_SYMBOL vmlinux 0xebb71d78 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xebd21d89 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xebd5a8d0 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xebe17d13 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xebe2c6bf ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xebe2ed2d neigh_destroy +EXPORT_SYMBOL vmlinux 0xebecba0d md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xebf194a8 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xebf47a90 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xec01210f tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xec15bb38 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xec1853d0 md_write_start +EXPORT_SYMBOL vmlinux 0xec47b9cb downgrade_write +EXPORT_SYMBOL vmlinux 0xec4a923c dquot_disable +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4f30b2 register_framebuffer +EXPORT_SYMBOL vmlinux 0xec63a900 netdev_alert +EXPORT_SYMBOL vmlinux 0xec64ddea sock_wfree +EXPORT_SYMBOL vmlinux 0xec7194f5 input_inject_event +EXPORT_SYMBOL vmlinux 0xec7fb307 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xec88806e sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xec97167b agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xecba35b5 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc45150 mmc_put_card +EXPORT_SYMBOL vmlinux 0xecd30118 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xecdb9fd0 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf6578c iput +EXPORT_SYMBOL vmlinux 0xecf9ef0f pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xed0a9bf4 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xed2f7f44 I_BDEV +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed700b04 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xed966e96 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb08a68 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xedb7d2b4 md_reload_sb +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc78078 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xedc9e33a __genl_register_family +EXPORT_SYMBOL vmlinux 0xede455e3 simple_empty +EXPORT_SYMBOL vmlinux 0xedf086bb udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xedf3dbbb pci_read_vpd +EXPORT_SYMBOL vmlinux 0xee037a0b generic_setxattr +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee342841 datagram_poll +EXPORT_SYMBOL vmlinux 0xee372a24 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xee507c8b pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xee54f479 tty_port_put +EXPORT_SYMBOL vmlinux 0xee6369d2 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xee704226 key_revoke +EXPORT_SYMBOL vmlinux 0xee816f0d agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xee8bd91b sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeec2cdb6 km_query +EXPORT_SYMBOL vmlinux 0xeedb25fb of_device_is_available +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef0c0a73 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xef157cb8 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xef2bc8b6 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xef31be16 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xef3e40e1 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xef4a4509 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xef647fd4 start_tty +EXPORT_SYMBOL vmlinux 0xef81cbcd of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xef910455 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xefa814d5 simple_follow_link +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefdedbe0 tty_register_driver +EXPORT_SYMBOL vmlinux 0xefee2c03 sock_edemux +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0207eff nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xf02f0355 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xf04e9ede __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf06e4378 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xf071cf9e generic_fillattr +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08d09e8 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xf0925b57 tty_free_termios +EXPORT_SYMBOL vmlinux 0xf094f863 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0c026f4 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf0dac275 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10148fd sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf11cdf15 param_get_ulong +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14fa00c pid_task +EXPORT_SYMBOL vmlinux 0xf1720fa8 try_to_release_page +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1983f60 vfs_mknod +EXPORT_SYMBOL vmlinux 0xf1a22a31 inet6_offloads +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf27b2b56 skb_split +EXPORT_SYMBOL vmlinux 0xf27cf7ff i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xf287684a simple_rename +EXPORT_SYMBOL vmlinux 0xf2913507 seq_file_path +EXPORT_SYMBOL vmlinux 0xf291b666 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xf295847d mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2de7263 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xf2dfb383 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xf3047360 mount_single +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31e2537 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf350f542 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35574ce agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3b12476 bio_reset +EXPORT_SYMBOL vmlinux 0xf3c3a725 inet_getname +EXPORT_SYMBOL vmlinux 0xf3e1e790 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf417cf18 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xf43aafe6 cdrom_release +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44715dd __sb_start_write +EXPORT_SYMBOL vmlinux 0xf44ffab0 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xf466d819 d_set_d_op +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47db8cd xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf480d225 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xf4b6585e udp_prot +EXPORT_SYMBOL vmlinux 0xf4b84dca seq_release +EXPORT_SYMBOL vmlinux 0xf4bcc0cd __break_lease +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bffced __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xf4cce4e5 proc_remove +EXPORT_SYMBOL vmlinux 0xf4cf4767 kill_pgrp +EXPORT_SYMBOL vmlinux 0xf4ed78f7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fe5de9 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xf510306a d_obtain_root +EXPORT_SYMBOL vmlinux 0xf514ab85 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf541ac66 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf564680b __pagevec_release +EXPORT_SYMBOL vmlinux 0xf58175a4 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xf5936689 load_nls +EXPORT_SYMBOL vmlinux 0xf59b4218 softnet_data +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c5fdfd d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xf5d711c7 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6003ad3 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf6006b0b scsi_init_io +EXPORT_SYMBOL vmlinux 0xf629c41a ata_dev_printk +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64a0b94 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xf64d0619 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xf654cb48 of_clk_get +EXPORT_SYMBOL vmlinux 0xf65e9327 param_set_long +EXPORT_SYMBOL vmlinux 0xf666f1e1 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xf66d0a97 vfs_getattr +EXPORT_SYMBOL vmlinux 0xf6706bdd pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf69124eb bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bdf005 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xf6e208ca init_net +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70f42ef locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xf710047c elevator_init +EXPORT_SYMBOL vmlinux 0xf71a157e dquot_free_inode +EXPORT_SYMBOL vmlinux 0xf7424250 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7669eda dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xf76a5ea7 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xf78e7fe9 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xf79431f9 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xf7cdc736 clkdev_add +EXPORT_SYMBOL vmlinux 0xf7eca98a scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xf80115a2 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xf80cfff3 __get_user_pages +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83c955b fb_blank +EXPORT_SYMBOL vmlinux 0xf883eb41 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xf89a5197 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xf89d590f blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xf8a2a8e1 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xf8a75e27 is_nd_btt +EXPORT_SYMBOL vmlinux 0xf8be7a97 blkdev_put +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d2bd73 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf8d76e1e thaw_bdev +EXPORT_SYMBOL vmlinux 0xf8d7b6f3 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xf8ede41d flush_old_exec +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8efbb34 dev_get_stats +EXPORT_SYMBOL vmlinux 0xf91ae8f3 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf922dbbc security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xf929be3e qdisc_destroy +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf957a4e6 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xf960056a free_buffer_head +EXPORT_SYMBOL vmlinux 0xf9806ace mmc_can_discard +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a60ac1 register_qdisc +EXPORT_SYMBOL vmlinux 0xf9acb585 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xf9b423de netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c44ac6 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xf9daa6cb i2c_register_driver +EXPORT_SYMBOL vmlinux 0xf9dac61e netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf9e84bdf unregister_binfmt +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9faeecb security_inode_permission +EXPORT_SYMBOL vmlinux 0xf9fc3a69 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xfa00cc25 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfa05671c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xfa18a08a always_delete_dentry +EXPORT_SYMBOL vmlinux 0xfa21c2b6 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xfa221d4a tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xfa3110d1 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7f595f dev_addr_flush +EXPORT_SYMBOL vmlinux 0xfa81103f sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xfa87d531 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xfa935230 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xfa9b8ed7 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad68a8c swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xfad69ac1 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xfadc46d6 netif_napi_add +EXPORT_SYMBOL vmlinux 0xfae3fc36 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf8c971 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xfafa0fc0 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xfb1a7ca9 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xfb25b71c unregister_nls +EXPORT_SYMBOL vmlinux 0xfb2e0db6 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xfb3211cc nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0xfb3abd94 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xfb427681 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xfb5b4ed0 security_path_truncate +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba98ece inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb4f106 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xfbc1f946 paca +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc82f83 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xfbc8ce5b tcp_conn_request +EXPORT_SYMBOL vmlinux 0xfbcce680 touch_buffer +EXPORT_SYMBOL vmlinux 0xfbd5818f blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xfbea40d1 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xfbef3ca3 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xfbfe88cf of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0d0726 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc3cf083 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xfc4c5ddf xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xfc8d8e3d pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfc962b27 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xfc9ac4f0 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbcdb65 tty_do_resize +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc4e7e4 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xfccf03e9 nonseekable_open +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfce0db64 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xfceb11e0 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd02f639 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xfd198067 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xfd57cc5c crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xfd65c714 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xfd9885d6 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda10c92 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xfda3d163 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xfdabdfb0 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc04b6a put_page +EXPORT_SYMBOL vmlinux 0xfdc050df security_inode_readlink +EXPORT_SYMBOL vmlinux 0xfdc8d62d __ip_select_ident +EXPORT_SYMBOL vmlinux 0xfde001b9 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xfdeb0433 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf3eaa7 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0baec3 read_dev_sector +EXPORT_SYMBOL vmlinux 0xfe0d1c61 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe32330f component_match_add +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe392502 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xfe48b82e wake_up_process +EXPORT_SYMBOL vmlinux 0xfe5ab457 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe632431 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfe6df7f1 poll_freewait +EXPORT_SYMBOL vmlinux 0xfe7141ef mmc_get_card +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7edee5 skb_tx_error +EXPORT_SYMBOL vmlinux 0xfe8f0969 dquot_alloc +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfea1ef83 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xfeb27071 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xfebc7880 path_get +EXPORT_SYMBOL vmlinux 0xfebe708b rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xfecdba73 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee9efd6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff11b438 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff330df5 tso_count_descs +EXPORT_SYMBOL vmlinux 0xff3459da xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xff38586a try_module_get +EXPORT_SYMBOL vmlinux 0xff3c0b0c swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xff4a132d tso_start +EXPORT_SYMBOL vmlinux 0xff62c9db param_set_ushort +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6de9f4 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9ecfc8 fget +EXPORT_SYMBOL vmlinux 0xff9f35e8 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xffb81cd2 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdeb46a skb_copy_bits +EXPORT_SYMBOL vmlinux 0xfff4215b unregister_qdisc +EXPORT_SYMBOL_GPL crypto/af_alg 0x21723276 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x35f0c4a2 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x55d53017 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x6a11f1ba af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6be6626a af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xbf22b0c9 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xd4cfba8c af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xde695d9e af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xde7e4007 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xdce68e63 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x97608ee0 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xde22c145 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1693ab90 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x670d0f9c async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x28ac9d04 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x431d94fa __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6933c0d7 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xba2e0dbb async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xda3daf4b async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xfa3c39c1 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x01bb9215 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xd10f65ec cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x6be56625 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x5088ed57 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xc920e164 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x0d5ce6dd cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x33eeb23a cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x36ff299c cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x3d60d15f cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x4e84f691 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa6178a12 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc650fff3 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xe0250e01 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xf0486c9b cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xfbef3c70 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x0d99002d lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0c8c3f55 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x36eb14ef shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4a77dd22 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6a9cda3e mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x724e9c8f shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7a27de89 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbf9699ac shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xcd5aaa67 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x0fef6086 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x714efb83 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x7b124ef0 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xd30750ac crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xc13abfb7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x4df6cf48 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x32b57093 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x026a7c16 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x14155785 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x183bfc20 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x32f7a399 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x34ca4e72 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4417c532 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ecb8c8a ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x64d8f558 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x67c59b0f ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x736f3d97 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7cef6b21 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8618a02e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x88058c90 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8f347eed ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc23a255e ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc9ffe701 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde21b1b7 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe1c82daf ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe9e094cb ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeb31a242 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfc67f576 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xff8e4f09 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2238df32 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x40077ac8 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5cd4e7cd ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x85ebf2eb ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8deccec0 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9e0dc461 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa427eb5a ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcf55531b ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe18b3f40 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6c408343 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xc0e736ed sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x1e621701 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x1ebefd82 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x25f8c0ab __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x28862da3 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x01dbb9d2 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x02e8bd44 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a79a9fe bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c240805 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3e99fc3e bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x468f8a8a bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4c15120e bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x60fa1a56 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6489045f bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6e85f93c bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x74823d45 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x858a15de bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8cb1a57f bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f3040b8 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa3187b59 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa3cb1f3b bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xac00fee7 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaecb5da4 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb3500428 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0ae79b6 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb3fc159 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xedb4df75 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa551553 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb35ecd6 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x191aa2aa btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x36c9e342 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb3b64c0e btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd5d478be btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xda52f3b4 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfbf4f463 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x08c24dd9 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x210f23f7 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x2444136a btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x358ace2b btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4d2b6ef8 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5f7b2e9e btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6104f5ff btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa068c281 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xdb2aac92 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xde02f70f btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf092085e btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x018479db btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x091b0cb7 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x211cbc75 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x350e8c6d btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3e361f7a btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8db45ba8 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x969cddde btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9cfc3591 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe2313c17 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf0ad3693 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf138c34c btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x5ce5fd09 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xf20e0268 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x0276e172 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x0f37c900 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x07f367a6 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x865a785d dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xce43e955 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd21dbe34 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdb5ec177 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x21df188e fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x685a3a45 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x7ce3400f hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x925203ee hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1c346387 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6a224ef4 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa3a05be0 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xaa1d4b1e vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x08ec9bd1 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1af8f4e1 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1ed752f4 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x22ba88b5 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x36b054cc edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4657435b edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5d0e2196 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6efad5f4 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6f3a3fd9 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87d679e8 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x906bde11 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x94a4d6f2 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9f2ae809 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa974eabc edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xad3c9dbc edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb941e079 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd240342d edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd49a7948 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6a65f3d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe7053dd4 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xea48c430 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfe9a932f edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xffb48b88 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x18414fce fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x62794489 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x7022e2e6 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x82c5e208 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x85e12a12 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xfefdb42b fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xb8119235 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xe98da953 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x45cac399 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5ec81072 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x22c236e3 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x415b2d33 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5a8d5812 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x61e74e22 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7cd303d7 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf8e7bc17 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0f50cb9e ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x15ea7586 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1f4aa048 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b5404c5 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0d967c42 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x195feca4 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1eb4b6a4 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x225c8660 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2b66e6c0 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2edbecc5 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x390638bd hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3f9970e0 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x457028a3 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5304e41d hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x62910365 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x645a8108 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x67760a57 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x724c24ed hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7479076e hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x79a0d1ff hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8468e786 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b22504e hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8cdb3b33 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9653efb5 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f94f2fe hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa46bd267 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4d2fb56 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb7bef997 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1b8f70b hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc31a3b56 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd341786f hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd667ec61 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8ae3471 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde3b51bb hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde6e51f3 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe28b04d0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe860b283 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf61588d7 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfbc0c8a0 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x0a6c06c8 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x08cbbb59 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x664d4a50 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6f1ae1ff roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x95055e07 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe3702254 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xff978017 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1129ee2e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x47976152 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4a77d861 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4c2603c1 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8efc5e55 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9106b2a9 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x95569ab5 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa2df34de hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf3228bf8 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x731bd37e hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x054b8231 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b1a1e68 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2d01b4e0 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3365fad9 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x52b7c6d6 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x53222b78 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7b74e142 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90c58cec hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x91935832 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d1f5b65 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa2237052 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa62a2247 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabc501df hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbfd6629b hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc6ad27e4 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xec82e30d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf331618d hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf8378b66 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x41c136c8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xfab5b6d8 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0b1b4740 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0f53d7c4 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2085b370 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4c1f65ba pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5dd59343 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x63f0003b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x675a2ada pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x753fee4c pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x84912fd4 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8757dd28 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x91e9b160 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xda2bd82f pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdd00c829 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfa8fc8bc pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfd42c90f pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x0589e0cf intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x05c79c88 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x275a527e intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4cb089d0 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x522ad867 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xe504dec5 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf5f7bc9c intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x11b40143 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x1b6ec667 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3182ce9f stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3fbe10b4 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xef4dbca2 stm_source_write +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0a76f0e1 i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x52521ff2 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x702a71b5 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7badf82e i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc210cea4 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x724331cb i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8522fc22 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x0cbad382 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb6f49a0d i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x614cb808 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x9854eee0 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xbbf69403 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0f8c16a4 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1354cd82 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2a6d167d ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5f0494ed ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6a011247 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x784bb20e ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbbc0ec22 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcc3e0f6e ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdc59209a ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x181d2234 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe575fdb4 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x02bf566d bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x348aa41a bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xa9b00452 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1737cc81 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2bd48e99 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4cfbb0d5 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x69391b44 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6a540ce6 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x73cf704c adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9377293e adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa70762c0 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaeee4c8f adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd2762639 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xee9c78fe adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfbd77316 adis_init +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0557d943 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x07d209d0 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x194d476a devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x221ab0bf devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2911d7f1 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x31abfdc9 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ebc133f iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3fcc17a8 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46df252f iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4892f77c iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50416e92 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x540fa1aa iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x570a1dfc iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bdb457d devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5c955b20 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x659800e9 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a2e2c92 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a689c2b iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72f271df iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7d69b1cc iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81b3a4e6 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x91ded624 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9b181cd7 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa564e3b6 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7c416e9 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad933794 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbe4beef9 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xce29c907 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe27d2b89 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe64287f7 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf580dd1e iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xb33c8f32 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x7026fb3d matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x03320154 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x34cc2fae cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcfc6e20d cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfa718378 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x435f6235 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa2bd2a2c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xb7007432 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x00b3d581 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xba85f340 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x4acbeb0b tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xa4740ea9 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xbf2360d6 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xc6045faf tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x16d8fb4a wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2288be6f wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x25049db0 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5206955f wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7c9cb17c wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa30f2aab wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xafa10feb wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb85dae0d wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca257b97 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xee22bef1 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf39ca3ab wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf655c7a1 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4791c034 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4d801e5a ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x74b17a37 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7ceb0d68 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcb62c0a8 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcbbcede7 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcef67b8d ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd8e06283 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfda47de8 ipack_get_device +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x214b2638 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3ed67a26 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x44bdd39a gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4703b193 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4a7059ca gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x50790f56 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x65146a11 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7ce8e851 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8403440e gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8c2bee51 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9d7016cb gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb9c2b97d gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdbc5c996 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdc13be25 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4bdff5c gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xebb2b23f gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff38a562 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x970c0b20 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xab894354 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xaf13489e led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xb3e7d687 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdae2fc09 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf7344b98 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0eef0b31 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2338e44b lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3bbbcdfc lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3d26321b lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x59d069ca lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8cb842ba lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xaf7b4f15 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xba5ed7d7 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc0d6b44f lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe1ff295c lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf5b426bb lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x37426989 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x47e557cb wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x693bdc9a wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8083060e wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x92f6bfff wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x997e5e73 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x9b832e56 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa6c2893e wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1b8ce17e mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x303d8b1f mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x487fabe4 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x71b459af mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8ded0198 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9b44659c mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc21a4124 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xccf714e8 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd1e58c6e mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe9682ba3 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xea5d66a5 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xefb474da __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf8a98bb9 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1e004a61 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x23159d89 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x56f17ca4 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5769e39c dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9b0f3a7f dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xaac063dd dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xaca00437 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdd3aa30d dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xef9d0c0e dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x53b25b77 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x345422fb dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3a81324a dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8068f7ef dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb4ec7e4a dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc929ea4f dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe3a60c26 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf37ee3fb dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x14a53f22 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x66c130f4 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0f4d8b81 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9460d8e0 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9f2a1a15 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa54752c2 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe3f0e796 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf0f121d8 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x328ce6c1 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x01beb63c saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x49bd14be saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x616b6ce4 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x712c6c8c saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8fd01a55 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x936ae5b5 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9b0fba12 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb6e772ef saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc909d175 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdfce3034 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0f633c10 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x62bd7dbc saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbeb0ab9a saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xda5f7ce6 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe3317030 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xee0ea822 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf6ca5687 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02f7fd34 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2834fbfd smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x35cac5c5 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x43f830de sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4dc6d394 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5673c32e smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63b10214 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x67bba19b smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x70c26034 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9903487b sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9e919d90 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa56302c4 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xab4c2c61 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc2266d99 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc7551233 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc8320911 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfbb7ff96 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xf7b5569a as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x57d64d61 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x84765a08 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x03e141e4 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x2e05b03a media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x3deb7841 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x4ac090f6 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4b811960 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x6d4c0ed9 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x7554561a media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x76fdc178 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x83b297db media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x881dd888 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x95821d6f media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xa53cd931 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xada0a859 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xbf241536 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xc4008ab9 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xd8e79408 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xed6622ba media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xf4bfa95f media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xd7655210 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x27105417 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x350820e0 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x57c1ac98 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5b994af1 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6417a4a5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7bb4b529 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7f3b2eb1 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e15d922 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa8eac802 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xac17b8fb mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe0fcc0c mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd1127dd9 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd170f650 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd3f9c6e0 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd6138e79 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf43f8867 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf5239b43 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfd083cbe mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe351b4a mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0cb469b1 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0eefbec1 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2478c41b saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2896145b saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3a213056 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3b7a89a4 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4b1084bf saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x519a67e0 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9d0d82f5 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xad25b0b2 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb13f4e8f saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc3db5a03 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcb8def7c saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcf226724 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xda98d518 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe04eebc4 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe627e978 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf4fed538 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfe3e4065 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x60c681e5 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x952d8375 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb70bb20a ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdb5dac6e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe1499be9 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xefed1f03 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf2550528 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x26f413d6 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2c7c6a99 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x35d33e7a xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x391380c4 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x8f8b3052 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb0f87d50 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd6c5429c xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x5cf4936d xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x2a37a82a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x88ce4a36 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x01d6aed7 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03dc6149 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2bf883de ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x35fa420d rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4aa72d6f rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f172240 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x54a8088d rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7d1b9792 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8c3d59a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xba4038b2 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbabf426b ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbe19fcde rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbe39d569 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc60e2e9e rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc63e9b5 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd62b5638 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe47303fa ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf4c01487 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfa7656f0 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x1fcfec31 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x7b551027 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x122909cb mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x8154ac33 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xf1f90708 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x575864fd tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x658a0b31 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xea75ad59 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x5086397b tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x0fbad55d tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8ac63027 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x62271c67 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe6347f03 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x71427971 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x01db981a cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x06666f4e cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x37b7bb5e cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3a6a53cf cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x55c4cb90 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5e9e1570 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x72f7e587 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7551d53a cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x814bef29 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x92e2134e cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9bfebd10 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa05a932e cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa3b2e39e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc524add9 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc9ad4216 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xca1d7982 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd43d2045 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe0c26d12 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe57b4c71 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf92fba7f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x44357c74 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x618b11f0 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x01ea34f5 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x100d43d7 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x22a9cdfa em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3b86b8f0 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4bce50b1 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x56ed7d38 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6f9d355d em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7a607f86 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7e066b53 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x84f9c527 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x906dbdca em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9505c364 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa7b142ff em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb879822a em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc7c87ee5 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe3704600 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf2f6d5a8 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfd904852 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1977e016 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x842100dd tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x876f94d2 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff04092 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x20588e0d v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x24f094de v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x30aab4b9 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xafbef9ea v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe4a1f9d0 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe4a491f3 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3261a096 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x400c0dc4 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0cbe7b42 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x155ce48d v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x21242d68 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2a6242aa v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x43f161b6 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45f9375d v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4fb8049c v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x52875620 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5919fe30 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5b598d23 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6630103f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6bc2156b v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7285872c v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x888ed88d v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c0bbc98 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ce3ba78 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x937a796e v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x93e70423 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x983dba30 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a82b2ea v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa5fb1750 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaa415614 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb6e1011b v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbdc6bede v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc12921dd v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcddaf597 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf2ed2783 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x323a4eb8 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3935cba7 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x552d0d6f videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65fad09b videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x693cca7a videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x71c78434 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7a4f62df videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8a505cc9 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8ef1d7da videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x98905619 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99db004d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9b035e10 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c3aff3b videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb1fcb7cb videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc25828da videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3080aa0 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc36ced32 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcb8565e9 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcd62aa00 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe490cc59 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec000ea6 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1997bb7 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5e26eac videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xff0ce14c __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x403ea2cb videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb4fd5b8a videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdf34e7dd videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe5361e82 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x1a0d4ec4 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x86000e48 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd9368e2a videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ca81589 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f008a96 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x20c2613b vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21ce0f3a vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x23392bff vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x326dd338 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3284c492 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x476a4d55 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x49927dc8 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x67cd9f89 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x793c1d56 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x98edd65a vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa918852e vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa924e784 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xac2325dd vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeecb224b vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf25679b8 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfcd1725a vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x650c1f8a vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x670fd5d0 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x4bc6c07b vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xdeb69f5d vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xae1231e4 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0ee45a78 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x162f1401 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x19fb1723 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x20372103 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x26e129c7 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3289b21b vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x39073c08 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x416d648f vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x48f85c21 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x4cb4dd18 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5234c522 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x62b51409 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x665877e5 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6daf93df vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x75f9a166 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7cf633bd vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8445a50a vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x85847d76 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8eae467f vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x9ec6a0e9 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa033b806 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb1a7d5a5 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb48d90fd vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbd4006d4 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbd42ca9b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd6a74e06 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd782883d vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xebf29190 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xec518c1e vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xed5e56f7 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf13b2072 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf7ecf14a vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xbe411449 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x010f6c56 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0291f7b3 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x03753cd1 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1196d3c5 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1c814295 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x221ab0aa v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2487154a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27e4f6e7 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3055ef7c v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x418ff3ae v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x449c4bf3 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4a95274b v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4b230de3 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4bf9a681 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x554f602b v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61873ad1 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x740d018e v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x76607b7b v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x772a7455 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7d9e8294 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8a2416a8 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbd76debc v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc3d0190e v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc55f4a6b v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xda300bf7 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdee04939 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf0dc55bb v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfda22095 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfe1f6cf3 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x566b8710 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x566ed85f pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6011ab19 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4c1f55fd da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x641623c5 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x79181ef9 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8946dcf4 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc3eae3ab da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc44f97e9 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xfea2042e da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x35698908 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x46d6d490 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6abb3e99 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x78663029 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb093891c kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb5ca5c15 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xba7a31d4 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd51624b2 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5f4265aa lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x60b218bb lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbc212173 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x041a9bf3 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1f85cc36 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x35c8e50b lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5166b948 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x82fbc53d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbf360d7b lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcbcb327a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6c299b09 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf8166842 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xfd48e62f lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x29c34724 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f616903 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa3982ebc mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xbb8c70ed mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe939cea5 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xfb363bcd mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x393acf75 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x44bbc1f1 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4b3e52ed pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5f0d0d7f pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x62ac683a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c0828d7 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c19530b pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x896d6df5 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb587af61 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd9dfe32d pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe65292dd pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x26ca26bf pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf52124b3 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x60e5ef2f pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8499fff6 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8e2dfcf3 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdee94ac0 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe5bc028e pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1759aee1 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x17fd441f rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1c0884b2 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d5fb819 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x202a8df1 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x21eb77b5 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x29267561 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2b892c53 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x34282123 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x38fc425a rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x434601a1 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44c52c52 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4a7df40e rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x52956861 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x56c2c8b9 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5fc3a118 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d045f42 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6e9da9a7 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8d3b9432 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x97d8f2a6 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc8140a3a rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcc1f3d6b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xced3be55 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd46865f6 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x091d9ff8 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0c86c40d rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1c2256cf rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5253bd40 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5d39db6a rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x70e4a882 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7da98302 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x859c3544 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa3f7d6b2 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa659bf66 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb8424f4e rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbe377c3e rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfd5f23ae rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x05c2f2a3 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x08caabc8 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0d30ad3e si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b624aa4 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e8b8ef4 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x295f29ff si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b633fa3 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b8f051d si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d010289 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x47e093cf si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5506b49a si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x56caa20e si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58648e64 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x61f03f7c si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6728507e si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x714a02c3 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x73261d35 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82b5df4a si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8459386b si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84f2ebd4 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90639727 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x914a93d4 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x963da177 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9bc327f3 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6c23407 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc1f11199 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc5329273 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc85995a7 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcce5904c si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe7b1ca08 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe890a076 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf6788f71 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf97d8f87 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xffdbf22b si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x320c22a1 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x678507e0 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6f8239ef sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8223deee sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe8f70338 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x41692610 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x8e693237 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xcc4c814a am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xde60706a am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x277d95c5 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x85ea1551 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdb2ddde8 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xf3ce33b5 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x5c63ba0b ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7192b426 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8e698f14 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x91e1ebd0 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xfe1bafd3 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x07fcce0e enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1541e189 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x58008a1e enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8e93b817 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x97a97a1b enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x98f03cde enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc3ae7a0e enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd559ff5c enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x14af7ea1 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x284cd491 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8556584f lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb5dab000 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xba86a93f lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xceb8a9ad lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf034061b lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf222673e lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x05576b1e sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x05f6c1ae sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x24ba1bfc sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x43abb585 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x56a89d32 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x758b1f09 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7a2c71bb sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x854cee39 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9974adc5 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa30d5298 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xad645cde sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb5655e75 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbc369aab sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe8692f62 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0ab4d7b9 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3dcb7d6e sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5023c36b sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x57ef6f70 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x881e27e9 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8dc72c79 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9bc51f6b sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb2e10ce9 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbeb1e316 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1c78b788 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x23519260 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xde4fb7f6 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x3cc50094 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x42974b44 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xcf3ccf12 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xad026613 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x226cb814 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2505deb9 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdcebce53 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0c9671b6 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0cd26b37 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d25d9de mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x129a4a0d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x181ce791 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a8e08a8 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x222cf700 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ecded80 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x39e2bf7e mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3b3e75b4 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f363007 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x412296fa __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x42913f1d mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x429cd908 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47d25852 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x586ee2eb mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a18bb0c __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61ca6900 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81bec681 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8358c13b mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8545fb30 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8aa147ee mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ca10301 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8cbfd5c0 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8cdc714b mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9845fc4c mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2bdcfdb mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa9d234ef mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaa62afd6 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc88a8d4 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc5c85b4f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7f4a0d5 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0e1fc37 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1528114 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd64c79dc mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd85ac7c0 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd96a0fc5 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd0bfaeb mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7a141ca get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7f097d9 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd009ff0 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd9bb2fc mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0373aead add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0935ae88 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2871c714 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3583c3a3 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf4fa500d mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x3ed75b15 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x66614098 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xeb7d3126 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x66183715 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa27bc272 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x6690abf1 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x24919c72 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x40bf8181 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6de92774 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7485a968 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x82231761 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9088108e ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9f601caf ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa11ebe24 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa7e89824 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xce23645a ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd38ff3f0 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xded3b97b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf50146c9 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfe979258 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x1f79e5e4 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x97fd5fb6 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5be65cb6 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5da778cf unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6f4cf5b6 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x91aac2ca register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa776dbb0 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc796d84b c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00290f6a devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0c5206f3 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25dff062 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2e50418f alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2fd5dc8c register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x56495124 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x77f689cd alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7efe2be8 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x816a750a can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x83f92d69 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8d227097 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xabc5bfbd can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb56083dd alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb657609f open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc050d993 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc4e789f8 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd12eb593 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf22eac59 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x06e4bfd8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x09c76b75 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2cee8716 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xbf502dc1 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2df2ef03 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa8f30dc7 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb926cc6e alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd5886593 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x78556a1f arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xb1522375 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x051b2f9b mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05ff6b89 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06ffc471 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f0d38cd mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x122f860d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15f9fae1 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17e25ddc mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b49193f mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c2df931 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e0139e6 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e4087e1 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e8dfe4d mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f2a2fdd mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fb2bf3c mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21f91c20 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22e19f8a mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2478d684 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26f660a9 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x280dd317 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28ffb76e mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c3650cb mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30ee6937 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x332e2928 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33db0832 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x340a8eee mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3428e8ce mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3441edb2 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3476a53d mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34c643ac mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a1c1c3 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37052df5 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37ec1d6a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3996bbcd mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3aa3e35e mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b2b7761 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b96a16d mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e40cccb mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e533f12 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e81863a mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x423726f9 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x426090bc __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4383d9c0 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47b1b32f mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a7edd22 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4cf8b119 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4daa1642 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5270db0f mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x529a98f2 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58886738 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59eb86d7 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a5c6eae mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5aea6804 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b3be2ea mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bbae9db mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c694577 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ec3d0e8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ffa470b mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x614793f5 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6312f01a mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d6c82cb mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75323cfe mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x790f0fad mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a0c2988 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b8a1c7f mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d420b0e mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f2588ce __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80dd8ae5 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85334ed2 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x867a68fb mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8968f4fd mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e5d32b8 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95c91778 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95de218b mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96611f04 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9996da1d mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ac7407c mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d359584 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa19490c7 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2c08a8a mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4c49ded __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa52974eb mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa93a971f mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa71389e mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad10c25d mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb45fa01c mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb61b5038 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb65f41e1 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8ef34b7 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9e5acbd mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb501d6f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc6b6faa mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe23a7e9 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc18ca773 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc56b216b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc68b9395 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc75fd352 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc990b886 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcca5ace2 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce29f59f mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfd00815 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd23b863f mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfb4ae8c mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0692236 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2ffdc2c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe470a043 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4820a3d mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6b5771b mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8ff5c25 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee0f00a9 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeecb4680 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef642be6 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0acad4a mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2f066a0 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5372d68 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf78a5f86 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8fa40a2 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa9c971b mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfafc4263 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb41bb9a mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbfdc833 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc9c4110 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd2cfa6a mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe1a006c mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe2e6f1a mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03f2b354 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x062df111 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x090b1f52 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x092b988a mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17935f07 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b34ee56 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3bfd9e77 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c76a678 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f416ab2 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x409101b9 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x455b1bd1 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48696595 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x486a5aca mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49461162 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5167affb mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55a8fa8b mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x698d428a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bae5f16 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7268276d mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7315d44b mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73194ba1 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a1bc215 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dcb88f0 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e09a644 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x904d4ca4 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91be4406 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9261ee0c mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98d7290a mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98fdb791 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b502256 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c1c7b7d mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f78c446 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa25ecd6a mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa306ff9f mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa52f2431 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa98c8276 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb15cf189 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc88eafa3 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0c941c2 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3d5494b mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb6e9b3f mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec679363 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf10d0b7f mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf480e9bf mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf766e380 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x0f8e68c4 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2b221d81 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa8b3b85a stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xcb4b6de6 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xec4a4339 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x07e0a4c9 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xa26c3e97 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xb058e44b stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xb6cd1bcf stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1b8a6fe4 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x49f0f5f7 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4a3af661 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x57858183 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x61ba7de1 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6379ccb2 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6401002a cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8fc15a33 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9b4314fd cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc187d7f9 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xda356cac cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe1ebce97 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf2024d64 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf62fa4d2 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf774aea5 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/geneve 0x72fe9bd9 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0x9d1f629d geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2eb13617 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6188fb39 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x92dbfbae macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9e9b9be6 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x58a329ef macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x07875085 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x50b740df bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5f6b0ca5 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x79e7e804 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8d2e8297 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x94099049 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb76dce41 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc0f93287 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcb489be5 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd217294a bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x967a7b29 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa739b26f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbd9396ae usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc9dc8dcc usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf01445f2 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1adc5ac0 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x22113a88 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2f21c83b cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8ab37454 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9105f915 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb7769d03 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc244f93a cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd1fc9117 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdaa5a6ce cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x34274001 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3bfe73a8 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x489f6235 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x57c792dd rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x65f99be5 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x847138a5 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d4ba4f7 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1a4e84c2 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x339452a6 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3da8f4a7 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x46e981aa usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x547f10d9 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x618c72df usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x64e6797b usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6dbab16c usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6f0f451a usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x73fdb362 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77a312e8 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7febf0f7 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b387210 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b709f89 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ea7662e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa02b54a2 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa74c49b3 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa7a7484e usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb4f5eef5 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb92e4428 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbcd58d59 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe66e515 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbfc4cb00 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb6d4873 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdce62620 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd44b716 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7524ed2 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7737116 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed2f2c25 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xee1861a4 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf9a890d0 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7aa41ee5 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xee107486 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0fc1c5a8 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x11b5f4a8 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x28856e0a i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x33f134aa i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3df30303 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e4b7ab0 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x603b3428 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x84595131 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x94a706f4 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9e4ec873 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb632fc30 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb6d15cbb i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc0ad3554 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc1b67622 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf48f0e26 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfa698fce i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1c130e9b cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x59650d81 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x627422a7 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xa04be607 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x120f5f27 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7e2a2f5a il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x88b28368 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xab03e23a _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc52ee5a4 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xeca0a08e il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002b2e74 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x06221eb8 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0adbcac8 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f48dcb7 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x226f1b70 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x280c6b7d iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2e3dc749 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4095543c iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4fc4c630 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x67da5343 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6b558348 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6d613955 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x76c29d22 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x79513315 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x84494772 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a72662b __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x90e30f35 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x93788a87 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa2b42058 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb4b3cc0c iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb6ab65d7 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcfa36f60 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdebfd775 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d3442b iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeb929c52 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xed2feacf iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf4a290ad iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5aea4a7 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfee0781d iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x114f3749 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1fc0ecf8 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x287a4b60 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2a9f10f4 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3d74296c lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4200ced9 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6065c8ce lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6465d690 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x78302c87 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x82dd3eb8 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x85fa559e lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a9802fa lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x99211b63 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdcb09c74 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe223b265 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeb1c53c5 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x399cc196 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6ab06c2a lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaff4579d lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xba457c57 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc554a97b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc978fbb0 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdb18a009 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfb6f83c0 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x045d9cd3 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x13e3190b mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x279ca8c2 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3e936466 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4d3d5322 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x53ae0a1f mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x580e5c19 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x59508a36 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5c014ab1 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x61932b9a mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6cb1c50a mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x77c5cf06 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x89a903e9 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa585f940 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa8f003ba mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xba1694f8 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbf2b8cfe _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdc1326c3 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfffac16b mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x22fa0f8a p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x50a98280 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x63df860e p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x64f810cd p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x675b0783 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x80ae233e p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc38c655a p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdb1b42d8 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf733b3d2 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x45553448 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x698d0841 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd2ede588 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf141643f dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x05044868 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0f3a19b5 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1377a883 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1fcfafd1 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x292c5bcc rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x36557401 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3877ea27 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x38d95be1 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x429bb355 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x48bbce54 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4d07a851 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x598d6edc rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x68219706 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8c864029 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8d522a7f rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9361dba6 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x984774f6 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa09c0491 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa1dd3202 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa3c0bc40 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaace7b9f rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb5981c6b rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc1be0957 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd2f9cd61 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd50d145c rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf454b233 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf51a6162 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0534e9d3 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0a0ff7d7 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2121c6af rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4d14a029 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5cd57ff9 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x66034b64 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6dd2c4ec rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6fff5f31 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x99a45a1a rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9f8aea11 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xae8e195c rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb609793b rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd16148ab rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe758f68e rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xef892a46 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xff1c54e4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xffb7016a rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x138234f0 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8d1ecb35 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9c2878a8 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xea13bc60 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0616fb76 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x062ba507 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x091b0636 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0ae2f7cb rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b627b25 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x237a5c81 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x27304ec8 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x279ddf1f rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28c378c3 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2df4784e rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2fb40d99 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x377bfdb2 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3bf27513 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3dbd3a26 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e7fc08e rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53cb191d rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x65b90ad1 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x67338f50 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8fa5978e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x919c0106 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9753a975 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa6d4791e rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8021903 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8bd91f7 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb26be35a rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb6ffc86f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd2763a5 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2c9015f rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xce7561ab rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2c86c89 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde2b1e0c rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe54199cc rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe898474d rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed3eb5d4 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xef09781a rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf4af00b7 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcd217ab rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xffb784bf rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x23b48f77 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x28edbf78 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2f153acc rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x44cea612 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x491ef10c rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5aa196da rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x67fb88a8 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7bea3ace rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb4fcf3f5 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbb9d6a39 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbc36f333 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf1cb6889 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfa1331ba rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b334f42 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f3c720e rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b59fa49 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x253c769a rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2791b0a0 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3214ccdf rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x37d6eb9b rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ae6b031 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3cfd6f28 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42355b45 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42b51a90 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4d5e3b4c rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f3e9d2c rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6076c168 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6194e071 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x65a5d7f1 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x692d3172 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a1bf69c rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6e48f2b4 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ff45213 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ff5dadb rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x700014fd rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ab0853c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f83549c rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fe6d8ae rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8229e568 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83abc6a3 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88f68def rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x912ee8e3 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94824d40 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x954f478e rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6784d8c rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb078b924 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb08e5b34 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb2268770 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbbb8f7e2 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe816e86 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3c7e68e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc8bb26a1 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcbf94078 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd2ba002 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdbfc9f47 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe06d6c57 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2e8a415 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf7996d12 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe4f48b6 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x391f2183 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7f841008 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x95b5026e rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x9ba0a1da rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xdc6de79c rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x17d71e0f rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1ace190c rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6bb267c6 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb4e6f53d rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0670d822 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x091c0c27 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0b1a7b06 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x27677717 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x279c2bdb rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2f84f480 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3f66ffbb rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x46e8ab4e rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x50a0557f rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x654ce0a4 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x65c4837a rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x975d395a rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaeade0a4 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb5554603 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc588c89a rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf5c92749 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x4601c683 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6b40231e wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xda3c5c24 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01ec5536 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0386cc54 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0aa56111 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b7a46de wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e8663b4 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0ec96f31 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11074778 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14ba8eb7 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1dfdde8c wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x295271f7 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x385cb677 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x458f1bae wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ef6a2a0 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4febdf68 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5914689f wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f479fa2 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x724c75fa wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73e8ba41 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x88c40079 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b6269dd wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f8cb8c7 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90f43b68 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa47acee3 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9accdf7 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb4792550 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb48dbcb1 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc824d42d wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc827655a wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8a060c6 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca431a47 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcac5b820 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd18c225a wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0b07617 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4663fef wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe9ecca9f wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xedc8f525 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef1dbd1b wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1f51b4b wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf38c459e wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf3bc02bc wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf460b51e wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4bc913a wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfabb944c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc8312f8 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x022ddef5 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x570263d6 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa31971b5 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xbade97b7 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x122bb1f4 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x165dabc0 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2318cf8f st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3bf7a049 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x57b91a08 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x695184ab st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x75acb5e7 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xaff0901f st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3facce22 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x6e201665 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xe990aeb8 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x48cc699d nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x57174e39 nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8037077d of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa20f61c9 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xb5f3221e devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xd190c280 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xd23e2480 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe015da0d nvmem_device_get +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x099abef8 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x127650b4 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x7525a345 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x192d861a mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x2f5febd6 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x54596127 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6e08600d mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb3c0cc5a mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x43dd44c8 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x482ba7b5 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4bffccc7 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x574e6317 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8ae9098c wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb32ca6ad wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7523b6e6 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x048715a4 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07fe4065 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x094e78f7 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ccdbee0 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f8f01a4 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13fbcae7 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18b23313 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1decb899 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2286067c cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b843498 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d4c0a1d cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x320f711d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x337c1d27 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x401c1049 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4229f9e2 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4347a6ac cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44ac8ce2 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c95e28a cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d1f344f cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4e4e7644 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57237522 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61bece78 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64500ce7 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x735b7558 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77bd4c9f cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fa8f2c3 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x81a1e5f6 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84ce5946 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x881807b1 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89a0bb9f cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x96d65012 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d2c38b5 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb5de94d3 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb9a5972f cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbeddb7ac cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc394af7e cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc6254519 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcd0b806a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcebd9324 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd38edede cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda0ce3f2 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc164b93 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe300a2df cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf989be11 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd5e5b56 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffff1d84 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1543ff84 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1815659a fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x377e3480 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3e6d9791 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x48abf967 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x635d2d60 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6ce5c544 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x737fe349 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x75b2d566 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7dd78b8c fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9206bc9e fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc1929b7d __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc5af4eb4 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc5fe9986 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd46eec7f fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd72b2084 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x239c7dee iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6e31684a iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7d3247c3 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8e0e7dd1 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbf85ec79 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe71abe6e iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00c21c5f iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x017e6942 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09d87b13 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x138c1260 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d9a8b4a iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x210d32f5 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29ae17ac iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b420095 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x39e60763 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c8b622e iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ff8abcb __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4527759a iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ba2ec81 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f0cbdd4 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x528e13ee iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57f480d7 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f121494 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68f3b512 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c8f8320 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6da8add0 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6db35bc2 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x71990825 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x779e4890 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c1862b1 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x90ae58d1 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b4453a5 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9bf71503 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9c5aa548 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa47f47c8 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9a3c9cd iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1f3dee5 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1f9be1c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3232ca0 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6b56b86 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9029801 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcac258cd iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd12ae3dd iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdefbc93b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf367da35 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf41fee18 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfad5e91c iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff85e8a2 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x037cc180 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x126b1001 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x14c0b8d3 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4bc94a98 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5d94813c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6add243a iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b5d7295 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6eecc73d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x85faa2f2 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb0d3c6a7 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb2a81cf9 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb83b06be iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xba3a0354 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd1677b4 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc6a88a77 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xecbe3c82 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf01fbb75 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x04607e5d sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0562d165 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0bbca79d sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d92ec92 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2491598b sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a6d0b09 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2e9451e2 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37270320 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x41fafb18 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x537d54a7 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a80ce64 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5c9a89fa sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5fc9f23e sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7d0bc1cb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x822f771c sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e002f4a sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc00a157 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc02e7f77 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc931be37 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd092d71a sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xde897ee4 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf1645c1e sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf571d4a7 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xffac216f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0017c8f5 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01ca5d23 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01e462cb iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02ee993f iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x044e8ff5 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x096096ea iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0d14e172 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e8212a6 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ed39c40 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16e26aa6 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20b5bdf4 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29492fe5 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x356ab4a4 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38616f79 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e288c61 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48c005b1 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5597d46b iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e7a4331 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5f6c02a9 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60441790 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x605377bc iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c9daeb2 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79fd6498 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91f8b61f iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa56f92dd iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa6717120 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xacfe475d iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb22b8d83 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb57d8da7 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb60c1f6d iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbdfabf4a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6c25eec iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca6d09c4 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdc7d811 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcfd75f6c iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd1236ad5 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdab6fa1f iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe04b86f2 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf54968b3 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf72f14bc iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x29121066 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x716e71a9 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd3c07f27 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xea4e5e7b sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x2376bde7 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x08764636 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x31195ef8 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x52facf21 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5943c3a0 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5c093047 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x81b41da1 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x29ca8521 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x2dfad9e3 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x854f38f1 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8a404f58 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x904ebe99 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x90a3d7b5 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc22ed2ac ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x26564f21 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x4f63f4ea ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x4fe09e4c ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x6311c9e1 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xbc472f6a ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd73a2b61 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xfeac4363 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0c5bc1a4 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1320cd84 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3316ea1b spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5f62d8f5 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc0bf2ed6 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x518b06df dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x54458db3 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa22a4786 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa6a3f331 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x263c1da8 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2a27aec3 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x45c680b6 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x490373c3 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x66e864dc spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7280f8b3 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7f307865 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa92dc183 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xabcf66fc spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb0470e80 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb915551b __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc24229f4 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xca40e11a spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcfcd354a spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd886e6b5 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeedfc06c spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfc7c9b1c spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfea84c7c spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x1ccd868a ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0272c7d7 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x07db02fe comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e17822e comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x155ef6ce comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f97219d comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x224289bd comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3471154d comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3739c4c6 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3cb0e7c7 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4aee741b comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4edc4c45 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54fe631f comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x592726e1 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60216e1e comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x65201810 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c59c45b comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c9842bd comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7c156736 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x85d247cd comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x871ca981 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8af8d7a3 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e4f6038 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa528e7c4 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa6d7b0ea comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7c702eb comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xadc98437 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc30527f4 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc60e0178 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1b83e86 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd52d57e2 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe69b484c comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2823566 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf7036fc0 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe284753 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe7691f0 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x33cbb792 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x44d33e20 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x49d96858 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x6e10ba93 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9876fec5 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xabe5ac4d comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbb3d1955 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd023060e comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x038e077f comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1c564bf3 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2578b070 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x28440ddb comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x48d26ebc comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x6de7fc9b comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe7f39962 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2e60bc63 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3b056add comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb04b99a0 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc27d7d43 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc641ce6b comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf2be1797 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x4cce9896 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2a27df76 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x311baefd amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x83e00884 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x55bee410 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6d307e3e comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x83f4b38d comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9fbf8c65 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa37a2523 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa90d99da comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbc15e57e comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbd991b56 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcdaa04ed comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe993d883 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xebe07a07 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xee283f3c comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf0659f7e comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0de4140a subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xa438853b subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xee873867 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xb60d872c comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xc81570b3 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x18547e32 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x22abd9d3 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2ae27ba7 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2e20e1df mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x316a8b39 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3c159008 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4309da13 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x50d38fea mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b9fe7e1 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ab5c1c6 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9a226adb mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa1eb17e6 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb85b0789 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbdc8cafe mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe659b724 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe6f60364 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe91d0ba7 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xea54cc89 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7088a99 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf8349ebe mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfda753c9 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x22fcd1ec labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x6ef6a2e3 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x556bfece labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x636c9c82 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x80d07edc labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xbe915169 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xdd69f737 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1b59fb27 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3ce66f9f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5afe21e7 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x67bcb066 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbda16598 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd11d7ca1 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd2574439 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xebaf40f8 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x300fe647 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3100b416 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4646e32c ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x47978ec0 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xba421e3f ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfa335c9c ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x254c845b comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5d57710a comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x634c16e8 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x731c2a01 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x982154c5 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb16d42d7 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfa55aa0d comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x0b5b23be most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x20e54f0b most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x29a494a8 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x2ce2294f most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x3af139e1 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x3d43924e most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x4dbba7ac most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x6739a4f9 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xa0e1a494 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xbee3afb2 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xdef8a668 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xe8655ff4 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0c4488a5 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2f73cde2 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3683295b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3aa109cf spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5601109d spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x61a25276 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9852fc35 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaa070781 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc62f4098 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd9b08980 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x11589ee4 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xad6d519b uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb8eebb7a uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9afb0251 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfe7a71d3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x69803d9a ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xcc9a42e0 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x022934d9 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x676d264a imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xdb253289 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x07428c6b ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x508ce941 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6ac28ffe ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x852f032c ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa7a642d3 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa7b518d2 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0c5740c2 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1cacdf4e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2a678307 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2b50031a gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3848b409 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3853e75f gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3cc47520 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa85a63f0 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaa463abd gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb06574a9 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb41a6e54 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb8e2f0d7 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd236fa0b gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd49979e5 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf2aaf268 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x73f8b86d gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x8bbc3943 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x33608fae ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x5572c32a ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xe9a21e10 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x028356ce fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x08a2624e fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0f68c500 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2a3d8bcc fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3ae7a8a7 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5553be08 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5b3fb0f9 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x88b473bd fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9341f924 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x963fbc8e fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xad75e070 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb7b72aee fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbf649a93 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc22c022f fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xca88e238 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2ee9e130 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3b399282 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3c244736 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4e89f7a4 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4ebe2ab8 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x57390198 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9f6415fe rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa3fca0fd rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa5ea7a67 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaaa4098e rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xab45203d rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb2af2a37 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc172a3e5 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd5f42aff rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe712ec38 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x05535bc9 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x06d2b625 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x10d6df54 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x24cee899 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x268a9fe1 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x35f99554 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x38342d97 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3c990eac usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4af27d0e usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x501ac84a usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a10beba config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x670c32ea usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68afbaa8 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x69de3a78 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7276ca08 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7798256f usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d2e1864 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7e091df4 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x81bc3b00 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8d4c2762 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0a09321 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8a77a29 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc79f9dcd usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcba98b78 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xda130d68 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe2e413ae usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe4414b3f usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe81e5e27 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf150f29d usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf4664946 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0adbb083 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0c5d5039 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0e31bd1b usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x37dd8681 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x659649cc usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6b4d7048 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6f1c0b1c usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x76df77fa usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x816c610e usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8dd3d696 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd0e32c98 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf421aefd usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfbec4306 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9299c33b ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x93b76127 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x113a6486 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x447238a3 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x71df3ef4 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x76b8114e usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9c7da1ff usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xac8cb87b usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb1d855ee usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdbe157cd usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xeaeae93a usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe9f34779 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x6e789085 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x0cfce2bd usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3f1f567f usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x412ff168 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4e0dce50 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8f22737b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9491f0a8 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x97885570 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9da13376 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa023dbc0 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa0dccb70 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa2475139 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xad97f438 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xae224e0d usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb2009d04 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb397cb01 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc0b7f25c usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe189e7ba usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3703661 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe4c80963 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe54c5672 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe570705e usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeeb4d342 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c18e0e7 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2d84acba usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3231c71b usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x383c8491 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x44d1c81d usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f6ed79b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5deb497f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6084fce4 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8c1949d5 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8cc9cf9d usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9690b956 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa857957d usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa8db5233 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa3c9e2f usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xabc38eee usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xad60eb28 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb96469ac usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb724b95 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc3b7150 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd4053cfb usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xebef0769 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed16e1dc usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf058c7a0 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc83b819 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x05750b46 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0a83e8ab usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0bff60dc usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0d00bb9f usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6028df5a dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6f68df7d usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9c8bb168 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb8d580c8 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc76adade usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xca7aecb5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfc4ce06c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xffd1a2f8 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3d80dcc1 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4f96a8fe wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9d45ffc1 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xbe719020 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe340cac7 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf9d10dfa wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfc5ce717 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x08a75296 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0fceb28b wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1ced84f1 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4cc2b0e0 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x55f32461 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x632753f0 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa579d651 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa5a00aaf wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaa46e703 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc0cfbfa5 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc2eba8d2 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc49133f0 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb4289ea wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe9c38b8e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8de8ed0d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbd084a58 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdd40247a i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x01c3536f umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1086f708 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x22298583 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5622b9ea umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6ff7d828 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa4fc7555 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xcbae80f5 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf15a13fc __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07ccca87 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x093a6ec5 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x116f88ff __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x11f634a6 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x181882c6 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1c194cf0 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1eba568e uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x291253c0 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x291df012 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x41e4de8f uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x422dbc8e uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x502ba99d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53fbdc51 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x594dbe34 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5984e3d4 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6716ea7e uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x68adabd5 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x74685f6e uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x75ae1828 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x792c7269 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f7d2a5f uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87448443 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8998bfe7 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e22846d uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x971463c8 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c2dad51 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f0738e4 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f90d573 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa4128d12 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeea110d uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf23e81c uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0bee496 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce7d094b uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xda9392da uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf3b49d8 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf31bf340 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xffc5d911 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x55794d79 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x067a72fe vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0b498913 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ea13b0b vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0fa2cd01 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x162a6824 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1cf51acc vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x33c675bd vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ca6cb78 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63b47dde vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6dc989f4 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x841ddce8 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x84bb1e92 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x864d83f9 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8805838c vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8fc58280 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2d10cde vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbd464721 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7ed21c4 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcaa39bfa vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcd2228fb vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcd4a9660 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd09279c9 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd370e667 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd583262b vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7019281 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xebc623a2 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xee506d77 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf0297e77 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2d96090 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x08f17223 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4b614c38 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8044be4b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xaf6f22e5 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf3238570 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4508684d auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x50f40e51 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x50fb2177 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x79d0d0c1 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7b511846 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa30deaf2 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc96b20bb auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xeb06beb8 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xfeefb2b0 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xff788e98 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x7afea5f0 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x874aca84 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xbec67f6e sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x15f710e0 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x28eaab0f w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3d81f01e w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x609985b4 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa6230e16 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc1c768a3 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc6347814 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xef339415 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf7e76aaf w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x995f8c88 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9dc725f9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xe61e156b dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2e116c90 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4178ce05 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x58ed4679 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7b267fab nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa9c8798a lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc253028b nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc861a58c nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00156921 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x027677ab nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03910d3b nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04072fee nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x056f49c8 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cb96a44 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d065d90 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ea20f3b nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fac7312 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x104f82f4 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10db799b nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x149e5e0e nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fbf177e nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x222c2b0c nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25a6c828 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2686c794 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x294d847a nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c557cf7 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f2b1091 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3049153c nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32806d5c nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x335ca759 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35cad35c unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x375934c5 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38f21a16 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ae3a1ec nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bcf8ddb nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3df928cd nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40ea50b0 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40f2375d nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42a07cba nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46209587 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46bc985b nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47812f1b nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48391db7 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb8139c alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51f8ab29 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x579947e7 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58f6d455 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59c47552 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59f549a6 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f704d37 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6364bdd3 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64dead65 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f79186 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bfcecd6 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f420b91 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x760f2cc3 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x782adb2e nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78af021a nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x795db35e nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e5c8f1f nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7eb68252 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x834b90b8 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8381c605 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x838462b0 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83c06b1e nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87ef4814 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x894071c5 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cd9df83 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dc876d4 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a72d66 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94435776 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98a4664e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a3ee1bb nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ae7a0f8 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b6bf5be nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dd6d6a4 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ecc0957 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eff2b50 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0eb2e9e nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0f686f2 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa13490fd nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa59131d8 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa61b7ace nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa802bc0a nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafc8154 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab84c1f5 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaba2c2cf nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac393d74 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacde560a nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad03043a nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xada12ee3 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb107c136 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3ad6642 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6d88cf8 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7b7dbff nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7f7ad06 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb853813f nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9cabdfb nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9debc6c nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbade1ff9 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc2b6fd5 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd2765e2 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc35a3d4d nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc53e3c57 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5dac1e5 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6ba8b5f nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7485b62 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc78c1560 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xceec512b nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd091c4c3 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1ac673c nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4942f1e nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd81bf2f4 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3866fb nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd1c9421 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5c07130 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe99ebb46 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea672b70 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb28bb38 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb7ef854 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebba8d2d nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec51e703 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1d3bc57 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2eb99f1 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf33efb5c nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf57b62e7 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8457114 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf89c3359 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfcec4c23 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe2c295c nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffcbfd28 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xbca88063 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0726f163 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d5d7416 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1228a8bd pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x136abe13 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x13c1a351 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x13edfe42 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x14a19ba9 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c9c6af4 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2426d2af nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c795a31 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d7ac96f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d9645cc pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31c2db5b pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3469ec73 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39d72207 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3edd89ca pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f98d9f4 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x437b57dc pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x548d03b0 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5bbcfee4 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c112a0b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60699a14 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6676293d nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b03ba0b _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b2fdc67 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6be4e4f7 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d6d75f3 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e212b6f nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x717da763 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7afd4f51 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x832dffdf nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x85e27aaa pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x916872a5 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a657c06 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa11f01e4 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa21fafc6 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4135b6e nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa490f0e0 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaab23e45 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabcb0ca8 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafc9b3de pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc0a8eac nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcb994cf pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc377c878 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc445772f pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc57a948d pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca0332b1 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd09a8672 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd35f1ec1 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd62b918d nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7bf4d23 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7c0c7d1 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9c19a24 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb9b026b nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5f32656 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef64f75d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf37adde7 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff7622da pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x281b203c locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x7e8b916d opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xa704820f locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3ebe459f nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x931c617d nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x05e1491c o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1e32208b o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x258388c9 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5ee74d93 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8e478d35 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xaa335ff5 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1e12d4e o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x11676b37 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2f763d80 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x95cf5654 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x97af41e9 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd0f5ab94 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xddf88bb5 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x361eb221 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8c3cf65e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc41b95a8 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x15e6b168 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3926cb85 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xbadad274 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x43540dec notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xce79913c notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x2fe1aea1 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x93f15eb5 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x202980f7 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x4b03df27 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x785367b9 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xb32f6b2b garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xc17e8fb8 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xfbad9e6c garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x07f48da8 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x628175b6 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9f36d141 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xd587c034 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd5b4cf5a mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xf29cca1a mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x6c1e7171 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x721ce841 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x970492d7 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd1ab41d4 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x105cdbf6 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x080f036c bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x29149a12 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x30375a24 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x83fc75bd l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x91f9f6bb l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x93c01007 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa01c481d l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xaa25f25a l2cap_chan_create +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x02ee947e br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x63615163 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8079e8b1 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8705efc6 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9ab2e06e br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa967cd87 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbeeff6c5 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfc6c44bb br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x0db95d29 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xe2935582 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x088b5791 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b146dff dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10371fd8 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x17ef22e1 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21321fea dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x347a98a1 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c310066 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c75daf4 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40adf4a0 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4aaad4be dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55d86fbc dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59650f0e dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x618cd1d3 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x66e17c40 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d14bcbf dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74c1ae16 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8164942b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x85f0e692 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x883317a4 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89d037b3 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9822b4e3 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa3fdf9f0 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xad2f040f dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb3725a93 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb4537a1 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3e2ba40 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce56fb5c inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf8b1de4 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe05bca3f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1bcfc44 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5f560b2 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb6358da dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf687f6a7 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf6daa503 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x024ec634 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x54de6ce4 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x64d4e9a8 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8fb40182 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa15f18a7 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf7894a39 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x25783f9d ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x34ca1c07 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xb4f7c1fb ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfbfe0780 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/gre 0x79bcf95a gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x937a5082 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5a55149a inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x78594b02 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8bc05d6b inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa2fdc74e inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xac6ab8ef inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe6aa7c0f inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x56625199 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1e15af73 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2274f4b9 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x35797a5d ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3d0fac90 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d13bcc3 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5dab34d2 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x655be7f0 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x674f0c89 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x82407833 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbb9feb74 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc6576a39 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc9c106e6 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xea773429 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xffdb70f4 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x39e62c94 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x0fd40881 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x1deb6775 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x843f0c30 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x98511e3d nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa0658935 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa4dda904 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc6478eab nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xe2ca30a6 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0209959f nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb04f85fc nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xcfd64308 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe8b5fe2a nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xef7e46cd nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x247c08f8 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x107f9740 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x166d2c77 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x27cc21ef tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5faba1f1 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9e39e562 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0ee6e4ae setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x38b012dc udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7bc99f83 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9baa7146 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0421f0fe ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x23277105 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7fc5bc6d ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8c7e8c5f ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb9556bd4 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc7eb5354 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe4d0a044 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x64882afe udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xe6d69a33 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x12b024df ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xca51d34e nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xe0961762 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x6771b2cf nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x5d00d59f nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x86ad7f9d nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbdcee4b8 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xeb1ad2cb nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xed934ed2 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x9f46be21 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x26846424 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7fa439c1 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd5f82aae nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xdc293ff6 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf43b0403 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xbe7b6749 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x02bb27c0 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1311724c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x27917af6 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x597ad1dc l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x61ffd40c l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x62d97f01 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x631713d3 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x771e5290 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x84227024 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8457888f l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x913c15f8 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa5722572 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbf19a4d l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe113cb20 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe466341e l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfbf693d8 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x001c2f26 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x16f0d2df ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3532a33a ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3986cd44 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e0253d4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5b294acc ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x76d09265 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x996d3246 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9ba5cc02 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb1c9e144 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5308e75 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5aac44c ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd7e67543 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe453afca wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfd9086d3 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfe3dbf25 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x17608348 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xa29db2dd mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xce55227c mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf90933ff nla_put_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0577b1cd ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x319e53fd ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x443ce3a4 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x60a10fcf ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6486cf9e ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x738b7909 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x763f1204 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8ddb7754 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xab702097 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbbbc94dc ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbd18c6d5 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3c305ba ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc74d5d2e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc7b6cb2d ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xec63983d ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xed7106bb ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1d3e83d8 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x761ea582 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8075435f unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc954fb75 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x019d5057 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0606b2bc __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x083b279b nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0afdb25d nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b3294f6 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d6e2967 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x105bd0e9 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10c42c11 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x180fe8a5 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a3ae055 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c6441be nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dabc59b nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e60aca5 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26f60a3b nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x280458d4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ecd230a nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f0a8a18 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3115c490 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x347d0eee nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3638a843 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36f60d45 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38347685 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3904f674 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ce2dad3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e8428e2 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x456a517f nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49881d22 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a6ad527 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b0ca95d nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51e4b613 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x523f3127 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5703b5ce nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cf1b934 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x622a9801 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63d2d491 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69c72cb3 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6aa23d65 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d594364 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73eaeca3 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74ca4299 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f8ae1b0 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x828c894c nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8847060a nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b2c1dc3 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ef6851f nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x901109e4 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9032b540 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91fc84af nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94340aef nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97ec1073 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a979d35 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9aa1768e nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f071699 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa22146fd __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa60b85ca nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa74fb254 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf8731dc __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1230cc3 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb677e2b5 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9c6dddd nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbadd3a9a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc13e4853 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc224963a nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3d3e6e1 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7d37c62 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf43550f nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd33bb585 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd617b662 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc87418d nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4d07262 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7ef6a5d nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb97a7ef nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebdf26ba nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee93e127 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1dd6bc3 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf75595f7 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8b48869 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb5a26d3 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9665047a nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xfd295b1c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x423cd77a nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x098ec2f7 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x20546e80 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x49f45f88 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4c5ffca1 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x99ddf418 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9e8b8e94 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd02950f5 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd62b33b7 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdb0e4c4f set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf430f658 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xbf18960b nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x26b013e2 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6de8e3d6 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x79ccb0d8 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x92fca118 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb52e8270 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd2d3a683 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x035c723e ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0673b557 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x14c9a8db ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x46c0843f nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x68e1f721 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a0c59f5 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xba39e69f ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x09a735c6 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xd76cc8a7 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4fb35661 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x56390da1 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8f094585 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf4867e1d nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1e723f78 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x245b3115 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5a7fde7f nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5b6b3e00 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x98bc74d0 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc80182b5 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd011b7da nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe57f7ae6 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf14d7e06 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x06086f5f nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x566f800f nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x61105636 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb7ab962e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0a453981 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1333bb35 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2340878f nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x35c2684e nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x51a275d9 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6fe9761b nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x709baa46 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9331aba6 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa88a3808 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xabcc72ce nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbb8a5017 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xca3bc533 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdb8450f3 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe498b929 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed86f7b8 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xee15186a nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xefd97b32 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0b4a0070 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x16b7caba nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x16c5535d nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4e996ba2 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x955f6955 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9be16a53 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe515bbeb nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x22ec16ff nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x2e62ade5 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9611cec5 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x072eb0b1 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xa1423d05 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xb44e7a23 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xd37f1a95 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x37a9d81c nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6ad33120 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x96d45a43 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9d21d997 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc4a688ba nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc8f47d11 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x331f33a3 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x36dc2949 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x7301580c nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x57358f8c nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xffa8b66d nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0d698387 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1866e393 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ad67a8c xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1e0fe983 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1f015ad3 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x21ea4beb xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3aa56ae7 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4b9a2523 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5858f1b5 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b71afb6 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6bf4665c xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9502aea1 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99953125 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc0ab5e2c xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc190bb1f xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcc260916 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe558755f xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe632ab20 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfc46c158 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x2c6dc4dc nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x63eeb540 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xf1d319a8 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x253ee931 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9ed22e36 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xb3dd57e1 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2d90f1e5 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x315a9519 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x39237fdc ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5a34b7f5 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5db3f9aa ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x65fb99ad ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8cd19e1c ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa3f7d03f ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbc3afdbb __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x1753f334 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x193f7cf1 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x1da4383b rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x293f9b5f rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x29535bd1 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2dc80932 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x320948be rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x3382e7ef rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x3446f605 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x37d9881a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x407616d6 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x41718cc3 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4222d9ba rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x530358f3 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x5e05983e rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x601213f7 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x68d5b2ff rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x80989ad7 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9c79e848 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x9d581e2e rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xa56f2350 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc05f98b4 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xec85c27b rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x26966426 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x27a0b853 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0e136fc3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa20b6c1c gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xdea43f4a gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01049f03 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01b00221 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ca2cd3 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0211a88a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x057ac2a2 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07b84241 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x099e2307 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09c62952 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a2ff170 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d05a6ca rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f031790 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10f6ee5d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1238b104 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x145325d3 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14f3fa88 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1547fa93 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15df1451 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1714ebb3 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1876eaea rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x203282c0 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20784947 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2110d49e rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x223e1251 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22d33c08 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22ef63fc xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25fa2283 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25fdeb79 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26cacfdc xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x271d388a svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x279b7c66 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x281768b7 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x297a553b sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d336593 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3016dfd2 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30388f7b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31c6d80c rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b0c644 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333a794e xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3508da86 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x350bf1e2 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x353eed95 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35b2f741 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35db9d17 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36daf9b7 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x384a70e6 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3866a9d3 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a9a1c9 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3980637e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a7a365f xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a849d6e xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e854354 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x400d3882 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x413f5c10 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44f0bd6b xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b1f617d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bf1d5c4 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4db76903 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ecc4f5a xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f610a82 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50e19438 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x518dda55 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53431c94 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53e6c367 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53f858c0 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54fe856f unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5799ad0e rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58eabdde rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59826809 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a793df8 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bd57523 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ca3094d rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cd668f0 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5da8d796 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60676399 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b868ca rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62795798 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62d9d152 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6301c4e9 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x634b0304 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6772619d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x689cb661 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6abdef3e rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cfa2dd9 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e728ce8 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f82ebc5 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7428243f rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x746be728 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x747d513c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7520093b cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x776edf5a cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a0f80d6 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7af411e8 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec7ebcf svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7efcb61b rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fd4f461 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x803bc167 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x803dceab xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x823c985e xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82ff33af cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87237542 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8835dd0d sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88658a0c sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a4d7714 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cf865e6 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d8e7186 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e52cd59 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f05252f svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f38d991 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fb68b4d rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90171013 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x912b68f6 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91f21f5f rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93675711 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x998b4112 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99a43510 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ae04917 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bd00e40 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c56808a csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d6dce08 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dab0f12 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e699b8d cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f43fa50 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1f5ec2f svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa330e8b1 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3444e5a cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa525d236 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7b56717 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa856cc88 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e0b6d3 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa26e48d rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa76d573 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf3a5cf2 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb014142c rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0b88615 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0f8244e xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb145a1c2 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb157858e svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb29bb191 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb30f6e51 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb34b9bb1 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb523f5ab cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7bc5ab4 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8b16f8f rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbb32cab rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd00f751 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd8c959c rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe22d8e3 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe918ee6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc142ccb8 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1af8289 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1c4635c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc288b75b sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc37bab44 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5f058d0 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8120461 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e26354 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9e6aa4b rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb62e275 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbe70f2e rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd8fc275 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd1e2b7 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce508f2a gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcedf28eb rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcefc0465 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf32dc32 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfb31186 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd04183ec xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd05381f8 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd34489d5 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5ab7df7 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb044de rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0a2b2ac svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1558843 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe20de257 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4bd4f08 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe679646c xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6e26993 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec62e929 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee0ef8f5 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf069ee03 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1773507 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2bb0aa7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2bc9a10 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2f5fd8c rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf44706a8 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5d8b560 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5f1e54f bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7e1bc67 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf89ce678 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbed27bb svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff6b6564 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff8a7913 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa0c306 rpc_create_xprt +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0bb2581d vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0ddc7c9d __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x24ae564c vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x27f8de28 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2f4bbeb7 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5f0de956 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61d0cc92 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x865d9da9 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9a8a925e vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4a57b50 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd58ffae5 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe398cb74 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfe50e080 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x09de3736 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0bad4714 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x22211875 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2a3b2cd5 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3784d261 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x435261b0 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x58342502 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x907672b2 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb3a527b2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb4d81ae1 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xba8d4daf wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf06ae559 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xff352030 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x11ad98b6 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3e412ac8 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6ca8ac5c cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x82ce0020 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x833a2e90 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x86e06bb4 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe74992b3 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe9b8705c cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf04cb371 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf23fa14e cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf3f5e11c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf5d39872 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfe69eb18 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1440305e ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7281d131 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd7fd17c4 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe60731b6 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/ac97_bus 0x45a4ee00 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x0bd377ce snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x579fc106 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x1190bfa4 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x4b413033 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x581b72c8 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x7f7249e7 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xaf5c04fd snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xcf634873 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xd6d5cc15 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04f380cd snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x45d6b955 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8eddebcd snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x923dccc4 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa17eacb7 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb019e2dc snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc4def843 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xeb94253a snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf719cabe snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x08222a1e snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2c521d4a snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4d52a923 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x520cb394 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x58a9f2c8 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6d3900bb snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9665b07a snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9c01eb4a snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9f1e5572 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbd4c093a snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbe8d5d4c snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x0673fb93 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x32645130 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x52b2300b amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5eda4ca0 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8eb01a04 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb0332c69 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe4f8ea90 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x00bc2006 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x028aefb9 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x04aec86f snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x07a62618 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08658566 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0af0f6b2 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d8838d2 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x115386dd snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1497e9ad snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1520e289 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ed9e35f snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23c06e96 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x299af836 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a2029c8 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b7d4905 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31c8938f snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3566877c _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3618a6e4 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x39a7f57a snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c80b181 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43d76e07 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4fe08219 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x51f5a5fb snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x580a4dd1 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c5b9690 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5cd8b4e9 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6157f474 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x646c1eec snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6d68d8c9 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ddaa2b9 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7013fae8 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7038f53c snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x71daf696 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ad12f11 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x83f03214 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x875b7106 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87c4d6f5 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92d0a04a snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x948aea48 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a1a20f3 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9acfd6f8 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d71ef5e snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9dbc6c8c snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1dccdec snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa5f2235d snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad543cf7 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2a2684c snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb9c813af snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe5f241e snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe916262 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2abef0d snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc6da8f8c snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca57b5d4 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca8bba1c snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd2c9ac42 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd66ca920 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd86acce3 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd91c1c8d snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xddfd4816 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde49091e snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea791607 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeef65273 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4716459 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5a2420c snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5dc493e snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf670888b snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa615df3 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa8a86c8 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb310092 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc7e3a3d snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfcbaf5cc snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x09e21083 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x108a07bb snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x43257c8c snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8687b7b8 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x92a379b5 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9d0d0c9e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02a83c11 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03e8dbdc snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04264c8c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05f648d0 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0986b9cf snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c10c05e is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c346a7f snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e19b5a2 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ea69ac7 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1219de25 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12f8044d query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15bc14dd __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16c26437 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b1693cf snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ba2b2ed snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c9485e1 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cc1531a snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cd31ade snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e1e193b azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f0985fd snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f869236 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x229bceb7 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2513747c snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x255196eb azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26209e6c snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a0e51d3 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c3bb91f snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e17fbea snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff354eb snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3344ccb3 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3392bb7b snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34891c29 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x368643c1 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3702b652 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x376fb599 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37d47717 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a1dcf5b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a9525af snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b05c7c4 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c64f070 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cd07fda snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3de253a9 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x420ace8e snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42ca811b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x435e5dc3 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44dc2720 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45adfedd snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45b8cb1f azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45f1e402 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ac5651d snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b02d637 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b2ab545 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d51d25d snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d53a9ee __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ddb7c48 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e935aee snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ee49001 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5073c073 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x532528f4 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x536b49dd snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5431655a snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5445b249 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x574e711e snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d81607a azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5df4d9f2 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f8f22f1 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5feedebd snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6537441e snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67bf6b7b snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68057426 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x690218cb snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69c5f1a6 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70731279 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x713b5ac3 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72dc5dac azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73f5f860 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76e0994e snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x782b0fd9 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bee490a snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f12d9d1 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fd377c6 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82b48cf8 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90829d20 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x915ac912 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97281b49 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x995debd1 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a1c2035 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a3e44df __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b2407df snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cc3cdc2 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2fbdc22 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa324e7eb snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3f4aee9 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa47cf642 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa89f5e3e snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa5f1290 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabd68e5d snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadcc1758 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaea92708 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8c7b277 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8d10cc1 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc026b19f snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc559d979 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc15bb0b snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccc77974 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcde591c4 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2801e86 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8558f5b snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd09c314 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfbd0177 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfedfb63 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe335b154 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3eedf0e azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3f4eeda snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5c4d1c1 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7c8836e snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d70407 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee0d6c29 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee3676d6 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee61d59c snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1d867c3 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf215330b snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4667317 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc7579e snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1d85fdd4 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1de6e44d snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x20e299c9 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2be46318 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5192bc3b snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6595845a snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x70652fa0 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x874bac9c snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8d43697a snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa893f5e8 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa8eddbf2 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xae0c1cea snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb5492d25 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc004c5f8 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd23ab6ad snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd5618d79 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd8db3d78 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdc1da012 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe1e50182 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeb63bf67 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1286ff2 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa88a1347 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xc20a18ab cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x39c4ac12 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x8e28dd7f cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2890d868 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7dda1d25 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xf1a233a3 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x127959b9 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x9baa7dee es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x58d71a36 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbc0f5d5b pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd3298f58 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xfba0fba1 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x2cb0247f sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3fc08c74 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x520baa49 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6accbdc6 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd2a970c4 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xc8dac7b4 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x09fd4fb2 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x15ea430c ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb868a81b tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xff35ba25 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x05347f65 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x387bd651 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6df52631 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xcaae9a0b wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd7bb342a wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xdb96d830 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x6e193b65 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x2b63bea8 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x616fb22a fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00d64ccb snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03ecbea8 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04eb7a4b snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058a462a snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07392d95 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0961b408 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c9ab77e snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cf5e010 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0df40d48 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f4da867 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10e0db07 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13e1125e snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1533bd24 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1626a05b snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e924d8 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c58719c snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dca1513 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f929c1e snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2147ae25 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21daedfc snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23ca7b3d snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25b25a2d snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2887d767 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a0ba674 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2abd179a soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d9ad534 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x326e5865 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3299d3d2 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33f047e9 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bd933bc snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cb0863f snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40e1ae29 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43c9cdbb snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44b702bd snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45ab0541 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4605333f snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48825f46 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f30fad8 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5113637e dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5222b1a2 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x537c5fc2 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55a238b2 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57940245 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c40fd8d snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dfd6e17 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5facc59c snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63b66cb9 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65838d9b snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x689fd613 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68b9f163 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68cd33e5 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ae6efea snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b68e12e snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cdef48f snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d4d0439 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78601759 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78e3cb18 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a9ab7fd snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c98d2a2 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ce9b099 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e6e4bcb snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fdfea65 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8143ad08 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81ecdeaa snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8214d4c0 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x856b7189 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87f9b607 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x890d86b9 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b03cf16 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c8f5639 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ce4c55d snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d3cd6ea devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e2bbfba snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e8b8712 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eaf8ea0 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f74bf45 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91b7ab29 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95d85cfb devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x961b8198 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96e1258e snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9822d99b snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98d06f89 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99f45421 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bbcaced snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c1acf5a snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d633280 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d921ca4 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e0ceeea snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fdb6f4c snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa89d71d5 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac464be5 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad4472bb snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad477677 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad48c30e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf0382b2 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf1f2b69 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb02e4d76 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0cdf37e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb15abd57 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4c9a904 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb67268d6 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6f03d69 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb775f79a snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb883954a snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd08195a snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc189167d snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc24ece70 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3756375 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3ffc315 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc733dd91 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc893097d snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90ddd5d snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc665f91 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce7548ea snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf14dd03 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd035c5eb dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd05f53a4 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2537cb0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2c6c99d snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6092181 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7ceae81 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda0e7998 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb5639f1 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0ca3a8 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe499acf9 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4eb0734 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6ead9d5 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe944201e snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe94eebc7 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea673699 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb4c4d68 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed011c73 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed03ff55 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed602348 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef024b58 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef2d8491 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf043a1c3 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf15627ed snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf294d5d8 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf30a8695 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf65004af devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6ce2c4d snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9cfc717 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb265e61 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc5ffe8e snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcb95360 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x12407a82 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x258803ea line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x56c4a2e6 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6a9047f7 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7543e825 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7ee6c669 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9522594e line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9aba99af line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa309a187 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb7dd2c9e line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb8782d4a line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbce8f486 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc1d99fa6 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdd03739c line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe4aa9895 line6_read_data +EXPORT_SYMBOL_GPL vmlinux 0x001ab06f skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x0051c59c bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x0052aab2 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0084cbfb rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b18bd0 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x00e155bf get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x00e53709 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x00eafa2c devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ec436f devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0114f4e3 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0121f0c1 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x01628848 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x01a2b2f4 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x01a43a6b of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fd3243 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x021102a4 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0232079a of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x02385414 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0255c68f irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x025e7fd5 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x0270bad1 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x02796ffb stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x02876f6f mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x028ed136 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x02a75c7b wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x02b155ba register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x02bd7c0f dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x02e1895e kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x02f7d54f crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x02fc66dc fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0304c16f preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x0337d94e nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033a29a2 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034ab372 component_del +EXPORT_SYMBOL_GPL vmlinux 0x034b5c12 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0352f0b9 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x0360134c blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x0372818b cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x0384cd2e tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x03864b46 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x038aeb63 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e71343 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x03e79c5c xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x03f28fb2 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04067ba5 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x0430ca6b sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x043e540e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x04476cac call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x0460a9e9 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0471286a virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x0477b164 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x047ca558 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x048053a5 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048d037f dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04b7759f rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x04b96322 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04f558ae syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x051b7300 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0524408d tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x0526d932 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x05361b6b power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x054018f0 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0549f78d dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x054aee5c blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0550c0dd usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x0553be52 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x05721393 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a4650a device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x05bf262a usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x05ccbf3d da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x05cce57f rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x05f03af5 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x05fde05e __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063924b3 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067ebaa7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x068c2433 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x068ebbee usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x06b8edfe da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x06cf1dd5 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x06d16cca __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x06d64ecd blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x06df0e13 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x074287d8 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x074593d4 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x0752dddd extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077a4a39 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x077ab5cd cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x077ae2f6 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x077dbf65 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x078db662 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x0794b5e2 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x079e03cd irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cc0d7d gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x07d44835 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x08009232 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x080d1c50 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08617199 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x086aa6fb pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x086cb1c9 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a0e298 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x08aa7b3f fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x08b4884d debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x08b9c5e9 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08c2d72c extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08fc3c44 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0944c367 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x094ae196 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09715915 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x097474ce swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x0974a6bb crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x09a696d8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x09affcab da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x09b8eff2 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09ec6567 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x09f4f2ed skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x0a100a2f pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x0a1550d9 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a6540a6 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x0a6d0614 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x0aadddfb power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x0ac61932 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ad787ec pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0ae15fdb platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x0af6d1a5 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b07d9d6 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b16548e transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x0b1bf404 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x0b3ba69e ping_close +EXPORT_SYMBOL_GPL vmlinux 0x0b9ea6ad ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0bb75051 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0bb83d3a devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c00346a tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0c8c68 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c8d2e14 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x0ca0b1f5 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x0ca69598 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x0ca70d02 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x0cbc7167 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccbe603 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x0ce8be0a xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x0cf03859 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x0d058a8f regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7b1710 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0db5bc25 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e051871 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x0e05899d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0e06d9e3 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0e5667e1 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0e5a98ca kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x0e7001da component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x0e83d1bc rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ebd0d8e cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0f0740f0 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x0f1a37c1 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0f1de612 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f33c08e usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x0f3e3751 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x0f40d021 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0f554b3f __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f5661ed clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x0f649a32 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0f6c6a3b rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f9fb3f5 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x0fdcc438 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x0fe329f4 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x0fff8a62 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1000d5ad page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1030da3d posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x10397a70 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x10564357 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x107bce9c irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x10905eae clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x10969702 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1097a216 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x10cf8fda of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x10dcace4 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x115d094c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x1166b16b pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x1171cf6f skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1176fada fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x117c6d5f pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x118e0bbe usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x11ab0c1c ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x11addb3c xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x11ae43f0 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x11b370d7 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x11b51caa page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x11c0c088 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x11cb8d6e __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x11e252d3 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1235d6a5 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x1240ad0c pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12615854 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x129025ee xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x12ab5163 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x12ace678 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x12d16883 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x12e37f1d gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x12e3f720 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x12ec5080 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132112f5 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x132bb972 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x13498426 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x136c01e9 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13939c04 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x139ef7cb ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x13a4f2e0 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13be16d0 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x13c0b03f __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d2024f ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x14033467 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x140ab146 dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x1427bf7c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x144faaab unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x1466b9fd adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x147f6976 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x14ba45fd kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x14e95264 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x151885d3 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x1519ffb1 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x1522be9c regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x153b770b __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x154b6630 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x1586869d user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159caa40 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15de43ae led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16118344 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x1617f5b5 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x162b0b48 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x1637d0fa devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16530c3c reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x16532709 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x16612f42 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x16689b9f pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1671f674 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x16819cee devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x16848145 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x16879618 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x16aa5849 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x16ade685 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x16bbb99c nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x16bd49fa regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x16be27fc disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x16c89489 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x16e320fa devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x17250233 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1746ff0b devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x174f383b blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x1761fabb pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177f4319 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1784bfbd tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x178de5ee system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x17b2124d regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x17c171c3 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x17d4a9a6 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x17d944e5 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1815f492 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1854ca9b ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x1859adad sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870c16a rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187d0d06 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1891de06 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x18973849 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x18a2d990 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x18ae9efd ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x18e806a2 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x18fa5efc dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1944de06 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19689370 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19be30dc thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x19dfbc7c dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x19e6dad3 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a05071b device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1a0aab68 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a1e1719 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x1a2ac916 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1a61c9bb devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a652c93 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x1a6d2a9c tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1a6ff828 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a823436 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x1a8abc05 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa1b210 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x1ac48138 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad92a95 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x1aefb873 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1b165c1b rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1b32f10a dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x1b5c9390 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x1b74c121 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x1b7ee3eb usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x1b87a8fd mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x1b952b78 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bbaaba8 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x1bf16644 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x1bf7cd51 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x1bfc29aa thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x1c052897 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1c0d685b register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1c0e1bf0 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c3676b2 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c75a9e9 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca2f558 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x1cb1544c debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x1cb2c7a8 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cfaa1c3 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d3636a8 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d4460f2 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x1d565e96 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5e7b44 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1d669d00 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d796c05 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d979242 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x1df02449 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e30be76 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1e36d84e watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1e422293 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1e441130 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x1e4fdd59 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6d91d6 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x1e700391 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e7b0a1c of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7c8bcc usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x1e99e7b2 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x1eb63d7f aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ebf77e0 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1ede8171 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x1ef20632 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1ef3d306 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x1ef3ea11 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x1f1713c2 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x1f21d270 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x1f2fd2c1 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f396e41 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x1f5f2a4f cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb2d782 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x1fbb6ba4 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x1fe7d120 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x1ff8b0a4 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1ffae267 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x201ec0ea class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2021232d blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x2048a739 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2064c24e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x20883851 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x20a6268c pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20bebe6a reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x20d8fffb vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20ffd410 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x2107a879 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x21155f8c blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x2132c9a5 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x214c70de ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2159e353 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x21676e5f iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x216ea18b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x217cfcff splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x219d6366 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x219ddbb2 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d63dc0 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x21e3a1cc usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x21e9a0aa ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x21fad6e5 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x2202e551 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x2239c67c pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x224a0a99 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x2280f605 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x229494b3 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22ba98d6 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x22cef5f7 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x22d6ea2f ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x2315a82c clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x23174ab6 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x232dba65 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x237eb150 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239753ce device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x239c219f led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x23ad04f1 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x23df5a7b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x240034c2 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24028db0 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x24070f4f spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x2420e3f6 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2426ee11 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x242e54f8 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2437e367 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x24382918 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x243a698a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x246e5c5c irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2472e902 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248e7ae5 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b8ecb2 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x24ea631f inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24fea66c regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x250d12f1 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x250f6dc2 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253e070d __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x257cb415 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x25b44ab9 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x25b7ac49 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x260ec510 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x261cdb4d perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x26288b87 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26467d45 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x267610cd wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x2681c31b kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d3e43a agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x26e79cbb inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x271b832f kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x271d9855 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x2727ff77 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x27652cb3 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2773686a regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x2787049f thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x27a12961 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x27b90002 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27dd5088 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x27e768a4 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28250713 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2842fa98 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x284f151e blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x2852df1c regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x28786507 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x28799b2e ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x2892967d tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x289de744 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x28b1c02f fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x28c2afd9 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x28c4d03b of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x28c63932 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x28ed83c5 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x2903cacf evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x297b6c29 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x29933b53 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x29c4a20b virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x29f2cedd regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x29f74f59 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x2a17cb80 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2a3e7a54 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2a4a4f90 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2a616436 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2a7326d5 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x2a85049e of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2a8e3cca pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x2a911c11 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2ab2dba3 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2abc6138 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x2adac492 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2afe54ea ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x2b0e5d55 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x2b1a2d5d mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x2b1db21c debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b2b8499 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2b4f85c7 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x2b527338 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b600219 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x2b65bdd7 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2b71fa78 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2b7d7d3b usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x2b84bd7e cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9878ca tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x2ba7c745 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bc35c67 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2bc6b89c usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x2bc80ffd ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c103c45 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2c15ec51 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c444bf1 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x2c595330 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x2c5d4e46 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca9a3b3 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2cb6f392 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2cbd6993 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0a8a00 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x2d11e3fa __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d413df6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5c0760 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x2d5c1778 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x2d676e43 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x2d6b84f2 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x2d6cc6b4 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x2d759388 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x2d860124 of_css +EXPORT_SYMBOL_GPL vmlinux 0x2d9f0e8e regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x2dbbf7f6 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dcf3a18 get_device +EXPORT_SYMBOL_GPL vmlinux 0x2def8f14 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e23cc3b mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x2e2ae6dd wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e32d5ac of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x2e4331af tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x2e520e4a clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x2e5f06cb tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x2e5f42d9 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x2e63b8da regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x2e8a2b4e __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x2e8c8a62 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x2e8d7916 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x2eaafd6b kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec53d99 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ec5d930 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x2ec8e3b7 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2f04485a inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2abd98 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4eb0d4 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x2f628182 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f684c72 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x2f75c0bb clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x2f7e58d9 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x2f8fd3d0 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2f92cf78 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2fa8bcfd xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x2fc98117 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3064e164 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x306e0c1c phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x307b3acb inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x307c1d21 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x309953a5 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x309e4e19 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x30b45a9e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x30bd9c99 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3122a0ee __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3149755a debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x3162bce7 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x31751d7c usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x31a50220 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x31aa4c2b device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x31b01695 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31dd8879 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x3202e746 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x321224e9 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x32130933 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x321a1f2f pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x32322f3f spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x3257a422 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x3258face vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32b2796c crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c72058 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x32ce837d dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x32dbeb61 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x32fb82fb trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x3317638b usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x331a1388 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x331b0929 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x33346fa7 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x333eb952 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x3341502c device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x334e1803 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335ec180 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336d1da6 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x336dcff6 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x337bfdc9 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x337d903e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x338315a0 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x338f2787 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x33b992a9 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x33d3a0d4 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x33d54f72 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x3410e338 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x34140682 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x341756fd dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x342d8ce5 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x344bb688 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x345860d2 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349525a0 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x349f1eb5 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34b1dbc0 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x34cb8364 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x34d0a57a sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x34de9009 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x34eca3d8 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x34f4433a pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x34fe0fbb platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352ac715 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x352fafc4 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x3536927b inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x357579bf pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x358b501c device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x359ba913 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x360b60f7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36320331 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x363c9660 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x364ef789 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x365c795b of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36b04a0f dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x37165f62 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x371b4ca3 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x37664335 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x376e43dd kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3779bc94 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x37bdb898 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x37c24e54 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x38357dcc bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386dc157 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x3874eba7 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x3886bb37 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x38933ffc wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x389e110d free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x38a39282 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x38b5610f sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x38d31646 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38fb6d3b pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x38fe6996 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x392556b7 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x393874f1 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x393fb7c2 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3943e8c3 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x39443fe5 blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x396a85d6 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x399f5bbe sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x39a2ce75 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x39bf8f80 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d718a4 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f16140 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x39f438eb aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3a0e33d3 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a3db234 divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4af22d ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a52ef86 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a581bc3 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x3a5b225b device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x3a71ee89 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x3a8abe82 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x3a8c3a1e fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0x3a94aa19 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab32010 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x3abd0970 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x3ac04181 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ae06f18 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x3b10b33a __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x3b3a84ef ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3b419152 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x3b4f9b95 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x3b50b3ee fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x3b599d49 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3b5d902c driver_find +EXPORT_SYMBOL_GPL vmlinux 0x3b65d338 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3b9adb7c do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b9e6508 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3bd1eb92 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3bf7119f __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x3bf98f03 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x3c100211 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x3c1b3264 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3c4f81f2 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x3c74a0af kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c8f8107 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cc80e71 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdb6bf2 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x3d2966d3 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3d57a348 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x3d5cf802 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d961239 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x3d977f50 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3db6f0cd crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3dc3a660 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1cec2 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3dfeacc9 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3e00e3dd ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3e01b08e srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3e0f9a7b ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3e1c4a7f kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2d6df3 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x3e460f9e cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e661206 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3eb2a970 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x3eb4c365 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x3ef7c1e0 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x3f1f835e kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x3f35f4e9 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3f575dcc fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x3f5c6c31 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3f9bdb74 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fc5b532 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x401a4b12 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x40271cdd of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x4028c352 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x402a2ca4 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x403cd8ff ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x405c3e4d blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x4064c6c1 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406def2e regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x406fb56c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x4074cbbd of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x407a4bc3 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x40ab78b0 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c0e53a stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f7d644 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x411ef648 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x41374aeb devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x414b2702 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x416fc26d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419c9020 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x41a4250c pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x41c8ee3c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41dc9d8f blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x41eaa1c4 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x41fdff16 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x41ff2ed7 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x4206222f blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x421c3602 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x421da77c irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x423ddaf7 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4283dd84 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x429bbe28 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x42a00d18 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x42ab4ca3 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x42c34f43 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x42e11be6 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x42e6670c __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x42fda261 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4309eaa9 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x431c422f get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x431c6722 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x4329d5dc gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x432be70d tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x43544a2f setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4371d7cf of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x4377f131 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4386894b inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x439ac1a9 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43eb7203 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x43f096c6 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x44030477 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4418c55b devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x442110dd fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x44385b54 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x444fa37b sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x444fdb73 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4459e8b3 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x445a5bbc xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x4480617b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4488881e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x44a99102 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44eed986 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x44f7528f powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x44f9c9af netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45260054 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x452eeb5a vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x4539d03f of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x4544af28 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x456676f6 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4581e814 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45a4098a pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x45a4fcd5 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x45b6eacd rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45e21dcf regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460cc98a ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4612233a swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x46293de3 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465f3ba9 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x465f7f80 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x4668b116 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x4686cf0c gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4696ffa4 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x469bae62 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x46a11728 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x46a5084f blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x46d7266f bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x470a8278 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472cfdb6 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x472e7023 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x47415782 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x4742e07f md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x47566bab sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x476038ef tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x479aa5ce pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x47a19830 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47afbe6e pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x47c570b1 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f0c2af pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x48018839 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x4806f93f devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x482727de extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4864777e spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4883efea clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x4888e56d ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x48d95c45 pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0x490d1666 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49195613 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x491aaeb9 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x49293938 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x4934475f nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x493cd2db of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x493f92ea dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x494c9404 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x495267f6 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x496d6b49 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x496df3b8 find_module +EXPORT_SYMBOL_GPL vmlinux 0x49766997 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4977491f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49aa3b38 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x49ac30a5 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x49acfd4d of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x49d1d472 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a28c033 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4a36a727 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x4a497d09 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a5064e9 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4a5119d1 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x4a7cff37 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x4a8db81d tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x4a8e7dec rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a9f9069 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac914e4 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x4ae32034 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x4ae5d577 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b2284fe rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b39c783 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x4b85e5c2 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x4b89bb5c clk_gpio_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b91fce5 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x4b920e46 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x4b921e97 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4ba0cc69 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x4bb2724e __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x4be6e342 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x4be7cff1 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x4c1914bb hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x4c211ace pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c3af77a pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c66ea48 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c873af1 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x4ca316ce crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x4cd94b34 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x4cdfb052 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x4d359028 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x4d482e58 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x4d49b9dc irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4d4a33c6 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x4d9dc579 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4da63cee serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x4db6ae64 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x4dbbc4c2 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1bddb2 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e8d8fa4 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x4eb291e6 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4ed7b6e4 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x4ee29ab8 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x4eeae306 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f211acc pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4fb549c4 fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0x4fc62cc3 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x4fc87889 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff17bce sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x500e5e55 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x50196d1f component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x501e3e2d regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x50851f92 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50920def fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x50a3c132 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50bc256c usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50eee674 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51348b90 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x51482def cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x514ea1d9 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x516d7376 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x51731510 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x5193670a skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51b6921b clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x51d39875 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x52024ce1 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522bbae0 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523b862d regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5265c3aa list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x528cbc03 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x52924f20 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x52b2e087 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x52ccd788 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x52e45e4e tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x52f5ec1c arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x52fb58aa sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x52fd1e95 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x530b762c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53410f7e fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x534ed423 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53624e9f key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x53937de7 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5396e4b0 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x539f7cde of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x53c213ed bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53c91a5d dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53de4eca virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x53f67708 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5438fad3 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54790776 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54ae9ad4 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x54af22e4 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x54c82f3a usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54ee5ff1 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x54f27442 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x550bc877 device_del +EXPORT_SYMBOL_GPL vmlinux 0x551eddb0 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x552d6051 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5545dbb2 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5552c425 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x555493ab extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x556a0445 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557a2f2d ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x5594ed15 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x55a0f8ba gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x55a1a9a9 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x55ba072c ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x55bd89db regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x55c8e9a4 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x55cca0d1 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55fbbefa od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x5615fa2a is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56403b46 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x564c3c25 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x565ab37c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5666a38b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x56815d40 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569c810b devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x56a38c42 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56b51644 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x56c46bee regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x56c59348 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x56d24512 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d81ad8 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f45685 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x5706ebc5 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5712aff7 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5723db24 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x57667964 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x576e5c25 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b1ef01 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c450ba skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x57c7d6ed devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x58317ee7 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5854e2ac gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x588c0cca dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x589019ff put_device +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5898c78b vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a3f3ae inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x58b0b189 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x58d81ab4 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x58e19966 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x58fae0d5 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5900891c regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x5905acd4 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x590643f8 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x593fa7c6 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x59498fc2 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x59516959 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x5953994a flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x5955573a __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x5995386d mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x59aa8a7a serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x59ab1ab1 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59d3e016 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x59d57113 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x59eab433 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a06ef00 split_page +EXPORT_SYMBOL_GPL vmlinux 0x5a09cc3e irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x5a30cbfa crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x5a3127e1 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5a589cb9 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x5a64b2bf pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5a74497d clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9377fb kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5acb1507 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x5b0128bc nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x5b055f38 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5b28408d platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b331c5c napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x5b572b7f debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x5b59c0e4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5b77409d driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5b8529ae clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5b9935ca spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x5baa5a7c ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c32ab27 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x5c37787f driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c769546 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb89185 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc56c6d tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5ccf2a0b ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5ce4255c devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x5ce79b9e dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5d0b1f84 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d312430 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d51e7c1 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x5d55f564 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x5d5b5750 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x5d5d4d9b blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x5d6dbeff ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x5d723569 kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0x5d8b7d6e smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5daf0bb7 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x5daf6839 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5db65f81 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x5dc40e68 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5df25d07 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5e2034de rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e43bb5a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e539465 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5e555a75 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5e7b40df blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5ea47907 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x5ed2bf97 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5ef63c5a vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5f1440c8 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2c494f usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x5f3a8c69 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x5f9793ca regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x5f9c1f84 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x5fac59b1 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x5fc2e675 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x5fd4d6ff dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x5fe3f390 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x5fe61c24 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x5fe733a3 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x5ff9f5d9 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6026912b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x603f54f0 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6070815b __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x607944a1 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x60834fa8 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60843c52 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60af4be2 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x60b4ca42 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x60c2c13f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x60c42496 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x610e2218 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x612e951e rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x6134ded8 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x616cd5f7 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6182b731 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x6197269c crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x61a78b28 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b7334b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x61dab2fa pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6215cf3a regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622c82b3 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x62371da0 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x6246e622 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x626217ef ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x6265bb2e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x627ee2cb rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x62a4b4af scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62e14fd6 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x630d5ce6 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x632066f4 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x636611a1 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x636bcff8 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x63712982 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6389ab9c ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x63b045f8 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x63b31cbc watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x63b6848f device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x63b7ad57 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x63b97281 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x63d68243 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x63e17b86 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x63f01d9b tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x63fe4511 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64118cc8 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6436a2b3 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x643e0674 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x64515689 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x6458d17b percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x64a0dc64 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x6508494c fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x65102814 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x65104acb wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x65198a3b of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x651c2f73 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x655e2b74 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x655ef54d kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x65715612 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x65733779 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x659c5a2a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65b31837 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c30a26 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65ebbc36 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x65f7fc7f gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x66113fd9 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661ba259 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x662a8ed3 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x662cbb33 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x66398342 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6686095d reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b9db13 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e1128c spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x671d4609 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x67237c1e irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x6726c2a8 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x6735bfdb devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6744f595 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x67483435 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x674848e6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x6792f5f7 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6797c8bf bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x67da299e register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x68151e9f phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x682263a0 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x682d5fac tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x68324665 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x68600d45 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x68720fca dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x68a9c0a3 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68ae2bbb do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x68b122e2 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x68d8584a platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x68dee21e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6901a3c9 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x690863d6 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6911ca6f virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6911d513 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6952750e wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x695504c9 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69854454 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69ce5aad of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x69e37d6d sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6a09d443 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6a299d19 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6348d1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a84e784 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6a88c314 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6ac0ac08 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x6ac4f937 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6ad1fc3d device_register +EXPORT_SYMBOL_GPL vmlinux 0x6ae2253a bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x6afd1173 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b0bdd53 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x6b0f8daa percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x6b1e219a platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3b4502 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6b45f85e vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b6978ad blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x6b6d4d21 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b9fae62 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6bbcd51d ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6bcea27f debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x6be9a5f2 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x6bf2a3f0 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x6bf5c37d netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c049703 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1d1a7c bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c500f7f crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6c52531b clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x6c7466ed debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6ca26f1d rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cac0d54 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x6cae1701 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x6cbe3dc3 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x6cc54fd6 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x6ccbcfcb class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce01334 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x6ce2e80c __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x6cffd5e1 md_run +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d39543c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x6d74237c __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6d76f92f regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x6db4dc11 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x6dc6857b devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6df8113e phy_init +EXPORT_SYMBOL_GPL vmlinux 0x6e03ca3c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e157d97 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x6e24bbf7 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e589e08 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x6e5cb2c7 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e625f9e pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x6e673da7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea682b7 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x6eb2be9f devres_release +EXPORT_SYMBOL_GPL vmlinux 0x6ec105d2 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x6ec40a5e dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6ecb4243 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x6ed1479d device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6eee2e8f pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6f019a9e usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6f068e07 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x6f13a03f gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f4a38b0 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6f60c95b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x6f611163 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f89eae1 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6fb3d747 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff73706 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6ffa8774 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7038eca6 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7046836b regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x704f0aa7 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x7074b8f8 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x707f7a41 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70c2495b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d748b4 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x70da7a7a pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x70fc8a94 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x7104ef8e debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7132a3cd pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x715aab49 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x715ab623 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x71621fe0 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71632478 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71fa13cb skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7205bd3b key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x720e5b7a dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x722205fb kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x722e4d24 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x72470025 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x7252e1fc pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x72601a7d irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72ad0939 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x72bdad2e pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x72df3569 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x72e5d834 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7314cc60 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x731a249f regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x731d9b2f regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7320eae2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x732f3fe2 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x73699fb7 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x73813ca3 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7385f1e4 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x73929894 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a9aa52 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d27f1a blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x73d4103e bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73fc5fcc usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x74127030 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x74234c99 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74852f14 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x7495146d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74be381a __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x74c3a61e tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x74df433f platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x750ad2aa unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75329035 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x7533083c pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x753ffc9d usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x754ff7ed sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x7556746b aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x7596435c virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x7596473b devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x75ee3e95 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7600a5d8 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x760aa1f1 kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x761ae3e1 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x7621c87c tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7638f992 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x76481080 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x765c8b11 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x7676eee0 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7691882e sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x76a4415c clk_register_gpio_mux +EXPORT_SYMBOL_GPL vmlinux 0x76a58320 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x76b5122f dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x76b98f31 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x76bddd37 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x76c513b6 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e54c30 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x77095fa2 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x770fe096 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773f531b driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x77529596 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x777880e2 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x7792a7c4 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x77a623a9 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x77d21798 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x77d2edf6 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x77da84d4 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x7816a5ef __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x782d99b9 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x783af450 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x78481f98 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x7856b100 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x785912f8 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x787b65c8 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x787cfbd1 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78c2de75 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x78d03ea4 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x78d96798 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x79180e74 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7918d35e pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x792f31b8 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x79514859 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x795e7f5c regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x796690de driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79be3085 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a2ea327 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x7a726ac4 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9b77c8 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aba77dc fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x7abb0111 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x7ad10abe regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x7ad4918f inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7af17e76 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x7af84436 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b17b664 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b482a13 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b53c534 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x7b556beb mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b8358c4 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x7b8cd0a0 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bae82e0 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x7bcfec3b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x7bdb3807 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c09df20 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x7c0a6094 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c4d9893 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x7c71c364 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x7c73f338 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x7c85a717 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca6e455 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7caf4dbb netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x7ccefc63 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d289dbe usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d3b0efd phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x7d554269 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7da0d069 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dd0b5dd debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df7614d gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x7e06048c kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e623868 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e68e4fb ref_module +EXPORT_SYMBOL_GPL vmlinux 0x7e6a7213 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x7e72a305 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x7e82ba0d clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea094a6 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ef6d2dc rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f09ee50 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x7f0b524f dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f160b6e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7f337729 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x7f677740 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x7f6ab00c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f84691b single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7f9fe7e8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x7fa97155 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7faf6254 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x7fb64766 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fc432e5 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7fd0da85 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7fdc1425 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x801126a1 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x8014cf57 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x80155379 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x801cc5d3 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x804c0b06 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x804ea02d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x805d43ed cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x80650cb3 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80780cba serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a7b951 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x80b557fb pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81054043 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x811de256 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x81403216 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8153df33 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81bb8208 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x81c12933 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x81f00415 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x81fc5133 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x8206c29b sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x823d688c ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x823e524f led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x828887b3 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d805d0 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x82ee0bc1 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x8315eede cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x832ecd66 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x834cb0a9 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x834fd7dd kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8371183c kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0x837d5555 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x83869d00 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a1030e pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x83d07981 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x84021002 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x84276a4e device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x842fc818 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x84363736 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x84551d60 device_move +EXPORT_SYMBOL_GPL vmlinux 0x84744fce gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848edb24 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x84939320 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84b4c28c regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x84dab964 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x84faca76 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850ef11d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x85102863 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8561a86a crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x85760577 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x857e8737 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x85a19a71 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x85c14f57 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x85c52291 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x85c5cc04 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86189557 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x861d2b88 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x86454ebd rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x864c53a6 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x866fabe6 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867df36c metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86fe220c mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x876a154e fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0x877f803b user_update +EXPORT_SYMBOL_GPL vmlinux 0x87999df4 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x87a84b08 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x87e7cd25 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x87f10e07 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x87f5901b con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x8801409a crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88321241 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x883dc1c2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x886d15f3 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x88a87fa8 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4e6f5 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88f39d82 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x894dc4d6 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x89596601 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8963982a gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x89693b78 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x89b1c802 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bc1c21 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89eb38f8 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x8a06df6d ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x8a0b51d1 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x8a32030b crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x8a3df6f8 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x8a450f4c rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8a4e42e2 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5ae99b edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8a5b4970 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x8a6239a7 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8a79e2f8 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a8018d0 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x8a94bd98 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x8a954d08 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x8a9aff5e devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8ab4fb3d gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acdd50c usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8ad13a41 fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b21bc6e tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8b302eec ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x8b338afa tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8b3a7e83 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x8b455750 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8b583be4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b744159 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b8c2486 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x8b8d2095 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x8b9fa39c usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x8ba4962e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8bb05c71 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0daf74 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x8c2c0b32 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x8c4f6022 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c727131 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9ea371 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8cc8f238 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x8cca8d29 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d1a712f devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x8d2324cf fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x8d3a1e74 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x8d474ebc fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d48003f power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x8d4acd59 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8d8afc57 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dab4462 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbe2ba6 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8dc0875e devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x8ddb3581 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x8dde8667 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x8defc596 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8df10ad2 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8df906c2 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e104c07 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x8e16f202 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2788b0 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e3f8eb3 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x8e6124bf attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x8e6425ab nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8e701870 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x8e7fa529 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x8e80ac69 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x8e843e0d gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8e85f26e kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x8ed1d46f virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8ed6befe of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x8edfe9a9 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x8ee8f0de alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x8ef25025 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f07ef3e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8f432b0b sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x8f65ea3b gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x8f6ce23d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f724fd4 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8fa34b5b virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x8fb53b29 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x8fbfdf65 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x8fceb6c4 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8fd608b7 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x8fde006c cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x8fde38f9 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x8fe42a01 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x8fe43c5b md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8ff15a57 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90638e7f handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x90672a9f pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9078e802 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x909fa612 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90afe43f __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x90b12273 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x90ce45c7 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x90eb5676 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x911d547a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x91394daf tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x9169dbaa pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919422f8 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x91a60178 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x91b9b664 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91ca90d8 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x91d69987 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x91d99ac5 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91dadee4 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x9202035f spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x9205b6d3 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921fa60e __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9232b1a2 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x927bbac9 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x928898e9 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x928f1bf3 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x9298833f debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x92a7443a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92dea8a9 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x92eb6d71 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x92f7f946 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9325776b netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x93266d3d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x932a8855 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9351d24d regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x935519ce clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x936b2246 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x937cf7dc ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x939839c5 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x93b1ab9c rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x93bb2369 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x93e59bc2 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9429fd80 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x94370acd debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x944abac8 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x9452167c uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x9468e0ef regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x946e67d5 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x9482740e regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94b10e9b ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x94c46d6c ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94e6883b of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9565c92d arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ad72fd transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x95b6973e gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95d89040 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x95e00c31 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x95fcf735 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x9618e9e4 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96237744 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x9653ae7b rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96595d6f pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x969467e8 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96be1ee2 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x96be5525 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x96d7421c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9708c862 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x973de739 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97c50559 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x97ce93f9 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x97d79746 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x980108dc verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x981ed0d5 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x983e4a05 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x98431ef6 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x984d7886 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9859f581 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9868f044 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x98693eec dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x986d3eff palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989959db blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98a6568b cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x98af4bb6 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x98bfbe44 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x98d648c6 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x991bbb0f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992d1b2a clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x993bc79b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9949eb7b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x996e7155 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9970c5c7 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x998fd51d usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99be0961 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x99c9f5a1 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x99cbd520 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2fd913 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5d4b79 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x9a68ea83 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9a72c96c ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x9a85b001 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8a729b __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abdb21e shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x9ad26f72 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af438ea wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9b09e9a9 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9b2a97b0 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x9b3e5784 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9b46252b pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x9b4bf94c scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9b60145e device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9b94bb9d ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x9b99ca69 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x9ba1a471 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba97ebc pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x9bb933c4 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bff6dbe usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9c70f373 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c81c4a9 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x9c95f311 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ca12b28 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x9cb01541 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9cb0edac udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9cca8599 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9cd29813 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9ce9d2bb cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x9cf8281f dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x9d028b60 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x9d415af7 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x9d5a3bd3 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9d5b92ae of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x9d66b1ba blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x9d7d628c fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9d849dd1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9da8336a regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db57d61 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x9dd2c153 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9dd95f80 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x9e1496c8 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9e1ef31e fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x9e2510c0 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e381491 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x9e3aa717 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5e7ae0 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x9ebdf92e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ecde412 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9ed49c65 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed7ac7c __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x9eef135b __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x9effac39 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x9f2024bd bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x9f2d7270 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x9f35918c sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x9f47fdd5 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x9f6182f9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9f75cc14 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x9f889011 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x9f8a2019 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x9fa0210e virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x9fa96621 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe159b7 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fe966b6 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x9ff58c60 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa0106459 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa01e2765 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa02a25b7 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa02b4cc6 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa037650b rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xa0988df2 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0ae0157 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xa0d770c1 input_class +EXPORT_SYMBOL_GPL vmlinux 0xa0f16ca2 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xa10d0ce9 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xa128bb86 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xa144dd76 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa18b361d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1976568 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xa1a40888 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xa1bdc1c7 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xa1e0d345 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1ee7a7b ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa213372a nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa21c5e9c smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa2381caa ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xa23d1c39 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa247140d posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa252349c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa26b910a tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa277dab1 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa29ccc7c ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xa2a6ddd3 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2db9041 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa2ddcc80 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa2e8b69f crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xa2fe8aa1 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa320a8f3 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xa322a595 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa3377dbc irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xa33ade7b trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xa34a1053 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xa38131cf ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3894c6f usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38cdfe0 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a0bbc0 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3ac325d ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c114c7 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xa3d17f4b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xa3e16693 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa4023736 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xa418a81c device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xa427d828 component_add +EXPORT_SYMBOL_GPL vmlinux 0xa4415110 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xa441ee3d usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa44a9a3b skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48f922a devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa4919aed shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa4e7c975 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xa4ebdaee register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa4fe89fc ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5185980 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa53501bb cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xa543d142 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xa55ccf66 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xa56c936c crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa57526e3 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa59bbd6a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xa5a90f2c blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62e5bc5 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa63dacbd ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa65fab03 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xa6613040 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0xa66177a4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6681be9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa6b4f328 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa6c495eb usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e9d0d2 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xa6ed3135 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xa73beb15 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xa7428090 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa74b2fc6 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa76e615c usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7758465 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa7773668 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xa7845b87 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa794c3de usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa795b25c md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa795b6cb crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa79e52ac virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xa7b8129d gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xa7beece7 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xa7bf81f3 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa7d2e763 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xa7e39aa3 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa80c3627 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xa8124782 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa814f41e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa8479866 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xa84cdd83 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa856710b extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa89124c2 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8978592 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa8accc7f find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8ba33e5 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa8bcb4b5 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xa8d1ce6e led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xa8d3f36b pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa8e723f5 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa8e74b62 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa8e8c3d4 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xa8fca9f1 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa90eb29e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa918af02 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9325b41 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xa9400742 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xa94da297 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9d60b71 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e524f5 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xa9eb9752 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa9ee1729 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xaa0012d6 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa2db397 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xaa3a6add gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa3d4a72 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xaa3d90cd rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xaa5e1778 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa658682 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaabf8582 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xaac80abf dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xaaef07ca set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xaaf7368a usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xaaff2207 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xab0cedd9 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab357f0b scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xab371f2f regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xab464aa7 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xaba85dc3 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xaba98f57 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xabbacff4 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xabc48d58 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabe2d900 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xabee1d76 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xabf2dbd7 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xac04a3e6 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xac0e0f62 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xac20a45f gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xac37ffab fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0xac4e0c30 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xac5566cb led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac676163 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xac7fe734 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xac9b6109 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xaca09e4a stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xacba429e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xacc6c9cc generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace68742 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xace89de4 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad0603a8 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xad1b2af9 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xad3334ad rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xad3ef73a __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xad3f568d dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xad5a7e8f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xad5edc1b crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xad6245ef platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xad7ae104 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xad7cded8 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xad88cd03 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xad8dba6f kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xad92da3e anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xadb9bbd8 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xadc4f274 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadde6317 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae10b69f i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xae2ee735 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xae5146d8 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xae545ec5 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6b3c5b device_add +EXPORT_SYMBOL_GPL vmlinux 0xae706796 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xaec07aa3 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xaec11d37 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaece50d9 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaedb6c3f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xaedd56c2 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaf1929df dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xaf2729c8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf4d2eb4 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaf7611a7 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xaf786a69 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xaf7d6d23 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xafee3622 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xaffcb312 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb0086cc6 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb00effc5 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0xb0255546 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb025cf36 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xb0330480 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb037af1b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb045fa44 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb073347c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08ed6f0 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb096ca93 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0be3cba of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0de5327 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xb0e41ff2 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xb0f2db28 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1460954 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xb15266c4 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb159bf58 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xb17a6e8a device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb187aae0 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c8bcd9 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ea1d28 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb1eaebba devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb210ff9a ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb218dec5 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb2258512 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xb261a8c7 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26e6a47 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb286ab5e pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb28ba827 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xb294af67 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb2fa72b1 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb333387c of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb357bd0b pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xb37ceda8 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb38c87a1 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xb38e8dfe ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xb395822b crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xb3ad7ed0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb3c46c79 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xb3c7670b of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb3d21a54 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xb433559a ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb44245cc devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4a55de0 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb4a762ea irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb4af8b29 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ec00d8 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xb4f0a106 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb4fb3134 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb4fb7c00 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xb5001d10 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xb503db4e scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51e98b7 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53acfc4 dev_pm_opp_get_suspend_opp +EXPORT_SYMBOL_GPL vmlinux 0xb5514cc0 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb573851c device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb5780c98 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58734da usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59b299a ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5d317d7 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb5e38979 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb600d024 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb60454ce devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb611aedc exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6331088 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xb63f613a kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xb6488897 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb65fa7c5 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xb6982bea __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6e59d38 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ebbdc4 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xb72c07ea blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb74a8f14 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7a0406f of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xb7d5efc7 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xb7e38099 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb7e55ade bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xb7e8534c irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fb8e9c blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xb7ffd2f7 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xb80a1507 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xb83859a3 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xb83efd57 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xb85a6774 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xb86ee1b3 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb87f0b76 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d22425 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xb8df2d9f usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xb8ea600a trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb94dd5d7 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xb9791fae mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xb98969f6 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xb9923c76 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb99feb6e ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xb9a43670 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bd295b invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c967a9 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xb9ce529a led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e01dbe bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xba18630a swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xba26d308 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba30c666 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xba4a8561 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba7369b5 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xbaa15c34 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaea8166 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafb8c86 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0a808a scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0cd8a3 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xbb19a939 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb79ce3e ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xbbbbcf76 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xbc05ac25 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xbc09da22 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xbc3a8f84 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xbc3c6502 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xbc3dd553 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbc462023 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc8aa4ff tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xbca4a0d8 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbccb6a56 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbd25592b __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xbd350a9e i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6aa407 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xbd712dbc blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xbd7796af regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbd78e4f6 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xbd7bf3a3 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xbd7d128d ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd829544 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0xbd83ba78 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xbd9b6b59 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xbdabc6b8 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xbdb6412e ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde3d488 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xbe03241e crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xbe04ff7a ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe47da4d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7cdecd crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeefef50 clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xbeff9223 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf04fa7a rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xbf05b7d4 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xbf0ac12f skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xbf0b3116 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf467c7e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xbf50d6cf uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xbf6c0162 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbf79bb35 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xbf89e5bc fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xbf8d7306 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xbf8e7bdf pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xbfb31507 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xbfb597cd flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xbfbc32ff of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfe133df kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc00aafc7 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc00f7300 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0322ccf da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc0631123 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06d5504 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08ec4ef of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xc0a8c703 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ba3bb8 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc0c33387 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc1017608 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xc11a2da3 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc14754bd tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xc1487d9a pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc1698bb8 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc1731cf1 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc184ff2f pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc19df38a of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xc1aa10bf ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc1ac7caa spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xc1be26af sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xc1e82e62 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22b2b37 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc24061ea tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc24aee7c bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xc24ddde7 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xc258cbe0 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xc2673668 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc274f43a tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc27f6922 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc288c9ce pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xc2b18cc1 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2c8ae8f blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc2f5bc70 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xc308f8a4 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc312c6c0 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xc32d11b7 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xc332d394 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34c746e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35a585e ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3c543ce phy_create +EXPORT_SYMBOL_GPL vmlinux 0xc41f5d85 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43ebe41 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4626550 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4802878 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc481e1d6 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc4874777 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48f2533 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4d082f6 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc4e4700e pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc4f17c4c devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xc509741b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc522691a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xc536bf21 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xc5383b1f sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57c7cdd i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xc5964b6c nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5a74195 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc5ace6fd irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc5b1a802 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xc5c0ccf8 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xc5c90335 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xc5cbc596 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc5d681f2 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0xc5f00ebf __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc5f9c206 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc6080786 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6407778 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66d0fbe udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc689ebab rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc6990ca3 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69e5c3c dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6bdc1b2 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xc6c438cb driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xc6d6d11a crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc6e447b5 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xc6f453a9 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc6f7c6d1 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73ec56d to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc74db1cd power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xc773680d kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xc775110b pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xc776aa84 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc79ec746 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c7dc17 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xc7e0351f dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f34fcc regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xc80f0a89 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xc82859f4 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0xc830a9db power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xc843a9cd dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc84b1884 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xc85b6fe2 device_create +EXPORT_SYMBOL_GPL vmlinux 0xc85d6029 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xc8646322 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8671a31 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc8767b7a rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8833f81 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xc894a39a usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b38a12 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc967b3cf devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9950da1 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xc9c90fb3 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xc9d361d4 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f0c912 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xca209160 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xca2b82f1 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xca397399 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xca5bfc71 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xca78433a gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca89be1d zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xca98d069 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xcaadc096 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xcab3f1e6 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcabd4959 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac36d0d dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xcac55c51 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xcaf52799 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcafb3729 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xcaff3682 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xcb016ea1 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xcb0a0453 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcb0b2e84 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb209eb4 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xcb2e8ddd map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcb41ed0d crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xcb44e55a ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb6b7d59 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xcb735329 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcb73976c irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xcb9398c4 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf36945 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc3536ab agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcc39295e pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xcc3d171c arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc573715 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xcc65ef5d of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xcc6bb9ff of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xcc81f22a ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccae3a08 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xccb4dc77 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdda4d3 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xccf00f2d phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xccf3f7dd x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xcd0af0cb regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xcd5bcebf blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xcd6c8607 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xcd7e8030 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcd8a8005 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdac0338 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc97c2c posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde8033e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xce0ee383 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce1a26bf sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xce63ea0d kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce91a930 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb2ac54 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcece7c41 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xced6ab68 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef2f0bd clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xcf0db994 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xcf16cea8 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xcf25c101 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xcf3a3e03 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xcf4834bf dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf78e42c attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcf7a47cc posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xcf8371d0 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0xcf843a7c of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xcfa905ab dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbaec08 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcfc3b402 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd3221a clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xcfe10a53 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xd01d0e99 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xd027858d tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xd037e65b rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04d770f spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd058e4c5 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0799740 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xd07c0cdd vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xd07e12f1 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd0b4a4d5 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd0ba52ac trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xd0bad41e i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c910eb sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xd0d9a0cc da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd0f96e43 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xd1289e63 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xd14389da pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd148f8d0 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd15d5023 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xd15f8220 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd191998f relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xd1a0e95d pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xd1bfcc0e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xd1bff6b2 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xd1cc42da inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd1e9c430 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd1eace7b max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21df640 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd230af75 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd2533c46 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xd26426c1 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xd268d8b7 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xd26dd356 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27f38a0 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd2b15275 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2ff3e00 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd344f72f kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd35a1036 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xd39a9da5 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd3c216e4 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xd3cde80f usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd401f2a6 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd405e5af rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd47a3922 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xd49547ee sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4b9c187 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4fd0afe bus_register +EXPORT_SYMBOL_GPL vmlinux 0xd5167c1f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xd53e6f81 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd557af5c dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd56e1394 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd57c3354 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd585400e __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd590abf7 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd5b68245 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cf4371 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0xd5e5f9c0 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd63a11e4 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xd6422126 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd64e6692 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd65b5c5e uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6b7a797 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd6c5dd15 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xd6f8baab pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd703e9da rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd740f0c8 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd74b8a5f sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7816bf9 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xd7acbd0d devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7ce7bea nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xd7dc78f0 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd81276f0 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xd8154b05 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd83fcceb sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd841bcbd __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a03fa7 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xd8ade9e2 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xd8c3386a kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xd8e331a8 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xd8f608fc power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xd8f75f45 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd9058fa7 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xd908e5e5 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94bf68f pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd958d384 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd95bf946 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9717c9b __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xd9c5054a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda460170 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xda462d13 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xda4b772a tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdabb18c4 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xdabb1abd subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xdad3e5cf crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xdad467fd rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaedb368 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb035a5e fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xdb14d46a i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xdb1a31ee spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xdb2551cf ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xdb275015 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb4c9a72 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xdb7bdfba wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdbbecd44 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xdbe89749 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfe3070 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xdc0327ba ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc27de9a ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xdc47f6c3 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xdc4a4b56 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xdc75a150 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xdc7b058c rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb4a8b3 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xdccccaee dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xdcd00629 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdcd9e361 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xdcdf6d08 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xdd089ad3 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3d22ed shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xdd3e6143 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xdd487877 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xdd4f8245 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd597f36 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xdd5f0a8c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdda96e12 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc06a9a kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xddc8e45a pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddda0887 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xdde9b1ba exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xde0191e4 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xde1896e1 user_read +EXPORT_SYMBOL_GPL vmlinux 0xde39abbf device_attach +EXPORT_SYMBOL_GPL vmlinux 0xde3c6600 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xde46e353 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xde5969c1 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xde61e4fb pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xde8ffdab invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xde98503e fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdea7072f nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf27c51d pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xdf55b7f5 mmput +EXPORT_SYMBOL_GPL vmlinux 0xdf6a71c9 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xdf7529af fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xdf7b723d rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdf85c890 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xdf86acdf usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xdf895feb devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xdf9c7b24 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xdfc5210c alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xdfdccbec mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdfe5c06c regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdfee9249 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01ee2da swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe050379f task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xe0679d5a tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0a25022 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xe0a6e73a of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0bb8fde gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xe0d98c35 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xe0e91faf tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe0e94558 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xe0fb4bbb crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xe1282f85 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xe131249b subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe1577d55 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xe1615537 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xe1687c38 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe169c641 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1b09378 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1e8a578 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe2036ea0 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xe21b3f01 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xe22f9548 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xe24803c6 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xe25edbb3 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2acd6ca debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe2ae36dc kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe2ba9687 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xe2cc8f53 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xe2f647c6 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xe2f6759c __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xe2fb2c68 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe305ced5 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3134d56 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe323ef77 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe3423bdf device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xe3741192 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe3834049 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe388ca62 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe38b8092 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xe38bb125 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xe3923d94 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe3a4d254 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe3c7a68f rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xe3d74ad0 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3eb5945 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3ee77d4 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xe3f426a7 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xe425a64a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe4274271 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe42fe004 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe43b7aea dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe459d0dc bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47f23bc usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xe4956843 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a6410d devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe4ab253b blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe4b0fb92 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4ea9be2 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe5288731 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe52a3ab6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xe53a360c __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xe5494f54 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xe549dd74 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5924846 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe59bdb68 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xe5c37fe0 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xe5ca46cb gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xe5e145c1 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe6039e58 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe605e3b3 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xe609c86a wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe60aa385 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xe631b8f8 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe632733e __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xe632d861 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe668d7d1 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xe68a5cfb of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e3fe61 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe70ae930 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xe70f7bbd devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7181b8b __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe73fea8a led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe75a7f9e inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7763b54 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe787c701 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe792118c blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe79a4ff5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xe7c990b8 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xe7d6f115 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f90582 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8121a3a of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8260b0e get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xe82d10e6 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xe830face gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe8364573 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe840cd58 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8500b76 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xe854381b relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe88ebfe9 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8bb2cdf rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xe8c9ba81 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe949b842 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe9a03a96 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe9aa3fa1 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d4e600 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9df3012 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe9f99c20 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea35739b dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xea364222 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xea38ff49 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4ce167 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xea4fd514 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xea58a031 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea76fad4 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xea9aa0d6 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xeaa4b71e usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xeaac2f4b dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xeac3a6a9 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xead5480a regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xeadbd897 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xeafc6747 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xeb274d16 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xeb37f225 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xeb3fe636 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xeb51f689 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeba3e630 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xeba8a672 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xebae8233 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xebb81ae5 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xebb831fd tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xebbc0750 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xebcebe83 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xebd19ada ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf235dd fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xebfdb051 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec62b7f2 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec71463b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xec774dbc fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xecaafbec xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xecb98756 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xecbfed83 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xecc5cdb2 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xecd358e5 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xecdca7e4 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xece1d5cb xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed198fa1 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xed1fd5c3 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xed277bbb regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xed4ef3fc blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xed5b9d71 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xed6c6c7c dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xed9eae15 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xedd441a7 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xedd8afeb l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xedfa5806 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xee282984 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xee382fd6 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xee5a5bbd sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7126c3 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xee8b69d1 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xeea9a1fb usb_string +EXPORT_SYMBOL_GPL vmlinux 0xeeb50b03 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xeec65bdd blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xeec96e8a flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xeed61271 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeeee0658 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xeef52d85 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xeef7f626 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xef09777a regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xef0a7b1c fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xef11cb35 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL vmlinux 0xef1a01b3 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xef267a6b led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xef445980 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef8700e2 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8d423f usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xef8ddd80 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xef9cd012 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa359af sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xefabf062 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xefd960db xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeff1548b crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeff23cb6 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xeff92483 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xf0040e4e of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xf006174b usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xf00d6fc4 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xf00e1267 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf02e6dc5 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0331eaf usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf043f57f blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xf0563d6a fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xf05bce96 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xf067d9c9 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf0689cd8 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf06b0ae3 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xf0723d58 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0839eb8 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf0dc0eff crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xf0de78a0 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf12ac878 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf12d5eaf perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf16343cf perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1a941d5 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b5d3c3 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xf1bde9a5 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1cf85be rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xf1dbdf75 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf2005d4e irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xf20e49e8 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2293aac percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xf2328470 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf24d5bbc ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xf271f20d irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28685c8 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf288c591 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xf28ed8ac ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf294b80b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xf2a6bad9 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2b26e8d blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xf2f126b2 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32a3d95 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf32ad704 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33629d8 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xf3365269 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf3439f6e tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf345fbb8 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xf35a8d74 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf387ceb6 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xf3a327f2 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c7c23a ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf3e3df38 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf3e86c37 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f3c460 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf4013341 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf426d48f fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xf4312a81 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf43b9cd2 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xf44b7bd4 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xf456541f kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf46e44d5 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4abd980 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4ec0301 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54ede7e part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf571dc8b tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf574979a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf591f7d9 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5e32cfb powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xf5e5c4a3 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf619f928 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf625defc sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xf627d64c subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf628e448 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xf6492ab7 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0xf651e6f9 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf687943f pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xf69dfd14 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf6a525a9 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xf6bdc777 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xf6c07c07 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0xf6c1cdbe clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf73b3df1 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xf76957d8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xf76fa6dc blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xf778a55c ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xf7808164 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf79cd792 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7dcff71 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xf7f0d891 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xf7fd28ea dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xf80d3547 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf835ca28 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf87f53ea __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf8a1a373 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8ee1250 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9056fed ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xf906bebb gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xf90e3ec4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf9284019 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xf92b3c92 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf979daaa rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf9876d1d unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a9973f simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xf9bfc1ab sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xf9c44de1 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa289058 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xfa33969f find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xfa42ccab rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa54d0d1 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfa7d5886 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xfa7f46f8 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9f8f0d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xfaa14d8c rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xfaa8f917 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfaca323b devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xfae496f9 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xfaedc7ae hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfaf3ae17 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfaf8d61f scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xfafa7517 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xfb21bc76 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xfb22bc6c cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb5cfd4a get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb758c75 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfb870666 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xfb889167 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xfb950fc4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfb9f339c clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1fd3ff tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc3aec81 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xfc78c7fd ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xfca88992 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcb0d630 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfcc55223 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xfceb1b39 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xfcf10f44 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfcf76194 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xfd324b26 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xfd51377d nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8b9d29 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xfd91cc22 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfd92d3db devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xfdbb9a54 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xfdc1323f hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfdc3d5c5 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xfe0fdce7 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfe11eed2 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xfe3a5f4f usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfe3cde3e ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xfe890f74 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9c3202 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed601bf usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xfef41477 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff02a5c9 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff30ca19 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xff34b8cb kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6def83 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xff78cf63 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xff79a3c0 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff947baa of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xffad7e2a debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffba4dfb clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xffe5ce98 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xffe6a2db arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xffeb69b6 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xfff2d76b ata_cable_unknown --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-emb.modules @@ -0,0 +1,4297 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-keypad +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +caam +caamalg +caamhash +caam_jr +caamrng +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si514 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-corenet-cf +fsl-diu-fb +fsldma +fsl-edma +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_lpuart +fsl_pq_mdio +fsl_usb2_udc +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-rk3x +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpc85xx_edac +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp @@ -0,0 +1,17692 @@ +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xcabbb0e8 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x1b1779cc bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x50f1baf9 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x133e59a9 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x24616ab3 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x862949e7 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x970cee7e paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x9c7a5f81 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9cd2e434 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb3a1fd94 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xc234f3a9 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc9329c24 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd41feac5 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xddca8189 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xef4418b0 pi_release +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x7902c81e btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1458205f ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x44442d99 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x69b5065e ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xdffd0528 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe604e9a1 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5b8fbcd2 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8fda2dc0 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa4b1ec9d st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xec4ebbfc st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x186a7d99 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x1c351845 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xe50deeda xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x39a45953 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7b40cc0e dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7cfe0d45 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xea39bdf6 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeb9e2f10 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfbefef91 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x5a0cae7d edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d235672 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e521abd fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1e3cb777 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2917271c fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3fc17c70 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x426786c1 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d1002b5 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x54ddc562 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5a27df88 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x60e0a589 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c63988 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7686f42f fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7cf02d25 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa3396c5c fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb42f350c fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb52ddd7e fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc33c9f08 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc741fb0f fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7874e80 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8ebd3aa fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdce3be51 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde654ec4 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe2d35958 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe5fef8d7 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec4b3ade fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7606da9 fw_send_response +EXPORT_SYMBOL drivers/fmc/fmc 0x269ead40 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x35bbe493 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x361008dc fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x397bc973 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x5332f27b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x97f5e879 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x9db61bdc fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xba27d11f fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc33e4c9b fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xe67346de fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xfbddcaa1 fmc_driver_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00ce8295 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01b27af8 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01fc641c drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02579c2f drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x059dddc0 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05d0f873 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x065eb6cb drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07d2c2a1 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x082b2f58 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x088794d1 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09fcac41 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5e2588 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0adc0639 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c21fa5e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e0b471a drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0efce7c8 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd01036 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b5eef8 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x126b1337 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13445b7a drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x148cbf1f drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17f14f4d drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1806cbc3 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ddc1d5 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x196b0067 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19888d7f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19a6c6b1 drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19a7d3e7 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a034fb5 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa096ba drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b8a6c08 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20af0fdb drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x245643c7 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x255e8251 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x256a5dc5 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x276f5a6d drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27fc5d14 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x297f552a drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ba8c6c6 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bb5d84f drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c7b47b9 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cf30e08 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ded511b drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e1763cf drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eeea972 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x300e9381 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30785015 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a03f3b drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3250fa6c drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x327ebbc1 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x343650ea drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35f0eb51 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3638f50f drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e6df85 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39544489 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39fcc83c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ea115cc drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ea2f3dc drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f69f9da drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40682da0 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40a9d408 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x414cf5b6 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42c59145 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4347fc5e drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x449337dc drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a7287e drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44afb663 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45d8110a drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x466d2690 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46dcec0e drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x476cb1e8 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48ad7491 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a730942 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4af340d3 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c27be9c drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c73976e drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ca4d6e6 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d89e856 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ddd7c48 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e68881e drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e9c2899 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f899a5f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fb8fd21 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x503a0a92 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5143d6c4 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51e0ebb4 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52d3e99f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53aebe83 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x543686cc drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5640ad80 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56a9f142 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x578349d6 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57fadca0 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5867faf2 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58f6def1 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a28a3db drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fe6808f drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0x604ca86b drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x618dffce drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61947e07 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6468cf8c drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64f4f491 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x664bf0aa drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67c3e489 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68f4472b drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a665d55 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0ae569 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b42a9f3 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e5eb13d drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x705ba8a0 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7228c48d drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b8ee6d drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x763a7c60 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7645b409 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77dda543 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78765960 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79357ed6 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x794185f7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b23b782 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d4c44ed drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81d9ae48 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829e4f45 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x833cc4b2 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85319e34 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853721f1 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85e99669 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x867d75b4 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86edd80a drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8777ff53 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87beac07 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87c738c2 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x886092fc drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89e88ef9 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ba614fe drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ba9ddc0 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c16cce2 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c3609c1 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc680ae drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d6540d8 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8da820b7 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e42cd52 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ed628d6 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f1f4828 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f621bf4 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f898b0b drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90412bf8 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x933a8c6c drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95e9ccf9 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9792e249 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97da72e9 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9934ca0f drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x997cecc5 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99804e4b drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99cbe9e3 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f70028 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a3375d5 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a515811 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a93b611 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b5dabee drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cecd16d drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d121c50 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d8dc604 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fdd889b drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa01cdafc drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0d1f3b9 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa10d5445 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1530acc drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa336caaa drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa35f3bb0 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa405d81f drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa588a539 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d2f9b3 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa61772c1 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7376813 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa744ca9e drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9d1c585 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa54b8e4 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaae48852 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab06773a drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac48cdd0 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae90d5b1 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaff42cdd drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaff7aa24 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1229750 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2533f9c drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb30da710 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3609d7e drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3644d0e drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3ab6b6b drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4b8ffba drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5caef1c drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb625e16c drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6cf4901 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb71445d5 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb74087ce of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8aefd0c drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bfa97c drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cc69b7 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba13dda1 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba179517 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac64ed8 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe08a495 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc3fc8e drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc150e5a8 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2011ba6 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc235b65b drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6eb3512 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc719dae1 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7301d45 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7e432a0 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc83040de drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8d17144 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9317fe6 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca481a9a drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaf68d22 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbbae272 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcce56aed drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd653dae drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd881519 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0de6ff4 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1acc418 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd22ab2cb drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3a8785f drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3c86220 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd507decd drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5cfacd1 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd67e8f53 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9275c35 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda2c9dd5 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdae6476b drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb16bcd drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc004b5d drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc3aaaad drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdddcb6a8 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde35683c drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf148129 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0898eeb drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0c740b2 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1303058 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe399148e drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3c8b3aa drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe413488c drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe465234d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe48dd3a8 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4913dc6 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe760a30f drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94bcf2e drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9f01767 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb48380d drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed25af11 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed2a8a35 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed38e5bc drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeea49fd1 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef989f75 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf01940ac drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf07672af drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf129fc5f drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1ae573c drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5978fc8 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf611c55a drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6720050 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d4c314 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7794b43 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf886bd40 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9551d28 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa97231c drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb4a9e29 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf6a4f8 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfceeeaad drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd343f1d drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd68316a drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe03e925 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe6a4186 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfebf2b1b drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff0c9876 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff2045d7 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0720a090 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0eeaa09c drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1142b782 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x140f7da6 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14ad19a5 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19c7c5ec drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a9ddf92 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bad85a5 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f3009be drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2821841a drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29fbb38b drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bf8d12b drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e00c2b5 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31e20277 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x335c65f4 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33c84b36 drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c1eeed drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3956f1c3 drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d5bec90 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x415a44e7 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41a6cce2 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x447ca811 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x455e884e drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45eadc1f drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b6a2307 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d5592e5 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x515e45ca drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5257c2b1 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x525df22f __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59f941cf drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ad0d804 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b44fe5a drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c50e8e0 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c518aab drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e0b6d5e drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e6c5ca2 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f77c606 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62369246 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67aad58c drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x684c391f drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6998771b drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c134d24 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d3b1fe6 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6dbc6ee4 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6eb929ab drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fdbbe18 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70307956 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71792fc5 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73f4eba8 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77807bdf drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78aa14ae drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78f0a884 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7af67474 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c8bc5ff drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e1b70ab drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ee36adf drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f8eee9d drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7faad222 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fe5fa33 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8037abb1 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82efdee2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85a96d42 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8754d39c drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fb695bb drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91607d5a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93a9dd1a drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94090bc9 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97c233d7 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99e5939c drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b7e6ffc drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c89d78f drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ce2d774 drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e1a7885 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f53a691 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0957005 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1a6be6c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4c36740 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8df1757 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa21af59 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab4bb683 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac4d9516 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacd18155 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaef82cfd drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb513db16 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5d76fb7 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f556c8 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb662a0e3 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8728650 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9a0bece drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba1eb75e drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbad2f986 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb6b5657 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb81c2b4 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbec023ff drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc65934fe drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6a1cda3 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6fd1c26 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc77b184f drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8886cfe drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9e83b57 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcabd30aa drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb57fac7 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb05b00 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfbf1ac8 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2a552f2 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd498df90 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd699d097 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6bc9fed drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3a5eb86 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3e67c9f drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecad41ed drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecc163a1 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0f7a6ca drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2fac1ab drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf34bd58f drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf36ce6dd drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4d42b80 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4d6e8aa drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5d246fd __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf681125a drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf712f79d drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7cca0fe drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8dc4724 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffc055d2 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x010cac84 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x055d551b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0864150d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x09940c5e ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ab620df ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c8aebf9 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f4b8a7f ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x187fee56 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1aa4fa2c ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e2b9c6f ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f6bb36a ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26171ec7 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2cb3139f ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31da7ec2 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a3a797a ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ee9267f ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x40a10e60 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43ac49bb ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50b7e6de ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56ce9991 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6335b348 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x659c04fc ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65fa2845 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6febfc40 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7109ff99 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71169453 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73a917f9 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7cbd28cf ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x820e8d2e ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8831109a ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d0b2ae2 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91e47306 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x926b4ce2 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99e6767d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a2e59db ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a975baa ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabf06aa7 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb02afa7b ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb420834a ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbec1f49d ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4da5982 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6f88e9a ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8cd57fa ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc943064a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb0291f1 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf2b57de ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb93c276 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe22a93b8 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe230b924 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xea4994a6 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2c4386a ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2d2b8fd ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf47dac62 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf58a1696 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd12cc85 ttm_bo_acc_size +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x112fe02a i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x1816ba6d i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd37ccfb6 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x587ba435 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf21f1801 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x12d8095b amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x023b32ca mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0616bcda mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x074d3663 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1b3d16c4 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2a324480 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x43368eba mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x66ece2c5 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x71476578 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x71492bc6 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x77badfa7 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7baf6ff6 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9982f7e8 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9be5aceb mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbf69b672 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdcbca5bb mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf5c78afb mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xde9c0a00 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe00bea20 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x006b5697 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x288b3bb8 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x32c9c6dd iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x67bdd7cf devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xcbb606ad devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xda910adb iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x014322fa hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x426e5e9a hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x538410c9 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5b0dfbce hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5c8ff0e9 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb205669e hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1c08b5da hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4b1fe4cc hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5fd90d12 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xfabad7de hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x270bb849 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x5be2a291 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x64f1e04c ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x6c638451 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc0612f8d ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc1d015db ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xeb36af18 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xf2f7d34b ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xf91568ce ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x05d1fb01 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2a4c13e9 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4bd712c2 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5406a36f ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9fbd1768 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x1b7534d6 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8ddb0510 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x9ecdcfee ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0412578b st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x09754504 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1271731f st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x186ca145 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2d6f5afb st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x56bbcd15 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7fe5b3ab st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8ca233be st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9fa4feb0 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa787f754 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb5d1f359 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb928d872 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc6b0882f st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd7181e96 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xddd8145a st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe873f610 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xd2cc3954 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xe60f040d st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x7e5b62dc st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x50a9ad59 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc8557859 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6cd83884 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x878e4470 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x04bc7eba iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x06ff6495 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x103fde8e iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x1216b7bd iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x15e3ff04 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x2237c4f9 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x474f6d50 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4eae190a iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x718a70d1 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x7fe24939 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x8276898e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x8ab4c63c iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x91386dca iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x971d8551 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb13236d4 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xb9d44337 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe88e8148 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x3c707fca iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xf9c1d9c1 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x77b32e66 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe6706632 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x17b3b528 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x2362a6b4 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xbb5e3ffd st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7e8ce2c7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xbfe49b54 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe91848ff rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xee743a7b rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x00d1263c ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0ce5b838 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x13b7f70c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x218d6aec ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x306b1249 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x44151095 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4c418d2e ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4cec7100 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4e152a9f ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6bf2460c cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74e057cf ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76c1e8a6 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9eaf05a2 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xae25628a ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc550b122 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc76c81a8 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc8c90513 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeba5366e ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00175b30 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02564698 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x028233ae ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x044083ac ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0791d8f8 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07c2513f ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07d02572 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08a696d9 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x091756dc ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14cdea3b ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16e402d5 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18acd114 ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c0624e9 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2006b09d ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x225df643 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2276be68 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x255dccb9 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26971aea ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32281787 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3aa93e99 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b1a0e53 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3cba6c08 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x429a882f ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x458a845a ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4650506a ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bfb727c ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f97dc2c ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x53a37e2f ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x578a934d ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x633ceb16 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67dbbba6 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b18ac94 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b378cc6 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e18e538 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ee919af ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71f55c2e ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x721f4c45 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7226c911 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x749ff1e3 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x772df72c ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77eb10fa ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78258e7d ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a7644c5 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d45a8ff ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d51cf55 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fcaafbc ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x816d5f69 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x874cdf3a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fdaa5c7 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x925032f4 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x977b0c26 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa14238eb ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6ce1909 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabe17d36 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafb90339 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3683081 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb741a873 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb94e4f1c ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbab66eae ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb637dde ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc4c5d3a8 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5425c43 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcef3c01b ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8a1475e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda9d7508 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc559bcc ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde35fbfb ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe52bc3e2 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe55f718d ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe61138a2 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb197f19 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0ac512a ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf28c7f30 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf357ce8e ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6050195 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7a4ff8c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7daa7e3 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf847bf5b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9300848 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9455c6a ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc5fa22d ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe9ffcb1 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff7ee080 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x11e028aa ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x27ac5eb3 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x33014222 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x45bb9bc8 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x46cad3ab ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8cee26ab ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb42b72a7 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb99f68a3 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xceb3bb52 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd1e40d98 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd25edfdc ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xeda919e9 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfecb6f8b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x08d43d51 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x26f5b9b4 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x347c11f3 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x46e6265e ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x600b20a4 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x99073b81 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc60da07f ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd9fbfc86 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xef51851c ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0eec8fac ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xcb665420 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2d4c25b7 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3566facb iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3f0cd731 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4b042b4d iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x57285f36 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x644b3476 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x660b4614 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x687abd8c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6ee49d8c iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x70ba9de7 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x98467ab8 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x995db692 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9aac4023 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd59e2114 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf7b94ce4 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b773a3c rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1896b3c4 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a19d7fd rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c2fb571 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1e8c6443 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x24929aaf rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x47666fc4 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x698ccec8 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6ac9e4af rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x72803397 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8b0bd5dd rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9b71a467 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbff6cb9d rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc9f2a53b rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcfce3e3c rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc76dfc8 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe1b0020f rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2629bfc rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf4bf796e rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfb1e64e2 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfc4d304d rdma_reject +EXPORT_SYMBOL drivers/input/gameport/gameport 0x136592bc gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1be69b58 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x392fcda6 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x44798da3 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6f5aeda0 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb3645c87 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb5114d6d gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xec63d24f gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf709edb1 gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x29e3d78b input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x39066733 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x432b4df3 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd314bbbe input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe0ed62d6 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x44d4f72a matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb2a2906b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe28c544a ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf5102edc ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xa3845e31 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3e0d15dc sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x728eb6a3 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcabc3d6d sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd57bcc1f sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xef3cbbe4 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf5bffae8 sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x24c78863 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x95c49106 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2bd7d26e attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3c21dfc9 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3d3edaf1 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x59f0fa08 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5de90ed0 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6d1848bc capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a071917 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x82df8d09 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x970b994a capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfde76759 capi20_put_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0152e586 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x04e81c0e b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x109246bc b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x36bdbaf0 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x63502f7b b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x714002cc avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80e11101 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9c0095f3 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xac31230e b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcb8f1d2f b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcfd78fdf avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdb56e772 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xded2f1de b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdf25cde1 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf714e802 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0636b76f b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x33b2c1e6 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4ebc2066 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x51ad4139 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x64cf8acb b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7395216d b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaa414cc6 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc7eea998 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcbefcf6b b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x68e369aa mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x839dc3f9 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc6c44425 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd1eebb3a mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x4668d139 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9917f2b4 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x60167453 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x03537ef0 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1cd27d09 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x20563ceb isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x22d9b083 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x55f85122 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa398a90c isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xdd0850b7 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xef54c3da register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x163c926d queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2218353e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29a503a1 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b7b4acd bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f926b6c recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x40772ce3 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x44901240 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x48cd2da5 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5da5c19b mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x68dc90cf bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x695007d4 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8114a82f mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x923d0d6b mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa0264547 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbfb7e5f1 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc52e85bc mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcad540da get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcc442ec6 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd0d3e022 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe533b2c0 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xedcd0caa dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf37487d8 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6d07715 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x07c80e30 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x76c32e7d closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbfc842c3 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfb14242f closure_sync +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x08ab9ab0 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x2ca0c4be dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x85622a79 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x884f9a18 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1ea8c1cb dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4b1ed31e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x507ed0c3 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa46d7b63 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcd14e08c dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdf676178 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x7a887be5 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x00c9b357 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1b776725 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1e068b7d flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x22b1f06c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x258955ab flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3cd77f4c flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7371bf06 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x76c9ad7c flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7906d1c9 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x79f80765 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe28d72a8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeddddb46 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xee685d1a flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x500ebbb0 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6fb0e7c5 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x9e5481c2 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf33497a3 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xe64336ad cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x2cf443ec tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x883d7b0b tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17a6b965 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x27c0319f dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2892bf0d dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x29a0d3c0 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2d11f30b dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f5201a3 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2fa33900 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x40f11347 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x48cb5e9f dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d585497 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e434d41 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x662a6b84 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7119721c dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x761a4372 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ca53afc dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7edf6400 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f443bd8 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x825e3c80 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8659ac9c dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x89a8a72c dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95ac58f6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x969de252 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa9db70c8 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbcb80863 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcbb1e603 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdbc52335 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe671a0ed dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfee321cf dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x7d0e5355 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x366f6ef6 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x58132a85 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x160229c3 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4e2483da au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x54b78964 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x61e819bd au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x86534e18 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb89fe894 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xca43a7e0 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf161d3ef au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf4544172 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xc8476680 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xdc5ea5d6 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x6079cef9 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x7d7c31a3 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xafe00225 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x1db7c89a cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x546ee14a cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xe41a2729 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x9a48eb98 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4e5b05fc cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdaa74c0e cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xebd41872 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x431880e2 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x514ab3fa cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xa95bea56 cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x90f635d6 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9f018d99 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa2c40cd5 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd0030860 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xfb821fe7 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0a083868 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x229e3e90 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2664fd82 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5d5ccff1 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5d668bea dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7d07fd02 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x802454a0 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x82481654 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x96528dd0 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e1ae24a dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb99d9837 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd3fcdc30 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdcf8d977 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe9ba1ef7 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xff420142 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x50c566de dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x020f1f5b dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x34aa2a66 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x34d0c3a1 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa54eb1dd dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd1df71f1 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xdee2a62b dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x36c26f22 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5c84e178 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8828d36c dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa7d56417 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc7b955a9 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x67b3854d dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x21751d6e dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4d0f449a dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa37a8756 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb1f7e7e4 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbe2ebef8 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x6e9c9e96 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x91656eed drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xee4dbb5f drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x0964b35f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x71438b8d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x66dca872 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x0efd478f horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x8b4af2ec isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x6b21dbd1 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x28e9555d isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x0b2822dd itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xe5318a66 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x971a9dd2 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xbca03dc4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x37216e80 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x86eadc38 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x83999641 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x5aed9012 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x994d9861 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x83d50d99 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x85ed5d39 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x0bfda75f lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x5ed85e13 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x6a6902ce m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x076e2e9d m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x0eb914a7 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x97df5b99 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xe71b34da mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x5511e066 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x0873a2b8 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x1aed3029 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xb3ad528d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x639dfa2f or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc5621d47 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x9031a4dc s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x48e2f113 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc1e4bca2 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe16b3ecb s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x519ce889 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xc22b537c si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x79bc92ea sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x2a09502b sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xe3c40c3f stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x3466ad4e stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x71c1f46c stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x9176916a stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xa599bf00 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xe600b9dd stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x6d53cc05 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x6e0af41f stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x0b3d91a2 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x28ab14c5 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xc57587ac stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xb5f06152 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x2bdb79d4 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x2d0e091a tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xbac0e272 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x41f25b8c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x75e7f3e4 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x6bd1e0f5 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x52bd78f3 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x0dc3cea5 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x21eaa59b tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x92075b09 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xf4f652d2 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xffac308f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x17947c75 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x96269b6e ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xdd846298 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x23e536c4 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x8ad4a903 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1412a3f1 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x415b9199 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5a22f09c flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x672ca237 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x746a2abd flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9da9531d flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf22af37b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3b520a3a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3f3725e5 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x43d1423b bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xda57dd34 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x79bbf911 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x7f31c580 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x90633c4a bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x25fb30fe dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x406bc29b dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x492bdc3b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x58e83ac2 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5e44982a dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6188f168 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x64b641ea dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9aeacd4e read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf09c0e5f dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x4238d74f dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0b1bdd6b cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1efd8e17 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x64a4480d cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x98e427dc cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcdfc1596 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x450119bf altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3052240a cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3487c94f cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3bf02365 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x79f032e7 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x94d7ddfe cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9f27e52a cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc79d28d3 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf77c34c1 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xfd30fa27 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2bc91259 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2e06e45c cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4db3af04 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9d3da610 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x362865e4 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4416a54d cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6adc20e2 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8d775b8a cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9e830512 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xccae3164 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf3426289 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0fa6ac2f cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x148cd353 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x18421fe6 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x188ec1da cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x26aa6045 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4f1e69f0 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x80c8bb70 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x81d784b1 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x93c780ce cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa3a264c4 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa7953479 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc1336045 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc5d674a6 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc7a68041 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcb917369 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdd4e454a cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdff6072c cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xee74d2c2 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf05e9bcc cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfb8380d4 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x03441d1e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0aea5d2b ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0e95b3f9 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x12fb1ab1 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x219b2e61 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x269f2bcb ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7a380826 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8d56208a ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x90d6b478 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9ad33c60 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9c55e72c ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbcedf492 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc432c7f1 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc960a798 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc9784d4a ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcc3cc67b ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe4775e30 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1be0c9cb saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x474660bb saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4c46e036 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5e9dc60a saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x68f5d0d5 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730157d0 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x875cb784 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb5a14ea8 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbcd32516 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbce93fec saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd7d01aa7 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe526be47 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xd27c9fe7 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x05418b67 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3f3544d0 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6070e7cb soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7b45ac50 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xafeeaf2f soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd3acb0ae soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe08eb1a7 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x152ac8c1 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x74d59ae8 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x87f2b4ca snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd0e34017 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd20ce7c8 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd7d5a7c9 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xfad194e4 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0da01e5b lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1c2531ed lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2a75769f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3dce9541 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x642d8920 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xab231671 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xad663a83 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfa194954 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x314486bd ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4e31e713 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x092ea027 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xda0095da fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x40fefbb7 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5350e0f1 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x911c47d5 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x74c59053 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xc75ebbd6 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x306739b0 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x082f8e95 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x2d79c50b mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xc4f0bf39 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x54d6c621 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x54509f35 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x81959df7 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xac8bfaf2 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xe0042bca xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x3025acd8 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa61bf03d cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0416ac8b dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2eb766de dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4d91180f dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6222e5c5 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x722f9780 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x83c0bba6 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb6079ce0 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc4deb22a dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf44e559f dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x168c20f9 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4b995093 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4ff301d2 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x516e055d dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x76fe68b3 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7716f53f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8786dbf7 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x29bb69af af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1c300f04 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x27e8713a dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2e57d8e3 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3c4bdd29 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6901a60d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x72b0fed5 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9b0c8b2d dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa1940841 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa86b94ad dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb358265f dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe52f7805 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x57b1ffad em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x82ed4784 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0afb17e7 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x23d8d63c go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2e47733e go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x365b8c9d go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x46ee0735 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x715cca69 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8b10333c go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa6f178ea go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfaf32219 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x483277c3 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x667704f1 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x78bea772 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8b285ea8 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaf60c64e gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb382b957 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc508f06b gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xff5e784a gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1534b6e3 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x527440e1 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb1ee9003 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x4225ef7a ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x69e2eeb0 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x66d934f1 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xdbf2a9d2 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xddd8c9e9 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1f18480e videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1ff50801 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5e1bcbaf videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x809a5468 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb754cf7d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd84edcea videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x51342772 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x6675c401 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x42e3c527 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5a77762d vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5e18eb12 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6d04c01e vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x79a2d2c3 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xead22038 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0xcad1157d vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x020127ec video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02286baa v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07e1b668 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a57eff8 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0dc07d23 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f1c8247 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f9a9cc8 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1111a9ad v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12c835df v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e52bcd4 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21fa2cf7 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22220e40 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x268fcbd6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2af01019 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b0e676e v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fad67bf __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3579f3ad v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c4adee8 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3eec2d86 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3fd580ad __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4149aff1 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44ebac58 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4614b094 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47b31bae video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x533d9e48 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b77525a v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ba905f4 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61223d35 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64a48541 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64f5671a v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66528a62 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x667d887d v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66d0e0fc v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66ff9724 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x697c86b5 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d064a91 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ac21885 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7fe38339 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82161b75 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87759de4 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94bea31e v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95f2cda6 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x990ffbbd v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa246fc66 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa272b15e video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4c13acb v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad9a3eae v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb10ece03 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb2a254cc v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb47b00d0 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb63be03c v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbfde30df v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc36a50e3 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc528fc4d v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc59f7877 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5cc355f video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb462958 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbdd82f0 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd070f10 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd27b3f5 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf032a78 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd396b25d video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3b66866 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3bd266c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5302888 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd60d437c v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd63f687a v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9549706 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdfa66320 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe14f62d4 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb73f8bc v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef1755d3 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1cb58d8 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3244e52c memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x399428e8 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4cbb5ab0 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x52b6a6af memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x79bbbaab memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8ae4766c memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa0b5666d memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa3f875d0 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb8c6bf10 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcc19a5e6 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd2c2f7d9 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd7c21db8 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0256edff mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0737e606 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x09c73ce9 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0b782da6 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2448da2c mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2d8cb000 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3af2481f mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4688d865 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46bac9eb mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x544bae6a mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x56ded992 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6fbbbd1c mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75e31ee9 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81c965e0 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x85cd6c3d mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8bf6e780 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa274b288 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb64b0605 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc12cbd03 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc5783580 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcb35df94 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd465ba7a mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe133f166 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe40aa0d9 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe564f3dc mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xea2bdbad mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf3b4ce8b mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf5d3fabf mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc936b3c mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1ec0e0ac mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x261913fb mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2a9cc0a1 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x34a2bd9c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3a324631 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3efe2104 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4967d977 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x55e504f5 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x621e91a4 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x682c13ff mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6eed4f62 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74440539 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7747ed2e mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7a3ed51a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8a7a4801 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d69342b mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ffd0318 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa72aad01 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0874903 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb1452f97 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb5be6786 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbcf5e1ab mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbdabd72b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc36f8a41 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd3303e7 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9047922 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfa194df7 mptscsih_shutdown +EXPORT_SYMBOL drivers/mfd/dln2 0x74924c0a dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xb6aea2df dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xca79c1b1 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x255f547c pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x690e4852 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x02193173 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0ec90359 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x48f9d946 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5768d7e2 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x58d1a564 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7602dabd mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x99ec123e mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ed0a0c8 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa4fc13ba mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe43e042b mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe48c6117 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xb6b9fe29 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xd72e2723 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x71fde1af wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x8d6a30c6 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xdca5581b wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xee9fe382 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x8c1ca308 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xc2831f45 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x30b3ae49 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x157a97fd c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x8e3a6c47 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x9096f4e7 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xf6b3d979 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x21dd729d tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x369b51c1 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x4059079d tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x51078fe1 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x5c341928 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x6f86d54c tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9c87a3b6 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xbdb40f26 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xc87f51cf tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xd23d9576 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xe0913bab tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf2ef2d7c tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x9c1d53a4 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x1f107abc mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x6b2d85a8 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x40145945 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4dc2b3eb cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6176ecd4 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaa6170cb cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xbc2c4f3d cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe9b9f9cb cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf43e856d cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x132d7c97 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8d6792f4 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xae5f8784 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb8eb4fe5 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x270d2c1f mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x2dbf4085 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xc63fb798 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x80c2a587 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xbebde92a mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x01c297dc denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x47ad73c9 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x7c315b31 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0x980203c7 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc0cadab0 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc5c48e6f nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd71360bb nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd8422f25 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x2f5add6f nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3a90d229 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x963d424a nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xd25ae121 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xea6064e2 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x211138cd onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5492e8c6 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5ffd2d79 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9e816f74 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2f01d528 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4b6b97cf arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x71472420 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x752c5e27 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x91276572 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa59f06af arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa6e2b0af arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9ab008b alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd73bd1b3 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xefbc43c9 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6eda19de com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa49ad8a1 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xaf1224c1 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x521655d5 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x54c8b7b4 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x64220059 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x940041a7 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9c2a8ef3 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9f90a387 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbf09fe77 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbf1509cd ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd0a68359 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd77d638f __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x188483e3 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x819812ee cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0a0fe7fc cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0a57df0f t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x11f3b80b cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1ef9aca1 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x21f2557b t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2824c26f cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3017c0b0 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4494eeb6 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5fef5cfa cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6ed78c3a dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x997b42f9 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2c14975 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xac6946b3 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc699f110 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xca8865f8 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdd01fb6b t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02461b4a cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02a92265 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f4f3e54 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x146c4fb6 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1db336c7 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x221d6dde cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48e863e4 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c26b112 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a4dbe04 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x64b2a906 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6d248ae2 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x723ed6ca cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x768debda t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b47738b cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7bea44f7 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8734f980 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x88abe8a5 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94ebd442 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94f25402 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x99e23f03 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9bf0b858 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d305124 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa809af87 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf30685e cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0687115 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb78770de cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc8c4fcac cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd8fb6d82 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe83103b8 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef30c82c cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf042f8ba cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf594c404 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa46053e cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe9dcdec cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x41a7f4cd enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x5846e839 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xaa2f376a vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc0ae189e vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xde6e5b4d vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xdfa4c7c7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x5da2aeaf be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbc6f5499 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00d1d2c3 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c4ad888 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e26d5dc mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ee6b0ed mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f7615bd mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2899b1b4 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d27a596 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30215b1b mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34bafe47 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x398b0d33 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x398dadc7 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x446b2892 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ca4320b mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51cdf9bd mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58bc86a2 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73a940b1 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d9ea986 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92abf6f6 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c1adb32 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa15eaad1 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2b13b57 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5c58a53 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa81f0482 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa83c64e8 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaae862e3 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb853bd7 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7183484 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbbb7dfc mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccff035e mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2bcf69c mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4caff63 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda23aa52 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe185648e mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5a71e5e mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7d62eb9 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedf175aa get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7e42930 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc5afb82 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x080662d4 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08172dd0 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x160265da mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x196eefb5 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bece6fc mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24f17330 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x363b974f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b86e2a2 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ddea248 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43e5fc57 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f1af2c5 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f8271ee mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5db88622 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a38a243 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72573a8e mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77f8a933 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78d1061f mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7caf1c45 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dd9ee31 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83a9cb33 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91d6f949 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e4c78fe mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ec8bfbb mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa54e99d9 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8b980cc mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1293ee5 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb18242a1 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb19ee2ba mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5e2c5ba mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdc9abe3 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0ad0324 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd176f24e mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd462bc88 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd884885 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe129b486 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2ec7baf mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf59d575f mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7ea2d1b mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3312db68 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35c8ee0d mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8f9c9004 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x97683b14 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xadbc71ef mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb32c9d4e mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdbad8e4b mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x8ddab6f1 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x33a62891 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x43055250 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x58651cde hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7eb4100f hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x912a23e6 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0388643f sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x07f46a6b sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0cd4de14 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2d36e667 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5240429c sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5b701c77 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x613e1375 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8cc50c5a sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa17a1bfb sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe6ef1be3 irda_register_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0a5789d4 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x471876b3 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x48527ece mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x604d8bd9 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x83c7218f mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xb0da945b mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xc57b4795 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xe9a07518 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x959596e5 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf9a226e6 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x7c44fed4 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x028614dc register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xdb25143a pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xecc0618c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/sungem_phy 0xcf14260a sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x46f95d70 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x543d1a07 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x7f51bbe5 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xafedc6b3 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xda0cb0d1 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe160ad53 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xe93b944c team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xef69881c team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x10e021fd usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x14c4ca92 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x89a4261b usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xdd5a789e cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0356cd69 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x04565a10 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2c2351f5 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4663970e unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x485880fe hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4a4efd43 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6e638eb6 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6ee7b5c0 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x93963ca0 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa3ce4b38 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc9cd253f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x65054536 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x3a3264da stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x8e7b14b3 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf2f24417 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1c03dfbe ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3a52eeef ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x458f8eb2 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x538c5032 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x630b0168 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x757f1384 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7cd7da12 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x891f4aac ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb3ec9e5b dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd42fff97 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd4ce6d87 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfca716be ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x013b8228 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0e973400 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x141d23eb ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1c1acbf4 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x40f5fb4b ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x43ccc865 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4585b135 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4652534e ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x55cbc620 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6233bdbc ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8510b604 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa0e75416 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xad467433 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xea6b5a95 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xebb110b1 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x13a8e7e8 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x51eb3473 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6179d394 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6c4f3e16 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x76651a44 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaba2c5f7 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xad9156f4 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc6343744 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc79d3577 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcd842947 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdcef7acb ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x05df5c69 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x09918042 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0d0842c0 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x10953d5b ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x253c6266 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x285c9505 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4fdd12b3 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x55d1a5fb ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x56685f52 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x578aa36a ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57a19240 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57e625c3 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x603ea43e ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x64efb808 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6dd86830 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6e586aec ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x885bc7a7 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x990b741e ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa52261ff ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa868a616 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe9ab2ae ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc9ea39df ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe45afb70 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0001b07b ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00a233e9 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x050c5b15 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0546a07d ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07a42b30 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x101dbc4f ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1136e710 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12b706bd ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x132d3201 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15639888 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x175895c1 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18b5c3fb ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19f098d7 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a6fa104 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c0c050b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e216072 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e54a3c8 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2031cb5c ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x204ea50b ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x289d4255 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cef2a9b ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ef383ca ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3309252b ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33c76d8e ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35c12424 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38369254 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e122f3f ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x443f810b ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4727608e ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d42dcae ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f257b68 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54582bf3 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a8685aa ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e2f148c ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x600b4a81 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60b21c2c ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61be5bb6 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x642798a6 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65b6b2fa ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66613665 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cd93be3 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ddf010a ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ffa810f ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76a2f441 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x776bfc35 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x796f2ec8 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7975541b ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a9eb715 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bbcc431 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ed473cd ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fd18ef8 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x820b8758 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89d35021 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a084fa8 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bfb2c2c ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dc1fda8 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9570fbd8 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97950a52 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97e594d9 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x991d1459 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9940d375 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9bb0c626 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c188abe ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d0d418b ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa043591d ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2be6bdd ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6d74b04 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9674cac ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9ed3af5 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa4bfdcc ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa913a9e ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab54f1d9 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabefde1a ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaea2abe3 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0dc29b2 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5cbd638 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb722f8f6 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8091c9f ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8d8e423 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba46867c ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd1f1b35 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0598ea2 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc41c833b ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc783dcc ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc81d75a ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd2f2faa7 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5a20ff1 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7490c77 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd87394f3 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9847987 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde07fdd2 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf94645e ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe689b44d ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6cef640 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8bdb207 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb0b38ef ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed27d21e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2c8e4df ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf857e765 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf870c44e ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc839e2d ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdebcba2 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfeb59e75 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffe6976d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1ed90fe2 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x921b25aa init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe0478e00 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x071a1c3e brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1c58fd44 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3329cfb7 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3cc8e75a brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4a024492 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x59e50808 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x68ea521b brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x72e3a4cf brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x870cac2b brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x95303f09 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa3b6edc1 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe3cbd594 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xeac7f3aa brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x059ca526 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x06739143 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0d2c6c72 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2694604d hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x33f97d92 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x38143cff hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4fef2e8c hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ea80386 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6103519f hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x652cf557 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6ba4dde4 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x78dc6665 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c6cc03f hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d8f1c5e hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0c259de hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa7849e0f hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1f6fb3d hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc25af1ab hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6a788e0 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd2c57ac2 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdbcbab2f hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xea5f5136 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xefe51329 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf0dda21e hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5562c98 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x02e61a6a libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x09ff266a libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x185b6cd3 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3e76341b libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x576bd903 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6facbc29 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7633e626 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x80b47f55 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x86c3881a alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x884027d6 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a99583f libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8ee90d15 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa05f04d2 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa7d36576 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8c0c2d7 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcaec58e6 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef3abf2f libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf326b304 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf5c65922 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf864c20e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xff985ffe libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05dfc567 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x065a11f0 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0947b962 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09a70d7f il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bb5c1bb il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12d492c1 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1952e308 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1daafd71 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20da0d68 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x219b8fed il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23500b14 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23667af6 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x237212ac il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x258e0cad il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2613baa6 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x276c14a0 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27c0d9d0 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x283cdc08 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a8324a9 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a90b1fa il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c3c1d49 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b18a193 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3fb33f57 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44b6be52 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45150880 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x460557fd il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48d561b6 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x495f0942 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ba14da8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4da8438c il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e84862b il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4eb39071 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f2636c7 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5125e113 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51576dd2 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55cec48e il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59b5c43c il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b251a11 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f608140 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60d756ec il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6151f206 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66e7e5b0 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x672abe96 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68d27525 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69be6e05 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ef4b52b il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x721fb6ba il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75ee2cbc il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7946e8f4 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e190aed il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8046b62f il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83653adb il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86e8de7a il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a2c67ff il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e1ab6ac il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x938e41f8 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x983b5ee2 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9928bfb3 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b267e1b il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c20222b il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d257ae9 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ffed067 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa014a4bf il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6b8bf62 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6bd75bc il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xace11842 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5c73118 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6470ca8 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc73cac2 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf4f7274 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc101c457 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc33c9c67 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39513d2 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc51e06a3 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc51e1bda il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6187864 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc99a55ac il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca4dec71 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2cf083e il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd387fc0f il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8ad61d6 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9d35025 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9ebd735 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb1112ca il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdefc50da il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3e7ef7b il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe449af8d il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6b1e4ff il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8c7962c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb2698f6 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb6d71c7 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefea4b00 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5c8722f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf742ed21 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7e4b00e il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf894abed il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfaddf1a1 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbabb228 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x43bd13a1 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4c1f5e05 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4e8224d0 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5c412023 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x65feda96 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7fc41d97 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x843aa5e9 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb117eef0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb1ecb5c0 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb2cc900e orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbc024c44 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc39d7daa orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc6d138b0 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd84f520e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe346a288 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf8851ba7 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x8592e2b1 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x014a540b _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0246554c rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x07c399da rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1de09931 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1ea39065 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2876f6ce rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x29c92632 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2b551a72 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x41eeaffa rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5c0216bf rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5fd72415 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x60e8e944 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x665aff23 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x68797a86 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6be6d750 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6d51db8a rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x71562695 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x71c7cc03 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x77dbcbf3 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x85c913cc rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x89283bee rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8e676958 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x90f8fe4f rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x92713d8b rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x99192e2b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9b5157f7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9cb7c7cc rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa072817a rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa1e4604f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa5870acd rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb06b3693 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb88ae808 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbb640ed1 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbbabe6e3 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd6877179 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd92007d7 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xde9e0080 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdf89bb39 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xedfe7f4e rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xef6ccc02 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf0c743c8 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x00d1bad3 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb80c0e07 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb90fc9d9 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xf0195d9b rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4957ba0e rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x5c9dac69 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x9c24161c rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xc26f27d6 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1cbf3a2d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x202a3b44 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x20409570 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x24d54c6e rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x25baf141 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e57b70f rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x36ab422a rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3f858b1d rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x404966aa rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x42407b3e rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x45d2310f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x463a896b rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5645bfae rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x59cf5634 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b30ade2 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5ffdd233 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x65502c96 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7bfc8f6e efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x86399185 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x893d956a rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x958dd1ce rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9dbf4ffc rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9e42628c rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa69724c1 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbbd3f7f5 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbf84cc9e rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc32625c2 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc61b1971 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec30e8d7 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfa799d3b rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x12de5482 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa7492385 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc7c6d6ac wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd73ba4fc wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x0a6cdefc fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xcfd4c071 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xe32b8ebb fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0x17ff1830 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x1bb2d289 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x4a6f147a nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x8557a394 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xf8f64427 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x71502fe1 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc1440878 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x7cc983e4 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xb64e7a64 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xd394102d s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0a008162 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x16e0d790 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x187c1cd8 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x36653530 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4a7d3334 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x55398cc3 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8b5e60b6 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcfa7bba7 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd0e01853 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xde490f5e st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf25e528f ndlc_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1ada0989 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bacd368 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1ec01d05 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2064e8ba st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x24894fb6 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x374111e4 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4f39e03d st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x697c57d1 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x76163da9 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x78208491 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa6f98a67 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xadcd6391 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb532218e st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd619a701 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdec95cfb st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe0b565c5 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf360e1b3 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfb3c5a39 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x1c2d44a3 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x20d3866c __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x21c5aed8 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x54da0cd9 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x99dcda11 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xae63b364 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xcc9abfc3 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe03b76fe ntb_set_ctx +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x44060a55 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xc994bb94 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x8d2e5892 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x06ae5e21 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x187c7149 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x1e317c39 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x23aa2a75 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x30a2d3ce parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x369d6b56 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3957123e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x47257fd1 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4d770891 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x531017e7 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x61bc5ba9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x65e675a2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x7d425bf5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x7e55613e __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x7eb228cc parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8809ea25 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x8f205e76 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x931d07cc parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x9967d1dd parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa6da7633 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xa7c18427 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xa865cec9 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xa86966bf parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xb06869d5 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb19997b5 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xb3c75d9d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xb657d14d parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xc836207c parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xce088f6b parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd7f74849 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xe0fe52dc parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xea60af14 parport_release +EXPORT_SYMBOL drivers/parport/parport_pc 0xb3526654 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xd5c9664b parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f81ab02 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x10c69cc2 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1ec73a71 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x258734b7 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x30d443b0 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3f34c838 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x52d5f25e pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x58114813 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5b4d30be pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5b8f1b90 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7312385c pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x77824c04 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8236fd5c pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x85d3e43c pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9363ec88 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbec80c1b pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc2134332 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe797db7d pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfb2acb48 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x01abbe5f pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0607e06b pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x15092ca5 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1731d030 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3ebb3b54 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x674f2454 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x82cddf2e pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbd5fcb50 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd6d62882 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xec2b7116 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf581e818 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x3d4256e7 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x75149e91 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x2759178d pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x8dfdf7d3 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xdcce921c pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xf789c241 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x331aaa93 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x5a6381d8 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x8656d4e5 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x88f0576a ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xc31a1449 ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1b20c4a0 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x252dace6 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x35a421d6 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x556a6ae4 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x902653b2 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x94c6cab1 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb0af26c0 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd290f814 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd7ef77c2 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfc4f8048 rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xd0165dfa ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x071d52f7 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x580b7642 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd1aa5158 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd1daf41f scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1da17071 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x24548479 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x25a4dec0 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x32e95c39 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3fb47ff1 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4584975b fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x673ffde9 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x70d1a79d fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a472f78 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x888149c7 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8b1cc34f fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc27fe8af fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06b6319a fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0931a668 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10e58e4f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1644f885 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x20f8409f fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2e105bbf fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30744d7f fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x312a9e17 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34b75424 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37b4bb0a fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37c6139b fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a9425d6 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e1ce80b fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f6c2271 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x41bcfdfd fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x469255da fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c501250 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67f85812 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c7fc73f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74c5edfc fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74ce7fe5 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x751b59e7 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ad00381 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7e80150a fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x807840b4 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8425e06f fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85092493 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98522234 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x987c02fd fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad049d02 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf837180 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbee973c5 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc45582d2 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc82c6406 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca8e6c82 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd461aec0 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0bd1abb fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe651b986 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe70eb433 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe869b42a fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf422afeb fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9c607ad fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfaa1bafa fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1af84405 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2f656b09 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x343c46f6 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc38a90f2 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x34f5c919 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x088b3d1a osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08e7d287 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b79f650 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f9949e3 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c8ceab6 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c3c7cdd osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x328a91ec osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x36a56f78 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x390d14f5 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4917a9d9 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x551036b0 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6a8689a8 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b6c4587 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x743ddac1 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7935ab68 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8132d06c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c63a6d7 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9de0b17a osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa243a2fb osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xacb5a217 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad84da8a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb2e8dfbe osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb751212d osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb79816b8 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbdb4ac67 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc2c13d88 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb12b4d8 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xccb47970 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd197c7fd osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd8d0c2e9 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2fe05ec osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3ecf41e osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3f6f3eb osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe935e971 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe97d9a44 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfda5fe95 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x48e73665 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7f5e40a8 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8b3c6ea0 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa4aea76b osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe8db6f26 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfa01a1a8 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x24d58c47 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x29d74c76 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2c7cca74 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3eabb7f7 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x53ecdaf5 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x60c7f8df qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7900c9af qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7dd95a6e qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbf0140cd qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc1cb0992 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc81a9f49 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe12bddab qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0d3150a4 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x162334d7 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x326b4776 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc0ff93e1 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xef286b45 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf7dddfcf qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/raid_class 0x362de179 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x7e0b7356 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xd18597ce raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0cf3b612 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0ead1874 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x317d1375 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3564a046 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3be48300 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5e0a492f fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x68686e34 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x93f4e995 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a639c1f fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xea7a8023 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf26d06ea fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xff7171de fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xffb93990 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x13bf63ac sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x24efd07c scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x303492ee sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d92ad88 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x449915f1 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46accf46 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x48ac0362 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4dbdd91e scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x58c83155 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x597e4b9a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5de19595 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f2005a5 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x691a5006 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75e75d09 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x76600917 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87abf0f8 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x97586297 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9811ceeb sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x996374e5 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad845634 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb94645e5 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbd1bd5da sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9437cf5 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd4cb8bd5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdfd3eba9 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe00c7578 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe104840d sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed28bf20 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x50a366ca spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x74d6e2c8 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdf6217df spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe575cff5 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf9edd29c spi_dv_device +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2b26b374 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3487be0a ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x50d925e6 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x715c31d0 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x820b1994 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x83a6f422 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbe8029f4 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x0baa6e89 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x0fad006b ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x1493b44a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x247411e6 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x3935228e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x3cbf7ffa ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3d8d459f ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x5e91e315 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x70480455 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7d4452e6 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x91f989bf ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x98750dc6 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xa45baf38 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xa9184283 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xbe935055 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcf91efc4 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd5e6c0d0 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe006ddce ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe4d0f0e9 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xf0ee935f ssb_dma_translation +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x11a14cb7 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1c4d4fe4 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1f79a6cf fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2272c020 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x27ef3bf7 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2c800096 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2d0ba154 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x479c3fb1 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ac8daa1 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e39c927 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7c467116 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7da4deee fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x88782d8d fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x98f1efaa fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa5d990a5 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xabf3e7f8 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbb592f5e fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcc65bfee fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd2c5fd44 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd945cd60 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xddec574a fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xead63dc9 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf8b33ded fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfdfd1836 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xa735cf2a fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xb0958cd5 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc73a9fb5 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3793ad16 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x77a7aa07 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9a588097 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xd1efcaab hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x114d72cb ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x97a84d5e ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x6a21d0ed cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x4e63a0bc most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cc6d4b5 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e8ff617 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b08c375 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b8797de rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2217616b rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x225162e7 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24371547 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a2a9eb9 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ef6c9e8 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3246694d rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3bf8e4ed rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ccf4475 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x55aacf1d rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57109ce1 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b3f2ea7 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x619917e9 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x69c41a1f rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6eb87d21 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7bb01ce8 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e2afa72 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x82c9f025 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84c434ec alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a3b4808 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8dfbd6be rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac667a2f rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafb28cd6 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6c80726 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb9925cd2 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0ba131e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc3c90475 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc527aff9 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8d80be2 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca2c652f rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcef4f3a6 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf30df4a rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcfb578f2 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0938a01 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd212d1bd rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd43564d3 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6c165bc rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdbfc926f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xddacda38 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe08cdd77 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe18e5284 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9b464b0 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed6b9fd1 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef385033 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf29d36a2 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf62e9596 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc8dbe9f rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01ad5bab ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x025f9fb3 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x138c40eb ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1436be02 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17b1566b ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x193f5876 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b073989 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2568c6f8 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27b01433 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d090507 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34b5bada ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3aa59080 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3b823d32 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e4ad7e3 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e8aa1bf HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x40773938 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43f7bb05 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b0edb7e IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5e7fa5af ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x692324c7 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69fb138b ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a539130 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7be1685d ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x84ced785 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x85752731 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8eeed88f ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9151a32f ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x932b68db ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x942c1cd4 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x960b9cf7 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96cbb61a ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b257e89 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e4437c9 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2427e7a ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab5cd6b8 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1b7adb4 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb64eb2a1 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbf639fe ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbde48498 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe6fa61a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc228b9c8 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1fa0227 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd597cadc ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8f718cd DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda1b6c9b ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf6378a2 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe0097ea3 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe08f2bad ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe9e6a900 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeafc1384 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6dca204 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9e21689 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff7739e8 Dot11d_Reset +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0070a0ff iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x00a7d39a iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0305f6ae iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x23b2e845 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x309b93d3 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3b2df5e2 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x529a7e11 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57065115 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x618843f9 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x67f39762 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x704f6312 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x76cf7768 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77b9e9d1 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8bcab452 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9f0621e9 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa1483fe5 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa8a6d4b6 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbe4447ba iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbfa86f5c iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc4ef2c84 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc568b643 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd5f43780 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd97240d2 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9b44594 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdbcc6524 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe5cb23bc iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe9369800 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xed225dd0 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/target_core_mod 0x01759943 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02c918c4 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0724f75b sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ce4a282 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x14b3b2e7 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a59d607 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b2adef1 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x21352a0b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x24f9502f transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x265851d7 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d38e9bd target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2dbf6280 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f9e7ba7 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x31cfc988 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x370026ae core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x38a752a9 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a825fac core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d414133 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x413a4e51 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x432e521e transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x4910e8db passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ffb78f4 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x50789bfe target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x5317e98c target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x5840a72b transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a709147 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x61b5dc62 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c74482d transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fa2b2b3 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x72aa82c5 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x781b1fe6 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ace4e86 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7eb6dce6 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f0dc324 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8187dcad target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85675806 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x861802b3 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x93a2481f sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x947e0891 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x94efa27b target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x95462548 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x99ebe0aa target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ac17856 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c74255b transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xa126b58f transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9a0840f core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb56fae90 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6234364 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6a62536 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb81b26bd transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcbe3d6d transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xc13829af target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2c4c811 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2d37aef transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc34b2f29 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9489b74 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2249283 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd943ed82 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd87d34c target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe60ef820 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6d531dc target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xe79d6751 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xedff58b3 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3529d1e transport_backend_register +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf175ad3b usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x6081ef6c usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x825e0c42 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x07748329 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x14a57f1b usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3d060ddb usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4b97215e usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5782b44e usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x651fa553 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8d35b884 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa98bceed usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaac03129 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd8f6e616 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdc1a44f4 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdff81cbc usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x5b494fc9 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xaf117fb0 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x14085590 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8a11620e lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8bcb42cb lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf2e8ba0d devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1c6769e6 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x406803fc svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f29eb7 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9c17b6a5 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa83f3846 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdb7d6b5c svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfdb4ea80 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xcc6086bc cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x2c4a66b2 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x3c10121e g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x915b3aaa matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x0d118a52 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcddc97a2 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe182cc00 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf6efde6b DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xd63c76b8 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x5b4c4b94 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x75585180 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x7bbc14ee matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8ed8db3a matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xad90e222 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x6c951d60 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x970882fd matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x034a17f4 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4cce3c88 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x85adeb45 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc9fffcb1 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xee3350b0 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x9ddffd2f mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x358af310 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4b0dfe8b w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x865f09c4 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xce43c78e w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x605dbf19 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe15700fc w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xbcaef564 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe9b88ae w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x13152a85 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9f725fda w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xb917ed99 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xead49b4e w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x157c3c81 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x187b24a0 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0x24a36feb configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2a0f1856 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x3d61292b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x3f1865a9 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x5a822ef8 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x5c6ec4c8 configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x81a047c7 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x915c3eba config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xa0768c97 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xc4e84e13 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcb9fa6fe config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xd41f7c7a config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xeb676343 configfs_register_default_group +EXPORT_SYMBOL fs/exofs/libore 0x21d0d30f ore_read +EXPORT_SYMBOL fs/exofs/libore 0x2763b0ca ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3983dfe7 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x55da8d70 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x5c29b3a9 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x6d418bb1 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa48647a0 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xb76bb6e8 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xefd2a6a8 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xffb7784b extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x0ddbc73a __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x19da948d __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2450ceea __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x24ff2f6b __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x34ecb484 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x36be075d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x3c91f856 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x53bf5705 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x55d1bed7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6347e0de __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x6636e125 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x6c59fd71 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x70abb21d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x77f53a57 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x85ca3138 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8e387325 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8fe0abda __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x99fb98fb __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9c076151 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x9d178a3e __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x9d2b9272 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xb5e6fd1d fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xbc96ff43 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbce292e1 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xc7145bd0 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xcac6dd0f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcdbc6ecd fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xd2ad25cd fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xd58be622 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xddbbf02f __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe3328cd6 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe8e85f7c __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf1bc1eec fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf2af45ed __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5339dd2 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xf8685b55 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xfce12a2c fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfd27abe6 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xfe4f2a61 fscache_put_operation +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0663aaa0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x166c5fb9 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x43998509 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc4966ee6 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe1d3417d qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x6e39ac9f lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x6ebf81f2 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x67559a9f lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xb77c4405 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xdf32f9fd lowpan_netdev_setup +EXPORT_SYMBOL net/802/p8022 0x6cd2bdd5 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x8db9f7e4 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x0b343130 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x65f8ade5 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x108e44bb register_snap_client +EXPORT_SYMBOL net/802/psnap 0x586b45c1 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x05fef5fb v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x0c7f0179 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x0ec28185 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x11896bf2 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x13aa61b7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x195ec069 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x1f8a06ac p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3128a21b p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37174395 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x3821f5eb p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x38e0b08e p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x46477f24 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x491c620c p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x4b8e75cc p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x4dac2cd1 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x5ee0ccd3 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x63708137 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x66a8d04f p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x6b4f924b p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x721ed8dc v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x723e9bd4 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7ca1e3ff p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x81af6e96 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x856c2af0 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x87f73ff5 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x8ae24670 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x9019a7ca p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x92c6d4d8 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x954391de p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9a928862 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9c446c72 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xbf8b3ec4 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xc20b018a p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcfad535f p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xd6267cbf p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xd9cffe59 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe0da9578 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe890e956 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf3bb8598 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x3d53024a atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x697bdd9e atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x790646dd alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x80bba621 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x013b88b7 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x142a0468 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x14a27889 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x1e748842 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x27802543 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x2c025c20 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2e4fb10b atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x31bc5a7b atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x3805d8f9 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x3b37d5a6 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa9a163da vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb27b06e6 atm_charge +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd37b9399 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x574dcf3c ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x64c5b147 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x79492a74 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x7d1964cf ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa74c7978 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb1a27aa5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc81e3309 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf9dcf0ad ax25_linkfail_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x12510942 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bc6d8ed bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2042d6cb bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20660b1a hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20ebd706 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25b13879 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27b920ab bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a6c1660 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30807ef6 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d3c7717 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x40973c0d hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x463d8d23 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4be47b13 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5cec4449 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d5da2ef l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5da79934 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ecaf1a5 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f26de59 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6a09c0ee hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6fae4f0d __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77b1b403 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x785c572b bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7e960665 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x887cb556 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x935c7098 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97dc61b9 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x985de513 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x986b1d6b hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa312751d bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9e9b260 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb4fafbf0 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe764a7d bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2a063be hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0fe24a7 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4fbc6b6 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd6a38543 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda434e1b l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde1e8faa bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe270ef86 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3508212 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec29fcca hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bridge/bridge 0x3a88bbed br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x1aa74cc6 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4df1734a ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa0fafb0f ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x12e32042 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x28bae014 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x3024dea2 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x89b01c4c get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xec4a245f caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x2e8f46c8 can_ioctl +EXPORT_SYMBOL net/can/can 0x67efa806 can_send +EXPORT_SYMBOL net/can/can 0x76d2c054 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xb06e4538 can_rx_register +EXPORT_SYMBOL net/can/can 0xd6e9e153 can_proto_register +EXPORT_SYMBOL net/can/can 0xf5e33a14 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0b5707e0 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x0df545cb ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x115b721f ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x132afd14 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x17f1cdad ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1c9e42fc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x1cd37cc0 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x225ffe62 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x239523cc ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x267a1dae ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x27a88f45 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x2c901d35 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x2ec20999 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x328d5e7e ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x33408156 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b448ef6 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x3b84b17c ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x3b91aaef ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3bbbae0a ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3e19c144 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x3f058deb ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fb16b97 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45cfee55 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4d50fc63 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x4d904835 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x4dadba77 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4df08508 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54927082 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x5516cab0 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x57ae0e73 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59d67761 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x5a8da02b ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x619c3798 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x682f3fbd ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6dd66973 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x7a3c04bc osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x7f5f6a38 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x8367eddc ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x8c48f141 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8d65c1dd ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x8dd0c109 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x90836a45 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x94e032dc osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x96193a02 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9811b9a5 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9bdff024 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2ae5d12 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xa30ce237 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xa824bad7 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa8844b31 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xaa523eb8 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xaac6fdf6 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xac4c9419 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xadd1f85a osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb03fa992 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xb13ffeb8 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb34a2d44 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb61fcea2 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb726594e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xbf38d7aa osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xc1a5d77b osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xc391ef7d ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc39c24a4 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4899f44 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc694aa20 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca66b126 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbbe392d osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xcc05fc0f osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xcddfc967 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xd08ae354 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4591b0b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xd4768b83 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xd4fe1c22 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xd50f4779 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xd71cbd33 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd9252d1c ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe4dc6f17 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xe9f05ad3 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf118624a ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf60d57e7 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xfb27fab1 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x64179d84 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd6e78bec dccp_req_err +EXPORT_SYMBOL net/ieee802154/ieee802154 0x04944afe wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6035bc3e wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x769bb861 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9de71857 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb5d938cd wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf01279c6 wpan_phy_for_each +EXPORT_SYMBOL net/ipv4/fou 0x2cee1cc1 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x504bdecd fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1195d89d ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x4f325254 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x812a6c3a ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa954df89 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb550e835 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xbeb1a266 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x18a805fb arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2eb44180 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xb388b8dc arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4ec8b67e ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8f55376a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfd6fced5 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x8b6eda5f xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xc4651351 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x7224febf udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5ffecf54 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc30afefc ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe4612aba ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfa7e743e ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0c288f4e ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x35c83d39 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaa52c035 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xaa17341f xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf8197ad8 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1ab855d0 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x819f63af xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0b15433c ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2419c55c ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x303abfa8 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5c9ee5ba ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9aa4037c ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbd9b66a0 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xde28dcbc ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe40a2ac9 ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x018e0a37 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x01f552f8 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x04baae80 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x05795bcc irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0d31bf55 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x13f9c852 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1a5c5c02 irlap_open +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x233e53f1 iriap_close +EXPORT_SYMBOL net/irda/irda 0x23838c79 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36d91d5b irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x45481121 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4a381809 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x57788b48 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x62a6e4bf irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x78f09e7c irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8d227536 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9d99770c iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf678fff irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xc04c39ce alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xca5c279c async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd4e24e1c irlap_close +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdd180fdb irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf3d5ad3e irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf77a986d irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xfd9658bf iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0xe9a25792 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1de72950 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x2306b24d lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x37ea30a7 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x45fa9f8c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x4cffcc98 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x56f4519b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xe9bac247 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xf026cd75 lapb_register +EXPORT_SYMBOL net/llc/llc 0x249c855a llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x2822aaa8 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x492a7180 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x56576d38 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x7a8d9a9d llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xa1384135 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xe8c64142 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x050132bc ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x073c2acf ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x08eb75ba ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0fc98fb7 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x13af7cd5 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x144c195a ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x2578c346 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2b2fcbd1 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x395cbcb3 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x3a35fe8e ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x4345daee ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x4766d6d3 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x49785887 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x4a554eda ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4ebd14aa ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4f9de583 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x53cdacf8 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x544a6a92 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x58769f9f rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x5979c358 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x5c2c65a0 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x5f073422 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x5fd86435 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x639901b0 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x66428aa1 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x67b26fa0 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x6b2e51ba ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6d8fe691 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x71002c66 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7288cbf4 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7b3a0601 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x7e1176c4 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x7e2a0376 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x811eb653 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x827fb68c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x8654ead2 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8683e989 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x8780ff4a ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x885372fc ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x8bb6b6ad ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8cc38c5a ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x908e0bc9 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x93a13910 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x96c4d21b ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x9b055a33 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9cf79f19 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x9e0cfdfc ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa1d6b0d8 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa6040790 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa707a24f ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa72ec056 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa8b471c2 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa929dec7 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xabafa7fa ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb0a0e94e ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb1984049 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb1c82d42 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb6b2fa10 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xba389fc1 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xbf9ae88f ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xc0421517 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd23da006 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd4648134 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd49ba44f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd545a77e ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd624e56d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd65c2358 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd9c00b71 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xda523b87 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdbf2ccd9 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xdc3672e3 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe29db4ae ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xe5886624 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe6fd563e ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xef88250b __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf3119c55 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf5c11ded ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xff981d14 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac802154/mac802154 0x07adf375 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x5ef68d29 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x65da6262 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x7194db4c ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x79d9e3ca ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x84af3e6e ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc2848b25 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xd1dee9da ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0ec2b53d unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x23f19398 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x27d00d70 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x36e96fff ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3f75b4c9 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4120044d ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6f5eb401 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x861d9bb9 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x98b1ea12 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb83ed4e3 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc7ea14f9 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5aa2558 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xed3754de ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfa99fe01 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x25010c9d __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x51897a3f nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x58a4c08b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3dca38bc nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xca10214e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xceb4de68 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe8aa26ee nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xf18f0a49 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf2f25ad0 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x27572318 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x3bac5fac xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3dc3ff93 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x55f7c727 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x71b8ee9a xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x873fe376 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9597a987 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x98c19962 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa5d20f25 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xfd552e67 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x21d85551 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x22981624 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2c0074ec nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x3936971e nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x3a655372 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x3cdbad9f nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4830fbf5 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x4840025e nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x4cd0311f nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x4f4936c3 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4fa70040 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x6236d288 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x73c08ca6 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8fd5965c nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9da9a5d2 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb586e662 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbffe0342 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xcd399599 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xdb40a242 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xeda2d5f9 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xfc516134 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x0650eb90 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x145ee799 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x169c945c nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x1dc4cb9d nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x26b582a4 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x2c1c11df nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x2c6e974a nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x34b6214c nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x402abd0a nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x4666839e nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x573e151c nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x614d202c nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x65858828 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6b716ee1 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6c93171c nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x72d21607 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x73f36e46 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x7b35d7bd nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x87a6e553 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0x8e3f0ae6 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xa39a20dd nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xb2707907 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc6863eac nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xd13348ec nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xe4b9b83b nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xebce9fa7 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xec1d181e nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xee6bfb48 nci_core_cmd +EXPORT_SYMBOL net/nfc/nfc 0x07af20cf nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x1f6d0872 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x1fa65442 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x3513f3e6 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x3c6a8312 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3db60be5 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x3f51f34c nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x45b88417 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x4b9fe33e nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x4bae39ff nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x57d0583c nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x668a461b nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x6c2ed265 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x76ab54be nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x7966feb4 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x988b9481 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x9b45ec08 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xa39f5e49 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xb304bdec nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xb3647bab nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xc1e5c053 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xd447e764 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xee6ea4ec nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xf8ec22b8 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc_digital 0x369808b8 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7aecd443 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x914914af nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfcd87e2e nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x18634d97 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x31b5a120 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x6471808f pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xceb0a0ee phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xd80b556e pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xec9c0f52 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xf83452f7 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xfd95bcc6 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0b7e620d rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x155ee233 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x33519f4c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4e572ceb rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x50d28ed6 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5472d5fb rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x66f9b082 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x821e462d rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x98795989 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa5778b1a rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb3219e52 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbe100f91 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc4af6553 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe707426f rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe8c6629c rxrpc_kernel_free_skb +EXPORT_SYMBOL net/sctp/sctp 0x24ef1ab9 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x85d69611 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x9c923e92 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfb225ee3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1435b45d svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x8e841322 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe64a0796 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x0a8a7121 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xaa6fabb3 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x01e81893 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x03857b23 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x05719e99 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x07607782 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b5e40d0 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0b7a1f90 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x0f3bc20e wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x0f68b0d4 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x143bf222 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x14fb4992 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x16546a7d cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x16e794c9 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x181fea10 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1abd4c9a cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2048807e cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x20ef6fa6 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x26917675 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x298224b4 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x2b610aca wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x2b7cd7ea cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2eeec59f cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x3441a7b5 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x37fd1cd7 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3bb88d42 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3ea34473 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x45731bb8 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x49682273 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x4c08596b wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x4f30bc58 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x54bd0445 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x54ed8bea __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5de6ced0 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5f5eba34 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bdb8fce cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6c12fbb7 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6e5de185 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x6f1b6077 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x6fa4640e cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x726a0921 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x72967190 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7389f030 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x75b52261 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x766896ed cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7aae844e cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7efd0fe9 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8292f565 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x87b81820 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8cfee99b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x91da0057 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x94f1f92a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x95e41265 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x97b27aff ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a8b6ed1 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x9ad4d577 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x9fa265c3 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa6f19656 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xa8617a90 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xa87d8bb1 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xab835b92 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb0342785 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb1738911 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xb7b9bc6b cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xc066270e cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcac0b323 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1b9abc cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xce3d5947 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xd1c54323 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xd21d35fa cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd9de3692 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe0c75b45 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xe4f9eb4f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xe98f78f9 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xec3a8f04 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xee2f4920 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf07898e5 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf1bd0a79 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf7387a39 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf77d45f7 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xf8a890ab cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfb35114e cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfc9f626f cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x4485faec lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x717986c2 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8d10acc9 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x9b91f9f5 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc3190428 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xf964e936 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x4dbe0e0f ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xcedbfea2 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x58b95c73 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa1c3b488 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb2f017b9 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcdea52b7 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xe8f0da7a snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xa9b47a5d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0269039e snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x20c663e1 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2735e032 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x298f8901 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2cc00f72 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x2fe88c9f snd_card_free +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x421deb5d snd_device_register +EXPORT_SYMBOL sound/core/snd 0x4442e01b snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x4825c6bc snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x51d12fb6 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x5288c284 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x58437df8 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x5a20fd74 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x5b884178 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x60ab510a snd_component_add +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x77213268 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x819d9db4 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84aea967 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x858386be snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x8d47f849 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x97fd9b0c snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x9879b395 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x9b12d888 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa5fab364 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xacd852b8 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xaf2db11a snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5decd22 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xb60b79ee snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xc342bec8 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xc3a679e2 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xcc318ce2 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xccdf2cdc snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xd150b04f snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xd15a69e6 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xd356df77 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xd4f10ab1 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xd67d4e13 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xd8618145 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xdb35afde snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xdc68a963 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xe1a13f0f snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xe6429a5a snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xebfae886 snd_cards +EXPORT_SYMBOL sound/core/snd 0xf324e87b snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xfb818288 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xfc2ee968 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xfc7edd9c snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xfefd32f9 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xa01c3b92 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x079c0ef6 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x08830ff8 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x09ec06f9 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x1b9b0faf snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x22be53c0 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x252a17bc _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x2db83a39 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x2ee5b20f snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x326a00bd snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3a60d1fd snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x3e802b8b snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x48d6d965 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x4c4beec3 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4e321054 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x4eaad7f9 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5d548d07 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6186bc09 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x62f5afbb snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x63b3d8bd snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x648174c1 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6658fd36 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x67ce6f84 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6a6d309b snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6f4fab42 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x718eebf9 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x75d17331 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x78233050 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x78913d72 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x7d2ed831 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x842de4a3 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x86fa7c44 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa2505447 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xa42572a5 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xadae2a12 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xb97ace67 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc13719d6 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xc257442c snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xc32ee708 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xcd7046ba snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd0c773f0 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xdd365bf4 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xe00ec9b1 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xe4cbc2fa snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe71a5322 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xf52485db snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xf538ff69 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xf80a3fb4 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2012dcd8 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x37a29573 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x45ded443 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x57d1cca8 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x602e9c1f snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x623d7e7e snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6fee4339 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8aa112ab snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95691041 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa9b87ca7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb58b4fbf snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xba6342f4 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbf4b4961 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc015c8b0 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd1a0628c snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdd43ea18 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfeac1737 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-timer 0x0b456577 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x18087491 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x2929d975 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x348a5036 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x3a2ed9b5 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x3e5f7de0 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x55651267 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x70a7d7fb snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x7646caa3 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x7d1469bb snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x8486ca51 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xa37fdee1 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xe92b69d8 snd_timer_global_free +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x8e2d7f4b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x16f6e221 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1aedb801 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x36b9ae2e snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4fb5358f snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5e6fd688 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6f389b34 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7803164e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc4bae853 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd9ebadb6 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1ece0714 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x383e320c snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5bd19d28 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6081bbf3 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6f8c2e7e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8426f072 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x922312f8 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc2c4e415 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd046d5c4 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04918471 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x071b22d2 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0db3afa1 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d3c7833 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2236a306 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x23a41e6f amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2b0093ed cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2c02ea8f cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x40e88ac0 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46b1b45a snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46d82eb5 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x528a3af0 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x57105879 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5e072782 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63b19a39 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6fdd40a7 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x837441ff amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8767e44c amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93c93f02 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93f2f63e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b7190a4 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa0f33468 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab7ca915 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2d67ca6 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb5d3fd79 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb6fa6b07 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc37027a6 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd85c91ca fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdccedd4e cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdfb487b8 snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe9ad7d62 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf60cec90 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xb5f4ff19 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xf3bc759a snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x05dc1cc3 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x375a26b6 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x390ed302 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9006a9df snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x97f42b7b snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa0df9731 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc124ecac snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xec3542f2 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0d548f1f snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x18ba1c83 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x20147efc snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa1172ef6 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc3e2df90 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xff86c359 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0e50b325 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6a7ca822 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x8373295b snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9238fafb snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x0e4f0433 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc11a9988 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x71066998 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x80eb55dc snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa3cb9944 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xce08c60e snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdc194c07 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfa5e484e snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x10557459 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x226a5ef9 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x352756c9 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x92005aac snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xedd9b6be snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfd9ca54f snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x049fa7d2 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0c1bfcea snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x218142c5 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2b8ea3f3 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3dadeb27 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4e904795 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6b080c7f snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xde927700 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdf37b08d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe85bc0f8 snd_sbmixer_new +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0dea4f43 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1b076428 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1d558cf5 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x22a8fbbb snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x34d8c40e snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a6fc792 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x837476aa snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9c7eb1fc snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0734b60 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb357f9f6 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbfa4eb8d snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcc5dbc70 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe1f36fe6 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe6193ea7 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1803b5c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf4a71e87 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfeddba3c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0ef47e22 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1ab6ad8d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2f89b86f snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6807b046 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6dd79271 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x92d45ac9 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x99186cbf snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9b868207 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xac8fd18a snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x46ec6ff7 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xaf905280 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdefdcf7b snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0ef402ef oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x17ec7fc6 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x20059d2c oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x41862c3b oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x568daf19 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5f49d5ce oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6b871417 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x79ac34bd oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7cb9ce44 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x887999e5 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x92467339 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x936c4da0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa08f93cf oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa35fef4b oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa5b9f726 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa458ab8 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb70d88fb oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc7f88948 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9a46d3f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd395b7b4 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe32136b3 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x04558438 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x97e44dbc snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbb978b63 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd90f5094 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfd5d2ab0 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x348216af tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xe45ce761 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0xcec85a88 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0dba2a5d register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x3a2e1edf register_sound_special +EXPORT_SYMBOL sound/soundcore 0x3d4c7705 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x635b2a61 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9a64da0f register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xb33648d1 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x05bf9285 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x150ec28e snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x22496631 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x490dae9f snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5cfc1e01 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb1dec86f snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2ceb3928 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2d9030a6 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x56c8418d snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9752a6d3 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x996b4a11 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xce8601c1 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf17b7c14 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfc07cca7 __snd_util_mem_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x078d00a3 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0003f778 mmc_add_host +EXPORT_SYMBOL vmlinux 0x003674cf of_node_get +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x005eaab5 mount_subtree +EXPORT_SYMBOL vmlinux 0x0064d55e compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x0088983b handle_edge_irq +EXPORT_SYMBOL vmlinux 0x008b6aa1 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x00a38573 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x00ae9585 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x00b4b5c7 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x00c2f68a i2c_del_driver +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00f197e6 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010c22fc kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x010f2900 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x0115b8d5 do_SAK +EXPORT_SYMBOL vmlinux 0x0120ce6a tcf_action_exec +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x01296770 netdev_crit +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012d942d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0133c90f scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x01437da1 posix_test_lock +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x017caa1d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x018475df of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x018b4f09 __devm_request_region +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x018e4f4e key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x01bf48da sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x01e5510b macio_dev_put +EXPORT_SYMBOL vmlinux 0x01f7d6ac dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x024fed59 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x0258cb28 pci_find_bus +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026f0b8c get_acl +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027777a8 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0296845c scsi_remove_host +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ae76e3 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x02bc2b68 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x02e73ae1 phy_resume +EXPORT_SYMBOL vmlinux 0x02e909d3 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x0333f7ac dget_parent +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035bfb5e dev_addr_add +EXPORT_SYMBOL vmlinux 0x0365a398 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036c685c of_get_next_parent +EXPORT_SYMBOL vmlinux 0x03784134 blk_run_queue +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03856a2b sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x0389da83 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x03ba5bc0 pcibus_to_node +EXPORT_SYMBOL vmlinux 0x03dfa6a3 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x03dfd130 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x03e50722 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04309c1a ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x047115bf register_md_personality +EXPORT_SYMBOL vmlinux 0x047fb4f8 vfs_llseek +EXPORT_SYMBOL vmlinux 0x04833948 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04ae5b7b __frontswap_store +EXPORT_SYMBOL vmlinux 0x04b726c2 napi_complete_done +EXPORT_SYMBOL vmlinux 0x04c1c749 setup_new_exec +EXPORT_SYMBOL vmlinux 0x04c97cb7 vfs_write +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f99e4a alloc_disk +EXPORT_SYMBOL vmlinux 0x04faefad mdiobus_read +EXPORT_SYMBOL vmlinux 0x0509298d __free_pages +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0525c7ec param_set_uint +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0537f710 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x0572b301 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x0573fb5d dev_uc_add +EXPORT_SYMBOL vmlinux 0x05905ddb dmam_pool_create +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a9ed7e proc_symlink +EXPORT_SYMBOL vmlinux 0x05af80bd __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x05b82300 __blk_end_request +EXPORT_SYMBOL vmlinux 0x05dd0dd4 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x05e7a5ac devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x05edfe6f devm_free_irq +EXPORT_SYMBOL vmlinux 0x05f3e11a inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x06053149 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06336dbf mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06389c37 sk_capable +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x064e2748 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x065852b7 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x06595b59 d_move +EXPORT_SYMBOL vmlinux 0x0659d6e7 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0672d9ee max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x06798113 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x067ac8a6 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06b08f0e nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x06ef212a xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x06f277ec blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x06f5b8f1 __dax_fault +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0711f336 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x0719e28b nvm_get_blk +EXPORT_SYMBOL vmlinux 0x0725eda2 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0768a688 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x077e9c13 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aa25b3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x07ab3fb4 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e3babc __serio_register_port +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f5751d up_write +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x0801e3fa adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x0811901e fb_validate_mode +EXPORT_SYMBOL vmlinux 0x08187101 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x08243d41 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08575478 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x08690657 would_dump +EXPORT_SYMBOL vmlinux 0x08704589 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x08b23c71 md_register_thread +EXPORT_SYMBOL vmlinux 0x08b279df skb_store_bits +EXPORT_SYMBOL vmlinux 0x08ce06dc tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x090caaf0 fs_bio_set +EXPORT_SYMBOL vmlinux 0x09119a32 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x092aabc9 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x0944e7f3 dquot_commit +EXPORT_SYMBOL vmlinux 0x094c8450 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096196fc generic_readlink +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x09649a2c tty_free_termios +EXPORT_SYMBOL vmlinux 0x097ac225 netdev_state_change +EXPORT_SYMBOL vmlinux 0x097ad893 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09914aca param_set_int +EXPORT_SYMBOL vmlinux 0x099f2b0b inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x09a299c0 PDE_DATA +EXPORT_SYMBOL vmlinux 0x09a989ab of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x09b3f140 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d64f11 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x0a024356 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x0a14ad8d __d_drop +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a4a21a8 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x0a53b4ad param_get_uint +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a7b2770 macio_release_resource +EXPORT_SYMBOL vmlinux 0x0a8f3783 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa77a05 read_dev_sector +EXPORT_SYMBOL vmlinux 0x0abea358 vfs_unlink +EXPORT_SYMBOL vmlinux 0x0acb37a0 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0add9564 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x0ae48bac __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b176c97 rt6_lookup +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b224889 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b3d2cc3 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8887ff blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x0b8c34a9 __init_rwsem +EXPORT_SYMBOL vmlinux 0x0b9602d3 done_path_create +EXPORT_SYMBOL vmlinux 0x0b98d9fa of_get_next_child +EXPORT_SYMBOL vmlinux 0x0ba34825 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x0bbb8570 inet_offloads +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbe63e2 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x0bc1435b kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd55694 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x0bdb6a72 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x0bdbec93 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x0be027e0 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x0bf1a8d6 read_code +EXPORT_SYMBOL vmlinux 0x0bffd883 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x0c0b1358 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c261b82 param_ops_bool +EXPORT_SYMBOL vmlinux 0x0c28c7f3 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4bd9d1 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6dcac6 dev_mc_init +EXPORT_SYMBOL vmlinux 0x0c8c33a4 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x0c9f472a mpage_writepages +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca63aeb try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0caf8346 sock_rfree +EXPORT_SYMBOL vmlinux 0x0cb7b06e tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x0cc4347b get_super_thawed +EXPORT_SYMBOL vmlinux 0x0cc62f34 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x0cd13807 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x0cf82513 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x0d23fbec __frontswap_test +EXPORT_SYMBOL vmlinux 0x0d2741b1 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x0d2d8dcc key_alloc +EXPORT_SYMBOL vmlinux 0x0d3b96fc inet_listen +EXPORT_SYMBOL vmlinux 0x0d47d2cc fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x0d4b5f9c vio_unregister_device +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d797bab padata_add_cpu +EXPORT_SYMBOL vmlinux 0x0d7cd818 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dab3394 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x0db41646 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0dd2dfcf pci_clear_master +EXPORT_SYMBOL vmlinux 0x0de0b612 bio_map_kern +EXPORT_SYMBOL vmlinux 0x0df1ce5b __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x0dfe02b3 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0e008c44 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x0e35fc90 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x0e3d7096 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x0e410cb5 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x0e42d634 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x0e583ab8 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7b409b register_netdevice +EXPORT_SYMBOL vmlinux 0x0e8a2135 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ea6673d blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0ea68008 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x0ea6bf3c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x0ebe4dd1 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec9e652 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x0ee61f07 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x0ef43c6c __frontswap_load +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efd16a3 scsi_host_get +EXPORT_SYMBOL vmlinux 0x0eff7a45 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x0f155394 pci_bus_type +EXPORT_SYMBOL vmlinux 0x0f194e0d param_ops_ulong +EXPORT_SYMBOL vmlinux 0x0f425e99 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x0f4c53af d_rehash +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f861105 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x0f861e61 genl_notify +EXPORT_SYMBOL vmlinux 0x0f94bd46 pci_iomap +EXPORT_SYMBOL vmlinux 0x0fa0bbea ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc0fc40 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x0fc2875b n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x0feb8c6f skb_insert +EXPORT_SYMBOL vmlinux 0x10222869 simple_fill_super +EXPORT_SYMBOL vmlinux 0x102d1703 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x1030229b page_put_link +EXPORT_SYMBOL vmlinux 0x10444dde file_update_time +EXPORT_SYMBOL vmlinux 0x1048e4a7 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0x1052df4f nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x105e428b misc_deregister +EXPORT_SYMBOL vmlinux 0x1066bbe0 dev_alert +EXPORT_SYMBOL vmlinux 0x106ca3ca mmc_start_req +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x109670cb put_page +EXPORT_SYMBOL vmlinux 0x109f9357 mpage_writepage +EXPORT_SYMBOL vmlinux 0x10aa86a4 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x10b442fb bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x10c09e8e of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111a7e3f sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x111d6537 mdiobus_write +EXPORT_SYMBOL vmlinux 0x1138fb36 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x11482659 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x1151b2d5 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11675257 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1171b635 _lv1_delete_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a406d3 udp_disconnect +EXPORT_SYMBOL vmlinux 0x11be6922 twl6040_power +EXPORT_SYMBOL vmlinux 0x11ca2a74 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1209d04f kthread_stop +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1222dfb4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x12258144 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x1237f3c9 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x123fd646 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x124e7628 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x124ec34b release_firmware +EXPORT_SYMBOL vmlinux 0x127a57ec forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x12879f07 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x12971596 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x12991610 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x129c8507 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12aa8527 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x12aefa87 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12cdf1a5 poll_freewait +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x1307b42c blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13270665 generic_writepages +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13437d88 sys_fillrect +EXPORT_SYMBOL vmlinux 0x134d8453 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x1366b020 sock_i_ino +EXPORT_SYMBOL vmlinux 0x136dae7f input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x1372cdbb devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x137ce596 tty_unlock +EXPORT_SYMBOL vmlinux 0x13c2bde6 pci_release_regions +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dbea5f bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14006350 kobject_del +EXPORT_SYMBOL vmlinux 0x140dd7c6 of_device_alloc +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x145f1bf9 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x147ba929 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x148658f2 ping_prot +EXPORT_SYMBOL vmlinux 0x149c31a3 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14cbecab d_invalidate +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x1508259f tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x152275aa mac_find_mode +EXPORT_SYMBOL vmlinux 0x15383019 commit_creds +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154e4539 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x15568103 set_blocksize +EXPORT_SYMBOL vmlinux 0x155daec6 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x15760972 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x15836d30 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x15a7c105 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15f7d5f9 security_path_chmod +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x162f9e2a scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x16409f00 __quota_error +EXPORT_SYMBOL vmlinux 0x164e9b10 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16a451e0 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x16bbc802 page_readlink +EXPORT_SYMBOL vmlinux 0x16bd813b sget +EXPORT_SYMBOL vmlinux 0x16c40ac9 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x16d707ef generic_read_dir +EXPORT_SYMBOL vmlinux 0x16d93835 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x17254b3c kset_unregister +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1746f706 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x17502e9a security_path_mkdir +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17d43e7a mdio_bus_type +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17efe694 single_open +EXPORT_SYMBOL vmlinux 0x17f0fb61 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1802097e of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x181edf71 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x181f4d74 dev_load +EXPORT_SYMBOL vmlinux 0x18216bb7 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x1821edd4 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185e8cc5 genphy_config_init +EXPORT_SYMBOL vmlinux 0x18649368 tty_throttle +EXPORT_SYMBOL vmlinux 0x18770e2d put_tty_driver +EXPORT_SYMBOL vmlinux 0x187c85f5 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x1886011e dev_close +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188ae74c __lock_page +EXPORT_SYMBOL vmlinux 0x188bdeb7 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e735a0 device_get_mac_address +EXPORT_SYMBOL vmlinux 0x193155be put_disk +EXPORT_SYMBOL vmlinux 0x193296be mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x1977b1bd inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x19787c70 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x197950d4 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x198c8707 blk_start_request +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a85d61 seq_puts +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be5a3b inet_accept +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x1a146a21 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x1a38d388 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x1a3a0225 import_iovec +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1aa10f4c genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x1aba4b77 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x1abb4eeb prepare_creds +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1adb1e3c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1ae9e6f2 netlink_capable +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1af82bf7 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b280017 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x1b52121d tcf_hash_search +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b63bd89 vga_get +EXPORT_SYMBOL vmlinux 0x1b698a98 brioctl_set +EXPORT_SYMBOL vmlinux 0x1b7aec59 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc09582 get_disk +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bdcbfcb security_path_unlink +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c0ce06c __neigh_create +EXPORT_SYMBOL vmlinux 0x1c11047c generic_file_mmap +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c27a68f truncate_pagecache +EXPORT_SYMBOL vmlinux 0x1c3d6135 kill_bdev +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c551ad2 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c847285 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x1ca82f79 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x1ca9270e init_net +EXPORT_SYMBOL vmlinux 0x1cc068f7 iget_locked +EXPORT_SYMBOL vmlinux 0x1cc43985 __getblk_slow +EXPORT_SYMBOL vmlinux 0x1ce8c5dc bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x1cf3b764 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1cf42819 mutex_lock +EXPORT_SYMBOL vmlinux 0x1cfd6234 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x1d00c918 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x1d011e45 seq_release +EXPORT_SYMBOL vmlinux 0x1d05fc29 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x1d0e5e00 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x1d0e7844 d_make_root +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d3a9947 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d669971 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x1d821969 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x1dabb804 mmc_request_done +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1daee6b6 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc49cfc inet_stream_ops +EXPORT_SYMBOL vmlinux 0x1dc99980 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df9e772 kset_register +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e1ecadd ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e505153 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x1e52ec42 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1e5c4f80 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x1e632f56 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e80c3a6 path_get +EXPORT_SYMBOL vmlinux 0x1e97a4f8 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x1e98a17b locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1e9c2ffe scm_fp_dup +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec41147 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1ed99d2e bio_unmap_user +EXPORT_SYMBOL vmlinux 0x1eee35cc bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x1eee72bd vme_dma_request +EXPORT_SYMBOL vmlinux 0x1eeef31d mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x1f03817e init_special_inode +EXPORT_SYMBOL vmlinux 0x1f49be10 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x1f58b75d try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f880af6 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x1f8fcb99 make_bad_inode +EXPORT_SYMBOL vmlinux 0x1f9a740f skb_put +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd8e7b7 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20036e19 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x2005e98c jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200e57c6 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x202b12af devm_release_resource +EXPORT_SYMBOL vmlinux 0x20322cb1 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20527b26 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20968973 dev_warn +EXPORT_SYMBOL vmlinux 0x20a41995 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20ca9e21 param_set_byte +EXPORT_SYMBOL vmlinux 0x20d8ad71 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x20deb782 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e51dde proc_remove +EXPORT_SYMBOL vmlinux 0x20ecd32f input_allocate_device +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20fbe072 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x2119d471 nf_register_hook +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212f771b d_walk +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x2152f56c rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x2156c30a dev_alloc_name +EXPORT_SYMBOL vmlinux 0x216b63ad clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x2177c2c9 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x218a968a xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x21b72013 register_gifconf +EXPORT_SYMBOL vmlinux 0x21c09cb0 set_binfmt +EXPORT_SYMBOL vmlinux 0x21d4a8a2 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x21d9d7f9 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x21de7c24 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x220571e3 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x220d57c9 da903x_query_status +EXPORT_SYMBOL vmlinux 0x2221f3b0 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x2225ea20 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x2229d007 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22367a8f __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x223cbad6 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x2245c606 key_validate +EXPORT_SYMBOL vmlinux 0x2246a48b filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x22574571 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226efed7 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22968dc0 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bacd36 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x22ca99ef jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x23049d98 macio_release_resources +EXPORT_SYMBOL vmlinux 0x230fdd3b tcp_ioctl +EXPORT_SYMBOL vmlinux 0x23116575 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x23126fc0 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23328ee9 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2340175b blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x23562fff cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x235eedf8 should_remove_suid +EXPORT_SYMBOL vmlinux 0x23722b6d sock_wfree +EXPORT_SYMBOL vmlinux 0x2377e4dd sk_mc_loop +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b93ba1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f57697 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x23f7d85a elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x23f9f8d3 of_device_unregister +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2400089c phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x24011e0d crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24269a3d compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x24295f3a lwtunnel_input +EXPORT_SYMBOL vmlinux 0x2434ef18 kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2460f05f security_inode_readlink +EXPORT_SYMBOL vmlinux 0x2463e101 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x24774d50 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x247d84a4 agp_backend_release +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x248721c5 registered_fb +EXPORT_SYMBOL vmlinux 0x24ad362a pci_platform_rom +EXPORT_SYMBOL vmlinux 0x24b24b9b vfs_writef +EXPORT_SYMBOL vmlinux 0x24c0a1ea xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24e4d1e7 find_get_entry +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f68bef __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x24faec05 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x24fd6841 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25178e68 is_bad_inode +EXPORT_SYMBOL vmlinux 0x251d74d8 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x25270d46 bio_split +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2530ec3b sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x254970a5 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x2569232b netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25862b5b tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x25a8e347 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25cccbe5 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x25d84ea7 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x25e0cff4 elevator_alloc +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x2609d146 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x261e714f fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x2635e974 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2648d03d igrab +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265b6b82 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26725700 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x267290dd lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x2674dbc0 d_add_ci +EXPORT_SYMBOL vmlinux 0x26880faf jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x268ab028 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x2696c6f0 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26d5db59 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x26da8dd8 bio_add_page +EXPORT_SYMBOL vmlinux 0x26e19572 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f27136 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x270eb18a xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x271aded3 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x2740321e dev_remove_pack +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2753bd73 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x276c292f pci_bus_put +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x280b2bee __getblk_gfp +EXPORT_SYMBOL vmlinux 0x280f81c1 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2848c396 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x285905ab blk_rq_init +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28ab01a4 tty_set_operations +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28ad5371 __destroy_inode +EXPORT_SYMBOL vmlinux 0x28d94e3c inet6_offloads +EXPORT_SYMBOL vmlinux 0x28ddc26c input_set_abs_params +EXPORT_SYMBOL vmlinux 0x28e6ce45 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x28ed4973 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x28fc3c1b tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x2904e7d4 dquot_get_state +EXPORT_SYMBOL vmlinux 0x293f1658 dquot_initialize +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2955cf0b phy_device_create +EXPORT_SYMBOL vmlinux 0x2962f75f ip_do_fragment +EXPORT_SYMBOL vmlinux 0x29701981 sock_no_listen +EXPORT_SYMBOL vmlinux 0x298b599b bio_copy_kern +EXPORT_SYMBOL vmlinux 0x298f140f dev_mc_flush +EXPORT_SYMBOL vmlinux 0x29bc9beb __bread_gfp +EXPORT_SYMBOL vmlinux 0x29f91b23 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x2a20eccd arp_xmit +EXPORT_SYMBOL vmlinux 0x2a22a532 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3218cc ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5cfc50 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x2a8f5e70 d_path +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab5b126 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad36b20 dquot_file_open +EXPORT_SYMBOL vmlinux 0x2ad836d0 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x2af2fb92 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3d46c7 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x2b446be0 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b9c5362 component_match_add +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bafdd2d netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x2bb7cdb1 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x2bc1e042 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x2bcafac9 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x2c116fb7 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2c2144 kobject_put +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c57a5a7 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x2c720776 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c82f87f xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x2c9604e8 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x2cbc8d88 key_link +EXPORT_SYMBOL vmlinux 0x2ce0e0a5 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d0eec81 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1db456 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x2d1e7e31 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d363c80 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x2d4a957b no_llseek +EXPORT_SYMBOL vmlinux 0x2d62a1f1 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x2d641db8 arp_tbl +EXPORT_SYMBOL vmlinux 0x2d6be8cc n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x2d718903 skb_queue_head +EXPORT_SYMBOL vmlinux 0x2d77e611 update_region +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d7df715 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2d978f43 udp_seq_open +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2de12a91 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x2e0474c3 __sock_create +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e495699 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e5abdb2 generic_file_open +EXPORT_SYMBOL vmlinux 0x2e5fd203 sys_imageblit +EXPORT_SYMBOL vmlinux 0x2e681aef end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2e6ec4e5 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x2e895999 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2eab7427 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x2ecdac02 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2ed61656 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efb559a shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4dbde5 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x2f4e7ee9 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x2f8df38c pci_get_class +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb576bd bioset_create +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbc5d8e unregister_console +EXPORT_SYMBOL vmlinux 0x2fdf4804 inet6_release +EXPORT_SYMBOL vmlinux 0x2fdfce14 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x2fe13a79 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe72863 ll_rw_block +EXPORT_SYMBOL vmlinux 0x2ffbee50 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x300c5be2 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x301375f8 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x30150fba led_set_brightness +EXPORT_SYMBOL vmlinux 0x3017a3d6 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304c46e2 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x304ce6c5 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x3076a52c blk_queue_split +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307c3c10 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x30863491 load_nls +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b02842 kern_path_create +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30bf7d8b twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x30c11c45 node_data +EXPORT_SYMBOL vmlinux 0x30ca497e scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x30f0d56c security_task_getsecid +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x312b2722 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x312b3c9e ppc_md +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3164f80a scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3177a33d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x31a2ec19 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x31a9ae12 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31bea775 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x31c14d1c free_buffer_head +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31d8f205 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x31e027ff set_groups +EXPORT_SYMBOL vmlinux 0x31ec8d5d skb_copy +EXPORT_SYMBOL vmlinux 0x31fcfe54 input_flush_device +EXPORT_SYMBOL vmlinux 0x320095b5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x320a6b12 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x320aafa0 try_module_get +EXPORT_SYMBOL vmlinux 0x321f1607 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x32267ade input_set_capability +EXPORT_SYMBOL vmlinux 0x323a61ac truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x32415a43 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x3249633e migrate_page +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a6d48 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x329ea5ab make_kgid +EXPORT_SYMBOL vmlinux 0x329f3bf0 iput +EXPORT_SYMBOL vmlinux 0x32a25141 netif_device_detach +EXPORT_SYMBOL vmlinux 0x32b654e9 blk_init_tags +EXPORT_SYMBOL vmlinux 0x32b67093 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x32b83905 skb_unlink +EXPORT_SYMBOL vmlinux 0x32b8fad1 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x32c9e72c splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x3300e495 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x33231b92 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33498186 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x3352b084 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x338be0c4 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x339f85ce d_find_any_alias +EXPORT_SYMBOL vmlinux 0x33a728b8 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x33b2729c blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c61931 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33deac86 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x33eee7c7 kill_fasync +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fc50e3 iterate_fd +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34165284 security_path_chown +EXPORT_SYMBOL vmlinux 0x341a7b36 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x3428ffd1 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x343d55c2 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x3448460c hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x34546085 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x345f46ff ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x3464ea90 dev_emerg +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347840f6 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x347a44bc udp_set_csum +EXPORT_SYMBOL vmlinux 0x34869f43 block_write_full_page +EXPORT_SYMBOL vmlinux 0x3496bd07 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34c634a9 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x34c6c9a2 simple_statfs +EXPORT_SYMBOL vmlinux 0x34d729fa nf_ct_attach +EXPORT_SYMBOL vmlinux 0x34e5b65a tty_name +EXPORT_SYMBOL vmlinux 0x34ef6f69 __put_cred +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f61ad3 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35220bcf tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3569045b genphy_read_status +EXPORT_SYMBOL vmlinux 0x3576156c sk_filter +EXPORT_SYMBOL vmlinux 0x357f781c fd_install +EXPORT_SYMBOL vmlinux 0x359f20fa bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35baad97 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35ca22a8 __alloc_skb +EXPORT_SYMBOL vmlinux 0x35da5879 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x35fc9d11 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x35ffa059 submit_bio +EXPORT_SYMBOL vmlinux 0x3601d31b request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x360695fe I_BDEV +EXPORT_SYMBOL vmlinux 0x36071c06 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x363e6f3d lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x3659f1d3 udp_del_offload +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x3674423e neigh_xmit +EXPORT_SYMBOL vmlinux 0x367bd3e7 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x3683f969 ata_port_printk +EXPORT_SYMBOL vmlinux 0x36850d62 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x3685a273 generic_update_time +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a52b75 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x36aeb336 del_gendisk +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b41a23 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x36b9a983 blk_get_request +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e23d12 dquot_acquire +EXPORT_SYMBOL vmlinux 0x36e98132 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x36f76cd5 revert_creds +EXPORT_SYMBOL vmlinux 0x37065df1 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x37081814 __genl_register_family +EXPORT_SYMBOL vmlinux 0x370fe1f1 param_get_ulong +EXPORT_SYMBOL vmlinux 0x3712c53e pci_enable_device +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374647cf tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x374c8e0f ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x37553151 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x37555fc6 vc_cons +EXPORT_SYMBOL vmlinux 0x376e9cda blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x3777f186 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x377a1ceb register_netdev +EXPORT_SYMBOL vmlinux 0x377bdb0a sg_miter_next +EXPORT_SYMBOL vmlinux 0x379dd079 try_to_release_page +EXPORT_SYMBOL vmlinux 0x37a26481 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b139e2 filemap_fault +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c157c6 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x37d6e2d9 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x37d73850 giveup_fpu +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x380d090e tcp_prot +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38270ac2 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x3829b0a0 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x382d3444 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x383101e7 elv_rb_find +EXPORT_SYMBOL vmlinux 0x3845cc51 tso_build_data +EXPORT_SYMBOL vmlinux 0x385f78d4 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x386a900f from_kuid +EXPORT_SYMBOL vmlinux 0x38745d00 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a865ca lro_receive_skb +EXPORT_SYMBOL vmlinux 0x38a9e15a do_splice_from +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af4930 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x38b3595e __scm_send +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38cdf383 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x38db91e3 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x39127c41 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x392f80b0 devm_ioremap +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x396c8be6 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x39732482 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x3979bdf7 md_done_sync +EXPORT_SYMBOL vmlinux 0x398c7fec __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a04d96d generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x3a16039d inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x3a165ac5 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x3a1a2599 cdev_del +EXPORT_SYMBOL vmlinux 0x3a5d8223 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x3a60ca83 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x3a637c76 nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x3a7deb0e blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x3a8abdd0 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x3a8d47bd check_disk_change +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9ec37d vme_register_bridge +EXPORT_SYMBOL vmlinux 0x3aa31939 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x3aae8a6e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x3aaf7669 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x3aafacc0 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x3ab27e81 macio_request_resource +EXPORT_SYMBOL vmlinux 0x3ab5c0ca blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x3ac7c278 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x3aec83c8 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x3afb0647 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x3b0916b8 neigh_update +EXPORT_SYMBOL vmlinux 0x3b1244f7 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x3b1e9c27 lwtunnel_output +EXPORT_SYMBOL vmlinux 0x3b34bd37 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x3b3671ae cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x3b4ad5ec i2c_master_recv +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f7b4b inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x3b71d448 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3bc6af00 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x3bc8049a fsync_bdev +EXPORT_SYMBOL vmlinux 0x3beb334c of_dev_put +EXPORT_SYMBOL vmlinux 0x3c23b620 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x3c2c73f3 lookup_bdev +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c491e67 elv_rb_add +EXPORT_SYMBOL vmlinux 0x3c7bb308 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc9bd7e netdev_info +EXPORT_SYMBOL vmlinux 0x3cd4ea7a vfs_setpos +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceb1e67 pci_choose_state +EXPORT_SYMBOL vmlinux 0x3cee379f ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x3d0f7931 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x3d1a28d2 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x3d22b80f ps2_init +EXPORT_SYMBOL vmlinux 0x3d296ed6 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3d4642a5 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3d7a326b __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x3dacbdb5 param_set_charp +EXPORT_SYMBOL vmlinux 0x3db69a78 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x3db6ff9c security_path_mknod +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd61d82 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0aeaf7 register_shrinker +EXPORT_SYMBOL vmlinux 0x3e26da72 cad_pid +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e2a33aa crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x3e316968 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x3e32a220 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x3e36c236 alloc_file +EXPORT_SYMBOL vmlinux 0x3e3963c6 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x3e59e01e find_inode_nowait +EXPORT_SYMBOL vmlinux 0x3e5e7092 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x3e80b5d6 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3edc235f sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x3edd3194 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x3eea2cf3 ip_defrag +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f099d1c dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x3f0c9b79 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x3f27d570 truncate_setsize +EXPORT_SYMBOL vmlinux 0x3f33be13 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3f3b1dc2 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f464deb blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x3f488188 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x3f545e53 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x3f7f2c8b netif_rx_ni +EXPORT_SYMBOL vmlinux 0x3f8dc930 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x3f9c4a9c tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4001b0fd __kernel_write +EXPORT_SYMBOL vmlinux 0x400d649d pci_set_mwi +EXPORT_SYMBOL vmlinux 0x402ab9ff trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402cceb3 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4081258c of_n_size_cells +EXPORT_SYMBOL vmlinux 0x408a5c2b dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c45e5f kmem_cache_create +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c7c92d mount_bdev +EXPORT_SYMBOL vmlinux 0x40ca962f blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dfd700 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x40e148ec blk_finish_request +EXPORT_SYMBOL vmlinux 0x40e183f4 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x40f52bb7 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x411a8db8 dev_change_flags +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a99ee softnet_data +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x416216b5 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x417c70f7 search_binary_handler +EXPORT_SYMBOL vmlinux 0x417cd6a4 of_find_property +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a30868 blk_put_queue +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41b2a02d jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41d496d1 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x41d4e21c __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41e06e64 tso_start +EXPORT_SYMBOL vmlinux 0x41fae7f2 sock_no_connect +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4220ae35 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x422cbab8 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x42371227 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425d580b tcf_em_register +EXPORT_SYMBOL vmlinux 0x4264cf5f __serio_register_driver +EXPORT_SYMBOL vmlinux 0x426dd1c1 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x426fad56 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x42964aea nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42d95006 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x42e35917 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x42ee70ac mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43390712 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x4345749c dump_emit +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4357f50e __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x436230cc sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a78649 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x43ae59ef setattr_copy +EXPORT_SYMBOL vmlinux 0x43c68a48 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x43cb3c0b pagecache_get_page +EXPORT_SYMBOL vmlinux 0x43d0b147 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x43d4e66e of_parse_phandle +EXPORT_SYMBOL vmlinux 0x43d9ac81 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f7934e pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441d12af xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x4424595b nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x4471fbc8 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x44740a20 generic_listxattr +EXPORT_SYMBOL vmlinux 0x44767a06 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x44871a01 keyring_search +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a162a9 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x44ae5e6b mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b7fa6b phy_device_free +EXPORT_SYMBOL vmlinux 0x44ba32b6 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x44cab613 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f1728b phy_print_status +EXPORT_SYMBOL vmlinux 0x450356b7 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x450f8794 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453f167e input_unregister_device +EXPORT_SYMBOL vmlinux 0x45501c0a pci_disable_device +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45941b41 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aeb9da page_waitqueue +EXPORT_SYMBOL vmlinux 0x45c012d8 blk_make_request +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45d57fb1 vga_con +EXPORT_SYMBOL vmlinux 0x4606806e xfrm_lookup +EXPORT_SYMBOL vmlinux 0x4609c49b inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462ba70b agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x464a465f neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468cd2e3 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x46997406 dst_destroy +EXPORT_SYMBOL vmlinux 0x46a340db __block_write_begin +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46b08328 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x46b10cdd __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46cd38fd uart_suspend_port +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e8e30a tty_kref_put +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47064eef bio_reset +EXPORT_SYMBOL vmlinux 0x47068b54 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x471c3a46 kdb_current_task +EXPORT_SYMBOL vmlinux 0x472cb1cd fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x4733736f sock_no_getname +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4741f44f dev_activate +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x4750f794 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x478bade6 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x4790b425 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a5d576 dquot_enable +EXPORT_SYMBOL vmlinux 0x47b038c2 elv_rb_del +EXPORT_SYMBOL vmlinux 0x47cbf2a9 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x47e03bfd netpoll_setup +EXPORT_SYMBOL vmlinux 0x47f702fe nf_log_register +EXPORT_SYMBOL vmlinux 0x47fac678 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x48242ab8 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x483352b2 unload_nls +EXPORT_SYMBOL vmlinux 0x483da09b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4842bf09 machine_id +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487e657e neigh_table_init +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48836cbc blk_init_queue +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d0ef29 dev_get_flags +EXPORT_SYMBOL vmlinux 0x48dee0d9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x48e7152d jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x48f51ab1 tty_write_room +EXPORT_SYMBOL vmlinux 0x4901a211 simple_empty +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495ec6eb pasemi_dma_alloc_buf +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49964443 tty_register_device +EXPORT_SYMBOL vmlinux 0x4996ba26 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x499e7601 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49bf1a14 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x49c6f521 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x49e4123c alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x49f114b0 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49fc5aa5 register_filesystem +EXPORT_SYMBOL vmlinux 0x4a03ec10 fget_raw +EXPORT_SYMBOL vmlinux 0x4a09fc22 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x4a23718c ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x4a32962f xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x4a438bce vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x4a4abe02 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x4a4f70f4 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x4a58bd18 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x4a6d5f5c tcp_close +EXPORT_SYMBOL vmlinux 0x4a838901 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4aab4cdc inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4acee7f8 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0fbd3b security_path_link +EXPORT_SYMBOL vmlinux 0x4b35a30e pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b4ca04c kill_block_super +EXPORT_SYMBOL vmlinux 0x4b58c1b6 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6b0776 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x4b6ba73f vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b842c16 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x4b8b4bbc jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x4b99652c xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4b9c2c22 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x4baae8e2 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb529cf alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x4bb6f15e submit_bh +EXPORT_SYMBOL vmlinux 0x4bc53c99 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x4bda516c tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x4be6e98d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf6150c input_unregister_handle +EXPORT_SYMBOL vmlinux 0x4bfa941d buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x4bfd78f1 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4c038bc9 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4c0e8016 ns_capable +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c44da2c kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x4c5c6424 kernel_listen +EXPORT_SYMBOL vmlinux 0x4c7a44a7 eth_header_parse +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cadd5e5 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x4caf0beb simple_write_end +EXPORT_SYMBOL vmlinux 0x4cb4690a get_fs_type +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d0a15bb inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x4d0e6116 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x4d130624 block_write_end +EXPORT_SYMBOL vmlinux 0x4d37df28 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x4d408e5a dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x4d51a73c sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x4d5342bb fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x4d6360a4 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x4d6f7f28 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x4d78137e iov_iter_init +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d7bce74 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9a783e rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9c1d6e __i2c_transfer +EXPORT_SYMBOL vmlinux 0x4da9821f unlock_buffer +EXPORT_SYMBOL vmlinux 0x4db22c87 netdev_features_change +EXPORT_SYMBOL vmlinux 0x4dd4264f pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de7005a alloc_fcdev +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e22de58 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e37be76 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6ca02d inode_dio_wait +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e8046f0 udp_poll +EXPORT_SYMBOL vmlinux 0x4e8d920d mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x4e993a41 of_translate_address +EXPORT_SYMBOL vmlinux 0x4e9dc2f1 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ebf3baf bprm_change_interp +EXPORT_SYMBOL vmlinux 0x4ec0996f of_get_parent +EXPORT_SYMBOL vmlinux 0x4ec0d7b3 of_device_is_available +EXPORT_SYMBOL vmlinux 0x4ed3d5df padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x4ef5488b netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4ef62ffc lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f284175 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x4f2907f2 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x4f299289 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3e3987 tty_do_resize +EXPORT_SYMBOL vmlinux 0x4f5b29e0 scsi_register +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f759726 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4fa89ed5 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x4fa8c811 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x4fadb36d devm_memunmap +EXPORT_SYMBOL vmlinux 0x4fb327d9 i2c_master_send +EXPORT_SYMBOL vmlinux 0x4fb7f4e5 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x4fc75aee vfs_fsync +EXPORT_SYMBOL vmlinux 0x4fce4d64 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4fd8975d mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ffffe42 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x5007a4ff nvm_register_target +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50295b34 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x50489b9b cdev_add +EXPORT_SYMBOL vmlinux 0x504aa692 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x50543d1b sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x505b9cbd sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5064eec5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x50670b68 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x50724cb6 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x50921071 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x5098e65c generic_fillattr +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba33c5 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c9667f phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x50d58238 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x50db9251 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e91791 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x511315bb scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5120161f param_ops_long +EXPORT_SYMBOL vmlinux 0x5122b15b memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x512fc2a7 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x51305638 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x514e9649 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x5156ed05 pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0x5177b65e dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x51893439 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51e985e1 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x51fba816 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5220cc28 tty_register_driver +EXPORT_SYMBOL vmlinux 0x5263f23e of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a25f6a __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x52c15570 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x52c482af generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x52c6b27c mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x52d4f2fa dcb_setapp +EXPORT_SYMBOL vmlinux 0x52d90061 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x52f05eb2 dma_set_mask +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5312be5e vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533401da seq_pad +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x53450480 key_task_permission +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5393f210 kobject_get +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a18f67 pci_find_capability +EXPORT_SYMBOL vmlinux 0x53ae0d27 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x53b4f891 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x53d5acf3 module_put +EXPORT_SYMBOL vmlinux 0x53da680c vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f974fc skb_queue_tail +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x54365d32 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x546252cb iterate_supers_type +EXPORT_SYMBOL vmlinux 0x5463b4c4 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x546bd87b blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x54749cff sock_kfree_s +EXPORT_SYMBOL vmlinux 0x547f5a34 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x547fb486 param_set_ulong +EXPORT_SYMBOL vmlinux 0x5484c028 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x5489952c __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x5489cfaf vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x548b1878 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c0af33 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c5b79e blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x54dae926 xattr_full_name +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f84356 wake_up_process +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x553a810a xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55472168 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x554b0f36 dput +EXPORT_SYMBOL vmlinux 0x5557edc4 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5575bfb1 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x558da50f d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x55a0fa8a new_inode +EXPORT_SYMBOL vmlinux 0x55a397ad md_unregister_thread +EXPORT_SYMBOL vmlinux 0x55b53228 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f17834 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x564bb1c9 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x5661d4cb pci_set_power_state +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56ee86a6 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x57035174 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x57070590 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572a0225 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573ee0f3 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x57457f5d set_security_override +EXPORT_SYMBOL vmlinux 0x574581f3 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576211cb pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57680991 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x578b5318 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57991689 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x57a40be1 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x57b1ae96 kobject_set_name +EXPORT_SYMBOL vmlinux 0x57f7e8ac dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x580dad82 ip6_route_output +EXPORT_SYMBOL vmlinux 0x58131056 param_ops_short +EXPORT_SYMBOL vmlinux 0x58175cee serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583a1ea6 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x584b5339 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x584f0c63 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x58546ec5 keyring_alloc +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585a9ae9 __register_chrdev +EXPORT_SYMBOL vmlinux 0x586377a9 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587619f2 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x58875dbc tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x58995086 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x58a86222 mach_pasemi +EXPORT_SYMBOL vmlinux 0x58ad498d dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58edbb39 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x58f2896d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x590ed811 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x59264c3b pci_map_rom +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x59764caa inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ab39da nf_afinfo +EXPORT_SYMBOL vmlinux 0x59b32e82 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59bfb864 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x59caabf5 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x59e17b4c ilookup5 +EXPORT_SYMBOL vmlinux 0x59f258f4 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x5a0087cc dev_get_iflink +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1e1d1c to_ndd +EXPORT_SYMBOL vmlinux 0x5a25679c max8998_write_reg +EXPORT_SYMBOL vmlinux 0x5a27f8b8 generic_setlease +EXPORT_SYMBOL vmlinux 0x5a2a7b01 pnv_pci_get_gpu_dev +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a30b7e3 ata_print_version +EXPORT_SYMBOL vmlinux 0x5a717293 block_commit_write +EXPORT_SYMBOL vmlinux 0x5a7aef12 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x5a809980 finish_no_open +EXPORT_SYMBOL vmlinux 0x5a8f41ee path_put +EXPORT_SYMBOL vmlinux 0x5a90b29a __seq_open_private +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a95c3db netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ac77752 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x5ada5423 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x5adfd4ff simple_write_begin +EXPORT_SYMBOL vmlinux 0x5ae70b69 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5afa0099 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x5afac0c2 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b12ca02 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x5b348736 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4f255e bdgrab +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba13391 inode_permission +EXPORT_SYMBOL vmlinux 0x5bb76a68 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bd22ba2 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5bea50b5 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x5bfc67d4 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x5c2a1b53 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3fef94 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x5c7458b5 mutex_unlock +EXPORT_SYMBOL vmlinux 0x5c8cac40 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x5c92b4b9 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5c938175 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cdd9891 blkdev_put +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf94427 netlink_ack +EXPORT_SYMBOL vmlinux 0x5d4d521e from_kuid_munged +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5dba49 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x5d65ea2a inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x5d6810af xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5d8db6eb max8925_set_bits +EXPORT_SYMBOL vmlinux 0x5dba2a28 bdget_disk +EXPORT_SYMBOL vmlinux 0x5dce2d06 param_get_bool +EXPORT_SYMBOL vmlinux 0x5de1464d netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x5de7962f __blk_run_queue +EXPORT_SYMBOL vmlinux 0x5de893d4 dquot_drop +EXPORT_SYMBOL vmlinux 0x5deec036 sync_filesystem +EXPORT_SYMBOL vmlinux 0x5df61d96 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x5e0c1a03 register_key_type +EXPORT_SYMBOL vmlinux 0x5e1f7b7f nvm_put_blk +EXPORT_SYMBOL vmlinux 0x5e36999b release_pages +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e401a0a ip_ct_attach +EXPORT_SYMBOL vmlinux 0x5e4eac7d stop_tty +EXPORT_SYMBOL vmlinux 0x5e5aeacc xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x5e5d43a5 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x5e7866bb generic_show_options +EXPORT_SYMBOL vmlinux 0x5e7dba65 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5e8d34b3 scmd_printk +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb61b28 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5ee60852 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f109547 skb_append +EXPORT_SYMBOL vmlinux 0x5f4e58f1 km_report +EXPORT_SYMBOL vmlinux 0x5f50c03e tcp_connect +EXPORT_SYMBOL vmlinux 0x5f544ac9 vmap +EXPORT_SYMBOL vmlinux 0x5f58d49e inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x5f643c2f blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x5f682e78 address_space_init_once +EXPORT_SYMBOL vmlinux 0x5f88dbfb insert_inode_locked +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f936571 passthru_features_check +EXPORT_SYMBOL vmlinux 0x5f9ef2a3 mount_pseudo +EXPORT_SYMBOL vmlinux 0x5fac0215 lro_flush_all +EXPORT_SYMBOL vmlinux 0x5fd9204a jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe0d560 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x5fec832b cdrom_check_events +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60084ab7 udplite_prot +EXPORT_SYMBOL vmlinux 0x60180b4a skb_dequeue +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x603320fd netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607e02ec param_set_bint +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x6092989f blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x609b9688 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b9a46e seq_release_private +EXPORT_SYMBOL vmlinux 0x60bda64c __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x60be07e3 __page_symlink +EXPORT_SYMBOL vmlinux 0x60d5463b _dev_info +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60ee37e2 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x60fb7b79 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x60ff973d xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x610e193e get_empty_filp +EXPORT_SYMBOL vmlinux 0x610f8590 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x611c3bc0 down_read_trylock +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x61285030 ata_link_printk +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61306f8b frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x61489c70 dev_uc_init +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6158f644 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x617d0c17 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x61872de3 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x6192a7e7 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d23c2b nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61e24309 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x61f22f16 block_write_begin +EXPORT_SYMBOL vmlinux 0x61f2ec10 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x61fbdeef serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x620652d6 set_anon_super +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62316d4a block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x628150fd audit_log_task_info +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628bd25e input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x62bcf1fe inet_sendpage +EXPORT_SYMBOL vmlinux 0x62d395c9 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x62d7888a user_revoke +EXPORT_SYMBOL vmlinux 0x62e079ef pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x631335af inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x6344652b blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x635c5d3b napi_disable +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x63638021 elevator_init +EXPORT_SYMBOL vmlinux 0x6373c663 keyring_clear +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63abeb6d mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x63b1e4af mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x63b4f4c3 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d0d2a2 fb_get_mode +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f085d2 security_path_symlink +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640d3504 pci_restore_state +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64137da9 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x6417a46c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x64188f6b udp_ioctl +EXPORT_SYMBOL vmlinux 0x6420bb53 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x64663bf6 bdev_read_only +EXPORT_SYMBOL vmlinux 0x64671c16 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64ae59dc dcache_dir_close +EXPORT_SYMBOL vmlinux 0x64ae6169 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x64b1d626 vfs_create +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c21228 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x64c57118 free_page_put_link +EXPORT_SYMBOL vmlinux 0x65132d95 bd_set_size +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651fed8e pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x65201fa1 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65391a95 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6560176a inet6_add_offload +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6576538e generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x6599171f pci_get_slot +EXPORT_SYMBOL vmlinux 0x65a42e0a blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c6c48b scsi_dma_map +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65efffa2 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f73d4f devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x65fb598c tcf_exts_change +EXPORT_SYMBOL vmlinux 0x65ff1f5d inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x660cee49 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x6632e051 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x66394ba3 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x6639c938 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x66488e9f sys_copyarea +EXPORT_SYMBOL vmlinux 0x6653c3be bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x665db6b6 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x6670d083 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x6688f14c ip_check_defrag +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66b92e00 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x66be9b9a blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x66c30bc3 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d2cede lookup_one_len +EXPORT_SYMBOL vmlinux 0x66d86497 flow_cache_init +EXPORT_SYMBOL vmlinux 0x66ff0222 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x672afa5a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67403919 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67a8828a param_get_invbool +EXPORT_SYMBOL vmlinux 0x67ad446f tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x67b04019 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d031ef udp_add_offload +EXPORT_SYMBOL vmlinux 0x67e6d7c5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x67eab2ec of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6845b984 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x6849af8e sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686a8689 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x6873dbf7 backlight_force_update +EXPORT_SYMBOL vmlinux 0x6878384d tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688613e1 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68a1e187 simple_open +EXPORT_SYMBOL vmlinux 0x68a69fa1 devm_memremap +EXPORT_SYMBOL vmlinux 0x68ac36ca nvm_end_io +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b860b4 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x68c5e43f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x68d43c7c xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x68db46d7 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x68f18442 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x68f3756c ___pskb_trim +EXPORT_SYMBOL vmlinux 0x68f52bc5 flush_signals +EXPORT_SYMBOL vmlinux 0x68f70c2a ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x6909c3b2 input_register_device +EXPORT_SYMBOL vmlinux 0x690bb085 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x691e673e genphy_resume +EXPORT_SYMBOL vmlinux 0x692f8546 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x693853cf kernel_getsockname +EXPORT_SYMBOL vmlinux 0x694823f5 sock_i_uid +EXPORT_SYMBOL vmlinux 0x69501165 tc_classify +EXPORT_SYMBOL vmlinux 0x6951210f blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x696d3e18 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6982bec3 vfs_readf +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x699feca0 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c4878a kmalloc_caches +EXPORT_SYMBOL vmlinux 0x69d69413 register_console +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a2be3e6 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x6a2eb661 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x6a4140e2 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x6a5e10c2 d_genocide +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a6f4f61 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8c0835 inet_put_port +EXPORT_SYMBOL vmlinux 0x6a90665d of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x6a95883d get_phy_device +EXPORT_SYMBOL vmlinux 0x6ab101ac __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x6ab17ba9 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x6ab1e9ac mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x6ac93138 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acd4d51 udp_prot +EXPORT_SYMBOL vmlinux 0x6ae9f1a3 kern_path +EXPORT_SYMBOL vmlinux 0x6aeee9e9 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06f82a nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0a7b75 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 0x6b589a6e _lv1_net_add_multicast_address +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6f0c4b _lv1_create_repository_node +EXPORT_SYMBOL vmlinux 0x6b7d87b0 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6b830281 register_qdisc +EXPORT_SYMBOL vmlinux 0x6b8bebf4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x6b8cfd09 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x6bafa9ee pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x6bb1f5f6 agp_enable +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcafae1 path_noexec +EXPORT_SYMBOL vmlinux 0x6bd5c674 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bfb91ed xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0ad686 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x6c0d2593 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x6c1149ef jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x6c1a8fd8 bdi_register +EXPORT_SYMBOL vmlinux 0x6c2eacde i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x6c45a32e tty_unthrottle +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c67b1e2 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x6c6ad109 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c709c4d inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6c7e54e6 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x6ca49ea8 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d1aa68b textsearch_unregister +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d5905cb skb_tx_error +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d8777a6 seq_open_private +EXPORT_SYMBOL vmlinux 0x6da75074 lease_modify +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dc17a9f mmc_put_card +EXPORT_SYMBOL vmlinux 0x6dc3ba41 rtnl_notify +EXPORT_SYMBOL vmlinux 0x6dca545e noop_qdisc +EXPORT_SYMBOL vmlinux 0x6dec1b7c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df60220 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x6e1178f5 simple_rmdir +EXPORT_SYMBOL vmlinux 0x6e43726e tcp_prequeue +EXPORT_SYMBOL vmlinux 0x6e4deab4 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e78a49e bio_copy_data +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e801e0c i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x6e953c82 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eb76ec1 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x6eb9a5a8 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6ec1d8c7 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x6ef933cf d_set_fallthru +EXPORT_SYMBOL vmlinux 0x6efd97f4 mutex_trylock +EXPORT_SYMBOL vmlinux 0x6f14ed4e file_ns_capable +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f4a71d9 touch_atime +EXPORT_SYMBOL vmlinux 0x6f5edb02 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x6f61ced9 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x6f7509bc sk_alloc +EXPORT_SYMBOL vmlinux 0x6f7dc81e mmc_get_card +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fada45d dma_pool_create +EXPORT_SYMBOL vmlinux 0x6fbe442b mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6febd230 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x6ff0e9ec bio_integrity_free +EXPORT_SYMBOL vmlinux 0x6ff6f6d6 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x7002fcd0 soft_cursor +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x701df18a misc_register +EXPORT_SYMBOL vmlinux 0x7028b289 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x702f770e inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x704ee30f pcim_iomap +EXPORT_SYMBOL vmlinux 0x704f2e8e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70553414 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7077634e __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70b110f7 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x70c7bdda kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x70d51517 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714dc5eb blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7172fb2d vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x7188c3ae get_io_context +EXPORT_SYMBOL vmlinux 0x719a0ed4 __brelse +EXPORT_SYMBOL vmlinux 0x71a36b95 netif_device_attach +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ae7644 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x71d972b0 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x71e64ead mount_nodev +EXPORT_SYMBOL vmlinux 0x71f8d731 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x7200cfd5 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x7225a959 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x722faa08 register_cdrom +EXPORT_SYMBOL vmlinux 0x724c56d8 dev_mc_add +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x72838a63 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7352c53b tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7381e74f agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x73830562 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x738dbb80 vc_resize +EXPORT_SYMBOL vmlinux 0x73b40aa2 sg_miter_start +EXPORT_SYMBOL vmlinux 0x73c906de redraw_screen +EXPORT_SYMBOL vmlinux 0x73d568c6 vme_bus_type +EXPORT_SYMBOL vmlinux 0x73def62d nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x73f97ecc jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x74002447 __sb_end_write +EXPORT_SYMBOL vmlinux 0x74043e51 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7427f15e sync_blockdev +EXPORT_SYMBOL vmlinux 0x742ca148 mmc_free_host +EXPORT_SYMBOL vmlinux 0x742f1c80 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x7433c12c elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x743e4f9f scsi_register_interface +EXPORT_SYMBOL vmlinux 0x744cfa3f get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x7456c2a5 generic_perform_write +EXPORT_SYMBOL vmlinux 0x7461f053 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7484f799 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748d0894 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x748ec855 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x74a54ec6 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x74a757d7 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x74b708af complete_request_key +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e56252 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x75059950 d_splice_alias +EXPORT_SYMBOL vmlinux 0x752210c2 __pagevec_release +EXPORT_SYMBOL vmlinux 0x7530141f dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753eac0f scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x753fb202 dentry_open +EXPORT_SYMBOL vmlinux 0x755b6f48 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x755f8004 tty_lock +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759cfc6d kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x75b09383 generic_removexattr +EXPORT_SYMBOL vmlinux 0x75b79fbc mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75cc7839 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x763002ff posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e2224 _lv1_disconnect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766e7001 mach_pseries +EXPORT_SYMBOL vmlinux 0x768de053 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x76ca19e7 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x76ca6f2b jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76dc4838 pci_save_state +EXPORT_SYMBOL vmlinux 0x770059a2 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7726fdfa find_lock_entry +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7749093b msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x774baaff tcp_poll +EXPORT_SYMBOL vmlinux 0x774d2d74 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x774e565a bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x7753baa8 inet_release +EXPORT_SYMBOL vmlinux 0x7753c28f cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x7779032e nobh_write_end +EXPORT_SYMBOL vmlinux 0x777c89c1 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779ae5c4 console_start +EXPORT_SYMBOL vmlinux 0x77a411cc pci_get_subsys +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d1b8a4 __inode_permission +EXPORT_SYMBOL vmlinux 0x77f4ed02 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x78374730 of_get_address +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7841e170 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x78450f22 neigh_destroy +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784b7312 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x7854fda2 param_ops_uint +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78877da1 kernel_accept +EXPORT_SYMBOL vmlinux 0x788ad678 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789d68dd netdev_err +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78bf919c key_revoke +EXPORT_SYMBOL vmlinux 0x78c2ca3e install_exec_creds +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e236fb dquot_operations +EXPORT_SYMBOL vmlinux 0x78ebcb63 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x7900b99b file_open_root +EXPORT_SYMBOL vmlinux 0x792e706f rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x79403588 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x79438c15 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x796a9398 macio_dev_get +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7979feb9 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x797ef800 __find_get_block +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x7989bd87 file_path +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a8723e eth_validate_addr +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d9204c neigh_for_each +EXPORT_SYMBOL vmlinux 0x79d97585 seq_open +EXPORT_SYMBOL vmlinux 0x79dc6867 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x7a178e17 netdev_alert +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a5b0366 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a87d01e phy_start +EXPORT_SYMBOL vmlinux 0x7a8a1384 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7aac326d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x7aad595e inet_csk_accept +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abbaced rtnl_unicast +EXPORT_SYMBOL vmlinux 0x7ac7cc96 get_gendisk +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af01f63 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x7af6cb34 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x7af96299 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b27985e devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b353d58 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7b3a718b input_release_device +EXPORT_SYMBOL vmlinux 0x7b4eabf7 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x7b76412f inode_init_owner +EXPORT_SYMBOL vmlinux 0x7b77f59e phy_drivers_register +EXPORT_SYMBOL vmlinux 0x7b8942fd pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x7b8dec8d tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x7b8fdd00 inode_set_flags +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bbd3063 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x7bcd39da netdev_warn +EXPORT_SYMBOL vmlinux 0x7bd3a46f mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c293869 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c2f7f35 vm_mmap +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5e4143 netdev_printk +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c73929a netif_receive_skb +EXPORT_SYMBOL vmlinux 0x7c8a1c6a dquot_alloc +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cd420a0 dst_discard_out +EXPORT_SYMBOL vmlinux 0x7cd49f25 param_get_ushort +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf16e39 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2019fd copy_to_iter +EXPORT_SYMBOL vmlinux 0x7d260cef bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x7d37173b of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x7d5b547e srp_rport_put +EXPORT_SYMBOL vmlinux 0x7d6311d1 filp_close +EXPORT_SYMBOL vmlinux 0x7d65f351 vfs_rename +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dd7921b mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x7de77c8d jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df1367a mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x7df705f4 mpage_readpages +EXPORT_SYMBOL vmlinux 0x7e0f51ff bdevname +EXPORT_SYMBOL vmlinux 0x7e255e12 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7e2b30bf md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7e5b6c94 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x7e79f2ce devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x7e7e62e5 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8b3bb4 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x7ec5cca3 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x7ee1cf5f bmap +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7eec0c33 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x7ef54b1f jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x7efbca91 __check_sticky +EXPORT_SYMBOL vmlinux 0x7efdc218 pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f11c543 vio_find_node +EXPORT_SYMBOL vmlinux 0x7f2430b1 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f3d805d dst_init +EXPORT_SYMBOL vmlinux 0x7f3d8504 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f681200 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x7f7756a9 bio_chain +EXPORT_SYMBOL vmlinux 0x7f8a2bc3 mmc_erase +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc4bd9e twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x7fd573b9 sock_no_bind +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe9a060 _lv1_net_stop_tx_dma +EXPORT_SYMBOL vmlinux 0x800a00ab input_unregister_handler +EXPORT_SYMBOL vmlinux 0x800edb65 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x80166621 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x803f5545 phy_driver_register +EXPORT_SYMBOL vmlinux 0x80467f8f skb_clone_sk +EXPORT_SYMBOL vmlinux 0x80520b06 __napi_schedule +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x8086a64d inet_del_offload +EXPORT_SYMBOL vmlinux 0x808ac590 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x809317fe blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x809b31ac xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x80a1d973 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dad03a clocksource_unregister +EXPORT_SYMBOL vmlinux 0x80fa46bd clear_nlink +EXPORT_SYMBOL vmlinux 0x80fadc71 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x81183d6b serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x8136f3ff dma_async_device_register +EXPORT_SYMBOL vmlinux 0x814984d7 find_vma +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81657292 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x81772406 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x8184b92b vfs_whiteout +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a31efc wireless_send_event +EXPORT_SYMBOL vmlinux 0x81abc05d tcp_check_req +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d35704 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ef7667 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x81f54599 start_tty +EXPORT_SYMBOL vmlinux 0x81f5a4ef validate_sp +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8220a2c5 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x8244b357 mach_powernv +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82584b22 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x82655156 sk_dst_check +EXPORT_SYMBOL vmlinux 0x82696ba4 d_instantiate +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82765921 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82955a67 clear_user_page +EXPORT_SYMBOL vmlinux 0x82aa65dc generic_getxattr +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82e738fa blk_peek_request +EXPORT_SYMBOL vmlinux 0x82ed7b75 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x82fb3609 sk_free +EXPORT_SYMBOL vmlinux 0x832b235d md_write_start +EXPORT_SYMBOL vmlinux 0x83378172 dcache_readdir +EXPORT_SYMBOL vmlinux 0x833d8f30 simple_getattr +EXPORT_SYMBOL vmlinux 0x837f96e9 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x838e64bc __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a2704f ppp_input_error +EXPORT_SYMBOL vmlinux 0x83a70f93 get_tz_trend +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cb192a serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x84001b5d of_get_mac_address +EXPORT_SYMBOL vmlinux 0x8430c5da security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x843f8838 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x84416689 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x8445b08a secpath_dup +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x845b335d default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x849cf083 cdev_init +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84a0a1bd inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x84a7b251 bdget +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84cf43b9 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x84cf7711 param_get_string +EXPORT_SYMBOL vmlinux 0x84ecbd11 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x84f1b1b2 dup_iter +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85032903 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x8518f0fb phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x851feec4 bioset_free +EXPORT_SYMBOL vmlinux 0x8535d52b pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x853e142d finish_open +EXPORT_SYMBOL vmlinux 0x854b4869 mount_ns +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858a885b pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85b2a302 of_iomap +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f5c783 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x85ffdb81 key_invalidate +EXPORT_SYMBOL vmlinux 0x861da14f tcp_shutdown +EXPORT_SYMBOL vmlinux 0x8623d7b1 blk_start_queue +EXPORT_SYMBOL vmlinux 0x86390ec1 cdrom_release +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865d5810 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867c258c copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x867e85f6 param_set_long +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868dcd7d generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x86946527 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x8697a5a3 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x8697d791 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86b7948b pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x86c1acf1 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x86d8d46e inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86db1fc7 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x86dbb7e6 write_inode_now +EXPORT_SYMBOL vmlinux 0x86e29c3d iov_iter_zero +EXPORT_SYMBOL vmlinux 0x86e7dd37 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87115f98 may_umount_tree +EXPORT_SYMBOL vmlinux 0x87153fcb blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x87195a34 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872547f3 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x8732d26c inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x877eaa7e agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x87880ca2 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87b93628 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x87bac6ce notify_change +EXPORT_SYMBOL vmlinux 0x87c110ae twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x87c17ec2 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x87f8ccb3 read_cache_page +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x886ff72f phy_suspend +EXPORT_SYMBOL vmlinux 0x8878f90c dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8886c153 tty_hangup +EXPORT_SYMBOL vmlinux 0x88b8e15d dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x88c953ec save_mount_options +EXPORT_SYMBOL vmlinux 0x88ca3fbf unregister_cdrom +EXPORT_SYMBOL vmlinux 0x88e63499 security_path_rename +EXPORT_SYMBOL vmlinux 0x88ec0e52 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x88ffdc32 __get_user_pages +EXPORT_SYMBOL vmlinux 0x8918be15 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8921bbd2 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x89245f92 follow_up +EXPORT_SYMBOL vmlinux 0x89285e24 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x892c8314 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x895b349e put_cmsg +EXPORT_SYMBOL vmlinux 0x8971ee6a seq_write +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89852bb9 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x89a1ccda dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x89a29cac pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b51071 serio_open +EXPORT_SYMBOL vmlinux 0x89ba3fed padata_alloc +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89d06485 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e64d16 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x89ed4c17 inet_getname +EXPORT_SYMBOL vmlinux 0x89f3ba1d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x8a03e870 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2497e8 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x8a38911e posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a5072ef bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a614b70 bdi_destroy +EXPORT_SYMBOL vmlinux 0x8a6a0345 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a70eead tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x8a768e7f inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8ab755fe blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x8ad05920 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x8af4f257 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8af9e772 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b0e0603 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x8b153a3f register_framebuffer +EXPORT_SYMBOL vmlinux 0x8b1a38fa tty_port_destroy +EXPORT_SYMBOL vmlinux 0x8b2a8584 send_sig +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b41c6de dentry_path_raw +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5151dd macio_register_driver +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b63d658 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x8b6527ab i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b83922b vfs_writev +EXPORT_SYMBOL vmlinux 0x8b8760f0 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x8b8bf197 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x8b8e7300 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x8b94e208 simple_rename +EXPORT_SYMBOL vmlinux 0x8bd1671f jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf3be78 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x8bf64425 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8c1026bb blkdev_fsync +EXPORT_SYMBOL vmlinux 0x8c12059f skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c3162ec param_set_bool +EXPORT_SYMBOL vmlinux 0x8c3de56f of_match_device +EXPORT_SYMBOL vmlinux 0x8c5ae5e8 key_put +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6ad989 fb_pan_display +EXPORT_SYMBOL vmlinux 0x8c6f727c kobject_add +EXPORT_SYMBOL vmlinux 0x8c887936 dev_mc_del +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8ca2742e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x8cb9782f pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cc985c0 register_quota_format +EXPORT_SYMBOL vmlinux 0x8cceb37a vfs_getattr +EXPORT_SYMBOL vmlinux 0x8cd25b4d padata_free +EXPORT_SYMBOL vmlinux 0x8cd2d0f1 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x8cf3cfd5 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x8cf6a151 file_remove_privs +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d1fc259 request_key_async +EXPORT_SYMBOL vmlinux 0x8d269516 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7ac186 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d9c02e5 pci_select_bars +EXPORT_SYMBOL vmlinux 0x8dadcc6a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x8dd54197 ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0x8dda3eb3 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8deb63a1 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x8df2f1d5 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e039d95 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x8e1be93b pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x8e374821 agp_copy_info +EXPORT_SYMBOL vmlinux 0x8e5e13a5 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8ea784cc dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x8eb16269 vga_tryget +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec7d725 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8ecb1766 replace_mount_options +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8eec99ba dquot_transfer +EXPORT_SYMBOL vmlinux 0x8f0263fe uart_register_driver +EXPORT_SYMBOL vmlinux 0x8f40d20f ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8f445458 elv_add_request +EXPORT_SYMBOL vmlinux 0x8f5fa2c5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8fa2fd88 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc5786a __module_get +EXPORT_SYMBOL vmlinux 0x8fcb209c pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x9020783a phy_device_remove +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x903730c6 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x90479622 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x904b7df9 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x9065eef2 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x906ed486 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x907c84f7 padata_do_serial +EXPORT_SYMBOL vmlinux 0x90a51070 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x90ad65e3 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x90adcbf4 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x90b9fd80 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x90ddaf98 blk_end_request +EXPORT_SYMBOL vmlinux 0x90e50995 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x90f24da5 rwsem_wake +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x913ef087 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x9140f1bd of_phy_connect +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91565987 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x9158b6d6 pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x916297e3 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91815c6a serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x91850466 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x918632fd inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x918a05b1 phy_find_first +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c37e39 unlock_rename +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91d0193b __breadahead +EXPORT_SYMBOL vmlinux 0x91d98993 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x91f1c66a simple_release_fs +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x9209053d udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x9238045d send_sig_info +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9241c31c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x926af38a zero_fill_bio +EXPORT_SYMBOL vmlinux 0x92730865 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9295c7e8 arp_create +EXPORT_SYMBOL vmlinux 0x929a4bcb phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bc2a4b netif_carrier_on +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9326c6bd __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x934b7f1a devm_ioport_map +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x936db907 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93904261 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x93a80136 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x93aabe14 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x93ac4bec scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c88286 kobject_init +EXPORT_SYMBOL vmlinux 0x93d554ca tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x93dc94a5 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x93e6081c blk_integrity_register +EXPORT_SYMBOL vmlinux 0x93ea169e padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x93f4b0ee block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9415bec8 serio_bus +EXPORT_SYMBOL vmlinux 0x941b622b inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x94304baf pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x945bc598 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x9466b17c pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x946b3781 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94bea4f1 sk_stream_error +EXPORT_SYMBOL vmlinux 0x94dcdf8e __skb_checksum +EXPORT_SYMBOL vmlinux 0x94eedbf2 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951c4dc6 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x954035c0 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x95423135 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9551f416 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x955ccdf7 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x95656e6f param_set_copystring +EXPORT_SYMBOL vmlinux 0x95f93fb3 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9600d5cc km_state_expired +EXPORT_SYMBOL vmlinux 0x9610d342 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x96207074 pci_dev_put +EXPORT_SYMBOL vmlinux 0x96246956 write_cache_pages +EXPORT_SYMBOL vmlinux 0x963ed287 page_symlink +EXPORT_SYMBOL vmlinux 0x963f6521 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x96401a29 may_umount +EXPORT_SYMBOL vmlinux 0x96593b05 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x9661038f neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x9698ab80 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96b259d1 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96bca30d iov_iter_advance +EXPORT_SYMBOL vmlinux 0x96c260b4 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96de4178 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x970a9f17 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97545e53 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976563cb loop_backing_file +EXPORT_SYMBOL vmlinux 0x9767faf5 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x977a1938 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978e6a4b __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x979866ae pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x9799bbdb seq_path +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ab510e ps2_begin_command +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97c277a2 locks_init_lock +EXPORT_SYMBOL vmlinux 0x97c691fe elevator_exit +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97f2af88 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x981eafce i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x98a5637a netlink_set_err +EXPORT_SYMBOL vmlinux 0x98aaf26d skb_copy_expand +EXPORT_SYMBOL vmlinux 0x98b2d950 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cc9741 do_truncate +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d98c8a compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x98ef0870 i2c_release_client +EXPORT_SYMBOL vmlinux 0x99024206 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x990bd792 security_file_permission +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99323687 eth_header +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993e7570 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9976ce21 pipe_lock +EXPORT_SYMBOL vmlinux 0x998b5480 noop_llseek +EXPORT_SYMBOL vmlinux 0x998ebaf7 __elv_add_request +EXPORT_SYMBOL vmlinux 0x9990948e drop_nlink +EXPORT_SYMBOL vmlinux 0x99913384 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99aca7b3 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99c8da8e pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f71853 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x99f8799e set_bh_page +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a453cc1 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x9a6374ed nd_device_register +EXPORT_SYMBOL vmlinux 0x9a65a0ef scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a76fad7 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x9a7b79f3 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x9a7e3575 dev_printk +EXPORT_SYMBOL vmlinux 0x9a8bd420 param_get_byte +EXPORT_SYMBOL vmlinux 0x9a8d8a7b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x9aa5d4f2 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x9ab89869 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x9ac0a88f scsi_unregister +EXPORT_SYMBOL vmlinux 0x9ac0fea3 km_new_mapping +EXPORT_SYMBOL vmlinux 0x9ac8abde __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9acd2f93 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x9ae54564 param_get_int +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aeea04f i2c_verify_client +EXPORT_SYMBOL vmlinux 0x9b0b319d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9b0c3590 of_root +EXPORT_SYMBOL vmlinux 0x9b18fba2 dm_put_device +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b37fab5 simple_follow_link +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5517cb skb_pull +EXPORT_SYMBOL vmlinux 0x9b73eaf1 input_set_keycode +EXPORT_SYMBOL vmlinux 0x9b757608 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x9b7e85a6 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x9b94e256 seq_escape +EXPORT_SYMBOL vmlinux 0x9b9dbdd8 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba1b62e pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb8d414 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x9bc37e40 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x9bd343d2 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c03f928 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x9c08674b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x9c2bce9a mach_powermac +EXPORT_SYMBOL vmlinux 0x9c30f500 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x9c473fb6 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c615cb9 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9caed0ab kill_pgrp +EXPORT_SYMBOL vmlinux 0x9cb5c011 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9cd25d4f tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x9cd7a50f mntget +EXPORT_SYMBOL vmlinux 0x9ce52c6c mmc_register_driver +EXPORT_SYMBOL vmlinux 0x9ce79aef blk_sync_queue +EXPORT_SYMBOL vmlinux 0x9cecde49 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x9cf14587 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9d002dc0 follow_down_one +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d164b51 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x9d20df08 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4a3e0e simple_lookup +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d6addbe netif_napi_del +EXPORT_SYMBOL vmlinux 0x9d6bba1d input_event +EXPORT_SYMBOL vmlinux 0x9d7161c4 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9da0b065 scsi_print_result +EXPORT_SYMBOL vmlinux 0x9daa9051 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x9dccc5b0 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x9ddaec35 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x9ddca42c max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x9dde08a7 d_set_d_op +EXPORT_SYMBOL vmlinux 0x9de64a5a cdev_alloc +EXPORT_SYMBOL vmlinux 0x9dea4fbf mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9e00a34a dquot_disable +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1152aa pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x9e223ffb noop_fsync +EXPORT_SYMBOL vmlinux 0x9e293b09 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e4c9bee ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x9e4e8ff2 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e68c137 genphy_suspend +EXPORT_SYMBOL vmlinux 0x9e6df397 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e939e7a reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9e7d08 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x9e9fba70 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eb29f84 __kfree_skb +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9edde7d6 unregister_netdev +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9ee96a3c blk_get_queue +EXPORT_SYMBOL vmlinux 0x9eeb3727 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x9f0acd6b mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x9f0bc0ab of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x9f0ce3dd flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x9f3e88c4 blkdev_get +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5835b7 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x9f5ccac6 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x9f5e1217 iget5_locked +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f819576 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x9f890b0c blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x9f8964a1 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f91172e devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fd1454d pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9fd3e54b pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff5e1da param_ops_int +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00d34ce tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xa01fe1fa nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xa02b9722 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0590000 init_buffer +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0915f3f xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xa09a4677 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b61fdd security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xa0bf372c is_nd_btt +EXPORT_SYMBOL vmlinux 0xa0cb9dad srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f6355f inet_shutdown +EXPORT_SYMBOL vmlinux 0xa0f6b97f led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fe4814 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa111218b scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1294210 thaw_bdev +EXPORT_SYMBOL vmlinux 0xa12e97f7 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xa13652ae dev_addr_del +EXPORT_SYMBOL vmlinux 0xa13e15ba vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa17616f1 vfs_mknod +EXPORT_SYMBOL vmlinux 0xa17d1693 scsi_host_put +EXPORT_SYMBOL vmlinux 0xa17eab70 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xa1991e25 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xa1a06b69 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xa1b0cb61 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1da5d27 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1e5f914 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fb77c3 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa2024c45 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20925b2 ps2_command +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa2291862 genphy_update_link +EXPORT_SYMBOL vmlinux 0xa23f0183 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa260eea8 nvm_register_mgr +EXPORT_SYMBOL vmlinux 0xa262de79 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xa264bf1c blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xa275d32e user_path_at_empty +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa285d3ab param_array_ops +EXPORT_SYMBOL vmlinux 0xa29865cf netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2bb5add md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2cb43dd bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xa2cc79e8 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xa2d23a6c vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xa2eb014a dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa2edc98a dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xa2f1c41f mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xa2f414a4 vfs_read +EXPORT_SYMBOL vmlinux 0xa2f60188 sync_inode +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa336ce34 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xa34f8f76 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xa361e993 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xa382ec7a __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xa38b0bf5 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xa38b588c jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xa39565a8 inode_change_ok +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b7ce07 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xa3b816b2 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xa3c5583c udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xa3eedd8e md_error +EXPORT_SYMBOL vmlinux 0xa3f2c4ca devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa40bb173 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xa4352029 datagram_poll +EXPORT_SYMBOL vmlinux 0xa43ec850 current_fs_time +EXPORT_SYMBOL vmlinux 0xa4416644 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa459d83c of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xa45cd089 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa48bf836 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xa4993b8f skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xa49a54ce do_splice_direct +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b2be56 input_register_handler +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d944db macio_enable_devres +EXPORT_SYMBOL vmlinux 0xa4e80b4f dump_skip +EXPORT_SYMBOL vmlinux 0xa4f16f7b seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xa4f2a3f9 netif_napi_add +EXPORT_SYMBOL vmlinux 0xa4f9020f remap_pfn_range +EXPORT_SYMBOL vmlinux 0xa5133723 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xa53c4c91 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xa54cf765 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a39386 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b52e92 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa5e7c87b audit_log_start +EXPORT_SYMBOL vmlinux 0xa5f80953 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xa5fb6230 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xa602609f cfb_copyarea +EXPORT_SYMBOL vmlinux 0xa61ac45c blk_stop_queue +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa642495f netdev_change_features +EXPORT_SYMBOL vmlinux 0xa6550d05 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa680a974 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa69cfc79 ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0xa6a438f5 inet_addr_type +EXPORT_SYMBOL vmlinux 0xa6b0e0e2 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xa6ce472f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xa6d7066c nonseekable_open +EXPORT_SYMBOL vmlinux 0xa6f07f1c decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xa6f5a1ff simple_setattr +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70d86c6 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xa70fc34c bio_advance +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73db837 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xa73eb6d8 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7527663 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xa75622cf md_write_end +EXPORT_SYMBOL vmlinux 0xa7602728 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xa76daa75 empty_aops +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7b9a9bd dm_unregister_target +EXPORT_SYMBOL vmlinux 0xa7c04658 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa7dd5215 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xa7e523cf dev_crit +EXPORT_SYMBOL vmlinux 0xa8006cf2 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa813a489 consume_skb +EXPORT_SYMBOL vmlinux 0xa821a4d7 irq_to_desc +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83fe7ef devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84f6d19 tty_port_put +EXPORT_SYMBOL vmlinux 0xa8716253 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87b8a47 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xa8809389 ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0xa88d61c4 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xa8bcb387 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xa8c4e3c1 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8d515d5 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xa8d74ab9 neigh_lookup +EXPORT_SYMBOL vmlinux 0xa8df99b1 vm_map_ram +EXPORT_SYMBOL vmlinux 0xa8fa3c82 ps2_end_command +EXPORT_SYMBOL vmlinux 0xa8fce5e0 tty_port_close +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9055ec4 blk_put_request +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93a8278 serio_interrupt +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa94026f8 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xa9517759 clear_inode +EXPORT_SYMBOL vmlinux 0xa96dbbf3 sock_efree +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa977f166 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xa97cbfb8 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xa98cba3b abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xa99325bc ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9ae72da invalidate_partition +EXPORT_SYMBOL vmlinux 0xa9ba6a24 sock_register +EXPORT_SYMBOL vmlinux 0xa9c42d99 vme_slot_num +EXPORT_SYMBOL vmlinux 0xa9c63253 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c81068 icmp_send +EXPORT_SYMBOL vmlinux 0xa9d0e73a touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xa9df8d66 kernel_bind +EXPORT_SYMBOL vmlinux 0xa9f43b8c dquot_release +EXPORT_SYMBOL vmlinux 0xa9fdc013 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa1652a3 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xaa45b4f8 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4a9254 seq_vprintf +EXPORT_SYMBOL vmlinux 0xaa5cb001 dma_find_channel +EXPORT_SYMBOL vmlinux 0xaa69b87f dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8645ff inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xaa91b443 module_refcount +EXPORT_SYMBOL vmlinux 0xaa94b630 param_ops_bint +EXPORT_SYMBOL vmlinux 0xaaa09884 generic_write_checks +EXPORT_SYMBOL vmlinux 0xaab2287a napi_gro_flush +EXPORT_SYMBOL vmlinux 0xaac08fcc free_task +EXPORT_SYMBOL vmlinux 0xaac90f47 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaaf9df18 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xaaffd5a2 fb_find_mode +EXPORT_SYMBOL vmlinux 0xab228e31 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0xab2d3b1d simple_dir_operations +EXPORT_SYMBOL vmlinux 0xab64e3ff paca +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bbd05 simple_link +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab9e62f0 seq_dentry +EXPORT_SYMBOL vmlinux 0xabb891d2 get_super +EXPORT_SYMBOL vmlinux 0xabbc27a1 d_delete +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabec4ab6 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xabf45846 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xac090515 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac36357f nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xac474f44 input_close_device +EXPORT_SYMBOL vmlinux 0xac56a11e param_get_short +EXPORT_SYMBOL vmlinux 0xac83707b page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xac947bf4 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xaca6c26a input_inject_event +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xacd3da2e inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdd52a1 param_set_short +EXPORT_SYMBOL vmlinux 0xacee6d23 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad10949c filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad27f3b8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xad2af0c8 gen_pool_free +EXPORT_SYMBOL vmlinux 0xad393640 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad51fc0a vfs_link +EXPORT_SYMBOL vmlinux 0xad578822 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xad5b4b82 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xad650fd6 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xad65a25d qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xad68c270 elevator_change +EXPORT_SYMBOL vmlinux 0xad6b6f92 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8b7fe3 vfs_symlink +EXPORT_SYMBOL vmlinux 0xad8e76f1 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xad9f5326 fasync_helper +EXPORT_SYMBOL vmlinux 0xadaee646 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadf3b660 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xadfd89aa skb_free_datagram +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae071dcf vme_register_driver +EXPORT_SYMBOL vmlinux 0xae134371 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xae31d684 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae3d634f pskb_expand_head +EXPORT_SYMBOL vmlinux 0xae52e570 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae66d6bb revalidate_disk +EXPORT_SYMBOL vmlinux 0xaeb2e471 fb_show_logo +EXPORT_SYMBOL vmlinux 0xaec996bd param_ops_string +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf20806d dump_align +EXPORT_SYMBOL vmlinux 0xaf21fb70 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3bcdf1 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf45d409 km_query +EXPORT_SYMBOL vmlinux 0xaf4a6768 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xaf578b3d pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xaf5f71da fget +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafb0fd09 gen_pool_create +EXPORT_SYMBOL vmlinux 0xafbcc290 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xafbf05d3 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xafc0bce3 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xafee9246 nf_reinject +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00057e4 tty_port_open +EXPORT_SYMBOL vmlinux 0xb02d70a6 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb043e31f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06e9691 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0b6b502 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb0d59437 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb0df72f8 napi_get_frags +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ec06fa blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xb0f3c8ea d_find_alias +EXPORT_SYMBOL vmlinux 0xb0f76019 request_firmware +EXPORT_SYMBOL vmlinux 0xb0f84e60 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb102000d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xb10eb68e pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb1268134 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1319d92 sock_no_accept +EXPORT_SYMBOL vmlinux 0xb139140c napi_gro_frags +EXPORT_SYMBOL vmlinux 0xb14698fa pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xb146e05a phy_init_hw +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1605c1c blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165e718 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb179b32f del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xb189fe35 sk_common_release +EXPORT_SYMBOL vmlinux 0xb193b257 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xb1a23384 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xb1bd9888 skb_checksum +EXPORT_SYMBOL vmlinux 0xb1c0c730 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d1c4e7 kill_pid +EXPORT_SYMBOL vmlinux 0xb1d9f036 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xb1e53fe9 seq_putc +EXPORT_SYMBOL vmlinux 0xb1e653f8 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xb20fe54c scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb212a9e7 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb22d84c6 end_page_writeback +EXPORT_SYMBOL vmlinux 0xb2477d21 poll_initwait +EXPORT_SYMBOL vmlinux 0xb262e4ae mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2735bd0 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xb27a51bf iterate_dir +EXPORT_SYMBOL vmlinux 0xb2aa67ca inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xb2b0d206 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2ef6dc4 cdrom_open +EXPORT_SYMBOL vmlinux 0xb2f92e66 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb2f99471 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb31b273f flow_cache_fini +EXPORT_SYMBOL vmlinux 0xb31de5d4 proc_set_user +EXPORT_SYMBOL vmlinux 0xb330cd05 free_netdev +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb33d8a88 sock_create_lite +EXPORT_SYMBOL vmlinux 0xb34637e0 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xb366e5a3 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xb385bb66 unlock_page +EXPORT_SYMBOL vmlinux 0xb3af5c58 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3c91d87 open_exec +EXPORT_SYMBOL vmlinux 0xb3ca478e cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e6aa38 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb41abe57 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb41ece99 make_kprojid +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4275c15 proc_set_size +EXPORT_SYMBOL vmlinux 0xb452331f ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb4533292 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb48fc4fa __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xb490d98a d_tmpfile +EXPORT_SYMBOL vmlinux 0xb4914b43 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xb494b5ab ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xb4a97751 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb4cb98a4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb4e4c24a pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xb4f943cb mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xb51d33ce agp_generic_enable +EXPORT_SYMBOL vmlinux 0xb558e53c of_get_property +EXPORT_SYMBOL vmlinux 0xb5683f2a napi_gro_receive +EXPORT_SYMBOL vmlinux 0xb569ae71 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5847b98 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5adb47a proc_create_data +EXPORT_SYMBOL vmlinux 0xb5e6e9e1 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xb5f3bd23 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xb612a0a8 acl_by_type +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb646221b mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xb659d36b sock_create_kern +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6f3ce52 skb_seq_read +EXPORT_SYMBOL vmlinux 0xb72e3dee __invalidate_device +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74f2984 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb7516443 giveup_altivec +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7736db0 param_get_ullong +EXPORT_SYMBOL vmlinux 0xb775b7cc cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb7c45cb1 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xb7c5bcf8 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xb7f3b2d9 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xb8038227 pci_release_region +EXPORT_SYMBOL vmlinux 0xb8187b14 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xb8269c8e gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xb82a5e4c blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xb841ef76 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb8727288 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87e212b kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb8830117 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xb8859478 simple_readpage +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8d64a66 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xb8e0f3ce generic_ro_fops +EXPORT_SYMBOL vmlinux 0xb8e5e419 param_ops_byte +EXPORT_SYMBOL vmlinux 0xb8ecdcc6 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xb8f03f59 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xb8fbc4e2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xb902b463 proto_register +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9701d50 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xb97e34f1 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xb989db95 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb9938337 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xb994e22a fb_blank +EXPORT_SYMBOL vmlinux 0xb99585a7 km_policy_notify +EXPORT_SYMBOL vmlinux 0xb9a57859 mmc_release_host +EXPORT_SYMBOL vmlinux 0xb9d72cef follow_down +EXPORT_SYMBOL vmlinux 0xb9dff20e iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f112c2 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xba000253 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xba084669 kfree_skb +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba2524e3 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xba257d65 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xba2de7c2 param_set_invbool +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba358b08 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xba3d67c7 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba54b2c9 have_submounts +EXPORT_SYMBOL vmlinux 0xba60b753 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xba766a09 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xba7afd9d bio_init +EXPORT_SYMBOL vmlinux 0xba7cb906 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xba7dc87e bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xba81ae12 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xbab38002 of_match_node +EXPORT_SYMBOL vmlinux 0xbabccba1 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xbabd54cf generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xbac982c5 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xbad152e6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xbad47a77 audit_log +EXPORT_SYMBOL vmlinux 0xbae4bf75 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xbae73959 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xbaf52a6d mach_maple +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0b1125 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xbb1ca2fd mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xbb2f71b7 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xbb2ff572 uart_resume_port +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb35cde4 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb593b96 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xbb594885 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5f4b58 bio_endio +EXPORT_SYMBOL vmlinux 0xbb73ca99 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xbb8e1c55 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbbf110c __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xbbc2090c fb_set_var +EXPORT_SYMBOL vmlinux 0xbbcecf20 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xbbdf021a serio_close +EXPORT_SYMBOL vmlinux 0xbbea01ec md_check_recovery +EXPORT_SYMBOL vmlinux 0xbbee4317 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xbbf9a467 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xbc02048c locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xbc180483 input_reset_device +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc549394 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xbc85889a bh_submit_read +EXPORT_SYMBOL vmlinux 0xbc8b2e27 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbc9bbaeb tcp_req_err +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc45c29 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xbcd2b8ec neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xbcdf354f crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xbce1c3c8 set_disk_ro +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcfdd47a neigh_seq_next +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd3358e6 pci_get_device +EXPORT_SYMBOL vmlinux 0xbd4122ca of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4ee058 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xbd525bac pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd73ac10 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd93e15e blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xbd94918c of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xbd94f8e0 of_dev_get +EXPORT_SYMBOL vmlinux 0xbdacf57c jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xbdbb306f pci_iounmap +EXPORT_SYMBOL vmlinux 0xbdc2a6fb pnv_pci_get_npu_dev +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbdf1c9ea nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xbe04f596 set_page_dirty +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2f2e2c skb_pad +EXPORT_SYMBOL vmlinux 0xbe46a832 pipe_unlock +EXPORT_SYMBOL vmlinux 0xbe596f31 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xbe6fa564 tso_count_descs +EXPORT_SYMBOL vmlinux 0xbe868588 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xbec01baf vme_master_request +EXPORT_SYMBOL vmlinux 0xbed2aa2e filemap_flush +EXPORT_SYMBOL vmlinux 0xbed478ca pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xbed65395 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xbedaa03c xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xbef01ce2 blk_free_tags +EXPORT_SYMBOL vmlinux 0xbef10da9 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf13e5a2 elv_register_queue +EXPORT_SYMBOL vmlinux 0xbf2163f9 of_node_put +EXPORT_SYMBOL vmlinux 0xbf279944 agp_bridge +EXPORT_SYMBOL vmlinux 0xbf2b407f vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0xbf4bdab6 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa994ac srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfbb99d9 pci_bus_get +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc9970f put_filp +EXPORT_SYMBOL vmlinux 0xbfddadaa scsi_print_command +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff3b30a bio_put +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc00f0051 scsi_device_get +EXPORT_SYMBOL vmlinux 0xc01566c0 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc028f4a1 d_lookup +EXPORT_SYMBOL vmlinux 0xc038b586 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xc04d4251 eth_type_trans +EXPORT_SYMBOL vmlinux 0xc0571b19 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xc07315fb lock_fb_info +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc081335c mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09c3637 dev_driver_string +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0c89900 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xc0e4659c kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xc104318e alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xc10dfb35 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xc117f2d9 seq_read +EXPORT_SYMBOL vmlinux 0xc12a791d nf_log_unset +EXPORT_SYMBOL vmlinux 0xc130af2a dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc19cb7c0 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1e9d50a account_page_redirty +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc270f510 console_stop +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2d0b86b __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xc2dab277 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ef0edf dst_release +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc30590a6 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31ede9a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xc31f35e3 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xc32e1e5d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xc356f757 up_read +EXPORT_SYMBOL vmlinux 0xc36db858 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xc38b388f __mdiobus_register +EXPORT_SYMBOL vmlinux 0xc39494a0 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc3974514 __dst_free +EXPORT_SYMBOL vmlinux 0xc3add632 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xc3b1e4bc vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c91891 md_integrity_register +EXPORT_SYMBOL vmlinux 0xc3f3ec9c dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xc40094a4 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xc412a8cc __scm_destroy +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc4345ad0 pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc467e68b serio_unregister_port +EXPORT_SYMBOL vmlinux 0xc47affb8 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49a270c pci_pme_active +EXPORT_SYMBOL vmlinux 0xc4ac3fca mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xc4d271c1 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xc4d7a734 down_read +EXPORT_SYMBOL vmlinux 0xc4f69ad7 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc51893e2 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0xc52fa471 dqput +EXPORT_SYMBOL vmlinux 0xc53bba7a mount_single +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56a8c05 deactivate_super +EXPORT_SYMBOL vmlinux 0xc5897b44 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59c07ba fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xc5a46279 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xc5a9885f xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc5c8cfe2 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xc5c9e0f0 iterate_mounts +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e3c8e5 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xc5fba58e backlight_device_register +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc618070e genlmsg_put +EXPORT_SYMBOL vmlinux 0xc61cb2dc proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xc6255447 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xc6310f6f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63591a0 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xc64780a0 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66bd624 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xc670ecae pci_fixup_device +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc678b284 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6bd317b __vfs_read +EXPORT_SYMBOL vmlinux 0xc6c71d55 nobh_writepage +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6ee1adc scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc6f32d3b iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xc6f53ae7 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xc703a596 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xc70f05c1 generic_write_end +EXPORT_SYMBOL vmlinux 0xc7133803 phy_connect +EXPORT_SYMBOL vmlinux 0xc71beef5 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc74417b8 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc75e3f6f scsi_ioctl +EXPORT_SYMBOL vmlinux 0xc76fae1e of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc78ab661 pci_set_master +EXPORT_SYMBOL vmlinux 0xc7965d55 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xc796f5aa single_release +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a28b90 netif_rx +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7afc1fe kern_unmount +EXPORT_SYMBOL vmlinux 0xc7e9869a filemap_map_pages +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc81493fa input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xc835be23 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc840e2c2 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84de15b vfs_iter_read +EXPORT_SYMBOL vmlinux 0xc8528049 irq_set_chip +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc871c401 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d11482 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8e8d323 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xc8f5d74f ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xc8f7c02a inet_frags_fini +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9282d12 __break_lease +EXPORT_SYMBOL vmlinux 0xc930bc02 request_key +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc94e88f5 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a2e2d7 bdi_init +EXPORT_SYMBOL vmlinux 0xc9b9a09c rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xc9c5961c __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc9def10e kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc9ef636a d_drop +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xc9fc9879 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xca021d49 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca486141 security_inode_permission +EXPORT_SYMBOL vmlinux 0xca568231 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca883cce devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9f7771 blk_complete_request +EXPORT_SYMBOL vmlinux 0xcaabe86d dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcac111ed mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad05322 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xcae46a78 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xcae59957 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xcaeca4df fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafd950d pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xcb0124f6 inet_frag_find +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb429eb4 vme_lm_request +EXPORT_SYMBOL vmlinux 0xcb50c30c devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xcb727996 dev_err +EXPORT_SYMBOL vmlinux 0xcb7631f8 proto_unregister +EXPORT_SYMBOL vmlinux 0xcb82c4fe msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb9ef008 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xcba2fec5 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xcbb4c13f devm_request_resource +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc3b94e eeh_check_failure +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd1a40b ihold +EXPORT_SYMBOL vmlinux 0xcbe54ce0 write_one_page +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcc0a8167 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xcc16c862 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2abcd5 nf_log_set +EXPORT_SYMBOL vmlinux 0xcc49bc09 follow_pfn +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc58faaa neigh_connected_output +EXPORT_SYMBOL vmlinux 0xcc84be43 nf_log_trace +EXPORT_SYMBOL vmlinux 0xcc87094c tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcc97ae2a fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xcca1cb24 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd09f17 __napi_complete +EXPORT_SYMBOL vmlinux 0xccf2e07f __scsi_add_device +EXPORT_SYMBOL vmlinux 0xccfbfb08 scsi_device_put +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd06712f iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xcd173fd3 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xcd1ad405 mdiobus_free +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2cf7d2 sock_release +EXPORT_SYMBOL vmlinux 0xcd444af5 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd858501 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8792e5 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xcdafe3e4 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc6b52f pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xcdf70b5f vfs_statfs +EXPORT_SYMBOL vmlinux 0xcdf74427 phy_detach +EXPORT_SYMBOL vmlinux 0xce036cff ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xce0900ca blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xce11ca7d vm_insert_page +EXPORT_SYMBOL vmlinux 0xce13fe7c param_set_ullong +EXPORT_SYMBOL vmlinux 0xce1ed4fe xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce368824 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce430cdd simple_dname +EXPORT_SYMBOL vmlinux 0xce439112 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce527a0c abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6af020 vio_register_device_node +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce86db21 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xce889816 freeze_bdev +EXPORT_SYMBOL vmlinux 0xce969a06 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xce994fb2 __netif_schedule +EXPORT_SYMBOL vmlinux 0xcea1ce3c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xcea3068d __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xced52490 framebuffer_release +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xceea792e __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf173623 dev_notice +EXPORT_SYMBOL vmlinux 0xcf220cab get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xcf632bf7 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xcf63e73b reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xcf67df7d of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xcf7c51ca lock_rename +EXPORT_SYMBOL vmlinux 0xcf84ad8d get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xcf989807 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xcfa473a4 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfbf6c6e inode_init_always +EXPORT_SYMBOL vmlinux 0xcfe73ba1 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xcff00b8b pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0xcff6c9a6 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd00c7df9 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xd038e0dd kernel_write +EXPORT_SYMBOL vmlinux 0xd0531b37 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07ce2b0 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bf4573 skb_clone +EXPORT_SYMBOL vmlinux 0xd0c7aa5d swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fd5f3d mapping_tagged +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd109cbb0 d_alloc +EXPORT_SYMBOL vmlinux 0xd112fed4 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xd114eb0b tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd15188ad param_get_charp +EXPORT_SYMBOL vmlinux 0xd15d857a skb_vlan_push +EXPORT_SYMBOL vmlinux 0xd16f0c95 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd177d23f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1903302 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1ecf02e elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xd1fd1c8e xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xd1fd6181 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xd1fdc101 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd22229b8 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xd22e7a23 padata_start +EXPORT_SYMBOL vmlinux 0xd23092af ipv4_specific +EXPORT_SYMBOL vmlinux 0xd230fcc7 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd23da9b3 dm_get_device +EXPORT_SYMBOL vmlinux 0xd23fc4af fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xd241e4ba devm_gpio_free +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2562ff3 from_kprojid +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a536ca block_invalidatepage +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2bef603 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd2bf23e1 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0xd2c4bbdf f_setown +EXPORT_SYMBOL vmlinux 0xd2d7fd52 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2ed22ff phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd2f0b1fb vme_irq_request +EXPORT_SYMBOL vmlinux 0xd2f8855d fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xd3099388 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xd30bc528 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32ce654 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xd32de219 set_nlink +EXPORT_SYMBOL vmlinux 0xd32f770c __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xd3303558 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xd33732dd mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xd349c4af down_write +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd36e7304 drop_super +EXPORT_SYMBOL vmlinux 0xd3725e2a kernel_read +EXPORT_SYMBOL vmlinux 0xd382e488 xfrm_input +EXPORT_SYMBOL vmlinux 0xd38c8812 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd38caf8b __mutex_init +EXPORT_SYMBOL vmlinux 0xd3bbbab3 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3e22cdf get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xd3f66f3e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xd3fb1f3f uart_match_port +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd424be8d scsi_init_io +EXPORT_SYMBOL vmlinux 0xd4376f81 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd44ffcf5 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xd452d1e0 get_user_pages +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd487872c dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4a27ac6 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xd4b6b18c kill_anon_super +EXPORT_SYMBOL vmlinux 0xd4bd1129 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xd4d3070c netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd4d3cb25 nvm_register +EXPORT_SYMBOL vmlinux 0xd4d46ffd agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd4d886aa udp6_set_csum +EXPORT_SYMBOL vmlinux 0xd4fbe9e6 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xd519acdb arp_send +EXPORT_SYMBOL vmlinux 0xd521d068 pci_request_region +EXPORT_SYMBOL vmlinux 0xd5272d14 param_get_long +EXPORT_SYMBOL vmlinux 0xd542ed3b mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xd54e1e04 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5587566 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xd55c95e2 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xd55eb98d load_nls_default +EXPORT_SYMBOL vmlinux 0xd56a4c12 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xd56d1d70 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xd56f7bc2 con_is_bound +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5bc65a0 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5eb8297 tty_devnum +EXPORT_SYMBOL vmlinux 0xd5f95c9e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd5f9700f max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xd5fa85a6 phy_stop +EXPORT_SYMBOL vmlinux 0xd6141bae security_path_truncate +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66ea95e __f_setown +EXPORT_SYMBOL vmlinux 0xd680e5b4 vga_client_register +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6c77c4c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd6d43009 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6d77ceb km_state_notify +EXPORT_SYMBOL vmlinux 0xd6d88bd5 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd6d9e84b gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd6de294b netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd706242b agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xd7180f44 lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0xd72b6826 kthread_bind +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd74fde3a mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xd75217e1 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd7950972 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xd7d30ec4 dump_page +EXPORT_SYMBOL vmlinux 0xd7ddefcd netdev_update_features +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7eb018e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xd81f3c26 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd827554e param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd8282aaf prepare_binprm +EXPORT_SYMBOL vmlinux 0xd82bdf66 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xd8301a15 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xd8309167 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xd83a263d pagevec_lookup +EXPORT_SYMBOL vmlinux 0xd84d0d52 update_devfreq +EXPORT_SYMBOL vmlinux 0xd84e9a39 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd85534b6 get_agp_version +EXPORT_SYMBOL vmlinux 0xd8562ae7 nf_log_packet +EXPORT_SYMBOL vmlinux 0xd8695db6 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xd886b1ec skb_trim +EXPORT_SYMBOL vmlinux 0xd892a928 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xd89acac2 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xd89d782b unregister_nls +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a195cd down_write_trylock +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bb17d5 i2c_use_client +EXPORT_SYMBOL vmlinux 0xd8c7b751 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd8c852a8 scsi_execute +EXPORT_SYMBOL vmlinux 0xd8d659a6 serio_rescan +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e774b3 vme_slave_request +EXPORT_SYMBOL vmlinux 0xd8f4bd04 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd902d477 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xd90cda27 seq_lseek +EXPORT_SYMBOL vmlinux 0xd91bf3da jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xd920d29c devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xd9260b1b ps2_drain +EXPORT_SYMBOL vmlinux 0xd92d3e1b kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xd92e90bc tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xd96ef667 __bforget +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a82139 inet_frags_init +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c9783a security_mmap_file +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9ddfeae md_cluster_mod +EXPORT_SYMBOL vmlinux 0xd9dfd112 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xd9e8eea9 inet_select_addr +EXPORT_SYMBOL vmlinux 0xd9ede69e udp_proc_register +EXPORT_SYMBOL vmlinux 0xd9f301b8 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda151b2c dquot_resume +EXPORT_SYMBOL vmlinux 0xda2610df __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4769ca inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xda47ace2 eth_header_cache +EXPORT_SYMBOL vmlinux 0xda703986 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda873baf inet_frag_kill +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda967b30 blk_register_region +EXPORT_SYMBOL vmlinux 0xdaa1e611 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xdaa49443 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xdaaffec9 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad6bfc4 bdput +EXPORT_SYMBOL vmlinux 0xdae3d689 sock_init_data +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdafb59ef forget_cached_acl +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb1402d5 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xdb1ac0b6 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xdb2e6172 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb745f9b tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8395e5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xdbab960e mntput +EXPORT_SYMBOL vmlinux 0xdbde7001 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc06a6e7 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc214961 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xdc21c57c set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xdc2561e1 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4955ea thaw_super +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc52fbd7 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xdc764d9b kfree_put_link +EXPORT_SYMBOL vmlinux 0xdc812fe6 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca7768f phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcb7c921 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xdcb92613 fb_class +EXPORT_SYMBOL vmlinux 0xdcbf20ab skb_find_text +EXPORT_SYMBOL vmlinux 0xdcbf46ec tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xdccaac69 of_device_register +EXPORT_SYMBOL vmlinux 0xdccb1f3c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd02871d dev_set_group +EXPORT_SYMBOL vmlinux 0xdd103a25 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xdd10b996 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xdd3ff66c qdisc_list_del +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd71bc83 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdda2b4b6 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xdda8437b security_path_rmdir +EXPORT_SYMBOL vmlinux 0xddaafcd2 md_update_sb +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddc929bd pci_assign_resource +EXPORT_SYMBOL vmlinux 0xddd95c43 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xdddafe2e set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xddf8fb26 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xde3483bc pcim_enable_device +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde72e83c dcb_getapp +EXPORT_SYMBOL vmlinux 0xde780233 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde84cb04 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb144ef mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xded4bf5d sock_edemux +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4ab276 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5ca5fa i2c_transfer +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf60fc83 _lv1_net_start_tx_dma +EXPORT_SYMBOL vmlinux 0xdf66ebf3 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xdf76a0fa param_ops_charp +EXPORT_SYMBOL vmlinux 0xdf7843fa twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xdf8c53a4 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9e0e90 unregister_key_type +EXPORT_SYMBOL vmlinux 0xdfa7788e blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xdfc31b17 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xdfc92386 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xdff04da3 d_obtain_root +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe003c9f8 km_is_alive +EXPORT_SYMBOL vmlinux 0xe00a257a make_kuid +EXPORT_SYMBOL vmlinux 0xe015f919 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe0212e00 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xe02d23d5 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xe040d83a dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xe04181ec blk_start_queue_async +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06d0efc nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08e4171 tcp_child_process +EXPORT_SYMBOL vmlinux 0xe08ebca3 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xe094e967 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xe0a8ddbb agp_free_memory +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b6dec7 input_register_handle +EXPORT_SYMBOL vmlinux 0xe0bd998c pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xe0dba935 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe113d79b elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xe1194d3b skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe149d00d netdev_emerg +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17e95b5 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xe193bf24 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xe1bfd7c4 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xe1cdd739 __inet_hash +EXPORT_SYMBOL vmlinux 0xe1d1b1f5 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe21749d6 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe224fb61 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25d335b inet_bind +EXPORT_SYMBOL vmlinux 0xe28a76bc generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe292f2ee check_disk_size_change +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b8cc8c simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2caa644 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d9c929 padata_stop +EXPORT_SYMBOL vmlinux 0xe2ea0904 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f6a405 vme_irq_free +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe317fb6f generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xe321b735 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xe325f457 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xe33b1d83 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xe33f06e8 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe3994c8c pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d9fc90 km_policy_expired +EXPORT_SYMBOL vmlinux 0xe3da8b61 single_open_size +EXPORT_SYMBOL vmlinux 0xe3eb1924 path_is_under +EXPORT_SYMBOL vmlinux 0xe4105750 dev_trans_start +EXPORT_SYMBOL vmlinux 0xe41914d2 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe442b543 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xe4466bbc ppp_unit_number +EXPORT_SYMBOL vmlinux 0xe44cc02f blk_fetch_request +EXPORT_SYMBOL vmlinux 0xe456ddeb key_unlink +EXPORT_SYMBOL vmlinux 0xe47cee74 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xe4826166 sock_from_file +EXPORT_SYMBOL vmlinux 0xe4826764 dst_alloc +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4858755 __sb_start_write +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50686e6 skb_split +EXPORT_SYMBOL vmlinux 0xe50697f9 kernel_connect +EXPORT_SYMBOL vmlinux 0xe50b87e8 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xe5102b3b cont_write_begin +EXPORT_SYMBOL vmlinux 0xe514272f mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xe5181176 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe550ca57 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe5528be7 init_task +EXPORT_SYMBOL vmlinux 0xe571fdb1 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b82412 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xe5bde9ce xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xe5c1d943 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d7cef0 free_user_ns +EXPORT_SYMBOL vmlinux 0xe5e07b9b blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xe5e63ebf nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5eff2dd input_free_device +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe6202ccd dm_register_target +EXPORT_SYMBOL vmlinux 0xe633551b __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe64ceaf2 put_io_context +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe67cb623 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xe6898c4d vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xe68c3033 led_update_brightness +EXPORT_SYMBOL vmlinux 0xe6917198 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe6959741 proc_mkdir +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6ca1c93 of_phy_attach +EXPORT_SYMBOL vmlinux 0xe6d7d9d5 downgrade_write +EXPORT_SYMBOL vmlinux 0xe6df4ba1 __ps2_command +EXPORT_SYMBOL vmlinux 0xe6e9e3af macio_request_resources +EXPORT_SYMBOL vmlinux 0xe6f43766 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7343ac4 vga_put +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe74d9f35 phy_device_register +EXPORT_SYMBOL vmlinux 0xe7529969 inode_init_once +EXPORT_SYMBOL vmlinux 0xe757204e dev_addr_init +EXPORT_SYMBOL vmlinux 0xe75e4f9f pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe779270f flush_old_exec +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe79585da pci_remove_bus +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b09e6c fb_set_cmap +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d0ed3d netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e7f959 get_task_io_context +EXPORT_SYMBOL vmlinux 0xe8038781 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe83b9c26 devm_iounmap +EXPORT_SYMBOL vmlinux 0xe847ddf6 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe84d82b3 inet_add_offload +EXPORT_SYMBOL vmlinux 0xe8535637 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xe853edef of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0xe85682e4 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xe88bb22e phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xe895c32b of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xe8a561c7 default_llseek +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8c703cc pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe8d7811c __register_nls +EXPORT_SYMBOL vmlinux 0xe8d9ce33 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xe8e18c3f phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe8fba7e6 tty_mutex +EXPORT_SYMBOL vmlinux 0xe8fdc90a skb_make_writable +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe946d02d blk_delay_queue +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9554d31 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe95ce565 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xe9693589 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xe96fac37 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xe98966b0 kill_litter_super +EXPORT_SYMBOL vmlinux 0xe992e44e mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xe9b74ea3 pci_request_regions +EXPORT_SYMBOL vmlinux 0xe9f49113 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea2f82cb nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xea2f90b4 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xea6371ca inet6_bind +EXPORT_SYMBOL vmlinux 0xea77ee79 eeh_dev_release +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea821526 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xea86b53e input_grab_device +EXPORT_SYMBOL vmlinux 0xea8b4821 led_blink_set +EXPORT_SYMBOL vmlinux 0xea8fc94d inet6_getname +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9f8364 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xeaa317c2 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xeaae4c22 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0xeab9e53a set_device_ro +EXPORT_SYMBOL vmlinux 0xeaf0ed59 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xeb054d85 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xeb075d6e __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xeb256ed1 netif_skb_features +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4ec6ef elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xeb56f01c tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb90fd19 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba52252 dentry_unhash +EXPORT_SYMBOL vmlinux 0xebb5b950 build_skb +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebd33418 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xebd39a30 get_cached_acl +EXPORT_SYMBOL vmlinux 0xebda3cd7 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xec0f42be blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec36185e from_kgid +EXPORT_SYMBOL vmlinux 0xec433578 inc_nlink +EXPORT_SYMBOL vmlinux 0xec502f5d security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xec5cdc9b input_open_device +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xecda149d sk_net_capable +EXPORT_SYMBOL vmlinux 0xecdd2a60 textsearch_register +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecff4c43 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xed04c212 input_get_keycode +EXPORT_SYMBOL vmlinux 0xed2a554b dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xed3e6e5f __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xed526b15 dquot_destroy +EXPORT_SYMBOL vmlinux 0xed586c31 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed6f3bfa ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xed7e942a locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc31d56 srp_rport_get +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc6f40d dev_add_offload +EXPORT_SYMBOL vmlinux 0xedd6c8cd tty_check_change +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xee0157fb ps2_handle_response +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee448063 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xee4765c4 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee5fa384 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xee64ed22 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xee682b93 skb_push +EXPORT_SYMBOL vmlinux 0xee87842a dcache_dir_open +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb27e6b flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xeeb487d5 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xeeba92f3 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef25130 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xef0ff891 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xef2c9d70 copy_from_iter +EXPORT_SYMBOL vmlinux 0xef3329b2 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xef623448 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xef84c1f2 __vfs_write +EXPORT_SYMBOL vmlinux 0xef85a156 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xefa55a31 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xefaa4d4f vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefc4ab82 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd296db xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xeff811f1 ilookup +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0039035 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xf00e0485 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xf0121402 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf02a288c scsi_add_device +EXPORT_SYMBOL vmlinux 0xf02c5855 icmpv6_send +EXPORT_SYMBOL vmlinux 0xf0327f32 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0xf035210e set_user_nice +EXPORT_SYMBOL vmlinux 0xf04879d3 tcf_register_action +EXPORT_SYMBOL vmlinux 0xf04cf48d to_nd_btt +EXPORT_SYMBOL vmlinux 0xf0528971 __register_binfmt +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06d4736 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf091c9f8 pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0xf094d605 sock_create +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0b47062 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xf0b4b6c1 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xf0b82ac5 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xf0c02be6 netdev_notice +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0e5732d force_sig +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf108d466 __vio_register_driver +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11751ff dev_open +EXPORT_SYMBOL vmlinux 0xf1180b83 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf11a2c6a submit_bio_wait +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1242146 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xf1350b60 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14ca1b6 agp_create_memory +EXPORT_SYMBOL vmlinux 0xf163674f netlink_unicast +EXPORT_SYMBOL vmlinux 0xf16f32aa blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf187d8a8 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xf192c19c dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xf1954534 vfs_readv +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1c81f75 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xf1d7d6f9 touch_buffer +EXPORT_SYMBOL vmlinux 0xf1da6328 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1fb36b9 vme_bus_num +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf20f5fb5 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf226cc5e of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf243d521 release_sock +EXPORT_SYMBOL vmlinux 0xf2445615 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf257081a module_layout +EXPORT_SYMBOL vmlinux 0xf265fe39 __devm_release_region +EXPORT_SYMBOL vmlinux 0xf2964f36 seq_printf +EXPORT_SYMBOL vmlinux 0xf29a1496 pci_dev_get +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2fb4999 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xf30a7d56 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3222f5a bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34f6a12 generic_setxattr +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf360e32a iget_failed +EXPORT_SYMBOL vmlinux 0xf3616178 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3b526cc iunique +EXPORT_SYMBOL vmlinux 0xf3bbe9f5 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xf3cc83af sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xf3e21d38 dqget +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3eedccb do_splice_to +EXPORT_SYMBOL vmlinux 0xf404cd25 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xf4186a68 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xf436f682 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf464938d sock_no_poll +EXPORT_SYMBOL vmlinux 0xf46e6257 dm_io +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4763bdc fput +EXPORT_SYMBOL vmlinux 0xf4937ac0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xf4bc75b6 set_cached_acl +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4dfad38 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xf4ee11fc generic_make_request +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50c010a generic_permission +EXPORT_SYMBOL vmlinux 0xf510e163 mach_ps3 +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf558f75b twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf5607d58 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xf5682751 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5a860f3 add_disk +EXPORT_SYMBOL vmlinux 0xf5ba1c47 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d1a91d simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xf5d51ba3 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e27de5 qdisc_reset +EXPORT_SYMBOL vmlinux 0xf5e5a6a0 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f8848e override_creds +EXPORT_SYMBOL vmlinux 0xf5fb957e dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf614e9c1 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf6297ad1 note_scsi_host +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63d8414 pid_task +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67d1bd4 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf683cf62 simple_unlink +EXPORT_SYMBOL vmlinux 0xf685cdf6 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf688489e skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xf691dd63 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf69d189d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xf6a0abc2 tty_port_init +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d84332 dev_add_pack +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6f21f3f zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xf6f2b1af ether_setup +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fd775c remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xf70dc1ec sg_miter_skip +EXPORT_SYMBOL vmlinux 0xf73adb4c textsearch_prepare +EXPORT_SYMBOL vmlinux 0xf73c6410 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xf73d8073 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xf74340ec cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xf7478078 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7764218 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xf7950bde qdisc_list_add +EXPORT_SYMBOL vmlinux 0xf79d8003 d_alloc_name +EXPORT_SYMBOL vmlinux 0xf7a6e633 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xf7a9d002 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xf7ad7fc7 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7c4aafa block_read_full_page +EXPORT_SYMBOL vmlinux 0xf7d1fc49 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xf7d86067 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xf7ffe0a4 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf801af7f xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xf8034c21 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xf80972a3 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf81f2bb0 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xf8214139 give_up_console +EXPORT_SYMBOL vmlinux 0xf825a3f9 seq_file_path +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82d65c5 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8523acb xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xf86a542c mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xf87aba0b vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf8b5709d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d1865c swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xf8e864bc dev_deactivate +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8f768a0 phy_disconnect +EXPORT_SYMBOL vmlinux 0xf903062e skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xf91a5a72 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xf91e5e0c netlink_broadcast +EXPORT_SYMBOL vmlinux 0xf92fad65 ip6_xmit +EXPORT_SYMBOL vmlinux 0xf9300b99 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf936c188 key_type_keyring +EXPORT_SYMBOL vmlinux 0xf93811fc nvm_erase_blk +EXPORT_SYMBOL vmlinux 0xf94c2384 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xf95088c8 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xf98f921e locks_free_lock +EXPORT_SYMBOL vmlinux 0xf99d633b vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a62097 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c58a73 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf9cce259 ppp_input +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9fb87e6 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0xfa3c1589 tty_vhangup +EXPORT_SYMBOL vmlinux 0xfa47e56a serio_reconnect +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa56ee3d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa8656ec devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xfa887794 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xfa9b870f set_wb_congested +EXPORT_SYMBOL vmlinux 0xfa9d95f2 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xfa9e95a9 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacca9b7 inet_ioctl +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb2488aa freeze_super +EXPORT_SYMBOL vmlinux 0xfb4298f9 dev_get_stats +EXPORT_SYMBOL vmlinux 0xfb63789d neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb803b9d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb97fa17 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xfba3f694 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xfba6eeb7 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb7d4b3 dev_uc_del +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbe39b7a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xfbf4a38c inet6_protos +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc083363 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xfc0a22ac param_set_ushort +EXPORT_SYMBOL vmlinux 0xfc2fa35a filp_open +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4b6413 md_flush_request +EXPORT_SYMBOL vmlinux 0xfc57c28f netlink_net_capable +EXPORT_SYMBOL vmlinux 0xfc67a33e add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xfc6ad44c loop_register_transfer +EXPORT_SYMBOL vmlinux 0xfc74779e rtas +EXPORT_SYMBOL vmlinux 0xfc7b6e71 user_path_create +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfce12f6b md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xfce6cd09 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf97596 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd3cf09a pci_match_id +EXPORT_SYMBOL vmlinux 0xfd43e9a1 mpage_readpage +EXPORT_SYMBOL vmlinux 0xfd4a0e4b redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xfd5dc39f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfd656b29 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xfd722c62 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda77964 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xfdaf15fe generic_delete_inode +EXPORT_SYMBOL vmlinux 0xfdb21ee8 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc24db4 read_cache_pages +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe14f85c phy_attach +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe1f8be4 block_truncate_page +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe426df6 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xfe4b3495 phy_init_eee +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe507e7e tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xfe5348c7 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe76e930 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfeabd944 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xfeb35aea sock_wake_async +EXPORT_SYMBOL vmlinux 0xfebc0dd4 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee0dd16 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2bac9 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xfefb66ec giveup_vsx +EXPORT_SYMBOL vmlinux 0xff011baa of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xff0c176d mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff47d177 __lock_buffer +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff69e0e9 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7967f5 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xff7c8dfd qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xff8921c0 abort_creds +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa6ad0e neigh_direct_output +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe77b0f sock_sendmsg +EXPORT_SYMBOL vmlinux 0xfffacef1 md_reload_sb +EXPORT_SYMBOL vmlinux 0xfffc32a6 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xfffc981b ip_options_compile +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x03b753c3 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x075fd7f6 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x08ae67e1 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x09c86e60 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0b2574c9 kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0ec5fe14 kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0f552691 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x13baf75d mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x15d7bc8e kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x198635a2 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x23c1531a kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x264c1c24 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x280f59bb gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2b7768b4 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2c41862c gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2d1e8a99 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2edb1d65 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2f349b56 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x31262e10 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3a1d610f kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3ceb257e kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3d25f2fd kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x428be9ce kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x457de9c4 kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x482d052a kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4c83e875 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4f7df82b kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4fb2a9d4 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4fc62101 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x577f66ed kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5854c9ab kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5903a6b8 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5baff6ac kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x60b0c309 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6b3c7d9b kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6bce24a8 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6d4ed270 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6f7da51c kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x742bc616 kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x753dc9d3 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7986fd4b kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x886f8dab gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8945933c kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8a1910d2 kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x938970e9 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9b037fc5 kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9f58cd5f kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa141274a kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa2d6b2d8 kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa8e5566b gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xaeb2082e __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb5257a0e kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb711b12e kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbb057643 gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbb386e35 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbeacb5ed kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbf2b3728 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc014135e kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc41f8709 kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc49af55e gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc6b059b2 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcaa372e8 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcb87e473 kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd07be793 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd6cb18c3 kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdfb8285a kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe4d7f80b kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe67b1ed6 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe7d74b99 kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe88fe38b kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xef11cb35 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf41da74e kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf435a5c3 kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf8488f55 kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfe152ccc kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x966974cc kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x0a5f895a spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xcd740670 spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xe44b919a spu_save +EXPORT_SYMBOL_GPL crypto/af_alg 0x2140b80a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x2ab26a37 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4152cd66 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x507b6cd3 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x7a16a59f af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa2fb6ed0 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf26390a af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xee2393e0 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xfd3e6b21 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc42f7c3a async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x18c74f69 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x31573a1e async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x543c0cf0 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xc54fed27 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2d6bfdfb async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2f558fdc async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x39d8a76b async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7703e180 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x9e3508b4 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xa9f9deed async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x0b0a2dfe blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x18cf255a cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x95b43e19 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x1adfcdaa crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xa676b98c crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x14a2920f cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3183f1af cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x3b437e03 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x3cef81c6 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x44b1a263 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x47479bc4 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x524ce9bf cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6a50d19c cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x87448808 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x9862b40e cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x659d861d lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x03ed1424 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x399f976e shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x99ecc6a8 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb2045dde shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb8471527 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd8d6ce55 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf49a451b shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xffd098c3 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x5b5d9a95 crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x61df3d6f crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xa270bef6 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xab987b89 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x817794b7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x987e64f9 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x9caa3641 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x08bf550d ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0dac8557 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x114584a3 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x262fed96 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x319408c0 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x410329cb ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x57d50f67 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61a00a1e ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x61c7254c ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x628bf809 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x66a549ea ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6855ddbd ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6d4c94b1 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7158a693 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7d894f1d ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x96419473 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xafc00a91 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb73354ad ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc655dad7 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd8835da1 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xee302843 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf51ce42f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1fe3c1db ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x25627e0a ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x50e29ab4 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5a1b0488 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9d4e8899 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xaca13369 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb3d30452 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb40b8311 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc71f121c ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc9f2159b ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcc26a560 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd2c63fcf ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd3fec7c9 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x06e38ab4 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x9653cc6b sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x030249b5 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x57e48988 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x88547fc4 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xd068d515 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1b8b9c26 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f63e38c bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x24c1957c bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x27434e7c bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x29e1a3b4 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2dcd81cd bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4f09b89e bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x68b6b251 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6d4296d5 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7a3fa52b bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8e0be009 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x930f492c bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x99b34604 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a6a0bb0 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9b87e128 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa07b15ed bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa549b2b8 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa84bc761 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbaf2be38 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcac5d844 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd1c1f9bb bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe77fb660 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec070869 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xff975248 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x038f1651 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x20b18f70 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x21d0ad06 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xab32cbb1 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc7054a57 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdfb6d57e btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x023fa4fa btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x298645c4 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x377ee3e8 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3966c8ee btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x547461d5 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6e6bcaa6 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xaa7390a9 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb7d5acf7 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xea7f5e45 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf6c7c2ac btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfddb291d btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1086f3b6 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x19f63a08 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x27597758 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2d52e1fb btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3749a8a8 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x48bab30b btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5dd9dbf9 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6caaace5 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcdb35ede btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdac4ed5f btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfb6e2f91 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xa9bb9c23 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xf389798e qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xec583bc7 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x6089f8c9 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x1496a322 nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x33dde09d nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x96643c0e nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x9ff0f654 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x4a7bc985 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x88b0f082 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x908da46c dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9d9e723c dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xda838429 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x0c1bd46e hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x2f445f07 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc906f0a6 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x3cb3287e vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x575bdb12 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x9cf2c784 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xb8d94ebb vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x07a11dca edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x09fdd273 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x114801ac edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x176bd09a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x22ddced8 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2eb19e82 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3064a4cb edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x50f10651 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x55918efd edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5db256b0 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6216f23f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8443901b edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x90682ee6 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x929201f0 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9453b9c0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x95e0ee01 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9cf8c959 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb08fe473 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcb9602e9 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xda14fb37 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe90fdb10 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4444d2e edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfc834e68 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1ed04ef3 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x28f8535f fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x76f3b72e of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9df74725 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xcc5eafe5 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xceebd620 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x1e96fbf3 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xb982a062 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x33ecb18a __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x8837f7a4 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3d1f3c81 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3d3f6859 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4540ea9a drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6433f08f drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb7f1c5e4 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf218b5da drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xc3a33a73 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xca1167a4 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe5065003 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a3f6a07 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c094685 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x15876b01 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20ee1682 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21aed49a hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22477cb5 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x285122bd hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x34be5140 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37de26e7 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x392d8949 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3aa799b7 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b0fce09 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b4480cb hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47d2fcb3 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b156545 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4dbae1e9 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e09775c hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x579af994 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5fa7d8dd hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74991733 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x76f1c279 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x805cf4e4 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x840fcf4c hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a0a6ab0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa11313b3 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa21a6531 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad11c0bd hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbaa950f6 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbca894fd hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xced7adf9 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf6a5e30 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe390a645 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeeef7c8c hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa03b256 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfcb197c4 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdb16e0c hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x4c417aef roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1d9be0b4 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x32a7c651 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6b50326f roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9c1b6cf4 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa09b4847 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb672c03a roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2f250a1b sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x77f41af6 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x808f63b6 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9db0ad0f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa196b963 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa52a7cca sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc37ec899 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc7d872e6 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc8679416 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xce0899bf hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x171bec35 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x221999a7 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x23ec0d31 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2ad98f41 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x39637a72 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x42784c96 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4fd23244 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x584b93a2 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5d106216 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x76ff8f03 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x878eefa5 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x97457663 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa8e08b80 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xac63ad0d hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb0c68964 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb96773bc hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd209b92a hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfb7048b6 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x87189c3e adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x97e793a2 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xb6f0e92e adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x09c98964 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1223ec9c pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1791743b pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x45ddb427 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x49f70419 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5448cb0f pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x61706451 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x68800bdc pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x70724543 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x73e074e1 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x86c304b2 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9df94722 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbd7c36d6 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe03a103e pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf79dcf7b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4b38e395 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4d54c00e intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x78f18f0b intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x7c2b0062 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x7f1f4f65 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb7462124 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf1dc623a intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2080d63d stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x60aed8e5 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x84f80d2b stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x92ab216f stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x958a037c stm_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4a4d9d48 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa590ef12 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc7fba0ad i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd8016fef i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xde944969 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbb6c6d33 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xff51e582 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x18b001e6 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x5082b484 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x872837e8 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xd4c0b884 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xd6a255a5 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x185c0c9c ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x36b9dd73 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x65ee002a ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x894a537c ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8d52cf0d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb5412a2e ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb8cc635c ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf07ef9a4 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xffd1f91b ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9a181a49 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xf4fab7e0 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x5b81baaf bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x67c7744b bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x6eaf2ea5 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0f21ce62 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2396ee32 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x24d45878 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3882632e adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4d502084 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4e8486db adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7896153f adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9a4e3fe3 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd035f4fd adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xda076778 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdb361e0e adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe2ba1424 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0a25d89b iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x11712969 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x272b9cf7 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3201e240 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a444a82 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e122b77 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40981026 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4c2d29ba iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x52ec59f9 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61322c33 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6dae2256 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6e2fc079 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x757f513c iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x85aae91a iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88883aa7 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88e8bfe5 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x90b64522 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x91e58e58 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92a7425a iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1c27e5e iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4c8b813 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xab02b61b iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad108474 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xae0b716f iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb7a58f0f devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc6f865b5 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8495c82 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd707363d devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf63f6212 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf8c6b51a iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb3b0fb7 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x28776d45 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xbffdb3d4 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xc3e54373 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x6897209d cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x91b0c976 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xceccae87 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x350cd112 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4e512dfb cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x595b9c4e cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x01205e3e cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x0309591c cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x4f45ca64 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x6378b977 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xb688cd3e tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xd6034a10 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x348c329a wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x77b056ba wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a9aac75 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9253da45 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9e7f90da wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xab8eb1b1 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb0a1669b wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb630aceb wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbc8d6d3d wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbe8d414c wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc03aa19a wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca70434c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x26e0eef6 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x85339146 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x869758ec ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x9beb1fcb ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xac630071 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xac7712c0 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbce063b7 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf0e6c8e1 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfa63560f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0a162fd2 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2c3f5b2e gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x32856181 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x37988ecb gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f1bb6b8 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4425ebc2 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x495cbef9 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x69f3f1f7 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x82d9fd1f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x91f8f082 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x97bdcaba gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa73f7a9e gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xabae32d9 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc3bffbaa gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdb80c930 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdca9c031 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf1109122 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x21e19210 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2652eaed led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3368ec69 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x4ea1ccb1 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8004a3a9 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf5cb8ff8 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0f50501c lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1a62ae46 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2f7ceee1 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x41111c20 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x46200991 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x66579689 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7cd77bd7 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x8c8bc47f lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa0e21299 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb742ca8b lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbb8bb43d lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x51ef7290 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7a6a2307 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x9a2ff4ea wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x9bef9afe wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa3dbd835 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd8626d4d wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xddf6a857 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe9509ad4 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0x9808f147 wf_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xb8ed5b2c wf_cpu_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xcd9a18ef wf_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xceda69f1 wf_cpu_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_smu_sat 0xe05851d5 smu_sat_get_sdb_partition +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x08d5aa78 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1536fa9f mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1711fbf2 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2702ca7f mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x367cd719 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4363b024 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x46487529 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4db1e4cd chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x61ddb171 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7fda75fc mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x859d929e mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xacddd662 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbcc74c05 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x45b7926a dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x49b1cb6d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x64f1032e dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x67d14d95 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xac5abbdf dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc75b037f dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca594d1e dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd8707257 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfe3dc225 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x778fec78 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3bbbbb9c dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4320f1d1 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7760be5c dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb3e8933c dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcff9fc1a dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd019605c dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xee0112c3 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x54af691c dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd4410ee7 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0d37407b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x11d8a600 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x314ae4af dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38d054ab dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x663ab0ed dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8daf5b98 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xacc83592 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x06bcb181 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2758ac6b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x461f249e saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7574b5cb saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7fc73d52 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb521e316 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc76da30a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc8c99ece saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xce8363fe saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcfc281ce saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x59e21a87 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x66494e14 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd20defa7 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd96ff381 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd9a2691f saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdd9a00f6 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xec1cde96 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0561b44e smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x098f30a8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0c254a4a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x20f7bed9 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2ac8a67e smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2dd8517a sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x35210d9b smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4fbd8fc6 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x54343ca5 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5db1e2d0 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x757e2e21 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ba67378 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa3ded129 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb3e789e4 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb8809700 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe1bb8b6f smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf1505ced smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x9964410e as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x6bab221b cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x5d5453b1 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x10d6aaf5 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x139f9956 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x273f3da4 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x3b586e87 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x3da12ed1 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x55deb988 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x58eb6f0c media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x64d99777 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x74798b50 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x8fb88a63 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x9bdf1c6b media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xbf4e3593 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xc38ca8fd __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xdbad6d81 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xdbb45a44 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xe4a7dd3a media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xe7cacb62 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xf8af3a71 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x1c7951d8 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33e7f27e mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x377ba35c mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x42560118 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x55a498f4 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5af7a6fb mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x65d1bc0b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6d3bfcb0 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7331335f mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9d3d0c4a mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaec97ffb mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbba106b3 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbd76e1e3 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcb6dfd20 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe8de5966 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf1720903 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf4ef076f mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf523ed25 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf8ff318e mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc6360ac mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x060c517a saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18fcad40 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x48a13fc4 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x79d4c428 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9590b4c8 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa25f942f saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa9be18cb saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xada5994c saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb12ffbd7 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb30cd1e7 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb8078b86 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbb05858f saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbf3a98ff saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc1c094be saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcbafeda8 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe0f13294 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe7ba6ad6 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf37f4f43 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6f40643 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x06d47277 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1b6f5990 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5eb9ca05 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb75d1ab1 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcf40e1f6 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe5e04667 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf0c18fb7 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x13af0604 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x152467fb xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x8e51df5f xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x99bda9e1 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa3c4d9d7 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb1a3fbff xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xba828e35 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x31d2d5ff xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb0ca2e16 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xf084d323 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03dc6149 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04571967 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1866da92 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1dd44fcd rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x27f4a655 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2df7c3b2 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2f216d4e rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x329cf17d ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f90b2e4 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x50d951d4 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7ee1a2a7 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ac8b45f ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x906b7c33 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x97469e5e rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7b9dc8d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8c3d59a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc5984061 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc60e2e9e rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd8c924a6 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x7d2c54fe mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xa34ed4b6 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xf0d44e20 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xbd16bb05 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x9d518e64 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x0ec92701 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x1b8ace6d tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xd72fd9c0 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x1f331a51 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x7e6f82a5 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8c3e3882 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x55083d85 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x65b092dc tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x1bc94c96 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x06e6c30a cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3d5d9ebd cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x49da6b26 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5b67e906 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64a799c5 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8a3d5419 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9a18a997 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xab20623f cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xace247d0 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb144fc89 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd2e2cf21 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdd988e64 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xde35cfc4 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe0985e33 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe9c20b14 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeedb8c8d cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf06a5811 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf28875ef cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf75094a8 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf851a04d cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xad54bf9d mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x675616fa mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x06fa22b3 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1874176f em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x18f9a336 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x191bc0c1 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x21f1faa3 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6b8d78d4 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7a8b6f44 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8593cb51 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x941477a2 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa5b7877f em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xadffbb07 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb49ea0d8 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd3394d9b em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4c5298a em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4e947c8 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe7070225 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeecf465f em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf3304a2e em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x09de8659 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5237fedd tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x97a7f7e5 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x9d912c69 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x05dd30bb v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ab73260 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7c778e75 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x90eb8813 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xcfcfe051 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdec93daf v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x4b0ff2ef v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x7b1eb133 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00abb37f v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x088c2619 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x15b75c0e v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1c34a18d v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x20c317eb v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x23e7cc90 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2e6b9d06 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x363e4e01 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x39ff2afa v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x462933ab v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4e64e641 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x585a6c63 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x684591ff v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x71d462c5 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7631498d v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7e09701f v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92131a21 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92b22900 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9495df94 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a7e04bf v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbeca184e v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xca35dede v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xca48e215 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcb44fc2d v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeb0eb36e v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xedac0861 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfb957a16 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x00ca1bac videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x021e29d2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0e133b74 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2be76e52 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a3dfde8 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3fdfa0e1 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x40ac64d3 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x417a1ba1 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4fcc5286 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x669542d5 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7d44598f videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7e06d9a0 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x838eefb4 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x85b73c0e videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x871c5546 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9165e082 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa017516d __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xacbcbc00 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb3143e1c videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb4d4867a videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc02997c1 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdae27237 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf56b42b0 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfc80b218 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x69bd5d3c videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x728d084d videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x742a5f3e videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xcca74ecc videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x01089594 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x0b315cf6 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x32f4dd95 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x05d0ee26 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a8956f8 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x23c2f890 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2567b6f0 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2626b72f vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51b135f9 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x61e970e2 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x64f29db0 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7067a4bc vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c5b1172 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7eddee8a vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8636db08 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8bd9a805 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x94b627e8 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa1484894 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb233f8b9 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbc4123b0 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xff9df33a vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x9eca9e83 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd5157766 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x5029f069 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xa1e76b92 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x58beadc2 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x0a4cd52b vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x110e7976 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x25f17267 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x263c6dd5 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2770ff5e vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x29ca2537 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2cf7b3a1 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x302e90f3 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x33cf9af4 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x42c6a596 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x44ec5af7 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x64de51be vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x681a89a9 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x6b78ef93 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x746c4233 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7aa01fd0 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8159063d vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x823f8203 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x86e06cc4 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8ad0a05d vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb034732c vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xb52cbc5b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbc69c9cc vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbe449d3b vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc55cd197 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc91989a1 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xcb9852e3 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd67d5f8b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe60ae98a vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf0a379f3 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf14cc6e4 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xff42c6b5 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x677d6f3e vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x03329a64 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x08c63af8 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1d01b9c6 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2643e79d v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27f53324 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x47f162de v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4bd41a18 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4c9aa337 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4d52daf0 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4d66df3d v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e313de6 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50fbde5f v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56a0e782 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x57c71cb5 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5aee1f9e v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a294a30 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x84b6ff03 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x90bdbb5d v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x916a4345 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9375d6f2 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x975ba696 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9ab2381a v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa31584fc v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa705724e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa9fdf355 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb07eb4ec v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbbe3307d v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc170b90d v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xccf5e12d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x006e91a8 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x22b616a8 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd0c1059c pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3753d36f da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x421b2e2e da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x52710e4c da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x843b6334 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc63c7e72 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd017b780 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xeafce04b da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x22ec95e7 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2489c632 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x33b425fa kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x462fc7e8 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5d081d5d kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x81580ce6 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x93cc58f7 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf1976d7a kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x12ac15e1 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x34b07f1b lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8eeb039c lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa1203521 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb1e81e69 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcc36a3ea lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdf719dc1 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe2b19a1b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe55c0c72 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe6ee2fb4 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8439506e lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x9ffa487c lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd857334a lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x16064372 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x44b3fd3a mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5694572c mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x56bc0852 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8050f731 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe5a00e21 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0c250106 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x24ad8018 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x38e08c00 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x399d2454 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3cd072d0 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4335c936 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5dc6a8e8 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x86db07b0 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb6954704 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc36be7d1 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcb747dfe pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x3c70ad81 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4914d1fc pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1bfb8321 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa869fc8c pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xbfd00ebb pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd5df840c pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfd0e976d pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x260d9084 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2810e14a rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2aa8ea5a rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x484a8aa2 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x553cb29d rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c26231b rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x60ee8af8 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6ab4092a rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d2fc6f7 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x74220212 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x769c84fc rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8816737e rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8aaefc3d rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9358be8c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc073e517 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1aa3d85 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc2a3040e rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc4f16883 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc6980755 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcd706db4 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd11b6058 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd1272828 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xddca4efc rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfce30562 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x03764a9c rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x057c1f2e rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0e779cc3 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x19d694db rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x22ada011 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x41a95963 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc3442210 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd96b01cb rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdad78139 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe4190cc3 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf2b58adf rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf473ef76 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfa0378b0 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x026da03f si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x02ec6c86 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x03d9b4c3 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a321040 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0bb75e32 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17bd5cc5 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x183a32c0 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x187a1335 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x382cfe2d si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4775a0ee si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b585291 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x56caf420 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7abc7b00 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8066bea1 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x847269ad si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x87f8405b si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x88102fb9 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8bdab815 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8be1179c si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a0bbc8a si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa38c72ba si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa398ecad devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaca82494 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaf856881 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb35a8dcf si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb52a64ba si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8c90392 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9b8690a si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc78e3a6e si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbb162f0 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe83ec0c4 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xed907f7d si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7f34c61 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xffdbe726 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8d1b8a90 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa600abd4 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xb975c2fb sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcd526701 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcf6458da sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x1a73ba37 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x1b007898 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7d49e4dc am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x81c3317c am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x08f93d18 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x82f2c292 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9acc959b tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xe7c3d57b tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x29a81eb5 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x120e48df cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x5d5ab5e3 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xbb1674ed cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe51dc12d cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0b2d504a cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0dab9d0b cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x11971ba7 cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x1875b40a cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x19e7023d cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x1c69f504 cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3f158071 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4b3b27f0 cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4e25128f cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4fec95f1 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x55813dc3 cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x5b290400 cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x619e58b4 cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x65454a77 cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x67985a26 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6920d4ea cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6b30a646 cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6c527921 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7e2be06f cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8779785c cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x933952e0 cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x9ada62ff cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa2f48122 cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd23e48c9 cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd27f0dce cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xfd111ebe cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x03aeb8e9 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x10635655 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4e18b691 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x819c110b enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xabe712f0 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb6ec5251 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xcc82d79d enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xedb2729a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3121c1fb lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3b8f332b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x522cde75 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9acd0ebd lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc8aa7564 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcb439716 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcbb63568 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xed683335 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x07b5534e sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x219587eb sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x225d9583 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2aa65545 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2b7dc1ef sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x304a2112 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x48939b6c sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5b2ff089 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7a43b278 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8486db4e sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x89f4c039 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8cde4932 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf7fa5caf sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd26fcf9 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1b1504d9 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1b20153d sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2a715bbf sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x56ecc6b2 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5e7bce0a sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x80459d80 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xca1a954f sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xca80463a sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe820fc5f sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4374b6b0 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7c5d9358 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8143b6ce cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1d9b4a7c cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x63c901ac cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9030ce2a cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf20e672b cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x14f4cd35 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x595f3c55 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa2fbf9ab cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04d0df8c get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06404e11 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x108dbe5c __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x132d1a59 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a08a5b5 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a388b48 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1e71c32d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x22f3874d mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x231f69a3 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x396f3ee8 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ae9da24 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c347f44 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x502cb31f __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x523d8527 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x563f4544 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x650b61bb mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7514acab mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c03265b register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83562102 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x877b3302 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ddba2f5 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1ba37c0 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1e49c5c mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa5c726d5 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8ef4e4e mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1e0c3ee mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1e5cfb3 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb3854e5a mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb61bf898 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1eb28ab unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4b68a1d mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc5c18bcb mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc874e6f4 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd7861710 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9cb68a5 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdaf70ccd mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc0c3e85 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc86a480 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd7838c4 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe62174bb mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec7fcb07 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeea7e738 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x01eee888 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1bdc19d0 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8eaf95ca del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9424fb04 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xdc6e67af register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x4de62895 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xc3b9776d nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x22aa0fea sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x2365135c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x50fe608e onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x7b21654d spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0fb2737c ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x178810e1 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2f619289 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x39ce6f9e ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b7a5226 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x43accde2 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x660b33ca ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6fcfd9c6 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7bd25004 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8019dc99 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb773f7f2 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc38710a8 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe43e6340 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe749ca09 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x74e2adf1 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xada09082 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0a9ddf3a free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x650aab39 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7a07adef unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa8844091 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd5b2951c alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe2aca459 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x17759c5a alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x35870b5f can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x39c1d8cd register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x41b01b2a alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x462dda98 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6f8a69df devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x702746c7 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7cd1fe64 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9018ac6f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x944e3f8b can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9a84449c safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xae906aa5 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcae0e152 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd3090f0f alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd76c8ec3 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdfa6ac7a free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeafda9f9 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfacdd1c9 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x04f4e8a3 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0a4211c5 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x22e168ad register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xebc0f04c unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0d02b258 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb4b3a2a2 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc7882a19 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xed33f971 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x02f97cdb arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x26dfaa45 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0313b1ba mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05b54879 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x090b92ce mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b03f079 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c142b6b mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10505630 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16f57b07 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1869d9cf mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19e8f31d mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b0b8df2 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cddb20b mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ee5e2b9 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20cffa6b mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21ceab8e mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2218bef8 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2311b7fa mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2597969d mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b200330 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b5f7de8 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bbb8403 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ded9652 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2deeb766 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fb16e66 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fd3966b mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3acbe1ae mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c541807 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cb5c210 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ffc9f2b __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x440778df mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4614e3a1 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x491035ff mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x498e0941 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4dcf18e4 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df25c87 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ee9f349 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f6ca816 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x510f0140 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53a3a241 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x544a6ee7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57d60c5d __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x580926e7 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x583866f4 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60141b94 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x668f406d mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x670cf4b5 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x695223ef mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69a0f6df mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6afe1a5e mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bf5d1c8 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d7d699a mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72a216ce mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7466828c mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7643038f mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7884234a mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78dacdd8 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7940c6d7 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7988b03f mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ac87160 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ec58e7f mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fb40769 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x869092ca mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87e361ea __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x881a0b11 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89de94e8 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a9ef9c5 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8aea1c9d mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c275161 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f1cf58f mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91a7d0cb mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92b133aa mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93ddcfe7 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c45a63b mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c730cc6 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa02cf06b mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa15a3b92 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa424149a mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa487fabe mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5feaeef mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9ae81b0 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac20a2f7 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac604cc9 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacc40ed7 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb25b2b9d mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4c74f61 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4df16e1 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4f9361c mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6a57939 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb79edfe3 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb81d0a6a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeef8a64 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1204386 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3e93676 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc77efe50 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb07fca1 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb0bfd27 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdb46d7b mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfe43467 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3371726 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd61bd9b7 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6d4fe0d mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaec062a mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddc72eca mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddcc0361 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddef6e6a mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde25c26f mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0f04f40 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1e04820 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe468a3a2 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4d3fce3 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe509ed4c mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe52ad7a6 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe84cc848 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe99f6361 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea79e4ac mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb5ce90f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebaae309 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebfcc584 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee206047 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef832932 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef882d61 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeff3688d mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf66f1699 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfadf4613 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc90e290 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x041e9b00 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b5179f4 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12ee6620 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f3a3958 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25053454 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27eaa860 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d39b00c mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x379fef5e mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb1d69d mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x471c9949 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x483fb4a5 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49913bb5 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d91c157 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ae9a706 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ce37769 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65863100 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66164ccf mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x694080aa mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x746f048a mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7da79ecb mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8931378c mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bdef17f mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c221e6d mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e0081b9 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e0d426d mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f2e27d0 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c2708f3 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0421dcf mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1b7d3b9 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad30e39e mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad9a3d65 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaffce484 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5709ebf mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdb7bfe9 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc60757b6 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfafaea7 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd05db5d4 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdcdf948e mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0c0e648 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0d7d700 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe44153fb mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8e0afa5 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebd99815 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7d87628 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7ee0983 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x1380d260 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0a6a4340 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x44737e3d stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x8f6752ea stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc710c6e8 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x04aca455 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5a43cb13 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xce7c6367 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xdef26ebc stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x278f8258 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2bdaacb9 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3d231e9e cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4ce6761a cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x525b53b3 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5278c1d1 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5cecd6dd cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6969af2b cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8c764594 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xad87f496 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb06da7a8 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc4ba5f9c cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf49b8902 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfb944bad cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xff40cde0 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x966c6890 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0xf2985ea4 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7714bb2a macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8681d9c2 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xcde14b7e macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd37c5295 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xaa370af3 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0244221f bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x338fd937 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x56091531 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5ca2efb0 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x66f2698a bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6d89da09 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8735eb17 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x98216df5 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa43ee83c bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc524a181 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x299c1f85 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x10e8da42 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x261089f4 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xef7582d6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xff7d7b4e usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x16c07bb4 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x39bace9e cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x40112f5f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x69f37b0b cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7a12ca2c cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7b302c7e cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x879a6c08 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe26522ad cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe80b0471 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0e860f30 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x123843d7 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ffdda6f rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x62b2c423 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x93b9bb20 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf43bfbaa rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03992c05 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x12b646e9 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13445cc9 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1fbee297 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2857f54a usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x29e8278e usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2aabd05b usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2daa3073 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3442083f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x37eef9cd usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x47bd013d usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x561355f5 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5de140b0 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a8c5548 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6e16f60c usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6f2ff61a usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x790bad81 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d6b9599 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x985b57f9 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9bfabf80 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xacf35317 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xadc5555f usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb07e1628 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0bbbbce usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbca19ba1 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc6eeb129 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd274eb3 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4391df5 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdaa7e3ce usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed0c6156 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4eed6e9 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfa99bffa usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x27bbc185 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x93709f5f vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x01791162 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0522088e i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0e820a7f i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x11046c28 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2b2554d5 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3c2ba7d5 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x49bdb7e4 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5daa6f6a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x76446f84 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8fdb4810 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x97f85305 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0ab3fe1 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb23a6066 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc4ea13d9 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc6693930 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdfa738e8 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x659d4847 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6ebc1551 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x91aae233 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb6d1faa6 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x3e57ee3a libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x13dea3f4 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x28fb252b _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2e796669 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3c92bf39 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xdf7071e7 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002b2e74 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0625e05e __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a4629c5 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f48dcb7 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x14cc6203 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x18ba7ba6 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x25599525 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x255bb3e6 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x29058b4e iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2a638d28 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2c1fb146 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d9b67b8 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a863b2d iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x62b060b8 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x64a5ccb6 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x817bb1b7 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x825c3b0d iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa6b7cdf5 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa98da38a iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb3c56b9a iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb61ac80d iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdbc3b229 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdf2e6093 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d3442b iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe709b772 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe7b66d87 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5aea4a7 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf7436cfb iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf7b77cb6 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1bd597e9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2b64dffa lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2c93163b lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2cc42087 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x39c27a51 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x404df776 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x42ad6258 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x556e80fb lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ca2d341 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cc784fc lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8ee23b15 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x94578744 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x97e0fe17 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbe7389b2 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xce1ba019 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xea1f938b lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x08208cbc lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0c002ad4 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5a068fb2 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5b2c1479 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7bd8f878 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xac12a019 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb6473532 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdf8ef45d lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0db53c99 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10211f89 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2e861ec9 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48b3aa9d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x51ba6674 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5de35cae mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5e0e0f17 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x696dc16c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x81e11320 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x82d6c8a7 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8488a875 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa005adeb mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa970d932 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb99b9dcb mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbb3563fb mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcbf888bd mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd7934625 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xef2a2099 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf5101bb1 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x19cfafe5 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3497ce3b p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x73e9e5f7 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7bbf2158 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa0f1a1c4 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbfb585a5 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbfd755ec p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd75d0400 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe1dda75e p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x11c57a91 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4f4d3625 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5cc3cd7a dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf39bada7 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x08a7386c rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0a23e72f rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0e4ae531 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x24f8ba5e rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2ddd526d rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2e219279 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2e279026 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2e57c3bb rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x573e2089 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x672315b0 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x725dd14b rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7609eecb rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x803690d1 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x842102a5 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x91a072d6 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x923aa1e9 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x976c9442 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb176ae77 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb9b9e7aa rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc839a53f rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcb9808b1 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd2e07e81 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd56476e0 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd7cb5934 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd80615f4 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf8237e4e rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf88f8bce rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02375f14 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02b01bef rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x08625e74 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1dfb3641 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x212f54dc rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x213f70d2 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3fd28b3c read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x40d05265 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4c7c6054 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x64d22a53 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x771f0a1a rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8def4f80 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa23ba929 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xac81ba6b rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xace838c7 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb855050f rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xee84350d rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x05c051e8 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x12944c00 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x336cae26 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xeebcc0f6 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x007ce23d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x020db643 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e73974a rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1769677d rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20fc70ad rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2451e1c0 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x26559c49 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x350011fe rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x35758f72 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d671d69 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x51beab0d rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x52011358 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5294cbbc rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x577429fe rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a95ddb6 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x64cc5fe4 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66bdb28f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fa80158 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8122c4a2 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x83491257 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d95ea9f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9efe0e5b rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa13f2d04 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5dbe909 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa89dd845 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae41faaf rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb453517c rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4576ff3 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcdb7ddd6 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd935faf9 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9be4d5d rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe2ffdbbc rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xebe83246 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeeab5b9a rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf071d631 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf07931e8 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1f50997 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbef8c14 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x03c02f3e rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x06b771f1 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0eb11e5f rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x286324fd rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2c715713 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x35a2f0f7 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x38e02a27 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x50331bfd rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x59f39476 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6a030239 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x711cdd33 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa6bced1f rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xba5adf1b rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1211662d rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x19c51d4e rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b8ac74e rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1be0db97 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29b03d03 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x305e5e76 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a0b5686 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e4b2629 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49344f6b rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e837640 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x51fdcca6 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56900755 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e4da461 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67c080bc rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69c105cb rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c059aae rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75e37dd9 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a3fd6f9 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x806d3ce4 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x852d6664 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b7f4878 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9fcfe4d1 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa293c4ce rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6fc9180 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xacce2ded rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb16d3f88 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb318fed8 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb32d6830 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5407f9a rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb61f1095 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb62c9be2 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb709acca rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb764e163 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb3b4f08 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc740edcb rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc8e571b8 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc52eb1b rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc91e415 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd20c187d rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd91a9576 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe03db0e3 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe07a70f8 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe42fa6d5 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4e7e1f8 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf27d9027 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5609461 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x9b2d8eda rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd97f8b9c rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xdae0db6a rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf4770dff rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf963cfa1 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x03d46147 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb9f1d0ad rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbe056f9d rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc0a56978 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x06c9ae01 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3186c5dd rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39baa8ac rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3b0e038a rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4215f991 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x47b5f2ff rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4f8a69ef rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60102db6 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7ebd50fb rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7f69be94 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8b653a6c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa162068a rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb2b224bd rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb46afdd5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcc722a38 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfab475f1 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3fa42df1 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x73ac4090 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8aa110ef wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05bb0695 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d5fff8 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0c99f7b5 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29dce436 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2cd59c9a wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x35539e27 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a05bc7e wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ae5bae4 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d8d5ebc wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e41dd1a wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x420698df wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4909ccff wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ddb41e0 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6165d44b wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67b2b1d5 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6caa8634 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f0b4d59 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x707252ca wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x71fec2bf wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x754ce01a wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x778f56c1 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77b94635 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d419e09 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83aec36e wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85fcb50d wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8985000d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x92673c40 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9295daba wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9bd0db9a wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9f58ea59 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa22a203b wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa62a6173 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb237217c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc5069339 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce1b0011 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd40c905c wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7bbf59b wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb122637 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4ecfb3e wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf525c664 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfa186c3a wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfa73a70b wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd7655c1 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff62656a wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x1ccca460 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x508cbe8c nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xcfa00eb5 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd3942acf nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x13181356 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3f47971b st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4e7ab288 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5e17c6a8 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8b22b521 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x94772a5a st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcb3f6700 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcd8bc577 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x00183e1a ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x7270ca5a ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8823a793 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x060ade8c nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x542180e5 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x65b65d37 of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x699f9482 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x895aae27 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xa4c9f0f6 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe77308c1 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xf49aa3e7 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x0cf0fb3e rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x0d8fac63 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x96adaacb rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x5e75d7bc pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb21f9587 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd94e1bc3 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x003998ab ps3_write_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0bdf50c4 ps3_disable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0e622920 ps3_write_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x181e55ab ps3_read_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x1bcb88c1 ps3_write_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2abf1471 ps3_get_hw_thread_id +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2b339635 ps3_disable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x3c71a6b2 ps3_set_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x4a24996f ps3_lpm_copy_tb_to_user +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x50488f64 ps3_lpm_close +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x58e642c1 ps3_lpm_copy_tb +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x59c54782 ps3_set_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x5eca6711 ps3_get_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x60e3f0d7 ps3_read_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x6702a28c ps3_get_and_clear_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x69010c19 ps3_set_signal +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x70177200 ps3_write_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xa76ee01d ps3_read_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xaa190bc1 ps3_read_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xbb72a01c ps3_enable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xce72c9c0 ps3_lpm_open +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xdddfc980 ps3_set_pm_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xfae0ab68 ps3_enable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x03006fd1 ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x6e3232ab ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x82fec530 ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xa8ef68ae ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x346c2ec6 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4c041e17 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x69d26cce mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x785bb5ce mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf06f22d4 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x01f5010e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1d8b9a13 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8d38fde3 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa80ce5ff wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb24300f6 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb57ed526 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xa3221402 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x01bba40c cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x055011e7 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0da4f8e2 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f9a7267 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18f3780d cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29b1fd75 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38d68b2a cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f39e1c3 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f948db8 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5544c8ff cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a3da9bb cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5aa66f3b cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60d5f909 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64f6cbfb cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65c1f454 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66c6041f cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6769093c cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f1e7d8b cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x700fe00e cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x788f01cb cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7bbcf3f9 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7c9b525c cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7cdd8d6d cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7d3e91fb cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8447f71d cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85ba4f88 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8893fe90 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c53e8c3 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x953d65d4 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x96ddc60a cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d1e6af1 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2427fd3 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa376f49b cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa4cb9c9f cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0adc3ef cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb872832e cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc1f5343 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce08ff9f cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd31e7721 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4e50cd7 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7601ab3 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdbb27d7b cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe28c6bea cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6c07724 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd1e27ed cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd6df0f4 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x025cd9d0 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x12b8f605 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1df821ac fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x30f5a01b fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39c48e8f fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3a85fbb5 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x41426855 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x41e7a930 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x52d532c4 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6a57876a fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6b818db1 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa95a57ad fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xac1eb8ef fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xadcdd86e fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xed6b8e1b fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf513dc65 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x55fd28db iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82ed431e iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa4af127c iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc3253d14 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcc944e66 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe032ec4d iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x060a2675 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x080b364d iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0fc76850 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1924d618 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ba910af iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1fa86562 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22fba0ef iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2384140e iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c63d398 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3abab827 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x464d2218 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5898cefd iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e5df39e iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64af333b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a29caab iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a3b1061 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a5ed850 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72bcdd6d iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a77c077 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87cc5e45 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a670b62 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8ce16a14 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8fb43893 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab2ee224 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2e792e1 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc78a1860 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc94854a2 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce83e7b4 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdc9e2456 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde4ef69e iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xded5c36f iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe36f6acd iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe45a45fb iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8a251e1 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec6ab0af iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xefb22f8e __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf053ab3e iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf550a5cd iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf5ff5c05 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa954af0 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc2c0a6e iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfcfa5358 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x177992cc iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x247db15e iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3bdb0bf4 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3dfcb9e3 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4b3f88de iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x54116c4c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x684472c5 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x68e6b970 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7ee31844 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x83bbce53 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x981b441c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa24910a0 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3489cb3 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb9ce0cb1 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe6cd1016 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe92d90e0 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf955a69e iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0c0bf93e sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0c5a7af6 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1326f7ee sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x153bd62b sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x15cac8d6 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4285103f sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47e8d94c sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6bfc27c0 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7aaf6cec sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ac96399 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b10de19 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x862a05b5 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x87299d3c sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88c7f411 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9b02e5e7 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9e220ddb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa7a52916 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb94ff5ab sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xccba2588 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcfb8cf20 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd5214eb3 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd57f0e90 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2c59a14 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xecdcc524 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a7dea1e iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x145d983b iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1484530f iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x179806be iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f5ae45e iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2976f968 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x403e773e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48161315 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49b460b0 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d3e3453 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f1e1fb3 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53116d0b iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55ed93f9 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56107249 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x57b1dd30 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67dafd4a iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x731e2ac5 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77f82c00 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x821a0fe5 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x852d5f56 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c74d770 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e27a482 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93954708 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8aba71b iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xab43c5db iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb15edd78 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb211952c iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbc3a349 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc80ee25b iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xced6c48f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd23ead49 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd39ad63d iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd61944d7 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2188b7a iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6c8a54e iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe748230b iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf3cc61b2 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf69b8e14 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe34cc38 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xffcf9956 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2e3f99a2 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6953d1b0 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb481132e sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe07e6bcd sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa377f036 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x123d5e32 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x1a51182d ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x221a17d6 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5f6bf7a4 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5fe73e46 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xcfb2279e ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xdfe0687b ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x1d9d3e70 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x5b7b5d5e ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x97206896 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x97539f43 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xc7c01651 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xdb9325e0 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe389f8d8 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x126a2fbf spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x695f6dd5 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbdd15f61 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcbe9fd22 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd1d100d4 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x25a6f75f dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x64bd0c36 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9abb56c8 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xab010a2a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0a60245e spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0b8a6f59 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x24de9ed8 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x30437dc5 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x48f0feeb spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4dbfe530 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5886c20e spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6101c2ff spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6bd5b462 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x893d954e spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa938f745 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa9c30a95 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc150b2b7 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc3bd843a spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcdfc0cd8 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe5d3a2ff spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf6f7666b spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfaad9504 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x4d43716e ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03789df5 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x10370751 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1dc90b22 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f91a9b3 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26021fa2 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28ed95da comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2bb2c04f comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c6c24a1 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e980bab comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4947b66c comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51830aa7 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58333dde comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x590f2f50 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5c66f25e comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x683e94bb comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6bf0cfe1 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x891327c4 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c083895 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e07b648 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f10db07 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0dcc1bc comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa270cbfc comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa630c461 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabea265c comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbcd12a87 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc67d8249 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd5942376 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6237212 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdcc30995 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe09a56ba comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe7108625 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe88efed9 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb127c6a comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb2f3f4c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec3e90e9 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x12f110c5 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3f345a0c comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x480d1f03 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x59447af0 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x6f330797 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x79ec42c2 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa1c47d5b comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb081818c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2c004c1b comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x306a371f comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x45331aae comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xa15b7646 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd43a95f8 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe28bd8e2 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe7eccc48 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2069e229 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x75b6aad7 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa058f95b comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa2338a32 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd6714ba4 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf81a5d47 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x983b23cf addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x04fcf47a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xa8f560fe amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x732c86f9 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x06b53349 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0d11ed88 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2993b063 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5fb1e8bc comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6b5bf978 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8629b911 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb0468ae2 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc70d42b7 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdadb495c comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe26514d2 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe862a342 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf9c4ab47 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfbe783e2 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0eeae48c subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x1a9eea4b subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6bf7b926 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x3b50c49a comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xa353bea5 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b80e8c3 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1e1e8127 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x21afb55d mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4bc52690 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6008625c mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x73adaaeb mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7a8e3860 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7ed68db1 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8130c4a3 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8a920272 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8d835601 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x96d5f71a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc5f137a0 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe089d7a6 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2b717a0 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf112df17 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf6a2e4f2 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf6f05f81 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7f4d4ea mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfa913ab4 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfdcac2f7 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x06fb8ec2 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe0bf3d6f labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x06413dd0 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x12747a73 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x2888348a labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x34afacbb labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x5c70a336 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x302421a7 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x357bb74b ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3f4b06f4 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5892b64b ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x94005215 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbd7758a5 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdf26174d ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf1cc8362 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4837cbbf ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4b9e4f1e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x682e85cd ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa4f9e1b5 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xac492235 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdbf36158 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x07037636 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x105152fa comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x27dcf44e comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8b35194e comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa4a2c511 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc6953ed3 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf40b0c94 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x475c89ff adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x0b03f945 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x18136abc channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x19c7f501 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x2188f75a most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x50ddb238 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x52cc29fe most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x567d9764 most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x64563264 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x89b021c6 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xcc9cb311 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd20e5ceb most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xfd2cebcf most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x046c9541 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e4d4675 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab1562b spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x55cef63c spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x855e0b46 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x88e1824e spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9df472e4 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaf0b90ce spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd0685946 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf2dbc02d spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x9dcd9516 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc41762f2 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd814b667 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x3d3677a9 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x94c61827 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x589c1c10 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x694ee9c2 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x10cb0304 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7c76b222 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x8a66bbfa imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1f6b1ca6 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x31b03207 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x7335014a ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9d40bb24 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb9bc19cf ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xdc6b96cb ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x073a63da gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x13d35fc7 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x189862d1 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x23e081e1 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x42df3d73 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x44e74469 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4a18bd8d gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9db9cb12 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcce9eb5f gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd3a85465 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdb12b5a6 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdb1d868f gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xec33fc03 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf169006d gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf71c3146 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x17216a89 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x8e8792f6 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x0afec646 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x7968318d ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xe1a10ec5 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0d69ca96 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0dc34e52 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1118857d fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x12467652 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2866c22f fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x35a12fb3 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x54b04696 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x586f6fec fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6dea84e3 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x765e377a fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x84f9d480 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8a607721 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8b38884c fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9909dca3 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9ec73655 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0d7541f0 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x14492e9c rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x17683dfd rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1f78f22b rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x290d989c rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x46e179b2 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x72cee5a6 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x765d4a18 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x76e057e0 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9c964f8e rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa0b04fef rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd90a10a8 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf57022a3 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf58812b9 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf68161df rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1458f4d1 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a36ff95 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x263238b2 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x402dd53f usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x433e64ca usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x435c1a6a usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4611a57b usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x48a1e3ad usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4ca79a85 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51efb505 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5505d941 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a2d70b3 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6822907a usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x71c8d00b usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8117d6ee usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x875e1f4a unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f12133f usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x92208e68 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9399a29d usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98339b77 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x99d1a4df usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9b6f9dc7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb8a2b475 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbdbf4096 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc159420b usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc4bd0c37 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc8b1934b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xceceef8c usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd6681c63 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf459259b usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x049ce668 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x08c79cf8 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x226aaf8e usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4fc947cc usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x60718480 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8d413c3d usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa67b856c usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd82779f0 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdcc7db2a gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf9087c0a usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfb638465 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfe085388 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xff85c7cf usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x770e5743 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xf2ea859e ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x058acdc6 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x438c7ced usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8bc38561 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9c1aed8a usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa96321f8 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc02b46ff usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc12e9a71 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd511e855 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe5ac7ecf usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x7b31395b musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x74ab387d isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x6b511760 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0006ebb9 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x124ff533 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x134d2d8e usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x186f0ee8 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x258029c3 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3c5db90b usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3dc987a2 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5275da81 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x66bf75f6 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fe39628 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fe62308 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8a4c9406 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91cdd9d3 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9789045f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa0668e2a usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1b3957a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0789cc7 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb862a417 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcbac0153 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd234f556 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfd31ca24 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0199ffb0 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x04863dcd usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0af28c54 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1ad0e57c usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x267fb4f8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x27ed277a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x29d58288 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2effce4e usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x33f3c63e usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35932074 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x381ccb3e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3b52b266 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4afb2244 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x53bb04d9 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x66447b53 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6f571c9a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x83f18797 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8e5771a9 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x93d01072 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x94dbbe45 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x94fb17a9 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc476736 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6e64edf usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfbbaf54d usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1327516d usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x394f947d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4a78ef30 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4f6995ff usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x72882288 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x76e74d87 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7ecb0357 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa0719b43 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbb9fd39f usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbf91a233 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe658aa9e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe97d2d8e usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2a18a80d __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x46c5636a rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5eff85a9 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8749df72 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb9e3ec75 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf08a82a8 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf7b19bcf wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x06b23bb7 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x348f35ed wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3ebdddb0 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x47621521 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4cacc1d6 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x639f9ba3 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7eb92a3e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x83b04ebf wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa7ac9680 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb62aa674 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb69e55d7 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc637d2a2 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd05b3c7a wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd2cff06f wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x574a5e64 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x691ed3c2 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbefe5601 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2a6fbe6f umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4670a32e umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x638a5ba6 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x703d713c __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x84dd2f74 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9ce5e18d umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa94e25dd umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xcf0c7750 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0608a36f uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x065c8217 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07301657 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0e3db3ee uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x148bba2e uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b662c81 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1f67f688 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1fec8436 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x22c5f89b uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x298fc8e8 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b8f13da uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2c618a37 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33904efa uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x458997b6 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x54300e0b uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x546e9ef7 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6376ce17 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x671e611b uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6aa7fe3f uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ad54b83 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6cb1c5db uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7961a87b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x80f3499f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x832d1355 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87ee0fef uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e79fcf4 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8fee54e6 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f8dbf0d __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa31ad94e uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xadce39cd uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb7c104fb uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3f27b95 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc754d9c2 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd312e497 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xda60a00b uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc2528d5 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xff538ae1 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xd990dabe whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x55d26961 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5a8ccf50 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x90580243 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xad641497 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xda88674b vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe7eebafd vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0x63759d9b vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xac0624b4 vfio_spapr_iommu_eeh_ioctl +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xb38bffc4 vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x49a48f46 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xc4546d2b vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x01cc3a23 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x08cf04ed vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0cc0c6d7 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1305ad5c vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x14bd07ef vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1b132d0d vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e49e4b0 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3782f12d vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x47467e4a vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58176e02 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x593b3a19 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6a65f993 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6b354917 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x70792227 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7ef06510 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x83551b40 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x958d7e9f vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa2ed9997 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa9574120 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xae891bfa vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1d07820 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb6af08d4 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc1a47d48 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc93b6499 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcdf84667 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xde3626c7 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe64457f2 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf0227cca vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfc1dc7de vhost_signal +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3b518cb5 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8b5c0aaa ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa37b3ae7 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xaafc042b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xafed0329 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb1651596 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf576b81f ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x25cb4a52 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x583f009a auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6369f3e5 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6529ca25 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x715cee9a auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa903ca25 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbb3c3b58 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc43ecf8e auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd4f7db99 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd7c2b5cd auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xb5cb1bd0 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x7d71bc19 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x99ae3d11 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x05027244 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0d690404 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x26170297 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x270def37 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3175d971 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x37dd4998 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56bc7b12 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63b9351a w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa6974a55 w1_write_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x57ef2a3d dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7c467a6e dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8de321cf dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2c3fd637 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3e8f5405 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6632ca54 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x73a39ce0 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7c492ec9 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xac2a7480 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd30482ff lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0335d161 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09e6c4d5 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ba44fd0 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c897b83 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fab060f nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fdb78b3 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11870725 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15a4f681 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18193914 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18b594f3 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x197292c1 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ba757fd nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c8ca1b1 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e61a6e0 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1edf4bb6 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2200a11e nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22ebc4c0 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23360b8e nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2391abf3 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x245f155e nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x246b2fb0 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2712266e nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28d79cac nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2deebd0e nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f25218f nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30690e8f nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3148e917 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x338c4289 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33ab09d9 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35e577a8 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3617eaad nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b39cb8f nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4078f97f nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40b366fa nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42e1c67f nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x445b86f3 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44ec7598 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4613d5cc nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e29ed94 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f62ea5b nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50d6e968 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5121aec9 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x565125a3 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5794ef29 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d3a140a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d9b4be9 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dbf474b nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e6b28e2 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ee9a300 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60dc572c nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6363906b nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x646765b8 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x677112b3 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68d8d9d1 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c063697 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6e97f8 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7711c23b nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79e0b22e nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c5cf546 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81b8c7dc nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8550573c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8704aeab nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88dc4cd8 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8acfdac6 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fc5e51d nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fe49598 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x915b500f nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9497cb5c nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96500460 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96907b0e nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97d1644c nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dc4efe0 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9de78054 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e4c76ad nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa25f402a nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa358cdbd nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa420f8b4 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4fd68c7 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5208e50 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6da820c nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab5ef2e6 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacf30c1c nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4583b0d nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5764ac6 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb76f9d47 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7a8d10f nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9442124 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb94fdbc nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc725ab2 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd28cbf4 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbde2c51f nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbef4e99b nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfd660c6 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0f96bd0 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc11d3056 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1907590 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1ddfce6 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc20e7050 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc330e08f nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc385b11f nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4f7da00 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5bd3940 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc648a792 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc66b2e94 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcaa0bd6a nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbded495 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdd1013e nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd12879ef nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1890012 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd31f33b0 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd791eaa2 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbc83263 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2b979a0 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe371ae99 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6760dd2 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedd683c7 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef415843 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1e36e3d nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf78f6790 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9ab6a75 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaf0bd21 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd59646f nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff407ca9 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x5d077c48 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03c3e285 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x052edd9b pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x095730cf pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bf3276b nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c82512a pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d7b4fdc nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16273adf nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16535f52 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x195c4b41 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1dd5ef17 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e6824d3 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2042d33f nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2356410d pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x250defd9 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f2c55af pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31beb36a nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d7fdf9a nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4642ebdc _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x479bf14b nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4acd1b23 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b206357 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ef083a5 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f01df62 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51e20e09 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x59a9e231 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61dcd4ca nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x656bd763 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65addb27 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x720ea24d nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b05a537 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e47439a pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83b0a204 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x88a690b8 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e5dadfb pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94c380f1 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x959edccf pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a72b604 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa2b0e0a8 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa959987a pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac3901fb pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbce5073a nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc29f5dad pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2e7712a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbe96ba3 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2f3fa56 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4155208 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8035333 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdfe0bf81 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6f62106 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xea1942a9 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed5cd032 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf04b3930 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2f5ecb0 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf53327b3 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf64912d8 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb94af2e pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfedd0555 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff2ed8d4 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x4dd11840 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x57a09449 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x7c7382cf opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x31dc8de3 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5f50f624 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x020af4d6 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x24b4f5dd o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4a3dcd7f o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x573a5153 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa854a50c o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd90503c2 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe4c4a35c o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5223d74d dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9637385f dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9ae4617e dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xabf4452a dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc7546c4d dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdf1174f8 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2ff5e4a8 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x63fc6e0f ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe5dc0c22 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x36cdebb8 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x55693358 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf387d943 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x805d030a notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xb7c8fadb notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x5811f4b6 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xb1961d30 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x250b6748 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x3bfb334f garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x40842e48 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x4cf5eb7c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x6dd20523 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x9e65a1a1 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x0a805cf9 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x2a0257bb mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x43e6f64c mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x5e7c232a mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xc255e13f mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xfaa378d1 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x299373b1 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x60abe19e stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0xad58b7fe p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xe50b1ccf p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x5f2c0ff1 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x154617d2 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x43b62cef bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x544dc7a1 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x78c41148 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb8760ee2 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdad13811 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe6e606d2 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf803f0f9 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0214d508 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x31be97de nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x34878e21 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4cbefbdb br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x55e6da10 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x67ecca7a br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa61d8d68 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc588fe4e br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x3ecda5d3 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x6bbb133f nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x036b3f97 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x05264f39 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0627bbc4 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0da4a135 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x198be61a dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2041b7d3 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3655eb55 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3fa8725b dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x471c6de3 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47b22d75 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e4c249c dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4fe85b74 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5063742c dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5c0a3189 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5db219c1 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e99c41d dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6085267b dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72c28ddf dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88d37ab1 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b4758ca dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb47be1dc dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4882ef1 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba655b2a dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0785866 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcc91027b dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce9659ce dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd66355b4 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd8c46ca1 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe471e5e6 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe953bc3c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf342152e dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfbd1981f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xffea3569 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x030807f9 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x11ae0ac6 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4d01c08a dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x642ae856 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb1a03757 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xea538d82 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1fd91990 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xb00e32a2 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xe4498a36 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xf84998b5 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1561b02d gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x45e80fdf gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x04d5ef43 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1e72b008 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2d59a923 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x87f1da4a inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb1f6629d inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe53d7415 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x957da519 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2820558e ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x387cc272 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x38dc0174 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3ad14588 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x49040f99 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x60af859d ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x73222ec6 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8395403d ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8c85fc44 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9294ddb8 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa218d313 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa3bab2f9 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca03bf3a ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf195dee4 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x7dbf1738 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xafd5efbe ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x3abc5bab nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0462bb2e nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x12b351a1 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x9289bae7 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb07cfe46 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe3b95757 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd1e0a89e nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x28a97f44 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3b01177f nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5b01e221 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xca30dc01 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xde2817f8 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x044d3498 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x014de882 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x388911b3 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8f60e556 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa34784d1 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd8508804 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4abe2cab udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x70e4fab8 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xe2f5bccd udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xfd9d5882 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0b7c99a9 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x27cef97d ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x36735894 ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7b7a5437 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd2ed6433 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe5d5b317 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe795ba9a ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x0679abc6 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x4f496265 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2110a5b8 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x61679d96 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xe180870f nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x3447b33e nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3c7e994a nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4ee3ee3e nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x58449134 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xebaa088c nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xfb9e0694 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xc6316667 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7814c570 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7ab7cdd3 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9bfc730b nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc8bce561 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf8021965 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x752e7010 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x01ce5815 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x01fb7c7d l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1f31d90a l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x36f23753 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x37fe8f19 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x401e7380 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x41c68f0f l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x752948e2 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x823718fd l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x825c5937 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9dd76f73 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa222faa8 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbb8aef52 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdc4e1500 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7a266a7 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfc7702ab l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x4729171a l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0f008c20 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x178fe102 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x28d17a01 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2ef9503d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x37016f5a ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6b5c4e22 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6ed3b7c3 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x910e7db8 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9447f81d ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa123408f ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb0c70788 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb4ce8399 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcd291a23 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xec7c636d ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf3dea823 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xc57c3e32 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xdef6980d mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe9b39c08 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf0be87df mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x14d8ec22 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2ed1dd2c ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3e49585b ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x41dbc4cc ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x44ff5913 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4a144a96 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x736b8955 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9f8383cf ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xaac1abb2 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xae095e57 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbba8c065 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd785a4e3 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdad20e91 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeea85e9d ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf401c0a9 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf58f1960 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x623c068d unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x859dc215 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb5583184 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd6379ba3 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x134b2b80 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x194a156b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f11af2e nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fcab99f nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x206918cf nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23fef374 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x256df7ce nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2682544f nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b7dbc0e nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c139d64 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c7cc2b5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d6af7bd nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4488ea4a nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4666ddcd nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4af8ba0a nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b687083 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bd988bf nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4db33871 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51463e3e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x599d8f6d nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b2f740b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5db3f314 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ec3fd5d nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f4799e8 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6381e0de __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a23c85a nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ac90afc nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ba97379 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6dff334e nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f859196 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f9a0215 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71139a2f nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x786268c1 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78c3ef1b nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ad76308 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7be5b34f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x820f89e6 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88bdc82e nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d1d06a5 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x947b371e nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x960d3b1a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97c54dac nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98c69736 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x997eb14b nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f11d314 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1b47318 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5d6db2d nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa915c9f6 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb039eb64 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb12d5089 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5cfa34a nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb81dea01 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb88b380e nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb48d069 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd112b5e nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2337791 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc363ee8f nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc42377a9 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4b2c3af nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6be60d5 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbcb13b9 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd41991e8 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4e6c58c nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7c06c0c nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd96900c2 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf3081b1 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf89e232 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe016ee77 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1681ad3 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe507df7a nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe51acfe7 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7780295 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe98e57c9 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebbc2780 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xede5aef4 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf12efe55 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5772287 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfeccd519 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x493b3371 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x4d06159b nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x7f21c9e5 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x06d01c9b nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0985b7f3 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x10ea6390 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x34bdf2c8 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x474d1ff5 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6e268e63 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7455cc02 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8630da8a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xac50328d set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe75932d9 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xe963d1da nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x13eff753 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x607fe2ca nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x82f3c802 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa39f7b80 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xc0628521 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd8ae341f nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0a143786 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1f3f4c91 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2dc09d72 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6fd161ed ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x95b31bb5 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdc7a97fb ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf5f2ba08 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x454b1afc nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x1ac4b7ce nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x1abea1aa nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x70416479 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xc6157f03 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf986f1ed nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x060b622b nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x079e6a03 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2bc5597a nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3872d191 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x50d6673b nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7e9791b0 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9f7481c8 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc3017f30 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe720abff nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x68b7a45a nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xad0fd944 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb7317bb7 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xfc456a6c synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x10c21bd4 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1adc5816 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x220c124d nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2bbc39ad nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x34f0bfbd nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3901716b nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5d1083a1 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8f2ab1d6 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x93f690c3 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x964b8a45 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa0718fd4 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbeeac7cd nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc6968c76 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd1118d06 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe3837e39 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf0ff9096 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf9d5ca04 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x41938f0b nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x511cb172 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x520186d7 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6698e150 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x880cd007 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8f15243a nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xeec39c79 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x2366ced9 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xea0bdf19 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xf7f850b6 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x168c8c8d nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8034eda1 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x85f13361 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8d04c0be nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x04b437b6 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x116857c1 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4d1b6b36 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc4c1cbbd nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xca627111 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf88b8620 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x29f3ef27 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb8881b52 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xe173db1f nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x72317f9c nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x75fe66ec nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1884cc8b xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x22f9e739 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x323c449c xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x39f4d9a4 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3bb5c804 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x49038d86 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4b42b0be xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x56d06fac xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x705bc60d xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7950b407 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9152f1cc xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x94a7471c xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x971b7b68 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa586ffc9 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaa693926 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xccaa056b xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xce102055 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf76fd292 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfecdacfe xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x2f05e7e9 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x496fcdf9 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x66c5adef nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1b384a2e nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xbdab4a5e nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xc639475d nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x164f865a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x16b657e2 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x19cb705b ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x34843f35 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4cd22536 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7b3167f2 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa325adab ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xec7b07d2 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xff7f1cf4 ovs_vport_receive +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0a2f7504 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x0eb0985b rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x14da3f1d rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x1585df87 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x17dc95b7 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x19003b24 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x379c3d8d rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x569ef332 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x65c09d0d rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x68fdd42f rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x69f868f0 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x6a043c91 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6bbbe44c rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x732ccf74 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7c320f90 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x7c9f3a4b rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x8184eb18 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xa42994a1 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa8d96a7a rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc86f9f4f rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xdc958f8e rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe405fe64 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xede26de9 rds_send_get_message +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x347451ca rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe196d6b4 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x23f615a8 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3f7a9382 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8dd9cbb1 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x000f4acf rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02153d32 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04ca47f0 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05fa6ca5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08c12cb9 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x093dacda svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x098b0632 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a4676f0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a8e2739 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ab02695 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b839bdb rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d4a4346 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e7c8822 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12caf363 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12ffba21 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1438f73c rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15744187 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1786218f rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a7dac61 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b910e5e svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d9c0577 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22ece51a cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23b3c94d gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23c9e00b rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23db6045 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24d3b491 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25bdbbdd rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x265886c6 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27140276 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27636308 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28543bae rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29df0f1e sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ba04dad svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c3329e1 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cb9a671 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dfb32a8 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32cf7910 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34991899 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35dd86a0 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35faed61 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x369389b7 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36c1941c rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36c44850 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x396ceb72 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bd152df svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bff50a5 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d6a17af rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e03a578 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e620149 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4070b805 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43938bc4 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x439cf036 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x459a03b1 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4909e829 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a668169 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b4d6e97 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e10b052 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e2518a9 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51691940 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5282fef0 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x538cfc53 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5557fcc7 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5776ce1d xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59a33435 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e8be6ca rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f4bd7cd rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6007b1e3 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61f583fa rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x622beaa5 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x633f44c8 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6463f4af rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65d8ee86 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x686a829d cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x687f2adf rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6897a211 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68b65f79 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69088c8e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b7cf742 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b8294a1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d2bcd32 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71166e38 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71db5ca1 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73c9cbfd xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x750c449b xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x770469ab xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x789629d0 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a2cca6b rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b2a65f3 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ed0908d rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fc9d894 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8054e2f1 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81770ee5 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x829cd2dd read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82a390e1 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83577e65 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84f43e04 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x872b4caf rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87aa26f8 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bea4063 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cfd3746 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dbe3605 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x906bd6f3 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90ec071a rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93090d0d sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932bce83 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9512a6a4 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95bb2bc8 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96428dd3 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97c5792a svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b895cf svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x995fd6a2 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a457881 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ac43748 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df3df77 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9eeb9011 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9feeedc8 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0c00547 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1131603 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2603ea5 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa35e1487 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3b93774 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa505d859 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73b4dcc rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa89cf137 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa227744 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab3f2222 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaeee5ab0 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf7ead1b cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb053edd0 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0757832 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c9d556 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1aff55f xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3747697 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb61f4127 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb92b1824 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb98926fa cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba12476a rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbea28e76 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf3a8be6 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8a212c svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc25f641d svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2f84b83 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc56241d4 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc74647c6 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8663fd2 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9535af4 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbc7cf00 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdcc725c xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcde8c392 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce2c3397 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce9e3502 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf0e25aa rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14f6b62 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd16fabac rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2bd9359 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd55e7582 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd58321da xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd61a83f2 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6dfd9ec sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd70dd70f sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd73d4c43 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7cb1930 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8bbba36 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd99ec962 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda0198c1 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf377897 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0ab07de xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4768b8d rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe610cb62 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe82b56fb svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec952658 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed3852f6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedb1d448 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c7a65 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefbce6a8 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf044b86b svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0d23b3d svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1c591d8 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2072a95 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf28fedb1 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf32cefda xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf349f2c9 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf514c7b0 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7023ad6 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaf01fd8 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb09e623 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb4f4c05 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc25be38 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc775c51 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcea8c30 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd580070 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff5b12c0 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff5f8ac8 rpc_release_client +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b2d81d5 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2061f0fc vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x28e2fb2b vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x345396bc vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4da77d26 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x562fb62e __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6358c181 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6fb5766e vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9c18d62d vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa7e0a9c8 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbf3caa01 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcce428c7 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xda6ca50d vsock_insert_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x367d3726 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3d9d5276 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x42063086 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4f19fc92 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x58c0ba53 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x76858331 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x90285718 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa8d6d199 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb14af2a1 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb22715a1 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd06432b5 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd19dc4ef wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe920c057 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2662846c cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x36164d10 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x75ae4830 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8caacb23 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9459e365 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x94f2bf21 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x968b6f74 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa03195a4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc68294c5 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc6936ecf cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf25005b cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd46dbc97 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf7f1d2ed cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x176b0207 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x578977e7 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x68507333 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x74900456 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/ac97_bus 0xd8fbbcba snd_ac97_reset +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x018c8ce3 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x0fbdc135 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x44ab68fa pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xafd9595f aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xb4439b2a aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xb530881d aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc306c9dd aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd170386b aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd7763654 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xea178f25 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x5a8eca9a soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x6ae0af3a soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x997fb5f8 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9d51e647 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xb97e11a0 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xe4c46408 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x0f090056 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xa8e09d02 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x6bd052f0 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x7a8026e4 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x850a7314 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xa20fd294 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xa4b8390b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xd21f8d0d snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xdf8234de snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x072ff9f6 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1302d2fd snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1feb53c2 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82be1073 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d628e73 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x928f2b23 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa7b5e61d snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaedb1e8c snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf10d372e snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x068091f9 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0c9f5370 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1e23f3ee snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x21683367 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x73bd3d2e snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7536710f snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7d25e530 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x81d95fea snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x87847b26 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8cce52b6 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe660ef7e snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1d3611b9 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x39ebd2bb amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3e4b66c4 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x44ddba53 amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb70766d2 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xdf768f63 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf975a2d7 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02fd03ce snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x07bbf30c snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x09c4898a snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x130886bd snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14109f57 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1563f384 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x16b94ecc snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19d63b45 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f926b94 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2134d1ec snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x21e9af3f snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x24e39e79 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2625666f snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x263902d8 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30daaeed snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x347581b5 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x390ed8b6 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b7a7dfb snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b82a567 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x517a5484 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53690924 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x58f2c0a3 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65d0ec09 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x665f217b snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e08771f snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6eccac52 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6efd2a9b snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f216c56 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f682c26 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x760a0bbc snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x770ec7e2 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ba153d5 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8424add4 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84b82feb snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x852a3936 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x852bb9b9 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91a16b69 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x924455f5 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94b7ffd0 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a2ec841 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa037f8f3 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa28fe291 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9b9c3b3 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabd34e7c snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1ee8956 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb781a0fe snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb9c2eb45 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc14efa27 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5a257d9 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5e38c0e snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc661a49c snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc797ecda snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8a36c82 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc200273 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd49af652 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6135aed snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6989ca7 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebdd33b5 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeca3ff58 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xecf5f416 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf0097789 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf16ce455 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2d24410 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3dc51b3 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf657b679 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf77856c5 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf7c59987 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbb61669 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd30cee2 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd5ef401 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfdb4f980 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0d3dd33a snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4d78c9b8 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8abb57f3 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x971f951c snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa9702127 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xff1f2550 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0513fd3c snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07f0935e snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x092f30de snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b9eae59 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c0c03f0 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cb7eed0 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ccf3d3a snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d8c07f5 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x102e162a azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13a2e913 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16e702fa snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19dbfe5f snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a9ef0e1 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1af98fa4 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b616ef5 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1da7c67a __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ec0ac31 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21dc388c snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2229869b snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23eef9a2 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2825fe9a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c89212c snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cb7e4d8 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2dfa33a9 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37630958 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37849c72 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37a01e2e snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38bb635a snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a6b330d snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cf2bff1 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x428bf285 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47b40b68 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49ff36a6 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a50a560 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b1f5dc5 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ceff224 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d494e62 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f9e6183 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fc316bc snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59658848 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a2a4d6f snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a721238 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b92fdc8 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bb966b9 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ed5c9e5 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f3a120b snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f6584b8 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fc7e449 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6314e1e4 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x632a86de snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66f43fbf snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ae4dcf9 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6aea4532 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b6a2519 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70bbba50 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7319fe24 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74d5d550 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x785cbdfb azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cd670bf azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86e6f14e snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8798ef00 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8915ff5b azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x893140cf snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89ed520b azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d35d30f azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e361a69 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x935cc756 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x955d76c1 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x988b8462 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98cf7ee4 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b033bb1 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b2bfa15 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b89a2da snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c8137e0 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d3c056f snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e17ecf7 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e5e0dc4 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0aa24da snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3028fe8 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3b8ef7c snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa62955bf snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6417d0a is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae2fa362 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb09dfc5a snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb19678d4 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb43804e3 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb46d6467 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb673284e snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc76592e snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcd5829e snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0db4d4d snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1a5a224 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc47e064a snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5a2004a azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5d4b899 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb2ff4dd snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbc3c0de snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2639d5d snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd440ff59 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd45d0c3e snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd543f643 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5e147d2 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6875526 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6d1ffec snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7b21963 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9d686af snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd25ccad snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe067d24c snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1486334 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe64f3992 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7e99108 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebe27bed snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec64ce11 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee57a6ef snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf009eb95 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1f9142b snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf47d42ec snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf792d9ac hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa62827b snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc0100f1 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdff44f8 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe83093e azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfed75a35 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff1dfc70 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x009232c2 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x06f00706 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x139e3647 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x22851a3e snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2d7c1291 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x34533869 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x37f300d9 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3be2a8fb snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4a4d9b60 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x79bb16a4 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9ae3f50b snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa29fe982 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa4228c1c snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa5527e10 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbc38fd34 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbfb551a1 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xce653fc1 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdf9f10aa snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe9812328 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xec6a781b snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfacd037c snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x0f377995 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7b75ab18 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x2e7f5149 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x46172b34 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2e04cc4f cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2f0b80a0 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xe1140a93 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x0c717789 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xab06ea0a es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x3aea4d95 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xacfa087e pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbca9771d pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd37e7dac pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1071dd15 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1b104859 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x211f9c77 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x88223ed9 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xddc46db1 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x6f3122b3 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x473bde89 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8819be28 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb16aea4c tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xfcedc757 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xebbd86b8 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x73d129b8 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7f90a8bb wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xa90cf8cd wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb089ab22 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x660c8936 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xba288ee5 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x8beebdb4 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc1b4f995 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x006ff078 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01fb4731 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x071ace2e snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08c0101f snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1040afbd snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x118dfce4 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x137b2481 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14ce66e9 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18e32687 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x190ae64c snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bcc5342 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ccde55a snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e640e9a snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21e58412 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x239eef59 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29260261 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29ac61b0 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d52259a snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f47ad2c snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3000631c dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31f591e1 snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3434dccd snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x350d3665 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x359e8dce snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35a3c8b6 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x381138f3 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a535fed snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c05571a snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d199871 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40f06c59 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x415f807a snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41720b60 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41fcf380 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x430ef0c0 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x449406ba snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44be0570 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44ee29b4 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x455b1a6d snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x477df620 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cff62f0 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d8b0a02 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e6b7576 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ebe6efb snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f21592b snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51711d7b snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54ee9fcd snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55e8f0d4 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56cd6b8f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5934cf83 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a1286b9 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b1ce49b snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c516fc2 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c6a6cec snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5fee5699 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x600042fe snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61cc2080 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61e62e79 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66b4bc2e snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67668c5c snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x698264ca snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b01fc50 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71242ed6 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72500ba7 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72bb978a snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72d90b59 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x750f71a9 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76e90903 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77080b16 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7aa997e8 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d8ccf5b snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f5045e6 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fde8593 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81b868be snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81d7e496 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8685202f snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8861c88a snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a3c012a snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c97d229 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c9d3b5a snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ceb852c snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f41bb6b snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9823657b snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98b89d7f dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ab54add snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b0b26e8 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d9757a9 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ec08796 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f322b29 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1e937ef snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa394c894 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7c5551e snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa6dc003 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad831fa2 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadbb08e7 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae196a56 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf2717f3 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0237d31 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3ac1ee0 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3e5bf59 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb57f4fe8 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb60d7198 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb61294ab snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb69b7d1b snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc31aca7 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd0e9722 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbfd35479 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc035db5c snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc148c49a snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1a5c023 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc24babdb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3e4c827 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5fc2dd7 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc835809c snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcaccafa0 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdcb817b snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce37782b snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfacfca2 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb93b190 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc9244b4 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd4c5108 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0adf327 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0cad76e snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe26f4022 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3b60d2c snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe515b726 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5a1d6da snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5eefdf7 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7c5c90d snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe968c818 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea0175d1 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb1aec96 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec4cd006 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec88c14d snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed0c383c snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedd454a4 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee4cfe2d snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0459bbe snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0d489ce snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1da1586 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6f27c02 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7ac8eeb snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9f20e49 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa6ee62c snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfac2cb38 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb23aa25 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd4a7a2e snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd906cb6 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd918a73 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2389a8e4 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x27eea0ff line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4c4f70f4 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x55e43c44 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5c5def0a line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6342884f line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x919a58b3 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa5ea0108 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xab6b4c71 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xabe441b8 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd6f746da line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xda74bdf0 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdde9a15b line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe8341f29 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xeb9244da line6_disconnect +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x002a3627 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x002b7c26 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x005a5ecf get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006eb192 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00e89d62 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01405a8f ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x014c3e3f sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x014e945a dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x016bf9eb get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x016f9d68 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x017b9a5e pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x01a31c3e shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x01c1a4ba blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x01dc476d of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e6268c i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x01ec64b6 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x023a3831 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0268b417 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x02795c92 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x02962260 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x029a7b54 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x029d06e1 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02d01b05 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x02f2a602 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x02fa98ff seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x02fb779d sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x0326bb93 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x032e1e64 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03761269 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0392f32d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x039f18d4 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a8d03e __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x03b272b0 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x03b81f25 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f4a425 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x0401d323 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04116655 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x041d8f24 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x042e392d sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x043b935f __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x0440c2f3 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x04428607 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0476bf93 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x0482aafb ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04998f87 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04ab533e usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e0f672 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x04e1fb47 put_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x04e7f311 ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x04fe728e ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0x05054bcc pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x05069b49 register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x05072ef6 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x0511efc1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x05143bf4 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056fa9cc md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x058af84f iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05900d7a dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x059cea79 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x060d03e6 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06278d75 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0655fbdf adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0659485f dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x06719fe1 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x068f13fe gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x0690d3cc debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x06936890 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x069416ef phy_put +EXPORT_SYMBOL_GPL vmlinux 0x06b114d3 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x06bbce71 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x06c360cb usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x070e1a3b sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x071e7a00 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x07609268 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x0761099f gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x079c8583 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x07ab9572 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c01b34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x07c27d66 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x07c83434 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x07cc0d7d gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x07e3145f regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x07f12cab regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x0800a84d da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x083251dd inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x084e6248 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x08765778 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x087eda5a skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0884961e reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08988615 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x08b3532b bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08ca22b9 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x08f8ddee uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x0910bfde pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092b0f0b pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x098b718c usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x09a2ba42 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x09ccd43c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x09e423f7 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a6427ff wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x0a70afd8 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x0a862fbd of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x0a8e2de1 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x0a92a5a0 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x0aa52e9f pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x0adb730a extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x0ae3091f sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x0aea11b6 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0afa7070 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2ee7d6 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0b43800f irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x0b62c73e led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b6549d8 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0b92a231 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0baee9d4 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x0bd2719b iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x0be2906e devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c25e400 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c39f228 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x0c494a18 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x0c532280 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x0c81c491 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0c907d10 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd1071d rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0ce73711 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cfbbe1c iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x0d045587 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x0d210a3f rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x0d21fc54 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d7fe470 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0da88735 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e02fb4b spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x0e0e775c crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x0e143c97 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x0e15c687 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x0e198703 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x0e27ce52 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x0e37bb55 ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x0e6dd96b pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0edff9bc dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0ee449ce tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x0ef1b84a ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x0f012044 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0f1de612 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0f307ea4 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3703a2 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x0f738a28 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f76e090 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x0f847bf8 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x0fac0723 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x0fb02f45 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0fb2538d palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x0fc981c4 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x0fd84ca2 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0fdfc6e8 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x0ffe1493 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x10033a6d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x10034e26 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1013c7d6 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1048e6b9 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x107354b3 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x107a5acf regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x109557a5 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x10976611 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10cfa845 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f2126d clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1131d602 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x113bfd83 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x114edae3 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x115cb3c0 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1177039b spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x118cb809 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x11962a0e bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x11a9456e ping_close +EXPORT_SYMBOL_GPL vmlinux 0x11e828db rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x11ee8609 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x120662ee user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121ea561 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x12322e5f blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12b2a25c pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x12bcd9d8 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x12c1c7f1 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x12c7ce67 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1333d8b3 ps3av_video_mode2res +EXPORT_SYMBOL_GPL vmlinux 0x1335bb5d ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x133f6593 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x1343763a spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x1353dce6 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x135854b9 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x135c0126 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13686468 smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x137a5b94 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x1393251e cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b7820a of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x13b935a7 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x13c49b9a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e2ce80 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1401af3d fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x1419b602 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x14312cd2 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1444ac79 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x1445eb49 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x14659985 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x14671bd3 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x147561a3 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x147fb75d ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x14872052 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x149cc70e desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x149d2b67 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x14da5a1e dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x14da929d devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x150315c3 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x1505f199 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x153112eb rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x1541ba5f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x154df6ee crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a4f049 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15dab30d kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x15eb9434 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f93438 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16327918 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x16462b98 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x164898e8 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1655ce1e get_device +EXPORT_SYMBOL_GPL vmlinux 0x1661e756 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x16928bb3 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x16b5aa49 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x172b5857 kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x175aeadd find_module +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a830ef blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x17acb3db da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x17b883bc __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x17bb659c user_read +EXPORT_SYMBOL_GPL vmlinux 0x17bbbe87 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x17e3d867 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x17f96f7a kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x18398195 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x184fc5e2 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186924ea pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188ba106 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x1897b4ec usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x189b784f cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18a9d79a __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x18b1d0b2 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x18b4e34e thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18f830b7 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x194285a6 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1950ace9 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x1959cd13 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x195b60cd inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x195f2d4c ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x1964dcda __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x196f246d ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x1974596b disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x1974f660 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0x19773b58 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x197c703a default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x1993bdf3 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19d11514 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a129fc0 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x1a2d64b7 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x1a309fda ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x1a471560 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1a57a6c8 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa2ff9b flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae15a64 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x1afa71fb ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x1b1b864b ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1b3b36ef regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1b3f4166 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1b639bef iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x1b6a70f3 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x1b8368d1 input_class +EXPORT_SYMBOL_GPL vmlinux 0x1b9253dc bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b0eb9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x1ba32883 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1bd147ee crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1bd7447b relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x1bebbc52 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x1c1b1ac6 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c39063b find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c667335 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x1c67f56b __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1c6fd88b led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x1c799bb1 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x1c7df74c kvm_hv_vm_activated +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9b8b3c ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x1ca9f322 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x1cca8e05 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1cca97ac usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1ccdcb95 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1cceca91 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1cda3ab5 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce160ee shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x1cf6edfe call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d135eef arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d255c46 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1d2569d0 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1d29a8a7 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x1d4ddd70 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5dbbb7 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x1d652735 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x1d6ea20f pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d890227 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1dae2c03 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x1dd292db cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1df4f751 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e14f018 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1e24a2cc attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e30be76 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1e338a54 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x1e4336ae dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5b691b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x1e6dc591 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1e7b35ec uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e885f19 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x1e8a1f95 device_register +EXPORT_SYMBOL_GPL vmlinux 0x1e8b1e6c class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1eb7f75a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebb1343 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1ecf0452 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ef45bf6 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f2250a2 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f3269fa crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1f39f8f1 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1f3da85c usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x1f509d48 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x1f72d616 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f85df8c pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb48472 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x1ff143ea __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x201bfcba usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x208dcbb7 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x20a8fedd virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20be0dfb gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x20c80987 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x20f8c237 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x21182599 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x2128bcb9 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x21512daa pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x219730a3 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c9c515 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x21ca6276 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x221f77b4 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x222632db eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x222b2675 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x224ab59b regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x227dfbf8 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x2284db2e __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2294aa67 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229fb466 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x22b893d0 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x22c3cc57 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x22e75d1f crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x23027cca lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x230a312a __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x230d8003 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x231164b8 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x23270a3c posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x236d3f9d udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x2373c901 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238fae75 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x2396ed2e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x23b5bfab of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x23c823b1 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x23d93c43 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2412a616 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x2412ee11 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x241e5f43 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x241f1aa8 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x24220423 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2426a5aa tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2441a1c3 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245a2bfb regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x245f758a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x246582b9 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x24731c29 force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2483f569 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2488e21c param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x24909b55 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24afca68 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x24b0dc92 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24d24f7d power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x24d2c907 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x24dacff8 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x24dce538 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24fb79e7 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x25093936 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0x2522bdb0 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x252bea84 component_add +EXPORT_SYMBOL_GPL vmlinux 0x253d8fc8 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x2549e016 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x2559dc54 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x257cc74c blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x259b913c split_page +EXPORT_SYMBOL_GPL vmlinux 0x25a0b7e8 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x25ba47a0 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x25ca29e2 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25d31159 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x25d82a47 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x25e054c8 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x25e08b0b __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x25eef934 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x25ffd495 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2602eeb0 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x26185480 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x261ac490 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x262e1a86 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x264960d7 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2650cdf5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265b06fc unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26716d0c raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x267da74d rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x267f1c81 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x2698f1a7 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x26f1b018 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x272c1b63 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x27515181 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x276d9c94 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x2784251e pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x27935e8b usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x27b45187 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x27b4dd71 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x27ba52ae extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fcc176 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x2806e664 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x28198a7b led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x2820a4f2 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2837b9de bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x2894abc9 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x28bf2814 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x28c69bab inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x28da9485 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x28e92564 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x2900bee2 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x291c45b0 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x292bb7d1 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x293f2f1e crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x29654a24 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x29eb496f fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x29f05bf1 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x2a3e543d sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x2a58dfba __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a7c2ed0 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x2a7e6fdb __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2aaf68c6 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x2aca9e5a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x2aee4642 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2af0e3b9 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2aff0a48 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x2b116fc8 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b3f3a2c kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b682599 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2b86414b regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2b99e401 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x2b9c6a7e crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x2bb35703 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2bb76b8b bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2bb7fbb7 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2bed9f65 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bff28d0 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x2c050489 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2c07bdb8 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2c135967 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x2c1d0058 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5ab5e6 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x2c7a1f57 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d113613 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1fc61d virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x2d237114 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d425da1 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x2d4411b9 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d7b8ff1 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x2d869498 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x2d94699e crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2d9a4e50 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2de0bca5 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x2de58381 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x2de5f30b spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x2e01bcab phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x2e090065 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e29d948 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e4d9883 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x2e524fab __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x2e69669f rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x2e69a861 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2e897e4e ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x2ebbd542 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec02310 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x2ece6a04 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x2ed65ecc rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2ef11e1b ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x2ef232e5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f594e2f generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2f59d5fc ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2f62e2a9 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f6c686a unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2f869fee __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x2fb339aa __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2fc2d528 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x2fc78895 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x2fc97480 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff7b3c0 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3002090c pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x3008a35b __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x301299e2 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x301b97bd __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x303df84f gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3060f1b7 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x30640125 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x306a90d4 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x30710658 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x3073a7e0 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x3081794e wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30b88f7c devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ea830c nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x30ec85be subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x30f53310 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x3102d597 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31136abc device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314c541c simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x31535597 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x31655f4a ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x319804bc crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x31a269e7 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x31a92169 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x31bef441 opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c15a73 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c7e667 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0x31ce05dc __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x31e6c8d8 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x31e7017d spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x31ecbd23 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x31fd6b80 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3241a0b4 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3247e7ee usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x325c7a09 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x3284f72e subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3287200c irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3295b30d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x32abb9d1 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x32af3c4b ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c8025e spi_async +EXPORT_SYMBOL_GPL vmlinux 0x32c846e4 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x32cf39fd spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x32d1baf3 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x33257880 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x33269fc9 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362f2f2 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x33692a4f crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x338be120 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x338d1e8e disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x339bf07d powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x33b0c860 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x33b4176d metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33c3a448 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x33d0bf6e ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x33e55334 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x3408aa07 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x340bbb7b led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x344f8a54 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x34656171 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x347bf3ab sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348e2006 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x34925478 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34c02dbc kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x34c872f0 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x34cbf9ad regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x34d12cf5 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x34ff560d usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x354161e3 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3549c930 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x355bd291 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3575b947 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x359d32a6 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x35af169c pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35e8f908 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x35f40208 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x364739ea ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x36476a42 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x3654de83 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b4279a thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36bf2923 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36c74176 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x36c9f162 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36d0e79c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36df1652 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x36f70b76 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x36ff10a5 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x370586c5 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x373fe9df extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x3743d0ea ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x377415a5 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x377ac95b pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x37836c53 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x37c1c1ba device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x37ce510d regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37f800d5 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x380016aa get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x380ea72d device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38a26300 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38d8963c rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x38e786d0 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38ef217a xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x39219ce8 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3961a444 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x399c7e80 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x399f92d2 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x39a753d3 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x39add886 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x39c6f6ea wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ed7b34 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x39fd8697 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3a0395f1 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3a11720c inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a373d97 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a441bce pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a6e8ee9 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x3a96e24a ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3a97098f __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3a9a66e3 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad06df7 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad4f6fb pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x3adc40c9 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3b172d35 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b2c8327 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x3b2d8d3b dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x3b32655d devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3b583074 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3b5951af ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x3b895694 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3bc3b818 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3c326c03 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x3c33a16c bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3c358066 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x3c3e5090 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb2d4f5 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ceac21e rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3d122912 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3d1dcd7d usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d50f282 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d6f9917 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x3d772c9d rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3d7ac982 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x3d83567c of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x3d8fcf47 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x3d9db8ea sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df832ff alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x3dfa072a cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e004fe5 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x3e0ac9a4 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3e2752a3 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3e57f6a1 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e659406 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e95efe7 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x3ea0e5b4 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3ea7110b da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ecfc218 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x3eedb77c pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x3efa6123 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f031fe4 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x3f160ba2 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x3f398352 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x3f5465bc ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x3f5d66ff thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x3f71f1fe power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x3f750687 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x3f7e3d42 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x3f8a42da class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3f92b188 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fad61fb __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x40052597 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x400dc2bc of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x4027dbdc serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x4039d9cf skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40457c08 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4070503d nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x408ae20e bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x408d4319 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x409757fa skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ce11dd pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x40d36438 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f5fea9 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x41405752 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x414270e5 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x415082c3 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x415d4edb kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x41624eb6 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x417dad19 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4184db33 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41dd4cdb lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x41ddfd33 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x42008a47 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x4206580f fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x4216c376 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x422aaf18 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x422d1cd5 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x4237cda6 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x423c3b02 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x423e397b stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x42410b25 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4242c446 spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4256d166 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x428250d8 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428600c8 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x42958274 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x42f38219 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x42f88ac9 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x4304e2f2 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x430ff3df pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x43269570 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x4329afa8 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x434cebe5 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43672ef5 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x43673a95 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x4386307f iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43e48dbc virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x43ecc4f0 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4421f1a3 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x442a9ec5 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x443581ec handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x4440d894 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x446d3cf0 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x44700a34 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4470d48a __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x44795996 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449f75a5 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x44b2e306 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44e4145d ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x44f43321 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x4500d847 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4513442b crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x452d3c69 smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x453785a0 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x4556b02a ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4579f2a2 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x45898afb crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45905ef2 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x4598ecef of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x45b200c3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c183d2 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x45dd425a pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x45edfb89 copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x45f1790e pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460d2b4e cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x46162bc2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x462662cd pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x462be68a pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x462c3b54 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x46378faf regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x46383873 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x464cbfcc of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x464dede2 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x465b6c23 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x466bbe49 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x467993ff ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468ed66b scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x46c1ea43 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46e002ad bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x46fb971a devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x47025e18 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x470b93ef blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x47169557 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x471b1bab of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472a11d2 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x472b27c9 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477bafbd tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a3fd50 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47d96285 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x47e72254 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x48157cc1 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x482a5f58 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x48394a51 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x48439de7 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4871d29e usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4880eafe fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4885e039 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x48988465 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x48e1a1d7 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x495609b4 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4967d899 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x49884699 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a2f158 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x49b0b7a1 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x49d3fdcb mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x49d78f2e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a1f43fb pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a636fda scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a9ce13d scom_controller +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac850c4 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4adc693e regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b12d0e0 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b39ca48 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4b3d7987 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x4b960148 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x4ba2c437 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x4bbbdecd wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4bbf2243 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x4bc114f0 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x4be1f493 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x4bf910cf tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c21afd3 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4c37660f i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c457c2a dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c68535b devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7ebeec dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x4c89d132 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x4cb74971 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x4cc1c35a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x4cd64327 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ce29ac2 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4cffdf1c usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d17e460 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x4d21e2e1 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x4d266b01 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x4d30811e skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x4d3b0bfc ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4d5af850 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x4d903c68 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4d9da9b3 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x4db5cb85 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x4dd6f748 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4dd78b0b tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x4dd7a4b4 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df5d85a __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4e070ba5 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x4e0ec1f8 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e183579 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e33c79f input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x4e4480ff aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e67ada6 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x4e6c326b __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e6e9966 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x4e7760ec tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4e77e88b pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4e79b38b blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x4e853b15 ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0x4e892842 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x4e965251 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4ea0e727 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0x4ea8d339 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x4eae52aa sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ec79887 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4ed6997b virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x4edbc520 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x4ee322ac platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4ef1d5f7 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efcadf0 __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f11a5a5 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x4f1f9849 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x4f2fe950 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6e4e2e i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x4f70cb00 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x4f767279 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4fb5dfa6 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x4fc956e2 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x4fcbcd5b dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe4002e pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x4fe54021 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x4ff465ed lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4ffb8ae5 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x5001a35a crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x500989ca tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x5016b8ad of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x5021234a devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x50396300 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x503f1979 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5046704a kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x505d9ce5 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x506e180d spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5070f0b6 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5085f855 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5093457d of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x50c3e6ba nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x50ccc97c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51036f32 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5131107e skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x513d4d09 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x5154dad5 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x5161de9c device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x51626a5e devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x516d2067 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x518c7596 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x51966e03 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x51b37be7 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51dd52c7 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5206ad9c devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52177ce5 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5261888a ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x527a74b1 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5291d399 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x52c3477d spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0x52c3a445 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x52d48b02 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x52d7fefe __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x52fdfcf7 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5312e89c cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x5314977d xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x5317ecf7 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x531a879f blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5386e3fc tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x53a43864 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x53c36fa1 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x53c7ef70 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x53dfa587 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x53f67708 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x5407e3ff led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x543403f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x5439b9d9 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x546fdeda sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x54722fc0 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54774ae1 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549a64b1 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x549c4fdb pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x54a36087 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x54ab163a of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x54c01799 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x5504dae7 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x55221722 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554cd755 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x5552ba43 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5580cc2e pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x558441a6 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5586974a crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x558f46ff class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x559044bb usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x5599ae30 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x559c0422 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x55af9397 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x55bf39d0 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x55c20d91 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x55c9931d device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x55e3f520 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x560aa1db opal_tpo_write +EXPORT_SYMBOL_GPL vmlinux 0x56157eab irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x5622b583 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5640a946 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x564387fe rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56afdc0e component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56dbf25a __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f2e0ef driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5703c409 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x5703ee5d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x570497c8 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x5704f021 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x571618e2 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x5719d873 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57352800 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x578a703a pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a05dde iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57ca9c47 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x57f6195a sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x5810e386 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x58141c3d ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x588d11fb gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58950031 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58abf49e wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x58eb32e7 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x58fe7677 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590313b3 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x5913c99e inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x5917a7f3 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x59365df3 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x594b1dea kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5953a824 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x596368db tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5967349b dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x597d9999 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x59aa156e pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59d7174a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x59de904a pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a340fe2 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5a39e1ec param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x5a39fd20 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5a4c6e5e wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x5a6b8a8e bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a74e10e spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a98c773 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5a9af0b4 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x5aa28f93 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x5ac9df14 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x5acf0036 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5adfe418 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x5b0067f1 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5b034dae perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x5b070e44 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x5b170449 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5b56238d tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x5b5a9777 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x5b6ed460 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x5b99f482 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x5ba23205 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5ba818d0 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x5bc2f4c5 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd55924 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x5bdaf5ed io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c126ff5 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5c12abc0 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5c1ab786 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5bceb9 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x5c85e1ac dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5c8b4309 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5c8fe5d4 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ced1ef2 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1a8fa1 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x5d39ee83 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x5d3af371 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x5d3d0842 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da895f6 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x5db5e5bb gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5dcbdfd5 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x5de74798 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x5df15176 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x5df5a51f uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x5dfd6990 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5e05a14d i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5e1ab438 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x5e25ed3c devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5cb345 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5e5e60e3 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5e783d42 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x5e893259 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5e9121f7 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5eb32460 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x5ecc9cf1 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5ee868dc sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x5f14dc53 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5f174bfd scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x5f1e19a5 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2a1875 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f2a645f vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x5f3f1e05 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5f405470 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x5f470d6d iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f57d28b led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x5fd45494 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x600d2706 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x60140053 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x6034e1d8 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x603565a9 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x60451c2e inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x604a47d7 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60609211 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x606bdea7 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x607adb35 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x607ed842 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x608829c2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6096a3ef screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60b0ff4a skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x60bd5625 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60eefd4b device_reset +EXPORT_SYMBOL_GPL vmlinux 0x610367e7 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6120811c md_run +EXPORT_SYMBOL_GPL vmlinux 0x6129ba2c pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6163b268 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x61a730bf nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x61a7bb5f register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61c45da5 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x61c682ab blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x61d0e1ae dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x61d8e4d3 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6208cef5 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x622679dc init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62568bf3 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x626888d8 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x626ed7a1 ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0x62b05cbb pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62c3dc49 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x62c983bb pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x62d30519 drop_cop +EXPORT_SYMBOL_GPL vmlinux 0x62e3c1fb pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x62fd1791 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6319ed67 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x63659694 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x636724bd inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x63704bf7 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6386e8ce mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6402d77b usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x640bdbfa uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x645f8ece tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x646ecdec raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x64903e5b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x64a04bd8 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x64d54614 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x650d2390 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x652bcb3c event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x654168e2 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x654a7aee __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x65566173 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c13715 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f850d0 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x65f87680 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x660caff2 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6640e710 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x666cda4f pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668bbc01 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x66a1188f crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d47849 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f03d37 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x6708886c posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67440f6e skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67516c3a iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x67571c84 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x6787a46d skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x67892cd4 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67b9def3 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x67c4233c regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x67d00ea5 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x67e49902 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x6814cb9f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x684bcbf8 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x6853547f register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x687d6b8d __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x689a9f53 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68b3d92f pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x68b69e5c eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6966fc12 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x696fcf47 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69c3fc84 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x69d57abc pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x69dd9a77 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a56ffe1 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a760910 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6ab421a0 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6ac0368b tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6adf45cd regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x6ae4834a register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x6ae92e7c save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x6b039078 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x6b151102 spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x6b1f6edd rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6b219433 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b313f8b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6b3c4ae3 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6b459537 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x6b4dbaa3 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x6b68eef2 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b9b2ee0 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x6bafb82e sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6bcee784 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x6bd9474a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x6be90955 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c085713 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x6c3eec56 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c6b3f73 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x6c758a46 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6c97c6c0 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cb00001 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6cb0a8fe inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x6cb1a49d usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cc4e979 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x6cd098f7 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d273445 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3591c1 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x6d3f614c tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x6d510936 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x6d74237c __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6d816349 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x6d875a30 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x6df9bb4e irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1ba017 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6e29f75f wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e5880e7 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x6e593ddc of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e6ff933 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e836bd1 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8c55cb inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6eb0caa6 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x6ebed783 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ec4e59a ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x6ef6ae69 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x6f048f6c extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f09f5c9 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f397eda devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f47dccc pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x6f56ef93 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x6f570b3d xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f6da63b securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6f738519 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x6f795539 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6fb251b8 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x6fc201b5 copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0x6fc39768 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6fd0494f shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x6fd51bd0 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffda71a blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x701be38e ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x703d97cb trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x705b032a regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x706c0d72 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708a55c0 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x7098b76c crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x709cfb5e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70b7c15f trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x70c12713 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e57daa pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71445c12 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71798831 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x719df45e sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x71ab71f8 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x71add377 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x71af545c sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x71bd9b30 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x71cfd369 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f9ee12 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0x72156589 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7227190c dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x724454f2 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x724ca76b gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x724f2237 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7286fd89 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x72b362cf cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72e7c736 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x72f11d29 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7320091e fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x73729de2 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x7399cc09 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a09e50 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c65b01 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73cdc4af pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d75fae device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x73ecbea4 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x742606f0 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x74330adf gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74453698 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749394b5 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b7db61 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c3afa0 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x74d25bd9 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x74dc01d0 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75014aed wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7513481d virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x75194354 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75329035 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x7541adad get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x75459052 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x7568f85e ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x75779a28 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7584a228 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75a1d47f extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x75ab0f64 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x75b6706b sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x75b9e9d3 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x75c24dd0 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75f278ca fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x760a203c gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x761dee2e device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x76225cb8 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x764000af md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x76589d28 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x765ebac3 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768cb4f6 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x76954cac vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x76a0f433 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x76aec256 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x76dfffa6 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x76f60507 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x7701a0c1 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x77196317 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x77593c21 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x7768f3bf pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x776c0cb9 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x77849e3c tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x77a662e1 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x77c55304 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x77d45287 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x7814c4e1 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x7818911c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x781af862 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78258b05 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x783a9ca3 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x783adbef devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x783c43ac fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x785c663d devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x787fbc4e pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7899acc4 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x789e14ea bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78c900b5 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x78e4c04c ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x78fc5cc3 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x790e54a6 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x791c3433 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x792f334d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x793a5597 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794a08cf bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x795f3b88 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x79654067 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x796b625f tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796cf83c of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x7972d877 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x798e1ca9 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x79de94bb ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f7c270 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a0a69aa tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x7a2c2f14 mm_iommu_find +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3cae4d dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x7a3dfbd0 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x7a726ac4 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x7a877345 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9a6201 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x7ab46845 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x7acf56c4 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x7adedf10 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b4ffe7c tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x7b5eae40 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7b69d4f4 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b913e81 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7ba2b85b kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0x7ba7d9fb pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x7bb04d3a regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7bd0b999 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x7be579e6 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7bf4b3ac crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7bf87fea srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7bfd8b4f dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c045085 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x7c0a58f8 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7c0fa891 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x7c1ab7b2 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c630a9d ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x7c64b0ca regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x7ca3cc33 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x7cca7b81 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdc7e18 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7cddf467 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d26a723 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x7d3509b7 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d78fbbc rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db52cff bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7dc8748c da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dfc882a unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x7dff59c6 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x7e0d9447 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7e157281 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e26ea25 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7e3af143 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x7e5d273e rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e66900c dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x7e689f76 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x7e73d0f3 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7e89dd01 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb53b23 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f08797e dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f2caf88 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f807bfa crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x7fac9337 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fc1ee4f dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x7fdb21ab wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7fea1212 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x800e02c6 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x80265552 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x804ea02d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x80600bff blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a545a2 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x80a8d435 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c84dba fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80ec944a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80ff3f36 spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811c4e98 eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8129189c crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x8145d761 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814f4881 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8164ed9a pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x818fcf5e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x81a991b0 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x81ac516e power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x81b6a8eb napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x81c129d2 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x81f52541 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x823891c3 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x824521c6 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x824b47fd swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x825429c2 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x826e2c50 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8272a5c3 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x82753073 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x827fcf90 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x828b04d6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x8290259b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x82a9d10b pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x82b9fd8b key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x82ba250d spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x82bb9693 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82db5241 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x82f63101 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x830762c2 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x8353aa61 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x837f4a94 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b3860f __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x842df5a6 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x84610a6d fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x8484b35b tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x849e65ce sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84b93a9c pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x84e642ae ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85154a9e usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85346429 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x8541c5b0 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x854b6bb3 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x8568a14d blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d64f74 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x85e0b836 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x85e9e97a ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x860743d7 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x862131c5 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86223bec debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x8624d65f blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x86484495 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x86602aa3 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x866d8fb3 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86804e5a request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8693b8db gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x86b8b84b blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x86cc69a7 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x86d7bc79 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x86d8a34e debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x86dcc9ab crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8730b87f wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x873c2a6d dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x875f39ff add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x876ad948 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x878bc075 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x879c24d4 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x879e4625 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x87c2c8f7 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x87d45397 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x87d9b70c thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8807c9fc netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x880f6a82 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8845b727 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x8850e5fa i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x8855ed3e blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x887649ab rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x888961e8 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x889a595c bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x88a40a5c eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88acef69 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88f216ee napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x88f2fb5a device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x88fd69c3 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x89025a2d devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x8906583a hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8932d7ff virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x893eef13 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956d868 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x89769af3 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x898a6fc0 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x8998db4c crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x89b14a95 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x89ba8758 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a265ea3 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8a31479a rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x8a40f17e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5a57ec rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x8aadcecc vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acb6d70 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b4b11cd spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x8b513175 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8b5fe2d8 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b886c3c of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x8b890e40 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x8b8cc867 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x8b8f219c device_move +EXPORT_SYMBOL_GPL vmlinux 0x8b9b57c1 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x8bce5e28 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x8bfabed5 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c17cca5 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x8c1e998e ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c3a29fe platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x8c3c688a regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c469bf7 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x8c5ca81a ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c655bfd blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x8c68b2c1 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7812ff mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c79b5d6 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x8c8f9077 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8cd12d62 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x8cd7f5bd bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8cfdef0f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2eabde ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8d3bb1d3 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x8d4b004b device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x8d500b5c platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x8d5d1ad9 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8d700ac8 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8d8f2aa4 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x8dab4462 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8daf2a8c pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8db6c02e regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dd5e1a0 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x8dd86bc7 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x8de902a1 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8dfa09fd extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8dfdb7f8 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0x8e1cc49c devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e32bd9a dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x8e666c55 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8ef1b3f2 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1a2bed of_css +EXPORT_SYMBOL_GPL vmlinux 0x8f3f3616 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x8f554bfe ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6f0e32 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8f8bd718 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8f9bc902 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x8f9d7419 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x8fd840cd percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x9006ca93 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90438521 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90676af5 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x906c0526 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x907671f1 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x908a1011 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x909c81eb bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a5ed21 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x90ce973e n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x90ceaf62 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x90df3a7a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x90e621be pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x90eb0b3f sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x90ef56f0 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x911773f8 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9140246d attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x914c4747 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x91652073 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x916c6cb0 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x916d563a reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a1e9e4 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x91a62556 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x91aee2e2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x91b21607 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x91bdbb08 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x91c36698 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e5e381 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x91ebaa76 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x91efb6ce usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x91f2819f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92165c14 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x92181549 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x923416cf max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925af089 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x929df49e inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x92ab4272 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x92bc561c crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x930453e9 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x934e0226 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x93777d70 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x93795de1 pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0x937aa362 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x93932cb6 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x939967a2 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x93f143dc iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x93fd3ca2 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94271e66 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x942e75a4 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x9473193c xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x947cae46 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94ab0fef srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x94ac865e tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x94b25101 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x94d771f4 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94dc4c4f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x94df90d9 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94e1b2ab __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x94e9de8d wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95353617 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9549b4c7 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9551499e pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9567aec2 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x95778995 device_del +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95aae054 device_add +EXPORT_SYMBOL_GPL vmlinux 0x95adee0c pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x95b5faab rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9b77 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x95ca95e6 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x95cc3367 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x95dadfa5 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x95e963e6 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x95fb67b9 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x960445c8 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96097b01 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962691ce ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964b0a35 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x9651d4f0 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x965d8264 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x9674ae21 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96c3c729 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x96ddb529 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x96ddce8c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x9700a304 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x970832a9 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x973e7a66 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9745e652 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97627be5 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x977e3151 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x97b062f6 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x97cb5465 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97fcfb16 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x97fdb202 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x98201823 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98410eaa ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x987463fa agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987cbdb3 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989f3265 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98c0df38 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x98c59e0e cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9917a920 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x99243f4d sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99368d65 kvmppc_update_rmap_change +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x9993b166 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99ab2acd rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99d333f1 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x99d833da blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99f51fd9 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a0ce71d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a13f84a pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9a307a7f iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x9a40279c inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a629410 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x9a6ba305 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abe0c38 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af38aa3 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9af9d55e sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x9b05dfd6 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9b0ee33b proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x9b4b67de __module_address +EXPORT_SYMBOL_GPL vmlinux 0x9b5b4411 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x9b7be825 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x9b82d857 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x9b8d8fd5 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba4e073 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9bb3e140 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bdedb6e power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9be7b742 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c2376a2 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x9c2ba156 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x9c3426c5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x9c3e7e54 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9c568edd ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x9c7bfd7d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x9c8f0c8c device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9c970e07 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x9ca52bb7 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdc7558 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x9cffb576 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x9d3e0af6 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x9d6ad29d irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x9d7a9b03 kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db33a0c driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9dd9efec platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9ddc2303 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x9ddea9a2 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x9de3ded2 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9deb1485 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9dfee26d __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9e024939 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9e3dd5fd inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5b7a47 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9e9f568b adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9eac7b79 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9ecd87db unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed6ba30 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9ef8d153 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x9f1722bd crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9f1ffa00 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x9f208b3b irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x9f221113 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x9f47724c mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x9f6e50fe subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x9f77a85d ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x9f7a23fc ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9f8df440 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x9fb022bf pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x9fc84cf0 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdfcb7e cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x9fe0e834 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x9fe1ae1e spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fef702b dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa0781254 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0be5cf2 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xa0e63f1c tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xa0f69939 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa10668f9 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa11e4abd dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xa1498221 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa1544feb regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa1597c76 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xa18c6446 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa198343e nl_table +EXPORT_SYMBOL_GPL vmlinux 0xa1a091c4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa1b68a3f skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xa1bcf847 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xa1c65992 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xa1d28b78 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa1df50be tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xa1e4ab47 ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1ec1b97 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f4181a wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa1f4fa23 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa1f5921c crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xa1fae8f9 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xa20e9980 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2173b2f ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xa2329050 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xa25d2fa3 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xa266d34d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa270cfd9 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa279f6d9 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa2a5159a irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2ba4736 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2be2dd6 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa2d36373 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0xa2d6f48f eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xa2e1e4a5 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xa30e5632 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xa31ba900 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xa31e7af3 iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0xa3571db9 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa3667a0c pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa392ac0a pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3cbc8e7 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xa3d790ec scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xa3df0de3 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xa3dfd70d dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xa3e16693 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa409ca07 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa427717c ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xa4356974 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa4377384 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xa47619a2 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xa47ad62e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa47b6c14 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48e7cdb sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa4a90c21 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xa4b863ae regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xa4e73c33 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa4e85b1a of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xa4f2e0a0 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa5147fa5 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xa525cdfa pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xa531661b arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xa5406033 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa54cbe13 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa5552db4 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xa56601eb __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xa58d0f4c kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa58d4f1a regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b5c85a cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xa5db487b ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xa5e95ed3 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5eba6f0 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5fa9f0d swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xa61699a5 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa61ee821 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa625a552 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa635631c iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa64b324f of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa65a0b75 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6916b50 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ba7f8d devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa6cc4282 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xa6d014cd tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa712cd42 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xa71f7814 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa749da5a __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xa753753c stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xa77007eb devres_get +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7770b09 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa7a42e5e iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xa7af316a cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xa7b830b4 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xa7bf4c1f __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa7e73a48 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xa81788f6 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xa8203219 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xa8259742 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xa827d103 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xa83d4823 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa859ed42 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xa86521df ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa869c87d __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa86c00de crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xa88dea22 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8cafd25 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xa8d06fe1 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xa8d46d00 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xa8e2c967 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xa8f776d9 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xa904c8f0 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xa927188a ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9410fb8 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa94272b2 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa95e7306 ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9937934 device_create +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e8b951 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xa9ec4889 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa05d6eb devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xaa101080 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xaa36eb02 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xaa4619e7 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xaa67cf6c inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xaa6ba242 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xaa9bf1fe iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xaa9d54a1 phy_create +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac7d433 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xaadd25f9 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xaaec8e91 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xaaed5dfa tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xab1951ff regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab35525f get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab625c3d devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab896a0c arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xaba445dc regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xabaa9ed1 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xabc2e442 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd603cb usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xabe72e61 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xac027aac tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xac03b913 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xac0452a9 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xac0dee55 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xac158e4a flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xac1849a9 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xac1abd6d ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xac27c9c1 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xac2edd8f regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xac5c1dab debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xac5f599f wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xac6c1a01 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xac802ecb kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0xac8d5261 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xacd7960b ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace7ee03 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad09a0ca ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad153366 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xad43bcac gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xad4a31eb ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xad4f479a ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xad65b91e mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xad77fe23 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xad7e9d17 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xad897ee4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xad8d3386 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadc334bc public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc93a9f virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xadda411d transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf030ce bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae200ea7 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae213590 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xae5146d8 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae858733 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xae91128a elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xae93bfbc blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xae9f81a6 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaebef328 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaefe1c38 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf3710da fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xaf58e2c2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaf5ca194 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xaf60ea58 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xaf9187b8 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafde8505 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xaff0aad7 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xaffd2c62 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaffe046a rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xb00958b4 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb01de64e bus_register +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb05acb4f platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xb05d0bf4 ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0xb08712a3 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb0871c3e of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb114008f usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb176a52f crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb182e624 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19e8dce __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xb1a3757f pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xb1a741b3 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1d552b6 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xb1d6e78a sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb1e1f9f7 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb2256aee device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26a49e2 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb2772006 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb278c46e od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xb27b00c2 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb2931637 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xb2aabd17 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xb2e6763c root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2fb2604 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xb3401874 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34e328d irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb36539df devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xb3913086 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb3a4ed2e crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb3d0bb03 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb3f8d148 eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0xb407fca4 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb4085060 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb40deafa ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb41a2fec ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xb4561605 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xb47dfa13 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4db9395 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb517f6a8 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xb51f7abe smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb538c258 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xb576e78c net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xb57a1048 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cf9173 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xb5ecccd7 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6080338 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb61795af ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xb622fac0 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb642acf3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb64571b1 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xb6684c53 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xb66e8c38 srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xb672ea49 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb67304bf perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xb67bdfad ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb6840614 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xb69e4a17 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6ebadd8 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xb7076549 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb70f6a1c rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb715af84 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb71d4af1 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xb7400390 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xb7751fc6 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xb7931bac rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb7a1745a bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb7c2570f rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb7cb1d19 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xb7de1970 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb7ef9fe5 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb803eb2a of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xb80469b5 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xb8175a46 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xb81b0285 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb81c564e usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xb81deafe devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xb83602be pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb83e22e3 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb841c86d mmput +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb8721554 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xb875ae66 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8778694 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xb87d4af8 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xb883a69c regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb90d2df0 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xb945ace8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb94de068 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb975c0da fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xb98ad67c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xb9b00f67 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xba053d27 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xba0fefe1 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba22ca7d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3c8f9d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xba44583d mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xbaa5e633 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabda53b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbacbd5db device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xbadcf453 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xbadee6fa component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbb02a8a1 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb045491 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xbb09395d pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb43de8d thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb76752b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xbb839023 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbb89b4e3 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xbb955f19 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xbb9c8cdd usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xbba85612 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xbbc6fca4 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xbbd1b303 user_update +EXPORT_SYMBOL_GPL vmlinux 0xbbdaf124 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xbbe9d6c6 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xbbec13a0 ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xbc4ad007 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xbc5b3b1b ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc881055 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xbc8e5e46 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xbc942657 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd34653 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce1b83b vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xbcfcfa74 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xbd10a75d bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xbd22c24e rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbd289361 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd42e28e rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbd4c8060 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xbd51bb32 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd71e49c uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xbd7792c0 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xbd7acafd wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbd95ea20 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xbdd057d5 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf31f89 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xbdfe3fcb devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2d0baa ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xbe43ab0e ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe88ab24 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe98384b tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xbe9e5c62 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbec12e49 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbec3cae0 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbedb80a8 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeea9787 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbefa30c2 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xbf030e91 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf1d1e12 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xbf2a68e5 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xbf37641b kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xbf3c0de4 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xbf61d388 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xbf7e77de ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf833257 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xbf8b967d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd39d83 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfea6a45 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xbff85979 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xbffb63d1 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc01b5abc usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc02ace69 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0456634 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xc04777d9 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc0494e8f inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xc060bffb sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc062d7ef inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xc064ca80 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06c8b06 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc0705d21 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc0751dc8 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc098e0b5 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xc099564a usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c0aff2 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0db7e0f regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f9dc50 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xc12d1f42 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc14e38f1 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xc16d0e04 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17fd9f6 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xc1c5feb5 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xc1ca3222 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1cbef7f ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc1cc610a debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xc2117c9d ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22b92cc pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0xc232ba13 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xc236db41 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc2409fe3 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xc2412ddb dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xc246f4be to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc265df7d ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc27e2965 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2804a68 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2cab27e dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xc3023356 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xc31df963 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35f82d5 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xc36b481a exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3afe5e3 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc40157bf usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc4051534 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc409201c ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4345c5d gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46cd69c led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4780e20 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4abc061 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xc4b93b77 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc509538e blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xc521a8e3 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc524f45a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc535120c __put_net +EXPORT_SYMBOL_GPL vmlinux 0xc536bf21 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xc53af526 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5497bb8 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc56906ec ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc592d4a5 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b8d994 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xc5cded9a policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xc5ea6aeb pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc6072cdb blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xc610a412 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc644831b bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66ad313 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc67ba777 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc68a4c50 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68d64a0 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69b97de virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6d5f218 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xc6da7a0a __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xc6e2f79a percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6e8950d lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xc6f18d1d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xc6f5f297 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc6fd52c7 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xc705ee09 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc712629f crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc7258338 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xc728a3b3 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xc72d2c97 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73b8c3d dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc75f60e9 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc77d5d45 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xc791abc4 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc7979f8c nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a241e9 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc7a8558a sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d53392 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xc7e376f7 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e7baa5 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xc7f2b1f4 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc7ff4b4e __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xc845d4c4 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc8593744 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc866cf82 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xc8773d30 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e0e9e cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b825a8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc9014d3c pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xc90432cb percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc916ead4 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0xc919086d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc96536fd fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xc966343c ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc98a7469 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc9a74f59 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc9d4b771 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc9dcf27b ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0357bc platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xca0e6efb pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xca0fc25d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xca330b2a crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xca3afb3a fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xca418c8c da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xca5cd930 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xca6205ad pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xca630e53 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xca726190 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca83e96d raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabe9fb1 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcac4637c ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xcac9557e srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0xcaee92ae sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xcaf5b91b pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xcaf871e5 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb3c51ff irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4aa872 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xcb5f8518 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcb67deab stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xcb738555 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xcba25fd6 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xcbcde4bf pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbe65d04 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf2e062 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcbfc3f2e component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc2be76a bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xcc36d073 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcc5c7df7 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8cd387 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xcc9be974 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xcca1d74f __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccbbf342 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce2e1b1 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xccee1c9f perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xcd059fdc wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcd0f33c5 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xcd210a2e swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xcd3164f5 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xcd684919 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xcd7f0cbc regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb629ac vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc934b2 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddb5452 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xcdf3cf7c gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xce0c4f6f preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xce10067d crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xce140688 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce16d248 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xce1be98c platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xce3fafaf percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xce69a5a9 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xce6a64b8 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7d2d87 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xce8598f4 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xce8edc34 spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcebeaa0a gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xcec71906 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee8eb7a ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xcef55d39 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcf019ac7 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xcf10acd6 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcf113ff6 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xcf13188a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xcf2e7c47 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xcf40576e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcf4ba497 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xcf50b76f blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf58f5ec scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xcf604a64 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcfa2e525 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc7ccad wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xcfd45b35 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xcfe0235f irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xcff670a5 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd042622e wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd049dcac usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xd05021ba ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd052e82c syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd064f911 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd075e4ff fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xd082e71b tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd0949c15 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xd0a69ea9 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xd0b006a8 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e512d7 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xd0e6fdaf pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xd108ca49 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xd135c551 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xd151ef2b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17ff153 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd191297c ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xd1c9e1a5 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1dc2d80 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd202c6fb rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2061fd0 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd215381f __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21817b5 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xd21dddd5 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2333409 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xd246caf8 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd2699172 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd290ea1e dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xd2bed5e8 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd2cac0d6 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e9e444 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f096c1 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd2f2401e pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xd30d3e6f blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd32df15e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xd357cf75 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xd36ca4a2 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xd383d1f9 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd39c04e2 use_cop +EXPORT_SYMBOL_GPL vmlinux 0xd3a7dc70 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xd3d85bca serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd3ee741d get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xd3ff7ce9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd4151623 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd48eecf9 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xd49a382f tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xd4a2e3df regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd4af2eef usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50734b8 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd511c554 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd5145792 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xd5278ed9 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xd52e2654 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xd54246dd nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xd554d6ba fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd56c5772 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xd57f64ac simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xd57f95ce usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd5a869fc arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5fcbced eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61c287f ping_err +EXPORT_SYMBOL_GPL vmlinux 0xd666a9d4 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a06ac1 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6ab6d78 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xd6abd95e usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xd6ad87f9 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd6af49da trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xd6dcd1d4 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd6e48070 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd6e7ab9f irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70846fa led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xd712184f spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0xd7140c6d relay_open +EXPORT_SYMBOL_GPL vmlinux 0xd72bb0e8 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd73aa49b ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd73fa3c4 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd75edafc rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd765ccfa serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78f04ac class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd7a918dd ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xd7bec712 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd82d7c8f scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xd838cc6f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd86995bc srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0xd870a880 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xd8726676 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8bafc8f ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd8d8783a gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd905e23f tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xd93ee08e component_del +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9439c38 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd9540ad7 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd95c3cd4 remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd973ce5e blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd97a6a88 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xd97af5c3 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xd9a298c0 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xd9b51fd2 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xd9b9b2cf mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd9beac7a tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd9d47b69 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda022f54 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0cc860 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xda12e72a of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xda270c15 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xda2c1ac3 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xda360f01 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xda3b90b0 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xda692513 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xda6d6ec5 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xda8074e9 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xdaa8277d unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdab19f60 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdad030f7 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdad4a288 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdae754b3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xdaec9d75 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf8df69 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xdafc3ff6 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xdafe3489 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb1b8ba7 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb366cf2 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb53609c init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xdb5b6e13 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xdb7c04c0 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8f34f6 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdba2cca7 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xdbb712a8 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xdbca7ccd ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xdbd62abf dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfaddfe is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xdc15e952 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xdc17c09e ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc5cd0b8 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc937864 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcab3779 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xdcb23bc5 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xdccbbaf1 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xdcdeea8a disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xdce6fd56 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xdcefce2d serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xdcff5d51 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd190e21 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd36d7ab pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5fd663 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xdd6c3c2f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7c7678 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdd7e26a1 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xdd969f9c devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xdda1d5d0 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xddab52f8 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xddb9706f component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc8c322 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf71135 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xddfb342f dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xde1a5d6b pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xde1d4bb2 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xde2e0373 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xde375af6 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xde49feac pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xde54fe5f of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xde5fa34b x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xde634e30 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xde6fa6d3 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xde71fb04 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xde7b664d crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xde7c9597 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xde960340 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdec84f5b crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xded54762 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xdedfd5d6 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xdef3e1fe register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1a90e1 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xdf744170 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdf81577a fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xdf938bc5 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xdfaa2e1c crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xdfae51b0 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xdfaeb82c inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xdfc9e6fe dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xdfd8aa3f trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xdfe527fb ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xdffb1dae i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00c9f66 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe01a34f6 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xe0207662 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xe0220a7e single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xe02c9c9f platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe037f87c pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xe040a039 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xe0455b65 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ee0005 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe0fd8097 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xe107354a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xe11a15eb kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xe136e576 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe151f65f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xe15a9ca1 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe183cfa4 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xe1864b97 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe1a42910 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xe1b02f88 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c42bef unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xe1e85469 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xe2141ac8 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe22c5a0a fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xe2496d3e regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe2571f3a virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xe2744b4c dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xe275587d crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe27be814 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2b589ea devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xe2bf0f7c skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe2ca1439 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe2d93c19 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2f129a8 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3269afa device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe33e1ef1 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xe33ff903 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe3515a52 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xe37aace5 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3b7a0ce devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xe3ceb267 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3ddd9a4 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xe3de7b8b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3e6133d transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xe3ebc937 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe408a02d ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xe41b72f5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe4396781 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe445f9c2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe45a1e35 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4977a0e xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xe4b058af ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4dc75cd tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xe4fb9949 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe50af7da blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xe519c762 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe524707e fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5253128 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xe52b4c80 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe574a04e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5895a2d __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe594c2cb cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xe597cc5e ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xe5aeee9a sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xe5b01408 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe5cf0191 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe5d6401c of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe5e26497 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe60ce752 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65bbad8 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe6be2a0b subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6dc7215 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e4bbb1 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe6eb25f9 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xe6ee07ef usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f07433 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xe6f8d4b7 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xe7035ce5 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe708c0ab of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0xe71b687c led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xe72e1602 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe7523878 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe78b83c1 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7b53782 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe7b6cbeb tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe7be1fac ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xe7ea45ee usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80c93cc gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83f0251 spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0xe8494e19 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85023c4 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8658c21 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8ea06db tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xe8ebb22e fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe8f53fe6 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xe9099df1 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xe93d2f4f ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94bab7c dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xe94f11b5 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe9829cd8 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xe98d5f97 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xe9999fba crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xe99b7241 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9fd15b7 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xe9fd71c5 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea3b799b pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xea3cf025 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43b52a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xea5578f5 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xeaad2f55 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xead00771 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xeada5fcb mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeae9d36f xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xeaec319d iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0xeafb3e98 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xeb038c85 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xeb2a2900 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xeb32758c sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xeb41c32d nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb7d6323 copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeba64cfa regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xebb1cbe0 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xebc436d1 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec04f359 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2e93fe wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xec5503f0 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xec6255e4 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec72421a crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xec7f2503 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xec87f8fd ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xec9aa307 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xeca0de06 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xeca1b60b of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xecafba79 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xecb7859e tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xecbfca26 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xecbfe89b pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xecc8bd49 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xeccd37f0 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xeccf3fad ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xeccfdabd unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xecdb911d crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xecf50a1f unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed20dba1 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xed2d02f3 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xed500d32 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xed58a03d pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xed834ed2 pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xed837650 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xedb0fd11 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xedb28ff2 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xedb7fb15 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xede1838f __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xedec8ae3 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xedfc89e4 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xee0c27f7 unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xee0e41a1 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xee1b36f5 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xee1c0a99 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xee21a3e9 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xee529234 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xee5d412b dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee9b0f86 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xeec46147 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xeecf64bf device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xeedc4a1c scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xeede9529 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeeeaf5af usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xeef84fdd rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xeefded4d netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xeefe9f16 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xef28d5c2 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xef345653 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xef37087f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xef421124 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xef5be473 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xef6a9a2b of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef6d8c50 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xef75a223 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8d1a4e clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xef98d786 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb588b7 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xefcd4cd0 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xefe3042c crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xf01bd20b rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf027863c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0339740 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0xf035e875 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xf039a7c3 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0614fde tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07d90f9 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xf08e50f5 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf0c97ae6 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xf0e6b4bc pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1030960 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xf10a3ad7 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xf12a42c4 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xf1390e89 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1658738 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xf170d768 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf1806e94 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xf181b5d6 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1902ed7 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d1c176 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xf1d40374 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xf1ea2cdb regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xf1ec71f6 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf20d898e clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21e5fb6 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0xf25f32be ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27c5164 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xf2803832 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xf2891fd6 ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0xf29fede6 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xf2ab2533 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2c2fc28 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xf2c8d83c ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf2cca946 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf2f8bdd2 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2ffe53e tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf343a0e3 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xf3536025 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf356e384 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xf3571659 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xf35cbfb3 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf364fa77 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3b4518d device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b51f65 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d4be17 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0xf3e73168 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf3eda569 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40d3cf1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf41e8077 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf429f0a1 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xf4594703 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf45c0d1e rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf4910815 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a4afa4 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf4aee965 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xf4c3d708 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51ae8c8 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55d843c mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xf56d598c usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf585044b i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a78fe0 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf5b1eb16 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf5baff6b ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5bd7c15 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xf5c77d1b subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xf5f85b5d device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xf617c55b cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xf617d1be regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf639582e __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xf66545dd use_mm +EXPORT_SYMBOL_GPL vmlinux 0xf68892de tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xf6b49688 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cb95a7 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xf6ddb8fd msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf706ef08 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf75ad6a1 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xf76dd6fc ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7c81af7 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xf7cae417 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xf7cc1d7f trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xf7d8b98f regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xf7f0505d skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834d17c blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf841de18 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf86e8508 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf872feac con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf8a1010e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xf8b34cd5 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xf8d74026 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf8e29ba9 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8e72ae1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f732ba usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90b8a2c bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9345f14 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf966a17f of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf9697983 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xf986b311 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99b6a76 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xf99cad38 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b2f1d0 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xf9c31d20 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ca7248 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfa01f9a2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa3574a7 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfa5b487d mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xfa6f9948 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfa7081d4 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9436ca usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfaba227b crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfb09283d wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfb2a5ce2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb44a7a1 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0xfb4a697c spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xfb4f372e kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb59f67d __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xfb5adc8f irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xfb61bab9 put_device +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7f90b9 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xfba79597 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfbbc72c7 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc8d5e7 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfbf9254b kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0xfbfc6356 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfbfe2b6c blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xfbfeb189 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0c14ef devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc2a311d regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xfc3facff spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0xfc4fd2a7 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xfc62b707 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xfc633e36 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xfc6520d2 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfc6ad99b regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xfc7caee2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfc904e39 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcb0a4af rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xfcd9a720 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xfce88667 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xfce9835e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcf0360b stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd0898d3 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfd15a85d vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfd2cf0e6 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xfd2f6645 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xfd37ee76 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0xfd3d9061 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd695d51 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfdc378e6 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfdca7106 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xfddae948 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfe043e65 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe508507 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeaa60de shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfec55110 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed3ae9a of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0c3adc anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff199818 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xff496f54 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xff5188ba arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff8b1b97 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xff9f1292 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffcdac9c dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xffd5925a iommu_detach_group --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/powerpc/powerpc64-smp.modules @@ -0,0 +1,4346 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airport +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amd8111_edac +amd8131_edac +amdgpu +amd-rng +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bsr +bt3c_cs +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cpufreq_spudemand +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxl +cxlflash +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mdio +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hvcs +hvcserver +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pasemi +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ibmpowernv +ib_mthca +ibmveth +ibmvfc +ibmvnic +ibmvscsi +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_powernv +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-hv +kvm-pr +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-powernv +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nx-compress +nx-compress-powernv +nx-compress-pseries +nx-crypto +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opal-prd +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pasemi_edac +pasemi_nand +pasemi-rng +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powernv_flash +powernv-rng +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps3disk +ps3flash +ps3_gelic +ps3-lpm +ps3rom +ps3stor_lib +ps3vram +pseries_energy +pseries-rng +psmouse +psnap +pt +ptp +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +sctp +sctp_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd_ps3 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spufs +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teles_cs +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uninorth-agp +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vfio +vfio_iommu_spapr_tce +vfio-pci +vfio_spapr_eeh +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmx-crypto +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_ad7417_sensor +windfarm_core +windfarm_cpufreq_clamp +windfarm_fcu_controls +windfarm_lm75_sensor +windfarm_lm87_sensor +windfarm_max6690_sensor +windfarm_pid +windfarm_pm112 +windfarm_pm121 +windfarm_pm72 +windfarm_pm81 +windfarm_pm91 +windfarm_rm31 +windfarm_smu_controls +windfarm_smu_sat +windfarm_smu_sensors +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/ppc64el/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/ppc64el/generic @@ -0,0 +1,17300 @@ +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xfda0c959 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x653f68c9 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xe23c778b bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x34d6492f pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x363d539e pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x37b03260 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x40754b13 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4f1797c4 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x57783692 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x62900415 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x6a1170f8 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x83129712 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xa334857c pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbea44e9b pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xde56d52e pi_release +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xbe12dac3 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x033561b1 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78ef3a71 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xbe73e728 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2aa1f4f ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf28e4412 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x640ac132 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8be92599 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa4fadf85 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd1cbfc57 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x39bc95b1 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xc1f40a89 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xf49b2995 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x848eebe4 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f7ff59d dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb756836e dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeb1aa0d9 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf040a0c0 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf765a742 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x6c57bfb2 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a8359e2 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1125f4bc fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1338f738 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x29c7f523 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2c808c1b fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3173373e fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3e003ffc fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b684393 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x59fcc95d fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x63a63ffd fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6d67935d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7686aeeb fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x80bec6e0 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x893cd979 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x89e64570 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8e4da5b6 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x92b17f7e fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8224016 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb1cd4ce5 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc56ba8a0 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcae10618 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcf290201 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd2cd4761 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd76f9675 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb9affce fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfcf7271b fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/fmc/fmc 0x1f598564 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x2088bb7c fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x218d84df fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x34af6a11 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x58079a99 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x5a0b20c5 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5f86950c fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x6691a923 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x6a072d88 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x859e4f0f fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xaea0cca4 fmc_device_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x003b5731 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x008df277 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x017a86f7 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01c7ef01 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f9cf6c drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x028b1d93 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03621cb5 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03dfc6c5 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05571856 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0655fba8 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06f4b850 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x083930ee drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a126430 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cc3ac0b drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e7f9433 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117d8b7c drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11eb9f4a drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c7b581 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1351637a drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13b55a09 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14cc4998 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14d3dedd drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1662b7cc drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a6796a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19fcfac5 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af90aa6 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c72dc13 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d535299 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e4db951 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e635a33 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x211ac315 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21ba785b drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2220d783 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2331e0c3 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x237c808e drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23fecacd drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24925b1c drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24f3a57b drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2822a243 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28308603 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29d53aee drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b6fa80f drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c37b03c drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d9ccbef drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e0687f2 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ffaf992 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31275875 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3188eaf5 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31edc81a drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3216c533 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33458616 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33d8d2cc drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34168f90 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3803d2d3 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bc2b6bc drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3beca252 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c09e6cd drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e743570 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f1b5b43 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe44a3a drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe86848 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x401fd8af drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40a16028 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40a5cd90 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40ed4daf drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c2a0fd drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42f7d0db drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43d3ef53 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46dd9c8d drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x476c2a6c drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4984d7e8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a6be1b7 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cb64215 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d1bea5c drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d4c8361 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f00b978 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x513090af drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52ba9a34 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5479fb98 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5556effa drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56bb54de drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5760d8f6 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x579fd456 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c3ef6c drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b54109f drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c4c2123 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e711f20 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x603a658c drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62f5f3e1 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63429f81 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64106896 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6581ffab drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x659e855f drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65c3402b drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66ad7d55 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66f09575 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x689a8643 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69597a2e drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69a7da44 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a2bd0d7 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b8860c7 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ba7ceb3 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c6d9864 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c852e74 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d449eda drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e1719de drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f5de86c drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71215495 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x727478a6 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72c7292e drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73334eb1 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x738a282e drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74391c77 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7442620b drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7603144a drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76718c82 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76c3316b drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76eb0a9e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x788a5c5c drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7af32f9e drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b53eb6a drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b81d433 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bbcc000 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dc867ed drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f0c1170 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fc97725 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fd61be9 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x804e03d3 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x806b3f3b drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80894090 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81563fd1 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a775c1 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a90aa0 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84020fc1 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x859b6d92 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85c54376 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8661193b drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x866e8009 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86b4ab81 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x898ec73b drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a748b08 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c9812a4 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dbd576c drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e0d4052 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91e97e55 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92f168d7 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x930587ef drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f82b0a drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96624640 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x966713dc drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98454557 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99618bd2 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c45a8d3 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f217fa3 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11fb91c drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa32f07dd drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa43aaeb5 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ee2199 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5f64dfb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6204fdd drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa62611ac drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6e187d6 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa71fec63 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa74fc312 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa763c145 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa76c5731 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa82b2e69 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa88d52f6 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa961718c drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad36e50 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad53eeb drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabbea1b7 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac241277 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac252357 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad544ea0 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadd888a0 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaeed5514 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf53f547 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf6f75a9 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd2415a drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0530a91 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb07d1919 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0d43350 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1db91b8 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb204270c drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2c341a5 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6890a80 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9654a65 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb993bbed drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb874d13 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc367f97 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc9d82db drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbded95ef drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe4b73d2 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe75194b drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeab94ff drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf0784c8 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfa7958b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd4376b drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0a6fd3a drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1a4e6f8 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1a7d96f drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc20a92bb drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc264d630 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3ac9451 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc47e934d drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc480e1ac drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5fc5644 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc63ac0f4 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc80d2f7a drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc82e767f drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8902b32 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc94f6d91 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1dd3eb drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbc20d73 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce09db56 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfc18a6f drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd103c164 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1b96d89 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd24c0fdd drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ec5d28 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5693efb drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a4bee9 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6aee917 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9008b25 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a7622d drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9aca2f5 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9bd6a3c drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdafef08a drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb501796 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb8fc41b drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc0ee459 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc8cab66 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdb7d23 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcf99d45 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd44aa7b drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf314d75 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3b5437 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0352783 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0e3bec6 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe37a7f3c drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a191be drm_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe40cc960 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4185fae drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe55ed037 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe76f8b53 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe799cc60 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9271d9f drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe97819a3 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9f70f88 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb0e1b73 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebf43f8b drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xece3104b drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed684aaa drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed739017 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef92daa5 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf027f5ba drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0cb6e54 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf29c4ef7 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f5d9f8 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf40d9080 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4edf0cb drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5521179 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5fec11d drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf60f0ce8 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf657eaaa drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7011a47 drm_atomic_clean_old_fb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8aa6290 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8cee227 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf93e0f43 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb2d5827 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd00e20 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd0877d3 drm_vblank_no_hw_counter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfef46ad0 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff2eefe4 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff3f0269 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0160f416 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01d20667 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0645dbcd drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0666c7f7 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08577e13 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0aa5213d drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0aa551fa drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ae109d8 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c4600a9 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e9d3ada drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f2586fe drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11e80a99 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16902db6 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x191845a2 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x194f1d5d drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a0a1fec drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bfa5743 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f957009 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ff0c00c drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x220fac68 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28e31d39 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x297fdffc drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a75884c drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c688879 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30485f01 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x316046b3 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3575d100 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x368bea6a drm_kms_helper_poll_enable_locked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x381c3d6c drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3aca5321 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d69c890 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40982a10 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41af1fb4 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x430f79d1 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48fb94fa drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49d73241 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cc59046 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ec8bf5e drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fe81f01 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52c4ed1e drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54a124ef drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55cbf497 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56409d6b drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6092d01f drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x636f5024 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6422ff1e drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x645a83e7 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64707268 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66eb9c5d drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x689401e0 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6db985c8 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f88c75a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78d8cbb5 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79a6369c drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79ef4b2c drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7bff2887 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c77acc1 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d6f9a25 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81617ca8 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x821faf3e drm_fb_helper_unlink_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83f57656 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x868c5678 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87fe7867 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88d7a352 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8935ab9a drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c56979a drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x901a5622 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90d94170 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92ab1d48 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9995dc92 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c73fe99 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d8d0e5f drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa022b724 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa357d843 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa35e6a93 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3bcc6be drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa40a90f4 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4b0619a drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa703bc28 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9feacc6 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa1e97ef drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaabaca2e drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaeeba316 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0bc8d5c drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb13b421f drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1816fd7 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2a69020 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb631b48a drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6336b19 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9b2bb4b drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcd90b94 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd3a8acc drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbddd6f7f __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe3c147b drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbea40e4a drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc00ba155 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc39f71e8 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7d69f82 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8bc885f drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd3ee7ad drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfa52c4d drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0b6bb50 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2759e40 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd609064c drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda7274ea drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf961522 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3f53e97 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe74adecf drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4beb5b drm_fb_helper_release_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec585e2a drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed18074b drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed739994 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedc2bfc9 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedf76e74 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0192b36 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf43f6939 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf60ecfaf drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf66bf1fd drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9120252 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf97b526c drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9960091 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9f3e2ae drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfab21c8b drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb1b8eda drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c45e43d ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d582aa8 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0dcbdbac ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x196efcd5 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cbc9ffc ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x260d374e ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29f76362 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32db885e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x357064f1 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3948fb03 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x418a8788 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49a579f3 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x508385e9 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50f496f0 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d1df792 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65c609c0 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c2a3370 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d2168d4 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72a41749 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x768f0379 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x77139e7c ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78aabef4 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79d39dfc ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79e85497 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dd7dfb9 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7e82e24c ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90b4b069 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9252ca70 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96d2f94f ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97313770 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e980769 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f6ab96c ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fddb1de ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9feb7429 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa408162c ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4358148 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabac9c60 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4244453 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4819e25 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb761b0a6 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb99b3761 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc6260c7 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbce635a3 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0541f9f ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4bc2c5d ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcedf423e ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe06c3304 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5c5ecce ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec353d9e ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec7d7b6e ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0fdba75 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2396cde ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf76b4d94 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9c15cc8 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa9b6be9 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x2ec6c149 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x341fa17b i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x66f535bb i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0b852323 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xbd5dd56c i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x066fee98 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0659fd8b mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2189339b mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x285c745f mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2bf366e0 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x32bb8585 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4056ad08 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x47fddd05 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b875963 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5be70de9 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x82d1d798 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e960e2b mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa3fb4930 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xabca2ed1 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc078f063 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdbd975f2 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf4587e7c mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x660d75c1 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xafc09890 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x1f8a7151 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xa96946dd iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x38c42bd1 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x9e467bc5 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xaf4068eb iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xfba30051 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3323c769 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7062a301 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xaefb7d77 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb16f2844 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xcbb6a312 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe0111518 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4b86fbf5 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x9546028b hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa4fbe4fe hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf87431b0 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x14af9db4 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x211d9f2c ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x22ef9df6 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x4594fe53 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8142892e ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x9b68725d ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xaac3b29c ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbe2c338f ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc77b421f ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc83cdb28 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xeda2fd8f ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xfe9360e2 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x70d7c8fc ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7529a686 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb20ab173 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd76b5f00 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf46cd7d9 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x296836ba ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x344f7702 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x392c777d ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0799197c st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0dd86596 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0ece9fe8 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x12a6c576 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1fef35f0 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3ff3653a st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4e7d27ef st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x653560ea st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x78174926 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x970f9c42 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x98004ebd st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd3f404a3 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd5002492 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe5860b56 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeb0274d1 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfd0f378b st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x57c4dcec st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x92465723 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xa10adc43 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3d62c2f4 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xdde5777a st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x42b825bc adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x4c76884c adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0931309b iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x17718e43 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x1fdd93bb iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x206ae35e iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x28987535 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x30c81c97 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x445230b0 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x61ff25ae iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x62b82b7c iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x69d8c4dc iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x79879042 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x80fca9aa iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x81dbe688 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa5ab5870 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xca29ab04 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xdaae164f iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xfbe5d340 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x2cc31fc4 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x9d042743 iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x2b27b0e7 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xf45821a5 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x42dc5667 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf55f5e03 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xfc14fd3f st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa3bfd564 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa41049f4 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb8840111 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xce000a71 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x071cff16 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0909ab07 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d077ae5 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x11b8ce46 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x19fb5005 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x272a9421 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x33157647 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x435c9898 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x481dde8c ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x49023a25 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x511298c4 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6bc4a411 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x762f76e1 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8850f3fe ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8d5d53d5 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xab78a1e1 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xab8a5a61 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xec3fc4bf ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00227e25 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04d00676 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05bbd5c3 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06bde364 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x072f5d4c ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a28cba7 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b7e4c1d ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1084435e ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1339568d ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1af97336 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e20de63 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e7f0450 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20f1d56b ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22c27137 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23128299 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2890eccf ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b51a648 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e16534e ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e7ebbff ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3bf83739 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4416bfcc ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48da058b ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48df992c ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dcdf9e9 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ea43b4d ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fe610d2 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51f2a83d ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5214745c ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x53ea55d3 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x584cded9 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b3e908b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5befc93f ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e833cea ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bbd9443 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6fe00591 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73a80739 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c4b9f4c ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cd4d2e6 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d2d0d26 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80bfe67c ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x833fda23 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8450e075 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x867c8554 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8de66816 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x908d5f03 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9366302f ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e6a04c7 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa44d35eb ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa85b2daf ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa88af26b ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac8b3fe8 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad19cf6c ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad8c0064 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb272afbd ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3962f4b ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb75260a0 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb753fe4 ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb82eac1 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd42749f ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd7d6df4 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd827125 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd9c4021 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc870f5c3 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce7a9e5c ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfaab722 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0ba2c18 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd45ad18b ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5a643ce ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd824144a ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdecd7d72 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf624d94 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe18d93d7 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe28a759c ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3182def ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4b22a23 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8e4e76f ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8e51e3f ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee71494f ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeeecedf7 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf01c3008 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb13d76d ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd4d269f ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe6bdb87 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x02183852 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x142f1d5c ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1651a8fc ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c6f092f ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x30c0a50d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8ab0c576 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa4d167b7 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc87cc6ff ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc9cb83ba ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe83d28fd ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe9b17b1c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xeff31c77 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfc1d08e4 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x18ccb74a ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1ba3f1e7 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3c00434f ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4b52b48b ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5e4c5d62 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x86781159 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa77ff672 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd41f4ad2 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe86d0d85 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8e29d3da ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd10fd874 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1ff43f84 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3a7dcb23 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3f194cb0 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3f39cd55 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4eff1a41 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5515b3c5 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9b0ee319 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xac6f8c14 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xadcaa36d iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbe97fe93 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc4e27a4a iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd25164dc iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe0580337 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe4af282d iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xff975c51 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x421c7a13 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x43efcc9c rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b3ea935 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x519457b3 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c6404f0 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x72d387ed rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7999c97b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7fd8fb7c rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85a9b184 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x863ef297 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x994de5ee rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa44e6fef rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa8c797c0 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb49c014e rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcccbfeb6 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd41f90b3 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd85538b3 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd864863a rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xda5c08d8 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe8dfb33b rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xee0d7603 rdma_leave_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x119991c3 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x13aefd39 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x369a5889 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5555155b __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x61160a10 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa4c7b1c0 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb4d2c3c8 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc4019185 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd0fbefe gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x1ff9cb57 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x78fb19bd input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7ff53bae input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa9c083c9 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf609e663 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x6a614737 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x115f92e1 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x8ffaf24c ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xdac287c0 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x37d2ed3c cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0fb0bac6 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x12209bc4 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x37d5b104 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4da53730 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8b76cfc7 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb11970a9 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x78bda450 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc2aa341f ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1ca8c9ef capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x49e10107 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a60eea8 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x624254de detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7b249f82 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x85cba003 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xafcbece9 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbc79773d capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc22804eb capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xca5e829d attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1aaff503 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2bc332eb b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x48ef7dd2 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x49576eeb b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b421589 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7918463d b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x86fe0d6d avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97ba4e25 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xac0a1218 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb1ee4a0b b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb546e493 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc74a715f avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd7da2f15 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdee598ea b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe1135503 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x246b381e t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3733e429 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3ea66bf4 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9993f091 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xba425ff6 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc9e35880 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd0e88c9b b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe63dc1a1 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf372a8fa b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x01296925 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x43531db4 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8bc13f4d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb2dce18a mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x26d02245 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa512b18e mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xc7586c77 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x02edd614 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x67c7b70c isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x69223d80 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x88be98a7 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x98b66588 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1d3aa843 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc118f8de isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd3db6202 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06782156 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06c3521a mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x146a869b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1608c5bc mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17c908b0 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x324d85fa recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3e4b7975 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4d0c2f25 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50b3373f recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x632e921c recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6cc9b077 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f46027e mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x80baa3dd mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x90d1768f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5d4494b mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce1face8 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd05b5240 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd533cfa0 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5ccc549 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe77aa99e recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xee271659 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf021d402 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf7a4a246 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x431eb3b3 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x47225eb7 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6d808c2a closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7730d209 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x5f3443d6 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x71035380 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x849c5984 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xab6c5bdc dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x15e48333 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1661fc04 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1c3be113 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x58df48be dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6ee0bbe2 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe90ffcb2 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x58db4538 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x070815e8 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1dcc4c83 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x216acf0e flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x50a6057d flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x50feb6ac flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x529453fc flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x74070e7c flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x812329f7 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaee6f38a flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd23014e6 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdda4b338 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe22a6760 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeaa51c82 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1c11ddba cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f641a0b cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x534cf13a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc41a379f cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xd4052bdd cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa1d80970 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa43ebbd4 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x02bea8f3 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c6d01f dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d4aa7a1 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1edf00c8 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x243bf9aa dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2a6b2676 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2c2a340e dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ff909cf dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x36ed36d6 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3956351d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ae6e4ba dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c6efc22 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x63bc9fea dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8ff958ea dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x99988b81 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9a8aa3db dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9d755b5c dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xacde2ec8 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb2c87a45 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc33a9ed8 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xce1e9700 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd511d185 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdd26e4db dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0075263 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe3d4d1b9 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe57d927c dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef8e4805 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf6a201ae dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x61840c36 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x95944753 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xf8865008 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x254d6ed5 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x42c7a3eb au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x47667c46 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6da03831 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8f94404b au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9f5734e1 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb6b4b089 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc40e0b55 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe9da6208 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x72c832c1 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x40ebfb01 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x9d5d17ba cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xe620539c cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x52c4db66 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x3db35d99 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x3ed721e0 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xb4784108 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x61651613 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x963046dc cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xef57efa8 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xc3ca3e7f cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x45ba7cad cxd2841er_attach_t +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xaff91619 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xbdab2501 cxd2841er_attach_c +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x01a8a343 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4167a530 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7627dd77 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x853607fd dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc6dda13e dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x10b5f6c0 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x135f81f9 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1fa37cd0 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x23a98e0e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x46e259db dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5643b2aa dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x58002c02 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x88a5416b dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9182c007 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9c4877a7 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0757039 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb9d6f8be dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbb13ed90 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd3a04d75 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd8c6bcdc dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xeef3413d dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x04dd63cb dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1b8907e9 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4eaf0d67 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5be9ef76 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x608af3c7 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6a34065a dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x04023a14 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8404e5c8 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xbf292279 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xea2f87ae dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xee6f2c81 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7e92a382 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4315390f dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4cc89e1c dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4d5c65c8 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8f8daa75 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe19da0a7 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x1cd5473c drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x838d759a drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb5f03623 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xaabb9d46 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xb9add493 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x4c5f6270 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0xad066e2a horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x8d99f4e0 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x91e608ed isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x2d9e73c9 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x3388ad1d itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x1bd48a4e ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xde9dfe7d l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x4511d39b lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xa8972a35 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x96fc3f3f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xd5c04956 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xac714d96 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xe2ac1931 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe6661edc lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf48ab27c lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xad3c39a0 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x0015baa1 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x91969b6e m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x1bf8ad66 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xcf6a30b6 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x3850ade9 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x9cfab58a mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x966e08b3 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x0acd4223 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x87b3f2b9 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xb113b216 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x8d1cedc7 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xd9e84224 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x2a53da5b s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x8d73b670 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf8b190c7 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x630fe30a s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xfc924ffc si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x59773143 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x47414c5b sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x14f48e9a sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xe767611d stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x3d4917ff stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x2e721354 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x6b94083b stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x76ea2ec3 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x58dbf066 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xac80e814 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xafd9d00e stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x83d3104b stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x2b5dff0a stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x6010bfcb stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x5afed4fe stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xd0b9c8c0 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x31988ae1 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x8295364d tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4834966d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x7c213e05 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x9534e0dd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x7c21ec51 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xf0e717e6 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x4d4d3c9c tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xee660f8b tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xea0005cd ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xf6838a3e tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xa1a695e5 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x39a96d1e ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xc77e746e zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xba13acc8 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xd3922a4a zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1f4a39a7 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x281345a8 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x36c47190 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7239bb6c flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x961425cd flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb2836686 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd35a50de flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x30ef33ed bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x90df4413 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa4c5545e bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd25206f4 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x069431e1 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf84dba4d bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xfdb0da2f bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x00179143 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0d613ac4 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x16935352 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7bfe0d8b dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7f6af1de write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8c35ceba dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xaa63f65f dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb466032b dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe62f669b rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x8579e137 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x017058c2 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8b015fcf cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xca74edd3 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcbf47806 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdf9af6be cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6226fe28 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x16a0b012 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x2994bdea cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9f31e97b cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc6fdeb7f cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdc017271 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe01059ba cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe84f986b cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x58136fd3 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe46d45da vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0c893671 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x210c6816 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x77034c35 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf5aca69a cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x42a59fdb cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7010b834 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x84233178 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x863e760b cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa2a2a13d cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc5981b2e cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcf8044b6 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x08d2e414 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x11b62af7 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x19d9ca85 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4f2617b8 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5ed76524 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x60751a2f cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x648d4afe cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6f66fa9a cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x715357f5 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x852698ca cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8bac439f cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9258224e cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x92a1903f cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c0544ec cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xac88662c cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbb6361aa cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc202774b cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc906136 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf9474ef4 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xff8ae7bf cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0f6431ff ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1a67b6f7 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x60335b67 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x719a3c2f ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x80ff1614 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8ca540ec ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9a8c807c ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9e3cb94c ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaeb4793b ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb152dfce ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd65bafbe ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd68a4671 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xda3be3ab ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdb5839fe ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe7bfeea4 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2259532 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf3c582d4 ivtv_api +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14dbeac1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x38574bc5 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4ef7d24b saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x58663cfe saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7afa9bee saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xaf7f632a saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xaf915e93 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc2fe1b7a saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe916e96a saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xea9f3cde saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf8433e19 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfb22e2ac saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x65100174 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x28ecdc49 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x59ffc7ae soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x883095a3 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8a78320e soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb8b6b76b soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd61f8b46 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xde9bd871 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x33548e52 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x497a4549 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x89361d7d snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8b20edf0 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa6f57462 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb1638457 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xdde2ca81 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x05d78f8d lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x16b259b9 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x297306b2 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3c909a22 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x549b9ca4 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9db640b4 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xac7a719d lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdb77024f lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x43809159 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x5d5ceb77 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x130f16eb fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc22b67f3 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0af57874 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x53c24222 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa3a3f4c2 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xf128acfa max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x97f4451c mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xa94e6c9f mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x9106dbba mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x67b4c543 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xda06e826 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x1e1bc669 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xf135a752 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x46d54572 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x16e98475 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x50574a1e xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x37cd7b60 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x8ed8a232 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x13b775a1 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x48bffbb0 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x612190d2 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7ae74fd0 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x978d182e dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9dbb314f dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb40b9c4e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb5b14e3b dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd02cac16 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6aeef3e4 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6e61e6a9 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8211a0e0 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x837444c2 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9bc10592 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc5465d2c usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd8c5bbb6 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x10118f3e af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1dab9877 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x266de35d dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x372d3b06 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3a66358b dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x50e17e44 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5322a6db dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x63674f75 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7a243ce8 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe013ee9e dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xed7bab76 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf43e64de dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x826ab2a8 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xee0ffcb6 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0e2cd317 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2d5bf386 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5d7df481 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x67cd936c go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x82096553 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb029e3f5 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd7ee166e go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf1e738b6 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfc0ec7db go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0bc8f396 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x20cb0731 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x465c944c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4bd567ba gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5d42d4e1 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x62eacfce gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6ba4bb09 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6e1c601a gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1e906e60 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x4119b33a tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8796d326 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x97f94279 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xbc3e43b3 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x76eee423 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x80db2707 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8f9ea4be v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x36492c64 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4cfa51d8 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5bb31aa3 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6534fe54 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb07d1cf6 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc3e49629 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x5930c9e2 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x8813179b vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0b1f1632 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x527f45d7 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6b896e49 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa013fc50 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xcf1e3e1b vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe3c2ea9f vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0x52e96379 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-memops 0xab31d65a vb2_create_framevec +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-v4l2 0x467879df vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01bd4e90 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0750335a v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b2ba6b6 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e719928 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10711549 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1de93372 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2523c598 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x274a47d6 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2876c759 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28a30f10 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31d7545f __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x338848e5 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e0eddab v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45c41586 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4731e4b7 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x489dd432 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c9528af v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f7eeff8 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x538bb3da v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54262d0f v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x56111419 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5731f830 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x57d857b4 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58afbcbe video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x60228214 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x60553a39 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6316169b v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e11f9b1 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e1e2b33 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7034ab84 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73cea899 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77e308a6 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79367cc0 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d36d6ff v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7eff4485 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f10a5d4 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f11fca9 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c913054 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x924014a5 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x968fa75e v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9eee29c2 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa373180c v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa581300c __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa5da4a44 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9c0f6ac v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9ea5b0d v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaee0bb2d v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb34ff165 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb60ef427 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba7d249b v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba957ce2 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcc88c79 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbec82e28 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc08e5f3e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc32d33ac v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc535cb5e v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7b35a23 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcdb0e942 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce08626c v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcebe4bad video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd11074cb video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdaa23a13 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3a55e75 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7001964 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe700248b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea4b4936 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf03513ed video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1d3964e v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf23f29c0 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8c387b0 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf95c0381 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfffe2d48 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xffffbab3 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00de0ba7 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3c79eeb2 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x56eed7ad memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5863b6b5 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x67ac46cc memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x79205427 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb9a473b2 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc9f4443d memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcb0298fe memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdb27a7f5 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe00ddcdf memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf6fc2bb9 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x007ae750 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x01e24ed2 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x045b0fc5 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0ac9ac08 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x11187128 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x298051ac mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f395436 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46aae8c6 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4dcb9031 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x57ba0e39 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5ae4089f mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6214ba47 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7628747b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7ae8804f mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x850486a6 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9582ea1a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e814839 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa150fb12 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa91e80a9 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadff9f2a mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae78ca2f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaef7e06f mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaf41b5f8 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb596c7bb mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4f9b68b mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xccb34d6e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd5fc016c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdcca4154 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe24891ea mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0059692b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x063886de mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x10815f5a mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12558e3e mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x21996b81 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x21de501a mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x23f57e96 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x373ebc9b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x47d1346c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a0f09f1 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4f8c05a2 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5853664e mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5e44a0ee mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x68c4af54 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x703176a9 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa182bd64 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa55022e0 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaca9b0a9 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbfae5d3b mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdbe359a3 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe2231774 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf63dc488 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf860eb3c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfaaabdcf mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfbc3edce mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc4c1b52 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfce8d3e3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/mfd/dln2 0x21fe743f dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x266579b4 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x75b067bb dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7bad784e pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x844ed8fd pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x14fdbe7b mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x27d33c25 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7e6ab35e mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x891484fc mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8a8117c8 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa0ae4284 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa5742b5c mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xae1911b2 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc65c0d8a mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd03ddb9d mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfd5e921c mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x1e27de15 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xb3c59d22 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x71fde1af wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x8d6a30c6 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xdca5581b wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xee9fe382 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xcb81c58a ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xde9fd3d5 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x30b3ae49 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x587fbb40 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xa76870a0 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x4c3aa11f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x879bd576 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x073abff2 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x0a950a4c tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x605caa18 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x616e7a6b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x67bc5447 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x681d1b35 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x6886b9f7 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7530fa04 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x9746ff19 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc7ac3730 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xcdca9d8e tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xee02fc76 tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x7b1d4d9a mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xa4b67f69 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xbd41f691 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x42d6102c cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x451ea727 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5238d683 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x546d5a15 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa858cac2 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc803ec71 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xecba03ca cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x18350ae5 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa070e38a map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xc0e2a652 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd35c93dd do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x4b2f66b7 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x752eaafc lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x84ed7469 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x5c6a2460 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xdc1ff743 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xb4a31416 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xd38408a7 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x28715c4a nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x29d57c67 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x80cd1a59 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb469b402 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbac93c00 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf1f1bb67 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x1c18b2c5 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x1cd5f0d0 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x1fefae01 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x4fa0e682 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xaa71d317 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x06c04c81 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xee844d55 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xee9647c1 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfa723b02 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x03929353 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x20151479 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2473074c arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5152fd53 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6f01c064 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x91e613f4 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9a0d7ad3 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb0056723 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd442ca44 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf84facaa alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xc11f280a com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf00766a3 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf9865346 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2bfe4c2d ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3766ab42 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3af89194 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4982179c ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x51336483 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5a1c383b ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x60cda4bb NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa804594c ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc920fa9f ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfa04aeaf ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x16636f13 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xac4e18d6 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b3a5e86 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5a733817 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ab08849 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5d600df3 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x633ceb5f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x91bac456 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x993efa50 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa256e4fa cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa4443eed cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb96c9a94 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbca9b2d3 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc85bc82a cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcffd81fb t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd817f5e1 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdef5e0f2 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf67b9499 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x089eb7c4 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2334ce91 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2397cf7e cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28d2943c cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2e013be4 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x308fd163 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x34b1a345 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x37577921 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x479757f9 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x47a02b62 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x492116fb cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4fe36f73 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x537c7503 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x551ab1e5 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x574d24f2 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66f06625 cxgb4_tp_smt_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6d248ae2 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7163c4ec cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x723ed6ca cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f5162a5 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8734f980 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93ed0367 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0687115 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4b942ba cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcae5573b cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd8fb6d82 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeab6b890 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec828b37 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed1099cc cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xee4f733d cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef30c82c cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf16912dc cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf3aebe70 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf90512af cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb2d19d5 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x806bed00 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x98f80a09 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa3611915 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xbbebb135 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe11402e0 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xee0739a0 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x65ddd170 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xda419b66 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04d15431 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e6aa079 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21fb4ceb mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a0af439 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a247159 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f9fb2bd mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f324520 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x421dd7f1 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47511277 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4887dc6f mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5744d3a5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x642bcd9c mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x644bb1ff mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x665a247d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ea74f81 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71fd66c1 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9371604d mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97f0b8f8 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9863e6d8 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0489b32 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb090fb1b mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb26f5157 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3d41df8 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc7f23fd mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcaecfb08 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd31afaa mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce8445ca mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf6ed198 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6284079 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd696ae74 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb84d870 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdbfececa set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3c69faa mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe40efe3c mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7abc1a7 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb383579 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf99cd35a mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbc32cd5 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x012d204d mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x062f5ba1 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17963622 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18715cb7 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26068e69 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27777f8a mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2793c952 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2810f59c mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2898d778 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c6d4e47 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40b39e56 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4377fd7b mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46d216d4 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49be10b7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5282fd3c mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55737269 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55b5b01a mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57c25e7d mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b76c2a8 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71fa7d92 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x770b78dd mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fe05bf9 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7a284cd mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaab2793a mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac7179c2 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb38514be mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6526685 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb85515e2 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9761d9c mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9cb043e mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd85902f mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd569b227 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd4fdb61 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe80e1965 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeaab279a mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xedf0e768 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb835df2 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xffe2f96f mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x13948b0a mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d07a992 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x576a8fda mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x674f3b1f mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa53b80ec mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd3c05cc9 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9fe5ad1 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdf74df65 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4074e8af qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa209d1af qed_get_protocol_version +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3bf5fa36 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5713666a hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe4844f6f hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe96f1c63 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe9d7b000 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x04d1957d sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2c6275b3 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2dc9826d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x60df130f sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6285cb96 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x664edda8 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa6d3457c sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb064b894 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe1a038f0 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf65687ce sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x000efc6a mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x2d487701 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x6e4e38b6 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x844f54ba mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xab5ada79 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xc841ca11 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xec468fd4 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xec96f532 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x67f6c58b free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xe4a446e8 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x523afa7d vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2fbe845f register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf215512e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf5cbb2ee pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x8c298d89 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x19a2857c team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x40147a56 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x67ee6d88 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x685dc655 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x9922aaae team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xb265730f team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xd4d5d4c6 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xdc210701 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb66fc1d0 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbc0f7551 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xed91faaf cdc_parse_cdc_header +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf6ff76de usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3b33a2c4 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4c6e6f86 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5f108a2d hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6f5fca39 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7544d66f unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x793f2644 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x98cf6a63 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc12a66df unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe8cfc61e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf7f8dce2 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfe7de188 hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x67e5661f i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x1a4cfe51 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x31b73a9e init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x6e6397c1 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x014ef829 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1b2ae1f4 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x29d9f8d3 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x741d23de ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7a7d02d3 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x829dcd4a ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xac5dcbd9 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc7f491d8 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcba2d6db ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xce1dc5cf ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd1299881 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xde12154f dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x25b051a6 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2955abf0 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57802871 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x59afae20 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x65ccfde8 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6a65a484 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7149ea88 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x72a3dc46 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x73a09e7a ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7dde7d9a ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7fa0eb1d ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x829058d5 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x975314d6 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb337de01 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbd763638 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3237af85 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3b90c3dc ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x43b1d333 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x47a58fbc ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x75625878 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x88be88de ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd629c7a3 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe7e11c03 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf10cede8 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfa05f4eb ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfad70fb9 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x05b80757 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06f1c42b ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f3d5317 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x19eee9bb ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x226a4d17 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x37a01bdb ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3f52c0d8 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x46cf272c ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x497a7a6f ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4f9eab03 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59bc5f33 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x939b147b ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d02590d ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa8adfe38 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xabfc025b ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb12d561a ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe34daad ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc7da3dc5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xce8271c2 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xda28162b ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdcd5efaa ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe06f13c4 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xec61ab63 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01c54f02 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d70115a ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0dfb06e3 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e0eb4ae ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f7556bf ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x10d1131b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x151b5c43 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15f5b40c ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e0ce672 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x292c4d92 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29694d4a ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x320f1574 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x333bae17 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35ec45e6 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36477556 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37506379 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39853e43 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b3e66f5 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3efad36a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f505114 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x408120d3 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x410d0fe1 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42149f21 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44689520 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x457ba35d ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d9cb5b9 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51629406 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x541c6934 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x544aa032 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5594d65d ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57e26bc7 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58a1b9a1 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58c55828 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59785419 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a482c8c ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5dd9702f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e88a9c7 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5eb1a249 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f05ecc0 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64ef0d2b ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6679a258 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69c95d58 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6af8dc19 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b50e324 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6da58a94 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7407cc68 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a1b6df8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b582396 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fbe2134 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8402b49f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8629a254 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a30a32a ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8acd2838 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d84c9cd ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e330f28 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fcfd7b0 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90293466 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90934350 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90ca7045 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x952314d8 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98c0e50e ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99239800 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b5f773c ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c390c6e ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee30f52 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0386995 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3c6cdd5 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3d3318b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5e432c7 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b6db05 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b987f0 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa880df0c ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8aecd36 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0feceda ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb15b66f6 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4b2d92b ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb584812b ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb70296e5 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8ca2d30 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd774f3a ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbeb3c4d2 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc98c7929 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb4a2733 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc5fa560 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce1ad240 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcee42863 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0e889de ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd26be9df ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd336070e ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde24b4ce ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf1f33aa ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfc95f59 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2b96d97 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe64568da ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed2b893b ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef333a8f ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1132e08 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3fe7268 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c6117c ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf51743f4 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5c901ac ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6a9e1b7 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfaede050 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe45c48d ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x63f6bfe4 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6d079d57 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb86418cf atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x020d41d8 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0cffcd61 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3333068c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x35b7ae09 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x79cb3a5a brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x971654dc brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb70a7e63 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd559c1dd brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd669e128 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdb8aa8e6 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdf9400b7 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe4e3e2bb brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xeda18dec brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x069f53da hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x174d6865 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3d9e8bfb hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x526912d9 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55d34f74 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x565d7b21 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5b04eff3 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5e36500b hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x65f10f2a hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x66a324c8 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x684537df hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d36ed14 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x719638a5 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x76a1f3d1 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x79c55bd4 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7f35f2d9 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9ac02bc9 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc822c6af hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd0f5d9c9 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd267b075 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xddd030c0 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeabeb799 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xebddca0e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xed7341e0 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfb6e39b8 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x02ec7c48 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x110ce9be libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21732a1f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2a434449 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x33c6737b libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3b61d2ce libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d26718c free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f101cce libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f1ef961 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4294d946 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62622be1 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x715e3ab2 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x77970107 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d9baca4 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8f2b08f8 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92b46217 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x96d6fb65 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa614eed0 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcc7cf797 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe2fda66e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xea854f08 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x005fea27 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01eb2a4a il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0206ef8a il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x049709c1 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06413fbd il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09fec786 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0dea58be il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x105cadf6 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x116b3c9a il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12def937 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14865b2f il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1548cbaf il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a6033df il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b70b3f4 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e8d4d35 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23854ab2 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2699d091 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b59f34b il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c08e007 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a0bcef7 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44131674 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4440b79f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a944ebf il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cf6fab9 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50cb015f il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5226b4f6 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54629c48 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5500543d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5652972b il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x566f29b5 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56e6b08a il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x586ca69a _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5991dc04 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a88d2e8 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ad7e35c il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c633769 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5daa85d1 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5edfd695 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f5412a0 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63baaf72 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6493fbb3 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64c2f033 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x660c30ab il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6886f90c il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bc44ff9 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d683caf il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6edaaa8b il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ffe8ce0 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72496eb3 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x766f28d2 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7861048c il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x794ea64e il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a2bca1d il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80981065 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x813bc448 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81a68972 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89ae8a9d il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ccd84c9 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99ebeab4 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fc15c66 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa181c3c7 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4cc0a34 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa586c149 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa62339d5 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa65c0859 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa661e14d il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa859a837 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa90773ca il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac2d561a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadf2af9f il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaedc7067 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb143323a il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1bef280 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb604371d il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb770aa6d il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd2df87e il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc033bef3 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc098b076 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6220122 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc794015c il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7c4e871 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc856b63c il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca7c3a26 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcac5b4f3 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb11c48c il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc601c1a il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7cc7f27 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcb4dfa2 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd584e10 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe046d8fb il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0b35f9e il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe57e75ef il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9e13237 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb5e0e32 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0e2ee56 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2946395 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4d26347 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb85a2ad il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1b06ce78 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2447a6ab __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x314a20a8 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9c24ff __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ab242 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a1b1df9 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xdced6db1 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0213c975 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x157ddd97 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x17f960c3 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2649f0f2 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x278f32b8 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x296f334c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x45d9e7ff orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x573c740f __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6fe88275 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x85a64537 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x927e3aa8 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc9c685a8 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd361811c orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xda43828c orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdc229c4d free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf0aea5dd orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x6432f26c rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0e1d81e7 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x120e0f46 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x137bc48e rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x17803428 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x220a367d rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x238a9aef rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x25daa587 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x27c58a9a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c32c475 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x392d46e5 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4312d042 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x46c423df rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4765640e _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x496b6a98 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4ad203b8 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x59e5c811 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x59f6c79d _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x65087974 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x68008918 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x774bc764 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7e9dac7e rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7ff2bbd1 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x872f74b3 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x89fa0781 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8e2810f9 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x947cd005 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa45f949c _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa93d2c7d rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xad9311e4 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3790385 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc79f8057 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd0d2023f rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd2f20339 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd363052b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe81bc232 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeeda44a0 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf6849723 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf96988f7 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfda66574 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfdc46cc4 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfeed2671 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x6789e934 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x6d99f6c1 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb1ada5b5 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xe96a9f07 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x0a82e5b3 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4854685a rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4d4de1a8 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xb55edf31 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x063fc43a rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x08ea3bc9 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0e4b22c3 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0fa18fbb rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1060e28f rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1f7b4ce2 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2da5e0cf rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x329c4184 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x33e7cab9 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4f2c6a2c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4fe17dcc rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5839e704 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6417afa6 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x78569d69 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x875c95ad rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x919f6a3d efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa64baf5c efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa7957148 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xab9285c9 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xad962353 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2d3d0c5 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb86a5de8 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc2c792bb rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc5936144 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xda93328d rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdd062018 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe995d47b rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xefe41ae7 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf5cfdc26 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfe0778d0 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5dee777a wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9f8feb1b wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa46f6df5 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xdf76a8ac wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x671af4ae fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x9a78a306 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xa9918817 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x78582d86 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xa37e3ca5 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x6fdd1b5a nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x83083c96 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc2b340d7 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x087ba5e2 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x5890f3eb pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x55e18a77 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x7db3bebb s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xb1a1c8ad s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1d2d046e st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x24968ffd st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x61298b23 st_nci_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6c2df628 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7489d8ea ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7fe6e8eb st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x87722ced ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xafb46f95 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb2ef2b22 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd3ead065 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd6c601fb st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x00ba656e st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x025b3043 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1546d800 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x15d549c4 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x18db976b st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1fefda99 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2dc997cb st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4c857acc st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4f29242b st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5c344cd8 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9026d49a st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x94d04bbe st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x95328be0 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x964ce448 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9777cc95 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb42acd09 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcdb68c0c st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdf300bce st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x0e957e9f ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x5ca16796 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x72d6dec6 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x7765ee51 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xa164e84b ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xbf2433fc ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xde73980f __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xe86337ad ntb_clear_ctx +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x2b4f40e4 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x690ddacd nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0xb3012c04 devm_nvmem_cell_put +EXPORT_SYMBOL drivers/parport/parport 0x13b10cb1 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x23f330d4 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x320c31d2 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x35060f16 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x380a23e8 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x470136a1 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x541e9b19 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x544cb78b parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x566ad080 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5ab7dc70 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6318668e parport_release +EXPORT_SYMBOL drivers/parport/parport 0x6a14c75c parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6f01a659 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x7ac6a56b parport_write +EXPORT_SYMBOL drivers/parport/parport 0x7c54982d __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x81cd48bc parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x89dc5cd0 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8d828859 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x9ac3f168 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xa8fa1e7e parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xabc54ed9 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xb28b9a32 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb6af88ca parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd5280ad0 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xe26c03fd parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xe337feac parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xe710bea8 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xeb66fd22 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xedd75c5f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xeeaf3e9d parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xf0ec6b5c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xf66fff7c parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport_pc 0x660e7501 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x773c3bd7 parport_pc_probe_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x14d16537 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1b76bd79 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2389f12e rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5b9c0b3f rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x747340e0 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7c68a085 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8592640d rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x86ffc07c rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa117d44c rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xdaed6369 rproc_get_by_phandle +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x7a2f01be ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x43f378d3 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xa62c6b77 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xce67e45d scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe17b1486 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2fa4ee61 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4c79de76 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5aea082f fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6c2fa5e6 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7c0186e9 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7ee24d63 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7f090a61 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x826a28d9 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x92940769 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdf859467 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xed6b1e28 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfb02fa12 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x079f4c1e fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08aa44e4 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08f183c3 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d6c81ae fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x107140f6 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x156a6e0e fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1669ef6c fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2688fb1b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2758c0bf fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35624342 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x378feb66 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x49259684 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e07f607 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f6bb25b fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55a10f58 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f4cb977 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64299033 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a5e2b15 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b821c9d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dc83bdc _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dfc7c88 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x723a1787 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7bd8f1ff fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85fce9c7 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87b9c21b fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8988662a fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91604786 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ca428ac fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa219001b fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7605565 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad506003 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaeb487ca fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf9a5b2b fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb03fa1cb fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6deab4e fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdbf262c fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe410fca fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5fe48ce fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0e07170 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdbecb1f0 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfb8aace fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1da1474 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf7059424 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb238b6b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe4ee6dc fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x37c53069 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x73c6c9f1 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x833b46e7 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb92b416b sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xbc643849 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19ab1eda osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25ee74e2 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c6343ab osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d215457 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x40b03b13 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x40df92ea osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x431df4dd osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55a300c8 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x610196ac osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62ad7fe3 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6727cf3a osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f16f3a5 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8567783c osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x861f9d78 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x888f3c19 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d209303 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ee36345 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9482bcbd osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b5881b8 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c908b51 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f6adf84 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xae99c351 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf9536ff osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb09f0225 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb108cbdf osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb709fc35 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb80c3b30 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbc4520bd osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc1ab3c16 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd15b70e7 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd3a28a20 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd920f3e0 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd9f448a7 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda86a5d6 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xef453d47 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf710885f osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x08434c56 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x176458fa osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x33e7981a osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x462f7f80 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x70b2345e osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdb82fb18 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x13ad7eb8 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43154007 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x542c7cde qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x65a383a9 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6d6df8fb qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x79d9c664 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8453aa44 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa85e3701 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa8fd5d0a qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe1859510 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe68916b9 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfe79a869 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/raid_class 0x0e3f9cba raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x5351c95c raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xd5dd1ad3 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x049870db fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1bab3cab fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2c30771e scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x39395767 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5ab09b98 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x67557ef1 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x98106dba fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa2f510b3 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa79e4eae fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb5848d48 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6636443 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf01228c1 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfbaa32dc scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02afc5bc sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x035ae913 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04efa90d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1704fc5e sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x18632be7 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2865353b scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46b8e3d4 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4dd590f4 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x593f79a6 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d828c1c sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79ced83f sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x830c5176 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8db68573 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x90f5ed78 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x99bc3526 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb067ace5 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb61492de sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbf579a03 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd24b7110 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5ba00fe sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5fe53b6 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd6892f8c sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd8f3ecb0 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd909c6ac sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda8bbd5f sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdca1e53d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe0a9f2ec sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe4a237d6 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4f9579f4 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc9ec7100 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xcabbafbe spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd2b4f97b spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe0f9e0f5 spi_release_transport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x29bf217b ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2b18aae5 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x34b9cfc6 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3e284295 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8bc7f16c ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe8e01093 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfc7e925c ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x0693e8d6 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x12a248ed ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x2c0f736c ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x3502a286 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x3a9e5ac9 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x4278c52f ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x430b97a3 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7b78fa9a __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8ab7a14b ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x8d15181e ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x95284788 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb2d061df ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xb8e24622 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbb4f3618 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd447af1b ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe101f2df ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xe23a8fe1 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe6d9e975 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xe7f6bf23 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xfe5f9e5d ssb_set_devtypedata +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0d649059 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2275f5e5 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x27adc701 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2a63d903 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2b4bd0d7 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x56fd7cbe fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5731270c fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5b609002 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6dea85bc fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7d5b6d3e fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x819001a7 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x910741ec fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9a492b04 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa0f7ed4e fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaa19d2fe fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xad4d26b0 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb1595bfb fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb1a62ade fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb38eb999 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd31724c3 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd7c148a2 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe7856e04 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeee256d6 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf2ade6b0 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x09b2af08 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xe6ffff8a fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x841d67bf adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5ab80d6f hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x68ff34d2 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa3dc3af4 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xb216c45d hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x05532bdb ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb69efec5 ade7854_remove +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xfa35b5af cxd2099_attach +EXPORT_SYMBOL drivers/staging/most/aim-network/aim_network 0x78f91ec3 most_deliver_netinfo +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00534136 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00fb5f0b alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0aa3a3a9 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x122b1d65 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cf62d84 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d235fbe rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1eb48b36 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22209d11 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2274e9cc free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2668c410 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2be65ece rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31de907d rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x320b2c5c HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3319bae1 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3592e084 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d2be276 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x43b7020c rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47675740 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b6b4e16 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f09ea37 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x611195a1 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6b7ee8b4 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6d3523bf rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70553c95 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7643f3ef rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7df2a78f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d9fa153 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f30485d rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94d64c72 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x95752eb5 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x95fccef9 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a25a1da rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fcb883c rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ffe54dc rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa0b71caa rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa34e3a1b rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb46a6df5 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb5ac2023 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc41f2333 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4e76f27 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd055adf8 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdea8fbcd RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdff2f2e7 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe224a615 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7f377a0 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8b9b38a rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf2da4f1e rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3d0c2fa rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf89511ad rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfda1e077 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06c392e3 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0da95a64 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15133ec3 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1750366a ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x178426bc ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19a68c57 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c98a408 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x273b051a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2eab2daa ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35d62f03 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c938127 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44ad6edf ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x46d70d00 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d63a5e7 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x512ec771 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x547cfd62 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x571fec0d ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x595dbf38 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d58b1ae ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x620ab86d Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b984ef3 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6befce96 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71055d4e ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75cd2443 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x841a68f8 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x880bf497 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88afbf77 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9629dacf ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0ef751f ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa53b3c90 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6ed3c46 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabdd082d ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf5abd99 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb19880c9 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb24ca9ca Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb5ac691f ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc47b74fb ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc653ae3d ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd012184d ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd56e6f01 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe19fff35 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4866d19 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe9a72f43 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec5512b3 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0c3806b IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1adbb66 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf26f3802 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf978a293 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfb3d3a88 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc6f8f67 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd4c4b45 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfde49797 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe721967 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02ea29d8 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1074db79 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1741a229 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x18636e72 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1bc840a8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25c7e60b iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x32562258 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x32d8562a iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x35426b8f iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3c1fb46b iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3eb6b25a iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x43d77c0e iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x45d4a5c5 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c36d8d5 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c8eba3c iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4db7c686 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6745e821 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6a03aeae iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x766bee96 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9845c639 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa43fbf36 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc162c62f iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb1b00b0 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd7868f22 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe18241a6 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe8bc3b6e iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf4b29c2d iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfff0cb5a iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/target_core_mod 0x026d2d2a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x08b6ba29 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b2d55ea target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c10b537 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x12d6af64 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a4fd500 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x20a051dd core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x247c7bcf target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x26f7a6c9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x2812fa08 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ade9fdc transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x2bee2e18 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e31f033 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x31ccc3c3 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x371e63a0 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a918092 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e60fc20 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x41f9b076 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x43b166cd transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x45769331 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x473aaa73 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x4962c5e1 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x4996dd3c target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ad04f8e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c7e2224 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d1e125e core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x50eaec4e transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x534101d0 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x53ef8d5b target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x54cee133 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x56c1928d target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x584080a9 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b8bc173 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x61ae63e7 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x63349da1 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x642ca0fc transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6985c692 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a6df237 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c984cd5 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x70994d2e core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x71045f72 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x757fa766 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e68851f passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ed0c470 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x823bc168 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x9118a3a3 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x99d10dce core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ceabf05 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0cbc261 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1b3344c spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8a726bf sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xa98ac403 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb12d4781 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb59c5d7e target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe9445d8 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7b443db sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xcaea80b9 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xceff0ba9 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd79fd293 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd86ebc5 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdea4dcc2 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf14e2dfe transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa161c39 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe32e26a transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x678c8092 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x69ac8bd7 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd5579275 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x36a7ce38 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x43f82d9b usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x486cef7c usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x59405ac7 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8d94f7f4 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x90308c89 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaa3e024e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaae9c719 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcb1e4a28 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd5b307be usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd86f7f06 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdab11cf7 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x84880557 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x9c791500 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2c8f2743 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe4d0c970 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe5e89518 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf4475b3f lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x057d5686 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x3526423e svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x734ccf52 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xabe20ccb svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xadd824df svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc1c5993d svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe3ee383a svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xfa5fc950 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xd08836e3 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xa513bc19 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x3c08d1b7 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4e586646 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xcf65c029 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xdd5c17f1 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x97079717 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xa77f0f53 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcecf90c4 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe7ebb3c8 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x0c456180 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xbff631c4 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x11d84aed matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa62a68fd matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf0d1b8ef matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf8211ee2 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x41e7c6b6 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xbc2781dc matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x3dfacaea matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x541f91ad matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5bd04467 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd471de75 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe4a73474 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x0a8fd716 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x206d631c w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x894c923b w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa285411a w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc2a61f0d w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x02878f56 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x42bbc795 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x96af0e15 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xeccf10e3 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x10e490e3 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xbe8aa562 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xd44e4604 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xdd96c06d w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x2150f2cc config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x2548a521 configfs_unregister_default_group +EXPORT_SYMBOL fs/configfs/configfs 0x25d64670 configfs_unregister_group +EXPORT_SYMBOL fs/configfs/configfs 0x287fcaf8 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3e1115ba config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x5b205054 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x66f59801 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x787902ad configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9378579b configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x95504277 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb286d5ce configfs_register_default_group +EXPORT_SYMBOL fs/configfs/configfs 0xc238d989 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xcce48c6f config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xe98d5ff2 configfs_register_group +EXPORT_SYMBOL fs/configfs/configfs 0xff85eb94 configfs_register_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x003a54b2 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x16004c35 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5556cd6a ore_write +EXPORT_SYMBOL fs/exofs/libore 0x8bb90f1c ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x8f02d4f7 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc6dec0c3 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd750ded3 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xdba755ba ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xe727c206 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xff9f2852 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x000abb4b fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x00290b4d fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x0a50e110 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x0ab521ae fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x0e7e0ebc __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x1d05abe3 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x1dcd5a54 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x35230ad9 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x352852d8 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x3af4456c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x43ad067c __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4904c751 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x4c90dc7a fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x516fb9bb fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x5bbc5d09 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x615db23a fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x71b5df03 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x73790d67 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x74581053 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x91cc8a64 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x97e21832 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9a24cb2c __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9dd31c1a fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x9e0bb16b fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x9e82cfc3 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xa00437f2 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa16d9ece __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xa2e5e568 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xa5e41459 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb85a1ff9 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xbb9b49c7 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xc50cbcaa __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc87f32e3 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xd169bddf __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd7624a93 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe78ad1da fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xef837375 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xf512e36a fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xf8929c65 __fscache_register_netfs +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x262fefa0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3cd6dc03 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x480e5e08 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa54c7273 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfc89b03a qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x004711f0 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x023a7814 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0xefc78e77 raid6_empty_zero_page +EXPORT_SYMBOL net/6lowpan/6lowpan 0x227374b3 lowpan_netdev_setup +EXPORT_SYMBOL net/6lowpan/6lowpan 0x322c58bc lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x7e86a2cc lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0xa2ade61c register_8022_client +EXPORT_SYMBOL net/802/p8022 0xe88d2c9a unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x90a09d8a destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xbe63a73f make_8023_client +EXPORT_SYMBOL net/802/psnap 0x267f2466 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x2d5e04b3 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x01fe05e1 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x03885b08 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x09cd7625 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x0fa0e7a6 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x18585400 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x18719883 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x1c4cf77b p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x2e7415bd p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x326649b7 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37183477 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x3a1e113a p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3da28c53 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x3f9f459e p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x433990ea p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x531b890c p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x61067a36 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x658db0fe p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x6d99355c p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6de47847 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x6dec0cb7 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x6eee8033 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x70e42934 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x74a30254 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x7d3a65f0 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x87f73ff5 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x8c799b6f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x8c99a5cd p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x98bdb86f p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xabf190c4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xb3a0cb6f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xb4942b1c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc6d4dfd9 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xcc7be006 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd8e79267 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe17124f5 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xe55bdcd5 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe74f764d p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xf414d79b p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd23d304 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x440b865b atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x556a7f2f aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x63be00b2 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xbbbddad9 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x50894f7b vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x53e1c519 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x5b4dae01 atm_charge +EXPORT_SYMBOL net/atm/atm 0x772234d5 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x8e648a90 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x9213b049 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x945665cb atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9874eaf9 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa2951cf0 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc0e63877 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xc9887ae5 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcc82e7ee register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe8d4fb3e vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x5070bbcd ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x628e1fbc ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x756511c9 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x99fa7fab ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xca24837c ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xda821a75 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xedd114f1 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xef1fbd49 ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00c0da47 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04cd7fb5 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06328573 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x10935824 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ca252f7 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e9b122b bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27c3550b __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c7f7438 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x320277de bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3822f31e hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b8f9510 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4102676f hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44f609e5 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50efdf5f hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5107b2d9 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d24d55c l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62342965 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x64e4dcaf bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6553532c hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6afbbc2c hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e0b1eb6 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73c05e22 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x744a663e bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d1e76d1 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7e4894ec hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8479cdcd hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x880d0954 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3e64993 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae23fe48 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0539dd6 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6e2d448 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb96dbeac l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd9e3be9 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc9441470 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd327e192 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3dcc29c hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4c979c7 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6da9f7f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xea2cb27b hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee83bb06 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf112da85 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf92cbace hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf9c3120d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bridge/bridge 0xb666142a br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x348af0a6 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5d6256d3 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6e370bd2 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4ea05b3a caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x85e906fe caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x97262538 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xca40e6c0 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xff1ec009 caif_connect_client +EXPORT_SYMBOL net/can/can 0x4602f26a can_send +EXPORT_SYMBOL net/can/can 0x4fb3a7c0 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x73bbfd1d can_proto_unregister +EXPORT_SYMBOL net/can/can 0xaba5484c can_rx_register +EXPORT_SYMBOL net/can/can 0xac24c4df can_ioctl +EXPORT_SYMBOL net/can/can 0xe0a2440c can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0303f237 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x045a6224 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x06444c6a ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x073e9971 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x08aefae3 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x095d3199 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x0abc6c3c ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x0d16fff9 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x0d42a1f0 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x0e365c8c ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x13353ee9 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x1842a0c1 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x184c64c5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x1894699a ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x195517e4 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x207f5b4a osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2b2655a9 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x2c963dd0 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x2e1701b6 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x2fa7c78e __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x34d2f3aa osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x36c4b412 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3da3a97b ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x42deafb5 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x441aa509 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x479c9f22 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x47c13747 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4990e230 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x4cf1164a ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x53623ddd osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x547a682a ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x563dd880 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x572d49cc ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5b706e40 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5ba94455 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x612247ae ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x621c8408 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6442a287 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x67803546 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b76d533 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x6bd42ab2 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x6f6134a3 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x6fcb0ef1 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x77eb358c ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x78baf678 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x79ea0d2b osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x7ed4fd75 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7f615127 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x7fa3ee10 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x88f552b5 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x8cb8ce7f osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8ce61c28 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9e1db06c ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1511105 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa1b15a3c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xa7ade921 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xa7e8b59f ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xad395d85 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xad3b2ec8 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb1008600 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xb194779e ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xb2708274 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb58e4e16 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbbd50d26 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xc1651b80 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc93b7945 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbc01038 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xcece2f2e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xcfc1d339 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd1b12921 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd7576291 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd7f726d2 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdc4c4b3d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xe0c2a79b ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe6fe0ff6 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xe781eb53 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe786e61c ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xec3244eb ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xf353e6d9 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf3afa30e ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xf50d3d49 ceph_osdc_sync +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x3f4b1716 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa4482fcd dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x24733289 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2c96a4b0 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6b27f140 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7777442f wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x82635d77 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8950f558 wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x3106aeb4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x6747b9d8 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x9287ab9a gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd0750778 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x16294e81 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x59f64234 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x773f2fbd ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa1af6ff4 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xcb0f8078 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xed6586b9 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x14021d71 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5d49da87 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xde8dc7d4 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3837eca6 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7a5d8c10 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x95c6dcbe ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x1ebe55b9 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xb94290cd xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x8754e52f udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x03fabd5f ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8d08249d ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc5346d90 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe5fdf896 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0f2b2916 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x901d0dfe ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc435a429 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x329e114c xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x52409673 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1766c491 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe7dea33c xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x14b1edbd ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3c2f3333 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6d212c93 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x75c0e52d ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb3b4a66a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbd8d4c9d ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf304adf9 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf3bab554 ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x084dea12 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x0ab821cd alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x0ec62c41 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x10e931c4 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x1da5c6f2 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2c479d5b irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x32568db2 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x35f00b5b irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x3667bf03 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x39f5f9a7 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x71e1d805 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x82fb9cc9 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x86b5eaf4 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x8c770f87 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x90ce0da2 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa40f753f irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xafbb3f68 iriap_close +EXPORT_SYMBOL net/irda/irda 0xb2621864 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xb3cb5cae irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb5d919b5 irlap_close +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbd496cdd irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xea1061fe irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf02e8810 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf6f436f2 irlap_open +EXPORT_SYMBOL net/irda/irda 0xf9f5da87 iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x8f0a742e l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x2346edc8 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x4017c23f lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x5c315a32 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x61758a6d lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x89a45f08 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x8f8de1f5 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x92c35967 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9fa23e85 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x1c029a59 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x1cce88b5 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x2eb9cdba llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x347033a8 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6628ea07 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x971fad2a llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xf11de3da llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x06aa2e7f ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0f38742e ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x1090aff0 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x13d7c1db ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1bd16e3f ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x1cced07c ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x1cdc69ea ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1d1dafa8 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x20b43589 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x20d87198 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2850fe57 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2863f3cb __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x2ad37779 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x31ecef48 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x322cb925 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x36137fa6 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x364ed58f ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x38e975f6 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3b08eb74 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x3f8c9823 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41c7ea3c ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x435600cc ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4653122a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4dd1e585 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x51232977 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5219487f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x536339cd ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x555a23a2 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x572e4404 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5761b980 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x5b5ddc48 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x5ca999cf ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x5e2940fc ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x60514edf ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x6259095b __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x65a7d92b ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x6830d352 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x721c7b2c ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7646698f ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7bfff740 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x86eeaf5d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x896bc6e2 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x89b9ee30 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x8d0a7ee5 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8d2ff8a8 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x9589fb6e ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x96c93281 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9cd67730 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9d066a8b ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x9feee741 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9ffe6b08 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xa4441bb3 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xa86d891c __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xaa9a4fe3 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xad08f275 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xb788d56e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xb82ea9e6 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb9b6cd3d ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xbb44d189 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xbc1c00cf ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbcdf7f4a ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xbd75cc01 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xbd96f4fe ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xbf878b34 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0xc3e82350 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xca9bf20d ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xd3a61ef8 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xd4a1b2d5 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xda040472 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xdd8a4853 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe07e394e ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xe262aa28 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xe556424c ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xeaa451d8 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xebe47bdc ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf47350fa ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf8046cd6 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xfbe3e147 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac802154/mac802154 0x011b227c ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x1280eae3 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x520649ab ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x9c6a453c ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xaaaa59ff ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xb416cf79 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc6c243e2 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xd8df5e7e ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x194d2e43 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x36d0a97e ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3e71c87f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x40c26e3f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5d4bc100 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5e98886d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b1fca3e register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x73a34be6 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7c6aeb33 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9f0ac737 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xadd74403 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc9a7100d register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xceaf0beb unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf08e5d8 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x771e3d5b __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x97d12de0 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xeb93e107 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x71294e5b __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x87e708a4 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x8e7b3615 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x9cc8d432 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa49e64f0 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xbac49fb5 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x093b732f xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x1415dbb4 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x1473f16a xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x51656660 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x7c6198ec xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb10e138b xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xbbc164a1 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xdc0100c5 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xe9293b02 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xeb84829e xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x0385b2e6 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x0b35b084 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x118aa893 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x185f1c5e nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x2745b380 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2cbbcf33 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x32cfb3a2 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x480e74ae nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x54cd473e nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x6ae5b43c nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x6c626a5b nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x77618c77 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x8b782432 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x8c9de40c nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x9886e2ea nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa3187c73 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xa75a5d8e nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb6945b27 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbcdac5b9 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xbf636a7c nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xfa7df70b nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/nci/nci 0x025221cb nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x056696b8 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x139148b1 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x15c123f9 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x34bafc6d nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x36810cbe nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x3d87f50c nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x558105f8 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x70fd186c nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x73c23699 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x782479d2 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7bb0402e nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x925cdd80 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x92c37b66 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x93cfd7eb nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa224cda2 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xa7ca5b13 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xaac1fd33 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xb9bd797c nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbdd8e6a8 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xcb2635c4 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xcbd1690b nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd74cc423 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xebf454cb nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xedf3be39 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf4a269de nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xf5740bf7 nci_get_conn_info_by_id +EXPORT_SYMBOL net/nfc/nci/nci 0xfc33bc92 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nfc 0x03aecbf9 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x0c6ff52b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x1752208e nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x23873128 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x267ae2bc nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x2d575523 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x33e04fd1 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x34d121b0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x4f4e5d84 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x59fbf3d1 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5bfa1eb6 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x65e5b46d nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x797a81fc nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7cdc1518 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x8339e2d7 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x926c2c0d nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x970c598e nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x97b91cc9 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x9dc07e86 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xc4db6970 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc72c25d3 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xc8587946 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd953731c nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xedc25821 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x35643446 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x4a9b38c9 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x654653cf nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x73baad56 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x0247bf62 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x4ef6dd16 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x86604b72 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x874ff58d pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xb7c4a297 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xbb5bb38a phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xce183f18 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xe470ac93 pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x071e1c1c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0f5dfccd rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1551735b rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x34f7a4d5 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x373ec9d3 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3d5013f1 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x724c764c rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7c447c9a rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8525439d rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8ab66ff1 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa1d9b5de rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb8d48048 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc40fdc13 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd551872b rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf96c08e4 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/sctp/sctp 0x80765601 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x116289f0 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x272ef9f8 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x7031b3c9 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x141d4327 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x699acac0 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x950ea0df svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0bb0c052 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x1c146611 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x05b79678 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x0629cd3d cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x066d702f wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x07d9607c cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0bc0acb8 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0cfe5df8 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x0ea4b920 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x0eba46a2 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x10ba3331 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x16635fd8 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x185e4ad1 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1b0aa188 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1b986af1 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x1fdc6a4f cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2a0ff245 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x2b050279 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x31cd2b29 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x36702fb3 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3986481e cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3c1d61d1 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3dad6387 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3de4acb6 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f6e614c cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x44e973bf ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x4593b2fd cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x483fc0cc cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c011ed0 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4df054a5 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x4ffc2b60 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5037a9ec cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x530aca04 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x575f3e56 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x57b2bc52 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x66e6e0e8 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x699c8d34 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d49dc3d cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x72ae45e0 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x758ad7f5 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7882cfa9 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7e9c7681 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8014945c wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x8410fc60 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85b0b253 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8f949b7c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x97436515 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9cf2431a regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xa1114ed2 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa8f26212 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xac175295 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xbb479c0e cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xbd2f5eaf __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbe2d986d cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xbeb5607b cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc1beaa37 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6de65d9 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xca5b362e cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xca8b1d4e __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xcd04b8a9 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xcfe6523f ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xd006dcff cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd080c0c4 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xd2380eea cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd33f2ed0 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd7de1e7e cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd8f9bde6 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xd9a2c431 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xde538b55 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xe500328a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe5efa7fb cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xe65f1222 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe6702d2c ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xeb573bf5 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xee601dec cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf0ab1a23 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf0ebce18 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf13dfc2e cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xf21a0fa5 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xf2c7bad2 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xf6ca6833 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf940c821 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xfd34715b cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x3756a225 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x78ccf2df lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x98ffc0d8 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9f8b6637 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xac33b70a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc0e80bee lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xf61f2043 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5cf5b837 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x735f4e90 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x99be44df snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa8187a6e snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xeadd8c04 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xdb34f6d0 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xf94fefaa snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00f8e158 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x04aa00f2 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x04f72ac9 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x10afbfa6 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x14a126b8 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x15875344 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1ee35528 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x23b1d77c snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x24d4f5ad snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x28c6f80a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2d110750 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x39f46ba0 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x438b88f5 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x44020b6c snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x4531cf40 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4883757d snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a4db220 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x4d1ef611 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x54331a0b snd_register_device +EXPORT_SYMBOL sound/core/snd 0x58801301 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x5c30b154 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x5e5362f7 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x70187f71 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x704f6ed5 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x72223696 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x76c983e5 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x89f314cb snd_cards +EXPORT_SYMBOL sound/core/snd 0x8dc6e9be snd_card_register +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8ecde181 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90e75efb snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x999183b2 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa89cddbe snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xa95294b1 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb7b803e8 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xbaa9c78d snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xbe882ff6 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xc0538c06 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xc2c13456 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xc49532f5 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xd1c124b6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xd4978840 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xd69a57c9 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xe2a9323c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xeb23910b snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xf07990f0 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xf1fbc7a4 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xf4e31abe snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xfbb6e808 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x4bf27b32 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x09a5f430 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x0c44f545 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x0e7ec493 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x11112f8d snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x17b8551e snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x187046ce snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ff1debc snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x2ce33dd9 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2dbf15e9 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3560c48a snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x40a83d93 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x45bdf4c0 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4d3e7d47 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x4ffca2fb snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x541b7bc8 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5ee73bcb snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x62e8b288 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x632078ce snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a206a1 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6d6fe8b4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7533fdc1 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x795cb898 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x880b7a6d snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x88d1e625 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x8c10ec0f snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x9358811b snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9d7ebde3 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x9e3dd205 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xa2cbb49b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xab9ba91b snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xad0abb41 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb1422349 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbecb3b71 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xc2e81ad2 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xc787d64e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd532f8a9 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xd6390453 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xda6b691b snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe6f78361 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xeb25eb1b snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xec11062c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xec4b9571 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xf18ce30b snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xf8446f20 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xf883df8d snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xf8c0ed30 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xffcf4a43 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0059a865 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3d026769 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3ef69a3c snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x44933005 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x49a8a0e9 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54baf75c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5521bcd8 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x62d40676 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x653f0f44 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8860c293 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa8e6b8c8 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xce5775a2 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe35edaee snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeb8bd5fc snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xedfb1692 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf585c487 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9be4c4a snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-timer 0x3f8b6645 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x40317fd0 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x41711473 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x47959762 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x49f3cf54 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x62dc223b snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x8c75f1e8 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x92bd3f45 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x97225b3e snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xa3c82f07 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xafe5984f snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xbe8f1e2c snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xecfe1570 snd_timer_stop +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x8144fb5d snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1c463a22 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x40a5c864 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x74016838 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x87051e72 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaff94e3c snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb03e5d13 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbedd2559 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe85357f6 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe8fed025 snd_opl3_init +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0f18c358 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2a8f3244 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x345df6a5 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3bb4fb63 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4482cf77 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x60695a67 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x614a8a6b snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa948f317 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc62c13a9 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x031d265d cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x08726024 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x10a3424c iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x16801c81 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18c8518f cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1ce4b04c snd_fw_async_midi_port_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x397605ee amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x39ffcf3d cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56d4842b fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5a570d9e amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6564d6c0 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x67caa493 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68ae86f0 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b95f7f5 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7cd62aee cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x884dd793 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d54c360 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x958db16d snd_fw_async_midi_port_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x971f4702 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x99b0348d fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9e15bef7 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa00f88ac cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaecfcbcd iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0e4e60b fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb417a80b amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf776790 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2440ea2 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc517ee72 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc93ba4d amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdd9b9caa amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdf1e9f76 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf02f2e4a fw_iso_resources_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x1a853752 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x5b5f9ae4 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x55a78991 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5edc8c85 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa3c5ee57 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe00d5ae5 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe37125d5 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe8accca1 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xee345926 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xef5745e6 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x877ea5b0 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x94ab50ae snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb028d340 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb3d34a19 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x0932dae9 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x52ebad64 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0f0e4c9b snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1a559dfc snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x23c11844 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x519c05a3 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x948f1453 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf0b4a6b9 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x02c20e0b snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x47aa5748 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4ccadccd snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6b3ed955 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8508b494 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa575431f snd_i2c_probeaddr +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0107a1bc snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1d96f489 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4428b9a2 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x458dc7e9 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x84df9621 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa5cc2aa1 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xad32e146 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xaeefdfd2 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcb0a5e3d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xeb89b57c snd_sbmixer_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x01e7cc80 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2c779594 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x37f888c3 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3faf1a79 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x57f3fe76 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x781a5d28 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8b0c96fd snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9845f97a snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa89cd4f1 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaab0de96 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaff16654 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb3bbbfc4 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc301859f snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc30234d3 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc85f4a80 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xda3a496e snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe2cb50b2 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0b36e4d8 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3070e987 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x96ef6bcc snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa8dea7a9 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb38974a4 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdf8b60e2 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf26862fd snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf32cf57c snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf7f265d8 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x362cc3d8 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x866817d8 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe55319fe snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0c6d0a23 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e317c25 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x29c64df7 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2b5a1ffa oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x371864a0 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3935a8f7 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3f51e001 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44c61926 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x61c5f5c2 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6bb30a38 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7336b64f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x83760c3e oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x87844d2b oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8a403977 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9012c58c oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x93f95dfa oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1e04832 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd7a23880 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe45f986b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe83f003f oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf385b197 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1563e80d snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x77851be7 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7c795192 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xea58a77c snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfe81f5df snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x2b02f318 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x4085d437 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xf9d37b7c snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x2116a3e5 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x2607c412 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x6f9c8218 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9c52a1af register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xc0a9101a sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xe01058fe register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x79181b76 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9429c489 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa9a41e92 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe40aebb7 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf68ef8ae snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfbdc94a4 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x45be6c2c snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8d5dc447 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb637733d snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb6cb491d __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbf7d8f51 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd422988c snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd4556b93 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xeb786004 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x9bc41d9b snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 TOC. +EXPORT_SYMBOL vmlinux 0x002d7b88 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x0038df2c fb_class +EXPORT_SYMBOL vmlinux 0x004413a7 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x004ba2cb tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x004dec63 d_alloc_name +EXPORT_SYMBOL vmlinux 0x006bdc56 alloc_disk +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x007374b9 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x0085e1f1 __do_once_done +EXPORT_SYMBOL vmlinux 0x00aa2103 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x00b2a8fe xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e93139 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0120115f __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x01222bf3 __destroy_inode +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012f091b path_put +EXPORT_SYMBOL vmlinux 0x016ba16d key_unlink +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01726b49 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x0180d96b pcim_iomap +EXPORT_SYMBOL vmlinux 0x0180e627 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x0181e775 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x020950e2 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x0240ff33 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x025ad604 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0268479e crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x0273d74c icmp_send +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029eac74 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c409f5 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02fb72e4 elevator_init +EXPORT_SYMBOL vmlinux 0x030654ee ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x031ea42b tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x03262ced validate_sp +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033bde62 sock_edemux +EXPORT_SYMBOL vmlinux 0x03531dd4 of_translate_address +EXPORT_SYMBOL vmlinux 0x0357361e seq_file_path +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0369cdbd scsi_register_driver +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0387e45c agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x03a992d4 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x03ce1587 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x03ceae7a drop_super +EXPORT_SYMBOL vmlinux 0x03eb903c blk_integrity_register +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0463fe97 param_set_uint +EXPORT_SYMBOL vmlinux 0x0468cf2d rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x046970ec inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x046ff055 lro_flush_all +EXPORT_SYMBOL vmlinux 0x047b3e1e sk_stream_error +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04969e89 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x04d480e7 netif_device_detach +EXPORT_SYMBOL vmlinux 0x04d6a7b0 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x04d9569a tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04ed7b17 km_report +EXPORT_SYMBOL vmlinux 0x04eda397 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x04f44d97 phy_start +EXPORT_SYMBOL vmlinux 0x05086f2c nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x055e1882 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x056daee8 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x056ff34f i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x05799023 kset_unregister +EXPORT_SYMBOL vmlinux 0x059b394b nf_register_hooks +EXPORT_SYMBOL vmlinux 0x059e2efd sk_mc_loop +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05afbb6f eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x05bfff33 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x05cd0cd6 put_tty_driver +EXPORT_SYMBOL vmlinux 0x05d2cc78 pps_event +EXPORT_SYMBOL vmlinux 0x05d9a6a4 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x05f1ddda bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x05f6316c xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061bfb5a register_framebuffer +EXPORT_SYMBOL vmlinux 0x061ed4fc scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x06224294 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0645de42 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x0646dbe1 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x06737103 dcb_getapp +EXPORT_SYMBOL vmlinux 0x067ac8a6 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068ba21a register_quota_format +EXPORT_SYMBOL vmlinux 0x069e722a tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x06aed1fd splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x06d8ec97 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0701a59f ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x0702f477 generic_setlease +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x076583f6 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x07703172 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x079d35ea tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d8e8f7 vme_irq_free +EXPORT_SYMBOL vmlinux 0x07fd980a simple_nosetlease +EXPORT_SYMBOL vmlinux 0x080c518c padata_start +EXPORT_SYMBOL vmlinux 0x081d25fb __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085402a8 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x086b2a65 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x0872ccf4 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x08a5342a down_read +EXPORT_SYMBOL vmlinux 0x08a8358c input_event +EXPORT_SYMBOL vmlinux 0x08ceb47d __scm_destroy +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08fd111f __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x0954bbbc inet_listen +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096f5700 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x0973a105 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x09844ba8 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e0168b devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x09ec54a1 file_update_time +EXPORT_SYMBOL vmlinux 0x09f18a00 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x09f4cdc4 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x0a1dc4ea skb_split +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2d189f __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x0a334257 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a57c295 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x0a60ace2 get_fs_type +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a77d419 tty_lock +EXPORT_SYMBOL vmlinux 0x0a784084 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae20371 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x0aefc845 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x0afd59aa phy_attach +EXPORT_SYMBOL vmlinux 0x0b0378aa xfrm_state_add +EXPORT_SYMBOL vmlinux 0x0b0692b0 tty_port_open +EXPORT_SYMBOL vmlinux 0x0b0a19e1 do_SAK +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b31d60b __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b663dba genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x0b6d2d94 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x0b7103d1 passthru_features_check +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b86148e mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x0b887d50 iterate_mounts +EXPORT_SYMBOL vmlinux 0x0b940031 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x0b9ccdb0 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x0ba7b755 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc5a2f7 fd_install +EXPORT_SYMBOL vmlinux 0x0bd0d2fa dma_sync_wait +EXPORT_SYMBOL vmlinux 0x0bf6726b blk_register_region +EXPORT_SYMBOL vmlinux 0x0bfc8f4e input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c3c423b pci_get_class +EXPORT_SYMBOL vmlinux 0x0c40a3d5 tty_check_change +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c72fa24 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x0c7f0c12 simple_lookup +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cbf5888 lookup_bdev +EXPORT_SYMBOL vmlinux 0x0cc047f5 km_new_mapping +EXPORT_SYMBOL vmlinux 0x0cfde6f0 __vio_register_driver +EXPORT_SYMBOL vmlinux 0x0d0725d4 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x0d43b70d security_task_getsecid +EXPORT_SYMBOL vmlinux 0x0d471898 md_update_sb +EXPORT_SYMBOL vmlinux 0x0d4f1fe8 pci_get_slot +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5ad76b xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x0d607bd3 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d864224 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x0d9ecbe9 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dcc4361 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x0dcfc263 __free_pages +EXPORT_SYMBOL vmlinux 0x0dfba144 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x0e02487c input_unregister_handler +EXPORT_SYMBOL vmlinux 0x0e030c49 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x0e33fbfc file_path +EXPORT_SYMBOL vmlinux 0x0e41582c vfs_rmdir +EXPORT_SYMBOL vmlinux 0x0e5ccb44 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0e60a2bf seq_open +EXPORT_SYMBOL vmlinux 0x0e6d5ea2 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e708249 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eabb31c genlmsg_put +EXPORT_SYMBOL vmlinux 0x0eb4f659 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f2ff727 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x0f3b1603 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4d75bf xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x0f5901ee cap_mmap_file +EXPORT_SYMBOL vmlinux 0x0f599b5e lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x0f59c7dc nobh_write_begin +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6cc4c4 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x0f7906fb scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f7f82c6 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x0f839a0c mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x0f861105 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x0f8d0a8a sk_free +EXPORT_SYMBOL vmlinux 0x0f930cd6 replace_mount_options +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc0788c inet6_getname +EXPORT_SYMBOL vmlinux 0x0fcb3c64 _dev_info +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10b8f449 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x10c225ef cdev_add +EXPORT_SYMBOL vmlinux 0x10da2ef3 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x10e2eddd generic_fillattr +EXPORT_SYMBOL vmlinux 0x10e81147 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10efeae3 pci_pme_active +EXPORT_SYMBOL vmlinux 0x10f77fa0 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x1101c6d9 init_net +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1109b3da mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x112e7767 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x1146f0b8 nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x114c8efd skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1196cf91 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11c40374 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x11e87343 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12065ad4 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12185f6f blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x121e5b9c block_commit_write +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x1273f0f7 da903x_query_status +EXPORT_SYMBOL vmlinux 0x1278e5b4 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b27efb textsearch_register +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f20e68 dev_notice +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13341b57 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x133ba575 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x1375bd7f blkdev_get +EXPORT_SYMBOL vmlinux 0x1381cf4e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x13835568 devm_release_resource +EXPORT_SYMBOL vmlinux 0x13a8bea9 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x13bb545a devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x13ca1739 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14009358 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x141347ca ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x142a31b8 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x143242ae i2c_master_send +EXPORT_SYMBOL vmlinux 0x143fc8e4 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x1443868a try_module_get +EXPORT_SYMBOL vmlinux 0x145829f5 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x14640f22 param_ops_uint +EXPORT_SYMBOL vmlinux 0x147512db input_flush_device +EXPORT_SYMBOL vmlinux 0x1491ff10 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14b11aa9 block_write_begin +EXPORT_SYMBOL vmlinux 0x14c7d67a pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d5ca34 copy_from_iter +EXPORT_SYMBOL vmlinux 0x14dc46fd i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x14ee71da blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x14ef7b80 eth_header_parse +EXPORT_SYMBOL vmlinux 0x14f23eab security_file_permission +EXPORT_SYMBOL vmlinux 0x1506d006 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x157838a0 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x15adc963 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c1c869 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x15c302e1 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15f03369 ip_options_compile +EXPORT_SYMBOL vmlinux 0x15f96555 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x15fe55a6 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x1600c8e1 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x1616fbe7 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x1643b3a6 file_ns_capable +EXPORT_SYMBOL vmlinux 0x16553e82 set_binfmt +EXPORT_SYMBOL vmlinux 0x1657a0e7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1668e902 pci_map_rom +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167ffe4e phy_stop +EXPORT_SYMBOL vmlinux 0x168b4c11 follow_pfn +EXPORT_SYMBOL vmlinux 0x1692034d d_path +EXPORT_SYMBOL vmlinux 0x16aa833a from_kprojid +EXPORT_SYMBOL vmlinux 0x16ba5cff __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x16bd898c arch_free_page +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e4ca2f vme_slave_request +EXPORT_SYMBOL vmlinux 0x170e1e5c disk_stack_limits +EXPORT_SYMBOL vmlinux 0x171efcf8 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x17370b0a mmc_can_erase +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x174c7dbb pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1765190d vme_irq_request +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17ab2d66 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b7a6dd alloc_fcdev +EXPORT_SYMBOL vmlinux 0x17babd58 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x17c0d242 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x17c49d1e iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x17cf9d36 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183b2d59 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18465027 __lock_buffer +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184d5deb vme_master_request +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x1857c6c6 phy_init_eee +EXPORT_SYMBOL vmlinux 0x18594ac9 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x18833aff ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x18885b70 single_open_size +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188f878d unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18c773b6 param_set_charp +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e806cd inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x1956dd3d pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x1962ac23 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x1963fbe5 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x19646831 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x19914c8f skb_insert +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b20b10 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be065b inet6_release +EXPORT_SYMBOL vmlinux 0x19d57c75 udp_ioctl +EXPORT_SYMBOL vmlinux 0x19e74466 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x19eb567e build_skb +EXPORT_SYMBOL vmlinux 0x19f10113 of_get_next_child +EXPORT_SYMBOL vmlinux 0x19faa7eb trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x1a0dd350 led_set_brightness +EXPORT_SYMBOL vmlinux 0x1a19f709 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x1a370971 mmc_get_card +EXPORT_SYMBOL vmlinux 0x1a48bfc7 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x1a6fc781 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x1a983e80 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x1a9ff0b7 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x1ac1258d set_cached_acl +EXPORT_SYMBOL vmlinux 0x1ac21af2 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1adbdcef dev_remove_offload +EXPORT_SYMBOL vmlinux 0x1ae120ad ibmebus_register_driver +EXPORT_SYMBOL vmlinux 0x1ae61999 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x1af05ccd skb_find_text +EXPORT_SYMBOL vmlinux 0x1af160c1 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1544bb rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x1b18ce98 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b1fe6ad nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x1b21648e pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x1b2a926d make_bad_inode +EXPORT_SYMBOL vmlinux 0x1b2c2f34 dquot_resume +EXPORT_SYMBOL vmlinux 0x1b2d99f9 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x1b45bd3a tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x1b49424b inet_del_protocol +EXPORT_SYMBOL vmlinux 0x1b4e7751 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x1b4f9196 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d246b inet_ioctl +EXPORT_SYMBOL vmlinux 0x1b71325b pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8e4697 led_blink_set +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bdd2e05 __elv_add_request +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c129f34 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x1c32a15b __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x1c3460fd neigh_table_init +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c7bc5de dquot_quota_off +EXPORT_SYMBOL vmlinux 0x1c8b5fc5 __d_drop +EXPORT_SYMBOL vmlinux 0x1c8e912a nonseekable_open +EXPORT_SYMBOL vmlinux 0x1c91d479 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x1caa6b0a vme_irq_generate +EXPORT_SYMBOL vmlinux 0x1cc6b6b1 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x1ccf6bd4 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x1cd3826e vio_register_device_node +EXPORT_SYMBOL vmlinux 0x1ce8472e devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x1cfc1c32 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x1d0562c4 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d2b7b6c phy_suspend +EXPORT_SYMBOL vmlinux 0x1d37ff02 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x1d461338 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x1d999456 param_get_string +EXPORT_SYMBOL vmlinux 0x1da6bb36 irq_set_chip +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db2b544 param_get_short +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df7c768 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x1dfbba18 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x1e0dadb6 dns_query +EXPORT_SYMBOL vmlinux 0x1e183918 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x1e1bbeea compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6ec9e5 vfs_write +EXPORT_SYMBOL vmlinux 0x1e77b624 dget_parent +EXPORT_SYMBOL vmlinux 0x1e92cabc simple_statfs +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eabfcaf cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x1eb62d2b init_buffer +EXPORT_SYMBOL vmlinux 0x1ebc11fa kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x1ec6e193 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x1ed2e6f0 sock_create_kern +EXPORT_SYMBOL vmlinux 0x1ed6e436 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x1ed92180 sock_create +EXPORT_SYMBOL vmlinux 0x1ee87a7d pci_iomap +EXPORT_SYMBOL vmlinux 0x1ee8f0e1 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x1f00b925 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x1f0204b5 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x1f11fd4b scsi_print_command +EXPORT_SYMBOL vmlinux 0x1f30f2e9 elv_register_queue +EXPORT_SYMBOL vmlinux 0x1f33f5c8 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x1f399b06 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f84e685 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x1f9fe8c7 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcc1ec5 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fec4fff key_task_permission +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffcaed4 kill_pid +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005ef7c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2016a178 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075861c __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x208334ef jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x208ddc70 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x209dc2d1 make_kgid +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20bf49c1 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x20c37b17 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c9d676 consume_skb +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x210795ec kmem_cache_size +EXPORT_SYMBOL vmlinux 0x210a5658 follow_down +EXPORT_SYMBOL vmlinux 0x21145669 pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x2143d7e1 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x21493107 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x214e504a blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x2168539c serio_close +EXPORT_SYMBOL vmlinux 0x216ee876 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x21799b5c pcibus_to_node +EXPORT_SYMBOL vmlinux 0x21bde274 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x21c89024 scsi_register +EXPORT_SYMBOL vmlinux 0x21df671c rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21fcdf8f mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x21fdd2ed vga_tryget +EXPORT_SYMBOL vmlinux 0x220b0fca lease_modify +EXPORT_SYMBOL vmlinux 0x22113940 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2252241f agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2275d74f vm_map_ram +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22af93f9 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22f93f74 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x23083ce0 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232b57b6 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x23509bbf pnv_pci_get_npu_dev +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23900bc3 simple_readpage +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23e04390 fget_raw +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23fec794 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x23ff821c kthread_bind +EXPORT_SYMBOL vmlinux 0x24014e1c twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x24095e68 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2424eccb mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x243cb4d0 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x243edb5d generic_show_options +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2449cca5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x244d2945 get_gendisk +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245f0456 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24a5db93 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x24d3111e pagecache_write_end +EXPORT_SYMBOL vmlinux 0x24d5b5cc vme_register_bridge +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25181ef9 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x251ae3be serio_rescan +EXPORT_SYMBOL vmlinux 0x251e88ca param_set_invbool +EXPORT_SYMBOL vmlinux 0x252614c8 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254592dc kset_register +EXPORT_SYMBOL vmlinux 0x2556c401 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x256d3f2a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x256e7782 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2574d4e7 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x257e1895 devm_iounmap +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25887c42 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x258b02a5 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x2592cab2 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x25aa7d1a dst_destroy +EXPORT_SYMBOL vmlinux 0x25b2dc57 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x25bcaf83 giveup_altivec +EXPORT_SYMBOL vmlinux 0x25cd0f6b may_umount_tree +EXPORT_SYMBOL vmlinux 0x25ce88f8 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x25db9cfb serio_reconnect +EXPORT_SYMBOL vmlinux 0x25e1674c scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e99573 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x261ad391 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x2625e85c blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2657874c dquot_alloc +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x267123dd scm_fp_dup +EXPORT_SYMBOL vmlinux 0x26927d92 dquot_destroy +EXPORT_SYMBOL vmlinux 0x26932c06 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x26cb87be dst_release +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ec191d fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x26f417cb nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0x27130ecc blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x271cc716 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x272ec1ef jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x27395054 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x278b4e19 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x279b748c __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x27b8094e would_dump +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bda1ff cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x27d35958 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x27d462c8 simple_unlink +EXPORT_SYMBOL vmlinux 0x27de4aa6 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x28053fc3 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x28114b84 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281eb739 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x282de748 elevator_change +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28473ebc get_agp_version +EXPORT_SYMBOL vmlinux 0x28484ed2 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x286ceb2f tty_port_destroy +EXPORT_SYMBOL vmlinux 0x2888b30b input_free_device +EXPORT_SYMBOL vmlinux 0x289c756f node_data +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a1b6a4 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28ba2b88 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x28bbd5d7 pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0x28bf6041 pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x28c318f3 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x28d21d7d agp_bridge +EXPORT_SYMBOL vmlinux 0x28e6ce45 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x28f4cd6b mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2977b460 tc_classify +EXPORT_SYMBOL vmlinux 0x29a4d229 generic_make_request +EXPORT_SYMBOL vmlinux 0x29c8d1aa path_is_under +EXPORT_SYMBOL vmlinux 0x29d5411a __frontswap_load +EXPORT_SYMBOL vmlinux 0x29edd8c3 rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x29f4b8d2 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x2a1abe5b qdisc_list_add +EXPORT_SYMBOL vmlinux 0x2a20bda3 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2a2a772c lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x2a3004cf fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3db731 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x2a424c77 read_cache_page +EXPORT_SYMBOL vmlinux 0x2a55aab1 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x2a621095 pci_disable_device +EXPORT_SYMBOL vmlinux 0x2a6eff38 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x2a8ab16e blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x2a943829 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2ac1aaa2 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x2acaa0ce dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2acf6bfd param_get_invbool +EXPORT_SYMBOL vmlinux 0x2adb04fb cdev_alloc +EXPORT_SYMBOL vmlinux 0x2afb0bef fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b16739d sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b478cd3 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b4a3b97 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2b63c0d9 sock_release +EXPORT_SYMBOL vmlinux 0x2b7f67eb mpage_readpage +EXPORT_SYMBOL vmlinux 0x2b871023 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x2b8ad2dd udp_del_offload +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc6f422 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x2bcfed68 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x2be2452a kern_path_create +EXPORT_SYMBOL vmlinux 0x2be99397 no_llseek +EXPORT_SYMBOL vmlinux 0x2bec313a abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x2bf113e0 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x2bfeeefe pci_enable_device +EXPORT_SYMBOL vmlinux 0x2c088467 empty_aops +EXPORT_SYMBOL vmlinux 0x2c22558d pid_task +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2acd61 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x2c2d8738 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x2c2dfd9a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x2c4678d0 make_kprojid +EXPORT_SYMBOL vmlinux 0x2c603de9 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x2c76ba9c ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7f6311 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x2c88417d skb_copy +EXPORT_SYMBOL vmlinux 0x2c9d7c9c __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x2ca56937 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x2caa0f38 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x2cbf6913 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x2cc23c01 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x2cf14e78 bio_map_kern +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfd34f1 kobject_init +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2229dc __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2d24914c sock_no_getname +EXPORT_SYMBOL vmlinux 0x2d278f2a sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x2d2b5411 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x2d2d2262 eth_type_trans +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d654f51 dev_mc_init +EXPORT_SYMBOL vmlinux 0x2d66ea1e security_path_mkdir +EXPORT_SYMBOL vmlinux 0x2d6fd326 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x2d917952 serio_interrupt +EXPORT_SYMBOL vmlinux 0x2daf251d eeh_dev_release +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2db96719 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x2dc19d95 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x2de13e8f scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x2dfea76b xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x2dffee23 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e12a93b ibmebus_request_irq +EXPORT_SYMBOL vmlinux 0x2e1d622b input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2fc545 skb_append +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e600edd vfs_getattr +EXPORT_SYMBOL vmlinux 0x2e6d4a04 generic_perform_write +EXPORT_SYMBOL vmlinux 0x2e8c90e2 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x2ea44fa0 import_iovec +EXPORT_SYMBOL vmlinux 0x2ea72e49 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x2eb6d639 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x2ed6aeff of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2ee03d63 seq_dentry +EXPORT_SYMBOL vmlinux 0x2ef06736 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f076a50 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3e6411 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x2f4ab83c blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x2f66e266 dcache_readdir +EXPORT_SYMBOL vmlinux 0x2f85dedb mdiobus_free +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc60708 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x2fe1d87b of_n_size_cells +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x300126ad pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3055c1b0 con_is_bound +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309fd644 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x30a670e0 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b57a8e bio_add_page +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310f02ec memremap +EXPORT_SYMBOL vmlinux 0x313fd816 of_iomap +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3147fdd7 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0x315ae9c1 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317ee39c d_instantiate +EXPORT_SYMBOL vmlinux 0x31980a47 unload_nls +EXPORT_SYMBOL vmlinux 0x319ba179 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x31a734ca pci_write_vpd +EXPORT_SYMBOL vmlinux 0x31a8980c netdev_state_change +EXPORT_SYMBOL vmlinux 0x31c4273f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x31c8ccee filp_open +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31e91d5d kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x31eb36bb dev_load +EXPORT_SYMBOL vmlinux 0x322234ce param_get_ullong +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x32745121 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x32a21328 param_ops_charp +EXPORT_SYMBOL vmlinux 0x32ab14ea inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x32db4d32 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x32ddc69b nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x32f263ef serio_open +EXPORT_SYMBOL vmlinux 0x32ff2781 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x332ba2a5 cad_pid +EXPORT_SYMBOL vmlinux 0x33312b69 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x333b57e1 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x333d5355 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x335c1167 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x335f3bc9 blk_make_request +EXPORT_SYMBOL vmlinux 0x33608948 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x338be0c4 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x33ace2a5 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33be3864 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x33bfe825 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x33c47b7b copy_to_iter +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33c81832 dev_addr_init +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34173167 lookup_one_len +EXPORT_SYMBOL vmlinux 0x3423d2bd buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3448460c hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x344d5387 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x344eba62 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3462bf93 posix_test_lock +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a66fe3 __sock_create +EXPORT_SYMBOL vmlinux 0x34b8020c vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x34bee889 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x34c317ba __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x34c89b0e xfrm_init_state +EXPORT_SYMBOL vmlinux 0x34d99c33 tcp_child_process +EXPORT_SYMBOL vmlinux 0x34e06c08 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x34e3ec75 vfs_read +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350adba6 agp_backend_release +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3526ca16 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3554b389 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3555612f dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x356376dc skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3566f77c pcim_iounmap +EXPORT_SYMBOL vmlinux 0x356986fe pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35ce4ac8 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x35e09980 flex_array_put +EXPORT_SYMBOL vmlinux 0x35e91320 __serio_register_port +EXPORT_SYMBOL vmlinux 0x35ef00b4 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x35f5d481 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x360e37df unregister_shrinker +EXPORT_SYMBOL vmlinux 0x361027e2 md_flush_request +EXPORT_SYMBOL vmlinux 0x36111ed1 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x361c8b04 md_write_start +EXPORT_SYMBOL vmlinux 0x36204b3d bdi_destroy +EXPORT_SYMBOL vmlinux 0x3645247c napi_disable +EXPORT_SYMBOL vmlinux 0x364b0fde kill_block_super +EXPORT_SYMBOL vmlinux 0x3668d7f4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3668fd48 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x3676faf1 param_get_ulong +EXPORT_SYMBOL vmlinux 0x3686a083 load_nls +EXPORT_SYMBOL vmlinux 0x369d9e30 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b4ed33 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x36b72032 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c53a5c vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x370a4565 blkdev_put +EXPORT_SYMBOL vmlinux 0x3712d956 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372396ee pskb_expand_head +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x373f1b8b ip6_xmit +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3763ff94 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x3781876e nf_log_register +EXPORT_SYMBOL vmlinux 0x3784e25a inet_sendpage +EXPORT_SYMBOL vmlinux 0x378dbdf6 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x37923702 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x37a45e21 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b39561 ipv4_specific +EXPORT_SYMBOL vmlinux 0x37b4462d tcp_read_sock +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d367c6 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x37f5769f genphy_update_link +EXPORT_SYMBOL vmlinux 0x38026bcf blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x38060af2 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x38149635 dma_pool_create +EXPORT_SYMBOL vmlinux 0x3816a1a3 neigh_destroy +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38259741 set_nlink +EXPORT_SYMBOL vmlinux 0x383cd54d tty_port_close_end +EXPORT_SYMBOL vmlinux 0x383d8baf input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3890843e ilookup +EXPORT_SYMBOL vmlinux 0x389a2fa3 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x38a452ad dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38ab4f15 request_firmware +EXPORT_SYMBOL vmlinux 0x38b16fc7 seq_write +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38bd54c6 unlock_rename +EXPORT_SYMBOL vmlinux 0x38c097fb twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x38d92fff unregister_quota_format +EXPORT_SYMBOL vmlinux 0x38dec40f mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38feffa3 i2c_use_client +EXPORT_SYMBOL vmlinux 0x390c8ef3 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x390fb4ee __get_user_pages +EXPORT_SYMBOL vmlinux 0x3931918a blk_init_queue +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393b1f57 inet6_protos +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394fefc6 nf_afinfo +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3975d2e3 vfs_fsync +EXPORT_SYMBOL vmlinux 0x3981b17a ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x398904ea locks_init_lock +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a9370f dma_set_mask +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c268fe block_read_full_page +EXPORT_SYMBOL vmlinux 0x39c40c6a register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d5d1ac task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x39fbf622 block_write_full_page +EXPORT_SYMBOL vmlinux 0x39fe00b1 seq_path +EXPORT_SYMBOL vmlinux 0x39feb1c7 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x3a0f10d1 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x3a210b0b udp_add_offload +EXPORT_SYMBOL vmlinux 0x3a2d442e inet_frags_fini +EXPORT_SYMBOL vmlinux 0x3a69a983 eth_header +EXPORT_SYMBOL vmlinux 0x3a7e73da flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x3a7eeb82 iov_iter_init +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9d82e8 deactivate_super +EXPORT_SYMBOL vmlinux 0x3ae7c426 generic_setxattr +EXPORT_SYMBOL vmlinux 0x3ae8e15b of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x3af80b04 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x3b004646 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3b020eb3 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x3b077e17 page_symlink +EXPORT_SYMBOL vmlinux 0x3b2653be skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x3b2cb574 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x3b393c05 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x3b429086 dquot_disable +EXPORT_SYMBOL vmlinux 0x3b5d1610 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x3b5fafba kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f0d8a of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x3b6fc699 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b7eb80f blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x3b916628 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x3b9414f7 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x3b99f33c zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x3bdca59c kobject_get +EXPORT_SYMBOL vmlinux 0x3bdd6b9e mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x3c01fca5 write_inode_now +EXPORT_SYMBOL vmlinux 0x3c065e71 bio_split +EXPORT_SYMBOL vmlinux 0x3c163099 vio_unregister_device +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c474c2d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c5d468c scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x3c6b75dc input_register_handle +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8e02f0 d_obtain_root +EXPORT_SYMBOL vmlinux 0x3ca9dbd6 thaw_bdev +EXPORT_SYMBOL vmlinux 0x3cbf10f0 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce66645 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x3d10e49f param_ops_long +EXPORT_SYMBOL vmlinux 0x3d49c7c0 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x3d536642 genphy_resume +EXPORT_SYMBOL vmlinux 0x3d73896d xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x3d9cb50a neigh_ifdown +EXPORT_SYMBOL vmlinux 0x3db13d71 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x3db6d176 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x3db90fe7 request_key_async +EXPORT_SYMBOL vmlinux 0x3dbd0dc0 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de047f3 sk_filter +EXPORT_SYMBOL vmlinux 0x3df74563 giveup_vsx +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e015859 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x3e0bad15 input_unregister_device +EXPORT_SYMBOL vmlinux 0x3e0ccc9b pci_get_subsys +EXPORT_SYMBOL vmlinux 0x3e2bfc0c blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x3e372827 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x3e3a7463 security_path_unlink +EXPORT_SYMBOL vmlinux 0x3e3c02d5 dev_set_group +EXPORT_SYMBOL vmlinux 0x3e56d662 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x3e63bc5f d_delete +EXPORT_SYMBOL vmlinux 0x3e71d4b9 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x3e85fac8 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8a6be5 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x3e8c34f4 phy_device_remove +EXPORT_SYMBOL vmlinux 0x3e8ef2c0 scsi_host_put +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9fe876 pci_find_capability +EXPORT_SYMBOL vmlinux 0x3eba9005 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x3ec61b62 pci_set_master +EXPORT_SYMBOL vmlinux 0x3ec87ae6 netif_rx +EXPORT_SYMBOL vmlinux 0x3edcd99b arp_send +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f8153a5 of_get_address +EXPORT_SYMBOL vmlinux 0x3f9f9e2f serio_unregister_port +EXPORT_SYMBOL vmlinux 0x3fa6dff5 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x3fbbb518 add_disk +EXPORT_SYMBOL vmlinux 0x3fd14982 fs_bio_set +EXPORT_SYMBOL vmlinux 0x3fda9930 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x3fdb904c skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x3fdf251a genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x3fe1b9f7 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe688fe i2c_clients_command +EXPORT_SYMBOL vmlinux 0x3fe8ec5a secpath_dup +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff787b9 bio_reset +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40149046 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404d1589 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405c9a2c ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x40937691 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a4a130 serio_bus +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c2b90e __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d59415 __kfree_skb +EXPORT_SYMBOL vmlinux 0x41103efd of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x4119cc1c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x41290fb3 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x412f6b67 dev_warn +EXPORT_SYMBOL vmlinux 0x4139b46c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4144a72f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41570a67 mount_single +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a3fbf1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x41b90ebb block_truncate_page +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41c4169a netif_receive_skb +EXPORT_SYMBOL vmlinux 0x41c8f4c6 md_write_end +EXPORT_SYMBOL vmlinux 0x41e3b1dc mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x41e6f2ba sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x41fd769e blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422068ca devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x423dea70 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425e57b4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x425fc4bd mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x42643463 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x42718c5b down_write_trylock +EXPORT_SYMBOL vmlinux 0x4285a68a d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x429c178f __put_cred +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42e33876 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x42f524c3 inet6_bind +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4315bf38 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x431dd3cf rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4352cfab input_inject_event +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43905eb9 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a78649 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x43c263b0 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f32650 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x43f925c4 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x44038646 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x440aa585 dquot_transfer +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4439807a skb_queue_purge +EXPORT_SYMBOL vmlinux 0x446a7da9 may_umount +EXPORT_SYMBOL vmlinux 0x44768bb3 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x447dcdab nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44af33a5 simple_rmdir +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b3e177 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x44b9fa5a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x44c3364b genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x44c39859 udp_disconnect +EXPORT_SYMBOL vmlinux 0x44db69e2 ll_rw_block +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f6c1a8 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x44f8bbbd sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x450cbaad phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x45164e72 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x452f76f4 search_binary_handler +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45467159 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x455b1b32 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x45679008 key_type_keyring +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x459cf681 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45d495a5 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x45e4fd42 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x45f18ef3 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x45f1f314 simple_getattr +EXPORT_SYMBOL vmlinux 0x45f36e8b pci_scan_bus +EXPORT_SYMBOL vmlinux 0x4602bb59 simple_rename +EXPORT_SYMBOL vmlinux 0x461134f2 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x46118a53 uart_resume_port +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x4618f920 fb_set_var +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4631316c __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46633448 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x469be53a inet_frag_find +EXPORT_SYMBOL vmlinux 0x46a0170e flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x46ad9735 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46ccf33e vme_bus_type +EXPORT_SYMBOL vmlinux 0x46d08669 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46db7cc9 finish_open +EXPORT_SYMBOL vmlinux 0x46f6debc simple_dir_operations +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471160b7 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4714689c sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x473fd9a7 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x474efe8f srp_rport_put +EXPORT_SYMBOL vmlinux 0x47539d22 lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x4759c68f tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x475fdd64 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x478a019e generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x47936ba1 tcp_close +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a81f00 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x47acfb33 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x47b9e656 __check_sticky +EXPORT_SYMBOL vmlinux 0x47c8dd42 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x47ded5f8 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x47ebc5c5 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x47fd15ab fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x47fe3886 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x47fed48e mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x480361ef uart_suspend_port +EXPORT_SYMBOL vmlinux 0x481c1958 __module_get +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485ed079 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x48740990 phy_resume +EXPORT_SYMBOL vmlinux 0x4874be3a ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x4883a436 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x488e2ec4 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x488ed938 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x48966399 phy_driver_register +EXPORT_SYMBOL vmlinux 0x48a0eb59 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48cc0745 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49049084 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x490edee1 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x4927c94c pci_bus_put +EXPORT_SYMBOL vmlinux 0x493b436f powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x494cd264 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49615bed nobh_writepage +EXPORT_SYMBOL vmlinux 0x4963dcd8 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x4983f12a fb_blank +EXPORT_SYMBOL vmlinux 0x498798d2 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x499bfc6d __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x49ac3c5a n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b6f20d cfb_copyarea +EXPORT_SYMBOL vmlinux 0x49b7d6e4 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x49b8bd60 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x49b9bf76 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x49c3cbf1 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x49cc9bf9 param_get_bool +EXPORT_SYMBOL vmlinux 0x49d4110d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x49da1021 clear_user_page +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a05e149 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x4a25ad27 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x4a279e92 pipe_unlock +EXPORT_SYMBOL vmlinux 0x4a300f62 kill_anon_super +EXPORT_SYMBOL vmlinux 0x4a331175 ether_setup +EXPORT_SYMBOL vmlinux 0x4a378a95 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x4a4d1cf7 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x4a59998a neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4a8961f5 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4a900247 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4aa59d0f ppp_register_channel +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acc452e find_inode_nowait +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b30e3bb tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x4b324884 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x4b5ddf64 __seq_open_private +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b844983 dm_io +EXPORT_SYMBOL vmlinux 0x4baa6fc8 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bd451e6 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x4bdb9fe6 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf8a88f ata_print_version +EXPORT_SYMBOL vmlinux 0x4bfdc3fb deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x4c076bb7 __lock_page +EXPORT_SYMBOL vmlinux 0x4c0aa87a pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x4c0c2089 pci_find_bus +EXPORT_SYMBOL vmlinux 0x4c0e3d6e ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c7ac640 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x4c90989b inode_get_bytes +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4ccb785a set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ced591f generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x4cf2dbeb xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x4d01e35b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x4d02c02f jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d8b2fe6 blk_init_tags +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da329ed tty_port_init +EXPORT_SYMBOL vmlinux 0x4da8d0f9 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x4da8d6da fb_pan_display +EXPORT_SYMBOL vmlinux 0x4dad228b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4dae1359 set_disk_ro +EXPORT_SYMBOL vmlinux 0x4db2093b mount_pseudo +EXPORT_SYMBOL vmlinux 0x4dbf1f86 cdev_del +EXPORT_SYMBOL vmlinux 0x4dc0924c i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x4dc30654 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x4dd8b361 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e036558 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x4e20da1d mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x4e32c4c3 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3a644f nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x4e42123e is_nd_btt +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6bd822 simple_fill_super +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e73de60 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x4e784c7d tcp_make_synack +EXPORT_SYMBOL vmlinux 0x4e813028 ip6_route_output +EXPORT_SYMBOL vmlinux 0x4e9b98dc udp_set_csum +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eadf91d pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x4eb8ee81 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x4ebc665d padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4ec193a2 phy_device_free +EXPORT_SYMBOL vmlinux 0x4ecbccab uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x4ef9e160 sock_no_poll +EXPORT_SYMBOL vmlinux 0x4f00614d nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x4f0c5ce9 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4f1c5c8e jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3d63ac qdisc_destroy +EXPORT_SYMBOL vmlinux 0x4f3db724 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f478a8b key_put +EXPORT_SYMBOL vmlinux 0x4f4fddeb gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4f516079 param_array_ops +EXPORT_SYMBOL vmlinux 0x4f555927 devm_free_irq +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f73d1d9 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x4f783df2 to_ndd +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4f859b2d blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x4f866a07 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x4fb813d9 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x4fce55a8 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50283503 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x5031aa60 netif_skb_features +EXPORT_SYMBOL vmlinux 0x50362de2 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x50598e21 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x506e1ef9 ppp_input +EXPORT_SYMBOL vmlinux 0x50791f0b sk_common_release +EXPORT_SYMBOL vmlinux 0x507d502a poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x5080ac50 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x5084a79b input_register_device +EXPORT_SYMBOL vmlinux 0x5091c3e0 blk_rq_init +EXPORT_SYMBOL vmlinux 0x50971898 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x50a5fe6c vfs_writev +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b72685 dquot_release +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50bcbc02 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e3752f __page_symlink +EXPORT_SYMBOL vmlinux 0x51057a2a input_close_device +EXPORT_SYMBOL vmlinux 0x5110d8b0 param_set_long +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5123a146 downgrade_write +EXPORT_SYMBOL vmlinux 0x5158c5b0 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x518050fa scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x51974dfb lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x51995595 __netif_schedule +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x519faabe mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x51a370a5 put_filp +EXPORT_SYMBOL vmlinux 0x51e935dc pci_assign_resource +EXPORT_SYMBOL vmlinux 0x5201b241 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521a55bd tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5222d8a7 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x52263a93 netlink_capable +EXPORT_SYMBOL vmlinux 0x523176aa phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x525b2ca2 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x52621443 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x5262f8fb pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x527db9e2 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x52903fbb eth_mac_addr +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52b1793f scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x52ebfc0a max8925_reg_write +EXPORT_SYMBOL vmlinux 0x53073859 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531dd574 phy_init_hw +EXPORT_SYMBOL vmlinux 0x53252071 do_splice_from +EXPORT_SYMBOL vmlinux 0x532bd33f pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x532c4182 vga_con +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5336c583 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x53379de8 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x533e69ec vfs_link +EXPORT_SYMBOL vmlinux 0x5347b937 neigh_for_each +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535cce21 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5380a961 nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a2be6c truncate_setsize +EXPORT_SYMBOL vmlinux 0x53a4dcaf devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x53a773a5 unregister_console +EXPORT_SYMBOL vmlinux 0x53ae45a0 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x53c0a34c __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x53d4efd0 inet_del_offload +EXPORT_SYMBOL vmlinux 0x53d88887 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x53e6423e devm_gpio_free +EXPORT_SYMBOL vmlinux 0x53e9f090 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ef6d16 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x53f4400c dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x53fc0733 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x54070c43 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540a4dfb fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542a2625 netpoll_setup +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544e8a84 noop_llseek +EXPORT_SYMBOL vmlinux 0x5450d9f3 kernel_listen +EXPORT_SYMBOL vmlinux 0x5455ad7e max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x5464ed6d skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x546cb3e3 mutex_trylock +EXPORT_SYMBOL vmlinux 0x546d3317 dev_add_pack +EXPORT_SYMBOL vmlinux 0x54734062 simple_release_fs +EXPORT_SYMBOL vmlinux 0x547a5ece pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x54a9c2e3 blk_start_queue +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c2c911 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x54d1257d xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54eead48 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x551364a9 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x551a5218 register_netdevice +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551dc503 input_set_keycode +EXPORT_SYMBOL vmlinux 0x552b6426 sock_wake_async +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554261c9 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x5560ae36 free_task +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5578f47d bd_set_size +EXPORT_SYMBOL vmlinux 0x559aad7d dev_uc_sync +EXPORT_SYMBOL vmlinux 0x55c31ea5 simple_link +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55efff5c neigh_lookup +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55fd93e6 seq_open_private +EXPORT_SYMBOL vmlinux 0x5623db9a mmc_can_discard +EXPORT_SYMBOL vmlinux 0x562cdb35 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x562effde redraw_screen +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x566afcb8 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x567510b5 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x567f55a5 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x568651bd compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x568f2f3f put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x56c0fefa reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ccba6e nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5701e7a9 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x5718dd36 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573590e4 sg_miter_next +EXPORT_SYMBOL vmlinux 0x574229b0 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576699b2 vfs_symlink +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x57897cb9 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579a2985 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x57c3e961 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x57e18e0d dqget +EXPORT_SYMBOL vmlinux 0x57e8316c blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x57edf435 get_empty_filp +EXPORT_SYMBOL vmlinux 0x57f37ae5 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x57f7ac23 simple_follow_link +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58462158 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x584c024e skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x58530387 default_llseek +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58a1e23f vfs_writef +EXPORT_SYMBOL vmlinux 0x58aa58ce devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x58b4bfa6 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x58b69a9b cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d89220 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59560b1e open_check_o_direct +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5960780f param_set_bool +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b16794 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59ccd5db i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x59f17e73 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x59f80c29 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a158184 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x5a18ca11 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x5a21ee39 dev_close +EXPORT_SYMBOL vmlinux 0x5a3796e2 dquot_enable +EXPORT_SYMBOL vmlinux 0x5a3f8978 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5a4f4876 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x5a74b1ff padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x5a838a36 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aa331a0 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x5ab5fe8d kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x5ab7818e unlock_page +EXPORT_SYMBOL vmlinux 0x5ab8a9b3 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x5ad2413e __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x5ae37df1 security_path_chmod +EXPORT_SYMBOL vmlinux 0x5ae59d72 sync_blockdev +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4452c6 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b58d06d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x5b835b58 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x5b855b1b bio_put +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba59d24 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5baa0fd1 skb_dequeue +EXPORT_SYMBOL vmlinux 0x5bafbcb8 mach_pseries +EXPORT_SYMBOL vmlinux 0x5bb5c686 tso_count_descs +EXPORT_SYMBOL vmlinux 0x5bb9885d input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bd62895 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x5beaf452 should_remove_suid +EXPORT_SYMBOL vmlinux 0x5c093d36 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x5c098361 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x5c23b585 get_super +EXPORT_SYMBOL vmlinux 0x5c36aeb9 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3a05d6 proc_mkdir +EXPORT_SYMBOL vmlinux 0x5c864af4 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x5c88f0cd blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x5c927825 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x5c9a6dcc clear_wb_congested +EXPORT_SYMBOL vmlinux 0x5cb52fac lro_receive_skb +EXPORT_SYMBOL vmlinux 0x5cc044e8 kern_unmount +EXPORT_SYMBOL vmlinux 0x5cc34cbe set_user_nice +EXPORT_SYMBOL vmlinux 0x5cd7e845 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x5cedd42b seq_printf +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf5fb10 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x5cfcfad1 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x5d07df04 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x5d225957 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x5d24010f kernel_connect +EXPORT_SYMBOL vmlinux 0x5d43a92a mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5eea92 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x5d5fecd7 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x5d63ceb1 __ps2_command +EXPORT_SYMBOL vmlinux 0x5d6aa991 mutex_unlock +EXPORT_SYMBOL vmlinux 0x5d7db4cb csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x5d8555e9 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x5d8fc2d8 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x5dbdf18b nf_getsockopt +EXPORT_SYMBOL vmlinux 0x5dc12910 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x5dda1caf blk_recount_segments +EXPORT_SYMBOL vmlinux 0x5ddd2025 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x5ddd903c __sb_start_write +EXPORT_SYMBOL vmlinux 0x5e057246 rt6_lookup +EXPORT_SYMBOL vmlinux 0x5e0aa26a dev_set_mtu +EXPORT_SYMBOL vmlinux 0x5e0f700b ppp_input_error +EXPORT_SYMBOL vmlinux 0x5e2b6609 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x5e336987 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3fa09e napi_gro_frags +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e99a11c pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x5ea15fa8 seq_vprintf +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb684fe dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x5ec7c898 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5eede0c4 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x5ef17a08 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1deeb3 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x5f379e4c padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x5f6d09ce call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x5f707fba blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fc49d7c read_cache_pages +EXPORT_SYMBOL vmlinux 0x5fd3ca22 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdf9140 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5fe3866b bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x5ff25300 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6008aa54 param_get_charp +EXPORT_SYMBOL vmlinux 0x6016e902 param_ops_bool +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6024a448 of_get_parent +EXPORT_SYMBOL vmlinux 0x6027f86d vme_master_mmap +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6045f66a inet_getname +EXPORT_SYMBOL vmlinux 0x6055743f pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6061ad75 rtas +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60703010 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x607ecc9f security_path_symlink +EXPORT_SYMBOL vmlinux 0x6084427c drop_nlink +EXPORT_SYMBOL vmlinux 0x608e225b register_key_type +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609291f5 vfs_readv +EXPORT_SYMBOL vmlinux 0x609853e7 register_qdisc +EXPORT_SYMBOL vmlinux 0x609d8590 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b7a6fc nf_log_trace +EXPORT_SYMBOL vmlinux 0x60c1582d security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x60c87fee security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x60ccf9d6 nf_log_packet +EXPORT_SYMBOL vmlinux 0x60dc1bd5 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e82ee4 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6135f2db ps2_begin_command +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x614dfd8c vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x615075c4 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x616d3857 mntput +EXPORT_SYMBOL vmlinux 0x6185e3b1 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619e3c80 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x61af48b8 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61ef6170 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x620f3027 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621a2b1c sg_miter_stop +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6246d738 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x625e2a89 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x626a508d inode_dio_wait +EXPORT_SYMBOL vmlinux 0x626f14cb jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628db531 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x62908168 udp_proc_register +EXPORT_SYMBOL vmlinux 0x629bd6df pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x62b3322d tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x62bb1403 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x62e92286 input_allocate_device +EXPORT_SYMBOL vmlinux 0x62ec8f4a vlan_vid_del +EXPORT_SYMBOL vmlinux 0x62f0bffe phy_start_aneg +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x632c52b2 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x63610dbe cfb_fillrect +EXPORT_SYMBOL vmlinux 0x63707bc9 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x63a75121 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d9d103 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f896ab __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6400d004 security_inode_permission +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6438310c xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x644423a6 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x6474f3b2 vfs_mknod +EXPORT_SYMBOL vmlinux 0x6482c9a3 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64b23d02 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64d8c55d dev_get_flags +EXPORT_SYMBOL vmlinux 0x64eb87a9 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x64fc591b blk_end_request_all +EXPORT_SYMBOL vmlinux 0x650280c2 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x65129d77 put_cmsg +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65377207 seq_release +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654326c9 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x65568509 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6581aac3 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x6597a6eb paca +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d31f82 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dcb449 commit_creds +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fd20a1 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x66054a9a sock_wfree +EXPORT_SYMBOL vmlinux 0x660a4db8 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x660cb7db param_set_bint +EXPORT_SYMBOL vmlinux 0x66587cbe compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x6665d270 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x668a3c6f prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x6697498d tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x66a484f9 dquot_get_state +EXPORT_SYMBOL vmlinux 0x66ab972b simple_transaction_release +EXPORT_SYMBOL vmlinux 0x66c474fe cdrom_check_events +EXPORT_SYMBOL vmlinux 0x66e38582 freeze_super +EXPORT_SYMBOL vmlinux 0x66f27326 page_put_link +EXPORT_SYMBOL vmlinux 0x66f59734 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x66f890f7 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x67372e34 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675bff39 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6796f9c1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x679b81e8 sock_i_uid +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67f3c245 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6817b7a3 misc_deregister +EXPORT_SYMBOL vmlinux 0x68187e34 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x681b9556 blk_put_queue +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687f065f sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x689f370d frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0x68b78a9d nf_log_set +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c3934c inc_nlink +EXPORT_SYMBOL vmlinux 0x68ccff50 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x690fb88f bdget +EXPORT_SYMBOL vmlinux 0x691dea53 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x69271dc7 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x694f75e2 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x69627bb3 dquot_drop +EXPORT_SYMBOL vmlinux 0x696d3e18 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697cca64 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x69918003 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a3e838 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x69a7c741 sock_no_listen +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69befca9 uart_register_driver +EXPORT_SYMBOL vmlinux 0x69e57fef vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x69ffec64 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x6a00cf46 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a27a9ce nd_device_unregister +EXPORT_SYMBOL vmlinux 0x6a3dcefb dev_addr_del +EXPORT_SYMBOL vmlinux 0x6a5c739e sget +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a67394d swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x6a72abd4 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7ea9fa compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x6ab51309 udp_seq_open +EXPORT_SYMBOL vmlinux 0x6ac39d27 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acfca51 tty_mutex +EXPORT_SYMBOL vmlinux 0x6ad7c8a0 scsi_device_get +EXPORT_SYMBOL vmlinux 0x6ad98c68 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1443ff sock_no_bind +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b37c1a8 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6b40f4fb del_gendisk +EXPORT_SYMBOL vmlinux 0x6b577348 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b634a05 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b7b25f0 get_tz_trend +EXPORT_SYMBOL vmlinux 0x6b86e38e pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x6bab8049 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x6bb6db6a dump_skip +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd0d3f1 inode_change_ok +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be26779 of_root +EXPORT_SYMBOL vmlinux 0x6bec1390 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x6bf5eac2 mmc_erase +EXPORT_SYMBOL vmlinux 0x6bf6a8e1 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c33c326 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c537b1c of_node_put +EXPORT_SYMBOL vmlinux 0x6c550029 icmpv6_send +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cef9e generic_permission +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c86ca6b bio_unmap_user +EXPORT_SYMBOL vmlinux 0x6c8cd93b tcp_check_req +EXPORT_SYMBOL vmlinux 0x6cac17c9 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x6cb98c40 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x6cc2fdab skb_clone_sk +EXPORT_SYMBOL vmlinux 0x6cc7f706 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6ccc518a scsi_print_sense +EXPORT_SYMBOL vmlinux 0x6cd5727a ibmebus_unregister_driver +EXPORT_SYMBOL vmlinux 0x6ce5a9c9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x6ce66114 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1444c6 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d42f45c jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x6d827799 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x6d8aaffe unregister_key_type +EXPORT_SYMBOL vmlinux 0x6d907644 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dd44fdd cdrom_release +EXPORT_SYMBOL vmlinux 0x6dd79002 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x6deaef1d pci_get_device +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df907ea netif_napi_del +EXPORT_SYMBOL vmlinux 0x6e0b1fe2 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x6e173cdb tty_do_resize +EXPORT_SYMBOL vmlinux 0x6e49ed07 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x6e580b14 security_path_mknod +EXPORT_SYMBOL vmlinux 0x6e6023fb genphy_read_status +EXPORT_SYMBOL vmlinux 0x6e6a8f0f sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e741fd4 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x6e76ce79 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e812858 kern_path +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ebe6f9f __find_get_block +EXPORT_SYMBOL vmlinux 0x6ee5ed3a update_devfreq +EXPORT_SYMBOL vmlinux 0x6efb332d fifo_set_limit +EXPORT_SYMBOL vmlinux 0x6f051519 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f273dbe blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6f3ccfca dev_trans_start +EXPORT_SYMBOL vmlinux 0x6f475732 dev_deactivate +EXPORT_SYMBOL vmlinux 0x6f550db2 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6f68e34e tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x6f74b502 seq_release_private +EXPORT_SYMBOL vmlinux 0x6f78548d vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9f951a padata_alloc +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc005ea elevator_exit +EXPORT_SYMBOL vmlinux 0x6fc983f8 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe3444b __sb_end_write +EXPORT_SYMBOL vmlinux 0x6ffe261b key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x70004873 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x7013f118 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x7017d893 of_phy_attach +EXPORT_SYMBOL vmlinux 0x701e21b1 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x7029b256 __vfs_write +EXPORT_SYMBOL vmlinux 0x702c2503 d_invalidate +EXPORT_SYMBOL vmlinux 0x702e81f7 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7068193a scsi_remove_host +EXPORT_SYMBOL vmlinux 0x706c9e5c uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7090dfbe dquot_acquire +EXPORT_SYMBOL vmlinux 0x70a049b8 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0x70b2cc96 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x70dd566a phy_attach_direct +EXPORT_SYMBOL vmlinux 0x70e9ee9d devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x710917dc fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x7111f70f invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x71156220 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x7115df5d devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x71241dc8 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71329831 thaw_super +EXPORT_SYMBOL vmlinux 0x713b5cd9 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x713d1365 dquot_commit +EXPORT_SYMBOL vmlinux 0x713e87dc mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x71432e14 path_get +EXPORT_SYMBOL vmlinux 0x714c8d49 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x7157d969 vfs_llseek +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a1c2f8 __inode_permission +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b78193 eth_header_cache +EXPORT_SYMBOL vmlinux 0x71c11ed8 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x71cb5f71 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x71e3bf98 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x7211dad6 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x7222fbe9 mount_bdev +EXPORT_SYMBOL vmlinux 0x722ebda1 mmc_release_host +EXPORT_SYMBOL vmlinux 0x722f0e66 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x72431e28 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x72542e65 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x726bd9f4 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x726e4605 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x7275ad4e skb_put +EXPORT_SYMBOL vmlinux 0x728eaed7 d_drop +EXPORT_SYMBOL vmlinux 0x72b19a19 release_sock +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72b86803 blk_get_queue +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72e1c7dd __dquot_transfer +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x7321d830 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x732bea85 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73519d4b input_set_capability +EXPORT_SYMBOL vmlinux 0x7351a740 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x735db9b6 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x7367638c inet_sendmsg +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7380b6a2 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x73ab99f2 framebuffer_release +EXPORT_SYMBOL vmlinux 0x73ac7c1a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x73b8911e scsi_ioctl +EXPORT_SYMBOL vmlinux 0x73f287f4 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x73f31357 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x73f59483 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x7401af2e mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x7407484b tty_vhangup +EXPORT_SYMBOL vmlinux 0x740d292b sync_filesystem +EXPORT_SYMBOL vmlinux 0x740d8d71 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x742bbd0b kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7477f8c2 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74927e10 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x74a9256e devm_ioremap +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x751ce66a zero_fill_bio +EXPORT_SYMBOL vmlinux 0x752425e8 free_buffer_head +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7548e807 do_splice_to +EXPORT_SYMBOL vmlinux 0x75518364 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x7553dde9 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x7557f595 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x75587b25 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x756c1d15 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x756f36e2 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x7583effb genphy_suspend +EXPORT_SYMBOL vmlinux 0x7585ac50 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75f21e71 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x75fd299a __pagevec_release +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76124e47 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7652c5f8 register_netdev +EXPORT_SYMBOL vmlinux 0x765dac0a tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7668230a get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x76900e8a jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x76b59b33 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x76d1c54b __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ebbf57 of_match_device +EXPORT_SYMBOL vmlinux 0x76fb57a6 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x76fd3b97 free_page_put_link +EXPORT_SYMBOL vmlinux 0x76fdd14b from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x770e60a7 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7740781c input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x7740a8a9 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x77457f9f skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x77576de8 generic_writepages +EXPORT_SYMBOL vmlinux 0x77645c1e twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x776b97d8 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x777ae250 init_special_inode +EXPORT_SYMBOL vmlinux 0x777b083e jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779eceba flush_signals +EXPORT_SYMBOL vmlinux 0x779fa1f4 free_user_ns +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bf30e3 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x77cb43c7 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7802887d tty_register_driver +EXPORT_SYMBOL vmlinux 0x782253f2 __alloc_skb +EXPORT_SYMBOL vmlinux 0x78237798 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78660412 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x78708e0f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789ecd0f bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78ae86b5 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x78be1c98 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x78cfa10b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e9bbf8 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x78fd8d39 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x790d191f xfrm_register_km +EXPORT_SYMBOL vmlinux 0x7916bc5e inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x7930639b vfs_unlink +EXPORT_SYMBOL vmlinux 0x79454501 key_alloc +EXPORT_SYMBOL vmlinux 0x794eb346 bdi_init +EXPORT_SYMBOL vmlinux 0x795b12d0 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x795fb832 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x796307a7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x79659178 clear_nlink +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7974fc3a serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bdce84 unregister_netdev +EXPORT_SYMBOL vmlinux 0x79c33cc0 get_io_context +EXPORT_SYMBOL vmlinux 0x79c3bfc5 request_key +EXPORT_SYMBOL vmlinux 0x79de5aed phy_connect_direct +EXPORT_SYMBOL vmlinux 0x79df3c81 scsi_init_io +EXPORT_SYMBOL vmlinux 0x7a0133ec notify_change +EXPORT_SYMBOL vmlinux 0x7a352ba6 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a754a60 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x7a869aaa vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x7a87318d register_console +EXPORT_SYMBOL vmlinux 0x7a90f041 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x7a92c9d1 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x7a97ba5c __bread_gfp +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aaca4b2 tcp_prot +EXPORT_SYMBOL vmlinux 0x7ab44a83 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acf272e nf_hook_slow +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae364d4 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x7aeea746 vme_register_driver +EXPORT_SYMBOL vmlinux 0x7af0203b dcb_setapp +EXPORT_SYMBOL vmlinux 0x7af111ca devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x7afb0680 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b25cfbb __secpath_destroy +EXPORT_SYMBOL vmlinux 0x7b29e49e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2d2cd6 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x7b7fd638 dev_crit +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bcb15bd param_set_int +EXPORT_SYMBOL vmlinux 0x7bd3a23c flush_old_exec +EXPORT_SYMBOL vmlinux 0x7bdb415e iput +EXPORT_SYMBOL vmlinux 0x7bdd3881 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7bf55bff inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x7bfa284c rwsem_wake +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c010091 arp_xmit +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1822fe lock_rename +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c373b4d blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c61c34c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c92d282 agp_copy_info +EXPORT_SYMBOL vmlinux 0x7c939563 devm_request_resource +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca54a64 iget_locked +EXPORT_SYMBOL vmlinux 0x7cacbdfc jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cd73151 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce1a4ea ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x7cf32b20 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfc474d locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7d0d3682 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0f9974 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2e8a29 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x7d38aad8 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7d3d5373 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x7d5d26e0 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x7d6f57d6 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d779bd9 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x7d8773b2 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7d9514c1 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x7dc6dc0a km_policy_notify +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0163f0 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x7e1ae295 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x7e1bf257 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x7e27c23e ihold +EXPORT_SYMBOL vmlinux 0x7e4fd669 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x7e5496b7 netdev_notice +EXPORT_SYMBOL vmlinux 0x7e5fe23e mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x7e61bd75 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7e63c7a9 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x7e7ebc7f input_register_handler +EXPORT_SYMBOL vmlinux 0x7e839e10 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x7e8ca83a pcim_pin_device +EXPORT_SYMBOL vmlinux 0x7e960de7 nvm_register +EXPORT_SYMBOL vmlinux 0x7ea173be phy_device_create +EXPORT_SYMBOL vmlinux 0x7ec55d0f skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x7edf9e0a set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef21e61 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f0cd996 single_open +EXPORT_SYMBOL vmlinux 0x7f195664 kill_pgrp +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f31867f pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x7f4bd2e7 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x7f5940a8 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f94f306 get_task_io_context +EXPORT_SYMBOL vmlinux 0x7f9c5381 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x7fb6aef6 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fd3f48c bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7feca0c4 pci_match_id +EXPORT_SYMBOL vmlinux 0x7ff5383e cpu_active_mask +EXPORT_SYMBOL vmlinux 0x7ff60ba1 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x800a82fd dcache_dir_close +EXPORT_SYMBOL vmlinux 0x800e98f1 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x802d0119 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x8062067e find_get_entry +EXPORT_SYMBOL vmlinux 0x8066f41c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x8067dfe7 security_path_rename +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80709313 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x8071d1a8 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x8090732d agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x8094bda5 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x809aa52c netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x80a20860 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cb9a16 inet_release +EXPORT_SYMBOL vmlinux 0x80cd79db bh_submit_read +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e22598 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x80e783ea __pci_register_driver +EXPORT_SYMBOL vmlinux 0x80f9b68e netdev_features_change +EXPORT_SYMBOL vmlinux 0x80fa2565 dump_align +EXPORT_SYMBOL vmlinux 0x81213916 devm_memremap +EXPORT_SYMBOL vmlinux 0x813390fe dm_put_device +EXPORT_SYMBOL vmlinux 0x814e3946 keyring_alloc +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81783eaf dev_printk +EXPORT_SYMBOL vmlinux 0x81840b03 bioset_free +EXPORT_SYMBOL vmlinux 0x8189a173 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x819bbee2 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81c4dcfb dev_emerg +EXPORT_SYMBOL vmlinux 0x81db0ac4 blk_finish_request +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f0e73d param_get_int +EXPORT_SYMBOL vmlinux 0x81f689fb dev_add_offload +EXPORT_SYMBOL vmlinux 0x81febbc5 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82152f12 release_firmware +EXPORT_SYMBOL vmlinux 0x8216d3ae unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x821fe0aa dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82aab063 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82cabc85 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x82d07cc4 of_find_property +EXPORT_SYMBOL vmlinux 0x82d6b0d0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x830bcce9 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x83524ba4 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x835273e2 vm_insert_page +EXPORT_SYMBOL vmlinux 0x8371b570 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x838e60f2 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x8392898a ns_capable +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x84014036 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x8410144b sock_setsockopt +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x844e474e security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x844f7177 simple_setattr +EXPORT_SYMBOL vmlinux 0x84556787 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x8456dc54 phy_device_register +EXPORT_SYMBOL vmlinux 0x846e5a60 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x84714db3 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84d9c1eb lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8500889a remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x8510517a sk_alloc +EXPORT_SYMBOL vmlinux 0x851fd02a inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x8520342f alloc_file +EXPORT_SYMBOL vmlinux 0x8525890e dev_open +EXPORT_SYMBOL vmlinux 0x85488d7c inode_needs_sync +EXPORT_SYMBOL vmlinux 0x8550f145 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x85514981 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85697fe5 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x857b6547 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x8586b8b6 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x85889f5b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85b05404 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c18928 proc_remove +EXPORT_SYMBOL vmlinux 0x85cdb9ec blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x85dcc89e max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e8bc04 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x85e93a8a mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f21f25 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x860794ae block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x860c1cda bioset_create +EXPORT_SYMBOL vmlinux 0x8618122e udp_poll +EXPORT_SYMBOL vmlinux 0x8627cab6 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x862c0c3f dentry_open +EXPORT_SYMBOL vmlinux 0x86394252 bio_copy_data +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86b1fd1d blk_fetch_request +EXPORT_SYMBOL vmlinux 0x86cf1e0f dma_direct_ops +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86dbf7f3 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8714c97b scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x8741dc9c netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x875c549e pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x87650464 sk_net_capable +EXPORT_SYMBOL vmlinux 0x87653bb1 generic_getxattr +EXPORT_SYMBOL vmlinux 0x877860c1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878f6c79 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x878fc7d5 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x87997842 generic_write_checks +EXPORT_SYMBOL vmlinux 0x87ee96dc neigh_update +EXPORT_SYMBOL vmlinux 0x87f156dc inode_init_always +EXPORT_SYMBOL vmlinux 0x87f1e23f dquot_initialize +EXPORT_SYMBOL vmlinux 0x87ff7eba tty_unlock +EXPORT_SYMBOL vmlinux 0x882a73a9 d_tmpfile +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x8857c18f sock_init_data +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888ffedc neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x88ba406d flush_dcache_page +EXPORT_SYMBOL vmlinux 0x88c2fd0f jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x890ba021 misc_register +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8930e63b __devm_request_region +EXPORT_SYMBOL vmlinux 0x894046da set_blocksize +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x898529e3 vmap +EXPORT_SYMBOL vmlinux 0x898abef2 generic_file_open +EXPORT_SYMBOL vmlinux 0x89934423 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x8998fdb5 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x899dd0e4 migrate_page +EXPORT_SYMBOL vmlinux 0x89a00983 netdev_emerg +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b43a1f agp_free_memory +EXPORT_SYMBOL vmlinux 0x89b95b4c sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89db1ae6 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x89f2b182 iget_failed +EXPORT_SYMBOL vmlinux 0x89fc70c6 set_bh_page +EXPORT_SYMBOL vmlinux 0x8a0015ec __quota_error +EXPORT_SYMBOL vmlinux 0x8a04b0b5 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1e93be of_get_property +EXPORT_SYMBOL vmlinux 0x8a3d3897 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4a412d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x8a4d61c1 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x8a503255 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5b50d8 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8170fc agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x8a980556 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa2ad7d remove_arg_zero +EXPORT_SYMBOL vmlinux 0x8aae1ac7 do_splice_direct +EXPORT_SYMBOL vmlinux 0x8ab3ad7f swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x8ac80ce9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x8ace8c7b pci_choose_state +EXPORT_SYMBOL vmlinux 0x8ad13d34 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x8ad4b98d param_set_ulong +EXPORT_SYMBOL vmlinux 0x8af831f6 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8afe5841 security_path_link +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4c4fb5 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6e12f5 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x8b6f4dd2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8bbd6ce2 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8bc8c660 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c054f69 of_dev_put +EXPORT_SYMBOL vmlinux 0x8c05e822 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x8c11b85f remap_pfn_range +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c22d4e8 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x8c430f17 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x8c5f548f genl_unregister_family +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c898acc keyring_clear +EXPORT_SYMBOL vmlinux 0x8c9fcd15 nd_device_register +EXPORT_SYMBOL vmlinux 0x8ca3a5d1 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x8cb5d198 dev_uc_init +EXPORT_SYMBOL vmlinux 0x8cb8c20e kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x8cc66da3 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd46840 skb_queue_head +EXPORT_SYMBOL vmlinux 0x8cd594f0 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x8cdb75e5 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d3df0b2 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x8d42f878 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x8d4a4839 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x8d4e9181 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5ecf72 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8f21a1 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8dadcc6a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x8dca5e6f tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x8dd85f21 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e08bc90 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x8e0b08cf jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x8e19e4c9 vc_resize +EXPORT_SYMBOL vmlinux 0x8e200d55 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x8e3ce180 input_reset_device +EXPORT_SYMBOL vmlinux 0x8e56bf2b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x8e67791c of_device_unregister +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec5deeb iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x8ef9d638 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc59f9b rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0x8fcadfd2 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x8fdb18d4 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x8ff19d76 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x8ff4acf3 param_set_ushort +EXPORT_SYMBOL vmlinux 0x90016645 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x90016b8d blk_queue_split +EXPORT_SYMBOL vmlinux 0x9006dbfc phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x9023a30a __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x905e839b inet_shutdown +EXPORT_SYMBOL vmlinux 0x909148bd skb_pull +EXPORT_SYMBOL vmlinux 0x90a0807d scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x90a9281f sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x90b7d95d pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x90c4d289 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x90d551ab bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x90d94e60 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x90e3a9ab __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x90f1e0ac kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x9113d38e jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x9115e25d mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9140d3ba sk_dst_check +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915d69e1 tty_register_device +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916a194d filemap_fault +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9177539f blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x917b219f page_readlink +EXPORT_SYMBOL vmlinux 0x918bae82 sock_no_accept +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x919df724 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c0fed5 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x91da3a54 tty_port_close +EXPORT_SYMBOL vmlinux 0x91efda5b sock_register +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x922aab5d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x9232bd4c proc_create_data +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924b8396 uart_match_port +EXPORT_SYMBOL vmlinux 0x926f9db9 dquot_operations +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x929b3b29 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b66fb7 dev_activate +EXPORT_SYMBOL vmlinux 0x92b71dd7 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x92d00d24 napi_get_frags +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fe8cad phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9303f755 fget +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930cbb9f save_mount_options +EXPORT_SYMBOL vmlinux 0x93264691 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x932975de of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x9339eb04 blk_free_tags +EXPORT_SYMBOL vmlinux 0x933aa6e8 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x93482414 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x9354fcde ibmebus_free_irq +EXPORT_SYMBOL vmlinux 0x93698406 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93869cde shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x93953427 simple_dname +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940e4e84 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x940e7bb9 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x94150446 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x9417c799 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x94184851 iterate_dir +EXPORT_SYMBOL vmlinux 0x9419e613 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x9439b61a vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x943de3eb of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x943ee2dd dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x948d321e bio_endio +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949e6a76 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x94a7b84a update_region +EXPORT_SYMBOL vmlinux 0x94bba29c try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x94c65469 udplite_prot +EXPORT_SYMBOL vmlinux 0x94d8d1ca swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x94ecb12b single_release +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9511de99 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951c4dc6 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9538f0d6 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954c2871 noop_fsync +EXPORT_SYMBOL vmlinux 0x9550a24f jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x9558f55d devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9583ca2d param_ops_invbool +EXPORT_SYMBOL vmlinux 0x958df5b8 vfs_rename +EXPORT_SYMBOL vmlinux 0x958f56b7 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x95a9e006 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x95b3e6e9 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x95c82b7f skb_trim +EXPORT_SYMBOL vmlinux 0x95fa6b65 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x96000d9f user_revoke +EXPORT_SYMBOL vmlinux 0x961ebbd0 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x9623e4d0 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9633d5f3 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x964742e7 km_is_alive +EXPORT_SYMBOL vmlinux 0x96630fb7 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x967be272 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x9680af56 mntget +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b42064 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96da7f0f md_done_sync +EXPORT_SYMBOL vmlinux 0x970cecaf inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x9726b37e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x973ffae1 tty_write_room +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974af522 kernel_write +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9756c99b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97963d2b prepare_binprm +EXPORT_SYMBOL vmlinux 0x97981266 netlink_unicast +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ad0115 current_fs_time +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97c6429b inet_add_offload +EXPORT_SYMBOL vmlinux 0x97cff57b neigh_table_clear +EXPORT_SYMBOL vmlinux 0x97d16072 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x97dae449 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x9811fba6 dev_alert +EXPORT_SYMBOL vmlinux 0x9812008b fb_set_suspend +EXPORT_SYMBOL vmlinux 0x982041ef nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x982425eb tty_set_operations +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98396231 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x984d7c67 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x9855034e dev_change_carrier +EXPORT_SYMBOL vmlinux 0x98625485 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9871bbb3 dma_find_channel +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9880cde7 submit_bh +EXPORT_SYMBOL vmlinux 0x9890cfee sock_kfree_s +EXPORT_SYMBOL vmlinux 0x98aaaf9c end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x98b199bc keyring_search +EXPORT_SYMBOL vmlinux 0x98c44520 kill_litter_super +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d0c579 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x98e47d98 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x98f57d49 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x98f6e6f3 console_start +EXPORT_SYMBOL vmlinux 0x9916f695 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x9918562f soft_cursor +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993f7eea skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x994c27b9 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996d1894 vme_dma_request +EXPORT_SYMBOL vmlinux 0x9980ca7e inet_csk_accept +EXPORT_SYMBOL vmlinux 0x99854035 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x9985cc31 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x99940ee1 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99b162d3 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x99c57f41 get_cached_acl +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d4c52f mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f6010e of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x99f99af0 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x99f9a184 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x9a19dd5f twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a287e4e __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x9a394458 read_dev_sector +EXPORT_SYMBOL vmlinux 0x9a3ecfc3 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x9a413b47 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x9a48be94 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x9a5f1cf3 vc_cons +EXPORT_SYMBOL vmlinux 0x9a86d54e unregister_filesystem +EXPORT_SYMBOL vmlinux 0x9a935b22 mdiobus_read +EXPORT_SYMBOL vmlinux 0x9a9a2b46 nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x9ab9a92e dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x9ae3fca7 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afdc192 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x9b0ba2ef scsi_block_requests +EXPORT_SYMBOL vmlinux 0x9b33d505 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b37f99d filemap_flush +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4c691a pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x9b576308 setup_new_exec +EXPORT_SYMBOL vmlinux 0x9b68301f kernel_getsockname +EXPORT_SYMBOL vmlinux 0x9b729e5b blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x9b730e7c bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x9b7d1abd devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9b7e85a6 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x9b8c9993 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc21af3 set_wb_congested +EXPORT_SYMBOL vmlinux 0x9bd343d2 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x9bde007f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0b18a1 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x9c18c4bb pcie_set_mps +EXPORT_SYMBOL vmlinux 0x9c2ac4b9 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c50f9ac scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9c7c465b account_page_redirty +EXPORT_SYMBOL vmlinux 0x9c801ec3 mutex_lock +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9caecc20 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9cd33523 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x9cdf593d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x9cf199b4 skb_pad +EXPORT_SYMBOL vmlinux 0x9d05e1e0 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1fd892 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x9d2faf0e md_error +EXPORT_SYMBOL vmlinux 0x9d391a35 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4af26b fsync_bdev +EXPORT_SYMBOL vmlinux 0x9d69b65f dst_discard_out +EXPORT_SYMBOL vmlinux 0x9d6be9c4 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d900529 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9d991e40 file_open_root +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3252e2 register_cdrom +EXPORT_SYMBOL vmlinux 0x9e4328f1 up_read +EXPORT_SYMBOL vmlinux 0x9e4979cb fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e83b2bc __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x9e937b8e dqput +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea6fc04 end_page_writeback +EXPORT_SYMBOL vmlinux 0x9eb33d14 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x9eb8e9f7 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9f029309 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x9f376021 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f51e8e7 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x9f602b3a elevator_alloc +EXPORT_SYMBOL vmlinux 0x9f6414dd sk_capable +EXPORT_SYMBOL vmlinux 0x9f65f9be __dst_free +EXPORT_SYMBOL vmlinux 0x9f6f498d pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x9f73a23a do_truncate +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f99975a writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x9fb59ffb generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdee7a3 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0280097 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa050f118 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xa0530f92 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xa0551b2a netdev_err +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa062a888 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08cd164 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xa093a776 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bb6737 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xa0c1a70b inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xa0c328d0 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xa0dad72b xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa1079702 proc_set_user +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1253609 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xa1373f53 netlink_set_err +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa154c67e tcp_splice_read +EXPORT_SYMBOL vmlinux 0xa15db5da uart_update_timeout +EXPORT_SYMBOL vmlinux 0xa161c985 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa16ca9e2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xa1a68144 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xa1b631e1 of_device_is_available +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b9b779 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1dd6542 phy_find_first +EXPORT_SYMBOL vmlinux 0xa1dee5f1 frame_vector_create +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa221b7d9 mem_section +EXPORT_SYMBOL vmlinux 0xa23e4b37 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xa2574ec7 init_task +EXPORT_SYMBOL vmlinux 0xa25ac3b6 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a28045 kernel_bind +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2b498f6 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xa2b919ec ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c7d5a6 blk_peek_request +EXPORT_SYMBOL vmlinux 0xa2ddfab3 __invalidate_device +EXPORT_SYMBOL vmlinux 0xa2f8a6b9 get_disk +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3178dbe mount_nodev +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31d2c00 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xa324b87d dput +EXPORT_SYMBOL vmlinux 0xa3291f23 bdget_disk +EXPORT_SYMBOL vmlinux 0xa3436729 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xa3623603 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa37c68f8 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xa3869a9f dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xa38e2d73 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39d3f56 dump_page +EXPORT_SYMBOL vmlinux 0xa3a904c6 __mdiobus_register +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3aec896 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xa3bd6121 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xa3bf0885 kobject_del +EXPORT_SYMBOL vmlinux 0xa42555fd mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xa43350f5 security_mmap_file +EXPORT_SYMBOL vmlinux 0xa44c6677 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa45577fe tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xa4606bec devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa462ce47 kobject_add +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa490527f netpoll_print_options +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d0cc81 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d87a56 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xa5335696 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55882bd mapping_tagged +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56901ee neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa56d55a0 elv_rb_find +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b9bbcf simple_transaction_get +EXPORT_SYMBOL vmlinux 0xa5c68a74 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xa5ecec29 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0xa6012df0 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xa6108350 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xa6120d86 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xa61e80d2 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xa6220d85 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xa631df8a cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63913e1 __frontswap_store +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa652d038 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xa657fad4 get_user_pages +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6737765 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68c0429 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xa68f0d2a get_unmapped_area +EXPORT_SYMBOL vmlinux 0xa693cf84 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa6b46a20 pci_request_regions +EXPORT_SYMBOL vmlinux 0xa6da3f6a inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa6e1bb05 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xa6f15c8d tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7001e67 devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xa702e22e vme_lm_request +EXPORT_SYMBOL vmlinux 0xa7206544 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa743bdd5 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa77c96d5 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xa77d6ce4 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xa7b20e43 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa7be39ab write_cache_pages +EXPORT_SYMBOL vmlinux 0xa7c378ac __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xa7d7e723 __scm_send +EXPORT_SYMBOL vmlinux 0xa7e20b41 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa804400d vfs_readf +EXPORT_SYMBOL vmlinux 0xa810e2c5 override_creds +EXPORT_SYMBOL vmlinux 0xa8182455 tty_free_termios +EXPORT_SYMBOL vmlinux 0xa81c3d65 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85bfa03 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xa86d496a d_genocide +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa885ed62 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xa89d88a3 d_set_d_op +EXPORT_SYMBOL vmlinux 0xa8c35e91 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa8e8fa5c pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xa8ec591e i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xa8f1cdae xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xa8f35392 kernel_accept +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa914de87 read_code +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa939ffb7 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa948b44f rtnl_notify +EXPORT_SYMBOL vmlinux 0xa96e49cb finish_no_open +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9928c8e param_ops_int +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa99b8118 param_get_long +EXPORT_SYMBOL vmlinux 0xa9a0b6ae lock_sock_fast +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c98f18 km_state_notify +EXPORT_SYMBOL vmlinux 0xa9fbf9d7 tcf_em_register +EXPORT_SYMBOL vmlinux 0xaa33aa31 phy_connect +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa5b2757 phy_disconnect +EXPORT_SYMBOL vmlinux 0xaa677d21 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa71ed74 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xaa75161d led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xaa76ce5f devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaa856000 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xaa965564 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xaaa11938 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xaabff10c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xaac1d487 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab13eece dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xab16a4b4 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xab1b17f5 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab866546 padata_do_serial +EXPORT_SYMBOL vmlinux 0xab8905f5 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xab90cbe9 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0xab914c55 up_write +EXPORT_SYMBOL vmlinux 0xabb2288b qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xabb51491 nvm_register_target +EXPORT_SYMBOL vmlinux 0xabbff9a1 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabce5326 kobject_set_name +EXPORT_SYMBOL vmlinux 0xabf12e43 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xabfa200c bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xac06a21e phy_set_max_speed +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0e51e6 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xac1367d3 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1a8f7c inet_stream_ops +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac34b0dd pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xac34d937 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xac45f4dc inet_put_port +EXPORT_SYMBOL vmlinux 0xac986f84 dev_get_stats +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacafd5f3 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xacb4bd50 try_to_release_page +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacca6eca netdev_change_features +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccd81f7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace417e2 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xacf3ab85 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0ffeb7 d_splice_alias +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad2af0c8 gen_pool_free +EXPORT_SYMBOL vmlinux 0xad4c1b51 flex_array_alloc +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad700422 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xad7050fe unlock_buffer +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad851b7e agp_create_memory +EXPORT_SYMBOL vmlinux 0xad94f2f2 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xad9d91b9 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xadab37ec of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xadb78962 d_find_alias +EXPORT_SYMBOL vmlinux 0xadb7a402 blk_run_queue +EXPORT_SYMBOL vmlinux 0xadba8c59 phy_detach +EXPORT_SYMBOL vmlinux 0xadc0d155 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xadd09176 seq_lseek +EXPORT_SYMBOL vmlinux 0xade2395c seq_hex_dump +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xadfe0db9 vme_bus_num +EXPORT_SYMBOL vmlinux 0xae1cd275 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xae3441e2 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae3e5312 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xae436fe2 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xae46e82b vga_get +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae6d8096 scmd_printk +EXPORT_SYMBOL vmlinux 0xae890350 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xae9aa2ce d_rehash +EXPORT_SYMBOL vmlinux 0xaea225db vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xaec35db4 flex_array_free +EXPORT_SYMBOL vmlinux 0xaecb4c30 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xaef41dcc scsi_unregister +EXPORT_SYMBOL vmlinux 0xaefa2c17 sock_rfree +EXPORT_SYMBOL vmlinux 0xaefb5576 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0afbad dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xaf18006b __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf350da7 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf66b3c6 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xaf68ae72 __kernel_write +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf743507 phy_print_status +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafa58ff6 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xafb0fd09 gen_pool_create +EXPORT_SYMBOL vmlinux 0xafb2310b inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xafb3e858 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xafdb42a1 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xafdc42b7 bdgrab +EXPORT_SYMBOL vmlinux 0xafe5e244 release_pages +EXPORT_SYMBOL vmlinux 0xafe84191 __init_rwsem +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0030189 nf_reinject +EXPORT_SYMBOL vmlinux 0xb0173205 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xb023ed42 iunique +EXPORT_SYMBOL vmlinux 0xb0370d25 tty_devnum +EXPORT_SYMBOL vmlinux 0xb03bdea1 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb04ef815 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xb05935c3 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xb05fa3ca xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06a88f8 key_validate +EXPORT_SYMBOL vmlinux 0xb07040e9 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xb08b9c4e call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a4e2aa netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xb0b0f591 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0cbc98d tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xb0d8b170 __mutex_init +EXPORT_SYMBOL vmlinux 0xb0de9e60 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e1c804 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xb0f372a2 nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0xb1095c0c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb1155958 set_device_ro +EXPORT_SYMBOL vmlinux 0xb12678da tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12e8f06 tty_hangup +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb16fcfaf put_io_context +EXPORT_SYMBOL vmlinux 0xb1958173 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xb1997e00 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1e68ec2 vfs_create +EXPORT_SYMBOL vmlinux 0xb200dfeb phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xb2058406 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xb2259a16 of_node_get +EXPORT_SYMBOL vmlinux 0xb227eb32 inet_frags_init +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb29011ba xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xb2b0627c bdput +EXPORT_SYMBOL vmlinux 0xb2bc9259 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c8a7ad of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb300942d input_open_device +EXPORT_SYMBOL vmlinux 0xb310ed75 audit_log_start +EXPORT_SYMBOL vmlinux 0xb317539f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb339a724 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xb34ad912 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb34f40a6 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xb34fa400 from_kgid +EXPORT_SYMBOL vmlinux 0xb35195a2 done_path_create +EXPORT_SYMBOL vmlinux 0xb352dc3d simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xb359c6fe pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb35fe2c5 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xb37e9f1e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xb3813ebb vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xb384e327 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xb3aea7b4 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb3c36d63 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xb3cc9412 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d6472a truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb3ed5331 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb44d018d swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xb4547535 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xb457a4ca revalidate_disk +EXPORT_SYMBOL vmlinux 0xb4674e24 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xb46fbda3 of_device_alloc +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb4923c52 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xb49fb01e led_update_brightness +EXPORT_SYMBOL vmlinux 0xb4bd8229 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xb4c5df6a unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xb4d388cc bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xb4de41f7 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xb4eed3c0 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xb4f9fb95 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xb51c93a9 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xb51e759f __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xb53f4183 component_match_add +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5894fad proto_unregister +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a7606b module_layout +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b8b8bb d_prune_aliases +EXPORT_SYMBOL vmlinux 0xb5c7a384 param_ops_short +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dce0df bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb6161da4 skb_seq_read +EXPORT_SYMBOL vmlinux 0xb6171c11 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62d63b6 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xb64e068e security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xb6509c1b dev_alloc_name +EXPORT_SYMBOL vmlinux 0xb657ed94 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xb65a5123 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xb65dcacb flow_cache_fini +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ab51ce genl_notify +EXPORT_SYMBOL vmlinux 0xb6b8bd13 nobh_write_end +EXPORT_SYMBOL vmlinux 0xb6c45bbe mpage_writepage +EXPORT_SYMBOL vmlinux 0xb6c6807b dquot_file_open +EXPORT_SYMBOL vmlinux 0xb6edd8cf decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xb6f2906f netdev_crit +EXPORT_SYMBOL vmlinux 0xb6fa8759 send_sig +EXPORT_SYMBOL vmlinux 0xb729cf8a copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb759bdbb skb_clone +EXPORT_SYMBOL vmlinux 0xb75a4e08 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xb76acf27 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xb76e61ce inet_accept +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77932eb flex_array_clear +EXPORT_SYMBOL vmlinux 0xb7831901 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xb78677eb __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xb79811a9 abort_creds +EXPORT_SYMBOL vmlinux 0xb79c94f4 __register_nls +EXPORT_SYMBOL vmlinux 0xb7c98c51 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xb7cbc646 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb7f01526 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xb81ee424 inode_init_owner +EXPORT_SYMBOL vmlinux 0xb824ef98 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb8269c8e gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xb83f6e58 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xb84de9a7 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xb85bea15 d_lookup +EXPORT_SYMBOL vmlinux 0xb85c9e49 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xb8649356 pci_restore_state +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb89e6371 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xb8a58f01 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb8ab09f9 inet6_offloads +EXPORT_SYMBOL vmlinux 0xb8b20307 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xb8bfc6cf kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xb8cae6d6 poll_freewait +EXPORT_SYMBOL vmlinux 0xb8e6b79e blk_end_request +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90b75c8 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xb90f8a77 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xb92c546e check_disk_change +EXPORT_SYMBOL vmlinux 0xb9405679 register_shrinker +EXPORT_SYMBOL vmlinux 0xb95e9bbb pci_claim_resource +EXPORT_SYMBOL vmlinux 0xb96383a6 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb96adb86 __register_binfmt +EXPORT_SYMBOL vmlinux 0xb9894d26 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xb9bbfd58 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f257bc tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xba06a115 down_write +EXPORT_SYMBOL vmlinux 0xba2271ee inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xba2c0fa1 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba570166 bio_advance +EXPORT_SYMBOL vmlinux 0xba62e1b6 __brelse +EXPORT_SYMBOL vmlinux 0xba64b814 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xba6b2e96 netif_device_attach +EXPORT_SYMBOL vmlinux 0xba6bf976 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xba72a908 blk_get_request +EXPORT_SYMBOL vmlinux 0xba751580 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xba76893b dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xba790e41 netdev_alert +EXPORT_SYMBOL vmlinux 0xba82a72d bio_copy_kern +EXPORT_SYMBOL vmlinux 0xba87583e seq_puts +EXPORT_SYMBOL vmlinux 0xbaaa6916 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xbab45f80 dev_addr_add +EXPORT_SYMBOL vmlinux 0xbab82372 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xbad16cd0 have_submounts +EXPORT_SYMBOL vmlinux 0xbaddad52 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xbaf02e55 md_check_recovery +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb18787b iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xbb2eab00 pipe_lock +EXPORT_SYMBOL vmlinux 0xbb33556e xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4be77f load_nls_default +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb517850 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb654561 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xbb7e334f netlink_ack +EXPORT_SYMBOL vmlinux 0xbb8c8a7d ps2_end_command +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9aaccb page_waitqueue +EXPORT_SYMBOL vmlinux 0xbba3dcd2 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xbbab6a40 __bforget +EXPORT_SYMBOL vmlinux 0xbbadf58b devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbbdaa14 vme_slot_num +EXPORT_SYMBOL vmlinux 0xbbe49ed3 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xbbedcfd3 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xbbf0d5a5 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xbc1cd492 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc69da9e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xbc7611e5 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xbc798219 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbca384bc kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd43053 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf87993 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xbd062a58 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xbd07c12a pci_select_bars +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd572892 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xbd6d79f1 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xbd73f350 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xbd7c55bf inode_permission +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd92deca mmc_request_done +EXPORT_SYMBOL vmlinux 0xbddb44f5 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xbe1b108d xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2df2d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xbe6c8bfb vfs_statfs +EXPORT_SYMBOL vmlinux 0xbe9b658d i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xbea6acca vlan_vid_add +EXPORT_SYMBOL vmlinux 0xbeaf6bed blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xbeb16ac0 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xbeb1bde1 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xbec80043 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef90e00 softnet_data +EXPORT_SYMBOL vmlinux 0xbefc8a4d md_integrity_register +EXPORT_SYMBOL vmlinux 0xbf0b46fa blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xbf18d8e9 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf86e5d1 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xbf8b6363 tty_throttle +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa45a3a of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc87894 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbfeec5c1 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc0059e01 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xc01d8042 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xc021a4d1 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xc024ebc3 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xc02a548b mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xc03b1df9 __neigh_create +EXPORT_SYMBOL vmlinux 0xc042878c reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xc063e952 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc078e497 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0870609 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a909eb pci_disable_msix +EXPORT_SYMBOL vmlinux 0xc0a9c94c inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0xc0ce80f0 pci_release_regions +EXPORT_SYMBOL vmlinux 0xc0cead00 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xc122b276 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xc13ef5d2 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xc14319d2 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc16686f8 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xc1694d46 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xc16df738 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xc1726acc tcf_exts_change +EXPORT_SYMBOL vmlinux 0xc1760878 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xc18300bc try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc1917492 vfs_setpos +EXPORT_SYMBOL vmlinux 0xc1c9dea6 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc21f4158 seq_putc +EXPORT_SYMBOL vmlinux 0xc2240f2a ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xc231d7c2 sock_i_ino +EXPORT_SYMBOL vmlinux 0xc242458f generic_update_time +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc26eae58 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xc27588b2 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xc27da95c __sk_dst_check +EXPORT_SYMBOL vmlinux 0xc27fffee fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xc2874161 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a4704f d_add_ci +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2be5e11 brioctl_set +EXPORT_SYMBOL vmlinux 0xc2c0a95d sk_ns_capable +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2fc0e50 iterate_fd +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc312f356 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xc32dbce2 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xc379dc6c unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xc37e895e devm_memunmap +EXPORT_SYMBOL vmlinux 0xc3abd374 mac_find_mode +EXPORT_SYMBOL vmlinux 0xc3abd442 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xc3b82c52 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c43f0d param_ops_ushort +EXPORT_SYMBOL vmlinux 0xc3dc9fe9 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc4137f2f phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xc42c0ba2 simple_write_begin +EXPORT_SYMBOL vmlinux 0xc44344c9 nvm_end_io +EXPORT_SYMBOL vmlinux 0xc44c8a82 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xc4546e2f scsi_execute +EXPORT_SYMBOL vmlinux 0xc45636b4 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xc4564f17 kill_fasync +EXPORT_SYMBOL vmlinux 0xc460559f wireless_spy_update +EXPORT_SYMBOL vmlinux 0xc475a2c9 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xc47ae26d nvm_put_blk +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc4831001 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4f2de93 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc4f9851e inode_set_flags +EXPORT_SYMBOL vmlinux 0xc4fb02e3 param_get_ushort +EXPORT_SYMBOL vmlinux 0xc51177cb module_put +EXPORT_SYMBOL vmlinux 0xc51d3f66 netdev_printk +EXPORT_SYMBOL vmlinux 0xc530c07a tso_start +EXPORT_SYMBOL vmlinux 0xc53ddc6b blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xc541cf38 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55b8e5e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc5682b70 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xc57a442f inet_bind +EXPORT_SYMBOL vmlinux 0xc58b51ed bdevname +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a69b5f tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xc5b1d5b7 sync_inode +EXPORT_SYMBOL vmlinux 0xc5cd326a __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xc5d303bc devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e5a091 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xc5f16001 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc5fe86fc eth_change_mtu +EXPORT_SYMBOL vmlinux 0xc619083d tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xc61cc7bc agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xc630afea phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6351d5b dev_disable_lro +EXPORT_SYMBOL vmlinux 0xc6453600 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xc6574b76 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc672edc8 sock_create_lite +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6774da5 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xc67cbaea blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc696fab9 generic_readlink +EXPORT_SYMBOL vmlinux 0xc698e9de crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xc6a444b0 param_ops_bint +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c206e4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d5221d flow_cache_init +EXPORT_SYMBOL vmlinux 0xc6d98c69 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xc6e1d17f inet_offloads +EXPORT_SYMBOL vmlinux 0xc6f24431 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xc6f9f1f6 param_ops_string +EXPORT_SYMBOL vmlinux 0xc710da2f blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xc7205b65 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72a246c mach_powernv +EXPORT_SYMBOL vmlinux 0xc73bd396 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7591cf0 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xc76e4f3c pci_reenable_device +EXPORT_SYMBOL vmlinux 0xc76ef9fb pnv_pci_get_gpu_dev +EXPORT_SYMBOL vmlinux 0xc77897e6 fasync_helper +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a56457 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xc7cb9bcb new_inode +EXPORT_SYMBOL vmlinux 0xc7cbcf5e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xc7cc850c neigh_xmit +EXPORT_SYMBOL vmlinux 0xc7e29623 skb_make_writable +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc7f3ffea arp_create +EXPORT_SYMBOL vmlinux 0xc821b305 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xc8264e22 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83e232a pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84105be pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc851d4a5 dev_uc_add +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc87233ad __genl_register_family +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88de088 write_one_page +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b0d599 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xc8b39473 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bf9ed0 ppc_md +EXPORT_SYMBOL vmlinux 0xc8fe5e34 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xc910bd84 to_nd_btt +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc916be74 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc9270045 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc92cbd28 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9595406 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc963feec pci_platform_rom +EXPORT_SYMBOL vmlinux 0xc96bd929 register_md_personality +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a2eb49 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xc9cfed25 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xc9e68486 tcp_connect +EXPORT_SYMBOL vmlinux 0xca071db3 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3abc1a scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9d4e03 inet_addr_type +EXPORT_SYMBOL vmlinux 0xca9f9ae5 sock_efree +EXPORT_SYMBOL vmlinux 0xcac9a1b8 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad798d8 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf624e3 padata_free +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1819db mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xcb1893d4 of_match_node +EXPORT_SYMBOL vmlinux 0xcb224a4a sock_from_file +EXPORT_SYMBOL vmlinux 0xcb2fd763 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xcb3773ad napi_complete_done +EXPORT_SYMBOL vmlinux 0xcb3d79a9 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xcb42af54 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xcb742d54 elv_add_request +EXPORT_SYMBOL vmlinux 0xcb870af8 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xcb9145be km_state_expired +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcba4edae __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xcbb1e4eb giveup_fpu +EXPORT_SYMBOL vmlinux 0xcbb2b0dd inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xcbb91905 pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc3b94e eeh_check_failure +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbce9e9d __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xcbd14406 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xcbd1feb6 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xcbec9c7d get_super_thawed +EXPORT_SYMBOL vmlinux 0xcbecbf7f fput +EXPORT_SYMBOL vmlinux 0xcbee9ba3 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xcc1534aa loop_register_transfer +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc215573 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc288b56 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xcc34dfa2 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5e76db dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd815de agp_enable +EXPORT_SYMBOL vmlinux 0xccf33ea6 ps2_drain +EXPORT_SYMBOL vmlinux 0xcd02b0d3 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd081b68 give_up_console +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd26539f netif_carrier_off +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3817b3 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xcd520810 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd65b547 __inet_hash +EXPORT_SYMBOL vmlinux 0xcd66b837 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xcd7d3194 pci_iounmap +EXPORT_SYMBOL vmlinux 0xcd7e1c5c pci_request_region +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd8060ce put_disk +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd9cd254 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcdb3bb11 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde12e33 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xcde87e6c dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xcdf49b00 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xcdfb89d2 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xce10e250 wake_up_process +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce285861 dm_get_device +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce3c6479 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xce3df68d ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce52444a mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5f3f7d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xce7817de __breadahead +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce80be7e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xce85453d __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xcea5903c dev_printk_emit +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb2552c scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xcebebd16 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xcec3b69e cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xcec7398a __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcee0df56 set_page_dirty +EXPORT_SYMBOL vmlinux 0xceea6256 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf5c0f8a textsearch_unregister +EXPORT_SYMBOL vmlinux 0xcf6e16b0 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xcf73ffbf generic_listxattr +EXPORT_SYMBOL vmlinux 0xcfdad0f4 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xcfdf8d60 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xcff34d61 scsi_device_put +EXPORT_SYMBOL vmlinux 0xcff673bc dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xd0081b3a clear_inode +EXPORT_SYMBOL vmlinux 0xd03702e0 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xd04b1b04 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xd04c6b2c netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xd04fc71b wireless_send_event +EXPORT_SYMBOL vmlinux 0xd05cb622 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xd0605982 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0750ba7 pps_register_source +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd0974474 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bea350 bio_chain +EXPORT_SYMBOL vmlinux 0xd0c755cf pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xd0ea1f06 stop_tty +EXPORT_SYMBOL vmlinux 0xd0ed3e02 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd11d80d0 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd144b594 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd14be6a2 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xd1615637 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xd16a76ca mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xd1702485 submit_bio +EXPORT_SYMBOL vmlinux 0xd1734910 ps2_init +EXPORT_SYMBOL vmlinux 0xd17e57a3 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1aa21a7 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xd1c0dda4 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1f77a73 ip_defrag +EXPORT_SYMBOL vmlinux 0xd20c3937 flex_array_get +EXPORT_SYMBOL vmlinux 0xd22b40e1 get_acl +EXPORT_SYMBOL vmlinux 0xd230344e skb_copy_bits +EXPORT_SYMBOL vmlinux 0xd230f76b xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xd2339d25 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xd23f8deb netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd2559545 km_query +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2672681 input_release_device +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28ca027 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd2a239cb dev_driver_string +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e21861 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xd2f3e87a of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd2f51d3a fb_get_mode +EXPORT_SYMBOL vmlinux 0xd2ffd65a sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xd31cba40 nf_register_hook +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32bcc83 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd33e2e31 mdiobus_write +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd36e9104 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xd36fab7b param_get_uint +EXPORT_SYMBOL vmlinux 0xd37871e7 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xd388c73e copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd38b131c pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xd39956a0 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xd3b69d30 __blk_end_request +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3bc9f40 __napi_complete +EXPORT_SYMBOL vmlinux 0xd3ccad7d wait_iff_congested +EXPORT_SYMBOL vmlinux 0xd3d3fcab unregister_nls +EXPORT_SYMBOL vmlinux 0xd3fc67aa kill_bdev +EXPORT_SYMBOL vmlinux 0xd4062f64 __get_page_tail +EXPORT_SYMBOL vmlinux 0xd42e9de5 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xd438526e generic_removexattr +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd49ad1e7 vio_get_attribute +EXPORT_SYMBOL vmlinux 0xd4a55393 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd4c1285d pci_bus_type +EXPORT_SYMBOL vmlinux 0xd4c1c4af dup_iter +EXPORT_SYMBOL vmlinux 0xd4d51699 param_ops_byte +EXPORT_SYMBOL vmlinux 0xd4dbd1f0 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xd4f682f8 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xd4fc3794 skb_checksum +EXPORT_SYMBOL vmlinux 0xd4fdd1f0 dst_init +EXPORT_SYMBOL vmlinux 0xd51b5408 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xd536d0e1 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55328c1 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd5574439 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xd55eaad3 open_exec +EXPORT_SYMBOL vmlinux 0xd5712d88 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xd594c904 get_vaddr_frames +EXPORT_SYMBOL vmlinux 0xd5b19794 path_noexec +EXPORT_SYMBOL vmlinux 0xd5ba7f45 __napi_schedule +EXPORT_SYMBOL vmlinux 0xd5d2e266 ps2_command +EXPORT_SYMBOL vmlinux 0xd5d8cd32 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd626ed45 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63ac01a proto_register +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6690424 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xd67b8ed1 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69588cf simple_open +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ebe7d9 set_security_override +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6ee9da7 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd703b0b9 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xd703cfff pcie_get_mps +EXPORT_SYMBOL vmlinux 0xd7351fc8 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xd7472483 param_set_short +EXPORT_SYMBOL vmlinux 0xd7559404 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd767a1f3 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd768733f scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xd76e0b11 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd7714416 dump_emit +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd7a81cf0 igrab +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f6c174 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xd7f94c1d crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xd847350b vga_client_register +EXPORT_SYMBOL vmlinux 0xd854fd3c phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xd85c29e9 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xd85c4303 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xd877d83b blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89e1eb3 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xd8a00699 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bec1f5 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd8d334cd of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xd8dd86d2 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd93553b3 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xd94d1f66 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd9590d6b ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98b6749 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xd991a9c4 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xd9932197 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xd9a3f465 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xd9ac9ca2 complete_request_key +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda234e93 bdev_read_only +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda626e16 tcp_req_err +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9d6416 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xdaa8d923 scsi_add_device +EXPORT_SYMBOL vmlinux 0xdab09a68 touch_buffer +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdac74a3e vme_irq_handler +EXPORT_SYMBOL vmlinux 0xdac7d17b register_gifconf +EXPORT_SYMBOL vmlinux 0xdac847a5 noop_qdisc +EXPORT_SYMBOL vmlinux 0xdaca795f inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xdaddbbf1 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xdae2da85 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xdae92a62 dev_change_flags +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdafa1f9c simple_empty +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb295dbd sk_reset_timer +EXPORT_SYMBOL vmlinux 0xdb2e6172 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xdb376b44 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xdb3a811f sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb69d185 genphy_config_init +EXPORT_SYMBOL vmlinux 0xdb6a639d rtnl_unicast +EXPORT_SYMBOL vmlinux 0xdb6dbd5c udp_prot +EXPORT_SYMBOL vmlinux 0xdb73efc1 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb86cd96 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xdbbc7573 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xdbf0257d tcp_conn_request +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc214961 fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xdc309e3f sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xdc3753b3 srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc63ccfd of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xdc74f162 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xdc7b6ea4 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xdc80a5e6 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xdc840b74 simple_write_end +EXPORT_SYMBOL vmlinux 0xdc89ef36 cdev_init +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca40816 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdce3ffb7 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xdce59bf7 get_phy_device +EXPORT_SYMBOL vmlinux 0xdce7702a nvm_get_blk +EXPORT_SYMBOL vmlinux 0xdd42ad9f __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd912a29 __block_write_begin +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9853ad km_policy_expired +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddc449dc proc_symlink +EXPORT_SYMBOL vmlinux 0xddcf53c4 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xde0a7a9d blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xde28517b mount_subtree +EXPORT_SYMBOL vmlinux 0xde29053e blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde58404e put_page +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde738550 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xde76321a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdec2fb2c dev_uc_del +EXPORT_SYMBOL vmlinux 0xdee2f3c2 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xdef9d805 console_stop +EXPORT_SYMBOL vmlinux 0xdf0dc26b sk_wait_data +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf30ef07 cdrom_open +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf57bfd3 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xdf60295f from_kuid_munged +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6bdf41 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfaef941 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xdfbf2926 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd08bfa block_write_end +EXPORT_SYMBOL vmlinux 0xdfe59b97 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe011c148 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xe03703c8 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xe038e12e jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xe03f331f tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xe045f3ef install_exec_creds +EXPORT_SYMBOL vmlinux 0xe0483488 __devm_release_region +EXPORT_SYMBOL vmlinux 0xe04aac0b __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05b85c1 tty_kref_put +EXPORT_SYMBOL vmlinux 0xe05d82fc i2c_transfer +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06e1706 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bdefd6 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xe0c7416c devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xe0cb4486 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe0d60e74 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe119eafe key_invalidate +EXPORT_SYMBOL vmlinux 0xe128190d __skb_checksum +EXPORT_SYMBOL vmlinux 0xe1320156 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe16dc51c xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xe171d75b of_dev_get +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe180612e __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xe18f80ad sock_update_memcg +EXPORT_SYMBOL vmlinux 0xe1a52385 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe1b6755a jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe1e11f84 register_filesystem +EXPORT_SYMBOL vmlinux 0xe1e72aa5 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xe1ee40d6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe20723ef nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xe220a5d8 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe223ae11 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23065d6 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24f38a0 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe258e1d3 audit_log +EXPORT_SYMBOL vmlinux 0xe27bce56 arp_tbl +EXPORT_SYMBOL vmlinux 0xe28de94b blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2ab5269 send_sig_info +EXPORT_SYMBOL vmlinux 0xe2b171c3 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2cac1e1 cont_write_begin +EXPORT_SYMBOL vmlinux 0xe2cdfddf param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e05464 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe314e8fb cpu_core_map +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe357f6f8 free_netdev +EXPORT_SYMBOL vmlinux 0xe35d0d5a filemap_map_pages +EXPORT_SYMBOL vmlinux 0xe375dae3 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe3780fbc tcp_parse_options +EXPORT_SYMBOL vmlinux 0xe37e4b87 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe4079cdf lock_fb_info +EXPORT_SYMBOL vmlinux 0xe42799bb blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xe42a4dc4 md_register_thread +EXPORT_SYMBOL vmlinux 0xe45632d9 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xe4668b33 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe492d07d blk_complete_request +EXPORT_SYMBOL vmlinux 0xe494979e tcp_release_cb +EXPORT_SYMBOL vmlinux 0xe49d1a13 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xe4a44b82 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xe4b45f1f iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xe4c1c41f unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe4d3d5b4 pci_clear_master +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50c321a kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xe5110685 kthread_stop +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5418ecd xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xe549e5b2 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5930140 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xe595f90a cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d02cc9 tty_name +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe61005eb registered_fb +EXPORT_SYMBOL vmlinux 0xe622e585 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xe638c264 __break_lease +EXPORT_SYMBOL vmlinux 0xe644561a dev_get_iflink +EXPORT_SYMBOL vmlinux 0xe6476e92 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xe6484794 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe64e837c pci_dev_put +EXPORT_SYMBOL vmlinux 0xe654c769 kernel_read +EXPORT_SYMBOL vmlinux 0xe65a73d7 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0xe65cd8af bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6c16c4e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xe6c97221 PDE_DATA +EXPORT_SYMBOL vmlinux 0xe6d150b6 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xe6da570f mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xe6dcab06 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xe6e19ab8 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe6ea712d generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xe6f3dd11 nvm_unregister_target +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fcad64 param_get_byte +EXPORT_SYMBOL vmlinux 0xe7036d4d set_anon_super +EXPORT_SYMBOL vmlinux 0xe7058f19 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xe7158e59 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0xe71ee41e ata_link_printk +EXPORT_SYMBOL vmlinux 0xe71efb67 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xe7283287 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe7290319 user_path_create +EXPORT_SYMBOL vmlinux 0xe7363d14 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xe73e4937 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xe74593e1 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xe761b260 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xe76c018e of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xe7764bf3 backlight_device_register +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6465b of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e87879 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xe7f6a128 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xe7f6be5e mpage_readpages +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8274ea6 file_remove_privs +EXPORT_SYMBOL vmlinux 0xe82c1412 inode_init_once +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe859bc2f agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xe85b7d1e of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xe8711a56 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xe8744885 blk_put_request +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87a26ed mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xe87a9874 lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0xe886ed50 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe887a108 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xe88a7a51 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xe88b8c17 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8af68c4 skb_push +EXPORT_SYMBOL vmlinux 0xe8b31a0f pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xe8b98d4a xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8cc17ed netif_napi_add +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe8f478d2 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe910fcc6 bdi_register +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93627d8 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe93c5958 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xe942c33c skb_unlink +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9590abe kfree_skb +EXPORT_SYMBOL vmlinux 0xe95f8e60 elv_rb_add +EXPORT_SYMBOL vmlinux 0xe969baec __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xe96fff8c follow_down_one +EXPORT_SYMBOL vmlinux 0xe971876a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xe97311d8 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xe9999d9c security_path_truncate +EXPORT_SYMBOL vmlinux 0xe9b1c8d6 dev_mc_add +EXPORT_SYMBOL vmlinux 0xe9b739f8 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xe9b90064 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe9d2054e loop_backing_file +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea483806 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xea525ef3 netdev_warn +EXPORT_SYMBOL vmlinux 0xea7896be input_get_keycode +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea8b29e6 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeab20eb5 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xead65b82 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xeadcf756 prepare_creds +EXPORT_SYMBOL vmlinux 0xeaf2c553 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xeb248b56 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3a460a seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb6c5397 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xeb730496 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xeb77d911 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb90c859 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba48136 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xeba5524a ibmebus_bus_type +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebd71411 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xebd91d3c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xebdf0934 f_setown +EXPORT_SYMBOL vmlinux 0xec018249 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xec0d33d3 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xec1febbe acl_by_type +EXPORT_SYMBOL vmlinux 0xec293e2c inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xec30472e start_tty +EXPORT_SYMBOL vmlinux 0xec438318 bio_init +EXPORT_SYMBOL vmlinux 0xec4a22eb of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xec6a14e0 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xec6e7986 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xec7b63b0 mount_ns +EXPORT_SYMBOL vmlinux 0xec992645 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xecb89c04 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xecbad17d blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc85bd1 make_kuid +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xece693f5 d_move +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf7aeb6 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xed017ebf fb_find_mode +EXPORT_SYMBOL vmlinux 0xed09f083 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xed135415 __vfs_read +EXPORT_SYMBOL vmlinux 0xed1d87d0 nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xed225543 sock_no_connect +EXPORT_SYMBOL vmlinux 0xed496151 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xed4f15c5 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed991947 netdev_update_features +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb02f90 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbb7499 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xedbce555 tty_port_put +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedcdd6f5 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee4150b1 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xee45f34c module_refcount +EXPORT_SYMBOL vmlinux 0xee4d6e64 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xee5f9454 d_make_root +EXPORT_SYMBOL vmlinux 0xee67cd44 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xee791034 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0xee859e23 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xee86d271 twl6040_power +EXPORT_SYMBOL vmlinux 0xee8df901 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb7ba52 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xeedf786f i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef82e49 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xef1ebff6 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xef2b9502 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xef452e6b i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xef553fc2 key_link +EXPORT_SYMBOL vmlinux 0xef56c98e mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xef588dbe blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xef5c63a5 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xef6a9712 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xef6b21d8 iget5_locked +EXPORT_SYMBOL vmlinux 0xef8155c5 poll_initwait +EXPORT_SYMBOL vmlinux 0xef9c0d8b scsi_host_get +EXPORT_SYMBOL vmlinux 0xefb15d97 from_kuid +EXPORT_SYMBOL vmlinux 0xefbb28d8 mmc_free_host +EXPORT_SYMBOL vmlinux 0xefbe6a67 scsi_print_result +EXPORT_SYMBOL vmlinux 0xefc2704e phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xefc2e884 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd5cfca mpage_writepages +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0028278 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf036fbe3 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf0506a52 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf0707d76 dm_register_target +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf0825a8b d_walk +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0b20e4c param_set_ullong +EXPORT_SYMBOL vmlinux 0xf0b2dc59 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xf0b65cf4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xf0c1f44e vio_find_node +EXPORT_SYMBOL vmlinux 0xf0ce3187 security_path_chown +EXPORT_SYMBOL vmlinux 0xf0d78740 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0xf0ee2ba0 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f07ab4 d_alloc +EXPORT_SYMBOL vmlinux 0xf0f44543 netdev_info +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf1089ce3 skb_store_bits +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1249afb ilookup5 +EXPORT_SYMBOL vmlinux 0xf12f0ab0 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf17fd2fb lwtunnel_input +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf1899237 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xf192e1df scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xf19438de __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1972707 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xf1ae92fe msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xf1aec990 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xf1b7ae02 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xf1c598a1 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xf1d91fc6 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcf16e __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf216fd18 of_phy_connect +EXPORT_SYMBOL vmlinux 0xf217726d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xf21912e7 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf262b6b3 srp_rport_get +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2aa7bde mmc_start_req +EXPORT_SYMBOL vmlinux 0xf2be0d60 dentry_unhash +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2fc6672 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xf312b773 elv_rb_del +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31e6247 dev_err +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3461ccf tcp_ioctl +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34e6780 pci_release_region +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf353f98e pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf3546499 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xf35857c7 tso_build_data +EXPORT_SYMBOL vmlinux 0xf37cbf8b udp6_csum_init +EXPORT_SYMBOL vmlinux 0xf3870fae mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xf389fa12 sg_miter_start +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38fdc3f pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3b0e661 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xf3c0f751 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xf3c42a0a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xf3d0a2bc inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf41868bb nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44eb0be datagram_poll +EXPORT_SYMBOL vmlinux 0xf45c83ec __frontswap_test +EXPORT_SYMBOL vmlinux 0xf4659e4a skb_tx_error +EXPORT_SYMBOL vmlinux 0xf46cddb5 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4b4ddab inet6_add_offload +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c2e875 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xf4cb4d25 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xf4cc624f jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xf4ced368 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xf4d1087f i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f6d248 param_set_byte +EXPORT_SYMBOL vmlinux 0xf4fb0131 follow_up +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf537f9e5 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53e93ec skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf56831b6 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf569bfaf blk_requeue_request +EXPORT_SYMBOL vmlinux 0xf57817ec alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xf59f05bd __dax_fault +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5a661ab __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xf5ba13a3 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xf5c2718e nf_log_unset +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5cc516f max8998_write_reg +EXPORT_SYMBOL vmlinux 0xf5d5c0f2 generic_write_end +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f14aea freeze_bdev +EXPORT_SYMBOL vmlinux 0xf61c6faa mark_info_dirty +EXPORT_SYMBOL vmlinux 0xf62dd12d filp_close +EXPORT_SYMBOL vmlinux 0xf6333a84 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6407d89 xfrm_input +EXPORT_SYMBOL vmlinux 0xf6410401 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xf645c16c i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xf65a68b5 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf66a45ff blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6889430 inet_select_addr +EXPORT_SYMBOL vmlinux 0xf68c851a fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e205c5 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xf6e25cae vga_put +EXPORT_SYMBOL vmlinux 0xf6e3e9d0 input_grab_device +EXPORT_SYMBOL vmlinux 0xf6e8d045 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f0f1e9 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6ff59db tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xf705b553 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xf70d6bc4 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf721a143 irq_to_desc +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76ffffa md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xf79c8822 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xf7adf98f twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xf7b7ed21 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xf7bec6a1 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xf7d15e52 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xf7f213df fb_show_logo +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82d0aa0 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf844f3db __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf8488422 seq_pad +EXPORT_SYMBOL vmlinux 0xf8529939 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xf85d9b3a kobject_put +EXPORT_SYMBOL vmlinux 0xf865a354 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xf88485f5 kfree_put_link +EXPORT_SYMBOL vmlinux 0xf8a73c08 address_space_init_once +EXPORT_SYMBOL vmlinux 0xf8ae40b3 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xf8b2c382 md_reload_sb +EXPORT_SYMBOL vmlinux 0xf8ba4907 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf8bf46a9 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf8bf966a blk_start_request +EXPORT_SYMBOL vmlinux 0xf8c93b15 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xf8cac32e rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8dcc9fe generic_read_dir +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8fd8a78 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xf9010f71 setattr_copy +EXPORT_SYMBOL vmlinux 0xf90225cc generic_delete_inode +EXPORT_SYMBOL vmlinux 0xf9038bcf smp_call_function_many +EXPORT_SYMBOL vmlinux 0xf9293462 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xf92f9b74 I_BDEV +EXPORT_SYMBOL vmlinux 0xf93c8451 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xf978929b gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf98d0f8c __f_setown +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a641cb ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9cb7423 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xf9d5dede agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xf9e223d2 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xf9eacf43 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9fb0d2d d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xfa3187c0 find_vma +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa87da1a force_sig +EXPORT_SYMBOL vmlinux 0xfa8a4da2 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xfa8c7062 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xfa9563fe dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad3369b blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaefd41a dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xfaf549e4 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xfafaa232 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xfb08cbde set_groups +EXPORT_SYMBOL vmlinux 0xfb0b2594 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xfb11ba69 revert_creds +EXPORT_SYMBOL vmlinux 0xfb1725e7 of_device_register +EXPORT_SYMBOL vmlinux 0xfb25b8b9 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xfb29428f __getblk_slow +EXPORT_SYMBOL vmlinux 0xfb3851b5 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xfb647b0c mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6b00d1 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xfb790a38 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xfb7e6860 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0xfb904186 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xfb922163 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9600bd netif_rx_ni +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb69b6f param_set_copystring +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd2fcd9 padata_stop +EXPORT_SYMBOL vmlinux 0xfbdd4c01 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xfbe6d3a9 seq_read +EXPORT_SYMBOL vmlinux 0xfbefb8c1 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xfbf24870 i2c_release_client +EXPORT_SYMBOL vmlinux 0xfbf2f4c6 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1284d7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xfc1e5f5f jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc452f71 __register_chrdev +EXPORT_SYMBOL vmlinux 0xfc52e9d6 tcf_register_action +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc9e3a1 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xfcca1272 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xfcdc14d6 frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfabc56 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xfd07a0e2 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xfd1f67d8 pci_save_state +EXPORT_SYMBOL vmlinux 0xfd2e02dd mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xfd3b9dae generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xfd3fe03d seq_escape +EXPORT_SYMBOL vmlinux 0xfd42f9e2 key_revoke +EXPORT_SYMBOL vmlinux 0xfd431633 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xfd43324f device_get_mac_address +EXPORT_SYMBOL vmlinux 0xfd4f5969 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xfd6213e8 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda54ed7 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdd5c6dd proc_set_size +EXPORT_SYMBOL vmlinux 0xfdeb8b8e xattr_full_name +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0ad175 lwtunnel_output +EXPORT_SYMBOL vmlinux 0xfe158e04 vm_mmap +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe3f085c pci_dev_get +EXPORT_SYMBOL vmlinux 0xfe3f999c sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xfe5150cd find_lock_entry +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5fae9b dst_alloc +EXPORT_SYMBOL vmlinux 0xfe68c5b6 ping_prot +EXPORT_SYMBOL vmlinux 0xfe6d2a71 mmc_add_host +EXPORT_SYMBOL vmlinux 0xfe790f0a devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7db241 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe92af48 tcp_poll +EXPORT_SYMBOL vmlinux 0xfe99ea7e pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xfe9e166a sg_miter_skip +EXPORT_SYMBOL vmlinux 0xfea7d692 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xfeb007e2 touch_atime +EXPORT_SYMBOL vmlinux 0xfeb1beb8 devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xfec52b5f pci_bus_get +EXPORT_SYMBOL vmlinux 0xfec5398c inet_stream_connect +EXPORT_SYMBOL vmlinux 0xfec7f2ba __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee8e4ce bmap +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfefee30c ip_getsockopt +EXPORT_SYMBOL vmlinux 0xff01befa is_bad_inode +EXPORT_SYMBOL vmlinux 0xff035b13 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff17793a peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22e75f dev_mc_del +EXPORT_SYMBOL vmlinux 0xff2d7418 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xff494912 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff903b43 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0xff915238 backlight_force_update +EXPORT_SYMBOL vmlinux 0xff93e80c mmc_put_card +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc0264f machine_id +EXPORT_SYMBOL vmlinux 0xffc6cee4 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xffca5de4 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfff0481d xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xfff0d5ed sg_alloc_table_from_pages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x02030e6a kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x031d3ce5 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0d9815fa kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x17c8f008 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x280f59bb gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x29f88f05 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2c2dfd2a kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3861e3f3 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x44fc6e8e kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x45c6b32e kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4dcfcc5d kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x512c9dfd kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x56b50659 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x59456ef9 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x59dd3f2a gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5affdd74 kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5b6cb223 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x61751719 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x61d4ad8c kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x64e6a6b4 kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6951f667 kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x69cf11f6 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6a37aec2 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6d191223 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x73dbe26f kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7a99469a kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7fddbb39 kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x806c7193 kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x80c3b3cc gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8350ee62 kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x87789425 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8b1d6296 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8ef9d60e kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x904ba82a kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x91de5e61 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9b157b2d gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9e8c0d42 kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa51110e7 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa79fe339 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa8e5566b gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa914c01a kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb3b53096 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb5131779 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb8a15462 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc31ea982 mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc51697c0 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xca69a8eb kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xccec36ef kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcd1bf3e5 kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcdce47b6 kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xce5bc535 kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcec4e2ec kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd134bd5a kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd2df9f02 kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd51424c4 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd7e5fdd1 kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd9869e81 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xddf64f68 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xde43d1ff kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdf3a58fa kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdf84a8fe kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe346ac46 kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe5bd912f kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe7656848 kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea085e6f kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xecf2e0ff kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xedfc5d77 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xee373a1e kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xef11cb35 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf0cddd15 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf214d94c kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4109958 kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf623cd8d kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf81e1709 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfbad142e kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x1ff95a9a kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL crypto/af_alg 0x01ea6bbf af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x06c3966e af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x32070b82 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x39cf78b7 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x87fae862 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa3b7d01e af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb924d177 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xba3961a0 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf533c2d af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa6060ace async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x21645cd0 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb2172f4a async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1b0f1eaa async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xe585617c async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x46dccf74 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8a05ff43 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa9dcaaa8 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xbbfd6585 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x163e4ed1 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x20d58d41 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdbd0aed4 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xba1a21f0 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x6352f9c4 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x38736ca7 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xe3f2aa8f crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/cryptd 0x2adc7434 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x716ac257 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x82ae2b81 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa5c53f41 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9c0a3fd cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb7a22b23 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xba7fe56a cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xc7cf419c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd12e1d06 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xdd67fbe8 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xd11eb6aa lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x280cbcfd shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2e2d0cd1 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4e8f1157 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7b37d8b2 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x80cdc778 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa3250487 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa3bdd52f mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaeaaf8cb shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3fb17ba8 crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xa81c8e9d crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xc78df5dc crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xe38e377b crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xcf0143e5 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x31b41440 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x51447dd4 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1438b603 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x228ece5f ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2b0185b0 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2e5909fa ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4f9aaf70 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5f547112 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63fd989d ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7e600f52 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x90299065 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x92348395 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x927794bf ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x96780e5e ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x99cd9d55 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9fe22d78 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb20698a6 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbd492759 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbe484824 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb4d5b86 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd25e9ccd ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdbaa8ef5 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe9a0911c ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf2ac3007 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1014afc9 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2e0ff291 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x53f678ce ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x59e0d687 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5a4f89fc ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x68ebbcc0 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7232e12e ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x85388e4e ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb352f9cc ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd501c953 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd8b748ae ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe67694cd ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xecbc54e2 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x9f7ad352 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xb79c3c25 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x2362078c __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x298eab0a __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x539925b1 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbf9b843f __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x205cb570 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x21944522 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x26db0e48 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x290bc819 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2b99f0d3 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c3d37e5 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30074e61 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x430d8c2e bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x57c05996 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6625abd3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x66dd1da7 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x67e3f740 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6d862d3e bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6ff1fbb4 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7714ec6e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7733e8c3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7c3f4519 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdd3762a4 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdf8c2101 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdf99e8e3 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe840e07a __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe98fc327 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xed116af9 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfc4902fa bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x08a9f7f6 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2aae8469 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5033a02e btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x873cf5b1 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa3c27a93 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd4f78bff btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x22855bf6 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x27ac2e5e btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3c53c12f btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x68cffbef btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6fcb7820 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa4ecf253 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb457602d btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb7bbdf2f btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xc0cbadab btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd28e0599 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf1e13e71 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0b0aa5d2 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1d88d339 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5afcfd0a btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fd62ec7 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x63eac6b7 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6bb79148 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8265ef61 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8c4bbaca btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x93c325eb btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa1b24ff7 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb08f4e75 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x41f38810 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x872f3fc1 qca_uart_setup_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x29d0eda3 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x6b325639 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x03470e7f nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x5e977083 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x913edd24 nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xf3e0bec8 nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x565ffc83 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb81c2628 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcb57e8eb dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd7ef652d dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf9df5bc1 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x45ab79ee hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8ea83602 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xe03ab062 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x65bba25a vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x8e451019 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xaefd2ba9 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xeeddb7e8 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1032d2ad edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x23a62885 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x336bdb6b edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x38aeea4c edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3addf8f4 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3eabeef5 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x56b6c340 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x59f8807f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b569fa4 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f981bb2 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x827280e9 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x85c0d26e edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8d3f014a edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9bd5e312 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xac93bee7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbb6fae0e edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbeae2d92 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6463258 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd7115567 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdea95f27 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf0158986 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf7c6a915 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfedcc570 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x35fa6ac0 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x36fa216b fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x49e38c4a fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x611e693f fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x80c54b67 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb2f0183c of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x45872097 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x666250b0 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5b43b552 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xbea3a2ab __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x23a4cd28 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x77fc06a7 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7c2a6897 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x831af01a drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x85556927 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe2c50b76 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x09629ac1 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0e76134e ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1189d70a ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b560d9b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ed00b81 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x207d1217 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20aa0f3e hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x25326bfe hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x25a3e11b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3d91ef51 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3f02d72b hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4577267c hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x461d8412 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5bb33fc3 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c1c33b2 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e2be523 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x79c92f15 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x80f66982 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x83c5c3ab __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x83f32f79 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b8d65a6 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9433b425 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9884c86c hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99c036d6 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c34886b hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9fbda6af hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca49efdc hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd14a078d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6877b6b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdafea959 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe271de18 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8708c41 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeff8aa3d hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf9970846 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfcfd8043 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfd3352f8 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdc971f1 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff1613cb hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff24eedf hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x38a3881a roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x084c1740 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x36bc840c roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x45801be0 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb81bed8c roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdeeee246 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf4bb0a54 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x19876cd5 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1ccf0f7c sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3fb3de0e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4f2418e3 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5acb2751 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9dd74f55 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc636db88 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdeff7dc1 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xfdf58bcb sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x24b6fcb8 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0097855a hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1317074f hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1f09460e hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x589c8042 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6c68c3f1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6ecf7e4c hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x70830fe3 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x70870704 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9330005f hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9ed81caa hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb4d68d6b hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcc14b02a hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd14c8428 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd1d8af49 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdd330537 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe38af42d hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf88fe0bf hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfd504f57 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4d0beffe adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd8ca6800 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xee0ced28 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1d1fa7ee pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x24501c3d pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2922ac36 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x427bc01b pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x57f83404 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a7b24ae pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7485513e pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8c493148 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9988df3a pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9c9b7090 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xad8581e0 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd230f714 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd6b113f8 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdfbfcb7b pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf1074356 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x119c225a intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x304ac64a intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x37380dc6 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x7fb0c3dc intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xbdd154fb intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xcfdd5d0c intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xe425d722 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x0175d101 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x78502b0f stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8208069b stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x83041087 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8bf73110 stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x16fb9e69 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3dc68713 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa1f8d1fd i2c_dw_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb32c1a46 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb02c590 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x5a2d9fe5 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xa98c12a3 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x517f0203 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7598ee8a i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x01001e3a bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x21027498 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x54ec2163 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x30548f93 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x313ea6a4 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7001da59 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9d0780e9 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9e8801e3 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa86c9e31 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xae3720b8 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdd19e991 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf54e4b9e ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x3a80bec9 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x41d427cc iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x5fc71172 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x8715dd0f bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xc357b69a bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0047ccc3 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x09fa434e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0b6d327f adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0cd279a1 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x11e4dc6a adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2b26e80a adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4aa0646a adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6a769611 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x74752b5b adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7956e2b4 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb40ffcad adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcca1197b adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0a25d89b iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x151453ca devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e85559e devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3201e240 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3787b27f iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3bc120c7 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e122b77 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40981026 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x52086322 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x582605b9 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bec7830 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6dae2256 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x757f513c iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7c357e5b devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x824cc985 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84fdfa1f iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8789bb9f iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x881a60d4 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f91f408 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4c8b813 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7d59661 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xab02b61b iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad108474 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc6f865b5 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdf42e718 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe01e4be9 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6e6bfc7 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe9407682 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf63f6212 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf8c6b51a iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb3b0fb7 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xb67e09b9 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xbdb4c8e3 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x45678e73 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x491643fe cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb57743d3 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xdc932683 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x2da03c1a cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6f0e724d cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa4827c72 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xde70933b cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xe9c5d0c7 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x2e5b5682 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x352d74ba tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x6121d274 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x67ea3ca4 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x18e5b496 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1cf952c8 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2f837f65 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3f03e055 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x40b32c46 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5d0d311c wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x688b31df wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6f58b183 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x91a73182 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb688b1b1 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb710ba30 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xde5e5a4f wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1015cc0a ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3151c6c3 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x330bb871 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4fb274ba ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6b2ee201 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa7c9c765 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xab79a4c2 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc37be007 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfef270b2 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x029f4ab9 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x29d5e55a gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3907ad2e gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3c7d0839 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4817517a gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x52101cd8 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x549814e9 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x71d7b019 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x739afe24 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x95293d28 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa03c4c6a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa320504d gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbc355f53 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdedcc4fa gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe2f20ab4 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe8a50d07 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf2e147c0 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x047a686a led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x69d1d66d led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x88149222 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xbf2f32d9 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf3973881 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xfc12e57b led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1191b690 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x15dfb85d lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x19b71891 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x277dc207 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x29c14c3a lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x81cf96da lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb0710abc lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc6fa282b lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xcf7be438 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd650d23a lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe4c2df1b lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x086972c8 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2c741208 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x30d6eadc wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5b7d4ee3 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7f11e3d3 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb0e56357 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb69d28d3 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf6b9410b wf_put_sensor +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x188a1ab7 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2bba06e3 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2d6fc6bc mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2ebeb6fe mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x439e4f33 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x45d2170d __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4d93ca2b mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4db1e4cd chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5a26b469 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x96d7d7e7 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd26c4fee mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe1c0d60c mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xeb51753f mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x021811cf __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0f0677b8 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e6a889 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1154f7a1 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15aa8e40 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x174c2a29 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2205bcf9 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3fc7cb7f __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x469f38de __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4ba51ecf __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5b2a89c7 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5d950f2a __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5e21030c __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5ed04550 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6eef9654 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x74ab7b0f __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x84efb763 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8fe32879 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f02667 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93f7fc02 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1de5277 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa81bf581 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7d964de __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbbace2cd __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc6673631 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8a2f711 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe3de2ba2 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe902838d __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xec919105 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xeea27f46 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfad1ec73 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x09f4c045 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x65dcc628 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x672c2759 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x775854af dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x87907dca dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbc01fdb0 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd2a8eedb dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xede0671d dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfd499adb dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc6953e3b dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6ae281d1 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xacd0b7ff dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xaf77815c dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xafc20cb1 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xca79d484 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xdc2a05b0 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xebe6893f dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7544cb29 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa2db0e16 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x041b5fd1 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x05dd0dfe dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x76781a55 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc64d6717 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd44d9831 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf142e3ee dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b788f4a dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x316f99cd saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x33309e75 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4aeb3754 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4ce66243 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x61a7951c saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x74fe0672 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x89b36306 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8b3242dd saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8e85cd8b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe7a5678e saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x478e9e34 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x49fbf7f7 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x688a8ed6 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x820b2219 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad012abf saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb4f3f8ba saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe750cb32 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0b7246d6 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0bd82495 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x17d97604 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x325677b9 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x481ad12d sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x51ab5fb8 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5838e480 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63fc1d85 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x87d523ee smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaa72dd82 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xab8d03b5 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb76a89cb smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdb6d5fa3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xde4974fa smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe85c6a1a sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf10695b7 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfbe1e7e3 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xab50600a as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x968ffb58 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x5b938141 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x031e8b3b media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x1d085b4f media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x40e1544e __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x457feb6e media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x485be883 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x4f0b3c4e media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x6bdbfb49 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x6f9ce37e media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x72ed07c0 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xa6722ff8 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xbfc5df02 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xc10693ba media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xc3161f0b media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0xc4b4d2c4 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xd62f5eab media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xe2913f0d media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xe5c5b5fb media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xf136c48b media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x4704c478 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09a0a71a mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x14577f57 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x26dde83f mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ee02cd1 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4dac410b mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5152e589 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x51e6d9da mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x527b080e mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x57557290 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x65350009 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8ad8085a mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8ef2d1da mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa019733e mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc9da059d mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcca16418 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xddc69d94 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe31b7ef9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf7316f9b mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf7e3002e mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x01a584de saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a6a5ad2 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0c528b44 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18e11556 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x19c37f8b saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1a02dda3 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1c5e708a saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3d4ebaab saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7faec79f saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x805db993 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8c863f6b saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xad450bb1 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb52505e3 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbdc47ee7 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc7928aa8 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc7c1453f saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcada55c6 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd36e9f50 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfe8f8c1b saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x145efa11 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x41a2e422 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4a0d174a ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x8c70811b ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9c57f6db ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc475ab3e ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc5759ec5 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x28411a86 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x7074fefe xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x7ba89998 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb46b0c69 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd852188c xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd9e018af xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xff0cd78f xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xeddc9423 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x9313e054 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd0229ec8 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03dc6149 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x069dc6f7 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x08d3a1d6 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x13c301a0 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1d4ceb89 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4598b2e1 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f65ff31 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x503cabfe rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6647bfe9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x706e33f9 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8c3d59a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc60e2e9e rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc71c22bc ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda2c11a8 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe74cbf5b rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe94dd9d1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf0e65283 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf5f2cc3d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf741f552 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x2d86aa34 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x1f217816 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x80e65b40 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x37b2e1ea r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x89380ea3 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xd9f1cf9f tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x10472b27 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x22123a92 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x530226ac tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x15c8a28e tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc6b35516 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa66f5882 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xfc4608d0 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x884d533a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11efbe2b cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x134622e5 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x16713b8c cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b0fe3e0 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x24cf0706 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d17c0c9 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x33ad24f3 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38b8b28b cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x591a97c5 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x84ef7bcb is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8541d6ea cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x866ec8cc cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x87855971 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x97266a88 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xad625b22 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc5dcfd88 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd6a77409 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xef551ef1 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf3a1ea50 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff2e7642 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x16195b14 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xe93ba4d7 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ce9beb2 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x192f7f78 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x241afdfd em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3a7facf0 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x50dc6bcc em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5320b600 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5425b730 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x68e37032 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x729bf8ac em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x76d817bf em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x841f397c em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8517c68d em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9d7a8764 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa9bf0b7b em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbf074d04 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc8dd6cf3 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfa2dc2d2 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfac9e2a2 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2d4782f9 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3465e6f5 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8a14a563 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc46f50f5 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x642c76a3 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94ae4dd1 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd202131d v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe1f28c73 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe2895867 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe4b965b0 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae15a915 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x40c346ef v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x68322f89 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0ed06eaa v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1247df26 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2bf38bd5 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x30eac7fd v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3be96ff7 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x579d2572 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x59634869 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5e19c9ff v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5f474bf1 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x66ece4b5 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x82a34335 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x88459cf6 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8b37c334 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa8a3a9ad v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaad19389 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xac645dd6 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xadaaa284 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbb1d3456 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc929fd73 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcaf3898f v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcb60cad9 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd309019d v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd9190b9c v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe1b75e32 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe6de0495 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf1fb545c v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf24bb83e v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x106824ba videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x14dcceee videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x222e69dd videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2ca4b6e9 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e8946f2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x36bc14d4 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x396d97c4 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x492563c9 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5bae16f0 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5d37eff9 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e5e3a6b videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x724249af videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7bedd178 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x85a0149e videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x867a3ccb videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9a2e681d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb04e7e36 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcd8a20af videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd64752c8 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe00bb08b videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeb8b42d4 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf6f0536a videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfecff65a videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfee6e3c6 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x33deb17e videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x41b138d5 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8ec27a3e videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe4cdb63d videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x26f62583 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x5eed6efa videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x96619fa9 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x09f105c2 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a2de1ac vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d328655 vb2_debug +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3428c851 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3bcc0e02 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6985a21c vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93d7336f vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa6bc5a6e vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaad327e2 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xabd8308d vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb12732a1 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbcebad15 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd3adbc2 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd31ed5c0 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe66ced03 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe99cd1ca vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeb7354fc vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf46e7fb2 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc357cd1 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x689b53cc vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x9e863d57 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x94ddc522 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xfa6547cf vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf49a5c4d vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x008209ca vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2064c453 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x2138ec5b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x28ff8583 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x3af1ec25 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x503bfc79 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x58b0aa5f vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x5b53651a vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x74b25dd6 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x76e7adbb vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x78154749 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7955d578 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x79b92537 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7c130905 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x7daf82b1 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x8688f318 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x88f3a852 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0x94fa4f6f vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xa835e7b7 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xaa2579b1 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xabce2d3e vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xbe4e0ef7 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xc09db21d vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xcc18d9cc vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xcdf602d9 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xd3bc5a06 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdcdb9611 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xdef2c02e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe5a6fea0 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xe861afd0 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xec66ebfe vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-v4l2 0xf90cdea0 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xac29e61c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x00fd814b v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133adfc4 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x135e1177 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1e0c5632 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ef3a428 __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x225c6c15 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ab9d732 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3641c447 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d0ddffd v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x42190710 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x449866ee v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46e06a73 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e73fa8d __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51275bdf v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x53d13afd v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x54444c9e v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x64257217 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x66aadc80 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74a017c5 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7526bf09 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bfda7d4 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ed7da76 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x95589d47 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa97ee4f2 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaca2544a __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3ef4ade v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbacc1345 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6429d8b __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcde43640 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xce85609a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd84368ec v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdae71194 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0061b9a v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe93c8769 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf4fe46b4 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6a22fdc v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf737fa74 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x819508f3 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa33128fb pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf5678ead pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2da39646 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x38c305c8 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x57ff6135 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x5c394497 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8ac660a4 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa427cddb da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb30ce96c da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0c07e581 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2de279e9 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4bdead70 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5e38e534 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7b6d3d5c kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9bfa1e06 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xca2ef5d2 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe8bb2081 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x85a953b3 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8dfd355d lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb45b0982 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0f8d459a lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x14c0c7dc lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x29cfd87c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x339e3894 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa175b774 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcf35dc2f lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcf73fc1a lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x07bd6da2 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x14e52af8 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xffd32527 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x69eaff70 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8d082869 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xaa649416 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xbc4b0f16 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xeadedf36 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf8d12a5e mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x11c33bc1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2625ecf0 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35b55ffd pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5e15ad39 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x709900e4 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e4dfaeb pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9f3948ce pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc3a582f7 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcf6c666f pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeba40e9e pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xefa5bf2d pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xb274c9b9 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xd872516a pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0a437248 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x540593d7 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x59cce39e pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc99cce68 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfcb91646 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x082c0f35 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0b36ba88 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1b064b4b rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x21b20310 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2e6cede5 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3822911f rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x57a186a8 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x58bd592c rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7101b274 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x72487c53 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x807be609 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87b8ce8d rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9588afa6 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa138fcfc rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa7299cde rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaeb38cd1 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb483e02c rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbdf41801 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1d31715 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc27027c0 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc30f45da rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc606f631 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdc192423 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xea438536 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x16dc31a6 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1d94f658 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x20002c1f rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x25769826 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x288139d4 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5501bbe4 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6588e41b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6e52bffc rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7a3ba49c rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8d5e12a9 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8fef70db rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbe29cea3 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdb006f57 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1f47be03 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x20d6ae82 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22a77517 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x391a8217 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3e3de31a si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e9d8474 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x529ad6a6 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5789e3fe si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e7ac18d si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5f49283b devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x60723e59 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x668ee740 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x672acc37 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6a233aeb si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7bf9a785 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89673bd8 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8c5d208a si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x919ce3dd si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92456c0f si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9812f925 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa305de6d si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa3857474 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa39a407e si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5864d62 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5e5f13f si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7c0bb4a si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb7ce562c si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc692543c si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xceb9f874 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd3827b1b si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdcf1a5e6 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf965bea si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf4a76209 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf89960fe si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0902f2ec sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x675b023b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x85e57eeb sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xac250a48 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd28f9a0d sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x5ae0de38 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x9b00cec4 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xba885889 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfdbe6c02 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x5a001389 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa956be03 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd916ef34 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdcb22d26 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xf1887378 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2c49197b cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3d403f9a cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x59a37a93 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6754a65d cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0543fc3f cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0d2b5993 cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x13cdd986 cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x1ebaa05c cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x23b2235a cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x2b9d23f9 cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4fa55f27 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x51e24ee6 cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x529db544 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x598ed253 cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x59dfbdba cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x5e7f89da cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x60b52ab7 cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6bed42dd cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7c2b781d cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7fda5b74 cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x94265faa cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbeca9000 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xca71a6f5 cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xcd448107 cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xcf9e078a cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd27a0115 cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xdbd64525 cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xeb2fb823 cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xee435727 cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xfb28c5b2 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5e7f0b98 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f42ffec enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8165cd75 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x844799a3 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9424243f enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb408f495 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc240d61e enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdf9c74d7 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0f2610ca lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x34e3be66 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x45075c50 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa133c0a5 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xeabed20d lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf08f3034 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf18207b8 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf52af03b lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x611799db st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe73dfb4f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5772a1ee sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x68168b97 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6f0cabb8 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91d1483e sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb39ff2d9 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb55ee35b sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb5b637ad sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc4be66b2 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc91e6d52 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xca62d7b9 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcfc2d297 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf32e55b5 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf653b105 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf8d0ae81 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x023ba676 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0496a9b9 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1ec34543 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7622de68 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x81a8d366 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x98807d1a sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd24224a2 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd532bfed sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd9bfb057 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x13f5e5b1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2cdcc059 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd1c2e5cf cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x334852ad cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4d1a197d cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc0b19d2b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xa28f342a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xde80e411 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe6aae301 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xef47fc85 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06d0c55f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07fd9dbc mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ea0c216 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2c25c711 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x331a399b mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x465a5213 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a01ccfe mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c25fc90 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x54ba011e mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x56a5f356 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a5365e6 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a7feb62 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5fec4711 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x607a7166 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x62b75f94 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x696a4862 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e291ed8 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f813a5b __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x700acdd3 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75a381bf __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7ba383de mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x847e73e1 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8676877d mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8898d1df mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8f147e15 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93dfd018 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb6560294 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb406c1b register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc08feac3 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc44ec2fe mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd2d60f67 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd59548bc put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc204353 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd7a51e4 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9063be6 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9117d97 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed6e8fc2 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeea4c47d mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf029d466 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0a26381 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2cf788b kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xff6a2d18 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2a05160b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3cadbd43 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x43bc5e68 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa4cbdbda mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf12e54b0 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x46918a22 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xafc1e15b nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x34aa4460 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4a639c74 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xe43946a9 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x5fade569 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x03983acd ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0d107d2b ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0ebf2459 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x223dd981 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x28f5f93b ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2b69a0c1 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3e2e4622 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6700352e ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x920e3ab4 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb4851400 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc6505ac1 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd02c1097 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd378180f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3406f2f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x2cb212e2 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xcd847dcc devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x127468a2 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3aace365 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x48674dcc alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa8c7b54d register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbb0fa14a unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd6547822 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0732eba5 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0dea882e alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1bf85df3 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1d256bd3 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2bf54272 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x35e74fd3 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4541e50e can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4b5b5cc7 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4f77075f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5c56823c alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x900f6deb can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x983637fe open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xac34400b can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcf54ecb9 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe320413c devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeb60b8ef free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf656fcc2 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfee1f9d0 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x90676b90 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xbe2502f9 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd33ca2ac unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd3ea5d69 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6e0efa8e register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9a2f5267 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe49b513e free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf58136de unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x24baa356 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x9ca69e05 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03979298 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x061c0d7e mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x063ff573 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09d32fa6 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a4b198d mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bf56a96 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c4d79f3 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fb05588 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1157cca8 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1550d7aa mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16c90226 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16f2e569 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x175aa5ee mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab3d6d7 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ae3e677 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ba7229f mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c4a6329 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e4fd552 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20e187b5 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x217c3304 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2454c01c mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x246977ca mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x269c2e6e mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2be08d71 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c023abe mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d48a307 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e04ed7c mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ebbe35a mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f45827a mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33c29050 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35fb5dbb mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39576b11 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b567960 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c374479 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c61a2ae mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cfd9a0f mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41cbd1c8 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44689723 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a240141 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c77c11d mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4eadc7c8 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fcf87a5 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x500b60aa mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50915232 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x518fa808 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x546e4037 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55caf3b9 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55db9641 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55ff44df mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c1331d0 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c6e5654 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x603255ba __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x615fb5c1 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6228aa1b mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63e8f1cf mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65427f0a mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x675e2201 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67f329d8 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68ee82b1 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b36b36d mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cc29569 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d95c886 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ef899bb mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fcebb06 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71224489 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x712826d5 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74059c95 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74269a50 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74989f45 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75cce1bf mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78452ee3 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cd5e1d1 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7eeaeb2e mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f239b5a mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x815d84a9 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81d7dee9 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a060662 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fd2e426 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9026e425 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x939857bf mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x984f09bc mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b297342 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f3d687c mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4f85bd1 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa83c94ba mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa62d65a mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae58e711 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb03f8b39 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1cbc6a9 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4cb1290 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5be773a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb73143c8 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd934fc mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe0949e8 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeda2d6f mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf7ac36b mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc34d7cae mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc354a6d8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6cda8a7 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8480662 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc88e1dec mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca1a2527 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb1ee3d9 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce9f5717 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1b88bd6 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2936dd2 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda5002f8 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc093418 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcdb755b mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd114995 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd3c37c5 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdda61c7f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdea9833e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6a52855 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8dbdd0d mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8ee0f8e mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe903086f mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeed90065 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0f739f3 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1837473 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5d40a37 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf82c7a9e mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb308489 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffb1ac9c mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b8f7551 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x189b94f2 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2501d4e1 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2be9a918 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34faca48 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36f6b920 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38f4eb7b mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x413eca63 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e7d8d30 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f29716d mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53f29f08 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x546807a6 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5821946f mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58c12fb7 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b7bdd47 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c254d64 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5dd3c7e3 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f9182ce mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x602b5113 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60eade38 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a21d202 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d58ce31 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7426cb39 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76fe2c73 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80e12daf mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81ac77d4 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8acd2bfa mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98602e53 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d6d0168 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0604792 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4a6b71f mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5b3c15b mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6121d25 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa90a7963 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xabc61e95 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb05fb1a2 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9f6582a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2015068 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4c622ba mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd25fbe24 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd64c9e3b mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbf98235 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea99740d mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeade85ae mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee96fa40 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5e28947e regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x8d75b4ad devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xac144314 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x032e9b41 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5d6cddc8 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7984205e stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7c99744d stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x0dee57d6 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x37d99ea1 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x62d7057a stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x9771cfd7 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x10c54029 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x11410edc cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1bd5f776 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x34a986ef cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5531976d cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8500cd82 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa33de9cb cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa6be7774 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xad925faa cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbfb1e15a cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc2e5636c cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd458b698 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd64a85ff cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd64daf07 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf0888509 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/geneve 0x348ee728 geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0x7482bd88 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x336f6b55 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8d6f752e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9ccd6f37 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb8e29dc9 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x59538af1 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0232cc08 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x09cdcf5c bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3871ebcf bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x98496e2a bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9f708396 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc4407503 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe3e65ba1 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe9429fd2 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf4198f72 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf7edf1e2 bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x3b7d87b8 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x429a7bc0 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x55255d2c usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x867dfd42 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd72007c4 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x211177d4 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2b69cc53 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x42db9969 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8b653ce0 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8f24e37a cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x91ccf72d cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb6acef18 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe270ec1d cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe3c2479e cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x06a50a8a rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x165ec168 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x21e34fdc rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x834ab741 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8902ff06 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xeb663157 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03a4d8a5 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x16644477 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x32f3a919 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x33525034 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a20ee2e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x430a0fb8 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51d5386d usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x614bbd87 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74823c13 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x85c0613d usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x882ebf2e usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x899e1987 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d809e67 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f6f7ef0 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x97dfdf45 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x98e39815 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9fb25700 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xace2b9c6 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xae9f101a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5272e6b usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb47b0a3 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbfdfe7ab usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc6edc448 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc887f609 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0f9beb2 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd38c248b usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb3b82c9 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe84cbcba usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf257225e usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfb4b3436 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfcb266b5 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfe02bfb9 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3ae103f4 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5c07dbf5 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1c0724e9 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x29366c01 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3536db53 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x382214fc i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x44c57d6c i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4aa53d1e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4ccb9219 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5eda74ad i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7be6c402 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x962a3e85 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9b131ef4 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xadfffee3 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb1ca421 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc5204ace i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe3c3c5c1 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfa382589 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x15712515 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1b2d2e87 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x86fca2c2 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xac161dff cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x915e2abf libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x10ffa5f3 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb1b296dd il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc1c88963 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xde887c3a il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe39f3b2a il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002b2e74 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a659478 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f48dcb7 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x113aa7a7 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1dbc52fc iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1e9282f0 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x22d0b15e iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5df97cd2 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5e865e8c iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6524571c iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x74271a6f __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7646778f iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8428a571 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x84482c78 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x955bb188 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9773dd14 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa1f6d7e6 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa5e5cf1d iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9fc982f iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb7921a0e iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb79257cb iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5cda9d7 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd072fcc7 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe0d3442b iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeefe334a iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf56aa18d iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5aea4a7 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec1aa5 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfb814712 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfc8ec1c3 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x09b2b46c lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3059ae09 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4070581a lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54728ada lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6501835a lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x73c07b28 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x90bd3f62 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9bf60aab lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xac058167 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xad4a8a73 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb281970e lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc7a2bd37 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcda7f326 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd4e41661 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf24e0a84 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfd35000f lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x18b659b5 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2fc8ac6c __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3e407c84 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x41c54c02 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x52bee74a lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9b1ee7c9 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb08ae5ca lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe63e6912 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0a7e6841 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0b5b6794 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0fe81159 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x20a346e2 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2501817e mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2bf6bbdc mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2d936244 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3c72cad1 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x46891889 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x822b7a7a mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x85cf3e24 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xabc4cbff mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcd2f4a8f mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd62f236c mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd854d250 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdf40c21e mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe142ee03 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe8461232 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe95f93cc mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0dfcbbdd p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x25447fd9 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2f725788 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3bbe87be p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x636dd1b5 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x806162b2 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x840c51eb p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa3fd3c0f p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4c3e670 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x08480341 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x52b5f760 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xce323807 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd20475bd dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x12cf58b4 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x14aad95b rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1d613297 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x275376d9 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2b9e0a69 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2c6b9a11 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3282e186 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5e3a11ed rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6cd7b269 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x72c6c7ba rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x74621a11 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x776f4519 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x78a44cab rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7a300c1f rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x81a4a3a8 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x82945226 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x909d9f41 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x92194da3 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x93480ccf rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb6eb7199 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbb484556 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbd88e11a rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc8842963 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd2bc459c rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe2d8a830 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf5d536ea rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfe313fd3 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x16636e27 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x21c92236 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2bcec3e2 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a6c4e80 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b7cd052 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x614a257c rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x87a15546 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8e24e436 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9846b041 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb6ae59ef read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcbf8db15 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd41be2e6 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdf1ccca3 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe92b0c85 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe97f4bb8 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeabe79ca rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfa95ce0d rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x35837b27 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x39f3ac2b rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x538fc135 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8c9006ec rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00c51000 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x019cf7b6 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cc71411 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x15f89cfb rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1627d6fd rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x299e5264 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2c12ceef rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d5b0c10 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3f1798f0 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4b800220 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4c4beb4e rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4ef422ed rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x514a319e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72507ea7 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72e72964 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x78d13894 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7c9e622d rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7fb27e4f rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x806a152d rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8234b3b1 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82fad4e1 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8592bba3 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e06b111 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x91400567 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9657de15 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9bee73db rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9f0bf5d8 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ffa0d32 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8f5d316 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbc768cc4 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc17686ef rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc407e81e rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc41c06a3 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcd75296a rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd8e818a3 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdbede4bf rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe5e3c81e rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf9ffd1ff rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x02f4ad68 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0529ed51 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1014b78f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x20c94582 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x29e6732d rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x34e2c733 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x42d80122 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x69ec088f rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x718b8b99 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa3fbc6fc rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb579fbac rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcc03df6f rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf2448016 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c869b57 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25326524 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x27105580 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30edcb13 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3600ef2c rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x386254ba rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43bb95ff rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x573cfbf3 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66e4b2d5 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69bc57f4 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70ccc4bc rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72a906c6 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73a0e60b rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ca5981e rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f7521a9 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96644359 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9683bd99 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a1d3a6e rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9db65db2 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa29b5819 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xab8c38d4 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad18be6d rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae367288 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb6fbc2fb rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbdff3970 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc157671c rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2a9b440 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc475dc60 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcdbd44cb rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce09ee41 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd06854a0 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4ab32b4 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4be6976 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd71a6151 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd78b57ca rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd943c1a6 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf39ebc1 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe12d7476 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe640cc10 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec0d6b1d rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0234e71 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf404cd78 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5ef8d1a rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa458234 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb5e9dd8 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfea9f1a8 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x16e07e45 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x465ade3e rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7c7e708d rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xae57b5a7 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbf6faf8e rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0f0a5203 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x680b3556 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8f9c4799 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdc4ac5fc rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0256596d rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0766b4aa rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x180b8dcf rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1f058238 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x271d15bf rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x290eda15 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x360dae60 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x36e0f26c rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4d14e3c0 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6205b2d1 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x93df84e6 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9b6e5f58 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xad0da3fb rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb3bbfa76 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe0b9f703 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf369eed6 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1b087f0f wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xcd901020 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf7d180b9 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08871f8e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e572569 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1e94df43 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2084e9ae wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29af78d9 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c4bc603 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3f4292e6 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4055720d wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x40a282f1 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e696051 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x56856cf4 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a65be81 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66c6f872 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67c7095a wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c1dc23d wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f4ca321 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f70eb5c wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70bc47d9 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x744ef7fb wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x930dda1c wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x945191f3 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9457558a wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9782349c wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9e2b0791 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1535439 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa194ffe0 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa575005f wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa7a15c88 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8bdac9a wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca355d19 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd091f34f wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd1f8f5a3 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8d3e662 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdee5b532 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0d88179 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe13f76c8 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe1e5346f wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe270b4e6 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3091274 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe883738f wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee7e0266 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeef61440 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1298e40 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf50738b6 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x41bd85d5 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x73f5402a nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9a455bed nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xfa5092d9 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x092338c8 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1a99c1d6 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x200476e3 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3b1077f3 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x864711bb st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa62985c7 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xeae65ff0 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xeb170478 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x38ef3cc7 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x63d83044 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x6cdf1476 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x0c8bce2d devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3860d8e6 nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x434bd02d devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4ce3a3f3 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x777cca79 nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x86313e37 of_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x9000c674 of_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xe3714841 nvmem_register +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x0b0ab7a0 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xb7515660 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xf55e047b rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2ea9eea2 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x78228315 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe674c645 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x48616109 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb0ca8108 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xba8e0e2b mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc40b6291 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf06faddc mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0f657c47 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4042d115 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x73b3b5b4 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb3a6efc2 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc718061b wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe6d1ed66 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x5c3d6f62 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x147b5311 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15fc9b07 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28046a26 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ac2d5d7 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e62a3ed cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e64b6de cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f8286de cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x409c32c8 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x413825cc cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4333d610 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49ae38f0 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51534cf4 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53dd554e cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x593349f8 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x59c56342 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a4c85f9 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5d93bdd8 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x663836c0 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x694aedee cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6e29ef09 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70169181 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7adef27e cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7cb9abc2 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fbe2f95 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x858fd65c cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x86086af3 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8a91935a cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8b0af8d8 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c589a0c cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x971d428f cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b1d121d cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaecc22c4 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0df32d5 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb250f0f7 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3c00117 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc49f3c7c cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc965cb3b cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd723e729 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7ce0797 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9abc0fc cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7dbec25 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4b3a3cd cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5419089 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf86ed94b cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf971f526 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfeca7cd8 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00ea6dba fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x14b617f2 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1b463f1e fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x20f2429e fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2171ae35 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x28a30831 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5ded39d3 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6516e8b1 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x990e860a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc25bb542 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc6b2f46c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcada7275 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd18d721e fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd44e8014 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe8d85385 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeb2c8f85 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x23af9403 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x24d43b01 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x28ae5912 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x54e42746 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbabf5efe iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xef44844d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02a15c09 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d6cd296 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f93950d iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x21c77e17 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x378bbefd iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ae19576 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4041f567 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41c966f6 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x435efc06 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55a09c3d iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5b4a6f8e iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60ec9b08 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6576aac6 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68511c03 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6cbc4592 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6cef1443 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e85bf2c iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73f5aec5 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x800d1a19 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82ff7ebb iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d0b19a4 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f46a0a2 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f5d8e4e iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x90297917 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x91fa2636 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x936973f6 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9cd39283 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3f68dbd iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac3a171a iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacb744ae iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf3feb97 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafda3f5a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd39fcfa4 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde15c500 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe428261f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe50e1a4f iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec7d29b8 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf0d9ddb1 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf57427de iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb193e39 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfd9c2fdf iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfefa7f01 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x06c7cf1f iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1b5b149b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1f90f6d6 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x346e4fd2 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x40259497 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x41868daf iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x433ba3d0 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x468109b8 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49e4e69e iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7633c249 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x82efac1b iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x88594332 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9235a2b1 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e9f5f4b iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdc058a6e iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe54f79ba iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe7023a1d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x083eed70 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0acc2d31 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x207fdc70 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29f8a996 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37d61ec5 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x46d8b4af sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e230a9a sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x621cdb1d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7aaec28d sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88d3bc28 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9863ab7a sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9eb5437a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa269aa06 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa32ef7d1 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xadb23468 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xae703adb sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xafb6dd12 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc621a38 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce1de5d2 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd944ef63 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe6d03c80 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7aa0023 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeed59ba0 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfdb08525 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09a6a99d iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09c1e412 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x196f435c iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2dfc2ada iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3004bdb5 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32e1417c iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33237c2b iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a435225 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d36533c iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e158696 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e5e816a iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x43bcecfe iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ff54261 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54afc1c8 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5dfb084e iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5fd45afe iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63dd752b iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6456e6e9 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68823334 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6af52b95 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6de1e8be iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74cf9908 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f4d5430 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x94a89120 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x963f4423 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c3979aa iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa6f2c902 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa84962b4 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafc722e5 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb099dc49 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2f9b032 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc562810b iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd28f926e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3c5d398 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbfedd88 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd130c88 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde687ff8 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe88c44d0 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2698896 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf307ca89 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1d49c065 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3d44bb6d sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x9520b54b sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc20e66d7 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x7fceb0aa spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x40e9d85d ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x63c6e66e ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6d910cf1 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbe6906bd ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc5070452 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc73b1b4b ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xcfe95039 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x0043f9e9 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x085640ff ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2b4b32dc ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x4f773741 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x9c2ab1cd ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xc52dbb0a ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xe1c73b7d ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x225e9fc9 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x612c7eb6 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x93bcebba spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xccefdab4 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe764c49e spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x196043b6 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa7984e1a dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc7420d82 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfde9863b dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x162e8591 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1bae6905 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1d8c5e01 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x28ff79cb spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3d0cd4c0 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x441d744d spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5058562a spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5df2abf1 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6d54c187 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8351155d spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x90cded82 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9f074bbf __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa2c64af5 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb3ece809 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb477a5ad spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc97af75f spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xde7541eb spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf8ab8384 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xd0667863 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01d476eb comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x11da4ce3 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x12d7c7ed comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1817226e comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d7c251f comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bd3cbef comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f1c44f2 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55249e2d comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b131fba comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60b67e6c comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x610cccb9 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x719c11eb comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7e8436dc comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x80e33ff9 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x851f6d2b comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x88a91c70 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ab95fbd comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9611a033 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e89e45d comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0819c3a comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa1671939 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa34b15e8 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb21aa311 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba39fd05 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba590d17 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc8fa0c6d comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcade861c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xccd8a724 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6792e0e comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdfdbd0fb comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe031626a comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe287e63e comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xef7f76cb comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf6ce344c comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfcdbcb45 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x22906420 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2ee1515a comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2f44398d comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x51dc3946 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8d468622 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa0fb9a43 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb29a6068 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd2fc84a1 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x16a8414c comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1d81a6ce comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xacbcc281 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xae21ba51 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc4d52471 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd315da54 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xd62d209f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x13c16302 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x4cb88374 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xfb6a35f6 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x67551c18 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x69c06038 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6a426bba comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x77691529 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x79ebeb42 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7d6b4a27 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7db9fe87 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8942e489 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x95939c19 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x99441a3b comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9a0722d8 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe68d96cc comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfb1d9348 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x2aac0f65 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x97ed5900 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xba7cb61d subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x2071dc45 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x0076dfec das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1f7e837d mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2ba18686 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2f4ff994 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x30dbfa59 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x31c9e773 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x490da721 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x49c98316 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4d2a6aca mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x54ca4085 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x567b41aa mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x77cb1b82 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8038a13d mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x848002bd mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x996586c3 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa339fa3a mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xabcb3bdb mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xafaaa9cd mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb40acd6 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc5e97128 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd5e2b2e9 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe6ab00a3 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x64706183 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x92d7d248 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x2bf4a43f labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4decf201 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x589392d1 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x86d08759 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa3950f66 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0566f91d ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x096f3038 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x310c78ec ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8e76c51c ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x93e9469c ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x99049d29 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc6a28a3e ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf7851c7d ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x22a1af00 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x37eedfae ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x834fb9d3 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x93e752a5 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc30c12d9 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfe8553e4 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x00cb2d1f comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x03bb8fa5 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2d742749 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x33bd2695 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x45279467 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa2dd5113 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbb23b070 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xe585e7a3 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x1321fc9c most_deregister_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x1a44e768 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x1d4a1eb7 most_put_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x32ab90b9 most_get_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x3b1fc24c channel_has_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x5a2ad412 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x7f93d971 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0x8156ca99 most_register_aim +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xbc868948 most_start_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xcf1cff59 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xd44627e2 most_stop_channel +EXPORT_SYMBOL_GPL drivers/staging/most/mostcore/mostcore 0xda6b3079 most_register_interface +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0592dda8 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0a097c32 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0fa60a34 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x420f3140 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x44129000 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x45f228cf spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x471f3414 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4987ea36 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaed4de95 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc714e69e spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3ac9894a uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3c31702e uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x8b40a4d5 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x21649a18 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xff6e7d3c usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x0af60c9d ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf0bab715 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x1ce989e5 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x4425ccb5 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xc9e9b2ef imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3b33399f ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3e73a73f ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x49858de0 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5ddaf0a1 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6303fd63 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf6dcc3c1 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x164b70b6 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x16993a4f gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x29de16f6 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x30a9454e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6efab49f gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x81ed39fc gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xac28aa83 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc734f130 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd01bb52a gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd1432bad gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd8ebab7b gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xddcf59e1 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe2066361 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf0c7deaf gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf94b7a05 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x7651ad74 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89ca818c gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc49ad673 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd371dd12 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x2dfe39e2 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x347c8a62 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xa49654df ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1cd1f321 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x32d168be fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x38f9db61 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x42f7bd5a fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x546c7f99 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x59cd0a72 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5d4b2e8a fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x695a03d0 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x732dd635 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7343cf24 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x987bc0cf fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9cdbf2f5 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xae830a1a fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbf3a53e4 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc5c09ceb fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xde20f7fa fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe7018174 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0899a979 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x09ce0e89 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2aa9f5c4 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3cacf89f rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x47dfb34f rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4d4b9f8f rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x671e92f7 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x74522f5d rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x76c266ac rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9028e5f8 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x935effd4 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbee263c8 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc90d1ec9 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc941df8a rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf22a4d5b rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d693805 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1eef11a2 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x245a8763 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a85c112 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2c44597b usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2fcdb815 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3317fc5c usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x459ba287 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a6be702 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x64d90294 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68494784 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75f316dd usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x85cfef1c usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x88de9722 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8c71b700 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9d43c12f usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa194058d usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa337b5f7 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa7cafafa usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa7d93467 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xabe43771 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb2eb4f25 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbbe3fdb4 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbd5dbb33 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc1378077 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd9021c6a usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd90b3fa1 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xda163668 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe9df824e unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf48a474e usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfbe5cc61 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd459ae4 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0df4e503 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x13ac5259 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1dd3e9eb usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2c4e5637 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x53d71610 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6b36b7ed usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6ed922b5 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8d277136 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa4744dba usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb6b8182c usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbb789dcb usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcce83213 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfb949179 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfc2f3673 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4dbaea4e ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7d462de3 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x03cfcf4f usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x13dd99e0 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x28911585 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x28a4ca23 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5ee94217 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x71388b56 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc12df54d usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe7e81c39 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf2a33ee9 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf9889e02 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xad79cc0d isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xf1c85500 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x03486360 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0d8f2d67 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12086b0b usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2d2027d0 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4b2934b9 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x515c8300 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x69fbdce3 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b0f44b2 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6f621c6f usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x731719da usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8c5b9cb6 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x929a2e7d usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa285b49c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb397567d usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb4fcf7f2 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8e31f44 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd441944f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5a6c166 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xde837063 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe596c824 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf4ddcca3 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06e2cf7a usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a7eaf4a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2c0f7893 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x30e7a551 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x364c7958 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3c161803 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3c6602f0 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x41bef6fd usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x43bccb01 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4eacbf27 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5f8488d1 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61dafb0e usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x70057269 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78cb3955 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x836d4e43 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x89dc8101 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8fd59d62 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x968cdf82 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa111d8ec usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb6a8b1aa usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb9967e15 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcbbbd460 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xedf5d49c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf0ae9202 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0b606b87 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x15e1c09e usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2013cd6e usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3765b77b dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4c9c4853 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x628bb044 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x684f2253 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x75358a3e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8fddbb41 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd174567a usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe2d47757 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf68da3bb usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x058b52dd wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x10934c76 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x43b72b04 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4c62e0bd __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6f2d3d59 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8824b486 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfeed4c8b rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x04476740 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0d8b1121 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0f393a9b wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1b32c3b1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2f84977f wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x61a5396d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x77294035 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x77aeed75 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7d735585 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8efb420c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xac2e77c9 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc018c171 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdca91bed __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe573dd69 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x525bda0e i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x9c35c7f9 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xf36ee0c8 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5183aff2 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6c5e9cda umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x782a2720 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xcd4a34af umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd1e288ed umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe1e2d6cc __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xea92e447 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf6e12288 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0782b9cc uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0802a926 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a9b97cd uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0c15458c uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2426d030 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x27a70cb9 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31579206 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33f1b320 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x354348eb uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x356b5441 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x391f2574 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5182a5de uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55738ec1 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x61b45462 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63fe730b uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x67ecb625 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a8ac89f uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x77f0ece8 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7df24a2c uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x82f8c865 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83ce7764 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8fdab419 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x908be136 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x96624bfa uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e22b2e0 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa29769b5 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa508cad0 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa80612a3 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaa57c07e uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2df179c uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba899de9 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf0dcdbf uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc770e4be uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe3f876f8 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf445c8d7 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfbbdfca1 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd52d318 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xd1522597 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x470f3bf2 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4ca25994 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4eeb49bc vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x769f8f4b vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x833673b9 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8ae5cd71 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0x4cafa493 vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xac0624b4 vfio_spapr_iommu_eeh_ioctl +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xee638e6b vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x2a9efb6b vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x93e34f2c vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x00dbf310 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0d81f427 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x101456e5 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x14356378 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1c981fde vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x218091cc vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x247215c7 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x287c31ba vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35de08cb vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x57b588ce vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x57c3ceb3 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6b775fd4 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6bca5fee vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x734defb2 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x73faafc9 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x74ee974a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7a6f00dc vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x83bf4972 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8f007134 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93660cc5 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f8de97 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb69f7e8e vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbe2e9964 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbfe20b6a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc138f025 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd674d413 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe41d026d vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef7cbb7c vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfece61a3 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x05d04bc1 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4ceec9d1 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6a2d18fb ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x86dd720c ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x93c25957 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc93df964 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd3e3ad32 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x16d94b19 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x54b4d2f5 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x65343c90 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9560e8c6 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x963230a1 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb2a44dbc auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbb327e83 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xecb32fca auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf0dfdc89 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf892e2c4 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x644488c0 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x6fdd608f fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x7939d901 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x0af0ad4d sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x1f502cfa sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2efc832e w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6462d81f w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6b117bea w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa3041e0f w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb0134e1b w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc62c75df w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd387ee2f w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd52d6d29 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf524b7c4 w1_read_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x55af77cb dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x750f4241 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x79b83ada dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1d4e31f7 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3790fa25 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x72992f98 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb371eb61 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb84087ff nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc584f79f lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfb7145c5 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b356531 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bc6f63c nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f99f1aa nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12d8ed38 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a1b13b8 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ab20a34 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b70d955 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bea902f nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f5ca77a nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2296cebf nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x255ff829 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25eddaa8 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x288170b3 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29b61f10 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ab02e4e nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b72d3f5 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b93fb2c nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c712ba0 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e3ea011 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3138cc17 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x363a8acd nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3698fcc8 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b2111b8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c4181e0 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dfd4b44 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40579f38 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41e62b01 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x424157b3 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x452bdefc nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4687b323 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b0616d9 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cf67212 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d0741ea nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50b29731 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51207236 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51c5d083 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51e9a4bd nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x537703f1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5390d2b6 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53eed89e nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53efedbf nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x572b54a9 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ad8ad7a nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c4dfb44 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5eff0f1d nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fba2aa3 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61a30cc8 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6312d073 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6662fb0e nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67c6f154 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6801e57b nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68983502 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6dce8e6f nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e0ef6f2 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f31ef92 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70d74db7 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x738e22bc nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75908a37 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75a97e42 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x769e3ed3 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x799d9eba __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b40dfe3 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b9eeebf nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ca7f348 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f681955 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80073e36 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x811942b9 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87f22fdf nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ca923a5 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fbe04dc nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x903aabab nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91848234 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93f57c10 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d499d1 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x972eb55e nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x990645d7 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a4cea13 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f61e17c nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05bf67a nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5e4a8ca nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6f9bc62 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa73b2653 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa744ba7c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab950278 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac9fc039 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb184f64f nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9ef965a nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb1b3484 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdc46d28 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbffeaa87 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2c99a4c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5369312 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc1a5344 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd110ef2 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd344b28 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce4e9eb2 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1443252 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd296f7f0 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3afea85 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3f16d7b nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd447c697 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5aa0307 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd96d865d put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2341688 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe361aa81 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe53347f9 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5ca8050 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8c1cc33 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9ba36ec nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea7fc902 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebfa32ec nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec2389f4 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef6eeb51 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefa6a02c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf03c8953 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0ab5582 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0fa97bb nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf49ab85a nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf536a119 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6bd752b nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf71e35b6 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa60cab1 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfadef0bf nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbd2b206 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffa38c56 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x76fa90d1 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x066e3c60 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07bdd182 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1093b108 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x144b4be1 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1663ef41 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a1b3908 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a4dad3e pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b4ac7a9 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d4cc16f pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2146ceeb pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24628720 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a5ea70e pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3b1ac930 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7e6f24 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x493ece43 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4c7ed367 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4de5afb5 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e0976cb pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x556d021a nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x595741cb pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x647d9a5e nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x66bf32f0 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69b757ed nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69c77f10 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cada79d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x700a2e76 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x711017d1 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x733abd1b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73676c5d nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x85e030f2 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cb46b9e pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91a2cf0a nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93ad2ff8 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9839a39c nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa633a3ae nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa96d90aa pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabdc04fe nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae5365eb pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaee96a24 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0480ef3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb53939c0 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb89d5951 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbdccb213 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc341fb07 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3b9105f pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4dbca14 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8e43623 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc906e360 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfefae76 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd020b998 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0b5b7dc __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2a047ad pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd69ab707 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9fb9d4f pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb05fb62 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1db3a20 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe55ad88c nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0b4b19d nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0e361fc nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa1eff16 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfcc2d24c pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x07e5bcf6 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x46b0a995 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9700a058 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x92c5b0b1 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xb9c8a0b1 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0bf25f05 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x143c8e7a o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x174a16f8 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8db8cfc1 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa790168d o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb28b939c o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf0d1722a o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3ffb729f dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4feb452e dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x53672eff dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdc65c737 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xeab7774b dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf2041db5 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x32698fd5 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x52913007 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x87977db2 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x23cb6399 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xafb07afd _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xb9ca15d2 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xe6638740 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf3eadfa7 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0adcb055 base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x221df614 base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x4da25bec base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x63f42b6a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x76203267 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xca3140ce base_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfa5eee0a base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xfc02472a base_inv_true_key +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd64b3b9e lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe8656fd6 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x2a8e3a61 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x2ed534fb garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x50ed7d1f garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x5c123731 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x82224b0d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x92d3c634 garp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x32fdb32b mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x4d667e43 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x67d5ebcc mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xee96d3b2 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xf25c4e53 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xf701e483 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x10219cd1 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x9a965b8f stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x2b83ea61 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xee4d0a10 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x9b6477c2 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0a25df67 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x21b5bd6e l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x863297b7 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x970dccd9 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9ea3409f l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa887c824 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbbc2e99b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcc085525 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x33b2c692 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4bd1b39e nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x57497a2b br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6ef4c9b5 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7eef6516 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc4b6cfe4 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd52de453 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe0d7053a br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x20e7a7f6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xd7e76bde nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0af02a30 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0cd703c4 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1092b383 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14aa18e2 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1eb895c2 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x244355af dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x258bd343 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5190ecd3 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59b8ff8f dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5dadfe58 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x644265f9 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6506bcf0 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x748b50fd dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x75a36b00 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x825a8305 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82da7b6e dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89a22bb5 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8fe30c39 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90594cfc dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9230056b dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92f1c295 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9501e2c7 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x988acf49 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9c26e253 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cd10ce9 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa03fa68a dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd05dee09 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd41cac67 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd63f0dff dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7ee7437 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf485be54 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf8799c55 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfcd86e67 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7a1b2d75 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8608764d dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc47e4c79 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcd04b278 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe4abc6ca dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf748a80d dccp_v4_send_check +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x37be9971 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x85734ba0 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc7b15f2e ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfd19aeae ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/gre 0x33e3c288 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5e19b92f gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x14e26339 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1ad78d2c inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x514995f5 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5a64ea80 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5b797fcf inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xdae7eb04 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xb1a45ae0 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0d87b0c3 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1784d057 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1faceb4d ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x20d9aebf ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6803dc7e ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x79601783 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8ab0d6b9 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x987e9a87 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9ec65665 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xac2cdad5 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb94159de ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc65a5593 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xda001b91 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfdc114db ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xe40a8a85 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xf7d87f1d ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x64492b72 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0287028a nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x2ec18530 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x8f376b59 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc59d9242 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc8a8e58f nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd470f93c nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0eb018a4 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3988b322 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x429e8ee3 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x73c10050 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7b57852e nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x73d1fd9f nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1afe4821 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2ae5b6da tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5aae42b7 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x77467a94 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8cca2434 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8b793d19 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa6a4c1b0 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xbb8a9129 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xca4ebea6 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1e902ca1 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x340a2b15 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7cb92a53 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8c04d36b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd654f554 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd6be074f ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf3ed9b3a ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x4ce07478 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xbec5cd1a udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x334e136e ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x53125302 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x5cae1f76 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xf345dcb7 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x227d614e nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4721a653 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbdca8353 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdc056508 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xec173867 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x7a0689fb nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1726cc47 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x94f76232 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa8e71fe4 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd0f9ac3e nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd9c108b0 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xb42a7876 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x07055722 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x11d6d0c4 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1c97bb85 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x40211f37 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x438686e1 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x45abc9cc l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c48af96 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x741ce3d6 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x766ead96 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x947d85a9 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb3221e68 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd105cc49 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd614b26b l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe12decb3 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf52b44d9 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf8ca70d9 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xc3ed2c70 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x07ed53c1 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b49efad ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x10d8a3e1 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11c2f414 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1a4f20fd ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x430080e7 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4e7723cb ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x52c2cce8 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x567954c9 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5872d689 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x80039f13 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4d34d32 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc90d6e11 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5494927 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf7869247 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x05590c29 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x0fbd264d mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xa8a4f467 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf53ad56f mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0d6d3bc8 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1108f5ae ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1e7835ff ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6a915688 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b6a031c ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x702b61eb ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x71491ba0 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8d150a4a ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x967fd03a ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa4d2dc62 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xad2d1b54 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc1bfa89f ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc7b95273 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd7878de7 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea639567 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf5283cbf ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x10d7a0f3 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x76797b22 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x78ddff78 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xee3073da ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00c5a84f __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x055297c2 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x074f5f4b nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d0d027c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e95eba7 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e9c840f nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f20332f nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f7a2a8e nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25a31ef1 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28c6517e __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a1f0cdb nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e8f8f11 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ebc7bff nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36265e90 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36f605b0 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a56bde6 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b067a7d nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f08c18d nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x467747c3 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b27c723 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x510c50c4 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x565b8e10 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x582a3127 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c188727 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c4bf90b nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5def3e25 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60354fce nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6436ba76 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66d77f54 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68f6c01b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x692828cb nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6959f8f1 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69c6ab7e nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a1c53a5 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a5e439e nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70c24c1b nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x747120ff __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79203860 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a4d9e36 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8183d25b nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x858f6196 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e8a5568 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90dcdd93 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93b0307d nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x948fe0a4 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a6cd1b2 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b7a8100 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2d15b09 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6e82205 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab2e307a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabd22d07 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae5087a4 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaea1d0a9 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb513e5ac nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc074867 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbeec444f nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf8e48dd nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3ac35cb nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc469eb0d nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7a91875 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc88cd87f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcab1e978 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd3143c1 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd01e0eaf __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd37e3123 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd56bcb7b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd64e2c48 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd78ad6b1 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8b37aeb nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0fe6d34 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2154a6f nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4c08b27 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe58043ad nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea33bce4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2a0e4ce nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf59f7af7 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5b02caa nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb920815 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x71a8f605 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x10590b4b nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xa9e77c58 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2b84ad2a nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x31fbcf56 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x35f7488c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x38fdc7bd set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7aebb7b9 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8e4e6c0b set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x952f35ad nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe404a0e8 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe49c178e nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe5d80aca set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x64303ca0 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7659ab39 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9d6c91c3 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa1ce8f88 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf781b852 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x46acdf12 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xedba1823 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0c84bc7e ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1755d311 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x64670c6a ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xaa34bfb7 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb72d9cdd ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfcf8245d ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfe354ab3 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x0ddb17a7 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xc17e0e70 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x668d93d1 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7651b3dc nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xba5e4775 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf4f96f7e nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0bcbb507 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d2f2e2f nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x153d7cae nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x338a463a nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x51c12262 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5f68eeea nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x743fb262 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaf5492e4 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc21e7642 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x5cc83fda nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x62a25fbe nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xbacddc60 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xed857973 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x030e535a nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0941fd23 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0bce342b nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x143ac204 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c105450 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e8ad0af nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x389d1236 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4c11be8c nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5ccd68e7 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x84029307 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x99c542a4 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa551b33d nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa6ffc311 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb7323b8c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc7eacfea nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc976e000 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe5cfde8a nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x03c9b6e8 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5811f476 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x75b6fa5d nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8f061783 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x92d69937 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd5d96dfc nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf40c2757 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xb1912ceb nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbe8551ce nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xefcc7484 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x54248a12 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2e24db15 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2ee6a38c nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x68bf769d nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x20047400 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x40f37e81 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x5ca21e33 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x81a49d61 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa336e548 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xaa97a944 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x458042d1 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb57c1817 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xd7b63538 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1594c08b nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xb3754017 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x082b3f4d xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0a8a244e xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x15d94a5f xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1df3fc60 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x321ed35d xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x44db24ac xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5634efcc xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f200307 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73cee41e xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x79dca041 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9345146d xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9800a2a3 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b907f91 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa2c73c74 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa380db5d xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaaaa2f57 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbbabf99f xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc065a9b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc0e8e209 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb141c41 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x3dc7a848 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xa3b8e1d3 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xe4fc721e nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x088581a7 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1f13b5ba nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x8fc49ce6 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1178768f __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x25dd5691 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x31fa6b2c ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4d703c2d ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7cdfb2af ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x99e1adfa ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9cc463a5 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbef51ad2 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf944a53e ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x07942643 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x0d5d7b2a rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2f60ec33 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x301cbbbc rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x34a69db3 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3e14d22a rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x4e3a9cb2 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x532a96a3 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x56e988aa rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x5d4be7f7 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x5d896be5 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x62c6eff3 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x660d21b3 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x8477b651 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9dce292d rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xa2e28ac7 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa977f3df rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xa9d8a9b1 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xaec0c4ed rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb573f2f1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc71f27cb rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xc97f255d rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xd31fe2b7 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xe067d95c rds_info_register_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x32937c95 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xadfbc9b3 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4e0e3eb5 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x535c01bf gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf9b6c13b gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00128d04 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07f090f7 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08aacd88 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08f93422 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a923a23 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aa84baf rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b1ac809 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b2d84b0 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b97e580 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c4e66dd rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2188f3 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dbfe2e2 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fa6a544 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10309d3a rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x104affe4 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12eda635 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x131aa1b2 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x152f6961 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x154c2865 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1653b458 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1781db39 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18b3508d rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18c48e13 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1944589d cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a821728 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b3c4784 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c5605ae rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ddd6431 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dde9a8b xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f252c2c rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f6db685 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20193249 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x215c2395 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21e9600f xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2386dd45 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2431187d xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25309728 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26859c26 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27343c18 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27466d85 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27747fd3 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x279356af sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2977d12c xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x297ac44f xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29c4940d svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a2dd140 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a6b609a xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c13c91c rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cb8553e rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e399c5a sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x326edc74 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33085dfa svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3454942b put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34ca38de _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x362c717e svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3642b0fc rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x380e9404 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38dd5924 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x397aa3b3 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a57e0af rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b9c93cd xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ba36c40 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c9cf0af __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cfa1f7b svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d0d434c svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fd71ecf xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4030a926 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4952805d rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bee0103 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dd679de rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54454e23 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x554e1989 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56922998 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56d3578c svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58cc95ee rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x596e554c rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59d0a23f rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59e71476 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a03d08a rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ad4ba81 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c55dc6c rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cdbe163 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cee2372 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d803815 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d862307 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f59080e xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62fbf610 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6353d629 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6401fcfe rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65c60b37 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69b8fc4b rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a2ff007 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a83962c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6abf1be4 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c1dcec6 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e8a0ac1 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f2458e1 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f6034f8 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70b5b238 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70c5dbae svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70cb350c xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70fb159d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71232428 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x717146cd rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72001632 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72ee0544 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74e1c9f6 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7588f83b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7699325c svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x774b448f rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77687ef6 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78d0991b svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a45092c cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7deb2818 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x832da0af rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8522c64e xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855df048 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86cca03f rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87b100c2 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b517117 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bf2703c rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c2ae3d5 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c496295 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c6811db rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8da4f187 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ed3e668 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f84b3a8 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fdf65cf rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927b6ac7 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92eb574c rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9437281a rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95eda5df svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x963f5da1 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97015d78 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x976d8975 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986677af rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a44c500 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1b276c9 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4225a87 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa638988e cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6e9b802 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa9321d7 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaefbe1c7 cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb07ac36d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb08e5d4d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb54e5d10 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb57700d0 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7089660 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba91bfd2 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb2b2aac rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd41e1af read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd86e9d5 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe7f4fd8 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0463822 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc17dfd06 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc24105e3 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8663e52 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccf0076c xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce222fd9 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce3957f9 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3ba4007 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3d1dd6a rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3dd5d3d rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd40af78a rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6b14a31 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd707c9c4 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd833e837 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9fb1f8a svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb39bb29 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbcf7729 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbf41989 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd7e8261 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0067f1f xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe05f1b1a rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe239576e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5fa67cf rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5fa8797 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe883d604 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8ede367 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9ed3fc4 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9f790fe rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea595ebf rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee811cee rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf11e8364 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf42923d8 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4b2fa3f rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5348c66 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf67dfc60 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6f45d7e auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbadb4fe rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbb799c7 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf50bab svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffe484eb svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x17647539 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x24d1ed8a vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x27d9258d vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x43bfe02f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x46ab3df3 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x51d405d7 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x96065d7d vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4db75c2 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdeaa51b2 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe168c360 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe22f080b vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xee944e4d __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xffbea042 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x24a99185 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5c3aca82 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6464502d wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x88ff63f8 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9725994b wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9d697edb wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa24df9a0 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa804535d wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdba18f2f wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdc9e365b wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde0cd88b wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xebe721df wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf0cb29ef wimax_msg_data +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0909f9ea cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0a610665 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1fab7306 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x725c29c9 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7c720dc3 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8880456f cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8bb02376 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9bef3e11 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xad9e9061 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb2d95c3f cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc3132b9e cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc867316e cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd04af081 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2251f4b2 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5f9c3477 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x91283c52 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd91ce25d ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x182d5730 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x286303da __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xdd4f27ef snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x16653463 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x33b5ddf3 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x60f24db0 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x9c321ce4 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xa092b381 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xa719c1c0 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xb5640bda snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x16769fa9 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x686a0869 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6f5c76ed snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x81b970ed snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x852c6ef8 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x92be1b67 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9a0017f8 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbe5db05f snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe78b1d31 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x27c78752 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3c2edc21 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x55cb3b98 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x591c297a snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7802c00e snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x823bb9f1 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x88c4efe4 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8f15ef84 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa228c998 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe7acf7eb snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xea0f7c86 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x205a5cda amdtp_am824_set_pcm_format +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x290843b3 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x379da9f0 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x741089fa amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x79076f57 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe3ececb7 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf7e31e5f amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02b7f828 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x031b1451 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a2e8803 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c92b9a9 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0dcd04f8 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0fe872b6 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1753adf6 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19ef7c5a snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ebe63c6 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x256abc3a snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2cfede28 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e3e88c1 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32f2d812 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33e224e6 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a15f551 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40a5c0a5 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40dfa9d6 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44744e51 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x45f7ec87 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47c61108 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4995c3be snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a04ee37 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x54e56fb6 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5695e82f snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59472acf snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59fd43ba snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b872c33 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5d0f0d56 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5d725f78 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5dd0e943 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60a3384c snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x623dbaee snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x646aaf6c snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67615a75 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68957f0e snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a8ef4ae snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b8448f2 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6d450786 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6dd8b4a3 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f248be1 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fa4903d snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x86d11ea7 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a2d0584 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8be3d18f snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e136da7 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91fccce7 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f627de3 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa05ba67e snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0e8edce snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa2ed8fbb snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4ab7223 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa798e79b snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb0407e63 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb89f1c80 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc0e12b06 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc117e8da snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc32dce95 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcd8a29d5 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd63b76a6 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd93a4272 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdda08cb3 snd_hdac_refresh_widget_sysfs +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdebcb313 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0aff16a snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe523796d snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe9276ef5 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea5d35dd snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec0eaf62 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef1c0a2a snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf7d4d4a9 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa3d9953 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc5649dd snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2a773d17 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x43a28634 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4b551722 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc553542d snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe5a642e9 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf3619adc snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x063a3e4b hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x066d735c snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06fe1295 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x078fd9d9 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x095d4516 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x095e5197 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a290ec1 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a4b02c5 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d447bcb snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d9ea197 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x133d373a snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15cc01fa hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15f18378 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1989092c snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cebf59a snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21fc5e18 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23d86b64 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2468f206 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x271c784d snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x292f6f00 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a4d9576 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b87de57 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32aca38a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33cf69c7 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x350a7fa0 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38940917 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38d894dc snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3aada14a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d912a66 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fb30c47 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x409c1b93 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x432f05d3 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44357940 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x451ff7db snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47c669bd snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47cbdad8 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c57c8c2 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c9e3852 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e7ef9ca snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58d1ab5c azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e169550 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6182806a snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61bac9a6 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6303d0e2 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x633711fc _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63b6602e is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x653adef4 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66e03674 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66f38769 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67cf1a7b snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68b3193c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d9a85c7 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f3c8179 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7344df5e snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75430b4c snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7562441a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x761e7e81 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x763ea841 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x767f7ac7 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77850780 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x785e6d0b snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b3be0ab snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cfb4246 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d65f5aa snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7de58cb3 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x809a9df0 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80dff253 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82c03b11 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x842918a3 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b1a498f snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c193a0f snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x903f3e97 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93b1c19f snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x954968ca snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x992c3381 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a3bc9c8 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a9e4edb snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b2583c6 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b954886 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e12c6ec azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f4bf5ea snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2132df1 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa22630f9 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa643a0dd snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6584fe8 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8f925a7 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa6e57fa snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf7c3768 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1088f1d snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1c020a2 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6de82c1 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb928415d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba1d7fae snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb30a897 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf1e5a8f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf2b7b7d snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc168a097 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2c97a88 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6b99775 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7fd2a64 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc80e4b10 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc893b6ef snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca33d560 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce3914cf azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2b8809f snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2baa95f snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5dbefa4 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd816f3c1 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd81949b3 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda24d208 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb13e411 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdcc20456 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfe9204b snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe06cd9c0 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0d5889a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2897851 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe44481e2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9640f17 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2eacff4 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4628f17 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4c4d137 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4d6986a snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa4c6b0b snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe1d9536 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x01c8da94 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0efd46cb snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1e44f183 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1fc3ce00 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x300ba427 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3154e016 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3b2c0a7a snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4d968ff6 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x512320ee snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8145c8c9 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x81fe9d9c snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9ad25cbf snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa83940a1 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaf0c7e2c snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc05f6fc1 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc117704a snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd5e3b8f0 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe21a2c31 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe81fc86b snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeeef3770 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf030b04b snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x2e38343f cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x9f527284 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x3ac1b650 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xba43c1e3 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x81bf5cf4 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x88f663d3 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd6567816 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x4f213396 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x8c3eebb7 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x049f1f49 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x65b318ff pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd02c951a pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf46bd457 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x006d8a60 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x334a86ae devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x4b705c1a sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9a1440e8 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb74e08bd sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x1da37192 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x97768ec7 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xbe66263f ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x3c849bec tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x4f921fa5 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x0af388e6 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x432ef82a wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x97f6f024 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x9a5b2de7 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xab5119bd wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xfce8f7bb wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7d145e29 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xb8de966a fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xde3596ce fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x012fabed snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02b30968 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03faeddf snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09f5cf7c snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a583a45 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a5ab614 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ad118be dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d8fb0e8 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e4c5b35 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e5e7bee snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x113c0345 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11c939b6 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x124923f5 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1293a9e5 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12fd1606 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x154a2f45 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16dbb776 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c85e119 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e275982 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f3109c8 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23f52e04 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x252e5462 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x276accad snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27734df6 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29bb3bc4 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b0540b4 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3044f532 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3450def7 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3729fa0b snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38f5d063 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39967ea9 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39c7dc3a snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b3b4339 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b5b8a31 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c98cce0 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e88dd07 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40be53ef snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40ddbb2b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x414f44db snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45176d4d snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45f08e51 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46183380 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x470ef3a8 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4997ce80 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d0c4646 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4db18911 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51dc0532 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x521ca05f snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52a0f978 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53267f56 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x558b953b snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5744e2ba snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a4afe44 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a6e2563 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b3bc172 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b3e45e1 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d175052 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e3b90fd snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61b4f8d7 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64ed7e60 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69e943af snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d326caa snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6fdfbc63 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70ad3a64 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70fc514a devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x741bf0ed snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7592ad4e snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a310c1e snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7af6c5fc snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b3226a3 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b55d2cc snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f4faf5d snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fe993fa snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x825a009b snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8312e0ee snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83591cf7 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x845367d8 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87a1b089 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87c95b51 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a211d55 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c4a2bd1 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c73a4c1 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c9a54b1 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ce3d344 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e0829c2 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f3b5e14 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x940a961f snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ccc1641 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e5a4494 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f81777e snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2ca5cd0 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa31ed2dd snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa581501d snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa64ec1f5 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa749a340 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7d09689 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac0e95ff snd_soc_of_parse_audio_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae92b871 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf8509f6 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0c86f1c snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb733cfa5 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb81898c7 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb82d51b5 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9220b22 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb97c2452 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba98670f snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb1e0a0c snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb4fa050 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd4fb7c1 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1910beb snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b94225 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc44d78a5 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6313d5d snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7ff9bde snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9730b9f snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca05d23e snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcafbf93e devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb86280c snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccc8c3de snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcda9233a snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd31a8a0e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5c82ae6 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6a1f5ac snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda7bb4b2 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda7d7cc8 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddadc660 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddbefb65 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddcc09ba snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf2212e4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe186865c snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2514f01 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2a70661 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe30c0ef9 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe55aa4c7 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe63925b5 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6effe70 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7cced3a snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7f174d3 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe82a74d4 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe99b60cf devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebd34b1e snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef79e592 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf29ede46 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4005408 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4645f59 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf48740ca snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf549b0bf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf570940d dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b1fbd05 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2b6b84d6 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x33ffaa75 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3b548dfa line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x442c65bc line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x453f7e13 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x76dce7b0 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8cfa7227 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x92686266 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb67b4afa line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcb5d6d3c line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcef034a3 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd5d67ddb line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xec39084e line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfccff09e line6_init_pcm +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000a607d __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x001c1915 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x00255451 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x004965a6 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x004fdd9b mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x005acc4d shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x007786ec crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0078c33c pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00cebbbb regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x00e72640 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011a2605 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x011b175c pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x013d4e35 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0142f394 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x01433073 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x01679c09 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x016ba1a0 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x01993084 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x01bdf1d9 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x01d8f919 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0227fc5b agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0266512b __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x02700a0e ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x02726bec input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x02c5fa7d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x02d78a4f nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x02f34a7a serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030016eb __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x031ba343 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x031eefb4 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345eb50 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x03633c48 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x0364ed72 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x03668085 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x039fe744 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040dac87 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x040e7427 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x043b935f __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x044f391c unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x0451e266 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x0453a0b1 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0472796d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c72187 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x04d8fb2f debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e3acad ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x04f80d4b rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x0508fe88 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x050cff6d md_stop +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055cf05d sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a876a4 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x05b92b08 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x05c2845b pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x05da218a __module_address +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062a465f regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x0635d83a alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06b5298d regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x06bb66fe da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x06f48dec gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x06fe4a4e virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x07387fa8 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x075020ff ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x075f7644 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077e2877 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0x077eedf8 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x0780bfd1 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x07914776 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x079681d9 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x079b2b9d scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x07a8b72f blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x07aa882a iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cc0d7d gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x07d8aa74 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x07df46c3 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x07f6f6e0 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x080a5190 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x080bca34 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x080d2d11 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x080da606 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081575c6 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x08649b09 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a7f054 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x08aa2bea mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08c0193e tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x08c8eafa key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x08d9fc50 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x08f497c7 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092bc9b1 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x093b76fc ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x09405335 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0950c655 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0976c406 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x09842f1b __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x0987919f kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x09988bab pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x09a49157 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x09ae2b48 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x09fa7363 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x0a34916f pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0a37ddbd extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0a4b769c tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a6058bd tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x0a63f62e ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x0a68a936 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0a75ea86 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x0a8847f7 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x0a9fcee3 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x0afc4558 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0baa8df1 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0bf587f4 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c509e0f register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x0c522711 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0c7c0cbf cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cce1bd7 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x0cd1891c crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0cff3ea0 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x0d0ad475 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x0d1e17cd evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x0d42b387 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x0d453159 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d604d01 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0d65d8cc debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d79acf2 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d81d42e rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0d896645 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0d9cc20c regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x0dab9d48 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x0dbee260 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x0dd74060 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df64149 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0e353662 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x0e73a52b anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x0e8d7638 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eb210a4 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ef08863 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x0f012044 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0f02bf25 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f0bc79b of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x0f154e35 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x0f1de612 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0f207c50 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f27be0a fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x0f312e86 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f70aa6b adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f78db2d crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x0f7a4a9b ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x0f7d8dd8 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x0f823dcf sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x0f88483f uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x0fc0092a get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x0fc10d61 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x0fd63ef3 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x0ff9dfd3 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x0ffc16a3 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x100c6dc2 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101eb7ff power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x101f57c9 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x10252047 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x10292379 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x10397525 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1041ea0f gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x10486d63 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1062fe27 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x10651ca3 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x107000ad pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x10839af8 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x10932e7b platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x10a1c343 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1106b80b da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x110f67db platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1161c53a skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11751977 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x118c19ca eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0x11909cf0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x1191f22a regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x11a6a36a cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x11b64bd3 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x11c2b27b of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x11cfd1e6 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x11cfff21 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x12046022 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12618f89 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x129c99b3 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x12a9b6fe of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x12bb34c9 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x12bd9af0 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12eefe9c powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133fbf3c of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x134b98e5 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x135088fd crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1355169e wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x13553eac securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13752fe5 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x137772fe dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x1386dd80 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x1388121f skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x1389da84 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x13938bec da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x139e5ebc dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x13a195e0 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x13a2f613 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13cd925b kick_process +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13dbefb1 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1403881c add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x141d4380 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1437247e __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1457390b blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x1457a1d7 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x14633ecb pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x146e9384 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x147e1f0b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1484a0fd single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x14a037b0 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x14d24486 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x14d7ebfb ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x1509f282 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x151932c2 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x151ec2b1 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x154c25e7 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1550da45 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1566cb2d ping_close +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158e7ef1 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x159ced67 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15d3d911 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x15e90443 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1615de5e usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x161bb8dd bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x16332898 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x168c1c29 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x16bb28af percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x16c772bc rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x16dd3c18 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x16e5a28e crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x16fa68f2 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x173174a2 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17b74e5f device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x17be6555 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x17cee7ce power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x17f8c169 eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0x17fc41fe platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x1802bb5d pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18050932 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1821ca13 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x184738b0 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1860c87f serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186e73f5 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x18781d48 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18bdc9b6 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18c58b99 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x18c92be0 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x18cf5f4f regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x18df29ad blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x18e9f684 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x19119803 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x193a5af1 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x197cf19a tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ad5a72 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x19b01fac device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x19b3e679 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x19bab181 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x19c156df blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x19cff10b class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x19d1410f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x19d7240b net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a2328dd ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1a34c94f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1a386532 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x1a629aa0 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x1a71e146 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1a767f08 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1a76c249 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1a84e489 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a8f2830 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x1a92d4a7 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9d2341 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x1ac5bc9e ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x1acebe43 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1b02e659 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x1b1571ad rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x1b1bd760 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x1b7f1866 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1b8d859a usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bae1823 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x1bdac986 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1bebc48c rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1c075180 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1c1215bd threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c2d8214 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x1c37efa1 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5737bb ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c65839a ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1c6b4fca platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1c6ba12c pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x1c7107ad iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x1c7557ac sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c7d19bb crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x1c7df74c kvm_hv_vm_activated +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca0730d tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x1ca9f76a mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5ca52e pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x1d652735 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1dac49b7 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1dae3a0b blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1db40746 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x1dbfbfc6 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x1dcdcfcb extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x1dd1b29c blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x1dd8991c of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x1dde47f6 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x1ddf656e sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x1dee1c29 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x1df9fd69 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e17658d bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e28098b mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x1e30be76 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1e3815f2 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e3bc68c ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e70347e bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e9ee6fa debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x1eb5457f add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec13026 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1ec33dde fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0x1ecc368a cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1ecdce78 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ee71c5d blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x1f01606e sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1f034a12 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f267173 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x1f354564 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x1f3acfb7 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x1f4606af __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0x1f5ac998 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x1f8069ed sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8b7279 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f93d249 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f9cf7a5 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x1fd40cd6 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x1fe007b6 iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0x202ca4b1 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x20385173 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x20770816 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x207d50fd ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b8228e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x20d907af usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2105d866 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x212d50e3 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x219846db __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x21a9cf6d gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ba3e48 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21cfe5b8 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x21e138b0 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x21fe7a06 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x223bffae locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x225329e1 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x22555f60 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x22634bda devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x227508da __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b2cbda of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x22b8ac9d device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x22c442b2 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x22d0007d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x22d53d3f inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x230cbfeb ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x23173b8f component_del +EXPORT_SYMBOL_GPL vmlinux 0x23284381 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x232d0f53 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x233d88ed crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x235bbe8a dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x236a726e unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a97aeb usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x23c7430e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x23cb6547 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x23d6c79a crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x23ee83ba ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x23f56eac ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24220423 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x242b40dc sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x247359d6 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25256369 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2539f4eb rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x256f25fd zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x25716a88 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x25c58ea4 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x25c7ddee to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25dbe51f hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x25ddfabb get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x25de7dc8 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x25df2a24 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x25ee7e6d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x26032432 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2610c030 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2622eda6 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26349cb8 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x2634ca76 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266a0d41 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x269a6277 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x26a5527e of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d3b5af __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x26d83a80 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x26db4456 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x26e5a158 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x26e66e48 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x26eba314 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x270612bd sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x2720afe4 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x272645f3 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x2739d88f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x274abcee inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x277fbd94 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x2799fec6 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x279a39e9 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x27a2e0b5 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x27b2ae6d devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x27bff320 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27de53e3 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x27e320c1 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27e4ab3e cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x27eb31f4 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x27f4d408 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28040d78 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x280c5c87 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x2828a11c hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2834f941 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x284b3c89 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x285d53ee devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x28685e57 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x28892456 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x28b4a884 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x28d4ad7e devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x28ee34e5 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x28f739fb rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x291dc2df rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x29259e31 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x29311e14 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x29516d63 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x29633009 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x29645769 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x297b0689 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x29cfd7b0 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x29d39825 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x29d8592b unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x29e6c29d pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x29f643fa blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2a128a47 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2a1b85b9 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x2a1e60fa __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2a2c78f5 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x2a35d1d6 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x2a5b2136 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x2a5b85c5 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2a672226 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a93d4a5 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2aa99ea7 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2ad66f79 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2af8f688 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x2afd1be5 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x2b06ee3c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2b0fc99b regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2b116fc8 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2b14cf35 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b17d4e8 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2b1e9743 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b35f1e1 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b5db47f devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2b72063d nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x2b787208 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x2b851010 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2b9a03a6 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x2bb0f711 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x2bceee1f of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x2bd5c7ce __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2be46b6e arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3c806f apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2c567144 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2c5cd506 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c70b2df virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x2c78119c usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca38d25 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x2cd0b218 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2ce8b830 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea0b6a crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf34ace ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x2cf890e4 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x2d13a20c to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x2d1ae1d5 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1e7117 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2d3c3bc0 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4ceecf __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x2d4d38f7 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d73521b tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2d7466cc bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2d74cfd1 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x2d7935b2 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2d7a57c3 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d7c7f42 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x2db89872 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2df663c4 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x2e095594 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e496510 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x2e59478a dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2eb15298 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecce29d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x2ecefb74 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x2ed39e8f irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x2eec6e3d devres_release +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1b9c2c crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x2f3bf9c6 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f437d55 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x2f496d63 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x2f50b9d0 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x2f511797 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f6f3c9b devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x2f787c84 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2f7c4a68 device_del +EXPORT_SYMBOL_GPL vmlinux 0x2f94399d sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x2fc64b20 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x2fc66b17 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x3037214f crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3050bf04 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x306e7501 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x30a56806 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x30b0c67a kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x30c4284c fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d027df devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30e0a2e8 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x3103ec65 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311b17d2 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313763f6 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x313ab259 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x3167087e stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x31860aa5 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x31959e0c regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x31bef441 opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0x31bfabf6 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c33626 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x3200740c gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x320c8ce2 md_run +EXPORT_SYMBOL_GPL vmlinux 0x320e2bf0 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x321420e5 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x321b838c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x32234c74 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x3242c811 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x32752e4b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3299a664 regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0x329fcfbd __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x32a7d9f1 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32be0054 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32cb9072 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x32cc1e01 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x32ce51a5 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x32f0c52d dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3363fd02 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x33a18bf0 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x33c0f942 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x33e9af5c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x33ee80a8 _gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x33f0a2e9 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x33f6f930 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x33f71e42 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x33f7d6c2 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x34070795 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x345b42ba sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3491fbea platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x34a35a0e kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34a8da5f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34ab5d1b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34c02dbc kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x34d9b093 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x34e85f51 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x35005386 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351aa8e4 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3532c2cc pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x35336973 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x35547980 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x356fd143 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a3018a arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x35b389b5 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35cefa81 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3629c220 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x36476a42 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x36486333 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x364edfa4 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369880f4 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x369cb786 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ad4d0a __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c20cc0 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x36d5b03a bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36eb1c4e inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x371aafe5 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x3732ba41 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x3737592b of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x37379ffe eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0x374813ce blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x37570618 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x37585bac virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x3773247f component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x37919b08 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x3797bb4b i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x379915bf devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x37a4e520 kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0x37a7d030 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x37ae3419 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x37b2a5ed power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x37cda1c3 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x37ce327d devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x37e05c1d cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37f4db41 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x380aa1e9 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x3813b5ec blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x38585af1 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x385a8ae8 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38893048 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x389fddbb ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38ce2875 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x38e1440f blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38f66d72 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x3909319f rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x391a716f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x3924a5ea da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x392fe739 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x3944f2b3 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x394dd2c4 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x395657f4 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x39597d25 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x395c577f debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x39902976 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x39a0ef98 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x39b4cbd2 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d6b1a0 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f5a029 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x39f6a867 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x3a0395f1 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3a0d78d6 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x3a1ab73d dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2e71d7 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a40099a pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a684423 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab1ff40 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ab8915b device_move +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad79f85 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x3adfc177 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x3b066346 put_device +EXPORT_SYMBOL_GPL vmlinux 0x3b4364e1 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x3b4cb63c dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x3b6b44b0 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x3b816f87 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x3b8e8044 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x3b92b1eb tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x3ba2cae9 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3baabc3b rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x3bb3d754 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x3bbfaef5 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x3bc8e47a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3be3edb8 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x3be6010c blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3c03a832 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x3c073f6f ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3c125ac7 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x3c1e7cdc __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x3c30f5cb ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x3c3843f0 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x3c47fe7e of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0x3c579a0e perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x3c78c174 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x3c7a8d48 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x3c7dc45d free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3c824677 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c92fbfc stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ca6e019 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x3cb5e687 kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0x3cbe25da regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x3cc51765 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3cc9a972 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3cf9280f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3d02e060 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3d1d1e6d __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x3d22c9c2 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3de788 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3d5a9025 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x3d5e95d2 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x3d607950 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d65f217 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x3d77bcf6 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x3d93795a md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x3d9553ab regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3da201fe digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x3da67a23 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3db2638d pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x3dbfdb07 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcd0a8e regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3de79264 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e12731c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x3e132839 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x3e259239 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x3e372ed7 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x3e50a07c cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e668e42 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8dd73c dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x3eb7a6fa ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x3eccc187 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x3ee9a124 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f24438c wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x3f484548 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x3f89cea8 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x3f8d1604 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fad7831 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x3faf8651 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb2bd8a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x3fc44321 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3fc8af7c platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fc9efcb regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3fe680d5 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3ff3b6fa tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x3ff6f231 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x401b19fe extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x40221658 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404e5e9f devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x405eddd4 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x4066761c tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40738b35 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x407d2803 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x407e6e62 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x408ce515 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x409888fd fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x40a4a9ba skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e58202 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410074b1 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x410b40aa arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x4125421f fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x412cf833 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x412f0d49 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x416ea23e ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4187de7e pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x41923966 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x41ac60f1 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x41bbb257 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41ea79a4 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x42137508 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x42243c8b inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425ccf19 __spin_yield +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x4276a378 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4276d456 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x427de547 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x427f8f10 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b16b35 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x42b4815d virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x42be135c dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x42c526b2 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x42d5e787 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x42f3140b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x430de26b reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4316fdd8 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x432be7d6 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x4334d3c3 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x43364174 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x436bd86f phy_create +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43ba3849 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x43bf6135 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4407ab03 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x44338699 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x4436dc0c user_read +EXPORT_SYMBOL_GPL vmlinux 0x443a78fa dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x446e3c47 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x447760cc gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x447cf9e9 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x447da3f8 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x44827b4b sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449e462d irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x44a782d9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x44aeccfd scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c787b2 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x44c91730 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x44de8970 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x44ef5c24 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45235c10 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x45397641 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x455ce2d1 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x4560fd9b of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x4597de4e gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x459a3faf unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45ccbfbb device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x45e6f29e __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x45f23ef8 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463ea5e1 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x464e6bcb tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x46547796 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x466f6a8d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x467aed47 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46a099e4 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x46a79587 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x46ab04fc regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x46f141eb register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x47089e89 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4731239c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x4734d02a gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x475f9e04 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x4761a3e2 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47637d72 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4767d105 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x477f1773 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d08a47 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x47daa7d8 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x47eefe07 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x48028db8 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x481211ba of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x48434be8 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x485ffdb1 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488038e7 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x48897eca gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x48a78333 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x48a7ff97 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x4924336b to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x493740c4 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x4947e43a sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x4968b666 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x497f31d6 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a5fc8c single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x49aff56e ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x49b6ccba rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x49c6b929 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x49cf7776 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x49dd8e02 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4acdee88 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b005eb5 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x4b251eb7 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x4b265537 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4b2c9a15 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b41fdf4 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x4b43e921 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x4b51851b fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x4b6a7f31 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4b6e2f0e splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x4b6f658b sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x4b7cab4d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4bb0811d cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x4bb79cec regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x4bceb15f rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x4bdd0328 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x4bef84e0 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4bf31e32 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x4bf5500e proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x4c173930 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x4c19751c led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x4c4a531d scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x4c5bb51a __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7cddfb event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x4c8458e7 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x4c99c39c regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x4cedbb4b tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4cf939fe trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0896f9 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x4d11a4b9 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4d3cf4f5 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x4d4e638e extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x4d5c7460 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x4d81147d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x4da94ead ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df70fa0 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4dfa9903 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e169ca3 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2aac5a ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x4e43f8c5 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x4e5f3efa pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4e7904ca max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x4e84b737 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4e8c3f8b xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x4ebd7673 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x4ec4b28a blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x4ed7f7fe regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4edcc62c pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f053614 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f05925c devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x4f07ba8d fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f22d8f1 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f59f008 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x4f676e8c inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6f13e6 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x4fbf9103 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x4fcbcd5b dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50375383 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x5039c4ab percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5040e596 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5092eb0d inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x50943b77 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x50b53738 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x50e1e9c7 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5121b23d get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x513e0dab sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x5171dd7a pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x51821812 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x518d65e1 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x51951815 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x51aae68f generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51d2bb22 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x51ddc34b spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x51e943b6 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x51ea52b6 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521da213 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x52299d55 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x522b84af of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x524960b6 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x525a19cc skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x5266964f usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x5270de8d led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5277b1c1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x529a516d register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52b25ac9 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x52bb2af8 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x52bccf51 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x52d2a8c2 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x52d9923f devres_get +EXPORT_SYMBOL_GPL vmlinux 0x52ddb28b flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x52df79cd __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x52e06238 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53516199 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538a0131 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x53d07a5d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x53eb9797 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x53f67708 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x540631df usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x540716f2 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x540be498 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x54175947 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5418179d regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x544937ac copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x5451debe blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x545c6281 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5472abf3 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54983326 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x5499af65 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x54a9c0d6 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x54b6cd49 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x5507b050 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x551d59cd max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553cb1f6 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x556aa594 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x556edc41 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55827d18 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x55aee404 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x55c696da ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f2aa7c dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x560a6335 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x560aa1db opal_tpo_write +EXPORT_SYMBOL_GPL vmlinux 0x5617f5f7 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562797cb __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x5628e224 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5632a010 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x563d440a regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x564073d1 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569bb7da serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56c29969 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x56cfc2ea nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e589dc pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f4cce1 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x571a158a crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5729c07b iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x572abbb4 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x5731ba56 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x57458f06 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x575b35b6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576b7bef bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x578746f3 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5789809e devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x57908a33 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57969430 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a05dde iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x57a82f7c nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x57b7855d devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x57bebaf8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x57c331b8 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x58110346 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x58793f2f tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a09916 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x58a34b5d ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x58a702bc phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x58df870e mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x58eef2dd pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x58fad138 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x593b0824 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5944702a wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x594fb8c3 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x596e492f usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59bd214d pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x59c3e371 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x59c96dce dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ec1d4d sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a011be5 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5a024ecd percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a683d47 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5a68cfc4 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x5a69b49a pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x5a74a80c wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7f6719 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5ab7bb10 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x5ae63424 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5af37d91 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5b0f41c4 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x5b39ae6a usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x5b50daab cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x5b648fd1 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5b69e24c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x5b91592a trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x5b9c6219 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x5bae7232 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x5bb643d8 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x5bc2311a crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c2f02c7 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5c31c047 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c7378d5 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x5c8d0cd1 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x5ca1193b task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbcb714 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x5cbe9a24 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d29b5d0 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x5d7662cc leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x5d99f5a0 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5da16774 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x5da19d25 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc45dd1 srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x5e1dabb6 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x5e24ff61 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e674a24 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x5e6a882e rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e98df54 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x5ece4499 user_update +EXPORT_SYMBOL_GPL vmlinux 0x5ecf6fee of_css +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5eed9ba1 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5ef77043 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5f067cae of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x5f0e0917 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x5f1530c2 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x5f1a072b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f332dbf platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x5f3e63a4 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x5f5b00a5 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f80ab40 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x5f90e4d6 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5fb4fbe7 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x5fd7b319 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x60464a1e driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x604a097f crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6051f342 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x6056beba powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x607e4cb1 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x60800c45 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x60860209 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x609b12ef sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60dfb967 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x60e9a5f0 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x60f5db5c blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60fe4e24 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x61244c9b __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x617bdb88 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x617c1736 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x618bf396 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61bed828 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x61c0f169 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x61cb7501 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x61d7ffd5 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x61e980b2 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x61f6ed9a __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x61fa074c crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x62184de1 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x622772c0 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623f3db1 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x6252871c gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x627f086a gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x62a68f26 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x62bd5a6d __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x62c32405 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x62c74916 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x632be282 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x634c5685 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x635994ad tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x635b032d __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6373102c devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x637c92fe fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x63b6fe91 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x63e2c117 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x63eaba7f dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x63f14ebe io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64157ee1 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x64507806 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6452274d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x647c88be xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x64b4613a rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x64e80dfb freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x64fd219b sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x65050326 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x6512217e class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65264cfa cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x656879b6 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x6568a69d inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x65835307 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6591af7d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x659e21ef phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65afb8b9 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c0aa53 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x65c3d685 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x65c40d4d skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d36258 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x65ef110f ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x660c7a69 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x660fedff tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66192d3c nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x663097b3 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663757c6 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x663db3be inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x6644f2cf sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6691a14e bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b24de5 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x66b4a122 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ea98de pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x66ff3822 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x670bc408 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x6714d185 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x6740d1b0 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x674357be usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x67476eca uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675d1ae7 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6761056f cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x67677501 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6795d3ee swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x679b4334 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x67a24416 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x67d42d77 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x67db44eb __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x67e3674a skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x67e5018d ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x67e8d4d4 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67f5c880 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x6800720c xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x68036959 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x68072a4b ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6843d7d2 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x6866b571 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x68d044ef blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0x68eeecd0 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x68f9fe3e gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6922e442 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692de0af rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x692eb13a crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x6933e33f blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69708ddd rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69854f7f __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698fb9f1 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x69e420fd usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x69f155b2 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a25f986 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6a3f6f6f usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8570e5 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a936feb system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x6ab35995 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6abbe26f iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6ac3f1ef blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x6ac5b3eb rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x6ac70143 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6ae154bc fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x6ae9c5da pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x6b18329b regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x6b188aa9 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b38885f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6b4c78b0 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x6b5da14d crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b96cd4a dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x6b9fe122 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x6bd5496d trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x6bf5ee35 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x6c006750 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1beac7 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x6c2f055a sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x6c392a21 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x6c3fa426 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c566fc8 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6c612bb2 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x6c72dfbd sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x6c77f440 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x6c7bd453 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca927cd wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cc85014 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdad4db device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x6d023b92 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6d15766a kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6d19bc04 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d40f1be usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x6d4f2080 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x6d5742e4 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x6d74237c __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x6d76c798 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6d784fed thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x6da4d08a relay_open +EXPORT_SYMBOL_GPL vmlinux 0x6dae0326 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x6ddadcc6 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x6de197f1 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x6df8731c regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e01d6d8 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e306206 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e350e10 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e3bd47a tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x6e437120 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x6e46fc45 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x6e48a8d1 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x6e4cc3a3 eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e6b8bea kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x6e783314 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e86bdb9 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea83578 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x6ede2088 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x6f0497c4 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f0ec447 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f22c1d8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6f3cf2ae trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x6f424c2d __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6f4dff4e trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x6f6c0521 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f873ef9 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x6fd0be57 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70511a09 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x70613d59 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x7066fa84 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x706d25a2 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x70750b36 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x707f4e5d fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7081bdbf ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x70a789a2 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x70b8c68e ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x70c33f64 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70db885a pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x70fbf460 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7119e102 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x713a4fba set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7172a20b of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x7187ed96 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x71b078d8 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x71b4cdb0 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x71d4ff62 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x71d73099 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e75b6a devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71fd688a ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x71ffec90 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x7234582b usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x724ca76b gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7272fa47 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727b6563 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x72a31519 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x72a3b5ec device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x72b92943 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x72c180fd usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72ea3790 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x72ec911c pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x72ef2b82 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x730a7fac platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x730b684b dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x7328049d usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x73292306 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x7329caed tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x7330337d tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7345a591 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x735f02d8 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7371c467 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73afa3ff __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d80eef pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x73dea694 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x73e7a9e8 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x740a0846 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x741c31db eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x7421b4ac wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x742b370d nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x74376583 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743cbe09 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7469021e isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x7481ead4 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x74897beb arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b01544 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74db5cbd usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75182263 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7525403e trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x75329035 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x753f5f56 mmput +EXPORT_SYMBOL_GPL vmlinux 0x754cb0ee cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x755c0a2c pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x7573591f inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757fb03c pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758e8ae1 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75c4ae88 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x75dcde95 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x760da0c3 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x76171759 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x761b8505 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76b737f7 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x76c456ec __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x76c6644d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x76d8f216 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0x76e04b49 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x76e6e70d percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x77034705 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772eb05b __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x773a8719 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x77649bda blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x776da62a disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x777f4b87 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x77b6202e l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x77d45287 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x77d66ba8 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x77fc1388 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x7812d731 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x781af862 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78473e33 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x78490d98 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x785f8332 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x7869af4d thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x787ea46b usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x7892b3dd spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78cc53c4 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78cc5bec hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x78e5751d devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78e6a814 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x78f4c0e2 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x7934419d blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7957eea2 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79773fa3 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x7984a95f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x79c2ad39 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x79d1810b shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x7a01ff19 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x7a2c2f14 mm_iommu_find +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a55adaa mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x7a726ac4 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x7a744915 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x7a7cb14e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x7a922b92 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab5c73f ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x7ad3331d remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x7ad60dca serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x7adf13fb ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x7ae424d6 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x7afbbe3b pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7b09f3de bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2310b7 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bafb2d3 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7bb183a4 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x7bc54d5e sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7bc6c49f nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x7c004e17 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c6beea5 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7ca706e8 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x7ca9a696 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x7cb95594 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7cbbe8ad crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x7ccaceaf is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7ccb80da irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce7ce6a handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x7ce84167 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cedf677 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d1cbc9c fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x7d2a5632 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7d3388bc rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5ee62e pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x7d6d8871 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7d86f45e exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7d8972de __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x7d907370 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x7d923e61 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x7da85ddc pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x7da9ebfb devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dcc4b73 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e0d9447 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e3347d0 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7e53be3e sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x7e55ef41 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e793e49 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea5e745 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x7eb53b23 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7ebf1466 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x7edb389f regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7ede9fef bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x7ee4f9b7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x7eec8984 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x7ef7caf0 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x7ef8da0e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f1109c5 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f5d9b97 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x7f6d675c blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f86a734 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x7f87ad42 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x7f8ff539 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x7fb7a426 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fcb72bb i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x7fdd5774 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7fdfed12 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x7ff7f6b2 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8000a676 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x801a76ce ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x80381a37 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x804ea02d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x807670bd trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x807b4744 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x80881b76 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b3c6dd fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x80b55189 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80ec0111 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8106eedd early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x81089e2b perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x81161546 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x813b81b7 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x81428b06 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8152e111 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x81c67894 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x8217bad3 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x82311bec sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x8239cbf6 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8255019d init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x82831dc3 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x829ad24f trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x82ba0741 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f67cf1 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x830cb5e3 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x8312252c device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x83304802 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83779ac9 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x8379e118 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x837a34ec ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8383c675 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83906bc1 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x83930930 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x83b2b390 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x83b8fe4e ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x83e511e9 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x83f52f35 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x8408ec03 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x84368bed __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x843e75d3 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x844fc75a gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848b1dd5 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x848ef359 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84cd519c blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x84cd685c ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x84e925a8 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x84eae89d ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x851f9372 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8530ec05 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x854520f9 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x856d9db5 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x857a4613 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x85943aec debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x85a9a86c unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x85bd0876 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85dc0d70 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x86015d83 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x860d198f sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x86165b28 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x86259ebe ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x864f8c1b ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x865eba14 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8666a7c5 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869bf4a0 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x869c95ac of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x86a4a81b thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x86c045f1 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x86c2b051 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x86ca223b fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x86cb08d9 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x86ef985d security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870a98c5 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8725ed41 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x872fa1ff shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874c34fc component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x874fcae3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x87604089 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x876f50c4 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x877bcd8d ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x877da1e7 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x877f9791 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x87806a9e skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8793486d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x87990947 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x87b12405 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87b31b67 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x87b8d72b smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x87bcfd89 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x87de1744 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x87de6829 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882289c0 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x882acea8 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x884a386e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x88965ad6 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x889dd164 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88acef69 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x88b05e6c uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x88b2661e fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88cc3251 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ea273 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x89386c5f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x89469e0e bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894f55cb netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x8951d793 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x898e8967 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x89afbd91 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89e89411 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x8a25cbd9 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x8a4c3d58 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x8a504b22 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a56d915 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x8a5b6a67 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8a80900c iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8ab82f9d device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad72d28 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8b03c71a __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x8b08623b gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x8b42089b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8b5541d2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b813f2d irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b868fc5 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8ba21196 srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0x8ba49e79 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x8bca71ab platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x8bd952ef ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c387ea0 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8cae54b5 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8cb81bbc virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x8cda0964 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x8cdcb45a ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d32313c fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x8d377205 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x8d3bfce5 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x8d4b5a90 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x8d690074 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8d8fadd5 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x8dab4462 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8db089e1 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8db7f301 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dc41183 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x8dd08083 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x8e223e1e cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x8e2840cc cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2db255 irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e403ff2 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8e599120 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x8e59e52a ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x8e88fdea devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x8e963989 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8ea3387f blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x8ee6018d regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x8ee6f7b3 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x8eefa112 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x8f03c67c fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x8f0420be copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f083dc3 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8f215e2d usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8f23c796 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x8f28f38c tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x8f6bde71 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa2ee96 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8fae41f4 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x8fd1d1e7 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8fe2663e usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x8fe62e13 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x90258f20 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90991295 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x909e951d gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aea640 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x90b2448f stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90c53d44 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x90c804b1 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x90e44c00 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x90e847f3 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x90f1919c sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x9127f21e rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x913d69b9 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9144be7b rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x91599f05 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x915e09b7 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x9165e627 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91907b90 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x919bea49 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x91a0b4fa crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x91b5faa4 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x91b81ed1 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x91b9b2b8 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91db66ef get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x91e2596d fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x91e65a4c debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x91f0c992 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x920b3b9c split_page +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9227b033 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x92293257 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92735503 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x929fa733 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x92b35343 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x92b6b7c6 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e60d01 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x933c4ec3 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x934c23c3 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x9376d13d ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x939f46a8 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x93a52aee led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x93cd6cbc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x93d4df1b __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x93fe5018 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94652540 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x948c4a4e sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x94900214 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a10d69 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x94c2544d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ebf1ad irq_find_matching_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f0afdf get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9509d25a tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95197a3f nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9538e3f4 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954f34a5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955c0ea9 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x957ecc6a shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x958809f6 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x958c9cd1 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95f765fd wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x960dab13 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96715020 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x96c3c44a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x96c51b53 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x96c52b66 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x96ca48dd of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x96d61f09 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x96d751e2 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x96e4b535 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x9709db8e tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x971fc5eb sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x9723f770 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x972a85a9 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x974ba9a7 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975f789c scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x976131fd kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x97749060 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x9775f04d usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x978c73c4 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x97ba28f3 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x97c90ef4 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x97d68bba crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x98010086 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x982cd909 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98803665 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x989a2ba6 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98aa693d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x98aa717d pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x98c6ba71 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x98caef9e fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x98cdcabc gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x98d585be devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x98ed1cbb mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x98f00fad sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x98f9f73d fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990dc21b cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9925cb11 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x992828ca spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x992ae692 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x99368d65 kvmppc_update_rmap_change +EXPORT_SYMBOL_GPL vmlinux 0x99402241 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x9950a57d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x99596e3d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99637400 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x99721e8f extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997496a4 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x9991e518 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99d7c376 device_register +EXPORT_SYMBOL_GPL vmlinux 0x99f46bde dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a09870d request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x9a0c4ed3 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9a0c6f45 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a24a572 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a7ece2d copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9a7907 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9ae4bd6e serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af1b8c5 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x9af71e57 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x9b061b9b tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x9b127af9 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b2710f9 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x9b621a94 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x9b6c2b46 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x9ba1bc9c bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba64ba0 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x9bba6dab ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c13d07c devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x9c3502b4 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x9c461c41 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9c46fe7c thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c686c17 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9c6b1645 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x9c8772b0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x9caa2aec udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9cb0df4b trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x9cbbdc64 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9cbd2084 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc96d64 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9ccea070 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x9d01afd6 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x9d02ec14 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x9d0d8e81 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9d153116 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9d868983 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9da6a89f usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x9dab2eb4 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9df3047f crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9e114a6e kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x9e1517ab ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x9e37fb3e key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e57f750 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ec271fc blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee4a963 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9ee88e0a pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f969f5f devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9f96f9b1 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x9fb19552 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fea1c9a dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x9ffae5e3 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa019e102 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa0326047 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xa04462e8 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xa04b654e srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa053b79e arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa0950499 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0abaadd component_add +EXPORT_SYMBOL_GPL vmlinux 0xa0b2417c raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa0be5cf2 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xa0bea641 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xa12757af anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa147b50b pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xa1498221 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa1604b4f ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xa178ceca pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xa18b4d68 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xa18cf6e8 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1955e61 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa1a2e7f5 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7b66 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xa1c34d2e system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xa1d6c3ed blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f24e84 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa200a9f7 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xa205005e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa235260e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa23aac85 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa25a2cc9 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2718017 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa27baebc wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xa281826b usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xa28a3953 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xa28dacd6 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xa290280d uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2e73c4f scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xa2e7ade0 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa2f4f33a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xa309768b vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa31239cb device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xa3283200 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa36e842d rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3a9a557 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xa3b0d741 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa3b878df regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3cb76c0 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa3e16693 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f4ce79 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa4261b0d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa43f66be bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xa4512aeb of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa45b2692 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xa46d88ae ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4989783 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xa4cff906 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa518d455 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa53e11db crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa55bb467 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xa55d495c gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xa567e0ef device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xa569b917 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5d31f04 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xa5ebd3aa device_create +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa60fbf6c trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa630b2ca device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xa63faae6 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xa654b366 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa6637c5f dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xa6647139 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa67107e3 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa6892ae8 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa694205b ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xa6a7a35c stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa6ab54b6 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bf1a0c wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xa6c868f6 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa6d6eaf3 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xa6dff911 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ec000a init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa70fc7d2 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa72205f8 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa72fdd36 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa7532f52 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xa753335f crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xa7562a7c rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7743101 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xa783064d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa78aa7ac pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xa7a34d6a ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa7b7088e regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xa7b935ed perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa7c05aff perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa7d2e1f9 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xa804cb90 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xa8271490 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xa828d0d5 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8b986f7 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xa8bb4165 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xa8c8ba7a xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xa8d9196b sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9404115 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa9428334 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9b5aaff simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa9c12273 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f486a2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa9fe8975 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xaa03403a pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xaa5781f1 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xaa7b849d usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xaa960538 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xaa964067 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xaa9c3d69 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab6e6c3 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xab231339 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3f2c0c regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xab53fed4 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab5f2be5 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xab6b61ac sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab85dd54 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xaba56ba7 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xabae4c03 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd5f1a9 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabe3e636 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xabec252c usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xabf2b89a cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xac0e6973 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xac0efaf4 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xac1dbf16 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xac2938c3 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xac296935 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xac77737f xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xac79d0ce spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xac7d13cf gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xac891fc7 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xacb24e66 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xacb8b88d fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xacbc7006 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad129df6 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xad1cc9ad of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xad2bfb62 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad5b83e3 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xad62dde2 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad685496 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xad8255ab tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xad8d2717 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xad9a332a __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xadc3c96d blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd85b10 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xadda411d transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xadeb574d phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfbce24 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xae01acf0 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xae0270a0 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xae2f1095 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xae4ccd85 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xae5146d8 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae85f1f4 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xae8d64e1 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xae971eeb dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xae9e9640 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaeb5562f tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaeca4d06 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xaedc4f3f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xaee83186 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xaef7bdc8 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xaf076177 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xaf0b9203 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaf18443f dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xaf1e3abf blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xaf24afcf __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf4f1134 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xaf60595d tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xaf6fc8bd rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xaf7a0774 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xaf8015e2 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xaf87cd36 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaf8b9a0e dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xafa83ebf ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xafad5a9a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xafbcedac attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafd75037 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xafddb794 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xafde8505 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xafe65c93 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xb00e6e7a key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xb0378e8a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb05421f9 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b8eda7 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e1952e usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xb0ed3396 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xb0edc044 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xb0f255fc inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xb100ba2d rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb11208a0 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb11d3f5c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xb12a7816 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb12f6925 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14c549c pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xb162e6a6 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b370bd __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c1af86 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xb1c7f886 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb1cbc630 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xb1e1f9f7 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e6f0e6 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xb1e8f24e __class_register +EXPORT_SYMBOL_GPL vmlinux 0xb2122a3d component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xb212f527 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22a15e4 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb232d018 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb2444c2b ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xb249e505 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xb24b66c3 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb26769fa init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb290c11e phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb2b94cd5 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xb2c23a78 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xb2d21e32 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xb2daab32 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2fe2dff lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xb31eee74 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xb3273f13 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xb33a9276 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb33bfffd ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb35129bb of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xb36c8ef8 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xb3984f1e elv_register +EXPORT_SYMBOL_GPL vmlinux 0xb3a046c8 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xb3d3a76c phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xb3e70167 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4257b24 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xb425cf6d blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb432bb7a sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb4402670 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xb447bbc0 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xb457ac2a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb47dfa13 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb483a218 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c5ba18 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f37566 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5457634 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xb55b9098 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xb573fedc swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb597cb65 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5abe49c kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb5b43362 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5d9817e pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f1f9b7 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xb5f1fac0 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xb60445fb dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb60848c0 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62789a4 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xb640abf8 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb6611e9c rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xb69fee59 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb6a36398 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xb6a38405 srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0xb6a7c2a4 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6f3c7ae __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb6f92d0b devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xb6fa7335 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xb6fd417b unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb6feec1c sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb6fffeac call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xb708c04c ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb711f9a3 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xb7375060 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb73ba264 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb75d7685 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xb7818603 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb7a29d9c clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xb7b1e16f serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xb7b30dc5 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xb7b71d81 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xb7dfe432 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80007c9 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb803eb2a of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xb809ef77 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xb81d2468 pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0xb8256b19 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xb83f9fe2 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb845d49b usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xb84ab97e blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xb873d567 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8a49ed7 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xb8a69d37 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xb8ae34d9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xb8ae8547 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8cc74bf devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ea68de ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb91ede23 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xb9268c75 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb945ace8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb94f6c87 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xb95785b4 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xb98522d2 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb99caddd usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9dde588 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb9f4dc6f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xba145cc0 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba18aa02 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xba1f1169 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xba2431a5 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba52c1f0 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba53ee88 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xba677190 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xba8788d3 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xba87da7d unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xbaa032e2 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xbaaab9b5 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbab8600c raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabfb112 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xbac4d469 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0b3b58 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xbb15b86f ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xbb45f03f shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbb4fbb64 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbba1608e ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xbbb37a46 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xbbb71767 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xbbc017a1 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xbbc4d0e5 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbbf9ac32 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xbc10bef5 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xbc1bc0a9 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xbc200986 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbc22eba6 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xbc29bcc3 scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc72b0ba do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb683a3 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xbcc6d06d crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xbcc7d0f7 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbcc8ef87 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce09d4f thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xbce44146 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xbd0646fa ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xbd21cdc3 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd2b639a perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4ba119 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xbd4da7b9 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd7d1e86 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xbd7fb011 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xbd9a9b77 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xbdb5b341 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf4441a debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe0715a4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xbe0d0831 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xbe0edb63 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe247efa pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xbe333c64 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe647ce7 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xbe6835da usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7c9f7e eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0xbe81ae5e sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xbe8b119f devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb4868f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xbebcd541 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbebce691 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbecf787b pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xbee0128b pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xbee08cdf fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbef4ae37 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xbf003853 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf5762ca ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xbf5ab68b blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xbf97ca73 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xbfb01c93 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xbfb04f77 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfcc144e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xbfdb29d6 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0046d9c ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xc009f955 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xc00e8fff crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xc02b3cc9 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0472877 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xc0493784 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc077bd90 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xc085d7b7 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0bcc203 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc1258379 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc12a4e2f crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc1436c14 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xc14c5f72 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc14d3b1e mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xc1639e0c ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xc164605b bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17986ac irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xc17b8fb2 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc19e3c3b skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xc1b32411 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xc1b68f93 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc1d5a037 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xc1f18c9c wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xc1fb60d1 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xc2125db2 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc243ad19 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xc256b899 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xc267be3c raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc26d42d2 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc27de58f wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2851ec2 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc2a13dcc trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xc2aa8c3b device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc2b51ece tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2edf6c8 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xc30e805f preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35d625c flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38ca0f5 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xc38f36d9 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xc39af0d6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc3a04506 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc3a76112 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc3bc683c hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3c05230 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xc3dfaf3a __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xc3e177d7 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc3e49b75 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xc3fdb2db ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xc400eeea __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xc420965d perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45a2a52 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49624f4 unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4dcff8f of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xc4ddf671 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xc5294936 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xc52d300b fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc536bf21 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54328ef usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc5480bbb sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xc548cc82 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc55e8340 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xc560eacb fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b5a090 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc5c6b68a of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xc5fd1464 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61f8f82 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xc633e9cf usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xc63c7f8a driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66683d0 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc6856483 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69c0dc2 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6da7a0a __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xc6df22b1 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc6e653b8 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xc6e6bd9d md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc6e9821c __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xc718eda2 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73b8c3d dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc769ec00 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc773d3a2 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xc7754e22 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xc79a9ae6 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a4de81 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xc7bf5577 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c88e31 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e9977f pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xc81111f3 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xc82a995c virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xc83b22e4 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc845d4c4 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xc846c9c5 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xc849e4df iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xc871bf5f __class_create +EXPORT_SYMBOL_GPL vmlinux 0xc87a6037 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88b9f50 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc8a44afe udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc900c3f4 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc916ead4 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0xc9224c18 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc929caaa bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc944b3f9 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95fb24f user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc96e3de6 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xc97a31fb skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97df58f bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc9bbb097 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc9c5f260 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xc9e77efe class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0e23bb of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xca1a0699 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xca556c69 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xca5dedb6 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xca630dcf ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca98b823 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xca9c6e5e rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcaa174c0 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xcab9ebbe rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad5081e iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcaf6ea28 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xcb0877c8 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1ee5d9 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb7f052b ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xcb8d7598 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbc56bf1 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf04819 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xcbf610c0 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ac48e nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc326a62 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xcc35e259 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xcc6d6748 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccc9b4d1 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccfbbaf8 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xcd0329df __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd144e32 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd1f3167 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0xcd66eb23 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xcd6ca615 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcd6e2cda wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd953938 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9ae70c led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcda03b3d __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcc53ad crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xcdd0a437 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xcdf8ecd8 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xce151a36 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xce15afc5 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xce3a8e59 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xce5290da locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xce570bad __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce789df6 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xce947df9 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xcea2d771 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xcea301c0 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xced823d3 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee78abb perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xceee3249 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf12a36b sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xcf27d49a tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf6512a1 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xcf797ed2 device_add +EXPORT_SYMBOL_GPL vmlinux 0xcf8257e0 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xcf83d1bc crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xcf854eaa ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcf9bd71f debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcfac0d61 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcffe7aaa regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd03b9cb4 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06b6085 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xd073cfcb rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd07b1c8e tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd09dfd9b percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0f1ae73 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd11f292f class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1813fd4 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd1acbaa5 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xd1af8b42 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f6d90a percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0xd1f87239 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd1f95f7d scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xd203bad1 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xd20b9d2f bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21dddd5 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd25205ed hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd264c28e usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd26628ba tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2817892 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xd29b71ba regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd2bb6b57 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xd2be83e3 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xd2c83c37 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd2de5f33 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2e28f6d sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3133b18 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd32159c4 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd325effc security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd33d6f25 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xd355b076 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xd360d1dd arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xd363152f get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xd36b08b0 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd38b00c9 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xd38ba274 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd3ae90f2 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xd3cdda54 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd3d72899 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd404a937 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd42a1825 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xd441f122 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46a7dad regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xd4bd66a0 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4db8656 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd4e6bf5b adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd4e99c26 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xd5018cfa regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd521e147 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd5287983 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xd52e8d92 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd5544361 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55d2e69 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd57998e5 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd584d6f7 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xd5a1450b ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd5a21ce6 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5a3bf77 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c7a72c irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd5d0d405 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xd5d2b3e2 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xd5e32602 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xd5ff6c25 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd64befc9 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xd66780af reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd679864a __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd67d6786 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xd69b3ed2 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6c16e7a gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd6cb1f4e crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd74848a2 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xd75665aa device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xd7654f73 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xd768a307 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7693358 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xd76d44e4 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd773fbf0 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xd77bc6a7 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd781819d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd7b60da2 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd7b88791 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7deff9d blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd814f8b8 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd822b2af ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd8503a57 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xd8657325 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8791c32 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88fcf91 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd8a2ce2f sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xd8a793ad rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xd8ad5cdf power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xd8b75b98 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xd8d39c5a ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd8dfa888 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xd8f13436 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xd90423f1 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd90c4d72 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd9251ee5 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9436dda __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94b6ede led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xd9501603 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd96b8c14 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd9972e57 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd9e9676d ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd9eb3c5e ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xd9ebfb39 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0232fa regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xda3ede9d extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xda471dea pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xda62e359 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xda7cb3a0 find_module +EXPORT_SYMBOL_GPL vmlinux 0xda89521f nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xda9889dd firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdad15e0d eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0xdadfb0d6 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb2d618a ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xdb3e7fa9 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xdb44917a irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8c12b7 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xdb8da586 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xdb91e05c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xdb92f968 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xdb9b5f1a disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdba5f363 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdbb8f729 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdbcba98a ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xdbd5cd12 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0093df iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xdc01e278 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc2aadbe posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xdc3c1727 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xdc5102f3 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xdc53efc1 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xdc5bb929 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9ca331 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb0a1d7 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xdcb31015 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcb5b28e kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0xdcc243f2 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0xdce0e8ad regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xdcf12503 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2192f8 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd325de7 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd39f59d usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xdd3cbbaa regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xdd474a35 kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0xdd52d094 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5e647f gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdd62b21d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xdd671819 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdda7c93c ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc2a3c9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xddd015fb rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde087c3 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xddfb696f xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xde00f5b1 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xde3be606 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xde425c3c devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xde461aba bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xde8bcedb flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xde9e2403 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdea8d850 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdeb72335 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xdeb770ae debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xdedf473f devres_add +EXPORT_SYMBOL_GPL vmlinux 0xdee5f57f __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdeeaa254 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf29d811 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xdf392de2 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xdf511758 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdf581005 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xdf605269 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xdf6d28bc ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdf9fbde4 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xdfbbafcf netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xdff1ce6a blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xdffda46c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe025086a nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe02bd2ab fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0328190 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xe0330e45 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xe04c13cf ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xe04dfc4e eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xe04e1bff of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe0515ee3 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xe05685dd usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe063cfc8 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe087f34c iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08ec248 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xe09d459c inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe0b4fa7c gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xe0b82300 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xe0cb5d6d rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0cc5ab5 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xe1349820 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xe137dc3b sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xe1569f0a gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c8a489 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xe1cae388 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xe1fcaabc sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe220b84d sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xe223fb5f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xe22a3ccf ref_module +EXPORT_SYMBOL_GPL vmlinux 0xe23c4d16 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe24a5dd4 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0xe253c130 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xe2846248 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29b397a irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xe29f0e1b blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xe2b126f8 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xe2b683f3 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe2c6bfcc usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xe2cce896 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xe2eb44db devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe302ba12 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3127d67 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe331a87f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xe3590076 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xe369f7f3 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xe37d4e40 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39b4a06 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xe3cb15ce mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3e6133d transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xe3facb08 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xe402c667 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe4291cc0 input_class +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44b00f7 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe477d92c of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a7111d nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe4b1b05b of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xe4b56d06 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c155bc crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4c9a1c1 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xe4d7773b ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe4d94ac2 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xe4e6db36 put_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xe4e78679 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xe4f32a3a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xe510ad60 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe53540d5 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe572fc4e __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe595c274 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xe59bf17e scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xe5b4d38f ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xe5b75b98 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xe5d3cb54 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5f5a330 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xe600d34f usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xe610b3ff pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe670173d tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xe6728c4b of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe67932c4 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe6affa5e crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d91f6e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe70e043b of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xe7156fd6 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe727153d pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe75505f4 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xe768d444 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7706149 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7ac34a6 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xe7b3a0cc serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xe7bccb52 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xe7c9f067 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe7d2ec0e ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xe7ea952a pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f4f899 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe7f9e7f7 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe7fe8ccd fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe800dabc regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xe814d973 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8474e34 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8832eec devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe8865309 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8e912db __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe8f1c2d7 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xe8f46963 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xe8fd7614 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xe8fd848e of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xe911eaff register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe91511c8 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe9298c12 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe9605b22 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe964488e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe986189e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe99880f1 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe998bc34 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xe9bee66b tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xe9c26866 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe9c2bb1d usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xe9cb6ea1 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d5bc35 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9dfbbb0 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea38a04f posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea406db2 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea46cfd5 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xea4d3860 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea65e5de phy_init +EXPORT_SYMBOL_GPL vmlinux 0xeaa2a273 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xeabf277e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xead5f138 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xeae73bde irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xeae79c4b attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb00dcac debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xeb06d9e1 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xeb2b8ee1 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xeb376dba pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xeb43afd1 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xeb43b42c pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xeb582723 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xeb5e18eb blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xeb6e2c97 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xeb70021a iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb933644 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xeb98c0c3 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xebc9e03b posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xebd6cd52 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec03ba1d fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xec05cb95 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec22202a iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4623da regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec85dce3 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xecbf7a26 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xecda0ca6 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xece7ee22 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xecff407e da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xed01ccc7 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed05bbb2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xed2018ab rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xed55c0aa blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xed6c032d i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xed7052ac regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xed86560f handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xed9142b7 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xed981a16 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xedc5b361 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xedd0c91b virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeddeee6a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xee17a4ef ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xee17c273 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xee17f093 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xee1a6163 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xee236334 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xee2f4cb1 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xee61a7c9 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6c7a96 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xee758b92 srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0xee80b836 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee8c1b0c pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee91863e regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xeea4edf1 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xeebe40eb mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xeec7b3e0 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xeece1688 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeed2c1de rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xeedfbd5c usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xeee22cb8 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeef778b2 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xef13dcec driver_register +EXPORT_SYMBOL_GPL vmlinux 0xef16e81c handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xef3f6d4a phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef8b6cbf find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xef8be29e device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa9551d usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xefaecc03 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xefb5cbe0 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xefddf08c pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf0038296 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf00bb04f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0119de4 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf03fba3e usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf04ebcb5 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xf07019df pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07e6b52 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xf0c13992 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf0d5cad1 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xf0dfa963 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10c8a08 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf11824ef of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xf1360017 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf14e4d24 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c71c12 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xf1cc9eb6 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xf1e2dfaf kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xf1e54855 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf205bc15 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2391c64 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xf23e1ee7 __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xf260fbba wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2a2a4ea ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2b66713 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33dc43c sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xf3501539 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3ac1d9c cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf3b015fb usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f51b59 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xf4138c39 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf43f1837 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf4403740 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf463fca8 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4bc3f64 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf4be8af6 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf4dc5184 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xf4dcda7e ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xf4e85df0 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf52ac8c9 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xf5379771 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf539226e pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54f032c __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf54f7e49 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5652d1e reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf59ea39e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5aa94ec tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf5fca46a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xf61848c6 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf619e850 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf61d1e16 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xf641c67d put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf642c8e0 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xf644bcfe __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xf644fbde mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xf6538139 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xf6572a3e ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xf67581c6 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xf6850d69 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf690a615 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xf6b2eae1 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf6b83d7c dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf72f8cc8 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0xf7309db8 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xf787730a inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf796de52 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xf7a18eb4 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7a2de26 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf7a45c4e skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xf7d2ff2c mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf7dc259e device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf7eb01e8 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83b1b1e pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0xf84c4c32 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf86fb2f7 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf87868ab rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf89fb715 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf8bccd25 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf8c81f76 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf8c8a82c pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf8dce59c nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8f23135 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92700c9 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9732576 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf97c9fac list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xf985c2d4 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ced69c eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0xf9d382e4 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf9e7c531 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xf9edeace input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xf9f5d2f3 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfa051872 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xfa16dfbe scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa49cfca palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xfa4e494c crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xfa696295 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa16216 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfab77513 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xfac3e80b regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfac694c5 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xfac74ca4 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xfad6ffc5 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xfaf39601 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xfafbc8d8 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb44a7a1 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb558f94 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb86702f __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xfbab4607 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd1d143 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc050f7d pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfc177145 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc182d08 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc3c351f adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc5a1716 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xfc5d6a5f pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xfc7e1862 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xfc83bccf securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfc9047f1 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xfcc2bdf8 eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0xfcce433d usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfcee7691 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xfd672632 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd695d51 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfda14683 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfdb99c9b cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfdf0077b regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xfe0268f3 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xfe04b206 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfe168fdd pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xfe406d4f crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xfe510ee0 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe52a764 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfe721006 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfe8ea265 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xfe929397 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea4aae8 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xfeb14296 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedb9e4b fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xfedf282e regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0ca150 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xff20ba07 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7a1c6d __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xff8c42e3 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xffb1cb98 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xffb38f26 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xffb5e4f9 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/ppc64el/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/ppc64el/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/IBM 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/ppc64el/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/ppc64el/generic.modules @@ -0,0 +1,4249 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aim_cdev +aim_network +aim_sound +aim_v4l2 +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +appledisplay +appletalk +appletouch +applicom +aquantia +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +asix +ast +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-flexcom +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +axp20x-pek +axp20x-regulator +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7038_wdt +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-phy-lib +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmg160_core +bmg160_i2c +bmg160_spi +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bsr +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btqca +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmm +cmtp +cnic +cobalt +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxl +cxlflash +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83848 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb_usb_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc_eth_qos +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-platform +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdp +fdp_i2c +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fpga-mgr +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft6236 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +gennvm +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdc100x +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdm_dim2 +hdm_i2c +hdm_usb +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hi8435 +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-corsair +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +htu21 +huawei_cdc_ncm +hvcs +hvcserver +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ehca +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ibmpowernv +ib_mthca +ibmveth +ibmvfc +ibmvnic +ibmvscsi +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ila +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx6ul_tsc +imx_thermal +ina209 +ina2xx +industrialio +industrialio-buffer-cb +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_powernv +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +irqbypass +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-hv +kvm-pr +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan78xx +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-powernv +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lnbh25 +lnbp21 +lnbp22 +lockd +locktorture +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max20751 +max2165 +max3100 +max31790 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4531 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +michael_mic +micrel +microchip +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlxsw_core +mlxsw_pci +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mostcore +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +ms_sensors_i2c +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6311-regulator +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_labpc +ni_labpc_common +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvmem_core +nx-compress +nx-compress-powernv +nx-compress-pseries +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxt200x +nxt6000 +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +ohci-platform +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opal-prd +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +pa12203001 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-lg-lg4573 +panel-samsung-ld9040 +panel-samsung-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parade-ps8622 +paride +parkbd +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-wled +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powernv_flash +powernv-rng +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +pseries_energy +pseries-rng +psmouse +psnap +pt +pulsedlight-lidar-lite-v2 +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qed +qede +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcrdma +rpcsec_gss_krb5 +rpr0521 +rrpc +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtl8xxxu +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +sctp +sctp_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-at91 +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm712fb +sm750fb +smb347-charger +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs4349 +snd-soc-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spl +splat +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stm_console +stm_core +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +st-nci_spi +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sun4i-codec +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +tekram-sir +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uli526x +ulpi +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +us5182d +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vfio +vfio_iommu_spapr_tce +vfio-pci +vfio_spapr_eeh +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmx-crypto +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +vz89x +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zavl +zcommon +zd1201 +zd1211rw +zforce_ts +zfs +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +znvpair +zpios +zr364xx +zram +zunicode +zynq-fpga --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/s390x/generic +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/s390x/generic @@ -0,0 +1,8930 @@ +EXPORT_SYMBOL arch/s390/oprofile/oprofile 0x06a93370 sampler_cpu_buffer +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x841c582a mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1763ac56 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x3378075e rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x69095edf rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8456223c rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa24a4a15 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xd206f3c9 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xdf81984b rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x17cb9079 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x217d4822 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x256e5c0b cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2bfd8bef ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x34fa9f69 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x38096fdc ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5b614af4 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6c5e2d2b ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x778180f2 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x86996316 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x87b8c902 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x89692243 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ea02a42 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa6572c25 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa9ea225f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xad8b3408 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xba5e4e8e ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xec120204 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0552c0b0 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06830b9a ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ba2b5a8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11e129a2 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x169aa4f4 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17c4253b ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a76070b ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1afb19ca ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b1917b8 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b44526a ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b5fea7f ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c577d9a ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1de0b592 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x211105df ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23a1e088 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24d306b6 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25860a95 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2af4ce2a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d8dffe9 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x318b0618 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31ca1c57 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34e7c0a1 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35568a5f ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3882d303 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c1921d9 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40fd0aa8 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44459519 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44f7561c ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4589e6ff ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47507f80 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47e9dab5 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d22a8cb ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f2b9961 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x502db5cd ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x504863d1 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x528dc7e8 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54260247 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56870c75 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580148bb ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59941a19 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a3bc2dc ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ada4e67 ib_resolve_eth_dmac +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x626c8475 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63f9eb08 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67bbd7a6 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x688f6004 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f34de1c ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71d840c5 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73e5cfd7 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x768dec50 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7712eaf1 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae64cc9 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b5c406d ib_find_cached_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c9053e7 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x821ae681 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8382d581 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83defe91 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ac49e86 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8bf499f3 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9823c5bf ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a8a7c6b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c965721 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0ade916 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f8108c ibnl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa76b37a ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf3f2464 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf9ee7cf ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb109ac0a ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8d48b7f ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb3ead86 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd932fa0 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0752dfa ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1df8d8b ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc582b092 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc904aed3 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcaa9e4ba ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb848bed ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcbbb2774 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3c87c85 ib_find_gid_by_filter +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd66f75a5 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb8af7e7 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1aa9c4d ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec17f424 ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf674230b ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf675d7da ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8720bcf ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf95ee5a0 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf96fc9de ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x057ec04f ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x10ff2af2 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2d19f12d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x595fea81 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x628fd1d3 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x68c5f4f7 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e033380 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7a5b82bc ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7cd30605 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x87fd27e5 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x91f7ae6d ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8dda339 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xca812e52 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x17871f98 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x27afd6fc ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x33f1d1ed ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x41344e8e ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x47ffdce0 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5175a380 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9bf72393 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa62bd4bf ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb088d5e9 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe29049c0 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf2f125cd ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x265656e1 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x48ef0255 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd0ea0e54 ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdccb8ab5 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0d991058 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2f5da444 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7600d813 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7bb84a4b iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8201b696 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa58101b0 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb74cf762 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xba21d5e5 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbe49c697 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd31c601b iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdebee8c6 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe11deee2 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xea64708d iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeb075fd6 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf64fa0d0 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x099b5cc0 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0a678145 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25583b78 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2db6a20e rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x312ada02 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a9f7121 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x496aaa50 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7964f26d rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7cfa3f08 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9059452d rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96c8925b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa746d29a rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa78517f2 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb66dd285 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbbc76643 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xca8956e2 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcc23efcd rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf620799 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xedc8250a rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf485c674 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfd675537 rdma_destroy_qp +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0187bb6a __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0224fc32 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x18290c90 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x313ff088 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3b42669b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5352c5fa closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x594d1f90 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x69c6eaf3 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6dc1194a bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x76714bc4 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x79711460 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7d2e3553 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7e232679 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb8fc8541 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xbbf73b16 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xcb47df76 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf6f8461 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8446678 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf920f854 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x1e492284 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x5453db89 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x67278eaf dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x6c9b34f6 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x02a6ebac dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x150d4292 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5c24ea43 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbd0af34d dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc4a05dda dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfd898099 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x9017bdbb raid5_set_cache_size +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x76c60ded be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa9f8399f be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00be722b mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06494950 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x104e29a9 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12919e43 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17ad153f mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17ee3712 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a30f810 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c5d6f7c mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e78cc5b mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23ac6c81 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ef42f6e mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x464df5f0 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51a5e097 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59f00d46 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f74a9b9 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62109c70 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6579bc55 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6931936b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x708f71f2 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e0cd934 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x839701ec mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9419a847 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5823fc2 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9c2b05b mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb39dcce9 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8973204 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc84da2b mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc35769ee mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd6fb375 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce5fa97a get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd18b208f mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd29d79b1 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2aa0ed1 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe90716ba mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea6ef126 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebdd6c77 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4cd8f66 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbcfa4e7 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09333a5c mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1590e1a2 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ebf9f97 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26e388be mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2de451da mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x447b8705 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4893b164 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b4319cd mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e242044 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x506a5a79 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50d0ef94 mlx5_query_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c4b87e2 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f078274 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ffa8c9c mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6333449d mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x655eb981 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x684f2518 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ab35a08 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x706d0909 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75c04020 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ce2d936 mlx5_modify_vport_admin_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa510e51d mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab1d9f26 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab7b8ba0 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb837a1b2 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3ef3c83 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce851d2c mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce9f7084 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf4415b0 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1d3f6bf mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd29a349b mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4ec8f1d mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe73fdc15 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe83ff581 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebee5c2c mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3ff793e mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf54cd667 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc345a6b mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1ad263c1 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2360a424 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5828bf57 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59955b04 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7e597fee mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80822927 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8fe62659 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x986b7db2 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb661629b mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc8a3e133 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdde7e8c0 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe35d64ba mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xee8e0771 mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdd89c3a mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/phy/fixed_phy 0xb293bdef fixed_phy_update_state +EXPORT_SYMBOL drivers/net/phy/libphy 0x08f7974b genphy_read_status +EXPORT_SYMBOL drivers/net/phy/libphy 0x12e52e24 mdiobus_alloc_size +EXPORT_SYMBOL drivers/net/phy/libphy 0x15ac2b4d mdio_bus_type +EXPORT_SYMBOL drivers/net/phy/libphy 0x20fb6839 genphy_suspend +EXPORT_SYMBOL drivers/net/phy/libphy 0x21deff33 mdiobus_scan +EXPORT_SYMBOL drivers/net/phy/libphy 0x25d37d80 phy_drivers_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x2a3b5906 phy_driver_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0x2a54958c phy_attach +EXPORT_SYMBOL drivers/net/phy/libphy 0x2bd9fee8 phy_ethtool_set_wol +EXPORT_SYMBOL drivers/net/phy/libphy 0x2e573318 phy_register_fixup +EXPORT_SYMBOL drivers/net/phy/libphy 0x2e760abe mdiobus_free +EXPORT_SYMBOL drivers/net/phy/libphy 0x2f806e4f phy_stop_interrupts +EXPORT_SYMBOL drivers/net/phy/libphy 0x3033c2db phy_device_remove +EXPORT_SYMBOL drivers/net/phy/libphy 0x31d10b8e phy_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/libphy 0x39b41df4 phy_get_eee_err +EXPORT_SYMBOL drivers/net/phy/libphy 0x3d612769 phy_init_hw +EXPORT_SYMBOL drivers/net/phy/libphy 0x3dd553b1 mdiobus_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0x42f29664 phy_print_status +EXPORT_SYMBOL drivers/net/phy/libphy 0x45e8a6d8 __mdiobus_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x499c1ddd phy_suspend +EXPORT_SYMBOL drivers/net/phy/libphy 0x5392422a phy_driver_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x57e049da phy_detach +EXPORT_SYMBOL drivers/net/phy/libphy 0x58abd39b phy_drivers_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0x5ec4224d mdiobus_read +EXPORT_SYMBOL drivers/net/phy/libphy 0x63475661 phy_write_mmd_indirect +EXPORT_SYMBOL drivers/net/phy/libphy 0x66bb0c52 phy_ethtool_gset +EXPORT_SYMBOL drivers/net/phy/libphy 0x6b76b3eb genphy_aneg_done +EXPORT_SYMBOL drivers/net/phy/libphy 0x6f931499 phy_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/libphy 0x6fff5480 phy_disconnect +EXPORT_SYMBOL drivers/net/phy/libphy 0x71871f63 get_phy_device +EXPORT_SYMBOL drivers/net/phy/libphy 0x724fce8c phy_register_fixup_for_id +EXPORT_SYMBOL drivers/net/phy/libphy 0x7697f21c phy_register_fixup_for_uid +EXPORT_SYMBOL drivers/net/phy/libphy 0x76cb3153 phy_find_first +EXPORT_SYMBOL drivers/net/phy/libphy 0x7a522d0e phy_start_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0x7fdacfb0 genphy_config_init +EXPORT_SYMBOL drivers/net/phy/libphy 0x96aa81b3 phy_attach_direct +EXPORT_SYMBOL drivers/net/phy/libphy 0x9bf2d08d phy_set_max_speed +EXPORT_SYMBOL drivers/net/phy/libphy 0x9c68096a genphy_resume +EXPORT_SYMBOL drivers/net/phy/libphy 0xa017ef8f mdiobus_write_nested +EXPORT_SYMBOL drivers/net/phy/libphy 0xa3592fcf phy_start +EXPORT_SYMBOL drivers/net/phy/libphy 0xa6a4c991 phy_ethtool_get_wol +EXPORT_SYMBOL drivers/net/phy/libphy 0xa77e635d phy_device_free +EXPORT_SYMBOL drivers/net/phy/libphy 0xa8323328 genphy_config_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0xaa945df8 phy_device_register +EXPORT_SYMBOL drivers/net/phy/libphy 0xafe8fbb1 phy_stop +EXPORT_SYMBOL drivers/net/phy/libphy 0xbc3ab501 phy_ethtool_set_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xc08051a2 genphy_restart_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0xc376b818 phy_connect_direct +EXPORT_SYMBOL drivers/net/phy/libphy 0xc39a084a phy_connect +EXPORT_SYMBOL drivers/net/phy/libphy 0xc3a3d62b genphy_update_link +EXPORT_SYMBOL drivers/net/phy/libphy 0xc4861f74 phy_init_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xd0564cab mdiobus_write +EXPORT_SYMBOL drivers/net/phy/libphy 0xd6861daf phy_read_mmd_indirect +EXPORT_SYMBOL drivers/net/phy/libphy 0xda8f6783 phy_ethtool_get_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xe09c56be mdiobus_read_nested +EXPORT_SYMBOL drivers/net/phy/libphy 0xeac993ae phy_mac_interrupt +EXPORT_SYMBOL drivers/net/phy/libphy 0xf136b45b genphy_soft_reset +EXPORT_SYMBOL drivers/net/phy/libphy 0xf223eed9 phy_device_create +EXPORT_SYMBOL drivers/net/phy/libphy 0xf8ee9851 phy_start_interrupts +EXPORT_SYMBOL drivers/net/phy/libphy 0xfddf13f9 phy_resume +EXPORT_SYMBOL drivers/net/phy/libphy 0xfe57ecdf genphy_setup_forced +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x66f6058d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x893aba51 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xf69d092e vsc824x_add_skew +EXPORT_SYMBOL drivers/net/team/team 0x0ce7c55c team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x48a2ae8a team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x8f89eb2e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xb8cc1d55 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xd4e73e3b team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xe5c225e2 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xe77ae845 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xfabd01c4 team_modeop_port_enter +EXPORT_SYMBOL drivers/nvmem/nvmem_core 0x4c70c1eb devm_nvmem_cell_put +EXPORT_SYMBOL drivers/pps/pps_core 0x6938d292 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xa7103369 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xeed9506e pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xfbd89111 pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x628a88e9 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x835931a3 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xae645fdd ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xbea3b748 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xd279b6d9 ptp_clock_event +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x08943204 dasd_log_sense_dbf +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x1d46f953 dasd_reload_device +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x26e5d3d5 dasd_kfree_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x3276f688 dasd_sleep_on_immediatly +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x38602833 dasd_block_clear_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x4d2074c3 dasd_debug_area +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x58bf9323 dasd_set_target_state +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x604b523b dasd_kmalloc_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x67b9844c dasd_device_clear_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x6bf182bc dasd_add_request_head +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x71052357 dasd_enable_device +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x9953a60c dasd_term_IO +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x9ab0f981 dasd_diag_discipline_pointer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x9fa8fa47 dasd_free_erp_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xa7185236 dasd_eer_write +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb4dcb5de dasd_sleep_on_queue +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb509be1e dasd_device_set_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb54e2e60 dasd_schedule_block_bh +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb70deb72 dasd_sfree_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xbce82360 dasd_default_erp_action +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xbebc3164 dasd_smalloc_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xbfd2a5d0 dasd_cancel_req +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xc9798a93 dasd_alloc_erp_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xcd4c4a89 dasd_int_handler +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xce0116c9 dasd_sleep_on_interruptible +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xe4c7d5ac dasd_default_erp_postaction +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xe7ccf4c3 dasd_block_set_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xe85b2345 dasd_schedule_device_bh +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xea3da0f3 dasd_sleep_on +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xef315e04 dasd_log_sense +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xf176570e dasd_start_IO +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xf966e015 dasd_add_request_tail +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xfc97ae4b dasd_kick_device +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x08e57a2c hmcdrv_ftp_do +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x3198b5cb hmcdrv_ftp_startup +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x83a6e87f hmcdrv_ftp_probe +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0xba68949c hmcdrv_ftp_shutdown +EXPORT_SYMBOL drivers/s390/char/tape 0x073c0c8f tape_std_read_backward +EXPORT_SYMBOL drivers/s390/char/tape 0x0ab45558 tape_cancel_io +EXPORT_SYMBOL drivers/s390/char/tape 0x0f016006 tape_generic_offline +EXPORT_SYMBOL drivers/s390/char/tape 0x1e61afc9 tape_std_mtunload +EXPORT_SYMBOL drivers/s390/char/tape 0x20d3a22b tape_mtop +EXPORT_SYMBOL drivers/s390/char/tape 0x237a9670 tape_do_io_async +EXPORT_SYMBOL drivers/s390/char/tape 0x2546c415 tape_state_verbose +EXPORT_SYMBOL drivers/s390/char/tape 0x2ea8907a tape_std_mtrew +EXPORT_SYMBOL drivers/s390/char/tape 0x386911f3 tape_generic_pm_suspend +EXPORT_SYMBOL drivers/s390/char/tape 0x3f17d8cd tape_std_unassign +EXPORT_SYMBOL drivers/s390/char/tape 0x3faf012a tape_get_device +EXPORT_SYMBOL drivers/s390/char/tape 0x423f5949 tape_std_mtreset +EXPORT_SYMBOL drivers/s390/char/tape 0x432dd9fa tape_med_state_set +EXPORT_SYMBOL drivers/s390/char/tape 0x47ac4929 tape_std_process_eov +EXPORT_SYMBOL drivers/s390/char/tape 0x57bb6f76 tape_std_mtfsf +EXPORT_SYMBOL drivers/s390/char/tape 0x6001b3ff tape_core_dbf +EXPORT_SYMBOL drivers/s390/char/tape 0x62636966 tape_generic_remove +EXPORT_SYMBOL drivers/s390/char/tape 0x66deb66c tape_op_verbose +EXPORT_SYMBOL drivers/s390/char/tape 0x6aaef82e tape_std_mteom +EXPORT_SYMBOL drivers/s390/char/tape 0x6ca5bee0 tape_std_mtoffl +EXPORT_SYMBOL drivers/s390/char/tape 0x6d606bdd tape_state_set +EXPORT_SYMBOL drivers/s390/char/tape 0x6e8cfaba tape_do_io_interruptible +EXPORT_SYMBOL drivers/s390/char/tape 0x7783a28f tape_std_mtcompression +EXPORT_SYMBOL drivers/s390/char/tape 0x7c538883 tape_std_mterase +EXPORT_SYMBOL drivers/s390/char/tape 0x7f462ea8 tape_std_read_block +EXPORT_SYMBOL drivers/s390/char/tape 0x7f53bf0e tape_std_mtfsr +EXPORT_SYMBOL drivers/s390/char/tape 0x840b2f41 tape_generic_online +EXPORT_SYMBOL drivers/s390/char/tape 0x8aef41bb tape_std_mtnop +EXPORT_SYMBOL drivers/s390/char/tape 0x8e04a95e tape_free_request +EXPORT_SYMBOL drivers/s390/char/tape 0x9848485d tape_std_display +EXPORT_SYMBOL drivers/s390/char/tape 0x9b008703 tape_put_device +EXPORT_SYMBOL drivers/s390/char/tape 0xa56b1f82 tape_std_read_block_id +EXPORT_SYMBOL drivers/s390/char/tape 0xbdd88517 tape_std_mtweof +EXPORT_SYMBOL drivers/s390/char/tape 0xc367a60c tape_std_mtsetblk +EXPORT_SYMBOL drivers/s390/char/tape 0xca3ec326 tape_std_mtload +EXPORT_SYMBOL drivers/s390/char/tape 0xcf1b524d tape_std_mtfsfm +EXPORT_SYMBOL drivers/s390/char/tape 0xd4b3839c tape_std_mtbsfm +EXPORT_SYMBOL drivers/s390/char/tape 0xd627155b tape_std_mtbsr +EXPORT_SYMBOL drivers/s390/char/tape 0xd73d44cd tape_alloc_request +EXPORT_SYMBOL drivers/s390/char/tape 0xe1039a65 tape_std_mtreten +EXPORT_SYMBOL drivers/s390/char/tape 0xe1eaffcc tape_do_io +EXPORT_SYMBOL drivers/s390/char/tape 0xe4fd2089 tape_std_write_block +EXPORT_SYMBOL drivers/s390/char/tape 0xf91388df tape_std_assign +EXPORT_SYMBOL drivers/s390/char/tape 0xfcb296e1 tape_dump_sense_dbf +EXPORT_SYMBOL drivers/s390/char/tape 0xfecfc523 tape_std_mtbsf +EXPORT_SYMBOL drivers/s390/char/tape 0xffd4ebbf tape_generic_probe +EXPORT_SYMBOL drivers/s390/char/tape_34xx 0x2cb19ba8 tape_34xx_dbf +EXPORT_SYMBOL drivers/s390/char/tape_3590 0xe16c6dfa tape_3590_dbf +EXPORT_SYMBOL drivers/s390/char/tape_class 0x13f61744 unregister_tape_dev +EXPORT_SYMBOL drivers/s390/char/tape_class 0xee85660f register_tape_dev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x2783f16e ccwgroup_set_offline +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x88d20bce ccwgroup_probe_ccwdev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x908102a4 ccwgroup_driver_unregister +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xd277a00b ccwgroup_remove_ccwdev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xd9350381 ccwgroup_set_online +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xe07bdfd6 ccwgroup_create_dev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xe9abe208 ccwgroup_driver_register +EXPORT_SYMBOL drivers/s390/cio/qdio 0x869d0472 qdio_get_next_buffers +EXPORT_SYMBOL drivers/s390/cio/qdio 0xd54c396b qdio_stop_irq +EXPORT_SYMBOL drivers/s390/cio/qdio 0xee4e693f qdio_start_irq +EXPORT_SYMBOL drivers/s390/crypto/ap 0x0ffc9609 ap_recv +EXPORT_SYMBOL drivers/s390/crypto/ap 0x1bac0d1e ap_flush_queue +EXPORT_SYMBOL drivers/s390/crypto/ap 0x5e21cb82 ap_send +EXPORT_SYMBOL drivers/s390/crypto/ap 0x77247c5e ap_bus_force_rescan +EXPORT_SYMBOL drivers/s390/crypto/ap 0xa9007115 ap_driver_register +EXPORT_SYMBOL drivers/s390/crypto/ap 0xd5e90454 ap_domain_index +EXPORT_SYMBOL drivers/s390/crypto/ap 0xe5f683c5 ap_driver_unregister +EXPORT_SYMBOL drivers/s390/crypto/ap 0xee46d13b ap_queue_message +EXPORT_SYMBOL drivers/s390/crypto/ap 0xf17c32e7 ap_cancel_message +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x0e8ea7f0 zcrypt_device_put +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x166bac6f zcrypt_device_get +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x4029d52e zcrypt_device_unregister +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x526c8ac4 zcrypt_msgtype_unregister +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x533b2421 zcrypt_device_alloc +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x5375c6d3 zcrypt_device_register +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x67cedaeb zcrypt_rescan_req +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0x83f2fba4 zcrypt_msgtype_request +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0xcc443d31 zcrypt_msgtype_register +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0xdedb8468 zcrypt_msgtype_release +EXPORT_SYMBOL drivers/s390/crypto/zcrypt_api 0xf31f17b1 zcrypt_device_free +EXPORT_SYMBOL drivers/s390/net/ctcm 0x40b3051a ctc_mpc_dealloc_ch +EXPORT_SYMBOL drivers/s390/net/ctcm 0x56f42138 ctc_mpc_alloc_channel +EXPORT_SYMBOL drivers/s390/net/ctcm 0x812fa936 ctc_mpc_establish_connectivity +EXPORT_SYMBOL drivers/s390/net/ctcm 0xf5440dc6 ctc_mpc_flow_control +EXPORT_SYMBOL drivers/s390/net/fsm 0x0e10e441 fsm_modtimer +EXPORT_SYMBOL drivers/s390/net/fsm 0x1b770365 kfree_fsm +EXPORT_SYMBOL drivers/s390/net/fsm 0x3805a87b fsm_getstate_str +EXPORT_SYMBOL drivers/s390/net/fsm 0x57b18322 fsm_deltimer +EXPORT_SYMBOL drivers/s390/net/fsm 0x7af9f0a2 fsm_settimer +EXPORT_SYMBOL drivers/s390/net/fsm 0xc6696799 fsm_addtimer +EXPORT_SYMBOL drivers/s390/net/fsm 0xdcbc5aa7 init_fsm +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0x48770bec qeth_osn_assist +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0x4bd1b425 qeth_osn_register +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0xa07a6cbc qeth_osn_deregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1acf5624 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3b22d8a7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4ea674cb fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x61d6f417 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x71bbd34a fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa247bdae fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb4e8f4be fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb68ed54f fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbdf47234 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc2303141 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc396c4fd fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe71d62ec fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02f811d5 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09a49d10 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ed88514 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10e9944e fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1179dd24 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x129b6bc9 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13e13afe fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16a38d97 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ff7023a fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x237f4338 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x268793ea fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1fc0a fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28cc6396 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x315b2a99 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4351cbd2 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x441ac22e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45f667aa fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x482b4add fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x494a89ad fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a951522 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x63b67571 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a02775a fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b0185cd fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76c172d8 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76eda489 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce48ac9 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eb5e6fa fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ed0dab0 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8669013f fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8967da97 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e7709b2 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x906618be fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x94d8ef75 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9be7ad9d fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3898dde fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4985ec5 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa9c8c695 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe1c9584 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc583e5b6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc58d7d47 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1c67c18 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2169df6 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6143614 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3694f3c fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3832cfe fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8652c6f fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebff41ae fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf09136d4 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0b4dae9 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2ed40c2 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0943b085 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x25e7ba4c sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x46bd63ad sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb549b9d0 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x086c8c17 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b07e20c osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b4bf52d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21733df8 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22eef53c osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2702218b osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c79f899 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3c826c1c osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5005c2a6 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51819bbc osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51f22de1 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x552ca028 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5598d284 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57f7b035 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c7e2efa osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65fc0df7 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x672fb141 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x739dc47c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76f3a70e osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79542b09 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7a8460a9 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cba5699 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7dd1354f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x897fd6bc osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ab6e4bb osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x975e52ca osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f7d1407 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0a9f433 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb50be278 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8178cea osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcf59df93 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe527f6af osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe5f86702 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe8373386 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfaac77c1 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfe7194a3 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0269d810 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0acb8ad9 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6e3a143b osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8f0bae67 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb4b5e930 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfe8bd824 osduld_device_info +EXPORT_SYMBOL drivers/scsi/raid_class 0x0b1d580e raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x62608dbe raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x7c01c83d raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x28bc0403 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2a6d9fce fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3eae87b5 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51873cf9 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x56972725 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8b03efca fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb797964f scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc914a378 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb6a0461 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcdd039ca fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdbcf9405 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xeeb502c4 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf5f30c25 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1011d076 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c6d681b sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f8f97bf sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27ac6afb sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x293c86b9 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2a4673d9 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x31df2721 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44e7386f sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x49a45d01 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x53e9c97e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x55118c0b sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x582f4e15 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65ecfd75 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6dc9f344 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79ef8e23 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7d24b5c7 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x935cad5c scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9b687a90 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf6904c4 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbee5ab6e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca917bed sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb77b279 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdebd9e63 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe342e417 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xedea710e sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf69f947c sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf889fd14 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfe3b7b5f sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3238a9a0 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x57c70e4e spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x98d013e3 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9f5ba793 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdcde1852 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4249345c srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6d33d142 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xab0ea159 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xbb4df893 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x093557a9 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b153625 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0c205b33 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x15a447a6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x165e3ff7 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x190f3c67 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3412ea07 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x369ddc6b iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51585bf2 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x531a987f iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d5c8ab6 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5f18610b iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5f571bb1 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x66204492 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6eaf96c0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79d30ffb iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89d77559 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9c88e1fc iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa27cde1d iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb6995e3a iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xba44e6cd iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xba63ec2a iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc19fe284 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc8be3d06 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf6f4c74 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd34c84a8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xefc8cd94 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf8ec2fbd iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x00f3ed8d sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x021ba712 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x04ca16a5 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0501a1ba transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x07eb9cb1 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x1044ffd2 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x10f4c235 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x143b001b transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x14e212b6 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1be2ecaf core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c4ec038 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c5f4ff0 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x22c9e020 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x277786e0 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x30bea795 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x30cfc072 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3328b498 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x362198b7 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x413c39ca core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x41963b8e target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x470d1394 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ad18f7d transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5105e3c2 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x54e50cae target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x551dcac8 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fb90fa8 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x60e46875 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x63c30883 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x67c595b8 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b8a6809 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e245653 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x758e9e99 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x76450955 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x78398012 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b956a7f sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c551210 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x85afde82 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x87014bc1 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x89c1635e target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e47296f sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a8486bf target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x9cba8e28 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fa49299 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xa689bcfe target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xacdded9b transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb02c8490 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xb078e8ba spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4b96c04 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1246ab8 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xc82bfa2e target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8dd67aa core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcae0f039 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbba64e4 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xce96ab12 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0676407 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xda6877ff target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe53ba6b9 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xe57e9ac7 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6c331d0 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe965f898 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xea7d31aa sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xec4fe286 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xef4174de transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf34c6e44 transport_alloc_session_tags +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x04443e1b uart_get_divisor +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x0bd688e5 uart_add_one_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x14009641 uart_suspend_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x25b73cde uart_get_baud_rate +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x5465db1d uart_update_timeout +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x5ad85fc9 uart_unregister_driver +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x7adf5856 uart_match_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x809e2b6f uart_write_wakeup +EXPORT_SYMBOL drivers/tty/serial/serial_core 0xa921c55e uart_remove_one_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0xbd4c1596 uart_resume_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0xc3b61b9d uart_register_driver +EXPORT_SYMBOL drivers/vhost/vringh 0x0617468c vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x15a80695 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3fc7a1da vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x42898ba2 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x42903a3b vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b40c951 vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL fs/exofs/libore 0x0c876ebb ore_read +EXPORT_SYMBOL fs/exofs/libore 0x20f373bc ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x71c21303 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x776c9b68 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x782a9c12 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x835e5751 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x8bd29bbc ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x922a4019 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xdd08068f ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xfb4ad16b ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x092f4b85 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x09ecb4be __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0e3919d5 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x0fdf23e9 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x11e53207 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x1660675c __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x226b804c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x2cd4dd8c __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x2d93ce95 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x384a11bc fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x3d32c779 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x4702b877 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x47513a1f fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x5ac5c484 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x5c94630f __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5ed7a696 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x63400b98 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x63a2116d fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x6873d416 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x797c38af fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7f6d7514 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x8a8ada9e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x8b73cca5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa6ed09e9 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xab6c2a61 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcb61826e fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xd0ef52e7 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdc6f1e1e __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xdd32be7c fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe42ee06d fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xe8ab2347 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xee25045c __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xf0f2c1b1 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xf5b896bc fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xf5cf2fac __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf9841595 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xfb7f6d67 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfdd1075c __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xff5f16a3 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xff926e88 __fscache_maybe_release_page +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x06afefec qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x3bf4cdda qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x66416111 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x68e2b763 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc31dc807 qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x651c2313 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x276c7e62 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x6b96fbac crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x3e77b340 crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0f6f0fdb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x17c6b1e1 lc_del +EXPORT_SYMBOL lib/lru_cache 0x52857213 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x5bceca02 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x6f1d0c3b lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x7869961b lc_set +EXPORT_SYMBOL lib/lru_cache 0x79c87149 lc_get +EXPORT_SYMBOL lib/lru_cache 0x88713f97 lc_create +EXPORT_SYMBOL lib/lru_cache 0x955d4873 lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbc7a78d lc_put +EXPORT_SYMBOL lib/lru_cache 0xc1a43316 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a4ca05 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xe4a98afa lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xebae3022 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xfcc84b80 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xff3f1db8 lc_find +EXPORT_SYMBOL lib/lru_cache 0xffb12208 lc_is_used +EXPORT_SYMBOL lib/lz4/lz4_compress 0x32ec514e lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xab08068b lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL net/802/p8022 0x53c037fa register_8022_client +EXPORT_SYMBOL net/802/p8022 0x816efd1c unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0xaf4a6518 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xc2b6c6c5 unregister_snap_client +EXPORT_SYMBOL net/bridge/bridge 0xa56d6d5d br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3049b6d9 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc115afa5 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xdeafc60d ebt_register_table +EXPORT_SYMBOL net/ceph/libceph 0x02aa4538 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x03913c14 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x05de9fc5 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x0620b4ad osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bd7ec5a ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x1c725ed8 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x1e330385 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x209fb184 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x252c64e9 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x255f5849 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x268caff8 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x29daa007 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x2af83ba1 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x31662b33 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x3287a7f6 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ea9d5ef osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40e9fb59 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x413e2671 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x42a93e51 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45e283ec ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4a69fadc ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x4b755fd7 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x4bf0271e ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x4c138659 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x4dfb60eb ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x50498809 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x570d7b3f ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59ab1a47 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x5c68df70 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5f947752 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x5fa530d1 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x6082c6ac ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63cd9396 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6ae34528 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b9c7070 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x6f082d84 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x6f4602e6 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x70ca1f2b ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x716e63d7 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x7340cd25 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x775646e9 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7bdb2c37 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x837ca8cc ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x8977535d ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x8ad0dd57 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8cab452d osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x90c423cf ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x940441b9 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x98fc9928 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x99e0373d osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9c814c08 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x9e52f262 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2305114 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xa5ca40f8 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xa6483f55 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaeb38f31 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb03097d0 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xb1670094 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb2957888 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb2b123c4 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xb34ca8da ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb550ef84 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xb59d3ec0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb6923141 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xb8b79341 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xbafbda85 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xbc22c03b ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xbcf4225a ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xbdd6b14b ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xc1f544bb ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xc310bc2c ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7672334 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xc955e38b ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xce92ae9e ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5c4f57d ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xd8cb03cb osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xda689727 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xdeaefe5f ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xe3432c01 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe6939f2e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xe80ec479 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xe82a5409 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xee32aacb ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xf124f130 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xf205b139 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xf3da75ab ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xfcaad4d1 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xff800691 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xffa003a0 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xfff55fc1 ceph_con_send +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x266ef4f9 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x28847993 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ipv4/fou 0x72395c37 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7d1fc3a3 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x934af5fb gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x9a08437c fou_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x35f35e9b ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x4c306a33 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5c521ae3 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x682b37cf ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8828209c ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe7ae1cba ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x54ec983c arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x741a8cf1 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x906c9fcb arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2d04f928 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x52ca3034 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb24d6fc9 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x4f9b914d xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xd99aae31 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x5c214de2 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x09850956 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7397b76a ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x92f35d4e ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe4162beb ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x26347973 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x74f75db2 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc23e71f1 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x05830b54 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x50b4049a xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x7031eeca xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xcfa1b98d xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/l2tp/l2tp_core 0xdbab12de l2tp_recv_common +EXPORT_SYMBOL net/llc/llc 0x142de7dd llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3db90d59 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x4c7656aa llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x645a9726 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x73d46fa4 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc9133f79 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xfd60ca36 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00ba0cf8 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x02de1174 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x231e5e77 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2f884a45 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4578dfb4 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x45d5683a unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x732973b1 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x77cca7fe ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa1d64016 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc2fd6800 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe49f584c register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe7dd17d5 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf089a065 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfef96797 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2f73495a nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x94ebee32 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe23ac057 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x83cbfe8f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x843f5d6e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x9b20e774 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe5b3d611 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe8d11b01 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xfa1feba3 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x1bba2645 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x276c87fa xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x34d54b82 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3f48feb4 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x43b300a1 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x555c3243 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x60fb93f8 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9b7a94d5 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa48b3a97 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa7fb3c3f xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd0b8244d xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd4c65f30 xt_register_targets +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0c385848 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x21a76204 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x34b2d037 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3b40ac93 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x712dc773 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8c0717a9 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9c1d640f rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb6d5c6a0 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb88cf0f2 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd199b63f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd557e636 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdbd7f0e7 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe95df01c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf1928e67 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfa495c64 key_type_rxrpc +EXPORT_SYMBOL net/sctp/sctp 0x02419434 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x56a0d650 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb9a7cc99 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf9a70d28 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x90fa7c2c svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb3f67045 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf109e8b2 xdr_truncate_encode +EXPORT_SYMBOL vmlinux 0x00198a58 up_read +EXPORT_SYMBOL vmlinux 0x003ab9cd kill_fasync +EXPORT_SYMBOL vmlinux 0x00425f14 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x008d976a kmalloc_caches +EXPORT_SYMBOL vmlinux 0x00abed75 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x00ca135e dquot_commit_info +EXPORT_SYMBOL vmlinux 0x00dcaed3 kfree_skb +EXPORT_SYMBOL vmlinux 0x00ecc9c0 nf_register_hook +EXPORT_SYMBOL vmlinux 0x00f46bed inet_select_addr +EXPORT_SYMBOL vmlinux 0x00f4a223 _ebc_toupper +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0128a215 eth_type_trans +EXPORT_SYMBOL vmlinux 0x01437345 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0171df1a user_path_at_empty +EXPORT_SYMBOL vmlinux 0x0185a7d7 sclp_pci_deconfigure +EXPORT_SYMBOL vmlinux 0x01914b8c get_fs_type +EXPORT_SYMBOL vmlinux 0x01b23a35 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x01eb4459 set_wb_congested +EXPORT_SYMBOL vmlinux 0x01ebcb7b lg_global_unlock +EXPORT_SYMBOL vmlinux 0x0203c89b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x02049623 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x0228a31d noop_fsync +EXPORT_SYMBOL vmlinux 0x023cdfd8 nvm_end_io +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x024c6ec2 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02abed06 simple_release_fs +EXPORT_SYMBOL vmlinux 0x02ca22a8 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02f675b3 bioset_create +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03475136 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x034c47c7 pci_get_slot +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03746fed nf_hooks_needed +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0388a5d8 idr_init +EXPORT_SYMBOL vmlinux 0x039cfc07 tcp_connect +EXPORT_SYMBOL vmlinux 0x03cd5d0d tsb_init +EXPORT_SYMBOL vmlinux 0x03d3df86 iucv_root +EXPORT_SYMBOL vmlinux 0x03dfffd4 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x03fa87c9 notify_change +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041eb3f3 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x0421fe68 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04357773 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x0435f26d lowcore_ptr +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04810ea5 down_killable +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x04b633ed dev_crit +EXPORT_SYMBOL vmlinux 0x04c9fe09 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05324198 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x057c4ea5 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x05b2e9da tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x05c44c98 dst_init +EXPORT_SYMBOL vmlinux 0x05c7fdda skb_copy +EXPORT_SYMBOL vmlinux 0x05d5c314 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x05f872e1 bit_waitqueue +EXPORT_SYMBOL vmlinux 0x06026d3b sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06288dd9 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x066e8345 lockref_get +EXPORT_SYMBOL vmlinux 0x067902e1 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x067c4a7e bdgrab +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0683ac44 kill_bdev +EXPORT_SYMBOL vmlinux 0x069ef8f3 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x06a485f2 __krealloc +EXPORT_SYMBOL vmlinux 0x06c6c8bf tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x06d04689 posix_lock_file +EXPORT_SYMBOL vmlinux 0x06d1e0ae mount_pseudo +EXPORT_SYMBOL vmlinux 0x06da313a check_disk_change +EXPORT_SYMBOL vmlinux 0x07297511 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x0749c7b8 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x074a7eda rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x0788bc0d d_rehash +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07bc6fd8 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x08044d6f idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x08116924 nf_reinject +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x085150f3 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x08779733 sock_from_file +EXPORT_SYMBOL vmlinux 0x08791a46 dquot_initialize +EXPORT_SYMBOL vmlinux 0x087d4a4b blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x08988711 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x08ace69e register_external_irq +EXPORT_SYMBOL vmlinux 0x08c856d0 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x08e6ad2e netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x08ec5478 init_net +EXPORT_SYMBOL vmlinux 0x090a2cfa pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x093eb894 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x09576f93 complete_and_exit +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x098cf259 key_alloc +EXPORT_SYMBOL vmlinux 0x09915f70 udp_table +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09cd1ad9 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x09cdbaef d_move +EXPORT_SYMBOL vmlinux 0x09d1fc76 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e1fdb7 generic_removexattr +EXPORT_SYMBOL vmlinux 0x09f4a04c no_llseek +EXPORT_SYMBOL vmlinux 0x09f99f2e iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x0a113dca delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5b9cb0 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x0a65d2f3 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x0a6fda06 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a776c22 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x0a7864f3 param_ops_string +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaaa9c8 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x0aacd352 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x0ab81c83 build_skb +EXPORT_SYMBOL vmlinux 0x0ac2d1fc kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x0ad9b7c3 single_open +EXPORT_SYMBOL vmlinux 0x0af12aaa fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1a3756 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b23f073 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x0b33a46d seq_write +EXPORT_SYMBOL vmlinux 0x0b528235 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x0b5f198f nvm_unregister +EXPORT_SYMBOL vmlinux 0x0b6f380d skb_clone_sk +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7a7ad9 down_read_trylock +EXPORT_SYMBOL vmlinux 0x0bab9302 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd09d83 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x0be24027 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x0c196fe9 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c228a15 kbd_ascebc +EXPORT_SYMBOL vmlinux 0x0c2fb0b2 ether_setup +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c46a727 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f2a5b idr_get_next +EXPORT_SYMBOL vmlinux 0x0c5fffde dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c632465 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x0c7cf7c6 zero_page_mask +EXPORT_SYMBOL vmlinux 0x0c8414ae udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x0c97ffa3 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x0ca1fbe0 cdev_alloc +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cceac6c iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x0cd79d63 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x0ce73425 nonseekable_open +EXPORT_SYMBOL vmlinux 0x0cf4b141 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x0d0dbe36 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x0d1055bc vm_map_ram +EXPORT_SYMBOL vmlinux 0x0d222bc7 blk_end_request +EXPORT_SYMBOL vmlinux 0x0d3a15bf __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6f4c1d tcp_splice_read +EXPORT_SYMBOL vmlinux 0x0d84c2dc security_inode_readlink +EXPORT_SYMBOL vmlinux 0x0d9698a9 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dd7dbd1 mntget +EXPORT_SYMBOL vmlinux 0x0df7c387 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x0e037460 textsearch_register +EXPORT_SYMBOL vmlinux 0x0e079ac7 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0e36d3a8 bio_map_kern +EXPORT_SYMBOL vmlinux 0x0e3a4a2d skb_queue_purge +EXPORT_SYMBOL vmlinux 0x0e54a041 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x0e6c04ab pci_map_rom +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7af508 vfs_unlink +EXPORT_SYMBOL vmlinux 0x0e8bb3ba dev_printk_emit +EXPORT_SYMBOL vmlinux 0x0e90ac7f seq_hex_dump +EXPORT_SYMBOL vmlinux 0x0ea763c3 sclp_sync_wait +EXPORT_SYMBOL vmlinux 0x0eab56fa __kfifo_max_r +EXPORT_SYMBOL vmlinux 0x0eab9502 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x0eb0f72f pcim_pin_device +EXPORT_SYMBOL vmlinux 0x0ebebe9d __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x0ec94dc9 pipe_lock +EXPORT_SYMBOL vmlinux 0x0edd53ef compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x0edf6a7b inode_change_ok +EXPORT_SYMBOL vmlinux 0x0ee0f5cd sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x0ef99b58 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f16452b end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0f22a009 md_register_thread +EXPORT_SYMBOL vmlinux 0x0f3daf01 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x0f45aa08 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f58c6b3 proc_remove +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7a0da5 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x0f80fc32 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc7700c clear_nlink +EXPORT_SYMBOL vmlinux 0x100e31b1 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x1015d9c5 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x102590ea ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x10497616 memweight +EXPORT_SYMBOL vmlinux 0x104d0d63 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x1054e732 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x10596340 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x10603069 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x1067102e iterate_mounts +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1090fa19 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10b5526f compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x10b9aa8e netlink_capable +EXPORT_SYMBOL vmlinux 0x10c1e138 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x10d88f64 cdev_del +EXPORT_SYMBOL vmlinux 0x10de02a2 neigh_lookup +EXPORT_SYMBOL vmlinux 0x10f262b1 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x10f2eb76 vsnprintf +EXPORT_SYMBOL vmlinux 0x10ff549d dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x110530ca __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110f1992 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x1115e9ab lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x1143930a scsi_unregister +EXPORT_SYMBOL vmlinux 0x114f1717 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1169b607 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11843eb9 free_page_put_link +EXPORT_SYMBOL vmlinux 0x1188f511 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x11937cd4 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x11949571 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b7da90 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x11e2df72 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x11ed2eb8 sclp_remove_processed +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d4bb9 blk_put_request +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120e4a9f blkdev_put +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12234bef dma_pool_create +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124e58ca __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x1251a12e console_mode +EXPORT_SYMBOL vmlinux 0x12712c82 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x12898b04 netlink_ack +EXPORT_SYMBOL vmlinux 0x129a6557 iucv_bus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b10eda qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x12ecc576 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x1308fd21 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134246d0 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x135829b3 do_truncate +EXPORT_SYMBOL vmlinux 0x1372d975 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x137ab48e rtnl_unicast +EXPORT_SYMBOL vmlinux 0x137d96cc put_tty_driver +EXPORT_SYMBOL vmlinux 0x13c1df0f bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x13c97172 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1463888f pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x148b08e3 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x14ab46a4 nvm_get_blk_unlocked +EXPORT_SYMBOL vmlinux 0x14c5e5b3 segment_warning +EXPORT_SYMBOL vmlinux 0x14cee223 kvasprintf_const +EXPORT_SYMBOL vmlinux 0x14d40cab generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x14dc6e6a vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x14ed6025 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x15109e5e ccw_device_start_timeout +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1571bade netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x1598b8fc page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x15a1a222 __register_chrdev +EXPORT_SYMBOL vmlinux 0x15b7a1cc km_is_alive +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d3e745 keyring_clear +EXPORT_SYMBOL vmlinux 0x163bda99 set_nlink +EXPORT_SYMBOL vmlinux 0x1641d1ac __brelse +EXPORT_SYMBOL vmlinux 0x164c993d dcache_dir_open +EXPORT_SYMBOL vmlinux 0x166d8133 dup_iter +EXPORT_SYMBOL vmlinux 0x168e7280 d_alloc_name +EXPORT_SYMBOL vmlinux 0x169b7aee unregister_adapter_interrupt +EXPORT_SYMBOL vmlinux 0x169d5d7e unlock_buffer +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e7298c blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x1715ece3 cont_write_begin +EXPORT_SYMBOL vmlinux 0x17211adc dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x1723bca9 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x1771dece d_delete +EXPORT_SYMBOL vmlinux 0x1776f526 lock_rename +EXPORT_SYMBOL vmlinux 0x1785ed4d skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179890e6 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1798db05 scsi_add_device +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e05223 raw3270_del_view +EXPORT_SYMBOL vmlinux 0x17f80039 nvm_get_blk +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183d22e4 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x185efc5e dquot_operations +EXPORT_SYMBOL vmlinux 0x186c9b3c udp_add_offload +EXPORT_SYMBOL vmlinux 0x1872086a rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189b6bac memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x18b87cca sclp_deactivate +EXPORT_SYMBOL vmlinux 0x18c23a57 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x18cbf609 key_task_permission +EXPORT_SYMBOL vmlinux 0x18cc5a5a account_page_redirty +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18ebe375 finish_open +EXPORT_SYMBOL vmlinux 0x19126bd9 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x1916c5b9 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1937820f compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x1951c8c0 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x1953aab0 __frontswap_load +EXPORT_SYMBOL vmlinux 0x196f6b0f dev_driver_string +EXPORT_SYMBOL vmlinux 0x19828bb5 d_make_root +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b511ef netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19bf4859 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x19fa5870 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x1a00ce64 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x1a0f3b9d dev_trans_start +EXPORT_SYMBOL vmlinux 0x1a12c61a fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x1a144b8d skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x1a29c107 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x1a32ab1c jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1a4b7bbf __devm_request_region +EXPORT_SYMBOL vmlinux 0x1aaefbb2 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x1ab7581a d_genocide +EXPORT_SYMBOL vmlinux 0x1ae855f6 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x1aea36ba generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b3c3a37 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x1b4d584d qdisc_destroy +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b7b4cf8 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x1b7bde8c bh_submit_read +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b94d82a inet6_release +EXPORT_SYMBOL vmlinux 0x1bb07a42 lz4_decompress +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bd274e7 bio_add_page +EXPORT_SYMBOL vmlinux 0x1bf5e1dd mount_subtree +EXPORT_SYMBOL vmlinux 0x1c192331 inode_permission +EXPORT_SYMBOL vmlinux 0x1c1c74c7 iucv_message_receive +EXPORT_SYMBOL vmlinux 0x1c61b587 raw3270_start +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c88a80d kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x1cd649b2 find_lock_entry +EXPORT_SYMBOL vmlinux 0x1cdb8b15 sock_wfree +EXPORT_SYMBOL vmlinux 0x1ce4a87a inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x1d30f505 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x1d378012 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x1d3be2cc tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x1d69298d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x1d96c108 param_set_ullong +EXPORT_SYMBOL vmlinux 0x1dab5dfa blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x1de5f09f iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x1dece0ab md_done_sync +EXPORT_SYMBOL vmlinux 0x1df13a23 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x1e0b112d sock_i_ino +EXPORT_SYMBOL vmlinux 0x1e238ca2 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e8a161a crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1e8c34b9 block_read_full_page +EXPORT_SYMBOL vmlinux 0x1e90f618 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ed01d8c nvm_unregister_target +EXPORT_SYMBOL vmlinux 0x1ef79059 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x1f0f0d7a iterate_dir +EXPORT_SYMBOL vmlinux 0x1f1063c5 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x1f28db28 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x1f31ff80 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x1f538a4d __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1f542fe8 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x1f7d1409 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc12adb netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x1fc5ce5c neigh_update +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200b8f25 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x200d3ae4 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x20133160 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x20241c20 dev_mc_add +EXPORT_SYMBOL vmlinux 0x203a36ce get_io_context +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205f4d9f sclp_unregister +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075a03f commit_creds +EXPORT_SYMBOL vmlinux 0x20973b94 segment_unload +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20af0acd __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x20b55a73 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20dd0de7 netdev_change_features +EXPORT_SYMBOL vmlinux 0x20ecd82f security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x20fd2c35 __genl_register_family +EXPORT_SYMBOL vmlinux 0x2107992b __scm_send +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21697a21 iucv_message_reject +EXPORT_SYMBOL vmlinux 0x216c8149 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x219c8c7f __frontswap_test +EXPORT_SYMBOL vmlinux 0x21a8b985 seq_open +EXPORT_SYMBOL vmlinux 0x21af7ea8 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x21b3d474 __put_cred +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21eb5b00 sclp_cpi_set_data +EXPORT_SYMBOL vmlinux 0x21f64576 kernel_write +EXPORT_SYMBOL vmlinux 0x2206e644 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x2227d5c5 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22480760 tcp_child_process +EXPORT_SYMBOL vmlinux 0x224cb332 down +EXPORT_SYMBOL vmlinux 0x225abba3 inet_getname +EXPORT_SYMBOL vmlinux 0x226413c0 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x226b08a4 idr_is_empty +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22896ea2 bioset_free +EXPORT_SYMBOL vmlinux 0x22a0a1be __sock_create +EXPORT_SYMBOL vmlinux 0x22a473cc bio_reset +EXPORT_SYMBOL vmlinux 0x22ac1d06 raw3270_request_set_data +EXPORT_SYMBOL vmlinux 0x22ae17ac rwsem_wake +EXPORT_SYMBOL vmlinux 0x22c962e9 dm_put_device +EXPORT_SYMBOL vmlinux 0x22d48128 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x22eb2ecb security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x22ecf082 idr_remove +EXPORT_SYMBOL vmlinux 0x2335c27d md_write_end +EXPORT_SYMBOL vmlinux 0x23367153 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x2365ede7 __irq_regs +EXPORT_SYMBOL vmlinux 0x236c8c64 memcpy +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ad6348 simple_statfs +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23d2db96 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x23daf91d __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x23e18bb5 inet_frag_find +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242a103d inet6_offloads +EXPORT_SYMBOL vmlinux 0x242f3562 irq_subclass_register +EXPORT_SYMBOL vmlinux 0x2438387f tccb_add_dcw +EXPORT_SYMBOL vmlinux 0x2443524c alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x2452a88b freeze_super +EXPORT_SYMBOL vmlinux 0x2452be4c tcf_hash_create +EXPORT_SYMBOL vmlinux 0x2452fb7d bio_split +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2460b09f kernel_param_lock +EXPORT_SYMBOL vmlinux 0x2466b7c2 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x2471b563 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x2472188e __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a5d70e skb_tx_error +EXPORT_SYMBOL vmlinux 0x24afd67c tcp_disconnect +EXPORT_SYMBOL vmlinux 0x24b1be45 security_path_mknod +EXPORT_SYMBOL vmlinux 0x24b80341 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x24f66fde seq_read +EXPORT_SYMBOL vmlinux 0x24fbd9cb airq_iv_release +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2503f0f7 param_get_long +EXPORT_SYMBOL vmlinux 0x25435b37 arp_create +EXPORT_SYMBOL vmlinux 0x254ba7a4 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x254e58f8 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a87bfd md_unregister_thread +EXPORT_SYMBOL vmlinux 0x25a8ea04 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x25bdcd38 file_path +EXPORT_SYMBOL vmlinux 0x25c8d2f5 simple_readpage +EXPORT_SYMBOL vmlinux 0x25da459e mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x25dacc94 debug_register +EXPORT_SYMBOL vmlinux 0x25e78d33 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ec1b28 strlen +EXPORT_SYMBOL vmlinux 0x25ee3548 __module_get +EXPORT_SYMBOL vmlinux 0x25fb58e0 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x2605cc5f sk_stop_timer +EXPORT_SYMBOL vmlinux 0x260f8f92 setattr_copy +EXPORT_SYMBOL vmlinux 0x263b806a jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264077be __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x2645d3ef __blk_run_queue +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26888bb3 __register_nls +EXPORT_SYMBOL vmlinux 0x268acf7f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x26a631c5 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x26ab88dd memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x26ae76a9 skb_put +EXPORT_SYMBOL vmlinux 0x26cee22d pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x26d08c0f mark_info_dirty +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fa50c0 complete +EXPORT_SYMBOL vmlinux 0x2739cb69 free_buffer_head +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x276f1bfb skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x277b8390 param_set_uint +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27cca908 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x27dc968f follow_pfn +EXPORT_SYMBOL vmlinux 0x27def686 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f433f7 get_super +EXPORT_SYMBOL vmlinux 0x28057295 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x28144296 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282a6fd0 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x28343bad scnprintf +EXPORT_SYMBOL vmlinux 0x2843c643 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x287d5f2a dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x2880f73a forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x28974adc sock_kmalloc +EXPORT_SYMBOL vmlinux 0x28a009a7 md_write_start +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28c57107 param_get_bool +EXPORT_SYMBOL vmlinux 0x28cbeb5a xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x2927c17c __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x29391e7d vm_munmap +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296e8c75 debug_register_mode +EXPORT_SYMBOL vmlinux 0x296ee9c1 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x29789394 empty_zero_page +EXPORT_SYMBOL vmlinux 0x298d60da xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x2999ecb4 blk_start_queue_async +EXPORT_SYMBOL vmlinux 0x29a2a46e tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x29b7e545 param_set_ushort +EXPORT_SYMBOL vmlinux 0x29befbc7 scsi_register +EXPORT_SYMBOL vmlinux 0x29cf9c26 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x29eef115 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x29f8fbfb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a855da8 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x2aa3e11d flush_old_exec +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab46441 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x2ac09dd5 __nla_put +EXPORT_SYMBOL vmlinux 0x2ac66d9e d_invalidate +EXPORT_SYMBOL vmlinux 0x2ac7ebb9 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae6d9af unregister_console +EXPORT_SYMBOL vmlinux 0x2b0a4a91 console_start +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3cf5a7 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x2b40f253 pci_enable_device +EXPORT_SYMBOL vmlinux 0x2b4a3fba fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x2b79dfea security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x2b87096a md_integrity_register +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2b9e1cc5 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bd9d3e7 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be80c6b __bforget +EXPORT_SYMBOL vmlinux 0x2beafe6e netdev_features_change +EXPORT_SYMBOL vmlinux 0x2bf84e36 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x2c04075a proc_create_data +EXPORT_SYMBOL vmlinux 0x2c0f0fdc replace_mount_options +EXPORT_SYMBOL vmlinux 0x2c231c04 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x2c29a995 __strnlen_user +EXPORT_SYMBOL vmlinux 0x2c3905af param_ops_bint +EXPORT_SYMBOL vmlinux 0x2c458e9c tcw_add_tidaw +EXPORT_SYMBOL vmlinux 0x2c795e63 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2c897734 tcw_get_tsb +EXPORT_SYMBOL vmlinux 0x2ca3773e blk_get_queue +EXPORT_SYMBOL vmlinux 0x2cc10e69 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x2cd622b9 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x2cef05d7 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x2cf1df5a param_get_string +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3089a3 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d51bec1 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x2d5528c9 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x2d679e11 filemap_fault +EXPORT_SYMBOL vmlinux 0x2d95b459 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x2dbb9241 ida_init +EXPORT_SYMBOL vmlinux 0x2dcde23f read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x2dd86c99 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e18f452 netdev_info +EXPORT_SYMBOL vmlinux 0x2e2b2894 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e593a27 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0x2e7a1f47 start_tty +EXPORT_SYMBOL vmlinux 0x2e895f52 param_get_ushort +EXPORT_SYMBOL vmlinux 0x2e8b8fe3 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x2e989d98 __elv_add_request +EXPORT_SYMBOL vmlinux 0x2e9d28d1 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x2ea826f9 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x2ebc0c8b d_set_fallthru +EXPORT_SYMBOL vmlinux 0x2eeae4e4 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x2ef5661d segment_modify_shared +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efc102f tcw_set_data +EXPORT_SYMBOL vmlinux 0x2f02e7d2 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f161b70 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f6f051f dquot_transfer +EXPORT_SYMBOL vmlinux 0x2f8a2697 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2f8b5d61 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x2f9633f9 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x2fa5a500 memcmp +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb680a2 passthru_features_check +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fcf657a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff8caab jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x2ffa107c tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x2ffffb6f _ebc_tolower +EXPORT_SYMBOL vmlinux 0x301c0dfd dquot_acquire +EXPORT_SYMBOL vmlinux 0x3028a7d2 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x302eadf6 try_to_release_page +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30311874 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x303675f4 blk_free_tags +EXPORT_SYMBOL vmlinux 0x3040b77a put_io_context +EXPORT_SYMBOL vmlinux 0x3052c3c6 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x305e7d31 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308d9003 pipe_unlock +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ae3363 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x30d141bc lwtunnel_state_alloc +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fb2b16 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x31010eac __crypto_memneq +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3104887a scsi_device_put +EXPORT_SYMBOL vmlinux 0x3129e2ec jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x312ba61a dev_add_offload +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x314d8178 request_key_async +EXPORT_SYMBOL vmlinux 0x316f1e8e vfs_whiteout +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31765ecc always_delete_dentry +EXPORT_SYMBOL vmlinux 0x317d3a50 from_kgid +EXPORT_SYMBOL vmlinux 0x31aed1d4 seq_release_private +EXPORT_SYMBOL vmlinux 0x31d8ee1e __mutex_init +EXPORT_SYMBOL vmlinux 0x31f74590 __breadahead +EXPORT_SYMBOL vmlinux 0x321b982d idr_replace +EXPORT_SYMBOL vmlinux 0x3221bd3f raw3270_request_set_idal +EXPORT_SYMBOL vmlinux 0x3238a155 rename_lock +EXPORT_SYMBOL vmlinux 0x323a4c31 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x3244f8b8 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x32507b6c flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x3275689f smp_ctl_set_bit +EXPORT_SYMBOL vmlinux 0x327c7ab0 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x32875411 md_reload_sb +EXPORT_SYMBOL vmlinux 0x32c6a2d8 _ebcasc_500 +EXPORT_SYMBOL vmlinux 0x32ddf20b dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32f9c768 unregister_external_irq +EXPORT_SYMBOL vmlinux 0x332ab57f param_get_uint +EXPORT_SYMBOL vmlinux 0x3356ffe0 kill_block_super +EXPORT_SYMBOL vmlinux 0x33590b55 unlock_page +EXPORT_SYMBOL vmlinux 0x3369fe51 mpage_writepages +EXPORT_SYMBOL vmlinux 0x3387381c jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x33883db0 ccw_driver_unregister +EXPORT_SYMBOL vmlinux 0x3388faad bd_set_size +EXPORT_SYMBOL vmlinux 0x338bbef8 __ndelay +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d306a2 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x33d9b886 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x33edf4e7 devm_release_resource +EXPORT_SYMBOL vmlinux 0x33f74de3 _ascebc_500 +EXPORT_SYMBOL vmlinux 0x33feb976 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x34005d22 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x343c32a5 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x343e5c03 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x34442a13 fget_raw +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3462399c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34738eea blk_end_request_all +EXPORT_SYMBOL vmlinux 0x348281a8 read_cache_page +EXPORT_SYMBOL vmlinux 0x348463f1 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a00d68 device_get_mac_address +EXPORT_SYMBOL vmlinux 0x34c5a564 kobject_get +EXPORT_SYMBOL vmlinux 0x34d7cb45 register_md_personality +EXPORT_SYMBOL vmlinux 0x34e90540 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fada2b raw3270_reset +EXPORT_SYMBOL vmlinux 0x35088802 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3517ff7d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x352b24a7 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x353693ef ccw_device_start +EXPORT_SYMBOL vmlinux 0x35396c6e read_dev_sector +EXPORT_SYMBOL vmlinux 0x3548a870 inet_put_port +EXPORT_SYMBOL vmlinux 0x354ff83d block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3558fa24 crc32_be +EXPORT_SYMBOL vmlinux 0x3578efd8 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x35853984 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x359e1132 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b4e5c6 sock_init_data +EXPORT_SYMBOL vmlinux 0x360071c1 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x3602aba9 raw3270_register_notifier +EXPORT_SYMBOL vmlinux 0x365bbb15 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x365cf34e vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x366962e4 inet_listen +EXPORT_SYMBOL vmlinux 0x36755bac security_inode_permission +EXPORT_SYMBOL vmlinux 0x36783be8 read_cache_pages +EXPORT_SYMBOL vmlinux 0x367cdcac qdisc_list_del +EXPORT_SYMBOL vmlinux 0x36a18ae2 simple_rmdir +EXPORT_SYMBOL vmlinux 0x36abce3a ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36da4dbd security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x3703562a ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x3718c116 arch_lock_relax +EXPORT_SYMBOL vmlinux 0x371cd6ac nvm_dev_factory +EXPORT_SYMBOL vmlinux 0x37238da3 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3774c96c ida_simple_remove +EXPORT_SYMBOL vmlinux 0x378c5d14 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x37990877 param_set_invbool +EXPORT_SYMBOL vmlinux 0x379b8e4b security_path_rename +EXPORT_SYMBOL vmlinux 0x379e0c93 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x37ae4a90 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37cb30b9 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x37de6bb4 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x37dee37c ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x37ff4c06 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x38037882 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x38176c16 pci_match_id +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38253330 param_ops_short +EXPORT_SYMBOL vmlinux 0x387d4670 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x3882c6db tcp_prequeue +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38871e82 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x3893567f nvm_put_blk +EXPORT_SYMBOL vmlinux 0x389ac515 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b93b95 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x38c82219 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x38d0db46 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x38d19cb2 seq_file_path +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x396ce0e2 tty_port_close +EXPORT_SYMBOL vmlinux 0x3991379c get_cached_acl +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399d05b8 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x39ad185f tty_write_room +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c054fa kern_path_create +EXPORT_SYMBOL vmlinux 0x39cf553e mount_nodev +EXPORT_SYMBOL vmlinux 0x39d5a452 file_remove_privs +EXPORT_SYMBOL vmlinux 0x39d6a403 sock_no_listen +EXPORT_SYMBOL vmlinux 0x39e8a9de compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x3a295d96 drop_nlink +EXPORT_SYMBOL vmlinux 0x3a33e9a2 debug_dflt_header_fn +EXPORT_SYMBOL vmlinux 0x3a3a2849 set_guest_storage_key +EXPORT_SYMBOL vmlinux 0x3a3ffe19 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x3a79c0e9 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x3a85ff88 napi_get_frags +EXPORT_SYMBOL vmlinux 0x3a8a8fb4 arp_tbl +EXPORT_SYMBOL vmlinux 0x3a8e08bb itcw_add_dcw +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa11bd1 _raw_read_lock_wait +EXPORT_SYMBOL vmlinux 0x3ab37935 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x3ab41b25 __copy_in_user +EXPORT_SYMBOL vmlinux 0x3acd26d6 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x3b1ed498 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x3b3b2a38 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3b579479 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x3b57f5db try_module_get +EXPORT_SYMBOL vmlinux 0x3b587419 register_netdev +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b661da1 arp_xmit +EXPORT_SYMBOL vmlinux 0x3b72df32 deactivate_super +EXPORT_SYMBOL vmlinux 0x3b7aa2f4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b7e5b45 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3b8afbf2 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3baa965d dev_printk +EXPORT_SYMBOL vmlinux 0x3bb23e91 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x3bcfa705 consume_skb +EXPORT_SYMBOL vmlinux 0x3be8ac9e netif_rx +EXPORT_SYMBOL vmlinux 0x3bf311bb skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x3c0b4eee __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x3c12b2f2 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c63468a elevator_init +EXPORT_SYMBOL vmlinux 0x3c6d0c66 pci_release_region +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c837db9 lwtunnel_get_encap_size +EXPORT_SYMBOL vmlinux 0x3c853328 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0x3c88512f km_new_mapping +EXPORT_SYMBOL vmlinux 0x3c9efdde __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x3cdffd8b elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d030a02 get_gendisk +EXPORT_SYMBOL vmlinux 0x3d04938a get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x3d0ad4d1 kset_unregister +EXPORT_SYMBOL vmlinux 0x3d0be556 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x3d117a60 itcw_calc_size +EXPORT_SYMBOL vmlinux 0x3d18967f copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x3d253ee8 send_sig_info +EXPORT_SYMBOL vmlinux 0x3d5ae5bd configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0x3d828ef1 register_netdevice +EXPORT_SYMBOL vmlinux 0x3da71256 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x3db5838a ccw_device_start_key +EXPORT_SYMBOL vmlinux 0x3db9a313 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x3dc2abd1 inet_shutdown +EXPORT_SYMBOL vmlinux 0x3dc64b36 md_check_recovery +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddd2b8e tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x3de29813 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e485786 param_ops_byte +EXPORT_SYMBOL vmlinux 0x3e58d1c6 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x3e6d0579 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x3e77967f import_iovec +EXPORT_SYMBOL vmlinux 0x3e79c04d freezing_slow_path +EXPORT_SYMBOL vmlinux 0x3e7a7b8d napi_disable +EXPORT_SYMBOL vmlinux 0x3e882eb8 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3e8ba3fd page_waitqueue +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e953b65 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3e96f9a2 register_sysctl +EXPORT_SYMBOL vmlinux 0x3e99be4a d_add_ci +EXPORT_SYMBOL vmlinux 0x3e9d79ef dquot_release +EXPORT_SYMBOL vmlinux 0x3f2e409e blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x3f32d16a __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x3f38a176 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x3f3ab61a blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x3f42c569 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f829eb7 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x3fa53685 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x3fa913da strspn +EXPORT_SYMBOL vmlinux 0x3fb0b9e3 __udelay +EXPORT_SYMBOL vmlinux 0x3fb22780 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x3fb58b6d up +EXPORT_SYMBOL vmlinux 0x3fcb56ce ccw_device_get_id +EXPORT_SYMBOL vmlinux 0x3fda1f39 inode_init_owner +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fed1aba skb_copy_expand +EXPORT_SYMBOL vmlinux 0x4021994d __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4051d28c udp6_csum_init +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4069d964 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x407fe688 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x40858bed dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x4096b3f7 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d9ef51 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x41341667 kernel_bind +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4150273d rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419bb441 noop_qdisc +EXPORT_SYMBOL vmlinux 0x41b41672 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x41baf194 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x41c98d81 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x41df696c wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42420f4e tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42a49b20 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x42aab6da inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x42ae4e0d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x42bded5f jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x42f05fd8 param_set_bool +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x432e56fa dcache_readdir +EXPORT_SYMBOL vmlinux 0x43439a1b tcp_make_synack +EXPORT_SYMBOL vmlinux 0x4352665e sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x4364595c blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a4938f vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x43b3973f netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x43b96554 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x43b9801e set_user_nice +EXPORT_SYMBOL vmlinux 0x43bdfa20 console_irq +EXPORT_SYMBOL vmlinux 0x43c2b116 security_file_permission +EXPORT_SYMBOL vmlinux 0x43cf3bc3 dql_completed +EXPORT_SYMBOL vmlinux 0x43d56e59 drop_super +EXPORT_SYMBOL vmlinux 0x43e268c6 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x43efa84f sock_no_bind +EXPORT_SYMBOL vmlinux 0x43f02ae0 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fe3c81 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441ec923 lookup_bdev +EXPORT_SYMBOL vmlinux 0x4433662e sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x444a73f9 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x4452808e debug_hex_ascii_view +EXPORT_SYMBOL vmlinux 0x4465e70c compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x44864aa6 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x449cb813 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x44a3d354 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c3768c netpoll_print_options +EXPORT_SYMBOL vmlinux 0x44d769c9 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f4a80f keyring_search +EXPORT_SYMBOL vmlinux 0x451957bd qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45955a36 generic_perform_write +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ab8daf unregister_netdev +EXPORT_SYMBOL vmlinux 0x45c92313 VMALLOC_END +EXPORT_SYMBOL vmlinux 0x45f724f5 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x46013e72 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL vmlinux 0x4610daf2 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x4613d45d module_put +EXPORT_SYMBOL vmlinux 0x46179e7e dcache_dir_close +EXPORT_SYMBOL vmlinux 0x464417bd filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x4653e777 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x466abd08 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4671aba0 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x46977725 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x46a08998 datagram_poll +EXPORT_SYMBOL vmlinux 0x46b1fd9c kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x46b3dd10 dev_mc_del +EXPORT_SYMBOL vmlinux 0x46b67693 hex2bin +EXPORT_SYMBOL vmlinux 0x46d59f7d smp_cpu_mt_shift +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4707c776 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x47101c35 elevator_alloc +EXPORT_SYMBOL vmlinux 0x472a28a1 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474462cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x474e38e7 path_get +EXPORT_SYMBOL vmlinux 0x475b3608 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x477e7d7e ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x4786ddf2 nf_log_set +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479cc556 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x47c003e4 param_set_copystring +EXPORT_SYMBOL vmlinux 0x47cc45e1 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x480ac6fa do_splice_direct +EXPORT_SYMBOL vmlinux 0x480f6c2e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x48162664 sync_blockdev +EXPORT_SYMBOL vmlinux 0x48163339 pci_dev_put +EXPORT_SYMBOL vmlinux 0x481992c3 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x4823819e raw3270_buffer_address +EXPORT_SYMBOL vmlinux 0x4828f3b0 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x4848ba80 netif_napi_add +EXPORT_SYMBOL vmlinux 0x48493de4 touch_atime +EXPORT_SYMBOL vmlinux 0x4880d074 debug_event_common +EXPORT_SYMBOL vmlinux 0x489bc75c add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x48c951fe lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x48d6a3b3 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x48da4bea scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x48ebf9e3 seq_escape +EXPORT_SYMBOL vmlinux 0x48fcdce0 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4907a56d wait_for_completion +EXPORT_SYMBOL vmlinux 0x491749b3 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x491f3825 file_ns_capable +EXPORT_SYMBOL vmlinux 0x4924c850 _raw_write_trylock_retry +EXPORT_SYMBOL vmlinux 0x492b6985 netdev_emerg +EXPORT_SYMBOL vmlinux 0x493c4a7e __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x4956dd67 blk_complete_request +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495f3195 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496b8304 ccw_device_set_offline +EXPORT_SYMBOL vmlinux 0x4974f2d4 dst_alloc +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49e010e3 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a06c17e write_cache_pages +EXPORT_SYMBOL vmlinux 0x4a3b0e67 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x4a48d365 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4a48ef35 dev_warn +EXPORT_SYMBOL vmlinux 0x4a67bda5 __quota_error +EXPORT_SYMBOL vmlinux 0x4a6886b6 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x4a7216a5 security_path_symlink +EXPORT_SYMBOL vmlinux 0x4aad3e9a tcp_release_cb +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac4e207 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b223e5b tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x4b2e0154 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4b4fec0f netlink_set_err +EXPORT_SYMBOL vmlinux 0x4b5814ef kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6b8cd6 single_open_size +EXPORT_SYMBOL vmlinux 0x4b891dd0 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x4bce67e3 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x4be011a3 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x4beb1bdf mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4bf59761 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x4c058e30 kernel_connect +EXPORT_SYMBOL vmlinux 0x4c0906c3 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x4c0ef658 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x4c1907e2 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4c956e nla_memcmp +EXPORT_SYMBOL vmlinux 0x4c574d9e sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x4c8d43ed simple_open +EXPORT_SYMBOL vmlinux 0x4c96e5af dev_addr_del +EXPORT_SYMBOL vmlinux 0x4c9b0b42 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x4ca77727 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x4cab9c24 simple_write_begin +EXPORT_SYMBOL vmlinux 0x4cb09ca5 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cfa8e86 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dda726b match_strlcpy +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dea1053 memchr +EXPORT_SYMBOL vmlinux 0x4dedd755 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df14a46 simple_dname +EXPORT_SYMBOL vmlinux 0x4e01fc78 pci_request_regions +EXPORT_SYMBOL vmlinux 0x4e111137 config_group_init +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e471bc8 set_security_override +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e83f2fd scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x4ea1d9e2 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x4ecbddbd config_item_get +EXPORT_SYMBOL vmlinux 0x4eefdcc1 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x4ef4f163 tccb_init +EXPORT_SYMBOL vmlinux 0x4efebcbb inet_offloads +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2cd1b5 __cpcmd +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3a3447 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x4f40d92e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x4f5cd9e5 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b6e6c nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x4f79dd6e nla_reserve +EXPORT_SYMBOL vmlinux 0x4f954a40 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x4faa689f blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x4fcedf7f tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x4fef016c padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4ff5763a sock_update_memcg +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500b1dc3 locks_free_lock +EXPORT_SYMBOL vmlinux 0x5023794d raw3270_activate_view +EXPORT_SYMBOL vmlinux 0x503e5b35 seq_printf +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50720c5f snprintf +EXPORT_SYMBOL vmlinux 0x507217d5 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x507b5993 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x50a7aa0d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e8cf8f __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x50ec4fc3 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x50f39d5f in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x50f8f3df simple_dir_operations +EXPORT_SYMBOL vmlinux 0x5105e6db dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x510c2535 xz_dec_run +EXPORT_SYMBOL vmlinux 0x510ca0d8 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51204b61 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x5157ec8b tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x517852cd kill_pid +EXPORT_SYMBOL vmlinux 0x51a65bc1 scsi_device_get +EXPORT_SYMBOL vmlinux 0x51c3c0e4 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x51f1f89b nvm_generic_to_addr_mode +EXPORT_SYMBOL vmlinux 0x51fbf821 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5218481e config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5229455e nvm_submit_io +EXPORT_SYMBOL vmlinux 0x525bccb9 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x528da34f nvm_register_mgr +EXPORT_SYMBOL vmlinux 0x52996584 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x52b015d4 prepare_creds +EXPORT_SYMBOL vmlinux 0x52de780e xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x52e00329 ccw_device_tm_start_key +EXPORT_SYMBOL vmlinux 0x52e2fdd5 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x52fe8cb0 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x53126d2f jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5348d97d ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x53574417 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x535a1908 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x537688c6 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x538b7dab pci_choose_state +EXPORT_SYMBOL vmlinux 0x538f152f make_kprojid +EXPORT_SYMBOL vmlinux 0x53927371 get_sync_clock +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53dd0bf6 tty_free_termios +EXPORT_SYMBOL vmlinux 0x53ed10c0 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x53f04062 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x540862e2 diag14 +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540e0c34 ccw_device_set_options_mask +EXPORT_SYMBOL vmlinux 0x5425a9e1 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x54347dd0 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x54383cbb generic_getxattr +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545a9a61 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x5464f6a7 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x5470228a nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x5482801f sg_miter_next +EXPORT_SYMBOL vmlinux 0x5497283c ccw_device_tm_start +EXPORT_SYMBOL vmlinux 0x54a4ea6f printk_emit +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ae5706 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x54bb39a9 f_setown +EXPORT_SYMBOL vmlinux 0x54c977d5 kthread_stop +EXPORT_SYMBOL vmlinux 0x54cfcb12 vm_mmap +EXPORT_SYMBOL vmlinux 0x54d6d4ab sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550aa026 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55233dcb dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x5529c99d __block_write_begin +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5553dc03 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x55678b4b bsearch +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5570ccfb blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x557fc3f9 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x55a14c88 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x55a3f3e0 sclp_add_request +EXPORT_SYMBOL vmlinux 0x55b6985a pci_save_state +EXPORT_SYMBOL vmlinux 0x55c60943 follow_down +EXPORT_SYMBOL vmlinux 0x55d616a8 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x55e3f1f3 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x55fbaf1d smsg_unregister_callback +EXPORT_SYMBOL vmlinux 0x560b168d diag_stat_inc +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x568aee0c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x56ac3de3 kernel_read +EXPORT_SYMBOL vmlinux 0x56b9a768 ccw_device_clear +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d24f16 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x56d3d555 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x56e43d85 softnet_data +EXPORT_SYMBOL vmlinux 0x56fc0c6b neigh_ifdown +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x575622d1 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x575a24d9 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x5763639d alloc_disk +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576e2f24 param_get_ullong +EXPORT_SYMBOL vmlinux 0x57800c1c get_empty_filp +EXPORT_SYMBOL vmlinux 0x5782aeca ccw_device_halt +EXPORT_SYMBOL vmlinux 0x578dcc38 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x5795545d remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x579bf6cf pci_find_bus +EXPORT_SYMBOL vmlinux 0x57a2e125 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x57a8dcc8 __do_once_done +EXPORT_SYMBOL vmlinux 0x57c2671c set_device_ro +EXPORT_SYMBOL vmlinux 0x57db0c9d __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x57f55bf7 genl_notify +EXPORT_SYMBOL vmlinux 0x58083961 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x5809c7f5 vm_event_states +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5823cdd3 completion_done +EXPORT_SYMBOL vmlinux 0x5847b8af tcw_finalize +EXPORT_SYMBOL vmlinux 0x585c0d17 proc_set_size +EXPORT_SYMBOL vmlinux 0x585cf934 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x58613553 bdget +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587b0be1 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x58a89ec8 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58cd1b54 string_escape_mem +EXPORT_SYMBOL vmlinux 0x58d0f245 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x58d7ca1d sock_no_connect +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f9e889 tcp_req_err +EXPORT_SYMBOL vmlinux 0x590a201e should_remove_suid +EXPORT_SYMBOL vmlinux 0x59141b69 km_policy_notify +EXPORT_SYMBOL vmlinux 0x591aaa12 default_llseek +EXPORT_SYMBOL vmlinux 0x591fc2ca tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x594c6074 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x5952cfed revalidate_disk +EXPORT_SYMBOL vmlinux 0x596779b2 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x598af25e register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59baeba5 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x59c66ae0 set_anon_super +EXPORT_SYMBOL vmlinux 0x5a0dbb4c bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x5a23c901 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x5a30a9e9 padata_alloc +EXPORT_SYMBOL vmlinux 0x5a34a45c __kmalloc +EXPORT_SYMBOL vmlinux 0x5a5e7ea3 simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x5a9705bf param_set_short +EXPORT_SYMBOL vmlinux 0x5ab0d902 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x5ac32115 skb_find_text +EXPORT_SYMBOL vmlinux 0x5ad5dfa8 security_path_chmod +EXPORT_SYMBOL vmlinux 0x5ae4c771 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x5afbad9d sk_capable +EXPORT_SYMBOL vmlinux 0x5aff8034 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5affa02d config_item_set_name +EXPORT_SYMBOL vmlinux 0x5b28bf5d memremap +EXPORT_SYMBOL vmlinux 0x5b2c4d9b param_get_ulong +EXPORT_SYMBOL vmlinux 0x5b30be3b rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5b519038 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x5b604bd1 segment_type +EXPORT_SYMBOL vmlinux 0x5b726827 nvm_set_rqd_ppalist +EXPORT_SYMBOL vmlinux 0x5b73377c mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x5b7edc08 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x5bae8b07 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x5bb478e2 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x5bb74cfa trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5bb805b7 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x5bbfbf1a scsi_remove_device +EXPORT_SYMBOL vmlinux 0x5bbff0f8 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x5be3826e tcf_action_exec +EXPORT_SYMBOL vmlinux 0x5bf8e326 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x5c0a2973 elevator_change +EXPORT_SYMBOL vmlinux 0x5c323c0d bdput +EXPORT_SYMBOL vmlinux 0x5c4bd6c6 lro_flush_all +EXPORT_SYMBOL vmlinux 0x5c68f275 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x5cad5048 raw3270_deactivate_view +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cd62d28 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x5d11d95c trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x5d1eda7a dev_addr_flush +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5c3592 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x5d6a970f textsearch_destroy +EXPORT_SYMBOL vmlinux 0x5d813ff2 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x5d993c49 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x5db3ae78 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x5db73967 generic_make_request +EXPORT_SYMBOL vmlinux 0x5dbb4f81 mntput +EXPORT_SYMBOL vmlinux 0x5dbb501f clear_wb_congested +EXPORT_SYMBOL vmlinux 0x5dbbe98e memmove +EXPORT_SYMBOL vmlinux 0x5dc0f338 diag_stat_inc_norecursion +EXPORT_SYMBOL vmlinux 0x5de1ca19 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x5dee77a8 iunique +EXPORT_SYMBOL vmlinux 0x5e0e974c simple_pin_fs +EXPORT_SYMBOL vmlinux 0x5e529980 netpoll_setup +EXPORT_SYMBOL vmlinux 0x5e5b628a d_find_any_alias +EXPORT_SYMBOL vmlinux 0x5e6d6dc5 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x5e7b0145 blk_start_queue +EXPORT_SYMBOL vmlinux 0x5e83eead xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x5e86171d raw3270_unregister_notifier +EXPORT_SYMBOL vmlinux 0x5e89b4ce dev_base_lock +EXPORT_SYMBOL vmlinux 0x5e8dcc34 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x5e917e24 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecba35d elv_rb_del +EXPORT_SYMBOL vmlinux 0x5efffd12 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f079340 alloc_file +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0f3545 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x5f13a78c elv_rb_add +EXPORT_SYMBOL vmlinux 0x5f23ef28 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x5f2a93c9 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x5f304e5a kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x5f43a3d9 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x5f4b2de8 cio_irb +EXPORT_SYMBOL vmlinux 0x5f50974a dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x5f72aa3d dm_put_table_device +EXPORT_SYMBOL vmlinux 0x5f778261 raw3270_request_alloc +EXPORT_SYMBOL vmlinux 0x5f828a60 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x5f8fe173 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x5f93084f neigh_parms_release +EXPORT_SYMBOL vmlinux 0x5f980bd0 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5fd2298e strnstr +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdcb209 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x5ff5e422 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x5ff9fa81 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x5ffaf2de arch_spin_trylock_retry +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x601182e6 iget_locked +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604803d4 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60783b60 sock_no_accept +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60ad0ac0 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x60b11efe blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x60c9140a __napi_complete +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60ef0952 key_link +EXPORT_SYMBOL vmlinux 0x6110648f inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x611c4023 md_flush_request +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x614d095c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x61b73d8d truncate_setsize +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b93212 mod_virt_timer_periodic +EXPORT_SYMBOL vmlinux 0x61d45e70 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x61e40e05 sock_no_getname +EXPORT_SYMBOL vmlinux 0x6216c594 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x621c00a2 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6247f09e tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628a484a bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x62a9edbe __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x62c73641 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x62e89e04 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x62e9db3e scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x633ede00 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x6358832d copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ab3b8f dns_query +EXPORT_SYMBOL vmlinux 0x63b37329 inode_init_always +EXPORT_SYMBOL vmlinux 0x63ba3fc2 mount_bdev +EXPORT_SYMBOL vmlinux 0x63bf06e4 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d34238 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x64024ba3 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64198c65 set_groups +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649bb707 sk_filter +EXPORT_SYMBOL vmlinux 0x64b961ed unregister_cdrom +EXPORT_SYMBOL vmlinux 0x64e81b42 inet6_getname +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651c4a17 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466964 ilookup5 +EXPORT_SYMBOL vmlinux 0x6556e71b inet_recvmsg +EXPORT_SYMBOL vmlinux 0x657f4d4e ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x65daa364 tcw_set_tsb +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3956a ip_options_compile +EXPORT_SYMBOL vmlinux 0x65f3dad2 scmd_printk +EXPORT_SYMBOL vmlinux 0x661bcf77 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x6621def5 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x663ac0b7 follow_up +EXPORT_SYMBOL vmlinux 0x6655b29e prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x6674ef60 pci_request_region +EXPORT_SYMBOL vmlinux 0x6678786e simple_follow_link +EXPORT_SYMBOL vmlinux 0x668a65c4 register_cdrom +EXPORT_SYMBOL vmlinux 0x669e3e5d check_disk_size_change +EXPORT_SYMBOL vmlinux 0x66ab9b2a invalidate_bdev +EXPORT_SYMBOL vmlinux 0x66b207e2 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x66b487e5 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x66bba6ba inode_init_once +EXPORT_SYMBOL vmlinux 0x66d8fbd9 param_set_bint +EXPORT_SYMBOL vmlinux 0x66e69897 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x67141523 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x672144bd strlcpy +EXPORT_SYMBOL vmlinux 0x6724e119 crc32_le +EXPORT_SYMBOL vmlinux 0x67463267 iget_failed +EXPORT_SYMBOL vmlinux 0x6750b967 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67cc998e tty_kref_put +EXPORT_SYMBOL vmlinux 0x67dfa2d0 dquot_enable +EXPORT_SYMBOL vmlinux 0x67e16f2d register_quota_format +EXPORT_SYMBOL vmlinux 0x67f4fecb blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x6801446b bio_chain +EXPORT_SYMBOL vmlinux 0x68034546 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x681794b6 configfs_depend_item +EXPORT_SYMBOL vmlinux 0x682814f1 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x6832667f sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x68622376 debug_unregister +EXPORT_SYMBOL vmlinux 0x68639b93 unload_nls +EXPORT_SYMBOL vmlinux 0x686a5551 vfs_llseek +EXPORT_SYMBOL vmlinux 0x68754adb ccw_driver_register +EXPORT_SYMBOL vmlinux 0x688a78cb param_set_int +EXPORT_SYMBOL vmlinux 0x688ee9de netdev_crit +EXPORT_SYMBOL vmlinux 0x68b09d5c tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bf6745 load_nls +EXPORT_SYMBOL vmlinux 0x68df13e8 netif_skb_features +EXPORT_SYMBOL vmlinux 0x68e84ea0 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x68e97a07 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x68fe096a dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x6901925c ccw_device_is_pathgroup +EXPORT_SYMBOL vmlinux 0x69073729 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x6913039b __inode_permission +EXPORT_SYMBOL vmlinux 0x693fc257 ns_capable +EXPORT_SYMBOL vmlinux 0x694effbc eth_header_parse +EXPORT_SYMBOL vmlinux 0x697dd8df mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x6988ce82 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x698fc451 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x69945387 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a6feae eth_header +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d6d193 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x69e4f0fa tcp_check_req +EXPORT_SYMBOL vmlinux 0x69fc70de mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a142e09 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x6a2f0823 lwtunnel_build_state +EXPORT_SYMBOL vmlinux 0x6a30b0e9 thaw_bdev +EXPORT_SYMBOL vmlinux 0x6a374528 param_get_charp +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6aa18eb2 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x6abbb9be pci_iomap +EXPORT_SYMBOL vmlinux 0x6acabb30 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6aec9b7d blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x6af35d9c param_get_short +EXPORT_SYMBOL vmlinux 0x6af5d91e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b42bb2d ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x6b62f06d tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x6b86299f blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x6baf7d89 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x6bafb9e7 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x6bc09ff3 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc7c311 kmalloc_order +EXPORT_SYMBOL vmlinux 0x6bd509c7 ccw_device_get_mdc +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdfb79c proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x6be15d2c wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6be2fa64 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0a1848 nvm_register_target +EXPORT_SYMBOL vmlinux 0x6c13c066 ip_defrag +EXPORT_SYMBOL vmlinux 0x6c375611 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x6c440651 init_virt_timer +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5db7bf thaw_super +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6cac19cb dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x6cb12bfc skb_dequeue +EXPORT_SYMBOL vmlinux 0x6ce5d44c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x6ce6b743 dst_destroy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1ea6ec strlcat +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d3cff84 simple_getattr +EXPORT_SYMBOL vmlinux 0x6d509146 tcw_get_intrg +EXPORT_SYMBOL vmlinux 0x6d75e066 pcim_iomap +EXPORT_SYMBOL vmlinux 0x6d9288d2 idr_for_each +EXPORT_SYMBOL vmlinux 0x6d99bbb0 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x6d9ce212 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x6db1491b xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x6db528f8 block_truncate_page +EXPORT_SYMBOL vmlinux 0x6db9f7a0 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x6dc08d1d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x6ddca21d down_trylock +EXPORT_SYMBOL vmlinux 0x6ddd4934 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x6dee5844 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e00b8cb _ebcasc +EXPORT_SYMBOL vmlinux 0x6e05f6ef send_sig +EXPORT_SYMBOL vmlinux 0x6e33a008 __bread_gfp +EXPORT_SYMBOL vmlinux 0x6e565bef page_put_link +EXPORT_SYMBOL vmlinux 0x6e6e36b9 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e72de2a trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x6e753a71 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e7fb22e mutex_unlock +EXPORT_SYMBOL vmlinux 0x6e828aad percpu_counter_set +EXPORT_SYMBOL vmlinux 0x6e977e6d __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x6e9ad290 cpu_have_feature +EXPORT_SYMBOL vmlinux 0x6e9dc3b2 get_ccwdev_by_busid +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ec1628b __netif_schedule +EXPORT_SYMBOL vmlinux 0x6ed4a89d lookup_one_len +EXPORT_SYMBOL vmlinux 0x6ed81dbd from_kprojid +EXPORT_SYMBOL vmlinux 0x6ef571d8 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x6f033aed __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x6f0d4182 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x6f200b03 tcw_set_intrg +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2f6d6b param_ops_ulong +EXPORT_SYMBOL vmlinux 0x6f5ef93d memchr_inv +EXPORT_SYMBOL vmlinux 0x6f68b995 dev_get_stats +EXPORT_SYMBOL vmlinux 0x6f915271 airq_iv_create +EXPORT_SYMBOL vmlinux 0x6f9746b1 debug_set_level +EXPORT_SYMBOL vmlinux 0x6f98e4b3 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x6f9f2b28 filp_close +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc7e626 memzero_explicit +EXPORT_SYMBOL vmlinux 0x6fe4fc58 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6ff213dd jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x70003651 module_refcount +EXPORT_SYMBOL vmlinux 0x700adf6e dev_get_flags +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7053fc1c nf_afinfo +EXPORT_SYMBOL vmlinux 0x70548b85 skb_seq_read +EXPORT_SYMBOL vmlinux 0x705af1f3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x705e7152 padata_do_serial +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7081f630 kset_register +EXPORT_SYMBOL vmlinux 0x70af66cd call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x70f31637 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x70f65c9e dm_kobject_release +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7145aef0 segment_load +EXPORT_SYMBOL vmlinux 0x71507a95 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x715941b7 dev_uc_init +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7179fdad dquot_destroy +EXPORT_SYMBOL vmlinux 0x7196488b bdi_destroy +EXPORT_SYMBOL vmlinux 0x71965db8 dev_err +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c0c3a8 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x72238169 class3270 +EXPORT_SYMBOL vmlinux 0x72287a66 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x722d9996 _dev_info +EXPORT_SYMBOL vmlinux 0x72344608 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x723d6299 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x7242e96d strnchr +EXPORT_SYMBOL vmlinux 0x72452fb9 pci_iounmap +EXPORT_SYMBOL vmlinux 0x725fd887 nla_append +EXPORT_SYMBOL vmlinux 0x7273f1ce param_set_charp +EXPORT_SYMBOL vmlinux 0x72949a7f inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x72ad8652 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x72d4b516 generic_permission +EXPORT_SYMBOL vmlinux 0x72dc4738 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ee604b simple_setattr +EXPORT_SYMBOL vmlinux 0x72fd6597 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x730d4e0b lg_local_lock +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734e17bc put_disk +EXPORT_SYMBOL vmlinux 0x735048e7 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x7390fdcc udp_poll +EXPORT_SYMBOL vmlinux 0x7399f6ea xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x73ad4ea2 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x73af0533 sk_free +EXPORT_SYMBOL vmlinux 0x73bf20c6 _ascebc +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741f70a9 debug_stop_all +EXPORT_SYMBOL vmlinux 0x7434eaa6 stop_tty +EXPORT_SYMBOL vmlinux 0x7439c279 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x74528dd1 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x74809008 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74871c40 __blk_end_request +EXPORT_SYMBOL vmlinux 0x7495d0db netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x74967900 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x7497f846 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x74a8d4aa blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x74b347e2 cdrom_open +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c2b8c4 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x74c3917e udplite_table +EXPORT_SYMBOL vmlinux 0x74c96cc8 tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0x74ccdf29 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x74ce4667 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x74dccafa key_unlink +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e925d9 simple_write_end +EXPORT_SYMBOL vmlinux 0x74fb8f75 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x750b5c5a jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x750fee0c sg_miter_start +EXPORT_SYMBOL vmlinux 0x7518fbed netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x752fd012 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x7550973f generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x75633db6 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x756600c5 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x7581fcc5 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x75879db4 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x758fdcf1 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x75ac0197 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x75b0bdda inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c0c0cd misc_deregister +EXPORT_SYMBOL vmlinux 0x75f4d613 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760f1121 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x7610f4ee km_policy_expired +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76577a76 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x767f1b71 kill_pgrp +EXPORT_SYMBOL vmlinux 0x768c57da free_netdev +EXPORT_SYMBOL vmlinux 0x769690ee bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x76bd8ec0 tty_port_open +EXPORT_SYMBOL vmlinux 0x76cb0401 generic_show_options +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e62a51 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x76e84732 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x770819be ll_rw_block +EXPORT_SYMBOL vmlinux 0x77127c7a scm_detach_fds +EXPORT_SYMBOL vmlinux 0x7718be2a md_cluster_ops +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77331808 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x778b8d0f elv_add_request +EXPORT_SYMBOL vmlinux 0x7797ce63 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77cf8e21 dst_discard_out +EXPORT_SYMBOL vmlinux 0x77fdf248 skb_checksum +EXPORT_SYMBOL vmlinux 0x7803dffc __wake_up +EXPORT_SYMBOL vmlinux 0x780a3a42 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x780f2c80 set_binfmt +EXPORT_SYMBOL vmlinux 0x782acba5 crc_t10dif +EXPORT_SYMBOL vmlinux 0x78316369 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x78365dd4 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7864414c add_virt_timer_periodic +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7883f067 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7887dbe1 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a767db tso_build_hdr +EXPORT_SYMBOL vmlinux 0x78b049f3 dquot_drop +EXPORT_SYMBOL vmlinux 0x78cf43f9 do_splice_from +EXPORT_SYMBOL vmlinux 0x78de317b tty_port_close_end +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fae4e1 register_qdisc +EXPORT_SYMBOL vmlinux 0x79003bb7 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x7902e4d2 from_kuid +EXPORT_SYMBOL vmlinux 0x7928b25b nvm_erase_blk +EXPORT_SYMBOL vmlinux 0x792c7c29 blkdev_get +EXPORT_SYMBOL vmlinux 0x792e0d45 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x793037bd lwtunnel_fill_encap +EXPORT_SYMBOL vmlinux 0x7943ec5b get_user_pages +EXPORT_SYMBOL vmlinux 0x7955d6cf dev_open +EXPORT_SYMBOL vmlinux 0x796c60b1 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797f5141 generic_readlink +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b62961 mod_virt_timer +EXPORT_SYMBOL vmlinux 0x79d07cf8 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x79d22260 netdev_err +EXPORT_SYMBOL vmlinux 0x79dbdeef ccw_device_tm_intrg +EXPORT_SYMBOL vmlinux 0x79e41fd7 blk_init_tags +EXPORT_SYMBOL vmlinux 0x7a0f6aa8 pci_select_bars +EXPORT_SYMBOL vmlinux 0x7a1d7206 current_fs_time +EXPORT_SYMBOL vmlinux 0x7a2f76dc pci_platform_rom +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4d8693 d_find_alias +EXPORT_SYMBOL vmlinux 0x7a6c1ae2 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a7676d4 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab443db pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abe69a5 key_put +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae73de1 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7afbb8ea security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x7b0a4910 override_creds +EXPORT_SYMBOL vmlinux 0x7b2cc6ed pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x7b35b515 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x7b4e635a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x7b524211 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x7b5a7137 strncat +EXPORT_SYMBOL vmlinux 0x7b638328 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7b63e239 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7b6edb0a generic_write_end +EXPORT_SYMBOL vmlinux 0x7b8f4c40 key_create_or_update +EXPORT_SYMBOL vmlinux 0x7b97e77d bio_integrity_free +EXPORT_SYMBOL vmlinux 0x7bacbed2 d_walk +EXPORT_SYMBOL vmlinux 0x7bb9af3b vfs_statfs +EXPORT_SYMBOL vmlinux 0x7bbbe7ae eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x7bd89606 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7bf479fe resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x7bfcabc2 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c3dbaac kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x7c4a1b48 nf_log_register +EXPORT_SYMBOL vmlinux 0x7c52ef2a vfs_getattr +EXPORT_SYMBOL vmlinux 0x7c5d4a3a sclp_reactivate +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c72a06b generic_file_mmap +EXPORT_SYMBOL vmlinux 0x7c7362ad tcw_get_data +EXPORT_SYMBOL vmlinux 0x7c96a700 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x7ca90ed4 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce1cf98 irq_to_desc +EXPORT_SYMBOL vmlinux 0x7ce84eef xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7cec84ed param_set_ulong +EXPORT_SYMBOL vmlinux 0x7cff93ea wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1f1cc3 inet_accept +EXPORT_SYMBOL vmlinux 0x7d3197ce sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x7d3bb83a scsi_scan_target +EXPORT_SYMBOL vmlinux 0x7d406464 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d86283d configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x7db84299 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x7dbec229 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x7dc0927c ccw_device_get_path_mask +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfe25cf udp_del_offload +EXPORT_SYMBOL vmlinux 0x7e151906 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x7e31e388 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x7e321059 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x7e4159dd tty_unthrottle +EXPORT_SYMBOL vmlinux 0x7e4701a2 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x7e57ec9a inet_bind +EXPORT_SYMBOL vmlinux 0x7e61d94c netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x7e6965e4 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x7e8617f9 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x7ecba552 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x7edf5fd8 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7ee4e3eb ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee9eba3 iucv_register +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f17ca05 dquot_resume +EXPORT_SYMBOL vmlinux 0x7f1fe118 __debug_sprintf_event +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f263ed9 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7f362b46 inet6_bind +EXPORT_SYMBOL vmlinux 0x7f515380 put_page +EXPORT_SYMBOL vmlinux 0x7f5233d5 ip6_xmit +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f8cba8c nf_log_unset +EXPORT_SYMBOL vmlinux 0x7f93e042 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x7f9d3c1f parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x7fa5c929 tty_name +EXPORT_SYMBOL vmlinux 0x7fb4bd4e scsi_ioctl +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fbec260 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x7fc7fe09 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x80088c97 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x801afd6a param_set_long +EXPORT_SYMBOL vmlinux 0x801e7d0c nobh_writepage +EXPORT_SYMBOL vmlinux 0x802010e3 padata_stop +EXPORT_SYMBOL vmlinux 0x80377fd6 sk_stream_error +EXPORT_SYMBOL vmlinux 0x80480087 __init_rwsem +EXPORT_SYMBOL vmlinux 0x804b685b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x804cb92f blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x805485ab __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x805bf749 d_tmpfile +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x8073ac77 down_interruptible +EXPORT_SYMBOL vmlinux 0x8078f4c9 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x80b010e8 write_inode_now +EXPORT_SYMBOL vmlinux 0x80b3a747 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x80b8f44c jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d320c6 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x81114b68 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x8128c039 smsg_register_callback +EXPORT_SYMBOL vmlinux 0x8136e9b4 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816364f4 __get_page_tail +EXPORT_SYMBOL vmlinux 0x81a0abda tcp_close +EXPORT_SYMBOL vmlinux 0x81d35bfe tcw_get_tccb +EXPORT_SYMBOL vmlinux 0x81d8f261 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ed4ed0 kern_path +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820d3c32 blk_start_request +EXPORT_SYMBOL vmlinux 0x824519f1 finish_wait +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82616d5e inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x826a608b ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828febd2 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b1431c PDE_DATA +EXPORT_SYMBOL vmlinux 0x82b548a7 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x82c29ea5 simple_rename +EXPORT_SYMBOL vmlinux 0x82d22e06 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x82ec707a ipv4_specific +EXPORT_SYMBOL vmlinux 0x82ef3393 audit_log +EXPORT_SYMBOL vmlinux 0x83020079 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x831d6550 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x8326d32c kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x834626db skb_unlink +EXPORT_SYMBOL vmlinux 0x83483701 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x838e878b dump_align +EXPORT_SYMBOL vmlinux 0x839021b6 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83ba9228 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83fed5c9 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x83ff8729 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x84055b0f __sb_start_write +EXPORT_SYMBOL vmlinux 0x841fd4df dev_get_by_name +EXPORT_SYMBOL vmlinux 0x84322323 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x8449ecdf xfrm_register_type +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x84572972 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x8461dd44 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x84707fdf xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x8475060b raw3270_request_add_data +EXPORT_SYMBOL vmlinux 0x847765e9 __crc32c_le +EXPORT_SYMBOL vmlinux 0x84794d99 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x8497439d xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x8499855b cdrom_release +EXPORT_SYMBOL vmlinux 0x84dd2e48 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85076d84 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x851ccaf6 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x85212b66 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x859547b8 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x85a91676 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x85abc85f strncmp +EXPORT_SYMBOL vmlinux 0x85bafb37 proc_symlink +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860824e8 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8650ed14 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8666b444 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x867df1a3 blk_make_request +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869389c8 napi_complete_done +EXPORT_SYMBOL vmlinux 0x869bbc98 __invalidate_device +EXPORT_SYMBOL vmlinux 0x86a26b38 flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x86a84cbb bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x86c2da4f netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8700d1bc netdev_printk +EXPORT_SYMBOL vmlinux 0x8703c9dc tcf_exts_change +EXPORT_SYMBOL vmlinux 0x870e0fa6 unregister_nls +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872263ad unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x872cf476 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x872f3eed netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x8735b326 tty_do_resize +EXPORT_SYMBOL vmlinux 0x874938c3 dump_emit +EXPORT_SYMBOL vmlinux 0x874eed0b blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x87636dd9 tcw_set_tccb +EXPORT_SYMBOL vmlinux 0x87785e52 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87901835 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x87aa6bc9 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x8802c598 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x88146973 idr_destroy +EXPORT_SYMBOL vmlinux 0x8827b85b tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x8833bc7e __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x886709f7 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888847b0 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x889b3b41 dquot_get_state +EXPORT_SYMBOL vmlinux 0x88ac7f77 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x88b73873 kernel_listen +EXPORT_SYMBOL vmlinux 0x88bfd06c jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x88e888ef xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x88fa68f3 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x88fc6022 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x89129cdf security_path_chown +EXPORT_SYMBOL vmlinux 0x8914abe8 _raw_read_trylock_retry +EXPORT_SYMBOL vmlinux 0x892d90c9 eth_header_cache +EXPORT_SYMBOL vmlinux 0x89555919 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x8968c652 tty_throttle +EXPORT_SYMBOL vmlinux 0x899c20af unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x89ac914a skb_store_bits +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b97465 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x89c52761 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x89cb9f32 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x89dab345 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x89fcc950 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x89ff68fa ida_pre_get +EXPORT_SYMBOL vmlinux 0x8a02f75a mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a22dcca new_inode +EXPORT_SYMBOL vmlinux 0x8a2595a2 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x8a3c77e4 config_group_find_item +EXPORT_SYMBOL vmlinux 0x8a4bb447 d_splice_alias +EXPORT_SYMBOL vmlinux 0x8a4dbb20 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a65d530 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8ba81d param_ops_bool +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c8f0c scsi_print_sense +EXPORT_SYMBOL vmlinux 0x8abc4d05 __destroy_inode +EXPORT_SYMBOL vmlinux 0x8abc6947 setup_new_exec +EXPORT_SYMBOL vmlinux 0x8ac3f810 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x8aeabde3 pci_find_capability +EXPORT_SYMBOL vmlinux 0x8afaebe7 nla_put +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7fe311 kmemdup +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8a59e7 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8b8e1526 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x8b957622 add_virt_timer +EXPORT_SYMBOL vmlinux 0x8bcfeea2 __seq_open_private +EXPORT_SYMBOL vmlinux 0x8c178938 filemap_flush +EXPORT_SYMBOL vmlinux 0x8c351f88 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x8c3ada94 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c999c5f kthread_bind +EXPORT_SYMBOL vmlinux 0x8c9b401c kobject_del +EXPORT_SYMBOL vmlinux 0x8cb73429 kobject_init +EXPORT_SYMBOL vmlinux 0x8cd85912 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x8cde76f3 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x8cdefaae skb_free_datagram +EXPORT_SYMBOL vmlinux 0x8ce6507a udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x8cfc66ce up_write +EXPORT_SYMBOL vmlinux 0x8d25364f add_disk +EXPORT_SYMBOL vmlinux 0x8d269208 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8d2bcdeb bio_unmap_user +EXPORT_SYMBOL vmlinux 0x8d2fbbd8 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8d38f228 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x8d3bcc71 clear_inode +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5cbd3e default_file_splice_read +EXPORT_SYMBOL vmlinux 0x8d6268f5 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d74979b dentry_unhash +EXPORT_SYMBOL vmlinux 0x8d99b1a6 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x8d9fb077 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x8dd69c5c __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x8ddfc2e5 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8deccd64 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x8e022d8d bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8e240d3b audit_log_start +EXPORT_SYMBOL vmlinux 0x8e2dba25 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x8e2febb1 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x8e32f0b3 kernel_accept +EXPORT_SYMBOL vmlinux 0x8e3a28c5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x8e50f933 seq_path +EXPORT_SYMBOL vmlinux 0x8e74e192 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x8e758803 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x8e76e736 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x8e7f9c16 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x8e879bb7 __vmalloc +EXPORT_SYMBOL vmlinux 0x8eb27bfa dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x8ec6b20a nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x8efd1e35 dq_data_lock +EXPORT_SYMBOL vmlinux 0x8f004e63 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x8f479a90 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8f4a241a scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x8f636d23 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x8fac9c12 register_filesystem +EXPORT_SYMBOL vmlinux 0x8fc4cf55 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x8fc9bb90 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x8fcb710b xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x8fe225b6 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x8fe4159b may_umount +EXPORT_SYMBOL vmlinux 0x8feaa044 dput +EXPORT_SYMBOL vmlinux 0x8ff9434c vfs_readv +EXPORT_SYMBOL vmlinux 0x9059588d ip6_route_output +EXPORT_SYMBOL vmlinux 0x90a698e8 set_blocksize +EXPORT_SYMBOL vmlinux 0x90b8e37f udp_seq_open +EXPORT_SYMBOL vmlinux 0x90c829a7 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x90c86537 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x90cca9a4 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x90e5bdd4 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x90fd87c7 register_console +EXPORT_SYMBOL vmlinux 0x9116765c __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9116b417 save_fpu_regs +EXPORT_SYMBOL vmlinux 0x912518e8 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x913ee7cd __frontswap_store +EXPORT_SYMBOL vmlinux 0x9142774b eth_change_mtu +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915c871d blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9187d389 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x9189cc8e bdi_init +EXPORT_SYMBOL vmlinux 0x91a40577 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x91e6b4eb nvm_submit_ppa +EXPORT_SYMBOL vmlinux 0x91f7a7f2 __get_hash_from_flowi4 +EXPORT_SYMBOL vmlinux 0x9214721b d_alloc +EXPORT_SYMBOL vmlinux 0x9214bcff pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x92392cd9 iov_shorten +EXPORT_SYMBOL vmlinux 0x923b5cfe audit_log_task_info +EXPORT_SYMBOL vmlinux 0x924b93fb tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x9254fb50 pci_release_regions +EXPORT_SYMBOL vmlinux 0x9256aea6 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x9280dc75 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9282fca3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x92a2ae73 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bba4c0 udp_disconnect +EXPORT_SYMBOL vmlinux 0x92fe6ff2 lg_global_lock +EXPORT_SYMBOL vmlinux 0x92ff5cce simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x9330a7df loop_register_transfer +EXPORT_SYMBOL vmlinux 0x93335a78 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x93495d32 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x935861e2 rtnl_notify +EXPORT_SYMBOL vmlinux 0x9365f526 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937d20df tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x938302df tty_set_operations +EXPORT_SYMBOL vmlinux 0x938727fa bdget_disk +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b4cb70 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x93e9d3b4 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x93f815de dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940e6b00 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x945775a5 segment_save +EXPORT_SYMBOL vmlinux 0x948acf2a tc_classify +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949c5c0b vfs_writef +EXPORT_SYMBOL vmlinux 0x94b8ad07 proc_mkdir +EXPORT_SYMBOL vmlinux 0x94b94f9b flush_signals +EXPORT_SYMBOL vmlinux 0x94dbcbc8 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x94de172a devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x94f48cb7 dev_close +EXPORT_SYMBOL vmlinux 0x950e56ce blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x95219742 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x9525ba8c tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x952dc7d9 raw3270_request_set_cmd +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95485853 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x955d21fe open_exec +EXPORT_SYMBOL vmlinux 0x9565f758 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x9581ea62 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0x959bc934 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x95b32aa7 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x95ceb864 key_update +EXPORT_SYMBOL vmlinux 0x95ed195b debug_sprintf_view +EXPORT_SYMBOL vmlinux 0x960e90c9 kfree_put_link +EXPORT_SYMBOL vmlinux 0x961ac065 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x962107ec __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x9631c6a2 dqput +EXPORT_SYMBOL vmlinux 0x963b5583 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x96404e39 itcw_set_data +EXPORT_SYMBOL vmlinux 0x964ada0b pci_dev_get +EXPORT_SYMBOL vmlinux 0x965a783f dump_page +EXPORT_SYMBOL vmlinux 0x9665dbb6 ccw_device_tm_start_timeout +EXPORT_SYMBOL vmlinux 0x9669ecc8 monotonic_clock +EXPORT_SYMBOL vmlinux 0x966a96e2 mapping_tagged +EXPORT_SYMBOL vmlinux 0x966e5bfa mpage_readpage +EXPORT_SYMBOL vmlinux 0x966eedab ccw_device_clear_options +EXPORT_SYMBOL vmlinux 0x969e40ae configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ce0906 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x96e3bbd5 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9705646a __kfree_skb +EXPORT_SYMBOL vmlinux 0x9713edae clocksource_unregister +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97676fc4 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x9773e8fb eth_validate_addr +EXPORT_SYMBOL vmlinux 0x977a194d __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x9782345a bdi_register_dev +EXPORT_SYMBOL vmlinux 0x9783f50d elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x97c0cc20 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x97de0e9d blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x97e0215e d_drop +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980e13b1 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x9831e9e4 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x98536c87 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9878d3b9 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x988428c3 page_readlink +EXPORT_SYMBOL vmlinux 0x98849e3d __ip_dev_find +EXPORT_SYMBOL vmlinux 0x988651b9 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98c98a0e blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x98df96f0 tty_register_driver +EXPORT_SYMBOL vmlinux 0x9900de29 find_vma +EXPORT_SYMBOL vmlinux 0x990c34dd _raw_write_lock_wait +EXPORT_SYMBOL vmlinux 0x99254c34 ccw_device_set_options +EXPORT_SYMBOL vmlinux 0x9942ec77 itcw_finalize +EXPORT_SYMBOL vmlinux 0x994f31e3 inet_add_offload +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996cdf74 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x997823ae register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x997e7609 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x99898611 sync_filesystem +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a02163 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x99c7e5c7 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99dcc076 set_bh_page +EXPORT_SYMBOL vmlinux 0x99e8090b d_instantiate +EXPORT_SYMBOL vmlinux 0x99eb1efa iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x9a03fe68 kern_unmount +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a292b07 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x9a3cc555 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x9a3ed9e3 dev_emerg +EXPORT_SYMBOL vmlinux 0x9a5d1152 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x9a906daf memscan +EXPORT_SYMBOL vmlinux 0x9a90c45a nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x9aabc564 crc16 +EXPORT_SYMBOL vmlinux 0x9acc04db blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x9b1d954b unlock_new_inode +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b44197c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x9b565cb7 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x9b6ccd11 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x9b79b23e clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x9b7c66f0 xfrm_input +EXPORT_SYMBOL vmlinux 0x9b8d07aa strnlen +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c2f73e1 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x9c32bec9 iucv_unregister +EXPORT_SYMBOL vmlinux 0x9c35db19 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4f3c11 nobh_write_end +EXPORT_SYMBOL vmlinux 0x9c51cc22 ping_prot +EXPORT_SYMBOL vmlinux 0x9c56e048 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x9c65fde8 end_page_writeback +EXPORT_SYMBOL vmlinux 0x9c742a69 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x9c7ea758 dql_init +EXPORT_SYMBOL vmlinux 0x9c91305a tcp_read_sock +EXPORT_SYMBOL vmlinux 0x9ca95a0e sort +EXPORT_SYMBOL vmlinux 0x9cbf391b xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x9cc268d4 raw3270_wait_queue +EXPORT_SYMBOL vmlinux 0x9cc950c0 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x9d004d8a blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d215b8e scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d65d6 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x9d40360c sock_recvmsg +EXPORT_SYMBOL vmlinux 0x9d460e7f truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x9da978e2 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9db4571b __get_user_pages +EXPORT_SYMBOL vmlinux 0x9db529de udp_proc_register +EXPORT_SYMBOL vmlinux 0x9db73624 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x9db92bca skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9db93f9a set_disk_ro +EXPORT_SYMBOL vmlinux 0x9ddc19dd blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x9def75cf devm_free_irq +EXPORT_SYMBOL vmlinux 0x9df05aa7 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x9df253ee debug_unregister_view +EXPORT_SYMBOL vmlinux 0x9df987bc xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x9e0068ab s390_epoch_delta_notifier +EXPORT_SYMBOL vmlinux 0x9e0199b6 sock_create +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2e82ed pci_bus_type +EXPORT_SYMBOL vmlinux 0x9e3734c9 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e723991 debug_raw_view +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e88e62e dev_alert +EXPORT_SYMBOL vmlinux 0x9e93eddf rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eb0e2be tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x9eb33f10 may_umount_tree +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9efd60f8 done_path_create +EXPORT_SYMBOL vmlinux 0x9f1e5b6c __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x9f3623f6 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x9f371913 tso_start +EXPORT_SYMBOL vmlinux 0x9f3da225 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4b0eeb dqget +EXPORT_SYMBOL vmlinux 0x9f579ee2 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x9f7b83aa napi_gro_receive +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fd6657d netif_carrier_on +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdac5ab xfrm_register_km +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fef9bd6 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa002da6f cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa00c72f8 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xa015b4a0 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa02252b7 bio_endio +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05eb875 sclp +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa09c113e inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0d3d560 ksize +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ecb952 dm_io +EXPORT_SYMBOL vmlinux 0xa0f4ec4b nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa100bdf7 mempool_alloc +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa114606a blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xa11e2d0f pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xa120187c jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa133d817 block_write_full_page +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14bceb0 __tracepoint_s390_diagnose +EXPORT_SYMBOL vmlinux 0xa173ec2f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xa19065ea down_timeout +EXPORT_SYMBOL vmlinux 0xa1a878f3 dquot_file_open +EXPORT_SYMBOL vmlinux 0xa1ab1997 would_dump +EXPORT_SYMBOL vmlinux 0xa1bfe8e3 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d5979b find_first_bit_inv +EXPORT_SYMBOL vmlinux 0xa1ec47a9 skb_push +EXPORT_SYMBOL vmlinux 0xa1ec8f1c __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa1f929ab scsi_print_result +EXPORT_SYMBOL vmlinux 0xa1f9f5b4 iucv_if +EXPORT_SYMBOL vmlinux 0xa202e68d sk_dst_check +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa221e1fd page_follow_link_light +EXPORT_SYMBOL vmlinux 0xa23ae36a pci_set_mwi +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2b19577 path_noexec +EXPORT_SYMBOL vmlinux 0xa2ba5d70 init_buffer +EXPORT_SYMBOL vmlinux 0xa2ccd62a blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xa2f1e649 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xa310a706 __iucv_message_receive +EXPORT_SYMBOL vmlinux 0xa3183829 netdev_state_change +EXPORT_SYMBOL vmlinux 0xa33f7c7c nla_strlcpy +EXPORT_SYMBOL vmlinux 0xa3499cb8 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3a1d874 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xa3b6dc2c inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa430d1b4 elevator_exit +EXPORT_SYMBOL vmlinux 0xa44b520a __scsi_format_command +EXPORT_SYMBOL vmlinux 0xa44cebae tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xa44fd431 __scm_destroy +EXPORT_SYMBOL vmlinux 0xa46d4e12 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa474310e set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xa490b3c8 sock_release +EXPORT_SYMBOL vmlinux 0xa49f18f8 __vfs_write +EXPORT_SYMBOL vmlinux 0xa4a059b5 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xa4a5636b sock_kfree_s +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4bca2d1 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xa4bf6a26 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xa4c11834 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xa4c41694 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xa4c5d407 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xa4df6195 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xa4e188e7 strscpy +EXPORT_SYMBOL vmlinux 0xa4f55075 iucv_message_send +EXPORT_SYMBOL vmlinux 0xa4fea538 kbd_ioctl +EXPORT_SYMBOL vmlinux 0xa51e8728 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xa525924f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xa54416d7 devm_memunmap +EXPORT_SYMBOL vmlinux 0xa54f1d7f sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa558a7f8 skb_pull +EXPORT_SYMBOL vmlinux 0xa55f154b __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xa561bc36 get_disk +EXPORT_SYMBOL vmlinux 0xa56f5568 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xa588d44c pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xa59cb687 iucv_path_quiesce +EXPORT_SYMBOL vmlinux 0xa59dc17c vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xa5c2c835 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xa5cd9c64 igrab +EXPORT_SYMBOL vmlinux 0xa5df6f78 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xa5f99397 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xa606911a set_create_files_as +EXPORT_SYMBOL vmlinux 0xa62623b8 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xa6495f4b generic_read_dir +EXPORT_SYMBOL vmlinux 0xa6550778 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa677eca0 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68e92a4 user_revoke +EXPORT_SYMBOL vmlinux 0xa6bf6f42 netdev_notice +EXPORT_SYMBOL vmlinux 0xa6c0c642 follow_down_one +EXPORT_SYMBOL vmlinux 0xa6ce0b45 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xa6df0d0b padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xa6e28383 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xa6ea8e3c seq_open_private +EXPORT_SYMBOL vmlinux 0xa6fdecc2 arp_send +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74329b0 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa74c6833 unregister_key_type +EXPORT_SYMBOL vmlinux 0xa74e05b5 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xa75727ac jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xa762432f prepare_binprm +EXPORT_SYMBOL vmlinux 0xa762e64f simple_fill_super +EXPORT_SYMBOL vmlinux 0xa76ebf1f blk_rq_init +EXPORT_SYMBOL vmlinux 0xa792fa15 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xa7b7b4fb devm_iounmap +EXPORT_SYMBOL vmlinux 0xa7bfa454 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xa7d5d8e4 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xa7d63ce2 perf_reserve_sampling +EXPORT_SYMBOL vmlinux 0xa7d81efd __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xa7e2fd5c tty_port_destroy +EXPORT_SYMBOL vmlinux 0xa7e37c3a pci_get_class +EXPORT_SYMBOL vmlinux 0xa7edb86b kill_litter_super +EXPORT_SYMBOL vmlinux 0xa8033cd3 dm_get_device +EXPORT_SYMBOL vmlinux 0xa8079161 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83e3116 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa886a958 krealloc +EXPORT_SYMBOL vmlinux 0xa8899797 tcp_prot +EXPORT_SYMBOL vmlinux 0xa88ca32a security_mmap_file +EXPORT_SYMBOL vmlinux 0xa88cfd2f tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xa89176fd __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xa8982f88 search_binary_handler +EXPORT_SYMBOL vmlinux 0xa89ad718 filp_open +EXPORT_SYMBOL vmlinux 0xa8a16cad fs_bio_set +EXPORT_SYMBOL vmlinux 0xa8aeb6af md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xa8d5bd9f scm_fp_dup +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa904e908 xattr_full_name +EXPORT_SYMBOL vmlinux 0xa909a4b4 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91caa62 elv_rb_find +EXPORT_SYMBOL vmlinux 0xa9220a25 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa93f5d17 ida_remove +EXPORT_SYMBOL vmlinux 0xa948005e locks_remove_posix +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa985a5c4 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xa9909568 d_lookup +EXPORT_SYMBOL vmlinux 0xa9ac7bee revert_creds +EXPORT_SYMBOL vmlinux 0xa9b8f8f6 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xa9c447c9 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9ccb762 neigh_xmit +EXPORT_SYMBOL vmlinux 0xa9d916be __find_get_block +EXPORT_SYMBOL vmlinux 0xaa1c5cdc sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xaa277eaf vfs_writev +EXPORT_SYMBOL vmlinux 0xaa44eaf1 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xaa5f2402 block_commit_write +EXPORT_SYMBOL vmlinux 0xaa69047c key_invalidate +EXPORT_SYMBOL vmlinux 0xaa744bbe tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xaa7a546b brioctl_set +EXPORT_SYMBOL vmlinux 0xaa8e8c26 md_update_sb +EXPORT_SYMBOL vmlinux 0xaaae2a3a debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xaabe6704 airq_iv_free +EXPORT_SYMBOL vmlinux 0xaacefb80 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaafc5d90 sk_alloc +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe909c inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xab14ac0a gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xab338ab5 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab863d8b netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xab9e7cd6 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xabb4a0fc blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xabbc60f6 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xabbead40 vfs_setpos +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe03153 __neigh_create +EXPORT_SYMBOL vmlinux 0xabeb46ce qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xabf6c5b9 file_update_time +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac70b0fa vm_stat +EXPORT_SYMBOL vmlinux 0xac75519f mount_single +EXPORT_SYMBOL vmlinux 0xac801d41 touch_buffer +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb9711c vmap +EXPORT_SYMBOL vmlinux 0xacbc5e3d __dquot_free_space +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd0adb2 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13d017 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xad16100a dquot_scan_active +EXPORT_SYMBOL vmlinux 0xad1f7310 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xad21c3cc elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xad227f04 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xad2b6201 devm_request_resource +EXPORT_SYMBOL vmlinux 0xad4707c2 d_set_d_op +EXPORT_SYMBOL vmlinux 0xad4aee39 strncpy +EXPORT_SYMBOL vmlinux 0xad4cd138 perf_release_sampling +EXPORT_SYMBOL vmlinux 0xad70b4de km_report +EXPORT_SYMBOL vmlinux 0xad819f2a ilookup +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8e421f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xad993241 module_layout +EXPORT_SYMBOL vmlinux 0xada35dad register_gifconf +EXPORT_SYMBOL vmlinux 0xadc7524c iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xadcc06cf __lock_page +EXPORT_SYMBOL vmlinux 0xadeb6472 param_get_int +EXPORT_SYMBOL vmlinux 0xadf800d5 pci_bus_put +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae02a678 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xae138caf dev_addr_add +EXPORT_SYMBOL vmlinux 0xae3be23d tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xae4ee468 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xae71b5b2 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xae83c0de sock_edemux +EXPORT_SYMBOL vmlinux 0xae9793c9 generic_write_checks +EXPORT_SYMBOL vmlinux 0xae9f5a7e bitmap_unplug +EXPORT_SYMBOL vmlinux 0xaeb1d6f3 kobject_put +EXPORT_SYMBOL vmlinux 0xaeb533c8 empty_aops +EXPORT_SYMBOL vmlinux 0xaebca5b6 mutex_lock +EXPORT_SYMBOL vmlinux 0xaee2a114 block_write_end +EXPORT_SYMBOL vmlinux 0xaf0382f9 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xaf060159 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xaf08e8fe vprintk_emit +EXPORT_SYMBOL vmlinux 0xaf1495b4 __register_binfmt +EXPORT_SYMBOL vmlinux 0xaf1e9549 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3ec7d5 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xaf6ce44c zero_fill_bio +EXPORT_SYMBOL vmlinux 0xaf8b72a7 fget +EXPORT_SYMBOL vmlinux 0xaf8fc818 vfs_read +EXPORT_SYMBOL vmlinux 0xafa2824b kill_anon_super +EXPORT_SYMBOL vmlinux 0xafe82e10 strcspn +EXPORT_SYMBOL vmlinux 0xaff22e4c nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb0415525 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0688586 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb069a01b downgrade_write +EXPORT_SYMBOL vmlinux 0xb0b361f0 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xb0b4d158 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xb0bdb088 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xb0c5e893 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb0d19f4c sock_no_mmap +EXPORT_SYMBOL vmlinux 0xb0ddc373 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e19c36 vfs_link +EXPORT_SYMBOL vmlinux 0xb10921f9 __kernel_write +EXPORT_SYMBOL vmlinux 0xb109728f poll_initwait +EXPORT_SYMBOL vmlinux 0xb1267f0e netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb14bb331 blk_queue_split +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb162e214 dev_change_flags +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb167b8fe __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xb172a2df iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xb1896715 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xb1acb6ec misc_register +EXPORT_SYMBOL vmlinux 0xb1b9821b submit_bh +EXPORT_SYMBOL vmlinux 0xb1be2454 inet_release +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1d84687 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xb1e60957 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xb1f3a80b __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb1f50585 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xb1f7f945 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xb201594f qdisc_reset +EXPORT_SYMBOL vmlinux 0xb20684fe pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xb25611df sock_rfree +EXPORT_SYMBOL vmlinux 0xb259febc tty_port_put +EXPORT_SYMBOL vmlinux 0xb25e65aa cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xb267c4f3 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb27fb586 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xb296e215 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xb2ae8eba config_item_put +EXPORT_SYMBOL vmlinux 0xb2b0d772 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0xb2bb5933 airq_iv_scan +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c07973 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xb2ceec4c dst_release +EXPORT_SYMBOL vmlinux 0xb2e21704 cdev_init +EXPORT_SYMBOL vmlinux 0xb2fb0f2f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb32e3a0d peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xb32eb118 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xb33fa69e devm_ioremap +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb3547022 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb357a9c6 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb359809e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xb372c426 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xb3782346 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xb3b17d42 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xb3b967a1 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fd1795 tso_build_data +EXPORT_SYMBOL vmlinux 0xb3ff1f69 free_pages_exact +EXPORT_SYMBOL vmlinux 0xb41fc72b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4b32256 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xb4ba43d3 dev_uc_del +EXPORT_SYMBOL vmlinux 0xb4bbb41c sock_register +EXPORT_SYMBOL vmlinux 0xb4d0fe1d pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xb50b7592 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xb54288d5 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57b02b6 seq_lseek +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5baf843 tod_to_timeval +EXPORT_SYMBOL vmlinux 0xb5be7e03 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xb5d2510e __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xb5d3a7d4 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xb5d4590f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xb5fc3226 md_error +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64ef106 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xb6638d25 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb691c682 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb697b5d0 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7044d sock_efree +EXPORT_SYMBOL vmlinux 0xb6c30aa6 skb_trim +EXPORT_SYMBOL vmlinux 0xb6cff705 iucv_path_sever +EXPORT_SYMBOL vmlinux 0xb6d73e7a register_service_level +EXPORT_SYMBOL vmlinux 0xb6d76547 proc_dointvec +EXPORT_SYMBOL vmlinux 0xb6dd6bf8 free_user_ns +EXPORT_SYMBOL vmlinux 0xb6e8a4f5 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb7149036 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xb72ced83 bio_copy_data +EXPORT_SYMBOL vmlinux 0xb731993f __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb75c677a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xb7707055 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb772c5bc scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xb7780a5e __pci_register_driver +EXPORT_SYMBOL vmlinux 0xb7899c6e mempool_free +EXPORT_SYMBOL vmlinux 0xb79a3bc5 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xb7b0e436 blk_run_queue +EXPORT_SYMBOL vmlinux 0xb7b3b631 save_mount_options +EXPORT_SYMBOL vmlinux 0xb7efbc5a keyring_alloc +EXPORT_SYMBOL vmlinux 0xb82bebe6 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xb82e1f7d pneigh_lookup +EXPORT_SYMBOL vmlinux 0xb8445bf1 tty_lock +EXPORT_SYMBOL vmlinux 0xb86ae433 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8825a52 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb89da04d ccw_device_tm_start_timeout_key +EXPORT_SYMBOL vmlinux 0xb8aacc16 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xb8b5c0b6 scsi_host_put +EXPORT_SYMBOL vmlinux 0xb8b77467 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb8d8d5b6 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb8e94bf8 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xb8f8650c component_match_add +EXPORT_SYMBOL vmlinux 0xb901e970 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xb915ceca itcw_init +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb928aa45 netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xb95ae994 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb95f58f9 dcb_getapp +EXPORT_SYMBOL vmlinux 0xb96a7b02 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xb9a78b62 raw3270_find_view +EXPORT_SYMBOL vmlinux 0xb9c9cb7e __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xb9de6387 netdev_alert +EXPORT_SYMBOL vmlinux 0xb9e5683d iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f2d51f dev_deactivate +EXPORT_SYMBOL vmlinux 0xb9fd924f sock_no_poll +EXPORT_SYMBOL vmlinux 0xba3b73f4 unregister_service_level +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4cfd8b scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xba6f8534 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xba847acd xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xbaa2299f xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xbaa2782a kstrndup +EXPORT_SYMBOL vmlinux 0xbb03221b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb2bfe98 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xbb2e1cb7 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5061a8 tso_count_descs +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb8e8428 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xbb9d0dc5 bin2hex +EXPORT_SYMBOL vmlinux 0xbba5baaa bdevname +EXPORT_SYMBOL vmlinux 0xbbaabba5 seq_dentry +EXPORT_SYMBOL vmlinux 0xbbb9c4d8 sync_inode +EXPORT_SYMBOL vmlinux 0xbbcd48a9 scsi_execute +EXPORT_SYMBOL vmlinux 0xbbd0e880 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xbbebddd5 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xbc1028d7 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xbc2d2b4a __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xbc442aaa config_group_init_type_name +EXPORT_SYMBOL vmlinux 0xbc80f84a blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xbcb87d13 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xbcd72400 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xbcd8da78 rt6_lookup +EXPORT_SYMBOL vmlinux 0xbce75964 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd13bab2 __nla_reserve +EXPORT_SYMBOL vmlinux 0xbd3b3512 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xbd3b6589 file_open_root +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda889a3 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbdb42127 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xbdede4e8 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xbdf116c4 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xbdfb851f ___ratelimit +EXPORT_SYMBOL vmlinux 0xbe03d6a9 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xbe1221b4 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe7cdded contig_page_data +EXPORT_SYMBOL vmlinux 0xbe88d7dd filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xbe932745 sock_create_kern +EXPORT_SYMBOL vmlinux 0xbe942450 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xbea5c34b _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xbeb5d9f8 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xbeb8688f d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xbec6ab22 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xbece6061 bio_put +EXPORT_SYMBOL vmlinux 0xbee4e01b md_finish_reshape +EXPORT_SYMBOL vmlinux 0xbee75c9d simple_unlink +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefae3e7 lease_modify +EXPORT_SYMBOL vmlinux 0xbf016db7 find_get_entry +EXPORT_SYMBOL vmlinux 0xbf08539e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xbf3ea723 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xbf40839c param_ops_charp +EXPORT_SYMBOL vmlinux 0xbf6e4593 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xbf73c8ed vfs_create +EXPORT_SYMBOL vmlinux 0xbf795f91 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf93dacf scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xbf97d8be block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfac6857 kobject_set_name +EXPORT_SYMBOL vmlinux 0xbfbed028 skb_queue_head +EXPORT_SYMBOL vmlinux 0xbfde33ca inc_nlink +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0016281 seq_puts +EXPORT_SYMBOL vmlinux 0xc003c637 __strncpy_from_user +EXPORT_SYMBOL vmlinux 0xc01a2154 raw3270_request_reset +EXPORT_SYMBOL vmlinux 0xc028bbc1 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc0677fe5 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xc0680599 seq_putc +EXPORT_SYMBOL vmlinux 0xc0755395 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0e60b7e sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xc0fd73e9 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xc1085271 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc13d5cca tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xc142f3d5 blk_register_region +EXPORT_SYMBOL vmlinux 0xc154a3ae xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xc160c23f netif_device_attach +EXPORT_SYMBOL vmlinux 0xc175b849 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xc19c617a __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc1a54486 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xc1b6cc00 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xc1d343ee qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1dc1948 mpage_readpages +EXPORT_SYMBOL vmlinux 0xc1df2203 tty_port_init +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ed98ff kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xc212f2ab prandom_bytes +EXPORT_SYMBOL vmlinux 0xc217aaac scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xc2289896 down_read +EXPORT_SYMBOL vmlinux 0xc2499f16 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc2692524 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xc281907e iucv_message_reply +EXPORT_SYMBOL vmlinux 0xc28b5398 read_code +EXPORT_SYMBOL vmlinux 0xc28c8530 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xc29f2d22 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xc2a538be noop_llseek +EXPORT_SYMBOL vmlinux 0xc2a7502f security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc2b3f0cd param_array_ops +EXPORT_SYMBOL vmlinux 0xc2b54cac skb_insert +EXPORT_SYMBOL vmlinux 0xc2b89d13 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc2c8cb3e compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc3209bce copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xc37ba48a napi_gro_frags +EXPORT_SYMBOL vmlinux 0xc3839045 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL vmlinux 0xc39cc45d configfs_register_default_group +EXPORT_SYMBOL vmlinux 0xc3db3f30 lwtunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xc3e999f5 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xc3fa52aa scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xc3fb125c sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xc4134c0d netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xc4363748 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xc44e4139 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc465ce1c put_cmsg +EXPORT_SYMBOL vmlinux 0xc47faf61 genlmsg_put +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a64953 param_get_byte +EXPORT_SYMBOL vmlinux 0xc4b836ce request_firmware +EXPORT_SYMBOL vmlinux 0xc4e67928 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xc4ef6c0f vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xc4fb6397 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xc537e8c4 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xc549886e textsearch_unregister +EXPORT_SYMBOL vmlinux 0xc5865a07 tty_mutex +EXPORT_SYMBOL vmlinux 0xc592ddee blk_put_queue +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59ddf50 scsi_init_io +EXPORT_SYMBOL vmlinux 0xc5a32711 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xc5a81997 security_path_link +EXPORT_SYMBOL vmlinux 0xc5ad93b8 sie_exit +EXPORT_SYMBOL vmlinux 0xc5d70c2d iterate_fd +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60f00b3 make_kuid +EXPORT_SYMBOL vmlinux 0xc622ea97 stsi +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64dee1d tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xc65782ad abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xc65f08b7 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xc661a72a finish_no_open +EXPORT_SYMBOL vmlinux 0xc66962a4 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc698e97e dquot_disable +EXPORT_SYMBOL vmlinux 0xc69a89cb have_submounts +EXPORT_SYMBOL vmlinux 0xc6a236f9 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xc6af5ddc page_symlink +EXPORT_SYMBOL vmlinux 0xc6bc6a42 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xc6c274ff fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6fa03b4 tcf_register_action +EXPORT_SYMBOL vmlinux 0xc70d3af3 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xc732f40a dev_notice +EXPORT_SYMBOL vmlinux 0xc7550bad km_state_notify +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7872872 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a1d5b8 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xc7a24d76 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a77581 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xc7c00560 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xc7cfd3f4 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xc7cffaf9 scsi_host_get +EXPORT_SYMBOL vmlinux 0xc8304388 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85cb104 __f_setown +EXPORT_SYMBOL vmlinux 0xc863f0e3 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc8651e9a __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc86a6174 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88e08b8 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c54c41 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc8d57121 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xc8df9364 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc8ebe5a3 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xc9061c4d __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xc90a883c get_guest_storage_key +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc922ba7e generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xc94195ac tty_port_hangup +EXPORT_SYMBOL vmlinux 0xc9438e67 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xc95439f8 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xc960e806 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9872f7e netdev_warn +EXPORT_SYMBOL vmlinux 0xc98ab973 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xc98c6560 fput +EXPORT_SYMBOL vmlinux 0xc98db9d5 dget_parent +EXPORT_SYMBOL vmlinux 0xc99f01bb neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc9ee4851 request_key +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca140817 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xca1961a0 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xca4219e7 padata_start +EXPORT_SYMBOL vmlinux 0xca4481ec nvm_free_rqd_ppalist +EXPORT_SYMBOL vmlinux 0xca4b94b1 generic_listxattr +EXPORT_SYMBOL vmlinux 0xca4c923d vscnprintf +EXPORT_SYMBOL vmlinux 0xca63a1f5 inode_set_flags +EXPORT_SYMBOL vmlinux 0xca6abb00 init_task +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcab09f55 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb2e0a28 padata_free +EXPORT_SYMBOL vmlinux 0xcb3cccff key_type_keyring +EXPORT_SYMBOL vmlinux 0xcb7e4c03 vfs_fsync +EXPORT_SYMBOL vmlinux 0xcba6a714 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xcba74c86 generic_update_time +EXPORT_SYMBOL vmlinux 0xcbb889fb nvm_erase_ppa +EXPORT_SYMBOL vmlinux 0xcbbe2171 tty_register_device +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbc98e1e dquot_commit +EXPORT_SYMBOL vmlinux 0xcbe92da2 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xcbf2e135 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xcbf54075 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xcc31324f fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc511c1d sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xcc5ce3b7 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xcc7b0f7b inetdev_by_index +EXPORT_SYMBOL vmlinux 0xcc8ef847 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xcca94125 kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0xccce9a8c load_nls_default +EXPORT_SYMBOL vmlinux 0xccd92f7f cdev_add +EXPORT_SYMBOL vmlinux 0xccecbb89 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xccffbbcb nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xcd12dbb9 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd32468a __break_lease +EXPORT_SYMBOL vmlinux 0xcd3fd106 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xcd568459 pci_restore_state +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd816cf6 arch_spin_lock_wait +EXPORT_SYMBOL vmlinux 0xcd85f33d ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xcd8712a5 dm_register_target +EXPORT_SYMBOL vmlinux 0xcd8c4cf3 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xcd96dd7b proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xcdb9a6e4 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdca7d60 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xcdd59757 param_set_byte +EXPORT_SYMBOL vmlinux 0xcdf7484b proc_dostring +EXPORT_SYMBOL vmlinux 0xce00336a panic_notifier_list +EXPORT_SYMBOL vmlinux 0xce0dd89b netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xce2365e8 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce43b841 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xce46ce87 iget5_locked +EXPORT_SYMBOL vmlinux 0xce493ff6 __page_symlink +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6a2557 sock_i_uid +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb1b8d2 proc_set_user +EXPORT_SYMBOL vmlinux 0xceb52386 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xcec3a908 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xcedf0886 cpu_relax +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcf14f8cd iucv_message_purge +EXPORT_SYMBOL vmlinux 0xcf2817d5 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcf32e0ec __sb_end_write +EXPORT_SYMBOL vmlinux 0xcf36d894 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xcf3afb0e __dax_fault +EXPORT_SYMBOL vmlinux 0xcf42b310 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xcf647075 release_firmware +EXPORT_SYMBOL vmlinux 0xcfb304df tcp_poll +EXPORT_SYMBOL vmlinux 0xcfbda0bc scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xcfe379d5 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xcfeae122 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd0128555 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xd0447b21 release_sock +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07565d4 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a8bae7 inet_ioctl +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0aed3ec skb_pad +EXPORT_SYMBOL vmlinux 0xd0c87272 proto_register +EXPORT_SYMBOL vmlinux 0xd0ea8a39 tty_check_change +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0ef89b1 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd1392c98 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xd1496d15 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xd17c35ae lock_sock_nested +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd181e0ff try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd199d498 tcw_init +EXPORT_SYMBOL vmlinux 0xd19f13f7 del_virt_timer +EXPORT_SYMBOL vmlinux 0xd1d5616b padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1ddb3fd sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd1e6fac7 blk_init_queue +EXPORT_SYMBOL vmlinux 0xd1e9e6af gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xd1f152ad kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0xd1fb3ac6 lwtunnel_output +EXPORT_SYMBOL vmlinux 0xd201b440 __alloc_skb +EXPORT_SYMBOL vmlinux 0xd2071ce3 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xd21a2ac7 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd227fb12 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd229169b dev_mc_init +EXPORT_SYMBOL vmlinux 0xd22d82e3 dev_uc_add +EXPORT_SYMBOL vmlinux 0xd2427736 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2539597 nvm_register +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25561b5 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xd2566b46 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28a3893 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xd2943878 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xd2ba27d2 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd2d3419a elv_register_queue +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e0bb73 sie64a +EXPORT_SYMBOL vmlinux 0xd2e431d8 simple_lookup +EXPORT_SYMBOL vmlinux 0xd301a5c2 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xd31233d6 inet_del_offload +EXPORT_SYMBOL vmlinux 0xd31c393b iucv_path_accept +EXPORT_SYMBOL vmlinux 0xd321d9a1 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd364b8d7 mem_map +EXPORT_SYMBOL vmlinux 0xd39389a7 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xd39895f1 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xd3af979c memdup_user +EXPORT_SYMBOL vmlinux 0xd3b23f01 ccw_device_is_multipath +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3fa7f10 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xd40e6b4e irq_set_chip +EXPORT_SYMBOL vmlinux 0xd4254a32 dev_set_group +EXPORT_SYMBOL vmlinux 0xd4275a2f __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xd42ad8f8 scsi_print_command +EXPORT_SYMBOL vmlinux 0xd4458238 del_gendisk +EXPORT_SYMBOL vmlinux 0xd44c8d59 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xd453526f __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xd45cc923 abort_creds +EXPORT_SYMBOL vmlinux 0xd4652bdc wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xd468a460 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xd480ac23 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xd4913d24 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd4a65e94 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd4a75f37 __pagevec_release +EXPORT_SYMBOL vmlinux 0xd4c07a20 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xd4c1fee8 sock_create_lite +EXPORT_SYMBOL vmlinux 0xd4d7c453 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0xd53402de sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55121f5 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0xd58c7306 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd59e63ba skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xd59ee90a jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd5a518d2 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xd5b40a4c dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xd5e5bb20 freeze_bdev +EXPORT_SYMBOL vmlinux 0xd5e6e0ff jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xd5f5cd45 secpath_dup +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61c6a58 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd639e37e iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xd64437bd poll_freewait +EXPORT_SYMBOL vmlinux 0xd666a588 smp_ctl_clear_bit +EXPORT_SYMBOL vmlinux 0xd66b2fed loop_backing_file +EXPORT_SYMBOL vmlinux 0xd66b93f1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xd6799a6f generic_file_open +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69d5f17 ccw_device_start_timeout_key +EXPORT_SYMBOL vmlinux 0xd6a3f1c9 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xd6a69222 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xd6ab71d0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xd6c8048b compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6efaba0 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xd6f13b35 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xd7150c1e unlock_rename +EXPORT_SYMBOL vmlinux 0xd74b88c7 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd7799f61 key_validate +EXPORT_SYMBOL vmlinux 0xd78da580 param_ops_long +EXPORT_SYMBOL vmlinux 0xd7c56b14 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd871add6 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xd880209b get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xd8935deb xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd89c3701 __getblk_slow +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a90bfc dev_add_pack +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8c3bdf6 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f96bc4 copy_from_iter +EXPORT_SYMBOL vmlinux 0xd8fcda72 cpcmd +EXPORT_SYMBOL vmlinux 0xd901db3f tty_devnum +EXPORT_SYMBOL vmlinux 0xd9693f51 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xd96b542b pci_read_vpd +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a1e400 bio_advance +EXPORT_SYMBOL vmlinux 0xd9b3f97d console_devno +EXPORT_SYMBOL vmlinux 0xd9b75ff7 submit_bio +EXPORT_SYMBOL vmlinux 0xd9c954a4 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda12ff0c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xda167935 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xda1e39c7 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xda33c26e tcp_proc_register +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda5077ba copy_to_iter +EXPORT_SYMBOL vmlinux 0xda8b3bd7 tty_vhangup +EXPORT_SYMBOL vmlinux 0xdab704c9 path_is_under +EXPORT_SYMBOL vmlinux 0xdabcd16b kbd_alloc +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac92a1a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xdaddaa51 skb_split +EXPORT_SYMBOL vmlinux 0xdae162cb string_unescape +EXPORT_SYMBOL vmlinux 0xdae8a1dd netdev_update_features +EXPORT_SYMBOL vmlinux 0xdb16c7ae kmem_cache_size +EXPORT_SYMBOL vmlinux 0xdb185e7b __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xdb2eaed6 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb47d7a3 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xdb5b55eb sk_mc_loop +EXPORT_SYMBOL vmlinux 0xdb64be1f __iucv_message_send +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb90c1c3 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xdb977f04 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xdba14cce arch_spin_lock_wait_flags +EXPORT_SYMBOL vmlinux 0xdbc3de60 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xdbc4ec41 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xdbde7eba dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xdbfb5a29 pci_disable_device +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2af226 tty_unlock +EXPORT_SYMBOL vmlinux 0xdc32b70b register_shrinker +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4d27dd raw3270_start_irq +EXPORT_SYMBOL vmlinux 0xdc6debc9 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xdcb01e95 migrate_page +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcce9263 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xdd230c02 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xdd40b5e4 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xdd48f29b nf_log_trace +EXPORT_SYMBOL vmlinux 0xdd5b5201 init_special_inode +EXPORT_SYMBOL vmlinux 0xdd821580 dqstats +EXPORT_SYMBOL vmlinux 0xdd9121e5 vfs_readf +EXPORT_SYMBOL vmlinux 0xdda08c00 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xddb10729 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xddb4337b pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xddc5c55d dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xddca5deb devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xddec28df configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0xddf45c5f set_page_dirty +EXPORT_SYMBOL vmlinux 0xde0bdcff memset +EXPORT_SYMBOL vmlinux 0xde29ec6c scsi_block_requests +EXPORT_SYMBOL vmlinux 0xde2e4e28 security_path_unlink +EXPORT_SYMBOL vmlinux 0xde38e649 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xde48a247 mempool_create +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6aa66a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xde7138f7 __devm_release_region +EXPORT_SYMBOL vmlinux 0xde8b4f8b airq_iv_alloc +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdedfe067 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xdf2221f5 fsync_bdev +EXPORT_SYMBOL vmlinux 0xdf299b47 acl_by_type +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf593b78 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6812e7 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xdf8732bb pci_set_master +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa1155f md_cluster_mod +EXPORT_SYMBOL vmlinux 0xdfa509d0 skb_append +EXPORT_SYMBOL vmlinux 0xdfa9acca smp_cpu_mtid +EXPORT_SYMBOL vmlinux 0xdfaefae1 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xdfcc4125 do_SAK +EXPORT_SYMBOL vmlinux 0xdfda82a7 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xdff086a8 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xe0056d62 complete_request_key +EXPORT_SYMBOL vmlinux 0xe0061ff0 register_key_type +EXPORT_SYMBOL vmlinux 0xe01b7766 udplite_prot +EXPORT_SYMBOL vmlinux 0xe039b89d set_cached_acl +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0614a83 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xe06d0fc4 I_BDEV +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe0736d1c pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0764113 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xe076c638 generic_writepages +EXPORT_SYMBOL vmlinux 0xe0812a9e register_adapter_interrupt +EXPORT_SYMBOL vmlinux 0xe084c3de pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xe09eea39 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xe0a33841 proto_unregister +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bc4fb2 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xe0cef7b1 mutex_trylock +EXPORT_SYMBOL vmlinux 0xe0e49a55 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xe13040e6 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xe1323dc7 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xe133dbbd flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xe1704954 __inet_hash +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1861d26 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe19206d0 install_exec_creds +EXPORT_SYMBOL vmlinux 0xe194aa0a param_ops_int +EXPORT_SYMBOL vmlinux 0xe19523ed seq_vprintf +EXPORT_SYMBOL vmlinux 0xe1af2a79 raw3270_add_view +EXPORT_SYMBOL vmlinux 0xe1b1e114 sk_net_capable +EXPORT_SYMBOL vmlinux 0xe1b6e7ac neigh_connected_output +EXPORT_SYMBOL vmlinux 0xe1b7f28b bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe1c2f190 dev_activate +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe206c666 iput +EXPORT_SYMBOL vmlinux 0xe2114879 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2482998 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24fe7d9 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xe2541d76 get_task_io_context +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a580ba padata_do_parallel +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e75326 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fa7f55 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xe317764d jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0xe330b395 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xe33bfc0b pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xe357b049 ccw_device_set_online +EXPORT_SYMBOL vmlinux 0xe3632f6a proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xe3725f2d submit_bio_wait +EXPORT_SYMBOL vmlinux 0xe393dd88 d_path +EXPORT_SYMBOL vmlinux 0xe3baeb78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xe3cdf132 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe3dccb33 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe406cddd wake_up_process +EXPORT_SYMBOL vmlinux 0xe43f0fb3 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xe4409190 mem_section +EXPORT_SYMBOL vmlinux 0xe46786e0 pci_get_device +EXPORT_SYMBOL vmlinux 0xe467f9aa sclp_register +EXPORT_SYMBOL vmlinux 0xe479a964 dump_fpu +EXPORT_SYMBOL vmlinux 0xe4991b8f neigh_app_ns +EXPORT_SYMBOL vmlinux 0xe4a40d2f diag210 +EXPORT_SYMBOL vmlinux 0xe4ae67b9 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xe4b82008 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe4e2ac84 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe4e4d45c rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xe4eaab2e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe4eae0b1 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xe4eb0d17 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xe5094832 page_table_allocate_pgste +EXPORT_SYMBOL vmlinux 0xe51fed85 complete_all +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe525bf37 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe525fb9d ccw_device_get_ciw +EXPORT_SYMBOL vmlinux 0xe52646d8 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xe52ae1a5 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xe54036ef mempool_resize +EXPORT_SYMBOL vmlinux 0xe5415be0 nvm_addr_to_generic_mode +EXPORT_SYMBOL vmlinux 0xe567ff9f neigh_table_init +EXPORT_SYMBOL vmlinux 0xe568e80c vfs_iter_read +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57a3ce4 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58b46a5 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xe58dc839 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xe5b276aa proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xe5c7d0b0 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xe5ec1d2a lwtunnel_cmp_encap +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f9eafd security_task_getsecid +EXPORT_SYMBOL vmlinux 0xe644c863 kbd_free +EXPORT_SYMBOL vmlinux 0xe64dff14 is_bad_inode +EXPORT_SYMBOL vmlinux 0xe6585f13 mpage_writepage +EXPORT_SYMBOL vmlinux 0xe66e1c89 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xe685182c locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9dc9 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe6b0e9e9 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xe6b89349 nvm_unregister_mgr +EXPORT_SYMBOL vmlinux 0xe6b9d4e7 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xe6cd780f __lock_buffer +EXPORT_SYMBOL vmlinux 0xe6cefb65 blk_finish_request +EXPORT_SYMBOL vmlinux 0xe6d7a244 dcb_setapp +EXPORT_SYMBOL vmlinux 0xe6f1486d dql_reset +EXPORT_SYMBOL vmlinux 0xe6f38a9b block_write_begin +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe701bd4e __vfs_read +EXPORT_SYMBOL vmlinux 0xe71362e9 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xe713a97a irq_subclass_unregister +EXPORT_SYMBOL vmlinux 0xe729f3c3 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xe77e14fe nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe797fd96 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7add5d5 console_stop +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f4a842 __check_sticky +EXPORT_SYMBOL vmlinux 0xe7f54b76 lwtunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0xe80cd11c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82399fb inet6_protos +EXPORT_SYMBOL vmlinux 0xe82b650f vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xe82d05ea prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe832e03d __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xe86ef8fa icmpv6_send +EXPORT_SYMBOL vmlinux 0xe885cd69 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xe88e08d2 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b15ede blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xe8bad802 tty_hangup +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d1692e vfs_rename +EXPORT_SYMBOL vmlinux 0xe8ef0ff0 current_kernel_time64 +EXPORT_SYMBOL vmlinux 0xe9116e76 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91514fa blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe9159d6f bmap +EXPORT_SYMBOL vmlinux 0xe9169155 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe91d4af6 ccw_device_resume +EXPORT_SYMBOL vmlinux 0xe949d7bb seq_release +EXPORT_SYMBOL vmlinux 0xe949f72f remap_pfn_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe96a2373 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xe97faa99 make_bad_inode +EXPORT_SYMBOL vmlinux 0xe9989c8c itcw_get_tcw +EXPORT_SYMBOL vmlinux 0xe9baf91b inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xe9cbaf5d dev_addr_init +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea156939 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xea5a0635 kobject_add +EXPORT_SYMBOL vmlinux 0xea5f41bd add_wait_queue +EXPORT_SYMBOL vmlinux 0xea735c67 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea872313 find_next_bit_inv +EXPORT_SYMBOL vmlinux 0xea8947c5 pci_bus_get +EXPORT_SYMBOL vmlinux 0xeaa16e9a __debug_sprintf_exception +EXPORT_SYMBOL vmlinux 0xeaa1fa2b pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xead58fb9 print_hex_dump +EXPORT_SYMBOL vmlinux 0xeaeead65 dentry_open +EXPORT_SYMBOL vmlinux 0xeaf5faf6 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xeb011ddd write_one_page +EXPORT_SYMBOL vmlinux 0xeb15a924 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xeb164d3b ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xeb18247f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xeb259001 pci_pme_active +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb71a848 raw3270_start_locked +EXPORT_SYMBOL vmlinux 0xeb92d225 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xeb9b4f81 posix_test_lock +EXPORT_SYMBOL vmlinux 0xebbf1dba strncasecmp +EXPORT_SYMBOL vmlinux 0xebcc5311 pci_clear_master +EXPORT_SYMBOL vmlinux 0xebf7d087 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0xebfb85f2 fd_install +EXPORT_SYMBOL vmlinux 0xec27c4d1 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xec373aa7 force_sig +EXPORT_SYMBOL vmlinux 0xec4680cc kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xec50fb04 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xec68c355 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xec6f981e inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xec978a21 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xeccd9fb6 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xecce691f gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecef11eb iucv_path_connect +EXPORT_SYMBOL vmlinux 0xed0e38c1 udp_prot +EXPORT_SYMBOL vmlinux 0xed2a9b37 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xed39e8e7 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed73bfe1 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xed7b62ca bdev_read_only +EXPORT_SYMBOL vmlinux 0xed9c2d46 bdi_register +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda65519 ihold +EXPORT_SYMBOL vmlinux 0xedb81261 blk_peek_request +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbff52f create_empty_buffers +EXPORT_SYMBOL vmlinux 0xedc20cee blk_delay_queue +EXPORT_SYMBOL vmlinux 0xedc9cd14 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xede893ee jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xee00708f ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3076e8 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee97c3a3 inet_sendpage +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeebb8a31 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xeec005ce gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef01cf5e __skb_checksum +EXPORT_SYMBOL vmlinux 0xef032626 vfs_write +EXPORT_SYMBOL vmlinux 0xef197388 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xef2c35f7 security_path_truncate +EXPORT_SYMBOL vmlinux 0xef3e3adf path_put +EXPORT_SYMBOL vmlinux 0xef45d32c __kfifo_init +EXPORT_SYMBOL vmlinux 0xef572064 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xef78b881 key_revoke +EXPORT_SYMBOL vmlinux 0xefa8e66b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xefaa1412 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefddb759 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xeffb7a3e sk_wait_data +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf045759a __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xf04703af bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf068d844 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xf0873540 get_acl +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0af04c3 dquot_alloc +EXPORT_SYMBOL vmlinux 0xf0b0c81f pci_find_pcie_root_port +EXPORT_SYMBOL vmlinux 0xf0e2b86b down_write +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1a554 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf0f1f90b inet_addr_type +EXPORT_SYMBOL vmlinux 0xf0fe7d25 __dst_free +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf105bb34 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf110dd6c unregister_qdisc +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf119fc3b textsearch_prepare +EXPORT_SYMBOL vmlinux 0xf122c1c5 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf175b46f inode_add_bytes +EXPORT_SYMBOL vmlinux 0xf1942aff bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19c0529 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xf1adfecc netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xf1b54d11 netlink_unicast +EXPORT_SYMBOL vmlinux 0xf1b9fb06 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea9cbf scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xf1eecc76 flow_cache_init +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22290a2 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf22fb3ea tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xf231b89b simple_empty +EXPORT_SYMBOL vmlinux 0xf23e2deb sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2428ad9 sk_common_release +EXPORT_SYMBOL vmlinux 0xf249469c mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xf25d971f neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xf2600fcd default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf26a7118 inet_frags_init +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b1faea skb_clone +EXPORT_SYMBOL vmlinux 0xf2f044f2 single_release +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31d93a6 do_splice_to +EXPORT_SYMBOL vmlinux 0xf3266162 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf342a72d sk_ns_capable +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34aec88 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf363fea3 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf3712ccc debug_exception_common +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3aa9f60 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f6a7ed seq_pad +EXPORT_SYMBOL vmlinux 0xf3ffd168 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xf405de22 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xf406fcc4 icmp_send +EXPORT_SYMBOL vmlinux 0xf41c50aa __free_pages +EXPORT_SYMBOL vmlinux 0xf41dce11 make_kgid +EXPORT_SYMBOL vmlinux 0xf42c014b ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xf434b61b sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xf4480e25 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xf44a9ec4 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0xf4528073 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47d8627 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xf490bc79 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xf4b5537f pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c5517a tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xf4cc197f tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f1d73f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xf50b12c9 user_path_create +EXPORT_SYMBOL vmlinux 0xf5326905 sget +EXPORT_SYMBOL vmlinux 0xf532f3ec blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5495322 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xf55d3e17 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xf5a7776a pid_task +EXPORT_SYMBOL vmlinux 0xf5c4451f netif_napi_del +EXPORT_SYMBOL vmlinux 0xf5c6965a devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xf5c7d8a4 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xf5c8d89a sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xf5cc5eb9 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xf5d3697d udp_set_csum +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fd2bc7 vmemmap +EXPORT_SYMBOL vmlinux 0xf61bc58f mount_ns +EXPORT_SYMBOL vmlinux 0xf625af99 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xf62e8cf8 udp_ioctl +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63a811a neigh_for_each +EXPORT_SYMBOL vmlinux 0xf63c4218 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xf6690511 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xf66a0c2a __napi_schedule +EXPORT_SYMBOL vmlinux 0xf676ea0c netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf6812d2f skb_make_writable +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6a39d80 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xf6b77eae __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xf6e33a75 d_obtain_root +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f424a4 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7112e21 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xf746316a frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xf7c5339a tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xf7d71918 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0xf7e10003 bio_init +EXPORT_SYMBOL vmlinux 0xf7f2d25d iucv_message_send2way +EXPORT_SYMBOL vmlinux 0xf8062689 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf85840fc scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf86dcc10 vm_insert_page +EXPORT_SYMBOL vmlinux 0xf89cfde7 VMALLOC_START +EXPORT_SYMBOL vmlinux 0xf89fe2b1 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xf8c37fe1 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xf8cf3f71 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xf8d0e308 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xf8e7367f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf8efb3d2 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0xf8f8798c __d_drop +EXPORT_SYMBOL vmlinux 0xf9017beb dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xf902462f free_task +EXPORT_SYMBOL vmlinux 0xf903b13b inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xf91249db km_query +EXPORT_SYMBOL vmlinux 0xf949cbbc sock_wake_async +EXPORT_SYMBOL vmlinux 0xf95d5641 ida_destroy +EXPORT_SYMBOL vmlinux 0xf96e3275 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf989de85 put_filp +EXPORT_SYMBOL vmlinux 0xf98cdd53 configfs_register_group +EXPORT_SYMBOL vmlinux 0xf991c5e7 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b217c3 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xf9b96b47 generic_setlease +EXPORT_SYMBOL vmlinux 0xf9f89504 generic_setxattr +EXPORT_SYMBOL vmlinux 0xfa097279 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xfa1c296c inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xfa469c65 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xfa484fa8 dump_skip +EXPORT_SYMBOL vmlinux 0xfa5176b4 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5b256d simple_link +EXPORT_SYMBOL vmlinux 0xfa5d0119 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xfa979294 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xfaa09920 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfaa0f1c3 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xfac60968 lg_lock_init +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaebb94f inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xfaf9b865 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xfb28fb62 vfs_symlink +EXPORT_SYMBOL vmlinux 0xfb4176fe fifo_set_limit +EXPORT_SYMBOL vmlinux 0xfb496a1a jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xfb4fdd6d blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6b6f74 raw3270_request_free +EXPORT_SYMBOL vmlinux 0xfb725329 mempool_create_node +EXPORT_SYMBOL vmlinux 0xfb79b5ee kbd_keycode +EXPORT_SYMBOL vmlinux 0xfb7d785e tcf_em_register +EXPORT_SYMBOL vmlinux 0xfb8b8cc4 neigh_destroy +EXPORT_SYMBOL vmlinux 0xfb93edd5 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9bd5aa mark_page_accessed +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb94bed km_state_expired +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbf39aa8 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xfbf9be2f elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0c57e4 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xfc2167e2 lwtunnel_input +EXPORT_SYMBOL vmlinux 0xfc46bb96 itcw_add_tidaw +EXPORT_SYMBOL vmlinux 0xfc523f2d blk_sync_queue +EXPORT_SYMBOL vmlinux 0xfc5799af nvm_put_blk_unlocked +EXPORT_SYMBOL vmlinux 0xfc59d0bc mempool_destroy +EXPORT_SYMBOL vmlinux 0xfc6e2fd4 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xfcb1d06b blk_get_request +EXPORT_SYMBOL vmlinux 0xfcbf1c19 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd4232b dquot_quota_off +EXPORT_SYMBOL vmlinux 0xfcd430a5 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xfcdfe325 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf09e8f debug_register_view +EXPORT_SYMBOL vmlinux 0xfcf5e82e iov_iter_npages +EXPORT_SYMBOL vmlinux 0xfcffe8ca sclp_pci_configure +EXPORT_SYMBOL vmlinux 0xfd190788 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xfd215867 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xfd282c34 nf_log_packet +EXPORT_SYMBOL vmlinux 0xfd420859 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9995b1 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xfda52dcf ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xfdae15b0 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfde3f30f security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfdf04089 iov_iter_init +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe024feb dev_load +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe539daf pci_disable_msi +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe796db8 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfea12695 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xfeadc118 generic_fillattr +EXPORT_SYMBOL vmlinux 0xfed7ec9d release_pages +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef40876 locks_init_lock +EXPORT_SYMBOL vmlinux 0xfef94e3d param_ops_uint +EXPORT_SYMBOL vmlinux 0xff001a77 devm_memremap +EXPORT_SYMBOL vmlinux 0xff192e6e get_super_thawed +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff31144d generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xff3e86d1 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xff45469b dev_uc_sync +EXPORT_SYMBOL vmlinux 0xff50201e lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xff73b6cb get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7febba __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffec45ba fasync_helper +EXPORT_SYMBOL vmlinux 0xfffde7aa cad_pid +EXPORT_SYMBOL vmlinux 0xffff7b78 end_buffer_read_sync +EXPORT_SYMBOL_GPL arch/s390/crypto/sha_common 0xf18ab139 s390_sha_final +EXPORT_SYMBOL_GPL arch/s390/crypto/sha_common 0xfe3b1372 s390_sha_update +EXPORT_SYMBOL_GPL crypto/af_alg 0x32dd5d00 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x43ba8389 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x7c6b0617 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x92e92482 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x9f6bf118 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xa143a662 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa544b18e af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xafe70543 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xce48ac55 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xec43ac47 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc4df699d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x0cde33ee async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x75338200 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x05d60fe7 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xdf5f0e4b async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x4de7a492 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x87958252 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x99a68090 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3eaf1242 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xe4307cc1 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xcb07a714 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x3b246ff6 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xa0e63bd1 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0x048e0543 crypto_chacha20_init +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xb994e3c7 crypto_chacha20_crypt +EXPORT_SYMBOL_GPL crypto/chacha20_generic 0xbde92325 crypto_chacha20_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x067b2756 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x189dee7f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x1d679821 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x26da29b5 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5147e3c3 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x9a528db5 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa7d76f08 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc8325e52 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xebfe5680 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xff04be0c cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x86d14725 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0f8d0c77 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5d5849da shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x75c73449 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8823fc80 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x9c796fef shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa5949470 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xac3dfd26 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdb97bad3 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x3bd37495 crypto_poly1305_setdesckey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x5c6c38f8 crypto_poly1305_final +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x619c42be crypto_poly1305_init +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0x64e0aa8b crypto_poly1305_setkey +EXPORT_SYMBOL_GPL crypto/poly1305_generic 0xaf43116e crypto_poly1305_update +EXPORT_SYMBOL_GPL crypto/rsa_generic 0x29980371 rsa_parse_priv_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf510d389 rsa_parse_pub_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x84d51586 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x4d01d108 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xaacd59ce xts_crypt +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x41a686fb fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x4d6b7135 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8df96199 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9db56191 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa6144103 fpga_mgr_buf_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd8749324 fpga_mgr_firmware_load +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x2c56785d intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x35ec6141 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x37a53407 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4a925758 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x5b8fa3df intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x65899ece intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6b078b63 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x28c1b12e stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x4a305181 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x5aa4687b stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x697d98a6 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xac98d4bd stm_unregister_device +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00472318 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x01d3b9ec __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x04698e56 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x13de3a79 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x17951453 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x25e0e29d __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2e196d5e __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40eb8ce7 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480d259c __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50f963e8 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5de357e7 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x734e256b __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x76478393 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7b3bd777 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7dc83a0f __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x99e96e83 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa1ee0faa __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa20d04ab __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa5fc5b3c __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa7aae64e __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa8749832 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xae6f41b8 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaffc6d0d __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7de1e4f __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd0e0d4c5 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd4c1f373 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd5c4d672 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe08585f9 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe55e9c32 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf7cf2aa7 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfdc6ed3a __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0488fb61 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x401dc708 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x74305a58 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8872d8e9 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8bbee78b dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xabd2639a dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xac038d99 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcf0d35e7 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xec97ae43 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x20afdca7 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x285e31b4 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x35f5621b dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x69d5fd1d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8047742d dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb35f41a7 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcd43edf1 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe5b51c42 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x50ad257d dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x863319de dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x340767ad dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x853927e7 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb027305e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbb8517b7 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdbdba789 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf0396a68 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x07c4a1ea dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1d346c4e dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32350144 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42d1207a dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x67660b4e dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80afbcf5 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x8605e0ec dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x8c195a05 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98925a60 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa7e46220 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe118796a dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe2d7194c dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x005d0ca0 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00b452bf mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02bc3127 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02ee6c1c mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03e09b0b mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x053f692c mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0756b497 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x081a003a mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08214fc8 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0855a5ee mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0898cbde mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08dfbde8 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x097367bb mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e5f0cd8 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13326c5b mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1425ebe0 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16226239 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17d73571 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18fde0de mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1af1a0ac mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cb76e0a mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20261c9d mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21dec441 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21dffaa3 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x234250e4 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2386074c __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24417d1f mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24841c7a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25484556 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29570f9f mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dc411a3 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e3c302c mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3336d0c6 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3606b997 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3723c456 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37247cde mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37febb15 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x393685b7 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3daf1c42 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e0233f7 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x427ddf47 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4617fdc1 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46d0574c __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4887acc9 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ae893d5 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b5f2ebe mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bde48ae mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c8e26eb mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55e367cb mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57d8300d mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5af01b64 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b73e6e1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b92c1f2 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60e3f9ec mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x677ba844 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6996a320 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x729723fb mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73102794 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x762cacd8 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d231b89 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80356597 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8067153c mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85c318f8 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85f21505 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87a2a01d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d343e8f mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8df0ef47 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e5b1fcf mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9501bb25 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95187ece mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c4d512c mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d6257fb mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d69a961 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f689156 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa03bc326 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa51600d6 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5961465 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8160a07 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa87134c0 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8af7a65 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa96f2aac mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae23a41b mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaec7ab5f mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf772066 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafbe443f __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1eaad49 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3550aff mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb39b1fc1 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5d4b5a0 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9d73168 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbada745b mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe28ea79 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfeaceb6 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc24ec3ba mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce90cb08 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf690c85 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd12c0aad mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd28fcf9b mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd310a614 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8d3a69d __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9001797 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda4cf727 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde90cb58 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdea37a70 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf87ec09 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe370965c mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5a8e8ca mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5c3bb5f mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7d38418 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecae41e4 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef1313a9 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefa34610 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefb43430 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefe83c0b mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1d0a7eb mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf341a264 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4d03e36 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b7ba21 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfba21dcd mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc15e6a4 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc1f46ca mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfddc2f43 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff49a468 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff910141 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02d2e3c0 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x070e2c51 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d86b135 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e5c35b1 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e9a2cfa mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x124ab641 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13b4a877 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bff4747 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x247be9f1 mlx5_query_vport_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24991099 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35477afd mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4011ab1f mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4453fc83 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4972fc30 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4bfa9cf3 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d8f28bf mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x524f0b2c mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c6fd629 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63f97086 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x642d3d19 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64b259a3 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d9b87fd mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6fdf95d0 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6fe435ca mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79de7cc6 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89a75731 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90df65d9 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94b230cd mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0dcdb26 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2000afd mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8754c7c mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8daf986 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbeaf1073 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1169e3f mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc7749db3 mlx5_query_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7cde055 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd723d2f mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf01a160 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5e6a20c mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe616a85c mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9022434 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb4d694f mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4528fa3 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf526c517 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff081291 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/geneve 0x0196c04d geneve_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/geneve 0x1fa8a8a5 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2ee4586f macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x96fc6de6 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb0e111d5 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc0813f36 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x3ece59d6 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x01c9cdb5 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2757dec5 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x45e77747 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x53ee7ef8 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x668fedbf bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6893e00e bcm_phy_enable_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6b897a7f bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbb36badc bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe41e34da bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xea8ff187 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0x43d01fc1 fixed_phy_add +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0xdf24fd22 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0xdfd32b4b fixed_phy_register +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x4f51099f devm_mdiobus_free +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x6e6096dc devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x98bf2193 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xeb489faf vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x005aeb5d nvmem_register +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x1caade83 devm_nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x217565a9 nvmem_device_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x2b9d5b1e nvmem_device_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x34a0ded4 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x39f04d2c nvmem_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x3db4dbd5 nvmem_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x40cfa3dd nvmem_device_cell_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x4e5e2b08 nvmem_unregister +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x5d816cc8 nvmem_device_read +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x6f6b1bfb nvmem_cell_get +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL drivers/nvmem/nvmem_core 0xde30fe00 devm_nvmem_device_put +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x19227556 dasd_nopav +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x45d770d6 dasd_generic_probe +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x494192be dasd_device_set_stop_bits +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x4df20fd6 dasd_wakeup_cb +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x5a9f4c9a dasd_device_remove_stop_bits +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x627a037d dasd_get_sense +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x65f16668 dasd_free_block +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x73ee0619 dasd_generic_notify +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x8292d341 dasd_generic_restore_device +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x88301001 dasd_alloc_block +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xb2fcdd47 dasd_generic_uc_handler +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xb3741af0 dasd_generic_last_path_gone +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xb38fe028 dasd_page_cache +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xb76a62fe dasd_put_device_wake +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xbde21e4d dasd_generic_pm_freeze +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xc01286e9 dasd_generic_remove +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xc67f2827 dasd_generic_read_dev_chars +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xcb837647 dasd_generic_verify_path +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xd6965f47 dasd_generic_path_operational +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xd8d82a1d dasd_generic_handle_state_change +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xd9641ad5 dasd_generic_path_event +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xdc8977cb dasd_generic_shutdown +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xdd05f368 dasd_flush_device_queue +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xdd4cb424 dasd_generic_set_online +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xf15784f5 dasd_nofcx +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xf1e0501e dasd_generic_set_offline +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xfd74c4ad dasd_device_is_ro +EXPORT_SYMBOL_GPL drivers/s390/cio/eadm_sch 0x24f2806e eadm_start_aob +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x0f678a7d qdio_shutdown +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x10fa7493 do_QDIO +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x52d49616 qdio_alloc_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x5d4da7ac qdio_allocate +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x73852c2c qdio_pnso_brinfo +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x8184dc41 qdio_reset_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xc6755f2b qdio_release_aob +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xc8e3f47d qdio_free_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xcd4af5dd qdio_allocate_aob +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xd66b23cc qdio_activate +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xe07d4897 qdio_get_ssqd_desc +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xe6f360dd qdio_free +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xea5f88a4 qdio_establish +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x01fc1749 qeth_qdio_clear_card +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x05491862 qeth_tx_timeout +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x0aa9f2c2 qeth_get_priority_queue +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x0c20a1d3 qeth_close_dev +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x0fc8dfff qeth_get_elements_no +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x12976a16 qeth_set_allowed_threads +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x143afa4a qeth_core_ethtool_get_settings +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x24644489 qeth_core_get_strings +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2a42dd90 qeth_prepare_control_data +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2cd9e4cc qeth_core_header_cache +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2d2e5fb9 qeth_wait_for_threads +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2d686fb9 qeth_dbf_longtext +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3046e8fc qeth_hw_trap +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3155dafb qeth_send_control_data +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x33f13356 qeth_core_hardsetup_card +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x36062245 qeth_print_status_message +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3a07e7aa qeth_get_ipacmd_buffer +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3ee57342 qeth_start_ipa_tx_checksum +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3ee79eae IPA_PDU_HEADER +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x440f8318 qeth_snmp_command +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x447bfa68 qeth_get_elements_for_frags +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x4b521a54 qeth_wq +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x4cade2b4 qeth_set_recovery_task +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x4ff711f6 qeth_clear_working_pool_list +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x5628d5ed qeth_query_oat_command +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x573231f8 qeth_realloc_buffer_pool +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x59bcaffc qeth_send_setassparms +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x607e8d37 qeth_qdio_input_handler +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x6415af77 qeth_configure_cq +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x6604e25f qeth_threads_running +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x6cd3846b qeth_clear_ipacmd_list +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x728763e8 qeth_release_buffer +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x75a19ffa qeth_core_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x7e4afeae qeth_check_qdio_errors +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x80159cf0 qeth_core_card_list +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x8a5b5bcc qeth_trace_features +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x8e8efd67 qeth_card_hw_is_reachable +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x90b8048c qeth_do_send_packet +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x928e2e1f qeth_clear_thread_start_bit +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9764874f qeth_setadp_promisc_mode +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9b15a38b qeth_init_qdio_queues +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9d65335c qeth_set_rx_csum +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9e3b46fb qeth_set_access_ctrl_online +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9f620ee8 qeth_queue_input_buffer +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa16714b4 qeth_wait_for_buffer +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa406e0fe qeth_send_ipa_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa64da863 qeth_mdio_read +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa7e5ac3f qeth_change_mtu +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xae94802a qeth_setadpparms_change_macaddr +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xb0eab50c qeth_dbf +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbbb46993 qeth_do_send_packet_fast +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbc6545b8 qeth_query_switch_attributes +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbc769592 qeth_clear_thread_running_bit +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbe8adf4c qeth_core_get_sset_count +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbf2c11cb qeth_get_stats +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xbf6f70fd qeth_clear_qdio_buffers +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xc21203ef qeth_send_simple_setassparms +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xc41d8bd4 qeth_clear_cmd_buffers +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xc4d7f749 qeth_do_run_thread +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xc7ff262a qeth_query_setadapterparms +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xd3e3ec4c qeth_core_get_next_skb +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xd7449a7f qeth_send_startlan +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xd9ee098b qeth_clear_recovery_task +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xe817f18e qeth_qdio_start_poll +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xe863eb94 qeth_qdio_output_handler +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xeaeada7e qeth_query_ipassists +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xecc40ca0 qeth_hdr_chk_and_bounce +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xf9f5e4a1 qeth_core_get_drvinfo +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xfe825463 qeth_schedule_recovery +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xfea7fcfe qeth_prepare_ipa_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l2 0x07c8aa12 qeth_l2_discipline +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l2 0x9127257c qeth_bridgeport_an_set +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l2 0xe4a75434 qeth_bridgeport_query_ports +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l3 0x3f4fd796 qeth_l3_discipline +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0acdb0d0 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1ff13f1e fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x213bcac9 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x334ecabc fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x38c38e9e fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4b110369 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x61135c1b fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x62e7a93f fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x75bfc9d2 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x78efd685 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84a732e9 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x894817d1 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ab85572 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb55354cd fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd0ce89e4 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfc7a4dfa fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6305ba88 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x71758e17 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7af7649d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x977d9cb7 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb6150c36 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcb173626 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x07613a0c iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0db0e619 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1e1540aa iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20f1fa26 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23712445 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23de8613 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2436aad6 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35d5e17e iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45301a88 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45329936 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46759fb5 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x48ac9aeb iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x52f8dda2 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55a3380b iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x580c660b iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x587e66f0 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e15ab36 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6116118e iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63355752 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67ceeb6d __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6aee6644 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6de778cd iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x838c1caf __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x88d1a979 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c505d00 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9269d647 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x949f517c iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94b419dd iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x95783a80 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97735290 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b37b910 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d745fe2 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab4d0751 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb33e53bc iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb8e7e662 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba0125a8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1537edf iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb41f80e iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1f9b40c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xecd92d97 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf60d692e iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfdd1a758 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x005fa59f iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28e5e8f6 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x29caa25f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2cebac06 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2fe01194 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49bbe33c iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4fed6908 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7cc8df46 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x81d3404a iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x972bad85 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb09aaeb7 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc5cbfff6 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd7442c86 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd9e5c468 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdf4e439f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeda90f62 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf7f6c1bd iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x08b0b561 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d51d335 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x266825cc sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a686e1d sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x326aaefe sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x401c4d85 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42270118 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4ddee0bc sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54b2cde7 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x65068cb4 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7557ccec sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x983f5095 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa92cfdd0 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac7c4e77 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0d79a2c sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb2d7ed4e sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xba25bd9e sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc00fd681 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc434dbf7 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf961e27 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda3c8784 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeaff0f5f sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf16a0bde sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c1bfd85 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f00d9d0 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10b6f294 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x180a00e1 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x21e3facb iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x27059ee7 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2721000b iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x28612edc iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2d3b1b87 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3676f492 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x455f392c iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53ee2294 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x545e7238 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63b6d4c0 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64595d85 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64bbd364 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6a9390bb iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74d241d6 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x760e12a0 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7cb14926 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b998a42 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8edaebaa iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9812f1af iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98e6c7e8 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa887f1d iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaab5ff47 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae364821 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4661531 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbd4de68 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbeae0d4c iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc21ceb4d iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd97db68 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd1d328b8 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda91a4e6 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbfbb4eb iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4ddbb08 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf4844030 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5569777 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf7d43e4c iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd629863 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2aa6cd29 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x981bbb1b sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdbe146bc sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe8953792 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xb843afa6 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x07e15286 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4e9a5068 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x764c1890 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb69dbd74 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xea6fdc72 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf982b26d srp_rport_del +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x12b91973 uart_insert_char +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x3a3c2d03 uart_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0xee9b7d5a uart_handle_cts_change +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4e292f6f vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x605319f2 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x76627610 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x98e37ef9 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa192a926 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xffc246ce vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x7f719598 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xd7541d28 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x04e10efb vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2437070f vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26aa0bd6 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2edf353f vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x30b7e303 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3b759cae vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3e77b4cb vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ffef3e8 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4435fd97 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4962d844 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4adaf4f4 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x50178146 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x551846ae vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x69e7b3b4 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6adbe848 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b8de6b6 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7fb564d5 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x803cd95a vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8bc7eeb5 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96febb9d vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa25ccc58 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa9d3c5e2 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaa6103d7 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb35f263f vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb684b0f1 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd415d57f vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef31df4c vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf118ff0b vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf596a0a4 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf73965a1 vhost_dev_ioctl +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4fce32cb dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x5e84517b dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdd95c35e dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0e73eacf lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x30ff59eb nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7194e0e2 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x72665e21 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78c742bd nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8ea79dac nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9867f68f nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00d436d6 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x017e3b40 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03b0d4f8 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0601e816 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08363288 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c215718 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e561545 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f1dd212 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1219a1e0 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c4a377a nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ca250ca nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cec11d4 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27542968 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2abfa078 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30e83705 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x347facca nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36519780 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36a3c846 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e210c6 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b28480b nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c4a5741 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c888050 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cd42b54 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41e5804c nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4276a4b2 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44bb5f8f nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44c8413f nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45a659cb nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45e67334 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48251905 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48af8d82 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48cff0c7 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48f14ee8 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bc59092 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4df9235e nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e5970d0 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e7edb0c nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f3d07f9 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x524b37e9 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5284df94 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52b0bd7e nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x548654d8 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5546497b nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x565637fb alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57ff127e nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58efdc8a nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b4aedc3 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d702b2e put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e931071 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62be6555 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65e78a60 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x671115ea nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6826407a nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69779146 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a926c82 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f11babd nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f26b297 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x704118b7 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7177f7d7 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71c9f76a nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7570c49b nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76509712 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76dcca1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77f308ae nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7810e77f nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7817e50b nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b0cb9ef nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b349d92 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x817c7432 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8246613b nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x881347d5 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88e09fce nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89578176 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cf1eedd nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e6109de nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90085a41 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90b8f57f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x935d851b nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ae87747 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c3ad799 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d1c5611 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e41e6f2 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa09c2153 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa192bea3 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8b49115 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad0aa8d9 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0daeec1 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb29bdbf7 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2de22cb nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb99a7ddf nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbab1c6ed nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbab90874 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb80c4ba nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc4018e7 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcaa53af nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe7f0d04 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1391498 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2b95f5a nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4f86bb6 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc90a0860 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9b999a7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcacfc9ed nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc7627a9 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccc2f104 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdec3095 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1767d40 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5eb8095 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9fccceb nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcf6c4fb register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe29b53f6 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe34abd44 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe638cd8e nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6b56bbb nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb4a229c nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedc9a25d nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee391cfd nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2c66be1 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2fba36d nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3ce35cd nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4f31e0a unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf54a98ab nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5cf9281 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf823d01c nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa9b6a9f nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeb7167e nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff798177 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xec2b70e8 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02f2d399 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a7f680b nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b3c6515 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1973beec nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20581578 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d908243 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e38bc1b pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30914a8d pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39d9fcf7 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f72a8de nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40e9846f nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x447c1e91 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4cbeb887 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53380774 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x538fcabd nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54b065a8 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6399da20 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6691ec4f __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6740a0b8 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b8d6fe1 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e0661e1 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x708ed71b nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x74f67da6 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76475776 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ab9d353 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ac29339 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b3fd907 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b8e67f8 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c33379a pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x835e643d pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x88bbaede pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d76b2bc pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90e50b0b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9682825d pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96cf7ea4 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96edf470 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x999357cb nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9ba0551a pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9edc9eda pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0b71e6c nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4168465 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa51e3787 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa618e82c nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8d4f4b6 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8d9656e pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3331772 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8e68c43 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1be492e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd21b4d53 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4eb69ec nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf0aa8ae nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdfce6e83 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdff4e37c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe16ae7ea nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9866797 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xec257e14 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xec6ef4b5 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed9d6ca9 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf284a7ac pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf75898f6 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9f9782f nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd774360 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x2080344d locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x3ad721f9 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x86a497b6 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x060caa62 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xbd0c7e2c nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2757a23a o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4b701103 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x521e0726 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x696bcae2 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x96ecf9d1 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa21a55ee o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe3422fc7 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfdefeb77 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0774d14e dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x28e002c8 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4a51bb9f dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x75143c8f dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb8af316d dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf9b6939a dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3e80dad7 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x6d59a1a8 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbb57bc8b ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b01e3be _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x94be4884 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x96323bc4 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x3933610a notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xc78688f2 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x18efd32f raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x391d9714 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xa51bfd9f raid6_2data_recov +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x096acf0d base_inv_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x0ea96336 base_inv_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x23bf768a base_inv_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x28a031c0 base_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x5a14472f base_inv_old_false_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x71398562 base_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0x90ae1c4c base_old_true_key +EXPORT_SYMBOL_GPL lib/test_static_key_base 0xec4c111e base_false_key +EXPORT_SYMBOL_GPL net/802/garp 0x25b5be55 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x26fb988d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x6e78e6d8 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa9e0aab0 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xf352f4e7 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xf5cdb014 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x03097e03 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x1c5761a3 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4349196d mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x757b9caa mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x97dff9e0 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xe6ea3d70 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0xdfe58054 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xf4edb07b stp_proto_unregister +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x02107d5d br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x29ce9835 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3ce16b08 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x41fb0d3d br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x82656922 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8ad5a832 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8f19bd29 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x996678f0 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x71023b6c nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x8163dcbe nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06f7e71b dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ee17d28 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e1ea526 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26ca1dfc compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26f13c92 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2fd527e5 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x43ff42af dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4f148bbe dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59535271 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59912095 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59a20508 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a22011a dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d0501a7 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x654fe99c dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x694f7c06 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69c5eb57 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b097c87 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x799fe48f dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79b4e22e dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c586cef dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b759f27 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9122fcd5 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x96b60bc0 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b51412f dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9de435e2 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa0785b12 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa65e1c89 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbc84339e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7ef0d29 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd22e36ab dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd98fb8c2 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdfbc4dc3 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4088041 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea94a5f9 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed149b6a inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf45ae06e dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x087a7ca7 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2c5e935b dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4784591e dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x69667fd1 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa1190802 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xef079a4a dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb479e8cf gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xba62f512 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2e552891 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5372c5fe inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa7c321c7 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb6f2554c inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb8cb8b68 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc666b2d2 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xc00466ff gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x21a966e8 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x22559f89 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x258cddd7 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3139df4f ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x31c60fe8 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x73255cab ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x81fc35c1 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9bcc4967 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9dd2c758 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa8788ff9 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc5f30692 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc64055fe ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcb1f1acc ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf499beb ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x21a94e80 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x684f5330 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xc8a29243 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x349e936e nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xbe4e0501 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc41f3b4f nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe8cb0dca nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xfa13e2fd nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x312e50d5 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3007a760 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x449775b9 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7230fb6f nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8a649e59 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf0070f94 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x9a9e9f6a nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x272b818b tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x48ad8097 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x81c30ce0 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd43db79f tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf1146473 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x1666c9f0 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x5217ad2b udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xae89027d udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xdc9d28df setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x13276b73 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1ccdac54 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2308e538 ip6_tnl_dst_set +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x58e9eb73 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x856af2eb ip6_tnl_dst_destroy +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xabeb19f4 ip6_tnl_dst_get +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf0d6e283 ip6_tnl_dst_init +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x80ed28bf udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xc78972c6 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2222fcda ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x0f1985f7 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xe7bc64a5 nf_ct_frag6_consume_orig +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xdfccf075 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x54e1bc98 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc470ff56 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc53a8594 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xea94b1bf nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf7b927c1 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x4a8448e4 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1a3d817e nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2c86f504 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x91232b4b nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcc224b34 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe0043959 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x4be06a39 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x037b9fde l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2340cbb8 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5687d254 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x585f90a1 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x69e29b23 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87177d5c l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8de7981d l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x968e294b l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9b2cd496 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa792f32d l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab1f9a05 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb384c4f8 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc40be972 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd9e4af30 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdc130a85 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf2db7980 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xb41f5fd4 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x53834ec6 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7789d626 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xcd698f16 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf06dfe15 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf67d707a nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0b2310aa ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2bdd946f ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38267abc ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x432f1ad6 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4ba62890 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x50e05f33 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59493340 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x597c08fc ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x62cce120 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6c8900a1 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x95a41cba ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca6102f7 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce30cfbf ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd80530f ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe12a5c92 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfd3316e9 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfeafe259 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x16c26904 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x30f66b29 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6184d089 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8063172e ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0270f06e nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05b35ee7 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x090b945b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0cd03139 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ed05487 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18cb5a25 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c8a9ac7 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fb9391c nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2383a82d __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2613b16f nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28d5b371 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cbb8704 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x351329d0 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x396b61de nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ae54e1b nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c00806f nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d9ab234 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ffff4f5 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40a23dcf nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x424a4702 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44001258 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4bafb4db nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d818749 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50e581ba nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58392662 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f7ddab6 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6648473c nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69597e85 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a0f44e0 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6dfe2597 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71165b04 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71cbe967 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7bb94b46 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7de17063 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82558392 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83e319c6 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x844b58ab nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84ce5503 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a9843fa nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c4447db nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9093ef36 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93a32438 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94050645 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99729726 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ae500c5 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d4bfe83 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0339d71 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa37e221f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa675c063 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaba97e60 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf7d9c01 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb153f986 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3f822ca nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4b946e0 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb52ad22e nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6ceacdb nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb74d6960 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb86bf2b1 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8f130c8 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba57e351 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc472bb35 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc48862ae nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6cd915e nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6dbf0f4 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd812b529 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd915959d nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb938cf9 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc1b8933 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdde482c9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1c04c9a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe26e808c nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe479fb5d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecbfe454 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefdd9cae nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf005fa50 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3094713 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf55732a7 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7ab1730 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfacb3736 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfba5527f nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x5e374b6d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xc09f30eb nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x158efb6f nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0229a602 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x142fbc04 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x14ec3ad1 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x290fc9e6 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4cbc9d97 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x67aaa81c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb1a06fa5 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbad94e78 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc7b6fbfa nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc8a3a934 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xb29e877a nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x16311424 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4012419e nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x933c279e nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xbc6cfbd5 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x787a9e22 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xef2be0a5 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3001ad52 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x673f2cb6 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x964ce682 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbac663fb ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdd047ef0 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdea294c4 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe9b101df ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xe547b9f8 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xa4727f30 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x1005bd96 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7d12ce01 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9cc9f485 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf0c0dd07 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3f97abe8 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x404d3a28 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x631b6e31 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8dddb876 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa3827c83 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xade49b86 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb2e8f005 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb5c8e212 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe9971f14 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x2c0da694 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x3150fc93 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x734931f6 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc21963ef synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x028ffd5d nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x22113916 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x48cde82b nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4d4986f7 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6fd6fc7b nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7b0060a0 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7eb5f05b nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x815c6700 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8bb6722f nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x902b4e72 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xada92ad2 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc2fff381 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc71fc303 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcfd112ec nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd9a10a62 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe1a3232c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf606b473 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2e46d19c nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x455ddc73 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x63f1b70d nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8fb2e7d2 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x917a8de9 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcf609aaf nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe35670a3 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x30f90dfe nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x5cf6efb3 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x699c0a7a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x01b1b525 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x903f4cb4 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xeb475c6c nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xf68c0386 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x1c0126fb nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x45e66063 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6147bbfd nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbaec1330 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe81de3a3 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfc387e80 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xacc23d23 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xadc29444 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xdd6b0935 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x361ca0b5 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x929a2758 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1a28e2dc xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x23044cc1 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2d6bc569 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2e942c41 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e14227f xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x44f54cef xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x63b89ddb xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x69057d96 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6964a5ed xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b9a9f72 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8008af07 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8ce1a202 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c6892cf xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb8a0f82a xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfb8ee15 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3e5efe9 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc9c6aaf6 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd4b44834 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdc910719 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe2904c77 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x7c470866 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xc0f395bf xt_rateest_put +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x300bfd4e ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3aa9b888 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x42784572 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x65b2ad11 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8c745b0a ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x951426f7 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xadbf8dbb ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xafb28799 ovs_netdev_detach_dev +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbbfa5904 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x06bff511 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0e6e1ba2 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x10127e61 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x16c96a54 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x2637c44f rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x26cedf40 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2e659709 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x368ec3ac rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3ccd2b1b rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x44a6e9bb rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x57ac548c rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x61111343 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x72de45e7 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7e17fdac rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x8200faa6 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x831bdf03 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x8d8199a3 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x9749b5c1 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x987f059f rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x999a6d63 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x9c19ee86 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb151189d rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2da8e38 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xe32b2c8a rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xe87e008e rds_conn_create +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x81f677c8 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xfda889b6 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2628d21e svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9fcd226e gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc4a5f271 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00cea0cc svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0363b9bb _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03a96fe2 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03f14d1a rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x041599c2 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045e611f rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05518286 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06124da5 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065884d2 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06efc045 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07b37743 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a525176 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b56d81c sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c1d6f1e rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0de2a21b rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f3c6b36 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10fcc5c1 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11a73465 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13f62b27 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x152b981b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1536037e xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17a3c072 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18dc5ea9 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a70db72 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b805503 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ba81431 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ba965d7 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cc6b1e3 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e18669d rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e74e753 cache_seq_stop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2070048b rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x225bd727 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23cb42c1 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26605982 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x269b416b xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x283e5896 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28578c06 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ae1aa4e xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b284f37 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c7ddc64 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cac62d3 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cc70ac2 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30453bd8 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30b76ba7 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3216a412 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x337c0674 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33e8b032 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x357030cd xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x364c9cac svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36c0f178 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37a28e0a svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x389f3565 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38ed0e77 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39390c21 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ad00f34 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bebabfa rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ca6acfb xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d1c74ea rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f1a3d7d xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fdbef29 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41ed7c72 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4375a45f rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4398767b rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44a9bb54 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44debbdd xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47cc399c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47d5bfcb rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48d4d88e rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b1799b5 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b84f933 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b8847c3 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c071d0b rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x516c4e33 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x540cd0ad svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5686cde9 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58146f54 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x589b7f95 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ad7e799 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b4ab61b xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c27f969 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c802407 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f5ea9e3 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60537ab3 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63860270 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63b50721 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66e9358d rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x675dabaf xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68dcb705 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68e7cc5d rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6932b911 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bf95d2c rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d7d94e4 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f4ae615 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7135e3b1 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x720f6b73 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7383bf1c xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7416c5af xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7494ec83 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76567f60 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x786b6f3a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79a9bb88 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8033b84b rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80fe113b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8263c7a3 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f6f95c rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8587f4d0 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85dd20ad svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x866927b2 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a496ed9 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aef06f3 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bfec61f rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d8eb118 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dd03541 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f610557 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9060b386 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91ae4032 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9284c1ff rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x928e5d13 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93865c73 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9472e08a rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9787e724 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9803add0 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bf2b998 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ce283a1 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d0987d9 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ea3ee9e xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0874f35 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2228ea9 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa703ec5a rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9659fd9 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9aeb190 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaaca75c6 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab1e57f4 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac9ad3a1 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb32676ee rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb384db92 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3e01395 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6263e6b svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb637facd svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb638ce76 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb67d48c0 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7dadd3c rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb879b961 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbab3a72b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc5629a0 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdb92b64 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe09b992 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbeba9839 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf747da5 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfb147bf rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc65ffe xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfe58b89 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0319fe5 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc051b088 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc13ff418 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc25476a1 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc325422b xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3dd910b xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc62f809b rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc93fa04a svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca3850a9 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca3c9da8 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca406a24 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcad177cf rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb134a9a rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf3a66d1 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6abdebd xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8fbb2ab rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9226891 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9bf63ff sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc2168e3 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc570343 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb1b633 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd1e8420 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd84a9b1 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddd54e00 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdde19473 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf239fcd svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0b8ee82 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe11f01e6 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d585f8 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe28d85b1 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2c4f5fb rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4e32763 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe679de13 cache_seq_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7efbd98 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9075617 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaff3b0e rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb1206e6 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed830fc4 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee05553f cache_seq_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee6c4a3c xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee72ddd1 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4661f71 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5eb5811 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb97c1f7 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc3f6003 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc7f528d svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfce52a15 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffc095ab rpc_release_client +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0bb19d1b vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1941d1da __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3bb82585 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3bc2e8f8 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4fb835a3 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x526aa78b vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5ff7d088 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x728d753b vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa0c178e5 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc9612ecc __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd0924bfc vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe9be0413 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf4a0b4f0 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfdba8a0c vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc2efa919 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe9d49fd4 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xeb3925e7 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xeb81bf51 ipcomp_destroy +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x00330b5b wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x00548755 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x00ba5e5d dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01086827 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x0122a5f6 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x01268091 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x01413c5f css_schedule_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x0147125c __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x0161003c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x017cdfbf tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x01c2bee8 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x01f7df5a md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0227b01d blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x023b6c9d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x0257392c cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x02bd1342 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x02bf32a4 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x02ebef25 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x031b3287 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x03f4523e regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x03f49a1c clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04052950 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0467f614 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x04969885 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x04a28a7b disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04abead3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c6a794 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x04ea8706 __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x05412524 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05549148 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x055605a4 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x059a66c9 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x05a79d0f blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x061f3251 tpm_seal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x064d879e nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0658097f net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0672552c sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x068bf666 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x06a3ad59 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x06e2f532 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x07952e49 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x07a06328 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x081531fc register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08f6cca4 css_general_characteristics +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0924c07b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x09383984 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0951555f appldata_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x0998b577 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x09be66a7 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x09e36b88 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x0a073934 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x0a5f478a md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0aa1cb6d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x0ac4d8bd gmap_enable +EXPORT_SYMBOL_GPL vmlinux 0x0af4f912 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b154539 user_read +EXPORT_SYMBOL_GPL vmlinux 0x0b5fdde6 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x0b7bcece cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x0bb258d8 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x0bd178f5 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x0be8c606 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfcbe86 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1f3e65 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c32537d ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0c419180 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x0c49530f trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x0c83f0c4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x0c8b4691 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd752fd crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x0d2dffc1 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d622661 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x0d67d176 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d98b9ac crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0d9e8677 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x0db54c9b kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e10248a kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x0e103297 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x0e22cba0 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0e4b0631 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x0e800e04 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x0e80306e fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ea8e93b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x0ed7ebf7 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x0ed81856 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x0f0331a4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f399ae8 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x0f3a6e87 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f7ce844 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0f7cf3d3 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x0ff818dc __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10339722 zpci_iomap_start +EXPORT_SYMBOL_GPL vmlinux 0x1042279f dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x1095cfa0 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x10a1017f vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x10f3a754 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x11333756 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x1181b0e7 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x1185e270 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11c8cdfd pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x11ccf058 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x11cf253e ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x11d79dd9 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x11dcffcd regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121e5811 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x122044e0 device_del +EXPORT_SYMBOL_GPL vmlinux 0x124e14e5 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12654d16 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127fcb6c blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x12bee016 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x12ee68ed crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x12f82ac8 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13381435 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x134e80cf __class_create +EXPORT_SYMBOL_GPL vmlinux 0x135148c9 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x13679f6a cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x137b0d41 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x13812c4a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13c48632 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13cf7314 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x1402b619 gmap_test_and_clear_dirty +EXPORT_SYMBOL_GPL vmlinux 0x140b8294 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x144cf79f set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x148c8fce fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x14e3403e pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x15222980 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x1536f523 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x157bc422 s390_enable_skey +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15c629fe dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1611c153 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x161edc82 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x164591c8 css_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1681c0c0 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x1699b470 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x16fc79cf bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x172f2286 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1748f8e2 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x1762549b put_pid +EXPORT_SYMBOL_GPL vmlinux 0x176dc0b6 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x17c43892 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x17d6d716 gmap_translate +EXPORT_SYMBOL_GPL vmlinux 0x181d09a5 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x18349df7 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x183bff8b platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x18440c53 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x184e19cc rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x1851d1d3 regmap_fields_force_write +EXPORT_SYMBOL_GPL vmlinux 0x18546599 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18a30bef wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x19372feb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x193df000 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x1949b81a blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b13e78 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x19b734fe dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x19bfdb23 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x19d6af83 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x19dd1497 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x19e575de skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x19ef4098 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19ff1e2d nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x1a370ee5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x1ac8b25d dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae510ad transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x1af90707 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x1b6c5a67 chsc_error_from_response +EXPORT_SYMBOL_GPL vmlinux 0x1b719468 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1b738363 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b7c9219 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bbbb571 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1beb66d7 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x1c54bc44 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c8688e3 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ce39310 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1ce8c6d4 pm_complete_with_resume_check +EXPORT_SYMBOL_GPL vmlinux 0x1d03c90c ccw_device_get_chp_desc +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d4b250a tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d7518c8 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d845c15 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x1dcb4cd6 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x1dd150e7 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1de97006 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x1dfc5c23 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x1dfc6f01 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x1e03da08 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x1e557df6 component_del +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7434c8 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7c390c virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1eb24e07 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebb5b0f device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee4bf61 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x1f00a381 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f2e6750 ccw_device_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f3a07f6 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x1f603563 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcaf22b _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x1fe2be0a regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1fe970e6 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x2008bdd0 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x20388738 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x20b2a32c inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x20b56cee skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20ee94c9 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x210f8f8b ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x213d9be3 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x213ec619 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x214eb583 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x2158ba33 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x2163f487 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b30b16 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21cf9a9b tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x21f0d2e5 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22825978 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22cb3639 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x22e20b10 chsc_siosl +EXPORT_SYMBOL_GPL vmlinux 0x22e244b1 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x2310335c pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x233f5316 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x237d59f6 zpci_load +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a3ef06 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x23b0e9f5 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x23c8b358 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x23d3c76e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x23f4fcbc request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x23f92ab7 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x23f9e051 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x240107a6 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x241bfd9f zpci_store_block +EXPORT_SYMBOL_GPL vmlinux 0x2422fdae cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24653231 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x24808648 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x248b24f6 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x249152c9 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x2498bf20 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24addc00 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x24c44fb9 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x24c6beee nr_iowait +EXPORT_SYMBOL_GPL vmlinux 0x24dc1cbc crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x25158c56 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x2518ae01 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x2524da0b kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x2563bba1 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x2568c8fa tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x2586cdbd dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x25d2363d pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x2607a61d css_chsc_characteristics +EXPORT_SYMBOL_GPL vmlinux 0x2612ec99 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2669f4b8 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2671959f fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x2687476b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x26b24b71 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c8c57b transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f53ff0 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2703e6d6 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x277abc58 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x27b120e9 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x282e5875 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x2837d6c5 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x2865ad25 gmap_disable +EXPORT_SYMBOL_GPL vmlinux 0x287029e6 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x28d5d9b5 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x28d8e719 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x29181cc2 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x293144f9 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x293ae2b7 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x29463f99 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x2973d4fc anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x29b01b60 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x29b421ce inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x29bcaa6e kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x29c28efc pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a133ecc pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x2a1538ca lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x2a1a30bc sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2a217d0a pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2a5e21cb regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a74d6b0 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x2a9b0029 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x2ab9288b register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x2abeb546 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x2ac49b02 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x2ad9bd50 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x2b007b88 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x2b0db89b pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x2b22c269 device_add +EXPORT_SYMBOL_GPL vmlinux 0x2b27c257 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0x2b2f2d16 cmf_readall +EXPORT_SYMBOL_GPL vmlinux 0x2b67c47d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x2bad91fe ipl_info +EXPORT_SYMBOL_GPL vmlinux 0x2c28cfdb klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4486d8 gmap_fault +EXPORT_SYMBOL_GPL vmlinux 0x2c4cc26f virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x2c612190 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x2cd83d69 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x2cdc04d9 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf0c270 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2d0b61ec device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d325512 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d55a3f3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2d6162e6 gmap_unregister_ipte_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2d7b79d8 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x2da15439 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x2dc259c3 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2df1ba0d memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x2df9130c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x2e1d43cf lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x2e201d67 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e30487b event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x2e35b63e __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2e5af764 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x2e6d6506 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2e6e989a add_memory_resource +EXPORT_SYMBOL_GPL vmlinux 0x2ea9920f kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec92012 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x2f3ce25e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f66c85e ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x2f7aa148 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2f8d55bb ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2fae075f fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x30323eac alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x30a29396 blkg_print_stat_ios_recursive +EXPORT_SYMBOL_GPL vmlinux 0x30aa3178 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x30acc8c8 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30cfdb08 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x30d9de10 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x30ec70c0 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310d8534 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x31188b1b inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x31265a61 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x312ec619 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x317c1820 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x317e9087 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x3181ba11 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c69afc md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x31da4494 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3231bae5 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x3258b990 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32901d4e scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x3299b7dc regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x329f4b3f tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x32ac2d48 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32e74cbf devres_add +EXPORT_SYMBOL_GPL vmlinux 0x3300a2d9 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x332ba819 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x3331c3ec crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x3333940c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3363850e key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x336f7a61 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x33769a02 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x33823078 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x33e87c6f fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x33f62439 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x341e815e unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x347c8298 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x347d4168 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349fd715 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x34a6fa23 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0x34c2827f crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x34d6dea0 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x34ed1bd2 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x34f06c1d crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x353ff733 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3547dc2b setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x3548c52e regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x35533914 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x3556b0ee pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x35595b0e crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x35655188 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x35725cf2 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x3587c346 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x35bb37f9 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x35bf74bd elv_register +EXPORT_SYMBOL_GPL vmlinux 0x35c58fa7 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x35d5079b pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3624d2f4 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x3652a74f sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x367a2cd0 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x368f3ad4 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x36963efa security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a7eff5 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x36c95813 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x36e9a09a ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x36f03aee bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x37044b64 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x372231b6 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x37316cf6 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x37b12541 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x37b792d5 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x37ceea7b perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x37d0a334 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37eb4efa x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x38566156 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x38931a3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x38b01061 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x38c5cd2e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x38e9ca90 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x390865bb fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x393fa563 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x393ffa6f asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x397b6f9c tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x39973dd7 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39a27a3b system_verify_data +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ed0723 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x39fd8fbd dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x3a007386 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a61ee79 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x3a735510 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aafbff1 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3abfc6dc inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x3b15cb8d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x3b2713f8 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x3b2cf8b2 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x3b35efcc rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x3b8794fd __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x3b8d701a kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x3bf62667 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3c2b51af aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x3c478eae __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3c4bee1e sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x3c65fe61 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x3c6c0072 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3c747993 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ca1dd91 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3cca1fa7 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d6d7e96 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x3dc5d910 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd1f8a9 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df7d7f4 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2a75fe fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e64f70c css_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e84d467 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3e948de9 unregister_reset_call +EXPORT_SYMBOL_GPL vmlinux 0x3ed860a2 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f16a4bb restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x3f5bdce2 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x3f91f887 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3fd2f6fb chsc_sadc +EXPORT_SYMBOL_GPL vmlinux 0x400500e2 disable_cmf +EXPORT_SYMBOL_GPL vmlinux 0x403a7423 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404a1b0d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406608c7 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40a9a22f device_rename +EXPORT_SYMBOL_GPL vmlinux 0x40be66b5 ccw_device_get_schid +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e192c9 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x40f45b9a sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x413b5e74 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x41811958 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41bbb095 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x41d094f3 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x41f5aca8 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4223ee4b zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x4236a0ca perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424b0f07 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4298a211 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x429e0e0f crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x42da672a __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x42ddf22d pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x43239f78 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x4328ccd6 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x43443c35 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c33665 isc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43edea9c __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x43f274be blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x4406e0a9 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44837152 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448641c6 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x44976881 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bfa743 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x44d4570a crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x44e60986 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x44eb3994 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4522d211 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x453ac28e cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x45495b76 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x454b65fd bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x455eb687 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45960716 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x45a6d7de percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45efd58b pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460838e9 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x462e3652 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x4639dae6 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463d9c5e flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4644cd5c fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x4645bdff __gmap_zap +EXPORT_SYMBOL_GPL vmlinux 0x467d0213 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46a0afb0 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x46bce9fe device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x46da5463 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x4704258d scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x4705c1d2 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4718bced module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x472c4947 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x473fc004 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47d5947b get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x47ffa3ff pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x480d662e crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x481d3eb2 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x485af036 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4894ebc6 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x48bf73a0 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x48c62e4a eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x48fec5d6 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x49563f3f gmap_register_ipte_notifier +EXPORT_SYMBOL_GPL vmlinux 0x497a6016 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499fcee6 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x49cfacf1 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x49e5e22e crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a22ab16 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x4a4c10a9 pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0x4a776a31 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x4a8df831 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab4851d md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x4abe26d1 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x4ac93f30 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x4afb2078 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4afb78b9 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x4b18565b static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x4b1bc5c6 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x4b2f68e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x4b840dfd probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x4b9660ef __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4bc08e9a map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4bc99708 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x4bf1cf5b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4bf5a58b ping_close +EXPORT_SYMBOL_GPL vmlinux 0x4c03ff4b __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x4c0cda12 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4c504f5e device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x4c59fd93 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x4c5c957d pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c60cccb ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8f4cab __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x4c9117c2 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x4c9d8558 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4cfafbdc pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d121b16 __dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0x4d2f1c3e pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4d2f210c fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d5a3bde page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x4d667a86 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4d6bd17b pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4d7c3e0d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4d8b0bd4 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x4dab6d01 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x4dae351c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x4e00343b alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1e1d84 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x4e1eba59 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4ec153c6 nr_running +EXPORT_SYMBOL_GPL vmlinux 0x4ee586bc unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4ef367bf device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f30b379 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x4f3a7ee3 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f5761e4 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7ba674 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x4f7f756b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x4f941341 pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x4fad7be9 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x4fcd6088 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fef5d80 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x50127eae pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x5016ee9d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x505c8e8a debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x5066de40 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50ad5314 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x50d07536 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51094c2e regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x510e72c2 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x51169696 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x512aac9c pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x514dbc9c tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x51562138 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x5157d77f __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x51d1d6b0 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x51e7ac00 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x51edb679 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x521993ef msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x52614348 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x52653c58 mmput +EXPORT_SYMBOL_GPL vmlinux 0x529406c7 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x52aba70f scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x52afe97d regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x52c0bf53 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x52daa696 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x52dc28cf __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x52ef6951 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x52f4b8d8 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x52f67ced l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x53058138 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x530dd8de gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x5324d04f bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x533e4e04 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x534b7623 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535972df x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5365cc4b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x53823ef1 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x5390cdb9 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x53a3aa62 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x53b08e81 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x543034b7 css_sched_sch_todo +EXPORT_SYMBOL_GPL vmlinux 0x54479024 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5469a66b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x546ca9ed vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x549295d0 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54ade7a8 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x54e54f4d vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x54ef3d03 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x5500bc07 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x550b697e proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x551c7b07 component_add +EXPORT_SYMBOL_GPL vmlinux 0x552c3096 device_create +EXPORT_SYMBOL_GPL vmlinux 0x55426897 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x55600b8d shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x559386b5 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x55b78672 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f2580b __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x55fe98f9 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x560b7137 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x560e23d4 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x56214589 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56395f57 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5650f2a9 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565eaf97 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x5667b3fd tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x5684943e shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568a9467 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x56b706eb gmap_map_segment +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56dc19da register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56eac551 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5725ddfe irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x572cf1a1 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5740b174 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x57462ccf kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c9755c pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x581f5969 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x588f7a99 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x58c4a760 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x58d1db0d bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5911ece8 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x595dc921 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x5974f3e5 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x59964977 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x59a48b91 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x59d95f6a tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a000384 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x5a1ad2af uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x5a24ef18 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x5a2b0921 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5a2c7443 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x5a592681 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8cbd77 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ac66de3 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x5acefe50 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x5b0f7ef5 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x5b32531e ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x5b4cc1d0 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x5bcd2b89 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bf23d8b pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5bf9ee0f pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x5c2f2906 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x5c71d21a sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x5ca8c6a1 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb508b3 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5cbb62b4 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc52580 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x5cde7302 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x5d346a7f security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5d3f5cda mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x5d5a0c65 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dd0c9b5 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e1d9608 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5e394bd7 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x5e3a50d1 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5e4ab9d6 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x5ebce339 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x5ec72b9d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x5eda18bd blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5f086912 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f233234 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x5f77fbbd pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5fa872c6 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x5fa9e060 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x5fab85ce key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6070f77e skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x607a8380 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6090dbef klist_init +EXPORT_SYMBOL_GPL vmlinux 0x60972458 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60c0ed01 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x60c2ad41 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x60c95db0 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x60ca03fd pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x60d14dc2 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6100c3e8 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x61246f15 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6153d6d1 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x616d8821 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x617e321c device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x619cbb64 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x619ce616 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x61a97e5f register_reset_call +EXPORT_SYMBOL_GPL vmlinux 0x61b79a73 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x61b7ff11 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x61b9205f n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x61d6d44d regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x61e7c969 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x61fc731a xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x6211aa7e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x622b738e mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6230d472 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x627a9b61 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x62d562d8 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x630bcf22 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x6329f62e crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x63387f77 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x634220cd pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x6343a9f0 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x634c646b device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x634edd90 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x638eeaf8 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x639c28d4 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x63f385e0 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x63f4dc09 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x63fcd891 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x643e0ce5 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x646da7c5 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x64b88595 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x64bf5dc2 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x64cf91df crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x64dac81b cio_disable_subchannel +EXPORT_SYMBOL_GPL vmlinux 0x652e76e9 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x65397018 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6554cd60 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x65644bfb __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x65992477 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c44676 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e744df sched_clock_base_cc +EXPORT_SYMBOL_GPL vmlinux 0x65ef8409 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6619a388 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x66434f6f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66a25234 chsc_ssqd +EXPORT_SYMBOL_GPL vmlinux 0x66b57917 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d756c1 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66de0e4f bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x66e46808 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x670cd84f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x67174282 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x67264360 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x673bdfcd pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6763064f platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a000ca dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x67a2f996 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x67ac4979 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x67adffed scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x67e03d88 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x6820af3f crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x683db734 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x68699179 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x6893ddc0 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x68b40b20 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x68e5109f rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x690b7e4f cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x6916707b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69562081 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x697c237d class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69f9600e list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a593235 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9e4e99 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6ab37d14 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x6addada6 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6adf512e device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x6b0599e2 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6b166ea8 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6bd191a4 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x6bd2f206 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6be5162c freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c11934f kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x6c243bb7 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x6c287c83 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6c844229 check_syslog_permissions +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cae2127 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d5925e3 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x6dbee2aa blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6dc5eb4a blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e0a65e7 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x6e0bbb5b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x6e30daea virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x6e66bf1d pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e968a33 __compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6ed58638 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x6ef60373 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6f2f9976 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x6f71be54 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x6f7e5c91 bpf_skb_vlan_pop_proto +EXPORT_SYMBOL_GPL vmlinux 0x6f821920 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6f9a2f63 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700a02f7 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x7020b92f shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x703313d3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x703d1ca7 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x70748eb1 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x707c9608 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x707d5edc save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x707e63fd __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7140c745 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71a2846e iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x71bdcbf9 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x71d81ee4 find_module +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x721e75a8 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x7259f282 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7265afba __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x726aff44 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7293e9d5 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x72de87f7 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x72e05b92 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x72e74e57 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x72ee7b6c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x72f70eba __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x7330d845 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x73598447 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x738804de debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x739cc043 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x73b83e28 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f5b4db debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x740ae7c7 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x740eaf9c fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x741b7960 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x743124ef blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x7450eb23 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746a4d24 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x74937272 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7544c06b tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x7544f807 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x7556bd7c metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759c5a56 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x75b589d3 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x75c446c2 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x75fa5fb0 vtime_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x75fbb9ab tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x76181e75 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x76436cf8 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x767e3da4 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76a754a5 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x76b84299 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x777237ce __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x77bac45a pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x77be27c4 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x77c23f37 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x77ceee86 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x77f2c996 cio_enable_subchannel +EXPORT_SYMBOL_GPL vmlinux 0x7801a148 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x78054cda debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x783179ea dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x78462fb1 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x7861348d inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7862ab80 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7863625a blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x787bf0f5 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x78aac33c rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78cef447 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x7902ec10 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79793c35 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x7994fd1a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x799a9b29 enable_cmf +EXPORT_SYMBOL_GPL vmlinux 0x79ab2c60 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x7a0bf482 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x7a2ec798 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x7a4f0a65 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x7a77b6fc pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x7a8aaba0 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa071b9 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x7aa4ba2f netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ac1452f crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7aec2ad1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b2ce90a pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x7b2da838 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x7b3f64c4 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7ba90842 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x7bbe3cdc kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x7bebab0b __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c093d28 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x7c1a685d nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7c330269 blkg_print_stat_bytes +EXPORT_SYMBOL_GPL vmlinux 0x7c45f909 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x7c47f0d7 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7c4e872e cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x7c6bd895 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x7c735f17 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7c7bcb59 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x7c90e42d kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x7cc8c82a srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cef13b8 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d6f5593 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x7dadaa2c dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x7dc94e36 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de1919b trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x7df241bd inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x7e15e53d virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7e252ac2 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x7e31bb79 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x7e370340 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7e537d0f platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e7dc6fe device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x7e927f92 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x7e93422f kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ebfbacc tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x7eda37d1 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x7ede27d9 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7ede5450 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x7eeaef2b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7eed884a __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x7f0f3d99 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f17dd85 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x7f42981b blkg_print_stat_ios +EXPORT_SYMBOL_GPL vmlinux 0x7f71169f gmap_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7f73331d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f8e8466 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x7fa106b5 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7fbed5b5 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fcaae7a tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x800d674a iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x802d8776 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x805c1f5c relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806b368b posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b1c68d tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f83d04 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8155fbbe hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x81783e93 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x818056ab ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x81917c84 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x82285c3c skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8265ece4 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x826ccb11 device_register +EXPORT_SYMBOL_GPL vmlinux 0x82b7935b gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x82cb840a bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82da1d98 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x8300f56e register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x831bef99 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x8338b656 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b0816e __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x83bbe0da of_css +EXPORT_SYMBOL_GPL vmlinux 0x83c72b9b ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x83cd22fd debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x840c9180 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x842a72ae find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x84598c9f device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x849cbdb5 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x84b42af1 cond_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x84f1290e kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8549f401 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d9d414 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x861c4ad7 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x86364ffe kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8636c139 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x863ca66e disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8663cdf9 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x8674f48e cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86861cbf hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a139c1 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x86b04dad ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x86c18440 zpci_store +EXPORT_SYMBOL_GPL vmlinux 0x86ed23e5 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x86ef0efc __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x87225a2d kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x8727c9a4 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x8742dcaf zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x877b3c1a rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8838b9b2 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x885985d0 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8894c5ad sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x89041987 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x890b1174 s390_dma_ops +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ecb15 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89518e84 vtime_account_system +EXPORT_SYMBOL_GPL vmlinux 0x896d712a sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x8987ade1 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x899ea92a component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x89c06d61 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x89c9a096 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x89d0b9b3 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x89e4d53e blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x89ecaa2e vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x89f908c5 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x8a241005 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x8a5226f1 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x8a5df34d kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x8a7892d0 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x8ab6dd55 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adccc6f debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x8adf75d9 pci_debug_msg_id +EXPORT_SYMBOL_GPL vmlinux 0x8afb1461 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x8afc47c1 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b0af065 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x8b3c5a32 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x8b598874 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8b66639a component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x8b6c2a4a skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x8b7dfa69 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8b93d72e iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x8bc5364b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8bf7cb17 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c7ebb8a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8ca5ca2d regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x8cab381a kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8cd8f623 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d31d4b5 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8d7ece0e regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d82842e __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8d9b7a42 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da5dc93 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x8db616a5 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e37ab56 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x8e3d78ea pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x8e664bbb scm_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8edb00d4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x8ee68032 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8efc396b devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f082904 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x8f103ad6 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x8f251863 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8f44464b watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8f681035 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f746a9e debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x8fc4c4b2 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8fef7550 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9041c4a1 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9050961f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90974043 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c1c4f0 css_sch_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x90c8b117 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x90ca4fa3 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x90cd2910 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x90cfe616 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x90e5d678 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x910ca596 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x912de4cb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x9145e684 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x914da882 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x91584e76 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x9178d035 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9229b0ef __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92517ff5 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x929fdd77 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x92b1e410 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x92bb3888 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x930f37bf regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x93196dec dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9337e3c9 device_remove_property_set +EXPORT_SYMBOL_GPL vmlinux 0x933bfdce shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x9343ae40 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x936614b0 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x936b39c6 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x937b9903 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x93aaa801 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x93c240f5 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x93e190d9 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x93f72cc4 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x941b2eb9 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94346fcd crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x9448964d file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x9482b4b3 get_state_synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x94b7f620 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x94d04dac perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fc3651 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9523dbb1 device_move +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9533baaf tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x95395e0a gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95459672 appldata_diag +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95e0ee36 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x960db597 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9643a24f tpm_unseal_trusted +EXPORT_SYMBOL_GPL vmlinux 0x964e22fe pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x9663daf2 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b56338 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x96e69b3f __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x96fa7906 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x971d8696 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x9735c8bf wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975a5942 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x978793f5 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x979886fa find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x97c3aded kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97fb608c cmf_read +EXPORT_SYMBOL_GPL vmlinux 0x98018c8b x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x982ef5e9 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x98314fd2 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9834ec2e gmap_ipte_notify +EXPORT_SYMBOL_GPL vmlinux 0x98440ab2 cio_update_schib +EXPORT_SYMBOL_GPL vmlinux 0x9847cc69 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98902ade ccw_device_siosl +EXPORT_SYMBOL_GPL vmlinux 0x989c83e8 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x98f55986 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x98f73415 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x98f8b355 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x992745d2 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99886c02 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x999ebd40 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x99bab161 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x99e47eb2 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x99ff25e8 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2a0934 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x9a30c641 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x9a4ef838 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9a679adc mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9a747af3 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x9a826a02 percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a93ce70 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9a9f94d0 percpu_up_read +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b2f0067 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x9b357e92 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x9b399fe3 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x9b43027f regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x9b5700cf devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x9b71dba5 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9b9e108a dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x9bbf3f41 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x9bc8d593 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf37c77 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x9bf6d724 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x9bfec512 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x9c07aeb4 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9c0b4ce9 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9c0e770c crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9c29e5d7 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9c3d4bd2 zpci_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x9c7156e5 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9caf85c6 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdcef1e inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x9cf6097c get_ccwdev_by_dev_id +EXPORT_SYMBOL_GPL vmlinux 0x9d170e7e inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x9d1ee5af inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x9d1efc78 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x9d33573c sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9d532ed0 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x9d57e39e ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x9d78d81f blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x9d9c3529 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x9de5ae96 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x9dfda90c disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x9e25aa53 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9e3a689f sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e79708f device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x9e89efb8 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x9e915b6c crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x9eaca684 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x9ebd37fb blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9f3564db regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x9f5e3a8f regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x9f6f0977 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9f713849 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9f871975 hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x9fac0d05 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x9fc7716c component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9fc89d7a debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x9fcc188d fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe85d60 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa01f3895 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xa034d09a driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa076c12c tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xa07d808c list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xa0b6d754 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa0bd1bb9 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xa0e87324 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xa12f89eb devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xa1398c23 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xa16c031e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa1865944 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19148bf regmap_write_bits +EXPORT_SYMBOL_GPL vmlinux 0xa196a63c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa1e648d6 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa268cd3d debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa29a6879 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xa2a3038a pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xa2a97b66 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b29b2e unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c6c7d2 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xa2d1941d get_device +EXPORT_SYMBOL_GPL vmlinux 0xa30f05c8 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa36e5b8b xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa38868ce uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39a241a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa43487a4 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xa4382094 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xa46b3fa3 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xa4a42813 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0xa59ea104 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xa5a41841 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa5a5c244 appldata_unregister_ops +EXPORT_SYMBOL_GPL vmlinux 0xa5a98589 fib_select_path +EXPORT_SYMBOL_GPL vmlinux 0xa5d34efd subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa6030e28 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63bcd73 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa644f0fe crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa683213c blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa6b10e84 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b708e4 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xa6c5400d __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0xa6e17ff6 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f16155 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xa6f64d75 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa72c1f5c public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xa72f9498 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xa745afa8 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xa75ffa93 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xa763126a crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xa77d314f iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa78f491a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xa79f8d87 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7b656c5 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xa7bbc791 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xa7c0b84e kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa7c620a7 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xa7d36bea crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xa80619fe trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xa81c8f5d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xa84ed0c5 devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa86f3336 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa895917f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa8ac3a64 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc2c68 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa8dc0b10 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xa8fcd052 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa957e83c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xa99648a9 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ff15b9 s390_enable_sie +EXPORT_SYMBOL_GPL vmlinux 0xaa1e3af8 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xaa20a08d kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xaa7b3b80 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xaa9e63be task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xaaa8f532 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaef58fc pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xaaf2f1e7 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xaafb3df3 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xaafff901 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xab2842b2 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab97a97d s390_handle_mcck +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabe12262 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabe26664 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xabf3c7cc crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xabfc415d bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xac208973 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xac23b5f5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac26ba12 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xac2d9a7d tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xac5286ef sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xac8d736c raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xaca06a80 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xad217378 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xad3dfa13 lgr_info_log +EXPORT_SYMBOL_GPL vmlinux 0xad51b9ef __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xad8cd97d shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xada004ca ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xadaaa3ae diag308 +EXPORT_SYMBOL_GPL vmlinux 0xadb9be23 gmap_unmap_segment +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1f973d cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xae314e62 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xae3df0db udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae76991a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaede82b9 __gmap_translate +EXPORT_SYMBOL_GPL vmlinux 0xaee16873 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xaef3db4c crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xaf37e6f7 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xaf69c75d pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xaf7bb7ca srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xaf813739 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xaf836ecf blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xaf93bd93 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb031e283 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04a2874 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xb04e2eab __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb0962a03 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0da5f8d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xb10c0d79 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb1171587 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xb134fda4 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb13edb49 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb16615d8 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1a8d017 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2137262 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xb23fcf53 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xb26030b8 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2b1412a __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb2cdcfad crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xb2e2156c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb30c08f5 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb3a0c9a9 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xb3aed608 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb3f2d9d5 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xb3ff57a0 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xb4221fec register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xb45b4f7e chsc_pnso_brinfo +EXPORT_SYMBOL_GPL vmlinux 0xb4771539 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xb47983d6 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xb47cafd7 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb4a21f8f scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb517b950 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xb52386a1 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5381118 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xb56b1c4f blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xb5823567 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5bc0a50 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xb5c0bf3e perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6064775 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb65277dd regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xb6656c4e device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xb6b5cf1c trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xb6c3742e gmap_free +EXPORT_SYMBOL_GPL vmlinux 0xb74f84ed trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xb75fc28f simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xb76e10b2 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xb7be49ea fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xb7c5694a ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xb7ed9e9d sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8095bfe percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0xb80f40c2 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb81a9d64 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xb8253d5c tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb82e254b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xb84e429b tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xb85a4250 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb899e960 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb8acab88 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xb8b9ea81 put_device +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e49dfd split_page +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb907b442 scm_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xb93197cf tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb93e981c fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xb94fccb6 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xb953c562 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xb9690f0a __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xb98ad5f3 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xb9bc1869 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c92ab4 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9db0431 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xb9f065de __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xba21053b inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xba63d1c6 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xba8a34e2 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xbaebc50a free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xbaf6d630 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0xbafdafb6 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb592bcf pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xbbc40a71 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0xbbc5c2a8 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xbbc9b193 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbc10ac59 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xbc3c089d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc72d201 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbc7354e9 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xbc86dcab pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xbc87609a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbbd266 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcbe4277 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd7d321 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf180e3 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xbcf89367 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6a481f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd7e7683 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbd880ac5 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbd96fe5a pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd90238 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xbdf4eaf3 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbe359e9e device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6d74b3 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xbe7430ee debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebea0be vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbef2241d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xbf0cccd1 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xbf2bf743 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbf6168c4 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xbf8639fb devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xbfc9fed2 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbfd6cfd5 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff8a691 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc02cfdde sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc0365a09 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b1d449 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc0d15f2e unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e165be unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc12869ac devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xc130b03e memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc17dbbd0 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xc195d630 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xc1c983f1 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2517490 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xc26d717f regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xc2c74443 scm_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2e4435b iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc2e58432 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0xc2ebce1d __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xc321fdfa __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xc32947ba fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xc3404897 md_run +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc3585345 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc383d739 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xc3ddd126 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xc4125831 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xc446c917 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xc476ae6f nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc48e2bc1 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc4ad7ef9 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xc4ba13da device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc4c819c2 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc4d0226d dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc4e811da sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc4f02041 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xc511cd47 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xc513c98a device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xc519a39d devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc556bc26 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc55a4948 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a9ea9d tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc5e2a4f5 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc64b29e4 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67977dc inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6b166a7 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xc6c70aae rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xc705f5dc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0xc71b030d __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xc72932c5 blkg_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xc72dc0bf blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7318e5d iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xc7417b8c add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xc762cbba pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xc7761e05 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc7814eb2 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xc78a5d54 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xc7a0d025 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d414f1 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ec2cce tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0xc808ccc6 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xc8277f77 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc83a2d48 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc9d41557 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca30f459 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xca5fe4a0 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xca78d452 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xcaa02832 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xcaa695bc fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcaabca9c platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcae86621 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xcb1bf797 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5373c6 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0xcb6cd435 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xcba6e8cd __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcba6f00a pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xcbdb1f50 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf062f4 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xcbf21ca7 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xcc1583e6 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xcc2f14a5 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xcc4704bb tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcca2bc0f debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xcca8d1ef regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xccb45f4d virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xccb537fa for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xccb78500 blkg_print_stat_bytes_recursive +EXPORT_SYMBOL_GPL vmlinux 0xccce6279 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xccdf0c0a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xcd0508a9 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xcd0f0b07 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xcd10bd1a blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xcd4d5e3a each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xcd64aa74 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc61a4f scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdca7804 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xce2109cc kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xce28b4e4 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xce4ae714 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce767cec list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xce865e96 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xcebe8c91 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xcecba454 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcf0c1701 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xcf3423f1 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xcf4e767d single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf643564 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xcf7b0223 chsc_scm_info +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xd005637e single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd031b589 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0416c02 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xd0417a7f shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd050b70e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xd058388e tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xd05fc48f skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0681b4b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e737c0 gmap_discard +EXPORT_SYMBOL_GPL vmlinux 0xd0ed3680 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd0f304ad pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0xd12d533b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd18ab1e1 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd1a4e0b6 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xd1af7efa __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd1c4a044 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xd1e7e217 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd247b5db atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27ed969 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xd28040da root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd286ce5b ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd2900125 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xd2cb27cc scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xd2e00625 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xd2fdd182 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3243ae8 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xd352f029 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xd3e2186d crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd3f800bc sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd442db7d sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xd4561b74 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd47057d1 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4fef2ce unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xd500b988 s390_reset_cmma +EXPORT_SYMBOL_GPL vmlinux 0xd5276f25 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5a16283 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xd5ae4765 dax_pmd_fault +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5daed76 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xd5e2f613 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xd5fd4ead tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd634ca81 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xd649ee9f dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xd663caf2 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd692a729 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xd6c4b1ab kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xd6f8fdeb transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7135132 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xd76da7db tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xd777e781 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd77e8365 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd7aaf233 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7bf94d8 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xd7c8e8cd register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7dcbe8b register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xd7e62853 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xd7e82665 ccw_device_force_console +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8415f0f md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xd8659e6b bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87d6f7d virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xd8f64bb2 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd906fa22 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xd90d29b1 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd93a9d5b kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xd940a397 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94d5bdc css_sch_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9515af1 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xd951c945 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9843ff6 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0xd9adbc0c rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd9da19e2 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda3f3e8a isc_register +EXPORT_SYMBOL_GPL vmlinux 0xda489a78 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xda494dd4 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xda6cf0e9 pci_debug_err_id +EXPORT_SYMBOL_GPL vmlinux 0xda7e7320 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xdaa519ff kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdb53cb2c virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xdb644511 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xdb65ee9d devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xdb6bbc27 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba45289 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xdbaaa122 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbc80e44 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdbf4d0e3 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc5123a6 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdc6f13dd blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc99ca01 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc9fb2b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xdcef91fc sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xdd240eb4 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xdd2cc2eb alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd325bac device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddec18a7 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xde071df9 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xde32b1ac hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xde8f1c25 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xde9b6f9a task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdebaf9f2 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xded5d8e0 irq_stat +EXPORT_SYMBOL_GPL vmlinux 0xdeff8771 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xdf08e866 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1e358b crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdf3933c1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdf397a39 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xdf52902c __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xdf887260 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xdfb95819 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xdfd03209 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7a58 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe06388fd add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xe071d05d zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0xe090cf57 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xe1380626 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xe15ebee0 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1aa374d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe1c58909 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe1d8a113 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe23010f6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xe25e4d96 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xe2b28301 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xe2bd0421 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe2ff3549 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe34c845f posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe34eb4ef generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe39abb75 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xe39f019f rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe3b85844 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe3e18f71 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe3e2ee94 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xe40f94b3 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4aea4d7 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xe4b5a7e5 user_update +EXPORT_SYMBOL_GPL vmlinux 0xe4c511c3 bpf_skb_vlan_push_proto +EXPORT_SYMBOL_GPL vmlinux 0xe4c92bfd subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe4cae327 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xe4e7d505 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe53da7a7 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe604958a pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe63ba615 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe63c5715 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe656c40d regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe67c0265 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe6c5386b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6efc431 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xe73ec814 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe7488a47 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe74a742f fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe76484ff __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7701952 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7b718df chsc_determine_channel_path_desc +EXPORT_SYMBOL_GPL vmlinux 0xe7d6842f firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe7dcf7e7 zpci_stop_device +EXPORT_SYMBOL_GPL vmlinux 0xe7e01f9f find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8092b2b insn_to_mnemonic +EXPORT_SYMBOL_GPL vmlinux 0xe80ed3a3 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe83e57c3 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe853f157 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe8557947 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe89c292c nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xe8d09f2f chp_ssd_get_mask +EXPORT_SYMBOL_GPL vmlinux 0xe8df9d14 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe8f6d5ba __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe8f98d7f kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xe9276c37 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9999393 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe9aad4c3 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xe9e09903 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xea0b5201 trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea21238c bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0xea2bfe79 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xea95cb5a memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xeab4590c elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeabf42c9 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xeaf08820 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xeb1b0fd3 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xeb331016 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xeb4162df kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0xeb49a1c6 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xeb6a2074 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfb6053 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xec04add9 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xec0d14a3 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xec13c83c si_swapinfo +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec278431 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xec3653bf blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xec39d51b device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xec40df13 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xec5218f3 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec94295a tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xed022b6c x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0xed0bb3c2 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xed133226 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xed5279d3 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xed892185 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeda3a884 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xedb70317 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xedcf4b6a bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xee24c5e2 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xee2e1859 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xee497f08 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xef0b865e debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xef13106c nr_threads +EXPORT_SYMBOL_GPL vmlinux 0xef15f11d xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xef421cde mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef7e35c3 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xef86e566 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefbbc296 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xf012c58b crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf0164d7a ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf076e906 gmap_do_ipte_notify +EXPORT_SYMBOL_GPL vmlinux 0xf0c3c535 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1156196 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf175c1c6 __ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf21ca42a __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2394834 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2acdcf8 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf2c7b3fe netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xf2d6f705 zpci_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf333e612 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf33fe1ca inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xf34b364c __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf35f59b7 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xf37a8e3e fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf37e4150 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4103fda vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf4151e61 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xf419e44f regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xf47bea9d smpboot_register_percpu_thread_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xf47c0561 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf48f5eca tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4c179dd relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xf4d0c78f hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fe2ef5 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xf4ff84ce scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf512698f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xf51b4ec2 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf52190fe pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf5564300 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xf5682766 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf57fcbb1 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf61b11cd __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf67a2ba4 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xf6a72a0d fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e66db6 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xf72fabcc chp_get_sch_opm +EXPORT_SYMBOL_GPL vmlinux 0xf7319fa1 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xf74acf4b class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7529920 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xf76778cb pci_proc_domain +EXPORT_SYMBOL_GPL vmlinux 0xf791bb73 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0xf7c5e0e8 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xf7d0e2c0 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xf7d80519 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7fd337d iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xf82a73dc trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf87349df call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xf8768917 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88c07d6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xf8cf943b blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8fd9e9d synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9628625 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf993e900 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf99832ba unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a63e4a bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9e382b3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf9f04dac mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa29061d tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xfa5dbb57 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xfa7c9614 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9cb660 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xfa9e335e hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfab980f6 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfadac245 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xfadda27a crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xfaf8ef50 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xfb018635 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3d1959 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xfb60e3dd rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfb6d0b66 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7ad47e bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xfb80ea57 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xfbbc9179 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbe6836e pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1096c7 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xfc26834c dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc415da9 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xfc4fcde8 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xfc5eb088 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc7bb044 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xfc8e167b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfca9d074 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xfd241f5e posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xfd2d5a61 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xfd60a133 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd624a9b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7f64a5 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xfd8e4563 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xfdc14513 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xfdc3ba3e tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xfdd7c403 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xfe0b0c8a crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xfe135ba0 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xfe3ec114 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xfe91c764 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfead60a0 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xffa1320b fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xffb74af4 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xffcb6b08 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xffd835e2 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xffe54e2a kvm_read_guest --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/s390x/generic.compiler +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/s390x/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.3.1-8ubuntu3) 5.3.1 20160211 --- linux-4.4.0.orig/debian.master/abi/4.4.0-5.20/s390x/generic.modules +++ linux-4.4.0/debian.master/abi/4.4.0-5.20/s390x/generic.modules @@ -0,0 +1,833 @@ +8021q +842 +842_compress +842_decompress +act_bpf +act_connmark +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +aes_s390 +af_alg +af_iucv +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +algif_aead +algif_hash +algif_rng +algif_skcipher +amd +ansi_cprng +anubis +ap +appldata_mem +appldata_net_sum +appldata_os +aquantia +arc4 +arptable_filter +arp_tables +arpt_mangle +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at803x +aufs +authenc +authencesn +auth_rpcgss +bcache +bcm7038_wdt +bcm7xxx +bcm87xx +bcm-phy-lib +be2net +binfmt_misc +blocklayoutdriver +blowfish_common +blowfish_generic +bonding +bridge +br_netfilter +broadcom +btrfs +cachefiles +camellia_generic +cast5_generic +cast6_generic +cast_common +ccm +ccwgroup +ceph +ch +chacha20_generic +chacha20poly1305 +chsc_sch +cicada +cifs +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cmac +coda +cordic +cpu-notifier-error-inject +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +crypto_user +ctcm +ctr +cts +cuse +dasd_diag_mod +dasd_eckd_mod +dasd_fba_mod +dasd_mod +davicom +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcssblk +deflate +des_generic +des_s390 +diag288_wdt +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-verity +dm-zero +dp83848 +dp83867 +drbd +drbg +dummy +dummy_stm +eadm_sch +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +echainiv +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +eql +esp4 +esp6 +et1011c +faulty +fcoe +fcrypt +fixed_phy +fou +fpga-mgr +fs3270 +fscache +fsm +garp +gcm +geneve +gennvm +genwqe_card +gf128mul +gfs2 +ghash-generic +ghash_s390 +grace +gre +hangcheck-timer +hmcdrv +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +ifb +ila +inet_diag +intel_th +intel_th_gth +intel_th_msu +intel_th_pci +intel_th_pti +intel_th_sth +interval_tree_test +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipcomp +ipcomp6 +ip_gre +ipip +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +irqbypass +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isofs +iw_cm +jitterentropy_rng +kafs +keywrap +khazad +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +lcs +libceph +libcrc32c +libfc +libfcoe +libiscsi +libiscsi_tcp +libore +libosd +libphy +libsas +linear +llc +lockd +locktorture +lru_cache +lrw +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +marvell +mcryptd +md4 +md-cluster +mdio-bcm-unimac +mdio-bitbang +mdio-octeon +memory-notifier-error-inject +michael_mic +micrel +microchip +mip6 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlxsw_core +mlxsw_pci +monreader +monwriter +mpls_gso +mpls_iptunnel +mpls_router +mpt3sas +mrp +msdos +national +nb8800 +nbd +netconsole +netiucv +netlink_diag +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_exthdr +nft_hash +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nilfs2 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +notifier-error-inject +ntfs +null_blk +nvmem_core +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +openvswitch +oprofile +osd +osdblk +osst +overlay +p8022 +pcbc +pci-stub +pcrypt +percpu_test +pkcs7_test_key +pktgen +pm-notifier-error-inject +poly1305_generic +pps_core +prng +psnap +ptp +qdio +qeth +qeth_l2 +qeth_l3 +qsemi +quota_tree +quota_v1 +quota_v2 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +rbd +rbtree_test +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +rmd128 +rmd160 +rmd256 +rmd320 +rpcrdma +rpcsec_gss_krb5 +rrpc +rsa_generic +rxkad +salsa20_generic +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +sclp_async +sclp_cpi +scm_block +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_probe +seed +seqiv +serial_core +serpent_generic +sha1_s390 +sha256_s390 +sha512_s390 +sha_common +sit +smsc +smsgiucv_app +softdog +squashfs +st +ste10Xp +stm_console +stm_core +stp +sunrpc +tape +tape_34xx +tape_3590 +tape_class +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tcm_fc +tcm_loop +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tea +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +teranetics +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_printf +test_static_key_base +test_static_keys +test-string_helpers +test_udelay +test_user_copy +tgr192 +tipc +torture +tpm-rng +ts_bm +ts_fsm +ts_kmp +tunnel4 +tunnel6 +twofish_common +twofish_generic +uartlite +udf +udp_diag +udp_tunnel +unix_diag +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vhost +vhost_net +vhost_scsi +virtio-rng +virtio_scsi +vitesse +vmac +vmlogrdr +vmur +vport-geneve +vport-gre +vport-vxlan +vrf +vringh +vsock +vxlan +wp512 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xor +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +zcrypt_api +zcrypt_cex2a +zcrypt_cex4 +zcrypt_msgtype50 +zcrypt_msgtype6 +zcrypt_pcixcc +zfcp +zlib +zlib_deflate +zram +zynq-fpga --- linux-4.4.0.orig/debian.master/changelog +++ linux-4.4.0/debian.master/changelog @@ -0,0 +1,14205 @@ +linux (4.4.0-6.21) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1546283 + + * Naples/Zen, NTB Driver (LP: #1542071) + - [Config] CONFIG_NTB_AMD=m + - NTB: Add support for AMD PCI-Express Non-Transparent Bridge + + * [Hyper-V] kernel panic occurs when installing Ubuntu Server x32 (LP: #1495983) + - SAUCE: storvsc: use small sg_tablesize on x86 + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] CONFIG_ARMV8_DEPRECATED=y + + * Surelock-GA2:kernel panic/ exception @ pcibios_set_pcie_reset_state+0x118/0x280 + cxl_reset+0x5c/0xc0 (LP: #1545037) + - powerpc/eeh: Fix stale cached primary bus + + * Miscellaneous Ubuntu changes + - SAUCE: fs: Add user namesapace member to struct super_block + - SAUCE: fs: Limit file caps to the user namespace of the super block + - SAUCE: Smack: Add support for unprivileged mounts from user namespaces + - SAUCE: block_dev: Support checking inode permissions in lookup_bdev() + - SAUCE: block_dev: Check permissions towards block device inode when mounting + - SAUCE: fs: Treat foreign mounts as nosuid + - SAUCE: selinux: Add support for unprivileged mounts from user namespaces + - SAUCE: userns: Replace in_userns with current_in_userns + - SAUCE: Smack: Handle labels consistently in untrusted mounts + - SAUCE: fs: Check for invalid i_uid in may_follow_link() + - SAUCE: cred: Reject inodes with invalid ids in set_create_file_as() + - SAUCE: fs: Refuse uid/gid changes which don't map into s_user_ns + - SAUCE: fs: Update posix_acl support to handle user namespace mounts + - SAUCE: fs: Ensure the mounter of a filesystem is privileged towards its inodes + - SAUCE: fs: Don't remove suid for CAP_FSETID in s_user_ns + - SAUCE: fs: Allow superblock owner to access do_remount_sb() + - SAUCE: capabilities: Allow privileged user in s_user_ns to set security.* xattrs + - SAUCE: fuse: Add support for pid namespaces + - SAUCE: fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: fuse: Restrict allow_other to the superblock's namespace or a descendant + - SAUCE: fuse: Allow user namespace mounts + - SAUCE: mtd: Check permissions towards mtd block device inode when mounting + - SAUCE: fs: Update i_[ug]id_(read|write) to translate relative to s_user_ns + - SAUCE: quota: Convert ids relative to s_user_ns + - SAUCE: evm: Translate user/group ids relative to s_user_ns when computing HMAC + - SAUCE: fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw filesystems + - SAUCE: quota: Treat superblock owner as privilged + - SAUCE: ima/evm: Allow root in s_user_ns to set xattrs + - SAUCE: block_dev: Forbid unprivileged mounting when device is opened for writing + - SAUCE: ext4: Add support for unprivileged mounts from user namespaces + - SAUCE: ext4: Add module parameter to enable user namespace mounts + - SAUCE: fuse: Add module parameter to enable user namespace mounts + + * Miscellaneous upstream changes + - megaraid: Fix possible NULL pointer deference in mraid_mm_ioctl + - libahci: Implement the capability to override the generic ahci interrupt handler. + - ata: Remove the AHCI_HFLAG_EDGE_IRQ support from libahci. + - ahci_xgene: Implement the workaround to fix the missing of the edge interrupt for the HOST_IRQ_STAT. + + -- Tim Gardner Fri, 12 Feb 2016 09:49:05 -0700 + +linux (4.4.0-5.20) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1544637 + + * s390/cio: update measurement characteristics (LP: #1541534) + - s390/cio: fix measurement characteristics memleak + - s390/cio: ensure consistent measurement state + - s390/cio: update measurement characteristics + + * qeth: layer2 reports unknown state to network tools. (LP: #1541907) + - qeth: initialize net_device with carrier off + + * Collateral damage due to kernel configuration change enabling CONFIG_ZONE_DEVICE (Kernel 4.4 amd64) (LP: #1534647) + - [Config] CONFIG_ZONE_DMA=y + - mm: CONFIG_NR_ZONES_EXTENDED + + * perf enahancements for ppc64 (LP: #1521678) + - perf kvm/{x86,s390}: Remove dependency on uapi/kvm_perf.h + - perf kvm/{x86,s390}: Remove const from kvm_events_tp + - perf kvm/powerpc: Port perf kvm stat to powerpc + - perf kvm/powerpc: Add support for HCALL reasons + + * Soft lockup with "block nbdX: Attempted send on closed socket" spam (LP: #1505564) + - SAUCE: nbd: ratelimit error msgs after socket close + + * sleep from invalid context in aa_move_mount (LP: #1539349) + - SAUCE: apparmor: fix sleep from invalid context + + * Introducing ConnectX-4 Ethernet SRIOV (LP: #1540435) + - net/mlx5_core: Modify enable/disable hca functions + - net/mlx5_core: Add base sriov support + - net/mlx5: Add HW capabilities and structs for SR-IOV E-Switch + - net/mlx5: Update access functions to Query/Modify vport MAC address + - net/mlx5: Introduce access functions to modify/query vport mac lists + - net/mlx5: Introduce access functions to modify/query vport state + - net/mlx5: Introduce access functions to modify/query vport promisc mode + - net/mlx5: Introduce access functions to modify/query vport vlans + - net/mlx5e: Write UC/MC list and promisc mode into vport context + - net/mlx5e: Write vlan list into vport context + - net/mlx5: Introducing E-Switch and l2 table + - net/mlx5: E-Switch, Introduce FDB hardware capabilities + - net/mlx5: E-Switch, Add SR-IOV (FDB) support + - net/mlx5: E-Switch, Introduce Vport administration functions + - net/mlx5: E-Switch, Introduce HCA cap and E-Switch vport context + - net/mlx5: E-Switch, Introduce set vport vlan (VST mode) + - net/mlx5: E-Switch, Introduce get vf statistics + - net/mlx5e: Add support for SR-IOV ndos + - net/mlx5: Fix query E-Switch capabilities + - net/mlx5e: Assign random MAC address if needed + + * make wacom_w8001 work well in xenial (LP: #1542771) + - Input: wacom_w8001 - use __set_bit for evbits + - Input: wacom_w8001 - set BTN_TOOL_DOUBLETAP if we have 2fg support + - Input: wacom_w8001 - handle touch error case correctly + - Input: wacom_w8001 - split pen and touch initialization up + - Input: wacom_w8001 - split the touch and pen devices into two devices + - Input: wacom_w8001 - drop use of ABS_MT_TOOL_TYPE + + * virtualbox: update to 5.0.14-dfsg-2 (LP: #1542728) + - ubuntu: vbox -- update to 5.0.14-dfsg-2 + + * Miscellaneous Ubuntu changes + - [Packaging] git-ubuntu-log -- fix empty section formatting + - SAUCE: (noup) Update spl to 0.6.5.4-0ubuntu2, zfs to 0.6.5.4-0ubuntu2 + + -- Andy Whitcroft Sat, 06 Feb 2016 22:32:10 +0000 + +linux (4.4.0-4.19) xenial; urgency=low + + * update ZFS and SPL to 0.6.5.4 (LP: #1542296) + - [Config] update spl/zfs version + - SAUCE: (noup) Update spl to 0.6.5.4-0ubuntu2, zfs to 0.6.5.4-0ubuntu1 + - [Config] reconstruct -- drop links for zfs userspace components + - [Config] reconstruct -- drop links for zfs userspace components -- restore spec links + + * recvmsg() fails SCM_CREDENTIALS request with EOPNOTSUPP. (LP: #1540731) + - Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + + * lxc: ADT exercise test failing with linux-4.4.0-3.17 (LP: #1542049) + - Revert "UBUNTU: SAUCE: apparmor: fix sleep from invalid context" + + * WARNING: at /build/linux-lts-wily-W0lTWH/linux-lts-wily-4.2.0/net/core/skbuff.c:4174 (Travis IB) (LP: #1541326) + - SAUCE: IB/IPoIB: Do not set skb truesize since using one linearskb + + * backport Microsoft Precision Touchpad palm rejection patch (LP: #1541671) + - HID: multitouch: enable palm rejection if device implements confidence usage + + * [Ubuntu 16.04] Update qla2xxx driver for POWER (QLogic) (LP: #1541456) + - qla2xxx: Remove unavailable firmware files + - qla2xxx: Enable Extended Logins support + - qla2xxx: Enable Exchange offload support. + - qla2xxx: Enable Target counters in DebugFS. + - qla2xxx: Add FW resource count in DebugFS. + - qla2xxx: Added interface to send explicit LOGO. + - qla2xxx: Delete session if initiator is gone from FW + - qla2xxx: Wait for all conflicts before ack'ing PLOGI + - qla2xxx: Replace QLA_TGT_STATE_ABORTED with a bit. + - qla2xxx: Remove dependency on hardware_lock to reduce lock contention. + - qla2xxx: Add irq affinity notification + - qla2xxx: Add selective command queuing + - qla2xxx: Move atioq to a different lock to reduce lock contention + - qla2xxx: Disable ZIO at start time. + - qla2xxx: Set all queues to 4k + - qla2xxx: Check for online flag instead of active reset when transmitting responses + - scsi: qla2xxxx: avoid type mismatch in comparison + + * [Hyper-V] PCI Passthrough (LP: #1541120) + - x86/irq: Export functions to allow MSI domains in modules + - genirq/msi: Export functions to allow MSI domains in modules + + * Update lpfc driver to 11.0.0.10 (LP: #1541592) + - lpfc: Fix FCF Infinite loop in lpfc_sli4_fcf_rr_next_index_get. + - lpfc: Fix the FLOGI discovery logic to comply with T11 standards + - lpfc: Fix RegLogin failed error seen on Lancer FC during port bounce + - lpfc: Fix driver crash when module parameter lpfc_fcp_io_channel set to 16 + - lpfc: Fix crash in fcp command completion path. + - lpfc: Modularize and cleanup FDMI code in driver + - lpfc: Fix RDP Speed reporting. + - lpfc: Fix RDP ACC being too long. + - lpfc: Make write check error processing more resilient + - lpfc: Use new FDMI speed definitions for 10G, 25G and 40G FCoE. + - lpfc: Fix mbox reuse in PLOGI completion + - lpfc: Fix external loopback failure. + - lpfc: Add logging for misconfigured optics. + - lpfc: Delete unnecessary checks before the function call "mempool_destroy" + - lpfc: Use kzalloc instead of kmalloc + - lpfc: Update version to 11.0.0.10 for upstream patch set + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_ARM64_VA_BITS=48 + - [Config] Fixed Vcs-Git + + * Miscellaneous upstream changes + - cxl: Fix possible idr warning when contexts are released + - cxl: use correct operator when writing pcie config space values + - cxlflash: drop unlikely before IS_ERR_OR_NULL + - cxl: Fix DSI misses when the context owning task exits + - cxlflash: Removed driver date print + - cxlflash: Fix to resolve cmd leak after host reset + - cxlflash: Resolve oops in wait_port_offline + - cxlflash: Enable device id for future IBM CXL adapter + - cxl: fix build for GCC 4.6.x + - cxl: use -Werror only with CONFIG_PPC_WERROR + - cxl: Enable PCI device ID for future IBM CXL adapter + + -- Andy Whitcroft Fri, 05 Feb 2016 14:58:51 +0000 + +linux (4.4.0-3.17) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1541058 + * [Config] CONFIG_BLK_DEV_NVME_SCSI=y + - LP: #1531539 + * SAUCE: nvme merge cleanup + - LP: #1531539 + * rebase to v4.4.1 + + [ Andy Whitcroft ] + + * Revert "SAUCE: dm: introduce a target_ioctl op to allow target specific + ioctls" + - LP: #1538618 + * postinst -- detect symlinks correctly + - LP: #1536810 + + [ John Johansen ] + + * SAUCE: apparmor: fix sleep from invalid context + - LP: #1539349 + + [ Upstream Kernel Changes ] + + * powerpc/eeh: Fix PE location code + - LP: #1538909 + * powerpc/pseries: Limit EPOW reset event warnings + - LP: #1539102 + * lightnvm: fix bio submission issue + - LP: #1531539 + * lightnvm: fix incorrect nr_free_blocks stat + - LP: #1531539 + * lightnvm: add check after mempool allocation + - LP: #1531539 + * lightnvm: unlock rq and free ppa_list on submission fail + - LP: #1531539 + * lightnvm: move ppa erase logic to core + - LP: #1531539 + * lightnvm: refactor rqd ppa list into set/free + - LP: #1531539 + * lightnvm: refactor end_io functions for sync + - LP: #1531539 + * lightnvm: return the get_bb_tbl return value + - LP: #1531539 + * lightnvm: check bi_error in gc + - LP: #1531539 + * lightnvm: put block back to gc list on its reclaim fail + - LP: #1531539 + * lightnvm: fix locking and mempool in rrpc_lun_gc + - LP: #1531539 + * lightnvm: sectors first in ppa list + - LP: #1531539 + * lightnvm: move the pages per block check out of the loop + - LP: #1531539 + * lightnvm: support multiple ppas in nvm_erase_ppa + - LP: #1531539 + * lightnvm: move rq->error to nvm_rq->error + - LP: #1531539 + * lightnvm: introduce nvm_submit_ppa + - LP: #1531539 + * lightnvm: reference rrpc lun in rrpc block + - LP: #1531539 + * lightnvm: fix missing grown bad block type + - LP: #1531539 + * lightnvm: manage open and closed blocks separately + - LP: #1531539 + * lightnvm: add mccap support + - LP: #1531539 + * lightnvm: introduce mlc lower page table mappings + - LP: #1531539 + * lightnvm: core on-disk initialization + - LP: #1531539 + * lightnvm: introduce ioctl to initialize device + - LP: #1531539 + * lightnvm: use system block for mm initialization + - LP: #1531539 + * lightnvm: introduce factory reset + - LP: #1531539 + * lightnvm: ensure that nvm_dev_ops can be used without CONFIG_NVM + - LP: #1531539 + * blk-mq: add a flags parameter to blk_mq_alloc_request + - LP: #1531539 + * nvme: move struct nvme_iod to pci.c + - LP: #1531539 + * nvme: split command submission helpers out of pci.c + - LP: #1531539 + * nvme: use offset instead of a struct for registers + - LP: #1531539 + * nvme: split nvme_trans_device_id_page + - LP: #1531539 + * nvme: use vendor it from identify + - LP: #1531539 + * nvme: split a new struct nvme_ctrl out of struct nvme_dev + - LP: #1531539 + * nvme: simplify nvme_setup_prps calling convention + - LP: #1531539 + * nvme: refactor nvme_queue_rq + - LP: #1531539 + * nvme: factor out a nvme_unmap_data helper + - LP: #1531539 + * nvme: move nvme_error_status to common code + - LP: #1531539 + * nvme: move nvme_setup_flush and nvme_setup_rw to common code + - LP: #1531539 + * nvme: split __nvme_submit_sync_cmd + - LP: #1531539 + * nvme: use the block layer for userspace passthrough metadata + - LP: #1531539 + * nvme: move block_device_operations and ns/ctrl freeing to common code + - LP: #1531539 + * nvme: add explicit quirk handling + - LP: #1531539 + * nvme: move remaining CC setup into nvme_enable_ctrl + - LP: #1531539 + * nvme: move nvme_{enable,disable,shutdown}_ctrl to common code + - LP: #1531539 + * nvme: add a common helper to read Identify Controller data + - LP: #1531539 + * nvme: move the call to nvme_init_identify earlier + - LP: #1531539 + * nvme: move namespace scanning to common code + - LP: #1531539 + * nvme: move chardev and sysfs interface to common code + - LP: #1531539 + * nvme: refactor set_queue_count + - LP: #1531539 + * blk-integrity: empty implementation when disabled + - LP: #1531539 + * NVMe: fix build with CONFIG_NVM enabled + - LP: #1531539 + * nvme: fix another 32-bit build warning + - LP: #1531539 + * nvme: precedence bug in nvme_pr_clear() + - LP: #1531539 + * nvme: only ignore hardware errors in nvme_create_io_queues + - LP: #1531539 + * nvme: only add a controller to dev_list after it's been fully + initialized + - LP: #1531539 + * nvme: protect against simultaneous shutdown invocations + - LP: #1531539 + * nvme: don't take the I/O queue q_lock in nvme_timeout + - LP: #1531539 + * nvme: merge nvme_abort_req and nvme_timeout + - LP: #1531539 + * nvme: add NVME_SC_CANCELLED + - LP: #1531539 + * nvme: simplify resets + - LP: #1531539 + * nvme: do not restart the request timeout if we're resetting the + controller + - LP: #1531539 + * nvme: merge probe_work and reset_work + - LP: #1531539 + * nvme: remove dead controllers from a work item + - LP: #1531539 + * nvme: switch abort_limit to an atomic_t + - LP: #1531539 + * NVMe: Implement namespace list scanning + - LP: #1531539 + * NVMe: Use unbounded work queue for all work + - LP: #1531539 + * NVMe: Remove device management handles on remove + - LP: #1531539 + * NVMe: Simplify metadata setup + - LP: #1531539 + * nvme: fix admin queue depth + - LP: #1531539 + * nvme: factor out a few helpers from req_completion + - LP: #1531539 + * nvme: switch delete SQ/CQ to blk_execute_rq_nowait + - LP: #1531539 + * nvme: switch abort to blk_execute_rq_nowait + - LP: #1531539 + * nvme: special case AEN requests + - LP: #1531539 + * nvme: simplify completion handling + - LP: #1531539 + * nvme: properly free resources for cancelled command + - LP: #1531539 + * nvme: meta_sg doesn't have to be an array + - LP: #1531539 + * nvme: merge iod and cmd_info + - LP: #1531539 + * NVMe: Add pci error handlers + - LP: #1531539 + * NVMe: Export namespace attributes to sysfs + - LP: #1531539 + * nvme: Move nvme_freeze/unfreeze_queues to nvme core + - LP: #1531539 + * nvme: synchronize access to ctrl->namespaces + - LP: #1531539 + * nvme: fixes for NVME_IOCTL_IO_CMD on the char device + - LP: #1531539 + * nvme: make SG_IO support optional + - LP: #1531539 + * NVMe: Fix admin queue ring wrap + - LP: #1531539 + * NVMe: Use a retryable error code on reset + - LP: #1531539 + * NVMe: Remove queue freezing on resets + - LP: #1531539 + * NVMe: IO queue deletion re-write + - LP: #1531539 + * NVMe: Shutdown controller only for power-off + - LP: #1531539 + * NVMe: Export NVMe attributes to sysfs group + - LP: #1531539 + * i40e: fix build warnings + * net: i40e: shut up uninitialized variable warnings + * Drivers: hv: vmbus: fix build warning + * Drivers: hv: util: Increase the timeout for util services + * Drivers: hv: utils: run polling callback always in interrupt context + * tools: hv: report ENOSPC errors in hv_fcopy_daemon + * tools: hv: remove repeated HV_FCOPY string + * Drivers: hv: util: catch allocation errors + * Drivers: hv: utils: use memdup_user in hvt_op_write + * drivers/hv: cleanup synic msrs if vmbus connect failed + * drivers:hv: Export a function that maps Linux CPU num onto Hyper-V proc + num + * drivers:hv: Export the API to invoke a hypercall on Hyper-V + * drivers:hv: Define the channel type for Hyper-V PCI Express + pass-through + * Drivers: hv: vss: run only on supported host versions + * Drivers: hv: vmbus: Use uuid_le type consistently + * Drivers: hv: vmbus: Use uuid_le_cmp() for comparing GUIDs + * Drivers: hv: vmbus: Get rid of the unused macro + * Drivers: hv: vmbus: Get rid of the unused irq variable + * Drivers: hv: vmbus: serialize process_chn_event() and + vmbus_close_internal() + * Drivers: hv: vmbus: do sanity check of channel state in + vmbus_close_internal() + * Drivers: hv: vmbus: fix rescind-offer handling for device without a + driver + * Drivers: hv: vmbus: release relid on error in vmbus_process_offer() + * Drivers: hv: vmbus: channge vmbus_connection.channel_lock to mutex + * drivers:hv: Allow for MMIO claims that span ACPI _CRS records + * Drivers: hv: vmbus: Fix a Host signaling bug + * drivers/hv: correct tsc page sequence invalid value + * Drivers: hv: vmbus: Force all channel messages to be delivered on CPU 0 + * Drivers: hv: utils: Invoke the poll function after handshake + * tools: hv: vss: fix the write()'s argument: error -> vss_msg + * Drivers: hv: utils: fix memory leak on on_msg() failure + * Drivers: hv: utils: rename outmsg_lock + * Drivers: hv: utils: introduce HVUTIL_TRANSPORT_DESTROY mode + * Drivers: hv: utils: fix crash when device is removed from host side + * Drivers: hv: ring_buffer.c: fix comment style + * Drivers: hv: ring_buffer: remove stray smp_read_barrier_depends() + * Drivers: hv: ring_buffer: remove code duplication from + hv_ringbuffer_peek/read() + * Drivers: hv: remove code duplication between + vmbus_recvpacket()/vmbus_recvpacket_raw() + * Drivers: hv: ring_buffer: eliminate hv_ringbuffer_peek() + * drivers/hv: replace enum hv_message_type by u32 + * drivers/hv: Move HV_SYNIC_STIMER_COUNT into Hyper-V UAPI x86 header + * drivers/hv: Move struct hv_message into UAPI Hyper-V x86 header + * drivers/hv: Move struct hv_timer_message_payload into UAPI Hyper-V x86 + header + * Drivers: hv: vmbus: fix the building warning with hyperv-keyboard + * Drivers: hv: utils: fix hvt_op_poll() return value on transport destroy + * Drivers: hv: vmbus: Treat Fibre Channel devices as performance critical + + [ Upstream Kernel Changes ] + + * rebase to v4.4.1 + - LP: #1533461 + - LP: #1529624 + + -- Tim Gardner Fri, 29 Jan 2016 08:06:37 -0700 + +linux (4.4.0-2.16) xenial; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1539090 + * SAUCE: hv: hv_set_ifconfig -- convert to python3 + - LP: #1506521 + * SAUCE: dm: introduce a target_ioctl op to allow target specific ioctls + - LP: #1538618 + + [ Colin Ian King ] + + * SAUCE: ACPI / tables: Add acpi_force_32bit_fadt_addr option to force 32 + bit FADT addresses (LP: #1529381) + - LP: #1529381 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix for failed mediation of socket that is + being shutdown + - LP: #1446906 + + [ Mahesh Salgaonkar ] + + * SAUCE: Powernv: Remove the usage of PACAR1 from opal wrappers + - LP: #1537881 + * SAUCE: powerpc/book3s: Fix TB corruption in guest exit path on HMI + interrupt. + - LP: #1537881 + * SAUCE: KVM: PPC: Book3S HV: Fix soft lockups in KVM on HMI for time + base errors + - LP: #1537881 + + [ Paolo Pisati ] + + * SAUCE: arm64: errata: Add -mpc-relative-literal-loads to erratum + #843419 build flags + - LP: #1533009 + * [Config] MFD_TPS65217=y && REGULATOR_TPS65217=y + * [Config] disable ARCH_ZX (ZTE ZX Soc) + + [ Tim Gardner ] + + * Revert "SAUCE: (noup) cxlflash: a couple off by one bugs" + * SAUCE: (no-up) Update bnx2x firmware to 7.12.30.0 + - LP: #1536719 + * SAUCE: drop obsolete bnx2x firmware + * SAUCE: i40e: Silence 'may be used uninitialized' warnings + - LP: #1536474 + * [Config] CONFIG_ZONE_DMA=y for amd64 lowlatency + - LP: #1534647 + * [Config] Add pvpanic to virtual flavour + - LP: #1537923 + * [Config] CONFIG_INTEL_PUNIT_IPC=m, CONFIG_INTEL_TELEMETRY=m + - LP: #1520457 + + [ Upstream Kernel Changes ] + + * i40evf: fix compiler warning of unused variable + - LP: #1536474 + * intel: i40e: fix confused code + - LP: #1536474 + * i40e/i40evf: remove unused tunnel parameter + - LP: #1536474 + * i40e: Change BUG_ON to WARN_ON in service event complete + - LP: #1536474 + * i40e: remove BUG_ON from feature string building + - LP: #1536474 + * i40e: remove BUG_ON from FCoE setup + - LP: #1536474 + * i40e: Workaround fix for mss < 256 issue + - LP: #1536474 + * i40e/i40evf: Add a stat to track how many times we have to do a force + WB + - LP: #1536474 + * i40e: Move the saving of old link info from handle_link_event to + link_event + - LP: #1536474 + * i40e/i40evf: Add comment to #endif + - LP: #1536474 + * i40e/i40evf: clean up error messages + - LP: #1536474 + * i40evf: handle many MAC filters correctly + - LP: #1536474 + * i40e: return the number of enabled queues for ETHTOOL_GRXRINGS + - LP: #1536474 + * i40e: rework the functions to configure RSS with similar parameters + - LP: #1536474 + * i40e: create a generic configure rss function + - LP: #1536474 + * i40e: Bump version to 1.4.2 + - LP: #1536474 + * i40e: add new fields to store user configuration + - LP: #1536474 + * i40e: rename rss_size to alloc_rss_size in i40e_pf + - LP: #1536474 + * i40e/i40evf: Fix RS bit update in Tx path and disable force WB + workaround + - LP: #1536474 + * i40e/i40evf: prefetch skb data on transmit + - LP: #1536474 + * i40evf: rename VF adapter specific RSS function + - LP: #1536474 + * i40evf: create a generic config RSS function + - LP: #1536474 + * i40evf: create a generic get RSS function + - LP: #1536474 + * i40evf: add new fields to store user configuration of RSS + - LP: #1536474 + * i40e: Update error messaging + - LP: #1536474 + * i40e: fix confusing message + - LP: #1536474 + * i40e: make error message more useful + - LP: #1536474 + * i40evf: quoth the VF driver, Nevermore + - LP: #1536474 + * i40evf: allocate queue vectors dynamically + - LP: #1536474 + * i40evf: allocate ring structs dynamically + - LP: #1536474 + * i40e/i40evf: Bump i40e version to 1.4.4 and i40evf to 1.4.1 + - LP: #1536474 + * i40e: fix: do not sleep in netdev_ops + - LP: #1536474 + * i40e: remove unused argument + - LP: #1536474 + * i40evf: increase max number of queues + - LP: #1536474 + * i40evf: set real num queues + - LP: #1536474 + * i40evf: remove duplicate string + - LP: #1536474 + * i40e: Detection and recovery of TX queue hung logic moved to + service_task from tx_timeout + - LP: #1536474 + * i40e: Fix memory leaks, sideband filter programming + - LP: #1536474 + * i40evf: don't use atomic allocation + - LP: #1536474 + * i40e: propagate properly + - LP: #1536474 + * i40evf: use correct types + - LP: #1536474 + * i40e: use priv flags to control packet split + - LP: #1536474 + * i40e: Remove separate functions gathering XOFF Rx stats + - LP: #1536474 + * i40e: fix whitespace + - LP: #1536474 + * i40e/i40evf: use logical operator + - LP: #1536474 + * i40e/i40evf: Bump version to 1.4.7 for i40e and 1.4.3 for i40evf + - LP: #1536474 + * i40e: trivial fixes + - LP: #1536474 + * i40e: Fix i40e_print_features() VEB mode output + - LP: #1536474 + * i40e: chomp the BIT(_ULL) + - LP: #1536474 + * i40e: properly delete VF MAC filters + - LP: #1536474 + * i40e: don't add zero MAC filter + - LP: #1536474 + * i40evf: check rings before freeing resources + - LP: #1536474 + * i40e: use explicit cast from u16 to u8 + - LP: #1536474 + * i40e: Opcode and structures required by OEM Post Update AQ command and + add new NVM arq message + - LP: #1536474 + * i40e: hush little warnings + - LP: #1536474 + * i40e/i40evf: Add a new offload for RSS PCTYPE V2 for X722 + - LP: #1536474 + * i40e: clean whole mac filter list + - LP: #1536474 + * i40evf: change version string generation + - LP: #1536474 + * i40e/i40evf: Bump i40e to 1.4.8 and i40evf to 1.4.4 + - LP: #1536474 + * geneve: UDP checksum configuration via netlink + - LP: #1536474 + * geneve: Add geneve udp port offload for ethernet devices + - LP: #1536474 + * i40e: geneve tunnel offload support + - LP: #1536474 + * geneve: Add geneve_get_rx_port support + - LP: #1536474 + * i40e: Call geneve_get_rx_port to get the existing Geneve ports + - LP: #1536474 + * i40e: change log messages and error returns + - LP: #1536474 + * i40e: allow zero MAC address for VFs + - LP: #1536474 + * i40e: Look up MAC address in Open Firmware or IDPROM + - LP: #1536474 + * i40e: Fix Rx hash reported to the stack by our driver + - LP: #1536474 + * i40e: remove forever unused ID + - LP: #1536474 + * igb: add 88E1543 initialization code + * igb: don't unmap NULL hw_addr + * igb: use the correct i210 register for EEMNGCTL + * igb: fix NULL derefs due to skipped SR-IOV enabling + * igb: improve handling of disconnected adapters + * igb: Remove GS40G specific defines/functions + * igb: Don't add PHY address to PCDL address + * igb: Improve cable length function for I210, etc. + * igb: Explicitly label self-test result indices + * ixgbe: drop null test before destroy functions + - LP: #1536473 + * ixgbe: Delete redundant include file + - LP: #1536473 + * ixgbe: fix multiple kernel-doc errors + - LP: #1536473 + * ixgbe: Fix handling of NAPI budget when multiple queues are enabled per + vector + - LP: #1536473 + * ixgbe: Add KR mode support for CS4227 chip + - LP: #1536473 + * ixgbevf: Limit lowest interrupt rate for adaptive interrupt moderation + to 12K + - LP: #1536473 + * ixgbe/ixgbevf: use napi_schedule_irqoff() + - LP: #1536473 + * ixgbe: Remove CS4227 diagnostic code + - LP: #1536473 + * ixgbevf: use ether_addr_copy instead of memcpy + - LP: #1536473 + * ixgbevf: fix spoofed packets with random MAC + - LP: #1536473 + * ixgbe: Prevent KR PHY reset in ixgbe_init_phy_ops_x550em + - LP: #1536473 + * ixgbe: Add support for newer thermal alarm + - LP: #1536473 + * ixgbe: Use private workqueue to avoid certain possible hangs + - LP: #1536473 + * ixgbevf: Use a private workqueue to avoid certain possible hangs + - LP: #1536473 + * ixgbevf: Minor cleanups + - LP: #1536473 + * ixgbe: Refactor MAC address configuration code + - LP: #1536473 + * ixgbe: Use __dev_uc_sync and __dev_uc_unsync for unicast addresses + - LP: #1536473 + * ixgbe: Allow FDB entries access to more RAR filters + - LP: #1536473 + * ixgbe: Update PTP to support X550EM_x devices + - LP: #1536473 + * ixgbe: Correct spec violations by waiting after reset + - LP: #1536473 + * ixgbe: Wait for master disable to be set + - LP: #1536473 + * ixgbe: Save VF info and take references + - LP: #1536473 + * ixgbe: Handle extended IPv6 headers in Tx path + - LP: #1536473 + * ixgbe: Always turn PHY power on when requested + - LP: #1536473 + * ixgbevf: Handle extended IPv6 headers in Tx path + - LP: #1536473 + * ixgbe: Return error on failure to allocate mac_table + - LP: #1536473 + * ixgbe: Fix SR-IOV VLAN pool configuration + - LP: #1536473 + * ixgbe: Simplify definitions for regidx and bit in set_vfta + - LP: #1536473 + * ixgbe: Reduce VT code indent in set_vfta by introducing jump label + - LP: #1536473 + * ixgbe: Simplify configuration of setting VLVF and VLVFB + - LP: #1536473 + * ixgbe: Add support for adding/removing VLAN on PF bypassing the VLVF + - LP: #1536473 + * ixgbe: Reorder search to work from the top down instead of bottom up + - LP: #1536473 + * ixgbe: Add support for VLAN promiscuous with SR-IOV + - LP: #1536473 + * ixgbe: Fix VLAN promisc in relation to SR-IOV + - LP: #1536473 + * ixgbe: Clear stale pool mappings + - LP: #1536473 + * ixgbe: Clean stale VLANs when changing port VLAN or resetting + - LP: #1536473 + * ixgbe: do not report 2.5 Gbps as supported + - LP: #1536473 + * ixgbevf: Fix handling of NAPI budget when multiple queues are enabled + per vector + - LP: #1536473 + * ixgbevf: minor cleanups for ixgbevf_set_itr() + - LP: #1536473 + * ixgbe: add support for QSFP PHY types in ixgbe_get_settings() + - LP: #1536473 + * ixgbe: report correct media type for KR, KX and KX4 interfaces + - LP: #1536473 + * ixgbe: Clean up redundancy in hw_enc_features + - LP: #1536473 + * ixgbe: fix RSS limit for X550 + - LP: #1536473 + * ixgbe: Correct X550EM_x revision check + - LP: #1536473 + * ixgbe: Fix bugs in ixgbe_clear_vf_vlans() + - LP: #1536473 + * ixgbe: Fill at least min credits to a TC credit refills + - LP: #1536473 + * ixgbe: use correct FCoE DDP max check + - LP: #1536473 + * ixgbe: fix broken PFC with X550 + - LP: #1536473 + * ixgbe: do not call check_link for ethtool in ixgbe_get_settings() + - LP: #1536473 + * ixgbe: Correct handling of any outer UDP checksum setting + - LP: #1536473 + * ixgbe: Fix to get FDMI HBA attributes information with X550 + - LP: #1536473 + * ixgbe: Fix MDD events generated when FCoE+SRIOV are enabled + - LP: #1536473 + * ixgbe: Make ATR recognize IPv6 extended headers + - LP: #1536473 + * e1000: make eeprom read/write scheduler friendly + * e1000: fix data race between tx_ring->next_to_clean + * e1000: Remove checkpatch coding style errors + * e1000: clean up the checking logic + * e1000: fix a typo in the comment + * e1000e: clean up the local variable + * e1000: fix kernel-doc argument being missing + * e1000: get rid of duplicate exit path + * e1000: Elementary checkpatch warnings and checks removed + * e1000e: fix division by zero on jumbo MTUs + * e1000e: Increase timeout of polling bit RSPCIPHY + * e1000e: initial support for i219-LM (3) + * e1000e: Switch e1000e_up to void, drop code checking for error result + * e1000e: Remove unreachable code + * e1000e: Do not read ICR in Other interrupt + * e1000e: Do not write lsc to ics in msi-x mode + * e1000e: Fix msi-x interrupt automask + * acpi: pci: Setup MSI domain for ACPI based pci devices + * irqdomain: Introduce is_fwnode_irqchip helper + * irqchip/gic-v2m: Refactor to prepare for ACPI support + * irqchip/gic-v2m: acpi: Introducing GICv2m ACPI support + * clk: xgene: Fix divider with non-zero shift value + * i2c: designware: Do not require clock when SSCN and FFCN are provided + * fm10k: do not assume VF always has 1 queue + - LP: #1536475 + * fm10k: Correct MTU for jumbo frames + - LP: #1536475 + * fm10k: Fix handling of NAPI budget when multiple queues are enabled per + vector + - LP: #1536475 + * fm10k: use napi_schedule_irqoff() + - LP: #1536475 + * fm10k: set netdev features in one location + - LP: #1536475 + * fm10k: reset max_queues on init_hw_vf failure + - LP: #1536475 + * fm10k: always check init_hw for errors + - LP: #1536475 + * fm10k: reinitialize queuing scheme after calling init_hw + - LP: #1536475 + * fm10k: Correct typecast in fm10k_update_xc_addr_pf + - LP: #1536475 + * fm10k: explicitly typecast vlan values to u16 + - LP: #1536475 + * fm10k: add statistics for actual DWORD count of mbmem mailbox + - LP: #1536475 + * fm10k: rename mbx_tx_oversized statistic to mbx_tx_dropped + - LP: #1536475 + * fm10k: Add support for ITR scaling based on PCIe link speed + - LP: #1536475 + * fm10k: introduce ITR_IS_ADAPTIVE macro + - LP: #1536475 + * fm10k: Update adaptive ITR algorithm + - LP: #1536475 + * fm10k: use macro for default Tx and Rx ITR values + - LP: #1536475 + * fm10k: change default Tx ITR to 25usec + - LP: #1536475 + * fm10k: TRIVIAL fix typo of hardware + - LP: #1536475 + * fm10k: TRIVIAL cleanup order at top of fm10k_xmit_frame + - LP: #1536475 + * fm10k: use ether_addr_copy to copy MAC address + - LP: #1536475 + * fm10k: do not use CamelCase + - LP: #1536475 + * fm10k: remove unnecessary else block from if statements with return + - LP: #1536475 + * fm10k: remove namespace pollution of fm10k_iov_msg_data_pf + - LP: #1536475 + * fm10k: consistently refer to VLANs and VLAN IDs + - LP: #1536475 + * fm10k: bump driver version + - LP: #1536475 + * fm10k: conditionally compile DCB and DebugFS support + - LP: #1536475 + * fm10k: Cleanup MSI-X interrupts in case of failure + - LP: #1536475 + * fm10k: Cleanup exception handling for mailbox interrupt + - LP: #1536475 + * fm10k: do not inline fm10k_iov_select_vid() + - LP: #1536475 + * fm10k: whitespace cleanups + - LP: #1536475 + * fm10k: use BIT() macro instead of open-coded bit-shifting + - LP: #1536475 + * fm10k: cleanup namespace pollution + - LP: #1536475 + * fm10k: cleanup overly long lines + - LP: #1536475 + * fm10k: initialize xps at driver load + - LP: #1536475 + * fm10k: don't initialize fm10k_workqueue at global level + - LP: #1536475 + * fm10k: correctly pack TLV structures and explain reasoning + - LP: #1536475 + * fm10k: Cleanup exception handling for changing queues + - LP: #1536475 + * fm10k: use ether_addr_equal instead of memcmp + - LP: #1536475 + * fm10k: address operator not needed when declaring function pointers + - LP: #1536475 + * fm10k: constify fm10k_mac_ops, fm10k_iov_ops and fm10k_info structures + - LP: #1536475 + * fm10k: remove unused struct element + - LP: #1536475 + * fm10k: use true/false for boolean get_host_state + - LP: #1536475 + * fm10k: cleanup mailbox code comments etc + - LP: #1536475 + * fm10k: IS_ENABLED() is not appropriate for boolean kconfig option + - LP: #1536475 + * device property: always check for fwnode type + - LP: #1533035 + * device property: rename helper functions + - LP: #1533035 + * device property: refactor built-in properties support + - LP: #1533035 + * device property: keep single value inplace + - LP: #1533035 + * device property: helper macros for property entry creation + - LP: #1533035 + * device property: improve readability of macros + - LP: #1533035 + * device property: return -EINVAL when property isn't found in ACPI + - LP: #1533035 + * device property: Fallback to secondary fwnode if primary misses the + property + - LP: #1533035 + * device property: Take a copy of the property set + - LP: #1533035 + * driver core: platform: Add support for built-in device properties + - LP: #1533035 + * driver core: Do not overwrite secondary fwnode with NULL if it is set + - LP: #1533035 + * mfd: core: propagate device properties to sub devices drivers + - LP: #1533035 + * mfd: intel-lpss: Add support for passing device properties + - LP: #1533035 + * mfd: intel-lpss: Pass SDA hold time to I2C host controller driver + - LP: #1533035 + * mfd: intel-lpss: Pass HSUART configuration via properties + - LP: #1533035 + * i2c: designware: Convert to use unified device property API + - LP: #1533035 + * keys, trusted: fix: *do not* allow duplicate key options + - LP: #1398274 + * keys, trusted: select hash algorithm for TPM2 chips + - LP: #1398274 + * keys, trusted: seal with a TPM2 authorization policy + - LP: #1398274 + * perf/x86/intel: Add perf core PMU support for Intel Knights Landing + - LP: #1461360 + * perf/x86/intel/uncore: Add Knights Landing uncore PMU support + - LP: #1461360 + * perf/x86/intel/uncore: Remove hard coding of PMON box control MSR + offset + - LP: #1461360 + * drm/i915: WaRsDisableCoarsePowerGating + - LP: #1527462 + * drm/i915/skl: Add SKL GT4 PCI IDs + - LP: #1527462 + * drm/i915/skl: Disable coarse power gating up until F0 + - LP: #1527462 + * platform:x86: add Intel P-Unit mailbox IPC driver + - LP: #1520457 + * intel_punit_ipc: add NULL check for input parameters + - LP: #1520457 + * platform/x86: Add Intel Telemetry Core Driver + - LP: #1520457 + * intel_pmc_ipc: update acpi resource structure for Punit + - LP: #1520457 + * platform:x86: Add Intel telemetry platform device + - LP: #1520457 + * platform:x86: Add Intel telemetry platform driver + - LP: #1520457 + * platform:x86: Add Intel Telemetry Debugfs interfaces + - LP: #1520457 + * cxlflash: a couple off by one bugs + + -- Andy Whitcroft Thu, 28 Jan 2016 13:56:00 +0000 + +linux (4.4.0-1.15) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1536803 + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] libiscsi: Reduce locking contention in fast path" + - LP: #1517142 + + -- Tim Gardner Wed, 20 Jan 2016 07:41:40 -0700 + +linux (4.4.0-0.14) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "powerpc/pci: Remove unused struct pci_dn.pcidev field" + - LP: #1522415 + * powerpc: Add __raw_rm_writeq() function + - LP: #1522415 + + -- Tim Gardner Tue, 19 Jan 2016 11:24:26 -0700 + +linux (4.4.0-0.13) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] s390x -- the kernel provides ppp-modules such as there are + * SAUCE: (no-up) add compat_uts_machine= kernel command line override + + [ Tim Gardner ] + + * [Config] Update annotations for VIRTIO_{NET,BLK} + - LP: #1533382 + + [ Upstream Kernel Changes ] + + * powerpc/powernv: Add support for Nvlink NPUs + - LP: #1522415 + * powerpc/powernv: Fix update of NVLink DMA mask + - LP: #1522415 + * powerpc/powernv: Change NPU PE# assignment + - LP: #1522415 + * powerpc/powernv: Reserve PE#0 on NPU + - LP: #1522415 + * KEYS: Fix keyring ref leak in join_session_keyring() + - LP: #1534887 + - CVE-2016-0728 + + -- Tim Gardner Tue, 19 Jan 2016 05:49:09 -0700 + +linux (4.4.0-0.12) xenial; urgency=low + + [ Eric Dumazet ] + + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + + [ Guilherme G. Piccoli ] + + * SAUCE: powerpc/eeh: Validate arch in eeh_add_device_early() + - LP: #1486180 + + [ Tim Gardner ] + + * SAUCE: AUFS - update to aufs4.x-rcN 20160111 + * [Config] CONFIG_VIRTIO_BLK=y, CONFIG_VIRTIO_NET=y for s390 + - LP: #1532886 + * [Config] nvme.ko moved to drivers/nvme/host + * [Config] scsi_dh morphed into 4 modules + * [Config] CONFIG_IBMVNIC=m + * [Config] Add DRM ast driver to udeb installer image + - LP: #1514711 + * [Config] CONFIG_KVM=y for s390x + - LP: #1532886 + * [Config] Install spl/zfs under the kernel modules directory + Fixes some errors in generic.inclusion-list.log + + [ Upstream Kernel Changes ] + + * perf/x86/intel/uncore: Add Broadwell-EP uncore support + - LP: #1524574 + * EDAC: Add DDR4 flag + - LP: #1519631 + * EDAC, sb_edac: Virtualize several hard-coded functions + - LP: #1519631 + * EDAC, sb_edac: Add support for duplicate device IDs + - LP: #1519631 + * EDAC, sb_edac: Add Knights Landing (Xeon Phi gen 2) support + - LP: #1519631 + * Driver for IBM System i/p VNIC protocol + - LP: #1532303 + + -- Tim Gardner Mon, 11 Jan 2016 09:57:16 -0700 + +linux (4.4.0-0.11) xenial; urgency=low + + [ Tim Gardner ] + + * [Config] Fix bogus reconstruct script + + -- Tim Gardner Mon, 11 Jan 2016 07:29:17 -0700 + +linux (4.4.0-0.10) xenial; urgency=low + + [ Haren Myneni ] + + * SAUCE: crypto: nx-842 - Mask XERS0 bit in return value + - LP: #1529666 + + [ Serge Hallyn ] + + * SAUCE: add a sysctl to disable unprivileged user namespace unsharing + + [ Tim Gardner ] + + * [Config] CONFIG_ZONE_DEVICE=y for amd64 + * [Config] CONFIG_BLK_DEV_LOOP=y for s390x + - LP: #1526869 + * SAUCE: (no-up) apparmor: Fix incompatible pointer type warnings + * SAUCE: radeon: r100: Silence 'may be used uninitialized' warnings + * SAUCE: dmaengine: ioatdma: Squelch framesize warnings + * rebase to v4.4 + + [ Upstream Kernel Changes ] + + * rebase to v4.4 + + -- Tim Gardner Mon, 04 Jan 2016 17:43:51 -0700 + +linux (4.4.0-0.9) xenial; urgency=low + + [ Tim Gardner ] + + * rebase to v4.4-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc8 + + -- Tim Gardner Sun, 03 Jan 2016 18:50:33 -0700 + +linux (4.4.0-0.8) xenial; urgency=low + + [ Tim Gardner ] + + * rebase to v4.4-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc7 + + -- Tim Gardner Mon, 28 Dec 2015 16:13:11 -0700 + +linux (4.4.0-0.7) xenial; urgency=low + + [ Hui Wang ] + + * [Config] CONFIG_I2C_DESIGNWARE_BAYTRAIL=y, CONFIG_IOSF_MBI=y + - LP: #1527096 + + [ Jann Horn ] + + * SAUCE: (noup) ptrace: being capable wrt a process requires mapped + uids/gids + - LP: #1527374 + + [ Tim Gardner ] + + * rebase to v4.4-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc6 + - LP: #1526330 + + -- Tim Gardner Thu, 17 Dec 2015 05:28:27 -0700 + +linux (4.4.0-0.6) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_ARM64_LSE_ATOMICS to avoid issues with ARMv8.1 + support in latest compilers + * [Config] disable CONFIG_CRYPTO_AES_ARM64_CE* to avoid issues with + ARMv8.1 support in latest compilers + + [ Tim Gardner ] + + * [Config] s390 -> s390x + * SAUCE: include/linux/mmdebug.h: #include + + -- Tim Gardner Tue, 15 Dec 2015 06:46:26 -0700 + +linux (4.4.0-0.5) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] s390x -- enable tools + - LP: #1524319 + * [Config] s390x -- add architecture to getabis + * [Config] s390x -- add s390x ABI information + * [Config] s390x -- enable ABI checks + + [ Tim Gardner ] + + * [Debian] config-check and prepare using ${DEBIAN}/config/annotations + * [Config] Add s390 modules to nic-modules udeb + - LP: #1525297 + * rebase to v4.4-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc5 + - LP: #1523517 + - LP: #1523232 + + -- Tim Gardner Mon, 14 Dec 2015 05:28:05 -0700 + +linux (4.4.0-0.4) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * cgroup: make css_set pin its css's to avoid use-afer-free + * cgroup_freezer: simplify propagation of CGROUP_FROZEN clearing in + freezer_attach() + * cgroup: fix handling of multi-destination migration from + subtree_control enabling + + -- Tim Gardner Tue, 08 Dec 2015 11:20:41 -0700 + +linux (4.4.0-0.3) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc4 + + -- Tim Gardner Sun, 06 Dec 2015 16:50:15 -0700 + +linux (4.4.0-0.2) xenial; urgency=low + + [ Tim Gardner ] + + * [Config] Add spl/zfs provides to generic and powerpc64-smp + * [Config] Add zfs to d-i fs-core-modules + * [Config] Include all s390 specific drivers in linux-image + - LP: #1522210 + + -- Tim Gardner Thu, 03 Dec 2015 07:05:56 -0700 + +linux (4.4.0-0.1) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Tests] gcc-multilib does not exist on ppc64el redux + - LP: #1515541 + * [Config] libunwind8-dev is not available on s390x + * [Debian] Disable SPL/ZFS for cross compiling -- redux + * [Config] s390x -- add dasd udebs + - LP: #1519833 + * [Config] s390x -- include dasd modules in linux-image + - LP: #1519833 + * [Config] s390x -- disable ZFS temporarily + - LP: #1519820 + * [Config] s390s -- disable ABI/module checks + * [Config] make IBMVETH consistent on powerpc/ppc64el + - LP: #1521712 + * [Config] follow ibmvscsi name change + - LP: #1521712 + * [Config] move ibm disk and ethernet drivers to linux-image + - LP: #1521712 + * [Config] include ibmveth in nic-modules for ppc64el + - LP: #1521712 + * [Config] s390x -- disable abi/module checks for s390x + + [ Joseph Salisbury ] + + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + + [ Seth Forshee ] + + * [Config] CONFIG_DRM_AMDGPU_CIK=n + - LP: #1510405 + + [ Tim Gardner ] + + * [Debian] Disable SPL/ZFS for cross compiling + * [Config] CONFIG_SCSI_IBMVSCSI=m + - LP: #1515872 + * rebase to v4.4-rc2 + * [Config] updateconfigs + * [Config] CONFIG_WILC1000_DRIVER=n for FTBS + * SAUCE: do_zfs=false temporarily + * [Config] CONFIG_LUSTRE_FS=n + * [Debian] Disable udebs when cross compiling + * rebase to v4.4-rc3 + * [Config] CONFIG_AUFS_FS=m + * SAUCE: AUFS + + [ Upstream Kernel Changes ] + + * ZFS: Update with 4.4 support + * SPL: Update with 4.4 support + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc3 + - LP: #1519168 + * rebase to v4.4-rc2 + - LP: #1506615 + - LP: #1502781 + + -- Tim Gardner Mon, 23 Nov 2015 13:22:37 -0700 + +linux (4.3.0-0.8) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] re-enable OSS support and blacklist + - LP: #1434842 + * [Config] enable CONFIG_CC_STACKPROTECTOR_STRONG=y + * [Packaging] config-check -- improve syntax diagnostics + * [Packaging] module-inclusion -- add dependency inclusion for a list + * [Packaging] config-check -- accumulate multi-line annotations correctly + * [Packaging] config-check -- handle V2 annotations format + * [Packaging] s390x -- add architecture to kernelconfig + - LP: #1488653 + * [Config] s390x -- initial configuration + * [Config] s390x -- add initial binary image + * [Config] s390x -- initial configuration update + * [Config] s390x -- produce linux-image + * [Config] s390x -- d-i module exclusions + * [Config] apply Device Drivers >> LED Support >> LED Class Support + * [Config] apply File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support + * [Config] apply Device Drivers >> Generic Driver Options >> Userspace firmware loading support + * SAUCE: leds: lp55xx -- do not force use of the fallback loader + * [Config] -- s390x -- configuration review updates + * [Config] annotations -- add review marks + * [Config] annotations -- config review 4.3 updates + * [Config] annotations -- expose reviews + * [Config] updateconfigs following incoporation of s390x configs + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + + [ Dan Carpenter ] + + * SAUCE: (noup) cxlflash: a couple off by one bugs + - LP: #1499849 + + [ Haren Myneni ] + + * Revert "SAUCE: (noup) crypto: 842 - Add CRC and validation support" + + [ Jay Vosburgh ] + + * SAUCE: fan: add VXLAN implementation + + [ Manoj Kumar ] + + * SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1513583 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1513583 + + [ Tim Gardner ] + + * [Config] CONFIG_AUFS_EXPORT=y + - LP: #1121699 + + [ Upstream Kernel Changes ] + + * misc/genwqe: get rid of atomic allocations + * crypto: 842 - Add CRC and validation support + - LP: #1497878 + * cxlflash: Fix to avoid invalid port_sel value + * cxlflash: Replace magic numbers with literals + * cxlflash: Fix read capacity timeout + * cxlflash: Fix potential oops following LUN removal + * cxlflash: Fix data corruption when vLUN used over multiple cards + * cxlflash: Fix to avoid sizeof(bool) + * cxlflash: Fix context encode mask width + * cxlflash: Fix to avoid CXL services during EEH + * cxlflash: Correct naming of limbo state and waitq + * cxlflash: Make functions static + * cxlflash: Refine host/device attributes + * cxlflash: Fix to avoid spamming the kernel log + * cxlflash: Fix to avoid stall while waiting on TMF + * cxlflash: Fix location of setting resid + * cxlflash: Fix host link up event handling + * cxlflash: Fix async interrupt bypass logic + * cxlflash: Remove dual port online dependency + * cxlflash: Fix AFU version access/storage and add check + * cxlflash: Correct usage of scsi_host_put() + * cxlflash: Fix to prevent workq from accessing freed memory + * cxlflash: Correct behavior in device reset handler following EEH + * cxlflash: Remove unnecessary scsi_block_requests + * cxlflash: Fix function prolog parameters and return codes + * cxlflash: Fix MMIO and endianness errors + * cxlflash: Fix to prevent EEH recovery failure + * cxlflash: Correct spelling, grammar, and alignment mistakes + * cxlflash: Fix to prevent stale AFU RRQ + * cxlflash: Fix to double the delay each time + * cxlflash: Fix to avoid corrupting adapter fops + * cxlflash: Correct trace string + * cxlflash: Fix to avoid potential deadlock on EEH + * cxlflash: Fix to avoid leaving dangling interrupt resources + * cxlflash: Fix to escalate to LINK_RESET on login timeout + * cxlflash: Fix to avoid corrupting port selection mask + * cxlflash: Fix to avoid lock instrumentation rejection + * cxlflash: Fix to avoid bypassing context cleanup + + -- Tim Gardner Fri, 06 Nov 2015 10:15:07 -0600 + +linux (4.3.0-0.7) xenial; urgency=low + + [ Tim Gardner ] + + * Revert "Bypass spl/zfs config" + Causes unresolved symbols on load. + * [Config] Enable ZFS for powerpc64-smp + + -- Tim Gardner Thu, 05 Nov 2015 11:42:37 -0600 + +linux (4.3.0-0.6) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1512704 + * UBUNTU: SAUCE: AUFS aufs4.x-rcN 20151102 + + [ Andy Whitcroft ] + + * [Packaging] add feature interlock with mainline builds + * apparmor -- follow change to this_cpu_ptr + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: add parameter to control whether policy hashing is used + - LP: #1383886 + * SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot + - LP: #1362199 + * SAUCE: Revert: fix: only allow a single threaded process to ... + - LP: #1371310 + * SAUCE: (no-up) fix: bad unix_addr_fs macro + - LP: #1390223 + * SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + - LP: #1408833 + * SAUCE: (no-up) apparmor: fix mount not handling disconnected paths + - LP: #1496430 + + [ Tim Gardner ] + + * [Config] Add iscsi_ibft and iscsi_boot_sysfs to generic inclusion list + - LP: #1511006 + * rebase to v4.3 + * Bypass spl/zfs config + * SPL/ZFS: Add Makefiles in order to avoid the lengthy config + * [Config] Default AppArmor settings + + [ Upstream Kernel Changes ] + + * rebase to v4.3 + + -- Tim Gardner Thu, 29 Oct 2015 09:16:26 -0600 + +linux (4.3.0-0.5) xenial; urgency=low + + * Update spl to 0.6.5.3-0ubuntu1, zfs to 0.6.5.3-0ubuntu1 + + [ Upstream Kernel Changes ] + + * rebase to v4.3-rc7 + - LP: #1504778 + + -- Tim Gardner Fri, 23 Oct 2015 13:59:52 -0600 + +linux (4.3.0-0.4) xenial; urgency=low + + [ Tim Gardner ] + + * [Debian] Update to new signing key type and location + + -- Tim Gardner Wed, 21 Oct 2015 13:07:30 -0600 + +linux (4.3.0-0.3) wily; urgency=low + + [ Tim Gardner ] + + * [Debian] sign-file is now compiled + + -- Tim Gardner Wed, 21 Oct 2015 09:26:34 -0600 + +linux (4.3.0-0.2) wily; urgency=low + + [ Tim Gardner ] + + * [Config] Added libssl-dev to Build-Depends + + -- Tim Gardner Tue, 20 Oct 2015 14:01:55 -0600 + +linux (4.3.0-0.1) wily; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.3-rc6 + * rebase to v4.3-rc5 + * rebase to v4.3-rc4 + * rebase to v4.3-rc3 + * rebase to v4.3-rc2 + * rebase to v4.3-rc1 + - LP: #1492132 + - LP: #1481575 + + -- Tim Gardner Mon, 14 Sep 2015 07:30:36 -0600 + +linux (4.2.0-10.11) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1495208 + * No change rebuild to avoid issues with leading zero bytes on + internal module signing key. (see launchpad bug 1494943) + + [ Ming Lei ] + + * [Config] SERIAL_8250_DW=y for arm64 + + [ Upstream Kernel Changes ] + + * drm/i915: Move WaBarrierPerformanceFixDisable:skl to skl code from chv + code + - LP: #1484486 + * drm/i915/gen8: Add infrastructure to initialize WA batch buffers + - LP: #1484486 + * drm/i915/gen8: Re-order init pipe_control in lrc mode + - LP: #1484486 + * drm/i915/gen8: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915/gen8: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915: Bail out early if WA batch is not available for given Gen + - LP: #1484486 + * drm/i915/gen8: Add WaClearSlmSpaceAtContextSwitch workaround + - LP: #1484486 + * drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch + - LP: #1484486 + * drm/i915/gen9: Implement WaDisableKillLogic for gen 9 + - LP: #1484486 + * drm/i915: Enable WA batch buffers for Gen9 + - LP: #1484486 + * drm/i915/gen9: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915: Update wa_ctx_emit() macro as per kernel coding guidelines + - LP: #1484486 + * drm/i915/gen9: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915/gen9: Add + WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken + - LP: #1484486 + * drm/i915:skl: Add WaEnableGapsTsvCreditFix + - LP: #1484486 + * drm/i915/skl: revert duplicated WaBarrierPerformanceFixDisable:skl + - LP: #1484486 + * drm/i915/skl: Don't expose the top most plane on gen9 display + - LP: #1484486 + * drm/i915/skl WaDisableSbeCacheDispatchPortSharing + - LP: #1484486 + * drm/i915/skl: WaIgnoreDDIAStrap is forever, always init DDI A + - LP: #1484486 + * drm/i915: reduce indent in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce duplicate conditions in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: group all hotplug related fields into a new struct in + dev_priv + - LP: #1484531 + * drm/i915: add for_each_hpd_pin to iterate over hotplug pins + - LP: #1484531 + * drm/i915: simplify conditions for skipping the 2nd hpd loop iterations + - LP: #1484531 + * drm/i915: put back the indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: merge the two hpd loops in intel_hpd_irq_handler to one + - LP: #1484531 + * drm/i915: simplify condition for digital port + - LP: #1484531 + * drm/i915: abstract away platform specific parts from hpd handling + - LP: #1484531 + * drm/i915: Handle HPD when it has actually occurred + - LP: #1484531 + * drm/i915: Set power domain for DDI-E + - LP: #1484531 + * drm/i915: Set alternate aux for DDI-E + - LP: #1484531 + * drm/i915/skl: enable DDI-E hotplug + - LP: #1484531 + * drm/i915/bxt: fix DDI PHY vswing scale value setting + - LP: #1494163 + * drm/i915/skl: Buffer translation improvements + - LP: #1494163 + * drm/i915: Per-DDI I_boost override + - LP: #1494163 + * drm/i915: fix VBT parsing for SDVO child device mapping + - LP: #1494163 + * drm/i915/bxt: edp1.4 Intermediate Freq support + - LP: #1494163 + * drm/i915: fix link rates reported for SKL + - LP: #1494163 + * drm/i915: Allow parsing of variable size child device entries from VBT + - LP: #1494163 + * drm/i915/skl: Update DDI buffer translation programming. + - LP: #1494163 + * drm/i915: Enable HDMI on DDI-E + - LP: #1484531 + * drm/i915/skl: Enable DDI-E + - LP: #1484531 + * drm/i915: eDP can be present on DDI-E + - LP: #1484531 + * drm/i915/skl: Adding DDI_E power well domain + - LP: #1484531 + * drm/i915: set CDCLK if DPLL0 enabled during resuming from S3 + - LP: #1490035 + * drm/i915: Split atomic wm update to pre and post variants + - LP: #1493746 + * drm/i915/skl: Drop the preliminary_hw_support flag + - LP: #1486868 + * drm/i915: set FDI translations to NULL on SKL + - LP: #1494163 + + -- Andy Whitcroft Sun, 13 Sep 2015 11:32:02 +0100 + +linux (4.2.0-9.9) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493970 + * [Config] CONFIG_MFD_INTEL_LPSS=m + - LP: #1397876 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + + [ Michael Ellerman ] + + * SAUCE: crypto: vmx - VMX crypto should depend on CONFIG_VSX + Fixes FTBS on 32 bit powerpc, patch sent upstream. + + [ Upstream Kernel Changes ] + + * thermal/powerclamp: add cpu id for skylake h/s + - LP: #1398269 + * perf/x86/intel/uncore: Add Broadwell-DE uncore support + - LP: #1397852 + * mfd: watchdog: iTCO_wdt: Expose watchdog properties using platform data + - LP: #1460905 + * i2c: i801: Create iTCO device on newer Intel PCHs + - LP: #1460905 + * watchdog: iTCO_wdt: Add support for TCO on Intel Sunrisepoint + - LP: #1460905 + * perf/x86: Add a native_perf_sched_clock_from_tsc() + - LP: #1397867 + * perf/x86/intel: Add support for PEBSv3 profiling + - LP: #1397867 + * perf/x86/intel/lbr: Allow time stamp for free running PEBSv3 + - LP: #1397867 + * x86: Add new MSRs and MSR bits used for Intel Skylake PMU support + - LP: #1397867 + * perf: Add cycles to branch_info + - LP: #1397867 + * perf/x86/intel/lbr: Add support for LBRv5 + - LP: #1397867 + * perf/x86/intel: Handle new arch perfmon v4 status bits + - LP: #1397867 + * perf/x86/intel: Move PMU ACK to after LBR read + - LP: #1397867 + * perf/x86/intel/lbr: Optimize v4 LBR unfreezing + - LP: #1397867 + * perf/x86/intel: Add Intel Skylake PMU support + - LP: #1397867 + * perf/x86/intel/lbr: Use correct index to save/restore LBR_INFO with + call stack + - LP: #1397867 + * perf/x86/intel/lbr: Limit LBR accesses to TOS in callstack mode + - LP: #1397867 + * perf/x86: Make merge_attr() global to use from perf_event_intel + - LP: #1397867 + * perf/x86/intel: Use 0x11 as extra reg test value + - LP: #1397867 + * perf tools: Add support for cycles, weight branch_info field + - LP: #1397867 + * perf report: Add flag for non ANY branch mode + - LP: #1397867 + * perf report: Add infrastructure for a cycles histogram + - LP: #1397867 + * perf report: Add processing for cycle histograms + - LP: #1397867 + * perf annotate: Compute IPC and basic block cycles + - LP: #1397867 + * perf annotate: Finally display IPC and cycle accounting + - LP: #1397867 + * perf top: Add branch annotation code to top + - LP: #1397867 + * perf report: Display cycles in branch sort mode + - LP: #1397867 + * perf annotate: Fix 32-bit compilation error in util/annotate.c + - LP: #1397867 + * PM / QoS: Make it possible to expose device latency tolerance to + userspace + - LP: #1460908 + * ACPI / PM: Attach ACPI power domain only once + - LP: #1460908 + * Driver core: wakeup the parent device before trying probe + - LP: #1460908 + * klist: implement klist_prev() + - LP: #1460908 + * driver core: implement device_for_each_child_reverse() + - LP: #1460908 + * mfd: make mfd_remove_devices() iterate in reverse order + - LP: #1460908 + * dmaengine: add a driver for Intel integrated DMA 64-bit + - LP: #1460908 + * mfd: Add support for Intel Sunrisepoint LPSS devices + - LP: #1460908 + * spi: pxa2xx: Add support for Intel Sunrisepoint + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy PXA DMA API channel numbers + - LP: #1397876 + * spi: pxa2xx: Add terminating entry for pxa2xx_spi_pci_compound_match + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy null dma buffer and allocation + for it + - LP: #1397876 + * intel_idle: Skylake Client Support + - LP: #1397877 + * powerpc/kernel: Switch to using MAX_ERRNO + - LP: #1458876 + * powerpc/kernel: Change the do_syscall_trace_enter() API + - LP: #1458876 + * powerpc: Drop unused syscall_get_error() + - LP: #1458876 + * powerpc: Don't negate error in syscall_set_return_value() + - LP: #1458876 + * powerpc: Rework syscall_get_arguments() so there is only one loop + - LP: #1458876 + * powerpc: Use orig_gpr3 in syscall_get_arguments() + - LP: #1458876 + * powerpc: Change syscall_get_nr() to return int + - LP: #1458876 + * powerpc/kernel: Add SIG_SYS support for compat tasks + - LP: #1458876 + * powerpc/kernel: Enable seccomp filter + - LP: #1458876 + * selftests/seccomp: Make seccomp tests work on big endian + - LP: #1458876 + * selftests/seccomp: Add powerpc support + - LP: #1458876 + * eCryptfs: Invalidate dcache entries when lower i_nlink is zero + + -- Tim Gardner Tue, 08 Sep 2015 19:17:57 -0600 + +linux (4.2.0-8.8) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493357 + * [Config] CONFIG_CRYPTO_DEV_NX_COMPRESS_CRYPTO obsolete + - LP: #1488495 + * [Config] CONFIG_CXLFLASH=m + * [Config] CONFIG_CXL_EEH=y for ppc64el, powerpc64-smp + + + [ Andy Whitcroft ] + + * [Packaging] standardise on stage1 for the bootstrap stage in line with debian + * [Packaging] mark up control for stage1 + * [Config] kernel-versions -- clean up deps field + * [Config] s390x -- build linux-libc-dev + - LP: #1488653 + * [Packaging] control -- prepare for new kernel-wedge semantics + + [ Upstream Kernel Changes ] + + * crypto: vmx - Fixing AES-CTR counter bug + - LP: #1484519 + * crypto: vmx - Fixing GHASH Key issue on little endian + - LP: #1484519 + * powerpc: Uncomment and make enable_kernel_vsx() routine available + - LP: #1484519 + * crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions + - LP: #1484519 + * crypto: nx - nx842_OF_upd_status should return ENODEV if device is not + 'okay' + - LP: #1488495 + * crypto: nx - rename nx842_{init, exit} to nx842_pseries_{init, exit} + - LP: #1488495 + * crypto: nx - do not emit extra output if status is disabled + - LP: #1488495 + * crypto: nx - reduce chattiness of platform drivers + - LP: #1488495 + * crypto: nx/842 - Fix context corruption + - LP: #1488495 + * crypto: nx - remove __init/__exit from VIO functions + - LP: #1488495 + * crypto: nx - remove pSeries NX 'status' field + - LP: #1488495 + * crypto: nx - move kzalloc() out of spinlock + - LP: #1488495 + * crypto: nx - don't register pSeries driver if ENODEV + - LP: #1488495 + * crypto: nx - use common code for both NX decompress success cases + - LP: #1488495 + * crypto: nx - merge nx-compress and nx-compress-crypto + - LP: #1488495 + * crypto: nx - rename nx-842-crypto.c to nx-842.c + - LP: #1488495 + * crypto: nx - make platform drivers directly register with crypto + - LP: #1488495 + * cxlflash: Base support for IBM CXL Flash Adapter + - LP: #1449121 + * cxlflash: Base error recovery support + - LP: #1449121 + * cxlflash: Superpipe support + - LP: #1449121 + * cxlflash: Virtual LUN support + - LP: #1449121 + * cxlflash: off by one bug in cxlflash_show_port_status() + - LP: #1449121 + * cxlflash: shift wrapping bug in afu_link_reset() + - LP: #1449121 + * cxlflash: Remove unused variable from queuecommand + - LP: #1449121 + * powerpc/powernv: move dma_get_required_mask from pnv_phb to + pci_controller_ops + * powerpc/eeh: Probe after unbalanced kref check + * misc: cxl: clean up afu_read_config() + * cxl: Add explicit precision specifiers + * cxl: use more common format specifier + * cxl: Destroy cxl_adapter_idr on module_exit + * cxl: Destroy afu->contexts_idr on release of an afu + * cxl: Don't ignore add_process_element() result when attaching context + * cxl: Compile with -Werror + * cxl: sparse: Make declarations static + * cxl: sparse: Silence iomem warning in debugfs file creation + * cxl: Convert MMIO read/write macros to inline functions + * cxl: Drop commands if the PCI channel is not in normal state + * cxl: Allocate and release the SPA with the AFU + * cxl: Make IRQ release idempotent + * cxl: Clean up adapter MMIO unmap path. + * cxl: Refactor adaptor init/teardown + * cxl: Refactor AFU init/teardown + * cxl: Don't remove AFUs/vPHBs in cxl_reset + * cxl: Allow the kernel to trust that an image won't change on PERST. + * cxl: EEH support + * cxl: Add CONFIG_CXL_EEH symbol + * cxl: Plug irq_bitmap getting leaked in cxl_context + * cxl: Add alternate MMIO error handling + * cxl: Allow release of contexts which have been OPENED but not STARTED + * cxl: Remove use of macro DEFINE_PCI_DEVICE_TABLE + * cxl: Release irqs if memory allocation fails + * cxl: Remove racy attempt to force EEH invocation in reset + * cxl: Fix + cleanup error paths in cxl_dev_context_init + * cxl: Fix force unmapping mmaps of contexts allocated through the kernel api + * cxl: Set up and enable PSL Timebase + + -- Tim Gardner Tue, 01 Sep 2015 07:38:43 -0600 + +linux (4.2.0-7.7) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1490564 + * rebase to v4.2 + + [ Wen Xiong ] + + * SAUCE: ipr: Byte swapping for device_id attribute in sysfs + - LP: #1453892 + + [ Upstream Kernel Changes ] + + * rebase to v4.2 + - LP: #1487345 + + -- Tim Gardner Wed, 26 Aug 2015 07:06:10 -0600 + +linux (4.2.0-6.6) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1488138 + + [ Andy Whitcroft ] + + * rebase to v4.2-rc8 + + [ Shilpasri G Bhat ] + + * SAUCE: cpufreq: powernv: Handle throttling due to Pmax capping at chip + level + - LP: #1480894 + * SAUCE: powerpc/powernv: Add definition of OPAL_MSG_OCC message type + - LP: #1480894 + * SAUCE: cpufreq: powernv: Register for OCC related opal_message + notification + - LP: #1480894 + * SAUCE: cpufreq: powernv: Call throttle_check() on receiving + OCC_THROTTLE + - LP: #1480894 + * SAUCE: cpufreq: powernv: Report Psafe only if PMSR.psafe_mode_active + bit is set + - LP: #1480894 + * SAUCE: cpufreq: powernv: Restore cpu frequency to policy->cur on + unthrottling + - LP: #1480894 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc8 + - LP: #1483440 + - LP: #1484334 + + -- Tim Gardner Fri, 21 Aug 2015 07:12:11 -0600 + +linux (4.2.0-5.5) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1487173 + + [ Andy Whitcroft ] + + * [Packaging] correct spelling of probabaly on the tools packages + - LP: #1256822 + * rebase to v4.2-rc7 + + [ dann frazier ] + + * d-i: Add nicpf and nicvf to nic-modules + * d-i: Enable usb modules on arm64 + + [ Mahesh Salgaonkar ] + + * SAUCE: powerpc/powernv: display reason for Malfunction Alert HMI. + - LP: #1482343 + * SAUCE: powerpc/powernv: Pull all HMI events before panic. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable + machine check errors. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable HMI. + - LP: #1482343 + + [ Vipin K Parashar ] + + * SAUCE: powerpc/powernv: Add poweroff (EPOW, DPO) events support for + PowerNV platform + - LP: #1469771 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc7 + + -- Tim Gardner Tue, 11 Aug 2015 09:48:40 -0600 + +linux (4.2.0-4.4) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1483677 + + [ Achiad Shochat ] + + * SAUCE: net/mlx5e: Support TX packet copy into WQE + * SAUCE: net/mlx5e: TX latency optimization to save DMA reads + * SAUCE: net/mlx5e: Cosmetics: use BIT() instead of "1 <<", and others + * SAUCE: net/mlx5e: Input IPSEC.SPI into the RX RSS hash function + + [ Adam Lee ] + + * SAUCE: serial: 8250_pci: Add support for Pericom PI7C9X795[1248] + - LP: #1480142 + + [ dann frazier ] + + * [Config] CONFIG_NR_CPUS=128 on arm64 + + [ Leann Ogasawara ] + + * [Config] d-i -- Add sfc to nic-modules udeb + - LP: #1481490 + + [ Saeed Mahameed ] + + * SAUCE: net/mlx5e: Support ETH_RSS_HASH_XOR + * SAUCE: net/mlx5e: Allocate DMA coherent memory on reader NUMA node + + [ Tim Gardner ] + + * [Config] CONFIG_X86_INTEL_MPX=y + - LP: #1460902 + * [Debian] change dependency on module-init-tools to kmod + - LP: #1481986 + * rebase to v4.2-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc6 + + -- Tim Gardner Tue, 04 Aug 2015 16:59:45 -0600 + +linux (4.2.0-3.3) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481462 + * SAUCE: workqueue: Make flush_workqueue() available again to non GPL modules + Fixes an FTBS for at least one DKMS package. + + -- Tim Gardner Tue, 04 Aug 2015 11:26:53 -0600 + +linux (4.2.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481067 + * rebase to v4.2-rc5 + + [ Andy Whitcroft ] + + * [Packaging] module-inclusion -- commonise copy code and simplify + * [Packaging] module-inclusion -- add manual command entries + * [Packaging] module blacklists -- add support for manual blacklists + * [Packaging] do_common_tools should always be on + * [Packaging] initscripts need installing when making the package + * [Packaging] initscripts work around bug in debhelper systemd support + * [Config] exclude oss modules from linux-image + - LP: #1434842 + * hyper-v -- add hid and fb drivers to linux-virtual + - LP: #1444179 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * ubuntu: vbox -- update to 5.0.0-dfsg-1 + - LP: #1480879 + * SAUCE: vbox: follow v4.2 updates to follow_link()/put_link() API + * [Config] move vbox modules into linux-image + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc5 + - LP: #1478497 + - LP: #1477900 + + -- Andy Whitcroft Mon, 03 Aug 2015 12:20:10 +0100 + +linux (4.2.0-1.1~rc1) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1479903 + * Initial upload of v4.2 based kernel (currently v4.-rc4) + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc4 + - LP: #1476987 + - LP: #1476888 + * rebase to v4.2-rc3 + * rebase to v4.2-rc2 + * rebase to v4.2-rc1 + - LP: #1394368 + - LP: #1427680 + - LP: #1462614 + - LP: #1397021 + + -- Andy Whitcroft Thu, 30 Jul 2015 18:42:46 +0100 + +linux (4.1.0-3.3) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1478897 + + [ Colin Ian King ] + + * SAUCE: KEYS: ensure we free the assoc array edit if edit is valid + - CVE-2015-1333 + + [ Seth Forshee ] + + * SAUCE: overlayfs: Enable user namespace mounts for the "overlay" fstype + - LP: #1478578 + + [ Upstream Kernel Changes ] + + * sched/stop_machine: Fix deadlock between multiple stop_two_cpus() + - LP: #1461620 + * x86/nmi: Enable nested do_nmi() handling for 64-bit kernels + * x86/nmi/64: Remove asm code that saves cr2 + * x86/nmi/64: Switch stacks on userspace NMI entry + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + + -- Andy Whitcroft Tue, 28 Jul 2015 11:59:03 +0100 + +linux (4.1.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.1.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * rebase to v4.1.3 + * [Config] Add i40e[vf] to d-i + - LP: #1476393 + + [ Upstream Kernel Changes ] + + * rebase to v4.1.3 + - LP: #1427680 + - LP: #1462614 + - LP: #1394368 + + -- Tim Gardner Wed, 22 Jul 2015 09:13:02 -0600 + +linux (4.1.0-1.1) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + * [Packaging] fix up Vcs-Git: to point to launchpad + * [Config] correct linux-initramfs-tool virtual linkage + - LP: #1474810 + + [ Chris J Arges ] + + * [Config] Add dm-service-time to multipath-modules + - LP: #1469240 + * [Config] Add MTD_POWERNV_FLASH and OPAL_PRD + - LP: #1464560 + + [ Jay Vosburgh ] + + * SAUCE: fan: Proof of concept implementation (v2) + - LP: #1439706 + * SAUCE: fan: tunnel multiple mapping mode (v3) + - LP: #1470091 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: disable ext4_punch_hole for indirect filesystems" + * Revert "SAUCE: intel_pstate: inform user that thermald is worth + considering" + * Revert "SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537" + * Revert "SAUCE: dm-crypt: never use write same" + * Release Tracking Bug + - LP: #1476333 + + [ Tim Gardner ] + + * Rebase to v4.1 + - LP: #1443371 + * [Config] Enable Apparmor + * [Config] CONFIG_OVERLAY_FS_V1=y + * [Config] DEFAULT_IOSCHED="deadline" for ppc64el + - LP: #1469829 + * [Config] CONFIG_VM86=n + - LP: #1473447 + * [Config] ACORN_PARTITION=n + - LP: #1453117 + + [ Timo Aaltonen ] + + * [Config] Disable CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT + - LP: #1473319 + + [ Upstream Kernel Changes ] + + * efi: efivar_create_sysfs_entry() should return negative error codes + * efi: Add esrt support + * x86, doc: Remove cmdline_size from list of fields to be filled in for + EFI handover + * efi/esrt: Fix some compiler warnings + * efi: dmi: List SMBIOS3 table before SMBIOS table + * efi: Add 'systab' information to Documentation/ABI + * ALSA: hda - restore the MIC FIXUP for some Dell machines + - LP: #1473560 + * mtd: powernv: Add powernv flash MTD abstraction driver + - LP: #1464560 + * powerpc/powernv: Expose OPAL APIs required by PRD interface + - LP: #1464560 + * powerpc/powernv: Add opal-prd channel + - LP: #1464560 + * powerpc/powernv: fix construction of opal PRD messages + - LP: #1464560 + * powerpc/include: Add opal-prd to installed uapi headers + - LP: #1464560 + * powerpc/powernv: Fix vma page prot flags in opal-prd driver + - LP: #1464560 + + -- Leann Ogasawara Mon, 20 Jul 2015 10:16:06 -0700 + +linux (4.0.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.0.0-1.2) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * [Config] enable CONFIG_OVERLAY_FS_V1 + + [ Tai Nguyen ] + + * SAUCE: power: reset: Add syscon reboot device node for APM X-Gene platform + - LP: #1463211 + + [ Tim Gardner ] + + * [Config] CONFIG_HIBERNATION=n for ppc64el + - LP: #1463836 + + -- Tim Gardner Fri, 12 Jun 2015 06:11:53 -0600 + +linux (4.0.0-1.1) wily; urgency=low + + [ Leann Ogasawara ] + + * Revert "md/raid0: fix bug with chunksize not a power of 2." + - LP: #1457510 + * powerpc/powernv: Check image loaded or not before calling flash + - LP: #1461553 + + [ Tim Gardner ] + + * [Config] armhf: CPUFREQ_DT=y + - LP: #1457781 + + [ Upstream Kernel Changes ] + + * rebase to v4.0.5 + - LP: #1429756 + - LP: #1452175 + - LP: #1454656 + - LP: #1447909 + - LP: #1446517 + - LP: #1428947 + - LP: #1410704 + - LP: #1412800 + - LP: #1400215 + - LP: #1411193 + - LP: #1412800 + - LP: #1408295 + - LP: #1436745 + + -- Leann Ogasawara Tue, 09 Jun 2015 05:58:46 -0700 + +linux (3.19.0-10.10) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] control -- make element ordering deterministic + * [Config] allow dracult to support initramfs as well + - LP: #1109029 + * [Packaging] generate live watchdog blacklists + - LP: #1432837 + + [ Leann Ogasawara ] + + * [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y + - LP: #1397860 + * rebase to v3.19.2 + + [ Upstream Kernel Changes ] + + * thinkpad_acpi: support new BIOS version string pattern + - LP: #1417915 + * arm64: Invalidate the TLB corresponding to intermediate page table + levels + - LP: #1432546 + * perf tools: Support parsing parameterized events + - LP: #1430341 + * perf tools: Extend format_alias() to include event parameters + - LP: #1430341 + * perf Documentation: Add event parameters + - LP: #1430341 + * perf tools: Document parameterized and symbolic events + - LP: #1430341 + * perf: provide sysfs_show for struct perf_pmu_events_attr + - LP: #1430341 + * perf: add PMU_EVENT_ATTR_STRING() helper + - LP: #1430341 + * perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper + - LP: #1430341 + * powerpc/perf/hv-24x7: parse catalog and populate sysfs with events + - LP: #1430341 + * powerpc/perf/{hv-gpci, hv-common}: generate requests with counters + annotated + - LP: #1430341 + * powerpc/perf/hv-gpci: add the remaining gpci requests + - LP: #1430341 + * powerpc/perf/hv-24x7: Document sysfs event description entries + - LP: #1430341 + * powerpc/iommu: Remove IOMMU device references via bus notifier + - LP: #1425202 + * powerpc/pseries: Fix endian problems with LE migration + - LP: #1428351 + * intel_idle: support additional Broadwell model + - LP: #1400970 + * tools/power turbostat: support additional Broadwell model + - LP: #1400970 + * KVM: x86: flush TLB when D bit is manually changed. + - LP: #1397860 + * Optimize TLB flush in kvm_mmu_slot_remove_write_access. + - LP: #1397860 + * KVM: Add generic support for dirty page logging + - LP: #1397860 + * KVM: x86: switch to kvm_get_dirty_log_protect + - LP: #1397860 + * KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for + log dirty + - LP: #1397860 + * KVM: MMU: Add mmu help functions to support PML + - LP: #1397860 + * KVM: MMU: Explicitly set D-bit for writable spte. + - LP: #1397860 + * KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access + - LP: #1397860 + * KVM: x86: Add new dirty logging kvm_x86_ops for PML + - LP: #1397860 + * KVM: VMX: Add PML support in VMX + - LP: #1397860 + * HID: multitouch: add support of clickpads + * HID: multitouch: Add support for button type usage + + [ Upstream Kernel Changes ] + + * rebase to v3.19.2 + - LP: #1428947 + + -- Andy Whitcroft Mon, 23 Mar 2015 15:28:16 +0000 + +linux (3.19.0-9.9) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1430930 + + [ Shachar Raindel ] + + * SAUCE: IB/core: Prevent integer overflow in ib_umem_get address + arithmetic + - LP: #1413741 + - CVE-2014-8159 + + -- Leann Ogasawara Wed, 11 Mar 2015 10:29:17 -0700 + +linux (3.19.0-8.8) vivid; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * rebase to stable v3.19.1 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + - LP: #1408833 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1429940 + + [ Upstream Kernel Changes ] + + * xen: correct bug in p2m list initialization + * net/mlx5_core: Fix configuration of log_uar_page_sz + - LP: #1419938 + * tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + - LP: #1420575 + * net/mlx4_core: Maintain a persistent memory for mlx4 device + - LP: #1422481 + * net/mlx4_core: Set device configuration data to be persistent across + reset + - LP: #1422481 + * net/mlx4_core: Refactor the catas flow to work per device + - LP: #1422481 + * net/mlx4_core: Enhance the catas flow to support device reset + - LP: #1422481 + * net/mlx4_core: Activate reset flow upon fatal command cases + - LP: #1422481 + * net/mlx4_core: Manage interface state for Reset flow cases + - LP: #1422481 + * net/mlx4_core: Handle AER flow properly + - LP: #1422481 + * net/mlx4_core: Enable device recovery flow with SRIOV + - LP: #1422481 + * net/mlx4_core: Reset flow activation upon SRIOV fatal command cases + - LP: #1422481 + * tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() + - LP: #1428111 + * rebase to v3.19.1 + - LP: #1410704 + - LP: #1411193 + - LP: #1400215 + + -- Leann Ogasawara Mon, 09 Mar 2015 10:08:29 -0700 + +linux (3.19.0-7.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1426013 + + [ Upstream Kernel Changes ] + + * x86/irq: Fix regression caused by commit b568b8601f05 + * cxl: Fix leaking interrupts if attach process fails + - LP: #1415102 + * cxl: Early return from cxl_handle_fault for a shut down context + - LP: #1415102 + * cxl: Disable AFU debug flag + - LP: #1415102 + * cxl: Disable SPAP register when freeing SPA + - LP: #1415102 + * cxl: remove redundant increment of hwirq + - LP: #1415102 + * cxl: Add tracepoints + - LP: #1415102 + * cxl: Update CXL ABI documentation + - LP: #1415102 + * cxl: Use image state defaults for reloading FPGA + - LP: #1415102 + * cxl: Add image control to sysfs + - LP: #1415102 + * cxl: Enable CAPP recovery + - LP: #1415102 + * cxl: Add ability to reset the card + - LP: #1415102 + * cxl: Fix device_node reference counting + - LP: #1415102 + * cxl: Export optional AFU configuration record in sysfs + - LP: #1415102 + * cxl: Fail AFU initialisation if an invalid configuration record is + found + - LP: #1415102 + * cxl: Add missing return statement after handling AFU errror + - LP: #1415102 + * powerpc/eeh: Introduce flag EEH_PE_REMOVED + - LP: #1415102 + * powerpc/eeh: Allow to set maximal frozen times + - LP: #1415102 + * HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + + -- Andy Whitcroft Thu, 26 Feb 2015 16:00:18 +0000 + +linux (3.19.0-6.6) vivid; urgency=low + + [ Andy Whitcroft ] + + * systemd -- fix hyper-v units to be non-forking + - LP: #1401525 + * [Config] move vbox modules into linux-image + * ubuntu: vbox -- update to 4.3.22-dfsg-1 + + [ Brad Figg ] + + * SAUCE: DEP8 test to run our regression tests + + [ Paolo Pisati ] + + * [Config] I2C_CHARDEV=y + - LP: #1417032 + + [ Upstream Kernel Changes ] + + * PCI: Fix infinite loop with ROM image of size 0 + * tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma + * Bluetooth: ath3k: workaround the compatibility issue with xHCI + controller + - LP: #1400215 + + -- Andy Whitcroft Thu, 19 Feb 2015 12:44:43 +0000 + +linux (3.19.0-5.5) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_FA_DUMP=y + - LP: #1415562 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 + * rebase to v3.19 final + + [ Chris J Arges ] + + * [Config] Add ibmvfc to d-i + - LP: #1416001 + * SAUCE: ext4: disable ext4_punch_hole for indirect filesystems + - LP: #1292234 + + [ Upstream Kernel Changes ] + + * rebase to v3.19 + + -- Andy Whitcroft Mon, 09 Feb 2015 10:41:11 +0000 + +linux (3.19.0-4.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] apply Kernel hacking >> Tracers config defaults + * hyper-v -- fix comment handing in /etc/network/interfaces + - LP: #1413020 + * rebase to v3.19-rc7 + * updateconfigs following rebase to v3.19-rc7 + + [ Ben Hutchings ] + + * SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop + - LP: #1413149 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc7 + + -- Andy Whitcroft Mon, 02 Feb 2015 17:03:07 +0200 + +linux (3.19.0-3.3) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Debian] arm64 -- build ubuntu drivers + - LP: #1411284 + * [Packaging] config-check -- add support for enforced annotations + * [Config] annotations -- switch to ENFORCED annotations + * [Packaging] config-check -- drop support for enforce file + * [Packaging] enforce -- drop empty enforce file + * rebase to v3.19-rc5 + * [Config] add modules removed due to tighter dependencies + * [Config] updateconfigs following rebase to v3.19-rc5 + * [Config] enforce CONFIG_FHANDLE=y + - LP: #1412543 + * [Packaging] hyper-v -- daemons now require -n for non-forking startup + - LP: #1408355 + * [Config] CONFIG_DEBUG_INFO_SPLIT=n + - LP: #1413646 + * [Config] apply Device Drivers >> Character devices >> IPMI top-level + message handler config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support >> + Special HID drivers config defaults + * [Config] apply Device Drivers >> Hardware Monitoring support config + defaults + * [Config] apply Device Drivers >> I2C support >> I2C support >> I2C + Hardware Bus support config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Analog to + digital converters config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Humidity + sensors config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Pressure + sensors config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support >> Media test drivers config defaults + * [Config] apply Device Drivers >> Multimedia support >> Media PCI + Adapters config defaults + * [Config] apply Device Drivers >> Multimedia support >> Remote + Controller devices config defaults + * [Config] apply Device Drivers >> Network device support >> Distributed + Switch Architecture drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config + defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pin controllers config defaults + * [Config] apply Device Drivers >> SPI support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> ALSA for SoC audio support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> FireWire sound devices config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> HD-Audio config defaults + * [Config] apply Device Drivers >> Staging drivers >> Lustre file system + client support config defaults + * [Config] apply Device Drivers >> Staging drivers >> Media staging + drivers config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Gadget Drivers >> USB functions configurable through configfs + config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Peripheral Controller config defaults + * [Config] apply Networking support >> NFC subsystem support >> Near + Field Communication (NFC) devices config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> Core Netfilter Configuration + >> Netfilter nf_tables support config defaults + * [Config] apply Networking support >> Networking options >> QoS and/or + fair queueing >> Actions config defaults + * [Config] apply Networking support >> Networking options >> TCP/IP + networking config defaults + * [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 + Networking Stack (mac80211) config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Keyboards config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IP: Netfilter Configuration + >> IPv4 NAT config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + >> IPv6 NAT config defaults + * [Config] apply Kernel hacking >> Kernel debugging config defaults + * [Config] apply General setup >> Timers subsystem >> Timer tick handling + config defaults + * SAUCE: arm64 -- psci tell the compiler which registers we are needing + values in + - LP: #1414002 + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N + (iwlwifi) config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply General setup >> CPU/Task time and stats accounting >> + Cputime accounting config defaults + * [Config] apply Device Drivers >> Mailbox Hardware Support config + defaults + * rebase to v3.19-rc6 + * [Config] updateconfigs following rebase to v3.19-rc6 + + [ Kamal Mostafa ] + + * [Packaging] force "dpkg-source -I -i" behavior + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_USB_OTG + - LP: #1411295 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support (fixes) + - LP: #1410480 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc5 + * rebase to v3.19-rc6 + + -- Andy Whitcroft Mon, 26 Jan 2015 11:37:39 +0000 + +linux (3.19.0-2.2) vivid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.19-rc4 + * [Config] updateconfigs following rebase to v3.19-rc4 + * [Packaging] install all dtb files + - LP: #1408002 + * [Config] switch on "all" dtbs + - LP: #1408002 + + [ Colin Ian King ] + + * SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new + timers + - LP: #1333569 + + [ Joseph Salisbury ] + + * [Config] Enable CONFIG_N_GSM as module. + - LP: #1404670 + + [ K. Y. Srinivasan ] + + * SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + - LP: #1406867 + + [ Steve McIntyre ] + + * SAUCE: efi: Expose underlying UEFI firmware platform size to userland + - LP: #1409750 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc4 + + -- Andy Whitcroft Tue, 13 Jan 2015 12:35:58 +0000 + +linux (3.19.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: AUFS -- aufs3-standalone.patch" + * Revert "SAUCE: AUFS -- aufs3-mmap.patch" + * Revert "SAUCE: AUFS -- aufs3-base.patch" + * ubuntu: AUFS3 -- follow switch to vfs_fallocate + * rebase to v3.19-rc1 + * rebase to v3.19-rc2 + * [Config] defaultconfigs following rebase to v3.19-rc2 + * ubuntu: aufs3 -- follow rename of d_child + * ubuntu: aufs3 -- follow switch to d_splice_alias + * ubuntu: aufs3 -- follow switch to get_unused_fd_flags() + * ubuntu: aufs3 -- follow rename for d_alias + * apparmor -- follow change to this_cpu_ptr + * disable module checks for rebase + * ubuntu: AUFS -- substrate: aufs3-base.patch + * ubuntu: AUFS -- substrate: aufs3-mmap.patch + * ubuntu: AUFS -- substrate: aufs3-standalone.patch + * ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c + * [Configs] updateconfigs following aufs update + * v3.19 series start + * rebase to v3.19-rc3 + * [Configs] updateconfigs following rebase to v3.19-rc3 + * [Packaging] uploadnum should be the remainder of the version + - LP: #1407755 + * [Packaging] handle dts directories + - LP: #1408004 + * [Config] follow move of arm64 dts' into vendor directories + + [ Upstream Kernel Changes ] + + * arm64: optimized copy_to_user and copy_from_user assembly code + - LP: #1400349 + * iommu/ipmmu-vmsa: follow flag switch to IOMMU_NOEXEC + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc1 + - LP: #1173681 + * rebase to v3.19-rc2 + * rebase to v3.19-rc3 + + -- Andy Whitcroft Tue, 06 Jan 2015 14:30:02 +0000 + +linux (3.18.0-7.8) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1401590 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot + - LP: #1362199 + * SAUCE: Revert: fix: only allow a single threaded process to ... + - LP: #1371310 + * SAUCE: (no-up) fix: bad unix_addr_fs macro + - LP: #1390223 + * SAUCE: (no-up) apparmor: add parameter to control whether policy + hashing is used + - LP: #1383886 + * [config] set apparmor config options + + [ Seth Forshee ] + + * [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n + - LP: #1398458 + + [ Upstream Kernel Changes ] + + * mfd: rtsx: Fix PM suspend for 5227 & 5249 + - LP: #1359052 + * mmc: sdhci-pci-o2micro: Fix Dell E5440 issue + - LP: #1346067 + + -- Leann Ogasawara Thu, 11 Dec 2014 08:36:36 -0800 + +linux (3.18.0-6.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code" + - LP: #1398596 + * rebase to v3.18 + + [ Chris J Arges ] + + * [Config] CONFIG_PCIEASPM_DEBUG=y + - LP: #1398544 + + [ Paolo Pisati ] + + * [Config] armhf: VIRTIO_[BALLOON|MMIO]=y + - LP: #1396470 + + [ Upstream Kernel Changes ] + + * drivers:scsi:storvsc: Fix a bug in handling ring buffer failures that + may result in I/O freeze + - LP: #1400289 + + [ Upstream Kernel Changes ] + + * rebase to v3.18 + + -- Leann Ogasawara Mon, 08 Dec 2014 09:15:17 -0800 + +linux (3.18.0-5.6) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1398109 + + [ Andy Whitcroft ] + + * [Config] CONFIG_SCSI_MQ_DEFAULT=n + - LP: #1397061 + * rebase to v3.18-rc7 + + [ Chris J Arges ] + + * [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp + ppc64el/generic + - LP: #1395855 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc7 + - LP: #1389497 + + -- Leann Ogasawara Mon, 01 Dec 2014 10:09:09 -0800 + +linux (3.18.0-4.5) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1395891 + + [ Andy Whitcroft ] + + * rebase to v3.18-rc6 + * [Config] update configs following rebase to v3.18-rc6 + * [Config] enable overlayfs v1 support + + [ Tim Gardner ] + + * rebase to v3.18-rc5 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support + - LP: #1395877 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc5 + * rebase to v3.18-rc6 + + -- Leann Ogasawara Mon, 24 Nov 2014 13:12:48 -0800 + +linux (3.18.0-3.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] CONFIG_AUFS_FS=n for FTBS" + * Revert "SAUCE: AUFS -- update to + dcf336a754c86d5ee1c3d50699fd75c586d037cb" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-standalone.patch" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-base.patch" + * [Config] amd64 is now the indep architecture + * [Debian] basic hook support + * SAUCE: AUFS -- aufs3-base.patch + * SAUCE: AUFS -- aufs3-mmap.patch + * SAUCE: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 + * [Config] updateconfigs following aufs3 update + * SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + * [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET + * [Config] Disable CONFIG_RCU_USER_QS on arm64 + + [ Tim Gardner ] + + * rebase to v3.18-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc4 + - LP: #1389497 + - LP: #1387128 + + -- Andy Whitcroft Tue, 11 Nov 2014 17:16:13 +0000 + +linux (3.18.0-2.2) vivid; urgency=low + + [ Tim Gardner ] + + * SAUCE: nft_reject_bridge.c: Include net/ip6_checksum.h + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc3 + + -- Tim Gardner Mon, 03 Nov 2014 06:09:06 -0700 + +linux (3.18.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el" + * [Config] tools -- only build common tools when enabled + * [Config] follow rename of DEB_BUILD_PROFILES + * [Config] linux-image-extra is additive to linux-image + - LP: #1375310 + * [Config] linux-image-extra postrm is not needed on purge + * [Config] enable cloud tools on i386 + - LP: #1367399 + + [ Marc Dietrich ] + + * [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs + + [ Paolo Pisati ] + + * [Config] armhf: REGULATOR_TWL4030=y + * [Config] armhf: disable JUMP_LABEL + - LP: #1378856 + + [ Tim Gardner ] + + * rebase to v3.17-rc2 + * updateconfigs + * [Config] CONFIG_NFC_ST21NFCB=n + * [Config] Added net/6lowpan/* to generic inclusion list + * [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR + * rebase to v3.17-rc3 + * rebase to v3.17-rc4 + * rebase to v3.17-rc5 + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y + * [Config] CONFIG_XMON=y + - LP: #1365655 + * [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el + - LP: #1362514 + * [Config] CONFIG_KVM_BOOK3S_64_HV=m + - LP: #1362514 + * [Config] CONFIG_DMA_CMA=n + - LP: #1362261 + * [Config] Add mpt3sas to d-i + - LP: #1368907 + * [Debian] set do_*_tools after stage1 or bootstrap is determined + - LP: #1370211 + * [Config] CONFIG_USB_OHCI_HCD_PCI=y + - LP: #1244176 + * rebase to v3.17-rc6 + * SAUCE: usbip: Update include path + * [Debian] usbip tools packaging + - LP: #898003 + * [Config] Enable usbip tools + - LP: #898003 + * [Config] CONFIG_CRASH_DUMP=n for powerpc-smp + - LP: #1363180 + * [Config] Correct annotation regarding CONFIG_DMA_CMA + - LP: #1362261 + * [Config] CONFIG_SND_HDA_INTEL=n for ppc64el + - LP: #1374438 + * [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el + - LP: #1374440 + * [Debian] Don't fail if a symlink already exists + * rebase to v3.17-rc7 + * [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el + - LP: #1374440 + * rebase to v3.17 + * rebase to v3.18-rc1 + * [Config] CONFIG_AUFS_FS=n for FTBS + * Enable vivid + * [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n + - LP: #1385510 + * rebase to v3.18-rc2 + * [Debian] Fix linux-doc dangling symlinks + - LP: #661306 + * CONFIG_MODULE_COMPRESS=n + * [Config] dropped scsi_tgt from generic inclusion list + * [Config] Added drivers/uio to generic inclusion list + * [Config] CONFIG_PATA_MACIO=y + - LP: #1378894 + * [Config] CONFIG_DRM_BOCHS=n + * [Debian] install usbipd + - LP: #898003 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc1 + - LP: #1316518 + - LP: #1371591 + - LP: #1357928 + + [ Upstream Kernel Changes ] + + * rebase to v3.17 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + - LP: #1358116 + - LP: #1350148 + - LP: #1334950 + - LP: #1329580 + - LP: #1329580 + - LP: #1329580 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + + -- Tim Gardner Tue, 26 Aug 2014 10:36:19 -0600 + +linux (3.17.0-0.0) utopic; urgency=medium + + * Empty entry + + -- Tim Gardner Tue, 26 Aug 2014 10:34:44 -0600 + +linux (3.16.0-11.16) utopic; urgency=low + + [ Mauricio Faria de Oliveira ] + + * [Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el + - LP: #1358920 + + [ Peter Zijlstra ] + + * SAUCE: (no-up) mmu_notifier: add call_srcu and sync function for listener to delay call and sync + - LP: #1361300 + + [ Tim Gardner ] + + * [Config] CONFIG_ZPOOL=y + - LP: #1360428 + * Release Tracking Bug + - LP: #1361308 + + [ Upstream Kernel Changes ] + + * Revert "net/mlx4_en: Fix bad use of dev_id" + - LP: #1347012 + * net/mlx4_en: Reduce memory consumption on kdump kernel + - LP: #1347012 + * net/mlx4_en: Fix mac_hash database inconsistency + - LP: #1347012 + * net/mlx4_en: Disable blueflame using ethtool private flags + - LP: #1347012 + * net/mlx4_en: current_mac isn't updated in port up + - LP: #1347012 + * net/mlx4_core: Use low memory profile on kdump kernel + - LP: #1347012 + * Drivers: scsi: storvsc: Change the limits to reflect the values on the host + - LP: #1347169 + * Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by the Host + - LP: #1347169 + * Drivers: scsi: storvsc: Filter commands based on the storage protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Implement a eh_timed_out handler + - LP: #1347169 + * drivers: scsi: storvsc: Set srb_flags in all cases + - LP: #1347169 + * drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure + - LP: #1347169 + * namespaces: Use task_lock and not rcu to protect nsproxy + - LP: #1328088 + * net: xgene: Check negative return value of xgene_enet_get_ring_size() + * mm/zbud: change zbud_alloc size type to size_t + - LP: #1360428 + * mm/zpool: implement common zpool api to zbud/zsmalloc + - LP: #1360428 + * mm/zpool: zbud/zsmalloc implement zpool + - LP: #1360428 + * mm/zpool: update zswap to use zpool + - LP: #1360428 + * ideapad-laptop: Change Lenovo Yoga 2 series rfkill handling + - LP: #1341296 + * iommu/amd: Fix for pasid initialization + - LP: #1361300 + * iommu/amd: Moving PPR fault flags macros definitions + - LP: #1361300 + * iommu/amd: Drop oprofile dependency + - LP: #1361300 + * iommu/amd: Fix typo in amd_iommu_v2 driver + - LP: #1361300 + * iommu/amd: Don't call mmu_notifer_unregister in __unbind_pasid + - LP: #1361300 + * iommu/amd: Don't free pasid_state in mn_release path + - LP: #1361300 + * iommu/amd: Get rid of __unbind_pasid + - LP: #1361300 + * iommu/amd: Drop pasid_state reference in ppr_notifer error path + - LP: #1361300 + * iommu/amd: Add pasid_state->invalid flag + - LP: #1361300 + * iommu/amd: Don't hold a reference to mm_struct + - LP: #1361300 + * iommu/amd: Don't hold a reference to task_struct + - LP: #1361300 + * iommu/amd: Don't call the inv_ctx_cb when pasid is not set up + - LP: #1361300 + * iommu/amd: Don't set pasid_state->mm to NULL in unbind_pasid + - LP: #1361300 + * iommu/amd: Remove change_pte mmu_notifier call-back + - LP: #1361300 + * iommu/amd: Fix device_state reference counting + - LP: #1361300 + * iommu/amd: Fix 2 typos in comments + - LP: #1361300 + + -- Tim Gardner Fri, 22 Aug 2014 08:45:54 -0400 + +linux (3.16.0-10.15) utopic; urgency=low + + [ dann frazier ] + + * [debian] Fix regression with ABI subversions and backport + + [ Feng Kan ] + + * SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read + modify write. + - LP: #1357527 + * SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code + - LP: #1358949 + + [ Stefan Bader ] + + * SAUCE: bcache: prevent crash on changing writeback_running + - LP: #1357295 + + [ Tim Gardner ] + + * [Config] CONFIG_XFRM_STATISTICS=y + * [Config] CONFIG_SECURITY_NETWORK_XFRM=y + * [Config] CONFIG_SENSORS_IBMPOWERNV=m + - LP: #1353005 + * Release Tracking Bug + - LP: #1359783 + + [ Upstream Kernel Changes ] + + * intel_idle: Broadwell support + - LP: #1256170 + * powerpc/book3s: Add basic infrastructure to handle HMI in Linux. + - LP: #1357108 + * powerpc/powernv: Invoke opal call to handle hmi. + - LP: #1357108 + * powerpc/book3s: handle HMIs for cpus in nap mode. + - LP: #1357108 + * powerpc/book3s: Fix endianess issue for HMI handling on napping cpus. + - LP: #1357108 + * powerpc: Add smp_mb() to arch_spin_is_locked() + - LP: #1358569 + * powerpc: Add smp_mb()s to arch_spin_unlock_wait() + - LP: #1358569 + * hwmon: (powerpc/powernv) hwmon driver for power, fan rpm, voltage and + temperature + - LP: #1353005 + * tools/testing/selftests/ptrace/peeksiginfo.c: add PAGE_SIZE definition + - LP: #1358855 + * printk: Add function to return log buffer address and size + - LP: #1359423 + * powerpc/powernv: Interface to register/unregister opal dump region + - LP: #1359423 + * bcache: fix crash on shutdown in passthrough mode + - LP: #1357295 + * bcache: fix uninterruptible sleep in writeback thread + - LP: #1357295 + + [ Vinayak Kale ] + + * SAUCE: (no-up) dt-bindings: Add Potenza PMU binding + - LP: #1357527 + * SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC + - LP: #1357527 + + -- Tim Gardner Fri, 15 Aug 2014 12:34:33 -0600 + +linux (3.16.0-9.14) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1357370 + + [ Serge Hallyn ] + + * SAUCE: Overlayfs: allow unprivileged mounts + - LP: #1357025 + + [ Upstream Kernel Changes ] + + * MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * dts: Add bindings for APM X-Gene SoC ethernet driver + * drivers: net: Add APM X-Gene SoC ethernet driver support. + * powerpc/thp: Add write barrier after updating the valid bit + - LP: #1357014 + * powerpc/thp: Don't recompute vsid and ssize in loop on invalidate + - LP: #1357014 + * powerpc/thp: Invalidate old 64K based hash page mapping before insert + of 4k pte + - LP: #1357014 + * powerpc/thp: Handle combo pages in invalidate + - LP: #1357014 + * powerpc/thp: Invalidate with vpn in loop + - LP: #1357014 + * powerpc/thp: Use ACCESS_ONCE when loading pmdp + - LP: #1357014 + * powerpc/mm: Use read barrier when creating real_pte + - LP: #1357014 + * powerpc/thp: Add tracepoints to track hugepage invalidate + - LP: #1357014 + * rebase to v3.16.1 + + -- Tim Gardner Thu, 14 Aug 2014 08:18:02 -0400 + +linux (3.16.0-8.13) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1356403 + + [ dann frazier ] + + * [debian] Allow for package revisions condusive for branching + + [ Upstream Kernel Changes ] + + * ahci_xgene: Fix the watermark threshold for the APM X-Gene SATA host controller driver. + - LP: #1350087 + * ahci_xgene: Use correct OOB tunning parameters for APM X-Gene SoC AHCI SATA Host controller driver. + - LP: #1350087 + * powerpc/powernv: Enable M64 aperatus for PHB3 + - LP: #1355469 + * powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE + - LP: #1352994 + * powerpc: Add machine_early_initcall() + - LP: #1352640 + * powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() + - LP: #1352640 + * powerpc/eeh: Avoid event on passed PE + - LP: #1352640 + * powerpc/eeh: EEH support for VFIO PCI device + - LP: #1352640 + * powerpc/eeh: sysfs entries lost + - LP: #1352640 + * powerpc/powernv: Fix IOMMU table for VFIO dev + - LP: #1352640 + * powerpc/eeh: Fetch IOMMU table in reliable way + - LP: #1352640 + * powerpc/eeh: Refactor EEH flag accessors + - LP: #1352640 + * powerpc/eeh: Selectively enable IO for error log + - LP: #1352640 + * powerpc/eeh: Reduce lines of log dump + - LP: #1352640 + * powerpc/eeh: Replace pr_warning() with pr_warn() + - LP: #1352640 + * powerpc/eeh: Make diag-data not endian dependent + - LP: #1352640 + * powerpc/eeh: Aux PE data for error log + - LP: #1352640 + * PCI: Support BAR sizes up to 128GB + - LP: #1352640 + * powerpc/powernv: Allow to freeze PE + - LP: #1352640 + * powerpc/powernv: Split ioda_eeh_get_state() + - LP: #1352640 + * powerpc/powernv: Handle compound PE + - LP: #1352640 + * powerpc/powernv: Handle compound PE for EEH + - LP: #1352640 + * powerpc/powernv: Handle compound PE in config accessors + - LP: #1352640 + * mnt: Only change user settable mount flags in remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into do_remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Correct permission checks in do_remount + - LP: #1356323 + - CVE-2014-5207 + * mnt: Change the default remount atime from relatime to the existing value + - LP: #1356323 + - CVE-2014-5207 + + -- Tim Gardner Sun, 10 Aug 2014 09:10:51 -0600 + +linux (3.16.0-7.12) utopic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.16 final + * [Config] d-i -- add virtio_scsi to virtio-modules + - LP: #1342000 + + [ dann frazier ] + + * [Packaging] Fix 'printchanges' to work with versions containing '+' + + [ Tim Gardner ] + + * [Config] CONFIG_MICROCODE=y + - LP: #1084373 + * [Config] CONFIG_CONTEXT_TRACKING_FORCE=n + - LP: #1349028 + * [Config] Add hv_balloon to d-i virtio-modules + - LP: #1292216 + * Release Tracking Bug + - LP: #1354530 + + [ Upstream Kernel Changes ] + + * rebase to v3.16 + + -- Tim Gardner Tue, 29 Jul 2014 09:55:15 -0400 + +linux (3.16.0-6.11) utopic; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m + * [Config] armhf: KEYBOARD_IMX=m + * [Config] armhf: build cubox & imx6 DTBs + * [Config] armhf: RTC_DRV_PCF8523=y + + [ Tim Gardner ] + + * [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y + - LP: #1344405 + * [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y + - LP: #1343109 + * Release Tracking Bug + - LP: #1349196 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc7 + + -- Tim Gardner Thu, 24 Jul 2014 09:08:55 -0400 + +linux (3.16.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1346298 + * [Config] CONFIG_GPIO_SYSFS=y + - LP: #1342153 + * rebase to v3.16-rc6 + + [ Paolo Pisati ] + + * [Config] enable ARCH_MVEBU* + * [Config] AHCI_MVEBU=m + * [Config] ARMADA_THERMAL=y + * [Config] ARM_ARMADA_370_XP_CPUIDLE=y + * [Config] CRYPTO_DEV_MV_CESA=m + * [Config] I2C_MV64XXX=m + * [Config] MMC_MVSDIO=m + * [Config] MMC_SDHCI_DOVE=m + * [Config] MTD_NAND_ORION=m + * [Config] MTD_NAND_PXA3xx=m + * [Config] MVNETA=m + * [Config] MV_XOR=y + * [Config] ORION_WATCHDOG=m + * [Config] PCI_MVEBU=y + * [Config] RTC_DRV_MV=y + * [Config] SND_KIRKWOOD_SOC*=m + * [Config] SPI_ORION=m + * [Config] USB_XHCI_MVEBU=m + * [Config] armhf: build all Armada and Dove DTBs + * [Config] armhf: SERIAL_8250_DW=y + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc6 + + -- Tim Gardner Tue, 15 Jul 2014 07:49:42 -0400 + +linux (3.16.0-4.9) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1341543 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc5 + + -- Tim Gardner Sun, 13 Jul 2014 21:30:27 -0400 + +linux (3.16.0-3.8) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1340091 + + -- Tim Gardner Thu, 10 Jul 2014 10:06:47 +0100 + +linux (3.16.0-2.7) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- avoid aufs3-mmap.patch include hell for arm64 + ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + + -- Tim Gardner Wed, 09 Jul 2014 16:16:28 +0100 + +linux (3.16.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: aufs3 -- (no-up) aufs3-mmap.patch" + Fixes FTBS. + + -- Tim Gardner Tue, 08 Jul 2014 17:29:26 +0100 + +linux (3.16.0-2.5) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu -- fix basic format for ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: aufs3 -- update update scripting + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS -- update to dcf336a754c86d5ee1c3d50699fd75c586d037cb + * [Configs] AUFS configs + * ubuntu: aufs3 -- reenable + + [ Tim Gardner ] + + * CONFIG_LATENCYTOP=n + + -- Tim Gardner Tue, 08 Jul 2014 15:27:35 +0100 + +linux (3.16.0-2.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] flip VIRTIO*=y + * [Config] commonise CONFIG_SWIOTLB=y + * [Config] apply Bus options (PCI etc.) >> PCI support config defaults + * [Config] apply Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) + config defaults + * [Config] apply Device Drivers >> Block devices config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> DMA Engine support config defaults + * [Config] apply Device Drivers >> EDAC (Error Detection And Correction) + reporting config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Console display + driver support config defaults + * [Config] apply Device Drivers >> IIO staging drivers >> Accelerometers + config defaults + * [Config] apply Device Drivers >> IOMMU Hardware Support config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Miscellaneous devices config + defaults + * [Config] apply Device Drivers >> Input device support >> Hardware I/O + ports config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> Hardware Spinlock drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support config defaults + * [Config] apply Security options config defaults + * [Config] apply Networking options >> Network packet filtering framework + (Netfilter) >> Core Netfilter Configuration config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Power management and ACPI options >> CPU Frequency + scaling config defaults + * [Config] apply Processor type and features config defaults + * [Config] apply Partition Types config defaults + * [Config] apply Power management and ACPI options config defaults + * [Config] apply Device Drivers >> InfiniBand support config defaults + * [Config] apply Device Drivers >> Misc devices config defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Ethernet + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> PHY Device + support and infrastructure config defaults + * [Config] apply File systems >> Network File Systems config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> Memory Technology Device (MTD) support + >> NAND Device Support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Ralink driver support config defaults + * [Config] apply Device Drivers >> Staging drivers config defaults + * [Config] apply Cryptographic API >> Hardware crypto devices config + defaults + * [Config] apply Device Drivers >> Macintosh device drivers config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + config defaults + * [Config] apply Device Drivers >> PPS support config defaults + * [Config] apply Device Drivers >> Sound card support config defaults + * [Config] apply Networking support >> RF switch subsystem support config + defaults + * [Config] apply Library routines config defaults + * [Config] apply Device Drivers >> CODEC drivers config defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Kernel hacking >> Tracers config defaults + * [Config] apply Kernel hacking >> Runtime Testing config defaults + * [Config] apply Kernel hacking >> Architecture: powerpc config defaults + * [Config] apply Device Drivers >> USB support config defaults + * [Config] apply Device Drivers >> Power supply class support config + defaults + * [Config] apply Device Drivers >> USB Network Adapters config defaults + * [Config] apply General setup >> IRQ subsystem config defaults + * [Config] apply General setup config defaults + * [Config] apply File systems >> Miscellaneous filesystems config + defaults + * [Config] apply File systems config defaults + * [Config] apply Device Drivers >> Userspace I/O drivers config defaults + * [Config] apply Device Drivers >> Virtio drivers config defaults + * [Config] apply Device Drivers >> USB Peripheral Controller config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI Transports config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> Serial ATA and Parallel ATA drivers + (libata) config defaults + * [Config] apply Device Drivers >> SoC Audio for Freescale CPUs config + defaults + * [Config] apply Device Drivers >> Voltage and Current Regulator Support + config defaults + * [Config] apply Device Drivers >> USB Physical Layer drivers config + defaults + * [Config] apply Device Drivers >> Watchdog Timer Support config defaults + * [Config] powerpc-powerpc-e500mc FTBFS -- CONFIG_CRASH_DUMP=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_IMA=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_HIBERNATION=n + CONFIG_HOTPLUG_CPU=n + * [Config] ppc64el-generic FTBFS -- CONFIG_LUSTRE_FS=n + * [Config] drivers/message/fusion needs scsi_transport_spi in virtual + * [Config] drivers/acpi/acpi_ipmi.ko needs + drivers/char/ipmi/ipmi_msghandler.ko in virtual + * [Config] armhf-* FTBFS -- CONFIG_STACK_TRACER=n + CONFIG_FUNCTION_TRACER=n + * [Config] ignore modules changing following major config changes + + [ Tim Gardner ] + + * rebase to v3.16-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc4 + - LP: #1297581 + + -- Andy Whitcroft Thu, 03 Jul 2014 11:00:43 +0100 + +linux (3.16.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Disable do_tools_perf for FTBS" + * SAUCE: fix perf_regs definitions for arm64 + + [ Paolo Pisati ] + + * [Config] armhf: ARCH_EXYNOS5* support + * [Config] armhf: CPU_IDLE=y and ARM_EXYNOS_CPUIDLE=y + * [Config] armhf: EXYNOS_THERMAL=y + * [Config] armhf: EXYNOS_IOMMU=y + * [Config] armhf: EXYNOS_ADC=m + * [Config] armhf: EXYNOS_I2C_EXYNOS5=m + * [Config] armhf: MMC_SDHCI_S3C=m + * [Config] armhf: PCI_EXYNOS=y + * [Config] armhf: PHY_EXYNOS5250_SATA=y + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y && SAMSUNG_USBPHY=y + * [Config] armhf: PWM_SAMSUNG=m + * [Config] armhf: RTC_DRV_S3C=y + * [Config] armhf: S3C2410_WATCHDOG=m + * [Config] armhf: MMC_DW_EXYNOS=m + * [Config] armhf: SERIAL_SAMSUNG=y + * [Config] armhf: SND_SOC_SAMSUNG=m + * [Config] armhf: SPI_S3C64XX=m + * [Config] armhf: EXYNOS_VIDEO=y and VIDEO_SAMSUNG*=m + * [Config] armhf: FB_S3C=m + * [Config] armhf: build all Exynos 5 DTBs + * [Config] armhf: disable CPUFREQ_EXYNOS + + [ Tim Gardner ] + + * rebase to v3.16-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc3 + - LP: #1331915 + + -- Tim Gardner Tue, 24 Jun 2014 08:58:09 -0600 + +linux (3.16.0-0.2) utopic; urgency=low + + [ Tim Gardner ] + + * Revert "SAUCE: intel_pstate -- toggle default to disable" + - LP: #1333322 + * CONFIG_BOOKE_WDT=y + * Disable do_tools_perf for FTBS (just until I can figure it out) + + -- Tim Gardner Mon, 23 Jun 2014 13:37:53 -0600 + +linux (3.16.0-0.1) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1333265 + + [ Andy Whitcroft ] + + * [Config] cloud-tools -- add systemd units + - LP: #1329027 + + [ dann frazier ] + + * [Config] CONFIG_RTC_DRV_XGENE=y for arm64 + * [Config] CONFIG_NET_XGENE=m for arm64 + * [Config] Restrict CONFIG_POWER_RESET_SYSCON to arm64 only + + [ Feng Kan ] + + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + * SAUCE: (no-up) Add documentation for generic SYSCON reboot driver. + * SAUCE: (no-up) Select reboot driver for X-Gene platform. + + [ Iyappan Subramanian ] + + * SAUCE: (no-up) MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) drivers: net: Add APM X-Gene SoC ethernet driver support. + + [ Tim Gardner ] + + * updateconfigs + * Fix arm64 crypto Makefile + * [Config] CONFIG_BOOKE_WDT=n for FTBS + * [Debian] Add UTS_UBUNTU_RELEASE_ABI to utsrelease.h + - LP: #1327619 + * Disabled powerpc64-emb for FTBS + * [Config] CONFIG_DRM_TEGRA=m + * [Config] CONFIG_CMA_SIZE_MBYTES=64 + * rebase to v3.16-rc2 + * Clean up generic.inclusion-list warnings + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc2 + - LP: #1328587 + - LP: #1319291 + - LP: #1310512 + - LP: #1310512 + - LP: #1305480 + + -- Tim Gardner Thu, 12 Jun 2014 12:26:09 +0000 + +linux (3.15.0-6.11) utopic; urgency=low + + [ Adam Conrad ] + + * Enable building the sata-modules udeb on ppc64el. + - LP: #1323980 + * [Packaging] Set bootloader and loader on ppc64el to grub + + [ Adam Lee ] + + * SAUCE: (no-up) rtlwifi: rtl8723be: disable MSI interrupts mode + - LP: #1310512, #1320070 + + [ Alex Hung ] + + * SAUCE: (no-up) dell-led: add mic mute led interface + - LP: #1308297 + + [ Andy Whitcroft ] + + * [Config] d-i -- add hyperv_keyboard to serial-modules udeb + - LP: #1285434 + * [Config] tools -- enable cpupower on ppc64el + * [Config] ppc64el -- enable perf tools + * [Config] powerpc -- enable perf tools + * [Config] ppc64el -- reduce MAX_ORDER with 64k pages + * [Config] arm64 -- enable tools + - LP: #1326050 + * [Config] switch hyper-keyboard to virtual + - LP: #1325306 + * [Config] fix up Breaks/Replaces on linux-cloud-tools-common to fix + upgrades + * SAUCE: kvm: BIOS disabled kvm support should be a warning + - LP: #1300247 + * SAUCE: nouveau: missing outputs should be warnings + - LP: #1300244 + * [Config] d-i -- add nvme devices to block-modules udeb + - LP: #1303710 + + [ Anton Blanchard ] + + * SAUCE: (no-up) powerpc: 64bit sendfile is capped at 2GB + - LP: #1328230 + + [ Colin Ian King ] + + * SAUCE: intel_pstate: inform user that thermald is worth considering + + [ Dave Chiluk ] + + * [Config] Enable CONFIG_IP_VS_IPV6=y + - LP: #1300739 + + [ Paolo Pisati ] + + * [Config] build vexpress a9 dtb + - LP: #1303657 + + [ Tetsuo Handa ] + + * SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1329045 + * [Debian] Treat vdso install as an environment variable + - LP: #1325713 + * [Config] Treat vdso install as an environment variable + - LP: #1325713 + * [config] Set IPMI suppoort default to "y" + * [Config] powerpc -- CONFIG_SCSI_IBMVSCSI=y + * [Config] CONFIG_RT_GROUP_SCHED=n + - LP: #1284731 + * [Config] ppc64el -- switch to 64K system pages + * [Config] CONFIG_MICROCODE_EARLY=y + * [Config] SND_DAVINCI_SOC && SND_AM33XX_SOC_EVM =m + * [Config] armhf: DRM_TILCDC=m + * SAUCE: (no-up) mei_me: Add module parameter to disable MSI + * [Config] arm64: KVM=y + * [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + * [Config] armhf: generic: disable CPU_IDLE + * [Config] armhf: CPU_FREQ=y + * [Config] Add new mlx modules to d-i + * [Config] Added Muti-Arch support for linux-headers-PKGVER-ABINUM, linux-tools-common, and linux-cloud-tools-common + - LP: #1295112 + * [Config] CONFIG_EXYNOS_ADC=n, CONFIG_HW_RANDOM_EXYNOS=n, CONFIG_MMC_DW_EXYNOS=n, CONFIG_USB_DWC3_EXYNOS=n + - LP: #1294353 + * [Config] CONFIG_ABX500_CORE=y for ppc64el + * [Config] CONFIG_ALX=m for powerpc + * [Config] CONFIG_ACENIC_OMIT_TIGON_I=n for ppc64el + * [Config] CONFIG_ACORN_PARTITION_*=n for ppc64el + * [Config] CONFIG_ANDROID=n for powerpc + * [Config] CONFIG_ASYNC_RAID6_TEST=m for ppc64el + * [Config] CONFIG_BIG_KEYS=y for ppc64el + * [Config] CONFIG_BSD_PROCESS_ACCT=y for ppc64el + * rebase to v3.15 + * [Config] CONFIG_PHY_XGENE=y + * [Config] CONFIG_MLX4_DEBUG=y + - LP: #1328256 + * [Config] CONFIG_POWERNV_CPUFREQ=y for powerpc, ppc64el + - LP: #1324571 + * [Config] CONFIG_BLK_DEV_SR_VENDOR=n for ppc64el + * [Config] CONFIG_CFG80211=m for ppc64el + * [Config] CONFIG_CHARGER_BQ24190=m for powerpc + * [Config] CONFIG_CHARGER_BQ24735=m for powerpc + * [Config] CONFIG_EXPERT=y for ppc64el + * [Config] CONFIG_ATA_SFF=y on ppc64el + * [Config] CONFIG_ATA_GENERIC=y for ppc64el, powerpc + * [Config] CONFIG_CHR_DEV_ST=m for ppc64el + * [Config] CONFIG_CHECKPOINT_RESTORE=y for ppc64el + * [Config] CONFIG_CHELSIO_T1_1G=y for ppc64el + * [Config] CONFIG_CHR_DEV_OSST=m for ppc64el + * [Config] CONFIG_CHR_DEV_SCH=m for ppc64el + * [Config] CONFIG_CPU_FREQ_STAT=y for powerpc + * [Config] CONFIG_DDR=y for ppc64el + * [Config] CONFIG_DEBUG_BUGVERBOSE=y for powerpc + * [Config] CONFIG_E100=m, CONFIG_E1000=m, CONFIG_E1000E=m for ppc64el + * [Config] CONFIG_EZX_PCAP=n for all arches + * [Config] CONFIG_DYNAMIC_DEBUG=y for powerpc + * [Config] CONFIG_ENABLE_MUST_CHECK=n for ppc64el + * [Config] CONFIG_ENABLE_WARN_DEPRECATED=n for ppc64el + * [Config] CONFIG_FB_3DFX=m for all arches + * [Config] CONFIG_FB_MATROX=m for ppc64el + * [Config] CONFIG_FB_RADEON=m for ppc64el + * [Config] CONFIG_FB_SAVAGE_I2C=y for all arches + * [Config] CONFIG_FIREWIRE=m for ppc64el + * [Config] CONFIG_FTR_FIXUP_SELFTEST=n for ppc64el + * [Config] CONFIG_HAMRADIO=y for ppc64el + * [Config] CONFIG_I2C_CHARDEV=m for ppc64el + * [Config] CONFIG_I2C_MUX=m for ppc64el + * [Config] CONFIG_I2C_STUB=m for ppc64el + * [Config] CONFIG_I2O=m for ppc64el + * [Config] CONFIG_INET_XFRM_MODE_BEET=m, CONFIG_INET_XFRM_MODE_TRANSPORT=m, CONFIG_INET_XFRM_MODE_TUNNEL=m for ppc64el + * [Config] CONFIG_INFINIBAND_IPOIB_DEBUG=n, CONFIG_INFINIBAND_MTHCA_DEBUG=n for ppc64el + * [Config] CONFIG_INFINIBAND_NES=m, CONFIG_INFINIBAND_OCRDMA=m, CONFIG_INFINIBAND_QIB=m for ppc64el + * [Config] CONFIG_INPUT_FF_MEMLESS=m for ppc64el + * [Config] CONFIG_INTERVAL_TREE_TEST=m for ppc64el + * [Config] CONFIG_IPACK_BUS=m for ppc64el + * [Config] CONFIG_ISDN=y for ppc64el + * [Config] CONFIG_ISO9660_FS=m for ppc64el + * [Config] CONFIG_KGDB=y for ppc64el + * [Config] CONFIG_KVM_GUEST=y for ppc64el + * [Config] CONFIG_L2TP_V3=y for powerpc + * [Config] CONFIG_MAILBOX=y for ppc64el + * [Config] CONFIG_MD_LINEAR=m, CONFIG_MD_RAID0=m, CONFIG_MD_RAID1=m for ppc64el + * [Config] CONFIG_MEDIA_SUPPORT=m for ppc64el + * [Config] CONFIG_MEMORY=y for ppc64el + * [Config] CONFIG_MEMSTICK=m for ppc64el + * [Config] CONFIG_MFD_SM501_GPIO=n for ppc64el + * [Config] CONFIG_MMC_BLOCK=m for ppc64el + * [Config] CONFIG_MOUSE_PS2=m for ppc64el + * [Config] CONFIG_NET_9P=m for ppc64el + * [Config] CONFIG_MSDOS_FS=m for ppc64el + * [Config] CONFIG_MSI_BITMAP_SELFTEST=n for ppc64el + * [Config] CONFIG_MTD=m for arm64 + * [Config] CONFIG_NETCONSOLE=m for ppc64el + * [Config] CONFIG_NETFILTER_XT_TARGET_NOTRACK=m for ppc64el + * [Config] CONFIG_NET_IPIP=m for ppc64el + * [Config] CONFIG_NET_TEAM=m for all arches + * [Config] CONFIG_NFC=m for ppc64el + * [Config] CONFIG_NL80211_TESTMODE=n for all arches + * [Config] CONFIG_NLS_CODEPAGE_437=y for powerpc + * [Config] CONFIG_NLS_ASCII=m, CONFIG_NLS_ISO8859_1=m, CONFIG_NLS_UTF8=m for ppc64el + * [Config] CONFIG_NOP_USB_XCEIV=m for ppc64el + * [Config] CONFIG_NOTIFIER_ERROR_INJECTION=m for ppc64el + * [Config] CONFIG_OPROFILE=m for ppc64el + * [Config] CONFIG_PARPORT_1284=y for ppc64el + * [Config] CONFIG_PARPORT_AX88796=m, CONFIG_PARPORT_PC_FIFO=y, CONFIG_PARPORT_SERIAL=m for ppc64el + * [Config] CONFIG_8723AU_P2P=n + * [Config] CONFIG_PCI_IOV=y, CONFIG_PCI_PASID=y, CONFIG_PCI_PRI=y, CONFIG_PCI_REALLOC_ENABLE_AUTO=y, CONFIG_PCI_STUB=m for ppc64el + * [Config] CONFIG_PCNET32=m for ppc64el + * [Config] CONFIG_SCSI_DH_EMC=m for ppc64el + * [Config] CONFIG_SCSI_DH_HP_SW=m for ppc64el + * [Config] CONFIG_SCSI_FC_ATTRS=m for ppc64el + * [Config] CONFIG_SCSI_IPR=m for ppc64el + * [Config] CONFIG_SCSI_LOGGING=y for ppc64el + * [Config] CONFIG_SCSI_OSD_INITIATOR=m for ppc64el + * [Config] CONFIG_SCSI_SCAN_ASYNC=y for ppc64el + * [Config] CONFIG_SCSI_SYM53C8XX_2=m for ppc64el + * [Config] CONFIG_XILINX_LL_TEMAC=m for powerpc + * [Config] CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y for ppc64el + * [Config] CONFIG_WLAN=y for arm64 + * [Config] CONFIG_VORTEX=m for ppc64el + * [Config] CONFIG_WIMAX=m for ppc64el + * [Config] CONFIG_WATCHDOG=y for ppc64el + * [Config] CONFIG_VIRT_DRIVERS=y for ppc64el + * [Config] CONFIG_VERSION_SIGNATURE="" for powerpc64-emb + * [Config] CONFIG_UWB=m for ppc64el + * [Config] CONFIG_USB_STORAGE=y + * [Config] CONFIG_SATA_AHCI_PLATFORM=y for armhf + * [Config] CONFIG_HID_RMI=m + * [Config] CONFIG_HVC_DCC=n + - LP: #1303657 + + [ Upstream Kernel Changes ] + + * mm/numa: Remove BUG_ON() in __handle_mm_fault() + - LP: #1323165 + * powerpc/powernv: Add calls to support little endian host + - LP: #1327400 + * HID: rmi: introduce RMI driver for Synaptics touchpads + * HID: rmi: do not stop the device at the end of probe + * HID: rmi: check for the existence of some optional queries before reading query 12 + * HID: rmi: do not fetch more than 16 bytes in a query + * HID: rmi: fix wrong struct field name + * HID: rmi: fix masks for x and w_x data + * HID: rmi: do not handle touchscreens through hid-rmi + * ALSA: pcm: 'BUG:' message unnecessarily triggers kerneloops + - LP: #1305480 + * rebase to v3.15 + + -- Tim Gardner Tue, 03 Jun 2014 17:02:49 +0000 + +linux (3.15.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1325596 + * [Config] CONFIG_POWERNV_CPUFREQ=y for ppc64el + * rebase to v3.15-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc8 + + -- Tim Gardner Mon, 02 Jun 2014 12:59:34 +0000 + +linux (3.15.0-4.9) utopic; urgency=low + + * no change rebuild to fix embeded debhelper. + + -- Andy Whitcroft Thu, 29 May 2014 12:41:58 +0100 + +linux (3.15.0-4.8) utopic; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1324107 + * [Config] enable SECURITY_APPARMOR_UNCONFINED_INIT + + [ Javier Martinez Canillas ] + + * SAUCE: (no-up) apparmor: fix bug that constantly spam the console + - LP: #1323526 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - alpha6 snapshot + - LP: #1323528 + * SAUCE: (no-up) apparmor: fix apparmor spams log with warning message + - LP: #1308761 + * SAUCE: (no-up) apparmor: fix refcount bug in apparmor pivotroot + - LP: #1308765 + * SAUCE: (no-up): apparmor: fix apparmor refcount bug in apparmor_kill + - LP: #1308764 + * SAUCE: (no-up): apparmor: use custom write_is_locked macro + - LP: #1323530 + + [ Kamal Mostafa ] + + * [Config] add debian/gbp.conf + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m for ppc64el + - LP: #1323980 + + -- Andy Whitcroft Wed, 28 May 2014 12:47:17 +0100 + +linux (3.15.0-3.7) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1323189 + + [ Andy Whitcroft ] + + * [Config] autopkgtest -- need fakeroot for tests + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc7 + + -- Tim Gardner Mon, 26 May 2014 08:12:50 +0200 + +linux (3.15.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] remove the kernel-image firmware list on clean + + [ Martin Pitt ] + + * [Config] autopkgtest -- switch to significantly faster rebuild + + [ Stefan Bader ] + + * [Config]: Add missing modules to inclusion list + + [ Tim Gardner ] + + * [debian] Dynamically generate the kernel-image udebs firmware list + * [d-i] firmware/kernel-image is generated + * rebase to v3.15-rc6 + * Release Tracking Bug + - LP: #1322251 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc6 + - LP: #1297581 + + -- Tim Gardner Wed, 21 May 2014 10:51:29 -0700 + +linux (3.15.0-1.5) utopic; urgency=low + + [ Tim Gardner ] + + * [Config] Add apm-mustang.dtb to kernel-image udeb + + -- Tim Gardner Mon, 19 May 2014 14:47:42 -0700 + +linux (3.15.0-1.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: (no-up) hv -- bodge hv_kvp_daemon so it can use the + local linux/hyperv.h" + * [Packaging] tools -- hv tools build correctly against the built headers + * [Packaging] cloud-tools -- add the hv_fcopy_daemon to the package + * cloud-tools -- pull in init scripts for Hyper-V daemons + * cloud-tools -- detect Hyper-V VM to avoid starting + * cloud-tools -- update IF_NAME to DEVICE in hv_* scripts + - LP: #1295401 + * [Config] cloud-tools: reenable cloud-tools + + -- Andy Whitcroft Sun, 18 May 2014 19:21:04 +0100 + +linux (3.15.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] ppc64el is a powerpc kernel arch and needs its quirks + - LP: #1318848 + + [ Ben Collins ] + + * [Config] Switch to grub-ieee1275 as recommended on book3e systems + - LP: #1318629 + + [ Tim Gardner ] + + * [Config] CONFIG_FSL_PAMU=n + - LP: #1311738 + * Release Tracking Bug + - LP: #1320239 + + -- Tim Gardner Fri, 16 May 2014 07:37:07 -0600 + +linux (3.15.0-1.2) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1318171 + * Add rpcsec_gss_krb5 to generic inclusion list + - LP: #769527 + * rebase to v3.15-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc5 + - LP: #1297581 + + -- Tim Gardner Tue, 06 May 2014 15:20:10 -0500 + +linux (3.15.0-0.1) utopic; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc4 + - LP: #1297581 + - LP: #1297581 + - LP: #1305133 + - LP: #1297581 + - LP: #1297581 + - LP: #871808 + - LP: #1260303 + - LP: #1268468 + - LP: #1248116 + - LP: #1211920 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + - LP: #1268468 + + -- Tim Gardner Fri, 07 Feb 2014 09:35:13 -0700 + +linux (3.15.0-0.0) utopic; urgency=low + + * Initial version for 3.15. + + -- Andy Whitcroft Fri, 02 May 2014 15:06:39 +0100 + +linux (3.13.0-8.27) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: Add config option to disable new apparmor 3 semantics + -LP: #1270215 + + [ Tim Gardner ] + + * [debian] Fix indep_hdrs_pkg_name + - LP: #1134441 + * Update lttng to 00808267d3ba7cdcddfed7bec7e62a40463c1307 Version 2.4.0-rc3 + * Enabled lttng build + * Don't build lttng for armhf + lttng hates gcc-4.8 for armhf + * Release Tracking Bug + - LP: #1277309 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.2 + - LP: #1260303 + - LP: #1260303 + - LP: #1268468 + + -- Tim Gardner Thu, 06 Feb 2014 09:25:51 -0700 + +linux (3.13.0-7.26) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: apparmor: fix uninitialized lsm_audit membe + - LP: #1268727 + * Add config option to optionally enable new apparmor 3 semantics + + [ Tim Gardner ] + + * [Config] Add lowlatency to getabis + * [Config] CONFIG_SECURITY_APPARMOR_AA3_SEMANTICS=y + - LP: #1270215 + * Release Tracking Bug + - LP: #1276810 + + [ Upstream Kernel Changes ] + + * x86, x32: Correct invalid use of user timespec in the kernel + - LP: #1274349 + - CVE-2014-0038 + + -- Tim Gardner Wed, 05 Feb 2014 15:49:44 -0500 + +linux (3.13.0-7.25) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: fix fmd headers" + * SAUCE: fix fmd headers + + -- Andy Whitcroft Tue, 04 Feb 2014 09:36:09 +0000 + +linux (3.13.0-7.24) trusty; urgency=low + + [ Stefan Bader ] + + * [Config] Make vmwgfx driver enable the framebuffer device + + [ Tim Gardner ] + + * rebase to v3.13.1 + * [Config] CONFIG_NFS_FS=m for ppc64el + * [Config] CONFIG_X86_SYSFB=n + https://lists.ubuntu.com/archives/kernel-team/2014-February/038166.html + * Release Tracking Bug + - LP: #1275898 + + [ Upstream Kernel Changes ] + + * i2c: piix4: Add support for AMD ML and CZ SMBus changes + - LP: #1272525 + * i2c: piix4: Use different message for AMD Auxiliary SMBus Controller + - LP: #1272525 + * mm: ignore VM_SOFTDIRTY on VMA merging + - LP: #1274917 + * drm/radeon: disable dpm on BTC + - LP: #1266984 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.1 + + -- Tim Gardner Thu, 30 Jan 2014 15:24:48 +0000 + +linux (3.13.0-6.23) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix up architecture for linux-tools + + -- Andy Whitcroft Thu, 30 Jan 2014 09:00:41 +0000 + +linux (3.13.0-6.22) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] limit linux-udebs- to matching arch + * [Config] powerpc -- disable perf to fix FTBFS + * [Config] ppc64el -- fix up missing udebs + + -- Andy Whitcroft Wed, 29 Jan 2014 16:00:28 +0000 + +linux (3.13.0-6.21) trusty; urgency=low + + [ Andy Fleming ] + + * SAUCE: net: Add support for handling queueing in hardware + * SAUCE: of_mdio: Add of_phy_attach function + * SAUCE: phylib: Add generic 10G driver + * SAUCE: phylib: Support attaching to gen10g_driver + * SAUCE: phylib: Add Clause 45 read/write functions + + [ Andy Whitcroft ] + + * SAUCE: fix fmd headers + * [Packaging] lowlatency -- merge out of tree flavours + * SAUCE: allow IRQs to be irq-threaded by default via config + * [Config]: enable CONFIG_IRQ_FORCED_THREADING_DEFAULT for lowlatency + * [Config] powerpc -- fix up Build-depends: + * Release Tracking Bug + - LP: #1273747 + + [ Ben Collins ] + + * SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit + ptr/64-bit rsrcs + * SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" + * SAUCE: Fixup freescale usb phy driver to work on ppc64 + * SAUCE: xgmac_mdio: Silence read errors + * SAUCE: Provide booke stub for kvmppc_is_bigendian() + * SAUCE: Fix stack overflow on ppc32 + * SAUCE: Use resource_size_t instead of long for PCI resource address + * SAUCE: net/phy: Export function for use by dpaa_eth + * [Packaging] powerpc -- merge out of tree powerpc arch + + [ Bjorn Helgaas ] + + * SAUCE: Revert "EISA: Log device resources in dmesg" + - LP: #1251816 + * SAUCE: Revert "EISA: Initialize device before its resources" + - LP: #1251816 + + [ Emil Medve ] + + * SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work + with 10G "fixed-link"s + + [ Kumar Gala ] + + * SAUCE: fsl_qbman: Add drivers for Freescale DPAA Qman & Bman + * SAUCE: fsl_pme2: Add support for DPAA PME + * SAUCE: fmd: FMD14 integration + * SAUCE: dpaa_eth: Ethernet driver for Freescale QorIQ DPA Architecture + * SAUCE: powerpc/85xx: Add DPAA/networking support for CoreNet + + [ Madalin Bucur ] + + * SAUCE: net/flow: remove sleeping and deferral mechanism from + flow_cache_flush + * SAUCE: net/phy: abort genphy_read_status when link changes during speed + and duplex reading + + [ Stefan Bader ] + + * [Config] move some VMWare related modules into main package + - LP: #1271669 + + [ Tim Gardner ] + + * [Config] Add r815x to nic-modules + - LP: #1273735 + * [Config] CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y + - LP: #239479 + + [ Upstream Kernel Changes ] + + * mmc: sdhci-pci: break out definitions to header file + - LP: #1239938 + * mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts + - LP: #1239938 + * powerpc/book3e: rename interrupt_end_book3e with __end_interrupts + * powerpc/book3e: support CONFIG_RELOCATABLE + * book3e/kexec/kdump: enable kexec for kernel + * book3e/kexec/kdump: create a 1:1 TLB mapping + * book3e/kexec/kdump: introduce a kexec kernel flag + * book3e/kexec/kdump: implement ppc64 kexec specfic + * book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET + * book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB + + -- Andy Whitcroft Tue, 28 Jan 2014 22:59:46 +0000 + +linux (3.13.0-5.20) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools -- do not make symlinks when not making packages + * [Packaging] tools -- tidy up control.stub.in ordering + * [Packaging] tools -- tools-common is shared and not conditional + * rebase to v3.13 + + [ Dirk Brandewie ] + + * SAUCE: intel_pstate: Add setting voltage value for baytrail P states. + + [ KY Srinivasan ] + + * SAUCE: Drivers: hv: vmbus: Specify the target CPU that should receive + notification + + [ Upstream Kernel Changes ] + + * rebase to v3.13 + - LP: #1270603 + + -- Andy Whitcroft Fri, 17 Jan 2014 15:45:31 +0000 + +linux (3.13.0-4.19) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] libunwind8-dev is now available for ppc64el + * [Packaging] tools -- make cpupower optional + * [Packaging] tools -- enable correctly for x86 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1269872 + + [ Upstream Kernel Changes ] + + * SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP + * SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP + * SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type + * SAUCE: crypto: omap-aes: add error check for pm_runtime_get_sync + + [ Upstream Kernel Changes ] + + * rebase to 85ce70fdf48aa290b4845311c2dd815d7f8d1fa5 + + -- Tim Gardner Wed, 15 Jan 2014 13:23:05 +0000 + +linux (3.13.0-3.18) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc8 + * [Packaging] efi -- allow EFI signatures on any arch + + [ Tim Gardner ] + + * [Config] Fix vcs-git path + * Release Tracking Bug + - LP: #1268683 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc8 + + -- Andy Whitcroft Sun, 12 Jan 2014 11:58:01 +0000 + +linux (3.13.0-2.17) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1267809 + * [Config] apply Platform support>>CPUIdle driver>>CPU Idle config + defaults + * [Config] apply Platform support>>CPU Frequency scaling config defaults + * [Config] CONFIG_PARIDE_EPATC8=y + * [Config] apply Device Drivers >> Broadcom specific AMBA config defaults + * [Config] apply Bus options >> PCI support >> RapidIO support >> RapidIO + Switch drivers config defaults + * [Config] apply Cryptographic API config defaults + * [Config] apply Device Drivers >> Common Clock Framework config defaults + * [Config] apply Device Drivers >> Distributed Switch Architecture + drivers config defaults + * [Config] apply Device Drivers >> Graphics support >> Backlight & LCD + device support config defaults + * [Config] apply Device Drivers >> Graphics support >> Support for frame + buffer devices >> Bootup logo config defaults + * annotations -- update in tree annotations + * [Config] apply Bus options >> PCI support >> RapidIO support config + defaults + * [Config] CONFIG_POWER_AVS=y CONFIG_RESET_CONTROLLER=y + * [Config] apply Device Drivers >> 1-wire Bus Masters config defaults + * [Config] apply CAN Device Drivers >> Platform CAN drivers with Netlink + support config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> Generic Thermal sysfs driver config + defaults + * [Config] apply Device Drivers >> Character devices >> TPM Hardware + Support config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> HID support >> USB HID support >> USB + HID transport layer config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support config + defaults + * [Config] apply Device Drivers >> HID support >> USB HID support config + defaults + * annotations -- update in tree annotations + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] update configs for apparmour update + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + * SAUCE: (no-up) apparmor: Fix tasks not subject to, reloaded policy + - LP: #1236455 + + [ Tim Gardner ] + + * Revert "[Debian] getabis: Preface module with package name" + * [Config] Added ppc64el to getabis + * [packaging] Bump ABI for every new release + + -- Andy Whitcroft Fri, 10 Jan 2014 11:48:39 +0000 + +linux (3.13.0-1.16) trusty; urgency=low + + * First 3.13 upload. + * Release tracker + - LP: #1266852 + + -- Tim Gardner Tue, 07 Jan 2014 09:21:26 -0700 + +linux (3.13.0-0.15) trusty; urgency=low + + [ Tim Gardner ] + + * rebase to v3.13-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc7 + + -- Tim Gardner Sun, 05 Jan 2014 06:13:33 -0700 + +linux (3.13.0-0.14) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + [ Tim Gardner ] + + * Remove ubuntu/dm-raid4-5 in favor of CONFIG_MD_RAID456 + * Update lttng to Version 2.4.0-rc2 + * lttng: Disabled trace_kvm_async_pf_completed + * [Config] CONFIG_IMA=y + - LP: #1244627 + + [ Upstream Kernel Changes ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + -- Tim Gardner Thu, 02 Jan 2014 12:57:13 -0700 + +linux (3.13.0-0.13) trusty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS -- update to 7b136a27b021da9010d8b6c101939dd298e46be7 + * ubuntu: aufs3 -- enable + * ubuntu: aufs3 -- update configs + + -- Andy Whitcroft Thu, 02 Jan 2014 09:41:02 +0000 + +linux (3.13.0-0.12) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc6 + + -- Tim Gardner Tue, 31 Dec 2013 06:16:03 -0700 + +linux (3.13.0-0.11) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c + * [Config] ppc64el -- initial defconfig based -generic flavour + * [Config] initial defconfig for ppc64el + * [Config] ubuntuise ppc64el config + * [Config] ubuntuise ppc64el config part 2 + * [Config] d-i -- update empty udebs list + * [Config] ppc64el -- split extras package + + [ Anton Blanchard ] + + * SAUCE: KVM: PPC: Book3S HV: Add little-endian guest support + + [ Benjamin Herrenschmidt ] + + * SAUCE: powerpc/powernv: Add calls to support little endian + + [ Cédric Le Goater ] + + * SAUCE: KVM: PPC: Book3S: add helper routine to load guest instructions + * SAUCE: KVM: PPC: Book3S: add helper routines to detect endian order + * SAUCE: KVM: PPC: Book3S: MMIO emulation support for little endian + guests + + [ Paul E. McKenney ] + + * SAUCE: powerpc: Make 64-bit non-VMX copy_tofrom_user() bi-endian + + -- Andy Whitcroft Fri, 27 Dec 2013 16:48:55 +0000 + +linux (3.13.0-0.10) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc5 + * [Config] updateconfigs following rebase to v3.13-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc5 + - LP: #1260303 + - LP: #1260303 + - LP: #1260225 + + -- Andy Whitcroft Mon, 23 Dec 2013 12:48:28 +0000 + +linux (3.13.0-0.9) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- allow missing firmware + + -- Andy Whitcroft Fri, 20 Dec 2013 17:57:06 +0000 + +linux (3.13.0-0.8) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations -- first pass over entire config + * [Config] drop libunwind8-dev from Build-Depends for ppc64el + + [ Tim Gardner ] + + * [Config] Add arm64 device tree files + - LP: #1262901 + + -- Andy Whitcroft Thu, 19 Dec 2013 18:36:43 +0000 + +linux (3.13.0-0.7) trusty; urgency=low + + [ Rajesh B Prathipati ] + + * SAUCE: powerpc: Make unaligned accesses endian-safe for powerpc + + [ Tim Gardner ] + + * [Config] CONFIG_REGULATOR_S2MPS11=n for FTBS + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc4 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + + -- Tim Gardner Fri, 13 Dec 2013 07:56:34 -0700 + +linux (3.13.0-0.6) trusty; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: arm64: VIRTIO_[BLK|MMIO|NET|CONSOLE|BALLOON]=y + * [Config] i386: amd64: VIRTIO_CONSOLE=y + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y + + -- Tim Gardner Sun, 08 Dec 2013 09:22:01 -0700 + +linux (3.13.0-0.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * correct bug listing for v3.13-rc2 rebase + * [Config] ppc64el -- create linux-libc-dev + * [Debian] Improve tools version message + - LP: #1257715 + + [ Serge Hallyn ] + + * SAUCE: fork: Allow CLONE_PARENT after setns(CLONE_NEWPID)] + - LP: #1248590 + * SAUCE: vfs: Fix a regression in mounting proc + + [ Tim Gardner ] + + * [Config] Build-in ohci-pci + - LP: #1244176 + * Rebase to v3.13-rc3 + + [ Upstream Kernel Changes ] + + * Revert "Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID + checks"" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc3 + - LP: #1256840 + - LP: #1256212 + + -- Tim Gardner Sat, 07 Dec 2013 07:55:39 -0700 + +linux (3.13.0-0.4) trusty; urgency=low + + [ Tim Gardner ] + + * Rebase to v3.13-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc2 + + -- Tim Gardner Fri, 29 Nov 2013 23:54:05 -0500 + +linux (3.13.0-0.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Fix DocBook FTBS" + + [ Tim Gardner ] + + * [Debian] Re-sign modules after debug objcopy + - LP: #1253155 + * [Config] CONFIG_EXT4_USE_FOR_EXT23=y + + [ Upstream Kernel Changes ] + + * doc: fix generation of device-drivers + * rebase to b975dc3689fc6a3718ad288ce080924f9cb7e176 + + -- Tim Gardner Tue, 26 Nov 2013 12:24:42 -0700 + +linux (3.13.0-0.2) trusty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Fix DocBook FTBS + + -- Tim Gardner Mon, 25 Nov 2013 13:24:15 -0700 + +linux (3.13.0-0.1) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 7e3528c3660a2e8602abc7858b0994d611f74bc3 + + -- Tim Gardner Tue, 12 Nov 2013 07:28:53 -0700 + +linux (3.13.0-0.0) trusty; urgency=low + + * Major release bump. + + -- Andy Whitcroft Tue, 12 Nov 2013 21:37:52 +0000 + +linux (3.12.0-2.7) trusty; urgency=low + + * Fixed armhf ABI build failure. + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 16:22:45 -0700 + +linux (3.12.0-2.6) trusty; urgency=low + + [ Joseph Salisbury ] + + * SAUCE: tg3: Add support for new 57786 device id. + - LP: #1242610 + + [ Tim Gardner ] + + * [Config] CONFIG_OABI_COMPAT=n + * [Config] add the wandboard to shipped dtb + - LP: #1249421 + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 12:23:18 -0700 + +linux (3.12.0-2.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline v3.12 + * [Config] updateconfigs following rebase to v3.12 + * postinst -- improve relative symlink detection with missing files + - LP: #1248053 + * postinst -- fix unchanged link detection + * [Config] update configs following addition of apparmor fixes + + [ Anthony Wong ] + + * SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 + - LP: #1231305 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + + [ Tim Gardner ] + + * [Config] Remove superfluous ubuntu/lttng-modules + + [ Upstream Kernel Changes ] + + * Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID checks" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.12 + - LP: #1222850 + + [ Adam Conrad ] + * etc/getabis: Fetch arm64/generic abis as well + + -- Andy Whitcroft Wed, 06 Nov 2013 21:00:21 +0000 + +linux (3.12.0-1.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] arm64 -- add arch to the configuration handlers + * [Config] arm64 -- add generic flavour + * [Config] arm64 -- default config + * [Config] arm64 -- fix up various FTBFS config options + * SAUCE: arm64: export __copy_in_user to modules + * [Config] arm64 -- disable ABI/module checks + * [Config] arm64 -- enforcer -- add arm64 to the enforcer + * [Config] arm64 -- enable udebs for arm64 + + [ Colin Watson ] + + * [Config] Clean up various udeb Provides + + [ Paolo Pisati ] + + * [Config] AHCI_IMX=y + * [Config] build imx*-wandboard dtbs + + [ Serge Hallyn ] + + * SAUCE: device_cgroup: remove can_attach + + [ Tim Gardner ] + + * rebase to v3.12-rc7 + * SAUCE: KVM: Fix modprobe failure for kvm_intel/kvm_amd + * Release tracker + - LP: #1245932 + + [ Upstream Kernel Changes ] + + * rebase to v3.12-rc7 + - LP: #1180881 + - LP: #1180881 + - LP: #1217957 + + -- Tim Gardner Sun, 27 Oct 2013 22:08:55 -0600 + +linux (3.12.0-0.2) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ + CAPACITY (16) at SPC-2" + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at + SPC-2" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request READ + CAPACITY (16) be preferred" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request VPD pages + be used at SPC-2" + * Revert "overlayfs: Update to v19" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs v18 -- -- overlay filesystem" + * Revert "ubuntu: overlayfs v18 -- -- vfs: introduce + clone_private_mount()" + * Revert "ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to + modules" + * Revert "ubuntu: overlayfs v18 -- -- overlay: overlay filesystem + documentation" + * ubuntu: overlayfs v20 -- overlayfs: add statfs support + * [Config] fix linux-libc-dev generation for arm64 + * [Config] fix linux-libc-dev generation for x32 + * [Config] add linux-libc-dev generation for ppc64el + + [ Erez Zadok ] + + * ubuntu: overlayfs v20 -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v20 -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v20 -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v20 -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v20 -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v20 -- overlay filesystem + * ubuntu: overlayfs v20 -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v20 -- overlay: overlay filesystem documentation + + [ Paolo Pisati ] + + * [Config] arm: VIRTIO_[BLK|NET|MMIO]=y + + [ Seth Forshee ] + + * SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo + ThinkPads + - LP: #1183856 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRCT10DIF=y, CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m + * rebase to v3.12-rc2 + * updateconfigs + * [Config] disable CONFIG_FB_VESA enforcer check + * [Config] Disable lttng for FTBS + * rebase to v3.12-rc3 + * rebase to v3.12-rc4 + * [Config] CONFIG_ANDROID=n + - LP: #1235161 + * [Config] CONFIG_L2TP_V3=y + - LP: #1235914 + * [Config] CONFIG_USB_OTG=n for all arches + * Release tracker + - LP: #1242811 + + [ Upstream Kernel Changes ] + + * scsi: hyper-v storsvc switch up to SPC-3 + + * rebase to v3.12-rc6 + - LP: #1235977 + - LP: #1235523 + - LP: #1239392 + - LP: #1227491 + + * rebase to v3.12-rc3 + - LP: #1231931 + + * rebase to v3.12-rc2 + - LP: #1213820 + - LP: #1213055 + - LP: #1198030 + + -- Tim Gardner Mon, 23 Sep 2013 07:41:07 -0600 + +linux (3.11.0-8.15) saucy; urgency=low + + [ Tim Gardner ] + + * Release tracker + - LP: #1227969 + + * Update lttng + Updated to git://git.lttng.org/lttng-modules.git 9998f5216f4641a79e158135 + Version 2.3.0+ + + [ Upstream Kernel Changes ] + + * igb: Add additional get_phy_id call for i354 devices + - LP: #1219619 + * igb: Read flow control for i350 from correct EEPROM section + - LP: #1219619 + * timekeeping: Fix HRTICK related deadlock from ntp lock changes + Required for lttng update. + + -- Tim Gardner Thu, 19 Sep 2013 07:41:49 -0600 + +linux (3.11.0-7.14) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] sort out linux-tools naming + - LP: #1205284 + * [Packaging] linux-tools: switch to common generic version helper + + [ Paolo Pisati ] + + * [Config] highbank: ecx1000: CPU_IDLE causes instabilities, disable it + + [ Tim Gardner ] + + * Release tracker + - LP: #1226160 + + [ Tony Lindgren ] + + * SAUCE: ARM: dts: Fix muxing and regulator for wl12xx on the SDIO bus + for pandaboard + + [ Upstream Kernel Changes ] + + * USB: handle LPM errors during device suspend correctly + - LP: #1011415 + * usb: don't check pm qos NO_POWER_OFF flag in usb_port_suspend() + - LP: #1011415 + * usb: Don't fail port power resume on device disconnect. + - LP: #1011415 + + [ Upstream Kernel Changes ] + + * rebase to v3.11.1 + + -- Tim Gardner Wed, 11 Sep 2013 07:30:17 -0600 + +linux (3.11.0-7.13) saucy; urgency=low + + * Release tracker + - LP: #1223545 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) scsi: add scsi device flag to request VPD pages be used at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: add scsi device flag to request READ CAPACITY (16) be preferred + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ CAPACITY (16) at SPC-2 + - LP: #1223499 + + [ Maximiliano Curia ] + + * SAUCE: (no-up) Only let characters through when there are active readers. + - LP: #1208740 + + [ Tim Gardner ] + + * [Debian] getabis: Commit new ABI directory, remove the old + * [Config] CONFIG_EFIVAR_FS=y + - LP: #1223195 + * [Config] CONFIG_EFI_VARS_PSTORE=m, + CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=n + * SAUCE: (no-up) USB: input: cm109.c: Convert high volume dev_err() to dev_err_ratelimited() + - LP: #1222850 + + [ Upstream Kernel Changes ] + + * Intel xhci: refactor EHCI/xHCI port switching + - LP: #1210858 + + -- Tim Gardner Tue, 10 Sep 2013 09:00:19 -0600 + +linux (3.11.0-6.12) saucy; urgency=low + + * Release tracker + - LP: #1222893 + + [ Andy Whitcroft ] + + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + - LP: #1222407 + + [ Paolo Pisati ] + + * [Config] restore mmc boot on panda + + [ Tyler Hicks ] + + * SAUCE: apparmor: Use shash crypto API interface for profile hashes + - LP: #1216294 + + [ Upstream Kernel Changes ] + + * net: calxedaxgmac: remove NETIF_F_FRAGLIST setting + * net: calxedaxgmac: read correct field in xgmac_desc_get_buf_len + * net: calxedaxgmac: fix race between xgmac_tx_complete and xgmac_tx_err + * net: calxedaxgmac: fix possible skb free before tx complete + * net: calxedaxgmac: update ring buffer tx_head after barriers + * net: calxedaxgmac: fix race with tx queue stop/wake + * net: calxedaxgmac: enable interrupts after napi_enable + * net: calxedaxgmac: fix various errors in xgmac_set_rx_mode + * net: calxedaxgmac: remove some unused statistic counters + * net: calxedaxgmac: fix rx DMA mapping API size mismatches + * net: calxedaxgmac: fix xgmac_xmit DMA mapping error handling + * mfd: rtsx: Read vendor setting from config space + - LP: #1201698 + + -- Tim Gardner Mon, 09 Sep 2013 07:21:06 -0600 + +linux (3.11.0-5.11) saucy; urgency=low + + * Release tracker + - LP: #1221886 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + * SAUCE: Bluetooth: Add support for 105b:e065 + - LP: #1161261 + + [ Gavin Guo ] + + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + + [ Upstream Kernel Changes ] + + * igb: Reset the link when EEE setting changed + - LP: #1219619 + * igb: Read register for latch_on without return value + - LP: #1219619 + * igb: Added rcu_lock to avoid race + - LP: #1219619 + * igb: don't allow SR-IOV without MSI-X + - LP: #1219619 + * igb: Update MTU so that it is always at least a standard frame size + - LP: #1219619 + * igb: Refactor of init_nvm_params + - LP: #1219619 + * igb: Refactor NVM read functions to accommodate devices with no flash + - LP: #1219619 + * igb: Add device support for flashless SKU of i210 device + - LP: #1219619 + * igb: Fix get_fw_version function for all parts + - LP: #1219619 + * igb: Add macro for size of RETA indirection table + - LP: #1219619 + * igb: Expose RSS indirection table for ethtool + - LP: #1219619 + * igb: Don't look for a PBA in the iNVM when flashless + - LP: #1219619 + * igb: Implementation of 1-sec delay for i210 devices + - LP: #1219619 + * igb: New PHY_ID for i354 device + - LP: #1219619 + * igb: M88E1543 PHY downshift implementation + - LP: #1219619 + * igb: No PHPM support in i354 devices + - LP: #1219619 + * igb: Support to get 2_5G link status for appropriate media type + - LP: #1219619 + * igb: Get speed and duplex for 1G non_copper devices + - LP: #1219619 + * igb: Implementation to report advertised/supported link on i354 devices + - LP: #1219619 + * igb: Update version number + - LP: #1219619 + * Bluetooth: Take proper tty_struct references + - LP: #1189998 + * Bluetooth: Remove the device from the list in the destructor + - LP: #1189998 + * Bluetooth: Move the tty initialization and cleanup out of open/close + - LP: #1189998 + * Bluetooth: Implement .activate, .shutdown and .carrier_raised methods + - LP: #1189998 + * Bluetooth: Fix the reference counting of tty_port + - LP: #1189998 + * Bluetooth: Purge the dlc->tx_queue to avoid circular dependency + - LP: #1189998 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Support for loading broadcom patchram firmware + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Tim Gardner Thu, 05 Sep 2013 08:06:17 -0600 + +linux (3.11.0-5.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release tracker + - LP: #1220222 + * Revert "[Config] Fix ubuntu directoy Kbuilds" + * Revert "aufs update dropped some Kbuild files" + * Revert "ubuntu: AUFS -- follow rename of loop.h into drivers/block" + * Revert "ubuntu: AUFS -- update to + 8e503d4142c189ed6c47a2177ad2cd058e8d340e" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * rebase to v3.11 final + * [Config] clean up ubuntu/Kconfig and ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 5ac5fe26a90a818218310e208d17688fddb07622 + * ubuntu: (no-squash) AUFS -- enable aufs + * ubuntu: AUFS -- fix remaining d_count references to use accessor + * ubuntu: lttng -- follow rename of pid_ns + * SAUCE: disable stack-protector for ARM compressed bootloader + + [ Paolo Pisati ] + + * [Config] ARM_ATAG_DTB_COMPAT=y + + [ Rob Herring ] + + * [Config] Enable KVM and virtio for armhf generic-lpae + + [ Tim Gardner ] + + * [Config] CONFIG_ARPD=y + * [Config] CONFIG_ZSWAP=y + - LP: #1215379 + + [ Upstream Kernel Changes ] + + * uvcvideo: quirk PROBE_DEF for Dell SP2008WFP monitor. + - LP: #1217957 + * ARM: use phys_addr_t for DMA zone sizes + * ARM: highbank: enable DMA zone for LPAE + * ARM: highbank: select ARCH_HAS_HOLES_MEMORYMODEL + * ARM: highbank: select required errata work-arounds + * DMA: fix AMBA PL08x compilation issue with 64bit DMA address type + * DMA: fix printk warning in AMBA PL08x DMA driver + * ARM: highbank: select ARCH_DMA_ADDR_T_64BIT for LPAE + * ARM: move outer_cache declaration out of ifdef + * ARM: highbank: avoid L2 cache smc calls when PL310 is not present + * ARM: highbank: clean-up some unused includes + * ARM: xen: only set pm function ptrs for Xen guests + + [ Upstream Kernel Changes ] + + * rebase to v3.11 + + -- Andy Whitcroft Tue, 03 Sep 2013 17:08:06 +0100 + +linux (3.11.0-4.9) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.11-rc7 + * Release tracker + - LP: #1216962 + + [ Upstream Kernel Changes ] + + * mwifiex: do not create AP and P2P interfaces upon driver loading + - LP: #1212720 + + -- Tim Gardner Mon, 26 Aug 2013 06:25:35 -0600 + +linux (3.11.0-3.8) saucy; urgency=low + + [ Johannes Berg ] + + * SAUCE: mac80211: ignore (E)CSA in probe response frames + - LP: #1201470 + + -- Tim Gardner Fri, 23 Aug 2013 09:47:36 -0600 + +linux (3.11.0-3.7) saucy; urgency=low + + [ Tim Gardner ] + + * SAUCE: (no-up) hv_vss_daemon -- prevent self-daemonising to allow + upstart to track + * SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the local + linux/hyperv.h + * SAUCE: hv: Add vss daemon to Makefile + * [Debian] Add hv_vss_daemon to tools package + - LP: #1213282 + * [Config] Fix ubuntu directoy Kbuilds + - LP: #1181755 + + -- Tim Gardner Tue, 20 Aug 2013 08:34:05 -0600 + +linux (3.11.0-3.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools: conditionalise x86 and hyper-v tools sensibly + * [Config] tools: enable x86 and hyper-v + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable + snapshot" + * Revert "SAUCE: (no-up) apparmor: fix apparmor module status for none + root users" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + + [ Joseph Salisbury ] + + * SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops + - LP: #1210848 + + [ Kamal Mostafa ] + + * [debian] tools: ship 'cpupower' in linux-tools + - LP: #1158668 + * [Config] Build-dep on libpci-dev for cpu tools + - LP: #1158668 + + [ Tim Gardner ] + + * rebase to v3.11-rc6 + * Release tracker + - LP: #1213941 + + -- Tim Gardner Fri, 16 Aug 2013 07:02:07 -0600 + +linux (3.11.0-2.5) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_PM_DEBUG=y + - LP: #1210539 + * rebase to v3.11-rc5 + * Release tracker + - LP: #1211378 + + -- Tim Gardner Mon, 12 Aug 2013 06:10:39 -0600 + +linux (3.11.0-1.4) saucy; urgency=low + + [ Tim Gardner ] + + * Bump ABI when making changes to the inclusion list lest + you cause conflicts with existing installed kernel + packages. + - LP: #1210331 + + -- Tim Gardner Fri, 09 Aug 2013 03:03:51 +0100 + +linux (3.11.0-0.3) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] Include rbd and kvm in the virtual inclusion list + - LP: #1206961 + * [Config] Removed obsolete inclusion list entries + + -- Tim Gardner Tue, 06 Aug 2013 08:52:14 +0100 + +linux (3.11.0-0.2) saucy; urgency=low + + [ Bruce Allan ] + + * SAUCE: (no-up) e1000e: fix I217/I218 PHY initialization flow + - LP: #1206757 + * SAUCE: (no-up) e1000e: enable support for new device IDs + - LP: #1206757 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Paolo Pisati ] + + * build vexpress a15 dtb + * [Config] disable Broadcom bcm support (ARCH_BCM) + * [Config] disable Allwinner a1x support (ARCH_SUNXI) + * [Config] disable WonderMedia WM8850 support (ARCH_WM8850) + * [Config] disable Rockchip support (ARCH_ROCKCHIP) + * [Config] disable STMicroelectronics STiH41x SOCs (ARCH_STI) + * [Config] disable TI Keystone, AM43xx and OMAP5 support + * [Config] ARM_APPENDED_DTB=y + + [ Tim Gardner ] + + * rebase to v3.11-rc4 + * overlayfs: Update to v19 + * [Config] Enable overlayfs + * SAUCE: Fix lttng compile errors + + [ Upstream Kernel Changes ] + + * rebase to v3.11-rc4 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Sun, 04 Aug 2013 03:45:31 -0600 + +linux (3.11.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 64ccccf8525fee499625b517c0faadf784c79e93 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Mon, 08 Jul 2013 08:50:46 -0600 + +linux (3.10.0-2.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INTEL_MEI*=m + - LP: #1196155 + * [Config] CONFIG_DEBUG_INFO=y + + [ Stephen Warren ] + + * [Config] fix Calxeda xgmac module filename + + [ Upstream Kernel Changes ] + + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * mfd: lpc_ich: Add support for Intel Avoton SoC + - LP: #1196658 + + -- Andy Whitcroft Fri, 05 Jul 2013 18:08:02 +0100 + +linux (3.10.0-2.9) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10 + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Fix quieting of audit messages for + network mediation" + * Revert "SAUCE: (no-up) apparmor: Fix compile warnings" + * Revert "SAUCE: (no-up) AppArmor: basic networking rules" + * Revert "SAUCE: (no-up) apparmor: Add the ability to mediate mount" + * Revert "SAUCE: (no-up) AppArmor: Add profile introspection file to + interface" + * Revert "SAUCE: (no-up) AppArmor: Disable Add PR_{GET,SET}_NO_NEW_PRIVS + to prevent execve from granting privs" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Upstream Kernel Changes ] + + * rebase to v3.10 + + -- Andy Whitcroft Mon, 01 Jul 2013 17:42:29 +0100 + +linux (3.10.0-1.8) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1195717 + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- follow change to do_splice_direct + interface" + * Revert "ubuntu: overlayfs -- expose do_splice_direct prototype" + * Revert "SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path + reference" + * Revert "ubuntu: overlayfs -- add FS_ALIAS" + * Revert "ubuntu: overlayfs -- + overlayfs-copy-up-i_uid-i_gid-from-the-underlying-inode" + * Revert "ubuntu: overlayfs -- ovl-switch-to-inode_permission" + * Revert "ubuntu: overlayfs -- vfs-export-inode_permission-to-modules" + * Revert "ubuntu: overlayfs -- overlayfs-create-new-inode-in-ovl_link" + * Revert "ubuntu: overlayfs -- + overlayfs-fix-possible-leak-in-ovl_new_inode" + * Revert "ubuntu: overlayfs -- fs-limit-filesystem-stacking-depth" + * Revert "ubuntu: overlayfs -- overlay-overlay-filesystem-documentation" + * Revert "ubuntu: overlayfs -- overlayfs-implement-show_options" + * Revert "ubuntu: overlayfs -- overlayfs-add-statfs-support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs-introduce-clone_private_mount" + * Revert "ubuntu: overlayfs -- vfs-export-do_splice_direct-to-modules" + * Revert "ubuntu: overlayfs -- vfs-add-i_op-dentry_open" + * ubuntu: overlayfs v18 -- -- overlayfs: add statfs support + + [ Erez Zadok ] + + * ubuntu: overlayfs v18 -- -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v18 -- -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v18 -- -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v18 -- -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v18 -- -- overlay filesystem + * ubuntu: overlayfs v18 -- -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v18 -- -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + + -- Andy Whitcroft Fri, 28 Jun 2013 10:26:52 +0100 + +linux (3.10.0-0.7) saucy; urgency=low + + [ Andy Whitcroft ] + + * autopkgtest: switch Depends: to build-essential + + -- Andy Whitcroft Tue, 25 Jun 2013 08:40:55 +0100 + +linux (3.10.0-0.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_ARCH_TEGRA to fix FTBFS on armhf + * SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path reference + - LP: #1098378 + * ubuntu: AUFS -- update to 4f14cef47eb7c23eda7198931fbab1040866b6ee + * ubuntu: overlayfs -- expose do_splice_direct prototype + * ubuntu: overlayfs -- follow change to do_splice_direct interface + * [Config] flip CONFIG_NO_HZ_FULL_ALL off as it is overheating machines + - LP: #1192691 + + [ Stefan Bader ] + + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + + [ Tim Gardner ] + + * Release tracker + - LP: #1194149 + * [Config] CONFIG_WIL6210=n for armhf + * [Config] d-i: Add calxedaxgmac to nic-modules + - LP: #1192358 + * [debian] Use dh_strip + - LP: #1192759 + * [Config] Enable perf for armhf + * do_tools=false when cross compiling + * [Config] CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y + - LP: #1108082 + + [ Upstream Kernel Changes ] + + * nsp32: switch reset delay to msleep() as it is tooo long + * alx: add a simple AR816x/AR817x device driver + Plucked from linux-next. replaces ubuntu/alx in favor of + 'to be merged' version in 3.11. + * rebase to v3.10-rc7 + - LP: #1189363 + + -- Tim Gardner Sat, 22 Jun 2013 18:10:31 -0600 + +linux (3.10.0-0.5) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc6 + * [Config] updateconfigs following rebase to v3.10-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc6 + + -- Andy Whitcroft Mon, 17 Jun 2013 11:12:39 +0100 + +linux (3.10.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateconfigs following rebase to v3.10-rc4 + + -- Andy Whitcroft Mon, 10 Jun 2013 11:42:28 +0100 + +linux (3.10.0-0.3) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc5 + - LP: #1186170 + + -- Andy Whitcroft Mon, 10 Jun 2013 09:23:31 +0100 + +linux (3.10.0-0.2) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc4 + * [Config] CONFIG_BINFMT_SCRIPT=y to fix booting initramfs scripts + * [Config] enable SND_PCM_DEBUG SND_PCM_XRUN_DEBUG + - LP: #1187744 + * [Config] enforce CONFIG_BINFMT_SCRIPT=y + + [ Dave Chiluk ] + + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + + [ Tim Gardner ] + + * rebase to v3.10-rc3 + * [Config] sparc be gone + * [Config] ia64 be gone + * d-i: block-modules provides nbd-modules + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc4 + * rebase to v3.10-rc3 + + -- Tim Gardner Tue, 28 May 2013 06:16:46 -0600 + +linux (3.10.0-0.1) saucy; urgency=low + + [ Tim Gardner ] + + * UBUNTU: Disabled lttng + * UBUNTU: Disable aufs for FTBS + * UBUNTU: Disabled alx + * UBUNTU: alx: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* + * UBUNTU: rebase to v3.10-rc2 + * UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam + + [ Andy Whitcroft ] + + * UBUNTU: [Config] update standards version to 3.9.4.0 + * UBUNTU: [Config] squash duplicate package description (long and short) + * UBUNTU: [Config] fix up Vcs-git: to point to saucy + * UBUNTU: [Config] drop depenancy on util-linux as is Essential + * UBUNTU: [Config] drop redundant Build-Conficts: + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc2 + - LP: #1180351 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc1 + - LP: #1172151 + - LP: #1089795 + - LP: #1167270 + - LP: #1128840 + + -- Tim Gardner Tue, 14 May 2013 13:41:07 -0600 + +linux (3.10.0-0.0) saucy; urgency=low + + * Dummy + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-2.6) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.2 + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-1.5) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.1 + + -- Tim Gardner Wed, 08 May 2013 12:49:45 -0400 + +linux (3.9.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- add FS_ALIAS + + [ Tim Gardner ] + + * Added lttng + - LP: #1175784 + + -- Tim Gardner Thu, 02 May 2013 17:17:13 -0400 + +linux (3.9.0-0.3) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9 + + -- Tim Gardner Mon, 29 Apr 2013 18:20:00 -0400 + +linux (3.9.0-0.2) saucy; urgency=low + + [ Tim Gardner ] + + * Enable extras packaging for amd64/i386. + Fixes build depenencies with brittany and linux-meta. + + -- Tim Gardner Mon, 29 Apr 2013 05:37:01 -0600 + +linux (3.9.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc7 + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc3 + - LP: #1155016 + - LP: #1103594 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc1 + - LP: #901105 + - LP: #961286 + - LP: #1011792 + - LP: #1128934 + - LP: #886975 + - LP: #978807 + + -- Tim Gardner Wed, 20 Feb 2013 09:12:39 -0700 + +linux (3.8.0-7.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_RCU_USER_QS=n + * [Config] CONFIG_MTD_ONENAND_SIM=n + * annotations: add annotations for CONFIG_CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * rebase to v3.8 + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1130111 + * UBUNTU: SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once + - LP: #1128840 + + -- Tim Gardner Mon, 18 Feb 2013 09:25:56 -0700 + +linux (3.8.0-6.13) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1125364 + * Add ahci modules to d-i + - LP: #1124415 + + + [ Chris Wilson ] + + * SAUCE: drm/i915: Wait for pending flips to complete before tearing down + the encoders + - LP: #1097315 + + -- Tim Gardner Wed, 13 Feb 2013 12:16:48 -0700 + +linux (3.8.0-6.12) raring; urgency=low + + [Tim Gardner] + + * perf: NO_LIBPERL=1 + * Fix linux-headers dependency + * Release Tracking Bug + - LP: #1124362 + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_EXPORT to allow nfs exports + - LP: #1121699 + + [ Daniel Vetter ] + + * SAUCE: drm/i915: write backlight harder + - LP: #954661 + + -- Tim Gardner Wed, 13 Feb 2013 10:25:11 -0700 + +linux (3.8.0-6.11) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1122071 + * rebase to v3.8-rc7 + * Add libaudit-dev as a build dependency + * Build perf with NO_LIBPYTHON=1 to avoid a python build dependency. + + [ Leann Ogasawara ] + + * [Config] Remove CONFIG_SATA_AHCI annotation + + -- Tim Gardner Fri, 08 Feb 2013 07:41:13 -0500 + +linux (3.8.0-5.10) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1118568 + + * Bump ABI to fix install issue with 3.8.0-4.8. + Moving drivers/ata/*ahci* to linux-image caused an + install conflict with linux-image-extras without an + ABI bump. + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + -- Tim Gardner Thu, 07 Feb 2013 05:38:12 -0700 + +linux (3.8.0-4.9) raring; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Joseph Salisbury ] + + * SAUCE: ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1113547 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1117673 + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + * [Config] Add alx to d-i nic-modules + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + + -- Leann Ogasawara Tue, 05 Feb 2013 05:54:32 -0800 + +linux (3.8.0-4.8) raring; urgency=low + + [ Allen Ibara ] + + * SAUCE: imx6: dts: Add IMX6Q AHCI support + + [ Andy Whitcroft ] + + * rebase to v3.8-rc6 + * updateconfigs following rebase to v3.8-rc6 + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1112573 + + [ Paolo Pisati ] + + * SAUCE: imx6: enable sata clk if SATA_AHCI_PLATFORM + * [Config] SERIAL_AMBA_PL011=y (vexpress serial console) + * [Config] MMC_ARMMMCI=y (vexpress mmc) + * [Config] FB_ARMCLCD=y (vexpress framebuffer) + + [ Seth Forshee ] + + * [Config] CONFIG_MAC80211_MESSAGE_TRACING=y + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc6 + - LP: #1107477 + + -- Leann Ogasawara Fri, 01 Feb 2013 07:20:59 -0800 + +linux (3.8.0-3.7) raring; urgency=low + + [ Andy Green ] + + * SAUCE: ARM: OMAP2+: add cpu id register to MAC address helper + * SAUCE: ARM: omap2 add mac address allocation register api + * SAUCE: ARM: omap2 panda register ethernet and wlan for automatic mac + allocation + + [ Leann Ogasawara ] + + * rebase to v3.8-rc5 + * Release Tracking Bug + - LP: #1111486 + + [ Paolo Pisati ] + + * SAUCE: davinci: vpss: compilation fix + * [Config] enable TI OMAP4 support (Pandaboard/ES) + * [Config] OMAP_USB2=y (since TWL6030_USB depends on it) + * [Config] enable Freescale IMX6 support (SabreLite) + * [Config] SERIAL_IMX_CONSOLE=y + * [Config] MMC_*_IMX=y + * [Config] disable USB_SUSPEND + * [Config] USB_MXS_PHY=y + * [Config] USB_CHIPIDEA=y + * SAUCE: DTB: add support for multiple DTBs + * SAUCE: DTB: build imx6q-sabrelite + * SAUCE: DTB: build beaglexm + * SAUCE: DTB: build panda/panda es + * [Config] disable CPU_FREQ + * [Config] PANEL_TFP410=y (video DVI output) + * [Config] SND_OMAP_SOC*=y + * [Config] SND_IMX_SOC*=y + * [Config] I2C_IMX=y + * [Config] SPI_IMX=m + + [ Stefan Bader ] + + * [Config] Move 9p modules into generic package + - LP: #1107658 + + [ Tony Lindgren ] + + * SAUCE: ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform + kernels + * SAUCE: ARM: OMAP2+: Use omap initcalls + * SAUCE: ARM: OMAP: Fix i2c cmdline initcall for multiplatform + * SAUCE: ARM: OMAP: Fix dmaengine init for multiplatform + * SAUCE: ARM: OMAP2+: Add multiplatform debug_ll support + * SAUCE: ARM: OMAP2+: Disable code that currently does not work with + multiplaform + * SAUCE: ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support + * SAUCE: ARM: OMAP2+: Add minimal support for booting vexpress + * SAUCE: ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc5 + - LP: #1096789 + + -- Leann Ogasawara Thu, 31 Jan 2013 06:44:52 -0800 + +linux (3.8.0-2.6) raring; urgency=low + + [ Adam Conrad ] + + * Fix up linux-tools -> SRCPKGNAME-tools rename + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS + - LP: #1105230 + + [ Arend van Spriel ] + + * SAUCE: brcmsmac: fix tx status processing + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1105104 + + -- Leann Ogasawara Fri, 25 Jan 2013 11:56:30 -0800 + +linux (3.8.0-1.5) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1101235 + + [ Dudley Du ] + + * SAUCE: Input: add support for Cypress PS/2 Trackpads + - LP: #978807 + + [ Kamal Mostafa ] + + * SAUCE: Input: increase struct ps2dev cmdbuf[] to 8 bytes + * SAUCE: Input: Cypress PS/2 Trackpad simulated multitouch + * [Config] Add CONFIG_PS2_CYPRESS + + [ Tim Gardner ] + + * rebase to v3.8-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + -- Leann Ogasawara Thu, 17 Jan 2013 10:50:22 -0800 + +linux (3.8.0-0.4) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Update CONFIG_TOUCHSCREEN_EGALAX build annotation + * [Config] Update CONFIG_IIO build annotation + * [Config] Update CONFIG_TOUCHSCREEN_EETI annotation + * [Config] Remove CONFIG_SPI_DW_MMIO annotation + * [Config] Remove CONFIG_SPI_PL022 annotation + * [Config] Update CONFIG_EZX_PCAP annotation + * [Config] Update CONFIG_SENSORS_AK8975 annotation + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + -- Leann Ogasawara Mon, 14 Jan 2013 10:01:50 -0800 + +linux (3.8.0-0.3) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) trace: add trace events for open(), exec() and + uselib()" + + [ Scott James Remnant ] + + * SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() + (for v3.7+) + - LP: #1085766, #462111 + + -- Andy Whitcroft Fri, 11 Jan 2013 16:57:27 +0000 + +linux (3.8.0-0.2) raring; urgency=low + + [ Tim Gardner ] + + * [packaging] Add macro to selectively disable building perf + * [packaging] Cannot depend on universe package libaudit-dev + + -- Tim Gardner Thu, 10 Jan 2013 12:43:24 -0700 + +linux (3.8.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc3 + - LP: #1096789 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc2 + - LP: #1082357 + - LP: #1075882 + + -- Andy Whitcroft Mon, 17 Dec 2012 10:35:09 +0000 + +linux (3.7.0-7.15) raring; urgency=low + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Serge Hallyn ] + + * SAUCE: net: dev_change_net_namespace: send a KOBJ_REMOVED/KOBJ_ADD + + [ Tim Gardner ] + + * [Config] CONFIG_SLUB_DEBUG=y + - LP: #1090308 + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] sd: Implement support for WRITE SAME" + - LP: #1089818 + + -- Leann Ogasawara Wed, 12 Dec 2012 06:50:20 -0800 + +linux (3.7.0-6.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: all new annotations scheme including defaults + * [Configs] apply annotation updates to main configs (top section) + + [ Leann Ogasawara ] + + * Revert "SAUCE: include and for mmc_core arm + build" + * Revert "SAUCE: [arm] fixup __aeabi_uldivmod undefined build error" + * Temporarily disable module check for build + + [ Stefan Bader ] + + * ubuntu: dm-raid45: Adapt to upstream interface changes + * Re-enable build of dm-raid45 + + [ Tim Gardner ] + + * SAUCE: Moved scripts/fw-to-ihex.sh to debian/scripts/misc + * SAUCE: ACPICA: Fix ACPI mutex object allocation memory leak on error + * SAUCE: drm: Fix possible EDID memory allocation oops + * SAUCE: ttm: Fix possible _manager memory allocation oops + * SAUCE: iwlwifi: iwlagn_request_scan: Fix check for priv->scan_request + * SAUCE: i915: intel_set_mode: Reduce stack allocation from 500 bytes to + 2 pointers + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * rebase to v3.7 + + -- Leann Ogasawara Wed, 05 Dec 2012 14:11:12 -0800 + +linux (3.7.0-5.13) raring; urgency=low + + [ Lino Sanfilippo ] + + * SAUCE: inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #922906 + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + * SAUCE: fsnotify: change locking order + - LP: #922906 + + [ Tim Gardner ] + + * [Config] CONFIG_NFC_LLCP=y + * [Config] get-firmware: Filter new files through fwinfo + * [Config] CONFIG_MTD_NAND_DOCG4=m for all arches + * [Config] CONFIG_DRM_EXYNOS_HDMI=y + * [Config] CONFIG_XEN=y for all arches + * [Config] CONFIG_SND_OMAP_SOC_ZOOM2=m + * [Config] CONFIG_MMC_DW_EXYNOS=m + * [Config] CONFIG_GPIO_ADNP=m + * [Config] find-obsolete-firmware: Use correct path + * rebase to v3.7-rc8 + - LP: #1084640 + + [ Upstream Kernel Changes ] + + * Revert "VFS: don't do protected {sym,hard}links by default" + - LP: #1084192 + + -- Tim Gardner Wed, 28 Nov 2012 16:07:08 +0000 + +linux (3.7.0-4.12) raring; urgency=low + + [ Tim Gardner ] + + * Revert "[Config] Use -j1 for headers_install" + * Revert "[Config] install-arch-headers needs a valid config" + Strayed into the weeds in search of the root cause of the periodic + build failure. + Fixes powerpc FTBS introduced in -4.11. + * [Config] hmake -j1 + The kernel makefile appears to have parallel dependency + problems for the install_headers target. This appears to be root + cause for a periodic build failure on N-way machines. + + -- Leann Ogasawara Tue, 27 Nov 2012 12:33:06 -0800 + +linux (3.7.0-4.11) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Use -j1 for headers_install + Also fixes a powerpc FTBS introduced by + "[Config] install-arch-headers needs a valid config". + + -- Tim Gardner Tue, 27 Nov 2012 10:19:30 -0700 + +linux (3.7.0-4.10) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add rebuild-test support for autopkgtest + - LP: #1081500 + * [tests] move build tests out of the way + - LP: #1081500 + * [tests] add an autopkgtest rebuild test + - LP: #1081500 + + [ Tim Gardner ] + + * rebase to v3.7-rc7 + * SAUCE: Remove emi62 files duplicated in linux-firmware + * SAUCE: Remove sb16 files duplicated in linux-firmware + * SAUCE: Remove whiteheat files duplicated in linux-firmware + * SAUCE: Remove yamaha files duplicated in linux-firmware + * SAUCE: Remove dsp56k files used only by m68k + * SAUCE: firmware: Remove last vestiges of dabusb + * SAUCE: Remove vicam files duplicated in linux-firmware + * [Config] install-arch-headers needs a valid config + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc7 + - LP: #1076840 + - LP: #1081466 + + -- Leann Ogasawara Wed, 21 Nov 2012 06:07:23 -0800 + +linux (3.7.0-3.9) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_X86_CPUFREQ_NFORCE2=y + - LP: #1079900 + * Add nfsv3 to nfs-modules udeb + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC*=y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (no-up) xen/netfront: handle compound page fragments on transmit + - LP: #1078926 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + * Revert "SAUCE: omap3 clocks .dev_id = NULL" + * rebase to v3.7-rc6 + * SAUCE: script to detect obsolete firmware + * SAUCE: Remove yam files duplicated in linux-firmware + * SAUCE: Remove tehuti files duplicated in linux-firmware + * SAUCE: Remove matrox files duplicated in linux-firmware + * SAUCE: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: Remove r128 files duplicated in linux-firmware + * SAUCE: Remove acenic files duplicated in linux-firmware + * SAUCE: Remove keyspan files duplicated in linux-firmware + * SAUCE: Remove sun files duplicated in linux-firmware + * SAUCE: Remove radeon files duplicated in linux-firmware + * SAUCE: Update bnx2x firmware to 7.8.2.0 + * [Config] generic.inclusion-list: econet has disappeared + + [ Upstream Kernel Changes ] + + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * rebase to v3.7-rc6 + + -- Leann Ogasawara Tue, 20 Nov 2012 12:28:55 -0800 + +linux (3.7.0-2.8) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "overlayfs: disable until FTBS is fixed" + * Revert "ubuntu: overlayfs" + * Revert "ubuntu: AUFS" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- ovl: switch to __inode_permission() + * ubuntu: overlayfs -- overlayfs: copy up i_uid/i_gid from the underlying + inode + - LP: #944386 + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS (no-squash) -- aufs3-base.patch + * ubuntu: AUFS (no-squash) -- aufs3-standalone.patch + * ubuntu: AUFS: aufs-update -- follow the uapi header changes + * ubuntu: AUFS -- update to f2873474324d0a31af4340554b9715f51331bc7f + * ubuntu: AUFS (no-squash) -- reenable + - LP: #1079193 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- vfs: export __inode_permission() to modules + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + -- Andy Whitcroft Thu, 15 Nov 2012 13:35:12 +0000 + +linux (3.7.0-1.7) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Drop dependency on libaudit-dev + Its a universe package which causes an FTBS on the builders. + libaudit-dev is not strictly required for the perf tools build. + + -- Tim Gardner Wed, 14 Nov 2012 10:08:13 -0700 + +linux (3.7.0-1.6) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] enforce -- switch CONFIG_NVRAM to more readable form + * [Config] better encode the CONFIG_NVRAM constaint + * enforcer -- fix debugging output + + [ Ben Collins ] + + * [Config] Add custom_override rule to allow for alternate kernel + file/install + * [Config] Use SRCPKGNAME as prefix for indep linux headers package + + [ Tim Gardner ] + + * [Config] Dropped armel + * Drop highbank from ABI fetch list + * [Config] Use dh_prep instead of 'dh_clean -k' + * [Config] Build depend on libaudit-dev, libunwind8-dev for tools + * [Config] Document binary-indep dependency chain + * rebase to v3.7-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc5 + + -- Tim Gardner Tue, 13 Nov 2012 07:13:37 -0500 + +linux (3.7.0-0.5) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + * [Config] CONFIG_MTD_ONENAND_SIM=n for armel + Fixes FTBS + + -- Tim Gardner Thu, 08 Nov 2012 15:45:39 -0500 + +linux (3.7.0-0.4) raring; urgency=low + + [ Ben Collins ] + + * [Config] Update enforce rule for CONFIG_NVRAM to better suit flavours + + [ Tim Gardner ] + + * [Config] do_tools=false for arm + + -- Tim Gardner Thu, 08 Nov 2012 05:39:51 -0700 + +linux (3.7.0-0.3) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_DRM_EXYNOS_HDMI=n for armhf + * [Config] CONFIG_MTD_NAND_DOCG4=n for armel/armhf + * [Config] Drop highbank harder + + -- Tim Gardner Wed, 07 Nov 2012 18:11:45 +0000 + +linux (3.7.0-0.2) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + * [Config] drop highbank builds + + [ Jeremy Kerr ] + + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Leann Ogasawara ] + + * Reinstate dropped.txt from Ubuntu-3.7.0-0.1-rc1 + + [ Tim Gardner ] + + * [Config] Dropped powerpc/ppc64 in favour of the community kernel + * [Config] CONFIG_MODULE_SIG=y for amd64,i386, and highbank + * rebase to v3.7-rc4 + * SAUCE: MODSIGN: Emit error for incorrectly signed module + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc4 + + -- Tim Gardner Mon, 05 Nov 2012 05:35:41 -0700 + +linux (3.7.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc3 + - LP: #1056078 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc2 + - LP: #1060729 + - LP: #1059523 + - LP: #1006690 + - LP: #1049623 + - LP: #1046512 + - LP: #1052499 + - LP: #1037642 + - LP: #559939 + - LP: #1052460 + - LP: #939161 + - LP: #1046734 + + -- Tim Gardner Tue, 02 Oct 2012 08:13:07 -0600 + +linux (3.6.0-0.1) UNRELEASED; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.6 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc6 + - LP: #1000424 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc5 + - LP: #1040077 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc3 + - LP: #1038651 + - LP: #1034779 + + -- Leann Ogasawara Tue, 24 Jul 2012 06:37:09 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 + --- linux-4.4.0.orig/debian.master/changelog.historical +++ linux-4.4.0/debian.master/changelog.historical @@ -0,0 +1,4171 @@ + +linux (2.6.28-9.31) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: cpufreq-nforce2: probe failures are not errors + - LP: #332170 + * SAUCE: mmc: add MODALIAS linkage for MMC/SD devices + - LP: #30335 + * remove test-suspend script + - LP: #333856 + + [ Kees Cook ] + + * handle relative paths in modules.dep + Fixes 2.6.28-9.30 FTBS. + + [ Upstream Kernel Changes ] + + * ricoh_mmc: Handle newer models of Ricoh controllers + + -- Tim Gardner Wed, 11 Mar 2009 08:19:24 -0600 + +linux (2.6.28-9.30) jaunty; urgency=low + + [ Amit Kucheria ] + + * ARM:mx51 Add SoC and board support for mx51 platforms + * ARM:mx51 Add CONFIG_ARCH_MXC_CANONICAL to disable parts of Freescale's + code + * MMC: Add support for 8-bit cards + * Add ARM:MX51 SoC support to the build system + * ARM: Make ARM arch aware of ubuntu/ drivers + * ARM: Add imx51 configuration + * Disable d-i modules for imx51 and mv78xx0 + * Disable Apparmor on boot for ARM + * Updating imx51 config + + [ Jason Liu ] + + * Do not use OOB with MLC NAND + + [ Richard Zhu ] + + * Support the eMMC4.3 card + + [ Rob Herring ] + + * ARM: Add more cache memory types macros + + [ Tim Gardner ] + + * Set CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y for i386/amd64/lpia + + [ Manoj Iyer ] + + * Enable CONFIG_RTL8187SE=m + + [ Upstream Kernel Changes ] + + * USB: EHCI: slow down ITD reuse + - LP: #329437 + + -- Tim Gardner Sun, 08 Mar 2009 14:14:15 -0600 + +linux (2.6.28-9.29) jaunty; urgency=low + + [ Andy Whitcroft ] + + * link-headers -- only link directories which do not already exist + - LP: #315252 + + [ Daniel Marjamäki ] + + * SAUCE: (drop after 2.6.28) netxen: fix memory leak in + drivers/net/netxen_nic_init.c + - LP: #330813 + + [ Dhananjay Phadke ] + + * SAUCE: (drop after 2.6.28) netxen: fix endianness in firmware commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix ipv6 offload and tx cleanup + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix link speed reporting for some + boards + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: firmware init fix + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: cleanup mac list on driver unload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: hold tx lock while sending firmware + commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: handle dma mapping failures + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: avoid invalid iounmap + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: include ipv6.h (fixes build failure) + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix vlan tso/checksum offload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: reduce memory footprint + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: revert jumbo ringsize + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix msi-x interrupt handling + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: remove pcie workaround + - LP: #330813 + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.28) drivers/net/netxen: fix sparse warnings: use + NULL pointer instead of plain integer + - LP: #330813 + + [ Huaxu Wan ] + + * SAUCE: report rfkill changes event if interface is down + - LP: #193970 + + [ Tim Gardner ] + + * MV78XX0 must specify a target in the vars definition. + + [ Upstream Kernel Changes ] + + * Revert "ext4: wait on all pending commits in ext4_sync_fs()" + * jbd2: Fix return value of jbd2_journal_start_commit() + * jbd2: Avoid possible NULL dereference in + jbd2_journal_begin_ordered_truncate() + * ext4: Fix to read empty directory blocks correctly in 64k + * ext4: Fix lockdep warning + * ext4: Initialize preallocation list_head's properly + * ext4: Implement range_cyclic in ext4_da_writepages instead of + write_cache_pages + * ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling + * ext4: Add fallback for find_group_flex + * ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() + * Added mv78xx0 flavor + + -- Tim Gardner Fri, 06 Mar 2009 06:13:31 -0700 + +linux (2.6.28-8.28) jaunty; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: Limit workaround for ASUS notebooks even more + - LP: #288385 + + [ Scott James Remnant ] + + * SAUCE: Auto-load esp module when device opened. + * SAUCE: Auto-load bridge module when socket opened. + * SAUCE: Auto-load af_netlink module when socket opened. + * SAUCE: Auto-load wanrouter module when socket opened. + * SAUCE: Auto-load ip_queue module when socket opened. + * SAUCE: Auto-load ip6_queue module when socket opened. + * SAUCE: Auto-load cn module when socket opened. + * SAUCE: Auto-load scsi_transport_iscsi module when socket opened. + * SAUCE: Auto-load ftl module when device opened. + * SAUCE: Auto-load pcd module when device opened. + * SAUCE: Auto-load pf module when device opened. + * SAUCE: Auto-load nftl module when device opened. + * SAUCE: Auto-load mousedev module when psaux device opened. + * SAUCE: Auto-load mousedev module when /dev/input/mice opened. + * SAUCE: Auto-load rng-core module when device opened. + * SAUCE: Auto-load openprom module when device opened. + * SAUCE: Auto-load applicom module when device opened. + * SAUCE: Auto-load toshiba module when device opened. + * SAUCE: Auto-load cyclades module when device opened. + * SAUCE: Auto-load riscom8 module when device opened. + * SAUCE: Auto-load specialix module when device opened. + * SAUCE: Auto-load videodev module when device opened. + * SAUCE: Auto-load i2c_dev module when device opened. + * SAUCE: Auto-load mtdchar module when device opened. + * SAUCE: Auto-load pt module when device opened. + * SAUCE: Auto-load pg module when device opened. + * SAUCE: Auto-load cdc_acm module when device opened. + * SAUCE: Auto-load msr module when device opened. + * SAUCE: Auto-load cpuid module when device opened. + * SAUCE: quickcam: Enable double-buffering by default + * SAUCE: libata: Ignore HPA by default. + * SAUCE: hostap: Change initial operation mode to managed (infra) + * SAUCE: floppy: Provide a PnP device table in the module. + - LP: #255651 + * SAUCE: Auto-load mwave module when device opened. + * Build CONFIG_FUSE_FS into kernel, not as module. + + [ Stefan Bader ] + + * Enable build of ext4 as a module on LPIA + - LP: #331848 + + [ Tim Gardner ] + + * Update configs to fix LPIA FTBS + + -- Tim Gardner Thu, 05 Mar 2009 10:43:24 -0700 + +linux (2.6.28-8.27) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (arm:ixp4xx) + + [ Andy Whitcroft ] + + * SAUCE: enable Intel HDMI output + + [ Manoj Iyer ] + + * SAUCE: Added quirk for Linksys WUSB600N USB wifi-n networking adapter + - LP: #323473 + + [ Steve Beattie ] + + * fix apparmor memory leak on unlinked file ops + - LP: #329489 + + [ Tim Gardner ] + + * SAUCE: Dell XPS710 reboot quirk + - LP: #323592 + * SAUCE: (drop after 2.6.28) ieee80211: Add infrastructure to obsolete + scan results + - LP: #336055 + * Add modules.order to the linux-image package. + + [ Upstream Kernel Changes ] + + * iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit + * x86: only scan the root bus in early PCI quirks + - LP: #267295 + * ALSA: hda - Intel HDMI audio support + * ALSA: hda - Fix unused function in patch_intelhdmi.c + * ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c + * ALSA: hda-intel: reorder HDMI audio enabling sequence + * ALSA: introduce snd_print_pcm_rates() + * ALSA: create hda_eld.c for ELD routines and proc interface + * ALSA: ELD proc interface for HDMI sinks + * ALSA: hda: make standalone hdmi_fill_audio_infoframe() + * ALSA: hda: make global snd_print_channel_allocation() + * ALSA: hda: HDMI channel allocations for audio infoframe + * ALSA: hda: HDMI channel mapping cleanups + * ALSA: hda: minor code cleanups + * ALSA: hda: rename sink_eld to hdmi_eld + * ALSA: hda - Release ELD proc file + * ALSA: hda - minor HDMI code cleanups + * ALSA: hda - report selected CA index for Audio InfoFrame + * ALSA: hda - Add Intel vendor id string + + -- Tim Gardner Wed, 25 Feb 2009 14:23:46 -0700 + +linux (2.6.28-8.26) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (armel:ixp4xx) + - LP: #331510 + + [ Tim Gardner ] + + * Add more missing modules + + -- Tim Gardner Tue, 24 Feb 2009 06:58:53 -0700 + +linux (2.6.28-8.25) jaunty; urgency=low + + [ Scott James Remnant ] + + * SAUCE: Prefer powernow-k8 to acpi-cpufreq + * Change CONFIG_X86_P4_CLOCKMOD to be a module again. + + [ Tim Gardner ] + + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new + group descriptor when resizing the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check + to make_indexed_dir" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: only use + i_size_high for regular files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks + for the superblock before mounting the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix + s_dirty_blocks_counter if block allocation failed with nodelalloc" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Init the complete + page while building buddy cache" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new + groups to be added during block allocation" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: mark the + blocks/inode bitmap beyond end of group as used" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use new + buffer_head flag to check uninit group bitmaps initialization" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the race + between read_inode_bitmap() and ext4_new_inode()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks + freed but not yet committed in buddy cache init" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc + header files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added + during resize to bitmap" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status" + * Revert "SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not + supported test to journal_wait_on_commit_record" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[]" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error + when mounting a fs with a single bg" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset." + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add support for + non-native signed/unsigned htree hash algorithms" + * Enabled X86_ACPI_CPUFREQ=y + + [ Upstream Kernel Changes ] + + * ath9k: quiet harmless ForceXPAon messages + - LP: #321474 + * [WATCHDOG] iTCO_wdt: fix SMI_EN regression 2 + - LP: #314050 + * pid: implement ns_of_pid + * mqueue: fix si_pid value in mqueue do_notify() + * powerpc/vsx: Fix VSX alignment handler for regs 32-63 + * sata_nv: give up hardreset on nf2 + * Fix Intel IOMMU write-buffer flushing + * SCSI: libiscsi: fix iscsi pool leak + * x86/cpa: make sure cpa is safe to call in lazy mmu mode + * sched: SCHED_OTHER vs SCHED_IDLE isolation + * x86, vm86: fix preemption bug + * Add support for VT6415 PCIE PATA IDE Host Controller + * ext2/xip: refuse to change xip flag during remount with busy inodes + * 3c505: do not set pcb->data.raw beyond its size + * Bluetooth: Fix TX error path in btsdio driver + * ext4: Add support for non-native signed/unsigned htree hash algorithms + * ext4: tone down ext4_da_writepages warnings + * ext4: Fix the delalloc writepages to allocate blocks at the right + offset. + * ext4: avoid ext4_error when mounting a fs with a single bg + * ext4: Widen type of ext4_sb_info.s_mb_maxs[] + * jbd2: Add barrier not supported test to journal_wait_on_commit_record + * ext4: Don't overwrite allocation_context ac_status + * ext4: Add blocks added during resize to bitmap + * ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * ext4: cleanup mballoc header files + * ext4: don't use blocks freed but not yet committed in buddy cache init + * ext4: Fix race between read_block_bitmap() and mark_diskspace_used() + * ext4: Fix the race between read_inode_bitmap() and ext4_new_inode() + * ext4: Use new buffer_head flag to check uninit group bitmaps + initialization + * ext4: mark the blocks/inode bitmap beyond end of group as used + * ext4: Don't allow new groups to be added during block allocation + * ext4: Init the complete page while building buddy cache + * ext4: Fix s_dirty_blocks_counter if block allocation failed with + nodelalloc + * ext4: Add sanity checks for the superblock before mounting the + filesystem + * ext4: only use i_size_high for regular files + * ext4: Add sanity check to make_indexed_dir + * ext4: Initialize the new group descriptor when resizing the filesystem + * Fix longstanding "error: storage size of '__mod_dmi_device_table' isn't + known" + * Linux 2.6.28.7 + + -- Tim Gardner Thu, 19 Feb 2009 06:45:55 -0700 + +linux (2.6.28-8.24) jaunty; urgency=low + + [ Scott James Remnant ] + + * Change CPU_FREQ_DEFAULT_GOV_ONDEMAND to y + * SAUCE: Link acpi-cpufreq.o first + + [ Tim Gardner ] + + * Build in CPU Frequency scaling drivers + + -- Tim Gardner Wed, 18 Feb 2009 06:12:24 -0700 + +linux (2.6.28-8.23) jaunty; urgency=low + + [ Andy Whitcroft ] + + * include the kernel configuration in the sub-flavour images + - LP: #328859 + + [ Tim Gardner ] + + * Revert "SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks" in favor of upstream commit. + * Fix compile issues with qc-usb + * SAUCE: (remove after 2.6.28) V4L/DVB (10216): saa7127: fix broken + S-Video with saa7129 + - LP: #329267 + + [ Upstream Kernel Changes ] + + * Subject:SAUCE: LP#193970 iwlagn: fix hw-rfkill while the interface is + down + - LP: #193970 + * x86, vmi: put a missing paravirt_release_pmd in pgd_dtor + * nbd: fix I/O hang on disconnected nbds + * mac80211: restrict to AP in outgoing interface heuristic + * w1: w1 temp calculation overflow fix + * zd1211rw: adding 0ace:0xa211 as a ZD1211 device + * zd1211rw: treat MAXIM_NEW_RF(0x08) as UW2453_RF(0x09) for TP-Link + WN322/422G + * parport: parport_serial, don't bind netmos ibm 0299 + * syscall define: fix uml compile bug + * kernel-doc: fix syscall wrapper processing + * Fix page writeback thinko, causing Berkeley DB slowdown + * write-back: fix nr_to_write counter + * writeback: fix break condition + * mm: rearrange exit_mmap() to unlock before arch_exit_mmap + * powerpc/fsl-booke: Fix mapping functions to use phys_addr_t + * lockd: fix regression in lockd's handling of blocked locks + * sctp: Fix crc32c calculations on big-endian arhes. + * sctp: Correctly start rtx timer on new packet transmissions. + * sctp: Properly timestamp outgoing data chunks for rtx purposes + * net: Fix frag_list handling in skb_seq_read + * net: Fix OOPS in skb_seq_read(). + * drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic + * ipv4: fix infinite retry loop in IP-Config + * net: Fix userland breakage wrt. linux/if_tunnel.h + * net: packet socket packet_lookup_frame fix + * packet: Avoid lock_sock in mmap handler + * sungem: Soft lockup in sungem on Netra AC200 when switching interface + up + * udp: Fix UDP short packet false positive + * udp: increments sk_drops in __udp_queue_rcv_skb() + * ipv6: Disallow rediculious flowlabel option sizes. + * ipv6: Copy cork options in ip6_append_data + * net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2 + * sky2: fix hard hang with netconsoling and iface going up + * tun: Add some missing TUN compat ioctl translations. + * tun: Fix unicast filter overflow + * virtio_net: Fix MAX_PACKET_LEN to support 802.1Q VLANs + * tcp: splice as many packets as possible at once + * tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits. + * sparc: Enable syscall wrappers for 64-bit (CVE-2009-0029) + * sparc64: Annotate sparc64 specific syscalls with SYSCALL_DEFINEx() + * ALSA: hda - Add missing terminator in slave dig-out array + * ALSA: mtpav - Fix initial value for input hwport + * HID: adjust report descriptor fixup for MS 1028 receiver + * ide/libata: fix ata_id_is_cfa() (take 4) + * libata: fix EH device failure handling + * netfilter: fix tuple inversion for Node information request + * netfilter: xt_sctp: sctp chunk mapping doesn't work + * x86: microcode_amd: fix wrong handling of equivalent CPU id + * ide-cd: fix DMA for non bio-backed requests + * net: Fix data corruption when splicing from sockets. + * Linux 2.6.28.6 + * eCryptfs: Regression in unencrypted filename symlinks + + -- Tim Gardner Mon, 16 Feb 2009 06:43:51 -0700 + +linux (2.6.28-8.22) jaunty; urgency=low + + [ Amit Kucheria ] + + * Remove perm-blacklist + + [ Andy Whitcroft ] + + * SAUCE: psmouse/synaptics: ensure we reset the device on resume + - LP: #317270 + + [ Tim Gardner ] + + * Add lpia to getabi script + * SAUCE: tracer for sreadahead + + -- Amit Kucheria Fri, 13 Feb 2009 15:23:21 +0200 + +linux (2.6.28-8.21) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: switch the Asus Pundit P1-AH2 to old acpi sleep ordering + - LP: #327267 + + [ Tim Gardner ] + + * Added LPIA arch support + * Added libdrm-dev as a 'Replaces' to linux-libc-dev + * SAUCE: LPIA support for 9202 HDA Sigmatel codec + * SAUCE: Add an X86_LPIA Kconfig option + * SAUCE: UHCI USB quirk for resume + * SAUCE: LPIA Reboot fix for Intel Crownbeach development boards + * SAUCE: LPIA Logical reset of USB port on resume + * Set CONFIG_WIRELESS_OLD_REGULATORY=n, added wireless-crda + as an install dependency. + + [ Upstream Kernel Changes ] + + * Revert "Revert "x86, early_ioremap: fix fencepost error"" + - LP: #312554 + * drm/i915: capture last_vblank count at IRQ uninstall time too + - LP: #320813 + * drm/i915: add get_vblank_counter function for GM45 + - LP: #320813 + * Staging: comedi: fix Kbuild + * Staging: meilhaus: fix Kbuild + * Staging: android: binder: fix arm build errors + * Staging: android: timed_gpio: Fix build to build on kernels after + 2.6.25. + * Staging: android: fix build error on 64bit boxes + * Staging: android: Add lowmemorykiller documentation. + * Staging: android: task_get_unused_fd_flags: fix the wrong usage of + tsk->signal + * staging: agnx: drivers/staging/agnx/agnx.h needs + * Staging: usbip: usbip_start_threads(): handle kernel_thread failure + * Staging: poch: fix verification of memory area + * Documentation: move DMA-mapping.txt to Doc/PCI/ + * sgi-xp: fix writing past the end of kzalloc()'d space + * do_wp_page: fix regression with execute in place + * wait: prevent exclusive waiter starvation + * shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM + * revert "rlimit: permit setting RLIMIT_NOFILE to RLIM_INFINITY" + * prevent kprobes from catching spurious page faults + * sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices + * md: Ensure an md array never has too many devices. + * md: Fix a bug in linear.c causing which_dev() to return the wrong + device. + * ACPI: Enable bit 11 in _PDC to advertise hw coord + * ACPI: dock: Don't eval _STA on every show_docked sysfs read + * ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from + Panasonic camcorders and others + * firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic + camcorders and others + * firewire: sbp2: fix DMA mapping leak on the failure path + * firewire: sbp2: add workarounds for 2nd and 3rd generation iPods + * ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods + * module: remove over-zealous check in __module_get() + * x86: APIC: enable workaround on AMD Fam10h CPUs + * eeepc-laptop: fix oops when changing backlight brightness during + eeepc-laptop init + * eeepc-laptop: Add support for extended hotkeys + * e1000: fix bug with shared interrupt during reset + * e1000: Fix PCI enable to honor the need_ioport flag + * agp/intel: Fix broken ® symbol in device name. + * ALSA: hda - Add quirk for FSC Amilo Xi2550 + * ALSA: hda - Add missing COEF initialization for ALC887 + * ALSA: hda - Add missing initialization for ALC272 + * asus_acpi: Add R1F support + * panasonic-laptop: fix X[ ARRAY_SIZE(X) ] + * ACPI: Skip the first two elements in the _BCL package + * ACPI: proc_dir_entry 'video/VGA' already registered + * ACPI: disable ACPI cleanly when bad RSDP found + * ACPICA: Fix table entry truncation calculation + * PCI: properly clean up ASPM link state on device remove + * PCI: return error on failure to read PCI ROMs + * seq_file: move traverse so it can be used from seq_read + * seq_file: fix big-enough lseek() + read() + * serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS + EX-41092 Dual 16950 Serial adapter + * Add support for '8-port RS-232 MIC-3620 from advantech' + * mm: fix error case in mlock downgrade reversion + * elf core dump: fix get_user use + * ACPI: video: Fix reversed brightness behavior on ThinkPad SL series + * ipw2200: fix scanning while associated + * XFS: set b_error from bio error in xfs_buf_bio_end_io + * Revert USB: option: add Pantech cards + * USB: option: New mobile broadband modems to be supported + * USB: new id for ti_usb_3410_5052 driver + * USB: two more usb ids for ti_usb_3410_5052 + * USB: usb-storage: add Pentax to the bad-vendor list + * sata_via: Add VT8261 support + * nbd: do not allow two clients at the same time + * sctp: Fix another socket race during accept/peeloff + * Linux 2.6.28.5 + + -- Tim Gardner Mon, 09 Feb 2009 16:11:28 -0700 + +linux (2.6.28-7.20) jaunty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Input: atkbd - Samsung NC10 key repeat fix + + [ Upstream Kernel Changes ] + + * Manually revert "mlock: downgrade mmap sem while populating mlocked + regions" + * xen: make sysfs files behave as their names suggest + * sata_mv: fix 8-port timeouts on 508x/6081 chips + * m68knommu: set NO_DMA + * PCI/MSI: bugfix/utilize for msi_capability_init() + * x86: use early clobbers in usercopy*.c + * netfilter: ctnetlink: fix scheduling while atomic + * orinoco: move kmalloc(..., GFP_KERNEL) outside spinlock in + orinoco_ioctl_set_genie + * fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks + * kmalloc: return NULL instead of link failure + * sata_nv: rename nv_nf2_hardreset() + * sata_nv: fix MCP5x reset + * sata_nv: ck804 has borked hardreset too + * Fix memory corruption in console selection + * Add enable_ms to jsm driver + * nfsd: only set file_lock.fl_lmops in nfsd4_lockt if a stateowner is + found + * nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT + * iwlwifi: fix rs_get_rate WARN_ON() + * p54: fix lm87 checksum endianness + * p54: fix p54_read_eeprom to cope with tx_hdr_len + * p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities + * minstrel: fix warning if lowest supported rate index is not 0 + * PCI: irq and pci_ids patch for Intel Tigerpoint DeviceIDs + * cpuidle: Add decaying history logic to menu idle predictor + * ACPI: Avoid array address overflow when _CST MWAIT hint bits are set + * video: always update the brightness when poking "brightness" + * Newly inserted battery might differ from one just removed, so update of + battery info fields is required. + * ACPI: Do not modify SCI_EN directly + * dlm: initialize file_lock struct in GETLK before copying conflicting + lock + * sata_mv: Fix chip type for Hightpoint RocketRaid 1740/1742 + * ACPICA: Allow multiple backslash prefix in namepaths + * Linux 2.6.28.4 + + -- Tim Gardner Sat, 07 Feb 2009 18:53:42 -0700 + +linux (2.6.28-7.19) jaunty; urgency=low + + * Fix missing modules FTBS + + -- Tim Gardner Thu, 05 Feb 2009 15:28:15 -0700 + +linux (2.6.28-7.18) jaunty; urgency=low + + [ Alok Kataria ] + + * SAUCE: (drop after 2.6.29) x86: add a synthetic TSC_RELIABLE feature + bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: add X86_FEATURE_HYPERVISOR feature bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Hypervisor detection and get tsc_freq + from hypervisor + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Add a synthetic TSC_RELIABLE feature + bit. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Skip verification by the watchdog for + TSC clocksource. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: VMware: Fix vmware_get_tsc code + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: vmware: look for DMI string in the + product serial key + - LP: #319945 + + [ Andy Whitcroft ] + + * SAUCE: toshiba_acpi -- pull in current -dev version of driver + - LP: #269831 + * SAUCE: toshiba_acpi -- add acpi hotkey kernel thread + - LP: #269831 + * move toshiba laptops back from tlsup to toshiba_acpi + - LP: #269831 + + [ Aneesh Kumar K.V ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset. + * SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error when + mounting a fs with a single bg + * SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status + * SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added during + resize to bitmap + * SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc header + files + * SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks freed but + not yet committed in buddy cache init + * SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used() + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the race between + read_inode_bitmap() and ext4_new_inode() + * SAUCE: (revert before 2.6.28.y update) ext4: Use new buffer_head flag + to check uninit group bitmaps initialization + * SAUCE: (revert before 2.6.28.y update) ext4: mark the blocks/inode + bitmap beyond end of group as used + * SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new groups to + be added during block allocation + * SAUCE: (revert before 2.6.28.y update) ext4: Init the complete page + while building buddy cache + * SAUCE: (revert before 2.6.28.y update) ext4: Fix s_dirty_blocks_counter + if block allocation failed with nodelalloc + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.29) x86: vmware - fix sparse warnings + - LP: #319945 + + [ Luke Yelavich ] + + * hid modules have hyphens instead of underscores in their names + + [ Mark Fasheh ] + + * SAUCE: (revert before 2.6.28.y update) jbd2: Add BH_JBDPrivateStart + + [ Theodore Ts'o ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Add support for non-native + signed/unsigned htree hash algorithms + * SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings + * SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not supported + test to journal_wait_on_commit_record + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks for the + superblock before mounting the filesystem + * SAUCE: (revert before 2.6.28.y update) ext4: only use i_size_high for + regular files + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check to + make_indexed_dir + * SAUCE: (revert before 2.6.28.y update) jbd2: On a __journal_expect() + assertion failure printk "JBD2", not "EXT3-fs" + * SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new group + descriptor when resizing the filesystem + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks + - LP: #322532 + + [ Upstream Kernel Changes ] + + * Input: atkbd - broaden the Dell DMI signatures + - LP: #261721 + * ti_usb_3410_5052: support alternate firmware + * ath5k: fix mesh point operation + * mac80211: decrement ref count to netdev after launching mesh discovery + * inotify: clean up inotify_read and fix locking problems + * fuse: destroy bdi on umount + * fuse: fix missing fput on error + * fuse: fix NULL deref in fuse_file_alloc() + * x86, mm: fix pte_free() + * klist.c: bit 0 in pointer can't be used as flag + * sysfs: fix problems with binary files + * x86: fix page attribute corruption with cpa() + * USB: fix toggle mismatch in disable_endpoint paths + * sound: virtuoso: enable UART on Xonar HDAV1.3 + * USB: usbmon: Implement compat_ioctl + * USB: fix char-device disconnect handling + * USB: storage: add unusual devs entry + * alpha: nautilus - fix compile failure with gcc-4.3 + * alpha: fix vmalloc breakage + * resources: skip sanity check of busy resources + * rtl8187: Add termination packet to prevent stall + * it821x: Add ultra_mask quirk for Vortex86SX + * libata: pata_via: support VX855, future chips whose IDE controller use + 0x0571 + * serial_8250: support for Sealevel Systems Model 7803 COMM+8 + * drm: stash AGP include under the do-we-have-AGP ifdef + * Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments + * bnx2x: Block nvram access when the device is inactive + * ext3: Add sanity check to make_indexed_dir + * rtl8187: Fix error in setting OFDM power settings for RTL8187L + * epoll: drop max_user_instances and rely only on max_user_watches + * gpiolib: fix request related issue + * sgi-xpc: Remove NULL pointer dereference. + * sgi-xpc: ensure flags are updated before bte_copy + * include/linux: Add bsg.h to the Kernel exported headers + * ALSA: hda - Fix PCM reference NID for STAC/IDT analog outputs + * ALSA: hda - add another MacBook Pro 4, 1 subsystem ID + * ALSA: hda - Add quirk for HP DV6700 laptop + * crypto: authenc - Fix zero-length IV crash + * crypto: ccm - Fix handling of null assoc data + * x86, pat: fix reserve_memtype() for legacy 1MB range + * x86, pat: fix PTE corruption issue while mapping RAM using /dev/mem + * PCI hotplug: fix lock imbalance in pciehp + * dmaengine: fix dependency chaining + * NET: net_namespace, fix lock imbalance + * relay: fix lock imbalance in relay_late_setup_files + * Linux 2.6.28.3 + * ALSA: Enable SPDIF output on ALC655 + * ALSA: hda - Add ASUS V1Sn support + * ALSA: hda - support detecting HD Audio devices with PCI class code + * ALSA: hda: alc883 model for ASUS P5Q-EM boards + * ALSA: hda - Add quirk for MSI 7260 mobo + * ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN + * ALSA: oxygen: add Claro halo support + * ALSA: hda - Add a new function to seek for a codec ID + * ALSA: patch_sigmatel: Add missing Gateway entries and autodetection + * ALSA: hda - More fixes on Gateway entries + * ALSA: hda - Add MCP67 HDMI support + * ALSA: hda - fix name for ALC1200 + * LSA: hda - Add HP Acacia detection + * ALSA: hda - Add quirk for HP 2230s + * ALSA: hda - Add quirk for Dell Inspiron Mini9 + * ALSA: hda - add support for Intel DX58SO board + * ALSA: hda - Fix silent headphone output on Panasonic CF-74 + * ALSA: USB quirk for Logitech Quickcam Pro 9000 name + * ALSA: hda - add quirks for some 82801H variants to use ALC883_MITAC + + [ Yasunori Goto ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[] + + -- Tim Gardner Mon, 02 Feb 2009 23:07:13 -0700 + +linux (2.6.28-6.17) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs: ARMEL/versatile + + -- Amit Kucheria Fri, 30 Jan 2009 13:36:59 +0200 + +linux (2.6.28-6.16) jaunty; urgency=low + + [ Luke Yelavich ] + + * Add hid quirks to input-modules udeb + + [ Tim Gardner ] + + * Revert "[arm] Fix kexec on ARM by properly calling the relocation + function". This patch was deemed 'bogus' by Russell King on the + ARM mailing list. + + [ Upstream Kernel Changes ] + + * PCI: keep ASPM link state consistent throughout PCIe hierarchy + * security: introduce missing kfree + * rt2x00: add USB ID for the Linksys WUSB200. + * p54usb: Add USB ID for Thomson Speedtouch 121g + * lib/idr.c: use kmem_cache_zalloc() for the idr_layer cache + * sgi-xp: eliminate false detection of no heartbeat + * sched: fix update_min_vruntime + * IA64: Turn on CONFIG_HAVE_UNSTABLE_CLOCK + * sound: virtuoso: do not overwrite EEPROM on Xonar D2/D2X + * ALSA: hda - Add quirk for another HP dv5 + * ALSA: hda - Fix HP dv5 mic input + * ALSA: hda - Don't reset HP pinctl in patch_sigmatel.c + * ALSA: hda - make laptop-eapd model back for AD1986A + * drivers/net/irda/irda-usb.c: fix buffer overflow + * usb-storage: add last-sector hacks + * usb-storage: set CAPACITY_HEURISTICS flag for bad vendors + * pkt_sched: sch_htb: Fix deadlock in hrtimers triggered by HTB + * ipv6: Fix fib6_dump_table walker leak + * sctp: Avoid memory overflow while FWD-TSN chunk is received with bad + stream ID + * pkt_sched: cls_u32: Fix locking in u32_change() + * r6040: fix wrong logic in mdio code + * r6040: save and restore MIER correctly in the interrupt routine + * r6040: bump release number to 0.19 + * tcp: don't mask EOF and socket errors on nonblocking splice receive + * p54usb: fix traffic stalls / packet drop + * netfilter: x_tables: fix match/target revision lookup + * netfilter: ebtables: fix inversion in match code + * netfilter: nf_conntrack: fix ICMP/ICMPv6 timeout sysctls on big-endian + * dell_rbu: use scnprintf() instead of less secure sprintf() + * powerpc: is_hugepage_only_range() must account for both 4kB and 64kB + slices + * hwmon: (abituguru3) Fix CONFIG_DMI=n fallback to probe + * mm: write_cache_pages cyclic fix + * mm: write_cache_pages early loop termination + * mm: write_cache_pages writepage error fix + * mm: write_cache_pages integrity fix + * mm: write_cache_pages cleanups + * mm: write_cache_pages optimise page cleaning + * mm: write_cache_pages terminate quickly + * mm: write_cache_pages more terminate quickly + * mm: do_sync_mapping_range integrity fix + * mm: direct IO starvation improvement + * fs: remove WB_SYNC_HOLD + * fs: sync_sb_inodes fix + * fs: sys_sync fix + * Linux 2.6.28.2 + + -- Tim Gardner Sun, 25 Jan 2009 13:36:16 -0700 + +linux (2.6.28-5.15) jaunty; urgency=low + + [ Tim Gardner ] + + * Revert "Enabled CONFIG_PID_NS=y for i386/amd64" + Somehow this commit also reverted the 7 prior commits (which is bad). + * Enabled CONFIG_PID_NS=y for i386/amd64 (version 2) + + -- Tim Gardner Thu, 22 Jan 2009 13:48:34 -0700 + +linux (2.6.28-5.14) jaunty; urgency=low + + [ Ben Collins ] + + * lirc_gpio: Forward ported to current kernel (jaunty) + * configs: Enable LIRC_GPIO on 64-bit/32-bit x86 + - LP: #298791 + + [ Jeff Layton ] + + * SAUCE: cifs: make sure we allocate enough storage for socket address + - LP: #318565 + + [ Tim Gardner ] + + * check-abi: Return success when ABI skip is requested and no ABI files exist. + This ought to fix the armel FTBS. + + -- Tim Gardner Thu, 22 Jan 2009 06:42:49 -0700 + +linux (2.6.28-5.13) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control" + + [ Tim Gardner ] + + * Fix udeb generation breakage caused by the previous armel versatile + flavour config update. + + -- Tim Gardner Wed, 21 Jan 2009 12:38:35 -0700 + +linux (2.6.28-5.12) jaunty; urgency=low + + [ Ante ] + + * Update drbd to 8.3.0 + + [ Dave Airlie ] + + * i915/drm: provide compat defines for userspace for certain struct + + [ Eric Anholt ] + + * drm/i915: Don't double-unpin buffers if we take a signal in + * drm/i915: Don't complain when interrupted while pinning in execbuffers. + * drm/i915: Don't allow objects to get bound while VT switched. + + [ Jani Monoses ] + + * Fix webcam having USB ID 0ac8:303b + - LP: #292086 + + [ Jesse Barnes ] + + * drm/i915: set vblank enabled flag correctly across IRQ + * drm/i915: don't enable vblanks on disabled pipes + + [ Michael Casadevall ] + + * [arm] Fix kexec on ARM by properly calling the relocation function + + [ Tim Gardner ] + + * Enabled CONFIG_PID_NS=y for i386/amd64 + * SAUCE: Increase ATA_TMOUT_PMP_SRST_WAIT to 5 seconds. + - LP: #318978 + * Update armel versatile config + - LP: #314789 + * Enabled CONFIG_RT2860=m for i386/amd64 + * Enabled CONFIG_RT2870=m for i386/amd64 + + [ Upstream Kernel Changes ] + + * Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop + - LP: #291878 + * ALSA: hda - Add quirk for another HP dv7 + * ALSA: hda - Add quirk for HP6730B laptop + * ALSA: caiaq - Fix Oops with MIDI + * ALSA: hda - Fix typos for AD1882 codecs + * x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies + * x86: default to SWIOTLB=y on x86_64 + * CIFS: make sure that DFS pathnames are properly formed + * ring-buffer: prevent false positive warning + * ring-buffer: fix dangling commit race + * iwlwifi: use GFP_KERNEL to allocate Rx SKB memory + * tx493[89]ide: Fix length for __ide_flush_dcache_range + * tx4939ide: Do not use zero count PRD entry + * SCSI: eata: fix the data buffer accessors conversion regression + * USB: emi26: fix oops on load + * x86, UV: remove erroneous BAU initialization + * x86: fix incorrect __read_mostly on _boot_cpu_pda + * vmalloc.c: fix flushing in vmap_page_range() + * fs: symlink write_begin allocation context fix + * cgroups: fix a race between cgroup_clone and umount + * dm raid1: fix error count + * dm log: fix dm_io_client leak on error paths + * minix: fix add link's wrong position calculation + * md: fix bitmap-on-external-file bug. + * sched_clock: prevent scd->clock from moving backwards, take #2 + * devices cgroup: allow mkfifo + * SCSI: aha152x_cs: Fix regression that keeps driver from using shared + interrupts + * ioat: fix self test for multi-channel case + * USB: isp1760: use a specific PLX bridge instead of any bdridge + * USB: isp1760: Fix probe in PCI glue code + * USB: unusual_devs.h additions for Pentax K10D + * inotify: fix type errors in interfaces + * Move compat system call declarations to compat header file + * Convert all system calls to return a long + * Rename old_readdir to sys_old_readdir + * Remove __attribute__((weak)) from sys_pipe/sys_pipe2 + * Make sys_pselect7 static + * Make sys_syslog a conditional system call + * System call wrapper infrastructure + * powerpc: Enable syscall wrappers for 64-bit + * s390: enable system call wrappers + * System call wrapper special cases + * System call wrappers part 01 + * System call wrappers part 02 + * System call wrappers part 03 + * System call wrappers part 04 + * System call wrappers part 05 + * System call wrappers part 06 + * System call wrappers part 07 + * System call wrappers part 08 + * System call wrappers part 09 + * System call wrappers part 10 + * System call wrappers part 11 + * System call wrappers part 12 + * System call wrappers part 13 + * System call wrappers part 14 + * System call wrappers part 15 + * System call wrappers part 16 + * System call wrappers part 17 + * System call wrappers part 18 + * System call wrappers part 19 + * System call wrappers part 20 + * System call wrappers part 21 + * System call wrappers part 22 + * System call wrappers part 23 + * System call wrappers part 24 + * System call wrappers part 25 + * System call wrappers part 26 + * System call wrappers part 27 + * System call wrappers part 28 + * System call wrappers part 29 + * System call wrappers part 30 + * System call wrappers part 31 + * System call wrappers part 32 + * System call wrappers part 33 + * s390 specific system call wrappers + * x86: fix RIP printout in early_idt_handler + * Fix timeouts in sys_pselect7 + * USB: another unusual_devs entry for another bad Argosy storage device + * USB: storage: extend unusual range for 067b:3507 + * USB: storage: recognizing and enabling Nokia 5200 cell phoes + * HID: fix error condition propagation in hid-sony driver + * fix switch_names() breakage in short-to-short case + * nfs: remove redundant tests on reading new pages + * eCryptfs: check readlink result was not an error before using it + * mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003 + * x86: avoid theoretical vmalloc fault loop + * ath9k: enable RXing of beacons on STA/IBSS + * mm lockless pagecache barrier fix + * powerpc: Disable Collaborative Memory Manager for kdump + * ibmvfc: Delay NPIV login retry and add retries + * ibmvfc: Improve async event handling + * getrusage: RUSAGE_THREAD should return ru_utime and ru_stime + * ath5k: ignore the return value of ath5k_hw_noise_floor_calibration + * mm: fix assertion + * XFS: truncate readdir offsets to signed 32 bit values + * Linux 2.6.28.1 + * eCryptfs: Filename Encryption: Tag 70 packets + * eCryptfs: Filename Encryption: Header updates + * eCryptfs: Filename Encryption: Encoding and encryption functions + * eCryptfs: Filename Encryption: filldir, lookup, and readlink + * eCryptfs: Filename Encryption: mount option + * eCryptfs: Replace %Z with %z + * eCryptfs: Fix data types (int/size_t) + * eCryptfs: kerneldoc for ecryptfs_parse_tag_70_packet() + * eCryptfs: Clean up ecryptfs_decode_from_filename() + * fs/ecryptfs/inode.c: cleanup kerneldoc + * staging-p80211: Kill directly reference of netdev->priv + * staging-slicoss: Kill directly reference of netdev->priv + * staging-winbond: Kill directly reference of netdev->priv + * Staging: go7007: fixes due to video_usercopy api change + * Staging: go7007: fixes due v4l2_file_operations api change + * staging: correct dubious use of !x & y + * Staging: w35und: make wb35_probe() and wb35_disconnect() funtions static + * Staging: w35und: remove unused wb35_open() and wb35_close() functions + * Staging: w35und: use msleep() and udelay() + * Staging: w35und: remove the no-op pa_stall_execution macro + * Staging: w35und: purb typedef removal + * Staging: w35und: reg queue struct typedef removal + * Staging: w35und: wb35reg struct typedef removal + * Staging: w35und: padapter struct typedef removal + * Staging: w35und: merge wblinux struct to adapter + * Staging: w35und: wb35_probe() cleanup + * Staging: w35und: remove usb_submit_urb wrapper function + * Staging: w35und: remove usb_alloc_urb wrapper function + * w35und: remove dead code from wbusb_f.h + * Staging: w35und: remove true/false boolean macros + * Staging: w35und: OS_MEMORY_ALLOC wrapper removal + * Staging: w35und: usb_put_dev() is missing from wb35_disconnect() + * Staging: w35und: remove macro magic from MLME_GetNextPacket() + * Staging: w35und: plug memory leak in wbsoft_tx() + * Staging: w35und: move supported band initialization out of wb35_probe() + * Staging: w35und: remove timer wrappers + * Staging: w35und: remove atomic op wrappers + * Staging: w35und: remove memcpy/memcmp wrappers + * Staging: w35und: remove abs() and BIT() macros + * Staging: w35und: remove unused macros from common.h + * Staging: w35und: remove unused link status code + * Staging: w35und: #include cleanup + * Staging: w35und: remove some dead code + * Staging: w35und: move source files to one directory + * Staging: w35und: move struct wbsoft_priv to core.h and use it + * Staging: w35und: remove ->adapter from struct _HW_DATA_T + * Staging: w35und: clean up adapter.h a bit + * Staging: w35und: merge struct wb35_adapter to struct wbsoft_priv + * Staging: w35und: remove global struct ieee80211_hw + * Staging: w35und: inline DRIVER_AUTHOR and DRIVER_DESC macros + * Staging: w35und: clean up wblinux.c a bit + * Staging: w35und: remove unused ->ShutDowned member from struct + LOCAL_PARA + * Staging: w35und: move global wbsoft_enabled to struct wbsoft_priv + * Staging: w35und: move packet_came() to wb35rx.c + * Staging: w35und: remove ->skb_array from struct wbsoft_priv + * Staging: w35und: remove ->shutdown from struct wbsoft_priv + * Staging: w35und: make functions local to mds.c static + * Staging: w35und: make functions local to mlmetxrx.c static + * Staging: w35und: remove dead code from mto.c + * Staging: w35und: make functions local to wb35rx.c static + * Staging: w35und: make functions local to wb35tx.c static + * Staging: w35und: remove dead code from wbhal.c + * Staging: w35und: remove rxisr.c as dead code + * Staging: w35und: fix Kconfig + * Staging: w35und: fix config build warnings + * Staging: wlan-ng: Remove PCI/PLX/PCMCIA files. + * Staging: wlan-ng: Update Help text to mention prism3 devices. + * Staging: wlan-ng: Delete PCI/PLX/PCMCIA-specific code. + * Staging: wlan-ng: Make wlan-ng use WEXT mode by default. + * Staging: wlan-ng: Eliminate more <2.6 kernel support. + * Staging: wlan-ng: Eliminate all backwards-compatibility for <2.6.13 kernels. + * Staging: wlan-ng: Eliminate a boatload of tertiaryAP-only code. + * Staging: wlan-ng: Remove AP-only code from MLME functions. + * Staging: wlan-ng: Get rid of the MTU tests in the rx conversion path. + * Staging: wlan-ng: Eliminate one more rx mtu test. + * Staging: wlan-ng: Eliminate local 'version.h' + * Staging: wlan-ng: Eliminate usage of procfs. + * Staging: wlan-ng: Use standard kernel integer (u32/s32/etc) types. + * Staging: wlan-ng: Eliminate all backwards-compatible kernel code. + * Staging: wlan-ng: Wireless Extension support is mandatory. + * Staging: wlan-ng: use WIRELESS_EXT, not CONFIG_WIRELESS_EXT + * Staging: wlan-ng: Delete a large pile of now-unused code. + * Staging: wlan-ng: Delete a pile of unused mibs. And fix WEXT SET_TXPOWER. + * Staging: wlan-ng: Consolidate wlan-ng into a single module. + * Staging: wlan-ng: Purge all MIBs not used internally. + * Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start + * Staging: wlan-ng: prism2_usb.c always enable the card in probe_usb + * Staging: wlan-ng: hfa384x_usb.c use newest version of 384x_drvr_start + * Staging: wlan-ng: p80211wext.c add latest changes & remove extra nulls from wext_handlers + * Staging: wlan-ng: p80211wext don't set default key id twice + * Staging: wlan-ng: hfa384x_usbin_callback: check for hardware removed + * Staging: wlan-ng: p80211conv.c copy code from wlan-ng-devel branch to not drop packets + * Staging: wlan-ng: remove unused #include + * Staging: wlan-ng: p80211wext.c: use ARRAY_SIZE + * Staging: wlan-ng: fix compiler warnings + * Staging: wlan-ng: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction + * Staging: at76_usb: update drivers/staging/at76_usb w/ mac80211 port + * Staging: at76_usb: fix build breakage + * Staging: at76_usb: remove compiler warnings + * Staging: at76_usb: fix up all remaining checkpatch.pl warnings + * Staging: at76_usb: cleanup dma on stack issues + * Staging: poch: Block size bug fix + * Staging: poch: Update TODO list + * Staging: poch: Correct pages from bytes. + * Staging: poch: minor fixes + * Staging: poch: Fix build warnings + * Staging: poch: Rx control register init + * Staging: poch: Fix user space protocol syncing + * Staging: poch: Fine grained locking + * Staging: sxg: remove typedefs + * Staging: sxg: break the build in a cleaner way when !x86 + * Staging: sxg: update README + * staging: struct device - replace bus_id with dev_name(), dev_set_name() + * Staging: echo: remove typedefs + * Staging: echo: Lindent drivers/staging/echo + * Staging: go7007: saa7134 updates + * Staging: go7007: add sensoray 2250/2251 support + * Staging: go7007: Convert driver to use video_ioctl2 + * Staging: go7007: annotate code pointers + * Staging: go7007: fix minor build warnings + * Staging: go7007: small cleanup + * Staging: go7007: add some more v4l2 ioctls + * Staging: et131x: Cleanup et131x_debug.h defines + * Staging: et131x: fix build failure + * Staging: et131x: remove unused variable in et1310_tx.c + * Staging: usbip: cleanup kerneldoc + * Staging: slicoss: use kzalloc + * Staging: slicoss: use correct type for memory allcations + * Staging: slicoss: use request_firmware + * Staging: add agnx wireless driver + * Staging: agnx: fix build errors due to ssid removal + * Staging: agnx: fix build errors due to rate control API changes + * Staging: agnx: fix build warnings + * Staging: add otus Atheros wireless network driver + * Staging: otus: fix netdev->priv usage + * Staging: otus: fix name clash + * Staging: otus: fix urb callback function type + * Staging: otus: remove dependence on kernel version + * Staging: add rt2860 wireless driver + * Staging: rt2860: disable root hack for reading files + * Staging: rt2860: fix up netdev->priv usage + * Staging: rt2860: use standard bit-reverse function + * Staging: rt2860: Fix minor compiler warnings + * Staging: rt2860: enable WPA_SUPPLICANT support + * Staging: Add ServerEngines benet 10Gb ethernet driver + * Staging: benet: fix netif api breakage + * Staging: benet: fix up netdev->priv change + * Staging: benet: build is broken unless CONFIG_NETPOLL is enabled + * Staging: benet: patch to remove subdirectories + * Staging: benet: fix build errors when CONFIG_NETPOLL is off + * Staging: benet: fix build error. + * Staging: benet: patch to use offsetof() instead of AMAP_BYTE_OFFSET() + * Staging: benet: fix problems reported by checkpatch + * Staging: benet: cleanup a check while posting rx buffers + * Staging: add comedi core + * Staging: comedi: fix up a lot of checkpatch.pl warnings + * Staging: comedi: fix checkpatch.pl errors in comedi_fops.c + * Staging: comedi: fix build error in comedilib.h + * Staging: comedi: add kcomedilib to the tree + * Staging: comedi: set up infrastructure for individual drivers + * Staging: comedi: add local copy of interrupt.h + * Staging: comedi: add pci and usb wrapper header files + * Staging: comedi: comedi driver common function module + * Staging: comedi: add mite comedi pci driver + * Staging: comedi: add usb usbdux driver + * Staging: comedi: add usb usbduxfast driver + * Staging: comedi: add usb dt9812 driver + * Staging: comedi: add comedi_bond driver + * Staging: comedi: add comedi_test driver + * Staging: comedi: add comedi_parport driver + * Staging: comedi: dt9812: fix up a lot of coding style issues + * Staging: comedi: dt9812: remove dt9812.h + * Staging: comedi: dt9812: remove typedefs + * Staging: comedi: dt9812: fix sparse warnings + * Staging: comedi: usbdux: remove kernel version checks + * Staging: comedi: usbdux: code style cleanups + * Staging: comedi: usbdux: remove // comments + * Staging: comedi: usbdux: fix up printk calls + * Staging: comedi: usbdux: remove checkpatch.pl warnings + * Staging: comedi: usbdux: remove typedef + * Staging: comedi: usbdux: remove comedi usb wrappers + * Staging: comedi: usbduxfast: remove comedi usb wrappers + * Staging: comedi: dt9812: remove #ifdef that is not needed + * Staging: comedi: remove usb wrappers + * Staging: comedi: remove PCI wrappers + * Staging: comedi: add icp_multi driver + * Staging: comedi: add me4000 driver + * Staging: comedi: fix checkpatch.pl issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_fc.c + * Staging: comedi: remove typedefs from comedi_bond.c + * Staging: comedi: fix sparse issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_test.c + * Staging: comedi: fix sparse issues in comedi_test.c + * Staging: comedi: remove typedefs from comedi_test.c + * Staging: comedi: fix comedi_parport.c checkpatch.pl issues. + * Staging: comedi: fix comedi_fc.h checkpatch.pl issues. + * Staging: comedi: fix comedi_pci.h checkpatch.pl issues. + * Staging: comedi: comedi_pci.h: remove unneeded wrapper + * Staging: comedi: comedi_pci.h: remove comedi_pci_enable_no_regions + * Staging: comedi: comedi_pci.h: remove comedi_pci_disable_no_regions + * Staging: comedi: add s626 driver + * Staging: comedi: add rtd520 driver + * Staging: comedi: add me_daq driver + * Staging: comedi: me_daq: fix checkpatch.pl issues + * Staging: comedi: me_daq: remove typedefs + * Staging: comedi: me_daq: fix sparse issues + * Staging: comedi: fix checkpatch.pl warning in interrupt.h + * Staging: comedi: fix build if CONFIG_PROC_FS is not set + * Staging: add asus_oled driver + * Staging: asus_oled: fix build dependancy + * Staging: Add the Meilhaus ME-IDS driver package + * Staging: meilhaus: fix __symbol_get problems + * Staging: add lcd-panel driver + * Staging: panel: major checkpatch cleanup + * Staging: panel: remove ifdefs and code for pre-2.6 kernels + * Staging: panel: remove support for smartcards + * Staging: add Driver for Altera PCI Express Chaining DMA reference design + * Staging: add rtl8187se driver + * Staging: rtl8187se: remove unneeded files + * Staging: rtl8187se: make the built module be the proper name + * Staging: rtl8187se: remove duplicate pci ids + * Staging: me4000: switch to list_for_each*() + * Staging: usbip: switch to list_for_each_entry() + * Staging: add princeton instruments usb camera driver + * Staging: add mimio xi driver + * Staging: add rt2870 wireless driver + * Staging: rt2870: disable root hack for reading files + * Staging: rt2870: fix up netdev->priv usage + * Staging: add frontier tranzport and alphatrack drivers + * Staging: frontier: remove unused alphatrack_sysfs.c file + * Staging: frontier: fix compiler warnings + * Staging: add epl stack + * Staging: epl: run Lindent on all kernel/*.h files + * Staging: epl: run Lindent on all user/*.h files + * Staging: epl: run Lindent on *.h files + * Staging: epl: run Lindent on *.c files + * Staging: epl: hr timers all run in hard irq context now + * Staging: epl: fix netdev->priv b0rkage + * Staging: add android framework + * Staging: android: add binder driver + * Staging: android: binder: Fix gcc warnings about improper format specifiers for size_t in printk + * staging: android: binder: Fix use of euid + * Staging: android: add logging driver + * Staging: android: add ram_console driver + * Staging: android: add timed_gpio driver + * Staging: android: timed_gpio: Rename android_timed_gpio to timed_gpio + * Staging: android: remove dummy android.c driver + * Staging: android: add lowmemorykiller driver + * Staging: android: binder: fix build errors + * staging: __FUNCTION__ is gcc-specific, use __func__ + * V4L/DVB (10176a): Switch remaining clear_user_page users over to + clear_user_highpage + + [ Zhenyu Wang ] + + * agp/intel: add support for G41 chipset + + -- Tim Gardner Sun, 18 Jan 2009 20:22:54 -0700 + +linux (2.6.28-4.11) jaunty; urgency=low + + [ Mario Limonciello ] + + * SAUCE: Enable HDMI audio codec on Studio XPS 1340 + - LP: #309508 + + [ Tim Gardner ] + + * Fix armel d-i FTBSs + + [ Upstream Kernel Changes ] + + * USB: re-enable interface after driver unbinds + + -- Tim Gardner Tue, 13 Jan 2009 16:33:08 -0700 + +linux (2.6.28-4.10) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update kernel bootloader recommends: to prefer grub + - LP: #314004 + * SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control + - LP: #311716 + * SAUCE: test-suspend -- add the suspend test scripts + - LP: #316419 + + [ Colin Watson ] + + * Enable udebs for armel + + [ Tim Gardner ] + + * SAUCE: Dell laptop digital mic does not work, PCI 1028:0271 + - LP: #309508 + * Enable CIFS_XATTR=y and CONFIG_CIFS_POSIX=y + - LP: #220658 + + -- Tim Gardner Thu, 08 Jan 2009 10:38:22 -0700 + +linux (2.6.28-4.9) jaunty; urgency=low + + [ Tim Gardner ] + + * Restore DM_CRYPT, AES, ECB, and CBC as modules. This fixes + some installer issues with encrypted /home and Private directories. + * Take one more stab at building armel without module or ABI errors. + + -- Tim Gardner Tue, 06 Jan 2009 08:38:23 -0700 + +linux (2.6.28-4.8) jaunty; urgency=low + + * Fix i386/amd64 FTBS by ignoring all module and ABI changes, + not something you would normally do, but I'm sure the ABI + has not changed. This will probably also allow the ARM builds to complete. + + -- Tim Gardner Mon, 05 Jan 2009 14:42:58 -0700 + +linux (2.6.28-4.7) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_ATH5K=m for i386/amd64 + - LP: #306719 + * Build all i386/amd64 AGP/DRM components as modules. + - LP: #312721 + * git commands are now installed outside the default $PATH + Use 'git CMD' instead of 'git-CMD'. + * Build in most PATA/SATA drivers. This should allow most i386/amd64 systems to boot + without an initramfs, though some support work is still required in initramfs-tools + and grub. + - LP: #311730 + + -- Tim Gardner Fri, 02 Jan 2009 07:33:09 -0700 + +linux (2.6.28-4.6) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_X86_E_POWERSAVER=m for i386 generic + - LP: #237405 + * Build i386 AGP drivers as modules + - LP: #312721 + * Build i386 DRM as a module + - LP: #312721 + + [ Upstream Kernel Changes ] + + * drm/i915: Add missing userland definitions for gem init/execbuffer. + - LP: #308387 + + -- Tim Gardner Mon, 29 Dec 2008 09:16:47 -0700 + +linux (2.6.28-4.5) jaunty; urgency=low + + [ Andy Whitcroft ] + + * clean up module dependancy information on package removal/purge + - LP: #300773 + + [ Tim Gardner ] + + * Update iscsitarget to 0.4.17 + * Build in ext{234} + * Build in Crypto modules AES, CBC, ECB + * Build in ACPI AC,BATTERY,BUTTON,FAN,PCI_SLOT,PROCESSOR,SBS,THERMAL,WMI + * Build in AGP intel,via,sis,ali,amd,amd64,efficeon,nvidia,sworks + * Build in ata,dev_dm,dev_loop,dev_md,dev_sd,dev_sr + * Build in BT l2cap,rfcomm,sco + * Reduce CONFIG_LEGACY_PTY_COUNT to 0 + * Build in CDROM_PKTCDVD and CHR_DEV_SG + * Build in CPU_FREQ + GOV_CONSERVATIVE,GOV_ONDEMAND,GOV_POWERSAVE,GOV_USERSPACE,STAT,TABLE + * Build in DM CRYPT,MIRROR,MULTIPATH,SNAPSHOT + * Build in DRM + * Build in HID + * Build in HOTPLUG PCI,PCIE + * Build in I2C + * Build in IEEE1394 OHCI1394 + * Build in INPUT EVDEV + * Build in IPV6 + * Build in MMC + * Build in PACKET + * Enable both IEEE1394 (Firewire) stacks as modules + - LP: #276463 + * Disable SUNRPC_REGISTER_V4 + - LP: #306016 + * Enable dm-raid4-5 + - LP: #309378 + * Build in PPP + * Build in RFKILL + * Build in USB SERIAL + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28 + + -- Tim Gardner Thu, 18 Dec 2008 21:18:44 -0700 + +linux (2.6.28-3.4) jaunty; urgency=low + + [ Tim Gardner ] + + * Build ecryptfs into the kernel + - LP: #302870 + * Deprecated gnbd + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc8 + + -- Tim Gardner Wed, 10 Dec 2008 22:45:13 -0700 + +linux (2.6.28-2.3) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update the templates so that we have spaces following the title line + + [ Tim Gardner ] + + * Add upload number to kernel version signature. This has the side effect + of renaming kernel packages back to the original way, e.g., without '-ub' + in the name. + + -- Tim Gardner Thu, 04 Dec 2008 12:18:31 -0700 + +linux (2.6.28-2.2) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) version: Implement version_signature proc file." + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: serial: RS485 ioctl structure uses __u32 include linux/types.h + - LP: #303711 + + [ Tim Gardner ] + + * UBUNTU: Removed CONFIG_DRM_VIA_CHROME9 since it is upstream. + * UBUNTU: Removed ubuntu/via_chrome9 + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc7 + + -- Tim Gardner Tue, 02 Dec 2008 07:33:32 -0700 + +linux (2.6.28-1.1) jaunty; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + * SAUCE: Adds support for COMPAL JHL90 webcam + * Map armel to arm to all editconfigs to work correctly + * Add armel to getabis for completeness sake + * Add -ub to our versioning to allow kerneloops.org to identify us + + [ Andy Whitcroft ] + + * Fix Vcs-Git path for the kernel repository. + - LP: #296915 + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + - LP: #159241 + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * SAUCE: (no-up) Export lookup_has for aufs + * SAUCE: (no-up) Modularize vesafb + * ubuntu: Config files + * Disable some modules that need porting to 2.6.28 + * ubuntu: Fixup headers creation to include arch/*/include + * ubuntu/module-check: Ignore comment lines + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ cking ] + + * SAUCE: Enable speedstep for sonoma processors. + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: cx88: Support Leadtek WinFast DTV2000 H version J. + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + * SAUCE: appleir: Enable driver for new MacBook Pro + + [ Colin Watson ] + + * Enable configfs, fuse, jfs, reiserfs, and xfs for armel + * Extend debian/d-i/ modules handling to make armel easier to support + * Create udebs for armel + + [ Fabio M. Di Nitto ] + + * ubuntu: update GFS Cluster File System + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + * Add Dell Dimension 9200 reboot quirk + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + * SAUCE: Revert aufs changes from AppArmor merge + + [ Mohamed Abbas ] + + * SAUCE: iwlagn -- fix rfkill when on when driver loaded + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * gfs1: GFS1 can't create more than 4kb file + * uvcvideo: Commit streaming parameters when enabling the video stream. + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + * SAUCE: Update Wacom tablet driver to 1.49 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + * SAUCE: ipw2200: change default policy for auto-associate + * Dell Wireless 365 needs BTUSB_RESET quirk. + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + * Disabled ubuntu/e1000e config + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * Revert "x86, early_ioremap: fix fencepost error" + * mac80211: fix two issues in debugfs + * iwl3945: do not send scan command if channel count zero + + -- Ben Collins Fri, 07 Nov 2008 09:37:42 -0700 + +linux (2.6.27-8.17) intrepid-proposed; urgency=low + + [ John W. Linville ] + + * SAUCE: iwlagn: avoid sleep in softirq context + -LP: #286285 + + [ Tim Gardner ] + + * Dell Wireless 365 needs BTUSB_RESET quirk. + - LP: #293670 + * SAUCE: ALSA: hda: make a STAC_DELL_EQ option (version 2) + - LP: #293271 + + [ Upstream Kernel Changes ] + + * iwlagn: downgrade BUG_ON in interrupt + * Input: atkbd - expand Latitude's force release quirk to other Dells + * fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles + * modules: fix module "notes" kobject leak + * Driver core: Fix cleanup in device_create_vargs(). + * Driver core: Clarify device cleanup. + * ath9k/mac80211: disallow fragmentation in ath9k, report to userspace + * md: Fix rdev_size_store with size == 0 + * xfs: fix remount rw with unrecognized options + * OHCI: Allow broken controllers to auto-stop + * USB: OHCI: fix endless polling behavior + * USB: Fix s3c2410_udc usb speed handling + * USB: EHCI: log a warning if ehci-hcd is not loaded first + * usb gadget: cdc ethernet notification bugfix + * usb: musb_hdrc build fixes + * drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) + * DVB: au0828: add support for another USB id for Hauppauge HVR950Q + * DVB: sms1xxx: support two new revisions of the Hauppauge WinTV + MiniStick + * security: avoid calling a NULL function pointer in + drivers/video/tvaudio.c + * Linux 2.6.27.3 + -LP: #294152 + + * gpiolib: fix oops in gpio_get_value_cansleep() + * edac cell: fix incorrect edac_mode + * x86 ACPI: fix breakage of resume on 64-bit UP systems with SMP kernel + * sched: fix the wrong mask_len + * USB: cdc-wdm: make module autoload work + * USB: don't rebind drivers after failed resume or reset + * USB: fix memory leak in cdc-acm + * USB: Speedtouch: add pre_reset and post_reset routines + * dm kcopyd: avoid queue shuffle + * dm snapshot: fix primary_pe race + * amd_iommu: fix nasty bug that caused ILLEGAL_DEVICE_TABLE_ENTRY errors + * CIFS: fix saving of resume key before CIFSFindNext + * netfilter: xt_iprange: fix range inversion match + * netfilter: snmp nat leaks memory in case of failure + * netfilter: restore lost ifdef guarding defrag exception + * anon_vma_prepare: properly lock even newly allocated entries + * hvc_console: Fix free_irq in spinlocked section + * ACPI Suspend: Enable ACPI during resume if SCI_EN is not set + * ACPI suspend: Blacklist HP xw4600 Workstation for old code ordering + * ACPI suspend: Always use the 32-bit waking vector + * proc: fix vma display mismatch between /proc/pid/{maps,smaps} + * SCSI: scsi_dh: add Dell product information into rdac device handler + * PCI hotplug: cpqphp: fix kernel NULL pointer dereference + * V4L/DVB (9300): pvrusb2: Fix deadlock problem + * Linux 2.6.27.4 + -LP: #294155 + + -- Tim Gardner Tue, 04 Nov 2008 12:16:07 -0700 + +linux (2.6.27-7.16) intrepid-security; urgency=low + + [ Tim Gardner ] + + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + - LP: #275860 + + [ Upstream Kernel Changes ] + + * ext[234]: Avoid printk floods in the face of directory corruption + (CVE-2008-3528) + + -- Tim Gardner Mon, 03 Nov 2008 13:34:42 -0700 + +linux (2.6.27-7.15) intrepid-security; urgency=low + + [ Upstream Kernel Changes ] + + * tcp: Restore ordering of TCP options for the sake of inter-operability + - LP: #264019 + + -- Tim Gardner Mon, 27 Oct 2008 19:28:06 -0600 + +linux (2.6.27-7.14) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable ath5k in 2.6.27 + - LP: #288148 + + -- Tim Gardner Thu, 23 Oct 2008 07:40:43 -0600 + +linux (2.6.27-7.13) intrepid; urgency=low + + [ Stefan Bader ] + + * gfs1: GFS1 can't create more than 4kb file + + [ Tim Gardner ] + + * Revert "SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors + bitmap.". Use upstream commit to avoid future conflicts. + * Revert "STABLE queue: mac80211: fix two issues in debugfs". + Use upstream commit to avoid future conflicts. + * Revert "x86, early_ioremap: fix fencepost error" + Use upstream commit to avoid future conflicts. + + [ Upstream Kernel Changes ] + + * sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq + * x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + * mac80211: fix two issues in debugfs + * Fix barrier fail detection in XFS + * tty: Termios locking - sort out real_tty confusions and lock reads + * CIFS: make sure we have the right resume info before calling + CIFSFindNext + * rfkill: update LEDs for all state changes + * libertas: clear current command on card removal + * b43legacy: Fix failure in rate-adjustment mechanism + * x86, early_ioremap: fix fencepost error + * x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC + * x86: improve UP kernel when CPU-hotplug and SMP is enabled + * sky2: Fix WOL regression + * netdrvr: atl1e: Don't take the mdio_lock in atl1e_probe + * Linux 2.6.27.2 + + [ Amit Kucheria ] + + * Ubuntu: agp: Fix stolen memory counting on G4X. + -LP: 285572 + + [ Scott Remnant ] + + * add MODULE_ALIAS to load ipmi_devintf with ipmi_si + + -- Tim Gardner Sun, 19 Oct 2008 10:06:21 -0600 + +linux (2.6.27-7.12) intrepid; urgency=low + + [ Chuck Short ] + + * xen: Add xen modules to virtual flavours. + + [ Mario Limonciello ] + + * SAUCE: Add back in lost commit for Apple BT Wireless Keyboard + - LP: #162083 + + [ Tim Gardner ] + + * Remove depmod created files from packages. + - LP: #250511 + * Changed default TCP congestion algorithm to 'cubic' (again) + - LP: #278801 + * Update configs for 'disable CONFIG_DYNAMIC_FTRACE' + - LP: #263555 + + [ Upstream Kernel Changes ] + + * x86: register a platform RTC device if PNP doesn't describe it + * disable CONFIG_DYNAMIC_FTRACE due to possible memory corruption on + module unload + + -- Tim Gardner Fri, 17 Oct 2008 11:25:39 -0600 + +linux (2.6.27-7.11) intrepid; urgency=low + + [ Amit Kucheria ] + + * STABLE queue: mac80211: fix two issues in debugfs + - LP: #275227 + * SAUCE: Adds support for COMPAL JHL90 webcam + + [ Ben Collins ] + + * SAUCE: (no-up) x86: Quiet "Kernel alive" messages + - LP: #39985 + * SAUCE: (no-up) Modularize vesafb + * build/config: Enable vesafb module + * build: Switch to vesafb as preferred. + + [ Leann Ogasawara ] + + * Add Dell Dimension 9200 reboot quirk + - LP: #271370 + + [ Michael Haas ] + + * SAUCE: Revert aufs changes from AppArmor merge + + [ Tim Gardner ] + + * fix virtio udeb layout + - LP: #257739 + * Enabled CONFIG_EXT4DEV_FS=m + * Changed default TCP congestion algorithm to 'cubic' + - LP: #278801 + * SAUCE: ipw2200: change default policy for auto-associate + - LP: #264104 + + [ Upstream Kernel Changes ] + + * x86, early_ioremap: fix fencepost error + - LP: #263543 + + -- Tim Gardner Sat, 11 Oct 2008 08:07:42 -0600 + +linux (2.6.27-7.10) intrepid; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: do transaction from interrupt context + - LP: #277802 + + [ Ben Collins ] + + * build/d-i: Change virtio-modules udeb to prio standard + + [ Colin Ian King ] + + * SAUCE: Blacklist IBM 2656 in serio/i8042 + - LP: #21558 + + [ Henrik Rydberg ] + + * Revert "SAUCE: applesmc: Add MacBookAir" + * SAUCE: [PATCH 1/5] hwmon: applesmc: Specified number of bytes to read + should match actual + * SAUCE: [PATCH 2/5] hwmon: applesmc: Fix the 'wait status failed: c != + 8' problem + * SAUCE: [PATCH 3/5] hwmon: applesmc: Prolong status wait + * SAUCE: [PATCH 4/5] hwmon: applesmc: Allow for variable ALV0 and ALV1 + package length + * SAUCE: [PATCH 5/5] hwmon: applesmc: Add support for Macbook Air + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 4 + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 3 + * SAUCE: hwmon: applesmc: Lighter wait mechanism, drastic improvement + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + - LP: #200210 + + [ Tim Gardner ] + + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + - LP: #278794 + * SAUCE: Update Wacom tablet driver to 1.49 + - LP: #260675 + * SAUCE: ALPS touchpad for Dell Latitude E6500/E6400 + - LP: #270643 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + - LP: #263309 + + [ Upstream Kernel Changes ] + + * ath9k: fix oops on trying to hold the wrong spinlock + * [Bluetooth] Fix double frees on error paths of btusb and bpa10x drivers + * [Bluetooth] Add reset quirk for new Targus and Belkin dongles + * [Bluetooth] Add reset quirk for A-Link BlueUSB21 dongle + * Revert "ax25: Fix std timer socket destroy handling." + * ax25: Quick fix for making sure unaccepted sockets get destroyed. + * netrom: Fix sock_orphan() use in nr_release + * Revert "V4L/DVB (8904): cx88: add missing unlock_kernel" + * SLOB: fix bogus ksize calculation + * net: only invoke dev->change_rx_flags when device is UP + * tcp: Fix possible double-ack w/ user dma + * net: Fix netdev_run_todo dead-lock + * tcp: Fix tcp_hybla zero congestion window growth with small rho and large cwnd. + * [MIPS] Sibyte: Register PIO PATA device only for Swarm and Litte Sur + * eeepc-laptop: Fix hwmon interface + * hwmon: (it87) Prevent power-off on Shuttle SN68PT + * hwmon: Define sysfs interface for energy consumption register + * hwmon: (adt7473) Fix some bogosity in documentation file + * hwmon: (abituguru3) Enable reading from AUX3 fan on Abit AT8 32X + * hwmon: (abituguru3) Enable DMI probing feature on Abit AT8 32X + * [CPUFREQ] correct broken links and email addresses + * SLOB: fix bogus ksize calculation fix + * Don't allow splice() to files opened with O_APPEND + * Linux 2.6.27 + + -- Tim Gardner Wed, 08 Oct 2008 21:19:34 -0600 + +linux (2.6.27-6.9) intrepid; urgency=low + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + - LP: #269921 + + [ Stefan Bader ] + + * Update configuration files to be compliant to desktop specs + - LP: #279019 + + [ Tim Gardner ] + + * Add support in e1000e for a couple of ICH10 PCI IDs + * Enable CONFIG_INPUT_PCSPKR=m + - LP: #275453 + + [ Upstream Kernel Changes ] + + * V4L/DVB (8559a): Fix a merge conflict at gspca/sonixb + * V4L/DVB (8789): wm8739: remove wrong kfree + * V4L/DVB (8883): w9968cf: Fix order of usb_alloc_urb validation + * V4L/DVB (8884): em28xx-audio: fix memory leak + * V4L/DVB (8885): cpia2_usb: fix memory leak + * V4L/DVB (8886): ov511: fix memory leak + * V4L/DVB (8887): gspca: fix memory leak + * V4L/DVB (8892): pvrusb2: Handle USB ID 2040:2950 same as 2040:2900 + * V4L/DVB (8904): cx88: add missing unlock_kernel + * V4L/DVB (8905): ov511: fix exposure sysfs attribute bug + * V4L/DVB (8909): gspca: PAC 7302 webcam 093a:262a added. + * hrtimer: migrate pending list on cpu offline + * hrtimer: fix migration of CB_IRQSAFE_NO_SOFTIRQ hrtimers + * hrtimer: mark migration state + * hrtimer: prevent migration of per CPU hrtimers + * [IA64] Put the space for cpu0 per-cpu area into .data section + * powerpc: Fix PCI in Holly device tree + * powerpc: Fix failure to shutdown with CPU hotplug + * mfd: Fix Kconfig accroding to the new gpiolib symbols + * mfd: Fix asic3 compilation + * x86: fix typo in enable_mtrr_cleanup early parameter + * ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space + * iucv: Fix mismerge again. + * ALSA: ASoC: Fix cs4270 error path + * ALSA: hda - Fix model for Dell Inspiron 1525 + * sctp: Fix kernel panic while process protocol violation parameter + * x86: Fix broken LDT access in VMI + * x86, vmi: fix broken LDT access + * tcp: Fix NULL dereference in tcp_4_send_ack() + * ipv6: NULL pointer dereferrence in tcp_v6_send_ack + * XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep + * af_key: Free dumping state on socket close + * dm: always allow one page in dm_merge_bvec + * dm: cope with access beyond end of device in dm_merge_bvec + * dm mpath: add missing path switching locking + * MN10300: Fix IRQ handling + * pxa2xx_spi: fix build breakage + * e1000e: write protect ICHx NVM to prevent malicious write/erase + * powerpc: Fix boot hang regression on MPC8544DS + * ASoC: Set correct name for WM8753 rec mixer output + * ALSA: snd-powermac: mixers for PowerMac G4 AGP + * ALSA: snd-powermac: HP detection for 1st iMac G3 SL + * fbcon: fix monochrome color value calculation + * inotify: fix lock ordering wrt do_page_fault's mmap_sem + * braille_console: only register notifiers when the braille console is used + * fix error-path NULL deref in alloc_posix_timer() + * memory hotplug: missing zone->lock in test_pages_isolated() + * mm: tiny-shmem nommu fix + * mm: handle initialising compound pages at orders greater than MAX_ORDER + * e1000e: reset swflag after resetting hardware + * e1000e: do not ever sleep in interrupt context + * e1000e: remove phy read from inside spinlock + * e1000e: drop stats lock + * e1000e: debug contention on NVM SWFLAG + * e1000e: update version from k4 to k6 + * Check mapped ranges on sysfs resource files + * e1000e: Fix incorrect debug warning + * [MIPS] Build fix: Fix irq flags type + * [MIPS] SMTC: Build fix: Fix filename in Makefile + * [MIPS] SMTC: Fix holes in SMTC and FPU affinity support. + * [MIPS] SMTC: Close tiny holes in the SMTC IPI replay system. + * [MIPS] SMTC: Fix SMTC dyntick support. + * [S390] nohz: Fix __udelay. + * [S390] qdio: prevent stack clobber + * Fix init/main.c to use regular printk with '%pF' for initcall fn + * x86 setup: correct segfault in generation of 32-bit reloc kernel + * selinux: Fix an uninitialized variable BUG/panic in selinux_secattr_to_sid() + * rtc: fix kernel panic on second use of SIGIO nofitication + * fbdev: fix recursive notifier and locking when fbdev console is blanked + * orion_spi: fix handling of default transfer speed + * include/linux/stacktrace.h: declare struct task_struct + * cpusets: remove pj from cpuset maintainers + * MAINTAINERS: add mailing list for man-pages + * SubmitChecklist: interfaces changes should CC linux-api@ + * Documentation/HOWTO: info about interface changes should CC linux-api@vger + * dw_dmac: fix copy/paste bug in tasklet + * leds-fsg: change order of initialization and deinitialization + * leds-pca955x: add proper error handling and fix bogus memory handling + * ACPI: Make /proc/acpi/wakeup interface handle PCI devices (again) + * clockevents: check broadcast tick device not the clock events device + * V4L/DVB (8919): cx18: Fix tuner audio input for Compro H900 cards + * V4L/DVB (8926): gspca: Bad fix of leak memory (changeset 43d2ead315b1). + * V4L/DVB (8933): gspca: Disable light frquency for zc3xx cs2102 Kokom. + * V4L/DVB (8935): em28xx-cards: Remove duplicate entry (EM2800_BOARD_KWORLD_USB2800) + * V4L/DVB (8955): bttv: Prevent NULL pointer dereference in radio_open + * V4L/DVB (8957): zr36067: Restore the default pixel format + * V4L/DVB (8958): zr36067: Return proper bytes-per-line value + * V4L/DVB (8960): drivers/media/video/cafe_ccic.c needs mm.h + * V4L/DVB (8961): zr36067: Fix RGBR pixel format + * V4L/DVB (8963): s2255drv field count fix + * V4L/DVB (8967): Use correct XC3028L firmware for AMD ATI TV Wonder 600 + * V4L/DVB (8978): sms1xxx: fix product name for Hauppauge WinTV MiniStick + * V4L/DVB (8979): sms1xxx: Add new USB product ID for Hauppauge WinTV MiniStick + * V4L/DVB (9029): Fix deadlock in demux code + * V4L/DVB (9037): Fix support for Hauppauge Nova-S SE + * V4L/DVB (9043): S5H1420: Fix size of shadow-array to avoid overflow + * V4L/DVB (9053): fix buffer overflow in uvc-video + * V4L/DVB (9075): gspca: Bad check of returned status in i2c_read() spca561. + * V4L/DVB (9080): gspca: Add a delay after writing to the sonixj sensors. + * V4L/DVB (9092): gspca: Bad init values for sonixj ov7660. + * V4L/DVB (9099): em28xx: Add detection for K-WORLD DVB-T 310U + * V4L/DVB (9103): em28xx: HVR-900 B3C0 - fix audio clicking issue + * x86: gart iommu have direct mapping when agp is present too + * ide-cd: temporary tray close fix + * ide-dma: fix ide_build_dmatable() for TRM290 + * IDE: Fix platform device registration in Swarm IDE driver (v2) + * ide-cd: Optiarc DVD RW AD-7200A does play audio + * ide: workaround for bogus gcc warning in ide_sysfs_register_port() + * [MIPS] Fix CMP Kconfig configuration and mark as broken. + * [MIPS] IP27: Fix build errors if CONFIG_MAPPED_KERNEL=y + * x86 ACPI: Blacklist two HP machines with buggy BIOSes + * kgdb, x86: Avoid invoking kgdb_nmicallback twice per NMI + * kgdb: call touch_softlockup_watchdog on resume + * atmel-mci: Initialize BLKR before sending data transfer command + * Marker depmod fix core kernel list + * Linux 2.6.27-rc9 + + -- Tim Gardner Sun, 05 Oct 2008 21:27:49 -0600 + +linux (2.6.27-5.8) intrepid; urgency=low + + [ Amit Kucheria ] + + * Update AUFS-related Kconfig + - LP: #264048 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * apply (modified) lhash.patch from AUFS to export __lookup_hash() + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + + [ Tim Gardner ] + + * Enabled CONFIG_IPWIRELESS + - LP: #274748 + * Enabled CONFIG_E1000E, disabled CONFIG_E1000E_NEW + This takes advantage of the upstream NVM protection fix in + commit 4a7703582836f55a1cbad0e2c1c6ebbee3f9b3a7. + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP + initialization completes. + * PCI: Fix pcie_aspm=force + * PCI: fix compiler warnings in pci_get_subsys() + * UBIFS: create the name of the background thread in every case + * UBIFS: TNC / GC race fixes + * UBIFS: remove incorrect assert + * UBIFS: fix printk format warnings + * AMD IOMMU: set iommu sunc flag after command queuing + * AMD IOMMU: protect completion wait loop with iommu lock + * sparc64: Fix disappearing PCI devices on e3500. + * x86, oprofile: BUG scheduling while atomic + * ALSA: ASoC: Fix at32-pcm build breakage with PM enabled + * ath9k: connectivity is lost after Group rekeying is done + * wireless: zd1211rw: add device ID fix wifi dongle "trust nw-3100" + * [IA64] Ski simulator doesn't need check_sal_cache_flush + * [IA64] kexec fails on systems with blocks of uncached memory + * ath9k: Fix IRQ nobody cared issue with ath9k + * [Bluetooth] Fix I/O errors on MacBooks with Broadcom chips + * [Bluetooth] Fix wrong URB handling of btusb driver + * [Bluetooth] Fix USB disconnect handling of btusb driver + * sparc64: Fix missing devices due to PCI bridge test in + of_create_pci_dev(). + * [WATCHDOG] ibmasr: remove unnecessary spin_unlock() + * [WATCHDOG] wdt285: fix sparse warnings + * [WATCHDOG] unlocked_ioctl changes + * x86: fix 27-rc crash on vsmp due to paravirt during module load + * sched: fix init_hrtick() section mismatch warning + * clockevents: prevent cpu online to interfere with nohz + * x86: prevent stale state of c1e_mask across CPU offline/online + * clockevents: prevent stale tick_next_period for onlining CPUs + * clockevents: check broadcast device not tick device + * clockevents: prevent mode mismatch on cpu online + * x86: prevent C-states hang on AMD C1E enabled machines + * x86: c1e_idle: don't mark TSC unstable if CPU has invariant TSC + * timers: fix build error in !oneshot case + * ALSA: ASoC: maintainers - update email address for Liam Girdwood + * ibmasr: remove unnecessary spin_unlock() + * smb.h: do not include linux/time.h in userspace + * kernel-doc: allow structs whose members are all private + * kexec: fix segmentation fault in kimage_add_entry + * Documentation/DMA-mapping.txt: update for pci_dma_mapping_error() + changes + * sys_paccept: disable paccept() until API design is resolved + * mm: tiny-shmem fix lock ordering: mmap_sem vs i_mutex + * Documentation/sysctl/kernel.txt: fix softlockup_thresh description + * memcg: check under limit at shrink_usage + * atmel_serial: update the powersave handler to match serial core + * [SCSI] Fix hang with split requests + * USB Storage: Sierra: Non-configurable TRU-Install + * USB Serial: Sierra: Device addition & version rev + * USB: ehci: fix some ehci hangs and crashes + * USB: Fix the Nokia 6300 storage-mode. + * USB: Correct Sierra Wireless USB EVDO Modem Device ID + * USB: fix hcd interrupt disabling + * USB: update of Documentation/usb/anchors.txt + * usb gadget: fix omap_udc DMA regression + * USB: Fixing Nokia 3310c in storage mode + * usb: musb: fix include path + * USB: fix EHCI periodic transfers + * usb-serial: Add Siemens EF81 to PL-2303 hack triggers + * USB: SERIAL CP2101 add device IDs + * USB: unusual_devs addition for RockChip MP3 player + * USB: fsl_usb2_udc: fix VDBG() format string + * usb serial: ti_usb_3410_5052 obviously broken by firmware changes + * USB: ftdi_sio: Add 0x5050/0x0900 USB IDs (Papouch Quido USB 4/4) + * USB: serial: add ZTE CDMA Tech id to option driver + * USB Serial: Sierra: Add MC8785 VID/PID + * USB: drivers/usb/musb/: disable it on SuperH + * usb: ftdi_sio: add support for Domintell devices + * usb: unusual devs patch for Nokia 5310 Music Xpress + * USB: revert recovery from transient errors + * [MIPS] au1000: Fix gpio direction + * [MIPS] Fixe the definition of PTRS_PER_PGD + * x86: prevent stale state of c1e_mask across CPU offline/online, fix + * x86: disable apm on the olpc + * i2c-powermac: Fix section for probe and remove functions + * i2c-dev: Return correct error code on class_create() failure + * i2c: Fix mailing lists in two MAINTAINERS entries + * ath9k: disable MIB interrupts to fix interrupt storm + * 9p: implement proper trans module refcounting and unregistration + * 9p-trans_fd: fix trans_fd::p9_conn_destroy() + * 9p-trans_fd: clean up p9_conn_create() + * 9p-trans_fd: don't do fs segment mangling in p9_fd_poll() + * 9p-trans_fd: fix and clean up module init/exit paths + * 9p: introduce missing kfree + * 9p: use an IS_ERR test rather than a NULL test + * 9p: fix put_data error handling + * netfilter: ip6t_{hbh,dst}: Rejects not-strict mode on rule insertion + * MN10300: Move asm-arm/cnt32_to_63.h to include/linux/ + * MN10300: Make sched_clock() report time since boot + * ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() + * ALSA: remove unneeded power_mutex lock in snd_pcm_drop + * IPoIB: Fix crash when path record fails after path flush + * [XFS] Fix extent list corruption in xfs_iext_irec_compact_full(). + * [XFS] Remove xfs_iext_irec_compact_full() + * kgdb: could not write to the last of valid memory with kgdb + * kgdb, x86, arm, mips, powerpc: ignore user space single stepping + * kgdb, x86_64: gdb serial has BX and DX reversed + * kgdb, x86_64: fix PS CS SS registers in gdb serial + * kgdboc,tty: Fix tty polling search to use name correctly + * ARM: Delete ARM's own cnt32_to_63.h + * m32r: remove the unused NOHIGHMEM option + * m32r: don't offer CONFIG_ISA + * m32r: export empty_zero_page + * m32r: export __ndelay + * m32r/kernel/: cleanups + * [MIPS] au1000: Make sure GPIO value is zero or one + * [MIPS] IP27: Switch to dynamic interrupt routing avoding panic on + error. + * [MIPS] BCM47xx: Fix build error due to missing PCI functions + * [SSB] Initialise dma_mask for SSB_BUSTYPE_SSB devices + * Swarm: Fix crash due to missing initialization + * ide-tape: fix vendor strings + * ide: note that IDE generic may prevent other drivers from attaching + * cdrom: update ioctl documentation + * [SCSI] qlogicpti: fix sg list traversal error in continuation entries + * sata_nv: reinstate nv_hardreset() for non generic controllers + * scsi: fix fall out of sg-chaining patch in qlogicpti + * ALSA: make the CS4270 driver a new-style I2C driver + * ALSA: ASoC: Fix another cs4270 error path + * Fix NULL pointer dereference in proc_sys_compare + * kconfig: fix silentoldconfig + * kconfig: readd lost change count + * mm owner: fix race between swapoff and exit + * Linux 2.6.27-rc8 + * e1000e: write protect ICHx NVM to prevent malicious write/erase + + -- Amit Kucheria Tue, 30 Sep 2008 18:22:35 +0300 + +linux (2.6.27-4.7) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add gfs1 to perm blacklist + * build/abi: Ignored changes in gfs2 symbols + + [ Fabio M. Di Nitto ] + + * Revert "SAUCE: Export gfs2 symbols required for gfs1 kernel module" + * ubuntu: update GFS Cluster File System + + [ Stefan Bader ] + + * SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + - LP: #276334 + + [ Tim Gardner ] + + * Revert "Disable e1000e until the NVRAM corruption problem is found." + * Add atl1e and atl2 to Debian installer bits + - LP: #273904 + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + - LP: #263555 + + -- Tim Gardner Fri, 26 Sep 2008 20:51:22 -0600 + +linux (2.6.27-4.6) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable e1000e until the NVRAM corruption problem is found. + - LP: #263555 + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + + -- Ben Collins Tue, 23 Sep 2008 09:53:57 -0400 + +linux (2.6.27-4.5) intrepid; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support" + * udf: Fix lock inversion between iprune_mutex and alloc_mutex (v2) + * udf: Fix error paths in udf_new_inode() + * [SCSI] sd: select CRC_T10DIF only when necessary + * [SCSI] zfcp: Fix request queue locking + * [SCSI] zfcp: Correctly query end flag in gpn_ft response + * [SCSI] zfcp: Simplify ccw notify handler + * [SCSI] zfcp: Fix reference counter for remote ports + * [SCSI] zfcp: channel cannot be detached due to refcount imbalance + * [SCSI] zfcp: Remove duplicated unlikely() macros. + * [SCSI] scsi_dh: make check_sense return ADD_TO_MLQUEUE + * [SCSI] make scsi_check_sense HARDWARE_ERROR return ADD_TO_MLQUEUE on + retry + * [SCSI] fix check of PQ and PDT bits for WLUNs + * pcm037: add rts/cts support for serial port + * i.MX serial: fix init failure + * imx serial: set RXD mux bit on i.MX27 and i.MX31 + * imx serial: fix rts handling for non imx1 based hardware + * mlx4_core: Set RAE and init mtt_sz field in FRMR MPT entries + * udf: add llseek method + * PCI/iommu: blacklist DMAR on Intel G31/G33 chipsets + * PCI: Fix printk warnings in probe.c + * PCI: Fix printk warnings in setup-bus.c + * PCI Hotplug: fakephp: fix deadlock... again + * clockevents: remove WARN_ON which was used to gather information + * ocfs2: Fix a bug in direct IO read. + * arch/x86/kernel/kdebugfs.c: introduce missing kfree + * [IA64] fix compile failure with non modular builds + * [IA64] fix up bte.h + * [IA64] arch/ia64/sn/pci/tioca_provider.c: introduce missing kfree + * PCI: fix pciehp_free_irq() + * [IA64] prevent ia64 from invoking irq handlers on offline CPUs + * ide: Fix pointer arithmetic in hpt3xx driver code (3rd try) + * add deprecated ide-scsi to feature-removal-schedule.txt + * swiotlb: fix back-off path when memory allocation fails + * sparc64: Fix interrupt register calculations on Psycho and Sabre. + * VIDEO_SH_MOBILE_CEU should depend on HAS_DMA + * m68k: Update defconfigs for 2.6.27-rc6 + * sparc32: Fix function signature of of_bus_sbus_get_flags(). + * sched: fix 2.6.27-rc5 couldn't boot on tulsa machine randomly + * sched: fix deadlock in setting scheduler parameter to zero + * KVM: SVM: fix random segfaults with NPT enabled + * KVM: SVM: fix guest global tlb flushes with NPT + * KVM: VMX: Always return old for clear_flush_young() when using EPT + * clocksource, acpi_pm.c: fix check for monotonicity + * [ARM] OMAP: Fix MMC device data + * block: disable sysfs parts of the disk command filter + * ath9k: Assign seq# when mac80211 requests this + * sg: disable interrupts inside sg_copy_buffer + * MN10300: Change the fault handler to check in_atomic() not + in_interrupt() + * [Bluetooth] Fix regression from using default link policy + * netlink: fix overrun in attribute iteration + * x86: fix possible x86_64 and EFI regression + * sparc64: Fix PCI error interrupt registry on PSYCHO. + * sparc: Fix user_regset 'n' field values. + * niu: panic on reset + * PCI: re-add debug prints for unmodified BARs + * [ARM] 5245/1: Fix warning about unused return value in drivers/pcmcia + * [ARM] 5246/1: tosa: add proper clock alias for tc6393xb clock + * [ARM] 5247/1: tosa: SW_EAR_IN support + * [ARM] Fix PCI_DMA_BUS_IS_PHYS for ARM + * ata: duplicate variable sparse warning + * sata_inic162x: enable LED blinking + * [libata] LBA28/LBA48 off-by-one bug in ata.h + * proc: more debugging for "already registered" case + * include/linux/ioport.h: add missing macro argument for devm_release_* + family + * cpuset: avoid changing cpuset's cpus when -errno returned + * cpuset: hotplug documentation fix + * coredump_filter: add description of bit 4 + * bfs: fix Lockdep warning + * mm: ifdef Quicklists in /proc/meminfo + * spi_mpc83xx: fix clockrate calculation for low speed + * spi_mpc83xx: reject invalid transfer sizes + * pxa2xx_spi: chipselect bugfixes + * pxa2xx_spi: dma bugfixes + * mm: mark the correct zone as full when scanning zonelists + * Documentation/ABI: /sys/class/gpio + * MAINTAINERS: fix USB VIDEO CLASS mail list address + * ia64: fix panic during `modprobe -r xpc' + * atmel_lcdfb: disable LCD and DMA engines when suspending + * spi_s3c24xx: fix section warning + * rescan_partitions(): make device capacity errors non-fatal + * memstick: fix MSProHG 8-bit interface mode support + * Add Uwe Kleine-König to .mailmap + * xen: fix for xen guest with mem > 3.7G + * x86/paravirt: Remove duplicate paravirt_pagetable_setup_{start, done}() + * crypto: talitos - Avoid consecutive packets going out with same IV + * slub: fixed uninitialized counter in struct kmem_cache_node + * udp: Fix rcv socket locking + * IB/mlx4: Fix up fast register page list format + * [MIPS] VR41xx: unsigned irq cannot be negative + * x86: completely disable NOPL on 32 bits + * [S390] cio: Fix driver_data handling for ccwgroup devices. + * [S390] cio: fix orb initialization in cio_start_key + * sparc64: Fix OOPS in psycho_pcierr_intr_other(). + * sparc64: Fix SMP bootup with CONFIG_STACK_DEBUG or ftrace. + * RDMA/nes: Fix client side QP destroy + * IPoIB: Fix deadlock on RTNL between bcast join comp and ipoib_stop() + * clockevents: make device shutdown robust + * powerpc: Fix interrupt values for DMA2 in MPC8610 HPCD device tree + * hpplus: fix build regression + * Fix PNP build failure, bugzilla #11276 + * warn: Turn the netdev timeout WARN_ON() into a WARN() + * [XFS] Move memory allocations for log tracing out of the critical path + * [XFS] Fix regression introduced by remount fixup + * [XFS] Prevent direct I/O from mapping extents beyond eof + * [XFS] Fix barrier status change detection. + * [XFS] Prevent lockdep false positives when locking two inodes. + * [XFS] Fix use-after-free with buffers + * [XFS] Don't do I/O beyond eof when unreserving space + * powerpc: Holly board needs dtbImage target + * Fix compile failure with non modular builds + * [ARM] 5249/1: davinci: remove redundant check in davinci_psc_config() + * [ARM] omap: back out 'internal_clock' support + * sctp: set the skb->ip_summed correctly when sending over loopback. + * [ARM] 5255/1: Update jornada ssp to remove build errors/warnings + * sctp: do not enable peer features if we can't do them. + * sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH + * bnx2: Promote vector field in bnx2_irq structure from u16 to unsigned + int + * forcedeth: call restore mac addr in nv_shutdown path + * e1000: prevent corruption of EEPROM/NVM + * e100: Use pci_pme_active to clear PME_Status and disable PME# + * md: Don't wait UNINTERRUPTIBLE for other resync to finish + * atstk1000: fix build breakage with BOARD_ATSTK100X_SW2_CUSTOM=y + * avr32: add .gitignore files + * avr32: add generic_find_next_le_bit bit function + * avr32: fix sys_sync_file_range() call convention + * avr32: nmi_enter() without nmi_exit() + * KVM: ia64: 'struct fdesc' build fix + * hwmon: (atxp1) Fix device detection logic + * hwmon: (it87) Fix fan tachometer reading in IT8712F rev 0x7 (I) + * hwmon: (ad7414) Make ad7414_update_device() static + * tmio_mmc: fix compilation with debug enabled + * atmel-mci: debugfs: enable clock before dumping regs + * atmel-mci: Fix memory leak in atmci_regs_show + * atmel-mci: Fix bogus debugfs file size + * atmel-mci: Set MMC_CAP_NEEDS_POLL if no detect_pin + * mmc_block: handle error from mmc_register_driver() + * mmc_test: initialize mmc_test_lock statically + * [MIPS] Fix 64-bit IP checksum code + * [MIPS] SMTC: Clear TIF_FPUBOUND on clone / fork. + * [MIPS] Fix potential latency problem due to non-atomic cpu_wait. + * [MIPS] vmlinux.lds.S: handle .text.* + * MAINTAINERS: Trivial whitespace cleanups + * MAINTAINERS: Various fixes + * Linux 2.6.27-rc7 + + -- Tim Gardner Sun, 21 Sep 2008 21:49:28 -0600 + +linux (2.6.27-3.4) intrepid; urgency=low + + [ Colin Ian King ] + + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + - LP: #246067 + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + - LP: #209901 + * SAUCE: appleir: Enable driver for new MacBook Pro + - LP: #157919 + + [ Tim Gardner ] + + * Enabled CONFIG_DEBUG_RODATA=y + + [ Upstream Kernel Changes ] + + * Revert "ALSA: hda - Added model selection for iMac 24"" + * Revert "x86: fix HPET regression in 2.6.26 versus 2.6.25, check hpet + against BAR, v3" + * Revert "[ARM] use the new byteorder headers" + * Revert "mac80211: Use IWEVASSOCREQIE instead of IWEVCUSTOM" + * Revert "crypto: camellia - Use kernel-provided bitops, unaligned access + helpers" + * svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet + * sched, cpuset: rework sched domains and CPU hotplug handling (v4) + * ACPI: Fix now signed module parameter. + * ACPI: Change package length error to warning + * ACPI: Fix now signed module parameter. + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * acpi: add checking for NULL early param + * UBIFS: fix zero-length truncations + * Input: bcm5974 - add maintainer entry + * sh64: re-add the __strnlen_user() prototype + * sh: fix ptrace_64.c:user_disable_single_step() + * PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors + * UBIFS: always read hashed-key nodes under TNC mutex + * UBIFS: allow for racing between GC and TNC + * [CIFS] Fix plaintext authentication + * sparc32: Implement smp_call_function_single(). + * sh: crash kernel resource fix + * sh: fix kexec entry point for crash kernels + * sh: fix platform_resource_setup_memory() section mismatch + * sh: update Migo-R defconfig + * sh: update AP325RXA defconfig + * sh: fix semtimedop syscall + * cifs: fix O_APPEND on directio mounts + * [CIFS] update cifs change log + * [CIFS] Turn off Unicode during session establishment for plaintext + authentication + * ACPI: thinkpad-acpi: wan radio control is not experimental + * sparc: Fix resource flags for PCI children in OF device tree. + * remove blk_register_filter and blk_unregister_filter in gendisk + * ALSA: oxygen: fix distorted output on AK4396-based cards + * ipv6: When we droped a packet, we should return NET_RX_DROP instead of + 0 + * pkt_sched: Fix locking of qdisc_root with qdisc_root_sleeping_lock() + * net: Unbreak userspace usage of linux/mroute.h + * Don't trigger softlockup detector on network fs blocked tasks + * Resource handling: add 'insert_resource_expand_to_fit()' function + * sparc64: setup_valid_addr_bitmap_from_pavail() should be __init + * UBIFS: do not update min_idx_lebs in stafs + * UBIFS: push empty flash hack down + * UBIFS: remove incorrect index space check + * UBIFS: improve statfs reporting + * UBIFS: fix assertion + * UBIFS: add forgotten gc_idx_lebs component + * UBIFS: introduce LEB overhead + * UBIFS: improve statfs reporting even more + * UBIFS: fill f_fsid + * drm/radeon: downgrade debug message from info to debug. + * Remove invalidate_partition call from do_md_stop. + * Fix problem with waiting while holding rcu read lock in md/bitmap.c + * ALSA: hda: Distortion fix for dell_m6_core_init + * ALSA: ASoC: fix pxa2xx-i2s clk_get call + * block: restore original behavior of /proc/partition when there's no + partition + * debugobjects: fix lockdep warning + * avr32: Fix lockup after Java stack underflow in user mode + * avr32: pm_standby low-power ram bug fix + * nfsd: fix compound state allocation error handling + * sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports + * nfsd: fix buffer overrun decoding NFSv4 acl + * audit: Moved variable declaration to beginning of function + * Fix modules_install on RO nfs-exported trees. + * Remove '#include ' from mm/page_isolation.c + * dabusb_fpga_download(): fix a memory leak + * [MTD] mtdchar.c: Fix regression in MEMGETREGIONINFO ioctl() + * ALSA: hda - Fix ALC663 auto-probe + * ALSA: hda - Add mic-boost controls to ALC662/663 auto configuration + * Un-break printk strings in x86 PCI probing code + * kernel/resource.c: fix new kernel-doc warning + * softlockup: minor cleanup, don't check task->state twice + * fix typo in arch/parisc/hpux/fs.c + * m68k: atari_keyb_init operator precedence fix + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * don't diff generated firmware files + * IDE: compile fix for sff_dma_ops + * IDE: palm_bk3710: fix compile warning for unused variable + * ide: fix hwif_to_node() + * palm_bk3710: improve IDE registration + * ide-disk: remove stale init_idedisk_capacity() documentation + * ide/Kconfig: mark ide-scsi as deprecated + * net/wireless/Kconfig: clarify the description for + CONFIG_WIRELESS_EXT_SYSFS + * iwlwifi: do not use GFP_DMA in iwl_tx_queue_init + * iwlwifi: workaround interrupt handling no some platforms + * iwlwifi: fix apm_stop (wrong bit polarity for FLAG_INIT_DONE) + * iwlwifi: fix 64bit platform firmware loading + * orinoco: Multicast to the specified addresses + * wireless/libertas/if_cs.c: fix memory leaks + * mac80211: Fix debugfs union misuse and pointer corruption + * rt2x00: Compiler warning unmasked by fix of BUILD_BUG_ON + * ath9k: Incorrect key used when group and pairwise ciphers are + different. + * ath9: Fix ath_rx_flush_tid() for IRQs disabled kernel warning message. + * net/xfrm: Use an IS_ERR test rather than a NULL test + * ipv: Re-enable IP when MTU > 68 + * NTFS: update homepage + * mm: make setup_zone_migrate_reserve() aware of overlapping nodes + * VFS: fix dio write returning EIO when try_to_release_page fails + * acer-wmi: remove debugfs entries upon unloading + * mm/bootmem: silence section mismatch warning - + contig_page_data/bootmem_node_data + * MAINTAINERS: add a maintainer for the BCM5974 multitouch driver + * 8250: improve workaround for UARTs that don't re-assert THRE correctly + * mmc: at91_mci: don't use coherent dma buffers + * pid_ns: zap_pid_ns_processes: fix the ->child_reaper changing + * pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits + * cirrusfb: check_par fixes + * devcgroup: fix race against rmdir() + * mm: show quicklist usage in /proc/meminfo + * mm: size of quicklists shouldn't be proportional to the number of CPUs + * ipc: document the new auto_msgmni proc file + * hp-wmi: update to match current rfkill semantics + * hp-wmi: add proper hotkey support + * tdfxfb: fix SDRAM memory size detection + * tdfxfb: fix frame buffer name overrun + * rtc_time_to_tm: fix signed/unsigned arithmetic + * ibft: fix target info parsing in ibft module + * sysfs: document files in /sys/firmware/sgi_uv/ + * rtc-cmos: wake again from S5 + * pm_qos_requirement might sleep + * drivers/char/random.c: fix a race which can lead to a bogus BUG() + * ipsec: Fix deadlock in xfrm_state management. + * [x86] Fix TSC calibration issues + * tipc: Don't use structure names which easily globally conflict. + * sparc64: Fix IPI call locking. + * [ARM] omap: fix gpio.c build error + * sparc64: Prevent sparc64 from invoking irq handlers on offline CPUs + * powerpc: Fix uninitialised variable in VSX alignment code + * powerpc: Only make kernel text pages of linear mapping executable + * powerpc: Make sure _etext is after all kernel text + * powerpc: Work around gcc's -fno-omit-frame-pointer bug + * powerpc: Fix build error with 64K pages and !hugetlbfs + * powerpc: Fix for getting CPU number in power_save_ppc32_restore() + * UBIFS: amend f_fsid + * net/usb/pegasus: avoid hundreds of diagnostics + * ixgbe: initialize interrupt throttle rate + * pcnet-cs, axnet_cs: add new IDs, remove dup ID with less info + * netxen: Remove workaround for chipset quirk + * Split up PIT part of TSC calibration from native_calibrate_tsc + * iwlwifi: W/A for the TSF correction in IBSS + * iwlwifi: fix hidden ssid discovery in passive channels + * iwlwifi: remove false rxon if rx chain changes + * iwlwifi: fix station mimo power save values + * iwlwifi: fix rx_chain computation + * iwlwifi: fix Tx cmd memory allocation failure handling + * iwlwifi: call apm stop on exit + * iwlwifi: fix STATUS_EXIT_PENDING is not set on pci_remove + * ath9k: Fix TX status reporting + * ath9k: Fix TX control flag use for no ACK and RTS/CTS + * V4L/DVB (8555): au8522: add mechanism to configure IF frequency for vsb + and qam + * V4L/DVB (8556): au0828: add support for Hauppauge Woodbury + * V4L/DVB (8598): au8522: clean up function au8522_set_if + * V4L/DVB (8599): au8522: remove if frequency settings from vsb/qam + modulation tables + * V4L/DVB (8600): au0828: explicitly set 6 MHz IF frequency in + hauppauge_hvr950q_config + * V4L/DVB (8629): v4l2-ioctl: do not try to handle private V4L1 ioctls + * V4L/DVB (8633): ivtv: update ivtv version number + * V4L/DVB (8648): ivtv: improve CC support + * V4L/DVB (8660): gspca: Simplify the scan of URB packets in pac7311. + * V4L/DVB (8661): gspca: Bug in the previous changeset about pac7311. + * V4L/DVB (8663): gspca: Webcam 0c45:6128 added in sonixj. + * V4L/DVB (8664): gspca: The bridge/sensor of the webcam 093a:2621 is a + PAC 7302. + * V4L/DVB (8665): gspca: Fix the 640x480 resolution of the webcam + 093a:2621. + * V4L/DVB (8666): gspca: Bad scanning of frames in pac7311. + * V4L/DVB (8667): gspca: Bad probe of Z-Star/Vimicro webcams with pas106 + sensor. + * V4L/DVB (8668): gspca: Conflict GSPCA / ET61X251 for the webcam + 102c:6251. + * V4L/DVB (8669): gspca: Add white balance control for spca561 rev 012A. + * V4L/DVB (8671): gspca: Remove the unused field 'dev_name' of the device + structure. + * V4L/DVB (8672): gspca: Big rewrite of spca561. + * V4L/DVB (8673): gspca: Bad frame scanning again and bad init in + pac7311. + * V4L/DVB (8674): gspca: Webcam 0c45:612e added in sonixj. + * V4L/DVB (8675): gspca: Pixmap PJPG (Pixart 73xx JPEG) added, generated + by pac7311. + * V4L/DVB (8678): Remove the dead CONFIG_RADIO_MIROPCM20{,_RDS} code + * V4L/DVB (8681): v4l2-ioctl.c: fix warning + * V4L/DVB (8682): V4L: fix return value of register video func + * V4L/DVB (8701): cx18: Add missing lock for when the irq handler + manipulates the queues + * V4L/DVB (8703): gspca: Do controls work for spca561 revision 12a. + * V4L/DVB (8705): gspca: Adjust some control limits in spca561. + * V4L/DVB (8706): Make contrast and brightness work for pac7302. + * V4L/DVB (8707): gspca: Colors, hflip and vflip controls added for + pac7302. + * V4L/DVB (8709): gspca: Fix initialization and controls of sn9x110 - + ov7630. + * V4L/DVB (8710): gspca: Bad color control in sonixj. + * V4L/DVB (8711): gspca: Bad controls and quantization table of pac7311. + * V4L/DVB (8712): gspca: Bad start of sonixj webcams since changeset + a8779025e7e8. + * V4L/DVB (8713): gspca: Bad color control again in sonixj. + * V4L/DVB (8714): gspca: Bad start of sn9c110 and sensor om6802. + * V4L/DVB (8715): gspca: Change the name of some webcam in the gspca doc. + * V4L/DVB (8716): gspca: Bad start of sn9c110 and sensor ov7630. + * V4L/DVB (8717): gspca: Frame buffer too small for small resolutions + (sonixj and t613). + * V4L/DVB (8718): gspca: suspend/resume added. + * V4L/DVB (8719): gspca: Have VIDIOC_QUERYCTRL more compliant to the + spec. + * V4L/DVB (8720): gspca: V4L2_CAP_SENSOR_UPSIDE_DOWN added as a cap for + some webcams. + * V4L/DVB (8722): sms1xxx: fix typo in license header + * V4L/DVB (8726): link tuner before saa7134 + * V4L/DVB (8727): V4L1: make PMS not autoprobe when builtin. + * V4L/DVB (8728): 1-make-pms-not-autoprobe-when-builtin update + * V4L/DVB (8749): Fix error code, when camera is not turned on by sonypi + * V4L/DVB (8750): V4L: check inval in video_register_device_index() + * V4L/DVB (8751): vivi: Fix some issues at vivi register routine + * V4L/DVB (8757): v4l-dvb: fix a bunch of sparse warnings + * V4L/DVB (8769): cx18: Simplify queue flush logic to prevent oops in + cx18_flush_queues() + * V4L/DVB (8778): radio: fix incorrect video_register_device result check + * V4L/DVB (8779): v4l: fix more incorrect video_register_device result + checks + * V4L/DVB (8790): saa7115: call i2c_set_clientdata only when state != + NULL + * V4L/DVB (8803): s5h1409: Enable QAM_AUTO mode + * V4L/DVB (8804): s5h1411: Enable QAM_AUTO mode + * V4L/DVB (8805): Steven Toth email address change + * V4L/DVB (8809): gspca: Revert commit + 9a9335776548d01525141c6e8f0c12e86bbde982 + * V4L/DVB (8810): gspca: Compile error when CONFIG_PM not defined. + * V4L/DVB (8812): gspca: Do pac73xx webcams work. + * V4L/DVB (8813): gspca: Adjust SOF detection for pac73xx. + * V4L/DVB (8814): gspca: Set DISABLED the disabled controls at query + control time. + * V4L/DVB (8815): gspca: Fix problems with disabled controls. + * V4L/DVB (8816): gspca: Set disabled ctrls and fix a register pb with + ovxxxx in sonixb. + * V4L/DVB (8817): gspca: LED and proble changes in sonixb. + * V4L/DVB (8818): gspca: Reinitialize the device on resume. + * V4L/DVB (8819): gspca: Initialize the ov519 at open time and source + cleanup. + * V4L/DVB (8820): gspca: Change initialization and gamma of zc3xx - + pas106. + * V4L/DVB (8822): gspca: Change some subdriver functions for + suspend/resume. + * V4L/DVB (8823): gspca: H and V flips work for ov7670 only in ov519. + * V4L/DVB (8824): gspca: Too much code removed in the suspend/resume + changeset. + * V4L/DVB (8825): gspca: More controls for pac73xx and new webcam + 093a:2624. + * V4L/DVB (8826): gspca: Webcam Labtec 2200 (093a:2626) added in pac7311. + * V4L/DVB (8827): gspca: Stop pac7302 autogain oscillation. + * V4L/DVB (8828): gspca: Set the clock at the end of initialization in + sonixj. + * V4L/DVB (8829): gspca: Have a clean kmalloc-ated buffer for USB + exchanges. + * V4L/DVB (8830): gspca: Move some probe code to the new init function. + * V4L/DVB (8831): gspca: Resolve webcam conflicts between some drivers. + * V4L/DVB (8832): gspca: Bad pixelformat of vc0321 webcams. + * V4L/DVB (8833): gspca: Cleanup the sonixb code. + * V4L/DVB (8834): gspca: Have a bigger buffer for sn9c10x compressed + images. + * V4L/DVB (8835): gspca: Same pixfmt as the sn9c102 driver and raw Bayer + added in sonixb. + * V4L/DVB (8837): dvb: fix I2C adapters name size + * V4L/DVB (8839): dib0700: add comment to identify 35th USB id pair + * V4L/DVB (8840): dib0700: add basic support for Hauppauge Nova-TD-500 + (84xxx) + * V4L/DVB (8842): vivi_release(): fix use-after-free + * V4L/DVB (8843): tda10048_firmware_upload(): fix a memory leak + * V4L/DVB (8844): dabusb_fpga_download(): fix a memory leak + * bnx2x: Accessing un-mapped page + * SELinux: memory leak in security_context_to_sid_core + * x86: add io delay quirk for Presario F700 + * mmap: fix petty bug in anonymous shared mmap offset handling + * x86: Change warning message in TSC calibration. + * PCI: fix pbus_size_mem() resource alignment for CardBus controllers + * [ARM] omap: fix build error in ohci-omap.c + * [ARM] remove unused #include + * ACPI: Make Len Brown the ACPI maintainer again + * fujitsu-laptop: fix regression for P8010 in 2.6.27-rc + * ACPI: Avoid bogus timeout about SMbus check + * acer-wmi: remove debugfs entries upon unloading + * forgotten refcount on sysctl root table + * V4L/DVB (8868): gspca: Support for vga modes with sif sensors in + sonixb. + * V4L/DVB (8869): gspca: Move the Sonix webcams with TAS5110C1B from + sn9c102 to gspca. + * V4L/DVB (8870): gspca: Fix dark room problem with sonixb. + * V4L/DVB (8872): gspca: Bad image format and offset with rev072a of + spca561. + * V4L/DVB (8873): gspca: Bad image offset with rev012a of spca561 and + adjust exposure. + * V4L/DVB (8874): gspca: Adjust hstart for sn9c103/ov7630 and update + usb-id's. + * [ARM] omap: fix virtual vs physical address space confusions + * V4L/DVB (8876): budget: udelay changed to mdelay + * V4L/DVB (8877): b2c2 and bt8xx: udelay to mdelay + * V4L/DVB (8880): PATCH: Fix parents on some webcam drivers + * V4L/DVB (8881): gspca: After 'while (retry--) {...}', retry will be -1 + but not 0. + * powerpc/spufs: Fix multiple get_spu_context() + * powerpc/spufs: Fix race for a free SPU + * Input: bcm5974 - small formatting cleanup + * Input: bcm5974 - improve finger tracking and counting + * Input: bcm5974 - add BTN_TOUCH event for mousedev benefit + * Input: i8042 - make Lenovo 3000 N100 blacklist entry more specific + * sh: resume_kernel fix for kernel oops built with CONFIG_BKL_PREEMPT=y. + * sh64: resume_kernel fix for kernel oops built with + CONFIG_BKL_PREEMPT=y. + * i2c: fix i2c-sh_mobile timing issues + * clockevents: prevent clockevent event_handler ending up handler_noop + * clockevents: prevent endless loop in periodic broadcast handler + * clockevents: enforce reprogram in oneshot setup + * clockevents: prevent multiple init/shutdown + * clockevents: prevent endless loop lockup + * HPET: make minimum reprogramming delta useful + * [MTD] [NAND] tmio_nand: fix base address programming + * Fix conditional export of kvh.h and a.out.h to userspace. + * async_tx: fix the bug in async_tx_run_dependencies + * sched_clock: fix NOHZ interaction + * sched: fix process time monotonicity + * UBIFS: fix division by zero + * UBIFS: make minimum fanout 3 + * [MIPS] Fix data bus error recovery + * [MIPS] Fix WARNING: at kernel/smp.c:290 + * [MIPS] TXx9: Fix txx9_pcode initialization + * [MIPS] TX39xx: Add missing local_flush_icache_range initialization + * [MIPS] Probe initrd header only if explicitly specified + * res_counter: fix off-by-one bug in setting limit + * forcedeth: fix kexec regression + * atmel_lcdfb: fix oops in rmmod when framebuffer fails to register + * tracehook: comment pasto fixes + * drivers/mmc/card/block.c: fix refcount leak in mmc_block_open() + * x86: boot: stub out unimplemented CPU feature words + * x86: add NOPL as a synthetic CPU feature bit + * x86: use X86_FEATURE_NOPL in alternatives + * clockevents: broadcast fixup possible waiters + * x86: HPET fix moronic 32/64bit thinko + * x86: HPET: read back compare register before reading counter + * Fix CONFIG_AC97_BUS dependency + * [ARM] 5241/1: provide ioremap_wc() + * ntp: fix calculation of the next jiffie to trigger RTC sync + * clocksource, acpi_pm.c: use proper read function also in errata mode + * clocksource, acpi_pm.c: check for monotonicity + * x86: delay early cpu initialization until cpuid is done + * x86: move mtrr cpu cap setting early in early_init_xxxx + * sched: arch_reinit_sched_domains() must destroy domains to force + rebuild + * x86, xen: Use native_pte_flags instead of native_pte_val for .pte_flags + * x86: pda_init(): fix memory leak when using CPU hotplug + * x86: cpu_init(): fix memory leak when using CPU hotplug + * powerpc/spufs: Fix possible scheduling of a context to multiple SPEs + * netfilter: nf_conntrack_sip: de-static helper pointers + * netfilter: nf_conntrack_gre: more locking around keymap list + * netfilter: nf_conntrack_gre: nf_ct_gre_keymap_flush() fixlet + * netfilter: nf_conntrack_irc: make sure string is terminated before + calling simple_strtoul + * pkt_sched: Fix qdisc state in net_tx_action() + * powerpc: Fix rare boot build breakage + * ahci, pata_marvell: play nicely together + * sata_mv: add RocketRaid 1720 PCI ID to driver + * ahci: disable PMP for marvell ahcis + * sata_nv: disable hardreset for generic + * libata-sff: kill spurious WARN_ON() in ata_hsm_move() + * pata_sil680: remove duplicate pcim_enable_device + * ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs + * [MIPS] IP22: Fix detection of second HPC3 on Challenge S + * xen: fix 2.6.27-rc5 xen balloon driver warnings + * x86: disable static NOPLs on 32 bits + * netns : fix kernel panic in timewait socket destruction + * bridge: don't allow setting hello time to zero + * NFS: Restore missing hunk in NFS mount option parser + * usb: fix null deferences in low level usb serial + * Fix format of MAINTAINERS + * sparc64: Disable timer interrupts in fixup_irqs(). + * [Bluetooth] Fix reference counting during ACL config stage + * [Bluetooth] Enforce correct authentication requirements + * [Bluetooth] Reject L2CAP connections on an insecure ACL link + * [S390] CVE-2008-1514: prevent ptrace padding area read/write in 31-bit + mode + * [S390] cio: Correct cleanup on error. + * [S390] cio: handle ssch() return codes correctly. + * [S390] cio: allow offline processing for disconnected devices + * ipsec: Restore larval states and socket policies in dump + * update Documentation/filesystems/Locking for 2.6.27 changes + * MAINTAINERS: add Atheros maintainer for atlx + * lib: Correct printk %pF to work on all architectures + * x86: fix memmap=exactmap boot argument + * clockevents: remove WARN_ON which was used to gather information + * ipv6: Fix OOPS in ip6_dst_lookup_tail(). + * Linux 2.6.27-rc6 + + -- Ben Collins Tue, 02 Sep 2008 12:45:56 -0400 + +linux (2.6.27-2.3) intrepid; urgency=low + + [ Ben Collins ] + + * build/retag: Make script save .orig of tags for later use + * ubuntu/lirc: Fix device_create call + * build/firmware: Put in-kernel firmware into version specific subdir + - LP: #262115 + * Rebase on linux-2.6 git. + * ABI bump + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (no-up) Apparmor warning fixes + + [ John Johansen ] + + * SAUCE: (no-up) Proper AppArmor ptrace updates for newer lsm API + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + - LP: #25896 + + -- Ben Collins Wed, 27 Aug 2008 14:03:05 -0400 + +linux (2.6.27-1.2) intrepid; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: apparmor: Update for changes to ptrace lsm hooks + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: applesmc: Add MacBookAir + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * Update config files + * build/d-i: Remove obsolete dm modules + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: Enable speedstep for sonoma processors. + + [ Dennis Noordsij ] + + * SAUCE: Work around ACPI corruption upon suspend on some Dell machines. + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.27-0.0) intrepid; urgency=low + + * Not uploaded, placeholder for new release + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.26-5.17) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add tosh_smm symbol to blacklist + + -- Ben Collins Fri, 15 Aug 2008 09:29:34 -0400 + +linux (2.6.26-5.16) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: toshiba_acpi: Rewrote most of the proc entry bits." + * Revert "SAUCE: Update toshiba_acpi.c to version 0.19a" + * build/config: Disable in-kernel toshiba driver(s) + * ubuntu/tlsup: New driver for toshiba laptops + * build/config: Enable TLSUP driver + * SAUCE: e1000e: Fix E1000E_ENABLED logic to check for our E1000E_NEW + driver as well + * ubuntu/e1000e: Remove E1000E_ENABLED option in local config + * build/config: Update configs to have E1000E_ENABLED set + * ubuntu/prism2: Remove duplicate device + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Stefan Bader ] + + * SAUCE: x86: HPET rework for SB700 + - LP: #255910 + + [ Tim Gardner ] + + * Add GNBD driver + * Enable GNBD driver + * SAUCE: Add GFS driver + * SAUCE: Enable gfs driver configs + * b43: Linksys WMP54G (BCM4306/3) card in a PCI format has an SPROM + coding + + [ Upstream Kernel Changes ] + + * KVM: x86 emulator: emulate clflush + * USB: quirk PLL power down mode + + -- Ben Collins Mon, 11 Aug 2008 13:19:28 -0400 + +linux (2.6.26-5.15) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: Add blacklist support to fix Belkin bluetooth dongle." + - Superceded by upstream changes. + * build/config: New option enabled for uvcvideo + * build/control: Add Vcs-Git meta data to control file + * SAUCE: toshiba_acpi: Rewrote most of the new code + * abi/perm-blacklist: Add emu10k1 driver to blacklist + + [ Upstream Kernel Changes ] + + * pxamci: trivial fix of DMA alignment register bit clearing + * udplite: Protection against coverage value wrap-around + * ipv6: use timer pending + * ipv6: __KERNEL__ ifdef struct ipv6_devconf + * hdlcdrv: Fix CRC calculation. + * quota: fix possible infinite loop in quota code + * isofs: fix minor filesystem corruption + * KVM: VMX: Fix a wrong usage of vmcs_config + * KVM: SVM: fix suspend/resume support + * KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held + * KVM: VMX: Add ept_sync_context in flush_tlb + * KVM: x86 emulator: Fix HLT instruction + * KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction + * KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts + * Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error + * rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall + * Fix typos from signal_32/64.h merge + * x86 reboot quirks: add Dell Precision WorkStation T5400 + * USB: fix usb serial pm counter decrement for disconnected interfaces + * x86, suspend, acpi: enter Big Real Mode + * markers: fix duplicate modpost entry + * Fix build on COMPAT platforms when CONFIG_EPOLL is disabled + * proc: fix /proc/*/pagemap some more + * cpusets: fix wrong domain attr updates + * x86: fix crash due to missing debugctlmsr on AMD K6-3 + * ide-cd: fix oops when using growisofs + * rtc-at91rm9200: avoid spurious irqs + * vmlinux.lds: move __attribute__((__cold__)) functions back into final + .text section + * ARM: fix fls() for 64-bit arguments + * tcp: Clear probes_out more aggressively in tcp_ack(). + * sparc64: Fix lockdep issues in LDC protocol layer. + * sparc64: Fix cpufreq notifier registry. + * sparc64: Do not define BIO_VMERGE_BOUNDARY. + * iop-adma: fix platform driver hotplug/coldplug + * myri10ge: do not forget to setup the single slice pointers + * myri10ge: do not use mgp->max_intr_slots before loading the firmware + * ALSA: trident - pause s/pdif output + * V4L: cx18: Upgrade to newer firmware & update documentation + * DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 + * V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing + * V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume + * V4L: uvcvideo: Don't free URB buffers on suspend + * V4L: uvcvideo: Make input device support optional + * V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated + webcam + * V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner + type + * V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 + * DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default + * DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not + stream + * DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues + * DVB: cx23885: SRAM changes for the 885 and 887 silicon parts + * x86: fix kernel_physical_mapping_init() for large x86 systems + * eCryptfs: use page_alloc not kmalloc to get a page of memory + * UML - Fix boot crash + * ixgbe: remove device ID for unsupported device + * mpc52xx_psc_spi: fix block transfer + * tmpfs: fix kernel BUG in shmem_delete_inode + * markers: fix markers read barrier for multiple probes + * VFS: increase pseudo-filesystem block size to PAGE_SIZE + * cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called + already + * b43legacy: Release mutex in error handling code + * ath5k: don't enable MSI, we cannot handle it yet + * Fix off-by-one error in iov_iter_advance() + * Linux 2.6.26.1 + * ftrace: remove unneeded documentation + * romfs_readpage: don't report errors for pages beyond i_size + * netfilter: nf_nat_sip: c= is optional for session + * SCSI: bsg: fix bsg_mutex hang with device removal + * x86: idle process - add checking for NULL early param + * x86: io delay - add checking for NULL early param + * Close race in md_probe + * Kprobe smoke test lockdep warning + * netfilter: xt_time: fix time's time_mt()'s use of do_div() + * linear: correct disk numbering error check + * SCSI: ch: fix ch_remove oops + * NFS: Ensure we zap only the access and acl caches when setting new acls + * jbd: fix race between free buffer and commit transaction + * Input: i8042 - add Intel D845PESV to nopnp list + * Input: i8042 - add Gericom Bellagio to nomux blacklist + * Input: i8042 - add Acer Aspire 1360 to nomux blacklist + * Bluetooth: Signal user-space for HIDP and BNEP socket errors + * Add compat handler for PTRACE_GETSIGINFO + * ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode + * ALSA: hda - Fix DMA position inaccuracy + * ALSA: hda - Add missing Thinkpad Z60m support + * ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2 + * vfs: fix lookup on deleted directory + * Ath5k: fix memory corruption + * Ath5k: kill tasklets on shutdown + * sound: ensure device number is valid in snd_seq_oss_synth_make_info + * Linux 2.6.26.2 + + -- Ben Collins Sun, 03 Aug 2008 13:25:02 -0400 + +linux (2.6.26-5.14) intrepid; urgency=low + + [ Ben Collins ] + + * SAUCE: applesmc: Add MacBookAir + * build: Do not build ddeb unless we are on the buildd + * build: control: Consistency in arch fields. + * SAUCE: Update toshiba_acpi.c to version 0.19a + - LP: #77026 + * build: Added perm blacklist support and per-module support to abi-check + - Blacklist p80211 module from abi checks + * ubuntu/lirc: Get rid of drivers symlink and use real include stuff + + + [ Colin Ian King ] + + * SAUCE: acerhk module - add support for Amilo A1650g keyboard + - LP: #84159 + * SAUCE: rt2x00: Fix OOPS on failed creation of rt2x00lib workqueue + - LP: #249242 + + [ Mario Limonciello ] + + * Add LIRC back in + + [ Tim Gardner ] + + * Makefile race condition can lead to ndiswrapper build failure + - LP: #241547 + * update linux-wlan-ng (prism2_usb) to upstream version 1861 + - LP: #245026 + + [ Upstream Kernel Changes ] + + * Fix typos from signal_32/64.h merge + + -- Ben Collins Fri, 01 Aug 2008 00:05:01 -0400 + +linux (2.6.26-5.13) intrepid; urgency=low + + [ Ben Collins ] + + * build: Make makedumpfile an amd64/i386 only build-dep + * ubuntu/acerhk: Fixup assembly to compile with newer binutils + + -- Ben Collins Sat, 26 Jul 2008 16:41:50 -0400 + +linux (2.6.26-4.12) intrepid; urgency=low + + [ Ben Collins ] + + * e1000e: Upgraded module to 0.4.1.7 upstream. Placed in ubuntu/, + in-kernel driver disabled + * config: Disable e1000e in-kernel, and enable newer driver in ubuntu/ + * rfkill: Update to 1.3 drivers, and move to common location + * ubuntu: Actually link kconfig/kbuild into rfkill subdir + * config: Enable loading dsdt from initramfs + - LP: #246222 + * ubuntu: [compcache] Update to fix crashes in improper BUG() + * build: Create a retag scripts to recover tags from rebases + * build: Updates for dbg pkg + * build: Make sure no empty lines show up in debian/files + * ubuntu: atl1e: Add new driver from 2.6.27-pre-rc1 + - LP: #243894 + * sys_getcwd: Fix some brokeness introduced by AppArmor __d_path + changes + - LP: #251223 + * ubuntu: unionfs: Added v1.4 module from hardy + * build: Add sub-flavour infrastructure, and virtual subflav + + [ Eric Piel ] + + * ACPI: Allow custom DSDT tables to be loaded from initramfs + + [ Kees Cook ] + + * AppArmor: Smack VFS patches + + [ Mario Limonciello ] + + * Work around ACPI corruption upon suspend on some Dell machines. + - LP: #183033 + + [ Tim Gardner ] + + * Export usbhid_modify_dquirk for LBM module bcm5974 + - LP: #250838 + * VIA - Add VIA DRM Chrome9 3D engine + - LP: #251862 + * Define TRUE/FALSE for VIA DRM driver. + + -- Ben Collins Tue, 15 Jul 2008 12:51:39 -0400 + +linux (2.6.26-4.11) intrepid; urgency=low + + [ Ben Collins ] + + * config: Enable bcm5974 driver in all configs + + [ 2.6.26-4.10 ] + + [ Amit Kucheria ] + + * Fix typo in GSPCA Makefile and make it compile + + [ Ben Collins ] + + * ubuntu: Remove UVC driver in favor of in-kernel one (-rc9) + * config: Updates for -rc9 + * ubuntu: Add acx, prism2_usb wireless drivers + * config: Enable prism2_usb and acx drivers. + * ubuntu: Add at76 driver to build + * config: Enable at76_usb driver. + * iscsitarget: Fix prototype for bi_end_io callback. + * acx: Fix section type mismatch warnings + * fsam7400: Add sw kill switch driver + * config: Enable fsam7400 driver + * qc-usb: Added new driver + * config: Enable qc-usb driver + * drbd: Remove built-in connector usage + * drbd: Do not define idx/val for connector here + * connector.h: Add idx/val for drbd + * bcm5974: Added new driver + + [ Kees Cook ] + + * SAUCE: [AppArmor] merge with upstream subversion r1291 + * SAUCE: [AppArmor] fix typo in selinux_inode_link + * SAUCE: [AppArmor] aufs patches + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + - LP: #241749 + + [ Tim Gardner ] + + * SAUCE: Medion Akoya Mini E1210 + + [ Upstream Kernel Changes ] + + * Revert "BAST: Remove old IDE driver" + * ARM: OMAP: DMA: Don't mark channel active in omap_enable_channel_irq + * ARM: OMAP: Correcting the gpmc prefetch control register address + * debugobjects: fix lockdep warning + * [ARM] 5115/1: pxafb: fix ifdef for command line option handling + * [ARM] 5116/1: pxafb: cleanup and fix order of failure handling + * [ARM] 5109/1: Mark rtc sa1100 driver as wakeup source before + registering it + * [ARM] Export dma_sync_sg_for_device() + * fix cgroup-inflicted breakage in block_dev.c + * [patch for 2.6.26 2/4] vfs: utimensat(): be consistent with utime() for + immutable and append-only files + * [patch for 2.6.26 1/4] vfs: utimensat(): ignore tv_sec if tv_nsec == + UTIME_OMIT or UTIME_NOW + * [patch for 2.6.26 3/4] vfs: utimensat(): fix error checking for + {UTIME_NOW,UTIME_OMIT} case + * [patch for 2.6.26 4/4] vfs: utimensat(): fix write access check for + futimens() + * [patch 1/4] vfs: path_{get,put}() cleanups + * [patch 2/4] fs: make struct file arg to d_path const + * [patch 3/4] vfs: fix ERR_PTR abuse in generic_readlink + * [patch 4/4] flock: remove unused fields from file_lock_operations + * [patch 3/3] vfs: make d_path() consistent across mount operations + * [patch 1/3] vfs: dcache sparse fixes + * [patch 2/3] vfs: dcache cleanups + * udf: Fix regression in UDF anchor block detection + * [SCSI] ses: Fix timeout + * netfilter: ip6table_mangle: don't reroute in LOCAL_IN + * [SCSI] esp: Fix OOPS in esp_reset_cleanup(). + * kernel/audit.c: nlh->nlmsg_type is gotten more than once + * audit: fix kernel-doc parameter notation + * remove useless argument type in audit_filter_user() + * Blackfin arch: fix bug - kernel boot fails when Spinlock and rw-lock + debugging enabled + * Blackfin arch: fix up section mismatch warning + * mac80211: implement EU regulatory domain + * b43: Do not return TX_BUSY from op_tx + * b43legacy: Do not return TX_BUSY from op_tx + * b43: Fix possible MMIO access while device is down + * b43legacy: Fix possible NULL pointer dereference in DMA code + * rt2x00: Fix unbalanced mutex locking + * iwlwifi: improve scanning band selection management + * [SCSI] esp: tidy up target reference counting + * [ARM] 5117/1: pxafb: fix __devinit/exit annotations + * thermal: Create CONFIG_THERMAL_HWMON=n + * ACPI: don't walk tables if ACPI was disabled + * dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled. + * x86: shift bits the right way in native_read_tscp + * x86: section/warning fixes + * V4L/DVB (8004): Fix INPUT dependency at budget-ci + * V4L/DVB (8005): Fix OOPS if frontend is null + * V4L/DVB (8007): cx18/cx25840: the S-Video LUMA input can use all + In1-In8 inputs + * V4L/DVB (8008): cx18: remove duplicate audio and video input enums + * V4L/DVB (8010): em28xx: Properly register extensions for already + attached devices + * V4L/DVB (8011): em28xx: enable DVB for HVR-900 + * V4L/DVB (8012): gl861: sleep a little to avoid I2C errors + * V4L/DVB (8013): gl861: remove useless identify_state + * V4L/DVB (8015): gl861: replace non critical msleep(0) with msleep(1) to + be on the safe side + * V4L/DVB (8017): Ensure em28xx extensions only get run against devs that + support them + * V4L/DVB (8018): Add em2860 chip ID + * V4L/DVB (8020): Fix callbacks functions of saa7134_empress + * V4L/DVB (8022): saa7134: fix race between opening and closing the + device + * V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully + recovered + * V4L/DVB (8027): saa7134: Avermedia A700: only s-video and composite + input are working + * V4L/DVB (8028): Improve error messages for tda1004x attach + * V4L/DVB (8029): Improve error message at tda1004x_attach + * V4L/DVB (8034): tda18271: fix IF notch frequency handling + * V4L/DVB (8035): tda18271: dont touch EB14 if rf_cal lookup is out of + range + * V4L/DVB (8036): tda18271: toggle rf agc speed mode on TDA18271HD/C2 + only + * V4L/DVB (8037): tda18271: ensure that the thermometer is off during + channel configuration + * V4L/DVB (8039): pxa-camera: fix platform_get_irq() error handling. + * V4L/DVB (8040): soc-camera: remove soc_camera_host_class class + * V4L/DVB (8042): DVB-USB UMT-010 channel scan oops + * V4L/DVB (8043): au0828: add support for additional USB device id's + * V4L/DVB (8044): au8522: tuning optimizations + * V4L/DVB (8048): saa7134: Fix entries for Avermedia A16d and Avermedia + E506 + * V4L/DVB (8061): cx18: only select tuner / frontend modules if + !DVB_FE_CUSTOMISE + * V4L/DVB (8063): cx18: Fix unintended auto configurations in + cx18-av-core + * V4L/DVB (8066): cx18: Fix audio mux input definitions for HVR-1600 Line + In 2 and FM radio + * V4L/DVB (8067): cx18: Fix firmware load for case when digital capture + happens first + * V4L/DVB (8068): cx18: Add I2C slave reset via GPIO upon initialization + * V4L/DVB (8069): cx18: Fix S-Video and Compsite inputs for the Yuan + MPC718 and enable card entry + * V4L/DVB (8071): tda10023: Fix possible kernel oops during + initialisation + * V4L/DVB (8073): av7110: Catch another type of ARM crash + * V4L/DVB (8074): av7110: OSD transfers should not be interrupted + * V4L/DVB (8075): stv0299: Uncorrected block count and bit error rate + fixed + * V4L/DVB (8092): videodev: simplify and fix standard enumeration + * V4L/DVB (8096): au8522: prevent false-positive lock status + * V4L/DVB (8097): xc5000: check device hardware state to determine if + firmware download is needed + * V4L/DVB (8100): V4L/vivi: fix possible memory leak in vivi_fillbuff + * V4L/DVB (8108): Fix open/close race in saa7134 + * s2io: fix documentation about intr_type + * tc35815: Mark carrier-off before starting PHY + * tc35815: Fix receiver hangup on Rx FIFO overflow + * ixgbe: fix EEH recovery during reset on PPC + * igb: fix EEH recovery during reset on PPC + * e1000e: fix EEH recovery during reset on PPC + * pcnet_cs, axnet_cs: clear bogus interrupt before request_irq + * drivers/net/r6040.c: Eliminate double sizeof + * ipg: fix jumbo frame compilation + * ipg: use NULL, not zero, for pointers + * [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable + * [netdrvr] netxen: fix netxen_pci_tbl[] breakage + * e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx + * e1000: only enable TSO6 via ethtool when using correct hardware + * [netdrvr] Fix IOMMU overflow checking in s2io.c + * qla3xxx: Hold RTNL while calling dev_close() + * Hold RTNL while calling dev_close() + * sata_uli: hardreset is broken + * rt2x00: Fix lock dependency errror + * prism: islpci_eth.c endianness fix + * mac80211: fix an oops in several failure paths in key allocation + * firewire: fw-sbp2: fix parsing of logical unit directories + * kbuild: fix a.out.h export to userspace with O= build. + * Ensure interrupted recovery completed properly (v1 metadata plus + bitmap) + * Don't acknowlege that stripe-expand is complete until it really is. + * Fix error paths if md_probe fails. + * hamradio: remove unused variable + * tcp: calculate tcp_mem based on low memory instead of all memory + * tcp: fix for splice receive when used with software LRO + * af_unix: fix 'poll for write'/connected DGRAM sockets + * netdevice: Fix typo of dev_unicast_add() comment + * pkt_sched: ERR_PTR() ususally encodes an negative errno, not positive. + * pkt_sched: Remove CONFIG_NET_SCH_RR + * include/linux/netdevice.h: don't export MAX_HEADER to userspace + * tcp: /proc/net/tcp rto,ato values not scaled properly (v2) + * netlink: Fix some doc comments in net/netlink/attr.c + * CONNECTOR: add a proc entry to list connectors + * inet fragments: fix race between inet_frag_find and + inet_frag_secret_rebuild + * net/inet_lro: remove setting skb->ip_summed when not LRO-able + * netlabel: Fix a problem when dumping the default IPv6 static labels + * ipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags. + * sched: fix cpu hotplug + * Fix and clean top .gitignore + * x86: fix cpu hotplug crash + * ptrace GET/SET FPXREGS broken + * Input: add KEY_MEDIA_REPEAT definition + * Input: fix locking in force-feedback core + * [ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off + * ide: fix /proc/ide/ide?/mate reporting + * netfilter: nf_conntrack_tcp: fixing to check the lower bound of valid + ACK + * textsearch: fix Boyer-Moore text search bug + * hostap: don't report useless WDS frames by default + * hostap: fix sparse warnings + * mac80211: don't accept WEP keys other than WEP40 and WEP104 + * V4L/DVB (8145a): USB Video Class driver + * [IA64] Bugfix for system with 32 cpus + * [IA64] export account_system_vtime + * sched: fix divide error when trying to configure rt_period to zero + * x86: fix NODES_SHIFT Kconfig range + * block: Fix the starving writes bug in the anticipatory IO scheduler + * Properly notify block layer of sync writes + * rcu: fix hotplug vs rcu race + * I2C: S3C2410: Check ACK on byte transmission + * I2C: S3C2410: Fixup error codes returned rom a transfer. + * I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device. + * PCI: Restrict VPD read permission to root + * powerpc/bootwrapper: update for initrd with simpleImage + * i2c: Documentation: fix device matching description + * i2c: Fix bad hint about irqs in i2c.h + * powerpc/legacy_serial: Bail if reg-offset/shift properties are present + * powerpc/mpc5200: Fix lite5200b suspend/resume + * ipv4: fix sysctl documentation of time related values + * net-sched: change tcf_destroy_chain() to clear start of filter list + * net-sched: fix filter destruction in atm/hfsc qdisc destruction + * netlink: Unneeded local variable + * net: Tyop of sk_filter() comment + * netdevice: Fix wrong string handle in kernel command line parsing + * net: fib_rules: fix error code for unsupported families + * dm crypt: use cond_resched + * V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if + uvc is selected + * PCI: Limit VPD read/write lengths for Broadcom 5706, 5708, 5709 rev. + * PCI: acpiphp: cleanup notify handler on all root bridges + * drivers/input/ff-core.c needs + * DRM/i915: only use tiled blits on 965+ + * tty: Fix inverted logic in send_break + * x86: fix Intel Mac booting with EFI + * arch/x86/mm/init_64.c: early_memtest(): fix types + * 9p: fix O_APPEND in legacy mode + * slub: Do not use 192 byte sized cache if minimum alignment is 128 byte + * Do not overwrite nr_zones on !NUMA when initialising zlcache_ptr + * [MIPS] IP32: Fix unexpected irq 71 + * [MIPS] IP22: Fix crashes due to wrong L1_CACHE_BYTES + * [MIPS] cevt-txx9: Reset timer counter on initialization + * hrtimer: prevent migration for raising softirq + * svcrpc: fix handling of garbage args + * OHCI: Fix problem if SM501 and another platform driver is selected + * USB: fix cdc-acm resume() + * USB: ehci - fix timer regression + * USB: ohci - record data toggle after unlink + * USB: mass storage: new id for US_SC_CYP_ATACB + * sisusbvga: Fix oops on disconnect. + * USB: New device ID for ftdi_sio driver + * USB: fix interrupt disabling for HCDs with shared interrupt handlers + * USB: don't lose disconnections during suspend + * USB: another option device id + * USB: add a pl2303 device id + * USB: fix Oops on loading ipaq module since 2.6.26 + * USB: adding comment for ipaq forcing number of ports + * [MIPS] Fix bug in atomic_sub_if_positive. + * xen: fix address truncation in pte mfn<->pfn conversion + * sata_sil24: add DID for another adaptec flavor + * ahci: always clear all bits in irq_stat + * libata-sff: improve HSM violation reporting + * sata_mv: safer logic for limit_warnings + * Update maintainers for powerpc + * Christoph has moved + * mm: dirty page accounting vs VM_MIXEDMAP + * rtc: rtc_read_alarm() handles wraparound + * firmware: fix the request_firmware() dummy + * serial: fix serial_match_port() for dynamic major tty-device numbers + * get_user_pages(): fix possible page leak on oom + * rtc-x1205: Fix alarm set + * rtc: fix CMOS time error after writing /proc/acpi/alarm + * pci: VT3336 can't do MSI either + * Miguel Ojeda has moved + * ext3: add missing unlock to error path in ext3_quota_write() + * ext4: add missing unlock to an error path in ext4_quota_write() + * reiserfs: add missing unlock to an error path in reiserfs_quota_write() + * ecryptfs: remove unnecessary mux from ecryptfs_init_ecryptfs_miscdev() + * lib: taint kernel in common report_bug() WARN path. + * gpio: pca953x (i2c) handles max7310 too + * fsl_diu_fb: fix build with CONFIG_PM=y, plus fix some warnings + * Update taskstats-struct document for scaled time accounting + * cciss: fix regression that no device nodes are created if no logical + drives are configured. + * delay accounting: maintainer update + * Doc*/kernel-parameters.txt: fix stale references + * hdaps: add support for various newer Lenovo thinkpads + * mn10300: export certain arch symbols required to build allmodconfig + * mn10300: provide __ucmpdi2() for MN10300 + * Introduce rculist.h + * man-pages is supported + * ntfs: update help text + * add kernel-doc for simple_read_from_buffer and memory_read_from_buffer + * w100fb: do not depend on SHARPSL + * w100fb: add 80 MHz modeline + * MFD maintainer + * cgroups: document the effect of attaching PID 0 to a cgroup + * spi: fix the read path in spidev + * doc: doc maintainers + * security: filesystem capabilities: fix fragile setuid fixup code + * security: filesystem capabilities: fix CAP_SETPCAP handling + * Alpha Linux kernel fails with inconsistent kallsyms data + * cpusets: document proc status cpus and mems allowed lists + * MAINTAINERS: update the email address of Andreas Dilger + * cciss: read config to obtain max outstanding commands per controller + * olpc: sdhci: add quirk for the Marvell CaFe's vdd/powerup issue + * olpc: sdhci: add quirk for the Marvell CaFe's interrupt timeout + * cpumask: introduce new APIs + * mm: switch node meminfo Active & Inactive pages to Kbytes + * Update MAINTAINERS file for the TPM device driver + * devcgroup: fix odd behaviour when writing 'a' to devices.allow + * doc: document the relax_domain_level kernel boot argument + * mmc: don't use DMA on newer ENE controllers + * mempolicy: mask off internal flags for userspace API + * x86 ACPI: normalize segment descriptor register on resume + * x86 ACPI: fix resume from suspend to RAM on uniprocessor x86-64 + * softlockup: print a module list on being stuck + * ide: fix hwif->gendev refcounting + * ide: ide_unregister() warm-plug bugfix + * ide: ide_unregister() locking bugfix + * ahci: give another shot at clearing all bits in irq_stat + * Fix clear_refs_write() use of struct mm_walk + * Move _RET_IP_ and _THIS_IP_ to include/linux/kernel.h + * Fix pagemap_read() use of struct mm_walk + * Linux 2.6.26-rc9 + * Revert "USB: don't explicitly reenable root-hub status interrupts" + * Revert "PCI: Correct last two HP entries in the bfsort whitelist" + * iwlwifi: fix incorrect 5GHz rates reported in monitor mode + * iwlwifi: drop skb silently for Tx request in monitor mode + * libertas: support USB persistence on suspend/resume (resend) + * tcp: net/ipv4/tcp.c needs linux/scatterlist.h + * tcp: fix a size_t < 0 comparison in tcp_read_sock + * bridge: fix use-after-free in br_cleanup_bridges() + * Add missing skb->dev assignment in Frame Relay RX code + * forcedeth: fix lockdep warning on ethtool -s + * ehea: fix might sleep problem + * ehea: add MODULE_DEVICE_TABLE + * ehea: fix race condition + * ehea: Access iph->tot_len with correct endianness + * pasemi_mac: Access iph->tot_len with correct endianness + * ibm_newemac: Fixes kernel crashes when speed of cable connected changes + * ibm_newemac: Fixes entry of short packets + * fs_enet: restore promiscuous and multicast settings in restart() + * can: add sanity checks + * x86: KVM guest: Add memory clobber to hypercalls + * KVM: IOAPIC: Fix level-triggered irq injection hang + * [SCSI] erase invalid data returned by device + * pxamci: fix byte aligned DMA transfers + * vsprintf: split out '%s' handling logic + * vsprintf: split out '%p' handling logic + * vsprintf: add infrastructure support for extended '%p' specifiers + * vsprintf: add support for '%pS' and '%pF' pointer formats + * powerpc: Fix unterminated of_device_id array in legacy_serial.c + * [UML] fix gcc ICEs and unresolved externs + * ocfs2/dlm: Fixes oops in dlm_new_lockres() + * hostap_cs: correct poor NULL checks in suspend/resume routines + * drivers/net/wireless/iwlwifi/iwl-3945.c Fix type issue on 64bit + * mac80211: move netif_carrier_on to after + ieee80211_bss_info_change_notify + * mac80211: Only flush workqueue when last interface was removed + * zd1211rw: add ID for AirTies WUS-201 + * ssb-pcicore: Fix IRQ-vector init on embedded devices + * mac80211: don't report selected IBSS when not found + * crypto: tcrypt - Fix memory leak in test_cipher + * sctp: Mark the tsn as received after all allocations finish + * [S390] protect _PAGE_SPECIAL bit against mprotect + * irda: via-ircc proper dma freeing + * irda: New device ID for nsc-ircc + * irda: Fix netlink error path return value + * [SCSI] mptspi: fix oops in mptspi_dv_renegotiate_work() + * Correct hash flushing from huge_ptep_set_wrprotect() + * ide: add __ide_default_irq() inline helper + * palm_bk3710: fix IDECLK period calculation + * it8213: fix return value in it8213_init_one() + * [MIPS] Atlas, decstation: Fix section mismatches triggered by + defconfigs + * [MIPS] Fix 32bit kernels on R4k with 128 byte cache line size + * NFS: Fix readdir cache invalidation + * SUNRPC: Fix a double-free in rpcbind + * SUNRPC: Fix an rpcbind breakage for the case of IPv6 lookups + * reiserfs: discard prealloc in reiserfs_delete_inode + * Fix broken fix for fsl-diu-db + * RDMA/cxgb3: Fix regression caused by class_device -> device conversion + * ipv6: fix race between ipv6_del_addr and DAD timer + * sctp: Add documentation for sctp sysctl variable + * kernel/printk.c: Made printk_recursion_bug_msg static. + * powerpc: Add missing reference to coherent_dma_mask + * rc80211_pid: Fix fast_start parameter handling + * rt2x00: Disable synchronization during initialization + * zd1211rw: stop beacons on remove_interface + * libertas: fix memory alignment problems on the blackfin + * netfilter: nf_conntrack_tcp: fix endless loop + * netfilter: nf_nat_snmp_basic: fix a range check in NAT for SNMP + * md: ensure all blocks are uptodate or locked when syncing + * sched: fix cpu hotplug + * x86: fix /dev/mem compatibility under PAT + * crypto: chainiv - Invoke completion function + * ocfs2: Fix flags in ocfs2_file_lock + * kernel/kprobes.c: Made kprobe_blacklist static. + * arch/x86/kernel/.gitignore: Added vmlinux.lds to .gitignore file + because it shouldn't be tracked. + * ftrace: Documentation + * Fix PREEMPT_RCU without HOTPLUG_CPU + * sched: fix cpu hotplug, cleanup + * exec: fix stack excutability without PT_GNU_STACK + * slub: Fix use-after-preempt of per-CPU data structure + * Documentation: clarify tcp_{r,w}mem sysctl docs + * ip: sysctl documentation cleanup + * tcp: correct kcalloc usage + * ipv4: fib_trie: Fix lookup error return + * netlabel: netlink_unicast calls kfree_skb on error path by itself + * ipv6: missed namespace context in ipv6_rthdr_rcv + * xfrm: Add a XFRM_STATE_AF_UNSPEC flag to xfrm_usersa_info + * tun: Persistent devices can get stuck in xoff state + * tpm: add Intel TPM TIS device HID + * rapidio: fix device reference counting + * Fix name of Russell King in various comments + * rtc: fix reported IRQ rate for when HPET is enabled + * libata-acpi: filter out DIPM enable + * Added Targa Visionary 1000 IDE adapter to pata_sis.c + * libata-acpi: don't call sleeping function from invalid context + * Fix reference counting race on log buffers + * [SCSI] ipr: Fix HDIO_GET_IDENTITY oops for SATA devices + * IPMI: return correct value from ipmi_write + * x86: fix ldt limit for 64 bit + * [SCSI] fusion: default MSI to disabled for SPI and FC controllers + * [SCSI] bsg: fix oops on remove + * drivers/char/pcmcia/ipwireless/hardware.c fix resource leak + * drivers/isdn/i4l/isdn_common.c fix small resource leak + * fbdev: bugfix for multiprocess defio + * serial8250: sanity check nr_uarts on all paths. + * ov7670: clean up ov7670_read semantics + * rtc-fm3130: fix chip naming + * rtc-pcf8563: add chip id + * OProfile kernel maintainership changes + * frv: fix irqs_disabled() to return an int, not an unsigned long + * cifs: fix inode leak in cifs_get_inode_info_unix + * cifs: fix wksidarr declaration to be big-endian friendly + * cpusets, hotplug, scheduler: fix scheduler domain breakage + * Documentation/HOWTO: correct wrong kernel bugzilla FAQ URL + * devcgroup: always show positive major/minor num + * devcgroup: fix permission check when adding entry to child cgroup + * Linux 2.6.26 + + -- Ben Collins Mon, 14 Jul 2008 13:41:50 -0400 + +linux (2.6.26-3.9) intrepid; urgency=low + + * abi: Add dca and ioatdma to modules.ignore + + [ 2.6.26-3.8 ] + + [ Ben Collins ] + + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add heci to kconfig/kbuild + * config: Enable heci module on all flavours + * dm-bbr: Update to get it to compile with 2.6.26 + * config: Enable dm-bbr + * ubuntu: Add some media drivers + * config: Enable misc media drivers + * udeb: Switch to uvesafb in fb-modules + * abi: Add more modules to ignore (known) + + [ 2.6.26-3.7 ] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + - LP: #163075 + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Cleanup arches + * build: Remove remnants of unused binary-custom infrastructure + * build: Remove disable_d_i (not needed) and cleanup ppa build stuff + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * acer-acpi: Fix makefile + * x86/Kconfig: Fix missing quote for ubuntu Kconfig source + * ubuntu: Add iscsitarget module + * ubuntu: Added Amiga FS driver + * ubuntu: Add squashfs driver + * ubuntu: Remove asfs (Amiga FS). Need to be in linux-ports instead + * squashfs: Move headers to real include directory + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Move third-party includes to ubuntu/include + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * ubuntu/Makefile: Fixup dm-raid4-5 and add kludge for kbuild + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + * build: Disable xd block device (ancient) + * ndiswrapper: Fixup makefile + * d-i: Remove efi-modules. The only module, efivars, is built-in + * build: Remove install-source, obsolete and caused build failure + * Ubuntu-2.6.26-1.3 + * build: linux-doc rules got broken when disabling html side. Fixed now. + * Ubuntu-2.6.26-1.4 + * x86: Update to -rc6 allows CONFIG_PCI_OLPC to work with PCI_GOANY + * d-i: Make virtio-ring optional (it's built-in on i386) + * Ubuntu-2.6.26-1.4 + * Ubuntu-2.6.26-1.5 + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + * Ubuntu-2.6.26-2.6 + * Use makedumpfile to generate a vmcoreinfo file. + * build: Build-Depend on makedumpfile for vmcoreinfo generation + * build: Remove debug print from git-ubuntu-log + * Updated configs for -rc7 + * build: postinst, do not call depmod with -F + * config: Enable rtc-cmos as a built-in driver. + * control: Provide ndiswrapper-modules-1.9 + * build: Generate vmcoreinfo in image build for crashdumps without debug + image + * config: Disable vesafb, since we'll prefer uvesafb + * build: Copy uvesafb module to initrd mod directory + * abi-check: New, more robust script + * config: Enable heap randomization by default + * abi-check: Cleanup output and call with perl (not $SHELL) + * abi: Ignore missing vesafb (known) + * config: Disable pcspkr (in favor of snd-pcsp) + * swap: Add notify_swap_entry_free callback for compcache + * compcache: Added ram backed compressed swap module + * ubuntu: Enable kbuild and kconfig for compcache + * config: Enable compcache and tlsf allocator as modules + * config: Updated for -rc8. Disables XEN on i386 + * config: Switch i386-server to 64G, enable PAE, 64-bit res, and XEN + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Enable build of misc/ subdir + * config: Enable misc drivers + * aufs: Fix warning about single non-string-literal arg to printf style + function + * drivers: Remove some duplicate device entries in various modules + * config: Disable some duplicate drivers + * keyspan: Remove duplicate device ID's + * check-aliases: Cleanup output, and fix rolling checks + * ubuntu: Disable dm-bbr for now + * dm-bbr: First cut at forward portiong. Still needs work. + * ubuntu: Disable dm-bbr in kbuild/kconfig + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + - LP: #175834 + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: airprime.c supports more devices + - LP: #208250 + * SAUCE: Enable speedstep for sonoma processors. + - LP: #132271 + * Add dm-loop + * Add dm-loop BOM + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers OriginalAuthor: + Pascal Terjan Bug: #137686 + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. Bug: + #140511 + * SAUCE: Lower warning level of pci resource allocation messages. Bug: + 159241 + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * Added the debian directory. Ignore: yes + * Add support for UBUNTUINCLUDE Ignore: yes + * LUM headers go in /usr/src Ignore: yes + * First pass at 2.6.25 configs Ignore: yes + * i386 -generic builds. Ignore: yes + * SAUCE: Increase CONFIG_IDE_MAX_HWIFS to 8 (from 4) + * SAUCE: Add extra headers to linux-libc-dev OriginalAuthor: Soren Hansen + OriginalLocation: + https://lists.ubuntu.com/archives/kernel-team/2007-November/001891.html + * Set CONFIG_DEVKMEM=n Ignore: yes + * Enabled ALSA and CGROUPS for i386 Ignore: yes + * Enabled amd64 configs. Ignore: yes + * CONFIG_STANDALONE=n Ignore: yes + * CONFIG_BLK_DEV_4DRIVES=n for i386 Ignore: yes + * CONFIG: CONFIG_DEFAULT_RELATIME=y for all flavours. Ignore: yes + * Set CONFIG_EDD_OFF=y Ignore: yes + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + OriginalAuthor: Mario Limonciello Bug: + #209715 + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch OriginalAuthor: Matthew Garrett + Bug: #201591 + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + OriginalAuthor: Klaus S. Madsen + OriginalAuthor: Chuck Short + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: orinoco_cs.ko missing + * Set CONFIG_FB_VESA=m for i386/amd64 Ignore: yes + * Set CONFIG_PM_DISABLE_CONSOLE=y for all flavours Ignore: yes + * Thorough review of amd64 -generic config Ignore: yes + * Build PPA packages for Hardy until the Intrepid archive is opened. + * Deleted obsolete flavours Ignore: yes + * Don't build docs for PPA Ignore: yes + * Build all standard packages in PPA. Ignore: yes + * Remove duplicate USB ids + * SAUCE: DVB-USB UMT-010 driver oops on install Bug: #115284 + * Update configs after rebase to 2.6.26-rc1 Ignore: yes + * Update configs after rebase Ignore: yes + * Disable V4L until the build issues get ironed out. Ignore: yes + * Update configs after rebase. Ignore: yes + * Another device enable pass Ignore: yes + * Update configs after merge. Ignore: yes + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + * Enabled CONFIG_CIFS_DFS_UPCALL=y and CONFIG_CIFS_UPCALL=y + - LP: #236830 + + [Upstream Kernel Changes] + + * Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working" + * mac80211: detect driver tx bugs + * hwmon: (lm85) Fix function RANGE_TO_REG() + * hwmon: (adt7473) Initialize max_duty_at_overheat before use + * hwmon: Update the sysfs interface documentation + * hwmon: (abituguru3) Identify Abit AW8D board as such + * hwmon: (w83791d) new maintainer + * hwmon: (abituguru3) update driver detection + * hwmon: (lm75) sensor reading bugfix + * ipv6: Remove options header when setsockopt's optlen is 0 + * ipv6: Drop packets for loopback address from outside of the box. + * sched: rt: dont stop the period timer when there are tasks wanting to + run + * sched: fix wait_for_completion_timeout() spurious failure under heavy + load + * x86: fix NULL pointer deref in __switch_to + * xen: Use wmb instead of rmb in xen_evtchn_do_upcall(). + * xen: mask unwanted pte bits in __supported_pte_mask + * xen: don't drop NX bit + * sched: refactor wait_for_completion_timeout() + * Ext4: Fix online resize block group descriptor corruption + * [IA64] SN2: security hole in sn2_ptc_proc_write + * alpha: fix module load failures on smp (bug #10926) + * alpha: link failure fix + * alpha: fix compile failures with gcc-4.3 (bug #10438) + * alpha: resurrect Cypress IDE quirk + * pppoe: warning fix + * sctp: Make sure N * sizeof(union sctp_addr) does not overflow. + * netns: Don't receive new packets in a dead network namespace. + * Add return value to reserve_bootmem_node() + * Slab: Fix memory leak in fallback_alloc() + * Fix performance regression on lmbench select benchmark + * ALSA: aw2 - Fix Oops at initialization + * ALSA: sb - Fix wrong assertions + * futexes: fix fault handling in futex_lock_pi + * IB/mthca: Clear ICM pages before handing to FW + * tty_driver: Update required method documentation + * removed unused var real_tty on n_tty_ioctl() + * Fix ZERO_PAGE breakage with vmware + * mm: fix race in COW logic + * NFS: Reduce the NFS mount code stack usage. + * NFS: Fix filehandle size comparisons in the mount code + * NFS: nfs_updatepage(): don't mark page as dirty if an error occurred + * alpha: fix compile error in arch/alpha/mm/init.c + * KVM: Fix race between timer migration and vcpu migration + * KVM: close timer injection race window in __vcpu_run + * KVM: MMU: Fix rmap_write_protect() hugepage iteration bug + * KVM: MMU: large page update_pte issue with non-PAE 32-bit guests + (resend) + * KVM: MMU: Fix oops on guest userspace access to guest pagetable + * KVM: ioapic: fix lost interrupt when changing a device's irq + * KVM: VMX: Fix host msr corruption with preemption enabled + * [GFS2] BUG: unable to handle kernel paging request at ffff81002690e000 + * xen: remove support for non-PAE 32-bit + * kgdb: documentation update - remove kgdboe + * kgdb: sparse fix + * [IA64] Fix boot failure on ia64/sn2 + * [IA64] Handle count==0 in sn2_ptc_proc_write() + * [IA64] Eliminate NULL test after alloc_bootmem in iosapic_alloc_rte() + * [GFS2] fix gfs2 block allocation (cleaned up) + * x86: Add structs and functions for paravirt clocksource + * x86: Make xen use the paravirt clocksource structs and functions + * KVM: Make kvm host use the paravirt clocksource structs + * x86: KVM guest: Use the paravirt clocksource structs and functions + * KVM: Remove now unused structs from kvm_para.h + * enable bus mastering on i915 at resume time + * Linux 2.6.26-rc8 + * # Ubuntu external driver commit. + * # Ubuntu commit template. + + -- Ben Collins Sat, 21 Jun 2008 09:05:15 -0400 + +linux (2.6.26-2.6) intrepid; urgency=low + + [Ben Collins] + + * Revert "SAUCE: Export symbols for aufs (in lum) (not needed) + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + + [Colin Ian King] + + * Add dm-loop + + [Tim Gardner] + + * Revert "SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to + syslog (merged upstream) + + -- Ben Collins Mon, 16 Jun 2008 10:56:01 -0400 + +linux (2.6.26-1.5) intrepid; urgency=low + + * d-i: Make virtio-ring optional (it's built-in on i386) + * Rebased on 2.6.26-rc6 + + [Ubuntu-2.6.26-1.4 Changes below] + + * build: linux-doc rules got broken when disabling html side. Fixed now. + + [Ubuntu-2.6.26-1.3 Changes below] + + * build: Remove install-source, obsolete and caused build failure + + [Ubuntu-2.6.26-1.2 Changes below] + + * Remove efi-modules from d-i module list (efivars is built-in). Caused a + build failure. + * Patch to arch/x86/xen/time.c to remove __divdi3 usage (build failure on + i386). + + [Ubuntu-2.6.26-1.1 Changes below] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: Add AGP support for Radeon Mobility 9000 chipset + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Remove remnants of unused binary-custom infrastructure + * mmc_block: Fix bad allocation on 64-bit (zero len array) + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add squashfs driver + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: Enable speedstep for sonoma processors. + * SAUCE: airprime.c supports more devices + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. + * SAUCE: Lower warning level of pci resource allocation messages. + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * SAUCE: hdaps module does not load on Thinkpad T61P + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Export symbols for aufs (in lum). + * SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to syslog + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: Modualrize vesafb + * SAUCE: DVB-USB UMT-010 driver oops on install + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + + -- Ben Collins Wed, 11 Jun 2008 05:28:35 -0400 --- linux-4.4.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-4.4.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,468 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=y +CONFIG_ATM=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CONFIGFS_FS=m +CONFIG_CRAMFS=m +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATION=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HPET=y +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HUGETLB_PAGE=y +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +# CONFIG_HZ_100 is not set +CONFIG_I2C=y +# CONFIG_I2C_SLAVE is not set +CONFIG_I6300ESB_WDT=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INPUT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_XZ is not set +CONFIG_KVM=m +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LIVEPATCH=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_VX855=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NODES_SHIFT=6 +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=256 +CONFIG_NR_ZONES_EXTENDED=y +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +CONFIG_NVRAM=m +CONFIG_N_GSM=m +# CONFIG_OF is not set +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PARPORT=m +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCMCIA=m +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RANDOMIZE_BASE_MAX_OFFSET=0x40000000 +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_FSL is not set +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_EMU10K1_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +# CONFIG_STANDALONE is not set +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_SYS_HYPERVISOR=y +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UPROBES=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VGASTATE=m +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_XEN=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-4.4.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,9 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-4.4.0.orig/debian.master/config/amd64/config.flavour.lowlatency +++ linux-4.4.0/debian.master/config/amd64/config.flavour.lowlatency @@ -0,0 +1,9 @@ +# +# Config options for config.flavour.lowlatency automatically generated by splitconfig.pl +# +CONFIG_HZ=1000 +CONFIG_HZ_1000=y +# CONFIG_HZ_250 is not set +CONFIG_IRQ_FORCED_THREADING_DEFAULT=y +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-4.4.0.orig/debian.master/config/annotations +++ linux-4.4.0/debian.master/config/annotations @@ -0,0 +1,10286 @@ +# Menu: HEADER +# FORMAT: 2 +# ARCH: x86 arm powerpc s390 + +# Mark debugging symbols. +# exceptions +CONFIG_DEBUG_FS note +CONFIG_DEBUG_KERNEL note + +# Menu: ROOT +CONFIG_RELOCATABLE policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_LIVEPATCH policy<{'amd64': 'y', 's390x': 'n'}> + +# Menu: ARM Accelerated Cryptographic Algorithms >> Architecture: arm +CONFIG_ARM_CRYPTO policy<{'armhf': 'y'}> +CONFIG_CRYPTO_SHA1_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA1_ARM_NEON policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA1_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA2_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA256_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA512_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM_BS policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_GHASH_ARM_CE policy<{'armhf': 'm'}> + +# Menu: Advanced setup >> Architecture: powerpc + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options >> Architecture: powerpc +CONFIG_ADVANCED_OPTIONS policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_LOWMEM_CAM_NUM policy<{'powerpc-powerpc-e500mc': '3'}> + +# Menu: Architecture: arm +CONFIG_ARM_DMA_IOMMU_ALIGNMENT policy<{'armhf': '8'}> +CONFIG_ARM_PATCH_PHYS_VIRT policy<{'armhf': 'y'}> + +# Menu: Architecture: arm64 +CONFIG_ARM64_VA_BITS policy<{'arm64': '48'}> +CONFIG_ARM64_VA_BITS mark note + +# Menu: Architecture: powerpc +CONFIG_PPC64 policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_NR_IRQS policy<{'powerpc': '512', 'ppc64el': '512'}> +CONFIG_SCOM_DEBUGFS policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Architecture: x86 +CONFIG_64BIT policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'n', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Boot options +CONFIG_CMDLINE policy<{'arm64': '"console=ttyAMA0"', 'armhf': '""'}> +CONFIG_KEXEC policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRASH_DUMP policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_CRASH_DUMP mark note + +# Menu: Boot options >> Architecture: arm +CONFIG_USE_OF policy<{'armhf': 'y'}> +CONFIG_ATAGS policy<{'armhf': 'y'}> +CONFIG_DEPRECATED_PARAM_STRUCT policy<{'armhf': 'n'}> +CONFIG_ARM_APPENDED_DTB policy<{'armhf': 'y'}> +CONFIG_ARM_ATAG_DTB_COMPAT policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ATAGS_PROC policy<{'armhf': 'y'}> +CONFIG_AUTO_ZRELADDR policy<{'armhf': 'y'}> +# +CONFIG_ARM_ATAG_DTB_COMPAT flag + +# Menu: Boot options >> Kernel command line type +CONFIG_CMDLINE_FORCE policy<{'arm64': 'n'}> + +# Menu: Boot options >> Kernel command line type >> Architecture: arm +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER policy<{'armhf-generic': 'n'}> +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND policy<{'armhf-generic': 'y'}> + +# Menu: Bus options (PCI etc.) +CONFIG_ISA policy<{'i386': 'y', 'powerpc-powerpc-smp': 'n'}> + +# Menu: Bus options (PCI etc.) >> Architecture: arm + +# Menu: Bus options (PCI etc.) >> Architecture: powerpc +CONFIG_FSL_LBC policy<{'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Bus options (PCI etc.) >> Architecture: s390 +CONFIG_QDIO policy<{'s390x': 'm'}> +CONFIG_CHSC_SCH policy<{'s390x': 'm'}> +CONFIG_SCM_BUS policy<{'s390x': 'y'}> +CONFIG_EADM_SCH policy<{'s390x': 'm'}> + +# Menu: Bus options (PCI etc.) >> Architecture: x86 +CONFIG_ISA_DMA_API policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCx200 policy<{'i386': 'm'}> +CONFIG_SCx200HR_TIMER policy<{'i386': 'm'}> +CONFIG_ALIX policy<{'i386': 'y'}> +CONFIG_NET5501 policy<{'i386': 'y'}> +CONFIG_GEOS policy<{'i386': 'y'}> +CONFIG_X86_SYSFB policy<{'amd64': 'n', 'i386': 'n'}> +# +CONFIG_X86_SYSFB flag + +# Menu: Bus options (PCI etc.) >> EISA support +CONFIG_EISA_VLB_PRIMING policy<{'i386': 'y'}> +CONFIG_EISA_PCI_EISA policy<{'i386': 'y'}> +CONFIG_EISA_VIRTUAL_ROOT policy<{'i386': 'y'}> +CONFIG_EISA_NAMES policy<{'i386': 'y'}> + +# Menu: Bus options (PCI etc.) >> EISA support >> Architecture: x86 +CONFIG_EISA policy<{'i386': 'y'}> + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support +CONFIG_PCCARD policy<{'amd64': 'm', 'armhf': 'n', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'n'}> +CONFIG_CARDBUS policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> 16-bit PCMCIA support +CONFIG_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 's390x': 'n'}> +CONFIG_PCMCIA_LOAD_CIS policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PD6729 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_I82092 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_I82365 policy<{'i386': 'm'}> +CONFIG_TCIC policy<{'i386': 'm'}> +CONFIG_ELECTRA_CF policy<{'powerpc-powerpc64-smp': 'm'}> + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> CardBus yenta-compatible bridge support +CONFIG_YENTA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_YENTA_O2 policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_YENTA_RICOH policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_YENTA_TI policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_YENTA_ENE_TUNE policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_YENTA_TOSHIBA policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> + +# Menu: Bus options (PCI etc.) >> PCI support +CONFIG_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_MSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCI_REALLOC_ENABLE_AUTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_STUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XEN_PCIDEV_FRONTEND policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HT_IRQ policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_PCI_IOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_PRI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCI_PASID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> Architecture: s390 +CONFIG_PCI_NR_FUNCTIONS policy<{'s390x': '64'}> +CONFIG_PCI_NR_MSI policy<{'s390x': '256'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> Architecture: x86 +CONFIG_PCI_MMCONFIG policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_PCI_CNB20LE_QUIRK policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support +CONFIG_PCIEPORTBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_PCIE policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_PCIEAER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIE_ECRC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIEAER_INJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIEASPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIEASPM_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_PCIEASPM_DEBUG note +CONFIG_HOTPLUG_PCI_PCIE mark note +CONFIG_PCIEAER_INJECT flag + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support >> Default ASPM policy +CONFIG_PCIEASPM_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIEASPM_POWERSAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIEASPM_PERFORMANCE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_PCIEASPM_DEFAULT note + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI access mode >> Architecture: x86 +CONFIG_PCI_GOBIOS policy<{'i386': 'n'}> +CONFIG_PCI_GOMMCONFIG policy<{'i386': 'n'}> +CONFIG_PCI_GODIRECT policy<{'i386': 'n'}> +CONFIG_PCI_GOANY policy<{'i386': 'y'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI host controller drivers +CONFIG_PCI_DRA7XX policy<{'armhf': 'y'}> +CONFIG_PCI_MVEBU policy<{'armhf': 'y'}> +CONFIG_PCI_EXYNOS policy<{'armhf': 'y'}> +CONFIG_PCI_IMX6 policy<{'armhf-generic': 'y'}> +CONFIG_PCI_TEGRA policy<{'armhf-generic': 'y'}> +CONFIG_PCI_RCAR_GEN2 policy<{'armhf': 'y'}> +CONFIG_PCI_RCAR_GEN2_PCIE policy<{'armhf': 'y'}> +CONFIG_PCI_HOST_GENERIC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCI_XGENE policy<{'arm64': 'y'}> +CONFIG_PCI_XGENE_MSI policy<{'arm64': 'y'}> +CONFIG_PCI_LAYERSCAPE policy<{'armhf': 'n'}> +CONFIG_PCIE_IPROC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PCIE_IPROC_PLATFORM policy<{'arm64': 'm'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support +CONFIG_RAPIDIO policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RAPIDIO_TSI721 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_DISC_TIMEOUT policy<{'amd64': '30', 'i386': '30', 'powerpc': '30', 'ppc64el': '30'}> +CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RAPIDIO_DMA_ENGINE policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RAPIDIO_DEBUG policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Architecture: powerpc +CONFIG_FSL_RIO policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Enumeration method +CONFIG_RAPIDIO_ENUM_BASIC policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> RapidIO Switch drivers +CONFIG_RAPIDIO_TSI57X policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_CPS_XX policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_TSI568 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_CPS_GEN2 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> Support for PCI Hotplug +CONFIG_HOTPLUG_PCI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_COMPAQ policy<{'i386': 'm'}> +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM policy<{'i386': 'y'}> +CONFIG_HOTPLUG_PCI_IBM policy<{'i386': 'm'}> +CONFIG_HOTPLUG_PCI_ACPI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_HOTPLUG_PCI_ACPI_IBM policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_HOTPLUG_PCI_CPCI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_CPCI_ZT5550 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HOTPLUG_PCI_CPCI_GENERIC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HOTPLUG_PCI_SHPC policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HOTPLUG_PCI_RPA policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_HOTPLUG_PCI_RPA_DLPAR policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_HOTPLUG_PCI_S390 policy<{'s390x': 'y'}> +# +CONFIG_HOTPLUG_PCI_SHPC note + +# Menu: Cryptographic API +CONFIG_CRYPTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_RSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MANAGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_GF128MUL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_NULL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_PCRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRYPTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MCRYPTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_AUTHENC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_GCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CHACHA20POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SEQIV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ECHAINIV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CBC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CTR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ECB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_LRW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_PCBC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_XTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_HMAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_XCBC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_VMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRC32C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CRC32C_INTEL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CRYPTO_CRC32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRC32_PCLMUL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_CRCT10DIF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CRCT10DIF_PCLMUL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_GHASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_POLY1305_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_MD4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MD5 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_MD5_PPC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_MICHAEL_MIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD256 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_SHA1_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA256_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA512_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA1_PPC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_SHA1_MB policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA256 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_SHA512 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_TGR192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_WP512 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_AES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_AES_586 policy<{'i386': 'm'}> +CONFIG_CRYPTO_AES_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_AES_NI_INTEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_ANUBIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ARC4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLOWFISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLOWFISH_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAMELLIA_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAST5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAST5_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAST6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAST6_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_DES3_EDE_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_FCRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_KHAZAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SALSA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SALSA20_586 policy<{'i386': 'm'}> +CONFIG_CRYPTO_SALSA20_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CHACHA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CHACHA20_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SERPENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SERPENT_SSE2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SERPENT_SSE2_586 policy<{'i386': 'm'}> +CONFIG_CRYPTO_SERPENT_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SERPENT_AVX2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_TEA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TWOFISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TWOFISH_586 policy<{'i386': 'm'}> +CONFIG_CRYPTO_TWOFISH_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY policy<{'amd64': 'm'}> +CONFIG_CRYPTO_TWOFISH_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEFLATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ZLIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LZ4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LZ4HC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ANSI_CPRNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_JITTERENTROPY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_HASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_SKCIPHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_RNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_AEAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS flag +CONFIG_CRYPTO_TEST flag +CONFIG_CRYPTO_SHA512 note + +# Menu: Cryptographic API >> Asymmetric (public-key cryptographic) key type +CONFIG_ASYMMETRIC_KEY_TYPE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PUBLIC_KEY_ALGO_RSA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_X509_CERTIFICATE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PKCS7_MESSAGE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PKCS7_TEST_KEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SIGNED_PE_FILE_VERIFICATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_ASYMMETRIC_KEY_TYPE note +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE note +CONFIG_PUBLIC_KEY_ALGO_RSA note +CONFIG_X509_CERTIFICATE_PARSER note + +# Menu: Cryptographic API >> Certificates for signature checking +CONFIG_MODULE_SIG_KEY policy<{'amd64': '"certs/signing_key.pem"', 'arm64': '"certs/signing_key.pem"', 'armhf': '"certs/signing_key.pem"', 'i386': '"certs/signing_key.pem"', 'powerpc': '"certs/signing_key.pem"', 'ppc64el': '"certs/signing_key.pem"', 's390x': '"certs/signing_key.pem"'}> +CONFIG_SYSTEM_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSTEM_TRUSTED_KEYS policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> + +# Menu: Cryptographic API >> Hardware crypto devices +CONFIG_CRYPTO_HW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DEV_PADLOCK policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CRYPTO_DEV_PADLOCK_AES policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_PADLOCK_SHA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_GEODE policy<{'i386': 'm'}> +CONFIG_ZCRYPT policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA1_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA256_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA512_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_DES_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_AES_S390 policy<{'s390x': 'm'}> +CONFIG_S390_PRNG policy<{'s390x': 'm'}> +CONFIG_CRYPTO_GHASH_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_DEV_MV_CESA policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_MARVELL_CESA policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_HIFN_795X policy<{'armhf-generic': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_CRYPTO_DEV_HIFN_795X_RNG policy<{'armhf-generic': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG policy<{'armhf-generic': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_CRYPTO_DEV_TALITOS policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CRYPTO_DEV_TALITOS2 policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_CRYPTO_DEV_OMAP_SHAM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OMAP_AES policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OMAP_DES policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_SAHARA policy<{'armhf-generic': 'm'}> +CONFIG_CRYPTO_DEV_S5P policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_NX policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CRYPTO_DEV_NX_ENCRYPT policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_CCP policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_CRYPTO_DEV_CCP_DD policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_CCP_CRYPTO policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_QAT_DH895xCC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CRYPTO_DEV_QCE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_DEV_VMX policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CRYPTO_DEV_VMX_ENCRYPT policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> + +# Menu: Cryptographic API >> Hardware crypto devices >> Freescale CAAM Job Ring driver backend +CONFIG_CRYPTO_DEV_FSL_CAAM_JR policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE policy<{'armhf-generic': '9', 'powerpc-powerpc64-emb': '9', 'powerpc-powerpc-e500mc': '9'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC policy<{'armhf-generic': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD policy<{'armhf-generic': '255', 'powerpc-powerpc64-emb': '255', 'powerpc-powerpc-e500mc': '255'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD policy<{'armhf-generic': '2048', 'powerpc-powerpc64-emb': '2048', 'powerpc-powerpc-e500mc': '2048'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Cryptographic API >> NIST SP800-90A DRBG +CONFIG_CRYPTO_DRBG_MENU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_DRBG_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DRBG_CTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers +CONFIG_TEGRA_AHB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_CONTROLLER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_THUNDERBOLT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) +CONFIG_IDE policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) >> IDE Mode for AMD Alchemy Au1200 + +# Menu: Device Drivers >> Accessibility support +CONFIG_ACCESSIBILITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_ACCESSIBILITY flag + +# Menu: Device Drivers >> Adaptive Voltage Scaling class support +CONFIG_POWER_AVS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Device Drivers >> Android +CONFIG_ANDROID policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Auxiliary Display support +CONFIG_AUXDISPLAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KS0108 policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KS0108_DELAY policy<{'amd64': '2', 'armhf': '2', 'i386': '2', 'powerpc': '2', 'ppc64el': '2'}> +CONFIG_CFAG12864B policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CFAG12864B_RATE policy<{'amd64': '20', 'i386': '20'}> + +# Menu: Device Drivers >> Block devices +CONFIG_BLK_DEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_NULL_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_FD policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAC_FLOPPY policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_BLK_DEV_PCIESSD_MTIP32XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ZRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZRAM_LZ4_COMPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_CPQ_CISS_DA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CISS_SCSI_TAPE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BLK_DEV_DAC960 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_UMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_LOOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_LOOP_MIN_COUNT policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8', 's390x': '8'}> +CONFIG_BLK_DEV_CRYPTOLOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_DRBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DRBD_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BLK_DEV_NBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_NVME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_SKD policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_OSD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_SX8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CDROM_PKTCDVD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CDROM_PKTCDVD_BUFFERS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_CDROM_PKTCDVD_WCACHE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATA_OVER_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MG_DISK policy<{'armhf': 'm'}> +CONFIG_MG_DISK_RES policy<{'armhf': '0'}> +CONFIG_BLK_DEV_XPRAM policy<{'s390x': 'n'}> +CONFIG_DCSSBLK policy<{'s390x': 'm'}> +CONFIG_SCM_BLOCK policy<{'s390x': 'm'}> +CONFIG_SCM_BLOCK_CLUSTER_WRITE policy<{'s390x': 'y'}> +CONFIG_XEN_BLKDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XEN_BLKDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_VIRTIO_BLK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_HD policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_BLK_DEV_RBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_RSXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_BLK_DEV_UMEM note +CONFIG_CDROM_PKTCDVD_WCACHE mark +CONFIG_XEN_BLKDEV_FRONTEND note +CONFIG_VIRTIO_BLK note +CONFIG_BLK_DEV_HD note mark + +# Menu: Device Drivers >> Block devices >> Parallel port IDE device support +CONFIG_PARIDE policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PD policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PCD policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PF policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PT policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PG policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ATEN policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_BPCK policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_BPCK6 policy<{'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_PARIDE_COMM policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_DSTR policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FIT2 policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FIT3 policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_EPAT policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_EPATC8 policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PARIDE_EPIA policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FRIQ policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FRPW policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_KBIC policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_KTTI policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ON20 policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ON26 policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Block devices >> RAM block device support +CONFIG_BLK_DEV_RAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_RAM_COUNT policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'i386': '16', 'powerpc': '16', 'ppc64el': '16', 's390x': '16'}> +CONFIG_BLK_DEV_RAM_SIZE policy<{'amd64': '65536', 'arm64': '65536', 'armhf': '65536', 'i386': '65536', 'powerpc': '65536', 'ppc64el': '65536', 's390x': '65536'}> +CONFIG_BLK_DEV_RAM_DAX policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_BLK_DEV_RAM_SIZE mark note flag + +# Menu: Device Drivers >> Block devices >> Support for DASD devices +CONFIG_DASD policy<{'s390x': 'm'}> +CONFIG_DASD_PROFILE policy<{'s390x': 'y'}> +CONFIG_DASD_ECKD policy<{'s390x': 'm'}> +CONFIG_DASD_FBA policy<{'s390x': 'm'}> +CONFIG_DASD_DIAG policy<{'s390x': 'm'}> +CONFIG_DASD_EER policy<{'s390x': 'y'}> + +# Menu: Device Drivers >> Broadcom specific AMBA +CONFIG_BCMA_HOST_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Broadcom specific AMBA >> BCMA support +CONFIG_BCMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BCMA_HOST_SOC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_GMAC_CMN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Bus devices +CONFIG_ARM_CCI400_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_CCI500_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_CCN policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_BRCMSTB_GISB_ARB policy<{'armhf': 'y'}> +CONFIG_IMX_WEIM policy<{'armhf-generic': 'y'}> +CONFIG_OMAP_INTERCONNECT policy<{'armhf': 'y'}> +CONFIG_OMAP_OCP2SCP policy<{'armhf': 'm'}> +CONFIG_SIMPLE_PM_BUS policy<{'armhf': 'y'}> +CONFIG_VEXPRESS_CONFIG policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Character devices +CONFIG_DEVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEVKMEM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TTY_PRINTK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LP_CONSOLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HVC_CONSOLE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HVC_OLD_HVSI policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HVC_OPAL policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HVC_RTAS policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HVC_IUCV policy<{'s390x': 'y'}> +CONFIG_HVC_XEN policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_HVC_XEN_FRONTEND policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_HVC_UDBG policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HVC_DCC policy<{'armhf': 'n'}> +CONFIG_HVCS policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_VIRTIO_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IBM_BSR policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_NVRAM policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_DTLK policy<{'i386': 'm'}> +CONFIG_R3964 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_APPLICOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SONYPI policy<{'i386': 'm'}> +CONFIG_MWAVE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SCx200_GPIO policy<{'i386': 'm'}> +CONFIG_PC8736x_GPIO policy<{'i386': 'm'}> +CONFIG_NSC_GPIO policy<{'i386': 'm'}> +CONFIG_RAW_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MAX_RAW_DEVS policy<{'amd64': '256', 'arm64': '256', 'armhf': '256', 'i386': '256', 'powerpc': '256', 'ppc64el': '256'}> +CONFIG_HPET policy<{'amd64': 'y', 'arm64': 'n', 'i386': 'y'}> +CONFIG_HPET_MMAP policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HPET_MMAP_DEFAULT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HANGCHECK_TIMER policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TELCLOCK policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TN3270 policy<{'s390x': 'y'}> +CONFIG_TN3270_TTY policy<{'s390x': 'y'}> +CONFIG_TN3270_FS policy<{'s390x': 'm'}> +CONFIG_TN3270_CONSOLE policy<{'s390x': 'y'}> +CONFIG_TN3215 policy<{'s390x': 'y'}> +CONFIG_TN3215_CONSOLE policy<{'s390x': 'y'}> +CONFIG_SCLP_TTY policy<{'s390x': 'y'}> +CONFIG_SCLP_CONSOLE policy<{'s390x': 'y'}> +CONFIG_SCLP_VT220_TTY policy<{'s390x': 'y'}> +CONFIG_SCLP_VT220_CONSOLE policy<{'s390x': 'y'}> +CONFIG_SCLP_CPI policy<{'s390x': 'm'}> +CONFIG_SCLP_ASYNC policy<{'s390x': 'm'}> +CONFIG_SCLP_ASYNC_ID policy<{'s390x': '"000000000"'}> +CONFIG_HMC_DRV policy<{'s390x': 'm'}> +CONFIG_S390_TAPE policy<{'s390x': 'm'}> +CONFIG_S390_TAPE_34XX policy<{'s390x': 'm'}> +CONFIG_S390_TAPE_3590 policy<{'s390x': 'm'}> +CONFIG_VMLOGRDR policy<{'s390x': 'm'}> +CONFIG_VMCP policy<{'s390x': 'y'}> +CONFIG_MONREADER policy<{'s390x': 'm'}> +CONFIG_MONWRITER policy<{'s390x': 'm'}> +CONFIG_S390_VMUR policy<{'s390x': 'm'}> +CONFIG_XILLYBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_XILLYBUS_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_XILLYBUS_OF policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_DEVKMEM mark note +CONFIG_NVRAM mark note + +# Menu: Device Drivers >> Character devices >> Enable TTY +CONFIG_TTY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CONSOLE_TRANSLATIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VT_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VT_HW_CONSOLE_BINDING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_UNIX98_PTYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEVPTS_MULTIPLE_INSTANCES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LEGACY_PTYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LEGACY_PTY_COUNT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_NOZOMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_N_GSM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TRACE_ROUTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TRACE_SINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PPC_EPAPR_HV_BYTECHAN policy<{'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_N_GSM note + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Non-standard serial port support +CONFIG_SERIAL_NONSTANDARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ROCKETPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CYCLADES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CYZ_INTR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MOXA_INTELLIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOXA_SMARTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINK policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINKMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINK_GT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_N_HDLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Character devices >> Hardware Random Number Generator Core support +CONFIG_HW_RANDOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HW_RANDOM_TIMERIOMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HW_RANDOM_INTEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HW_RANDOM_AMD policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm'}> +CONFIG_HW_RANDOM_IPROC_RNG200 policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_GEODE policy<{'i386': 'm'}> +CONFIG_HW_RANDOM_VIA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HW_RANDOM_OMAP policy<{'armhf': 'm'}> +CONFIG_HW_RANDOM_OMAP3_ROM policy<{'armhf-generic': 'm'}> +CONFIG_HW_RANDOM_PASEMI policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_HW_RANDOM_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HW_RANDOM_PSERIES policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_HW_RANDOM_POWERNV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_HW_RANDOM_EXYNOS policy<{'armhf': 'm'}> +CONFIG_HW_RANDOM_TPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HW_RANDOM_MSM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_XGENE policy<{'arm64': 'm'}> +# +CONFIG_HW_RANDOM_ATMEL note + +# Menu: Device Drivers >> Character devices >> IPMI top-level message handler +CONFIG_IPMI_HANDLER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IPMI_PANIC_EVENT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IPMI_DEVICE_INTERFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_SI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_SI_PROBE_DEFAULTS policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPMI_SSIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_POWERNV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_POWEROFF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Character devices >> PCMCIA character devices +CONFIG_SYNCLINK_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_CARDMAN_4000 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_CARDMAN_4040 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_IPWIRELESS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers +CONFIG_SERIAL_AMBA_PL010 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIAL_AMBA_PL011 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_AMBA_PL011_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_KGDB_NMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_MESON policy<{'armhf': 'm'}> +CONFIG_SERIAL_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_SERIAL_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SERIAL_MAX3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_MAX310X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_IMX policy<{'armhf-generic': 'y'}> +CONFIG_SERIAL_IMX_CONSOLE policy<{'armhf-generic': 'y'}> +CONFIG_SERIAL_PMACZILOG policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_SERIAL_PMACZILOG_TTYS policy<{'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_SERIAL_PMACZILOG_CONSOLE policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_SERIAL_CPM policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_SERIAL_ICOM policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_JSM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_MSM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_MSM_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_OF_PLATFORM policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_OMAP policy<{'armhf': 'y'}> +CONFIG_SERIAL_OMAP_CONSOLE policy<{'armhf': 'y'}> +CONFIG_SERIAL_SCCNXP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SERIAL_SCCNXP_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_SC16IS7XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_SC16IS7XX_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_SC16IS7XX_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_TIMBERDALE policy<{'i386': 'm'}> +CONFIG_SERIAL_BCM63XX policy<{'armhf': 'm'}> +CONFIG_SERIAL_ALTERA_JTAGUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_IFX6X60 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_PCH_UART policy<{'i386': 'm'}> +CONFIG_SERIAL_XILINX_PS_UART policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_ARC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_ARC_NR_PORTS policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'i386': '1', 'powerpc': '1', 'ppc64el': '1'}> +CONFIG_SERIAL_RP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_RP2_NR_UARTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32'}> +CONFIG_SERIAL_FSL_LPUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_CONEXANT_DIGICOLOR policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_ST_ASC policy<{'armhf': 'm'}> +CONFIG_SERIAL_MEN_Z135 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_SPRD policy<{'arm64': 'm'}> +CONFIG_SERIAL_STM32 policy<{'armhf': 'm'}> +CONFIG_SERIAL_UARTLITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support +CONFIG_SERIAL_8250 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_8250_PNP policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_SERIAL_8250_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_SERIAL_8250_NR_UARTS policy<{'amd64': '48', 'arm64': '48', 'armhf': '48', 'i386': '48', 'powerpc': '48', 'ppc64el': '48'}> +CONFIG_SERIAL_8250_RUNTIME_UARTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32'}> +CONFIG_SERIAL_8250_DW policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_8250_EM policy<{'armhf': 'n'}> +CONFIG_SERIAL_8250_OMAP policy<{'armhf': 'm'}> +CONFIG_SERIAL_8250_FINTEK policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_SERIAL_8250_MT6577 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_8250_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_SERIAL_8250_INGENIC policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_SERIAL_8250_DW note + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options +CONFIG_SERIAL_8250_EXTENDED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_SHARE_IRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_DETECT_IRQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_8250_RSA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options >> Support more than 4 legacy serial ports +CONFIG_SERIAL_8250_MANY_PORTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_FOURPORT policy<{'i386': 'm'}> +CONFIG_SERIAL_8250_ACCENT policy<{'i386': 'm'}> +CONFIG_SERIAL_8250_BOCA policy<{'i386': 'm'}> +CONFIG_SERIAL_8250_EXAR_ST16C554 policy<{'i386': 'm'}> +CONFIG_SERIAL_8250_HUB6 policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers >> AT91 / AT32 on-chip serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Altera UART support +CONFIG_SERIAL_ALTERA_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_ALTERA_UART_MAXPORTS policy<{'amd64': '4', 'arm64': '4', 'armhf': '4', 'i386': '4', 'powerpc': '4', 'ppc64el': '4'}> +CONFIG_SERIAL_ALTERA_UART_BAUDRATE policy<{'amd64': '115200', 'arm64': '115200', 'armhf': '115200', 'i386': '115200', 'powerpc': '115200', 'ppc64el': '115200'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin SPORT emulate UART + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support >> UART Mode + +# Menu: Device Drivers >> Character devices >> Serial drivers >> SuperH SCI(F) serial port support +CONFIG_SERIAL_SH_SCI policy<{'armhf': 'm'}> +CONFIG_SERIAL_SH_SCI_NR_UARTS policy<{'armhf': '2'}> +CONFIG_SERIAL_SH_SCI_DMA policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Character devices >> Serial drivers >> TMPTX39XX/49XX SIO support + +# Menu: Device Drivers >> Character devices >> TPM Hardware Support +CONFIG_TCG_TPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCG_TIS policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_TCG_TIS_I2C_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_TIS_I2C_INFINEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_TIS_I2C_NUVOTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_NSC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TCG_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_INFINEON policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_TCG_IBMVTPM policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_TCG_XEN policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_TCG_CRB policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TCG_TIS_ST33ZP24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_TIS_ST33ZP24_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_TIS_ST33ZP24_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_TCG_TPM note + +# Menu: Device Drivers >> Clock Source drivers +CONFIG_ARM_ARCH_TIMER_EVTSTREAM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_TIMER_SP804 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SH_TIMER_CMT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SH_TIMER_MTU2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SH_TIMER_TMU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_EM_TIMER_STI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CLKSRC_VERSATILE policy<{'armhf': 'y'}> +CONFIG_CLKSRC_IMX_GPT policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework +CONFIG_COMMON_CLK_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_VERSATILE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_SP810 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_VEXPRESS_OSC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_MAX77802 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_SI5351 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_SI570 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_CDCE925 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_S2MPS11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CLK_TWL6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_CLK_QORIQ policy<{'armhf': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_COMMON_CLK_XGENE policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_CDCE706 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_COMMON_CLK_IPROC policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_HI6220 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_STUB_CLK_HI6220 policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Support for Qualcomm's clock controllers +CONFIG_COMMON_CLK_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_APQ_GCC_8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_APQ_MMCC_8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_GCC_806X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_LCC_806X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_LCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8974 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8974 policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Connector - unified userspace <-> kernelspace linker +CONFIG_CONNECTOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> DMA Engine support +CONFIG_DMADEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DMADEVICES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_AMBA_PL08X policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DMA_OMAP policy<{'armhf': 'y'}> +CONFIG_FSL_DMA policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_FSL_EDMA policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IMX_DMA policy<{'armhf-generic': 'm'}> +CONFIG_IMX_SDMA policy<{'armhf-generic': 'm'}> +CONFIG_IDMA64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INTEL_IOATDMA policy<{'amd64': 'm'}> +CONFIG_INTEL_MIC_X100_DMA policy<{'amd64': 'm'}> +CONFIG_K3_DMA policy<{'armhf': 'm'}> +CONFIG_MV_XOR policy<{'armhf': 'y'}> +CONFIG_MXS_DMA policy<{'armhf-generic': 'y'}> +CONFIG_MX3_IPU policy<{'armhf-generic': 'y'}> +CONFIG_MX3_IPU_IRQS policy<{'armhf-generic': '4'}> +CONFIG_NBPFAXI_DMA policy<{'armhf': 'm'}> +CONFIG_PCH_DMA policy<{'i386': 'm'}> +CONFIG_PL330_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_BAM_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TEGRA20_APB_DMA policy<{'armhf-generic': 'y'}> +CONFIG_TIMB_DMA policy<{'i386': 'm'}> +CONFIG_TI_CPPI41 policy<{'armhf': 'm'}> +CONFIG_TI_EDMA policy<{'armhf': 'y'}> +CONFIG_XGENE_DMA policy<{'arm64': 'm'}> +CONFIG_ZX_DMA policy<{'armhf': 'm'}> +CONFIG_DW_DMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DW_DMAC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HSU_DMA_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RCAR_DMAC policy<{'armhf': 'm'}> +CONFIG_RENESAS_USB_DMAC policy<{'armhf': 'm'}> +CONFIG_ASYNC_TX_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DMATEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_DMATEST flag + +# Menu: Device Drivers >> DMA Engine support >> Renesas SuperH DMA Engine support +CONFIG_SH_DMAE_BASE policy<{'armhf': 'y'}> +CONFIG_SH_DMAE policy<{'armhf': 'm'}> +CONFIG_SUDMAC policy<{'armhf': 'm'}> +CONFIG_RCAR_HPB_DMAE policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Dallas's 1-wire support +CONFIG_W1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_W1_CON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Bus Masters +CONFIG_W1_MASTER_MATROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_DS2490 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_DS2482 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_MXC policy<{'armhf-generic': 'm'}> +CONFIG_W1_MASTER_DS1WM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDQ_MASTER_OMAP policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Slaves +CONFIG_W1_SLAVE_THERM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_SMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2408 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2408_READBACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_W1_SLAVE_DS2413 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2406 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2423 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2431 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2433 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2433_CRC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_W1_SLAVE_DS2760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS28E04 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_BQ27000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Device Tree and Open Firmware support +CONFIG_OF policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'i386': 'n', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_OF_UNITTEST policy<{'arm64': 'n', 'armhf': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_OF_DYNAMIC policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_OF_OVERLAY policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_OF_UNITTEST flag + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting +CONFIG_EDAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_EDAC_LEGACY_SYSFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EDAC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EDAC_DECODE_MCE policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting >> Main Memory EDAC (Error Detection And Correction) reporting +CONFIG_EDAC_MM_EDAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EDAC_AMD64 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_AMD64_ERROR_INJECTION policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_EDAC_AMD76X policy<{'i386': 'm'}> +CONFIG_EDAC_E7XXX policy<{'i386': 'm'}> +CONFIG_EDAC_E752X policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I82875P policy<{'i386': 'm'}> +CONFIG_EDAC_I82975X policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I3000 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I3200 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_IE31200 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_X38 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I5400 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I7CORE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I82860 policy<{'i386': 'm'}> +CONFIG_EDAC_R82600 policy<{'i386': 'm'}> +CONFIG_EDAC_I5000 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I5100 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_I7300 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EDAC_SBRIDGE policy<{'amd64': 'm'}> +CONFIG_EDAC_MPC85XX policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_EDAC_PASEMI policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_EDAC_AMD8131 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_EDAC_AMD8111 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_EDAC_CPC925 policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_EDAC_HIGHBANK_MC policy<{'armhf': 'm'}> +CONFIG_EDAC_HIGHBANK_L2 policy<{'armhf': 'm'}> +CONFIG_EDAC_XGENE policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> External Connector Class (extcon) support +CONFIG_EXTCON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EXTCON_ADC_JACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_ARIZONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_AXP288 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX77843 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_RT8973A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_SM5502 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_USB_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> FMC support +CONFIG_FMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FMC_FAKEDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FMC_TRIVIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FMC_WRITE_EEPROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FMC_CHARDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Fusion MPT device support +CONFIG_FUSION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FUSION_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_FUSION_CTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_LAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> GPIO Support +CONFIG_GPIOLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEBUG_GPIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_GPIO_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_GPIO_SYSFS note + +# Menu: Device Drivers >> GPIO Support >> I2C GPIO expanders +CONFIG_GPIO_ADP5588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ADNP policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX7300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX732X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_PCA953X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_PCF857X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_SX150X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> GPIO Support >> MFD GPIO expanders +CONFIG_GPIO_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ARIZONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_CRYSTAL_COVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_CS5535 policy<{'i386': 'm'}> +CONFIG_GPIO_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_JANZ_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MSIC policy<{'i386': 'y'}> +CONFIG_GPIO_PALMAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_RC5T583 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_STMPE policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TC3589X policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TIMBERDALE policy<{'i386': 'y'}> +CONFIG_GPIO_TPS6586X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TPS65910 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TPS65912 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TWL6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_UCB1400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_GPIO_TWL4030 mark note + +# Menu: Device Drivers >> GPIO Support >> Memory mapped GPIO drivers +CONFIG_GPIO_74XX_MMIO policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ALTERA policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DWAPB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_EM policy<{'armhf': 'n'}> +CONFIG_GPIO_F7188X policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_GPIO_GENERIC_PLATFORM policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_GRGPIO policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ICH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_GPIO_IT8761E policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_GPIO_LYNXPOINT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_GPIO_MPC8XXX policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_GPIO_MSM_V2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_GPIO_OMAP policy<{'armhf': 'y'}> +CONFIG_GPIO_PL061 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_GPIO_RCAR policy<{'armhf': 'm'}> +CONFIG_GPIO_SCH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_GPIO_SCH311X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_SYSCON policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_VX855 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_XGENE policy<{'arm64': 'y'}> +CONFIG_GPIO_XGENE_SB policy<{'arm64': 'm'}> +CONFIG_GPIO_XILINX policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_ZEVIO policy<{'armhf': 'y'}> +CONFIG_GPIO_ZYNQ policy<{'arm64': 'm'}> +# +CONFIG_GPIO_EM note + +# Menu: Device Drivers >> GPIO Support >> PCI GPIO expanders +CONFIG_GPIO_AMD8111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_INTEL_MID policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_GPIO_ML_IOH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_PCH policy<{'i386': 'm'}> +CONFIG_GPIO_RDC321X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> GPIO Support >> SPI GPIO expanders +CONFIG_GPIO_74X164 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX7301 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MCP23S08 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MC33880 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ZX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> GPIO Support >> USB GPIO expanders +CONFIG_GPIO_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic Driver Options +CONFIG_UEVENT_HELPER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UEVENT_HELPER_PATH policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_DEVTMPFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEVTMPFS_MOUNT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STANDALONE policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'i386': 'n', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PREVENT_FIRMWARE_BUILD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ALLOW_DEV_COREDUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_DRIVER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_DEVRES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FENCE_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_DEVTMPFS note note +CONFIG_DEVTMPFS_MOUNT note note +CONFIG_FENCE_TRACE flag + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator +CONFIG_DMA_CMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n'}> +# +CONFIG_DMA_CMA note + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator >> Selected region size + +# Menu: Device Drivers >> Generic Driver Options >> Userspace firmware loading support +CONFIG_FW_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FIRMWARE_IN_KERNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EXTRA_FIRMWARE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_FW_LOADER_USER_HELPER_FALLBACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_FW_LOADER_USER_HELPER_FALLBACK mark note + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support +CONFIG_PM_DEVFREQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_POWERSAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_USERSPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ARM_EXYNOS5_BUS_DEVFREQ policy<{'armhf': 'n'}> +CONFIG_ARM_TEGRA_DEVFREQ policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support >> DEVFREQ-Event device Support +CONFIG_PM_DEVFREQ_EVENT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Generic Target Core Mod (TCM) and ConfigFS Infrastructure +CONFIG_TARGET_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_IBLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_FILEIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_PSCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_USER2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LOOPBACK_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ISCSI_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SBP_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver +CONFIG_THERMAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_THERMAL_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_OF policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_WRITABLE_TRIPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_FAIR_SHARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_STEP_WISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_BANG_BANG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_USER_SPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_POWER_ALLOCATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CLOCK_THERMAL policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_THERMAL_EMULATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RCAR_THERMAL policy<{'armhf': 'm'}> +CONFIG_DOVE_THERMAL policy<{'armhf': 'm'}> +CONFIG_ARMADA_THERMAL policy<{'armhf': 'y'}> +CONFIG_TEGRA_SOCTHERM policy<{'armhf-generic': 'n'}> +CONFIG_INTEL_POWERCLAMP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_PKG_TEMP_THERMAL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_SOC_DTS_THERMAL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INT340X_THERMAL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_PCH_THERMAL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_QCOM_SPMI_TEMP_ALARM policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Default Thermal governor +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> STMicroelectronics thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Samsung thermal drivers +CONFIG_EXYNOS_THERMAL policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers >> Texas Instruments SoCs temperature sensor driver +CONFIG_TI_SOC_THERMAL policy<{'armhf': 'm'}> +CONFIG_TI_THERMAL policy<{'armhf': 'y'}> +CONFIG_OMAP4_THERMAL policy<{'armhf-generic': 'y'}> +CONFIG_DRA752_THERMAL policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> generic cpu cooling support +CONFIG_CPU_THERMAL policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISI_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IMX_THERMAL policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic powercap sysfs driver +CONFIG_POWERCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_INTEL_RAPL policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Graphics support +CONFIG_VGA_ARB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VGA_ARB_MAX_GPUS policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'i386': '16', 'powerpc': '16', 'ppc64el': '16'}> +CONFIG_VGA_SWITCHEROO policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_TEGRA_HOST1X policy<{'armhf-generic': 'm'}> +CONFIG_TEGRA_HOST1X_FIREWALL policy<{'armhf-generic': 'y'}> +CONFIG_IMX_IPUV3_CORE policy<{'armhf': 'm'}> +CONFIG_DRM_LOAD_EDID_FIRMWARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> /dev/agpgart (AGP Support) +CONFIG_AGP policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_AGP_ALI policy<{'i386': 'm'}> +CONFIG_AGP_ATI policy<{'i386': 'm'}> +CONFIG_AGP_AMD policy<{'i386': 'y'}> +CONFIG_AGP_AMD64 policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_AGP_INTEL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_AGP_NVIDIA policy<{'i386': 'y'}> +CONFIG_AGP_SIS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_AGP_SWORKS policy<{'i386': 'm'}> +CONFIG_AGP_VIA policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_AGP_UNINORTH policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_AGP_EFFICEON policy<{'i386': 'm'}> +# +CONFIG_AGP note flag + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support +CONFIG_BACKLIGHT_LCD_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel Backlight controls +CONFIG_BACKLIGHT_CLASS_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BACKLIGHT_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_CARILLO_RANCH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_BACKLIGHT_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_APPLE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_BACKLIGHT_PM8941_WLED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_SAHARA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_BACKLIGHT_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP8860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP8870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_AAT2870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3630A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3639 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LP855X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_PANDORA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_TPS65217 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_AS3711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LV5207LP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_BD6107 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel LCD controls +CONFIG_LCD_CLASS_DEVICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_L4F00242T03 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LMS283GF05 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LTV350QV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_ILI922X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_ILI9320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_TDO24M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_VGG2432A4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_S6E63M0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LD9040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_AMS369FG06 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LMS501KF03 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_HX8357 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Bootup logo +CONFIG_LOGO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Console display driver support +CONFIG_VGA_CONSOLE policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VGACON_SOFT_SCROLLBACK policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MDA_CONSOLE policy<{'i386': 'm'}> +CONFIG_DUMMY_CONSOLE_COLUMNS policy<{'amd64': '80', 'arm64': '80', 'i386': '80', 'powerpc': '80', 'ppc64el': '80'}> +CONFIG_DUMMY_CONSOLE_ROWS policy<{'amd64': '25', 'arm64': '25', 'i386': '25', 'powerpc': '25', 'ppc64el': '25'}> +CONFIG_FRAMEBUFFER_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_FRAMEBUFFER_CONSOLE mark note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) +CONFIG_DRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_FBDEV_EMULATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_TDFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_R128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_RADEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_RADEON_USERPTR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_RADEON_UMS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_I810 policy<{'amd64-generic': 'm', 'i386-generic': 'm'}> +CONFIG_DRM_I915 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DRM_MGA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SIS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SAVAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_VGEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_VMWGFX policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DRM_VMWGFX_FBCON policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DRM_UDL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_AST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_MGAG200 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_CIRRUS_QEMU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_ARMADA policy<{'armhf': 'm'}> +CONFIG_DRM_ATMEL_HLCDC policy<{'armhf': 'm'}> +CONFIG_DRM_RCAR_DU policy<{'armhf': 'm'}> +CONFIG_DRM_RCAR_HDMI policy<{'armhf': 'y'}> +CONFIG_DRM_RCAR_LVDS policy<{'armhf': 'y'}> +CONFIG_DRM_SHMOBILE policy<{'armhf': 'm'}> +CONFIG_DRM_OMAP policy<{'armhf': 'n'}> +CONFIG_DRM_TILCDC policy<{'armhf': 'm'}> +CONFIG_DRM_TILCDC_SLAVE_COMPAT policy<{'armhf': 'y'}> +CONFIG_DRM_QXL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_BOCHS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_VIRTIO_GPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_FSL_DCU policy<{'armhf': 'm'}> +CONFIG_DRM_STI policy<{'armhf': 'n'}> +# +CONFIG_DRM_MGAG200 mark note +CONFIG_DRM_BOCHS note +CONFIG_DRM_STI note +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> AMD GPU +CONFIG_DRM_AMDGPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_AMDGPU_CIK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_AMDGPU_USERPTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HSA_AMD policy<{'amd64': 'm'}> +# +CONFIG_DRM_AMDGPU_CIK note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Freescale i.MX +CONFIG_DRM_IMX policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_FB_HELPER policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_PARALLEL_DISPLAY policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_TVE policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_LDB policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_HDMI policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series +CONFIG_DRM_EXYNOS policy<{'armhf': 'm'}> +CONFIG_DRM_EXYNOS_FIMD policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS5433_DECON policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_VIDI policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_G2D policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_MIC policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos DRM IPP +CONFIG_DRM_EXYNOS_IPP policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos7 DRM DECON +CONFIG_DRM_EXYNOS7_DECON policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_DSI policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Interface Bridges +CONFIG_DRM_NXP_PTN3460 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PARADE_PS8622 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Panels +CONFIG_DRM_PANEL_SIMPLE policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_LD9040 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LG_LG4573 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> I2C encoder or helper chips +CONFIG_DRM_I2C_ADV7511 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_I2C_CH7006 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_I2C_SIL164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_I2C_NXP_TDA998X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel GMA5/600 KMS Framebuffer +CONFIG_DRM_GMA500 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DRM_GMA600 policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DRM_GMA3600 policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DRM_MEDFIELD policy<{'i386': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM +CONFIG_DRM_MSM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_MSM_FBDEV policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_DRM_MSM_REGISTER_LOGGING policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM >> Enable DSI support in MSM DRM driver +CONFIG_DRM_MSM_DSI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_PLL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_28NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_20NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> NVIDIA Tegra DRM +CONFIG_DRM_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_DRM_TEGRA_FBDEV policy<{'armhf-generic': 'y'}> +CONFIG_DRM_TEGRA_DEBUG policy<{'armhf-generic': 'n'}> +CONFIG_DRM_TEGRA_STAGING policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Nouveau (NVIDIA) cards +CONFIG_DRM_NOUVEAU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NOUVEAU_PLATFORM_DRIVER policy<{'armhf-generic': 'y'}> +CONFIG_NOUVEAU_DEBUG policy<{'amd64': '5', 'arm64': '5', 'armhf': '5', 'i386': '5', 'powerpc': '5', 'ppc64el': '5'}> +CONFIG_NOUVEAU_DEBUG_DEFAULT policy<{'amd64': '3', 'arm64': '3', 'armhf': '3', 'i386': '3', 'powerpc': '3', 'ppc64el': '3'}> +CONFIG_DRM_NOUVEAU_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices +CONFIG_FB_SH_MOBILE_MERAM policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Exynos Video driver support +CONFIG_EXYNOS_VIDEO policy<{'armhf': 'y'}> +CONFIG_EXYNOS_MIPI_DSI policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Marvell MMP Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP Display Device Drivers (new device model) +CONFIG_DISPLAY_ENCODER_OPA362 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_ENCODER_TFP410 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_ENCODER_TPD12S015 policy<{'armhf': 'y'}> +CONFIG_DISPLAY_CONNECTOR_DVI policy<{'armhf': 'm'}> +CONFIG_DISPLAY_CONNECTOR_HDMI policy<{'armhf': 'y'}> +CONFIG_DISPLAY_CONNECTOR_ANALOG_TV policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_DPI policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_DSI_CM policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_SONY_ACX565AKM policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1 policy<{'armhf': 'm'}> +CONFIG_DISPLAY_PANEL_NEC_NL8048HL11 policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP2+ Display Subsystem support +CONFIG_OMAP2_DSS policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DEBUG policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_DEBUGFS policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_DPI policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_VENC policy<{'armhf': 'y'}> +CONFIG_OMAP4_DSS_HDMI policy<{'armhf': 'y'}> +CONFIG_OMAP5_DSS_HDMI policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_SDI policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DSI policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK policy<{'armhf': '0'}> +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices +CONFIG_FB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FIRMWARE_EDID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MODE_HELPERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_TILEBLITTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_CIRRUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_PM2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_PM2_FIFO_DISCONNECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ARMCLCD policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_FB_IMX policy<{'armhf-generic': 'm'}> +CONFIG_FB_CYBER2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_CYBER2000_DDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ARC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_OF policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_CONTROL policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_FB_PLATINUM policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_FB_VALKYRIE policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_FB_CT65550 policy<{'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_FB_ASILIANT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_IMSTT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_VGA16 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_UVESA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_VESA policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FB_EFI policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FB_N411 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_HGA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_OPENCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_S1D13XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_I740 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_I810 policy<{'i386': 'm'}> +CONFIG_FB_I810_GTF policy<{'i386': 'n'}> +CONFIG_FB_LE80578 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_CARILLO_RANCH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_INTEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_INTEL_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_FB_INTEL_I2C policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FB_ATY128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'y', 'ppc64el': 'm'}> +CONFIG_FB_ATY128_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_S3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_S3_DDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SAVAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SAVAGE_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SAVAGE_ACCEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_SIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SIS_300 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SIS_315 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_VIA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_VIA_DIRECT_PROCFS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_FB_VIA_X_COMPATIBILITY policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FB_NEOMAGIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_KYRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_3DFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_3DFX_ACCEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_3DFX_I2C policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_VOODOO1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'y', 'ppc64el': 'm'}> +CONFIG_FB_VT8623 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TRIDENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_ARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_PM3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_CARMINE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_FSL_DIU policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_FB_SH_MOBILE_LCDC policy<{'armhf': 'm'}> +CONFIG_FB_SH_MOBILE_HDMI policy<{'armhf': 'm'}> +CONFIG_FB_TMIO policy<{'armhf': 'm'}> +CONFIG_FB_TMIO_ACCELL policy<{'armhf': 'y'}> +CONFIG_FB_S3C policy<{'armhf': 'm'}> +CONFIG_FB_S3C_DEBUG_REGWRITE policy<{'armhf': 'n'}> +CONFIG_FB_SM501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SMSCUFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_UDL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'm'}> +CONFIG_FB_IBM_GXT4500 policy<{'powerpc': 'm', 'ppc64el': 'y'}> +CONFIG_FB_PS3 policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_FB_PS3_DEFAULT_SIZE_M policy<{'powerpc-powerpc64-smp': '9'}> +CONFIG_FB_DA8XX policy<{'armhf-generic': 'm'}> +CONFIG_FB_VIRTUAL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XEN_FBDEV_FRONTEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_FB_METRONOME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MB862XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MB862XX_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MX3 policy<{'armhf-generic': 'y'}> +CONFIG_FB_BROADSHEET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_AUO_K190X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_AUO_K1900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_AUO_K1901 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MXS policy<{'armhf-generic': 'm'}> +CONFIG_FB_HYPERV policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FB_SIMPLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SSD1307 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SM712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_FB_ATY128 note +CONFIG_FB_VOODOO1 note +CONFIG_FB_VIRTUAL flag + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> AMD Geode family framebuffer support +CONFIG_FB_GEODE policy<{'i386': 'y'}> +CONFIG_FB_GEODE_LX policy<{'i386': 'm'}> +CONFIG_FB_GEODE_GX policy<{'i386': 'm'}> +CONFIG_FB_GEODE_GX1 policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Mach64 display support +CONFIG_FB_ATY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_ATY_CT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ATY_GENERIC_LCD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_ATY_GX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ATY_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Radeon display support +CONFIG_FB_RADEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_RADEON_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RADEON_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RADEON_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Amiga native chipset support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> DRAM timing +CONFIG_FB_CARMINE_DRAM_EVAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CARMINE_DRAM_CUSTOM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support +CONFIG_FB_FOREIGN_ENDIAN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support >> Choice endianness support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> GDC variant +CONFIG_FB_MB862XX_PCI_GDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MB862XX_LIME policy<{'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Matrox acceleration +CONFIG_FB_MATROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MATROX_MILLENIUM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_MYSTIQUE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MATROX_MAVEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> OMAP frame buffer support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> OMAP2+ frame buffer support +CONFIG_FB_OMAP2 policy<{'armhf': 'm'}> +CONFIG_FB_OMAP2_DEBUG_SUPPORT policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_NUM_FBS policy<{'armhf': '3'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> PXA LCD framebuffer support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> SBUS and UPA framebuffers + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Size of ADV7393 frame buffer memory Single/Double Size + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Video mode support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Framebuffer Support +CONFIG_FB_NVIDIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_NVIDIA_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_NVIDIA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_NVIDIA_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Riva support +CONFIG_FB_RIVA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_RIVA_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RIVA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FB_RIVA_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support + +# Menu: Device Drivers >> HID support >> HID bus support +CONFIG_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BATTERY_STRENGTH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HIDRAW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_UHID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers +CONFIG_HID_A4TECH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ACRUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ACRUX_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_APPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_APPLEIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_AUREAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BELKIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BETOP_FF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CHERRY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CHICONY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PRODIKEYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CP2112 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CYPRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_DRAGONRISE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DRAGONRISE_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_EMS_FF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ELECOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ELO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_EZKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GEMBIRD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_HOLTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HOLTEK_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_GT683R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KEYTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KYE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_UCLOGIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_WALTOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GYRATION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ICADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_TWINHAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KENSINGTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LCPOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LENOVO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MAGICMOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MICROSOFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MONTEREY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MULTITOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_NTRIG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ORTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PANTHERLORD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PANTHERLORD_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PENMOUNT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PETALYNX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PLANTRONICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PRIMAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ROCCAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SAITEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SAMSUNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SONY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SONY_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_SPEEDLINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_STEELSERIES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SUNPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_RMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GREENASIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GREENASIA_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_HYPERV_MOUSE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HID_SMARTJOYPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMARTJOYPLUS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_TIVO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_TOPSEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_THINGM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_THRUSTMASTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_THRUSTMASTER_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_WACOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_WIIMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_XINMO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ZEROPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ZEROPLUS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_ZYDACRON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_HUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_CUSTOM_SENSOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> Logitech devices +CONFIG_HID_LOGITECH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LOGITECH_DJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LOGITECH_HIDPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LOGITECH_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIRUMBLEPAD2_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIG940_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIWHEELS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> PicoLCD (graphic version) +CONFIG_HID_PICOLCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PICOLCD_FB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_LCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_CIR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> I2C HID support +CONFIG_I2C_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support >> USB HID support +CONFIG_USB_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_HIDDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID Boot Protocol drivers +CONFIG_USB_KBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HSI support +CONFIG_HSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMAP_SSI policy<{'armhf-generic': 'm'}> +CONFIG_NOKIA_MODEM policy<{'armhf-generic': 'm'}> +CONFIG_CMT_SPEECH policy<{'armhf-generic': 'm'}> +CONFIG_SSI_PROTOCOL policy<{'armhf-generic': 'm'}> +CONFIG_HSI_CHAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Hardware Monitoring support +CONFIG_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HWMON_DEBUG_CHIP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_ABITUGURU policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_ABITUGURU3 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_AD7314 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AD7414 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AD7418 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1025 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1026 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1029 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM9240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7410 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7411 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7462 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7470 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7475 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ASC7621 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_K8TEMP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_K10TEMP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_FAM15H_POWER policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_APPLESMC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_ASB100 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_ATXP1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DS620 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DS1621 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DELL_SMM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_DA9052_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_I5K_AMB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_F71805F policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_F71882FG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_F75375S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MC13783_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_FSCHMD policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_GL518SM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GL520SM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_G760A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_G762 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GPIO_FAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HIH6130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMAEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMPEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMPOWERNV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IIO_HWMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_I5500 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_CORETEMP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_IT87 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_JC42 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_POWR1220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LINEAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2945 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4151 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4215 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4222 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4245 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4260 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4261 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX16065 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1619 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1668 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX197 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6639 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6650 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6697 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HTU21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MCP3021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MENF21BMC_HWMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADCXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM63 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM70 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM73 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM75 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM77 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM78 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM80 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM83 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM85 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM87 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM90 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM92 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95234 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95241 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95245 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PC87360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_PC87427 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_NTC_THERMISTOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_NCT6683 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_NCT6775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_NCT7802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_NCT7904 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PCF8591 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PWM_FAN policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHT15 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHT21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHTC1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SIS5595 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DME1737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_EMC1403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_EMC2103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_EMC6W201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SMSC47M1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_SMSC47M192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SMSC47B397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_SCH5627 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_SCH5636 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_SMM665 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADC128D818 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADS1015 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADS7828 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADS7871 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AMC6821 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INA209 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INA2XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TC74 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_THMC50 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TWL4030_MADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_VEXPRESS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_VIA_CPUTEMP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_VIA686A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_VT1211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_VT8231 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83781D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83791D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83792D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83793 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83795 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83795_FANCTRL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_W83L785TS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83L786NG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83627HF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_W83627EHF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_SENSORS_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ACPI_POWER policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_ATK0110 policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Hardware Monitoring support >> PMBus support +CONFIG_PMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1275 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM25066 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2978 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2978_REGULATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SENSORS_MAX16064 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX20751 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX34440 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX8688 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TPS40422 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_UCD9000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_UCD9200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ZL6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Hardware Spinlock drivers +CONFIG_HWSPINLOCK_OMAP policy<{'armhf': 'm'}> +CONFIG_HWSPINLOCK_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> I2C support + +# Menu: Device Drivers >> I2C support >> I2C support +CONFIG_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ACPI_I2C_OPREGION policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_I2C_COMPAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I2C_CHARDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I2C_MUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_HELPER_AUTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I2C_SMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_STUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SLAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_I2C_SLAVE_EEPROM policy<{'armhf': 'm'}> +CONFIG_I2C_DEBUG_CORE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_I2C_DEBUG_ALGO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_I2C_DEBUG_BUS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_I2C_CHARDEV note + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms +CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ALGOPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support +CONFIG_I2C_ALI1535 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ALI1563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ALI15X3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_AMD756 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_AMD756_S4882 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_I2C_AMD8111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_HIX5HD2 policy<{'armhf': 'm'}> +CONFIG_I2C_I801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ISCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ISMT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_I2C_PIIX4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_NFORCE2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_NFORCE2_S4985 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_I2C_SIS5595 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SIS630 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SIS96X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_VIAPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SCMI policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_I2C_HYDRA policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_I2C_POWERMAC policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_I2C_AXXIA policy<{'armhf-generic-lpae': 'm'}> +CONFIG_I2C_BCM_IPROC policy<{'arm64': 'm'}> +CONFIG_I2C_CBUS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_CPM policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_I2C_DESIGNWARE_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_DESIGNWARE_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_EG20T policy<{'i386': 'm'}> +CONFIG_I2C_EMEV2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_I2C_EXYNOS5 policy<{'armhf': 'm'}> +CONFIG_I2C_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_IMX policy<{'armhf-generic': 'y'}> +CONFIG_I2C_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MESON policy<{'armhf': 'm'}> +CONFIG_I2C_MPC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MT65XX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_MV64XXX policy<{'armhf': 'm'}> +CONFIG_I2C_NOMADIK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_OCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_OMAP policy<{'armhf': 'y'}> +CONFIG_I2C_PASEMI policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_I2C_PCA_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_QUP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_RIIC policy<{'armhf': 'm'}> +CONFIG_I2C_RK3X policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_I2C_S3C2410 policy<{'armhf': 'y'}> +CONFIG_I2C_SH_MOBILE policy<{'armhf': 'm'}> +CONFIG_I2C_SIMTEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_I2C_VERSATILE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_XILINX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_RCAR policy<{'armhf': 'm'}> +CONFIG_I2C_DIOLAN_U2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_PARPORT_LIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ROBOTFUZZ_OSIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_TAOS_EVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_TINY_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_PCA_ISA policy<{'i386': 'm'}> +CONFIG_I2C_CROS_EC_TUNNEL policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_I2C_XGENE_SLIMPRO policy<{'arm64': 'm'}> +CONFIG_SCx200_ACB policy<{'i386': 'm'}> +CONFIG_I2C_OPAL policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> Multiplexer I2C Chip support +CONFIG_I2C_ARB_GPIO_CHALLENGE policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_PCA9541 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_PCA954x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_PINCTRL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_I2C_MUX_REG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support +CONFIG_FIREWIRE_NOSY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support >> FireWire driver stack +CONFIG_FIREWIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FIREWIRE_OHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_SBP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IOMMU Hardware Support +CONFIG_IOMMU_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FSL_PAMU policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_AMD_IOMMU policy<{'amd64': 'y'}> +CONFIG_AMD_IOMMU_STATS policy<{'amd64': 'y'}> +CONFIG_AMD_IOMMU_V2 policy<{'amd64': 'm'}> +CONFIG_INTEL_IOMMU policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_INTEL_IOMMU_DEFAULT_ON policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_IRQ_REMAP policy<{'amd64': 'y'}> +CONFIG_OMAP_IOMMU policy<{'armhf': 'y'}> +CONFIG_OMAP_IOMMU_DEBUG policy<{'armhf': 'n'}> +CONFIG_TEGRA_IOMMU_GART policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA_IOMMU_SMMU policy<{'armhf-generic': 'y'}> +CONFIG_EXYNOS_IOMMU policy<{'armhf': 'y'}> +CONFIG_EXYNOS_IOMMU_DEBUG policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU policy<{'armhf': 'y'}> +CONFIG_IPMMU_VMSA policy<{'armhf-generic-lpae': 'y'}> +CONFIG_SPAPR_TCE_IOMMU policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_ARM_SMMU policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_ARM_SMMU_V3 policy<{'arm64': 'y'}> +# +CONFIG_INTEL_IOMMU_DEFAULT_ON note flag + +# Menu: Device Drivers >> IOMMU Hardware Support >> Generic IOMMU Pagetable Support +CONFIG_IOMMU_IO_PGTABLE_LPAE policy<{'arm64': 'y', 'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST policy<{'arm64': 'n', 'armhf-generic-lpae': 'n'}> + +# Menu: Device Drivers >> IOMMU Hardware Support >> IPMMU/IPMMUI address space size +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB policy<{'armhf': 'y'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_1024MB policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_512MB policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_256MB policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_128MB policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_64MB policy<{'armhf': 'n'}> +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_32MB policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> ISDN support +CONFIG_ISDN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HYSDN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HYSDN_CAPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem +CONFIG_ISDN_CAPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAPI_TRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_CAPI_CAPI20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_CAPI_MIDDLEWARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_CAPI_CAPIDRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active AVM cards +CONFIG_CAPI_AVM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_DRV_AVMB1_B1ISA policy<{'i386': 'm'}> +CONFIG_ISDN_DRV_AVMB1_B1PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_DRV_AVMB1_B1PCIV4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_DRV_AVMB1_T1ISA policy<{'i386': 'm'}> +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_ISDN_DRV_AVMB1_AVM_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_ISDN_DRV_AVMB1_T1PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_DRV_AVMB1_C4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards +CONFIG_CAPI_EICON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards >> Support Eicon DIVA Server cards +CONFIG_ISDN_DIVAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_DIVAS_BRIPCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_DIVAS_PRIPCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_DIVAS_DIVACAPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_DIVAS_USERIDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_DIVAS_MAINT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Modular ISDN driver +CONFIG_MISDN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_DSP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_L1OIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCMULTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_AVMFRITZ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_SPEEDFAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_INFINEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_W6692 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_NETJET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) +CONFIG_ISDN_I4L policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISDN_AUDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_TTY_FAX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_X25 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_ISDN_I4L flag + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Active cards +CONFIG_ISDN_DRV_ICN policy<{'i386': 'm'}> +CONFIG_ISDN_DRV_PCBIT policy<{'i386': 'm'}> +CONFIG_ISDN_DRV_SC policy<{'i386': 'm'}> +CONFIG_ISDN_DRV_ACT2000 policy<{'i386': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> ISDN feature submodules +CONFIG_ISDN_DIVERSION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support +CONFIG_ISDN_DRV_HISAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HISAX_1TR6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_NI1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_MAX_CARDS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_HISAX_16_0 policy<{'i386': 'y'}> +CONFIG_HISAX_16_3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_TELESPCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_HISAX_S0BOX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_AVM_A1 policy<{'i386': 'y'}> +CONFIG_HISAX_FRITZPCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_HISAX_AVM_A1_PCMCIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_ELSA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_IX1MICROR2 policy<{'i386': 'y'}> +CONFIG_HISAX_DIEHLDIVA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_ASUSCOM policy<{'i386': 'y'}> +CONFIG_HISAX_TELEINT policy<{'i386': 'y'}> +CONFIG_HISAX_HFCS policy<{'i386': 'y'}> +CONFIG_HISAX_SEDLBAUER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_SPORTSTER policy<{'i386': 'y'}> +CONFIG_HISAX_MIC policy<{'i386': 'y'}> +CONFIG_HISAX_NETJET policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HISAX_NETJET_U policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HISAX_NICCY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_ISURF policy<{'i386': 'y'}> +CONFIG_HISAX_HSTSAPHIR policy<{'i386': 'y'}> +CONFIG_HISAX_BKM_A4T policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_SCT_QUADRO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_GAZEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_HFC_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_HISAX_W6692 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_HFC_SX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_ENTERNOW_PCI policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HISAX_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_HISAX_SEDLBAUER_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_HISAX_ELSA_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_HISAX_AVM_A1_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_HISAX_TELES_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_HISAX_ST5481 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HISAX_HFCUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HISAX_HFC4S8S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HISAX_FRITZ_PCIPNP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support >> HiSax Support for EURO/DSS1 +CONFIG_HISAX_EURO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DE_AOC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HISAX_NO_SENDCOMPLETE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_HISAX_NO_LLC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_HISAX_NO_KEYPAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Support synchronous PPP +CONFIG_ISDN_PPP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_PPP_VJ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_MPP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPPP_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ISDN_PPP_BSDCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> ISDN support >> Siemens Gigaset support +CONFIG_ISDN_DRV_GIGASET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GIGASET_CAPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_GIGASET_BASE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GIGASET_M105 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GIGASET_M101 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GIGASET_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Industrial I/O support +CONFIG_IIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IIO_BUFFER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IIO_BUFFER_CB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IIO_KFIFO_BUF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_TRIGGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IIO_CONSUMERS_PER_TRIGGER policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'i386': '2', 'powerpc': '2', 'ppc64el': '2'}> + +# Menu: Device Drivers >> Industrial I/O support >> Accelerometers +CONFIG_BMA180 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BMC150_ACCEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_ACCEL_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_ACCEL_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KXSD9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMA8452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KXCJK1013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMA9551 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMA9553 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STK8312 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STK8BA50 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Amplifiers +CONFIG_AD8366 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Analog to digital converters +CONFIG_AD7266 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7291 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7298 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7476 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7791 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7793 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7887 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7923 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD799X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AXP288_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BERLIN2_ADC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DA9150_GPADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CC10001_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_EXYNOS_ADC policy<{'armhf': 'm'}> +CONFIG_LP8788_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1363 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCP320X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCP3422 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEN_Z188_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NAU7802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_SPMI_IADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_SPMI_VADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC081C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC128S052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TI_AM335X_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TWL4030_MADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TWL6030_GPADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VF610_ADC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIPERBOARD_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital gyroscope sensors +CONFIG_ADIS16080 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16136 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16260 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADXRS450 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BMG160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_GYRO_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_GYRO_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ITG3200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital to analog converters +CONFIG_AD5064 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5380 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5446 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5449 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5504 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5624R_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5686 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5755 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5764 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD5791 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_M62332 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX517 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX5821 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4725 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4922 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Clock Generator/Distribution +CONFIG_AD9523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Phase-Locked Loop (PLL) frequency synthesizers +CONFIG_ADF4350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Hid Sensor IIO Common +CONFIG_HID_SENSOR_IIO_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_IIO_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Humidity sensors +CONFIG_DHT11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SI7005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SI7020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Inclinometer sensors +CONFIG_HID_SENSOR_INCLINOMETER_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_DEVICE_ROTATION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Inertial measurement units +CONFIG_ADIS16400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16480 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KMX61 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INV_MPU6050_IIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Light sensors +CONFIG_ACPI_ALS policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ADJD_S311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AL3320A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_APDS9300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BH1750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CM32181 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CM3232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CM3323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CM36651 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GP2AP020A00F policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISL29125 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_ALS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_PROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JSA1212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RPR0521 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LTR501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_OPT3001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PA12203001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STK3310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCS3414 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TCS3472 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TSL2563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TSL4531 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VCNL4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Lightning sensors +CONFIG_AS3935 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Magnetometer sensors +CONFIG_AK8975 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AK09911 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAG3110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_MAGNETOMETER_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC35240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_MAGN_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BMC150_MAGN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Pressure sensors +CONFIG_BMP280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_PRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MPL115 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MPL3115 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_PRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_T5403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Proximity sensors +CONFIG_SX9500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> SSP Sensor Common +CONFIG_IIO_SSP_SENSORS_COMMONS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SSP_SENSORHUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Temperature sensors +CONFIG_MLX90614 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TMP006 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Triggers - standalone +CONFIG_IIO_INTERRUPT_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SYSFS_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IndustryPack bus support +CONFIG_IPACK_BUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BOARD_TPCI200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_IPOCTAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> InfiniBand support +CONFIG_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_USER_MAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_USER_ACCESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ON_DEMAND_PAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INFINIBAND_MTHCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_MTHCA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INFINIBAND_QIB policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INFINIBAND_QIB_DCA policy<{'amd64': 'y'}> +CONFIG_INFINIBAND_CXGB3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INFINIBAND_CXGB3_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_INFINIBAND_CXGB4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_NES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INFINIBAND_NES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_INFINIBAND_OCRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INFINIBAND_USNIC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INFINIBAND_IPOIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_IPOIB_CM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INFINIBAND_IPOIB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INFINIBAND_SRP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_SRPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ISER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ISERT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Input device support + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) +CONFIG_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_INPUT_LEDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_FF_MEMLESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_POLLDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_SPARSEKMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MATRIXKMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_JOYDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_EVBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_APMPOWER policy<{'powerpc-powerpc-smp': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Joysticks/Gamepads +CONFIG_INPUT_JOYSTICK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_ANALOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_A3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_ADI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_COBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GF2K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GRIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GRIP_MP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GUILLEMOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_INTERACT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SIDEWINDER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TMDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_IFORCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_IFORCE_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_IFORCE_232 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_WARRIOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_MAGELLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SPACEORB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SPACEBALL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_STINGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TWIDJOY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_ZHENHUA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_DB9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GAMECON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TURBOGRAFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_AS5011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_JOYDUMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_XPAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_XPAD_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_XPAD_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_WALKERA0701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards +CONFIG_INPUT_KEYBOARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KEYBOARD_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ADP5588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ADP5589 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ATKBD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KEYBOARD_QT1070 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_QT2160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LKKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_GPIO_POLLED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TCA6416 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TCA8418 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MATRIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LM8323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LM8333 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MAX7359 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MCS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MPR121 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SNVS_PWRKEY policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_IMX policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_NEWTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_OPENCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_PMIC8XXX policy<{'armhf': 'm'}> +CONFIG_KEYBOARD_SAMSUNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_KEYBOARD_STOWAWAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SUNKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SH_KEYSC policy<{'armhf': 'm'}> +CONFIG_KEYBOARD_STMPE policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_OMAP4 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TC3589X policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_XTKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_CROS_EC policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_KEYBOARD_CAP11XX policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_BCM policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice +CONFIG_INPUT_MOUSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_APPLETOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_BCM5974 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_CYAPA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_ELAN_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_ELAN_I2C_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_ELAN_I2C_SMBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_INPORT policy<{'i386': 'n'}> +CONFIG_MOUSE_LOGIBM policy<{'i386': 'm'}> +CONFIG_MOUSE_PC110PAD policy<{'i386': 'm'}> +CONFIG_MOUSE_VSXXXAA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_SYNAPTICS_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_SYNAPTICS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_MOUSE_INPORT note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice >> PS/2 mouse +CONFIG_MOUSE_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_PS2_ALPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_LOGIPS2PP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_SYNAPTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_CYPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_LIFEBOOK policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MOUSE_PS2_TRACKPOINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_ELANTECH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_SENTELIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_TOUCHKIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_FOCALTECH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_VMMOUSE policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Miscellaneous devices +CONFIG_INPUT_MISC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_88PM860X_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_88PM80X_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ARIZONA_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_BMA150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_E3X0_BUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCSPKR policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PM8941_PWRKEY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INPUT_PM8XXX_VIBRATOR policy<{'armhf': 'm'}> +CONFIG_INPUT_PMIC8XXX_PWRKEY policy<{'armhf': 'm'}> +CONFIG_INPUT_MAX77693_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MAX8925_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MAX8997_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MC13783_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MMA8450 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MPU3050 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_APANEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INPUT_GP2A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_BEEPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_TILT_POLLED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_WISTRON_BTNS policy<{'i386': 'm'}> +CONFIG_INPUT_ATLAS_BTNS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INPUT_ATI_REMOTE2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_KEYSPAN_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_KXTJ9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_KXTJ9_POLLED_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_INPUT_POWERMATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_YEALINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CM109 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_REGULATOR_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_RETU_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TPS65218_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AXP20X_PEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL4030_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL4030_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL6040_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_UINPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_PALMAS_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCF50633_PMU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCF8574 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PWM_BEEPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_ROTARY_ENCODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9052_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9055_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9063_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_WM831X_ON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_IMS_PCU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CMA3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CMA3000_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_XEN_KBDDEV_FRONTEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_INPUT_IDEAPAD_SLIDEBAR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_SOC_BUTTON_ARRAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DRV260X_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DRV2665_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DRV2667_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_INPUT_UINPUT mark note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mouse interface +CONFIG_INPUT_MOUSEDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_MOUSEDEV_PSAUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_MOUSEDEV_SCREEN_X policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'i386': '1024', 'powerpc': '1024', 'ppc64el': '1024'}> +CONFIG_INPUT_MOUSEDEV_SCREEN_Y policy<{'amd64': '768', 'arm64': '768', 'armhf': '768', 'i386': '768', 'powerpc': '768', 'ppc64el': '768'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Tablets +CONFIG_INPUT_TABLET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TABLET_USB_ACECAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_AIPTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_GTCO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_HANWANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_KBTAB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_SERIAL_WACOM4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens +CONFIG_INPUT_TOUCHSCREEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ADS7846 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7877 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AR1021_I2C policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ATMEL_MXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AUO_PIXCIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_BU21013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CY8CTMG110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DA9034 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DYNAPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_HAMPSHIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EETI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EGALAX policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_FUJITSU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_GOODIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ILI210X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_IPROC policy<{'arm64': 'm'}> +CONFIG_TOUCHSCREEN_GUNZE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ELAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ELO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WACOM_W8001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WACOM_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MAX11801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MCS5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MMS114 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_IMX6UL_TSC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_INEXIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_INTEL_MID policy<{'i386': 'm'}> +CONFIG_TOUCHSCREEN_MK712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_HTCPEN policy<{'i386': 'm'}> +CONFIG_TOUCHSCREEN_PENMOUNT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EDT_FT5X06 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHRIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHWIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TI_AM335X_TSC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_UCB1400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_PIXCIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WDT87XX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHIT213 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC_SERIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ST1232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_STMPE policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SUR40 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SX8654 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ZFORCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_COLIBRI_VF50 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> Support for WM97xx AC97 touchscreen controllers +CONFIG_TOUCHSCREEN_WM97XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WM9705 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_WM9712 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_WM9713 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> USB Touchscreen Driver +CONFIG_TOUCHSCREEN_USB_COMPOSITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_USB_EGALAX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_PANJIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_3M policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ITM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ETURBO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GUNZE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_DMC_TSC10 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_IRTOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_IDEALTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GOTOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_JASTEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ELO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_E2I policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ZYTRONIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_NEXIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_EASYTOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Gameport support +CONFIG_GAMEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GAMEPORT_NS558 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_L4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_EMU10K1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_FM801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Serial I/O support +CONFIG_SERIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SERIO_I8042 policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIO_SERPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_CT82C710 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SERIO_PARKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_AMBAKMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIO_PCIPS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_LIBPS2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SERIO_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_XILINX_XPS_PS2 policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_ALTERA_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_PS2MULT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_ARC_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_APBPS2 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HYPERV_KEYBOARD policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> LED Support +CONFIG_NEW_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LEDS_LP55XX_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support +CONFIG_LEDS_CLASS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BCM6328 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BCM6358 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3530 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_NET48XX policy<{'i386': 'm'}> +CONFIG_LEDS_WRAP policy<{'i386': 'm'}> +CONFIG_LEDS_PCA9532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PCA9532_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP3944 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5521 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5562 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_CLEVO_MAIL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_LEDS_PCA955X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PCA963X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_WM831X_STATUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DAC124S085 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_REGULATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BD2802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_INTEL_SS4200 policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_LEDS_LT3593 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DELL_NETBOOKS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_LEDS_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_NS2 policy<{'armhf': 'm'}> +CONFIG_LEDS_ASIC3 policy<{'armhf': 'y'}> +CONFIG_LEDS_TCA6507 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TLC591XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM355x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_OT200 policy<{'i386': 'm'}> +CONFIG_LEDS_MENF21BMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BLINKM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_POWERNV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_SYSCON policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Flash Class Support +CONFIG_LEDS_CLASS_FLASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_AAT1290 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_LEDS_MAX77693 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_KTD2692 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Trigger support +CONFIG_LEDS_TRIGGERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_TIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_ONESHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_HEARTBEAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_BACKLIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_CPU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_DEFAULT_ON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_TRANSIENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_CAMERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> MCB support +CONFIG_MCB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MCB_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> MIPS Platform Specific Device Drivers + +# Menu: Device Drivers >> MMC/SD/SDIO card support +CONFIG_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MMC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_CLKGATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_BLOCK policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_BLOCK_MINORS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_MMC_BLOCK_BOUNCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SDIO_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_ARMMMCI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MMC_QCOM_DML policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_OMAP policy<{'armhf': 'm'}> +CONFIG_MMC_OMAP_HS policy<{'armhf': 'y'}> +CONFIG_MMC_WBSD policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_MXC policy<{'armhf-generic': 'm'}> +CONFIG_MMC_TIFM_SD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_MVSDIO policy<{'armhf': 'm'}> +CONFIG_MMC_SPI policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDRICOH_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_MMC_TMIO policy<{'armhf': 'm'}> +CONFIG_MMC_SDHI policy<{'armhf': 'm'}> +CONFIG_MMC_CB710 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_VIA_SDMMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SH_MMCIF policy<{'armhf': 'm'}> +CONFIG_MMC_VUB300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_USHC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_USDHI6ROL0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_REALTEK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_TOSHIBA_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_MTK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_MMC_BLOCK note +CONFIG_MMC_TEST flag +CONFIG_MMC_OMAP_HS note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Samsung S3C SD/MMC transfer code + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support +CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_RICOH_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MMC_SDHCI_ACPI policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_MMC_SDHCI_S3C policy<{'armhf': 'm'}> +CONFIG_MMC_SDHCI_S3C_DMA policy<{'armhf': 'y'}> +# +CONFIG_MMC_SDHCI note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support >> SDHCI platform and OF driver helper +CONFIG_MMC_SDHCI_PLTFM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_ARASAN policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_AT91 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_ESDHC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_HLWD policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_ESDHC_IMX policy<{'armhf-generic': 'y'}> +CONFIG_MMC_SDHCI_DOVE policy<{'armhf': 'm'}> +CONFIG_MMC_SDHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_MMC_SDHCI_PXAV3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_SDHCI_F_SDH30 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_IPROC policy<{'arm64': 'm'}> +CONFIG_MMC_SDHCI_MSM policy<{'arm64': 'm', 'armhf': 'm'}> +# +CONFIG_MMC_SDHCI_PLTFM note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Synopsys DesignWare Memory Card Interface +CONFIG_MMC_DW policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_IDMAC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MMC_DW_PLTFM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_EXYNOS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_K3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_PCI policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers +CONFIG_MACINTOSH_DRIVERS policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PMAC_SMU policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PMAC_MEDIABAY policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_MAC_EMUMOUSEBTN policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_THERM_WINDTUNNEL policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_THERM_ADT746X policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_PMAC_RACKMETER policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +# +CONFIG_THERM_ADT746X mark note + +# Menu: Device Drivers >> Macintosh device drivers >> Apple Desktop Bus (ADB) support +CONFIG_ADB policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_ADB_CUDA policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_ADB_MACIO policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_INPUT_ADBHID policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_ANSLCD policy<{'powerpc-powerpc-smp': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers >> New PowerMac thermal control infrastructure +CONFIG_WINDFARM policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WINDFARM_PM81 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_WINDFARM_PM72 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_WINDFARM_RM31 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_WINDFARM_PM91 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_WINDFARM_PM112 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_WINDFARM_PM121 policy<{'powerpc-powerpc64-smp': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers >> Support for PMU based PowerMacs +CONFIG_ADB_PMU policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_ADB_PMU_LED policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PMAC_APM_EMU policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_PMAC_BACKLIGHT policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_PMAC_BACKLIGHT_LEGACY policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_SENSORS_AMS policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_SENSORS_AMS_PMU policy<{'powerpc-powerpc-smp': 'n'}> +CONFIG_SENSORS_AMS_I2C policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Device Drivers >> Mailbox Hardware Support +CONFIG_MAILBOX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARM_MHU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PL320_MBOX policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_OMAP2PLUS_MBOX policy<{'armhf': 'm'}> +CONFIG_OMAP_MBOX_KFIFO_SIZE policy<{'armhf': '256'}> +CONFIG_PCC policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ALTERA_MBOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Controller drivers +CONFIG_MEMORY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARM_PL172_MPMC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TI_EMIF policy<{'armhf': 'm'}> +CONFIG_OMAP_GPMC_DEBUG policy<{'armhf': 'n'}> +CONFIG_MVEBU_DEVBUS policy<{'armhf': 'y'}> +CONFIG_TEGRA20_MC policy<{'armhf-generic': 'y'}> +CONFIG_FSL_CORENET_CF policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_TEGRA_MC policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA124_EMC policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support +CONFIG_MTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MTD_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_CMDLINE_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_AFS_PARTS policy<{'armhf': 'm'}> +CONFIG_MTD_OF_PARTS policy<{'arm64': 'm', 'armhf': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_AR7_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_BLOCK_RO policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFTL_RW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INFTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RFD_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SSFDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SM_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_OOPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SWAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PARTITIONED_MASTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_NAND_ECC_SMC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_MTD note +CONFIG_MTD_CMDLINE_PARTS flag +CONFIG_MTD_BLOCK note +CONFIG_MTD_OF_PARTS note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Enable UBI - Unsorted block images +CONFIG_MTD_UBI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_UBI_WL_THRESHOLD policy<{'amd64': '4096', 'arm64': '4096', 'armhf': '4096', 'i386': '4096', 'powerpc': '4096', 'ppc64el': '4096'}> +CONFIG_MTD_UBI_BEB_LIMIT policy<{'amd64': '20', 'arm64': '20', 'armhf': '20', 'i386': '20', 'powerpc': '20', 'ppc64el': '20'}> +CONFIG_MTD_UBI_FASTMAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_UBI_GLUEBI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_UBI_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> LPDDR & LPDDR2 PCM memory drivers +CONFIG_MTD_LPDDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_QINFO_PROBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_LPDDR2_NVM policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access +CONFIG_MTD_PHYSMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PHYSMAP_COMPAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_PHYSMAP_OF policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SCx200_DOCFLASH policy<{'i386': 'm'}> +CONFIG_MTD_AMD76XROM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_ICHXROM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_ESB2ROM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_CK804XROM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_SCB2_FLASH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_NETtel policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_L440GX policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_IMPA7 policy<{'armhf': 'm'}> +CONFIG_MTD_INTEL_VR_NOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PLATRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Maximum mappable memory available for flash IO + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Support non-linear mappings of flash chips +CONFIG_MTD_COMPLEX_MAPPINGS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_SBC_GXX policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MTD_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_MTD_PCMCIA_ANONYMOUS policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n'}> +CONFIG_MTD_GPIO_ADDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_LATCH_ADDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support +CONFIG_MTD_NAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_ECC_BCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_NAND_DENALI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DENALI_DT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_MTD_NAND_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_OMAP2 policy<{'armhf': 'y'}> +CONFIG_MTD_NAND_OMAP_BCH policy<{'armhf': 'y'}> +CONFIG_MTD_NAND_RICOH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DISKONCHIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_NAND_DOCG4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_CAFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_CS553X policy<{'i386': 'm'}> +CONFIG_MTD_NAND_PXA3xx policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_PASEMI policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_MTD_NAND_TMIO policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_NANDSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_GPMI_NAND policy<{'armhf-generic': 'm'}> +CONFIG_MTD_NAND_BRCMNAND policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_ORION policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_FSL_ELBC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_FSL_IFC policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_MTD_NAND_FSL_UPM policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_MTD_NAND_MXC policy<{'armhf-generic': 'm'}> +CONFIG_MTD_NAND_SH_FLCTL policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_HISI504 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_MTD_NAND note +CONFIG_MTD_NAND_OMAP2 note +CONFIG_MTD_NAND_OMAP_BCH note +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support >> NAND Flash support for Samsung S3C SoCs + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> OneNAND Device Support +CONFIG_MTD_ONENAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ONENAND_VERIFY_WRITE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_ONENAND_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ONENAND_OMAP2 policy<{'armhf-generic': 'm'}> +CONFIG_MTD_ONENAND_OTP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_ONENAND_2X_PROGRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_MTD_ONENAND_VERIFY_WRITE note +CONFIG_MTD_ONENAND_OTP flag + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers +CONFIG_MTD_CFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_JEDECPROBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_INTELEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_AMDSTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_STAA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_RAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ABSENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options +CONFIG_MTD_CFI_ADV_OPTIONS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options >> Flash cmd/query data swapping + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options >> Specific CFI Flash geometry selection +CONFIG_MTD_MAP_BANK_WIDTH_1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MAP_BANK_WIDTH_2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MAP_BANK_WIDTH_4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MAP_BANK_WIDTH_8 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_MAP_BANK_WIDTH_16 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_MAP_BANK_WIDTH_32 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_CFI_I1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_CFI_I2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_CFI_I4 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_CFI_I8 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RedBoot partition table parsing +CONFIG_MTD_REDBOOT_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK policy<{'amd64': '-1', 'arm64': '-1', 'armhf': '-1', 'i386': '-1', 'powerpc': '-1', 'ppc64el': '-1'}> +CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_REDBOOT_PARTS_READONLY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> SPI-NOR device support +CONFIG_MTD_SPI_NOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_FSL_QUADSPI policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Self-contained MTD device drivers +CONFIG_MTD_PMC551 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PMC551_BUGFIX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_PMC551_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_DATAFLASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_DATAFLASH_WRITE_VERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_DATAFLASH_OTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_M25P80 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SST25L policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SLRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PHRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_MTDRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTDRAM_TOTAL_SIZE policy<{'amd64': '4096', 'arm64': '4096', 'armhf': '4096', 'i386': '4096', 'powerpc': '4096', 'ppc64el': '4096'}> +CONFIG_MTDRAM_ERASE_SIZE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_MTD_BLOCK2MTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_POWERNV_FLASH policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_DOCG3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Microsoft Hyper-V guest support +CONFIG_HYPERV policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HYPERV_UTILS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HYPERV_BALLOON policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Misc devices +CONFIG_AD525X_DPOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD525X_DPOT_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD525X_DPOT_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DUMMY_IRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IBM_ASM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PHANTOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INTEL_MID_PTI policy<{'i386': 'm'}> +CONFIG_SGI_IOC4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TIFM_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TIFM_7XX1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ICS932S401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ENCLOSURE_SERVICES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CS5535_MFGPT policy<{'i386': 'n'}> +CONFIG_HP_ILO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QCOM_COINCELL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_APDS9802ALS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISL29003 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ISL29020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TSL2550 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_BH1780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_BH1770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_APDS990X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HMC6352 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DS1682 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TI_DAC7512 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VMWARE_BALLOON policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ARM_CHARLCD policy<{'armhf': 'y'}> +CONFIG_BMP085_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BMP085_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCH_PHUB policy<{'i386': 'm'}> +CONFIG_USB_SWITCH_FSA9480 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LATTICE_ECP3_CONFIG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VEXPRESS_SYSCFG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CB710_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CB710_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_LIS3_SPI policy<{'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LIS3_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ALTERA_STAPL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INTEL_MEI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_MEI_ME policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_MEI_TXE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_VMWARE_VMCI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_MIC_BUS policy<{'amd64': 'm'}> +CONFIG_ECHO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CXL policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +# +CONFIG_CS5535_MFGPT note + +# Menu: Device Drivers >> Misc devices >> EEPROM support +CONFIG_EEPROM_AT24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_AT25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_MAX6875 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_93CX6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_93XX46 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Misc devices >> GenWQE PCIe Accelerator +CONFIG_GENWQE policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY policy<{'amd64': '0', 'arm64': '0', 'powerpc-powerpc64-emb': '0', 'powerpc-powerpc64-smp': '0', 'ppc64el': '0', 's390x': '0'}> + +# Menu: Device Drivers >> Misc devices >> SCIF Bus Driver +CONFIG_SCIF_BUS policy<{'amd64': 'm'}> +CONFIG_INTEL_MIC_HOST policy<{'amd64': 'm'}> +CONFIG_INTEL_MIC_CARD policy<{'amd64': 'm'}> +CONFIG_SCIF policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Misc devices >> Silicon Labs C2 port support +CONFIG_C2PORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_C2PORT_DURAMAR_2150 policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Misc devices >> Texas Instruments shared transport line discipline +CONFIG_TI_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multifunction device drivers +CONFIG_MFD_CS5535 policy<{'i386': 'm'}> +CONFIG_MFD_AS3711 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_AS3722 policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PMIC_ADP5520 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_AAT2870_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_ATMEL_HLCDC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_BCM590XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_AXP20X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CROS_EC policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_MFD_CROS_EC_I2C policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_MFD_CROS_EC_SPI policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_MFD_ASIC3 policy<{'armhf': 'y'}> +CONFIG_PMIC_DA903X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9052_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9052_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9055 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9062 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_DA9063 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MC13XXX_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MC13XXX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_HI6421_PMIC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HTC_EGPIO policy<{'armhf': 'y'}> +CONFIG_HTC_PASIC3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HTC_I2CPLD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_INTEL_QUARK_I2C_GPIO policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_LPC_ICH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_LPC_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INTEL_SOC_PMIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_INTEL_LPSS_ACPI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MFD_INTEL_LPSS_PCI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MFD_INTEL_MSIC policy<{'i386': 'y'}> +CONFIG_MFD_JANZ_CMODIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_88PM800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_88PM805 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_88PM860X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX14577 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX77686 policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX77693 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX77843 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MAX8925 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8997 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8998 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MENF21BMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EZX_PCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RETU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCF50633_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCF50633_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UCB1400_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_PM8921_CORE policy<{'armhf': 'm'}> +CONFIG_MFD_QCOM_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MFD_SPMI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MFD_RDC321X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_RTSX_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RTSX_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RC5T583 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RN5T618 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_SEC_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SI476X_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_SM501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_SM501_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_SMSC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ABX500_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AB3100_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_AB3100_OTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_STMPE policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SYSCON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_TI_AM335X_TSCADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_LP8788 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_OMAP_USB_HOST policy<{'armhf': 'y'}> +CONFIG_MFD_PALMAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TPS6105X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TPS65010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TPS65090 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65217 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TPS65218 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TPS6586X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65910 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65912 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65912_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65912_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS80031 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TWL4030_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TWL4030_POWER policy<{'armhf': 'y'}> +CONFIG_MFD_TWL4030_AUDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_TWL6040_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WL1273_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TIMBERDALE policy<{'i386': 'm'}> +CONFIG_MFD_TC3589X policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_T7L66XB policy<{'armhf': 'y'}> +CONFIG_MFD_TC6387XB policy<{'armhf': 'y'}> +CONFIG_MFD_TC6393XB policy<{'armhf': 'y'}> +CONFIG_MFD_VX855 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_ARIZONA_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_ARIZONA_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_WM5102 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM5110 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8997 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8998 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8400 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM831X_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM831X_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8350_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_VEXPRESS_SYSREG policy<{'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_MFD_SM501 note + +# Menu: Device Drivers >> Multifunction device drivers >> Multimedia Capabilities Port drivers + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE Interface Drivers +CONFIG_STMPE_I2C policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_STMPE_SPI policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support +CONFIG_MEDIA_SUPPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEDIA_ANALOG_TV_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_DIGITAL_TV_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_RADIO_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_SDR_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_RC_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_CONTROLLER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_V4L2_SUBDEV_API policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_ADV_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_FIXED_MINOR_RANGES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_V4L2_FLASH_LED_CLASS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_MAX_ADAPTERS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_DVB_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RC_MAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMS_SDIO_DRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_FIREDTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CYPRESS_FIRMWARE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMS_SIANO_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SMS_SIANO_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_SUBDRV_AUTOSELECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_IR_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support +CONFIG_MEDIA_CAMERA_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers +CONFIG_V4L_TEST_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_VIVID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VIM2M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Memory-to-memory multimedia devices +CONFIG_V4L_MEM2MEM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CODA policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_MEM2MEM_DEINTERLACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_G2D policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_JPEG policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_MFC policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC policy<{'armhf': 'm'}> +CONFIG_VIDEO_SH_VEU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_RENESAS_JPU policy<{'armhf': 'm'}> +CONFIG_VIDEO_RENESAS_VSP1 policy<{'armhf': 'm'}> +CONFIG_VIDEO_TI_VPE policy<{'armhf': 'm'}> +CONFIG_VIDEO_TI_VPE_DEBUG policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices +CONFIG_V4L_PLATFORM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CAFE_CCIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VIA_CAMERA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_VIDEO_OMAP2_VOUT policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_SH_VOU policy<{'armhf': 'm'}> +CONFIG_VIDEO_TIMBERDALE policy<{'i386': 'm'}> +CONFIG_VIDEO_OMAP3 policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_OMAP3_DEBUG policy<{'armhf-generic': 'n'}> +CONFIG_VIDEO_XILINX policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_XILINX_TPG policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_XILINX_VTC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung S5P/EXYNOS4 SoC series Camera Subsystem driver +CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung TV driver for S5P platform +CONFIG_VIDEO_SAMSUNG_S5P_TV policy<{'armhf': 'y'}> +CONFIG_VIDEO_SAMSUNG_S5P_HDMI policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_HDMI_DEBUG policy<{'armhf': 'n'}> +CONFIG_VIDEO_SAMSUNG_S5P_HDMIPHY policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_SII9234 policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_SDO policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_MIXER policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_MIXER_DEBUG policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> SoC camera support +CONFIG_SOC_CAMERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MX3 policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_RCAR_VIN policy<{'armhf': 'm'}> +CONFIG_VIDEO_SH_MOBILE_CSI2 policy<{'armhf': 'm'}> +CONFIG_VIDEO_SH_MOBILE_CEU policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Customise DVB Frontends +CONFIG_DVB_STB0899 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STB6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV090x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV6110x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_M88DS3103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRXK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA18271C2DD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI2165 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24123 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MT312 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10036 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10039 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0288 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STB6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0299 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV6110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA8083 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA8261 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_VES1X93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_ITD1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_CX24113 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA826X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUA6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24116 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24117 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24120 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI21XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TS2020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DS3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MB86A16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10071 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP8870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP887X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX22700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX22702 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRXD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_L64781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA1004X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NXT6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MT352 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10353 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB3000MB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB3000MC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB7000M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB7000P policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10048 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AF9013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_EC100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0367 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2820R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2841ER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2832 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2832_SDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI2168 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_VES1820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10023 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0297 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NXT200X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_OR51211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_OR51132 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BCM3510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT330X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT3305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT3306A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LG2160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1409 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AU8522_DTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AU8522_V4L policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1411 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S921 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB8000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MB86A20S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TC90522 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PLL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_DIB0070 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_DIB0090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRX39XYJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBH25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBP21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBP22 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6405 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6423 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_A8293 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGS8GXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ATBM8830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA665x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_IX2505V policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_M88RS2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AF9033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_HORUS3A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ASCOT2E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DUMMY_FE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_DVB_DUMMY_FE note + +# Menu: Device Drivers >> Multimedia support >> Customize TV tuners +CONFIG_MEDIA_TUNER_SIMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA8290 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA827X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18271 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA9887 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TEA5761 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TEA5767 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MSI001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT20XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2266 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2131 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_QT1010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC2028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL5005S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL5007T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MC44S803 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MAX2165 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18218 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0012 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_E4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC2580 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_M88RS6000T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TUA9001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_SI2157 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_IT913X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_R820T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL301RF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_QM1D1C0042 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> DVB platform devices +CONFIG_DVB_PLATFORM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_C8SECTPFE policy<{'armhf': 'n'}> +# +CONFIG_DVB_C8SECTPFE flag + +# Menu: Device Drivers >> Multimedia support >> Encoders, decoders, sensors and other helper chips +CONFIG_VIDEO_TVAUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TDA7432 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TDA9840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TEA6415C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TEA6420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MSP3400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CS5345 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CS53L32A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_UDA1342 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_WM8775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_WM8739 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VP27SMPX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SONY_BTF_MPX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA6588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7180 policy<{'i386': 'm'}> +CONFIG_VIDEO_ADV7604 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_BT819 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_BT856 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_BT866 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_KS0127 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_SAA7110 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_SAA711X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TVP5150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW2804 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW9903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW9906 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VPX3220 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_SAA717X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7185 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ADV7170 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ADV7175 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ADV7511 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7670 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9V011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_UPD64031A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_UPD64083 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA6752HS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_M52790 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters +CONFIG_MEDIA_PCI_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_MEYE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_VIDEO_SOLO6X10 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW68 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ZORAN policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_DC30 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_IVTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IVTV_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_FB_IVTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_HEXIUM_GEMINI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_HEXIUM_ORION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MXB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_DT3155 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX18 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX18_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX23885 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_ALTERA_CI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25821 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25821_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_BT848 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BT8XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_COBALT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AV7110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AV7110_OSD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_B2C2_FLEXCOP_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_PLUTO2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DM1105 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PT1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PT3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MANTIS_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MANTIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_HOPPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NGENE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DDBRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SMIPCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NETUP_UNIDVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Conexant 2388x (bt878 successor) support +CONFIG_VIDEO_CX88 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_BLACKBIRD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_ENABLE_VP3054 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Philips SAA7134 support +CONFIG_VIDEO_SAA7134 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_SAA7134_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_GO7007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> SAA7146 DVB cards (aka Budget, Nova-PCI) +CONFIG_DVB_BUDGET_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_CI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_AV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_PATCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Zoran ZR36060 +CONFIG_VIDEO_ZORAN_ZR36060 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_BUZ policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_DC10 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_LML33 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_LML33R10 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VIDEO_ZORAN_AVS6EYES policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters +CONFIG_MEDIA_USB_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_VIDEO_CLASS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_PWC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PWC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_PWC_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CPIA2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ZR364XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STKWEBCAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_S2255 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_USBTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_PVRUSB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_PVRUSB2_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_PVRUSB2_DVB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_PVRUSB2_DEBUGIFC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_HDPVR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_USBVISION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_STK1160_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_STK1160_AC97 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_GO7007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_LOADER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_USB_S2250_BOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AU0828 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AU0828_V4L2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_AU0828_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_TM6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TM6000_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TM6000_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TTUSB_BUDGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TTUSB_DEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMS_USB_DRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_AS102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AIRSPY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HACKRF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MSI2500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Conexant cx231xx USB video capture support +CONFIG_VIDEO_CX231XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX231XX_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CX231XX_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX231XX_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Empia EM28xx USB devices support +CONFIG_VIDEO_EM28XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_V4L2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_RC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> GSPCA based webcams +CONFIG_USB_GSPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_M5602 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STV06XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GL860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_BENQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_CONEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_CPIA1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_DTCS033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_ETOMS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_FINEPIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_JEILINJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_JL2005BCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_KINECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_KONICA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_MARS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_MR97310A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_NW80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV519 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV534 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV534_9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC207 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC7302 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC7311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SE401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SN9C2028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SN9C20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SONIXB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SONIXJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA505 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA506 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA508 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA561 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA1528 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ905 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ905C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ930X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STK014 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STK1135 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STV0680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SUNPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_T613 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TOPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TOUPTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TV8532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_VC032X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_VICAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_XIRLINK_CIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_ZC3XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices +CONFIG_DVB_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_USB_A800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIBUSB_MB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIBUSB_MB_FAULTY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_USB_DIBUSB_MC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIB0700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_UMT_010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CXUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_M920X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIGITV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_VP7045 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_VP702X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_GP8PSK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_NOVA_T_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_TTUSB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DTT200U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_OPERA1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9005_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_PCTV452E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DW2102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CINERGY_T2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DTV5100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_FRIIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AZ6027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_TECHNISAT_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices v2 +CONFIG_DVB_USB_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9015 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9035 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_ANYSEE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AU6610 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AZ6007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CE6230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_EC168 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_GL861 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_LME2510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_MXL111SF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_RTL28XXU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DVBSKY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Radio Adapters +CONFIG_RADIO_ADAPTERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RADIO_SI470X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SI470X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SI470X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SI476X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MR800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DSBR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_MAXIRADIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SHARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SHARK2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_KEENE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RAREMONO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MA901 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_TEA5764 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SAA7706H policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_TEF6862 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_TIMBERDALE policy<{'i386': 'm'}> +CONFIG_RADIO_WL1273 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Radio Adapters >> ISA radio devices +CONFIG_V4L_RADIO_ISA_DRIVERS policy<{'i386': 'y'}> +CONFIG_RADIO_CADET policy<{'i386': 'm'}> +CONFIG_RADIO_RTRACK policy<{'i386': 'm'}> +CONFIG_RADIO_RTRACK2 policy<{'i386': 'm'}> +CONFIG_RADIO_AZTECH policy<{'i386': 'm'}> +CONFIG_RADIO_GEMTEK policy<{'i386': 'm'}> +CONFIG_RADIO_MIROPCM20 policy<{'i386': 'm'}> +CONFIG_RADIO_SF16FMI policy<{'i386': 'm'}> +CONFIG_RADIO_SF16FMR2 policy<{'i386': 'm'}> +CONFIG_RADIO_TERRATEC policy<{'i386': 'm'}> +CONFIG_RADIO_TRUST policy<{'i386': 'm'}> +CONFIG_RADIO_TYPHOON policy<{'i386': 'm'}> +CONFIG_RADIO_ZOLTRIX policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Radio Adapters >> Silicon Labs Si4713 FM Radio with RDS Transmitter support +CONFIG_RADIO_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PLATFORM_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Radio Adapters >> Texas Instruments WL128x FM driver (ST based) +CONFIG_RADIO_WL128X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices +CONFIG_RC_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RC_ATI_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_ENE policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_IR_HIX5HD2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_MCEUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_ITE_CIR policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_IR_FINTEK policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_IR_MESON policy<{'armhf': 'm'}> +CONFIG_IR_NUVOTON policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_IR_REDRAT3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_STREAMZAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_WINBOND_CIR policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IR_IGORPLUGUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IGUANA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_TTUSBIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RC_LOOPBACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_GPIO_CIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices >> Hardware decoder + +# Menu: Device Drivers >> Multimedia support >> Remote controller decoders +CONFIG_RC_DECODERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LIRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_LIRC_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_NEC_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RC5_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RC6_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_JVC_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SONY_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SANYO_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SHARP_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_MCE_KBD_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IR_XMP_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Sensors used on soc_camera driver +CONFIG_SOC_CAMERA_IMX074 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_MT9M001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_MT9M111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_MT9T031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_MT9T112 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_MT9V022 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV2640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV5642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV6650 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV772X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV9640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_OV9740 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_RJ54N1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SOC_CAMERA_TW9910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) +CONFIG_MD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BCACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BCACHE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BCACHE_CLOSURES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DM_DEBUG_BLOCK_STACK_TRACING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support +CONFIG_BLK_DEV_DM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_MQ_DEFAULT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_DM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_DM_CRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_SNAPSHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_THIN_PROVISIONING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_ERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MIRROR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_LOG_USERSPACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_RAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_ZERO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH_QL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_DELAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_UEVENT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_FLAKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_VERITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_SWITCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_LOG_WRITES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_BLK_DEV_DM mark note + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support >> Cache target (EXPERIMENTAL) +CONFIG_DM_CACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CACHE_MQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CACHE_SMQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CACHE_CLEANER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> RAID support +CONFIG_BLK_DEV_MD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MD_AUTODETECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MD_LINEAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID10 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID456 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_MULTIPATH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_MD_FAULTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> NVDIMM (Non-Volatile Memory Device) Support +CONFIG_LIBNVDIMM policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_BLK_DEV_PMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-e500mc': 'm', 'ppc64el': 'm'}> +CONFIG_ND_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-e500mc': 'm', 'ppc64el': 'm'}> +CONFIG_BTT policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> NVMEM Support +CONFIG_NVMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_QCOM_QFPROM policy<{'arm64': 'm', 'armhf': 'm'}> +# +CONFIG_NVMEM flag note + +# Menu: Device Drivers >> Network device support +CONFIG_NETDEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CAIF_TTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_SPI_SLAVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_SPI_SYNC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CAIF_HSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FDDI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DEFXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DEFXX_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SKFP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HIPPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NET_SB1000 policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_MICREL_KS8995MA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_XEN_NETDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XEN_NETDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FUJITSU_ES policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_HYPERV_NET policy<{'amd64': 'm', 'i386': 'm'}> +# +CONFIG_HIPPI note +CONFIG_XEN_NETDEV_FRONTEND note +CONFIG_DEFXX_MMIO flag + +# Menu: Device Drivers >> Network device support >> ARCnet support +CONFIG_ARCNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ARCNET_1201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_1051 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_CAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM90xx policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM90xxIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_RIM_I policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> ARCnet support >> ARCnet COM20020 chipset driver +CONFIG_ARCNET_COM20020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM20020_ISA policy<{'i386': 'm'}> +CONFIG_ARCNET_COM20020_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM20020_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Network device support >> ATM drivers +CONFIG_ATM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATM_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_LANAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_ENI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_ENI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_FIRESTREAM policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_ATM_ZATM policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_ATM_ZATM_DEBUG policy<{'amd64': 'n', 'i386': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_ATM_NICSTAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_NICSTAR_USE_SUNI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_NICSTAR_USE_IDT77105 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_IDT77252 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_IDT77252_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_IDT77252_RCV_ALL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_AMBASSADOR policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_ATM_AMBASSADOR_DEBUG policy<{'amd64': 'n', 'i386': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_ATM_HORIZON policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_ATM_HORIZON_DEBUG policy<{'amd64': 'n', 'i386': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_ATM_IA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_IA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_HE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_HE_USE_SUNI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATM_SOLOS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_ATM_NICSTAR_USE_IDT77105 flag + +# Menu: Device Drivers >> Network device support >> ATM drivers >> FORE Systems 200E-series +CONFIG_ATM_FORE200E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_FORE200E_USE_TASKLET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_FORE200E_TX_RETRY policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'i386': '16', 'powerpc': '16', 'ppc64el': '16'}> +CONFIG_ATM_FORE200E_DEBUG policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Network device support >> ATM drivers >> Fine-tune burst settings +CONFIG_ATM_ENI_TUNE_BURST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> CAIF virtio transport driver +CONFIG_CAIF_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VHOST_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VHOST_SCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VHOST_CROSS_ENDIAN_LEGACY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers + +# Menu: Device Drivers >> Network device support >> Ethernet driver support +CONFIG_ETHERNET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_VENDOR_ADAPTEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ADAPTEC_STARFIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_AGERE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ET131X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_ALTEON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ACENIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ACENIC_OMIT_TIGON_I policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ALTERA_TSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_XGENE policy<{'arm64': 'm'}> +CONFIG_NET_VENDOR_ARC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARC_EMAC policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EMAC_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_CADENCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MACB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_BROCADE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_BNA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_CALXEDA_XGMAC policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_CISCO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ENIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CX_ECAT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DM9000 policy<{'armhf': 'm'}> +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL policy<{'armhf': 'n'}> +CONFIG_DNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_DEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_DLINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DL2K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SUNDANCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SUNDANCE_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_EMULEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BE2NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BE2NET_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BE2NET_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_VENDOR_EZCHIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_EXAR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_S2IO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VXGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VXGE_DEBUG_TRACE_ALL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_FARADAY policy<{'armhf': 'y'}> +CONFIG_FTMAC100 policy<{'armhf': 'm'}> +CONFIG_FTGMAC100 policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_FUJITSU policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_FMVJ18X policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_NET_VENDOR_HISILICON policy<{'armhf': 'y'}> +CONFIG_HIX5HD2_GMAC policy<{'armhf': 'm'}> +CONFIG_HIP04_ETH policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_HP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HP100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IP1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_JME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_MICROCHIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ENC28J60 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ENC28J60_WRITEVERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_MYRI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MYRI10GE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MYRI10GE_DCA policy<{'amd64': 'y'}> +CONFIG_FEALNX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_NVIDIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FORCEDETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_OKI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCH_GBE policy<{'i386': 'm'}> +CONFIG_ETHOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_PACKET_ENGINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HAMACHI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_YELLOWFIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_PASEMI policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PASEMI_MAC policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_NET_VENDOR_QUALCOMM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_QCA7000 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_RENESAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SH_ETH policy<{'armhf': 'm'}> +CONFIG_RAVB policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_RDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_R6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_ROCKER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_SAMSUNG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SXGBE_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SEEQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_SILAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SC92031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SIS900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SIS190 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_STMICRO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_STMMAC_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STMMAC_PCI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_TEHUTI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TEHUTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_VIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VIA_RHINE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIA_RHINE_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIA_VELOCITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_WIZNET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_WIZNET_W5100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WIZNET_W5300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_XIRCOM policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_XIRC2PS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_NET_VENDOR_SYNOPSYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYNOPSYS_DWC_ETH_QOS policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_NET_VENDOR_SYNOPSYS flag note + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> 3Com devices +CONFIG_NET_VENDOR_3COM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EL3 policy<{'i386': 'm'}> +CONFIG_3C515 policy<{'i386': 'm'}> +CONFIG_PCMCIA_3C574 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_3C589 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_VORTEX policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TYPHOON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> AMD devices +CONFIG_NET_VENDOR_AMD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AMD8111_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LANCE policy<{'i386': 'm'}> +CONFIG_PCNET32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_NMCLAN policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_NI65 policy<{'i386': 'm'}> +CONFIG_AMD_XGBE policy<{'arm64': 'm'}> +CONFIG_AMD_XGBE_DCB policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Apple devices +CONFIG_NET_VENDOR_APPLE policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_MACE policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_MACE_AAUI_PORT policy<{'powerpc-powerpc-smp': 'n'}> +CONFIG_BMAC policy<{'powerpc-powerpc-smp': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Atheros devices +CONFIG_NET_VENDOR_ATHEROS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATL2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ALX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Blackfin on-chip MAC support + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Broadcom devices +CONFIG_NET_VENDOR_BROADCOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_B44 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BCMGENET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BNX2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TIGON3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y'}> +CONFIG_BNX2X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BNX2X_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BNX2X_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SYSTEMPORT policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_TIGON3 flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cavium ethernet drivers +CONFIG_NET_VENDOR_CAVIUM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_THUNDER_NIC_PF policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_THUNDER_NIC_VF policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_THUNDER_NIC_BGX policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_LIQUIDIO policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Chelsio devices +CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CHELSIO_T1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T1_1G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T4_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T4_FCOE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T4VF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cirrus devices +CONFIG_NET_VENDOR_CIRRUS policy<{'armhf': 'y', 'i386': 'y'}> +CONFIG_CS89x0 policy<{'armhf': 'm', 'i386': 'm'}> +CONFIG_CS89x0_PLATFORM policy<{'armhf': 'y', 'i386': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices +CONFIG_NET_TULIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DE2104X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DE2104X_DSL policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_DE4X5 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WINBOND_840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DM9102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ULI526X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_XIRCOM policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices >> DECchip Tulip (dc2114x) PCI support +CONFIG_TULIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TULIP_MWI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_TULIP_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_TULIP_NAPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_TULIP_NAPI flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices +CONFIG_NET_VENDOR_FREESCALE policy<{'armhf-generic': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_FEC policy<{'armhf-generic': 'y'}> +CONFIG_FSL_PQ_MDIO policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_FSL_XGMAC_MDIO policy<{'armhf-generic': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_GIANFAR policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices >> Freescale Ethernet Driver +CONFIG_FS_ENET policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_FS_ENET_HAS_SCC policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_FS_ENET_HAS_FCC policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_FS_ENET_MDIO_FCC policy<{'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices +CONFIG_NET_VENDOR_IBM policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_IBMVETH policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'y'}> +CONFIG_EHEA policy<{'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices >> IBM EMAC Ethernet support + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel (82586/82593/82596) devices +CONFIG_NET_VENDOR_I825XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices +CONFIG_NET_VENDOR_INTEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_E100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_E1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_E1000E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IGB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IGB_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IGB_DCA policy<{'amd64': 'y'}> +CONFIG_IGBVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IXGB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IXGBEVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I40EVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FM10K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FM10K_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) 10GbE PCI Express adapters support +CONFIG_IXGBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IXGBE_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IXGBE_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IXGBE_DCA policy<{'amd64': 'y'}> +CONFIG_IXGBE_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) Ethernet Controller XL710 Family support +CONFIG_I40E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_I40E_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I40E_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I40E_FCOE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Marvell devices +CONFIG_NET_VENDOR_MARVELL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MV643XX_ETH policy<{'armhf': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_MVMDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MVNETA policy<{'armhf': 'm'}> +CONFIG_MVPP2 policy<{'armhf': 'm'}> +CONFIG_PXA168_ETH policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SKGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SKGE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SKGE_GENESIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SKY2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SKY2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Mellanox devices +CONFIG_NET_VENDOR_MELLANOX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_EN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX4_EN_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_EN_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX5_CORE_EN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLXSW_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Micrel devices +CONFIG_NET_VENDOR_MICREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KS8842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KS8851 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KS8851_MLL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KSZ884X_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor 8390 devices +CONFIG_NET_VENDOR_8390 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PCMCIA_AXNET policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_AX88796 policy<{'armhf': 'm'}> +CONFIG_AX88796_93CX6 policy<{'armhf': 'n'}> +CONFIG_NE2000 policy<{'i386': 'm'}> +CONFIG_NE2K_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_PCNET policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_ULTRA policy<{'i386': 'm'}> +CONFIG_WD80x3 policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor devices +CONFIG_NET_VENDOR_NATSEMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NATSEMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NS83820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices +CONFIG_NET_VENDOR_QLOGIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_QLA3XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_QLGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NETXEN_NIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices >> QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support +CONFIG_QLCNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_QLCNIC_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_QLCNIC_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_QLCNIC_VXLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_QLCNIC_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices +CONFIG_NET_VENDOR_REALTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_8139CP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_R8169 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices >> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support +CONFIG_8139TOO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_8139TOO_PIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_8139TOO_TUNE_TWISTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_8139TOO_8129 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_8139_OLD_RX_RESET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_8139TOO_TUNE_TWISTER flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> SMC (SMSC)/Western Digital devices +CONFIG_NET_VENDOR_SMSC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SMC9194 policy<{'i386': 'm'}> +CONFIG_SMC91X policy<{'arm64': 'y', 'armhf': 'm'}> +CONFIG_PCMCIA_SMC91C92 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_EPIC100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMC911X policy<{'armhf': 'm'}> +CONFIG_SMSC911X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMSC9420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> STMMAC Platform bus support +CONFIG_STMMAC_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_IPQ806X policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_LPC18XX policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_MESON policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_SOCFPGA policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_STI policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_SUNXI policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Solarflare SFC4000/SFC9000/SFC9100-family support +CONFIG_SFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SFC_MTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_MCDI_MON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_MCDI_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Sun devices +CONFIG_NET_VENDOR_SUN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HAPPYMEAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SUNGEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CASSINI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NIU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Texas Instruments (TI) devices +CONFIG_NET_VENDOR_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TI_DAVINCI_EMAC policy<{'armhf-generic': 'm'}> +CONFIG_TI_DAVINCI_MDIO policy<{'armhf': 'y'}> +CONFIG_TI_DAVINCI_CPDMA policy<{'armhf': 'y'}> +CONFIG_TI_CPSW_PHY_SEL policy<{'armhf': 'y'}> +CONFIG_TI_CPSW_ALE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TI_CPSW policy<{'armhf': 'y'}> +CONFIG_TI_CPTS policy<{'armhf': 'y'}> +CONFIG_TLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Toshiba devices +CONFIG_NET_VENDOR_TOSHIBA policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_GELIC_NET policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_GELIC_WIRELESS policy<{'powerpc-powerpc64-smp': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> WIZnet interface mode +CONFIG_WIZNET_BUS_DIRECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_WIZNET_BUS_INDIRECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_WIZNET_BUS_ANY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Xilinx devices +CONFIG_NET_VENDOR_XILINX policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_XILINX_EMACLITE policy<{'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_XILINX_LL_TEMAC policy<{'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> IEEE 802.15.4 drivers +CONFIG_IEEE802154_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_FAKELB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_AT86RF230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_MRF24J40 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_CC2520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_ATUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Network core driver support +CONFIG_NET_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BONDING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_EQUALIZER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MACVLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MACVTAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPVLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VXLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GENEVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETCONSOLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETCONSOLE_DYNAMIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NTB_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RIONET policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RIONET_TX_SIZE policy<{'amd64': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_RIONET_RX_SIZE policy<{'amd64': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_TUN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TUN_VNET_CROSS_LE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_VETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VIRTIO_NET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NLMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_VRF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_VIRTIO_NET note flag + +# Menu: Device Drivers >> Network device support >> Network core driver support >> Ethernet team driver support +CONFIG_NET_TEAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_BROADCAST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_ROUNDROBIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_RANDOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_LOADBALANCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> PHY Device support and infrastructure +CONFIG_PHYLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AQUANTIA_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AT803X_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AMD_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MARVELL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DAVICOM_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_QSEMI_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LXT_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CICADA_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VITESSE_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TERANETICS_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SMSC_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BROADCOM_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BCM7XXX_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BCM87XX_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ICPLUS_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REALTEK_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NATIONAL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STE10XP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LSI_ET1011C_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MICREL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DP83848_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DP83867_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MICROCHIP_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FIXED_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MDIO_BITBANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_OCTEON policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_BUS_MUX_GPIO policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_BUS_MUX_MMIOREG policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_BCM_UNIMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> PPP (point-to-point protocol) support +CONFIG_PPP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PPP_BSDCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_DEFLATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPP_MPPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_MULTILINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPPOATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPPOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPPOL2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_ASYNC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_SYNC_TTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers +CONFIG_LCS policy<{'s390x': 'm'}> +CONFIG_CTCM policy<{'s390x': 'm'}> +CONFIG_NETIUCV policy<{'s390x': 'm'}> +CONFIG_SMSGIUCV policy<{'s390x': 'y'}> +CONFIG_SMSGIUCV_EVENT policy<{'s390x': 'm'}> +CONFIG_QETH policy<{'s390x': 'm'}> +CONFIG_QETH_L2 policy<{'s390x': 'm'}> +CONFIG_QETH_L3 policy<{'s390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> SLIP (serial line) support +CONFIG_SLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SLIP_COMPRESSED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SLIP_SMART policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SLIP_MODE_SLIP6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters +CONFIG_USB_NET_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CATC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_KAWETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PEGASUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RTL8150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RTL8152 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LAN78XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CDC_PHONET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IPHETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework +CONFIG_USB_USBNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_AX8817X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_AX88179_178A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDCETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_EEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_HUAWEI_CDC_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_MBIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_DM9601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SR9700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SR9800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SMSC75XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SMSC95XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_GL620A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_NET1080 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_PLUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_MCS7830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_RNDIS_HOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_ZAURUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CX82310_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_KALMIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_QMI_WWAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_INT51X1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SIERRA_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_VL600 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CH9200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework >> Simple USB Network Links (CDC Ethernet subset) +CONFIG_USB_NET_CDC_SUBSET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ALI_M5632 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_AN2720 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_BELKIN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ARMLINUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EPSON2888 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_KC2190 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wan interfaces support +CONFIG_WAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HOSTESS_SV11 policy<{'i386': 'm'}> +CONFIG_COSA policy<{'i386': 'm'}> +CONFIG_LANMEDIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SEALEVEL_4021 policy<{'i386': 'm'}> +CONFIG_DLCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DLCI_MAX policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_SDLA policy<{'i386': 'm'}> +CONFIG_LAPBETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_X25_ASY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SBNI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SBNI_MULTILINE policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wan interfaces support >> Generic HDLC layer +CONFIG_HDLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_RAW_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_CISCO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_FR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_PPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_X25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCI200SYN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WANXL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PC300TOO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_N2 policy<{'i386': 'm'}> +CONFIG_C101 policy<{'i386': 'm'}> +CONFIG_FARSYNC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DSCC4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DSCC4_PCISYNC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DSCC4_PCI_RST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> WiMAX Wireless Broadband devices +CONFIG_WIMAX_I2400M_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WIMAX_I2400M_DEBUG_LEVEL policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN +CONFIG_WLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PCMCIA_RAYCS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_LIBERTAS_THINFIRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_THINFIRM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_LIBERTAS_THINFIRM_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIRO policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCI_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_ATMEL policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_AT76C50X_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIRO_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_WL3501 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PRISM54 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ZD1201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_RNDIS_WLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8180 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8187 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADM8211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAC80211_HWSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MWL8K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_B43LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_B43LEGACY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_BRCMSMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPW2100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPW2100_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2100_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_LIBIPW_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IWL4965 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IWL3945 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ZD1211RW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ZD1211RW_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CW1200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CW1200_WLAN_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CW1200_WLAN_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards +CONFIG_ATH_CARDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATH5K_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_BTCOEX_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_HTC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH9K_HTC_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_AR5523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WIL6210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WIL6210_ISR_COR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WIL6210_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WCN36XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WCN36XX_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 5xxx wireless cards support +CONFIG_ATH5K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH5K_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATH5K_TRACER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11ac wireless cards support +CONFIG_ATH10K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATH10K_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH10K_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11n wireless cards support +CONFIG_ATH9K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH9K_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_AHB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_STATION_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_DYNACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATH9K_WOW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_RFKILL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_CHANNEL_CONTEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_PCOEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros mobile chipsets support +CONFIG_ATH6KL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATH6KL_TRACING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Linux Community AR9170 802.11n USB support +CONFIG_CARL9170 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CARL9170_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CARL9170_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CARL9170_HWRNG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) +CONFIG_B43 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_B43_PCMCIA policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n'}> +CONFIG_B43_SDIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_B43_PHY_G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_N policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_LP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_HT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) >> Supported bus types +CONFIG_B43_BUSES_BCMA_AND_SSB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43_BUSES_BCMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_B43_BUSES_SSB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx-legacy data transfer mode +CONFIG_B43LEGACY_DMA_AND_PIO_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_B43LEGACY_DMA_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_B43LEGACY_PIO_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom IEEE802.11n embedded FullMAC WLAN driver +CONFIG_BRCMFMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BRCMFMAC_SDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMFMAC_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMFMAC_PCIE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BRCM_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMDBG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_BRCMDBG flag + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) +CONFIG_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HERMES_PRISM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_HERMES_CACHE_FW_ON_INIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_APPLE_AIRPORT policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_PLX_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TMD_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NORTEL_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_HERMES policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_SPECTRUM policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_ORINOCO_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) +CONFIG_HOSTAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_FIRMWARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HOSTAP_FIRMWARE_NVRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_HOSTAP_PLX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection +CONFIG_IPW2200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPW2200_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_RADIOTAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_PROMISCUOUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_QOS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) +CONFIG_IWLWIFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IWLDVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IWLMVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IWLWIFI_BCAST_FILTERING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IWLWIFI_UAPSD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_IWLWIFI_UAPSD note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) >> Debugging Options +CONFIG_IWLWIFI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IWLWIFI_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IWLWIFI_DEVICE_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell 8xxx Libertas WLAN driver support +CONFIG_LIBERTAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_LIBERTAS_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_LIBERTAS_MESH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell WiFi-Ex Driver +CONFIG_MWIFIEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Mediatek Wireless LAN support +CONFIG_WL_MEDIATEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MT7601U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support +CONFIG_RT2X00 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2400PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2500PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT61PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2500USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT73USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2X00_LIB_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RT2X00_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support +CONFIG_RT2800PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2800PCI_RT33XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT35XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT53XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT3290 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (USB) support +CONFIG_RT2800USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RT2800USB_RT33XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT35XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT3573 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT53XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT55XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_UNKNOWN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek rtlwifi family of devices +CONFIG_RTL_CARDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192CE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192SE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192DE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8723AE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8723BE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8188EE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192EE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8821AE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192CU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTLWIFI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Redpine Signals Inc 91x WLAN driver support +CONFIG_RSI_91X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RSI_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RSI_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RSI_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Softmac Prism54 support +CONFIG_P54_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_P54_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_P54_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_P54_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_P54_SPI_DEFAULT_EEPROM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support +CONFIG_WL_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WL12XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WL18XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WILINK_PLATFORM_DATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support >> TI wl1251 driver support +CONFIG_WL1251 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WL1251_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WL1251_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> iwl3945 / iwl4965 Debugging Options +CONFIG_IWLEGACY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IWLEGACY_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Non-Transparent Bridge support +CONFIG_NTB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NTB_INTEL policy<{'amd64': 'm'}> +CONFIG_NTB_PINGPONG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_TOOL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_TRANSPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> PHY Subsystem +CONFIG_GENERIC_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PHY_BERLIN_USB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_BERLIN_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_DM816X_USB policy<{'armhf': 'm'}> +CONFIG_PHY_EXYNOS_MIPI_VIDEO policy<{'armhf': 'y'}> +CONFIG_PHY_PXA_28NM_HSIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_PXA_28NM_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_RCAR_GEN2 policy<{'armhf': 'm'}> +CONFIG_OMAP_CONTROL_PHY policy<{'armhf': 'm'}> +CONFIG_OMAP_USB2 policy<{'armhf': 'm'}> +CONFIG_TI_PIPE3 policy<{'armhf': 'm'}> +CONFIG_TWL4030_USB policy<{'armhf': 'm'}> +CONFIG_PHY_EXYNOS_DP_VIDEO policy<{'armhf': 'y'}> +CONFIG_BCM_KONA_USB2_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_EXYNOS5250_SATA policy<{'armhf': 'y'}> +CONFIG_PHY_HIX5HD2_SATA policy<{'armhf': 'm'}> +CONFIG_PHY_SAMSUNG_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_EXYNOS5_USBDRD policy<{'armhf': 'm'}> +CONFIG_PHY_QCOM_APQ8064_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_IPQ806X_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_XGENE policy<{'arm64': 'y'}> +CONFIG_PHY_QCOM_UFS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_TUSB1210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> PPS support + +# Menu: Device Drivers >> PPS support >> PPS support +CONFIG_PPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_PPS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PPS_CLIENT_KTIMER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PPS_CLIENT_LDISC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PPS_CLIENT_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PPS_CLIENT_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_PPS_CLIENT_KTIMER flag +CONFIG_PPS flag + +# Menu: Device Drivers >> PTP clock support +CONFIG_PTP_1588_CLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_PTP_1588_CLOCK_GIANFAR policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_PTP_1588_CLOCK_PCH policy<{'i386': 'm'}> +# +CONFIG_PTP_1588_CLOCK flag + +# Menu: Device Drivers >> Parallel port support +CONFIG_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PARPORT_AX88796 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_1284 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Parallel port support >> PC-style hardware +CONFIG_PARPORT_PC policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_SERIAL policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_PC_FIFO policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PARPORT_PC_SUPERIO policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PARPORT_PC_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Performance monitor support +CONFIG_ARM_PMU policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Pin controllers +CONFIG_PINMUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_PINCONF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DEBUG_PINCTRL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n'}> +CONFIG_PINCTRL_AS3722 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_AMD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_PINCTRL_SINGLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_PALMAS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_IMX50 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX51 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6Q policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6SL policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6SX policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6UL policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX7D policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_VF610 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_BAYTRAIL policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_PINCTRL_CHERRYVIEW policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_PINCTRL_SUNRISEPOINT policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_PINCTRL_APQ8064 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_APQ8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_IPQ8064 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8X74 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_QDF2XXX policy<{'arm64': 'm'}> +CONFIG_PINCTRL_QCOM_SPMI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_QCOM_SSBI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_EXYNOS policy<{'armhf': 'y'}> +CONFIG_PINCTRL_EXYNOS5440 policy<{'armhf': 'y'}> +CONFIG_GPIO_SH_PFC policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_PH1_LD4 policy<{'armhf': 'm'}> +CONFIG_PINCTRL_UNIPHIER_PH1_PRO4 policy<{'armhf': 'm'}> +CONFIG_PINCTRL_UNIPHIER_PH1_SLD8 policy<{'armhf': 'm'}> +CONFIG_PINCTRL_UNIPHIER_PH1_PRO5 policy<{'armhf': 'm'}> +CONFIG_PINCTRL_UNIPHIER_PROXSTREAM2 policy<{'armhf': 'm'}> +CONFIG_PINCTRL_UNIPHIER_PH1_LD6B policy<{'armhf': 'm'}> +CONFIG_PINCTRL_MT8135 policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_PINCTRL_MT8127 policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_PINCTRL_MT8173 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT6397 policy<{'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_PINCTRL_MT8135 flag +CONFIG_PINCTRL_MT8127 flag + +# Menu: Device Drivers >> Pin controllers >> Nomadik pin controller driver + +# Menu: Device Drivers >> Pin controllers >> ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions + +# Menu: Device Drivers >> Platform support for Chrome hardware +CONFIG_CHROME_PLATFORMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CHROMEOS_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CHROMEOS_PSTORE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_CROS_EC_CHARDEV policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm'}> +CONFIG_CROS_EC_LPC policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Plug and Play support +CONFIG_PNP policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_PNP_DEBUG_MESSAGES policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_ISAPNP policy<{'i386': 'y'}> +CONFIG_PNPBIOS policy<{'i386': 'y'}> +CONFIG_PNPBIOS_PROC_FS policy<{'i386': 'y'}> + +# Menu: Device Drivers >> Power supply class support +CONFIG_POWER_SUPPLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_POWER_SUPPLY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PDA_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_APM_POWER policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_GENERIC_ADC_BATTERY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX8925_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WM831X_BACKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WM831X_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WM8350_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TEST_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2782 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_PMU policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_BATTERY_SBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27x00 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27X00_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATTERY_BQ27X00_PLATFORM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATTERY_DA9030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_DA9150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AXP288_CHARGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AXP288_FUEL_GAUGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_MAX17040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_MAX17042 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_TWL4030_MADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_INTEL_MID policy<{'i386': 'm'}> +CONFIG_BATTERY_RX51 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_ISP1704 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_LP8727 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MANAGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CHARGER_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ2415X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24190 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24257 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24735 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ25890 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_SMB347 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_TPS65090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_GAUGE_LTC2941 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_RT9455 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Power supply class support >> Board level reset or power off +CONFIG_POWER_RESET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_AS3722 policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_AXXIA policy<{'armhf-generic-lpae': 'y'}> +CONFIG_POWER_RESET_BRCMSTB policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_GPIO policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_GPIO_RESTART policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_HISI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_IMX policy<{'armhf-generic': 'n'}> +CONFIG_POWER_RESET_MSM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_LTC2952 policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_QNAP policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_RESTART policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_VERSATILE policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VEXPRESS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_XGENE policy<{'arm64': 'n'}> +CONFIG_POWER_RESET_SYSCON policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_SYSCON_POWEROFF policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_RMOBILE policy<{'armhf': 'm'}> +CONFIG_POWER_RESET_ZX policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Pulse-Width Modulation (PWM) Support +CONFIG_PWM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PWM_ATMEL_HLCDC_PWM policy<{'arm64': 'm', 'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_PWM_CRC policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_PWM_FSL_FTM policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_IMX policy<{'armhf-generic': 'm'}> +CONFIG_PWM_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_LPSS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PWM_LPSS_PCI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PWM_LPSS_PLATFORM policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PWM_PCA9685 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_RENESAS_TPU policy<{'armhf': 'm'}> +CONFIG_PWM_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_PWM_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_PWM_TIECAP policy<{'armhf-generic': 'm'}> +CONFIG_PWM_TIEHRPWM policy<{'armhf-generic': 'm'}> +CONFIG_PWM_TWL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_TWL_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Real Time Clock +CONFIG_RTC_CLASS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_HCTOSYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_HCTOSYS_DEVICE policy<{'amd64': '"rtc0"', 'arm64': '"rtc0"', 'armhf': '"rtc0"', 'i386': '"rtc0"', 'powerpc': '"rtc0"', 'ppc64el': '"rtc0"'}> +CONFIG_RTC_SYSTOHC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_SYSTOHC_DEVICE policy<{'amd64': '"rtc0"', 'arm64': '"rtc0"', 'armhf': '"rtc0"', 'i386': '"rtc0"', 'powerpc': '"rtc0"', 'ppc64el': '"rtc0"'}> +CONFIG_RTC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_INTF_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_PROC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_DEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_DEV_UIE_EMUL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_88PM80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ABB5ZES3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ABX80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_AS3722 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1307 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1374 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1374_WDT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_DS1672 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS3232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_HYM8563 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX6900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX77802 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RS5C372 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL1208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL12022 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL12057 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_X1205 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF2127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF85063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T80 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T80_WDT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_BQ32K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS6586X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS65910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS80031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RC5T583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_S35390A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_FM3130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX8581 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX8025 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_EM3027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RV3029C2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_S5M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T94 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1343 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1347 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1390 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX6902 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_R9701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RS5C348 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS3234 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF2123 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX4581 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MCP795 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_CMOS policy<{'amd64': 'y', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_VRTC policy<{'i386': 'm'}> +CONFIG_RTC_DRV_DS1286 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1511 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1553 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1742 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS2404 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_EFI policy<{'arm64': 'm'}> +CONFIG_RTC_DRV_STK17TA8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T86 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T35 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T59 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MSM6242 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_BQ4802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RP5C01 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_V3020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_AB3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_OPAL policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_ZYNQMP policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_IMXDI policy<{'armhf-generic': 'm'}> +CONFIG_RTC_DRV_OMAP policy<{'armhf': 'y'}> +CONFIG_RTC_DRV_S3C policy<{'armhf': 'y'}> +CONFIG_RTC_DRV_PL030 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_PL031 policy<{'arm64': 'm', 'armhf': 'y'}> +CONFIG_RTC_DRV_GENERIC policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MV policy<{'armhf': 'y'}> +CONFIG_RTC_DRV_ARMADA38X policy<{'armhf': 'm'}> +CONFIG_RTC_DRV_PS3 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_RTC_DRV_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MC13XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PM8XXX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_RTC_DRV_MXC policy<{'armhf-generic': 'm'}> +CONFIG_RTC_DRV_SNVS policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_XGENE policy<{'arm64': 'y'}> +CONFIG_RTC_DRV_HID_SENSOR_TIME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_RTC_DRV_TEST flag +CONFIG_RTC_DRV_CMOS note +CONFIG_RTC_DRV_TWL4030 note + +# Menu: Device Drivers >> Real Time Clock >> Dallas/Maxim DS1685 Family +CONFIG_RTC_DRV_DS1685_FAMILY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DS1685_PROC_REGS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DS1685_SYSFS_REGS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Real Time Clock >> Dallas/Maxim DS1685 Family >> Subtype +CONFIG_RTC_DRV_DS1685 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_DS1689 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17285 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17485 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17885 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Reliability, Availability and Serviceability (RAS) features +CONFIG_RAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AMD_MCE_INJ policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Remoteproc drivers +CONFIG_OMAP_REMOTEPROC policy<{'armhf-generic': 'm'}> +CONFIG_STE_MODEM_RPROC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_WKUP_M3_RPROC policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> SCSI device support +CONFIG_RAID_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support +CONFIG_SCSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_MQ_DEFAULT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_SCSI_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_SD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CHR_DEV_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CHR_DEV_OSST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_SR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_SR_VENDOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_CHR_DEV_SG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CHR_DEV_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_ENCLOSURE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_CONSTANTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_SCAN_ASYNC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SCSI flag +CONFIG_CHR_DEV_SG note + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> OSD-Initiator library +CONFIG_SCSI_OSD_INITIATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_OSD_ULD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_OSD_DPRINT_SENSE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'i386': '1', 'powerpc': '1', 'ppc64el': '1', 's390x': '1'}> +CONFIG_SCSI_OSD_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> PCMCIA SCSI adapter support +CONFIG_SCSI_LOWLEVEL_PCMCIA policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_AHA152X policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_FDOMAIN policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_NINJA_SCSI policy<{'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_PCMCIA_QLOGIC policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PCMCIA_SYM53C500 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Device Handlers +CONFIG_SCSI_DH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_DH_RDAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_HP_SW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_EMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_ALUA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Transports +CONFIG_SCSI_SPI_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_FC_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_ISCSI_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_LIBSAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_SAS_HOST_SMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_SRP_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'y', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers +CONFIG_SCSI_LOWLEVEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ISCSI_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ISCSI_BOOT_SYSFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_CXGB3_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_CXGB4_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BNX2_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BNX2X_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BE2ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CXLFLASH policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_BLK_DEV_3W_XXXX_RAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_HPSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_3W_9XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_3W_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_7000FASST policy<{'i386': 'm'}> +CONFIG_SCSI_ACARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AHA152X policy<{'i386': 'm'}> +CONFIG_SCSI_AHA1542 policy<{'i386': 'm'}> +CONFIG_SCSI_AHA1740 policy<{'i386': 'm'}> +CONFIG_SCSI_AACRAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AIC94XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC94XX_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MVSAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MVSAS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MVSAS_TASKLET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MVUMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_DPT_I2O policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm', 's390x': 'n'}> +CONFIG_SCSI_ADVANSYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_IN2000 policy<{'i386': 'm'}> +CONFIG_SCSI_ARCMSR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_ESAS2R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEGARAID_NEWGEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MEGARAID_MM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEGARAID_MAILBOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEGARAID_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEGARAID_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MPT2SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MPT2SAS_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_SCSI_MPT2SAS_LOGGING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MPT3SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MPT3SAS_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'i386': '128', 'powerpc': '128', 'ppc64el': '128'}> +CONFIG_SCSI_MPT3SAS_LOGGING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_UFSHCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_UFSHCD_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFSHCD_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_QCOM policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_SCSI_HPTIOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BUSLOGIC policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SCSI_FLASHPOINT policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_VMWARE_PVSCSI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_XEN_SCSI_FRONTEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_HYPERV_STORAGE policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_LIBFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LIBFCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FCOE_FNIC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SCSI_SNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_SNIC_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_DMX3191D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_DTC3280 policy<{'i386': 'm'}> +CONFIG_SCSI_FUTURE_DOMAIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_GDTH policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_ISCI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SCSI_GENERIC_NCR5380 policy<{'i386': 'm'}> +CONFIG_SCSI_GENERIC_NCR5380_MMIO policy<{'i386': 'm'}> +CONFIG_SCSI_GENERIC_NCR53C400 policy<{'i386': 'y'}> +CONFIG_SCSI_IPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_IBMVSCSI policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IBMVFC policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IBMVFC_TRACE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_INITIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_INIA100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_PPA policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IMM policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IZIP_EPP16 policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_IZIP_SLOW_CTR policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_NCR53C406A policy<{'i386': 'm'}> +CONFIG_SCSI_STEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_IPR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IPR_TRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_IPR_DUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_PAS16 policy<{'i386': 'm'}> +CONFIG_SCSI_QLOGIC_FAS policy<{'i386': 'm'}> +CONFIG_SCSI_QLOGIC_1280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_QLA_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TCM_QLA2XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_QLA_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_LPFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_LPFC_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_SIM710 policy<{'i386': 'm'}> +CONFIG_SCSI_SYM53C416 policy<{'i386': 'm'}> +CONFIG_SCSI_DC395x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AM53C974 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_T128 policy<{'i386': 'm'}> +CONFIG_SCSI_ULTRASTOR policy<{'i386': 'm'}> +CONFIG_SCSI_NSP32 policy<{'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SCSI_WD719X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_DEBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_MESH policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_SCSI_MESH_SYNC_RATE policy<{'powerpc-powerpc-smp': '5'}> +CONFIG_SCSI_MESH_RESET_DELAY_MS policy<{'powerpc-powerpc-smp': '4000'}> +CONFIG_SCSI_MAC53C94 policy<{'powerpc-powerpc-smp': 'm'}> +CONFIG_ZFCP policy<{'s390x': 'm'}> +CONFIG_SCSI_PMCRAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_PM8001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BFA_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_CHELSIO_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_SCSI_IPR_TRACE note +CONFIG_SCSI_IPR_DUMP note +CONFIG_SCSI_VIRTIO note + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC79xx U320 support +CONFIG_SCSI_AIC79XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC79XX_CMDS_PER_DEVICE policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32'}> +CONFIG_AIC79XX_RESET_DELAY_MS policy<{'amd64': '5000', 'arm64': '5000', 'armhf': '5000', 'i386': '5000', 'powerpc': '5000', 'ppc64el': '5000'}> +CONFIG_AIC79XX_DEBUG_ENABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_AIC79XX_DEBUG_MASK policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_AIC79XX_REG_PRETTY_PRINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC7xxx Fast -> U160 support (New Driver) +CONFIG_SCSI_AIC7XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC7XXX_CMDS_PER_DEVICE policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> +CONFIG_AIC7XXX_RESET_DELAY_MS policy<{'amd64': '5000', 'arm64': '5000', 'armhf': '5000', 'i386': '5000', 'powerpc': '5000', 'ppc64el': '5000'}> +CONFIG_AIC7XXX_DEBUG_ENABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_AIC7XXX_DEBUG_MASK policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_AIC7XXX_REG_PRETTY_PRINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support +CONFIG_SCSI_EATA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_EATA_TAGGED_QUEUE policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_EATA_LINKED_COMMANDS policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_EATA_MAX_TAGS policy<{'amd64': '16', 'i386': '16', 'powerpc': '16', 'ppc64el': '16'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> NCR Quad 720 MCA SCSI support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> SYM53C8XX Version 2 SCSI support +CONFIG_SCSI_SYM53C8XX_2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'i386': '1', 'powerpc': '1', 'ppc64el': '1'}> +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'i386': '16', 'powerpc': '16', 'ppc64el': '16'}> +CONFIG_SCSI_SYM53C8XX_MAX_TAGS policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'i386': '64', 'powerpc': '64', 'ppc64el': '64'}> +CONFIG_SCSI_SYM53C8XX_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> UltraStor 14F/34F support +CONFIG_SCSI_U14_34F policy<{'i386': 'm'}> +CONFIG_SCSI_U14_34F_TAGGED_QUEUE policy<{'i386': 'y'}> +CONFIG_SCSI_U14_34F_LINKED_COMMANDS policy<{'i386': 'y'}> +CONFIG_SCSI_U14_34F_MAX_TAGS policy<{'i386': '8'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers +CONFIG_MTK_INFRACFG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MTK_PMIC_WRAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTK_SCPSYS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_QCOM_GSBI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_PM policy<{'armhf': 'y'}> +CONFIG_QCOM_SMD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SMD_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SMEM policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> TI SOC drivers support +CONFIG_SOC_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +# +CONFIG_SOC_TI flag + +# Menu: Device Drivers >> SPI support +CONFIG_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SPI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SPI_ALTERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_BITBANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_BUTTERFLY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_CADENCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_IMX policy<{'armhf-generic': 'm'}> +CONFIG_SPI_LM70_LLP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_FSL_SPI policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_FSL_DSPI policy<{'armhf-generic': 'm'}> +CONFIG_SPI_FSL_ESPI policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_SPI_MESON_SPIFC policy<{'armhf': 'm'}> +CONFIG_SPI_MT65XX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_OC_TINY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_OMAP24XX policy<{'armhf': 'y'}> +CONFIG_SPI_TI_QSPI policy<{'armhf': 'm'}> +CONFIG_SPI_ORION policy<{'armhf': 'm'}> +CONFIG_SPI_PL022 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_PXA2XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_RSPI policy<{'armhf': 'm'}> +CONFIG_SPI_QUP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_S3C64XX policy<{'armhf': 'm'}> +CONFIG_SPI_SC18IS602 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SH_MSIOF policy<{'armhf': 'm'}> +CONFIG_SPI_SH_HSPI policy<{'armhf': 'm'}> +CONFIG_SPI_TEGRA114 policy<{'armhf-generic': 'm'}> +CONFIG_SPI_TEGRA20_SFLASH policy<{'armhf-generic': 'm'}> +CONFIG_SPI_TEGRA20_SLINK policy<{'armhf-generic': 'm'}> +CONFIG_SPI_TOPCLIFF_PCH policy<{'i386': 'm'}> +CONFIG_SPI_XCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_XILINX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SPI_ZYNQMP_GQSPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DESIGNWARE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DW_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DW_MID_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_DW_MMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SPIDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_TLE62X0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> SPMI support +CONFIG_SPMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) +CONFIG_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_VERBOSE_ERROR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_ACPI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_SATA_ZPODD policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_SATA_PMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SATA_AHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_AHCI_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AHCI_IMX policy<{'armhf-generic': 'y'}> +CONFIG_AHCI_CEVA policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AHCI_MVEBU policy<{'armhf': 'm'}> +CONFIG_AHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_AHCI_XGENE policy<{'arm64': 'm'}> +CONFIG_SATA_FSL policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_SATA_INIC162X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_ACARD_AHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SIL24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_SATA_AHCI_PLATFORM note + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) +CONFIG_ATA_SFF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PDC_ADMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_QSTOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SX4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CMD640_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ISAPNP policy<{'i386': 'm'}> +CONFIG_PATA_MPIIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NS87410 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OPTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_PATA_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OF_PLATFORM policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_QDI policy<{'i386': 'm'}> +CONFIG_PATA_RZ1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_WINBOND_VLB policy<{'i386': 'm'}> +CONFIG_PATA_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) >> ATA BMDMA support +CONFIG_ATA_BMDMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_PIIX policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_HIGHBANK policy<{'armhf': 'm'}> +CONFIG_SATA_MV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_NV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_PROMISE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_RCAR policy<{'armhf': 'm'}> +CONFIG_SATA_SIL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SVW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'y', 'ppc64el': 'm'}> +CONFIG_SATA_ULI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_VITESSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ALI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_AMD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ARTOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ATIIXP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ATP867X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CMD64X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CS5520 policy<{'i386': 'm'}> +CONFIG_PATA_CS5530 policy<{'i386': 'm'}> +CONFIG_PATA_CS5535 policy<{'i386': 'm'}> +CONFIG_PATA_CS5536 policy<{'i386': 'm'}> +CONFIG_PATA_CYPRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_EFAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT366 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT37X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X2N policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X3_DMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PATA_IMX policy<{'armhf-generic': 'm'}> +CONFIG_PATA_IT8213 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_IT821X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_JMICRON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_MACIO policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PATA_MARVELL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NETCELL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NINJA32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NS87415 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OLDPIIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OPTIDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PDC2027X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PDC_OLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_RADISYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_RDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SC1200 policy<{'i386': 'm'}> +CONFIG_PATA_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SERVERWORKS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SIL680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SIS policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_TOSHIBA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_TRIFLEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_WINBOND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ACPI policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ATA_GENERIC policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_PATA_HPT3X3_DMA note + +# Menu: Device Drivers >> Sonics Silicon Backplane +CONFIG_SSB_PCIHOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SSB_PCMCIAHOST policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n'}> +CONFIG_SSB_SDIOHOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SSB_DRIVER_PCICORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sonics Silicon Backplane >> Sonics Silicon Backplane support +CONFIG_SSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SSB_SILENT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SSB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SSB_DRIVER_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sony MemoryStick card support +CONFIG_MEMSTICK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEMSTICK_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MEMSTICK_UNSAFE_RESUME policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MSPRO_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MS_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_TIFM_MS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_JMICRON_38X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_R592 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_REALTEK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support +CONFIG_SOUND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_SOUND note +CONFIG_SOUND_OSS_CORE_PRECLAIM mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture +CONFIG_SND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SEQUENCER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SEQ_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MIXER_OSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PCM_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SND_SEQUENCER_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SND_HRTIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SEQ_HRTIMER_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_MAX_CARDS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32'}> +CONFIG_SND_SUPPORT_OLD_API policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_VERBOSE_PROCFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_VERBOSE_PRINTK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SND_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SND_HDA_PREALLOC_SIZE policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'i386': '64', 'powerpc': '64', 'ppc64el': '64'}> +# +CONFIG_SND note +CONFIG_SND_PCM_OSS note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support +CONFIG_SND_SOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DESIGNWARE_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_SND_KIRKWOOD_SOC policy<{'armhf': 'm'}> +CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB policy<{'armhf': 'm'}> +CONFIG_SND_MFLD_MACHINE policy<{'i386': 'm'}> +CONFIG_SND_SOC_INTEL_HASWELL_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_BROADWELL_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_SOC_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT8173_MAX98090 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT8173_RT5650_RT5676 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_STORM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_APQ8016_SBC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_XTFPGA_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ZX296702_SPDIF policy<{'armhf': 'm'}> +CONFIG_ZX296702_I2S policy<{'armhf': 'm'}> +CONFIG_SND_SIMPLE_CARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Rockchip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Samsung +CONFIG_SND_SOC_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994 policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SMDK_WM8994_PCM policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SNOW policy<{'armhf': 'm'}> +CONFIG_SND_SOC_ODROIDX2 policy<{'armhf': 'm'}> +CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631 policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> CODEC drivers +CONFIG_SND_SOC_AC97_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU1701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4104 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4554 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK5386 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ALC5623 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS35L32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L51_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L52 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L56 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L73 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4265 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4270 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4271_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4271_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42XX8_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4349 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_HDMI_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES8328 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_GTM601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM1681 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM1792A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM512x_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM512x_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT5631 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SGTL5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SIRF_AUDIO_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SPDIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM2602_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM2602_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM4567 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STA32X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STA350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STI_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS2552 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS5086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS571X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TFA9879 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC23_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC23_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC31XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC3X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TS3A227E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8580 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8728 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8731 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8741 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8753 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8776 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8804_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8804_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8962 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8978 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TPA6130A2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC_HDMI_CODEC flag +CONFIG_SND_SOC_SGTL5000 flag + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC AC97 Audio for the ADI BF5xx chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs +CONFIG_SND_SOC_FSL_ASRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SPDIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_ESAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMX_AUDMUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC_FSL_SSI flag +CONFIG_SND_SOC_IMX_AUDMUX flag + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs >> SoC Audio for Freescale PowerPC CPUs +CONFIG_SND_POWERPC_SOC policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs >> SoC Audio for Freescale i.MX CPUs +CONFIG_SND_IMX_SOC policy<{'armhf-generic': 'y'}> +CONFIG_SND_SOC_EUKREA_TLV320 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_WM8962 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_ES8328 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_SGTL5000 policy<{'armhf-generic': 'y'}> +CONFIG_SND_SOC_IMX_SPDIF policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_MC13783 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_FSL_ASOC_CARD policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale MXS CPUs + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Texas Instruments chips using eDMA +CONFIG_SND_EDMA_SOC policy<{'armhf-generic': 'm'}> +CONFIG_SND_DAVINCI_SOC_MCASP policy<{'armhf': 'm'}> +CONFIG_SND_AM33XX_SOC_EVM policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Texas Instruments chips using eDMA >> DM365 codec select + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Atmel System-on-Chip +CONFIG_SND_ATMEL_SOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Intel PXA2xx chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Tegra System-on-Chip +CONFIG_SND_SOC_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_RT5640 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM8753 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM8903 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM9712 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_TRIMSLICE policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_ALC5632 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_MAX98090 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_RT5677 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Texas Instruments OMAP chips +CONFIG_SND_OMAP_SOC policy<{'armhf': 'y'}> +CONFIG_SND_OMAP_SOC_HDMI_AUDIO policy<{'armhf': 'm'}> +CONFIG_SND_OMAP_SOC_RX51 policy<{'armhf': 'm'}> +CONFIG_SND_OMAP_SOC_OMAP_TWL4030 policy<{'armhf': 'y'}> +CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040 policy<{'armhf-generic': 'm'}> +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA policy<{'armhf-generic': 'm'}> +# +CONFIG_SND_OMAP_SOC note +CONFIG_SND_OMAP_SOC_OMAP_TWL4030 note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for SuperH +CONFIG_SND_SOC_SH4_FSI policy<{'armhf': 'm'}> +CONFIG_SND_SOC_RCAR policy<{'armhf': 'm'}> +CONFIG_SND_SOC_RSRC_CARD policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for Ux500 platform + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for the Cirrus Logic EP93xx series + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC I2S Audio for the ADI Blackfin chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ARM sound devices +CONFIG_SND_ARM policy<{'armhf': 'y'}> +CONFIG_SND_ARMAACI policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Apple Onboard Audio driver +CONFIG_SND_AOA policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_FABRIC_LAYOUT policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_ONYX policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_TAS policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_TOONIE policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_SOUNDBUS policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_AOA_SOUNDBUS_I2S policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Atmel devices (AVR32 and AT91) + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices +CONFIG_SND_FIREWIRE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_DICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_OXFW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ISIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SCS1X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREWORKS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BEBOB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> GSC sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Generic sound devices +CONFIG_SND_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_PCSP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIRMIDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MTPAV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MTS64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SERIAL_U16550 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MPU401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PORTMAN2X4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AC97_POWER_SAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_AC97_POWER_SAVE_DEFAULT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio +CONFIG_SND_HDA_INTEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SND_HDA_HWDEP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_RECONFIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_INPUT_BEEP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_INPUT_BEEP_MODE policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_SND_HDA_PATCH_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_CODEC_REALTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_ANALOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_SIGMATEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_HDMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CIRRUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CONEXANT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0132 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0132_DSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_CODEC_CMEDIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_SI3054 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_POWER_SAVE_DEFAULT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +# +CONFIG_SND_HDA_RECONFIG note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ISA sound devices +CONFIG_SND_ISA policy<{'i386': 'y'}> +CONFIG_SND_ADLIB policy<{'i386': 'm'}> +CONFIG_SND_AD1816A policy<{'i386': 'm'}> +CONFIG_SND_AD1848 policy<{'i386': 'm'}> +CONFIG_SND_ALS100 policy<{'i386': 'm'}> +CONFIG_SND_AZT1605 policy<{'i386': 'm'}> +CONFIG_SND_AZT2316 policy<{'i386': 'm'}> +CONFIG_SND_AZT2320 policy<{'i386': 'm'}> +CONFIG_SND_CMI8328 policy<{'i386': 'm'}> +CONFIG_SND_CMI8330 policy<{'i386': 'm'}> +CONFIG_SND_CS4231 policy<{'i386': 'm'}> +CONFIG_SND_CS4236 policy<{'i386': 'm'}> +CONFIG_SND_ES1688 policy<{'i386': 'm'}> +CONFIG_SND_ES18XX policy<{'i386': 'm'}> +CONFIG_SND_SC6000 policy<{'i386': 'm'}> +CONFIG_SND_GUSCLASSIC policy<{'i386': 'm'}> +CONFIG_SND_GUSEXTREME policy<{'i386': 'm'}> +CONFIG_SND_GUSMAX policy<{'i386': 'm'}> +CONFIG_SND_INTERWAVE policy<{'i386': 'm'}> +CONFIG_SND_INTERWAVE_STB policy<{'i386': 'm'}> +CONFIG_SND_JAZZ16 policy<{'i386': 'm'}> +CONFIG_SND_OPL3SA2 policy<{'i386': 'm'}> +CONFIG_SND_OPTI92X_AD1848 policy<{'i386': 'm'}> +CONFIG_SND_OPTI92X_CS4231 policy<{'i386': 'm'}> +CONFIG_SND_OPTI93X policy<{'i386': 'm'}> +CONFIG_SND_MIRO policy<{'i386': 'm'}> +CONFIG_SND_SB8 policy<{'i386': 'm'}> +CONFIG_SND_SB16 policy<{'i386': 'm'}> +CONFIG_SND_SBAWE policy<{'i386': 'm'}> +CONFIG_SND_SB16_CSP policy<{'i386': 'y'}> +CONFIG_SND_SSCAPE policy<{'i386': 'm'}> +CONFIG_SND_WAVEFRONT policy<{'i386': 'm'}> +CONFIG_SND_MSND_PINNACLE policy<{'i386': 'm'}> +CONFIG_SND_MSND_CLASSIC policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> MIPS sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCI sound devices +CONFIG_SND_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_AD1889 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALS300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALS4000 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALI5451 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ASIHPI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_ATIIXP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ATIIXP_MODEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8810 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AW2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AZT3328 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BT87X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BT87X_OVERCLOCK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SND_CA0106 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CMIPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_OXYGEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS4281 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS46XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS46XX_NEW_DSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_CS5530 policy<{'i386': 'm'}> +CONFIG_SND_CS5535AUDIO policy<{'i386': 'm'}> +CONFIG_SND_CTXFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DARLA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_GINA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LAYLA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DARLA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_GINA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LAYLA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ECHO3G policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGOIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGODJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGOIOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGODJX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_EMU10K1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_EMU10K1X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ENS1370 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ENS1371 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ES1938 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ES1968 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ES1968_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_ES1968_RADIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_FM801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FM801_TEA575X_BOOL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDSP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDSPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ICE1712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ICE1724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INTEL8X0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INTEL8X0M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_KORG1212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LOLA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LX6464ES policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MAESTRO3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MAESTRO3_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_MIXART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_NM256 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PCXHR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RIPTIDE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME96 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME9652 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SIS7019 policy<{'i386': 'm'}> +CONFIG_SND_SONICVIBES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_TRIDENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIA82XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIA82XX_MODEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIRTUOSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VX222 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_YMFPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCMCIA sound devices +CONFIG_SND_PCMCIA policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_SND_VXPOCKET policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_SND_PDAUDIOCF policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PowerPC sound devices +CONFIG_SND_PPC policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_POWERMAC policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SND_POWERMAC_AUTO_DRC policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_SND_PS3 policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_SND_PS3_DEFAULT_START_DELAY policy<{'powerpc-powerpc64-smp': '2000'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SPI sound devices +CONFIG_SND_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SUPERH sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Sparc sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> USB sound devices +CONFIG_SND_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_USB_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_UA101 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_USX2Y policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_CAIAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_CAIAQ_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_USB_US122L policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SND_USB_6FIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_HIFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BCD2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_POD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_PODHD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_TONEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_VARIAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) +CONFIG_SOUND_PRIME policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> OSS sound modules + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Classic, Tahiti, Monterey + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Pinnacle, Fiji + +# Menu: Device Drivers >> Staging drivers +CONFIG_STAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SLICOSS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PRISM2_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_R8712U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_R8188EU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_88EU_AP_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_R8723AU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_8723AU_AP_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_8723AU_BT_COEXIST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RTS5208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VT6655 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VT6656 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SM750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_XGI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMXX policy<{'armhf': 'y'}> +CONFIG_FT1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FT1000_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FT1000_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_STAGING_BOARD policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_LTE_GDM724X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FWTTY_MAX_TOTAL_PORTS policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'i386': '64', 'powerpc': '64', 'ppc64el': '64'}> +CONFIG_FWTTY_MAX_CARD_PORTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32'}> +CONFIG_MTD_SPINAND_MT29F policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SPINAND_ONDIEECC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LNET_MAX_PAYLOAD policy<{'amd64': '1048576', 'arm64': '1048576', 'armhf': '1048576', 'i386': '1048576', 'powerpc': '1048576', 'ppc64el': '1048576'}> +CONFIG_LNET_SELFTEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LNET_XPRT_IB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DGNC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DGAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GS_FPGABOOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_SKEIN policy<{'amd64': 'y'}> +CONFIG_COMMON_CLK_XLNX_CLKWZRD policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_FSL_MC_BUS policy<{'arm64': 'm'}> +# +CONFIG_STAGING flag + +# Menu: Device Drivers >> Staging drivers >> Android + +# Menu: Device Drivers >> Staging drivers >> Android >> Ion Memory Manager + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) +CONFIG_COMEDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB policy<{'amd64': '2048', 'arm64': '2048', 'armhf': '2048', 'i386': '2048', 'powerpc': '2048', 'ppc64el': '2048'}> +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB policy<{'amd64': '20480', 'arm64': '20480', 'armhf': '20480', 'i386': '20480', 'powerpc': '20480', 'ppc64el': '20480'}> +CONFIG_COMEDI_8255_SA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_KCOMEDILIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi ISA and PC/104 drivers +CONFIG_COMEDI_ISA_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_COMEDI_PCL711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL726 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL730 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL812 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL816 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL818 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCM3724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_DIO200_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC236_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC263_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTI800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTI802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAC02 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS16M1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS08_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS1800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS6402 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2811 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2814 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2815 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2817 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT282X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DMM32AT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_UNIOXX5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_FL512 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AIO_AIO12_8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AIO_IIRO_16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_II_PCI20KC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_C6XDIGIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MPC624 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADQ12B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_AT_A2150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_AT_AO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_ATMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_ATMIO16D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_LABPC_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMDA12 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMUIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MULTIQ3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_S526 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCI drivers +CONFIG_COMEDI_PCI_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_8255_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1516 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1564 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_16XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_2032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_2200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3120 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI6208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI7X3X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI8164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI9111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI9118 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1710 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1723 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI_DIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_DIO200_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC236_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC263_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PCI224 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PCI230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CONTEC_PCI_DIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS08_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DYNA_PCI10XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_GSC_HPDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MF6X4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ICP_MULTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAQBOARD2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_JR3_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_KE_COUNTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDAS64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIMDAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIMDDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ME4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ME_DAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_6527 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_65XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_660X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_670X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_LABPC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_PCIDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_PCIMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTD520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_S626 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCMCIA drivers +CONFIG_COMEDI_PCMCIA_DRIVERS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_CB_DAS16_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_DAS08_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_NI_DAQ_700_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_NI_DAQ_DIO24_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_NI_LABPC_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_NI_MIO_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_COMEDI_QUATECH_DAQP_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi USB drivers +CONFIG_COMEDI_USB_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT9812 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_USB6501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUXFAST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUXSIGMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_VMK80XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi misc drivers +CONFIG_COMEDI_MISC_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_COMEDI_BOND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_SERIAL2002 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_SSV_DNP policy<{'i386': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support +CONFIG_WIMAX_GDM72XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WIMAX_GDM72XX_QOS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WIMAX_GDM72XX_K_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WIMAX_GDM72XX_WIMAX2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WIMAX_GDM72XX_USB_PM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support >> Select interface +CONFIG_WIMAX_GDM72XX_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_WIMAX_GDM72XX_SDIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers +CONFIG_IIO_PERIODIC_RTC_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SIMPLE_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SIMPLE_DUMMY_EVENTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IIO_SIMPLE_DUMMY_BUFFER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_IIO_SIMPLE_DUMMY_EVENTS note +CONFIG_IIO_SIMPLE_DUMMY_BUFFER note + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Accelerometers +CONFIG_ADIS16201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16203 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16204 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16209 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIS3L02DQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCA3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Active energy metering IC +CONFIG_ADE7753 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7754 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7758 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7759 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7854 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7854_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7854_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog digital bi-direction converters +CONFIG_ADT7316 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADT7316_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ADT7316_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog to digital converters +CONFIG_AD7606 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7606_IFACE_PARALLEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7606_IFACE_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7816 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Capacitance to digital converters +CONFIG_AD7150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7152 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD7746 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Digital gyroscope sensors +CONFIG_ADIS16060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Direct Digital Synthesis +CONFIG_AD9832 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD9834 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Light sensors +CONFIG_SENSORS_ISL29018 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ISL29028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TSL2583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TSL2x7x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Magnetometer sensors +CONFIG_SENSORS_HMC5843_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HMC5843_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Network Analyzer, Impedance Converters +CONFIG_AD5933 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Resolver to digital converters +CONFIG_AD2S90 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD2S1200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AD2S1210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Lustre file system client support +CONFIG_LUSTRE_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER policy<{'amd64': '8192', 'arm64': '8192', 'armhf': '8192', 'i386': '8192', 'powerpc': '8192', 'ppc64el': '8192'}> +CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_LUSTRE_LLITE_LLOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm'}> +# +CONFIG_LUSTRE_FS flag + +# Menu: Device Drivers >> Staging drivers >> MOST driver +CONFIG_MOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MOSTCORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIM_CDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIM_NETWORK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIM_SOUND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AIM_V4L2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDM_DIM2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDM_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HDM_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers +CONFIG_STAGING_MEDIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_I2C_BCM2048 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2099 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MN88472 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MN88473 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> Linux Infrared Remote Control IR receiver/transmitter drivers +CONFIG_LIRC_STAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LIRC_BT829 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_IMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_PARALLEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_SASEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_SERIAL_TRANSMITTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LIRC_SIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC_ZILOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> NV Tegra Embedded Controller SMBus Interface +CONFIG_MFD_NVEC policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_NVEC policy<{'armhf-generic': 'm'}> +CONFIG_SERIO_NVEC_PS2 policy<{'armhf-generic': 'm'}> +CONFIG_NVEC_POWER policy<{'armhf-generic': 'm'}> +CONFIG_NVEC_PAZ00 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support +CONFIG_PANEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PANEL_PARPORT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_PANEL_PROFILE policy<{'amd64': '5', 'arm64': '5', 'armhf': '5', 'i386': '5', 'powerpc': '5', 'ppc64el': '5'}> +CONFIG_PANEL_CHANGE_MESSAGE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) >> LCD communication mode (0=parallel 8 bits, 1=serial) + +# Menu: Device Drivers >> Staging drivers >> RDMA staging drivers +CONFIG_STAGING_RDMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_INFINIBAND_AMSO1100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_INFINIBAND_AMSO1100_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_INFINIBAND_EHCA policy<{'ppc64el': 'm'}> +CONFIG_INFINIBAND_IPATH policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> RDMA staging drivers >> Intel OPA Gen1 support +CONFIG_INFINIBAND_HFI1 policy<{'amd64': 'm'}> +CONFIG_HFI1_DEBUG_SDMA_ORDER policy<{'amd64': 'n'}> +CONFIG_HFI1_VERBS_31BIT_PSN policy<{'amd64': 'y'}> +CONFIG_SDMA_VERBOSITY policy<{'amd64': 'n'}> +CONFIG_PRESCAN_RXQ policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech >> Speakup core +CONFIG_SPEAKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_ACNTSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_ACNTPC policy<{'i386': 'm'}> +CONFIG_SPEAKUP_SYNTH_APOLLO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_AUDPTR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_BNS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DECTLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DECEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DECPC policy<{'i386': 'm'}> +CONFIG_SPEAKUP_SYNTH_DTLK policy<{'i386': 'm'}> +CONFIG_SPEAKUP_SYNTH_KEYPC policy<{'i386': 'm'}> +CONFIG_SPEAKUP_SYNTH_LTLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_SOFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_SPKOUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_TXPRT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Support for rtllib wireless devices +CONFIG_RTLLIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_CCMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_TKIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_WEP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Support for small TFT LCD display modules +CONFIG_FB_TFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_AGM1264K_FL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_BD663474 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8340BN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8347D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8353D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8357D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9163 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9325 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9340 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9481 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9486 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_PCD8544 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_RA8875 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_S6D02A1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_S6D1121 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1289 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1306 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1331 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1351 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ST7735R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_TINYLCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_TLS8204 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UC1611 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UC1701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UPD161704 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_WATTEROTT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_FLEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_FBTFT_DEVICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Unisys SPAR driver support +CONFIG_UNISYSSPAR policy<{'amd64': 'y'}> +CONFIG_UNISYS_VISORBUS policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORNIC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> WILC1000 support (WiFi only) + +# Menu: Device Drivers >> Staging drivers >> WILC1000 support (WiFi only) >> Bus Type + +# Menu: Device Drivers >> Staging drivers >> WILC1000 support (WiFi only) >> Memory Allocation + +# Menu: Device Drivers >> TI VLYNQ + +# Menu: Device Drivers >> USB support +CONFIG_USB_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_USB_LED_TRIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> ChipIdea Highspeed Dual Role Controller +CONFIG_USB_CHIPIDEA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_UDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CHIPIDEA_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CHIPIDEA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB +#CONFIG_USB_MUSB_OMAP2PLUS y +CONFIG_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ANNOUNCE_NEW_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DEFAULT_PERSIST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OTG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OTG_WHITELIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OTG_BLACKLIST_HUB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OTG_FSM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ULPI_BUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_WUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_WUSB_CBAF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_WUSB_CBAF_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_C67X00_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_OXU210HP_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISP116X_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISP1362_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FUSBH200_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FOTG210_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MAX3421_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_UHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_U132_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SL811_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SL811_HCD_ISO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SL811_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_USB_R8A66597_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RENESAS_USBHS_HCD policy<{'armhf': 'm'}> +CONFIG_USB_WHCI_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HWA_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IMX21_HCD policy<{'armhf-generic': 'm'}> +CONFIG_USB_HCD_BCMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'n', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HCD_SSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'n', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HCD_TEST_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_RENESAS_USBHS policy<{'armhf': 'm'}> +CONFIG_USB_ACM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_WDM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MDC800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MICROTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISP1760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_USS720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMI62 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMI26 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ADUTUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SEVSEG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RIO500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LEGOTOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CYPRESS_CY7C63 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CYTHERM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IDMOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FTDI_ELAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_APPLEDISPLAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SISUSBVGA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SISUSBVGA_CON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_LD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TRANCEVIBRATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IOWARRIOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EHSET_TEST_FIXTURE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISIGHTFW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_YUREX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EZUSB_FX2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HSIC_USB3503 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LINK_LAYER_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHAOSKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_USB_OTG note +CONFIG_USB_OTG_WHITELIST note +CONFIG_USB_OTG_BLACKLIST_HUB note +CONFIG_USB_OTG_FSM note> +CONFIG_USB_UHCI_HCD note flag +CONFIG_USB_HCD_BCMA note +CONFIG_USB_HCD_SSB note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support +CONFIG_USB_DWC2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC2_TRACK_MISSED_SOFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support >> DWC2 Mode Selection +CONFIG_USB_DWC2_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PERIPHERAL policy<{'armhf': 'n'}> +CONFIG_USB_DWC2_DUAL_ROLE policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support +CONFIG_USB_DWC3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DWC3_ULPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC3_OMAP policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_EXYNOS policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DWC3_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support >> DWC3 Mode Selection +CONFIG_USB_DWC3_HOST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC3_GADGET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC3_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> EHCI HCD (USB 2.0) support +CONFIG_USB_EHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_ROOT_HUB_TT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_TT_NEWSCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_XPS_USB_HCD_XILINX policy<{'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_USB_EHCI_FSL policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_USB_EHCI_MXC policy<{'armhf-generic': 'm'}> +CONFIG_USB_EHCI_HCD_OMAP policy<{'armhf': 'm'}> +CONFIG_USB_EHCI_HCD_ORION policy<{'armhf': 'y'}> +CONFIG_USB_EHCI_MSM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_EHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_USB_EHCI_HCD_PPC_OF policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_EXYNOS policy<{'armhf': 'y'}> +CONFIG_USB_EHCI_HCD_PLATFORM policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'm'}> +# +CONFIG_USB_EHCI_HCD_PLATFORM mark note flag +CONFIG_USB_EHCI_HCD note flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> ISP1760 Mode Selection +CONFIG_USB_ISP1760_HOST_ROLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ISP1760_GADGET_ROLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ISP1760_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...) +CONFIG_USB_MUSB_HDRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MUSB_TUSB6010 policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_OMAP2PLUS policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_AM35X policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_DSPS policy<{'armhf': 'm'}> +# +CONFIG_USB_MUSB_HDRC note flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...) >> Disable DMA (always use PIO) +CONFIG_USB_INVENTRA_DMA policy<{'armhf': 'n'}> +CONFIG_USB_TI_CPPI41_DMA policy<{'armhf': 'n'}> +CONFIG_MUSB_PIO_ONLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...) >> MUSB Mode Selection +CONFIG_USB_MUSB_HOST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_MUSB_GADGET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_MUSB_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> OHCI HCD (USB 1.1) support +CONFIG_USB_OHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OHCI_HCD_OMAP3 policy<{'armhf-generic': 'm'}> +CONFIG_USB_OHCI_HCD_PPC_OF_BE policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PPC_OF_LE policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OHCI_EXYNOS policy<{'armhf': 'y'}> +CONFIG_USB_OHCI_HCD_PLATFORM policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'm'}> +# +CONFIG_USB_OHCI_HCD note +CONFIG_USB_OHCI_HCD_PPC_OF_LE flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB DSL modem support +CONFIG_USB_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SPEEDTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CXACRU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_UEAGLEATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_XUSBATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Mass Storage support +CONFIG_USB_STORAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_STORAGE_REALTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REALTEK_AUTOPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_STORAGE_DATAFAB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_FREECOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ISD200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_USBAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_SDDR09 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_SDDR55 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_JUMPSHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ALAUDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ONETOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_KARMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_CYPRESS_ATACB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ENE_UB6250 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_UAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support +CONFIG_USB_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_GENERIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_SIMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_AIRCABLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_ARK3116 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_BELKIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CH341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_WHITEHEAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_DIGI_ACCELEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CP210X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CYPRESS_M8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EMPEG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_FTDI_SIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_VISOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IPAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EDGEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EDGEPORT_TI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_F81232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_GARMIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IPW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IUU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KEYSPAN_PDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KLSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KOBIL_SCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MCT_U232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_METRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MOS7720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MOS7715_PARPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_MOS7840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MXUPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_NAVMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_PL2303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OTI6858 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QCAUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QUALCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SPCP8X5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SAFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SAFE_PADDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_SERIAL_SIERRAWIRELESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SYMBOL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_TI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CYBERJACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_XIRCOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OPTION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OMNINET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OPTICON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_XSENS_MT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_WISHBONE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SSU100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QT2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_DEBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_USB_SERIAL_DEBUG note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support >> USB Keyspan USA-xxx Serial Driver +CONFIG_USB_SERIAL_KEYSPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KEYSPAN_MPR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA28 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA28X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA28XA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA28XB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA19 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA18X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA19W policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA19QW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA19QI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA49W policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB/IP support +CONFIG_USBIP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_VHCI_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_HOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> xHCI HCD (USB 3.0) support +CONFIG_USB_XHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_XHCI_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_XHCI_MVEBU policy<{'armhf': 'm'}> +CONFIG_USB_XHCI_RCAR policy<{'armhf': 'm'}> +# +CONFIG_USB_XHCI_HCD note flag + +# Menu: Device Drivers >> USB support >> USB Gadget Support +CONFIG_USB_GADGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_DEBUG_FILES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_VBUS_DRAW policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'i386': '2', 'powerpc': '2', 'ppc64el': '2'}> +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'i386': '2', 'powerpc': '2', 'ppc64el': '2'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers +CONFIG_USB_ZERO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GADGET_UAC1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ETH_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ETH_EEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_G_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGETFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MASS_STORAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MIDI_GADGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CDC_COMPOSITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_NOKIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_ACM_MS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_MULTI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'm', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_G_MULTI_RNDIS policy<{'armhf': 'y'}> +CONFIG_USB_G_MULTI_CDC policy<{'armhf': 'y'}> +CONFIG_USB_G_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_DBGP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_WEBCAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> EHCI Debug Device mode +CONFIG_USB_G_DBGP_PRINTK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_G_DBGP_SERIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> Function Filesystem +CONFIG_USB_FUNCTIONFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FUNCTIONFS_ETH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_FUNCTIONFS_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_FUNCTIONFS_GENERIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs +CONFIG_USB_CONFIGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CONFIGFS_SERIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ACM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_OBEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_NCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ECM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ECM_SUBSET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_EEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_PHONET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_MASS_STORAGE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_LB_SS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UAC1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UAC2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_MIDI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_HID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UVC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_PRINTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller +CONFIG_USB_FSL_USB2 policy<{'armhf-generic': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_USB_FUSB300 policy<{'armhf-generic': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_USB_FOTG210_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GR_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_R8A66597 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RENESAS_USBHS_UDC policy<{'armhf': 'm'}> +CONFIG_USB_PXA27X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MV_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MV_U3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_M66592 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_BDC_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_BDC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AMD5536UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FSL_QE policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_USB_NET2272 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET2272_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_NET2280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GOKU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EG20T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_XILINX policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DUMMY_HCD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_USB_M66592 note +CONFIG_USB_DUMMY_HCD flag + +# Menu: Device Drivers >> USB support >> USB Physical Layer drivers +CONFIG_NOP_USB_XCEIV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_AM335X_PHY_USB policy<{'armhf': 'm'}> +CONFIG_TWL6030_USB policy<{'armhf': 'm'}> +CONFIG_USB_GPIO_VBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TAHVO_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TAHVO_USB_HOST_BY_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ISP1301 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MSM_OTG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_QCOM_8X16_PHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_MXS_PHY policy<{'armhf-generic': 'y'}> +CONFIG_USB_RCAR_PHY policy<{'armhf': 'm'}> +CONFIG_USB_ULPI policy<{'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_NOP_USB_XCEIV note + +# Menu: Device Drivers >> Ultra Wideband devices +CONFIG_UWB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UWB_HWA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UWB_WHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UWB_I1480U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Userspace I/O drivers +CONFIG_UIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_CIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_PDRV_GENIRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_DMEM_GENIRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_AEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_SERCOS3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_PCI_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_NETX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_FSL_ELBC_GPCM policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_UIO_PRUSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UIO_MF624 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework +CONFIG_VFIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_VFIO_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_VFIO_PCI_VGA policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_VFIO_PLATFORM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_AMBA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> VME bridge support +CONFIG_VME_BUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VME_CA91CX42 policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_VME_TSI148 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VMIVME_7805 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VME_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VME_PIO2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Virtio drivers +CONFIG_VIRTIO_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_PCI_LEGACY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_BALLOON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_INPUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIRTIO_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_VIRTIO_PCI mark + +# Menu: Device Drivers >> Virtualization drivers +CONFIG_VIRT_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FSL_HV_MANAGER policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> + +# Menu: Device Drivers >> Voltage and Current Regulator Support +CONFIG_REGULATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_REGULATOR_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_REGULATOR_FIXED_VOLTAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_VIRTUAL_CONSUMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_USERSPACE_CONSUMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_88PM800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_88PM8607 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ACT8865 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AD5398 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ANATOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AAT2870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AB3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ARIZONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AS3711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AS3722 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AXP20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BCM590XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9062 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_FAN53555 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_HI6421 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ISL9305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ISL6271A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP3971 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP3972 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP872X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP8755 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LTC3589 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX1586 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8649 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8660 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8952 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8973 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77802 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MC13892 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PBIAS policy<{'armhf': 'm'}> +CONFIG_REGULATOR_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PFUZE100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_QCOM_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_QCOM_SMD_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_QCOM_SPMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RC5T583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RN5T618 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S2MPA01 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S2MPS11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S5M8767 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TI_ABB policy<{'armhf': 'y'}> +CONFIG_REGULATOR_TPS51632 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6105X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS62360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65023 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65217 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65218 policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6524X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6586X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65912 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS80031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_VEXPRESS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +# +CONFIG_REGULATOR_FIXED_VOLTAGE note +CONFIG_REGULATOR_TWL4030 mark note + +# Menu: Device Drivers >> Watchdog Timer Support +CONFIG_WATCHDOG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_NOWAYOUT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SOFT_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DA9052_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DA9055_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DA9063_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DA9062_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MENF21BMC_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WM831X_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WM8350_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_XILINX_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ARM_SP805_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CADENCE_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_S3C2410_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_DW_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMAP_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_ORION_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_RN5T618_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TWL4030_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAX63XX_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IMX2_WDT policy<{'armhf-generic': 'm'}> +CONFIG_RETU_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TEGRA_WATCHDOG policy<{'armhf-generic': 'm'}> +CONFIG_QCOM_WDT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MESON_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_MEDIATEK_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ACQUIRE_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ADVANTECH_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ALIM1535_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ALIM7101_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_F71808E_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SP5100_TCO policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SBC_FITPC2_WATCHDOG policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EUROTECH_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IB700_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IBMASR policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_WAFER_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_I6300ESB_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IE6XX_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_SCU_WATCHDOG policy<{'i386': 'y'}> +CONFIG_INTEL_MID_WATCHDOG policy<{'i386': 'm'}> +CONFIG_ITCO_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ITCO_VENDOR_SUPPORT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IT8712F_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IT87_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HP_WATCHDOG policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_KEMPLD_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_HPWDT_NMI_DECODING policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_SC1200_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SCx200_WDT policy<{'i386': 'm'}> +CONFIG_PC87413_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NV_TCO policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_60XX_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SBC8360_WDT policy<{'i386': 'm'}> +CONFIG_SBC7240_WDT policy<{'i386': 'm'}> +CONFIG_CPU5_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SMSC_SCH311X_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SMSC37B787_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_VIA_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_W83627HF_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_W83877F_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_W83977F_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MACHZ_WDT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SBC_EPX_C3_WATCHDOG policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_BOOKE_WDT policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT policy<{'powerpc-powerpc64-emb': '38', 'powerpc-powerpc-e500mc': '38'}> +CONFIG_MEN_A21_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WATCHDOG_RTAS policy<{'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'm'}> +CONFIG_DIAG288_WATCHDOG policy<{'s390x': 'm'}> +CONFIG_XEN_WDT policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_PCWATCHDOG policy<{'i386': 'm'}> +CONFIG_MIXCOMWD policy<{'i386': 'm'}> +CONFIG_WDT policy<{'i386': 'm'}> +CONFIG_PCIPCWATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_WDTPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_USBPCWATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers +CONFIG_X86_PLATFORM_DEVICES policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACER_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACERHDF policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ALIENWARE_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ASUS_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DELL_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DELL_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DELL_WMI_AIO policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DELL_SMO8800 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DELL_RBTN policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FUJITSU_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_FUJITSU_LAPTOP_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_FUJITSU_TABLET policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_AMILO_RFKILL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TC1100_WMI policy<{'i386': 'm'}> +CONFIG_HP_ACCEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HP_WIRELESS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_HP_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MSI_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PANASONIC_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_COMPAL_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SONY_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SONYPI_COMPAT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IDEAPAD_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SENSORS_HDAPS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_MENLOW policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EEEPC_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ASUS_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ASUS_NB_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_EEEPC_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TOPSTAR_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TOSHIBA_BT_RFKILL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_TOSHIBA_HAPS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_CMPC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_MFLD_THERMAL policy<{'i386': 'm'}> +CONFIG_INTEL_IPS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IBM_RTL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SAMSUNG_LAPTOP policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_OAKTRAIL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SAMSUNG_Q10 policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_APPLE_GMUX policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_RST policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_SMARTCONNECT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_PVPANIC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_INTEL_PMC_IPC policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_SURFACE_PRO3_BUTTON policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> Intel SCU IPC Support +CONFIG_INTEL_SCU_IPC policy<{'i386': 'y'}> +CONFIG_INTEL_SCU_IPC_UTIL policy<{'i386': 'm'}> +CONFIG_GPIO_INTEL_PMIC policy<{'i386': 'y'}> +CONFIG_INTEL_MID_POWER_BUTTON policy<{'i386': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> ThinkPad ACPI Laptop Extras +CONFIG_THINKPAD_ACPI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_THINKPAD_ACPI_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_THINKPAD_ACPI_UNSAFE_LEDS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_THINKPAD_ACPI_VIDEO policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_THINKPAD_ACPI_HOTKEY_POLL policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> WMI +CONFIG_ACPI_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MSI_WMI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_TOSHIBA policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_MXM_WMI policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Device Drivers >> Xen driver support +CONFIG_XEN_DEV_EVTCHN policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_XEN_BACKEND policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XENFS policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_XEN_COMPAT_XENFS policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XEN_SYS_HYPERVISOR policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XEN_GNTDEV policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_XEN_GRANT_DEV_ALLOC policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_XEN_PCIDEV_BACKEND policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_XEN_SCSI_BACKEND policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_XEN_ACPI_PROCESSOR policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_XEN_MCE_LOG policy<{'amd64': 'y'}> +CONFIG_XEN_SYMS policy<{'amd64': 'y', 'i386': 'y'}> +# +CONFIG_XEN_ACPI_PROCESSOR mark + +# Menu: Device Drivers >> Xen driver support >> Xen memory balloon driver +CONFIG_XEN_BALLOON policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_XEN_SELFBALLOONING policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT policy<{'amd64': '512', 'i386': '4'}> +CONFIG_XEN_SCRUB_PAGES policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> + +# Menu: Dump support +# + +# Menu: Dump support >> Architecture: s390 + +# Menu: Enable loadable module support +CONFIG_MODULES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_FORCE_LOAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_UNLOAD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_FORCE_UNLOAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODVERSIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_SRCVERSION_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Enable loadable module support >> Compression algorithm + +# Menu: Enable loadable module support >> Module signature verification +CONFIG_MODULE_SIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_SIG_FORCE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Enable loadable module support >> Module signature verification >> Which hash algorithm should modules be signed with? +CONFIG_MODULE_SIG_SHA1 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA224 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA256 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA384 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA512 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Enable the block layer +CONFIG_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LBDAF policy<{'armhf': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_BLK_DEV_BSG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_BSGLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_INTEGRITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_THROTTLING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_CMDLINE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_BLK_DEV_THROTTLING note + +# Menu: Enable the block layer >> IO Schedulers +CONFIG_IOSCHED_DEADLINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IOSCHED_CFQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CFQ_GROUP_IOSCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Enable the block layer >> IO Schedulers >> Default I/O scheduler +CONFIG_DEFAULT_DEADLINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_CFQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_NOOP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Enable the block layer >> Partition Types + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection +CONFIG_PARTITION_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AIX_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_OSF_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AMIGA_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATARI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IBM_PARTITION policy<{'s390x': 'y'}> +CONFIG_MAC_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LDM_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LDM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SGI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ULTRIX_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SUN_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KARMA_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EFI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSV68_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CMDLINE_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +# +CONFIG_PARTITION_ADVANCED flag + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> Acorn partition support +CONFIG_ACORN_PARTITION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> PC BIOS (MSDOS partition tables) support +CONFIG_MSDOS_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BSD_DISKLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MINIX_SUBPARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SOLARIS_X86_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_UNIXWARE_DISKLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Endianness selection +CONFIG_CPU_BIG_ENDIAN policy<{'arm64': 'n', 'armhf': 'n', 'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Endianness selection >> Architecture: powerpc +CONFIG_CPU_LITTLE_ENDIAN policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> + +# Menu: Executable file formats / Emulations +CONFIG_BINFMT_ELF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BINFMT_SCRIPT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BINFMT_AOUT policy<{'i386': 'm'}> +CONFIG_BINFMT_MISC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_COREDUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECCOMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_BINFMT_SCRIPT mark note +CONFIG_SECCOMP mark + +# Menu: Executable file formats / Emulations >> Architecture: arm + +# Menu: Executable file formats / Emulations >> Architecture: s390 + +# Menu: Executable file formats / Emulations >> Architecture: x86 +CONFIG_IA32_EMULATION policy<{'amd64': 'y'}> +CONFIG_IA32_AOUT policy<{'amd64': 'n'}> +CONFIG_X86_X32 policy<{'amd64': 'y'}> +# +CONFIG_IA32_AOUT note mark + +# Menu: File systems +CONFIG_EXT2_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_EXT3_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_JBD2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_GFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GFS2_FS_LOCKING_DLM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NILFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FS_DAX policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FILE_LOCKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DNOTIFY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INOTIFY_USER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FANOTIFY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FANOTIFY_ACCESS_PERMISSIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_QUOTA_NETLINK_INTERFACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUTOFS4_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_FUSE_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OVERLAY_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OVERLAY_FS_V1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_EXT2_FS note +CONFIG_EXT3_FS note +CONFIG_FUSE_FS note flag + +# Menu: File systems >> Btrfs filesystem support +CONFIG_BTRFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BTRFS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BTRFS_FS_CHECK_INTEGRITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_FS_RUN_SANITY_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_ASSERT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> CD-ROM/DVD Filesystems +CONFIG_ISO9660_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_JOLIET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZISOFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UDF_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: File systems >> Caches +CONFIG_CACHEFILES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CACHEFILES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CACHEFILES_HISTOGRAM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Caches >> General filesystem local caching manager +CONFIG_FSCACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FSCACHE_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FSCACHE_HISTOGRAM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FSCACHE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FSCACHE_OBJECT_LIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> DOS/FAT/NT Filesystems +CONFIG_MSDOS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VFAT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FAT_DEFAULT_CODEPAGE policy<{'amd64': '437', 'arm64': '437', 'armhf': '437', 'i386': '437', 'powerpc': '437', 'ppc64el': '437', 's390x': '437'}> +CONFIG_FAT_DEFAULT_IOCHARSET policy<{'amd64': '"iso8859-1"', 'arm64': '"iso8859-1"', 'armhf': '"iso8859-1"', 'i386': '"iso8859-1"', 'powerpc': '"iso8859-1"', 'ppc64el': '"iso8859-1"', 's390x': '"iso8859-1"'}> +CONFIG_NTFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NTFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NTFS_RW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +# +CONFIG_VFAT_FS mark note + +# Menu: File systems >> Distributed Lock Manager (DLM) +CONFIG_DLM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DLM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> F2FS filesystem support +CONFIG_F2FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_F2FS_STAT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_CHECK_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_F2FS_IO_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> F2FS filesystem support >> F2FS extended attributes +CONFIG_F2FS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_ENCRYPTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> JFS filesystem support +CONFIG_JFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_JFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFS_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems +CONFIG_MISC_FILESYSTEMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ADFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ADFS_FS_RW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_AFFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ECRYPT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ECRYPT_FS_MESSAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HFSPLUS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HFSPLUS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BEFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BEFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_BFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UBIFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_UBIFS_FS_ADVANCED_COMPR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_UBIFS_FS_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_UBIFS_FS_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRAMFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_VXFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MINIX_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HPFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX4FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX6FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX6FS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ROMFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SYSV_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UFS_FS_WRITE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_UFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EXOFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EXOFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_ECRYPT_FS mark note +CONFIG_LOGFS note + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support +CONFIG_AUFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AUFS_HNOTIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_EXPORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_XATTR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_FHSM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_RDU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_SHWH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BR_RAMFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BR_FUSE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BR_HFSPLUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_AUFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support >> Maximum number of branches +CONFIG_AUFS_BRANCH_MAX_127 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUFS_BRANCH_MAX_511 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BRANCH_MAX_1023 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BRANCH_MAX_32767 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support >> method + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support +CONFIG_JFFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_JFFS2_FS_DEBUG policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_JFFS2_FS_WRITEBUFFER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_WBUF_VERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_SUMMARY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 +CONFIG_JFFS2_COMPRESSION_OPTIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_RTIME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_RUBIN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 >> JFFS2 default compression mode +CONFIG_JFFS2_CMODE_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_PRIORITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_FAVOURLZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> Persistent store support +CONFIG_PSTORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PSTORE_CONSOLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_PMSG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_FTRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_RAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: File systems >> Miscellaneous filesystems >> RomFS backing stores +CONFIG_ROMFS_BACKED_BY_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ROMFS_BACKED_BY_MTD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ROMFS_BACKED_BY_BOTH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support +CONFIG_SQUASHFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SQUASHFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_LZ4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_XZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_4K_DEVBLK_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_EMBEDDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE policy<{'amd64': '3', 'arm64': '3', 'armhf': '3', 'i386': '3', 'powerpc': '3', 'ppc64el': '3', 's390x': '3'}> +# +CONFIG_SQUASHFS_4K_DEVBLK_SIZE note + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> Decompressor parallelisation options +CONFIG_SQUASHFS_DECOMP_SINGLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_DECOMP_MULTI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> File decompression options +CONFIG_SQUASHFS_FILE_CACHE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_FILE_DIRECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Native language support +CONFIG_NLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NLS_DEFAULT policy<{'amd64': '"utf8"', 'arm64': '"utf8"', 'armhf': '"utf8"', 'i386': '"utf8"', 'powerpc': '"utf8"', 'ppc64el': '"utf8"', 's390x': '"utf8"'}> +CONFIG_NLS_CODEPAGE_437 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NLS_CODEPAGE_737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_850 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_852 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_855 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_857 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_861 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_862 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_863 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_864 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_865 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_866 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_869 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_936 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_950 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_932 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_949 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_874 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_1250 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_1251 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ASCII policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_7 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_13 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_14 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_15 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_KOI8_R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_KOI8_U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ROMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CELTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CENTEURO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CROATIAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CYRILLIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_GAELIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_GREEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ICELAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_INUIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ROMANIAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_TURKISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_UTF8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_NLS note + +# Menu: File systems >> Network File Systems +CONFIG_NETWORK_FILESYSTEMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFSD_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_V3_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RPCSEC_GSS_KRB5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SUNRPC_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SUNRPC_XPRT_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CEPH_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CODA_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> CIFS support (advanced network filesystem, SMBFS successor) +CONFIG_CIFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CIFS_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_STATS2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_WEAK_PW_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_UPCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_POSIX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_DEBUG2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_DFS_UPCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_SMB2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_SMB311 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> NCP file system support (to mount NetWare volumes) +CONFIG_NCP_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NCPFS_PACKET_SIGNING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_IOCTL_LOCKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_STRONG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_NFS_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_OS2_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_SMALLDOS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NCPFS_NLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NCPFS_EXTRAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Network File Systems >> NFS client support +CONFIG_NFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V3_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_SWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_USE_LEGACY_DNS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Network File Systems >> NFS client support >> NFS client support for NFSv4.1 +CONFIG_NFS_V4_1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4_2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN policy<{'amd64': '"kernel.org"', 'arm64': '"kernel.org"', 'armhf': '"kernel.org"', 'i386': '"kernel.org"', 'powerpc': '"kernel.org"', 'ppc64el': '"kernel.org"', 's390x': '"kernel.org"'}> +CONFIG_NFS_V4_1_MIGRATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> NFS server support for NFS version 4 +CONFIG_NFSD_V4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_PNFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_V4_SECURITY_LABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Network File Systems >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_9P_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_9P_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_9P_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_9P_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> OCFS2 file system support +CONFIG_OCFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_O2CB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_USERSPACE_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OCFS2_DEBUG_MASKLOG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OCFS2_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Pseudo filesystems +CONFIG_PROC_CHILDREN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HUGETLBFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CONFIGFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_EFIVAR_FS policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +# +CONFIG_CONFIGFS_FS flag +CONFIG_EFIVAR_FS note +CONFIG_TMPFS_POSIX_ACL mark note + +# Menu: File systems >> Pseudo filesystems >> /proc file system support +CONFIG_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_KCORE policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_VMCORE policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_SYSCTL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_PAGE_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Quota support +CONFIG_QUOTA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PRINT_QUOTA_WARNING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_QUOTA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_QFMT_V1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_QFMT_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: File systems >> Reiserfs support +CONFIG_REISERFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_REISERFS_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_REISERFS_PROC_INFO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_REISERFS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_REISERFS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_REISERFS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> The Extended 4 (ext4) filesystem +CONFIG_EXT4_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_USE_FOR_EXT2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_ENCRYPTION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_EXT4_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> XFS filesystem support +CONFIG_XFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFS_QUOTA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_RT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_WARN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Firmware Drivers +CONFIG_EDD policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EDD_OFF policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FIRMWARE_MEMMAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DELL_RBU policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DCDBAS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DMIID policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_DMI_SYSFS policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ISCSI_IBFT_FIND policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ISCSI_IBFT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_GOOGLE_FIRMWARE policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Firmware Drivers >> EFI (Extensible Firmware Interface) Support +CONFIG_EFI_VARS policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_VARS_PSTORE policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_EFI_RUNTIME_MAP policy<{'amd64': 'y', 'i386': 'y'}> +# +CONFIG_EFI_VARS mark note + +# Menu: Firmware Drivers >> Google Firmware Drivers + +# Menu: Floating point emulation >> Architecture: arm +CONFIG_VFP policy<{'armhf': 'y'}> +CONFIG_NEON policy<{'armhf': 'y'}> +CONFIG_KERNEL_MODE_NEON policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: General setup +CONFIG_CROSS_COMPILE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_COMPILE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCALVERSION policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_LOCALVERSION_AUTO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_HOSTNAME policy<{'amd64': '"(none)"', 'arm64': '"(none)"', 'armhf': '"(none)"', 'i386': '"(none)"', 'powerpc': '"(none)"', 'ppc64el': '"(none)"', 's390x': '"(none)"'}> +CONFIG_VERSION_SIGNATURE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_SWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSVIPC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_POSIX_MQUEUE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CROSS_MEMORY_ATTACH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FHANDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USELIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUDIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUDITSYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IKCONFIG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOG_BUF_SHIFT policy<{'amd64': '18', 'arm64': '14', 'armhf': '17', 'i386': '17', 'powerpc': '17', 'ppc64el': '17', 's390x': '17'}> +CONFIG_LOG_CPU_MAX_BUF_SHIFT policy<{'amd64': '12', 'arm64': '12', 'armhf': '12', 'i386': '12', 'powerpc': '12', 'ppc64el': '12', 's390x': '12'}> +CONFIG_NUMA_BALANCING policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CHECKPOINT_RESTORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCHED_AUTOGROUP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS_DEPRECATED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RELAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CC_OPTIMIZE_FOR_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BPF_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USERFAULTFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EMBEDDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_COMPAT_BRK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB_CPU_PARTIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROFILING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OPROFILE policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPROFILE_EVENT_MULTIPLEX policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_KPROBES policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_JUMP_LABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STATIC_KEYS_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_FHANDLE mark note +CONFIG_SYSFS_DEPRECATED mark note +CONFIG_COMPAT_BRK mark note +CONFIG_LOCALVERSION_AUTO mark note +CONFIG_JUMP_LABEL flag + +# Menu: General setup >> CPU/Task time and stats accounting +CONFIG_BSD_PROCESS_ACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BSD_PROCESS_ACCT_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASKSTATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_DELAY_ACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_XACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_IO_ACCOUNTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> CPU/Task time and stats accounting >> Cputime accounting +CONFIG_TICK_CPU_ACCOUNTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_GEN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_IRQ_TIME_ACCOUNTING policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n'}> + +# Menu: General setup >> Choose SLAB allocator +CONFIG_SLAB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLOB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> Configure standard kernel features (expert users) +CONFIG_EXPERT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UID16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_MULTIUSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SGETMASK_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSCTL_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KALLSYMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KALLSYMS_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PRINTK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ELF_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCSPKR_PLATFORM policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_BASE_FULL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUTEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EPOLL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SIGNALFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIMERFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVENTFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SHMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ADVISE_SYSCALLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_QUIRKS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MEMBARRIER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VM_EVENT_COUNTERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLUB_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> Control Group support +CONFIG_CGROUPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CGROUP_FREEZER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_PIDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CPUSETS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_PID_CPUSET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_CPUACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMCG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMCG_SWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMCG_SWAP_ENABLED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MEMCG_KMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_HUGETLB policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_PERF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_CGROUP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_BLK_CGROUP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_DEBUG_BLK_CGROUP mark + +# Menu: General setup >> Control Group support >> Group CPU scheduler +CONFIG_CGROUP_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FAIR_GROUP_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CFS_BANDWIDTH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RT_GROUP_SCHED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_RT_GROUP_SCHED note + +# Menu: General setup >> GCOV-based kernel profiling +CONFIG_GCOV_KERNEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> GCOV-based kernel profiling >> Specify GCOV format + +# Menu: General setup >> IRQ subsystem +CONFIG_IRQ_DOMAIN_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_IRQ_FORCED_THREADING_DEFAULT policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'i386-generic': 'n', 'i386-lowlatency': 'y', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SPARSE_IRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support +CONFIG_BLK_DEV_INITRD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INITRAMFS_SOURCE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'i386': '""', 'powerpc': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_RD_GZIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_BZIP2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_XZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZ4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> Kernel Performance Events And Counters +CONFIG_PERF_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_PERF_USE_VMALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'n'}> + +# Menu: General setup >> Kernel compression mode +CONFIG_KERNEL_GZIP policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 's390x': 'n'}> +CONFIG_KERNEL_BZIP2 policy<{'amd64': 'n', 'i386': 'n', 's390x': 'n'}> +CONFIG_KERNEL_LZMA policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'n'}> +CONFIG_KERNEL_XZ policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'y'}> +CONFIG_KERNEL_LZO policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'n'}> +CONFIG_KERNEL_LZ4 policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'n'}> +# +CONFIG_KERNEL_GZIP flag note + +# Menu: General setup >> Namespaces support +CONFIG_NAMESPACES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UTS_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPC_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USER_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PID_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> RCU Subsystem +# XXX +# +CONFIG_CONTEXT_TRACKING_FORCE note + +# Menu: General setup >> RCU Subsystem >> Make expert-level adjustments to RCU configuration +CONFIG_RCU_NOCB_CPU policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RCU_EXPERT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_RCU_EXPERT flag + +# Menu: General setup >> RCU Subsystem >> Make expert-level adjustments to RCU configuration >> Build-forced no-CBs CPUs +CONFIG_RCU_NOCB_CPU_NONE policy<{'amd64': 'n', 'powerpc-powerpc64-smp': 'n'}> +CONFIG_RCU_NOCB_CPU_ZERO policy<{'amd64': 'n', 'powerpc-powerpc64-smp': 'n'}> +CONFIG_RCU_NOCB_CPU_ALL policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y'}> + +# Menu: General setup >> Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n'}> +CONFIG_CC_STACKPROTECTOR_REGULAR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n'}> +CONFIG_CC_STACKPROTECTOR_STRONG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +# +CONFIG_CC_STACKPROTECTOR_STRONG mark + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: arm + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: powerpc + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: s390 + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: x86 + +# Menu: General setup >> Timers subsystem +CONFIG_NO_HZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HIGH_RES_TIMERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> Timers subsystem >> Timer tick handling +CONFIG_HZ_PERIODIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NO_HZ_IDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NO_HZ_FULL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +# +CONFIG_NO_HZ_IDLE note + +# Menu: Kernel hacking +CONFIG_MAGIC_SYSRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PANIC_ON_OOPS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PANIC_TIMEOUT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_DEBUG_TIMEKEEPING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_STACKTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROVIDE_OHCI1394_DMA_INIT policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DMA_API_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LKM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_USER_COPY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_FIRMWARE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_UDELAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MEMTEST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TEST_STATIC_KEYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STRICT_DEVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EARLY_PRINTK policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEBUG_RODATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DEBUG_SET_MODULE_RONX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 's390x': 'y'}> +# +CONFIG_PANIC_ON_OOPS note +CONFIG_STRICT_DEVMEM mark +CONFIG_DEBUG_RODATA mark +CONFIG_DEBUG_SET_MODULE_RONX mark + +# Menu: Kernel hacking >> Architecture: arm +CONFIG_ARM_PTDUMP policy<{'armhf': 'n'}> +CONFIG_ARM_UNWIND policy<{'armhf': 'y'}> +CONFIG_DEBUG_USER policy<{'armhf': 'n'}> +CONFIG_DEBUG_LL policy<{'armhf': 'n'}> +CONFIG_DEBUG_IMX_UART_PORT policy<{'armhf-generic': '1'}> +CONFIG_DEBUG_VF_UART_PORT policy<{'armhf-generic': '1'}> +CONFIG_ARM_KPROBES_TEST policy<{'armhf': 'm'}> +CONFIG_PID_IN_CONTEXTIDR policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Kernel hacking >> Architecture: powerpc +CONFIG_PPC_DISABLE_WERROR policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_STRICT_MM_TYPECHECKS policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PRINT_STACK_DEPTH policy<{'powerpc': '64', 'ppc64el': '64'}> +CONFIG_HCALL_STATS policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EMULATED_STATS policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CODE_PATCHING_SELFTEST policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FTR_FIXUP_SELFTEST policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MSI_BITMAP_SELFTEST policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_XMON_DEFAULT policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON_DISASSEMBLY policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BDI_SWITCH policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_BOOTX_TEXT policy<{'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EARLY_DEBUG policy<{'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_PPC_DISABLE_WERROR flag + +# Menu: Kernel hacking >> Architecture: s390 +CONFIG_S390_PTDUMP policy<{'s390x': 'y'}> + +# Menu: Kernel hacking >> Architecture: x86 +CONFIG_X86_VERBOSE_BOOTUP policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_EARLY_PRINTK_DBGP policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EARLY_PRINTK_EFI policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_PTDUMP policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_RODATA_TEST policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_NX_TEST policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DOUBLEFAULT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DEBUG_TLBFLUSH policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_IOMMU_DEBUG policy<{'amd64': 'n'}> +CONFIG_IOMMU_STRESS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_DECODER_SELFTEST policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_BOOT_PARAMS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_CPA_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_OPTIMIZE_INLINING policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DEBUG_ENTRY policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_NMI_SELFTEST policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_DEBUG_STATIC_CPU_HAS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_DEBUG_FPU policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_PUNIT_ATOM_DEBUG policy<{'amd64': 'm', 'i386': 'm'}> +# +CONFIG_DEBUG_NX_TEST flag +CONFIG_X86_DECODER_SELFTEST flag +CONFIG_X86_DEBUG_FPU flag +CONFIG_PUNIT_ATOM_DEBUG flag + +# Menu: Kernel hacking >> Compile-time checks and compiler options +CONFIG_ENABLE_WARN_DEPRECATED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ENABLE_MUST_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FRAME_WARN policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'i386': '1024', 'powerpc': '1024', 'ppc64el': '2048', 's390x': '1024'}> +CONFIG_STRIP_ASM_SYMS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_READABLE_ASM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_UNUSED_SYMBOLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PAGE_OWNER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HEADERS_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SECTION_MISMATCH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FRAME_POINTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DEBUG_FORCE_WEAK_PER_CPU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# + +# Menu: Kernel hacking >> Compile-time checks and compiler options >> Compile the kernel with debug info +CONFIG_DEBUG_INFO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_INFO_REDUCED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_INFO_SPLIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_INFO_DWARF4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GDB_SCRIPTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_DEBUG_INFO mark note +CONFIG_DEBUG_INFO_SPLIT note + +# Menu: Kernel hacking >> CoreSight Tracing Support +CONFIG_CORESIGHT policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Kernel hacking >> CoreSight Tracing Support >> CoreSight Link and Sink drivers + +# Menu: Kernel hacking >> Debug Lockups and Hangs +CONFIG_LOCKUP_DETECTOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC policy<{'amd64': 'n', 'i386': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_DETECT_HUNG_TASK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT policy<{'amd64': '120', 'arm64': '120', 'armhf': '120', 'i386': '120', 'powerpc': '120', 'ppc64el': '120', 's390x': '120'}> +CONFIG_BOOTPARAM_HUNG_TASK_PANIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Early debugging console >> Architecture: powerpc + +# Menu: Kernel hacking >> IO delay type >> Architecture: x86 +CONFIG_IO_DELAY_0X80 policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_IO_DELAY_0XED policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IO_DELAY_UDELAY policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_IO_DELAY_NONE policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Kernel hacking >> Kernel debugging +CONFIG_DEBUG_KERNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_SHIRQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCHED_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCHEDSTATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCHED_STACK_END_CHECK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIMER_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_PREEMPT policy<{'amd64-lowlatency': 'n', 'i386-lowlatency': 'n'}> +CONFIG_DEBUG_KOBJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_BUGVERBOSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_LIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_PI_LIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_NOTIFIERS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_CREDENTIALS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_BLOCK_EXT_DEVT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LATENCYTOP policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_STRICT_USER_COPY_CHECKS policy<{'amd64': 'n', 'i386': 'n', 's390x': 'n'}> +# +CONFIG_LATENCYTOP note + +# Menu: Kernel hacking >> Kernel debugging >> Fault-injection framework +CONFIG_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel debugging >> KGDB: kernel debugger +CONFIG_KGDB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KGDB_SERIAL_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KGDB_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_KGDB_LOW_LEVEL_TRAP policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KGDB_KDB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KDB_KEYBOARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_KDB_CONTINUE_CATASTROPHIC policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +# +CONFIG_KGDB flag +CONFIG_KGDB_SERIAL_CONSOLE note + +# Menu: Kernel hacking >> Kernel debugging >> Notifier error injection +CONFIG_NOTIFIER_ERROR_INJECTION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CPU_NOTIFIER_ERROR_INJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PM_NOTIFIER_ERROR_INJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT policy<{'arm64': 'n', 'armhf': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Kernel hacking >> Kernel low-level debugging port >> Architecture: arm + +# Menu: Kernel hacking >> Lock Debugging (spinlocks, mutexes, etc...) +CONFIG_DEBUG_RT_MUTEXES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SPINLOCK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_MUTEXES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_WW_MUTEX_SLOWPATH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_LOCK_ALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PROVE_LOCKING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCK_STAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_ATOMIC_SLEEP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_LOCKING_API_SELFTESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCK_TORTURE_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Kernel hacking >> Memory Debugging +CONFIG_PAGE_EXTENSION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_PAGEALLOC policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n', 'powerpc-powerpc64-emb': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB_DEBUG_ON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB_STATS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_STACK_USAGE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_VM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_VIRTUAL policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_MEMORY_INIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT policy<{'amd64': 'm', 'i386': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DEBUG_PER_CPU_MAPS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_HIGHMEM policy<{'armhf': 'n', 'i386': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_DEBUG_STACKOVERFLOW policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_KASAN policy<{'amd64': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> Debug object operations +CONFIG_DEBUG_OBJECTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> Instrumentation type + +# Menu: Kernel hacking >> Memory Debugging >> Kernel memory leak detector +CONFIG_DEBUG_KMEMLEAK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory >> kmemcheck: default mode at boot + +# Menu: Kernel hacking >> RCU Debugging +CONFIG_SPARSE_RCU_POINTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RCU_CPU_STALL_TIMEOUT policy<{'amd64': '60', 'arm64': '60', 'armhf': '60', 'i386': '60', 'powerpc': '21', 'ppc64el': '21', 's390x': '21'}> +CONFIG_RCU_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RCU_EQS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_RCU_CPU_STALL_TIMEOUT flag + +# Menu: Kernel hacking >> RCU Debugging >> torture tests for RCU +CONFIG_RCU_TORTURE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Runtime Testing +CONFIG_LKDTM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LIST_SORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_KPROBES_SANITY_TEST policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BACKTRACE_SELF_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RBTREE_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTERVAL_TREE_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PERCPU_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ATOMIC64_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ASYNC_RAID6_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_HEXDUMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_STRING_HELPERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_KSTRTOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_RHASHTABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_LKDTM flag flag +CONFIG_TEST_LIST_SORT flag +CONFIG_KPROBES_SANITY_TEST flag +CONFIG_BACKTRACE_SELF_TEST flag +CONFIG_ATOMIC64_SELFTEST flag +CONFIG_TEST_RHASHTABLE flag + +# Menu: Kernel hacking >> Sample kernel code +CONFIG_SAMPLES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Tracers +CONFIG_FTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IRQSOFF_TRACER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PREEMPT_TRACER policy<{'amd64-lowlatency': 'n', 'i386-lowlatency': 'n'}> +CONFIG_SCHED_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FTRACE_SYSCALLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACER_SNAPSHOT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_STACK_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_IO_TRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KPROBE_EVENT policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UPROBE_EVENT policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FTRACE_STARTUP_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MMIOTRACE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MMIOTRACE_TEST policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_TRACEPOINT_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RING_BUFFER_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RING_BUFFER_STARTUP_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TRACE_ENUM_MAP_FILE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_FTRACE_STARTUP_TEST flag +CONFIG_MMIOTRACE_TEST flag +CONFIG_RING_BUFFER_BENCHMARK flag +CONFIG_RING_BUFFER_STARTUP_TEST flag + +# Menu: Kernel hacking >> Tracers >> Branch Profiling +CONFIG_BRANCH_PROFILE_NONE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROFILE_ANNOTATED_BRANCHES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PROFILE_ALL_BRANCHES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Tracers >> Kernel Function Tracer +CONFIG_FUNCTION_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUNCTION_GRAPH_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DYNAMIC_FTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUNCTION_PROFILER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Kernel hacking >> printk and dmesg options +CONFIG_PRINTK_TIME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MESSAGE_LOGLEVEL_DEFAULT policy<{'amd64': '4', 'arm64': '4', 'armhf': '4', 'i386': '4', 'powerpc': '4', 'ppc64el': '4', 's390x': '4'}> +CONFIG_BOOT_PRINTK_DELAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DYNAMIC_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Library routines +CONFIG_CRC_CCITT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC_T10DIF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC_ITU_T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC32 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC32_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC7 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LIBCRC32C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RANDOM32_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_GLOB_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CORDIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DDR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Library routines >> CRC32 implementation +CONFIG_CRC32_SLICEBY8 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC32_SLICEBY4 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC32_SARWATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC32_BIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Library routines >> Select compiled-in fonts +CONFIG_FONTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FONT_8x8 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FONT_8x16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FONT_6x11 policy<{'armhf': 'n'}> +CONFIG_FONT_7x14 policy<{'armhf': 'n'}> +CONFIG_FONT_PEARL_8x8 policy<{'armhf': 'n'}> +CONFIG_FONT_ACORN_8x8 policy<{'armhf': 'y'}> +CONFIG_FONT_MINI_4x6 policy<{'armhf': 'n'}> +CONFIG_FONT_6x10 policy<{'armhf': 'y'}> +CONFIG_FONT_SUN8x16 policy<{'armhf': 'n'}> +CONFIG_FONT_SUN12x22 policy<{'armhf': 'n'}> +CONFIG_FONT_10x18 policy<{'armhf': 'n'}> + +# Menu: Library routines >> XZ decompression support +CONFIG_XZ_DEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XZ_DEC_X86 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_POWERPC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_IA64 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_ARM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_ARMTHUMB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_SPARC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_XZ_DEC note flag + +# Menu: Networking support +CONFIG_NET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AF_RXRPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AF_RXRPC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RXKAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_LIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_LIB_PRETTYDEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CEPH_LIB_USE_DNS_RESOLVER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LWTUNNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Amateur Radio support +CONFIG_HAMRADIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol +CONFIG_AX25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_AX25_DAMA_SLAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NETROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ROSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol >> AX.25 network device drivers +CONFIG_MKISS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6PACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BPQETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SCC policy<{'i386': 'm'}> +CONFIG_SCC_DELAY policy<{'i386': 'n'}> +CONFIG_SCC_TRXECHO policy<{'i386': 'n'}> +CONFIG_BAYCOM_SER_FDX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_SER_HDX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_PAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_EPP policy<{'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_YAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Bluetooth subsystem support +CONFIG_BT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_LE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_BT_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth Classic (BR/EDR) features +CONFIG_BT_BREDR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_RFCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_RFCOMM_TTY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_BNEP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_BNEP_MC_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_BNEP_PROTO_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_CMTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HIDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers +CONFIG_BT_HCIBTSDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBCM203X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBPA10X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBFUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIDTL1 policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_BT_HCIBT3C policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_BT_HCIBLUECARD policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_BT_HCIBTUART policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_BT_HCIVHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MRVL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MRVL_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_WILINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI UART driver +CONFIG_BT_HCIUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIUART_H4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_BCSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_ATH3K policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_LL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_3WIRE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_INTEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_BCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_QCA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI USB driver +CONFIG_BT_HCIBTUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBTUSB_BCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIBTUSB_RTL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BT_ATH3K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAIF support +CONFIG_CAIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CAIF_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CAIF_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support +CONFIG_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CAN_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_BCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_GW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers +CONFIG_CAN_VCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SLCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_DEBUG_DEVICES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support +CONFIG_CAN_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CALC_BITTIMING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CAN_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CAN_TI_HECC policy<{'armhf': 'm'}> +CONFIG_CAN_JANZ_ICAN3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_FLEXCAN policy<{'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PCH_CAN policy<{'i386': 'm'}> +CONFIG_CAN_GRCAN policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_RCAR policy<{'armhf': 'm'}> +CONFIG_CAN_XILINXCAN policy<{'arm64': 'm'}> +CONFIG_CAN_MSCAN policy<{'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_M_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SOFTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SOFTING_CS policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch CC770 and Intel AN82527 devices +CONFIG_CAN_CC770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CC770_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CC770_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch C_CAN/D_CAN devices +CONFIG_CAN_C_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_C_CAN_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_C_CAN_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN SPI interfaces +CONFIG_CAN_MCP251X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN USB interfaces +CONFIG_CAN_EMS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_ESD_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_GS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_KVASER_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_8DEV_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Philips/NXP SJA1000 devices +CONFIG_CAN_SJA1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SJA1000_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SJA1000_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_EMS_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_CAN_EMS_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_PCMCIA policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_CAN_PEAK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_PCIEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CAN_KVASER_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PLX_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_TSCAN1 policy<{'i386': 'm'}> + +# Menu: Networking support >> IrDA (infrared) subsystem support +CONFIG_IRDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IRLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IRNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IRCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IRDA_ULTRA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IRDA_CACHE_LAST_LSAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IRDA_FAST_RR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IRDA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers +CONFIG_IRTTY_SIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KINGSUN_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KSDAZZLE_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_KS959_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IRDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SIGMATEL_FIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NSC_FIR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_WINBOND_FIR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOSHIBA_FIR policy<{'i386': 'm', 'powerpc-powerpc-e500mc': 'm', 'powerpc-powerpc-smp': 'm'}> +CONFIG_SMC_IRCC_FIR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ALI_FIR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VLSI_FIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_VIA_FIR policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCS_FIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SH_IRDA policy<{'armhf': 'm'}> + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART >> SIR Mode + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Serial dongle support +CONFIG_DONGLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_ESI_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ACTISYS_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TEKRAM_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_TOIM3232_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LITELINK_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MA600_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_GIRBIL_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MCP2120_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_OLD_BELKIN_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ACT200L_DONGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> NFC subsystem support +CONFIG_NFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NFC_DIGITAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NCI_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_NFC_NCI_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_HCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_SHDLC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices +CONFIG_NFC_PN533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_WILINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_TRF7970A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MEI_PHY policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NFC_SIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PORT100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN544 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN544_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN544_MEI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NFC_MICROREAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MICROREAD_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MICROREAD_MEI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NFC_MRVL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MRVL_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MRVL_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST21NFCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST21NFCA_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST_NCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST_NCI_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST_NCI_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NXP_NCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NXP_NCI_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_S3FWRN5_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options +CONFIG_PACKET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PACKET_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_UNIX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UNIX_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFRM_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFRM_SUB_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFRM_MIGRATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFRM_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_KEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_KEY_MIGRATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IUCV policy<{'s390x': 'y'}> +CONFIG_AFIUCV policy<{'s390x': 'm'}> +CONFIG_NETWORK_SECMARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETWORK_PHY_TIMESTAMPING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_IGMP_SNOOPING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BRIDGE_VLAN_FILTERING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VLAN_8021Q policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VLAN_8021Q_GVRP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VLAN_8021Q_MVRP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DECNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DECNET_ROUTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_LLC2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IPX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IPX_INTERN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATALK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_X25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_LAPB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHONET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MAC802154 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DNS_RESOLVER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VSOCKETS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VMWARE_VMCI_VSOCKETS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NETLINK_MMAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETLINK_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HSR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CGROUP_NET_PRIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_NET_CLASSID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_JIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> 6LoWPAN Support +CONFIG_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> 6LoWPAN Support >> Next Header Compression Support +CONFIG_6LOWPAN_NHC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_DEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_FRAGMENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_HOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_MOBILITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_ROUTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_UDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> Appletalk interfaces support +CONFIG_DEV_APPLETALK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_LTPC policy<{'i386': 'm'}> +CONFIG_COPS policy<{'i386': 'm'}> +CONFIG_COPS_DAYNA policy<{'i386': 'y'}> +CONFIG_COPS_TANGENT policy<{'i386': 'y'}> +CONFIG_IPDDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IPDDP_ENCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Networking options >> Asynchronous Transfer Mode (ATM) +CONFIG_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ATM_CLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_CLIP_NO_ICMP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_LANE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_MPOA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_BR2684 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_BR2684_IPFILTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> B.A.T.M.A.N. Advanced Meshing Protocol +CONFIG_BATMAN_ADV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BATMAN_ADV_BLA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_DAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_NC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_MCAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support +CONFIG_IEEE802154 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IEEE802154_SOCKET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> MultiProtocol Label Switching +CONFIG_MPLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_MPLS_GSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MPLS_ROUTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MPLS_IPTUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) +CONFIG_NETFILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETFILTER_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NETFILTER_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BRIDGE_NETFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration +CONFIG_NETFILTER_INGRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETFILTER_NETLINK_ACCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_QUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter Xtables support (required for ip_tables) +CONFIG_NETFILTER_XTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_AUDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CHECKSUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CLASSIFY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_DSCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_HMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_IDLETIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NETFILTER_XT_TARGET_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NETMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NFLOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NFQUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NOTRACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NETFILTER_XT_TARGET_RATEEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TEE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TRACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_SECMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TCPMSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_COMMENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNBYTES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNLABEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNTRACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DCCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DEVGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DSCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HELPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPRANGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPVS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_L2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_LENGTH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MULTIPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_NFACCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_OSF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_OWNER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_POLICY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_PHYSDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_PKTTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_QUOTA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_RATEEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_REALM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_RECENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_SCTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_SOCKET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STATISTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STRING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_TCPMSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_TIME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter connection tracking support +CONFIG_NF_CONNTRACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_MARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_SECMARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_ZONES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_PROCFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NF_CONNTRACK_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_TIMEOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_TIMESTAMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CT_PROTO_DCCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_PROTO_SCTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_PROTO_UDPLITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_AMANDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_FTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_H323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_IRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_NETBIOS_NS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SNMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_PPTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SANE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_TFTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK_TIMEOUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK_HELPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_QUEUE_CT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_NAT_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_NF_CONNTRACK_PROCFS flag + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support +CONFIG_NF_TABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_INET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_EXTHDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_META policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_RBTREE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_HASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_COUNTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_MASQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REDIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_QUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_COMPAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> DECnet: Netfilter Configuration +CONFIG_DECNET_NF_GRABULATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge nf_tables support +CONFIG_NF_TABLES_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_BRIDGE_META policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_BRIDGE_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge tables (ebtables) support +CONFIG_BRIDGE_NF_EBTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_BROUTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_T_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_T_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_802_3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_AMONG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_IP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_PKTTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_STP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_VLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_ARPREPLY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_DNAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_MARK_T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_SNAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_NFLOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP set support +CONFIG_IP_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_MAX policy<{'amd64': '256', 'arm64': '256', 'armhf': '256', 'i386': '256', 'powerpc': '256', 'ppc64el': '256', 's390x': '256'}> +CONFIG_IP_SET_BITMAP_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_BITMAP_IPMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_BITMAP_PORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORTIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORTNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_MAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETPORTNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETIFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_LIST_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP virtual server support +CONFIG_IP_VS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_VS_TAB_BITS policy<{'amd64': '12', 'arm64': '12', 'armhf': '12', 'i386': '12', 'powerpc': '12', 'ppc64el': '12', 's390x': '12'}> +CONFIG_IP_VS_PROTO_TCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_UDP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_ESP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_AH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_SCTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_RR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_WRR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_WLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_FO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_OVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LBLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LBLCR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_DH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_NQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SH_TAB_BITS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8', 's390x': '8'}> +CONFIG_IP_VS_FTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_NFCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PE_SIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration +CONFIG_NF_CONNTRACK_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CHAIN_ROUTE_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_DUP_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_DUP_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_REJECT_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARP_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) +CONFIG_IP_NF_IPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_RPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_SYNPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_SECURITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> Packet mangling +CONFIG_IP_NF_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_CLUSTERIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> iptables NAT support +CONFIG_IP_NF_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_MASQUERADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_NETMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT +CONFIG_NF_NAT_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CHAIN_NAT_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_NAT_MASQUERADE_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_MASQ_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REDIR_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_NAT_SNMP_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration +CONFIG_NF_CONNTRACK_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CHAIN_ROUTE_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_DUP_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_DUP_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_REJECT_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IP6 tables support (required for filtering) +CONFIG_IP6_NF_IPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_EUI64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_FRAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_OPTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_IPV6HEADER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_MH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_RPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_RT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_SYNPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_SECURITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_MASQUERADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_NPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT +CONFIG_NF_NAT_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CHAIN_NAT_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_NAT_MASQUERADE_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_MASQ_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REDIR_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network testing +CONFIG_NET_PKTGEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TCPPROBE policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_DROP_MONITOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing +CONFIG_NET_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_SCH_CBQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HTB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HFSC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_SCH_PRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_MULTIQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_RED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_SFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_SFQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_TEQL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_TBF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_GRED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_DSMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_NETEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_DRR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_MQPRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CHOKE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_QFQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CODEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_FQ_CODEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_FQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HHF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_PIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_INGRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_PLUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_TCINDEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_ROUTE4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_RSVP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_RSVP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FLOW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_CGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FLOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Actions +CONFIG_NET_CLS_ACT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_ACT_POLICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_GACT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GACT_PROB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_ACT_MIRRED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_IPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_PEDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SIMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SKBEDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CSUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_VLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Extended Matches +CONFIG_NET_EMATCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_EMATCH_STACK policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'i386': '32', 'powerpc': '32', 'ppc64el': '32', 's390x': '32'}> +CONFIG_NET_EMATCH_CMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_NBYTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_META policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_TEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_CANID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_EMATCH_IPSET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Universal 32bit comparisons w/ hashing (U32) +CONFIG_NET_CLS_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CLS_U32_PERF policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CLS_U32_MARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_CLS_IND policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_NET_CLS_IND flag + +# Menu: Networking support >> Networking options >> TCP/IP networking +CONFIG_INET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MULTICAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_IPIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE_DEMUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE_BROADCAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYN_COOKIES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_IPVTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FOU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FOU_IP_TUNNELS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INET_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_XFRM_MODE_TRANSPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_XFRM_MODE_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_XFRM_MODE_BEET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_LRO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INET_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_UDP_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_MD5SIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_SWITCHDEV policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_SYN_COOKIES mark + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: advanced router +CONFIG_IP_ADVANCED_ROUTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_FIB_TRIE_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_ROUTE_MULTIPATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_ROUTE_VERBOSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: kernel level autoconfiguration +CONFIG_IP_PNP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_PNP_DHCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_PNP_BOOTP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_PNP_RARP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: multicast routing +CONFIG_IP_MROUTE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MROUTE_MULTIPLE_TABLES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_PIMSM_V1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_PIMSM_V2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Layer Two Tunneling Protocol (L2TP) +CONFIG_L2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_DEBUGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_L2TP_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Open vSwitch +CONFIG_OPENVSWITCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_GRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_VXLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_GENEVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control +CONFIG_TCP_CONG_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCP_CONG_BIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_CUBIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCP_CONG_WESTWOOD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HSTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HYBLA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_VEGAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_SCALABLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_LP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_VENO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_YEAH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_ILLINOIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_DCTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_CDG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control >> Default TCP congestion control +CONFIG_DEFAULT_CUBIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_RENO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol +CONFIG_IP_DCCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP CCIDs Configuration +CONFIG_IP_DCCP_CCID2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_DCCP_CCID3 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_IP_DCCP_CCID3_DEBUG policy<{'s390x': 'n'}> +# +CONFIG_IP_DCCP_CCID3 flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP Kernel Hacking +CONFIG_IP_DCCP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NET_DCCPPROBE policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The IPv6 protocol +CONFIG_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_ROUTER_PREF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_ROUTE_INFO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_OPTIMISTIC_DAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INET6_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_MIP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_ILA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_XFRM_MODE_TRANSPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_XFRM_MODE_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_XFRM_MODE_BEET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_VTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_SIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_SIT_6RD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_GRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_SUBTREES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_MROUTE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_PIMSM_V2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_IPV6_OPTIMISTIC_DAD flag +CONFIG_IPV6 mark note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The RDS Protocol +CONFIG_RDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol +CONFIG_IP_SCTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCTPPROBE policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCTP_DBG_OBJCNT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCTP_COOKIE_HMAC_MD5 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCTP_COOKIE_HMAC_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SCTP_DBG_OBJCNT flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol >> Default SCTP cookie HMAC encoding +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The TIPC Protocol +CONFIG_TIPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TIPC_MEDIA_IB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIPC_MEDIA_UDP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_NET_9P policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_9P_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_9P_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_9P_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> RF switch subsystem support +CONFIG_RFKILL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_RFKILL_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_RFKILL_REGULATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_RFKILL_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> WiMAX Wireless Broadband support +CONFIG_WIMAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_WIMAX_DEBUG_LEVEL policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'i386': '8', 'powerpc': '8', 'ppc64el': '8'}> + +# Menu: Networking support >> Wireless +CONFIG_WIRELESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LIB80211_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) +CONFIG_MAC80211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_MAC80211_RC_MINSTREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_RC_MINSTREL_HT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_RC_MINSTREL_VHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_MESH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_MESSAGE_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Default rate control algorithm +CONFIG_MAC80211_RC_DEFAULT_MINSTREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Select mac80211 debugging features +CONFIG_MAC80211_DEBUG_MENU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MAC80211_STA_HASH_MAX_SIZE policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> + +# Menu: Networking support >> Wireless >> cfg80211 - wireless configuration API +CONFIG_CFG80211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NL80211_TESTMODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_DEVELOPER_WARNINGS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_REG_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_CERTIFICATION_ONUS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_DEFAULT_PS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_INTERNAL_REGDB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_WEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +# +CONFIG_CFG80211_WEXT flag + +# Menu: Power management and ACPI options +CONFIG_SUSPEND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_SUSPEND_FREEZER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HIBERNATION policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_PM_STD_PARTITION policy<{'amd64': '""', 'armhf': '""', 'i386': '""', 'powerpc-powerpc64-smp': '""', 'powerpc-powerpc-e500mc': '""', 'powerpc-powerpc-smp': '""', 's390x': '""'}> +CONFIG_PM_AUTOSLEEP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PM_WAKELOCKS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PM_WAKELOCKS_LIMIT policy<{'amd64': '100', 'arm64': '100', 'armhf': '100', 'i386': '100', 'powerpc-powerpc64-smp': '100', 'powerpc-powerpc-e500mc': '100', 'powerpc-powerpc-smp': '100', 'ppc64el': '100'}> +CONFIG_PM_WAKELOCKS_GC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TRACE_RTC policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KVM_GUEST policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SFI policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_INTEL_IDLE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_SUSPEND_SKIP_SYNC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +# +CONFIG_HIBERNATION flag + +# Menu: Power management and ACPI options >> 512x-based boards >> Architecture: powerpc +CONFIG_PPC_MPC512x policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Power management and ACPI options >> 52xx-based boards >> Architecture: powerpc +CONFIG_PPC_MPC52xx policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Power management and ACPI options >> 82xx-based boards (PQ II) >> Architecture: powerpc +CONFIG_PPC_82xx policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Power management and ACPI options >> 83xx-based boards >> Architecture: powerpc +CONFIG_PPC_83xx policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Power management and ACPI options >> 86xx-based boards >> Architecture: powerpc +CONFIG_PPC_86xx policy<{'powerpc-powerpc-smp': 'n'}> + +# Menu: Power management and ACPI options >> 8xx Machine Type >> Architecture: powerpc + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support +CONFIG_ACPI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_PROCFS_POWER policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_EC_DEBUGFS policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ACPI_AC policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_BATTERY policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_BUTTON policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_VIDEO policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_FAN policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_DOCK policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_PROCESSOR policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_IPMI policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ACPI_PROCESSOR_AGGREGATOR policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_THERMAL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_NUMA policy<{'amd64': 'y'}> +CONFIG_ACPI_CUSTOM_DSDT_FILE policy<{'amd64': '""', 'i386': '""'}> +CONFIG_ACPI_INITRD_TABLE_OVERRIDE policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_ACPI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_ACPI_PCI_SLOT policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_X86_PM_TIMER policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_CONTAINER policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_HOTPLUG_MEMORY policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_SBS policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_HED policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_ACPI_CUSTOM_METHOD policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_ACPI_BGRT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_REDUCED_HARDWARE_ONLY policy<{'amd64': 'n', 'arm64': 'y', 'i386': 'n'}> +CONFIG_ACPI_NFIT policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_NFIT_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_ACPI_EXTLOG policy<{'amd64': 'm', 'i386': 'm'}> +# +CONFIG_ACPI_PROCFS_POWER mark +CONFIG_ACPI_CUSTOM_METHOD mark note +CONFIG_ACPI_CUSTOM_DSDT_FILE note + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> ACPI Platform Error Interface (APEI) +CONFIG_ACPI_APEI policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_APEI_GHES policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_APEI_PCIEAER policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ACPI_APEI_MEMORY_FAILURE policy<{'amd64': 'y'}> +CONFIG_ACPI_APEI_EINJ policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ACPI_APEI_ERST_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> PMIC (Power Management Integrated Circuit) operation region support +CONFIG_PMIC_OPREGION policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> + +# Menu: Power management and ACPI options >> APM (Advanced Power Management) BIOS support >> Architecture: x86 +CONFIG_APM policy<{'i386': 'm'}> +CONFIG_APM_IGNORE_USER_SUSPEND policy<{'i386': 'n'}> +CONFIG_APM_DO_ENABLE policy<{'i386': 'n'}> +CONFIG_APM_CPU_IDLE policy<{'i386': 'n'}> +CONFIG_APM_DISPLAY_BLANK policy<{'i386': 'n'}> +CONFIG_APM_ALLOW_INTS policy<{'i386': 'n'}> +# +CONFIG_APM flag + +# Menu: Power management and ACPI options >> Architecture: arm + +# Menu: Power management and ACPI options >> Architecture: powerpc +CONFIG_PPC_POWERNV policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_OPAL_PRD policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_PPC_CHRP policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_PPC_PMAC policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_PMAC32_PSURGE policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_PPC_MAPLE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_PASEMI policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_PS3 policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_IBM_CELL_BLADE policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_CELL_QPACE policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_EPAPR_PARAVIRT policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_OF_BOOT_TRAMPOLINE policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_UDBG_RTAS_CONSOLE policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'n'}> +CONFIG_MPIC_TIMER policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPIC_MSGR policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_RTAS_PROC policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_RTAS_FLASH policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_IBMEBUS policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_PPC601_SYNC_FIX policy<{'powerpc-powerpc-smp': 'n'}> +CONFIG_TAU policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_TAU_INT policy<{'powerpc-powerpc-smp': 'n'}> +CONFIG_TAU_AVERAGE policy<{'powerpc-powerpc-smp': 'n'}> +CONFIG_QUICC_ENGINE policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_CPM2 policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_SIMPLE_GPIO policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Power management and ACPI options >> Architecture: s390 + +# Menu: Power management and ACPI options >> Architecture: x86 + +# Menu: Power management and ACPI options >> CPU Frequency scaling + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling +CONFIG_CPU_FREQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_STAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_STAT_DETAILS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_POWERSAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_USERSPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_ONDEMAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_CONSERVATIVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_X86_INTEL_PSTATE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_PCC_CPUFREQ policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_SFI_CPUFREQ policy<{'i386': 'm'}> +CONFIG_X86_POWERNOW_K6 policy<{'i386': 'm'}> +CONFIG_X86_POWERNOW_K7 policy<{'i386': 'm'}> +CONFIG_X86_GX_SUSPMOD policy<{'i386': 'm'}> +CONFIG_X86_SPEEDSTEP_CENTRINO policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE policy<{'i386': 'y'}> +CONFIG_X86_SPEEDSTEP_ICH policy<{'i386': 'y'}> +CONFIG_X86_SPEEDSTEP_SMI policy<{'i386': 'y'}> +CONFIG_X86_P4_CLOCKMOD policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_CPUFREQ_NFORCE2 policy<{'i386': 'y'}> +CONFIG_X86_LONGRUN policy<{'i386': 'm'}> +CONFIG_X86_LONGHAUL policy<{'i386': 'm'}> +CONFIG_X86_E_POWERSAVER policy<{'i386': 'n'}> +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK policy<{'i386': 'y'}> +CONFIG_ARM_BIG_LITTLE_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_DT_BL_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ policy<{'armhf': 'm'}> +CONFIG_ARM_EXYNOS5440_CPUFREQ policy<{'armhf': 'n'}> +CONFIG_ARM_IMX6Q_CPUFREQ policy<{'armhf-generic': 'm'}> +CONFIG_ARM_MT8173_CPUFREQ policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_OMAP2PLUS_CPUFREQ policy<{'armhf': 'y'}> +CONFIG_ARM_TEGRA20_CPUFREQ policy<{'armhf-generic': 'y'}> +CONFIG_CPU_FREQ_MAPLE policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_CPU_FREQ_PMAC policy<{'powerpc-powerpc-smp': 'y'}> +CONFIG_CPU_FREQ_PMAC64 policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PPC_PASEMI_CPUFREQ policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_POWERNV_CPUFREQ policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_QORIQ_CPUFREQ policy<{'armhf': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +# +CONFIG_CPU_FREQ_STAT note +CONFIG_CPU_FREQ_GOV_PERFORMANCE note +CONFIG_CPU_FREQ_GOV_POWERSAVE note +CONFIG_CPU_FREQ_GOV_USERSPACE note +CONFIG_CPU_FREQ_GOV_ONDEMAND note +CONFIG_CPU_FREQ_GOV_CONSERVATIVE note +CONFIG_X86_PCC_CPUFREQ note +CONFIG_X86_SPEEDSTEP_CENTRINO note +CONFIG_X86_SPEEDSTEP_ICH note +CONFIG_X86_SPEEDSTEP_SMI note +CONFIG_X86_CPUFREQ_NFORCE2 note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> ACPI Processor P-States driver +CONFIG_X86_ACPI_CPUFREQ policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_ACPI_CPUFREQ_CPB policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_POWERNOW_K8 policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_AMD_FREQ_SENSITIVITY policy<{'amd64': 'm', 'i386': 'm'}> +# +CONFIG_X86_ACPI_CPUFREQ note +CONFIG_X86_POWERNOW_K8 note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL) + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> Default CPUFreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> Generic DT based cpufreq driver +CONFIG_CPUFREQ_DT policy<{'arm64': 'y', 'armhf': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_ARM_HIGHBANK_CPUFREQ policy<{'armhf': 'm'}> +CONFIG_ARM_HISI_ACPU_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_TEGRA124_CPUFREQ policy<{'armhf-generic': 'm'}> +# +CONFIG_CPUFREQ_DT note + +# Menu: Power management and ACPI options >> CPU Idle + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support +CONFIG_CPU_IDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_LADDER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +CONFIG_ARM_CPUIDLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_BIG_LITTLE_CPUIDLE policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_ARM_EXYNOS_CPUIDLE policy<{'armhf': 'y'}> +CONFIG_ARM_MVEBU_V7_CPUIDLE policy<{'armhf': 'y'}> +# +CONFIG_ARM_HIGHBANK_CPUIDLE note + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> MIPS CPU Idle Drivers + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> POWERPC CPU Idle Drivers +CONFIG_PSERIES_CPUIDLE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_POWERNV_CPUIDLE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> CPUIdle driver >> Architecture: powerpc + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +# + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> MIPS CPU Idle Drivers + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> POWERPC CPU Idle Drivers + +# Menu: Power management and ACPI options >> Cell Broadband Engine options >> Architecture: powerpc +CONFIG_SPU_FS policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_CBE_CPUFREQ_SPU_GOVERNOR policy<{'powerpc-powerpc64-smp': 'm'}> + +# Menu: Power management and ACPI options >> Device power management core functionality +CONFIG_PM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_APM_EMULATION policy<{'armhf': 'n', 'powerpc-powerpc-smp': 'm'}> +CONFIG_WQ_POWER_EFFICIENT_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Power management and ACPI options >> Device power management core functionality >> Power Management Debug Support +CONFIG_PM_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PM_ADVANCED_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TEST_SUSPEND policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_DPM_WATCHDOG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +# +CONFIG_PM_DEBUG flag + +# Menu: Power management and ACPI options >> Embedded 6xx/7xx/7xxx-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Freescale Book-E Machine Type >> Architecture: powerpc +CONFIG_FSL_SOC_BOOKE policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_BSC9131_RDB policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_C293_PCIE policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_BSC9132_QDS policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_MPC8540_ADS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC8560_ADS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC85xx_CDS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC85xx_MDS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC8536_DS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC85xx_DS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MPC85xx_RDB policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_P1010_RDB policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_P1022_DS policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_P1022_RDK policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_P1023_RDB policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_TWR_P102x policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_SOCRATES policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_KSI8560 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_XES_MPC85xx policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_STX_GP3 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_TQM8540 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_TQM8541 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_TQM8548 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_TQM8555 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_TQM8560 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_SBC8548 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_PPA8548 policy<{'powerpc-powerpc-e500mc': 'y'}> +CONFIG_GE_IMP3A policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_SGY_CTS1000 policy<{'powerpc-powerpc-e500mc': 'm'}> +CONFIG_MVME2500 policy<{'powerpc-powerpc-e500mc': 'n'}> +CONFIG_PPC_QEMU_E500 policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_CORENET_GENERIC policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> + +# Menu: Power management and ACPI options >> Freescale Ethernet driver platform-specific options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Freescale Ethernet driver platform-specific options >> Second Ethernet channel >> Architecture: powerpc + +# Menu: Power management and ACPI options >> IBM pSeries & new (POWER5-based) iSeries +CONFIG_CMM policy<{'ppc64el': 'm', 's390x': 'y'}> +# +CONFIG_CMM flag + +# Menu: Power management and ACPI options >> IBM pSeries & new (POWER5-based) iSeries >> Architecture: powerpc +CONFIG_PPC_PSERIES policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_SPLPAR policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_DTL policy<{'ppc64el': 'y'}> +CONFIG_PSERIES_ENERGY policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_SCANLOG policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_IO_EVENT_IRQ policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_LPARCFG policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SMLPAR policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_HV_PERF_CTRS policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> Microcode patch selection >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Memory power savings +CONFIG_I7300_IDLE policy<{'amd64': 'm'}> + +# Menu: Power management and ACPI options >> PA Semi PWRficient options >> Architecture: powerpc +CONFIG_PPC_PASEMI_IOMMU policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_PPC_PASEMI_MDIO policy<{'powerpc-powerpc64-smp': 'm'}> + +# Menu: Power management and ACPI options >> PS3 Platform Options >> Architecture: powerpc +CONFIG_PS3_DYNAMIC_DMA policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_PS3_DISK policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_PS3_ROM policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_PS3_FLASH policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_PS3_VRAM policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_PS3_LPM policy<{'powerpc-powerpc64-smp': 'm'}> +CONFIG_PS3GELIC_UDBG policy<{'powerpc-powerpc64-smp': 'n'}> + +# Menu: Power management and ACPI options >> PS3 Platform Options >> PS3 Advanced configuration options >> Architecture: powerpc +CONFIG_PS3_ADVANCED policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_PS3_HTAB_SIZE policy<{'powerpc-powerpc64-smp': '20'}> +CONFIG_PS3_PS3AV policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PS3_SYS_MANAGER policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PS3_REPOSITORY_WRITE policy<{'powerpc-powerpc64-smp': 'n'}> + +# Menu: Processor support +CONFIG_SMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NR_CPUS policy<{'amd64': '256', 'arm64': '128', 'armhf': '4', 'i386': '8', 'powerpc-powerpc64-emb': '8', 'powerpc-powerpc64-smp': '1024', 'powerpc-powerpc-e500mc': '8', 'powerpc-powerpc-smp': '4', 'ppc64el': '2048', 's390x': '256'}> + +# Menu: Processor support >> Architecture: powerpc +CONFIG_TUNE_CELL policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_E500MC policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_FSL_EMB_PERFMON policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_PHYS_64BIT policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_ALTIVEC policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_VSX policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_ICSWX policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_ICSWX_PID policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PPC_ICSWX_USE_SIGILL policy<{'powerpc-powerpc64-smp': 'n'}> +# +CONFIG_PPC_ICSWX flag + +# Menu: Processor support >> CPU selection +CONFIG_GENERIC_CPU policy<{'amd64': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y'}> + +# Menu: Processor support >> CPU selection >> Architecture: powerpc +CONFIG_CELL_CPU policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_POWER4_CPU policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_POWER5_CPU policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_POWER6_CPU policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_POWER7_CPU policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_POWER8_CPU policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_E5500_CPU policy<{'powerpc-powerpc64-emb': 'n'}> +CONFIG_E6500_CPU policy<{'powerpc-powerpc64-emb': 'n'}> + +# Menu: Processor support >> Processor Type >> Architecture: powerpc +CONFIG_PPC_BOOK3S_32 policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PPC_85xx policy<{'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'n'}> +CONFIG_PPC_8xx policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_40x policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_44x policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_E200 policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_PPC_BOOK3S_64 policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_BOOK3E_64 policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> + +# Menu: Processor type and features +CONFIG_SPARSEMEM_VMEMMAP policy<{'amd64': 'y', 'arm64': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MOVABLE_NODE policy<{'amd64': 'y'}> +CONFIG_MEMORY_HOTPLUG policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMORY_HOTREMOVE policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BALLOON_COMPACTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_COMPACTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MIGRATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BOUNCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KSM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_MMAP_MIN_ADDR policy<{'amd64': '65536', 'arm64': '32768', 'armhf': '32768', 'i386': '65536', 'powerpc': '65536', 'ppc64el': '65536', 's390x': '4096'}> +CONFIG_MEMORY_FAILURE policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HWPOISON_INJECT policy<{'amd64': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_TRANSPARENT_HUGEPAGE policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CLEANCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRONTSWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEM_SOFT_DIRTY policy<{'amd64': 'y'}> +CONFIG_ZSWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZPOOL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZBUD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZSMALLOC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PGTABLE_MAPPING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ZSMALLOC_STAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFERRED_STRUCT_PAGE_INIT policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_IDLE_PAGE_TRACKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HIGHPTE policy<{'armhf': 'y', 'i386': 'y'}> +CONFIG_MATH_EMULATION policy<{'i386': 'n', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_CMDLINE_BOOL policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_HIGHMEM policy<{'armhf': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_HOTPLUG_CPU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NUMA policy<{'amd64': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64': '11', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'powerpc-powerpc64-emb': '13', 'powerpc-powerpc64-smp': '13', 'powerpc-powerpc-e500mc': '11', 'powerpc-powerpc-smp': '11', 'ppc64el': '9', 's390x': '9'}> +CONFIG_SCHED_SMT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y'}> +# +CONFIG_DEFAULT_MMAP_MIN_ADDR mark note +CONFIG_IDLE_PAGE_TRACKING flag note + +# Menu: Processor type and features >> Architecture: arm +CONFIG_HAVE_ARM_ARCH_TIMER policy<{'armhf': 'y'}> +CONFIG_ARM_PSCI policy<{'armhf': 'y'}> +CONFIG_THUMB2_KERNEL policy<{'armhf': 'n'}> +CONFIG_AEABI policy<{'armhf': 'y'}> +CONFIG_OABI_COMPAT policy<{'armhf': 'n'}> +CONFIG_CPU_SW_DOMAIN_PAN policy<{'armhf-generic': 'y'}> +CONFIG_ARM_MODULE_PLTS policy<{'armhf': 'n'}> +CONFIG_UACCESS_WITH_MEMCPY policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Architecture: powerpc +CONFIG_PPC_TRANSACTIONAL_MEM policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_SWIOTLB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_FA_DUMP policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_IRQ_ALL_CPUS policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SUBPAGE_PROT policy<{'ppc64el': 'y'}> +CONFIG_PPC_DENORMALISATION policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> +CONFIG_EXTRA_TARGETS policy<{'powerpc': '""', 'ppc64el': '""'}> +# +CONFIG_FA_DUMP note + +# Menu: Processor type and features >> Architecture: s390 +CONFIG_COMPAT policy<{'amd64': 'y', 'arm64': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PACK_STACK policy<{'s390x': 'y'}> +CONFIG_CHECK_STACK policy<{'s390x': 'y'}> +CONFIG_STACK_GUARD policy<{'s390x': '256'}> +CONFIG_WARN_DYNAMIC_STACK policy<{'s390x': 'n'}> + +# Menu: Processor type and features >> Architecture: x86 +CONFIG_ZONE_DMA policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_X86_FEATURE_NAMES policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_X2APIC policy<{'amd64': 'y'}> +CONFIG_X86_MPPARSE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_EXTENDED_PLATFORM policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_LPSS policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_AMD_PLATFORM_DEVICE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IOSF_MBI policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IOSF_MBI_DEBUG policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_32_IRIS policy<{'i386': 'm'}> +CONFIG_SCHED_OMIT_FRAME_POINTER policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_X86_GENERIC policy<{'i386': 'y'}> +CONFIG_X86_PPRO_FENCE policy<{'i386': 'y'}> +CONFIG_HPET_TIMER policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DMI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_GART_IOMMU policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT policy<{'amd64': 'y'}> +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_LEGACY_VM86 policy<{'i386': 'n'}> +CONFIG_X86_16BIT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_VSYSCALL_EMULATION policy<{'amd64': 'y'}> +CONFIG_TOSHIBA policy<{'i386': 'n'}> +CONFIG_I8K policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_REBOOTFIXUPS policy<{'i386': 'y'}> +CONFIG_X86_MSR policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_CPUID policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_PAE policy<{'i386': 'y'}> +CONFIG_ARCH_MEMORY_PROBE policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_X86_PMEM_LEGACY policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_CHECK_BIOS_CORRUPTION policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_RESERVE_LOW policy<{'amd64': '64', 'i386': '64'}> +CONFIG_MTRR policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT policy<{'amd64': '1', 'i386': '1'}> +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT policy<{'amd64': '1', 'i386': '1'}> +CONFIG_X86_PAT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ARCH_RANDOM policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_X86_SMAP policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_MPX policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EFI policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_STUB policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_MIXED policy<{'amd64': 'y'}> +CONFIG_KEXEC_FILE policy<{'amd64': 'y'}> +CONFIG_KEXEC_VERIFY_SIG policy<{'amd64': 'y'}> +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG policy<{'amd64': 'y'}> +CONFIG_KEXEC_JUMP policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_RANDOMIZE_BASE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_COMPAT_VDSO policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_MODIFY_LDT_SYSCALL policy<{'amd64': 'y', 'i386': 'y'}> +# +CONFIG_COMPAT_VDSO mark +CONFIG_X86_LEGACY_VM86 flag note +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG flag note +CONFIG_MODIFY_LDT_SYSCALL flag note + +# Menu: Processor type and features >> CPU microcode loading support >> Architecture: x86 +CONFIG_MICROCODE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_INTEL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_AMD policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_EARLY policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Contiguous Memory Allocator +CONFIG_CMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CMA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CMA_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CMA_AREAS policy<{'amd64': '7', 'arm64': '7', 'armhf': '7', 'i386': '7', 'powerpc': '7', 'ppc64el': '7'}> + +# Menu: Processor type and features >> Device power management core functionality + +# Menu: Processor type and features >> Device power management core functionality >> Power Management Debug Support +# + +# Menu: Processor type and features >> High Memory Support >> Architecture: x86 +CONFIG_NOHIGHMEM policy<{'i386': 'n'}> +CONFIG_HIGHMEM4G policy<{'i386': 'n'}> +CONFIG_HIGHMEM64G policy<{'i386': 'y'}> + +# Menu: Processor type and features >> Linux guest support >> Architecture: x86 +CONFIG_HYPERVISOR_GUEST policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Architecture: x86 +CONFIG_PARAVIRT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_PARAVIRT_DEBUG policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_PARAVIRT_SPINLOCKS policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KVM_DEBUG_FS policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_LGUEST_GUEST policy<{'i386': 'n'}> +CONFIG_PARAVIRT_TIME_ACCOUNTING policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Xen guest support + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Xen guest support >> Architecture: x86 +CONFIG_XEN_512GB policy<{'amd64': 'y'}> +CONFIG_XEN_DEBUG_FS policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_XEN_PVH policy<{'amd64': 'y'}> +# +CONFIG_XEN_512GB flag note + +# Menu: Processor type and features >> Machine Check / overheating reporting >> Architecture: x86 +CONFIG_X86_MCE policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_INTEL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_AMD policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_ANCIENT_MCE policy<{'i386': 'n'}> +CONFIG_X86_MCE_INJECT policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Processor type and features >> Math emulation options >> Architecture: powerpc +CONFIG_MATH_EMULATION_FULL policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> + +# Menu: Processor type and features >> Memory model +CONFIG_FLATMEM_MANUAL policy<{'i386': 'n', 'powerpc-powerpc64-emb': 'n'}> +CONFIG_SPARSEMEM_MANUAL policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Processor type and features >> Memory split +CONFIG_VMSPLIT_3G policy<{'armhf': 'y', 'i386': 'y'}> +CONFIG_VMSPLIT_2G policy<{'armhf': 'n', 'i386': 'n'}> +CONFIG_VMSPLIT_1G policy<{'armhf': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Memory split >> Architecture: arm + +# Menu: Processor type and features >> Memory split >> Architecture: x86 + +# Menu: Processor type and features >> Page size >> Architecture: powerpc +CONFIG_PPC_4K_PAGES policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_64K_PAGES policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> + +# Menu: Processor type and features >> Preemption Model +CONFIG_PREEMPT_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PREEMPT_VOLUNTARY policy<{'amd64-generic': 'y', 'amd64-lowlatency': 'n', 'arm64': 'y', 'armhf': 'y', 'i386-generic': 'y', 'i386-lowlatency': 'n', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PREEMPT policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'i386-generic': 'n', 'i386-lowlatency': 'y', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Processor type and features >> Processor family + +# Menu: Processor type and features >> Processor family >> Architecture: x86 +CONFIG_M486 policy<{'i386': 'n'}> +CONFIG_M586 policy<{'i386': 'n'}> +CONFIG_M586TSC policy<{'i386': 'n'}> +CONFIG_M586MMX policy<{'i386': 'n'}> +CONFIG_M686 policy<{'i386': 'y'}> +CONFIG_MPENTIUMII policy<{'i386': 'n'}> +CONFIG_MPENTIUMIII policy<{'i386': 'n'}> +CONFIG_MPENTIUMM policy<{'i386': 'n'}> +CONFIG_MPENTIUM4 policy<{'i386': 'n'}> +CONFIG_MK6 policy<{'i386': 'n'}> +CONFIG_MK7 policy<{'i386': 'n'}> +CONFIG_MK8 policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_MCRUSOE policy<{'i386': 'n'}> +CONFIG_MEFFICEON policy<{'i386': 'n'}> +CONFIG_MWINCHIPC6 policy<{'i386': 'n'}> +CONFIG_MWINCHIP3D policy<{'i386': 'n'}> +CONFIG_MELAN policy<{'i386': 'n'}> +CONFIG_MGEODEGX1 policy<{'i386': 'n'}> +CONFIG_MGEODE_LX policy<{'i386': 'n'}> +CONFIG_MCYRIXIII policy<{'i386': 'n'}> +CONFIG_MVIAC3_2 policy<{'i386': 'n'}> +CONFIG_MVIAC7 policy<{'i386': 'n'}> +CONFIG_MPSC policy<{'amd64': 'n'}> +CONFIG_MCORE2 policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_MATOM policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Processor type >> Architecture: s390 +CONFIG_MARCH_Z900 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z990 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z9_109 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z10 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z196 policy<{'s390x': 'n'}> +CONFIG_MARCH_ZEC12 policy<{'s390x': 'y'}> +CONFIG_MARCH_Z13 policy<{'s390x': 'n'}> + +# Menu: Processor type and features >> Support for extended (non-PC) x86 platforms >> Architecture: x86 +CONFIG_X86_NUMACHIP policy<{'amd64': 'y'}> +CONFIG_X86_VSMP policy<{'amd64': 'n'}> +CONFIG_X86_UV policy<{'amd64': 'n'}> +CONFIG_X86_GOLDFISH policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_INTEL_MID policy<{'i386': 'y'}> +CONFIG_X86_INTEL_QUARK policy<{'i386': 'n'}> +CONFIG_X86_RDC321X policy<{'i386': 'n'}> +CONFIG_X86_32_NON_STANDARD policy<{'i386': 'n'}> +CONFIG_APB_TIMER policy<{'i386': 'y'}> + +# Menu: Processor type and features >> Supported processor vendors >> Architecture: x86 +CONFIG_PROCESSOR_SELECT policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_INTEL policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CYRIX_32 policy<{'i386': 'y'}> +CONFIG_CPU_SUP_AMD policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CENTAUR policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_TRANSMETA_32 policy<{'i386': 'y'}> +CONFIG_CPU_SUP_UMC_32 policy<{'i386': 'y'}> + +# Menu: Processor type and features >> Symmetric Multi-Processing +CONFIG_SCHED_MC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 's390x': 'y'}> + +# Menu: Processor type and features >> Symmetric Multi-Processing >> Architecture: arm +CONFIG_SMP_ON_UP policy<{'armhf': 'y'}> +CONFIG_ARM_CPU_TOPOLOGY policy<{'armhf': 'y'}> +CONFIG_MCPM policy<{'armhf': 'y'}> +CONFIG_BIG_LITTLE policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER_DUMMY_IF policy<{'armhf': 'm'}> + +# Menu: Processor type and features >> Symmetric multi-processing support +CONFIG_NODES_SHIFT policy<{'amd64': '6', 'powerpc-powerpc64-smp': '8', 'ppc64el': '8'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> Architecture: s390 +CONFIG_SCHED_TOPOLOGY policy<{'s390x': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> Architecture: x86 +CONFIG_X86_BIGSMP policy<{'i386': 'n'}> +CONFIG_MAXSMP policy<{'amd64': 'n'}> +CONFIG_BOOTPARAM_HOTPLUG_CPU0 policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_HOTPLUG_CPU0 policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> Numa Memory Allocation and Scheduler Support +CONFIG_NUMA_EMU policy<{'amd64': 'n'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> Numa Memory Allocation and Scheduler Support >> Architecture: x86 +CONFIG_AMD_NUMA policy<{'amd64': 'y'}> +CONFIG_X86_64_ACPI_NUMA policy<{'amd64': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> Select NUMA modes + +# Menu: Processor type and features >> Symmetric multi-processing support >> Select NUMA modes >> Architecture: s390 + +# Menu: Processor type and features >> Timer frequency +CONFIG_HZ_100 policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_HZ_250 policy<{'amd64-generic': 'y', 'amd64-lowlatency': 'n', 'armhf': 'y', 'i386-generic': 'y', 'i386-lowlatency': 'n', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HZ_300 policy<{'amd64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HZ_1000 policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'armhf': 'n', 'i386-generic': 'n', 'i386-lowlatency': 'y', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Processor type and features >> Timer frequency >> Architecture: arm +CONFIG_HZ_200 policy<{'armhf': 'n'}> +CONFIG_HZ_500 policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Transparent Hugepage Support sysfs defaults +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE policy<{'amd64': 'n', 'arm64': 'n', 'armhf-generic-lpae': 'n', 'i386': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Processor type and features >> Tune code generation >> Architecture: s390 +CONFIG_TUNE_DEFAULT policy<{'s390x': 'n'}> +CONFIG_TUNE_Z900 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z990 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z9_109 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z10 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z196 policy<{'s390x': 'n'}> +CONFIG_TUNE_ZEC12 policy<{'s390x': 'y'}> +CONFIG_TUNE_Z13 policy<{'s390x': 'n'}> + +# Menu: Security options +CONFIG_SECURITY_DMESG_RESTRICT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITYFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEL_TXT policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Security options >> Default security module +CONFIG_DEFAULT_SECURITY_SELINUX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_SMACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_TOMOYO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_APPARMOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_SECURITY_DAC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_DEFAULT_SECURITY_APPARMOR mark + +# Menu: Security options >> Enable access key retention support +CONFIG_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PERSISTENT_KEYRINGS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BIG_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRUSTED_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ENCRYPTED_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Enable different security models +CONFIG_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_NETWORK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_NETWORK_XFRM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_PATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LSM_MMAP_MIN_ADDR policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_SECURITY_SMACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SMACK_BRINGUP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_SMACK_NETFILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_YAMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SECURITY mark +CONFIG_LSM_MMAP_MIN_ADDR mark flag +CONFIG_SECURITY_SMACK mark +CONFIG_SECURITY_YAMA mark + +# Menu: Security options >> Enable different security models >> AppArmor support +CONFIG_SECURITY_APPARMOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'i386': '1', 'powerpc': '1', 'ppc64el': '1', 's390x': '1'}> +CONFIG_SECURITY_APPARMOR_STATS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem +CONFIG_INTEGRITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_SIGNATURE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_ASYMMETRIC_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_AUDIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_ATTR_FSUUID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_EXTRA_SMACK_XATTRS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) +CONFIG_IMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_APPRAISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_LOAD_X509 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default integrity hash algorithm +CONFIG_IMA_DEFAULT_HASH_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_DEFAULT_HASH_SHA256 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_DEFAULT_HASH_SHA512 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_DEFAULT_HASH_WP512 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default template +CONFIG_IMA_TEMPLATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_NG_TEMPLATE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_SIG_TEMPLATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> NSA SELinux Support +CONFIG_SECURITY_SELINUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_BOOTPARAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'i386': '0', 'powerpc': '0', 'ppc64el': '0'}> +CONFIG_SECURITY_SELINUX_DISABLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SECURITY_SELINUX_DEVELOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_AVC_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'i386': '1', 'powerpc': '1', 'ppc64el': '1', 's390x': '1'}> +CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_SECURITY_SELINUX mark + +# Menu: Security options >> Enable different security models >> TOMOYO Linux Support +CONFIG_SECURITY_TOMOYO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY policy<{'amd64': '2048', 'arm64': '2048', 'armhf': '2048', 'i386': '2048', 'powerpc': '2048', 'ppc64el': '2048', 's390x': '2048'}> +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'i386': '1024', 'powerpc': '1024', 'ppc64el': '1024', 's390x': '1024'}> +CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_TOMOYO_POLICY_LOADER policy<{'amd64': '"/sbin/tomoyo-init"', 'arm64': '"/sbin/tomoyo-init"', 'armhf': '"/sbin/tomoyo-init"', 'i386': '"/sbin/tomoyo-init"', 'powerpc': '"/sbin/tomoyo-init"', 'ppc64el': '"/sbin/tomoyo-init"', 's390x': '"/sbin/tomoyo-init"'}> +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER policy<{'amd64': '"/sbin/init"', 'arm64': '"/sbin/init"', 'armhf': '"/sbin/init"', 'i386': '"/sbin/init"', 'powerpc': '"/sbin/init"', 'ppc64el': '"/sbin/init"', 's390x': '"/sbin/init"'}> + +# Menu: System Type + +# Menu: System Type >> ARM Ltd. Versatile Express family >> Architecture: arm +CONFIG_ARCH_VEXPRESS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_DCSCB policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_SPC policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_TC2_PM policy<{'armhf': 'y'}> + +# Menu: System Type >> ARM system type >> Architecture: arm +CONFIG_ARCH_MULTIPLATFORM policy<{'armhf': 'y'}> +CONFIG_ARCH_REALVIEW policy<{'armhf': 'n'}> +CONFIG_ARCH_VERSATILE policy<{'armhf': 'n'}> +CONFIG_ARCH_CLPS711X policy<{'armhf': 'n'}> +CONFIG_ARCH_GEMINI policy<{'armhf': 'n'}> +CONFIG_ARCH_EBSA110 policy<{'armhf': 'n'}> +CONFIG_ARCH_EP93XX policy<{'armhf': 'n'}> +CONFIG_ARCH_FOOTBRIDGE policy<{'armhf': 'n'}> +CONFIG_ARCH_NETX policy<{'armhf': 'n'}> +CONFIG_ARCH_IOP13XX policy<{'armhf': 'n'}> +CONFIG_ARCH_IOP32X policy<{'armhf': 'n'}> +CONFIG_ARCH_IOP33X policy<{'armhf': 'n'}> +CONFIG_ARCH_IXP4XX policy<{'armhf': 'n'}> +CONFIG_ARCH_DOVE policy<{'armhf': 'n'}> +CONFIG_ARCH_MV78XX0 policy<{'armhf': 'n'}> +CONFIG_ARCH_ORION5X policy<{'armhf': 'n'}> +CONFIG_ARCH_MMP policy<{'armhf': 'n'}> +CONFIG_ARCH_KS8695 policy<{'armhf': 'n'}> +CONFIG_ARCH_W90X900 policy<{'armhf': 'n'}> +CONFIG_ARCH_LPC32XX policy<{'armhf': 'n'}> +CONFIG_ARCH_PXA policy<{'armhf': 'n'}> +CONFIG_ARCH_SHMOBILE_LEGACY policy<{'armhf': 'n'}> +CONFIG_ARCH_RPC policy<{'armhf': 'n'}> +CONFIG_ARCH_SA1100 policy<{'armhf': 'n'}> +CONFIG_ARCH_S3C24XX policy<{'armhf': 'n'}> +CONFIG_ARCH_S3C64XX policy<{'armhf': 'n'}> +CONFIG_ARCH_DAVINCI policy<{'armhf': 'n'}> +CONFIG_ARCH_OMAP1 policy<{'armhf': 'n'}> + +# Menu: System Type >> Allwinner SoCs >> Architecture: arm +CONFIG_ARCH_SUNXI policy<{'armhf': 'n'}> + +# Menu: System Type >> Altera SOCFPGA family >> Architecture: arm +CONFIG_ARCH_SOCFPGA policy<{'armhf': 'n'}> + +# Menu: System Type >> Amlogic Meson SoCs >> Architecture: arm +CONFIG_ARCH_MESON policy<{'armhf': 'y'}> +CONFIG_MACH_MESON6 policy<{'armhf': 'y'}> +CONFIG_MACH_MESON8 policy<{'armhf': 'y'}> + +# Menu: System Type >> Architecture: arm +CONFIG_ARCH_VIRT policy<{'armhf': 'y'}> +CONFIG_ARCH_ALPINE policy<{'armhf': 'y'}> +CONFIG_ARCH_AXXIA policy<{'armhf-generic-lpae': 'y'}> +CONFIG_ARCH_DIGICOLOR policy<{'armhf': 'n'}> +CONFIG_ARCH_HIGHBANK policy<{'armhf': 'y'}> +CONFIG_ARCH_HISI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_KEYSTONE policy<{'armhf': 'n'}> +CONFIG_ARCH_ROCKCHIP policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_ARCH_S5PV210 policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7778 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7779 policy<{'armhf': 'y'}> +CONFIG_ARCH_UNIPHIER policy<{'armhf': 'y'}> +CONFIG_ARCH_WM8850 policy<{'armhf': 'n'}> +CONFIG_ARCH_ZX policy<{'armhf': 'y'}> +CONFIG_ARCH_ZYNQ policy<{'armhf': 'n'}> +CONFIG_ARM_THUMB policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2 policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH policy<{'armhf': 'n'}> +CONFIG_CACHE_TAUROS2 policy<{'armhf': 'y'}> +CONFIG_IWMMXT policy<{'armhf': 'y'}> +CONFIG_PJ4B_ERRATA_4742 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_430973 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_643719 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_720789 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754322 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754327 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_764369 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_775420 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_798181 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_773022 policy<{'armhf': 'y'}> + +# Menu: System Type >> Atmel SoCs >> Architecture: arm +CONFIG_ARCH_AT91 policy<{'armhf': 'n'}> + +# Menu: System Type >> Broadcom SoC Support >> Architecture: arm +CONFIG_ARCH_BCM policy<{'armhf': 'n'}> + +# Menu: System Type >> CLPS711X/EP721X/EP731X Implementations >> Architecture: arm + +# Menu: System Type >> CSR SiRF >> Architecture: arm +CONFIG_ARCH_SIRF policy<{'armhf': 'n'}> + +# Menu: System Type >> Cavium Networks CNS3XXX family >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Cortina Systems Gemini Implementations >> Architecture: arm + +# Menu: System Type >> Enable the L2x0 outer cache controller >> Architecture: arm +CONFIG_CACHE_L2X0 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_588369 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_727915 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_753970 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_769419 policy<{'armhf': 'y'}> + +# Menu: System Type >> Firmware options >> Architecture: arm +CONFIG_TRUSTED_FOUNDATIONS policy<{'armhf-generic': 'y'}> + +# Menu: System Type >> Footbridge Implementations >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family >> Architecture: arm +CONFIG_ARCH_MXC policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_IMX50 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX51 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX53 policy<{'armhf-generic': 'n'}> +CONFIG_SOC_IMX6Q policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6SL policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6SX policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6UL policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX7D policy<{'armhf-generic': 'y'}> +CONFIG_SOC_LS1021A policy<{'armhf-generic': 'n'}> +CONFIG_SOC_VF610 policy<{'armhf-generic': 'y'}> + +# Menu: System Type >> Freescale i.MX family >> Clocksource for scheduler clock >> Architecture: arm +CONFIG_VF_USE_ARM_GLOBAL_TIMER policy<{'armhf-generic': 'y'}> +CONFIG_VF_USE_PIT_TIMER policy<{'armhf-generic': 'n'}> + +# Menu: System Type >> Hisilicon platform type >> Architecture: arm +CONFIG_ARCH_HI3xxx policy<{'armhf': 'y'}> +CONFIG_ARCH_HIP01 policy<{'armhf': 'n'}> +CONFIG_ARCH_HIP04 policy<{'armhf': 'y'}> +CONFIG_ARCH_HIX5HD2 policy<{'armhf': 'y'}> + +# Menu: System Type >> IOP13XX Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP32x Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP33x Implementation Options >> Architecture: arm + +# Menu: System Type >> Integrator Options >> Architecture: arm + +# Menu: System Type >> Intel IXP4xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Gumstix Carrier/Expansion Board >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Motorola EZX Platform >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Keith und Koep Trizeps DIMM-Modules >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Keith und Koep Trizeps DIMM-Modules >> Select base board for Trizeps module >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Palm PDAs >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Toshiba e-series PDAs >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> display on pcm990 >> Architecture: arm + +# Menu: System Type >> Kendin/Micrel KS8695 Implementations >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support +# + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Architecture: arm +CONFIG_MMU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ARM_LPAE policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_CPU_ICACHE_DISABLE policy<{'armhf': 'n'}> +CONFIG_KUSER_HELPERS policy<{'armhf': 'y'}> +CONFIG_ARM_KERNMEM_PERMS policy<{'armhf': 'y'}> +# +CONFIG_ARM_KERNMEM_PERMS flag + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Renesas ARM SoCs >> Architecture: arm +CONFIG_ARCH_SHMOBILE_MULTI policy<{'armhf': 'y'}> +CONFIG_ARCH_EMEV2 policy<{'armhf': 'y'}> +CONFIG_ARCH_R7S72100 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A73A4 policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7740 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7790 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7791 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7793 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7794 policy<{'armhf': 'y'}> +CONFIG_ARCH_SH73A0 policy<{'armhf': 'y'}> +# +CONFIG_ARCH_R8A73A4 flag + +# Menu: System Type >> MMU-based Paged Memory Management Support >> ST-Ericsson U300 Series >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support >> ST-Ericsson U8500 Series >> Architecture: arm +CONFIG_ARCH_U8500 policy<{'armhf': 'n'}> + +# Menu: System Type >> MOXA ART SoC >> Architecture: arm + +# Menu: System Type >> Marvell Berlin SoCs >> Architecture: arm +CONFIG_ARCH_BERLIN policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2 policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2CD policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2Q policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell Dove Implementations >> Architecture: arm + +# Menu: System Type >> Marvell Engineering Business Unit (MVEBU) SoCs >> Architecture: arm +CONFIG_ARCH_MVEBU policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_370 policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_375 policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_38X policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_39X policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_XP policy<{'armhf': 'y'}> +CONFIG_MACH_DOVE policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell MV78xx0 Implementations >> Architecture: arm + +# Menu: System Type >> Marvell PXA168/910/MMP2 Implmentations >> Architecture: arm + +# Menu: System Type >> Mediatek MT65xx & MT81xx SoC >> Architecture: arm +CONFIG_ARCH_MEDIATEK policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MACH_MT6589 policy<{'armhf': 'y'}> +CONFIG_MACH_MT6592 policy<{'armhf': 'y'}> +CONFIG_MACH_MT8127 policy<{'armhf': 'y'}> +CONFIG_MACH_MT8135 policy<{'armhf': 'y'}> + +# Menu: System Type >> Multiple platform selection >> Architecture: arm +CONFIG_ARCH_MULTI_V6 policy<{'armhf': 'n'}> +CONFIG_ARCH_MULTI_V7 policy<{'armhf': 'y'}> + +# Menu: System Type >> NUC950 Machines >> Architecture: arm + +# Menu: System Type >> NUC960 Machines >> Architecture: arm + +# Menu: System Type >> NVIDIA Tegra >> Architecture: arm +CONFIG_ARCH_TEGRA policy<{'arm64': 'n', 'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_TEGRA_2x_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_3x_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_114_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_124_SOC policy<{'armhf-generic': 'y'}> + +# Menu: System Type >> NetX Implementations >> Architecture: arm + +# Menu: System Type >> Orion Implementations >> Architecture: arm + +# Menu: System Type >> Qualcomm Support >> Architecture: arm +CONFIG_ARCH_QCOM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_MSM8X60 policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8960 policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8974 policy<{'armhf': 'y'}> + +# Menu: System Type >> RealView platform type >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Cerf Flash available >> Architecture: arm + +# Menu: System Type >> SAMSUNG S3C24XX SoCs Support >> Architecture: arm + +# Menu: System Type >> SAMSUNG S3C24XX SoCs Support >> SAMSUNG S3C2410 >> Architecture: arm + +# Menu: System Type >> SAMSUNG S3C24XX SoCs Support >> SAMSUNG S3C2412 >> Architecture: arm + +# Menu: System Type >> SAMSUNG S3C24XX SoCs Support >> SAMSUNG S3C2440 >> Architecture: arm + +# Menu: System Type >> SMDK6410 >> Architecture: arm + +# Menu: System Type >> SMDK6410 >> SMDK6410 MMC/SD slot setup >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> Architecture: arm +CONFIG_PLAT_SPEAR policy<{'armhf': 'n'}> + +# Menu: System Type >> ST SPEAr Family >> ST SPEAr13xx >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> ST SPEAr13xx >> ST SPEAr3xx >> Architecture: arm + +# Menu: System Type >> ST-Ericsson Nomadik >> Architecture: arm + +# Menu: System Type >> STMicroelectronics Consumer Electronics SOCs >> Architecture: arm +CONFIG_ARCH_STI policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung Common options >> Architecture: arm +CONFIG_SAMSUNG_PM_CHECK policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> Architecture: arm +CONFIG_ARCH_EXYNOS policy<{'armhf': 'y'}> +CONFIG_ARCH_EXYNOS3 policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS4 >> Architecture: arm +CONFIG_ARCH_EXYNOS4 policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS5 >> Architecture: arm +CONFIG_ARCH_EXYNOS5 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5250 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5260 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5410 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5420 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5440 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5800 policy<{'armhf': 'y'}> +CONFIG_EXYNOS5420_MCPM policy<{'armhf': 'y'}> + +# Menu: System Type >> SuperH / SH-Mobile Driver Options + +# Menu: System Type >> Support ARM V7 processor >> Architecture: arm +CONFIG_CPU_V7 policy<{'armhf': 'y'}> +CONFIG_ARM_THUMBEE policy<{'armhf': 'y'}> +CONFIG_SWP_EMULATE policy<{'armhf': 'y'}> +CONFIG_CPU_BPREDICT_DISABLE policy<{'armhf': 'n'}> +CONFIG_VDSO policy<{'armhf': 'y'}> +CONFIG_ARM_DMA_MEM_BUFFERABLE policy<{'armhf': 'y'}> + +# Menu: System Type >> TI DaVinci Implementations >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Select peripherals connected to expander on UI board >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DaVinci 644x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> Select DA830/OMAP-L137/AM17x UI board peripheral >> Architecture: arm + +# Menu: System Type >> TI OMAP Common Features >> Architecture: arm +CONFIG_POWER_AVS_OMAP policy<{'armhf-generic': 'y'}> +CONFIG_POWER_AVS_OMAP_CLASS3 policy<{'armhf-generic': 'y'}> +CONFIG_OMAP_RESET_CLOCKS policy<{'armhf': 'y'}> +CONFIG_OMAP_32K_TIMER policy<{'armhf': 'y'}> +CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE policy<{'armhf-generic': 'n'}> +CONFIG_OMAP_DM_TIMER policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP PM layer selection >> Architecture: arm +CONFIG_OMAP_PM_NOOP policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP multiplexing support >> Architecture: arm +CONFIG_OMAP_MUX policy<{'armhf': 'y'}> +CONFIG_OMAP_MUX_DEBUG policy<{'armhf': 'n'}> +CONFIG_OMAP_MUX_WARNINGS policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> Architecture: arm +CONFIG_ARCH_OMAP3 policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_OMAP4 policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_OMAP5 policy<{'armhf': 'n'}> +CONFIG_SOC_AM33XX policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_AM43XX policy<{'armhf': 'n'}> +CONFIG_SOC_DRA7XX policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> TI OMAP2/3/4 Specific Features >> Architecture: arm +CONFIG_ARCH_OMAP2PLUS_TYPICAL policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_OMAP2_SDRC policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_REALTIME_COUNTER policy<{'armhf': 'y'}> +CONFIG_SOC_OMAP3430 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_TI81XX policy<{'armhf-generic': 'y'}> +CONFIG_MACH_OMAP_LDP policy<{'armhf-generic': 'y'}> +CONFIG_MACH_OMAP3517EVM policy<{'armhf-generic': 'n'}> +CONFIG_MACH_OMAP3_PANDORA policy<{'armhf-generic': 'y'}> +CONFIG_MACH_NOKIA_RX51 policy<{'armhf-generic': 'n'}> +CONFIG_OMAP3_SDRC_AC_TIMING policy<{'armhf-generic': 'n'}> + +# Menu: System Type >> TI OMAP1 specific features >> Architecture: arm + +# Menu: System Type >> TI OMAP1 specific features >> OMAP15xx Based System >> Architecture: arm + +# Menu: System Type >> TI OMAP1 specific features >> OMAP16xx Based System >> Architecture: arm +CONFIG_MACH_OMAP_GENERIC policy<{'armhf': 'y'}> + +# Menu: System Type >> Timer and clock configuration >> Architecture: arm +CONFIG_SHMOBILE_TIMER_HZ policy<{'armhf': '128'}> + +# Menu: System Type >> Versatile platform type >> Architecture: arm + +# Menu: System Type >> W90P910 Machines >> Architecture: arm + +# Menu: Ubuntu Supplied Third-Party Device Drivers + +# Menu: Virtualization +CONFIG_VIRTUALIZATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KVM policy<{'amd64': 'm', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'm', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_LGUEST policy<{'i386': 'n'}> +# + +# Menu: Virtualization >> Architecture: powerpc +CONFIG_KVM_BOOK3S_64 policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_HV policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_PR policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_HV_EXIT_TIMING policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_KVM_EXIT_TIMING policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_KVM_E500MC policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_MPIC policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_XICS policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Virtualization >> Architecture: s390 +CONFIG_PFAULT policy<{'s390x': 'y'}> +CONFIG_CMM_IUCV policy<{'s390x': 'y'}> +CONFIG_S390_HYPFS_FS policy<{'s390x': 'y'}> +CONFIG_S390_GUEST policy<{'s390x': 'y'}> + +# Menu: Virtualization >> KVM + +# Menu: Virtualization >> KVM >> Architecture: s390 +CONFIG_KVM_S390_UCONTROL policy<{'s390x': 'n'}> + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support >> Architecture: x86 +CONFIG_KVM_INTEL policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_KVM_AMD policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_KVM_MMU_AUDIT policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_KVM_DEVICE_ASSIGNMENT policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Virtualization >> Linux - VM Monitor Stream, base infrastructure >> Architecture: s390 +CONFIG_APPLDATA_BASE policy<{'s390x': 'y'}> +CONFIG_APPLDATA_MEM policy<{'s390x': 'm'}> +CONFIG_APPLDATA_OS policy<{'s390x': 'm'}> +CONFIG_APPLDATA_NET_SUM policy<{'s390x': 'm'}> + +# Menu: FOOTER + +# temporarily disabled options -- build failures. +#CONFIG_TI_CPSW p policy<(arch armel armhf &/ value n) | value m> flag +#CONFIG_USB_MUSB_DSPS p policy<(arch armel armhf &/ value n) | value m> flag +#CONFIG_LIS3L02DQ p policy<(arch armhf &/ value n) | value m> flag +#CONFIG_EZX_PCAP p policy<(arch armhf &/ value n) | value y> flag +#CONFIG_TOUCHSCREEN_EGALAX p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_TOUCHSCREEN_EETI p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_SENSORS_AK8975 p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_PPC_EPAPR_HV_BYTECHAN n flag note --- linux-4.4.0.orig/debian.master/config/arm64/config.common.arm64 +++ linux-4.4.0/debian.master/config/arm64/config.common.arm64 @@ -0,0 +1,462 @@ +# +# Config options for config.common.arm64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +# CONFIG_ARCH_TEGRA is not set +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_CMDLINE_PARTITION=y +CONFIG_CONFIGFS_FS=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRAMFS=m +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_BITREVERSE=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +# CONFIG_HPET is not set +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HUGETLB_PAGE=y +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +# CONFIG_I2C_SLAVE is not set +CONFIG_I6300ESB_WDT=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INPUT=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KVM=y +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_VX855=m +CONFIG_MII=y +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=128 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +# CONFIG_PINCTRL_BERLIN_BG2 is not set +# CONFIG_PINCTRL_BERLIN_BG2CD is not set +# CONFIG_PINCTRL_BERLIN_BG2Q is not set +# CONFIG_PINCTRL_MT8127 is not set +# CONFIG_PINCTRL_MT8135 is not set +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PROBE_EVENTS is not set +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SLIP=m +CONFIG_SMC91X=y +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_EMU10K1_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_SYS_HYPERVISOR=y +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +# CONFIG_UPROBES is not set +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VGASTATE=m +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_XEN=y +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/arm64/config.flavour.generic +++ linux-4.4.0/debian.master/config/arm64/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-4.4.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-4.4.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,451 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=y +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +# CONFIG_APM_EMULATION is not set +CONFIG_APPLICOM=m +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=y +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE="" +CONFIG_CMDLINE_PARTITION=y +CONFIG_CONFIGFS_FS=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRAMFS=m +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_DEV_FSL_CAAM_IMX=y +CONFIG_CRYPTO_DEV_FSL_CAAM_LE=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +CONFIG_EM_TIMER_STI=y +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_IBM_GXT4500=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +CONFIG_FONTS=y +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_TWL6040=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_BITREVERSE=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATION=y +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_SLAVE=y +CONFIG_I6300ESB_WDT=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_IMA=y +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_JFS_FS=m +CONFIG_JME=m +# CONFIG_JUMP_LABEL is not set +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_XZ is not set +CONFIG_KVM=y +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TMIO=y +CONFIG_MFD_VX855=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_BCH=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_NAND_OMAP_BCH_BUILD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=4 +# CONFIG_NR_ZONES_EXTENDED is not set +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=m +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +# CONFIG_PCCARD is not set +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHY_EXYNOS5250_USB2=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PINCTRL_BERLIN_BG2=y +CONFIG_PINCTRL_BERLIN_BG2CD=y +CONFIG_PINCTRL_BERLIN_BG2Q=y +CONFIG_PINCTRL_MT8127=y +CONFIG_PINCTRL_MT8135=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_REED_SOLOMON=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_TWL4030=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_SVW=m +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +CONFIG_SH_TIMER_CMT=y +CONFIG_SH_TIMER_MTU2=y +CONFIG_SH_TIMER_TMU=y +CONFIG_SLIP=m +CONFIG_SMC91X=m +CONFIG_SND=y +CONFIG_SND_DMAENGINE_PCM=y +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=y +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_TIMER=y +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=y +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UPROBES=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_FSL_MPH_DR_OF=m +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_VGASTATE=m +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +# CONFIG_XEN is not set +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y --- linux-4.4.0.orig/debian.master/config/armhf/config.flavour.generic +++ linux-4.4.0/debian.master/config/armhf/config.flavour.generic @@ -0,0 +1,25 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_ARCH_MXC=y +CONFIG_ARCH_OMAP3=y +CONFIG_ARCH_OMAP4=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARCH_TEGRA=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +# CONFIG_ARM_HIGHBANK_CPUIDLE is not set +# CONFIG_ARM_LPAE is not set +CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y +CONFIG_FORCE_MAX_ZONEORDER=12 +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_PGTABLE_LEVELS=2 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_REGULATOR_TWL4030=y +CONFIG_RTC_DRV_PCF8523=y +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_SOC_FSL_SSI=y +CONFIG_SND_SOC_IMX_AUDMUX=y +CONFIG_SND_SOC_SGTL5000=y +CONFIG_SOC_AM33XX=y +CONFIG_ZONE_DMA_FLAG=0 --- linux-4.4.0.orig/debian.master/config/armhf/config.flavour.generic-lpae +++ linux-4.4.0/debian.master/config/armhf/config.flavour.generic-lpae @@ -0,0 +1,25 @@ +# +# Config options for config.flavour.generic-lpae automatically generated by splitconfig.pl +# +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARM_ATAG_DTB_COMPAT is not set +CONFIG_ARM_HIGHBANK_CPUIDLE=y +CONFIG_ARM_LPAE=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_HUGETLB_PAGE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_SGTL5000=m +# CONFIG_SOC_AM33XX is not set +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/config.common.ports +++ linux-4.4.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-4.4.0.orig/debian.master/config/config.common.ubuntu +++ linux-4.4.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,9049 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_32BIT=y +CONFIG_3C515=m +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_60XX_WDT=m +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6PACK=m +CONFIG_6xx=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m +CONFIG_8723AU_AP_MODE=y +CONFIG_8723AU_BT_COEXIST=y +CONFIG_88EU_AP_MODE=y +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_AB3100_CORE=y +CONFIG_AB3100_OTP=m +# CONFIG_ACCESSIBILITY is not set +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACERHDF=m +CONFIG_ACER_WMI=m +# CONFIG_ACORN_PARTITION is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_ALS=m +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_EINJ=m +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BGRT=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_CCA_REQUIRED=y +CONFIG_ACPI_CMPC=m +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_CPPC_CPUFREQ=m +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_CPU_FREQ_PSS=y +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_EXTLOG=m +CONFIG_ACPI_FAN=y +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_HED=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_I2C_OPREGION=y +# CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ACPI_NFIT=m +# CONFIG_ACPI_NFIT_DEBUG is not set +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_PROCESSOR_IDLE=y +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_THERMAL_REL=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_WMI=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5755=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7298=m +CONFIG_AD7303=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7746=m +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD799X=m +CONFIG_AD8366=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +CONFIG_ADB_PMU=y +CONFIG_ADB_PMU_LED=y +CONFIG_ADE7753=m +CONFIG_ADE7754=m +CONFIG_ADE7758=m +CONFIG_ADE7759=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADF4350=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16204=m +CONFIG_ADIS16209=m +CONFIG_ADIS16220=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADIS16480=m +CONFIG_ADJD_S311=m +CONFIG_ADM8211=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVISE_SYSCALLS=y +CONFIG_ADXRS450=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AEABI=y +CONFIG_AFIUCV=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_ATI=m +CONFIG_AGP_EFFICEON=m +CONFIG_AGP_INTEL=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_UNINORTH=m +CONFIG_AGP_VIA=y +CONFIG_AHCI_CEVA=m +CONFIG_AHCI_IMX=y +CONFIG_AHCI_MVEBU=m +CONFIG_AHCI_QORIQ=m +CONFIG_AHCI_TEGRA=m +CONFIG_AHCI_XGENE=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIM_CDEV=m +CONFIG_AIM_NETWORK=m +CONFIG_AIM_SOUND=m +CONFIG_AIM_V4L2=m +CONFIG_AIO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_AK09911=m +CONFIG_AK8975=m +CONFIG_AL3320A=m +CONFIG_ALIENWARE_WMI=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALIM1535_WDT=m +CONFIG_ALIX=y +CONFIG_ALI_FIR=m +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_ALTERA_MBOX=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTIVEC=y +CONFIG_ALX=m +CONFIG_AM335X_CONTROL_USB=m +CONFIG_AM335X_PHY_USB=m +CONFIG_AMBA_PL08X=y +CONFIG_AMD8111_ETH=m +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_STATS=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_AMD_MCE_INJ=m +CONFIG_AMD_NB=y +CONFIG_AMD_NUMA=y +CONFIG_AMD_PHY=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMILO_RFKILL=m +# CONFIG_ANDROID is not set +CONFIG_ANON_INODES=y +CONFIG_ANSLCD=m +CONFIG_APB_TIMER=y +CONFIG_APDS9300=m +CONFIG_APDS9802ALS=m +CONFIG_APDS9960=m +CONFIG_APM=m +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_POWER=m +CONFIG_APPLDATA_BASE=y +CONFIG_APPLDATA_MEM=m +CONFIG_APPLDATA_NET_SUM=m +CONFIG_APPLDATA_OS=m +CONFIG_APPLE_AIRPORT=m +CONFIG_APPLE_GMUX=m +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AR5523=m +CONFIG_ARCH_ALPINE=y +# CONFIG_ARCH_AT91 is not set +CONFIG_ARCH_AXXIA=y +# CONFIG_ARCH_BCM is not set +CONFIG_ARCH_BCM_IPROC=y +CONFIG_ARCH_BERLIN=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +# CONFIG_ARCH_CLPS711X is not set +CONFIG_ARCH_CPU_PROBE_RELEASE=y +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +CONFIG_ARCH_EMEV2=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +# CONFIG_ARCH_EP93XX is not set +CONFIG_ARCH_EXYNOS=y +# CONFIG_ARCH_EXYNOS3 is not set +# CONFIG_ARCH_EXYNOS4 is not set +CONFIG_ARCH_EXYNOS5=y +# CONFIG_ARCH_EXYNOS7 is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_GEMINI is not set +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_BANDGAP=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y +CONFIG_ARCH_HAS_DMA_SET_COHERENT_MASK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_HAS_MMIO_FLUSH=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HI3xxx=y +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HIGHBANK=y +# CONFIG_ARCH_HIP01 is not set +CONFIG_ARCH_HIP04=y +CONFIG_ARCH_HISI=y +CONFIG_ARCH_HIX5HD2=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_TRYLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_TRYLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_KS8695 is not set +CONFIG_ARCH_LAYERSCAPE=y +# CONFIG_ARCH_LPC32XX is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEDIATEK=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_MESON=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +# CONFIG_ARCH_MMP is not set +CONFIG_ARCH_MSM8960=y +CONFIG_ARCH_MSM8974=y +CONFIG_ARCH_MSM8X60=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y +# CONFIG_ARCH_MV78XX0 is not set +CONFIG_ARCH_MVEBU=y +# CONFIG_ARCH_NETX is not set +CONFIG_ARCH_NR_GPIO=1024 +CONFIG_ARCH_OMAP=y +# CONFIG_ARCH_OMAP1 is not set +CONFIG_ARCH_OMAP2PLUS=y +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +# CONFIG_ARCH_ORION5X is not set +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_PXA is not set +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_R7S72100=y +# CONFIG_ARCH_R8A73A4 is not set +CONFIG_ARCH_R8A7740=y +CONFIG_ARCH_R8A7778=y +CONFIG_ARCH_R8A7779=y +CONFIG_ARCH_R8A7790=y +CONFIG_ARCH_R8A7791=y +CONFIG_ARCH_R8A7793=y +CONFIG_ARCH_R8A7794=y +CONFIG_ARCH_RCAR_GEN1=y +CONFIG_ARCH_RCAR_GEN2=y +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_RMOBILE=y +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +CONFIG_ARCH_SAVE_PAGE_KEYS=y +# CONFIG_ARCH_SEATTLE is not set +CONFIG_ARCH_SH73A0=y +CONFIG_ARCH_SHMOBILE=y +CONFIG_ARCH_SHMOBILE_MULTI=y +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_SOCFPGA is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPRD=y +# CONFIG_ARCH_STI is not set +CONFIG_ARCH_STRATIX10=y +# CONFIG_ARCH_SUNXI is not set +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +CONFIG_ARCH_SUPPORTS_FIRMWARE=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_TRUSTED_FOUNDATIONS=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_TEGRA_114_SOC=y +CONFIG_ARCH_TEGRA_124_SOC=y +CONFIG_ARCH_TEGRA_2x_SOC=y +CONFIG_ARCH_TEGRA_3x_SOC=y +CONFIG_ARCH_THUNDER=y +# CONFIG_ARCH_U8500 is not set +CONFIG_ARCH_UNIPHIER=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +# CONFIG_ARCH_VERSATILE is not set +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y +CONFIG_ARCH_VEXPRESS_DCSCB=y +CONFIG_ARCH_VEXPRESS_SPC=y +CONFIG_ARCH_VEXPRESS_TC2_PM=y +CONFIG_ARCH_VIRT=y +# CONFIG_ARCH_W90X900 is not set +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_FREEZER_CONTROL=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_ARCH_WM8850 is not set +CONFIG_ARCH_XGENE=y +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQ is not set +CONFIG_ARCH_ZYNQMP=y +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARC_EMAC=m +CONFIG_ARC_EMAC_CORE=m +CONFIG_ARM=y +CONFIG_ARM64=y +# CONFIG_ARM64_16K_PAGES is not set +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_834220=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_HW_AFDBM=y +# CONFIG_ARM64_LSE_ATOMICS is not set +CONFIG_ARM64_PAN=y +# CONFIG_ARM64_PTDUMP is not set +# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set +CONFIG_ARM64_VA_BITS=48 +# CONFIG_ARM64_VA_BITS_39 is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_ARMADA375_USBCLUSTER_PHY=y +CONFIG_ARMADA_370_CLK=y +CONFIG_ARMADA_370_XP_TIMER=y +CONFIG_ARMADA_375_CLK=y +CONFIG_ARMADA_38X_CLK=y +CONFIG_ARMADA_39X_CLK=y +CONFIG_ARMADA_THERMAL=y +CONFIG_ARMADA_XP_CLK=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_ARM_AMBA=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set +CONFIG_ARM_BIG_LITTLE_CPUFREQ=m +CONFIG_ARM_BIG_LITTLE_CPUIDLE=y +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y +CONFIG_ARM_CCI400_PORT_CTRL=y +CONFIG_ARM_CCI500_PMU=y +CONFIG_ARM_CCI_PMU=y +CONFIG_ARM_CCN=y +CONFIG_ARM_CHARLCD=y +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_DMA_USE_IOMMU=y +CONFIG_ARM_DT_BL_CPUFREQ=m +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_643719=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754322=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_773022=y +CONFIG_ARM_ERRATA_775420=y +CONFIG_ARM_ERRATA_798181=y +# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5_BUS_DEVFREQ is not set +CONFIG_ARM_EXYNOS_CPUIDLE=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GLOBAL_TIMER=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_ARM_HIGHBANK_CPUFREQ=m +CONFIG_ARM_HISI_ACPU_CPUFREQ=m +CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_ARM_KERNMEM_PERMS=y +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_MHU=m +# CONFIG_ARM_MODULE_PLTS is not set +CONFIG_ARM_MT8173_CPUFREQ=y +CONFIG_ARM_MVEBU_V7_CPUIDLE=y +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_PL172_MPMC=m +CONFIG_ARM_PMU=y +CONFIG_ARM_PSCI=y +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PTDUMP is not set +CONFIG_ARM_SCPI_CPUFREQ=m +CONFIG_ARM_SCPI_PROTOCOL=m +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_SMMU_V3=y +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_TEGRA124_CPUFREQ=m +CONFIG_ARM_TEGRA20_CPUFREQ=y +CONFIG_ARM_TEGRA_DEVFREQ=m +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ=m +CONFIG_ARM_VIRT_EXT=y +CONFIG_AS3935=m +CONFIG_ASN1=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_WMI=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_ASYNC_TX_DMA=y +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_ASYNC_XOR=m +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=m +CONFIG_ATA=y +CONFIG_ATAGS=y +CONFIG_ATAGS_PROC=y +CONFIG_ATA_ACPI=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATH10K=m +# CONFIG_ATH10K_DEBUG is not set +CONFIG_ATH10K_DEBUGFS=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_TRACING=y +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH6KL=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_ATH6KL_SDIO=m +# CONFIG_ATH6KL_TRACING is not set +CONFIG_ATH6KL_USB=m +CONFIG_ATH9K=m +CONFIG_ATH9K_AHB=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_DEBUGFS=y +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_STATION_STATISTICS=y +CONFIG_ATH9K_WOW=y +CONFIG_ATH_CARDS=m +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATL1=m +CONFIG_ATL1C=m +CONFIG_ATL1E=m +CONFIG_ATL2=m +CONFIG_ATMEL=m +# CONFIG_ATMEL_PIT is not set +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_ARCH=y +CONFIG_AUDIT_COMPAT_GENERIC=y +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_TREE=y +CONFIG_AUDIT_WATCH=y +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BR_FUSE is not set +CONFIG_AUFS_BR_HFSPLUS=y +# CONFIG_AUFS_BR_RAMFS is not set +# CONFIG_AUFS_DEBUG is not set +# CONFIG_AUFS_EXPORT is not set +# CONFIG_AUFS_FHSM is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +# CONFIG_AUFS_XATTR is not set +CONFIG_AURORA_NB8800=m +CONFIG_AUTO_ZRELADDR=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_ADC=m +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +CONFIG_B43=m +CONFIG_B43LEGACY=m +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PIO=y +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_B43_BCMA=y +CONFIG_B43_BCMA_PIO=y +# CONFIG_B43_BUSES_BCMA is not set +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_SSB is not set +# CONFIG_B43_DEBUG is not set +CONFIG_B43_HWRNG=y +CONFIG_B43_LEDS=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PIO=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_SSB=y +CONFIG_B44=m +CONFIG_B44_PCI=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_LP8788=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_PCF50633=m +CONFIG_BACKLIGHT_PM8941_WLED=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_SKY81452=m +CONFIG_BACKLIGHT_TPS65217=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BALLOON_COMPACTION=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATTERY_88PM860X=m +CONFIG_BATTERY_BQ27XXX=m +CONFIG_BATTERY_BQ27XXX_I2C=y +CONFIG_BATTERY_BQ27XXX_PLATFORM=y +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_BATTERY_DA9150=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_INTEL_MID=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_PMU=m +CONFIG_BATTERY_RT5033=m +CONFIG_BATTERY_RX51=m +CONFIG_BATTERY_SBS=m +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCACHE=m +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_DEBUG is not set +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCM7038_WDT=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_BCMA_DRIVER_PCI=y +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMGENET=m +CONFIG_BCM_NET_PHYLIB=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_VXLAN=y +# CONFIG_BEFS_DEBUG is not set +CONFIG_BERLIN2_ADC=m +CONFIG_BH1750=m +CONFIG_BIG_KEYS=y +CONFIG_BIG_LITTLE=y +CONFIG_BINARY_PRINTF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BINFMT_SCRIPT=y +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CMDLINE_PARSER=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_MD=y +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NULL_BLK=m +CONFIG_BLK_DEV_NVME_SCSI=y +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_XPRAM is not set +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BL_SWITCHER=y +CONFIG_BL_SWITCHER_DUMMY_IF=m +CONFIG_BMA180=m +CONFIG_BMAC=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +CONFIG_BMC150_MAGN=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=m +CONFIG_BMP280=m +CONFIG_BNA=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_BNX2X_VXLAN=y +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y +CONFIG_BOARD_TPCI200=m +CONFIG_BONDING=m +CONFIG_BOOKE=y +CONFIG_BOOKE_WDT=y +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=38 +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTX_TEXT is not set +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_BPF=y +CONFIG_BPF_EVENTS=y +CONFIG_BPF_JIT=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPQETHER=m +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMDBG is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PCIE=y +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_BRCMUTIL=m +CONFIG_BRCM_TRACING=y +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_NETFILTER=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BROADCOM_PHY=m +# CONFIG_BSC9131_RDB is not set +CONFIG_BSC9132_QDS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BTREE=y +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_DEBUG is not set +CONFIG_BTRFS_FS=m +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +CONFIG_BTT=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_ATH3K=m +CONFIG_BT_BCM=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_BREDR=y +CONFIG_BT_CMTP=m +CONFIG_BT_DEBUGFS=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_HS=y +CONFIG_BT_INTEL=m +CONFIG_BT_LE=y +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_QCA=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_RTL=m +# CONFIG_BT_SELFTEST is not set +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_BUILD_BIN2C=y +CONFIG_C101=m +CONFIG_C293_PCIE=y +CONFIG_C2PORT_DURAMAR_2150=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +CONFIG_CACHE_FEROCEON_L2=y +# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set +CONFIG_CACHE_L2X0=y +CONFIG_CACHE_TAUROS2=y +CONFIG_CACHE_UNIPHIER=y +# CONFIG_CAIF_DEBUG is not set +CONFIG_CAIF_HSI=m +CONFIG_CAIF_NETDEV=m +CONFIG_CAIF_SPI_SLAVE=m +# CONFIG_CAIF_SPI_SYNC is not set +CONFIG_CAIF_TTY=m +CONFIG_CAIF_USB=m +CONFIG_CAIF_VIRTIO=m +CONFIG_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_BCM=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_C_CAN_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_GRCAN=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_GW=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_LEDS=y +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MSCAN=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_RAW=m +CONFIG_CAN_RCAR=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m +CONFIG_CAN_TI_HECC=m +CONFIG_CAN_TSCAN1=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_XILINXCAN=m +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +CONFIG_CAPI_TRACE=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CARL9170=m +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_HWRNG=y +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_CASSINI=m +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23154=y +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m +CONFIG_CC10001_ADC=m +CONFIG_CCW=y +CONFIG_CCWGROUP=m +CONFIG_CCW_CONSOLE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_CC_STACKPROTECTOR_NONE is not set +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +CONFIG_CC_STACKPROTECTOR_STRONG=y +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_CFG80211=m +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_DA9150=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_QCOM_SMBB=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +CONFIG_CHARGER_TPS65217=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CHECK_STACK=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHSC_SCH=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_SMB311=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CISS_SCSI_TAPE=y +CONFIG_CLEANCACHE=y +CONFIG_CLKBLD_I8253=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_ACPI=y +CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y +CONFIG_CLKSRC_EXYNOS_MCT=y +CONFIG_CLKSRC_I8253=y +CONFIG_CLKSRC_IMX_GPT=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_OF=y +CONFIG_CLKSRC_PROBE=y +CONFIG_CLKSRC_QCOM=y +CONFIG_CLKSRC_TI_32K=y +CONFIG_CLKSRC_VERSATILE=y +CONFIG_CLK_QORIQ=y +CONFIG_CLK_SP810=y +CONFIG_CLK_TWL6040=m +CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +# CONFIG_CLOCK_THERMAL is not set +CONFIG_CLONE_BACKWARDS=y +CONFIG_CLONE_BACKWARDS2=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +CONFIG_CM36651=m +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_CMDLINE_FORCE is not set +CONFIG_CMM_IUCV=y +CONFIG_CMT_SPEECH=m +CONFIG_CNIC=m +CONFIG_CODA_FS=m +# CONFIG_CODE_PATCHING_SELFTEST is not set +CONFIG_COMEDI=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADDI_WATCHDOG=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAC02=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DAS800=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_ISADMA=m +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_MULTIQ3=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_NI_LABPC_ISADMA=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_TIOCMD=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_SERIAL2002=m +CONFIG_COMEDI_SSV_DNP=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMMON_CLK=y +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_COMMON_CLK_CDCE925=m +CONFIG_COMMON_CLK_HI6220=y +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_MAX77802=m +CONFIG_COMMON_CLK_MAX_GEN=y +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +# CONFIG_COMMON_CLK_PXA is not set +CONFIG_COMMON_CLK_QCOM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_COMMON_CLK_SAMSUNG=y +CONFIG_COMMON_CLK_SCPI=m +CONFIG_COMMON_CLK_SI514=m +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_COMMON_CLK_WM831X=m +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +CONFIG_COMPACTION=y +CONFIG_COMPAL_LAPTOP=m +CONFIG_COMPAT=y +CONFIG_COMPAT_BINFMT_ELF=y +# CONFIG_COMPAT_BRK is not set +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_COMPAT_OLD_SIGACTION=y +# CONFIG_COMPAT_VDSO is not set +# CONFIG_COMPILE_TEST is not set +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +CONFIG_CORENET_GENERIC=y +# CONFIG_CORESIGHT is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_COSA=m +CONFIG_CP15_BARRIER_EMULATION=y +# CONFIG_CPA_DEBUG is not set +CONFIG_CPM=y +CONFIG_CPM2=y +CONFIG_CPU5_WDT=m +CONFIG_CPUFREQ_DT=y +CONFIG_CPUSETS=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_MAPLE=y +CONFIG_CPU_FREQ_PMAC=y +CONFIG_CPU_FREQ_PMAC64=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_HAS_ASID=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PJ4=y +CONFIG_CPU_PJ4B=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRC16=y +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_COMPILE="" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_ABLK_HELPER=m +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_AES_ARM=m +# CONFIG_CRYPTO_AES_ARM64_CE is not set +# CONFIG_CRYPTO_AES_ARM64_CE_BLK is not set +# CONFIG_CRYPTO_AES_ARM64_CE_CCM is not set +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRYPTO_AES_ARM_CE=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_AES_S390=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_AKCIPHER=m +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +# CONFIG_CRYPTO_CRC32_ARM64 is not set +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_DES_S390=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=m +# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 +CONFIG_CRYPTO_DEV_FSL_CAAM_JR=m +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +CONFIG_CRYPTO_DEV_MV_CESA=m +CONFIG_CRYPTO_DEV_MXS_DCP=m +CONFIG_CRYPTO_DEV_NX=y +CONFIG_CRYPTO_DEV_NX_COMPRESS=m +CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m +CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m +CONFIG_CRYPTO_DEV_NX_ENCRYPT=m +CONFIG_CRYPTO_DEV_OMAP_AES=m +CONFIG_CRYPTO_DEV_OMAP_DES=m +CONFIG_CRYPTO_DEV_OMAP_SHAM=m +CONFIG_CRYPTO_DEV_PADLOCK=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_S5P=m +CONFIG_CRYPTO_DEV_SAHARA=m +CONFIG_CRYPTO_DEV_TALITOS=m +CONFIG_CRYPTO_DEV_TALITOS2=y +CONFIG_CRYPTO_DEV_VMX=y +CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_GHASH_S390=m +CONFIG_CRYPTO_GLUE_HELPER_X86=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_JITTERENTROPY=m +CONFIG_CRYPTO_KEYWRAP=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_MCRYPTD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MD5_PPC=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m +CONFIG_CRYPTO_RSA=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_586=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_SHA1_ARM_CE=m +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_SHA1_MB=m +CONFIG_CRYPTO_SHA1_PPC=m +CONFIG_CRYPTO_SHA1_S390=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM=m +CONFIG_CRYPTO_SHA256_S390=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM=m +CONFIG_CRYPTO_SHA512_S390=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SKEIN=y +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_586=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_ZLIB=m +# CONFIG_CS5535_MFGPT is not set +CONFIG_CS89x0=m +CONFIG_CS89x0_PLATFORM=y +CONFIG_CTCM=m +CONFIG_CUSE=m +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_CXL=m +CONFIG_CXLFLASH=m +CONFIG_CX_ECAT=m +CONFIG_CYCLADES=m +CONFIG_CYPRESS_FIRMWARE=m +# CONFIG_CYZ_INTR is not set +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9062_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9150_GPADC=m +CONFIG_DASD=m +CONFIG_DASD_DIAG=m +CONFIG_DASD_ECKD=m +CONFIG_DASD_EER=y +CONFIG_DASD_FBA=m +CONFIG_DASD_PROFILE=y +CONFIG_DAVICOM_PHY=m +CONFIG_DCA=m +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DCB=y +CONFIG_DCDBAS=m +CONFIG_DCSSBLK=m +CONFIG_DDR=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_DE4X5=m +CONFIG_DEBUGGER=y +# CONFIG_DEBUG_ALIGN_RODATA is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLK_CGROUP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +CONFIG_DEBUG_IMX_UART_PORT=1 +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_DWARF4=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_LL is not set +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_DEBUG_UART_8250 is not set +# CONFIG_DEBUG_UART_BCM63XX is not set +# CONFIG_DEBUG_USER is not set +CONFIG_DEBUG_VF_UART_PORT=1 +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_WX is not set +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_XZ=y +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DEFAULT_IO_DELAY_TYPE=1 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="apparmor" +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBTN=m +CONFIG_DELL_RBU=m +CONFIG_DELL_SMO8800=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU is not set +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_DEVKMEM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DEV_COREDUMP=y +CONFIG_DE_AOC=y +CONFIG_DGAP=m +CONFIG_DGNC=m +CONFIG_DHT11=m +CONFIG_DIAG288_WATCHDOG=m +CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m +CONFIG_DISPLAY_CONNECTOR_DVI=m +CONFIG_DISPLAY_CONNECTOR_HDMI=y +CONFIG_DISPLAY_ENCODER_OPA362=m +CONFIG_DISPLAY_ENCODER_TFP410=m +CONFIG_DISPLAY_ENCODER_TPD12S015=y +CONFIG_DISPLAY_PANEL_DPI=m +CONFIG_DISPLAY_PANEL_DSI_CM=m +CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m +CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m +CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m +CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m +CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m +CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DM9000=m +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +CONFIG_DM9102=m +# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMAR_TABLE=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ACPI=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_CMA is not set +CONFIG_DMA_ENGINE=y +CONFIG_DMA_ENGINE_RAID=y +CONFIG_DMA_OF=y +CONFIG_DMA_OMAP=y +CONFIG_DMI=y +CONFIG_DMIID=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_DMI_SYSFS=m +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_BUFIO=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_CLEANER=m +CONFIG_DM_CACHE_MQ=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +CONFIG_DM_DELAY=m +CONFIG_DM_ERA=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_RAID=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_SWITCH=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DOUBLEFAULT=y +CONFIG_DOVE_CLK=y +CONFIG_DOVE_THERMAL=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +# CONFIG_DPM_WATCHDOG is not set +CONFIG_DQL=y +CONFIG_DRA752_THERMAL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM_AMDGPU=m +# CONFIG_DRM_AMDGPU_CIK is not set +CONFIG_DRM_AMDGPU_USERPTR=y +CONFIG_DRM_ARMADA=m +CONFIG_DRM_AST=m +CONFIG_DRM_ATMEL_HLCDC=m +# CONFIG_DRM_BOCHS is not set +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DW_HDMI=m +CONFIG_DRM_DW_HDMI_AHB_AUDIO=m +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS5433_DECON=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_EXYNOS_DSI=y +# CONFIG_DRM_EXYNOS_FIMD is not set +# CONFIG_DRM_EXYNOS_G2D is not set +CONFIG_DRM_EXYNOS_IOMMU=y +# CONFIG_DRM_EXYNOS_IPP is not set +CONFIG_DRM_EXYNOS_MIC=y +# CONFIG_DRM_EXYNOS_VIDI is not set +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FSL_DCU=m +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I810=m +CONFIG_DRM_I915=m +# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set +CONFIG_DRM_IMX=m +CONFIG_DRM_IMX_FB_HELPER=m +CONFIG_DRM_IMX_HDMI=m +CONFIG_DRM_IMX_IPUV3=m +CONFIG_DRM_IMX_LDB=m +CONFIG_DRM_IMX_PARALLEL_DISPLAY=m +CONFIG_DRM_IMX_TVE=m +CONFIG_DRM_KMS_CMA_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MEDFIELD=y +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_MSM=m +CONFIG_DRM_MSM_DSI=y +CONFIG_DRM_MSM_DSI_20NM_PHY=y +CONFIG_DRM_MSM_DSI_28NM_PHY=y +CONFIG_DRM_MSM_DSI_PLL=y +CONFIG_DRM_MSM_REGISTER_LOGGING=y +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_NXP_PTN3460=m +# CONFIG_DRM_OMAP is not set +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_LG_LG4573=m +CONFIG_DRM_PANEL_SAMSUNG_LD9040=m +CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PARADE_PS8622=m +CONFIG_DRM_QXL=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_UMS is not set +# CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_HDMI=y +CONFIG_DRM_RCAR_LVDS=y +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SHMOBILE=m +CONFIG_DRM_SIS=m +# CONFIG_DRM_STI is not set +CONFIG_DRM_TDFX=m +CONFIG_DRM_TEGRA=m +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_FBDEV=y +CONFIG_DRM_TEGRA_STAGING=y +CONFIG_DRM_TILCDC=m +CONFIG_DRM_TILCDC_SLAVE_COMPAT=y +CONFIG_DRM_TTM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VIA=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y +CONFIG_DS1682=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DTC=y +CONFIG_DTL=y +CONFIG_DTLK=m +CONFIG_DT_IDLE_STATES=y +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_AS102=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET_PATCH=m +# CONFIG_DVB_C8SECTPFE is not set +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_CXD2099=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_DRXK=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_HOPPER=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NET=y +CONFIG_DVB_NETUP_UNIDVB=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_DVB_PLL=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S921=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_SP2=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_TC90522=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_IPQ806X=m +CONFIG_DWMAC_LPC18XX=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SOCFPGA=m +CONFIG_DWMAC_STI=m +CONFIG_DWMAC_SUNXI=m +CONFIG_DW_APB_ICTL=y +CONFIG_DW_APB_TIMER=y +CONFIG_DW_APB_TIMER_OF=y +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC_PCI=m +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +# CONFIG_E200 is not set +CONFIG_E500=y +# CONFIG_E5500_CPU is not set +# CONFIG_E6500_CPU is not set +CONFIG_EADM_SCH=m +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_EFI=y +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_EDAC=y +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_AMD8111=m +CONFIG_EDAC_AMD8131=m +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_CPC925=m +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_HIGHBANK_L2=m +CONFIG_EDAC_HIGHBANK_MC=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_IE31200=m +# CONFIG_EDAC_LEGACY_SYSFS is not set +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_MPC85XX=m +CONFIG_EDAC_PASEMI=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC_X38=m +CONFIG_EDAC_XGENE=m +CONFIG_EDD=y +CONFIG_EDD_OFF=y +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +CONFIG_EEH=y +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFI=y +CONFIG_EFIVAR_FS=y +CONFIG_EFI_ARMSTUB=y +CONFIG_EFI_ESRT=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_MIXED=y +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_PARTITION=y +# CONFIG_EFI_PGT_DUMP is not set +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_STUB=y +CONFIG_EFI_VARS=y +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EHEA=y +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EISA_PCI_EISA=y +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_EL3=m +CONFIG_ELECTRA_CF=m +CONFIG_ELF_CORE=y +CONFIG_EMAC_ROCKCHIP=m +# CONFIG_EMBEDDED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCRYPTED_KEYS=y +CONFIG_ENCX24J600=m +CONFIG_ENIC=m +CONFIG_EPAPR_PARAVIRT=y +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_ET131X=m +CONFIG_ETHERNET=y +CONFIG_EUROTECH_WDT=m +CONFIG_EVENTFD=y +CONFIG_EVENT_TRACING=y +CONFIG_EVM=y +CONFIG_EVM_ATTR_FSUUID=y +CONFIG_EVM_EXTRA_SMACK_XATTRS=y +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_ENCRYPTION=m +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_ENCRYPTION=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX77843=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS5420_MCPM=y +CONFIG_EXYNOS_ADC=m +CONFIG_EXYNOS_CPU_SUSPEND=y +CONFIG_EXYNOS_IOMMU=y +# CONFIG_EXYNOS_IOMMU_DEBUG is not set +CONFIG_EXYNOS_MIPI_DSI=y +CONFIG_EXYNOS_THERMAL=y +CONFIG_EXYNOS_VIDEO=y +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=m +CONFIG_EZX_PCAP=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS_ENCRYPTION=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_XATTR=y +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_F2FS_STAT_FS=y +CONFIG_F71808E_WDT=m +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_FA_DUMP=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_3DFX_I2C is not set +CONFIG_FB_ARC=m +CONFIG_FB_ARK=m +CONFIG_FB_ARMCLCD=y +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_AUO_K1900=m +CONFIG_FB_AUO_K1901=m +CONFIG_FB_AUO_K190X=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BROADSHEET=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CMDLINE=y +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_DA8XX=m +CONFIG_FB_DDC=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +CONFIG_FB_FLEX=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_FSL_DIU=m +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_GEODE_LX=m +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_HYPERV=m +CONFIG_FB_I740=m +CONFIG_FB_I810=m +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_IMX=m +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_KYRO=m +CONFIG_FB_LE80578=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_MB862XX_LIME is not set +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_METRONOME=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_MX3=y +CONFIG_FB_MXS=m +CONFIG_FB_N411=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_BACKLIGHT=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_OF=y +CONFIG_FB_OMAP2=m +# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set +CONFIG_FB_OMAP2_NUM_FBS=3 +CONFIG_FB_OPENCORES=m +CONFIG_FB_PLATINUM=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_PM3=m +CONFIG_FB_PS3=y +CONFIG_FB_PS3_DEFAULT_SIZE_M=9 +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_BACKLIGHT=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_S3C=m +# CONFIG_FB_S3C_DEBUG_REGWRITE is not set +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SH_MOBILE_HDMI=m +CONFIG_FB_SH_MOBILE_LCDC=m +CONFIG_FB_SH_MOBILE_MERAM=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM712=m +CONFIG_FB_SM750=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m +CONFIG_FB_TFT_ILI9163=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_ST7789V=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VALKYRIE=y +CONFIG_FB_VESA=y +CONFIG_FB_VGA16=m +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VT8623=m +CONFIG_FB_XGI=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_FEC=y +# CONFIG_FENCE_TRACE is not set +CONFIG_FHANDLE=y +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +CONFIG_FIQ=y +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_SERIAL=m +CONFIG_FIRMWARE_EDID=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_FLATMEM=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_FM10K=m +CONFIG_FM10K_VXLAN=y +CONFIG_FMC_CHARDEV=m +CONFIG_FMC_FAKEDEV=m +CONFIG_FMC_TRIVIAL=m +CONFIG_FMC_WRITE_EEPROM=m +# CONFIG_FONT_10x18 is not set +CONFIG_FONT_6x10=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_SUN8x16 is not set +CONFIG_FONT_SUPPORT=y +CONFIG_FORCEDETH=m +CONFIG_FPGA=m +CONFIG_FPGA_MGR_ZYNQ_FPGA=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAME_POINTER=y +CONFIG_FRAME_VECTOR=y +CONFIG_FREEZER=y +CONFIG_FRONTSWAP=y +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_FSCACHE_STATS=y +CONFIG_FSL_BOOKE=y +CONFIG_FSL_CORENET_CF=m +CONFIG_FSL_DMA=m +CONFIG_FSL_EDMA=m +CONFIG_FSL_EMB_PERFMON=y +CONFIG_FSL_EMB_PERF_EVENT=y +CONFIG_FSL_EMB_PERF_EVENT_E500=y +CONFIG_FSL_HV_MANAGER=m +CONFIG_FSL_IFC=y +CONFIG_FSL_LBC=y +CONFIG_FSL_MC_BUS=m +# CONFIG_FSL_PAMU is not set +CONFIG_FSL_PCI=y +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_RIO=y +CONFIG_FSL_SOC=y +CONFIG_FSL_SOC_BOOKE=y +# CONFIG_FSL_ULI1575 is not set +CONFIG_FSL_XGMAC_MDIO=y +CONFIG_FSNOTIFY=y +CONFIG_FS_DAX=y +CONFIG_FS_ENET=m +CONFIG_FS_ENET_HAS_FCC=y +CONFIG_FS_ENET_HAS_SCC=y +CONFIG_FS_ENET_MDIO_FCC=m +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FTGMAC100=m +CONFIG_FTL=m +CONFIG_FTMAC100=m +CONFIG_FTRACE=y +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_SYSCALLS=y +# CONFIG_FTR_FIXUP_SELFTEST is not set +CONFIG_FUJITSU_ES=m +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_FUJITSU_TABLET=m +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUSE_FS=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FWTTY_MAX_CARD_PORTS=32 +CONFIG_FWTTY_MAX_TOTAL_PORTS=64 +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_GACT_PROB=y +CONFIG_GADGET_UAC1=y +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GARP=m +CONFIG_GART_IOMMU=y +# CONFIG_GCOV_KERNEL is not set +CONFIG_GDB_SCRIPTS=y +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_NVRAM=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_PINCONF=y +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_TIME_VSYSCALL_OLD=y +CONFIG_GENERIC_TRACER=y +CONFIG_GENEVE=m +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 +CONFIG_GEOS=y +# CONFIG_GE_FPGA is not set +# CONFIG_GE_IMP3A is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIANFAR=m +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_GP2AP020A00F=m +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_104_IDIO_16=m +CONFIG_GPIO_74X164=m +CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_AMDPT=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_CRYSTAL_COVE=m +CONFIG_GPIO_CS5535=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_DWAPB=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_INTEL_MID=y +CONFIG_GPIO_INTEL_PMIC=y +CONFIG_GPIO_IT87=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_LYNXPOINT=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_MSIC=y +CONFIG_GPIO_MVEBU=y +CONFIG_GPIO_MXC=y +CONFIG_GPIO_OMAP=y +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_PCH=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RCAR=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_SH_PFC=y +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +CONFIG_GPIO_SYSCON=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TIMBERDALE=y +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_UCB1400=m +CONFIG_GPIO_VF610=y +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WATCHDOG=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=m +CONFIG_GPIO_XILINX=y +CONFIG_GPIO_ZEVIO=y +CONFIG_GPIO_ZX=y +CONFIG_GPIO_ZYNQ=m +CONFIG_GRACE_PERIOD=m +CONFIG_GREENASIA_FF=y +CONFIG_GS_FPGABOOT=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_KMEMCHECK=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_COPY_THREAD_TLS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_BUGVERBOSE=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUTEX_CMPXCHG=y +CONFIG_HAVE_GENERIC_RCU_GUP=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_IMX_ANATOP=y +CONFIG_HAVE_IMX_GPC=y +CONFIG_HAVE_IMX_MMDC=y +CONFIG_HAVE_IMX_SRC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_LIVEPATCH=y +CONFIG_HAVE_MARCH_Z10_FEATURES=y +# CONFIG_HAVE_MARCH_Z13_FEATURES is not set +CONFIG_HAVE_MARCH_Z196_FEATURES=y +CONFIG_HAVE_MARCH_Z900_FEATURES=y +CONFIG_HAVE_MARCH_Z990_FEATURES=y +CONFIG_HAVE_MARCH_Z9_109_FEATURES=y +CONFIG_HAVE_MARCH_ZEC12_FEATURES=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y +CONFIG_HAVE_MEMORYLESS_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_S3C2410_I2C=y +CONFIG_HAVE_S3C2410_WATCHDOG=y +CONFIG_HAVE_S3C_RTC=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_UID16=y +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_HCALL_STATS is not set +CONFIG_HDC100X=m +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_X25=m +CONFIG_HDMI=y +CONFIG_HDM_DIM2=m +CONFIG_HDM_I2C=m +CONFIG_HDM_USB=m +CONFIG_HDQ_MASTER_OMAP=m +# CONFIG_HEADERS_CHECK is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +# CONFIG_HERMES_PRISM is not set +# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set +CONFIG_HFI1_VERBS_31BIT_PSN=y +CONFIG_HFSPLUS_FS_POSIX_ACL=y +CONFIG_HI8435=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HID=m +CONFIG_HIDRAW=y +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CORSAIR=m +CONFIG_HID_CP2112=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GENERIC=m +CONFIG_HID_GFRM=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GT683R=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PID=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_RMI=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_HID_SENSOR_PRESS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WACOM=m +CONFIG_HID_WALTOP=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HIGHMEM=y +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHPTE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_HIP04_ETH=m +# CONFIG_HIPPI is not set +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_BKM_A4T=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_TELES_CS=m +CONFIG_HISAX_W6692=y +CONFIG_HISI_THERMAL=m +CONFIG_HIX5HD2_GMAC=m +CONFIG_HMC6352=m +CONFIG_HMC_DRV=m +CONFIG_HNS=m +CONFIG_HNS_DSAF=m +CONFIG_HNS_ENET=m +CONFIG_HNS_MDIO=m +CONFIG_HOLTEK_FF=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTESS_SV11=m +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HOTPLUG_PCI_S390=y +CONFIG_HP100=m +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HPET_TIMER=y +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_HP_ACCEL=m +CONFIG_HP_WATCHDOG=m +CONFIG_HP_WIRELESS=m +CONFIG_HP_WMI=m +CONFIG_HSA_AMD=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HSU_DMA=m +CONFIG_HSU_DMA_PCI=m +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HTU21=m +CONFIG_HT_IRQ=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y +CONFIG_HVCS=m +CONFIG_HVC_CONSOLE=y +# CONFIG_HVC_DCC is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_IUCV=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +CONFIG_HVC_UDBG=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HV_PERF_CTRS=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HWPOISON_INJECT=m +CONFIG_HWSPINLOCK=m +CONFIG_HWSPINLOCK_OMAP=m +CONFIG_HWSPINLOCK_QCOM=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_EXYNOS=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_IPROC_RNG200=m +CONFIG_HW_RANDOM_MSM=m +CONFIG_HW_RANDOM_OMAP=m +CONFIG_HW_RANDOM_OMAP3_ROM=m +CONFIG_HW_RANDOM_PASEMI=m +CONFIG_HW_RANDOM_POWERNV=m +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_TPM=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XGENE=m +CONFIG_HYPERV=m +CONFIG_HYPERVISOR_GUEST=y +CONFIG_HYPERV_BALLOON=m +CONFIG_HYPERV_KEYBOARD=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_UTILS=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +# CONFIG_HZ_200 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +CONFIG_HZ_FIXED=0 +# CONFIG_HZ_PERIODIC is not set +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_AXXIA=m +CONFIG_I2C_BCM2048=m +CONFIG_I2C_BCM_IPROC=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CADENCE=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CPM=m +CONFIG_I2C_CROS_EC_TUNNEL=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_EMEV2=m +CONFIG_I2C_EXYNOS5=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HID=m +CONFIG_I2C_HIX5HD2=m +CONFIG_I2C_HYDRA=m +CONFIG_I2C_I801=m +CONFIG_I2C_IMX=y +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_MESON=m +CONFIG_I2C_MPC=m +CONFIG_I2C_MT65XX=m +CONFIG_I2C_MUX=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_MV64XXX=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NOMADIK=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_OMAP=y +CONFIG_I2C_OPAL=y +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PASEMI=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_POWERMAC=y +# CONFIG_I2C_PXA_PCI is not set +CONFIG_I2C_QUP=m +CONFIG_I2C_RCAR=m +CONFIG_I2C_RIIC=m +CONFIG_I2C_RK3X=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_S3C2410=y +CONFIG_I2C_SCMI=m +CONFIG_I2C_SH_MOBILE=m +CONFIG_I2C_SI470X=m +CONFIG_I2C_SI4713=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_SLAVE_EEPROM=m +CONFIG_I2C_SMBUS=m +CONFIG_I2C_STUB=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TEGRA=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_UNIPHIER=m +CONFIG_I2C_UNIPHIER_F=m +CONFIG_I2C_VERSATILE=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VIPERBOARD=m +CONFIG_I2C_XGENE_SLIMPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_I40E_DCB=y +CONFIG_I40E_FCOE=y +CONFIG_I40E_VXLAN=y +CONFIG_I7300_IDLE=m +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_I8253_LOCK=y +CONFIG_I8K=m +# CONFIG_IA32_AOUT is not set +CONFIG_IA32_EMULATION=y +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMVETH=m +CONFIG_IBMVIO=y +CONFIG_IBMVNIC=m +CONFIG_IBM_ASM=m +CONFIG_IBM_BSR=m +# CONFIG_IBM_EMAC_EMAC4 is not set +# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set +# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_EMAC_RGMII is not set +# CONFIG_IBM_EMAC_TAH is not set +# CONFIG_IBM_EMAC_ZMII is not set +CONFIG_IBM_PARTITION=y +CONFIG_IBM_RTL=m +CONFIG_ICPLUS_PHY=m +CONFIG_ICS932S401=m +CONFIG_ICST=y +# CONFIG_IDE is not set +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_IDLE_PAGE_TRACKING=y +CONFIG_IE6XX_WDT=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_AT86RF230_DEBUGFS=y +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_IFB=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IGB_DCA=y +CONFIG_IGB_HWMON=y +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_MS_SENSORS_I2C=m +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_SIMPLE_DUMMY=m +# CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +# CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_IIO_ST_PRESS=m +CONFIG_IIO_ST_PRESS_I2C=m +CONFIG_IIO_ST_PRESS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_TRIGGERED_BUFFER=m +CONFIG_IIO_TRIGGERED_EVENT=m +# CONFIG_IKCONFIG is not set +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +# CONFIG_IMA_DEFAULT_HASH_WP512 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_LSM_RULES=y +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_SIG_TEMPLATE is not set +# CONFIG_IMA_TEMPLATE is not set +CONFIG_IMA_TRUSTED_KEYRING=y +CONFIG_IMX2_WDT=m +CONFIG_IMX_DMA=m +CONFIG_IMX_IPUV3_CORE=m +CONFIG_IMX_SDMA=m +CONFIG_IMX_THERMAL=m +CONFIG_IMX_WEIM=y +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_LRO=y +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EHCA=m +CONFIG_INFINIBAND_HFI1=m +CONFIG_INFINIBAND_IPATH=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_TRYLOCK=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_TRYLOCK=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_INOTIFY_USER=y +CONFIG_INPUT_88PM80X_ONKEY=m +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ADBHID=y +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_APMPOWER=m +CONFIG_INPUT_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_TILT_POLLED=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_IMS_PCU=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +CONFIG_INPUT_PALMAS_PWRBUTTON=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_PM8941_PWRKEY=m +CONFIG_INPUT_PM8XXX_VIBRATOR=m +CONFIG_INPUT_PMIC8XXX_PWRKEY=m +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m +CONFIG_INPUT_YEALINK=m +CONFIG_INSTRUCTION_DECODER=y +CONFIG_INT340X_THERMAL=m +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEL_GTT=y +CONFIG_INTEL_IDLE=y +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_INTEL_IOMMU_SVM=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MENLOW=m +CONFIG_INTEL_MFLD_THERMAL=m +CONFIG_INTEL_MIC_BUS=m +CONFIG_INTEL_MIC_CARD=m +CONFIG_INTEL_MIC_HOST=m +CONFIG_INTEL_MIC_X100_DMA=m +CONFIG_INTEL_MID_POWER_BUTTON=m +CONFIG_INTEL_MID_PTI=m +CONFIG_INTEL_MID_WATCHDOG=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_PCH_THERMAL=m +CONFIG_INTEL_PMC_IPC=m +CONFIG_INTEL_POWERCLAMP=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_INTEL_SCU_WATCHDOG=y +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_TELEMETRY=m +CONFIG_INTEL_TH=m +# CONFIG_INTEL_TH_DEBUG is not set +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_PTI=m +CONFIG_INTEL_TH_STH=m +CONFIG_INTEL_TXT=y +CONFIG_INTERVAL_TREE=y +CONFIG_INTERVAL_TREE_TEST=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOMMU_DMA=y +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_IO_PGTABLE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_IOMMU_STRESS is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSF_MBI=y +CONFIG_IOSF_MBI_DEBUG=y +# CONFIG_IO_DELAY_0X80 is not set +CONFIG_IO_DELAY_0XED=y +# CONFIG_IO_DELAY_NONE is not set +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +# CONFIG_IO_DELAY_UDELAY is not set +CONFIG_IO_EVENT_IRQ=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IPC_NS=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +# CONFIG_IPIC is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWERNV=m +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMMU_VMSA=y +CONFIG_IPPP_FILTER=y +CONFIG_IPQ_GCC_806X=m +CONFIG_IPQ_LCC_806X=m +CONFIG_IPV6=y +CONFIG_IPV6_GRE=m +CONFIG_IPV6_ILA=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPVLAN=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPWIRELESS=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_BOOTP is not set +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_RARP is not set +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SH_TAB_BITS=8 +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_DEBUG is not set +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRQCHIP=y +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_BYPASS_MANAGER=m +CONFIG_IRQ_CROSSBAR=y +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_REMAP=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_WORK=y +CONFIG_IRTTY_SIR=m +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_HIX5HD2=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_MESON=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_XMP_DECODER=m +CONFIG_ISAPNP=y +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ISCSI_IBFT=m +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=y +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +CONFIG_ISI=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_ISL29125=m +CONFIG_ISO9660_FS=m +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_ITCO_WDT=m +CONFIG_ITG3200=m +CONFIG_IUCV=y +CONFIG_IWL3945=m +CONFIG_IWL4965=m +CONFIG_IWLDVM=m +CONFIG_IWLEGACY=m +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLEGACY_DEBUGFS=y +CONFIG_IWLMVM=m +CONFIG_IWLWIFI=m +# CONFIG_IWLWIFI_BCAST_FILTERING is not set +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_OPMODE_MODULAR=y +# CONFIG_IWLWIFI_UAPSD is not set +CONFIG_IWMMXT=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_VXLAN=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JSA1212=m +CONFIG_K3_DMA=m +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KASAN is not set +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_DEFAULT_ENABLE=0x1 +CONFIG_KDB_KEYBOARD=y +CONFIG_KEMPLD_WDT=m +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y +CONFIG_KERNFS=y +CONFIG_KEXEC=y +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_KEXEC_CORE=y +CONFIG_KEXEC_FILE=y +CONFIG_KEXEC_JUMP=y +CONFIG_KEXEC_VERIFY_SIG=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_BCM=m +CONFIG_KEYBOARD_CAP11XX=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_IMX=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MCS=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_NVEC=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_PMIC8XXX=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_SH_KEYSC=m +CONFIG_KEYBOARD_SNVS_PWRKEY=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TEGRA=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KGDB_LOW_LEVEL_TRAP=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KINGSUN_DONGLE=m +CONFIG_KMX61=m +CONFIG_KPROBES=y +CONFIG_KPROBES_ON_FTRACE=y +# CONFIG_KPROBES_SANITY_TEST is not set +CONFIG_KPROBE_EVENT=y +CONFIG_KRETPROBES=y +CONFIG_KS0108=m +CONFIG_KS0108_DELAY=2 +CONFIG_KS0108_PORT=0x378 +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KS959_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +# CONFIG_KSI8560 is not set +CONFIG_KSM=y +CONFIG_KSZ884X_PCI=m +CONFIG_KUSER_HELPERS=y +CONFIG_KVM_AMD=m +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_KVM_ARM_HOST=y +CONFIG_KVM_ARM_VGIC_V3=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_KVM_ASYNC_PF_SYNC=y +CONFIG_KVM_BOOK3S_64=m +CONFIG_KVM_BOOK3S_64_HANDLER=y +CONFIG_KVM_BOOK3S_64_HV=m +CONFIG_KVM_BOOK3S_64_PR=m +CONFIG_KVM_BOOK3S_HANDLER=y +# CONFIG_KVM_BOOK3S_HV_EXIT_TIMING is not set +CONFIG_KVM_BOOK3S_HV_POSSIBLE=y +CONFIG_KVM_BOOK3S_PR_POSSIBLE=y +CONFIG_KVM_BOOKE_HV=y +CONFIG_KVM_COMPAT=y +CONFIG_KVM_DEBUG_FS=y +CONFIG_KVM_DEVICE_ASSIGNMENT=y +CONFIG_KVM_E500MC=y +# CONFIG_KVM_EXIT_TIMING is not set +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_MMIO=y +# CONFIG_KVM_MMU_AUDIT is not set +CONFIG_KVM_MPIC=y +# CONFIG_KVM_S390_UCONTROL is not set +CONFIG_KVM_VFIO=y +CONFIG_KVM_XICS=y +CONFIG_KXCJK1013=m +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_ETH=m +CONFIG_L2TP_IP=m +CONFIG_L2TP_V3=y +CONFIG_LANCE=m +CONFIG_LANMEDIA=m +CONFIG_LAPBETHER=m +# CONFIG_LATENCYTOP is not set +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_LBDAF=y +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LD9040=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_S6E63M0=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCS=m +# CONFIG_LDM_DEBUG is not set +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_AAT1290=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_BCM6328=m +CONFIG_LEDS_BCM6358=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_DELL_NETBOOKS=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_KTD2692=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP5562=m +CONFIG_LEDS_LP55XX_COMMON=m +CONFIG_LEDS_LP8501=m +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX77693=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_MENF21BMC=m +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_NS2=m +CONFIG_LEDS_OT200=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_POWERNV=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_WRAP=m +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LEGACY_VSYSCALL_EMULATE=y +# CONFIG_LEGACY_VSYSCALL_NATIVE is not set +# CONFIG_LEGACY_VSYSCALL_NONE is not set +# CONFIG_LGUEST is not set +# CONFIG_LGUEST_GUEST is not set +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +CONFIG_LIB80211_CRYPT_WEP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_LIBCRC32C=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_CS=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_LIBFDT=y +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIDAR_LITE_V2=m +CONFIG_LIQUIDIO=m +CONFIG_LIRC=m +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IMON=m +CONFIG_LIRC_PARALLEL=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=m +CONFIG_LIRC_SERIAL_TRANSMITTER=y +CONFIG_LIRC_SIR=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ=m +CONFIG_LITELINK_DONGLE=m +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_LOCK_SPIN_ON_OWNER=y +# CONFIG_LOCK_STAT is not set +CONFIG_LOCK_TORTURE_TEST=m +# CONFIG_LOGFS is not set +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +# CONFIG_LOGO is not set +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_LOOPBACK_TARGET=m +CONFIG_LOWMEM_CAM_NUM=3 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP8788_ADC=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LTE_GDM724X=m +CONFIG_LTPC=m +CONFIG_LTR501=m +# CONFIG_LUSTRE_FS is not set +CONFIG_LWTUNNEL=y +CONFIG_LXT_PHY=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586MMX is not set +# CONFIG_M586TSC is not set +CONFIG_M62332=m +CONFIG_M686=y +CONFIG_MA600_DONGLE=m +CONFIG_MAC80211=m +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_HWSIM=m +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_MESSAGE_TRACING=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_MINSTREL_VHT=y +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MACHZ_WDT=m +CONFIG_MACH_ARMADA_370=y +CONFIG_MACH_ARMADA_375=y +CONFIG_MACH_ARMADA_38X=y +CONFIG_MACH_ARMADA_39X=y +CONFIG_MACH_ARMADA_XP=y +CONFIG_MACH_BERLIN_BG2=y +CONFIG_MACH_BERLIN_BG2CD=y +CONFIG_MACH_BERLIN_BG2Q=y +CONFIG_MACH_DOVE=y +CONFIG_MACH_MESON6=y +CONFIG_MACH_MESON8=y +CONFIG_MACH_MESON8B=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +CONFIG_MACH_MVEBU_ANY=y +CONFIG_MACH_MVEBU_V7=y +# CONFIG_MACH_NOKIA_RX51 is not set +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACH_OMAP_LDP=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MAC_FLOPPY=m +CONFIG_MAG3110=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAILBOX_TEST=m +CONFIG_MANTIS_CORE=m +# CONFIG_MARCH_Z10 is not set +# CONFIG_MARCH_Z10_TUNE is not set +# CONFIG_MARCH_Z13 is not set +# CONFIG_MARCH_Z13_TUNE is not set +# CONFIG_MARCH_Z196 is not set +# CONFIG_MARCH_Z196_TUNE is not set +# CONFIG_MARCH_Z900 is not set +# CONFIG_MARCH_Z900_TUNE is not set +# CONFIG_MARCH_Z990 is not set +# CONFIG_MARCH_Z990_TUNE is not set +# CONFIG_MARCH_Z9_109 is not set +# CONFIG_MARCH_Z9_109_TUNE is not set +CONFIG_MARCH_ZEC12=y +CONFIG_MARCH_ZEC12_TUNE=y +CONFIG_MARVELL_PHY=m +# CONFIG_MATH_EMULATION_FULL is not set +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y +# CONFIG_MATOM is not set +CONFIG_MAX1027=m +CONFIG_MAX1363=m +CONFIG_MAX517=m +CONFIG_MAX5821=m +CONFIG_MAX8925_POWER=m +# CONFIG_MAXSMP is not set +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCB_PCI=m +# CONFIG_MCORE2 is not set +CONFIG_MCP2120_DONGLE=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP4531=m +CONFIG_MCP4725=m +CONFIG_MCP4922=m +CONFIG_MCPM=y +CONFIG_MCPM_QUAD_CLUSTER=y +# CONFIG_MCRUSOE is not set +CONFIG_MCS_FIR=m +# CONFIG_MCYRIXIII is not set +CONFIG_MD=y +CONFIG_MDA_CONSOLE=m +CONFIG_MDIO=m +CONFIG_MDIO_BCM_IPROC=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_BUS_MUX_MMIOREG=m +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_OCTEON=m +CONFIG_MD_AUTODETECT=y +CONFIG_MD_CLUSTER=m +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MEDIATEK_WATCHDOG=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_COMMON_OPTIONS=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_USB_SUPPORT=y +# CONFIG_MEFFICEON is not set +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +# CONFIG_MELAN is not set +CONFIG_MEMBARRIER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_MEMCG_SWAP=y +# CONFIG_MEMCG_SWAP_ENABLED is not set +CONFIG_MEMORY_BALLOON=y +CONFIG_MEMORY_FAILURE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +# CONFIG_MEMSTICK_DEBUG is not set +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_MEMSTICK_TIFM_MS=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MEMTEST=y +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_MEN_A21_WDT=m +CONFIG_MEN_Z188_ADC=m +CONFIG_MESON6_TIMER=y +CONFIG_MESON_WATCHDOG=m +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ARIZONA=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_AS3722=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_ATMEL_FLEXCOM=m +CONFIG_MFD_ATMEL_HLCDC=m +CONFIG_MFD_AXP20X=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_CROS_EC=m +CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m +CONFIG_MFD_CS5535=m +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_DLN2=m +CONFIG_MFD_HI6421_PMIC=m +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_MSIC=y +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX77843=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_NVEC=m +CONFIG_MFD_OMAP_USB_HOST=y +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_PM8921_CORE=m +CONFIG_MFD_PM8XXX=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RETU=m +CONFIG_MFD_RK808=m +CONFIG_MFD_RN5T618=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_RTSX_USB=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SMSC=y +CONFIG_MFD_SPMI_PMIC=m +CONFIG_MFD_STMPE=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TIMBERDALE=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=y +CONFIG_MFD_TPS65218=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS80031=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM5102=y +CONFIG_MFD_WM5110=y +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8400=y +CONFIG_MFD_WM8994=m +CONFIG_MFD_WM8997=y +CONFIG_MFD_WM8998=y +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +CONFIG_MG_DISK=m +CONFIG_MG_DISK_RES=0 +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MIC_COSM=m +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MIGHT_HAVE_PCI=y +CONFIG_MIGRATION=y +# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISDN=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_MISDN_L1OIP=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_W6692=m +CONFIG_MIXCOMWD=m +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +CONFIG_MKISS=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_EN_VXLAN=y +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_INFINIBAND=m +CONFIG_MLX90614=m +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_PCI=m +CONFIG_MMA8452=m +CONFIG_MMA9551=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9553=m +CONFIG_MMC35240=m +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_CB710=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_DW=m +CONFIG_MMC_DW_EXYNOS=m +CONFIG_MMC_DW_K3=m +CONFIG_MMC_DW_PCI=m +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_MTK=m +CONFIG_MMC_MVSDIO=m +CONFIG_MMC_MXC=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_QCOM_DML=m +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y +CONFIG_MMC_SDHCI_DOVE=m +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_IPROC=m +CONFIG_MMC_SDHCI_MSM=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_AT91=m +CONFIG_MMC_SDHCI_OF_ESDHC=m +CONFIG_MMC_SDHCI_OF_HLWD=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MMC_SDHCI_S3C=m +CONFIG_MMC_SDHCI_S3C_DMA=y +CONFIG_MMC_SDHCI_TEGRA=m +CONFIG_MMC_SDHI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_SH_MMCIF=m +CONFIG_MMC_SPI=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_TMIO=m +CONFIG_MMC_TMIO_CORE=m +CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_USDHI6ROL0=m +CONFIG_MMC_USHC=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_WBSD=m +CONFIG_MMIOTRACE=y +# CONFIG_MMIOTRACE_TEST is not set +CONFIG_MMU=y +CONFIG_MMU_NOTIFIER=y +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_MODULES=y +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MODULES_USE_ELF_RELA=y +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SIG=y +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_HASH="sha512" +CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +CONFIG_MODULE_SIG_SHA512=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MONREADER=m +CONFIG_MONWRITER=m +CONFIG_MOST=m +CONFIG_MOSTCORE=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_GPIO=m +# CONFIG_MOUSE_INPORT is not set +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOVABLE_NODE=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +# CONFIG_MPC8536_DS is not set +# CONFIG_MPC8540_ADS is not set +# CONFIG_MPC8560_ADS is not set +# CONFIG_MPC85xx_CDS is not set +# CONFIG_MPC85xx_DS is not set +# CONFIG_MPC85xx_MDS is not set +# CONFIG_MPC85xx_RDB is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +CONFIG_MPIC=y +CONFIG_MPIC_BROKEN_REGREAD=y +# CONFIG_MPIC_TIMER is not set +# CONFIG_MPIC_WEIRD is not set +CONFIG_MPILIB=y +CONFIG_MPL115=m +CONFIG_MPL3115=m +CONFIG_MPLS=y +CONFIG_MPLS_IPTUNNEL=m +CONFIG_MPLS_ROUTING=m +# CONFIG_MPSC is not set +CONFIG_MRP=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=m +CONFIG_MS5637=m +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +CONFIG_MSM_GCC_8660=m +CONFIG_MSM_GCC_8916=m +CONFIG_MSM_GCC_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_LCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_MMCC_8974=m +CONFIG_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=m +CONFIG_MT7601U=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_OTP=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +CONFIG_MTD_DOCG3=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_IMPA7=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_LATCH_ADDR=m +CONFIG_MTD_LPDDR=m +CONFIG_MTD_LPDDR2_NVM=m +CONFIG_MTD_M25P80=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND_BRCMNAND=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_DT=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DOCG4=m +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_FSL_ELBC=m +CONFIG_MTD_NAND_FSL_IFC=m +CONFIG_MTD_NAND_FSL_UPM=m +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_GPMI_NAND=m +CONFIG_MTD_NAND_HISI504=m +CONFIG_MTD_NAND_MXC=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +CONFIG_MTD_NAND_ORION=m +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_PXA3xx=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_SH_FLCTL=m +CONFIG_MTD_NAND_TMIO=m +CONFIG_MTD_NAND_VF610_NFC=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OMAP2=m +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_OOPS=m +# CONFIG_MTD_PARTITIONED_MASTER is not set +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=m +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_POWERNV_FLASH=m +CONFIG_MTD_QINFO_PROBE=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_SPINAND_MT29F=m +CONFIG_MTD_SPINAND_ONDIEECC=y +CONFIG_MTD_SPI_NOR=m +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTK_INFRACFG=y +CONFIG_MTK_PMIC_WRAP=m +CONFIG_MTK_SCPSYS=y +CONFIG_MTK_TIMER=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_MULTIUSER=y +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MV643XX_ETH=m +CONFIG_MVEBU_CLK_COMMON=y +CONFIG_MVEBU_CLK_COREDIV=y +CONFIG_MVEBU_CLK_CPU=y +CONFIG_MVEBU_DEVBUS=y +CONFIG_MVEBU_MBUS=y +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +CONFIG_MVMDIO=m +# CONFIG_MVME2500 is not set +CONFIG_MVNETA=m +CONFIG_MVPP2=m +CONFIG_MV_XOR=y +CONFIG_MWAVE=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +# CONFIG_MWINCHIP3D is not set +# CONFIG_MWINCHIPC6 is not set +CONFIG_MWL8K=m +CONFIG_MX3_IPU=y +CONFIG_MX3_IPU_IRQS=4 +CONFIG_MXC4005=m +CONFIG_MXC_TZIC=y +CONFIG_MXM_WMI=m +CONFIG_MXS_DMA=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_N2=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=m +CONFIG_NATSEMI=m +CONFIG_NAU7802=m +CONFIG_NBPFAXI_DMA=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_ND_BLK=m +CONFIG_ND_BTT=m +CONFIG_ND_CLAIM=y +CONFIG_ND_PFN=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_NODE_MEMMAP_SIZE=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_NET5501=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETIUCV=m +CONFIG_NETLABEL=y +CONFIG_NETLINK_DIAG=m +CONFIG_NETLINK_MMAP=y +CONFIG_NETPOLL=y +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NETXEN_NIC=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NET_9P_RDMA=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CORE=y +CONFIG_NET_DCCPPROBE=m +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_FC=y +CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_NET_INGRESS=y +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPIP=m +CONFIG_NET_IPVTI=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_NET_MPLS_GSO=m +CONFIG_NET_NS=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCTPPROBE=m +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_TCPPROBE=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TULIP=y +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_APPLE=y +CONFIG_NET_VENDOR_AURORA=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_PASEMI=y +CONFIG_NET_VENDOR_SYNOPSYS=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NET_VRF=m +CONFIG_NET_XGENE=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_HCI=m +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MICROREAD_MEI=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_MRVL_SPI=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=m +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_SIM=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_WILINK=m +CONFIG_NFSD=m +# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_V4_SECURITY_LABEL=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_FS=m +CONFIG_NFS_FSCACHE=y +CONFIG_NFS_SWAP=y +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_NFS_V4_1_MIGRATION=y +CONFIG_NFS_V4_2=y +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NFT_CHAIN_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV6=m +CONFIG_NFT_CHAIN_ROUTE_IPV4=m +CONFIG_NFT_CHAIN_ROUTE_IPV6=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CT=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_EXTHDR=m +CONFIG_NFT_HASH=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_META=m +CONFIG_NFT_NAT=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_RBTREE=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NFT_REDIR_IPV6=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_BRIDGE=m +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV6=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_REDIRECT=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_IPV4=m +CONFIG_NF_TABLES_IPV6=m +CONFIG_NF_TABLES_NETDEV=m +CONFIG_NI65=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=m +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NLATTR=y +CONFIG_NLMON=m +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +# CONFIG_NOHIGHMEM is not set +CONFIG_NOKIA_MODEM=m +CONFIG_NOP_TRACER=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_NORTEL_HERMES=m +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +CONFIG_NO_BOOTMEM=y +CONFIG_NO_HZ=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_NO_IOPORT_MAP=y +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +CONFIG_NSC_GPIO=m +CONFIG_NTB_AMD=m +CONFIG_NTB_INTEL=m +CONFIG_NTB_NETDEV=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_TRANSPORT=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +# CONFIG_NUMA_EMU is not set +CONFIG_NVDIMM_PFN=y +CONFIG_NVEC_PAZ00=m +CONFIG_NVEC_POWER=m +CONFIG_NVM=y +CONFIG_NVMEM=m +CONFIG_NVMEM_IMX_OCOTP=m +CONFIG_NVMEM_VF610_OCOTP=m +# CONFIG_NVM_DEBUG is not set +CONFIG_NVM_GENNVM=m +CONFIG_NVM_RRPC=m +CONFIG_NV_TCO=m +CONFIG_N_HDLC=m +# CONFIG_OABI_COMPAT is not set +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_OCFS2_DEBUG_MASKLOG=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OF_ADDRESS=y +CONFIG_OF_ADDRESS_PCI=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IOMMU=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_OVERLAY=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OLD_MCOUNT=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OMAP2PLUS_MBOX=m +CONFIG_OMAP2_DSS=y +# CONFIG_OMAP2_DSS_DEBUG is not set +# CONFIG_OMAP2_DSS_DEBUGFS is not set +CONFIG_OMAP2_DSS_DPI=y +# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_HDMI_COMMON=y +CONFIG_OMAP2_DSS_INIT=y +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_OMAP2_DSS_VENC=y +CONFIG_OMAP2_VRFB=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +# CONFIG_OMAP3_SDRC_AC_TIMING is not set +CONFIG_OMAP3_THERMAL=y +CONFIG_OMAP4_DSS_HDMI=y +CONFIG_OMAP4_THERMAL=y +CONFIG_OMAP5_DSS_HDMI=y +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_CONTROL_PHY=m +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_GPMC=y +# CONFIG_OMAP_GPMC_DEBUG is not set +CONFIG_OMAP_INTERCONNECT=y +CONFIG_OMAP_INTERCONNECT_BARRIER=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOMMU_DEBUG is not set +CONFIG_OMAP_IRQCHIP=y +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_OCP2SCP=m +CONFIG_OMAP_PACKAGE_CBB=y +CONFIG_OMAP_PM_NOOP=y +CONFIG_OMAP_REMOTEPROC=m +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_SSI=m +CONFIG_OMAP_SSI_PORT=m +CONFIG_OMAP_USB2=m +CONFIG_OMAP_WATCHDOG=m +CONFIG_OPAL_PRD=m +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPROFILE=m +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OPT3001=m +CONFIG_OPTIMIZE_INLINING=y +CONFIG_OPTPROBES=y +CONFIG_ORE=m +CONFIG_ORINOCO_USB=m +CONFIG_ORION_IRQCHIP=y +CONFIG_ORION_TIMER=y +CONFIG_ORION_WATCHDOG=m +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_OVERLAY_FS=m +CONFIG_OVERLAY_FS_V1=y +# CONFIG_P1010_RDB is not set +# CONFIG_P1022_DS is not set +# CONFIG_P1022_RDK is not set +CONFIG_P1023_RDB=y +CONFIG_P54_COMMON=m +CONFIG_P54_LEDS=y +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_USB=m +CONFIG_PA12203001=m +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_PACK_STACK=y +CONFIG_PADATA=y +CONFIG_PAGE_COUNTER=y +# CONFIG_PAGE_OWNER is not set +CONFIG_PANASONIC_LAPTOP=m +CONFIG_PANEL=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_AX88796=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +# CONFIG_PASEMI_MAC is not set +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IMX=m +CONFIG_PATA_ISAPNP=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_MACIO=y +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OF_PLATFORM=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_PLATFORM=m +CONFIG_PATA_QDI=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_PC300TOO=m +CONFIG_PC8736x_GPIO=m +CONFIG_PC87413_WDT=m +CONFIG_PCC=y +CONFIG_PCCARD_NONSTATIC=y +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +CONFIG_PCH_CAN=m +CONFIG_PCH_DMA=m +CONFIG_PCH_GBE=m +CONFIG_PCH_PHUB=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEBUG=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_ALTERA=y +CONFIG_PCIE_ALTERA_MSI=y +CONFIG_PCIE_DW=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIE_IPROC=m +CONFIG_PCIE_IPROC_PLATFORM=m +CONFIG_PCIE_PME=y +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_BUS_ADDR_T_64BIT=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_EXYNOS=y +CONFIG_PCI_GOANY=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOMMCONFIG is not set +CONFIG_PCI_HISI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_IMX6=y +CONFIG_PCI_IOV=y +CONFIG_PCI_LABEL=y +# CONFIG_PCI_LAYERSCAPE is not set +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_MVEBU=y +CONFIG_PCI_NR_FUNCTIONS=64 +CONFIG_PCI_NR_MSI=256 +CONFIG_PCI_RCAR_GEN2=y +CONFIG_PCI_RCAR_GEN2_PCIE=y +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_SYSCALL=y +CONFIG_PCI_TEGRA=y +CONFIG_PCI_XEN=y +CONFIG_PCI_XGENE=y +CONFIG_PCI_XGENE_MSI=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PCSPKR_PLATFORM=y +CONFIG_PCWATCHDOG=m +CONFIG_PD6729=m +CONFIG_PDA_POWER=m +CONFIG_PDC_ADMA=m +CONFIG_PERCPU_TEST=m +CONFIG_PERF_EVENTS=y +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PFAULT=y +CONFIG_PGSTE=y +CONFIG_PHYS_64BIT=y +CONFIG_PHY_BERLIN_SATA=m +CONFIG_PHY_BERLIN_USB=m +CONFIG_PHY_DM816X_USB=m +# CONFIG_PHY_EXYNOS4210_USB2 is not set +# CONFIG_PHY_EXYNOS4X12_USB2 is not set +CONFIG_PHY_EXYNOS5250_SATA=y +CONFIG_PHY_EXYNOS5_USBDRD=m +CONFIG_PHY_EXYNOS_DP_VIDEO=y +CONFIG_PHY_EXYNOS_MIPI_VIDEO=y +CONFIG_PHY_HIX5HD2_SATA=m +CONFIG_PHY_MT65XX_USB3=m +CONFIG_PHY_MVEBU_SATA=y +CONFIG_PHY_QCOM_APQ8064_SATA=m +CONFIG_PHY_QCOM_IPQ806X_SATA=m +CONFIG_PHY_QCOM_UFS=m +CONFIG_PHY_RCAR_GEN2=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_TUSB1210=m +CONFIG_PHY_XGENE=y +# CONFIG_PID_IN_CONTEXTIDR is not set +CONFIG_PID_NS=y +CONFIG_PINCONF=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_AMD=y +CONFIG_PINCTRL_APQ8064=m +CONFIG_PINCTRL_APQ8084=m +CONFIG_PINCTRL_ARMADA_370=y +CONFIG_PINCTRL_ARMADA_375=y +CONFIG_PINCTRL_ARMADA_38X=y +CONFIG_PINCTRL_ARMADA_39X=y +CONFIG_PINCTRL_ARMADA_XP=y +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BERLIN=y +CONFIG_PINCTRL_BERLIN_BG4CT=y +CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_CHERRYVIEW=m +CONFIG_PINCTRL_DOVE=y +CONFIG_PINCTRL_EXYNOS=y +CONFIG_PINCTRL_EXYNOS5440=y +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX50=y +CONFIG_PINCTRL_IMX51=y +CONFIG_PINCTRL_IMX6Q=y +CONFIG_PINCTRL_IMX6SL=y +CONFIG_PINCTRL_IMX6SX=y +CONFIG_PINCTRL_IMX6UL=y +CONFIG_PINCTRL_IMX7D=y +CONFIG_PINCTRL_INTEL=m +CONFIG_PINCTRL_IPQ8064=m +CONFIG_PINCTRL_MESON=y +CONFIG_PINCTRL_MSM=y +CONFIG_PINCTRL_MSM8660=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_PINCTRL_MSM8X74=m +CONFIG_PINCTRL_MT6397=y +CONFIG_PINCTRL_MT8173=y +CONFIG_PINCTRL_MTK_COMMON=y +CONFIG_PINCTRL_MVEBU=y +CONFIG_PINCTRL_PALMAS=y +CONFIG_PINCTRL_PFC_EMEV2=y +CONFIG_PINCTRL_PFC_R8A7740=y +CONFIG_PINCTRL_PFC_R8A7778=y +CONFIG_PINCTRL_PFC_R8A7779=y +CONFIG_PINCTRL_PFC_R8A7790=y +CONFIG_PINCTRL_PFC_R8A7791=y +CONFIG_PINCTRL_PFC_R8A7793=y +CONFIG_PINCTRL_PFC_R8A7794=y +CONFIG_PINCTRL_PFC_SH73A0=y +CONFIG_PINCTRL_QCOM_SPMI_PMIC=m +CONFIG_PINCTRL_QCOM_SSBI_PMIC=m +CONFIG_PINCTRL_QDF2XXX=m +CONFIG_PINCTRL_SAMSUNG=y +CONFIG_PINCTRL_SH_PFC=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_SUNRISEPOINT=m +CONFIG_PINCTRL_TEGRA=y +CONFIG_PINCTRL_TEGRA114=y +CONFIG_PINCTRL_TEGRA124=y +CONFIG_PINCTRL_TEGRA20=y +CONFIG_PINCTRL_TEGRA30=y +CONFIG_PINCTRL_TEGRA_XUSB=y +CONFIG_PINCTRL_UNIPHIER=y +CONFIG_PINCTRL_UNIPHIER_PH1_LD4=m +CONFIG_PINCTRL_UNIPHIER_PH1_LD6B=m +CONFIG_PINCTRL_UNIPHIER_PH1_PRO4=m +CONFIG_PINCTRL_UNIPHIER_PH1_PRO5=m +CONFIG_PINCTRL_UNIPHIER_PH1_SLD8=m +CONFIG_PINCTRL_UNIPHIER_PROXSTREAM2=m +CONFIG_PINCTRL_VF610=y +CONFIG_PINMUX=y +CONFIG_PJ4B_ERRATA_4742=y +CONFIG_PKCS7_MESSAGE_PARSER=y +CONFIG_PKCS7_TEST_KEY=m +CONFIG_PL310_ERRATA_588369=y +CONFIG_PL310_ERRATA_727915=y +CONFIG_PL310_ERRATA_753970=y +CONFIG_PL310_ERRATA_769419=y +CONFIG_PL320_MBOX=y +CONFIG_PL330_DMA=m +CONFIG_PLATFORM_SI4713=m +CONFIG_PLAT_ORION=y +CONFIG_PLAT_SAMSUNG=y +# CONFIG_PLAT_SPEAR is not set +CONFIG_PLAT_VERSATILE=y +CONFIG_PLAT_VERSATILE_CLCD=y +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_BACKLIGHT=y +CONFIG_PMAC_BACKLIGHT_LEGACY=y +CONFIG_PMAC_MEDIABAY=y +CONFIG_PMAC_RACKMETER=m +CONFIG_PMAC_SMU=y +CONFIG_PMBUS=m +CONFIG_PMC_ATOM=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +CONFIG_PM_OPP=y +CONFIG_PM_RCAR=y +CONFIG_PM_RMOBILE=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_DEBUG=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_STD_PARTITION="" +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_PNFS_OBJLAYOUT=m +CONFIG_PNP=y +CONFIG_PNPACPI=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_POWER4_CPU is not set +# CONFIG_POWER5_CPU is not set +# CONFIG_POWER6_CPU is not set +# CONFIG_POWER8_CPU is not set +CONFIG_POWERNV_CPUFREQ=y +CONFIG_POWERNV_CPUIDLE=y +CONFIG_POWER_AVS_OMAP=y +CONFIG_POWER_AVS_OMAP_CLASS3=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_AS3722=y +CONFIG_POWER_RESET_AXXIA=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_HISI=y +# CONFIG_POWER_RESET_IMX is not set +CONFIG_POWER_RESET_LTC2952=y +CONFIG_POWER_RESET_MSM=y +# CONFIG_POWER_RESET_QNAP is not set +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_RMOBILE=m +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_POWER_RESET_VERSATILE=y +CONFIG_POWER_RESET_VEXPRESS=y +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PPA8548=y +CONFIG_PPC=y +CONFIG_PPC32=y +# CONFIG_PPC601_SYNC_FIX is not set +CONFIG_PPC64_BOOT_WRAPPER=y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +# CONFIG_PPC_86xx is not set +# CONFIG_PPC_8xx is not set +CONFIG_PPC_ADV_DEBUG_DACS=2 +CONFIG_PPC_ADV_DEBUG_DVCS=0 +CONFIG_PPC_ADV_DEBUG_IACS=2 +CONFIG_PPC_ADV_DEBUG_REGS=y +CONFIG_PPC_BOOK3E=y +CONFIG_PPC_BOOK3E_MMU=y +CONFIG_PPC_BOOK3S=y +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +CONFIG_PPC_CHRP=y +# CONFIG_PPC_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +CONFIG_PPC_E500MC=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EMULATE_SSTEP=y +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +CONFIG_PPC_FPU=y +CONFIG_PPC_FSL_BOOK3E=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +# CONFIG_PPC_IBM_CELL_BLADE is not set +CONFIG_PPC_ICSWX_PID=y +# CONFIG_PPC_ICSWX_USE_SIGILL is not set +CONFIG_PPC_INDIRECT_PIO=y +CONFIG_PPC_LIB_RHEAP=y +CONFIG_PPC_MAPLE=y +CONFIG_PPC_MMU_NOHASH=y +# CONFIG_PPC_MPC512x is not set +# CONFIG_PPC_MPC52xx is not set +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_NATIVE=y +# CONFIG_PPC_OF_PLATFORM_PCI is not set +CONFIG_PPC_PASEMI=y +CONFIG_PPC_PASEMI_CPUFREQ=y +CONFIG_PPC_PASEMI_IOMMU=y +# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set +CONFIG_PPC_PASEMI_MDIO=m +CONFIG_PPC_PCI_CHOICE=y +CONFIG_PPC_PERF_CTRS=y +CONFIG_PPC_PMAC=y +CONFIG_PPC_PMAC32_PSURGE=y +CONFIG_PPC_PMAC64=y +CONFIG_PPC_POWERNV=y +CONFIG_PPC_PS3=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_QEMU_E500=y +CONFIG_PPC_RTAS_DAEMON=y +CONFIG_PPC_SCOM=y +CONFIG_PPC_SMP_MUXED_IPI=y +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_32=y +CONFIG_PPC_STD_MMU_64=y +CONFIG_PPC_SUBPAGE_PROT=y +CONFIG_PPC_TRANSACTIONAL_MEM=y +CONFIG_PPC_UDBG_16550=y +CONFIG_PPC_WERROR=y +CONFIG_PPDEV=m +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +# CONFIG_PQ2ADS is not set +CONFIG_PREEMPT_COUNT=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PREEMPT_RCU=y +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_PRESCAN_RXQ is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_PRINT_STACK_DEPTH=64 +CONFIG_PRISM2_USB=m +# CONFIG_PRISM54 is not set +CONFIG_PROCESSOR_SELECT=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_EVENTS=y +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_PS3GELIC_UDBG is not set +# CONFIG_PS3_ADVANCED is not set +CONFIG_PS3_DISK=m +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_FLASH=m +CONFIG_PS3_HTAB_SIZE=20 +CONFIG_PS3_LPM=m +CONFIG_PS3_PS3AV=y +# CONFIG_PS3_REPOSITORY_WRITE is not set +CONFIG_PS3_ROM=m +CONFIG_PS3_STORAGE=m +CONFIG_PS3_SYS_MANAGER=y +CONFIG_PS3_VRAM=m +CONFIG_PS3_VUART=y +CONFIG_PSERIES_CPUIDLE=y +CONFIG_PSERIES_ENERGY=m +# CONFIG_PSTORE_FTRACE is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PTE_64BIT=y +CONFIG_PTP_1588_CLOCK_GIANFAR=m +CONFIG_PTP_1588_CLOCK_PCH=m +CONFIG_PUBLIC_KEY_ALGO_RSA=y +CONFIG_PUNIT_ATOM_DEBUG=m +CONFIG_PVPANIC=m +CONFIG_PWM_ATMEL_HLCDC_PWM=m +CONFIG_PWM_BERLIN=m +CONFIG_PWM_CRC=y +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_IMX=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_LPSS=m +CONFIG_PWM_LPSS_PCI=m +CONFIG_PWM_LPSS_PLATFORM=m +CONFIG_PWM_MTK_DISP=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_RCAR=m +CONFIG_PWM_RENESAS_TPU=m +CONFIG_PWM_SAMSUNG=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PWM_TIPWMSS=y +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +CONFIG_PXA168_ETH=m +CONFIG_QCA7000=m +CONFIG_QCOM_BAM_DMA=m +CONFIG_QCOM_COINCELL=m +CONFIG_QCOM_GDSC=y +CONFIG_QCOM_GSBI=m +CONFIG_QCOM_PM=y +CONFIG_QCOM_QFPROM=m +CONFIG_QCOM_SCM=y +CONFIG_QCOM_SCM_32=y +CONFIG_QCOM_SCM_64=y +CONFIG_QCOM_SMD=m +CONFIG_QCOM_SMD_RPM=m +CONFIG_QCOM_SMEM=m +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QCOM_WDT=m +CONFIG_QDIO=m +CONFIG_QED=m +CONFIG_QEDE=m +CONFIG_QETH=m +CONFIG_QETH_IPV6=y +CONFIG_QETH_L2=m +CONFIG_QETH_L3=m +CONFIG_QE_USB=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_VXLAN=y +CONFIG_QLGE=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QORIQ_CPUFREQ=m +CONFIG_QSEMI_PHY=m +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +# CONFIG_QUICC_ENGINE is not set +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_QUOTA_TREE=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8188EU=m +CONFIG_R8712U=m +CONFIG_R8723AU=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_CADET=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_ISA=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI470X=y +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_SI476X=m +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TIMBERDALE=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +CONFIG_RADIO_ZOLTRIX=m +CONFIG_RAID6_PQ=m +CONFIG_RAID_ATTRS=m +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_RANDOMIZE_BASE=y +CONFIG_RAPIDIO=y +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_CPS_XX=m +# CONFIG_RAPIDIO_DEBUG is not set +CONFIG_RAPIDIO_DISC_TIMEOUT=30 +CONFIG_RAPIDIO_DMA_ENGINE=y +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_ENUM_BASIC=m +CONFIG_RAPIDIO_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +CONFIG_RAPIDIO_TSI721=m +CONFIG_RAS=y +CONFIG_RATIONAL=y +CONFIG_RAVB=m +CONFIG_RBTREE_TEST=m +CONFIG_RCAR_DMAC=m +CONFIG_RCAR_HPB_DMAE=m +CONFIG_RCAR_THERMAL=m +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_RCU_EXPEDITE_BOOT is not set +# CONFIG_RCU_EXPERT is not set +CONFIG_RCU_STALL_COMMON=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_CORE=m +CONFIG_RC_DECODERS=y +CONFIG_RC_DEVICES=y +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=m +CONFIG_RDS=m +# CONFIG_RDS_DEBUG is not set +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +CONFIG_RD_BZIP2=y +CONFIG_RD_GZIP=y +CONFIG_RD_LZ4=y +CONFIG_RD_LZMA=y +CONFIG_RD_LZO=y +CONFIG_RD_XZ=y +# CONFIG_READABLE_ASM is not set +CONFIG_REALTEK_AUTOPM=y +CONFIG_REALTEK_PHY=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARIZONA=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m +CONFIG_REGULATOR_DA9063=m +CONFIG_REGULATOR_DA9210=m +CONFIG_REGULATOR_DA9211=m +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_HI6421=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77802=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8907=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8973=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_MT6311=m +CONFIG_REGULATOR_MT6397=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PBIAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_SMD_RPM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_RT5033=m +CONFIG_REGULATOR_S2MPA01=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_SKY81452=m +CONFIG_REGULATOR_TI_ABB=y +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65217=y +CONFIG_REGULATOR_TPS65218=m +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TPS80031=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VEXPRESS=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_REMOTEPROC=m +CONFIG_RENESAS_DMA=y +CONFIG_RENESAS_INTC_IRQPIN=y +CONFIG_RENESAS_IRQC=y +CONFIG_RENESAS_USB_DMAC=m +CONFIG_RETU_WATCHDOG=m +CONFIG_RFD_FTL=m +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_REGULATOR=m +CONFIG_RFS_ACCEL=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +CONFIG_RIONET=m +CONFIG_RIONET_RX_SIZE=128 +CONFIG_RIONET_TX_SIZE=128 +CONFIG_RN5T618_WATCHDOG=m +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPMSG=m +CONFIG_RPR0521=m +CONFIG_RPS=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT2500USB=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00=m +# CONFIG_RT2X00_DEBUG is not set +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_CRYPTO=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_LEDS=y +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT61PCI=m +CONFIG_RT73USB=m +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_RTAS_FLASH=m +CONFIG_RTAS_PROC=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_88PM860X=m +CONFIG_RTC_DRV_AB3100=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_ABX80X=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RTC_DRV_AS3722=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS1685=y +CONFIG_RTC_DRV_DS1685_FAMILY=m +# CONFIG_RTC_DRV_DS1689 is not set +# CONFIG_RTC_DRV_DS17285 is not set +CONFIG_RTC_DRV_DS1742=m +# CONFIG_RTC_DRV_DS17485 is not set +# CONFIG_RTC_DRV_DS17885 is not set +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_EFI=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_GENERIC=m +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_IMXDI=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_LP8788=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_MAX77686=m +CONFIG_RTC_DRV_MAX77802=m +CONFIG_RTC_DRV_MAX8907=m +CONFIG_RTC_DRV_MAX8925=m +CONFIG_RTC_DRV_MAX8997=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_MT6397=m +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_DRV_MXC=m +CONFIG_RTC_DRV_OMAP=y +CONFIG_RTC_DRV_OPAL=y +CONFIG_RTC_DRV_PALMAS=m +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF50633=m +CONFIG_RTC_DRV_PCF85063=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_PS3=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV8803=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_S3C=y +CONFIG_RTC_DRV_S5M=m +CONFIG_RTC_DRV_SNVS=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_TEGRA=m +# CONFIG_RTC_DRV_TEST is not set +CONFIG_RTC_DRV_TPS6586X=m +CONFIG_RTC_DRV_TPS65910=m +CONFIG_RTC_DRV_TPS80031=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_VRTC=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_XGENE=y +CONFIG_RTC_DRV_ZYNQMP=m +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_LIB=y +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL8188EE=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192DE=m +CONFIG_RTL8192E=m +CONFIG_RTL8192EE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192U=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTLBTCOEXIST=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTLWIFI=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTL_CARDS=m +CONFIG_RTS5208=m +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RT_MUTEXES=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXKAD=m +CONFIG_S2IO=m +CONFIG_S390=y +CONFIG_S390_GUEST=y +CONFIG_S390_HYPFS_FS=y +CONFIG_S390_IOMMU=y +CONFIG_S390_PRNG=m +CONFIG_S390_PTDUMP=y +CONFIG_S390_TAPE=m +CONFIG_S390_TAPE_34XX=m +CONFIG_S390_TAPE_3590=m +CONFIG_S390_VMUR=m +CONFIG_S3C2410_WATCHDOG=m +CONFIG_S5P_DEV_MFC=y +# CONFIG_SAMPLES is not set +CONFIG_SAMSUNG_LAPTOP=m +# CONFIG_SAMSUNG_PM_CHECK is not set +CONFIG_SAMSUNG_Q10=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_FSL=m +CONFIG_SATA_HIGHBANK=m +CONFIG_SATA_INIC162X=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PMP=y +CONFIG_SATA_PROMISE=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_RCAR=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIL24=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SX4=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_ZPODD=y +CONFIG_SBC7240_WDT=m +CONFIG_SBC8360_WDT=m +# CONFIG_SBC8548 is not set +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SBP_TARGET=m +CONFIG_SC1200_WDT=m +CONFIG_SC92031=m +CONFIG_SCA3000=m +CONFIG_SCANLOG=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_BOOK=y +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_INFO=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_SCHED_TOPOLOGY=y +CONFIG_SCHED_TRACER=y +CONFIG_SCIF=m +CONFIG_SCIF_BUS=m +CONFIG_SCLP_ASYNC=m +CONFIG_SCLP_ASYNC_ID="000000000" +CONFIG_SCLP_CONSOLE=y +CONFIG_SCLP_CPI=m +CONFIG_SCLP_TTY=y +CONFIG_SCLP_VT220_CONSOLE=y +CONFIG_SCLP_VT220_TTY=y +CONFIG_SCM_BLOCK=m +CONFIG_SCM_BLOCK_CLUSTER_WRITE=y +CONFIG_SCM_BUS=y +CONFIG_SCOM_DEBUGFS=y +CONFIG_SCSI=y +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IBMVFC=m +CONFIG_SCSI_IBMVFC_TRACE=y +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_MAC53C94=m +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_MOD=y +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SIM710=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +# CONFIG_SCSI_UFS_QCOM is not set +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_SCx200_ACB=m +CONFIG_SCx200_GPIO=m +CONFIG_SCx200_WDT=m +CONFIG_SDIO_UART=m +CONFIG_SDLA=m +# CONFIG_SDMA_VERBOSITY is not set +CONFIG_SEALEVEL_4021=m +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_STATS is not set +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=y +# CONFIG_SECURITY_SMACK_BRINGUP is not set +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_YAMA=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_AMS=m +# CONFIG_SENSORS_AMS_I2C is not set +# CONFIG_SENSORS_AMS_PMU is not set +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ARM_SCPI=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_BH1780=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_HTU21=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IBMPOWERNV=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_LIS3_SPI=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM3533=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX20751=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_MENF21BMC_HWMON=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_TWL4030_MADC=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_VEXPRESS=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_ZL6100=m +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_8250_EXAR_ST16C554=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FINTEK=m +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_INGENIC=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_MID=m +CONFIG_SERIAL_8250_MT6577=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_OMAP=m +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_RT288X=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_UNIPHIER=m +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_AMBA_PL010=m +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_BCM63XX=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_CPM=m +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y +CONFIG_SERIAL_ICOM=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_KGDB_NMI=y +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_MESON=m +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_PCH_UART=m +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +# CONFIG_SERIAL_PMACZILOG_TTYS is not set +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_SAMSUNG=m +CONFIG_SERIAL_SAMSUNG_UARTS=4 +CONFIG_SERIAL_SAMSUNG_UARTS_4=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SH_SCI=m +CONFIG_SERIAL_SH_SCI_DMA=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=2 +CONFIG_SERIAL_SPRD=m +CONFIG_SERIAL_STM32=m +CONFIG_SERIAL_ST_ASC=m +CONFIG_SERIAL_TEGRA=m +CONFIG_SERIAL_TIMBERDALE=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_NVEC_PS2=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_XILINX_XPS_PS2=m +CONFIG_SETEND_EMULATION=y +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SFI=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SGY_CTS1000=m +# CONFIG_SG_SPLIT is not set +CONFIG_SHMEM=y +CONFIG_SHMOBILE_IOMMU=y +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_1024MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_128MB is not set +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB=y +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_256MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_32MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_512MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_64MB is not set +CONFIG_SHMOBILE_IOMMU_L1SIZE=8192 +CONFIG_SHMOBILE_IPMMU=y +CONFIG_SHMOBILE_IPMMU_TLB=y +CONFIG_SH_DMAE=m +CONFIG_SH_DMAE_BASE=y +CONFIG_SH_ETH=m +CONFIG_SH_IRDA=m +CONFIG_SI7005=m +CONFIG_SI7020=m +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +CONFIG_SIGNED_PE_FILE_VERIFICATION=y +CONFIG_SIMPLE_PM_BUS=y +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SKFP=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +# CONFIG_SLAB is not set +CONFIG_SLABINFO=y +CONFIG_SLHC=y +CONFIG_SLICOSS=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +# CONFIG_SLOB is not set +CONFIG_SLUB=y +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SMC911X=m +CONFIG_SMC9194=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SMSC37B787_WDT=m +CONFIG_SMSC911X=m +# CONFIG_SMSC911X_ARCH_HOOKS is not set +CONFIG_SMSC9420=m +CONFIG_SMSC_PHY=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSGIUCV=y +CONFIG_SMSGIUCV_EVENT=m +CONFIG_SMS_SDIO_DRV=m +CONFIG_SMS_SIANO_DEBUGFS=y +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +CONFIG_SMS_USB_DRV=m +CONFIG_SM_FTL=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_AD1889=m +CONFIG_SND_ADLIB=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALOOP=m +CONFIG_SND_ALS100=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_AM33XX_SOC_EVM=m +CONFIG_SND_AOA=m +CONFIG_SND_AOA_FABRIC_LAYOUT=m +CONFIG_SND_AOA_ONYX=m +CONFIG_SND_AOA_SOUNDBUS=m +CONFIG_SND_AOA_SOUNDBUS_I2S=m +CONFIG_SND_AOA_TAS=m +CONFIG_SND_AOA_TOONIE=m +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_ATMEL_SOC=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT1605=m +CONFIG_SND_AZT2316=m +CONFIG_SND_AZT2320=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BCD2000=m +CONFIG_SND_BEBOB=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMI8328=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m +CONFIG_SND_DAVINCI_SOC_MCASP=m +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DICE=m +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ECHO3G=m +CONFIG_SND_EDMA_SOC=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_FIREWIRE_TASCAM=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_GINA20=m +CONFIG_SND_GINA24=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_HDA=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_TEGRA=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_IMX_SOC=y +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_ISA=y +CONFIG_SND_ISIGHT=m +CONFIG_SND_JACK=y +CONFIG_SND_JAZZ16=m +CONFIG_SND_KIRKWOOD_SOC=m +CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_MFLD_MACHINE=m +CONFIG_SND_MIA=m +CONFIG_SND_MIRO=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MONA=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MSND_CLASSIC=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_DMIC=m +CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_MCPDM=m +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m +CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m +CONFIG_SND_OMAP_SOC_OMAP_TWL4030=y +CONFIG_SND_OMAP_SOC_RX51=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_OXFW=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_PCI=y +CONFIG_SND_PCMCIA=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_PCSP=m +CONFIG_SND_PCXHR=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y +CONFIG_SND_POWERPC_SOC=m +CONFIG_SND_PPC=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_PS3=m +CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SAMSUNG_I2S=m +CONFIG_SND_SAMSUNG_PCM=m +CONFIG_SND_SAMSUNG_SPDIF=m +CONFIG_SND_SB16=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SB16_DSP=m +CONFIG_SND_SB8=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SC6000=m +CONFIG_SND_SCS1X=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SIS7019=m +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_ALC5632=m +CONFIG_SND_SOC_APQ8016_SBC=m +CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631=m +CONFIG_SND_SOC_COMPRESS=y +CONFIG_SND_SOC_CS35L32=m +CONFIG_SND_SOC_CS4265=m +CONFIG_SND_SOC_CS4270=m +CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS4271_I2C=m +CONFIG_SND_SOC_CS4271_SPI=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L51_I2C=m +CONFIG_SND_SOC_CS42L52=m +CONFIG_SND_SOC_CS42L56=m +CONFIG_SND_SOC_CS42L73=m +CONFIG_SND_SOC_CS42XX8=m +CONFIG_SND_SOC_CS42XX8_I2C=m +CONFIG_SND_SOC_CS4349=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m +CONFIG_SND_SOC_EUKREA_TLV320=m +CONFIG_SND_SOC_FSL_ASOC_CARD=m +CONFIG_SND_SOC_FSL_ASRC=m +CONFIG_SND_SOC_FSL_ESAI=m +CONFIG_SND_SOC_FSL_SAI=m +CONFIG_SND_SOC_FSL_SPDIF=m +CONFIG_SND_SOC_FSL_UTILS=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_GTM601=m +CONFIG_SND_SOC_IMX_ES8328=m +CONFIG_SND_SOC_IMX_MC13783=m +CONFIG_SND_SOC_IMX_PCM_DMA=y +CONFIG_SND_SOC_IMX_PCM_FIQ=y +CONFIG_SND_SOC_IMX_SGTL5000=y +CONFIG_SND_SOC_IMX_SPDIF=m +CONFIG_SND_SOC_IMX_SSI=m +CONFIG_SND_SOC_IMX_WM8962=m +CONFIG_SND_SOC_INTEL_BAYTRAIL=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m +CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_HASWELL=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m +CONFIG_SND_SOC_INTEL_SKYLAKE=m +CONFIG_SND_SOC_INTEL_SST=m +CONFIG_SND_SOC_INTEL_SST_ACPI=m +CONFIG_SND_SOC_LPASS_APQ8016=m +CONFIG_SND_SOC_LPASS_CPU=m +CONFIG_SND_SOC_LPASS_IPQ806X=m +CONFIG_SND_SOC_LPASS_PLATFORM=m +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX98357A=m +CONFIG_SND_SOC_MC13783=m +CONFIG_SND_SOC_MEDIATEK=m +CONFIG_SND_SOC_MT8173_MAX98090=m +CONFIG_SND_SOC_MT8173_RT5650_RT5676=m +CONFIG_SND_SOC_ODROIDX2=m +CONFIG_SND_SOC_PCM1681=m +CONFIG_SND_SOC_PCM1792A=m +CONFIG_SND_SOC_PCM512x=m +CONFIG_SND_SOC_PCM512x_I2C=m +CONFIG_SND_SOC_PCM512x_SPI=m +CONFIG_SND_SOC_QCOM=m +CONFIG_SND_SOC_RCAR=m +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RSRC_CARD=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_SAMSUNG=m +CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m +CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m +CONFIG_SND_SOC_SH4_FSI=m +CONFIG_SND_SOC_SI476X=m +CONFIG_SND_SOC_SIGMADSP=m +CONFIG_SND_SOC_SIGMADSP_I2C=m +CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m +CONFIG_SND_SOC_SMDK_WM8994_PCM=m +CONFIG_SND_SOC_SN95031=m +CONFIG_SND_SOC_SNOW=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_SSM2602_I2C=m +CONFIG_SND_SOC_SSM2602_SPI=m +CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m +CONFIG_SND_SOC_STORM=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TEGRA=m +CONFIG_SND_SOC_TEGRA20_AC97=m +CONFIG_SND_SOC_TEGRA20_DAS=m +CONFIG_SND_SOC_TEGRA20_I2S=m +CONFIG_SND_SOC_TEGRA20_SPDIF=m +CONFIG_SND_SOC_TEGRA30_AHUB=m +CONFIG_SND_SOC_TEGRA30_I2S=m +CONFIG_SND_SOC_TEGRA_ALC5632=m +CONFIG_SND_SOC_TEGRA_MAX98090=m +CONFIG_SND_SOC_TEGRA_RT5640=m +CONFIG_SND_SOC_TEGRA_RT5677=m +CONFIG_SND_SOC_TEGRA_TRIMSLICE=m +CONFIG_SND_SOC_TEGRA_WM8753=m +CONFIG_SND_SOC_TEGRA_WM8903=m +CONFIG_SND_SOC_TEGRA_WM9712=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m +CONFIG_SND_SOC_TLV320AIC31XX=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TOPOLOGY=y +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8994=m +CONFIG_SND_SOC_WM9712=m +CONFIG_SND_SOC_WM_HUBS=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_SST_IPC=m +CONFIG_SND_SST_IPC_ACPI=m +CONFIG_SND_SST_IPC_PCI=m +CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SUN4I_CODEC=m +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_VARIAX=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VMASTER=y +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_WSS_LIB=m +CONFIG_SND_YMFPCI=m +# CONFIG_SOCRATES is not set +# CONFIG_SOC_AM43XX is not set +CONFIG_SOC_BRCMSTB=y +CONFIG_SOC_BUS=y +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_IMX074=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9T112=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_OV2640=m +CONFIG_SOC_CAMERA_OV5642=m +CONFIG_SOC_CAMERA_OV6650=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_SOC_CAMERA_OV9640=m +CONFIG_SOC_CAMERA_OV9740=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_RJ54N1=m +CONFIG_SOC_CAMERA_SCALE_CROP=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_DRA7XX=y +CONFIG_SOC_EXYNOS5250=y +CONFIG_SOC_EXYNOS5260=y +CONFIG_SOC_EXYNOS5410=y +CONFIG_SOC_EXYNOS5420=y +CONFIG_SOC_EXYNOS5440=y +CONFIG_SOC_EXYNOS5800=y +CONFIG_SOC_HAS_OMAP2_SDRC=y +CONFIG_SOC_HAS_REALTIME_COUNTER=y +CONFIG_SOC_IMX5=y +CONFIG_SOC_IMX50=y +CONFIG_SOC_IMX51=y +# CONFIG_SOC_IMX53 is not set +CONFIG_SOC_IMX6=y +CONFIG_SOC_IMX6Q=y +CONFIG_SOC_IMX6SL=y +CONFIG_SOC_IMX6SX=y +CONFIG_SOC_IMX6UL=y +CONFIG_SOC_IMX7D=y +# CONFIG_SOC_LS1021A is not set +CONFIG_SOC_OMAP3430=y +# CONFIG_SOC_OMAP5 is not set +CONFIG_SOC_TI81XX=y +CONFIG_SOC_VF610=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SONYPI=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_FF=y +CONFIG_SONY_LAPTOP=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SP5100_TCO=m +CONFIG_SPAPR_TCE_IOMMU=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSE_IRQ=y +# CONFIG_SPARSE_RCU_POINTER is not set +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTPC=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_DECPC=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DTLK=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +CONFIG_SPEAKUP_SYNTH_KEYPC=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPI_ALTERA=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_CADENCE=m +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DLN2=m +CONFIG_SPI_DW_MID_DMA=y +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_FSL_CPM=y +CONFIG_SPI_FSL_DSPI=m +CONFIG_SPI_FSL_ESPI=y +CONFIG_SPI_FSL_LIB=y +CONFIG_SPI_FSL_QUADSPI=m +CONFIG_SPI_FSL_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_IMX=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_MT65XX=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=y +CONFIG_SPI_ORION=m +CONFIG_SPI_PL022=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_DMA=y +CONFIG_SPI_QUP=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_RSPI=m +CONFIG_SPI_S3C64XX=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SH_HSPI=m +CONFIG_SPI_SH_MSIOF=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_TEGRA20_SLINK=m +CONFIG_SPI_TI_QSPI=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_TOPCLIFF_PCH=m +CONFIG_SPI_XCOMM=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPMI_MSM_PMIC_ARB=m +CONFIG_SPU_BASE=y +CONFIG_SPU_FS=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SRCU=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_HOST_SOC=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SILENT is not set +CONFIG_SSB_SPROM=y +CONFIG_SSFDC=m +CONFIG_SSI_PROTOCOL=m +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STACK_GUARD=256 +CONFIG_STACK_TRACER=y +# CONFIG_STAGING_BOARD is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STAGING_RDMA=m +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_STE10XP=m +CONFIG_STK3310=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +CONFIG_STM=m +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=m +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STMP_DEVICE=y +CONFIG_STM_DUMMY=m +CONFIG_STM_SOURCE_CONSOLE=m +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRICT_MM_TYPECHECKS is not set +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_STUB_CLK_HI6220=y +# CONFIG_STX_GP3 is not set +CONFIG_SUDMAC=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNGEM_PHY=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_SWAP=y +CONFIG_SUNRPC_XPRT_RDMA=m +# CONFIG_SUNXI_SRAM is not set +CONFIG_SURFACE_PRO3_BUTTON=m +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SWP_EMULATE=y +CONFIG_SWP_EMULATION=y +CONFIG_SX9500=m +CONFIG_SXGBE_ETH=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYNOPSYS_DWC_ETH_QOS=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_SYSTEMPORT=m +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_SYS_SUPPORTS_EM_STI=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_SYS_SUPPORTS_SH_CMT=y +CONFIG_SYS_SUPPORTS_SH_MTU2=y +CONFIG_SYS_SUPPORTS_SH_TMU=y +CONFIG_T5403=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TAHVO_USB=m +CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +# CONFIG_TASKS_RCU is not set +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_TASK_SIZE=0xc0000000 +CONFIG_TASK_XACCT=y +CONFIG_TAU=y +# CONFIG_TAU_AVERAGE is not set +# CONFIG_TAU_INT is not set +CONFIG_TC1100_WMI=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_CRB=m +CONFIG_TCG_IBMVTPM=y +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TIS=y +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TCG_TPM=y +CONFIG_TCG_XEN=m +CONFIG_TCIC=m +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_QLA2XXX=m +CONFIG_TCM_USER2=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_MD5SIG=y +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_TEGRA124_EMC=y +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA20_MC=y +CONFIG_TEGRA_AHB=y +CONFIG_TEGRA_CLK_EMC=y +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y +CONFIG_TEGRA_IOMMU_GART=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEGRA_MC=y +# CONFIG_TEGRA_SOCTHERM is not set +CONFIG_TEGRA_TIMER=y +CONFIG_TEGRA_WATCHDOG=m +CONFIG_TEHUTI=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +CONFIG_TERANETICS_PHY=m +CONFIG_TEST_BPF=m +CONFIG_TEST_FIRMWARE=m +CONFIG_TEST_HEXDUMP=m +CONFIG_TEST_KSTRTOX=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_LKM=m +CONFIG_TEST_POWER=m +CONFIG_TEST_PRINTF=m +# CONFIG_TEST_RHASHTABLE is not set +CONFIG_TEST_STATIC_KEYS=m +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TEST_UDELAY=m +CONFIG_TEST_USER_COPY=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_EMULATION=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERM_ADT746X=y +CONFIG_THERM_WINDTUNNEL=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUG is not set +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THRUSTMASTER_FF=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TICK_ONESHOT=y +CONFIG_TIFM_7XX1=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_CPPI41=m +CONFIG_TI_CPSW=y +CONFIG_TI_CPSW_PHY_SEL=y +CONFIG_TI_CPTS=y +CONFIG_TI_DAC7512=m +CONFIG_TI_DAVINCI_CPDMA=y +CONFIG_TI_DAVINCI_EMAC=m +CONFIG_TI_DAVINCI_MDIO=y +CONFIG_TI_DMA_CROSSBAR=y +CONFIG_TI_EDMA=y +CONFIG_TI_EMIF=m +CONFIG_TI_PIPE3=m +CONFIG_TI_SOC_THERMAL=m +CONFIG_TI_ST=m +CONFIG_TI_THERMAL=y +CONFIG_TLAN=m +CONFIG_TMD_HERMES=m +CONFIG_TMP006=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TN3215=y +CONFIG_TN3215_CONSOLE=y +CONFIG_TN3270=y +CONFIG_TN3270_CONSOLE=y +CONFIG_TN3270_FS=m +CONFIG_TN3270_TTY=y +CONFIG_TOIM3232_DONGLE=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_TORTURE_TEST=m +# CONFIG_TOSHIBA is not set +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_FIR=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_TOSHIBA_WMI=m +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AR1021_I2C=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m +CONFIG_TOUCHSCREEN_COLIBRI_VF50=m +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_DA9034=m +CONFIG_TOUCHSCREEN_DA9052=m +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_FT6236=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_IMX6UL_TSC=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_INTEL_MID=m +CONFIG_TOUCHSCREEN_IPROC=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_PROPERTIES=y +CONFIG_TOUCHSCREEN_ROHM_BU21023=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_TSC2004=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC200X_CORE=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_ZFORCE=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +# CONFIG_TQM8540 is not set +# CONFIG_TQM8541 is not set +# CONFIG_TQM8548 is not set +# CONFIG_TQM8555 is not set +# CONFIG_TQM8560 is not set +CONFIG_TRACEPOINTS=y +# CONFIG_TRACEPOINT_BENCHMARK is not set +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_TRACE_CLOCK=y +# CONFIG_TRACE_ENUM_MAP_FILE is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACING=y +CONFIG_TRACING_EVENTS_GPIO=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TREE_RCU=y +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_TRUSTED_FOUNDATIONS=y +CONFIG_TRUSTED_KEYS=y +CONFIG_TSL2583=m +CONFIG_TSL2x7x=m +CONFIG_TSL4531=m +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +CONFIG_TTPCI_EEPROM=m +CONFIG_TTY=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=y +# CONFIG_TUNE_DEFAULT is not set +# CONFIG_TUNE_Z10 is not set +# CONFIG_TUNE_Z13 is not set +# CONFIG_TUNE_Z196 is not set +# CONFIG_TUNE_Z900 is not set +# CONFIG_TUNE_Z990 is not set +# CONFIG_TUNE_Z9_109 is not set +CONFIG_TUNE_ZEC12=y +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_USB=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6030_GPADC=m +CONFIG_TWL6030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_TWR_P102x=y +CONFIG_TYPHOON=m +# CONFIG_UACCESS_WITH_MEMCPY is not set +CONFIG_UBIFS_ATIME_SUPPORT=y +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UCB1400_CORE=m +CONFIG_UCS2_STRING=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UEFI_CPER=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UHID=m +CONFIG_UID16=y +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_UNISYSSPAR=y +CONFIG_UNISYS_VISORBUS=m +CONFIG_UNISYS_VISORHBA=m +CONFIG_UNISYS_VISORINPUT=m +CONFIG_UNISYS_VISORNIC=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX_DIAG=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_UPROBE_EVENT=y +CONFIG_US5182D=m +CONFIG_USB=y +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACM=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AN2720=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BDC_PCI=m +CONFIG_USB_BDC_UDC=m +CONFIG_USB_BELKIN=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_CHIPIDEA=m +# CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_OF=m +CONFIG_USB_CHIPIDEA_PCI=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_COMMON=y +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_DUAL_ROLE is not set +CONFIG_USB_DWC2_HOST=y +CONFIG_USB_DWC2_PCI=y +# CONFIG_USB_DWC2_PERIPHERAL is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_DUAL_ROLE=y +CONFIG_USB_DWC3_EXYNOS=m +# CONFIG_USB_DWC3_GADGET is not set +# CONFIG_USB_DWC3_HOST is not set +CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_DWC3_QCOM=m +CONFIG_USB_DWC3_ULPI=y +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EG20T=m +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_EXYNOS=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_OMAP=m +CONFIG_USB_EHCI_HCD_ORION=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_MSM=m +CONFIG_USB_EHCI_MXC=m +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TEGRA=m +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMXX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FSL_QE=m +CONFIG_USB_FSL_USB2=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_FS=m +CONFIG_USB_F_HID=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_PRINTER=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_XILINX=m +CONFIG_USB_GL860=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GR_UDC=m +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_DBGP=m +# CONFIG_USB_G_DBGP_PRINTK is not set +CONFIG_USB_G_DBGP_SERIAL=y +CONFIG_USB_G_HID=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_MULTI_RNDIS=y +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HACKRF=m +# CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IMX21_HCD=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_DUAL_ROLE=y +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_HCD=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +CONFIG_USB_ISP1761_UDC=y +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LED_TRIG=y +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_M5602=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_MA901=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MON=m +CONFIG_USB_MOUSE=m +CONFIG_USB_MR800=m +CONFIG_USB_MSI2500=m +CONFIG_USB_MSM_OTG=m +CONFIG_USB_MUSB_AM335X_CHILD=m +CONFIG_USB_MUSB_AM35X=m +CONFIG_USB_MUSB_DSPS=m +CONFIG_USB_MUSB_DUAL_ROLE=y +# CONFIG_USB_MUSB_GADGET is not set +# CONFIG_USB_MUSB_HOST is not set +CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_MV_U3D=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_MXS_PHY=y +CONFIG_USB_NET2272=m +CONFIG_USB_NET2272_DMA=y +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_DRIVERS=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_EXYNOS=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_OMAP3=m +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHY=y +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_PXA27X=m +CONFIG_USB_QCOM_8X16_PHY=m +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_S2255=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SI470X=m +CONFIG_USB_SI4713=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STV06XX=m +CONFIG_USB_SWITCH_FSA9480=m +CONFIG_USB_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_UAS=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_VL600=m +CONFIG_USB_WDM=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_MVEBU=m +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_RCAR=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YUREX=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZERO=m +CONFIG_USB_ZR364XX=m +CONFIG_USELIB=y +CONFIG_USERFAULTFD=y +CONFIG_USERIO=m +CONFIG_USER_NS=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_USE_OF=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_UTS_NS=y +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_WHCI=m +CONFIG_V4L2_FLASH_LED_CLASS=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VCNL4000=m +CONFIG_VDSO=y +CONFIG_VDSO32=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VEXPRESS_CONFIG=y +CONFIG_VEXPRESS_SYSCFG=y +CONFIG_VF610_ADC=m +CONFIG_VFAT_FS=y +CONFIG_VFIO=m +CONFIG_VFIO_AMBA=m +CONFIG_VFIO_IOMMU_SPAPR_TCE=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PLATFORM=m +CONFIG_VFIO_PLATFORM_AMDXGBE_RESET=m +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=m +CONFIG_VFIO_SPAPR_EEH=m +CONFIG_VFIO_VIRQFD=m +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_VF_USE_ARM_GLOBAL_TIMER=y +# CONFIG_VF_USE_PIT_TIMER is not set +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_CONSOLE=y +CONFIG_VGA_SWITCHEROO=y +CONFIG_VHOST=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set +CONFIG_VHOST_NET=m +CONFIG_VHOST_RING=m +CONFIG_VHOST_SCSI=m +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_VIA_WDT=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7511=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7842=m +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_COBALT=m +CONFIG_VIDEO_CODA=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DT3155=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_FB_IVTV=m +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MX3=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OMAP2_VOUT=m +CONFIG_VIDEO_OMAP2_VOUT_VRFB=y +CONFIG_VIDEO_OMAP3=m +# CONFIG_VIDEO_OMAP3_DEBUG is not set +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_RCAR_VIN=m +CONFIG_VIDEO_RENESAS_JPU=m +CONFIG_VIDEO_RENESAS_VSP1=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA6752HS=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_GO7007=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_SAA7185=m +# CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS is not set +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m +CONFIG_VIDEO_SAMSUNG_S5P_G2D=m +CONFIG_VIDEO_SAMSUNG_S5P_HDMI=m +CONFIG_VIDEO_SAMSUNG_S5P_HDMIPHY=m +# CONFIG_VIDEO_SAMSUNG_S5P_HDMI_DEBUG is not set +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m +CONFIG_VIDEO_SAMSUNG_S5P_MIXER=m +# CONFIG_VIDEO_SAMSUNG_S5P_MIXER_DEBUG is not set +CONFIG_VIDEO_SAMSUNG_S5P_SDO=m +CONFIG_VIDEO_SAMSUNG_S5P_SII9234=m +CONFIG_VIDEO_SAMSUNG_S5P_TV=y +CONFIG_VIDEO_SH_MOBILE_CEU=m +CONFIG_VIDEO_SH_MOBILE_CSI2=m +CONFIG_VIDEO_SH_VEU=m +CONFIG_VIDEO_SH_VOU=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TIMBERDALE=m +CONFIG_VIDEO_TI_VPE=m +# CONFIG_VIDEO_TI_VPE_DEBUG is not set +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VIVID_MAX_DEVS=64 +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_XILINX=m +CONFIG_VIDEO_XILINX_TPG=m +CONFIG_VIDEO_XILINX_VTC=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_VLSI_FIR=m +# CONFIG_VM86 is not set +CONFIG_VMCP=y +CONFIG_VME_CA91CX42=m +CONFIG_VME_PIO2=m +CONFIG_VME_TSI148=m +CONFIG_VME_USER=m +CONFIG_VMIVME_7805=m +CONFIG_VMLOGRDR=m +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +CONFIG_VMWARE_BALLOON=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_VMWARE_VMCI=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VORTEX=m +CONFIG_VSOCKETS=m +CONFIG_VSX=y +CONFIG_VT=y +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_VXLAN=m +CONFIG_VZ89X=m +CONFIG_W1_CON=y +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_MXC=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_WANXL=m +# CONFIG_WARN_DYNAMIC_STACK is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WD80x3=m +CONFIG_WDT=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +# CONFIG_WILC1000_DRIVER is not set +CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WINDFARM=m +CONFIG_WINDFARM_PM112=m +CONFIG_WINDFARM_PM121=m +CONFIG_WINDFARM_PM72=m +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM91=m +CONFIG_WINDFARM_RM31=m +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIZNET_BUS_ANY=y +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +CONFIG_WKUP_M3_RPROC=m +CONFIG_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLAN=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WL_MEDIATEK=y +CONFIG_WL_TI=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_X25_ASY=m +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_X86=y +CONFIG_X86_16BIT=y +CONFIG_X86_32=y +CONFIG_X86_32_IRIS=m +# CONFIG_X86_32_NON_STANDARD is not set +CONFIG_X86_32_SMP=y +CONFIG_X86_64=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_64_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_AMD_PLATFORM_DEVICE=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_APM_BOOT=y +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CPUFREQ_NFORCE2=y +CONFIG_X86_CPUID=m +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_X86_DEBUG_FPU=y +# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_X86_DIRECT_GBPAGES=y +CONFIG_X86_ESPFIX32=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_GENERIC=y +# CONFIG_X86_GOLDFISH is not set +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_INTEL_MID=y +CONFIG_X86_INTEL_MPX=y +CONFIG_X86_INTEL_PSTATE=y +# CONFIG_X86_INTEL_QUARK is not set +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +# CONFIG_X86_LEGACY_VM86 is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_LONGHAUL=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_MCE=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=m +CONFIG_X86_NEED_RELOCS=y +CONFIG_X86_NUMACHIP=y +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_PAE=y +CONFIG_X86_PAT=y +CONFIG_X86_PCC_CPUFREQ=y +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_X86_PMEM_LEGACY=y +CONFIG_X86_PMEM_LEGACY_DEVICE=y +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_PTDUMP is not set +# CONFIG_X86_PTDUMP_CORE is not set +# CONFIG_X86_RDC321X is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_X86_SFI_CPUFREQ=m +CONFIG_X86_SMAP=y +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=y +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_X86_SPEEDSTEP_SMI=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_SYSFB is not set +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_X86_UV is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_X2APIC=y +CONFIG_X86_X32=y +CONFIG_XENFS=m +CONFIG_XEN_512GB=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_ACPI_PROCESSOR=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_BACKEND=y +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_COMPAT_XENFS=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_DOM0=y +CONFIG_XEN_EFI=y +CONFIG_XEN_FBDEV_FRONTEND=m +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_HAVE_VPMU=y +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_PVH=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_XEN_SELFBALLOONING=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_TMEM=m +CONFIG_XEN_WDT=m +CONFIG_XEN_XENBUS_FRONTEND=y +# CONFIG_XES_MPC85xx is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +CONFIG_XFRM_STATISTICS=y +# CONFIG_XFRM_SUB_POLICY is not set +CONFIG_XFRM_USER=m +# CONFIG_XFS_DEBUG is not set +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +# CONFIG_XFS_WARN is not set +CONFIG_XGENE_DMA=m +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILLYBUS_OF=m +CONFIG_XILLYBUS_PCIE=m +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DISASSEMBLY=y +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XPS_USB_HCD_XILINX=y +CONFIG_XZ_DEC=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBUD=y +CONFIG_ZCRYPT=m +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZFCP=m +CONFIG_ZISOFS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DEVICE=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZPOOL=y +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSWAP=y --- linux-4.4.0.orig/debian.master/config/i386/config.common.i386 +++ linux-4.4.0/debian.master/config/i386/config.common.i386 @@ -0,0 +1,464 @@ +# +# Config options for config.common.i386 automatically generated by splitconfig.pl +# +# CONFIG_64BIT is not set +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=y +CONFIG_ATM=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CONFIGFS_FS=m +CONFIG_CRAMFS=m +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_HAVE_ARCH_BITREVERSE is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATION=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HPET=y +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HUGETLB_PAGE=y +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +# CONFIG_HZ_100 is not set +CONFIG_I2C=y +# CONFIG_I2C_SLAVE is not set +CONFIG_I6300ESB_WDT=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_IMA=y +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_ISA=y +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_XZ is not set +CONFIG_KVM=m +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_VX855=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=8 +# CONFIG_NR_ZONES_EXTENDED is not set +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=m +CONFIG_N_GSM=m +# CONFIG_OF is not set +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT=m +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCMCIA=m +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RANDOMIZE_BASE_MAX_OFFSET=0x20000000 +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_FSL is not set +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_PCM=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +# CONFIG_STANDALONE is not set +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_SYS_HYPERVISOR=y +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UPROBES=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VGASTATE=m +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +CONFIG_X86_SPEEDSTEP_LIB=y +CONFIG_XEN=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=4 +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/i386/config.flavour.generic +++ linux-4.4.0/debian.master/config/i386/config.flavour.generic @@ -0,0 +1,9 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-4.4.0.orig/debian.master/config/i386/config.flavour.lowlatency +++ linux-4.4.0/debian.master/config/i386/config.flavour.lowlatency @@ -0,0 +1,9 @@ +# +# Config options for config.flavour.lowlatency automatically generated by splitconfig.pl +# +CONFIG_HZ=1000 +CONFIG_HZ_1000=y +# CONFIG_HZ_250 is not set +CONFIG_IRQ_FORCED_THREADING_DEFAULT=y +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-4.4.0.orig/debian.master/config/powerpc/config.common.powerpc +++ linux-4.4.0/debian.master/config/powerpc/config.common.powerpc @@ -0,0 +1,460 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APM_EMULATION=m +CONFIG_APPLICOM=m +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CONFIGFS_FS=m +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +CONFIG_CRAMFS=m +# CONFIG_CRYPTO_DEV_FSL_CAAM_IMX is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM_LE is not set +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_MACMODES=y +CONFIG_FB_VOODOO1=y +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +# CONFIG_GENERIC_CSUM is not set +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +# CONFIG_I2C_SLAVE is not set +CONFIG_I6300ESB_WDT=m +# CONFIG_IBMEBUS is not set +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INPUT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_ISA is not set +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KVM=y +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPARCFG is not set +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MATH_EMULATION=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_VX855=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MPIC_MSGR=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NCP_FS=m +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NODES_SHIFT=8 +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NOZOMI=m +# CONFIG_NR_ZONES_EXTENDED is not set +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=y +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCMCIA=m +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x04000000 +CONFIG_PHYSICAL_START=0x00000000 +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +# CONFIG_POWER7_CPU is not set +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_DENORMALISATION is not set +CONFIG_PPC_DISABLE_WERROR=y +CONFIG_PPC_ICSWX=y +# CONFIG_PPC_SMLPAR is not set +# CONFIG_PPC_SPLPAR is not set +CONFIG_PPP=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SIMPLE_GPIO=y +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_EMU10K1_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +CONFIG_UDBG_RTAS_CONSOLE=y +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UPROBES=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_FSL_MPH_DR_OF=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_VGASTATE=m +# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/powerpc/config.flavour.powerpc-e500mc +++ linux-4.4.0/debian.master/config/powerpc/config.flavour.powerpc-e500mc @@ -0,0 +1,59 @@ +# +# Config options for config.flavour.powerpc-e500mc automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_UIMAGE=y +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GENERIC_TBSYNC=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HIBERNATION=y +CONFIG_HUGETLB_PAGE=y +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=8 +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PPC64 is not set +CONFIG_PPC_85xx=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3S_32 is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +CONFIG_PPC_DOORBELL=y +CONFIG_PPC_EPAPR_HV_PIC=y +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +CONFIG_RTC_DRV_DS3232=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_WORD_SIZE=32 --- linux-4.4.0.orig/debian.master/config/powerpc/config.flavour.powerpc-smp +++ linux-4.4.0/debian.master/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,60 @@ +# +# Config options for config.flavour.powerpc-smp automatically generated by splitconfig.pl +# +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +# CONFIG_DEFAULT_UIMAGE is not set +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GENERIC_TBSYNC=y +# CONFIG_HAS_RAPIDIO is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HIBERNATION=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=4 +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PGTABLE_LEVELS=2 +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PPC64 is not set +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3S_32=y +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +# CONFIG_PPC_DOORBELL is not set +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_PPC_MPC106=y +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +# CONFIG_PPC_P7_NAP is not set +CONFIG_PPC_RTAS=y +# CONFIG_PPC_XICS is not set +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_WORD_SIZE=32 --- linux-4.4.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-emb +++ linux-4.4.0/debian.master/config/powerpc/config.flavour.powerpc64-emb @@ -0,0 +1,63 @@ +# +# Config options for config.flavour.powerpc64-emb automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_UIMAGE=y +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=y +CONFIG_FORCE_MAX_ZONEORDER=13 +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HIBERNATION is not set +CONFIG_HUGETLB_PAGE=y +# CONFIG_IMA is not set +CONFIG_KERNEL_START=0xc000000000000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=8 +# CONFIG_NUMA is not set +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3E_64=y +# CONFIG_PPC_BOOK3S_64 is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +CONFIG_PPC_DOORBELL=y +CONFIG_PPC_EPAPR_HV_PIC=y +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +CONFIG_RTC_DRV_DS3232=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_U3_DART is not set +CONFIG_WORD_SIZE=64 --- linux-4.4.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-smp +++ linux-4.4.0/debian.master/config/powerpc/config.flavour.powerpc64-smp @@ -0,0 +1,63 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ATA_NONSTANDARD=y +CONFIG_CRASH_DUMP=y +CONFIG_CXL_BASE=y +CONFIG_CXL_EEH=y +CONFIG_CXL_KERNEL_API=y +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_EPAPR_BOOT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_GENERIC_TBSYNC=y +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIBERNATION=y +CONFIG_HUGETLB_PAGE=y +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_MMIO_NVRAM=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=1024 +CONFIG_NUMA=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +CONFIG_PPC_970_NAP=y +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S_64=y +CONFIG_PPC_CELL=y +CONFIG_PPC_COPRO_BASE=y +CONFIG_PPC_DOORBELL=y +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_XICS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_U3_DART=y +CONFIG_WORD_SIZE=64 --- linux-4.4.0.orig/debian.master/config/ppc64el/config.common.ppc64el +++ linux-4.4.0/debian.master/config/ppc64el/config.common.ppc64el @@ -0,0 +1,510 @@ +# +# Config options for config.common.ppc64el automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCNET=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CMA=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMM=m +CONFIG_CONFIGFS_FS=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CRAMFS=m +CONFIG_CRASH_DUMP=y +CONFIG_CXL_BASE=y +CONFIG_CXL_EEH=y +CONFIG_CXL_KERNEL_API=y +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_DMADEVICES=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DNET=m +CONFIG_DRM=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EFS_FS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_EPAPR_BOOT=y +CONFIG_ETHOC=m +CONFIG_EXOFS_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB=y +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=y +CONFIG_FB_MACMODES=y +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FMC=m +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FRAME_WARN=2048 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_PHY=y +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HIBERNATION is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HUGETLB_PAGE=y +CONFIG_HWMON=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +# CONFIG_I2C_SLAVE is not set +CONFIG_I6300ESB_WDT=m +CONFIG_IBMEBUS=y +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_IMA=y +CONFIG_INFINIBAND_NES=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INPUT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPX=m +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_IRQ_ALL_CPUS=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KVM=y +CONFIG_LAPB=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPARCFG=y +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_CORE=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_VX855=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_MSGR is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_9P=m +CONFIG_NET_CADENCE=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NODES_SHIFT=8 +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=2048 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +# CONFIG_PCCARD is not set +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_POWER7_CPU=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPC64=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S_64=y +# CONFIG_PPC_CELL is not set +CONFIG_PPC_COPRO_BASE=y +CONFIG_PPC_DENORMALISATION=y +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_DOORBELL=y +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +# CONFIG_PPC_ICSWX is not set +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_SMLPAR=y +CONFIG_PPC_SPLPAR=y +CONFIG_PPC_XICS=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_R3964=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_ROMFS_FS=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=y +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_SIMPLE_GPIO is not set +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_EMU10K1_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_STE_MODEM_RPROC=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_THERMAL=y +CONFIG_THUNDERBOLT=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=y +CONFIG_TI_CPSW_ALE=m +CONFIG_TRACE_SINK=m +CONFIG_TTY_PRINTK=y +# CONFIG_U3_DART is not set +# CONFIG_UDBG_RTAS_CONSOLE is not set +CONFIG_UFS_FS=m +CONFIG_UIO=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UPROBES=y +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +# CONFIG_USB_OHCI_HCD_PPC_OF is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +CONFIG_USB_SUPPORT=y +CONFIG_UWB=m +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_VGASTATE=m +# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_WORD_SIZE=64 +CONFIG_X25=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/ppc64el/config.flavour.generic +++ linux-4.4.0/debian.master/config/ppc64el/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-4.4.0.orig/debian.master/config/s390x/config.common.s390x +++ linux-4.4.0/debian.master/config/s390x/config.common.s390x @@ -0,0 +1,381 @@ +# +# Config options for config.common.s390x automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +# CONFIG_6LOWPAN is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_APPLICOM is not set +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +# CONFIG_ARCNET is not set +# CONFIG_ATALK is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_ATM is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUTOFS4_FS=y +# CONFIG_AUXDISPLAY is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_BCMA is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_SKD is not set +CONFIG_BLK_DEV_SR_VENDOR=y +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BOUNCE is not set +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_C2PORT is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_CAIF is not set +# CONFIG_CAN is not set +# CONFIG_CB710_CORE is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_CMA is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_CMM=y +CONFIG_CONFIGFS_FS=y +# CONFIG_CRAMFS is not set +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +# CONFIG_DECNET is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_DMADEVICES is not set +# CONFIG_DMA_SHARED_BUFFER is not set +CONFIG_DM_DEBUG=y +CONFIG_DM_MQ_DEFAULT=y +# CONFIG_DNET is not set +# CONFIG_DRM is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_ECHO is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EFS_FS is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_ETHOC is not set +# CONFIG_EXOFS_FS is not set +# CONFIG_EXTCON is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FB is not set +# CONFIG_FDDI is not set +# CONFIG_FEALNX is not set +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_FIXED_PHY=m +# CONFIG_FMC is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FRAME_WARN=1024 +# CONFIG_FUSION is not set +# CONFIG_GAMEPORT is not set +# CONFIG_GENERIC_PHY is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_HFS_FS is not set +CONFIG_HIBERNATION=y +CONFIG_HOTPLUG_PCI_PCIE=y +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HPFS_FS is not set +# CONFIG_HP_ILO is not set +# CONFIG_HSI is not set +# CONFIG_HSR is not set +# CONFIG_HTC_PASIC3 is not set +CONFIG_HUGETLB_PAGE=y +# CONFIG_HWMON is not set +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_250 is not set +# CONFIG_I2C is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_IEEE802154 is not set +# CONFIG_IIO is not set +CONFIG_IMA=y +# CONFIG_INFINIBAND_NES is not set +# CONFIG_INFINIBAND_OCRDMA is not set +# CONFIG_INFINIBAND_QIB is not set +# CONFIG_INPUT is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPX is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_JFS_FS is not set +# CONFIG_JME is not set +CONFIG_JUMP_LABEL=y +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KERNEL_GZIP is not set +CONFIG_KERNEL_XZ=y +CONFIG_KVM=y +# CONFIG_LAPB is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_LIBNVDIMM is not set +# CONFIG_LIVEPATCH is not set +# CONFIG_LLC2 is not set +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 +# CONFIG_MAILBOX is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_MCB is not set +CONFIG_MD_MULTIPATH=y +# CONFIG_MEDIA_SUPPORT is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_MEMORY is not set +# CONFIG_MEMSTICK is not set +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MINIX_FS is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_MMC is not set +# CONFIG_MTD is not set +# CONFIG_NCP_FS is not set +CONFIG_NEED_DMA_MAP_STATE=y +# CONFIG_NET_9P is not set +# CONFIG_NET_CADENCE is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_NFC is not set +# CONFIG_NODES_SPAN_OTHER_NODES is not set +# CONFIG_NOZOMI is not set +CONFIG_NR_CPUS=256 +# CONFIG_NTB is not set +CONFIG_NTFS_RW=y +# CONFIG_NUMA is not set +# CONFIG_N_GSM is not set +# CONFIG_OF is not set +# CONFIG_OMFS_FS is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PARPORT is not set +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_QUIRKS is not set +# CONFIG_PCMCIA is not set +CONFIG_PGTABLE_LEVELS=4 +# CONFIG_PGTABLE_MAPPING is not set +# CONFIG_PHANTOM is not set +# CONFIG_PHONET is not set +CONFIG_PHYLIB=m +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PM_DEBUG is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_PM_WAKELOCKS is not set +# CONFIG_POWERCAP is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_PPP is not set +CONFIG_PPS=m +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE is not set +CONFIG_PTP_1588_CLOCK=m +# CONFIG_PWM is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_REGULATOR is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_RFKILL is not set +# CONFIG_ROMFS_FS is not set +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_BFA_FC is not set +# CONFIG_SCSI_BNX2X_FCOE is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_SCSI_CHELSIO_FCOE is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_LPFC is not set +CONFIG_SCSI_MQ_DEFAULT=y +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SNIC is not set +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_CORE=m +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIO is not set +# CONFIG_SFC is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_SLIP is not set +# CONFIG_SOC_TI is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_SOUND is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_SRAM is not set +# CONFIG_SSB is not set +# CONFIG_STAGING is not set +CONFIG_STANDALONE=y +# CONFIG_STE_MODEM_RPROC is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_SYSV_FS is not set +CONFIG_SYS_HYPERVISOR=y +# CONFIG_THERMAL is not set +# CONFIG_THUNDERBOLT is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_TRACE_SINK is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_UFS_FS is not set +# CONFIG_UIO is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +CONFIG_UPROBES=y +# CONFIG_USB_SUPPORT is not set +# CONFIG_UWB is not set +CONFIG_VFIO_IOMMU_TYPE1=m +# CONFIG_VGASTATE is not set +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y +# CONFIG_VME_BUS is not set +# CONFIG_VMXNET3 is not set +# CONFIG_VXFS_FS is not set +# CONFIG_W1 is not set +# CONFIG_WAN is not set +# CONFIG_WDTPCI is not set +# CONFIG_WIMAX is not set +# CONFIG_X25 is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_BCJ is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set +# CONFIG_XZ_DEC_X86 is not set +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA_FLAG=1 --- linux-4.4.0.orig/debian.master/config/s390x/config.flavour.generic +++ linux-4.4.0/debian.master/config/s390x/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-4.4.0.orig/debian.master/config/x32/config.common.x32 +++ linux-4.4.0/debian.master/config/x32/config.common.x32 @@ -0,0 +1 @@ +# nothing here yet --- linux-4.4.0.orig/debian.master/config/x32/config.flavour.generic +++ linux-4.4.0/debian.master/config/x32/config.flavour.generic @@ -0,0 +1 @@ +# nothing here yet --- linux-4.4.0.orig/debian.master/control.d/flavour-control.stub +++ linux-4.4.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,136 @@ +# Items that get replaced: +# FLAVOUR +# DESC +# ARCH +# SUPPORTED +# TARGET +# BOOTLOADER +# =PROVIDES= +# +# Items marked with =FOO= are optional +# +# This file describes the template for packages that are created for each flavour +# in debian/control.d/vars.* +# +# This file gets edited in a couple of places. See the debian/control.stub rule in +# debian/rules. PGGVER, ABINUM, and SRCPKGNAME are all converted in the +# process of creating debian/control. +# +# The flavour specific strings (ARCH, DESC, etc) are converted using values from the various +# flavour files in debian/control.d/vars.* +# +# XXX: Leave the blank line before the first package!! + +Package: linux-image-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, =PROVIDES= +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: BOOTLOADER +Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version PKGVER on DESC + This package contains the Linux kernel extra modules for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-PKGVER-ABINUM/debian.README.gz for details. + +Package: linux-image-PKGVER-ABINUM-FLAVOUR-dbgsym +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version PKGVER on DESC + This package provides a kernel debug image for version PKGVER on + DESC. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-tools-PKGVER-ABINUM +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + +Package: linux-cloud-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Description: Linux kernel version specific cloud tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version PKGVER-ABINUM on + =HUMAN=. + +Package: linux-udebs-FLAVOUR +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: ARCH +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + --- linux-4.4.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-4.4.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,187 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/s390/* +arch/x86/kvm/kvm-intel.ko +arch/x86/kvm/kvm-amd.ko +crypto/* +drivers/acpi/* +drivers/char/ipmi/ipmi_msghandler.ko +drivers/ata/ahci_platform.ko +drivers/ata/ahci.ko +drivers/ata/acard-ahci.ko +drivers/ata/libahci.ko +drivers/ata/libahci_platform.ko +drivers/block/nbd.ko +drivers/block/floppy.ko +drivers/block/cryptoloop.ko +drivers/block/rbd.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/firmware/iscsi_ibft.ko +drivers/hid/hid.ko +drivers/hid/hid-hyperv.ko +drivers/hv/* +drivers/infiniband/core/ib_core.ko +drivers/infiniband/core/ib_addr.ko +drivers/infiniband/core/ib_cm.ko +drivers/infiniband/core/ib_mad.ko +drivers/infiniband/core/ib_sa.ko +drivers/infiniband/core/iw_cm.ko +drivers/infiniband/core/rdma_cm.ko +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/mouse/psmouse.ko +drivers/input/serio/hyperv-keyboard.ko +drivers/input/serio/serio_raw.ko +drivers/input/serio/serport.ko +drivers/input/joydev.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/input/misc/xen-kbdfront.ko +drivers/md/* +drivers/message/fusion* +drivers/nvme/host/nvme.ko +drivers/s390/* +drivers/scsi/scsi_transport_spi.ko +drivers/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/net/caif/caif_virtio.ko +drivers/net/mii.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/ppp/bsd_comp.ko +drivers/net/dummy.ko +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/eql.ko +drivers/net/ethernet/ibm/* +drivers/net/ifb.ko +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/geneve.ko +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/netconsole.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ppp/* +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/xen-netback/* +drivers/platform/x86/pvpanic.ko +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pps/pps_core.ko +drivers/ptp/ptp.ko +drivers/net/ethernet/dec/tulip/* +drivers/scsi/BusLogic.ko +drivers/scsi/device_handler/scsi_dh_emc.ko +drivers/scsi/device_handler/scsi_dh_alua.ko +drivers/scsi/device_handler/scsi_dh_rdac.ko +drivers/scsi/device_handler/scsi_dh_hp_sw.ko +drivers/scsi/iscsi_boot_sysfs.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +drivers/scsi/osd/osd.ko +drivers/scsi/osd/libosd.ko +drivers/scsi/qla1280.ko +drivers/scsi/raid_class.ko +drivers/scsi/scsi_transport_fc.ko +drivers/scsi/scsi_transport_iscsi.ko +drivers/scsi/scsi_transport_sas.ko +drivers/scsi/vmw_pvscsi.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/virtio_scsi.ko +drivers/scsi/ibmvscsi/* +drivers/target/target_core*.ko +drivers/uio/uio.ko +drivers/vhost/* +drivers/video/fbdev/cirrusfb.ko +drivers/video/fbdev/core/syscopyarea.ko +drivers/video/fbdev/core/sysfillrect.ko +drivers/video/fbdev/core/sysimgblt.ko +drivers/video/fbdev/hyperv_fb.ko +drivers/video/fbdev/vga16fb.ko +drivers/video/vgastate.ko +drivers/video/fbdev/xen-fbfront.ko +drivers/video/fbdev/core/fb_sys_fops.ko +drivers/watchdog/softdog.ko +drivers/xen/* +fs/9p/* +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/configfs/* +fs/dlm/dlm.ko +fs/exofs/libore.ko +fs/fat/* +fs/nls/nls_iso8859-1.ko +fs/isofs/* +fs/cifs/* +fs/xfs/* +fs/ufs/* +fs/squashfs/* +fs/nfs/* +fs/nfsd/* +fs/nfs_common/* +fs/fscache/* +fs/lockd/* +fs/autofs4/autofs4.ko +fs/overlayfs/* +fs/udf/* +lib/* +net/6lowpan/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bridge/* +net/can/* +net/core/* +net/ceph/libceph.ko +net/dccp/* +net/decnet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netrom/* +net/openvswitch/* +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/tipc/* +net/vmw_vsock/* +net/x25/* +net/xfrm/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko +net/sunrpc/sunrpc.ko +sound/soundcore.ko +! find sound/core -name oss -prune -o -name *.ko -print +sound/pci/snd-ens1370.ko +sound/drivers/pcsp/snd-pcsp.ko +ubuntu/vbox/vboxguest/vboxguest.ko +ubuntu/vbox/vboxsf/vboxsf.ko +zfs/* --- linux-4.4.0.orig/debian.master/control.d/vars.generic +++ linux-4.4.0/debian.master/control.d/vars.generic @@ -0,0 +1,6 @@ +arch="i386 amd64 armhf arm64 ppc64el s390x" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms" --- linux-4.4.0.orig/debian.master/control.d/vars.generic-lpae +++ linux-4.4.0/debian.master/control.d/vars.generic-lpae @@ -0,0 +1,6 @@ +arch="armhf" +supported="Generic LPAE" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="flash-kernel [armhf]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-4.4.0.orig/debian.master/control.d/vars.lowlatency +++ linux-4.4.0/debian.master/control.d/vars.lowlatency @@ -0,0 +1,6 @@ +arch="i386 amd64" +supported="Lowlatency" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-4.4.0.orig/debian.master/control.d/vars.powerpc-e500mc +++ linux-4.4.0/debian.master/control.d/vars.powerpc-e500mc @@ -0,0 +1,6 @@ +supported="32-bit Freescale Power e500mc" +target="Geared toward server systems." +desc="32-bit Freescale Power e500mc" +bootloader="grub-ieee1275" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-4.4.0.orig/debian.master/control.d/vars.powerpc-smp +++ linux-4.4.0/debian.master/control.d/vars.powerpc-smp @@ -0,0 +1,6 @@ +supported="32-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="32-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-4.4.0.orig/debian.master/control.d/vars.powerpc64-emb +++ linux-4.4.0/debian.master/control.d/vars.powerpc64-emb @@ -0,0 +1,6 @@ +supported="64-bit PowerPC SMP Book3E" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP Book3E" +bootloader="grub-ieee1275" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-4.4.0.orig/debian.master/control.d/vars.powerpc64-smp +++ linux-4.4.0/debian.master/control.d/vars.powerpc64-smp @@ -0,0 +1,7 @@ +supported="64-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms" +arch="powerpc" +do_zfs=true --- linux-4.4.0.orig/debian.master/control.stub +++ linux-4.4.0/debian.master/control.stub @@ -0,0 +1,962 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf i386 powerpc ppc64el] , + openssl , + libssl-dev , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-4.4.0 +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 4.4.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 4.4.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 4.4.0 + This package provides the various documents in the 4.4.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-headers-4.4.0-6 +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 4.4.0 + This package provides kernel header files for version 4.4.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el s390x +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 4.4.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-tools-4.4.0-6 +Build-Profiles: +Architecture: i386 amd64 armhf arm64 powerpc ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + You probabaly want to install linux-tools-4.4.0-6-. + +Package: linux-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Replaces: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version 4.4.0 + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PGKVER. + +Package: linux-cloud-tools-4.4.0-6 +Build-Profiles: +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version 4.4.0-6 on + 64 bit x86. + You probabaly want to install linux-cloud-tools-4.4.0-6-. + + +Package: linux-image-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-generic +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-generic-dbgsym +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-generic +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel [armhf] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-generic-lpae +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-generic-lpae, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-generic-lpae-dbgsym +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-generic-lpae +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: armhf +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-lowlatency +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-lowlatency, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-lowlatency-dbgsym +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-lowlatency +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc-e500mc +Description: Linux kernel image for version 4.4.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel extra modules for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc-e500mc-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500mc +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc-smp +Description: Linux kernel image for version 4.4.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 4.4.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 32-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 4.4.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc-smp-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 4.4.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc-smp +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc64-emb +Description: Linux kernel image for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel image for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc64-emb, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel extra modules for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package provides kernel header files for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc64-emb-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package provides a kernel debug image for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc64-emb +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc64-smp +Description: Linux kernel image for version 4.4.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 4.4.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 4.4.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc64-smp-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 4.4.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc64-smp +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + --- linux-4.4.0.orig/debian.master/control.stub.in +++ linux-4.4.0/debian.master/control.stub.in @@ -0,0 +1,164 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf i386 powerpc ppc64el] , + openssl , + libssl-dev , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-source-PKGVER +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: SRCPKGNAME-source, SRCPKGNAME-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version PKGVER with Ubuntu patches + This package provides the source code for the Linux kernel version + PKGVER. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: SRCPKGNAME-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: SRCPKGNAME-doc-3 +Replaces: SRCPKGNAME-doc-3 +Description: Linux kernel specific documentation for version PKGVER + This package provides the various documents in the PKGVER kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/SRCPKGNAME-doc/00-INDEX for a list of what is + contained in each file. + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el s390x +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), SRCPKGNAME-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), SRCPKGNAME-kernel-headers, libdrm-dev +Provides: SRCPKGNAME-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use SRCPKGNAME-headers-* packages for that. + +Package: SRCPKGNAME-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: i386 amd64 armhf arm64 powerpc ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, SRCPKGNAME-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + You probabaly want to install linux-tools-PKGVER-ABINUM-. + +Package: SRCPKGNAME-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Replaces: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PGKVER. + +Package: SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, SRCPKGNAME-cloud-tools-common +Description: Linux kernel version specific cloud tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version PKGVER-ABINUM on + =HUMAN=. + You probabaly want to install linux-cloud-tools-PKGVER-ABINUM-. + --- linux-4.4.0.orig/debian.master/copyright +++ linux-4.4.0/debian.master/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-4.4.0.orig/debian.master/d-i/exclude-firmware.armhf-generic +++ linux-4.4.0/debian.master/d-i/exclude-firmware.armhf-generic @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-firmware.armhf-generic-lpae +++ linux-4.4.0/debian.master/d-i/exclude-firmware.armhf-generic-lpae @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.amd64-virtual +++ linux-4.4.0/debian.master/d-i/exclude-modules.amd64-virtual @@ -0,0 +1,14 @@ +pata-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.arm64-generic +++ linux-4.4.0/debian.master/d-i/exclude-modules.arm64-generic @@ -0,0 +1,9 @@ +serial-modules +pata-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +message-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.armhf-generic +++ linux-4.4.0/debian.master/d-i/exclude-modules.armhf-generic @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.armhf-generic-lpae +++ linux-4.4.0/debian.master/d-i/exclude-modules.armhf-generic-lpae @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.i386-virtual +++ linux-4.4.0/debian.master/d-i/exclude-modules.i386-virtual @@ -0,0 +1,14 @@ +pata-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.powerpc +++ linux-4.4.0/debian.master/d-i/exclude-modules.powerpc @@ -0,0 +1,7 @@ +efi-modules +fb-modules +acpi-modules +serial-modules +nic-pcmcia-modules +pcmcia-modules +pcmcia-storage-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.ppc64el-generic +++ linux-4.4.0/debian.master/d-i/exclude-modules.ppc64el-generic @@ -0,0 +1,11 @@ +serial-modules +pata-modules +fat-modules +pcmcia-storage-modules +nic-pcmcia-modules +pcmcia-modules +firewire-core-modules +usb-modules +mouse-modules +irda-modules +speakup-modules --- linux-4.4.0.orig/debian.master/d-i/exclude-modules.s390x +++ linux-4.4.0/debian.master/d-i/exclude-modules.s390x @@ -0,0 +1,20 @@ +serial-modules +ppp-modules +pata-modules +plip-modules +floppy-modules +pcmcia-storage-modules +fb-modules +mouse-modules +irda-modules +nic-pcmcia-modules +pcmcia-modules +sata-modules +speakup-modules +ipmi-modules +usb-modules +input-modules +parport-modules +nic-usb-modules +firewire-core-modules +message-modules --- linux-4.4.0.orig/debian.master/d-i/firmware/README.txt +++ linux-4.4.0/debian.master/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-4.4.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-4.4.0/debian.master/d-i/firmware/nic-modules @@ -0,0 +1,14 @@ +e100/d101m_ucode.bin ? +e100/d101s_ucode.bin ? +e100/d102e_ucode.bin ? +bnx2/bnx2-mips-09-6.2.1b.fw ? +bnx2/bnx2-rv2p-06-6.0.15.fw ? +bnx2/bnx2-mips-06-6.2.3.fw ? +bnx2/bnx2-rv2p-09-6.0.17.fw ? +bnx2/bnx2-rv2p-09ax-6.0.17.fw ? +bnx2x/bnx2x-e1h-7.8.17.0.fw ? +bnx2x/bnx2x-e1-7.8.17.0.fw ? +bnx2x/bnx2x-e2-7.8.17.0.fw ? +tigon/tg3_tso5.bin ? +tigon/tg3_tso.bin ? +tigon/tg3.bin ? --- linux-4.4.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-4.4.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin ? +qlogic/12160.bin ? +qlogic/1280.bin ? --- linux-4.4.0.orig/debian.master/d-i/kernel-versions +++ linux-4.4.0/debian.master/d-i/kernel-versions @@ -0,0 +1,19 @@ +# arch version flavour installedname suffix bdep +amd64 4.4.0-6 generic 4.4.0-6-generic - - + +i386 4.4.0-6 generic 4.4.0-6-generic - - + +armhf 4.4.0-6 generic 4.4.0-6-generic - - +armhf 4.4.0-6 generic-lpae 4.4.0-6-generic-lpae - - + +arm64 4.4.0-6 generic 4.4.0-6-generic - - + +ppc64el 4.4.0-6 generic 4.4.0-6-generic - - + +s390x 4.4.0-6 generic 4.4.0-6-generic - - + +# Ports +# arch version flavour installedname suffix bdep +powerpc 4.4.0-6 powerpc-smp 4.4.0-6-powerpc-smp - - +powerpc 4.4.0-6 powerpc64-smp 4.4.0-6-powerpc64-smp - - +powerpc 4.4.0-6 powerpc-e500mc 4.4.0-6-powerpc-e500mc - - --- linux-4.4.0.orig/debian.master/d-i/kernel-versions.in +++ linux-4.4.0/debian.master/d-i/kernel-versions.in @@ -0,0 +1,19 @@ +# arch version flavour installedname suffix bdep +amd64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +i386 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +armhf PKGVER-ABINUM generic PKGVER-ABINUM-generic - - +armhf PKGVER-ABINUM generic-lpae PKGVER-ABINUM-generic-lpae - - + +arm64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +ppc64el PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +s390x PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +# Ports +# arch version flavour installedname suffix bdep +powerpc PKGVER-ABINUM powerpc-smp PKGVER-ABINUM-powerpc-smp - - +powerpc PKGVER-ABINUM powerpc64-smp PKGVER-ABINUM-powerpc64-smp - - +powerpc PKGVER-ABINUM powerpc-e500mc PKGVER-ABINUM-powerpc-e500mc - - --- linux-4.4.0.orig/debian.master/d-i/modules-powerpc/block-modules +++ linux-4.4.0/debian.master/d-i/modules-powerpc/block-modules @@ -0,0 +1,31 @@ +aoe +aten +bpck +bpck6 ? +cciss +comm +cpqarray ? +DAC960 +dstr +epat +epia +fit2 +fit3 +friq +frpw +kbic +ktti +nbd +on20 +on26 +paride +pcd +pd +pf +pg +ps3disk ? +ps3vram ? +pt +sx8 +umem +virtio_blk ? --- linux-4.4.0.orig/debian.master/d-i/modules-powerpc/message-modules +++ linux-4.4.0/debian.master/d-i/modules-powerpc/message-modules @@ -0,0 +1,7 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi --- linux-4.4.0.orig/debian.master/d-i/modules-powerpc/nic-modules +++ linux-4.4.0/debian.master/d-i/modules-powerpc/nic-modules @@ -0,0 +1,152 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +atl1 ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +bcm43xx ? +bcm43xx-mac80211 ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +ibmtr ? +ibmveth ? +ipddp ? +ipw2100 ? +ipw2200 ? +ipw3945 ? +ixgb ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +ps3_gelic ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2500 ? +rt61pci ? +s2io ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? --- linux-4.4.0.orig/debian.master/d-i/modules-powerpc/scsi-modules +++ linux-4.4.0/debian.master/d-i/modules-powerpc/scsi-modules @@ -0,0 +1,118 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +ibmvfc ? +ibmvscsi ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsic ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +sr_mod ? +sd_mod ? --- linux-4.4.0.orig/debian.master/d-i/modules-powerpc/storage-core-modules +++ linux-4.4.0/debian.master/d-i/modules-powerpc/storage-core-modules @@ -0,0 +1,13 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop + +# Needs to be here for better cdrom initrd layout +isofs + +ps3stor_lib ? +ps3rom ? --- linux-4.4.0.orig/debian.master/d-i/modules-s390x/dasd-extra-modules +++ linux-4.4.0/debian.master/d-i/modules-s390x/dasd-extra-modules @@ -0,0 +1 @@ +dasd_diag_mod ? --- linux-4.4.0.orig/debian.master/d-i/modules-s390x/dasd-modules +++ linux-4.4.0/debian.master/d-i/modules-s390x/dasd-modules @@ -0,0 +1,3 @@ +dasd_mod ? +dasd_fba_mod ? +dasd_eckd_mod ? --- linux-4.4.0.orig/debian.master/d-i/modules/block-modules +++ linux-4.4.0/debian.master/d-i/modules/block-modules @@ -0,0 +1,34 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +kbic ? +ktti ? +nbd ? +nvme ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sdhci-tegra ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? --- linux-4.4.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-4.4.0/debian.master/d-i/modules/crypto-modules @@ -0,0 +1,70 @@ +aesni-intel ? +aes-x86_64 ? +af_alg ? +algif_hash ? +algif_skcipher ? +ansi_cprng ? +anubis ? +arc4 ? +async_memcpy ? +async_pq ? +async_raid6_recov ? +async_tx ? +async_xor ? +authenc ? +authencesn ? +blowfish_common ? +blowfish_generic ? +blowfish-x86_64 ? +camellia ? +cast5 ? +cast6 ? +ccm ? +cryptd ? +cryptoloop ? +crypto_null ? +crypto_user ? +ctr ? +cts ? +deflate ? +des_generic ? +fcrypt ? +gcm ? +gf128mul ? +ghash-clmulni-intel ? +ghash-generic ? +khazad ? +lrw ? +lzo ? +md4 ? +michael_mic ? +padlock-aes ? +padlock-sha ? +pcbc ? +pcrypt ? +raid6test ? +rmd128 ? +rmd160 ? +rmd256 ? +rmd320 ? +salsa20_generic ? +salsa20-x86_64 ? +seed ? +seqiv ? +serpent_generic ? +serpent-sse2-x86_64 ? +sha1-ssse3 ? +sha512_generic ? +tcrypt ? +tea ? +tgr192 ? +twofish_common ? +twofish_generic ? +twofish-x86_64 ? +twofish-x86_64-3way ? +vmac ? +wp512 ? +xcbc ? +xor ? +xts ? +zlib ? --- linux-4.4.0.orig/debian.master/d-i/modules/fat-modules +++ linux-4.4.0/debian.master/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-4.4.0.orig/debian.master/d-i/modules/fb-modules +++ linux-4.4.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-4.4.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-4.4.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-4.4.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-4.4.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-4.4.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-4.4.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,5 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? +zfs ? --- linux-4.4.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-4.4.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-4.4.0.orig/debian.master/d-i/modules/input-modules +++ linux-4.4.0/debian.master/d-i/modules/input-modules @@ -0,0 +1,23 @@ +hid-a4tech ? +hid-apple ? +hid-belkin ? +hid-bright ? +hid-cherry ? +hid-chicony ? +hid-cypress ? +hid-dell ? +hid-ezkey ? +hid-generic ? +hid-gyration ? +hid-logitech ? +hid-logitech-dj ? +hid-microsoft ? +hid-monterey ? +hid-petalynx ? +hid-pl ? +hid-samsung ? +hid-sony ? +hid-sunplus ? +hid-tmff ? +hid-zpff ? +usbhid ? --- linux-4.4.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-4.4.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-4.4.0.orig/debian.master/d-i/modules/irda-modules +++ linux-4.4.0/debian.master/d-i/modules/irda-modules @@ -0,0 +1,30 @@ +act200l-sir ? +actisys-sir ? +ali-ircc ? +donauboe ? +esi-sir ? +girbil-sir ? +ircomm ? +ircomm-tty ? +irda ? +irda-usb ? +irlan ? +irnet ? +irport ? +irtty-sir ? +kingsun-sir ? +ks959-sir ? +ksdazzle-sir ? +litelink-sir ? +ma600-sir ? +mcp2120-sir ? +mcs7780 ? +nsc-ircc ? +old_belkin-sir ? +sir-dev ? +smsc-ircc2 ? +stir4200 ? +tekram-sir ? +via-ircc ? +vlsi_ir ? +w83977af_ir ? --- linux-4.4.0.orig/debian.master/d-i/modules/kernel-image +++ linux-4.4.0/debian.master/d-i/modules/kernel-image @@ -0,0 +1,30 @@ +ast ? +gpio-pca953x ? +gpio-regulator ? +i2c-mux ? +i2c-mux-pinctrl ? +i2c-tegra ? +max8907 ? +max8907-regulator ? +nvec ? +nvec_kbd ? +nvec_paz00 ? +nvec_power ? +nvec_ps2 ? +palmas-regulator ? +rtc-em3027 ? +rtc-max8907 ? +rtc-palmas ? +rtc-tps6586x ? +rtc-tps65910 ? +tps51632-regulator ? +tps62360-regulator ? +tps65090-charger ? +tps65090-regulator ? +tps6586x-regulator ? +tps65910-regulator ? +host1x ? +tegra-drm ? +pwm_bl ? +pwm-tegra ? +panel-simple ? --- linux-4.4.0.orig/debian.master/d-i/modules/md-modules +++ linux-4.4.0/debian.master/d-i/modules/md-modules @@ -0,0 +1,16 @@ +dm-crypt ? +dm-mirror ? +dm-raid ? +dm-snapshot ? +dm-zero ? +faulty ? +linear ? +multipath ? +raid0 ? +raid1 ? +raid10 ? +raid456 ? + +# Extras +dm-raid45 ? +dm-loop ? --- linux-4.4.0.orig/debian.master/d-i/modules/message-modules +++ linux-4.4.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,9 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mpt3sas ? +mptscsih ? +mptspi ? --- linux-4.4.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-4.4.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-4.4.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-4.4.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,3 @@ +dm-multipath ? +dm-round-robin ? +dm-service-time ? --- linux-4.4.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-4.4.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,6 @@ +nfs ? +nfs_acl ? +nfsv3 ? +lockd ? +sunrpc ? +cifs ? --- linux-4.4.0.orig/debian.master/d-i/modules/nic-modules +++ linux-4.4.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,189 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +brcmfmac ? +brcmsmac ? +xgmac ? +cassini ? +ccwgroup ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +ctcm ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +enic ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +fsm ? +ibmveth ? +igb ? +ps3_gelic ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +i40e ? +i40evf ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwldvm ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lcs ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mlx4_core ? +mlx4_en ? +mlx5_core ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netiucv ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +nicpf ? +nicvf ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +qeth ? +qeth_l2 ? +qeth_l3 ? +qlcnic ? +r815x ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2400pci ? +rt2500 ? +rt2500pci ? +rt2800pci ? +rt61pci ? +s2io ? +sfc ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? +vmxnet3 ? +xen-netfront ? +xgene-enet ? --- linux-4.4.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-4.4.0/debian.master/d-i/modules/nic-pcmcia-modules @@ -0,0 +1,19 @@ +3c574_cs ? +3c589_cs ? +airo_cs ? +atmel_cs ? +axnet_cs ? +com20020_cs ? +fmvj18x_cs ? +ibmtr_cs ? +netwave_cs ? +nmclan_cs ? +orinoco_cs ? +pcnet_cs ? +ray_cs ? +smc91c92_cs ? +wavelan_cs ? +wl3501_cs ? +xirc2ps_cs ? +xircom_cb ? +xircom_tulip_cb ? --- linux-4.4.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-4.4.0/debian.master/d-i/modules/nic-shared-modules @@ -0,0 +1,26 @@ +# PHY +8390 ? +mii ? + +# CRC modules +crc-ccitt ? +crc-itu-t ? +libcrc32c ? + +# mac80211 stuff +mac80211 ? +cfg80211 ? + +# rt2x00 lib (since rt2x00 is split across usb/pci/cb +rt2x00lib ? +rt2800lib ? + +# Atheros library (since drivers are split across nic-modules/nic-usb-modules) +ath ? + +# Wireless 802.11 modules +lib80211 ? +cfg80211 ? +lib80211_crypt_ccmp ? +lib80211_crypt_tkip ? +lib80211_crypt_wep ? --- linux-4.4.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-4.4.0/debian.master/d-i/modules/nic-usb-modules @@ -0,0 +1,32 @@ +catc ? +kaweth ? +pegasus ? +prism2_usb ? +rtl8150 ? +usbnet ? +zd1211rw ? +zd1201 ? +rt2500usb ? +rt73usb ? +rt2570 ? +rt2800usb ? +rt2x00usb ? +cdc_ether ? +asix ? +cdc_eem ? +cdc_ether ? +cdc-phonet ? +cdc_subset ? +dm9601 ? +gl620a ? +hso ? +int51x1 ? +mcs7830 ? +net1080 ? +plusb ? +rndis_host ? +smsc95xx ? +zaurus ? +carl9170 ? +smsc75xx ? +smsc95xx ? --- linux-4.4.0.orig/debian.master/d-i/modules/parport-modules +++ linux-4.4.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-4.4.0.orig/debian.master/d-i/modules/pata-modules +++ linux-4.4.0/debian.master/d-i/modules/pata-modules @@ -0,0 +1,47 @@ +pata_ali.ko ? +pata_amd.ko ? +pata_artop.ko ? +pata_atiixp.ko ? +pata_atp867x.ko ? +pata_cmd640.ko ? +pata_cmd64x.ko ? +pata_cs5520.ko ? +pata_cs5530.ko ? +pata_cs5535.ko ? +pata_cs5536.ko ? +pata_cypress.ko ? +pata_efar.ko ? +pata_hpt366.ko ? +pata_hpt37x.ko ? +pata_hpt3x2n.ko ? +pata_hpt3x3.ko ? +pata_isapnp.ko ? +pata_it8213.ko ? +pata_it821x.ko ? +pata_jmicron.ko ? +pata_legacy.ko ? +pata_macio.ko ? +pata_marvell.ko ? +pata_mpiix.ko ? +pata_netcell.ko ? +pata_ninja32.ko ? +pata_ns87410.ko ? +pata_ns87415.ko ? +pata_oldpiix.ko ? +pata_optidma.ko ? +pata_opti.ko ? +pata_pcmcia.ko ? +pata_pdc2027x.ko ? +pata_pdc202xx_old.ko ? +pata_qdi.ko ? +pata_radisys.ko ? +pata_rdc.ko ? +pata_rz1000.ko ? +pata_sc1200.ko ? +pata_sch.ko ? +pata_serverworks.ko ? +pata_sil680.ko ? +pata_sl82c105.ko ? +pata_triflex.ko ? +pata_via.ko ? +pata_winbond.ko ? --- linux-4.4.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-4.4.0/debian.master/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-4.4.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-4.4.0/debian.master/d-i/modules/pcmcia-storage-modules @@ -0,0 +1,6 @@ +pata_pcmcia ? +qlogic_cs ? +fdomain_cs ? +aha152x_cs ? +nsp_cs ? +sym53c500_cs ? --- linux-4.4.0.orig/debian.master/d-i/modules/plip-modules +++ linux-4.4.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-4.4.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-4.4.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-4.4.0.orig/debian.master/d-i/modules/sata-modules +++ linux-4.4.0/debian.master/d-i/modules/sata-modules @@ -0,0 +1,18 @@ +sata_inic162x.ko ? +sata_mv.ko ? +sata_nv.ko ? +sata_promise.ko ? +sata_qstor.ko ? +sata_sil24.ko ? +sata_sil.ko ? +sata_sis.ko ? +sata_svw.ko ? +sata_sx4.ko ? +sata_uli.ko ? +sata_via.ko ? +sata_vsc.ko ? +ahci_platform ? +ahci ? +acard-ahci ? +libahci ? +ahci_xgene ? --- linux-4.4.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-4.4.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,129 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +fnic ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsi ? +ibmvfc ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +vmw_pvscsi ? +ums-cypress ? +be2iscsi ? +3w-sas ? +isci ? +mlx4_ib ? +mlx5_ib ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? --- linux-4.4.0.orig/debian.master/d-i/modules/serial-modules +++ linux-4.4.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,4 @@ +generic_serial ? +serial_cs ? +synclink_cs ? +hyperv-keyboard ? --- linux-4.4.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-4.4.0/debian.master/d-i/modules/speakup-modules @@ -0,0 +1,16 @@ +speakup ? +speakup_acntpc ? +speakup_acntsa ? +speakup_apollo ? +speakup_audptr ? +speakup_bns ? +speakup_decext ? +speakup_dectlk ? +speakup_dtlk ? +speakup_dummy ? +speakup_keypc ? +speakup_ltlk ? +speakup_soft ? +speakup_spkout ? +speakup_txprt ? +speakup_decpc ? --- linux-4.4.0.orig/debian.master/d-i/modules/squashfs-modules +++ linux-4.4.0/debian.master/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-4.4.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-4.4.0/debian.master/d-i/modules/storage-core-modules @@ -0,0 +1,10 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop ? + +# Needs to be here for better cdrom initrd layout +isofs ? --- linux-4.4.0.orig/debian.master/d-i/modules/usb-modules +++ linux-4.4.0/debian.master/d-i/modules/usb-modules @@ -0,0 +1,11 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? +ehci-tegra ? --- linux-4.4.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-4.4.0/debian.master/d-i/modules/virtio-modules @@ -0,0 +1,11 @@ +virtio_balloon ? +virtio_pci ? +virtio_ring ? +virtio-rng ? +virtio_scsi ? +hv_vmbus ? +hv_utils ? +hv_netvsc ? +hv_mouse ? +hv_storvsc ? +hv_balloon ? --- linux-4.4.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-4.4.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-4.4.0.orig/debian.master/d-i/package-list +++ linux-4.4.0/debian.master/d-i/package-list @@ -0,0 +1,213 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules +Provides_s390x: ext3-modules, ext4-modules, ppp-modules + +Package: dasd-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: DASD storage support + +Package: dasd-extra-modules +Depends: dasd-modules +Priority: extra +Description: DASD storage support -- extras + +Package: fat-modules +Depends: kernel-image +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: fb-modules +Depends: kernel-image +Priority: standard +Description: Framebuffer modules + +Package: firewire-core-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: floppy-modules +Depends: kernel-image +Priority: standard +Description: Floppy driver support + +Package: fs-core-modules +Depends: kernel-image +Priority: standard +Provides: ext2-modules, jfs-modules, reiserfs-modules, xfs-modules +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules +Depends: kernel-image, fat-modules +Priority: standard +Provides: btrfs-modules, ntfs-modules, hfs-modules +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: input-modules +Depends: kernel-image, usb-modules +Priority: standard +Description: Support for various input methods + +Package: irda-modules +Depends: kernel-image, nic-shared-modules +Priority: standard +Description: Support for Infrared protocols + +Package: md-modules +Depends: kernel-image +Priority: standard +Provides: crypto-dm-modules +Description: Multi-device support (raid, device-mapper, lvm) + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, virtio-modules +Priority: standard +Description: Network interface support + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules +Priority: standard +Description: PCMCIA network interface support + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, usb-modules +Priority: standard +Description: USB network interface support + +Package: nic-shared-modules +Depends: kernel-image, crypto-modules +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: parport-modules +Depends: kernel-image +Priority: standard +Description: Parallel port support + +Package: pata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: PATA support modules + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: PCMCIA Modules + +Package: pcmcia-storage-modules +Depends: kernel-image, scsi-modules +Priority: standard +Description: PCMCIA storage support + +Package: plip-modules +Depends: kernel-image, nic-shared-modules, parport-modules +Priority: standard +Description: PLIP (parallel port) networking support + +Package: ppp-modules +Depends: kernel-image, nic-shared-modules, serial-modules +Priority: standard +Description: PPP (serial port) networking support + +Package: sata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SATA storage support + +Package: scsi-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SCSI storage support + +Package: serial-modules +Depends: kernel-image +Priority: standard +Description: Serial port support + +Package: storage-core-modules +Depends: kernel-image +Priority: standard +Provides: loop-modules +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: usb-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Core USB support + +Package: nfs-modules +Priority: standard +Depends: kernel-image +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: block-modules +Priority: standard +Provides: nbd-modules +Depends: kernel-image, storage-core-modules, parport-modules, virtio-modules +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules +Priority: standard +Depends: kernel-image, storage-core-modules, scsi-modules +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: crypto-modules +Priority: extra +Depends: kernel-image +Description: crypto modules + This package contains crypto modules. + +Package: virtio-modules +Priority: standard +Depends: kernel-image +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: socket-modules +Depends: kernel-image +Priority: standard +Description: Unix socket support + +Package: mouse-modules +Depends: kernel-image, input-modules, usb-modules +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: squashfs-modules +Depends: kernel-image +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +Package: vlan-modules +Depends: kernel-image +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules +Depends: kernel-image +Priority: standard +Description: ipmi modules + +Package: multipath-modules +Depends: kernel-image +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + --- linux-4.4.0.orig/debian.master/etc/getabis +++ linux-4.4.0/debian.master/etc/getabis @@ -0,0 +1,20 @@ +repo_list=( + "http://archive.ubuntu.com/ubuntu/pool/main/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/main/l/linux" + "http://archive.ubuntu.com/ubuntu/pool/universe/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/universe/l/linux" + "http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu/pool/main/l/linux" +) + +package_prefixes linux-image linux-image-extra + +getall armhf generic +getall armhf generic-lpae +getall amd64 generic lowlatency +getall i386 generic lowlatency +getall arm64 generic +getall ppc64el generic +getall s390x generic + +# Ports arches and flavours. +getall powerpc powerpc-smp powerpc64-smp powerpc-e500mc powerpc64-emb --- linux-4.4.0.orig/debian.master/etc/kernelconfig +++ linux-4.4.0/debian.master/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 i386 armhf arm64 ppc64el powerpc s390x" + family='ubuntu' +fi --- linux-4.4.0.orig/debian.master/info/OVERRIDES +++ linux-4.4.0/debian.master/info/OVERRIDES @@ -0,0 +1,153 @@ +CONFIG_RCU_KTHREAD_PRIO=0 +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_ZSMALLOC_STAT=N +CONFIG_LIVEPATCH=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +# CONFIG_BT_SELFTEST is not set +CONFIG_MTD_NAND_HISI504=m +CONFIG_IXGBE_VXLAN=y +CONFIG_TI_CPSW_ALE=m +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m +# CONFIG_DEVMEM is not set +CONFIG_TCG_TIS_I2C_ST33=m +CONFIG_TCG_CRB=m +CONFIG_SPI_DLN2=m +CONFIG_CHARGER_MAX77693=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_MFD_DA9150=m +CONFIG_MFD_RT5033=m +CONFIG_REGULATOR_RT5033=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SOC_STA32X=m +CONFIG_HID_BETOP_FF=m +CONFIG_USB_ISP1760=m +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_FB_SM7XX=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_ALTERA_MBOX=m +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_CC10001_ADC=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_KMX61=m +CONFIG_CM3232=m +CONFIG_JSA1212=m +CONFIG_SX9500=m +CONFIG_FS_DAX=y +# CONFIG_PSTORE_PMSG is not set +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_NFSD_PNFS=y +CONFIG_GDB_SCRIPTS=y +# CONFIG_KASAN is not set +CONFIG_TEST_HEXDUMP=m +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_BATTERY_RT5033=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +# CONFIG_ZSMALLOC_STAT is not set +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_HIP01=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ARM_EXYNOS_CPUFREQ=m +# CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set +CONFIG_OF_OVERLAY=y +CONFIG_HIP04_ETH=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_POWER_RESET_RMOBILE=m +CONFIG_MEDIATEK_WATCHDOG=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_ATMEL_HLCDC=m +CONFIG_DISPLAY_ENCODER_OPA362=m +CONFIG_SND_SOC_TEGRA_RT5677=m +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RCAR_DMAC=m +CONFIG_CLK_QORIQ=m +CONFIG_IPQ_LCC_806X=m +CONFIG_MSM_LCC_8960=m +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_ARM_TEGRA_DEVFREQ=m +# CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIP01 is not set +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_ARCH_EXYNOS7 is not set +# CONFIG_ARCH_FSL_LS2085A is not set +# CONFIG_ARCH_TEGRA is not set +CONFIG_CAN_XILINXCAN=m +CONFIG_GPIO_XGENE_SB=m +# CONFIG_DEBUG_ALIGN_RODATA is not set +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set --- linux-4.4.0.orig/debian.master/info/REBASE +++ linux-4.4.0/debian.master/info/REBASE @@ -0,0 +1,47 @@ +Could not apply b551f2a4439d2179b3732c2a28277d9245dbb150... NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors + commit 1fcf77c87ad659a92e1dcfb883388cb43baeaab6 + +Could not apply 7cc84cf61b760725973c93b9c7e39d6f521bfe62... NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" + commit ca9f9f703950e5cb300526549b4f1b0a6605a5c5 + +error: could not apply ff7e372... overlay: add backwards compatible overlayfs format support +Could not apply 3fd5011f880877a583b1ccefd06ad481452cdef7... NEEDED overlay: add backwards compatible overlayfs format support (fixes) + XXX: needed + +Could not apply 98c64db6cffd59a894d4a4492aea761fa6e6c51a... NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +Could not apply 892b8b7cfb14b9bdfbc9ac2fee8e751a67707542... NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +Could not apply e1b6a4b88bdb9cf858e068d0e3a6b7449d648513... NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +Could not apply 9defa41f9126d026cd6a1ead03e6443e98e97108... NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +Could not apply 36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684... NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + XXX: needed (apparmor) + PORTED AND REAPPLIED + +Could not apply 4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6... NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + commit b0a93d96b2814c725161f91a4e35d0c29ec0f95b + +Could not apply d8db9694361b258427eab1846b211be332c4a1f9... NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland + commit 2859dff97e54db4795b8b7d9606cb8efcec722ff + +Could not apply fe8ce4f67a26106dab3193b3515fe865e136ab4a... NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in + commit f5e0a12ca2d939e47995f73428d9bf1ad372b289 + +Could not apply e9f926b44c895d39152d3f816ce9ff37780f77cb... NEEDED xen: correct bug in p2m list initialization + commit b8f05c8803fce899d79ca66f8d7f348cf15fb40e + +Could not apply 7ec323466d993094545e140cc44559cb1cccbd14... NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + commit 62dfd912ab3b5405b6fe72d0135c37e9648071f1 + +Could not apply 6b610659f8b313644c0012a511c6381e9fe7d881... NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device + commit 872bf2fb69d90e3619befee842fc26db39d8e475 + +Could not apply 7e9a6608ca11948dd0996b6db99e498ca043a0cd... NEEDED tools/power turbostat: support additional Broadwell model + commit 48a0631c891ab581cc010b44655ad49ff6eb3325 + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit ba0513b5b8ffbcb0cc89e2f172c0bcb70497ba2e + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit 3b0f1d01e501792d8d89ab4371bc9e8cd2a10032 + +Could not apply 0335b4283d02dcd6e7d6b54e175801099873852e... NEEDED KVM: VMX: Add PML support in VMX + commit 843e4330573cc5261ae260ce0b83dc570d8cdc05 --- linux-4.4.0.orig/debian.master/info/RECONCILE +++ linux-4.4.0/debian.master/info/RECONCILE @@ -0,0 +1,506 @@ +=== total: 505 ignored: 55 (upstreamed: 49 reverted: 6) needed: 450 (debian: 298 ubuntu: 14 sauce: 138) === +3377e17d83c8ce29dc0128c9785043b630e283f3 IGNORE:IN:7486341a98f26857f383aec88ffa10950087c3a1 x86/platform, acpi: Bypass legacy PIC and PIT in ACPI hardware reduced mode +e826d2f5ee447384828473c249ef38c08b72ffc1 IGNORE:IN:d474a4d365aaa5c7aabcf11a74ea43aa23f6f2e9 powercap / RAPL: handle domains with different energy units +27ba48b7bec5dc0c9b665b334bbea30fdb44160a NEEDED:debian UBUNTU: [Config] add nvme to linux-virtual as this is now used in GCE to expose disks +0788d51a2a8d794eb1c8394154028cb593be7ee7 NEEDED:debian UBUNTU: Ubuntu-3.19.0-10.10 +eb97881b6320d127b354b8cb03937504683a7f18 NEEDED HID: multitouch: Add support for button type usage +554fc470460c6c4d94f202a8a73f24491bc9f0f7 NEEDED HID: multitouch: add support of clickpads +e098a93f8c11db119261d5c4791d4f9c62c666e8 NEEDED:debian UBUNTU: fix up changelog for rebase +c0b0bccbe70c7d602c114871d1e1ce42c478f6dc NEEDED:debian UBUNTU: rebase to v3.19.2 +9e086fc3fb3d7f09d4dacfccab0784812ef78764 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +0335b4283d02dcd6e7d6b54e175801099873852e NEEDED KVM: VMX: Add PML support in VMX +9fa8950638aac15e1273204c9c76447524236345 IGNORE:IN:88178fd4f7187bbe290c5d373fd44aabec891934 KVM: x86: Add new dirty logging kvm_x86_ops for PML +540b4deed1133b94ba9665ca1c5bdf692fc32c5b IGNORE:IN:1c91cad42366ce0799ca17e7ad6995418741d012 KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access +9cd0789cd13fe6ceb057b6ee0a9a8089e3d085d0 IGNORE:IN:9b51a63024bd759f97a12f50907b8af23b065b36 KVM: MMU: Explicitly set D-bit for writable spte. +d06b40dc692080da03fd5fa3f19aa6c3d201cb38 IGNORE:IN:f4b4b1808690c37c7c703d43789c1988c5e7fdeb KVM: MMU: Add mmu help functions to support PML +ec2347761088c13ec640886cb492e4d4f8aee759 NEEDED KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for log dirty +7b476333c9fd20d2be03eba64339df96a6d326d6 IGNORE:IN:e108ff2f8033a417ee3e517d9f8730f665646076 KVM: x86: switch to kvm_get_dirty_log_protect +9a9ab8a2348c722405964a0c785c4b2a613d8782 NEEDED KVM: Add generic support for dirty page logging +baddf7f579e3094b7b32c119fae9bb1b4ac557c5 IGNORE:IN:d91ffee9ec633c6523ef1ea39c36ace578760258 Optimize TLB flush in kvm_mmu_slot_remove_write_access. +e824a2cfa15c76aefc09dcd0157ee31a565b2cb3 IGNORE:IN:7e71a59b250330fd52ee7293eb9d31952f16682e KVM: x86: flush TLB when D bit is manually changed. +7e9a6608ca11948dd0996b6db99e498ca043a0cd NEEDED tools/power turbostat: support additional Broadwell model +827aac896a47cdfbc19679d4e14dc269fd0ac846 IGNORE:IN:bea57077e44ec9c1e6d3a3c142c8a3c0289e290d intel_idle: support additional Broadwell model +3057d6279a10157e6bd1ab7148ef4fc2ccb14d6d IGNORE:IN:3df76a9dcc74d5f012b94ea01ed6e7aaf8362c5a powerpc/pseries: Fix endian problems with LE migration +dba28dfc35d65493b65d7d4bf382e09297ef9bb4 IGNORE:IN:4ad04e5987115ece5fa8a0cf1dc72fcd4707e33e powerpc/iommu: Remove IOMMU device references via bus notifier +f9f283435213397957099d1a66a3a0d5bede3528 IGNORE:IN:5c65670c9bfa3be1234d29f36b742897c0360ef3 powerpc/perf/hv-24x7: Document sysfs event description entries +179039e2ee295381d24a1832349100569ca96acb IGNORE:IN:97bf2640184f4fb2b2bf2c58ae3112768a6174fa powerpc/perf/hv-gpci: add the remaining gpci requests +eb14eac49af21beac96d0933103b0e329ed4b2be IGNORE:IN:9e9f60108423f18a99c9cc93ef7f23490ecc709b powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated +23b8dd8e12de9f1268a1ecb18a1ec9d157444cfa IGNORE:IN:5c5cd7b502595f6b90509b8aa4bba6f81b69315c powerpc/perf/hv-24x7: parse catalog and populate sysfs with events +0a72cae7a37a649fb997835c99a93711254210c9 IGNORE:IN:e08e52824e41fb42e46593450d378ad1b33caedb perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper +06aa2a9afd745edcb3c3b80eec10c0cf6795cfc0 IGNORE:IN:f0405b816149665393cc62b9e5082fc2d79714df perf: add PMU_EVENT_ATTR_STRING() helper +e38b3e25ccd090c3be55addc72746ffea85e26fd IGNORE:IN:fd979c0132074856975a6e79bc2226b99435ec5b perf: provide sysfs_show for struct perf_pmu_events_attr +0512d012693ab7696fc390aa58e38623f774e8f0 IGNORE:IN:f9ab9c196d015f3bd8f6bd1c30785c5a49542323 perf tools: Document parameterized and symbolic events +914c3ae025813d3868fddac5e7f63eef89a1f77c IGNORE:IN:98a43e0e9917059da32db89829b0eb95453a11ee perf Documentation: Add event parameters +59c3fddc383e9d02e6ae04cbd9247d626f6acc90 IGNORE:IN:aaea36174991ff39c7a18044660db86527100c55 perf tools: Extend format_alias() to include event parameters +7ee609fce3a1aa657c3613b985dc62f1a45acaf0 IGNORE:IN:688d4dfcdd624192cbf03c08402e444d1d11f294 perf tools: Support parsing parameterized events +1d74db86f07ee680a466ae02b460e164aa58a38a NEEDED:debian UBUNTU: [Packaging] generate live watchdog blacklists +6b5949d8cf32e576a5892472a7826545d94292a4 NEEDED:debian UBUNTU: Start new release +a705b4e4855e7b484ed11831941fb7093a12d660 IGNORE:IN:285994a62c80f1d72c6924282bcb59608098d5ec arm64: Invalidate the TLB corresponding to intermediate page table levels +fef4b02b6f20e9cbb50522916a4fd079ed821c07 IGNORE:IN:1b0eb5bc241354aa854671fdf02132d2d1452bdf thinkpad_acpi: support new BIOS version string pattern +572a605fa5352dcb8a8cc982bbdb998f752aea07 NEEDED:debian UBUNTU: [Config] allow dracult to support initramfs as well +727f017959487a34dd3c14659306b869545348a5 NEEDED:debian UBUNTU: [Packaging] control -- make element ordering deterministic +6a501ec1a8e49e7b9869fed950bd1642dd1b68af NEEDED:debian UBUNTU: Ubuntu-3.19.0-9.9 +57165ece4262217e644bc0577bf9ccd5e452f2da NEEDED UBUNTU: SAUCE: IB/core: Prevent integer overflow in ib_umem_get address arithmetic +4815357c48175b96d4bc67dfbd6c4fb30bb4d714 NEEDED:debian UBUNTU: Start new release +03247c64299523710c3935227d1a7e28aeb34a97 NEEDED:debian UBUNTU: Ubuntu-3.19.0-8.8 +36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684 NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets +c34820ce1a87b536c2da84daf892e884de7f3067 IGNORE:IN:d0af71a3573f1217b140c60b66f1a9b335fb058b tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() +420ed2b6622aa62d962e770422f887e38ede78ac IGNORE:IN:0cd9302734111abc0b5912b695336f2ee63cb22b net/mlx4_core: Reset flow activation upon SRIOV fatal command cases +441e06e149e10acf3fa4497ae041f79f75a97c23 IGNORE:IN:55ad359225b2232b9b8f04a0dfa169bd3a7d86d2 net/mlx4_core: Enable device recovery flow with SRIOV +6aa4bcac4501cbf723abbc1b49f22b113c7323f9 IGNORE:IN:2ba5fbd62b2534335f4e3b844ecc7860115525a3 net/mlx4_core: Handle AER flow properly +a1b81382798563ef9092cad425cccc1e2fc2626e IGNORE:IN:c69453e294c9f16da977b68e658a8028b854c209 net/mlx4_core: Manage interface state for Reset flow cases +da98e7467248aae377055c75b6380aa5f3f075ec IGNORE:IN:f5aef5aa35063f2b45c3605871cd525d0cb7fb7a net/mlx4_core: Activate reset flow upon fatal command cases +9a583f4441d28f7b034a2eaaa3aeacdddc0ec65a IGNORE:IN:f6bc11e42646e661e699a5593cbd1e9dba7191d0 net/mlx4_core: Enhance the catas flow to support device reset +5e52f6741b9fe61696f882effa83021eb013bb2e IGNORE:IN:ad9a0bf08ffbf32b8f292c3bb78ca0f24bb8f6b2 net/mlx4_core: Refactor the catas flow to work per device +efee37c90fa0d7f1704ea59bcc47b8590b5cf7ca IGNORE:IN:dd0eefe3abbf47442db296bf68f27eb2860c1cdf net/mlx4_core: Set device configuration data to be persistent across reset +6b610659f8b313644c0012a511c6381e9fe7d881 NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device +7ec323466d993094545e140cc44559cb1cccbd14 NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send +dd82e0b3366c0583f66daa1e6fd229e24468d615 IGNORE:IN:de61390cb3e03186f85997fe08a11dcb9f7a01a3 net/mlx5_core: Fix configuration of log_uar_page_sz +aa391baed594091165eefe21e759f0604dd66c0a NEEDED:debian UBUNTU: rebase to stable v3.19.1 +7eaea45f7109a1e769d5379352e40b13e1b5d6d6 NEEDED:debian UBUNTU: Start new release +a1ab7786a77235d3fe40ef93e239d26ad095f8c6 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- elide the new symlinks and reconstruct on clean: +e9f926b44c895d39152d3f816ce9ff37780f77cb NEEDED xen: correct bug in p2m list initialization +e253864af74e9fd0dbb79c6a1b9ab117d335a006 NEEDED:debian UBUNTU: Ubuntu-3.19.0-7.7 +da9ed9fbcffe22ad779cd0f9e63cae8125870f4c NEEDED:debian UBUNTU: Start new release +a3efc506086bfc1770015e3a1545d708464dccbc IGNORE:IN:1b28f170d99170a1fdd22818a9610a73196b391d powerpc/eeh: Allow to set maximal frozen times +d2616b0dfec986efcea32f5a7907bb67334fee40 IGNORE:IN:432227e9077eec13b3caf3aec6087f94a2f4327f powerpc/eeh: Introduce flag EEH_PE_REMOVED +0d7adce37648ab16e146c07998c86f929933ced2 IGNORE:IN:3d5be0392f52489b7572903d83f1f267f26e6b69 cxl: Fail AFU initialisation if an invalid configuration record is found +4406598cf9db984056879f543a1dbd0580589fc5 IGNORE:IN:b087e6190ddcd9ae4e8ff2c788d2b32f193e946b cxl: Export optional AFU configuration record in sysfs +9810a8574ecb496bdb6805df46ef040889279489 IGNORE:IN:62fa19d4b4fd781ad37c9155c6332f28a9e97a2c cxl: Add ability to reset the card +e0479a12aa4aceb678db96257318102e165127dc IGNORE:IN:1212aa1c8c9ca34642f7737e1edaa96c9ce3d7dd cxl: Enable CAPP recovery +047163114be9cf5d4fd9ad368b6c0f8f18c177d8 IGNORE:IN:95bc11bcd1428afdb48400ec84dc6d5a83926138 cxl: Add image control to sysfs +211238b75962ee2b4ddcb1648b94fd2d11464b64 IGNORE:IN:49fd644c3b0014fb80c2b1db7d8c86a75c4c6b1f cxl: Update CXL ABI documentation +ef2cf73ffe825cb6e5350972edb6ef989f7c019b IGNORE:IN:9bcf28cdb28e6a793c4e59f0a42c66fe241993a8 cxl: Add tracepoints +bb463fd6632c70d258c46e08a49dbd8ed90b6662 IGNORE:IN:d3383aaae9800b9e13e25b71f70dff3814d10373 cxl: remove redundant increment of hwirq +50419f397e513bb53fd3a43953ddf97e344b1f9e IGNORE:IN:db7933f392ac4d9719d41d3f203a5f6a1c40f300 cxl: Disable SPAP register when freeing SPA +1a4659245b032feb290aa890a831fe6db8cce677 IGNORE:IN:d6a6af2c181400aade59417e698c7cd9bec8804e cxl: Disable AFU debug flag +9e024f9abf9a7bb11c8812ad8f4baac2542b41a4 IGNORE:IN:13da704682471669685ccc3fe111fd6c0127b2eb cxl: Early return from cxl_handle_fault for a shut down context +b745d4388fd7f150d8c27239a107acc4769c3a55 IGNORE:IN:456295e284beb7b61a55ead9500d30f94ab06d52 cxl: Fix leaking interrupts if attach process fails +aa79645da2c295c7a54a38d727ba5424c56e8c78 NEEDED:debian UBUNTU: Ubuntu-3.19.0-6.6 +2506464009b6efd8886841fd42aa35dd276e1ae2 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.22-dfsg-1 +0af35a1df1616ee3af688b8f6811ea980b4ba105 NEEDED:debian UBUNTU: [Config] move vbox modules into linux-image +591572a04b2929501bfd944f0e1b5dc918d905c2 NEEDED:debian UBUNTU: Disable module check for I2C_CHARDEV=y config change +ded3e335312faf2066f1a293bc34612f20c7075a NEEDED:debian UBUNTU: [Config] I2C_CHARDEV=y +6d41878ad435f83f107290bd47da1cae88a5960e NEEDED:debian UBUNTU: Start new release +af9f67abe58ef01a0e38809dbf9dc9b579d6f729 NEEDED:debian UBUNTU: systemd -- fix hyper-v units to be non-forking +e06b795ba62bfe38b378a77df6aa1f4e4b4be003 NEEDED:debian UBUNTU: SAUCE: DEP8 test to run our regression tests +a651bfbc176a850449052a44a8f99cb298cb49f0 NEEDED:debian UBUNTU: Ubuntu-3.19.0-5.5 +65c15025855e39b160ced2bfd9cee0233e9eb5bd NEEDED:debian UBUNTU: rebase to v3.19 final +00b14848d0ba3d47a244bbe142f4aec6abc6ad8a NEEDED:debian UBUNTU: Start new release +e3963bddd383dbb567b6e9a3b6d1229b335be7c9 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 +5dde1b4a9a0dcbff893ba69c97bc8e9af5aeced4 NEEDED:ubuntu-driver UBUNTU: ubuntu: (no-squash) vbox -- infrastructure and updater +4ac4ed6aaaabccd3113d12d2aae4227eeed2a94d NEEDED UBUNTU: SAUCE: ext4: disable ext4_punch_hole for indirect filesystems +20f73500aa3c6973b662d434ea994a067d2732ce NEEDED:debian UBUNTU: [Config] Add ibmvfc to d-i +27016d13d7def2d932edabe10cda08551eb76af4 NEEDED:debian UBUNTU: [Config] CONFIG_FA_DUMP=y +043037877a7de2b8e6b2dff0420efe45ecff2ff5 NEEDED:debian UBUNTU: Ubuntu-3.19.0-4.4 +5dacd4f7dba5435e1b960bdc491293c82ee3ec2f NEEDED:debian UBUNTU: updateconfigs following rebase to v3.19-rc7 +9eade02480702c9670f2bac1bd55d38545a312cf NEEDED:debian UBUNTU: rebase to v3.19-rc7 +28f33eab58fbe7473e6ef7273c82f6b46108bd19 NEEDED:debian UBUNTU: Start new release +113ccff71d64d15da62001f597421ead251c70a8 NEEDED:debian UBUNTU: hyper-v -- fix comment handing in /etc/network/interfaces +2df9364c2056a3043e10cd5a62ce9706b2f7d1d1 NEEDED UBUNTU: SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop +88065e99f0f6bcf3dc4631a2ceec2f2708af8cef NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Tracers config defaults +0d569c89d78dfe8145fbeebe5249f794a9d0f552 NEEDED:debian UBUNTU: Ubuntu-3.19.0-3.3 +c0a8e98a3847348d78a54c944d202137d068b94d NEEDED:debian UBUNTU: annotations -- pull in updated annotations +25a4fc67cec440d3bb4bc7705449df08e6c51858 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc6 +7c37badc321d561bbd2f178669119c919ff20522 NEEDED:debian UBUNTU: rebase to v3.19-rc6 +4b617281c437581c70f6cf2334398bb1ab1c0340 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Mailbox Hardware Support config defaults +32d6900d5dc2578bdb1627edfeed21e631a31e60 NEEDED:debian UBUNTU: [Config] apply General setup >> CPU/Task time and stats accounting >> Cputime accounting config defaults +cd6b5ebc39722a4e376e47f1d48a0e46286ff308 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers config defaults +c8a2a8aae37f1474453bea69acbf95c396227e31 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Real Time Clock config defaults +a74fa91f9105e69fd2b101d914ab503ef67dd227 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) config defaults +fe8ce4f67a26106dab3193b3515fe865e136ab4a NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in +2f02ebe61ad44b1175700cc78a3ccd94bb07ff06 NEEDED:debian UBUNTU: [Packaging] force "dpkg-source -I -i" behavior +5a6bf13232cd325e73e6ebae516cac9b0da4421c NEEDED:debian UBUNTU: [Config] apply General setup >> Timers subsystem >> Timer tick handling config defaults +d3d0add00f0801e6823242d1c7bd41c990eb05bb NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Kernel debugging config defaults +3b255c82446a97f59e59adb3bd320df4550c1381 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT config defaults +3549c0af6717159aa8a3b77864dde9b341476b1b NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT config defaults +76fb94fa938323cea755f08923c1699f857849a4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support config defaults +91aa3e3c5f375fcda9802e0bf30743388db97809 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +7e28f1d5b0f539c2f315248d638d322cc1bed204 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards config defaults +83d976c317bc7939457ba2b194ca9b20942b08e8 NEEDED:debian UBUNTU: [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) config defaults +a6ff3e7b7835019303b4df16c7d34e83f7bc432f NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> TCP/IP networking config defaults +fff6ce5d257e3a55676ab2f32f7174648b48bd4d NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> QoS and/or fair queueing >> Actions config defaults +3db2706fa00266f41b26ac6156b92cc92013c4b6 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support config defaults +d379025cb43c73ba0ba6b1e9ae7030ef3706acbb NEEDED:debian UBUNTU: [Config] apply Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices config defaults +d682b0866fdab7676efc02d7aca31ffba5af5ba9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller config defaults +cc6d21036b39e6747f35992743390b46f490ef71 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs config defaults +f38ce7164ddb54b46a19ed6e3640d5e21f968aff NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Media staging drivers config defaults +f2e32d3fe36a5af721325ad09244872f55783932 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Lustre file system client support config defaults +3fa3a6e3f9bc72ccf4050d5278d82c4f18fa614c NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio config defaults +7483bb4ddb3800421bf67db6f57e9a2ad68aede9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices config defaults +bb035568140e5726260cbffc40900186503e066e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support config defaults +5857964914cdeedb945ef65490afa1353f0e7d06 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SPI support config defaults +67356ed062d29becaaf27108aa8737fee13cab69 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pin controllers config defaults +fdab45aa9ebd2c87af7ad88b62c557a9ddaf06eb NEEDED:debian UBUNTU: [Config] apply Device Drivers >> PHY Subsystem config defaults +be26a7664fe53b25132a1570e7cb572cdfaf8f03 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config defaults +664ad4582ac5f69f585defe21f75a44efdc5def9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config defaults +7abff1caa5b128105a095b294a4084d58eb4208a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Network core driver support config defaults +b85516a587125164e4fb6f40a937687859484278 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Distributed Switch Architecture drivers config defaults +6eeec6ead3c181f9d305a5139a2af09ab02d25e2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Remote Controller devices config defaults +9bf5422ec87618ea0a9c158e2ee3ea763769635e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Media PCI Adapters config defaults +0062486c5f49ca81ce44c08483793cd28bd55d4e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers config defaults +a3cab812b888b76a1c6188d51837461f82579107 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multifunction device drivers config defaults +efce9b94895b00d4246281051a6f57abd556b593 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> MMC/SD/SDIO card support config defaults +ba5f91a1915102862b13b8c73223662536b6ff51 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> LED Support >> LED Class Support config defaults +5a655a22455c44e92b820d86de5f1eff080d44a1 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults +2dc2403265124b82af4a57da628cb21bafbab54a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +9fe17395d411adbcfb323c915f84ea85f4c48ce8 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Pressure sensors config defaults +5e7b068f32db503c6eb371a23ae2c2a16749578f NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Humidity sensors config defaults +20e5409f0457d28d2abca5ef7c1630dc22d84813 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Analog to digital converters config defaults +7ae44769248078c8d1ba362fcf3de16b8ab681ab NEEDED:debian UBUNTU: [Config] apply Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support config defaults +581c6acbf122138da27108c2a13098d6815349df NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Hardware Monitoring support config defaults +2e33cbcfe6451f61ae18aeec37fe1753d0a52cc2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> HID support >> HID bus support >> Special HID drivers config defaults +02139708b965f07a499593f9036750c30fbe6454 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices config defaults +a86fe195e825e37e694a5960f7af6ddfbf9f3673 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) config defaults +0d10ef98e5bb7c1fb144139e54e13d0051d6f5e4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> GPIO Support config defaults +0c423ad9c578e7596de1409cbfd2db4d5b988cd2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> Serial drivers config defaults +58007d9583eaf94442bcaf472d4e69c8dc24cf61 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> IPMI top-level message handler config defaults +429394f5a6c855973e6027edbf8811d94f2e54d7 NEEDED:debian UBUNTU: [Config] Disable CONFIG_USB_OTG +7676b5cebdfe24bebfe402c85ce7d232f76fe756 NEEDED:debian UBUNTU: [Config] CONFIG_DEBUG_INFO_SPLIT=n +66857d56aa24e2eff079df005f0d189060d68645 NEEDED:debian UBUNTU: [Config] annotations: clean up CONFIG_FW_LOADER_USER_HELPER_FALLBACK and associates +17fde7fa97d8da20c499e37ff9615895623adb8e NEEDED:debian UBUNTU: annotations: add new v3.19-rc5 options (and some returning options) +3fd5011f880877a583b1ccefd06ad481452cdef7 NEEDED overlay: add backwards compatible overlayfs format support (fixes) +7c3d7c6d8df09db4b2f6be809434232021d9305f NEEDED:debian UBUNTU: [Packaging] hyper-v -- daemons now require -n for non-forking startup +e3defbff069c0d1afa9c30ecdb2cfbd3776c16eb NEEDED:debian UBUNTU: [Config] enforce CONFIG_FHANDLE=y +b4d80bddacd59441e76e4f4b750154f1a95736a6 NEEDED:debian UBUNTU: annotations -- reorder pass +ed8c877b843aeaa7fe38947d0bdbf15ef9405f27 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc5 +9dd6f68702869ea7ee4219aeeba148bd11e9e211 NEEDED:debian UBUNTU: [Config] add modules removed due to tighter dependencies +c3d1971989ed55f56aaa0bd882611d8c228cbc05 NEEDED:debian UBUNTU: rebase to v3.19-rc5 +07d995fd618003c3e4663f2e58b73318fa442c32 NEEDED:debian UBUNTU: Start new release +610b443e33e236074875db94a42ed8d8190951f6 NEEDED:debian UBUNTU: [Packaging] enforce -- drop empty enforce file +1dd97225d642eaa32460873d90a53c58aa11e243 NEEDED:debian UBUNTU: [Packaging] config-check -- drop support for enforce file +129becf2ef8faffe61100ef5f6435d3bd396265c NEEDED:debian UBUNTU: [Config] annotations -- switch to ENFORCED annotations +561c8f3a1941d2895a150b5780def64b5b8fa5b4 NEEDED:debian UBUNTU: [Packaging] config-check -- add support for enforced annotations +33ea0bf33a842aa5d8f826f3be477a7b1fd7b8fa NEEDED:debian UBUNTU: annotations -- full v3.17/v3.18/v3.19 review pass +eee1ca9895f0a19241010cea3ef7b5c87bbc3cc9 NEEDED:debian UBUNTU: annotations -- reorder to vivid menu layout +57ccd817353c91a6b5ed620db15e86315251e1a9 NEEDED:debian UBUNTU: annotations -- utopic base +5a62a2f9705b70bdf6a1a0870d15903016411c5c NEEDED UBUNTU: [Debian] arm64 -- build ubuntu drivers +a58e808c17a895c7c3698bee63172114790a6d88 NEEDED:debian UBUNTU: Ubuntu-3.19.0-2.2 +d8db9694361b258427eab1846b211be332c4a1f9 NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland +c0b5915ac61b6c49e27fecf6ba8f62cc2d17297b NEEDED:debian UBUNTU: add missing buglink in unreleased versions +80ac0a8626c33921522e59e258a0bcee0fac6620 NEEDED:debian UBUNTU: [Config] switch on "all" dtbs +f5c5c728204613d98677cecfa499451a43c316d9 NEEDED:debian UBUNTU: [Packaging] install all dtb files +4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6 NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts +2db975f991de109cb558a88b821aee4ab32294b9 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc4 +efda5ea3e72181c54313960c4eb623cb9bf70184 NEEDED:debian UBUNTU: rebase to v3.19-rc4 +3ceca000c3f419e4ea82d5cc89b17788311e066a NEEDED:debian UBUNTU: [Config] Enable CONFIG_N_GSM as module. +6d976353cda7b65cd3bccc025fd676a2b60be71e NEEDED UBUNTU: SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new timers +c2b14cbdd9db02c941b1a201ea7de7cbefd042a5 NEEDED:debian UBUNTU: Start new release +7e4ee90affaec9dfd96c8c527e410e37e60e7cdd NEEDED:debian UBUNTU: Ubuntu-3.19.0-1.1 +07d5adb10aa7995e36b1c3fb063b1db97e0744bb NEEDED:debian UBUNTU: [Config] follow move of arm64 dts' into vendor directories +c73a0ec29f0772426f60c0e5e4c660a5f49c2963 NEEDED:debian UBUNTU: [Packaging] handle dts directories +c8f77b2dd48cc6a6bcce49411b546aefa08c799c NEEDED:debian UBUNTU: [Packaging] uploadnum should be the remainder of the version +50a8041a37110aa8867a493b624aa6bf409acb93 NEEDED:debian UBUNTU: [Configs] updateconfigs following rebase to v3.19-rc3 +afa910e643c7b399c3cdd8312d84b65d1c64d197 NEEDED:debian UBUNTU: rebase to v3.19-rc3 +732f3e48b565abe6e7fd7f489edb3bc88e68581c NEEDED:debian UBUNTU: v3.19 series start +ea0064b7d9878d01ec4653e528c9b998b4ae10b5 NEEDED:debian UBUNTU: [Configs] updateconfigs following aufs update +13055ff9195392d6f1d8cc9065079147efd15b2e NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c +3df26820282895c299dffb25972f584721ea75c1 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-standalone.patch +b9579ed6992d02cd55e4d94a13be89c32ce84ff5 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-mmap.patch +b39b7e7301c7723004985b773bcfb74fbfb4eabb NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-base.patch +e08ec9211daa19f663ab406848b5df2271eac1d4 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-base.patch" +4a9009a9ae4027ec12dd6313fd18a8bb56bf4918 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch" +6ae8ad7291b70e01d11bf753e5e79d5b5aeee7fb IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch" +241d2270754f4ab7d90d52324a7c8a85be88aca7 NEEDED:debian UBUNTU: disable module checks for rebase +9defa41f9126d026cd6a1ead03e6443e98e97108 NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +caae90a5781f1d312b91fe44839c56009f2e0eb3 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename for d_alias +401119f392cb5bd61918659f9a20ab2ae54934e7 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to get_unused_fd_flags() +78df37e096365062f950d01f27dacf143ba57276 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to d_splice_alias +ca8d1a7503192dd5b9c1197eae4ea6be8f36ae81 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename of d_child +388a35e8069f8657310c7f00d9062989da94b49d NEEDED:debian UBUNTU: [Config] defaultconfigs following rebase to v3.19-rc2 +e08b74c9afcc53d50a3c8ebe43e3b8cb60f2aa61 NEEDED:debian UBUNTU: rebase to v3.19-rc2 +a8d99914420de484583f3ef7327d603cce40fd3a NEEDED:debian UBUNTU: rebase to v3.19-rc1 +0373477d240b8de65a1b6f8596f1b55e61eb7871 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS3 -- follow switch to vfs_fallocate +817e01310fbcc1932419860833d9bba41e8d21a9 NEEDED:debian UBUNTU: Start new release +685154a8fd43a024cc3f671d85c36158717c0f0c NEEDED arm64: optimized copy_to_user and copy_from_user assembly code +980f00986e35f630c7bb18065836e3b2f518f7a2 NEEDED:debian UBUNTU: Ubuntu-3.18.0-7.8 +eef49554443cc3c5bf71b7f5aa500dce3ab3e0d0 NEEDED:debian UBUNTU: [config] set apparmor config options +8a91a5705046dca1c9972ce2a76714edc837e367 NEEDED UBUNTU: SAUCE: (no-up) apparmor: add parameter to control whether policy hashing is used +e1b6a4b88bdb9cf858e068d0e3a6b7449d648513 NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +892b8b7cfb14b9bdfbc9ac2fee8e751a67707542 NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +98c64db6cffd59a894d4a4492aea761fa6e6c51a NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +178a99413c26c359c7ea63c23b70c14238c72c9e NEEDED:debian UBUNTU: [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n +0e7cd75372d106d02b3f03f9a2e6496782e39102 NEEDED:debian UBUNTU: Start new release +354c399098d730724d47572411db3966640b886d NEEDED:debian UBUNTU: Ubuntu-3.18.0-6.7 +70f41850210ae054ddddd3cdb3c8c6b80d26fef9 NEEDED:debian UBUNTU: [Config] CONFIG_PCIEASPM_DEBUG=y +69d6e475d4b184e691fde6bb6173b0b2a78f95ee NEEDED:debian UBUNTU: [Config] armhf: VIRTIO_[BALLOON|MMIO]=y +e7248dea9798e37ed9136c0234e60c5d3724a09a NEEDED:debian UBUNTU: rebase to v3.18 +c08cb8bf95c2175a3c0d3916a3a95bb865516303 NEEDED:debian UBUNTU: Start new release +5de9e13b14877580032ab92fb008417493ad5ab6 NEEDED:debian UBUNTU: Ubuntu-3.18.0-5.6 +f0c21c519145ef0374be78d7f3562691dae45800 NEEDED:debian UBUNTU: rebase to v3.18-rc7 +e74900777be8a73fd3d07669414bd103c385d2ce NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_MQ_DEFAULT=n +58dfe08f9155f1821f7a0659bcb9c869d4e5ac73 NEEDED:debian UBUNTU: Start new release +10dd9a851640f6ab60c78594bbff79d76dbb2488 NEEDED:debian UBUNTU: [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp ppc64el/generic +9b1c8ecc6c86e71fab6d15bd84bd1628aae6cd2e NEEDED:debian UBUNTU: Ubuntu-3.18.0-4.5 +ea3282297f6f3af23009d7a400b35b73c3c10ac8 NEEDED:debian UBUNTU: [Config] enable overlayfs v1 support +ff7e37255afb5b57b5e378e7aef2b4935cc3eb0f NEEDED overlay: add backwards compatible overlayfs format support +47897ce32d62ea9af685c2a4b06734e76fbfcb1d NEEDED:debian UBUNTU: [Config] update configs following rebase to v3.18-rc6 +b9de0aaa58a863d277ac6141018e82d619d0a89c NEEDED:debian UBUNTU: rebase to v3.18-rc6 +f8bae137b946111d88cfd59cdb3501abc6072f7d NEEDED:debian UBUNTU: rebase to v3.18-rc5 +4550c44494ed6064b56dc746c1ca59cc42571292 NEEDED:debian UBUNTU: Start new release +cb37df61a5a331fe0bf87d467f6938149b7be5f5 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.4 +394645d92e939afd7bad1e13d07367d8c077fe12 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 +3a53bed921a6d5c0fb30fc8e02a06105fad9dcf7 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.3 +156d0481e2abded21be8e0a516f952d13cfd0ff5 NEEDED:debian UBUNTU: [Config] updateconfigs following aufs3 update +4f0421c01639daf81bf6ccb3d5f4b8ff75e4552f NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 +6051ec34d1dbdcb54e4d8c5a9f2161793f85c99d IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch +d85f1f5fbc58b6f338ed6172f1b281cf7d6cd638 IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch +29946e18ae75d3ded766003caec2a3677a07a83f IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-base.patch +57f696f01845322cb8c68804524bdd41a2ad1146 NEEDED:debian UBUNTU: rebase to v3.18-rc4 +11048583c75d357f740d6d2ba6b2285f2657d93f NEEDED:debian UBUNTU: [Config] Disable CONFIG_RCU_USER_QS on arm64 +a20ed54dbbda43450ec3bf5d3db536e2a9ef9000 NEEDED:debian UBUNTU: [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET +d2dfee2ba64140dc875aa2de2db76326021cd349 NEEDED:debian UBUNTU: [Debian] basic hook support +696ca2c9a87c9da383d1d0475cc4699e81cf67ba NEEDED:debian UBUNTU: [Config] amd64 is now the indep architecture +f500e7dcda3dfecfa2175847ba31bf8dd5470ce0 NEEDED:debian UBUNTU: [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 +baf3a88eca0a927579ba1f6cf805c2b49f7b8165 NEEDED:debian UBUNTU: Start new release +c72e2fb77e36121ff538fe2b6a21354128cd8194 NEEDED:debian UBUNTU: Ubuntu-3.18.0-2.2 +714d582bfcfdb5091e472a15d2b1c4ab74383756 NEEDED:debian UBUNTU: rebase to v3.18-rc3 +68ed89d5098ecb26c3cf2ce31a197b60147accd9 NEEDED:debian UBUNTU: Start new release +9ba3dda425ca839667062942e93529e75382531a NEEDED:debian UBUNTU: Ubuntu-3.18.0-1.1 +76d6207803e1b92f419126d507d5e790738bb580 NEEDED:debian UBUNTU: [Debian] install usbipd +2a878f46cd018c9cb2e3f6a9bf436238522e4799 NEEDED:debian UBUNTU: [Config] armhf: disable JUMP_LABEL +994e6de3dd2affbd3ec963597d7d8af8990627e7 NEEDED:debian UBUNTU: [Config] CONFIG_DRM_BOCHS=n +0f87fe85382c852b2d5faf7d8b94fa994ae00461 NEEDED:debian UBUNTU: [Config] enable cloud tools on i386 +3aab9a4865e735ffc6aa1979e4d32929da66e317 NEEDED:debian UBUNTU: [Config] CONFIG_PATA_MACIO=y +f54e18bd24b7362841b1902c1a0804bc1dd12e2d NEEDED:debian UBUNTU: [Config] linux-image-extra postrm is not needed on purge +be3df8ea980f12fac4ed6e27c5948dc13c25c9d2 NEEDED:debian UBUNTU: [Config] linux-image-extra is additive to linux-image +809a654eb28d8127dc89dd89d679d44aad7e4cd6 NEEDED:debian UBUNTU: [Config] Added drivers/uio to generic inclusion list +bc189702109182682081057777e98beaff1200cc NEEDED:debian UBUNTU: [Config] dropped scsi_tgt from generic inclusion list +2ac80c0acfef71084a8072d792534e3b2617bee9 NEEDED:debian UBUNTU: CONFIG_MODULE_COMPRESS=n +f7103d518249e744a5c0aa004aca24a1f7d57706 NEEDED:debian UBUNTU: [Debian] Fix linux-doc dangling symlinks +ba30c7ba905e7f8cc776669e07c2e0a770b1aabf NEEDED:debian UBUNTU: rebase to v3.18-rc2 +0f81052c41fb44d865aa1fdcaf349bd35b097a6f NEEDED:debian UBUNTU: [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n +99f88d003b04a94cdffb06292a131e4c9eaacb10 NEEDED:debian UBUNTU: Enable vivid +816874fb757dc85e42d20af922290d6d55cf9fac NEEDED:split-debian UBUNTU: rebase to v3.18-rc1 +5774f4dab5e36642e243e03837f63e68c93dfacf NEEDED:debian UBUNTU: rebase to v3.17 +dbabd921800e97ff2a708b068f772ca1182157bc NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el +59c659ef34502c3c6b5a0e8490bac9c7ffa9e042 NEEDED:debian UBUNTU: rebase to v3.17-rc7 +431e93cbc6a563ae15b4877810beb1b9f4edd976 NEEDED:debian UBUNTU: [Debian] Don't fail if a symlink already exists +0794c4f5d47196aaa1c774fcaa2ef81bd7214141 NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el +4790317b5007565da1299b35578135011bd9c6e9 NEEDED:debian UBUNTU: [Config] CONFIG_SND_HDA_INTEL=n for ppc64el +e7971f95deafcac1b3f524645a68fe915344845d NEEDED:debian UBUNTU: [Config] Correct annotation regarding CONFIG_DMA_CMA +f2d29260d449d918c5885aa6abc182dade506257 NEEDED:debian UBUNTU: [Config] CONFIG_CRASH_DUMP=n for powerpc-smp +56a2eb988714b6a0bb0f6c0da9a313a8f439291e NEEDED:debian UBUNTU: [Config] Enable usbip tools +dc7084c88863a69e70e90265485b6b51c01ccbad NEEDED:debian UBUNTU: [Debian] usbip tools packaging +40504c7e778f0ad9f19180a39ddd9018910c705a NEEDED UBUNTU: SAUCE: usbip: Update include path +122f035765feacfa15b09515c78af28f7092877c NEEDED:debian UBUNTU: rebase to v3.17-rc6 +d7be42a7599c483c2294e1122d9c4d5f0d347321 NEEDED:debian UBUNTU: [Config] CONFIG_USB_OHCI_HCD_PCI=y +dd1e6e6bf5f6ffcd1436ad3fbe32c93da7a5ff30 NEEDED:debian UBUNTU: [Config] follow rename of DEB_BUILD_PROFILES +dee5d182c3b180973d3a6fab11ac30af4513559b NEEDED:debian UBUNTU: [Config] tools -- only build common tools when enabled +782d85880d33461406f5a288942e6dcc11770e47 NEEDED:debian UBUNTU: [Debian] set do_*_tools after stage1 or bootstrap is determined +5b118bbb3a38dc3e5be0d5c921603f672fe1ab4c NEEDED:debian UBUNTU: [Config] Add mpt3sas to d-i +6afad884eeffc67a53e5d11ffe61c9e40b64d26a NEEDED:debian UBUNTU: [Config] CONFIG_DMA_CMA=n +aa4e526d8be91b593cd6d0a0e4ab949d26541fa0 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64_HV=m +519ac1677b339775493fc2a4cff55d9e54c28ce7 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el +dc9bcbd1592cfede67a2c5ccb5c59f26f0589260 NEEDED:debian UBUNTU: [Config] CONFIG_XMON=y +e9173466e3323cb9c78cdc807c72e6838f5d7119 NEEDED:debian UBUNTU: [Config] armhf: USB_[E|O]HCI_EXYNOS=y +4377933f12fbcb31006f23d0117d8a0d164adb80 NEEDED:debian UBUNTU: rebase to v3.17-rc5 +2d172824498ca976ec7e37ec373a248d49a0d5cc NEEDED:debian UBUNTU: rebase to v3.17-rc4 +6980242f0ab61eca03c77142ad4000fadfa022f7 NEEDED:debian UBUNTU: rebase to v3.17-rc3 +72e421db34ebf1bbe15649de2ab2132970f21872 NEEDED:debian UBUNTU: [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs +3cf410f0b6b36de437c55e319bde033fe75cdb28 NEEDED:debian UBUNTU: [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR +e332b2967797d421575080f7b872c7b675e47629 NEEDED:debian UBUNTU: [Config] armhf: REGULATOR_TWL4030=y +c37acf9c89fae66506d9875bdf758a5fee0233ed NEEDED:debian UBUNTU: [Config] Added net/6lowpan/* to generic inclusion list +4dd073455ec2c021accdd97ee82b8091b17ea7b7 NEEDED:debian UBUNTU: [Config] CONFIG_NFC_ST21NFCB=n +abc7908d4c71425c16718d40bbbea1515bc39204 NEEDED:debian UBUNTU: updateconfigs +e09aab2c0d195125f71b50cdff0a858983953609 NEEDED:debian UBUNTU: rebase to v3.17-rc2 +9d32d8b674a700e342c5559d8e09e9590785d40a NEEDED:debian UBUNTU: Start new release +18ffc6ce8fa107ac99b52f69a8107511c9d560c5 NEEDED:debian UBUNTU: Ubuntu-3.16.0-11.16 +06f6d00b1c7ae75b5988b2ef922cdd8308edacd1 NEEDED:debian UBUNTU: [Config] CONFIG_ZPOOL=y +7cc84cf61b760725973c93b9c7e39d6f521bfe62 NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" +6ffe8179fc951ea6d1886f28b0742eb2744f033c NEEDED:debian UBUNTU: Bump ABI +cc21629a6a5f6a3efdaf91b320508479af69e1fa NEEDED:debian UBUNTU: Start new release +d1a2628d426406b61d1d46747da2815e7995d3c9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-10.15 +90b44b74910b3c5e86cb05cfde5f67fee0ef2b75 NEEDED UBUNTU: SAUCE: bcache: prevent crash on changing writeback_running +e3102a21978dd9c109856a48cd84837e708b7b29 NEEDED:debian UBUNTU: [Config] CONFIG_SENSORS_IBMPOWERNV=m +2819061858516119133b736fdfa0c11d23cceccc NEEDED:debian UBUNTU: [Config] CONFIG_SECURITY_NETWORK_XFRM=y +a30185ef8f2fa9dd925cf8b99399a72bc308a397 NEEDED:debian UBUNTU: [Config] CONFIG_XFRM_STATISTICS=y +9d4a441eb46227e80b77e99ef15a4248ba2ddfcd NEEDED UBUNTU: SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC +e7e22f86dfc3e11d8f6eab08074ebb610a20c5ab NEEDED UBUNTU: SAUCE: (no-up) dt-bindings: Add Potenza PMU binding +5ed1bfbfcc717aead960bf74940328285d3bf957 NEEDED:debian UBUNTU: [debian] Fix regression with ABI subversions and backport +62f12ae8d9c08cc6496b60b330350a4dfcbca77f NEEDED:debian UBUNTU: Start new release +ab212af17f1b9eaa43bffde42440598079044839 NEEDED:debian UBUNTU: Ubuntu-3.16.0-9.14 +c8a4d4970d0835d19ff2acd700d0ae94b877b3e7 NEEDED UBUNTU: SAUCE: Overlayfs: allow unprivileged mounts +38d659d55bb8fab6f71934dd969a1ba8badeed79 NEEDED:debian UBUNTU: rebase to v3.16.1 +aefca49c0717ac60ba231a3b2e0cb62f0937113c NEEDED:debian UBUNTU: Start new release +a9dc14c5056a82cfd44e3b098b252e52fe0b6925 NEEDED:debian UBUNTU: Ubuntu-3.16.0-8.13 +ab4880f5e96efda31c6b52136704c9eb0ccab87b NEEDED:debian UBUNTU: [debian] Allow for package revisions condusive for branching +981bed5cd793ef69ac7377e9cbb6375ce70351f6 NEEDED:debian UBUNTU: Start new release +74a7d62985f35ddef973776c3e31ff256f4a5859 NEEDED:debian UBUNTU: Ubuntu-3.16.0-7.12 +aeaada62d9efea9463bbcfc2a6549d18f023cdd5 NEEDED:debian UBUNTU: [Config] Add hv_balloon to d-i virtio-modules +035036c87c216bfbb44109c963375f5f20dc05a1 NEEDED:debian UBUNTU: [Config] d-i -- add virtio_scsi to virtio-modules +62317e97c6bbb5d8043e1fc3e26df6b905325c4c NEEDED:debian UBUNTU: rebase to v3.16 final +250eb531089a04b95b698be6524ce4edbe15ddc5 NEEDED:debian UBUNTU: [Packaging] Fix 'printchanges' to work with versions containing '+' +53647a9928a35d01e9f1b59c5d7b96ad3353048a NEEDED:debian UBUNTU: [Config] CONFIG_CONTEXT_TRACKING_FORCE=n +e1b2b4a99edece7053725bc318f7f58e53767692 NEEDED:debian UBUNTU: [Config] CONFIG_MICROCODE=y +a1f57fea081dbab4be712029e9b64c60d61935a0 NEEDED:debian UBUNTU: Start new release +b342b70677fb9741dd3dc137f45e5ce3181223e9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-6.11 +f0c937317763b38820a72a6b02b1fdb0ad9d285d NEEDED:debian UBUNTU: rebase to v3.16-rc7 +d4d6d5fc58a66d37821bbbf8561ac2a814c977d9 NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y +c9990e0b0998d728503f56ab9c7821d56a721a58 NEEDED:debian UBUNTU: [Config] armhf: RTC_DRV_PCF8523=y +82fd2a6b5fff23ba504adfe2d18dc1d44f109445 NEEDED:debian UBUNTU: [Config] armhf: build cubox & imx6 DTBs +7fdb1513964145758aefdf7a43b06a1d0b6b5811 NEEDED:debian UBUNTU: [Config] armhf: KEYBOARD_IMX=m +7534c02766b9c2305e03cd5b5a117c3997863ff4 NEEDED:debian UBUNTU: [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m +43470d1ec8f5355be9c153b05088af5505ebd499 NEEDED:debian UBUNTU: [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y +6f1d20b13ce5c137c86d1144eb82ab38f99e76cf NEEDED:debian UBUNTU: Start new release +9d6defca20c389c1ff93e5802c71973b092e7a14 NEEDED:split-debian UBUNTU: Ubuntu-3.16.0-5.10 +1d693f78502686a992d2038c9896c3e6c2652ce2 NEEDED UBUNTU: SAUCE: aufs3 -- update update scripting +53acc12981cc9883d9038fcac7ac86b9ad274f24 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary +87428d40577506cfdf31336368aa613ae0c54639 NEEDED UBUNTU: SAUCE: 85xx: Only use generic tbsync routines on PPC32 +ad006bb4d530a83f425ee836b7d8de7d5c93e3cf NEEDED UBUNTU: SAUCE: (no-up) Select reboot driver for X-Gene platform. +5d2fc3d65465aac854036c9ca737eab59b608042 NEEDED UBUNTU: SAUCE: nouveau: missing outputs should be warnings +b2648e043821b5866f8c863c4b928732228d3402 NEEDED UBUNTU: SAUCE: kvm: BIOS disabled kvm support should be a warning +8c10fb1a7bf59170ed6fd059cb35e5017abcd05f NEEDED UBUNTU: SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. +6d0ed555d8ae64794d2902f9c1b7e0da5c39d939 NEEDED UBUNTU: SAUCE: intel_pstate: inform user that thermald is worth considering +594f6dbf60084fd5fc21bdcc0a99b154be76e76d NEEDED UBUNTU: SAUCE: (no-up) mei_me: Add module parameter to disable MSI +e62b73418e9503b09d61a6dc8721f457bec967d0 NEEDED UBUNTU: SAUCE: Revert "drm/crtc-helpers: fix dpms on logic" +6e2be9569f946dc74fec9f5f24a9d80689275343 NEEDED UBUNTU: SAUCE: book3e cleanups for CONFIG_RELOCATABLE +69923caf98a546b30325ec486536633fddb7ff90 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB +2df7602013328910b0c6fce7f411a5d1b25be301 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET +3d13bd1d0394d80f6dccae2daafdd1ce887e8672 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: implement ppc64 kexec specfic +219cc9dd30079c35ad74590b3808ff7e12f3dd39 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: introduce a kexec kernel flag +9e138c3c7acc6975d0ac364254ae021592e2d096 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: create a 1:1 TLB mapping +2d3b205cde4d3b8069b8d9bb97203de57726ea92 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: enable kexec for kernel +32b8a9f39e22e0b54dbe78a1c179de7ca0dfd9cb NEEDED UBUNTU: SAUCE: powerpc/book3e: support CONFIG_RELOCATABLE +aa396fc0fa2317a5b447e88bc46b352f0411307e NEEDED UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content until vt switch +0e50fbdb8e04609ddd667428f54d81fd17ffc232 NEEDED UBUNTU: SAUCE: export some symbols for powerpc +272b7c0f6c6c380981101491d9ef26bd45ade5fe NEEDED UBUNTU: SAUCE: allow IRQs to be irq-threaded by default via config +d5c3c89b86cfe6ce6dc5c67c462e563326940d44 NEEDED UBUNTU: SAUCE: Provide booke stub for kvmppc_is_bigendian() +b551f2a4439d2179b3732c2a28277d9245dbb150 NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors +285f1bd95dd079825af0d06e33af71a7583aeee9 NEEDED UBUNTU: SAUCE: Fixup freescale usb phy driver to work on ppc64 +c2361b23e7b757ffa4241a6ab427694f3be844cd NEEDED UBUNTU: SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" +f40baa6f375e1730970cebce0a14a7456d539ab2 NEEDED UBUNTU: SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit ptr/64-bit rsrcs +dc7dff6e417c8642ead4659e42e9b1b601db199c NEEDED UBUNTU: SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work with 10G "fixed-link"s +0bd9175323dad194fcff7b450aa14d39ce710b3d NEEDED UBUNTU: SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type +3a1228b27e425e24b6257c8af1e3ccebc1f9f809 NEEDED UBUNTU: SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP +eff618d811a4b62462674a8bb05556a548f2c112 NEEDED UBUNTU: SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP +8418ceb9869d41a7ba4e6217c631bdb28e07c33b NEEDED UBUNTU: SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c +fd4bcb1162b482eafc3fc3fe480698cc8d1cdfdb NEEDED UBUNTU: SAUCE: tg3: Add support for new 57786 device id. +00b5fd7aaa231697512b50a7c80ed2a3c8c7e3b0 NEEDED UBUNTU: SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 +bf3a2dfe2f7f34c174a0a938c350912e319fe032 NEEDED UBUNTU: SAUCE: disable stack-protector for ARM compressed bootloader +29fb264813de8f4bbd8c8577901630e6a547d503 NEEDED UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam +cdf48be1c63b4a07cecf2a62617f7fb7b847fabb NEEDED UBUNTU: SAUCE: isapnp_init: make isa PNP scans occur async +eedee9b0f515aa2793fccbbfd7d58db95b2490d1 NEEDED UBUNTU: SAUCE: dm-crypt: never use write same +6eccf1ef86175928b723ca681c2ab851d112e7ac NEEDED UBUNTU: SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo ThinkPads +07419bbe0eb79097693cae2b7ed1b3f467fca642 NEEDED UBUNTU: SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops +5b2c0e070ec1b4d29178b320220c5388ec9f9c82 NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.17.0 +fdbf1af4b48970478c1ee25e1c620ecb8cd4035e NEEDED UBUNTU: SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() (for v3.7+) +1d4ec94ffcaca71994e520abe769ee6dcf4579ee NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci +f760d3c92097784cfda92f3f4c094ccf9fc2497c NEEDED UBUNTU: SAUCE: (no-up) PCI: fix system hang issue of Marvell SATA host controller +f43492d5b2cf399039ca6914348d25aaee474e4f NEEDED UBUNTU: SAUCE: (no-up) Convert bnx2x firmware files to ihex format +8b732f482e348d75ee9b433c574bcf88d0a8991b NEEDED UBUNTU: SAUCE: (no-up) Input: Cypress PS/2 Trackpad simulated multitouch +7466874e8128bab355ddf3512171ae836348b7f7 NEEDED UBUNTU: SAUCE: (no-up) hv: Supply vendor ID and package ABI +6a5fff41e536a612ddc1352d93a5b6db8ba68f39 NEEDED UBUNTU: SAUCE: (no-up) Revert "VFS: don't do protected {sym,hard}links by default" +ae359c3e312669ebde46bc3817d6cea99a7f9bef NEEDED UBUNTU: SAUCE: (no-up) Remove vicam files duplicated in linux-firmware +794523f01c1303be9d736acca7f016af31b7b416 NEEDED UBUNTU: SAUCE: (no-up) Remove dsp56k files used only by m68k +db779e5d146cf4d34aee88cf9d2f71d00a9c926c NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.2.0 +588fe8f57dc07478c434afb332793b91ea896bc9 NEEDED UBUNTU: SAUCE: (no-up) Remove radeon files duplicated in linux-firmware +c4e09c38991997926099d1fdac4bef85cbdc4d72 NEEDED UBUNTU: SAUCE: (no-up) Remove sun files duplicated in linux-firmware +14b6b1d6c7c6b42d778c4aacc0a9d68a451e5ba8 NEEDED UBUNTU: SAUCE: (no-up) Remove keyspan files duplicated in linux-firmware +8989c6225b5d8ef4bd42337382c3fe58c4448887 NEEDED UBUNTU: SAUCE: (no-up) Remove acenic files duplicated in linux-firmware +e9347676137c6b05dd8d1db1de39230e677ada95 NEEDED UBUNTU: SAUCE: (no-up) Remove r128 files duplicated in linux-firmware +8a8c10cf8ebc650ed0ae9bb94de9787321fcef5b NEEDED UBUNTU: SAUCE: (no-up) Remove cxgb3 files duplicated in linux-firmware +da35e9ad8c83e4ecc8a73b68b8cc556e8723cdb3 NEEDED UBUNTU: SAUCE: (no-up) Remove matrox files duplicated in linux-firmware +31f0ae2767b81565b1333630f9572a09df295a04 NEEDED UBUNTU: SAUCE: (no-up) Remove tehuti files duplicated in linux-firmware +ea4588800ea937d2044723f497632e608e5a713e NEEDED UBUNTU: SAUCE: (no-up) Remove yam files duplicated in linux-firmware +5fa5e5d023fa3ad67d4947710062440e0b92b6f3 NEEDED UBUNTU: SAUCE: (no-up) fix highbank include path +bcd707780091a34cd1815b8ab6cf795e13433e65 NEEDED UBUNTU: SAUCE: (no-up) vxge: Declare MODULE_FIRMWARE usage +dbc6280f6dc2988546dd6d35055741be0a5fcbe7 NEEDED UBUNTU: SAUCE: (no-up) rds_ib_send() -- prevent local pings triggering BUG_ON() +a381ec9f409f2e71151194c647685826aadc97f3 NEEDED UBUNTU: SAUCE: (no-up) firmware: Upgrade bnx2 to current versions +b08d030d87047591794e27a4d8cfc05c779f9fda NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove obsolete Myricom firmware +c62121eeb1e43d1c1bee1161f0fce00506810966 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove cpia2 files duplicated in linux-firmware +6ca0baacfe0faa7d6265a283a378c7530f2b3286 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove av7110 files duplicated in linux-firmware +492d662a9f259fb958ad3025ff4989ebb1ae1801 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ambassador files duplicated in linux-firmware +9d9677898ade658ad4c68a47c2dda3aea3a9caa6 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove advansys files duplicated in linux-firmware +0906f131cf4b10f377dc66818a01eaab485a61f4 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove adaptec files duplicated in linux-firmware +fc950a48545f49a2ab8e8a465c682a4a3d504f57 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware +6d277f4ffe2a7e2754feac527955f4e948d276cf NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove edgeport files duplicated in linux-firmware +6cd197c9e6ecc8a3d864d9547837ce9e2ad6a6c1 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove kaweth files duplicated in linux-firmware +6d4aea69136e4baaa70726361e5912a24b92ed1e NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ess files duplicated in linux-firmware +264af3894a66b66b07162df0fb367836e76c9705 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant keyspan_pda firmware +dc000f4ec05b4b34c2c1dd9a67d0a87fe1faee22 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant yamaha/ds1 firmware +6f4b585535c0c28732c46bc12ba8dda042596f15 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ositech/Xilinx7OD firmware +a879d556097343beda5c932144f61b5320916ae2 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ttusb-budget firmware +ec8ca911878b3aae198cfcffaae02368f555f488 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant cis firmware +482038c4e6362498269ddf66b5fe21021f7e7fcd NEEDED UBUNTU: SAUCE: (no-up) firmware: Update bnx2x to current firmware version 7.2.51 +1c5fd21e2fe45eea97a41163273add224545ddae NEEDED UBUNTU: SAUCE: (no-up) kconfig: in debug mode some 0 length message prints occur +0685b9c73aa31e52831400e053d37f2e438cfb1b NEEDED UBUNTU: SAUCE: (no-up) Allow filtering of cpufreq drivers +bd58f8e98fd0c05bfe34b7d8b538f35a0864c8d4 NEEDED UBUNTU: SAUCE: (no-up) tools/hv: add basic manual pages +08347031e66a781b7876584175c0bea0d0726788 NEEDED UBUNTU: SAUCE: (no-up) elide some ioctl warnings which are known benign +9e07077485c5e5805517bc2f6272a251eb61211d NEEDED UBUNTU: SAUCE: (no-up) Input: synapticss - Set buttonpad property for all clickpads +43644523536605f8c650aa46e420d59192fa230b NEEDED UBUNTU: SAUCE: (no-up) Input: synaptics - add second variant of two-button clickpad +1224fcf60e5dbe150b446c0f36f55601e50b867b NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6220 use reboot=pci +e08e98d5f3eaece0a55eca47eb31d2544561f1e0 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 990 use reboot=pci +710ae591a352831d514adfecde8cbb921ab72132 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 790 use reboot=pci +075dc4fd57b7523b7d1e64df09e8fbab2298a45c NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6520 use reboot=pci +11f96bb408f15ceeef5f1c089f99d974f5cd93c5 NEEDED UBUNTU: SAUCE: (no-up) add support for installed header files to ubuntu directory +83442377bb16b0007a304e1b5f81f35139abb29c NEEDED UBUNTU: SAUCE: (no-up) Added quirk to recognize GE0301 3G modem as an interface. +84b3a7169b338740a70d22eb408e89619acfd9db NEEDED UBUNTU: SAUCE: (no-up) fix build error with CONFIG_BLK_DEV_INITRD=n +6a2a16f3c9e9496523125c58f788055dede4495f NEEDED UBUNTU: SAUCE: (no-up) dma-mapping: Remove WARN_ON in dma_free_coherent +35814b8981777d9781bcf9d1a3d068b502ce90f2 NEEDED UBUNTU: SAUCE: (no-up) cdrom -- default to not locking the tray when in use +de67e5bc6fbe1fed74ec545291efc763ec91c2b3 NEEDED UBUNTU: SAUCE: (no-up) nbd: Change default partitions per device to 15 +a5263a89adad25c3cbec28d9ed6e35c83e8de677 NEEDED UBUNTU: SAUCE: (no-up) hostap: Change initial operation mode to managed (infra) +aa48271e2f11700129d616010dca588d7a973a03 NEEDED UBUNTU: SAUCE: (no-up) version: Implement version_signature proc file. +3dcb633bcdca132c4f3df40338a3b387f63f9271 NEEDED UBUNTU: SAUCE: (no-up) dm-raid45: Fix incompatible ptr assignments +7d687b18ba73d86852971a9060380a3e5657d086 NEEDED UBUNTU: SAUCE: (no-up) ubuntu: dm-raid45 +4437f9d1f3c4c6f7820bd7162ad54002e740eda8 NEEDED:debian UBUNTU: [Debian] Cloud tools +58244d3007f8256b8fd23b941a87c97b60e54f91 NEEDED:debian UBUNTU: [Debian] add debian/gbp.conf +04e8205c37a0d4756b675ea2229bac647ca200af NEEDED:debian UBUNTU: [Debian] remove the kernel-image firmware list on clean +a52ad698ad07262a8735801415c139789ae88cdb NEEDED:debian UBUNTU: [debian] Dynamically generate the kernel-image udebs firmware list +fbaf6c736d49fd8cd3d6121ea26009fbf7acd301 NEEDED:debian UBUNTU: [debian] Fix indep_hdrs_pkg_name +0588234eed4f92f77c24090f368bd9fc419e50e0 NEEDED:debian UBUNTU: [Debian] Improve tools version message +442d458f2ab0669d904de435bc943ffdb20b42e1 NEEDED:debian UBUNTU: [Debian] Re-sign modules after debug objcopy +a6e1d4fd0d9dc987991216b799e6dee2b7956ad7 NEEDED:debian UBUNTU: [Debian] sort out linux-tools naming +5fee25691328f9d46874a824d8e75c3a25be05d2 NEEDED:debian UBUNTU: [Debian] linux-tools: switch to common generic version helper +2d0634eb9debcc3197792e52f717e7f88352b835 NEEDED:debian UBUNTU: [Debian] postinst -- fix unchanged link detection +66e7bf3df38ce1302a32baf8142dce56c0c81586 NEEDED:debian UBUNTU: [Debian] postinst -- improve relative symlink detection with missing files +c5e7fa9208fbe047c329c124f4d4e1320321d34f NEEDED:debian UBUNTU: [Debian] getabis: Commit new ABI directory, remove the old +f01e594cf5b3a0f05f19ac55e78589d93b06b8fa NEEDED:debian UBUNTU: [Debian] Add hv_vss_daemon to tools package +687fa338e27867b855c77dd79860035dde626761 NEEDED:debian UBUNTU: [debian] tools: ship 'cpupower' in linux-tools +23e6572a962df847252e07898a40174669e8f2a5 NEEDED:debian UBUNTU: [Debian] tools: enable x86 and hyper-v +8bd69d23b91eee555b60a59e42a04201a7d0f1e7 NEEDED:debian UBUNTU: [Debian] autopkgtest: switch Depends: to build-essential +2a6e95d999ee4efac165d88c8106a888fc9b5a8a NEEDED:debian UBUNTU: [Debian] supply perf with appropriate prefix to ensure use of local config +81c56fe3b06596c30b9eae372008fe37ae20f3b7 NEEDED:debian UBUNTU: [Debian] Explicitly reference gawk in build rules awk in all and arch +82429d09555509df1d684469d97dedc756ff11b8 NEEDED:debian UBUNTU: [Debian] fix SRCPKGNAME-udebs-FLAVOUR handling for complex flavours +754e4d69262a59fff8c893b32f199d1fbec6905b NEEDED:debian UBUNTU: [Debian] Supply PKG_ABI in kmake +d25ef28f3ab3ead424ce856ecc849d4bd8eff932 NEEDED:debian UBUNTU: [Debian] reduce udeb rules spew +61ce255d6b166b9c48c8a4ff2176ea15089e381d NEEDED:debian UBUNTU: [Debian] Prepare to build using arch specific compiler +9a9792eeae3e7ec48aed14e38a8cbb3e716d5e34 NEEDED:debian UBUNTU: [Debian] do_tools=false when cross compiling +0ea3ee0721c59ddf26e95da242e5e9ead1e21278 NEEDED:debian UBUNTU: [Debian] generate a SRCPKGNAME-udebs-FLAVOUR-di depending on all built udebs +553cbe477ce2085e1a249d629f268d62af484682 NEEDED:debian UBUNTU: [debian] Use dh_strip +a418dffd68c2c8b88dc3e2fbaf09ead34cfc2fed NEEDED:debian UBUNTU: (debian) get-firmware: Be more selective about copies +4c40a10a81f5cd9310b7b5766ff731db91224f3f NEEDED:debian UBUNTU: (debian) fix internal linkage for separated header packages +b69a501e52aff469bc0e0b3ea7fcde5bfef63af1 NEEDED:debian UBUNTU: (debian) Abort build on unresolved symbols +15bc58fd511b00f7703d2b5d8909af935b31c1d5 NEEDED UBUNTU: [debian] ensure debian/ is not excluded from git by default +83f903be8906fc46d258124e64803590fa5a60ac NEEDED:debian UBUNTU: [debian] Specify python2.7 for perf tools build +817c1f4144c1318dc2e5d62e8817979a7f721ff9 NEEDED:debian UBUNTU: [debian] do not use ../.$(series)-env file +c00e4866e6e549618a43ae3928073f552cca12a5 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPERL=1 +44e01631bcd442f4f61c264af78e193518daa683 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPYTHON=1 +4ec3e6d91413db7e4ba6df1f8b069aee2e7ed216 NEEDED:debian UBUNTU: [debian] Build extras package only for specific arches +6ea3c5606dfdac9dc0348d0eeafb17207cf1efbb NEEDED:debian UBUNTU: [debian] Remove dangling symlink from headers package +9b0d5791d9345eb165fb26e8f80837209ed677f4 NEEDED:debian UBUNTU: [debian] DTB: add support for multiple DTBs +fc9f46c418f454b138af5d810003db5e3d7eb582 NEEDED:debian UBUNTU: [debian] Add macro to selectively disable building perf +c054564f4aeffa8baf045df5de9707140d3fd381 NEEDED:debian UBUNTU: [debian] insertchanges -- fix to work across major version changes +2161b4265ed31268232cb4743f6201b1be7ce1a8 NEEDED:split-debian UBUNTU: [debian] Moved scripts/fw-to-ihex.sh to debian/scripts/misc +187fb48b5107cf8714beb306cb24610e97101cee NEEDED:debian UBUNTU: [debian] find-obsolete-firmware: Use correct path +6b259db6215d8e1d4a31c1ba46ed39d2dafe82f1 NEEDED:debian UBUNTU: [debian] get-firmware: Filter new files through fwinfo +ba7c4f74efc87ea48be44992774a563151926bf7 NEEDED:debian UBUNTU: [debian] hmake -j1 +ff734a2a5e6dccf8e218115f0897c0296195408f NEEDED:debian UBUNTU: [debian] add an autopkgtest rebuild test +8b92747ff62b53c7481de518a1d9e0dcc3efadc5 NEEDED:debian UBUNTU: [debian] move build tests out of the way +65dc3834bd439e381e4a1319f47ba198ff59bfad NEEDED:debian UBUNTU: [debian] add rebuild-test support for autopkgtest +85df5d081a0a1cf926bc1596fce86058a980957d NEEDED:debian UBUNTU: [debian] script to detect obsolete firmware +0486170e5ff342ec83e3ad383d490ad9c4009012 NEEDED:debian UBUNTU: [debian] Use SRCPKGNAME as prefix for indep linux headers package +4fecdbff008d99d5084ad220223d95f2a8b33430 NEEDED:debian UBUNTU: [debian] Document binary-indep dependency chain +e31db9848498b37cec7974a7f55f3a0125ac98f7 NEEDED:debian UBUNTU: [debian] Use dh_prep instead of 'dh_clean -k' +f97b9b22ffed7de7d3b2f0b79ffcbd74ae75af29 NEEDED:debian UBUNTU: [debian] enforcer -- fix debugging output +97625cbcd6c760b92fcbd46b33127817abd3f5ec NEEDED:debian UBUNTU: [debian] Add custom_override rule to allow for alternate kernel file/install +8dadbaaed08c1aba3f59d1f8cac96284420b422f NEEDED:debian UBUNTU: [debian] Update armhf comments. +efd7c209638bec8871bdc80b05ac2678d98342f9 NEEDED:debian UBUNTU: [debian] drop manual headers copy +a25e7161804d73bdc21933f8ce22dffc30737c4d NEEDED:debian UBUNTU: [debian] bootstrap: switch to the new DEB_BUILD_PROFILE +5dedd7999df59975ea0faa207f5f8ed9c8d59e96 NEEDED:debian UBUNTU: [debian] do not fail secure copy on older kernels +a6a3b1451ca57ca799e98ba62fb0d95cfec38c5d NEEDED:debian UBUNTU: [debian] allow us to select which builds have uefi signed versions +a34c8331e9565c7af1a04c64bb6d1c57fc2c605e NEEDED:debian UBUNTU: [debian] we already have a valid src_pkg_name +e606ba427f5f2abe7a4ec1ab18a4d5838345821c NEEDED:debian UBUNTU: [debian] add custom upload for the kernel binary package +0ffed1cb10d43ba7d525fcc0af93e4eb9d88e8eb NEEDED:debian UBUNTU: [debian] note directory name changes +a6d721352cbc862a3e31652e904311739b016727 NEEDED:split-debian UBUNTU: [debian] Initial debian and ubuntu directories +b44d72ce530f51e7a882d23c66029a63b737231b NEEDED UBUNTU: [Debian] Prep for Ubuntu build infrastructure --- linux-4.4.0.orig/debian.master/modprobe.d/common.conf +++ linux-4.4.0/debian.master/modprobe.d/common.conf @@ -0,0 +1,3 @@ +# LP:1434842 -- disable OSS drivers by default to allow pulseaudio to emulate +blacklist snd-mixer-oss +blacklist snd-pcm-oss --- linux-4.4.0.orig/debian.master/reconstruct +++ linux-4.4.0/debian.master/reconstruct @@ -0,0 +1,20 @@ +# Reconstruct vbox symlinks (LP:1426113) +[ ! -L ubuntu/vbox/vboxguest/include ] && ln -sf ../include ubuntu/vbox/vboxguest/include +[ ! -L ubuntu/vbox/vboxguest/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxguest/r0drv +[ ! -L ubuntu/vbox/vboxsf/include ] && ln -sf ../include ubuntu/vbox/vboxsf/include +[ ! -L ubuntu/vbox/vboxsf/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxsf/r0drv +[ ! -L ubuntu/vbox/vboxvideo/include ] && ln -sf ../include ubuntu/vbox/vboxvideo/include + +# Reconstruct spl/zfs symlinks +[ ! -L spl/rpm/redhat/spl-dkms.spec.in ] && (cd spl/rpm/redhat; ln -sf ../generic/spl-dkms.spec.in) +[ ! -L spl/rpm/redhat/spl.spec.in ] && (cd spl/rpm/redhat; ln -sf ../generic/spl.spec.in) + +[ ! -L zfs/rpm/redhat/zfs-dkms.spec.in ] && (cd zfs/rpm/redhat; ln -sf ../generic/zfs-dkms.spec.in) +[ ! -L zfs/rpm/redhat/zfs.spec.in ] && (cd zfs/rpm/redhat; ln -sf ../generic/zfs.spec.in) + +[ ! -L zfs/scripts/zpios-test/large-thread-survey.sh ] && (cd zfs/scripts/zpios-test; ln -sf 1x256th-65536rc-4rs-1cs-4off.sh large-thread-survey.sh) +[ ! -L zfs/scripts/zpios-test/large.sh ] && (cd zfs/scripts/zpios-test; ln -sf 256th-65536rc-4rs-1cs-4off.sh large.sh); +[ ! -L zfs/scripts/zpios-test/medium.sh ] && (cd zfs/scripts/zpios-test; ln -sf 16th-8192rc-4rs-1cs-4off.sh medium.sh) +[ ! -L zfs/scripts/zpios-test/small.sh ] && (cd zfs/scripts/zpios-test; ln -sf 4th-1024rc-4rs-1cs-4off.sh small.sh) +[ ! -L zfs/scripts/zpios-test/tiny.sh ] && (cd zfs/scripts/zpios-test; ln -sf 1th-16rc-4rs-1cs-4off.sh tiny.sh) +exit 0 --- linux-4.4.0.orig/debian.master/rules.d/amd64.mk +++ linux-4.4.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,20 @@ +human_arch = 64 bit x86 +build_arch = x86_64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic lowlatency +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = true +do_extras_package = true +do_tools_common = true +do_zfs = true --- linux-4.4.0.orig/debian.master/rules.d/arm64.mk +++ linux-4.4.0/debian.master/rules.d/arm64.mk @@ -0,0 +1,19 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = arm64 +defconfig = defconfig +flavours = generic +build_image = Image +kernel_file = arch/$(build_arch)/boot/Image +install_file = vmlinuz +no_dumpfile = true + +loader = grub +vdso = vdso_install + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +do_dtbs = true +do_zfs = true --- linux-4.4.0.orig/debian.master/rules.d/armhf.mk +++ linux-4.4.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,17 @@ +human_arch = ARM (hard float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = generic generic-lpae +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +do_dtbs = true --- linux-4.4.0.orig/debian.master/rules.d/i386.mk +++ linux-4.4.0/debian.master/rules.d/i386.mk @@ -0,0 +1,17 @@ +human_arch = 32 bit x86 +build_arch = i386 +header_arch = x86_64 +defconfig = defconfig +flavours = generic lowlatency +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = true +do_extras_package = true --- linux-4.4.0.orig/debian.master/rules.d/powerpc.mk +++ linux-4.4.0/debian.master/rules.d/powerpc.mk @@ -0,0 +1,31 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp powerpc-e500mc powerpc64-emb +build_image = zImage +kernel_file = $(shell if [ ! -f $(builddir)/build-$*/vmlinux.strip ] && \ + [ -f $(builddir)/build-$*/vmlinux.strip.gz ]; then \ + gunzip -c $(builddir)/build-$*/vmlinux.strip.gz \ + > $(builddir)/build-$*/vmlinux.strip; \ + fi && echo vmlinux.strip) +install_file = vmlinux + +# These flavours differ +build_image_powerpc-e500mc = uImage +kernel_file_powerpc-e500mc = arch/powerpc/boot/uImage + +build_image_powerpc64-emb = uImage +kernel_file_powerpc64-emb = arch/powerpc/boot/uImage + +loader = yaboot +vdso = vdso_install + +custom_flavours = + +no_dumpfile = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +family = ubuntu --- linux-4.4.0.orig/debian.master/rules.d/ppc64el.mk +++ linux-4.4.0/debian.master/rules.d/ppc64el.mk @@ -0,0 +1,19 @@ +human_arch = PowerPC 64el +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pseries_le_defconfig +flavours = generic +build_image = vmlinux.strip +kernel_file = arch/powerpc/boot/vmlinux.strip +install_file = vmlinux +no_dumpfile = true +vdso = vdso_install +loader = grub +do_extras_package = true + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +#do_flavour_image_package = false +do_zfs = true --- linux-4.4.0.orig/debian.master/rules.d/s390x.mk +++ linux-4.4.0/debian.master/rules.d/s390x.mk @@ -0,0 +1,19 @@ +human_arch = System 390x +build_arch = s390 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic +build_image = image +kernel_file = arch/$(build_arch)/boot/image +install_file = vmlinuz + +vdso = vdso_install +no_dumpfile = true + +do_extras_package = true + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +do_zfs = false --- linux-4.4.0.orig/debian.master/rules.d/x32.mk +++ linux-4.4.0/debian.master/rules.d/x32.mk @@ -0,0 +1,14 @@ +human_arch = 64 bit x86 (32 bit userspace) +build_arch = x86_64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true + +do_flavour_image_package = false --- linux-4.4.0.orig/debian/changelog +++ linux-4.4.0/debian/changelog @@ -0,0 +1,14205 @@ +linux (4.4.0-6.21) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1546283 + + * Naples/Zen, NTB Driver (LP: #1542071) + - [Config] CONFIG_NTB_AMD=m + - NTB: Add support for AMD PCI-Express Non-Transparent Bridge + + * [Hyper-V] kernel panic occurs when installing Ubuntu Server x32 (LP: #1495983) + - SAUCE: storvsc: use small sg_tablesize on x86 + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] CONFIG_ARMV8_DEPRECATED=y + + * Surelock-GA2:kernel panic/ exception @ pcibios_set_pcie_reset_state+0x118/0x280 + cxl_reset+0x5c/0xc0 (LP: #1545037) + - powerpc/eeh: Fix stale cached primary bus + + * Miscellaneous Ubuntu changes + - SAUCE: fs: Add user namesapace member to struct super_block + - SAUCE: fs: Limit file caps to the user namespace of the super block + - SAUCE: Smack: Add support for unprivileged mounts from user namespaces + - SAUCE: block_dev: Support checking inode permissions in lookup_bdev() + - SAUCE: block_dev: Check permissions towards block device inode when mounting + - SAUCE: fs: Treat foreign mounts as nosuid + - SAUCE: selinux: Add support for unprivileged mounts from user namespaces + - SAUCE: userns: Replace in_userns with current_in_userns + - SAUCE: Smack: Handle labels consistently in untrusted mounts + - SAUCE: fs: Check for invalid i_uid in may_follow_link() + - SAUCE: cred: Reject inodes with invalid ids in set_create_file_as() + - SAUCE: fs: Refuse uid/gid changes which don't map into s_user_ns + - SAUCE: fs: Update posix_acl support to handle user namespace mounts + - SAUCE: fs: Ensure the mounter of a filesystem is privileged towards its inodes + - SAUCE: fs: Don't remove suid for CAP_FSETID in s_user_ns + - SAUCE: fs: Allow superblock owner to access do_remount_sb() + - SAUCE: capabilities: Allow privileged user in s_user_ns to set security.* xattrs + - SAUCE: fuse: Add support for pid namespaces + - SAUCE: fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: fuse: Restrict allow_other to the superblock's namespace or a descendant + - SAUCE: fuse: Allow user namespace mounts + - SAUCE: mtd: Check permissions towards mtd block device inode when mounting + - SAUCE: fs: Update i_[ug]id_(read|write) to translate relative to s_user_ns + - SAUCE: quota: Convert ids relative to s_user_ns + - SAUCE: evm: Translate user/group ids relative to s_user_ns when computing HMAC + - SAUCE: fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw filesystems + - SAUCE: quota: Treat superblock owner as privilged + - SAUCE: ima/evm: Allow root in s_user_ns to set xattrs + - SAUCE: block_dev: Forbid unprivileged mounting when device is opened for writing + - SAUCE: ext4: Add support for unprivileged mounts from user namespaces + - SAUCE: ext4: Add module parameter to enable user namespace mounts + - SAUCE: fuse: Add module parameter to enable user namespace mounts + + * Miscellaneous upstream changes + - megaraid: Fix possible NULL pointer deference in mraid_mm_ioctl + - libahci: Implement the capability to override the generic ahci interrupt handler. + - ata: Remove the AHCI_HFLAG_EDGE_IRQ support from libahci. + - ahci_xgene: Implement the workaround to fix the missing of the edge interrupt for the HOST_IRQ_STAT. + + -- Tim Gardner Fri, 12 Feb 2016 09:49:05 -0700 + +linux (4.4.0-5.20) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1544637 + + * s390/cio: update measurement characteristics (LP: #1541534) + - s390/cio: fix measurement characteristics memleak + - s390/cio: ensure consistent measurement state + - s390/cio: update measurement characteristics + + * qeth: layer2 reports unknown state to network tools. (LP: #1541907) + - qeth: initialize net_device with carrier off + + * Collateral damage due to kernel configuration change enabling CONFIG_ZONE_DEVICE (Kernel 4.4 amd64) (LP: #1534647) + - [Config] CONFIG_ZONE_DMA=y + - mm: CONFIG_NR_ZONES_EXTENDED + + * perf enahancements for ppc64 (LP: #1521678) + - perf kvm/{x86,s390}: Remove dependency on uapi/kvm_perf.h + - perf kvm/{x86,s390}: Remove const from kvm_events_tp + - perf kvm/powerpc: Port perf kvm stat to powerpc + - perf kvm/powerpc: Add support for HCALL reasons + + * Soft lockup with "block nbdX: Attempted send on closed socket" spam (LP: #1505564) + - SAUCE: nbd: ratelimit error msgs after socket close + + * sleep from invalid context in aa_move_mount (LP: #1539349) + - SAUCE: apparmor: fix sleep from invalid context + + * Introducing ConnectX-4 Ethernet SRIOV (LP: #1540435) + - net/mlx5_core: Modify enable/disable hca functions + - net/mlx5_core: Add base sriov support + - net/mlx5: Add HW capabilities and structs for SR-IOV E-Switch + - net/mlx5: Update access functions to Query/Modify vport MAC address + - net/mlx5: Introduce access functions to modify/query vport mac lists + - net/mlx5: Introduce access functions to modify/query vport state + - net/mlx5: Introduce access functions to modify/query vport promisc mode + - net/mlx5: Introduce access functions to modify/query vport vlans + - net/mlx5e: Write UC/MC list and promisc mode into vport context + - net/mlx5e: Write vlan list into vport context + - net/mlx5: Introducing E-Switch and l2 table + - net/mlx5: E-Switch, Introduce FDB hardware capabilities + - net/mlx5: E-Switch, Add SR-IOV (FDB) support + - net/mlx5: E-Switch, Introduce Vport administration functions + - net/mlx5: E-Switch, Introduce HCA cap and E-Switch vport context + - net/mlx5: E-Switch, Introduce set vport vlan (VST mode) + - net/mlx5: E-Switch, Introduce get vf statistics + - net/mlx5e: Add support for SR-IOV ndos + - net/mlx5: Fix query E-Switch capabilities + - net/mlx5e: Assign random MAC address if needed + + * make wacom_w8001 work well in xenial (LP: #1542771) + - Input: wacom_w8001 - use __set_bit for evbits + - Input: wacom_w8001 - set BTN_TOOL_DOUBLETAP if we have 2fg support + - Input: wacom_w8001 - handle touch error case correctly + - Input: wacom_w8001 - split pen and touch initialization up + - Input: wacom_w8001 - split the touch and pen devices into two devices + - Input: wacom_w8001 - drop use of ABS_MT_TOOL_TYPE + + * virtualbox: update to 5.0.14-dfsg-2 (LP: #1542728) + - ubuntu: vbox -- update to 5.0.14-dfsg-2 + + * Miscellaneous Ubuntu changes + - [Packaging] git-ubuntu-log -- fix empty section formatting + - SAUCE: (noup) Update spl to 0.6.5.4-0ubuntu2, zfs to 0.6.5.4-0ubuntu2 + + -- Andy Whitcroft Sat, 06 Feb 2016 22:32:10 +0000 + +linux (4.4.0-4.19) xenial; urgency=low + + * update ZFS and SPL to 0.6.5.4 (LP: #1542296) + - [Config] update spl/zfs version + - SAUCE: (noup) Update spl to 0.6.5.4-0ubuntu2, zfs to 0.6.5.4-0ubuntu1 + - [Config] reconstruct -- drop links for zfs userspace components + - [Config] reconstruct -- drop links for zfs userspace components -- restore spec links + + * recvmsg() fails SCM_CREDENTIALS request with EOPNOTSUPP. (LP: #1540731) + - Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + + * lxc: ADT exercise test failing with linux-4.4.0-3.17 (LP: #1542049) + - Revert "UBUNTU: SAUCE: apparmor: fix sleep from invalid context" + + * WARNING: at /build/linux-lts-wily-W0lTWH/linux-lts-wily-4.2.0/net/core/skbuff.c:4174 (Travis IB) (LP: #1541326) + - SAUCE: IB/IPoIB: Do not set skb truesize since using one linearskb + + * backport Microsoft Precision Touchpad palm rejection patch (LP: #1541671) + - HID: multitouch: enable palm rejection if device implements confidence usage + + * [Ubuntu 16.04] Update qla2xxx driver for POWER (QLogic) (LP: #1541456) + - qla2xxx: Remove unavailable firmware files + - qla2xxx: Enable Extended Logins support + - qla2xxx: Enable Exchange offload support. + - qla2xxx: Enable Target counters in DebugFS. + - qla2xxx: Add FW resource count in DebugFS. + - qla2xxx: Added interface to send explicit LOGO. + - qla2xxx: Delete session if initiator is gone from FW + - qla2xxx: Wait for all conflicts before ack'ing PLOGI + - qla2xxx: Replace QLA_TGT_STATE_ABORTED with a bit. + - qla2xxx: Remove dependency on hardware_lock to reduce lock contention. + - qla2xxx: Add irq affinity notification + - qla2xxx: Add selective command queuing + - qla2xxx: Move atioq to a different lock to reduce lock contention + - qla2xxx: Disable ZIO at start time. + - qla2xxx: Set all queues to 4k + - qla2xxx: Check for online flag instead of active reset when transmitting responses + - scsi: qla2xxxx: avoid type mismatch in comparison + + * [Hyper-V] PCI Passthrough (LP: #1541120) + - x86/irq: Export functions to allow MSI domains in modules + - genirq/msi: Export functions to allow MSI domains in modules + + * Update lpfc driver to 11.0.0.10 (LP: #1541592) + - lpfc: Fix FCF Infinite loop in lpfc_sli4_fcf_rr_next_index_get. + - lpfc: Fix the FLOGI discovery logic to comply with T11 standards + - lpfc: Fix RegLogin failed error seen on Lancer FC during port bounce + - lpfc: Fix driver crash when module parameter lpfc_fcp_io_channel set to 16 + - lpfc: Fix crash in fcp command completion path. + - lpfc: Modularize and cleanup FDMI code in driver + - lpfc: Fix RDP Speed reporting. + - lpfc: Fix RDP ACC being too long. + - lpfc: Make write check error processing more resilient + - lpfc: Use new FDMI speed definitions for 10G, 25G and 40G FCoE. + - lpfc: Fix mbox reuse in PLOGI completion + - lpfc: Fix external loopback failure. + - lpfc: Add logging for misconfigured optics. + - lpfc: Delete unnecessary checks before the function call "mempool_destroy" + - lpfc: Use kzalloc instead of kmalloc + - lpfc: Update version to 11.0.0.10 for upstream patch set + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_ARM64_VA_BITS=48 + - [Config] Fixed Vcs-Git + + * Miscellaneous upstream changes + - cxl: Fix possible idr warning when contexts are released + - cxl: use correct operator when writing pcie config space values + - cxlflash: drop unlikely before IS_ERR_OR_NULL + - cxl: Fix DSI misses when the context owning task exits + - cxlflash: Removed driver date print + - cxlflash: Fix to resolve cmd leak after host reset + - cxlflash: Resolve oops in wait_port_offline + - cxlflash: Enable device id for future IBM CXL adapter + - cxl: fix build for GCC 4.6.x + - cxl: use -Werror only with CONFIG_PPC_WERROR + - cxl: Enable PCI device ID for future IBM CXL adapter + + -- Andy Whitcroft Fri, 05 Feb 2016 14:58:51 +0000 + +linux (4.4.0-3.17) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1541058 + * [Config] CONFIG_BLK_DEV_NVME_SCSI=y + - LP: #1531539 + * SAUCE: nvme merge cleanup + - LP: #1531539 + * rebase to v4.4.1 + + [ Andy Whitcroft ] + + * Revert "SAUCE: dm: introduce a target_ioctl op to allow target specific + ioctls" + - LP: #1538618 + * postinst -- detect symlinks correctly + - LP: #1536810 + + [ John Johansen ] + + * SAUCE: apparmor: fix sleep from invalid context + - LP: #1539349 + + [ Upstream Kernel Changes ] + + * powerpc/eeh: Fix PE location code + - LP: #1538909 + * powerpc/pseries: Limit EPOW reset event warnings + - LP: #1539102 + * lightnvm: fix bio submission issue + - LP: #1531539 + * lightnvm: fix incorrect nr_free_blocks stat + - LP: #1531539 + * lightnvm: add check after mempool allocation + - LP: #1531539 + * lightnvm: unlock rq and free ppa_list on submission fail + - LP: #1531539 + * lightnvm: move ppa erase logic to core + - LP: #1531539 + * lightnvm: refactor rqd ppa list into set/free + - LP: #1531539 + * lightnvm: refactor end_io functions for sync + - LP: #1531539 + * lightnvm: return the get_bb_tbl return value + - LP: #1531539 + * lightnvm: check bi_error in gc + - LP: #1531539 + * lightnvm: put block back to gc list on its reclaim fail + - LP: #1531539 + * lightnvm: fix locking and mempool in rrpc_lun_gc + - LP: #1531539 + * lightnvm: sectors first in ppa list + - LP: #1531539 + * lightnvm: move the pages per block check out of the loop + - LP: #1531539 + * lightnvm: support multiple ppas in nvm_erase_ppa + - LP: #1531539 + * lightnvm: move rq->error to nvm_rq->error + - LP: #1531539 + * lightnvm: introduce nvm_submit_ppa + - LP: #1531539 + * lightnvm: reference rrpc lun in rrpc block + - LP: #1531539 + * lightnvm: fix missing grown bad block type + - LP: #1531539 + * lightnvm: manage open and closed blocks separately + - LP: #1531539 + * lightnvm: add mccap support + - LP: #1531539 + * lightnvm: introduce mlc lower page table mappings + - LP: #1531539 + * lightnvm: core on-disk initialization + - LP: #1531539 + * lightnvm: introduce ioctl to initialize device + - LP: #1531539 + * lightnvm: use system block for mm initialization + - LP: #1531539 + * lightnvm: introduce factory reset + - LP: #1531539 + * lightnvm: ensure that nvm_dev_ops can be used without CONFIG_NVM + - LP: #1531539 + * blk-mq: add a flags parameter to blk_mq_alloc_request + - LP: #1531539 + * nvme: move struct nvme_iod to pci.c + - LP: #1531539 + * nvme: split command submission helpers out of pci.c + - LP: #1531539 + * nvme: use offset instead of a struct for registers + - LP: #1531539 + * nvme: split nvme_trans_device_id_page + - LP: #1531539 + * nvme: use vendor it from identify + - LP: #1531539 + * nvme: split a new struct nvme_ctrl out of struct nvme_dev + - LP: #1531539 + * nvme: simplify nvme_setup_prps calling convention + - LP: #1531539 + * nvme: refactor nvme_queue_rq + - LP: #1531539 + * nvme: factor out a nvme_unmap_data helper + - LP: #1531539 + * nvme: move nvme_error_status to common code + - LP: #1531539 + * nvme: move nvme_setup_flush and nvme_setup_rw to common code + - LP: #1531539 + * nvme: split __nvme_submit_sync_cmd + - LP: #1531539 + * nvme: use the block layer for userspace passthrough metadata + - LP: #1531539 + * nvme: move block_device_operations and ns/ctrl freeing to common code + - LP: #1531539 + * nvme: add explicit quirk handling + - LP: #1531539 + * nvme: move remaining CC setup into nvme_enable_ctrl + - LP: #1531539 + * nvme: move nvme_{enable,disable,shutdown}_ctrl to common code + - LP: #1531539 + * nvme: add a common helper to read Identify Controller data + - LP: #1531539 + * nvme: move the call to nvme_init_identify earlier + - LP: #1531539 + * nvme: move namespace scanning to common code + - LP: #1531539 + * nvme: move chardev and sysfs interface to common code + - LP: #1531539 + * nvme: refactor set_queue_count + - LP: #1531539 + * blk-integrity: empty implementation when disabled + - LP: #1531539 + * NVMe: fix build with CONFIG_NVM enabled + - LP: #1531539 + * nvme: fix another 32-bit build warning + - LP: #1531539 + * nvme: precedence bug in nvme_pr_clear() + - LP: #1531539 + * nvme: only ignore hardware errors in nvme_create_io_queues + - LP: #1531539 + * nvme: only add a controller to dev_list after it's been fully + initialized + - LP: #1531539 + * nvme: protect against simultaneous shutdown invocations + - LP: #1531539 + * nvme: don't take the I/O queue q_lock in nvme_timeout + - LP: #1531539 + * nvme: merge nvme_abort_req and nvme_timeout + - LP: #1531539 + * nvme: add NVME_SC_CANCELLED + - LP: #1531539 + * nvme: simplify resets + - LP: #1531539 + * nvme: do not restart the request timeout if we're resetting the + controller + - LP: #1531539 + * nvme: merge probe_work and reset_work + - LP: #1531539 + * nvme: remove dead controllers from a work item + - LP: #1531539 + * nvme: switch abort_limit to an atomic_t + - LP: #1531539 + * NVMe: Implement namespace list scanning + - LP: #1531539 + * NVMe: Use unbounded work queue for all work + - LP: #1531539 + * NVMe: Remove device management handles on remove + - LP: #1531539 + * NVMe: Simplify metadata setup + - LP: #1531539 + * nvme: fix admin queue depth + - LP: #1531539 + * nvme: factor out a few helpers from req_completion + - LP: #1531539 + * nvme: switch delete SQ/CQ to blk_execute_rq_nowait + - LP: #1531539 + * nvme: switch abort to blk_execute_rq_nowait + - LP: #1531539 + * nvme: special case AEN requests + - LP: #1531539 + * nvme: simplify completion handling + - LP: #1531539 + * nvme: properly free resources for cancelled command + - LP: #1531539 + * nvme: meta_sg doesn't have to be an array + - LP: #1531539 + * nvme: merge iod and cmd_info + - LP: #1531539 + * NVMe: Add pci error handlers + - LP: #1531539 + * NVMe: Export namespace attributes to sysfs + - LP: #1531539 + * nvme: Move nvme_freeze/unfreeze_queues to nvme core + - LP: #1531539 + * nvme: synchronize access to ctrl->namespaces + - LP: #1531539 + * nvme: fixes for NVME_IOCTL_IO_CMD on the char device + - LP: #1531539 + * nvme: make SG_IO support optional + - LP: #1531539 + * NVMe: Fix admin queue ring wrap + - LP: #1531539 + * NVMe: Use a retryable error code on reset + - LP: #1531539 + * NVMe: Remove queue freezing on resets + - LP: #1531539 + * NVMe: IO queue deletion re-write + - LP: #1531539 + * NVMe: Shutdown controller only for power-off + - LP: #1531539 + * NVMe: Export NVMe attributes to sysfs group + - LP: #1531539 + * i40e: fix build warnings + * net: i40e: shut up uninitialized variable warnings + * Drivers: hv: vmbus: fix build warning + * Drivers: hv: util: Increase the timeout for util services + * Drivers: hv: utils: run polling callback always in interrupt context + * tools: hv: report ENOSPC errors in hv_fcopy_daemon + * tools: hv: remove repeated HV_FCOPY string + * Drivers: hv: util: catch allocation errors + * Drivers: hv: utils: use memdup_user in hvt_op_write + * drivers/hv: cleanup synic msrs if vmbus connect failed + * drivers:hv: Export a function that maps Linux CPU num onto Hyper-V proc + num + * drivers:hv: Export the API to invoke a hypercall on Hyper-V + * drivers:hv: Define the channel type for Hyper-V PCI Express + pass-through + * Drivers: hv: vss: run only on supported host versions + * Drivers: hv: vmbus: Use uuid_le type consistently + * Drivers: hv: vmbus: Use uuid_le_cmp() for comparing GUIDs + * Drivers: hv: vmbus: Get rid of the unused macro + * Drivers: hv: vmbus: Get rid of the unused irq variable + * Drivers: hv: vmbus: serialize process_chn_event() and + vmbus_close_internal() + * Drivers: hv: vmbus: do sanity check of channel state in + vmbus_close_internal() + * Drivers: hv: vmbus: fix rescind-offer handling for device without a + driver + * Drivers: hv: vmbus: release relid on error in vmbus_process_offer() + * Drivers: hv: vmbus: channge vmbus_connection.channel_lock to mutex + * drivers:hv: Allow for MMIO claims that span ACPI _CRS records + * Drivers: hv: vmbus: Fix a Host signaling bug + * drivers/hv: correct tsc page sequence invalid value + * Drivers: hv: vmbus: Force all channel messages to be delivered on CPU 0 + * Drivers: hv: utils: Invoke the poll function after handshake + * tools: hv: vss: fix the write()'s argument: error -> vss_msg + * Drivers: hv: utils: fix memory leak on on_msg() failure + * Drivers: hv: utils: rename outmsg_lock + * Drivers: hv: utils: introduce HVUTIL_TRANSPORT_DESTROY mode + * Drivers: hv: utils: fix crash when device is removed from host side + * Drivers: hv: ring_buffer.c: fix comment style + * Drivers: hv: ring_buffer: remove stray smp_read_barrier_depends() + * Drivers: hv: ring_buffer: remove code duplication from + hv_ringbuffer_peek/read() + * Drivers: hv: remove code duplication between + vmbus_recvpacket()/vmbus_recvpacket_raw() + * Drivers: hv: ring_buffer: eliminate hv_ringbuffer_peek() + * drivers/hv: replace enum hv_message_type by u32 + * drivers/hv: Move HV_SYNIC_STIMER_COUNT into Hyper-V UAPI x86 header + * drivers/hv: Move struct hv_message into UAPI Hyper-V x86 header + * drivers/hv: Move struct hv_timer_message_payload into UAPI Hyper-V x86 + header + * Drivers: hv: vmbus: fix the building warning with hyperv-keyboard + * Drivers: hv: utils: fix hvt_op_poll() return value on transport destroy + * Drivers: hv: vmbus: Treat Fibre Channel devices as performance critical + + [ Upstream Kernel Changes ] + + * rebase to v4.4.1 + - LP: #1533461 + - LP: #1529624 + + -- Tim Gardner Fri, 29 Jan 2016 08:06:37 -0700 + +linux (4.4.0-2.16) xenial; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1539090 + * SAUCE: hv: hv_set_ifconfig -- convert to python3 + - LP: #1506521 + * SAUCE: dm: introduce a target_ioctl op to allow target specific ioctls + - LP: #1538618 + + [ Colin Ian King ] + + * SAUCE: ACPI / tables: Add acpi_force_32bit_fadt_addr option to force 32 + bit FADT addresses (LP: #1529381) + - LP: #1529381 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix for failed mediation of socket that is + being shutdown + - LP: #1446906 + + [ Mahesh Salgaonkar ] + + * SAUCE: Powernv: Remove the usage of PACAR1 from opal wrappers + - LP: #1537881 + * SAUCE: powerpc/book3s: Fix TB corruption in guest exit path on HMI + interrupt. + - LP: #1537881 + * SAUCE: KVM: PPC: Book3S HV: Fix soft lockups in KVM on HMI for time + base errors + - LP: #1537881 + + [ Paolo Pisati ] + + * SAUCE: arm64: errata: Add -mpc-relative-literal-loads to erratum + #843419 build flags + - LP: #1533009 + * [Config] MFD_TPS65217=y && REGULATOR_TPS65217=y + * [Config] disable ARCH_ZX (ZTE ZX Soc) + + [ Tim Gardner ] + + * Revert "SAUCE: (noup) cxlflash: a couple off by one bugs" + * SAUCE: (no-up) Update bnx2x firmware to 7.12.30.0 + - LP: #1536719 + * SAUCE: drop obsolete bnx2x firmware + * SAUCE: i40e: Silence 'may be used uninitialized' warnings + - LP: #1536474 + * [Config] CONFIG_ZONE_DMA=y for amd64 lowlatency + - LP: #1534647 + * [Config] Add pvpanic to virtual flavour + - LP: #1537923 + * [Config] CONFIG_INTEL_PUNIT_IPC=m, CONFIG_INTEL_TELEMETRY=m + - LP: #1520457 + + [ Upstream Kernel Changes ] + + * i40evf: fix compiler warning of unused variable + - LP: #1536474 + * intel: i40e: fix confused code + - LP: #1536474 + * i40e/i40evf: remove unused tunnel parameter + - LP: #1536474 + * i40e: Change BUG_ON to WARN_ON in service event complete + - LP: #1536474 + * i40e: remove BUG_ON from feature string building + - LP: #1536474 + * i40e: remove BUG_ON from FCoE setup + - LP: #1536474 + * i40e: Workaround fix for mss < 256 issue + - LP: #1536474 + * i40e/i40evf: Add a stat to track how many times we have to do a force + WB + - LP: #1536474 + * i40e: Move the saving of old link info from handle_link_event to + link_event + - LP: #1536474 + * i40e/i40evf: Add comment to #endif + - LP: #1536474 + * i40e/i40evf: clean up error messages + - LP: #1536474 + * i40evf: handle many MAC filters correctly + - LP: #1536474 + * i40e: return the number of enabled queues for ETHTOOL_GRXRINGS + - LP: #1536474 + * i40e: rework the functions to configure RSS with similar parameters + - LP: #1536474 + * i40e: create a generic configure rss function + - LP: #1536474 + * i40e: Bump version to 1.4.2 + - LP: #1536474 + * i40e: add new fields to store user configuration + - LP: #1536474 + * i40e: rename rss_size to alloc_rss_size in i40e_pf + - LP: #1536474 + * i40e/i40evf: Fix RS bit update in Tx path and disable force WB + workaround + - LP: #1536474 + * i40e/i40evf: prefetch skb data on transmit + - LP: #1536474 + * i40evf: rename VF adapter specific RSS function + - LP: #1536474 + * i40evf: create a generic config RSS function + - LP: #1536474 + * i40evf: create a generic get RSS function + - LP: #1536474 + * i40evf: add new fields to store user configuration of RSS + - LP: #1536474 + * i40e: Update error messaging + - LP: #1536474 + * i40e: fix confusing message + - LP: #1536474 + * i40e: make error message more useful + - LP: #1536474 + * i40evf: quoth the VF driver, Nevermore + - LP: #1536474 + * i40evf: allocate queue vectors dynamically + - LP: #1536474 + * i40evf: allocate ring structs dynamically + - LP: #1536474 + * i40e/i40evf: Bump i40e version to 1.4.4 and i40evf to 1.4.1 + - LP: #1536474 + * i40e: fix: do not sleep in netdev_ops + - LP: #1536474 + * i40e: remove unused argument + - LP: #1536474 + * i40evf: increase max number of queues + - LP: #1536474 + * i40evf: set real num queues + - LP: #1536474 + * i40evf: remove duplicate string + - LP: #1536474 + * i40e: Detection and recovery of TX queue hung logic moved to + service_task from tx_timeout + - LP: #1536474 + * i40e: Fix memory leaks, sideband filter programming + - LP: #1536474 + * i40evf: don't use atomic allocation + - LP: #1536474 + * i40e: propagate properly + - LP: #1536474 + * i40evf: use correct types + - LP: #1536474 + * i40e: use priv flags to control packet split + - LP: #1536474 + * i40e: Remove separate functions gathering XOFF Rx stats + - LP: #1536474 + * i40e: fix whitespace + - LP: #1536474 + * i40e/i40evf: use logical operator + - LP: #1536474 + * i40e/i40evf: Bump version to 1.4.7 for i40e and 1.4.3 for i40evf + - LP: #1536474 + * i40e: trivial fixes + - LP: #1536474 + * i40e: Fix i40e_print_features() VEB mode output + - LP: #1536474 + * i40e: chomp the BIT(_ULL) + - LP: #1536474 + * i40e: properly delete VF MAC filters + - LP: #1536474 + * i40e: don't add zero MAC filter + - LP: #1536474 + * i40evf: check rings before freeing resources + - LP: #1536474 + * i40e: use explicit cast from u16 to u8 + - LP: #1536474 + * i40e: Opcode and structures required by OEM Post Update AQ command and + add new NVM arq message + - LP: #1536474 + * i40e: hush little warnings + - LP: #1536474 + * i40e/i40evf: Add a new offload for RSS PCTYPE V2 for X722 + - LP: #1536474 + * i40e: clean whole mac filter list + - LP: #1536474 + * i40evf: change version string generation + - LP: #1536474 + * i40e/i40evf: Bump i40e to 1.4.8 and i40evf to 1.4.4 + - LP: #1536474 + * geneve: UDP checksum configuration via netlink + - LP: #1536474 + * geneve: Add geneve udp port offload for ethernet devices + - LP: #1536474 + * i40e: geneve tunnel offload support + - LP: #1536474 + * geneve: Add geneve_get_rx_port support + - LP: #1536474 + * i40e: Call geneve_get_rx_port to get the existing Geneve ports + - LP: #1536474 + * i40e: change log messages and error returns + - LP: #1536474 + * i40e: allow zero MAC address for VFs + - LP: #1536474 + * i40e: Look up MAC address in Open Firmware or IDPROM + - LP: #1536474 + * i40e: Fix Rx hash reported to the stack by our driver + - LP: #1536474 + * i40e: remove forever unused ID + - LP: #1536474 + * igb: add 88E1543 initialization code + * igb: don't unmap NULL hw_addr + * igb: use the correct i210 register for EEMNGCTL + * igb: fix NULL derefs due to skipped SR-IOV enabling + * igb: improve handling of disconnected adapters + * igb: Remove GS40G specific defines/functions + * igb: Don't add PHY address to PCDL address + * igb: Improve cable length function for I210, etc. + * igb: Explicitly label self-test result indices + * ixgbe: drop null test before destroy functions + - LP: #1536473 + * ixgbe: Delete redundant include file + - LP: #1536473 + * ixgbe: fix multiple kernel-doc errors + - LP: #1536473 + * ixgbe: Fix handling of NAPI budget when multiple queues are enabled per + vector + - LP: #1536473 + * ixgbe: Add KR mode support for CS4227 chip + - LP: #1536473 + * ixgbevf: Limit lowest interrupt rate for adaptive interrupt moderation + to 12K + - LP: #1536473 + * ixgbe/ixgbevf: use napi_schedule_irqoff() + - LP: #1536473 + * ixgbe: Remove CS4227 diagnostic code + - LP: #1536473 + * ixgbevf: use ether_addr_copy instead of memcpy + - LP: #1536473 + * ixgbevf: fix spoofed packets with random MAC + - LP: #1536473 + * ixgbe: Prevent KR PHY reset in ixgbe_init_phy_ops_x550em + - LP: #1536473 + * ixgbe: Add support for newer thermal alarm + - LP: #1536473 + * ixgbe: Use private workqueue to avoid certain possible hangs + - LP: #1536473 + * ixgbevf: Use a private workqueue to avoid certain possible hangs + - LP: #1536473 + * ixgbevf: Minor cleanups + - LP: #1536473 + * ixgbe: Refactor MAC address configuration code + - LP: #1536473 + * ixgbe: Use __dev_uc_sync and __dev_uc_unsync for unicast addresses + - LP: #1536473 + * ixgbe: Allow FDB entries access to more RAR filters + - LP: #1536473 + * ixgbe: Update PTP to support X550EM_x devices + - LP: #1536473 + * ixgbe: Correct spec violations by waiting after reset + - LP: #1536473 + * ixgbe: Wait for master disable to be set + - LP: #1536473 + * ixgbe: Save VF info and take references + - LP: #1536473 + * ixgbe: Handle extended IPv6 headers in Tx path + - LP: #1536473 + * ixgbe: Always turn PHY power on when requested + - LP: #1536473 + * ixgbevf: Handle extended IPv6 headers in Tx path + - LP: #1536473 + * ixgbe: Return error on failure to allocate mac_table + - LP: #1536473 + * ixgbe: Fix SR-IOV VLAN pool configuration + - LP: #1536473 + * ixgbe: Simplify definitions for regidx and bit in set_vfta + - LP: #1536473 + * ixgbe: Reduce VT code indent in set_vfta by introducing jump label + - LP: #1536473 + * ixgbe: Simplify configuration of setting VLVF and VLVFB + - LP: #1536473 + * ixgbe: Add support for adding/removing VLAN on PF bypassing the VLVF + - LP: #1536473 + * ixgbe: Reorder search to work from the top down instead of bottom up + - LP: #1536473 + * ixgbe: Add support for VLAN promiscuous with SR-IOV + - LP: #1536473 + * ixgbe: Fix VLAN promisc in relation to SR-IOV + - LP: #1536473 + * ixgbe: Clear stale pool mappings + - LP: #1536473 + * ixgbe: Clean stale VLANs when changing port VLAN or resetting + - LP: #1536473 + * ixgbe: do not report 2.5 Gbps as supported + - LP: #1536473 + * ixgbevf: Fix handling of NAPI budget when multiple queues are enabled + per vector + - LP: #1536473 + * ixgbevf: minor cleanups for ixgbevf_set_itr() + - LP: #1536473 + * ixgbe: add support for QSFP PHY types in ixgbe_get_settings() + - LP: #1536473 + * ixgbe: report correct media type for KR, KX and KX4 interfaces + - LP: #1536473 + * ixgbe: Clean up redundancy in hw_enc_features + - LP: #1536473 + * ixgbe: fix RSS limit for X550 + - LP: #1536473 + * ixgbe: Correct X550EM_x revision check + - LP: #1536473 + * ixgbe: Fix bugs in ixgbe_clear_vf_vlans() + - LP: #1536473 + * ixgbe: Fill at least min credits to a TC credit refills + - LP: #1536473 + * ixgbe: use correct FCoE DDP max check + - LP: #1536473 + * ixgbe: fix broken PFC with X550 + - LP: #1536473 + * ixgbe: do not call check_link for ethtool in ixgbe_get_settings() + - LP: #1536473 + * ixgbe: Correct handling of any outer UDP checksum setting + - LP: #1536473 + * ixgbe: Fix to get FDMI HBA attributes information with X550 + - LP: #1536473 + * ixgbe: Fix MDD events generated when FCoE+SRIOV are enabled + - LP: #1536473 + * ixgbe: Make ATR recognize IPv6 extended headers + - LP: #1536473 + * e1000: make eeprom read/write scheduler friendly + * e1000: fix data race between tx_ring->next_to_clean + * e1000: Remove checkpatch coding style errors + * e1000: clean up the checking logic + * e1000: fix a typo in the comment + * e1000e: clean up the local variable + * e1000: fix kernel-doc argument being missing + * e1000: get rid of duplicate exit path + * e1000: Elementary checkpatch warnings and checks removed + * e1000e: fix division by zero on jumbo MTUs + * e1000e: Increase timeout of polling bit RSPCIPHY + * e1000e: initial support for i219-LM (3) + * e1000e: Switch e1000e_up to void, drop code checking for error result + * e1000e: Remove unreachable code + * e1000e: Do not read ICR in Other interrupt + * e1000e: Do not write lsc to ics in msi-x mode + * e1000e: Fix msi-x interrupt automask + * acpi: pci: Setup MSI domain for ACPI based pci devices + * irqdomain: Introduce is_fwnode_irqchip helper + * irqchip/gic-v2m: Refactor to prepare for ACPI support + * irqchip/gic-v2m: acpi: Introducing GICv2m ACPI support + * clk: xgene: Fix divider with non-zero shift value + * i2c: designware: Do not require clock when SSCN and FFCN are provided + * fm10k: do not assume VF always has 1 queue + - LP: #1536475 + * fm10k: Correct MTU for jumbo frames + - LP: #1536475 + * fm10k: Fix handling of NAPI budget when multiple queues are enabled per + vector + - LP: #1536475 + * fm10k: use napi_schedule_irqoff() + - LP: #1536475 + * fm10k: set netdev features in one location + - LP: #1536475 + * fm10k: reset max_queues on init_hw_vf failure + - LP: #1536475 + * fm10k: always check init_hw for errors + - LP: #1536475 + * fm10k: reinitialize queuing scheme after calling init_hw + - LP: #1536475 + * fm10k: Correct typecast in fm10k_update_xc_addr_pf + - LP: #1536475 + * fm10k: explicitly typecast vlan values to u16 + - LP: #1536475 + * fm10k: add statistics for actual DWORD count of mbmem mailbox + - LP: #1536475 + * fm10k: rename mbx_tx_oversized statistic to mbx_tx_dropped + - LP: #1536475 + * fm10k: Add support for ITR scaling based on PCIe link speed + - LP: #1536475 + * fm10k: introduce ITR_IS_ADAPTIVE macro + - LP: #1536475 + * fm10k: Update adaptive ITR algorithm + - LP: #1536475 + * fm10k: use macro for default Tx and Rx ITR values + - LP: #1536475 + * fm10k: change default Tx ITR to 25usec + - LP: #1536475 + * fm10k: TRIVIAL fix typo of hardware + - LP: #1536475 + * fm10k: TRIVIAL cleanup order at top of fm10k_xmit_frame + - LP: #1536475 + * fm10k: use ether_addr_copy to copy MAC address + - LP: #1536475 + * fm10k: do not use CamelCase + - LP: #1536475 + * fm10k: remove unnecessary else block from if statements with return + - LP: #1536475 + * fm10k: remove namespace pollution of fm10k_iov_msg_data_pf + - LP: #1536475 + * fm10k: consistently refer to VLANs and VLAN IDs + - LP: #1536475 + * fm10k: bump driver version + - LP: #1536475 + * fm10k: conditionally compile DCB and DebugFS support + - LP: #1536475 + * fm10k: Cleanup MSI-X interrupts in case of failure + - LP: #1536475 + * fm10k: Cleanup exception handling for mailbox interrupt + - LP: #1536475 + * fm10k: do not inline fm10k_iov_select_vid() + - LP: #1536475 + * fm10k: whitespace cleanups + - LP: #1536475 + * fm10k: use BIT() macro instead of open-coded bit-shifting + - LP: #1536475 + * fm10k: cleanup namespace pollution + - LP: #1536475 + * fm10k: cleanup overly long lines + - LP: #1536475 + * fm10k: initialize xps at driver load + - LP: #1536475 + * fm10k: don't initialize fm10k_workqueue at global level + - LP: #1536475 + * fm10k: correctly pack TLV structures and explain reasoning + - LP: #1536475 + * fm10k: Cleanup exception handling for changing queues + - LP: #1536475 + * fm10k: use ether_addr_equal instead of memcmp + - LP: #1536475 + * fm10k: address operator not needed when declaring function pointers + - LP: #1536475 + * fm10k: constify fm10k_mac_ops, fm10k_iov_ops and fm10k_info structures + - LP: #1536475 + * fm10k: remove unused struct element + - LP: #1536475 + * fm10k: use true/false for boolean get_host_state + - LP: #1536475 + * fm10k: cleanup mailbox code comments etc + - LP: #1536475 + * fm10k: IS_ENABLED() is not appropriate for boolean kconfig option + - LP: #1536475 + * device property: always check for fwnode type + - LP: #1533035 + * device property: rename helper functions + - LP: #1533035 + * device property: refactor built-in properties support + - LP: #1533035 + * device property: keep single value inplace + - LP: #1533035 + * device property: helper macros for property entry creation + - LP: #1533035 + * device property: improve readability of macros + - LP: #1533035 + * device property: return -EINVAL when property isn't found in ACPI + - LP: #1533035 + * device property: Fallback to secondary fwnode if primary misses the + property + - LP: #1533035 + * device property: Take a copy of the property set + - LP: #1533035 + * driver core: platform: Add support for built-in device properties + - LP: #1533035 + * driver core: Do not overwrite secondary fwnode with NULL if it is set + - LP: #1533035 + * mfd: core: propagate device properties to sub devices drivers + - LP: #1533035 + * mfd: intel-lpss: Add support for passing device properties + - LP: #1533035 + * mfd: intel-lpss: Pass SDA hold time to I2C host controller driver + - LP: #1533035 + * mfd: intel-lpss: Pass HSUART configuration via properties + - LP: #1533035 + * i2c: designware: Convert to use unified device property API + - LP: #1533035 + * keys, trusted: fix: *do not* allow duplicate key options + - LP: #1398274 + * keys, trusted: select hash algorithm for TPM2 chips + - LP: #1398274 + * keys, trusted: seal with a TPM2 authorization policy + - LP: #1398274 + * perf/x86/intel: Add perf core PMU support for Intel Knights Landing + - LP: #1461360 + * perf/x86/intel/uncore: Add Knights Landing uncore PMU support + - LP: #1461360 + * perf/x86/intel/uncore: Remove hard coding of PMON box control MSR + offset + - LP: #1461360 + * drm/i915: WaRsDisableCoarsePowerGating + - LP: #1527462 + * drm/i915/skl: Add SKL GT4 PCI IDs + - LP: #1527462 + * drm/i915/skl: Disable coarse power gating up until F0 + - LP: #1527462 + * platform:x86: add Intel P-Unit mailbox IPC driver + - LP: #1520457 + * intel_punit_ipc: add NULL check for input parameters + - LP: #1520457 + * platform/x86: Add Intel Telemetry Core Driver + - LP: #1520457 + * intel_pmc_ipc: update acpi resource structure for Punit + - LP: #1520457 + * platform:x86: Add Intel telemetry platform device + - LP: #1520457 + * platform:x86: Add Intel telemetry platform driver + - LP: #1520457 + * platform:x86: Add Intel Telemetry Debugfs interfaces + - LP: #1520457 + * cxlflash: a couple off by one bugs + + -- Andy Whitcroft Thu, 28 Jan 2016 13:56:00 +0000 + +linux (4.4.0-1.15) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1536803 + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] libiscsi: Reduce locking contention in fast path" + - LP: #1517142 + + -- Tim Gardner Wed, 20 Jan 2016 07:41:40 -0700 + +linux (4.4.0-0.14) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "powerpc/pci: Remove unused struct pci_dn.pcidev field" + - LP: #1522415 + * powerpc: Add __raw_rm_writeq() function + - LP: #1522415 + + -- Tim Gardner Tue, 19 Jan 2016 11:24:26 -0700 + +linux (4.4.0-0.13) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] s390x -- the kernel provides ppp-modules such as there are + * SAUCE: (no-up) add compat_uts_machine= kernel command line override + + [ Tim Gardner ] + + * [Config] Update annotations for VIRTIO_{NET,BLK} + - LP: #1533382 + + [ Upstream Kernel Changes ] + + * powerpc/powernv: Add support for Nvlink NPUs + - LP: #1522415 + * powerpc/powernv: Fix update of NVLink DMA mask + - LP: #1522415 + * powerpc/powernv: Change NPU PE# assignment + - LP: #1522415 + * powerpc/powernv: Reserve PE#0 on NPU + - LP: #1522415 + * KEYS: Fix keyring ref leak in join_session_keyring() + - LP: #1534887 + - CVE-2016-0728 + + -- Tim Gardner Tue, 19 Jan 2016 05:49:09 -0700 + +linux (4.4.0-0.12) xenial; urgency=low + + [ Eric Dumazet ] + + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + + [ Guilherme G. Piccoli ] + + * SAUCE: powerpc/eeh: Validate arch in eeh_add_device_early() + - LP: #1486180 + + [ Tim Gardner ] + + * SAUCE: AUFS - update to aufs4.x-rcN 20160111 + * [Config] CONFIG_VIRTIO_BLK=y, CONFIG_VIRTIO_NET=y for s390 + - LP: #1532886 + * [Config] nvme.ko moved to drivers/nvme/host + * [Config] scsi_dh morphed into 4 modules + * [Config] CONFIG_IBMVNIC=m + * [Config] Add DRM ast driver to udeb installer image + - LP: #1514711 + * [Config] CONFIG_KVM=y for s390x + - LP: #1532886 + * [Config] Install spl/zfs under the kernel modules directory + Fixes some errors in generic.inclusion-list.log + + [ Upstream Kernel Changes ] + + * perf/x86/intel/uncore: Add Broadwell-EP uncore support + - LP: #1524574 + * EDAC: Add DDR4 flag + - LP: #1519631 + * EDAC, sb_edac: Virtualize several hard-coded functions + - LP: #1519631 + * EDAC, sb_edac: Add support for duplicate device IDs + - LP: #1519631 + * EDAC, sb_edac: Add Knights Landing (Xeon Phi gen 2) support + - LP: #1519631 + * Driver for IBM System i/p VNIC protocol + - LP: #1532303 + + -- Tim Gardner Mon, 11 Jan 2016 09:57:16 -0700 + +linux (4.4.0-0.11) xenial; urgency=low + + [ Tim Gardner ] + + * [Config] Fix bogus reconstruct script + + -- Tim Gardner Mon, 11 Jan 2016 07:29:17 -0700 + +linux (4.4.0-0.10) xenial; urgency=low + + [ Haren Myneni ] + + * SAUCE: crypto: nx-842 - Mask XERS0 bit in return value + - LP: #1529666 + + [ Serge Hallyn ] + + * SAUCE: add a sysctl to disable unprivileged user namespace unsharing + + [ Tim Gardner ] + + * [Config] CONFIG_ZONE_DEVICE=y for amd64 + * [Config] CONFIG_BLK_DEV_LOOP=y for s390x + - LP: #1526869 + * SAUCE: (no-up) apparmor: Fix incompatible pointer type warnings + * SAUCE: radeon: r100: Silence 'may be used uninitialized' warnings + * SAUCE: dmaengine: ioatdma: Squelch framesize warnings + * rebase to v4.4 + + [ Upstream Kernel Changes ] + + * rebase to v4.4 + + -- Tim Gardner Mon, 04 Jan 2016 17:43:51 -0700 + +linux (4.4.0-0.9) xenial; urgency=low + + [ Tim Gardner ] + + * rebase to v4.4-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc8 + + -- Tim Gardner Sun, 03 Jan 2016 18:50:33 -0700 + +linux (4.4.0-0.8) xenial; urgency=low + + [ Tim Gardner ] + + * rebase to v4.4-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc7 + + -- Tim Gardner Mon, 28 Dec 2015 16:13:11 -0700 + +linux (4.4.0-0.7) xenial; urgency=low + + [ Hui Wang ] + + * [Config] CONFIG_I2C_DESIGNWARE_BAYTRAIL=y, CONFIG_IOSF_MBI=y + - LP: #1527096 + + [ Jann Horn ] + + * SAUCE: (noup) ptrace: being capable wrt a process requires mapped + uids/gids + - LP: #1527374 + + [ Tim Gardner ] + + * rebase to v4.4-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc6 + - LP: #1526330 + + -- Tim Gardner Thu, 17 Dec 2015 05:28:27 -0700 + +linux (4.4.0-0.6) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_ARM64_LSE_ATOMICS to avoid issues with ARMv8.1 + support in latest compilers + * [Config] disable CONFIG_CRYPTO_AES_ARM64_CE* to avoid issues with + ARMv8.1 support in latest compilers + + [ Tim Gardner ] + + * [Config] s390 -> s390x + * SAUCE: include/linux/mmdebug.h: #include + + -- Tim Gardner Tue, 15 Dec 2015 06:46:26 -0700 + +linux (4.4.0-0.5) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] s390x -- enable tools + - LP: #1524319 + * [Config] s390x -- add architecture to getabis + * [Config] s390x -- add s390x ABI information + * [Config] s390x -- enable ABI checks + + [ Tim Gardner ] + + * [Debian] config-check and prepare using ${DEBIAN}/config/annotations + * [Config] Add s390 modules to nic-modules udeb + - LP: #1525297 + * rebase to v4.4-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc5 + - LP: #1523517 + - LP: #1523232 + + -- Tim Gardner Mon, 14 Dec 2015 05:28:05 -0700 + +linux (4.4.0-0.4) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * cgroup: make css_set pin its css's to avoid use-afer-free + * cgroup_freezer: simplify propagation of CGROUP_FROZEN clearing in + freezer_attach() + * cgroup: fix handling of multi-destination migration from + subtree_control enabling + + -- Tim Gardner Tue, 08 Dec 2015 11:20:41 -0700 + +linux (4.4.0-0.3) xenial; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc4 + + -- Tim Gardner Sun, 06 Dec 2015 16:50:15 -0700 + +linux (4.4.0-0.2) xenial; urgency=low + + [ Tim Gardner ] + + * [Config] Add spl/zfs provides to generic and powerpc64-smp + * [Config] Add zfs to d-i fs-core-modules + * [Config] Include all s390 specific drivers in linux-image + - LP: #1522210 + + -- Tim Gardner Thu, 03 Dec 2015 07:05:56 -0700 + +linux (4.4.0-0.1) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Tests] gcc-multilib does not exist on ppc64el redux + - LP: #1515541 + * [Config] libunwind8-dev is not available on s390x + * [Debian] Disable SPL/ZFS for cross compiling -- redux + * [Config] s390x -- add dasd udebs + - LP: #1519833 + * [Config] s390x -- include dasd modules in linux-image + - LP: #1519833 + * [Config] s390x -- disable ZFS temporarily + - LP: #1519820 + * [Config] s390s -- disable ABI/module checks + * [Config] make IBMVETH consistent on powerpc/ppc64el + - LP: #1521712 + * [Config] follow ibmvscsi name change + - LP: #1521712 + * [Config] move ibm disk and ethernet drivers to linux-image + - LP: #1521712 + * [Config] include ibmveth in nic-modules for ppc64el + - LP: #1521712 + * [Config] s390x -- disable abi/module checks for s390x + + [ Joseph Salisbury ] + + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + + [ Seth Forshee ] + + * [Config] CONFIG_DRM_AMDGPU_CIK=n + - LP: #1510405 + + [ Tim Gardner ] + + * [Debian] Disable SPL/ZFS for cross compiling + * [Config] CONFIG_SCSI_IBMVSCSI=m + - LP: #1515872 + * rebase to v4.4-rc2 + * [Config] updateconfigs + * [Config] CONFIG_WILC1000_DRIVER=n for FTBS + * SAUCE: do_zfs=false temporarily + * [Config] CONFIG_LUSTRE_FS=n + * [Debian] Disable udebs when cross compiling + * rebase to v4.4-rc3 + * [Config] CONFIG_AUFS_FS=m + * SAUCE: AUFS + + [ Upstream Kernel Changes ] + + * ZFS: Update with 4.4 support + * SPL: Update with 4.4 support + + [ Upstream Kernel Changes ] + + * rebase to v4.4-rc3 + - LP: #1519168 + * rebase to v4.4-rc2 + - LP: #1506615 + - LP: #1502781 + + -- Tim Gardner Mon, 23 Nov 2015 13:22:37 -0700 + +linux (4.3.0-0.8) xenial; urgency=low + + [ Andy Whitcroft ] + + * [Config] re-enable OSS support and blacklist + - LP: #1434842 + * [Config] enable CONFIG_CC_STACKPROTECTOR_STRONG=y + * [Packaging] config-check -- improve syntax diagnostics + * [Packaging] module-inclusion -- add dependency inclusion for a list + * [Packaging] config-check -- accumulate multi-line annotations correctly + * [Packaging] config-check -- handle V2 annotations format + * [Packaging] s390x -- add architecture to kernelconfig + - LP: #1488653 + * [Config] s390x -- initial configuration + * [Config] s390x -- add initial binary image + * [Config] s390x -- initial configuration update + * [Config] s390x -- produce linux-image + * [Config] s390x -- d-i module exclusions + * [Config] apply Device Drivers >> LED Support >> LED Class Support + * [Config] apply File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support + * [Config] apply Device Drivers >> Generic Driver Options >> Userspace firmware loading support + * SAUCE: leds: lp55xx -- do not force use of the fallback loader + * [Config] -- s390x -- configuration review updates + * [Config] annotations -- add review marks + * [Config] annotations -- config review 4.3 updates + * [Config] annotations -- expose reviews + * [Config] updateconfigs following incoporation of s390x configs + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + + [ Dan Carpenter ] + + * SAUCE: (noup) cxlflash: a couple off by one bugs + - LP: #1499849 + + [ Haren Myneni ] + + * Revert "SAUCE: (noup) crypto: 842 - Add CRC and validation support" + + [ Jay Vosburgh ] + + * SAUCE: fan: add VXLAN implementation + + [ Manoj Kumar ] + + * SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1513583 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1513583 + + [ Tim Gardner ] + + * [Config] CONFIG_AUFS_EXPORT=y + - LP: #1121699 + + [ Upstream Kernel Changes ] + + * misc/genwqe: get rid of atomic allocations + * crypto: 842 - Add CRC and validation support + - LP: #1497878 + * cxlflash: Fix to avoid invalid port_sel value + * cxlflash: Replace magic numbers with literals + * cxlflash: Fix read capacity timeout + * cxlflash: Fix potential oops following LUN removal + * cxlflash: Fix data corruption when vLUN used over multiple cards + * cxlflash: Fix to avoid sizeof(bool) + * cxlflash: Fix context encode mask width + * cxlflash: Fix to avoid CXL services during EEH + * cxlflash: Correct naming of limbo state and waitq + * cxlflash: Make functions static + * cxlflash: Refine host/device attributes + * cxlflash: Fix to avoid spamming the kernel log + * cxlflash: Fix to avoid stall while waiting on TMF + * cxlflash: Fix location of setting resid + * cxlflash: Fix host link up event handling + * cxlflash: Fix async interrupt bypass logic + * cxlflash: Remove dual port online dependency + * cxlflash: Fix AFU version access/storage and add check + * cxlflash: Correct usage of scsi_host_put() + * cxlflash: Fix to prevent workq from accessing freed memory + * cxlflash: Correct behavior in device reset handler following EEH + * cxlflash: Remove unnecessary scsi_block_requests + * cxlflash: Fix function prolog parameters and return codes + * cxlflash: Fix MMIO and endianness errors + * cxlflash: Fix to prevent EEH recovery failure + * cxlflash: Correct spelling, grammar, and alignment mistakes + * cxlflash: Fix to prevent stale AFU RRQ + * cxlflash: Fix to double the delay each time + * cxlflash: Fix to avoid corrupting adapter fops + * cxlflash: Correct trace string + * cxlflash: Fix to avoid potential deadlock on EEH + * cxlflash: Fix to avoid leaving dangling interrupt resources + * cxlflash: Fix to escalate to LINK_RESET on login timeout + * cxlflash: Fix to avoid corrupting port selection mask + * cxlflash: Fix to avoid lock instrumentation rejection + * cxlflash: Fix to avoid bypassing context cleanup + + -- Tim Gardner Fri, 06 Nov 2015 10:15:07 -0600 + +linux (4.3.0-0.7) xenial; urgency=low + + [ Tim Gardner ] + + * Revert "Bypass spl/zfs config" + Causes unresolved symbols on load. + * [Config] Enable ZFS for powerpc64-smp + + -- Tim Gardner Thu, 05 Nov 2015 11:42:37 -0600 + +linux (4.3.0-0.6) xenial; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1512704 + * UBUNTU: SAUCE: AUFS aufs4.x-rcN 20151102 + + [ Andy Whitcroft ] + + * [Packaging] add feature interlock with mainline builds + * apparmor -- follow change to this_cpu_ptr + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: add parameter to control whether policy hashing is used + - LP: #1383886 + * SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot + - LP: #1362199 + * SAUCE: Revert: fix: only allow a single threaded process to ... + - LP: #1371310 + * SAUCE: (no-up) fix: bad unix_addr_fs macro + - LP: #1390223 + * SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + - LP: #1408833 + * SAUCE: (no-up) apparmor: fix mount not handling disconnected paths + - LP: #1496430 + + [ Tim Gardner ] + + * [Config] Add iscsi_ibft and iscsi_boot_sysfs to generic inclusion list + - LP: #1511006 + * rebase to v4.3 + * Bypass spl/zfs config + * SPL/ZFS: Add Makefiles in order to avoid the lengthy config + * [Config] Default AppArmor settings + + [ Upstream Kernel Changes ] + + * rebase to v4.3 + + -- Tim Gardner Thu, 29 Oct 2015 09:16:26 -0600 + +linux (4.3.0-0.5) xenial; urgency=low + + * Update spl to 0.6.5.3-0ubuntu1, zfs to 0.6.5.3-0ubuntu1 + + [ Upstream Kernel Changes ] + + * rebase to v4.3-rc7 + - LP: #1504778 + + -- Tim Gardner Fri, 23 Oct 2015 13:59:52 -0600 + +linux (4.3.0-0.4) xenial; urgency=low + + [ Tim Gardner ] + + * [Debian] Update to new signing key type and location + + -- Tim Gardner Wed, 21 Oct 2015 13:07:30 -0600 + +linux (4.3.0-0.3) wily; urgency=low + + [ Tim Gardner ] + + * [Debian] sign-file is now compiled + + -- Tim Gardner Wed, 21 Oct 2015 09:26:34 -0600 + +linux (4.3.0-0.2) wily; urgency=low + + [ Tim Gardner ] + + * [Config] Added libssl-dev to Build-Depends + + -- Tim Gardner Tue, 20 Oct 2015 14:01:55 -0600 + +linux (4.3.0-0.1) wily; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.3-rc6 + * rebase to v4.3-rc5 + * rebase to v4.3-rc4 + * rebase to v4.3-rc3 + * rebase to v4.3-rc2 + * rebase to v4.3-rc1 + - LP: #1492132 + - LP: #1481575 + + -- Tim Gardner Mon, 14 Sep 2015 07:30:36 -0600 + +linux (4.2.0-10.11) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1495208 + * No change rebuild to avoid issues with leading zero bytes on + internal module signing key. (see launchpad bug 1494943) + + [ Ming Lei ] + + * [Config] SERIAL_8250_DW=y for arm64 + + [ Upstream Kernel Changes ] + + * drm/i915: Move WaBarrierPerformanceFixDisable:skl to skl code from chv + code + - LP: #1484486 + * drm/i915/gen8: Add infrastructure to initialize WA batch buffers + - LP: #1484486 + * drm/i915/gen8: Re-order init pipe_control in lrc mode + - LP: #1484486 + * drm/i915/gen8: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915/gen8: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915: Bail out early if WA batch is not available for given Gen + - LP: #1484486 + * drm/i915/gen8: Add WaClearSlmSpaceAtContextSwitch workaround + - LP: #1484486 + * drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch + - LP: #1484486 + * drm/i915/gen9: Implement WaDisableKillLogic for gen 9 + - LP: #1484486 + * drm/i915: Enable WA batch buffers for Gen9 + - LP: #1484486 + * drm/i915/gen9: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915: Update wa_ctx_emit() macro as per kernel coding guidelines + - LP: #1484486 + * drm/i915/gen9: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915/gen9: Add + WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken + - LP: #1484486 + * drm/i915:skl: Add WaEnableGapsTsvCreditFix + - LP: #1484486 + * drm/i915/skl: revert duplicated WaBarrierPerformanceFixDisable:skl + - LP: #1484486 + * drm/i915/skl: Don't expose the top most plane on gen9 display + - LP: #1484486 + * drm/i915/skl WaDisableSbeCacheDispatchPortSharing + - LP: #1484486 + * drm/i915/skl: WaIgnoreDDIAStrap is forever, always init DDI A + - LP: #1484486 + * drm/i915: reduce indent in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce duplicate conditions in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: group all hotplug related fields into a new struct in + dev_priv + - LP: #1484531 + * drm/i915: add for_each_hpd_pin to iterate over hotplug pins + - LP: #1484531 + * drm/i915: simplify conditions for skipping the 2nd hpd loop iterations + - LP: #1484531 + * drm/i915: put back the indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: merge the two hpd loops in intel_hpd_irq_handler to one + - LP: #1484531 + * drm/i915: simplify condition for digital port + - LP: #1484531 + * drm/i915: abstract away platform specific parts from hpd handling + - LP: #1484531 + * drm/i915: Handle HPD when it has actually occurred + - LP: #1484531 + * drm/i915: Set power domain for DDI-E + - LP: #1484531 + * drm/i915: Set alternate aux for DDI-E + - LP: #1484531 + * drm/i915/skl: enable DDI-E hotplug + - LP: #1484531 + * drm/i915/bxt: fix DDI PHY vswing scale value setting + - LP: #1494163 + * drm/i915/skl: Buffer translation improvements + - LP: #1494163 + * drm/i915: Per-DDI I_boost override + - LP: #1494163 + * drm/i915: fix VBT parsing for SDVO child device mapping + - LP: #1494163 + * drm/i915/bxt: edp1.4 Intermediate Freq support + - LP: #1494163 + * drm/i915: fix link rates reported for SKL + - LP: #1494163 + * drm/i915: Allow parsing of variable size child device entries from VBT + - LP: #1494163 + * drm/i915/skl: Update DDI buffer translation programming. + - LP: #1494163 + * drm/i915: Enable HDMI on DDI-E + - LP: #1484531 + * drm/i915/skl: Enable DDI-E + - LP: #1484531 + * drm/i915: eDP can be present on DDI-E + - LP: #1484531 + * drm/i915/skl: Adding DDI_E power well domain + - LP: #1484531 + * drm/i915: set CDCLK if DPLL0 enabled during resuming from S3 + - LP: #1490035 + * drm/i915: Split atomic wm update to pre and post variants + - LP: #1493746 + * drm/i915/skl: Drop the preliminary_hw_support flag + - LP: #1486868 + * drm/i915: set FDI translations to NULL on SKL + - LP: #1494163 + + -- Andy Whitcroft Sun, 13 Sep 2015 11:32:02 +0100 + +linux (4.2.0-9.9) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493970 + * [Config] CONFIG_MFD_INTEL_LPSS=m + - LP: #1397876 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + + [ Michael Ellerman ] + + * SAUCE: crypto: vmx - VMX crypto should depend on CONFIG_VSX + Fixes FTBS on 32 bit powerpc, patch sent upstream. + + [ Upstream Kernel Changes ] + + * thermal/powerclamp: add cpu id for skylake h/s + - LP: #1398269 + * perf/x86/intel/uncore: Add Broadwell-DE uncore support + - LP: #1397852 + * mfd: watchdog: iTCO_wdt: Expose watchdog properties using platform data + - LP: #1460905 + * i2c: i801: Create iTCO device on newer Intel PCHs + - LP: #1460905 + * watchdog: iTCO_wdt: Add support for TCO on Intel Sunrisepoint + - LP: #1460905 + * perf/x86: Add a native_perf_sched_clock_from_tsc() + - LP: #1397867 + * perf/x86/intel: Add support for PEBSv3 profiling + - LP: #1397867 + * perf/x86/intel/lbr: Allow time stamp for free running PEBSv3 + - LP: #1397867 + * x86: Add new MSRs and MSR bits used for Intel Skylake PMU support + - LP: #1397867 + * perf: Add cycles to branch_info + - LP: #1397867 + * perf/x86/intel/lbr: Add support for LBRv5 + - LP: #1397867 + * perf/x86/intel: Handle new arch perfmon v4 status bits + - LP: #1397867 + * perf/x86/intel: Move PMU ACK to after LBR read + - LP: #1397867 + * perf/x86/intel/lbr: Optimize v4 LBR unfreezing + - LP: #1397867 + * perf/x86/intel: Add Intel Skylake PMU support + - LP: #1397867 + * perf/x86/intel/lbr: Use correct index to save/restore LBR_INFO with + call stack + - LP: #1397867 + * perf/x86/intel/lbr: Limit LBR accesses to TOS in callstack mode + - LP: #1397867 + * perf/x86: Make merge_attr() global to use from perf_event_intel + - LP: #1397867 + * perf/x86/intel: Use 0x11 as extra reg test value + - LP: #1397867 + * perf tools: Add support for cycles, weight branch_info field + - LP: #1397867 + * perf report: Add flag for non ANY branch mode + - LP: #1397867 + * perf report: Add infrastructure for a cycles histogram + - LP: #1397867 + * perf report: Add processing for cycle histograms + - LP: #1397867 + * perf annotate: Compute IPC and basic block cycles + - LP: #1397867 + * perf annotate: Finally display IPC and cycle accounting + - LP: #1397867 + * perf top: Add branch annotation code to top + - LP: #1397867 + * perf report: Display cycles in branch sort mode + - LP: #1397867 + * perf annotate: Fix 32-bit compilation error in util/annotate.c + - LP: #1397867 + * PM / QoS: Make it possible to expose device latency tolerance to + userspace + - LP: #1460908 + * ACPI / PM: Attach ACPI power domain only once + - LP: #1460908 + * Driver core: wakeup the parent device before trying probe + - LP: #1460908 + * klist: implement klist_prev() + - LP: #1460908 + * driver core: implement device_for_each_child_reverse() + - LP: #1460908 + * mfd: make mfd_remove_devices() iterate in reverse order + - LP: #1460908 + * dmaengine: add a driver for Intel integrated DMA 64-bit + - LP: #1460908 + * mfd: Add support for Intel Sunrisepoint LPSS devices + - LP: #1460908 + * spi: pxa2xx: Add support for Intel Sunrisepoint + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy PXA DMA API channel numbers + - LP: #1397876 + * spi: pxa2xx: Add terminating entry for pxa2xx_spi_pci_compound_match + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy null dma buffer and allocation + for it + - LP: #1397876 + * intel_idle: Skylake Client Support + - LP: #1397877 + * powerpc/kernel: Switch to using MAX_ERRNO + - LP: #1458876 + * powerpc/kernel: Change the do_syscall_trace_enter() API + - LP: #1458876 + * powerpc: Drop unused syscall_get_error() + - LP: #1458876 + * powerpc: Don't negate error in syscall_set_return_value() + - LP: #1458876 + * powerpc: Rework syscall_get_arguments() so there is only one loop + - LP: #1458876 + * powerpc: Use orig_gpr3 in syscall_get_arguments() + - LP: #1458876 + * powerpc: Change syscall_get_nr() to return int + - LP: #1458876 + * powerpc/kernel: Add SIG_SYS support for compat tasks + - LP: #1458876 + * powerpc/kernel: Enable seccomp filter + - LP: #1458876 + * selftests/seccomp: Make seccomp tests work on big endian + - LP: #1458876 + * selftests/seccomp: Add powerpc support + - LP: #1458876 + * eCryptfs: Invalidate dcache entries when lower i_nlink is zero + + -- Tim Gardner Tue, 08 Sep 2015 19:17:57 -0600 + +linux (4.2.0-8.8) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493357 + * [Config] CONFIG_CRYPTO_DEV_NX_COMPRESS_CRYPTO obsolete + - LP: #1488495 + * [Config] CONFIG_CXLFLASH=m + * [Config] CONFIG_CXL_EEH=y for ppc64el, powerpc64-smp + + + [ Andy Whitcroft ] + + * [Packaging] standardise on stage1 for the bootstrap stage in line with debian + * [Packaging] mark up control for stage1 + * [Config] kernel-versions -- clean up deps field + * [Config] s390x -- build linux-libc-dev + - LP: #1488653 + * [Packaging] control -- prepare for new kernel-wedge semantics + + [ Upstream Kernel Changes ] + + * crypto: vmx - Fixing AES-CTR counter bug + - LP: #1484519 + * crypto: vmx - Fixing GHASH Key issue on little endian + - LP: #1484519 + * powerpc: Uncomment and make enable_kernel_vsx() routine available + - LP: #1484519 + * crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions + - LP: #1484519 + * crypto: nx - nx842_OF_upd_status should return ENODEV if device is not + 'okay' + - LP: #1488495 + * crypto: nx - rename nx842_{init, exit} to nx842_pseries_{init, exit} + - LP: #1488495 + * crypto: nx - do not emit extra output if status is disabled + - LP: #1488495 + * crypto: nx - reduce chattiness of platform drivers + - LP: #1488495 + * crypto: nx/842 - Fix context corruption + - LP: #1488495 + * crypto: nx - remove __init/__exit from VIO functions + - LP: #1488495 + * crypto: nx - remove pSeries NX 'status' field + - LP: #1488495 + * crypto: nx - move kzalloc() out of spinlock + - LP: #1488495 + * crypto: nx - don't register pSeries driver if ENODEV + - LP: #1488495 + * crypto: nx - use common code for both NX decompress success cases + - LP: #1488495 + * crypto: nx - merge nx-compress and nx-compress-crypto + - LP: #1488495 + * crypto: nx - rename nx-842-crypto.c to nx-842.c + - LP: #1488495 + * crypto: nx - make platform drivers directly register with crypto + - LP: #1488495 + * cxlflash: Base support for IBM CXL Flash Adapter + - LP: #1449121 + * cxlflash: Base error recovery support + - LP: #1449121 + * cxlflash: Superpipe support + - LP: #1449121 + * cxlflash: Virtual LUN support + - LP: #1449121 + * cxlflash: off by one bug in cxlflash_show_port_status() + - LP: #1449121 + * cxlflash: shift wrapping bug in afu_link_reset() + - LP: #1449121 + * cxlflash: Remove unused variable from queuecommand + - LP: #1449121 + * powerpc/powernv: move dma_get_required_mask from pnv_phb to + pci_controller_ops + * powerpc/eeh: Probe after unbalanced kref check + * misc: cxl: clean up afu_read_config() + * cxl: Add explicit precision specifiers + * cxl: use more common format specifier + * cxl: Destroy cxl_adapter_idr on module_exit + * cxl: Destroy afu->contexts_idr on release of an afu + * cxl: Don't ignore add_process_element() result when attaching context + * cxl: Compile with -Werror + * cxl: sparse: Make declarations static + * cxl: sparse: Silence iomem warning in debugfs file creation + * cxl: Convert MMIO read/write macros to inline functions + * cxl: Drop commands if the PCI channel is not in normal state + * cxl: Allocate and release the SPA with the AFU + * cxl: Make IRQ release idempotent + * cxl: Clean up adapter MMIO unmap path. + * cxl: Refactor adaptor init/teardown + * cxl: Refactor AFU init/teardown + * cxl: Don't remove AFUs/vPHBs in cxl_reset + * cxl: Allow the kernel to trust that an image won't change on PERST. + * cxl: EEH support + * cxl: Add CONFIG_CXL_EEH symbol + * cxl: Plug irq_bitmap getting leaked in cxl_context + * cxl: Add alternate MMIO error handling + * cxl: Allow release of contexts which have been OPENED but not STARTED + * cxl: Remove use of macro DEFINE_PCI_DEVICE_TABLE + * cxl: Release irqs if memory allocation fails + * cxl: Remove racy attempt to force EEH invocation in reset + * cxl: Fix + cleanup error paths in cxl_dev_context_init + * cxl: Fix force unmapping mmaps of contexts allocated through the kernel api + * cxl: Set up and enable PSL Timebase + + -- Tim Gardner Tue, 01 Sep 2015 07:38:43 -0600 + +linux (4.2.0-7.7) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1490564 + * rebase to v4.2 + + [ Wen Xiong ] + + * SAUCE: ipr: Byte swapping for device_id attribute in sysfs + - LP: #1453892 + + [ Upstream Kernel Changes ] + + * rebase to v4.2 + - LP: #1487345 + + -- Tim Gardner Wed, 26 Aug 2015 07:06:10 -0600 + +linux (4.2.0-6.6) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1488138 + + [ Andy Whitcroft ] + + * rebase to v4.2-rc8 + + [ Shilpasri G Bhat ] + + * SAUCE: cpufreq: powernv: Handle throttling due to Pmax capping at chip + level + - LP: #1480894 + * SAUCE: powerpc/powernv: Add definition of OPAL_MSG_OCC message type + - LP: #1480894 + * SAUCE: cpufreq: powernv: Register for OCC related opal_message + notification + - LP: #1480894 + * SAUCE: cpufreq: powernv: Call throttle_check() on receiving + OCC_THROTTLE + - LP: #1480894 + * SAUCE: cpufreq: powernv: Report Psafe only if PMSR.psafe_mode_active + bit is set + - LP: #1480894 + * SAUCE: cpufreq: powernv: Restore cpu frequency to policy->cur on + unthrottling + - LP: #1480894 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc8 + - LP: #1483440 + - LP: #1484334 + + -- Tim Gardner Fri, 21 Aug 2015 07:12:11 -0600 + +linux (4.2.0-5.5) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1487173 + + [ Andy Whitcroft ] + + * [Packaging] correct spelling of probabaly on the tools packages + - LP: #1256822 + * rebase to v4.2-rc7 + + [ dann frazier ] + + * d-i: Add nicpf and nicvf to nic-modules + * d-i: Enable usb modules on arm64 + + [ Mahesh Salgaonkar ] + + * SAUCE: powerpc/powernv: display reason for Malfunction Alert HMI. + - LP: #1482343 + * SAUCE: powerpc/powernv: Pull all HMI events before panic. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable + machine check errors. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable HMI. + - LP: #1482343 + + [ Vipin K Parashar ] + + * SAUCE: powerpc/powernv: Add poweroff (EPOW, DPO) events support for + PowerNV platform + - LP: #1469771 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc7 + + -- Tim Gardner Tue, 11 Aug 2015 09:48:40 -0600 + +linux (4.2.0-4.4) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1483677 + + [ Achiad Shochat ] + + * SAUCE: net/mlx5e: Support TX packet copy into WQE + * SAUCE: net/mlx5e: TX latency optimization to save DMA reads + * SAUCE: net/mlx5e: Cosmetics: use BIT() instead of "1 <<", and others + * SAUCE: net/mlx5e: Input IPSEC.SPI into the RX RSS hash function + + [ Adam Lee ] + + * SAUCE: serial: 8250_pci: Add support for Pericom PI7C9X795[1248] + - LP: #1480142 + + [ dann frazier ] + + * [Config] CONFIG_NR_CPUS=128 on arm64 + + [ Leann Ogasawara ] + + * [Config] d-i -- Add sfc to nic-modules udeb + - LP: #1481490 + + [ Saeed Mahameed ] + + * SAUCE: net/mlx5e: Support ETH_RSS_HASH_XOR + * SAUCE: net/mlx5e: Allocate DMA coherent memory on reader NUMA node + + [ Tim Gardner ] + + * [Config] CONFIG_X86_INTEL_MPX=y + - LP: #1460902 + * [Debian] change dependency on module-init-tools to kmod + - LP: #1481986 + * rebase to v4.2-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc6 + + -- Tim Gardner Tue, 04 Aug 2015 16:59:45 -0600 + +linux (4.2.0-3.3) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481462 + * SAUCE: workqueue: Make flush_workqueue() available again to non GPL modules + Fixes an FTBS for at least one DKMS package. + + -- Tim Gardner Tue, 04 Aug 2015 11:26:53 -0600 + +linux (4.2.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481067 + * rebase to v4.2-rc5 + + [ Andy Whitcroft ] + + * [Packaging] module-inclusion -- commonise copy code and simplify + * [Packaging] module-inclusion -- add manual command entries + * [Packaging] module blacklists -- add support for manual blacklists + * [Packaging] do_common_tools should always be on + * [Packaging] initscripts need installing when making the package + * [Packaging] initscripts work around bug in debhelper systemd support + * [Config] exclude oss modules from linux-image + - LP: #1434842 + * hyper-v -- add hid and fb drivers to linux-virtual + - LP: #1444179 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * ubuntu: vbox -- update to 5.0.0-dfsg-1 + - LP: #1480879 + * SAUCE: vbox: follow v4.2 updates to follow_link()/put_link() API + * [Config] move vbox modules into linux-image + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc5 + - LP: #1478497 + - LP: #1477900 + + -- Andy Whitcroft Mon, 03 Aug 2015 12:20:10 +0100 + +linux (4.2.0-1.1~rc1) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1479903 + * Initial upload of v4.2 based kernel (currently v4.-rc4) + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc4 + - LP: #1476987 + - LP: #1476888 + * rebase to v4.2-rc3 + * rebase to v4.2-rc2 + * rebase to v4.2-rc1 + - LP: #1394368 + - LP: #1427680 + - LP: #1462614 + - LP: #1397021 + + -- Andy Whitcroft Thu, 30 Jul 2015 18:42:46 +0100 + +linux (4.1.0-3.3) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1478897 + + [ Colin Ian King ] + + * SAUCE: KEYS: ensure we free the assoc array edit if edit is valid + - CVE-2015-1333 + + [ Seth Forshee ] + + * SAUCE: overlayfs: Enable user namespace mounts for the "overlay" fstype + - LP: #1478578 + + [ Upstream Kernel Changes ] + + * sched/stop_machine: Fix deadlock between multiple stop_two_cpus() + - LP: #1461620 + * x86/nmi: Enable nested do_nmi() handling for 64-bit kernels + * x86/nmi/64: Remove asm code that saves cr2 + * x86/nmi/64: Switch stacks on userspace NMI entry + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + + -- Andy Whitcroft Tue, 28 Jul 2015 11:59:03 +0100 + +linux (4.1.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.1.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * rebase to v4.1.3 + * [Config] Add i40e[vf] to d-i + - LP: #1476393 + + [ Upstream Kernel Changes ] + + * rebase to v4.1.3 + - LP: #1427680 + - LP: #1462614 + - LP: #1394368 + + -- Tim Gardner Wed, 22 Jul 2015 09:13:02 -0600 + +linux (4.1.0-1.1) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + * [Packaging] fix up Vcs-Git: to point to launchpad + * [Config] correct linux-initramfs-tool virtual linkage + - LP: #1474810 + + [ Chris J Arges ] + + * [Config] Add dm-service-time to multipath-modules + - LP: #1469240 + * [Config] Add MTD_POWERNV_FLASH and OPAL_PRD + - LP: #1464560 + + [ Jay Vosburgh ] + + * SAUCE: fan: Proof of concept implementation (v2) + - LP: #1439706 + * SAUCE: fan: tunnel multiple mapping mode (v3) + - LP: #1470091 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: disable ext4_punch_hole for indirect filesystems" + * Revert "SAUCE: intel_pstate: inform user that thermald is worth + considering" + * Revert "SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537" + * Revert "SAUCE: dm-crypt: never use write same" + * Release Tracking Bug + - LP: #1476333 + + [ Tim Gardner ] + + * Rebase to v4.1 + - LP: #1443371 + * [Config] Enable Apparmor + * [Config] CONFIG_OVERLAY_FS_V1=y + * [Config] DEFAULT_IOSCHED="deadline" for ppc64el + - LP: #1469829 + * [Config] CONFIG_VM86=n + - LP: #1473447 + * [Config] ACORN_PARTITION=n + - LP: #1453117 + + [ Timo Aaltonen ] + + * [Config] Disable CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT + - LP: #1473319 + + [ Upstream Kernel Changes ] + + * efi: efivar_create_sysfs_entry() should return negative error codes + * efi: Add esrt support + * x86, doc: Remove cmdline_size from list of fields to be filled in for + EFI handover + * efi/esrt: Fix some compiler warnings + * efi: dmi: List SMBIOS3 table before SMBIOS table + * efi: Add 'systab' information to Documentation/ABI + * ALSA: hda - restore the MIC FIXUP for some Dell machines + - LP: #1473560 + * mtd: powernv: Add powernv flash MTD abstraction driver + - LP: #1464560 + * powerpc/powernv: Expose OPAL APIs required by PRD interface + - LP: #1464560 + * powerpc/powernv: Add opal-prd channel + - LP: #1464560 + * powerpc/powernv: fix construction of opal PRD messages + - LP: #1464560 + * powerpc/include: Add opal-prd to installed uapi headers + - LP: #1464560 + * powerpc/powernv: Fix vma page prot flags in opal-prd driver + - LP: #1464560 + + -- Leann Ogasawara Mon, 20 Jul 2015 10:16:06 -0700 + +linux (4.0.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.0.0-1.2) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * [Config] enable CONFIG_OVERLAY_FS_V1 + + [ Tai Nguyen ] + + * SAUCE: power: reset: Add syscon reboot device node for APM X-Gene platform + - LP: #1463211 + + [ Tim Gardner ] + + * [Config] CONFIG_HIBERNATION=n for ppc64el + - LP: #1463836 + + -- Tim Gardner Fri, 12 Jun 2015 06:11:53 -0600 + +linux (4.0.0-1.1) wily; urgency=low + + [ Leann Ogasawara ] + + * Revert "md/raid0: fix bug with chunksize not a power of 2." + - LP: #1457510 + * powerpc/powernv: Check image loaded or not before calling flash + - LP: #1461553 + + [ Tim Gardner ] + + * [Config] armhf: CPUFREQ_DT=y + - LP: #1457781 + + [ Upstream Kernel Changes ] + + * rebase to v4.0.5 + - LP: #1429756 + - LP: #1452175 + - LP: #1454656 + - LP: #1447909 + - LP: #1446517 + - LP: #1428947 + - LP: #1410704 + - LP: #1412800 + - LP: #1400215 + - LP: #1411193 + - LP: #1412800 + - LP: #1408295 + - LP: #1436745 + + -- Leann Ogasawara Tue, 09 Jun 2015 05:58:46 -0700 + +linux (3.19.0-10.10) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] control -- make element ordering deterministic + * [Config] allow dracult to support initramfs as well + - LP: #1109029 + * [Packaging] generate live watchdog blacklists + - LP: #1432837 + + [ Leann Ogasawara ] + + * [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y + - LP: #1397860 + * rebase to v3.19.2 + + [ Upstream Kernel Changes ] + + * thinkpad_acpi: support new BIOS version string pattern + - LP: #1417915 + * arm64: Invalidate the TLB corresponding to intermediate page table + levels + - LP: #1432546 + * perf tools: Support parsing parameterized events + - LP: #1430341 + * perf tools: Extend format_alias() to include event parameters + - LP: #1430341 + * perf Documentation: Add event parameters + - LP: #1430341 + * perf tools: Document parameterized and symbolic events + - LP: #1430341 + * perf: provide sysfs_show for struct perf_pmu_events_attr + - LP: #1430341 + * perf: add PMU_EVENT_ATTR_STRING() helper + - LP: #1430341 + * perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper + - LP: #1430341 + * powerpc/perf/hv-24x7: parse catalog and populate sysfs with events + - LP: #1430341 + * powerpc/perf/{hv-gpci, hv-common}: generate requests with counters + annotated + - LP: #1430341 + * powerpc/perf/hv-gpci: add the remaining gpci requests + - LP: #1430341 + * powerpc/perf/hv-24x7: Document sysfs event description entries + - LP: #1430341 + * powerpc/iommu: Remove IOMMU device references via bus notifier + - LP: #1425202 + * powerpc/pseries: Fix endian problems with LE migration + - LP: #1428351 + * intel_idle: support additional Broadwell model + - LP: #1400970 + * tools/power turbostat: support additional Broadwell model + - LP: #1400970 + * KVM: x86: flush TLB when D bit is manually changed. + - LP: #1397860 + * Optimize TLB flush in kvm_mmu_slot_remove_write_access. + - LP: #1397860 + * KVM: Add generic support for dirty page logging + - LP: #1397860 + * KVM: x86: switch to kvm_get_dirty_log_protect + - LP: #1397860 + * KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for + log dirty + - LP: #1397860 + * KVM: MMU: Add mmu help functions to support PML + - LP: #1397860 + * KVM: MMU: Explicitly set D-bit for writable spte. + - LP: #1397860 + * KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access + - LP: #1397860 + * KVM: x86: Add new dirty logging kvm_x86_ops for PML + - LP: #1397860 + * KVM: VMX: Add PML support in VMX + - LP: #1397860 + * HID: multitouch: add support of clickpads + * HID: multitouch: Add support for button type usage + + [ Upstream Kernel Changes ] + + * rebase to v3.19.2 + - LP: #1428947 + + -- Andy Whitcroft Mon, 23 Mar 2015 15:28:16 +0000 + +linux (3.19.0-9.9) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1430930 + + [ Shachar Raindel ] + + * SAUCE: IB/core: Prevent integer overflow in ib_umem_get address + arithmetic + - LP: #1413741 + - CVE-2014-8159 + + -- Leann Ogasawara Wed, 11 Mar 2015 10:29:17 -0700 + +linux (3.19.0-8.8) vivid; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * rebase to stable v3.19.1 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + - LP: #1408833 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1429940 + + [ Upstream Kernel Changes ] + + * xen: correct bug in p2m list initialization + * net/mlx5_core: Fix configuration of log_uar_page_sz + - LP: #1419938 + * tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + - LP: #1420575 + * net/mlx4_core: Maintain a persistent memory for mlx4 device + - LP: #1422481 + * net/mlx4_core: Set device configuration data to be persistent across + reset + - LP: #1422481 + * net/mlx4_core: Refactor the catas flow to work per device + - LP: #1422481 + * net/mlx4_core: Enhance the catas flow to support device reset + - LP: #1422481 + * net/mlx4_core: Activate reset flow upon fatal command cases + - LP: #1422481 + * net/mlx4_core: Manage interface state for Reset flow cases + - LP: #1422481 + * net/mlx4_core: Handle AER flow properly + - LP: #1422481 + * net/mlx4_core: Enable device recovery flow with SRIOV + - LP: #1422481 + * net/mlx4_core: Reset flow activation upon SRIOV fatal command cases + - LP: #1422481 + * tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() + - LP: #1428111 + * rebase to v3.19.1 + - LP: #1410704 + - LP: #1411193 + - LP: #1400215 + + -- Leann Ogasawara Mon, 09 Mar 2015 10:08:29 -0700 + +linux (3.19.0-7.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1426013 + + [ Upstream Kernel Changes ] + + * x86/irq: Fix regression caused by commit b568b8601f05 + * cxl: Fix leaking interrupts if attach process fails + - LP: #1415102 + * cxl: Early return from cxl_handle_fault for a shut down context + - LP: #1415102 + * cxl: Disable AFU debug flag + - LP: #1415102 + * cxl: Disable SPAP register when freeing SPA + - LP: #1415102 + * cxl: remove redundant increment of hwirq + - LP: #1415102 + * cxl: Add tracepoints + - LP: #1415102 + * cxl: Update CXL ABI documentation + - LP: #1415102 + * cxl: Use image state defaults for reloading FPGA + - LP: #1415102 + * cxl: Add image control to sysfs + - LP: #1415102 + * cxl: Enable CAPP recovery + - LP: #1415102 + * cxl: Add ability to reset the card + - LP: #1415102 + * cxl: Fix device_node reference counting + - LP: #1415102 + * cxl: Export optional AFU configuration record in sysfs + - LP: #1415102 + * cxl: Fail AFU initialisation if an invalid configuration record is + found + - LP: #1415102 + * cxl: Add missing return statement after handling AFU errror + - LP: #1415102 + * powerpc/eeh: Introduce flag EEH_PE_REMOVED + - LP: #1415102 + * powerpc/eeh: Allow to set maximal frozen times + - LP: #1415102 + * HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + + -- Andy Whitcroft Thu, 26 Feb 2015 16:00:18 +0000 + +linux (3.19.0-6.6) vivid; urgency=low + + [ Andy Whitcroft ] + + * systemd -- fix hyper-v units to be non-forking + - LP: #1401525 + * [Config] move vbox modules into linux-image + * ubuntu: vbox -- update to 4.3.22-dfsg-1 + + [ Brad Figg ] + + * SAUCE: DEP8 test to run our regression tests + + [ Paolo Pisati ] + + * [Config] I2C_CHARDEV=y + - LP: #1417032 + + [ Upstream Kernel Changes ] + + * PCI: Fix infinite loop with ROM image of size 0 + * tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma + * Bluetooth: ath3k: workaround the compatibility issue with xHCI + controller + - LP: #1400215 + + -- Andy Whitcroft Thu, 19 Feb 2015 12:44:43 +0000 + +linux (3.19.0-5.5) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_FA_DUMP=y + - LP: #1415562 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 + * rebase to v3.19 final + + [ Chris J Arges ] + + * [Config] Add ibmvfc to d-i + - LP: #1416001 + * SAUCE: ext4: disable ext4_punch_hole for indirect filesystems + - LP: #1292234 + + [ Upstream Kernel Changes ] + + * rebase to v3.19 + + -- Andy Whitcroft Mon, 09 Feb 2015 10:41:11 +0000 + +linux (3.19.0-4.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] apply Kernel hacking >> Tracers config defaults + * hyper-v -- fix comment handing in /etc/network/interfaces + - LP: #1413020 + * rebase to v3.19-rc7 + * updateconfigs following rebase to v3.19-rc7 + + [ Ben Hutchings ] + + * SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop + - LP: #1413149 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc7 + + -- Andy Whitcroft Mon, 02 Feb 2015 17:03:07 +0200 + +linux (3.19.0-3.3) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Debian] arm64 -- build ubuntu drivers + - LP: #1411284 + * [Packaging] config-check -- add support for enforced annotations + * [Config] annotations -- switch to ENFORCED annotations + * [Packaging] config-check -- drop support for enforce file + * [Packaging] enforce -- drop empty enforce file + * rebase to v3.19-rc5 + * [Config] add modules removed due to tighter dependencies + * [Config] updateconfigs following rebase to v3.19-rc5 + * [Config] enforce CONFIG_FHANDLE=y + - LP: #1412543 + * [Packaging] hyper-v -- daemons now require -n for non-forking startup + - LP: #1408355 + * [Config] CONFIG_DEBUG_INFO_SPLIT=n + - LP: #1413646 + * [Config] apply Device Drivers >> Character devices >> IPMI top-level + message handler config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support >> + Special HID drivers config defaults + * [Config] apply Device Drivers >> Hardware Monitoring support config + defaults + * [Config] apply Device Drivers >> I2C support >> I2C support >> I2C + Hardware Bus support config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Analog to + digital converters config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Humidity + sensors config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Pressure + sensors config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support >> Media test drivers config defaults + * [Config] apply Device Drivers >> Multimedia support >> Media PCI + Adapters config defaults + * [Config] apply Device Drivers >> Multimedia support >> Remote + Controller devices config defaults + * [Config] apply Device Drivers >> Network device support >> Distributed + Switch Architecture drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config + defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pin controllers config defaults + * [Config] apply Device Drivers >> SPI support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> ALSA for SoC audio support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> FireWire sound devices config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> HD-Audio config defaults + * [Config] apply Device Drivers >> Staging drivers >> Lustre file system + client support config defaults + * [Config] apply Device Drivers >> Staging drivers >> Media staging + drivers config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Gadget Drivers >> USB functions configurable through configfs + config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Peripheral Controller config defaults + * [Config] apply Networking support >> NFC subsystem support >> Near + Field Communication (NFC) devices config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> Core Netfilter Configuration + >> Netfilter nf_tables support config defaults + * [Config] apply Networking support >> Networking options >> QoS and/or + fair queueing >> Actions config defaults + * [Config] apply Networking support >> Networking options >> TCP/IP + networking config defaults + * [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 + Networking Stack (mac80211) config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Keyboards config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IP: Netfilter Configuration + >> IPv4 NAT config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + >> IPv6 NAT config defaults + * [Config] apply Kernel hacking >> Kernel debugging config defaults + * [Config] apply General setup >> Timers subsystem >> Timer tick handling + config defaults + * SAUCE: arm64 -- psci tell the compiler which registers we are needing + values in + - LP: #1414002 + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N + (iwlwifi) config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply General setup >> CPU/Task time and stats accounting >> + Cputime accounting config defaults + * [Config] apply Device Drivers >> Mailbox Hardware Support config + defaults + * rebase to v3.19-rc6 + * [Config] updateconfigs following rebase to v3.19-rc6 + + [ Kamal Mostafa ] + + * [Packaging] force "dpkg-source -I -i" behavior + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_USB_OTG + - LP: #1411295 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support (fixes) + - LP: #1410480 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc5 + * rebase to v3.19-rc6 + + -- Andy Whitcroft Mon, 26 Jan 2015 11:37:39 +0000 + +linux (3.19.0-2.2) vivid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.19-rc4 + * [Config] updateconfigs following rebase to v3.19-rc4 + * [Packaging] install all dtb files + - LP: #1408002 + * [Config] switch on "all" dtbs + - LP: #1408002 + + [ Colin Ian King ] + + * SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new + timers + - LP: #1333569 + + [ Joseph Salisbury ] + + * [Config] Enable CONFIG_N_GSM as module. + - LP: #1404670 + + [ K. Y. Srinivasan ] + + * SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + - LP: #1406867 + + [ Steve McIntyre ] + + * SAUCE: efi: Expose underlying UEFI firmware platform size to userland + - LP: #1409750 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc4 + + -- Andy Whitcroft Tue, 13 Jan 2015 12:35:58 +0000 + +linux (3.19.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: AUFS -- aufs3-standalone.patch" + * Revert "SAUCE: AUFS -- aufs3-mmap.patch" + * Revert "SAUCE: AUFS -- aufs3-base.patch" + * ubuntu: AUFS3 -- follow switch to vfs_fallocate + * rebase to v3.19-rc1 + * rebase to v3.19-rc2 + * [Config] defaultconfigs following rebase to v3.19-rc2 + * ubuntu: aufs3 -- follow rename of d_child + * ubuntu: aufs3 -- follow switch to d_splice_alias + * ubuntu: aufs3 -- follow switch to get_unused_fd_flags() + * ubuntu: aufs3 -- follow rename for d_alias + * apparmor -- follow change to this_cpu_ptr + * disable module checks for rebase + * ubuntu: AUFS -- substrate: aufs3-base.patch + * ubuntu: AUFS -- substrate: aufs3-mmap.patch + * ubuntu: AUFS -- substrate: aufs3-standalone.patch + * ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c + * [Configs] updateconfigs following aufs update + * v3.19 series start + * rebase to v3.19-rc3 + * [Configs] updateconfigs following rebase to v3.19-rc3 + * [Packaging] uploadnum should be the remainder of the version + - LP: #1407755 + * [Packaging] handle dts directories + - LP: #1408004 + * [Config] follow move of arm64 dts' into vendor directories + + [ Upstream Kernel Changes ] + + * arm64: optimized copy_to_user and copy_from_user assembly code + - LP: #1400349 + * iommu/ipmmu-vmsa: follow flag switch to IOMMU_NOEXEC + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc1 + - LP: #1173681 + * rebase to v3.19-rc2 + * rebase to v3.19-rc3 + + -- Andy Whitcroft Tue, 06 Jan 2015 14:30:02 +0000 + +linux (3.18.0-7.8) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1401590 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot + - LP: #1362199 + * SAUCE: Revert: fix: only allow a single threaded process to ... + - LP: #1371310 + * SAUCE: (no-up) fix: bad unix_addr_fs macro + - LP: #1390223 + * SAUCE: (no-up) apparmor: add parameter to control whether policy + hashing is used + - LP: #1383886 + * [config] set apparmor config options + + [ Seth Forshee ] + + * [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n + - LP: #1398458 + + [ Upstream Kernel Changes ] + + * mfd: rtsx: Fix PM suspend for 5227 & 5249 + - LP: #1359052 + * mmc: sdhci-pci-o2micro: Fix Dell E5440 issue + - LP: #1346067 + + -- Leann Ogasawara Thu, 11 Dec 2014 08:36:36 -0800 + +linux (3.18.0-6.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code" + - LP: #1398596 + * rebase to v3.18 + + [ Chris J Arges ] + + * [Config] CONFIG_PCIEASPM_DEBUG=y + - LP: #1398544 + + [ Paolo Pisati ] + + * [Config] armhf: VIRTIO_[BALLOON|MMIO]=y + - LP: #1396470 + + [ Upstream Kernel Changes ] + + * drivers:scsi:storvsc: Fix a bug in handling ring buffer failures that + may result in I/O freeze + - LP: #1400289 + + [ Upstream Kernel Changes ] + + * rebase to v3.18 + + -- Leann Ogasawara Mon, 08 Dec 2014 09:15:17 -0800 + +linux (3.18.0-5.6) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1398109 + + [ Andy Whitcroft ] + + * [Config] CONFIG_SCSI_MQ_DEFAULT=n + - LP: #1397061 + * rebase to v3.18-rc7 + + [ Chris J Arges ] + + * [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp + ppc64el/generic + - LP: #1395855 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc7 + - LP: #1389497 + + -- Leann Ogasawara Mon, 01 Dec 2014 10:09:09 -0800 + +linux (3.18.0-4.5) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1395891 + + [ Andy Whitcroft ] + + * rebase to v3.18-rc6 + * [Config] update configs following rebase to v3.18-rc6 + * [Config] enable overlayfs v1 support + + [ Tim Gardner ] + + * rebase to v3.18-rc5 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support + - LP: #1395877 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc5 + * rebase to v3.18-rc6 + + -- Leann Ogasawara Mon, 24 Nov 2014 13:12:48 -0800 + +linux (3.18.0-3.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] CONFIG_AUFS_FS=n for FTBS" + * Revert "SAUCE: AUFS -- update to + dcf336a754c86d5ee1c3d50699fd75c586d037cb" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-standalone.patch" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-base.patch" + * [Config] amd64 is now the indep architecture + * [Debian] basic hook support + * SAUCE: AUFS -- aufs3-base.patch + * SAUCE: AUFS -- aufs3-mmap.patch + * SAUCE: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 + * [Config] updateconfigs following aufs3 update + * SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + * [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET + * [Config] Disable CONFIG_RCU_USER_QS on arm64 + + [ Tim Gardner ] + + * rebase to v3.18-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc4 + - LP: #1389497 + - LP: #1387128 + + -- Andy Whitcroft Tue, 11 Nov 2014 17:16:13 +0000 + +linux (3.18.0-2.2) vivid; urgency=low + + [ Tim Gardner ] + + * SAUCE: nft_reject_bridge.c: Include net/ip6_checksum.h + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc3 + + -- Tim Gardner Mon, 03 Nov 2014 06:09:06 -0700 + +linux (3.18.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el" + * [Config] tools -- only build common tools when enabled + * [Config] follow rename of DEB_BUILD_PROFILES + * [Config] linux-image-extra is additive to linux-image + - LP: #1375310 + * [Config] linux-image-extra postrm is not needed on purge + * [Config] enable cloud tools on i386 + - LP: #1367399 + + [ Marc Dietrich ] + + * [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs + + [ Paolo Pisati ] + + * [Config] armhf: REGULATOR_TWL4030=y + * [Config] armhf: disable JUMP_LABEL + - LP: #1378856 + + [ Tim Gardner ] + + * rebase to v3.17-rc2 + * updateconfigs + * [Config] CONFIG_NFC_ST21NFCB=n + * [Config] Added net/6lowpan/* to generic inclusion list + * [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR + * rebase to v3.17-rc3 + * rebase to v3.17-rc4 + * rebase to v3.17-rc5 + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y + * [Config] CONFIG_XMON=y + - LP: #1365655 + * [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el + - LP: #1362514 + * [Config] CONFIG_KVM_BOOK3S_64_HV=m + - LP: #1362514 + * [Config] CONFIG_DMA_CMA=n + - LP: #1362261 + * [Config] Add mpt3sas to d-i + - LP: #1368907 + * [Debian] set do_*_tools after stage1 or bootstrap is determined + - LP: #1370211 + * [Config] CONFIG_USB_OHCI_HCD_PCI=y + - LP: #1244176 + * rebase to v3.17-rc6 + * SAUCE: usbip: Update include path + * [Debian] usbip tools packaging + - LP: #898003 + * [Config] Enable usbip tools + - LP: #898003 + * [Config] CONFIG_CRASH_DUMP=n for powerpc-smp + - LP: #1363180 + * [Config] Correct annotation regarding CONFIG_DMA_CMA + - LP: #1362261 + * [Config] CONFIG_SND_HDA_INTEL=n for ppc64el + - LP: #1374438 + * [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el + - LP: #1374440 + * [Debian] Don't fail if a symlink already exists + * rebase to v3.17-rc7 + * [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el + - LP: #1374440 + * rebase to v3.17 + * rebase to v3.18-rc1 + * [Config] CONFIG_AUFS_FS=n for FTBS + * Enable vivid + * [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n + - LP: #1385510 + * rebase to v3.18-rc2 + * [Debian] Fix linux-doc dangling symlinks + - LP: #661306 + * CONFIG_MODULE_COMPRESS=n + * [Config] dropped scsi_tgt from generic inclusion list + * [Config] Added drivers/uio to generic inclusion list + * [Config] CONFIG_PATA_MACIO=y + - LP: #1378894 + * [Config] CONFIG_DRM_BOCHS=n + * [Debian] install usbipd + - LP: #898003 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc1 + - LP: #1316518 + - LP: #1371591 + - LP: #1357928 + + [ Upstream Kernel Changes ] + + * rebase to v3.17 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + - LP: #1358116 + - LP: #1350148 + - LP: #1334950 + - LP: #1329580 + - LP: #1329580 + - LP: #1329580 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + + -- Tim Gardner Tue, 26 Aug 2014 10:36:19 -0600 + +linux (3.17.0-0.0) utopic; urgency=medium + + * Empty entry + + -- Tim Gardner Tue, 26 Aug 2014 10:34:44 -0600 + +linux (3.16.0-11.16) utopic; urgency=low + + [ Mauricio Faria de Oliveira ] + + * [Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el + - LP: #1358920 + + [ Peter Zijlstra ] + + * SAUCE: (no-up) mmu_notifier: add call_srcu and sync function for listener to delay call and sync + - LP: #1361300 + + [ Tim Gardner ] + + * [Config] CONFIG_ZPOOL=y + - LP: #1360428 + * Release Tracking Bug + - LP: #1361308 + + [ Upstream Kernel Changes ] + + * Revert "net/mlx4_en: Fix bad use of dev_id" + - LP: #1347012 + * net/mlx4_en: Reduce memory consumption on kdump kernel + - LP: #1347012 + * net/mlx4_en: Fix mac_hash database inconsistency + - LP: #1347012 + * net/mlx4_en: Disable blueflame using ethtool private flags + - LP: #1347012 + * net/mlx4_en: current_mac isn't updated in port up + - LP: #1347012 + * net/mlx4_core: Use low memory profile on kdump kernel + - LP: #1347012 + * Drivers: scsi: storvsc: Change the limits to reflect the values on the host + - LP: #1347169 + * Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by the Host + - LP: #1347169 + * Drivers: scsi: storvsc: Filter commands based on the storage protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Implement a eh_timed_out handler + - LP: #1347169 + * drivers: scsi: storvsc: Set srb_flags in all cases + - LP: #1347169 + * drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure + - LP: #1347169 + * namespaces: Use task_lock and not rcu to protect nsproxy + - LP: #1328088 + * net: xgene: Check negative return value of xgene_enet_get_ring_size() + * mm/zbud: change zbud_alloc size type to size_t + - LP: #1360428 + * mm/zpool: implement common zpool api to zbud/zsmalloc + - LP: #1360428 + * mm/zpool: zbud/zsmalloc implement zpool + - LP: #1360428 + * mm/zpool: update zswap to use zpool + - LP: #1360428 + * ideapad-laptop: Change Lenovo Yoga 2 series rfkill handling + - LP: #1341296 + * iommu/amd: Fix for pasid initialization + - LP: #1361300 + * iommu/amd: Moving PPR fault flags macros definitions + - LP: #1361300 + * iommu/amd: Drop oprofile dependency + - LP: #1361300 + * iommu/amd: Fix typo in amd_iommu_v2 driver + - LP: #1361300 + * iommu/amd: Don't call mmu_notifer_unregister in __unbind_pasid + - LP: #1361300 + * iommu/amd: Don't free pasid_state in mn_release path + - LP: #1361300 + * iommu/amd: Get rid of __unbind_pasid + - LP: #1361300 + * iommu/amd: Drop pasid_state reference in ppr_notifer error path + - LP: #1361300 + * iommu/amd: Add pasid_state->invalid flag + - LP: #1361300 + * iommu/amd: Don't hold a reference to mm_struct + - LP: #1361300 + * iommu/amd: Don't hold a reference to task_struct + - LP: #1361300 + * iommu/amd: Don't call the inv_ctx_cb when pasid is not set up + - LP: #1361300 + * iommu/amd: Don't set pasid_state->mm to NULL in unbind_pasid + - LP: #1361300 + * iommu/amd: Remove change_pte mmu_notifier call-back + - LP: #1361300 + * iommu/amd: Fix device_state reference counting + - LP: #1361300 + * iommu/amd: Fix 2 typos in comments + - LP: #1361300 + + -- Tim Gardner Fri, 22 Aug 2014 08:45:54 -0400 + +linux (3.16.0-10.15) utopic; urgency=low + + [ dann frazier ] + + * [debian] Fix regression with ABI subversions and backport + + [ Feng Kan ] + + * SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read + modify write. + - LP: #1357527 + * SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code + - LP: #1358949 + + [ Stefan Bader ] + + * SAUCE: bcache: prevent crash on changing writeback_running + - LP: #1357295 + + [ Tim Gardner ] + + * [Config] CONFIG_XFRM_STATISTICS=y + * [Config] CONFIG_SECURITY_NETWORK_XFRM=y + * [Config] CONFIG_SENSORS_IBMPOWERNV=m + - LP: #1353005 + * Release Tracking Bug + - LP: #1359783 + + [ Upstream Kernel Changes ] + + * intel_idle: Broadwell support + - LP: #1256170 + * powerpc/book3s: Add basic infrastructure to handle HMI in Linux. + - LP: #1357108 + * powerpc/powernv: Invoke opal call to handle hmi. + - LP: #1357108 + * powerpc/book3s: handle HMIs for cpus in nap mode. + - LP: #1357108 + * powerpc/book3s: Fix endianess issue for HMI handling on napping cpus. + - LP: #1357108 + * powerpc: Add smp_mb() to arch_spin_is_locked() + - LP: #1358569 + * powerpc: Add smp_mb()s to arch_spin_unlock_wait() + - LP: #1358569 + * hwmon: (powerpc/powernv) hwmon driver for power, fan rpm, voltage and + temperature + - LP: #1353005 + * tools/testing/selftests/ptrace/peeksiginfo.c: add PAGE_SIZE definition + - LP: #1358855 + * printk: Add function to return log buffer address and size + - LP: #1359423 + * powerpc/powernv: Interface to register/unregister opal dump region + - LP: #1359423 + * bcache: fix crash on shutdown in passthrough mode + - LP: #1357295 + * bcache: fix uninterruptible sleep in writeback thread + - LP: #1357295 + + [ Vinayak Kale ] + + * SAUCE: (no-up) dt-bindings: Add Potenza PMU binding + - LP: #1357527 + * SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC + - LP: #1357527 + + -- Tim Gardner Fri, 15 Aug 2014 12:34:33 -0600 + +linux (3.16.0-9.14) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1357370 + + [ Serge Hallyn ] + + * SAUCE: Overlayfs: allow unprivileged mounts + - LP: #1357025 + + [ Upstream Kernel Changes ] + + * MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * dts: Add bindings for APM X-Gene SoC ethernet driver + * drivers: net: Add APM X-Gene SoC ethernet driver support. + * powerpc/thp: Add write barrier after updating the valid bit + - LP: #1357014 + * powerpc/thp: Don't recompute vsid and ssize in loop on invalidate + - LP: #1357014 + * powerpc/thp: Invalidate old 64K based hash page mapping before insert + of 4k pte + - LP: #1357014 + * powerpc/thp: Handle combo pages in invalidate + - LP: #1357014 + * powerpc/thp: Invalidate with vpn in loop + - LP: #1357014 + * powerpc/thp: Use ACCESS_ONCE when loading pmdp + - LP: #1357014 + * powerpc/mm: Use read barrier when creating real_pte + - LP: #1357014 + * powerpc/thp: Add tracepoints to track hugepage invalidate + - LP: #1357014 + * rebase to v3.16.1 + + -- Tim Gardner Thu, 14 Aug 2014 08:18:02 -0400 + +linux (3.16.0-8.13) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1356403 + + [ dann frazier ] + + * [debian] Allow for package revisions condusive for branching + + [ Upstream Kernel Changes ] + + * ahci_xgene: Fix the watermark threshold for the APM X-Gene SATA host controller driver. + - LP: #1350087 + * ahci_xgene: Use correct OOB tunning parameters for APM X-Gene SoC AHCI SATA Host controller driver. + - LP: #1350087 + * powerpc/powernv: Enable M64 aperatus for PHB3 + - LP: #1355469 + * powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE + - LP: #1352994 + * powerpc: Add machine_early_initcall() + - LP: #1352640 + * powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() + - LP: #1352640 + * powerpc/eeh: Avoid event on passed PE + - LP: #1352640 + * powerpc/eeh: EEH support for VFIO PCI device + - LP: #1352640 + * powerpc/eeh: sysfs entries lost + - LP: #1352640 + * powerpc/powernv: Fix IOMMU table for VFIO dev + - LP: #1352640 + * powerpc/eeh: Fetch IOMMU table in reliable way + - LP: #1352640 + * powerpc/eeh: Refactor EEH flag accessors + - LP: #1352640 + * powerpc/eeh: Selectively enable IO for error log + - LP: #1352640 + * powerpc/eeh: Reduce lines of log dump + - LP: #1352640 + * powerpc/eeh: Replace pr_warning() with pr_warn() + - LP: #1352640 + * powerpc/eeh: Make diag-data not endian dependent + - LP: #1352640 + * powerpc/eeh: Aux PE data for error log + - LP: #1352640 + * PCI: Support BAR sizes up to 128GB + - LP: #1352640 + * powerpc/powernv: Allow to freeze PE + - LP: #1352640 + * powerpc/powernv: Split ioda_eeh_get_state() + - LP: #1352640 + * powerpc/powernv: Handle compound PE + - LP: #1352640 + * powerpc/powernv: Handle compound PE for EEH + - LP: #1352640 + * powerpc/powernv: Handle compound PE in config accessors + - LP: #1352640 + * mnt: Only change user settable mount flags in remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into do_remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Correct permission checks in do_remount + - LP: #1356323 + - CVE-2014-5207 + * mnt: Change the default remount atime from relatime to the existing value + - LP: #1356323 + - CVE-2014-5207 + + -- Tim Gardner Sun, 10 Aug 2014 09:10:51 -0600 + +linux (3.16.0-7.12) utopic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.16 final + * [Config] d-i -- add virtio_scsi to virtio-modules + - LP: #1342000 + + [ dann frazier ] + + * [Packaging] Fix 'printchanges' to work with versions containing '+' + + [ Tim Gardner ] + + * [Config] CONFIG_MICROCODE=y + - LP: #1084373 + * [Config] CONFIG_CONTEXT_TRACKING_FORCE=n + - LP: #1349028 + * [Config] Add hv_balloon to d-i virtio-modules + - LP: #1292216 + * Release Tracking Bug + - LP: #1354530 + + [ Upstream Kernel Changes ] + + * rebase to v3.16 + + -- Tim Gardner Tue, 29 Jul 2014 09:55:15 -0400 + +linux (3.16.0-6.11) utopic; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m + * [Config] armhf: KEYBOARD_IMX=m + * [Config] armhf: build cubox & imx6 DTBs + * [Config] armhf: RTC_DRV_PCF8523=y + + [ Tim Gardner ] + + * [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y + - LP: #1344405 + * [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y + - LP: #1343109 + * Release Tracking Bug + - LP: #1349196 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc7 + + -- Tim Gardner Thu, 24 Jul 2014 09:08:55 -0400 + +linux (3.16.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1346298 + * [Config] CONFIG_GPIO_SYSFS=y + - LP: #1342153 + * rebase to v3.16-rc6 + + [ Paolo Pisati ] + + * [Config] enable ARCH_MVEBU* + * [Config] AHCI_MVEBU=m + * [Config] ARMADA_THERMAL=y + * [Config] ARM_ARMADA_370_XP_CPUIDLE=y + * [Config] CRYPTO_DEV_MV_CESA=m + * [Config] I2C_MV64XXX=m + * [Config] MMC_MVSDIO=m + * [Config] MMC_SDHCI_DOVE=m + * [Config] MTD_NAND_ORION=m + * [Config] MTD_NAND_PXA3xx=m + * [Config] MVNETA=m + * [Config] MV_XOR=y + * [Config] ORION_WATCHDOG=m + * [Config] PCI_MVEBU=y + * [Config] RTC_DRV_MV=y + * [Config] SND_KIRKWOOD_SOC*=m + * [Config] SPI_ORION=m + * [Config] USB_XHCI_MVEBU=m + * [Config] armhf: build all Armada and Dove DTBs + * [Config] armhf: SERIAL_8250_DW=y + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc6 + + -- Tim Gardner Tue, 15 Jul 2014 07:49:42 -0400 + +linux (3.16.0-4.9) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1341543 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc5 + + -- Tim Gardner Sun, 13 Jul 2014 21:30:27 -0400 + +linux (3.16.0-3.8) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1340091 + + -- Tim Gardner Thu, 10 Jul 2014 10:06:47 +0100 + +linux (3.16.0-2.7) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- avoid aufs3-mmap.patch include hell for arm64 + ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + + -- Tim Gardner Wed, 09 Jul 2014 16:16:28 +0100 + +linux (3.16.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: aufs3 -- (no-up) aufs3-mmap.patch" + Fixes FTBS. + + -- Tim Gardner Tue, 08 Jul 2014 17:29:26 +0100 + +linux (3.16.0-2.5) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu -- fix basic format for ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: aufs3 -- update update scripting + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS -- update to dcf336a754c86d5ee1c3d50699fd75c586d037cb + * [Configs] AUFS configs + * ubuntu: aufs3 -- reenable + + [ Tim Gardner ] + + * CONFIG_LATENCYTOP=n + + -- Tim Gardner Tue, 08 Jul 2014 15:27:35 +0100 + +linux (3.16.0-2.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] flip VIRTIO*=y + * [Config] commonise CONFIG_SWIOTLB=y + * [Config] apply Bus options (PCI etc.) >> PCI support config defaults + * [Config] apply Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) + config defaults + * [Config] apply Device Drivers >> Block devices config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> DMA Engine support config defaults + * [Config] apply Device Drivers >> EDAC (Error Detection And Correction) + reporting config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Console display + driver support config defaults + * [Config] apply Device Drivers >> IIO staging drivers >> Accelerometers + config defaults + * [Config] apply Device Drivers >> IOMMU Hardware Support config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Miscellaneous devices config + defaults + * [Config] apply Device Drivers >> Input device support >> Hardware I/O + ports config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> Hardware Spinlock drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support config defaults + * [Config] apply Security options config defaults + * [Config] apply Networking options >> Network packet filtering framework + (Netfilter) >> Core Netfilter Configuration config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Power management and ACPI options >> CPU Frequency + scaling config defaults + * [Config] apply Processor type and features config defaults + * [Config] apply Partition Types config defaults + * [Config] apply Power management and ACPI options config defaults + * [Config] apply Device Drivers >> InfiniBand support config defaults + * [Config] apply Device Drivers >> Misc devices config defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Ethernet + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> PHY Device + support and infrastructure config defaults + * [Config] apply File systems >> Network File Systems config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> Memory Technology Device (MTD) support + >> NAND Device Support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Ralink driver support config defaults + * [Config] apply Device Drivers >> Staging drivers config defaults + * [Config] apply Cryptographic API >> Hardware crypto devices config + defaults + * [Config] apply Device Drivers >> Macintosh device drivers config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + config defaults + * [Config] apply Device Drivers >> PPS support config defaults + * [Config] apply Device Drivers >> Sound card support config defaults + * [Config] apply Networking support >> RF switch subsystem support config + defaults + * [Config] apply Library routines config defaults + * [Config] apply Device Drivers >> CODEC drivers config defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Kernel hacking >> Tracers config defaults + * [Config] apply Kernel hacking >> Runtime Testing config defaults + * [Config] apply Kernel hacking >> Architecture: powerpc config defaults + * [Config] apply Device Drivers >> USB support config defaults + * [Config] apply Device Drivers >> Power supply class support config + defaults + * [Config] apply Device Drivers >> USB Network Adapters config defaults + * [Config] apply General setup >> IRQ subsystem config defaults + * [Config] apply General setup config defaults + * [Config] apply File systems >> Miscellaneous filesystems config + defaults + * [Config] apply File systems config defaults + * [Config] apply Device Drivers >> Userspace I/O drivers config defaults + * [Config] apply Device Drivers >> Virtio drivers config defaults + * [Config] apply Device Drivers >> USB Peripheral Controller config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI Transports config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> Serial ATA and Parallel ATA drivers + (libata) config defaults + * [Config] apply Device Drivers >> SoC Audio for Freescale CPUs config + defaults + * [Config] apply Device Drivers >> Voltage and Current Regulator Support + config defaults + * [Config] apply Device Drivers >> USB Physical Layer drivers config + defaults + * [Config] apply Device Drivers >> Watchdog Timer Support config defaults + * [Config] powerpc-powerpc-e500mc FTBFS -- CONFIG_CRASH_DUMP=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_IMA=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_HIBERNATION=n + CONFIG_HOTPLUG_CPU=n + * [Config] ppc64el-generic FTBFS -- CONFIG_LUSTRE_FS=n + * [Config] drivers/message/fusion needs scsi_transport_spi in virtual + * [Config] drivers/acpi/acpi_ipmi.ko needs + drivers/char/ipmi/ipmi_msghandler.ko in virtual + * [Config] armhf-* FTBFS -- CONFIG_STACK_TRACER=n + CONFIG_FUNCTION_TRACER=n + * [Config] ignore modules changing following major config changes + + [ Tim Gardner ] + + * rebase to v3.16-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc4 + - LP: #1297581 + + -- Andy Whitcroft Thu, 03 Jul 2014 11:00:43 +0100 + +linux (3.16.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Disable do_tools_perf for FTBS" + * SAUCE: fix perf_regs definitions for arm64 + + [ Paolo Pisati ] + + * [Config] armhf: ARCH_EXYNOS5* support + * [Config] armhf: CPU_IDLE=y and ARM_EXYNOS_CPUIDLE=y + * [Config] armhf: EXYNOS_THERMAL=y + * [Config] armhf: EXYNOS_IOMMU=y + * [Config] armhf: EXYNOS_ADC=m + * [Config] armhf: EXYNOS_I2C_EXYNOS5=m + * [Config] armhf: MMC_SDHCI_S3C=m + * [Config] armhf: PCI_EXYNOS=y + * [Config] armhf: PHY_EXYNOS5250_SATA=y + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y && SAMSUNG_USBPHY=y + * [Config] armhf: PWM_SAMSUNG=m + * [Config] armhf: RTC_DRV_S3C=y + * [Config] armhf: S3C2410_WATCHDOG=m + * [Config] armhf: MMC_DW_EXYNOS=m + * [Config] armhf: SERIAL_SAMSUNG=y + * [Config] armhf: SND_SOC_SAMSUNG=m + * [Config] armhf: SPI_S3C64XX=m + * [Config] armhf: EXYNOS_VIDEO=y and VIDEO_SAMSUNG*=m + * [Config] armhf: FB_S3C=m + * [Config] armhf: build all Exynos 5 DTBs + * [Config] armhf: disable CPUFREQ_EXYNOS + + [ Tim Gardner ] + + * rebase to v3.16-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc3 + - LP: #1331915 + + -- Tim Gardner Tue, 24 Jun 2014 08:58:09 -0600 + +linux (3.16.0-0.2) utopic; urgency=low + + [ Tim Gardner ] + + * Revert "SAUCE: intel_pstate -- toggle default to disable" + - LP: #1333322 + * CONFIG_BOOKE_WDT=y + * Disable do_tools_perf for FTBS (just until I can figure it out) + + -- Tim Gardner Mon, 23 Jun 2014 13:37:53 -0600 + +linux (3.16.0-0.1) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1333265 + + [ Andy Whitcroft ] + + * [Config] cloud-tools -- add systemd units + - LP: #1329027 + + [ dann frazier ] + + * [Config] CONFIG_RTC_DRV_XGENE=y for arm64 + * [Config] CONFIG_NET_XGENE=m for arm64 + * [Config] Restrict CONFIG_POWER_RESET_SYSCON to arm64 only + + [ Feng Kan ] + + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + * SAUCE: (no-up) Add documentation for generic SYSCON reboot driver. + * SAUCE: (no-up) Select reboot driver for X-Gene platform. + + [ Iyappan Subramanian ] + + * SAUCE: (no-up) MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) drivers: net: Add APM X-Gene SoC ethernet driver support. + + [ Tim Gardner ] + + * updateconfigs + * Fix arm64 crypto Makefile + * [Config] CONFIG_BOOKE_WDT=n for FTBS + * [Debian] Add UTS_UBUNTU_RELEASE_ABI to utsrelease.h + - LP: #1327619 + * Disabled powerpc64-emb for FTBS + * [Config] CONFIG_DRM_TEGRA=m + * [Config] CONFIG_CMA_SIZE_MBYTES=64 + * rebase to v3.16-rc2 + * Clean up generic.inclusion-list warnings + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc2 + - LP: #1328587 + - LP: #1319291 + - LP: #1310512 + - LP: #1310512 + - LP: #1305480 + + -- Tim Gardner Thu, 12 Jun 2014 12:26:09 +0000 + +linux (3.15.0-6.11) utopic; urgency=low + + [ Adam Conrad ] + + * Enable building the sata-modules udeb on ppc64el. + - LP: #1323980 + * [Packaging] Set bootloader and loader on ppc64el to grub + + [ Adam Lee ] + + * SAUCE: (no-up) rtlwifi: rtl8723be: disable MSI interrupts mode + - LP: #1310512, #1320070 + + [ Alex Hung ] + + * SAUCE: (no-up) dell-led: add mic mute led interface + - LP: #1308297 + + [ Andy Whitcroft ] + + * [Config] d-i -- add hyperv_keyboard to serial-modules udeb + - LP: #1285434 + * [Config] tools -- enable cpupower on ppc64el + * [Config] ppc64el -- enable perf tools + * [Config] powerpc -- enable perf tools + * [Config] ppc64el -- reduce MAX_ORDER with 64k pages + * [Config] arm64 -- enable tools + - LP: #1326050 + * [Config] switch hyper-keyboard to virtual + - LP: #1325306 + * [Config] fix up Breaks/Replaces on linux-cloud-tools-common to fix + upgrades + * SAUCE: kvm: BIOS disabled kvm support should be a warning + - LP: #1300247 + * SAUCE: nouveau: missing outputs should be warnings + - LP: #1300244 + * [Config] d-i -- add nvme devices to block-modules udeb + - LP: #1303710 + + [ Anton Blanchard ] + + * SAUCE: (no-up) powerpc: 64bit sendfile is capped at 2GB + - LP: #1328230 + + [ Colin Ian King ] + + * SAUCE: intel_pstate: inform user that thermald is worth considering + + [ Dave Chiluk ] + + * [Config] Enable CONFIG_IP_VS_IPV6=y + - LP: #1300739 + + [ Paolo Pisati ] + + * [Config] build vexpress a9 dtb + - LP: #1303657 + + [ Tetsuo Handa ] + + * SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1329045 + * [Debian] Treat vdso install as an environment variable + - LP: #1325713 + * [Config] Treat vdso install as an environment variable + - LP: #1325713 + * [config] Set IPMI suppoort default to "y" + * [Config] powerpc -- CONFIG_SCSI_IBMVSCSI=y + * [Config] CONFIG_RT_GROUP_SCHED=n + - LP: #1284731 + * [Config] ppc64el -- switch to 64K system pages + * [Config] CONFIG_MICROCODE_EARLY=y + * [Config] SND_DAVINCI_SOC && SND_AM33XX_SOC_EVM =m + * [Config] armhf: DRM_TILCDC=m + * SAUCE: (no-up) mei_me: Add module parameter to disable MSI + * [Config] arm64: KVM=y + * [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + * [Config] armhf: generic: disable CPU_IDLE + * [Config] armhf: CPU_FREQ=y + * [Config] Add new mlx modules to d-i + * [Config] Added Muti-Arch support for linux-headers-PKGVER-ABINUM, linux-tools-common, and linux-cloud-tools-common + - LP: #1295112 + * [Config] CONFIG_EXYNOS_ADC=n, CONFIG_HW_RANDOM_EXYNOS=n, CONFIG_MMC_DW_EXYNOS=n, CONFIG_USB_DWC3_EXYNOS=n + - LP: #1294353 + * [Config] CONFIG_ABX500_CORE=y for ppc64el + * [Config] CONFIG_ALX=m for powerpc + * [Config] CONFIG_ACENIC_OMIT_TIGON_I=n for ppc64el + * [Config] CONFIG_ACORN_PARTITION_*=n for ppc64el + * [Config] CONFIG_ANDROID=n for powerpc + * [Config] CONFIG_ASYNC_RAID6_TEST=m for ppc64el + * [Config] CONFIG_BIG_KEYS=y for ppc64el + * [Config] CONFIG_BSD_PROCESS_ACCT=y for ppc64el + * rebase to v3.15 + * [Config] CONFIG_PHY_XGENE=y + * [Config] CONFIG_MLX4_DEBUG=y + - LP: #1328256 + * [Config] CONFIG_POWERNV_CPUFREQ=y for powerpc, ppc64el + - LP: #1324571 + * [Config] CONFIG_BLK_DEV_SR_VENDOR=n for ppc64el + * [Config] CONFIG_CFG80211=m for ppc64el + * [Config] CONFIG_CHARGER_BQ24190=m for powerpc + * [Config] CONFIG_CHARGER_BQ24735=m for powerpc + * [Config] CONFIG_EXPERT=y for ppc64el + * [Config] CONFIG_ATA_SFF=y on ppc64el + * [Config] CONFIG_ATA_GENERIC=y for ppc64el, powerpc + * [Config] CONFIG_CHR_DEV_ST=m for ppc64el + * [Config] CONFIG_CHECKPOINT_RESTORE=y for ppc64el + * [Config] CONFIG_CHELSIO_T1_1G=y for ppc64el + * [Config] CONFIG_CHR_DEV_OSST=m for ppc64el + * [Config] CONFIG_CHR_DEV_SCH=m for ppc64el + * [Config] CONFIG_CPU_FREQ_STAT=y for powerpc + * [Config] CONFIG_DDR=y for ppc64el + * [Config] CONFIG_DEBUG_BUGVERBOSE=y for powerpc + * [Config] CONFIG_E100=m, CONFIG_E1000=m, CONFIG_E1000E=m for ppc64el + * [Config] CONFIG_EZX_PCAP=n for all arches + * [Config] CONFIG_DYNAMIC_DEBUG=y for powerpc + * [Config] CONFIG_ENABLE_MUST_CHECK=n for ppc64el + * [Config] CONFIG_ENABLE_WARN_DEPRECATED=n for ppc64el + * [Config] CONFIG_FB_3DFX=m for all arches + * [Config] CONFIG_FB_MATROX=m for ppc64el + * [Config] CONFIG_FB_RADEON=m for ppc64el + * [Config] CONFIG_FB_SAVAGE_I2C=y for all arches + * [Config] CONFIG_FIREWIRE=m for ppc64el + * [Config] CONFIG_FTR_FIXUP_SELFTEST=n for ppc64el + * [Config] CONFIG_HAMRADIO=y for ppc64el + * [Config] CONFIG_I2C_CHARDEV=m for ppc64el + * [Config] CONFIG_I2C_MUX=m for ppc64el + * [Config] CONFIG_I2C_STUB=m for ppc64el + * [Config] CONFIG_I2O=m for ppc64el + * [Config] CONFIG_INET_XFRM_MODE_BEET=m, CONFIG_INET_XFRM_MODE_TRANSPORT=m, CONFIG_INET_XFRM_MODE_TUNNEL=m for ppc64el + * [Config] CONFIG_INFINIBAND_IPOIB_DEBUG=n, CONFIG_INFINIBAND_MTHCA_DEBUG=n for ppc64el + * [Config] CONFIG_INFINIBAND_NES=m, CONFIG_INFINIBAND_OCRDMA=m, CONFIG_INFINIBAND_QIB=m for ppc64el + * [Config] CONFIG_INPUT_FF_MEMLESS=m for ppc64el + * [Config] CONFIG_INTERVAL_TREE_TEST=m for ppc64el + * [Config] CONFIG_IPACK_BUS=m for ppc64el + * [Config] CONFIG_ISDN=y for ppc64el + * [Config] CONFIG_ISO9660_FS=m for ppc64el + * [Config] CONFIG_KGDB=y for ppc64el + * [Config] CONFIG_KVM_GUEST=y for ppc64el + * [Config] CONFIG_L2TP_V3=y for powerpc + * [Config] CONFIG_MAILBOX=y for ppc64el + * [Config] CONFIG_MD_LINEAR=m, CONFIG_MD_RAID0=m, CONFIG_MD_RAID1=m for ppc64el + * [Config] CONFIG_MEDIA_SUPPORT=m for ppc64el + * [Config] CONFIG_MEMORY=y for ppc64el + * [Config] CONFIG_MEMSTICK=m for ppc64el + * [Config] CONFIG_MFD_SM501_GPIO=n for ppc64el + * [Config] CONFIG_MMC_BLOCK=m for ppc64el + * [Config] CONFIG_MOUSE_PS2=m for ppc64el + * [Config] CONFIG_NET_9P=m for ppc64el + * [Config] CONFIG_MSDOS_FS=m for ppc64el + * [Config] CONFIG_MSI_BITMAP_SELFTEST=n for ppc64el + * [Config] CONFIG_MTD=m for arm64 + * [Config] CONFIG_NETCONSOLE=m for ppc64el + * [Config] CONFIG_NETFILTER_XT_TARGET_NOTRACK=m for ppc64el + * [Config] CONFIG_NET_IPIP=m for ppc64el + * [Config] CONFIG_NET_TEAM=m for all arches + * [Config] CONFIG_NFC=m for ppc64el + * [Config] CONFIG_NL80211_TESTMODE=n for all arches + * [Config] CONFIG_NLS_CODEPAGE_437=y for powerpc + * [Config] CONFIG_NLS_ASCII=m, CONFIG_NLS_ISO8859_1=m, CONFIG_NLS_UTF8=m for ppc64el + * [Config] CONFIG_NOP_USB_XCEIV=m for ppc64el + * [Config] CONFIG_NOTIFIER_ERROR_INJECTION=m for ppc64el + * [Config] CONFIG_OPROFILE=m for ppc64el + * [Config] CONFIG_PARPORT_1284=y for ppc64el + * [Config] CONFIG_PARPORT_AX88796=m, CONFIG_PARPORT_PC_FIFO=y, CONFIG_PARPORT_SERIAL=m for ppc64el + * [Config] CONFIG_8723AU_P2P=n + * [Config] CONFIG_PCI_IOV=y, CONFIG_PCI_PASID=y, CONFIG_PCI_PRI=y, CONFIG_PCI_REALLOC_ENABLE_AUTO=y, CONFIG_PCI_STUB=m for ppc64el + * [Config] CONFIG_PCNET32=m for ppc64el + * [Config] CONFIG_SCSI_DH_EMC=m for ppc64el + * [Config] CONFIG_SCSI_DH_HP_SW=m for ppc64el + * [Config] CONFIG_SCSI_FC_ATTRS=m for ppc64el + * [Config] CONFIG_SCSI_IPR=m for ppc64el + * [Config] CONFIG_SCSI_LOGGING=y for ppc64el + * [Config] CONFIG_SCSI_OSD_INITIATOR=m for ppc64el + * [Config] CONFIG_SCSI_SCAN_ASYNC=y for ppc64el + * [Config] CONFIG_SCSI_SYM53C8XX_2=m for ppc64el + * [Config] CONFIG_XILINX_LL_TEMAC=m for powerpc + * [Config] CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y for ppc64el + * [Config] CONFIG_WLAN=y for arm64 + * [Config] CONFIG_VORTEX=m for ppc64el + * [Config] CONFIG_WIMAX=m for ppc64el + * [Config] CONFIG_WATCHDOG=y for ppc64el + * [Config] CONFIG_VIRT_DRIVERS=y for ppc64el + * [Config] CONFIG_VERSION_SIGNATURE="" for powerpc64-emb + * [Config] CONFIG_UWB=m for ppc64el + * [Config] CONFIG_USB_STORAGE=y + * [Config] CONFIG_SATA_AHCI_PLATFORM=y for armhf + * [Config] CONFIG_HID_RMI=m + * [Config] CONFIG_HVC_DCC=n + - LP: #1303657 + + [ Upstream Kernel Changes ] + + * mm/numa: Remove BUG_ON() in __handle_mm_fault() + - LP: #1323165 + * powerpc/powernv: Add calls to support little endian host + - LP: #1327400 + * HID: rmi: introduce RMI driver for Synaptics touchpads + * HID: rmi: do not stop the device at the end of probe + * HID: rmi: check for the existence of some optional queries before reading query 12 + * HID: rmi: do not fetch more than 16 bytes in a query + * HID: rmi: fix wrong struct field name + * HID: rmi: fix masks for x and w_x data + * HID: rmi: do not handle touchscreens through hid-rmi + * ALSA: pcm: 'BUG:' message unnecessarily triggers kerneloops + - LP: #1305480 + * rebase to v3.15 + + -- Tim Gardner Tue, 03 Jun 2014 17:02:49 +0000 + +linux (3.15.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1325596 + * [Config] CONFIG_POWERNV_CPUFREQ=y for ppc64el + * rebase to v3.15-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc8 + + -- Tim Gardner Mon, 02 Jun 2014 12:59:34 +0000 + +linux (3.15.0-4.9) utopic; urgency=low + + * no change rebuild to fix embeded debhelper. + + -- Andy Whitcroft Thu, 29 May 2014 12:41:58 +0100 + +linux (3.15.0-4.8) utopic; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1324107 + * [Config] enable SECURITY_APPARMOR_UNCONFINED_INIT + + [ Javier Martinez Canillas ] + + * SAUCE: (no-up) apparmor: fix bug that constantly spam the console + - LP: #1323526 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - alpha6 snapshot + - LP: #1323528 + * SAUCE: (no-up) apparmor: fix apparmor spams log with warning message + - LP: #1308761 + * SAUCE: (no-up) apparmor: fix refcount bug in apparmor pivotroot + - LP: #1308765 + * SAUCE: (no-up): apparmor: fix apparmor refcount bug in apparmor_kill + - LP: #1308764 + * SAUCE: (no-up): apparmor: use custom write_is_locked macro + - LP: #1323530 + + [ Kamal Mostafa ] + + * [Config] add debian/gbp.conf + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m for ppc64el + - LP: #1323980 + + -- Andy Whitcroft Wed, 28 May 2014 12:47:17 +0100 + +linux (3.15.0-3.7) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1323189 + + [ Andy Whitcroft ] + + * [Config] autopkgtest -- need fakeroot for tests + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc7 + + -- Tim Gardner Mon, 26 May 2014 08:12:50 +0200 + +linux (3.15.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] remove the kernel-image firmware list on clean + + [ Martin Pitt ] + + * [Config] autopkgtest -- switch to significantly faster rebuild + + [ Stefan Bader ] + + * [Config]: Add missing modules to inclusion list + + [ Tim Gardner ] + + * [debian] Dynamically generate the kernel-image udebs firmware list + * [d-i] firmware/kernel-image is generated + * rebase to v3.15-rc6 + * Release Tracking Bug + - LP: #1322251 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc6 + - LP: #1297581 + + -- Tim Gardner Wed, 21 May 2014 10:51:29 -0700 + +linux (3.15.0-1.5) utopic; urgency=low + + [ Tim Gardner ] + + * [Config] Add apm-mustang.dtb to kernel-image udeb + + -- Tim Gardner Mon, 19 May 2014 14:47:42 -0700 + +linux (3.15.0-1.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: (no-up) hv -- bodge hv_kvp_daemon so it can use the + local linux/hyperv.h" + * [Packaging] tools -- hv tools build correctly against the built headers + * [Packaging] cloud-tools -- add the hv_fcopy_daemon to the package + * cloud-tools -- pull in init scripts for Hyper-V daemons + * cloud-tools -- detect Hyper-V VM to avoid starting + * cloud-tools -- update IF_NAME to DEVICE in hv_* scripts + - LP: #1295401 + * [Config] cloud-tools: reenable cloud-tools + + -- Andy Whitcroft Sun, 18 May 2014 19:21:04 +0100 + +linux (3.15.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] ppc64el is a powerpc kernel arch and needs its quirks + - LP: #1318848 + + [ Ben Collins ] + + * [Config] Switch to grub-ieee1275 as recommended on book3e systems + - LP: #1318629 + + [ Tim Gardner ] + + * [Config] CONFIG_FSL_PAMU=n + - LP: #1311738 + * Release Tracking Bug + - LP: #1320239 + + -- Tim Gardner Fri, 16 May 2014 07:37:07 -0600 + +linux (3.15.0-1.2) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1318171 + * Add rpcsec_gss_krb5 to generic inclusion list + - LP: #769527 + * rebase to v3.15-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc5 + - LP: #1297581 + + -- Tim Gardner Tue, 06 May 2014 15:20:10 -0500 + +linux (3.15.0-0.1) utopic; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc4 + - LP: #1297581 + - LP: #1297581 + - LP: #1305133 + - LP: #1297581 + - LP: #1297581 + - LP: #871808 + - LP: #1260303 + - LP: #1268468 + - LP: #1248116 + - LP: #1211920 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + - LP: #1268468 + + -- Tim Gardner Fri, 07 Feb 2014 09:35:13 -0700 + +linux (3.15.0-0.0) utopic; urgency=low + + * Initial version for 3.15. + + -- Andy Whitcroft Fri, 02 May 2014 15:06:39 +0100 + +linux (3.13.0-8.27) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: Add config option to disable new apparmor 3 semantics + -LP: #1270215 + + [ Tim Gardner ] + + * [debian] Fix indep_hdrs_pkg_name + - LP: #1134441 + * Update lttng to 00808267d3ba7cdcddfed7bec7e62a40463c1307 Version 2.4.0-rc3 + * Enabled lttng build + * Don't build lttng for armhf + lttng hates gcc-4.8 for armhf + * Release Tracking Bug + - LP: #1277309 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.2 + - LP: #1260303 + - LP: #1260303 + - LP: #1268468 + + -- Tim Gardner Thu, 06 Feb 2014 09:25:51 -0700 + +linux (3.13.0-7.26) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: apparmor: fix uninitialized lsm_audit membe + - LP: #1268727 + * Add config option to optionally enable new apparmor 3 semantics + + [ Tim Gardner ] + + * [Config] Add lowlatency to getabis + * [Config] CONFIG_SECURITY_APPARMOR_AA3_SEMANTICS=y + - LP: #1270215 + * Release Tracking Bug + - LP: #1276810 + + [ Upstream Kernel Changes ] + + * x86, x32: Correct invalid use of user timespec in the kernel + - LP: #1274349 + - CVE-2014-0038 + + -- Tim Gardner Wed, 05 Feb 2014 15:49:44 -0500 + +linux (3.13.0-7.25) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: fix fmd headers" + * SAUCE: fix fmd headers + + -- Andy Whitcroft Tue, 04 Feb 2014 09:36:09 +0000 + +linux (3.13.0-7.24) trusty; urgency=low + + [ Stefan Bader ] + + * [Config] Make vmwgfx driver enable the framebuffer device + + [ Tim Gardner ] + + * rebase to v3.13.1 + * [Config] CONFIG_NFS_FS=m for ppc64el + * [Config] CONFIG_X86_SYSFB=n + https://lists.ubuntu.com/archives/kernel-team/2014-February/038166.html + * Release Tracking Bug + - LP: #1275898 + + [ Upstream Kernel Changes ] + + * i2c: piix4: Add support for AMD ML and CZ SMBus changes + - LP: #1272525 + * i2c: piix4: Use different message for AMD Auxiliary SMBus Controller + - LP: #1272525 + * mm: ignore VM_SOFTDIRTY on VMA merging + - LP: #1274917 + * drm/radeon: disable dpm on BTC + - LP: #1266984 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.1 + + -- Tim Gardner Thu, 30 Jan 2014 15:24:48 +0000 + +linux (3.13.0-6.23) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix up architecture for linux-tools + + -- Andy Whitcroft Thu, 30 Jan 2014 09:00:41 +0000 + +linux (3.13.0-6.22) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] limit linux-udebs- to matching arch + * [Config] powerpc -- disable perf to fix FTBFS + * [Config] ppc64el -- fix up missing udebs + + -- Andy Whitcroft Wed, 29 Jan 2014 16:00:28 +0000 + +linux (3.13.0-6.21) trusty; urgency=low + + [ Andy Fleming ] + + * SAUCE: net: Add support for handling queueing in hardware + * SAUCE: of_mdio: Add of_phy_attach function + * SAUCE: phylib: Add generic 10G driver + * SAUCE: phylib: Support attaching to gen10g_driver + * SAUCE: phylib: Add Clause 45 read/write functions + + [ Andy Whitcroft ] + + * SAUCE: fix fmd headers + * [Packaging] lowlatency -- merge out of tree flavours + * SAUCE: allow IRQs to be irq-threaded by default via config + * [Config]: enable CONFIG_IRQ_FORCED_THREADING_DEFAULT for lowlatency + * [Config] powerpc -- fix up Build-depends: + * Release Tracking Bug + - LP: #1273747 + + [ Ben Collins ] + + * SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit + ptr/64-bit rsrcs + * SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" + * SAUCE: Fixup freescale usb phy driver to work on ppc64 + * SAUCE: xgmac_mdio: Silence read errors + * SAUCE: Provide booke stub for kvmppc_is_bigendian() + * SAUCE: Fix stack overflow on ppc32 + * SAUCE: Use resource_size_t instead of long for PCI resource address + * SAUCE: net/phy: Export function for use by dpaa_eth + * [Packaging] powerpc -- merge out of tree powerpc arch + + [ Bjorn Helgaas ] + + * SAUCE: Revert "EISA: Log device resources in dmesg" + - LP: #1251816 + * SAUCE: Revert "EISA: Initialize device before its resources" + - LP: #1251816 + + [ Emil Medve ] + + * SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work + with 10G "fixed-link"s + + [ Kumar Gala ] + + * SAUCE: fsl_qbman: Add drivers for Freescale DPAA Qman & Bman + * SAUCE: fsl_pme2: Add support for DPAA PME + * SAUCE: fmd: FMD14 integration + * SAUCE: dpaa_eth: Ethernet driver for Freescale QorIQ DPA Architecture + * SAUCE: powerpc/85xx: Add DPAA/networking support for CoreNet + + [ Madalin Bucur ] + + * SAUCE: net/flow: remove sleeping and deferral mechanism from + flow_cache_flush + * SAUCE: net/phy: abort genphy_read_status when link changes during speed + and duplex reading + + [ Stefan Bader ] + + * [Config] move some VMWare related modules into main package + - LP: #1271669 + + [ Tim Gardner ] + + * [Config] Add r815x to nic-modules + - LP: #1273735 + * [Config] CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y + - LP: #239479 + + [ Upstream Kernel Changes ] + + * mmc: sdhci-pci: break out definitions to header file + - LP: #1239938 + * mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts + - LP: #1239938 + * powerpc/book3e: rename interrupt_end_book3e with __end_interrupts + * powerpc/book3e: support CONFIG_RELOCATABLE + * book3e/kexec/kdump: enable kexec for kernel + * book3e/kexec/kdump: create a 1:1 TLB mapping + * book3e/kexec/kdump: introduce a kexec kernel flag + * book3e/kexec/kdump: implement ppc64 kexec specfic + * book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET + * book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB + + -- Andy Whitcroft Tue, 28 Jan 2014 22:59:46 +0000 + +linux (3.13.0-5.20) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools -- do not make symlinks when not making packages + * [Packaging] tools -- tidy up control.stub.in ordering + * [Packaging] tools -- tools-common is shared and not conditional + * rebase to v3.13 + + [ Dirk Brandewie ] + + * SAUCE: intel_pstate: Add setting voltage value for baytrail P states. + + [ KY Srinivasan ] + + * SAUCE: Drivers: hv: vmbus: Specify the target CPU that should receive + notification + + [ Upstream Kernel Changes ] + + * rebase to v3.13 + - LP: #1270603 + + -- Andy Whitcroft Fri, 17 Jan 2014 15:45:31 +0000 + +linux (3.13.0-4.19) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] libunwind8-dev is now available for ppc64el + * [Packaging] tools -- make cpupower optional + * [Packaging] tools -- enable correctly for x86 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1269872 + + [ Upstream Kernel Changes ] + + * SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP + * SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP + * SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type + * SAUCE: crypto: omap-aes: add error check for pm_runtime_get_sync + + [ Upstream Kernel Changes ] + + * rebase to 85ce70fdf48aa290b4845311c2dd815d7f8d1fa5 + + -- Tim Gardner Wed, 15 Jan 2014 13:23:05 +0000 + +linux (3.13.0-3.18) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc8 + * [Packaging] efi -- allow EFI signatures on any arch + + [ Tim Gardner ] + + * [Config] Fix vcs-git path + * Release Tracking Bug + - LP: #1268683 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc8 + + -- Andy Whitcroft Sun, 12 Jan 2014 11:58:01 +0000 + +linux (3.13.0-2.17) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1267809 + * [Config] apply Platform support>>CPUIdle driver>>CPU Idle config + defaults + * [Config] apply Platform support>>CPU Frequency scaling config defaults + * [Config] CONFIG_PARIDE_EPATC8=y + * [Config] apply Device Drivers >> Broadcom specific AMBA config defaults + * [Config] apply Bus options >> PCI support >> RapidIO support >> RapidIO + Switch drivers config defaults + * [Config] apply Cryptographic API config defaults + * [Config] apply Device Drivers >> Common Clock Framework config defaults + * [Config] apply Device Drivers >> Distributed Switch Architecture + drivers config defaults + * [Config] apply Device Drivers >> Graphics support >> Backlight & LCD + device support config defaults + * [Config] apply Device Drivers >> Graphics support >> Support for frame + buffer devices >> Bootup logo config defaults + * annotations -- update in tree annotations + * [Config] apply Bus options >> PCI support >> RapidIO support config + defaults + * [Config] CONFIG_POWER_AVS=y CONFIG_RESET_CONTROLLER=y + * [Config] apply Device Drivers >> 1-wire Bus Masters config defaults + * [Config] apply CAN Device Drivers >> Platform CAN drivers with Netlink + support config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> Generic Thermal sysfs driver config + defaults + * [Config] apply Device Drivers >> Character devices >> TPM Hardware + Support config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> HID support >> USB HID support >> USB + HID transport layer config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support config + defaults + * [Config] apply Device Drivers >> HID support >> USB HID support config + defaults + * annotations -- update in tree annotations + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] update configs for apparmour update + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + * SAUCE: (no-up) apparmor: Fix tasks not subject to, reloaded policy + - LP: #1236455 + + [ Tim Gardner ] + + * Revert "[Debian] getabis: Preface module with package name" + * [Config] Added ppc64el to getabis + * [packaging] Bump ABI for every new release + + -- Andy Whitcroft Fri, 10 Jan 2014 11:48:39 +0000 + +linux (3.13.0-1.16) trusty; urgency=low + + * First 3.13 upload. + * Release tracker + - LP: #1266852 + + -- Tim Gardner Tue, 07 Jan 2014 09:21:26 -0700 + +linux (3.13.0-0.15) trusty; urgency=low + + [ Tim Gardner ] + + * rebase to v3.13-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc7 + + -- Tim Gardner Sun, 05 Jan 2014 06:13:33 -0700 + +linux (3.13.0-0.14) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + [ Tim Gardner ] + + * Remove ubuntu/dm-raid4-5 in favor of CONFIG_MD_RAID456 + * Update lttng to Version 2.4.0-rc2 + * lttng: Disabled trace_kvm_async_pf_completed + * [Config] CONFIG_IMA=y + - LP: #1244627 + + [ Upstream Kernel Changes ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + -- Tim Gardner Thu, 02 Jan 2014 12:57:13 -0700 + +linux (3.13.0-0.13) trusty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS -- update to 7b136a27b021da9010d8b6c101939dd298e46be7 + * ubuntu: aufs3 -- enable + * ubuntu: aufs3 -- update configs + + -- Andy Whitcroft Thu, 02 Jan 2014 09:41:02 +0000 + +linux (3.13.0-0.12) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc6 + + -- Tim Gardner Tue, 31 Dec 2013 06:16:03 -0700 + +linux (3.13.0-0.11) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c + * [Config] ppc64el -- initial defconfig based -generic flavour + * [Config] initial defconfig for ppc64el + * [Config] ubuntuise ppc64el config + * [Config] ubuntuise ppc64el config part 2 + * [Config] d-i -- update empty udebs list + * [Config] ppc64el -- split extras package + + [ Anton Blanchard ] + + * SAUCE: KVM: PPC: Book3S HV: Add little-endian guest support + + [ Benjamin Herrenschmidt ] + + * SAUCE: powerpc/powernv: Add calls to support little endian + + [ Cédric Le Goater ] + + * SAUCE: KVM: PPC: Book3S: add helper routine to load guest instructions + * SAUCE: KVM: PPC: Book3S: add helper routines to detect endian order + * SAUCE: KVM: PPC: Book3S: MMIO emulation support for little endian + guests + + [ Paul E. McKenney ] + + * SAUCE: powerpc: Make 64-bit non-VMX copy_tofrom_user() bi-endian + + -- Andy Whitcroft Fri, 27 Dec 2013 16:48:55 +0000 + +linux (3.13.0-0.10) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc5 + * [Config] updateconfigs following rebase to v3.13-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc5 + - LP: #1260303 + - LP: #1260303 + - LP: #1260225 + + -- Andy Whitcroft Mon, 23 Dec 2013 12:48:28 +0000 + +linux (3.13.0-0.9) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- allow missing firmware + + -- Andy Whitcroft Fri, 20 Dec 2013 17:57:06 +0000 + +linux (3.13.0-0.8) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations -- first pass over entire config + * [Config] drop libunwind8-dev from Build-Depends for ppc64el + + [ Tim Gardner ] + + * [Config] Add arm64 device tree files + - LP: #1262901 + + -- Andy Whitcroft Thu, 19 Dec 2013 18:36:43 +0000 + +linux (3.13.0-0.7) trusty; urgency=low + + [ Rajesh B Prathipati ] + + * SAUCE: powerpc: Make unaligned accesses endian-safe for powerpc + + [ Tim Gardner ] + + * [Config] CONFIG_REGULATOR_S2MPS11=n for FTBS + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc4 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + + -- Tim Gardner Fri, 13 Dec 2013 07:56:34 -0700 + +linux (3.13.0-0.6) trusty; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: arm64: VIRTIO_[BLK|MMIO|NET|CONSOLE|BALLOON]=y + * [Config] i386: amd64: VIRTIO_CONSOLE=y + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y + + -- Tim Gardner Sun, 08 Dec 2013 09:22:01 -0700 + +linux (3.13.0-0.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * correct bug listing for v3.13-rc2 rebase + * [Config] ppc64el -- create linux-libc-dev + * [Debian] Improve tools version message + - LP: #1257715 + + [ Serge Hallyn ] + + * SAUCE: fork: Allow CLONE_PARENT after setns(CLONE_NEWPID)] + - LP: #1248590 + * SAUCE: vfs: Fix a regression in mounting proc + + [ Tim Gardner ] + + * [Config] Build-in ohci-pci + - LP: #1244176 + * Rebase to v3.13-rc3 + + [ Upstream Kernel Changes ] + + * Revert "Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID + checks"" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc3 + - LP: #1256840 + - LP: #1256212 + + -- Tim Gardner Sat, 07 Dec 2013 07:55:39 -0700 + +linux (3.13.0-0.4) trusty; urgency=low + + [ Tim Gardner ] + + * Rebase to v3.13-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc2 + + -- Tim Gardner Fri, 29 Nov 2013 23:54:05 -0500 + +linux (3.13.0-0.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Fix DocBook FTBS" + + [ Tim Gardner ] + + * [Debian] Re-sign modules after debug objcopy + - LP: #1253155 + * [Config] CONFIG_EXT4_USE_FOR_EXT23=y + + [ Upstream Kernel Changes ] + + * doc: fix generation of device-drivers + * rebase to b975dc3689fc6a3718ad288ce080924f9cb7e176 + + -- Tim Gardner Tue, 26 Nov 2013 12:24:42 -0700 + +linux (3.13.0-0.2) trusty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Fix DocBook FTBS + + -- Tim Gardner Mon, 25 Nov 2013 13:24:15 -0700 + +linux (3.13.0-0.1) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 7e3528c3660a2e8602abc7858b0994d611f74bc3 + + -- Tim Gardner Tue, 12 Nov 2013 07:28:53 -0700 + +linux (3.13.0-0.0) trusty; urgency=low + + * Major release bump. + + -- Andy Whitcroft Tue, 12 Nov 2013 21:37:52 +0000 + +linux (3.12.0-2.7) trusty; urgency=low + + * Fixed armhf ABI build failure. + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 16:22:45 -0700 + +linux (3.12.0-2.6) trusty; urgency=low + + [ Joseph Salisbury ] + + * SAUCE: tg3: Add support for new 57786 device id. + - LP: #1242610 + + [ Tim Gardner ] + + * [Config] CONFIG_OABI_COMPAT=n + * [Config] add the wandboard to shipped dtb + - LP: #1249421 + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 12:23:18 -0700 + +linux (3.12.0-2.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline v3.12 + * [Config] updateconfigs following rebase to v3.12 + * postinst -- improve relative symlink detection with missing files + - LP: #1248053 + * postinst -- fix unchanged link detection + * [Config] update configs following addition of apparmor fixes + + [ Anthony Wong ] + + * SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 + - LP: #1231305 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + + [ Tim Gardner ] + + * [Config] Remove superfluous ubuntu/lttng-modules + + [ Upstream Kernel Changes ] + + * Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID checks" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.12 + - LP: #1222850 + + [ Adam Conrad ] + * etc/getabis: Fetch arm64/generic abis as well + + -- Andy Whitcroft Wed, 06 Nov 2013 21:00:21 +0000 + +linux (3.12.0-1.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] arm64 -- add arch to the configuration handlers + * [Config] arm64 -- add generic flavour + * [Config] arm64 -- default config + * [Config] arm64 -- fix up various FTBFS config options + * SAUCE: arm64: export __copy_in_user to modules + * [Config] arm64 -- disable ABI/module checks + * [Config] arm64 -- enforcer -- add arm64 to the enforcer + * [Config] arm64 -- enable udebs for arm64 + + [ Colin Watson ] + + * [Config] Clean up various udeb Provides + + [ Paolo Pisati ] + + * [Config] AHCI_IMX=y + * [Config] build imx*-wandboard dtbs + + [ Serge Hallyn ] + + * SAUCE: device_cgroup: remove can_attach + + [ Tim Gardner ] + + * rebase to v3.12-rc7 + * SAUCE: KVM: Fix modprobe failure for kvm_intel/kvm_amd + * Release tracker + - LP: #1245932 + + [ Upstream Kernel Changes ] + + * rebase to v3.12-rc7 + - LP: #1180881 + - LP: #1180881 + - LP: #1217957 + + -- Tim Gardner Sun, 27 Oct 2013 22:08:55 -0600 + +linux (3.12.0-0.2) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ + CAPACITY (16) at SPC-2" + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at + SPC-2" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request READ + CAPACITY (16) be preferred" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request VPD pages + be used at SPC-2" + * Revert "overlayfs: Update to v19" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs v18 -- -- overlay filesystem" + * Revert "ubuntu: overlayfs v18 -- -- vfs: introduce + clone_private_mount()" + * Revert "ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to + modules" + * Revert "ubuntu: overlayfs v18 -- -- overlay: overlay filesystem + documentation" + * ubuntu: overlayfs v20 -- overlayfs: add statfs support + * [Config] fix linux-libc-dev generation for arm64 + * [Config] fix linux-libc-dev generation for x32 + * [Config] add linux-libc-dev generation for ppc64el + + [ Erez Zadok ] + + * ubuntu: overlayfs v20 -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v20 -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v20 -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v20 -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v20 -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v20 -- overlay filesystem + * ubuntu: overlayfs v20 -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v20 -- overlay: overlay filesystem documentation + + [ Paolo Pisati ] + + * [Config] arm: VIRTIO_[BLK|NET|MMIO]=y + + [ Seth Forshee ] + + * SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo + ThinkPads + - LP: #1183856 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRCT10DIF=y, CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m + * rebase to v3.12-rc2 + * updateconfigs + * [Config] disable CONFIG_FB_VESA enforcer check + * [Config] Disable lttng for FTBS + * rebase to v3.12-rc3 + * rebase to v3.12-rc4 + * [Config] CONFIG_ANDROID=n + - LP: #1235161 + * [Config] CONFIG_L2TP_V3=y + - LP: #1235914 + * [Config] CONFIG_USB_OTG=n for all arches + * Release tracker + - LP: #1242811 + + [ Upstream Kernel Changes ] + + * scsi: hyper-v storsvc switch up to SPC-3 + + * rebase to v3.12-rc6 + - LP: #1235977 + - LP: #1235523 + - LP: #1239392 + - LP: #1227491 + + * rebase to v3.12-rc3 + - LP: #1231931 + + * rebase to v3.12-rc2 + - LP: #1213820 + - LP: #1213055 + - LP: #1198030 + + -- Tim Gardner Mon, 23 Sep 2013 07:41:07 -0600 + +linux (3.11.0-8.15) saucy; urgency=low + + [ Tim Gardner ] + + * Release tracker + - LP: #1227969 + + * Update lttng + Updated to git://git.lttng.org/lttng-modules.git 9998f5216f4641a79e158135 + Version 2.3.0+ + + [ Upstream Kernel Changes ] + + * igb: Add additional get_phy_id call for i354 devices + - LP: #1219619 + * igb: Read flow control for i350 from correct EEPROM section + - LP: #1219619 + * timekeeping: Fix HRTICK related deadlock from ntp lock changes + Required for lttng update. + + -- Tim Gardner Thu, 19 Sep 2013 07:41:49 -0600 + +linux (3.11.0-7.14) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] sort out linux-tools naming + - LP: #1205284 + * [Packaging] linux-tools: switch to common generic version helper + + [ Paolo Pisati ] + + * [Config] highbank: ecx1000: CPU_IDLE causes instabilities, disable it + + [ Tim Gardner ] + + * Release tracker + - LP: #1226160 + + [ Tony Lindgren ] + + * SAUCE: ARM: dts: Fix muxing and regulator for wl12xx on the SDIO bus + for pandaboard + + [ Upstream Kernel Changes ] + + * USB: handle LPM errors during device suspend correctly + - LP: #1011415 + * usb: don't check pm qos NO_POWER_OFF flag in usb_port_suspend() + - LP: #1011415 + * usb: Don't fail port power resume on device disconnect. + - LP: #1011415 + + [ Upstream Kernel Changes ] + + * rebase to v3.11.1 + + -- Tim Gardner Wed, 11 Sep 2013 07:30:17 -0600 + +linux (3.11.0-7.13) saucy; urgency=low + + * Release tracker + - LP: #1223545 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) scsi: add scsi device flag to request VPD pages be used at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: add scsi device flag to request READ CAPACITY (16) be preferred + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ CAPACITY (16) at SPC-2 + - LP: #1223499 + + [ Maximiliano Curia ] + + * SAUCE: (no-up) Only let characters through when there are active readers. + - LP: #1208740 + + [ Tim Gardner ] + + * [Debian] getabis: Commit new ABI directory, remove the old + * [Config] CONFIG_EFIVAR_FS=y + - LP: #1223195 + * [Config] CONFIG_EFI_VARS_PSTORE=m, + CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=n + * SAUCE: (no-up) USB: input: cm109.c: Convert high volume dev_err() to dev_err_ratelimited() + - LP: #1222850 + + [ Upstream Kernel Changes ] + + * Intel xhci: refactor EHCI/xHCI port switching + - LP: #1210858 + + -- Tim Gardner Tue, 10 Sep 2013 09:00:19 -0600 + +linux (3.11.0-6.12) saucy; urgency=low + + * Release tracker + - LP: #1222893 + + [ Andy Whitcroft ] + + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + - LP: #1222407 + + [ Paolo Pisati ] + + * [Config] restore mmc boot on panda + + [ Tyler Hicks ] + + * SAUCE: apparmor: Use shash crypto API interface for profile hashes + - LP: #1216294 + + [ Upstream Kernel Changes ] + + * net: calxedaxgmac: remove NETIF_F_FRAGLIST setting + * net: calxedaxgmac: read correct field in xgmac_desc_get_buf_len + * net: calxedaxgmac: fix race between xgmac_tx_complete and xgmac_tx_err + * net: calxedaxgmac: fix possible skb free before tx complete + * net: calxedaxgmac: update ring buffer tx_head after barriers + * net: calxedaxgmac: fix race with tx queue stop/wake + * net: calxedaxgmac: enable interrupts after napi_enable + * net: calxedaxgmac: fix various errors in xgmac_set_rx_mode + * net: calxedaxgmac: remove some unused statistic counters + * net: calxedaxgmac: fix rx DMA mapping API size mismatches + * net: calxedaxgmac: fix xgmac_xmit DMA mapping error handling + * mfd: rtsx: Read vendor setting from config space + - LP: #1201698 + + -- Tim Gardner Mon, 09 Sep 2013 07:21:06 -0600 + +linux (3.11.0-5.11) saucy; urgency=low + + * Release tracker + - LP: #1221886 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + * SAUCE: Bluetooth: Add support for 105b:e065 + - LP: #1161261 + + [ Gavin Guo ] + + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + + [ Upstream Kernel Changes ] + + * igb: Reset the link when EEE setting changed + - LP: #1219619 + * igb: Read register for latch_on without return value + - LP: #1219619 + * igb: Added rcu_lock to avoid race + - LP: #1219619 + * igb: don't allow SR-IOV without MSI-X + - LP: #1219619 + * igb: Update MTU so that it is always at least a standard frame size + - LP: #1219619 + * igb: Refactor of init_nvm_params + - LP: #1219619 + * igb: Refactor NVM read functions to accommodate devices with no flash + - LP: #1219619 + * igb: Add device support for flashless SKU of i210 device + - LP: #1219619 + * igb: Fix get_fw_version function for all parts + - LP: #1219619 + * igb: Add macro for size of RETA indirection table + - LP: #1219619 + * igb: Expose RSS indirection table for ethtool + - LP: #1219619 + * igb: Don't look for a PBA in the iNVM when flashless + - LP: #1219619 + * igb: Implementation of 1-sec delay for i210 devices + - LP: #1219619 + * igb: New PHY_ID for i354 device + - LP: #1219619 + * igb: M88E1543 PHY downshift implementation + - LP: #1219619 + * igb: No PHPM support in i354 devices + - LP: #1219619 + * igb: Support to get 2_5G link status for appropriate media type + - LP: #1219619 + * igb: Get speed and duplex for 1G non_copper devices + - LP: #1219619 + * igb: Implementation to report advertised/supported link on i354 devices + - LP: #1219619 + * igb: Update version number + - LP: #1219619 + * Bluetooth: Take proper tty_struct references + - LP: #1189998 + * Bluetooth: Remove the device from the list in the destructor + - LP: #1189998 + * Bluetooth: Move the tty initialization and cleanup out of open/close + - LP: #1189998 + * Bluetooth: Implement .activate, .shutdown and .carrier_raised methods + - LP: #1189998 + * Bluetooth: Fix the reference counting of tty_port + - LP: #1189998 + * Bluetooth: Purge the dlc->tx_queue to avoid circular dependency + - LP: #1189998 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Support for loading broadcom patchram firmware + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Tim Gardner Thu, 05 Sep 2013 08:06:17 -0600 + +linux (3.11.0-5.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release tracker + - LP: #1220222 + * Revert "[Config] Fix ubuntu directoy Kbuilds" + * Revert "aufs update dropped some Kbuild files" + * Revert "ubuntu: AUFS -- follow rename of loop.h into drivers/block" + * Revert "ubuntu: AUFS -- update to + 8e503d4142c189ed6c47a2177ad2cd058e8d340e" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * rebase to v3.11 final + * [Config] clean up ubuntu/Kconfig and ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 5ac5fe26a90a818218310e208d17688fddb07622 + * ubuntu: (no-squash) AUFS -- enable aufs + * ubuntu: AUFS -- fix remaining d_count references to use accessor + * ubuntu: lttng -- follow rename of pid_ns + * SAUCE: disable stack-protector for ARM compressed bootloader + + [ Paolo Pisati ] + + * [Config] ARM_ATAG_DTB_COMPAT=y + + [ Rob Herring ] + + * [Config] Enable KVM and virtio for armhf generic-lpae + + [ Tim Gardner ] + + * [Config] CONFIG_ARPD=y + * [Config] CONFIG_ZSWAP=y + - LP: #1215379 + + [ Upstream Kernel Changes ] + + * uvcvideo: quirk PROBE_DEF for Dell SP2008WFP monitor. + - LP: #1217957 + * ARM: use phys_addr_t for DMA zone sizes + * ARM: highbank: enable DMA zone for LPAE + * ARM: highbank: select ARCH_HAS_HOLES_MEMORYMODEL + * ARM: highbank: select required errata work-arounds + * DMA: fix AMBA PL08x compilation issue with 64bit DMA address type + * DMA: fix printk warning in AMBA PL08x DMA driver + * ARM: highbank: select ARCH_DMA_ADDR_T_64BIT for LPAE + * ARM: move outer_cache declaration out of ifdef + * ARM: highbank: avoid L2 cache smc calls when PL310 is not present + * ARM: highbank: clean-up some unused includes + * ARM: xen: only set pm function ptrs for Xen guests + + [ Upstream Kernel Changes ] + + * rebase to v3.11 + + -- Andy Whitcroft Tue, 03 Sep 2013 17:08:06 +0100 + +linux (3.11.0-4.9) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.11-rc7 + * Release tracker + - LP: #1216962 + + [ Upstream Kernel Changes ] + + * mwifiex: do not create AP and P2P interfaces upon driver loading + - LP: #1212720 + + -- Tim Gardner Mon, 26 Aug 2013 06:25:35 -0600 + +linux (3.11.0-3.8) saucy; urgency=low + + [ Johannes Berg ] + + * SAUCE: mac80211: ignore (E)CSA in probe response frames + - LP: #1201470 + + -- Tim Gardner Fri, 23 Aug 2013 09:47:36 -0600 + +linux (3.11.0-3.7) saucy; urgency=low + + [ Tim Gardner ] + + * SAUCE: (no-up) hv_vss_daemon -- prevent self-daemonising to allow + upstart to track + * SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the local + linux/hyperv.h + * SAUCE: hv: Add vss daemon to Makefile + * [Debian] Add hv_vss_daemon to tools package + - LP: #1213282 + * [Config] Fix ubuntu directoy Kbuilds + - LP: #1181755 + + -- Tim Gardner Tue, 20 Aug 2013 08:34:05 -0600 + +linux (3.11.0-3.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools: conditionalise x86 and hyper-v tools sensibly + * [Config] tools: enable x86 and hyper-v + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable + snapshot" + * Revert "SAUCE: (no-up) apparmor: fix apparmor module status for none + root users" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + + [ Joseph Salisbury ] + + * SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops + - LP: #1210848 + + [ Kamal Mostafa ] + + * [debian] tools: ship 'cpupower' in linux-tools + - LP: #1158668 + * [Config] Build-dep on libpci-dev for cpu tools + - LP: #1158668 + + [ Tim Gardner ] + + * rebase to v3.11-rc6 + * Release tracker + - LP: #1213941 + + -- Tim Gardner Fri, 16 Aug 2013 07:02:07 -0600 + +linux (3.11.0-2.5) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_PM_DEBUG=y + - LP: #1210539 + * rebase to v3.11-rc5 + * Release tracker + - LP: #1211378 + + -- Tim Gardner Mon, 12 Aug 2013 06:10:39 -0600 + +linux (3.11.0-1.4) saucy; urgency=low + + [ Tim Gardner ] + + * Bump ABI when making changes to the inclusion list lest + you cause conflicts with existing installed kernel + packages. + - LP: #1210331 + + -- Tim Gardner Fri, 09 Aug 2013 03:03:51 +0100 + +linux (3.11.0-0.3) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] Include rbd and kvm in the virtual inclusion list + - LP: #1206961 + * [Config] Removed obsolete inclusion list entries + + -- Tim Gardner Tue, 06 Aug 2013 08:52:14 +0100 + +linux (3.11.0-0.2) saucy; urgency=low + + [ Bruce Allan ] + + * SAUCE: (no-up) e1000e: fix I217/I218 PHY initialization flow + - LP: #1206757 + * SAUCE: (no-up) e1000e: enable support for new device IDs + - LP: #1206757 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Paolo Pisati ] + + * build vexpress a15 dtb + * [Config] disable Broadcom bcm support (ARCH_BCM) + * [Config] disable Allwinner a1x support (ARCH_SUNXI) + * [Config] disable WonderMedia WM8850 support (ARCH_WM8850) + * [Config] disable Rockchip support (ARCH_ROCKCHIP) + * [Config] disable STMicroelectronics STiH41x SOCs (ARCH_STI) + * [Config] disable TI Keystone, AM43xx and OMAP5 support + * [Config] ARM_APPENDED_DTB=y + + [ Tim Gardner ] + + * rebase to v3.11-rc4 + * overlayfs: Update to v19 + * [Config] Enable overlayfs + * SAUCE: Fix lttng compile errors + + [ Upstream Kernel Changes ] + + * rebase to v3.11-rc4 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Sun, 04 Aug 2013 03:45:31 -0600 + +linux (3.11.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 64ccccf8525fee499625b517c0faadf784c79e93 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Mon, 08 Jul 2013 08:50:46 -0600 + +linux (3.10.0-2.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INTEL_MEI*=m + - LP: #1196155 + * [Config] CONFIG_DEBUG_INFO=y + + [ Stephen Warren ] + + * [Config] fix Calxeda xgmac module filename + + [ Upstream Kernel Changes ] + + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * mfd: lpc_ich: Add support for Intel Avoton SoC + - LP: #1196658 + + -- Andy Whitcroft Fri, 05 Jul 2013 18:08:02 +0100 + +linux (3.10.0-2.9) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10 + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Fix quieting of audit messages for + network mediation" + * Revert "SAUCE: (no-up) apparmor: Fix compile warnings" + * Revert "SAUCE: (no-up) AppArmor: basic networking rules" + * Revert "SAUCE: (no-up) apparmor: Add the ability to mediate mount" + * Revert "SAUCE: (no-up) AppArmor: Add profile introspection file to + interface" + * Revert "SAUCE: (no-up) AppArmor: Disable Add PR_{GET,SET}_NO_NEW_PRIVS + to prevent execve from granting privs" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Upstream Kernel Changes ] + + * rebase to v3.10 + + -- Andy Whitcroft Mon, 01 Jul 2013 17:42:29 +0100 + +linux (3.10.0-1.8) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1195717 + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- follow change to do_splice_direct + interface" + * Revert "ubuntu: overlayfs -- expose do_splice_direct prototype" + * Revert "SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path + reference" + * Revert "ubuntu: overlayfs -- add FS_ALIAS" + * Revert "ubuntu: overlayfs -- + overlayfs-copy-up-i_uid-i_gid-from-the-underlying-inode" + * Revert "ubuntu: overlayfs -- ovl-switch-to-inode_permission" + * Revert "ubuntu: overlayfs -- vfs-export-inode_permission-to-modules" + * Revert "ubuntu: overlayfs -- overlayfs-create-new-inode-in-ovl_link" + * Revert "ubuntu: overlayfs -- + overlayfs-fix-possible-leak-in-ovl_new_inode" + * Revert "ubuntu: overlayfs -- fs-limit-filesystem-stacking-depth" + * Revert "ubuntu: overlayfs -- overlay-overlay-filesystem-documentation" + * Revert "ubuntu: overlayfs -- overlayfs-implement-show_options" + * Revert "ubuntu: overlayfs -- overlayfs-add-statfs-support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs-introduce-clone_private_mount" + * Revert "ubuntu: overlayfs -- vfs-export-do_splice_direct-to-modules" + * Revert "ubuntu: overlayfs -- vfs-add-i_op-dentry_open" + * ubuntu: overlayfs v18 -- -- overlayfs: add statfs support + + [ Erez Zadok ] + + * ubuntu: overlayfs v18 -- -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v18 -- -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v18 -- -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v18 -- -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v18 -- -- overlay filesystem + * ubuntu: overlayfs v18 -- -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v18 -- -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + + -- Andy Whitcroft Fri, 28 Jun 2013 10:26:52 +0100 + +linux (3.10.0-0.7) saucy; urgency=low + + [ Andy Whitcroft ] + + * autopkgtest: switch Depends: to build-essential + + -- Andy Whitcroft Tue, 25 Jun 2013 08:40:55 +0100 + +linux (3.10.0-0.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_ARCH_TEGRA to fix FTBFS on armhf + * SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path reference + - LP: #1098378 + * ubuntu: AUFS -- update to 4f14cef47eb7c23eda7198931fbab1040866b6ee + * ubuntu: overlayfs -- expose do_splice_direct prototype + * ubuntu: overlayfs -- follow change to do_splice_direct interface + * [Config] flip CONFIG_NO_HZ_FULL_ALL off as it is overheating machines + - LP: #1192691 + + [ Stefan Bader ] + + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + + [ Tim Gardner ] + + * Release tracker + - LP: #1194149 + * [Config] CONFIG_WIL6210=n for armhf + * [Config] d-i: Add calxedaxgmac to nic-modules + - LP: #1192358 + * [debian] Use dh_strip + - LP: #1192759 + * [Config] Enable perf for armhf + * do_tools=false when cross compiling + * [Config] CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y + - LP: #1108082 + + [ Upstream Kernel Changes ] + + * nsp32: switch reset delay to msleep() as it is tooo long + * alx: add a simple AR816x/AR817x device driver + Plucked from linux-next. replaces ubuntu/alx in favor of + 'to be merged' version in 3.11. + * rebase to v3.10-rc7 + - LP: #1189363 + + -- Tim Gardner Sat, 22 Jun 2013 18:10:31 -0600 + +linux (3.10.0-0.5) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc6 + * [Config] updateconfigs following rebase to v3.10-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc6 + + -- Andy Whitcroft Mon, 17 Jun 2013 11:12:39 +0100 + +linux (3.10.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateconfigs following rebase to v3.10-rc4 + + -- Andy Whitcroft Mon, 10 Jun 2013 11:42:28 +0100 + +linux (3.10.0-0.3) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc5 + - LP: #1186170 + + -- Andy Whitcroft Mon, 10 Jun 2013 09:23:31 +0100 + +linux (3.10.0-0.2) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc4 + * [Config] CONFIG_BINFMT_SCRIPT=y to fix booting initramfs scripts + * [Config] enable SND_PCM_DEBUG SND_PCM_XRUN_DEBUG + - LP: #1187744 + * [Config] enforce CONFIG_BINFMT_SCRIPT=y + + [ Dave Chiluk ] + + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + + [ Tim Gardner ] + + * rebase to v3.10-rc3 + * [Config] sparc be gone + * [Config] ia64 be gone + * d-i: block-modules provides nbd-modules + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc4 + * rebase to v3.10-rc3 + + -- Tim Gardner Tue, 28 May 2013 06:16:46 -0600 + +linux (3.10.0-0.1) saucy; urgency=low + + [ Tim Gardner ] + + * UBUNTU: Disabled lttng + * UBUNTU: Disable aufs for FTBS + * UBUNTU: Disabled alx + * UBUNTU: alx: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* + * UBUNTU: rebase to v3.10-rc2 + * UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam + + [ Andy Whitcroft ] + + * UBUNTU: [Config] update standards version to 3.9.4.0 + * UBUNTU: [Config] squash duplicate package description (long and short) + * UBUNTU: [Config] fix up Vcs-git: to point to saucy + * UBUNTU: [Config] drop depenancy on util-linux as is Essential + * UBUNTU: [Config] drop redundant Build-Conficts: + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc2 + - LP: #1180351 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc1 + - LP: #1172151 + - LP: #1089795 + - LP: #1167270 + - LP: #1128840 + + -- Tim Gardner Tue, 14 May 2013 13:41:07 -0600 + +linux (3.10.0-0.0) saucy; urgency=low + + * Dummy + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-2.6) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.2 + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-1.5) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.1 + + -- Tim Gardner Wed, 08 May 2013 12:49:45 -0400 + +linux (3.9.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- add FS_ALIAS + + [ Tim Gardner ] + + * Added lttng + - LP: #1175784 + + -- Tim Gardner Thu, 02 May 2013 17:17:13 -0400 + +linux (3.9.0-0.3) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9 + + -- Tim Gardner Mon, 29 Apr 2013 18:20:00 -0400 + +linux (3.9.0-0.2) saucy; urgency=low + + [ Tim Gardner ] + + * Enable extras packaging for amd64/i386. + Fixes build depenencies with brittany and linux-meta. + + -- Tim Gardner Mon, 29 Apr 2013 05:37:01 -0600 + +linux (3.9.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc7 + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc3 + - LP: #1155016 + - LP: #1103594 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc1 + - LP: #901105 + - LP: #961286 + - LP: #1011792 + - LP: #1128934 + - LP: #886975 + - LP: #978807 + + -- Tim Gardner Wed, 20 Feb 2013 09:12:39 -0700 + +linux (3.8.0-7.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_RCU_USER_QS=n + * [Config] CONFIG_MTD_ONENAND_SIM=n + * annotations: add annotations for CONFIG_CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * rebase to v3.8 + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1130111 + * UBUNTU: SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once + - LP: #1128840 + + -- Tim Gardner Mon, 18 Feb 2013 09:25:56 -0700 + +linux (3.8.0-6.13) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1125364 + * Add ahci modules to d-i + - LP: #1124415 + + + [ Chris Wilson ] + + * SAUCE: drm/i915: Wait for pending flips to complete before tearing down + the encoders + - LP: #1097315 + + -- Tim Gardner Wed, 13 Feb 2013 12:16:48 -0700 + +linux (3.8.0-6.12) raring; urgency=low + + [Tim Gardner] + + * perf: NO_LIBPERL=1 + * Fix linux-headers dependency + * Release Tracking Bug + - LP: #1124362 + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_EXPORT to allow nfs exports + - LP: #1121699 + + [ Daniel Vetter ] + + * SAUCE: drm/i915: write backlight harder + - LP: #954661 + + -- Tim Gardner Wed, 13 Feb 2013 10:25:11 -0700 + +linux (3.8.0-6.11) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1122071 + * rebase to v3.8-rc7 + * Add libaudit-dev as a build dependency + * Build perf with NO_LIBPYTHON=1 to avoid a python build dependency. + + [ Leann Ogasawara ] + + * [Config] Remove CONFIG_SATA_AHCI annotation + + -- Tim Gardner Fri, 08 Feb 2013 07:41:13 -0500 + +linux (3.8.0-5.10) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1118568 + + * Bump ABI to fix install issue with 3.8.0-4.8. + Moving drivers/ata/*ahci* to linux-image caused an + install conflict with linux-image-extras without an + ABI bump. + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + -- Tim Gardner Thu, 07 Feb 2013 05:38:12 -0700 + +linux (3.8.0-4.9) raring; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Joseph Salisbury ] + + * SAUCE: ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1113547 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1117673 + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + * [Config] Add alx to d-i nic-modules + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + + -- Leann Ogasawara Tue, 05 Feb 2013 05:54:32 -0800 + +linux (3.8.0-4.8) raring; urgency=low + + [ Allen Ibara ] + + * SAUCE: imx6: dts: Add IMX6Q AHCI support + + [ Andy Whitcroft ] + + * rebase to v3.8-rc6 + * updateconfigs following rebase to v3.8-rc6 + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1112573 + + [ Paolo Pisati ] + + * SAUCE: imx6: enable sata clk if SATA_AHCI_PLATFORM + * [Config] SERIAL_AMBA_PL011=y (vexpress serial console) + * [Config] MMC_ARMMMCI=y (vexpress mmc) + * [Config] FB_ARMCLCD=y (vexpress framebuffer) + + [ Seth Forshee ] + + * [Config] CONFIG_MAC80211_MESSAGE_TRACING=y + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc6 + - LP: #1107477 + + -- Leann Ogasawara Fri, 01 Feb 2013 07:20:59 -0800 + +linux (3.8.0-3.7) raring; urgency=low + + [ Andy Green ] + + * SAUCE: ARM: OMAP2+: add cpu id register to MAC address helper + * SAUCE: ARM: omap2 add mac address allocation register api + * SAUCE: ARM: omap2 panda register ethernet and wlan for automatic mac + allocation + + [ Leann Ogasawara ] + + * rebase to v3.8-rc5 + * Release Tracking Bug + - LP: #1111486 + + [ Paolo Pisati ] + + * SAUCE: davinci: vpss: compilation fix + * [Config] enable TI OMAP4 support (Pandaboard/ES) + * [Config] OMAP_USB2=y (since TWL6030_USB depends on it) + * [Config] enable Freescale IMX6 support (SabreLite) + * [Config] SERIAL_IMX_CONSOLE=y + * [Config] MMC_*_IMX=y + * [Config] disable USB_SUSPEND + * [Config] USB_MXS_PHY=y + * [Config] USB_CHIPIDEA=y + * SAUCE: DTB: add support for multiple DTBs + * SAUCE: DTB: build imx6q-sabrelite + * SAUCE: DTB: build beaglexm + * SAUCE: DTB: build panda/panda es + * [Config] disable CPU_FREQ + * [Config] PANEL_TFP410=y (video DVI output) + * [Config] SND_OMAP_SOC*=y + * [Config] SND_IMX_SOC*=y + * [Config] I2C_IMX=y + * [Config] SPI_IMX=m + + [ Stefan Bader ] + + * [Config] Move 9p modules into generic package + - LP: #1107658 + + [ Tony Lindgren ] + + * SAUCE: ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform + kernels + * SAUCE: ARM: OMAP2+: Use omap initcalls + * SAUCE: ARM: OMAP: Fix i2c cmdline initcall for multiplatform + * SAUCE: ARM: OMAP: Fix dmaengine init for multiplatform + * SAUCE: ARM: OMAP2+: Add multiplatform debug_ll support + * SAUCE: ARM: OMAP2+: Disable code that currently does not work with + multiplaform + * SAUCE: ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support + * SAUCE: ARM: OMAP2+: Add minimal support for booting vexpress + * SAUCE: ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc5 + - LP: #1096789 + + -- Leann Ogasawara Thu, 31 Jan 2013 06:44:52 -0800 + +linux (3.8.0-2.6) raring; urgency=low + + [ Adam Conrad ] + + * Fix up linux-tools -> SRCPKGNAME-tools rename + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS + - LP: #1105230 + + [ Arend van Spriel ] + + * SAUCE: brcmsmac: fix tx status processing + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1105104 + + -- Leann Ogasawara Fri, 25 Jan 2013 11:56:30 -0800 + +linux (3.8.0-1.5) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1101235 + + [ Dudley Du ] + + * SAUCE: Input: add support for Cypress PS/2 Trackpads + - LP: #978807 + + [ Kamal Mostafa ] + + * SAUCE: Input: increase struct ps2dev cmdbuf[] to 8 bytes + * SAUCE: Input: Cypress PS/2 Trackpad simulated multitouch + * [Config] Add CONFIG_PS2_CYPRESS + + [ Tim Gardner ] + + * rebase to v3.8-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + -- Leann Ogasawara Thu, 17 Jan 2013 10:50:22 -0800 + +linux (3.8.0-0.4) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Update CONFIG_TOUCHSCREEN_EGALAX build annotation + * [Config] Update CONFIG_IIO build annotation + * [Config] Update CONFIG_TOUCHSCREEN_EETI annotation + * [Config] Remove CONFIG_SPI_DW_MMIO annotation + * [Config] Remove CONFIG_SPI_PL022 annotation + * [Config] Update CONFIG_EZX_PCAP annotation + * [Config] Update CONFIG_SENSORS_AK8975 annotation + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + -- Leann Ogasawara Mon, 14 Jan 2013 10:01:50 -0800 + +linux (3.8.0-0.3) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) trace: add trace events for open(), exec() and + uselib()" + + [ Scott James Remnant ] + + * SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() + (for v3.7+) + - LP: #1085766, #462111 + + -- Andy Whitcroft Fri, 11 Jan 2013 16:57:27 +0000 + +linux (3.8.0-0.2) raring; urgency=low + + [ Tim Gardner ] + + * [packaging] Add macro to selectively disable building perf + * [packaging] Cannot depend on universe package libaudit-dev + + -- Tim Gardner Thu, 10 Jan 2013 12:43:24 -0700 + +linux (3.8.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc3 + - LP: #1096789 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc2 + - LP: #1082357 + - LP: #1075882 + + -- Andy Whitcroft Mon, 17 Dec 2012 10:35:09 +0000 + +linux (3.7.0-7.15) raring; urgency=low + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Serge Hallyn ] + + * SAUCE: net: dev_change_net_namespace: send a KOBJ_REMOVED/KOBJ_ADD + + [ Tim Gardner ] + + * [Config] CONFIG_SLUB_DEBUG=y + - LP: #1090308 + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] sd: Implement support for WRITE SAME" + - LP: #1089818 + + -- Leann Ogasawara Wed, 12 Dec 2012 06:50:20 -0800 + +linux (3.7.0-6.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: all new annotations scheme including defaults + * [Configs] apply annotation updates to main configs (top section) + + [ Leann Ogasawara ] + + * Revert "SAUCE: include and for mmc_core arm + build" + * Revert "SAUCE: [arm] fixup __aeabi_uldivmod undefined build error" + * Temporarily disable module check for build + + [ Stefan Bader ] + + * ubuntu: dm-raid45: Adapt to upstream interface changes + * Re-enable build of dm-raid45 + + [ Tim Gardner ] + + * SAUCE: Moved scripts/fw-to-ihex.sh to debian/scripts/misc + * SAUCE: ACPICA: Fix ACPI mutex object allocation memory leak on error + * SAUCE: drm: Fix possible EDID memory allocation oops + * SAUCE: ttm: Fix possible _manager memory allocation oops + * SAUCE: iwlwifi: iwlagn_request_scan: Fix check for priv->scan_request + * SAUCE: i915: intel_set_mode: Reduce stack allocation from 500 bytes to + 2 pointers + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * rebase to v3.7 + + -- Leann Ogasawara Wed, 05 Dec 2012 14:11:12 -0800 + +linux (3.7.0-5.13) raring; urgency=low + + [ Lino Sanfilippo ] + + * SAUCE: inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #922906 + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + * SAUCE: fsnotify: change locking order + - LP: #922906 + + [ Tim Gardner ] + + * [Config] CONFIG_NFC_LLCP=y + * [Config] get-firmware: Filter new files through fwinfo + * [Config] CONFIG_MTD_NAND_DOCG4=m for all arches + * [Config] CONFIG_DRM_EXYNOS_HDMI=y + * [Config] CONFIG_XEN=y for all arches + * [Config] CONFIG_SND_OMAP_SOC_ZOOM2=m + * [Config] CONFIG_MMC_DW_EXYNOS=m + * [Config] CONFIG_GPIO_ADNP=m + * [Config] find-obsolete-firmware: Use correct path + * rebase to v3.7-rc8 + - LP: #1084640 + + [ Upstream Kernel Changes ] + + * Revert "VFS: don't do protected {sym,hard}links by default" + - LP: #1084192 + + -- Tim Gardner Wed, 28 Nov 2012 16:07:08 +0000 + +linux (3.7.0-4.12) raring; urgency=low + + [ Tim Gardner ] + + * Revert "[Config] Use -j1 for headers_install" + * Revert "[Config] install-arch-headers needs a valid config" + Strayed into the weeds in search of the root cause of the periodic + build failure. + Fixes powerpc FTBS introduced in -4.11. + * [Config] hmake -j1 + The kernel makefile appears to have parallel dependency + problems for the install_headers target. This appears to be root + cause for a periodic build failure on N-way machines. + + -- Leann Ogasawara Tue, 27 Nov 2012 12:33:06 -0800 + +linux (3.7.0-4.11) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Use -j1 for headers_install + Also fixes a powerpc FTBS introduced by + "[Config] install-arch-headers needs a valid config". + + -- Tim Gardner Tue, 27 Nov 2012 10:19:30 -0700 + +linux (3.7.0-4.10) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add rebuild-test support for autopkgtest + - LP: #1081500 + * [tests] move build tests out of the way + - LP: #1081500 + * [tests] add an autopkgtest rebuild test + - LP: #1081500 + + [ Tim Gardner ] + + * rebase to v3.7-rc7 + * SAUCE: Remove emi62 files duplicated in linux-firmware + * SAUCE: Remove sb16 files duplicated in linux-firmware + * SAUCE: Remove whiteheat files duplicated in linux-firmware + * SAUCE: Remove yamaha files duplicated in linux-firmware + * SAUCE: Remove dsp56k files used only by m68k + * SAUCE: firmware: Remove last vestiges of dabusb + * SAUCE: Remove vicam files duplicated in linux-firmware + * [Config] install-arch-headers needs a valid config + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc7 + - LP: #1076840 + - LP: #1081466 + + -- Leann Ogasawara Wed, 21 Nov 2012 06:07:23 -0800 + +linux (3.7.0-3.9) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_X86_CPUFREQ_NFORCE2=y + - LP: #1079900 + * Add nfsv3 to nfs-modules udeb + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC*=y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (no-up) xen/netfront: handle compound page fragments on transmit + - LP: #1078926 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + * Revert "SAUCE: omap3 clocks .dev_id = NULL" + * rebase to v3.7-rc6 + * SAUCE: script to detect obsolete firmware + * SAUCE: Remove yam files duplicated in linux-firmware + * SAUCE: Remove tehuti files duplicated in linux-firmware + * SAUCE: Remove matrox files duplicated in linux-firmware + * SAUCE: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: Remove r128 files duplicated in linux-firmware + * SAUCE: Remove acenic files duplicated in linux-firmware + * SAUCE: Remove keyspan files duplicated in linux-firmware + * SAUCE: Remove sun files duplicated in linux-firmware + * SAUCE: Remove radeon files duplicated in linux-firmware + * SAUCE: Update bnx2x firmware to 7.8.2.0 + * [Config] generic.inclusion-list: econet has disappeared + + [ Upstream Kernel Changes ] + + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * rebase to v3.7-rc6 + + -- Leann Ogasawara Tue, 20 Nov 2012 12:28:55 -0800 + +linux (3.7.0-2.8) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "overlayfs: disable until FTBS is fixed" + * Revert "ubuntu: overlayfs" + * Revert "ubuntu: AUFS" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- ovl: switch to __inode_permission() + * ubuntu: overlayfs -- overlayfs: copy up i_uid/i_gid from the underlying + inode + - LP: #944386 + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS (no-squash) -- aufs3-base.patch + * ubuntu: AUFS (no-squash) -- aufs3-standalone.patch + * ubuntu: AUFS: aufs-update -- follow the uapi header changes + * ubuntu: AUFS -- update to f2873474324d0a31af4340554b9715f51331bc7f + * ubuntu: AUFS (no-squash) -- reenable + - LP: #1079193 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- vfs: export __inode_permission() to modules + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + -- Andy Whitcroft Thu, 15 Nov 2012 13:35:12 +0000 + +linux (3.7.0-1.7) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Drop dependency on libaudit-dev + Its a universe package which causes an FTBS on the builders. + libaudit-dev is not strictly required for the perf tools build. + + -- Tim Gardner Wed, 14 Nov 2012 10:08:13 -0700 + +linux (3.7.0-1.6) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] enforce -- switch CONFIG_NVRAM to more readable form + * [Config] better encode the CONFIG_NVRAM constaint + * enforcer -- fix debugging output + + [ Ben Collins ] + + * [Config] Add custom_override rule to allow for alternate kernel + file/install + * [Config] Use SRCPKGNAME as prefix for indep linux headers package + + [ Tim Gardner ] + + * [Config] Dropped armel + * Drop highbank from ABI fetch list + * [Config] Use dh_prep instead of 'dh_clean -k' + * [Config] Build depend on libaudit-dev, libunwind8-dev for tools + * [Config] Document binary-indep dependency chain + * rebase to v3.7-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc5 + + -- Tim Gardner Tue, 13 Nov 2012 07:13:37 -0500 + +linux (3.7.0-0.5) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + * [Config] CONFIG_MTD_ONENAND_SIM=n for armel + Fixes FTBS + + -- Tim Gardner Thu, 08 Nov 2012 15:45:39 -0500 + +linux (3.7.0-0.4) raring; urgency=low + + [ Ben Collins ] + + * [Config] Update enforce rule for CONFIG_NVRAM to better suit flavours + + [ Tim Gardner ] + + * [Config] do_tools=false for arm + + -- Tim Gardner Thu, 08 Nov 2012 05:39:51 -0700 + +linux (3.7.0-0.3) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_DRM_EXYNOS_HDMI=n for armhf + * [Config] CONFIG_MTD_NAND_DOCG4=n for armel/armhf + * [Config] Drop highbank harder + + -- Tim Gardner Wed, 07 Nov 2012 18:11:45 +0000 + +linux (3.7.0-0.2) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + * [Config] drop highbank builds + + [ Jeremy Kerr ] + + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Leann Ogasawara ] + + * Reinstate dropped.txt from Ubuntu-3.7.0-0.1-rc1 + + [ Tim Gardner ] + + * [Config] Dropped powerpc/ppc64 in favour of the community kernel + * [Config] CONFIG_MODULE_SIG=y for amd64,i386, and highbank + * rebase to v3.7-rc4 + * SAUCE: MODSIGN: Emit error for incorrectly signed module + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc4 + + -- Tim Gardner Mon, 05 Nov 2012 05:35:41 -0700 + +linux (3.7.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc3 + - LP: #1056078 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc2 + - LP: #1060729 + - LP: #1059523 + - LP: #1006690 + - LP: #1049623 + - LP: #1046512 + - LP: #1052499 + - LP: #1037642 + - LP: #559939 + - LP: #1052460 + - LP: #939161 + - LP: #1046734 + + -- Tim Gardner Tue, 02 Oct 2012 08:13:07 -0600 + +linux (3.6.0-0.1) UNRELEASED; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.6 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc6 + - LP: #1000424 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc5 + - LP: #1040077 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc3 + - LP: #1038651 + - LP: #1034779 + + -- Leann Ogasawara Tue, 24 Jul 2012 06:37:09 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 + --- linux-4.4.0.orig/debian/cloud-tools/hv_get_dhcp_info +++ linux-4.4.0/debian/cloud-tools/hv_get_dhcp_info @@ -0,0 +1,55 @@ +#!/bin/bash + +# This example script retrieves the DHCP state of a given interface. +# In the interest of keeping the KVP daemon code free of distro specific +# information; the kvp daemon code invokes this external script to gather +# DHCP setting for the specific interface. +# +# Input: Name of the interface +# +# Output: The script prints the string "Enabled" to stdout to indicate +# that DHCP is enabled on the interface. If DHCP is not enabled, +# the script prints the string "Disabled" to stdout. +# +# Each Distro is expected to implement this script in a distro specific +# fashion. + +#set -x + +IF_FILE="/etc/network/interfaces" +NMCMD="nmcli" + +function checknetworkmanager { + #Assumes if $NMCMD exists, inteface exists and interface is not + # in $IF_FILE then dhcp is being used by NM + if hash $NMCMD >/dev/null 2>&1 ; then + if $NMCMD dev status |grep -q $1 ; then + echo "Enabled" + else + echo "Disabled" + fi + else + #Give up + echo "Disabled" + fi +} + +if [ -z $1 ] ; then echo "Disabled"; exit; fi + +if [ -e $IF_FILE ]; then + if grep -v -e "^#" $IF_FILE|grep -q $1 ; then + #interface exists so + if grep -q -e $1\.\*dhcp $IF_FILE; then + echo "Enabled"; exit; + else + echo "Disabled"; exit; + fi + else + checknetworkmanager $1 + exit + fi +else + checknetworkmanager $1 + exit +fi + --- linux-4.4.0.orig/debian/cloud-tools/hv_get_dns_info +++ linux-4.4.0/debian/cloud-tools/hv_get_dns_info @@ -0,0 +1,13 @@ +#!/bin/bash + +# This example script parses /etc/resolv.conf to retrive DNS information. +# In the interest of keeping the KVP daemon code free of distro specific +# information; the kvp daemon code invokes this external script to gather +# DNS information. +# This script is expected to print the nameserver values to stdout. +# Each Distro is expected to implement this script in a distro specific +# fashion. For instance on Distros that ship with Network Manager enabled, +# this script can be based on the Network Manager APIs for retrieving DNS +# entries. + +cat /etc/resolv.conf 2>/dev/null | awk '/^nameserver/ { print $2 }' --- linux-4.4.0.orig/debian/cloud-tools/hv_set_ifconfig +++ linux-4.4.0/debian/cloud-tools/hv_set_ifconfig @@ -0,0 +1,263 @@ +#!/usr/bin/python3 +# +# hv_set_ifconfig -- take the hv_kvp_daemon generated configuration +# file and apply it to the Ubuntu configuration. +# + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# DHCP=yes + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# IPADDR=192.168.99.10 +# GATEWAY=192.168.99.1 +# DNS1=192.168.88.250 +# IPADDR2=192.168.99.11 +# IPV6ADDR=2001:DB8:99::10 +# IPV6NETMASK=64 +# IPV6_DEFAULTGW=2001:DB8:99::10 + +# set interfaces in hv_kvp_daemon style +import fileinput +import sys +import errno +import os +import shutil +import tempfile +import subprocess + +if_filename="/etc/network/interfaces" + +# Drop our output (XXX?) +sys.stdout = open(os.devnull, 'w') +sys.stderr = open(os.devnull, 'w') + +# Confirm we can open the network configuration. +try: + if_file=open(if_filename,"r+") +except IOError as e: + exit(e.errno) +else: + if_file.close() + +# Usage: hv_set_ifconfig +if len(sys.argv) != 2 : + exit(errno.EINVAL) + +# +# Here is the format of the ip configuration file: +# +# HWADDR=macaddr +# DEVICE=interface name +# BOOTPROTO= (where is "dhcp" if DHCP is configured +# or "none" if no boot-time protocol should be used) +# +kvp=dict(line.strip().split("=") for line in fileinput.input()) + +# Setting the hwaddress to something azure is not expecting is fatal +# to networking. +if not "HWADDR" in kvp : + exit(errno.EPROTO) + +# Confirm we have a device specified. +if not "DEVICE" in kvp : + exit(1) + +output=[] +basename=kvp["DEVICE"] + +if "DHCP" in kvp and kvp["DHCP"]=="yes" : + output += ["auto " + basename] + output += ["iface " + basename + " inet dhcp"] + output += [""] +else: + # Matchup the interface specific lines + + # DNS entries will go with the first interface + # and there can be a max of three + autolist=[] + dns=[] + if "DNS1" in kvp : + dns+=[kvp["DNS1"]] + if "DNS2" in kvp : + dns+=[kvp["DNS2"]] + if "DNS3" in kvp : + dns+=[kvp["DNS3"]] + + + # No real max for the number of interface + aliases ... + # only required is the address (but mate everything up that comes in. + + # IPv4 + v4names=[name for name in kvp.keys() if name.startswith("IPADDR")] + v4names.sort() + + if_count=0 + for v4 in v4names: + ifname=basename + suffix="" + if if_count : + ifname+=":" + str(if_count) + suffix="_"+str(if_count) + if not ifname in autolist: + autolist += [ifname] + output += [ "iface " + ifname + " inet static"] + output += [ "\t" + "address " + kvp[v4]] + if "NETMASK"+suffix in kvp.keys(): + output += ["\tnetmask " + kvp["NETMASK"+suffix]] + if "GATEWAY"+suffix in kvp.keys(): + output += ["\tgateway " + kvp["GATEWAY"+suffix]] + if not if_count : + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + if_count+=1 + + + # IPv6 requires a netmask + # If an ipv6 exists, you'll want to turn off /proc/sys/net/ipv6/conf/all/autoconf with + # echo 0 > /proc/sys/net/ipv6/conf/all/autoconf + v6names=[name for name in kvp.keys() if name.startswith("IPV6ADDR")] + v6names.sort() + + if6_count=0 + if6_used=0 + for v6 in v6names: + ifname=basename + suffix="" + if if6_used : + ifname+=":" + str(if6_used) + if if6_count : + suffix="_" + str(if6_count) + if not ifname in autolist: + autolist += [ifname] + if "IPV6NETMASK"+suffix in kvp.keys(): + output += [ "iface " + ifname + " inet6 static"] + output += [ "\taddress " + kvp[v6]] + output += [ "\tnetmask " + kvp["IPV6NETMASK"+suffix]] + if "IPV6_DEFAULTGW"+suffix in kvp.keys(): + output += [ "\tgateway " + kvp["IPV6_DEFAULTGW"+suffix] ] + if not if_count : + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + if_count += 1 + if6_used += 1 + if6_count += 1 + + # Mark this new interface for automatic up. + output = ["auto "+" ".join(autolist)] + output + +print("===================================") +print(output) +print("===================================") + + +''' Time to clean out the existing interface file''' + +# Markers. +start_mark = "# The following stanza(s) added by hv_set_ifconfig" +end_mark = "#End of hv_set_ifconfig stanzas" + +f=open(if_filename,"r") +flines=f.readlines() +f.close() +newfile=[] +pitchstanza=0 +inastanza=0 +stanza=[] +prev_line=None +for line in flines: + if line.startswith("auto"): + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza=0 + newline="" + autoline=line.strip().split(" ") + for word in autoline: + if (not word == basename) and (not word.startswith(basename+":")): + newline+=word + " " + newline = newline.strip() + if not newline == "auto": + newfile += [newline.strip()] + elif line.startswith(("iface","mapping","source")): + '''Read a stanza''' + '''A Stanza can also start with allow- ie allow-hotplug''' + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza=1 + pitchstanza=0 + autoline=line.strip().split(" ") + for word in autoline: + if (word == basename) or (word.startswith(basename+":")): + pitchstanza=1 + if not pitchstanza: + stanza+=[line.strip()] + elif line.strip() in (start_mark, end_mark): + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza = 0 + pitchstanza = 0 + # Deduplicate markers. + if line != prev_line: + newfile += [line.strip()] + else: + if inastanza: + if not pitchstanza: + stanza+=[line.strip()] + else: + if not pitchstanza: + newfile += [line.strip()] + prev_line=line + + + +def emit(line): + print(line) + output = line + "\n" + os.write(fd, output.encode('utf-8')) + +# Insert the new output at the end and inside the existing markers if found. +emitted = False +fd, path = tempfile.mkstemp() +for line in newfile: + if line == end_mark: + emit("\n".join(output)) + emitted = True + emit(line) +if not emitted: + emit(start_mark) + emit("\n".join(output)) + emit(end_mark) +os.close(fd) + +shutil.copy(path,if_filename) +os.chmod(if_filename,0o644) + +#print("TMPFILE is at: " + path) +#print("Copied file is at: " + if_filename) + +try: + retcode = subprocess.call("ifdown "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) + +try: + retcode = subprocess.call("ifup "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) --- linux-4.4.0.orig/debian/commit-templates/bumpabi +++ linux-4.4.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-4.4.0.orig/debian/commit-templates/config-updates +++ linux-4.4.0/debian/commit-templates/config-updates @@ -0,0 +1,15 @@ +# +# This template is used for commit messages that don't need to +# show up in debian/changelog. Administrative stuff like config +# updates, ABI bumps, etc. Setting 'Ignore: yes' prevents +# 'debian/rules insertchanges' from inserting this commit meesage +# as a changelog entry. +# +# Please give a one-line description of the config change followed +# by a detailed explanation if necessary + +UBUNTU: [Config] XXXX + +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-4.4.0.orig/debian/commit-templates/external-driver +++ linux-4.4.0/debian/commit-templates/external-driver @@ -0,0 +1,20 @@ +# Ubuntu external driver commit. +# +# NOTE: This gets reformatted for README.Ubuntu-External-Drivers and +# debian/changelog. +# +# This is only needed when a driver is added, updated or removed. It is +# not needed when patches or fixes are applied to the driver. If the +# driver is being removed, add the line: +# +# Removing: yes +# +# to the commit, and you can remove all other tags (except UBUNTU:). +# +UBUNTU: + +ExternalDriver: +Description: +Url: +Mask: +Version: --- linux-4.4.0.orig/debian/commit-templates/missing-modules +++ linux-4.4.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-4.4.0.orig/debian/commit-templates/newrelease +++ linux-4.4.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-4.4.0.orig/debian/commit-templates/sauce-patch +++ linux-4.4.0/debian/commit-templates/sauce-patch @@ -0,0 +1,40 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# +# SAUCE refers to the fact that this patch might not go upstream, but we need to +# carry it to successive releases. In most cases you DONOT want to use this +# template. +# +# An example of a SAUCE patch is the ACPI DSDT-in-initramfs patch which has been +# refused upstream, but still provides useful functionality to users with broken +# BIOSes. +# +#------------------------------------------------------------------------- +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: SAUCE: + + + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-4.4.0.orig/debian/commit-templates/upstream-patch +++ linux-4.4.0/debian/commit-templates/upstream-patch @@ -0,0 +1,27 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: [Upstream] + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-4.4.0.orig/debian/compat +++ linux-4.4.0/debian/compat @@ -0,0 +1 @@ +5 --- linux-4.4.0.orig/debian/control +++ linux-4.4.0/debian/control @@ -0,0 +1,962 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf i386 powerpc ppc64el] , + openssl , + libssl-dev , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-4.4.0 +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 4.4.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 4.4.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 4.4.0 + This package provides the various documents in the 4.4.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-headers-4.4.0-6 +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 4.4.0 + This package provides kernel header files for version 4.4.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el s390x +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 4.4.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-tools-4.4.0-6 +Build-Profiles: +Architecture: i386 amd64 armhf arm64 powerpc ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + You probabaly want to install linux-tools-4.4.0-6-. + +Package: linux-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Replaces: linux-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version 4.4.0 + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PGKVER. + +Package: linux-cloud-tools-4.4.0-6 +Build-Profiles: +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version 4.4.0-6 on + 64 bit x86. + You probabaly want to install linux-cloud-tools-4.4.0-6-. + + +Package: linux-image-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-generic +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-generic-dbgsym +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-generic +Build-Profiles: +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-generic +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 armhf arm64 ppc64el s390x +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel [armhf] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-generic-lpae +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-generic-lpae, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-generic-lpae-dbgsym +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-generic-lpae +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: armhf +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-lowlatency +Description: Linux kernel image for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-lowlatency, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64 bit x86 SMP + This package provides kernel header files for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-lowlatency-dbgsym +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 4.4.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-lowlatency +Build-Profiles: +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-lowlatency +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: i386 amd64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc-e500mc +Description: Linux kernel image for version 4.4.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel extra modules for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc-e500mc-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 4.4.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc-e500mc +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc-e500mc +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc-smp +Description: Linux kernel image for version 4.4.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 4.4.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 32-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 4.4.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc-smp-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 4.4.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc-smp +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-ieee1275 +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc64-emb +Description: Linux kernel image for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel image for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc64-emb, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package contains the Linux kernel extra modules for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP Book3E processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-emb meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package provides kernel header files for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc64-emb-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64-bit PowerPC SMP Book3E + This package provides a kernel debug image for version 4.4.0 on + 64-bit PowerPC SMP Book3E. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc64-emb +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc64-emb +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-image-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules, spl-dkms, zfs-dkms +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-4.4.0 | linux-source-4.4.0, linux-tools, linux-headers-4.4.0-6-powerpc64-smp +Description: Linux kernel image for version 4.4.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 4.4.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-4.4.0-6-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel extra modules for version 4.4.0 on 64-bit PowerPC SMP + This package contains the Linux kernel extra modules for version 4.4.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-4.4.0-6, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.4.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 4.4.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.4.0-6/debian.README.gz for details. + +Package: linux-image-4.4.0-6-powerpc64-smp-dbgsym +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.4.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 4.4.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-4.4.0-6 +Description: Linux kernel version specific tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.4.0-6 on + 64 bit x86. + +Package: linux-cloud-tools-4.4.0-6-powerpc64-smp +Build-Profiles: +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-4.4.0-6 +Description: Linux kernel version specific cloud tools for version 4.4.0-6 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 4.4.0-6 on + 64 bit x86. + +Package: linux-udebs-powerpc64-smp +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: powerpc +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + --- linux-4.4.0.orig/debian/control-scripts/extra-post +++ linux-4.4.0/debian/control-scripts/extra-post @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +case "$0::$1" in +*.postinst::configure|*.postrm::remove) + depmod -a -F /boot/System.map-=V =V || true + for dir in "/etc/kernel/postinst.d" "/etc/kernel/postinst.d/=V" + do + if [ -d "$dir" ]; then + run-parts --verbose --exit-on-error --arg="=V" --arg="/boot/=K-=V" "$dir" + fi + done + ;; +esac --- linux-4.4.0.orig/debian/control-scripts/headers-postinst +++ linux-4.4.0/debian/control-scripts/headers-postinst @@ -0,0 +1,126 @@ +#!/usr/bin/perl +# -*- Mode: Cperl -*- +# debian.postinst --- +# Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# Created On : Sat Apr 27 05:42:43 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:20:22 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 45 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# +# arch-tag: 1c716174-2f0a-476d-a626-a1322e62503a +# + + +$|=1; + +# Predefined values: +my $version = "=V"; +my $kimage = "=K"; +my $package_name = "linux-image-$version"; + + +# Ignore all invocations uxcept when called on to configure. +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /configure/); + +#known variables +my $image_dest = "/"; +my $realimageloc = "/boot/"; +my $silent_modules = ''; +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +chdir '/usr/src' or die "Could not chdir to /usr/src:$!"; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $header_postinst_hook = "$1" if /^\s*header_postinst_hook\s*=\s*(\S+)/ig; + } + close CONF; + } +} + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +## Run user hook script here, if any +if (-x "$header_postinst_hook") { + &run_hook("postinst", $header_postinst_hook); +} + +if (-d "/etc/kernel/header_postinst.d") { + print STDERR "Examining /etc/kernel/header_postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +if (-d "/etc/kernel/header_postinst.d/$version") { + print STDERR "Examining /etc/kernel/header_postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d/$version") && + die "Failed to process /etc/kernel/header_postinst.d/$version"; +} + +exit 0; + +__END__ --- linux-4.4.0.orig/debian/control-scripts/postinst +++ linux-4.4.0/debian/control-scripts/postinst @@ -0,0 +1,1112 @@ +#! /usr/bin/perl +# OriginalAuthor : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# +# Customized for Ubuntu by: Ben Collins + +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot or delo +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $relative_links = ""; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally we do not +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $notifier = "/usr/share/update-notifier/notify-reboot-required"; +my $package_name = "linux-image-$version"; +my $explicit_do_loader = 'Yes'; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; +$Loader = "ARCBOOT" if $loader =~ /^arcboot/io; +$Loader = "DELO" if $loader =~ /^delo/io; + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; + +# Ignore all invocations except when called on to configure. +exit 0 unless $ARGV[0] =~ /configure/; + +my $DEBUG = 0; + +# Do some preliminary sanity checks here to ensure we actually have an +# valid image dir +chdir('/') or die "could not chdir to /:$!\n"; +die "Internal Error: ($image_dir) is not a directory!\n" + unless -d $image_dir; + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; +die "Internal Error: ($realimageloc) is not a directory!\n" + unless -d $realimageloc; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlink\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $explicit_do_loader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $explicit_do_loader = "YES" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + + +# For some versions of kernel-package, we had this warning in the +# postinst, but the rules did not really interpolate the value in. +# Here is a sanity check. +my $pattern = "=" . "I"; +$initrd=~ s/^$pattern$//; + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; # same as realimageloc +} + +# Tack on at least one trainling / +$image_dest = "$image_dest/"; +$image_dest =~ s|^/*|/|o; +$image_dest =~ s|/+$|/|o; + +if (! -d "$image_dest") { + die "Expected Image Destination dir ($image_dest) to be a valid directory!\n"; +} + +# sanity +if (!($do_bootfloppy || $do_bootloader)) { + $do_boot_enable = ''; +} +if ($do_symlink && $no_symlink) { + warn "Both do_symlinks and no_symlinks options enabled; disabling no_symlinks\n"; + $no_symlink = 0; +} + +# most of our work is done in $image_dest (nominally /) +chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz"; } # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz"; } # Default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +die "Internal Error: Could not find image (" . $realimageloc + . "$kimage-$version)\n" unless -e $realimageloc + . "$kimage-$version"; + +# search for the boot loader in the path +my $loader_exec; +($loader_exec = $loader) =~ s|.*/||; +my ($loaderloc) = grep -x, map "$_/$loader_exec", + map { length($_) ? $_ : "." } split /:/, $ENV{PATH}; + + +###################################################################### +###################################################################### +########### Test whether a relative symlinkwould be OK ####### +###################################################################### +###################################################################### +sub test_relative { + my %params = @_; + my $cwd; + + die "Internal Error: Missing Required paramater 'Old Dir' " + unless $params{'Old Dir'}; + die "Internal Error: Missing Required paramater New Dir' " + unless $params{'New Dir'}; + + + die "Internal Error: No such dir $params{'Old Dir'} " + unless -d $params{'Old Dir'}; + die "Internal Error: No such dir $params{'New Dir'} " + unless -d $params{'New Dir'}; + + # If the caller specified a test file, and it does not exist try and find + # another file to use in its stead. As we are installing kernels we can + # use any versioned file from this kernel which should be in the same place. + if (defined $params{'Test File'} and + ! -f $params{'Old Dir'} . '/' . $params{'Test File'}) { + + my @possible = glob($params{'Old Dir'} . "/*$version*"); + if ($#possible >= 0) { + $params{'Test File'} = `basename "$possible[0]"`; + chomp($params{'Test File'}); + warn "Test relative: selected $params{'Test File'}" + if $DEBUG; + } + } + + warn "Test relative: testing $params{'Old Dir'} -> $params{'New Dir'}" + if $DEBUG; + chomp($cwd = `pwd`); + chdir ($params{'New Dir'}) or die "Could not chdir to $params{'New Dir'}:$!"; + my $ok = 0; + $params{'Old Dir'} =~ s|^/*||o; + if (-d $params{'Old Dir'} ) { + if (defined $params{'Test File'}) { + if (-e $params{'Old Dir'} . $params{'Test File'}) { + $ok = 1; + } + } else { + $ok = 1; # well, backward compatibility + } + } + chdir ($cwd) or die "Could not chdir to $params{'New Dir'}:$!"; + return $ok; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# sub CanonicalizePath { +# my $path = join '/', @_; +# my @work = split '/', $path; +# my @out; +# my $is_absolute; + +# if (@work && $work[0] eq "") { +# $is_absolute = 1; shift @work; +# } + +# while (@work) { +# my $seg = shift @work; +# if ($seg eq "." || $seg eq "") { +# } +# elsif ($seg eq "..") { +# if (@out && $out[-1] ne "..") { +# pop @out; +# } +# else { +# # Leading "..", or "../..", etc. +# push @out, $seg; +# } +# } +# else { +# push @out, $seg; +# } +# } + +# unshift @out, "" if $is_absolute; +# return join('/', @out); +# } +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + +sub spath { + my %params = @_; + + die "Missing Required paramater 'Old'" unless $params{'Old'}; + die "Missing Required paramater 'New'" unless $params{'New'}; + + my @olddir = split '/', `readlink -q -m $params{'Old'}`; + my @newdir = split '/', `readlink -q -m $params{'New'}`; + my @outdir = @olddir; + + my $out = ''; + my $i; + for ($i = 0; $i <= $#olddir && $i <= $#newdir; $i++) { + $out++ if ($olddir[$i] ne $newdir[$i]); + shift @outdir unless $out; + unshift @outdir, ".." if $out; + } + if ($#newdir > $#olddir) { + for ($i=0; $i < $#newdir; $i++) { + unshift @outdir, ".."; + } + } + return join ('/', @outdir); +} +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + + +# This routine actually moves the kernel image +# From: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +# To: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# Note that the image is moved to a versioned destination, but ordinary +# symlinks we create otherwise are not normally versioned +sub really_move_image { + my $src_dir = $_[0]; + my $target = $_[1]; + my $dest_dir = $_[2]; + + warn "Really move image: src_dir=$src_dir, target=$target,\n destdir=$dest_dir" + if $DEBUG; + if (-e "$target") { + # we should be in dir $dest_dir == $image_dest /, normally + rename("$target", "$target.$$") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target $target.$$" if $DEBUG; + } + warn "mv -f $src_dir$target $target" if $DEBUG; + my $ret = system("mv -f " . $src_dir . "$target " . + " $target"); + if ($ret) { + die("Failed to move " . $src_dir . "$target to " + . $dest_dir . "$target"); + } + # Ok, now we may clobber the previous .old files + if (-e "$target.$$") { + rename("$target.$$", "$target.old") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target.$$ $target " if $DEBUG; + } +} + +# Normally called after really_move_image; and only called if we asked for +# reversed link this routine reverses the symbolic link that is notmally +# created. Since the real kernel image has been moved over to +# $image_dest/$kimage-$version. So, this routine links +# From: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# To: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +sub really_reverse_link { + my $src_dir = $_[0]; + my $link_name = $_[1]; + my $dest_dir = $_[2]; + warn "Really reverse link: src_dir=$src_dir, link name=$link_name\n" . + "\tdestdir=$dest_dir" if $DEBUG; + + my $Old = $dest_dir; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $src_dir, + 'Test File' => "$link_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$src_dir" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + link($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to link " . $dest_dir . "$link_name to " . $src_dir . + "$link_name:$!"); + warn "ln " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } + else { + symlink($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to symbolic-link " . $dest_dir . "$link_name to " . $src_dir + . "$link_name:$!"); + warn "ln -s " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } +} + +# This routine is invoked if there is a symbolic link in place +# in $image_dest/$kimage -- so a symlink exists in the destination. +# What we are trying to determine is if we need to move the symbolic link over +# to the the .old location +sub move_p { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + my $force_move = 0; + warn "Move?: kimage=$kimage, image_dest=$image_dest, \n" . + "\timage_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink || $reverse_symlink) { + # we do not want links, yet we have a symbolic link here! + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though no_symlink is defined\n" if $no_symlink; + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though reverse_symlink is defined\n" if $reverse_symlink; + # make sure we change this state of affairs + $force_move = 1; + return $force_move; + } + + warn "DEBUG: OK. We found symlink, and we should have a symlink here.\n" + if $DEBUG; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + my $target = `readlink -q -m "${realimageloc}${kimage}-${version}"`; + $real_target = abs_path($vmlinuz_target) if defined($vmlinuz_target); + + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a dangling link" . + "to $real_target\n"; + $force_move = 1; + return $force_move; + } + + + warn "DEBUG: The link $kimage points to ($vmlinuz_target)\n" if $DEBUG; + warn "DEBUG: ($vmlinuz_target) is really ($real_target)\n" if $DEBUG; + my $cwd; + chomp ($cwd=`pwd`); + if ($vmlinuz_target !~ m|^/|o) { + $vmlinuz_target = $cwd . "/" . $vmlinuz_target; + $vmlinuz_target =~ s|/+|/|o; + } + $vmlinuz_target = `readlink -q -m $vmlinuz_target`; + + if ("$vmlinuz_target" ne "$target") { + warn "DEBUG: We need to handle this.\n" if $DEBUG; + if ($minimal_swap) { + warn "DEBUG: Minimal swap.\n" if $DEBUG; + if (-l "$kimage.old") { + warn "DEBUG: There is an old link at $kimage.old\n" if $DEBUG; + my $old_target = readlink "$kimage.old"; + my $real_old_target = ''; + $real_old_target=abs_path($old_target) if defined ($old_target); + + if ($real_old_target && -f "$real_old_target") { + if ($old_target !~ m|^/|o) { + $old_target = $cwd . "/" . $old_target; + $old_target =~ s|/+|/|o; + } + $old_target = `readlink -q -m $old_target`; + if ("$old_target" ne "$target") { + $force_move = 1; + warn "DEBUG: Old link ($old_target) does not point to us ($target)\n" + if $DEBUG; + } + else { # The .old points to the current + warn "$kimage.old --> $target -- doing nothing"; + $force_move = 0; + } + } + else { + warn "DEBUG: Well, the old link does not exist -- so we move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: No .old link -- OK to move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: ok, minimal swap is no-- so we move.\n" + if $DEBUG; + $force_move = 1; + } + } + else { # already have proper link + warn "$kimage($vmlinuz_target) points to $target ($real_target) -- doing nothing"; + $force_move = 0; + } + return $force_move; +} + + +# This routine moves the symbolic link around (/vmlinuz -> /vmlinuz.old) +# It pays attention to whether we should the fact whether we should be using +# hard links or not. +sub really_move_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "really_move_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # don't clobber $kimage.old quite yet + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + my $Old = $src_dir; + my $cwd; + + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln ${Old}${image_name} $kimage" if $DEBUG; + if (! link("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + else { + warn "ln -s ${Old}${image_name} $kimage" if $DEBUG; + if (! symlink("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to symbolic-link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + + # Ok, now we may clobber the previous .old file + if (-l "$kimage.old" || ! -e "$kimage.old" ) { + rename("$kimage.$$", "$kimage.old"); + warn "mv $kimage.$$ $kimage.old" if $DEBUG; + } + else { + warn "$kimage.old is not a symlink, not clobbering\n"; + warn "rm $kimage.$$"; + unlink "$kimage.$$" if $DEBUG; + } +} + +# This routine handles a request to do symlinks, but there is no +# symlink file already there. Either we are supposed to use copy, or we are +# installing on a pristine system, or the user does not want symbolic links at +# all. We use a configuration file to tell the last two cases apart, creating +# a config file if needed. +sub handle_missing_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_missing_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink) { + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc . + "$image_name " . " $kimage"); + if ($ret) { + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + elsif ($reverse_symlink) { + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . "$kimage"); + if ($ret) { + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + else { + if (! $have_conffile) { + my $ret; + my $answer=''; + $do_symlink = "Yes"; + + if (open(CONF, ">$CONF_LOC")) { + print CONF "# Kernel Image management overrides\n"; + print CONF "# See kernel-img.conf(5) for details\n"; + if ($loader =~ /palo/i) { + print CONF "link_in_boot = Yes\n"; + print CONF "do_symlinks = Yes\n"; + print CONF "relative_links = Yes\n"; + print CONF "do_bootloader = No\n"; + } else { + print CONF "do_symlinks = $do_symlink\n"; + } + close CONF; + } + $have_conffile = "Yes"; + } + } + + if (! $no_symlink && $do_symlink =~ /Yes/i) { + my $Old = $realimageloc; + my $New = $image_dest; + my $Name = "$image_name"; + my $Link_Dest = "$kimage"; + + if ($reverse_symlink) { + $Old = $image_dest; + $New = $realimageloc; + $Name = "$kimage"; + $Link_Dest = $realimageloc . "$image_name"; + } + if (test_relative ('Old Dir' => $Old, + 'New Dir' => $New, + 'Test File' => $Name)) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$New" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + symlink($Old . "$Name", "$Link_Dest") || + die("Failed to symbolic-link ${Old}$Name to $Link_Dest:$!"); + warn "ln -s ${Old}$Name $Link_Dest" if $DEBUG; + + } +} + +# This routine handles the rest of the cases, where the user has requested +# non-traditional handling, like using cp, or reverse symlinks, or hard links. +sub handle_non_symlinks { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_non_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Save the current image. We do this in all four cases + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + + ##,#### + # case One + #`#### + if ($no_symlink) { + # Maybe /$image_dest is on a dos system? + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Two + #`#### + elsif ($reverse_symlink) { # Maybe /$image_dest is on a dos system? + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . $image_dest . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + my $Old = $image_dest; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $realimageloc, + 'Test File' => "$kimage")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$realimageloc" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! link($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not link " . $image_dest . + "$kimage to $image_name :$!"; + } + } + else { + warn "ln -s " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! symlink($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not symlink " . $image_dest . + "$kimage to $image_name :$!"; + } + } + } + ##,#### + # case Three + #`#### + elsif ($use_hard_links =~ m/YES/i ) { + # Ok then. this ought to be a hard link, and hence fair game + # don't clobber $kimage.old quite yet + my $Old = $realimageloc; + my $cwd; + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + warn "ln " . $Old . "$image_name " . "$kimage" if $DEBUG; + if (! link($Old . "$image_name", "$kimage")) { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + die("Failed to link " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Four + #`#### + else { + # We just use cp + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + # Ok, now we may clobber the previous .old file + warn "mv $kimage.$$ $kimage.old if -e $kimage.$$" if $DEBUG; + rename("$kimage.$$", "$kimage.old") if -e "$kimage.$$"; +} + +# This routine is responsible for setting up the symbolic links +# So, the actual kernel image lives in +# $realimageloc/$image_name (/boot/vmlinuz-2.6.12). +# This routine creates symbolic links in $image_dest/$kimage (/vmlinuz) +sub image_magic { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = "$kimage-$version"; + my $src_dir = $realimageloc; + warn "image_magic: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Well, in any case, if the destination (the symlink we are trying + # to create) is a directory, we should do nothing, except throw a + # diagnostic. + if (-d "$kimage" ) { + die ("Hmm. $kimage is a directory, which I did not expect. I am\n" . + "trying to create a symbolic link with that name linked to \n" . + "$image_dest . Since a directory exists here, my assumptions \n" . + "are way off, and I am aborting.\n" ); + exit (3); + } + + if ($move_image) { # Maybe $image_dest is in on dos, or something? + # source dir, link name, dest dir + really_move_image( $realimageloc, $image_name, $image_dest); + really_reverse_link($realimageloc, $image_name, $image_dest) + if $reverse_symlink; + return; + } + + if (-l "$kimage") { # There is a symbolic link + warn "DEBUG: There is a symlink for $kimage\n" if $DEBUG; + my $force_move = move_p($kimage, $image_dest, $image_name, $src_dir); + + if ($force_move) { + really_move_link($kimage, $image_dest, $image_name, $src_dir); + } + } + elsif (! -e "$kimage") { + # Hmm. Pristine system? How can that be? Installing from scratch? + # Or maybe the user does not want a symbolic link here. + # Possibly they do not want a link here. (we should be in / + # here[$image_dest, really] + handle_missing_link($kimage, $image_dest, $image_name, $src_dir); + } + elsif (-e "$kimage" ) { + # OK, $kimage exists -- but is not a link + handle_non_symlinks($kimage, $image_dest, $image_name, $src_dir); + } +} + +###################################################################### +###################################################################### +###################################################################### +###################################################################### + +# We may not have any modules installed +if ( -d "$modules_base/$version" ) { + print STDERR "Running depmod.\n"; + my $ret = system("depmod -a $version"); + if ($ret) { + print STDERR "Failed to run depmod\n"; + exit(1); + } +} + + + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + print STDERR "Finding valid ramdisk creators.\n"; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +# The initrd symlink should probably be in the same dir that the +# symlinks are in +if ($initrd) { + my $success = 0; + + # Update-initramfs is called slightly different than mkinitrd and + # mkinitramfs. XXX It should really be made compatible with this stuff + # some how. + my $upgrading = 1; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + $upgrading = 0; + } + my $ret = system("$ramdisk " . ($upgrading ? "-u" : "-c") . " -k " . $version . " >&2"); + $success = 1 unless $ret; + die "Failed to create initrd image.\n" unless $success; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic("initrd.img", $image_dest); + } + else { + lstat("initrd.img"); + if (! -e _) { + handle_missing_link("initrd.img", $image_dest, "initrd.img-$version", + $realimageloc); + } + else { + print STDERR + "Not updating initrd symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } + } + + if ($initrd && -l "initrd" ) { + unlink "initrd"; + } + + if ($initrd && -l "$image_dir/initrd" && ! $link_in_boot) { + unlink "$image_dir/initrd"; + } +} +else { # Not making an initrd emage + if (-l "initrd.img") { + # Ooh, last image was an initrd image? in any case, we should move it. + my $target = readlink "initrd.img"; + my $real_target = ''; + $real_target = abs_path($target) if defined ($target); + + if (!defined($target) || ! -f "$real_target") { + # Eh. dangling link. can safely be removed. + unlink("initrd.img"); + } else { + if (-l "initrd.img.old" || ! -e "initrd.img.old" ) { + rename("initrd.img", "initrd.img.old"); + } else { + warn "initrd.img.old is not a symlink, not clobbering\n"; + unlink("initrd.img"); + } + } + } +} + +# Warn of a reboot +if (-x $notifier) { + system($notifier); +} + +# Let programs know not to hibernate if the kernel that would be used for +# resume-from-hibernate is likely to differ from the currently running kernel. +system("mountpoint -q /var/run"); +if ($? eq 0) { + system("touch /var/run/do-not-hibernate"); +} + +# Only change the symlinks if we are not being upgraded +if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic($kimage, $image_dest); +} +else { + lstat("$kimage"); + if (! -e _) { + handle_missing_link($kimage, $image_dest, "$kimage-$version", + $realimageloc); + } + else { + print STDERR + "Not updating image symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } +} + +# We used to have System.* files in / +if (-e "/System.map" || -e "/System.old") { + unlink '/System.map' if -e '/System.map'; + unlink '/System.old' if -e '/System.old'; +} + +# creating some info about kernel and initrd +if ($DEBUG) { + my $ksize=sprintf("%.0f",(stat($realimageloc . + "$kimage-$version"))[7]/1024)."kB"; + my $initrdsize=''; + if ($initrd) { + $initrdsize=sprintf("%.0f",(stat($realimageloc . + "initrd.img-$version"))[7]/1024)."kB"; + } + + print STDERR <<"EOMSG"; +A new kernel image has been installed at $realimageloc$kimage-$version + (Size: $ksize) + +Symbolic links, unless otherwise specified, can be found in $image_dest + +EOMSG + ; + + if ($initrd) { + print STDERR <<"EOMSGA"; + + Initial rootdisk image: ${realimageloc}initrd.img-$version (Size: $initrdsize) +EOMSGA + ; + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postinst_hook) { + &run_hook("postinst", $postinst_hook); +} + +if (-d "/etc/kernel/postinst.d") { + print STDERR "Examining /etc/kernel/postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d") && + die "Failed to process /etc/kernel/postinst.d"; +} + +if (-d "/etc/kernel/postinst.d/$version") { + print STDERR "Examining /etc/kernel/postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d/$version") && + die "Failed to process /etc/kernel/postinst.d/$version"; +} + +LOADER: { + last unless $do_boot_enable; # Exit if explicitly asked to + + last if $loader =~ /silo/i; # SILO does not have to be executed. + last if $loader =~ /yaboot/i; # yaboot does not have to be executed. + last if $loader =~ /milo/i; # MILO does not have to be executed. + last if $loader =~ /nettrom/i; # NETTROM does not have to be executed. + last if $loader =~ /arcboot/i; # ARCBOOT does not have to be executed. + last if $loader =~ /delo/i; # DELO does not have to be executed. + last if $loader =~ /quik/i; # maintainer asked quik invocation to be ignored + + last unless $loaderloc; + last unless -x $loaderloc; + last unless $do_bootloader; + + if (-T "/etc/$loader.conf") { + # Trust and use the existing lilo.conf. + print STDERR "You already have a $Loader configuration in /etc/$loader.conf\n"; + my $ret = &run_lilo(); + exit $ret if $ret; + } +} + + +sub run_lilo (){ + my $ret; + # Try and figure out if the user really wants lilo to be run -- + # since the default is to run the boot laoder, which is ! grub -- but + # the user may be using grub now, and not changed the default. + + # So, if the user has explicitly asked for the loader to be run, or + # if there is no postinst hook, or if there is no grub installed -- + # we are OK. Or else, we ask. + if ($explicit_do_loader || (! ($postinst_hook && -x '/usr/sbin/grub'))) { + print STDERR "Running boot loader as requested\n"; + } else { + print STDERR "Ok, not running $loader\n"; + } + if ($loader =~ /^lilo/io or $loader =~ /vmelilo/io) { + print STDERR "Testing $loader.conf ... \n"; + unlink $temp_file_name; # security + $ret = system("$loaderloc -t >$temp_file_name 2>&1"); + if ($ret) { + print STDERR "Boot loader test failed\n"; + return $ret; + } + unlink "$temp_file_name"; + print STDERR "Testing successful.\n"; + print STDERR "Installing the "; + print STDERR "partition " if $loader =~ /^lilo/io; + print STDERR "boot sector... \n"; + } + + print STDERR "Running $loaderloc ... \n"; + if ($loader =~ /^elilo/io) { + $ret = system("$loaderloc 2>&1 | tee $temp_file_name"); + } else { + $ret = system("$loaderloc >$temp_file_name 2>&1"); + } + if ($ret) { + print STDERR "Boot loader failed to run\n"; + return $ret; + } + unlink $temp_file_name; + print STDERR "Installation successful.\n"; + return 0; +} + +exit 0; + +__END__ + --- linux-4.4.0.orig/debian/control-scripts/postrm +++ linux-4.4.0/debian/control-scripts/postrm @@ -0,0 +1,361 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.postrm --- +# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) +# Created On : Sat May 15 11:05:13 1999 +# Created On Node : glaurung.green-gryphon.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Wed Sep 13 11:26:19 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 57 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# $Id: image.postrm,v 1.31 2003/10/07 16:24:20 srivasta Exp $ +# + + +# +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally, we don't +my $warn_initrd = 'YES'; # Normally we do +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # we shall not create a dangling link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +chdir('/') or die "could not chdir to /:$!\n"; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $warn_initrd = '' if /^\s*warn_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $warn_initrd = "Yes" if /^\s*warn_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; + $image_dest =~ s|^/*|/|o; +} + +$image_dest = "$image_dest/"; +$image_dest =~ s|/+$|/|o; + +# The destdir may be gone by now. +if (-d "$image_dest") { + chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; +} + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) {$kimage = "vmlinuz"} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage;} +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage;} +else {$kimage = "vmlinuz"} # default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub remove_sym_link { + my $bad_image = $_[0]; + + warn "Removing symbolic link $bad_image \n"; + if ($loader =~ /lilo/i) + { + warn "Unless you used the optional flag in lilo, \n"; + } + warn " you may need to re-run your boot loader" . ($loader ? "[$loader]":"") + . "\n"; + # Remove the dangling link + unlink "$bad_image"; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub CanonicalizePath { + my $path = join '/', @_; + my @work = split '/', $path; + my @out; + my $is_absolute; + + if (@work && $work[0] eq "") { $is_absolute = 1; shift @work; } + + while (@work) { + my $seg = shift @work; + if ($seg eq "." || $seg eq "") { + } elsif ($seg eq "..") { + if (@out && $out[-1] ne "..") { + pop @out; + } else { + # Leading "..", or "../..", etc. + push @out, $seg; + } + } else { + push @out, $seg; + } + } + + unshift @out, "" if $is_absolute; + return join('/', @out); +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# This removes dangling symlinks. What do we do about hard links? Surely a +# something with the nane $image_dest . "$kimage" ought not to be left behind? +sub image_magic { + my $kimage = $_[0]; + my $image_dest = $_[1]; + + if (-l "$kimage") { + # There is a symbolic link + my $force_move = 0; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + $real_target = abs_path($vmlinuz_target) if defined ($vmlinuz_target); + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a damaged link\n"; + # Remove the dangling link + &remove_sym_link("$kimage"); + } + else { + my $canonical_target = CanonicalizePath("$vmlinuz_target"); + if (! -e $canonical_target) { + warn "The link " . $image_dest . "$kimage is a dangling link\n"; + &remove_sym_link("$kimage"); + } + } + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + warn "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + warn "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postrm_hook) { + &run_hook("postrm", $postrm_hook); +} +if (-d "/etc/kernel/postrm.d") { + warn "Examining /etc/kernel/postrm.d .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d") && + die "Failed to process /etc/kernel/postrm.d"; +} +if (-d "/etc/kernel/postrm.d/$version") { + warn "Examining /etc/kernel/postrm.d/$version .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d/$version") && + die "Failed to process /etc/kernel/postrm.d/$version"; +} + +# check and remove damaged and dangling symlinks +if ($ARGV[0] !~ /upgrade/) { + system("$ramdisk -d -k " . $version . " > /dev/null 2>&1"); + if (-f $realimageloc . "initrd.img-$version.bak") { + unlink $realimageloc . "initrd.img-$version.bak"; + } + image_magic($kimage, $image_dest); + image_magic($kimage . ".old", $image_dest); + image_magic("initrd.img", $image_dest) if $initrd; + image_magic("initrd.img.old", $image_dest) if $initrd; +} + +exit 0; + +__END__ + + + + + + --- linux-4.4.0.orig/debian/control-scripts/preinst +++ linux-4.4.0/debian/control-scripts/preinst @@ -0,0 +1,315 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.preinst --- +# Author : Manoj Srivastava ( srivasta@tiamat.datasync.com ) +# Created On : Sun Jun 14 03:38:02 1998 +# Created On Node : tiamat.datasync.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Sun Sep 24 14:04:42 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 99 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# + +# +#use strict; #for debugging + +use Debconf::Client::ConfModule qw(:all); +version('2.0'); +my $capb=capb("backup"); + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom + # or elilo +my $image_dir = "/boot"; # where the image is located +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_src_link = 'YES'; # There is no harm in checking the link +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = ''; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; + +die "Pre inst Internal error. Aborting." unless $version; + +exit 0 if $ARGV[0] =~ /abort-upgrade/; +exit 1 unless $ARGV[0] =~ /(install|upgrade)/; + +$arch = `uname -i`; +if ($arch =~ m/86/) { + system ("grep -q ' pae ' /proc/cpuinfo"); + if ($?) { + print STDERR "This kernel does not support a non-PAE CPU.\n"; + exit 1; + } +} + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_src_link = '' if /^\s*relink_src_link\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_src_link = 'Yes' if /^\s*relink_src_link\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + $have_conffile = "Yes"; # stop perl complaining + } +} + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +# About to upgrade this package from version $2 TO THIS VERSION. +# "prerm upgrade" has already been called for the old version of +# this package. + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +sub check { + my $version = shift; + my $lib_modules="$modules_base/$version"; + my $message = ''; + + if (-d "$lib_modules") { + opendir(DIR, $lib_modules) || die "can’t opendir $lib_modules: $!"; + my @children = readdir(DIR); + if ($#children > 1) { + my @dirs = grep { -d "$lib_modules/$_" } @children; + if ($#dirs > 1) { # we have subdirs + my $dir_message=''; + for my $dir (@dirs) { + if ($dir =~/kernel$/) { + $dir_message="An older install was detected.\n"; + } + else { + $dir_message="Module sub-directories were detected.\n" + unless $dir_message; + } + } + $message += $dir_message if $dir_message; + } + + my @links = grep { -l "$lib_modules/$_" } @children; + if ($#links > -1) { + my $links_message = ''; + for my $link (@links) { + next if ($link =~ /^build$/); + next if ($link =~ /^source$/); + $links_message = "Symbolic links were detected in $modules_base/$version.\n"; + } + $message += $links_message if $links_message; + } + my @files = grep { -f "$lib_modules/$_" } @children; + $message += "Additional files also exist in $modules_base/$version.\n" + if ($#files > -1); + } + } + else { $message .= "$lib_modules does not exist. ";} + return $message; +} + +if (-d "$modules_base/$version") { + my $errors=check($version); + warn "Info:\n$errors\n" if $errors; +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$preinst_hook") { + &run_hook("preinst", $preinst_hook); +} +if (-d "/etc/kernel/preinst.d") { + print STDERR "Examining /etc/kernel/preinst.d/\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d") && + die "Failed to process /etc/kernel/preinst.d"; +} +if (-d "/etc/kernel/preinst.d/$version") { + print STDERR "Examining /etc/kernel/preinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d/$version") && + die "Failed to process /etc/kernel/preinst.d/$version"; +} +print STDERR "Done.\n"; + +exit 0; + +__END__ + + --- linux-4.4.0.orig/debian/control-scripts/prerm +++ linux-4.4.0/debian/control-scripts/prerm @@ -0,0 +1,312 @@ +#! /usr/bin/perl +# -*- Mode: Perl -*- +# image.prerm --- +# Author : root ( root@melkor.pilgrim.umass.edu ) +# Created On : Fri May 17 03:28:59 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:14:17 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 85 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# $Id: image.prerm,v 1.22 2003/10/07 16:24:20 srivasta Exp $ +# +# +#use strict; + +$|=1; +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlinks = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +my $DEBUG = 0; + +# Variables used +my $image=''; +my $ret=0; +my $seen=''; +my $answer=''; +my $running = ''; +my $WouldInvalidate = 0; + +if ($ARGV[0] && ($ARGV[0] =~ /remove/ || $ARGV[0] =~ /upgrade/)) { + if (-l "/usr/doc/linux-image-$version") { + unlink "/usr/doc/linux-image-$version"; + } +} + +# Ignore all invocations uxcept when called on to remove +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /remove/) ; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz";} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz";} # Default + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +#check to see if we are trying to remove a running kernel +# if so we abort right now. +chop($running=`uname -r`); +if ($running eq $version) { + print STDERR "WARN: Proceeding with removing running kernel image.\n"; +} + +#Now, they have an alternate kernel which they are currently running + +# This is just us being nice to lilo users. + +chdir("/") or die "could not chdir to /:$!\n"; + +if (-f "/etc/$loader.conf") { #I know, could be a link, but .. + open (LILO, "/etc/$loader.conf") || &success(); # this is not critical + while () { + chop; + s/\#.*//; # nix the comments + next unless /^\s*image\s*=\s(\S+)/o; + $image = $1; + if ($image && -e $image) { + while (defined($image) && -l $image) { + $image = readlink ($image); + } + if (defined($image) && -e $image) { + $WouldInvalidate |= $image =~ /$kimage-$version/; + } + else { + &success(); # invalid $loader.conf file + } + } + else { + &success(); # invalid $loader.conf file + } + } + close (LILO); + if ($WouldInvalidate) { + print STFERR "WARN: Proceeding with removing running kernel image.\n"; + &success(); + } +} + + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$prerm_hook") { + &run_hook("prerm", $prerm_hook); +} +if (-d "/etc/kernel/prerm.d") { + print STDERR "Examining /etc/kernel/prerm.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version /etc/kernel/prerm.d") && + die "Failed to process /etc/kernel/prerm.d"; +} +if (-d "/etc/kernel/prerm.d/$version") { + print STDERR "Examining /etc/kernel/prerm.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version " . + "/etc/kernel/prerm.d/$version") && + die "Failed to process /etc/kernel/prerm.d/$version"; +} + +sub success () { + # NOTE: need to keep this list in sync with rules.d/2-binary-arch.mk + my %files_to_keep = ( + 'modules.builtin' => 1, + 'modules.order' => 1, + ); + my $short; + for my $file () { + $short = $file; $short =~ s,.*/,,; + if (!defined $files_to_keep{$short}) { + unlink "$file"; + } + } + exit 0; +} + + + +&success(); +exit 0; +__END__ + + + + + --- linux-4.4.0.orig/debian/control.stub +++ linux-4.4.0/debian/control.stub @@ -0,0 +1 @@ +# placebo control.stub for kernel-wedge flow change --- linux-4.4.0.orig/debian/copyright +++ linux-4.4.0/debian/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-4.4.0.orig/debian/debian.env +++ linux-4.4.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.master --- linux-4.4.0.orig/debian/docs/README.inclusion-list +++ linux-4.4.0/debian/docs/README.inclusion-list @@ -0,0 +1,51 @@ +This README describes the reason for, and the use of, module +inclusion lists. + +The original Hardy release had the notion of sub-flavours, +e.g., a flavour that was constructed as a subset of an existing flavour. +For example, the virtual flavour was extracted from the server flavour using +a subset of the server flavour modules. However, there were some difficult +mainteneance issues with regard to packaging, make rules, and scripts. This +re-implementation of the sub-flavours philosophy is hopefully simpler, +and retrofitable to all releases. + +A module inclusion list looks at the problem of of constructing a package +from the perspective of what modules do we _want_ in the package, as opposed +to what modules we _don't_ want. As the kernel matures, more and more devices are added +which makes the problem of configuration maintenance a real pain in the ass. +If we took the approach of disabling all of the config options that we don't want, +then the differences between flavours will quickly become quite large, making +it difficult to quickly compare the individual flavour configs. Each time a +new config option is added then we also have to make a decision about disabling in +order to continue to keep the minimal number of modules. + +A module inclusion list is applied on a per-flavour basis. For example, +debian./control.d/${flavour}.inclusion-list. For example, the +config for virtual is very close to server and generic, but the inclusion list +causes the virtual package to be constructed with _only_ the modules described +in the inclusion list. + +The inclusion list format is a simple bash regular expression list of files. For example, + +arch/*/{crypto,kernel,oprofile} +drivers/acpi/* +drivers/ata/ahci.ko + +These 3 regular expression forms are suitable for expansion by bash and as inputs to 'find'. +See debian/scripts/module-inclusion for details. + +There are 2 log files created as a side effect of the application of the module +inclusion list; $(flavour).inclusion-list.log and $(flavour).depmod.log. + +$(flavour).inclusion-list.log : This log is created while the inclusion list +modules are being copied. If any are missing, then those warnings go in this log. +While its not considered a fatal error, you should endevour to correct your inclusion +list such that there are no missing modules. + +$(flavour).depmod.log : The log is created as a result of running depmod on the +resulting set of modules. If there are missing symbols then you'll find that information +here. Again, you should modify your inclusion list such that there are no missing +symbols. + +Tim Gardner +June 2, 2010 --- linux-4.4.0.orig/debian/gbp.conf +++ linux-4.4.0/debian/gbp.conf @@ -0,0 +1,2 @@ +[buildpackage] +debian-tag = Ubuntu-%(version)s --- linux-4.4.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.service +++ linux-4.4.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.service @@ -0,0 +1,12 @@ +# On Azure/Hyper-V systems start the hv_fcopy_daemon +# +# author "Andy Whitcroft " +[Unit] +Description=Hyper-V File Copy Protocol Daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_fcopy_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-4.4.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart +++ linux-4.4.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_fcopy_daemon +# +description "Hyper-V File Copy Protocol Daemon" +author "Andy Whitcroft " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_FCOPY_DAEMON" -eq 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company " +[Unit] +Description=Hyper-V KVP Protocol Daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_kvp_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-4.4.0.orig/debian/linux-cloud-tools-common.hv-kvp-daemon.upstart +++ linux-4.4.0/debian/linux-cloud-tools-common.hv-kvp-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_kvp_daemon +# +description "Hyper-V KVP Protocol Daemon" +author "Adam Conrad " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_KVP_DAEMON" = 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company " +[Unit] +Description=Hyper-V VSS Protocol Daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_vss_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-4.4.0.orig/debian/linux-cloud-tools-common.hv-vss-daemon.upstart +++ linux-4.4.0/debian/linux-cloud-tools-common.hv-vss-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_vss_daemon +# +description "Hyper-V VSS Protocol Daemon" +author "Ben Howard " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_VSS_DAEMON" -eq 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company +# + +DEBIAN=$(shell awk -F= '($$1 == "DEBIAN") { print $$2 }' $$new; \ + done + flavours="$(sort $(wildcard $(DEBIAN)/control.d/vars.* $(DEBIAN)/sub-flavours/*.vars))";\ + for i in $$flavours; do \ + $(SHELL) $(DROOT)/scripts/control-create $$i | \ + sed -e 's/PKGVER/$(release)/g' \ + -e 's/ABINUM/$(abinum)/g' \ + -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ + >> $(DEBIAN)/control.stub; \ + done + +.PHONY: debian/control +debian/control: $(DEBIAN)/control.stub + rm -rf $(builddir)/modules $(builddir)/firmware \ + $(builddir)/kernel-versions $(builddir)/package-list \ + $(builddir)/$(DEBIAN) + mkdir -p $(builddir)/modules/$(arch)/ + cp $(DEBIAN)/d-i/modules/* $(builddir)/modules/$(arch)/ + mkdir -p $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/firmware/* $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/package-list $(DEBIAN)/d-i/kernel-versions $(builddir)/ + touch $(builddir)/modules/$(arch)/kernel-image + # kernel-wedge needs to poke around in $(DEBIAN)/ + ln -nsf $(CURDIR)/debian $(builddir)/debian + + # Some files may need to differ between architectures + if [ -d $(DEBIAN)/d-i/modules-$(arch) ]; then \ + cp $(DEBIAN)/d-i/modules-$(arch)/* \ + $(builddir)/modules/$(arch)/; \ + fi + if [ -d $(DEBIAN)/d-i/firmware-$(arch) ]; then \ + cp $(DEBIAN)/d-i/firmware-$(arch)/* \ + $(builddir)/firmware/$(arch)/; \ + fi + + # Remove unwanted stuff for this architecture + if [ -r "$(DEBIAN)/d-i/exclude-modules.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-modules.$(arch); \ + ls $(builddir)/modules/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)/; xargs rm -f); \ + fi + if [ -r "$(DEBIAN)/d-i/exclude-firmware.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-firmware.$(arch); \ + ls $(builddir)/firmware/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)/; xargs rm -f); \ + fi + + # Per flavour module lists + flavour_modules=`ls $(DEBIAN)/d-i/modules.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_modules" != "" ]; then \ + for flav in $$flavour_modules; do \ + name=`echo $$flav | sed 's/.*\/modules.$(arch)-//'`; \ + mkdir $(builddir)/modules/$(arch)-$$name; \ + (cd $(builddir)/modules/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/modules/$(arch)-$$name/; tar xf -); \ + touch $(builddir)/modules/$(arch)-$$name/kernel-image; \ + done; \ + fi + flavour_firmware=`ls $(DEBIAN)/d-i/firmware.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_firmware" != "" ]; then \ + for flav in $$flavour_firmware; do \ + name=`echo $$flav | sed 's/.*\/firmware.$(arch)-//'`; \ + mkdir $(builddir)/firmware/$(arch)-$$name; \ + (cd $(builddir)/firmware/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/firmware/$(arch)-$$name/; tar xf -);\ + touch $(builddir)/firmware/$(arch)-$$name/kernel-image; \ + done; \ + fi + + # Some files may need to differ between flavours + flavour_module_dirs=`ls -d $(DEBIAN)/d-i/modules-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_module_dirs" ]; then \ + for flav in $$flavour_module_dirs; do \ + name=`echo $$flav | sed 's/.*\/modules-$(arch)-//'`; \ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + modules/$(arch)-$$name; \ + cp $$flav/* $(builddir)/modules/$(arch)-$$name/; \ + done; \ + fi + flavour_firmware_dirs=`ls -d $(DEBIAN)/d-i/firmware-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_firmware_dirs" ]; then \ + for flav in $$flavour_firmware_dirs; do \ + name=`echo $$flav | sed 's/.*\/firmware-$(arch)-//'`; \ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + firmware/$(arch)-$$name; \ + cp $$flav/* $(builddir)/firmware/$(arch)-$$name/; \ + done; \ + fi + + # Remove unwanted stuff for each flavour + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-modules.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-modules.$(arch)-//'`;\ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + $(builddir)/modules/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/modules/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-firmware.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-firmware.$(arch)-//'`;\ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + $(builddir)/firmware/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/firmware/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + + if [ ! -d $(builddir)/modules/$(build_arch) ]; then \ + mkdir -p $(builddir)/modules/$(build_arch); \ + cp $(builddir)/modules/$(arch)/* \ + $(builddir)/modules/$(build_arch); \ + fi + if [ ! -d $(builddir)/firmware/$(build_arch) ]; then \ + mkdir -p $(builddir)/firmware/$(build_arch); \ + cp $(builddir)/firmware/$(arch)/* \ + $(builddir)/firmware/$(build_arch); \ + fi + + echo "# placebo control.stub for kernel-wedge flow change" >debian/control.stub + cp $(DEBIAN)/control.stub debian/control + cd $(builddir) && LANG=C kernel-wedge gen-control >> $(CURDIR)/debian/control --- linux-4.4.0.orig/debian/rules.d/0-common-vars.mk +++ linux-4.4.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,241 @@ +# +# The source package name will be the first token from $(DEBIAN)/changelog +# +src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog) + +# Get some version info +release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog) +revisions := $(shell sed -n 's/^$(src_pkg_name)\ .*($(release)-\(.*\)).*$$/\1/p' $(DEBIAN)/changelog | tac) +revision ?= $(word $(words $(revisions)),$(revisions)) +prev_revisions := $(filter-out $(revision),0.0 $(revisions)) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) + +prev_fullver ?= $(shell dpkg-parsechangelog -l$(DEBIAN)/changelog -o1 -c1 | sed -ne 's/^Version: *//p') + +family=ubuntu + +# This is an internally used mechanism for the daily kernel builds. It +# creates packages whose ABI is suffixed with a minimal representation of +# the current git HEAD sha. If .git/HEAD is not present, then it uses the +# uuidgen program, +# +# AUTOBUILD can also be used by anyone wanting to build a custom kernel +# image, or rebuild the entire set of Ubuntu packages using custom patches +# or configs. +AUTOBUILD= + +ifneq ($(AUTOBUILD),) +skipabi = true +skipmodule = true +skipdbg = true +gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else uuidgen; fi) +gitverpre=$(shell echo $(gitver) | cut -b -3) +gitverpost=$(shell echo $(gitver) | cut -b 38-40) +abi_suffix = -$(gitverpre)$(gitverpost) +endif + +ifneq ($(NOKERNLOG),) +ubuntu_log_opts += --no-kern-log +endif +ifneq ($(PRINTSHAS),) +ubuntu_log_opts += --print-shas +endif + +# Get the kernels own extra version to be added to the release signature. +raw_kernelversion=$(shell make kernelversion) + +# +# full_build -- are we doing a full buildd style build +# +ifeq ($(wildcard /CurrentlyBuilding),) +full_build?=false +else +full_build?=true +endif + +# +# The debug packages are ginormous, so you probably want to skip +# building them (as a developer). +# +ifeq ($(full_build),false) +skipdbg=true +endif + +abinum := $(shell echo $(revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix) +prev_abinum := $(shell echo $(prev_revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix) +abi_release := $(release)-$(abinum) + +uploadnum := $(shell echo $(revision) | sed -r -e 's/[^\+~]*\.([^\.~]+(~.*)?(\+.*)?$$)/\1/') +ifneq ($(full_build),false) + uploadnum := $(uploadnum)-Ubuntu +endif + +# XXX: linux-libc-dev got bumped to -803.N inadvertantly by a ti-omap4 upload +# shift our version higher for this package only. Ensure this only +# occurs for the v2.6.35 kernel so that we do not propogate this into +# any other series. +raw_uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//') +libc_dev_version := +ifeq ($(DEBIAN),debian.master) +ifeq ($(release),2.6.35) +libc_dev_version := -v$(release)-$(shell expr "$(abinum)" + 1000).$(raw_uploadnum) +endif +endif + +DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) + +# +# Detect invocations of the form 'fakeroot debian/rules binary arch=armhf' +# within an x86'en schroot. This only gets you part of the way since the +# packaging phase fails, but you can at least compile the kernel quickly. +# +arch := $(DEB_HOST_ARCH) +ifneq ($(arch),$(DEB_HOST_ARCH)) + CROSS_COMPILE ?= $(shell dpkg-architecture -a$(arch) -qDEB_HOST_GNU_TYPE -f 2>/dev/null)- +endif + +# +# Detect invocations of the form 'dpkg-buildpackage -B -aarmhf' within +# an x86'en schroot. This is the only way to build all of the packages +# (except for tools). +# +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)- +endif + +abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(revision)/$(arch) +prev_abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(prev_revision)/$(arch) +commonconfdir := $(CURDIR)/$(DEBIAN)/config +archconfdir := $(CURDIR)/$(DEBIAN)/config/$(arch) +sharedconfdir := $(CURDIR)/debian.master/config +builddir := $(CURDIR)/debian/build +stampdir := $(CURDIR)/debian/stamps + +# +# The binary package name always starts with linux-image-$KVER-$ABI.$UPLOAD_NUM. There +# are places that you'll find linux-image hard coded, but I guess thats OK since the +# assumption that the binary package always starts with linux-image will never change. +# +bin_pkg_name=linux-image-$(abi_release) +extra_pkg_name=linux-image-extra-$(abi_release) +hdrs_pkg_name=linux-headers-$(abi_release) +indep_hdrs_pkg_name=linux-headers-$(abi_release) + +# +# The generation of content in the doc package depends on both 'AUTOBUILD=' and +# 'do_doc_package_content=true'. There are usually build errors during the development +# cycle, so its OK to leave 'do_doc_package_content=false' until those build +# failures get sorted out. Finally, the doc package doesn't really need to be built +# for developer testing (its kind of slow), so only do it if on a buildd. +do_doc_package=true +do_doc_package_content=true +ifeq ($(full_build),false) +do_doc_package_content=false +endif +doc_pkg_name=$(src_pkg_name)-doc + +# +# Similarly with the linux-source package, you need not build it as a developer. Its +# somewhat I/O intensive and utterly useless. +# +do_source_package=true +do_source_package_content=true +ifeq ($(full_build),false) +do_source_package_content=false +endif + +# linux-libc-dev may not be needed, default to building it. +do_libc_dev_package=true + +# common headers normally is built as an indep package, but may be arch +do_common_headers_indep=true + +# add a 'full source' mode +do_full_source=false + +# build tools +ifneq ($(wildcard $(CURDIR)/tools),) + ifeq ($(do_tools),) + ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + do_tools=false + endif + endif + do_tools?=true +else + do_tools?=false +endif +tools_pkg_name=$(src_pkg_name)-tools-$(abi_release) +tools_common_pkg_name=$(src_pkg_name)-tools-common +tools_flavour_pkg_name=linux-tools-$(abi_release) +cloud_pkg_name=$(src_pkg_name)-cloud-tools-$(abi_release) +cloud_common_pkg_name=$(src_pkg_name)-cloud-tools-common +cloud_flavour_pkg_name=linux-cloud-tools-$(abi_release) + +# The general flavour specific image package. +do_flavour_image_package=true + +# The general flavour specific header package. +do_flavour_header_package=true + +# DTBs +do_dtbs=false + +# Support parallel= in DEB_BUILD_OPTIONS (see #209008) +# +# These 2 environment variables set the -j value of the kernel build. For example, +# CONCURRENCY_LEVEL=16 fakeroot $(DEBIAN)/rules binary-debs +# or +# DEB_BUILD_OPTIONS=parallel=16 fakeroot $(DEBIAN)/rules binary-debs +# +# The default is to use the number of CPUs. +# +COMMA=, +DEB_BUILD_OPTIONS_PARA = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +ifneq (,$(DEB_BUILD_OPTIONS_PARA)) + CONCURRENCY_LEVEL := $(DEB_BUILD_OPTIONS_PARA) +endif + +ifeq ($(CONCURRENCY_LEVEL),) + # Check the environment + CONCURRENCY_LEVEL := $(shell echo $$CONCURRENCY_LEVEL) + # No? Then build with the number of CPUs on the host. + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := $(shell expr `getconf _NPROCESSORS_ONLN` \* 1) + endif + # Oh hell, give 'em one + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := 1 + endif +endif + +conc_level = -j$(CONCURRENCY_LEVEL) + +# target_flavour is filled in for each step +kmake = make ARCH=$(build_arch) \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + KERNELVERSION=$(abi_release)-$(target_flavour) \ + CONFIG_DEBUG_SECTION_MISMATCH=y \ + KBUILD_BUILD_VERSION="$(uploadnum)" \ + LOCALVERSION= localver-extra= \ + CFLAGS_MODULE="-DPKG_ABI=$(abinum)" +ifneq ($(LOCAL_ENV_CC),) +kmake += CC=$(LOCAL_ENV_CC) DISTCC_HOSTS=$(LOCAL_ENV_DISTCC_HOSTS) +endif + +# Locking is required in parallel builds to prevent loss of contents +# of the debian/files. +lockme_file = $(CURDIR)/debian/.LOCK +lockme_cmd = flock -w 60 +lockme = $(lockme_cmd) $(lockme_file) + +# Don't fail if a link already exists. +LN = ln -sf + +# Checks if a var is overriden by the custom rules. Called with var and +# flavour as arguments. +custom_override = \ + $(shell if [ -n "$($(1)_$(2))" ]; then echo "$($(1)_$(2))"; else echo "$($(1))"; fi) --- linux-4.4.0.orig/debian/rules.d/1-maintainer.mk +++ linux-4.4.0/debian/rules.d/1-maintainer.mk @@ -0,0 +1,127 @@ +# The following targets are for the maintainer only! do not run if you don't +# know what they do. + +.PHONY: printenv updateconfigs printchanges insertchanges startnewrelease diffupstream help updateportsconfigs editportsconfigs + +help: + @echo "These are the targets in addition to the normal $(DEBIAN) ones:" + @echo + @echo " printenv : Print some variables used in the build" + @echo + @echo " updateconfigs : Update core arch configs" + @echo + @echo " editconfigs : Update core arch configs interractively" + @echo " genconfigs : Generate core arch configs in CONFIGS/*" + @echo + @echo " updateportsconfigs : Update ports arch configs" + @echo + @echo " editportsconfigs : Update ports arch configs interactivly" + @echo " genportconfigs : Generate ports arch configs in CONFIGS/*" + @echo + @echo " printchanges : Print the current changelog entries (from git)" + @echo + @echo " insertchanges : Insert current changelog entries (from git)" + @echo + @echo " startnewrelease : Start a new changelog set" + @echo + @echo " diffupstream : Diff stock kernel code against upstream (git)" + @echo + @echo " help : If you are kernel hacking, you need the professional" + @echo " version of this" + @echo + @echo "Environment variables:" + @echo + @echo " NOKERNLOG : Do not add upstream kernel commits to changelog" + @echo " CONCURRENCY_LEVEL=X" + @echo " : Use -jX for kernel compile" + @echo " PRINTSHAS : Include SHAs for commits in changelog" + +printdebian: + @echo "$(DEBIAN)" + +updateconfigs defaultconfigs editconfigs genconfigs dumpconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ + rm -rf build + +updateportsconfigs defaultportsconfigs editportsconfigs genportsconfigs askconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ ports + rm -rf build + +printenv: + dh_testdir + @echo "src package name = $(src_pkg_name)" + @echo "release = $(release)" + @echo "revisions = $(revisions)" + @echo "revision = $(revision)" + @echo "uploadnum = $(uploadnum)" + @echo "prev_revisions = $(prev_revisions)" + @echo "prev_revision = $(prev_revision)" + @echo "abinum = $(abinum)" + @echo "gitver = $(gitver)" + @echo "flavours = $(flavours)" + @echo "skipabi = $(skipabi)" + @echo "skipmodule = $(skipmodule)" + @echo "skipdbg = $(skipdbg)" + @echo "ubuntu_log_opts = $(ubuntu_log_opts)" + @echo "CONCURRENCY_LEVEL = $(CONCURRENCY_LEVEL)" + @echo "bin package name = $(bin_pkg_name)" + @echo "hdr package name = $(hdrs_pkg_name)" + @echo "doc package name = $(doc_pkg_name)" + @echo "do_doc_package = $(do_doc_package)" + @echo "do_doc_package_content = $(do_doc_package_content)" + @echo "do_source_package = $(do_source_package)" + @echo "do_source_package_content = $(do_source_package_content)" + @echo "do_libc_dev_package = $(do_libc_dev_package)" + @echo "do_flavour_image_package = $(do_flavour_image_package)" + @echo "do_flavour_header_package = $(do_flavour_header_package)" + @echo "do_common_headers_indep = $(do_common_headers_indep)" + @echo "do_full_source = $(do_full_source)" + @echo "do_tools = $(do_tools)" + @echo "do_any_tools = $(do_any_tools)" + @echo "do_linux_tools = $(do_linux_tools)" + @echo " do_tools_cpupower = $(do_tools_cpupower)" + @echo " do_tools_perf = $(do_tools_perf)" + @echo " do_tools_x86 = $(do_tools_x86)" + @echo "do_cloud_tools = $(do_cloud_tools)" + @echo " do_tools_hyperv = $(do_tools_hyperv)" + @echo "full_build = $(full_build)" + @echo "libc_dev_version = $(libc_dev_version)" + @echo "DEB_HOST_GNU_TYPE = $(DEB_HOST_GNU_TYPE)" + @echo "DEB_BUILD_GNU_TYPE = $(DEB_BUILD_GNU_TYPE)" + @echo "DEB_HOST_ARCH = $(DEB_HOST_ARCH)" + @echo "DEB_BUILD_ARCH = $(DEB_BUILD_ARCH)" + @echo "arch = $(arch)" + @echo "kmake = $(kmake)" + +printchanges: + @baseCommit=$$(git log --pretty=format:'%H %s' | \ + gawk '/UBUNTU: '".*Ubuntu-`echo $(prev_fullver) | sed 's/+/\\\\+/'`"'$$/ { print $$1; exit }'); \ + git log "$$baseCommit"..HEAD | \ + $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) + +insertchanges: + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + +diffupstream: + @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') + +startnewrelease: + dh_testdir + @nextminor=$(shell expr `echo $(revision) | gawk -F. '{print $$2}'` + 1); \ + nextmajor=$(shell expr `echo $(revision) | awk -F. '{print $$1}'` + 1); \ + now="$(shell date -R)"; \ + echo "Creating new changelog set for $(release)-$$nextmajor.$$nextminor..."; \ + echo -e "$(src_pkg_name) ($(release)-$$nextmajor.$$nextminor) UNRELEASED; urgency=low\n" > $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Do not edit directly. Autogenerated at release." >> \ + $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the printchanges target to see the curent changes." \ + >> $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the insertchanges target to create the final log." \ + >> $(DEBIAN)/changelog.new; \ + echo -e "\n -- $$DEBFULLNAME <$$DEBEMAIL> $$now\n" >> \ + $(DEBIAN)/changelog.new ; \ + cat $(DEBIAN)/changelog >> $(DEBIAN)/changelog.new; \ + mv $(DEBIAN)/changelog.new $(DEBIAN)/changelog + --- linux-4.4.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-4.4.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,713 @@ +# We don't want make removing intermediary stamps +.SECONDARY : + +# Prepare the out-of-tree build directory +ifeq ($(do_full_source),true) +build_cd = cd $(builddir)/build-$*; # +build_O = +else +build_cd = +build_O = O=$(builddir)/build-$* +endif + +# Typically supplied from the arch makefile, e.g., debian.master/control.d/armhf.mk +ifneq ($(gcc),) +kmake += CC=$(CROSS_COMPILE)$(gcc) +endif + +$(stampdir)/stamp-prepare-%: config-prepare-check-% + @echo Debug: $@ + @touch $@ +$(stampdir)/stamp-prepare-tree-%: target_flavour = $* +$(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.% + @echo Debug: $@ + install -d $(builddir)/build-$* + touch $(builddir)/build-$*/ubuntu-build + [ "$(do_full_source)" != 'true' ] && true || \ + rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$* + cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config + find $(builddir)/build-$* -name "*.ko" | xargs rm -f + $(build_cd) $(kmake) $(build_O) -j1 silentoldconfig prepare scripts + touch $@ + +# Used by developers as a shortcut to prepare a tree for compilation. +prepare-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ +# Used by developers to allow efficient pre-building without fakeroot. +build-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + +# Do the actual build, including image and modules +$(stampdir)/stamp-build-%: target_flavour = $* +$(stampdir)/stamp-build-%: splopts = --with-linux=$(CURDIR) +$(stampdir)/stamp-build-%: splopts += --with-linux-obj=$(builddir)/build-$* +$(stampdir)/stamp-build-%: zfsopts = $(splopts) +$(stampdir)/stamp-build-%: zfsopts += --with-spl=$(builddir)/build-$*/spl +$(stampdir)/stamp-build-%: zfsopts += --with-spl-obj=$(builddir)/build-$*/spl +$(stampdir)/stamp-build-%: zfsopts += --prefix=/usr --with-config=kernel +$(stampdir)/stamp-build-%: bldimg = $(call custom_override,build_image,$*) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ build_image $(build_image) bldimg $(bldimg) + $(build_cd) $(kmake) $(build_O) $(conc_level) $(bldimg) modules $(if $(filter true,$(do_dtbs)),dtbs) +ifeq ($(do_zfs),true) + # + # SPL/ZFS wants a fully built kernel before you can configure and build. + # It seems to be impossible to tease out the application configuration + # from the modules, but at least one can build just the modules. + # + install -d $(builddir)/build-$*/spl + rsync -a --exclude=dkms.conf --delete spl/ $(builddir)/build-$*/spl/ + cd $(builddir)/build-$*/spl; sh autogen.sh; sh configure $(splopts) + $(kmake) -C $(builddir)/build-$*/spl/module $(conc_level) + + install -d $(builddir)/build-$*/zfs + rsync -a --exclude=dkms.conf --delete zfs/ $(builddir)/build-$*/zfs/ + cd $(builddir)/build-$*/zfs; sh autogen.sh; sh configure $(zfsopts) + $(kmake) -C $(builddir)/build-$*/zfs/module $(conc_level) +endif + @touch $@ + +# Install the finished build +install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$* +install-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$* +install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$* +install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +install-%: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +install-%: toolspkgdir = $(CURDIR)/debian/$(tools_flavour_pkg_name)-$* +install-%: cloudpkgdir = $(CURDIR)/debian/$(cloud_flavour_pkg_name)-$* +install-%: basepkg = $(hdrs_pkg_name) +install-%: indeppkg = $(indep_hdrs_pkg_name) +install-%: kernfile = $(call custom_override,kernel_file,$*) +install-%: instfile = $(call custom_override,install_file,$*) +install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$* +install-%: target_flavour = $* +install-%: MODHASHALGO=sha512 +install-%: MODSECKEY=$(builddir)/build-$*/certs/signing_key.pem +install-%: MODPUBKEY=$(builddir)/build-$*/certs/signing_key.x509 +install-%: build_dir=$(builddir)/build-$* +install-%: splopts = INSTALL_MOD_STRIP=1 +install-%: splopts += INSTALL_MOD_PATH=$(pkgdir)/ +install-%: splopts += INSTALL_MOD_DIR=kernel/zfs +install-%: splopts += $(conc_level) +install-%: zfsopts = $(splopts) +install-%: checks-% + @echo Debug: $@ kernel_file $(kernel_file) kernfile $(kernfile) install_file $(install_file) instfile $(instfile) + dh_testdir + dh_testroot + dh_clean -k -p$(bin_pkg_name)-$* + dh_clean -k -p$(hdrs_pkg_name)-$* +ifneq ($(skipdbg),true) + dh_clean -k -p$(dbg_pkg_name)-$* +endif + + # The main image + # compress_file logic required because not all architectures + # generate a zImage automatically out of the box +ifeq ($(compress_file),) + install -m600 -D $(builddir)/build-$*/$(kernfile) \ + $(pkgdir)/boot/$(instfile)-$(abi_release)-$* +else + install -d $(pkgdir)/boot + gzip -c9v $(builddir)/build-$*/$(kernfile) > \ + $(pkgdir)/boot/$(instfile)-$(abi_release)-$* + chmod 600 $(pkgdir)/boot/$(instfile)-$(abi_release)-$* +endif + +ifeq ($(uefi_signed),true) + install -d $(signed)/$(release)-$(revision) + # Check to see if this supports handoff, if not do not sign it. + # Check the identification area magic and version >= 0x020b + handoff=`dd if="$(pkgdir)/boot/$(instfile)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | gawk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \ + if [ "$$handoff" = "GOOD" ]; then \ + cp -p $(pkgdir)/boot/$(instfile)-$(abi_release)-$* \ + $(signed)/$(release)-$(revision)/$(instfile)-$(abi_release)-$*.efi; \ + fi +endif + + install -m644 $(builddir)/build-$*/.config \ + $(pkgdir)/boot/config-$(abi_release)-$* + install -m644 $(abidir)/$* \ + $(pkgdir)/boot/abi-$(abi_release)-$* + install -m600 $(builddir)/build-$*/System.map \ + $(pkgdir)/boot/System.map-$(abi_release)-$* + if [ "$(filter true,$(do_dtbs))" ]; then \ + $(build_cd) $(kmake) $(build_O) $(conc_level) dtbs_install \ + INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + ( cd $(pkgdir)/lib/firmware/$(abi_release)-$*/ && find device-tree -print ) | \ + while read dtb_file; do \ + echo "$$dtb_file ?" >> $(DEBIAN)/d-i/firmware/kernel-image; \ + done; \ + fi +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + + $(build_cd) $(kmake) $(build_O) $(conc_level) modules_install $(vdso) \ + INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \ + INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$* +ifeq ($(do_zfs),true) + cd $(builddir)/build-$*/spl/module; \ + $(kmake) -C $(builddir)/build-$* SUBDIRS=`pwd` modules_install $(splopts) + cd $(builddir)/build-$*/zfs/module; \ + $(kmake) -C $(builddir)/build-$* SUBDIRS=`pwd` modules_install $(zfsopts) +endif + + # + # Build module blacklists: + # - blacklist all watchdog drivers (LP:1432837) + # + install -d $(pkgdir)/lib/modprobe.d + echo "# Kernel supplied blacklist for $(src_pkg_name) $(abi_release)-$* $(arch)" \ + >$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + for conf in $(arch)-$* $(arch) common.conf; do \ + if [ -f $(DEBIAN)/modprobe.d/$$conf ]; then \ + echo "# modprobe.d/$$conf"; \ + cat $(DEBIAN)/modprobe.d/$$conf; \ + fi; \ + done >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + echo "# Autogenerated watchdog blacklist" \ + >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + ls -1 $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/watchdog/ | \ + sed -e 's/^/blacklist /' -e 's/.ko$$//' | \ + sort -u \ + >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + +ifeq ($(do_extras_package),true) + # + # Remove all modules not in the inclusion list. + # + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + /sbin/depmod -v -b $(pkgdir) $(abi_release)-$* | \ + sed -e "s@$(pkgdir)/lib/modules/$(abi_release)-$*/kernel/@@g" | \ + awk '{ print $$1 " " $$NF}' >$(build_dir)/module-inclusion.depmap; \ + mkdir -p $(pkgdir_ex)/lib/modules/$(abi_release)-$*; \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel; \ + $(SHELL) $(DROOT)/scripts/module-inclusion --master \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(DEBIAN)/control.d/$(target_flavour).inclusion-list \ + $(build_dir)/module-inclusion.depmap 2>&1 | \ + tee $(target_flavour).inclusion-list.log; \ + /sbin/depmod -b $(pkgdir) -ea -F $(pkgdir)/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$* 2>&1 |tee $(target_flavour).depmod.log; \ + if [ `grep -c 'unknown symbol' $(target_flavour).depmod.log` -gt 0 ]; then \ + echo "EE: Unresolved module dependencies in base package!"; \ + exit 1; \ + fi \ + fi +endif + +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source + + # Some initramfs-tools specific modules + install -d $(pkgdir)/lib/modules/$(abi_release)-$*/initrd + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko ]; then\ + $(LN) $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko \ + $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \ + fi + + # Now the image scripts + install -d $(pkgdir)/DEBIAN + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \ + chmod 755 $(pkgdir)/DEBIAN/$$script; \ + done +ifeq ($(do_extras_package),true) + # Install the postinit/postrm scripts in the extras package. + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + install -d $(pkgdir_ex)/DEBIAN; \ + for script in postinst postrm ; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + debian/control-scripts/extra-post > $(pkgdir_ex)/DEBIAN/$$script; \ + chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \ + done; \ + fi +endif + + # Install the full changelog. +ifeq ($(do_doc_package),true) + install -d $(bindoc) + cat $(DEBIAN)/changelog $(DEBIAN)/changelog.historical | \ + gzip -9 >$(bindoc)/changelog.Debian.old.gz + chmod 644 $(bindoc)/changelog.Debian.old.gz +endif + +ifneq ($(skipsub),true) + for sub in $($(*)_sub); do \ + if ! (TO=$$sub FROM=$* ABI_RELEASE=$(abi_release) $(SHELL) \ + $(DROOT)/scripts/sub-flavour); then exit 1; fi; \ + /sbin/depmod -b debian/$(bin_pkg_name)-$$sub \ + -ea -F debian/$(bin_pkg_name)-$$sub/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$*; \ + install -d debian/$(bin_pkg_name)-$$sub/DEBIAN; \ + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' \ + -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' \ + -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > \ + debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + chmod 755 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + done; \ + done +endif + +ifneq ($(skipdbg),true) + # Debug image is simple + install -m644 -D $(builddir)/build-$*/vmlinux \ + $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$* + $(build_cd) $(kmake) $(build_O) modules_install $(vdso) \ + INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug + # Add .gnu_debuglink sections to each stripped .ko + # pointing to unstripped verson + find $(pkgdir) -name '*.ko' | sed 's|$(pkgdir)||'| while read module ; do \ + if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \ + $(CROSS_COMPILE)objcopy \ + --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \ + $(pkgdir)/$$module; \ + $(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \ + $(MODSECKEY) \ + $(MODPUBKEY) \ + $(pkgdir)/$$module; \ + fi; \ + done + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/source + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/modules.* + rm -fr $(dbgpkgdir)/usr/lib/debug/lib/firmware +endif + + # The flavour specific headers image + # TODO: Would be nice if we didn't have to dupe the original builddir + install -d -m755 $(hdrdir) + cat $(builddir)/build-$*/.config | \ + sed -e 's/.*CONFIG_DEBUG_INFO=.*/# CONFIG_DEBUG_INFO is not set/g' > \ + $(hdrdir)/.config + chmod 644 $(hdrdir)/.config + $(kmake) O=$(hdrdir) -j1 silentoldconfig prepare scripts + # We'll symlink this stuff + rm -f $(hdrdir)/Makefile + rm -rf $(hdrdir)/include2 $(hdrdir)/source + # Copy over the compilation version. + cp "$(builddir)/build-$*/include/generated/compile.h" \ + "$(hdrdir)/include/generated/compile.h" + # Add UTS_UBUNTU_RELEASE_ABI since UTS_RELEASE is difficult to parse. + echo "#define UTS_UBUNTU_RELEASE_ABI $(abinum)" >> $(hdrdir)/include/generated/utsrelease.h + # powerpc kernel arch seems to need some .o files for external module linking. Add them in. +ifeq ($(build_arch),powerpc) + mkdir -p $(hdrdir)/arch/powerpc/lib + cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib +endif + # Script to symlink everything up + $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(indeppkg)" "$*" + # The build symlink + install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$* + $(LN) /usr/src/$(basepkg)-$* \ + debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build + # And finally the symvers + install -m644 $(builddir)/build-$*/Module.symvers \ + $(hdrdir)/Module.symvers + + # Now the header scripts + install -d $(CURDIR)/debian/$(basepkg)-$*/DEBIAN + for script in postinst; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + $(DROOT)/control-scripts/headers-$$script > \ + $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + done + + # At the end of the package prep, call the tests + DPKG_ARCH="$(arch)" KERN_ARCH="$(build_arch)" FLAVOUR="$*" \ + VERSION="$(abi_release)" REVISION="$(revision)" \ + PREV_REVISION="$(prev_revision)" ABI_NUM="$(abinum)" \ + PREV_ABI_NUM="$(prev_abinum)" BUILD_DIR="$(builddir)/build-$*" \ + INSTALL_DIR="$(pkgdir)" SOURCE_DIR="$(CURDIR)" \ + run-parts -v $(DROOT)/tests-build + + # + # Remove files which are generated at installation by postinst, + # except for modules.order and modules.builtin + # + # NOTE: need to keep this list in sync with postrm + # + mkdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.order \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_ + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin ] ; then \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_; \ + fi + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.* + mv $(pkgdir)/lib/modules/$(abi_release)-$*/_/* \ + $(pkgdir)/lib/modules/$(abi_release)-$* + rmdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + +ifeq ($(do_linux_tools),true) + # Create the linux-tools tool links + install -d $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +ifeq ($(do_tools_usbip),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbip $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbipd $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_cpupower),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/cpupower $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_perf),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/perf $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_x86),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/turbostat $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + # Create the linux-hyperv tool links + install -d $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_kvp_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_vss_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_fcopy_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +endif + +headers_tmp := $(CURDIR)/debian/tmp-headers +headers_dir := $(CURDIR)/debian/linux-libc-dev + +hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) \ + KERNELVERSION=$(abi_release) INSTALL_HDR_PATH=$(headers_tmp)/install \ + SHELL="$(SHELL)" ARCH=$(header_arch) + +install-arch-headers: + @echo Debug: $@ + dh_testdir + dh_testroot + dh_clean -k -plinux-libc-dev + + rm -rf $(headers_tmp) + install -d $(headers_tmp) $(headers_dir)/usr/include/ + + $(hmake) $(defconfig) + mv $(headers_tmp)/.config $(headers_tmp)/.config.old + sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \ + -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \ + $(headers_tmp)/.config.old > $(headers_tmp)/.config + $(hmake) silentoldconfig + $(hmake) headers_install + + ( cd $(headers_tmp)/install/include/ && \ + find . -name '.' -o -name '.*' -prune -o -print | \ + cpio -pvd --preserve-modification-time \ + $(headers_dir)/usr/include/ ) + mkdir $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH) + mv $(headers_dir)/usr/include/asm $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)/ + + rm -rf $(headers_tmp) + +binary-arch-headers: install-arch-headers + @echo Debug: $@ + dh_testdir + dh_testroot +ifeq ($(do_libc_dev_package),true) +ifneq ($(DEBIAN),debian.master) + echo "non-master branch building linux-libc-dev, aborting" + exit 1 +endif + dh_installchangelogs -plinux-libc-dev + dh_installdocs -plinux-libc-dev + dh_compress -plinux-libc-dev + dh_fixperms -plinux-libc-dev + dh_installdeb -plinux-libc-dev + $(lockme) dh_gencontrol -plinux-libc-dev -- $(libc_dev_version) + dh_md5sums -plinux-libc-dev + dh_builddeb -plinux-libc-dev +endif + +binary-%: pkgimg = $(bin_pkg_name)-$* +binary-%: pkgimg_ex = $(extra_pkg_name)-$* +binary-%: pkghdr = $(hdrs_pkg_name)-$* +binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym +binary-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +binary-%: pkgtools = $(tools_flavour_pkg_name)-$* +binary-%: pkgcloud = $(cloud_flavour_pkg_name)-$* +binary-%: target_flavour = $* +binary-%: install-% + @echo Debug: $@ + dh_testdir + dh_testroot + + dh_installchangelogs -p$(pkgimg) + dh_installdocs -p$(pkgimg) + dh_compress -p$(pkgimg) + dh_fixperms -p$(pkgimg) -X/boot/ + dh_installdeb -p$(pkgimg) + dh_shlibdeps -p$(pkgimg) + $(lockme) dh_gencontrol -p$(pkgimg) + dh_md5sums -p$(pkgimg) + dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9 + +ifeq ($(do_extras_package),true) + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + dh_installchangelogs -p$(pkgimg_ex); \ + dh_installdocs -p$(pkgimg_ex); \ + dh_compress -p$(pkgimg_ex); \ + dh_fixperms -p$(pkgimg_ex) -X/boot/; \ + dh_installdeb -p$(pkgimg_ex); \ + dh_shlibdeps -p$(pkgimg_ex); \ + $(lockme) dh_gencontrol -p$(pkgimg_ex); \ + dh_md5sums -p$(pkgimg_ex); \ + dh_builddeb -p$(pkgimg_ex) -- -Zbzip2 -z9; \ + fi +endif + + dh_installchangelogs -p$(pkghdr) + dh_installdocs -p$(pkghdr) + dh_compress -p$(pkghdr) + dh_fixperms -p$(pkghdr) + dh_shlibdeps -p$(pkghdr) + dh_installdeb -p$(pkghdr) + $(lockme) dh_gencontrol -p$(pkghdr) + dh_md5sums -p$(pkghdr) + dh_builddeb -p$(pkghdr) + +ifneq ($(skipsub),true) + @set -e; for sub in $($(*)_sub); do \ + pkg=$(bin_pkg_name)-$$sub; \ + dh_installchangelogs -p$$pkg; \ + dh_installdocs -p$$pkg; \ + dh_compress -p$$pkg; \ + dh_fixperms -p$$pkg -X/boot/; \ + dh_shlibdeps -p$$pkg; \ + dh_installdeb -p$$pkg; \ + $(lockme) dh_gencontrol -p$$pkg; \ + dh_md5sums -p$$pkg; \ + dh_builddeb -p$$pkg; \ + done +endif + +ifneq ($(skipdbg),true) + dh_installchangelogs -p$(dbgpkg) + dh_installdocs -p$(dbgpkg) + dh_compress -p$(dbgpkg) + dh_fixperms -p$(dbgpkg) + dh_installdeb -p$(dbgpkg) + $(lockme) dh_gencontrol -p$(dbgpkg) + dh_md5sums -p$(dbgpkg) + dh_builddeb -p$(dbgpkg) + + # Hokay...here's where we do a little twiddling... + # Renaming the debug package prevents it from getting into + # the primary archive, and therefore prevents this very large + # package from being mirrored. It is instead, through some + # archive admin hackery, copied to http://ddebs.ubuntu.com. + # + mv ../$(dbgpkg)_$(release)-$(revision)_$(arch).deb \ + ../$(dbgpkg)_$(release)-$(revision)_$(arch).ddeb + set -e; \ + ( \ + $(lockme_cmd) 9 || exit 1; \ + if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \ + sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \ + else \ + grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \ + mv debian/files.new debian/files; \ + fi; \ + ) 9>$(lockme_file) + # Now, the package wont get into the archive, but it will get put + # into the debug system. +endif + +ifeq ($(do_linux_tools),true) + dh_installchangelogs -p$(pkgtools) + dh_installdocs -p$(pkgtools) + dh_compress -p$(pkgtools) + dh_fixperms -p$(pkgtools) + dh_shlibdeps -p$(pkgtools) + dh_installdeb -p$(pkgtools) + $(lockme) dh_gencontrol -p$(pkgtools) + dh_md5sums -p$(pkgtools) + dh_builddeb -p$(pkgtools) +endif +ifeq ($(do_cloud_tools),true) + dh_installchangelogs -p$(pkgcloud) + dh_installdocs -p$(pkgcloud) + dh_compress -p$(pkgcloud) + dh_fixperms -p$(pkgcloud) + dh_shlibdeps -p$(pkgcloud) + dh_installdeb -p$(pkgcloud) + $(lockme) dh_gencontrol -p$(pkgcloud) + dh_md5sums -p$(pkgcloud) + dh_builddeb -p$(pkgcloud) +endif + +ifneq ($(full_build),false) + # Clean out this flavours build directory. + rm -rf $(builddir)/build-$* + # Clean out the debugging package source directory. + rm -rf $(dbgpkgdir) +endif + +# +# per-architecture packages +# +builddirpa = $(builddir)/tools-perarch + +$(stampdir)/stamp-prepare-perarch: + @echo Debug: $@ +ifeq ($(do_any_tools),true) + rm -rf $(builddirpa) + install -d $(builddirpa) + for i in *; do $(LN) $(CURDIR)/$$i $(builddirpa); done + rm $(builddirpa)/tools + rsync -a tools/ $(builddirpa)/tools/ +endif + touch $@ + +$(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch install-arch-headers + @echo Debug: $@ +ifeq ($(do_linux_tools),true) +ifeq ($(do_tools_usbip),true) + chmod 755 $(builddirpa)/tools/usb/usbip/autogen.sh + cd $(builddirpa)/tools/usb/usbip && ./autogen.sh + chmod 755 $(builddirpa)/tools/usb/usbip/configure + cd $(builddirpa)/tools/usb/usbip && ./configure --prefix=$(builddirpa)/tools/usb/usbip/bin + cd $(builddirpa)/tools/usb/usbip && make install CFLAGS="-g -O2 -static" CROSS_COMPILE=$(CROSS_COMPILE) +endif +ifeq ($(do_tools_cpupower),true) + # Allow for multiple installed versions of cpupower and libcpupower.so: + # Override LIB_MIN in order to to generate a versioned .so named + # libcpupower.so.$(abi_release) and link cpupower with that. + make -C $(builddirpa)/tools/power/cpupower \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + LIB_MIN=$(abi_release) CPUFREQ_BENCH=false +endif +ifeq ($(do_tools_perf),true) + cd $(builddirpa)/tools/perf && \ + make prefix=/usr HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7 +endif +ifeq ($(do_tools_x86),true) + cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE) + cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE) +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + cd $(builddirpa)/tools/hv && make CFLAGS="-I$(headers_dir)/usr/include -I$(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)" CROSS_COMPILE=$(CROSS_COMPILE) hv_kvp_daemon hv_vss_daemon hv_fcopy_daemon +endif +endif + @touch $@ + +install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name) +install-perarch: cloudpkgdir = $(CURDIR)/debian/$(cloud_pkg_name) +install-perarch: $(stampdir)/stamp-build-perarch + @echo Debug: $@ + # Add the tools. +ifeq ($(do_linux_tools),true) + install -d $(toolspkgdir)/usr/lib + install -d $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +ifeq ($(do_tools_usbip),true) + install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbip \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbipd \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +ifeq ($(do_tools_cpupower),true) + install -m755 $(builddirpa)/tools/power/cpupower/cpupower \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + # Install only the full versioned libcpupower.so.$(abi_release), not + # the usual symlinks to it. + install -m644 $(builddirpa)/tools/power/cpupower/libcpupower.so.$(abi_release) \ + $(toolspkgdir)/usr/lib/ +endif +ifeq ($(do_tools_perf),true) + install -m755 $(builddirpa)/tools/perf/perf $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +ifeq ($(do_tools_x86),true) + install -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + install -d $(cloudpkgdir)/usr/lib + install -d $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_vss_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_fcopy_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +endif + +binary-perarch: toolspkg = $(tools_pkg_name) +binary-perarch: cloudpkg = $(cloud_pkg_name) +binary-perarch: install-perarch + @echo Debug: $@ +ifeq ($(do_linux_tools),true) + dh_strip -p$(toolspkg) + dh_installchangelogs -p$(toolspkg) + dh_installdocs -p$(toolspkg) + dh_compress -p$(toolspkg) + dh_fixperms -p$(toolspkg) + dh_shlibdeps -p$(toolspkg) + dh_installdeb -p$(toolspkg) + $(lockme) dh_gencontrol -p$(toolspkg) + dh_md5sums -p$(toolspkg) + dh_builddeb -p$(toolspkg) +endif +ifeq ($(do_cloud_tools),true) + dh_strip -p$(cloudpkg) + dh_installchangelogs -p$(cloudpkg) + dh_installdocs -p$(cloudpkg) + dh_compress -p$(cloudpkg) + dh_fixperms -p$(cloudpkg) + dh_shlibdeps -p$(cloudpkg) + dh_installdeb -p$(cloudpkg) + $(lockme) dh_gencontrol -p$(cloudpkg) + dh_md5sums -p$(cloudpkg) + dh_builddeb -p$(cloudpkg) +endif + +binary-debs: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +binary-debs: signedv = $(CURDIR)/debian/$(bin_pkg_name)-signed/$(release)-$(revision) +binary-debs: signed_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz +binary-debs: binary-perarch $(addprefix binary-,$(flavours)) + @echo Debug: $@ +ifeq ($(uefi_signed),true) + echo $(release)-$(revision) > $(signedv)/version + cd $(signedv) && ls *.efi >flavours + cd $(signed) && tar czvf ../../../$(signed_tar) . + dpkg-distaddfile $(signed_tar) raw-uefi - +endif + +build-arch-deps-$(do_flavour_image_package) += $(addprefix $(stampdir)/stamp-build-,$(flavours)) +build-arch: $(build-arch-deps-true) + @echo Debug: $@ + +ifeq ($(AUTOBUILD),) +binary-arch-deps-$(do_flavour_image_package) += binary-udebs +else +binary-arch-deps-$(do_flavour_image_package) = binary-debs +endif +binary-arch-deps-$(do_libc_dev_package) += binary-arch-headers +ifneq ($(do_common_headers_indep),true) +binary-arch-deps-$(do_flavour_header_package) += binary-headers +endif +binary-arch: $(binary-arch-deps-true) + @echo Debug: $@ + --- linux-4.4.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-4.4.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,176 @@ +build-indep: + @echo Debug: $@ + +# The binary-indep dependency chain is: +# +# install-headers <- install-doc <- install-source <- install-tools <- install-indep <- binary-indep +# install-headers <- binary-headers +# +indep_hdrpkg = $(indep_hdrs_pkg_name) +indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) +install-headers: + @echo Debug: $@ + dh_testdir + dh_testroot + dh_prep + +ifeq ($(do_flavour_header_package),true) + install -d $(indep_hdrdir) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune \ + -o -path './include/*' -prune \ + -o -path './scripts/*' -prune -o -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ + -print | cpio -pd --preserve-modification-time $(indep_hdrdir) + cp -a scripts include $(indep_hdrdir) + (find arch -name include -type d -print | \ + xargs -n1 -i: find : -type f) | \ + cpio -pd --preserve-modification-time $(indep_hdrdir) +endif + +docpkg = $(doc_pkg_name) +docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg) +install-doc: install-headers + @echo Debug: $@ +ifeq ($(do_doc_package),true) + dh_testdir + dh_testroot + + install -d $(docdir) +ifeq ($(do_doc_package_content),true) + # First the html docs. We skip these for autobuilds + if [ -z "$(AUTOBUILD)" ]; then \ + install -d $(docdir)/$(doc_pkg_name)-tmp; \ + $(kmake) O=$(docdir)/$(doc_pkg_name)-tmp htmldocs; \ + install -d $(docdir)/html; \ + rsync -aL $(docdir)/$(doc_pkg_name)-tmp/Documentation/DocBook/ \ + $(docdir)/html/; \ + rm -rf $(docdir)/$(doc_pkg_name)-tmp; \ + fi +endif + # Copy the rest + cp -a Documentation/* $(docdir) + rm -rf $(docdir)/DocBook + find $(docdir) -name .gitignore | xargs rm -f +endif + +srcpkg = $(src_pkg_name)-source-$(release) +srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg) +balldir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)/$(srcpkg) +install-source: install-doc + @echo Debug: $@ +ifeq ($(do_source_package),true) + + install -d $(srcdir) +ifeq ($(do_source_package_content),true) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune -o \ + -path './.*' -prune -o -print | \ + cpio -pd --preserve-modification-time $(balldir) + (cd $(srcdir); tar cf - $(srcpkg)) | bzip2 -9c > \ + $(srcdir)/$(srcpkg).tar.bz2 + rm -rf $(balldir) + find './debian' './$(DEBIAN)' \ + -path './debian/linux-*' -prune -o \ + -path './debian/$(src_pkg_name)-*' -prune -o \ + -path './debian/build' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/stamps' -prune -o \ + -path './debian/tmp' -prune -o \ + -print | \ + cpio -pd --preserve-modification-time $(srcdir) + $(LN) $(srcpkg)/$(srcpkg).tar.bz2 $(srcdir)/.. +endif +endif + +install-tools: toolspkg = $(tools_common_pkg_name) +install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin +install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin +install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man +install-tools: cloudpkg = $(cloud_common_pkg_name) +install-tools: cloudbin = $(CURDIR)/debian/$(cloudpkg)/usr/bin +install-tools: cloudsbin = $(CURDIR)/debian/$(cloudpkg)/usr/sbin +install-tools: cloudman = $(CURDIR)/debian/$(cloudpkg)/usr/share/man +install-tools: install-source $(stampdir)/stamp-build-perarch + @echo Debug: $@ + +ifeq ($(do_tools_common),true) + rm -rf $(builddir)/tools + install -d $(builddir)/tools + for i in *; do $(LN) $(CURDIR)/$$i $(builddir)/tools/; done + rm $(builddir)/tools/tools + rsync -a tools/ $(builddir)/tools/tools/ + + install -d $(toolsbin) + install -d $(toolsman)/man1 + + install -m755 debian/tools/generic $(toolsbin)/usbip + install -m755 debian/tools/generic $(toolsbin)/usbipd + install -m644 $(CURDIR)/tools/usb/usbip/doc/*.8 $(toolsman)/man1/ + + install -m755 debian/tools/generic $(toolsbin)/cpupower + install -m644 $(CURDIR)/tools/power/cpupower/man/*.1 $(toolsman)/man1/ + + install -m755 debian/tools/generic $(toolsbin)/perf + + install -m755 debian/tools/generic $(toolsbin)/x86_energy_perf_policy + install -m755 debian/tools/generic $(toolsbin)/turbostat + + cd $(builddir)/tools/tools/perf && make man + install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \ + $(toolsman)/man1 + + install -d $(toolsman)/man8 + install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8 + install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8 + + install -d $(cloudsbin) + install -m755 debian/tools/generic $(cloudsbin)/hv_kvp_daemon + install -m755 debian/tools/generic $(cloudsbin)/hv_vss_daemon + install -m755 debian/tools/generic $(cloudsbin)/hv_fcopy_daemon + install -m755 debian/cloud-tools/hv_get_dhcp_info $(cloudsbin) + install -m755 debian/cloud-tools/hv_get_dns_info $(cloudsbin) + install -m755 debian/cloud-tools/hv_set_ifconfig $(cloudsbin) + + install -d $(cloudman)/man8 + install -m644 $(CURDIR)/tools/hv/*.8 $(cloudman)/man8 + +endif + +install-indep: install-tools + @echo Debug: $@ + +# This is just to make it easy to call manually. Normally done in +# binary-indep target during builds. +binary-headers: install-headers + @echo Debug: $@ + dh_installchangelogs -p$(indep_hdrpkg) + dh_installdocs -p$(indep_hdrpkg) + dh_compress -p$(indep_hdrpkg) + dh_fixperms -p$(indep_hdrpkg) + dh_installdeb -p$(indep_hdrpkg) + $(lockme) dh_gencontrol -p$(indep_hdrpkg) + dh_md5sums -p$(indep_hdrpkg) + dh_builddeb -p$(indep_hdrpkg) + +binary-indep: cloudpkg = $(cloud_common_pkg_name) +binary-indep: install-indep + @echo Debug: $@ + + dh_installchangelogs -i + dh_installdocs -i + dh_compress -i + dh_fixperms -i +ifeq ($(do_tools_common),true) + dh_installinit -p$(cloudpkg) -n --name hv-kvp-daemon + dh_installinit -p$(cloudpkg) -n --name hv-vss-daemon + dh_installinit -p$(cloudpkg) -n --name hv-fcopy-daemon + dh_systemd_enable -p$(cloudpkg) + dh_installinit -p$(cloudpkg) -o --name hv-kvp-daemon + dh_installinit -p$(cloudpkg) -o --name hv-vss-daemon + dh_installinit -p$(cloudpkg) -o --name hv-fcopy-daemon + dh_systemd_start -p$(cloudpkg) +endif + dh_installdeb -i + $(lockme) dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i --- linux-4.4.0.orig/debian/rules.d/4-checks.mk +++ linux-4.4.0/debian/rules.d/4-checks.mk @@ -0,0 +1,27 @@ +# Check ABI for package against last release (if not same abinum) +abi-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \ + $(builddir)/build-$*/Module.symvers | sort > $(abidir)/$* + @perl -f $(DROOT)/scripts/abi-check "$*" "$(prev_abinum)" "$(abinum)" \ + "$(prev_abidir)" "$(abidir)" "$(skipabi)" + +# Check the module list against the last release (always) +module-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + find $(builddir)/build-$*/ -name \*.ko | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $(abidir)/$*.modules + @perl -f $(DROOT)/scripts/module-check "$*" \ + "$(prev_abidir)" "$(abidir)" $(skipmodule) + +checks-%: module-check-% abi-check-% + @echo Debug: $@ + +# Check the config against the known options list. +config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% + @echo Debug: $@ + @perl -f $(DROOT)/scripts/config-check \ + $(builddir)/build-$*/.config "$(arch)" "$*" "$(commonconfdir)" "$(skipconfig)" + --- linux-4.4.0.orig/debian/rules.d/5-udebs.mk +++ linux-4.4.0/debian/rules.d/5-udebs.mk @@ -0,0 +1,74 @@ +# Do udebs if not disabled in the arch-specific makefile +binary-udebs: binary-debs + @echo Debug: $@ +ifeq ($(disable_d_i),) + @$(MAKE) --no-print-directory -f $(DROOT)/rules DEBIAN=$(DEBIAN) \ + do-binary-udebs +endif + +do-binary-udebs: debian/control + @echo Debug: $@ + dh_testdir + dh_testroot + + # unpack the kernels into a temporary directory + mkdir -p debian/d-i-${arch} + + imagelist=$$(cat $(builddir)/kernel-versions | grep ^${arch} | gawk '{print $$4}') && \ + for i in $$imagelist; do \ + dpkg -x $$(ls ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb) \ + debian/d-i-${arch}; \ + if [ -f ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb ] ; then \ + dpkg -x ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb \ + debian/d-i-${arch}; \ + fi; \ + /sbin/depmod -b debian/d-i-${arch} $$i; \ + done + + # kernel-wedge will error if no modules unless this is touched + touch $(CURDIR)/debian/build/no-modules + + touch ignore-dups + export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ + cd $(builddir) && \ + kernel-wedge install-files && \ + kernel-wedge check + + # Build just the udebs + dilist=$$(dh_listpackages -s | grep "\-di$$") && \ + [ -z "$dilist" ] || \ + for i in $$dilist; do \ + dh_fixperms -p$$i; \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done + + # Generate the meta-udeb dependancy lists. + @gawk ' \ + /^Package:/ { \ + package=$$2; flavour=""; parch="" } \ + (/Package-Type: udeb/ && package !~ /^linux-udebs-/) { \ + match(package, "'$(release)'-'$(abinum)'-(.*)-di", bits); \ + flavour = bits[1]; \ + } \ + (/^Architecture:/ && $$0 " " ~ / '$(arch)'/) { \ + parch=$$0; \ + } \ + (flavour != "" && parch != "") { \ + udebs[flavour] = udebs[flavour] package ", "; \ + flavour=""; parch=""; \ + } \ + END { \ + for (flavour in udebs) { \ + package="linux-udebs-" flavour; \ + file="debian/" package ".substvars"; \ + print("udeb:Depends=" udebs[flavour]) > file; \ + metas="'$(builddir)'/udeb-meta-packages"; \ + print(package) >metas \ + } \ + } \ + ' <$(CURDIR)/debian/control + @while read i; do \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done <$(builddir)/udeb-meta-packages --- linux-4.4.0.orig/debian/scripts/abi-check +++ linux-4.4.0/debian/scripts/abi-check @@ -0,0 +1,210 @@ +#!/usr/bin/perl -w + +my $flavour = shift; +my $prev_abinum = shift; +my $abinum = shift; +my $prev_abidir = shift; +my $abidir = shift; +my $skipabi = shift; + +my $fail_exit = 1; +my $EE = "EE:"; +my $errors = 0; +my $abiskip = 0; + +my $count; + +print "II: Checking ABI for $flavour...\n"; + +if (-f "$prev_abidir/ignore" + or -f "$prev_abidir/$flavour.ignore" or "$skipabi" eq "true") { + print "WW: Explicitly asked to ignore ABI, running in no-fail mode\n"; + $fail_exit = 0; + $abiskip = 1; + $EE = "WW:"; +} + +if ($prev_abinum != $abinum) { + print "II: Different ABI's, running in no-fail mode\n"; + $fail_exit = 0; + $EE = "WW:"; +} + +if (not -f "$abidir/$flavour" or not -f "$prev_abidir/$flavour") { + print "EE: Previous or current ABI file missing!\n"; + print " $abidir/$flavour\n" if not -f "$abidir/$flavour"; + print " $prev_abidir/$flavour\n" if not -f "$prev_abidir/$flavour"; + + # Exit if the ABI files are missing, but return status based on whether + # skip ABI was indicated. + if ("$abiskip" eq "1") { + exit(0); + } else { + exit(1); + } +} + +my %symbols; +my %symbols_ignore; +my %modules_ignore; +my %module_syms; + +# See if we have any ignores +my $ignore = 0; +print " Reading symbols/modules to ignore..."; + +for $file ("$prev_abidir/../blacklist", "$prev_abidir/../../perm-blacklist") { + if (-f $file) { + open(IGNORE, "< $file") or + die "Could not open $file"; + while () { + chomp; + if ($_ =~ m/M: (.*)/) { + $modules_ignore{$1} = 1; + } else { + $symbols_ignore{$_} = 1; + } + $ignore++; + } + close(IGNORE); + } +} +print "read $ignore symbols/modules.\n"; + +sub is_ignored($$) { + my ($mod, $sym) = @_; + + die "Missing module name in is_ignored()" if not defined($mod); + die "Missing symbol name in is_ignored()" if not defined($sym); + + if (defined($symbols_ignore{$sym}) or defined($modules_ignore{$mod})) { + return 1; + } + return 0; +} + +# Read new syms first +print " Reading new symbols ($abinum)..."; +$count = 0; +open(NEW, "< $abidir/$flavour") or + die "Could not open $abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'type'} = $1; + $symbols{$4}{'loc'} = $2; + $symbols{$4}{'hash'} = $3; + $module_syms{$2} = 0; + $count++; +} +close(NEW); +print "read $count symbols.\n"; + +# Now the old symbols, checking for missing ones +print " Reading old symbols ($prev_abinum)..."; +$count = 0; +open(OLD, "< $prev_abidir/$flavour") or + die "Could not open $prev_abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'old_type'} = $1; + $symbols{$4}{'old_loc'} = $2; + $symbols{$4}{'old_hash'} = $3; + $count++; +} +close(OLD); + +print "read $count symbols.\n"; + +print "II: Checking for missing symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'type'})) { + print "\n" if not $count; + printf(" MISS : %s%s\n", $sym, + is_ignored($symbols{$sym}{'old_loc'}, $sym) ? " (ignored)" : ""); + $count++ if !is_ignored($symbols{$sym}{'old_loc'}, $sym); + } +} +print " " if $count; +print "found $count missing symbols\n"; +if ($count) { + print "$EE Symbols gone missing (what did you do!?!)\n"; + $errors++; +} + + +print "II: Checking for new symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'})) { + print "\n" if not $count; + print " NEW : $sym\n"; + $count++; + } +} +print " " if $count; +print "found $count new symbols\n"; +if ($count and $prev_abinum == $abinum) { + print "WW: Found new symbols within same ABI. Not recommended\n"; +} + +print "II: Checking for changes to ABI...\n"; +$count = 0; +my $moved = 0; +my $changed_type = 0; +my $changed_hash = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'}) or + !defined($symbols{$sym}{'type'})) { + next; + } + + # Changes in location don't hurt us, but log it anyway + if ($symbols{$sym}{'loc'} ne $symbols{$sym}{'old_loc'}) { + printf(" MOVE : %-40s : %s => %s\n", $sym, $symbols{$sym}{'old_loc'}, + $symbols{$sym}{'loc'}); + $moved++; + } + + # Changes to export type are only bad if new type isn't + # EXPORT_SYMBOL. Changing things to GPL are bad. + if ($symbols{$sym}{'type'} ne $symbols{$sym}{'old_type'}) { + printf(" TYPE : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_type'}. + $symbols{$sym}{'type'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_type++ if $symbols{$sym}{'type'} ne "EXPORT_SYMBOL" + and !is_ignored($symbols{$sym}{'loc'}, $sym); + } + + # Changes to the hash are always bad + if ($symbols{$sym}{'hash'} ne $symbols{$sym}{'old_hash'}) { + printf(" HASH : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_hash'}, + $symbols{$sym}{'hash'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_hash++ if !is_ignored($symbols{$sym}{'loc'}, $sym); + $module_syms{$symbols{$sym}{'loc'}}++; + } +} + +print "WW: $moved symbols changed location\n" if $moved; +print "$EE $changed_type symbols changed export type and weren't ignored\n" if $changed_type; +print "$EE $changed_hash symbols changed hash and weren't ignored\n" if $changed_hash; + +$errors++ if $changed_hash or $changed_type; +if ($changed_hash) { + print "II: Module hash change summary...\n"; + foreach $mod (sort { $module_syms{$b} <=> $module_syms{$a} } keys %module_syms) { + next if ! $module_syms{$mod}; + printf(" %-40s: %d\n", $mod, $module_syms{$mod}); + } +} + +print "II: Done\n"; + +if ($errors) { + exit($fail_exit); +} else { + exit(0); +} --- linux-4.4.0.orig/debian/scripts/config-check +++ linux-4.4.0/debian/scripts/config-check @@ -0,0 +1,121 @@ +#!/usr/bin/perl +# +# check-config -- check the current config for issues +# +use strict; + +my $P = 'check-config'; + +my $test = -1; +if ($ARGV[0] eq '--test') { + $test = $ARGV[1] + 0; +} elsif ($#ARGV != 4) { + die "Usage: $P \n"; +} + +my ($config, $arch, $flavour, $commonconfig, $warn_only) = @ARGV; + +my %values = (); + +# If we are in overridden then still perform the checks and emit the messages +# but do not return failure. Those items marked FATAL will alway trigger +# failure. +my $fail_exit = 1; +$fail_exit = 0 if ($warn_only eq 'true' || $warn_only eq '1'); +my $exit_val = 0; + +# Load up the current configuration values -- FATAL if this fails +print "$P: $config: loading config\n"; +open(CONFIG, "<$config") || die "$P: $config: open failed -- $! -- aborting\n"; +while () { + # Pull out values. + /^#*\s*(CONFIG_\w+)[\s=](.*)$/ or next; + if ($2 eq 'is not set') { + $values{$1} = 'n'; + } else { + $values{$1} = $2; + } +} +close(CONFIG); + +# ANNOTATIONS: check any annotations marked for enforcement +my $pass = 0; +my $total = 0; +my $annotations = "$commonconfig/annotations"; +my ($config, $value, $options, $option, $value, $check, $policy); +print "$P: $annotations loading annotations\n"; +my %annot; +my $form = 1; +open(ANNOTATIONS, "<$annotations") || die "$P: $annotations: open failed -- $! -- aborting\n"; +while () { + if (/^# FORMAT: (\S+)/) { + die "$P: $1: unknown annotations format\n" if ($1 != 2); + $form = $1; + } + + /^#/ && next; + chomp; + /^$/ && next; + + /^CONFIG_/ || next; + + if ($form == 1) { + ($config, $value, $options) = split(' ', $_, 3); + } elsif ($form == 2) { + ($config, $options) = split(' ', $_, 2); + } + + $annot{$config} = $annot{$config} . ' ' . $options; +} +close(ANNOTATIONS); + +my $config; +for $config (keys %annot) { + $check = 0; + $options = $annot{$config}; + + $policy = undef; + while ($options =~ /\s*(\S+)<(.*?)?>/g) { + ($option, $value) = ($1, $2); + + if ($option eq 'mark' && $value eq 'ENFORCED') { + $check = 1; + + } elsif ($option eq 'policy') { + if ($value =~ /^{/) { + $value =~ s/:/=>/g; + $policy = eval($value); + warn "$@" if ($@); + } else { + $policy = undef; + } + } + } + if ($check == 1 && !defined($policy)) { + print "$P: INVALID POLICY (use policy<{...}>) $config$options\n"; + $total++; + $check = 0; + } + if ($check) { + my $is = '-'; + $is = $values{$config} if (defined $values{$config}); + + my $value = '-'; + for my $which ("$arch-$flavour", "$arch-*", "*-$flavour", "$arch", "*") { + if (defined $policy->{$which}) { + $value = $policy->{$which}; + last; + } + } + if ($is eq $value) { + $pass++; + } else { + print "$P: FAIL ($is != $value): $config$options\n"; + $exit_val = $fail_exit; + } + $total++; + } +} + +print "$P: $pass/$total checks passed -- exit $exit_val\n"; +exit $exit_val; --- linux-4.4.0.orig/debian/scripts/control-create +++ linux-4.4.0/debian/scripts/control-create @@ -0,0 +1,25 @@ +#!/bin/bash + +. debian/debian.env + +vars=$1 + +. $vars + +if [ "$is_sub" = "" ]; then + flavour=$(basename $vars | sed 's/.*\.//') + stub=${DEBIAN}/control.d/flavour-control.stub +else + flavour=$(basename $vars .vars) + stub=${DEBIAN}/sub-flavours/control.stub +fi + +cat $stub | grep -v '^#' | sed \ + -e "s#FLAVOUR#$flavour#g" \ + -e "s#DESC#$desc#g" \ + -e "s#ARCH#$arch#g" \ + -e "s#SUPPORTED#$supported#g" \ + -e "s#TARGET#$target#g" \ + -e "s#BOOTLOADER#$bootloader#g" \ + -e "s#=PROVIDES=#$provides#g" \ + -e "s#=CONFLICTS=#$conflicts#g" --- linux-4.4.0.orig/debian/scripts/link-headers +++ linux-4.4.0/debian/scripts/link-headers @@ -0,0 +1,42 @@ +#!/bin/bash -e + +. debian/debian.env + +hdrdir="$1" +symdir="$2" +flavour="$3" + +echo "Symlinking and copying headers for $flavour..." + +excludes="( -path ./debian -prune -o -path ./${DEBIAN} -prune -o -path ./.git ) -prune -o" + +( +find . $excludes -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) -print +find ./include ./scripts -name .gitignore -prune -o -type f -print +find ./include -mindepth 1 -maxdepth 1 $excludes -type d -print +) | ( +while read file; do + dir=$file + lastdir=$file + + if [ -e "$hdrdir/$file" -o -L "$hdrdir/$file" ]; then + continue + fi + + while [ ! -e "$hdrdir/$dir" -a ! -L "$hdrdir/$dir" ]; do + lastdir=$dir + dir=`dirname $dir` + done + # If the last item to exist is a symlink we assume all is good + if [ ! -L "$hdrdir/$dir" ]; then + # Turns things like "./foo" into "../" + deref="`echo -n $lastdir | sed -e 's/^\.//' -e's,/[^/]*,../,g'`" + item="`echo -n $lastdir | sed -e 's/^\.\///'`" + ln -s $deref$symdir/$item $hdrdir/$item + fi +done +) + +exit --- linux-4.4.0.orig/debian/scripts/misc/find-obsolete-firmware +++ linux-4.4.0/debian/scripts/misc/find-obsolete-firmware @@ -0,0 +1,91 @@ +#!/bin/bash +# +# Find all duplicate or obsolete firmware that is being carried +# in the kernel firmware directory. Compare these files against +# the linux-firmware package for the approriate release. For example, +# assuming this is raring, then compare the kernel firmware files +# against the raring branch of linux-firmware. +# +# Example: $0 ~/ubuntu/linux-firmware-raring + +USEAGE="$0 LINUX-FIRMWARE" + +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +if [ "$1" = "" ] +then + echo $USEAGE + exit 1 +fi +FW="$1" + +if [ ! -f $FW/WHENCE ] +then + echo Bogus linux-firmware directory + exit 1 +fi +if ! egrep -q "^firmware:" $FWINFO +then + echo Bogus firmware info file + exit 1 +fi + +# +# Prepare the tree and make firmware. +# +TEE="tee -a" +LO=`pwd`/firmware.txt +LF=`pwd`/lib/firmware +rm -rf debian/build $LF $LO +fakeroot debian/rules clean prepare-generic +cp debian/build/build-generic/.config . +mkdir -p $LF +make firmware_install INSTALL_MOD_PATH=`pwd` + +(cd $LF +find . -type f | while read f +do + BN="`basename $f`" + + if ! grep -q $BN $FWINFO + then + echo "Unused firmware: $f" | $TEE $LO + else + if [ -f $FW/$f ] + then + if ! cmp $FW/$f $f + then + echo "$f differs" | $TEE $LO + else + echo "$f is duplicated" | $TEE $LO + fi + else + echo "$f does not exist in $FW" | $TEE $LO + fi + fi +done) + +# +# Check for firmware files referenced by the kernel +# that do not exist in either location. +# +cat $FWINFO | while read fwi f +do + if [ -s lib/firmware/$f ] || [ -s $FW/$f ] + then + continue + else + echo "Missing firmware $f" | $TEE $LO + fi +done + --- linux-4.4.0.orig/debian/scripts/misc/fw-to-ihex.sh +++ linux-4.4.0/debian/scripts/misc/fw-to-ihex.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +F=$1 +if [ "$F" = "" ] +then + echo You must supply a firmware file. + exit 1 +fi + +echo "unsigned char d[] = {" > $F.c +hexdump -v -e '"\t" 8/1 "0x%02x, " "\n"' $F >> $F.c +echo "};" >> $F.c +sed -i 's/0x .*$//' $F.c + +O="`dirname $F`/`basename $F`.o" +gcc -o $O -c $F.c +objcopy -Oihex $F.o $F.ihex + --- linux-4.4.0.orig/debian/scripts/misc/get-firmware +++ linux-4.4.0/debian/scripts/misc/get-firmware @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Find all files in linux-firmware that are new or different since the previous release +# and copy them into the kernel firmware directory. You should only do this on the +# backport branch since it would be redundant on the released kernel. It assumed you've +# unpacked linux-firmware from each release into separate directories. +# +# Example: $0 ~/ubuntu/linux-firmware-precise ~/ubuntu/linux-firmware-quantal + +if [ "$1" = "" ] || [ "$2" = "" ] || [ ! -f $1/WHENCE ] || [ ! -f $2/WHENCE ] +then + echo You must supply 2 firmware directories. + exit 1 +fi + +if [ ! -f debian/debian.env ] +then + echo You must run this script from the root of the repo + exit 1 +fi +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +CDIR=`pwd` +OFW=$1 +NFW=$2 + +cd $NFW +# +# Find all files in $NFW that are new or different from $1 +# +(find . -type f | egrep -v "debian|git|LICEN|WHEN|READ|Make|configure" | sed 's;\./;;' | \ +while read f +do + if grep -q $f $FWINFO + then + if [ ! -f $OFW/$f ] + then + echo $f + elif ! cmp $f $OFW/$f > /dev/null + then + echo $f + fi + fi +done) |\ +while read f +do + mkdir -p $CDIR/firmware/`dirname $f` + if [ ! -f $CDIR/firmware/`dirname $f`/`basename $f`.ihex ] + then + cp -v $f $CDIR/firmware/`dirname $f` + fi +done --- linux-4.4.0.orig/debian/scripts/misc/getabis +++ linux-4.4.0/debian/scripts/misc/getabis @@ -0,0 +1,130 @@ +#!/bin/bash + +if [ "$#" != "2" ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi + +if [ "$DEBIAN" = "" ]; then + . debian/debian.env +fi + +ver=$1 +revision=$2 +abi=$(echo $revision | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$/\1/') + +verabi=$ver-$abi +verfull=$ver-$revision + +WGET="wget --tries=1 --timeout=10 --quiet -c" + +abidir="`pwd`/$DEBIAN/abi/$verfull" +tmpdir="`pwd`/abi-tmp-$verfull" +origdir="`pwd`" +fwinfo=$abidir/fwinfo + +test -d $tmpdir || mkdir $tmpdir + +package_prefixes() { + __package_prefixes="$@" +} + +getall() { + arch=$1 + shift + + mkdir -p $abidir/$arch + + for sub in $@; do + if [ -f $abidir/$arch/$sub ]; then + echo "Exists: $sub" + continue + fi + echo -n "Fetching $sub($arch)..." + prefixes="" + filenames="" + cd $tmpdir + for prefix in $__package_prefixes + do + filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb + for r in "${repo_list[@]}" + do + if ! [ -f $filename ]; then + $WGET $r/$filename + fi + if [ -f $filename ]; then + prefixes="$prefixes $prefix" + filenames="$filenames $filename" + break + fi + done + done + if [ "$filenames" != "" ]; then + echo -n "extracting$prefixes..." + for filename in $filenames + do + dpkg-deb --extract $filename tmp + done + find tmp -name "*.ko" | while read f; do + modinfo $f | grep ^firmware >> $fwinfo + done + if [ -f tmp/boot/abi-* ]; then + mv tmp/boot/abi-* $abidir/$arch/$sub + else + echo -n "NO ABI FILE..." + fi + (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \ + $abidir/$arch/$sub.modules + ( + cd tmp; + # Prevent exposing some errors when called by python scripts. SIGPIPE seems to get + # exposed when using the `find ...` form of the command. + ko=$(find lib/modules/$verabi-$sub/kernel \ + -name '*.ko' | head -1) + readelf -p .comment "$ko" | gawk ' + ($1 == "[") { + printf("%s", $3); + for (n=4; n<=NF; n++) { + printf(" %s", $n); + } + print "" + }' | sort -u >$abidir/$arch/$sub.compiler + version=`cat $abidir/$arch/$sub.compiler` + echo -n "$version..." + ) + rm -rf tmp $filenames + echo "done." + else + echo "FAILED." + fi + cd $origdir + done +} + +# MAIN + +# Setup abi directory +mkdir -p $abidir +echo $abi > $abidir/abiname + +# NOTE: The flavours are hardcoded, because they may have changed from the +# current build. + +__package_prefixes="linux-image" + +. $DEBIAN/etc/getabis + +compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistant compiler versions detected" 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir + +# Add the new ABI directory, remove the old +git add $abidir +find $DEBIAN/abi/* -maxdepth 0 -type d | grep -v $verfull | while read f; do git rm -r $f;done --- linux-4.4.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-4.4.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,92 @@ +#!/usr/bin/python3 + +import os +import sys + +import urllib.request +import json + +# Suck up the git log output and extract the information we need. +bugs = [] +entries = [] +entry = None +subject_wait = False +for line in sys.stdin: + if line.startswith('commit '): + if entry and 'ignore' not in entry: + entries.append(entry) + entry = {} + subject_wait = True + + elif line.startswith('Author: '): + bits = line.strip().split(maxsplit=1) + entry['author'] = bits[1] + + elif subject_wait and line.startswith(' '): + subject_wait = False + entry['subject'] = line.strip() + + elif line.startswith(' BugLink: ') and 'launchpad.net' in line: + bits = line.strip().split(maxsplit=1) + bits = bits[1].split('/') + entry.setdefault('bugs', []).append(bits[-1]) + + # Accumulate bug numbers. + if bits[-1] not in bugs: + bugs.append(bits[-1]) + + elif line.startswith(' Ignore:'): + entry['ignore'] = True + + +entries.reverse() + +# Go through the entries and clear out authors for upstream commits. +for entry in entries: + if entry['subject'].startswith('UBUNTU:'): + entry['subject'] = entry['subject'][7:].strip() + else: + del entry['author'] + +# Lump everything without a bug at the bottom. +bugs.append('__packaging__') +bugs.append('__mainline__') + +emit_nl = False +for bug in bugs: + if bug == '__packaging__': + title = 'Miscellaneous Ubuntu changes' + elif bug == '__mainline__': + title = 'Miscellaneous upstream changes' + else: + bug_info = None + + #urllib.request.urlcleanup() + request = urllib.request.Request('https://api.launchpad.net/devel/bugs/' + bug) + request.add_header('Cache-Control', 'max-age=0') + with urllib.request.urlopen(request) as response: + data = response.read() + bug_info = json.loads(data.decode('utf-8')) + + title = bug_info['title'] + if 'description' in bug_info: + for line in bug_info['description'].split('\n'): + if line.startswith('Kernel-Description:'): + title = line.split(' ', 1)[1] + + title += ' (LP: #' + bug + ')' + + emit_title = True + for entry in entries: + if (bug == '__packaging__' and 'bugs' not in entry and 'author' in entry) or \ + (bug == '__mainline__' and 'bugs' not in entry and 'author' not in entry) or \ + ('bugs' in entry and bug in entry['bugs']): + if emit_title: + if emit_nl: + print('') + emit_nl = True + + print(' * ' + title) + emit_title = False + print(' - ' + entry['subject']) + --- linux-4.4.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-4.4.0/debian/scripts/misc/insert-changes.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl -w + +my $debian; +$droot = $ARGV[0] if (defined $ARGV[0]); +$droot = 'debian' if (!defined $droot); +$debian = $ARGV[1] if (defined $ARGV[1]); +$debian = 'debian.master' if (!defined $debian); + +system("make -s -f $droot/rules printchanges > $debian/changes"); + +open(CHANGELOG, "< $debian/changelog") or die "Cannot open changelog"; +open(CHANGES, "< $debian/changes") or die "Cannot open new changes"; +open(NEW, "> $debian/changelog.new") or die "Cannot open new changelog"; + +$printed = 0; + +while () { + if (/^ CHANGELOG: /) { + next if $printed; + + while () { + print NEW; + } + + $printed = 1; + } else { + print NEW; + } +} + +close(NEW); +close(CHANGES); +close(CHANGELOG); + +rename("$debian/changelog.new", "$debian/changelog"); +unlink("$debian/changes"); --- linux-4.4.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-4.4.0/debian/scripts/misc/insert-mainline-changes @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + warn "Usage: $0 \n"; + die " $0 debian.master/changelog v3.2.3 v3.2.2..v3.2.3\n"; +} +my ($changelog, $to, $range) = @ARGV; + +my @changes = (); + +push(@changes, "\n"); +push(@changes, " [ Upstream Kernel Changes ]\n\n"); +push(@changes, " * rebase to $to\n"); + +open(LOG, "git log '$range'|") || die "$0: git log failed: - $!\n"; +while () { + if (m@BugLink: .*launchpad.net/.*/([0-9]+)\s$@) { + push(@changes, " - LP: #$1\n"); + } +} +close(LOG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-4.4.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-4.4.0/debian/scripts/misc/insert-ubuntu-changes @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + die "Usage: $0 \n"; +} +my ($changelog, $end, $start) = @ARGV; + +$end =~ s/.*\.//; +$start =~ s/.*\.//; + +my @changes = (); +my $output = 0; +open(CHG, ") { + if (/^\S+\s+\((.*\.(\d+))\)/) { + if ($2 <= $end) { + last; + } + if ($2 == $start) { + $output = 1; + } + if ($output) { + push(@changes, "\n [ Ubuntu: $1 ]\n\n"); + next; + } + } + next if ($output == 0); + + next if (/^\s*$/); + next if (/^\s--/); + next if (/^\s\s[^\*\s]/); + + push(@changes, $_); +} +close(CHG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-4.4.0.orig/debian/scripts/misc/kernelconfig +++ linux-4.4.0/debian/scripts/misc/kernelconfig @@ -0,0 +1,172 @@ +#!/bin/bash + +. debian/debian.env + +# Script to merge all configs and run 'make silentoldconfig' on it to wade out bad juju. +# Then split the configs into distro-commmon and flavour-specific parts + +# We have to be in the top level kernel source directory +if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then + echo "This does not appear to be the kernel source directory." 1>&2 + exit 1 +fi + +mode=${1:?"Usage: $0 [oldconfig|editconfig]"} +yes=0 +case "$mode" in + update*configs) mode='silentoldconfig' ;; + default*configs) mode='oldconfig'; yes=1 ;; + edit*configs) ;; # All is good + gen*configs) mode='genconfigs' ;; # All is good + dump*configs) mode='config'; yes=1 ;; + *) echo "$0 called with invalid mode" 1>&2 + exit 1 ;; +esac +kerneldir="`pwd`" +confdir="$kerneldir/${DEBIAN}/config" +variant="$2" + +. $DEBIAN/etc/kernelconfig + +bindir="`pwd`/${DROOT}/scripts/misc" +common_conf="$confdir/config.common.$family" +tmpdir=`mktemp -d` +mkdir "$tmpdir/CONFIGS" + +if [ "$mode" = "genconfigs" ]; then + keep=1 + mode="oldconfig" + test -d CONFIGS || mkdir CONFIGS +fi + +for arch in $archs; do + rm -rf build + mkdir build + + # Map debian archs to kernel archs + case "$arch" in + ppc64|ppc64el) kernarch="powerpc" ;; + amd64) kernarch="x86_64" ;; + lpia) kernarch="x86" ;; + sparc) kernarch="sparc64" ;; + armel|armhf) kernarch="arm" ;; + s390x) kernarch="s390" ;; + *) kernarch="$arch" ;; + esac + + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + + # Merge configs + # We merge config.common.ubuntu + config.common. + + # config.flavour. + + for config in $flavourconfigs; do + fullconf="$tmpdir/$arch-$config-full" + case $config in + *) + : >"$fullconf" + if [ -f $common_conf ]; then + cat $common_conf >> "$fullconf" + fi + if [ -f $archconfdir/config.common.$arch ]; then + cat $archconfdir/config.common.$arch >> "$fullconf" + fi + cat "$archconfdir/$config" >>"$fullconf" + if [ -f $confdir/OVERRIDES ]; then + cat $confdir/OVERRIDES >> "$fullconf" + fi + ;; + esac + done + + for config in $flavourconfigs; do + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/$arch-$config-full" + cat "$fullconf" > build/.config + # Call oldconfig or menuconfig + case "$mode" in + editconfigs) + # Interactively edit config parameters + while : ; do + echo -n "Do you want to edit config: $arch/$config? [Y/n] " + read choice + + case "$choice" in + y* | Y* | "" ) + make O=`pwd`/build ARCH=$kernarch menuconfig + break ;; + n* | N* ) + break ;; + *) + echo "Entry not valid" + esac + done + ;; + *) + echo "* Run $mode (yes=$yes) on $arch/$config ..." + if [ "$yes" -eq 1 ]; then + yes "" | make O=`pwd`/build ARCH=$kernarch "$mode" + else + make O=`pwd`/build ARCH=$kernarch "$mode" + fi ;; + esac + cat build/.config > $archconfdir/$config + cat build/.config > "$tmpdir/CONFIGS/$arch-$config" + if [ "$keep" = "1" ]; then + cat build/.config > CONFIGS/$arch-$config + fi + else + echo "!! Config not found $archconfdir/$config..." + fi + done + + echo "Running splitconfig.pl for $arch" + echo + + # Can we make this more robust by avoiding $tmpdir completely? + # This approach was used for now because I didn't want to change + # splitconfig.pl + (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ + config.common.$arch; cp config.common.$arch $tmpdir) +done + +rm -f $common_conf + +# Now run splitconfig.pl on all the config.common. copied to +# $tmpdir +(cd $tmpdir; $bindir/splitconfig.pl *) +( + cd $confdir; + rm -f *-full + grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf + for arch in $archs; do + grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ + >$arch/config.common.$arch + done +) + +echo "" +echo "Running config-check for all configurations ..." +echo "" +fail=0 +for arch in $archs; do + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + for config in $flavourconfigs; do + flavour="${config##*.}" + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/CONFIGS/$arch-$config" + "$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" || let "fail=$fail+1" + fi + done +done + +if [ "$fail" != 0 ]; then + echo "" + echo "*** ERROR: $fail config-check failures detected" + echo "" +fi + +rm -rf build + --- linux-4.4.0.orig/debian/scripts/misc/retag +++ linux-4.4.0/debian/scripts/misc/retag @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w + +open(TAGS, "git tag -l |") or die "Could not get list of tags"; +@tags = ; +close(TAGS); + +open(LOGS, "git log --pretty=short |") or die "ERROR: Calling git log"; +my $commit = ""; + +while () { + my $origtag; + + if (m|^commit (.*)$|) { + $commit = $1; + next; + } + + m|\s*UBUNTU: (Ubuntu-2\.6\..*)| or next; + + $tag = $1; + + ($origtag) = grep(/^$tag.orig$/, @tags); + + if (!defined($origtag)) { + print "I: Adding original tag for $tag\n"; + system("git tag -m $tag $tag.orig $tag"); + } + + print "I: Tagging $tag => $commit\n"; + + system("git tag -f -m $tag $tag $commit"); +} + +close(LOGS); --- linux-4.4.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-4.4.0/debian/scripts/misc/splitconfig.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl -w + +%allconfigs = (); +%common = (); + +print "Reading config's ...\n"; + +for $config (@ARGV) { + # Only config.* + next if $config !~ /^config\..*/; + # Nothing that is disabled, or remnant + next if $config =~ /.*\.(default|disabled|stub)$/; + + %{$allconfigs{$config}} = (); + + print " processing $config ... "; + + open(CONFIG, "< $config"); + + while () { + # Skip comments + /^#*\s*CONFIG_(\w+)[\s=](.*)$/ or next; + + ${$allconfigs{$config}}{$1} = $2; + + $common{$1} = $2; + } + + close(CONFIG); + + print "done.\n"; +} + +print "\n"; + +print "Merging lists ... \n"; + +# %options - pointer to flavour config inside the allconfigs array +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + for $key (keys(%common)) { + next if not defined $common{$key}; + + # If we don't have the common option, then it isn't + # common. If we do have that option, it must have the same + # value. EXCEPT where this file does not have a value at all + # which may safely be merged with any other value; the value + # will be elided during recombination of the parts. + if (!defined($options{$key})) { + # Its ok really ... let it merge + } elsif (not defined($options{$key})) { + undef $common{$key}; + } elsif ($common{$key} ne $options{$key}) { + undef $common{$key}; + } + } + + print "done.\n"; +} + +print "\n"; + +print "Creating common config ... "; + +open(COMMON, "> config.common"); +print COMMON "#\n# Common config options automatically generated by splitconfig.pl\n#\n"; + +for $key (sort(keys(%common))) { + if (not defined $common{$key}) { + print COMMON "# CONFIG_$key is UNMERGABLE\n"; + } elsif ($common{$key} eq "is not set") { + print COMMON "# CONFIG_$key is not set\n"; + } else { + print COMMON "CONFIG_$key=$common{$key}\n"; + } +} +close(COMMON); + +print "done.\n\n"; + +print "Creating stub configs ...\n"; + +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + open(STUB, "> $config"); + print STUB "#\n# Config options for $config automatically generated by splitconfig.pl\n#\n"; + + for $key (sort(keys(%options))) { + next if defined $common{$key}; + + if ($options{$key} =~ /^is /) { + print STUB "# CONFIG_$key $options{$key}\n"; + } else { + print STUB "CONFIG_$key=$options{$key}\n"; + } + } + + close(STUB); + + print "done.\n"; +} --- linux-4.4.0.orig/debian/scripts/misc/update-aufs.sh +++ linux-4.4.0/debian/scripts/misc/update-aufs.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +AUFS=aufs4-standalone + +# +# Before you run this be sure you've removed or reverted the 'UBUNTU: SAUCE: AUFS" patch. +# +# +# Make sure the current working directory is at the top of the +# linux tree. +# +if ! grep PATCHLEVEL Makefile +then + echo "You must run this script from the top of the linux tree" + exit 1 +fi + +clean=0 +if [ "$#" = 1 ]; then + AUFS="$1" +else + clean=1 + rm -rf ${AUFS} + git clone https://github.com/sfjro/aufs4-standalone.git ${AUFS} + (cd ${AUFS}; git checkout -b aufs4.x-rcN remotes/origin/aufs4.x-rcN) +fi + +cp ${AUFS}/include/uapi/linux/aufs_type.h include/uapi/linux +rsync -av ${AUFS}/fs/ fs/ +rsync -av ${AUFS}/Documentation/ Documentation/ + +PATCHES="${PATCHES} aufs4-kbuild.patch" +PATCHES="${PATCHES} aufs4-base.patch" +PATCHES="${PATCHES} aufs4-mmap.patch" +PATCHES="${PATCHES} aufs4-standalone.patch" +PATCHES="${PATCHES} aufs4-loopback.patch" +#PATCHES="${PATCHES} vfs-ino.patch" +PATCHES="${PATCHES} tmpfs-idr.patch" + +for i in ${PATCHES} +do + patch -p1 < ${AUFS}/$i +done + +[ "$clean" = 1 ] && rm -rf ${AUFS} +git add mm/prfile.c +git add -u +find . -name "*.orig" | xargs rm +find . |grep aufs | xargs git add +git commit -s -m"UBUNTU: SAUCE: AUFS" --- linux-4.4.0.orig/debian/scripts/misc/update-zfs.sh +++ linux-4.4.0/debian/scripts/misc/update-zfs.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Update spl/zfs from the Ubuntu archive. You will have to manually check +# to see if the version has been updated. +# +SPL_MAJOR_VER=${_SPL_MAJOR_VER:-0.6.5.4} +SPL_MINOR_VER=${_SPL_MINOR_VER:-0ubuntu1} +SPL_DKMS=${_SPL_DKMS:-http://archive.ubuntu.com/ubuntu/pool/universe/s/spl-linux/spl-dkms_${SPL_MAJOR_VER}-${SPL_MINOR_VER}_amd64.deb} + +ZFS_MAJOR_VER=${_ZFS_MAJOR_VER:-0.6.5.4} +ZFS_MINOR_VER=${_ZFS_MINOR_VER:-0ubuntu1} +ZFS_DKMS=${_ZFS_DKMS:-http://archive.ubuntu.com/ubuntu/pool/universe/z/zfs-linux/zfs-dkms_${ZFS_MAJOR_VER}-${ZFS_MINOR_VER}_amd64.deb} + +function update_from_archive { + + URL=$1 + DEST_DIR=$2 + VER=$3 + + rm -rf ${DEST_DIR}.tmp + wget -O ${DEST_DIR}.deb ${URL} + dpkg -x ${DEST_DIR}.deb ${DEST_DIR}.tmp + mkdir -p ${DEST_DIR} + rsync -a --delete ${DEST_DIR}.tmp/usr/src/${DEST_DIR}-${VER}*/ ${DEST_DIR}/ + rm -rf ${DEST_DIR}.deb ${DEST_DIR}.tmp + find ${DEST_DIR} -type f | while read f;do git add -f $f;done +} + +update_from_archive ${SPL_DKMS} spl ${SPL_MAJOR_VER} +update_from_archive ${ZFS_DKMS} zfs ${ZFS_MAJOR_VER} + +git add -u +git commit -s -m"UBUNTU: SAUCE: (noup) Update spl to ${SPL_MAJOR_VER}-${SPL_MINOR_VER}, zfs to ${ZFS_MAJOR_VER}-${ZFS_MINOR_VER}" --- linux-4.4.0.orig/debian/scripts/module-check +++ linux-4.4.0/debian/scripts/module-check @@ -0,0 +1,120 @@ +#!/usr/bin/perl -w + +$flavour = shift; +$prev_abidir = shift; +$abidir = shift; +$skipmodule = shift; + +print "II: Checking modules for $flavour..."; + +if (-f "$prev_abidir/ignore.modules" + or -f "$prev_abidir/$flavour.ignore.modules") { + print "explicitly ignoring modules\n"; + exit(0); +} + +if (not -f "$abidir/$flavour.modules" or not -f + "$prev_abidir/$flavour.modules") { + print "previous or current modules file missing!\n"; + print " $abidir/$flavour.modules\n"; + print " $prev_abidir/$flavour.modules\n"; + if (defined($skipmodule)) { + exit(0); + } else { + exit(1); + } +} + +print "\n"; + +my %modules; +my %modules_ignore; +my $missing = 0; +my $new = 0; +my $errors = 0; + +# See if we have any ignores +if (-f "$prev_abidir/../modules.ignore") { + my $ignore = 0; + open(IGNORE, "< $prev_abidir/../modules.ignore") or + die "Could not open $prev_abidir/../modules.ignore"; + print " reading modules to ignore..."; + while () { + chomp; + next if /\s*#/; + $modules_ignore{$_} = 1; + $ignore++; + } + close(IGNORE); + print "read $ignore modules.\n"; +} + +# Read new modules first +print " reading new modules..."; +$new_count = 0; +open(NEW, "< $abidir/$flavour.modules") or + die "Could not open $abidir/$flavour.modules"; +while () { + chomp; + $modules{$_} = 1; + $new_count++; +} +close(NEW); +print "read $new_count modules.\n"; + +# Now the old modules, checking for missing ones +print " reading old modules..."; +$old_count = 0; +open(OLD, "< $prev_abidir/$flavour.modules") or + die "Could not open $prev_abidir/$flavour.modules"; +while () { + chomp; + if (not defined($modules{$_})) { + print "\n" if not $missing; + $missing++; + if (not defined($modules_ignore{$_})) { + print " MISS: $_\n"; + $errors++; + } else { + print " MISS: $_ (ignored)\n"; + } + } else { + $modules{$_}++; + } + $old_count++; +} +close(OLD); +# Check for new modules +foreach $mod (keys(%modules)) { + if ($modules{$mod} < 2) { + print "\n" if not $missing and not $new; + print " NEW : $mod\n"; + $new++; + } +} +if ($new or $missing) { + print " read $old_count modules : new($new) missing($missing)\n"; +} else { + print "read $old_count modules.\n"; +} + + +# Let's see where we stand... +if ($errors) { + if (defined($skipmodule)) { + print "WW: Explicitly asked to ignore failures (probably not good)\n"; + } else { + print "EE: Missing modules (start begging for mercy)\n"; + exit 1 + } +} + +if ($new) { + print "II: New modules (you've been busy, wipe the poop off your nose)\n"; +} else { + print "II: No new modules (hope you're happy, slacker)\n"; +} + +print "II: Done\n"; + +exit(0); --- linux-4.4.0.orig/debian/scripts/module-inclusion +++ linux-4.4.0/debian/scripts/module-inclusion @@ -0,0 +1,104 @@ +#!/bin/bash + +# +# Build a new directory of modules based on an inclusion list. +# The includsion list format must be a bash regular expression. +# +# usage: $0 ROOT INCLUSION_LIST +# example: $0 \ +# debian/build/build-virtual-ALL debian/build/build-virtual \ +# debian.master/control.d/virtual.inclusion-list \ +# virtual.depmap +master=0 +if [ "$1" = "--master" ]; then + master=1 + shift +fi + +ROOT=$1 +NROOT=$2 +ILIST=$3 +DEPMAP=$4 + +tmp="/tmp/module-inclusion.$$" + +# +# Prep a destination directory. +# +mkdir -p ${NROOT} + +{ + # Copy over the framework into the master package. + if [ "$master" -eq 1 ]; then + (cd ${ROOT}; find . ! -name "*.ko" -type f) + fi + + # Copy over modules by name or pattern. + while read -r i + do + # + # 'find' blurts a warning if it cannot find any ko files. + # + case "$i" in + \!*) + (cd ${ROOT}; ${i#!} || true) + ;; + *\**) + (cd ${ROOT}; eval find "${i}" -name "*.ko" || true) + ;; + *) + echo "$i" + ;; + esac + done <"${ILIST}" +} >"$tmp" + +# Copy over the listed modules. +while read i +do + # If this is already moved over, all is good. + if [ -f "${NROOT}/$i" ]; then + : + + # If present in the source, moved it over. + elif [ -f "${ROOT}/$i" ]; then + mkdir -p "${NROOT}/`dirname $i`" + mv "${ROOT}/$i" "${NROOT}/$i" + + # Otherwise, it is missing. + else + echo "Warning: Could not find ${ROOT}/$i" 1>&2 + fi +done <"$tmp" + +# Copy over any dependancies, note if those are missing +# we know they are in a pre-requisite package as they must +# have existed at depmap generation time, and can only have +# moved into a package. +let n=0 || true +while [ -s "$tmp" ] +do + let n="$n+1" || true + [ "$n" = "20" ] && break || true + + echo "NOTE: pass $n: dependency scan" 1>&2 + + while read i + do + grep "^$i " "$DEPMAP" | \ + while read m d + do + if [ -f "${ROOT}/$d" ]; then + echo "NOTE: pass $n: ${i} pulls in ${d}" 1>&2 + echo "$d" + mkdir -p "${NROOT}/`dirname $d`" + mv "${ROOT}/$d" "${NROOT}/$d" + fi + done + done <"$tmp" >"$tmp.new" + mv -f "$tmp.new" "$tmp" +done + +rm -f "$tmp" + +exit 0 --- linux-4.4.0.orig/debian/scripts/sub-flavour +++ linux-4.4.0/debian/scripts/sub-flavour @@ -0,0 +1,69 @@ +#!/bin/bash + +. debian/debian.env + +echo "SUB_PROCESS $FROM => $TO" + +export from_pkg="linux-image-$ABI_RELEASE-$FROM" +export to_pkg="linux-image-$ABI_RELEASE-$TO" + +from_moddir="debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM" +to_moddir="debian/$to_pkg/lib/modules/$ABI_RELEASE-$FROM" + +install -d "debian/$to_pkg/boot" +install -m644 debian/$from_pkg/boot/config-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ +install -m600 debian/$from_pkg/boot/{vmlinuz,System.map}-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ + +# +# Print some warnings if there are files in the sub-flavours list +# that do not actually exist. +# +cat ${DEBIAN}/sub-flavours/$TO.list | while read line +do +( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + # + # If its a wildcard, then check that there are files that match. + # + if echo "$line" | grep '\*' > /dev/null + then + if [ `eval find "$line" -name '*.ko' 2>/dev/null|wc -l` -lt 1 ] + then + echo SUB_INST Warning - No files in $line + fi + # + # Else it should be a single file reference. + # + elif [ ! -f "$line" ] + then + echo SUB_INST Warning - could not find "$line" + fi +) +done + +cat ${DEBIAN}/sub-flavours/$TO.list | while read line; do + ( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + if echo "$line" | grep '\*' > /dev/null + then + eval find "$line" -name '*.ko' 2>/dev/null || true + elif [ -f "$line" ] + then + echo "$line" + fi + ); +done | while read mod; do + echo "SUB_INST checking: $mod" + fromdir="/lib/modules/$ABI_RELEASE-$FROM/" + egrep "^($fromdir)?kernel/$mod:" \ + $from_moddir/modules.dep | sed -e "s|^$fromdir||" -e 's/://' -e 's/ /\n/g' | \ + while read m; do + m="${fromdir}$m" + test -f debian/$to_pkg/$m && continue + echo "SUB_INST installing: $m" + install -D -m644 debian/$from_pkg/$m \ + debian/$to_pkg/$m + done +done --- linux-4.4.0.orig/debian/source/format +++ linux-4.4.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-4.4.0.orig/debian/source/options +++ linux-4.4.0/debian/source/options @@ -0,0 +1,24 @@ +# Ignore vbox symlinks, we will regenerate these at clean (LP:1426113) +extend-diff-ignore=ubuntu/vbox/vboxvideo/include +extend-diff-ignore=ubuntu/vbox/vboxguest/r0drv +extend-diff-ignore=ubuntu/vbox/vboxguest/include +extend-diff-ignore=ubuntu/vbox/vboxsf/r0drv +extend-diff-ignore=ubuntu/vbox/vboxsf/include + +extend-diff-ignore=spl/rpm/redhat/spl-dkms.spec.in +extend-diff-ignore=spl/rpm/redhat/spl.spec.in +extend-diff-ignore=zfs/rpm/redhat/zfs-dkms.spec.in +extend-diff-ignore=zfs/rpm/redhat/zfs.spec.in +extend-diff-ignore=zfs/cmd/zed/zed.d/checksum-notify.sh +extend-diff-ignore=zfs/cmd/zed/zed.d/checksum-spare.sh +extend-diff-ignore=zfs/cmd/zed/zed.d/data-notify.sh +extend-diff-ignore=zfs/cmd/zed/zed.d/resilver.finish-notify.sh +extend-diff-ignore=zfs/scripts/zpios-test/large-thread-survey.sh +extend-diff-ignore=zfs/scripts/zpios-test/large.sh +extend-diff-ignore=zfs/scripts/zpios-test/medium.sh +extend-diff-ignore=zfs/scripts/zpios-test/small.sh +extend-diff-ignore=zfs/scripts/zpios-test/tiny.sh + +# force "dpkg-source -I -i" behavior +diff-ignore +tar-ignore --- linux-4.4.0.orig/debian/stamps/keep-dir +++ linux-4.4.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-4.4.0.orig/debian/tests-build/README +++ linux-4.4.0/debian/tests-build/README @@ -0,0 +1,21 @@ +Scripts placed in this directory get called one at a time by run-parts(8). +The scripts are expected to perform some sort of sanity checks on the +finished build. Scripts will be called once for each flavour. + +Some environment variables are exported to make life a little easier: + +DPKG_ARCH : The dpkg architecture (e.g. "amd64") +KERN_ARCH : The kernel architecture (e.g. "x86_64") +FLAVOUR : The specific flavour for this run (e.g. "generic") +VERSION : The full version of this build (e.g. 2.6.22-1) +REVISION : The exact revision of this build (e.g. 1.3) +PREV_REVISION : The revision prior to this one +ABI_NUM : The specific ABI number for this build (e.g. 2) +PREV_ABI_NUM : The previous ABI number. Can be the same as ABI_NUM. +BUILD_DIR : The directory where this build took place +INSTALL_DIR : The directory where the package is prepared +SOURCE_DIR : Where the main kernel source is + +Scripts are expected to have a zero exit status when no problems occur, +and non-zero when an error occurs that should stop the build. Scripts +should print whatever info they deem needed to deduce the problem. --- linux-4.4.0.orig/debian/tests-build/check-aliases +++ linux-4.4.0/debian/tests-build/check-aliases @@ -0,0 +1,24 @@ +#!/usr/bin/perl -w + +my %map; + +print "Checking for dupe aliases in $ENV{'FLAVOUR'}...\n"; + +$aliases = + "$ENV{'INSTALL_DIR'}/lib/modules/$ENV{'VERSION'}-$ENV{'FLAVOUR'}/modules.alias"; + +open(ALIASES, "< $aliases") or die "Could not open $aliases"; + +while () { + chomp; + my ($junk, $alias, $module) = split; + + if (defined($map{$alias})) { + printf("%s %20s / %-20s : %s \n", ("$map{$alias}" eq "$module") + ? "INT" : " ", $map{$alias}, $module, $alias); + } else { + $map{$alias} = $module; + } +} + +exit(0); --- linux-4.4.0.orig/debian/tests/control +++ linux-4.4.0/debian/tests/control @@ -0,0 +1,7 @@ +Tests: rebuild +Depends: @builddeps@, fakeroot +Restrictions: allow-stderr + +Tests: ubuntu-regression-suite +Depends: build-essential, gcc-multilib [amd64 arm64 armhf i386 powerpc], gdb, git, bzr +Restrictions: allow-stderr, isolation-machine, breaks-testbed --- linux-4.4.0.orig/debian/tests/rebuild +++ linux-4.4.0/debian/tests/rebuild @@ -0,0 +1,20 @@ +#!/bin/sh + +# If we are triggering for just linux or linux-meta we know we have +# just built the kernel and there is no point in repeating that +# build, it just wastes time. (LP: #1498862) +build_needed=0 +for trigger in ${ADT_TEST_TRIGGERS:-force} +do + case "$trigger" in + linux/*|linux-lts-*/*|linux-meta*/*) ;; + *) build_needed=1 ;; + esac +done +if [ "$build_needed" -eq 0 ]; then + echo "rebuild: short circuiting build for '${ADT_TEST_TRIGGERS}'" + exit 0 +fi + +set -e +dpkg-buildpackage -rfakeroot -us -uc -b --- linux-4.4.0.orig/debian/tests/ubuntu-regression-suite +++ linux-4.4.0/debian/tests/ubuntu-regression-suite @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +sver=`dpkg-parsechangelog -SVersion` +read x rver x &2 + exit 1 +fi + +git clone git://kernel.ubuntu.com/ubuntu/kernel-testing +kernel-testing/run-dep8-tests --- linux-4.4.0.orig/debian/tools/generic +++ linux-4.4.0/debian/tools/generic @@ -0,0 +1,60 @@ +#!/bin/bash +full_version=`uname -r` + +# First check for a fully qualified version. +this="/usr/lib/linux-tools/$full_version/`basename $0`" +if [ -f "$this" ]; then + exec "$this" "$@" +fi + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +this="$0_$version" +if [ -f "$this" ]; then + exec "$this" "$@" +fi + +# Before saucy kernels we had no flavour linkage. +if dpkg --compare-versions "$version" lt "3.11.0"; then + flavour='' +else + flavour="-$flavour" +fi +# Hint at the cloud tools if they exist (trusty and later) +if dpkg --compare-versions "$version" ge "3.13.0"; then + cld="" +else + cld=":" +fi +# Work out if this is an LTS backport or not. +codename=`lsb_release -cs` +case "$codename" in +precise) base='3.2.0-9999' ;; +trusty) base='3.13.0-9999' ;; +*) base='' ;; +esac +std="" +lts=":" +if [ "$base" != "" ]; then + if dpkg --compare-versions "$version" gt "$base"; then + std=":" + lts="" + fi +fi + +# Give them a hint as to what to install. + echo "WARNING: `basename $0` not found for kernel $version" >&2 + echo "" >&2 + echo " You may need to install the following packages for this specific kernel:" >&2 + echo " linux-tools-$version$flavour" >&2 +$cld echo " linux-cloud-tools-$version$flavour" >&2 + echo "" >&2 + echo " You may also want to install one of the following packages to keep up to date:" >&2 +$std echo " linux-tools$flavour" >&2 +$std $cld echo " linux-cloud-tools$flavour" >&2 +$lts echo " linux-tools$flavour-lts-" >&2 +$lts $cld echo " linux-cloud-tools$flavour-lts-" >&2 + +exit 2 --- linux-4.4.0.orig/drivers/acpi/blacklist.c +++ linux-4.4.0/drivers/acpi/blacklist.c @@ -313,6 +313,77 @@ }, /* + * The following Lenovo models have a broken workaround in the + * acpi_video backlight implementation to meet the Windows 8 + * requirement of 101 backlight levels. Reverting to pre-Win8 + * behavior fixes the problem. + */ + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad L430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430s"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad W530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X1 Carbon", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X1 Carbon"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X230", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X230"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad Edge E330", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Edge E330"), + }, + }, + + /* * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. * Linux ignores it, except for the machines enumerated below. */ --- linux-4.4.0.orig/drivers/acpi/property.c +++ linux-4.4.0/drivers/acpi/property.c @@ -346,7 +346,7 @@ * * Return: %0 if property with @name has been found (success), * %-EINVAL if the arguments are invalid, - * %-ENODATA if the property doesn't exist, + * %-EINVAL if the property doesn't exist, * %-EPROTO if the property value type doesn't match @type. */ static int acpi_data_get_property(struct acpi_device_data *data, @@ -360,7 +360,7 @@ return -EINVAL; if (!data->pointer || !data->properties) - return -ENODATA; + return -EINVAL; properties = data->properties; for (i = 0; i < properties->package.count; i++) { @@ -375,13 +375,13 @@ if (!strcmp(name, propname->string.pointer)) { if (type != ACPI_TYPE_ANY && propvalue->type != type) return -EPROTO; - else if (obj) + if (obj) *obj = propvalue; return 0; } } - return -ENODATA; + return -EINVAL; } /** @@ -439,7 +439,7 @@ * * Return: %0 if array property (package) with @name has been found (success), * %-EINVAL if the arguments are invalid, - * %-ENODATA if the property doesn't exist, + * %-EINVAL if the property doesn't exist, * %-EPROTO if the property is not a package or the type of its elements * doesn't match @type. */ --- linux-4.4.0.orig/drivers/acpi/tables.c +++ linux-4.4.0/drivers/acpi/tables.c @@ -484,3 +484,13 @@ } early_param("acpi_force_table_verification", acpi_force_table_verification_setup); + +static int __init acpi_force_32bit_fadt_addr(char *s) +{ + pr_info("Forcing 32 Bit FADT addresses\n"); + acpi_gbl_use32_bit_fadt_addresses = TRUE; + + return 0; +} + +early_param("acpi_force_32bit_fadt_addr", acpi_force_32bit_fadt_addr); --- linux-4.4.0.orig/drivers/ata/ahci.h +++ linux-4.4.0/drivers/ata/ahci.h @@ -240,8 +240,6 @@ AHCI_HFLAG_MULTI_MSI = (1 << 16), /* multiple PCI MSIs */ AHCI_HFLAG_NO_DEVSLP = (1 << 17), /* no device sleep */ AHCI_HFLAG_NO_FBS = (1 << 18), /* no FBS */ - AHCI_HFLAG_EDGE_IRQ = (1 << 19), /* HOST_IRQ_STAT behaves as - Edge Triggered */ /* ap->flags bits */ @@ -352,6 +350,7 @@ * be overridden anytime before the host is activated. */ void (*start_engine)(struct ata_port *ap); + irqreturn_t (*irq_handler)(int irq, void *dev_instance); }; extern int ahci_ignore_sss; @@ -400,6 +399,7 @@ void ahci_print_info(struct ata_host *host, const char *scc_s); int ahci_host_activate(struct ata_host *host, struct scsi_host_template *sht); void ahci_error_handler(struct ata_port *ap); +u32 ahci_handle_port_intr(struct ata_host *host, u32 irq_masked); static inline void __iomem *__ahci_port_base(struct ata_host *host, unsigned int port_no) --- linux-4.4.0.orig/drivers/ata/ahci_xgene.c +++ linux-4.4.0/drivers/ata/ahci_xgene.c @@ -548,6 +548,88 @@ return rc; } +/** + * xgene_ahci_handle_broken_edge_irq - Handle the broken irq. + * @ata_host: Host that recieved the irq + * @irq_masked: HOST_IRQ_STAT value + * + * For hardware with broken edge trigger latch + * the HOST_IRQ_STAT register misses the edge interrupt + * when clearing of HOST_IRQ_STAT register and hardware + * reporting the PORT_IRQ_STAT register at the + * same clock cycle. + * As such, the algorithm below outlines the workaround. + * + * 1. Read HOST_IRQ_STAT register and save the state. + * 2. Clear the HOST_IRQ_STAT register. + * 3. Read back the HOST_IRQ_STAT register. + * 4. If HOST_IRQ_STAT register equals to zero, then + * traverse the rest of port's PORT_IRQ_STAT register + * to check if an interrupt is triggered at that point else + * go to step 6. + * 5. If PORT_IRQ_STAT register of rest ports is not equal to zero + * then update the state of HOST_IRQ_STAT saved in step 1. + * 6. Handle port interrupts. + * 7. Exit + */ +static int xgene_ahci_handle_broken_edge_irq(struct ata_host *host, + u32 irq_masked) +{ + struct ahci_host_priv *hpriv = host->private_data; + void __iomem *port_mmio; + int i; + + if (!readl(hpriv->mmio + HOST_IRQ_STAT)) { + for (i = 0; i < host->n_ports; i++) { + if (irq_masked & (1 << i)) + continue; + + port_mmio = ahci_port_base(host->ports[i]); + if (readl(port_mmio + PORT_IRQ_STAT)) + irq_masked |= (1 << i); + } + } + + return ahci_handle_port_intr(host, irq_masked); +} + +static irqreturn_t xgene_ahci_irq_intr(int irq, void *dev_instance) +{ + struct ata_host *host = dev_instance; + struct ahci_host_priv *hpriv; + unsigned int rc = 0; + void __iomem *mmio; + u32 irq_stat, irq_masked; + + VPRINTK("ENTER\n"); + + hpriv = host->private_data; + mmio = hpriv->mmio; + + /* sigh. 0xffffffff is a valid return from h/w */ + irq_stat = readl(mmio + HOST_IRQ_STAT); + if (!irq_stat) + return IRQ_NONE; + + irq_masked = irq_stat & hpriv->port_map; + + spin_lock(&host->lock); + + /* + * HOST_IRQ_STAT behaves as edge triggered latch meaning that + * it should be cleared before all the port events are cleared. + */ + writel(irq_stat, mmio + HOST_IRQ_STAT); + + rc = xgene_ahci_handle_broken_edge_irq(host, irq_masked); + + spin_unlock(&host->lock); + + VPRINTK("EXIT\n"); + + return IRQ_RETVAL(rc); +} + static struct ata_port_operations xgene_ahci_v1_ops = { .inherits = &ahci_ops, .host_stop = xgene_ahci_host_stop, @@ -779,7 +861,8 @@ hpriv->flags = AHCI_HFLAG_NO_NCQ; break; case XGENE_AHCI_V2: - hpriv->flags |= AHCI_HFLAG_YES_FBS | AHCI_HFLAG_EDGE_IRQ; + hpriv->flags |= AHCI_HFLAG_YES_FBS; + hpriv->irq_handler = xgene_ahci_irq_intr; break; default: break; --- linux-4.4.0.orig/drivers/ata/libahci.c +++ linux-4.4.0/drivers/ata/libahci.c @@ -112,6 +112,7 @@ const char *buf, size_t size); static ssize_t ahci_show_em_supported(struct device *dev, struct device_attribute *attr, char *buf); +static irqreturn_t ahci_single_level_irq_intr(int irq, void *dev_instance); static DEVICE_ATTR(ahci_host_caps, S_IRUGO, ahci_show_host_caps, NULL); static DEVICE_ATTR(ahci_host_cap2, S_IRUGO, ahci_show_host_cap2, NULL); @@ -511,6 +512,9 @@ if (!hpriv->start_engine) hpriv->start_engine = ahci_start_engine; + + if (!hpriv->irq_handler) + hpriv->irq_handler = ahci_single_level_irq_intr; } EXPORT_SYMBOL_GPL(ahci_save_initial_config); @@ -1841,7 +1845,7 @@ return IRQ_WAKE_THREAD; } -static u32 ahci_handle_port_intr(struct ata_host *host, u32 irq_masked) +u32 ahci_handle_port_intr(struct ata_host *host, u32 irq_masked) { unsigned int i, handled = 0; @@ -1867,43 +1871,7 @@ return handled; } - -static irqreturn_t ahci_single_edge_irq_intr(int irq, void *dev_instance) -{ - struct ata_host *host = dev_instance; - struct ahci_host_priv *hpriv; - unsigned int rc = 0; - void __iomem *mmio; - u32 irq_stat, irq_masked; - - VPRINTK("ENTER\n"); - - hpriv = host->private_data; - mmio = hpriv->mmio; - - /* sigh. 0xffffffff is a valid return from h/w */ - irq_stat = readl(mmio + HOST_IRQ_STAT); - if (!irq_stat) - return IRQ_NONE; - - irq_masked = irq_stat & hpriv->port_map; - - spin_lock(&host->lock); - - /* - * HOST_IRQ_STAT behaves as edge triggered latch meaning that - * it should be cleared before all the port events are cleared. - */ - writel(irq_stat, mmio + HOST_IRQ_STAT); - - rc = ahci_handle_port_intr(host, irq_masked); - - spin_unlock(&host->lock); - - VPRINTK("EXIT\n"); - - return IRQ_RETVAL(rc); -} +EXPORT_SYMBOL_GPL(ahci_handle_port_intr); static irqreturn_t ahci_single_level_irq_intr(int irq, void *dev_instance) { @@ -2528,14 +2496,18 @@ int irq = hpriv->irq; int rc; - if (hpriv->flags & AHCI_HFLAG_MULTI_MSI) + if (hpriv->flags & AHCI_HFLAG_MULTI_MSI) { + if (hpriv->irq_handler) + dev_warn(host->dev, "both AHCI_HFLAG_MULTI_MSI flag set \ + and custom irq handler implemented\n"); + rc = ahci_host_activate_multi_irqs(host, irq, sht); - else if (hpriv->flags & AHCI_HFLAG_EDGE_IRQ) - rc = ata_host_activate(host, irq, ahci_single_edge_irq_intr, - IRQF_SHARED, sht); - else - rc = ata_host_activate(host, irq, ahci_single_level_irq_intr, + } else { + rc = ata_host_activate(host, irq, hpriv->irq_handler, IRQF_SHARED, sht); + } + + return rc; } EXPORT_SYMBOL_GPL(ahci_host_activate); --- linux-4.4.0.orig/drivers/base/core.c +++ linux-4.4.0/drivers/base/core.c @@ -2261,7 +2261,10 @@ if (fwnode_is_primary(fn)) fn = fn->secondary; - fwnode->secondary = fn; + if (fn) { + WARN_ON(fwnode->secondary); + fwnode->secondary = fn; + } dev->fwnode = fwnode; } else { dev->fwnode = fwnode_is_primary(dev->fwnode) ? --- linux-4.4.0.orig/drivers/base/platform.c +++ linux-4.4.0/drivers/base/platform.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "base.h" #include "power/power.h" @@ -299,6 +300,22 @@ EXPORT_SYMBOL_GPL(platform_device_add_data); /** + * platform_device_add_properties - add built-in properties to a platform device + * @pdev: platform device to add properties to + * @pset: properties to add + * + * The function will take deep copy of the properties in @pset and attach + * the copy to the platform device. The memory associated with properties + * will be freed when the platform device is released. + */ +int platform_device_add_properties(struct platform_device *pdev, + const struct property_set *pset) +{ + return device_add_property_set(&pdev->dev, pset); +} +EXPORT_SYMBOL_GPL(platform_device_add_properties); + +/** * platform_device_add - add a platform device to device hierarchy * @pdev: platform device we're adding * @@ -409,6 +426,8 @@ if (r->parent) release_resource(r); } + + device_remove_property_set(&pdev->dev); } } EXPORT_SYMBOL_GPL(platform_device_del); @@ -487,6 +506,12 @@ if (ret) goto err; + if (pdevinfo->pset) { + ret = platform_device_add_properties(pdev, pdevinfo->pset); + if (ret) + goto err; + } + ret = platform_device_add(pdev); if (ret) { err: --- linux-4.4.0.orig/drivers/base/property.c +++ linux-4.4.0/drivers/base/property.c @@ -19,32 +19,14 @@ #include #include -/** - * device_add_property_set - Add a collection of properties to a device object. - * @dev: Device to add properties to. - * @pset: Collection of properties to add. - * - * Associate a collection of device properties represented by @pset with @dev - * as its secondary firmware node. - */ -void device_add_property_set(struct device *dev, struct property_set *pset) -{ - if (!pset) - return; - - pset->fwnode.type = FWNODE_PDATA; - set_secondary_fwnode(dev, &pset->fwnode); -} -EXPORT_SYMBOL_GPL(device_add_property_set); - -static inline bool is_pset(struct fwnode_handle *fwnode) +static inline bool is_pset_node(struct fwnode_handle *fwnode) { return fwnode && fwnode->type == FWNODE_PDATA; } -static inline struct property_set *to_pset(struct fwnode_handle *fwnode) +static inline struct property_set *to_pset_node(struct fwnode_handle *fwnode) { - return is_pset(fwnode) ? + return is_pset_node(fwnode) ? container_of(fwnode, struct property_set, fwnode) : NULL; } @@ -63,45 +45,135 @@ return NULL; } -static int pset_prop_read_array(struct property_set *pset, const char *name, - enum dev_prop_type type, void *val, size_t nval) +static void *pset_prop_find(struct property_set *pset, const char *propname, + size_t length) { struct property_entry *prop; - unsigned int item_size; + void *pointer; - prop = pset_prop_get(pset, name); + prop = pset_prop_get(pset, propname); if (!prop) - return -ENODATA; + return ERR_PTR(-EINVAL); + if (prop->is_array) + pointer = prop->pointer.raw_data; + else + pointer = &prop->value.raw_data; + if (!pointer) + return ERR_PTR(-ENODATA); + if (length > prop->length) + return ERR_PTR(-EOVERFLOW); + return pointer; +} + +static int pset_prop_read_u8_array(struct property_set *pset, + const char *propname, + u8 *values, size_t nval) +{ + void *pointer; + size_t length = nval * sizeof(*values); + + pointer = pset_prop_find(pset, propname, length); + if (IS_ERR(pointer)) + return PTR_ERR(pointer); + + memcpy(values, pointer, length); + return 0; +} + +static int pset_prop_read_u16_array(struct property_set *pset, + const char *propname, + u16 *values, size_t nval) +{ + void *pointer; + size_t length = nval * sizeof(*values); + + pointer = pset_prop_find(pset, propname, length); + if (IS_ERR(pointer)) + return PTR_ERR(pointer); + + memcpy(values, pointer, length); + return 0; +} - if (prop->type != type) - return -EPROTO; +static int pset_prop_read_u32_array(struct property_set *pset, + const char *propname, + u32 *values, size_t nval) +{ + void *pointer; + size_t length = nval * sizeof(*values); + + pointer = pset_prop_find(pset, propname, length); + if (IS_ERR(pointer)) + return PTR_ERR(pointer); + + memcpy(values, pointer, length); + return 0; +} + +static int pset_prop_read_u64_array(struct property_set *pset, + const char *propname, + u64 *values, size_t nval) +{ + void *pointer; + size_t length = nval * sizeof(*values); + + pointer = pset_prop_find(pset, propname, length); + if (IS_ERR(pointer)) + return PTR_ERR(pointer); + + memcpy(values, pointer, length); + return 0; +} + +static int pset_prop_count_elems_of_size(struct property_set *pset, + const char *propname, size_t length) +{ + struct property_entry *prop; + + prop = pset_prop_get(pset, propname); + if (!prop) + return -EINVAL; + + return prop->length / length; +} + +static int pset_prop_read_string_array(struct property_set *pset, + const char *propname, + const char **strings, size_t nval) +{ + void *pointer; + size_t length = nval * sizeof(*strings); + + pointer = pset_prop_find(pset, propname, length); + if (IS_ERR(pointer)) + return PTR_ERR(pointer); + + memcpy(strings, pointer, length); + return 0; +} - if (!val) - return prop->nval; +static int pset_prop_read_string(struct property_set *pset, + const char *propname, const char **strings) +{ + struct property_entry *prop; + const char **pointer; - if (prop->nval < nval) - return -EOVERFLOW; - - switch (type) { - case DEV_PROP_U8: - item_size = sizeof(u8); - break; - case DEV_PROP_U16: - item_size = sizeof(u16); - break; - case DEV_PROP_U32: - item_size = sizeof(u32); - break; - case DEV_PROP_U64: - item_size = sizeof(u64); - break; - case DEV_PROP_STRING: - item_size = sizeof(const char *); - break; - default: + prop = pset_prop_get(pset, propname); + if (!prop) return -EINVAL; + if (!prop->is_string) + return -EILSEQ; + if (prop->is_array) { + pointer = prop->pointer.str; + if (!pointer) + return -ENODATA; + } else { + pointer = &prop->value.str; + if (*pointer && strnlen(*pointer, prop->length) >= prop->length) + return -EILSEQ; } - memcpy(val, prop->value.raw_data, nval * item_size); + + *strings = *pointer; return 0; } @@ -124,6 +196,18 @@ } EXPORT_SYMBOL_GPL(device_property_present); +static bool __fwnode_property_present(struct fwnode_handle *fwnode, + const char *propname) +{ + if (is_of_node(fwnode)) + return of_property_read_bool(to_of_node(fwnode), propname); + else if (is_acpi_node(fwnode)) + return !acpi_node_prop_get(fwnode, propname, NULL); + else if (is_pset_node(fwnode)) + return !!pset_prop_get(to_pset_node(fwnode), propname); + return false; +} + /** * fwnode_property_present - check if a property of a firmware node is present * @fwnode: Firmware node whose property to check @@ -131,12 +215,12 @@ */ bool fwnode_property_present(struct fwnode_handle *fwnode, const char *propname) { - if (is_of_node(fwnode)) - return of_property_read_bool(to_of_node(fwnode), propname); - else if (is_acpi_node(fwnode)) - return !acpi_node_prop_get(fwnode, propname, NULL); + bool ret; - return !!pset_prop_get(to_pset(fwnode), propname); + ret = __fwnode_property_present(fwnode, propname); + if (ret == false && fwnode->secondary) + ret = __fwnode_property_present(fwnode->secondary, propname); + return ret; } EXPORT_SYMBOL_GPL(fwnode_property_present); @@ -309,25 +393,40 @@ } EXPORT_SYMBOL_GPL(device_property_match_string); -#define OF_DEV_PROP_READ_ARRAY(node, propname, type, val, nval) \ - (val) ? of_property_read_##type##_array((node), (propname), (val), (nval)) \ +#define OF_DEV_PROP_READ_ARRAY(node, propname, type, val, nval) \ + (val) ? of_property_read_##type##_array((node), (propname), (val), (nval)) \ : of_property_count_elems_of_size((node), (propname), sizeof(type)) -#define FWNODE_PROP_READ_ARRAY(_fwnode_, _propname_, _type_, _proptype_, _val_, _nval_) \ -({ \ - int _ret_; \ - if (is_of_node(_fwnode_)) \ - _ret_ = OF_DEV_PROP_READ_ARRAY(to_of_node(_fwnode_), _propname_, \ - _type_, _val_, _nval_); \ - else if (is_acpi_node(_fwnode_)) \ - _ret_ = acpi_node_prop_read(_fwnode_, _propname_, _proptype_, \ - _val_, _nval_); \ - else if (is_pset(_fwnode_)) \ - _ret_ = pset_prop_read_array(to_pset(_fwnode_), _propname_, \ - _proptype_, _val_, _nval_); \ - else \ - _ret_ = -ENXIO; \ - _ret_; \ +#define PSET_PROP_READ_ARRAY(node, propname, type, val, nval) \ + (val) ? pset_prop_read_##type##_array((node), (propname), (val), (nval)) \ + : pset_prop_count_elems_of_size((node), (propname), sizeof(type)) + +#define FWNODE_PROP_READ(_fwnode_, _propname_, _type_, _proptype_, _val_, _nval_) \ +({ \ + int _ret_; \ + if (is_of_node(_fwnode_)) \ + _ret_ = OF_DEV_PROP_READ_ARRAY(to_of_node(_fwnode_), _propname_, \ + _type_, _val_, _nval_); \ + else if (is_acpi_node(_fwnode_)) \ + _ret_ = acpi_node_prop_read(_fwnode_, _propname_, _proptype_, \ + _val_, _nval_); \ + else if (is_pset_node(_fwnode_)) \ + _ret_ = PSET_PROP_READ_ARRAY(to_pset_node(_fwnode_), _propname_, \ + _type_, _val_, _nval_); \ + else \ + _ret_ = -ENXIO; \ + _ret_; \ +}) + +#define FWNODE_PROP_READ_ARRAY(_fwnode_, _propname_, _type_, _proptype_, _val_, _nval_) \ +({ \ + int _ret_; \ + _ret_ = FWNODE_PROP_READ(_fwnode_, _propname_, _type_, _proptype_, \ + _val_, _nval_); \ + if (_ret_ == -EINVAL && _fwnode_->secondary) \ + _ret_ = FWNODE_PROP_READ(_fwnode_->secondary, _propname_, _type_, \ + _proptype_, _val_, _nval_); \ + _ret_; \ }) /** @@ -434,6 +533,41 @@ } EXPORT_SYMBOL_GPL(fwnode_property_read_u64_array); +static int __fwnode_property_read_string_array(struct fwnode_handle *fwnode, + const char *propname, + const char **val, size_t nval) +{ + if (is_of_node(fwnode)) + return val ? + of_property_read_string_array(to_of_node(fwnode), + propname, val, nval) : + of_property_count_strings(to_of_node(fwnode), propname); + else if (is_acpi_node(fwnode)) + return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING, + val, nval); + else if (is_pset_node(fwnode)) + return val ? + pset_prop_read_string_array(to_pset_node(fwnode), + propname, val, nval) : + pset_prop_count_elems_of_size(to_pset_node(fwnode), + propname, + sizeof(const char *)); + return -ENXIO; +} + +static int __fwnode_property_read_string(struct fwnode_handle *fwnode, + const char *propname, const char **val) +{ + if (is_of_node(fwnode)) + return of_property_read_string(to_of_node(fwnode), propname, val); + else if (is_acpi_node(fwnode)) + return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING, + val, 1); + else if (is_pset_node(fwnode)) + return pset_prop_read_string(to_pset_node(fwnode), propname, val); + return -ENXIO; +} + /** * fwnode_property_read_string_array - return string array property of a node * @fwnode: Firmware node to get the property of @@ -456,18 +590,13 @@ const char *propname, const char **val, size_t nval) { - if (is_of_node(fwnode)) - return val ? - of_property_read_string_array(to_of_node(fwnode), - propname, val, nval) : - of_property_count_strings(to_of_node(fwnode), propname); - else if (is_acpi_node(fwnode)) - return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING, - val, nval); - else if (is_pset(fwnode)) - return pset_prop_read_array(to_pset(fwnode), propname, - DEV_PROP_STRING, val, nval); - return -ENXIO; + int ret; + + ret = __fwnode_property_read_string_array(fwnode, propname, val, nval); + if (ret == -EINVAL && fwnode->secondary) + ret = __fwnode_property_read_string_array(fwnode->secondary, + propname, val, nval); + return ret; } EXPORT_SYMBOL_GPL(fwnode_property_read_string_array); @@ -489,14 +618,13 @@ int fwnode_property_read_string(struct fwnode_handle *fwnode, const char *propname, const char **val) { - if (is_of_node(fwnode)) - return of_property_read_string(to_of_node(fwnode), propname, val); - else if (is_acpi_node(fwnode)) - return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING, - val, 1); + int ret; - return pset_prop_read_array(to_pset(fwnode), propname, - DEV_PROP_STRING, val, 1); + ret = __fwnode_property_read_string(fwnode, propname, val); + if (ret == -EINVAL && fwnode->secondary) + ret = __fwnode_property_read_string(fwnode->secondary, + propname, val); + return ret; } EXPORT_SYMBOL_GPL(fwnode_property_read_string); @@ -547,6 +675,179 @@ EXPORT_SYMBOL_GPL(fwnode_property_match_string); /** + * pset_free_set - releases memory allocated for copied property set + * @pset: Property set to release + * + * Function takes previously copied property set and releases all the + * memory allocated to it. + */ +static void pset_free_set(struct property_set *pset) +{ + const struct property_entry *prop; + size_t i, nval; + + if (!pset) + return; + + for (prop = pset->properties; prop->name; prop++) { + if (prop->is_array) { + if (prop->is_string && prop->pointer.str) { + nval = prop->length / sizeof(const char *); + for (i = 0; i < nval; i++) + kfree(prop->pointer.str[i]); + } + kfree(prop->pointer.raw_data); + } else if (prop->is_string) { + kfree(prop->value.str); + } + kfree(prop->name); + } + + kfree(pset->properties); + kfree(pset); +} + +static int pset_copy_entry(struct property_entry *dst, + const struct property_entry *src) +{ + const char **d, **s; + size_t i, nval; + + dst->name = kstrdup(src->name, GFP_KERNEL); + if (!dst->name) + return -ENOMEM; + + if (src->is_array) { + if (src->is_string) { + nval = src->length / sizeof(const char *); + dst->pointer.str = kcalloc(nval, sizeof(const char *), + GFP_KERNEL); + if (!dst->pointer.str) + return -ENOMEM; + + d = dst->pointer.str; + s = src->pointer.str; + for (i = 0; i < nval; i++) { + d[i] = kstrdup(s[i], GFP_KERNEL); + if (!d[i] && s[i]) + return -ENOMEM; + } + } else { + dst->pointer.raw_data = kmemdup(src->pointer.raw_data, + src->length, GFP_KERNEL); + if (!dst->pointer.raw_data) + return -ENOMEM; + } + } else if (src->is_string) { + dst->value.str = kstrdup(src->value.str, GFP_KERNEL); + if (!dst->value.str && src->value.str) + return -ENOMEM; + } else { + dst->value.raw_data = src->value.raw_data; + } + + dst->length = src->length; + dst->is_array = src->is_array; + dst->is_string = src->is_string; + + return 0; +} + +/** + * pset_copy_set - copies property set + * @pset: Property set to copy + * + * This function takes a deep copy of the given property set and returns + * pointer to the copy. Call device_free_property_set() to free resources + * allocated in this function. + * + * Return: Pointer to the new property set or error pointer. + */ +static struct property_set *pset_copy_set(const struct property_set *pset) +{ + const struct property_entry *entry; + struct property_set *p; + size_t i, n = 0; + + p = kzalloc(sizeof(*p), GFP_KERNEL); + if (!p) + return ERR_PTR(-ENOMEM); + + while (pset->properties[n].name) + n++; + + p->properties = kcalloc(n + 1, sizeof(*entry), GFP_KERNEL); + if (!p->properties) { + kfree(p); + return ERR_PTR(-ENOMEM); + } + + for (i = 0; i < n; i++) { + int ret = pset_copy_entry(&p->properties[i], + &pset->properties[i]); + if (ret) { + pset_free_set(p); + return ERR_PTR(ret); + } + } + + return p; +} + +/** + * device_remove_property_set - Remove properties from a device object. + * @dev: Device whose properties to remove. + * + * The function removes properties previously associated to the device + * secondary firmware node with device_add_property_set(). Memory allocated + * to the properties will also be released. + */ +void device_remove_property_set(struct device *dev) +{ + struct fwnode_handle *fwnode; + + fwnode = dev_fwnode(dev); + if (!fwnode) + return; + /* + * Pick either primary or secondary node depending which one holds + * the pset. If there is no real firmware node (ACPI/DT) primary + * will hold the pset. + */ + if (!is_pset_node(fwnode)) + fwnode = fwnode->secondary; + if (!IS_ERR(fwnode) && is_pset_node(fwnode)) + pset_free_set(to_pset_node(fwnode)); + set_secondary_fwnode(dev, NULL); +} +EXPORT_SYMBOL_GPL(device_remove_property_set); + +/** + * device_add_property_set - Add a collection of properties to a device object. + * @dev: Device to add properties to. + * @pset: Collection of properties to add. + * + * Associate a collection of device properties represented by @pset with @dev + * as its secondary firmware node. The function takes a copy of @pset. + */ +int device_add_property_set(struct device *dev, const struct property_set *pset) +{ + struct property_set *p; + + if (!pset) + return -EINVAL; + + p = pset_copy_set(pset); + if (IS_ERR(p)) + return PTR_ERR(p); + + p->fwnode.type = FWNODE_PDATA; + set_secondary_fwnode(dev, &p->fwnode); + return 0; +} +EXPORT_SYMBOL_GPL(device_add_property_set); + +/** * device_get_next_child_node - Return the next child node handle for a device * @dev: Device to find the next child node for. * @child: Handle to one of the device's child nodes or a null handle. --- linux-4.4.0.orig/drivers/block/loop.c +++ linux-4.4.0/drivers/block/loop.c @@ -556,7 +556,7 @@ } struct switch_request { - struct file *file; + struct file *file, *virt_file; struct completion wait; }; @@ -582,6 +582,7 @@ mapping = file->f_mapping; mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; + lo->lo_backing_virt_file = p->virt_file; lo->lo_blocksize = S_ISBLK(mapping->host->i_mode) ? mapping->host->i_bdev->bd_block_size : PAGE_SIZE; lo->old_gfp_mask = mapping_gfp_mask(mapping); @@ -594,11 +595,13 @@ * First it needs to flush existing IO, it does this by sending a magic * BIO down the pipe. The completion of this BIO does the actual switch. */ -static int loop_switch(struct loop_device *lo, struct file *file) +static int loop_switch(struct loop_device *lo, struct file *file, + struct file *virt_file) { struct switch_request w; w.file = file; + w.virt_file = virt_file; /* freeze queue and wait for completion of scheduled requests */ blk_mq_freeze_queue(lo->lo_queue); @@ -617,7 +620,16 @@ */ static int loop_flush(struct loop_device *lo) { - return loop_switch(lo, NULL); + return loop_switch(lo, NULL, NULL); +} + +static struct file *loop_real_file(struct file *file) +{ + struct file *f = NULL; + + if (file->f_path.dentry->d_sb->s_op->real_loop) + f = file->f_path.dentry->d_sb->s_op->real_loop(file); + return f; } static void loop_reread_partitions(struct loop_device *lo, @@ -654,6 +666,7 @@ unsigned int arg) { struct file *file, *old_file; + struct file *f, *virt_file = NULL, *old_virt_file; struct inode *inode; int error; @@ -670,9 +683,16 @@ file = fget(arg); if (!file) goto out; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } inode = file->f_mapping->host; old_file = lo->lo_backing_file; + old_virt_file = lo->lo_backing_virt_file; error = -EINVAL; @@ -684,17 +704,21 @@ goto out_putf; /* and ... switch */ - error = loop_switch(lo, file); + error = loop_switch(lo, file, virt_file); if (error) goto out_putf; fput(old_file); + if (old_virt_file) + fput(old_virt_file); if (lo->lo_flags & LO_FLAGS_PARTSCAN) loop_reread_partitions(lo, bdev); return 0; out_putf: fput(file); + if (virt_file) + fput(virt_file); out: return error; } @@ -706,6 +730,24 @@ return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; } +/* + * for AUFS + * no get/put for file. + */ +struct file *loop_backing_file(struct super_block *sb) +{ + struct file *ret; + struct loop_device *l; + + ret = NULL; + if (MAJOR(sb->s_dev) == LOOP_MAJOR) { + l = sb->s_bdev->bd_disk->private_data; + ret = l->lo_backing_file; + } + return ret; +} +EXPORT_SYMBOL(loop_backing_file); + /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, @@ -863,7 +905,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, struct block_device *bdev, unsigned int arg) { - struct file *file, *f; + struct file *file, *f, *virt_file = NULL; struct inode *inode; struct address_space *mapping; unsigned lo_blocksize; @@ -878,6 +920,12 @@ file = fget(arg); if (!file) goto out; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } error = -EBUSY; if (lo->lo_state != Lo_unbound) @@ -930,6 +978,7 @@ lo->lo_device = bdev; lo->lo_flags = lo_flags; lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->transfer = NULL; lo->ioctl = NULL; lo->lo_sizelimit = 0; @@ -962,6 +1011,8 @@ out_putf: fput(file); + if (virt_file) + fput(virt_file); out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); @@ -1008,6 +1059,7 @@ static int loop_clr_fd(struct loop_device *lo) { struct file *filp = lo->lo_backing_file; + struct file *virt_filp = lo->lo_backing_virt_file; gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; @@ -1039,6 +1091,7 @@ spin_lock_irq(&lo->lo_lock); lo->lo_state = Lo_rundown; lo->lo_backing_file = NULL; + lo->lo_backing_virt_file = NULL; spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); @@ -1083,6 +1136,8 @@ * bd_mutex which is usually taken before lo_ctl_mutex. */ fput(filp); + if (virt_filp) + fput(virt_filp); return 0; } --- linux-4.4.0.orig/drivers/block/loop.h +++ linux-4.4.0/drivers/block/loop.h @@ -46,7 +46,7 @@ int (*ioctl)(struct loop_device *, int cmd, unsigned long arg); - struct file * lo_backing_file; + struct file * lo_backing_file, *lo_backing_virt_file; struct block_device *lo_device; unsigned lo_blocksize; void *key_data; --- linux-4.4.0.orig/drivers/block/mtip32xx/mtip32xx.c +++ linux-4.4.0/drivers/block/mtip32xx/mtip32xx.c @@ -173,7 +173,7 @@ { struct request *rq; - rq = blk_mq_alloc_request(dd->queue, 0, __GFP_RECLAIM, true); + rq = blk_mq_alloc_request(dd->queue, 0, BLK_MQ_REQ_RESERVED); return blk_mq_rq_to_pdu(rq); } --- linux-4.4.0.orig/drivers/block/nbd.c +++ linux-4.4.0/drivers/block/nbd.c @@ -79,7 +79,7 @@ static unsigned int nbds_max = 16; static struct nbd_device *nbd_dev; -static int max_part; +static int max_part = 15; /* * Use just one lock (or at most 1 per NIC). Two arguments for this: @@ -618,8 +618,8 @@ req, req->cmd_type); if (unlikely(!nbd->sock)) { - dev_err(disk_to_dev(nbd->disk), - "Attempted send on closed socket\n"); + dev_err_ratelimited(disk_to_dev(nbd->disk), + "Attempted send on closed socket\n"); req->errors++; nbd_end_request(nbd, req); spin_lock_irq(q->queue_lock); --- linux-4.4.0.orig/drivers/block/null_blk.c +++ linux-4.4.0/drivers/block/null_blk.c @@ -436,9 +436,8 @@ static void null_lnvm_end_io(struct request *rq, int error) { struct nvm_rq *rqd = rq->end_io_data; - struct nvm_dev *dev = rqd->dev; - dev->mt->end_io(rqd, error); + nvm_end_io(rqd, error); blk_put_request(rq); } @@ -449,7 +448,7 @@ struct request *rq; struct bio *bio = rqd->bio; - rq = blk_mq_alloc_request(q, bio_rw(bio), GFP_KERNEL, 0); + rq = blk_mq_alloc_request(q, bio_rw(bio), 0); if (IS_ERR(rq)) return -ENOMEM; --- linux-4.4.0.orig/drivers/cdrom/cdrom.c +++ linux-4.4.0/drivers/cdrom/cdrom.c @@ -289,7 +289,7 @@ /* default compatibility mode */ static bool autoclose=1; static bool autoeject; -static bool lockdoor = 1; +static bool lockdoor = 0; /* will we ever get to use this... sigh. */ static bool check_media_type; /* automatically restart mrw format */ --- linux-4.4.0.orig/drivers/char/tpm/tpm.h +++ linux-4.4.0/drivers/char/tpm/tpm.h @@ -83,16 +83,20 @@ }; enum tpm2_return_codes { - TPM2_RC_INITIALIZE = 0x0100, - TPM2_RC_TESTING = 0x090A, + TPM2_RC_HASH = 0x0083, /* RC_FMT1 */ + TPM2_RC_INITIALIZE = 0x0100, /* RC_VER1 */ TPM2_RC_DISABLED = 0x0120, + TPM2_RC_TESTING = 0x090A, /* RC_WARN */ }; enum tpm2_algorithms { TPM2_ALG_SHA1 = 0x0004, TPM2_ALG_KEYEDHASH = 0x0008, TPM2_ALG_SHA256 = 0x000B, - TPM2_ALG_NULL = 0x0010 + TPM2_ALG_SHA384 = 0x000C, + TPM2_ALG_SHA512 = 0x000D, + TPM2_ALG_NULL = 0x0010, + TPM2_ALG_SM3_256 = 0x0012, }; enum tpm2_command_codes { --- linux-4.4.0.orig/drivers/char/tpm/tpm2-cmd.c +++ linux-4.4.0/drivers/char/tpm/tpm2-cmd.c @@ -16,6 +16,7 @@ */ #include "tpm.h" +#include #include enum tpm2_object_attributes { @@ -104,6 +105,19 @@ union tpm2_cmd_params params; } __packed; +struct tpm2_hash { + unsigned int crypto_id; + unsigned int tpm_id; +}; + +static struct tpm2_hash tpm2_hash_map[] = { + {HASH_ALGO_SHA1, TPM2_ALG_SHA1}, + {HASH_ALGO_SHA256, TPM2_ALG_SHA256}, + {HASH_ALGO_SHA384, TPM2_ALG_SHA384}, + {HASH_ALGO_SHA512, TPM2_ALG_SHA512}, + {HASH_ALGO_SM3_256, TPM2_ALG_SM3_256}, +}; + /* * Array with one entry per ordinal defining the maximum amount * of time the chip could take to return the result. The values @@ -429,8 +443,20 @@ { unsigned int blob_len; struct tpm_buf buf; + u32 hash; + int i; int rc; + for (i = 0; i < ARRAY_SIZE(tpm2_hash_map); i++) { + if (options->hash == tpm2_hash_map[i].crypto_id) { + hash = tpm2_hash_map[i].tpm_id; + break; + } + } + + if (i == ARRAY_SIZE(tpm2_hash_map)) + return -EINVAL; + rc = tpm_buf_init(&buf, TPM2_ST_SESSIONS, TPM2_CC_CREATE); if (rc) return rc; @@ -452,12 +478,26 @@ tpm_buf_append_u8(&buf, payload->migratable); /* public */ - tpm_buf_append_u16(&buf, 14); + if (options->policydigest) + tpm_buf_append_u16(&buf, 14 + options->digest_len); + else + tpm_buf_append_u16(&buf, 14); tpm_buf_append_u16(&buf, TPM2_ALG_KEYEDHASH); - tpm_buf_append_u16(&buf, TPM2_ALG_SHA256); - tpm_buf_append_u32(&buf, TPM2_ATTR_USER_WITH_AUTH); - tpm_buf_append_u16(&buf, 0); /* policy digest size */ + tpm_buf_append_u16(&buf, hash); + + /* policy */ + if (options->policydigest) { + tpm_buf_append_u32(&buf, 0); + tpm_buf_append_u16(&buf, options->digest_len); + tpm_buf_append(&buf, options->policydigest, + options->digest_len); + } else { + tpm_buf_append_u32(&buf, TPM2_ATTR_USER_WITH_AUTH); + tpm_buf_append_u16(&buf, 0); + } + + /* public parameters */ tpm_buf_append_u16(&buf, TPM2_ALG_NULL); tpm_buf_append_u16(&buf, 0); @@ -488,8 +528,12 @@ out: tpm_buf_destroy(&buf); - if (rc > 0) - rc = -EPERM; + if (rc > 0) { + if ((rc & TPM2_RC_HASH) == TPM2_RC_HASH) + rc = -EINVAL; + else + rc = -EPERM; + } return rc; } @@ -583,7 +627,9 @@ return rc; tpm_buf_append_u32(&buf, blob_handle); - tpm2_buf_append_auth(&buf, TPM2_RS_PW, + tpm2_buf_append_auth(&buf, + options->policyhandle ? + options->policyhandle : TPM2_RS_PW, NULL /* nonce */, 0, 0 /* session_attributes */, options->blobauth /* hmac */, --- linux-4.4.0.orig/drivers/clk/clk-xgene.c +++ linux-4.4.0/drivers/clk/clk-xgene.c @@ -351,7 +351,8 @@ /* Set new divider */ data = xgene_clk_read(pclk->param.divider_reg + pclk->param.reg_divider_offset); - data &= ~((1 << pclk->param.reg_divider_width) - 1); + data &= ~((1 << pclk->param.reg_divider_width) - 1) + << pclk->param.reg_divider_shift; data |= divider; xgene_clk_write(data, pclk->param.divider_reg + pclk->param.reg_divider_offset); --- linux-4.4.0.orig/drivers/cpufreq/cpufreq.c +++ linux-4.4.0/drivers/cpufreq/cpufreq.c @@ -2392,6 +2392,20 @@ * REGISTER / UNREGISTER CPUFREQ DRIVER * *********************************************************************/ +static char cpufreq_driver_name[CPUFREQ_NAME_LEN]; + +static int __init cpufreq_driver_setup(char *str) +{ + strlcpy(cpufreq_driver_name, str, CPUFREQ_NAME_LEN); + return 1; +} + +/* + * Set this name to only allow one specific cpu freq driver, e.g., + * cpufreq_driver=powernow-k8 + */ +__setup("cpufreq_driver=", cpufreq_driver_setup); + /** * cpufreq_register_driver - register a CPU Frequency driver * @driver_data: A struct cpufreq_driver containing the values# @@ -2418,7 +2432,13 @@ (!!driver_data->get_intermediate != !!driver_data->target_intermediate)) return -EINVAL; - pr_debug("trying to register driver %s\n", driver_data->name); + pr_debug("trying to register driver %s, cpufreq_driver=%s\n", + driver_data->name, cpufreq_driver_name); + + if (cpufreq_driver_name[0]) + if (!driver_data->name || + strcmp(cpufreq_driver_name, driver_data->name)) + return -EINVAL; /* Protect against concurrent CPU online/offline. */ get_online_cpus(); --- linux-4.4.0.orig/drivers/crypto/nx/nx-842-powernv.c +++ linux-4.4.0/drivers/crypto/nx/nx-842-powernv.c @@ -442,6 +442,14 @@ (unsigned int)ccw, (unsigned int)be32_to_cpu(crb->ccw)); + /* + * NX842 coprocessor sets 3rd bit in CR register with XER[S0]. + * XER[S0] is the integer summary overflow bit which is nothing + * to do NX. Since this bit can be set with other return values, + * mask this bit. + */ + ret &= ~ICSWX_XERS0; + switch (ret) { case ICSWX_INITIATED: ret = wait_for_csb(wmem, csb); @@ -454,10 +462,6 @@ pr_err_ratelimited("ICSWX rejected\n"); ret = -EPROTO; break; - default: - pr_err_ratelimited("Invalid ICSWX return code %x\n", ret); - ret = -EPROTO; - break; } if (!ret) @@ -491,7 +495,7 @@ void *wmem) { return nx842_powernv_function(in, inlen, out, outlenp, - wmem, CCW_FC_842_COMP_CRC); + wmem, CCW_FC_842_COMP_NOCRC); } /** @@ -519,7 +523,7 @@ void *wmem) { return nx842_powernv_function(in, inlen, out, outlenp, - wmem, CCW_FC_842_DECOMP_CRC); + wmem, CCW_FC_842_DECOMP_NOCRC); } static int __init nx842_powernv_probe(struct device_node *dn) --- linux-4.4.0.orig/drivers/crypto/nx/nx-842-pseries.c +++ linux-4.4.0/drivers/crypto/nx/nx-842-pseries.c @@ -234,10 +234,6 @@ dev_dbg(dev, "%s: Out of space in output buffer\n", __func__); return -ENOSPC; - case 65: /* Calculated CRC doesn't match the passed value */ - dev_dbg(dev, "%s: CRC mismatch for decompression\n", - __func__); - return -EINVAL; case 66: /* Input data contains an illegal template field */ case 67: /* Template indicates data past the end of the input stream */ dev_dbg(dev, "%s: Bad data for decompression (code:%d)\n", @@ -328,7 +324,7 @@ slout.entries = (struct nx842_slentry *)workmem->slout; /* Init operation */ - op.flags = NX842_OP_COMPRESS_CRC; + op.flags = NX842_OP_COMPRESS; csbcpb = &workmem->csbcpb; memset(csbcpb, 0, sizeof(*csbcpb)); op.csbcpb = nx842_get_pa(csbcpb); @@ -461,7 +457,7 @@ slout.entries = (struct nx842_slentry *)workmem->slout; /* Init operation */ - op.flags = NX842_OP_DECOMPRESS_CRC; + op.flags = NX842_OP_DECOMPRESS; csbcpb = &workmem->csbcpb; memset(csbcpb, 0, sizeof(*csbcpb)); op.csbcpb = nx842_get_pa(csbcpb); --- linux-4.4.0.orig/drivers/dma/ioat/prep.c +++ linux-4.4.0/drivers/dma/ioat/prep.c @@ -26,7 +26,7 @@ #include "hw.h" #include "dma.h" -#define MAX_SCF 1024 +#define MAX_SCF 256 /* provide a lookup table for setting the source address in the base or * extended descriptor of an xor or pq descriptor --- linux-4.4.0.orig/drivers/edac/sb_edac.c +++ linux-4.4.0/drivers/edac/sb_edac.c @@ -65,15 +65,20 @@ 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, }; -#define SAD_LIMIT(reg) ((GET_BITFIELD(reg, 6, 25) << 26) | 0x3ffffff) -#define DRAM_ATTR(reg) GET_BITFIELD(reg, 2, 3) -#define INTERLEAVE_MODE(reg) GET_BITFIELD(reg, 1, 1) +static const u32 knl_dram_rule[] = { + 0x60, 0x68, 0x70, 0x78, 0x80, /* 0-4 */ + 0x88, 0x90, 0x98, 0xa0, 0xa8, /* 5-9 */ + 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, /* 10-14 */ + 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, /* 15-19 */ + 0x100, 0x108, 0x110, 0x118, /* 20-23 */ +}; + #define DRAM_RULE_ENABLE(reg) GET_BITFIELD(reg, 0, 0) #define A7MODE(reg) GET_BITFIELD(reg, 26, 26) -static char *get_dram_attr(u32 reg) +static char *show_dram_attr(u32 attr) { - switch(DRAM_ATTR(reg)) { + switch (attr) { case 0: return "DRAM"; case 1: @@ -97,6 +102,14 @@ 0xdc, 0xe4, 0xec, 0xf4, 0xfc, }; +static const u32 knl_interleave_list[] = { + 0x64, 0x6c, 0x74, 0x7c, 0x84, /* 0-4 */ + 0x8c, 0x94, 0x9c, 0xa4, 0xac, /* 5-9 */ + 0xb4, 0xbc, 0xc4, 0xcc, 0xd4, /* 10-14 */ + 0xdc, 0xe4, 0xec, 0xf4, 0xfc, /* 15-19 */ + 0x104, 0x10c, 0x114, 0x11c, /* 20-23 */ +}; + struct interleave_pkg { unsigned char start; unsigned char end; @@ -134,10 +147,13 @@ /* Devices 12 Function 7 */ #define TOLM 0x80 -#define TOHM 0x84 +#define TOHM 0x84 #define HASWELL_TOLM 0xd0 #define HASWELL_TOHM_0 0xd4 #define HASWELL_TOHM_1 0xd8 +#define KNL_TOLM 0xd0 +#define KNL_TOHM_0 0xd4 +#define KNL_TOHM_1 0xd8 #define GET_TOLM(reg) ((GET_BITFIELD(reg, 0, 3) << 28) | 0x3ffffff) #define GET_TOHM(reg) ((GET_BITFIELD(reg, 0, 20) << 25) | 0x3ffffff) @@ -148,6 +164,8 @@ #define SOURCE_ID(reg) GET_BITFIELD(reg, 9, 11) +#define SOURCE_ID_KNL(reg) GET_BITFIELD(reg, 12, 14) + #define SAD_CONTROL 0xf4 /* Device 14 function 0 */ @@ -170,6 +188,7 @@ /* Device 15, function 0 */ #define MCMTR 0x7c +#define KNL_MCMTR 0x624 #define IS_ECC_ENABLED(mcmtr) GET_BITFIELD(mcmtr, 2, 2) #define IS_LOCKSTEP_ENABLED(mcmtr) GET_BITFIELD(mcmtr, 1, 1) @@ -186,6 +205,8 @@ 0x80, 0x84, 0x88, }; +static const int knl_mtr_reg = 0xb60; + #define RANK_DISABLE(mtr) GET_BITFIELD(mtr, 16, 19) #define IS_DIMM_PRESENT(mtr) GET_BITFIELD(mtr, 14, 14) #define RANK_CNT_BITS(mtr) GET_BITFIELD(mtr, 12, 13) @@ -256,6 +277,9 @@ #define NUM_CHANNELS 8 /* 2MC per socket, four chan per MC */ #define MAX_DIMMS 3 /* Max DIMMS per channel */ +#define KNL_MAX_CHAS 38 /* KNL max num. of Cache Home Agents */ +#define KNL_MAX_CHANNELS 6 /* KNL max num. of PCI channels */ +#define KNL_MAX_EDCS 8 /* Embedded DRAM controllers */ #define CHANNEL_UNSPECIFIED 0xf /* Intel IA32 SDM 15-14 */ enum type { @@ -263,6 +287,7 @@ IVY_BRIDGE, HASWELL, BROADWELL, + KNIGHTS_LANDING, }; struct sbridge_pvt; @@ -273,6 +298,10 @@ u64 (*get_tolm)(struct sbridge_pvt *pvt); u64 (*get_tohm)(struct sbridge_pvt *pvt); u64 (*rir_limit)(u32 reg); + u64 (*sad_limit)(u32 reg); + u32 (*interleave_mode)(u32 reg); + char* (*show_interleave_mode)(u32 reg); + u32 (*dram_attr)(u32 reg); const u32 *dram_rule; const u32 *interleave_list; const struct interleave_pkg *interleave_pkg; @@ -308,6 +337,16 @@ struct mem_ctl_info *mci; }; +struct knl_pvt { + struct pci_dev *pci_cha[KNL_MAX_CHAS]; + struct pci_dev *pci_channel[KNL_MAX_CHANNELS]; + struct pci_dev *pci_mc0; + struct pci_dev *pci_mc1; + struct pci_dev *pci_mc0_misc; + struct pci_dev *pci_mc1_misc; + struct pci_dev *pci_mc_info; /* tolm, tohm */ +}; + struct sbridge_pvt { struct pci_dev *pci_ta, *pci_ddrio, *pci_ras; struct pci_dev *pci_sad0, *pci_sad1; @@ -336,6 +375,7 @@ /* Memory description */ u64 tolm, tohm; + struct knl_pvt knl; }; #define PCI_DESCR(device_id, opt) \ @@ -509,6 +549,50 @@ {0,} /* 0 terminated list. */ }; +/* Knight's Landing Support */ +/* + * KNL's memory channels are swizzled between memory controllers. + * MC0 is mapped to CH3,5,6 and MC1 is mapped to CH0,1,2 + */ +#define knl_channel_remap(channel) ((channel + 3) % 6) + +/* Memory controller, TAD tables, error injection - 2-8-0, 2-9-0 (2 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_MC 0x7840 +/* DRAM channel stuff; bank addrs, dimmmtr, etc.. 2-8-2 - 2-9-4 (6 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_CHANNEL 0x7843 +/* kdrwdbu TAD limits/offsets, MCMTR - 2-10-1, 2-11-1 (2 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_TA 0x7844 +/* CHA broadcast registers, dram rules - 1-29-0 (1 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0 0x782a +/* SAD target - 1-29-1 (1 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_SAD1 0x782b +/* Caching / Home Agent */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_CHA 0x782c +/* Device with TOLM and TOHM, 0-5-0 (1 of these) */ +#define PCI_DEVICE_ID_INTEL_KNL_IMC_TOLHM 0x7810 + +/* + * KNL differs from SB, IB, and Haswell in that it has multiple + * instances of the same device with the same device ID, so we handle that + * by creating as many copies in the table as we expect to find. + * (Like device ID must be grouped together.) + */ + +static const struct pci_id_descr pci_dev_descr_knl[] = { + [0] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0, 0) }, + [1] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_SAD1, 0) }, + [2 ... 3] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_MC, 0)}, + [4 ... 41] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_CHA, 0) }, + [42 ... 47] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_CHANNEL, 0) }, + [48] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_TA, 0) }, + [49] = { PCI_DESCR(PCI_DEVICE_ID_INTEL_KNL_IMC_TOLHM, 0) }, +}; + +static const struct pci_id_table pci_dev_descr_knl_table[] = { + PCI_ID_TABLE_ENTRY(pci_dev_descr_knl), + {0,} +}; + /* * Broadwell support * @@ -585,6 +669,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_HASWELL_IMC_HA0)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0)}, + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0)}, {0,} /* 0 terminated list. */ }; @@ -598,7 +683,7 @@ int ranks = (1 << RANK_CNT_BITS(mtr)); int max = 4; - if (type == HASWELL || type == BROADWELL) + if (type == HASWELL || type == BROADWELL || type == KNIGHTS_LANDING) max = 8; if (ranks > max) { @@ -636,10 +721,19 @@ return 1 << cols; } -static struct sbridge_dev *get_sbridge_dev(u8 bus) +static struct sbridge_dev *get_sbridge_dev(u8 bus, int multi_bus) { struct sbridge_dev *sbridge_dev; + /* + * If we have devices scattered across several busses that pertain + * to the same memory controller, we'll lump them all together. + */ + if (multi_bus) { + return list_first_entry_or_null(&sbridge_edac_list, + struct sbridge_dev, list); + } + list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { if (sbridge_dev->bus == bus) return sbridge_dev; @@ -718,6 +812,67 @@ return ((u64)GET_BITFIELD(reg, 1, 10) << 29) | 0x1fffffff; } +static u64 sad_limit(u32 reg) +{ + return (GET_BITFIELD(reg, 6, 25) << 26) | 0x3ffffff; +} + +static u32 interleave_mode(u32 reg) +{ + return GET_BITFIELD(reg, 1, 1); +} + +char *show_interleave_mode(u32 reg) +{ + return interleave_mode(reg) ? "8:6" : "[8:6]XOR[18:16]"; +} + +static u32 dram_attr(u32 reg) +{ + return GET_BITFIELD(reg, 2, 3); +} + +static u64 knl_sad_limit(u32 reg) +{ + return (GET_BITFIELD(reg, 7, 26) << 26) | 0x3ffffff; +} + +static u32 knl_interleave_mode(u32 reg) +{ + return GET_BITFIELD(reg, 1, 2); +} + +static char *knl_show_interleave_mode(u32 reg) +{ + char *s; + + switch (knl_interleave_mode(reg)) { + case 0: + s = "use address bits [8:6]"; + break; + case 1: + s = "use address bits [10:8]"; + break; + case 2: + s = "use address bits [14:12]"; + break; + case 3: + s = "use address bits [32:30]"; + break; + default: + WARN_ON(1); + break; + } + + return s; +} + +static u32 dram_attr_knl(u32 reg) +{ + return GET_BITFIELD(reg, 3, 4); +} + + static enum mem_type get_memory_type(struct sbridge_pvt *pvt) { u32 reg; @@ -812,6 +967,12 @@ return __ibridge_get_width(GET_BITFIELD(mtr, 8, 9)); } +static enum mem_type knl_get_memory_type(struct sbridge_pvt *pvt) +{ + /* DDR4 RDIMMS and LRDIMMS are supported */ + return MEM_RDDR4; +} + static u8 get_node_id(struct sbridge_pvt *pvt) { u32 reg; @@ -827,6 +988,15 @@ return GET_BITFIELD(reg, 0, 3); } +static u8 knl_get_node_id(struct sbridge_pvt *pvt) +{ + u32 reg; + + pci_read_config_dword(pvt->pci_sad1, SAD_CONTROL, ®); + return GET_BITFIELD(reg, 0, 2); +} + + static u64 haswell_get_tolm(struct sbridge_pvt *pvt) { u32 reg; @@ -848,6 +1018,26 @@ return rc | 0x1ffffff; } +static u64 knl_get_tolm(struct sbridge_pvt *pvt) +{ + u32 reg; + + pci_read_config_dword(pvt->knl.pci_mc_info, KNL_TOLM, ®); + return (GET_BITFIELD(reg, 26, 31) << 26) | 0x3ffffff; +} + +static u64 knl_get_tohm(struct sbridge_pvt *pvt) +{ + u64 rc; + u32 reg_lo, reg_hi; + + pci_read_config_dword(pvt->knl.pci_mc_info, KNL_TOHM_0, ®_lo); + pci_read_config_dword(pvt->knl.pci_mc_info, KNL_TOHM_1, ®_hi); + rc = ((u64)reg_hi << 32) | reg_lo; + return rc | 0x3ffffff; +} + + static u64 haswell_rir_limit(u32 reg) { return (((u64)GET_BITFIELD(reg, 1, 11) + 1) << 29) - 1; @@ -905,11 +1095,22 @@ case BROADWELL: id = PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0_TA; break; + case KNIGHTS_LANDING: + /* + * KNL doesn't group things by bus the same way + * SB/IB/Haswell does. + */ + id = PCI_DEVICE_ID_INTEL_KNL_IMC_TA; + break; default: return -ENODEV; } - pdev = get_pdev_same_bus(bus, id); + if (type != KNIGHTS_LANDING) + pdev = get_pdev_same_bus(bus, id); + else + pdev = pci_get_device(PCI_VENDOR_ID_INTEL, id, 0); + if (!pdev) { sbridge_printk(KERN_ERR, "Couldn't find PCI device " "%04x:%04x! on bus %02d\n", @@ -917,7 +1118,8 @@ return -ENODEV; } - pci_read_config_dword(pdev, MCMTR, &mcmtr); + pci_read_config_dword(pdev, + type == KNIGHTS_LANDING ? KNL_MCMTR : MCMTR, &mcmtr); if (!IS_ECC_ENABLED(mcmtr)) { sbridge_printk(KERN_ERR, "ECC is disabled. Aborting\n"); return -ENODEV; @@ -925,6 +1127,476 @@ return 0; } +/* Low bits of TAD limit, and some metadata. */ +static const u32 knl_tad_dram_limit_lo[] = { + 0x400, 0x500, 0x600, 0x700, + 0x800, 0x900, 0xa00, 0xb00, +}; + +/* Low bits of TAD offset. */ +static const u32 knl_tad_dram_offset_lo[] = { + 0x404, 0x504, 0x604, 0x704, + 0x804, 0x904, 0xa04, 0xb04, +}; + +/* High 16 bits of TAD limit and offset. */ +static const u32 knl_tad_dram_hi[] = { + 0x408, 0x508, 0x608, 0x708, + 0x808, 0x908, 0xa08, 0xb08, +}; + +/* Number of ways a tad entry is interleaved. */ +static const u32 knl_tad_ways[] = { + 8, 6, 4, 3, 2, 1, +}; + +/* + * Retrieve the n'th Target Address Decode table entry + * from the memory controller's TAD table. + * + * @pvt: driver private data + * @entry: which entry you want to retrieve + * @mc: which memory controller (0 or 1) + * @offset: output tad range offset + * @limit: output address of first byte above tad range + * @ways: output number of interleave ways + * + * The offset value has curious semantics. It's a sort of running total + * of the sizes of all the memory regions that aren't mapped in this + * tad table. + */ +static int knl_get_tad(const struct sbridge_pvt *pvt, + const int entry, + const int mc, + u64 *offset, + u64 *limit, + int *ways) +{ + u32 reg_limit_lo, reg_offset_lo, reg_hi; + struct pci_dev *pci_mc; + int way_id; + + switch (mc) { + case 0: + pci_mc = pvt->knl.pci_mc0; + break; + case 1: + pci_mc = pvt->knl.pci_mc1; + break; + default: + WARN_ON(1); + return -EINVAL; + } + + pci_read_config_dword(pci_mc, + knl_tad_dram_limit_lo[entry], ®_limit_lo); + pci_read_config_dword(pci_mc, + knl_tad_dram_offset_lo[entry], ®_offset_lo); + pci_read_config_dword(pci_mc, + knl_tad_dram_hi[entry], ®_hi); + + /* Is this TAD entry enabled? */ + if (!GET_BITFIELD(reg_limit_lo, 0, 0)) + return -ENODEV; + + way_id = GET_BITFIELD(reg_limit_lo, 3, 5); + + if (way_id < ARRAY_SIZE(knl_tad_ways)) { + *ways = knl_tad_ways[way_id]; + } else { + *ways = 0; + sbridge_printk(KERN_ERR, + "Unexpected value %d in mc_tad_limit_lo wayness field\n", + way_id); + return -ENODEV; + } + + /* + * The least significant 6 bits of base and limit are truncated. + * For limit, we fill the missing bits with 1s. + */ + *offset = ((u64) GET_BITFIELD(reg_offset_lo, 6, 31) << 6) | + ((u64) GET_BITFIELD(reg_hi, 0, 15) << 32); + *limit = ((u64) GET_BITFIELD(reg_limit_lo, 6, 31) << 6) | 63 | + ((u64) GET_BITFIELD(reg_hi, 16, 31) << 32); + + return 0; +} + +/* Determine which memory controller is responsible for a given channel. */ +static int knl_channel_mc(int channel) +{ + WARN_ON(channel < 0 || channel >= 6); + + return channel < 3 ? 1 : 0; +} + +/* + * Get the Nth entry from EDC_ROUTE_TABLE register. + * (This is the per-tile mapping of logical interleave targets to + * physical EDC modules.) + * + * entry 0: 0:2 + * 1: 3:5 + * 2: 6:8 + * 3: 9:11 + * 4: 12:14 + * 5: 15:17 + * 6: 18:20 + * 7: 21:23 + * reserved: 24:31 + */ +static u32 knl_get_edc_route(int entry, u32 reg) +{ + WARN_ON(entry >= KNL_MAX_EDCS); + return GET_BITFIELD(reg, entry*3, (entry*3)+2); +} + +/* + * Get the Nth entry from MC_ROUTE_TABLE register. + * (This is the per-tile mapping of logical interleave targets to + * physical DRAM channels modules.) + * + * entry 0: mc 0:2 channel 18:19 + * 1: mc 3:5 channel 20:21 + * 2: mc 6:8 channel 22:23 + * 3: mc 9:11 channel 24:25 + * 4: mc 12:14 channel 26:27 + * 5: mc 15:17 channel 28:29 + * reserved: 30:31 + * + * Though we have 3 bits to identify the MC, we should only see + * the values 0 or 1. + */ + +static u32 knl_get_mc_route(int entry, u32 reg) +{ + int mc, chan; + + WARN_ON(entry >= KNL_MAX_CHANNELS); + + mc = GET_BITFIELD(reg, entry*3, (entry*3)+2); + chan = GET_BITFIELD(reg, (entry*2) + 18, (entry*2) + 18 + 1); + + return knl_channel_remap(mc*3 + chan); +} + +/* + * Render the EDC_ROUTE register in human-readable form. + * Output string s should be at least KNL_MAX_EDCS*2 bytes. + */ +static void knl_show_edc_route(u32 reg, char *s) +{ + int i; + + for (i = 0; i < KNL_MAX_EDCS; i++) { + s[i*2] = knl_get_edc_route(i, reg) + '0'; + s[i*2+1] = '-'; + } + + s[KNL_MAX_EDCS*2 - 1] = '\0'; +} + +/* + * Render the MC_ROUTE register in human-readable form. + * Output string s should be at least KNL_MAX_CHANNELS*2 bytes. + */ +static void knl_show_mc_route(u32 reg, char *s) +{ + int i; + + for (i = 0; i < KNL_MAX_CHANNELS; i++) { + s[i*2] = knl_get_mc_route(i, reg) + '0'; + s[i*2+1] = '-'; + } + + s[KNL_MAX_CHANNELS*2 - 1] = '\0'; +} + +#define KNL_EDC_ROUTE 0xb8 +#define KNL_MC_ROUTE 0xb4 + +/* Is this dram rule backed by regular DRAM in flat mode? */ +#define KNL_EDRAM(reg) GET_BITFIELD(reg, 29, 29) + +/* Is this dram rule cached? */ +#define KNL_CACHEABLE(reg) GET_BITFIELD(reg, 28, 28) + +/* Is this rule backed by edc ? */ +#define KNL_EDRAM_ONLY(reg) GET_BITFIELD(reg, 29, 29) + +/* Is this rule backed by DRAM, cacheable in EDRAM? */ +#define KNL_CACHEABLE(reg) GET_BITFIELD(reg, 28, 28) + +/* Is this rule mod3? */ +#define KNL_MOD3(reg) GET_BITFIELD(reg, 27, 27) + +/* + * Figure out how big our RAM modules are. + * + * The DIMMMTR register in KNL doesn't tell us the size of the DIMMs, so we + * have to figure this out from the SAD rules, interleave lists, route tables, + * and TAD rules. + * + * SAD rules can have holes in them (e.g. the 3G-4G hole), so we have to + * inspect the TAD rules to figure out how large the SAD regions really are. + * + * When we know the real size of a SAD region and how many ways it's + * interleaved, we know the individual contribution of each channel to + * TAD is size/ways. + * + * Finally, we have to check whether each channel participates in each SAD + * region. + * + * Fortunately, KNL only supports one DIMM per channel, so once we know how + * much memory the channel uses, we know the DIMM is at least that large. + * (The BIOS might possibly choose not to map all available memory, in which + * case we will underreport the size of the DIMM.) + * + * In theory, we could try to determine the EDC sizes as well, but that would + * only work in flat mode, not in cache mode. + * + * @mc_sizes: Output sizes of channels (must have space for KNL_MAX_CHANNELS + * elements) + */ +static int knl_get_dimm_capacity(struct sbridge_pvt *pvt, u64 *mc_sizes) +{ + u64 sad_base, sad_size, sad_limit = 0; + u64 tad_base, tad_size, tad_limit, tad_deadspace, tad_livespace; + int sad_rule = 0; + int tad_rule = 0; + int intrlv_ways, tad_ways; + u32 first_pkg, pkg; + int i; + u64 sad_actual_size[2]; /* sad size accounting for holes, per mc */ + u32 dram_rule, interleave_reg; + u32 mc_route_reg[KNL_MAX_CHAS]; + u32 edc_route_reg[KNL_MAX_CHAS]; + int edram_only; + char edc_route_string[KNL_MAX_EDCS*2]; + char mc_route_string[KNL_MAX_CHANNELS*2]; + int cur_reg_start; + int mc; + int channel; + int way; + int participants[KNL_MAX_CHANNELS]; + int participant_count = 0; + + for (i = 0; i < KNL_MAX_CHANNELS; i++) + mc_sizes[i] = 0; + + /* Read the EDC route table in each CHA. */ + cur_reg_start = 0; + for (i = 0; i < KNL_MAX_CHAS; i++) { + pci_read_config_dword(pvt->knl.pci_cha[i], + KNL_EDC_ROUTE, &edc_route_reg[i]); + + if (i > 0 && edc_route_reg[i] != edc_route_reg[i-1]) { + knl_show_edc_route(edc_route_reg[i-1], + edc_route_string); + if (cur_reg_start == i-1) + edac_dbg(0, "edc route table for CHA %d: %s\n", + cur_reg_start, edc_route_string); + else + edac_dbg(0, "edc route table for CHA %d-%d: %s\n", + cur_reg_start, i-1, edc_route_string); + cur_reg_start = i; + } + } + knl_show_edc_route(edc_route_reg[i-1], edc_route_string); + if (cur_reg_start == i-1) + edac_dbg(0, "edc route table for CHA %d: %s\n", + cur_reg_start, edc_route_string); + else + edac_dbg(0, "edc route table for CHA %d-%d: %s\n", + cur_reg_start, i-1, edc_route_string); + + /* Read the MC route table in each CHA. */ + cur_reg_start = 0; + for (i = 0; i < KNL_MAX_CHAS; i++) { + pci_read_config_dword(pvt->knl.pci_cha[i], + KNL_MC_ROUTE, &mc_route_reg[i]); + + if (i > 0 && mc_route_reg[i] != mc_route_reg[i-1]) { + knl_show_mc_route(mc_route_reg[i-1], mc_route_string); + if (cur_reg_start == i-1) + edac_dbg(0, "mc route table for CHA %d: %s\n", + cur_reg_start, mc_route_string); + else + edac_dbg(0, "mc route table for CHA %d-%d: %s\n", + cur_reg_start, i-1, mc_route_string); + cur_reg_start = i; + } + } + knl_show_mc_route(mc_route_reg[i-1], mc_route_string); + if (cur_reg_start == i-1) + edac_dbg(0, "mc route table for CHA %d: %s\n", + cur_reg_start, mc_route_string); + else + edac_dbg(0, "mc route table for CHA %d-%d: %s\n", + cur_reg_start, i-1, mc_route_string); + + /* Process DRAM rules */ + for (sad_rule = 0; sad_rule < pvt->info.max_sad; sad_rule++) { + /* previous limit becomes the new base */ + sad_base = sad_limit; + + pci_read_config_dword(pvt->pci_sad0, + pvt->info.dram_rule[sad_rule], &dram_rule); + + if (!DRAM_RULE_ENABLE(dram_rule)) + break; + + edram_only = KNL_EDRAM_ONLY(dram_rule); + + sad_limit = pvt->info.sad_limit(dram_rule)+1; + sad_size = sad_limit - sad_base; + + pci_read_config_dword(pvt->pci_sad0, + pvt->info.interleave_list[sad_rule], &interleave_reg); + + /* + * Find out how many ways this dram rule is interleaved. + * We stop when we see the first channel again. + */ + first_pkg = sad_pkg(pvt->info.interleave_pkg, + interleave_reg, 0); + for (intrlv_ways = 1; intrlv_ways < 8; intrlv_ways++) { + pkg = sad_pkg(pvt->info.interleave_pkg, + interleave_reg, intrlv_ways); + + if ((pkg & 0x8) == 0) { + /* + * 0 bit means memory is non-local, + * which KNL doesn't support + */ + edac_dbg(0, "Unexpected interleave target %d\n", + pkg); + return -1; + } + + if (pkg == first_pkg) + break; + } + if (KNL_MOD3(dram_rule)) + intrlv_ways *= 3; + + edac_dbg(3, "dram rule %d (base 0x%llx, limit 0x%llx), %d way interleave%s\n", + sad_rule, + sad_base, + sad_limit, + intrlv_ways, + edram_only ? ", EDRAM" : ""); + + /* + * Find out how big the SAD region really is by iterating + * over TAD tables (SAD regions may contain holes). + * Each memory controller might have a different TAD table, so + * we have to look at both. + * + * Livespace is the memory that's mapped in this TAD table, + * deadspace is the holes (this could be the MMIO hole, or it + * could be memory that's mapped by the other TAD table but + * not this one). + */ + for (mc = 0; mc < 2; mc++) { + sad_actual_size[mc] = 0; + tad_livespace = 0; + for (tad_rule = 0; + tad_rule < ARRAY_SIZE( + knl_tad_dram_limit_lo); + tad_rule++) { + if (knl_get_tad(pvt, + tad_rule, + mc, + &tad_deadspace, + &tad_limit, + &tad_ways)) + break; + + tad_size = (tad_limit+1) - + (tad_livespace + tad_deadspace); + tad_livespace += tad_size; + tad_base = (tad_limit+1) - tad_size; + + if (tad_base < sad_base) { + if (tad_limit > sad_base) + edac_dbg(0, "TAD region overlaps lower SAD boundary -- TAD tables may be configured incorrectly.\n"); + } else if (tad_base < sad_limit) { + if (tad_limit+1 > sad_limit) { + edac_dbg(0, "TAD region overlaps upper SAD boundary -- TAD tables may be configured incorrectly.\n"); + } else { + /* TAD region is completely inside SAD region */ + edac_dbg(3, "TAD region %d 0x%llx - 0x%llx (%lld bytes) table%d\n", + tad_rule, tad_base, + tad_limit, tad_size, + mc); + sad_actual_size[mc] += tad_size; + } + } + tad_base = tad_limit+1; + } + } + + for (mc = 0; mc < 2; mc++) { + edac_dbg(3, " total TAD DRAM footprint in table%d : 0x%llx (%lld bytes)\n", + mc, sad_actual_size[mc], sad_actual_size[mc]); + } + + /* Ignore EDRAM rule */ + if (edram_only) + continue; + + /* Figure out which channels participate in interleave. */ + for (channel = 0; channel < KNL_MAX_CHANNELS; channel++) + participants[channel] = 0; + + /* For each channel, does at least one CHA have + * this channel mapped to the given target? + */ + for (channel = 0; channel < KNL_MAX_CHANNELS; channel++) { + for (way = 0; way < intrlv_ways; way++) { + int target; + int cha; + + if (KNL_MOD3(dram_rule)) + target = way; + else + target = 0x7 & sad_pkg( + pvt->info.interleave_pkg, interleave_reg, way); + + for (cha = 0; cha < KNL_MAX_CHAS; cha++) { + if (knl_get_mc_route(target, + mc_route_reg[cha]) == channel + && participants[channel]) { + participant_count++; + participants[channel] = 1; + break; + } + } + } + } + + if (participant_count != intrlv_ways) + edac_dbg(0, "participant_count (%d) != interleave_ways (%d): DIMM size may be incorrect\n", + participant_count, intrlv_ways); + + for (channel = 0; channel < KNL_MAX_CHANNELS; channel++) { + mc = knl_channel_mc(channel); + if (participants[channel]) { + edac_dbg(4, "mc channel %d contributes %lld bytes via sad entry %d\n", + channel, + sad_actual_size[mc]/intrlv_ways, + sad_rule); + mc_sizes[channel] += + sad_actual_size[mc]/intrlv_ways; + } + } + } + + return 0; +} + static int get_dimm_config(struct mem_ctl_info *mci) { struct sbridge_pvt *pvt = mci->pvt_info; @@ -934,13 +1606,20 @@ u32 reg; enum edac_type mode; enum mem_type mtype; + int channels = pvt->info.type == KNIGHTS_LANDING ? + KNL_MAX_CHANNELS : NUM_CHANNELS; + u64 knl_mc_sizes[KNL_MAX_CHANNELS]; - if (pvt->info.type == HASWELL || pvt->info.type == BROADWELL) + if (pvt->info.type == HASWELL || pvt->info.type == BROADWELL || + pvt->info.type == KNIGHTS_LANDING) pci_read_config_dword(pvt->pci_sad1, SAD_TARGET, ®); else pci_read_config_dword(pvt->pci_br0, SAD_TARGET, ®); - pvt->sbridge_dev->source_id = SOURCE_ID(reg); + if (pvt->info.type == KNIGHTS_LANDING) + pvt->sbridge_dev->source_id = SOURCE_ID_KNL(reg); + else + pvt->sbridge_dev->source_id = SOURCE_ID(reg); pvt->sbridge_dev->node_id = pvt->info.get_node_id(pvt); edac_dbg(0, "mc#%d: Node ID: %d, source ID: %d\n", @@ -948,31 +1627,42 @@ pvt->sbridge_dev->node_id, pvt->sbridge_dev->source_id); - pci_read_config_dword(pvt->pci_ras, RASENABLES, ®); - if (IS_MIRROR_ENABLED(reg)) { - edac_dbg(0, "Memory mirror is enabled\n"); - pvt->is_mirrored = true; - } else { - edac_dbg(0, "Memory mirror is disabled\n"); + /* KNL doesn't support mirroring or lockstep, + * and is always closed page + */ + if (pvt->info.type == KNIGHTS_LANDING) { + mode = EDAC_S4ECD4ED; pvt->is_mirrored = false; - } - pci_read_config_dword(pvt->pci_ta, MCMTR, &pvt->info.mcmtr); - if (IS_LOCKSTEP_ENABLED(pvt->info.mcmtr)) { - edac_dbg(0, "Lockstep is enabled\n"); - mode = EDAC_S8ECD8ED; - pvt->is_lockstep = true; + if (knl_get_dimm_capacity(pvt, knl_mc_sizes) != 0) + return -1; } else { - edac_dbg(0, "Lockstep is disabled\n"); - mode = EDAC_S4ECD4ED; - pvt->is_lockstep = false; - } - if (IS_CLOSE_PG(pvt->info.mcmtr)) { - edac_dbg(0, "address map is on closed page mode\n"); - pvt->is_close_pg = true; - } else { - edac_dbg(0, "address map is on open page mode\n"); - pvt->is_close_pg = false; + pci_read_config_dword(pvt->pci_ras, RASENABLES, ®); + if (IS_MIRROR_ENABLED(reg)) { + edac_dbg(0, "Memory mirror is enabled\n"); + pvt->is_mirrored = true; + } else { + edac_dbg(0, "Memory mirror is disabled\n"); + pvt->is_mirrored = false; + } + + pci_read_config_dword(pvt->pci_ta, MCMTR, &pvt->info.mcmtr); + if (IS_LOCKSTEP_ENABLED(pvt->info.mcmtr)) { + edac_dbg(0, "Lockstep is enabled\n"); + mode = EDAC_S8ECD8ED; + pvt->is_lockstep = true; + } else { + edac_dbg(0, "Lockstep is disabled\n"); + mode = EDAC_S4ECD4ED; + pvt->is_lockstep = false; + } + if (IS_CLOSE_PG(pvt->info.mcmtr)) { + edac_dbg(0, "address map is on closed page mode\n"); + pvt->is_close_pg = true; + } else { + edac_dbg(0, "address map is on open page mode\n"); + pvt->is_close_pg = false; + } } mtype = pvt->info.get_memory_type(pvt); @@ -988,23 +1678,46 @@ else banks = 8; - for (i = 0; i < NUM_CHANNELS; i++) { + for (i = 0; i < channels; i++) { u32 mtr; - if (!pvt->pci_tad[i]) - continue; - for (j = 0; j < ARRAY_SIZE(mtr_regs); j++) { + int max_dimms_per_channel; + + if (pvt->info.type == KNIGHTS_LANDING) { + max_dimms_per_channel = 1; + if (!pvt->knl.pci_channel[i]) + continue; + } else { + max_dimms_per_channel = ARRAY_SIZE(mtr_regs); + if (!pvt->pci_tad[i]) + continue; + } + + for (j = 0; j < max_dimms_per_channel; j++) { dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, i, j, 0); - pci_read_config_dword(pvt->pci_tad[i], - mtr_regs[j], &mtr); + if (pvt->info.type == KNIGHTS_LANDING) { + pci_read_config_dword(pvt->knl.pci_channel[i], + knl_mtr_reg, &mtr); + } else { + pci_read_config_dword(pvt->pci_tad[i], + mtr_regs[j], &mtr); + } edac_dbg(4, "Channel #%d MTR%d = %x\n", i, j, mtr); if (IS_DIMM_PRESENT(mtr)) { pvt->channel[i].dimms++; ranks = numrank(pvt->info.type, mtr); - rows = numrow(mtr); - cols = numcol(mtr); + + if (pvt->info.type == KNIGHTS_LANDING) { + /* For DDR4, this is fixed. */ + cols = 1 << 10; + rows = knl_mc_sizes[i] / + ((u64) cols * ranks * banks * 8); + } else { + rows = numrow(mtr); + cols = numcol(mtr); + } size = ((u64)rows * cols * banks * ranks) >> (20 - 3); npages = MiB_TO_PAGES(size); @@ -1069,7 +1782,7 @@ /* SAD_LIMIT Address range is 45:26 */ pci_read_config_dword(pvt->pci_sad0, pvt->info.dram_rule[n_sads], ®); - limit = SAD_LIMIT(reg); + limit = pvt->info.sad_limit(reg); if (!DRAM_RULE_ENABLE(reg)) continue; @@ -1081,10 +1794,10 @@ gb = div_u64_rem(tmp_mb, 1024, &mb); edac_dbg(0, "SAD#%d %s up to %u.%03u GB (0x%016Lx) Interleave: %s reg=0x%08x\n", n_sads, - get_dram_attr(reg), + show_dram_attr(pvt->info.dram_attr(reg)), gb, (mb*1000)/1024, ((u64)tmp_mb) << 20L, - INTERLEAVE_MODE(reg) ? "8:6" : "[8:6]XOR[18:16]", + pvt->info.show_interleave_mode(reg), reg); prv = limit; @@ -1101,6 +1814,9 @@ } } + if (pvt->info.type == KNIGHTS_LANDING) + return; + /* * Step 3) Get TAD range */ @@ -1248,7 +1964,7 @@ if (!DRAM_RULE_ENABLE(reg)) continue; - limit = SAD_LIMIT(reg); + limit = pvt->info.sad_limit(reg); if (limit <= prv) { sprintf(msg, "Can't discover the memory socket"); return -EINVAL; @@ -1262,8 +1978,8 @@ return -EINVAL; } dram_rule = reg; - *area_type = get_dram_attr(dram_rule); - interleave_mode = INTERLEAVE_MODE(dram_rule); + *area_type = show_dram_attr(pvt->info.dram_attr(dram_rule)); + interleave_mode = pvt->info.interleave_mode(dram_rule); pci_read_config_dword(pvt->pci_sad0, pvt->info.interleave_list[n_sads], ®); @@ -1567,7 +2283,8 @@ static int sbridge_get_onedevice(struct pci_dev **prev, u8 *num_mc, const struct pci_id_table *table, - const unsigned devno) + const unsigned devno, + const int multi_bus) { struct sbridge_dev *sbridge_dev; const struct pci_id_descr *dev_descr = &table->descr[devno]; @@ -1603,7 +2320,7 @@ } bus = pdev->bus->number; - sbridge_dev = get_sbridge_dev(bus); + sbridge_dev = get_sbridge_dev(bus, multi_bus); if (!sbridge_dev) { sbridge_dev = alloc_sbridge_dev(bus, table); if (!sbridge_dev) { @@ -1652,21 +2369,32 @@ * @num_mc: pointer to the memory controllers count, to be incremented in case * of success. * @table: model specific table + * @allow_dups: allow for multiple devices to exist with the same device id + * (as implemented, this isn't expected to work correctly in the + * multi-socket case). + * @multi_bus: don't assume devices on different buses belong to different + * memory controllers. * * returns 0 in case of success or error code */ -static int sbridge_get_all_devices(u8 *num_mc, - const struct pci_id_table *table) +static int sbridge_get_all_devices_full(u8 *num_mc, + const struct pci_id_table *table, + int allow_dups, + int multi_bus) { int i, rc; struct pci_dev *pdev = NULL; while (table && table->descr) { for (i = 0; i < table->n_devs; i++) { - pdev = NULL; + if (!allow_dups || i == 0 || + table->descr[i].dev_id != + table->descr[i-1].dev_id) { + pdev = NULL; + } do { rc = sbridge_get_onedevice(&pdev, num_mc, - table, i); + table, i, multi_bus); if (rc < 0) { if (i == 0) { i = table->n_devs; @@ -1675,7 +2403,7 @@ sbridge_put_all_devices(); return -ENODEV; } - } while (pdev); + } while (pdev && !allow_dups); } table++; } @@ -1683,6 +2411,11 @@ return 0; } +#define sbridge_get_all_devices(num_mc, table) \ + sbridge_get_all_devices_full(num_mc, table, 0, 0) +#define sbridge_get_all_devices_knl(num_mc, table) \ + sbridge_get_all_devices_full(num_mc, table, 1, 1) + static int sbridge_mci_bind_devs(struct mem_ctl_info *mci, struct sbridge_dev *sbridge_dev) { @@ -2038,6 +2771,131 @@ return -ENODEV; } +static int knl_mci_bind_devs(struct mem_ctl_info *mci, + struct sbridge_dev *sbridge_dev) +{ + struct sbridge_pvt *pvt = mci->pvt_info; + struct pci_dev *pdev; + int dev, func; + + int i; + int devidx; + + for (i = 0; i < sbridge_dev->n_devs; i++) { + pdev = sbridge_dev->pdev[i]; + if (!pdev) + continue; + + /* Extract PCI device and function. */ + dev = (pdev->devfn >> 3) & 0x1f; + func = pdev->devfn & 0x7; + + switch (pdev->device) { + case PCI_DEVICE_ID_INTEL_KNL_IMC_MC: + if (dev == 8) + pvt->knl.pci_mc0 = pdev; + else if (dev == 9) + pvt->knl.pci_mc1 = pdev; + else { + sbridge_printk(KERN_ERR, + "Memory controller in unexpected place! (dev %d, fn %d)\n", + dev, func); + continue; + } + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0: + pvt->pci_sad0 = pdev; + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_SAD1: + pvt->pci_sad1 = pdev; + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_CHA: + /* There are one of these per tile, and range from + * 1.14.0 to 1.18.5. + */ + devidx = ((dev-14)*8)+func; + + if (devidx < 0 || devidx >= KNL_MAX_CHAS) { + sbridge_printk(KERN_ERR, + "Caching and Home Agent in unexpected place! (dev %d, fn %d)\n", + dev, func); + continue; + } + + WARN_ON(pvt->knl.pci_cha[devidx] != NULL); + + pvt->knl.pci_cha[devidx] = pdev; + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_CHANNEL: + devidx = -1; + + /* + * MC0 channels 0-2 are device 9 function 2-4, + * MC1 channels 3-5 are device 8 function 2-4. + */ + + if (dev == 9) + devidx = func-2; + else if (dev == 8) + devidx = 3 + (func-2); + + if (devidx < 0 || devidx >= KNL_MAX_CHANNELS) { + sbridge_printk(KERN_ERR, + "DRAM Channel Registers in unexpected place! (dev %d, fn %d)\n", + dev, func); + continue; + } + + WARN_ON(pvt->knl.pci_channel[devidx] != NULL); + pvt->knl.pci_channel[devidx] = pdev; + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_TOLHM: + pvt->knl.pci_mc_info = pdev; + break; + + case PCI_DEVICE_ID_INTEL_KNL_IMC_TA: + pvt->pci_ta = pdev; + break; + + default: + sbridge_printk(KERN_ERR, "Unexpected device %d\n", + pdev->device); + break; + } + } + + if (!pvt->knl.pci_mc0 || !pvt->knl.pci_mc1 || + !pvt->pci_sad0 || !pvt->pci_sad1 || + !pvt->pci_ta) { + goto enodev; + } + + for (i = 0; i < KNL_MAX_CHANNELS; i++) { + if (!pvt->knl.pci_channel[i]) { + sbridge_printk(KERN_ERR, "Missing channel %d\n", i); + goto enodev; + } + } + + for (i = 0; i < KNL_MAX_CHAS; i++) { + if (!pvt->knl.pci_cha[i]) { + sbridge_printk(KERN_ERR, "Missing CHA %d\n", i); + goto enodev; + } + } + + return 0; + +enodev: + sbridge_printk(KERN_ERR, "Some needed devices are missing\n"); + return -ENODEV; +} + /**************************************************************************** Error check routines ****************************************************************************/ @@ -2127,8 +2985,36 @@ if (!GET_BITFIELD(m->status, 58, 58)) return; - rc = get_memory_error_data(mci, m->addr, &socket, &ha, - &channel_mask, &rank, &area_type, msg); + if (pvt->info.type == KNIGHTS_LANDING) { + if (channel == 14) { + edac_dbg(0, "%s%s err_code:%04x:%04x EDRAM bank %d\n", + overflow ? " OVERFLOW" : "", + (uncorrected_error && recoverable) + ? " recoverable" : "", + mscod, errcode, + m->bank); + } else { + char A = *("A"); + + channel = knl_channel_remap(channel); + channel_mask = 1 << channel; + snprintf(msg, sizeof(msg), + "%s%s err_code:%04x:%04x channel:%d (DIMM_%c)", + overflow ? " OVERFLOW" : "", + (uncorrected_error && recoverable) + ? " recoverable" : " ", + mscod, errcode, channel, A + channel); + edac_mc_handle_error(tp_event, mci, core_err_cnt, + m->addr >> PAGE_SHIFT, m->addr & ~PAGE_MASK, 0, + channel, 0, -1, + optype, msg); + } + return; + } else { + rc = get_memory_error_data(mci, m->addr, &socket, &ha, + &channel_mask, &rank, &area_type, msg); + } + if (rc < 0) goto err_parsing; new_mci = get_mci_for_node_id(socket); @@ -2359,10 +3245,11 @@ /* allocate a new MC control structure */ layers[0].type = EDAC_MC_LAYER_CHANNEL; - layers[0].size = NUM_CHANNELS; + layers[0].size = type == KNIGHTS_LANDING ? + KNL_MAX_CHANNELS : NUM_CHANNELS; layers[0].is_virt_csrow = false; layers[1].type = EDAC_MC_LAYER_SLOT; - layers[1].size = MAX_DIMMS; + layers[1].size = type == KNIGHTS_LANDING ? 1 : MAX_DIMMS; layers[1].is_virt_csrow = true; mci = edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers, sizeof(*pvt)); @@ -2380,7 +3267,8 @@ pvt->sbridge_dev = sbridge_dev; sbridge_dev->mci = mci; - mci->mtype_cap = MEM_FLAG_DDR3; + mci->mtype_cap = type == KNIGHTS_LANDING ? + MEM_FLAG_DDR4 : MEM_FLAG_DDR3; mci->edac_ctl_cap = EDAC_FLAG_NONE; mci->edac_cap = EDAC_FLAG_NONE; mci->mod_name = "sbridge_edac.c"; @@ -2401,6 +3289,10 @@ pvt->info.get_memory_type = get_memory_type; pvt->info.get_node_id = get_node_id; pvt->info.rir_limit = rir_limit; + pvt->info.sad_limit = sad_limit; + pvt->info.interleave_mode = interleave_mode; + pvt->info.show_interleave_mode = show_interleave_mode; + pvt->info.dram_attr = dram_attr; pvt->info.max_sad = ARRAY_SIZE(ibridge_dram_rule); pvt->info.interleave_list = ibridge_interleave_list; pvt->info.max_interleave = ARRAY_SIZE(ibridge_interleave_list); @@ -2421,6 +3313,10 @@ pvt->info.get_memory_type = get_memory_type; pvt->info.get_node_id = get_node_id; pvt->info.rir_limit = rir_limit; + pvt->info.sad_limit = sad_limit; + pvt->info.interleave_mode = interleave_mode; + pvt->info.show_interleave_mode = show_interleave_mode; + pvt->info.dram_attr = dram_attr; pvt->info.max_sad = ARRAY_SIZE(sbridge_dram_rule); pvt->info.interleave_list = sbridge_interleave_list; pvt->info.max_interleave = ARRAY_SIZE(sbridge_interleave_list); @@ -2441,6 +3337,10 @@ pvt->info.get_memory_type = haswell_get_memory_type; pvt->info.get_node_id = haswell_get_node_id; pvt->info.rir_limit = haswell_rir_limit; + pvt->info.sad_limit = sad_limit; + pvt->info.interleave_mode = interleave_mode; + pvt->info.show_interleave_mode = show_interleave_mode; + pvt->info.dram_attr = dram_attr; pvt->info.max_sad = ARRAY_SIZE(ibridge_dram_rule); pvt->info.interleave_list = ibridge_interleave_list; pvt->info.max_interleave = ARRAY_SIZE(ibridge_interleave_list); @@ -2461,6 +3361,10 @@ pvt->info.get_memory_type = haswell_get_memory_type; pvt->info.get_node_id = haswell_get_node_id; pvt->info.rir_limit = haswell_rir_limit; + pvt->info.sad_limit = sad_limit; + pvt->info.interleave_mode = interleave_mode; + pvt->info.show_interleave_mode = show_interleave_mode; + pvt->info.dram_attr = dram_attr; pvt->info.max_sad = ARRAY_SIZE(ibridge_dram_rule); pvt->info.interleave_list = ibridge_interleave_list; pvt->info.max_interleave = ARRAY_SIZE(ibridge_interleave_list); @@ -2473,6 +3377,30 @@ if (unlikely(rc < 0)) goto fail0; break; + case KNIGHTS_LANDING: + /* pvt->info.rankcfgr == ??? */ + pvt->info.get_tolm = knl_get_tolm; + pvt->info.get_tohm = knl_get_tohm; + pvt->info.dram_rule = knl_dram_rule; + pvt->info.get_memory_type = knl_get_memory_type; + pvt->info.get_node_id = knl_get_node_id; + pvt->info.rir_limit = NULL; + pvt->info.sad_limit = knl_sad_limit; + pvt->info.interleave_mode = knl_interleave_mode; + pvt->info.show_interleave_mode = knl_show_interleave_mode; + pvt->info.dram_attr = dram_attr_knl; + pvt->info.max_sad = ARRAY_SIZE(knl_dram_rule); + pvt->info.interleave_list = knl_interleave_list; + pvt->info.max_interleave = ARRAY_SIZE(knl_interleave_list); + pvt->info.interleave_pkg = ibridge_interleave_pkg; + pvt->info.get_width = ibridge_get_width; + mci->ctl_name = kasprintf(GFP_KERNEL, + "Knights Landing Socket#%d", mci->mc_idx); + + rc = knl_mci_bind_devs(mci, sbridge_dev); + if (unlikely(rc < 0)) + goto fail0; + break; } /* Get dimm basic config and the memory layout */ @@ -2527,20 +3455,29 @@ switch (pdev->device) { case PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA: - rc = sbridge_get_all_devices(&num_mc, pci_dev_descr_ibridge_table); + rc = sbridge_get_all_devices(&num_mc, + pci_dev_descr_ibridge_table); type = IVY_BRIDGE; break; case PCI_DEVICE_ID_INTEL_SBRIDGE_IMC_HA0: - rc = sbridge_get_all_devices(&num_mc, pci_dev_descr_sbridge_table); + rc = sbridge_get_all_devices(&num_mc, + pci_dev_descr_sbridge_table); type = SANDY_BRIDGE; break; case PCI_DEVICE_ID_INTEL_HASWELL_IMC_HA0: - rc = sbridge_get_all_devices(&num_mc, pci_dev_descr_haswell_table); + rc = sbridge_get_all_devices(&num_mc, + pci_dev_descr_haswell_table); type = HASWELL; break; case PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0: - rc = sbridge_get_all_devices(&num_mc, pci_dev_descr_broadwell_table); + rc = sbridge_get_all_devices(&num_mc, + pci_dev_descr_broadwell_table); type = BROADWELL; + break; + case PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0: + rc = sbridge_get_all_devices_knl(&num_mc, + pci_dev_descr_knl_table); + type = KNIGHTS_LANDING; break; } if (unlikely(rc < 0)) { --- linux-4.4.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-4.4.0/drivers/gpu/drm/i915/i915_drv.c @@ -434,6 +434,7 @@ INTEL_SKL_GT1_IDS(&intel_skylake_info), \ INTEL_SKL_GT2_IDS(&intel_skylake_info), \ INTEL_SKL_GT3_IDS(&intel_skylake_gt3_info), \ + INTEL_SKL_GT4_IDS(&intel_skylake_gt3_info), \ INTEL_BXT_IDS(&intel_broxton_info) static const struct pci_device_id pciidlist[] = { /* aka */ --- linux-4.4.0.orig/drivers/gpu/drm/nouveau/nouveau_bios.c +++ linux-4.4.0/drivers/gpu/drm/nouveau/nouveau_bios.c @@ -351,7 +351,7 @@ /* Apple cards don't have the fp table; the laptops use DDC */ /* The table is also missing on some x86 IGPs */ #ifndef __powerpc__ - NV_ERROR(drm, "Pointer to flat panel table invalid\n"); + NV_WARN(drm, "Pointer to flat panel table invalid\n"); #endif bios->digital_min_front_porch = 0x4b; return 0; @@ -935,7 +935,7 @@ tmdstableptr = ROM16(bios->data[bitentry->offset]); if (!tmdstableptr) { - NV_ERROR(drm, "Pointer to TMDS table invalid\n"); + NV_WARN(drm, "Pointer to TMDS table invalid\n"); return -EINVAL; } --- linux-4.4.0.orig/drivers/gpu/drm/radeon/r100.c +++ linux-4.4.0/drivers/gpu/drm/radeon/r100.c @@ -3150,7 +3150,8 @@ { fixed20_12 trcd_ff, trp_ff, tras_ff, trbs_ff, tcas_ff; fixed20_12 sclk_ff, mclk_ff, sclk_eff_ff, sclk_delay_ff; - fixed20_12 peak_disp_bw, mem_bw, pix_clk, pix_clk2, temp_ff, crit_point_ff; + fixed20_12 peak_disp_bw, mem_bw, pix_clk, pix_clk2, temp_ff; + fixed20_12 crit_point_ff = {0}; uint32_t temp, data, mem_trcd, mem_trp, mem_tras; fixed20_12 memtcas_ff[8] = { dfixed_init(1), @@ -3204,7 +3205,7 @@ fixed20_12 min_mem_eff; fixed20_12 mc_latency_sclk, mc_latency_mclk, k1; fixed20_12 cur_latency_mclk, cur_latency_sclk; - fixed20_12 disp_latency, disp_latency_overhead, disp_drain_rate, + fixed20_12 disp_latency, disp_latency_overhead, disp_drain_rate = {0}, disp_drain_rate2, read_return_rate; fixed20_12 time_disp1_drop_priority; int c; --- linux-4.4.0.orig/drivers/hid/hid-multitouch.c +++ linux-4.4.0/drivers/hid/hid-multitouch.c @@ -486,6 +486,11 @@ mt_store_field(usage, td, hi); return 1; case HID_DG_CONFIDENCE: + if (cls->name == MT_CLS_WIN_8 && + field->application == HID_DG_TOUCHPAD) { + cls->quirks &= ~MT_QUIRK_ALWAYS_VALID; + cls->quirks |= MT_QUIRK_VALID_IS_CONFIDENCE; + } mt_store_field(usage, td, hi); return 1; case HID_DG_TIPSWITCH: --- linux-4.4.0.orig/drivers/hv/channel.c +++ linux-4.4.0/drivers/hv/channel.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "hyperv_vmbus.h" @@ -496,8 +497,33 @@ static int vmbus_close_internal(struct vmbus_channel *channel) { struct vmbus_channel_close_channel *msg; + struct tasklet_struct *tasklet; int ret; + /* + * process_chn_event(), running in the tasklet, can race + * with vmbus_close_internal() in the case of SMP guest, e.g., when + * the former is accessing channel->inbound.ring_buffer, the latter + * could be freeing the ring_buffer pages. + * + * To resolve the race, we can serialize them by disabling the + * tasklet when the latter is running here. + */ + tasklet = hv_context.event_dpc[channel->target_cpu]; + tasklet_disable(tasklet); + + /* + * In case a device driver's probe() fails (e.g., + * util_probe() -> vmbus_open() returns -ENOMEM) and the device is + * rescinded later (e.g., we dynamically disble an Integrated Service + * in Hyper-V Manager), the driver's remove() invokes vmbus_close(): + * here we should skip most of the below cleanup work. + */ + if (channel->state != CHANNEL_OPENED_STATE) { + ret = -EINVAL; + goto out; + } + channel->state = CHANNEL_OPEN_STATE; channel->sc_creation_callback = NULL; /* Stop callback and cancel the timer asap */ @@ -525,7 +551,7 @@ * If we failed to post the close msg, * it is perhaps better to leak memory. */ - return ret; + goto out; } /* Tear down the gpadl for the channel's ring buffer */ @@ -538,7 +564,7 @@ * If we failed to teardown gpadl, * it is perhaps better to leak memory. */ - return ret; + goto out; } } @@ -549,12 +575,9 @@ free_pages((unsigned long)channel->ringbuffer_pages, get_order(channel->ringbuffer_pagecount * PAGE_SIZE)); - /* - * If the channel has been rescinded; process device removal. - */ - if (channel->rescind) - hv_process_channel_removal(channel, - channel->offermsg.child_relid); +out: + tasklet_enable(tasklet); + return ret; } @@ -630,10 +653,19 @@ * on the ring. We will not signal if more data is * to be placed. * + * Based on the channel signal state, we will decide + * which signaling policy will be applied. + * * If we cannot write to the ring-buffer; signal the host * even if we may not have written anything. This is a rare * enough condition that it should not matter. */ + + if (channel->signal_policy) + signal = true; + else + kick_q = true; + if (((ret == 0) && kick_q && signal) || (ret)) vmbus_setevent(channel); @@ -733,10 +765,19 @@ * on the ring. We will not signal if more data is * to be placed. * + * Based on the channel signal state, we will decide + * which signaling policy will be applied. + * * If we cannot write to the ring-buffer; signal the host * even if we may not have written anything. This is a rare * enough condition that it should not matter. */ + + if (channel->signal_policy) + signal = true; + else + kick_q = true; + if (((ret == 0) && kick_q && signal) || (ret)) vmbus_setevent(channel); @@ -881,46 +922,29 @@ * * Mainly used by Hyper-V drivers. */ -int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, - u32 bufferlen, u32 *buffer_actual_len, u64 *requestid) +static inline int +__vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, + u32 bufferlen, u32 *buffer_actual_len, u64 *requestid, + bool raw) { - struct vmpacket_descriptor desc; - u32 packetlen; - u32 userlen; int ret; bool signal = false; - *buffer_actual_len = 0; - *requestid = 0; - - - ret = hv_ringbuffer_peek(&channel->inbound, &desc, - sizeof(struct vmpacket_descriptor)); - if (ret != 0) - return 0; - - packetlen = desc.len8 << 3; - userlen = packetlen - (desc.offset8 << 3); - - *buffer_actual_len = userlen; - - if (userlen > bufferlen) { - - pr_err("Buffer too small - got %d needs %d\n", - bufferlen, userlen); - return -ETOOSMALL; - } - - *requestid = desc.trans_id; - - /* Copy over the packet to the user buffer */ - ret = hv_ringbuffer_read(&channel->inbound, buffer, userlen, - (desc.offset8 << 3), &signal); + ret = hv_ringbuffer_read(&channel->inbound, buffer, bufferlen, + buffer_actual_len, requestid, &signal, raw); if (signal) vmbus_setevent(channel); - return 0; + return ret; +} + +int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, + u32 bufferlen, u32 *buffer_actual_len, + u64 *requestid) +{ + return __vmbus_recvpacket(channel, buffer, bufferlen, + buffer_actual_len, requestid, false); } EXPORT_SYMBOL(vmbus_recvpacket); @@ -931,37 +955,7 @@ u32 bufferlen, u32 *buffer_actual_len, u64 *requestid) { - struct vmpacket_descriptor desc; - u32 packetlen; - int ret; - bool signal = false; - - *buffer_actual_len = 0; - *requestid = 0; - - - ret = hv_ringbuffer_peek(&channel->inbound, &desc, - sizeof(struct vmpacket_descriptor)); - if (ret != 0) - return 0; - - - packetlen = desc.len8 << 3; - - *buffer_actual_len = packetlen; - - if (packetlen > bufferlen) - return -ENOBUFS; - - *requestid = desc.trans_id; - - /* Copy over the entire packet to the user buffer */ - ret = hv_ringbuffer_read(&channel->inbound, buffer, packetlen, 0, - &signal); - - if (signal) - vmbus_setevent(channel); - - return ret; + return __vmbus_recvpacket(channel, buffer, bufferlen, + buffer_actual_len, requestid, true); } EXPORT_SYMBOL_GPL(vmbus_recvpacket_raw); --- linux-4.4.0.orig/drivers/hv/channel_mgmt.c +++ linux-4.4.0/drivers/hv/channel_mgmt.c @@ -177,19 +177,24 @@ } -void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid) +static void vmbus_release_relid(u32 relid) { struct vmbus_channel_relid_released msg; - unsigned long flags; - struct vmbus_channel *primary_channel; memset(&msg, 0, sizeof(struct vmbus_channel_relid_released)); msg.child_relid = relid; msg.header.msgtype = CHANNELMSG_RELID_RELEASED; vmbus_post_msg(&msg, sizeof(struct vmbus_channel_relid_released)); +} - if (channel == NULL) - return; +void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid) +{ + unsigned long flags; + struct vmbus_channel *primary_channel; + + vmbus_release_relid(relid); + + BUG_ON(!channel->rescind); if (channel->target_cpu != get_cpu()) { put_cpu(); @@ -201,9 +206,9 @@ } if (channel->primary_channel == NULL) { - spin_lock_irqsave(&vmbus_connection.channel_lock, flags); + mutex_lock(&vmbus_connection.channel_mutex); list_del(&channel->listentry); - spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + mutex_unlock(&vmbus_connection.channel_mutex); primary_channel = channel; } else { @@ -230,9 +235,7 @@ list_for_each_entry_safe(channel, tmp, &vmbus_connection.chn_list, listentry) { - /* if we don't set rescind to true, vmbus_close_internal() - * won't invoke hv_process_channel_removal(). - */ + /* hv_process_channel_removal() needs this */ channel->rescind = true; vmbus_device_unregister(channel->device_obj); @@ -250,7 +253,7 @@ unsigned long flags; /* Make sure this is a new offer */ - spin_lock_irqsave(&vmbus_connection.channel_lock, flags); + mutex_lock(&vmbus_connection.channel_mutex); list_for_each_entry(channel, &vmbus_connection.chn_list, listentry) { if (!uuid_le_cmp(channel->offermsg.offer.if_type, @@ -266,7 +269,7 @@ list_add_tail(&newchannel->listentry, &vmbus_connection.chn_list); - spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + mutex_unlock(&vmbus_connection.channel_mutex); if (!fnew) { /* @@ -336,9 +339,11 @@ return; err_deq_chan: - spin_lock_irqsave(&vmbus_connection.channel_lock, flags); + vmbus_release_relid(newchannel->offermsg.child_relid); + + mutex_lock(&vmbus_connection.channel_mutex); list_del(&newchannel->listentry); - spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + mutex_unlock(&vmbus_connection.channel_mutex); if (newchannel->target_cpu != get_cpu()) { put_cpu(); @@ -356,8 +361,10 @@ enum { IDE = 0, SCSI, + FC, NIC, ND_NIC, + PCIE, MAX_PERF_CHN, }; @@ -371,10 +378,14 @@ { HV_IDE_GUID, }, /* Storage - SCSI */ { HV_SCSI_GUID, }, + /* Storage - FC */ + { HV_SYNTHFC_GUID, }, /* Network */ { HV_NIC_GUID, }, /* NetworkDirect Guest RDMA */ { HV_ND_GUID, }, + /* PCI Express Pass Through */ + { HV_PCIE_GUID, }, }; @@ -405,8 +416,7 @@ struct cpumask *alloced_mask; for (i = IDE; i < MAX_PERF_CHN; i++) { - if (!memcmp(type_guid->b, hp_devs[i].guid, - sizeof(uuid_le))) { + if (!uuid_le_cmp(*type_guid, hp_devs[i].guid)) { perf_chn = true; break; } @@ -585,7 +595,11 @@ channel = relid2channel(rescind->child_relid); if (channel == NULL) { - hv_process_channel_removal(NULL, rescind->child_relid); + /* + * This is very impossible, because in + * vmbus_process_offer(), we have already invoked + * vmbus_release_relid() on error. + */ return; } --- linux-4.4.0.orig/drivers/hv/connection.c +++ linux-4.4.0/drivers/hv/connection.c @@ -83,10 +83,13 @@ msg->interrupt_page = virt_to_phys(vmbus_connection.int_page); msg->monitor_page1 = virt_to_phys(vmbus_connection.monitor_pages[0]); msg->monitor_page2 = virt_to_phys(vmbus_connection.monitor_pages[1]); - if (version >= VERSION_WIN8_1) { - msg->target_vcpu = hv_context.vp_index[get_cpu()]; - put_cpu(); - } + /* + * We want all channel messages to be delivered on CPU 0. + * This has been the behavior pre-win8. This is not + * perf issue and having all channel messages delivered on CPU 0 + * would be ok. + */ + msg->target_vcpu = 0; /* * Add to list before we send the request since we may @@ -146,7 +149,7 @@ spin_lock_init(&vmbus_connection.channelmsg_lock); INIT_LIST_HEAD(&vmbus_connection.chn_list); - spin_lock_init(&vmbus_connection.channel_lock); + mutex_init(&vmbus_connection.channel_mutex); /* * Setup the vmbus event connection for channel interrupt @@ -282,11 +285,10 @@ { struct vmbus_channel *channel; struct vmbus_channel *found_channel = NULL; - unsigned long flags; struct list_head *cur, *tmp; struct vmbus_channel *cur_sc; - spin_lock_irqsave(&vmbus_connection.channel_lock, flags); + mutex_lock(&vmbus_connection.channel_mutex); list_for_each_entry(channel, &vmbus_connection.chn_list, listentry) { if (channel->offermsg.child_relid == relid) { found_channel = channel; @@ -305,7 +307,7 @@ } } } - spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + mutex_unlock(&vmbus_connection.channel_mutex); return found_channel; } --- linux-4.4.0.orig/drivers/hv/hv.c +++ linux-4.4.0/drivers/hv/hv.c @@ -33,6 +33,14 @@ #include #include "hyperv_vmbus.h" +#ifndef PKG_ABI +/* + * Preserve the ability to 'make deb-pkg' since PKG_ABI is provided + * by the Ubuntu build rules. + */ +#define PKG_ABI 0 +#endif + /* The one and only */ struct hv_context hv_context = { .synic_initialized = false, @@ -89,9 +97,9 @@ } /* - * do_hypercall- Invoke the specified hypercall + * hv_do_hypercall- Invoke the specified hypercall */ -static u64 do_hypercall(u64 control, void *input, void *output) +u64 hv_do_hypercall(u64 control, void *input, void *output) { u64 input_address = (input) ? virt_to_phys(input) : 0; u64 output_address = (output) ? virt_to_phys(output) : 0; @@ -132,6 +140,7 @@ return hv_status_lo | ((u64)hv_status_hi << 32); #endif /* !x86_64 */ } +EXPORT_SYMBOL_GPL(hv_do_hypercall); #ifdef CONFIG_X86_64 static cycle_t read_hv_clock_tsc(struct clocksource *arg) @@ -139,7 +148,7 @@ cycle_t current_tick; struct ms_hyperv_tsc_page *tsc_pg = hv_context.tsc_page; - if (tsc_pg->tsc_sequence != -1) { + if (tsc_pg->tsc_sequence != 0) { /* * Use the tsc page to compute the value. */ @@ -161,7 +170,7 @@ if (tsc_pg->tsc_sequence == sequence) return current_tick; - if (tsc_pg->tsc_sequence != -1) + if (tsc_pg->tsc_sequence != 0) continue; /* * Fallback using MSR method. @@ -192,9 +201,7 @@ { int max_leaf; union hv_x64_msr_hypercall_contents hypercall_msr; - union hv_x64_msr_hypercall_contents tsc_msr; void *virtaddr = NULL; - void *va_tsc = NULL; memset(hv_context.synic_event_page, 0, sizeof(void *) * NR_CPUS); memset(hv_context.synic_message_page, 0, @@ -213,7 +220,7 @@ /* * Write our OS ID. */ - hv_context.guestid = generate_guest_id(0, LINUX_VERSION_CODE, 0); + hv_context.guestid = generate_guest_id(0x80 /*Canonical*/, LINUX_VERSION_CODE, PKG_ABI); wrmsrl(HV_X64_MSR_GUEST_OS_ID, hv_context.guestid); /* See if the hypercall page is already set */ @@ -240,6 +247,9 @@ #ifdef CONFIG_X86_64 if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) { + union hv_x64_msr_hypercall_contents tsc_msr; + void *va_tsc; + va_tsc = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL); if (!va_tsc) goto cleanup; @@ -315,7 +325,7 @@ { struct hv_input_post_message *aligned_msg; - u16 status; + u64 status; if (payload_size > HV_MESSAGE_PAYLOAD_BYTE_COUNT) return -EMSGSIZE; @@ -329,11 +339,10 @@ aligned_msg->payload_size = payload_size; memcpy((void *)aligned_msg->payload, payload, payload_size); - status = do_hypercall(HVCALL_POST_MESSAGE, aligned_msg, NULL) - & 0xFFFF; + status = hv_do_hypercall(HVCALL_POST_MESSAGE, aligned_msg, NULL); put_cpu(); - return status; + return status & 0xFFFF; } @@ -343,13 +352,13 @@ * * This involves a hypercall. */ -u16 hv_signal_event(void *con_id) +int hv_signal_event(void *con_id) { - u16 status; + u64 status; - status = (do_hypercall(HVCALL_SIGNAL_EVENT, con_id, NULL) & 0xFFFF); + status = hv_do_hypercall(HVCALL_SIGNAL_EVENT, con_id, NULL); - return status; + return status & 0xFFFF; } static int hv_ce_set_next_event(unsigned long delta, --- linux-4.4.0.orig/drivers/hv/hv_fcopy.c +++ linux-4.4.0/drivers/hv/hv_fcopy.c @@ -51,7 +51,6 @@ struct hv_fcopy_hdr *fcopy_msg; /* current message */ struct vmbus_channel *recv_channel; /* chn we got the request */ u64 recv_req_id; /* request ID. */ - void *fcopy_context; /* for the channel callback */ } fcopy_transaction; static void fcopy_respond_to_host(int error); @@ -67,6 +66,13 @@ */ static int dm_reg_value; +static void fcopy_poll_wrapper(void *channel) +{ + /* Transaction is finished, reset the state here to avoid races. */ + fcopy_transaction.state = HVUTIL_READY; + hv_fcopy_onchannelcallback(channel); +} + static void fcopy_timeout_func(struct work_struct *dummy) { /* @@ -74,13 +80,7 @@ * process the pending transaction. */ fcopy_respond_to_host(HV_E_FAIL); - - /* Transaction is finished, reset the state. */ - if (fcopy_transaction.state > HVUTIL_READY) - fcopy_transaction.state = HVUTIL_READY; - - hv_poll_channel(fcopy_transaction.fcopy_context, - hv_fcopy_onchannelcallback); + hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper); } static int fcopy_handle_handshake(u32 version) @@ -108,9 +108,7 @@ return -EINVAL; } pr_debug("FCP: userspace daemon ver. %d registered\n", version); - fcopy_transaction.state = HVUTIL_READY; - hv_poll_channel(fcopy_transaction.fcopy_context, - hv_fcopy_onchannelcallback); + hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper); return 0; } @@ -227,15 +225,8 @@ int util_fw_version; int fcopy_srv_version; - if (fcopy_transaction.state > HVUTIL_READY) { - /* - * We will defer processing this callback once - * the current transaction is complete. - */ - fcopy_transaction.fcopy_context = context; + if (fcopy_transaction.state > HVUTIL_READY) return; - } - fcopy_transaction.fcopy_context = NULL; vmbus_recvpacket(channel, recv_buffer, PAGE_SIZE * 2, &recvlen, &requestid); @@ -275,7 +266,8 @@ * Send the information to the user-level daemon. */ schedule_work(&fcopy_send_work); - schedule_delayed_work(&fcopy_timeout_work, 5*HZ); + schedule_delayed_work(&fcopy_timeout_work, + HV_UTIL_TIMEOUT * HZ); return; } icmsghdr->icflags = ICMSGHDRFLAG_TRANSACTION | ICMSGHDRFLAG_RESPONSE; @@ -304,9 +296,8 @@ if (cancel_delayed_work_sync(&fcopy_timeout_work)) { fcopy_transaction.state = HVUTIL_USERSPACE_RECV; fcopy_respond_to_host(*val); - fcopy_transaction.state = HVUTIL_READY; - hv_poll_channel(fcopy_transaction.fcopy_context, - hv_fcopy_onchannelcallback); + hv_poll_channel(fcopy_transaction.recv_channel, + fcopy_poll_wrapper); } return 0; --- linux-4.4.0.orig/drivers/hv/hv_kvp.c +++ linux-4.4.0/drivers/hv/hv_kvp.c @@ -66,7 +66,6 @@ struct hv_kvp_msg *kvp_msg; /* current message */ struct vmbus_channel *recv_channel; /* chn we got the request */ u64 recv_req_id; /* request ID. */ - void *kvp_context; /* for the channel callback */ } kvp_transaction; /* @@ -94,6 +93,13 @@ */ #define HV_DRV_VERSION "3.1" +static void kvp_poll_wrapper(void *channel) +{ + /* Transaction is finished, reset the state here to avoid races. */ + kvp_transaction.state = HVUTIL_READY; + hv_kvp_onchannelcallback(channel); +} + static void kvp_register(int reg_value) { @@ -121,12 +127,7 @@ */ kvp_respond_to_host(NULL, HV_E_FAIL); - /* Transaction is finished, reset the state. */ - if (kvp_transaction.state > HVUTIL_READY) - kvp_transaction.state = HVUTIL_READY; - - hv_poll_channel(kvp_transaction.kvp_context, - hv_kvp_onchannelcallback); + hv_poll_channel(kvp_transaction.recv_channel, kvp_poll_wrapper); } static int kvp_handle_handshake(struct hv_kvp_msg *msg) @@ -153,7 +154,7 @@ pr_debug("KVP: userspace daemon ver. %d registered\n", KVP_OP_REGISTER); kvp_register(dm_reg_value); - kvp_transaction.state = HVUTIL_READY; + hv_poll_channel(kvp_transaction.recv_channel, kvp_poll_wrapper); return 0; } @@ -218,9 +219,7 @@ */ if (cancel_delayed_work_sync(&kvp_timeout_work)) { kvp_respond_to_host(message, error); - kvp_transaction.state = HVUTIL_READY; - hv_poll_channel(kvp_transaction.kvp_context, - hv_kvp_onchannelcallback); + hv_poll_channel(kvp_transaction.recv_channel, kvp_poll_wrapper); } return 0; @@ -596,15 +595,8 @@ int util_fw_version; int kvp_srv_version; - if (kvp_transaction.state > HVUTIL_READY) { - /* - * We will defer processing this callback once - * the current transaction is complete. - */ - kvp_transaction.kvp_context = context; + if (kvp_transaction.state > HVUTIL_READY) return; - } - kvp_transaction.kvp_context = NULL; vmbus_recvpacket(channel, recv_buffer, PAGE_SIZE * 4, &recvlen, &requestid); @@ -668,7 +660,8 @@ * user-mode not responding. */ schedule_work(&kvp_sendkey_work); - schedule_delayed_work(&kvp_timeout_work, 5*HZ); + schedule_delayed_work(&kvp_timeout_work, + HV_UTIL_TIMEOUT * HZ); return; --- linux-4.4.0.orig/drivers/hv/hv_snapshot.c +++ linux-4.4.0/drivers/hv/hv_snapshot.c @@ -53,7 +53,6 @@ struct vmbus_channel *recv_channel; /* chn we got the request */ u64 recv_req_id; /* request ID. */ struct hv_vss_msg *msg; /* current message */ - void *vss_context; /* for the channel callback */ } vss_transaction; @@ -74,6 +73,13 @@ static DECLARE_DELAYED_WORK(vss_timeout_work, vss_timeout_func); static DECLARE_WORK(vss_send_op_work, vss_send_op); +static void vss_poll_wrapper(void *channel) +{ + /* Transaction is finished, reset the state here to avoid races. */ + vss_transaction.state = HVUTIL_READY; + hv_vss_onchannelcallback(channel); +} + /* * Callback when data is received from user mode. */ @@ -86,12 +92,7 @@ pr_warn("VSS: timeout waiting for daemon to reply\n"); vss_respond_to_host(HV_E_FAIL); - /* Transaction is finished, reset the state. */ - if (vss_transaction.state > HVUTIL_READY) - vss_transaction.state = HVUTIL_READY; - - hv_poll_channel(vss_transaction.vss_context, - hv_vss_onchannelcallback); + hv_poll_channel(vss_transaction.recv_channel, vss_poll_wrapper); } static int vss_handle_handshake(struct hv_vss_msg *vss_msg) @@ -112,7 +113,7 @@ default: return -EINVAL; } - vss_transaction.state = HVUTIL_READY; + hv_poll_channel(vss_transaction.recv_channel, vss_poll_wrapper); pr_debug("VSS: userspace daemon ver. %d registered\n", dm_reg_value); return 0; } @@ -138,9 +139,8 @@ if (cancel_delayed_work_sync(&vss_timeout_work)) { vss_respond_to_host(vss_msg->error); /* Transaction is finished, reset the state. */ - vss_transaction.state = HVUTIL_READY; - hv_poll_channel(vss_transaction.vss_context, - hv_vss_onchannelcallback); + hv_poll_channel(vss_transaction.recv_channel, + vss_poll_wrapper); } } else { /* This is a spurious call! */ @@ -238,15 +238,8 @@ struct icmsg_hdr *icmsghdrp; struct icmsg_negotiate *negop = NULL; - if (vss_transaction.state > HVUTIL_READY) { - /* - * We will defer processing this callback once - * the current transaction is complete. - */ - vss_transaction.vss_context = context; + if (vss_transaction.state > HVUTIL_READY) return; - } - vss_transaction.vss_context = NULL; vmbus_recvpacket(channel, recv_buffer, PAGE_SIZE * 2, &recvlen, &requestid); @@ -338,6 +331,11 @@ int hv_vss_init(struct hv_util_service *srv) { + if (vmbus_proto_version < VERSION_WIN8_1) { + pr_warn("Integration service 'Backup (volume snapshot)'" + " not supported on this host version.\n"); + return -ENOTSUPP; + } recv_buffer = srv->recv_buffer; /* --- linux-4.4.0.orig/drivers/hv/hv_utils_transport.c +++ linux-4.4.0/drivers/hv/hv_utils_transport.c @@ -27,11 +27,9 @@ static void hvt_reset(struct hvutil_transport *hvt) { - mutex_lock(&hvt->outmsg_lock); kfree(hvt->outmsg); hvt->outmsg = NULL; hvt->outmsg_len = 0; - mutex_unlock(&hvt->outmsg_lock); if (hvt->on_reset) hvt->on_reset(); } @@ -44,10 +42,17 @@ hvt = container_of(file->f_op, struct hvutil_transport, fops); - if (wait_event_interruptible(hvt->outmsg_q, hvt->outmsg_len > 0)) + if (wait_event_interruptible(hvt->outmsg_q, hvt->outmsg_len > 0 || + hvt->mode != HVUTIL_TRANSPORT_CHARDEV)) return -EINTR; - mutex_lock(&hvt->outmsg_lock); + mutex_lock(&hvt->lock); + + if (hvt->mode == HVUTIL_TRANSPORT_DESTROY) { + ret = -EBADF; + goto out_unlock; + } + if (!hvt->outmsg) { ret = -EAGAIN; goto out_unlock; @@ -68,7 +73,7 @@ hvt->outmsg_len = 0; out_unlock: - mutex_unlock(&hvt->outmsg_lock); + mutex_unlock(&hvt->lock); return ret; } @@ -77,19 +82,22 @@ { struct hvutil_transport *hvt; u8 *inmsg; + int ret; hvt = container_of(file->f_op, struct hvutil_transport, fops); - inmsg = kzalloc(count, GFP_KERNEL); - if (copy_from_user(inmsg, buf, count)) { - kfree(inmsg); - return -EFAULT; - } - if (hvt->on_msg(inmsg, count)) - return -EFAULT; + inmsg = memdup_user(buf, count); + if (IS_ERR(inmsg)) + return PTR_ERR(inmsg); + + if (hvt->mode == HVUTIL_TRANSPORT_DESTROY) + ret = -EBADF; + else + ret = hvt->on_msg(inmsg, count); + kfree(inmsg); - return count; + return ret ? ret : count; } static unsigned int hvt_op_poll(struct file *file, poll_table *wait) @@ -99,6 +107,10 @@ hvt = container_of(file->f_op, struct hvutil_transport, fops); poll_wait(file, &hvt->outmsg_q, wait); + + if (hvt->mode == HVUTIL_TRANSPORT_DESTROY) + return POLLERR | POLLHUP; + if (hvt->outmsg_len > 0) return POLLIN | POLLRDNORM; @@ -108,40 +120,68 @@ static int hvt_op_open(struct inode *inode, struct file *file) { struct hvutil_transport *hvt; + int ret = 0; + bool issue_reset = false; hvt = container_of(file->f_op, struct hvutil_transport, fops); - /* - * Switching to CHARDEV mode. We switch bach to INIT when device - * gets released. - */ - if (hvt->mode == HVUTIL_TRANSPORT_INIT) + mutex_lock(&hvt->lock); + + if (hvt->mode == HVUTIL_TRANSPORT_DESTROY) { + ret = -EBADF; + } else if (hvt->mode == HVUTIL_TRANSPORT_INIT) { + /* + * Switching to CHARDEV mode. We switch bach to INIT when + * device gets released. + */ hvt->mode = HVUTIL_TRANSPORT_CHARDEV; + } else if (hvt->mode == HVUTIL_TRANSPORT_NETLINK) { /* * We're switching from netlink communication to using char * device. Issue the reset first. */ - hvt_reset(hvt); + issue_reset = true; hvt->mode = HVUTIL_TRANSPORT_CHARDEV; - } else - return -EBUSY; + } else { + ret = -EBUSY; + } - return 0; + if (issue_reset) + hvt_reset(hvt); + + mutex_unlock(&hvt->lock); + + return ret; +} + +static void hvt_transport_free(struct hvutil_transport *hvt) +{ + misc_deregister(&hvt->mdev); + kfree(hvt->outmsg); + kfree(hvt); } static int hvt_op_release(struct inode *inode, struct file *file) { struct hvutil_transport *hvt; + int mode_old; hvt = container_of(file->f_op, struct hvutil_transport, fops); - hvt->mode = HVUTIL_TRANSPORT_INIT; + mutex_lock(&hvt->lock); + mode_old = hvt->mode; + if (hvt->mode != HVUTIL_TRANSPORT_DESTROY) + hvt->mode = HVUTIL_TRANSPORT_INIT; /* * Cleanup message buffers to avoid spurious messages when the daemon * connects back. */ hvt_reset(hvt); + mutex_unlock(&hvt->lock); + + if (mode_old == HVUTIL_TRANSPORT_DESTROY) + hvt_transport_free(hvt); return 0; } @@ -168,6 +208,7 @@ * Switching to NETLINK mode. Switching to CHARDEV happens when someone * opens the device. */ + mutex_lock(&hvt->lock); if (hvt->mode == HVUTIL_TRANSPORT_INIT) hvt->mode = HVUTIL_TRANSPORT_NETLINK; @@ -175,6 +216,7 @@ hvt_found->on_msg(msg->data, msg->len); else pr_warn("hvt_cn_callback: unexpected netlink message!\n"); + mutex_unlock(&hvt->lock); } int hvutil_transport_send(struct hvutil_transport *hvt, void *msg, int len) @@ -182,7 +224,8 @@ struct cn_msg *cn_msg; int ret = 0; - if (hvt->mode == HVUTIL_TRANSPORT_INIT) { + if (hvt->mode == HVUTIL_TRANSPORT_INIT || + hvt->mode == HVUTIL_TRANSPORT_DESTROY) { return -EINVAL; } else if (hvt->mode == HVUTIL_TRANSPORT_NETLINK) { cn_msg = kzalloc(sizeof(*cn_msg) + len, GFP_ATOMIC); @@ -197,18 +240,26 @@ return ret; } /* HVUTIL_TRANSPORT_CHARDEV */ - mutex_lock(&hvt->outmsg_lock); + mutex_lock(&hvt->lock); + if (hvt->mode != HVUTIL_TRANSPORT_CHARDEV) { + ret = -EINVAL; + goto out_unlock; + } + if (hvt->outmsg) { /* Previous message wasn't received */ ret = -EFAULT; goto out_unlock; } hvt->outmsg = kzalloc(len, GFP_KERNEL); - memcpy(hvt->outmsg, msg, len); - hvt->outmsg_len = len; - wake_up_interruptible(&hvt->outmsg_q); + if (hvt->outmsg) { + memcpy(hvt->outmsg, msg, len); + hvt->outmsg_len = len; + wake_up_interruptible(&hvt->outmsg_q); + } else + ret = -ENOMEM; out_unlock: - mutex_unlock(&hvt->outmsg_lock); + mutex_unlock(&hvt->lock); return ret; } @@ -239,7 +290,7 @@ hvt->mdev.fops = &hvt->fops; init_waitqueue_head(&hvt->outmsg_q); - mutex_init(&hvt->outmsg_lock); + mutex_init(&hvt->lock); spin_lock(&hvt_list_lock); list_add(&hvt->list, &hvt_list); @@ -265,12 +316,25 @@ void hvutil_transport_destroy(struct hvutil_transport *hvt) { + int mode_old; + + mutex_lock(&hvt->lock); + mode_old = hvt->mode; + hvt->mode = HVUTIL_TRANSPORT_DESTROY; + wake_up_interruptible(&hvt->outmsg_q); + mutex_unlock(&hvt->lock); + + /* + * In case we were in 'chardev' mode we still have an open fd so we + * have to defer freeing the device. Netlink interface can be freed + * now. + */ spin_lock(&hvt_list_lock); list_del(&hvt->list); spin_unlock(&hvt_list_lock); if (hvt->cn_id.idx > 0 && hvt->cn_id.val > 0) cn_del_callback(&hvt->cn_id); - misc_deregister(&hvt->mdev); - kfree(hvt->outmsg); - kfree(hvt); + + if (mode_old != HVUTIL_TRANSPORT_CHARDEV) + hvt_transport_free(hvt); } --- linux-4.4.0.orig/drivers/hv/hv_utils_transport.h +++ linux-4.4.0/drivers/hv/hv_utils_transport.h @@ -25,6 +25,7 @@ HVUTIL_TRANSPORT_INIT = 0, HVUTIL_TRANSPORT_NETLINK, HVUTIL_TRANSPORT_CHARDEV, + HVUTIL_TRANSPORT_DESTROY, }; struct hvutil_transport { @@ -38,7 +39,7 @@ u8 *outmsg; /* message to the userspace */ int outmsg_len; /* its length */ wait_queue_head_t outmsg_q; /* poll/read wait queue */ - struct mutex outmsg_lock; /* protects outmsg */ + struct mutex lock; /* protects struct members */ }; struct hvutil_transport *hvutil_transport_init(const char *name, --- linux-4.4.0.orig/drivers/hv/hyperv_vmbus.h +++ linux-4.4.0/drivers/hv/hyperv_vmbus.h @@ -31,6 +31,11 @@ #include /* + * Timeout for services such as KVP and fcopy. + */ +#define HV_UTIL_TIMEOUT 30 + +/* * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent * is set by CPUID(HVCPUID_VERSION_FEATURES). */ @@ -63,10 +68,6 @@ /* Define version of the synthetic interrupt controller. */ #define HV_SYNIC_VERSION (1) -/* Define synthetic interrupt controller message constants. */ -#define HV_MESSAGE_SIZE (256) -#define HV_MESSAGE_PAYLOAD_BYTE_COUNT (240) -#define HV_MESSAGE_PAYLOAD_QWORD_COUNT (30) #define HV_ANY_VP (0xFFFFFFFF) /* Define synthetic interrupt controller flag constants. */ @@ -74,48 +75,9 @@ #define HV_EVENT_FLAGS_BYTE_COUNT (256) #define HV_EVENT_FLAGS_DWORD_COUNT (256 / sizeof(u32)) -/* Define hypervisor message types. */ -enum hv_message_type { - HVMSG_NONE = 0x00000000, - - /* Memory access messages. */ - HVMSG_UNMAPPED_GPA = 0x80000000, - HVMSG_GPA_INTERCEPT = 0x80000001, - - /* Timer notification messages. */ - HVMSG_TIMER_EXPIRED = 0x80000010, - - /* Error messages. */ - HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020, - HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021, - HVMSG_UNSUPPORTED_FEATURE = 0x80000022, - - /* Trace buffer complete messages. */ - HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040, - - /* Platform-specific processor intercept messages. */ - HVMSG_X64_IOPORT_INTERCEPT = 0x80010000, - HVMSG_X64_MSR_INTERCEPT = 0x80010001, - HVMSG_X64_CPUID_INTERCEPT = 0x80010002, - HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003, - HVMSG_X64_APIC_EOI = 0x80010004, - HVMSG_X64_LEGACY_FP_ERROR = 0x80010005 -}; - -#define HV_SYNIC_STIMER_COUNT (4) - /* Define invalid partition identifier. */ #define HV_PARTITION_ID_INVALID ((u64)0x0) -/* Define port identifier type. */ -union hv_port_id { - u32 asu32; - struct { - u32 id:24; - u32 reserved:8; - } u ; -}; - /* Define port type. */ enum hv_port_type { HVPORT_MSG = 1, @@ -163,27 +125,6 @@ }; }; -/* Define synthetic interrupt controller message flags. */ -union hv_message_flags { - u8 asu8; - struct { - u8 msg_pending:1; - u8 reserved:7; - }; -}; - -/* Define synthetic interrupt controller message header. */ -struct hv_message_header { - enum hv_message_type message_type; - u8 payload_size; - union hv_message_flags message_flags; - u8 reserved[2]; - union { - u64 sender; - union hv_port_id port; - }; -}; - /* * Timer configuration register. */ @@ -200,31 +141,9 @@ }; }; - -/* Define timer message payload structure. */ -struct hv_timer_message_payload { - u32 timer_index; - u32 reserved; - u64 expiration_time; /* When the timer expired */ - u64 delivery_time; /* When the message was delivered */ -}; - -/* Define synthetic interrupt controller message format. */ -struct hv_message { - struct hv_message_header header; - union { - u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; - } u ; -}; - /* Define the number of message buffers associated with each port. */ #define HV_PORT_MESSAGE_BUFFER_COUNT (16) -/* Define the synthetic interrupt message page layout. */ -struct hv_message_page { - struct hv_message sint_message[HV_SYNIC_SINT_COUNT]; -}; - /* Define the synthetic interrupt controller event flags format. */ union hv_synic_event_flags { u8 flags8[HV_EVENT_FLAGS_BYTE_COUNT]; @@ -347,7 +266,7 @@ struct hv_input_post_message { union hv_connection_id connectionid; u32 reserved; - enum hv_message_type message_type; + u32 message_type; u32 payload_size; u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; }; @@ -582,7 +501,7 @@ enum hv_message_type message_type, void *payload, size_t payload_size); -extern u16 hv_signal_event(void *con_id); +extern int hv_signal_event(void *con_id); extern int hv_synic_alloc(void); @@ -614,14 +533,9 @@ struct kvec *kv_list, u32 kv_count, bool *signal); -int hv_ringbuffer_peek(struct hv_ring_buffer_info *ring_info, void *buffer, - u32 buflen); - -int hv_ringbuffer_read(struct hv_ring_buffer_info *ring_info, - void *buffer, - u32 buflen, - u32 offset, bool *signal); - +int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, + void *buffer, u32 buflen, u32 *buffer_actual_len, + u64 *requestid, bool *signal, bool raw); void hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info, struct hv_ring_buffer_debug_info *debug_info); @@ -678,7 +592,7 @@ /* List of channels */ struct list_head chn_list; - spinlock_t channel_lock; + struct mutex channel_mutex; struct workqueue_struct *work_queue; }; @@ -759,11 +673,7 @@ if (!channel) return; - if (channel->target_cpu != smp_processor_id()) - smp_call_function_single(channel->target_cpu, - cb, channel, true); - else - cb(channel); + smp_call_function_single(channel->target_cpu, cb, channel, true); } enum hvutil_device_state { --- linux-4.4.0.orig/drivers/hv/ring_buffer.c +++ linux-4.4.0/drivers/hv/ring_buffer.c @@ -112,9 +112,7 @@ u32 read_loc = rbi->ring_buffer->read_index; u32 pending_sz = rbi->ring_buffer->pending_send_sz; - /* - * If the other end is not blocked on write don't bother. - */ + /* If the other end is not blocked on write don't bother. */ if (pending_sz == 0) return false; @@ -128,12 +126,7 @@ return false; } -/* - * hv_get_next_write_location() - * - * Get the next write location for the specified ring buffer - * - */ +/* Get the next write location for the specified ring buffer. */ static inline u32 hv_get_next_write_location(struct hv_ring_buffer_info *ring_info) { @@ -142,12 +135,7 @@ return next; } -/* - * hv_set_next_write_location() - * - * Set the next write location for the specified ring buffer - * - */ +/* Set the next write location for the specified ring buffer. */ static inline void hv_set_next_write_location(struct hv_ring_buffer_info *ring_info, u32 next_write_location) @@ -155,11 +143,7 @@ ring_info->ring_buffer->write_index = next_write_location; } -/* - * hv_get_next_read_location() - * - * Get the next read location for the specified ring buffer - */ +/* Get the next read location for the specified ring buffer. */ static inline u32 hv_get_next_read_location(struct hv_ring_buffer_info *ring_info) { @@ -169,10 +153,8 @@ } /* - * hv_get_next_readlocation_withoffset() - * * Get the next read location + offset for the specified ring buffer. - * This allows the caller to skip + * This allows the caller to skip. */ static inline u32 hv_get_next_readlocation_withoffset(struct hv_ring_buffer_info *ring_info, @@ -186,13 +168,7 @@ return next; } -/* - * - * hv_set_next_read_location() - * - * Set the next read location for the specified ring buffer - * - */ +/* Set the next read location for the specified ring buffer. */ static inline void hv_set_next_read_location(struct hv_ring_buffer_info *ring_info, u32 next_read_location) @@ -201,12 +177,7 @@ } -/* - * - * hv_get_ring_buffer() - * - * Get the start of the ring buffer - */ +/* Get the start of the ring buffer. */ static inline void * hv_get_ring_buffer(struct hv_ring_buffer_info *ring_info) { @@ -214,25 +185,14 @@ } -/* - * - * hv_get_ring_buffersize() - * - * Get the size of the ring buffer - */ +/* Get the size of the ring buffer. */ static inline u32 hv_get_ring_buffersize(struct hv_ring_buffer_info *ring_info) { return ring_info->ring_datasize; } -/* - * - * hv_get_ring_bufferindices() - * - * Get the read and write indices as u64 of the specified ring buffer - * - */ +/* Get the read and write indices as u64 of the specified ring buffer. */ static inline u64 hv_get_ring_bufferindices(struct hv_ring_buffer_info *ring_info) { @@ -240,12 +200,8 @@ } /* - * - * hv_copyfrom_ringbuffer() - * * Helper routine to copy to source from ring buffer. * Assume there is enough room. Handles wrap-around in src case only!! - * */ static u32 hv_copyfrom_ringbuffer( struct hv_ring_buffer_info *ring_info, @@ -277,12 +233,8 @@ /* - * - * hv_copyto_ringbuffer() - * * Helper routine to copy from source to ring buffer. * Assume there is enough room. Handles wrap-around in dest case only!! - * */ static u32 hv_copyto_ringbuffer( struct hv_ring_buffer_info *ring_info, @@ -308,13 +260,7 @@ return start_write_offset; } -/* - * - * hv_ringbuffer_get_debuginfo() - * - * Get various debug metrics for the specified ring buffer - * - */ +/* Get various debug metrics for the specified ring buffer. */ void hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info, struct hv_ring_buffer_debug_info *debug_info) { @@ -337,13 +283,7 @@ } } -/* - * - * hv_ringbuffer_init() - * - *Initialize the ring buffer - * - */ +/* Initialize the ring buffer. */ int hv_ringbuffer_init(struct hv_ring_buffer_info *ring_info, void *buffer, u32 buflen) { @@ -356,9 +296,7 @@ ring_info->ring_buffer->read_index = ring_info->ring_buffer->write_index = 0; - /* - * Set the feature bit for enabling flow control. - */ + /* Set the feature bit for enabling flow control. */ ring_info->ring_buffer->feature_bits.value = 1; ring_info->ring_size = buflen; @@ -369,24 +307,12 @@ return 0; } -/* - * - * hv_ringbuffer_cleanup() - * - * Cleanup the ring buffer - * - */ +/* Cleanup the ring buffer. */ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info) { } -/* - * - * hv_ringbuffer_write() - * - * Write to the ring buffer - * - */ +/* Write to the ring buffer. */ int hv_ringbuffer_write(struct hv_ring_buffer_info *outring_info, struct kvec *kv_list, u32 kv_count, bool *signal) { @@ -411,10 +337,11 @@ &bytes_avail_toread, &bytes_avail_towrite); - - /* If there is only room for the packet, assume it is full. */ - /* Otherwise, the next time around, we think the ring buffer */ - /* is empty since the read index == write index */ + /* + * If there is only room for the packet, assume it is full. + * Otherwise, the next time around, we think the ring buffer + * is empty since the read index == write index. + */ if (bytes_avail_towrite <= totalbytes_towrite) { spin_unlock_irqrestore(&outring_info->ring_lock, flags); return -EAGAIN; @@ -453,80 +380,59 @@ return 0; } - -/* - * - * hv_ringbuffer_peek() - * - * Read without advancing the read index - * - */ -int hv_ringbuffer_peek(struct hv_ring_buffer_info *Inring_info, - void *Buffer, u32 buflen) -{ - u32 bytes_avail_towrite; - u32 bytes_avail_toread; - u32 next_read_location = 0; - unsigned long flags; - - spin_lock_irqsave(&Inring_info->ring_lock, flags); - - hv_get_ringbuffer_availbytes(Inring_info, - &bytes_avail_toread, - &bytes_avail_towrite); - - /* Make sure there is something to read */ - if (bytes_avail_toread < buflen) { - - spin_unlock_irqrestore(&Inring_info->ring_lock, flags); - - return -EAGAIN; - } - - /* Convert to byte offset */ - next_read_location = hv_get_next_read_location(Inring_info); - - next_read_location = hv_copyfrom_ringbuffer(Inring_info, - Buffer, - buflen, - next_read_location); - - spin_unlock_irqrestore(&Inring_info->ring_lock, flags); - - return 0; -} - - -/* - * - * hv_ringbuffer_read() - * - * Read and advance the read index - * - */ -int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, void *buffer, - u32 buflen, u32 offset, bool *signal) +int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info, + void *buffer, u32 buflen, u32 *buffer_actual_len, + u64 *requestid, bool *signal, bool raw) { u32 bytes_avail_towrite; u32 bytes_avail_toread; u32 next_read_location = 0; u64 prev_indices = 0; unsigned long flags; + struct vmpacket_descriptor desc; + u32 offset; + u32 packetlen; + int ret = 0; if (buflen <= 0) return -EINVAL; spin_lock_irqsave(&inring_info->ring_lock, flags); + *buffer_actual_len = 0; + *requestid = 0; + hv_get_ringbuffer_availbytes(inring_info, &bytes_avail_toread, &bytes_avail_towrite); /* Make sure there is something to read */ - if (bytes_avail_toread < buflen) { - spin_unlock_irqrestore(&inring_info->ring_lock, flags); + if (bytes_avail_toread < sizeof(desc)) { + /* + * No error is set when there is even no header, drivers are + * supposed to analyze buffer_actual_len. + */ + goto out_unlock; + } - return -EAGAIN; + next_read_location = hv_get_next_read_location(inring_info); + next_read_location = hv_copyfrom_ringbuffer(inring_info, &desc, + sizeof(desc), + next_read_location); + + offset = raw ? 0 : (desc.offset8 << 3); + packetlen = (desc.len8 << 3) - offset; + *buffer_actual_len = packetlen; + *requestid = desc.trans_id; + + if (bytes_avail_toread < packetlen + offset) { + ret = -EAGAIN; + goto out_unlock; + } + + if (packetlen > buflen) { + ret = -ENOBUFS; + goto out_unlock; } next_read_location = @@ -534,7 +440,7 @@ next_read_location = hv_copyfrom_ringbuffer(inring_info, buffer, - buflen, + packetlen, next_read_location); next_read_location = hv_copyfrom_ringbuffer(inring_info, @@ -542,17 +448,19 @@ sizeof(u64), next_read_location); - /* Make sure all reads are done before we update the read index since */ - /* the writer may start writing to the read area once the read index */ - /*is updated */ + /* + * Make sure all reads are done before we update the read index since + * the writer may start writing to the read area once the read index + * is updated. + */ mb(); /* Update the read index */ hv_set_next_read_location(inring_info, next_read_location); - spin_unlock_irqrestore(&inring_info->ring_lock, flags); - *signal = hv_need_to_signal_on_read(bytes_avail_towrite, inring_info); - return 0; +out_unlock: + spin_unlock_irqrestore(&inring_info->ring_lock, flags); + return ret; } --- linux-4.4.0.orig/drivers/hv/vmbus_drv.c +++ linux-4.4.0/drivers/hv/vmbus_drv.c @@ -47,7 +47,6 @@ static struct tasklet_struct msg_dpc; static struct completion probe_event; -static int irq; static void hyperv_report_panic(struct pt_regs *regs) @@ -531,9 +530,9 @@ static const uuid_le null_guid; -static inline bool is_null_guid(const __u8 *guid) +static inline bool is_null_guid(const uuid_le *guid) { - if (memcmp(guid, &null_guid, sizeof(uuid_le))) + if (uuid_le_cmp(*guid, null_guid)) return false; return true; } @@ -544,10 +543,10 @@ */ static const struct hv_vmbus_device_id *hv_vmbus_get_id( const struct hv_vmbus_device_id *id, - const __u8 *guid) + const uuid_le *guid) { - for (; !is_null_guid(id->guid); id++) - if (!memcmp(&id->guid, guid, sizeof(uuid_le))) + for (; !is_null_guid(&id->guid); id++) + if (!uuid_le_cmp(id->guid, *guid)) return id; return NULL; @@ -563,7 +562,7 @@ struct hv_driver *drv = drv_to_hv_drv(driver); struct hv_device *hv_dev = device_to_hv_device(device); - if (hv_vmbus_get_id(drv->id_table, hv_dev->dev_type.b)) + if (hv_vmbus_get_id(drv->id_table, &hv_dev->dev_type)) return 1; return 0; @@ -580,7 +579,7 @@ struct hv_device *dev = device_to_hv_device(child_device); const struct hv_vmbus_device_id *dev_id; - dev_id = hv_vmbus_get_id(drv->id_table, dev->dev_type.b); + dev_id = hv_vmbus_get_id(drv->id_table, &dev->dev_type); if (drv->probe) { ret = drv->probe(dev, dev_id); if (ret != 0) @@ -602,23 +601,11 @@ { struct hv_driver *drv; struct hv_device *dev = device_to_hv_device(child_device); - u32 relid = dev->channel->offermsg.child_relid; if (child_device->driver) { drv = drv_to_hv_drv(child_device->driver); if (drv->remove) drv->remove(dev); - else { - hv_process_channel_removal(dev->channel, relid); - pr_err("remove not set for driver %s\n", - dev_name(child_device)); - } - } else { - /* - * We don't have a driver for this device; deal with the - * rescind message by removing the channel. - */ - hv_process_channel_removal(dev->channel, relid); } return 0; @@ -653,7 +640,10 @@ static void vmbus_device_release(struct device *device) { struct hv_device *hv_dev = device_to_hv_device(device); + struct vmbus_channel *channel = hv_dev->channel; + hv_process_channel_removal(channel, + channel->offermsg.child_relid); kfree(hv_dev); } @@ -835,10 +825,9 @@ * Here, we * - initialize the vmbus driver context * - invoke the vmbus hv main init routine - * - get the irq resource * - retrieve the channel offers */ -static int vmbus_bus_init(int irq) +static int vmbus_bus_init(void) { int ret; @@ -867,7 +856,7 @@ on_each_cpu(hv_synic_init, NULL, 1); ret = vmbus_connect(); if (ret) - goto err_alloc; + goto err_connect; if (vmbus_proto_version > VERSION_WIN7) cpu_hotplug_disable(); @@ -885,6 +874,8 @@ return 0; +err_connect: + on_each_cpu(hv_synic_cleanup, NULL, 1); err_alloc: hv_synic_free(); hv_remove_vmbus_irq(); @@ -1031,9 +1022,6 @@ struct resource **prev_res = NULL; switch (res->type) { - case ACPI_RESOURCE_TYPE_IRQ: - irq = res->data.irq.interrupts[0]; - return AE_OK; /* * "Address" descriptors are for bus windows. Ignore @@ -1075,12 +1063,28 @@ new_res->start = start; new_res->end = end; + /* + * Stick ranges from higher in address space at the front of the list. + * If two ranges are adjacent, merge them. + */ do { if (!*old_res) { *old_res = new_res; break; } + if (((*old_res)->end + 1) == new_res->start) { + (*old_res)->end = new_res->end; + kfree(new_res); + break; + } + + if ((*old_res)->start == new_res->end + 1) { + (*old_res)->start = new_res->start; + kfree(new_res); + break; + } + if ((*old_res)->end < new_res->start) { new_res->sibling = *old_res; if (prev_res) @@ -1191,6 +1195,23 @@ } EXPORT_SYMBOL_GPL(vmbus_allocate_mmio); +/** + * vmbus_cpu_number_to_vp_number() - Map CPU to VP. + * @cpu_number: CPU number in Linux terms + * + * This function returns the mapping between the Linux processor + * number and the hypervisor's virtual processor number, useful + * in making hypercalls and such that talk about specific + * processors. + * + * Return: Virtual processor number in Hyper-V terms + */ +int vmbus_cpu_number_to_vp_number(int cpu_number) +{ + return hv_context.vp_index[cpu_number]; +} +EXPORT_SYMBOL_GPL(vmbus_cpu_number_to_vp_number); + static int vmbus_acpi_add(struct acpi_device *device) { acpi_status result; @@ -1275,7 +1296,7 @@ init_completion(&probe_event); /* - * Get irq resources first. + * Get ACPI resources first. */ ret = acpi_bus_register_driver(&vmbus_acpi_driver); @@ -1288,12 +1309,7 @@ goto cleanup; } - if (irq <= 0) { - ret = -ENODEV; - goto cleanup; - } - - ret = vmbus_bus_init(irq); + ret = vmbus_bus_init(); if (ret) goto cleanup; --- linux-4.4.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-4.4.0/drivers/i2c/busses/i2c-designware-core.c @@ -271,6 +271,17 @@ enable ? "en" : "dis"); } +static unsigned long i2c_dw_clk_rate(struct dw_i2c_dev *dev) +{ + /* + * Clock is not necessary if we got LCNT/HCNT values directly from + * the platform code. + */ + if (WARN_ON_ONCE(!dev->get_clk_rate_khz)) + return 0; + return dev->get_clk_rate_khz(dev); +} + /** * i2c_dw_init() - initialize the designware i2c master hardware * @dev: device private data @@ -281,7 +292,6 @@ */ int i2c_dw_init(struct dw_i2c_dev *dev) { - u32 input_clock_khz; u32 hcnt, lcnt; u32 reg; u32 sda_falling_time, scl_falling_time; @@ -295,8 +305,6 @@ } } - input_clock_khz = dev->get_clk_rate_khz(dev); - reg = dw_readl(dev, DW_IC_COMP_TYPE); if (reg == ___constant_swab32(DW_IC_COMP_TYPE_VALUE)) { /* Configure register endianess access */ @@ -325,12 +333,12 @@ hcnt = dev->ss_hcnt; lcnt = dev->ss_lcnt; } else { - hcnt = i2c_dw_scl_hcnt(input_clock_khz, + hcnt = i2c_dw_scl_hcnt(i2c_dw_clk_rate(dev), 4000, /* tHD;STA = tHIGH = 4.0 us */ sda_falling_time, 0, /* 0: DW default, 1: Ideal */ 0); /* No offset */ - lcnt = i2c_dw_scl_lcnt(input_clock_khz, + lcnt = i2c_dw_scl_lcnt(i2c_dw_clk_rate(dev), 4700, /* tLOW = 4.7 us */ scl_falling_time, 0); /* No offset */ @@ -344,12 +352,12 @@ hcnt = dev->fs_hcnt; lcnt = dev->fs_lcnt; } else { - hcnt = i2c_dw_scl_hcnt(input_clock_khz, + hcnt = i2c_dw_scl_hcnt(i2c_dw_clk_rate(dev), 600, /* tHD;STA = tHIGH = 0.6 us */ sda_falling_time, 0, /* 0: DW default, 1: Ideal */ 0); /* No offset */ - lcnt = i2c_dw_scl_lcnt(input_clock_khz, + lcnt = i2c_dw_scl_lcnt(i2c_dw_clk_rate(dev), 1300, /* tLOW = 1.3 us */ scl_falling_time, 0); /* No offset */ --- linux-4.4.0.orig/drivers/i2c/busses/i2c-designware-platdrv.c +++ linux-4.4.0/drivers/i2c/busses/i2c-designware-platdrv.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -132,12 +133,24 @@ } #endif +static int i2c_dw_plat_prepare_clk(struct dw_i2c_dev *i_dev, bool prepare) +{ + if (IS_ERR(i_dev->clk)) + return PTR_ERR(i_dev->clk); + + if (prepare) + return clk_prepare_enable(i_dev->clk); + + clk_disable_unprepare(i_dev->clk); + return 0; +} + static int dw_i2c_plat_probe(struct platform_device *pdev) { + struct dw_i2c_platform_data *pdata = dev_get_platdata(&pdev->dev); struct dw_i2c_dev *dev; struct i2c_adapter *adap; struct resource *mem; - struct dw_i2c_platform_data *pdata; int irq, r; u32 clk_freq, ht = 0; @@ -161,33 +174,28 @@ /* fast mode by default because of legacy reasons */ clk_freq = 400000; - if (has_acpi_companion(&pdev->dev)) { - dw_i2c_acpi_configure(pdev); - } else if (pdev->dev.of_node) { - of_property_read_u32(pdev->dev.of_node, - "i2c-sda-hold-time-ns", &ht); - - of_property_read_u32(pdev->dev.of_node, - "i2c-sda-falling-time-ns", - &dev->sda_falling_time); - of_property_read_u32(pdev->dev.of_node, - "i2c-scl-falling-time-ns", - &dev->scl_falling_time); - - of_property_read_u32(pdev->dev.of_node, "clock-frequency", - &clk_freq); - - /* Only standard mode at 100kHz and fast mode at 400kHz - * are supported. - */ - if (clk_freq != 100000 && clk_freq != 400000) { - dev_err(&pdev->dev, "Only 100kHz and 400kHz supported"); - return -EINVAL; - } + if (pdata) { + clk_freq = pdata->i2c_scl_freq; } else { - pdata = dev_get_platdata(&pdev->dev); - if (pdata) - clk_freq = pdata->i2c_scl_freq; + device_property_read_u32(&pdev->dev, "i2c-sda-hold-time-ns", + &ht); + device_property_read_u32(&pdev->dev, "i2c-sda-falling-time-ns", + &dev->sda_falling_time); + device_property_read_u32(&pdev->dev, "i2c-scl-falling-time-ns", + &dev->scl_falling_time); + device_property_read_u32(&pdev->dev, "clock-frequency", + &clk_freq); + } + + if (has_acpi_companion(&pdev->dev)) + dw_i2c_acpi_configure(pdev); + + /* + * Only standard mode at 100kHz and fast mode at 400kHz are supported. + */ + if (clk_freq != 100000 && clk_freq != 400000) { + dev_err(&pdev->dev, "Only 100kHz and 400kHz supported"); + return -EINVAL; } r = i2c_dw_eval_lock_support(dev); @@ -209,16 +217,13 @@ DW_IC_CON_RESTART_EN | DW_IC_CON_SPEED_FAST; dev->clk = devm_clk_get(&pdev->dev, NULL); - dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz; - if (IS_ERR(dev->clk)) - return PTR_ERR(dev->clk); - clk_prepare_enable(dev->clk); + if (!i2c_dw_plat_prepare_clk(dev, true)) { + dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz; - if (!dev->sda_hold_time && ht) { - u32 ic_clk = dev->get_clk_rate_khz(dev); - - dev->sda_hold_time = div_u64((u64)ic_clk * ht + 500000, - 1000000); + if (!dev->sda_hold_time && ht) + dev->sda_hold_time = div_u64( + (u64)dev->get_clk_rate_khz(dev) * ht + 500000, + 1000000); } if (!dev->tx_fifo_depth) { @@ -300,7 +305,7 @@ struct dw_i2c_dev *i_dev = platform_get_drvdata(pdev); i2c_dw_disable(i_dev); - clk_disable_unprepare(i_dev->clk); + i2c_dw_plat_prepare_clk(i_dev, false); return 0; } @@ -310,7 +315,7 @@ struct platform_device *pdev = to_platform_device(dev); struct dw_i2c_dev *i_dev = platform_get_drvdata(pdev); - clk_prepare_enable(i_dev->clk); + i2c_dw_plat_prepare_clk(i_dev, true); if (!i_dev->pm_runtime_disabled) i2c_dw_init(i_dev); --- linux-4.4.0.orig/drivers/infiniband/hw/mlx5/cq.c +++ linux-4.4.0/drivers/infiniband/hw/mlx5/cq.c @@ -756,7 +756,7 @@ int uninitialized_var(index); int uninitialized_var(inlen); int cqe_size; - int irqn; + unsigned int irqn; int eqn; int err; --- linux-4.4.0.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ linux-4.4.0/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -245,8 +245,6 @@ skb_reset_mac_header(skb); skb_pull(skb, IPOIB_ENCAP_LEN); - skb->truesize = SKB_TRUESIZE(skb->len); - ++dev->stats.rx_packets; dev->stats.rx_bytes += skb->len; --- linux-4.4.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-4.4.0/drivers/input/mouse/cypress_ps2.c @@ -390,7 +390,9 @@ if (ret < 0) return ret; +#if ( CYPRESS_SIMULATED_MT != 1 ) __set_bit(INPUT_PROP_SEMI_MT, input->propbit); +#endif input_abs_set_res(input, ABS_X, cytp->tp_res_x); input_abs_set_res(input, ABS_Y, cytp->tp_res_y); @@ -478,6 +480,22 @@ ((packet[5] & 0x0f) << 8) | packet[7]; if (cytp->mode & CYTP_BIT_ABS_PRESSURE) report_data->contacts[1].z = report_data->contacts[0].z; +#if ( CYPRESS_SIMULATED_MT == 1 ) + /* simulate contact positions for >2 fingers */ + if ( report_data->contact_cnt >= 3 ) { + int i; + for ( i=1; icontact_cnt; i++ ) { + report_data->contacts[i].x = + report_data->contacts[0].x + + 100*(i)*((i%2)?-1:1); + report_data->contacts[i].y = + report_data->contacts[0].y; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[i].z = + report_data->contacts[0].z; + } + } +#endif } report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; --- linux-4.4.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-4.4.0/drivers/input/mouse/cypress_ps2.h @@ -130,7 +130,18 @@ #define RESP_REMOTE_BIT 0x40 #define RESP_SMBUS_BIT 0x80 -#define CYTP_MAX_MT_SLOTS 2 +/* + * CYPRESS_SIMULATED_MT + * set to 1 for simulated multitouch (up to 5 contact points) + * set to 0 for SEMI_MT (only 2 corner points, and count of fingers) + */ +#define CYPRESS_SIMULATED_MT 1 + +#if ( CYPRESS_SIMULATED_MT == 1 ) +# define CYTP_MAX_MT_SLOTS 5 +#else +# define CYTP_MAX_MT_SLOTS 2 +#endif struct cytp_contact { int x; --- linux-4.4.0.orig/drivers/input/mouse/synaptics.c +++ linux-4.4.0/drivers/input/mouse/synaptics.c @@ -1250,7 +1250,9 @@ /* Clickpads report only left button */ __clear_bit(BTN_RIGHT, dev->keybit); __clear_bit(BTN_MIDDLE, dev->keybit); - } + } else if (SYN_CAP_CLICKPAD2BTN(priv->ext_cap_0c) || + SYN_CAP_CLICKPAD2BTN2(priv->ext_cap_0c)) + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); } static ssize_t synaptics_show_disable_gesture(struct psmouse *psmouse, --- linux-4.4.0.orig/drivers/input/mouse/synaptics.h +++ linux-4.4.0/drivers/input/mouse/synaptics.h @@ -85,6 +85,7 @@ */ #define SYN_CAP_CLICKPAD(ex0c) ((ex0c) & 0x100000) /* 1-button ClickPad */ #define SYN_CAP_CLICKPAD2BTN(ex0c) ((ex0c) & 0x000100) /* 2-button ClickPad */ +#define SYN_CAP_CLICKPAD2BTN2(ex0c) ((ex0c) & 0x200000) /* 2-button ClickPad */ #define SYN_CAP_MAX_DIMENSIONS(ex0c) ((ex0c) & 0x020000) #define SYN_CAP_MIN_DIMENSIONS(ex0c) ((ex0c) & 0x002000) #define SYN_CAP_ADV_GESTURE(ex0c) ((ex0c) & 0x080000) --- linux-4.4.0.orig/drivers/input/serio/hyperv-keyboard.c +++ linux-4.4.0/drivers/input/serio/hyperv-keyboard.c @@ -412,16 +412,6 @@ return 0; } -/* - * Keyboard GUID - * {f912ad6d-2b17-48ea-bd65-f927a61c7684} - */ -#define HV_KBD_GUID \ - .guid = { \ - 0x6d, 0xad, 0x12, 0xf9, 0x17, 0x2b, 0xea, 0x48, \ - 0xbd, 0x65, 0xf9, 0x27, 0xa6, 0x1c, 0x76, 0x84 \ - } - static const struct hv_vmbus_device_id id_table[] = { /* Keyboard guid */ { HV_KBD_GUID, }, --- linux-4.4.0.orig/drivers/input/touchscreen/wacom_w8001.c +++ linux-4.4.0/drivers/input/touchscreen/wacom_w8001.c @@ -80,7 +80,8 @@ */ struct w8001 { - struct input_dev *dev; + struct input_dev *pen_dev; + struct input_dev *touch_dev; struct serio *serio; struct completion cmd_done; int id; @@ -95,7 +96,10 @@ u16 max_touch_y; u16 max_pen_x; u16 max_pen_y; - char name[64]; + char pen_name[64]; + char touch_name[64]; + int open_count; + struct mutex mutex; }; static void parse_pen_data(u8 *data, struct w8001_coord *coord) @@ -141,7 +145,7 @@ static void parse_multi_touch(struct w8001 *w8001) { - struct input_dev *dev = w8001->dev; + struct input_dev *dev = w8001->touch_dev; unsigned char *data = w8001->data; unsigned int x, y; int i; @@ -151,7 +155,6 @@ bool touch = data[0] & (1 << i); input_mt_slot(dev, i); - input_mt_report_slot_state(dev, MT_TOOL_FINGER, touch); if (touch) { x = (data[6 * i + 1] << 7) | data[6 * i + 2]; y = (data[6 * i + 3] << 7) | data[6 * i + 4]; @@ -207,7 +210,7 @@ static void report_pen_events(struct w8001 *w8001, struct w8001_coord *coord) { - struct input_dev *dev = w8001->dev; + struct input_dev *dev = w8001->pen_dev; /* * We have 1 bit for proximity (rdy) and 3 bits for tip, side, @@ -233,11 +236,6 @@ break; case BTN_TOOL_FINGER: - input_report_key(dev, BTN_TOUCH, 0); - input_report_key(dev, BTN_TOOL_FINGER, 0); - input_sync(dev); - /* fall through */ - case KEY_RESERVED: w8001->type = coord->f2 ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; break; @@ -261,7 +259,7 @@ static void report_single_touch(struct w8001 *w8001, struct w8001_coord *coord) { - struct input_dev *dev = w8001->dev; + struct input_dev *dev = w8001->touch_dev; unsigned int x = coord->x; unsigned int y = coord->y; @@ -271,7 +269,6 @@ input_report_abs(dev, ABS_X, x); input_report_abs(dev, ABS_Y, y); input_report_key(dev, BTN_TOUCH, coord->tsw); - input_report_key(dev, BTN_TOOL_FINGER, coord->tsw); input_sync(dev); @@ -369,22 +366,36 @@ static int w8001_open(struct input_dev *dev) { struct w8001 *w8001 = input_get_drvdata(dev); + int err; + + err = mutex_lock_interruptible(&w8001->mutex); + if (err) + return err; - return w8001_command(w8001, W8001_CMD_START, false); + if (w8001->open_count++ == 0) { + err = w8001_command(w8001, W8001_CMD_START, false); + if (err) + w8001->open_count--; + } + + mutex_unlock(&w8001->mutex); + return err; } static void w8001_close(struct input_dev *dev) { struct w8001 *w8001 = input_get_drvdata(dev); - w8001_command(w8001, W8001_CMD_STOP, false); + mutex_lock(&w8001->mutex); + + if (--w8001->open_count == 0) + w8001_command(w8001, W8001_CMD_STOP, false); + + mutex_unlock(&w8001->mutex); } -static int w8001_setup(struct w8001 *w8001) +static int w8001_detect(struct w8001 *w8001) { - struct input_dev *dev = w8001->dev; - struct w8001_coord coord; - struct w8001_touch_query touch; int error; error = w8001_command(w8001, W8001_CMD_STOP, false); @@ -393,105 +404,145 @@ msleep(250); /* wait 250ms before querying the device */ - dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); - strlcat(w8001->name, "Wacom Serial", sizeof(w8001->name)); + return 0; +} - __set_bit(INPUT_PROP_DIRECT, dev->propbit); +static int w8001_setup_pen(struct w8001 *w8001, char *basename, + size_t basename_sz) +{ + struct input_dev *dev = w8001->pen_dev; + struct w8001_coord coord; + int error; /* penabled? */ error = w8001_command(w8001, W8001_CMD_QUERY, true); - if (!error) { - __set_bit(BTN_TOUCH, dev->keybit); - __set_bit(BTN_TOOL_PEN, dev->keybit); - __set_bit(BTN_TOOL_RUBBER, dev->keybit); - __set_bit(BTN_STYLUS, dev->keybit); - __set_bit(BTN_STYLUS2, dev->keybit); - - parse_pen_data(w8001->response, &coord); - w8001->max_pen_x = coord.x; - w8001->max_pen_y = coord.y; - - input_set_abs_params(dev, ABS_X, 0, coord.x, 0, 0); - input_set_abs_params(dev, ABS_Y, 0, coord.y, 0, 0); - input_abs_set_res(dev, ABS_X, W8001_PEN_RESOLUTION); - input_abs_set_res(dev, ABS_Y, W8001_PEN_RESOLUTION); - input_set_abs_params(dev, ABS_PRESSURE, 0, coord.pen_pressure, 0, 0); - if (coord.tilt_x && coord.tilt_y) { - input_set_abs_params(dev, ABS_TILT_X, 0, coord.tilt_x, 0, 0); - input_set_abs_params(dev, ABS_TILT_Y, 0, coord.tilt_y, 0, 0); - } - w8001->id = 0x90; - strlcat(w8001->name, " Penabled", sizeof(w8001->name)); + if (error) + return error; + + __set_bit(EV_KEY, dev->evbit); + __set_bit(EV_ABS, dev->evbit); + __set_bit(BTN_TOUCH, dev->keybit); + __set_bit(BTN_TOOL_PEN, dev->keybit); + __set_bit(BTN_TOOL_RUBBER, dev->keybit); + __set_bit(BTN_STYLUS, dev->keybit); + __set_bit(BTN_STYLUS2, dev->keybit); + __set_bit(INPUT_PROP_DIRECT, dev->propbit); + + parse_pen_data(w8001->response, &coord); + w8001->max_pen_x = coord.x; + w8001->max_pen_y = coord.y; + + input_set_abs_params(dev, ABS_X, 0, coord.x, 0, 0); + input_set_abs_params(dev, ABS_Y, 0, coord.y, 0, 0); + input_abs_set_res(dev, ABS_X, W8001_PEN_RESOLUTION); + input_abs_set_res(dev, ABS_Y, W8001_PEN_RESOLUTION); + input_set_abs_params(dev, ABS_PRESSURE, 0, coord.pen_pressure, 0, 0); + if (coord.tilt_x && coord.tilt_y) { + input_set_abs_params(dev, ABS_TILT_X, 0, coord.tilt_x, 0, 0); + input_set_abs_params(dev, ABS_TILT_Y, 0, coord.tilt_y, 0, 0); } + w8001->id = 0x90; + strlcat(basename, " Penabled", basename_sz); + + return 0; +} + +static int w8001_setup_touch(struct w8001 *w8001, char *basename, + size_t basename_sz) +{ + struct input_dev *dev = w8001->touch_dev; + struct w8001_touch_query touch; + int error; + + /* Touch enabled? */ error = w8001_command(w8001, W8001_CMD_TOUCHQUERY, true); - + if (error) + return error; /* * Some non-touch devices may reply to the touch query. But their * second byte is empty, which indicates touch is not supported. */ - if (!error && w8001->response[1]) { - __set_bit(BTN_TOUCH, dev->keybit); - __set_bit(BTN_TOOL_FINGER, dev->keybit); - - parse_touchquery(w8001->response, &touch); - w8001->max_touch_x = touch.x; - w8001->max_touch_y = touch.y; - - if (w8001->max_pen_x && w8001->max_pen_y) { - /* if pen is supported scale to pen maximum */ - touch.x = w8001->max_pen_x; - touch.y = w8001->max_pen_y; - touch.panel_res = W8001_PEN_RESOLUTION; - } + if (!w8001->response[1]) + return -ENXIO; - input_set_abs_params(dev, ABS_X, 0, touch.x, 0, 0); - input_set_abs_params(dev, ABS_Y, 0, touch.y, 0, 0); - input_abs_set_res(dev, ABS_X, touch.panel_res); - input_abs_set_res(dev, ABS_Y, touch.panel_res); - - switch (touch.sensor_id) { - case 0: - case 2: - w8001->pktlen = W8001_PKTLEN_TOUCH93; - w8001->id = 0x93; - strlcat(w8001->name, " 1FG", sizeof(w8001->name)); - break; + __set_bit(EV_KEY, dev->evbit); + __set_bit(EV_ABS, dev->evbit); + __set_bit(BTN_TOUCH, dev->keybit); + __set_bit(INPUT_PROP_DIRECT, dev->propbit); - case 1: - case 3: - case 4: - w8001->pktlen = W8001_PKTLEN_TOUCH9A; - strlcat(w8001->name, " 1FG", sizeof(w8001->name)); - w8001->id = 0x9a; - break; + parse_touchquery(w8001->response, &touch); + w8001->max_touch_x = touch.x; + w8001->max_touch_y = touch.y; + + if (w8001->max_pen_x && w8001->max_pen_y) { + /* if pen is supported scale to pen maximum */ + touch.x = w8001->max_pen_x; + touch.y = w8001->max_pen_y; + touch.panel_res = W8001_PEN_RESOLUTION; + } - case 5: - w8001->pktlen = W8001_PKTLEN_TOUCH2FG; + input_set_abs_params(dev, ABS_X, 0, touch.x, 0, 0); + input_set_abs_params(dev, ABS_Y, 0, touch.y, 0, 0); + input_abs_set_res(dev, ABS_X, touch.panel_res); + input_abs_set_res(dev, ABS_Y, touch.panel_res); - input_mt_init_slots(dev, 2, 0); - input_set_abs_params(dev, ABS_MT_POSITION_X, - 0, touch.x, 0, 0); - input_set_abs_params(dev, ABS_MT_POSITION_Y, - 0, touch.y, 0, 0); - input_set_abs_params(dev, ABS_MT_TOOL_TYPE, - 0, MT_TOOL_MAX, 0, 0); - - strlcat(w8001->name, " 2FG", sizeof(w8001->name)); - if (w8001->max_pen_x && w8001->max_pen_y) - w8001->id = 0xE3; - else - w8001->id = 0xE2; - break; - } + switch (touch.sensor_id) { + case 0: + case 2: + w8001->pktlen = W8001_PKTLEN_TOUCH93; + w8001->id = 0x93; + strlcat(basename, " 1FG", basename_sz); + break; + + case 1: + case 3: + case 4: + w8001->pktlen = W8001_PKTLEN_TOUCH9A; + strlcat(basename, " 1FG", basename_sz); + w8001->id = 0x9a; + break; + + case 5: + w8001->pktlen = W8001_PKTLEN_TOUCH2FG; + + __set_bit(BTN_TOOL_DOUBLETAP, dev->keybit); + input_mt_init_slots(dev, 2, 0); + input_set_abs_params(dev, ABS_MT_POSITION_X, + 0, touch.x, 0, 0); + input_set_abs_params(dev, ABS_MT_POSITION_Y, + 0, touch.y, 0, 0); + + strlcat(basename, " 2FG", basename_sz); + if (w8001->max_pen_x && w8001->max_pen_y) + w8001->id = 0xE3; + else + w8001->id = 0xE2; + break; } - strlcat(w8001->name, " Touchscreen", sizeof(w8001->name)); + strlcat(basename, " Touchscreen", basename_sz); return 0; } +static void w8001_set_devdata(struct input_dev *dev, struct w8001 *w8001, + struct serio *serio) +{ + dev->phys = w8001->phys; + dev->id.bustype = BUS_RS232; + dev->id.product = w8001->id; + dev->id.vendor = 0x056a; + dev->id.version = 0x0100; + dev->open = w8001_open; + dev->close = w8001_close; + + dev->dev.parent = &serio->dev; + + input_set_drvdata(dev, w8001); +} + /* * w8001_disconnect() is the opposite of w8001_connect() */ @@ -502,7 +553,10 @@ serio_close(serio); - input_unregister_device(w8001->dev); + if (w8001->pen_dev) + input_unregister_device(w8001->pen_dev); + if (w8001->touch_dev) + input_unregister_device(w8001->touch_dev); kfree(w8001); serio_set_drvdata(serio, NULL); @@ -517,18 +571,23 @@ static int w8001_connect(struct serio *serio, struct serio_driver *drv) { struct w8001 *w8001; - struct input_dev *input_dev; - int err; + struct input_dev *input_dev_pen; + struct input_dev *input_dev_touch; + char basename[64]; + int err, err_pen, err_touch; w8001 = kzalloc(sizeof(struct w8001), GFP_KERNEL); - input_dev = input_allocate_device(); - if (!w8001 || !input_dev) { + input_dev_pen = input_allocate_device(); + input_dev_touch = input_allocate_device(); + if (!w8001 || !input_dev_pen || !input_dev_touch) { err = -ENOMEM; goto fail1; } w8001->serio = serio; - w8001->dev = input_dev; + w8001->pen_dev = input_dev_pen; + w8001->touch_dev = input_dev_touch; + mutex_init(&w8001->mutex); init_completion(&w8001->cmd_done); snprintf(w8001->phys, sizeof(w8001->phys), "%s/input0", serio->phys); @@ -537,35 +596,67 @@ if (err) goto fail2; - err = w8001_setup(w8001); + err = w8001_detect(w8001); if (err) goto fail3; - input_dev->name = w8001->name; - input_dev->phys = w8001->phys; - input_dev->id.product = w8001->id; - input_dev->id.bustype = BUS_RS232; - input_dev->id.vendor = 0x056a; - input_dev->id.version = 0x0100; - input_dev->dev.parent = &serio->dev; + /* For backwards-compatibility we compose the basename based on + * capabilities and then just append the tool type + */ + strlcpy(basename, "Wacom Serial", sizeof(basename)); - input_dev->open = w8001_open; - input_dev->close = w8001_close; + err_pen = w8001_setup_pen(w8001, basename, sizeof(basename)); + err_touch = w8001_setup_touch(w8001, basename, sizeof(basename)); + if (err_pen && err_touch) { + err = -ENXIO; + goto fail3; + } - input_set_drvdata(input_dev, w8001); + if (!err_pen) { + strlcpy(w8001->pen_name, basename, sizeof(w8001->pen_name)); + strlcat(w8001->pen_name, " Pen", sizeof(w8001->pen_name)); + input_dev_pen->name = w8001->pen_name; + + w8001_set_devdata(input_dev_pen, w8001, serio); + + err = input_register_device(w8001->pen_dev); + if (err) + goto fail3; + } else { + input_free_device(input_dev_pen); + input_dev_pen = NULL; + w8001->pen_dev = NULL; + } - err = input_register_device(w8001->dev); - if (err) - goto fail3; + if (!err_touch) { + strlcpy(w8001->touch_name, basename, sizeof(w8001->touch_name)); + strlcat(w8001->touch_name, " Finger", + sizeof(w8001->touch_name)); + input_dev_touch->name = w8001->touch_name; + + w8001_set_devdata(input_dev_touch, w8001, serio); + + err = input_register_device(w8001->touch_dev); + if (err) + goto fail4; + } else { + input_free_device(input_dev_touch); + input_dev_touch = NULL; + w8001->touch_dev = NULL; + } return 0; +fail4: + if (w8001->pen_dev) + input_unregister_device(w8001->pen_dev); fail3: serio_close(serio); fail2: serio_set_drvdata(serio, NULL); fail1: - input_free_device(input_dev); + input_free_device(input_dev_pen); + input_free_device(input_dev_touch); kfree(w8001); return err; } --- linux-4.4.0.orig/drivers/irqchip/irq-gic-v2m.c +++ linux-4.4.0/drivers/irqchip/irq-gic-v2m.c @@ -15,9 +15,11 @@ #define pr_fmt(fmt) "GICv2m: " fmt +#include #include #include #include +#include #include #include #include @@ -55,7 +57,7 @@ struct v2m_data { struct list_head entry; - struct device_node *node; + struct fwnode_handle *fwnode; struct resource res; /* GICv2m resource */ void __iomem *base; /* GICv2m virt address */ u32 spi_start; /* The SPI number that MSIs start */ @@ -138,6 +140,11 @@ fwspec.param[0] = 0; fwspec.param[1] = hwirq - 32; fwspec.param[2] = IRQ_TYPE_EDGE_RISING; + } else if (is_fwnode_irqchip(domain->parent->fwnode)) { + fwspec.fwnode = domain->parent->fwnode; + fwspec.param_count = 2; + fwspec.param[0] = hwirq; + fwspec.param[1] = IRQ_TYPE_EDGE_RISING; } else { return -EINVAL; } @@ -254,7 +261,9 @@ list_del(&v2m->entry); kfree(v2m->bm); iounmap(v2m->base); - of_node_put(v2m->node); + of_node_put(to_of_node(v2m->fwnode)); + if (is_fwnode_irqchip(v2m->fwnode)) + irq_domain_free_fwnode(v2m->fwnode); kfree(v2m); } } @@ -268,7 +277,7 @@ if (!v2m) return 0; - inner_domain = irq_domain_create_tree(of_node_to_fwnode(v2m->node), + inner_domain = irq_domain_create_tree(v2m->fwnode, &gicv2m_domain_ops, v2m); if (!inner_domain) { pr_err("Failed to create GICv2m domain\n"); @@ -277,10 +286,10 @@ inner_domain->bus_token = DOMAIN_BUS_NEXUS; inner_domain->parent = parent; - pci_domain = pci_msi_create_irq_domain(of_node_to_fwnode(v2m->node), + pci_domain = pci_msi_create_irq_domain(v2m->fwnode, &gicv2m_msi_domain_info, inner_domain); - plat_domain = platform_msi_create_irq_domain(of_node_to_fwnode(v2m->node), + plat_domain = platform_msi_create_irq_domain(v2m->fwnode, &gicv2m_pmsi_domain_info, inner_domain); if (!pci_domain || !plat_domain) { @@ -296,8 +305,9 @@ return 0; } -static int __init gicv2m_init_one(struct device_node *node, - struct irq_domain *parent) +static int __init gicv2m_init_one(struct fwnode_handle *fwnode, + u32 spi_start, u32 nr_spis, + struct resource *res) { int ret; struct v2m_data *v2m; @@ -309,13 +319,9 @@ } INIT_LIST_HEAD(&v2m->entry); - v2m->node = node; + v2m->fwnode = fwnode; - ret = of_address_to_resource(node, 0, &v2m->res); - if (ret) { - pr_err("Failed to allocate v2m resource.\n"); - goto err_free_v2m; - } + memcpy(&v2m->res, res, sizeof(struct resource)); v2m->base = ioremap(v2m->res.start, resource_size(&v2m->res)); if (!v2m->base) { @@ -324,10 +330,9 @@ goto err_free_v2m; } - if (!of_property_read_u32(node, "arm,msi-base-spi", &v2m->spi_start) && - !of_property_read_u32(node, "arm,msi-num-spis", &v2m->nr_spis)) { - pr_info("Overriding V2M MSI_TYPER (base:%u, num:%u)\n", - v2m->spi_start, v2m->nr_spis); + if (spi_start && nr_spis) { + v2m->spi_start = spi_start; + v2m->nr_spis = nr_spis; } else { u32 typer = readl_relaxed(v2m->base + V2M_MSI_TYPER); @@ -359,10 +364,10 @@ } list_add_tail(&v2m->entry, &v2m_nodes); - pr_info("Node %s: range[%#lx:%#lx], SPI[%d:%d]\n", node->name, - (unsigned long)v2m->res.start, (unsigned long)v2m->res.end, - v2m->spi_start, (v2m->spi_start + v2m->nr_spis)); + pr_info("range[%#lx:%#lx], SPI[%d:%d]\n", + (unsigned long)res->start, (unsigned long)res->end, + v2m->spi_start, (v2m->spi_start + v2m->nr_spis)); return 0; err_iounmap: @@ -377,17 +382,34 @@ {}, }; -int __init gicv2m_of_init(struct device_node *node, struct irq_domain *parent) +static int __init gicv2m_of_init(struct fwnode_handle *parent_handle, + struct irq_domain *parent) { int ret = 0; + struct device_node *node = to_of_node(parent_handle); struct device_node *child; for (child = of_find_matching_node(node, gicv2m_device_id); child; child = of_find_matching_node(child, gicv2m_device_id)) { + u32 spi_start = 0, nr_spis = 0; + struct resource res; + if (!of_find_property(child, "msi-controller", NULL)) continue; - ret = gicv2m_init_one(child, parent); + ret = of_address_to_resource(child, 0, &res); + if (ret) { + pr_err("Failed to allocate v2m resource.\n"); + break; + } + + if (!of_property_read_u32(child, "arm,msi-base-spi", + &spi_start) && + !of_property_read_u32(child, "arm,msi-num-spis", &nr_spis)) + pr_info("DT overriding V2M MSI_TYPER (base:%u, num:%u)\n", + spi_start, nr_spis); + + ret = gicv2m_init_one(&child->fwnode, spi_start, nr_spis, &res); if (ret) { of_node_put(node); break; @@ -400,3 +422,100 @@ gicv2m_teardown(); return ret; } + +#ifdef CONFIG_ACPI +static int acpi_num_msi; + +static struct fwnode_handle *gicv2m_get_fwnode(struct device *dev) +{ + struct v2m_data *data; + + if (WARN_ON(acpi_num_msi <= 0)) + return NULL; + + /* We only return the fwnode of the first MSI frame. */ + data = list_first_entry_or_null(&v2m_nodes, struct v2m_data, entry); + if (!data) + return NULL; + + return data->fwnode; +} + +static int __init +acpi_parse_madt_msi(struct acpi_subtable_header *header, + const unsigned long end) +{ + int ret; + struct resource res; + u32 spi_start = 0, nr_spis = 0; + struct acpi_madt_generic_msi_frame *m; + struct fwnode_handle *fwnode; + + m = (struct acpi_madt_generic_msi_frame *)header; + if (BAD_MADT_ENTRY(m, end)) + return -EINVAL; + + res.start = m->base_address; + res.end = m->base_address + SZ_4K; + + if (m->flags & ACPI_MADT_OVERRIDE_SPI_VALUES) { + spi_start = m->spi_base; + nr_spis = m->spi_count; + + pr_info("ACPI overriding V2M MSI_TYPER (base:%u, num:%u)\n", + spi_start, nr_spis); + } + + fwnode = irq_domain_alloc_fwnode((void *)m->base_address); + if (!fwnode) { + pr_err("Unable to allocate GICv2m domain token\n"); + return -EINVAL; + } + + ret = gicv2m_init_one(fwnode, spi_start, nr_spis, &res); + if (ret) + irq_domain_free_fwnode(fwnode); + + return ret; +} + +static int __init gicv2m_acpi_init(struct irq_domain *parent) +{ + int ret; + + if (acpi_num_msi > 0) + return 0; + + acpi_num_msi = acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_MSI_FRAME, + acpi_parse_madt_msi, 0); + + if (acpi_num_msi <= 0) + goto err_out; + + ret = gicv2m_allocate_domains(parent); + if (ret) + goto err_out; + + pci_msi_register_fwnode_provider(&gicv2m_get_fwnode); + + return 0; + +err_out: + gicv2m_teardown(); + return -EINVAL; +} +#else /* CONFIG_ACPI */ +static int __init gicv2m_acpi_init(struct irq_domain *parent) +{ + return -EINVAL; +} +#endif /* CONFIG_ACPI */ + +int __init gicv2m_init(struct fwnode_handle *parent_handle, + struct irq_domain *parent) +{ + if (is_of_node(parent_handle)) + return gicv2m_of_init(parent_handle, parent); + + return gicv2m_acpi_init(parent); +} --- linux-4.4.0.orig/drivers/irqchip/irq-gic.c +++ linux-4.4.0/drivers/irqchip/irq-gic.c @@ -972,7 +972,7 @@ return 0; } - if (fwspec->fwnode->type == FWNODE_IRQCHIP) { + if (is_fwnode_irqchip(fwspec->fwnode)) { if(fwspec->param_count != 2) return -EINVAL; @@ -1234,7 +1234,7 @@ } if (IS_ENABLED(CONFIG_ARM_GIC_V2M)) - gicv2m_of_init(node, gic_data[gic_cnt].domain); + gicv2m_init(&node->fwnode, gic_data[gic_cnt].domain); gic_cnt++; return 0; @@ -1359,6 +1359,10 @@ __gic_init_bases(0, -1, dist_base, cpu_base, 0, domain_handle); acpi_set_irq_model(ACPI_IRQ_MODEL_GIC, domain_handle); + + if (IS_ENABLED(CONFIG_ARM_GIC_V2M)) + gicv2m_init(NULL, gic_data[0].domain); + return 0; } IRQCHIP_ACPI_DECLARE(gic_v2, ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, --- linux-4.4.0.orig/drivers/leds/Kconfig +++ linux-4.4.0/drivers/leds/Kconfig @@ -230,7 +230,6 @@ tristate "Common Driver for TI/National LP5521/5523/55231/5562/8501" depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 || LEDS_LP8501 select FW_LOADER - select FW_LOADER_USER_HELPER help This option supports common operations for LP5521/5523/55231/5562/8501 devices. --- linux-4.4.0.orig/drivers/lightnvm/Makefile +++ linux-4.4.0/drivers/lightnvm/Makefile @@ -2,6 +2,6 @@ # Makefile for Open-Channel SSDs. # -obj-$(CONFIG_NVM) := core.o +obj-$(CONFIG_NVM) := core.o sysblk.o obj-$(CONFIG_NVM_GENNVM) += gennvm.o obj-$(CONFIG_NVM_RRPC) += rrpc.o --- linux-4.4.0.orig/drivers/lightnvm/core.c +++ linux-4.4.0/drivers/lightnvm/core.c @@ -27,6 +27,7 @@ #include #include #include +#include #include static LIST_HEAD(nvm_targets); @@ -105,6 +106,9 @@ lockdep_assert_held(&nvm_lock); list_for_each_entry(mt, &nvm_mgrs, list) { + if (strncmp(dev->sb.mmtype, mt->name, NVM_MMTYPE_LEN)) + continue; + ret = mt->register_mgr(dev); if (ret < 0) { pr_err("nvm: media mgr failed to init (%d) on dev %s\n", @@ -166,6 +170,20 @@ return NULL; } +struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *lun, + unsigned long flags) +{ + return dev->mt->get_blk_unlocked(dev, lun, flags); +} +EXPORT_SYMBOL(nvm_get_blk_unlocked); + +/* Assumes that all valid pages have already been moved on release to bm */ +void nvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk) +{ + return dev->mt->put_blk_unlocked(dev, blk); +} +EXPORT_SYMBOL(nvm_put_blk_unlocked); + struct nvm_block *nvm_get_blk(struct nvm_dev *dev, struct nvm_lun *lun, unsigned long flags) { @@ -192,6 +210,206 @@ } EXPORT_SYMBOL(nvm_erase_blk); +void nvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + int i; + + if (rqd->nr_pages > 1) { + for (i = 0; i < rqd->nr_pages; i++) + rqd->ppa_list[i] = dev_to_generic_addr(dev, + rqd->ppa_list[i]); + } else { + rqd->ppa_addr = dev_to_generic_addr(dev, rqd->ppa_addr); + } +} +EXPORT_SYMBOL(nvm_addr_to_generic_mode); + +void nvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + int i; + + if (rqd->nr_pages > 1) { + for (i = 0; i < rqd->nr_pages; i++) + rqd->ppa_list[i] = generic_to_dev_addr(dev, + rqd->ppa_list[i]); + } else { + rqd->ppa_addr = generic_to_dev_addr(dev, rqd->ppa_addr); + } +} +EXPORT_SYMBOL(nvm_generic_to_addr_mode); + +int nvm_set_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd, + struct ppa_addr *ppas, int nr_ppas) +{ + int i, plane_cnt, pl_idx; + + if (dev->plane_mode == NVM_PLANE_SINGLE && nr_ppas == 1) { + rqd->nr_pages = 1; + rqd->ppa_addr = ppas[0]; + + return 0; + } + + plane_cnt = (1 << dev->plane_mode); + rqd->nr_pages = plane_cnt * nr_ppas; + + if (dev->ops->max_phys_sect < rqd->nr_pages) + return -EINVAL; + + rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list); + if (!rqd->ppa_list) { + pr_err("nvm: failed to allocate dma memory\n"); + return -ENOMEM; + } + + for (pl_idx = 0; pl_idx < plane_cnt; pl_idx++) { + for (i = 0; i < nr_ppas; i++) { + ppas[i].g.pl = pl_idx; + rqd->ppa_list[(pl_idx * nr_ppas) + i] = ppas[i]; + } + } + + return 0; +} +EXPORT_SYMBOL(nvm_set_rqd_ppalist); + +void nvm_free_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + if (!rqd->ppa_list) + return; + + nvm_dev_dma_free(dev, rqd->ppa_list, rqd->dma_ppa_list); +} +EXPORT_SYMBOL(nvm_free_rqd_ppalist); + +int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr *ppas, int nr_ppas) +{ + struct nvm_rq rqd; + int ret; + + if (!dev->ops->erase_block) + return 0; + + memset(&rqd, 0, sizeof(struct nvm_rq)); + + ret = nvm_set_rqd_ppalist(dev, &rqd, ppas, nr_ppas); + if (ret) + return ret; + + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->erase_block(dev, &rqd); + + nvm_free_rqd_ppalist(dev, &rqd); + + return ret; +} +EXPORT_SYMBOL(nvm_erase_ppa); + +void nvm_end_io(struct nvm_rq *rqd, int error) +{ + rqd->error = error; + rqd->end_io(rqd); +} +EXPORT_SYMBOL(nvm_end_io); + +static void nvm_end_io_sync(struct nvm_rq *rqd) +{ + struct completion *waiting = rqd->wait; + + rqd->wait = NULL; + + complete(waiting); +} + +int nvm_submit_ppa(struct nvm_dev *dev, struct ppa_addr *ppa, int nr_ppas, + int opcode, int flags, void *buf, int len) +{ + DECLARE_COMPLETION_ONSTACK(wait); + struct nvm_rq rqd; + struct bio *bio; + int ret; + unsigned long hang_check; + + bio = bio_map_kern(dev->q, buf, len, GFP_KERNEL); + if (IS_ERR_OR_NULL(bio)) + return -ENOMEM; + + memset(&rqd, 0, sizeof(struct nvm_rq)); + ret = nvm_set_rqd_ppalist(dev, &rqd, ppa, nr_ppas); + if (ret) { + bio_put(bio); + return ret; + } + + rqd.opcode = opcode; + rqd.bio = bio; + rqd.wait = &wait; + rqd.dev = dev; + rqd.end_io = nvm_end_io_sync; + rqd.flags = flags; + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->submit_io(dev, &rqd); + + /* Prevent hang_check timer from firing at us during very long I/O */ + hang_check = sysctl_hung_task_timeout_secs; + if (hang_check) + while (!wait_for_completion_io_timeout(&wait, hang_check * (HZ/2))); + else + wait_for_completion_io(&wait); + + nvm_free_rqd_ppalist(dev, &rqd); + + return rqd.error; +} +EXPORT_SYMBOL(nvm_submit_ppa); + +static int nvm_init_slc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp) +{ + int i; + + dev->lps_per_blk = dev->pgs_per_blk; + dev->lptbl = kcalloc(dev->lps_per_blk, sizeof(int), GFP_KERNEL); + if (!dev->lptbl) + return -ENOMEM; + + /* Just a linear array */ + for (i = 0; i < dev->lps_per_blk; i++) + dev->lptbl[i] = i; + + return 0; +} + +static int nvm_init_mlc_tbl(struct nvm_dev *dev, struct nvm_id_group *grp) +{ + int i, p; + struct nvm_id_lp_mlc *mlc = &grp->lptbl.mlc; + + if (!mlc->num_pairs) + return 0; + + dev->lps_per_blk = mlc->num_pairs; + dev->lptbl = kcalloc(dev->lps_per_blk, sizeof(int), GFP_KERNEL); + if (!dev->lptbl) + return -ENOMEM; + + /* The lower page table encoding consists of a list of bytes, where each + * has a lower and an upper half. The first half byte maintains the + * increment value and every value after is an offset added to the + * previous incrementation value */ + dev->lptbl[0] = mlc->pairs[0] & 0xF; + for (i = 1; i < dev->lps_per_blk; i++) { + p = mlc->pairs[i >> 1]; + if (i & 0x1) /* upper */ + dev->lptbl[i] = dev->lptbl[i - 1] + ((p & 0xF0) >> 4); + else /* lower */ + dev->lptbl[i] = dev->lptbl[i - 1] + (p & 0xF); + } + + return 0; +} + static int nvm_core_init(struct nvm_dev *dev) { struct nvm_id *id = &dev->identity; @@ -206,6 +424,7 @@ dev->sec_size = grp->csecs; dev->oob_size = grp->sos; dev->sec_per_pg = grp->fpg_sz / grp->csecs; + dev->mccap = grp->mccap; memcpy(&dev->ppaf, &id->ppaf, sizeof(struct nvm_addr_format)); dev->plane_mode = NVM_PLANE_SINGLE; @@ -216,11 +435,23 @@ return -EINVAL; } - if (grp->fmtype != 0 && grp->fmtype != 1) { + switch (grp->fmtype) { + case NVM_ID_FMTYPE_SLC: + if (nvm_init_slc_tbl(dev, grp)) + return -ENOMEM; + break; + case NVM_ID_FMTYPE_MLC: + if (nvm_init_mlc_tbl(dev, grp)) + return -ENOMEM; + break; + default: pr_err("nvm: flash type not supported\n"); return -EINVAL; } + if (!dev->lps_per_blk) + pr_info("nvm: lower page programming table missing\n"); + if (grp->mpos & 0x020202) dev->plane_mode = NVM_PLANE_DOUBLE; if (grp->mpos & 0x040404) @@ -238,6 +469,7 @@ dev->nr_chnls; dev->total_pages = dev->total_blocks * dev->pgs_per_blk; INIT_LIST_HEAD(&dev->online_targets); + mutex_init(&dev->mlock); return 0; } @@ -249,6 +481,8 @@ if (dev->mt) dev->mt->unregister_mgr(dev); + + kfree(dev->lptbl); } static int nvm_init(struct nvm_dev *dev) @@ -338,9 +572,16 @@ } } + ret = nvm_get_sysblock(dev, &dev->sb); + if (!ret) + pr_err("nvm: device not initialized.\n"); + else if (ret < 0) + pr_err("nvm: err (%d) on device initialization\n", ret); + /* register device with a supported media manager */ down_write(&nvm_lock); - dev->mt = nvm_init_mgr(dev); + if (ret > 0) + dev->mt = nvm_init_mgr(dev); list_add(&dev->devices, &nvm_devices); up_write(&nvm_lock); @@ -788,6 +1029,97 @@ return __nvm_configure_remove(&remove); } +static void nvm_setup_nvm_sb_info(struct nvm_sb_info *info) +{ + info->seqnr = 1; + info->erase_cnt = 0; + info->version = 1; +} + +static long __nvm_ioctl_dev_init(struct nvm_ioctl_dev_init *init) +{ + struct nvm_dev *dev; + struct nvm_sb_info info; + int ret; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(init->dev); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + nvm_setup_nvm_sb_info(&info); + + strncpy(info.mmtype, init->mmtype, NVM_MMTYPE_LEN); + info.fs_ppa.ppa = -1; + + ret = nvm_init_sysblock(dev, &info); + if (ret) + return ret; + + memcpy(&dev->sb, &info, sizeof(struct nvm_sb_info)); + + down_write(&nvm_lock); + dev->mt = nvm_init_mgr(dev); + up_write(&nvm_lock); + + return 0; +} + +static long nvm_ioctl_dev_init(struct file *file, void __user *arg) +{ + struct nvm_ioctl_dev_init init; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&init, arg, sizeof(struct nvm_ioctl_dev_init))) + return -EFAULT; + + if (init.flags != 0) { + pr_err("nvm: no flags supported\n"); + return -EINVAL; + } + + init.dev[DISK_NAME_LEN - 1] = '\0'; + + return __nvm_ioctl_dev_init(&init); +} + +static long nvm_ioctl_dev_factory(struct file *file, void __user *arg) +{ + struct nvm_ioctl_dev_factory fact; + struct nvm_dev *dev; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (copy_from_user(&fact, arg, sizeof(struct nvm_ioctl_dev_factory))) + return -EFAULT; + + fact.dev[DISK_NAME_LEN - 1] = '\0'; + + if (fact.flags & ~(NVM_FACTORY_NR_BITS - 1)) + return -EINVAL; + + down_write(&nvm_lock); + dev = nvm_find_nvm_dev(fact.dev); + up_write(&nvm_lock); + if (!dev) { + pr_err("nvm: device not found\n"); + return -EINVAL; + } + + if (dev->mt) { + dev->mt->unregister_mgr(dev); + dev->mt = NULL; + } + + return nvm_dev_factory(dev, fact.flags); +} + static long nvm_ctl_ioctl(struct file *file, uint cmd, unsigned long arg) { void __user *argp = (void __user *)arg; @@ -801,6 +1133,10 @@ return nvm_ioctl_dev_create(file, argp); case NVM_DEV_REMOVE: return nvm_ioctl_dev_remove(file, argp); + case NVM_DEV_INIT: + return nvm_ioctl_dev_init(file, argp); + case NVM_DEV_FACTORY: + return nvm_ioctl_dev_factory(file, argp); } return 0; } --- linux-4.4.0.orig/drivers/lightnvm/gennvm.c +++ linux-4.4.0/drivers/lightnvm/gennvm.c @@ -60,7 +60,8 @@ lun->vlun.lun_id = i % dev->luns_per_chnl; lun->vlun.chnl_id = i / dev->luns_per_chnl; lun->vlun.nr_free_blocks = dev->blks_per_lun; - lun->vlun.nr_inuse_blocks = 0; + lun->vlun.nr_open_blocks = 0; + lun->vlun.nr_closed_blocks = 0; lun->vlun.nr_bad_blocks = 0; } return 0; @@ -89,6 +90,7 @@ list_move_tail(&blk->list, &lun->bb_list); lun->vlun.nr_bad_blocks++; + lun->vlun.nr_free_blocks--; } return 0; @@ -133,15 +135,15 @@ pba = pba - (dev->sec_per_lun * lun_id); blk = &lun->vlun.blocks[div_u64(pba, dev->sec_per_blk)]; - if (!blk->type) { + if (!blk->state) { /* at this point, we don't know anything about the * block. It's up to the FTL on top to re-etablish the - * block state + * block state. The block is assumed to be open. */ list_move_tail(&blk->list, &lun->used_list); - blk->type = 1; + blk->state = NVM_BLK_ST_OPEN; lun->vlun.nr_free_blocks--; - lun->vlun.nr_inuse_blocks++; + lun->vlun.nr_open_blocks++; } } @@ -255,14 +257,14 @@ module_put(THIS_MODULE); } -static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, +static struct nvm_block *gennvm_get_blk_unlocked(struct nvm_dev *dev, struct nvm_lun *vlun, unsigned long flags) { struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); struct nvm_block *blk = NULL; int is_gc = flags & NVM_IOTYPE_GC; - spin_lock(&vlun->lock); + assert_spin_locked(&vlun->lock); if (list_empty(&lun->free_list)) { pr_err_ratelimited("gennvm: lun %u have no free pages available", @@ -275,83 +277,64 @@ blk = list_first_entry(&lun->free_list, struct nvm_block, list); list_move_tail(&blk->list, &lun->used_list); - blk->type = 1; + blk->state = NVM_BLK_ST_OPEN; lun->vlun.nr_free_blocks--; - lun->vlun.nr_inuse_blocks++; + lun->vlun.nr_open_blocks++; out: + return blk; +} + +static struct nvm_block *gennvm_get_blk(struct nvm_dev *dev, + struct nvm_lun *vlun, unsigned long flags) +{ + struct nvm_block *blk; + + spin_lock(&vlun->lock); + blk = gennvm_get_blk_unlocked(dev, vlun, flags); spin_unlock(&vlun->lock); return blk; } -static void gennvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk) +static void gennvm_put_blk_unlocked(struct nvm_dev *dev, struct nvm_block *blk) { struct nvm_lun *vlun = blk->lun; struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); - spin_lock(&vlun->lock); + assert_spin_locked(&vlun->lock); - switch (blk->type) { - case 1: + if (blk->state & NVM_BLK_ST_OPEN) { list_move_tail(&blk->list, &lun->free_list); + lun->vlun.nr_open_blocks--; lun->vlun.nr_free_blocks++; - lun->vlun.nr_inuse_blocks--; - blk->type = 0; - break; - case 2: + blk->state = NVM_BLK_ST_FREE; + } else if (blk->state & NVM_BLK_ST_CLOSED) { + list_move_tail(&blk->list, &lun->free_list); + lun->vlun.nr_closed_blocks--; + lun->vlun.nr_free_blocks++; + blk->state = NVM_BLK_ST_FREE; + } else if (blk->state & NVM_BLK_ST_BAD) { list_move_tail(&blk->list, &lun->bb_list); lun->vlun.nr_bad_blocks++; - lun->vlun.nr_inuse_blocks--; - break; - default: + blk->state = NVM_BLK_ST_BAD; + } else { WARN_ON_ONCE(1); pr_err("gennvm: erroneous block type (%lu -> %u)\n", - blk->id, blk->type); + blk->id, blk->state); list_move_tail(&blk->list, &lun->bb_list); lun->vlun.nr_bad_blocks++; - lun->vlun.nr_inuse_blocks--; - } - - spin_unlock(&vlun->lock); -} - -static void gennvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd) -{ - int i; - - if (rqd->nr_pages > 1) { - for (i = 0; i < rqd->nr_pages; i++) - rqd->ppa_list[i] = dev_to_generic_addr(dev, - rqd->ppa_list[i]); - } else { - rqd->ppa_addr = dev_to_generic_addr(dev, rqd->ppa_addr); - } -} - -static void gennvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd) -{ - int i; - - if (rqd->nr_pages > 1) { - for (i = 0; i < rqd->nr_pages; i++) - rqd->ppa_list[i] = generic_to_dev_addr(dev, - rqd->ppa_list[i]); - } else { - rqd->ppa_addr = generic_to_dev_addr(dev, rqd->ppa_addr); + blk->state = NVM_BLK_ST_BAD; } } -static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) +static void gennvm_put_blk(struct nvm_dev *dev, struct nvm_block *blk) { - if (!dev->ops->submit_io) - return 0; - - /* Convert address space */ - gennvm_generic_to_addr_mode(dev, rqd); + struct nvm_lun *vlun = blk->lun; - rqd->dev = dev; - return dev->ops->submit_io(dev, rqd); + spin_lock(&vlun->lock); + gennvm_put_blk_unlocked(dev, blk); + spin_unlock(&vlun->lock); } static void gennvm_blk_set_type(struct nvm_dev *dev, struct ppa_addr *ppa, @@ -376,7 +359,7 @@ blk = &lun->vlun.blocks[ppa->g.blk]; /* will be moved to bb list on put_blk from target */ - blk->type = type; + blk->state = type; } /* mark block bad. It is expected the target recover from the error. */ @@ -390,77 +373,51 @@ if (dev->ops->set_bb_tbl(dev, rqd, 1)) return; - gennvm_addr_to_generic_mode(dev, rqd); + nvm_addr_to_generic_mode(dev, rqd); /* look up blocks and mark them as bad */ if (rqd->nr_pages > 1) for (i = 0; i < rqd->nr_pages; i++) - gennvm_blk_set_type(dev, &rqd->ppa_list[i], 2); + gennvm_blk_set_type(dev, &rqd->ppa_list[i], + NVM_BLK_ST_BAD); else - gennvm_blk_set_type(dev, &rqd->ppa_addr, 2); + gennvm_blk_set_type(dev, &rqd->ppa_addr, NVM_BLK_ST_BAD); } -static int gennvm_end_io(struct nvm_rq *rqd, int error) +static void gennvm_end_io(struct nvm_rq *rqd) { struct nvm_tgt_instance *ins = rqd->ins; - int ret = 0; - switch (error) { + switch (rqd->error) { case NVM_RSP_SUCCESS: - break; case NVM_RSP_ERR_EMPTYPAGE: break; case NVM_RSP_ERR_FAILWRITE: gennvm_mark_blk_bad(rqd->dev, rqd); - default: - ret++; } - ret += ins->tt->end_io(rqd, error); - - return ret; + ins->tt->end_io(rqd); } -static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk, - unsigned long flags) +static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) { - int plane_cnt = 0, pl_idx, ret; - struct ppa_addr addr; - struct nvm_rq rqd; - - if (!dev->ops->erase_block) - return 0; - - addr = block_to_ppa(dev, blk); - - if (dev->plane_mode == NVM_PLANE_SINGLE) { - rqd.nr_pages = 1; - rqd.ppa_addr = addr; - } else { - plane_cnt = (1 << dev->plane_mode); - rqd.nr_pages = plane_cnt; - - rqd.ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, - &rqd.dma_ppa_list); - if (!rqd.ppa_list) { - pr_err("gennvm: failed to allocate dma memory\n"); - return -ENOMEM; - } - - for (pl_idx = 0; pl_idx < plane_cnt; pl_idx++) { - addr.g.pl = pl_idx; - rqd.ppa_list[pl_idx] = addr; - } - } + if (!dev->ops->submit_io) + return -ENODEV; - gennvm_generic_to_addr_mode(dev, &rqd); + /* Convert address space */ + nvm_generic_to_addr_mode(dev, rqd); - ret = dev->ops->erase_block(dev, &rqd); + rqd->dev = dev; + rqd->end_io = gennvm_end_io; + return dev->ops->submit_io(dev, rqd); +} - if (plane_cnt) - nvm_dev_dma_free(dev, rqd.ppa_list, rqd.dma_ppa_list); +static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk, + unsigned long flags) +{ + struct ppa_addr addr = block_to_ppa(dev, blk); - return ret; + return nvm_erase_ppa(dev, &addr, 1); } static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid) @@ -480,10 +437,11 @@ gennvm_for_each_lun(gn, lun, i) { spin_lock(&lun->vlun.lock); - pr_info("%s: lun%8u\t%u\t%u\t%u\n", + pr_info("%s: lun%8u\t%u\t%u\t%u\t%u\n", dev->name, i, lun->vlun.nr_free_blocks, - lun->vlun.nr_inuse_blocks, + lun->vlun.nr_open_blocks, + lun->vlun.nr_closed_blocks, lun->vlun.nr_bad_blocks); spin_unlock(&lun->vlun.lock); @@ -491,21 +449,23 @@ } static struct nvmm_type gennvm = { - .name = "gennvm", - .version = {0, 1, 0}, + .name = "gennvm", + .version = {0, 1, 0}, + + .register_mgr = gennvm_register, + .unregister_mgr = gennvm_unregister, - .register_mgr = gennvm_register, - .unregister_mgr = gennvm_unregister, + .get_blk_unlocked = gennvm_get_blk_unlocked, + .put_blk_unlocked = gennvm_put_blk_unlocked, - .get_blk = gennvm_get_blk, - .put_blk = gennvm_put_blk, + .get_blk = gennvm_get_blk, + .put_blk = gennvm_put_blk, - .submit_io = gennvm_submit_io, - .end_io = gennvm_end_io, - .erase_blk = gennvm_erase_blk, + .submit_io = gennvm_submit_io, + .erase_blk = gennvm_erase_blk, - .get_lun = gennvm_get_lun, - .lun_info_print = gennvm_lun_info_print, + .get_lun = gennvm_get_lun, + .lun_info_print = gennvm_lun_info_print, }; static int __init gennvm_module_init(void) --- linux-4.4.0.orig/drivers/lightnvm/rrpc.c +++ linux-4.4.0/drivers/lightnvm/rrpc.c @@ -179,16 +179,23 @@ static struct rrpc_block *rrpc_get_blk(struct rrpc *rrpc, struct rrpc_lun *rlun, unsigned long flags) { + struct nvm_lun *lun = rlun->parent; struct nvm_block *blk; struct rrpc_block *rblk; - blk = nvm_get_blk(rrpc->dev, rlun->parent, flags); - if (!blk) + spin_lock(&lun->lock); + blk = nvm_get_blk_unlocked(rrpc->dev, rlun->parent, flags); + if (!blk) { + pr_err("nvm: rrpc: cannot get new block from media manager\n"); + spin_unlock(&lun->lock); return NULL; + } rblk = &rlun->blocks[blk->id]; - blk->priv = rblk; + list_add_tail(&rblk->list, &rlun->open_list); + spin_unlock(&lun->lock); + blk->priv = rblk; bitmap_zero(rblk->invalid_pages, rrpc->dev->pgs_per_blk); rblk->next_page = 0; rblk->nr_invalid_pages = 0; @@ -199,7 +206,13 @@ static void rrpc_put_blk(struct rrpc *rrpc, struct rrpc_block *rblk) { - nvm_put_blk(rrpc->dev, rblk->parent); + struct rrpc_lun *rlun = rblk->rlun; + struct nvm_lun *lun = rlun->parent; + + spin_lock(&lun->lock); + nvm_put_blk_unlocked(rrpc->dev, rblk->parent); + list_del(&rblk->list); + spin_unlock(&lun->lock); } static void rrpc_put_blks(struct rrpc *rrpc) @@ -287,6 +300,8 @@ } page = mempool_alloc(rrpc->page_pool, GFP_NOIO); + if (!page) + return -ENOMEM; while ((slot = find_first_zero_bit(rblk->invalid_pages, nr_pgs_per_blk)) < nr_pgs_per_blk) { @@ -328,6 +343,10 @@ goto finished; } wait_for_completion_io(&wait); + if (bio->bi_error) { + rrpc_inflight_laddr_release(rrpc, rqd); + goto finished; + } bio_reset(bio); reinit_completion(&wait); @@ -350,6 +369,8 @@ wait_for_completion_io(&wait); rrpc_inflight_laddr_release(rrpc, rqd); + if (bio->bi_error) + goto finished; bio_reset(bio); } @@ -373,16 +394,26 @@ struct rrpc *rrpc = gcb->rrpc; struct rrpc_block *rblk = gcb->rblk; struct nvm_dev *dev = rrpc->dev; + struct nvm_lun *lun = rblk->parent->lun; + struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset]; + mempool_free(gcb, rrpc->gcb_pool); pr_debug("nvm: block '%lu' being reclaimed\n", rblk->parent->id); if (rrpc_move_valid_pages(rrpc, rblk)) - goto done; + goto put_back; + + if (nvm_erase_blk(dev, rblk->parent)) + goto put_back; - nvm_erase_blk(dev, rblk->parent); rrpc_put_blk(rrpc, rblk); -done: - mempool_free(gcb, rrpc->gcb_pool); + + return; + +put_back: + spin_lock(&rlun->lock); + list_add_tail(&rblk->prio, &rlun->prio_list); + spin_unlock(&rlun->lock); } /* the block with highest number of invalid pages, will be in the beginning @@ -427,7 +458,7 @@ if (nr_blocks_need < rrpc->nr_luns) nr_blocks_need = rrpc->nr_luns; - spin_lock(&lun->lock); + spin_lock(&rlun->lock); while (nr_blocks_need > lun->nr_free_blocks && !list_empty(&rlun->prio_list)) { struct rrpc_block *rblock = block_prio_find_max(rlun); @@ -436,16 +467,16 @@ if (!rblock->nr_invalid_pages) break; + gcb = mempool_alloc(rrpc->gcb_pool, GFP_ATOMIC); + if (!gcb) + break; + list_del_init(&rblock->prio); BUG_ON(!block_is_full(rrpc, rblock)); pr_debug("rrpc: selected block '%lu' for GC\n", block->id); - gcb = mempool_alloc(rrpc->gcb_pool, GFP_ATOMIC); - if (!gcb) - break; - gcb->rrpc = rrpc; gcb->rblk = rblock; INIT_WORK(&gcb->ws_gc, rrpc_block_gc); @@ -454,7 +485,7 @@ nr_blocks_need--; } - spin_unlock(&lun->lock); + spin_unlock(&rlun->lock); /* TODO: Hint that request queue can be started again */ } @@ -635,12 +666,24 @@ lun = rblk->parent->lun; cmnt_size = atomic_inc_return(&rblk->data_cmnt_size); - if (unlikely(cmnt_size == rrpc->dev->pgs_per_blk)) + if (unlikely(cmnt_size == rrpc->dev->pgs_per_blk)) { + struct nvm_block *blk = rblk->parent; + struct rrpc_lun *rlun = rblk->rlun; + + spin_lock(&lun->lock); + lun->nr_open_blocks--; + lun->nr_closed_blocks++; + blk->state &= ~NVM_BLK_ST_OPEN; + blk->state |= NVM_BLK_ST_CLOSED; + list_move_tail(&rblk->list, &rlun->closed_list); + spin_unlock(&lun->lock); + rrpc_run_gc(rrpc, rblk); + } } } -static int rrpc_end_io(struct nvm_rq *rqd, int error) +static void rrpc_end_io(struct nvm_rq *rqd) { struct rrpc *rrpc = container_of(rqd->ins, struct rrpc, instance); struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd); @@ -650,11 +693,12 @@ if (bio_data_dir(rqd->bio) == WRITE) rrpc_end_io_write(rrpc, rrqd, laddr, npages); + bio_put(rqd->bio); + if (rrqd->flags & NVM_IOTYPE_GC) - return 0; + return; rrpc_unlock_rq(rrpc, rqd); - bio_put(rqd->bio); if (npages > 1) nvm_dev_dma_free(rrpc->dev, rqd->ppa_list, rqd->dma_ppa_list); @@ -662,8 +706,6 @@ nvm_dev_dma_free(rrpc->dev, rqd->metadata, rqd->dma_metadata); mempool_free(rqd, rrpc->rq_pool); - - return 0; } static int rrpc_read_ppalist_rq(struct rrpc *rrpc, struct bio *bio, @@ -841,6 +883,13 @@ err = nvm_submit_io(rrpc->dev, rqd); if (err) { pr_err("rrpc: I/O submission failed: %d\n", err); + bio_put(bio); + if (!(flags & NVM_IOTYPE_GC)) { + rrpc_unlock_rq(rrpc, rqd); + if (rqd->nr_pages > 1) + nvm_dev_dma_free(rrpc->dev, + rqd->ppa_list, rqd->dma_ppa_list); + } return NVM_IO_ERR; } @@ -1090,6 +1139,11 @@ struct rrpc_lun *rlun; int i, j; + if (dev->pgs_per_blk > MAX_INVALID_PAGES_STORAGE * BITS_PER_LONG) { + pr_err("rrpc: number of pages per block too high."); + return -EINVAL; + } + spin_lock_init(&rrpc->rev_lock); rrpc->luns = kcalloc(rrpc->nr_luns, sizeof(struct rrpc_lun), @@ -1101,16 +1155,13 @@ for (i = 0; i < rrpc->nr_luns; i++) { struct nvm_lun *lun = dev->mt->get_lun(dev, lun_begin + i); - if (dev->pgs_per_blk > - MAX_INVALID_PAGES_STORAGE * BITS_PER_LONG) { - pr_err("rrpc: number of pages per block too high."); - goto err; - } - rlun = &rrpc->luns[i]; rlun->rrpc = rrpc; rlun->parent = lun; INIT_LIST_HEAD(&rlun->prio_list); + INIT_LIST_HEAD(&rlun->open_list); + INIT_LIST_HEAD(&rlun->closed_list); + INIT_WORK(&rlun->ws_gc, rrpc_lun_gc); spin_lock_init(&rlun->lock); @@ -1127,6 +1178,7 @@ struct nvm_block *blk = &lun->blocks[j]; rblk->parent = blk; + rblk->rlun = rlun; INIT_LIST_HEAD(&rblk->prio); spin_lock_init(&rblk->lock); } --- linux-4.4.0.orig/drivers/lightnvm/rrpc.h +++ linux-4.4.0/drivers/lightnvm/rrpc.h @@ -54,7 +54,9 @@ struct rrpc_block { struct nvm_block *parent; + struct rrpc_lun *rlun; struct list_head prio; + struct list_head list; #define MAX_INVALID_PAGES_STORAGE 8 /* Bitmap for invalid page intries */ @@ -73,7 +75,16 @@ struct nvm_lun *parent; struct rrpc_block *cur, *gc_cur; struct rrpc_block *blocks; /* Reference to block allocation */ - struct list_head prio_list; /* Blocks that may be GC'ed */ + + struct list_head prio_list; /* Blocks that may be GC'ed */ + struct list_head open_list; /* In-use open blocks. These are blocks + * that can be both written to and read + * from + */ + struct list_head closed_list; /* In-use closed blocks. These are + * blocks that can _only_ be read from + */ + struct work_struct ws_gc; spinlock_t lock; --- linux-4.4.0.orig/drivers/lightnvm/sysblk.c +++ linux-4.4.0/drivers/lightnvm/sysblk.c @@ -0,0 +1,741 @@ +/* + * Copyright (C) 2015 Matias Bjorling. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, + * USA. + * + */ + +#include + +#define MAX_SYSBLKS 3 /* remember to update mapping scheme on change */ +#define MAX_BLKS_PR_SYSBLK 2 /* 2 blks with 256 pages and 3000 erases + * enables ~1.5M updates per sysblk unit + */ + +struct sysblk_scan { + /* A row is a collection of flash blocks for a system block. */ + int nr_rows; + int row; + int act_blk[MAX_SYSBLKS]; + + int nr_ppas; + struct ppa_addr ppas[MAX_SYSBLKS * MAX_BLKS_PR_SYSBLK];/* all sysblks */ +}; + +static inline int scan_ppa_idx(int row, int blkid) +{ + return (row * MAX_BLKS_PR_SYSBLK) + blkid; +} + +void nvm_sysblk_to_cpu(struct nvm_sb_info *info, struct nvm_system_block *sb) +{ + info->seqnr = be32_to_cpu(sb->seqnr); + info->erase_cnt = be32_to_cpu(sb->erase_cnt); + info->version = be16_to_cpu(sb->version); + strncpy(info->mmtype, sb->mmtype, NVM_MMTYPE_LEN); + info->fs_ppa.ppa = be64_to_cpu(sb->fs_ppa); +} + +void nvm_cpu_to_sysblk(struct nvm_system_block *sb, struct nvm_sb_info *info) +{ + sb->magic = cpu_to_be32(NVM_SYSBLK_MAGIC); + sb->seqnr = cpu_to_be32(info->seqnr); + sb->erase_cnt = cpu_to_be32(info->erase_cnt); + sb->version = cpu_to_be16(info->version); + strncpy(sb->mmtype, info->mmtype, NVM_MMTYPE_LEN); + sb->fs_ppa = cpu_to_be64(info->fs_ppa.ppa); +} + +static int nvm_setup_sysblks(struct nvm_dev *dev, struct ppa_addr *sysblk_ppas) +{ + int nr_rows = min_t(int, MAX_SYSBLKS, dev->nr_chnls); + int i; + + for (i = 0; i < nr_rows; i++) + sysblk_ppas[i].ppa = 0; + + /* if possible, place sysblk at first channel, middle channel and last + * channel of the device. If not, create only one or two sys blocks + */ + switch (dev->nr_chnls) { + case 2: + sysblk_ppas[1].g.ch = 1; + /* fall-through */ + case 1: + sysblk_ppas[0].g.ch = 0; + break; + default: + sysblk_ppas[0].g.ch = 0; + sysblk_ppas[1].g.ch = dev->nr_chnls / 2; + sysblk_ppas[2].g.ch = dev->nr_chnls - 1; + break; + } + + return nr_rows; +} + +void nvm_setup_sysblk_scan(struct nvm_dev *dev, struct sysblk_scan *s, + struct ppa_addr *sysblk_ppas) +{ + memset(s, 0, sizeof(struct sysblk_scan)); + s->nr_rows = nvm_setup_sysblks(dev, sysblk_ppas); +} + +static int sysblk_get_host_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct sysblk_scan *s = private; + int i, nr_sysblk = 0; + + for (i = 0; i < nr_blks; i++) { + if (blks[i] != NVM_BLK_T_HOST) + continue; + + if (s->nr_ppas == MAX_BLKS_PR_SYSBLK * MAX_SYSBLKS) { + pr_err("nvm: too many host blks\n"); + return -EINVAL; + } + + ppa.g.blk = i; + + s->ppas[scan_ppa_idx(s->row, nr_sysblk)] = ppa; + s->nr_ppas++; + nr_sysblk++; + } + + return 0; +} + +static int nvm_get_all_sysblks(struct nvm_dev *dev, struct sysblk_scan *s, + struct ppa_addr *ppas, nvm_bb_update_fn *fn) +{ + struct ppa_addr dppa; + int i, ret; + + s->nr_ppas = 0; + + for (i = 0; i < s->nr_rows; i++) { + dppa = generic_to_dev_addr(dev, ppas[i]); + s->row = i; + + ret = dev->ops->get_bb_tbl(dev, dppa, dev->blks_per_lun, fn, s); + if (ret) { + pr_err("nvm: failed bb tbl for ppa (%u %u)\n", + ppas[i].g.ch, + ppas[i].g.blk); + return ret; + } + } + + return ret; +} + +/* + * scans a block for latest sysblk. + * Returns: + * 0 - newer sysblk not found. PPA is updated to latest page. + * 1 - newer sysblk found and stored in *cur. PPA is updated to + * next valid page. + * <0- error. + */ +static int nvm_scan_block(struct nvm_dev *dev, struct ppa_addr *ppa, + struct nvm_system_block *sblk) +{ + struct nvm_system_block *cur; + int pg, cursz, ret, found = 0; + + /* the full buffer for a flash page is allocated. Only the first of it + * contains the system block information + */ + cursz = dev->sec_size * dev->sec_per_pg * dev->nr_planes; + cur = kmalloc(cursz, GFP_KERNEL); + if (!cur) + return -ENOMEM; + + /* perform linear scan through the block */ + for (pg = 0; pg < dev->lps_per_blk; pg++) { + ppa->g.pg = ppa_to_slc(dev, pg); + + ret = nvm_submit_ppa(dev, ppa, 1, NVM_OP_PREAD, NVM_IO_SLC_MODE, + cur, cursz); + if (ret) { + if (ret == NVM_RSP_ERR_EMPTYPAGE) { + pr_debug("nvm: sysblk scan empty ppa (%u %u %u %u)\n", + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; + } + pr_err("nvm: read failed (%x) for ppa (%u %u %u %u)", + ret, + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; /* if we can't read a page, continue to the + * next blk + */ + } + + if (be32_to_cpu(cur->magic) != NVM_SYSBLK_MAGIC) { + pr_debug("nvm: scan break for ppa (%u %u %u %u)\n", + ppa->g.ch, + ppa->g.lun, + ppa->g.blk, + ppa->g.pg); + break; /* last valid page already found */ + } + + if (be32_to_cpu(cur->seqnr) < be32_to_cpu(sblk->seqnr)) + continue; + + memcpy(sblk, cur, sizeof(struct nvm_system_block)); + found = 1; + } + + kfree(cur); + + return found; +} + +static int nvm_set_bb_tbl(struct nvm_dev *dev, struct sysblk_scan *s, int type) +{ + struct nvm_rq rqd; + int ret; + + if (s->nr_ppas > dev->ops->max_phys_sect) { + pr_err("nvm: unable to update all sysblocks atomically\n"); + return -EINVAL; + } + + memset(&rqd, 0, sizeof(struct nvm_rq)); + + nvm_set_rqd_ppalist(dev, &rqd, s->ppas, s->nr_ppas); + nvm_generic_to_addr_mode(dev, &rqd); + + ret = dev->ops->set_bb_tbl(dev, &rqd, type); + nvm_free_rqd_ppalist(dev, &rqd); + if (ret) { + pr_err("nvm: sysblk failed bb mark\n"); + return -EINVAL; + } + + return 0; +} + +static int sysblk_get_free_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct sysblk_scan *s = private; + struct ppa_addr *sppa; + int i, blkid = 0; + + for (i = 0; i < nr_blks; i++) { + if (blks[i] == NVM_BLK_T_HOST) + return -EEXIST; + + if (blks[i] != NVM_BLK_T_FREE) + continue; + + sppa = &s->ppas[scan_ppa_idx(s->row, blkid)]; + sppa->g.ch = ppa.g.ch; + sppa->g.lun = ppa.g.lun; + sppa->g.blk = i; + s->nr_ppas++; + blkid++; + + pr_debug("nvm: use (%u %u %u) as sysblk\n", + sppa->g.ch, sppa->g.lun, sppa->g.blk); + if (blkid > MAX_BLKS_PR_SYSBLK - 1) + return 0; + } + + pr_err("nvm: sysblk failed get sysblk\n"); + return -EINVAL; +} + +static int nvm_write_and_verify(struct nvm_dev *dev, struct nvm_sb_info *info, + struct sysblk_scan *s) +{ + struct nvm_system_block nvmsb; + void *buf; + int i, sect, ret, bufsz; + struct ppa_addr *ppas; + + nvm_cpu_to_sysblk(&nvmsb, info); + + /* buffer for flash page */ + bufsz = dev->sec_size * dev->sec_per_pg * dev->nr_planes; + buf = kzalloc(bufsz, GFP_KERNEL); + if (!buf) + return -ENOMEM; + memcpy(buf, &nvmsb, sizeof(struct nvm_system_block)); + + ppas = kcalloc(dev->sec_per_pg, sizeof(struct ppa_addr), GFP_KERNEL); + if (!ppas) { + ret = -ENOMEM; + goto err; + } + + /* Write and verify */ + for (i = 0; i < s->nr_rows; i++) { + ppas[0] = s->ppas[scan_ppa_idx(i, s->act_blk[i])]; + + pr_debug("nvm: writing sysblk to ppa (%u %u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk, + ppas[0].g.pg); + + /* Expand to all sectors within a flash page */ + if (dev->sec_per_pg > 1) { + for (sect = 1; sect < dev->sec_per_pg; sect++) { + ppas[sect].ppa = ppas[0].ppa; + ppas[sect].g.sec = sect; + } + } + + ret = nvm_submit_ppa(dev, ppas, dev->sec_per_pg, NVM_OP_PWRITE, + NVM_IO_SLC_MODE, buf, bufsz); + if (ret) { + pr_err("nvm: sysblk failed program (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + break; + } + + ret = nvm_submit_ppa(dev, ppas, dev->sec_per_pg, NVM_OP_PREAD, + NVM_IO_SLC_MODE, buf, bufsz); + if (ret) { + pr_err("nvm: sysblk failed read (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + break; + } + + if (memcmp(buf, &nvmsb, sizeof(struct nvm_system_block))) { + pr_err("nvm: sysblk failed verify (%u %u %u)\n", + ppas[0].g.ch, + ppas[0].g.lun, + ppas[0].g.blk); + ret = -EINVAL; + break; + } + } + + kfree(ppas); +err: + kfree(buf); + + return ret; +} + +static int nvm_prepare_new_sysblks(struct nvm_dev *dev, struct sysblk_scan *s) +{ + int i, ret; + unsigned long nxt_blk; + struct ppa_addr *ppa; + + for (i = 0; i < s->nr_rows; i++) { + nxt_blk = (s->act_blk[i] + 1) % MAX_BLKS_PR_SYSBLK; + ppa = &s->ppas[scan_ppa_idx(i, nxt_blk)]; + ppa->g.pg = ppa_to_slc(dev, 0); + + ret = nvm_erase_ppa(dev, ppa, 1); + if (ret) + return ret; + + s->act_blk[i] = nxt_blk; + } + + return 0; +} + +int nvm_get_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info) +{ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + struct nvm_system_block *cur; + int i, j, found = 0; + int ret = -ENOMEM; + + /* + * 1. setup sysblk locations + * 2. get bad block list + * 3. filter on host-specific (type 3) + * 4. iterate through all and find the highest seq nr. + * 5. return superblock information + */ + + if (!dev->ops->get_bb_tbl) + return -EINVAL; + + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_host_blks); + if (ret) + goto err_sysblk; + + /* no sysblocks initialized */ + if (!s.nr_ppas) + goto err_sysblk; + + cur = kzalloc(sizeof(struct nvm_system_block), GFP_KERNEL); + if (!cur) + goto err_sysblk; + + /* find the latest block across all sysblocks */ + for (i = 0; i < s.nr_rows; i++) { + for (j = 0; j < MAX_BLKS_PR_SYSBLK; j++) { + struct ppa_addr ppa = s.ppas[scan_ppa_idx(i, j)]; + + ret = nvm_scan_block(dev, &ppa, cur); + if (ret > 0) + found = 1; + else if (ret < 0) + break; + } + } + + nvm_sysblk_to_cpu(info, cur); + + kfree(cur); +err_sysblk: + mutex_unlock(&dev->mlock); + + if (found) + return 1; + return ret; +} + +int nvm_update_sysblock(struct nvm_dev *dev, struct nvm_sb_info *new) +{ + /* 1. for each latest superblock + * 2. if room + * a. write new flash page entry with the updated information + * 3. if no room + * a. find next available block on lun (linear search) + * if none, continue to next lun + * if none at all, report error. also report that it wasn't + * possible to write to all superblocks. + * c. write data to block. + */ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + struct nvm_system_block *cur; + int i, j, ppaidx, found = 0; + int ret = -ENOMEM; + + if (!dev->ops->get_bb_tbl) + return -EINVAL; + + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_host_blks); + if (ret) + goto err_sysblk; + + cur = kzalloc(sizeof(struct nvm_system_block), GFP_KERNEL); + if (!cur) + goto err_sysblk; + + /* Get the latest sysblk for each sysblk row */ + for (i = 0; i < s.nr_rows; i++) { + found = 0; + for (j = 0; j < MAX_BLKS_PR_SYSBLK; j++) { + ppaidx = scan_ppa_idx(i, j); + ret = nvm_scan_block(dev, &s.ppas[ppaidx], cur); + if (ret > 0) { + s.act_blk[i] = j; + found = 1; + } else if (ret < 0) + break; + } + } + + if (!found) { + pr_err("nvm: no valid sysblks found to update\n"); + ret = -EINVAL; + goto err_cur; + } + + /* + * All sysblocks found. Check that they have same page id in their flash + * blocks + */ + for (i = 1; i < s.nr_rows; i++) { + struct ppa_addr l = s.ppas[scan_ppa_idx(0, s.act_blk[0])]; + struct ppa_addr r = s.ppas[scan_ppa_idx(i, s.act_blk[i])]; + + if (l.g.pg != r.g.pg) { + pr_err("nvm: sysblks not on same page. Previous update failed.\n"); + ret = -EINVAL; + goto err_cur; + } + } + + /* + * Check that there haven't been another update to the seqnr since we + * began + */ + if ((new->seqnr - 1) != be32_to_cpu(cur->seqnr)) { + pr_err("nvm: seq is not sequential\n"); + ret = -EINVAL; + goto err_cur; + } + + /* + * When all pages in a block has been written, a new block is selected + * and writing is performed on the new block. + */ + if (s.ppas[scan_ppa_idx(0, s.act_blk[0])].g.pg == + dev->lps_per_blk - 1) { + ret = nvm_prepare_new_sysblks(dev, &s); + if (ret) + goto err_cur; + } + + ret = nvm_write_and_verify(dev, new, &s); +err_cur: + kfree(cur); +err_sysblk: + mutex_unlock(&dev->mlock); + + return ret; +} + +int nvm_init_sysblock(struct nvm_dev *dev, struct nvm_sb_info *info) +{ + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + int ret; + + /* + * 1. select master blocks and select first available blks + * 2. get bad block list + * 3. mark MAX_SYSBLKS block as host-based device allocated. + * 4. write and verify data to block + */ + + if (!dev->ops->get_bb_tbl || !dev->ops->set_bb_tbl) + return -EINVAL; + + if (!(dev->mccap & NVM_ID_CAP_SLC) || !dev->lps_per_blk) { + pr_err("nvm: memory does not support SLC access\n"); + return -EINVAL; + } + + /* Index all sysblocks and mark them as host-driven */ + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, sysblk_get_free_blks); + if (ret) + goto err_mark; + + ret = nvm_set_bb_tbl(dev, &s, NVM_BLK_T_HOST); + if (ret) + goto err_mark; + + /* Write to the first block of each row */ + ret = nvm_write_and_verify(dev, info, &s); +err_mark: + mutex_unlock(&dev->mlock); + return ret; +} + +struct factory_blks { + struct nvm_dev *dev; + int flags; + unsigned long *blks; +}; + +static int factory_nblks(int nblks) +{ + /* Round up to nearest BITS_PER_LONG */ + return (nblks + (BITS_PER_LONG - 1)) & ~(BITS_PER_LONG - 1); +} + +static unsigned int factory_blk_offset(struct nvm_dev *dev, int ch, int lun) +{ + int nblks = factory_nblks(dev->blks_per_lun); + + return ((ch * dev->luns_per_chnl * nblks) + (lun * nblks)) / + BITS_PER_LONG; +} + +static int nvm_factory_blks(struct ppa_addr ppa, int nr_blks, u8 *blks, + void *private) +{ + struct factory_blks *f = private; + struct nvm_dev *dev = f->dev; + int i, lunoff; + + lunoff = factory_blk_offset(dev, ppa.g.ch, ppa.g.lun); + + /* non-set bits correspond to the block must be erased */ + for (i = 0; i < nr_blks; i++) { + switch (blks[i]) { + case NVM_BLK_T_FREE: + if (f->flags & NVM_FACTORY_ERASE_ONLY_USER) + set_bit(i, &f->blks[lunoff]); + break; + case NVM_BLK_T_HOST: + if (!(f->flags & NVM_FACTORY_RESET_HOST_BLKS)) + set_bit(i, &f->blks[lunoff]); + break; + case NVM_BLK_T_GRWN_BAD: + if (!(f->flags & NVM_FACTORY_RESET_GRWN_BBLKS)) + set_bit(i, &f->blks[lunoff]); + break; + default: + set_bit(i, &f->blks[lunoff]); + break; + } + } + + return 0; +} + +static int nvm_fact_get_blks(struct nvm_dev *dev, struct ppa_addr *erase_list, + int max_ppas, struct factory_blks *f) +{ + struct ppa_addr ppa; + int ch, lun, blkid, idx, done = 0, ppa_cnt = 0; + unsigned long *offset; + + while (!done) { + done = 1; + for (ch = 0; ch < dev->nr_chnls; ch++) { + for (lun = 0; lun < dev->luns_per_chnl; lun++) { + idx = factory_blk_offset(dev, ch, lun); + offset = &f->blks[idx]; + + blkid = find_first_zero_bit(offset, + dev->blks_per_lun); + if (blkid >= dev->blks_per_lun) + continue; + set_bit(blkid, offset); + + ppa.ppa = 0; + ppa.g.ch = ch; + ppa.g.lun = lun; + ppa.g.blk = blkid; + pr_debug("nvm: erase ppa (%u %u %u)\n", + ppa.g.ch, + ppa.g.lun, + ppa.g.blk); + + erase_list[ppa_cnt] = ppa; + ppa_cnt++; + done = 0; + + if (ppa_cnt == max_ppas) + return ppa_cnt; + } + } + } + + return ppa_cnt; +} + +static int nvm_fact_get_bb_tbl(struct nvm_dev *dev, struct ppa_addr ppa, + nvm_bb_update_fn *fn, void *priv) +{ + struct ppa_addr dev_ppa; + int ret; + + dev_ppa = generic_to_dev_addr(dev, ppa); + + ret = dev->ops->get_bb_tbl(dev, dev_ppa, dev->blks_per_lun, fn, priv); + if (ret) + pr_err("nvm: failed bb tbl for ch%u lun%u\n", + ppa.g.ch, ppa.g.blk); + return ret; +} + +static int nvm_fact_select_blks(struct nvm_dev *dev, struct factory_blks *f) +{ + int ch, lun, ret; + struct ppa_addr ppa; + + ppa.ppa = 0; + for (ch = 0; ch < dev->nr_chnls; ch++) { + for (lun = 0; lun < dev->luns_per_chnl; lun++) { + ppa.g.ch = ch; + ppa.g.lun = lun; + + ret = nvm_fact_get_bb_tbl(dev, ppa, nvm_factory_blks, + f); + if (ret) + return ret; + } + } + + return 0; +} + +int nvm_dev_factory(struct nvm_dev *dev, int flags) +{ + struct factory_blks f; + struct ppa_addr *ppas; + int ppa_cnt, ret = -ENOMEM; + int max_ppas = dev->ops->max_phys_sect / dev->nr_planes; + struct ppa_addr sysblk_ppas[MAX_SYSBLKS]; + struct sysblk_scan s; + + f.blks = kzalloc(factory_nblks(dev->blks_per_lun) * dev->nr_luns, + GFP_KERNEL); + if (!f.blks) + return ret; + + ppas = kcalloc(max_ppas, sizeof(struct ppa_addr), GFP_KERNEL); + if (!ppas) + goto err_blks; + + f.dev = dev; + f.flags = flags; + + /* create list of blks to be erased */ + ret = nvm_fact_select_blks(dev, &f); + if (ret) + goto err_ppas; + + /* continue to erase until list of blks until empty */ + while ((ppa_cnt = nvm_fact_get_blks(dev, ppas, max_ppas, &f)) > 0) + nvm_erase_ppa(dev, ppas, ppa_cnt); + + /* mark host reserved blocks free */ + if (flags & NVM_FACTORY_RESET_HOST_BLKS) { + nvm_setup_sysblk_scan(dev, &s, sysblk_ppas); + mutex_lock(&dev->mlock); + ret = nvm_get_all_sysblks(dev, &s, sysblk_ppas, + sysblk_get_host_blks); + if (!ret) + ret = nvm_set_bb_tbl(dev, &s, NVM_BLK_T_FREE); + mutex_unlock(&dev->mlock); + } +err_ppas: + kfree(ppas); +err_blks: + kfree(f.blks); + return ret; +} +EXPORT_SYMBOL(nvm_dev_factory); --- linux-4.4.0.orig/drivers/md/bcache/super.c +++ linux-4.4.0/drivers/md/bcache/super.c @@ -1926,7 +1926,7 @@ sb); if (IS_ERR(bdev)) { if (bdev == ERR_PTR(-EBUSY)) { - bdev = lookup_bdev(strim(path)); + bdev = lookup_bdev(strim(path), 0); mutex_lock(&bch_register_lock); if (!IS_ERR(bdev) && bch_is_open(bdev)) err = "device already registered"; --- linux-4.4.0.orig/drivers/md/bcache/writeback.h +++ linux-4.4.0/drivers/md/bcache/writeback.h @@ -63,7 +63,8 @@ static inline void bch_writeback_queue(struct cached_dev *dc) { - wake_up_process(dc->writeback_thread); + if (!IS_ERR_OR_NULL(dc->writeback_thread)) + wake_up_process(dc->writeback_thread); } static inline void bch_writeback_add(struct cached_dev *dc) --- linux-4.4.0.orig/drivers/md/dm-table.c +++ linux-4.4.0/drivers/md/dm-table.c @@ -380,7 +380,7 @@ BUG_ON(!t); /* convert the path to a device */ - bdev = lookup_bdev(path); + bdev = lookup_bdev(path, 0); if (IS_ERR(bdev)) { dev = name_to_dev_t(path); if (!dev) --- linux-4.4.0.orig/drivers/media/usb/uvc/uvc_driver.c +++ linux-4.4.0/drivers/media/usb/uvc/uvc_driver.c @@ -2265,6 +2265,15 @@ .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_PROBE_DEF }, + /* Alienware X51*/ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x2643, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_QUIRK_PROBE_DEF }, /* Apple Built-In iSight */ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, --- linux-4.4.0.orig/drivers/memstick/host/rtsx_usb_ms.c +++ linux-4.4.0/drivers/memstick/host/rtsx_usb_ms.c @@ -706,7 +706,8 @@ if (host->eject) break; - msleep(1000); + if (msleep_interruptible(1000)) + flush_signals(current); } complete(&host->detect_ms_exit); --- linux-4.4.0.orig/drivers/mfd/intel-lpss-acpi.c +++ linux-4.4.0/drivers/mfd/intel-lpss-acpi.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "intel-lpss.h" @@ -25,6 +26,20 @@ .clk_rate = 120000000, }; +static struct property_entry spt_i2c_properties[] = { + PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 230), + { }, +}; + +static struct property_set spt_i2c_pset = { + .properties = spt_i2c_properties, +}; + +static const struct intel_lpss_platform_info spt_i2c_info = { + .clk_rate = 120000000, + .pset = &spt_i2c_pset, +}; + static const struct intel_lpss_platform_info bxt_info = { .clk_rate = 100000000, }; @@ -35,8 +50,8 @@ static const struct acpi_device_id intel_lpss_acpi_ids[] = { /* SPT */ - { "INT3446", (kernel_ulong_t)&spt_info }, - { "INT3447", (kernel_ulong_t)&spt_info }, + { "INT3446", (kernel_ulong_t)&spt_i2c_info }, + { "INT3447", (kernel_ulong_t)&spt_i2c_info }, /* BXT */ { "80860AAC", (kernel_ulong_t)&bxt_i2c_info }, { "80860ABC", (kernel_ulong_t)&bxt_info }, --- linux-4.4.0.orig/drivers/mfd/intel-lpss-pci.c +++ linux-4.4.0/drivers/mfd/intel-lpss-pci.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "intel-lpss.h" @@ -65,9 +66,35 @@ .clk_rate = 120000000, }; +static struct property_entry spt_i2c_properties[] = { + PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 230), + { }, +}; + +static struct property_set spt_i2c_pset = { + .properties = spt_i2c_properties, +}; + +static const struct intel_lpss_platform_info spt_i2c_info = { + .clk_rate = 120000000, + .pset = &spt_i2c_pset, +}; + +static struct property_entry uart_properties[] = { + PROPERTY_ENTRY_U32("reg-io-width", 4), + PROPERTY_ENTRY_U32("reg-shift", 2), + PROPERTY_ENTRY_BOOL("snps,uart-16550-compatible"), + { }, +}; + +static struct property_set uart_pset = { + .properties = uart_properties, +}; + static const struct intel_lpss_platform_info spt_uart_info = { .clk_rate = 120000000, .clk_con_id = "baudclk", + .pset = &uart_pset, }; static const struct intel_lpss_platform_info bxt_info = { @@ -77,6 +104,7 @@ static const struct intel_lpss_platform_info bxt_uart_info = { .clk_rate = 100000000, .clk_con_id = "baudclk", + .pset = &uart_pset, }; static const struct intel_lpss_platform_info bxt_i2c_info = { @@ -121,20 +149,20 @@ { PCI_VDEVICE(INTEL, 0x9d28), (kernel_ulong_t)&spt_uart_info }, { PCI_VDEVICE(INTEL, 0x9d29), (kernel_ulong_t)&spt_info }, { PCI_VDEVICE(INTEL, 0x9d2a), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d60), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d61), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d62), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d63), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d64), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0x9d65), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d60), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x9d61), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x9d62), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x9d63), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x9d64), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x9d65), (kernel_ulong_t)&spt_i2c_info }, { PCI_VDEVICE(INTEL, 0x9d66), (kernel_ulong_t)&spt_uart_info }, /* SPT-H */ { PCI_VDEVICE(INTEL, 0xa127), (kernel_ulong_t)&spt_uart_info }, { PCI_VDEVICE(INTEL, 0xa128), (kernel_ulong_t)&spt_uart_info }, { PCI_VDEVICE(INTEL, 0xa129), (kernel_ulong_t)&spt_info }, { PCI_VDEVICE(INTEL, 0xa12a), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0xa160), (kernel_ulong_t)&spt_info }, - { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0xa160), (kernel_ulong_t)&spt_i2c_info }, + { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_i2c_info }, { PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info }, { } }; --- linux-4.4.0.orig/drivers/mfd/intel-lpss.c +++ linux-4.4.0/drivers/mfd/intel-lpss.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -72,7 +73,7 @@ enum intel_lpss_dev_type type; struct clk *clk; struct clk_lookup *clock; - const struct mfd_cell *cell; + struct mfd_cell *cell; struct device *dev; void __iomem *priv; int devid; @@ -217,6 +218,7 @@ static int intel_lpss_assign_devs(struct intel_lpss *lpss) { + const struct mfd_cell *cell; unsigned int type; type = lpss->caps & LPSS_PRIV_CAPS_TYPE_MASK; @@ -224,18 +226,22 @@ switch (type) { case LPSS_DEV_I2C: - lpss->cell = &intel_lpss_i2c_cell; + cell = &intel_lpss_i2c_cell; break; case LPSS_DEV_UART: - lpss->cell = &intel_lpss_uart_cell; + cell = &intel_lpss_uart_cell; break; case LPSS_DEV_SPI: - lpss->cell = &intel_lpss_spi_cell; + cell = &intel_lpss_spi_cell; break; default: return -ENODEV; } + lpss->cell = devm_kmemdup(lpss->dev, cell, sizeof(*cell), GFP_KERNEL); + if (!lpss->cell) + return -ENOMEM; + lpss->type = type; return 0; @@ -401,6 +407,8 @@ if (ret) return ret; + lpss->cell->pset = info->pset; + intel_lpss_init_dev(lpss); lpss->devid = ida_simple_get(&intel_lpss_devid_ida, 0, 0, GFP_KERNEL); --- linux-4.4.0.orig/drivers/mfd/intel-lpss.h +++ linux-4.4.0/drivers/mfd/intel-lpss.h @@ -16,12 +16,14 @@ struct device; struct resource; +struct property_set; struct intel_lpss_platform_info { struct resource *mem; int irq; unsigned long clk_rate; const char *clk_con_id; + struct property_set *pset; }; int intel_lpss_probe(struct device *dev, --- linux-4.4.0.orig/drivers/mfd/mfd-core.c +++ linux-4.4.0/drivers/mfd/mfd-core.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -191,6 +192,12 @@ if (ret) goto fail_alias; } + + if (cell->pset) { + ret = platform_device_add_properties(pdev, cell->pset); + if (ret) + goto fail_alias; + } ret = mfd_platform_add_cell(pdev, cell, usage_count); if (ret) --- linux-4.4.0.orig/drivers/misc/cxl/Makefile +++ linux-4.4.0/drivers/misc/cxl/Makefile @@ -1,4 +1,5 @@ -ccflags-y := -Werror -Wno-unused-const-variable +ccflags-y := $(call cc-disable-warning, unused-const-variable) +ccflags-$(CONFIG_PPC_WERROR) += -Werror cxl-y += main.o file.o irq.o fault.o native.o cxl-y += context.o sysfs.o debugfs.o pci.o trace.o --- linux-4.4.0.orig/drivers/misc/cxl/api.c +++ linux-4.4.0/drivers/misc/cxl/api.c @@ -25,7 +25,6 @@ afu = cxl_pci_to_afu(dev); - get_device(&afu->dev); ctx = cxl_context_alloc(); if (IS_ERR(ctx)) { rc = PTR_ERR(ctx); @@ -61,7 +60,6 @@ err_ctx: kfree(ctx); err_dev: - put_device(&afu->dev); return ERR_PTR(rc); } EXPORT_SYMBOL_GPL(cxl_dev_context_init); @@ -87,8 +85,6 @@ if (ctx->status >= STARTED) return -EBUSY; - put_device(&ctx->afu->dev); - cxl_context_free(ctx); return 0; @@ -176,7 +172,7 @@ if (task) { ctx->pid = get_task_pid(task, PIDTYPE_PID); - get_pid(ctx->pid); + ctx->glpid = get_task_pid(task->group_leader, PIDTYPE_PID); kernel = false; } --- linux-4.4.0.orig/drivers/misc/cxl/context.c +++ linux-4.4.0/drivers/misc/cxl/context.c @@ -42,7 +42,7 @@ spin_lock_init(&ctx->sste_lock); ctx->afu = afu; ctx->master = master; - ctx->pid = NULL; /* Set in start work ioctl */ + ctx->pid = ctx->glpid = NULL; /* Set in start work ioctl */ mutex_init(&ctx->mapping_lock); ctx->mapping = mapping; @@ -97,6 +97,12 @@ ctx->pe = i; ctx->elem = &ctx->afu->spa[i]; ctx->pe_inserted = false; + + /* + * take a ref on the afu so that it stays alive at-least till + * this context is reclaimed inside reclaim_ctx. + */ + cxl_afu_get(afu); return 0; } @@ -211,7 +217,11 @@ WARN_ON(cxl_detach_process(ctx) && cxl_adapter_link_ok(ctx->afu->adapter)); flush_work(&ctx->fault_work); /* Only needed for dedicated process */ + + /* release the reference to the group leader and mm handling pid */ put_pid(ctx->pid); + put_pid(ctx->glpid); + cxl_ctx_put(); return 0; } @@ -278,6 +288,9 @@ if (ctx->irq_bitmap) kfree(ctx->irq_bitmap); + /* Drop ref to the afu device taken during cxl_context_init */ + cxl_afu_put(ctx->afu); + kfree(ctx); } --- linux-4.4.0.orig/drivers/misc/cxl/cxl.h +++ linux-4.4.0/drivers/misc/cxl/cxl.h @@ -403,6 +403,18 @@ bool enabled; }; +/* AFU refcount management */ +static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) +{ + + return (get_device(&afu->dev) == NULL) ? NULL : afu; +} + +static inline void cxl_afu_put(struct cxl_afu *afu) +{ + put_device(&afu->dev); +} + struct cxl_irq_name { struct list_head list; @@ -433,6 +445,9 @@ unsigned int sst_size, sst_lru; wait_queue_head_t wq; + /* pid of the group leader associated with the pid */ + struct pid *glpid; + /* use mm context associated with this pid for ds faults */ struct pid *pid; spinlock_t lock; /* Protects pending_irq_mask, pending_fault and fault_addr */ /* Only used in PR mode */ --- linux-4.4.0.orig/drivers/misc/cxl/fault.c +++ linux-4.4.0/drivers/misc/cxl/fault.c @@ -166,13 +166,92 @@ cxl_ack_irq(ctx, CXL_PSL_TFC_An_R, 0); } +/* + * Returns the mm_struct corresponding to the context ctx via ctx->pid + * In case the task has exited we use the task group leader accessible + * via ctx->glpid to find the next task in the thread group that has a + * valid mm_struct associated with it. If a task with valid mm_struct + * is found the ctx->pid is updated to use the task struct for subsequent + * translations. In case no valid mm_struct is found in the task group to + * service the fault a NULL is returned. + */ +static struct mm_struct *get_mem_context(struct cxl_context *ctx) +{ + struct task_struct *task = NULL; + struct mm_struct *mm = NULL; + struct pid *old_pid = ctx->pid; + + if (old_pid == NULL) { + pr_warn("%s: Invalid context for pe=%d\n", + __func__, ctx->pe); + return NULL; + } + + task = get_pid_task(old_pid, PIDTYPE_PID); + + /* + * pid_alive may look racy but this saves us from costly + * get_task_mm when the task is a zombie. In worst case + * we may think a task is alive, which is about to die + * but get_task_mm will return NULL. + */ + if (task != NULL && pid_alive(task)) + mm = get_task_mm(task); + + /* release the task struct that was taken earlier */ + if (task) + put_task_struct(task); + else + pr_devel("%s: Context owning pid=%i for pe=%i dead\n", + __func__, pid_nr(old_pid), ctx->pe); + + /* + * If we couldn't find the mm context then use the group + * leader to iterate over the task group and find a task + * that gives us mm_struct. + */ + if (unlikely(mm == NULL && ctx->glpid != NULL)) { + + rcu_read_lock(); + task = pid_task(ctx->glpid, PIDTYPE_PID); + if (task) + do { + mm = get_task_mm(task); + if (mm) { + ctx->pid = get_task_pid(task, + PIDTYPE_PID); + break; + } + task = next_thread(task); + } while (task && !thread_group_leader(task)); + rcu_read_unlock(); + + /* check if we switched pid */ + if (ctx->pid != old_pid) { + if (mm) + pr_devel("%s:pe=%i switch pid %i->%i\n", + __func__, ctx->pe, pid_nr(old_pid), + pid_nr(ctx->pid)); + else + pr_devel("%s:Cannot find mm for pid=%i\n", + __func__, pid_nr(old_pid)); + + /* drop the reference to older pid */ + put_pid(old_pid); + } + } + + return mm; +} + + + void cxl_handle_fault(struct work_struct *fault_work) { struct cxl_context *ctx = container_of(fault_work, struct cxl_context, fault_work); u64 dsisr = ctx->dsisr; u64 dar = ctx->dar; - struct task_struct *task = NULL; struct mm_struct *mm = NULL; if (cxl_p2n_read(ctx->afu, CXL_PSL_DSISR_An) != dsisr || @@ -195,17 +274,17 @@ "DSISR: %#llx DAR: %#llx\n", ctx->pe, dsisr, dar); if (!ctx->kernel) { - if (!(task = get_pid_task(ctx->pid, PIDTYPE_PID))) { - pr_devel("cxl_handle_fault unable to get task %i\n", - pid_nr(ctx->pid)); + + mm = get_mem_context(ctx); + /* indicates all the thread in task group have exited */ + if (mm == NULL) { + pr_devel("%s: unable to get mm for pe=%d pid=%i\n", + __func__, ctx->pe, pid_nr(ctx->pid)); cxl_ack_ae(ctx); return; - } - if (!(mm = get_task_mm(task))) { - pr_devel("cxl_handle_fault unable to get mm %i\n", - pid_nr(ctx->pid)); - cxl_ack_ae(ctx); - goto out; + } else { + pr_devel("Handling page fault for pe=%d pid=%i\n", + ctx->pe, pid_nr(ctx->pid)); } } @@ -218,33 +297,22 @@ if (mm) mmput(mm); -out: - if (task) - put_task_struct(task); } static void cxl_prefault_one(struct cxl_context *ctx, u64 ea) { - int rc; - struct task_struct *task; struct mm_struct *mm; - if (!(task = get_pid_task(ctx->pid, PIDTYPE_PID))) { - pr_devel("cxl_prefault_one unable to get task %i\n", - pid_nr(ctx->pid)); - return; - } - if (!(mm = get_task_mm(task))) { + mm = get_mem_context(ctx); + if (mm == NULL) { pr_devel("cxl_prefault_one unable to get mm %i\n", pid_nr(ctx->pid)); - put_task_struct(task); return; } - rc = cxl_fault_segment(ctx, mm, ea); + cxl_fault_segment(ctx, mm, ea); mmput(mm); - put_task_struct(task); } static u64 next_segment(u64 ea, u64 vsid) @@ -263,18 +331,13 @@ struct copro_slb slb; struct vm_area_struct *vma; int rc; - struct task_struct *task; struct mm_struct *mm; - if (!(task = get_pid_task(ctx->pid, PIDTYPE_PID))) { - pr_devel("cxl_prefault_vma unable to get task %i\n", - pid_nr(ctx->pid)); - return; - } - if (!(mm = get_task_mm(task))) { + mm = get_mem_context(ctx); + if (mm == NULL) { pr_devel("cxl_prefault_vm unable to get mm %i\n", pid_nr(ctx->pid)); - goto out1; + return; } down_read(&mm->mmap_sem); @@ -295,8 +358,6 @@ up_read(&mm->mmap_sem); mmput(mm); -out1: - put_task_struct(task); } void cxl_prefault(struct cxl_context *ctx, u64 wed) --- linux-4.4.0.orig/drivers/misc/cxl/file.c +++ linux-4.4.0/drivers/misc/cxl/file.c @@ -67,7 +67,13 @@ spin_unlock(&adapter->afu_list_lock); goto err_put_adapter; } - get_device(&afu->dev); + + /* + * taking a ref to the afu so that it doesn't go away + * for rest of the function. This ref is released before + * we return. + */ + cxl_afu_get(afu); spin_unlock(&adapter->afu_list_lock); if (!afu->current_mode) @@ -90,13 +96,12 @@ file->private_data = ctx; cxl_ctx_get(); - /* Our ref on the AFU will now hold the adapter */ - put_device(&adapter->dev); - - return 0; + /* indicate success */ + rc = 0; err_put_afu: - put_device(&afu->dev); + /* release the ref taken earlier */ + cxl_afu_put(afu); err_put_adapter: put_device(&adapter->dev); return rc; @@ -131,8 +136,6 @@ mutex_unlock(&ctx->mapping_lock); } - put_device(&ctx->afu->dev); - /* * At this this point all bottom halfs have finished and we should be * getting no more IRQs from the hardware for this context. Once it's @@ -198,8 +201,12 @@ * where a process (master, some daemon, etc) has opened the chardev on * behalf of another process, so the AFU's mm gets bound to the process * that performs this ioctl and not the process that opened the file. + * Also we grab the PID of the group leader so that if the task that + * has performed the attach operation exits the mm context of the + * process is still accessible. */ - ctx->pid = get_pid(get_task_pid(current, PIDTYPE_PID)); + ctx->pid = get_task_pid(current, PIDTYPE_PID); + ctx->glpid = get_task_pid(current->group_leader, PIDTYPE_PID); trace_cxl_attach(ctx, work.work_element_descriptor, work.num_interrupts, amr); --- linux-4.4.0.orig/drivers/misc/cxl/pci.c +++ linux-4.4.0/drivers/misc/cxl/pci.c @@ -138,6 +138,7 @@ { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x0477), }, { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x044b), }, { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x04cf), }, + { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x0601), }, { PCI_DEVICE_CLASS(0x120000, ~0), }, { } --- linux-4.4.0.orig/drivers/misc/cxl/vphb.c +++ linux-4.4.0/drivers/misc/cxl/vphb.c @@ -203,7 +203,7 @@ mask <<= shift; val <<= shift; - v = (in_le32(ioaddr) & ~mask) || (val & mask); + v = (in_le32(ioaddr) & ~mask) | (val & mask); out_le32(ioaddr, v); return PCIBIOS_SUCCESSFUL; --- linux-4.4.0.orig/drivers/misc/mei/pci-me.c +++ linux-4.4.0/drivers/misc/mei/pci-me.c @@ -40,6 +40,9 @@ #include "hw-me-regs.h" #include "hw-me.h" +static bool disable_msi; +module_param(disable_msi, bool, 0); + /* mei_pci_tbl - PCI Device ID Table */ static const struct pci_device_id mei_me_pci_tbl[] = { {MEI_PCI_DEVICE(MEI_DEV_ID_82946GZ, mei_me_legacy_cfg)}, @@ -183,7 +186,8 @@ err = -ENOMEM; goto free_device; } - pci_enable_msi(pdev); + if (!disable_msi) + pci_enable_msi(pdev); /* request and enable interrupt */ irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED; --- linux-4.4.0.orig/drivers/mtd/mtdsuper.c +++ linux-4.4.0/drivers/mtd/mtdsuper.c @@ -125,6 +125,7 @@ #ifdef CONFIG_BLOCK struct block_device *bdev; int ret, major; + int perm; #endif int mtdnr; @@ -176,7 +177,10 @@ /* try the old way - the hack where we allowed users to mount * /dev/mtdblock$(n) but didn't actually _use_ the blockdev */ - bdev = lookup_bdev(dev_name); + perm = MAY_READ; + if (!(flags & MS_RDONLY)) + perm |= MAY_WRITE; + bdev = lookup_bdev(dev_name, perm); if (IS_ERR(bdev)) { ret = PTR_ERR(bdev); pr_debug("MTDSB: lookup_bdev() returned %d\n", ret); --- linux-4.4.0.orig/drivers/net/bonding/bond_main.c +++ linux-4.4.0/drivers/net/bonding/bond_main.c @@ -1207,7 +1207,6 @@ err = netdev_master_upper_dev_link_private(slave_dev, bond_dev, slave); if (err) return err; - slave_dev->flags |= IFF_SLAVE; rtmsg_ifinfo(RTM_NEWLINK, slave_dev, IFF_SLAVE, GFP_KERNEL); return 0; } @@ -1465,6 +1464,9 @@ } } + /* set slave flag before open to prevent IPv6 addrconf */ + slave_dev->flags |= IFF_SLAVE; + /* open the slave since the application closed it */ res = dev_open(slave_dev); if (res) { @@ -1725,6 +1727,7 @@ dev_close(slave_dev); err_restore_mac: + slave_dev->flags &= ~IFF_SLAVE; if (!bond->params.fail_over_mac || BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) { /* XXX TODO - fom follow mode needs to change master's --- linux-4.4.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-4.4.0/drivers/net/ethernet/broadcom/tg3.c @@ -329,6 +329,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57785)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57761)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57765)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57786)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57791), .driver_data = TG3_DRV_DATA_FLAG_10_100_ONLY}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795), --- linux-4.4.0.orig/drivers/net/ethernet/ibm/Kconfig +++ linux-4.4.0/drivers/net/ethernet/ibm/Kconfig @@ -37,4 +37,14 @@ To compile the driver as a module, choose M here. The module will be called ehea. +config IBMVNIC + tristate "IBM Virtual NIC support" + depends on PPC_PSERIES + ---help--- + This driver supports Virtual NIC adapters on IBM i and IBM System p + systems. + + To compile this driver as a module, choose M here. The module will + be called ibmvnic. + endif # NET_VENDOR_IBM --- linux-4.4.0.orig/drivers/net/ethernet/ibm/Makefile +++ linux-4.4.0/drivers/net/ethernet/ibm/Makefile @@ -3,5 +3,6 @@ # obj-$(CONFIG_IBMVETH) += ibmveth.o +obj-$(CONFIG_IBMVNIC) += ibmvnic.o obj-$(CONFIG_IBM_EMAC) += emac/ obj-$(CONFIG_EHEA) += ehea/ --- linux-4.4.0.orig/drivers/net/ethernet/ibm/ibmvnic.c +++ linux-4.4.0/drivers/net/ethernet/ibm/ibmvnic.c @@ -0,0 +1,3585 @@ +/**************************************************************************/ +/* */ +/* IBM System i and System p Virtual NIC Device Driver */ +/* Copyright (C) 2014 IBM Corp. */ +/* Santiago Leon (santi_leon@yahoo.com) */ +/* Thomas Falcon (tlfalcon@linux.vnet.ibm.com) */ +/* John Allen (jallen@linux.vnet.ibm.com) */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. */ +/* */ +/* This module contains the implementation of a virtual ethernet device */ +/* for use with IBM i/p Series LPAR Linux. It utilizes the logical LAN */ +/* option of the RS/6000 Platform Architecture to interface with virtual */ +/* ethernet NICs that are presented to the partition by the hypervisor. */ +/* */ +/* Messages are passed between the VNIC driver and the VNIC server using */ +/* Command/Response Queues (CRQs) and sub CRQs (sCRQs). CRQs are used to */ +/* issue and receive commands that initiate communication with the server */ +/* on driver initialization. Sub CRQs (sCRQs) are similar to CRQs, but */ +/* are used by the driver to notify the server that a packet is */ +/* ready for transmission or that a buffer has been added to receive a */ +/* packet. Subsequently, sCRQs are used by the server to notify the */ +/* driver that a packet transmission has been completed or that a packet */ +/* has been received and placed in a waiting buffer. */ +/* */ +/* In lieu of a more conventional "on-the-fly" DMA mapping strategy in */ +/* which skbs are DMA mapped and immediately unmapped when the transmit */ +/* or receive has been completed, the VNIC driver is required to use */ +/* "long term mapping". This entails that large, continuous DMA mapped */ +/* buffers are allocated on driver initialization and these buffers are */ +/* then continuously reused to pass skbs to and from the VNIC server. */ +/* */ +/**************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ibmvnic.h" + +static const char ibmvnic_driver_name[] = "ibmvnic"; +static const char ibmvnic_driver_string[] = "IBM System i/p Virtual NIC Driver"; + +MODULE_AUTHOR("Santiago Leon "); +MODULE_DESCRIPTION("IBM System i/p Virtual NIC Driver"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(IBMVNIC_DRIVER_VERSION); + +static int ibmvnic_version = IBMVNIC_INITIAL_VERSION; +static int ibmvnic_remove(struct vio_dev *); +static void release_sub_crqs(struct ibmvnic_adapter *); +static int ibmvnic_reset_crq(struct ibmvnic_adapter *); +static int ibmvnic_send_crq_init(struct ibmvnic_adapter *); +static int ibmvnic_reenable_crq_queue(struct ibmvnic_adapter *); +static int ibmvnic_send_crq(struct ibmvnic_adapter *, union ibmvnic_crq *); +static int send_subcrq(struct ibmvnic_adapter *adapter, u64 remote_handle, + union sub_crq *sub_crq); +static irqreturn_t ibmvnic_interrupt_rx(int irq, void *instance); +static int enable_scrq_irq(struct ibmvnic_adapter *, + struct ibmvnic_sub_crq_queue *); +static int disable_scrq_irq(struct ibmvnic_adapter *, + struct ibmvnic_sub_crq_queue *); +static int pending_scrq(struct ibmvnic_adapter *, + struct ibmvnic_sub_crq_queue *); +static union sub_crq *ibmvnic_next_scrq(struct ibmvnic_adapter *, + struct ibmvnic_sub_crq_queue *); +static int ibmvnic_poll(struct napi_struct *napi, int data); +static void send_map_query(struct ibmvnic_adapter *adapter); +static void send_request_map(struct ibmvnic_adapter *, dma_addr_t, __be32, u8); +static void send_request_unmap(struct ibmvnic_adapter *, u8); + +struct ibmvnic_stat { + char name[ETH_GSTRING_LEN]; + int offset; +}; + +#define IBMVNIC_STAT_OFF(stat) (offsetof(struct ibmvnic_adapter, stats) + \ + offsetof(struct ibmvnic_statistics, stat)) +#define IBMVNIC_GET_STAT(a, off) (*((u64 *)(((unsigned long)(a)) + off))) + +static const struct ibmvnic_stat ibmvnic_stats[] = { + {"rx_packets", IBMVNIC_STAT_OFF(rx_packets)}, + {"rx_bytes", IBMVNIC_STAT_OFF(rx_bytes)}, + {"tx_packets", IBMVNIC_STAT_OFF(tx_packets)}, + {"tx_bytes", IBMVNIC_STAT_OFF(tx_bytes)}, + {"ucast_tx_packets", IBMVNIC_STAT_OFF(ucast_tx_packets)}, + {"ucast_rx_packets", IBMVNIC_STAT_OFF(ucast_rx_packets)}, + {"mcast_tx_packets", IBMVNIC_STAT_OFF(mcast_tx_packets)}, + {"mcast_rx_packets", IBMVNIC_STAT_OFF(mcast_rx_packets)}, + {"bcast_tx_packets", IBMVNIC_STAT_OFF(bcast_tx_packets)}, + {"bcast_rx_packets", IBMVNIC_STAT_OFF(bcast_rx_packets)}, + {"align_errors", IBMVNIC_STAT_OFF(align_errors)}, + {"fcs_errors", IBMVNIC_STAT_OFF(fcs_errors)}, + {"single_collision_frames", IBMVNIC_STAT_OFF(single_collision_frames)}, + {"multi_collision_frames", IBMVNIC_STAT_OFF(multi_collision_frames)}, + {"sqe_test_errors", IBMVNIC_STAT_OFF(sqe_test_errors)}, + {"deferred_tx", IBMVNIC_STAT_OFF(deferred_tx)}, + {"late_collisions", IBMVNIC_STAT_OFF(late_collisions)}, + {"excess_collisions", IBMVNIC_STAT_OFF(excess_collisions)}, + {"internal_mac_tx_errors", IBMVNIC_STAT_OFF(internal_mac_tx_errors)}, + {"carrier_sense", IBMVNIC_STAT_OFF(carrier_sense)}, + {"too_long_frames", IBMVNIC_STAT_OFF(too_long_frames)}, + {"internal_mac_rx_errors", IBMVNIC_STAT_OFF(internal_mac_rx_errors)}, +}; + +static long h_reg_sub_crq(unsigned long unit_address, unsigned long token, + unsigned long length, unsigned long *number, + unsigned long *irq) +{ + unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; + long rc; + + rc = plpar_hcall(H_REG_SUB_CRQ, retbuf, unit_address, token, length); + *number = retbuf[0]; + *irq = retbuf[1]; + + return rc; +} + +/* net_device_ops functions */ + +static void init_rx_pool(struct ibmvnic_adapter *adapter, + struct ibmvnic_rx_pool *rx_pool, int num, int index, + int buff_size, int active) +{ + netdev_dbg(adapter->netdev, + "Initializing rx_pool %d, %d buffs, %d bytes each\n", + index, num, buff_size); + rx_pool->size = num; + rx_pool->index = index; + rx_pool->buff_size = buff_size; + rx_pool->active = active; +} + +static int alloc_long_term_buff(struct ibmvnic_adapter *adapter, + struct ibmvnic_long_term_buff *ltb, int size) +{ + struct device *dev = &adapter->vdev->dev; + + ltb->size = size; + ltb->buff = dma_alloc_coherent(dev, ltb->size, <b->addr, + GFP_KERNEL); + + if (!ltb->buff) { + dev_err(dev, "Couldn't alloc long term buffer\n"); + return -ENOMEM; + } + ltb->map_id = adapter->map_id; + adapter->map_id++; + send_request_map(adapter, ltb->addr, + ltb->size, ltb->map_id); + init_completion(&adapter->fw_done); + wait_for_completion(&adapter->fw_done); + return 0; +} + +static void free_long_term_buff(struct ibmvnic_adapter *adapter, + struct ibmvnic_long_term_buff *ltb) +{ + struct device *dev = &adapter->vdev->dev; + + dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr); + send_request_unmap(adapter, ltb->map_id); +} + +static int alloc_rx_pool(struct ibmvnic_adapter *adapter, + struct ibmvnic_rx_pool *pool) +{ + struct device *dev = &adapter->vdev->dev; + int i; + + pool->free_map = kcalloc(pool->size, sizeof(int), GFP_KERNEL); + if (!pool->free_map) + return -ENOMEM; + + pool->rx_buff = kcalloc(pool->size, sizeof(struct ibmvnic_rx_buff), + GFP_KERNEL); + + if (!pool->rx_buff) { + dev_err(dev, "Couldn't alloc rx buffers\n"); + kfree(pool->free_map); + return -ENOMEM; + } + + if (alloc_long_term_buff(adapter, &pool->long_term_buff, + pool->size * pool->buff_size)) { + kfree(pool->free_map); + kfree(pool->rx_buff); + return -ENOMEM; + } + + for (i = 0; i < pool->size; ++i) + pool->free_map[i] = i; + + atomic_set(&pool->available, 0); + pool->next_alloc = 0; + pool->next_free = 0; + + return 0; +} + +static void replenish_rx_pool(struct ibmvnic_adapter *adapter, + struct ibmvnic_rx_pool *pool) +{ + int count = pool->size - atomic_read(&pool->available); + struct device *dev = &adapter->vdev->dev; + int buffers_added = 0; + unsigned long lpar_rc; + union sub_crq sub_crq; + struct sk_buff *skb; + unsigned int offset; + dma_addr_t dma_addr; + unsigned char *dst; + u64 *handle_array; + int shift = 0; + int index; + int i; + + handle_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + + be32_to_cpu(adapter->login_rsp_buf-> + off_rxadd_subcrqs)); + + for (i = 0; i < count; ++i) { + skb = alloc_skb(pool->buff_size, GFP_ATOMIC); + if (!skb) { + dev_err(dev, "Couldn't replenish rx buff\n"); + adapter->replenish_no_mem++; + break; + } + + index = pool->free_map[pool->next_free]; + + if (pool->rx_buff[index].skb) + dev_err(dev, "Inconsistent free_map!\n"); + + /* Copy the skb to the long term mapped DMA buffer */ + offset = index * pool->buff_size; + dst = pool->long_term_buff.buff + offset; + memset(dst, 0, pool->buff_size); + dma_addr = pool->long_term_buff.addr + offset; + pool->rx_buff[index].data = dst; + + pool->free_map[pool->next_free] = IBMVNIC_INVALID_MAP; + pool->rx_buff[index].dma = dma_addr; + pool->rx_buff[index].skb = skb; + pool->rx_buff[index].pool_index = pool->index; + pool->rx_buff[index].size = pool->buff_size; + + memset(&sub_crq, 0, sizeof(sub_crq)); + sub_crq.rx_add.first = IBMVNIC_CRQ_CMD; + sub_crq.rx_add.correlator = + cpu_to_be64((u64)&pool->rx_buff[index]); + sub_crq.rx_add.ioba = cpu_to_be32(dma_addr); + sub_crq.rx_add.map_id = pool->long_term_buff.map_id; + + /* The length field of the sCRQ is defined to be 24 bits so the + * buffer size needs to be left shifted by a byte before it is + * converted to big endian to prevent the last byte from being + * truncated. + */ +#ifdef __LITTLE_ENDIAN__ + shift = 8; +#endif + sub_crq.rx_add.len = cpu_to_be32(pool->buff_size << shift); + + lpar_rc = send_subcrq(adapter, handle_array[pool->index], + &sub_crq); + if (lpar_rc != H_SUCCESS) + goto failure; + + buffers_added++; + adapter->replenish_add_buff_success++; + pool->next_free = (pool->next_free + 1) % pool->size; + } + atomic_add(buffers_added, &pool->available); + return; + +failure: + dev_info(dev, "replenish pools failure\n"); + pool->free_map[pool->next_free] = index; + pool->rx_buff[index].skb = NULL; + if (!dma_mapping_error(dev, dma_addr)) + dma_unmap_single(dev, dma_addr, pool->buff_size, + DMA_FROM_DEVICE); + + dev_kfree_skb_any(skb); + adapter->replenish_add_buff_failure++; + atomic_add(buffers_added, &pool->available); +} + +static void replenish_pools(struct ibmvnic_adapter *adapter) +{ + int i; + + if (adapter->migrated) + return; + + adapter->replenish_task_cycles++; + for (i = 0; i < be32_to_cpu(adapter->login_rsp_buf->num_rxadd_subcrqs); + i++) { + if (adapter->rx_pool[i].active) + replenish_rx_pool(adapter, &adapter->rx_pool[i]); + } +} + +static void free_rx_pool(struct ibmvnic_adapter *adapter, + struct ibmvnic_rx_pool *pool) +{ + int i; + + kfree(pool->free_map); + pool->free_map = NULL; + + if (!pool->rx_buff) + return; + + for (i = 0; i < pool->size; i++) { + if (pool->rx_buff[i].skb) { + dev_kfree_skb_any(pool->rx_buff[i].skb); + pool->rx_buff[i].skb = NULL; + } + } + kfree(pool->rx_buff); + pool->rx_buff = NULL; +} + +static int ibmvnic_open(struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_tx_pool *tx_pool; + union ibmvnic_crq crq; + int rxadd_subcrqs; + u64 *size_array; + int tx_subcrqs; + int i, j; + + rxadd_subcrqs = + be32_to_cpu(adapter->login_rsp_buf->num_rxadd_subcrqs); + tx_subcrqs = + be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs); + size_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + + be32_to_cpu(adapter->login_rsp_buf-> + off_rxadd_buff_size)); + adapter->map_id = 1; + adapter->napi = kcalloc(adapter->req_rx_queues, + sizeof(struct napi_struct), GFP_KERNEL); + if (!adapter->napi) + goto alloc_napi_failed; + for (i = 0; i < adapter->req_rx_queues; i++) { + netif_napi_add(netdev, &adapter->napi[i], ibmvnic_poll, + NAPI_POLL_WEIGHT); + napi_enable(&adapter->napi[i]); + } + adapter->rx_pool = + kcalloc(rxadd_subcrqs, sizeof(struct ibmvnic_rx_pool), GFP_KERNEL); + + if (!adapter->rx_pool) + goto rx_pool_arr_alloc_failed; + send_map_query(adapter); + for (i = 0; i < rxadd_subcrqs; i++) { + init_rx_pool(adapter, &adapter->rx_pool[i], + IBMVNIC_BUFFS_PER_POOL, i, + be64_to_cpu(size_array[i]), 1); + if (alloc_rx_pool(adapter, &adapter->rx_pool[i])) { + dev_err(dev, "Couldn't alloc rx pool\n"); + goto rx_pool_alloc_failed; + } + } + adapter->tx_pool = + kcalloc(tx_subcrqs, sizeof(struct ibmvnic_tx_pool), GFP_KERNEL); + + if (!adapter->tx_pool) + goto tx_pool_arr_alloc_failed; + for (i = 0; i < tx_subcrqs; i++) { + tx_pool = &adapter->tx_pool[i]; + tx_pool->tx_buff = + kcalloc(adapter->max_tx_entries_per_subcrq, + sizeof(struct ibmvnic_tx_buff), GFP_KERNEL); + if (!tx_pool->tx_buff) + goto tx_pool_alloc_failed; + + if (alloc_long_term_buff(adapter, &tx_pool->long_term_buff, + adapter->max_tx_entries_per_subcrq * + adapter->req_mtu)) + goto tx_ltb_alloc_failed; + + tx_pool->free_map = + kcalloc(adapter->max_tx_entries_per_subcrq, + sizeof(int), GFP_KERNEL); + if (!tx_pool->free_map) + goto tx_fm_alloc_failed; + + for (j = 0; j < adapter->max_tx_entries_per_subcrq; j++) + tx_pool->free_map[j] = j; + + tx_pool->consumer_index = 0; + tx_pool->producer_index = 0; + } + adapter->bounce_buffer_size = + (netdev->mtu + ETH_HLEN - 1) / PAGE_SIZE + 1; + adapter->bounce_buffer = kmalloc(adapter->bounce_buffer_size, + GFP_KERNEL); + if (!adapter->bounce_buffer) + goto bounce_alloc_failed; + + adapter->bounce_buffer_dma = dma_map_single(dev, adapter->bounce_buffer, + adapter->bounce_buffer_size, + DMA_TO_DEVICE); + if (dma_mapping_error(dev, adapter->bounce_buffer_dma)) { + dev_err(dev, "Couldn't map tx bounce buffer\n"); + goto bounce_map_failed; + } + replenish_pools(adapter); + + /* We're ready to receive frames, enable the sub-crq interrupts and + * set the logical link state to up + */ + for (i = 0; i < adapter->req_rx_queues; i++) + enable_scrq_irq(adapter, adapter->rx_scrq[i]); + + for (i = 0; i < adapter->req_tx_queues; i++) + enable_scrq_irq(adapter, adapter->tx_scrq[i]); + + memset(&crq, 0, sizeof(crq)); + crq.logical_link_state.first = IBMVNIC_CRQ_CMD; + crq.logical_link_state.cmd = LOGICAL_LINK_STATE; + crq.logical_link_state.link_state = IBMVNIC_LOGICAL_LNK_UP; + ibmvnic_send_crq(adapter, &crq); + + netif_start_queue(netdev); + return 0; + +bounce_map_failed: + kfree(adapter->bounce_buffer); +bounce_alloc_failed: + i = tx_subcrqs - 1; + kfree(adapter->tx_pool[i].free_map); +tx_fm_alloc_failed: + free_long_term_buff(adapter, &adapter->tx_pool[i].long_term_buff); +tx_ltb_alloc_failed: + kfree(adapter->tx_pool[i].tx_buff); +tx_pool_alloc_failed: + for (j = 0; j < i; j++) { + kfree(adapter->tx_pool[j].tx_buff); + free_long_term_buff(adapter, + &adapter->tx_pool[j].long_term_buff); + kfree(adapter->tx_pool[j].free_map); + } + kfree(adapter->tx_pool); + adapter->tx_pool = NULL; +tx_pool_arr_alloc_failed: + i = rxadd_subcrqs; +rx_pool_alloc_failed: + for (j = 0; j < i; j++) { + free_rx_pool(adapter, &adapter->rx_pool[j]); + free_long_term_buff(adapter, + &adapter->rx_pool[j].long_term_buff); + } + kfree(adapter->rx_pool); + adapter->rx_pool = NULL; +rx_pool_arr_alloc_failed: + for (i = 0; i < adapter->req_rx_queues; i++) + napi_enable(&adapter->napi[i]); +alloc_napi_failed: + return -ENOMEM; +} + +static int ibmvnic_close(struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + struct device *dev = &adapter->vdev->dev; + union ibmvnic_crq crq; + int i; + + adapter->closing = true; + + for (i = 0; i < adapter->req_rx_queues; i++) + napi_disable(&adapter->napi[i]); + + netif_stop_queue(netdev); + + if (adapter->bounce_buffer) { + if (!dma_mapping_error(dev, adapter->bounce_buffer_dma)) { + dma_unmap_single(&adapter->vdev->dev, + adapter->bounce_buffer_dma, + adapter->bounce_buffer_size, + DMA_BIDIRECTIONAL); + adapter->bounce_buffer_dma = DMA_ERROR_CODE; + } + kfree(adapter->bounce_buffer); + adapter->bounce_buffer = NULL; + } + + memset(&crq, 0, sizeof(crq)); + crq.logical_link_state.first = IBMVNIC_CRQ_CMD; + crq.logical_link_state.cmd = LOGICAL_LINK_STATE; + crq.logical_link_state.link_state = IBMVNIC_LOGICAL_LNK_DN; + ibmvnic_send_crq(adapter, &crq); + + for (i = 0; i < be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs); + i++) { + kfree(adapter->tx_pool[i].tx_buff); + free_long_term_buff(adapter, + &adapter->tx_pool[i].long_term_buff); + kfree(adapter->tx_pool[i].free_map); + } + kfree(adapter->tx_pool); + adapter->tx_pool = NULL; + + for (i = 0; i < be32_to_cpu(adapter->login_rsp_buf->num_rxadd_subcrqs); + i++) { + free_rx_pool(adapter, &adapter->rx_pool[i]); + free_long_term_buff(adapter, + &adapter->rx_pool[i].long_term_buff); + } + kfree(adapter->rx_pool); + adapter->rx_pool = NULL; + + adapter->closing = false; + + return 0; +} + +static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + int queue_num = skb_get_queue_mapping(skb); + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_tx_buff *tx_buff = NULL; + struct ibmvnic_tx_pool *tx_pool; + unsigned int tx_send_failed = 0; + unsigned int tx_map_failed = 0; + unsigned int tx_dropped = 0; + unsigned int tx_packets = 0; + unsigned int tx_bytes = 0; + dma_addr_t data_dma_addr; + struct netdev_queue *txq; + bool used_bounce = false; + unsigned long lpar_rc; + union sub_crq tx_crq; + unsigned int offset; + unsigned char *dst; + u64 *handle_array; + int index = 0; + int ret = 0; + + tx_pool = &adapter->tx_pool[queue_num]; + txq = netdev_get_tx_queue(netdev, skb_get_queue_mapping(skb)); + handle_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + + be32_to_cpu(adapter->login_rsp_buf-> + off_txsubm_subcrqs)); + if (adapter->migrated) { + tx_send_failed++; + tx_dropped++; + ret = NETDEV_TX_BUSY; + goto out; + } + + index = tx_pool->free_map[tx_pool->consumer_index]; + offset = index * adapter->req_mtu; + dst = tx_pool->long_term_buff.buff + offset; + memset(dst, 0, adapter->req_mtu); + skb_copy_from_linear_data(skb, dst, skb->len); + data_dma_addr = tx_pool->long_term_buff.addr + offset; + + tx_pool->consumer_index = + (tx_pool->consumer_index + 1) % + adapter->max_tx_entries_per_subcrq; + + tx_buff = &tx_pool->tx_buff[index]; + tx_buff->skb = skb; + tx_buff->data_dma[0] = data_dma_addr; + tx_buff->data_len[0] = skb->len; + tx_buff->index = index; + tx_buff->pool_index = queue_num; + tx_buff->last_frag = true; + tx_buff->used_bounce = used_bounce; + + memset(&tx_crq, 0, sizeof(tx_crq)); + tx_crq.v1.first = IBMVNIC_CRQ_CMD; + tx_crq.v1.type = IBMVNIC_TX_DESC; + tx_crq.v1.n_crq_elem = 1; + tx_crq.v1.n_sge = 1; + tx_crq.v1.flags1 = IBMVNIC_TX_COMP_NEEDED; + tx_crq.v1.correlator = cpu_to_be32(index); + tx_crq.v1.dma_reg = cpu_to_be16(tx_pool->long_term_buff.map_id); + tx_crq.v1.sge_len = cpu_to_be32(skb->len); + tx_crq.v1.ioba = cpu_to_be64(data_dma_addr); + + if (adapter->vlan_header_insertion) { + tx_crq.v1.flags2 |= IBMVNIC_TX_VLAN_INSERT; + tx_crq.v1.vlan_id = cpu_to_be16(skb->vlan_tci); + } + + if (skb->protocol == htons(ETH_P_IP)) { + if (ip_hdr(skb)->version == 4) + tx_crq.v1.flags1 |= IBMVNIC_TX_PROT_IPV4; + else if (ip_hdr(skb)->version == 6) + tx_crq.v1.flags1 |= IBMVNIC_TX_PROT_IPV6; + + if (ip_hdr(skb)->protocol == IPPROTO_TCP) + tx_crq.v1.flags1 |= IBMVNIC_TX_PROT_TCP; + else if (ip_hdr(skb)->protocol != IPPROTO_TCP) + tx_crq.v1.flags1 |= IBMVNIC_TX_PROT_UDP; + } + + if (skb->ip_summed == CHECKSUM_PARTIAL) + tx_crq.v1.flags1 |= IBMVNIC_TX_CHKSUM_OFFLOAD; + + lpar_rc = send_subcrq(adapter, handle_array[0], &tx_crq); + + if (lpar_rc != H_SUCCESS) { + dev_err(dev, "tx failed with code %ld\n", lpar_rc); + + if (tx_pool->consumer_index == 0) + tx_pool->consumer_index = + adapter->max_tx_entries_per_subcrq - 1; + else + tx_pool->consumer_index--; + + tx_send_failed++; + tx_dropped++; + ret = NETDEV_TX_BUSY; + goto out; + } + tx_packets++; + tx_bytes += skb->len; + txq->trans_start = jiffies; + ret = NETDEV_TX_OK; + +out: + netdev->stats.tx_dropped += tx_dropped; + netdev->stats.tx_bytes += tx_bytes; + netdev->stats.tx_packets += tx_packets; + adapter->tx_send_failed += tx_send_failed; + adapter->tx_map_failed += tx_map_failed; + + return ret; +} + +static void ibmvnic_set_multi(struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + struct netdev_hw_addr *ha; + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.request_capability.first = IBMVNIC_CRQ_CMD; + crq.request_capability.cmd = REQUEST_CAPABILITY; + + if (netdev->flags & IFF_PROMISC) { + if (!adapter->promisc_supported) + return; + } else { + if (netdev->flags & IFF_ALLMULTI) { + /* Accept all multicast */ + memset(&crq, 0, sizeof(crq)); + crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD; + crq.multicast_ctrl.cmd = MULTICAST_CTRL; + crq.multicast_ctrl.flags = IBMVNIC_ENABLE_ALL; + ibmvnic_send_crq(adapter, &crq); + } else if (netdev_mc_empty(netdev)) { + /* Reject all multicast */ + memset(&crq, 0, sizeof(crq)); + crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD; + crq.multicast_ctrl.cmd = MULTICAST_CTRL; + crq.multicast_ctrl.flags = IBMVNIC_DISABLE_ALL; + ibmvnic_send_crq(adapter, &crq); + } else { + /* Accept one or more multicast(s) */ + netdev_for_each_mc_addr(ha, netdev) { + memset(&crq, 0, sizeof(crq)); + crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD; + crq.multicast_ctrl.cmd = MULTICAST_CTRL; + crq.multicast_ctrl.flags = IBMVNIC_ENABLE_MC; + ether_addr_copy(&crq.multicast_ctrl.mac_addr[0], + ha->addr); + ibmvnic_send_crq(adapter, &crq); + } + } + } +} + +static int ibmvnic_set_mac(struct net_device *netdev, void *p) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + struct sockaddr *addr = p; + union ibmvnic_crq crq; + + if (!is_valid_ether_addr(addr->sa_data)) + return -EADDRNOTAVAIL; + + memset(&crq, 0, sizeof(crq)); + crq.change_mac_addr.first = IBMVNIC_CRQ_CMD; + crq.change_mac_addr.cmd = CHANGE_MAC_ADDR; + ether_addr_copy(&crq.change_mac_addr.mac_addr[0], addr->sa_data); + ibmvnic_send_crq(adapter, &crq); + /* netdev->dev_addr is changed in handle_change_mac_rsp function */ + return 0; +} + +static int ibmvnic_change_mtu(struct net_device *netdev, int new_mtu) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + + if (new_mtu > adapter->req_mtu || new_mtu < adapter->min_mtu) + return -EINVAL; + + netdev->mtu = new_mtu; + return 0; +} + +static void ibmvnic_tx_timeout(struct net_device *dev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(dev); + int rc; + + /* Adapter timed out, resetting it */ + release_sub_crqs(adapter); + rc = ibmvnic_reset_crq(adapter); + if (rc) + dev_err(&adapter->vdev->dev, "Adapter timeout, reset failed\n"); + else + ibmvnic_send_crq_init(adapter); +} + +static void remove_buff_from_pool(struct ibmvnic_adapter *adapter, + struct ibmvnic_rx_buff *rx_buff) +{ + struct ibmvnic_rx_pool *pool = &adapter->rx_pool[rx_buff->pool_index]; + + rx_buff->skb = NULL; + + pool->free_map[pool->next_alloc] = (int)(rx_buff - pool->rx_buff); + pool->next_alloc = (pool->next_alloc + 1) % pool->size; + + atomic_dec(&pool->available); +} + +static int ibmvnic_poll(struct napi_struct *napi, int budget) +{ + struct net_device *netdev = napi->dev; + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + int scrq_num = (int)(napi - adapter->napi); + int frames_processed = 0; +restart_poll: + while (frames_processed < budget) { + struct sk_buff *skb; + struct ibmvnic_rx_buff *rx_buff; + union sub_crq *next; + u32 length; + u16 offset; + u8 flags = 0; + + if (!pending_scrq(adapter, adapter->rx_scrq[scrq_num])) + break; + next = ibmvnic_next_scrq(adapter, adapter->rx_scrq[scrq_num]); + rx_buff = + (struct ibmvnic_rx_buff *)be64_to_cpu(next-> + rx_comp.correlator); + /* do error checking */ + if (next->rx_comp.rc) { + netdev_err(netdev, "rx error %x\n", next->rx_comp.rc); + /* free the entry */ + next->rx_comp.first = 0; + remove_buff_from_pool(adapter, rx_buff); + break; + } + + length = be32_to_cpu(next->rx_comp.len); + offset = be16_to_cpu(next->rx_comp.off_frame_data); + flags = next->rx_comp.flags; + skb = rx_buff->skb; + skb_copy_to_linear_data(skb, rx_buff->data + offset, + length); + skb->vlan_tci = be16_to_cpu(next->rx_comp.vlan_tci); + /* free the entry */ + next->rx_comp.first = 0; + remove_buff_from_pool(adapter, rx_buff); + + skb_put(skb, length); + skb->protocol = eth_type_trans(skb, netdev); + + if (flags & IBMVNIC_IP_CHKSUM_GOOD && + flags & IBMVNIC_TCP_UDP_CHKSUM_GOOD) { + skb->ip_summed = CHECKSUM_UNNECESSARY; + } + + length = skb->len; + napi_gro_receive(napi, skb); /* send it up */ + netdev->stats.rx_packets++; + netdev->stats.rx_bytes += length; + frames_processed++; + } + replenish_pools(adapter); + + if (frames_processed < budget) { + enable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]); + napi_complete(napi); + if (pending_scrq(adapter, adapter->rx_scrq[scrq_num]) && + napi_reschedule(napi)) { + disable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]); + goto restart_poll; + } + } + return frames_processed; +} + +#ifdef CONFIG_NET_POLL_CONTROLLER +static void ibmvnic_netpoll_controller(struct net_device *dev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(dev); + int i; + + replenish_pools(netdev_priv(dev)); + for (i = 0; i < adapter->req_rx_queues; i++) + ibmvnic_interrupt_rx(adapter->rx_scrq[i]->irq, + adapter->rx_scrq[i]); +} +#endif + +static const struct net_device_ops ibmvnic_netdev_ops = { + .ndo_open = ibmvnic_open, + .ndo_stop = ibmvnic_close, + .ndo_start_xmit = ibmvnic_xmit, + .ndo_set_rx_mode = ibmvnic_set_multi, + .ndo_set_mac_address = ibmvnic_set_mac, + .ndo_validate_addr = eth_validate_addr, + .ndo_change_mtu = ibmvnic_change_mtu, + .ndo_tx_timeout = ibmvnic_tx_timeout, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = ibmvnic_netpoll_controller, +#endif +}; + +/* ethtool functions */ + +static int ibmvnic_get_settings(struct net_device *netdev, + struct ethtool_cmd *cmd) +{ + cmd->supported = (SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg | + SUPPORTED_FIBRE); + cmd->advertising = (ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg | + ADVERTISED_FIBRE); + ethtool_cmd_speed_set(cmd, SPEED_1000); + cmd->duplex = DUPLEX_FULL; + cmd->port = PORT_FIBRE; + cmd->phy_address = 0; + cmd->transceiver = XCVR_INTERNAL; + cmd->autoneg = AUTONEG_ENABLE; + cmd->maxtxpkt = 0; + cmd->maxrxpkt = 1; + return 0; +} + +static void ibmvnic_get_drvinfo(struct net_device *dev, + struct ethtool_drvinfo *info) +{ + strlcpy(info->driver, ibmvnic_driver_name, sizeof(info->driver)); + strlcpy(info->version, IBMVNIC_DRIVER_VERSION, sizeof(info->version)); +} + +static u32 ibmvnic_get_msglevel(struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + + return adapter->msg_enable; +} + +static void ibmvnic_set_msglevel(struct net_device *netdev, u32 data) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + + adapter->msg_enable = data; +} + +static u32 ibmvnic_get_link(struct net_device *netdev) +{ + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + + /* Don't need to send a query because we request a logical link up at + * init and then we wait for link state indications + */ + return adapter->logical_link_state; +} + +static void ibmvnic_get_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ring) +{ + ring->rx_max_pending = 0; + ring->tx_max_pending = 0; + ring->rx_mini_max_pending = 0; + ring->rx_jumbo_max_pending = 0; + ring->rx_pending = 0; + ring->tx_pending = 0; + ring->rx_mini_pending = 0; + ring->rx_jumbo_pending = 0; +} + +static void ibmvnic_get_strings(struct net_device *dev, u32 stringset, u8 *data) +{ + int i; + + if (stringset != ETH_SS_STATS) + return; + + for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); i++, data += ETH_GSTRING_LEN) + memcpy(data, ibmvnic_stats[i].name, ETH_GSTRING_LEN); +} + +static int ibmvnic_get_sset_count(struct net_device *dev, int sset) +{ + switch (sset) { + case ETH_SS_STATS: + return ARRAY_SIZE(ibmvnic_stats); + default: + return -EOPNOTSUPP; + } +} + +static void ibmvnic_get_ethtool_stats(struct net_device *dev, + struct ethtool_stats *stats, u64 *data) +{ + struct ibmvnic_adapter *adapter = netdev_priv(dev); + union ibmvnic_crq crq; + int i; + + memset(&crq, 0, sizeof(crq)); + crq.request_statistics.first = IBMVNIC_CRQ_CMD; + crq.request_statistics.cmd = REQUEST_STATISTICS; + crq.request_statistics.ioba = cpu_to_be32(adapter->stats_token); + crq.request_statistics.len = + cpu_to_be32(sizeof(struct ibmvnic_statistics)); + ibmvnic_send_crq(adapter, &crq); + + /* Wait for data to be written */ + init_completion(&adapter->stats_done); + wait_for_completion(&adapter->stats_done); + + for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); i++) + data[i] = IBMVNIC_GET_STAT(adapter, ibmvnic_stats[i].offset); +} + +static const struct ethtool_ops ibmvnic_ethtool_ops = { + .get_settings = ibmvnic_get_settings, + .get_drvinfo = ibmvnic_get_drvinfo, + .get_msglevel = ibmvnic_get_msglevel, + .set_msglevel = ibmvnic_set_msglevel, + .get_link = ibmvnic_get_link, + .get_ringparam = ibmvnic_get_ringparam, + .get_strings = ibmvnic_get_strings, + .get_sset_count = ibmvnic_get_sset_count, + .get_ethtool_stats = ibmvnic_get_ethtool_stats, +}; + +/* Routines for managing CRQs/sCRQs */ + +static void release_sub_crq_queue(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + struct device *dev = &adapter->vdev->dev; + long rc; + + netdev_dbg(adapter->netdev, "Releasing sub-CRQ\n"); + + /* Close the sub-crqs */ + do { + rc = plpar_hcall_norets(H_FREE_SUB_CRQ, + adapter->vdev->unit_address, + scrq->crq_num); + } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); + + dma_unmap_single(dev, scrq->msg_token, 4 * PAGE_SIZE, + DMA_BIDIRECTIONAL); + free_pages((unsigned long)scrq->msgs, 2); + kfree(scrq); +} + +static struct ibmvnic_sub_crq_queue *init_sub_crq_queue(struct ibmvnic_adapter + *adapter) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_sub_crq_queue *scrq; + int rc; + + scrq = kmalloc(sizeof(*scrq), GFP_ATOMIC); + if (!scrq) + return NULL; + + scrq->msgs = (union sub_crq *)__get_free_pages(GFP_KERNEL, 2); + memset(scrq->msgs, 0, 4 * PAGE_SIZE); + if (!scrq->msgs) { + dev_warn(dev, "Couldn't allocate crq queue messages page\n"); + goto zero_page_failed; + } + + scrq->msg_token = dma_map_single(dev, scrq->msgs, 4 * PAGE_SIZE, + DMA_BIDIRECTIONAL); + if (dma_mapping_error(dev, scrq->msg_token)) { + dev_warn(dev, "Couldn't map crq queue messages page\n"); + goto map_failed; + } + + rc = h_reg_sub_crq(adapter->vdev->unit_address, scrq->msg_token, + 4 * PAGE_SIZE, &scrq->crq_num, &scrq->hw_irq); + + if (rc == H_RESOURCE) + rc = ibmvnic_reset_crq(adapter); + + if (rc == H_CLOSED) { + dev_warn(dev, "Partner adapter not ready, waiting.\n"); + } else if (rc) { + dev_warn(dev, "Error %d registering sub-crq\n", rc); + goto reg_failed; + } + + scrq->irq = irq_create_mapping(NULL, scrq->hw_irq); + if (scrq->irq == NO_IRQ) { + dev_err(dev, "Error mapping irq\n"); + goto map_irq_failed; + } + + scrq->adapter = adapter; + scrq->size = 4 * PAGE_SIZE / sizeof(*scrq->msgs); + scrq->cur = 0; + scrq->rx_skb_top = NULL; + spin_lock_init(&scrq->lock); + + netdev_dbg(adapter->netdev, + "sub-crq initialized, num %lx, hw_irq=%lx, irq=%x\n", + scrq->crq_num, scrq->hw_irq, scrq->irq); + + return scrq; + +map_irq_failed: + do { + rc = plpar_hcall_norets(H_FREE_SUB_CRQ, + adapter->vdev->unit_address, + scrq->crq_num); + } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); +reg_failed: + dma_unmap_single(dev, scrq->msg_token, 4 * PAGE_SIZE, + DMA_BIDIRECTIONAL); +map_failed: + free_pages((unsigned long)scrq->msgs, 2); +zero_page_failed: + kfree(scrq); + + return NULL; +} + +static void release_sub_crqs(struct ibmvnic_adapter *adapter) +{ + int i; + + if (adapter->tx_scrq) { + for (i = 0; i < adapter->req_tx_queues; i++) + if (adapter->tx_scrq[i]) { + free_irq(adapter->tx_scrq[i]->irq, + adapter->tx_scrq[i]); + release_sub_crq_queue(adapter, + adapter->tx_scrq[i]); + } + adapter->tx_scrq = NULL; + } + + if (adapter->rx_scrq) { + for (i = 0; i < adapter->req_rx_queues; i++) + if (adapter->rx_scrq[i]) { + free_irq(adapter->rx_scrq[i]->irq, + adapter->rx_scrq[i]); + release_sub_crq_queue(adapter, + adapter->rx_scrq[i]); + } + adapter->rx_scrq = NULL; + } + + adapter->requested_caps = 0; +} + +static int disable_scrq_irq(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + struct device *dev = &adapter->vdev->dev; + unsigned long rc; + + rc = plpar_hcall_norets(H_VIOCTL, adapter->vdev->unit_address, + H_DISABLE_VIO_INTERRUPT, scrq->hw_irq, 0, 0); + if (rc) + dev_err(dev, "Couldn't disable scrq irq 0x%lx. rc=%ld\n", + scrq->hw_irq, rc); + return rc; +} + +static int enable_scrq_irq(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + struct device *dev = &adapter->vdev->dev; + unsigned long rc; + + if (scrq->hw_irq > 0x100000000ULL) { + dev_err(dev, "bad hw_irq = %lx\n", scrq->hw_irq); + return 1; + } + + rc = plpar_hcall_norets(H_VIOCTL, adapter->vdev->unit_address, + H_ENABLE_VIO_INTERRUPT, scrq->hw_irq, 0, 0); + if (rc) + dev_err(dev, "Couldn't enable scrq irq 0x%lx. rc=%ld\n", + scrq->hw_irq, rc); + return rc; +} + +static int ibmvnic_complete_tx(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_tx_buff *txbuff; + union sub_crq *next; + int index; + int i, j; + +restart_loop: + while (pending_scrq(adapter, scrq)) { + unsigned int pool = scrq->pool_index; + + next = ibmvnic_next_scrq(adapter, scrq); + for (i = 0; i < next->tx_comp.num_comps; i++) { + if (next->tx_comp.rcs[i]) { + dev_err(dev, "tx error %x\n", + next->tx_comp.rcs[i]); + continue; + } + index = be32_to_cpu(next->tx_comp.correlators[i]); + txbuff = &adapter->tx_pool[pool].tx_buff[index]; + + for (j = 0; j < IBMVNIC_MAX_FRAGS_PER_CRQ; j++) { + if (!txbuff->data_dma[j]) + continue; + + txbuff->data_dma[j] = 0; + txbuff->used_bounce = false; + } + + if (txbuff->last_frag) + dev_kfree_skb_any(txbuff->skb); + + adapter->tx_pool[pool].free_map[adapter->tx_pool[pool]. + producer_index] = index; + adapter->tx_pool[pool].producer_index = + (adapter->tx_pool[pool].producer_index + 1) % + adapter->max_tx_entries_per_subcrq; + } + /* remove tx_comp scrq*/ + next->tx_comp.first = 0; + } + + enable_scrq_irq(adapter, scrq); + + if (pending_scrq(adapter, scrq)) { + disable_scrq_irq(adapter, scrq); + goto restart_loop; + } + + return 0; +} + +static irqreturn_t ibmvnic_interrupt_tx(int irq, void *instance) +{ + struct ibmvnic_sub_crq_queue *scrq = instance; + struct ibmvnic_adapter *adapter = scrq->adapter; + + disable_scrq_irq(adapter, scrq); + ibmvnic_complete_tx(adapter, scrq); + + return IRQ_HANDLED; +} + +static irqreturn_t ibmvnic_interrupt_rx(int irq, void *instance) +{ + struct ibmvnic_sub_crq_queue *scrq = instance; + struct ibmvnic_adapter *adapter = scrq->adapter; + + if (napi_schedule_prep(&adapter->napi[scrq->scrq_num])) { + disable_scrq_irq(adapter, scrq); + __napi_schedule(&adapter->napi[scrq->scrq_num]); + } + + return IRQ_HANDLED; +} + +static void init_sub_crqs(struct ibmvnic_adapter *adapter, int retry) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_sub_crq_queue **allqueues; + int registered_queues = 0; + union ibmvnic_crq crq; + int total_queues; + int more = 0; + int i, j; + int rc; + + if (!retry) { + /* Sub-CRQ entries are 32 byte long */ + int entries_page = 4 * PAGE_SIZE / (sizeof(u64) * 4); + + if (adapter->min_tx_entries_per_subcrq > entries_page || + adapter->min_rx_add_entries_per_subcrq > entries_page) { + dev_err(dev, "Fatal, invalid entries per sub-crq\n"); + goto allqueues_failed; + } + + /* Get the minimum between the queried max and the entries + * that fit in our PAGE_SIZE + */ + adapter->req_tx_entries_per_subcrq = + adapter->max_tx_entries_per_subcrq > entries_page ? + entries_page : adapter->max_tx_entries_per_subcrq; + adapter->req_rx_add_entries_per_subcrq = + adapter->max_rx_add_entries_per_subcrq > entries_page ? + entries_page : adapter->max_rx_add_entries_per_subcrq; + + /* Choosing the maximum number of queues supported by firmware*/ + adapter->req_tx_queues = adapter->min_tx_queues; + adapter->req_rx_queues = adapter->min_rx_queues; + adapter->req_rx_add_queues = adapter->min_rx_add_queues; + + adapter->req_mtu = adapter->max_mtu; + } + + total_queues = adapter->req_tx_queues + adapter->req_rx_queues; + + allqueues = kcalloc(total_queues, sizeof(*allqueues), GFP_ATOMIC); + if (!allqueues) + goto allqueues_failed; + + for (i = 0; i < total_queues; i++) { + allqueues[i] = init_sub_crq_queue(adapter); + if (!allqueues[i]) { + dev_warn(dev, "Couldn't allocate all sub-crqs\n"); + break; + } + registered_queues++; + } + + /* Make sure we were able to register the minimum number of queues */ + if (registered_queues < + adapter->min_tx_queues + adapter->min_rx_queues) { + dev_err(dev, "Fatal: Couldn't init min number of sub-crqs\n"); + goto tx_failed; + } + + /* Distribute the failed allocated queues*/ + for (i = 0; i < total_queues - registered_queues + more ; i++) { + netdev_dbg(adapter->netdev, "Reducing number of queues\n"); + switch (i % 3) { + case 0: + if (adapter->req_rx_queues > adapter->min_rx_queues) + adapter->req_rx_queues--; + else + more++; + break; + case 1: + if (adapter->req_tx_queues > adapter->min_tx_queues) + adapter->req_tx_queues--; + else + more++; + break; + } + } + + adapter->tx_scrq = kcalloc(adapter->req_tx_queues, + sizeof(*adapter->tx_scrq), GFP_ATOMIC); + if (!adapter->tx_scrq) + goto tx_failed; + + for (i = 0; i < adapter->req_tx_queues; i++) { + adapter->tx_scrq[i] = allqueues[i]; + adapter->tx_scrq[i]->pool_index = i; + rc = request_irq(adapter->tx_scrq[i]->irq, ibmvnic_interrupt_tx, + 0, "ibmvnic_tx", adapter->tx_scrq[i]); + if (rc) { + dev_err(dev, "Couldn't register tx irq 0x%x. rc=%d\n", + adapter->tx_scrq[i]->irq, rc); + goto req_tx_irq_failed; + } + } + + adapter->rx_scrq = kcalloc(adapter->req_rx_queues, + sizeof(*adapter->rx_scrq), GFP_ATOMIC); + if (!adapter->rx_scrq) + goto rx_failed; + + for (i = 0; i < adapter->req_rx_queues; i++) { + adapter->rx_scrq[i] = allqueues[i + adapter->req_tx_queues]; + adapter->rx_scrq[i]->scrq_num = i; + rc = request_irq(adapter->rx_scrq[i]->irq, ibmvnic_interrupt_rx, + 0, "ibmvnic_rx", adapter->rx_scrq[i]); + if (rc) { + dev_err(dev, "Couldn't register rx irq 0x%x. rc=%d\n", + adapter->rx_scrq[i]->irq, rc); + goto req_rx_irq_failed; + } + } + + memset(&crq, 0, sizeof(crq)); + crq.request_capability.first = IBMVNIC_CRQ_CMD; + crq.request_capability.cmd = REQUEST_CAPABILITY; + + crq.request_capability.capability = cpu_to_be16(REQ_TX_QUEUES); + crq.request_capability.number = cpu_to_be32(adapter->req_tx_queues); + ibmvnic_send_crq(adapter, &crq); + + crq.request_capability.capability = cpu_to_be16(REQ_RX_QUEUES); + crq.request_capability.number = cpu_to_be32(adapter->req_rx_queues); + ibmvnic_send_crq(adapter, &crq); + + crq.request_capability.capability = cpu_to_be16(REQ_RX_ADD_QUEUES); + crq.request_capability.number = cpu_to_be32(adapter->req_rx_add_queues); + ibmvnic_send_crq(adapter, &crq); + + crq.request_capability.capability = + cpu_to_be16(REQ_TX_ENTRIES_PER_SUBCRQ); + crq.request_capability.number = + cpu_to_be32(adapter->req_tx_entries_per_subcrq); + ibmvnic_send_crq(adapter, &crq); + + crq.request_capability.capability = + cpu_to_be16(REQ_RX_ADD_ENTRIES_PER_SUBCRQ); + crq.request_capability.number = + cpu_to_be32(adapter->req_rx_add_entries_per_subcrq); + ibmvnic_send_crq(adapter, &crq); + + crq.request_capability.capability = cpu_to_be16(REQ_MTU); + crq.request_capability.number = cpu_to_be32(adapter->req_mtu); + ibmvnic_send_crq(adapter, &crq); + + if (adapter->netdev->flags & IFF_PROMISC) { + if (adapter->promisc_supported) { + crq.request_capability.capability = + cpu_to_be16(PROMISC_REQUESTED); + crq.request_capability.number = cpu_to_be32(1); + ibmvnic_send_crq(adapter, &crq); + } + } else { + crq.request_capability.capability = + cpu_to_be16(PROMISC_REQUESTED); + crq.request_capability.number = cpu_to_be32(0); + ibmvnic_send_crq(adapter, &crq); + } + + kfree(allqueues); + + return; + +req_rx_irq_failed: + for (j = 0; j < i; j++) + free_irq(adapter->rx_scrq[j]->irq, adapter->rx_scrq[j]); + i = adapter->req_tx_queues; +req_tx_irq_failed: + for (j = 0; j < i; j++) + free_irq(adapter->tx_scrq[j]->irq, adapter->tx_scrq[j]); + kfree(adapter->rx_scrq); + adapter->rx_scrq = NULL; +rx_failed: + kfree(adapter->tx_scrq); + adapter->tx_scrq = NULL; +tx_failed: + for (i = 0; i < registered_queues; i++) + release_sub_crq_queue(adapter, allqueues[i]); + kfree(allqueues); +allqueues_failed: + ibmvnic_remove(adapter->vdev); +} + +static int pending_scrq(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + union sub_crq *entry = &scrq->msgs[scrq->cur]; + + if (entry->generic.first & IBMVNIC_CRQ_CMD_RSP || adapter->closing) + return 1; + else + return 0; +} + +static union sub_crq *ibmvnic_next_scrq(struct ibmvnic_adapter *adapter, + struct ibmvnic_sub_crq_queue *scrq) +{ + union sub_crq *entry; + unsigned long flags; + + spin_lock_irqsave(&scrq->lock, flags); + entry = &scrq->msgs[scrq->cur]; + if (entry->generic.first & IBMVNIC_CRQ_CMD_RSP) { + if (++scrq->cur == scrq->size) + scrq->cur = 0; + } else { + entry = NULL; + } + spin_unlock_irqrestore(&scrq->lock, flags); + + return entry; +} + +static union ibmvnic_crq *ibmvnic_next_crq(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_crq_queue *queue = &adapter->crq; + union ibmvnic_crq *crq; + + crq = &queue->msgs[queue->cur]; + if (crq->generic.first & IBMVNIC_CRQ_CMD_RSP) { + if (++queue->cur == queue->size) + queue->cur = 0; + } else { + crq = NULL; + } + + return crq; +} + +static int send_subcrq(struct ibmvnic_adapter *adapter, u64 remote_handle, + union sub_crq *sub_crq) +{ + unsigned int ua = adapter->vdev->unit_address; + struct device *dev = &adapter->vdev->dev; + u64 *u64_crq = (u64 *)sub_crq; + int rc; + + netdev_dbg(adapter->netdev, + "Sending sCRQ %016lx: %016lx %016lx %016lx %016lx\n", + (unsigned long int)cpu_to_be64(remote_handle), + (unsigned long int)cpu_to_be64(u64_crq[0]), + (unsigned long int)cpu_to_be64(u64_crq[1]), + (unsigned long int)cpu_to_be64(u64_crq[2]), + (unsigned long int)cpu_to_be64(u64_crq[3])); + + /* Make sure the hypervisor sees the complete request */ + mb(); + + rc = plpar_hcall_norets(H_SEND_SUB_CRQ, ua, + cpu_to_be64(remote_handle), + cpu_to_be64(u64_crq[0]), + cpu_to_be64(u64_crq[1]), + cpu_to_be64(u64_crq[2]), + cpu_to_be64(u64_crq[3])); + + if (rc) { + if (rc == H_CLOSED) + dev_warn(dev, "CRQ Queue closed\n"); + dev_err(dev, "Send error (rc=%d)\n", rc); + } + + return rc; +} + +static int ibmvnic_send_crq(struct ibmvnic_adapter *adapter, + union ibmvnic_crq *crq) +{ + unsigned int ua = adapter->vdev->unit_address; + struct device *dev = &adapter->vdev->dev; + u64 *u64_crq = (u64 *)crq; + int rc; + + netdev_dbg(adapter->netdev, "Sending CRQ: %016lx %016lx\n", + (unsigned long int)cpu_to_be64(u64_crq[0]), + (unsigned long int)cpu_to_be64(u64_crq[1])); + + /* Make sure the hypervisor sees the complete request */ + mb(); + + rc = plpar_hcall_norets(H_SEND_CRQ, ua, + cpu_to_be64(u64_crq[0]), + cpu_to_be64(u64_crq[1])); + + if (rc) { + if (rc == H_CLOSED) + dev_warn(dev, "CRQ Queue closed\n"); + dev_warn(dev, "Send error (rc=%d)\n", rc); + } + + return rc; +} + +static int ibmvnic_send_crq_init(struct ibmvnic_adapter *adapter) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.generic.first = IBMVNIC_CRQ_INIT_CMD; + crq.generic.cmd = IBMVNIC_CRQ_INIT; + netdev_dbg(adapter->netdev, "Sending CRQ init\n"); + + return ibmvnic_send_crq(adapter, &crq); +} + +static int ibmvnic_send_crq_init_complete(struct ibmvnic_adapter *adapter) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.generic.first = IBMVNIC_CRQ_INIT_CMD; + crq.generic.cmd = IBMVNIC_CRQ_INIT_COMPLETE; + netdev_dbg(adapter->netdev, "Sending CRQ init complete\n"); + + return ibmvnic_send_crq(adapter, &crq); +} + +static int send_version_xchg(struct ibmvnic_adapter *adapter) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.version_exchange.first = IBMVNIC_CRQ_CMD; + crq.version_exchange.cmd = VERSION_EXCHANGE; + crq.version_exchange.version = cpu_to_be16(ibmvnic_version); + + return ibmvnic_send_crq(adapter, &crq); +} + +static void send_login(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_login_rsp_buffer *login_rsp_buffer; + struct ibmvnic_login_buffer *login_buffer; + struct ibmvnic_inflight_cmd *inflight_cmd; + struct device *dev = &adapter->vdev->dev; + dma_addr_t rsp_buffer_token; + dma_addr_t buffer_token; + size_t rsp_buffer_size; + union ibmvnic_crq crq; + unsigned long flags; + size_t buffer_size; + __be64 *tx_list_p; + __be64 *rx_list_p; + int i; + + buffer_size = + sizeof(struct ibmvnic_login_buffer) + + sizeof(u64) * (adapter->req_tx_queues + adapter->req_rx_queues); + + login_buffer = kmalloc(buffer_size, GFP_ATOMIC); + if (!login_buffer) + goto buf_alloc_failed; + + buffer_token = dma_map_single(dev, login_buffer, buffer_size, + DMA_TO_DEVICE); + if (dma_mapping_error(dev, buffer_token)) { + dev_err(dev, "Couldn't map login buffer\n"); + goto buf_map_failed; + } + + rsp_buffer_size = + sizeof(struct ibmvnic_login_rsp_buffer) + + sizeof(u64) * (adapter->req_tx_queues + + adapter->req_rx_queues * + adapter->req_rx_add_queues + adapter-> + req_rx_add_queues) + + sizeof(u8) * (IBMVNIC_TX_DESC_VERSIONS); + + login_rsp_buffer = kmalloc(rsp_buffer_size, GFP_ATOMIC); + if (!login_rsp_buffer) + goto buf_rsp_alloc_failed; + + rsp_buffer_token = dma_map_single(dev, login_rsp_buffer, + rsp_buffer_size, DMA_FROM_DEVICE); + if (dma_mapping_error(dev, rsp_buffer_token)) { + dev_err(dev, "Couldn't map login rsp buffer\n"); + goto buf_rsp_map_failed; + } + inflight_cmd = kmalloc(sizeof(*inflight_cmd), GFP_ATOMIC); + if (!inflight_cmd) { + dev_err(dev, "Couldn't allocate inflight_cmd\n"); + goto inflight_alloc_failed; + } + adapter->login_buf = login_buffer; + adapter->login_buf_token = buffer_token; + adapter->login_buf_sz = buffer_size; + adapter->login_rsp_buf = login_rsp_buffer; + adapter->login_rsp_buf_token = rsp_buffer_token; + adapter->login_rsp_buf_sz = rsp_buffer_size; + + login_buffer->len = cpu_to_be32(buffer_size); + login_buffer->version = cpu_to_be32(INITIAL_VERSION_LB); + login_buffer->num_txcomp_subcrqs = cpu_to_be32(adapter->req_tx_queues); + login_buffer->off_txcomp_subcrqs = + cpu_to_be32(sizeof(struct ibmvnic_login_buffer)); + login_buffer->num_rxcomp_subcrqs = cpu_to_be32(adapter->req_rx_queues); + login_buffer->off_rxcomp_subcrqs = + cpu_to_be32(sizeof(struct ibmvnic_login_buffer) + + sizeof(u64) * adapter->req_tx_queues); + login_buffer->login_rsp_ioba = cpu_to_be32(rsp_buffer_token); + login_buffer->login_rsp_len = cpu_to_be32(rsp_buffer_size); + + tx_list_p = (__be64 *)((char *)login_buffer + + sizeof(struct ibmvnic_login_buffer)); + rx_list_p = (__be64 *)((char *)login_buffer + + sizeof(struct ibmvnic_login_buffer) + + sizeof(u64) * adapter->req_tx_queues); + + for (i = 0; i < adapter->req_tx_queues; i++) { + if (adapter->tx_scrq[i]) { + tx_list_p[i] = cpu_to_be64(adapter->tx_scrq[i]-> + crq_num); + } + } + + for (i = 0; i < adapter->req_rx_queues; i++) { + if (adapter->rx_scrq[i]) { + rx_list_p[i] = cpu_to_be64(adapter->rx_scrq[i]-> + crq_num); + } + } + + netdev_dbg(adapter->netdev, "Login Buffer:\n"); + for (i = 0; i < (adapter->login_buf_sz - 1) / 8 + 1; i++) { + netdev_dbg(adapter->netdev, "%016lx\n", + ((unsigned long int *)(adapter->login_buf))[i]); + } + + memset(&crq, 0, sizeof(crq)); + crq.login.first = IBMVNIC_CRQ_CMD; + crq.login.cmd = LOGIN; + crq.login.ioba = cpu_to_be32(buffer_token); + crq.login.len = cpu_to_be32(buffer_size); + + memcpy(&inflight_cmd->crq, &crq, sizeof(crq)); + + spin_lock_irqsave(&adapter->inflight_lock, flags); + list_add_tail(&inflight_cmd->list, &adapter->inflight); + spin_unlock_irqrestore(&adapter->inflight_lock, flags); + + ibmvnic_send_crq(adapter, &crq); + + return; + +inflight_alloc_failed: + dma_unmap_single(dev, rsp_buffer_token, rsp_buffer_size, + DMA_FROM_DEVICE); +buf_rsp_map_failed: + kfree(login_rsp_buffer); +buf_rsp_alloc_failed: + dma_unmap_single(dev, buffer_token, buffer_size, DMA_TO_DEVICE); +buf_map_failed: + kfree(login_buffer); +buf_alloc_failed: + return; +} + +static void send_request_map(struct ibmvnic_adapter *adapter, dma_addr_t addr, + u32 len, u8 map_id) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.request_map.first = IBMVNIC_CRQ_CMD; + crq.request_map.cmd = REQUEST_MAP; + crq.request_map.map_id = map_id; + crq.request_map.ioba = cpu_to_be32(addr); + crq.request_map.len = cpu_to_be32(len); + ibmvnic_send_crq(adapter, &crq); +} + +static void send_request_unmap(struct ibmvnic_adapter *adapter, u8 map_id) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.request_unmap.first = IBMVNIC_CRQ_CMD; + crq.request_unmap.cmd = REQUEST_UNMAP; + crq.request_unmap.map_id = map_id; + ibmvnic_send_crq(adapter, &crq); +} + +static void send_map_query(struct ibmvnic_adapter *adapter) +{ + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.query_map.first = IBMVNIC_CRQ_CMD; + crq.query_map.cmd = QUERY_MAP; + ibmvnic_send_crq(adapter, &crq); +} + +/* Send a series of CRQs requesting various capabilities of the VNIC server */ +static void send_cap_queries(struct ibmvnic_adapter *adapter) +{ + union ibmvnic_crq crq; + + atomic_set(&adapter->running_cap_queries, 0); + memset(&crq, 0, sizeof(crq)); + crq.query_capability.first = IBMVNIC_CRQ_CMD; + crq.query_capability.cmd = QUERY_CAPABILITY; + + crq.query_capability.capability = cpu_to_be16(MIN_TX_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MIN_RX_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MIN_RX_ADD_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_TX_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_RX_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_RX_ADD_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(MIN_TX_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(MIN_RX_ADD_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(MAX_TX_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(MAX_RX_ADD_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(TCP_IP_OFFLOAD); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(PROMISC_SUPPORTED); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MIN_MTU); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_MTU); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_MULTICAST_FILTERS); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(VLAN_HEADER_INSERTION); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(MAX_TX_SG_ENTRIES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(RX_SG_SUPPORTED); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(OPT_TX_COMP_SUB_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(OPT_RX_COMP_QUEUES); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(OPT_RX_BUFADD_Q_PER_RX_COMP_Q); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(OPT_TX_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = + cpu_to_be16(OPT_RXBA_ENTRIES_PER_SUBCRQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); + + crq.query_capability.capability = cpu_to_be16(TX_RX_DESC_REQ); + atomic_inc(&adapter->running_cap_queries); + ibmvnic_send_crq(adapter, &crq); +} + +static void handle_query_ip_offload_rsp(struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_query_ip_offload_buffer *buf = &adapter->ip_offload_buf; + union ibmvnic_crq crq; + int i; + + dma_unmap_single(dev, adapter->ip_offload_tok, + sizeof(adapter->ip_offload_buf), DMA_FROM_DEVICE); + + netdev_dbg(adapter->netdev, "Query IP Offload Buffer:\n"); + for (i = 0; i < (sizeof(adapter->ip_offload_buf) - 1) / 8 + 1; i++) + netdev_dbg(adapter->netdev, "%016lx\n", + ((unsigned long int *)(buf))[i]); + + netdev_dbg(adapter->netdev, "ipv4_chksum = %d\n", buf->ipv4_chksum); + netdev_dbg(adapter->netdev, "ipv6_chksum = %d\n", buf->ipv6_chksum); + netdev_dbg(adapter->netdev, "tcp_ipv4_chksum = %d\n", + buf->tcp_ipv4_chksum); + netdev_dbg(adapter->netdev, "tcp_ipv6_chksum = %d\n", + buf->tcp_ipv6_chksum); + netdev_dbg(adapter->netdev, "udp_ipv4_chksum = %d\n", + buf->udp_ipv4_chksum); + netdev_dbg(adapter->netdev, "udp_ipv6_chksum = %d\n", + buf->udp_ipv6_chksum); + netdev_dbg(adapter->netdev, "large_tx_ipv4 = %d\n", + buf->large_tx_ipv4); + netdev_dbg(adapter->netdev, "large_tx_ipv6 = %d\n", + buf->large_tx_ipv6); + netdev_dbg(adapter->netdev, "large_rx_ipv4 = %d\n", + buf->large_rx_ipv4); + netdev_dbg(adapter->netdev, "large_rx_ipv6 = %d\n", + buf->large_rx_ipv6); + netdev_dbg(adapter->netdev, "max_ipv4_hdr_sz = %d\n", + buf->max_ipv4_header_size); + netdev_dbg(adapter->netdev, "max_ipv6_hdr_sz = %d\n", + buf->max_ipv6_header_size); + netdev_dbg(adapter->netdev, "max_tcp_hdr_size = %d\n", + buf->max_tcp_header_size); + netdev_dbg(adapter->netdev, "max_udp_hdr_size = %d\n", + buf->max_udp_header_size); + netdev_dbg(adapter->netdev, "max_large_tx_size = %d\n", + buf->max_large_tx_size); + netdev_dbg(adapter->netdev, "max_large_rx_size = %d\n", + buf->max_large_rx_size); + netdev_dbg(adapter->netdev, "ipv6_ext_hdr = %d\n", + buf->ipv6_extension_header); + netdev_dbg(adapter->netdev, "tcp_pseudosum_req = %d\n", + buf->tcp_pseudosum_req); + netdev_dbg(adapter->netdev, "num_ipv6_ext_hd = %d\n", + buf->num_ipv6_ext_headers); + netdev_dbg(adapter->netdev, "off_ipv6_ext_hd = %d\n", + buf->off_ipv6_ext_headers); + + adapter->ip_offload_ctrl_tok = + dma_map_single(dev, &adapter->ip_offload_ctrl, + sizeof(adapter->ip_offload_ctrl), DMA_TO_DEVICE); + + if (dma_mapping_error(dev, adapter->ip_offload_ctrl_tok)) { + dev_err(dev, "Couldn't map ip offload control buffer\n"); + return; + } + + adapter->ip_offload_ctrl.version = cpu_to_be32(INITIAL_VERSION_IOB); + adapter->ip_offload_ctrl.tcp_ipv4_chksum = buf->tcp_ipv4_chksum; + adapter->ip_offload_ctrl.udp_ipv4_chksum = buf->udp_ipv4_chksum; + adapter->ip_offload_ctrl.tcp_ipv6_chksum = buf->tcp_ipv6_chksum; + adapter->ip_offload_ctrl.udp_ipv6_chksum = buf->udp_ipv6_chksum; + + /* large_tx/rx disabled for now, additional features needed */ + adapter->ip_offload_ctrl.large_tx_ipv4 = 0; + adapter->ip_offload_ctrl.large_tx_ipv6 = 0; + adapter->ip_offload_ctrl.large_rx_ipv4 = 0; + adapter->ip_offload_ctrl.large_rx_ipv6 = 0; + + adapter->netdev->features = NETIF_F_GSO; + + if (buf->tcp_ipv4_chksum || buf->udp_ipv4_chksum) + adapter->netdev->features |= NETIF_F_IP_CSUM; + + if (buf->tcp_ipv6_chksum || buf->udp_ipv6_chksum) + adapter->netdev->features |= NETIF_F_IPV6_CSUM; + + memset(&crq, 0, sizeof(crq)); + crq.control_ip_offload.first = IBMVNIC_CRQ_CMD; + crq.control_ip_offload.cmd = CONTROL_IP_OFFLOAD; + crq.control_ip_offload.len = + cpu_to_be32(sizeof(adapter->ip_offload_ctrl)); + crq.control_ip_offload.ioba = cpu_to_be32(adapter->ip_offload_ctrl_tok); + ibmvnic_send_crq(adapter, &crq); +} + +static void handle_error_info_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_error_buff *error_buff; + unsigned long flags; + bool found = false; + int i; + + if (!crq->request_error_rsp.rc.code) { + dev_info(dev, "Request Error Rsp returned with rc=%x\n", + crq->request_error_rsp.rc.code); + return; + } + + spin_lock_irqsave(&adapter->error_list_lock, flags); + list_for_each_entry(error_buff, &adapter->errors, list) + if (error_buff->error_id == crq->request_error_rsp.error_id) { + found = true; + list_del(&error_buff->list); + break; + } + spin_unlock_irqrestore(&adapter->error_list_lock, flags); + + if (!found) { + dev_err(dev, "Couldn't find error id %x\n", + crq->request_error_rsp.error_id); + return; + } + + dev_err(dev, "Detailed info for error id %x:", + crq->request_error_rsp.error_id); + + for (i = 0; i < error_buff->len; i++) { + pr_cont("%02x", (int)error_buff->buff[i]); + if (i % 8 == 7) + pr_cont(" "); + } + pr_cont("\n"); + + dma_unmap_single(dev, error_buff->dma, error_buff->len, + DMA_FROM_DEVICE); + kfree(error_buff->buff); + kfree(error_buff); +} + +static void handle_dump_size_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + int len = be32_to_cpu(crq->request_dump_size_rsp.len); + struct ibmvnic_inflight_cmd *inflight_cmd; + struct device *dev = &adapter->vdev->dev; + union ibmvnic_crq newcrq; + unsigned long flags; + + /* allocate and map buffer */ + adapter->dump_data = kmalloc(len, GFP_KERNEL); + if (!adapter->dump_data) { + complete(&adapter->fw_done); + return; + } + + adapter->dump_data_token = dma_map_single(dev, adapter->dump_data, len, + DMA_FROM_DEVICE); + + if (dma_mapping_error(dev, adapter->dump_data_token)) { + if (!firmware_has_feature(FW_FEATURE_CMO)) + dev_err(dev, "Couldn't map dump data\n"); + kfree(adapter->dump_data); + complete(&adapter->fw_done); + return; + } + + inflight_cmd = kmalloc(sizeof(*inflight_cmd), GFP_ATOMIC); + if (!inflight_cmd) { + dma_unmap_single(dev, adapter->dump_data_token, len, + DMA_FROM_DEVICE); + kfree(adapter->dump_data); + complete(&adapter->fw_done); + return; + } + + memset(&newcrq, 0, sizeof(newcrq)); + newcrq.request_dump.first = IBMVNIC_CRQ_CMD; + newcrq.request_dump.cmd = REQUEST_DUMP; + newcrq.request_dump.ioba = cpu_to_be32(adapter->dump_data_token); + newcrq.request_dump.len = cpu_to_be32(adapter->dump_data_size); + + memcpy(&inflight_cmd->crq, &newcrq, sizeof(newcrq)); + + spin_lock_irqsave(&adapter->inflight_lock, flags); + list_add_tail(&inflight_cmd->list, &adapter->inflight); + spin_unlock_irqrestore(&adapter->inflight_lock, flags); + + ibmvnic_send_crq(adapter, &newcrq); +} + +static void handle_error_indication(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + int detail_len = be32_to_cpu(crq->error_indication.detail_error_sz); + struct ibmvnic_inflight_cmd *inflight_cmd; + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_error_buff *error_buff; + union ibmvnic_crq new_crq; + unsigned long flags; + + dev_err(dev, "Firmware reports %serror id %x, cause %d\n", + crq->error_indication. + flags & IBMVNIC_FATAL_ERROR ? "FATAL " : "", + crq->error_indication.error_id, + crq->error_indication.error_cause); + + error_buff = kmalloc(sizeof(*error_buff), GFP_ATOMIC); + if (!error_buff) + return; + + error_buff->buff = kmalloc(detail_len, GFP_ATOMIC); + if (!error_buff->buff) { + kfree(error_buff); + return; + } + + error_buff->dma = dma_map_single(dev, error_buff->buff, detail_len, + DMA_FROM_DEVICE); + if (dma_mapping_error(dev, error_buff->dma)) { + if (!firmware_has_feature(FW_FEATURE_CMO)) + dev_err(dev, "Couldn't map error buffer\n"); + kfree(error_buff->buff); + kfree(error_buff); + return; + } + + inflight_cmd = kmalloc(sizeof(*inflight_cmd), GFP_ATOMIC); + if (!inflight_cmd) { + dma_unmap_single(dev, error_buff->dma, detail_len, + DMA_FROM_DEVICE); + kfree(error_buff->buff); + kfree(error_buff); + return; + } + + error_buff->len = detail_len; + error_buff->error_id = crq->error_indication.error_id; + + spin_lock_irqsave(&adapter->error_list_lock, flags); + list_add_tail(&error_buff->list, &adapter->errors); + spin_unlock_irqrestore(&adapter->error_list_lock, flags); + + memset(&new_crq, 0, sizeof(new_crq)); + new_crq.request_error_info.first = IBMVNIC_CRQ_CMD; + new_crq.request_error_info.cmd = REQUEST_ERROR_INFO; + new_crq.request_error_info.ioba = cpu_to_be32(error_buff->dma); + new_crq.request_error_info.len = cpu_to_be32(detail_len); + new_crq.request_error_info.error_id = crq->error_indication.error_id; + + memcpy(&inflight_cmd->crq, &crq, sizeof(crq)); + + spin_lock_irqsave(&adapter->inflight_lock, flags); + list_add_tail(&inflight_cmd->list, &adapter->inflight); + spin_unlock_irqrestore(&adapter->inflight_lock, flags); + + ibmvnic_send_crq(adapter, &new_crq); +} + +static void handle_change_mac_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + struct device *dev = &adapter->vdev->dev; + long rc; + + rc = crq->change_mac_addr_rsp.rc.code; + if (rc) { + dev_err(dev, "Error %ld in CHANGE_MAC_ADDR_RSP\n", rc); + return; + } + memcpy(netdev->dev_addr, &crq->change_mac_addr_rsp.mac_addr[0], + ETH_ALEN); +} + +static void handle_request_cap_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + u64 *req_value; + char *name; + + switch (be16_to_cpu(crq->request_capability_rsp.capability)) { + case REQ_TX_QUEUES: + req_value = &adapter->req_tx_queues; + name = "tx"; + break; + case REQ_RX_QUEUES: + req_value = &adapter->req_rx_queues; + name = "rx"; + break; + case REQ_RX_ADD_QUEUES: + req_value = &adapter->req_rx_add_queues; + name = "rx_add"; + break; + case REQ_TX_ENTRIES_PER_SUBCRQ: + req_value = &adapter->req_tx_entries_per_subcrq; + name = "tx_entries_per_subcrq"; + break; + case REQ_RX_ADD_ENTRIES_PER_SUBCRQ: + req_value = &adapter->req_rx_add_entries_per_subcrq; + name = "rx_add_entries_per_subcrq"; + break; + case REQ_MTU: + req_value = &adapter->req_mtu; + name = "mtu"; + break; + case PROMISC_REQUESTED: + req_value = &adapter->promisc; + name = "promisc"; + break; + default: + dev_err(dev, "Got invalid cap request rsp %d\n", + crq->request_capability.capability); + return; + } + + switch (crq->request_capability_rsp.rc.code) { + case SUCCESS: + break; + case PARTIALSUCCESS: + dev_info(dev, "req=%lld, rsp=%ld in %s queue, retrying.\n", + *req_value, + (long int)be32_to_cpu(crq->request_capability_rsp. + number), name); + release_sub_crqs(adapter); + *req_value = be32_to_cpu(crq->request_capability_rsp.number); + complete(&adapter->init_done); + return; + default: + dev_err(dev, "Error %d in request cap rsp\n", + crq->request_capability_rsp.rc.code); + return; + } + + /* Done receiving requested capabilities, query IP offload support */ + if (++adapter->requested_caps == 7) { + union ibmvnic_crq newcrq; + int buf_sz = sizeof(struct ibmvnic_query_ip_offload_buffer); + struct ibmvnic_query_ip_offload_buffer *ip_offload_buf = + &adapter->ip_offload_buf; + + adapter->ip_offload_tok = dma_map_single(dev, ip_offload_buf, + buf_sz, + DMA_FROM_DEVICE); + + if (dma_mapping_error(dev, adapter->ip_offload_tok)) { + if (!firmware_has_feature(FW_FEATURE_CMO)) + dev_err(dev, "Couldn't map offload buffer\n"); + return; + } + + memset(&newcrq, 0, sizeof(newcrq)); + newcrq.query_ip_offload.first = IBMVNIC_CRQ_CMD; + newcrq.query_ip_offload.cmd = QUERY_IP_OFFLOAD; + newcrq.query_ip_offload.len = cpu_to_be32(buf_sz); + newcrq.query_ip_offload.ioba = + cpu_to_be32(adapter->ip_offload_tok); + + ibmvnic_send_crq(adapter, &newcrq); + } +} + +static int handle_login_rsp(union ibmvnic_crq *login_rsp_crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_login_rsp_buffer *login_rsp = adapter->login_rsp_buf; + struct ibmvnic_login_buffer *login = adapter->login_buf; + union ibmvnic_crq crq; + int i; + + dma_unmap_single(dev, adapter->login_buf_token, adapter->login_buf_sz, + DMA_BIDIRECTIONAL); + dma_unmap_single(dev, adapter->login_rsp_buf_token, + adapter->login_rsp_buf_sz, DMA_BIDIRECTIONAL); + + netdev_dbg(adapter->netdev, "Login Response Buffer:\n"); + for (i = 0; i < (adapter->login_rsp_buf_sz - 1) / 8 + 1; i++) { + netdev_dbg(adapter->netdev, "%016lx\n", + ((unsigned long int *)(adapter->login_rsp_buf))[i]); + } + + /* Sanity checks */ + if (login->num_txcomp_subcrqs != login_rsp->num_txsubm_subcrqs || + (be32_to_cpu(login->num_rxcomp_subcrqs) * + adapter->req_rx_add_queues != + be32_to_cpu(login_rsp->num_rxadd_subcrqs))) { + dev_err(dev, "FATAL: Inconsistent login and login rsp\n"); + ibmvnic_remove(adapter->vdev); + return -EIO; + } + complete(&adapter->init_done); + + memset(&crq, 0, sizeof(crq)); + crq.request_ras_comp_num.first = IBMVNIC_CRQ_CMD; + crq.request_ras_comp_num.cmd = REQUEST_RAS_COMP_NUM; + ibmvnic_send_crq(adapter, &crq); + + return 0; +} + +static void handle_request_map_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + u8 map_id = crq->request_map_rsp.map_id; + int tx_subcrqs; + int rx_subcrqs; + long rc; + int i; + + tx_subcrqs = be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs); + rx_subcrqs = be32_to_cpu(adapter->login_rsp_buf->num_rxadd_subcrqs); + + rc = crq->request_map_rsp.rc.code; + if (rc) { + dev_err(dev, "Error %ld in REQUEST_MAP_RSP\n", rc); + adapter->map_id--; + /* need to find and zero tx/rx_pool map_id */ + for (i = 0; i < tx_subcrqs; i++) { + if (adapter->tx_pool[i].long_term_buff.map_id == map_id) + adapter->tx_pool[i].long_term_buff.map_id = 0; + } + for (i = 0; i < rx_subcrqs; i++) { + if (adapter->rx_pool[i].long_term_buff.map_id == map_id) + adapter->rx_pool[i].long_term_buff.map_id = 0; + } + } + complete(&adapter->fw_done); +} + +static void handle_request_unmap_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + long rc; + + rc = crq->request_unmap_rsp.rc.code; + if (rc) + dev_err(dev, "Error %ld in REQUEST_UNMAP_RSP\n", rc); +} + +static void handle_query_map_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + struct device *dev = &adapter->vdev->dev; + long rc; + + rc = crq->query_map_rsp.rc.code; + if (rc) { + dev_err(dev, "Error %ld in QUERY_MAP_RSP\n", rc); + return; + } + netdev_dbg(netdev, "page_size = %d\ntot_pages = %d\nfree_pages = %d\n", + crq->query_map_rsp.page_size, crq->query_map_rsp.tot_pages, + crq->query_map_rsp.free_pages); +} + +static void handle_query_cap_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct net_device *netdev = adapter->netdev; + struct device *dev = &adapter->vdev->dev; + long rc; + + atomic_dec(&adapter->running_cap_queries); + netdev_dbg(netdev, "Outstanding queries: %d\n", + atomic_read(&adapter->running_cap_queries)); + rc = crq->query_capability.rc.code; + if (rc) { + dev_err(dev, "Error %ld in QUERY_CAP_RSP\n", rc); + goto out; + } + + switch (be16_to_cpu(crq->query_capability.capability)) { + case MIN_TX_QUEUES: + adapter->min_tx_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_tx_queues = %lld\n", + adapter->min_tx_queues); + break; + case MIN_RX_QUEUES: + adapter->min_rx_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_rx_queues = %lld\n", + adapter->min_rx_queues); + break; + case MIN_RX_ADD_QUEUES: + adapter->min_rx_add_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_rx_add_queues = %lld\n", + adapter->min_rx_add_queues); + break; + case MAX_TX_QUEUES: + adapter->max_tx_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_tx_queues = %lld\n", + adapter->max_tx_queues); + break; + case MAX_RX_QUEUES: + adapter->max_rx_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_rx_queues = %lld\n", + adapter->max_rx_queues); + break; + case MAX_RX_ADD_QUEUES: + adapter->max_rx_add_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_rx_add_queues = %lld\n", + adapter->max_rx_add_queues); + break; + case MIN_TX_ENTRIES_PER_SUBCRQ: + adapter->min_tx_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_tx_entries_per_subcrq = %lld\n", + adapter->min_tx_entries_per_subcrq); + break; + case MIN_RX_ADD_ENTRIES_PER_SUBCRQ: + adapter->min_rx_add_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_rx_add_entrs_per_subcrq = %lld\n", + adapter->min_rx_add_entries_per_subcrq); + break; + case MAX_TX_ENTRIES_PER_SUBCRQ: + adapter->max_tx_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_tx_entries_per_subcrq = %lld\n", + adapter->max_tx_entries_per_subcrq); + break; + case MAX_RX_ADD_ENTRIES_PER_SUBCRQ: + adapter->max_rx_add_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_rx_add_entrs_per_subcrq = %lld\n", + adapter->max_rx_add_entries_per_subcrq); + break; + case TCP_IP_OFFLOAD: + adapter->tcp_ip_offload = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "tcp_ip_offload = %lld\n", + adapter->tcp_ip_offload); + break; + case PROMISC_SUPPORTED: + adapter->promisc_supported = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "promisc_supported = %lld\n", + adapter->promisc_supported); + break; + case MIN_MTU: + adapter->min_mtu = be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "min_mtu = %lld\n", adapter->min_mtu); + break; + case MAX_MTU: + adapter->max_mtu = be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_mtu = %lld\n", adapter->max_mtu); + break; + case MAX_MULTICAST_FILTERS: + adapter->max_multicast_filters = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_multicast_filters = %lld\n", + adapter->max_multicast_filters); + break; + case VLAN_HEADER_INSERTION: + adapter->vlan_header_insertion = + be32_to_cpu(crq->query_capability.number); + if (adapter->vlan_header_insertion) + netdev->features |= NETIF_F_HW_VLAN_STAG_TX; + netdev_dbg(netdev, "vlan_header_insertion = %lld\n", + adapter->vlan_header_insertion); + break; + case MAX_TX_SG_ENTRIES: + adapter->max_tx_sg_entries = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "max_tx_sg_entries = %lld\n", + adapter->max_tx_sg_entries); + break; + case RX_SG_SUPPORTED: + adapter->rx_sg_supported = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "rx_sg_supported = %lld\n", + adapter->rx_sg_supported); + break; + case OPT_TX_COMP_SUB_QUEUES: + adapter->opt_tx_comp_sub_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "opt_tx_comp_sub_queues = %lld\n", + adapter->opt_tx_comp_sub_queues); + break; + case OPT_RX_COMP_QUEUES: + adapter->opt_rx_comp_queues = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "opt_rx_comp_queues = %lld\n", + adapter->opt_rx_comp_queues); + break; + case OPT_RX_BUFADD_Q_PER_RX_COMP_Q: + adapter->opt_rx_bufadd_q_per_rx_comp_q = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "opt_rx_bufadd_q_per_rx_comp_q = %lld\n", + adapter->opt_rx_bufadd_q_per_rx_comp_q); + break; + case OPT_TX_ENTRIES_PER_SUBCRQ: + adapter->opt_tx_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "opt_tx_entries_per_subcrq = %lld\n", + adapter->opt_tx_entries_per_subcrq); + break; + case OPT_RXBA_ENTRIES_PER_SUBCRQ: + adapter->opt_rxba_entries_per_subcrq = + be32_to_cpu(crq->query_capability.number); + netdev_dbg(netdev, "opt_rxba_entries_per_subcrq = %lld\n", + adapter->opt_rxba_entries_per_subcrq); + break; + case TX_RX_DESC_REQ: + adapter->tx_rx_desc_req = crq->query_capability.number; + netdev_dbg(netdev, "tx_rx_desc_req = %llx\n", + adapter->tx_rx_desc_req); + break; + + default: + netdev_err(netdev, "Got invalid cap rsp %d\n", + crq->query_capability.capability); + } + +out: + if (atomic_read(&adapter->running_cap_queries) == 0) + complete(&adapter->init_done); + /* We're done querying the capabilities, initialize sub-crqs */ +} + +static void handle_control_ras_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + u8 correlator = crq->control_ras_rsp.correlator; + struct device *dev = &adapter->vdev->dev; + bool found = false; + int i; + + if (crq->control_ras_rsp.rc.code) { + dev_warn(dev, "Control ras failed rc=%d\n", + crq->control_ras_rsp.rc.code); + return; + } + + for (i = 0; i < adapter->ras_comp_num; i++) { + if (adapter->ras_comps[i].correlator == correlator) { + found = true; + break; + } + } + + if (!found) { + dev_warn(dev, "Correlator not found on control_ras_rsp\n"); + return; + } + + switch (crq->control_ras_rsp.op) { + case IBMVNIC_TRACE_LEVEL: + adapter->ras_comps[i].trace_level = crq->control_ras.level; + break; + case IBMVNIC_ERROR_LEVEL: + adapter->ras_comps[i].error_check_level = + crq->control_ras.level; + break; + case IBMVNIC_TRACE_PAUSE: + adapter->ras_comp_int[i].paused = 1; + break; + case IBMVNIC_TRACE_RESUME: + adapter->ras_comp_int[i].paused = 0; + break; + case IBMVNIC_TRACE_ON: + adapter->ras_comps[i].trace_on = 1; + break; + case IBMVNIC_TRACE_OFF: + adapter->ras_comps[i].trace_on = 0; + break; + case IBMVNIC_CHG_TRACE_BUFF_SZ: + /* trace_buff_sz is 3 bytes, stuff it into an int */ + ((u8 *)(&adapter->ras_comps[i].trace_buff_size))[0] = 0; + ((u8 *)(&adapter->ras_comps[i].trace_buff_size))[1] = + crq->control_ras_rsp.trace_buff_sz[0]; + ((u8 *)(&adapter->ras_comps[i].trace_buff_size))[2] = + crq->control_ras_rsp.trace_buff_sz[1]; + ((u8 *)(&adapter->ras_comps[i].trace_buff_size))[3] = + crq->control_ras_rsp.trace_buff_sz[2]; + break; + default: + dev_err(dev, "invalid op %d on control_ras_rsp", + crq->control_ras_rsp.op); + } +} + +static int ibmvnic_fw_comp_open(struct inode *inode, struct file *file) +{ + file->private_data = inode->i_private; + return 0; +} + +static ssize_t trace_read(struct file *file, char __user *user_buf, size_t len, + loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_fw_trace_entry *trace; + int num = ras_comp_int->num; + union ibmvnic_crq crq; + dma_addr_t trace_tok; + + if (*ppos >= be32_to_cpu(adapter->ras_comps[num].trace_buff_size)) + return 0; + + trace = + dma_alloc_coherent(dev, + be32_to_cpu(adapter->ras_comps[num]. + trace_buff_size), &trace_tok, + GFP_KERNEL); + if (!trace) { + dev_err(dev, "Couldn't alloc trace buffer\n"); + return 0; + } + + memset(&crq, 0, sizeof(crq)); + crq.collect_fw_trace.first = IBMVNIC_CRQ_CMD; + crq.collect_fw_trace.cmd = COLLECT_FW_TRACE; + crq.collect_fw_trace.correlator = adapter->ras_comps[num].correlator; + crq.collect_fw_trace.ioba = cpu_to_be32(trace_tok); + crq.collect_fw_trace.len = adapter->ras_comps[num].trace_buff_size; + ibmvnic_send_crq(adapter, &crq); + + init_completion(&adapter->fw_done); + wait_for_completion(&adapter->fw_done); + + if (*ppos + len > be32_to_cpu(adapter->ras_comps[num].trace_buff_size)) + len = + be32_to_cpu(adapter->ras_comps[num].trace_buff_size) - + *ppos; + + copy_to_user(user_buf, &((u8 *)trace)[*ppos], len); + + dma_free_coherent(dev, + be32_to_cpu(adapter->ras_comps[num].trace_buff_size), + trace, trace_tok); + *ppos += len; + return len; +} + +static const struct file_operations trace_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = trace_read, +}; + +static ssize_t paused_read(struct file *file, char __user *user_buf, size_t len, + loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + char buff[5]; /* 1 or 0 plus \n and \0 */ + int size; + + size = sprintf(buff, "%d\n", adapter->ras_comp_int[num].paused); + + if (*ppos >= size) + return 0; + + copy_to_user(user_buf, buff, size); + *ppos += size; + return size; +} + +static ssize_t paused_write(struct file *file, const char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + union ibmvnic_crq crq; + unsigned long val; + char buff[9]; /* decimal max int plus \n and \0 */ + + copy_from_user(buff, user_buf, sizeof(buff)); + val = kstrtoul(buff, 10, NULL); + + adapter->ras_comp_int[num].paused = val ? 1 : 0; + + memset(&crq, 0, sizeof(crq)); + crq.control_ras.first = IBMVNIC_CRQ_CMD; + crq.control_ras.cmd = CONTROL_RAS; + crq.control_ras.correlator = adapter->ras_comps[num].correlator; + crq.control_ras.op = val ? IBMVNIC_TRACE_PAUSE : IBMVNIC_TRACE_RESUME; + ibmvnic_send_crq(adapter, &crq); + + return len; +} + +static const struct file_operations paused_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = paused_read, + .write = paused_write, +}; + +static ssize_t tracing_read(struct file *file, char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + char buff[5]; /* 1 or 0 plus \n and \0 */ + int size; + + size = sprintf(buff, "%d\n", adapter->ras_comps[num].trace_on); + + if (*ppos >= size) + return 0; + + copy_to_user(user_buf, buff, size); + *ppos += size; + return size; +} + +static ssize_t tracing_write(struct file *file, const char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + union ibmvnic_crq crq; + unsigned long val; + char buff[9]; /* decimal max int plus \n and \0 */ + + copy_from_user(buff, user_buf, sizeof(buff)); + val = kstrtoul(buff, 10, NULL); + + memset(&crq, 0, sizeof(crq)); + crq.control_ras.first = IBMVNIC_CRQ_CMD; + crq.control_ras.cmd = CONTROL_RAS; + crq.control_ras.correlator = adapter->ras_comps[num].correlator; + crq.control_ras.op = val ? IBMVNIC_TRACE_ON : IBMVNIC_TRACE_OFF; + + return len; +} + +static const struct file_operations tracing_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = tracing_read, + .write = tracing_write, +}; + +static ssize_t error_level_read(struct file *file, char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + char buff[5]; /* decimal max char plus \n and \0 */ + int size; + + size = sprintf(buff, "%d\n", adapter->ras_comps[num].error_check_level); + + if (*ppos >= size) + return 0; + + copy_to_user(user_buf, buff, size); + *ppos += size; + return size; +} + +static ssize_t error_level_write(struct file *file, const char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + union ibmvnic_crq crq; + unsigned long val; + char buff[9]; /* decimal max int plus \n and \0 */ + + copy_from_user(buff, user_buf, sizeof(buff)); + val = kstrtoul(buff, 10, NULL); + + if (val > 9) + val = 9; + + memset(&crq, 0, sizeof(crq)); + crq.control_ras.first = IBMVNIC_CRQ_CMD; + crq.control_ras.cmd = CONTROL_RAS; + crq.control_ras.correlator = adapter->ras_comps[num].correlator; + crq.control_ras.op = IBMVNIC_ERROR_LEVEL; + crq.control_ras.level = val; + ibmvnic_send_crq(adapter, &crq); + + return len; +} + +static const struct file_operations error_level_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = error_level_read, + .write = error_level_write, +}; + +static ssize_t trace_level_read(struct file *file, char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + char buff[5]; /* decimal max char plus \n and \0 */ + int size; + + size = sprintf(buff, "%d\n", adapter->ras_comps[num].trace_level); + if (*ppos >= size) + return 0; + + copy_to_user(user_buf, buff, size); + *ppos += size; + return size; +} + +static ssize_t trace_level_write(struct file *file, const char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + union ibmvnic_crq crq; + unsigned long val; + char buff[9]; /* decimal max int plus \n and \0 */ + + copy_from_user(buff, user_buf, sizeof(buff)); + val = kstrtoul(buff, 10, NULL); + if (val > 9) + val = 9; + + memset(&crq, 0, sizeof(crq)); + crq.control_ras.first = IBMVNIC_CRQ_CMD; + crq.control_ras.cmd = CONTROL_RAS; + crq.control_ras.correlator = + adapter->ras_comps[ras_comp_int->num].correlator; + crq.control_ras.op = IBMVNIC_TRACE_LEVEL; + crq.control_ras.level = val; + ibmvnic_send_crq(adapter, &crq); + + return len; +} + +static const struct file_operations trace_level_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = trace_level_read, + .write = trace_level_write, +}; + +static ssize_t trace_buff_size_read(struct file *file, char __user *user_buf, + size_t len, loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + int num = ras_comp_int->num; + char buff[9]; /* decimal max int plus \n and \0 */ + int size; + + size = sprintf(buff, "%d\n", adapter->ras_comps[num].trace_buff_size); + if (*ppos >= size) + return 0; + + copy_to_user(user_buf, buff, size); + *ppos += size; + return size; +} + +static ssize_t trace_buff_size_write(struct file *file, + const char __user *user_buf, size_t len, + loff_t *ppos) +{ + struct ibmvnic_fw_comp_internal *ras_comp_int = file->private_data; + struct ibmvnic_adapter *adapter = ras_comp_int->adapter; + union ibmvnic_crq crq; + unsigned long val; + char buff[9]; /* decimal max int plus \n and \0 */ + + copy_from_user(buff, user_buf, sizeof(buff)); + val = kstrtoul(buff, 10, NULL); + + memset(&crq, 0, sizeof(crq)); + crq.control_ras.first = IBMVNIC_CRQ_CMD; + crq.control_ras.cmd = CONTROL_RAS; + crq.control_ras.correlator = + adapter->ras_comps[ras_comp_int->num].correlator; + crq.control_ras.op = IBMVNIC_CHG_TRACE_BUFF_SZ; + /* trace_buff_sz is 3 bytes, stuff an int into it */ + crq.control_ras.trace_buff_sz[0] = ((u8 *)(&val))[5]; + crq.control_ras.trace_buff_sz[1] = ((u8 *)(&val))[6]; + crq.control_ras.trace_buff_sz[2] = ((u8 *)(&val))[7]; + ibmvnic_send_crq(adapter, &crq); + + return len; +} + +static const struct file_operations trace_size_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_fw_comp_open, + .read = trace_buff_size_read, + .write = trace_buff_size_write, +}; + +static void handle_request_ras_comps_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct device *dev = &adapter->vdev->dev; + struct dentry *dir_ent; + struct dentry *ent; + int i; + + debugfs_remove_recursive(adapter->ras_comps_ent); + + adapter->ras_comps_ent = debugfs_create_dir("ras_comps", + adapter->debugfs_dir); + if (!adapter->ras_comps_ent || IS_ERR(adapter->ras_comps_ent)) { + dev_info(dev, "debugfs create ras_comps dir failed\n"); + return; + } + + for (i = 0; i < adapter->ras_comp_num; i++) { + dir_ent = debugfs_create_dir(adapter->ras_comps[i].name, + adapter->ras_comps_ent); + if (!dir_ent || IS_ERR(dir_ent)) { + dev_info(dev, "debugfs create %s dir failed\n", + adapter->ras_comps[i].name); + continue; + } + + adapter->ras_comp_int[i].adapter = adapter; + adapter->ras_comp_int[i].num = i; + adapter->ras_comp_int[i].desc_blob.data = + &adapter->ras_comps[i].description; + adapter->ras_comp_int[i].desc_blob.size = + sizeof(adapter->ras_comps[i].description); + + /* Don't need to remember the dentry's because the debugfs dir + * gets removed recursively + */ + ent = debugfs_create_blob("description", S_IRUGO, dir_ent, + &adapter->ras_comp_int[i].desc_blob); + ent = debugfs_create_file("trace_buf_size", S_IRUGO | S_IWUSR, + dir_ent, &adapter->ras_comp_int[i], + &trace_size_ops); + ent = debugfs_create_file("trace_level", + S_IRUGO | + (adapter->ras_comps[i].trace_level != + 0xFF ? S_IWUSR : 0), + dir_ent, &adapter->ras_comp_int[i], + &trace_level_ops); + ent = debugfs_create_file("error_level", + S_IRUGO | + (adapter-> + ras_comps[i].error_check_level != + 0xFF ? S_IWUSR : 0), + dir_ent, &adapter->ras_comp_int[i], + &trace_level_ops); + ent = debugfs_create_file("tracing", S_IRUGO | S_IWUSR, + dir_ent, &adapter->ras_comp_int[i], + &tracing_ops); + ent = debugfs_create_file("paused", S_IRUGO | S_IWUSR, + dir_ent, &adapter->ras_comp_int[i], + &paused_ops); + ent = debugfs_create_file("trace", S_IRUGO, dir_ent, + &adapter->ras_comp_int[i], + &trace_ops); + } +} + +static void handle_request_ras_comp_num_rsp(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + int len = adapter->ras_comp_num * sizeof(struct ibmvnic_fw_component); + struct device *dev = &adapter->vdev->dev; + union ibmvnic_crq newcrq; + + adapter->ras_comps = dma_alloc_coherent(dev, len, + &adapter->ras_comps_tok, + GFP_KERNEL); + if (!adapter->ras_comps) { + if (!firmware_has_feature(FW_FEATURE_CMO)) + dev_err(dev, "Couldn't alloc fw comps buffer\n"); + return; + } + + adapter->ras_comp_int = kmalloc(adapter->ras_comp_num * + sizeof(struct ibmvnic_fw_comp_internal), + GFP_KERNEL); + if (!adapter->ras_comp_int) + dma_free_coherent(dev, len, adapter->ras_comps, + adapter->ras_comps_tok); + + memset(&newcrq, 0, sizeof(newcrq)); + newcrq.request_ras_comps.first = IBMVNIC_CRQ_CMD; + newcrq.request_ras_comps.cmd = REQUEST_RAS_COMPS; + newcrq.request_ras_comps.ioba = cpu_to_be32(adapter->ras_comps_tok); + newcrq.request_ras_comps.len = cpu_to_be32(len); + ibmvnic_send_crq(adapter, &newcrq); +} + +static void ibmvnic_free_inflight(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_inflight_cmd *inflight_cmd; + struct device *dev = &adapter->vdev->dev; + struct ibmvnic_error_buff *error_buff; + unsigned long flags; + unsigned long flags2; + + spin_lock_irqsave(&adapter->inflight_lock, flags); + list_for_each_entry(inflight_cmd, &adapter->inflight, list) { + switch (inflight_cmd->crq.generic.cmd) { + case LOGIN: + dma_unmap_single(dev, adapter->login_buf_token, + adapter->login_buf_sz, + DMA_BIDIRECTIONAL); + dma_unmap_single(dev, adapter->login_rsp_buf_token, + adapter->login_rsp_buf_sz, + DMA_BIDIRECTIONAL); + kfree(adapter->login_rsp_buf); + kfree(adapter->login_buf); + break; + case REQUEST_DUMP: + complete(&adapter->fw_done); + break; + case REQUEST_ERROR_INFO: + spin_lock_irqsave(&adapter->error_list_lock, flags2); + list_for_each_entry(error_buff, &adapter->errors, + list) { + dma_unmap_single(dev, error_buff->dma, + error_buff->len, + DMA_FROM_DEVICE); + kfree(error_buff->buff); + list_del(&error_buff->list); + kfree(error_buff); + } + spin_unlock_irqrestore(&adapter->error_list_lock, + flags2); + break; + } + list_del(&inflight_cmd->list); + kfree(inflight_cmd); + } + spin_unlock_irqrestore(&adapter->inflight_lock, flags); +} + +static void ibmvnic_handle_crq(union ibmvnic_crq *crq, + struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_generic_crq *gen_crq = &crq->generic; + struct net_device *netdev = adapter->netdev; + struct device *dev = &adapter->vdev->dev; + long rc; + + netdev_dbg(netdev, "Handling CRQ: %016lx %016lx\n", + ((unsigned long int *)crq)[0], + ((unsigned long int *)crq)[1]); + switch (gen_crq->first) { + case IBMVNIC_CRQ_INIT_RSP: + switch (gen_crq->cmd) { + case IBMVNIC_CRQ_INIT: + dev_info(dev, "Partner initialized\n"); + /* Send back a response */ + rc = ibmvnic_send_crq_init_complete(adapter); + if (rc == 0) + send_version_xchg(adapter); + else + dev_err(dev, "Can't send initrsp rc=%ld\n", rc); + break; + case IBMVNIC_CRQ_INIT_COMPLETE: + dev_info(dev, "Partner initialization complete\n"); + send_version_xchg(adapter); + break; + default: + dev_err(dev, "Unknown crq cmd: %d\n", gen_crq->cmd); + } + return; + case IBMVNIC_CRQ_XPORT_EVENT: + if (gen_crq->cmd == IBMVNIC_PARTITION_MIGRATED) { + dev_info(dev, "Re-enabling adapter\n"); + adapter->migrated = true; + ibmvnic_free_inflight(adapter); + release_sub_crqs(adapter); + rc = ibmvnic_reenable_crq_queue(adapter); + if (rc) + dev_err(dev, "Error after enable rc=%ld\n", rc); + adapter->migrated = false; + rc = ibmvnic_send_crq_init(adapter); + if (rc) + dev_err(dev, "Error sending init rc=%ld\n", rc); + } else { + /* The adapter lost the connection */ + dev_err(dev, "Virtual Adapter failed (rc=%d)\n", + gen_crq->cmd); + ibmvnic_free_inflight(adapter); + release_sub_crqs(adapter); + } + return; + case IBMVNIC_CRQ_CMD_RSP: + break; + default: + dev_err(dev, "Got an invalid msg type 0x%02x\n", + gen_crq->first); + return; + } + + switch (gen_crq->cmd) { + case VERSION_EXCHANGE_RSP: + rc = crq->version_exchange_rsp.rc.code; + if (rc) { + dev_err(dev, "Error %ld in VERSION_EXCHG_RSP\n", rc); + break; + } + dev_info(dev, "Partner protocol version is %d\n", + crq->version_exchange_rsp.version); + if (be16_to_cpu(crq->version_exchange_rsp.version) < + ibmvnic_version) + ibmvnic_version = + be16_to_cpu(crq->version_exchange_rsp.version); + send_cap_queries(adapter); + break; + case QUERY_CAPABILITY_RSP: + handle_query_cap_rsp(crq, adapter); + break; + case QUERY_MAP_RSP: + handle_query_map_rsp(crq, adapter); + break; + case REQUEST_MAP_RSP: + handle_request_map_rsp(crq, adapter); + break; + case REQUEST_UNMAP_RSP: + handle_request_unmap_rsp(crq, adapter); + break; + case REQUEST_CAPABILITY_RSP: + handle_request_cap_rsp(crq, adapter); + break; + case LOGIN_RSP: + netdev_dbg(netdev, "Got Login Response\n"); + handle_login_rsp(crq, adapter); + break; + case LOGICAL_LINK_STATE_RSP: + netdev_dbg(netdev, "Got Logical Link State Response\n"); + adapter->logical_link_state = + crq->logical_link_state_rsp.link_state; + break; + case LINK_STATE_INDICATION: + netdev_dbg(netdev, "Got Logical Link State Indication\n"); + adapter->phys_link_state = + crq->link_state_indication.phys_link_state; + adapter->logical_link_state = + crq->link_state_indication.logical_link_state; + break; + case CHANGE_MAC_ADDR_RSP: + netdev_dbg(netdev, "Got MAC address change Response\n"); + handle_change_mac_rsp(crq, adapter); + break; + case ERROR_INDICATION: + netdev_dbg(netdev, "Got Error Indication\n"); + handle_error_indication(crq, adapter); + break; + case REQUEST_ERROR_RSP: + netdev_dbg(netdev, "Got Error Detail Response\n"); + handle_error_info_rsp(crq, adapter); + break; + case REQUEST_STATISTICS_RSP: + netdev_dbg(netdev, "Got Statistics Response\n"); + complete(&adapter->stats_done); + break; + case REQUEST_DUMP_SIZE_RSP: + netdev_dbg(netdev, "Got Request Dump Size Response\n"); + handle_dump_size_rsp(crq, adapter); + break; + case REQUEST_DUMP_RSP: + netdev_dbg(netdev, "Got Request Dump Response\n"); + complete(&adapter->fw_done); + break; + case QUERY_IP_OFFLOAD_RSP: + netdev_dbg(netdev, "Got Query IP offload Response\n"); + handle_query_ip_offload_rsp(adapter); + break; + case MULTICAST_CTRL_RSP: + netdev_dbg(netdev, "Got multicast control Response\n"); + break; + case CONTROL_IP_OFFLOAD_RSP: + netdev_dbg(netdev, "Got Control IP offload Response\n"); + dma_unmap_single(dev, adapter->ip_offload_ctrl_tok, + sizeof(adapter->ip_offload_ctrl), + DMA_TO_DEVICE); + /* We're done with the queries, perform the login */ + send_login(adapter); + break; + case REQUEST_RAS_COMP_NUM_RSP: + netdev_dbg(netdev, "Got Request RAS Comp Num Response\n"); + if (crq->request_ras_comp_num_rsp.rc.code == 10) { + netdev_dbg(netdev, "Request RAS Comp Num not supported\n"); + break; + } + adapter->ras_comp_num = + be32_to_cpu(crq->request_ras_comp_num_rsp.num_components); + handle_request_ras_comp_num_rsp(crq, adapter); + break; + case REQUEST_RAS_COMPS_RSP: + netdev_dbg(netdev, "Got Request RAS Comps Response\n"); + handle_request_ras_comps_rsp(crq, adapter); + break; + case CONTROL_RAS_RSP: + netdev_dbg(netdev, "Got Control RAS Response\n"); + handle_control_ras_rsp(crq, adapter); + break; + case COLLECT_FW_TRACE_RSP: + netdev_dbg(netdev, "Got Collect firmware trace Response\n"); + complete(&adapter->fw_done); + break; + default: + netdev_err(netdev, "Got an invalid cmd type 0x%02x\n", + gen_crq->cmd); + } +} + +static irqreturn_t ibmvnic_interrupt(int irq, void *instance) +{ + struct ibmvnic_adapter *adapter = instance; + struct ibmvnic_crq_queue *queue = &adapter->crq; + struct vio_dev *vdev = adapter->vdev; + union ibmvnic_crq *crq; + unsigned long flags; + bool done = false; + + spin_lock_irqsave(&queue->lock, flags); + vio_disable_interrupts(vdev); + while (!done) { + /* Pull all the valid messages off the CRQ */ + while ((crq = ibmvnic_next_crq(adapter)) != NULL) { + ibmvnic_handle_crq(crq, adapter); + crq->generic.first = 0; + } + vio_enable_interrupts(vdev); + crq = ibmvnic_next_crq(adapter); + if (crq) { + vio_disable_interrupts(vdev); + ibmvnic_handle_crq(crq, adapter); + crq->generic.first = 0; + } else { + done = true; + } + } + spin_unlock_irqrestore(&queue->lock, flags); + return IRQ_HANDLED; +} + +static int ibmvnic_reenable_crq_queue(struct ibmvnic_adapter *adapter) +{ + struct vio_dev *vdev = adapter->vdev; + int rc; + + do { + rc = plpar_hcall_norets(H_ENABLE_CRQ, vdev->unit_address); + } while (rc == H_IN_PROGRESS || rc == H_BUSY || H_IS_LONG_BUSY(rc)); + + if (rc) + dev_err(&vdev->dev, "Error enabling adapter (rc=%d)\n", rc); + + return rc; +} + +static int ibmvnic_reset_crq(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_crq_queue *crq = &adapter->crq; + struct device *dev = &adapter->vdev->dev; + struct vio_dev *vdev = adapter->vdev; + int rc; + + /* Close the CRQ */ + do { + rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address); + } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); + + /* Clean out the queue */ + memset(crq->msgs, 0, PAGE_SIZE); + crq->cur = 0; + + /* And re-open it again */ + rc = plpar_hcall_norets(H_REG_CRQ, vdev->unit_address, + crq->msg_token, PAGE_SIZE); + + if (rc == H_CLOSED) + /* Adapter is good, but other end is not ready */ + dev_warn(dev, "Partner adapter not ready\n"); + else if (rc != 0) + dev_warn(dev, "Couldn't register crq (rc=%d)\n", rc); + + return rc; +} + +static void ibmvnic_release_crq_queue(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_crq_queue *crq = &adapter->crq; + struct vio_dev *vdev = adapter->vdev; + long rc; + + netdev_dbg(adapter->netdev, "Releasing CRQ\n"); + free_irq(vdev->irq, adapter); + do { + rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address); + } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); + + dma_unmap_single(&vdev->dev, crq->msg_token, PAGE_SIZE, + DMA_BIDIRECTIONAL); + free_page((unsigned long)crq->msgs); +} + +static int ibmvnic_init_crq_queue(struct ibmvnic_adapter *adapter) +{ + struct ibmvnic_crq_queue *crq = &adapter->crq; + struct device *dev = &adapter->vdev->dev; + struct vio_dev *vdev = adapter->vdev; + int rc, retrc = -ENOMEM; + + crq->msgs = (union ibmvnic_crq *)get_zeroed_page(GFP_KERNEL); + /* Should we allocate more than one page? */ + + if (!crq->msgs) + return -ENOMEM; + + crq->size = PAGE_SIZE / sizeof(*crq->msgs); + crq->msg_token = dma_map_single(dev, crq->msgs, PAGE_SIZE, + DMA_BIDIRECTIONAL); + if (dma_mapping_error(dev, crq->msg_token)) + goto map_failed; + + rc = plpar_hcall_norets(H_REG_CRQ, vdev->unit_address, + crq->msg_token, PAGE_SIZE); + + if (rc == H_RESOURCE) + /* maybe kexecing and resource is busy. try a reset */ + rc = ibmvnic_reset_crq(adapter); + retrc = rc; + + if (rc == H_CLOSED) { + dev_warn(dev, "Partner adapter not ready\n"); + } else if (rc) { + dev_warn(dev, "Error %d opening adapter\n", rc); + goto reg_crq_failed; + } + + retrc = 0; + + netdev_dbg(adapter->netdev, "registering irq 0x%x\n", vdev->irq); + rc = request_irq(vdev->irq, ibmvnic_interrupt, 0, IBMVNIC_NAME, + adapter); + if (rc) { + dev_err(dev, "Couldn't register irq 0x%x. rc=%d\n", + vdev->irq, rc); + goto req_irq_failed; + } + + rc = vio_enable_interrupts(vdev); + if (rc) { + dev_err(dev, "Error %d enabling interrupts\n", rc); + goto req_irq_failed; + } + + crq->cur = 0; + spin_lock_init(&crq->lock); + + return retrc; + +req_irq_failed: + do { + rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address); + } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); +reg_crq_failed: + dma_unmap_single(dev, crq->msg_token, PAGE_SIZE, DMA_BIDIRECTIONAL); +map_failed: + free_page((unsigned long)crq->msgs); + return retrc; +} + +/* debugfs for dump */ +static int ibmvnic_dump_show(struct seq_file *seq, void *v) +{ + struct net_device *netdev = seq->private; + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + struct device *dev = &adapter->vdev->dev; + union ibmvnic_crq crq; + + memset(&crq, 0, sizeof(crq)); + crq.request_dump_size.first = IBMVNIC_CRQ_CMD; + crq.request_dump_size.cmd = REQUEST_DUMP_SIZE; + ibmvnic_send_crq(adapter, &crq); + + init_completion(&adapter->fw_done); + wait_for_completion(&adapter->fw_done); + + seq_write(seq, adapter->dump_data, adapter->dump_data_size); + + dma_unmap_single(dev, adapter->dump_data_token, adapter->dump_data_size, + DMA_BIDIRECTIONAL); + + kfree(adapter->dump_data); + + return 0; +} + +static int ibmvnic_dump_open(struct inode *inode, struct file *file) +{ + return single_open(file, ibmvnic_dump_show, inode->i_private); +} + +static const struct file_operations ibmvnic_dump_ops = { + .owner = THIS_MODULE, + .open = ibmvnic_dump_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id) +{ + struct ibmvnic_adapter *adapter; + struct net_device *netdev; + unsigned char *mac_addr_p; + struct dentry *ent; + char buf[16]; /* debugfs name buf */ + int rc; + + dev_dbg(&dev->dev, "entering ibmvnic_probe for UA 0x%x\n", + dev->unit_address); + + mac_addr_p = (unsigned char *)vio_get_attribute(dev, + VETH_MAC_ADDR, NULL); + if (!mac_addr_p) { + dev_err(&dev->dev, + "(%s:%3.3d) ERROR: Can't find MAC_ADDR attribute\n", + __FILE__, __LINE__); + return 0; + } + + netdev = alloc_etherdev_mq(sizeof(struct ibmvnic_adapter), + IBMVNIC_MAX_TX_QUEUES); + if (!netdev) + return -ENOMEM; + + adapter = netdev_priv(netdev); + dev_set_drvdata(&dev->dev, netdev); + adapter->vdev = dev; + adapter->netdev = netdev; + + ether_addr_copy(adapter->mac_addr, mac_addr_p); + ether_addr_copy(netdev->dev_addr, adapter->mac_addr); + netdev->irq = dev->irq; + netdev->netdev_ops = &ibmvnic_netdev_ops; + netdev->ethtool_ops = &ibmvnic_ethtool_ops; + SET_NETDEV_DEV(netdev, &dev->dev); + + spin_lock_init(&adapter->stats_lock); + + rc = ibmvnic_init_crq_queue(adapter); + if (rc) { + dev_err(&dev->dev, "Couldn't initialize crq. rc=%d\n", rc); + goto free_netdev; + } + + INIT_LIST_HEAD(&adapter->errors); + INIT_LIST_HEAD(&adapter->inflight); + spin_lock_init(&adapter->error_list_lock); + spin_lock_init(&adapter->inflight_lock); + + adapter->stats_token = dma_map_single(&dev->dev, &adapter->stats, + sizeof(struct ibmvnic_statistics), + DMA_FROM_DEVICE); + if (dma_mapping_error(&dev->dev, adapter->stats_token)) { + if (!firmware_has_feature(FW_FEATURE_CMO)) + dev_err(&dev->dev, "Couldn't map stats buffer\n"); + goto free_crq; + } + + snprintf(buf, sizeof(buf), "ibmvnic_%x", dev->unit_address); + ent = debugfs_create_dir(buf, NULL); + if (!ent || IS_ERR(ent)) { + dev_info(&dev->dev, "debugfs create directory failed\n"); + adapter->debugfs_dir = NULL; + } else { + adapter->debugfs_dir = ent; + ent = debugfs_create_file("dump", S_IRUGO, adapter->debugfs_dir, + netdev, &ibmvnic_dump_ops); + if (!ent || IS_ERR(ent)) { + dev_info(&dev->dev, + "debugfs create dump file failed\n"); + adapter->debugfs_dump = NULL; + } else { + adapter->debugfs_dump = ent; + } + } + ibmvnic_send_crq_init(adapter); + + init_completion(&adapter->init_done); + wait_for_completion(&adapter->init_done); + + /* needed to pull init_sub_crqs outside of an interrupt context + * because it creates IRQ mappings for the subCRQ queues, causing + * a kernel warning + */ + init_sub_crqs(adapter, 0); + + reinit_completion(&adapter->init_done); + wait_for_completion(&adapter->init_done); + + /* if init_sub_crqs is partially successful, retry */ + while (!adapter->tx_scrq || !adapter->rx_scrq) { + init_sub_crqs(adapter, 1); + + reinit_completion(&adapter->init_done); + wait_for_completion(&adapter->init_done); + } + + netdev->real_num_tx_queues = adapter->req_tx_queues; + + rc = register_netdev(netdev); + if (rc) { + dev_err(&dev->dev, "failed to register netdev rc=%d\n", rc); + goto free_debugfs; + } + dev_info(&dev->dev, "ibmvnic registered\n"); + + return 0; + +free_debugfs: + if (adapter->debugfs_dir && !IS_ERR(adapter->debugfs_dir)) + debugfs_remove_recursive(adapter->debugfs_dir); +free_crq: + ibmvnic_release_crq_queue(adapter); +free_netdev: + free_netdev(netdev); + return rc; +} + +static int ibmvnic_remove(struct vio_dev *dev) +{ + struct net_device *netdev = dev_get_drvdata(&dev->dev); + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + + unregister_netdev(netdev); + + release_sub_crqs(adapter); + + ibmvnic_release_crq_queue(adapter); + + if (adapter->debugfs_dir && !IS_ERR(adapter->debugfs_dir)) + debugfs_remove_recursive(adapter->debugfs_dir); + + if (adapter->ras_comps) + dma_free_coherent(&dev->dev, + adapter->ras_comp_num * + sizeof(struct ibmvnic_fw_component), + adapter->ras_comps, adapter->ras_comps_tok); + + kfree(adapter->ras_comp_int); + + free_netdev(netdev); + dev_set_drvdata(&dev->dev, NULL); + + return 0; +} + +static unsigned long ibmvnic_get_desired_dma(struct vio_dev *vdev) +{ + struct net_device *netdev = dev_get_drvdata(&vdev->dev); + struct ibmvnic_adapter *adapter; + struct iommu_table *tbl; + unsigned long ret = 0; + int i; + + tbl = get_iommu_table_base(&vdev->dev); + + /* netdev inits at probe time along with the structures we need below*/ + if (!netdev) + return IOMMU_PAGE_ALIGN(IBMVNIC_IO_ENTITLEMENT_DEFAULT, tbl); + + adapter = netdev_priv(netdev); + + ret += PAGE_SIZE; /* the crq message queue */ + ret += adapter->bounce_buffer_size; + ret += IOMMU_PAGE_ALIGN(sizeof(struct ibmvnic_statistics), tbl); + + for (i = 0; i < adapter->req_tx_queues + adapter->req_rx_queues; i++) + ret += 4 * PAGE_SIZE; /* the scrq message queue */ + + for (i = 0; i < be32_to_cpu(adapter->login_rsp_buf->num_rxadd_subcrqs); + i++) + ret += adapter->rx_pool[i].size * + IOMMU_PAGE_ALIGN(adapter->rx_pool[i].buff_size, tbl); + + return ret; +} + +static int ibmvnic_resume(struct device *dev) +{ + struct net_device *netdev = dev_get_drvdata(dev); + struct ibmvnic_adapter *adapter = netdev_priv(netdev); + int i; + + /* kick the interrupt handlers just in case we lost an interrupt */ + for (i = 0; i < adapter->req_rx_queues; i++) + ibmvnic_interrupt_rx(adapter->rx_scrq[i]->irq, + adapter->rx_scrq[i]); + + return 0; +} + +static struct vio_device_id ibmvnic_device_table[] = { + {"network", "IBM,vnic"}, + {"", "" } +}; +MODULE_DEVICE_TABLE(vio, ibmvnic_device_table); + +static const struct dev_pm_ops ibmvnic_pm_ops = { + .resume = ibmvnic_resume +}; + +static struct vio_driver ibmvnic_driver = { + .id_table = ibmvnic_device_table, + .probe = ibmvnic_probe, + .remove = ibmvnic_remove, + .get_desired_dma = ibmvnic_get_desired_dma, + .name = ibmvnic_driver_name, + .pm = &ibmvnic_pm_ops, +}; + +/* module functions */ +static int __init ibmvnic_module_init(void) +{ + pr_info("%s: %s %s\n", ibmvnic_driver_name, ibmvnic_driver_string, + IBMVNIC_DRIVER_VERSION); + + return vio_register_driver(&ibmvnic_driver); +} + +static void __exit ibmvnic_module_exit(void) +{ + vio_unregister_driver(&ibmvnic_driver); +} + +module_init(ibmvnic_module_init); +module_exit(ibmvnic_module_exit); --- linux-4.4.0.orig/drivers/net/ethernet/ibm/ibmvnic.h +++ linux-4.4.0/drivers/net/ethernet/ibm/ibmvnic.h @@ -0,0 +1,1046 @@ +/**************************************************************************/ +/* */ +/* IBM System i and System p Virtual NIC Device Driver */ +/* Copyright (C) 2014 IBM Corp. */ +/* Santiago Leon (santi_leon@yahoo.com) */ +/* Thomas Falcon (tlfalcon@linux.vnet.ibm.com) */ +/* John Allen (jallen@linux.vnet.ibm.com) */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. */ +/* */ +/* This module contains the implementation of a virtual ethernet device */ +/* for use with IBM i/pSeries LPAR Linux. It utilizes the logical LAN */ +/* option of the RS/6000 Platform Architecture to interface with virtual */ +/* ethernet NICs that are presented to the partition by the hypervisor. */ +/* */ +/**************************************************************************/ + +#define IBMVNIC_NAME "ibmvnic" +#define IBMVNIC_DRIVER_VERSION "1.0" +#define IBMVNIC_INVALID_MAP -1 +#define IBMVNIC_STATS_TIMEOUT 1 +/* basic structures plus 100 2k buffers */ +#define IBMVNIC_IO_ENTITLEMENT_DEFAULT 610305 + +/* Initial module_parameters */ +#define IBMVNIC_RX_WEIGHT 16 +/* when changing this, update IBMVNIC_IO_ENTITLEMENT_DEFAULT */ +#define IBMVNIC_BUFFS_PER_POOL 100 +#define IBMVNIC_MAX_TX_QUEUES 5 + +struct ibmvnic_login_buffer { + __be32 len; + __be32 version; +#define INITIAL_VERSION_LB 1 + __be32 num_txcomp_subcrqs; + __be32 off_txcomp_subcrqs; + __be32 num_rxcomp_subcrqs; + __be32 off_rxcomp_subcrqs; + __be32 login_rsp_ioba; + __be32 login_rsp_len; +} __packed __aligned(8); + +struct ibmvnic_login_rsp_buffer { + __be32 len; + __be32 version; +#define INITIAL_VERSION_LRB 1 + __be32 num_txsubm_subcrqs; + __be32 off_txsubm_subcrqs; + __be32 num_rxadd_subcrqs; + __be32 off_rxadd_subcrqs; + __be32 off_rxadd_buff_size; + __be32 num_supp_tx_desc; + __be32 off_supp_tx_desc; +} __packed __aligned(8); + +struct ibmvnic_query_ip_offload_buffer { + __be32 len; + __be32 version; +#define INITIAL_VERSION_IOB 1 + u8 ipv4_chksum; + u8 ipv6_chksum; + u8 tcp_ipv4_chksum; + u8 tcp_ipv6_chksum; + u8 udp_ipv4_chksum; + u8 udp_ipv6_chksum; + u8 large_tx_ipv4; + u8 large_tx_ipv6; + u8 large_rx_ipv4; + u8 large_rx_ipv6; + u8 reserved1[14]; + __be16 max_ipv4_header_size; + __be16 max_ipv6_header_size; + __be16 max_tcp_header_size; + __be16 max_udp_header_size; + __be32 max_large_tx_size; + __be32 max_large_rx_size; + u8 reserved2[16]; + u8 ipv6_extension_header; +#define IPV6_EH_NOT_SUPPORTED 0x00 +#define IPV6_EH_SUPPORTED_LIM 0x01 +#define IPV6_EH_SUPPORTED 0xFF + u8 tcp_pseudosum_req; +#define TCP_PS_NOT_REQUIRED 0x00 +#define TCP_PS_REQUIRED 0x01 + u8 reserved3[30]; + __be16 num_ipv6_ext_headers; + __be32 off_ipv6_ext_headers; + u8 reserved4[154]; +} __packed __aligned(8); + +struct ibmvnic_control_ip_offload_buffer { + __be32 len; + __be32 version; +#define INITIAL_VERSION_IOB 1 + u8 ipv4_chksum; + u8 ipv6_chksum; + u8 tcp_ipv4_chksum; + u8 tcp_ipv6_chksum; + u8 udp_ipv4_chksum; + u8 udp_ipv6_chksum; + u8 large_tx_ipv4; + u8 large_tx_ipv6; + u8 bad_packet_rx; + u8 large_rx_ipv4; + u8 large_rx_ipv6; + u8 reserved4[111]; +} __packed __aligned(8); + +struct ibmvnic_fw_component { + u8 name[48]; + __be32 trace_buff_size; + u8 correlator; + u8 trace_level; + u8 parent_correlator; + u8 error_check_level; + u8 trace_on; + u8 reserved[7]; + u8 description[192]; +} __packed __aligned(8); + +struct ibmvnic_fw_trace_entry { + __be32 trace_id; + u8 num_valid_data; + u8 reserved[3]; + __be64 pmc_registers; + __be64 timebase; + __be64 trace_data[5]; +} __packed __aligned(8); + +struct ibmvnic_statistics { + __be32 version; + __be32 promiscuous; + __be64 rx_packets; + __be64 rx_bytes; + __be64 tx_packets; + __be64 tx_bytes; + __be64 ucast_tx_packets; + __be64 ucast_rx_packets; + __be64 mcast_tx_packets; + __be64 mcast_rx_packets; + __be64 bcast_tx_packets; + __be64 bcast_rx_packets; + __be64 align_errors; + __be64 fcs_errors; + __be64 single_collision_frames; + __be64 multi_collision_frames; + __be64 sqe_test_errors; + __be64 deferred_tx; + __be64 late_collisions; + __be64 excess_collisions; + __be64 internal_mac_tx_errors; + __be64 carrier_sense; + __be64 too_long_frames; + __be64 internal_mac_rx_errors; + u8 reserved[72]; +} __packed __aligned(8); + +struct ibmvnic_acl_buffer { + __be32 len; + __be32 version; +#define INITIAL_VERSION_IOB 1 + u8 mac_acls_restrict; + u8 vlan_acls_restrict; + u8 reserved1[22]; + __be32 num_mac_addrs; + __be32 offset_mac_addrs; + __be32 num_vlan_ids; + __be32 offset_vlan_ids; + u8 reserved2[80]; +} __packed __aligned(8); + +/* descriptors have been changed, how should this be defined? 1? 4? */ + +#define IBMVNIC_TX_DESC_VERSIONS 3 + +/* is this still needed? */ +struct ibmvnic_tx_comp_desc { + u8 first; + u8 num_comps; + __be16 rcs[5]; + __be32 correlators[5]; +} __packed __aligned(8); + +/* some flags that included in v0 descriptor, which is gone + * only used for IBMVNIC_TCP_CHKSUM and IBMVNIC_UDP_CHKSUM + * and only in some offload_flags variable that doesn't seem + * to be used anywhere, can probably be removed? + */ + +#define IBMVNIC_TCP_CHKSUM 0x20 +#define IBMVNIC_UDP_CHKSUM 0x08 + +#define IBMVNIC_MAX_FRAGS_PER_CRQ 3 + +struct ibmvnic_tx_desc { + u8 first; + u8 type; + +#define IBMVNIC_TX_DESC 0x10 + u8 n_crq_elem; + u8 n_sge; + u8 flags1; +#define IBMVNIC_TX_COMP_NEEDED 0x80 +#define IBMVNIC_TX_CHKSUM_OFFLOAD 0x40 +#define IBMVNIC_TX_LSO 0x20 +#define IBMVNIC_TX_PROT_TCP 0x10 +#define IBMVNIC_TX_PROT_UDP 0x08 +#define IBMVNIC_TX_PROT_IPV4 0x04 +#define IBMVNIC_TX_PROT_IPV6 0x02 +#define IBMVNIC_TX_VLAN_PRESENT 0x01 + u8 flags2; +#define IBMVNIC_TX_VLAN_INSERT 0x80 + __be16 mss; + u8 reserved[4]; + __be32 correlator; + __be16 vlan_id; + __be16 dma_reg; + __be32 sge_len; + __be64 ioba; +} __packed __aligned(8); + +struct ibmvnic_hdr_desc { + u8 first; + u8 type; +#define IBMVNIC_HDR_DESC 0x11 + u8 len; + u8 l2_len; + __be16 l3_len; + u8 l4_len; + u8 flag; + u8 data[24]; +} __packed __aligned(8); + +struct ibmvnic_hdr_ext_desc { + u8 first; + u8 type; +#define IBMVNIC_HDR_EXT_DESC 0x12 + u8 len; + u8 data[29]; +} __packed __aligned(8); + +struct ibmvnic_sge_desc { + u8 first; + u8 type; +#define IBMVNIC_SGE_DESC 0x30 + __be16 sge1_dma_reg; + __be32 sge1_len; + __be64 sge1_ioba; + __be16 reserved; + __be16 sge2_dma_reg; + __be32 sge2_len; + __be64 sge2_ioba; +} __packed __aligned(8); + +struct ibmvnic_rx_comp_desc { + u8 first; + u8 flags; +#define IBMVNIC_IP_CHKSUM_GOOD 0x80 +#define IBMVNIC_TCP_UDP_CHKSUM_GOOD 0x40 +#define IBMVNIC_END_FRAME 0x20 +#define IBMVNIC_EXACT_MC 0x10 +#define IBMVNIC_VLAN_STRIPPED 0x08 + __be16 off_frame_data; + __be32 len; + __be64 correlator; + __be16 vlan_tci; + __be16 rc; + u8 reserved[12]; +} __packed __aligned(8); + +struct ibmvnic_generic_scrq { + u8 first; + u8 reserved[31]; +} __packed __aligned(8); + +struct ibmvnic_rx_buff_add_desc { + u8 first; + u8 reserved[7]; + __be64 correlator; + __be32 ioba; + u8 map_id; + __be32 len:24; + u8 reserved2[8]; +} __packed __aligned(8); + +struct ibmvnic_rc { + u8 code; /* one of enum ibmvnic_rc_codes */ + u8 detailed_data[3]; +} __packed __aligned(4); + +struct ibmvnic_generic_crq { + u8 first; + u8 cmd; + u8 params[10]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_version_exchange { + u8 first; + u8 cmd; + __be16 version; +#define IBMVNIC_INITIAL_VERSION 1 + u8 reserved[8]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_capability { + u8 first; + u8 cmd; + __be16 capability; /* one of ibmvnic_capabilities */ + struct ibmvnic_rc rc; + __be32 number; /*FIX: should be __be64, but I'm getting the least + * significant word first + */ +} __packed __aligned(8); + +struct ibmvnic_login { + u8 first; + u8 cmd; + u8 reserved[6]; + __be32 ioba; + __be32 len; +} __packed __aligned(8); + +struct ibmvnic_phys_parms { + u8 first; + u8 cmd; + u8 flags1; +#define IBMVNIC_EXTERNAL_LOOPBACK 0x80 +#define IBMVNIC_INTERNAL_LOOPBACK 0x40 +#define IBMVNIC_PROMISC 0x20 +#define IBMVNIC_PHYS_LINK_ACTIVE 0x10 +#define IBMVNIC_AUTONEG_DUPLEX 0x08 +#define IBMVNIC_FULL_DUPLEX 0x04 +#define IBMVNIC_HALF_DUPLEX 0x02 +#define IBMVNIC_CAN_CHG_PHYS_PARMS 0x01 + u8 flags2; +#define IBMVNIC_LOGICAL_LNK_ACTIVE 0x80 + __be32 speed; +#define IBMVNIC_AUTONEG 0x80 +#define IBMVNIC_10MBPS 0x40 +#define IBMVNIC_100MBPS 0x20 +#define IBMVNIC_1GBPS 0x10 +#define IBMVNIC_10GBPS 0x08 + __be32 mtu; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_logical_link_state { + u8 first; + u8 cmd; + u8 link_state; +#define IBMVNIC_LOGICAL_LNK_DN 0x00 +#define IBMVNIC_LOGICAL_LNK_UP 0x01 +#define IBMVNIC_LOGICAL_LNK_QUERY 0xff + u8 reserved[9]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_query_ip_offload { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 len; + __be32 ioba; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_control_ip_offload { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 ioba; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_dump_size { + u8 first; + u8 cmd; + u8 reserved[6]; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_dump { + u8 first; + u8 cmd; + u8 reserved1[2]; + __be32 ioba; + __be32 len; + u8 reserved2[4]; +} __packed __aligned(8); + +struct ibmvnic_request_dump_rsp { + u8 first; + u8 cmd; + u8 reserved[6]; + __be32 dumped_len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_ras_comp_num { + u8 first; + u8 cmd; + u8 reserved1[2]; + __be32 num_components; + u8 reserved2[4]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_ras_comps { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 ioba; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_control_ras { + u8 first; + u8 cmd; + u8 correlator; + u8 level; + u8 op; +#define IBMVNIC_TRACE_LEVEL 1 +#define IBMVNIC_ERROR_LEVEL 2 +#define IBMVNIC_TRACE_PAUSE 3 +#define IBMVNIC_TRACE_RESUME 4 +#define IBMVNIC_TRACE_ON 5 +#define IBMVNIC_TRACE_OFF 6 +#define IBMVNIC_CHG_TRACE_BUFF_SZ 7 + u8 trace_buff_sz[3]; + u8 reserved[4]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_collect_fw_trace { + u8 first; + u8 cmd; + u8 correlator; + u8 reserved; + __be32 ioba; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_statistics { + u8 first; + u8 cmd; + u8 flags; +#define IBMVNIC_PHYSICAL_PORT 0x80 + u8 reserved1; + __be32 ioba; + __be32 len; + u8 reserved[4]; +} __packed __aligned(8); + +struct ibmvnic_request_debug_stats { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 ioba; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_error_indication { + u8 first; + u8 cmd; + u8 flags; +#define IBMVNIC_FATAL_ERROR 0x80 + u8 reserved1; + __be32 error_id; + __be32 detail_error_sz; + __be16 error_cause; + u8 reserved2[2]; +} __packed __aligned(8); + +struct ibmvnic_request_error_info { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 ioba; + __be32 len; + __be32 error_id; +} __packed __aligned(8); + +struct ibmvnic_request_error_rsp { + u8 first; + u8 cmd; + u8 reserved[2]; + __be32 error_id; + __be32 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_link_state_indication { + u8 first; + u8 cmd; + u8 reserved1[2]; + u8 phys_link_state; + u8 logical_link_state; + u8 reserved2[10]; +} __packed __aligned(8); + +struct ibmvnic_change_mac_addr { + u8 first; + u8 cmd; + u8 mac_addr[6]; + struct ibmvnic_rc rc; + u8 reserved[4]; +} __packed __aligned(8); + +struct ibmvnic_multicast_ctrl { + u8 first; + u8 cmd; + u8 mac_addr[6]; + u8 flags; +#define IBMVNIC_ENABLE_MC 0x80 +#define IBMVNIC_DISABLE_MC 0x40 +#define IBMVNIC_ENABLE_ALL 0x20 +#define IBMVNIC_DISABLE_ALL 0x10 + u8 reserved1; + __be16 reserved2; /* was num_enabled_mc_addr; */ + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_get_vpd_size_rsp { + u8 first; + u8 cmd; + u8 reserved[2]; + __be64 len; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_get_vpd { + u8 first; + u8 cmd; + u8 reserved1[2]; + __be32 ioba; + __be32 len; + u8 reserved[4]; +} __packed __aligned(8); + +struct ibmvnic_acl_change_indication { + u8 first; + u8 cmd; + __be16 change_type; +#define IBMVNIC_MAC_ACL 0 +#define IBMVNIC_VLAN_ACL 1 + u8 reserved[12]; +} __packed __aligned(8); + +struct ibmvnic_acl_query { + u8 first; + u8 cmd; + u8 reserved1[2]; + __be32 ioba; + __be32 len; + u8 reserved2[4]; +} __packed __aligned(8); + +struct ibmvnic_tune { + u8 first; + u8 cmd; + u8 reserved1[2]; + __be32 ioba; + __be32 len; + u8 reserved2[4]; +} __packed __aligned(8); + +struct ibmvnic_request_map { + u8 first; + u8 cmd; + u8 reserved1; + u8 map_id; + __be32 ioba; + __be32 len; + u8 reserved2[4]; +} __packed __aligned(8); + +struct ibmvnic_request_map_rsp { + u8 first; + u8 cmd; + u8 reserved1; + u8 map_id; + u8 reserved2[4]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_request_unmap { + u8 first; + u8 cmd; + u8 reserved1; + u8 map_id; + u8 reserved2[12]; +} __packed __aligned(8); + +struct ibmvnic_request_unmap_rsp { + u8 first; + u8 cmd; + u8 reserved1; + u8 map_id; + u8 reserved2[8]; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +struct ibmvnic_query_map { + u8 first; + u8 cmd; + u8 reserved[14]; +} __packed __aligned(8); + +struct ibmvnic_query_map_rsp { + u8 first; + u8 cmd; + u8 reserved; + u8 page_size; + __be32 tot_pages; + __be32 free_pages; + struct ibmvnic_rc rc; +} __packed __aligned(8); + +union ibmvnic_crq { + struct ibmvnic_generic_crq generic; + struct ibmvnic_version_exchange version_exchange; + struct ibmvnic_version_exchange version_exchange_rsp; + struct ibmvnic_capability query_capability; + struct ibmvnic_capability query_capability_rsp; + struct ibmvnic_capability request_capability; + struct ibmvnic_capability request_capability_rsp; + struct ibmvnic_login login; + struct ibmvnic_generic_crq login_rsp; + struct ibmvnic_phys_parms query_phys_parms; + struct ibmvnic_phys_parms query_phys_parms_rsp; + struct ibmvnic_phys_parms query_phys_capabilities; + struct ibmvnic_phys_parms query_phys_capabilities_rsp; + struct ibmvnic_phys_parms set_phys_parms; + struct ibmvnic_phys_parms set_phys_parms_rsp; + struct ibmvnic_logical_link_state logical_link_state; + struct ibmvnic_logical_link_state logical_link_state_rsp; + struct ibmvnic_query_ip_offload query_ip_offload; + struct ibmvnic_query_ip_offload query_ip_offload_rsp; + struct ibmvnic_control_ip_offload control_ip_offload; + struct ibmvnic_control_ip_offload control_ip_offload_rsp; + struct ibmvnic_request_dump_size request_dump_size; + struct ibmvnic_request_dump_size request_dump_size_rsp; + struct ibmvnic_request_dump request_dump; + struct ibmvnic_request_dump_rsp request_dump_rsp; + struct ibmvnic_request_ras_comp_num request_ras_comp_num; + struct ibmvnic_request_ras_comp_num request_ras_comp_num_rsp; + struct ibmvnic_request_ras_comps request_ras_comps; + struct ibmvnic_request_ras_comps request_ras_comps_rsp; + struct ibmvnic_control_ras control_ras; + struct ibmvnic_control_ras control_ras_rsp; + struct ibmvnic_collect_fw_trace collect_fw_trace; + struct ibmvnic_collect_fw_trace collect_fw_trace_rsp; + struct ibmvnic_request_statistics request_statistics; + struct ibmvnic_generic_crq request_statistics_rsp; + struct ibmvnic_request_debug_stats request_debug_stats; + struct ibmvnic_request_debug_stats request_debug_stats_rsp; + struct ibmvnic_error_indication error_indication; + struct ibmvnic_request_error_info request_error_info; + struct ibmvnic_request_error_rsp request_error_rsp; + struct ibmvnic_link_state_indication link_state_indication; + struct ibmvnic_change_mac_addr change_mac_addr; + struct ibmvnic_change_mac_addr change_mac_addr_rsp; + struct ibmvnic_multicast_ctrl multicast_ctrl; + struct ibmvnic_multicast_ctrl multicast_ctrl_rsp; + struct ibmvnic_generic_crq get_vpd_size; + struct ibmvnic_get_vpd_size_rsp get_vpd_size_rsp; + struct ibmvnic_get_vpd get_vpd; + struct ibmvnic_generic_crq get_vpd_rsp; + struct ibmvnic_acl_change_indication acl_change_indication; + struct ibmvnic_acl_query acl_query; + struct ibmvnic_generic_crq acl_query_rsp; + struct ibmvnic_tune tune; + struct ibmvnic_generic_crq tune_rsp; + struct ibmvnic_request_map request_map; + struct ibmvnic_request_map_rsp request_map_rsp; + struct ibmvnic_request_unmap request_unmap; + struct ibmvnic_request_unmap_rsp request_unmap_rsp; + struct ibmvnic_query_map query_map; + struct ibmvnic_query_map_rsp query_map_rsp; +}; + +enum ibmvnic_rc_codes { + SUCCESS = 0, + PARTIALSUCCESS = 1, + PERMISSION = 2, + NOMEMORY = 3, + PARAMETER = 4, + UNKNOWNCOMMAND = 5, + ABORTED = 6, + INVALIDSTATE = 7, + INVALIDIOBA = 8, + INVALIDLENGTH = 9, + UNSUPPORTEDOPTION = 10, +}; + +enum ibmvnic_capabilities { + MIN_TX_QUEUES = 1, + MIN_RX_QUEUES = 2, + MIN_RX_ADD_QUEUES = 3, + MAX_TX_QUEUES = 4, + MAX_RX_QUEUES = 5, + MAX_RX_ADD_QUEUES = 6, + REQ_TX_QUEUES = 7, + REQ_RX_QUEUES = 8, + REQ_RX_ADD_QUEUES = 9, + MIN_TX_ENTRIES_PER_SUBCRQ = 10, + MIN_RX_ADD_ENTRIES_PER_SUBCRQ = 11, + MAX_TX_ENTRIES_PER_SUBCRQ = 12, + MAX_RX_ADD_ENTRIES_PER_SUBCRQ = 13, + REQ_TX_ENTRIES_PER_SUBCRQ = 14, + REQ_RX_ADD_ENTRIES_PER_SUBCRQ = 15, + TCP_IP_OFFLOAD = 16, + PROMISC_REQUESTED = 17, + PROMISC_SUPPORTED = 18, + MIN_MTU = 19, + MAX_MTU = 20, + REQ_MTU = 21, + MAX_MULTICAST_FILTERS = 22, + VLAN_HEADER_INSERTION = 23, + MAX_TX_SG_ENTRIES = 25, + RX_SG_SUPPORTED = 26, + RX_SG_REQUESTED = 27, + OPT_TX_COMP_SUB_QUEUES = 28, + OPT_RX_COMP_QUEUES = 29, + OPT_RX_BUFADD_Q_PER_RX_COMP_Q = 30, + OPT_TX_ENTRIES_PER_SUBCRQ = 31, + OPT_RXBA_ENTRIES_PER_SUBCRQ = 32, + TX_RX_DESC_REQ = 33, +}; + +enum ibmvnic_error_cause { + ADAPTER_PROBLEM = 0, + BUS_PROBLEM = 1, + FW_PROBLEM = 2, + DD_PROBLEM = 3, + EEH_RECOVERY = 4, + FW_UPDATED = 5, + LOW_MEMORY = 6, +}; + +enum ibmvnic_commands { + VERSION_EXCHANGE = 0x01, + VERSION_EXCHANGE_RSP = 0x81, + QUERY_CAPABILITY = 0x02, + QUERY_CAPABILITY_RSP = 0x82, + REQUEST_CAPABILITY = 0x03, + REQUEST_CAPABILITY_RSP = 0x83, + LOGIN = 0x04, + LOGIN_RSP = 0x84, + QUERY_PHYS_PARMS = 0x05, + QUERY_PHYS_PARMS_RSP = 0x85, + QUERY_PHYS_CAPABILITIES = 0x06, + QUERY_PHYS_CAPABILITIES_RSP = 0x86, + SET_PHYS_PARMS = 0x07, + SET_PHYS_PARMS_RSP = 0x87, + ERROR_INDICATION = 0x08, + REQUEST_ERROR_INFO = 0x09, + REQUEST_ERROR_RSP = 0x89, + REQUEST_DUMP_SIZE = 0x0A, + REQUEST_DUMP_SIZE_RSP = 0x8A, + REQUEST_DUMP = 0x0B, + REQUEST_DUMP_RSP = 0x8B, + LOGICAL_LINK_STATE = 0x0C, + LOGICAL_LINK_STATE_RSP = 0x8C, + REQUEST_STATISTICS = 0x0D, + REQUEST_STATISTICS_RSP = 0x8D, + REQUEST_RAS_COMP_NUM = 0x0E, + REQUEST_RAS_COMP_NUM_RSP = 0x8E, + REQUEST_RAS_COMPS = 0x0F, + REQUEST_RAS_COMPS_RSP = 0x8F, + CONTROL_RAS = 0x10, + CONTROL_RAS_RSP = 0x90, + COLLECT_FW_TRACE = 0x11, + COLLECT_FW_TRACE_RSP = 0x91, + LINK_STATE_INDICATION = 0x12, + CHANGE_MAC_ADDR = 0x13, + CHANGE_MAC_ADDR_RSP = 0x93, + MULTICAST_CTRL = 0x14, + MULTICAST_CTRL_RSP = 0x94, + GET_VPD_SIZE = 0x15, + GET_VPD_SIZE_RSP = 0x95, + GET_VPD = 0x16, + GET_VPD_RSP = 0x96, + TUNE = 0x17, + TUNE_RSP = 0x97, + QUERY_IP_OFFLOAD = 0x18, + QUERY_IP_OFFLOAD_RSP = 0x98, + CONTROL_IP_OFFLOAD = 0x19, + CONTROL_IP_OFFLOAD_RSP = 0x99, + ACL_CHANGE_INDICATION = 0x1A, + ACL_QUERY = 0x1B, + ACL_QUERY_RSP = 0x9B, + REQUEST_DEBUG_STATS = 0x1C, + REQUEST_DEBUG_STATS_RSP = 0x9C, + QUERY_MAP = 0x1D, + QUERY_MAP_RSP = 0x9D, + REQUEST_MAP = 0x1E, + REQUEST_MAP_RSP = 0x9E, + REQUEST_UNMAP = 0x1F, + REQUEST_UNMAP_RSP = 0x9F, + VLAN_CTRL = 0x20, + VLAN_CTRL_RSP = 0xA0, +}; + +enum ibmvnic_crq_type { + IBMVNIC_CRQ_CMD = 0x80, + IBMVNIC_CRQ_CMD_RSP = 0x80, + IBMVNIC_CRQ_INIT_CMD = 0xC0, + IBMVNIC_CRQ_INIT_RSP = 0xC0, + IBMVNIC_CRQ_XPORT_EVENT = 0xFF, +}; + +enum ibmvfc_crq_format { + IBMVNIC_CRQ_INIT = 0x01, + IBMVNIC_CRQ_INIT_COMPLETE = 0x02, + IBMVNIC_PARTITION_MIGRATED = 0x06, +}; + +struct ibmvnic_crq_queue { + union ibmvnic_crq *msgs; + int size, cur; + dma_addr_t msg_token; + spinlock_t lock; +}; + +union sub_crq { + struct ibmvnic_generic_scrq generic; + struct ibmvnic_tx_comp_desc tx_comp; + struct ibmvnic_tx_desc v1; + struct ibmvnic_hdr_desc hdr; + struct ibmvnic_hdr_ext_desc hdr_ext; + struct ibmvnic_sge_desc sge; + struct ibmvnic_rx_comp_desc rx_comp; + struct ibmvnic_rx_buff_add_desc rx_add; +}; + +struct ibmvnic_sub_crq_queue { + union sub_crq *msgs; + int size, cur; + dma_addr_t msg_token; + unsigned long crq_num; + unsigned long hw_irq; + unsigned int irq; + unsigned int pool_index; + int scrq_num; + spinlock_t lock; + struct sk_buff *rx_skb_top; + struct ibmvnic_adapter *adapter; +}; + +struct ibmvnic_long_term_buff { + unsigned char *buff; + dma_addr_t addr; + u64 size; + u8 map_id; +}; + +struct ibmvnic_tx_buff { + struct sk_buff *skb; + dma_addr_t data_dma[IBMVNIC_MAX_FRAGS_PER_CRQ]; + unsigned int data_len[IBMVNIC_MAX_FRAGS_PER_CRQ]; + int index; + int pool_index; + bool last_frag; + bool used_bounce; +}; + +struct ibmvnic_tx_pool { + struct ibmvnic_tx_buff *tx_buff; + int *free_map; + int consumer_index; + int producer_index; + wait_queue_head_t ibmvnic_tx_comp_q; + struct task_struct *work_thread; + struct ibmvnic_long_term_buff long_term_buff; +}; + +struct ibmvnic_rx_buff { + struct sk_buff *skb; + dma_addr_t dma; + unsigned char *data; + int size; + int pool_index; +}; + +struct ibmvnic_rx_pool { + struct ibmvnic_rx_buff *rx_buff; + int size; + int index; + int buff_size; + atomic_t available; + int *free_map; + int next_free; + int next_alloc; + int active; + struct ibmvnic_long_term_buff long_term_buff; +}; + +struct ibmvnic_error_buff { + char *buff; + dma_addr_t dma; + int len; + struct list_head list; + __be32 error_id; +}; + +struct ibmvnic_fw_comp_internal { + struct ibmvnic_adapter *adapter; + int num; + struct debugfs_blob_wrapper desc_blob; + int paused; +}; + +struct ibmvnic_inflight_cmd { + union ibmvnic_crq crq; + struct list_head list; +}; + +struct ibmvnic_adapter { + struct vio_dev *vdev; + struct net_device *netdev; + struct ibmvnic_crq_queue crq; + u8 mac_addr[ETH_ALEN]; + struct ibmvnic_query_ip_offload_buffer ip_offload_buf; + dma_addr_t ip_offload_tok; + struct ibmvnic_control_ip_offload_buffer ip_offload_ctrl; + dma_addr_t ip_offload_ctrl_tok; + bool migrated; + u32 msg_enable; + void *bounce_buffer; + int bounce_buffer_size; + dma_addr_t bounce_buffer_dma; + + /* Statistics */ + struct net_device_stats net_stats; + struct ibmvnic_statistics stats; + dma_addr_t stats_token; + struct completion stats_done; + spinlock_t stats_lock; + int replenish_no_mem; + int replenish_add_buff_success; + int replenish_add_buff_failure; + int replenish_task_cycles; + int tx_send_failed; + int tx_map_failed; + + int phys_link_state; + int logical_link_state; + + /* login data */ + struct ibmvnic_login_buffer *login_buf; + dma_addr_t login_buf_token; + int login_buf_sz; + + struct ibmvnic_login_rsp_buffer *login_rsp_buf; + dma_addr_t login_rsp_buf_token; + int login_rsp_buf_sz; + + atomic_t running_cap_queries; + + struct ibmvnic_sub_crq_queue **tx_scrq; + struct ibmvnic_sub_crq_queue **rx_scrq; + int requested_caps; + + /* rx structs */ + struct napi_struct *napi; + struct ibmvnic_rx_pool *rx_pool; + u64 promisc; + + struct ibmvnic_tx_pool *tx_pool; + bool closing; + struct completion init_done; + + struct list_head errors; + spinlock_t error_list_lock; + + /* debugfs */ + struct dentry *debugfs_dir; + struct dentry *debugfs_dump; + struct completion fw_done; + char *dump_data; + dma_addr_t dump_data_token; + int dump_data_size; + int ras_comp_num; + struct ibmvnic_fw_component *ras_comps; + struct ibmvnic_fw_comp_internal *ras_comp_int; + dma_addr_t ras_comps_tok; + struct dentry *ras_comps_ent; + + /* in-flight commands that allocate and/or map memory*/ + struct list_head inflight; + spinlock_t inflight_lock; + + /* partner capabilities */ + u64 min_tx_queues; + u64 min_rx_queues; + u64 min_rx_add_queues; + u64 max_tx_queues; + u64 max_rx_queues; + u64 max_rx_add_queues; + u64 req_tx_queues; + u64 req_rx_queues; + u64 req_rx_add_queues; + u64 min_tx_entries_per_subcrq; + u64 min_rx_add_entries_per_subcrq; + u64 max_tx_entries_per_subcrq; + u64 max_rx_add_entries_per_subcrq; + u64 req_tx_entries_per_subcrq; + u64 req_rx_add_entries_per_subcrq; + u64 tcp_ip_offload; + u64 promisc_requested; + u64 promisc_supported; + u64 min_mtu; + u64 max_mtu; + u64 req_mtu; + u64 max_multicast_filters; + u64 vlan_header_insertion; + u64 max_tx_sg_entries; + u64 rx_sg_supported; + u64 rx_sg_requested; + u64 opt_tx_comp_sub_queues; + u64 opt_rx_comp_queues; + u64 opt_rx_bufadd_q_per_rx_comp_q; + u64 opt_tx_entries_per_subcrq; + u64 opt_rxba_entries_per_subcrq; + __be64 tx_rx_desc_req; + u8 map_id; +}; --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000/e1000.h +++ linux-4.4.0/drivers/net/ethernet/intel/e1000/e1000.h @@ -213,8 +213,11 @@ }; #define E1000_DESC_UNUSED(R) \ - ((((R)->next_to_clean > (R)->next_to_use) \ - ? 0 : (R)->count) + (R)->next_to_clean - (R)->next_to_use - 1) +({ \ + unsigned int clean = smp_load_acquire(&(R)->next_to_clean); \ + unsigned int use = READ_ONCE((R)->next_to_use); \ + (clean > use ? 0 : (R)->count) + clean - use - 1; \ +}) #define E1000_RX_DESC_EXT(R, i) \ (&(((union e1000_rx_desc_extended *)((R).desc))[i])) --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000/e1000_hw.c +++ linux-4.4.0/drivers/net/ethernet/intel/e1000/e1000_hw.c @@ -1,5 +1,5 @@ /******************************************************************************* - +* Intel PRO/1000 Linux driver Copyright(c) 1999 - 2006 Intel Corporation. @@ -106,7 +106,7 @@ 120, 120 }; -static DEFINE_SPINLOCK(e1000_eeprom_lock); +static DEFINE_MUTEX(e1000_eeprom_lock); static DEFINE_SPINLOCK(e1000_phy_lock); /** @@ -624,8 +624,8 @@ /* Workaround for PCI-X problem when BIOS sets MMRBC * incorrectly. */ - if (hw->bus_type == e1000_bus_type_pcix - && e1000_pcix_get_mmrbc(hw) > 2048) + if (hw->bus_type == e1000_bus_type_pcix && + e1000_pcix_get_mmrbc(hw) > 2048) e1000_pcix_set_mmrbc(hw, 2048); break; } @@ -683,10 +683,9 @@ } ret_val = e1000_read_eeprom(hw, EEPROM_SERDES_AMPLITUDE, 1, - &eeprom_data); - if (ret_val) { + &eeprom_data); + if (ret_val) return ret_val; - } if (eeprom_data != EEPROM_RESERVED_WORD) { /* Adjust SERDES output amplitude only. */ @@ -1074,8 +1073,8 @@ if (hw->mac_type <= e1000_82543 || hw->mac_type == e1000_82541 || hw->mac_type == e1000_82547 || - hw->mac_type == e1000_82541_rev_2 - || hw->mac_type == e1000_82547_rev_2) + hw->mac_type == e1000_82541_rev_2 || + hw->mac_type == e1000_82547_rev_2) hw->phy_reset_disable = false; return E1000_SUCCESS; @@ -1652,7 +1651,7 @@ mii_1000t_ctrl_reg = 0; } else { ret_val = e1000_write_phy_reg(hw, PHY_1000T_CTRL, - mii_1000t_ctrl_reg); + mii_1000t_ctrl_reg); if (ret_val) return ret_val; } @@ -1881,10 +1880,11 @@ if (ret_val) return ret_val; - if ((hw->mac_type == e1000_82544 || hw->mac_type == e1000_82543) - && (!hw->autoneg) - && (hw->forced_speed_duplex == e1000_10_full - || hw->forced_speed_duplex == e1000_10_half)) { + if ((hw->mac_type == e1000_82544 || + hw->mac_type == e1000_82543) && + (!hw->autoneg) && + (hw->forced_speed_duplex == e1000_10_full || + hw->forced_speed_duplex == e1000_10_half)) { ret_val = e1000_polarity_reversal_workaround(hw); if (ret_val) return ret_val; @@ -2084,11 +2084,12 @@ * so we had to force link. In this case, we need to force the * configuration of the MAC to match the "fc" parameter. */ - if (((hw->media_type == e1000_media_type_fiber) && (hw->autoneg_failed)) - || ((hw->media_type == e1000_media_type_internal_serdes) - && (hw->autoneg_failed)) - || ((hw->media_type == e1000_media_type_copper) - && (!hw->autoneg))) { + if (((hw->media_type == e1000_media_type_fiber) && + (hw->autoneg_failed)) || + ((hw->media_type == e1000_media_type_internal_serdes) && + (hw->autoneg_failed)) || + ((hw->media_type == e1000_media_type_copper) && + (!hw->autoneg))) { ret_val = e1000_force_mac_fc(hw); if (ret_val) { e_dbg("Error forcing flow control settings\n"); @@ -2193,8 +2194,7 @@ else if (!(mii_nway_adv_reg & NWAY_AR_PAUSE) && (mii_nway_adv_reg & NWAY_AR_ASM_DIR) && (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) && - (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) - { + (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) { hw->fc = E1000_FC_TX_PAUSE; e_dbg ("Flow Control = TX PAUSE frames only.\n"); @@ -2210,8 +2210,7 @@ else if ((mii_nway_adv_reg & NWAY_AR_PAUSE) && (mii_nway_adv_reg & NWAY_AR_ASM_DIR) && !(mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) && - (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) - { + (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) { hw->fc = E1000_FC_RX_PAUSE; e_dbg ("Flow Control = RX PAUSE frames only.\n"); @@ -2460,10 +2459,11 @@ * happen due to the execution of this workaround. */ - if ((hw->mac_type == e1000_82544 - || hw->mac_type == e1000_82543) && (!hw->autoneg) - && (hw->forced_speed_duplex == e1000_10_full - || hw->forced_speed_duplex == e1000_10_half)) { + if ((hw->mac_type == e1000_82544 || + hw->mac_type == e1000_82543) && + (!hw->autoneg) && + (hw->forced_speed_duplex == e1000_10_full || + hw->forced_speed_duplex == e1000_10_half)) { ew32(IMC, 0xffffffff); ret_val = e1000_polarity_reversal_workaround(hw); @@ -2528,8 +2528,10 @@ */ if (hw->tbi_compatibility_en) { u16 speed, duplex; + ret_val = e1000_get_speed_and_duplex(hw, &speed, &duplex); + if (ret_val) { e_dbg ("Error getting link speed and duplex\n"); @@ -2628,10 +2630,10 @@ e1000_read_phy_reg(hw, PHY_LP_ABILITY, &phy_data); if (ret_val) return ret_val; - if ((*speed == SPEED_100 - && !(phy_data & NWAY_LPAR_100TX_FD_CAPS)) - || (*speed == SPEED_10 - && !(phy_data & NWAY_LPAR_10T_FD_CAPS))) + if ((*speed == SPEED_100 && + !(phy_data & NWAY_LPAR_100TX_FD_CAPS)) || + (*speed == SPEED_10 && + !(phy_data & NWAY_LPAR_10T_FD_CAPS))) *duplex = HALF_DUPLEX; } } @@ -2664,9 +2666,9 @@ ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data); if (ret_val) return ret_val; - if (phy_data & MII_SR_AUTONEG_COMPLETE) { + if (phy_data & MII_SR_AUTONEG_COMPLETE) return E1000_SUCCESS; - } + msleep(100); } return E1000_SUCCESS; @@ -2803,11 +2805,11 @@ return data; } - /** * e1000_read_phy_reg - read a phy register * @hw: Struct containing variables accessed by shared code * @reg_addr: address of the PHY register to read + * @phy_data: pointer to the value on the PHY register * * Reads the value from a PHY register, if the value is on a specific non zero * page, sets the page first. @@ -2823,14 +2825,13 @@ (reg_addr > MAX_PHY_MULTI_PAGE_REG)) { ret_val = e1000_write_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT, (u16) reg_addr); - if (ret_val) { - spin_unlock_irqrestore(&e1000_phy_lock, flags); - return ret_val; - } + if (ret_val) + goto out; } ret_val = e1000_read_phy_reg_ex(hw, MAX_PHY_REG_ADDRESS & reg_addr, phy_data); +out: spin_unlock_irqrestore(&e1000_phy_lock, flags); return ret_val; @@ -2881,7 +2882,7 @@ e_dbg("MDI Read Error\n"); return -E1000_ERR_PHY; } - *phy_data = (u16) mdic; + *phy_data = (u16)mdic; } else { mdic = ((reg_addr << E1000_MDIC_REG_SHIFT) | (phy_addr << E1000_MDIC_PHY_SHIFT) | @@ -2906,7 +2907,7 @@ e_dbg("MDI Error\n"); return -E1000_ERR_PHY; } - *phy_data = (u16) mdic; + *phy_data = (u16)mdic; } } else { /* We must first send a preamble through the MDIO pin to signal @@ -2960,7 +2961,7 @@ if ((hw->phy_type == e1000_phy_igp) && (reg_addr > MAX_PHY_MULTI_PAGE_REG)) { ret_val = e1000_write_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT, - (u16) reg_addr); + (u16)reg_addr); if (ret_val) { spin_unlock_irqrestore(&e1000_phy_lock, flags); return ret_val; @@ -2993,7 +2994,7 @@ * the desired data. */ if (hw->mac_type == e1000_ce4100) { - mdic = (((u32) phy_data) | + mdic = (((u32)phy_data) | (reg_addr << E1000_MDIC_REG_SHIFT) | (phy_addr << E1000_MDIC_PHY_SHIFT) | (INTEL_CE_GBE_MDIC_OP_WRITE) | @@ -3015,7 +3016,7 @@ return -E1000_ERR_PHY; } } else { - mdic = (((u32) phy_data) | + mdic = (((u32)phy_data) | (reg_addr << E1000_MDIC_REG_SHIFT) | (phy_addr << E1000_MDIC_PHY_SHIFT) | (E1000_MDIC_OP_WRITE)); @@ -3053,7 +3054,7 @@ mdic = ((PHY_TURNAROUND) | (reg_addr << 2) | (phy_addr << 7) | (PHY_OP_WRITE << 12) | (PHY_SOF << 14)); mdic <<= 16; - mdic |= (u32) phy_data; + mdic |= (u32)phy_data; e1000_shift_out_mdi_bits(hw, mdic, 32); } @@ -3176,14 +3177,14 @@ if (ret_val) return ret_val; - hw->phy_id = (u32) (phy_id_high << 16); + hw->phy_id = (u32)(phy_id_high << 16); udelay(20); ret_val = e1000_read_phy_reg(hw, PHY_ID2, &phy_id_low); if (ret_val) return ret_val; - hw->phy_id |= (u32) (phy_id_low & PHY_REVISION_MASK); - hw->phy_revision = (u32) phy_id_low & ~PHY_REVISION_MASK; + hw->phy_id |= (u32)(phy_id_low & PHY_REVISION_MASK); + hw->phy_revision = (u32)phy_id_low & ~PHY_REVISION_MASK; switch (hw->mac_type) { case e1000_82543: @@ -3401,7 +3402,6 @@ phy_info->remote_rx = ((phy_data & SR_1000T_REMOTE_RX_STATUS) >> SR_1000T_REMOTE_RX_STATUS_SHIFT) ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok; - } return E1000_SUCCESS; @@ -3449,7 +3449,7 @@ if (hw->phy_type == e1000_phy_igp) return e1000_phy_igp_get_info(hw, phy_info); else if ((hw->phy_type == e1000_phy_8211) || - (hw->phy_type == e1000_phy_8201)) + (hw->phy_type == e1000_phy_8201)) return E1000_SUCCESS; else return e1000_phy_m88_get_info(hw, phy_info); @@ -3611,11 +3611,11 @@ */ mask = 0x01 << (count - 1); eecd = er32(EECD); - if (eeprom->type == e1000_eeprom_microwire) { + if (eeprom->type == e1000_eeprom_microwire) eecd &= ~E1000_EECD_DO; - } else if (eeprom->type == e1000_eeprom_spi) { + else if (eeprom->type == e1000_eeprom_spi) eecd |= E1000_EECD_DO; - } + do { /* A "1" is shifted out to the EEPROM by setting bit "DI" to a * "1", and then raising and then lowering the clock (the SK bit @@ -3851,7 +3851,7 @@ do { e1000_shift_out_ee_bits(hw, EEPROM_RDSR_OPCODE_SPI, hw->eeprom.opcode_bits); - spi_stat_reg = (u8) e1000_shift_in_ee_bits(hw, 8); + spi_stat_reg = (u8)e1000_shift_in_ee_bits(hw, 8); if (!(spi_stat_reg & EEPROM_STATUS_RDY_SPI)) break; @@ -3882,9 +3882,10 @@ s32 e1000_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) { s32 ret; - spin_lock(&e1000_eeprom_lock); + + mutex_lock(&e1000_eeprom_lock); ret = e1000_do_read_eeprom(hw, offset, words, data); - spin_unlock(&e1000_eeprom_lock); + mutex_unlock(&e1000_eeprom_lock); return ret; } @@ -3896,15 +3897,16 @@ if (hw->mac_type == e1000_ce4100) { GBE_CONFIG_FLASH_READ(GBE_CONFIG_BASE_VIRT, offset, words, - data); + data); return E1000_SUCCESS; } /* A check for invalid values: offset too large, too many words, and * not enough words. */ - if ((offset >= eeprom->word_size) - || (words > eeprom->word_size - offset) || (words == 0)) { + if ((offset >= eeprom->word_size) || + (words > eeprom->word_size - offset) || + (words == 0)) { e_dbg("\"words\" parameter out of bounds. Words = %d," "size = %d\n", offset, eeprom->word_size); return -E1000_ERR_EEPROM; @@ -3940,7 +3942,7 @@ /* Send the READ command (opcode + addr) */ e1000_shift_out_ee_bits(hw, read_opcode, eeprom->opcode_bits); - e1000_shift_out_ee_bits(hw, (u16) (offset * 2), + e1000_shift_out_ee_bits(hw, (u16)(offset * 2), eeprom->address_bits); /* Read the data. The address of the eeprom internally @@ -3960,7 +3962,7 @@ e1000_shift_out_ee_bits(hw, EEPROM_READ_OPCODE_MICROWIRE, eeprom->opcode_bits); - e1000_shift_out_ee_bits(hw, (u16) (offset + i), + e1000_shift_out_ee_bits(hw, (u16)(offset + i), eeprom->address_bits); /* Read the data. For microwire, each word requires the @@ -3968,6 +3970,7 @@ */ data[i] = e1000_shift_in_ee_bits(hw, 16); e1000_standby_eeprom(hw); + cond_resched(); } } @@ -4004,7 +4007,7 @@ return E1000_SUCCESS; #endif - if (checksum == (u16) EEPROM_SUM) + if (checksum == (u16)EEPROM_SUM) return E1000_SUCCESS; else { e_dbg("EEPROM Checksum Invalid\n"); @@ -4031,7 +4034,7 @@ } checksum += eeprom_data; } - checksum = (u16) EEPROM_SUM - checksum; + checksum = (u16)EEPROM_SUM - checksum; if (e1000_write_eeprom(hw, EEPROM_CHECKSUM_REG, 1, &checksum) < 0) { e_dbg("EEPROM Write Error\n"); return -E1000_ERR_EEPROM; @@ -4052,9 +4055,10 @@ s32 e1000_write_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) { s32 ret; - spin_lock(&e1000_eeprom_lock); + + mutex_lock(&e1000_eeprom_lock); ret = e1000_do_write_eeprom(hw, offset, words, data); - spin_unlock(&e1000_eeprom_lock); + mutex_unlock(&e1000_eeprom_lock); return ret; } @@ -4066,15 +4070,16 @@ if (hw->mac_type == e1000_ce4100) { GBE_CONFIG_FLASH_WRITE(GBE_CONFIG_BASE_VIRT, offset, words, - data); + data); return E1000_SUCCESS; } /* A check for invalid values: offset too large, too many words, and * not enough words. */ - if ((offset >= eeprom->word_size) - || (words > eeprom->word_size - offset) || (words == 0)) { + if ((offset >= eeprom->word_size) || + (words > eeprom->word_size - offset) || + (words == 0)) { e_dbg("\"words\" parameter out of bounds\n"); return -E1000_ERR_EEPROM; } @@ -4116,6 +4121,7 @@ return -E1000_ERR_EEPROM; e1000_standby_eeprom(hw); + cond_resched(); /* Send the WRITE ENABLE command (8 bit opcode ) */ e1000_shift_out_ee_bits(hw, EEPROM_WREN_OPCODE_SPI, @@ -4132,7 +4138,7 @@ /* Send the Write command (8-bit opcode + addr) */ e1000_shift_out_ee_bits(hw, write_opcode, eeprom->opcode_bits); - e1000_shift_out_ee_bits(hw, (u16) ((offset + widx) * 2), + e1000_shift_out_ee_bits(hw, (u16)((offset + widx) * 2), eeprom->address_bits); /* Send the data */ @@ -4142,6 +4148,7 @@ */ while (widx < words) { u16 word_out = data[widx]; + word_out = (word_out >> 8) | (word_out << 8); e1000_shift_out_ee_bits(hw, word_out, 16); widx++; @@ -4183,9 +4190,9 @@ * EEPROM into write/erase mode. */ e1000_shift_out_ee_bits(hw, EEPROM_EWEN_OPCODE_MICROWIRE, - (u16) (eeprom->opcode_bits + 2)); + (u16)(eeprom->opcode_bits + 2)); - e1000_shift_out_ee_bits(hw, 0, (u16) (eeprom->address_bits - 2)); + e1000_shift_out_ee_bits(hw, 0, (u16)(eeprom->address_bits - 2)); /* Prepare the EEPROM */ e1000_standby_eeprom(hw); @@ -4195,7 +4202,7 @@ e1000_shift_out_ee_bits(hw, EEPROM_WRITE_OPCODE_MICROWIRE, eeprom->opcode_bits); - e1000_shift_out_ee_bits(hw, (u16) (offset + words_written), + e1000_shift_out_ee_bits(hw, (u16)(offset + words_written), eeprom->address_bits); /* Send the data */ @@ -4224,6 +4231,7 @@ /* Recover from write */ e1000_standby_eeprom(hw); + cond_resched(); words_written++; } @@ -4235,9 +4243,9 @@ * EEPROM out of write/erase mode. */ e1000_shift_out_ee_bits(hw, EEPROM_EWDS_OPCODE_MICROWIRE, - (u16) (eeprom->opcode_bits + 2)); + (u16)(eeprom->opcode_bits + 2)); - e1000_shift_out_ee_bits(hw, 0, (u16) (eeprom->address_bits - 2)); + e1000_shift_out_ee_bits(hw, 0, (u16)(eeprom->address_bits - 2)); return E1000_SUCCESS; } @@ -4260,8 +4268,8 @@ e_dbg("EEPROM Read Error\n"); return -E1000_ERR_EEPROM; } - hw->perm_mac_addr[i] = (u8) (eeprom_data & 0x00FF); - hw->perm_mac_addr[i + 1] = (u8) (eeprom_data >> 8); + hw->perm_mac_addr[i] = (u8)(eeprom_data & 0x00FF); + hw->perm_mac_addr[i + 1] = (u8)(eeprom_data >> 8); } switch (hw->mac_type) { @@ -4328,19 +4336,19 @@ */ case 0: /* [47:36] i.e. 0x563 for above example address */ - hash_value = ((mc_addr[4] >> 4) | (((u16) mc_addr[5]) << 4)); + hash_value = ((mc_addr[4] >> 4) | (((u16)mc_addr[5]) << 4)); break; case 1: /* [46:35] i.e. 0xAC6 for above example address */ - hash_value = ((mc_addr[4] >> 3) | (((u16) mc_addr[5]) << 5)); + hash_value = ((mc_addr[4] >> 3) | (((u16)mc_addr[5]) << 5)); break; case 2: /* [45:34] i.e. 0x5D8 for above example address */ - hash_value = ((mc_addr[4] >> 2) | (((u16) mc_addr[5]) << 6)); + hash_value = ((mc_addr[4] >> 2) | (((u16)mc_addr[5]) << 6)); break; case 3: /* [43:32] i.e. 0x634 for above example address */ - hash_value = ((mc_addr[4]) | (((u16) mc_addr[5]) << 8)); + hash_value = ((mc_addr[4]) | (((u16)mc_addr[5]) << 8)); break; } @@ -4361,9 +4369,9 @@ /* HW expects these in little endian so we reverse the byte order * from network order (big endian) to little endian */ - rar_low = ((u32) addr[0] | ((u32) addr[1] << 8) | - ((u32) addr[2] << 16) | ((u32) addr[3] << 24)); - rar_high = ((u32) addr[4] | ((u32) addr[5] << 8)); + rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) | + ((u32)addr[2] << 16) | ((u32)addr[3] << 24)); + rar_high = ((u32)addr[4] | ((u32)addr[5] << 8)); /* Disable Rx and flush all Rx frames before enabling RSS to avoid Rx * unit hang. @@ -4537,7 +4545,7 @@ if (ret_val) return ret_val; ret_val = e1000_write_phy_reg(hw, IGP01E1000_GMII_FIFO, - (u16) (hw->phy_spd_default & + (u16)(hw->phy_spd_default & ~IGP01E1000_GMII_SPD)); if (ret_val) return ret_val; @@ -4802,7 +4810,7 @@ void e1000_update_adaptive(struct e1000_hw *hw) { if (hw->adaptive_ifs) { - if ((hw->collision_delta *hw->ifs_ratio) > hw->tx_packet_delta) { + if ((hw->collision_delta * hw->ifs_ratio) > hw->tx_packet_delta) { if (hw->tx_packet_delta > MIN_NUM_XMITS) { hw->in_ifs_mode = true; if (hw->current_ifs_val < hw->ifs_max_val) { @@ -4816,8 +4824,8 @@ } } } else { - if (hw->in_ifs_mode - && (hw->tx_packet_delta <= MIN_NUM_XMITS)) { + if (hw->in_ifs_mode && + (hw->tx_packet_delta <= MIN_NUM_XMITS)) { hw->current_ifs_val = 0; hw->in_ifs_mode = false; ew32(AIT, 0); @@ -4922,7 +4930,6 @@ /* Use old method for Phy older than IGP */ if (hw->phy_type == e1000_phy_m88) { - ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data); if (ret_val) @@ -4966,7 +4973,6 @@ }; /* Read the AGC registers for all channels */ for (i = 0; i < IGP01E1000_PHY_CHANNEL_NUM; i++) { - ret_val = e1000_read_phy_reg(hw, agc_reg_array[i], &phy_data); if (ret_val) @@ -4976,8 +4982,8 @@ /* Value bound check. */ if ((cur_agc_value >= - IGP01E1000_AGC_LENGTH_TABLE_SIZE - 1) - || (cur_agc_value == 0)) + IGP01E1000_AGC_LENGTH_TABLE_SIZE - 1) || + (cur_agc_value == 0)) return -E1000_ERR_PHY; agc_value += cur_agc_value; @@ -5054,7 +5060,6 @@ */ if ((phy_data & IGP01E1000_PSSR_SPEED_MASK) == IGP01E1000_PSSR_SPEED_1000MBPS) { - /* Read the GIG initialization PCS register (0x00B4) */ ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PCS_INIT_REG, @@ -5175,8 +5180,8 @@ hw->ffe_config_state = e1000_ffe_config_active; ret_val = e1000_write_phy_reg(hw, - IGP01E1000_PHY_DSP_FFE, - IGP01E1000_PHY_DSP_FFE_CM_CP); + IGP01E1000_PHY_DSP_FFE, + IGP01E1000_PHY_DSP_FFE_CM_CP); if (ret_val) return ret_val; break; @@ -5243,7 +5248,7 @@ msleep(20); ret_val = e1000_write_phy_reg(hw, 0x0000, - IGP01E1000_IEEE_FORCE_GIGA); + IGP01E1000_IEEE_FORCE_GIGA); if (ret_val) return ret_val; for (i = 0; i < IGP01E1000_PHY_CHANNEL_NUM; i++) { @@ -5264,7 +5269,7 @@ } ret_val = e1000_write_phy_reg(hw, 0x0000, - IGP01E1000_IEEE_RESTART_AUTONEG); + IGP01E1000_IEEE_RESTART_AUTONEG); if (ret_val) return ret_val; @@ -5299,7 +5304,7 @@ msleep(20); ret_val = e1000_write_phy_reg(hw, 0x0000, - IGP01E1000_IEEE_FORCE_GIGA); + IGP01E1000_IEEE_FORCE_GIGA); if (ret_val) return ret_val; ret_val = @@ -5309,7 +5314,7 @@ return ret_val; ret_val = e1000_write_phy_reg(hw, 0x0000, - IGP01E1000_IEEE_RESTART_AUTONEG); + IGP01E1000_IEEE_RESTART_AUTONEG); if (ret_val) return ret_val; @@ -5346,9 +5351,8 @@ ret_val = e1000_read_eeprom(hw, EEPROM_PHY_CLASS_WORD, 1, &eeprom_data); - if (ret_val) { + if (ret_val) return ret_val; - } if ((eeprom_data != EEPROM_RESERVED_WORD) && (eeprom_data & EEPROM_PHY_CLASS_A)) { @@ -5395,8 +5399,8 @@ * from the lowest speeds starting from 10Mbps. The capability is used * for Dx transitions and states */ - if (hw->mac_type == e1000_82541_rev_2 - || hw->mac_type == e1000_82547_rev_2) { + if (hw->mac_type == e1000_82541_rev_2 || + hw->mac_type == e1000_82547_rev_2) { ret_val = e1000_read_phy_reg(hw, IGP01E1000_GMII_FIFO, &phy_data); if (ret_val) @@ -5446,11 +5450,9 @@ if (ret_val) return ret_val; } - } else if ((hw->autoneg_advertised == AUTONEG_ADVERTISE_SPEED_DEFAULT) - || (hw->autoneg_advertised == AUTONEG_ADVERTISE_10_ALL) - || (hw->autoneg_advertised == - AUTONEG_ADVERTISE_10_100_ALL)) { - + } else if ((hw->autoneg_advertised == AUTONEG_ADVERTISE_SPEED_DEFAULT) || + (hw->autoneg_advertised == AUTONEG_ADVERTISE_10_ALL) || + (hw->autoneg_advertised == AUTONEG_ADVERTISE_10_100_ALL)) { if (hw->mac_type == e1000_82541_rev_2 || hw->mac_type == e1000_82547_rev_2) { phy_data |= IGP01E1000_GMII_FLEX_SPD; @@ -5474,7 +5476,6 @@ phy_data); if (ret_val) return ret_val; - } return E1000_SUCCESS; } @@ -5542,7 +5543,6 @@ return E1000_SUCCESS; } - /** * e1000_enable_mng_pass_thru - check for bmc pass through * @hw: Struct containing variables accessed by shared code --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000/e1000_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -99,13 +99,13 @@ void e1000_free_all_tx_resources(struct e1000_adapter *adapter); void e1000_free_all_rx_resources(struct e1000_adapter *adapter); static int e1000_setup_tx_resources(struct e1000_adapter *adapter, - struct e1000_tx_ring *txdr); + struct e1000_tx_ring *txdr); static int e1000_setup_rx_resources(struct e1000_adapter *adapter, - struct e1000_rx_ring *rxdr); + struct e1000_rx_ring *rxdr); static void e1000_free_tx_resources(struct e1000_adapter *adapter, - struct e1000_tx_ring *tx_ring); + struct e1000_tx_ring *tx_ring); static void e1000_free_rx_resources(struct e1000_adapter *adapter, - struct e1000_rx_ring *rx_ring); + struct e1000_rx_ring *rx_ring); void e1000_update_stats(struct e1000_adapter *adapter); static int e1000_init_module(void); @@ -122,16 +122,16 @@ static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter); static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter); static void e1000_clean_tx_ring(struct e1000_adapter *adapter, - struct e1000_tx_ring *tx_ring); + struct e1000_tx_ring *tx_ring); static void e1000_clean_rx_ring(struct e1000_adapter *adapter, - struct e1000_rx_ring *rx_ring); + struct e1000_rx_ring *rx_ring); static void e1000_set_rx_mode(struct net_device *netdev); static void e1000_update_phy_info_task(struct work_struct *work); static void e1000_watchdog(struct work_struct *work); static void e1000_82547_tx_fifo_stall_task(struct work_struct *work); static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev); -static struct net_device_stats * e1000_get_stats(struct net_device *netdev); +static struct net_device_stats *e1000_get_stats(struct net_device *netdev); static int e1000_change_mtu(struct net_device *netdev, int new_mtu); static int e1000_set_mac(struct net_device *netdev, void *p); static irqreturn_t e1000_intr(int irq, void *data); @@ -164,7 +164,7 @@ static void e1000_reset_task(struct work_struct *work); static void e1000_smartspeed(struct e1000_adapter *adapter); static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter, - struct sk_buff *skb); + struct sk_buff *skb); static bool e1000_vlan_used(struct e1000_adapter *adapter); static void e1000_vlan_mode(struct net_device *netdev, @@ -195,7 +195,7 @@ "Maximum size of packet that is copied to a new buffer on receive"); static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev, - pci_channel_state_t state); + pci_channel_state_t state); static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev); static void e1000_io_resume(struct pci_dev *pdev); @@ -287,7 +287,7 @@ int err; err = request_irq(adapter->pdev->irq, handler, irq_flags, netdev->name, - netdev); + netdev); if (err) { e_err(probe, "Unable to allocate interrupt Error: %d\n", err); } @@ -636,8 +636,8 @@ * but don't include ethernet FCS because hardware appends it */ min_tx_space = (hw->max_frame_size + - sizeof(struct e1000_tx_desc) - - ETH_FCS_LEN) * 2; + sizeof(struct e1000_tx_desc) - + ETH_FCS_LEN) * 2; min_tx_space = ALIGN(min_tx_space, 1024); min_tx_space >>= 10; /* software strips receive CRC, so leave room for it */ @@ -943,8 +943,8 @@ struct e1000_adapter *adapter; struct e1000_hw *hw; - static int cards_found = 0; - static int global_quad_port_a = 0; /* global ksp3 port a indication */ + static int cards_found; + static int global_quad_port_a; /* global ksp3 port a indication */ int i, err, pci_using_dac; u16 eeprom_data = 0; u16 tmp = 0; @@ -1046,7 +1046,7 @@ if (hw->mac_type == e1000_ce4100) { hw->ce4100_gbe_mdio_base_virt = ioremap(pci_resource_start(pdev, BAR_1), - pci_resource_len(pdev, BAR_1)); + pci_resource_len(pdev, BAR_1)); if (!hw->ce4100_gbe_mdio_base_virt) goto err_mdio_ioremap; @@ -1148,7 +1148,7 @@ break; case e1000_82546: case e1000_82546_rev_3: - if (er32(STATUS) & E1000_STATUS_FUNC_1){ + if (er32(STATUS) & E1000_STATUS_FUNC_1) { e1000_read_eeprom(hw, EEPROM_INIT_CONTROL3_PORT_B, 1, &eeprom_data); break; @@ -1199,13 +1199,13 @@ for (i = 0; i < 32; i++) { hw->phy_addr = i; e1000_read_phy_reg(hw, PHY_ID2, &tmp); - if (tmp == 0 || tmp == 0xFF) { - if (i == 31) - goto err_eeprom; - continue; - } else + + if (tmp != 0 && tmp != 0xFF) break; } + + if (i >= 32) + goto err_eeprom; } /* reset the hardware with the new settings */ @@ -1263,7 +1263,7 @@ * @pdev: PCI device information struct * * e1000_remove is called by the PCI subsystem to alert the driver - * that it should release a PCI device. The could be caused by a + * that it should release a PCI device. That could be caused by a * Hot-Plug event, or because the driver is going to be removed from * memory. **/ @@ -1334,12 +1334,12 @@ static int e1000_alloc_queues(struct e1000_adapter *adapter) { adapter->tx_ring = kcalloc(adapter->num_tx_queues, - sizeof(struct e1000_tx_ring), GFP_KERNEL); + sizeof(struct e1000_tx_ring), GFP_KERNEL); if (!adapter->tx_ring) return -ENOMEM; adapter->rx_ring = kcalloc(adapter->num_rx_queues, - sizeof(struct e1000_rx_ring), GFP_KERNEL); + sizeof(struct e1000_rx_ring), GFP_KERNEL); if (!adapter->rx_ring) { kfree(adapter->tx_ring); return -ENOMEM; @@ -1811,20 +1811,20 @@ rctl &= ~E1000_RCTL_SZ_4096; rctl |= E1000_RCTL_BSEX; switch (adapter->rx_buffer_len) { - case E1000_RXBUFFER_2048: - default: - rctl |= E1000_RCTL_SZ_2048; - rctl &= ~E1000_RCTL_BSEX; - break; - case E1000_RXBUFFER_4096: - rctl |= E1000_RCTL_SZ_4096; - break; - case E1000_RXBUFFER_8192: - rctl |= E1000_RCTL_SZ_8192; - break; - case E1000_RXBUFFER_16384: - rctl |= E1000_RCTL_SZ_16384; - break; + case E1000_RXBUFFER_2048: + default: + rctl |= E1000_RCTL_SZ_2048; + rctl &= ~E1000_RCTL_BSEX; + break; + case E1000_RXBUFFER_4096: + rctl |= E1000_RCTL_SZ_4096; + break; + case E1000_RXBUFFER_8192: + rctl |= E1000_RCTL_SZ_8192; + break; + case E1000_RXBUFFER_16384: + rctl |= E1000_RCTL_SZ_16384; + break; } /* This is useful for sniffing bad packets. */ @@ -1861,12 +1861,12 @@ if (adapter->netdev->mtu > ETH_DATA_LEN) { rdlen = adapter->rx_ring[0].count * - sizeof(struct e1000_rx_desc); + sizeof(struct e1000_rx_desc); adapter->clean_rx = e1000_clean_jumbo_rx_irq; adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; } else { rdlen = adapter->rx_ring[0].count * - sizeof(struct e1000_rx_desc); + sizeof(struct e1000_rx_desc); adapter->clean_rx = e1000_clean_rx_irq; adapter->alloc_rx_buf = e1000_alloc_rx_buffers; } @@ -2761,7 +2761,9 @@ buffer_info->time_stamp = jiffies; buffer_info->next_to_watch = i; - if (++i == tx_ring->count) i = 0; + if (++i == tx_ring->count) + i = 0; + tx_ring->next_to_use = i; return true; @@ -2816,7 +2818,9 @@ buffer_info->time_stamp = jiffies; buffer_info->next_to_watch = i; - if (unlikely(++i == tx_ring->count)) i = 0; + if (unlikely(++i == tx_ring->count)) + i = 0; + tx_ring->next_to_use = i; return true; @@ -2865,8 +2869,8 @@ * packet is smaller than 2048 - 16 - 16 (or 2016) bytes */ if (unlikely((hw->bus_type == e1000_bus_type_pcix) && - (size > 2015) && count == 0)) - size = 2015; + (size > 2015) && count == 0)) + size = 2015; /* Workaround for potential 82544 hang in PCI-X. Avoid * terminating buffers within evenly-aligned dwords. @@ -2963,7 +2967,7 @@ count--; while (count--) { - if (i==0) + if (i == 0) i += tx_ring->count; i--; buffer_info = &tx_ring->buffer_info[i]; @@ -3013,7 +3017,8 @@ tx_desc->lower.data = cpu_to_le32(txd_lower | buffer_info->length); tx_desc->upper.data = cpu_to_le32(txd_upper); - if (unlikely(++i == tx_ring->count)) i = 0; + if (unlikely(++i == tx_ring->count)) + i = 0; } tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); @@ -3101,7 +3106,7 @@ return __e1000_maybe_stop_tx(netdev, size); } -#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1 ) +#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1) static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) { @@ -3841,7 +3846,7 @@ struct e1000_tx_buffer *buffer_info; unsigned int i, eop; unsigned int count = 0; - unsigned int total_tx_bytes=0, total_tx_packets=0; + unsigned int total_tx_bytes = 0, total_tx_packets = 0; unsigned int bytes_compl = 0, pkts_compl = 0; i = tx_ring->next_to_clean; @@ -3869,14 +3874,18 @@ e1000_unmap_and_free_tx_resource(adapter, buffer_info); tx_desc->upper.data = 0; - if (unlikely(++i == tx_ring->count)) i = 0; + if (unlikely(++i == tx_ring->count)) + i = 0; } eop = tx_ring->buffer_info[i].next_to_watch; eop_desc = E1000_TX_DESC(*tx_ring, eop); } - tx_ring->next_to_clean = i; + /* Synchronize with E1000_DESC_UNUSED called from e1000_xmit_frame, + * which will reuse the cleaned buffers. + */ + smp_store_release(&tx_ring->next_to_clean, i); netdev_completed_queue(netdev, pkts_compl, bytes_compl); @@ -3954,9 +3963,11 @@ skb_checksum_none_assert(skb); /* 82543 or newer only */ - if (unlikely(hw->mac_type < e1000_82543)) return; + if (unlikely(hw->mac_type < e1000_82543)) + return; /* Ignore Checksum bit is set */ - if (unlikely(status & E1000_RXD_STAT_IXSM)) return; + if (unlikely(status & E1000_RXD_STAT_IXSM)) + return; /* TCP/UDP checksum error bit is set */ if (unlikely(errors & E1000_RXD_ERR_TCPE)) { /* let the stack verify checksum errors */ @@ -4136,7 +4147,7 @@ unsigned int i; int cleaned_count = 0; bool cleaned = false; - unsigned int total_rx_bytes=0, total_rx_packets=0; + unsigned int total_rx_bytes = 0, total_rx_packets = 0; i = rx_ring->next_to_clean; rx_desc = E1000_RX_DESC(*rx_ring, i); @@ -4153,7 +4164,9 @@ status = rx_desc->status; - if (++i == rx_ring->count) i = 0; + if (++i == rx_ring->count) + i = 0; + next_rxd = E1000_RX_DESC(*rx_ring, i); prefetch(next_rxd); @@ -4356,7 +4369,7 @@ unsigned int i; int cleaned_count = 0; bool cleaned = false; - unsigned int total_rx_bytes=0, total_rx_packets=0; + unsigned int total_rx_bytes = 0, total_rx_packets = 0; i = rx_ring->next_to_clean; rx_desc = E1000_RX_DESC(*rx_ring, i); @@ -4395,7 +4408,9 @@ buffer_info->rxbuf.data = NULL; } - if (++i == rx_ring->count) i = 0; + if (++i == rx_ring->count) + i = 0; + next_rxd = E1000_RX_DESC(*rx_ring, i); prefetch(next_rxd); @@ -4683,9 +4698,11 @@ * we assume back-to-back */ e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_status); - if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) return; + if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) + return; e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_status); - if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) return; + if (!(phy_status & SR_1000T_MS_CONFIG_FAULT)) + return; e1000_read_phy_reg(hw, PHY_1000T_CTRL, &phy_ctrl); if (phy_ctrl & CR_1000T_MS_ENABLE) { phy_ctrl &= ~CR_1000T_MS_ENABLE; --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000e/defines.h +++ linux-4.4.0/drivers/net/ethernet/intel/e1000e/defines.h @@ -441,12 +441,13 @@ #define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */ #define E1000_IMS_TXQ0 E1000_ICR_TXQ0 /* Tx Queue 0 Interrupt */ #define E1000_IMS_TXQ1 E1000_ICR_TXQ1 /* Tx Queue 1 Interrupt */ -#define E1000_IMS_OTHER E1000_ICR_OTHER /* Other Interrupts */ +#define E1000_IMS_OTHER E1000_ICR_OTHER /* Other Interrupt */ /* Interrupt Cause Set */ #define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */ #define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */ #define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */ +#define E1000_ICS_OTHER E1000_ICR_OTHER /* Other Interrupt */ /* Transmit Descriptor Control */ #define E1000_TXDCTL_PTHRESH 0x0000003F /* TXDCTL Prefetch Threshold */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000e/e1000.h +++ linux-4.4.0/drivers/net/ethernet/intel/e1000e/e1000.h @@ -480,7 +480,7 @@ void e1000e_check_options(struct e1000_adapter *adapter); void e1000e_set_ethtool_ops(struct net_device *netdev); -int e1000e_up(struct e1000_adapter *adapter); +void e1000e_up(struct e1000_adapter *adapter); void e1000e_down(struct e1000_adapter *adapter, bool reset); void e1000e_reinit_locked(struct e1000_adapter *adapter); void e1000e_reset(struct e1000_adapter *adapter); --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000e/hw.h +++ linux-4.4.0/drivers/net/ethernet/intel/e1000e/hw.h @@ -91,6 +91,7 @@ #define E1000_DEV_ID_PCH_SPT_I219_V 0x1570 /* SPT PCH */ #define E1000_DEV_ID_PCH_SPT_I219_LM2 0x15B7 /* SPT-H PCH */ #define E1000_DEV_ID_PCH_SPT_I219_V2 0x15B8 /* SPT-H PCH */ +#define E1000_DEV_ID_PCH_LBG_I219_LM3 0x15B9 /* LBG PCH */ #define E1000_REVISION_4 4 --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ linux-4.4.0/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -1984,7 +1984,7 @@ int i = 0; while ((blocked = !(er32(FWSM) & E1000_ICH_FWSM_RSPCIPHY)) && - (i++ < 10)) + (i++ < 30)) usleep_range(10000, 20000); return blocked ? E1000_BLK_PHY_RESET : 0; } @@ -3093,24 +3093,45 @@ struct e1000_nvm_info *nvm = &hw->nvm; u32 bank1_offset = nvm->flash_bank_size * sizeof(u16); u32 act_offset = E1000_ICH_NVM_SIG_WORD * 2 + 1; + u32 nvm_dword = 0; u8 sig_byte = 0; s32 ret_val; switch (hw->mac.type) { - /* In SPT, read from the CTRL_EXT reg instead of - * accessing the sector valid bits from the nvm - */ case e1000_pch_spt: - *bank = er32(CTRL_EXT) - & E1000_CTRL_EXT_NVMVS; - if ((*bank == 0) || (*bank == 1)) { - e_dbg("ERROR: No valid NVM bank present\n"); - return -E1000_ERR_NVM; - } else { - *bank = *bank - 2; + bank1_offset = nvm->flash_bank_size; + act_offset = E1000_ICH_NVM_SIG_WORD; + + /* set bank to 0 in case flash read fails */ + *bank = 0; + + /* Check bank 0 */ + ret_val = e1000_read_flash_dword_ich8lan(hw, act_offset, + &nvm_dword); + if (ret_val) + return ret_val; + sig_byte = (u8)((nvm_dword & 0xFF00) >> 8); + if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) == + E1000_ICH_NVM_SIG_VALUE) { + *bank = 0; return 0; } - break; + + /* Check bank 1 */ + ret_val = e1000_read_flash_dword_ich8lan(hw, act_offset + + bank1_offset, + &nvm_dword); + if (ret_val) + return ret_val; + sig_byte = (u8)((nvm_dword & 0xFF00) >> 8); + if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) == + E1000_ICH_NVM_SIG_VALUE) { + *bank = 1; + return 0; + } + + e_dbg("ERROR: No valid NVM bank present\n"); + return -E1000_ERR_NVM; case e1000_ich8lan: case e1000_ich9lan: eecd = er32(EECD); --- linux-4.4.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-4.4.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -1905,30 +1905,15 @@ struct net_device *netdev = data; struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; - u32 icr = er32(ICR); - - if (!(icr & E1000_ICR_INT_ASSERTED)) { - if (!test_bit(__E1000_DOWN, &adapter->state)) - ew32(IMS, E1000_IMS_OTHER); - return IRQ_NONE; - } - if (icr & adapter->eiac_mask) - ew32(ICS, (icr & adapter->eiac_mask)); + hw->mac.get_link_status = true; - if (icr & E1000_ICR_OTHER) { - if (!(icr & E1000_ICR_LSC)) - goto no_link_interrupt; - hw->mac.get_link_status = true; - /* guard against interrupt when we're going down */ - if (!test_bit(__E1000_DOWN, &adapter->state)) - mod_timer(&adapter->watchdog_timer, jiffies + 1); + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) { + mod_timer(&adapter->watchdog_timer, jiffies + 1); + ew32(IMS, E1000_IMS_OTHER); } -no_link_interrupt: - if (!test_bit(__E1000_DOWN, &adapter->state)) - ew32(IMS, E1000_IMS_LSC | E1000_IMS_OTHER); - return IRQ_HANDLED; } @@ -1946,6 +1931,9 @@ /* Ring was not completely cleaned, so fire another interrupt */ ew32(ICS, tx_ring->ims_val); + if (!test_bit(__E1000_DOWN, &adapter->state)) + ew32(IMS, adapter->tx_ring->ims_val); + return IRQ_HANDLED; } @@ -1959,8 +1947,10 @@ * previous interrupt. */ if (rx_ring->set_itr) { - writel(1000000000 / (rx_ring->itr_val * 256), - rx_ring->itr_register); + u32 itr = rx_ring->itr_val ? + 1000000000 / (rx_ring->itr_val * 256) : 0; + + writel(itr, rx_ring->itr_register); rx_ring->set_itr = 0; } @@ -2025,6 +2015,7 @@ hw->hw_addr + E1000_EITR_82574(vector)); else writel(1, hw->hw_addr + E1000_EITR_82574(vector)); + adapter->eiac_mask |= E1000_IMS_OTHER; /* Cause Tx interrupts on every write back */ ivar |= (1 << 31); @@ -2032,12 +2023,8 @@ ew32(IVAR, ivar); /* enable MSI-X PBA support */ - ctrl_ext = er32(CTRL_EXT); - ctrl_ext |= E1000_CTRL_EXT_PBA_CLR; - - /* Auto-Mask Other interrupts upon ICR read */ - ew32(IAM, ~E1000_EIAC_MASK_82574 | E1000_IMS_OTHER); - ctrl_ext |= E1000_CTRL_EXT_EIAME; + ctrl_ext = er32(CTRL_EXT) & ~E1000_CTRL_EXT_IAME; + ctrl_ext |= E1000_CTRL_EXT_PBA_CLR | E1000_CTRL_EXT_EIAME; ew32(CTRL_EXT, ctrl_ext); e1e_flush(); } @@ -2253,7 +2240,7 @@ if (adapter->msix_entries) { ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); - ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); + ew32(IMS, adapter->eiac_mask | E1000_IMS_LSC); } else if ((hw->mac.type == e1000_pch_lpt) || (hw->mac.type == e1000_pch_spt)) { ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER); @@ -4144,10 +4131,24 @@ } -int e1000e_up(struct e1000_adapter *adapter) +/** + * e1000e_trigger_lsc - trigger an LSC interrupt + * @adapter: + * + * Fire a link status change interrupt to start the watchdog. + **/ +static void e1000e_trigger_lsc(struct e1000_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_OTHER); + else + ew32(ICS, E1000_ICS_LSC); +} + +void e1000e_up(struct e1000_adapter *adapter) +{ /* hardware has been reset, we need to reload some things */ e1000_configure(adapter); @@ -4159,13 +4160,7 @@ netif_start_queue(adapter->netdev); - /* fire a link change interrupt to start the watchdog */ - if (adapter->msix_entries) - ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); - else - ew32(ICS, E1000_ICS_LSC); - - return 0; + e1000e_trigger_lsc(adapter); } static void e1000e_flush_descriptors(struct e1000_adapter *adapter) @@ -4590,11 +4585,7 @@ hw->mac.get_link_status = true; pm_runtime_put(&pdev->dev); - /* fire a link status change interrupt to start the watchdog */ - if (adapter->msix_entries) - ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); - else - ew32(ICS, E1000_ICS_LSC); + e1000e_trigger_lsc(adapter); return 0; @@ -6631,7 +6622,7 @@ return rc; if (netdev->flags & IFF_UP) - rc = e1000e_up(adapter); + e1000e_up(adapter); return rc; } @@ -6822,13 +6813,8 @@ e1000_init_manageability_pt(adapter); - if (netif_running(netdev)) { - if (e1000e_up(adapter)) { - dev_err(&pdev->dev, - "can't bring device back up after reset\n"); - return; - } - } + if (netif_running(netdev)) + e1000e_up(adapter); netif_device_attach(netdev); @@ -7465,6 +7451,7 @@ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_SPT_I219_V), board_pch_spt }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_SPT_I219_LM2), board_pch_spt }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_SPT_I219_V2), board_pch_spt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LBG_I219_LM3), board_pch_spt }, { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ }; @@ -7504,14 +7491,11 @@ **/ static int __init e1000_init_module(void) { - int ret; - pr_info("Intel(R) PRO/1000 Network Driver - %s\n", e1000e_driver_version); pr_info("Copyright(c) 1999 - 2015 Intel Corporation.\n"); - ret = pci_register_driver(&e1000_driver); - return ret; + return pci_register_driver(&e1000_driver); } module_init(e1000_init_module); --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/Makefile +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/Makefile @@ -1,7 +1,7 @@ ################################################################################ # # Intel Ethernet Switch Host Interface Driver -# Copyright(c) 2013 - 2014 Intel Corporation. +# Copyright(c) 2013 - 2015 Intel Corporation. # # This program is free software; you can redistribute it and/or modify it # under the terms and conditions of the GNU General Public License, @@ -27,7 +27,17 @@ obj-$(CONFIG_FM10K) += fm10k.o -fm10k-objs := fm10k_main.o fm10k_common.o fm10k_pci.o \ - fm10k_netdev.o fm10k_ethtool.o fm10k_pf.o fm10k_vf.o \ - fm10k_mbx.o fm10k_iov.o fm10k_tlv.o \ - fm10k_debugfs.o fm10k_ptp.o fm10k_dcbnl.o +fm10k-y := fm10k_main.o \ + fm10k_common.o \ + fm10k_pci.o \ + fm10k_ptp.o \ + fm10k_netdev.o \ + fm10k_ethtool.o \ + fm10k_pf.o \ + fm10k_vf.o \ + fm10k_mbx.o \ + fm10k_iov.o \ + fm10k_tlv.o + +fm10k-$(CONFIG_DEBUG_FS) += fm10k_debugfs.o +fm10k-$(CONFIG_DCB) += fm10k_dcbnl.o --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k.h @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -33,7 +34,7 @@ #include "fm10k_pf.h" #include "fm10k_vf.h" -#define FM10K_MAX_JUMBO_FRAME_SIZE 15358 /* Maximum supported size 15K */ +#define FM10K_MAX_JUMBO_FRAME_SIZE 15342 /* Maximum supported size 15K */ #define MAX_QUEUES FM10K_MAX_QUEUES_PF @@ -66,6 +67,7 @@ enum fm10k_ring_state_t { __FM10K_TX_DETECT_HANG, __FM10K_HANG_CHECK_ARMED, + __FM10K_TX_XPS_INIT_DONE, }; #define check_for_tx_hang(ring) \ @@ -138,7 +140,7 @@ * different for DCB and RSS modes */ u8 qos_pc; /* priority class of queue */ - u16 vid; /* default vlan ID of queue */ + u16 vid; /* default VLAN ID of queue */ u16 count; /* amount of descriptors */ u16 next_to_alloc; @@ -164,14 +166,20 @@ unsigned int total_packets; /* total packets processed this int */ u16 work_limit; /* total work allowed per interrupt */ u16 itr; /* interrupt throttle rate value */ + u8 itr_scale; /* ITR adjustment based on PCI speed */ u8 count; /* total number of rings in vector */ }; #define FM10K_ITR_MAX 0x0FFF /* maximum value for ITR */ #define FM10K_ITR_10K 100 /* 100us */ #define FM10K_ITR_20K 50 /* 50us */ +#define FM10K_ITR_40K 25 /* 25us */ #define FM10K_ITR_ADAPTIVE 0x8000 /* adaptive interrupt moderation flag */ +#define ITR_IS_ADAPTIVE(itr) (!!(itr & FM10K_ITR_ADAPTIVE)) + +#define FM10K_TX_ITR_DEFAULT FM10K_ITR_40K +#define FM10K_RX_ITR_DEFAULT FM10K_ITR_20K #define FM10K_ITR_ENABLE (FM10K_ITR_AUTOMASK | FM10K_ITR_MASK_CLEAR) static inline struct netdev_queue *txring_txq(const struct fm10k_ring *ring) @@ -203,6 +211,7 @@ struct fm10k_ring_container rx, tx; struct napi_struct napi; + cpumask_t affinity_mask; char name[IFNAMSIZ + 9]; #ifdef CONFIG_DEBUG_FS @@ -413,7 +422,7 @@ (&(((union fm10k_rx_desc *)((R)->desc))[i])) #define FM10K_MAX_TXD_PWR 14 -#define FM10K_MAX_DATA_PER_TXD (1 << FM10K_MAX_TXD_PWR) +#define FM10K_MAX_DATA_PER_TXD BIT(FM10K_MAX_TXD_PWR) /* Tx Descriptors needed, worst case */ #define TXD_USE_COUNT(S) DIV_ROUND_UP((S), FM10K_MAX_DATA_PER_TXD) @@ -434,7 +443,7 @@ struct { /* dglort and sglort combined into a single 32bit desc read */ __le32 glort; - /* upper 16 bits of vlan are reserved 0 for swpri_type_user */ + /* upper 16 bits of VLAN are reserved 0 for swpri_type_user */ __le32 vlan; } d; struct { @@ -484,7 +493,7 @@ #endif /* Netdev */ -struct net_device *fm10k_alloc_netdev(void); +struct net_device *fm10k_alloc_netdev(const struct fm10k_info *info); int fm10k_setup_rx_resources(struct fm10k_ring *); int fm10k_setup_tx_resources(struct fm10k_ring *); void fm10k_free_rx_resources(struct fm10k_ring *); @@ -551,5 +560,9 @@ int fm10k_set_ts_config(struct net_device *netdev, struct ifreq *ifr); /* DCB */ +#ifdef CONFIG_DCB void fm10k_dcbnl_set_ops(struct net_device *dev); +#else +static inline void fm10k_dcbnl_set_ops(struct net_device *dev) {} +#endif #endif /* _FM10K_H_ */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_dcbnl.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_dcbnl.c @@ -20,7 +20,6 @@ #include "fm10k.h" -#ifdef CONFIG_DCB /** * fm10k_dcbnl_ieee_getets - get the ETS configuration for the device * @dev: netdev interface for the device @@ -155,7 +154,6 @@ .setdcbx = fm10k_dcbnl_setdcbx, }; -#endif /* CONFIG_DCB */ /** * fm10k_dcbnl_set_ops - Configures dcbnl ops pointer for netdev * @dev: netdev interface for the device @@ -164,11 +162,9 @@ **/ void fm10k_dcbnl_set_ops(struct net_device *dev) { -#ifdef CONFIG_DCB struct fm10k_intfc *interface = netdev_priv(dev); struct fm10k_hw *hw = &interface->hw; if (hw->mac.type == fm10k_mac_pf) dev->dcbnl_ops = &fm10k_dcbnl_ops; -#endif /* CONFIG_DCB */ } --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_debugfs.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_debugfs.c @@ -18,8 +18,6 @@ * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 */ -#ifdef CONFIG_DEBUG_FS - #include "fm10k.h" #include @@ -258,5 +256,3 @@ debugfs_remove_recursive(dbg_root); dbg_root = NULL; } - -#endif /* CONFIG_DEBUG_FS */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c @@ -111,12 +111,14 @@ static const struct fm10k_stats fm10k_gstrings_mbx_stats[] = { FM10K_MBX_STAT("mbx_tx_busy", tx_busy), - FM10K_MBX_STAT("mbx_tx_oversized", tx_dropped), + FM10K_MBX_STAT("mbx_tx_dropped", tx_dropped), FM10K_MBX_STAT("mbx_tx_messages", tx_messages), FM10K_MBX_STAT("mbx_tx_dwords", tx_dwords), + FM10K_MBX_STAT("mbx_tx_mbmem_pulled", tx_mbmem_pulled), FM10K_MBX_STAT("mbx_rx_messages", rx_messages), FM10K_MBX_STAT("mbx_rx_dwords", rx_dwords), FM10K_MBX_STAT("mbx_rx_parse_err", rx_parse_err), + FM10K_MBX_STAT("mbx_rx_mbmem_pushed", rx_mbmem_pushed), }; #define FM10K_GLOBAL_STATS_LEN ARRAY_SIZE(fm10k_gstrings_global_stats) @@ -125,7 +127,7 @@ #define FM10K_MBX_STATS_LEN ARRAY_SIZE(fm10k_gstrings_mbx_stats) #define FM10K_QUEUE_STATS_LEN(_n) \ - ( (_n) * 2 * (sizeof(struct fm10k_queue_stats) / sizeof(u64))) + ((_n) * 2 * (sizeof(struct fm10k_queue_stats) / sizeof(u64))) #define FM10K_STATIC_STATS_LEN (FM10K_GLOBAL_STATS_LEN + \ FM10K_NETDEV_STATS_LEN + \ @@ -257,7 +259,8 @@ stats_len += FM10K_DEBUG_STATS_LEN; if (iov_data) - stats_len += FM10K_MBX_STATS_LEN * iov_data->num_vfs; + stats_len += FM10K_MBX_STATS_LEN * + iov_data->num_vfs; } return stats_len; @@ -296,14 +299,16 @@ if (interface->flags & FM10K_FLAG_DEBUG_STATS) { for (i = 0; i < FM10K_DEBUG_STATS_LEN; i++) { - p = (char *)interface + fm10k_gstrings_debug_stats[i].stat_offset; + p = (char *)interface + + fm10k_gstrings_debug_stats[i].stat_offset; *(data++) = (fm10k_gstrings_debug_stats[i].sizeof_stat == sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } } for (i = 0; i < FM10K_MBX_STATS_LEN; i++) { - p = (char *)&interface->hw.mbx + fm10k_gstrings_mbx_stats[i].stat_offset; + p = (char *)&interface->hw.mbx + + fm10k_gstrings_mbx_stats[i].stat_offset; *(data++) = (fm10k_gstrings_mbx_stats[i].sizeof_stat == sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } @@ -320,6 +325,7 @@ if ((interface->flags & FM10K_FLAG_DEBUG_STATS) && iov_data) { for (i = 0; i < iov_data->num_vfs; i++) { struct fm10k_vf_info *vf_info; + vf_info = &iov_data->vf_info[i]; /* skip stats if we don't have a vf info */ @@ -329,7 +335,8 @@ } for (j = 0; j < FM10K_MBX_STATS_LEN; j++) { - p = (char *)&vf_info->mbx + fm10k_gstrings_mbx_stats[j].stat_offset; + p = (char *)&vf_info->mbx + + fm10k_gstrings_mbx_stats[j].stat_offset; *(data++) = (fm10k_gstrings_mbx_stats[j].sizeof_stat == sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } @@ -699,12 +706,10 @@ { struct fm10k_intfc *interface = netdev_priv(dev); - ec->use_adaptive_tx_coalesce = - !!(interface->tx_itr & FM10K_ITR_ADAPTIVE); + ec->use_adaptive_tx_coalesce = ITR_IS_ADAPTIVE(interface->tx_itr); ec->tx_coalesce_usecs = interface->tx_itr & ~FM10K_ITR_ADAPTIVE; - ec->use_adaptive_rx_coalesce = - !!(interface->rx_itr & FM10K_ITR_ADAPTIVE); + ec->use_adaptive_rx_coalesce = ITR_IS_ADAPTIVE(interface->rx_itr); ec->rx_coalesce_usecs = interface->rx_itr & ~FM10K_ITR_ADAPTIVE; return 0; @@ -729,10 +734,10 @@ /* set initial values for adaptive ITR */ if (ec->use_adaptive_tx_coalesce) - tx_itr = FM10K_ITR_ADAPTIVE | FM10K_ITR_10K; + tx_itr = FM10K_ITR_ADAPTIVE | FM10K_TX_ITR_DEFAULT; if (ec->use_adaptive_rx_coalesce) - rx_itr = FM10K_ITR_ADAPTIVE | FM10K_ITR_20K; + rx_itr = FM10K_ITR_ADAPTIVE | FM10K_RX_ITR_DEFAULT; /* update interface */ interface->tx_itr = tx_itr; @@ -1020,7 +1025,6 @@ return 0; } - static u32 fm10k_get_reta_size(struct net_device __always_unused *netdev) { return FM10K_RETA_SIZE * FM10K_RETA_ENTRIES_PER_REG; --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_main.c @@ -28,7 +28,7 @@ #include "fm10k.h" -#define DRV_VERSION "0.15.2-k" +#define DRV_VERSION "0.19.3-k" const char fm10k_driver_version[] = DRV_VERSION; char fm10k_driver_name[] = "fm10k"; static const char fm10k_driver_string[] = @@ -42,7 +42,7 @@ MODULE_VERSION(DRV_VERSION); /* single workqueue for entire fm10k driver */ -struct workqueue_struct *fm10k_workqueue = NULL; +struct workqueue_struct *fm10k_workqueue; /** * fm10k_init_module - Driver Registration Routine @@ -56,8 +56,7 @@ pr_info("%s\n", fm10k_copyright); /* create driver workqueue */ - if (!fm10k_workqueue) - fm10k_workqueue = create_workqueue("fm10k"); + fm10k_workqueue = create_workqueue("fm10k"); fm10k_dbg_init(); @@ -80,7 +79,6 @@ /* destroy driver workqueue */ flush_workqueue(fm10k_workqueue); destroy_workqueue(fm10k_workqueue); - fm10k_workqueue = NULL; } module_exit(fm10k_exit_module); @@ -917,7 +915,7 @@ /* set timestamping bits */ if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && likely(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS)) - desc_flags |= FM10K_TXD_FLAG_TIME; + desc_flags |= FM10K_TXD_FLAG_TIME; /* set checksum offload bits */ desc_flags |= FM10K_SET_FLAG(tx_flags, FM10K_TX_FLAGS_CSUM, @@ -1094,11 +1092,11 @@ netdev_tx_t fm10k_xmit_frame_ring(struct sk_buff *skb, struct fm10k_ring *tx_ring) { + u16 count = TXD_USE_COUNT(skb_headlen(skb)); struct fm10k_tx_buffer *first; - int tso; - u32 tx_flags = 0; unsigned short f; - u16 count = TXD_USE_COUNT(skb_headlen(skb)); + u32 tx_flags = 0; + int tso; /* need: 1 descriptor per page * PAGE_SIZE/FM10K_MAX_DATA_PER_TXD, * + 1 desc for skb_headlen/FM10K_MAX_DATA_PER_TXD, @@ -1363,10 +1361,10 @@ **/ static void fm10k_update_itr(struct fm10k_ring_container *ring_container) { - unsigned int avg_wire_size, packets; + unsigned int avg_wire_size, packets, itr_round; /* Only update ITR if we are using adaptive setting */ - if (!(ring_container->itr & FM10K_ITR_ADAPTIVE)) + if (!ITR_IS_ADAPTIVE(ring_container->itr)) goto clear_counts; packets = ring_container->total_packets; @@ -1375,18 +1373,44 @@ avg_wire_size = ring_container->total_bytes / packets; - /* Add 24 bytes to size to account for CRC, preamble, and gap */ - avg_wire_size += 24; + /* The following is a crude approximation of: + * wmem_default / (size + overhead) = desired_pkts_per_int + * rate / bits_per_byte / (size + ethernet overhead) = pkt_rate + * (desired_pkt_rate / pkt_rate) * usecs_per_sec = ITR value + * + * Assuming wmem_default is 212992 and overhead is 640 bytes per + * packet, (256 skb, 64 headroom, 320 shared info), we can reduce the + * formula down to + * + * (34 * (size + 24)) / (size + 640) = ITR + * + * We first do some math on the packet size and then finally bitshift + * by 8 after rounding up. We also have to account for PCIe link speed + * difference as ITR scales based on this. + */ + if (avg_wire_size <= 360) { + /* Start at 250K ints/sec and gradually drop to 77K ints/sec */ + avg_wire_size *= 8; + avg_wire_size += 376; + } else if (avg_wire_size <= 1152) { + /* 77K ints/sec to 45K ints/sec */ + avg_wire_size *= 3; + avg_wire_size += 2176; + } else if (avg_wire_size <= 1920) { + /* 45K ints/sec to 38K ints/sec */ + avg_wire_size += 4480; + } else { + /* plateau at a limit of 38K ints/sec */ + avg_wire_size = 6656; + } - /* Don't starve jumbo frames */ - if (avg_wire_size > 3000) - avg_wire_size = 3000; - - /* Give a little boost to mid-size frames */ - if ((avg_wire_size > 300) && (avg_wire_size < 1200)) - avg_wire_size /= 3; - else - avg_wire_size /= 2; + /* Perform final bitshift for division after rounding up to ensure + * that the calculation will never get below a 1. The bit shift + * accounts for changes in the ITR due to PCIe link speed. + */ + itr_round = ACCESS_ONCE(ring_container->itr_scale) + 8; + avg_wire_size += (1 << itr_round) - 1; + avg_wire_size >>= itr_round; /* write back value and retain adaptive flag */ ring_container->itr = avg_wire_size | FM10K_ITR_ADAPTIVE; @@ -1428,11 +1452,15 @@ fm10k_for_each_ring(ring, q_vector->tx) clean_complete &= fm10k_clean_tx_irq(q_vector, ring); + /* Handle case where we are called by netpoll with a budget of 0 */ + if (budget <= 0) + return budget; + /* attempt to distribute budget to each queue fairly, but don't * allow the budget to go below 1 because we'll exit polling */ if (q_vector->rx.count > 1) - per_ring_budget = max(budget/q_vector->rx.count, 1); + per_ring_budget = max(budget / q_vector->rx.count, 1); else per_ring_budget = budget; @@ -1600,6 +1628,7 @@ q_vector->tx.ring = ring; q_vector->tx.work_limit = FM10K_DEFAULT_TX_WORK; q_vector->tx.itr = interface->tx_itr; + q_vector->tx.itr_scale = interface->hw.mac.itr_scale; q_vector->tx.count = txr_count; while (txr_count) { @@ -1628,6 +1657,7 @@ /* save Rx ring container info */ q_vector->rx.ring = ring; q_vector->rx.itr = interface->rx_itr; + q_vector->rx.itr_scale = interface->hw.mac.itr_scale; q_vector->rx.count = rxr_count; while (rxr_count) { @@ -1966,8 +1996,10 @@ /* Allocate memory for queues */ err = fm10k_alloc_q_vectors(interface); - if (err) + if (err) { + fm10k_reset_msix_capability(interface); return err; + } /* Map rings to devices, and map devices to physical queues */ fm10k_assign_rings(interface); --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_mbx.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_mbx.c @@ -57,7 +57,7 @@ } /** - * fm10k_fifo_empty - Test to verify if fifo is empty + * fm10k_fifo_empty - Test to verify if FIFO is empty * @fifo: pointer to FIFO * * This function returns true if the FIFO is empty, else false @@ -72,7 +72,7 @@ * @fifo: pointer to FIFO * @offset: offset to add to head * - * This function returns the indices into the fifo based on head + offset + * This function returns the indices into the FIFO based on head + offset **/ static u16 fm10k_fifo_head_offset(struct fm10k_mbx_fifo *fifo, u16 offset) { @@ -84,7 +84,7 @@ * @fifo: pointer to FIFO * @offset: offset to add to tail * - * This function returns the indices into the fifo based on tail + offset + * This function returns the indices into the FIFO based on tail + offset **/ static u16 fm10k_fifo_tail_offset(struct fm10k_mbx_fifo *fifo, u16 offset) { @@ -160,7 +160,7 @@ /** * fm10k_mbx_tail_add - Determine new tail value with added offset * @mbx: pointer to mailbox - * @offset: length to add to head offset + * @offset: length to add to tail offset * * This function takes the local tail index and recomputes it for * a given length added as an offset. @@ -176,7 +176,7 @@ /** * fm10k_mbx_tail_sub - Determine new tail value with subtracted offset * @mbx: pointer to mailbox - * @offset: length to add to head offset + * @offset: length to add to tail offset * * This function takes the local tail index and recomputes it for * a given length added as an offset. @@ -240,7 +240,7 @@ } /** - * fm10k_fifo_write_copy - pulls data off of msg and places it in fifo + * fm10k_fifo_write_copy - pulls data off of msg and places it in FIFO * @fifo: pointer to FIFO * @msg: message array to populate * @tail_offset: additional offset to add to tail pointer @@ -336,6 +336,7 @@ /** * fm10k_mbx_write_copy - pulls data off of Tx FIFO and places it in mbmem + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * * This function will take a section of the Tx FIFO and copy it into the @@ -375,6 +376,8 @@ if (!tail) tail++; + mbx->tx_mbmem_pulled++; + /* write message to hardware FIFO */ fm10k_write_reg(hw, mbmem + tail++, *(head++)); } while (--len && --end); @@ -459,6 +462,8 @@ if (!head) head++; + mbx->rx_mbmem_pushed++; + /* read message from hardware FIFO */ *(tail++) = fm10k_read_reg(hw, mbmem + head++); } while (--len && --end); @@ -707,7 +712,7 @@ * @hw: pointer to hardware structure * @mbx: pointer to mailbox * - * This function dequeues messages and hands them off to the tlv parser. + * This function dequeues messages and hands them off to the TLV parser. * It will return the number of messages processed when called. **/ static u16 fm10k_mbx_dequeue_rx(struct fm10k_hw *hw, @@ -899,7 +904,7 @@ } /** - * fm10k_mbx_create_fake_disconnect_hdr - Generate a false disconnect mailbox header + * fm10k_mbx_create_fake_disconnect_hdr - Generate a false disconnect mbox hdr * @mbx: pointer to mailbox * * This function creates a fake disconnect header for loading into remote @@ -920,7 +925,7 @@ } /** - * fm10k_mbx_create_error_msg - Generate a error message + * fm10k_mbx_create_error_msg - Generate an error message * @mbx: pointer to mailbox * @err: local error encountered * @@ -953,7 +958,6 @@ /** * fm10k_mbx_validate_msg_hdr - Validate common fields in the message header * @mbx: pointer to mailbox - * @msg: message array to read * * This function will parse up the fields in the mailbox header and return * an error if the header contains any of a number of invalid configurations @@ -1017,11 +1021,12 @@ /** * fm10k_mbx_create_reply - Generate reply based on state and remote head + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * @head: acknowledgement number * * This function will generate an outgoing message based on the current - * mailbox state and the remote fifo head. It will return the length + * mailbox state and the remote FIFO head. It will return the length * of the outgoing message excluding header on success, and a negative value * on error. **/ @@ -1147,8 +1152,8 @@ /** * fm10k_mbx_process_connect - Process connect header + * @hw: pointer to hardware structure * @mbx: pointer to mailbox - * @msg: message array to process * * This function will read an incoming connect header and reply with the * appropriate message. It will return a value indicating the number of @@ -1194,6 +1199,7 @@ /** * fm10k_mbx_process_data - Process data header + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * * This function will read an incoming data header and reply with the @@ -1235,6 +1241,7 @@ /** * fm10k_mbx_process_disconnect - Process disconnect header + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * * This function will read an incoming disconnect header and reply with the @@ -1287,6 +1294,7 @@ /** * fm10k_mbx_process_error - Process error header + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * * This function will read an incoming error header and reply with the @@ -1556,7 +1564,7 @@ * @id: ID reference for PF as it supports up to 64 PF/VF mailboxes * * This function initializes the mailbox for use. It will split the - * buffer provided an use that th populate both the Tx and Rx FIFO by + * buffer provided and use that to populate both the Tx and Rx FIFO by * evenly splitting it. In order to allow for easy masking of head/tail * the value reported in size must be a power of 2 and is reported in * DWORDs, not bytes. Any invalid values will cause the mailbox to return @@ -1633,7 +1641,7 @@ * fm10k_sm_mbx_create_data_hdr - Generate a mailbox header for local FIFO * @mbx: pointer to mailbox * - * This function returns a connection mailbox header + * This function returns a data mailbox header **/ static void fm10k_sm_mbx_create_data_hdr(struct fm10k_mbx_info *mbx) { @@ -1726,8 +1734,6 @@ fm10k_sm_mbx_create_connect_hdr(mbx, 0); fm10k_mbx_write(hw, mbx); - /* enable interrupt and notify other party of new message */ - return 0; } @@ -1771,7 +1777,7 @@ } /** - * fm10k_mbx_validate_fifo_hdr - Validate fields in the remote FIFO header + * fm10k_sm_mbx_validate_fifo_hdr - Validate fields in the remote FIFO header * @mbx: pointer to mailbox * * This function will parse up the fields in the mailbox header and return @@ -1849,7 +1855,7 @@ } /** - * fm10k_sm_mbx_create_error_message - Process an error in FIFO hdr + * fm10k_sm_mbx_create_error_msg - Process an error in FIFO header * @mbx: pointer to mailbox * @err: local error encountered * @@ -1879,6 +1885,7 @@ * fm10k_sm_mbx_receive - Take message from Rx mailbox FIFO and put it in Rx * @hw: pointer to hardware structure * @mbx: pointer to mailbox + * @tail: tail index of message * * This function will dequeue one message from the Rx switch manager mailbox * FIFO and place it in the Rx mailbox FIFO for processing by software. @@ -1918,6 +1925,7 @@ * fm10k_sm_mbx_transmit - Take message from Tx and put it in Tx mailbox FIFO * @hw: pointer to hardware structure * @mbx: pointer to mailbox + * @head: head index of message * * This function will dequeue one message from the Tx mailbox FIFO and place * it in the Tx switch manager mailbox FIFO for processing by hardware. @@ -1957,11 +1965,12 @@ /** * fm10k_sm_mbx_create_reply - Generate reply based on state and remote head + * @hw: pointer to hardware structure * @mbx: pointer to mailbox * @head: acknowledgement number * * This function will generate an outgoing message based on the current - * mailbox state and the remote fifo head. It will return the length + * mailbox state and the remote FIFO head. It will return the length * of the outgoing message excluding header on success, and a negative value * on error. **/ @@ -2073,7 +2082,7 @@ } /** - * fm10k_sm_mbx_process - Process mailbox switch mailbox interrupt + * fm10k_sm_mbx_process - Process switch manager mailbox interrupt * @hw: pointer to hardware structure * @mbx: pointer to mailbox * @@ -2129,13 +2138,19 @@ * @mbx: pointer to mailbox * @msg_data: handlers for mailbox events * - * This function for now is used to stub out the PF/SM mailbox + * This function initializes the PF/SM mailbox for use. It will split the + * buffer provided and use that to populate both the Tx and Rx FIFO by + * evenly splitting it. In order to allow for easy masking of head/tail + * the value reported in size must be a power of 2 and is reported in + * DWORDs, not bytes. Any invalid values will cause the mailbox to return + * error. **/ s32 fm10k_sm_mbx_init(struct fm10k_hw *hw, struct fm10k_mbx_info *mbx, const struct fm10k_msg_data *msg_data) { mbx->mbx_reg = FM10K_GMBX; mbx->mbmem_reg = FM10K_MBMEM_PF(0); + /* start out in closed state */ mbx->state = FM10K_STATE_CLOSED; --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_mbx.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_mbx.h @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -128,11 +128,11 @@ * The maximum message size is provided during connect to avoid * jamming the mailbox with messages that do not fit. * Err_no: Error number - Applies only to error headers - * The error number provides a indication of the type of error + * The error number provides an indication of the type of error * experienced. */ -/* macros for retriving and setting header values */ +/* macros for retrieving and setting header values */ #define FM10K_MSG_HDR_MASK(name) \ ((0x1u << FM10K_MSG_##name##_SIZE) - 1) #define FM10K_MSG_HDR_FIELD_SET(value, name) \ @@ -291,8 +291,10 @@ u64 tx_dropped; u64 tx_messages; u64 tx_dwords; + u64 tx_mbmem_pulled; u64 rx_messages; u64 rx_dwords; + u64 rx_mbmem_pushed; u64 rx_parse_err; /* Buffer to store messages */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c @@ -20,7 +20,7 @@ #include "fm10k.h" #include -#if IS_ENABLED(CONFIG_FM10K_VXLAN) +#ifdef CONFIG_FM10K_VXLAN #include #endif /* CONFIG_FM10K_VXLAN */ @@ -556,11 +556,11 @@ if (err) goto err_set_queues; -#if IS_ENABLED(CONFIG_FM10K_VXLAN) +#ifdef CONFIG_FM10K_VXLAN /* update VXLAN port configuration */ vxlan_get_rx_port(netdev); - #endif + fm10k_up(interface); return 0; @@ -608,7 +608,7 @@ unsigned int r_idx = skb->queue_mapping; int err; - if ((skb->protocol == htons(ETH_P_8021Q)) && + if ((skb->protocol == htons(ETH_P_8021Q)) && !skb_vlan_tag_present(skb)) { /* FM10K only supports hardware tagging, any tags in frame * are considered 2nd level or "outer" tags @@ -632,7 +632,7 @@ return NETDEV_TX_OK; } - /* locate vlan header */ + /* locate VLAN header */ vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN); /* pull the 2 key pieces of data out of it */ @@ -705,7 +705,7 @@ } else { netif_info(interface, drv, netdev, "Fake Tx hang detected with timeout of %d seconds\n", - netdev->watchdog_timeo/HZ); + netdev->watchdog_timeo / HZ); /* fake Tx hang - increase the kernel timeout */ if (netdev->watchdog_timeo < TX_TIMEO_LIMIT) @@ -778,7 +778,7 @@ if (!set) clear_bit(vid, interface->active_vlans); - /* disable the default VID on ring if we have an active VLAN */ + /* disable the default VLAN ID on ring if we have an active VLAN */ for (i = 0; i < interface->num_rx_queues; i++) { struct fm10k_ring *rx_ring = interface->rx_ring[i]; u16 rx_vid = rx_ring->vid & (VLAN_N_VID - 1); @@ -789,7 +789,9 @@ rx_ring->vid &= ~FM10K_VLAN_CLEAR; } - /* Do not remove default VID related entries from VLAN and MAC tables */ + /* Do not remove default VLAN ID related entries from VLAN and MAC + * tables + */ if (!set && vid == hw->mac.default_vid) return 0; @@ -814,7 +816,7 @@ if (err) goto err_out; - /* set vid prior to syncing/unsyncing the VLAN */ + /* set VLAN ID prior to syncing/unsyncing the VLAN */ interface->vid = vid + (set ? VLAN_N_VID : 0); /* Update the unicast and multicast address list to add/drop VLAN */ @@ -1151,6 +1153,7 @@ int fm10k_setup_tc(struct net_device *dev, u8 tc) { struct fm10k_intfc *interface = netdev_priv(dev); + int err; /* Currently only the PF supports priority classes */ if (tc && (interface->hw.mac.type != fm10k_mac_pf)) @@ -1175,17 +1178,30 @@ netdev_reset_tc(dev); netdev_set_num_tc(dev, tc); - fm10k_init_queueing_scheme(interface); + err = fm10k_init_queueing_scheme(interface); + if (err) + goto err_queueing_scheme; - fm10k_mbx_request_irq(interface); + err = fm10k_mbx_request_irq(interface); + if (err) + goto err_mbx_irq; - if (netif_running(dev)) - fm10k_open(dev); + err = netif_running(dev) ? fm10k_open(dev) : 0; + if (err) + goto err_open; /* flag to indicate SWPRI has yet to be updated */ interface->flags |= FM10K_FLAG_SWPRI_CONFIG; return 0; +err_open: + fm10k_mbx_free_irq(interface); +err_mbx_irq: + fm10k_clear_queueing_scheme(interface); +err_queueing_scheme: + netif_device_detach(dev); + + return err; } static int fm10k_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) @@ -1388,8 +1404,9 @@ #define DEFAULT_DEBUG_LEVEL_SHIFT 3 -struct net_device *fm10k_alloc_netdev(void) +struct net_device *fm10k_alloc_netdev(const struct fm10k_info *info) { + netdev_features_t hw_features; struct fm10k_intfc *interface; struct net_device *dev; @@ -1412,27 +1429,31 @@ NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN | - NETIF_F_GSO_UDP_TUNNEL | NETIF_F_RXHASH | NETIF_F_RXCSUM; + /* Only the PF can support VXLAN and NVGRE tunnel offloads */ + if (info->mac == fm10k_mac_pf) { + dev->hw_enc_features = NETIF_F_IP_CSUM | + NETIF_F_TSO | + NETIF_F_TSO6 | + NETIF_F_TSO_ECN | + NETIF_F_GSO_UDP_TUNNEL | + NETIF_F_IPV6_CSUM | + NETIF_F_SG; + + dev->features |= NETIF_F_GSO_UDP_TUNNEL; + } + /* all features defined to this point should be changeable */ - dev->hw_features |= dev->features; + hw_features = dev->features; /* allow user to enable L2 forwarding acceleration */ - dev->hw_features |= NETIF_F_HW_L2FW_DOFFLOAD; + hw_features |= NETIF_F_HW_L2FW_DOFFLOAD; /* configure VLAN features */ dev->vlan_features |= dev->features; - /* configure tunnel offloads */ - dev->hw_enc_features |= NETIF_F_IP_CSUM | - NETIF_F_TSO | - NETIF_F_TSO6 | - NETIF_F_TSO_ECN | - NETIF_F_GSO_UDP_TUNNEL | - NETIF_F_IPV6_CSUM; - /* we want to leave these both on as we cannot disable VLAN tag * insertion or stripping on the hardware since it is contained * in the FTAG and not in the frame itself. @@ -1443,5 +1464,7 @@ dev->priv_flags |= IFF_UNICAST_FLT; + dev->hw_features |= hw_features; + return dev; } --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_pci.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_pci.c @@ -159,16 +159,40 @@ fm10k_mbx_free_irq(interface); + /* free interrupts */ + fm10k_clear_queueing_scheme(interface); + /* delay any future reset requests */ interface->last_reset = jiffies + (10 * HZ); /* reset and initialize the hardware so it is in a known state */ - err = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw); - if (err) + err = hw->mac.ops.reset_hw(hw); + if (err) { + dev_err(&interface->pdev->dev, "reset_hw failed: %d\n", err); + goto reinit_err; + } + + err = hw->mac.ops.init_hw(hw); + if (err) { dev_err(&interface->pdev->dev, "init_hw failed: %d\n", err); + goto reinit_err; + } + + err = fm10k_init_queueing_scheme(interface); + if (err) { + dev_err(&interface->pdev->dev, + "init_queueing_scheme failed: %d\n", err); + goto reinit_err; + } /* reassociate interrupts */ - fm10k_mbx_request_irq(interface); + err = fm10k_mbx_request_irq(interface); + if (err) + goto err_mbx_irq; + + err = fm10k_hw_ready(interface); + if (err) + goto err_open; /* update hardware address for VFs if perm_addr has changed */ if (hw->mac.type == fm10k_mac_vf) { @@ -188,14 +212,27 @@ /* reset clock */ fm10k_ts_reset(interface); - if (netif_running(netdev)) - fm10k_open(netdev); + err = netif_running(netdev) ? fm10k_open(netdev) : 0; + if (err) + goto err_open; fm10k_iov_resume(interface->pdev); rtnl_unlock(); clear_bit(__FM10K_RESETTING, &interface->state); + + return; +err_open: + fm10k_mbx_free_irq(interface); +err_mbx_irq: + fm10k_clear_queueing_scheme(interface); +reinit_err: + netif_device_detach(netdev); + + rtnl_unlock(); + + clear_bit(__FM10K_RESETTING, &interface->state); } static void fm10k_reset_subtask(struct fm10k_intfc *interface) @@ -563,7 +600,7 @@ /* store tail pointer */ ring->tail = &interface->uc_addr[FM10K_TDT(reg_idx)]; - /* reset ntu and ntc to place SW in sync with hardwdare */ + /* reset ntu and ntc to place SW in sync with hardware */ ring->next_to_clean = 0; ring->next_to_use = 0; @@ -579,6 +616,13 @@ fm10k_write_reg(hw, FM10K_PFVTCTL(reg_idx), FM10K_PFVTCTL_FTAG_DESC_ENABLE); + /* Initialize XPS */ + if (!test_and_set_bit(__FM10K_TX_XPS_INIT_DONE, &ring->state) && + ring->q_vector) + netif_set_xps_queue(ring->netdev, + &ring->q_vector->affinity_mask, + ring->queue_index); + /* enable queue */ fm10k_write_reg(hw, FM10K_TXDCTL(reg_idx), txdctl); } @@ -669,7 +713,7 @@ /* store tail pointer */ ring->tail = &interface->uc_addr[FM10K_RDT(reg_idx)]; - /* reset ntu and ntc to place SW in sync with hardwdare */ + /* reset ntu and ntc to place SW in sync with hardware */ ring->next_to_clean = 0; ring->next_to_use = 0; ring->next_to_alloc = 0; @@ -694,7 +738,7 @@ /* assign default VLAN to queue */ ring->vid = hw->mac.default_vid; - /* if we have an active VLAN, disable default VID */ + /* if we have an active VLAN, disable default VLAN ID */ if (test_bit(hw->mac.default_vid, interface->active_vlans)) ring->vid |= FM10K_VLAN_CLEAR; @@ -846,7 +890,7 @@ struct fm10k_q_vector *q_vector = data; if (q_vector->rx.count || q_vector->tx.count) - napi_schedule(&q_vector->napi); + napi_schedule_irqoff(&q_vector->napi); return IRQ_HANDLED; } @@ -859,7 +903,8 @@ /* re-enable mailbox interrupt and indicate 20us delay */ fm10k_write_reg(hw, FM10K_VFITR(FM10K_MBX_VECTOR), - FM10K_ITR_ENABLE | FM10K_MBX_INT_DELAY); + FM10K_ITR_ENABLE | (FM10K_MBX_INT_DELAY >> + hw->mac.itr_scale)); /* service upstream mailbox */ if (fm10k_mbx_trylock(interface)) { @@ -867,7 +912,7 @@ fm10k_mbx_unlock(interface); } - hw->mac.get_host_state = 1; + hw->mac.get_host_state = true; fm10k_service_event_schedule(interface); return IRQ_HANDLED; @@ -897,7 +942,7 @@ #endif #define FM10K_ERR_MSG(type) case (type): error = #type; break static void fm10k_handle_fault(struct fm10k_intfc *interface, int type, - struct fm10k_fault *fault) + struct fm10k_fault *fault) { struct pci_dev *pdev = interface->pdev; struct fm10k_hw *hw = &interface->hw; @@ -1083,14 +1128,15 @@ } /* we should validate host state after interrupt event */ - hw->mac.get_host_state = 1; + hw->mac.get_host_state = true; /* validate host state, and handle VF mailboxes in the service task */ fm10k_service_event_schedule(interface); /* re-enable mailbox interrupt and indicate 20us delay */ fm10k_write_reg(hw, FM10K_ITR(FM10K_MBX_VECTOR), - FM10K_ITR_ENABLE | FM10K_MBX_INT_DELAY); + FM10K_ITR_ENABLE | (FM10K_MBX_INT_DELAY >> + hw->mac.itr_scale)); return IRQ_HANDLED; } @@ -1101,6 +1147,10 @@ struct fm10k_hw *hw = &interface->hw; int itr_reg; + /* no mailbox IRQ to free if MSI-X is not enabled */ + if (!interface->msix_entries) + return; + /* disconnect the mailbox */ hw->mbx.ops.disconnect(hw, &hw->mbx); @@ -1141,7 +1191,7 @@ /* MAC was changed so we need reset */ if (is_valid_ether_addr(hw->mac.perm_addr) && - memcmp(hw->mac.perm_addr, hw->mac.addr, ETH_ALEN)) + !ether_addr_equal(hw->mac.perm_addr, hw->mac.addr)) interface->flags |= FM10K_FLAG_RESET_REQUESTED; /* VLAN override was changed, or default VLAN changed */ @@ -1269,7 +1319,7 @@ if (!fm10k_glort_valid_pf(hw, glort)) return FM10K_ERR_PARAM; - /* verify VID is valid */ + /* verify VLAN ID is valid */ if (pvid >= FM10K_VLAN_TABLE_VID_MAX) return FM10K_ERR_PARAM; @@ -1388,14 +1438,14 @@ } /* Enable interrupts w/ no moderation for "other" interrupts */ - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_PCIeFault), other_itr); - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SwitchUpDown), other_itr); - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SRAM), other_itr); - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_MaxHoldTime), other_itr); - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_VFLR), other_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_pcie_fault), other_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_switch_up_down), other_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_sram), other_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_max_hold_time), other_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_vflr), other_itr); /* Enable interrupts w/ moderation for mailbox */ - fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_Mailbox), mbx_itr); + fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_mailbox), mbx_itr); /* Enable individual interrupt causes */ fm10k_write_reg(hw, FM10K_EIMR, FM10K_EIMR_ENABLE(PCA_FAULT) | @@ -1423,10 +1473,15 @@ err = fm10k_mbx_request_irq_pf(interface); else err = fm10k_mbx_request_irq_vf(interface); + if (err) + return err; /* connect mailbox */ - if (!err) - err = hw->mbx.ops.connect(hw, &hw->mbx); + err = hw->mbx.ops.connect(hw, &hw->mbx); + + /* if the mailbox failed to connect, then free IRQ */ + if (err) + fm10k_mbx_free_irq(interface); return err; } @@ -1455,8 +1510,10 @@ if (!q_vector->tx.count && !q_vector->rx.count) continue; - /* disable interrupts */ + /* clear the affinity_mask in the IRQ descriptor */ + irq_set_affinity_hint(entry->vector, NULL); + /* disable interrupts */ writel(FM10K_ITR_MASK_SET, q_vector->itr); free_irq(entry->vector, q_vector); @@ -1514,6 +1571,9 @@ goto err_out; } + /* assign the mask for this irq */ + irq_set_affinity_hint(entry->vector, &q_vector->affinity_mask); + /* Enable q_vector */ writel(FM10K_ITR_ENABLE, q_vector->itr); @@ -1534,8 +1594,10 @@ if (!q_vector->tx.count && !q_vector->rx.count) continue; - /* disable interrupts */ + /* clear the affinity_mask in the IRQ descriptor */ + irq_set_affinity_hint(entry->vector, NULL); + /* disable interrupts */ writel(FM10K_ITR_MASK_SET, q_vector->itr); free_irq(entry->vector, q_vector); @@ -1573,7 +1635,7 @@ netif_tx_start_all_queues(interface->netdev); /* kick off the service timer now */ - hw->mac.get_host_state = 1; + hw->mac.get_host_state = true; mod_timer(&interface->service_timer, jiffies); } @@ -1684,7 +1746,13 @@ interface->last_reset = jiffies + (10 * HZ); /* reset and initialize the hardware so it is in a known state */ - err = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw); + err = hw->mac.ops.reset_hw(hw); + if (err) { + dev_err(&pdev->dev, "reset_hw failed: %d\n", err); + return err; + } + + err = hw->mac.ops.init_hw(hw); if (err) { dev_err(&pdev->dev, "init_hw failed: %d\n", err); return err; @@ -1722,13 +1790,6 @@ pci_resource_len(pdev, 4)); hw->sw_addr = interface->sw_addr; - /* Only the PF can support VXLAN and NVGRE offloads */ - if (hw->mac.type != fm10k_mac_pf) { - netdev->hw_enc_features = 0; - netdev->features &= ~NETIF_F_GSO_UDP_TUNNEL; - netdev->hw_features &= ~NETIF_F_GSO_UDP_TUNNEL; - } - /* initialize DCBNL interface */ fm10k_dcbnl_set_ops(netdev); @@ -1749,8 +1810,8 @@ interface->rx_ring_count = FM10K_DEFAULT_RXD; /* set default interrupt moderation */ - interface->tx_itr = FM10K_ITR_10K; - interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_ITR_20K; + interface->tx_itr = FM10K_TX_ITR_DEFAULT; + interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_RX_ITR_DEFAULT; /* initialize vxlan_port list */ INIT_LIST_HEAD(&interface->vxlan_port); @@ -1835,17 +1896,18 @@ return; } - if (max_gts < expected_gts) { - dev_warn(&interface->pdev->dev, - "This device requires %dGT/s of bandwidth for optimal performance.\n", - expected_gts); - dev_warn(&interface->pdev->dev, - "A %sslot with x%d lanes is suggested.\n", - (hw->bus_caps.speed == fm10k_bus_speed_2500 ? "2.5GT/s " : - hw->bus_caps.speed == fm10k_bus_speed_5000 ? "5.0GT/s " : - hw->bus_caps.speed == fm10k_bus_speed_8000 ? "8.0GT/s " : ""), - hw->bus_caps.width); - } + if (max_gts >= expected_gts) + return; + + dev_warn(&interface->pdev->dev, + "This device requires %dGT/s of bandwidth for optimal performance.\n", + expected_gts); + dev_warn(&interface->pdev->dev, + "A %sslot with x%d lanes is suggested.\n", + (hw->bus_caps.speed == fm10k_bus_speed_2500 ? "2.5GT/s " : + hw->bus_caps.speed == fm10k_bus_speed_5000 ? "5.0GT/s " : + hw->bus_caps.speed == fm10k_bus_speed_8000 ? "8.0GT/s " : ""), + hw->bus_caps.width); } /** @@ -1859,8 +1921,7 @@ * The OS initialization, configuring of the interface private structure, * and a hardware reset occur. **/ -static int fm10k_probe(struct pci_dev *pdev, - const struct pci_device_id *ent) +static int fm10k_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct net_device *netdev; struct fm10k_intfc *interface; @@ -1894,7 +1955,7 @@ pci_set_master(pdev); pci_save_state(pdev); - netdev = fm10k_alloc_netdev(); + netdev = fm10k_alloc_netdev(fm10k_info_tbl[ent->driver_data]); if (!netdev) { err = -ENOMEM; goto err_alloc_netdev; @@ -2071,8 +2132,10 @@ /* reset hardware to known state */ err = hw->mac.ops.init_hw(&interface->hw); - if (err) + if (err) { + dev_err(&pdev->dev, "init_hw failed: %d\n", err); return err; + } /* reset statistics starting values */ hw->mac.ops.rebind_hw_stats(hw, &interface->stats); @@ -2083,16 +2146,22 @@ rtnl_lock(); err = fm10k_init_queueing_scheme(interface); - if (!err) { - fm10k_mbx_request_irq(interface); - if (netif_running(netdev)) - err = fm10k_open(netdev); - } + if (err) + goto err_queueing_scheme; - rtnl_unlock(); + err = fm10k_mbx_request_irq(interface); + if (err) + goto err_mbx_irq; + err = fm10k_hw_ready(interface); if (err) - return err; + goto err_open; + + err = netif_running(netdev) ? fm10k_open(netdev) : 0; + if (err) + goto err_open; + + rtnl_unlock(); /* assume host is not ready, to prevent race with watchdog in case we * actually don't have connection to the switch @@ -2110,6 +2179,14 @@ netif_device_attach(netdev); return 0; +err_open: + fm10k_mbx_free_irq(interface); +err_mbx_irq: + fm10k_clear_queueing_scheme(interface); +err_queueing_scheme: + rtnl_unlock(); + + return err; } /** @@ -2185,6 +2262,9 @@ if (netif_running(netdev)) fm10k_close(netdev); + /* free interrupts */ + fm10k_clear_queueing_scheme(interface); + fm10k_mbx_free_irq(interface); pci_disable_device(pdev); @@ -2248,11 +2328,22 @@ int err = 0; /* reset hardware to known state */ - hw->mac.ops.init_hw(&interface->hw); + err = hw->mac.ops.init_hw(&interface->hw); + if (err) { + dev_err(&pdev->dev, "init_hw failed: %d\n", err); + return; + } /* reset statistics starting values */ hw->mac.ops.rebind_hw_stats(hw, &interface->stats); + err = fm10k_init_queueing_scheme(interface); + if (err) { + dev_err(&interface->pdev->dev, + "init_queueing_scheme failed: %d\n", err); + return; + } + /* reassociate interrupts */ fm10k_mbx_request_irq(interface); --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_pf.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_pf.c @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -150,19 +150,26 @@ FM10K_TPH_RXCTRL_HDR_WROEN); } - /* set max hold interval to align with 1.024 usec in all modes */ + /* set max hold interval to align with 1.024 usec in all modes and + * store ITR scale + */ switch (hw->bus.speed) { case fm10k_bus_speed_2500: dma_ctrl = FM10K_DMA_CTRL_MAX_HOLD_1US_GEN1; + hw->mac.itr_scale = FM10K_TDLEN_ITR_SCALE_GEN1; break; case fm10k_bus_speed_5000: dma_ctrl = FM10K_DMA_CTRL_MAX_HOLD_1US_GEN2; + hw->mac.itr_scale = FM10K_TDLEN_ITR_SCALE_GEN2; break; case fm10k_bus_speed_8000: dma_ctrl = FM10K_DMA_CTRL_MAX_HOLD_1US_GEN3; + hw->mac.itr_scale = FM10K_TDLEN_ITR_SCALE_GEN3; break; default: dma_ctrl = 0; + /* just in case, assume Gen3 ITR scale */ + hw->mac.itr_scale = FM10K_TDLEN_ITR_SCALE_GEN3; break; } @@ -259,7 +266,6 @@ { u8 perm_addr[ETH_ALEN]; u32 serial_num; - int i; serial_num = fm10k_read_reg(hw, FM10K_SM_AREA(1)); @@ -281,10 +287,8 @@ perm_addr[4] = (u8)(serial_num >> 8); perm_addr[5] = (u8)(serial_num); - for (i = 0; i < ETH_ALEN; i++) { - hw->mac.perm_addr[i] = perm_addr[i]; - hw->mac.addr[i] = perm_addr[i]; - } + ether_addr_copy(hw->mac.perm_addr, perm_addr); + ether_addr_copy(hw->mac.addr, perm_addr); return 0; } @@ -325,7 +329,7 @@ /* clear set bit from VLAN ID */ vid &= ~FM10K_VLAN_CLEAR; - /* if glort or vlan are not valid return error */ + /* if glort or VLAN are not valid return error */ if (!fm10k_glort_valid_pf(hw, glort) || vid >= FM10K_VLAN_TABLE_VID_MAX) return FM10K_ERR_PARAM; @@ -334,8 +338,8 @@ ((u32)mac[3] << 16) | ((u32)mac[4] << 8) | ((u32)mac[5])); - mac_update.mac_upper = cpu_to_le16(((u32)mac[0] << 8) | - ((u32)mac[1])); + mac_update.mac_upper = cpu_to_le16(((u16)mac[0] << 8) | + ((u16)mac[1])); mac_update.vlan = cpu_to_le16(vid); mac_update.glort = cpu_to_le16(glort); mac_update.action = add ? 0 : 1; @@ -410,6 +414,7 @@ if (mode > FM10K_XCAST_MODE_NONE) return FM10K_ERR_PARAM; + /* if glort is not valid return error */ if (!fm10k_glort_valid_pf(hw, glort)) return FM10K_ERR_PARAM; @@ -903,6 +908,13 @@ fm10k_write_reg(hw, FM10K_TDBAL(vf_q_idx), tdbal); fm10k_write_reg(hw, FM10K_TDBAH(vf_q_idx), tdbah); + /* Provide the VF the ITR scale, using software-defined fields in TDLEN + * to pass the information during VF initialization. See definition of + * FM10K_TDLEN_ITR_SCALE_SHIFT for more details. + */ + fm10k_write_reg(hw, FM10K_TDLEN(vf_q_idx), hw->mac.itr_scale << + FM10K_TDLEN_ITR_SCALE_SHIFT); + err_out: /* configure Queue control register */ txqctl = ((u32)vf_vid << FM10K_TXQCTL_VID_SHIFT) & @@ -910,7 +922,7 @@ txqctl |= (vf_idx << FM10K_TXQCTL_TC_SHIFT) | FM10K_TXQCTL_VF | vf_idx; - /* assign VID */ + /* assign VLAN ID */ for (i = 0; i < queues_per_pool; i++) fm10k_write_reg(hw, FM10K_TXQCTL(vf_q_idx + i), txqctl); @@ -1035,6 +1047,12 @@ for (i = queues_per_pool; i--;) { fm10k_write_reg(hw, FM10K_TDBAL(vf_q_idx + i), tdbal); fm10k_write_reg(hw, FM10K_TDBAH(vf_q_idx + i), tdbah); + /* See definition of FM10K_TDLEN_ITR_SCALE_SHIFT for an + * explanation of how TDLEN is used. + */ + fm10k_write_reg(hw, FM10K_TDLEN(vf_q_idx + i), + hw->mac.itr_scale << + FM10K_TDLEN_ITR_SCALE_SHIFT); fm10k_write_reg(hw, FM10K_TQMAP(qmap_idx + i), vf_q_idx + i); fm10k_write_reg(hw, FM10K_RQMAP(qmap_idx + i), vf_q_idx + i); } @@ -1155,14 +1173,14 @@ } /** - * fm10k_iov_select_vid - Select correct default VID + * fm10k_iov_select_vid - Select correct default VLAN ID * @hw: Pointer to hardware structure - * @vid: VID to correct + * @vid: VLAN ID to correct * - * Will report an error if VID is out of range. For VID = 0, it will return - * either the pf_vid or sw_vid depending on which one is set. + * Will report an error if the VLAN ID is out of range. For VID = 0, it will + * return either the pf_vid or sw_vid depending on which one is set. */ -static inline s32 fm10k_iov_select_vid(struct fm10k_vf_info *vf_info, u16 vid) +static s32 fm10k_iov_select_vid(struct fm10k_vf_info *vf_info, u16 vid) { if (!vid) return vf_info->pf_vid ? vf_info->pf_vid : vf_info->sw_vid; @@ -1212,11 +1230,11 @@ set = !(vid & FM10K_VLAN_CLEAR); vid &= ~FM10K_VLAN_CLEAR; - err = fm10k_iov_select_vid(vf_info, vid); + err = fm10k_iov_select_vid(vf_info, (u16)vid); if (err < 0) return err; - else - vid = err; + + vid = err; /* update VSI info for VF in regards to VLAN table */ err = hw->mac.ops.update_vlan(hw, vid, vf_info->vsi, set); @@ -1232,7 +1250,7 @@ /* block attempts to set MAC for a locked device */ if (is_valid_ether_addr(vf_info->mac) && - memcmp(mac, vf_info->mac, ETH_ALEN)) + !ether_addr_equal(mac, vf_info->mac)) return FM10K_ERR_PARAM; set = !(vlan & FM10K_VLAN_CLEAR); @@ -1241,8 +1259,8 @@ err = fm10k_iov_select_vid(vf_info, vlan); if (err < 0) return err; - else - vlan = err; + + vlan = (u16)err; /* notify switch of request for new unicast address */ err = hw->mac.ops.update_uc_addr(hw, vf_info->glort, @@ -1267,8 +1285,8 @@ err = fm10k_iov_select_vid(vf_info, vlan); if (err < 0) return err; - else - vlan = err; + + vlan = (u16)err; /* notify switch of request for new multicast address */ err = hw->mac.ops.update_mc_addr(hw, vf_info->glort, @@ -1396,14 +1414,6 @@ return err; } -const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = { - FM10K_TLV_MSG_TEST_HANDLER(fm10k_tlv_msg_test), - FM10K_VF_MSG_MSIX_HANDLER(fm10k_iov_msg_msix_pf), - FM10K_VF_MSG_MAC_VLAN_HANDLER(fm10k_iov_msg_mac_vlan_pf), - FM10K_VF_MSG_LPORT_STATE_HANDLER(fm10k_iov_msg_lport_state_pf), - FM10K_TLV_MSG_ERROR_HANDLER(fm10k_tlv_msg_error), -}; - /** * fm10k_update_stats_hw_pf - Updates hardware related statistics of PF * @hw: pointer to hardware structure @@ -1431,9 +1441,10 @@ xec = fm10k_read_hw_stats_32b(hw, FM10K_STATS_XEC, &stats->xec); vlan_drop = fm10k_read_hw_stats_32b(hw, FM10K_STATS_VLAN_DROP, &stats->vlan_drop); - loopback_drop = fm10k_read_hw_stats_32b(hw, - FM10K_STATS_LOOPBACK_DROP, - &stats->loopback_drop); + loopback_drop = + fm10k_read_hw_stats_32b(hw, + FM10K_STATS_LOOPBACK_DROP, + &stats->loopback_drop); nodesc_drop = fm10k_read_hw_stats_32b(hw, FM10K_STATS_NODESC_DROP, &stats->nodesc_drop); @@ -1678,8 +1689,8 @@ * * This handler configures the default VLAN for the PF **/ -s32 fm10k_msg_update_pvid_pf(struct fm10k_hw *hw, u32 **results, - struct fm10k_mbx_info *mbx) +static s32 fm10k_msg_update_pvid_pf(struct fm10k_hw *hw, u32 **results, + struct fm10k_mbx_info *mbx) { u16 glort, pvid; u32 pvid_update; @@ -1698,7 +1709,7 @@ if (!fm10k_glort_valid_pf(hw, glort)) return FM10K_ERR_PARAM; - /* verify VID is valid */ + /* verify VLAN ID is valid */ if (pvid >= FM10K_VLAN_TABLE_VID_MAX) return FM10K_ERR_PARAM; @@ -1855,39 +1866,39 @@ FM10K_TLV_MSG_ERROR_HANDLER(fm10k_tlv_msg_error), }; -static struct fm10k_mac_ops mac_ops_pf = { - .get_bus_info = &fm10k_get_bus_info_generic, - .reset_hw = &fm10k_reset_hw_pf, - .init_hw = &fm10k_init_hw_pf, - .start_hw = &fm10k_start_hw_generic, - .stop_hw = &fm10k_stop_hw_generic, - .update_vlan = &fm10k_update_vlan_pf, - .read_mac_addr = &fm10k_read_mac_addr_pf, - .update_uc_addr = &fm10k_update_uc_addr_pf, - .update_mc_addr = &fm10k_update_mc_addr_pf, - .update_xcast_mode = &fm10k_update_xcast_mode_pf, - .update_int_moderator = &fm10k_update_int_moderator_pf, - .update_lport_state = &fm10k_update_lport_state_pf, - .update_hw_stats = &fm10k_update_hw_stats_pf, - .rebind_hw_stats = &fm10k_rebind_hw_stats_pf, - .configure_dglort_map = &fm10k_configure_dglort_map_pf, - .set_dma_mask = &fm10k_set_dma_mask_pf, - .get_fault = &fm10k_get_fault_pf, - .get_host_state = &fm10k_get_host_state_pf, - .adjust_systime = &fm10k_adjust_systime_pf, - .read_systime = &fm10k_read_systime_pf, +static const struct fm10k_mac_ops mac_ops_pf = { + .get_bus_info = fm10k_get_bus_info_generic, + .reset_hw = fm10k_reset_hw_pf, + .init_hw = fm10k_init_hw_pf, + .start_hw = fm10k_start_hw_generic, + .stop_hw = fm10k_stop_hw_generic, + .update_vlan = fm10k_update_vlan_pf, + .read_mac_addr = fm10k_read_mac_addr_pf, + .update_uc_addr = fm10k_update_uc_addr_pf, + .update_mc_addr = fm10k_update_mc_addr_pf, + .update_xcast_mode = fm10k_update_xcast_mode_pf, + .update_int_moderator = fm10k_update_int_moderator_pf, + .update_lport_state = fm10k_update_lport_state_pf, + .update_hw_stats = fm10k_update_hw_stats_pf, + .rebind_hw_stats = fm10k_rebind_hw_stats_pf, + .configure_dglort_map = fm10k_configure_dglort_map_pf, + .set_dma_mask = fm10k_set_dma_mask_pf, + .get_fault = fm10k_get_fault_pf, + .get_host_state = fm10k_get_host_state_pf, + .adjust_systime = fm10k_adjust_systime_pf, + .read_systime = fm10k_read_systime_pf, }; -static struct fm10k_iov_ops iov_ops_pf = { - .assign_resources = &fm10k_iov_assign_resources_pf, - .configure_tc = &fm10k_iov_configure_tc_pf, - .assign_int_moderator = &fm10k_iov_assign_int_moderator_pf, +static const struct fm10k_iov_ops iov_ops_pf = { + .assign_resources = fm10k_iov_assign_resources_pf, + .configure_tc = fm10k_iov_configure_tc_pf, + .assign_int_moderator = fm10k_iov_assign_int_moderator_pf, .assign_default_mac_vlan = fm10k_iov_assign_default_mac_vlan_pf, - .reset_resources = &fm10k_iov_reset_resources_pf, - .set_lport = &fm10k_iov_set_lport_pf, - .reset_lport = &fm10k_iov_reset_lport_pf, - .update_stats = &fm10k_iov_update_stats_pf, - .report_timestamp = &fm10k_iov_report_timestamp_pf, + .reset_resources = fm10k_iov_reset_resources_pf, + .set_lport = fm10k_iov_set_lport_pf, + .reset_lport = fm10k_iov_reset_lport_pf, + .update_stats = fm10k_iov_update_stats_pf, + .report_timestamp = fm10k_iov_report_timestamp_pf, }; static s32 fm10k_get_invariants_pf(struct fm10k_hw *hw) @@ -1897,9 +1908,9 @@ return fm10k_sm_mbx_init(hw, &hw->mbx, fm10k_msg_data_pf); } -struct fm10k_info fm10k_pf_info = { +const struct fm10k_info fm10k_pf_info = { .mac = fm10k_mac_pf, - .get_invariants = &fm10k_get_invariants_pf, + .get_invariants = fm10k_get_invariants_pf, .mac_ops = &mac_ops_pf, .iov_ops = &iov_ops_pf, }; --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_pf.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_pf.h @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -74,6 +74,11 @@ #define FM10K_MSG_UPDATE_PVID_PVID_SHIFT 16 #define FM10K_MSG_UPDATE_PVID_PVID_SIZE 16 +/* The following data structures are overlayed directly onto TLV mailbox + * messages, and must not break 4 byte alignment. Ensure the structures line + * up correctly as per their TLV definition. + */ + struct fm10k_mac_update { __le32 mac_lower; __le16 mac_upper; @@ -81,34 +86,32 @@ __le16 glort; u8 flags; u8 action; -} __packed; +} __aligned(4) __packed; struct fm10k_global_table_data { __le32 used; __le32 avail; -} __packed; +} __aligned(4) __packed; struct fm10k_swapi_error { __le32 status; struct fm10k_global_table_data mac; struct fm10k_global_table_data nexthop; struct fm10k_global_table_data ffu; -} __packed; +} __aligned(4) __packed; struct fm10k_swapi_1588_timestamp { __le64 egress; __le64 ingress; __le16 dglort; __le16 sglort; -} __packed; +} __aligned(4) __packed; s32 fm10k_msg_lport_map_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *); extern const struct fm10k_tlv_attr fm10k_lport_map_msg_attr[]; #define FM10K_PF_MSG_LPORT_MAP_HANDLER(func) \ FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_LPORT_MAP, \ fm10k_lport_map_msg_attr, func) -s32 fm10k_msg_update_pvid_pf(struct fm10k_hw *, u32 **, - struct fm10k_mbx_info *); extern const struct fm10k_tlv_attr fm10k_update_pvid_msg_attr[]; #define FM10K_PF_MSG_UPDATE_PVID_HANDLER(func) \ FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_UPDATE_PVID, \ @@ -129,7 +132,6 @@ struct fm10k_mbx_info *); s32 fm10k_iov_msg_lport_state_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *); -extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[]; -extern struct fm10k_info fm10k_pf_info; +extern const struct fm10k_info fm10k_pf_info; #endif /* _FM10K_PF_H */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_tlv.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_tlv.c @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -48,8 +48,8 @@ * the attribute buffer. It will return success if provided with a valid * pointers. **/ -s32 fm10k_tlv_attr_put_null_string(u32 *msg, u16 attr_id, - const unsigned char *string) +static s32 fm10k_tlv_attr_put_null_string(u32 *msg, u16 attr_id, + const unsigned char *string) { u32 attr_data = 0, len = 0; u32 *attr; @@ -98,7 +98,7 @@ * it in the array pointed by by string. It will return success if provided * with a valid pointers. **/ -s32 fm10k_tlv_attr_get_null_string(u32 *attr, unsigned char *string) +static s32 fm10k_tlv_attr_get_null_string(u32 *attr, unsigned char *string) { u32 len; @@ -353,7 +353,7 @@ * function will return NULL on failure, and a pointer to the start * of the nested attributes on success. **/ -u32 *fm10k_tlv_attr_nest_start(u32 *msg, u16 attr_id) +static u32 *fm10k_tlv_attr_nest_start(u32 *msg, u16 attr_id) { u32 *attr; @@ -370,7 +370,7 @@ } /** - * fm10k_tlv_attr_nest_start - Start a set of nested attributes + * fm10k_tlv_attr_nest_stop - Stop a set of nested attributes * @msg: Pointer to message block * * This function closes off an existing set of nested attributes. The @@ -378,7 +378,7 @@ * the case of a nest within the nest this would be the outer nest pointer. * This function will return success provided all pointers are valid. **/ -s32 fm10k_tlv_attr_nest_stop(u32 *msg) +static s32 fm10k_tlv_attr_nest_stop(u32 *msg) { u32 *attr; u32 len; @@ -483,8 +483,8 @@ * FM10K_NOT_IMPLEMENTED for any attribute that is outside of the array * and 0 on success. **/ -s32 fm10k_tlv_attr_parse(u32 *attr, u32 **results, - const struct fm10k_tlv_attr *tlv_attr) +static s32 fm10k_tlv_attr_parse(u32 *attr, u32 **results, + const struct fm10k_tlv_attr *tlv_attr) { u32 i, attr_id, offset = 0; s32 err = 0; @@ -755,7 +755,7 @@ err = fm10k_tlv_attr_get_mac_vlan( results[FM10K_TEST_MSG_MAC_ADDR], result_mac, &result_vlan); - if (!err && memcmp(test_mac, result_mac, ETH_ALEN)) + if (!err && !ether_addr_equal(test_mac, result_mac)) err = FM10K_ERR_INVALID_VALUE; if (!err && test_vlan != result_vlan) err = FM10K_ERR_INVALID_VALUE; --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_tlv.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_tlv.h @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -38,9 +38,9 @@ * mailbox size we will provide a message with the above header and it * will be segmented and transported to the mailbox to the other side where * it is reassembled. It contains the following fields: - * Len: Length of the message in bytes excluding the message header + * Length: Length of the message in bytes excluding the message header * Flags: TBD - * Rule: These will be the message/argument types we pass + * Type/ID: These will be the message/argument types we pass */ /* message data header */ #define FM10K_TLV_ID_SHIFT 0 @@ -106,8 +106,6 @@ #define FM10K_MSG_HANDLER(id, attr, func) { id, attr, func } s32 fm10k_tlv_msg_init(u32 *, u16); -s32 fm10k_tlv_attr_put_null_string(u32 *, u16, const unsigned char *); -s32 fm10k_tlv_attr_get_null_string(u32 *, unsigned char *); s32 fm10k_tlv_attr_put_mac_vlan(u32 *, u16, const u8 *, u16); s32 fm10k_tlv_attr_get_mac_vlan(u32 *, u8 *, u16 *); s32 fm10k_tlv_attr_put_bool(u32 *, u16); @@ -147,9 +145,6 @@ fm10k_tlv_attr_get_value(attr, ptr, sizeof(s64)) s32 fm10k_tlv_attr_put_le_struct(u32 *, u16, const void *, u32); s32 fm10k_tlv_attr_get_le_struct(u32 *, void *, u32); -u32 *fm10k_tlv_attr_nest_start(u32 *, u16); -s32 fm10k_tlv_attr_nest_stop(u32 *); -s32 fm10k_tlv_attr_parse(u32 *, u32 **, const struct fm10k_tlv_attr *); s32 fm10k_tlv_msg_parse(struct fm10k_hw *, u32 *, struct fm10k_mbx_info *, const struct fm10k_msg_data *); s32 fm10k_tlv_msg_error(struct fm10k_hw *hw, u32 **results, --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_type.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_type.h @@ -1,5 +1,5 @@ /* Intel Ethernet Switch Host Interface Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -77,6 +77,7 @@ #define FM10K_PCIE_SRIOV_CTRL_VFARI 0x10 #define FM10K_ERR_PARAM -2 +#define FM10K_ERR_NO_RESOURCES -3 #define FM10K_ERR_REQUESTS_PENDING -4 #define FM10K_ERR_RESET_REQUESTED -5 #define FM10K_ERR_DMA_PENDING -6 @@ -271,6 +272,20 @@ #define FM10K_TDBAL(_n) ((0x40 * (_n)) + 0x8000) #define FM10K_TDBAH(_n) ((0x40 * (_n)) + 0x8001) #define FM10K_TDLEN(_n) ((0x40 * (_n)) + 0x8002) +/* When fist initialized, VFs need to know the Interrupt Throttle Rate (ITR) + * scale which is based on the PCIe speed but the speed information in the PCI + * configuration space may not be accurate. The PF already knows the ITR scale + * but there is no defined method to pass that information from the PF to the + * VF. This is accomplished during VF initialization by temporarily co-opting + * the yet-to-be-used TDLEN register to have the PF store the ITR shift for + * the VF to retrieve before the VF needs to use the TDLEN register for its + * intended purpose, i.e. before the Tx resources are allocated. + */ +#define FM10K_TDLEN_ITR_SCALE_SHIFT 9 +#define FM10K_TDLEN_ITR_SCALE_MASK 0x00000E00 +#define FM10K_TDLEN_ITR_SCALE_GEN1 2 +#define FM10K_TDLEN_ITR_SCALE_GEN2 1 +#define FM10K_TDLEN_ITR_SCALE_GEN3 0 #define FM10K_TPH_TXCTRL(_n) ((0x40 * (_n)) + 0x8003) #define FM10K_TPH_TXCTRL_DESC_TPHEN 0x00000020 #define FM10K_TPH_TXCTRL_DESC_RROEN 0x00000200 @@ -339,7 +354,7 @@ #define FM10K_VLAN_TABLE_VID_MAX 4096 #define FM10K_VLAN_TABLE_VSI_MAX 64 #define FM10K_VLAN_LENGTH_SHIFT 16 -#define FM10K_VLAN_CLEAR (1 << 15) +#define FM10K_VLAN_CLEAR BIT(15) #define FM10K_VLAN_ALL \ ((FM10K_VLAN_TABLE_VID_MAX - 1) << FM10K_VLAN_LENGTH_SHIFT) @@ -373,13 +388,13 @@ #define FM10K_SW_SYSTIME_PULSE(_n) ((_n) + 0x02252) enum fm10k_int_source { - fm10k_int_Mailbox = 0, - fm10k_int_PCIeFault = 1, - fm10k_int_SwitchUpDown = 2, - fm10k_int_SwitchEvent = 3, - fm10k_int_SRAM = 4, - fm10k_int_VFLR = 5, - fm10k_int_MaxHoldTime = 6, + fm10k_int_mailbox = 0, + fm10k_int_pcie_fault = 1, + fm10k_int_switch_up_down = 2, + fm10k_int_switch_event = 3, + fm10k_int_sram = 4, + fm10k_int_vflr = 5, + fm10k_int_max_hold_time = 6, fm10k_int_sources_max_pf }; @@ -535,7 +550,6 @@ struct fm10k_dglort_cfg *); void (*set_dma_mask)(struct fm10k_hw *, u64); s32 (*get_fault)(struct fm10k_hw *, int, struct fm10k_fault *); - void (*request_lport_map)(struct fm10k_hw *); s32 (*adjust_systime)(struct fm10k_hw *, s32 ppb); u64 (*read_systime)(struct fm10k_hw *); }; @@ -559,6 +573,7 @@ bool get_host_state; bool tx_ready; u32 dglort_map; + u8 itr_scale; }; struct fm10k_swapi_table_info { @@ -644,10 +659,10 @@ }; struct fm10k_info { - enum fm10k_mac_type mac; - s32 (*get_invariants)(struct fm10k_hw *); - struct fm10k_mac_ops *mac_ops; - struct fm10k_iov_ops *iov_ops; + enum fm10k_mac_type mac; + s32 (*get_invariants)(struct fm10k_hw *); + const struct fm10k_mac_ops *mac_ops; + const struct fm10k_iov_ops *iov_ops; }; struct fm10k_hw { --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_vf.c +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_vf.c @@ -28,7 +28,7 @@ static s32 fm10k_stop_hw_vf(struct fm10k_hw *hw) { u8 *perm_addr = hw->mac.perm_addr; - u32 bal = 0, bah = 0; + u32 bal = 0, bah = 0, tdlen; s32 err; u16 i; @@ -48,6 +48,9 @@ ((u32)perm_addr[2]); } + /* restore default itr_scale for next VF initialization */ + tdlen = hw->mac.itr_scale << FM10K_TDLEN_ITR_SCALE_SHIFT; + /* The queues have already been disabled so we just need to * update their base address registers */ @@ -56,6 +59,12 @@ fm10k_write_reg(hw, FM10K_TDBAH(i), bah); fm10k_write_reg(hw, FM10K_RDBAL(i), bal); fm10k_write_reg(hw, FM10K_RDBAH(i), bah); + /* Restore ITR scale in software-defined mechanism in TDLEN + * for next VF initialization. See definition of + * FM10K_TDLEN_ITR_SCALE_SHIFT for more details on the use of + * TDLEN here. + */ + fm10k_write_reg(hw, FM10K_TDLEN(i), tdlen); } return 0; @@ -103,7 +112,14 @@ s32 err; u16 i; - /* assume we always have at least 1 queue */ + /* verify we have at least 1 queue */ + if (!~fm10k_read_reg(hw, FM10K_TXQCTL(0)) || + !~fm10k_read_reg(hw, FM10K_RXQCTL(0))) { + err = FM10K_ERR_NO_RESOURCES; + goto reset_max_queues; + } + + /* determine how many queues we have */ for (i = 1; tqdloc0 && (i < FM10K_MAX_QUEUES_POOL); i++) { /* verify the Descriptor cache offsets are increasing */ tqdloc = ~fm10k_read_reg(hw, FM10K_TQDLOC(i)); @@ -119,16 +135,28 @@ /* shut down queues we own and reset DMA configuration */ err = fm10k_disable_queues_generic(hw, i); if (err) - return err; + goto reset_max_queues; /* record maximum queue count */ hw->mac.max_queues = i; - /* fetch default VLAN */ + /* fetch default VLAN and ITR scale */ hw->mac.default_vid = (fm10k_read_reg(hw, FM10K_TXQCTL(0)) & FM10K_TXQCTL_VID_MASK) >> FM10K_TXQCTL_VID_SHIFT; + /* Read the ITR scale from TDLEN. See the definition of + * FM10K_TDLEN_ITR_SCALE_SHIFT for more information about how TDLEN is + * used here. + */ + hw->mac.itr_scale = (fm10k_read_reg(hw, FM10K_TDLEN(0)) & + FM10K_TDLEN_ITR_SCALE_MASK) >> + FM10K_TDLEN_ITR_SCALE_SHIFT; return 0; + +reset_max_queues: + hw->mac.max_queues = 0; + + return err; } /* This structure defines the attibutes to be parsed below */ @@ -270,7 +298,7 @@ /* verify we are not locked down on the MAC address */ if (is_valid_ether_addr(hw->mac.perm_addr) && - memcmp(hw->mac.perm_addr, mac, ETH_ALEN)) + !ether_addr_equal(hw->mac.perm_addr, mac)) return FM10K_ERR_PARAM; /* add bit to notify us if this is a set or clear operation */ @@ -414,6 +442,7 @@ if (mode > FM10K_XCAST_MODE_NONE) return FM10K_ERR_PARAM; + /* generate message requesting to change xcast mode */ fm10k_tlv_msg_init(msg, FM10K_VF_MSG_ID_LPORT_STATE); fm10k_tlv_attr_put_u8(msg, FM10K_LPORT_STATE_MSG_XCAST_MODE, mode); @@ -533,25 +562,25 @@ FM10K_TLV_MSG_ERROR_HANDLER(fm10k_tlv_msg_error), }; -static struct fm10k_mac_ops mac_ops_vf = { - .get_bus_info = &fm10k_get_bus_info_generic, - .reset_hw = &fm10k_reset_hw_vf, - .init_hw = &fm10k_init_hw_vf, - .start_hw = &fm10k_start_hw_generic, - .stop_hw = &fm10k_stop_hw_vf, - .update_vlan = &fm10k_update_vlan_vf, - .read_mac_addr = &fm10k_read_mac_addr_vf, - .update_uc_addr = &fm10k_update_uc_addr_vf, - .update_mc_addr = &fm10k_update_mc_addr_vf, - .update_xcast_mode = &fm10k_update_xcast_mode_vf, - .update_int_moderator = &fm10k_update_int_moderator_vf, - .update_lport_state = &fm10k_update_lport_state_vf, - .update_hw_stats = &fm10k_update_hw_stats_vf, - .rebind_hw_stats = &fm10k_rebind_hw_stats_vf, - .configure_dglort_map = &fm10k_configure_dglort_map_vf, - .get_host_state = &fm10k_get_host_state_generic, - .adjust_systime = &fm10k_adjust_systime_vf, - .read_systime = &fm10k_read_systime_vf, +static const struct fm10k_mac_ops mac_ops_vf = { + .get_bus_info = fm10k_get_bus_info_generic, + .reset_hw = fm10k_reset_hw_vf, + .init_hw = fm10k_init_hw_vf, + .start_hw = fm10k_start_hw_generic, + .stop_hw = fm10k_stop_hw_vf, + .update_vlan = fm10k_update_vlan_vf, + .read_mac_addr = fm10k_read_mac_addr_vf, + .update_uc_addr = fm10k_update_uc_addr_vf, + .update_mc_addr = fm10k_update_mc_addr_vf, + .update_xcast_mode = fm10k_update_xcast_mode_vf, + .update_int_moderator = fm10k_update_int_moderator_vf, + .update_lport_state = fm10k_update_lport_state_vf, + .update_hw_stats = fm10k_update_hw_stats_vf, + .rebind_hw_stats = fm10k_rebind_hw_stats_vf, + .configure_dglort_map = fm10k_configure_dglort_map_vf, + .get_host_state = fm10k_get_host_state_generic, + .adjust_systime = fm10k_adjust_systime_vf, + .read_systime = fm10k_read_systime_vf, }; static s32 fm10k_get_invariants_vf(struct fm10k_hw *hw) @@ -561,8 +590,8 @@ return fm10k_pfvf_mbx_init(hw, &hw->mbx, fm10k_msg_data_vf, 0); } -struct fm10k_info fm10k_vf_info = { +const struct fm10k_info fm10k_vf_info = { .mac = fm10k_mac_vf, - .get_invariants = &fm10k_get_invariants_vf, + .get_invariants = fm10k_get_invariants_vf, .mac_ops = &mac_ops_vf, }; --- linux-4.4.0.orig/drivers/net/ethernet/intel/fm10k/fm10k_vf.h +++ linux-4.4.0/drivers/net/ethernet/intel/fm10k/fm10k_vf.h @@ -74,5 +74,5 @@ #define FM10K_VF_MSG_1588_HANDLER(func) \ FM10K_MSG_HANDLER(FM10K_VF_MSG_ID_1588, fm10k_1588_msg_attr, func) -extern struct fm10k_info fm10k_vf_info; +extern const struct fm10k_info fm10k_vf_info; #endif /* _FM10K_VF_H */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e.h @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -104,6 +103,7 @@ #define I40E_PRIV_FLAGS_LINKPOLL_FLAG BIT(1) #define I40E_PRIV_FLAGS_FD_ATR BIT(2) #define I40E_PRIV_FLAGS_VEB_STATS BIT(3) +#define I40E_PRIV_FLAGS_PS BIT(4) #define I40E_NVM_VERSION_LO_SHIFT 0 #define I40E_NVM_VERSION_LO_MASK (0xff << I40E_NVM_VERSION_LO_SHIFT) @@ -187,6 +187,7 @@ #define I40E_FDIR_BUFFER_HEAD_ROOM_FOR_ATR (I40E_FDIR_BUFFER_HEAD_ROOM * 4) #define I40E_HKEY_ARRAY_SIZE ((I40E_PFQF_HKEY_MAX_INDEX + 1) * 4) +#define I40E_HLUT_ARRAY_SIZE ((I40E_PFQF_HLUT_MAX_INDEX + 1) * 4) enum i40e_fd_stat_idx { I40E_FD_STAT_ATR, @@ -244,6 +245,11 @@ struct i40e_tc_info tc_info[I40E_MAX_TRAFFIC_CLASS]; }; +struct i40e_udp_port_config { + __be16 index; + u8 type; +}; + /* struct that defines the Ethernet device */ struct i40e_pf { struct pci_dev *pdev; @@ -265,7 +271,7 @@ u16 num_lan_qps; /* num lan queues this PF has set up */ u16 num_lan_msix; /* num queue vectors for the base PF vsi */ int queues_left; /* queues left unclaimed */ - u16 rss_size; /* num queues in the RSS array */ + u16 alloc_rss_size; /* allocated RSS queues */ u16 rss_size_max; /* HW defined max RSS queues */ u16 fdir_pf_filter_count; /* num of guaranteed filters for this PF */ u16 num_alloc_vsi; /* num VSIs this driver supports */ @@ -280,11 +286,9 @@ u32 fd_atr_cnt; u32 fd_tcp_rule; -#ifdef CONFIG_I40E_VXLAN - __be16 vxlan_ports[I40E_MAX_PF_UDP_OFFLOAD_PORTS]; - u16 pending_vxlan_bitmap; + struct i40e_udp_port_config udp_ports[I40E_MAX_PF_UDP_OFFLOAD_PORTS]; + u16 pending_udp_bitmap; -#endif enum i40e_interrupt_policy int_policy; u16 rx_itr_default; u16 tx_itr_default; @@ -321,9 +325,7 @@ #define I40E_FLAG_FD_ATR_ENABLED BIT_ULL(22) #define I40E_FLAG_PTP BIT_ULL(25) #define I40E_FLAG_MFP_ENABLED BIT_ULL(26) -#ifdef CONFIG_I40E_VXLAN -#define I40E_FLAG_VXLAN_FILTER_SYNC BIT_ULL(27) -#endif +#define I40E_FLAG_UDP_FILTER_SYNC BIT_ULL(27) #define I40E_FLAG_PORT_ID_VALID BIT_ULL(28) #define I40E_FLAG_DCB_CAPABLE BIT_ULL(29) #define I40E_FLAG_RSS_AQ_CAPABLE BIT_ULL(31) @@ -335,7 +337,9 @@ #define I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE BIT_ULL(38) #define I40E_FLAG_LINK_POLLING_ENABLED BIT_ULL(39) #define I40E_FLAG_VEB_MODE_ENABLED BIT_ULL(40) +#define I40E_FLAG_GENEVE_OFFLOAD_CAPABLE BIT_ULL(41) #define I40E_FLAG_NO_PCI_LINK_CHECK BIT_ULL(42) +#define I40E_FLAG_PF_MAC BIT_ULL(50) /* tracks features that get auto disabled by errors */ u64 auto_disable_flags; @@ -412,7 +416,7 @@ u32 rx_hwtstamp_cleared; bool ptp_tx; bool ptp_rx; - u16 rss_table_size; + u16 rss_table_size; /* HW RSS table size */ /* These are only valid in NPAR modes */ u32 npar_max_bw; u32 npar_min_bw; @@ -487,6 +491,7 @@ u32 tx_restart; u32 tx_busy; u64 tx_linearize; + u64 tx_force_wb; u32 rx_buf_failed; u32 rx_page_failed; @@ -504,8 +509,10 @@ u16 tx_itr_setting; u16 int_rate_limit; /* value in usecs */ - u16 rss_table_size; - u16 rss_size; + u16 rss_table_size; /* HW RSS table size */ + u16 rss_size; /* Allocated RSS queues */ + u8 *rss_hkey_user; /* User configured hash keys */ + u8 *rss_lut_user; /* User configured lookup table entries */ u16 max_frame; u16 rx_hdr_len; @@ -575,6 +582,9 @@ u8 num_ringpairs; /* total number of ring pairs in vector */ +#define I40E_Q_VECTOR_HUNG_DETECT 0 /* Bit Index for hung detection logic */ + unsigned long hung_detected; /* Set/Reset for hung_detection logic */ + cpumask_t affinity_mask; struct rcu_head rcu; /* to avoid race with update stats on free */ char name[I40E_INT_NAME_STR_LEN]; @@ -602,8 +612,8 @@ full_ver = hw->nvm.oem_ver; ver = (u8)(full_ver >> I40E_OEM_VER_SHIFT); - build = (u16)((full_ver >> I40E_OEM_VER_BUILD_SHIFT) - & I40E_OEM_VER_BUILD_MASK); + build = (u16)((full_ver >> I40E_OEM_VER_BUILD_SHIFT) & + I40E_OEM_VER_BUILD_MASK); patch = (u8)(full_ver & I40E_OEM_VER_PATCH_MASK); snprintf(buf, sizeof(buf), @@ -668,6 +678,8 @@ extern const char i40e_driver_version_str[]; void i40e_do_reset_safe(struct i40e_pf *pf, u32 reset_flags); void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags); +int i40e_config_rss(struct i40e_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size); +int i40e_get_rss(struct i40e_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size); struct i40e_vsi *i40e_find_vsi_from_id(struct i40e_pf *pf, u16 id); void i40e_update_stats(struct i40e_vsi *vsi); void i40e_update_eth_stats(struct i40e_vsi *vsi); @@ -691,7 +703,7 @@ bool is_vf, bool is_netdev); void i40e_del_filter(struct i40e_vsi *vsi, u8 *macaddr, s16 vlan, bool is_vf, bool is_netdev); -int i40e_sync_vsi_filters(struct i40e_vsi *vsi, bool grab_rtnl); +int i40e_sync_vsi_filters(struct i40e_vsi *vsi); struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type, u16 uplink, u32 param1); int i40e_vsi_release(struct i40e_vsi *vsi); @@ -709,7 +721,7 @@ void i40e_veb_release(struct i40e_veb *veb); int i40e_veb_config_tc(struct i40e_veb *veb, u8 enabled_tc); -i40e_status i40e_vsi_add_pvid(struct i40e_vsi *vsi, u16 vid); +int i40e_vsi_add_pvid(struct i40e_vsi *vsi, u16 vid); void i40e_vsi_remove_pvid(struct i40e_vsi *vsi); void i40e_vsi_reset_stats(struct i40e_vsi *vsi); void i40e_pf_reset_stats(struct i40e_pf *pf); @@ -767,6 +779,8 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid); struct i40e_mac_filter *i40e_put_mac_in_vlan(struct i40e_vsi *vsi, u8 *macaddr, bool is_vf, bool is_netdev); +int i40e_del_mac_all_vlan(struct i40e_vsi *vsi, u8 *macaddr, + bool is_vf, bool is_netdev); bool i40e_is_vsi_in_vlan(struct i40e_vsi *vsi); struct i40e_mac_filter *i40e_find_mac(struct i40e_vsi *vsi, u8 *macaddr, bool is_vf, bool is_netdev); --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h @@ -227,6 +227,7 @@ i40e_aqc_opc_nvm_update = 0x0703, i40e_aqc_opc_nvm_config_read = 0x0704, i40e_aqc_opc_nvm_config_write = 0x0705, + i40e_aqc_opc_oem_post_update = 0x0720, /* virtualization commands */ i40e_aqc_opc_send_msg_to_pf = 0x0801, @@ -1891,6 +1892,26 @@ I40E_CHECK_STRUCT_LEN(0xc, i40e_aqc_nvm_config_data_immediate_field); +/* OEM Post Update (indirect 0x0720) + * no command data struct used + */ +struct i40e_aqc_nvm_oem_post_update { +#define I40E_AQ_NVM_OEM_POST_UPDATE_EXTERNAL_DATA 0x01 + u8 sel_data; + u8 reserved[7]; +}; + +I40E_CHECK_STRUCT_LEN(0x8, i40e_aqc_nvm_oem_post_update); + +struct i40e_aqc_nvm_oem_post_update_buffer { + u8 str_len; + u8 dev_addr; + __le16 eeprom_addr; + u8 data[36]; +}; + +I40E_CHECK_STRUCT_LEN(0x28, i40e_aqc_nvm_oem_post_update_buffer); + /* Send to PF command (indirect 0x0801) id is only used by PF * Send to VF command (indirect 0x0802) id is only used by PF * Send to Peer PF command (indirect 0x0803) @@ -2403,4 +2424,4 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_modify_internals); -#endif +#endif /* _I40E_ADMINQ_CMD_H_ */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_common.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -44,7 +44,6 @@ switch (hw->device_id) { case I40E_DEV_ID_SFP_XL710: case I40E_DEV_ID_QEMU: - case I40E_DEV_ID_KX_A: case I40E_DEV_ID_KX_B: case I40E_DEV_ID_KX_C: case I40E_DEV_ID_QSFP_A: --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_debugfs.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_debugfs.c @@ -103,8 +103,8 @@ len = min_t(int, count, (i40e_dbg_dump_data_len - *ppos)); bytes_not_copied = copy_to_user(buffer, &i40e_dbg_dump_buf[*ppos], len); - if (bytes_not_copied < 0) - return bytes_not_copied; + if (bytes_not_copied) + return -EFAULT; *ppos += len; return len; @@ -353,8 +353,8 @@ bytes_not_copied = copy_to_user(buffer, buf, len); kfree(buf); - if (bytes_not_copied < 0) - return bytes_not_copied; + if (bytes_not_copied) + return -EFAULT; *ppos = len; return len; @@ -981,12 +981,10 @@ if (!cmd_buf) return count; bytes_not_copied = copy_from_user(cmd_buf, buffer, count); - if (bytes_not_copied < 0) { + if (bytes_not_copied) { kfree(cmd_buf); - return bytes_not_copied; + return -EFAULT; } - if (bytes_not_copied > 0) - count -= bytes_not_copied; cmd_buf[count] = '\0'; cmd_buf_tmp = strchr(cmd_buf, '\n'); @@ -1140,7 +1138,7 @@ spin_lock_bh(&vsi->mac_filter_list_lock); f = i40e_add_filter(vsi, ma, vlan, false, false); spin_unlock_bh(&vsi->mac_filter_list_lock); - ret = i40e_sync_vsi_filters(vsi, true); + ret = i40e_sync_vsi_filters(vsi); if (f && !ret) dev_info(&pf->pdev->dev, "add macaddr: %pM vlan=%d added to VSI %d\n", @@ -1179,7 +1177,7 @@ spin_lock_bh(&vsi->mac_filter_list_lock); i40e_del_filter(vsi, ma, vlan, false, false); spin_unlock_bh(&vsi->mac_filter_list_lock); - ret = i40e_sync_vsi_filters(vsi, true); + ret = i40e_sync_vsi_filters(vsi); if (!ret) dev_info(&pf->pdev->dev, "del macaddr: %pM vlan=%d removed from VSI %d\n", @@ -2034,8 +2032,8 @@ bytes_not_copied = copy_to_user(buffer, buf, len); kfree(buf); - if (bytes_not_copied < 0) - return bytes_not_copied; + if (bytes_not_copied) + return -EFAULT; *ppos = len; return len; @@ -2068,10 +2066,8 @@ memset(i40e_dbg_netdev_ops_buf, 0, sizeof(i40e_dbg_netdev_ops_buf)); bytes_not_copied = copy_from_user(i40e_dbg_netdev_ops_buf, buffer, count); - if (bytes_not_copied < 0) - return bytes_not_copied; - else if (bytes_not_copied > 0) - count -= bytes_not_copied; + if (bytes_not_copied) + return -EFAULT; i40e_dbg_netdev_ops_buf[count] = '\0'; buf_tmp = strchr(i40e_dbg_netdev_ops_buf, '\n'); --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_devids.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_devids.h @@ -30,7 +30,6 @@ /* Device IDs */ #define I40E_DEV_ID_SFP_XL710 0x1572 #define I40E_DEV_ID_QEMU 0x1574 -#define I40E_DEV_ID_KX_A 0x157F #define I40E_DEV_ID_KX_B 0x1580 #define I40E_DEV_ID_KX_C 0x1581 #define I40E_DEV_ID_QSFP_A 0x1583 --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -88,6 +88,7 @@ I40E_VSI_STAT("tx_broadcast", eth_stats.tx_broadcast), I40E_VSI_STAT("rx_unknown_protocol", eth_stats.rx_unknown_protocol), I40E_VSI_STAT("tx_linearize", tx_linearize), + I40E_VSI_STAT("tx_force_wb", tx_force_wb), }; /* These PF_STATs might look like duplicates of some NETDEV_STATs, @@ -230,6 +231,7 @@ "LinkPolling", "flow-director-atr", "veb-stats", + "packet-split", }; #define I40E_PRIV_FLAGS_STR_LEN ARRAY_SIZE(i40e_priv_flags_strings) @@ -2110,7 +2112,7 @@ switch (cmd->cmd) { case ETHTOOL_GRXRINGS: - cmd->data = vsi->alloc_queue_pairs; + cmd->data = vsi->num_queue_pairs; ret = 0; break; case ETHTOOL_GRXFH: @@ -2583,7 +2585,6 @@ return -EINVAL; } -#define I40E_HLUT_ARRAY_SIZE ((I40E_PFQF_HLUT_MAX_INDEX + 1) * 4) /** * i40e_get_rxfh_key_size - get the RSS hash key size * @netdev: network interface device structure @@ -2611,10 +2612,9 @@ { struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_vsi *vsi = np->vsi; - struct i40e_pf *pf = vsi->back; - struct i40e_hw *hw = &pf->hw; - u32 reg_val; - int i, j; + u8 *lut, *seed = NULL; + int ret; + u16 i; if (hfunc) *hfunc = ETH_RSS_HASH_TOP; @@ -2622,24 +2622,20 @@ if (!indir) return 0; - for (i = 0, j = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) { - reg_val = rd32(hw, I40E_PFQF_HLUT(i)); - indir[j++] = reg_val & 0xff; - indir[j++] = (reg_val >> 8) & 0xff; - indir[j++] = (reg_val >> 16) & 0xff; - indir[j++] = (reg_val >> 24) & 0xff; - } + seed = key; + lut = kzalloc(I40E_HLUT_ARRAY_SIZE, GFP_KERNEL); + if (!lut) + return -ENOMEM; + ret = i40e_get_rss(vsi, seed, lut, I40E_HLUT_ARRAY_SIZE); + if (ret) + goto out; + for (i = 0; i < I40E_HLUT_ARRAY_SIZE; i++) + indir[i] = (u32)(lut[i]); - if (key) { - for (i = 0, j = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) { - reg_val = rd32(hw, I40E_PFQF_HKEY(i)); - key[j++] = (u8)(reg_val & 0xff); - key[j++] = (u8)((reg_val >> 8) & 0xff); - key[j++] = (u8)((reg_val >> 16) & 0xff); - key[j++] = (u8)((reg_val >> 24) & 0xff); - } - } - return 0; +out: + kfree(lut); + + return ret; } /** @@ -2656,10 +2652,8 @@ { struct i40e_netdev_priv *np = netdev_priv(netdev); struct i40e_vsi *vsi = np->vsi; - struct i40e_pf *pf = vsi->back; - struct i40e_hw *hw = &pf->hw; - u32 reg_val; - int i, j; + u8 *seed = NULL; + u16 i; if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP) return -EOPNOTSUPP; @@ -2667,24 +2661,28 @@ if (!indir) return 0; - for (i = 0, j = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) { - reg_val = indir[j++]; - reg_val |= indir[j++] << 8; - reg_val |= indir[j++] << 16; - reg_val |= indir[j++] << 24; - wr32(hw, I40E_PFQF_HLUT(i), reg_val); - } - if (key) { - for (i = 0, j = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) { - reg_val = key[j++]; - reg_val |= key[j++] << 8; - reg_val |= key[j++] << 16; - reg_val |= key[j++] << 24; - wr32(hw, I40E_PFQF_HKEY(i), reg_val); - } - } - return 0; + if (!vsi->rss_hkey_user) { + vsi->rss_hkey_user = kzalloc(I40E_HKEY_ARRAY_SIZE, + GFP_KERNEL); + if (!vsi->rss_hkey_user) + return -ENOMEM; + } + memcpy(vsi->rss_hkey_user, key, I40E_HKEY_ARRAY_SIZE); + seed = vsi->rss_hkey_user; + } + if (!vsi->rss_lut_user) { + vsi->rss_lut_user = kzalloc(I40E_HLUT_ARRAY_SIZE, GFP_KERNEL); + if (!vsi->rss_lut_user) + return -ENOMEM; + } + + /* Each 32 bits pointed by 'indir' is stored with a lut entry */ + for (i = 0; i < I40E_HLUT_ARRAY_SIZE; i++) + vsi->rss_lut_user[i] = (u8)(indir[i]); + + return i40e_config_rss(vsi, seed, vsi->rss_lut_user, + I40E_HLUT_ARRAY_SIZE); } /** @@ -2712,6 +2710,8 @@ I40E_PRIV_FLAGS_FD_ATR : 0; ret_flags |= pf->flags & I40E_FLAG_VEB_STATS_ENABLED ? I40E_PRIV_FLAGS_VEB_STATS : 0; + ret_flags |= pf->flags & I40E_FLAG_RX_PS_ENABLED ? + I40E_PRIV_FLAGS_PS : 0; return ret_flags; } @@ -2726,6 +2726,26 @@ struct i40e_netdev_priv *np = netdev_priv(dev); struct i40e_vsi *vsi = np->vsi; struct i40e_pf *pf = vsi->back; + bool reset_required = false; + + /* NOTE: MFP is not settable */ + + /* allow the user to control the method of receive + * buffer DMA, whether the packet is split at header + * boundaries into two separate buffers. In some cases + * one routine or the other will perform better. + */ + if ((flags & I40E_PRIV_FLAGS_PS) && + !(pf->flags & I40E_FLAG_RX_PS_ENABLED)) { + pf->flags |= I40E_FLAG_RX_PS_ENABLED; + pf->flags &= ~I40E_FLAG_RX_1BUF_ENABLED; + reset_required = true; + } else if (!(flags & I40E_PRIV_FLAGS_PS) && + (pf->flags & I40E_FLAG_RX_PS_ENABLED)) { + pf->flags &= ~I40E_FLAG_RX_PS_ENABLED; + pf->flags |= I40E_FLAG_RX_1BUF_ENABLED; + reset_required = true; + } if (flags & I40E_PRIV_FLAGS_LINKPOLL_FLAG) pf->flags |= I40E_FLAG_LINK_POLLING_ENABLED; @@ -2748,6 +2768,10 @@ else pf->flags &= ~I40E_FLAG_VEB_STATS_ENABLED; + /* if needed, issue reset to cause things to take effect */ + if (reset_required) + i40e_do_reset(pf, BIT(__I40E_PF_RESET_REQUESTED)); + return 0; } --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_fcoe.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_fcoe.c @@ -1544,8 +1544,6 @@ if (!(pf->flags & I40E_FLAG_FCOE_ENABLED)) return; - BUG_ON(!pf->vsi[pf->lan_vsi]); - for (i = 0; i < pf->num_alloc_vsi; i++) { vsi = pf->vsi[i]; if (vsi && vsi->type == I40E_VSI_FCOE) { --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c @@ -762,7 +762,7 @@ /* prepare the bits and mask */ shift_width = ce_info->lsb % 8; - mask = BIT(ce_info->width) - 1; + mask = (u8)(BIT(ce_info->width) - 1); src_byte = *from; src_byte &= mask; --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -24,12 +24,24 @@ * ******************************************************************************/ +#include +#include +#include + +#ifdef CONFIG_SPARC +#include +#include +#endif + /* Local includes */ #include "i40e.h" #include "i40e_diag.h" -#ifdef CONFIG_I40E_VXLAN +#if IS_ENABLED(CONFIG_VXLAN) #include #endif +#if IS_ENABLED(CONFIG_GENEVE) +#include +#endif const char i40e_driver_name[] = "i40e"; static const char i40e_driver_string[] = @@ -38,8 +50,8 @@ #define DRV_KERN "-k" #define DRV_VERSION_MAJOR 1 -#define DRV_VERSION_MINOR 3 -#define DRV_VERSION_BUILD 46 +#define DRV_VERSION_MINOR 4 +#define DRV_VERSION_BUILD 8 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \ __stringify(DRV_VERSION_MINOR) "." \ __stringify(DRV_VERSION_BUILD) DRV_KERN @@ -55,6 +67,8 @@ static int i40e_setup_misc_vector(struct i40e_pf *pf); static void i40e_determine_queue_usage(struct i40e_pf *pf); static int i40e_setup_pf_filter_control(struct i40e_pf *pf); +static void i40e_fill_rss_lut(struct i40e_pf *pf, u8 *lut, + u16 rss_table_size, u16 rss_size); static void i40e_fdir_sb_setup(struct i40e_pf *pf); static int i40e_veb_get_bw_info(struct i40e_veb *veb); @@ -68,7 +82,6 @@ static const struct pci_device_id i40e_pci_tbl[] = { {PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_XL710), 0}, {PCI_VDEVICE(INTEL, I40E_DEV_ID_QEMU), 0}, - {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_A), 0}, {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_B), 0}, {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_C), 0}, {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_A), 0}, @@ -790,75 +803,6 @@ #endif /** - * i40e_update_link_xoff_rx - Update XOFF received in link flow control mode - * @pf: the corresponding PF - * - * Update the Rx XOFF counter (PAUSE frames) in link flow control mode - **/ -static void i40e_update_link_xoff_rx(struct i40e_pf *pf) -{ - struct i40e_hw_port_stats *osd = &pf->stats_offsets; - struct i40e_hw_port_stats *nsd = &pf->stats; - struct i40e_hw *hw = &pf->hw; - u64 xoff = 0; - - if ((hw->fc.current_mode != I40E_FC_FULL) && - (hw->fc.current_mode != I40E_FC_RX_PAUSE)) - return; - - xoff = nsd->link_xoff_rx; - i40e_stat_update32(hw, I40E_GLPRT_LXOFFRXC(hw->port), - pf->stat_offsets_loaded, - &osd->link_xoff_rx, &nsd->link_xoff_rx); - - /* No new LFC xoff rx */ - if (!(nsd->link_xoff_rx - xoff)) - return; - -} - -/** - * i40e_update_prio_xoff_rx - Update XOFF received in PFC mode - * @pf: the corresponding PF - * - * Update the Rx XOFF counter (PAUSE frames) in PFC mode - **/ -static void i40e_update_prio_xoff_rx(struct i40e_pf *pf) -{ - struct i40e_hw_port_stats *osd = &pf->stats_offsets; - struct i40e_hw_port_stats *nsd = &pf->stats; - bool xoff[I40E_MAX_TRAFFIC_CLASS] = {false}; - struct i40e_dcbx_config *dcb_cfg; - struct i40e_hw *hw = &pf->hw; - u16 i; - u8 tc; - - dcb_cfg = &hw->local_dcbx_config; - - /* Collect Link XOFF stats when PFC is disabled */ - if (!dcb_cfg->pfc.pfcenable) { - i40e_update_link_xoff_rx(pf); - return; - } - - for (i = 0; i < I40E_MAX_USER_PRIORITY; i++) { - u64 prio_xoff = nsd->priority_xoff_rx[i]; - - i40e_stat_update32(hw, I40E_GLPRT_PXOFFRXC(hw->port, i), - pf->stat_offsets_loaded, - &osd->priority_xoff_rx[i], - &nsd->priority_xoff_rx[i]); - - /* No new PFC xoff rx */ - if (!(nsd->priority_xoff_rx[i] - prio_xoff)) - continue; - /* Get the TC for given priority */ - tc = dcb_cfg->etscfg.prioritytable[i]; - xoff[tc] = true; - } -} - -/** * i40e_update_vsi_stats - Update the vsi statistics counters. * @vsi: the VSI to be updated * @@ -881,6 +825,7 @@ u64 bytes, packets; unsigned int start; u64 tx_linearize; + u64 tx_force_wb; u64 rx_p, rx_b; u64 tx_p, tx_b; u16 q; @@ -899,7 +844,7 @@ */ rx_b = rx_p = 0; tx_b = tx_p = 0; - tx_restart = tx_busy = tx_linearize = 0; + tx_restart = tx_busy = tx_linearize = tx_force_wb = 0; rx_page = 0; rx_buf = 0; rcu_read_lock(); @@ -917,6 +862,7 @@ tx_restart += p->tx_stats.restart_queue; tx_busy += p->tx_stats.tx_busy; tx_linearize += p->tx_stats.tx_linearize; + tx_force_wb += p->tx_stats.tx_force_wb; /* Rx queue is part of the same block as Tx queue */ p = &p[1]; @@ -934,6 +880,7 @@ vsi->tx_restart = tx_restart; vsi->tx_busy = tx_busy; vsi->tx_linearize = tx_linearize; + vsi->tx_force_wb = tx_force_wb; vsi->rx_page_failed = rx_page; vsi->rx_buf_failed = rx_buf; @@ -1049,12 +996,18 @@ i40e_stat_update32(hw, I40E_GLPRT_LXONTXC(hw->port), pf->stat_offsets_loaded, &osd->link_xon_tx, &nsd->link_xon_tx); - i40e_update_prio_xoff_rx(pf); /* handles I40E_GLPRT_LXOFFRXC */ + i40e_stat_update32(hw, I40E_GLPRT_LXOFFRXC(hw->port), + pf->stat_offsets_loaded, + &osd->link_xoff_rx, &nsd->link_xoff_rx); i40e_stat_update32(hw, I40E_GLPRT_LXOFFTXC(hw->port), pf->stat_offsets_loaded, &osd->link_xoff_tx, &nsd->link_xoff_tx); for (i = 0; i < 8; i++) { + i40e_stat_update32(hw, I40E_GLPRT_PXOFFRXC(hw->port, i), + pf->stat_offsets_loaded, + &osd->priority_xoff_rx[i], + &nsd->priority_xoff_rx[i]); i40e_stat_update32(hw, I40E_GLPRT_PXONRXC(hw->port, i), pf->stat_offsets_loaded, &osd->priority_xon_rx[i], @@ -1317,6 +1270,42 @@ } /** + * i40e_del_mac_all_vlan - Remove a MAC filter from all VLANS + * @vsi: the VSI to be searched + * @macaddr: the mac address to be removed + * @is_vf: true if it is a VF + * @is_netdev: true if it is a netdev + * + * Removes a given MAC address from a VSI, regardless of VLAN + * + * Returns 0 for success, or error + **/ +int i40e_del_mac_all_vlan(struct i40e_vsi *vsi, u8 *macaddr, + bool is_vf, bool is_netdev) +{ + struct i40e_mac_filter *f = NULL; + int changed = 0; + + WARN(!spin_is_locked(&vsi->mac_filter_list_lock), + "Missing mac_filter_list_lock\n"); + list_for_each_entry(f, &vsi->mac_filter_list, list) { + if ((ether_addr_equal(macaddr, f->macaddr)) && + (is_vf == f->is_vf) && + (is_netdev == f->is_netdev)) { + f->counter--; + f->changed = true; + changed = 1; + } + } + if (changed) { + vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED; + vsi->back->flags |= I40E_FLAG_FILTER_SYNC; + return 0; + } + return -ENOENT; +} + +/** * i40e_rm_default_mac_filter - Remove the default MAC filter set by NVM * @vsi: the PF Main VSI - inappropriate for any other VSI * @macaddr: the MAC address @@ -1547,10 +1536,9 @@ spin_unlock_bh(&vsi->mac_filter_list_lock); } - i40e_sync_vsi_filters(vsi, false); ether_addr_copy(netdev->dev_addr, addr->sa_data); - return 0; + return i40e_sync_vsi_filters(vsi); } /** @@ -1590,7 +1578,7 @@ if (enabled_tc && (vsi->back->flags & I40E_FLAG_DCB_ENABLED)) { /* Find numtc from enabled TC bitmap */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { - if (enabled_tc & BIT_ULL(i)) /* TC is enabled */ + if (enabled_tc & BIT(i)) /* TC is enabled */ numtc++; } if (!numtc) { @@ -1619,13 +1607,14 @@ /* Setup queue offset/count for all TCs for given VSI */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { /* See if the given TC is enabled for the given VSI */ - if (vsi->tc_config.enabled_tc & BIT_ULL(i)) { + if (vsi->tc_config.enabled_tc & BIT(i)) { /* TC is enabled */ int pow, num_qps; switch (vsi->type) { case I40E_VSI_MAIN: - qcount = min_t(int, pf->rss_size, num_tc_qps); + qcount = min_t(int, pf->alloc_rss_size, + num_tc_qps); break; #ifdef I40E_FCOE case I40E_VSI_FCOE: @@ -1851,13 +1840,12 @@ /** * i40e_sync_vsi_filters - Update the VSI filter list to the HW * @vsi: ptr to the VSI - * @grab_rtnl: whether RTNL needs to be grabbed * * Push any outstanding VSI filter changes through the AdminQ. * * Returns 0 or error value **/ -int i40e_sync_vsi_filters(struct i40e_vsi *vsi, bool grab_rtnl) +int i40e_sync_vsi_filters(struct i40e_vsi *vsi) { struct list_head tmp_del_list, tmp_add_list; struct i40e_mac_filter *f, *ftmp, *fclone; @@ -1865,8 +1853,9 @@ bool add_happened = false; int filter_list_len = 0; u32 changed_flags = 0; + i40e_status aq_ret = 0; bool err_cond = false; - i40e_status ret = 0; + int retval = 0; struct i40e_pf *pf; int num_add = 0; int num_del = 0; @@ -1929,17 +1918,22 @@ } spin_unlock_bh(&vsi->mac_filter_list_lock); - if (err_cond) + if (err_cond) { i40e_cleanup_add_list(&tmp_add_list); + retval = -ENOMEM; + goto out; + } } /* Now process 'del_list' outside the lock */ if (!list_empty(&tmp_del_list)) { + int del_list_size; + filter_list_len = pf->hw.aq.asq_buf_size / sizeof(struct i40e_aqc_remove_macvlan_element_data); - del_list = kcalloc(filter_list_len, - sizeof(struct i40e_aqc_remove_macvlan_element_data), - GFP_KERNEL); + del_list_size = filter_list_len * + sizeof(struct i40e_aqc_remove_macvlan_element_data); + del_list = kzalloc(del_list_size, GFP_KERNEL); if (!del_list) { i40e_cleanup_add_list(&tmp_add_list); @@ -1948,7 +1942,8 @@ i40e_undo_del_filter_entries(vsi, &tmp_del_list); i40e_undo_add_filter_entries(vsi); spin_unlock_bh(&vsi->mac_filter_list_lock); - return -ENOMEM; + retval = -ENOMEM; + goto out; } list_for_each_entry_safe(f, ftmp, &tmp_del_list, list) { @@ -1966,18 +1961,22 @@ /* flush a full buffer */ if (num_del == filter_list_len) { - ret = i40e_aq_remove_macvlan(&pf->hw, - vsi->seid, del_list, num_del, - NULL); + aq_ret = i40e_aq_remove_macvlan(&pf->hw, + vsi->seid, + del_list, + num_del, + NULL); aq_err = pf->hw.aq.asq_last_status; num_del = 0; - memset(del_list, 0, sizeof(*del_list)); + memset(del_list, 0, del_list_size); - if (ret && aq_err != I40E_AQ_RC_ENOENT) + if (aq_ret && aq_err != I40E_AQ_RC_ENOENT) { + retval = -EIO; dev_err(&pf->pdev->dev, "ignoring delete macvlan error, err %s, aq_err %s while flushing a full buffer\n", - i40e_stat_str(&pf->hw, ret), + i40e_stat_str(&pf->hw, aq_ret), i40e_aq_str(&pf->hw, aq_err)); + } } /* Release memory for MAC filter entries which were * synced up with HW. @@ -1987,15 +1986,16 @@ } if (num_del) { - ret = i40e_aq_remove_macvlan(&pf->hw, vsi->seid, - del_list, num_del, NULL); + aq_ret = i40e_aq_remove_macvlan(&pf->hw, vsi->seid, + del_list, num_del, + NULL); aq_err = pf->hw.aq.asq_last_status; num_del = 0; - if (ret && aq_err != I40E_AQ_RC_ENOENT) + if (aq_ret && aq_err != I40E_AQ_RC_ENOENT) dev_info(&pf->pdev->dev, "ignoring delete macvlan error, err %s aq_err %s\n", - i40e_stat_str(&pf->hw, ret), + i40e_stat_str(&pf->hw, aq_ret), i40e_aq_str(&pf->hw, aq_err)); } @@ -2004,13 +2004,14 @@ } if (!list_empty(&tmp_add_list)) { + int add_list_size; /* do all the adds now */ filter_list_len = pf->hw.aq.asq_buf_size / sizeof(struct i40e_aqc_add_macvlan_element_data), - add_list = kcalloc(filter_list_len, - sizeof(struct i40e_aqc_add_macvlan_element_data), - GFP_KERNEL); + add_list_size = filter_list_len * + sizeof(struct i40e_aqc_add_macvlan_element_data); + add_list = kzalloc(add_list_size, GFP_KERNEL); if (!add_list) { /* Purge element from temporary lists */ i40e_cleanup_add_list(&tmp_add_list); @@ -2019,7 +2020,8 @@ spin_lock_bh(&vsi->mac_filter_list_lock); i40e_undo_add_filter_entries(vsi); spin_unlock_bh(&vsi->mac_filter_list_lock); - return -ENOMEM; + retval = -ENOMEM; + goto out; } list_for_each_entry_safe(f, ftmp, &tmp_add_list, list) { @@ -2040,15 +2042,15 @@ /* flush a full buffer */ if (num_add == filter_list_len) { - ret = i40e_aq_add_macvlan(&pf->hw, vsi->seid, - add_list, num_add, - NULL); + aq_ret = i40e_aq_add_macvlan(&pf->hw, vsi->seid, + add_list, num_add, + NULL); aq_err = pf->hw.aq.asq_last_status; num_add = 0; - if (ret) + if (aq_ret) break; - memset(add_list, 0, sizeof(*add_list)); + memset(add_list, 0, add_list_size); } /* Entries from tmp_add_list were cloned from MAC * filter list, hence clean those cloned entries @@ -2058,18 +2060,19 @@ } if (num_add) { - ret = i40e_aq_add_macvlan(&pf->hw, vsi->seid, - add_list, num_add, NULL); + aq_ret = i40e_aq_add_macvlan(&pf->hw, vsi->seid, + add_list, num_add, NULL); aq_err = pf->hw.aq.asq_last_status; num_add = 0; } kfree(add_list); add_list = NULL; - if (add_happened && ret && aq_err != I40E_AQ_RC_EINVAL) { + if (add_happened && aq_ret && aq_err != I40E_AQ_RC_EINVAL) { + retval = i40e_aq_rc_to_posix(aq_ret, aq_err); dev_info(&pf->pdev->dev, "add filter failed, err %s aq_err %s\n", - i40e_stat_str(&pf->hw, ret), + i40e_stat_str(&pf->hw, aq_ret), i40e_aq_str(&pf->hw, aq_err)); if ((pf->hw.aq.asq_last_status == I40E_AQ_RC_ENOSPC) && !test_bit(__I40E_FILTER_OVERFLOW_PROMISC, @@ -2087,16 +2090,19 @@ bool cur_multipromisc; cur_multipromisc = !!(vsi->current_netdev_flags & IFF_ALLMULTI); - ret = i40e_aq_set_vsi_multicast_promiscuous(&vsi->back->hw, - vsi->seid, - cur_multipromisc, - NULL); - if (ret) + aq_ret = i40e_aq_set_vsi_multicast_promiscuous(&vsi->back->hw, + vsi->seid, + cur_multipromisc, + NULL); + if (aq_ret) { + retval = i40e_aq_rc_to_posix(aq_ret, + pf->hw.aq.asq_last_status); dev_info(&pf->pdev->dev, "set multi promisc failed, err %s aq_err %s\n", - i40e_stat_str(&pf->hw, ret), + i40e_stat_str(&pf->hw, aq_ret), i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); + } } if ((changed_flags & IFF_PROMISC) || promisc_forced_on) { bool cur_promisc; @@ -2112,44 +2118,50 @@ */ if (pf->cur_promisc != cur_promisc) { pf->cur_promisc = cur_promisc; - if (grab_rtnl) - i40e_do_reset_safe(pf, - BIT(__I40E_PF_RESET_REQUESTED)); - else - i40e_do_reset(pf, - BIT(__I40E_PF_RESET_REQUESTED)); + set_bit(__I40E_PF_RESET_REQUESTED, &pf->state); } } else { - ret = i40e_aq_set_vsi_unicast_promiscuous( + aq_ret = i40e_aq_set_vsi_unicast_promiscuous( &vsi->back->hw, vsi->seid, cur_promisc, NULL); - if (ret) + if (aq_ret) { + retval = + i40e_aq_rc_to_posix(aq_ret, + pf->hw.aq.asq_last_status); dev_info(&pf->pdev->dev, "set unicast promisc failed, err %d, aq_err %d\n", - ret, pf->hw.aq.asq_last_status); - ret = i40e_aq_set_vsi_multicast_promiscuous( + aq_ret, pf->hw.aq.asq_last_status); + } + aq_ret = i40e_aq_set_vsi_multicast_promiscuous( &vsi->back->hw, vsi->seid, cur_promisc, NULL); - if (ret) + if (aq_ret) { + retval = + i40e_aq_rc_to_posix(aq_ret, + pf->hw.aq.asq_last_status); dev_info(&pf->pdev->dev, "set multicast promisc failed, err %d, aq_err %d\n", - ret, pf->hw.aq.asq_last_status); + aq_ret, pf->hw.aq.asq_last_status); + } } - ret = i40e_aq_set_vsi_broadcast(&vsi->back->hw, - vsi->seid, - cur_promisc, NULL); - if (ret) + aq_ret = i40e_aq_set_vsi_broadcast(&vsi->back->hw, + vsi->seid, + cur_promisc, NULL); + if (aq_ret) { + retval = i40e_aq_rc_to_posix(aq_ret, + pf->hw.aq.asq_last_status); dev_info(&pf->pdev->dev, "set brdcast promisc failed, err %s, aq_err %s\n", - i40e_stat_str(&pf->hw, ret), + i40e_stat_str(&pf->hw, aq_ret), i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); + } } - +out: clear_bit(__I40E_CONFIG_BUSY, &vsi->state); - return 0; + return retval; } /** @@ -2166,8 +2178,15 @@ for (v = 0; v < pf->num_alloc_vsi; v++) { if (pf->vsi[v] && - (pf->vsi[v]->flags & I40E_VSI_FLAG_FILTER_CHANGED)) - i40e_sync_vsi_filters(pf->vsi[v], true); + (pf->vsi[v]->flags & I40E_VSI_FLAG_FILTER_CHANGED)) { + int ret = i40e_sync_vsi_filters(pf->vsi[v]); + + if (ret) { + /* come back and try again later */ + pf->flags |= I40E_FLAG_FILTER_SYNC; + break; + } + } } } @@ -2377,16 +2396,13 @@ } } - /* Make sure to release before sync_vsi_filter because that - * function will lock/unlock as necessary - */ spin_unlock_bh(&vsi->mac_filter_list_lock); - if (test_bit(__I40E_DOWN, &vsi->back->state) || - test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state)) - return 0; - - return i40e_sync_vsi_filters(vsi, false); + /* schedule our worker thread which will take care of + * applying the new filter changes + */ + i40e_service_event_schedule(vsi->back); + return 0; } /** @@ -2459,16 +2475,13 @@ } } - /* Make sure to release before sync_vsi_filter because that - * function with lock/unlock as necessary - */ spin_unlock_bh(&vsi->mac_filter_list_lock); - if (test_bit(__I40E_DOWN, &vsi->back->state) || - test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state)) - return 0; - - return i40e_sync_vsi_filters(vsi, false); + /* schedule our worker thread which will take care of + * applying the new filter changes + */ + i40e_service_event_schedule(vsi->back); + return 0; } /** @@ -2711,6 +2724,11 @@ netif_set_xps_queue(ring->netdev, mask, ring->queue_index); free_cpumask_var(mask); } + + /* schedule our worker thread which will take care of + * applying the new filter changes + */ + i40e_service_event_schedule(vsi->back); } /** @@ -4360,17 +4378,41 @@ else val = rd32(&pf->hw, I40E_PFINT_DYN_CTL0); + /* Bail out if interrupts are disabled because napi_poll + * execution in-progress or will get scheduled soon. + * napi_poll cleans TX and RX queues and updates 'next_to_clean'. + */ + if (!(val & I40E_PFINT_DYN_CTLN_INTENA_MASK)) + return; + head = i40e_get_head(tx_ring); tx_pending = i40e_get_tx_pending(tx_ring); - /* Interrupts are disabled and TX pending is non-zero, - * trigger the SW interrupt (don't wait). Worst case - * there will be one extra interrupt which may result - * into not cleaning any queues because queues are cleaned. - */ - if (tx_pending && (!(val & I40E_PFINT_DYN_CTLN_INTENA_MASK))) - i40e_force_wb(vsi, tx_ring->q_vector); + /* HW is done executing descriptors, updated HEAD write back, + * but SW hasn't processed those descriptors. If interrupt is + * not generated from this point ON, it could result into + * dev_watchdog detecting timeout on those netdev_queue, + * hence proactively trigger SW interrupt. + */ + if (tx_pending) { + /* NAPI Poll didn't run and clear since it was set */ + if (test_and_clear_bit(I40E_Q_VECTOR_HUNG_DETECT, + &tx_ring->q_vector->hung_detected)) { + netdev_info(vsi->netdev, "VSI_seid %d, Hung TX queue %d, tx_pending: %d, NTC:0x%x, HWB: 0x%x, NTU: 0x%x, TAIL: 0x%x\n", + vsi->seid, q_idx, tx_pending, + tx_ring->next_to_clean, head, + tx_ring->next_to_use, + readl(tx_ring->tail)); + netdev_info(vsi->netdev, "VSI_seid %d, Issuing force_wb for TX queue %d, Interrupt Reg: 0x%x\n", + vsi->seid, q_idx, val); + i40e_force_wb(vsi, tx_ring->q_vector); + } else { + /* First Chance - detected possible hung */ + set_bit(I40E_Q_VECTOR_HUNG_DETECT, + &tx_ring->q_vector->hung_detected); + } + } } /** @@ -4441,7 +4483,7 @@ if (app.selector == I40E_APP_SEL_TCPIP && app.protocolid == I40E_APP_PROTOID_ISCSI) { tc = dcbcfg->etscfg.prioritytable[app.priority]; - enabled_tc |= BIT_ULL(tc); + enabled_tc |= BIT(tc); break; } } @@ -4525,7 +4567,7 @@ /* At least have TC0 */ enabled_tc = (enabled_tc ? enabled_tc : 0x1); for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { - if (enabled_tc & BIT_ULL(i)) + if (enabled_tc & BIT(i)) num_tc++; } return num_tc; @@ -4547,7 +4589,7 @@ /* Find the first enabled TC */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { - if (enabled_tc & BIT_ULL(i)) + if (enabled_tc & BIT(i)) break; } @@ -4707,7 +4749,7 @@ * will set the numtc for netdev as 2 that will be * referenced by the netdev layer as TC 0 and 1. */ - if (vsi->tc_config.enabled_tc & BIT_ULL(i)) + if (vsi->tc_config.enabled_tc & BIT(i)) netdev_set_tc_queue(netdev, vsi->tc_config.tc_info[i].netdev_tc, vsi->tc_config.tc_info[i].qcount, @@ -4769,7 +4811,7 @@ /* Enable ETS TCs with equal BW Share for now across all VSIs */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { - if (enabled_tc & BIT_ULL(i)) + if (enabled_tc & BIT(i)) bw_share[i] = 1; } @@ -4843,7 +4885,7 @@ /* Enable ETS TCs with equal BW Share for now */ for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) { - if (enabled_tc & BIT_ULL(i)) + if (enabled_tc & BIT(i)) bw_data.tc_bw_share_credits[i] = 1; } @@ -5240,7 +5282,7 @@ /* Generate TC map for number of tc requested */ for (i = 0; i < tc; i++) - enabled_tc |= BIT_ULL(i); + enabled_tc |= BIT(i); /* Requesting same TC configuration as already enabled */ if (enabled_tc == vsi->tc_config.enabled_tc) @@ -5305,6 +5347,9 @@ #ifdef CONFIG_I40E_VXLAN vxlan_get_rx_port(netdev); #endif +#ifdef CONFIG_I40E_GENEVE + geneve_get_rx_port(netdev); +#endif return 0; } @@ -5738,7 +5783,7 @@ **/ static void i40e_service_event_complete(struct i40e_pf *pf) { - BUG_ON(!test_bit(__I40E_SERVICE_SCHED, &pf->state)); + WARN_ON(!test_bit(__I40E_SERVICE_SCHED, &pf->state)); /* flush memory to make sure state is correct before next watchog */ smp_mb__before_atomic(); @@ -6013,6 +6058,9 @@ i40e_status status; bool new_link, old_link; + /* save off old link status information */ + pf->hw.phy.link_info_old = pf->hw.phy.link_info; + /* set this to force the get_link_status call to refresh state */ pf->hw.phy.get_link_info = true; @@ -6101,23 +6149,23 @@ rtnl_lock(); if (test_bit(__I40E_REINIT_REQUESTED, &pf->state)) { - reset_flags |= BIT_ULL(__I40E_REINIT_REQUESTED); + reset_flags |= BIT(__I40E_REINIT_REQUESTED); clear_bit(__I40E_REINIT_REQUESTED, &pf->state); } if (test_bit(__I40E_PF_RESET_REQUESTED, &pf->state)) { - reset_flags |= BIT_ULL(__I40E_PF_RESET_REQUESTED); + reset_flags |= BIT(__I40E_PF_RESET_REQUESTED); clear_bit(__I40E_PF_RESET_REQUESTED, &pf->state); } if (test_bit(__I40E_CORE_RESET_REQUESTED, &pf->state)) { - reset_flags |= BIT_ULL(__I40E_CORE_RESET_REQUESTED); + reset_flags |= BIT(__I40E_CORE_RESET_REQUESTED); clear_bit(__I40E_CORE_RESET_REQUESTED, &pf->state); } if (test_bit(__I40E_GLOBAL_RESET_REQUESTED, &pf->state)) { - reset_flags |= BIT_ULL(__I40E_GLOBAL_RESET_REQUESTED); + reset_flags |= BIT(__I40E_GLOBAL_RESET_REQUESTED); clear_bit(__I40E_GLOBAL_RESET_REQUESTED, &pf->state); } if (test_bit(__I40E_DOWN_REQUESTED, &pf->state)) { - reset_flags |= BIT_ULL(__I40E_DOWN_REQUESTED); + reset_flags |= BIT(__I40E_DOWN_REQUESTED); clear_bit(__I40E_DOWN_REQUESTED, &pf->state); } @@ -6147,13 +6195,9 @@ static void i40e_handle_link_event(struct i40e_pf *pf, struct i40e_arq_event_info *e) { - struct i40e_hw *hw = &pf->hw; struct i40e_aqc_get_link_status *status = (struct i40e_aqc_get_link_status *)&e->desc.params.raw; - /* save off old link status information */ - hw->phy.link_info_old = hw->phy.link_info; - /* Do a new status request to re-enable LSE reporting * and load new status information into the hw struct * This completely ignores any state information @@ -6192,15 +6236,18 @@ val = rd32(&pf->hw, pf->hw.aq.arq.len); oldval = val; if (val & I40E_PF_ARQLEN_ARQVFE_MASK) { - dev_info(&pf->pdev->dev, "ARQ VF Error detected\n"); + if (hw->debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ARQ VF Error detected\n"); val &= ~I40E_PF_ARQLEN_ARQVFE_MASK; } if (val & I40E_PF_ARQLEN_ARQOVFL_MASK) { - dev_info(&pf->pdev->dev, "ARQ Overflow Error detected\n"); + if (hw->debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ARQ Overflow Error detected\n"); val &= ~I40E_PF_ARQLEN_ARQOVFL_MASK; } if (val & I40E_PF_ARQLEN_ARQCRIT_MASK) { - dev_info(&pf->pdev->dev, "ARQ Critical Error detected\n"); + if (hw->debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ARQ Critical Error detected\n"); val &= ~I40E_PF_ARQLEN_ARQCRIT_MASK; } if (oldval != val) @@ -6209,15 +6256,18 @@ val = rd32(&pf->hw, pf->hw.aq.asq.len); oldval = val; if (val & I40E_PF_ATQLEN_ATQVFE_MASK) { - dev_info(&pf->pdev->dev, "ASQ VF Error detected\n"); + if (pf->hw.debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ASQ VF Error detected\n"); val &= ~I40E_PF_ATQLEN_ATQVFE_MASK; } if (val & I40E_PF_ATQLEN_ATQOVFL_MASK) { - dev_info(&pf->pdev->dev, "ASQ Overflow Error detected\n"); + if (pf->hw.debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ASQ Overflow Error detected\n"); val &= ~I40E_PF_ATQLEN_ATQOVFL_MASK; } if (val & I40E_PF_ATQLEN_ATQCRIT_MASK) { - dev_info(&pf->pdev->dev, "ASQ Critical Error detected\n"); + if (pf->hw.debug_mask & I40E_DEBUG_AQ) + dev_info(&pf->pdev->dev, "ASQ Critical Error detected\n"); val &= ~I40E_PF_ATQLEN_ATQCRIT_MASK; } if (oldval != val) @@ -6268,6 +6318,7 @@ break; case i40e_aqc_opc_nvm_erase: case i40e_aqc_opc_nvm_update: + case i40e_aqc_opc_oem_post_update: i40e_debug(&pf->hw, I40E_DEBUG_NVM, "ARQ NVM operation completed\n"); break; default: @@ -6685,6 +6736,7 @@ struct i40e_hw *hw = &pf->hw; u8 set_fc_aq_fail = 0; i40e_status ret; + u32 val; u32 v; /* Now we wait for GRST to settle out. @@ -6823,6 +6875,20 @@ } } + /* Reconfigure hardware for allowing smaller MSS in the case + * of TSO, so that we avoid the MDD being fired and causing + * a reset in the case of small MSS+TSO. + */ +#define I40E_REG_MSS 0x000E64DC +#define I40E_REG_MSS_MIN_MASK 0x3FF0000 +#define I40E_64BYTE_MSS 0x400000 + val = rd32(hw, I40E_REG_MSS); + if ((val & I40E_REG_MSS_MIN_MASK) > I40E_64BYTE_MSS) { + val &= ~I40E_REG_MSS_MIN_MASK; + val |= I40E_64BYTE_MSS; + wr32(hw, I40E_REG_MSS, val); + } + if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) || (pf->hw.aq.fw_maj_ver < 4)) { msleep(75); @@ -6984,30 +7050,30 @@ i40e_flush(hw); } -#ifdef CONFIG_I40E_VXLAN /** - * i40e_sync_vxlan_filters_subtask - Sync the VSI filter list with HW + * i40e_sync_udp_filters_subtask - Sync the VSI filter list with HW * @pf: board private structure **/ -static void i40e_sync_vxlan_filters_subtask(struct i40e_pf *pf) +static void i40e_sync_udp_filters_subtask(struct i40e_pf *pf) { +#if IS_ENABLED(CONFIG_VXLAN) || IS_ENABLED(CONFIG_GENEVE) struct i40e_hw *hw = &pf->hw; i40e_status ret; __be16 port; int i; - if (!(pf->flags & I40E_FLAG_VXLAN_FILTER_SYNC)) + if (!(pf->flags & I40E_FLAG_UDP_FILTER_SYNC)) return; - pf->flags &= ~I40E_FLAG_VXLAN_FILTER_SYNC; + pf->flags &= ~I40E_FLAG_UDP_FILTER_SYNC; for (i = 0; i < I40E_MAX_PF_UDP_OFFLOAD_PORTS; i++) { - if (pf->pending_vxlan_bitmap & BIT_ULL(i)) { - pf->pending_vxlan_bitmap &= ~BIT_ULL(i); - port = pf->vxlan_ports[i]; + if (pf->pending_udp_bitmap & BIT_ULL(i)) { + pf->pending_udp_bitmap &= ~BIT_ULL(i); + port = pf->udp_ports[i].index; if (port) ret = i40e_aq_add_udp_tunnel(hw, ntohs(port), - I40E_AQC_TUNNEL_TYPE_VXLAN, + pf->udp_ports[i].type, NULL, NULL); else ret = i40e_aq_del_udp_tunnel(hw, i, NULL); @@ -7020,13 +7086,13 @@ i40e_stat_str(&pf->hw, ret), i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); - pf->vxlan_ports[i] = 0; + pf->udp_ports[i].index = 0; } } } +#endif } -#endif /** * i40e_service_task - Run the driver's async subtasks * @work: pointer to work_struct containing our data @@ -7051,9 +7117,7 @@ i40e_watchdog_subtask(pf); i40e_fdir_reinit_subtask(pf); i40e_sync_filters_subtask(pf); -#ifdef CONFIG_I40E_VXLAN - i40e_sync_vxlan_filters_subtask(pf); -#endif + i40e_sync_udp_filters_subtask(pf); i40e_clean_adminq_subtask(pf); i40e_service_event_complete(pf); @@ -7282,6 +7346,23 @@ } /** + * i40e_clear_rss_config_user - clear the user configured RSS hash keys + * and lookup table + * @vsi: Pointer to VSI structure + */ +static void i40e_clear_rss_config_user(struct i40e_vsi *vsi) +{ + if (!vsi) + return; + + kfree(vsi->rss_hkey_user); + vsi->rss_hkey_user = NULL; + + kfree(vsi->rss_lut_user); + vsi->rss_lut_user = NULL; +} + +/** * i40e_vsi_clear - Deallocate the VSI provided * @vsi: the VSI being un-configured **/ @@ -7318,6 +7399,7 @@ i40e_put_lump(pf->irq_pile, vsi->base_vector, vsi->idx); i40e_vsi_free_arrays(vsi, true); + i40e_clear_rss_config_user(vsi); pf->vsi[vsi->idx] = NULL; if (vsi->idx < pf->next_vsi) @@ -7780,7 +7862,8 @@ * @vsi: vsi structure * @seed: RSS hash seed **/ -static int i40e_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed) +static int i40e_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) { struct i40e_aqc_get_set_rss_key_data rss_key; struct i40e_pf *pf = vsi->back; @@ -7833,43 +7916,57 @@ { u8 seed[I40E_HKEY_ARRAY_SIZE]; struct i40e_pf *pf = vsi->back; + u8 *lut; + int ret; - netdev_rss_key_fill((void *)seed, I40E_HKEY_ARRAY_SIZE); - vsi->rss_size = min_t(int, pf->rss_size, vsi->num_queue_pairs); + if (!(pf->flags & I40E_FLAG_RSS_AQ_CAPABLE)) + return 0; - if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) - return i40e_config_rss_aq(vsi, seed); + lut = kzalloc(vsi->rss_table_size, GFP_KERNEL); + if (!lut) + return -ENOMEM; - return 0; + i40e_fill_rss_lut(pf, lut, vsi->rss_table_size, vsi->rss_size); + netdev_rss_key_fill((void *)seed, I40E_HKEY_ARRAY_SIZE); + vsi->rss_size = min_t(int, pf->alloc_rss_size, vsi->num_queue_pairs); + ret = i40e_config_rss_aq(vsi, seed, lut, vsi->rss_table_size); + kfree(lut); + + return ret; } /** - * i40e_config_rss_reg - Prepare for RSS if used - * @pf: board private structure + * i40e_config_rss_reg - Configure RSS keys and lut by writing registers + * @vsi: Pointer to vsi structure * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure **/ -static int i40e_config_rss_reg(struct i40e_pf *pf, const u8 *seed) +static int i40e_config_rss_reg(struct i40e_vsi *vsi, const u8 *seed, + const u8 *lut, u16 lut_size) { - struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi]; + struct i40e_pf *pf = vsi->back; struct i40e_hw *hw = &pf->hw; - u32 *seed_dw = (u32 *)seed; - u32 current_queue = 0; - u32 lut = 0; - int i, j; + u8 i; /* Fill out hash function seed */ - for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) - wr32(hw, I40E_PFQF_HKEY(i), seed_dw[i]); + if (seed) { + u32 *seed_dw = (u32 *)seed; - for (i = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) { - lut = 0; - for (j = 0; j < 4; j++) { - if (current_queue == vsi->rss_size) - current_queue = 0; - lut |= ((current_queue) << (8 * j)); - current_queue++; - } - wr32(&pf->hw, I40E_PFQF_HLUT(i), lut); + for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) + wr32(hw, I40E_PFQF_HKEY(i), seed_dw[i]); + } + + if (lut) { + u32 *lut_dw = (u32 *)lut; + + if (lut_size != I40E_HLUT_ARRAY_SIZE) + return -EINVAL; + + for (i = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) + wr32(hw, I40E_PFQF_HLUT(i), lut_dw[i]); } i40e_flush(hw); @@ -7877,18 +7974,101 @@ } /** - * i40e_config_rss - Prepare for RSS if used + * i40e_get_rss_reg - Get the RSS keys and lut by reading registers + * @vsi: Pointer to VSI structure + * @seed: Buffer to store the keys + * @lut: Buffer to store the lookup table entries + * @lut_size: Size of buffer to store the lookup table entries + * + * Returns 0 on success, negative on failure + */ +static int i40e_get_rss_reg(struct i40e_vsi *vsi, u8 *seed, + u8 *lut, u16 lut_size) +{ + struct i40e_pf *pf = vsi->back; + struct i40e_hw *hw = &pf->hw; + u16 i; + + if (seed) { + u32 *seed_dw = (u32 *)seed; + + for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) + seed_dw[i] = rd32(hw, I40E_PFQF_HKEY(i)); + } + if (lut) { + u32 *lut_dw = (u32 *)lut; + + if (lut_size != I40E_HLUT_ARRAY_SIZE) + return -EINVAL; + for (i = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) + lut_dw[i] = rd32(hw, I40E_PFQF_HLUT(i)); + } + + return 0; +} + +/** + * i40e_config_rss - Configure RSS keys and lut + * @vsi: Pointer to VSI structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure + */ +int i40e_config_rss(struct i40e_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size) +{ + struct i40e_pf *pf = vsi->back; + + if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) + return i40e_config_rss_aq(vsi, seed, lut, lut_size); + else + return i40e_config_rss_reg(vsi, seed, lut, lut_size); +} + +/** + * i40e_get_rss - Get RSS keys and lut + * @vsi: Pointer to VSI structure + * @seed: Buffer to store the keys + * @lut: Buffer to store the lookup table entries + * lut_size: Size of buffer to store the lookup table entries + * + * Returns 0 on success, negative on failure + */ +int i40e_get_rss(struct i40e_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size) +{ + return i40e_get_rss_reg(vsi, seed, lut, lut_size); +} + +/** + * i40e_fill_rss_lut - Fill the RSS lookup table with default values + * @pf: Pointer to board private structure + * @lut: Lookup table + * @rss_table_size: Lookup table size + * @rss_size: Range of queue number for hashing + */ +static void i40e_fill_rss_lut(struct i40e_pf *pf, u8 *lut, + u16 rss_table_size, u16 rss_size) +{ + u16 i; + + for (i = 0; i < rss_table_size; i++) + lut[i] = i % rss_size; +} + +/** + * i40e_pf_config_rss - Prepare for RSS if used * @pf: board private structure **/ -static int i40e_config_rss(struct i40e_pf *pf) +static int i40e_pf_config_rss(struct i40e_pf *pf) { struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi]; u8 seed[I40E_HKEY_ARRAY_SIZE]; + u8 *lut; struct i40e_hw *hw = &pf->hw; u32 reg_val; u64 hena; - - netdev_rss_key_fill((void *)seed, I40E_HKEY_ARRAY_SIZE); + int ret; /* By default we enable TCP/UDP with IPv4/IPv6 ptypes */ hena = (u64)rd32(hw, I40E_PFQF_HENA(0)) | @@ -7898,8 +8078,6 @@ wr32(hw, I40E_PFQF_HENA(0), (u32)hena); wr32(hw, I40E_PFQF_HENA(1), (u32)(hena >> 32)); - vsi->rss_size = min_t(int, pf->rss_size, vsi->num_queue_pairs); - /* Determine the RSS table size based on the hardware capabilities */ reg_val = rd32(hw, I40E_PFQF_CTL_0); reg_val = (pf->rss_table_size == 512) ? @@ -7907,10 +8085,32 @@ (reg_val & ~I40E_PFQF_CTL_0_HASHLUTSIZE_512); wr32(hw, I40E_PFQF_CTL_0, reg_val); - if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) - return i40e_config_rss_aq(pf->vsi[pf->lan_vsi], seed); + /* Determine the RSS size of the VSI */ + if (!vsi->rss_size) + vsi->rss_size = min_t(int, pf->alloc_rss_size, + vsi->num_queue_pairs); + + lut = kzalloc(vsi->rss_table_size, GFP_KERNEL); + if (!lut) + return -ENOMEM; + + /* Use user configured lut if there is one, otherwise use default */ + if (vsi->rss_lut_user) + memcpy(lut, vsi->rss_lut_user, vsi->rss_table_size); + else + i40e_fill_rss_lut(pf, lut, vsi->rss_table_size, vsi->rss_size); + + /* Use user configured hash key if there is one, otherwise + * use default. + */ + if (vsi->rss_hkey_user) + memcpy(seed, vsi->rss_hkey_user, I40E_HKEY_ARRAY_SIZE); else - return i40e_config_rss_reg(pf, seed); + netdev_rss_key_fill((void *)seed, I40E_HKEY_ARRAY_SIZE); + ret = i40e_config_rss(vsi, seed, lut, vsi->rss_table_size); + kfree(lut); + + return ret; } /** @@ -7935,13 +8135,28 @@ vsi->req_queue_pairs = queue_count; i40e_prep_for_reset(pf); - pf->rss_size = new_rss_size; + pf->alloc_rss_size = new_rss_size; i40e_reset_and_rebuild(pf, true); - i40e_config_rss(pf); + + /* Discard the user configured hash keys and lut, if less + * queues are enabled. + */ + if (queue_count < vsi->rss_size) { + i40e_clear_rss_config_user(vsi); + dev_dbg(&pf->pdev->dev, + "discard user configured hash keys and lut\n"); + } + + /* Reset vsi->rss_size, as number of enabled queues changed */ + vsi->rss_size = min_t(int, pf->alloc_rss_size, + vsi->num_queue_pairs); + + i40e_pf_config_rss(pf); } - dev_info(&pf->pdev->dev, "RSS count: %d\n", pf->rss_size); - return pf->rss_size; + dev_info(&pf->pdev->dev, "RSS count/HW max RSS count: %d/%d\n", + pf->alloc_rss_size, pf->rss_size_max); + return pf->alloc_rss_size; } /** @@ -8112,13 +8327,14 @@ * maximum might end up larger than the available queues */ pf->rss_size_max = BIT(pf->hw.func_caps.rss_table_entry_width); - pf->rss_size = 1; + pf->alloc_rss_size = 1; pf->rss_table_size = pf->hw.func_caps.rss_table_size; pf->rss_size_max = min_t(int, pf->rss_size_max, pf->hw.func_caps.num_tx_qp); if (pf->hw.func_caps.rss) { pf->flags |= I40E_FLAG_RSS_ENABLED; - pf->rss_size = min_t(int, pf->rss_size_max, num_online_cpus()); + pf->alloc_rss_size = min_t(int, pf->rss_size_max, + num_online_cpus()); } /* MFP mode enabled */ @@ -8176,7 +8392,8 @@ I40E_FLAG_HW_ATR_EVICT_CAPABLE | I40E_FLAG_OUTER_UDP_CSUM_CAPABLE | I40E_FLAG_WB_ON_ITR_CAPABLE | - I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE; + I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE | + I40E_FLAG_GENEVE_OFFLOAD_CAPABLE; } pf->eeprom_version = 0xDEAD; pf->lan_veb = I40E_NO_VEB; @@ -8275,26 +8492,29 @@ return 0; } -#ifdef CONFIG_I40E_VXLAN +#if IS_ENABLED(CONFIG_VXLAN) || IS_ENABLED(CONFIG_GENEVE) /** - * i40e_get_vxlan_port_idx - Lookup a possibly offloaded for Rx UDP port + * i40e_get_udp_port_idx - Lookup a possibly offloaded for Rx UDP port * @pf: board private structure * @port: The UDP port to look up * * Returns the index number or I40E_MAX_PF_UDP_OFFLOAD_PORTS if port not found **/ -static u8 i40e_get_vxlan_port_idx(struct i40e_pf *pf, __be16 port) +static u8 i40e_get_udp_port_idx(struct i40e_pf *pf, __be16 port) { u8 i; for (i = 0; i < I40E_MAX_PF_UDP_OFFLOAD_PORTS; i++) { - if (pf->vxlan_ports[i] == port) + if (pf->udp_ports[i].index == port) return i; } return i; } +#endif + +#if IS_ENABLED(CONFIG_VXLAN) /** * i40e_add_vxlan_port - Get notifications about VXLAN ports that come up * @netdev: This physical port's netdev @@ -8313,7 +8533,7 @@ if (sa_family == AF_INET6) return; - idx = i40e_get_vxlan_port_idx(pf, port); + idx = i40e_get_udp_port_idx(pf, port); /* Check if port already exists */ if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { @@ -8323,7 +8543,7 @@ } /* Now check if there is space to add the new port */ - next_idx = i40e_get_vxlan_port_idx(pf, 0); + next_idx = i40e_get_udp_port_idx(pf, 0); if (next_idx == I40E_MAX_PF_UDP_OFFLOAD_PORTS) { netdev_info(netdev, "maximum number of vxlan UDP ports reached, not adding port %d\n", @@ -8332,9 +8552,10 @@ } /* New port: add it and mark its index in the bitmap */ - pf->vxlan_ports[next_idx] = port; - pf->pending_vxlan_bitmap |= BIT_ULL(next_idx); - pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC; + pf->udp_ports[next_idx].index = port; + pf->udp_ports[next_idx].type = I40E_AQC_TUNNEL_TYPE_VXLAN; + pf->pending_udp_bitmap |= BIT_ULL(next_idx); + pf->flags |= I40E_FLAG_UDP_FILTER_SYNC; } /** @@ -8354,23 +8575,106 @@ if (sa_family == AF_INET6) return; - idx = i40e_get_vxlan_port_idx(pf, port); + idx = i40e_get_udp_port_idx(pf, port); /* Check if port already exists */ if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { /* if port exists, set it to 0 (mark for deletion) * and make it pending */ - pf->vxlan_ports[idx] = 0; - pf->pending_vxlan_bitmap |= BIT_ULL(idx); - pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC; + pf->udp_ports[idx].index = 0; + pf->pending_udp_bitmap |= BIT_ULL(idx); + pf->flags |= I40E_FLAG_UDP_FILTER_SYNC; } else { netdev_warn(netdev, "vxlan port %d was not found, not deleting\n", ntohs(port)); } } +#endif + +#if IS_ENABLED(CONFIG_GENEVE) +/** + * i40e_add_geneve_port - Get notifications about GENEVE ports that come up + * @netdev: This physical port's netdev + * @sa_family: Socket Family that GENEVE is notifying us about + * @port: New UDP port number that GENEVE started listening to + **/ +static void i40e_add_geneve_port(struct net_device *netdev, + sa_family_t sa_family, __be16 port) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + u8 next_idx; + u8 idx; + + if (sa_family == AF_INET6) + return; + + idx = i40e_get_udp_port_idx(pf, port); + + /* Check if port already exists */ + if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + netdev_info(netdev, "udp port %d already offloaded\n", + ntohs(port)); + return; + } + + /* Now check if there is space to add the new port */ + next_idx = i40e_get_udp_port_idx(pf, 0); + + if (next_idx == I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + netdev_info(netdev, "maximum number of UDP ports reached, not adding port %d\n", + ntohs(port)); + return; + } + + /* New port: add it and mark its index in the bitmap */ + pf->udp_ports[next_idx].index = port; + pf->udp_ports[next_idx].type = I40E_AQC_TUNNEL_TYPE_NGE; + pf->pending_udp_bitmap |= BIT_ULL(next_idx); + pf->flags |= I40E_FLAG_UDP_FILTER_SYNC; + + dev_info(&pf->pdev->dev, "adding geneve port %d\n", ntohs(port)); +} +/** + * i40e_del_geneve_port - Get notifications about GENEVE ports that go away + * @netdev: This physical port's netdev + * @sa_family: Socket Family that GENEVE is notifying us about + * @port: UDP port number that GENEVE stopped listening to + **/ +static void i40e_del_geneve_port(struct net_device *netdev, + sa_family_t sa_family, __be16 port) +{ + struct i40e_netdev_priv *np = netdev_priv(netdev); + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + u8 idx; + + if (sa_family == AF_INET6) + return; + + idx = i40e_get_udp_port_idx(pf, port); + + /* Check if port already exists */ + if (idx < I40E_MAX_PF_UDP_OFFLOAD_PORTS) { + /* if port exists, set it to 0 (mark for deletion) + * and make it pending + */ + pf->udp_ports[idx].index = 0; + pf->pending_udp_bitmap |= BIT_ULL(idx); + pf->flags |= I40E_FLAG_UDP_FILTER_SYNC; + + dev_info(&pf->pdev->dev, "deleting geneve port %d\n", + ntohs(port)); + } else { + netdev_warn(netdev, "geneve port %d was not found, not deleting\n", + ntohs(port)); + } +} #endif + static int i40e_get_phys_port_id(struct net_device *netdev, struct netdev_phys_item_id *ppid) { @@ -8548,7 +8852,10 @@ nlflags, 0, 0, filter_mask, NULL); } -#define I40E_MAX_TUNNEL_HDR_LEN 80 +/* Hardware supports L4 tunnel length of 128B (=2^7) which includes + * inner mac plus all inner ethertypes. + */ +#define I40E_MAX_TUNNEL_HDR_LEN 128 /** * i40e_features_check - Validate encapsulated packet conforms to limits * @skb: skb buff @@ -8560,7 +8867,7 @@ netdev_features_t features) { if (skb->encapsulation && - (skb_inner_mac_header(skb) - skb_transport_header(skb) > + ((skb_inner_network_header(skb) - skb_transport_header(skb)) > I40E_MAX_TUNNEL_HDR_LEN)) return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK); @@ -8595,10 +8902,14 @@ .ndo_get_vf_config = i40e_ndo_get_vf_config, .ndo_set_vf_link_state = i40e_ndo_set_vf_link_state, .ndo_set_vf_spoofchk = i40e_ndo_set_vf_spoofchk, -#ifdef CONFIG_I40E_VXLAN +#if IS_ENABLED(CONFIG_VXLAN) .ndo_add_vxlan_port = i40e_add_vxlan_port, .ndo_del_vxlan_port = i40e_del_vxlan_port, #endif +#if IS_ENABLED(CONFIG_GENEVE) + .ndo_add_geneve_port = i40e_add_geneve_port, + .ndo_del_geneve_port = i40e_del_geneve_port, +#endif .ndo_get_phys_port_id = i40e_get_phys_port_id, .ndo_fdb_add = i40e_ndo_fdb_add, .ndo_features_check = i40e_features_check, @@ -8632,6 +8943,7 @@ np->vsi = vsi; netdev->hw_enc_features |= NETIF_F_IP_CSUM | + NETIF_F_RXCSUM | NETIF_F_GSO_UDP_TUNNEL | NETIF_F_GSO_GRE | NETIF_F_TSO; @@ -9051,7 +9363,7 @@ f->is_vf, f->is_netdev); spin_unlock_bh(&vsi->mac_filter_list_lock); - i40e_sync_vsi_filters(vsi, false); + i40e_sync_vsi_filters(vsi); i40e_vsi_delete(vsi); i40e_vsi_free_q_vectors(vsi); @@ -9213,6 +9525,44 @@ } /** + * i40e_macaddr_init - explicitly write the mac address filters. + * + * @vsi: pointer to the vsi. + * @macaddr: the MAC address + * + * This is needed when the macaddr has been obtained by other + * means than the default, e.g., from Open Firmware or IDPROM. + * Returns 0 on success, negative on failure + **/ +static int i40e_macaddr_init(struct i40e_vsi *vsi, u8 *macaddr) +{ + int ret; + struct i40e_aqc_add_macvlan_element_data element; + + ret = i40e_aq_mac_address_write(&vsi->back->hw, + I40E_AQC_WRITE_TYPE_LAA_WOL, + macaddr, NULL); + if (ret) { + dev_info(&vsi->back->pdev->dev, + "Addr change for VSI failed: %d\n", ret); + return -EADDRNOTAVAIL; + } + + memset(&element, 0, sizeof(element)); + ether_addr_copy(element.mac_addr, macaddr); + element.flags = cpu_to_le16(I40E_AQC_MACVLAN_ADD_PERFECT_MATCH); + ret = i40e_aq_add_macvlan(&vsi->back->hw, vsi->seid, &element, 1, NULL); + if (ret) { + dev_info(&vsi->back->pdev->dev, + "add filter failed err %s aq_err %s\n", + i40e_stat_str(&vsi->back->hw, ret), + i40e_aq_str(&vsi->back->hw, + vsi->back->hw.aq.asq_last_status)); + } + return ret; +} + +/** * i40e_vsi_setup - Set up a VSI by a given type * @pf: board private structure * @type: VSI type @@ -9336,6 +9686,17 @@ switch (vsi->type) { /* setup the netdev if needed */ case I40E_VSI_MAIN: + /* Apply relevant filters if a platform-specific mac + * address was selected. + */ + if (!!(pf->flags & I40E_FLAG_PF_MAC)) { + ret = i40e_macaddr_init(vsi, pf->hw.mac.addr); + if (ret) { + dev_warn(&pf->pdev->dev, + "could not set up macaddr; err %d\n", + ret); + } + } case I40E_VSI_VMDQ2: case I40E_VSI_FCOE: ret = i40e_config_netdev(vsi); @@ -9947,7 +10308,7 @@ * the hash */ if ((pf->flags & I40E_FLAG_RSS_ENABLED)) - i40e_config_rss(pf); + i40e_pf_config_rss(pf); /* fill in link information and enable LSE reporting */ i40e_update_link_info(&pf->hw); @@ -9985,7 +10346,7 @@ !(pf->flags & I40E_FLAG_MSIX_ENABLED)) { /* one qp for PF, no queues for anything else */ queues_left = 0; - pf->rss_size = pf->num_lan_qps = 1; + pf->alloc_rss_size = pf->num_lan_qps = 1; /* make sure all the fancies are disabled */ pf->flags &= ~(I40E_FLAG_RSS_ENABLED | @@ -10002,7 +10363,7 @@ I40E_FLAG_FD_ATR_ENABLED | I40E_FLAG_DCB_CAPABLE))) { /* one qp for PF */ - pf->rss_size = pf->num_lan_qps = 1; + pf->alloc_rss_size = pf->num_lan_qps = 1; queues_left -= pf->num_lan_qps; pf->flags &= ~(I40E_FLAG_RSS_ENABLED | @@ -10072,8 +10433,9 @@ "qs_avail=%d FD SB=%d lan_qs=%d lan_tc0=%d vf=%d*%d vmdq=%d*%d, remaining=%d\n", pf->hw.func_caps.num_tx_qp, !!(pf->flags & I40E_FLAG_FD_SB_ENABLED), - pf->num_lan_qps, pf->rss_size, pf->num_req_vfs, pf->num_vf_qps, - pf->num_vmdq_vsis, pf->num_vmdq_qps, queues_left); + pf->num_lan_qps, pf->alloc_rss_size, pf->num_req_vfs, + pf->num_vf_qps, pf->num_vmdq_vsis, pf->num_vmdq_qps, + queues_left); #ifdef I40E_FCOE dev_dbg(&pf->pdev->dev, "fcoe queues = %d\n", pf->num_fcoe_qps); #endif @@ -10111,55 +10473,86 @@ } #define INFO_STRING_LEN 255 +#define REMAIN(__x) (INFO_STRING_LEN - (__x)) static void i40e_print_features(struct i40e_pf *pf) { struct i40e_hw *hw = &pf->hw; - char *buf, *string; + char *buf; + int i; - string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); - if (!string) { - dev_err(&pf->pdev->dev, "Features string allocation failed\n"); + buf = kmalloc(INFO_STRING_LEN, GFP_KERNEL); + if (!buf) return; - } - buf = string; - - buf += sprintf(string, "Features: PF-id[%d] ", hw->pf_id); + i = snprintf(buf, INFO_STRING_LEN, "Features: PF-id[%d]", hw->pf_id); #ifdef CONFIG_PCI_IOV - buf += sprintf(buf, "VFs: %d ", pf->num_req_vfs); + i += snprintf(&buf[i], REMAIN(i), " VFs: %d", pf->num_req_vfs); #endif - buf += sprintf(buf, "VSIs: %d QP: %d RX: %s ", - pf->hw.func_caps.num_vsis, - pf->vsi[pf->lan_vsi]->num_queue_pairs, - pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : "1BUF"); + i += snprintf(&buf[i], REMAIN(i), " VSIs: %d QP: %d RX: %s", + pf->hw.func_caps.num_vsis, + pf->vsi[pf->lan_vsi]->num_queue_pairs, + pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : "1BUF"); if (pf->flags & I40E_FLAG_RSS_ENABLED) - buf += sprintf(buf, "RSS "); + i += snprintf(&buf[i], REMAIN(i), " RSS"); if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) - buf += sprintf(buf, "FD_ATR "); + i += snprintf(&buf[i], REMAIN(i), " FD_ATR"); if (pf->flags & I40E_FLAG_FD_SB_ENABLED) { - buf += sprintf(buf, "FD_SB "); - buf += sprintf(buf, "NTUPLE "); + i += snprintf(&buf[i], REMAIN(i), " FD_SB"); + i += snprintf(&buf[i], REMAIN(i), " NTUPLE"); } if (pf->flags & I40E_FLAG_DCB_CAPABLE) - buf += sprintf(buf, "DCB "); + i += snprintf(&buf[i], REMAIN(i), " DCB"); #if IS_ENABLED(CONFIG_VXLAN) - buf += sprintf(buf, "VxLAN "); + i += snprintf(&buf[i], REMAIN(i), " VxLAN"); +#endif +#if IS_ENABLED(CONFIG_GENEVE) + i += snprintf(&buf[i], REMAIN(i), " Geneve"); #endif if (pf->flags & I40E_FLAG_PTP) - buf += sprintf(buf, "PTP "); + i += snprintf(&buf[i], REMAIN(i), " PTP"); #ifdef I40E_FCOE if (pf->flags & I40E_FLAG_FCOE_ENABLED) - buf += sprintf(buf, "FCOE "); + i += snprintf(&buf[i], REMAIN(i), " FCOE"); #endif if (pf->flags & I40E_FLAG_VEB_MODE_ENABLED) - buf += sprintf(buf, "VEB "); + i += snprintf(&buf[i], REMAIN(i), " VEB"); else - buf += sprintf(buf, "VEPA "); + i += snprintf(&buf[i], REMAIN(i), " VEPA"); - BUG_ON(buf > (string + INFO_STRING_LEN)); - dev_info(&pf->pdev->dev, "%s\n", string); - kfree(string); + dev_info(&pf->pdev->dev, "%s\n", buf); + kfree(buf); + WARN_ON(i > INFO_STRING_LEN); +} + +/** + * i40e_get_platform_mac_addr - get platform-specific MAC address + * + * @pdev: PCI device information struct + * @pf: board private structure + * + * Look up the MAC address in Open Firmware on systems that support it, + * and use IDPROM on SPARC if no OF address is found. On return, the + * I40E_FLAG_PF_MAC will be wset in pf->flags if a platform-specific value + * has been selected. + **/ +static void i40e_get_platform_mac_addr(struct pci_dev *pdev, struct i40e_pf *pf) +{ + struct device_node *dp = pci_device_to_OF_node(pdev); + const unsigned char *addr; + u8 *mac_addr = pf->hw.mac.addr; + + pf->flags &= ~I40E_FLAG_PF_MAC; + addr = of_get_mac_address(dp); + if (addr) { + ether_addr_copy(mac_addr, addr); + pf->flags |= I40E_FLAG_PF_MAC; +#ifdef CONFIG_SPARC + } else { + ether_addr_copy(mac_addr, idprom->id_ethaddr); + pf->flags |= I40E_FLAG_PF_MAC; +#endif /* CONFIG_SPARC */ + } } /** @@ -10183,6 +10576,7 @@ u16 link_status; int err; u32 len; + u32 val; u32 i; u8 set_fc_aq_fail; @@ -10302,6 +10696,16 @@ mutex_init(&hw->aq.arq_mutex); err = i40e_init_adminq(hw); + if (err) { + if (err == I40E_ERR_FIRMWARE_API_VERSION) + dev_info(&pdev->dev, + "The driver for the device stopped because the NVM image is newer than expected. You must install the most recent version of the network driver.\n"); + else + dev_info(&pdev->dev, + "The driver for the device stopped because the device firmware failed to init. Try updating your NVM image.\n"); + + goto err_pf_reset; + } /* provide nvm, fw, api versions */ dev_info(&pdev->dev, "fw %d.%d.%05d api %d.%d nvm %s\n", @@ -10309,12 +10713,6 @@ hw->aq.api_maj_ver, hw->aq.api_min_ver, i40e_nvm_version_str(hw)); - if (err) { - dev_info(&pdev->dev, - "The driver for the device stopped because the NVM image is newer than expected. You must install the most recent version of the network driver.\n"); - goto err_pf_reset; - } - if (hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR && hw->aq.api_min_ver > I40E_FW_API_VERSION_MINOR) dev_info(&pdev->dev, @@ -10367,6 +10765,8 @@ } i40e_get_mac_addr(hw, hw->mac.addr); + /* allow a platform config to override the HW addr */ + i40e_get_platform_mac_addr(pdev, pf); if (!is_valid_ether_addr(hw->mac.addr)) { dev_info(&pdev->dev, "invalid MAC address %pM\n", hw->mac.addr); err = -EIO; @@ -10411,7 +10811,7 @@ /* NVM bit on means WoL disabled for the port */ i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits); - if ((1 << hw->port) & wol_nvm_bits || hw->partition_id != 1) + if (BIT (hw->port) & wol_nvm_bits || hw->partition_id != 1) pf->wol_en = false; else pf->wol_en = true; @@ -10493,6 +10893,17 @@ i40e_stat_str(&pf->hw, err), i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); + /* Reconfigure hardware for allowing smaller MSS in the case + * of TSO, so that we avoid the MDD being fired and causing + * a reset in the case of small MSS+TSO. + */ + val = rd32(hw, I40E_REG_MSS); + if ((val & I40E_REG_MSS_MIN_MASK) > I40E_64BYTE_MSS) { + val &= ~I40E_REG_MSS_MIN_MASK; + val |= I40E_64BYTE_MSS; + wr32(hw, I40E_REG_MSS, val); + } + if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) || (pf->hw.aq.fw_maj_ver < 4)) { msleep(75); --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -235,6 +235,9 @@ "Filter deleted for PCTYPE %d loc = %d\n", fd_data->pctype, fd_data->fd_id); } + if (err) + kfree(raw_packet); + return err ? -EOPNOTSUPP : 0; } @@ -312,6 +315,9 @@ fd_data->pctype, fd_data->fd_id); } + if (err) + kfree(raw_packet); + return err ? -EOPNOTSUPP : 0; } @@ -322,7 +328,7 @@ * @fd_data: the flow director data required for the FDir descriptor * @add: true adds a filter, false removes it * - * Always returns -EOPNOTSUPP + * Returns 0 if the filters were successfully added or removed **/ static int i40e_add_del_fdir_sctpv4(struct i40e_vsi *vsi, struct i40e_fdir_filter *fd_data, @@ -387,6 +393,9 @@ } } + if (err) + kfree(raw_packet); + return err ? -EOPNOTSUPP : 0; } @@ -506,9 +515,6 @@ pf->auto_disable_flags |= I40E_FLAG_FD_SB_ENABLED; } - } else { - dev_info(&pdev->dev, - "FD filter programming failed due to incorrect filter parameters\n"); } } else if (error == BIT(I40E_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT)) { if (I40E_DEBUG_FD & pf->hw.debug_mask) @@ -526,11 +532,7 @@ struct i40e_tx_buffer *tx_buffer) { if (tx_buffer->skb) { - if (tx_buffer->tx_flags & I40E_TX_FLAGS_FD_SB) - kfree(tx_buffer->raw_buf); - else - dev_kfree_skb_any(tx_buffer->skb); - + dev_kfree_skb_any(tx_buffer->skb); if (dma_unmap_len(tx_buffer, len)) dma_unmap_single(ring->dev, dma_unmap_addr(tx_buffer, dma), @@ -542,6 +544,10 @@ dma_unmap_len(tx_buffer, len), DMA_TO_DEVICE); } + + if (tx_buffer->tx_flags & I40E_TX_FLAGS_FD_SB) + kfree(tx_buffer->raw_buf); + tx_buffer->next_to_watch = NULL; tx_buffer->skb = NULL; dma_unmap_len_set(tx_buffer, len, 0); @@ -1374,7 +1380,7 @@ if (rx_error & BIT(I40E_RX_DESC_ERROR_PPRS_SHIFT)) return; - /* If VXLAN traffic has an outer UDPv4 checksum we need to check + /* If VXLAN/GENEVE traffic has an outer UDPv4 checksum we need to check * it in the driver, hardware does not do it for us. * Since L3L4P bit was set we assume a valid IHL value (>=5) * so the total length of IPv4 header is IHL*4 bytes @@ -1416,31 +1422,12 @@ } /** - * i40e_rx_hash - returns the hash value from the Rx descriptor - * @ring: descriptor ring - * @rx_desc: specific descriptor - **/ -static inline u32 i40e_rx_hash(struct i40e_ring *ring, - union i40e_rx_desc *rx_desc) -{ - const __le64 rss_mask = - cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << - I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); - - if ((ring->netdev->features & NETIF_F_RXHASH) && - (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) - return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); - else - return 0; -} - -/** - * i40e_ptype_to_hash - get a hash type + * i40e_ptype_to_htype - get a hash type * @ptype: the ptype value from the descriptor * * Returns a hash type to be used by skb_set_hash **/ -static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype) +static inline enum pkt_hash_types i40e_ptype_to_htype(u8 ptype) { struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype); @@ -1458,6 +1445,30 @@ } /** + * i40e_rx_hash - set the hash value in the skb + * @ring: descriptor ring + * @rx_desc: specific descriptor + **/ +static inline void i40e_rx_hash(struct i40e_ring *ring, + union i40e_rx_desc *rx_desc, + struct sk_buff *skb, + u8 rx_ptype) +{ + u32 hash; + const __le64 rss_mask = + cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << + I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); + + if (ring->netdev->features & NETIF_F_RXHASH) + return; + + if ((rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) { + hash = le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); + skb_set_hash(skb, hash, i40e_ptype_to_htype(rx_ptype)); + } +} + +/** * i40e_clean_rx_irq_ps - Reclaim resources after receive; packet split * @rx_ring: rx ring to clean * @budget: how many cleans we're allowed @@ -1606,8 +1617,8 @@ continue; } - skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), - i40e_ptype_to_hash(rx_ptype)); + i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype); + if (unlikely(rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK)) { i40e_ptp_rx_hwtstamp(vsi->back, skb, (rx_status & I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >> @@ -1736,8 +1747,7 @@ continue; } - skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), - i40e_ptype_to_hash(rx_ptype)); + i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype); if (unlikely(rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK)) { i40e_ptp_rx_hwtstamp(vsi->back, skb, (rx_status & I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >> @@ -1864,7 +1874,6 @@ q_vector->itr_countdown--; else q_vector->itr_countdown = ITR_COUNTDOWN_START; - } /** @@ -1892,12 +1901,14 @@ return 0; } + /* Clear hung_detected bit */ + clear_bit(I40E_Q_VECTOR_HUNG_DETECT, &q_vector->hung_detected); /* Since the actual Tx work is minimal, we can give the Tx a larger * budget and be more aggressive about cleaning up the Tx descriptors. */ i40e_for_each_ring(ring, q_vector->tx) { clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit); - arm_wb |= ring->arm_wb; + arm_wb = arm_wb || ring->arm_wb; ring->arm_wb = false; } @@ -1926,8 +1937,10 @@ /* If work not completed, return budget and polling will return */ if (!clean_complete) { tx_only: - if (arm_wb) + if (arm_wb) { + q_vector->tx.ring[0].tx_stats.tx_force_wb++; i40e_force_wb(vsi, q_vector); + } return budget; } @@ -1993,7 +2006,7 @@ if (!(tx_flags & (I40E_TX_FLAGS_IPV4 | I40E_TX_FLAGS_IPV6))) return; - if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) { + if (!(tx_flags & I40E_TX_FLAGS_UDP_TUNNEL)) { /* snag network header to get L4 type and address */ hdr.network = skb_network_header(skb); @@ -2078,7 +2091,7 @@ I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT; dtype_cmd |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK; - if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) + if (!(tx_flags & I40E_TX_FLAGS_UDP_TUNNEL)) dtype_cmd |= ((u32)I40E_FD_ATR_STAT_IDX(pf->hw.pf_id) << I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) & @@ -2187,14 +2200,12 @@ * @tx_ring: ptr to the ring to send * @skb: ptr to the skb we're sending * @hdr_len: ptr to the size of the packet header - * @cd_type_cmd_tso_mss: ptr to u64 object - * @cd_tunneling: ptr to context descriptor bits + * @cd_type_cmd_tso_mss: Quad Word 1 * * Returns 0 if no TSO can happen, 1 if tso is going, or error **/ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb, - u8 *hdr_len, u64 *cd_type_cmd_tso_mss, - u32 *cd_tunneling) + u8 *hdr_len, u64 *cd_type_cmd_tso_mss) { u32 cd_cmd, cd_tso_len, cd_mss; struct ipv6hdr *ipv6h; @@ -2247,7 +2258,7 @@ * @tx_ring: ptr to the ring to send * @skb: ptr to the skb we're sending * @tx_flags: the collected send information - * @cd_type_cmd_tso_mss: ptr to u64 object + * @cd_type_cmd_tso_mss: Quad Word 1 * * Returns 0 if no Tx timestamp can happen and 1 if the timestamp will happen **/ @@ -2303,8 +2314,8 @@ struct iphdr *this_ip_hdr; u32 network_hdr_len; u8 l4_hdr = 0; - struct udphdr *oudph; - struct iphdr *oiph; + struct udphdr *oudph = NULL; + struct iphdr *oiph = NULL; u32 l4_tunnel = 0; if (skb->encapsulation) { @@ -2313,7 +2324,7 @@ oudph = udp_hdr(skb); oiph = ip_hdr(skb); l4_tunnel = I40E_TXD_CTX_UDP_TUNNELING; - *tx_flags |= I40E_TX_FLAGS_VXLAN_TUNNEL; + *tx_flags |= I40E_TX_FLAGS_UDP_TUNNEL; break; case IPPROTO_GRE: l4_tunnel = I40E_TXD_CTX_GRE_TUNNELING; @@ -2807,6 +2818,9 @@ int tsyn; int tso; + /* prefetch the data, we'll need it later */ + prefetch(skb->data); + if (0 == i40e_xmit_descriptor_count(skb, tx_ring)) return NETDEV_TX_BUSY; @@ -2826,8 +2840,7 @@ else if (protocol == htons(ETH_P_IPV6)) tx_flags |= I40E_TX_FLAGS_IPV6; - tso = i40e_tso(tx_ring, skb, &hdr_len, - &cd_type_cmd_tso_mss, &cd_tunneling); + tso = i40e_tso(tx_ring, skb, &hdr_len, &cd_type_cmd_tso_mss); if (tso < 0) goto out_drop; --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_txrx.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_txrx.h @@ -163,7 +163,7 @@ #define I40E_TX_FLAGS_FSO BIT(7) #define I40E_TX_FLAGS_TSYN BIT(8) #define I40E_TX_FLAGS_FD_SB BIT(9) -#define I40E_TX_FLAGS_VXLAN_TUNNEL BIT(10) +#define I40E_TX_FLAGS_UDP_TUNNEL BIT(10) #define I40E_TX_FLAGS_VLAN_MASK 0xffff0000 #define I40E_TX_FLAGS_VLAN_PRIO_MASK 0xe0000000 #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT 29 @@ -202,6 +202,7 @@ u64 tx_busy; u64 tx_done_old; u64 tx_linearize; + u64 tx_force_wb; }; struct i40e_rx_queue_stats { --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h @@ -153,6 +153,7 @@ #define I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR 0x00000020 #define I40E_VIRTCHNL_VF_OFFLOAD_VLAN 0x00010000 #define I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING 0x00020000 +#define I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2 0x00040000 struct i40e_virtchnl_vf_resource { u16 num_vsis; --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -290,8 +290,8 @@ next_q = find_first_bit(&linklistmap, (I40E_MAX_VSI_QP * I40E_VIRTCHNL_SUPPORTED_QTYPES)); - vsi_queue_id = next_q/I40E_VIRTCHNL_SUPPORTED_QTYPES; - qtype = next_q%I40E_VIRTCHNL_SUPPORTED_QTYPES; + vsi_queue_id = next_q / I40E_VIRTCHNL_SUPPORTED_QTYPES; + qtype = next_q % I40E_VIRTCHNL_SUPPORTED_QTYPES; pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_id, vsi_queue_id); reg = ((qtype << I40E_VPINT_LNKLSTN_FIRSTQ_TYPE_SHIFT) | pf_queue_id); @@ -549,12 +549,15 @@ i40e_vsi_add_pvid(vsi, vf->port_vlan_id); spin_lock_bh(&vsi->mac_filter_list_lock); - f = i40e_add_filter(vsi, vf->default_lan_addr.addr, - vf->port_vlan_id ? vf->port_vlan_id : -1, - true, false); - if (!f) - dev_info(&pf->pdev->dev, - "Could not allocate VF MAC addr\n"); + if (is_valid_ether_addr(vf->default_lan_addr.addr)) { + f = i40e_add_filter(vsi, vf->default_lan_addr.addr, + vf->port_vlan_id ? vf->port_vlan_id : -1, + true, false); + if (!f) + dev_info(&pf->pdev->dev, + "Could not add MAC filter %pM for VF %d\n", + vf->default_lan_addr.addr, vf->vf_id); + } f = i40e_add_filter(vsi, brdcast, vf->port_vlan_id ? vf->port_vlan_id : -1, true, false); @@ -565,7 +568,7 @@ } /* program mac filter */ - ret = i40e_sync_vsi_filters(vsi, false); + ret = i40e_sync_vsi_filters(vsi); if (ret) dev_err(&pf->pdev->dev, "Unable to program ucast filters\n"); @@ -1094,8 +1097,8 @@ /* single place to detect unsuccessful return values */ if (v_retval) { vf->num_invalid_msgs++; - dev_err(&pf->pdev->dev, "Failed opcode %d Error: %d\n", - v_opcode, v_retval); + dev_err(&pf->pdev->dev, "VF %d failed opcode %d, error: %d\n", + vf->vf_id, v_opcode, v_retval); if (vf->num_invalid_msgs > I40E_DEFAULT_NUM_INVALID_MSGS_ALLOWED) { dev_err(&pf->pdev->dev, @@ -1623,7 +1626,8 @@ if (!f) { dev_err(&pf->pdev->dev, - "Unable to add VF MAC filter\n"); + "Unable to add MAC filter %pM for VF %d\n", + al->list[i].addr, vf->vf_id); ret = I40E_ERR_PARAM; spin_unlock_bh(&vsi->mac_filter_list_lock); goto error_param; @@ -1632,8 +1636,10 @@ spin_unlock_bh(&vsi->mac_filter_list_lock); /* program the updated filter list */ - if (i40e_sync_vsi_filters(vsi, false)) - dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n"); + ret = i40e_sync_vsi_filters(vsi); + if (ret) + dev_err(&pf->pdev->dev, "Unable to program VF %d MAC filters, error %d\n", + vf->vf_id, ret); error_param: /* send the response to the VF */ @@ -1669,8 +1675,8 @@ for (i = 0; i < al->num_elements; i++) { if (is_broadcast_ether_addr(al->list[i].addr) || is_zero_ether_addr(al->list[i].addr)) { - dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n", - al->list[i].addr); + dev_err(&pf->pdev->dev, "Invalid MAC addr %pM for VF %d\n", + al->list[i].addr, vf->vf_id); ret = I40E_ERR_INVALID_MAC_ADDR; goto error_param; } @@ -1680,13 +1686,19 @@ spin_lock_bh(&vsi->mac_filter_list_lock); /* delete addresses from the list */ for (i = 0; i < al->num_elements; i++) - i40e_del_filter(vsi, al->list[i].addr, - I40E_VLAN_ANY, true, false); + if (i40e_del_mac_all_vlan(vsi, al->list[i].addr, true, false)) { + ret = I40E_ERR_INVALID_MAC_ADDR; + spin_unlock_bh(&vsi->mac_filter_list_lock); + goto error_param; + } + spin_unlock_bh(&vsi->mac_filter_list_lock); /* program the updated filter list */ - if (i40e_sync_vsi_filters(vsi, false)) - dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n"); + ret = i40e_sync_vsi_filters(vsi); + if (ret) + dev_err(&pf->pdev->dev, "Unable to program VF %d MAC filters, error %d\n", + vf->vf_id, ret); error_param: /* send the response to the VF */ @@ -1740,8 +1752,8 @@ if (ret) dev_err(&pf->pdev->dev, - "Unable to add VF vlan filter %d, error %d\n", - vfl->vlan_id[i], ret); + "Unable to add VLAN filter %d for VF %d, error %d\n", + vfl->vlan_id[i], vf->vf_id, ret); } error_param: @@ -1792,8 +1804,8 @@ if (ret) dev_err(&pf->pdev->dev, - "Unable to delete VF vlan filter %d, error %d\n", - vfl->vlan_id[i], ret); + "Unable to delete VLAN filter %d for VF %d, error %d\n", + vfl->vlan_id[i], vf->vf_id, ret); } error_param: @@ -2066,15 +2078,15 @@ vf = &(pf->vf[vf_id]); vsi = pf->vsi[vf->lan_vsi_idx]; if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, - "Uninitialized VF %d\n", vf_id); - ret = -EINVAL; + dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", + vf_id); + ret = -EAGAIN; goto error_param; } - if (!is_valid_ether_addr(mac)) { + if (is_multicast_ether_addr(mac)) { dev_err(&pf->pdev->dev, - "Invalid VF ethernet address\n"); + "Invalid Ethernet address %pM for VF %d\n", mac, vf_id); ret = -EINVAL; goto error_param; } @@ -2085,9 +2097,10 @@ spin_lock_bh(&vsi->mac_filter_list_lock); /* delete the temporary mac address */ - i40e_del_filter(vsi, vf->default_lan_addr.addr, - vf->port_vlan_id ? vf->port_vlan_id : -1, - true, false); + if (!is_zero_ether_addr(vf->default_lan_addr.addr)) + i40e_del_filter(vsi, vf->default_lan_addr.addr, + vf->port_vlan_id ? vf->port_vlan_id : -1, + true, false); /* Delete all the filters for this VSI - we're going to kill it * anyway. @@ -2099,7 +2112,7 @@ dev_info(&pf->pdev->dev, "Setting MAC %pM on VF %d\n", mac, vf_id); /* program mac filter */ - if (i40e_sync_vsi_filters(vsi, false)) { + if (i40e_sync_vsi_filters(vsi)) { dev_err(&pf->pdev->dev, "Unable to program ucast filters\n"); ret = -EIO; goto error_param; @@ -2150,8 +2163,9 @@ vf = &(pf->vf[vf_id]); vsi = pf->vsi[vf->lan_vsi_idx]; if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "Uninitialized VF %d\n", vf_id); - ret = -EINVAL; + dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", + vf_id); + ret = -EAGAIN; goto error_pvid; } @@ -2270,8 +2284,9 @@ vf = &(pf->vf[vf_id]); vsi = pf->vsi[vf->lan_vsi_idx]; if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "Uninitialized VF %d.\n", vf_id); - ret = -EINVAL; + dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", + vf_id); + ret = -EAGAIN; goto error; } @@ -2344,8 +2359,9 @@ /* first vsi is always the LAN vsi */ vsi = pf->vsi[vf->lan_vsi_idx]; if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "Uninitialized VF %d\n", vf_id); - ret = -EINVAL; + dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", + vf_id); + ret = -EAGAIN; goto error_param; } @@ -2460,6 +2476,12 @@ } vf = &(pf->vf[vf_id]); + if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states)) { + dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", + vf_id); + ret = -EAGAIN; + goto out; + } if (enable == vf->spoofchk) goto out; --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h @@ -227,6 +227,7 @@ i40e_aqc_opc_nvm_update = 0x0703, i40e_aqc_opc_nvm_config_read = 0x0704, i40e_aqc_opc_nvm_config_write = 0x0705, + i40e_aqc_opc_oem_post_update = 0x0720, /* virtualization commands */ i40e_aqc_opc_send_msg_to_pf = 0x0801, @@ -1888,6 +1889,26 @@ I40E_CHECK_STRUCT_LEN(0xc, i40e_aqc_nvm_config_data_immediate_field); +/* OEM Post Update (indirect 0x0720) + * no command data struct used + */ + struct i40e_aqc_nvm_oem_post_update { +#define I40E_AQ_NVM_OEM_POST_UPDATE_EXTERNAL_DATA 0x01 + u8 sel_data; + u8 reserved[7]; +}; + +I40E_CHECK_STRUCT_LEN(0x8, i40e_aqc_nvm_oem_post_update); + +struct i40e_aqc_nvm_oem_post_update_buffer { + u8 str_len; + u8 dev_addr; + __le16 eeprom_addr; + u8 data[36]; +}; + +I40E_CHECK_STRUCT_LEN(0x28, i40e_aqc_nvm_oem_post_update_buffer); + /* Send to PF command (indirect 0x0801) id is only used by PF * Send to VF command (indirect 0x0802) id is only used by PF * Send to Peer PF command (indirect 0x0803) @@ -2311,4 +2332,4 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_modify_internals); -#endif +#endif /* _I40E_ADMINQ_CMD_H_ */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_common.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_common.c @@ -44,7 +44,6 @@ switch (hw->device_id) { case I40E_DEV_ID_SFP_XL710: case I40E_DEV_ID_QEMU: - case I40E_DEV_ID_KX_A: case I40E_DEV_ID_KX_B: case I40E_DEV_ID_KX_C: case I40E_DEV_ID_QSFP_A: --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_devids.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_devids.h @@ -30,7 +30,6 @@ /* Device IDs */ #define I40E_DEV_ID_SFP_XL710 0x1572 #define I40E_DEV_ID_QEMU 0x1574 -#define I40E_DEV_ID_KX_A 0x157F #define I40E_DEV_ID_KX_B 0x1580 #define I40E_DEV_ID_KX_C 0x1581 #define I40E_DEV_ID_QSFP_A 0x1583 --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_txrx.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_txrx.c @@ -51,11 +51,7 @@ struct i40e_tx_buffer *tx_buffer) { if (tx_buffer->skb) { - if (tx_buffer->tx_flags & I40E_TX_FLAGS_FD_SB) - kfree(tx_buffer->raw_buf); - else - dev_kfree_skb_any(tx_buffer->skb); - + dev_kfree_skb_any(tx_buffer->skb); if (dma_unmap_len(tx_buffer, len)) dma_unmap_single(ring->dev, dma_unmap_addr(tx_buffer, dma), @@ -67,6 +63,10 @@ dma_unmap_len(tx_buffer, len), DMA_TO_DEVICE); } + + if (tx_buffer->tx_flags & I40E_TX_FLAGS_FD_SB) + kfree(tx_buffer->raw_buf); + tx_buffer->next_to_watch = NULL; tx_buffer->skb = NULL; dma_unmap_len_set(tx_buffer, len, 0); @@ -127,17 +127,24 @@ } /** - * i40e_get_head - Retrieve head from head writeback - * @tx_ring: tx ring to fetch head of + * i40evf_get_tx_pending - how many Tx descriptors not processed + * @tx_ring: the ring of descriptors * - * Returns value of Tx ring head based on value stored - * in head write-back location + * Since there is no access to the ring head register + * in XL710, we need to use our local copies **/ -static inline u32 i40e_get_head(struct i40e_ring *tx_ring) +u32 i40evf_get_tx_pending(struct i40e_ring *ring) { - void *head = (struct i40e_tx_desc *)tx_ring->desc + tx_ring->count; + u32 head, tail; + + head = i40e_get_head(ring); + tail = readl(ring->tail); - return le32_to_cpu(*(volatile __le32 *)head); + if (head != tail) + return (head < tail) ? + tail - head : (tail + ring->count - head); + + return 0; } #define WB_STRIDE 0x3 @@ -245,16 +252,6 @@ tx_ring->q_vector->tx.total_bytes += total_bytes; tx_ring->q_vector->tx.total_packets += total_packets; - /* check to see if there are any non-cache aligned descriptors - * waiting to be written back, and kick the hardware to force - * them to be written back in case of napi polling - */ - if (budget && - !((i & WB_STRIDE) == WB_STRIDE) && - !test_bit(__I40E_DOWN, &tx_ring->vsi->state) && - (I40E_DESC_UNUSED(tx_ring) != tx_ring->count)) - tx_ring->arm_wb = true; - netdev_tx_completed_queue(netdev_get_tx_queue(tx_ring->netdev, tx_ring->queue_index), total_packets, total_bytes); @@ -414,7 +411,7 @@ return false; } -/* +/** * i40evf_setup_tx_descriptors - Allocate the Tx descriptors * @tx_ring: the tx ring to set up * @@ -889,31 +886,12 @@ } /** - * i40e_rx_hash - returns the hash value from the Rx descriptor - * @ring: descriptor ring - * @rx_desc: specific descriptor - **/ -static inline u32 i40e_rx_hash(struct i40e_ring *ring, - union i40e_rx_desc *rx_desc) -{ - const __le64 rss_mask = - cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << - I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); - - if ((ring->netdev->features & NETIF_F_RXHASH) && - (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) - return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); - else - return 0; -} - -/** - * i40e_ptype_to_hash - get a hash type + * i40e_ptype_to_htype - get a hash type * @ptype: the ptype value from the descriptor * * Returns a hash type to be used by skb_set_hash **/ -static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype) +static inline enum pkt_hash_types i40e_ptype_to_htype(u8 ptype) { struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype); @@ -931,6 +909,30 @@ } /** + * i40e_rx_hash - set the hash value in the skb + * @ring: descriptor ring + * @rx_desc: specific descriptor + **/ +static inline void i40e_rx_hash(struct i40e_ring *ring, + union i40e_rx_desc *rx_desc, + struct sk_buff *skb, + u8 rx_ptype) +{ + u32 hash; + const __le64 rss_mask = + cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH << + I40E_RX_DESC_STATUS_FLTSTAT_SHIFT); + + if (ring->netdev->features & NETIF_F_RXHASH) + return; + + if ((rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) { + hash = le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss); + skb_set_hash(skb, hash, i40e_ptype_to_htype(rx_ptype)); + } +} + +/** * i40e_clean_rx_irq_ps - Reclaim resources after receive; packet split * @rx_ring: rx ring to clean * @budget: how many cleans we're allowed @@ -1071,8 +1073,8 @@ continue; } - skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), - i40e_ptype_to_hash(rx_ptype)); + i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype); + /* probably a little skewed due to removing CRC */ total_rx_bytes += skb->len; total_rx_packets++; @@ -1189,8 +1191,7 @@ continue; } - skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc), - i40e_ptype_to_hash(rx_ptype)); + i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype); /* probably a little skewed due to removing CRC */ total_rx_bytes += skb->len; total_rx_packets++; @@ -1263,10 +1264,12 @@ rx = i40e_set_new_dynamic_itr(&q_vector->rx); rxval = i40e_buildreg_itr(I40E_RX_ITR, q_vector->rx.itr); } + if (ITR_IS_DYNAMIC(vsi->tx_itr_setting)) { tx = i40e_set_new_dynamic_itr(&q_vector->tx); txval = i40e_buildreg_itr(I40E_TX_ITR, q_vector->tx.itr); } + if (rx || tx) { /* get the higher of the two ITR adjustments and * use the same value for both ITR registers @@ -1302,7 +1305,6 @@ q_vector->itr_countdown--; else q_vector->itr_countdown = ITR_COUNTDOWN_START; - } /** @@ -1335,7 +1337,7 @@ */ i40e_for_each_ring(ring, q_vector->tx) { clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit); - arm_wb |= ring->arm_wb; + arm_wb = arm_wb || ring->arm_wb; ring->arm_wb = false; } @@ -1364,8 +1366,10 @@ /* If work not completed, return budget and polling will return */ if (!clean_complete) { tx_only: - if (arm_wb) + if (arm_wb) { + q_vector->tx.ring[0].tx_stats.tx_force_wb++; i40evf_force_wb(vsi, q_vector); + } return budget; } @@ -1437,13 +1441,12 @@ * @tx_ring: ptr to the ring to send * @skb: ptr to the skb we're sending * @hdr_len: ptr to the size of the packet header - * @cd_tunneling: ptr to context descriptor bits + * @cd_type_cmd_tso_mss: Quad Word 1 * * Returns 0 if no TSO can happen, 1 if tso is going, or error **/ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb, - u8 *hdr_len, u64 *cd_type_cmd_tso_mss, - u32 *cd_tunneling) + u8 *hdr_len, u64 *cd_type_cmd_tso_mss) { u32 cd_cmd, cd_tso_len, cd_mss; struct ipv6hdr *ipv6h; @@ -1555,7 +1558,6 @@ *tx_flags |= I40E_TX_FLAGS_IPV6; } - if ((tx_ring->flags & I40E_TXR_FLAGS_OUTER_UDP_CSUM) && (l4_tunnel == I40E_TXD_CTX_UDP_TUNNELING) && (*cd_tunneling & I40E_TXD_CTX_QW0_EXT_IP_MASK)) { @@ -1654,7 +1656,7 @@ context_desc->type_cmd_tso_mss = cpu_to_le64(cd_type_cmd_tso_mss); } - /** +/** * i40e_chk_linearize - Check if there are more than 8 fragments per packet * @skb: send buffer * @tx_flags: collected send information @@ -1770,6 +1772,9 @@ u32 td_tag = 0; dma_addr_t dma; u16 gso_segs; + u16 desc_count = 0; + bool tail_bump = true; + bool do_rs = false; if (tx_flags & I40E_TX_FLAGS_HW_VLAN) { td_cmd |= I40E_TX_DESC_CMD_IL2TAG1; @@ -1810,6 +1815,8 @@ tx_desc++; i++; + desc_count++; + if (i == tx_ring->count) { tx_desc = I40E_TX_DESC(tx_ring, 0); i = 0; @@ -1829,6 +1836,8 @@ tx_desc++; i++; + desc_count++; + if (i == tx_ring->count) { tx_desc = I40E_TX_DESC(tx_ring, 0); i = 0; @@ -1843,35 +1852,6 @@ tx_bi = &tx_ring->tx_bi[i]; } - /* Place RS bit on last descriptor of any packet that spans across the - * 4th descriptor (WB_STRIDE aka 0x3) in a 64B cacheline. - */ -#define WB_STRIDE 0x3 - if (((i & WB_STRIDE) != WB_STRIDE) && - (first <= &tx_ring->tx_bi[i]) && - (first >= &tx_ring->tx_bi[i & ~WB_STRIDE])) { - tx_desc->cmd_type_offset_bsz = - build_ctob(td_cmd, td_offset, size, td_tag) | - cpu_to_le64((u64)I40E_TX_DESC_CMD_EOP << - I40E_TXD_QW1_CMD_SHIFT); - } else { - tx_desc->cmd_type_offset_bsz = - build_ctob(td_cmd, td_offset, size, td_tag) | - cpu_to_le64((u64)I40E_TXD_CMD << - I40E_TXD_QW1_CMD_SHIFT); - } - - netdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev, - tx_ring->queue_index), - first->bytecount); - - /* Force memory writes to complete before letting h/w - * know there are new descriptors to fetch. (Only - * applicable for weak-ordered memory model archs, - * such as IA-64). - */ - wmb(); - /* set next_to_watch value indicating a packet is present */ first->next_to_watch = tx_desc; @@ -1881,15 +1861,72 @@ tx_ring->next_to_use = i; + netdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index), + first->bytecount); i40evf_maybe_stop_tx(tx_ring, DESC_NEEDED); + + /* Algorithm to optimize tail and RS bit setting: + * if xmit_more is supported + * if xmit_more is true + * do not update tail and do not mark RS bit. + * if xmit_more is false and last xmit_more was false + * if every packet spanned less than 4 desc + * then set RS bit on 4th packet and update tail + * on every packet + * else + * update tail and set RS bit on every packet. + * if xmit_more is false and last_xmit_more was true + * update tail and set RS bit. + * + * Optimization: wmb to be issued only in case of tail update. + * Also optimize the Descriptor WB path for RS bit with the same + * algorithm. + * + * Note: If there are less than 4 packets + * pending and interrupts were disabled the service task will + * trigger a force WB. + */ + if (skb->xmit_more && + !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index))) { + tx_ring->flags |= I40E_TXR_FLAGS_LAST_XMIT_MORE_SET; + tail_bump = false; + } else if (!skb->xmit_more && + !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->queue_index)) && + (!(tx_ring->flags & I40E_TXR_FLAGS_LAST_XMIT_MORE_SET)) && + (tx_ring->packet_stride < WB_STRIDE) && + (desc_count < WB_STRIDE)) { + tx_ring->packet_stride++; + } else { + tx_ring->packet_stride = 0; + tx_ring->flags &= ~I40E_TXR_FLAGS_LAST_XMIT_MORE_SET; + do_rs = true; + } + if (do_rs) + tx_ring->packet_stride = 0; + + tx_desc->cmd_type_offset_bsz = + build_ctob(td_cmd, td_offset, size, td_tag) | + cpu_to_le64((u64)(do_rs ? I40E_TXD_CMD : + I40E_TX_DESC_CMD_EOP) << + I40E_TXD_QW1_CMD_SHIFT); + /* notify HW of packet */ - if (!skb->xmit_more || - netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev, - tx_ring->queue_index))) - writel(i, tx_ring->tail); - else + if (!tail_bump) prefetchw(tx_desc + 1); + if (tail_bump) { + /* Force memory writes to complete before letting h/w + * know there are new descriptors to fetch. (Only + * applicable for weak-ordered memory model archs, + * such as IA-64). + */ + wmb(); + writel(i, tx_ring->tail); + } + return; dma_error: @@ -1961,6 +1998,9 @@ u8 hdr_len = 0; int tso; + /* prefetch the data, we'll need it later */ + prefetch(skb->data); + if (0 == i40evf_xmit_descriptor_count(skb, tx_ring)) return NETDEV_TX_BUSY; @@ -1980,8 +2020,7 @@ else if (protocol == htons(ETH_P_IPV6)) tx_flags |= I40E_TX_FLAGS_IPV6; - tso = i40e_tso(tx_ring, skb, &hdr_len, - &cd_type_cmd_tso_mss, &cd_tunneling); + tso = i40e_tso(tx_ring, skb, &hdr_len, &cd_type_cmd_tso_mss); if (tso < 0) goto out_drop; @@ -2029,7 +2068,7 @@ netdev_tx_t i40evf_xmit_frame(struct sk_buff *skb, struct net_device *netdev) { struct i40evf_adapter *adapter = netdev_priv(netdev); - struct i40e_ring *tx_ring = adapter->tx_rings[skb->queue_mapping]; + struct i40e_ring *tx_ring = &adapter->tx_rings[skb->queue_mapping]; /* hardware can't handle really short frames, hardware padding works * beyond this point --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_txrx.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_txrx.h @@ -201,6 +201,7 @@ u64 tx_busy; u64 tx_done_old; u64 tx_linearize; + u64 tx_force_wb; }; struct i40e_rx_queue_stats { @@ -267,6 +268,8 @@ bool ring_active; /* is ring online or not */ bool arm_wb; /* do something to arm write back */ + u8 packet_stride; +#define I40E_TXR_FLAGS_LAST_XMIT_MORE_SET BIT(2) u16 flags; #define I40E_TXR_FLAGS_WB_ON_ITR BIT(0) @@ -321,4 +324,19 @@ void i40evf_free_tx_resources(struct i40e_ring *tx_ring); void i40evf_free_rx_resources(struct i40e_ring *rx_ring); int i40evf_napi_poll(struct napi_struct *napi, int budget); +u32 i40evf_get_tx_pending(struct i40e_ring *ring); + +/** + * i40e_get_head - Retrieve head from head writeback + * @tx_ring: Tx ring to fetch head of + * + * Returns value of Tx ring head based on value stored + * in head write-back location + **/ +static inline u32 i40e_get_head(struct i40e_ring *tx_ring) +{ + void *head = (struct i40e_tx_desc *)tx_ring->desc + tx_ring->count; + + return le32_to_cpu(*(volatile __le32 *)head); +} #endif /* _I40E_TXRX_H_ */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h @@ -153,6 +153,7 @@ #define I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR 0x00000020 #define I40E_VIRTCHNL_VF_OFFLOAD_VLAN 0x00010000 #define I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING 0x00020000 +#define I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2 0x00040000 struct i40e_virtchnl_vf_resource { u16 num_vsis; --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40evf.h +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40evf.h @@ -67,6 +67,8 @@ u16 rx_itr_setting; u16 tx_itr_setting; u16 qs_handle; + u8 *rss_hkey_user; /* User configured hash keys */ + u8 *rss_lut_user; /* User configured lookup table entries */ }; /* How many Rx Buffers do we bundle into one write to the hardware ? */ @@ -95,10 +97,10 @@ #define I40E_TX_DESC(R, i) (&(((struct i40e_tx_desc *)((R)->desc))[i])) #define I40E_TX_CTXTDESC(R, i) \ (&(((struct i40e_tx_context_desc *)((R)->desc))[i])) -#define MAX_RX_QUEUES 8 -#define MAX_TX_QUEUES MAX_RX_QUEUES +#define MAX_QUEUES 16 #define I40EVF_HKEY_ARRAY_SIZE ((I40E_VFQF_HKEY_MAX_INDEX + 1) * 4) +#define I40EVF_HLUT_ARRAY_SIZE ((I40E_VFQF_HLUT_MAX_INDEX + 1) * 4) /* MAX_MSIX_Q_VECTORS of these are allocated, * but we only use one per queue-specific vector. @@ -142,9 +144,6 @@ #define OTHER_VECTOR 1 #define NONQ_VECS (OTHER_VECTOR) -#define MAX_MSIX_Q_VECTORS 4 -#define MAX_MSIX_COUNT 5 - #define MIN_MSIX_Q_VECTORS 1 #define MIN_MSIX_COUNT (MIN_MSIX_Q_VECTORS + NONQ_VECS) @@ -190,19 +189,19 @@ struct work_struct reset_task; struct work_struct adminq_task; struct delayed_work init_task; - struct i40e_q_vector *q_vector[MAX_MSIX_Q_VECTORS]; + struct i40e_q_vector *q_vectors; struct list_head vlan_filter_list; char misc_vector_name[IFNAMSIZ + 9]; int num_active_queues; /* TX */ - struct i40e_ring *tx_rings[I40E_MAX_VSI_QP]; + struct i40e_ring *tx_rings; u32 tx_timeout_count; struct list_head mac_filter_list; u32 tx_desc_count; /* RX */ - struct i40e_ring *rx_rings[I40E_MAX_VSI_QP]; + struct i40e_ring *rx_rings; u64 hw_csum_rx_error; u32 rx_desc_count; int num_msix_vectors; @@ -313,4 +312,8 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter, enum i40e_virtchnl_ops v_opcode, i40e_status v_retval, u8 *msg, u16 msglen); +int i40evf_config_rss(struct i40e_vsi *vsi, const u8 *seed, u8 *lut, + u16 lut_size); +int i40evf_get_rss(struct i40e_vsi *vsi, const u8 *seed, u8 *lut, + u16 lut_size); #endif /* _I40EVF_H_ */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c @@ -121,12 +121,12 @@ data[i] = *(u64 *)p; } for (j = 0; j < adapter->num_active_queues; j++) { - data[i++] = adapter->tx_rings[j]->stats.packets; - data[i++] = adapter->tx_rings[j]->stats.bytes; + data[i++] = adapter->tx_rings[j].stats.packets; + data[i++] = adapter->tx_rings[j].stats.bytes; } for (j = 0; j < adapter->num_active_queues; j++) { - data[i++] = adapter->rx_rings[j]->stats.packets; - data[i++] = adapter->rx_rings[j]->stats.bytes; + data[i++] = adapter->rx_rings[j].stats.packets; + data[i++] = adapter->rx_rings[j].stats.bytes; } } @@ -351,7 +351,7 @@ vsi->tx_itr_setting &= ~I40E_ITR_DYNAMIC; for (i = 0; i < adapter->num_msix_vectors - NONQ_VECS; i++) { - q_vector = adapter->q_vector[i]; + q_vector = &adapter->q_vectors[i]; q_vector->rx.itr = ITR_TO_REG(vsi->rx_itr_setting); wr32(hw, I40E_VFINT_ITRN1(0, i), q_vector->rx.itr); q_vector->tx.itr = ITR_TO_REG(vsi->tx_itr_setting); @@ -634,25 +634,34 @@ u8 *hfunc) { struct i40evf_adapter *adapter = netdev_priv(netdev); - struct i40e_hw *hw = &adapter->hw; - u32 hlut_val; - int i, j; + struct i40e_vsi *vsi = &adapter->vsi; + u8 *seed = NULL, *lut; + int ret; + u16 i; if (hfunc) *hfunc = ETH_RSS_HASH_TOP; if (!indir) return 0; - if (indir) { - for (i = 0, j = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) { - hlut_val = rd32(hw, I40E_VFQF_HLUT(i)); - indir[j++] = hlut_val & 0xff; - indir[j++] = (hlut_val >> 8) & 0xff; - indir[j++] = (hlut_val >> 16) & 0xff; - indir[j++] = (hlut_val >> 24) & 0xff; - } - } - return 0; + seed = key; + + lut = kzalloc(I40EVF_HLUT_ARRAY_SIZE, GFP_KERNEL); + if (!lut) + return -ENOMEM; + + ret = i40evf_get_rss(vsi, seed, lut, I40EVF_HLUT_ARRAY_SIZE); + if (ret) + goto out; + + /* Each 32 bits pointed by 'indir' is stored with a lut entry */ + for (i = 0; i < I40EVF_HLUT_ARRAY_SIZE; i++) + indir[i] = (u32)lut[i]; + +out: + kfree(lut); + + return ret; } /** @@ -668,9 +677,9 @@ const u8 *key, const u8 hfunc) { struct i40evf_adapter *adapter = netdev_priv(netdev); - struct i40e_hw *hw = &adapter->hw; - u32 hlut_val; - int i, j; + struct i40e_vsi *vsi = &adapter->vsi; + u8 *seed = NULL; + u16 i; /* We do not allow change in unsupported parameters */ if (key || @@ -679,15 +688,29 @@ if (!indir) return 0; - for (i = 0, j = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) { - hlut_val = indir[j++]; - hlut_val |= indir[j++] << 8; - hlut_val |= indir[j++] << 16; - hlut_val |= indir[j++] << 24; - wr32(hw, I40E_VFQF_HLUT(i), hlut_val); + if (key) { + if (!vsi->rss_hkey_user) { + vsi->rss_hkey_user = kzalloc(I40EVF_HKEY_ARRAY_SIZE, + GFP_KERNEL); + if (!vsi->rss_hkey_user) + return -ENOMEM; + } + memcpy(vsi->rss_hkey_user, key, I40EVF_HKEY_ARRAY_SIZE); + seed = vsi->rss_hkey_user; } + if (!vsi->rss_lut_user) { + vsi->rss_lut_user = kzalloc(I40EVF_HLUT_ARRAY_SIZE, + GFP_KERNEL); + if (!vsi->rss_lut_user) + return -ENOMEM; + } + + /* Each 32 bits pointed by 'indir' is stored with a lut entry */ + for (i = 0; i < I40EVF_HLUT_ARRAY_SIZE; i++) + vsi->rss_lut_user[i] = (u8)(indir[i]); - return 0; + return i40evf_config_rss(vsi, seed, vsi->rss_lut_user, + I40EVF_HLUT_ARRAY_SIZE); } static const struct ethtool_ops i40evf_ethtool_ops = { --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40evf_main.c @@ -34,7 +34,15 @@ static const char i40evf_driver_string[] = "Intel(R) XL710/X710 Virtual Function Network Driver"; -#define DRV_VERSION "1.3.33" +#define DRV_KERN "-k" + +#define DRV_VERSION_MAJOR 1 +#define DRV_VERSION_MINOR 4 +#define DRV_VERSION_BUILD 4 +#define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \ + __stringify(DRV_VERSION_MINOR) "." \ + __stringify(DRV_VERSION_BUILD) \ + DRV_KERN const char i40evf_driver_version[] = DRV_VERSION; static const char i40evf_copyright[] = "Copyright (c) 2013 - 2015 Intel Corporation."; @@ -259,7 +267,7 @@ { struct i40e_hw *hw = &adapter->hw; int i; - uint32_t dyn_ctl; + u32 dyn_ctl; if (mask & 1) { dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTL01); @@ -307,10 +315,9 @@ struct i40e_hw *hw = &adapter->hw; u32 val; - /* handle non-queue interrupts */ - rd32(hw, I40E_VFINT_ICR01); - rd32(hw, I40E_VFINT_ICR0_ENA1); - + /* handle non-queue interrupts, these reads clear the registers */ + val = rd32(hw, I40E_VFINT_ICR01); + val = rd32(hw, I40E_VFINT_ICR0_ENA1); val = rd32(hw, I40E_VFINT_DYN_CTL01) | I40E_VFINT_DYN_CTL01_CLEARPBA_MASK; @@ -348,8 +355,8 @@ static void i40evf_map_vector_to_rxq(struct i40evf_adapter *adapter, int v_idx, int r_idx) { - struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; - struct i40e_ring *rx_ring = adapter->rx_rings[r_idx]; + struct i40e_q_vector *q_vector = &adapter->q_vectors[v_idx]; + struct i40e_ring *rx_ring = &adapter->rx_rings[r_idx]; rx_ring->q_vector = q_vector; rx_ring->next = q_vector->rx.ring; @@ -369,8 +376,8 @@ static void i40evf_map_vector_to_txq(struct i40evf_adapter *adapter, int v_idx, int t_idx) { - struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; - struct i40e_ring *tx_ring = adapter->tx_rings[t_idx]; + struct i40e_q_vector *q_vector = &adapter->q_vectors[v_idx]; + struct i40e_ring *tx_ring = &adapter->tx_rings[t_idx]; tx_ring->q_vector = q_vector; tx_ring->next = q_vector->tx.ring; @@ -465,7 +472,7 @@ return; for (i = 0; i < q_vectors; i++) - i40evf_msix_clean_rings(0, adapter->q_vector[i]); + i40evf_msix_clean_rings(0, &adapter->q_vectors[i]); } #endif @@ -487,7 +494,7 @@ q_vectors = adapter->num_msix_vectors - NONQ_VECS; for (vector = 0; vector < q_vectors; vector++) { - struct i40e_q_vector *q_vector = adapter->q_vector[vector]; + struct i40e_q_vector *q_vector = &adapter->q_vectors[vector]; if (q_vector->tx.ring && q_vector->rx.ring) { snprintf(q_vector->name, sizeof(q_vector->name) - 1, @@ -532,7 +539,7 @@ adapter->msix_entries[vector + NONQ_VECS].vector, NULL); free_irq(adapter->msix_entries[vector + NONQ_VECS].vector, - adapter->q_vector[vector]); + &adapter->q_vectors[vector]); } return err; } @@ -582,7 +589,7 @@ irq_set_affinity_hint(adapter->msix_entries[i+1].vector, NULL); free_irq(adapter->msix_entries[i+1].vector, - adapter->q_vector[i]); + &adapter->q_vectors[i]); } } @@ -611,7 +618,7 @@ int i; for (i = 0; i < adapter->num_active_queues; i++) - adapter->tx_rings[i]->tail = hw->hw_addr + I40E_QTX_TAIL1(i); + adapter->tx_rings[i].tail = hw->hw_addr + I40E_QTX_TAIL1(i); } /** @@ -656,8 +663,8 @@ } for (i = 0; i < adapter->num_active_queues; i++) { - adapter->rx_rings[i]->tail = hw->hw_addr + I40E_QRX_TAIL1(i); - adapter->rx_rings[i]->rx_buf_len = rx_buf_len; + adapter->rx_rings[i].tail = hw->hw_addr + I40E_QRX_TAIL1(i); + adapter->rx_rings[i].rx_buf_len = rx_buf_len; } } @@ -954,7 +961,7 @@ for (q_idx = 0; q_idx < q_vectors; q_idx++) { struct napi_struct *napi; - q_vector = adapter->q_vector[q_idx]; + q_vector = &adapter->q_vectors[q_idx]; napi = &q_vector->napi; napi_enable(napi); } @@ -971,7 +978,7 @@ int q_vectors = adapter->num_msix_vectors - NONQ_VECS; for (q_idx = 0; q_idx < q_vectors; q_idx++) { - q_vector = adapter->q_vector[q_idx]; + q_vector = &adapter->q_vectors[q_idx]; napi_disable(&q_vector->napi); } } @@ -992,7 +999,7 @@ adapter->aq_required |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; for (i = 0; i < adapter->num_active_queues; i++) { - struct i40e_ring *ring = adapter->rx_rings[i]; + struct i40e_ring *ring = &adapter->rx_rings[i]; i40evf_alloc_rx_buffers_1buf(ring, ring->count); ring->next_to_use = ring->count - 1; @@ -1112,16 +1119,10 @@ **/ static void i40evf_free_queues(struct i40evf_adapter *adapter) { - int i; - if (!adapter->vsi_res) return; - for (i = 0; i < adapter->num_active_queues; i++) { - if (adapter->tx_rings[i]) - kfree_rcu(adapter->tx_rings[i], rcu); - adapter->tx_rings[i] = NULL; - adapter->rx_rings[i] = NULL; - } + kfree(adapter->tx_rings); + kfree(adapter->rx_rings); } /** @@ -1136,13 +1137,20 @@ { int i; + adapter->tx_rings = kcalloc(adapter->num_active_queues, + sizeof(struct i40e_ring), GFP_KERNEL); + if (!adapter->tx_rings) + goto err_out; + adapter->rx_rings = kcalloc(adapter->num_active_queues, + sizeof(struct i40e_ring), GFP_KERNEL); + if (!adapter->rx_rings) + goto err_out; + for (i = 0; i < adapter->num_active_queues; i++) { struct i40e_ring *tx_ring; struct i40e_ring *rx_ring; - tx_ring = kzalloc(sizeof(*tx_ring) * 2, GFP_KERNEL); - if (!tx_ring) - goto err_out; + tx_ring = &adapter->tx_rings[i]; tx_ring->queue_index = i; tx_ring->netdev = adapter->netdev; @@ -1150,14 +1158,12 @@ tx_ring->count = adapter->tx_desc_count; if (adapter->flags & I40E_FLAG_WB_ON_ITR_CAPABLE) tx_ring->flags |= I40E_TXR_FLAGS_WB_ON_ITR; - adapter->tx_rings[i] = tx_ring; - rx_ring = &tx_ring[1]; + rx_ring = &adapter->rx_rings[i]; rx_ring->queue_index = i; rx_ring->netdev = adapter->netdev; rx_ring->dev = &adapter->pdev->dev; rx_ring->count = adapter->rx_desc_count; - adapter->rx_rings[i] = rx_ring; } return 0; @@ -1207,115 +1213,273 @@ err = i40evf_acquire_msix_vectors(adapter, v_budget); out: - adapter->netdev->real_num_tx_queues = pairs; + netif_set_real_num_rx_queues(adapter->netdev, pairs); + netif_set_real_num_tx_queues(adapter->netdev, pairs); return err; } /** - * i40e_configure_rss_aq - Prepare for RSS using AQ commands + * i40e_config_rss_aq - Prepare for RSS using AQ commands * @vsi: vsi structure * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Return 0 on success, negative on failure **/ -static void i40evf_configure_rss_aq(struct i40e_vsi *vsi, const u8 *seed) +static int i40evf_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) { - struct i40e_aqc_get_set_rss_key_data rss_key; struct i40evf_adapter *adapter = vsi->back; struct i40e_hw *hw = &adapter->hw; - int ret = 0, i; - u8 *rss_lut; + int ret = 0; if (!vsi->id) - return; + return -EINVAL; if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { /* bail because we already have a command pending */ dev_err(&adapter->pdev->dev, "Cannot confiure RSS, command %d pending\n", adapter->current_op); - return; + return -EBUSY; } - memset(&rss_key, 0, sizeof(rss_key)); - memcpy(&rss_key, seed, sizeof(rss_key)); + if (seed) { + struct i40e_aqc_get_set_rss_key_data *rss_key = + (struct i40e_aqc_get_set_rss_key_data *)seed; + ret = i40evf_aq_set_rss_key(hw, vsi->id, rss_key); + if (ret) { + dev_err(&adapter->pdev->dev, "Cannot set RSS key, err %s aq_err %s\n", + i40evf_stat_str(hw, ret), + i40evf_aq_str(hw, hw->aq.asq_last_status)); + return ret; + } + } - rss_lut = kzalloc(((I40E_VFQF_HLUT_MAX_INDEX + 1) * 4), GFP_KERNEL); - if (!rss_lut) - return; + if (lut) { + ret = i40evf_aq_set_rss_lut(hw, vsi->id, false, lut, lut_size); + if (ret) { + dev_err(&adapter->pdev->dev, + "Cannot set RSS lut, err %s aq_err %s\n", + i40evf_stat_str(hw, ret), + i40evf_aq_str(hw, hw->aq.asq_last_status)); + return ret; + } + } - /* Populate the LUT with max no. PF queues in round robin fashion */ - for (i = 0; i <= (I40E_VFQF_HLUT_MAX_INDEX * 4); i++) - rss_lut[i] = i % adapter->num_active_queues; + return ret; +} - ret = i40evf_aq_set_rss_key(hw, vsi->id, &rss_key); - if (ret) { - dev_err(&adapter->pdev->dev, - "Cannot set RSS key, err %s aq_err %s\n", - i40evf_stat_str(hw, ret), - i40evf_aq_str(hw, hw->aq.asq_last_status)); - return; +/** + * i40evf_config_rss_reg - Configure RSS keys and lut by writing registers + * @vsi: Pointer to vsi structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure + **/ +static int i40evf_config_rss_reg(struct i40e_vsi *vsi, const u8 *seed, + const u8 *lut, u16 lut_size) +{ + struct i40evf_adapter *adapter = vsi->back; + struct i40e_hw *hw = &adapter->hw; + u16 i; + + if (seed) { + u32 *seed_dw = (u32 *)seed; + + for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) + wr32(hw, I40E_VFQF_HKEY(i), seed_dw[i]); } - ret = i40evf_aq_set_rss_lut(hw, vsi->id, false, rss_lut, - (I40E_VFQF_HLUT_MAX_INDEX + 1) * 4); - if (ret) - dev_err(&adapter->pdev->dev, - "Cannot set RSS lut, err %s aq_err %s\n", - i40evf_stat_str(hw, ret), - i40evf_aq_str(hw, hw->aq.asq_last_status)); + if (lut) { + u32 *lut_dw = (u32 *)lut; + + if (lut_size != I40EVF_HLUT_ARRAY_SIZE) + return -EINVAL; + + for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) + wr32(hw, I40E_VFQF_HLUT(i), lut_dw[i]); + } + i40e_flush(hw); + + return 0; } /** - * i40e_configure_rss_reg - Prepare for RSS if used - * @adapter: board private structure - * @seed: RSS hash seed + * * i40evf_get_rss_aq - Get RSS keys and lut by using AQ commands + * @vsi: Pointer to vsi structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Return 0 on success, negative on failure **/ -static void i40evf_configure_rss_reg(struct i40evf_adapter *adapter, - const u8 *seed) +static int i40evf_get_rss_aq(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) { + struct i40evf_adapter *adapter = vsi->back; struct i40e_hw *hw = &adapter->hw; - u32 *seed_dw = (u32 *)seed; - u32 cqueue = 0; - u32 lut = 0; - int i, j; + int ret = 0; - /* Fill out hash function seed */ - for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) - wr32(hw, I40E_VFQF_HKEY(i), seed_dw[i]); - - /* Populate the LUT with max no. PF queues in round robin fashion */ - for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) { - lut = 0; - for (j = 0; j < 4; j++) { - if (cqueue == adapter->num_active_queues) - cqueue = 0; - lut |= ((cqueue) << (8 * j)); - cqueue++; + if (seed) { + ret = i40evf_aq_get_rss_key(hw, vsi->id, + (struct i40e_aqc_get_set_rss_key_data *)seed); + if (ret) { + dev_err(&adapter->pdev->dev, + "Cannot get RSS key, err %s aq_err %s\n", + i40evf_stat_str(hw, ret), + i40evf_aq_str(hw, hw->aq.asq_last_status)); + return ret; } - wr32(hw, I40E_VFQF_HLUT(i), lut); } - i40e_flush(hw); + + if (lut) { + ret = i40evf_aq_get_rss_lut(hw, vsi->id, seed, lut, lut_size); + if (ret) { + dev_err(&adapter->pdev->dev, + "Cannot get RSS lut, err %s aq_err %s\n", + i40evf_stat_str(hw, ret), + i40evf_aq_str(hw, hw->aq.asq_last_status)); + return ret; + } + } + + return ret; +} + +/** + * * i40evf_get_rss_reg - Get RSS keys and lut by reading registers + * @vsi: Pointer to vsi structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure + **/ +static int i40evf_get_rss_reg(struct i40e_vsi *vsi, const u8 *seed, + const u8 *lut, u16 lut_size) +{ + struct i40evf_adapter *adapter = vsi->back; + struct i40e_hw *hw = &adapter->hw; + u16 i; + + if (seed) { + u32 *seed_dw = (u32 *)seed; + + for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) + seed_dw[i] = rd32(hw, I40E_VFQF_HKEY(i)); + } + + if (lut) { + u32 *lut_dw = (u32 *)lut; + + if (lut_size != I40EVF_HLUT_ARRAY_SIZE) + return -EINVAL; + + for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) + lut_dw[i] = rd32(hw, I40E_VFQF_HLUT(i)); + } + + return 0; +} + +/** + * i40evf_config_rss - Configure RSS keys and lut + * @vsi: Pointer to vsi structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure + **/ +int i40evf_config_rss(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) +{ + struct i40evf_adapter *adapter = vsi->back; + + if (RSS_AQ(adapter)) + return i40evf_config_rss_aq(vsi, seed, lut, lut_size); + else + return i40evf_config_rss_reg(vsi, seed, lut, lut_size); +} + +/** + * i40evf_get_rss - Get RSS keys and lut + * @vsi: Pointer to vsi structure + * @seed: RSS hash seed + * @lut: Lookup table + * @lut_size: Lookup table size + * + * Returns 0 on success, negative on failure + **/ +int i40evf_get_rss(struct i40e_vsi *vsi, const u8 *seed, u8 *lut, u16 lut_size) +{ + struct i40evf_adapter *adapter = vsi->back; + + if (RSS_AQ(adapter)) + return i40evf_get_rss_aq(vsi, seed, lut, lut_size); + else + return i40evf_get_rss_reg(vsi, seed, lut, lut_size); } /** - * i40evf_configure_rss - Prepare for RSS + * i40evf_fill_rss_lut - Fill the lut with default values + * @lut: Lookup table to be filled with + * @rss_table_size: Lookup table size + * @rss_size: Range of queue number for hashing + **/ +static void i40evf_fill_rss_lut(u8 *lut, u16 rss_table_size, u16 rss_size) +{ + u16 i; + + for (i = 0; i < rss_table_size; i++) + lut[i] = i % rss_size; +} + +/** + * i40evf_init_rss - Prepare for RSS * @adapter: board private structure + * + * Return 0 on success, negative on failure **/ -static void i40evf_configure_rss(struct i40evf_adapter *adapter) +static int i40evf_init_rss(struct i40evf_adapter *adapter) { + struct i40e_vsi *vsi = &adapter->vsi; struct i40e_hw *hw = &adapter->hw; u8 seed[I40EVF_HKEY_ARRAY_SIZE]; u64 hena; - - netdev_rss_key_fill((void *)seed, I40EVF_HKEY_ARRAY_SIZE); + u8 *lut; + int ret; /* Enable PCTYPES for RSS, TCP/UDP with IPv4/IPv6 */ hena = I40E_DEFAULT_RSS_HENA; wr32(hw, I40E_VFQF_HENA(0), (u32)hena); wr32(hw, I40E_VFQF_HENA(1), (u32)(hena >> 32)); - if (RSS_AQ(adapter)) - i40evf_configure_rss_aq(&adapter->vsi, seed); + lut = kzalloc(I40EVF_HLUT_ARRAY_SIZE, GFP_KERNEL); + if (!lut) + return -ENOMEM; + + /* Use user configured lut if there is one, otherwise use default */ + if (vsi->rss_lut_user) + memcpy(lut, vsi->rss_lut_user, I40EVF_HLUT_ARRAY_SIZE); + else + i40evf_fill_rss_lut(lut, I40EVF_HLUT_ARRAY_SIZE, + adapter->num_active_queues); + + /* Use user configured hash key if there is one, otherwise + * user default. + */ + if (vsi->rss_hkey_user) + memcpy(seed, vsi->rss_hkey_user, I40EVF_HKEY_ARRAY_SIZE); else - i40evf_configure_rss_reg(adapter, seed); + netdev_rss_key_fill((void *)seed, I40EVF_HKEY_ARRAY_SIZE); + ret = i40evf_config_rss(vsi, seed, lut, I40EVF_HLUT_ARRAY_SIZE); + kfree(lut); + + return ret; } /** @@ -1327,21 +1491,22 @@ **/ static int i40evf_alloc_q_vectors(struct i40evf_adapter *adapter) { - int q_idx, num_q_vectors; + int q_idx = 0, num_q_vectors; struct i40e_q_vector *q_vector; num_q_vectors = adapter->num_msix_vectors - NONQ_VECS; + adapter->q_vectors = kcalloc(num_q_vectors, sizeof(*q_vector), + GFP_KERNEL); + if (!adapter->q_vectors) + goto err_out; for (q_idx = 0; q_idx < num_q_vectors; q_idx++) { - q_vector = kzalloc(sizeof(*q_vector), GFP_KERNEL); - if (!q_vector) - goto err_out; + q_vector = &adapter->q_vectors[q_idx]; q_vector->adapter = adapter; q_vector->vsi = &adapter->vsi; q_vector->v_idx = q_idx; netif_napi_add(adapter->netdev, &q_vector->napi, i40evf_napi_poll, NAPI_POLL_WEIGHT); - adapter->q_vector[q_idx] = q_vector; } return 0; @@ -1349,11 +1514,10 @@ err_out: while (q_idx) { q_idx--; - q_vector = adapter->q_vector[q_idx]; + q_vector = &adapter->q_vectors[q_idx]; netif_napi_del(&q_vector->napi); - kfree(q_vector); - adapter->q_vector[q_idx] = NULL; } + kfree(adapter->q_vectors); return -ENOMEM; } @@ -1374,13 +1538,11 @@ napi_vectors = adapter->num_active_queues; for (q_idx = 0; q_idx < num_q_vectors; q_idx++) { - struct i40e_q_vector *q_vector = adapter->q_vector[q_idx]; - - adapter->q_vector[q_idx] = NULL; + struct i40e_q_vector *q_vector = &adapter->q_vectors[q_idx]; if (q_idx < napi_vectors) netif_napi_del(&q_vector->napi); - kfree(q_vector); } + kfree(adapter->q_vectors); } /** @@ -1439,6 +1601,22 @@ } /** + * i40evf_clear_rss_config_user - Clear user configurations of RSS + * @vsi: Pointer to VSI structure + **/ +static void i40evf_clear_rss_config_user(struct i40e_vsi *vsi) +{ + if (!vsi) + return; + + kfree(vsi->rss_hkey_user); + vsi->rss_hkey_user = NULL; + + kfree(vsi->rss_lut_user); + vsi->rss_lut_user = NULL; +} + +/** * i40evf_watchdog_timer - Periodic call-back timer * @data: pointer to adapter disguised as unsigned long **/ @@ -1565,7 +1743,7 @@ * PF, so we don't have to set current_op as we will * not get a response through the ARQ. */ - i40evf_configure_rss(adapter); + i40evf_init_rss(adapter); adapter->aq_required &= ~I40EVF_FLAG_AQ_CONFIGURE_RSS; goto watchdog_done; } @@ -1864,9 +2042,12 @@ { int i; + if (!adapter->tx_rings) + return; + for (i = 0; i < adapter->num_active_queues; i++) - if (adapter->tx_rings[i]->desc) - i40evf_free_tx_resources(adapter->tx_rings[i]); + if (adapter->tx_rings[i].desc) + i40evf_free_tx_resources(&adapter->tx_rings[i]); } /** @@ -1884,8 +2065,8 @@ int i, err = 0; for (i = 0; i < adapter->num_active_queues; i++) { - adapter->tx_rings[i]->count = adapter->tx_desc_count; - err = i40evf_setup_tx_descriptors(adapter->tx_rings[i]); + adapter->tx_rings[i].count = adapter->tx_desc_count; + err = i40evf_setup_tx_descriptors(&adapter->tx_rings[i]); if (!err) continue; dev_err(&adapter->pdev->dev, @@ -1911,8 +2092,8 @@ int i, err = 0; for (i = 0; i < adapter->num_active_queues; i++) { - adapter->rx_rings[i]->count = adapter->rx_desc_count; - err = i40evf_setup_rx_descriptors(adapter->rx_rings[i]); + adapter->rx_rings[i].count = adapter->rx_desc_count; + err = i40evf_setup_rx_descriptors(&adapter->rx_rings[i]); if (!err) continue; dev_err(&adapter->pdev->dev, @@ -1932,9 +2113,12 @@ { int i; + if (!adapter->rx_rings) + return; + for (i = 0; i < adapter->num_active_queues; i++) - if (adapter->rx_rings[i]->desc) - i40evf_free_rx_resources(adapter->rx_rings[i]); + if (adapter->rx_rings[i].desc) + i40evf_free_rx_resources(&adapter->rx_rings[i]); } /** @@ -2263,6 +2447,14 @@ if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) { err = i40evf_send_vf_config_msg(adapter); goto err; + } else if (err == I40E_ERR_PARAM) { + /* We only get ERR_PARAM if the device is in a very bad + * state or if we've been disabled for previous bad + * behavior. Either way, we're done now. + */ + i40evf_shutdown_adminq(hw); + dev_err(&pdev->dev, "Unable to get VF config due to PF error condition, not retrying\n"); + return; } if (err) { dev_err(&pdev->dev, "Unable to get VF config (%d)\n", @@ -2313,7 +2505,7 @@ I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE; if (!RSS_AQ(adapter)) - i40evf_configure_rss(adapter); + i40evf_init_rss(adapter); err = i40evf_request_misc_irq(adapter); if (err) goto err_sw_init; @@ -2334,7 +2526,6 @@ if (netdev->features & NETIF_F_GRO) dev_info(&pdev->dev, "GRO is enabled\n"); - dev_info(&pdev->dev, "%s\n", i40evf_driver_string); adapter->state = __I40EVF_DOWN; set_bit(__I40E_DOWN, &adapter->vsi.state); i40evf_misc_irq_enable(adapter); @@ -2343,7 +2534,7 @@ adapter->aq_required |= I40EVF_FLAG_AQ_CONFIGURE_RSS; mod_timer_pending(&adapter->watchdog_timer, jiffies + 1); } else { - i40evf_configure_rss(adapter); + i40evf_init_rss(adapter); } return; restart: @@ -2438,8 +2629,7 @@ pci_set_master(pdev); - netdev = alloc_etherdev_mq(sizeof(struct i40evf_adapter), - MAX_TX_QUEUES); + netdev = alloc_etherdev_mq(sizeof(struct i40evf_adapter), MAX_QUEUES); if (!netdev) { err = -ENOMEM; goto err_alloc_etherdev; @@ -2632,6 +2822,9 @@ flush_scheduled_work(); + /* Clear user configurations for RSS */ + i40evf_clear_rss_config_user(&adapter->vsi); + if (hw->aq.asq.count) i40evf_shutdown_adminq(hw); --- linux-4.4.0.orig/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c +++ linux-4.4.0/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c @@ -157,7 +157,9 @@ I40E_VIRTCHNL_VF_OFFLOAD_RSS_AQ | I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG | I40E_VIRTCHNL_VF_OFFLOAD_VLAN | - I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR; + I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR | + I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2; + adapter->current_op = I40E_VIRTCHNL_OP_GET_VF_RESOURCES; adapter->aq_required &= ~I40EVF_FLAG_AQ_GET_CONFIG; if (PF_IS_V11(adapter)) @@ -242,7 +244,7 @@ adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES; len = sizeof(struct i40e_virtchnl_vsi_queue_config_info) + (sizeof(struct i40e_virtchnl_queue_pair_info) * pairs); - vqci = kzalloc(len, GFP_ATOMIC); + vqci = kzalloc(len, GFP_KERNEL); if (!vqci) return; @@ -255,19 +257,19 @@ for (i = 0; i < pairs; i++) { vqpi->txq.vsi_id = vqci->vsi_id; vqpi->txq.queue_id = i; - vqpi->txq.ring_len = adapter->tx_rings[i]->count; - vqpi->txq.dma_ring_addr = adapter->tx_rings[i]->dma; + vqpi->txq.ring_len = adapter->tx_rings[i].count; + vqpi->txq.dma_ring_addr = adapter->tx_rings[i].dma; vqpi->txq.headwb_enabled = 1; vqpi->txq.dma_headwb_addr = vqpi->txq.dma_ring_addr + (vqpi->txq.ring_len * sizeof(struct i40e_tx_desc)); vqpi->rxq.vsi_id = vqci->vsi_id; vqpi->rxq.queue_id = i; - vqpi->rxq.ring_len = adapter->rx_rings[i]->count; - vqpi->rxq.dma_ring_addr = adapter->rx_rings[i]->dma; + vqpi->rxq.ring_len = adapter->rx_rings[i].count; + vqpi->rxq.dma_ring_addr = adapter->rx_rings[i].dma; vqpi->rxq.max_pkt_size = adapter->netdev->mtu + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN; - vqpi->rxq.databuffer_size = adapter->rx_rings[i]->rx_buf_len; + vqpi->rxq.databuffer_size = adapter->rx_rings[i].rx_buf_len; vqpi++; } @@ -353,14 +355,14 @@ len = sizeof(struct i40e_virtchnl_irq_map_info) + (adapter->num_msix_vectors * sizeof(struct i40e_virtchnl_vector_map)); - vimi = kzalloc(len, GFP_ATOMIC); + vimi = kzalloc(len, GFP_KERNEL); if (!vimi) return; vimi->num_vectors = adapter->num_msix_vectors; /* Queue vectors first */ for (v_idx = 0; v_idx < q_vectors; v_idx++) { - q_vector = adapter->q_vector[v_idx]; + q_vector = adapter->q_vectors + v_idx; vimi->vecmap[v_idx].vsi_id = adapter->vsi_res->vsi_id; vimi->vecmap[v_idx].vector_id = v_idx + NONQ_VECS; vimi->vecmap[v_idx].txq_map = q_vector->ring_mask; @@ -391,6 +393,7 @@ struct i40e_virtchnl_ether_addr_list *veal; int len, i = 0, count = 0; struct i40evf_mac_filter *f; + bool more = false; if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { /* bail because we already have a command pending */ @@ -415,10 +418,12 @@ count = (I40EVF_MAX_AQ_BUF_SIZE - sizeof(struct i40e_virtchnl_ether_addr_list)) / sizeof(struct i40e_virtchnl_ether_addr); - len = I40EVF_MAX_AQ_BUF_SIZE; + len = sizeof(struct i40e_virtchnl_ether_addr_list) + + (count * sizeof(struct i40e_virtchnl_ether_addr)); + more = true; } - veal = kzalloc(len, GFP_ATOMIC); + veal = kzalloc(len, GFP_KERNEL); if (!veal) return; @@ -431,7 +436,8 @@ f->add = false; } } - adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER; + if (!more) + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER; i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS, (u8 *)veal, len); kfree(veal); @@ -450,6 +456,7 @@ struct i40e_virtchnl_ether_addr_list *veal; struct i40evf_mac_filter *f, *ftmp; int len, i = 0, count = 0; + bool more = false; if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { /* bail because we already have a command pending */ @@ -474,9 +481,11 @@ count = (I40EVF_MAX_AQ_BUF_SIZE - sizeof(struct i40e_virtchnl_ether_addr_list)) / sizeof(struct i40e_virtchnl_ether_addr); - len = I40EVF_MAX_AQ_BUF_SIZE; + len = sizeof(struct i40e_virtchnl_ether_addr_list) + + (count * sizeof(struct i40e_virtchnl_ether_addr)); + more = true; } - veal = kzalloc(len, GFP_ATOMIC); + veal = kzalloc(len, GFP_KERNEL); if (!veal) return; @@ -490,7 +499,8 @@ kfree(f); } } - adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER; + if (!more) + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER; i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS, (u8 *)veal, len); kfree(veal); @@ -509,6 +519,7 @@ struct i40e_virtchnl_vlan_filter_list *vvfl; int len, i = 0, count = 0; struct i40evf_vlan_filter *f; + bool more = false; if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { /* bail because we already have a command pending */ @@ -534,9 +545,11 @@ count = (I40EVF_MAX_AQ_BUF_SIZE - sizeof(struct i40e_virtchnl_vlan_filter_list)) / sizeof(u16); - len = I40EVF_MAX_AQ_BUF_SIZE; + len = sizeof(struct i40e_virtchnl_vlan_filter_list) + + (count * sizeof(u16)); + more = true; } - vvfl = kzalloc(len, GFP_ATOMIC); + vvfl = kzalloc(len, GFP_KERNEL); if (!vvfl) return; @@ -549,7 +562,8 @@ f->add = false; } } - adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_VLAN_FILTER; + if (!more) + adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_VLAN_FILTER; i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len); kfree(vvfl); } @@ -567,6 +581,7 @@ struct i40e_virtchnl_vlan_filter_list *vvfl; struct i40evf_vlan_filter *f, *ftmp; int len, i = 0, count = 0; + bool more = false; if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { /* bail because we already have a command pending */ @@ -592,9 +607,11 @@ count = (I40EVF_MAX_AQ_BUF_SIZE - sizeof(struct i40e_virtchnl_vlan_filter_list)) / sizeof(u16); - len = I40EVF_MAX_AQ_BUF_SIZE; + len = sizeof(struct i40e_virtchnl_vlan_filter_list) + + (count * sizeof(u16)); + more = true; } - vvfl = kzalloc(len, GFP_ATOMIC); + vvfl = kzalloc(len, GFP_KERNEL); if (!vvfl) return; @@ -608,7 +625,8 @@ kfree(f); } } - adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_VLAN_FILTER; + if (!more) + adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_VLAN_FILTER; i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len); kfree(vvfl); } @@ -724,9 +742,29 @@ return; } if (v_retval) { - dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n", - v_retval, i40evf_stat_str(&adapter->hw, v_retval), - v_opcode); + switch (v_opcode) { + case I40E_VIRTCHNL_OP_ADD_VLAN: + dev_err(&adapter->pdev->dev, "Failed to add VLAN filter, error %s\n", + i40evf_stat_str(&adapter->hw, v_retval)); + break; + case I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS: + dev_err(&adapter->pdev->dev, "Failed to add MAC filter, error %s\n", + i40evf_stat_str(&adapter->hw, v_retval)); + break; + case I40E_VIRTCHNL_OP_DEL_VLAN: + dev_err(&adapter->pdev->dev, "Failed to delete VLAN filter, error %s\n", + i40evf_stat_str(&adapter->hw, v_retval)); + break; + case I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS: + dev_err(&adapter->pdev->dev, "Failed to delete MAC filter, error %s\n", + i40evf_stat_str(&adapter->hw, v_retval)); + break; + default: + dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n", + v_retval, + i40evf_stat_str(&adapter->hw, v_retval), + v_opcode); + } } switch (v_opcode) { case I40E_VIRTCHNL_OP_GET_STATS: { --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_82575.c +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -45,8 +45,6 @@ static s32 igb_init_hw_82575(struct e1000_hw *); static s32 igb_phy_hw_reset_sgmii_82575(struct e1000_hw *); static s32 igb_read_phy_reg_sgmii_82575(struct e1000_hw *, u32, u16 *); -static s32 igb_read_phy_reg_82580(struct e1000_hw *, u32, u16 *); -static s32 igb_write_phy_reg_82580(struct e1000_hw *, u32, u16); static s32 igb_reset_hw_82575(struct e1000_hw *); static s32 igb_reset_hw_82580(struct e1000_hw *); static s32 igb_set_d0_lplu_state_82575(struct e1000_hw *, bool); @@ -205,13 +203,10 @@ case e1000_82580: case e1000_i350: case e1000_i354: - phy->ops.read_reg = igb_read_phy_reg_82580; - phy->ops.write_reg = igb_write_phy_reg_82580; - break; case e1000_i210: case e1000_i211: - phy->ops.read_reg = igb_read_phy_reg_gs40g; - phy->ops.write_reg = igb_write_phy_reg_gs40g; + phy->ops.read_reg = igb_read_phy_reg_82580; + phy->ops.write_reg = igb_write_phy_reg_82580; break; default: phy->ops.read_reg = igb_read_phy_reg_igp; @@ -272,6 +267,11 @@ if (ret_val) goto out; } + if (phy->id == M88E1543_E_PHY_ID) { + ret_val = igb_initialize_M88E1543_phy(hw); + if (ret_val) + goto out; + } break; case IGP03E1000_E_PHY_ID: phy->type = e1000_phy_igp_3; @@ -294,6 +294,7 @@ case I210_I_PHY_ID: phy->type = e1000_phy_i210; phy->ops.check_polarity = igb_check_polarity_m88; + phy->ops.get_cfg_done = igb_get_cfg_done_i210; phy->ops.get_phy_info = igb_get_phy_info_m88; phy->ops.get_cable_length = igb_get_cable_length_m88_gen2; phy->ops.set_d0_lplu_state = igb_set_d0_lplu_state_82580; @@ -925,6 +926,8 @@ if (phy->id == M88E1512_E_PHY_ID) ret_val = igb_initialize_M88E1512_phy(hw); + if (phy->id == M88E1543_E_PHY_ID) + ret_val = igb_initialize_M88E1543_phy(hw); out: return ret_val; } @@ -2145,7 +2148,7 @@ * Reads the MDI control register in the PHY at offset and stores the * information read to data. **/ -static s32 igb_read_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 *data) +s32 igb_read_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 *data) { s32 ret_val; @@ -2169,7 +2172,7 @@ * * Writes data to MDI control register in the PHY at offset. **/ -static s32 igb_write_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 data) +s32 igb_write_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 data) { s32 ret_val; --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_defines.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_defines.h @@ -927,7 +927,10 @@ /* Intel i347-AT4 Registers */ -#define I347AT4_PCDL 0x10 /* PHY Cable Diagnostics Length */ +#define I347AT4_PCDL0 0x10 /* Pair 0 PHY Cable Diagnostics Length */ +#define I347AT4_PCDL1 0x11 /* Pair 1 PHY Cable Diagnostics Length */ +#define I347AT4_PCDL2 0x12 /* Pair 2 PHY Cable Diagnostics Length */ +#define I347AT4_PCDL3 0x13 /* Pair 3 PHY Cable Diagnostics Length */ #define I347AT4_PCDC 0x15 /* PHY Cable Diagnostics Control */ #define I347AT4_PAGE_SELECT 0x16 @@ -990,6 +993,7 @@ #define E1000_M88E1543_PAGE_ADDR 0x16 /* Page Offset Register */ #define E1000_M88E1543_EEE_CTRL_1 0x0 #define E1000_M88E1543_EEE_CTRL_1_MS 0x0001 /* EEE Master/Slave */ +#define E1000_M88E1543_FIBER_CTRL 0x0 #define E1000_EEE_ADV_DEV_I354 7 #define E1000_EEE_ADV_ADDR_I354 60 #define E1000_EEE_ADV_100_SUPPORTED (1 << 1) /* 100BaseTx EEE Supported */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_hw.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_hw.h @@ -441,6 +441,7 @@ u16 cable_length; u16 max_cable_length; u16 min_cable_length; + u16 pair_length[4]; u8 mdix; --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_i210.c +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_i210.c @@ -861,10 +861,10 @@ if (ret_val) nvm_word = E1000_INVM_DEFAULT_AL; tmp_nvm = nvm_word | E1000_INVM_PLL_WO_VAL; + igb_write_phy_reg_82580(hw, I347AT4_PAGE_SELECT, E1000_PHY_PLL_FREQ_PAGE); for (i = 0; i < E1000_MAX_PLL_TRIES; i++) { /* check current state directly from internal PHY */ - igb_read_phy_reg_gs40g(hw, (E1000_PHY_PLL_FREQ_PAGE | - E1000_PHY_PLL_FREQ_REG), &phy_word); + igb_read_phy_reg_82580(hw, E1000_PHY_PLL_FREQ_REG, &phy_word); if ((phy_word & E1000_PHY_PLL_UNCONF) != E1000_PHY_PLL_UNCONF) { ret_val = 0; @@ -896,7 +896,35 @@ /* restore WUC register */ wr32(E1000_WUC, wuc); } + igb_write_phy_reg_82580(hw, I347AT4_PAGE_SELECT, 0); /* restore MDICNFG setting */ wr32(E1000_MDICNFG, mdicnfg); return ret_val; } + +/** + * igb_get_cfg_done_i210 - Read config done bit + * @hw: pointer to the HW structure + * + * Read the management control register for the config done bit for + * completion status. NOTE: silicon which is EEPROM-less will fail trying + * to read the config done bit, so an error is *ONLY* logged and returns + * 0. If we were to return with error, EEPROM-less silicon + * would not be able to be reset or change link. + **/ +s32 igb_get_cfg_done_i210(struct e1000_hw *hw) +{ + s32 timeout = PHY_CFG_TIMEOUT; + u32 mask = E1000_NVM_CFG_DONE_PORT_0; + + while (timeout) { + if (rd32(E1000_EEMNGCTL_I210) & mask) + break; + usleep_range(1000, 2000); + timeout--; + } + if (!timeout) + hw_dbg("MNG configuration cycle has not completed.\n"); + + return 0; +} --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_i210.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_i210.h @@ -34,6 +34,7 @@ s32 igb_init_nvm_params_i210(struct e1000_hw *hw); bool igb_get_flash_presence_i210(struct e1000_hw *hw); s32 igb_pll_workaround_i210(struct e1000_hw *hw); +s32 igb_get_cfg_done_i210(struct e1000_hw *hw); #define E1000_STM_OPCODE 0xDB00 #define E1000_EEPROM_FLASH_SIZE_WORD 0x11 @@ -84,7 +85,7 @@ #define E1000_PCI_PMCSR_D3 0x03 #define E1000_MAX_PLL_TRIES 5 #define E1000_PHY_PLL_UNCONF 0xFF -#define E1000_PHY_PLL_FREQ_PAGE 0xFC0000 +#define E1000_PHY_PLL_FREQ_PAGE 0xFC #define E1000_PHY_PLL_FREQ_REG 0x000E #define E1000_INVM_DEFAULT_AL 0x202F #define E1000_INVM_AUTOLOAD 0x0A --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_phy.c +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_phy.c @@ -1717,59 +1717,76 @@ struct e1000_phy_info *phy = &hw->phy; s32 ret_val; u16 phy_data, phy_data2, index, default_page, is_cm; + int len_tot = 0; + u16 len_min; + u16 len_max; switch (hw->phy.id) { + case M88E1543_E_PHY_ID: + case M88E1512_E_PHY_ID: + case I347AT4_E_PHY_ID: case I210_I_PHY_ID: - /* Get cable length from PHY Cable Diagnostics Control Reg */ - ret_val = phy->ops.read_reg(hw, (0x7 << GS40G_PAGE_SHIFT) + - (I347AT4_PCDL + phy->addr), - &phy_data); + /* Remember the original page select and set it to 7 */ + ret_val = phy->ops.read_reg(hw, I347AT4_PAGE_SELECT, + &default_page); if (ret_val) - return ret_val; + goto out; + + ret_val = phy->ops.write_reg(hw, I347AT4_PAGE_SELECT, 0x07); + if (ret_val) + goto out; /* Check if the unit of cable length is meters or cm */ - ret_val = phy->ops.read_reg(hw, (0x7 << GS40G_PAGE_SHIFT) + - I347AT4_PCDC, &phy_data2); + ret_val = phy->ops.read_reg(hw, I347AT4_PCDC, &phy_data2); if (ret_val) - return ret_val; + goto out; is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT); - /* Populate the phy structure with cable length in meters */ - phy->min_cable_length = phy_data / (is_cm ? 100 : 1); - phy->max_cable_length = phy_data / (is_cm ? 100 : 1); - phy->cable_length = phy_data / (is_cm ? 100 : 1); - break; - case M88E1543_E_PHY_ID: - case M88E1512_E_PHY_ID: - case I347AT4_E_PHY_ID: - /* Remember the original page select and set it to 7 */ - ret_val = phy->ops.read_reg(hw, I347AT4_PAGE_SELECT, - &default_page); + /* Get cable length from Pair 0 length Regs */ + ret_val = phy->ops.read_reg(hw, I347AT4_PCDL0, &phy_data); if (ret_val) goto out; - ret_val = phy->ops.write_reg(hw, I347AT4_PAGE_SELECT, 0x07); + phy->pair_length[0] = phy_data / (is_cm ? 100 : 1); + len_tot = phy->pair_length[0]; + len_min = phy->pair_length[0]; + len_max = phy->pair_length[0]; + + /* Get cable length from Pair 1 length Regs */ + ret_val = phy->ops.read_reg(hw, I347AT4_PCDL1, &phy_data); if (ret_val) goto out; - /* Get cable length from PHY Cable Diagnostics Control Reg */ - ret_val = phy->ops.read_reg(hw, (I347AT4_PCDL + phy->addr), - &phy_data); + phy->pair_length[1] = phy_data / (is_cm ? 100 : 1); + len_tot += phy->pair_length[1]; + len_min = min(len_min, phy->pair_length[1]); + len_max = max(len_max, phy->pair_length[1]); + + /* Get cable length from Pair 2 length Regs */ + ret_val = phy->ops.read_reg(hw, I347AT4_PCDL2, &phy_data); if (ret_val) goto out; - /* Check if the unit of cable length is meters or cm */ - ret_val = phy->ops.read_reg(hw, I347AT4_PCDC, &phy_data2); + phy->pair_length[2] = phy_data / (is_cm ? 100 : 1); + len_tot += phy->pair_length[2]; + len_min = min(len_min, phy->pair_length[2]); + len_max = max(len_max, phy->pair_length[2]); + + /* Get cable length from Pair 3 length Regs */ + ret_val = phy->ops.read_reg(hw, I347AT4_PCDL3, &phy_data); if (ret_val) goto out; - is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT); + phy->pair_length[3] = phy_data / (is_cm ? 100 : 1); + len_tot += phy->pair_length[3]; + len_min = min(len_min, phy->pair_length[3]); + len_max = max(len_max, phy->pair_length[3]); /* Populate the phy structure with cable length in meters */ - phy->min_cable_length = phy_data / (is_cm ? 100 : 1); - phy->max_cable_length = phy_data / (is_cm ? 100 : 1); - phy->cable_length = phy_data / (is_cm ? 100 : 1); + phy->min_cable_length = len_min; + phy->max_cable_length = len_max; + phy->cable_length = len_tot / 4; /* Reset the page selec to its original value */ ret_val = phy->ops.write_reg(hw, I347AT4_PAGE_SELECT, @@ -2278,6 +2295,100 @@ } /** + * igb_initialize_M88E1543_phy - Initialize M88E1512 PHY + * @hw: pointer to the HW structure + * + * Initialize Marvell 1543 to work correctly with Avoton. + **/ +s32 igb_initialize_M88E1543_phy(struct e1000_hw *hw) +{ + struct e1000_phy_info *phy = &hw->phy; + s32 ret_val = 0; + + /* Switch to PHY page 0xFF. */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FF); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x214B); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2144); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x0C28); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2146); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xB233); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x214D); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xDC0C); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2159); + if (ret_val) + goto out; + + /* Switch to PHY page 0xFB. */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FB); + if (ret_val) + goto out; + + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_3, 0x0C0D); + if (ret_val) + goto out; + + /* Switch to PHY page 0x12. */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x12); + if (ret_val) + goto out; + + /* Change mode to SGMII-to-Copper */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1512_MODE, 0x8001); + if (ret_val) + goto out; + + /* Switch to PHY page 1. */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x1); + if (ret_val) + goto out; + + /* Change mode to 1000BASE-X/SGMII and autoneg enable */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_FIBER_CTRL, 0x9140); + if (ret_val) + goto out; + + /* Return the PHY to page 0. */ + ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0); + if (ret_val) + goto out; + + ret_val = igb_phy_sw_reset(hw); + if (ret_val) { + hw_dbg("Error committing the PHY changes\n"); + return ret_val; + } + + /* msec_delay(1000); */ + usleep_range(1000, 2000); +out: + return ret_val; +} + +/** * igb_power_up_phy_copper - Restore copper link in case of PHY power down * @hw: pointer to the HW structure * @@ -2493,66 +2604,6 @@ return ret_val; } -/** - * igb_write_phy_reg_gs40g - Write GS40G PHY register - * @hw: pointer to the HW structure - * @offset: lower half is register offset to write to - * upper half is page to use. - * @data: data to write at register offset - * - * Acquires semaphore, if necessary, then writes the data to PHY register - * at the offset. Release any acquired semaphores before exiting. - **/ -s32 igb_write_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 data) -{ - s32 ret_val; - u16 page = offset >> GS40G_PAGE_SHIFT; - - offset = offset & GS40G_OFFSET_MASK; - ret_val = hw->phy.ops.acquire(hw); - if (ret_val) - return ret_val; - - ret_val = igb_write_phy_reg_mdic(hw, GS40G_PAGE_SELECT, page); - if (ret_val) - goto release; - ret_val = igb_write_phy_reg_mdic(hw, offset, data); - -release: - hw->phy.ops.release(hw); - return ret_val; -} - -/** - * igb_read_phy_reg_gs40g - Read GS40G PHY register - * @hw: pointer to the HW structure - * @offset: lower half is register offset to read to - * upper half is page to use. - * @data: data to read at register offset - * - * Acquires semaphore, if necessary, then reads the data in the PHY register - * at the offset. Release any acquired semaphores before exiting. - **/ -s32 igb_read_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 *data) -{ - s32 ret_val; - u16 page = offset >> GS40G_PAGE_SHIFT; - - offset = offset & GS40G_OFFSET_MASK; - ret_val = hw->phy.ops.acquire(hw); - if (ret_val) - return ret_val; - - ret_val = igb_write_phy_reg_mdic(hw, GS40G_PAGE_SELECT, page); - if (ret_val) - goto release; - ret_val = igb_read_phy_reg_mdic(hw, offset, data); - -release: - hw->phy.ops.release(hw); - return ret_val; -} - /** * igb_set_master_slave_mode - Setup PHY for Master/slave mode * @hw: pointer to the HW structure --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_phy.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_phy.h @@ -62,6 +62,7 @@ void igb_power_down_phy_copper(struct e1000_hw *hw); s32 igb_phy_init_script_igp3(struct e1000_hw *hw); s32 igb_initialize_M88E1512_phy(struct e1000_hw *hw); +s32 igb_initialize_M88E1543_phy(struct e1000_hw *hw); s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data); s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data); s32 igb_read_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 *data); @@ -71,8 +72,8 @@ s32 igb_get_phy_info_82580(struct e1000_hw *hw); s32 igb_phy_force_speed_duplex_82580(struct e1000_hw *hw); s32 igb_get_cable_length_82580(struct e1000_hw *hw); -s32 igb_read_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 *data); -s32 igb_write_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 data); +s32 igb_read_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 *data); +s32 igb_write_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 data); s32 igb_check_polarity_m88(struct e1000_hw *hw); /* IGP01E1000 Specific Registers */ @@ -143,17 +144,6 @@ #define E1000_CABLE_LENGTH_UNDEFINED 0xFF -/* GS40G - I210 PHY defines */ -#define GS40G_PAGE_SELECT 0x16 -#define GS40G_PAGE_SHIFT 16 -#define GS40G_OFFSET_MASK 0xFFFF -#define GS40G_PAGE_2 0x20000 -#define GS40G_MAC_REG2 0x15 -#define GS40G_MAC_LB 0x4140 -#define GS40G_MAC_SPEED_1G 0X0006 -#define GS40G_COPPER_SPEC 0x0010 -#define GS40G_LINE_LB 0x4000 - /* SFP modules ID memory locations */ #define E1000_SFF_IDENTIFIER_OFFSET 0x00 #define E1000_SFF_IDENTIFIER_SFF 0x02 --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/e1000_regs.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/e1000_regs.h @@ -66,6 +66,7 @@ #define E1000_PBA 0x01000 /* Packet Buffer Allocation - RW */ #define E1000_PBS 0x01008 /* Packet Buffer Size */ #define E1000_EEMNGCTL 0x01010 /* MNG EEprom Control */ +#define E1000_EEMNGCTL_I210 0x12030 /* MNG EEprom Control */ #define E1000_EEARBC_I210 0x12024 /* EEPROM Auto Read Bus Control */ #define E1000_EEWR 0x0102C /* EEPROM Write Register - RW */ #define E1000_I2CCMD 0x01028 /* SFPI2C Command Register - RW */ @@ -385,8 +386,7 @@ #define array_wr32(reg, offset, value) \ wr32((reg) + ((offset) << 2), (value)) -#define array_rd32(reg, offset) \ - (readl(hw->hw_addr + reg + ((offset) << 2))) +#define array_rd32(reg, offset) (igb_rd32(hw, reg + ((offset) << 2))) /* DMA Coalescing registers */ #define E1000_PCIEMISC 0x05BB8 /* PCIE misc config register */ --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/igb.h +++ linux-4.4.0/drivers/net/ethernet/intel/igb/igb.h @@ -389,6 +389,8 @@ u16 link_speed; u16 link_duplex; + u8 __iomem *io_addr; /* Mainly for iounmap use */ + struct work_struct reset_task; struct work_struct watchdog_task; bool fc_autoneg; --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -127,10 +127,20 @@ #define IGB_STATS_LEN \ (IGB_GLOBAL_STATS_LEN + IGB_NETDEV_STATS_LEN + IGB_QUEUE_STATS_LEN) +enum igb_diagnostics_results { + TEST_REG = 0, + TEST_EEP, + TEST_IRQ, + TEST_LOOP, + TEST_LINK +}; + static const char igb_gstrings_test[][ETH_GSTRING_LEN] = { - "Register test (offline)", "Eeprom test (offline)", - "Interrupt test (offline)", "Loopback test (offline)", - "Link test (on/offline)" + [TEST_REG] = "Register test (offline)", + [TEST_EEP] = "Eeprom test (offline)", + [TEST_IRQ] = "Interrupt test (offline)", + [TEST_LOOP] = "Loopback test (offline)", + [TEST_LINK] = "Link test (on/offline)" }; #define IGB_TEST_LEN (sizeof(igb_gstrings_test) / ETH_GSTRING_LEN) @@ -2002,7 +2012,7 @@ /* Link test performed before hardware reset so autoneg doesn't * interfere with test result */ - if (igb_link_test(adapter, &data[4])) + if (igb_link_test(adapter, &data[TEST_LINK])) eth_test->flags |= ETH_TEST_FL_FAILED; if (if_running) @@ -2011,21 +2021,21 @@ else igb_reset(adapter); - if (igb_reg_test(adapter, &data[0])) + if (igb_reg_test(adapter, &data[TEST_REG])) eth_test->flags |= ETH_TEST_FL_FAILED; igb_reset(adapter); - if (igb_eeprom_test(adapter, &data[1])) + if (igb_eeprom_test(adapter, &data[TEST_EEP])) eth_test->flags |= ETH_TEST_FL_FAILED; igb_reset(adapter); - if (igb_intr_test(adapter, &data[2])) + if (igb_intr_test(adapter, &data[TEST_IRQ])) eth_test->flags |= ETH_TEST_FL_FAILED; igb_reset(adapter); /* power up link for loopback test */ igb_power_up_link(adapter); - if (igb_loopback_test(adapter, &data[3])) + if (igb_loopback_test(adapter, &data[TEST_LOOP])) eth_test->flags |= ETH_TEST_FL_FAILED; /* restore speed, duplex, autoneg settings */ @@ -2045,16 +2055,16 @@ dev_info(&adapter->pdev->dev, "online testing starting\n"); /* PHY is powered down when interface is down */ - if (if_running && igb_link_test(adapter, &data[4])) + if (if_running && igb_link_test(adapter, &data[TEST_LINK])) eth_test->flags |= ETH_TEST_FL_FAILED; else - data[4] = 0; + data[TEST_LINK] = 0; /* Online tests aren't run; pass by default */ - data[0] = 0; - data[1] = 0; - data[2] = 0; - data[3] = 0; + data[TEST_REG] = 0; + data[TEST_EEP] = 0; + data[TEST_IRQ] = 0; + data[TEST_LOOP] = 0; clear_bit(__IGB_TESTING, &adapter->state); } --- linux-4.4.0.orig/drivers/net/ethernet/intel/igb/igb_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/igb/igb_main.c @@ -946,7 +946,6 @@ static int igb_request_msix(struct igb_adapter *adapter) { struct net_device *netdev = adapter->netdev; - struct e1000_hw *hw = &adapter->hw; int i, err = 0, vector = 0, free_vector = 0; err = request_irq(adapter->msix_entries[vector].vector, @@ -959,7 +958,7 @@ vector++; - q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); + q_vector->itr_register = adapter->io_addr + E1000_EITR(vector); if (q_vector->rx.ring && q_vector->tx.ring) sprintf(q_vector->name, "%s-TxRx-%u", netdev->name, @@ -1230,7 +1229,7 @@ q_vector->tx.work_limit = adapter->tx_work_limit; /* initialize ITR configuration */ - q_vector->itr_register = adapter->hw.hw_addr + E1000_EITR(0); + q_vector->itr_register = adapter->io_addr + E1000_EITR(0); q_vector->itr_val = IGB_START_ITR; /* initialize pointer to rings */ @@ -2294,9 +2293,11 @@ adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); err = -EIO; - hw->hw_addr = pci_iomap(pdev, 0, 0); - if (!hw->hw_addr) + adapter->io_addr = pci_iomap(pdev, 0, 0); + if (!adapter->io_addr) goto err_ioremap; + /* hw->hw_addr can be altered, we'll use adapter->io_addr for unmap */ + hw->hw_addr = adapter->io_addr; netdev->netdev_ops = &igb_netdev_ops; igb_set_ethtool_ops(netdev); @@ -2656,7 +2657,7 @@ #ifdef CONFIG_PCI_IOV igb_disable_sriov(pdev); #endif - pci_iounmap(pdev, hw->hw_addr); + pci_iounmap(pdev, adapter->io_addr); err_ioremap: free_netdev(netdev); err_alloc_etherdev: @@ -2823,7 +2824,7 @@ igb_clear_interrupt_scheme(adapter); - pci_iounmap(pdev, hw->hw_addr); + pci_iounmap(pdev, adapter->io_addr); if (hw->flash_address) iounmap(hw->flash_address); pci_release_selected_regions(pdev, @@ -2856,6 +2857,13 @@ if ((hw->mac.type == e1000_i210) || (hw->mac.type == e1000_i211)) return; + /* Of the below we really only want the effect of getting + * IGB_FLAG_HAS_MSIX set (if available), without which + * igb_enable_sriov() has no effect. + */ + igb_set_interrupt_capability(adapter, true); + igb_reset_interrupt_capability(adapter); + pci_sriov_set_totalvfs(pdev, 7); igb_enable_sriov(pdev, max_vfs); --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe.h +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe.h @@ -139,6 +139,7 @@ #define IXGBE_X540_VF_DEVICE_ID 0x1515 struct vf_data_storage { + struct pci_dev *vfdev; unsigned char vf_mac_addresses[ETH_ALEN]; u16 vf_mc_hashes[IXGBE_MAX_VF_MC_ENTRIES]; u16 num_vf_mc_hashes; @@ -224,6 +225,8 @@ u64 csum_err; }; +#define IXGBE_TS_HDR_LEN 8 + enum ixgbe_ring_state_t { __IXGBE_TX_FDIR_INIT_DONE, __IXGBE_TX_XPS_INIT_DONE, @@ -282,6 +285,8 @@ u16 next_to_use; u16 next_to_clean; + unsigned long last_rx_timestamp; + union { u16 next_to_alloc; struct { @@ -312,7 +317,7 @@ }; #define IXGBE_MAX_RSS_INDICES 16 -#define IXGBE_MAX_RSS_INDICES_X550 64 +#define IXGBE_MAX_RSS_INDICES_X550 63 #define IXGBE_MAX_VMDQ_INDICES 64 #define IXGBE_MAX_FDIR_INDICES 63 /* based on q_vector limit */ #define IXGBE_MAX_FCOE_INDICES 8 @@ -587,9 +592,10 @@ struct ixgbe_mac_addr { u8 addr[ETH_ALEN]; - u16 queue; + u16 pool; u16 state; /* bitmask */ }; + #define IXGBE_MAC_STATE_DEFAULT 0x1 #define IXGBE_MAC_STATE_MODIFIED 0x2 #define IXGBE_MAC_STATE_IN_USE 0x4 @@ -639,6 +645,8 @@ #define IXGBE_FLAG_SRIOV_CAPABLE (u32)(1 << 22) #define IXGBE_FLAG_SRIOV_ENABLED (u32)(1 << 23) #define IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE BIT(24) +#define IXGBE_FLAG_RX_HWTSTAMP_ENABLED BIT(25) +#define IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER BIT(26) u32 flags2; #define IXGBE_FLAG2_RSC_CAPABLE (u32)(1 << 0) @@ -656,6 +664,7 @@ #ifdef CONFIG_IXGBE_VXLAN #define IXGBE_FLAG2_VXLAN_REREG_NEEDED BIT(12) #endif +#define IXGBE_FLAG2_VLAN_PROMISC BIT(13) /* Tx fast path data */ int num_tx_queues; @@ -755,9 +764,12 @@ unsigned long last_rx_ptp_check; unsigned long last_rx_timestamp; spinlock_t tmreg_lock; - struct cyclecounter cc; - struct timecounter tc; + struct cyclecounter hw_cc; + struct timecounter hw_tc; u32 base_incval; + u32 tx_hwtstamp_timeouts; + u32 rx_hwtstamp_cleared; + void (*ptp_setup_sdp)(struct ixgbe_adapter *); /* SR-IOV */ DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS); @@ -883,9 +895,10 @@ void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter); #endif int ixgbe_add_mac_filter(struct ixgbe_adapter *adapter, - u8 *addr, u16 queue); + const u8 *addr, u16 queue); int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, - u8 *addr, u16 queue); + const u8 *addr, u16 queue); +void ixgbe_update_pf_promisc_vlvf(struct ixgbe_adapter *adapter, u32 vid); void ixgbe_clear_interrupt_scheme(struct ixgbe_adapter *adapter); netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *, struct ixgbe_adapter *, struct ixgbe_ring *); @@ -968,12 +981,33 @@ void ixgbe_ptp_stop(struct ixgbe_adapter *adapter); void ixgbe_ptp_overflow_check(struct ixgbe_adapter *adapter); void ixgbe_ptp_rx_hang(struct ixgbe_adapter *adapter); -void ixgbe_ptp_rx_hwtstamp(struct ixgbe_adapter *adapter, struct sk_buff *skb); +void ixgbe_ptp_rx_pktstamp(struct ixgbe_q_vector *, struct sk_buff *); +void ixgbe_ptp_rx_rgtstamp(struct ixgbe_q_vector *, struct sk_buff *skb); +static inline void ixgbe_ptp_rx_hwtstamp(struct ixgbe_ring *rx_ring, + union ixgbe_adv_rx_desc *rx_desc, + struct sk_buff *skb) +{ + if (unlikely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_TSIP))) { + ixgbe_ptp_rx_pktstamp(rx_ring->q_vector, skb); + return; + } + + if (unlikely(!ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_STAT_TS))) + return; + + ixgbe_ptp_rx_rgtstamp(rx_ring->q_vector, skb); + + /* Update the last_rx_timestamp timer in order to enable watchdog check + * for error case of latched timestamp on a dropped packet. + */ + rx_ring->last_rx_timestamp = jiffies; +} + int ixgbe_ptp_set_ts_config(struct ixgbe_adapter *adapter, struct ifreq *ifr); int ixgbe_ptp_get_ts_config(struct ixgbe_adapter *adapter, struct ifreq *ifr); void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter); void ixgbe_ptp_reset(struct ixgbe_adapter *adapter); -void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr); +void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter); #ifdef CONFIG_PCI_IOV void ixgbe_sriov_reinit(struct ixgbe_adapter *adapter); #endif --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c @@ -1,7 +1,7 @@ /******************************************************************************* Intel 10 Gigabit PCI Express Linux driver - Copyright(c) 1999 - 2014 Intel Corporation. + Copyright(c) 1999 - 2015 Intel Corporation. This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, @@ -765,13 +765,14 @@ ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL) | IXGBE_CTRL_RST; IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl); IXGBE_WRITE_FLUSH(hw); + usleep_range(1000, 1200); /* Poll for reset bit to self-clear indicating reset is complete */ for (i = 0; i < 10; i++) { - udelay(1); ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL); if (!(ctrl & IXGBE_CTRL_RST)) break; + udelay(1); } if (ctrl & IXGBE_CTRL_RST) { status = IXGBE_ERR_RESET_FAILED; @@ -879,11 +880,12 @@ * @vlan: VLAN id to write to VLAN filter * @vind: VMDq output index that maps queue to VLAN id in VFTA * @vlan_on: boolean flag to turn on/off VLAN in VFTA + * @vlvf_bypass: boolean flag - unused * * Turn on/off specified VLAN in the VLAN filter table. **/ static s32 ixgbe_set_vfta_82598(struct ixgbe_hw *hw, u32 vlan, u32 vind, - bool vlan_on) + bool vlan_on, bool vlvf_bypass) { u32 regindex; u32 bitindex; --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c @@ -990,13 +990,14 @@ ctrl |= IXGBE_READ_REG(hw, IXGBE_CTRL); IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl); IXGBE_WRITE_FLUSH(hw); + usleep_range(1000, 1200); /* Poll for reset bit to self-clear indicating reset is complete */ for (i = 0; i < 10; i++) { - udelay(1); ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL); if (!(ctrl & IXGBE_CTRL_RST_MASK)) break; + udelay(1); } if (ctrl & IXGBE_CTRL_RST_MASK) { @@ -1082,12 +1083,16 @@ /* Add the SAN MAC address to the RAR only if it's a valid address */ if (is_valid_ether_addr(hw->mac.san_addr)) { - hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, - hw->mac.san_addr, 0, IXGBE_RAH_AV); - /* Save the SAN MAC RAR index */ hw->mac.san_mac_rar_index = hw->mac.num_rar_entries - 1; + hw->mac.ops.set_rar(hw, hw->mac.san_mac_rar_index, + hw->mac.san_addr, 0, IXGBE_RAH_AV); + + /* clear VMDq pool/queue selection for this RAR */ + hw->mac.ops.clear_vmdq(hw, hw->mac.san_mac_rar_index, + IXGBE_CLEAR_VMDQ_ALL); + /* Reserve the last RAR for the SAN MAC address */ hw->mac.num_rar_entries--; } --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c @@ -1,7 +1,7 @@ /******************************************************************************* Intel 10 Gigabit PCI Express Linux driver - Copyright(c) 1999 - 2014 Intel Corporation. + Copyright(c) 1999 - 2015 Intel Corporation. This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, @@ -1884,10 +1884,11 @@ hw_dbg(hw, " New MAC Addr =%pM\n", hw->mac.addr); hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0, IXGBE_RAH_AV); - - /* clear VMDq pool/queue selection for RAR 0 */ - hw->mac.ops.clear_vmdq(hw, 0, IXGBE_CLEAR_VMDQ_ALL); } + + /* clear VMDq pool/queue selection for RAR 0 */ + hw->mac.ops.clear_vmdq(hw, 0, IXGBE_CLEAR_VMDQ_ALL); + hw->addr_ctrl.overflow_promisc = 0; hw->addr_ctrl.rar_used_count = 1; @@ -2454,6 +2455,17 @@ /* Always set this bit to ensure any future transactions are blocked */ IXGBE_WRITE_REG(hw, IXGBE_CTRL, IXGBE_CTRL_GIO_DIS); + /* Poll for bit to read as set */ + for (i = 0; i < IXGBE_PCI_MASTER_DISABLE_TIMEOUT; i++) { + if (IXGBE_READ_REG(hw, IXGBE_CTRL) & IXGBE_CTRL_GIO_DIS) + break; + usleep_range(100, 120); + } + if (i >= IXGBE_PCI_MASTER_DISABLE_TIMEOUT) { + hw_dbg(hw, "GIO disable did not set - requesting resets\n"); + goto gio_disable_fail; + } + /* Exit if master requests are blocked */ if (!(IXGBE_READ_REG(hw, IXGBE_STATUS) & IXGBE_STATUS_GIO) || ixgbe_removed(hw->hw_addr)) @@ -2475,6 +2487,7 @@ * again to clear out any effects they may have had on our device. */ hw_dbg(hw, "GIO Master Disable bit didn't clear - requesting resets\n"); +gio_disable_fail: hw->mac.flags |= IXGBE_FLAGS_DOUBLE_RESET_REQUIRED; if (hw->mac.type >= ixgbe_mac_X550) @@ -2987,43 +3000,44 @@ * return the VLVF index where this VLAN id should be placed * **/ -static s32 ixgbe_find_vlvf_slot(struct ixgbe_hw *hw, u32 vlan) +static s32 ixgbe_find_vlvf_slot(struct ixgbe_hw *hw, u32 vlan, bool vlvf_bypass) { - u32 bits = 0; - u32 first_empty_slot = 0; - s32 regindex; + s32 regindex, first_empty_slot; + u32 bits; /* short cut the special case */ if (vlan == 0) return 0; - /* - * Search for the vlan id in the VLVF entries. Save off the first empty - * slot found along the way - */ - for (regindex = 1; regindex < IXGBE_VLVF_ENTRIES; regindex++) { + /* if vlvf_bypass is set we don't want to use an empty slot, we + * will simply bypass the VLVF if there are no entries present in the + * VLVF that contain our VLAN + */ + first_empty_slot = vlvf_bypass ? IXGBE_ERR_NO_SPACE : 0; + + /* add VLAN enable bit for comparison */ + vlan |= IXGBE_VLVF_VIEN; + + /* Search for the vlan id in the VLVF entries. Save off the first empty + * slot found along the way. + * + * pre-decrement loop covering (IXGBE_VLVF_ENTRIES - 1) .. 1 + */ + for (regindex = IXGBE_VLVF_ENTRIES; --regindex;) { bits = IXGBE_READ_REG(hw, IXGBE_VLVF(regindex)); - if (!bits && !(first_empty_slot)) + if (bits == vlan) + return regindex; + if (!first_empty_slot && !bits) first_empty_slot = regindex; - else if ((bits & 0x0FFF) == vlan) - break; } - /* - * If regindex is less than IXGBE_VLVF_ENTRIES, then we found the vlan - * in the VLVF. Else use the first empty VLVF register for this - * vlan id. - */ - if (regindex >= IXGBE_VLVF_ENTRIES) { - if (first_empty_slot) - regindex = first_empty_slot; - else { - hw_dbg(hw, "No space in VLVF.\n"); - regindex = IXGBE_ERR_NO_SPACE; - } - } + /* If we are here then we didn't find the VLAN. Return first empty + * slot we found during our search, else error. + */ + if (!first_empty_slot) + hw_dbg(hw, "No space in VLVF.\n"); - return regindex; + return first_empty_slot ? : IXGBE_ERR_NO_SPACE; } /** @@ -3032,21 +3046,17 @@ * @vlan: VLAN id to write to VLAN filter * @vind: VMDq output index that maps queue to VLAN id in VFVFB * @vlan_on: boolean flag to turn on/off VLAN in VFVF + * @vlvf_bypass: boolean flag indicating updating default pool is okay * * Turn on/off specified VLAN in the VLAN filter table. **/ s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind, - bool vlan_on) + bool vlan_on, bool vlvf_bypass) { - s32 regindex; - u32 bitindex; - u32 vfta; - u32 bits; - u32 vt; - u32 targetbit; - bool vfta_changed = false; + u32 regidx, vfta_delta, vfta, bits; + s32 vlvf_index; - if (vlan > 4095) + if ((vlan > 4095) || (vind > 63)) return IXGBE_ERR_PARAM; /* @@ -3061,22 +3071,16 @@ * bits[11-5]: which register * bits[4-0]: which bit in the register */ - regindex = (vlan >> 5) & 0x7F; - bitindex = vlan & 0x1F; - targetbit = (1 << bitindex); - vfta = IXGBE_READ_REG(hw, IXGBE_VFTA(regindex)); - - if (vlan_on) { - if (!(vfta & targetbit)) { - vfta |= targetbit; - vfta_changed = true; - } - } else { - if ((vfta & targetbit)) { - vfta &= ~targetbit; - vfta_changed = true; - } - } + regidx = vlan / 32; + vfta_delta = 1 << (vlan % 32); + vfta = IXGBE_READ_REG(hw, IXGBE_VFTA(regidx)); + + /* vfta_delta represents the difference between the current value + * of vfta and the value we want in the register. Since the diff + * is an XOR mask we can just update vfta using an XOR. + */ + vfta_delta &= vlan_on ? ~vfta : vfta; + vfta ^= vfta_delta; /* Part 2 * If VT Mode is set @@ -3086,85 +3090,67 @@ * Or !vlan_on * clear the pool bit and possibly the vind */ - vt = IXGBE_READ_REG(hw, IXGBE_VT_CTL); - if (vt & IXGBE_VT_CTL_VT_ENABLE) { - s32 vlvf_index; - - vlvf_index = ixgbe_find_vlvf_slot(hw, vlan); - if (vlvf_index < 0) - return vlvf_index; - - if (vlan_on) { - /* set the pool bit */ - if (vind < 32) { - bits = IXGBE_READ_REG(hw, - IXGBE_VLVFB(vlvf_index*2)); - bits |= (1 << vind); - IXGBE_WRITE_REG(hw, - IXGBE_VLVFB(vlvf_index*2), - bits); - } else { - bits = IXGBE_READ_REG(hw, - IXGBE_VLVFB((vlvf_index*2)+1)); - bits |= (1 << (vind-32)); - IXGBE_WRITE_REG(hw, - IXGBE_VLVFB((vlvf_index*2)+1), - bits); - } - } else { - /* clear the pool bit */ - if (vind < 32) { - bits = IXGBE_READ_REG(hw, - IXGBE_VLVFB(vlvf_index*2)); - bits &= ~(1 << vind); - IXGBE_WRITE_REG(hw, - IXGBE_VLVFB(vlvf_index*2), - bits); - bits |= IXGBE_READ_REG(hw, - IXGBE_VLVFB((vlvf_index*2)+1)); - } else { - bits = IXGBE_READ_REG(hw, - IXGBE_VLVFB((vlvf_index*2)+1)); - bits &= ~(1 << (vind-32)); - IXGBE_WRITE_REG(hw, - IXGBE_VLVFB((vlvf_index*2)+1), - bits); - bits |= IXGBE_READ_REG(hw, - IXGBE_VLVFB(vlvf_index*2)); - } - } + if (!(IXGBE_READ_REG(hw, IXGBE_VT_CTL) & IXGBE_VT_CTL_VT_ENABLE)) + goto vfta_update; - /* - * If there are still bits set in the VLVFB registers - * for the VLAN ID indicated we need to see if the - * caller is requesting that we clear the VFTA entry bit. - * If the caller has requested that we clear the VFTA - * entry bit but there are still pools/VFs using this VLAN - * ID entry then ignore the request. We're not worried - * about the case where we're turning the VFTA VLAN ID - * entry bit on, only when requested to turn it off as - * there may be multiple pools and/or VFs using the - * VLAN ID entry. In that case we cannot clear the - * VFTA bit until all pools/VFs using that VLAN ID have also - * been cleared. This will be indicated by "bits" being - * zero. + vlvf_index = ixgbe_find_vlvf_slot(hw, vlan, vlvf_bypass); + if (vlvf_index < 0) { + if (vlvf_bypass) + goto vfta_update; + return vlvf_index; + } + + bits = IXGBE_READ_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32)); + + /* set the pool bit */ + bits |= 1 << (vind % 32); + if (vlan_on) + goto vlvf_update; + + /* clear the pool bit */ + bits ^= 1 << (vind % 32); + + if (!bits && + !IXGBE_READ_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + 1 - vind / 32))) { + /* Clear VFTA first, then disable VLVF. Otherwise + * we run the risk of stray packets leaking into + * the PF via the default pool */ - if (bits) { - IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), - (IXGBE_VLVF_VIEN | vlan)); - if (!vlan_on) { - /* someone wants to clear the vfta entry - * but some pools/VFs are still using it. - * Ignore it. */ - vfta_changed = false; - } - } else { - IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), 0); - } + if (vfta_delta) + IXGBE_WRITE_REG(hw, IXGBE_VFTA(regidx), vfta); + + /* disable VLVF and clear remaining bit from pool */ + IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), 0); + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32), 0); + + return 0; } - if (vfta_changed) - IXGBE_WRITE_REG(hw, IXGBE_VFTA(regindex), vfta); + /* If there are still bits set in the VLVFB registers + * for the VLAN ID indicated we need to see if the + * caller is requesting that we clear the VFTA entry bit. + * If the caller has requested that we clear the VFTA + * entry bit but there are still pools/VFs using this VLAN + * ID entry then ignore the request. We're not worried + * about the case where we're turning the VFTA VLAN ID + * entry bit on, only when requested to turn it off as + * there may be multiple pools and/or VFs using the + * VLAN ID entry. In that case we cannot clear the + * VFTA bit until all pools/VFs using that VLAN ID have also + * been cleared. This will be indicated by "bits" being + * zero. + */ + vfta_delta = 0; + +vlvf_update: + /* record pool change and enable VLAN ID if not already enabled */ + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32), bits); + IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), IXGBE_VLVF_VIEN | vlan); + +vfta_update: + /* Update VFTA now that we are ready for traffic */ + if (vfta_delta) + IXGBE_WRITE_REG(hw, IXGBE_VFTA(regidx), vfta); return 0; } @@ -3184,8 +3170,8 @@ for (offset = 0; offset < IXGBE_VLVF_ENTRIES; offset++) { IXGBE_WRITE_REG(hw, IXGBE_VLVF(offset), 0); - IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset*2), 0); - IXGBE_WRITE_REG(hw, IXGBE_VLVFB((offset*2)+1), 0); + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2), 0); + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2 + 1), 0); } return 0; --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h @@ -92,7 +92,7 @@ s32 ixgbe_clear_vmdq_generic(struct ixgbe_hw *hw, u32 rar, u32 vmdq); s32 ixgbe_init_uta_tables_generic(struct ixgbe_hw *hw); s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, - u32 vind, bool vlan_on); + u32 vind, bool vlan_on, bool vlvf_bypass); s32 ixgbe_clear_vfta_generic(struct ixgbe_hw *hw); s32 ixgbe_check_mac_link_generic(struct ixgbe_hw *hw, ixgbe_link_speed *speed, --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c @@ -139,6 +139,11 @@ /* Calculate credit refill ratio using multiplier */ credit_refill = min(link_percentage * min_multiplier, MAX_CREDIT_REFILL); + + /* Refill at least minimum credit */ + if (credit_refill < min_credit) + credit_refill = min_credit; + p->data_credits_refill = (u16)credit_refill; /* Calculate maximum credit for the TC */ @@ -149,7 +154,7 @@ * of a TC is too small, the maximum credit may not be * enough to send out a jumbo frame in data plane arbitration. */ - if (credit_max && (credit_max < min_credit)) + if (credit_max < min_credit) credit_max = min_credit; if (direction == DCB_TX_CONFIG) { --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c @@ -223,13 +223,13 @@ reg |= IXGBE_MFLCN_DPF; /* - * X540 supports per TC Rx priority flow control. So - * clear all TCs and only enable those that should be + * X540 & X550 supports per TC Rx priority flow control. + * So clear all TCs and only enable those that should be * enabled. */ reg &= ~(IXGBE_MFLCN_RPFCE_MASK | IXGBE_MFLCN_RFCE); - if (hw->mac.type == ixgbe_mac_X540) + if (hw->mac.type >= ixgbe_mac_X540) reg |= pfc_en << IXGBE_MFLCN_RPFCE_SHIFT; if (pfc_en) --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c @@ -151,47 +151,70 @@ }; #define IXGBE_TEST_LEN sizeof(ixgbe_gstrings_test) / ETH_GSTRING_LEN +/* currently supported speeds for 10G */ +#define ADVRTSD_MSK_10G (SUPPORTED_10000baseT_Full | \ + SUPPORTED_10000baseKX4_Full | \ + SUPPORTED_10000baseKR_Full) + +#define ixgbe_isbackplane(type) ((type) == ixgbe_media_type_backplane) + +static u32 ixgbe_get_supported_10gtypes(struct ixgbe_hw *hw) +{ + if (!ixgbe_isbackplane(hw->phy.media_type)) + return SUPPORTED_10000baseT_Full; + + switch (hw->device_id) { + case IXGBE_DEV_ID_82598: + case IXGBE_DEV_ID_82599_KX4: + case IXGBE_DEV_ID_82599_KX4_MEZZ: + case IXGBE_DEV_ID_X550EM_X_KX4: + return SUPPORTED_10000baseKX4_Full; + case IXGBE_DEV_ID_82598_BX: + case IXGBE_DEV_ID_82599_KR: + case IXGBE_DEV_ID_X550EM_X_KR: + return SUPPORTED_10000baseKR_Full; + default: + return SUPPORTED_10000baseKX4_Full | + SUPPORTED_10000baseKR_Full; + } +} + static int ixgbe_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct ixgbe_adapter *adapter = netdev_priv(netdev); struct ixgbe_hw *hw = &adapter->hw; ixgbe_link_speed supported_link; - u32 link_speed = 0; bool autoneg = false; - bool link_up; hw->mac.ops.get_link_capabilities(hw, &supported_link, &autoneg); /* set the supported link speeds */ if (supported_link & IXGBE_LINK_SPEED_10GB_FULL) - ecmd->supported |= SUPPORTED_10000baseT_Full; - if (supported_link & IXGBE_LINK_SPEED_2_5GB_FULL) - ecmd->supported |= SUPPORTED_2500baseX_Full; + ecmd->supported |= ixgbe_get_supported_10gtypes(hw); if (supported_link & IXGBE_LINK_SPEED_1GB_FULL) ecmd->supported |= SUPPORTED_1000baseT_Full; if (supported_link & IXGBE_LINK_SPEED_100_FULL) - ecmd->supported |= SUPPORTED_100baseT_Full; + ecmd->supported |= ixgbe_isbackplane(hw->phy.media_type) ? + SUPPORTED_1000baseKX_Full : + SUPPORTED_1000baseT_Full; + /* default advertised speed if phy.autoneg_advertised isn't set */ + ecmd->advertising = ecmd->supported; /* set the advertised speeds */ if (hw->phy.autoneg_advertised) { + ecmd->advertising = 0; if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_100_FULL) ecmd->advertising |= ADVERTISED_100baseT_Full; if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL) - ecmd->advertising |= ADVERTISED_10000baseT_Full; - if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_2_5GB_FULL) - ecmd->advertising |= ADVERTISED_2500baseX_Full; - if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL) - ecmd->advertising |= ADVERTISED_1000baseT_Full; + ecmd->advertising |= ecmd->supported & ADVRTSD_MSK_10G; + if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL) { + if (ecmd->supported & SUPPORTED_1000baseKX_Full) + ecmd->advertising |= ADVERTISED_1000baseKX_Full; + else + ecmd->advertising |= ADVERTISED_1000baseT_Full; + } } else { - /* default modes in case phy.autoneg_advertised isn't set */ - if (supported_link & IXGBE_LINK_SPEED_10GB_FULL) - ecmd->advertising |= ADVERTISED_10000baseT_Full; - if (supported_link & IXGBE_LINK_SPEED_1GB_FULL) - ecmd->advertising |= ADVERTISED_1000baseT_Full; - if (supported_link & IXGBE_LINK_SPEED_100_FULL) - ecmd->advertising |= ADVERTISED_100baseT_Full; - if (hw->phy.multispeed_fiber && !autoneg) { if (supported_link & IXGBE_LINK_SPEED_10GB_FULL) ecmd->advertising = ADVERTISED_10000baseT_Full; @@ -229,6 +252,10 @@ case ixgbe_phy_sfp_avago: case ixgbe_phy_sfp_intel: case ixgbe_phy_sfp_unknown: + case ixgbe_phy_qsfp_passive_unknown: + case ixgbe_phy_qsfp_active_unknown: + case ixgbe_phy_qsfp_intel: + case ixgbe_phy_qsfp_unknown: /* SFP+ devices, further checking needed */ switch (adapter->hw.phy.sfp_type) { case ixgbe_sfp_type_da_cu: @@ -284,9 +311,8 @@ break; } - hw->mac.ops.check_link(hw, &link_speed, &link_up, false); - if (link_up) { - switch (link_speed) { + if (netif_carrier_ok(netdev)) { + switch (adapter->link_speed) { case IXGBE_LINK_SPEED_10GB_FULL: ethtool_cmd_speed_set(ecmd, SPEED_10000); break; --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c @@ -77,7 +77,7 @@ if (!netdev) return 0; - if (xid >= IXGBE_FCOE_DDP_MAX) + if (xid >= netdev->fcoe_ddp_xid) return 0; adapter = netdev_priv(netdev); @@ -177,7 +177,7 @@ return 0; adapter = netdev_priv(netdev); - if (xid >= IXGBE_FCOE_DDP_MAX) { + if (xid >= netdev->fcoe_ddp_xid) { e_warn(drv, "xid=0x%x out-of-range\n", xid); return 0; } @@ -517,6 +517,7 @@ u32 vlan_macip_lens; u32 fcoe_sof_eof = 0; u32 mss_l4len_idx; + u32 type_tucmd = IXGBE_ADVTXT_TUCMD_FCOE; u8 sof, eof; if (skb_is_gso(skb) && (skb_shinfo(skb)->gso_type != SKB_GSO_FCOE)) { @@ -593,6 +594,8 @@ skb_shinfo(skb)->gso_size); first->bytecount += (first->gso_segs - 1) * *hdr_len; first->tx_flags |= IXGBE_TX_FLAGS_TSO; + /* Hardware expects L4T to be RSV for FCoE TSO */ + type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_RSV; } /* set flag indicating FCOE to ixgbe_tx_map call */ @@ -610,7 +613,7 @@ /* write context desc */ ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, fcoe_sof_eof, - IXGBE_ADVTXT_TUCMD_FCOE, mss_l4len_idx); + type_tucmd, mss_l4len_idx); return 0; } @@ -620,8 +623,7 @@ struct ixgbe_fcoe_ddp_pool *ddp_pool; ddp_pool = per_cpu_ptr(fcoe->ddp_pool, cpu); - if (ddp_pool->pool) - dma_pool_destroy(ddp_pool->pool); + dma_pool_destroy(ddp_pool->pool); ddp_pool->pool = NULL; } @@ -997,8 +999,7 @@ return -EINVAL; /* Don't return information on unsupported devices */ - if (hw->mac.type != ixgbe_mac_82599EB && - hw->mac.type != ixgbe_mac_X540) + if (!(adapter->flags & IXGBE_FLAG_FCOE_ENABLED)) return -EINVAL; /* Manufacturer */ @@ -1044,6 +1045,10 @@ snprintf(info->model, sizeof(info->model), "Intel 82599"); + } else if (hw->mac.type == ixgbe_mac_X550) { + snprintf(info->model, + sizeof(info->model), + "Intel X550"); } else { snprintf(info->model, sizeof(info->model), --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -65,9 +65,6 @@ #include "ixgbe_common.h" #include "ixgbe_dcb_82599.h" #include "ixgbe_sriov.h" -#ifdef CONFIG_IXGBE_VXLAN -#include -#endif char ixgbe_driver_name[] = "ixgbe"; static const char ixgbe_driver_string[] = @@ -175,6 +172,8 @@ MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_VERSION); +static struct workqueue_struct *ixgbe_wq; + static bool ixgbe_check_cfg_remove(struct ixgbe_hw *hw, struct pci_dev *pdev); static int ixgbe_read_pci_cfg_word_parent(struct ixgbe_adapter *adapter, @@ -316,7 +315,7 @@ if (!test_bit(__IXGBE_DOWN, &adapter->state) && !test_bit(__IXGBE_REMOVING, &adapter->state) && !test_and_set_bit(__IXGBE_SERVICE_SCHED, &adapter->state)) - schedule_work(&adapter->service_task); + queue_work(ixgbe_wq, &adapter->service_task); } static void ixgbe_remove_adapter(struct ixgbe_hw *hw) @@ -1484,7 +1483,7 @@ return; if (ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_ERR_OUTERIPER)) { - ring->rx_stats.csum_err++; + skb->ip_summed = CHECKSUM_NONE; return; } /* If we checked the outer header let the stack know */ @@ -1635,6 +1634,7 @@ struct sk_buff *skb) { struct net_device *dev = rx_ring->netdev; + u32 flags = rx_ring->q_vector->adapter->flags; ixgbe_update_rsc_stats(rx_ring, skb); @@ -1642,8 +1642,8 @@ ixgbe_rx_checksum(rx_ring, rx_desc, skb); - if (unlikely(ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_STAT_TS))) - ixgbe_ptp_rx_hwtstamp(rx_ring->q_vector->adapter, skb); + if (unlikely(flags & IXGBE_FLAG_RX_HWTSTAMP_ENABLED)) + ixgbe_ptp_rx_hwtstamp(rx_ring, rx_desc, skb); if ((dev->features & NETIF_F_HW_VLAN_CTAG_RX) && ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) { @@ -2741,7 +2741,7 @@ ixgbe_check_fan_failure(adapter, eicr); if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) - ixgbe_ptp_check_pps_event(adapter, eicr); + ixgbe_ptp_check_pps_event(adapter); /* re-enable the original interrupt state, no lsc, no queues */ if (!test_bit(__IXGBE_DOWN, &adapter->state)) @@ -2757,7 +2757,7 @@ /* EIAM disabled interrupts (on this vector) for us */ if (q_vector->rx.ring || q_vector->tx.ring) - napi_schedule(&q_vector->napi); + napi_schedule_irqoff(&q_vector->napi); return IRQ_HANDLED; } @@ -2786,7 +2786,8 @@ ixgbe_for_each_ring(ring, q_vector->tx) clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring); - if (!ixgbe_qv_lock_napi(q_vector)) + /* Exit if we are called by netpoll or busy polling is active */ + if ((budget <= 0) || !ixgbe_qv_lock_napi(q_vector)) return budget; /* attempt to distribute budget to each queue fairly, but don't allow @@ -2947,10 +2948,10 @@ ixgbe_check_fan_failure(adapter, eicr); if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) - ixgbe_ptp_check_pps_event(adapter, eicr); + ixgbe_ptp_check_pps_event(adapter); /* would disable interrupts here but EIAM disabled it */ - napi_schedule(&q_vector->napi); + napi_schedule_irqoff(&q_vector->napi); /* * re-enable link(maybe) and non-queue interrupts, no flush. @@ -3315,8 +3316,7 @@ } /** - * Return a number of entries in the RSS indirection table - * + * ixgbe_rss_indir_tbl_entries - Return RSS indirection table entries * @adapter: device handle * * - 82598/82599/X540: 128 @@ -3334,8 +3334,7 @@ } /** - * Write the RETA table to HW - * + * ixgbe_store_reta - Write the RETA table to HW * @adapter: device handle * * Write the RSS redirection table stored in adapter.rss_indir_tbl[] to HW. @@ -3374,8 +3373,7 @@ } /** - * Write the RETA table to HW (for x550 devices in SRIOV mode) - * + * ixgbe_store_vfreta - Write the RETA table to HW (x550 devices in SRIOV mode) * @adapter: device handle * * Write the RSS redirection table stored in adapter.rss_indir_tbl[] to HW. @@ -3621,6 +3619,9 @@ IXGBE_WRITE_REG(hw, IXGBE_RDBAH(reg_idx), (rdba >> 32)); IXGBE_WRITE_REG(hw, IXGBE_RDLEN(reg_idx), ring->count * sizeof(union ixgbe_adv_rx_desc)); + /* Force flushing of IXGBE_RDLEN to prevent MDD */ + IXGBE_WRITE_FLUSH(hw); + IXGBE_WRITE_REG(hw, IXGBE_RDH(reg_idx), 0); IXGBE_WRITE_REG(hw, IXGBE_RDT(reg_idx), 0); ring->tail = adapter->io_addr + IXGBE_RDT(reg_idx); @@ -3704,6 +3705,9 @@ /* Map PF MAC address in RAR Entry 0 to first pool following VFs */ hw->mac.ops.set_vmdq(hw, 0, VMDQ_P(0)); + /* clear VLAN promisc flag so VFTA will be updated if necessary */ + adapter->flags2 &= ~IXGBE_FLAG2_VLAN_PROMISC; + /* * Set up VF register offsets for selected VT Mode, * i.e. 32 or 64 VFs for SR-IOV @@ -3901,12 +3905,56 @@ struct ixgbe_hw *hw = &adapter->hw; /* add VID to filter table */ - hw->mac.ops.set_vfta(&adapter->hw, vid, VMDQ_P(0), true); + hw->mac.ops.set_vfta(&adapter->hw, vid, VMDQ_P(0), true, true); set_bit(vid, adapter->active_vlans); return 0; } +static int ixgbe_find_vlvf_entry(struct ixgbe_hw *hw, u32 vlan) +{ + u32 vlvf; + int idx; + + /* short cut the special case */ + if (vlan == 0) + return 0; + + /* Search for the vlan id in the VLVF entries */ + for (idx = IXGBE_VLVF_ENTRIES; --idx;) { + vlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(idx)); + if ((vlvf & VLAN_VID_MASK) == vlan) + break; + } + + return idx; +} + +void ixgbe_update_pf_promisc_vlvf(struct ixgbe_adapter *adapter, u32 vid) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 bits, word; + int idx; + + idx = ixgbe_find_vlvf_entry(hw, vid); + if (!idx) + return; + + /* See if any other pools are set for this VLAN filter + * entry other than the PF. + */ + word = idx * 2 + (VMDQ_P(0) / 32); + bits = ~(1 << (VMDQ_P(0)) % 32); + bits &= IXGBE_READ_REG(hw, IXGBE_VLVFB(word)); + + /* Disable the filter so this falls into the default pool. */ + if (!bits && !IXGBE_READ_REG(hw, IXGBE_VLVFB(word ^ 1))) { + if (!(adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC)) + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(word), 0); + IXGBE_WRITE_REG(hw, IXGBE_VLVF(idx), 0); + } +} + static int ixgbe_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid) { @@ -3914,7 +3962,11 @@ struct ixgbe_hw *hw = &adapter->hw; /* remove VID from filter table */ - hw->mac.ops.set_vfta(&adapter->hw, vid, VMDQ_P(0), false); + if (adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC) + ixgbe_update_pf_promisc_vlvf(adapter, vid); + else + hw->mac.ops.set_vfta(hw, vid, VMDQ_P(0), false, true); + clear_bit(vid, adapter->active_vlans); return 0; @@ -3992,6 +4044,129 @@ } } +static void ixgbe_vlan_promisc_enable(struct ixgbe_adapter *adapter) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 vlnctrl, i; + + switch (hw->mac.type) { + case ixgbe_mac_82599EB: + case ixgbe_mac_X540: + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + default: + if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) + break; + /* fall through */ + case ixgbe_mac_82598EB: + /* legacy case, we can just disable VLAN filtering */ + vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); + vlnctrl &= ~(IXGBE_VLNCTRL_VFE | IXGBE_VLNCTRL_CFIEN); + IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); + return; + } + + /* We are already in VLAN promisc, nothing to do */ + if (adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC) + return; + + /* Set flag so we don't redo unnecessary work */ + adapter->flags2 |= IXGBE_FLAG2_VLAN_PROMISC; + + /* Add PF to all active pools */ + for (i = IXGBE_VLVF_ENTRIES; --i;) { + u32 reg_offset = IXGBE_VLVFB(i * 2 + VMDQ_P(0) / 32); + u32 vlvfb = IXGBE_READ_REG(hw, reg_offset); + + vlvfb |= 1 << (VMDQ_P(0) % 32); + IXGBE_WRITE_REG(hw, reg_offset, vlvfb); + } + + /* Set all bits in the VLAN filter table array */ + for (i = hw->mac.vft_size; i--;) + IXGBE_WRITE_REG(hw, IXGBE_VFTA(i), ~0U); +} + +#define VFTA_BLOCK_SIZE 8 +static void ixgbe_scrub_vfta(struct ixgbe_adapter *adapter, u32 vfta_offset) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 vfta[VFTA_BLOCK_SIZE] = { 0 }; + u32 vid_start = vfta_offset * 32; + u32 vid_end = vid_start + (VFTA_BLOCK_SIZE * 32); + u32 i, vid, word, bits; + + for (i = IXGBE_VLVF_ENTRIES; --i;) { + u32 vlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(i)); + + /* pull VLAN ID from VLVF */ + vid = vlvf & VLAN_VID_MASK; + + /* only concern outselves with a certain range */ + if (vid < vid_start || vid >= vid_end) + continue; + + if (vlvf) { + /* record VLAN ID in VFTA */ + vfta[(vid - vid_start) / 32] |= 1 << (vid % 32); + + /* if PF is part of this then continue */ + if (test_bit(vid, adapter->active_vlans)) + continue; + } + + /* remove PF from the pool */ + word = i * 2 + VMDQ_P(0) / 32; + bits = ~(1 << (VMDQ_P(0) % 32)); + bits &= IXGBE_READ_REG(hw, IXGBE_VLVFB(word)); + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(word), bits); + } + + /* extract values from active_vlans and write back to VFTA */ + for (i = VFTA_BLOCK_SIZE; i--;) { + vid = (vfta_offset + i) * 32; + word = vid / BITS_PER_LONG; + bits = vid % BITS_PER_LONG; + + vfta[i] |= adapter->active_vlans[word] >> bits; + + IXGBE_WRITE_REG(hw, IXGBE_VFTA(vfta_offset + i), vfta[i]); + } +} + +static void ixgbe_vlan_promisc_disable(struct ixgbe_adapter *adapter) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 vlnctrl, i; + + switch (hw->mac.type) { + case ixgbe_mac_82599EB: + case ixgbe_mac_X540: + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + default: + if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) + break; + /* fall through */ + case ixgbe_mac_82598EB: + vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); + vlnctrl &= ~IXGBE_VLNCTRL_CFIEN; + vlnctrl |= IXGBE_VLNCTRL_VFE; + IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); + return; + } + + /* We are not in VLAN promisc, nothing to do */ + if (!(adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC)) + return; + + /* Set flag so we don't redo unnecessary work */ + adapter->flags2 &= ~IXGBE_FLAG2_VLAN_PROMISC; + + for (i = 0; i < hw->mac.vft_size; i += VFTA_BLOCK_SIZE) + ixgbe_scrub_vfta(adapter, i); +} + static void ixgbe_restore_vlan(struct ixgbe_adapter *adapter) { u16 vid; @@ -4034,124 +4209,156 @@ #ifdef CONFIG_PCI_IOV void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) { + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; int i; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) - hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, - adapter->mac_table[i].queue, + + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + mac_table->state &= ~IXGBE_MAC_STATE_MODIFIED; + + if (mac_table->state & IXGBE_MAC_STATE_IN_USE) + hw->mac.ops.set_rar(hw, i, + mac_table->addr, + mac_table->pool, IXGBE_RAH_AV); else hw->mac.ops.clear_rar(hw, i); - - adapter->mac_table[i].state &= ~(IXGBE_MAC_STATE_MODIFIED); } } -#endif +#endif static void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) { + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; int i; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (adapter->mac_table[i].state & IXGBE_MAC_STATE_MODIFIED) { - if (adapter->mac_table[i].state & - IXGBE_MAC_STATE_IN_USE) - hw->mac.ops.set_rar(hw, i, - adapter->mac_table[i].addr, - adapter->mac_table[i].queue, - IXGBE_RAH_AV); - else - hw->mac.ops.clear_rar(hw, i); - adapter->mac_table[i].state &= - ~(IXGBE_MAC_STATE_MODIFIED); - } + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + if (!(mac_table->state & IXGBE_MAC_STATE_MODIFIED)) + continue; + + mac_table->state &= ~IXGBE_MAC_STATE_MODIFIED; + + if (mac_table->state & IXGBE_MAC_STATE_IN_USE) + hw->mac.ops.set_rar(hw, i, + mac_table->addr, + mac_table->pool, + IXGBE_RAH_AV); + else + hw->mac.ops.clear_rar(hw, i); } } static void ixgbe_flush_sw_mac_table(struct ixgbe_adapter *adapter) { - int i; + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; + int i; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED; - adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE; - eth_zero_addr(adapter->mac_table[i].addr); - adapter->mac_table[i].queue = 0; + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + mac_table->state |= IXGBE_MAC_STATE_MODIFIED; + mac_table->state &= ~IXGBE_MAC_STATE_IN_USE; } + ixgbe_sync_mac_table(adapter); } -static int ixgbe_available_rars(struct ixgbe_adapter *adapter) +static int ixgbe_available_rars(struct ixgbe_adapter *adapter, u16 pool) { + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; int i, count = 0; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (adapter->mac_table[i].state == 0) - count++; + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + /* do not count default RAR as available */ + if (mac_table->state & IXGBE_MAC_STATE_DEFAULT) + continue; + + /* only count unused and addresses that belong to us */ + if (mac_table->state & IXGBE_MAC_STATE_IN_USE) { + if (mac_table->pool != pool) + continue; + } + + count++; } + return count; } /* this function destroys the first RAR entry */ -static void ixgbe_mac_set_default_filter(struct ixgbe_adapter *adapter, - u8 *addr) +static void ixgbe_mac_set_default_filter(struct ixgbe_adapter *adapter) { + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; - memcpy(&adapter->mac_table[0].addr, addr, ETH_ALEN); - adapter->mac_table[0].queue = VMDQ_P(0); - adapter->mac_table[0].state = (IXGBE_MAC_STATE_DEFAULT | - IXGBE_MAC_STATE_IN_USE); - hw->mac.ops.set_rar(hw, 0, adapter->mac_table[0].addr, - adapter->mac_table[0].queue, + memcpy(&mac_table->addr, hw->mac.addr, ETH_ALEN); + mac_table->pool = VMDQ_P(0); + + mac_table->state = IXGBE_MAC_STATE_DEFAULT | IXGBE_MAC_STATE_IN_USE; + + hw->mac.ops.set_rar(hw, 0, mac_table->addr, mac_table->pool, IXGBE_RAH_AV); } -int ixgbe_add_mac_filter(struct ixgbe_adapter *adapter, u8 *addr, u16 queue) +int ixgbe_add_mac_filter(struct ixgbe_adapter *adapter, + const u8 *addr, u16 pool) { + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; int i; if (is_zero_ether_addr(addr)) return -EINVAL; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + if (mac_table->state & IXGBE_MAC_STATE_IN_USE) continue; - adapter->mac_table[i].state |= (IXGBE_MAC_STATE_MODIFIED | - IXGBE_MAC_STATE_IN_USE); - ether_addr_copy(adapter->mac_table[i].addr, addr); - adapter->mac_table[i].queue = queue; + + ether_addr_copy(mac_table->addr, addr); + mac_table->pool = pool; + + mac_table->state |= IXGBE_MAC_STATE_MODIFIED | + IXGBE_MAC_STATE_IN_USE; + ixgbe_sync_mac_table(adapter); + return i; } + return -ENOMEM; } -int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, u8 *addr, u16 queue) +int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, + const u8 *addr, u16 pool) { - /* search table for addr, if found, set to 0 and sync */ - int i; + struct ixgbe_mac_addr *mac_table = &adapter->mac_table[0]; struct ixgbe_hw *hw = &adapter->hw; + int i; if (is_zero_ether_addr(addr)) return -EINVAL; - for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (ether_addr_equal(addr, adapter->mac_table[i].addr) && - adapter->mac_table[i].queue == queue) { - adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED; - adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE; - eth_zero_addr(adapter->mac_table[i].addr); - adapter->mac_table[i].queue = 0; - ixgbe_sync_mac_table(adapter); - return 0; - } + /* search table for addr, if found clear IN_USE flag and sync */ + for (i = 0; i < hw->mac.num_rar_entries; i++, mac_table++) { + /* we can only delete an entry if it is in use */ + if (!(mac_table->state & IXGBE_MAC_STATE_IN_USE)) + continue; + /* we only care about entries that belong to the given pool */ + if (mac_table->pool != pool) + continue; + /* we only care about a specific MAC address */ + if (!ether_addr_equal(addr, mac_table->addr)) + continue; + + mac_table->state |= IXGBE_MAC_STATE_MODIFIED; + mac_table->state &= ~IXGBE_MAC_STATE_IN_USE; + + ixgbe_sync_mac_table(adapter); + + return 0; } + return -ENOMEM; } /** @@ -4169,7 +4376,7 @@ int count = 0; /* return ENOMEM indicating insufficient memory for addresses */ - if (netdev_uc_count(netdev) > ixgbe_available_rars(adapter)) + if (netdev_uc_count(netdev) > ixgbe_available_rars(adapter, vfn)) return -ENOMEM; if (!netdev_uc_empty(netdev)) { @@ -4183,6 +4390,25 @@ return count; } +static int ixgbe_uc_sync(struct net_device *netdev, const unsigned char *addr) +{ + struct ixgbe_adapter *adapter = netdev_priv(netdev); + int ret; + + ret = ixgbe_add_mac_filter(adapter, addr, VMDQ_P(0)); + + return min_t(int, ret, 0); +} + +static int ixgbe_uc_unsync(struct net_device *netdev, const unsigned char *addr) +{ + struct ixgbe_adapter *adapter = netdev_priv(netdev); + + ixgbe_del_mac_filter(adapter, addr, VMDQ_P(0)); + + return 0; +} + /** * ixgbe_set_rx_mode - Unicast, Multicast and Promiscuous mode set * @netdev: network interface device structure @@ -4197,12 +4423,10 @@ struct ixgbe_adapter *adapter = netdev_priv(netdev); struct ixgbe_hw *hw = &adapter->hw; u32 fctrl, vmolr = IXGBE_VMOLR_BAM | IXGBE_VMOLR_AUPE; - u32 vlnctrl; int count; /* Check for Promiscuous and All Multicast modes */ fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL); - vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); /* set all bits that we expect to always be set */ fctrl &= ~IXGBE_FCTRL_SBP; /* disable store-bad-packets */ @@ -4212,25 +4436,18 @@ /* clear the bits we are changing the status of */ fctrl &= ~(IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); - vlnctrl &= ~(IXGBE_VLNCTRL_VFE | IXGBE_VLNCTRL_CFIEN); if (netdev->flags & IFF_PROMISC) { hw->addr_ctrl.user_set_promisc = true; fctrl |= (IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); vmolr |= IXGBE_VMOLR_MPE; - /* Only disable hardware filter vlans in promiscuous mode - * if SR-IOV and VMDQ are disabled - otherwise ensure - * that hardware VLAN filters remain enabled. - */ - if (adapter->flags & (IXGBE_FLAG_VMDQ_ENABLED | - IXGBE_FLAG_SRIOV_ENABLED)) - vlnctrl |= (IXGBE_VLNCTRL_VFE | IXGBE_VLNCTRL_CFIEN); + ixgbe_vlan_promisc_enable(adapter); } else { if (netdev->flags & IFF_ALLMULTI) { fctrl |= IXGBE_FCTRL_MPE; vmolr |= IXGBE_VMOLR_MPE; } - vlnctrl |= IXGBE_VLNCTRL_VFE; hw->addr_ctrl.user_set_promisc = false; + ixgbe_vlan_promisc_disable(adapter); } /* @@ -4238,8 +4455,7 @@ * sufficient space to store all the addresses then enable * unicast promiscuous mode */ - count = ixgbe_write_uc_addr_list(netdev, VMDQ_P(0)); - if (count < 0) { + if (__dev_uc_sync(netdev, ixgbe_uc_sync, ixgbe_uc_unsync)) { fctrl |= IXGBE_FCTRL_UPE; vmolr |= IXGBE_VMOLR_ROPE; } @@ -4275,7 +4491,6 @@ /* NOTE: VLAN filtering is disabled by setting PROMISC */ } - IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); IXGBE_WRITE_REG(hw, IXGBE_FCTRL, fctrl); if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) @@ -5042,7 +5257,6 @@ struct ixgbe_hw *hw = &adapter->hw; struct net_device *netdev = adapter->netdev; int err; - u8 old_addr[ETH_ALEN]; if (ixgbe_removed(hw->hw_addr)) return; @@ -5078,10 +5292,13 @@ } clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state); - /* do not flush user set addresses */ - memcpy(old_addr, &adapter->mac_table[0].addr, netdev->addr_len); + + /* flush entries out of MAC table */ ixgbe_flush_sw_mac_table(adapter); - ixgbe_mac_set_default_filter(adapter, old_addr); + __dev_uc_unsync(netdev, NULL); + + /* do not flush user set addresses */ + ixgbe_mac_set_default_filter(adapter); /* update SAN MAC vmdq pool selection */ if (hw->mac.san_mac_rar_index) @@ -5331,6 +5548,8 @@ adapter->mac_table = kzalloc(sizeof(struct ixgbe_mac_addr) * hw->mac.num_rar_entries, GFP_ATOMIC); + if (!adapter->mac_table) + return -ENOMEM; /* Set MAC specific capability flags and exceptions */ switch (hw->mac.type) { @@ -6616,10 +6835,8 @@ { struct ixgbe_hw *hw = &adapter->hw; struct pci_dev *pdev = adapter->pdev; - struct pci_dev *vfdev; + unsigned int vf; u32 gpc; - int pos; - unsigned short vf_id; if (!(netif_carrier_ok(adapter->netdev))) return; @@ -6636,26 +6853,17 @@ if (!pdev) return; - pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); - if (!pos) - return; - - /* get the device ID for the VF */ - pci_read_config_word(pdev, pos + PCI_SRIOV_VF_DID, &vf_id); - /* check status reg for all VFs owned by this PF */ - vfdev = pci_get_device(pdev->vendor, vf_id, NULL); - while (vfdev) { - if (vfdev->is_virtfn && (vfdev->physfn == pdev)) { - u16 status_reg; - - pci_read_config_word(vfdev, PCI_STATUS, &status_reg); - if (status_reg & PCI_STATUS_REC_MASTER_ABORT) - /* issue VFLR */ - ixgbe_issue_vf_flr(adapter, vfdev); - } + for (vf = 0; vf < adapter->num_vfs; ++vf) { + struct pci_dev *vfdev = adapter->vfinfo[vf].vfdev; + u16 status_reg; - vfdev = pci_get_device(pdev->vendor, vf_id, vfdev); + if (!vfdev) + continue; + pci_read_config_word(vfdev, PCI_STATUS, &status_reg); + if (status_reg != IXGBE_FAILED_READ_CFG_WORD && + status_reg & PCI_STATUS_REC_MASTER_ABORT) + ixgbe_issue_vf_flr(adapter, vfdev); } } @@ -7024,6 +7232,7 @@ struct tcphdr *tcphdr; u8 *raw; } transport_hdr; + __be16 frag_off; if (skb->encapsulation) { network_hdr.raw = skb_inner_network_header(skb); @@ -7047,13 +7256,17 @@ case 6: vlan_macip_lens |= transport_hdr.raw - network_hdr.raw; l4_hdr = network_hdr.ipv6->nexthdr; + if (likely((transport_hdr.raw - network_hdr.raw) == + sizeof(struct ipv6hdr))) + break; + ipv6_skip_exthdr(skb, network_hdr.raw - skb->data + + sizeof(struct ipv6hdr), + &l4_hdr, &frag_off); + if (unlikely(frag_off)) + l4_hdr = NEXTHDR_FRAGMENT; break; default: - if (unlikely(net_ratelimit())) { - dev_warn(tx_ring->dev, - "partial checksum but version=%d\n", - network_hdr.ipv4->version); - } + break; } switch (l4_hdr) { @@ -7074,16 +7287,18 @@ default: if (unlikely(net_ratelimit())) { dev_warn(tx_ring->dev, - "partial checksum but l4 proto=%x!\n", - l4_hdr); + "partial checksum, version=%d, l4 proto=%x\n", + network_hdr.ipv4->version, l4_hdr); } - break; + skb_checksum_help(skb); + goto no_csum; } /* update TX checksum flag */ first->tx_flags |= IXGBE_TX_FLAGS_CSUM; } +no_csum: /* vlan_macip_lens: MACLEN, VLAN tag */ vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; @@ -7358,7 +7573,9 @@ /* snag network header to get L4 type and address */ skb = first->skb; hdr.network = skb_network_header(skb); - if (skb->encapsulation) { + if (!skb->encapsulation) { + th = tcp_hdr(skb); + } else { #ifdef CONFIG_IXGBE_VXLAN struct ixgbe_adapter *adapter = q_vector->adapter; @@ -7377,14 +7594,34 @@ #else return; #endif /* CONFIG_IXGBE_VXLAN */ - } else { - /* Currently only IPv4/IPv6 with TCP is supported */ - if ((first->protocol != htons(ETH_P_IPV6) || - hdr.ipv6->nexthdr != IPPROTO_TCP) && - (first->protocol != htons(ETH_P_IP) || - hdr.ipv4->protocol != IPPROTO_TCP)) + } + + /* Currently only IPv4/IPv6 with TCP is supported */ + switch (hdr.ipv4->version) { + case IPVERSION: + if (hdr.ipv4->protocol != IPPROTO_TCP) return; - th = tcp_hdr(skb); + break; + case 6: + if (likely((unsigned char *)th - hdr.network == + sizeof(struct ipv6hdr))) { + if (hdr.ipv6->nexthdr != IPPROTO_TCP) + return; + } else { + __be16 frag_off; + u8 l4_hdr; + + ipv6_skip_exthdr(skb, hdr.network - skb->data + + sizeof(struct ipv6hdr), + &l4_hdr, &frag_off); + if (unlikely(frag_off)) + return; + if (l4_hdr != IPPROTO_TCP) + return; + } + break; + default: + return; } /* skip this packet since it is invalid or the socket is closing */ @@ -7419,10 +7656,12 @@ common.port.src ^= th->dest ^ first->protocol; common.port.dst ^= th->source; - if (first->protocol == htons(ETH_P_IP)) { + switch (hdr.ipv4->version) { + case IPVERSION: input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; - } else { + break; + case 6: input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV6; common.ip ^= hdr.ipv6->saddr.s6_addr32[0] ^ hdr.ipv6->saddr.s6_addr32[1] ^ @@ -7432,6 +7671,9 @@ hdr.ipv6->daddr.s6_addr32[1] ^ hdr.ipv6->daddr.s6_addr32[2] ^ hdr.ipv6->daddr.s6_addr32[3]; + break; + default: + break; } #ifdef CONFIG_IXGBE_VXLAN @@ -7659,17 +7901,16 @@ struct ixgbe_adapter *adapter = netdev_priv(netdev); struct ixgbe_hw *hw = &adapter->hw; struct sockaddr *addr = p; - int ret; if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; - ixgbe_del_mac_filter(adapter, hw->mac.addr, VMDQ_P(0)); memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len); - ret = ixgbe_add_mac_filter(adapter, hw->mac.addr, VMDQ_P(0)); - return ret > 0 ? 0 : ret; + ixgbe_mac_set_default_filter(adapter); + + return 0; } static int @@ -8155,7 +8396,10 @@ { /* guarantee we can provide a unique filter for the unicast address */ if (is_unicast_ether_addr(addr) || is_link_local_ether_addr(addr)) { - if (IXGBE_MAX_PF_MACVLANS <= netdev_uc_count(dev)) + struct ixgbe_adapter *adapter = netdev_priv(dev); + u16 pool = VMDQ_P(0); + + if (netdev_uc_count(dev) >= ixgbe_available_rars(adapter, pool)) return -ENOMEM; } @@ -8801,8 +9045,7 @@ netdev->vlan_features |= NETIF_F_IPV6_CSUM; netdev->vlan_features |= NETIF_F_SG; - netdev->hw_enc_features |= NETIF_F_SG | NETIF_F_IP_CSUM | - NETIF_F_IPV6_CSUM; + netdev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; netdev->priv_flags |= IFF_UNICAST_FLT; netdev->priv_flags |= IFF_SUPP_NOFCS; @@ -8811,9 +9054,7 @@ switch (adapter->hw.mac.type) { case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: - netdev->hw_enc_features |= NETIF_F_RXCSUM | - NETIF_F_IP_CSUM | - NETIF_F_IPV6_CSUM; + netdev->hw_enc_features |= NETIF_F_RXCSUM; break; default: break; @@ -8873,7 +9114,7 @@ goto err_sw_init; } - ixgbe_mac_set_default_filter(adapter, hw->mac.perm_addr); + ixgbe_mac_set_default_filter(adapter); setup_timer(&adapter->service_timer, &ixgbe_service_timer, (unsigned long) adapter); @@ -9328,6 +9569,12 @@ pr_info("%s - version %s\n", ixgbe_driver_string, ixgbe_driver_version); pr_info("%s\n", ixgbe_copyright); + ixgbe_wq = create_singlethread_workqueue(ixgbe_driver_name); + if (!ixgbe_wq) { + pr_err("%s: Failed to create workqueue\n", ixgbe_driver_name); + return -ENOMEM; + } + ixgbe_dbg_init(); ret = pci_register_driver(&ixgbe_driver); @@ -9359,6 +9606,10 @@ pci_unregister_driver(&ixgbe_driver); ixgbe_dbg_exit(); + if (ixgbe_wq) { + destroy_workqueue(ixgbe_wq); + ixgbe_wq = NULL; + } } #ifdef CONFIG_IXGBE_DCA --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c @@ -2393,6 +2393,9 @@ if (hw->mac.ops.get_media_type(hw) != ixgbe_media_type_copper) return 0; + if (!on && ixgbe_mng_present(hw)) + return 0; + status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_VENDOR_SPECIFIC_1_CONTROL, IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, ®); --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c @@ -1,7 +1,7 @@ /******************************************************************************* Intel 10 Gigabit PCI Express Linux driver - Copyright(c) 1999 - 2013 Intel Corporation. + Copyright(c) 1999 - 2015 Intel Corporation. This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, @@ -27,6 +27,7 @@ *******************************************************************************/ #include "ixgbe.h" #include +#include /* * The 82599 and the X540 do not have true 64bit nanosecond scale @@ -93,7 +94,6 @@ #define IXGBE_INCVAL_SHIFT_82599 7 #define IXGBE_INCPER_SHIFT_82599 24 -#define IXGBE_MAX_TIMEADJ_VALUE 0x7FFFFFFFFFFFFFFFULL #define IXGBE_OVERFLOW_PERIOD (HZ * 30) #define IXGBE_PTP_TX_TIMEOUT (HZ * 15) @@ -104,8 +104,68 @@ */ #define IXGBE_PTP_PPS_HALF_SECOND 500000000ULL +/* In contrast, the X550 controller has two registers, SYSTIMEH and SYSTIMEL + * which contain measurements of seconds and nanoseconds respectively. This + * matches the standard linux representation of time in the kernel. In addition, + * the X550 also has a SYSTIMER register which represents residue, or + * subnanosecond overflow adjustments. To control clock adjustment, the TIMINCA + * register is used, but it is unlike the X540 and 82599 devices. TIMINCA + * represents units of 2^-32 nanoseconds, and uses 31 bits for this, with the + * high bit representing whether the adjustent is positive or negative. Every + * clock cycle, the X550 will add 12.5 ns + TIMINCA which can result in a range + * of 12 to 13 nanoseconds adjustment. Unlike the 82599 and X540 devices, the + * X550's clock for purposes of SYSTIME generation is constant and not dependent + * on the link speed. + * + * SYSTIMEH SYSTIMEL SYSTIMER + * +--------------+ +--------------+ +-------------+ + * X550 | 32 | | 32 | | 32 | + * *--------------+ +--------------+ +-------------+ + * \____seconds___/ \_nanoseconds_/ \__2^-32 ns__/ + * + * This results in a full 96 bits to represent the clock, with 32 bits for + * seconds, 32 bits for nanoseconds (largest value is 0d999999999 or just under + * 1 second) and an additional 32 bits to measure sub nanosecond adjustments for + * underflow of adjustments. + * + * The 32 bits of seconds for the X550 overflows every + * 2^32 / ( 365.25 * 24 * 60 * 60 ) = ~136 years. + * + * In order to adjust the clock frequency for the X550, the TIMINCA register is + * provided. This register represents a + or minus nearly 0.5 ns adjustment to + * the base frequency. It is measured in 2^-32 ns units, with the high bit being + * the sign bit. This register enables software to calculate frequency + * adjustments and apply them directly to the clock rate. + * + * The math for converting ppb into TIMINCA values is fairly straightforward. + * TIMINCA value = ( Base_Frequency * ppb ) / 1000000000ULL + * + * This assumes that ppb is never high enough to create a value bigger than + * TIMINCA's 31 bits can store. This is ensured by the stack. Calculating this + * value is also simple. + * Max ppb = ( Max Adjustment / Base Frequency ) / 1000000000ULL + * + * For the X550, the Max adjustment is +/- 0.5 ns, and the base frequency is + * 12.5 nanoseconds. This means that the Max ppb is 39999999 + * Note: We subtract one in order to ensure no overflow, because the TIMINCA + * register can only hold slightly under 0.5 nanoseconds. + * + * Because TIMINCA is measured in 2^-32 ns units, we have to convert 12.5 ns + * into 2^-32 units, which is + * + * 12.5 * 2^32 = C80000000 + * + * Some revisions of hardware have a faster base frequency than the registers + * were defined for. To fix this, we use a timecounter structure with the + * proper mult and shift to convert the cycles into nanoseconds of time. + */ +#define IXGBE_X550_BASE_PERIOD 0xC80000000ULL +#define INCVALUE_MASK 0x7FFFFFFF +#define ISGN 0x80000000 +#define MAX_TIMADJ 0x7FFFFFFF + /** - * ixgbe_ptp_setup_sdp + * ixgbe_ptp_setup_sdp_x540 * @hw: the hardware private structure * * this function enables or disables the clock out feature on SDP0 for @@ -116,83 +176,116 @@ * aligns the start of the PPS signal to that value. The shift is * necessary because it can change based on the link speed. */ -static void ixgbe_ptp_setup_sdp(struct ixgbe_adapter *adapter) +static void ixgbe_ptp_setup_sdp_x540(struct ixgbe_adapter *adapter) { struct ixgbe_hw *hw = &adapter->hw; - int shift = adapter->cc.shift; + int shift = adapter->hw_cc.shift; u32 esdp, tsauxc, clktiml, clktimh, trgttiml, trgttimh, rem; u64 ns = 0, clock_edge = 0; - if ((adapter->flags2 & IXGBE_FLAG2_PTP_PPS_ENABLED) && - (hw->mac.type == ixgbe_mac_X540)) { + /* disable the pin first */ + IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0x0); + IXGBE_WRITE_FLUSH(hw); - /* disable the pin first */ - IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0x0); - IXGBE_WRITE_FLUSH(hw); + if (!(adapter->flags2 & IXGBE_FLAG2_PTP_PPS_ENABLED)) + return; - esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); + esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); - /* - * enable the SDP0 pin as output, and connected to the - * native function for Timesync (ClockOut) - */ - esdp |= (IXGBE_ESDP_SDP0_DIR | - IXGBE_ESDP_SDP0_NATIVE); + /* enable the SDP0 pin as output, and connected to the + * native function for Timesync (ClockOut) + */ + esdp |= IXGBE_ESDP_SDP0_DIR | + IXGBE_ESDP_SDP0_NATIVE; - /* - * enable the Clock Out feature on SDP0, and allow - * interrupts to occur when the pin changes - */ - tsauxc = (IXGBE_TSAUXC_EN_CLK | - IXGBE_TSAUXC_SYNCLK | - IXGBE_TSAUXC_SDP0_INT); - - /* clock period (or pulse length) */ - clktiml = (u32)(IXGBE_PTP_PPS_HALF_SECOND << shift); - clktimh = (u32)((IXGBE_PTP_PPS_HALF_SECOND << shift) >> 32); + /* enable the Clock Out feature on SDP0, and allow + * interrupts to occur when the pin changes + */ + tsauxc = IXGBE_TSAUXC_EN_CLK | + IXGBE_TSAUXC_SYNCLK | + IXGBE_TSAUXC_SDP0_INT; + + /* clock period (or pulse length) */ + clktiml = (u32)(IXGBE_PTP_PPS_HALF_SECOND << shift); + clktimh = (u32)((IXGBE_PTP_PPS_HALF_SECOND << shift) >> 32); + + /* Account for the cyclecounter wrap-around value by + * using the converted ns value of the current time to + * check for when the next aligned second would occur. + */ + clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIML); + clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIMH) << 32; + ns = timecounter_cyc2time(&adapter->hw_tc, clock_edge); + + div_u64_rem(ns, IXGBE_PTP_PPS_HALF_SECOND, &rem); + clock_edge += ((IXGBE_PTP_PPS_HALF_SECOND - (u64)rem) << shift); + + /* specify the initial clock start time */ + trgttiml = (u32)clock_edge; + trgttimh = (u32)(clock_edge >> 32); + + IXGBE_WRITE_REG(hw, IXGBE_CLKTIML, clktiml); + IXGBE_WRITE_REG(hw, IXGBE_CLKTIMH, clktimh); + IXGBE_WRITE_REG(hw, IXGBE_TRGTTIML0, trgttiml); + IXGBE_WRITE_REG(hw, IXGBE_TRGTTIMH0, trgttimh); - /* - * Account for the cyclecounter wrap-around value by - * using the converted ns value of the current time to - * check for when the next aligned second would occur. - */ - clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIML); - clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIMH) << 32; - ns = timecounter_cyc2time(&adapter->tc, clock_edge); - - div_u64_rem(ns, IXGBE_PTP_PPS_HALF_SECOND, &rem); - clock_edge += ((IXGBE_PTP_PPS_HALF_SECOND - (u64)rem) << shift); - - /* specify the initial clock start time */ - trgttiml = (u32)clock_edge; - trgttimh = (u32)(clock_edge >> 32); - - IXGBE_WRITE_REG(hw, IXGBE_CLKTIML, clktiml); - IXGBE_WRITE_REG(hw, IXGBE_CLKTIMH, clktimh); - IXGBE_WRITE_REG(hw, IXGBE_TRGTTIML0, trgttiml); - IXGBE_WRITE_REG(hw, IXGBE_TRGTTIMH0, trgttimh); - - IXGBE_WRITE_REG(hw, IXGBE_ESDP, esdp); - IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, tsauxc); - } else { - IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0x0); - } + IXGBE_WRITE_REG(hw, IXGBE_ESDP, esdp); + IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, tsauxc); IXGBE_WRITE_FLUSH(hw); } /** - * ixgbe_ptp_read - read raw cycle counter (to be used by time counter) + * ixgbe_ptp_read_X550 - read cycle counter value + * @hw_cc: cyclecounter structure + * + * This function reads SYSTIME registers. It is called by the cyclecounter + * structure to convert from internal representation into nanoseconds. We need + * this for X550 since some skews do not have expected clock frequency and + * result of SYSTIME is 32bits of "billions of cycles" and 32 bits of + * "cycles", rather than seconds and nanoseconds. + */ +static cycle_t ixgbe_ptp_read_X550(const struct cyclecounter *hw_cc) +{ + struct ixgbe_adapter *adapter = + container_of(hw_cc, struct ixgbe_adapter, hw_cc); + struct ixgbe_hw *hw = &adapter->hw; + struct timespec64 ts; + + /* storage is 32 bits of 'billions of cycles' and 32 bits of 'cycles'. + * Some revisions of hardware run at a higher frequency and so the + * cycles are not guaranteed to be nanoseconds. The timespec64 created + * here is used for its math/conversions but does not necessarily + * represent nominal time. + * + * It should be noted that this cyclecounter will overflow at a + * non-bitmask field since we have to convert our billions of cycles + * into an actual cycles count. This results in some possible weird + * situations at high cycle counter stamps. However given that 32 bits + * of "seconds" is ~138 years this isn't a problem. Even at the + * increased frequency of some revisions, this is still ~103 years. + * Since the SYSTIME values start at 0 and we never write them, it is + * highly unlikely for the cyclecounter to overflow in practice. + */ + IXGBE_READ_REG(hw, IXGBE_SYSTIMR); + ts.tv_nsec = IXGBE_READ_REG(hw, IXGBE_SYSTIML); + ts.tv_sec = IXGBE_READ_REG(hw, IXGBE_SYSTIMH); + + return (u64)timespec64_to_ns(&ts); +} + +/** + * ixgbe_ptp_read_82599 - read raw cycle counter (to be used by time counter) * @cc: the cyclecounter structure * * this function reads the cyclecounter registers and is called by the * cyclecounter structure used to construct a ns counter from the * arbitrary fixed point registers */ -static cycle_t ixgbe_ptp_read(const struct cyclecounter *cc) +static cycle_t ixgbe_ptp_read_82599(const struct cyclecounter *cc) { struct ixgbe_adapter *adapter = - container_of(cc, struct ixgbe_adapter, cc); + container_of(cc, struct ixgbe_adapter, hw_cc); struct ixgbe_hw *hw = &adapter->hw; u64 stamp = 0; @@ -203,20 +296,79 @@ } /** - * ixgbe_ptp_adjfreq + * ixgbe_ptp_convert_to_hwtstamp - convert register value to hw timestamp + * @adapter: private adapter structure + * @hwtstamp: stack timestamp structure + * @systim: unsigned 64bit system time value + * + * We need to convert the adapter's RX/TXSTMP registers into a hwtstamp value + * which can be used by the stack's ptp functions. + * + * The lock is used to protect consistency of the cyclecounter and the SYSTIME + * registers. However, it does not need to protect against the Rx or Tx + * timestamp registers, as there can't be a new timestamp until the old one is + * unlatched by reading. + * + * In addition to the timestamp in hardware, some controllers need a software + * overflow cyclecounter, and this function takes this into account as well. + **/ +static void ixgbe_ptp_convert_to_hwtstamp(struct ixgbe_adapter *adapter, + struct skb_shared_hwtstamps *hwtstamp, + u64 timestamp) +{ + unsigned long flags; + struct timespec64 systime; + u64 ns; + + memset(hwtstamp, 0, sizeof(*hwtstamp)); + + switch (adapter->hw.mac.type) { + /* X550 and later hardware supposedly represent time using a seconds + * and nanoseconds counter, instead of raw 64bits nanoseconds. We need + * to convert the timestamp into cycles before it can be fed to the + * cyclecounter. We need an actual cyclecounter because some revisions + * of hardware run at a higher frequency and thus the counter does + * not represent seconds/nanoseconds. Instead it can be thought of as + * cycles and billions of cycles. + */ + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + /* Upper 32 bits represent billions of cycles, lower 32 bits + * represent cycles. However, we use timespec64_to_ns for the + * correct math even though the units haven't been corrected + * yet. + */ + systime.tv_sec = timestamp >> 32; + systime.tv_nsec = timestamp & 0xFFFFFFFF; + + timestamp = timespec64_to_ns(&systime); + break; + default: + break; + } + + spin_lock_irqsave(&adapter->tmreg_lock, flags); + ns = timecounter_cyc2time(&adapter->hw_tc, timestamp); + spin_unlock_irqrestore(&adapter->tmreg_lock, flags); + + hwtstamp->hwtstamp = ns_to_ktime(ns); +} + +/** + * ixgbe_ptp_adjfreq_82599 * @ptp: the ptp clock structure * @ppb: parts per billion adjustment from base * * adjust the frequency of the ptp cycle counter by the * indicated ppb from the base frequency. */ -static int ixgbe_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb) +static int ixgbe_ptp_adjfreq_82599(struct ptp_clock_info *ptp, s32 ppb) { struct ixgbe_adapter *adapter = container_of(ptp, struct ixgbe_adapter, ptp_caps); struct ixgbe_hw *hw = &adapter->hw; - u64 freq; - u32 diff, incval; + u64 freq, incval; + u32 diff; int neg_adj = 0; if (ppb < 0) { @@ -235,12 +387,16 @@ switch (hw->mac.type) { case ixgbe_mac_X540: - IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, incval); + if (incval > 0xFFFFFFFFULL) + e_dev_warn("PTP ppb adjusted SYSTIME rate overflowed!\n"); + IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, (u32)incval); break; case ixgbe_mac_82599EB: + if (incval > 0x00FFFFFFULL) + e_dev_warn("PTP ppb adjusted SYSTIME rate overflowed!\n"); IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, (1 << IXGBE_INCPER_SHIFT_82599) | - incval); + ((u32)incval & 0x00FFFFFFUL)); break; default: break; @@ -250,6 +406,43 @@ } /** + * ixgbe_ptp_adjfreq_X550 + * @ptp: the ptp clock structure + * @ppb: parts per billion adjustment from base + * + * adjust the frequency of the SYSTIME registers by the indicated ppb from base + * frequency + */ +static int ixgbe_ptp_adjfreq_X550(struct ptp_clock_info *ptp, s32 ppb) +{ + struct ixgbe_adapter *adapter = + container_of(ptp, struct ixgbe_adapter, ptp_caps); + struct ixgbe_hw *hw = &adapter->hw; + int neg_adj = 0; + u64 rate = IXGBE_X550_BASE_PERIOD; + u32 inca; + + if (ppb < 0) { + neg_adj = 1; + ppb = -ppb; + } + rate *= ppb; + rate = div_u64(rate, 1000000000ULL); + + /* warn if rate is too large */ + if (rate >= INCVALUE_MASK) + e_dev_warn("PTP ppb adjusted SYSTIME rate overflowed!\n"); + + inca = rate & INCVALUE_MASK; + if (neg_adj) + inca |= ISGN; + + IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, inca); + + return 0; +} + +/** * ixgbe_ptp_adjtime * @ptp: the ptp clock structure * @delta: offset to adjust the cycle counter by @@ -263,10 +456,11 @@ unsigned long flags; spin_lock_irqsave(&adapter->tmreg_lock, flags); - timecounter_adjtime(&adapter->tc, delta); + timecounter_adjtime(&adapter->hw_tc, delta); spin_unlock_irqrestore(&adapter->tmreg_lock, flags); - ixgbe_ptp_setup_sdp(adapter); + if (adapter->ptp_setup_sdp) + adapter->ptp_setup_sdp(adapter); return 0; } @@ -283,11 +477,11 @@ { struct ixgbe_adapter *adapter = container_of(ptp, struct ixgbe_adapter, ptp_caps); - u64 ns; unsigned long flags; + u64 ns; spin_lock_irqsave(&adapter->tmreg_lock, flags); - ns = timecounter_read(&adapter->tc); + ns = timecounter_read(&adapter->hw_tc); spin_unlock_irqrestore(&adapter->tmreg_lock, flags); *ts = ns_to_timespec64(ns); @@ -308,17 +502,16 @@ { struct ixgbe_adapter *adapter = container_of(ptp, struct ixgbe_adapter, ptp_caps); - u64 ns; unsigned long flags; - - ns = timespec64_to_ns(ts); + u64 ns = timespec64_to_ns(ts); /* reset the timecounter */ spin_lock_irqsave(&adapter->tmreg_lock, flags); - timecounter_init(&adapter->tc, &adapter->cc, ns); + timecounter_init(&adapter->hw_tc, &adapter->hw_cc, ns); spin_unlock_irqrestore(&adapter->tmreg_lock, flags); - ixgbe_ptp_setup_sdp(adapter); + if (adapter->ptp_setup_sdp) + adapter->ptp_setup_sdp(adapter); return 0; } @@ -343,33 +536,26 @@ * event when the clock SDP triggers. Clear mask when PPS is * disabled */ - if (rq->type == PTP_CLK_REQ_PPS) { - switch (adapter->hw.mac.type) { - case ixgbe_mac_X540: - if (on) - adapter->flags2 |= IXGBE_FLAG2_PTP_PPS_ENABLED; - else - adapter->flags2 &= ~IXGBE_FLAG2_PTP_PPS_ENABLED; - - ixgbe_ptp_setup_sdp(adapter); - return 0; - default: - break; - } - } + if (rq->type != PTP_CLK_REQ_PPS || !adapter->ptp_setup_sdp) + return -ENOTSUPP; - return -ENOTSUPP; + if (on) + adapter->flags2 |= IXGBE_FLAG2_PTP_PPS_ENABLED; + else + adapter->flags2 &= ~IXGBE_FLAG2_PTP_PPS_ENABLED; + + adapter->ptp_setup_sdp(adapter); + return 0; } /** * ixgbe_ptp_check_pps_event * @adapter: the private adapter structure - * @eicr: the interrupt cause register value * * This function is called by the interrupt routine when checking for * interrupts. It will check and handle a pps event. */ -void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr) +void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter) { struct ixgbe_hw *hw = &adapter->hw; struct ptp_clock_event event; @@ -425,7 +611,9 @@ { struct ixgbe_hw *hw = &adapter->hw; u32 tsyncrxctl = IXGBE_READ_REG(hw, IXGBE_TSYNCRXCTL); + struct ixgbe_ring *rx_ring; unsigned long rx_event; + int n; /* if we don't have a valid timestamp in the registers, just update the * timeout counter and exit @@ -437,19 +625,43 @@ /* determine the most recent watchdog or rx_timestamp event */ rx_event = adapter->last_rx_ptp_check; - if (time_after(adapter->last_rx_timestamp, rx_event)) - rx_event = adapter->last_rx_timestamp; + for (n = 0; n < adapter->num_rx_queues; n++) { + rx_ring = adapter->rx_ring[n]; + if (time_after(rx_ring->last_rx_timestamp, rx_event)) + rx_event = rx_ring->last_rx_timestamp; + } /* only need to read the high RXSTMP register to clear the lock */ - if (time_is_before_jiffies(rx_event + 5*HZ)) { + if (time_is_before_jiffies(rx_event + 5 * HZ)) { IXGBE_READ_REG(hw, IXGBE_RXSTMPH); adapter->last_rx_ptp_check = jiffies; + adapter->rx_hwtstamp_cleared++; e_warn(drv, "clearing RX Timestamp hang\n"); } } /** + * ixgbe_ptp_clear_tx_timestamp - utility function to clear Tx timestamp state + * @adapter: the private adapter structure + * + * This function should be called whenever the state related to a Tx timestamp + * needs to be cleared. This helps ensure that all related bits are reset for + * the next Tx timestamp event. + */ +static void ixgbe_ptp_clear_tx_timestamp(struct ixgbe_adapter *adapter) +{ + struct ixgbe_hw *hw = &adapter->hw; + + IXGBE_READ_REG(hw, IXGBE_TXSTMPH); + if (adapter->ptp_tx_skb) { + dev_kfree_skb_any(adapter->ptp_tx_skb); + adapter->ptp_tx_skb = NULL; + } + clear_bit_unlock(__IXGBE_PTP_TX_IN_PROGRESS, &adapter->state); +} + +/** * ixgbe_ptp_tx_hwtstamp - utility function which checks for TX time stamp * @adapter: the private adapter struct * @@ -461,23 +673,15 @@ { struct ixgbe_hw *hw = &adapter->hw; struct skb_shared_hwtstamps shhwtstamps; - u64 regval = 0, ns; - unsigned long flags; + u64 regval = 0; regval |= (u64)IXGBE_READ_REG(hw, IXGBE_TXSTMPL); regval |= (u64)IXGBE_READ_REG(hw, IXGBE_TXSTMPH) << 32; - spin_lock_irqsave(&adapter->tmreg_lock, flags); - ns = timecounter_cyc2time(&adapter->tc, regval); - spin_unlock_irqrestore(&adapter->tmreg_lock, flags); - - memset(&shhwtstamps, 0, sizeof(shhwtstamps)); - shhwtstamps.hwtstamp = ns_to_ktime(ns); + ixgbe_ptp_convert_to_hwtstamp(adapter, &shhwtstamps, regval); skb_tstamp_tx(adapter->ptp_tx_skb, &shhwtstamps); - dev_kfree_skb_any(adapter->ptp_tx_skb); - adapter->ptp_tx_skb = NULL; - clear_bit_unlock(__IXGBE_PTP_TX_IN_PROGRESS, &adapter->state); + ixgbe_ptp_clear_tx_timestamp(adapter); } /** @@ -497,38 +701,85 @@ IXGBE_PTP_TX_TIMEOUT); u32 tsynctxctl; - if (timeout) { - dev_kfree_skb_any(adapter->ptp_tx_skb); - adapter->ptp_tx_skb = NULL; - clear_bit_unlock(__IXGBE_PTP_TX_IN_PROGRESS, &adapter->state); - e_warn(drv, "clearing Tx Timestamp hang\n"); + /* we have to have a valid skb to poll for a timestamp */ + if (!adapter->ptp_tx_skb) { + ixgbe_ptp_clear_tx_timestamp(adapter); return; } + /* stop polling once we have a valid timestamp */ tsynctxctl = IXGBE_READ_REG(hw, IXGBE_TSYNCTXCTL); - if (tsynctxctl & IXGBE_TSYNCTXCTL_VALID) + if (tsynctxctl & IXGBE_TSYNCTXCTL_VALID) { ixgbe_ptp_tx_hwtstamp(adapter); - else + return; + } + + if (timeout) { + ixgbe_ptp_clear_tx_timestamp(adapter); + adapter->tx_hwtstamp_timeouts++; + e_warn(drv, "clearing Tx Timestamp hang\n"); + } else { /* reschedule to keep checking if it's not available yet */ schedule_work(&adapter->ptp_tx_work); + } } /** - * ixgbe_ptp_rx_hwtstamp - utility function which checks for RX time stamp - * @adapter: pointer to adapter struct + * ixgbe_ptp_rx_pktstamp - utility function to get RX time stamp from buffer + * @q_vector: structure containing interrupt and ring information + * @skb: the packet + * + * This function will be called by the Rx routine of the timestamp for this + * packet is stored in the buffer. The value is stored in little endian format + * starting at the end of the packet data. + */ +void ixgbe_ptp_rx_pktstamp(struct ixgbe_q_vector *q_vector, + struct sk_buff *skb) +{ + __le64 regval; + + /* copy the bits out of the skb, and then trim the skb length */ + skb_copy_bits(skb, skb->len - IXGBE_TS_HDR_LEN, ®val, + IXGBE_TS_HDR_LEN); + __pskb_trim(skb, skb->len - IXGBE_TS_HDR_LEN); + + /* The timestamp is recorded in little endian format, and is stored at + * the end of the packet. + * + * DWORD: N N + 1 N + 2 + * Field: End of Packet SYSTIMH SYSTIML + */ + ixgbe_ptp_convert_to_hwtstamp(q_vector->adapter, skb_hwtstamps(skb), + le64_to_cpu(regval)); +} + +/** + * ixgbe_ptp_rx_rgtstamp - utility function which checks for RX time stamp + * @q_vector: structure containing interrupt and ring information * @skb: particular skb to send timestamp with * * if the timestamp is valid, we convert it into the timecounter ns * value, then store that result into the shhwtstamps structure which * is passed up the network stack */ -void ixgbe_ptp_rx_hwtstamp(struct ixgbe_adapter *adapter, struct sk_buff *skb) +void ixgbe_ptp_rx_rgtstamp(struct ixgbe_q_vector *q_vector, + struct sk_buff *skb) { - struct ixgbe_hw *hw = &adapter->hw; - struct skb_shared_hwtstamps *shhwtstamps; - u64 regval = 0, ns; + struct ixgbe_adapter *adapter; + struct ixgbe_hw *hw; + u64 regval = 0; u32 tsyncrxctl; - unsigned long flags; + + /* we cannot process timestamps on a ring without a q_vector */ + if (!q_vector || !q_vector->adapter) + return; + + adapter = q_vector->adapter; + hw = &adapter->hw; + + /* Read the tsyncrxctl register afterwards in order to prevent taking an + * I/O hit on every packet. + */ tsyncrxctl = IXGBE_READ_REG(hw, IXGBE_TSYNCRXCTL); if (!(tsyncrxctl & IXGBE_TSYNCRXCTL_VALID)) @@ -537,17 +788,7 @@ regval |= (u64)IXGBE_READ_REG(hw, IXGBE_RXSTMPL); regval |= (u64)IXGBE_READ_REG(hw, IXGBE_RXSTMPH) << 32; - spin_lock_irqsave(&adapter->tmreg_lock, flags); - ns = timecounter_cyc2time(&adapter->tc, regval); - spin_unlock_irqrestore(&adapter->tmreg_lock, flags); - - shhwtstamps = skb_hwtstamps(skb); - shhwtstamps->hwtstamp = ns_to_ktime(ns); - - /* Update the last_rx_timestamp timer in order to enable watchdog check - * for error case of latched timestamp on a dropped packet. - */ - adapter->last_rx_timestamp = jiffies; + ixgbe_ptp_convert_to_hwtstamp(adapter, skb_hwtstamps(skb), regval); } int ixgbe_ptp_get_ts_config(struct ixgbe_adapter *adapter, struct ifreq *ifr) @@ -610,14 +851,20 @@ case HWTSTAMP_FILTER_NONE: tsync_rx_ctl = 0; tsync_rx_mtrl = 0; + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); break; case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_L4_V1; tsync_rx_mtrl |= IXGBE_RXMTRL_V1_SYNC_MSG; + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); break; case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_L4_V1; tsync_rx_mtrl |= IXGBE_RXMTRL_V1_DELAY_REQ_MSG; + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); break; case HWTSTAMP_FILTER_PTP_V2_EVENT: case HWTSTAMP_FILTER_PTP_V2_L2_EVENT: @@ -631,9 +878,21 @@ tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_EVENT_V2; is_l2 = true; config->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); break; case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: case HWTSTAMP_FILTER_ALL: + /* The X550 controller is capable of timestamping all packets, + * which allows it to accept any filter. + */ + if (hw->mac.type >= ixgbe_mac_X550) { + tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_ALL; + config->rx_filter = HWTSTAMP_FILTER_ALL; + adapter->flags |= IXGBE_FLAG_RX_HWTSTAMP_ENABLED; + break; + } + /* fall through */ default: /* * register RXMTRL must be set in order to do V1 packets, @@ -641,16 +900,46 @@ * Delay_Req messages and hardware does not support * timestamping all packets => return error */ + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); config->rx_filter = HWTSTAMP_FILTER_NONE; return -ERANGE; } if (hw->mac.type == ixgbe_mac_82598EB) { + adapter->flags &= ~(IXGBE_FLAG_RX_HWTSTAMP_ENABLED | + IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER); if (tsync_rx_ctl | tsync_tx_ctl) return -ERANGE; return 0; } + /* Per-packet timestamping only works if the filter is set to all + * packets. Since this is desired, always timestamp all packets as long + * as any Rx filter was configured. + */ + switch (hw->mac.type) { + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + /* enable timestamping all packets only if at least some + * packets were requested. Otherwise, play nice and disable + * timestamping + */ + if (config->rx_filter == HWTSTAMP_FILTER_NONE) + break; + + tsync_rx_ctl = IXGBE_TSYNCRXCTL_ENABLED | + IXGBE_TSYNCRXCTL_TYPE_ALL | + IXGBE_TSYNCRXCTL_TSIP_UT_EN; + config->rx_filter = HWTSTAMP_FILTER_ALL; + adapter->flags |= IXGBE_FLAG_RX_HWTSTAMP_ENABLED; + adapter->flags &= ~IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER; + is_l2 = true; + break; + default: + break; + } + /* define ethertype filter for timestamping L2 packets */ if (is_l2) IXGBE_WRITE_REG(hw, IXGBE_ETQF(IXGBE_ETQF_FILTER_1588), @@ -678,8 +967,8 @@ IXGBE_WRITE_FLUSH(hw); /* clear TX/RX time stamp registers, just to be sure */ - regval = IXGBE_READ_REG(hw, IXGBE_TXSTMPH); - regval = IXGBE_READ_REG(hw, IXGBE_RXSTMPH); + ixgbe_ptp_clear_tx_timestamp(adapter); + IXGBE_READ_REG(hw, IXGBE_RXSTMPH); return 0; } @@ -712,23 +1001,9 @@ -EFAULT : 0; } -/** - * ixgbe_ptp_start_cyclecounter - create the cycle counter from hw - * @adapter: pointer to the adapter structure - * - * This function should be called to set the proper values for the TIMINCA - * register and tell the cyclecounter structure what the tick rate of SYSTIME - * is. It does not directly modify SYSTIME registers or the timecounter - * structure. It should be called whenever a new TIMINCA value is necessary, - * such as during initialization or when the link speed changes. - */ -void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) +static void ixgbe_ptp_link_speed_adjust(struct ixgbe_adapter *adapter, + u32 *shift, u32 *incval) { - struct ixgbe_hw *hw = &adapter->hw; - u32 incval = 0; - u32 shift = 0; - unsigned long flags; - /** * Scale the NIC cycle counter by a large factor so that * relatively small corrections to the frequency can be added @@ -745,36 +1020,98 @@ */ switch (adapter->link_speed) { case IXGBE_LINK_SPEED_100_FULL: - incval = IXGBE_INCVAL_100; - shift = IXGBE_INCVAL_SHIFT_100; + *shift = IXGBE_INCVAL_SHIFT_100; + *incval = IXGBE_INCVAL_100; break; case IXGBE_LINK_SPEED_1GB_FULL: - incval = IXGBE_INCVAL_1GB; - shift = IXGBE_INCVAL_SHIFT_1GB; + *shift = IXGBE_INCVAL_SHIFT_1GB; + *incval = IXGBE_INCVAL_1GB; break; case IXGBE_LINK_SPEED_10GB_FULL: default: - incval = IXGBE_INCVAL_10GB; - shift = IXGBE_INCVAL_SHIFT_10GB; + *shift = IXGBE_INCVAL_SHIFT_10GB; + *incval = IXGBE_INCVAL_10GB; break; } +} - /** - * Modify the calculated values to fit within the correct - * number of bits specified by the hardware. The 82599 doesn't - * have the same space as the X540, so bitshift the calculated - * values to fit. +/** + * ixgbe_ptp_start_cyclecounter - create the cycle counter from hw + * @adapter: pointer to the adapter structure + * + * This function should be called to set the proper values for the TIMINCA + * register and tell the cyclecounter structure what the tick rate of SYSTIME + * is. It does not directly modify SYSTIME registers or the timecounter + * structure. It should be called whenever a new TIMINCA value is necessary, + * such as during initialization or when the link speed changes. + */ +void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) +{ + struct ixgbe_hw *hw = &adapter->hw; + struct cyclecounter cc; + unsigned long flags; + u32 incval = 0; + u32 tsauxc = 0; + u32 fuse0 = 0; + + /* For some of the boards below this mask is technically incorrect. + * The timestamp mask overflows at approximately 61bits. However the + * particular hardware does not overflow on an even bitmask value. + * Instead, it overflows due to conversion of upper 32bits billions of + * cycles. Timecounters are not really intended for this purpose so + * they do not properly function if the overflow point isn't 2^N-1. + * However, the actual SYSTIME values in question take ~138 years to + * overflow. In practice this means they won't actually overflow. A + * proper fix to this problem would require modification of the + * timecounter delta calculations. */ + cc.mask = CLOCKSOURCE_MASK(64); + cc.mult = 1; + cc.shift = 0; + switch (hw->mac.type) { + case ixgbe_mac_X550EM_x: + /* SYSTIME assumes X550EM_x board frequency is 300Mhz, and is + * designed to represent seconds and nanoseconds when this is + * the case. However, some revisions of hardware have a 400Mhz + * clock and we have to compensate for this frequency + * variation using corrected mult and shift values. + */ + fuse0 = IXGBE_READ_REG(hw, IXGBE_FUSES0_GROUP(0)); + if (!(fuse0 & IXGBE_FUSES0_300MHZ)) { + cc.mult = 3; + cc.shift = 2; + } + /* fallthrough */ + case ixgbe_mac_X550: + cc.read = ixgbe_ptp_read_X550; + + /* enable SYSTIME counter */ + IXGBE_WRITE_REG(hw, IXGBE_SYSTIMR, 0); + IXGBE_WRITE_REG(hw, IXGBE_SYSTIML, 0); + IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0); + tsauxc = IXGBE_READ_REG(hw, IXGBE_TSAUXC); + IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, + tsauxc & ~IXGBE_TSAUXC_DISABLE_SYSTIME); + IXGBE_WRITE_REG(hw, IXGBE_TSIM, IXGBE_TSIM_TXTS); + IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EIMS_TIMESYNC); + + IXGBE_WRITE_FLUSH(hw); + break; case ixgbe_mac_X540: + cc.read = ixgbe_ptp_read_82599; + + ixgbe_ptp_link_speed_adjust(adapter, &cc.shift, &incval); IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, incval); break; case ixgbe_mac_82599EB: + cc.read = ixgbe_ptp_read_82599; + + ixgbe_ptp_link_speed_adjust(adapter, &cc.shift, &incval); incval >>= IXGBE_INCVAL_SHIFT_82599; - shift -= IXGBE_INCVAL_SHIFT_82599; + cc.shift -= IXGBE_INCVAL_SHIFT_82599; IXGBE_WRITE_REG(hw, IXGBE_TIMINCA, - (1 << IXGBE_INCPER_SHIFT_82599) | - incval); + (1 << IXGBE_INCPER_SHIFT_82599) | incval); break; default: /* other devices aren't supported */ @@ -787,13 +1124,7 @@ /* need lock to prevent incorrect read while modifying cyclecounter */ spin_lock_irqsave(&adapter->tmreg_lock, flags); - - memset(&adapter->cc, 0, sizeof(adapter->cc)); - adapter->cc.read = ixgbe_ptp_read; - adapter->cc.mask = CYCLECOUNTER_MASK(64); - adapter->cc.shift = shift; - adapter->cc.mult = 1; - + memcpy(&adapter->hw_cc, &cc, sizeof(adapter->hw_cc)); spin_unlock_irqrestore(&adapter->tmreg_lock, flags); } @@ -814,29 +1145,27 @@ struct ixgbe_hw *hw = &adapter->hw; unsigned long flags; - /* set SYSTIME registers to 0 just in case */ - IXGBE_WRITE_REG(hw, IXGBE_SYSTIML, 0x00000000); - IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0x00000000); - IXGBE_WRITE_FLUSH(hw); - /* reset the hardware timestamping mode */ ixgbe_ptp_set_timestamp_mode(adapter, &adapter->tstamp_config); + /* 82598 does not support PTP */ + if (hw->mac.type == ixgbe_mac_82598EB) + return; + ixgbe_ptp_start_cyclecounter(adapter); spin_lock_irqsave(&adapter->tmreg_lock, flags); - - /* reset the ns time counter */ - timecounter_init(&adapter->tc, &adapter->cc, + timecounter_init(&adapter->hw_tc, &adapter->hw_cc, ktime_to_ns(ktime_get_real())); - spin_unlock_irqrestore(&adapter->tmreg_lock, flags); - /* - * Now that the shift has been calculated and the systime + adapter->last_overflow_check = jiffies; + + /* Now that the shift has been calculated and the systime * registers reset, (re-)enable the Clock out feature */ - ixgbe_ptp_setup_sdp(adapter); + if (adapter->ptp_setup_sdp) + adapter->ptp_setup_sdp(adapter); } /** @@ -845,11 +1174,11 @@ * * This function performs setup of the user entry point function table and * initializes the PTP clock device, which is used to access the clock-like - * features of the PTP core. It will be called by ixgbe_ptp_init, only if - * there isn't already a clock device (such as after a suspend/resume cycle, - * where the clock device wasn't destroyed). + * features of the PTP core. It will be called by ixgbe_ptp_init, and may + * reuse a previously initialized clock (such as during a suspend/resume + * cycle). */ -static int ixgbe_ptp_create_clock(struct ixgbe_adapter *adapter) +static long ixgbe_ptp_create_clock(struct ixgbe_adapter *adapter) { struct net_device *netdev = adapter->netdev; long err; @@ -869,11 +1198,12 @@ adapter->ptp_caps.n_ext_ts = 0; adapter->ptp_caps.n_per_out = 0; adapter->ptp_caps.pps = 1; - adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq; + adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq_82599; adapter->ptp_caps.adjtime = ixgbe_ptp_adjtime; adapter->ptp_caps.gettime64 = ixgbe_ptp_gettime; adapter->ptp_caps.settime64 = ixgbe_ptp_settime; adapter->ptp_caps.enable = ixgbe_ptp_feature_enable; + adapter->ptp_setup_sdp = ixgbe_ptp_setup_sdp_x540; break; case ixgbe_mac_82599EB: snprintf(adapter->ptp_caps.name, @@ -885,14 +1215,31 @@ adapter->ptp_caps.n_ext_ts = 0; adapter->ptp_caps.n_per_out = 0; adapter->ptp_caps.pps = 0; - adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq; + adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq_82599; + adapter->ptp_caps.adjtime = ixgbe_ptp_adjtime; + adapter->ptp_caps.gettime64 = ixgbe_ptp_gettime; + adapter->ptp_caps.settime64 = ixgbe_ptp_settime; + adapter->ptp_caps.enable = ixgbe_ptp_feature_enable; + break; + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + snprintf(adapter->ptp_caps.name, 16, "%s", netdev->name); + adapter->ptp_caps.owner = THIS_MODULE; + adapter->ptp_caps.max_adj = 30000000; + adapter->ptp_caps.n_alarm = 0; + adapter->ptp_caps.n_ext_ts = 0; + adapter->ptp_caps.n_per_out = 0; + adapter->ptp_caps.pps = 0; + adapter->ptp_caps.adjfreq = ixgbe_ptp_adjfreq_X550; adapter->ptp_caps.adjtime = ixgbe_ptp_adjtime; adapter->ptp_caps.gettime64 = ixgbe_ptp_gettime; adapter->ptp_caps.settime64 = ixgbe_ptp_settime; adapter->ptp_caps.enable = ixgbe_ptp_feature_enable; + adapter->ptp_setup_sdp = NULL; break; default: adapter->ptp_clock = NULL; + adapter->ptp_setup_sdp = NULL; return -EOPNOTSUPP; } @@ -961,18 +1308,13 @@ if (!test_and_clear_bit(__IXGBE_PTP_RUNNING, &adapter->state)) return; - /* since this might be called in suspend, we don't clear the state, - * but simply reset the auxiliary PPS signal control register - */ - IXGBE_WRITE_REG(&adapter->hw, IXGBE_TSAUXC, 0x0); + adapter->flags2 &= ~IXGBE_FLAG2_PTP_PPS_ENABLED; + if (adapter->ptp_setup_sdp) + adapter->ptp_setup_sdp(adapter); /* ensure that we cancel any pending PTP Tx work item in progress */ cancel_work_sync(&adapter->ptp_tx_work); - if (adapter->ptp_tx_skb) { - dev_kfree_skb_any(adapter->ptp_tx_skb); - adapter->ptp_tx_skb = NULL; - clear_bit_unlock(__IXGBE_PTP_TX_IN_PROGRESS, &adapter->state); - } + ixgbe_ptp_clear_tx_timestamp(adapter); } /** --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c @@ -1,7 +1,7 @@ /******************************************************************************* Intel 10 Gigabit PCI Express Linux driver - Copyright(c) 1999 - 2014 Intel Corporation. + Copyright(c) 1999 - 2015 Intel Corporation. This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, @@ -130,6 +130,38 @@ return -ENOMEM; } +/** + * ixgbe_get_vfs - Find and take references to all vf devices + * @adapter: Pointer to adapter struct + */ +static void ixgbe_get_vfs(struct ixgbe_adapter *adapter) +{ + struct pci_dev *pdev = adapter->pdev; + u16 vendor = pdev->vendor; + struct pci_dev *vfdev; + int vf = 0; + u16 vf_id; + int pos; + + pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); + if (!pos) + return; + pci_read_config_word(pdev, pos + PCI_SRIOV_VF_DID, &vf_id); + + vfdev = pci_get_device(vendor, vf_id, NULL); + for (; vfdev; vfdev = pci_get_device(vendor, vf_id, vfdev)) { + if (!vfdev->is_virtfn) + continue; + if (vfdev->physfn != pdev) + continue; + if (vf >= adapter->num_vfs) + continue; + pci_dev_get(vfdev); + adapter->vfinfo[vf].vfdev = vfdev; + ++vf; + } +} + /* Note this function is called when the user wants to enable SR-IOV * VFs using the now deprecated module parameter */ @@ -170,8 +202,10 @@ } } - if (!__ixgbe_enable_sriov(adapter)) + if (!__ixgbe_enable_sriov(adapter)) { + ixgbe_get_vfs(adapter); return; + } /* If we have gotten to this point then there is no memory available * to manage the VF devices - print message and bail. @@ -184,6 +218,7 @@ #endif /* #ifdef CONFIG_PCI_IOV */ int ixgbe_disable_sriov(struct ixgbe_adapter *adapter) { + unsigned int num_vfs = adapter->num_vfs, vf; struct ixgbe_hw *hw = &adapter->hw; u32 gpie; u32 vmdctl; @@ -192,6 +227,16 @@ /* set num VFs to 0 to prevent access to vfinfo */ adapter->num_vfs = 0; + /* put the reference to all of the vf devices */ + for (vf = 0; vf < num_vfs; ++vf) { + struct pci_dev *vfdev = adapter->vfinfo[vf].vfdev; + + if (!vfdev) + continue; + adapter->vfinfo[vf].vfdev = NULL; + pci_dev_put(vfdev); + } + /* free VF control structures */ kfree(adapter->vfinfo); adapter->vfinfo = NULL; @@ -289,6 +334,7 @@ e_dev_warn("Failed to enable PCI sriov: %d\n", err); return err; } + ixgbe_get_vfs(adapter); ixgbe_sriov_reinit(adapter); return num_vfs; @@ -406,11 +452,34 @@ static int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid, u32 vf) { - /* VLAN 0 is a special case, don't allow it to be removed */ - if (!vid && !add) - return 0; + struct ixgbe_hw *hw = &adapter->hw; + int err; - return adapter->hw.mac.ops.set_vfta(&adapter->hw, vid, vf, (bool)add); + /* If VLAN overlaps with one the PF is currently monitoring make + * sure that we are able to allocate a VLVF entry. This may be + * redundant but it guarantees PF will maintain visibility to + * the VLAN. + */ + if (add && test_bit(vid, adapter->active_vlans)) { + err = hw->mac.ops.set_vfta(hw, vid, VMDQ_P(0), true, false); + if (err) + return err; + } + + err = hw->mac.ops.set_vfta(hw, vid, vf, !!add, false); + + if (add && !err) + return err; + + /* If we failed to add the VF VLAN or we are removing the VF VLAN + * we may need to drop the PF pool bit in order to allow us to free + * up the VLVF resources. + */ + if (test_bit(vid, adapter->active_vlans) || + (adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC)) + ixgbe_update_pf_promisc_vlvf(adapter, vid); + + return err; } static s32 ixgbe_set_vf_lpe(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) @@ -516,13 +585,75 @@ IXGBE_WRITE_REG(hw, IXGBE_VMVIR(vf), 0); } + +static void ixgbe_clear_vf_vlans(struct ixgbe_adapter *adapter, u32 vf) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 i; + + /* post increment loop, covers VLVF_ENTRIES - 1 to 0 */ + for (i = IXGBE_VLVF_ENTRIES; i--;) { + u32 bits[2], vlvfb, vid, vfta, vlvf; + u32 word = i * 2 + vf / 32; + u32 mask = 1 << (vf % 32); + + vlvfb = IXGBE_READ_REG(hw, IXGBE_VLVFB(word)); + + /* if our bit isn't set we can skip it */ + if (!(vlvfb & mask)) + continue; + + /* clear our bit from vlvfb */ + vlvfb ^= mask; + + /* create 64b mask to chedk to see if we should clear VLVF */ + bits[word % 2] = vlvfb; + bits[~word % 2] = IXGBE_READ_REG(hw, IXGBE_VLVFB(word ^ 1)); + + /* if promisc is enabled, PF will be present, leave VFTA */ + if (adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC) { + bits[VMDQ_P(0) / 32] &= ~(1 << (VMDQ_P(0) % 32)); + + if (bits[0] || bits[1]) + goto update_vlvfb; + goto update_vlvf; + } + + /* if other pools are present, just remove ourselves */ + if (bits[0] || bits[1]) + goto update_vlvfb; + + /* if we cannot determine VLAN just remove ourselves */ + vlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(i)); + if (!vlvf) + goto update_vlvfb; + + vid = vlvf & VLAN_VID_MASK; + mask = 1 << (vid % 32); + + /* clear bit from VFTA */ + vfta = IXGBE_READ_REG(hw, IXGBE_VFTA(vid / 32)); + if (vfta & mask) + IXGBE_WRITE_REG(hw, IXGBE_VFTA(vid / 32), vfta ^ mask); +update_vlvf: + /* clear POOL selection enable */ + IXGBE_WRITE_REG(hw, IXGBE_VLVF(i), 0); +update_vlvfb: + /* clear pool bits */ + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(word), vlvfb); + } +} + static inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf) { struct ixgbe_hw *hw = &adapter->hw; struct vf_data_storage *vfinfo = &adapter->vfinfo[vf]; u8 num_tcs = netdev_get_num_tc(adapter->netdev); - /* add PF assigned VLAN or VLAN 0 */ + /* remove VLAN filters beloning to this VF */ + ixgbe_clear_vf_vlans(adapter, vf); + + /* add back PF assigned VLAN or VLAN 0 */ ixgbe_set_vf_vlan(adapter, true, vfinfo->pf_vlan, vf); /* reset offloads to defaults */ @@ -768,40 +899,14 @@ return ixgbe_set_vf_mac(adapter, vf, new_mac) < 0; } -static int ixgbe_find_vlvf_entry(struct ixgbe_hw *hw, u32 vlan) -{ - u32 vlvf; - s32 regindex; - - /* short cut the special case */ - if (vlan == 0) - return 0; - - /* Search for the vlan id in the VLVF entries */ - for (regindex = 1; regindex < IXGBE_VLVF_ENTRIES; regindex++) { - vlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(regindex)); - if ((vlvf & VLAN_VID_MASK) == vlan) - break; - } - - /* Return a negative value if not found */ - if (regindex >= IXGBE_VLVF_ENTRIES) - regindex = -1; - - return regindex; -} - static int ixgbe_set_vf_vlan_msg(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) { + u32 add = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >> IXGBE_VT_MSGINFO_SHIFT; + u32 vid = (msgbuf[1] & IXGBE_VLVF_VLANID_MASK); + u8 tcs = netdev_get_num_tc(adapter->netdev); struct ixgbe_hw *hw = &adapter->hw; - int add = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >> IXGBE_VT_MSGINFO_SHIFT; - int vid = (msgbuf[1] & IXGBE_VLVF_VLANID_MASK); int err; - s32 reg_ndx; - u32 vlvf; - u32 bits; - u8 tcs = netdev_get_num_tc(adapter->netdev); if (adapter->vfinfo[vf].pf_vlan || tcs) { e_warn(drv, @@ -811,54 +916,23 @@ return -1; } - if (add) - adapter->vfinfo[vf].vlan_count++; - else if (adapter->vfinfo[vf].vlan_count) - adapter->vfinfo[vf].vlan_count--; - - /* in case of promiscuous mode any VLAN filter set for a VF must - * also have the PF pool added to it. - */ - if (add && adapter->netdev->flags & IFF_PROMISC) - err = ixgbe_set_vf_vlan(adapter, add, vid, VMDQ_P(0)); + /* VLAN 0 is a special case, don't allow it to be removed */ + if (!vid && !add) + return 0; err = ixgbe_set_vf_vlan(adapter, add, vid, vf); - if (!err && adapter->vfinfo[vf].spoofchk_enabled) - hw->mac.ops.set_vlan_anti_spoofing(hw, true, vf); + if (err) + return err; - /* Go through all the checks to see if the VLAN filter should - * be wiped completely. - */ - if (!add && adapter->netdev->flags & IFF_PROMISC) { - reg_ndx = ixgbe_find_vlvf_entry(hw, vid); - if (reg_ndx < 0) - return err; - vlvf = IXGBE_READ_REG(hw, IXGBE_VLVF(reg_ndx)); - /* See if any other pools are set for this VLAN filter - * entry other than the PF. - */ - if (VMDQ_P(0) < 32) { - bits = IXGBE_READ_REG(hw, IXGBE_VLVFB(reg_ndx * 2)); - bits &= ~(1 << VMDQ_P(0)); - bits |= IXGBE_READ_REG(hw, - IXGBE_VLVFB(reg_ndx * 2) + 1); - } else { - bits = IXGBE_READ_REG(hw, - IXGBE_VLVFB(reg_ndx * 2) + 1); - bits &= ~(1 << (VMDQ_P(0) - 32)); - bits |= IXGBE_READ_REG(hw, IXGBE_VLVFB(reg_ndx * 2)); - } + if (adapter->vfinfo[vf].spoofchk_enabled) + hw->mac.ops.set_vlan_anti_spoofing(hw, true, vf); - /* If the filter was removed then ensure PF pool bit - * is cleared if the PF only added itself to the pool - * because the PF is in promiscuous mode. - */ - if ((vlvf & VLAN_VID_MASK) == vid && - !test_bit(vid, adapter->active_vlans) && !bits) - ixgbe_set_vf_vlan(adapter, add, vid, VMDQ_P(0)); - } + if (add) + adapter->vfinfo[vf].vlan_count++; + else if (adapter->vfinfo[vf].vlan_count) + adapter->vfinfo[vf].vlan_count--; - return err; + return 0; } static int ixgbe_set_vf_macvlan_msg(struct ixgbe_adapter *adapter, @@ -1239,6 +1313,9 @@ if (err) goto out; + /* Revoke tagless access via VLAN 0 */ + ixgbe_set_vf_vlan(adapter, false, 0, vf); + ixgbe_set_vmvir(adapter, vlan, qos, vf); ixgbe_set_vmolr(hw, vf, false); if (adapter->vfinfo[vf].spoofchk_enabled) @@ -1272,6 +1349,8 @@ err = ixgbe_set_vf_vlan(adapter, false, adapter->vfinfo[vf].pf_vlan, vf); + /* Restore tagless access via VLAN 0 */ + ixgbe_set_vf_vlan(adapter, true, 0, vf); ixgbe_clear_vmvir(adapter, vf); ixgbe_set_vmolr(hw, vf, true); hw->mac.ops.set_vlan_anti_spoofing(hw, false, vf); --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h @@ -1020,6 +1020,7 @@ #define IXGBE_TXSTMPH 0x08C08 /* Tx timestamp value High - RO */ #define IXGBE_SYSTIML 0x08C0C /* System time register Low - RO */ #define IXGBE_SYSTIMH 0x08C10 /* System time register High - RO */ +#define IXGBE_SYSTIMR 0x08C58 /* System time register Residue - RO */ #define IXGBE_TIMINCA 0x08C14 /* Increment attributes register - RW */ #define IXGBE_TIMADJL 0x08C18 /* Time Adjustment Offset register Low - RW */ #define IXGBE_TIMADJH 0x08C1C /* Time Adjustment Offset register High - RW */ @@ -1036,6 +1037,7 @@ #define IXGBE_AUXSTMPH0 0x08C40 /* Auxiliary Time Stamp 0 register High - RO */ #define IXGBE_AUXSTMPL1 0x08C44 /* Auxiliary Time Stamp 1 register Low - RO */ #define IXGBE_AUXSTMPH1 0x08C48 /* Auxiliary Time Stamp 1 register High - RO */ +#define IXGBE_TSIM 0x08C68 /* TimeSync Interrupt Mask Register - RW */ /* Diagnostic Registers */ #define IXGBE_RDSTATCTL 0x02C20 @@ -1345,7 +1347,10 @@ #define IXGBE_MDIO_GLOBAL_INT_CHIP_VEN_MASK 0xFF01 /* int chip-wide mask */ #define IXGBE_MDIO_GLOBAL_INT_CHIP_VEN_FLAG 0xFC01 /* int chip-wide mask */ #define IXGBE_MDIO_GLOBAL_ALARM_1 0xCC00 /* Global alarm 1 */ +#define IXGBE_MDIO_GLOBAL_ALM_1_DEV_FAULT 0x0010 /* device fault */ #define IXGBE_MDIO_GLOBAL_ALM_1_HI_TMP_FAIL 0x4000 /* high temp failure */ +#define IXGBE_MDIO_GLOBAL_FAULT_MSG 0xC850 /* global fault msg */ +#define IXGBE_MDIO_GLOBAL_FAULT_MSG_HI_TMP 0x8007 /* high temp failure */ #define IXGBE_MDIO_GLOBAL_INT_MASK 0xD400 /* Global int mask */ /* autoneg vendor alarm int enable */ #define IXGBE_MDIO_GLOBAL_AN_VEN_ALM_INT_EN 0x1000 @@ -1353,6 +1358,7 @@ #define IXGBE_MDIO_GLOBAL_VEN_ALM_INT_EN 0x1 /* vendor alarm int enable */ #define IXGBE_MDIO_GLOBAL_STD_ALM2_INT 0x200 /* vendor alarm2 int mask */ #define IXGBE_MDIO_GLOBAL_INT_HI_TEMP_EN 0x4000 /* int high temp enable */ +#define IXGBE_MDIO_GLOBAL_INT_DEV_FAULT_EN 0x0010 /*int dev fault enable */ #define IXGBE_MDIO_PMA_PMD_SDA_SCL_ADDR 0xC30A /* PHY_XS SDA/SCL Addr Reg */ #define IXGBE_MDIO_PMA_PMD_SDA_SCL_DATA 0xC30B /* PHY_XS SDA/SCL Data Reg */ @@ -2209,6 +2215,7 @@ #define IXGBE_TSAUXC_EN_CLK 0x00000004 #define IXGBE_TSAUXC_SYNCLK 0x00000008 #define IXGBE_TSAUXC_SDP0_INT 0x00000040 +#define IXGBE_TSAUXC_DISABLE_SYSTIME 0x80000000 #define IXGBE_TSYNCTXCTL_VALID 0x00000001 /* Tx timestamp valid */ #define IXGBE_TSYNCTXCTL_ENABLED 0x00000010 /* Tx timestamping enabled */ @@ -2218,8 +2225,12 @@ #define IXGBE_TSYNCRXCTL_TYPE_L2_V2 0x00 #define IXGBE_TSYNCRXCTL_TYPE_L4_V1 0x02 #define IXGBE_TSYNCRXCTL_TYPE_L2_L4_V2 0x04 +#define IXGBE_TSYNCRXCTL_TYPE_ALL 0x08 #define IXGBE_TSYNCRXCTL_TYPE_EVENT_V2 0x0A #define IXGBE_TSYNCRXCTL_ENABLED 0x00000010 /* Rx Timestamping enabled */ +#define IXGBE_TSYNCRXCTL_TSIP_UT_EN 0x00800000 /* Rx Timestamp in Packet */ + +#define IXGBE_TSIM_TXTS 0x00000002 #define IXGBE_RXMTRL_V1_CTRLT_MASK 0x000000FF #define IXGBE_RXMTRL_V1_SYNC_MSG 0x00 @@ -2332,6 +2343,7 @@ #define IXGBE_RXD_STAT_UDPV 0x400 /* Valid UDP checksum */ #define IXGBE_RXD_STAT_DYNINT 0x800 /* Pkt caused INT via DYNINT */ #define IXGBE_RXD_STAT_LLINT 0x800 /* Pkt caused Low Latency Interrupt */ +#define IXGBE_RXD_STAT_TSIP 0x08000 /* Time Stamp in packet buffer */ #define IXGBE_RXD_STAT_TS 0x10000 /* Time Stamp */ #define IXGBE_RXD_STAT_SECP 0x20000 /* Security Processing */ #define IXGBE_RXD_STAT_LB 0x40000 /* Loopback Status */ @@ -2768,6 +2780,7 @@ #define IXGBE_ADVTXD_TUCMD_L4T_UDP 0x00000000 /* L4 Packet TYPE of UDP */ #define IXGBE_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */ #define IXGBE_ADVTXD_TUCMD_L4T_SCTP 0x00001000 /* L4 Packet TYPE of SCTP */ +#define IXGBE_ADVTXD_TUCMD_L4T_RSV 0x00001800 /* RSV L4 Packet TYPE */ #define IXGBE_ADVTXD_TUCMD_MKRREQ 0x00002000 /*Req requires Markers and CRC*/ #define IXGBE_ADVTXD_POPTS_IPSEC 0x00000400 /* IPSec offload request */ #define IXGBE_ADVTXD_TUCMD_IPSEC_TYPE_ESP 0x00002000 /* IPSec Type ESP */ @@ -3288,7 +3301,7 @@ s32 (*enable_mc)(struct ixgbe_hw *); s32 (*disable_mc)(struct ixgbe_hw *); s32 (*clear_vfta)(struct ixgbe_hw *); - s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool); + s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool, bool); s32 (*init_uta_tables)(struct ixgbe_hw *); void (*set_mac_anti_spoofing)(struct ixgbe_hw *, bool, int); void (*set_vlan_anti_spoofing)(struct ixgbe_hw *, bool, int); @@ -3508,7 +3521,7 @@ #define IXGBE_FUSES0_GROUP(_i) (0x11158 + ((_i) * 4)) #define IXGBE_FUSES0_300MHZ BIT(5) -#define IXGBE_FUSES0_REV1 BIT(6) +#define IXGBE_FUSES0_REV_MASK (3 << 6) #define IXGBE_KRM_PORT_CAR_GEN_CTRL(P) ((P) ? 0x8010 : 0x4010) #define IXGBE_KRM_LINK_CTRL_1(P) ((P) ? 0x820C : 0x420C) --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c @@ -57,8 +57,7 @@ struct ixgbe_phy_info *phy = &hw->phy; /* set_phy_power was set by default to NULL */ - if (!ixgbe_mng_present(hw)) - phy->ops.set_phy_power = ixgbe_set_copper_phy_power; + phy->ops.set_phy_power = ixgbe_set_copper_phy_power; mac->mcft_size = IXGBE_X540_MC_TBL_SIZE; mac->vft_size = IXGBE_X540_VFT_TBL_SIZE; @@ -110,13 +109,14 @@ ctrl |= IXGBE_READ_REG(hw, IXGBE_CTRL); IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl); IXGBE_WRITE_FLUSH(hw); + usleep_range(1000, 1200); /* Poll for reset bit to self-clear indicating reset is complete */ for (i = 0; i < 10; i++) { - udelay(1); ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL); if (!(ctrl & IXGBE_CTRL_RST_MASK)) break; + udelay(1); } if (ctrl & IXGBE_CTRL_RST_MASK) { @@ -154,12 +154,16 @@ /* Add the SAN MAC address to the RAR only if it's a valid address */ if (is_valid_ether_addr(hw->mac.san_addr)) { - hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, - hw->mac.san_addr, 0, IXGBE_RAH_AV); - /* Save the SAN MAC RAR index */ hw->mac.san_mac_rar_index = hw->mac.num_rar_entries - 1; + hw->mac.ops.set_rar(hw, hw->mac.san_mac_rar_index, + hw->mac.san_addr, 0, IXGBE_RAH_AV); + + /* clear VMDq pool/queue selection for this RAR */ + hw->mac.ops.clear_vmdq(hw, hw->mac.san_mac_rar_index, + IXGBE_CLEAR_VMDQ_ALL); + /* Reserve the last RAR for the SAN MAC address */ hw->mac.num_rar_entries--; } --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c @@ -26,6 +26,8 @@ #include "ixgbe_common.h" #include "ixgbe_phy.h" +static s32 ixgbe_setup_kr_speed_x550em(struct ixgbe_hw *, ixgbe_link_speed); + static s32 ixgbe_get_invariants_X550_x(struct ixgbe_hw *hw) { struct ixgbe_mac_info *mac = &hw->mac; @@ -85,79 +87,6 @@ } /** - * ixgbe_check_cs4227_reg - Perform diag on a CS4227 register - * @hw: pointer to hardware structure - * @reg: the register to check - * - * Performs a diagnostic on a register in the CS4227 chip. Returns an error - * if it is not operating correctly. - * This function assumes that the caller has acquired the proper semaphore. - */ -static s32 ixgbe_check_cs4227_reg(struct ixgbe_hw *hw, u16 reg) -{ - s32 status; - u32 retry; - u16 reg_val; - - reg_val = (IXGBE_CS4227_EDC_MODE_DIAG << 1) | 1; - status = ixgbe_write_cs4227(hw, reg, reg_val); - if (status) - return status; - for (retry = 0; retry < IXGBE_CS4227_RETRIES; retry++) { - msleep(IXGBE_CS4227_CHECK_DELAY); - reg_val = 0xFFFF; - ixgbe_read_cs4227(hw, reg, ®_val); - if (!reg_val) - break; - } - if (reg_val) { - hw_err(hw, "CS4227 reg 0x%04X failed diagnostic\n", reg); - return status; - } - - return 0; -} - -/** - * ixgbe_get_cs4227_status - Return CS4227 status - * @hw: pointer to hardware structure - * - * Performs a diagnostic on the CS4227 chip. Returns an error if it is - * not operating correctly. - * This function assumes that the caller has acquired the proper semaphore. - */ -static s32 ixgbe_get_cs4227_status(struct ixgbe_hw *hw) -{ - s32 status; - u16 value = 0; - - /* Exit if the diagnostic has already been performed. */ - status = ixgbe_read_cs4227(hw, IXGBE_CS4227_SCRATCH, &value); - if (status) - return status; - if (value == IXGBE_CS4227_RESET_COMPLETE) - return 0; - - /* Check port 0. */ - status = ixgbe_check_cs4227_reg(hw, IXGBE_CS4227_LINE_SPARE24_LSB); - if (status) - return status; - - status = ixgbe_check_cs4227_reg(hw, IXGBE_CS4227_HOST_SPARE24_LSB); - if (status) - return status; - - /* Check port 1. */ - status = ixgbe_check_cs4227_reg(hw, IXGBE_CS4227_LINE_SPARE24_LSB + - (1 << 12)); - if (status) - return status; - - return ixgbe_check_cs4227_reg(hw, IXGBE_CS4227_HOST_SPARE24_LSB + - (1 << 12)); -} - -/** * ixgbe_read_pe - Read register from port expander * @hw: pointer to hardware structure * @reg: register number to read @@ -326,13 +255,6 @@ return; } - /* Is the CS4227 working correctly? */ - status = ixgbe_get_cs4227_status(hw); - if (status) { - hw_err(hw, "CS4227 status failed: %d", status); - goto out; - } - /* Record completion for next time. */ status = ixgbe_write_cs4227(hw, IXGBE_CS4227_SCRATCH, IXGBE_CS4227_RESET_COMPLETE); @@ -1257,31 +1179,71 @@ if (status) return status; - /* Configure CS4227 LINE side to 10G SR. */ - slice = IXGBE_CS4227_LINE_SPARE22_MSB + (hw->bus.lan_id << 12); - value = IXGBE_CS4227_SPEED_10G; - status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, slice, - value); - - /* Configure CS4227 for HOST connection rate then type. */ - slice = IXGBE_CS4227_HOST_SPARE22_MSB + (hw->bus.lan_id << 12); - value = speed & IXGBE_LINK_SPEED_10GB_FULL ? - IXGBE_CS4227_SPEED_10G : IXGBE_CS4227_SPEED_1G; - status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, slice, - value); - - slice = IXGBE_CS4227_HOST_SPARE24_LSB + (hw->bus.lan_id << 12); - if (setup_linear) - value = (IXGBE_CS4227_EDC_MODE_CX1 << 1) | 1; - else + if (!(hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE)) { + /* Configure CS4227 LINE side to 10G SR. */ + slice = IXGBE_CS4227_LINE_SPARE22_MSB + (hw->bus.lan_id << 12); + value = IXGBE_CS4227_SPEED_10G; + status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, + slice, value); + if (status) + goto i2c_err; + + slice = IXGBE_CS4227_LINE_SPARE24_LSB + (hw->bus.lan_id << 12); value = (IXGBE_CS4227_EDC_MODE_SR << 1) | 1; - status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, slice, - value); + status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, + slice, value); + if (status) + goto i2c_err; - /* If internal link mode is XFI, then setup XFI internal link. */ - if (!(hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE)) + /* Configure CS4227 for HOST connection rate then type. */ + slice = IXGBE_CS4227_HOST_SPARE22_MSB + (hw->bus.lan_id << 12); + value = speed & IXGBE_LINK_SPEED_10GB_FULL ? + IXGBE_CS4227_SPEED_10G : IXGBE_CS4227_SPEED_1G; + status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, + slice, value); + if (status) + goto i2c_err; + + slice = IXGBE_CS4227_HOST_SPARE24_LSB + (hw->bus.lan_id << 12); + if (setup_linear) + value = (IXGBE_CS4227_EDC_MODE_CX1 << 1) | 1; + else + value = (IXGBE_CS4227_EDC_MODE_SR << 1) | 1; + status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, + slice, value); + if (status) + goto i2c_err; + + /* Setup XFI internal link. */ status = ixgbe_setup_ixfi_x550em(hw, &speed); + if (status) { + hw_dbg(hw, "setup_ixfi failed with %d\n", status); + return status; + } + } else { + /* Configure internal PHY for KR/KX. */ + status = ixgbe_setup_kr_speed_x550em(hw, speed); + if (status) { + hw_dbg(hw, "setup_kr_speed failed with %d\n", status); + return status; + } + + /* Configure CS4227 LINE side to proper mode. */ + slice = IXGBE_CS4227_LINE_SPARE24_LSB + (hw->bus.lan_id << 12); + if (setup_linear) + value = (IXGBE_CS4227_EDC_MODE_CX1 << 1) | 1; + else + value = (IXGBE_CS4227_EDC_MODE_SR << 1) | 1; + status = ixgbe_write_i2c_combined_generic(hw, IXGBE_CS4227, + slice, value); + if (status) + goto i2c_err; + } + return 0; + +i2c_err: + hw_dbg(hw, "combined i2c access failed with %d\n", status); return status; } @@ -1482,7 +1444,7 @@ IXGBE_MDIO_GLOBAL_ALARM_1_INT))) return status; - /* High temperature failure alarm triggered */ + /* Global alarm triggered */ status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_ALARM_1, IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, ®); @@ -1496,6 +1458,21 @@ ixgbe_set_copper_phy_power(hw, false); return IXGBE_ERR_OVERTEMP; } + if (reg & IXGBE_MDIO_GLOBAL_ALM_1_DEV_FAULT) { + /* device fault alarm triggered */ + status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_FAULT_MSG, + IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, + ®); + if (status) + return status; + + /* if device fault was due to high temp alarm handle and exit */ + if (reg == IXGBE_MDIO_GLOBAL_FAULT_MSG_HI_TMP) { + /* power down the PHY in case the PHY FW didn't */ + ixgbe_set_copper_phy_power(hw, false); + return IXGBE_ERR_OVERTEMP; + } + } /* Vendor alarm 2 triggered */ status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_CHIP_STD_INT_FLAG, @@ -1549,14 +1526,15 @@ if (status) return status; - /* Enables high temperature failure alarm */ + /* Enable high temperature failure and global fault alarms */ status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_INT_MASK, IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, ®); if (status) return status; - reg |= IXGBE_MDIO_GLOBAL_INT_HI_TEMP_EN; + reg |= (IXGBE_MDIO_GLOBAL_INT_HI_TEMP_EN | + IXGBE_MDIO_GLOBAL_INT_DEV_FAULT_EN); status = hw->phy.ops.write_reg(hw, IXGBE_MDIO_GLOBAL_INT_MASK, IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, @@ -1765,6 +1743,12 @@ if (hw->mac.ops.get_media_type(hw) != ixgbe_media_type_copper) return IXGBE_ERR_CONFIG; + if (hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE) { + speed = IXGBE_LINK_SPEED_10GB_FULL | + IXGBE_LINK_SPEED_1GB_FULL; + return ixgbe_setup_kr_speed_x550em(hw, speed); + } + /* If link is not up, then there is no setup necessary so return */ status = ixgbe_ext_phy_t_x550em_get_link(hw, &link_up); if (status) @@ -1873,10 +1857,6 @@ u32 save_autoneg; bool link_up; - /* SW LPLU not required on later HW revisions. */ - if (IXGBE_FUSES0_REV1 & IXGBE_READ_REG(hw, IXGBE_FUSES0_GROUP(0))) - return 0; - /* If blocked by MNG FW, then don't restart AN */ if (ixgbe_check_reset_blocked(hw)) return 0; @@ -1969,7 +1949,6 @@ static s32 ixgbe_init_phy_ops_X550em(struct ixgbe_hw *hw) { struct ixgbe_phy_info *phy = &hw->phy; - ixgbe_link_speed speed; s32 ret_val; hw->mac.ops.set_lan_id(hw); @@ -1982,13 +1961,6 @@ * to determine internal PHY mode. */ phy->nw_mng_if_sel = IXGBE_READ_REG(hw, IXGBE_NW_MNG_IF_SEL); - - /* If internal PHY mode is KR, then initialize KR link */ - if (phy->nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE) { - speed = IXGBE_LINK_SPEED_10GB_FULL | - IXGBE_LINK_SPEED_1GB_FULL; - ret_val = ixgbe_setup_kr_speed_x550em(hw, speed); - } } /* Identify the PHY or SFP module */ @@ -2020,18 +1992,13 @@ /* If internal link mode is XFI, then setup iXFI internal link, * else setup KR now. */ - if (!(phy->nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE)) { - phy->ops.setup_internal_link = - ixgbe_setup_internal_phy_t_x550em; - } else { - speed = IXGBE_LINK_SPEED_10GB_FULL | - IXGBE_LINK_SPEED_1GB_FULL; - ret_val = ixgbe_setup_kr_speed_x550em(hw, speed); - } + phy->ops.setup_internal_link = + ixgbe_setup_internal_phy_t_x550em; /* setup SW LPLU only for first revision */ - if (!(IXGBE_FUSES0_REV1 & IXGBE_READ_REG(hw, - IXGBE_FUSES0_GROUP(0)))) + if (hw->mac.type == ixgbe_mac_X550EM_x && + !(IXGBE_READ_REG(hw, IXGBE_FUSES0_GROUP(0)) & + IXGBE_FUSES0_REV_MASK)) phy->ops.enter_lplu = ixgbe_enter_lplu_t_x550em; phy->ops.handle_lasi = ixgbe_handle_lasi_ext_t_x550em; @@ -2176,13 +2143,14 @@ ctrl |= IXGBE_READ_REG(hw, IXGBE_CTRL); IXGBE_WRITE_REG(hw, IXGBE_CTRL, ctrl); IXGBE_WRITE_FLUSH(hw); + usleep_range(1000, 1200); /* Poll for reset bit to self-clear meaning reset is complete */ for (i = 0; i < 10; i++) { - udelay(1); ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL); if (!(ctrl & IXGBE_CTRL_RST_MASK)) break; + udelay(1); } if (ctrl & IXGBE_CTRL_RST_MASK) { --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbevf/ethtool.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbevf/ethtool.c @@ -774,7 +774,7 @@ adapter->tx_itr_setting = ec->tx_coalesce_usecs; if (adapter->tx_itr_setting == 1) - tx_itr_param = IXGBE_10K_ITR; + tx_itr_param = IXGBE_12K_ITR; else tx_itr_param = adapter->tx_itr_setting; --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h @@ -326,8 +326,7 @@ #define IXGBE_MIN_RSC_ITR 24 #define IXGBE_100K_ITR 40 #define IXGBE_20K_ITR 200 -#define IXGBE_10K_ITR 400 -#define IXGBE_8K_ITR 500 +#define IXGBE_12K_ITR 336 /* Helper macros to switch between ints/sec and what the register uses. * And yes, it's the same math going both ways. The lowest value --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c @@ -59,7 +59,7 @@ #define DRV_VERSION "2.12.1-k" const char ixgbevf_driver_version[] = DRV_VERSION; static char ixgbevf_copyright[] = - "Copyright (c) 2009 - 2012 Intel Corporation."; + "Copyright (c) 2009 - 2015 Intel Corporation."; static const struct ixgbevf_info *ixgbevf_info_tbl[] = { [board_82599_vf] = &ixgbevf_82599_vf_info, @@ -96,12 +96,14 @@ module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); +static struct workqueue_struct *ixgbevf_wq; + static void ixgbevf_service_event_schedule(struct ixgbevf_adapter *adapter) { if (!test_bit(__IXGBEVF_DOWN, &adapter->state) && !test_bit(__IXGBEVF_REMOVING, &adapter->state) && !test_and_set_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state)) - schedule_work(&adapter->service_task); + queue_work(ixgbevf_wq, &adapter->service_task); } static void ixgbevf_service_event_complete(struct ixgbevf_adapter *adapter) @@ -1014,6 +1016,8 @@ ixgbevf_for_each_ring(ring, q_vector->tx) clean_complete &= ixgbevf_clean_tx_irq(q_vector, ring); + if (budget <= 0) + return budget; #ifdef CONFIG_NET_RX_BUSY_POLL if (!ixgbevf_qv_lock_napi(q_vector)) return budget; @@ -1043,7 +1047,7 @@ return budget; /* all work done, exit the polling mode */ napi_complete_done(napi, work_done); - if (adapter->rx_itr_setting & 1) + if (adapter->rx_itr_setting == 1) ixgbevf_set_itr(q_vector); if (!test_bit(__IXGBEVF_DOWN, &adapter->state) && !test_bit(__IXGBEVF_REMOVING, &adapter->state)) @@ -1138,7 +1142,7 @@ if (q_vector->tx.ring && !q_vector->rx.ring) { /* Tx only vector */ if (adapter->tx_itr_setting == 1) - q_vector->itr = IXGBE_10K_ITR; + q_vector->itr = IXGBE_12K_ITR; else q_vector->itr = adapter->tx_itr_setting; } else { @@ -1196,7 +1200,7 @@ /* simple throttle rate management * 0-20MB/s lowest (100000 ints/s) * 20-100MB/s low (20000 ints/s) - * 100-1249MB/s bulk (8000 ints/s) + * 100-1249MB/s bulk (12000 ints/s) */ /* what was last interrupt timeslice? */ timepassed_us = q_vector->itr >> 2; @@ -1246,8 +1250,9 @@ new_itr = IXGBE_20K_ITR; break; case bulk_latency: + new_itr = IXGBE_12K_ITR; + break; default: - new_itr = IXGBE_8K_ITR; break; } @@ -1288,7 +1293,7 @@ /* EIAM disabled interrupts (on this vector) for us */ if (q_vector->rx.ring || q_vector->tx.ring) - napi_schedule(&q_vector->napi); + napi_schedule_irqoff(&q_vector->napi); return IRQ_HANDLED; } @@ -1332,7 +1337,6 @@ int txr_remaining = adapter->num_tx_queues; int i, j; int rqpv, tqpv; - int err = 0; q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; @@ -1345,7 +1349,7 @@ for (; txr_idx < txr_remaining; v_start++, txr_idx++) map_vector_to_txq(adapter, v_start, txr_idx); - goto out; + return 0; } /* If we don't have enough vectors for a 1-to-1 @@ -1370,8 +1374,7 @@ } } -out: - return err; + return 0; } /** @@ -1469,9 +1472,7 @@ **/ static int ixgbevf_request_irq(struct ixgbevf_adapter *adapter) { - int err = 0; - - err = ixgbevf_request_msix_irqs(adapter); + int err = ixgbevf_request_msix_irqs(adapter); if (err) hw_dbg(&adapter->hw, "request_irq failed, Error %d\n", err); @@ -1830,7 +1831,7 @@ { struct ixgbevf_adapter *adapter = netdev_priv(netdev); struct ixgbe_hw *hw = &adapter->hw; - int err = -EOPNOTSUPP; + int err; spin_lock_bh(&adapter->mbx_lock); @@ -2046,7 +2047,7 @@ ixgbe_mbox_api_11, ixgbe_mbox_api_10, ixgbe_mbox_api_unknown }; - int err = 0, idx = 0; + int err, idx = 0; spin_lock_bh(&adapter->mbx_lock); @@ -2260,10 +2261,8 @@ } if (is_valid_ether_addr(adapter->hw.mac.addr)) { - memcpy(netdev->dev_addr, adapter->hw.mac.addr, - netdev->addr_len); - memcpy(netdev->perm_addr, adapter->hw.mac.addr, - netdev->addr_len); + ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr); + ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr); } adapter->last_reset = jiffies; @@ -2421,7 +2420,7 @@ static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter) { struct net_device *netdev = adapter->netdev; - int err = 0; + int err; int vector, v_budget; /* It's easy to be greedy for MSI-X vectors, but it really @@ -2439,26 +2438,21 @@ */ adapter->msix_entries = kcalloc(v_budget, sizeof(struct msix_entry), GFP_KERNEL); - if (!adapter->msix_entries) { - err = -ENOMEM; - goto out; - } + if (!adapter->msix_entries) + return -ENOMEM; for (vector = 0; vector < v_budget; vector++) adapter->msix_entries[vector].entry = vector; err = ixgbevf_acquire_msix_vectors(adapter, v_budget); if (err) - goto out; + return err; err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues); if (err) - goto out; - - err = netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues); + return err; -out: - return err; + return netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues); } /** @@ -2662,13 +2656,14 @@ else if (is_zero_ether_addr(adapter->hw.mac.addr)) dev_info(&pdev->dev, "MAC address not assigned by administrator.\n"); - memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len); + ether_addr_copy(netdev->dev_addr, hw->mac.addr); } if (!is_valid_ether_addr(netdev->dev_addr)) { dev_info(&pdev->dev, "Assigning random MAC address\n"); eth_hw_addr_random(netdev); - memcpy(hw->mac.addr, netdev->dev_addr, netdev->addr_len); + ether_addr_copy(hw->mac.addr, netdev->dev_addr); + ether_addr_copy(hw->mac.perm_addr, netdev->dev_addr); } /* Enable dynamic interrupt throttling rates */ @@ -3355,6 +3350,7 @@ if (skb->ip_summed == CHECKSUM_PARTIAL) { u8 l4_hdr = 0; + __be16 frag_off; switch (first->protocol) { case htons(ETH_P_IP): @@ -3365,13 +3361,16 @@ case htons(ETH_P_IPV6): vlan_macip_lens |= skb_network_header_len(skb); l4_hdr = ipv6_hdr(skb)->nexthdr; + if (likely(skb_network_header_len(skb) == + sizeof(struct ipv6hdr))) + break; + ipv6_skip_exthdr(skb, skb_network_offset(skb) + + sizeof(struct ipv6hdr), + &l4_hdr, &frag_off); + if (unlikely(frag_off)) + l4_hdr = NEXTHDR_FRAGMENT; break; default: - if (unlikely(net_ratelimit())) { - dev_warn(tx_ring->dev, - "partial checksum but proto=%x!\n", - first->protocol); - } break; } @@ -3393,16 +3392,18 @@ default: if (unlikely(net_ratelimit())) { dev_warn(tx_ring->dev, - "partial checksum but l4 proto=%x!\n", - l4_hdr); + "partial checksum, l3 proto=%x, l4 proto=%x\n", + first->protocol, l4_hdr); } - break; + skb_checksum_help(skb); + goto no_csum; } /* update TX checksum flag */ first->tx_flags |= IXGBE_TX_FLAGS_CSUM; } +no_csum: /* vlan_macip_lens: MACLEN, VLAN tag */ vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; @@ -3698,8 +3699,8 @@ if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; - memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); - memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len); + ether_addr_copy(netdev->dev_addr, addr->sa_data); + ether_addr_copy(hw->mac.addr, addr->sa_data); spin_lock_bh(&adapter->mbx_lock); @@ -4248,15 +4249,17 @@ **/ static int __init ixgbevf_init_module(void) { - int ret; - pr_info("%s - version %s\n", ixgbevf_driver_string, ixgbevf_driver_version); pr_info("%s\n", ixgbevf_copyright); + ixgbevf_wq = create_singlethread_workqueue(ixgbevf_driver_name); + if (!ixgbevf_wq) { + pr_err("%s: Failed to create workqueue\n", ixgbevf_driver_name); + return -ENOMEM; + } - ret = pci_register_driver(&ixgbevf_driver); - return ret; + return pci_register_driver(&ixgbevf_driver); } module_init(ixgbevf_init_module); @@ -4270,6 +4273,10 @@ static void __exit ixgbevf_exit_module(void) { pci_unregister_driver(&ixgbevf_driver); + if (ixgbevf_wq) { + destroy_workqueue(ixgbevf_wq); + ixgbevf_wq = NULL; + } } #ifdef DEBUG --- linux-4.4.0.orig/drivers/net/ethernet/intel/ixgbevf/vf.c +++ linux-4.4.0/drivers/net/ethernet/intel/ixgbevf/vf.c @@ -117,7 +117,9 @@ msgbuf[0] != (IXGBE_VF_RESET | IXGBE_VT_MSGTYPE_NACK)) return IXGBE_ERR_INVALID_MAC_ADDR; - ether_addr_copy(hw->mac.perm_addr, addr); + if (msgbuf[0] == (IXGBE_VF_RESET | IXGBE_VT_MSGTYPE_ACK)) + ether_addr_copy(hw->mac.perm_addr, addr); + hw->mac.mc_filter_type = msgbuf[IXGBE_VF_MC_TYPE_WORD]; return 0; --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/Makefile +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/Makefile @@ -2,7 +2,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \ health.o mcg.o cq.o srq.o alloc.o qp.o port.o mr.o pd.o \ - mad.o transobj.o vport.o -mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o flow_table.o \ + mad.o transobj.o vport.o sriov.o +mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o flow_table.o eswitch.o \ en_main.o en_flow_table.o en_ethtool.o en_tx.o en_rx.o \ en_txrx.o --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -465,6 +465,7 @@ }; struct mlx5e_vlan_db { + unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; u32 active_vlans_ft_ix[VLAN_N_VID]; u32 untagged_rule_ft_ix; u32 any_vlan_rule_ft_ix; --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_flow_table.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/en_flow_table.c @@ -502,6 +502,49 @@ return err; } +static int mlx5e_vport_context_update_vlans(struct mlx5e_priv *priv) +{ + struct net_device *ndev = priv->netdev; + int max_list_size; + int list_size; + u16 *vlans; + int vlan; + int err; + int i; + + list_size = 0; + for_each_set_bit(vlan, priv->vlan.active_vlans, VLAN_N_VID) + list_size++; + + max_list_size = 1 << MLX5_CAP_GEN(priv->mdev, log_max_vlan_list); + + if (list_size > max_list_size) { + netdev_warn(ndev, + "netdev vlans list size (%d) > (%d) max vport list size, some vlans will be dropped\n", + list_size, max_list_size); + list_size = max_list_size; + } + + vlans = kcalloc(list_size, sizeof(*vlans), GFP_KERNEL); + if (!vlans) + return -ENOMEM; + + i = 0; + for_each_set_bit(vlan, priv->vlan.active_vlans, VLAN_N_VID) { + if (i >= list_size) + break; + vlans[i++] = vlan; + } + + err = mlx5_modify_nic_vport_vlans(priv->mdev, vlans, list_size); + if (err) + netdev_err(ndev, "Failed to modify vport vlans list err(%d)\n", + err); + + kfree(vlans); + return err; +} + enum mlx5e_vlan_rule_type { MLX5E_VLAN_RULE_TYPE_UNTAGGED, MLX5E_VLAN_RULE_TYPE_ANY_VID, @@ -552,6 +595,10 @@ 1); break; default: /* MLX5E_VLAN_RULE_TYPE_MATCH_VID */ + err = mlx5e_vport_context_update_vlans(priv); + if (err) + goto add_vlan_rule_out; + ft_ix = &priv->vlan.active_vlans_ft_ix[vid]; MLX5_SET(fte_match_param, match_value, outer_headers.vlan_tag, 1); @@ -588,6 +635,7 @@ case MLX5E_VLAN_RULE_TYPE_MATCH_VID: mlx5_del_flow_table_entry(priv->ft.vlan, priv->vlan.active_vlans_ft_ix[vid]); + mlx5e_vport_context_update_vlans(priv); break; } } @@ -619,6 +667,8 @@ { struct mlx5e_priv *priv = netdev_priv(dev); + set_bit(vid, priv->vlan.active_vlans); + return mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, vid); } @@ -627,6 +677,8 @@ { struct mlx5e_priv *priv = netdev_priv(dev); + clear_bit(vid, priv->vlan.active_vlans); + mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, vid); return 0; @@ -671,6 +723,91 @@ netif_addr_unlock_bh(netdev); } +static void mlx5e_fill_addr_array(struct mlx5e_priv *priv, int list_type, + u8 addr_array[][ETH_ALEN], int size) +{ + bool is_uc = (list_type == MLX5_NVPRT_LIST_TYPE_UC); + struct net_device *ndev = priv->netdev; + struct mlx5e_eth_addr_hash_node *hn; + struct hlist_head *addr_list; + struct hlist_node *tmp; + int i = 0; + int hi; + + addr_list = is_uc ? priv->eth_addr.netdev_uc : priv->eth_addr.netdev_mc; + + if (is_uc) /* Make sure our own address is pushed first */ + ether_addr_copy(addr_array[i++], ndev->dev_addr); + else if (priv->eth_addr.broadcast_enabled) + ether_addr_copy(addr_array[i++], ndev->broadcast); + + mlx5e_for_each_hash_node(hn, tmp, addr_list, hi) { + if (ether_addr_equal(ndev->dev_addr, hn->ai.addr)) + continue; + if (i >= size) + break; + ether_addr_copy(addr_array[i++], hn->ai.addr); + } +} + +static void mlx5e_vport_context_update_addr_list(struct mlx5e_priv *priv, + int list_type) +{ + bool is_uc = (list_type == MLX5_NVPRT_LIST_TYPE_UC); + struct mlx5e_eth_addr_hash_node *hn; + u8 (*addr_array)[ETH_ALEN] = NULL; + struct hlist_head *addr_list; + struct hlist_node *tmp; + int max_size; + int size; + int err; + int hi; + + size = is_uc ? 0 : (priv->eth_addr.broadcast_enabled ? 1 : 0); + max_size = is_uc ? + 1 << MLX5_CAP_GEN(priv->mdev, log_max_current_uc_list) : + 1 << MLX5_CAP_GEN(priv->mdev, log_max_current_mc_list); + + addr_list = is_uc ? priv->eth_addr.netdev_uc : priv->eth_addr.netdev_mc; + mlx5e_for_each_hash_node(hn, tmp, addr_list, hi) + size++; + + if (size > max_size) { + netdev_warn(priv->netdev, + "netdev %s list size (%d) > (%d) max vport list size, some addresses will be dropped\n", + is_uc ? "UC" : "MC", size, max_size); + size = max_size; + } + + if (size) { + addr_array = kcalloc(size, ETH_ALEN, GFP_KERNEL); + if (!addr_array) { + err = -ENOMEM; + goto out; + } + mlx5e_fill_addr_array(priv, list_type, addr_array, size); + } + + err = mlx5_modify_nic_vport_mac_list(priv->mdev, list_type, addr_array, size); +out: + if (err) + netdev_err(priv->netdev, + "Failed to modify vport %s list err(%d)\n", + is_uc ? "UC" : "MC", err); + kfree(addr_array); +} + +static void mlx5e_vport_context_update(struct mlx5e_priv *priv) +{ + struct mlx5e_eth_addr_db *ea = &priv->eth_addr; + + mlx5e_vport_context_update_addr_list(priv, MLX5_NVPRT_LIST_TYPE_UC); + mlx5e_vport_context_update_addr_list(priv, MLX5_NVPRT_LIST_TYPE_MC); + mlx5_modify_nic_vport_promisc(priv->mdev, 0, + ea->allmulti_enabled, + ea->promisc_enabled); +} + static void mlx5e_apply_netdev_addr(struct mlx5e_priv *priv) { struct mlx5e_eth_addr_hash_node *hn; @@ -748,6 +885,8 @@ ea->promisc_enabled = promisc_enabled; ea->allmulti_enabled = allmulti_enabled; ea->broadcast_enabled = broadcast_enabled; + + mlx5e_vport_context_update(priv); } void mlx5e_init_eth_addr(struct mlx5e_priv *priv) --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -32,6 +32,7 @@ #include #include "en.h" +#include "eswitch.h" struct mlx5e_rq_param { u32 rqc[MLX5_ST_SZ_DW(rqc)]; @@ -63,7 +64,7 @@ u8 port_state; port_state = mlx5_query_vport_state(mdev, - MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT); + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT, 0); if (port_state == VPORT_STATE_UP) netif_carrier_on(priv->netdev); @@ -746,7 +747,7 @@ struct mlx5_core_dev *mdev = priv->mdev; struct mlx5_core_cq *mcq = &cq->mcq; int eqn_not_used; - int irqn; + unsigned int irqn; int err; u32 i; @@ -800,7 +801,7 @@ void *in; void *cqc; int inlen; - int irqn_not_used; + unsigned int irqn_not_used; int eqn; int err; @@ -1504,7 +1505,7 @@ struct mlx5_core_dev *mdev = priv->mdev; struct mlx5_core_cq *mcq = &cq->mcq; int eqn_not_used; - int irqn; + unsigned int irqn; int err; err = mlx5_cqwq_create(mdev, ¶m->wq, param->cqc, &cq->wq, @@ -1926,6 +1927,79 @@ return err; } +static int mlx5e_set_vf_mac(struct net_device *dev, int vf, u8 *mac) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + + return mlx5_eswitch_set_vport_mac(mdev->priv.eswitch, vf + 1, mac); +} + +static int mlx5e_set_vf_vlan(struct net_device *dev, int vf, u16 vlan, u8 qos) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + + return mlx5_eswitch_set_vport_vlan(mdev->priv.eswitch, vf + 1, + vlan, qos); +} + +static int mlx5_vport_link2ifla(u8 esw_link) +{ + switch (esw_link) { + case MLX5_ESW_VPORT_ADMIN_STATE_DOWN: + return IFLA_VF_LINK_STATE_DISABLE; + case MLX5_ESW_VPORT_ADMIN_STATE_UP: + return IFLA_VF_LINK_STATE_ENABLE; + } + return IFLA_VF_LINK_STATE_AUTO; +} + +static int mlx5_ifla_link2vport(u8 ifla_link) +{ + switch (ifla_link) { + case IFLA_VF_LINK_STATE_DISABLE: + return MLX5_ESW_VPORT_ADMIN_STATE_DOWN; + case IFLA_VF_LINK_STATE_ENABLE: + return MLX5_ESW_VPORT_ADMIN_STATE_UP; + } + return MLX5_ESW_VPORT_ADMIN_STATE_AUTO; +} + +static int mlx5e_set_vf_link_state(struct net_device *dev, int vf, + int link_state) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + + return mlx5_eswitch_set_vport_state(mdev->priv.eswitch, vf + 1, + mlx5_ifla_link2vport(link_state)); +} + +static int mlx5e_get_vf_config(struct net_device *dev, + int vf, struct ifla_vf_info *ivi) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + int err; + + err = mlx5_eswitch_get_vport_config(mdev->priv.eswitch, vf + 1, ivi); + if (err) + return err; + ivi->linkstate = mlx5_vport_link2ifla(ivi->linkstate); + return 0; +} + +static int mlx5e_get_vf_stats(struct net_device *dev, + int vf, struct ifla_vf_stats *vf_stats) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + + return mlx5_eswitch_get_vport_stats(mdev->priv.eswitch, vf + 1, + vf_stats); +} + static struct net_device_ops mlx5e_netdev_ops = { .ndo_open = mlx5e_open, .ndo_stop = mlx5e_close, @@ -1936,7 +2010,7 @@ .ndo_vlan_rx_add_vid = mlx5e_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid = mlx5e_vlan_rx_kill_vid, .ndo_set_features = mlx5e_set_features, - .ndo_change_mtu = mlx5e_change_mtu, + .ndo_change_mtu = mlx5e_change_mtu }; static int mlx5e_check_required_hca_cap(struct mlx5_core_dev *mdev) @@ -2023,7 +2097,12 @@ { struct mlx5e_priv *priv = netdev_priv(netdev); - mlx5_query_nic_vport_mac_address(priv->mdev, netdev->dev_addr); + mlx5_query_nic_vport_mac_address(priv->mdev, 0, netdev->dev_addr); + if (is_zero_ether_addr(netdev->dev_addr) && + !MLX5_CAP_GEN(priv->mdev, vport_group_manager)) { + eth_hw_addr_random(netdev); + mlx5_core_info(priv->mdev, "Assigned random MAC address %pM\n", netdev->dev_addr); + } } static void mlx5e_build_netdev(struct net_device *netdev) @@ -2036,6 +2115,14 @@ if (priv->params.num_tc > 1) mlx5e_netdev_ops.ndo_select_queue = mlx5e_select_queue; + if (MLX5_CAP_GEN(mdev, vport_group_manager)) { + mlx5e_netdev_ops.ndo_set_vf_mac = mlx5e_set_vf_mac; + mlx5e_netdev_ops.ndo_set_vf_vlan = mlx5e_set_vf_vlan; + mlx5e_netdev_ops.ndo_get_vf_config = mlx5e_get_vf_config; + mlx5e_netdev_ops.ndo_set_vf_link_state = mlx5e_set_vf_link_state; + mlx5e_netdev_ops.ndo_get_vf_stats = mlx5e_get_vf_stats; + } + netdev->netdev_ops = &mlx5e_netdev_ops; netdev->watchdog_timeo = 15 * HZ; --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eq.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/eq.c @@ -35,6 +35,9 @@ #include #include #include "mlx5_core.h" +#ifdef CONFIG_MLX5_CORE_EN +#include "eswitch.h" +#endif enum { MLX5_EQE_SIZE = sizeof(struct mlx5_eqe), @@ -287,6 +290,11 @@ break; #endif +#ifdef CONFIG_MLX5_CORE_EN + case MLX5_EVENT_TYPE_NIC_VPORT_CHANGE: + mlx5_eswitch_vport_event(dev->priv.eswitch, eqe); + break; +#endif default: mlx5_core_warn(dev, "Unhandled event 0x%x on EQ 0x%x\n", eqe->type, eq->eqn); @@ -459,6 +467,11 @@ if (MLX5_CAP_GEN(dev, pg)) async_event_mask |= (1ull << MLX5_EVENT_TYPE_PAGE_FAULT); + if (MLX5_CAP_GEN(dev, port_type) == MLX5_CAP_PORT_TYPE_ETH && + MLX5_CAP_GEN(dev, vport_group_manager) && + mlx5_core_is_pf(dev)) + async_event_mask |= (1ull << MLX5_EVENT_TYPE_NIC_VPORT_CHANGE); + err = mlx5_create_map_eq(dev, &table->cmd_eq, MLX5_EQ_VEC_CMD, MLX5_NUM_CMD_EQE, 1ull << MLX5_EVENT_TYPE_CMD, "mlx5_cmd_eq", &dev->priv.uuari.uars[0]); --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -0,0 +1,1282 @@ +/* + * Copyright (c) 2015, Mellanox Technologies. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include "mlx5_core.h" +#include "eswitch.h" + +#define UPLINK_VPORT 0xFFFF + +#define MLX5_DEBUG_ESWITCH_MASK BIT(3) + +#define esw_info(dev, format, ...) \ + pr_info("(%s): E-Switch: " format, (dev)->priv.name, ##__VA_ARGS__) + +#define esw_warn(dev, format, ...) \ + pr_warn("(%s): E-Switch: " format, (dev)->priv.name, ##__VA_ARGS__) + +#define esw_debug(dev, format, ...) \ + mlx5_core_dbg_mask(dev, MLX5_DEBUG_ESWITCH_MASK, format, ##__VA_ARGS__) + +enum { + MLX5_ACTION_NONE = 0, + MLX5_ACTION_ADD = 1, + MLX5_ACTION_DEL = 2, +}; + +/* E-Switch UC L2 table hash node */ +struct esw_uc_addr { + struct l2addr_node node; + u32 table_index; + u32 vport; +}; + +/* E-Switch MC FDB table hash node */ +struct esw_mc_addr { /* SRIOV only */ + struct l2addr_node node; + struct mlx5_flow_rule *uplink_rule; /* Forward to uplink rule */ + u32 refcnt; +}; + +/* Vport UC/MC hash node */ +struct vport_addr { + struct l2addr_node node; + u8 action; + u32 vport; + struct mlx5_flow_rule *flow_rule; /* SRIOV only */ +}; + +enum { + UC_ADDR_CHANGE = BIT(0), + MC_ADDR_CHANGE = BIT(1), +}; + +/* Vport context events */ +#define SRIOV_VPORT_EVENTS (UC_ADDR_CHANGE | \ + MC_ADDR_CHANGE) + +static int arm_vport_context_events_cmd(struct mlx5_core_dev *dev, u16 vport, + u32 events_mask) +{ + int in[MLX5_ST_SZ_DW(modify_nic_vport_context_in)]; + int out[MLX5_ST_SZ_DW(modify_nic_vport_context_out)]; + void *nic_vport_ctx; + int err; + + memset(out, 0, sizeof(out)); + memset(in, 0, sizeof(in)); + + MLX5_SET(modify_nic_vport_context_in, in, + opcode, MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT); + MLX5_SET(modify_nic_vport_context_in, in, field_select.change_event, 1); + MLX5_SET(modify_nic_vport_context_in, in, vport_number, vport); + if (vport) + MLX5_SET(modify_nic_vport_context_in, in, other_vport, 1); + nic_vport_ctx = MLX5_ADDR_OF(modify_nic_vport_context_in, + in, nic_vport_context); + + MLX5_SET(nic_vport_context, nic_vport_ctx, arm_change_event, 1); + + if (events_mask & UC_ADDR_CHANGE) + MLX5_SET(nic_vport_context, nic_vport_ctx, + event_on_uc_address_change, 1); + if (events_mask & MC_ADDR_CHANGE) + MLX5_SET(nic_vport_context, nic_vport_ctx, + event_on_mc_address_change, 1); + + err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); + if (err) + goto ex; + err = mlx5_cmd_status_to_err_v2(out); + if (err) + goto ex; + return 0; +ex: + return err; +} + +/* E-Switch vport context HW commands */ +static int query_esw_vport_context_cmd(struct mlx5_core_dev *mdev, u32 vport, + u32 *out, int outlen) +{ + u32 in[MLX5_ST_SZ_DW(query_esw_vport_context_in)]; + + memset(in, 0, sizeof(in)); + + MLX5_SET(query_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT); + + MLX5_SET(query_esw_vport_context_in, in, vport_number, vport); + if (vport) + MLX5_SET(query_esw_vport_context_in, in, other_vport, 1); + + return mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, outlen); +} + +static int query_esw_vport_cvlan(struct mlx5_core_dev *dev, u32 vport, + u16 *vlan, u8 *qos) +{ + u32 out[MLX5_ST_SZ_DW(query_esw_vport_context_out)]; + int err; + bool cvlan_strip; + bool cvlan_insert; + + memset(out, 0, sizeof(out)); + + *vlan = 0; + *qos = 0; + + if (!MLX5_CAP_ESW(dev, vport_cvlan_strip) || + !MLX5_CAP_ESW(dev, vport_cvlan_insert_if_not_exist)) + return -ENOTSUPP; + + err = query_esw_vport_context_cmd(dev, vport, out, sizeof(out)); + if (err) + goto out; + + cvlan_strip = MLX5_GET(query_esw_vport_context_out, out, + esw_vport_context.vport_cvlan_strip); + + cvlan_insert = MLX5_GET(query_esw_vport_context_out, out, + esw_vport_context.vport_cvlan_insert); + + if (cvlan_strip || cvlan_insert) { + *vlan = MLX5_GET(query_esw_vport_context_out, out, + esw_vport_context.cvlan_id); + *qos = MLX5_GET(query_esw_vport_context_out, out, + esw_vport_context.cvlan_pcp); + } + + esw_debug(dev, "Query Vport[%d] cvlan: VLAN %d qos=%d\n", + vport, *vlan, *qos); +out: + return err; +} + +static int modify_esw_vport_context_cmd(struct mlx5_core_dev *dev, u16 vport, + void *in, int inlen) +{ + u32 out[MLX5_ST_SZ_DW(modify_esw_vport_context_out)]; + + memset(out, 0, sizeof(out)); + + MLX5_SET(modify_esw_vport_context_in, in, vport_number, vport); + if (vport) + MLX5_SET(modify_esw_vport_context_in, in, other_vport, 1); + + MLX5_SET(modify_esw_vport_context_in, in, opcode, + MLX5_CMD_OP_MODIFY_ESW_VPORT_CONTEXT); + + return mlx5_cmd_exec_check_status(dev, in, inlen, + out, sizeof(out)); +} + +static int modify_esw_vport_cvlan(struct mlx5_core_dev *dev, u32 vport, + u16 vlan, u8 qos, bool set) +{ + u32 in[MLX5_ST_SZ_DW(modify_esw_vport_context_in)]; + + memset(in, 0, sizeof(in)); + + if (!MLX5_CAP_ESW(dev, vport_cvlan_strip) || + !MLX5_CAP_ESW(dev, vport_cvlan_insert_if_not_exist)) + return -ENOTSUPP; + + esw_debug(dev, "Set Vport[%d] VLAN %d qos %d set=%d\n", + vport, vlan, qos, set); + + if (set) { + MLX5_SET(modify_esw_vport_context_in, in, + esw_vport_context.vport_cvlan_strip, 1); + /* insert only if no vlan in packet */ + MLX5_SET(modify_esw_vport_context_in, in, + esw_vport_context.vport_cvlan_insert, 1); + MLX5_SET(modify_esw_vport_context_in, in, + esw_vport_context.cvlan_pcp, qos); + MLX5_SET(modify_esw_vport_context_in, in, + esw_vport_context.cvlan_id, vlan); + } + + MLX5_SET(modify_esw_vport_context_in, in, + field_select.vport_cvlan_strip, 1); + MLX5_SET(modify_esw_vport_context_in, in, + field_select.vport_cvlan_insert, 1); + + return modify_esw_vport_context_cmd(dev, vport, in, sizeof(in)); +} + +/* HW L2 Table (MPFS) management */ +static int set_l2_table_entry_cmd(struct mlx5_core_dev *dev, u32 index, + u8 *mac, u8 vlan_valid, u16 vlan) +{ + u32 in[MLX5_ST_SZ_DW(set_l2_table_entry_in)]; + u32 out[MLX5_ST_SZ_DW(set_l2_table_entry_out)]; + u8 *in_mac_addr; + + memset(in, 0, sizeof(in)); + memset(out, 0, sizeof(out)); + + MLX5_SET(set_l2_table_entry_in, in, opcode, + MLX5_CMD_OP_SET_L2_TABLE_ENTRY); + MLX5_SET(set_l2_table_entry_in, in, table_index, index); + MLX5_SET(set_l2_table_entry_in, in, vlan_valid, vlan_valid); + MLX5_SET(set_l2_table_entry_in, in, vlan, vlan); + + in_mac_addr = MLX5_ADDR_OF(set_l2_table_entry_in, in, mac_address); + ether_addr_copy(&in_mac_addr[2], mac); + + return mlx5_cmd_exec_check_status(dev, in, sizeof(in), + out, sizeof(out)); +} + +static int del_l2_table_entry_cmd(struct mlx5_core_dev *dev, u32 index) +{ + u32 in[MLX5_ST_SZ_DW(delete_l2_table_entry_in)]; + u32 out[MLX5_ST_SZ_DW(delete_l2_table_entry_out)]; + + memset(in, 0, sizeof(in)); + memset(out, 0, sizeof(out)); + + MLX5_SET(delete_l2_table_entry_in, in, opcode, + MLX5_CMD_OP_DELETE_L2_TABLE_ENTRY); + MLX5_SET(delete_l2_table_entry_in, in, table_index, index); + return mlx5_cmd_exec_check_status(dev, in, sizeof(in), + out, sizeof(out)); +} + +static int alloc_l2_table_index(struct mlx5_l2_table *l2_table, u32 *ix) +{ + int err = 0; + + *ix = find_first_zero_bit(l2_table->bitmap, l2_table->size); + if (*ix >= l2_table->size) + err = -ENOSPC; + else + __set_bit(*ix, l2_table->bitmap); + + return err; +} + +static void free_l2_table_index(struct mlx5_l2_table *l2_table, u32 ix) +{ + __clear_bit(ix, l2_table->bitmap); +} + +static int set_l2_table_entry(struct mlx5_core_dev *dev, u8 *mac, + u8 vlan_valid, u16 vlan, + u32 *index) +{ + struct mlx5_l2_table *l2_table = &dev->priv.eswitch->l2_table; + int err; + + err = alloc_l2_table_index(l2_table, index); + if (err) + return err; + + err = set_l2_table_entry_cmd(dev, *index, mac, vlan_valid, vlan); + if (err) + free_l2_table_index(l2_table, *index); + + return err; +} + +static void del_l2_table_entry(struct mlx5_core_dev *dev, u32 index) +{ + struct mlx5_l2_table *l2_table = &dev->priv.eswitch->l2_table; + + del_l2_table_entry_cmd(dev, index); + free_l2_table_index(l2_table, index); +} + +/* E-Switch FDB flow steering */ +struct dest_node { + struct list_head list; + struct mlx5_flow_destination dest; +}; + +static int _mlx5_flow_rule_apply(struct mlx5_flow_rule *fr) +{ + bool was_valid = fr->valid; + struct dest_node *dest_n; + u32 dest_list_size = 0; + void *in_match_value; + u32 *flow_context; + u32 flow_index; + int err; + int i; + + if (list_empty(&fr->dest_list)) { + if (fr->valid) + mlx5_del_flow_table_entry(fr->ft, fr->fi); + fr->valid = false; + return 0; + } + + list_for_each_entry(dest_n, &fr->dest_list, list) + dest_list_size++; + + flow_context = mlx5_vzalloc(MLX5_ST_SZ_BYTES(flow_context) + + MLX5_ST_SZ_BYTES(dest_format_struct) * + dest_list_size); + if (!flow_context) + return -ENOMEM; + + MLX5_SET(flow_context, flow_context, flow_tag, fr->flow_tag); + MLX5_SET(flow_context, flow_context, action, fr->action); + MLX5_SET(flow_context, flow_context, destination_list_size, + dest_list_size); + + i = 0; + list_for_each_entry(dest_n, &fr->dest_list, list) { + void *dest_addr = MLX5_ADDR_OF(flow_context, flow_context, + destination[i++]); + + MLX5_SET(dest_format_struct, dest_addr, destination_type, + dest_n->dest.type); + MLX5_SET(dest_format_struct, dest_addr, destination_id, + dest_n->dest.vport_num); + } + + in_match_value = MLX5_ADDR_OF(flow_context, flow_context, match_value); + memcpy(in_match_value, fr->match_value, MLX5_ST_SZ_BYTES(fte_match_param)); + + err = mlx5_add_flow_table_entry(fr->ft, fr->match_criteria_enable, + fr->match_criteria, flow_context, + &flow_index); + if (!err) { + if (was_valid) + mlx5_del_flow_table_entry(fr->ft, fr->fi); + fr->fi = flow_index; + fr->valid = true; + } + kfree(flow_context); + return err; +} + +static int mlx5_flow_rule_add_dest(struct mlx5_flow_rule *fr, + struct mlx5_flow_destination *new_dest) +{ + struct dest_node *dest_n; + int err; + + dest_n = kzalloc(sizeof(*dest_n), GFP_KERNEL); + if (!dest_n) + return -ENOMEM; + + memcpy(&dest_n->dest, new_dest, sizeof(dest_n->dest)); + mutex_lock(&fr->mutex); + list_add(&dest_n->list, &fr->dest_list); + err = _mlx5_flow_rule_apply(fr); + if (err) { + list_del(&dest_n->list); + kfree(dest_n); + } + mutex_unlock(&fr->mutex); + return err; +} + +static int mlx5_flow_rule_del_dest(struct mlx5_flow_rule *fr, + struct mlx5_flow_destination *dest) +{ + struct dest_node *dest_n; + struct dest_node *n; + int err; + + mutex_lock(&fr->mutex); + list_for_each_entry_safe(dest_n, n, &fr->dest_list, list) { + if (dest->vport_num == dest_n->dest.vport_num) + goto found; + } + mutex_unlock(&fr->mutex); + return -ENOENT; + +found: + list_del(&dest_n->list); + err = _mlx5_flow_rule_apply(fr); + mutex_unlock(&fr->mutex); + kfree(dest_n); + + return err; +} + +static struct mlx5_flow_rule *find_fr(struct mlx5_eswitch *esw, + u8 match_criteria_enable, + u32 *match_value) +{ + struct hlist_head *hash = esw->mc_table; + struct esw_mc_addr *esw_mc; + u8 *dmac_v; + + dmac_v = MLX5_ADDR_OF(fte_match_param, match_value, + outer_headers.dmac_47_16); + + /* UNICAST FULL MATCH */ + if (!is_multicast_ether_addr(dmac_v)) + return NULL; + + /* MULTICAST FULL MATCH */ + esw_mc = l2addr_hash_find(hash, dmac_v, struct esw_mc_addr); + + return esw_mc ? esw_mc->uplink_rule : NULL; +} + +static struct mlx5_flow_rule *alloc_fr(void *ft, + u8 match_criteria_enable, + u32 *match_criteria, + u32 *match_value, + u32 action, + u32 flow_tag) +{ + struct mlx5_flow_rule *fr = kzalloc(sizeof(*fr), GFP_KERNEL); + + if (!fr) + return NULL; + + fr->match_criteria = kzalloc(MLX5_ST_SZ_BYTES(fte_match_param), GFP_KERNEL); + fr->match_value = kzalloc(MLX5_ST_SZ_BYTES(fte_match_param), GFP_KERNEL); + if (!fr->match_criteria || !fr->match_value) { + kfree(fr->match_criteria); + kfree(fr->match_value); + kfree(fr); + return NULL; + } + + memcpy(fr->match_criteria, match_criteria, MLX5_ST_SZ_BYTES(fte_match_param)); + memcpy(fr->match_value, match_value, MLX5_ST_SZ_BYTES(fte_match_param)); + fr->match_criteria_enable = match_criteria_enable; + fr->flow_tag = flow_tag; + fr->action = action; + + mutex_init(&fr->mutex); + INIT_LIST_HEAD(&fr->dest_list); + atomic_set(&fr->refcount, 0); + fr->ft = ft; + return fr; +} + +static void deref_fr(struct mlx5_flow_rule *fr) +{ + if (!atomic_dec_and_test(&fr->refcount)) + return; + + kfree(fr->match_criteria); + kfree(fr->match_value); + kfree(fr); +} + +static struct mlx5_flow_rule * +mlx5_add_flow_rule(struct mlx5_eswitch *esw, + u8 match_criteria_enable, + u32 *match_criteria, + u32 *match_value, + u32 action, + u32 flow_tag, + struct mlx5_flow_destination *dest) +{ + struct mlx5_flow_rule *fr; + int err; + + fr = find_fr(esw, match_criteria_enable, match_value); + fr = fr ? fr : alloc_fr(esw->fdb_table.fdb, match_criteria_enable, match_criteria, + match_value, action, flow_tag); + if (!fr) + return NULL; + + atomic_inc(&fr->refcount); + + err = mlx5_flow_rule_add_dest(fr, dest); + if (err) { + deref_fr(fr); + return NULL; + } + + return fr; +} + +static void mlx5_del_flow_rule(struct mlx5_flow_rule *fr, u32 vport) +{ + struct mlx5_flow_destination dest; + + dest.vport_num = vport; + mlx5_flow_rule_del_dest(fr, &dest); + deref_fr(fr); +} + +/* E-Switch FDB */ +static struct mlx5_flow_rule * +esw_fdb_set_vport_rule(struct mlx5_eswitch *esw, u8 mac[ETH_ALEN], u32 vport) +{ + int match_header = MLX5_MATCH_OUTER_HEADERS; + struct mlx5_flow_destination dest; + struct mlx5_flow_rule *flow_rule = NULL; + u32 *match_v; + u32 *match_c; + u8 *dmac_v; + u8 *dmac_c; + + match_v = kzalloc(MLX5_ST_SZ_BYTES(fte_match_param), GFP_KERNEL); + match_c = kzalloc(MLX5_ST_SZ_BYTES(fte_match_param), GFP_KERNEL); + if (!match_v || !match_c) { + pr_warn("FDB: Failed to alloc match parameters\n"); + goto out; + } + dmac_v = MLX5_ADDR_OF(fte_match_param, match_v, + outer_headers.dmac_47_16); + dmac_c = MLX5_ADDR_OF(fte_match_param, match_c, + outer_headers.dmac_47_16); + + ether_addr_copy(dmac_v, mac); + /* Match criteria mask */ + memset(dmac_c, 0xff, 6); + + dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; + dest.vport_num = vport; + + esw_debug(esw->dev, + "\tFDB add rule dmac_v(%pM) dmac_c(%pM) -> vport(%d)\n", + dmac_v, dmac_c, vport); + flow_rule = + mlx5_add_flow_rule(esw, + match_header, + match_c, + match_v, + MLX5_FLOW_CONTEXT_ACTION_FWD_DEST, + 0, &dest); + if (IS_ERR_OR_NULL(flow_rule)) { + pr_warn( + "FDB: Failed to add flow rule: dmac_v(%pM) dmac_c(%pM) -> vport(%d), err(%ld)\n", + dmac_v, dmac_c, vport, PTR_ERR(flow_rule)); + flow_rule = NULL; + } +out: + kfree(match_v); + kfree(match_c); + return flow_rule; +} + +static int esw_create_fdb_table(struct mlx5_eswitch *esw, int nvports) +{ + struct mlx5_core_dev *dev = esw->dev; + struct mlx5_flow_table_group g; + struct mlx5_flow_table *fdb; + u8 *dmac; + + esw_debug(dev, "Create FDB log_max_size(%d)\n", + MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size)); + + memset(&g, 0, sizeof(g)); + /* UC MC Full match rules*/ + g.log_sz = MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size); + g.match_criteria_enable = MLX5_MATCH_OUTER_HEADERS; + dmac = MLX5_ADDR_OF(fte_match_param, g.match_criteria, + outer_headers.dmac_47_16); + /* Match criteria mask */ + memset(dmac, 0xff, 6); + + fdb = mlx5_create_flow_table(dev, 0, + MLX5_FLOW_TABLE_TYPE_ESWITCH, + 1, &g); + if (fdb) + esw_debug(dev, "ESW: FDB Table created fdb->id %d\n", mlx5_get_flow_table_id(fdb)); + else + esw_warn(dev, "ESW: Failed to create FDB Table\n"); + + esw->fdb_table.fdb = fdb; + return fdb ? 0 : -ENOMEM; +} + +static void esw_destroy_fdb_table(struct mlx5_eswitch *esw) +{ + if (!esw->fdb_table.fdb) + return; + + esw_debug(esw->dev, "Destroy FDB Table fdb(%d)\n", + mlx5_get_flow_table_id(esw->fdb_table.fdb)); + mlx5_destroy_flow_table(esw->fdb_table.fdb); + esw->fdb_table.fdb = NULL; +} + +/* E-Switch vport UC/MC lists management */ +typedef int (*vport_addr_action)(struct mlx5_eswitch *esw, + struct vport_addr *vaddr); + +static int esw_add_uc_addr(struct mlx5_eswitch *esw, struct vport_addr *vaddr) +{ + struct hlist_head *hash = esw->l2_table.l2_hash; + struct esw_uc_addr *esw_uc; + u8 *mac = vaddr->node.addr; + u32 vport = vaddr->vport; + int err; + + esw_uc = l2addr_hash_find(hash, mac, struct esw_uc_addr); + if (esw_uc) { + esw_warn(esw->dev, + "Failed to set L2 mac(%pM) for vport(%d), mac is already in use by vport(%d)\n", + mac, vport, esw_uc->vport); + return -EEXIST; + } + + esw_uc = l2addr_hash_add(hash, mac, struct esw_uc_addr, GFP_KERNEL); + if (!esw_uc) + return -ENOMEM; + esw_uc->vport = vport; + + err = set_l2_table_entry(esw->dev, mac, 0, 0, &esw_uc->table_index); + if (err) + goto abort; + + if (esw->fdb_table.fdb) /* SRIOV is enabled: Forward UC MAC to vport */ + vaddr->flow_rule = esw_fdb_set_vport_rule(esw, mac, vport); + + esw_debug(esw->dev, "\tADDED UC MAC: vport[%d] %pM index:%d fr(%p)\n", + vport, mac, esw_uc->table_index, vaddr->flow_rule); + return err; +abort: + l2addr_hash_del(esw_uc); + return err; +} + +static int esw_del_uc_addr(struct mlx5_eswitch *esw, struct vport_addr *vaddr) +{ + struct hlist_head *hash = esw->l2_table.l2_hash; + struct esw_uc_addr *esw_uc; + u8 *mac = vaddr->node.addr; + u32 vport = vaddr->vport; + + esw_uc = l2addr_hash_find(hash, mac, struct esw_uc_addr); + if (!esw_uc || esw_uc->vport != vport) { + esw_debug(esw->dev, + "MAC(%pM) doesn't belong to vport (%d)\n", + mac, vport); + return -EINVAL; + } + esw_debug(esw->dev, "\tDELETE UC MAC: vport[%d] %pM index:%d fr(%p)\n", + vport, mac, esw_uc->table_index, vaddr->flow_rule); + + del_l2_table_entry(esw->dev, esw_uc->table_index); + + if (vaddr->flow_rule) + mlx5_del_flow_rule(vaddr->flow_rule, vport); + vaddr->flow_rule = NULL; + + l2addr_hash_del(esw_uc); + return 0; +} + +static int esw_add_mc_addr(struct mlx5_eswitch *esw, struct vport_addr *vaddr) +{ + struct hlist_head *hash = esw->mc_table; + struct esw_mc_addr *esw_mc; + u8 *mac = vaddr->node.addr; + u32 vport = vaddr->vport; + + if (!esw->fdb_table.fdb) + return 0; + + esw_mc = l2addr_hash_find(hash, mac, struct esw_mc_addr); + if (esw_mc) + goto add; + + esw_mc = l2addr_hash_add(hash, mac, struct esw_mc_addr, GFP_KERNEL); + if (!esw_mc) + return -ENOMEM; + + esw_mc->uplink_rule = /* Forward MC MAC to Uplink */ + esw_fdb_set_vport_rule(esw, mac, UPLINK_VPORT); +add: + esw_mc->refcnt++; + /* Forward MC MAC to vport */ + vaddr->flow_rule = esw_fdb_set_vport_rule(esw, mac, vport); + esw_debug(esw->dev, + "\tADDED MC MAC: vport[%d] %pM fr(%p) refcnt(%d) uplinkfr(%p)\n", + vport, mac, vaddr->flow_rule, + esw_mc->refcnt, esw_mc->uplink_rule); + return 0; +} + +static int esw_del_mc_addr(struct mlx5_eswitch *esw, struct vport_addr *vaddr) +{ + struct hlist_head *hash = esw->mc_table; + struct esw_mc_addr *esw_mc; + u8 *mac = vaddr->node.addr; + u32 vport = vaddr->vport; + + if (!esw->fdb_table.fdb) + return 0; + + esw_mc = l2addr_hash_find(hash, mac, struct esw_mc_addr); + if (!esw_mc) { + esw_warn(esw->dev, + "Failed to find eswitch MC addr for MAC(%pM) vport(%d)", + mac, vport); + return -EINVAL; + } + esw_debug(esw->dev, + "\tDELETE MC MAC: vport[%d] %pM fr(%p) refcnt(%d) uplinkfr(%p)\n", + vport, mac, vaddr->flow_rule, esw_mc->refcnt, + esw_mc->uplink_rule); + + if (vaddr->flow_rule) + mlx5_del_flow_rule(vaddr->flow_rule, vport); + vaddr->flow_rule = NULL; + + if (--esw_mc->refcnt) + return 0; + + if (esw_mc->uplink_rule) + mlx5_del_flow_rule(esw_mc->uplink_rule, UPLINK_VPORT); + + l2addr_hash_del(esw_mc); + return 0; +} + +/* Apply vport UC/MC list to HW l2 table and FDB table */ +static void esw_apply_vport_addr_list(struct mlx5_eswitch *esw, + u32 vport_num, int list_type) +{ + struct mlx5_vport *vport = &esw->vports[vport_num]; + bool is_uc = list_type == MLX5_NVPRT_LIST_TYPE_UC; + vport_addr_action vport_addr_add; + vport_addr_action vport_addr_del; + struct vport_addr *addr; + struct l2addr_node *node; + struct hlist_head *hash; + struct hlist_node *tmp; + int hi; + + vport_addr_add = is_uc ? esw_add_uc_addr : + esw_add_mc_addr; + vport_addr_del = is_uc ? esw_del_uc_addr : + esw_del_mc_addr; + + hash = is_uc ? vport->uc_list : vport->mc_list; + for_each_l2hash_node(node, tmp, hash, hi) { + addr = container_of(node, struct vport_addr, node); + switch (addr->action) { + case MLX5_ACTION_ADD: + vport_addr_add(esw, addr); + addr->action = MLX5_ACTION_NONE; + break; + case MLX5_ACTION_DEL: + vport_addr_del(esw, addr); + l2addr_hash_del(addr); + break; + } + } +} + +/* Sync vport UC/MC list from vport context */ +static void esw_update_vport_addr_list(struct mlx5_eswitch *esw, + u32 vport_num, int list_type) +{ + struct mlx5_vport *vport = &esw->vports[vport_num]; + bool is_uc = list_type == MLX5_NVPRT_LIST_TYPE_UC; + u8 (*mac_list)[ETH_ALEN]; + struct l2addr_node *node; + struct vport_addr *addr; + struct hlist_head *hash; + struct hlist_node *tmp; + int size; + int err; + int hi; + int i; + + size = is_uc ? MLX5_MAX_UC_PER_VPORT(esw->dev) : + MLX5_MAX_MC_PER_VPORT(esw->dev); + + mac_list = kcalloc(size, ETH_ALEN, GFP_KERNEL); + if (!mac_list) + return; + + hash = is_uc ? vport->uc_list : vport->mc_list; + + for_each_l2hash_node(node, tmp, hash, hi) { + addr = container_of(node, struct vport_addr, node); + addr->action = MLX5_ACTION_DEL; + } + + err = mlx5_query_nic_vport_mac_list(esw->dev, vport_num, list_type, + mac_list, &size); + if (err) + return; + esw_debug(esw->dev, "vport[%d] context update %s list size (%d)\n", + vport_num, is_uc ? "UC" : "MC", size); + + for (i = 0; i < size; i++) { + if (is_uc && !is_valid_ether_addr(mac_list[i])) + continue; + + if (!is_uc && !is_multicast_ether_addr(mac_list[i])) + continue; + + addr = l2addr_hash_find(hash, mac_list[i], struct vport_addr); + if (addr) { + addr->action = MLX5_ACTION_NONE; + continue; + } + + addr = l2addr_hash_add(hash, mac_list[i], struct vport_addr, + GFP_KERNEL); + if (!addr) { + esw_warn(esw->dev, + "Failed to add MAC(%pM) to vport[%d] DB\n", + mac_list[i], vport_num); + continue; + } + addr->vport = vport_num; + addr->action = MLX5_ACTION_ADD; + } + kfree(mac_list); +} + +static void esw_vport_change_handler(struct work_struct *work) +{ + struct mlx5_vport *vport = + container_of(work, struct mlx5_vport, vport_change_handler); + struct mlx5_core_dev *dev = vport->dev; + struct mlx5_eswitch *esw = dev->priv.eswitch; + u8 mac[ETH_ALEN]; + + mlx5_query_nic_vport_mac_address(dev, vport->vport, mac); + esw_debug(dev, "vport[%d] Context Changed: perm mac: %pM\n", + vport->vport, mac); + + if (vport->enabled_events & UC_ADDR_CHANGE) { + esw_update_vport_addr_list(esw, vport->vport, + MLX5_NVPRT_LIST_TYPE_UC); + esw_apply_vport_addr_list(esw, vport->vport, + MLX5_NVPRT_LIST_TYPE_UC); + } + + if (vport->enabled_events & MC_ADDR_CHANGE) { + esw_update_vport_addr_list(esw, vport->vport, + MLX5_NVPRT_LIST_TYPE_MC); + esw_apply_vport_addr_list(esw, vport->vport, + MLX5_NVPRT_LIST_TYPE_MC); + } + + esw_debug(esw->dev, "vport[%d] Context Changed: Done\n", vport->vport); + if (vport->enabled) + arm_vport_context_events_cmd(dev, vport->vport, + vport->enabled_events); +} + +static void esw_enable_vport(struct mlx5_eswitch *esw, int vport_num, + int enable_events) +{ + struct mlx5_vport *vport = &esw->vports[vport_num]; + unsigned long flags; + + WARN_ON(vport->enabled); + + esw_debug(esw->dev, "Enabling VPORT(%d)\n", vport_num); + mlx5_modify_vport_admin_state(esw->dev, + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, + vport_num, + MLX5_ESW_VPORT_ADMIN_STATE_AUTO); + + /* Sync with current vport context */ + vport->enabled_events = enable_events; + esw_vport_change_handler(&vport->vport_change_handler); + + spin_lock_irqsave(&vport->lock, flags); + vport->enabled = true; + spin_unlock_irqrestore(&vport->lock, flags); + + arm_vport_context_events_cmd(esw->dev, vport_num, enable_events); + + esw->enabled_vports++; + esw_debug(esw->dev, "Enabled VPORT(%d)\n", vport_num); +} + +static void esw_cleanup_vport(struct mlx5_eswitch *esw, u16 vport_num) +{ + struct mlx5_vport *vport = &esw->vports[vport_num]; + struct l2addr_node *node; + struct vport_addr *addr; + struct hlist_node *tmp; + int hi; + + for_each_l2hash_node(node, tmp, vport->uc_list, hi) { + addr = container_of(node, struct vport_addr, node); + addr->action = MLX5_ACTION_DEL; + } + esw_apply_vport_addr_list(esw, vport_num, MLX5_NVPRT_LIST_TYPE_UC); + + for_each_l2hash_node(node, tmp, vport->mc_list, hi) { + addr = container_of(node, struct vport_addr, node); + addr->action = MLX5_ACTION_DEL; + } + esw_apply_vport_addr_list(esw, vport_num, MLX5_NVPRT_LIST_TYPE_MC); +} + +static void esw_disable_vport(struct mlx5_eswitch *esw, int vport_num) +{ + struct mlx5_vport *vport = &esw->vports[vport_num]; + unsigned long flags; + + if (!vport->enabled) + return; + + esw_debug(esw->dev, "Disabling vport(%d)\n", vport_num); + /* Mark this vport as disabled to discard new events */ + spin_lock_irqsave(&vport->lock, flags); + vport->enabled = false; + vport->enabled_events = 0; + spin_unlock_irqrestore(&vport->lock, flags); + + mlx5_modify_vport_admin_state(esw->dev, + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, + vport_num, + MLX5_ESW_VPORT_ADMIN_STATE_DOWN); + /* Wait for current already scheduled events to complete */ + flush_workqueue(esw->work_queue); + /* Disable events from this vport */ + arm_vport_context_events_cmd(esw->dev, vport->vport, 0); + /* We don't assume VFs will cleanup after themselves */ + esw_cleanup_vport(esw, vport_num); + esw->enabled_vports--; +} + +/* Public E-Switch API */ +int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs) +{ + int err; + int i; + + if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) || + MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH) + return 0; + + if (!MLX5_CAP_GEN(esw->dev, eswitch_flow_table) || + !MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, ft_support)) { + esw_warn(esw->dev, "E-Switch FDB is not supported, aborting ...\n"); + return -ENOTSUPP; + } + + esw_info(esw->dev, "E-Switch enable SRIOV: nvfs(%d)\n", nvfs); + + esw_disable_vport(esw, 0); + + err = esw_create_fdb_table(esw, nvfs + 1); + if (err) + goto abort; + + for (i = 0; i <= nvfs; i++) + esw_enable_vport(esw, i, SRIOV_VPORT_EVENTS); + + esw_info(esw->dev, "SRIOV enabled: active vports(%d)\n", + esw->enabled_vports); + return 0; + +abort: + esw_enable_vport(esw, 0, UC_ADDR_CHANGE); + return err; +} + +void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw) +{ + int i; + + if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) || + MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH) + return; + + esw_info(esw->dev, "disable SRIOV: active vports(%d)\n", + esw->enabled_vports); + + for (i = 0; i < esw->total_vports; i++) + esw_disable_vport(esw, i); + + esw_destroy_fdb_table(esw); + + /* VPORT 0 (PF) must be enabled back with non-sriov configuration */ + esw_enable_vport(esw, 0, UC_ADDR_CHANGE); +} + +int mlx5_eswitch_init(struct mlx5_core_dev *dev) +{ + int l2_table_size = 1 << MLX5_CAP_GEN(dev, log_max_l2_table); + int total_vports = 1 + pci_sriov_get_totalvfs(dev->pdev); + struct mlx5_eswitch *esw; + int vport_num; + int err; + + if (!MLX5_CAP_GEN(dev, vport_group_manager) || + MLX5_CAP_GEN(dev, port_type) != MLX5_CAP_PORT_TYPE_ETH) + return 0; + + esw_info(dev, + "Total vports %d, l2 table size(%d), per vport: max uc(%d) max mc(%d)\n", + total_vports, l2_table_size, + MLX5_MAX_UC_PER_VPORT(dev), + MLX5_MAX_MC_PER_VPORT(dev)); + + esw = kzalloc(sizeof(*esw), GFP_KERNEL); + if (!esw) + return -ENOMEM; + + esw->dev = dev; + + esw->l2_table.bitmap = kcalloc(BITS_TO_LONGS(l2_table_size), + sizeof(uintptr_t), GFP_KERNEL); + if (!esw->l2_table.bitmap) { + err = -ENOMEM; + goto abort; + } + esw->l2_table.size = l2_table_size; + + esw->work_queue = create_singlethread_workqueue("mlx5_esw_wq"); + if (!esw->work_queue) { + err = -ENOMEM; + goto abort; + } + + esw->vports = kcalloc(total_vports, sizeof(struct mlx5_vport), + GFP_KERNEL); + if (!esw->vports) { + err = -ENOMEM; + goto abort; + } + + for (vport_num = 0; vport_num < total_vports; vport_num++) { + struct mlx5_vport *vport = &esw->vports[vport_num]; + + vport->vport = vport_num; + vport->dev = dev; + INIT_WORK(&vport->vport_change_handler, + esw_vport_change_handler); + spin_lock_init(&vport->lock); + } + + esw->total_vports = total_vports; + esw->enabled_vports = 0; + + dev->priv.eswitch = esw; + esw_enable_vport(esw, 0, UC_ADDR_CHANGE); + /* VF Vports will be enabled when SRIOV is enabled */ + return 0; +abort: + if (esw->work_queue) + destroy_workqueue(esw->work_queue); + kfree(esw->l2_table.bitmap); + kfree(esw->vports); + kfree(esw); + return err; +} + +void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw) +{ + if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) || + MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH) + return; + + esw_info(esw->dev, "cleanup\n"); + esw_disable_vport(esw, 0); + + esw->dev->priv.eswitch = NULL; + destroy_workqueue(esw->work_queue); + kfree(esw->l2_table.bitmap); + kfree(esw->vports); + kfree(esw); +} + +void mlx5_eswitch_vport_event(struct mlx5_eswitch *esw, struct mlx5_eqe *eqe) +{ + struct mlx5_eqe_vport_change *vc_eqe = &eqe->data.vport_change; + u16 vport_num = be16_to_cpu(vc_eqe->vport_num); + struct mlx5_vport *vport; + + if (!esw) { + pr_warn("MLX5 E-Switch: vport %d got an event while eswitch is not initialized\n", + vport_num); + return; + } + + vport = &esw->vports[vport_num]; + spin_lock(&vport->lock); + if (vport->enabled) + queue_work(esw->work_queue, &vport->vport_change_handler); + spin_unlock(&vport->lock); +} + +/* Vport Administration */ +#define ESW_ALLOWED(esw) \ + (esw && MLX5_CAP_GEN(esw->dev, vport_group_manager) && mlx5_core_is_pf(esw->dev)) +#define LEGAL_VPORT(esw, vport) (vport >= 0 && vport < esw->total_vports) + +int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw, + int vport, u8 mac[ETH_ALEN]) +{ + int err = 0; + + if (!ESW_ALLOWED(esw)) + return -EPERM; + if (!LEGAL_VPORT(esw, vport)) + return -EINVAL; + + err = mlx5_modify_nic_vport_mac_address(esw->dev, vport, mac); + if (err) { + mlx5_core_warn(esw->dev, + "Failed to mlx5_modify_nic_vport_mac vport(%d) err=(%d)\n", + vport, err); + return err; + } + + return err; +} + +int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw, + int vport, int link_state) +{ + if (!ESW_ALLOWED(esw)) + return -EPERM; + if (!LEGAL_VPORT(esw, vport)) + return -EINVAL; + + return mlx5_modify_vport_admin_state(esw->dev, + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, + vport, link_state); +} + +int mlx5_eswitch_get_vport_config(struct mlx5_eswitch *esw, + int vport, struct ifla_vf_info *ivi) +{ + u16 vlan; + u8 qos; + + if (!ESW_ALLOWED(esw)) + return -EPERM; + if (!LEGAL_VPORT(esw, vport)) + return -EINVAL; + + memset(ivi, 0, sizeof(*ivi)); + ivi->vf = vport - 1; + + mlx5_query_nic_vport_mac_address(esw->dev, vport, ivi->mac); + ivi->linkstate = mlx5_query_vport_admin_state(esw->dev, + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, + vport); + query_esw_vport_cvlan(esw->dev, vport, &vlan, &qos); + ivi->vlan = vlan; + ivi->qos = qos; + ivi->spoofchk = 0; + + return 0; +} + +int mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw, + int vport, u16 vlan, u8 qos) +{ + int set = 0; + + if (!ESW_ALLOWED(esw)) + return -EPERM; + if (!LEGAL_VPORT(esw, vport) || (vlan > 4095) || (qos > 7)) + return -EINVAL; + + if (vlan || qos) + set = 1; + + return modify_esw_vport_cvlan(esw->dev, vport, vlan, qos, set); +} + +int mlx5_eswitch_get_vport_stats(struct mlx5_eswitch *esw, + int vport, + struct ifla_vf_stats *vf_stats) +{ + int outlen = MLX5_ST_SZ_BYTES(query_vport_counter_out); + u32 in[MLX5_ST_SZ_DW(query_vport_counter_in)]; + int err = 0; + u32 *out; + + if (!ESW_ALLOWED(esw)) + return -EPERM; + if (!LEGAL_VPORT(esw, vport)) + return -EINVAL; + + out = mlx5_vzalloc(outlen); + if (!out) + return -ENOMEM; + + memset(in, 0, sizeof(in)); + + MLX5_SET(query_vport_counter_in, in, opcode, + MLX5_CMD_OP_QUERY_VPORT_COUNTER); + MLX5_SET(query_vport_counter_in, in, op_mod, 0); + MLX5_SET(query_vport_counter_in, in, vport_number, vport); + if (vport) + MLX5_SET(query_vport_counter_in, in, other_vport, 1); + + memset(out, 0, outlen); + err = mlx5_cmd_exec(esw->dev, in, sizeof(in), out, outlen); + if (err) + goto free_out; + + #define MLX5_GET_CTR(p, x) \ + MLX5_GET64(query_vport_counter_out, p, x) + + memset(vf_stats, 0, sizeof(*vf_stats)); + vf_stats->rx_packets = + MLX5_GET_CTR(out, received_eth_unicast.packets) + + MLX5_GET_CTR(out, received_eth_multicast.packets) + + MLX5_GET_CTR(out, received_eth_broadcast.packets); + + vf_stats->rx_bytes = + MLX5_GET_CTR(out, received_eth_unicast.octets) + + MLX5_GET_CTR(out, received_eth_multicast.octets) + + MLX5_GET_CTR(out, received_eth_broadcast.octets); + + vf_stats->tx_packets = + MLX5_GET_CTR(out, transmitted_eth_unicast.packets) + + MLX5_GET_CTR(out, transmitted_eth_multicast.packets) + + MLX5_GET_CTR(out, transmitted_eth_broadcast.packets); + + vf_stats->tx_bytes = + MLX5_GET_CTR(out, transmitted_eth_unicast.octets) + + MLX5_GET_CTR(out, transmitted_eth_multicast.octets) + + MLX5_GET_CTR(out, transmitted_eth_broadcast.octets); + + vf_stats->multicast = + MLX5_GET_CTR(out, received_eth_multicast.packets); + + vf_stats->broadcast = + MLX5_GET_CTR(out, received_eth_broadcast.packets); + +free_out: + kvfree(out); + return err; +} --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2015, Mellanox Technologies, Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef __MLX5_ESWITCH_H__ +#define __MLX5_ESWITCH_H__ + +#include +#include +#include + +#define MLX5_MAX_UC_PER_VPORT(dev) \ + (1 << MLX5_CAP_GEN(dev, log_max_current_uc_list)) + +#define MLX5_MAX_MC_PER_VPORT(dev) \ + (1 << MLX5_CAP_GEN(dev, log_max_current_mc_list)) + +#define MLX5_L2_ADDR_HASH_SIZE (BIT(BITS_PER_BYTE)) +#define MLX5_L2_ADDR_HASH(addr) (addr[5]) + +/* L2 -mac address based- hash helpers */ +struct l2addr_node { + struct hlist_node hlist; + u8 addr[ETH_ALEN]; +}; + +#define for_each_l2hash_node(hn, tmp, hash, i) \ + for (i = 0; i < MLX5_L2_ADDR_HASH_SIZE; i++) \ + hlist_for_each_entry_safe(hn, tmp, &hash[i], hlist) + +#define l2addr_hash_find(hash, mac, type) ({ \ + int ix = MLX5_L2_ADDR_HASH(mac); \ + bool found = false; \ + type *ptr = NULL; \ + \ + hlist_for_each_entry(ptr, &hash[ix], node.hlist) \ + if (ether_addr_equal(ptr->node.addr, mac)) {\ + found = true; \ + break; \ + } \ + if (!found) \ + ptr = NULL; \ + ptr; \ +}) + +#define l2addr_hash_add(hash, mac, type, gfp) ({ \ + int ix = MLX5_L2_ADDR_HASH(mac); \ + type *ptr = NULL; \ + \ + ptr = kzalloc(sizeof(type), gfp); \ + if (ptr) { \ + ether_addr_copy(ptr->node.addr, mac); \ + hlist_add_head(&ptr->node.hlist, &hash[ix]);\ + } \ + ptr; \ +}) + +#define l2addr_hash_del(ptr) ({ \ + hlist_del(&ptr->node.hlist); \ + kfree(ptr); \ +}) + +struct mlx5_flow_rule { + void *ft; + u32 fi; + u8 match_criteria_enable; + u32 *match_criteria; + u32 *match_value; + u32 action; + u32 flow_tag; + bool valid; + atomic_t refcount; + struct mutex mutex; /* protect flow rule updates */ + struct list_head dest_list; +}; + +struct mlx5_vport { + struct mlx5_core_dev *dev; + int vport; + struct hlist_head uc_list[MLX5_L2_ADDR_HASH_SIZE]; + struct hlist_head mc_list[MLX5_L2_ADDR_HASH_SIZE]; + struct work_struct vport_change_handler; + + /* This spinlock protects access to vport data, between + * "esw_vport_disable" and ongoing interrupt "mlx5_eswitch_vport_event" + * once vport marked as disabled new interrupts are discarded. + */ + spinlock_t lock; /* vport events sync */ + bool enabled; + u16 enabled_events; +}; + +struct mlx5_l2_table { + struct hlist_head l2_hash[MLX5_L2_ADDR_HASH_SIZE]; + u32 size; + unsigned long *bitmap; +}; + +struct mlx5_eswitch_fdb { + void *fdb; +}; + +struct mlx5_eswitch { + struct mlx5_core_dev *dev; + struct mlx5_l2_table l2_table; + struct mlx5_eswitch_fdb fdb_table; + struct hlist_head mc_table[MLX5_L2_ADDR_HASH_SIZE]; + struct workqueue_struct *work_queue; + struct mlx5_vport *vports; + int total_vports; + int enabled_vports; +}; + +/* E-Switch API */ +int mlx5_eswitch_init(struct mlx5_core_dev *dev); +void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw); +void mlx5_eswitch_vport_event(struct mlx5_eswitch *esw, struct mlx5_eqe *eqe); +int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs); +void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw); +int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw, + int vport, u8 mac[ETH_ALEN]); +int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw, + int vport, int link_state); +int mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw, + int vport, u16 vlan, u8 qos); +int mlx5_eswitch_get_vport_config(struct mlx5_eswitch *esw, + int vport, struct ifla_vf_info *ivi); +int mlx5_eswitch_get_vport_stats(struct mlx5_eswitch *esw, + int vport, + struct ifla_vf_stats *vf_stats); + +#endif /* __MLX5_ESWITCH_H__ */ --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/fw.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/fw.c @@ -160,6 +160,30 @@ if (err) return err; } + + if (MLX5_CAP_GEN(dev, vport_group_manager) && + MLX5_CAP_GEN(dev, eswitch_flow_table)) { + err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH_FLOW_TABLE, + HCA_CAP_OPMOD_GET_CUR); + if (err) + return err; + err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH_FLOW_TABLE, + HCA_CAP_OPMOD_GET_MAX); + if (err) + return err; + } + + if (MLX5_CAP_GEN(dev, eswitch_flow_table)) { + err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH, + HCA_CAP_OPMOD_GET_CUR); + if (err) + return err; + err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH, + HCA_CAP_OPMOD_GET_MAX); + if (err) + return err; + } + return 0; } --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -49,6 +49,9 @@ #include #include #include "mlx5_core.h" +#ifdef CONFIG_MLX5_CORE_EN +#include "eswitch.h" +#endif MODULE_AUTHOR("Eli Cohen "); MODULE_DESCRIPTION("Mellanox Connect-IB, ConnectX-4 core driver"); @@ -454,6 +457,9 @@ struct mlx5_reg_host_endianess he_out; int err; + if (!mlx5_core_is_pf(dev)) + return 0; + memset(&he_in, 0, sizeof(he_in)); he_in.he = MLX5_SET_HOST_ENDIANNESS; err = mlx5_core_access_reg(dev, &he_in, sizeof(he_in), @@ -462,42 +468,39 @@ return err; } -static int mlx5_core_enable_hca(struct mlx5_core_dev *dev) +int mlx5_core_enable_hca(struct mlx5_core_dev *dev, u16 func_id) { + u32 out[MLX5_ST_SZ_DW(enable_hca_out)]; + u32 in[MLX5_ST_SZ_DW(enable_hca_in)]; int err; - struct mlx5_enable_hca_mbox_in in; - struct mlx5_enable_hca_mbox_out out; - memset(&in, 0, sizeof(in)); - memset(&out, 0, sizeof(out)); - in.hdr.opcode = cpu_to_be16(MLX5_CMD_OP_ENABLE_HCA); + memset(in, 0, sizeof(in)); + MLX5_SET(enable_hca_in, in, opcode, MLX5_CMD_OP_ENABLE_HCA); + MLX5_SET(enable_hca_in, in, function_id, func_id); + memset(out, 0, sizeof(out)); + err = mlx5_cmd_exec(dev, &in, sizeof(in), &out, sizeof(out)); if (err) return err; - if (out.hdr.status) - return mlx5_cmd_status_to_err(&out.hdr); - - return 0; + return mlx5_cmd_status_to_err_v2(out); } -static int mlx5_core_disable_hca(struct mlx5_core_dev *dev) +int mlx5_core_disable_hca(struct mlx5_core_dev *dev, u16 func_id) { + u32 out[MLX5_ST_SZ_DW(disable_hca_out)]; + u32 in[MLX5_ST_SZ_DW(disable_hca_in)]; int err; - struct mlx5_disable_hca_mbox_in in; - struct mlx5_disable_hca_mbox_out out; - memset(&in, 0, sizeof(in)); - memset(&out, 0, sizeof(out)); - in.hdr.opcode = cpu_to_be16(MLX5_CMD_OP_DISABLE_HCA); - err = mlx5_cmd_exec(dev, &in, sizeof(in), &out, sizeof(out)); + memset(in, 0, sizeof(in)); + MLX5_SET(disable_hca_in, in, opcode, MLX5_CMD_OP_DISABLE_HCA); + MLX5_SET(disable_hca_in, in, function_id, func_id); + memset(out, 0, sizeof(out)); + err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); if (err) return err; - if (out.hdr.status) - return mlx5_cmd_status_to_err(&out.hdr); - - return 0; + return mlx5_cmd_status_to_err_v2(out); } static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i) @@ -568,7 +571,8 @@ mlx5_irq_clear_affinity_hint(mdev, i); } -int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, int *irqn) +int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, + unsigned int *irqn) { struct mlx5_eq_table *table = &dev->priv.eq_table; struct mlx5_eq *eq, *n; @@ -942,7 +946,7 @@ mlx5_pagealloc_init(dev); - err = mlx5_core_enable_hca(dev); + err = mlx5_core_enable_hca(dev, 0); if (err) { dev_err(&pdev->dev, "enable hca failed\n"); goto err_pagealloc_cleanup; @@ -1052,6 +1056,20 @@ mlx5_init_srq_table(dev); mlx5_init_mr_table(dev); +#ifdef CONFIG_MLX5_CORE_EN + err = mlx5_eswitch_init(dev); + if (err) { + dev_err(&pdev->dev, "eswitch init failed %d\n", err); + goto err_reg_dev; + } +#endif + + err = mlx5_sriov_init(dev); + if (err) { + dev_err(&pdev->dev, "sriov init failed %d\n", err); + goto err_sriov; + } + err = mlx5_register_device(dev); if (err) { dev_err(&pdev->dev, "mlx5_register_device failed %d\n", err); @@ -1068,6 +1086,13 @@ return 0; +err_sriov: + if (mlx5_sriov_cleanup(dev)) + dev_err(&dev->pdev->dev, "sriov cleanup failed\n"); + +#ifdef CONFIG_MLX5_CORE_EN + mlx5_eswitch_cleanup(dev->priv.eswitch); +#endif err_reg_dev: mlx5_cleanup_mr_table(dev); mlx5_cleanup_srq_table(dev); @@ -1106,7 +1131,7 @@ mlx5_reclaim_startup_pages(dev); err_disable_hca: - mlx5_core_disable_hca(dev); + mlx5_core_disable_hca(dev, 0); err_pagealloc_cleanup: mlx5_pagealloc_cleanup(dev); @@ -1123,6 +1148,13 @@ { int err = 0; + err = mlx5_sriov_cleanup(dev); + if (err) { + dev_warn(&dev->pdev->dev, "%s: sriov cleanup failed - abort\n", + __func__); + return err; + } + mutex_lock(&dev->intf_state_mutex); if (dev->interface_state == MLX5_INTERFACE_STATE_DOWN) { dev_warn(&dev->pdev->dev, "%s: interface is down, NOP\n", @@ -1130,6 +1162,10 @@ goto out; } mlx5_unregister_device(dev); +#ifdef CONFIG_MLX5_CORE_EN + mlx5_eswitch_cleanup(dev->priv.eswitch); +#endif + mlx5_cleanup_mr_table(dev); mlx5_cleanup_srq_table(dev); mlx5_cleanup_qp_table(dev); @@ -1149,7 +1185,7 @@ } mlx5_pagealloc_stop(dev); mlx5_reclaim_startup_pages(dev); - mlx5_core_disable_hca(dev); + mlx5_core_disable_hca(dev, 0); mlx5_pagealloc_cleanup(dev); mlx5_cmd_cleanup(dev); @@ -1195,6 +1231,7 @@ return -ENOMEM; } priv = &dev->priv; + priv->pci_dev_data = id->driver_data; pci_set_drvdata(pdev, dev); @@ -1365,12 +1402,12 @@ }; static const struct pci_device_id mlx5_core_pci_table[] = { - { PCI_VDEVICE(MELLANOX, 0x1011) }, /* Connect-IB */ - { PCI_VDEVICE(MELLANOX, 0x1012) }, /* Connect-IB VF */ - { PCI_VDEVICE(MELLANOX, 0x1013) }, /* ConnectX-4 */ - { PCI_VDEVICE(MELLANOX, 0x1014) }, /* ConnectX-4 VF */ - { PCI_VDEVICE(MELLANOX, 0x1015) }, /* ConnectX-4LX */ - { PCI_VDEVICE(MELLANOX, 0x1016) }, /* ConnectX-4LX VF */ + { PCI_VDEVICE(MELLANOX, 0x1011) }, /* Connect-IB */ + { PCI_VDEVICE(MELLANOX, 0x1012), MLX5_PCI_DEV_IS_VF}, /* Connect-IB VF */ + { PCI_VDEVICE(MELLANOX, 0x1013) }, /* ConnectX-4 */ + { PCI_VDEVICE(MELLANOX, 0x1014), MLX5_PCI_DEV_IS_VF}, /* ConnectX-4 VF */ + { PCI_VDEVICE(MELLANOX, 0x1015) }, /* ConnectX-4LX */ + { PCI_VDEVICE(MELLANOX, 0x1016), MLX5_PCI_DEV_IS_VF}, /* ConnectX-4LX VF */ { 0, } }; @@ -1381,7 +1418,8 @@ .id_table = mlx5_core_pci_table, .probe = init_one, .remove = remove_one, - .err_handler = &mlx5_err_handler + .err_handler = &mlx5_err_handler, + .sriov_configure = mlx5_core_sriov_configure, }; static int __init init(void) --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h @@ -36,6 +36,7 @@ #include #include #include +#include #define DRIVER_NAME "mlx5_core" #define DRIVER_VERSION "3.0-1" @@ -64,6 +65,9 @@ (__dev)->priv.name, __func__, __LINE__, current->pid, \ ##__VA_ARGS__) +#define mlx5_core_info(__dev, format, ...) \ + dev_info(&(__dev)->pdev->dev, format, ##__VA_ARGS__) + enum { MLX5_CMD_DATA, /* print command payload only */ MLX5_CMD_TIME, /* print command execution time */ @@ -90,6 +94,10 @@ unsigned long param); void mlx5_enter_error_state(struct mlx5_core_dev *dev); void mlx5_disable_device(struct mlx5_core_dev *dev); +int mlx5_core_sriov_configure(struct pci_dev *dev, int num_vfs); +int mlx5_core_enable_hca(struct mlx5_core_dev *dev, u16 func_id); +int mlx5_core_disable_hca(struct mlx5_core_dev *dev, u16 func_id); +int mlx5_wait_for_vf_pages(struct mlx5_core_dev *dev); void mlx5e_init(void); void mlx5e_cleanup(void); --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include "mlx5_core.h" @@ -95,6 +96,7 @@ enum { MAX_RECLAIM_TIME_MSECS = 5000, + MAX_RECLAIM_VFS_PAGES_TIME_MSECS = 2 * 1000 * 60, }; enum { @@ -352,6 +354,10 @@ goto out_4k; } + dev->priv.fw_pages += npages; + if (func_id) + dev->priv.vfs_pages += npages; + mlx5_core_dbg(dev, "err %d\n", err); kvfree(in); @@ -405,6 +411,12 @@ } num_claimed = be32_to_cpu(out->num_entries); + if (num_claimed > npages) { + mlx5_core_warn(dev, "fw returned %d, driver asked %d => corruption\n", + num_claimed, npages); + err = -EINVAL; + goto out_free; + } if (nclaimed) *nclaimed = num_claimed; @@ -412,6 +424,9 @@ addr = be64_to_cpu(out->pas[i]); free_4k(dev, addr); } + dev->priv.fw_pages -= num_claimed; + if (func_id) + dev->priv.vfs_pages -= num_claimed; out_free: kvfree(out); @@ -548,3 +563,26 @@ { destroy_workqueue(dev->priv.pg_wq); } + +int mlx5_wait_for_vf_pages(struct mlx5_core_dev *dev) +{ + unsigned long end = jiffies + msecs_to_jiffies(MAX_RECLAIM_VFS_PAGES_TIME_MSECS); + int prev_vfs_pages = dev->priv.vfs_pages; + + mlx5_core_dbg(dev, "Waiting for %d pages from %s\n", prev_vfs_pages, + dev->priv.name); + while (dev->priv.vfs_pages) { + if (time_after(jiffies, end)) { + mlx5_core_warn(dev, "aborting while there are %d pending pages\n", dev->priv.vfs_pages); + return -ETIMEDOUT; + } + if (dev->priv.vfs_pages < prev_vfs_pages) { + end = jiffies + msecs_to_jiffies(MAX_RECLAIM_VFS_PAGES_TIME_MSECS); + prev_vfs_pages = dev->priv.vfs_pages; + } + msleep(50); + } + + mlx5_core_dbg(dev, "All pages received from %s\n", dev->priv.name); + return 0; +} --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/sriov.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/sriov.c @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2014, Mellanox Technologies inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include "mlx5_core.h" +#ifdef CONFIG_MLX5_CORE_EN +#include "eswitch.h" +#endif + +static void enable_vfs(struct mlx5_core_dev *dev, int num_vfs) +{ + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + int err; + int vf; + + for (vf = 1; vf <= num_vfs; vf++) { + err = mlx5_core_enable_hca(dev, vf); + if (err) { + mlx5_core_warn(dev, "failed to enable VF %d\n", vf - 1); + } else { + sriov->vfs_ctx[vf - 1].enabled = 1; + mlx5_core_dbg(dev, "successfully enabled VF %d\n", vf - 1); + } + } +} + +static void disable_vfs(struct mlx5_core_dev *dev, int num_vfs) +{ + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + int vf; + + for (vf = 1; vf <= num_vfs; vf++) { + if (sriov->vfs_ctx[vf - 1].enabled) { + if (mlx5_core_disable_hca(dev, vf)) + mlx5_core_warn(dev, "failed to disable VF %d\n", vf - 1); + else + sriov->vfs_ctx[vf - 1].enabled = 0; + } + } +} + +static int mlx5_core_create_vfs(struct pci_dev *pdev, int num_vfs) +{ + struct mlx5_core_dev *dev = pci_get_drvdata(pdev); + int err; + + if (pci_num_vf(pdev)) + pci_disable_sriov(pdev); + + enable_vfs(dev, num_vfs); + + err = pci_enable_sriov(pdev, num_vfs); + if (err) { + dev_warn(&pdev->dev, "enable sriov failed %d\n", err); + goto ex; + } + + return 0; + +ex: + disable_vfs(dev, num_vfs); + return err; +} + +static int mlx5_core_sriov_enable(struct pci_dev *pdev, int num_vfs) +{ + struct mlx5_core_dev *dev = pci_get_drvdata(pdev); + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + int err; + + kfree(sriov->vfs_ctx); + sriov->vfs_ctx = kcalloc(num_vfs, sizeof(*sriov->vfs_ctx), GFP_ATOMIC); + if (!sriov->vfs_ctx) + return -ENOMEM; + + sriov->enabled_vfs = num_vfs; + err = mlx5_core_create_vfs(pdev, num_vfs); + if (err) { + kfree(sriov->vfs_ctx); + sriov->vfs_ctx = NULL; + return err; + } + + return 0; +} + +static void mlx5_core_init_vfs(struct mlx5_core_dev *dev, int num_vfs) +{ + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + + sriov->num_vfs = num_vfs; +} + +static void mlx5_core_cleanup_vfs(struct mlx5_core_dev *dev) +{ + struct mlx5_core_sriov *sriov; + + sriov = &dev->priv.sriov; + disable_vfs(dev, sriov->num_vfs); + + if (mlx5_wait_for_vf_pages(dev)) + mlx5_core_warn(dev, "timeout claiming VFs pages\n"); + + sriov->num_vfs = 0; +} + +int mlx5_core_sriov_configure(struct pci_dev *pdev, int num_vfs) +{ + struct mlx5_core_dev *dev = pci_get_drvdata(pdev); + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + int err; + + mlx5_core_dbg(dev, "requsted num_vfs %d\n", num_vfs); + if (!mlx5_core_is_pf(dev)) + return -EPERM; + + mlx5_core_cleanup_vfs(dev); + + if (!num_vfs) { +#ifdef CONFIG_MLX5_CORE_EN + mlx5_eswitch_disable_sriov(dev->priv.eswitch); +#endif + kfree(sriov->vfs_ctx); + sriov->vfs_ctx = NULL; + if (!pci_vfs_assigned(pdev)) + pci_disable_sriov(pdev); + else + pr_info("unloading PF driver while leaving orphan VFs\n"); + return 0; + } + + err = mlx5_core_sriov_enable(pdev, num_vfs); + if (err) { + dev_warn(&pdev->dev, "mlx5_core_sriov_enable failed %d\n", err); + return err; + } + + mlx5_core_init_vfs(dev, num_vfs); +#ifdef CONFIG_MLX5_CORE_EN + mlx5_eswitch_enable_sriov(dev->priv.eswitch, num_vfs); +#endif + + return num_vfs; +} + +static int sync_required(struct pci_dev *pdev) +{ + struct mlx5_core_dev *dev = pci_get_drvdata(pdev); + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + int cur_vfs = pci_num_vf(pdev); + + if (cur_vfs != sriov->num_vfs) { + pr_info("current VFs %d, registered %d - sync needed\n", cur_vfs, sriov->num_vfs); + return 1; + } + + return 0; +} + +int mlx5_sriov_init(struct mlx5_core_dev *dev) +{ + struct mlx5_core_sriov *sriov = &dev->priv.sriov; + struct pci_dev *pdev = dev->pdev; + int cur_vfs; + + if (!mlx5_core_is_pf(dev)) + return 0; + + if (!sync_required(dev->pdev)) + return 0; + + cur_vfs = pci_num_vf(pdev); + sriov->vfs_ctx = kcalloc(cur_vfs, sizeof(*sriov->vfs_ctx), GFP_KERNEL); + if (!sriov->vfs_ctx) + return -ENOMEM; + + sriov->enabled_vfs = cur_vfs; + + mlx5_core_init_vfs(dev, cur_vfs); +#ifdef CONFIG_MLX5_CORE_EN + if (cur_vfs) + mlx5_eswitch_enable_sriov(dev->priv.eswitch, cur_vfs); +#endif + + enable_vfs(dev, cur_vfs); + + return 0; +} + +int mlx5_sriov_cleanup(struct mlx5_core_dev *dev) +{ + struct pci_dev *pdev = dev->pdev; + int err; + + if (!mlx5_core_is_pf(dev)) + return 0; + + err = mlx5_core_sriov_configure(pdev, 0); + if (err) + return err; + + return 0; +} --- linux-4.4.0.orig/drivers/net/ethernet/mellanox/mlx5/core/vport.c +++ linux-4.4.0/drivers/net/ethernet/mellanox/mlx5/core/vport.c @@ -36,54 +36,399 @@ #include #include "mlx5_core.h" -u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod) +static int _mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, + u16 vport, u32 *out, int outlen) { - u32 in[MLX5_ST_SZ_DW(query_vport_state_in)]; - u32 out[MLX5_ST_SZ_DW(query_vport_state_out)]; int err; + u32 in[MLX5_ST_SZ_DW(query_vport_state_in)]; memset(in, 0, sizeof(in)); MLX5_SET(query_vport_state_in, in, opcode, MLX5_CMD_OP_QUERY_VPORT_STATE); MLX5_SET(query_vport_state_in, in, op_mod, opmod); + MLX5_SET(query_vport_state_in, in, vport_number, vport); + if (vport) + MLX5_SET(query_vport_state_in, in, other_vport, 1); - err = mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, - sizeof(out)); + err = mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, outlen); if (err) mlx5_core_warn(mdev, "MLX5_CMD_OP_QUERY_VPORT_STATE failed\n"); + return err; +} + +u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport) +{ + u32 out[MLX5_ST_SZ_DW(query_vport_state_out)] = {0}; + + _mlx5_query_vport_state(mdev, opmod, vport, out, sizeof(out)); + return MLX5_GET(query_vport_state_out, out, state); } -EXPORT_SYMBOL(mlx5_query_vport_state); +EXPORT_SYMBOL_GPL(mlx5_query_vport_state); + +u8 mlx5_query_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport) +{ + u32 out[MLX5_ST_SZ_DW(query_vport_state_out)] = {0}; + + _mlx5_query_vport_state(mdev, opmod, vport, out, sizeof(out)); + + return MLX5_GET(query_vport_state_out, out, admin_state); +} +EXPORT_SYMBOL(mlx5_query_vport_admin_state); + +int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, + u16 vport, u8 state) +{ + u32 in[MLX5_ST_SZ_DW(modify_vport_state_in)]; + u32 out[MLX5_ST_SZ_DW(modify_vport_state_out)]; + int err; + + memset(in, 0, sizeof(in)); + + MLX5_SET(modify_vport_state_in, in, opcode, + MLX5_CMD_OP_MODIFY_VPORT_STATE); + MLX5_SET(modify_vport_state_in, in, op_mod, opmod); + MLX5_SET(modify_vport_state_in, in, vport_number, vport); + + if (vport) + MLX5_SET(modify_vport_state_in, in, other_vport, 1); + + MLX5_SET(modify_vport_state_in, in, admin_state, state); + + err = mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, + sizeof(out)); + if (err) + mlx5_core_warn(mdev, "MLX5_CMD_OP_MODIFY_VPORT_STATE failed\n"); + + return err; +} +EXPORT_SYMBOL(mlx5_modify_vport_admin_state); + +static int mlx5_query_nic_vport_context(struct mlx5_core_dev *mdev, u16 vport, + u32 *out, int outlen) +{ + u32 in[MLX5_ST_SZ_DW(query_nic_vport_context_in)]; + + memset(in, 0, sizeof(in)); + + MLX5_SET(query_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT); + + MLX5_SET(query_nic_vport_context_in, in, vport_number, vport); + if (vport) + MLX5_SET(query_nic_vport_context_in, in, other_vport, 1); + + return mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, outlen); +} + +static int mlx5_modify_nic_vport_context(struct mlx5_core_dev *mdev, void *in, + int inlen) +{ + u32 out[MLX5_ST_SZ_DW(modify_nic_vport_context_out)]; + + MLX5_SET(modify_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT); + + memset(out, 0, sizeof(out)); + return mlx5_cmd_exec_check_status(mdev, in, inlen, out, sizeof(out)); +} -void mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, u8 *addr) +int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, + u16 vport, u8 *addr) { - u32 in[MLX5_ST_SZ_DW(query_nic_vport_context_in)]; u32 *out; int outlen = MLX5_ST_SZ_BYTES(query_nic_vport_context_out); u8 *out_addr; + int err; out = mlx5_vzalloc(outlen); if (!out) - return; + return -ENOMEM; out_addr = MLX5_ADDR_OF(query_nic_vport_context_out, out, nic_vport_context.permanent_address); + err = mlx5_query_nic_vport_context(mdev, vport, out, outlen); + if (err) + goto out; + + ether_addr_copy(addr, &out_addr[2]); + +out: + kvfree(out); + return err; +} +EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_mac_address); + +int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *mdev, + u16 vport, u8 *addr) +{ + void *in; + int inlen = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in); + int err; + void *nic_vport_ctx; + u8 *perm_mac; + + in = mlx5_vzalloc(inlen); + if (!in) { + mlx5_core_warn(mdev, "failed to allocate inbox\n"); + return -ENOMEM; + } + + MLX5_SET(modify_nic_vport_context_in, in, + field_select.permanent_address, 1); + MLX5_SET(modify_nic_vport_context_in, in, vport_number, vport); + + if (vport) + MLX5_SET(modify_nic_vport_context_in, in, other_vport, 1); + + nic_vport_ctx = MLX5_ADDR_OF(modify_nic_vport_context_in, + in, nic_vport_context); + perm_mac = MLX5_ADDR_OF(nic_vport_context, nic_vport_ctx, + permanent_address); + + ether_addr_copy(&perm_mac[2], addr); + + err = mlx5_modify_nic_vport_context(mdev, in, inlen); + + kvfree(in); + + return err; +} +EXPORT_SYMBOL(mlx5_modify_nic_vport_mac_address); + +int mlx5_query_nic_vport_mac_list(struct mlx5_core_dev *dev, + u32 vport, + enum mlx5_list_type list_type, + u8 addr_list[][ETH_ALEN], + int *list_size) +{ + u32 in[MLX5_ST_SZ_DW(query_nic_vport_context_in)]; + void *nic_vport_ctx; + int max_list_size; + int req_list_size; + int out_sz; + void *out; + int err; + int i; + + req_list_size = *list_size; + + max_list_size = list_type == MLX5_NVPRT_LIST_TYPE_UC ? + 1 << MLX5_CAP_GEN(dev, log_max_current_uc_list) : + 1 << MLX5_CAP_GEN(dev, log_max_current_mc_list); + + if (req_list_size > max_list_size) { + mlx5_core_warn(dev, "Requested list size (%d) > (%d) max_list_size\n", + req_list_size, max_list_size); + req_list_size = max_list_size; + } + + out_sz = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in) + + req_list_size * MLX5_ST_SZ_BYTES(mac_address_layout); + memset(in, 0, sizeof(in)); + out = kzalloc(out_sz, GFP_KERNEL); + if (!out) + return -ENOMEM; MLX5_SET(query_nic_vport_context_in, in, opcode, MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT); + MLX5_SET(query_nic_vport_context_in, in, allowed_list_type, list_type); + MLX5_SET(query_nic_vport_context_in, in, vport_number, vport); - memset(out, 0, outlen); - mlx5_cmd_exec_check_status(mdev, in, sizeof(in), out, outlen); + if (vport) + MLX5_SET(query_nic_vport_context_in, in, other_vport, 1); - ether_addr_copy(addr, &out_addr[2]); + err = mlx5_cmd_exec_check_status(dev, in, sizeof(in), out, out_sz); + if (err) + goto out; - kvfree(out); + nic_vport_ctx = MLX5_ADDR_OF(query_nic_vport_context_out, out, + nic_vport_context); + req_list_size = MLX5_GET(nic_vport_context, nic_vport_ctx, + allowed_list_size); + + *list_size = req_list_size; + for (i = 0; i < req_list_size; i++) { + u8 *mac_addr = MLX5_ADDR_OF(nic_vport_context, + nic_vport_ctx, + current_uc_mac_address[i]) + 2; + ether_addr_copy(addr_list[i], mac_addr); + } +out: + kfree(out); + return err; } -EXPORT_SYMBOL(mlx5_query_nic_vport_mac_address); +EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_mac_list); + +int mlx5_modify_nic_vport_mac_list(struct mlx5_core_dev *dev, + enum mlx5_list_type list_type, + u8 addr_list[][ETH_ALEN], + int list_size) +{ + u32 out[MLX5_ST_SZ_DW(modify_nic_vport_context_out)]; + void *nic_vport_ctx; + int max_list_size; + int in_sz; + void *in; + int err; + int i; + + max_list_size = list_type == MLX5_NVPRT_LIST_TYPE_UC ? + 1 << MLX5_CAP_GEN(dev, log_max_current_uc_list) : + 1 << MLX5_CAP_GEN(dev, log_max_current_mc_list); + + if (list_size > max_list_size) + return -ENOSPC; + + in_sz = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in) + + list_size * MLX5_ST_SZ_BYTES(mac_address_layout); + + memset(out, 0, sizeof(out)); + in = kzalloc(in_sz, GFP_KERNEL); + if (!in) + return -ENOMEM; + + MLX5_SET(modify_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT); + MLX5_SET(modify_nic_vport_context_in, in, + field_select.addresses_list, 1); + + nic_vport_ctx = MLX5_ADDR_OF(modify_nic_vport_context_in, in, + nic_vport_context); + + MLX5_SET(nic_vport_context, nic_vport_ctx, + allowed_list_type, list_type); + MLX5_SET(nic_vport_context, nic_vport_ctx, + allowed_list_size, list_size); + + for (i = 0; i < list_size; i++) { + u8 *curr_mac = MLX5_ADDR_OF(nic_vport_context, + nic_vport_ctx, + current_uc_mac_address[i]) + 2; + ether_addr_copy(curr_mac, addr_list[i]); + } + + err = mlx5_cmd_exec_check_status(dev, in, in_sz, out, sizeof(out)); + kfree(in); + return err; +} +EXPORT_SYMBOL_GPL(mlx5_modify_nic_vport_mac_list); + +int mlx5_query_nic_vport_vlans(struct mlx5_core_dev *dev, + u32 vport, + u16 vlans[], + int *size) +{ + u32 in[MLX5_ST_SZ_DW(query_nic_vport_context_in)]; + void *nic_vport_ctx; + int req_list_size; + int max_list_size; + int out_sz; + void *out; + int err; + int i; + + req_list_size = *size; + max_list_size = 1 << MLX5_CAP_GEN(dev, log_max_vlan_list); + if (req_list_size > max_list_size) { + mlx5_core_warn(dev, "Requested list size (%d) > (%d) max list size\n", + req_list_size, max_list_size); + req_list_size = max_list_size; + } + + out_sz = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in) + + req_list_size * MLX5_ST_SZ_BYTES(vlan_layout); + + memset(in, 0, sizeof(in)); + out = kzalloc(out_sz, GFP_KERNEL); + if (!out) + return -ENOMEM; + + MLX5_SET(query_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT); + MLX5_SET(query_nic_vport_context_in, in, allowed_list_type, + MLX5_NVPRT_LIST_TYPE_VLAN); + MLX5_SET(query_nic_vport_context_in, in, vport_number, vport); + + if (vport) + MLX5_SET(query_nic_vport_context_in, in, other_vport, 1); + + err = mlx5_cmd_exec_check_status(dev, in, sizeof(in), out, out_sz); + if (err) + goto out; + + nic_vport_ctx = MLX5_ADDR_OF(query_nic_vport_context_out, out, + nic_vport_context); + req_list_size = MLX5_GET(nic_vport_context, nic_vport_ctx, + allowed_list_size); + + *size = req_list_size; + for (i = 0; i < req_list_size; i++) { + void *vlan_addr = MLX5_ADDR_OF(nic_vport_context, + nic_vport_ctx, + current_uc_mac_address[i]); + vlans[i] = MLX5_GET(vlan_layout, vlan_addr, vlan); + } +out: + kfree(out); + return err; +} +EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_vlans); + +int mlx5_modify_nic_vport_vlans(struct mlx5_core_dev *dev, + u16 vlans[], + int list_size) +{ + u32 out[MLX5_ST_SZ_DW(modify_nic_vport_context_out)]; + void *nic_vport_ctx; + int max_list_size; + int in_sz; + void *in; + int err; + int i; + + max_list_size = 1 << MLX5_CAP_GEN(dev, log_max_vlan_list); + + if (list_size > max_list_size) + return -ENOSPC; + + in_sz = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in) + + list_size * MLX5_ST_SZ_BYTES(vlan_layout); + + memset(out, 0, sizeof(out)); + in = kzalloc(in_sz, GFP_KERNEL); + if (!in) + return -ENOMEM; + + MLX5_SET(modify_nic_vport_context_in, in, opcode, + MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT); + MLX5_SET(modify_nic_vport_context_in, in, + field_select.addresses_list, 1); + + nic_vport_ctx = MLX5_ADDR_OF(modify_nic_vport_context_in, in, + nic_vport_context); + + MLX5_SET(nic_vport_context, nic_vport_ctx, + allowed_list_type, MLX5_NVPRT_LIST_TYPE_VLAN); + MLX5_SET(nic_vport_context, nic_vport_ctx, + allowed_list_size, list_size); + + for (i = 0; i < list_size; i++) { + void *vlan_addr = MLX5_ADDR_OF(nic_vport_context, + nic_vport_ctx, + current_uc_mac_address[i]); + MLX5_SET(vlan_layout, vlan_addr, vlan, vlans[i]); + } + + err = mlx5_cmd_exec_check_status(dev, in, in_sz, out, sizeof(out)); + kfree(in); + return err; +} +EXPORT_SYMBOL_GPL(mlx5_modify_nic_vport_vlans); int mlx5_query_hca_vport_gid(struct mlx5_core_dev *dev, u8 other_vport, u8 port_num, u16 vf_num, u16 gid_index, @@ -343,3 +688,65 @@ return err; } EXPORT_SYMBOL_GPL(mlx5_query_hca_vport_node_guid); + +int mlx5_query_nic_vport_promisc(struct mlx5_core_dev *mdev, + u32 vport, + int *promisc_uc, + int *promisc_mc, + int *promisc_all) +{ + u32 *out; + int outlen = MLX5_ST_SZ_BYTES(query_nic_vport_context_out); + int err; + + out = kzalloc(outlen, GFP_KERNEL); + if (!out) + return -ENOMEM; + + err = mlx5_query_nic_vport_context(mdev, vport, out, outlen); + if (err) + goto out; + + *promisc_uc = MLX5_GET(query_nic_vport_context_out, out, + nic_vport_context.promisc_uc); + *promisc_mc = MLX5_GET(query_nic_vport_context_out, out, + nic_vport_context.promisc_mc); + *promisc_all = MLX5_GET(query_nic_vport_context_out, out, + nic_vport_context.promisc_all); + +out: + kfree(out); + return err; +} +EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_promisc); + +int mlx5_modify_nic_vport_promisc(struct mlx5_core_dev *mdev, + int promisc_uc, + int promisc_mc, + int promisc_all) +{ + void *in; + int inlen = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in); + int err; + + in = mlx5_vzalloc(inlen); + if (!in) { + mlx5_core_err(mdev, "failed to allocate inbox\n"); + return -ENOMEM; + } + + MLX5_SET(modify_nic_vport_context_in, in, field_select.promisc, 1); + MLX5_SET(modify_nic_vport_context_in, in, + nic_vport_context.promisc_uc, promisc_uc); + MLX5_SET(modify_nic_vport_context_in, in, + nic_vport_context.promisc_mc, promisc_mc); + MLX5_SET(modify_nic_vport_context_in, in, + nic_vport_context.promisc_all, promisc_all); + + err = mlx5_modify_nic_vport_context(mdev, in, inlen); + + kvfree(in); + + return err; +} +EXPORT_SYMBOL_GPL(mlx5_modify_nic_vport_promisc); --- linux-4.4.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-4.4.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4219,6 +4219,9 @@ return ret; } +#define VXGE_PXE_FIRMWARE "vxge/X3fw-pxe.ncf" +#define VXGE_FIRMWARE "vxge/X3fw.ncf" + static int vxge_probe_fw_update(struct vxgedev *vdev) { u32 maj, min, bld; @@ -4261,9 +4264,9 @@ } } if (gpxe) - fw_name = "vxge/X3fw-pxe.ncf"; + fw_name = VXGE_PXE_FIRMWARE; else - fw_name = "vxge/X3fw.ncf"; + fw_name = VXGE_FIRMWARE; ret = vxge_fw_upgrade(vdev, fw_name, 0); /* -EINVAL and -ENOENT are not fatal errors for flashing firmware on @@ -4868,3 +4871,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-4.4.0.orig/drivers/net/ethernet/synopsys/dwc_eth_qos.c +++ linux-4.4.0/drivers/net/ethernet/synopsys/dwc_eth_qos.c @@ -2107,7 +2107,7 @@ dd = &lp->tx_descs[lp->tx_next]; /* Set DMA Descriptor fields */ - dd->des0 = dma_handle; + dd->des0 = dma_handle + consumed_size; dd->des1 = 0; dd->des2 = dma_size; --- linux-4.4.0.orig/drivers/net/geneve.c +++ linux-4.4.0/drivers/net/geneve.c @@ -71,8 +71,14 @@ __be16 dst_port; bool collect_md; struct gro_cells gro_cells; + u32 flags; }; +/* Geneve device flags */ +#define GENEVE_F_UDP_CSUM BIT(0) +#define GENEVE_F_UDP_ZERO_CSUM6_TX BIT(1) +#define GENEVE_F_UDP_ZERO_CSUM6_RX BIT(2) + struct geneve_sock { bool collect_md; struct list_head list; @@ -81,6 +87,7 @@ int refcnt; struct udp_offload udp_offloads; struct hlist_head vni_list[VNI_HASH_SIZE]; + u32 flags; }; static inline __u32 geneve_net_vni_hash(u8 vni[3]) @@ -343,7 +350,7 @@ } static struct socket *geneve_create_sock(struct net *net, bool ipv6, - __be16 port) + __be16 port, u32 flags) { struct socket *sock; struct udp_port_cfg udp_conf; @@ -354,6 +361,8 @@ if (ipv6) { udp_conf.family = AF_INET6; udp_conf.ipv6_v6only = 1; + udp_conf.use_udp6_rx_checksums = + !(flags & GENEVE_F_UDP_ZERO_CSUM6_RX); } else { udp_conf.family = AF_INET; udp_conf.local_ip.s_addr = htonl(INADDR_ANY); @@ -371,8 +380,11 @@ static void geneve_notify_add_rx_port(struct geneve_sock *gs) { + struct net_device *dev; struct sock *sk = gs->sock->sk; + struct net *net = sock_net(sk); sa_family_t sa_family = sk->sk_family; + __be16 port = inet_sk(sk)->inet_sport; int err; if (sa_family == AF_INET) { @@ -381,6 +393,14 @@ pr_warn("geneve: udp_add_offload failed with status %d\n", err); } + + rcu_read_lock(); + for_each_netdev_rcu(net, dev) { + if (dev->netdev_ops->ndo_add_geneve_port) + dev->netdev_ops->ndo_add_geneve_port(dev, sa_family, + port); + } + rcu_read_unlock(); } static int geneve_hlen(struct genevehdr *gh) @@ -480,7 +500,7 @@ /* Create new listen socket if needed */ static struct geneve_sock *geneve_socket_create(struct net *net, __be16 port, - bool ipv6) + bool ipv6, u32 flags) { struct geneve_net *gn = net_generic(net, geneve_net_id); struct geneve_sock *gs; @@ -492,7 +512,7 @@ if (!gs) return ERR_PTR(-ENOMEM); - sock = geneve_create_sock(net, ipv6, port); + sock = geneve_create_sock(net, ipv6, port, flags); if (IS_ERR(sock)) { kfree(gs); return ERR_CAST(sock); @@ -521,8 +541,20 @@ static void geneve_notify_del_rx_port(struct geneve_sock *gs) { + struct net_device *dev; struct sock *sk = gs->sock->sk; + struct net *net = sock_net(sk); sa_family_t sa_family = sk->sk_family; + __be16 port = inet_sk(sk)->inet_sport; + + rcu_read_lock(); + for_each_netdev_rcu(net, dev) { + if (dev->netdev_ops->ndo_del_geneve_port) + dev->netdev_ops->ndo_del_geneve_port(dev, sa_family, + port); + } + + rcu_read_unlock(); if (sa_family == AF_INET) udp_del_offload(&gs->udp_offloads); @@ -575,12 +607,13 @@ goto out; } - gs = geneve_socket_create(net, geneve->dst_port, ipv6); + gs = geneve_socket_create(net, geneve->dst_port, ipv6, geneve->flags); if (IS_ERR(gs)) return PTR_ERR(gs); out: gs->collect_md = geneve->collect_md; + gs->flags = geneve->flags; #if IS_ENABLED(CONFIG_IPV6) if (ipv6) geneve->sock6 = gs; @@ -642,11 +675,12 @@ static int geneve_build_skb(struct rtable *rt, struct sk_buff *skb, __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt, - bool csum, bool xnet) + u32 flags, bool xnet) { struct genevehdr *gnvh; int min_headroom; int err; + bool udp_sum = !!(flags & GENEVE_F_UDP_CSUM); skb_scrub_packet(skb, xnet); @@ -658,7 +692,7 @@ goto free_rt; } - skb = udp_tunnel_handle_offloads(skb, csum); + skb = udp_tunnel_handle_offloads(skb, udp_sum); if (IS_ERR(skb)) { err = PTR_ERR(skb); goto free_rt; @@ -678,11 +712,12 @@ #if IS_ENABLED(CONFIG_IPV6) static int geneve6_build_skb(struct dst_entry *dst, struct sk_buff *skb, __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt, - bool csum, bool xnet) + u32 flags, bool xnet) { struct genevehdr *gnvh; int min_headroom; int err; + bool udp_sum = !(flags & GENEVE_F_UDP_ZERO_CSUM6_TX); skb_scrub_packet(skb, xnet); @@ -694,7 +729,7 @@ goto free_dst; } - skb = udp_tunnel_handle_offloads(skb, csum); + skb = udp_tunnel_handle_offloads(skb, udp_sum); if (IS_ERR(skb)) { err = PTR_ERR(skb); goto free_dst; @@ -824,9 +859,9 @@ struct flowi4 fl4; __u8 tos, ttl; __be16 sport; - bool udp_csum; __be16 df; bool xnet = !net_eq(geneve->net, dev_net(geneve->dev)); + u32 flags = geneve->flags; if (geneve->collect_md) { if (unlikely(!info || !(info->mode & IP_TUNNEL_INFO_TX))) { @@ -857,9 +892,13 @@ if (key->tun_flags & TUNNEL_GENEVE_OPT) opts = ip_tunnel_info_opts(info); - udp_csum = !!(key->tun_flags & TUNNEL_CSUM); + if (key->tun_flags & TUNNEL_CSUM) + flags |= GENEVE_F_UDP_CSUM; + else + flags &= ~GENEVE_F_UDP_CSUM; + err = geneve_build_skb(rt, skb, key->tun_flags, vni, - info->options_len, opts, udp_csum, xnet); + info->options_len, opts, flags, xnet); if (unlikely(err)) goto err; @@ -867,9 +906,8 @@ ttl = key->ttl; df = key->tun_flags & TUNNEL_DONT_FRAGMENT ? htons(IP_DF) : 0; } else { - udp_csum = false; err = geneve_build_skb(rt, skb, 0, geneve->vni, - 0, NULL, udp_csum, xnet); + 0, NULL, flags, xnet); if (unlikely(err)) goto err; @@ -883,7 +921,7 @@ err = udp_tunnel_xmit_skb(rt, gs4->sock->sk, skb, fl4.saddr, fl4.daddr, tos, ttl, df, sport, geneve->dst_port, !net_eq(geneve->net, dev_net(geneve->dev)), - !udp_csum); + !(flags & GENEVE_F_UDP_CSUM)); iptunnel_xmit_stats(err, &dev->stats, dev->tstats); return NETDEV_TX_OK; @@ -912,8 +950,8 @@ struct flowi6 fl6; __u8 prio, ttl; __be16 sport; - bool udp_csum; bool xnet = !net_eq(geneve->net, dev_net(geneve->dev)); + u32 flags = geneve->flags; if (geneve->collect_md) { if (unlikely(!info || !(info->mode & IP_TUNNEL_INFO_TX))) { @@ -942,19 +980,22 @@ if (key->tun_flags & TUNNEL_GENEVE_OPT) opts = ip_tunnel_info_opts(info); - udp_csum = !!(key->tun_flags & TUNNEL_CSUM); + if (key->tun_flags & TUNNEL_CSUM) + flags |= GENEVE_F_UDP_CSUM; + else + flags &= ~GENEVE_F_UDP_CSUM; + err = geneve6_build_skb(dst, skb, key->tun_flags, vni, info->options_len, opts, - udp_csum, xnet); + flags, xnet); if (unlikely(err)) goto err; prio = ip_tunnel_ecn_encap(key->tos, iip, skb); ttl = key->ttl; } else { - udp_csum = false; err = geneve6_build_skb(dst, skb, 0, geneve->vni, - 0, NULL, udp_csum, xnet); + 0, NULL, flags, xnet); if (unlikely(err)) goto err; @@ -966,7 +1007,10 @@ } err = udp_tunnel6_xmit_skb(dst, gs6->sock->sk, skb, dev, &fl6.saddr, &fl6.daddr, prio, ttl, - sport, geneve->dst_port, !udp_csum); + sport, geneve->dst_port, + !!(flags & GENEVE_F_UDP_ZERO_CSUM6_TX)); + + iptunnel_xmit_stats(err, &dev->stats, dev->tstats); return NETDEV_TX_OK; tx_error: @@ -1065,6 +1109,30 @@ .name = "geneve", }; +/* Calls the ndo_add_geneve_port of the caller in order to + * supply the listening GENEVE udp ports. Callers are expected + * to implement the ndo_add_geneve_port. + */ +void geneve_get_rx_port(struct net_device *dev) +{ + struct net *net = dev_net(dev); + struct geneve_net *gn = net_generic(net, geneve_net_id); + struct geneve_sock *gs; + sa_family_t sa_family; + struct sock *sk; + __be16 port; + + rcu_read_lock(); + list_for_each_entry_rcu(gs, &gn->sock_list, list) { + sk = gs->sock->sk; + sa_family = sk->sk_family; + port = inet_sk(sk)->inet_sport; + dev->netdev_ops->ndo_add_geneve_port(dev, sa_family, port); + } + rcu_read_unlock(); +} +EXPORT_SYMBOL_GPL(geneve_get_rx_port); + /* Initialize the device structure. */ static void geneve_setup(struct net_device *dev) { @@ -1097,6 +1165,9 @@ [IFLA_GENEVE_TOS] = { .type = NLA_U8 }, [IFLA_GENEVE_PORT] = { .type = NLA_U16 }, [IFLA_GENEVE_COLLECT_METADATA] = { .type = NLA_FLAG }, + [IFLA_GENEVE_UDP_CSUM] = { .type = NLA_U8 }, + [IFLA_GENEVE_UDP_ZERO_CSUM6_TX] = { .type = NLA_U8 }, + [IFLA_GENEVE_UDP_ZERO_CSUM6_RX] = { .type = NLA_U8 }, }; static int geneve_validate(struct nlattr *tb[], struct nlattr *data[]) @@ -1150,7 +1221,7 @@ static int geneve_configure(struct net *net, struct net_device *dev, union geneve_addr *remote, __u32 vni, __u8 ttl, __u8 tos, __be16 dst_port, - bool metadata) + bool metadata, u32 flags) { struct geneve_net *gn = net_generic(net, geneve_net_id); struct geneve_dev *t, *geneve = netdev_priv(dev); @@ -1181,6 +1252,7 @@ geneve->tos = tos; geneve->dst_port = dst_port; geneve->collect_md = metadata; + geneve->flags = flags; t = geneve_find_dev(gn, dst_port, remote, geneve->vni, &tun_on_same_port, &tun_collect_md); @@ -1219,6 +1291,7 @@ bool metadata = false; union geneve_addr remote = geneve_remote_unspec; __u32 vni = 0; + u32 flags = 0; if (data[IFLA_GENEVE_REMOTE] && data[IFLA_GENEVE_REMOTE6]) return -EINVAL; @@ -1259,8 +1332,20 @@ if (data[IFLA_GENEVE_COLLECT_METADATA]) metadata = true; + if (data[IFLA_GENEVE_UDP_CSUM] && + nla_get_u8(data[IFLA_GENEVE_UDP_CSUM])) + flags |= GENEVE_F_UDP_CSUM; + + if (data[IFLA_GENEVE_UDP_ZERO_CSUM6_TX] && + nla_get_u8(data[IFLA_GENEVE_UDP_ZERO_CSUM6_TX])) + flags |= GENEVE_F_UDP_ZERO_CSUM6_TX; + + if (data[IFLA_GENEVE_UDP_ZERO_CSUM6_RX] && + nla_get_u8(data[IFLA_GENEVE_UDP_ZERO_CSUM6_RX])) + flags |= GENEVE_F_UDP_ZERO_CSUM6_RX; + return geneve_configure(net, dev, &remote, vni, ttl, tos, dst_port, - metadata); + metadata, flags); } static void geneve_dellink(struct net_device *dev, struct list_head *head) @@ -1279,6 +1364,9 @@ nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TOS */ nla_total_size(sizeof(__be16)) + /* IFLA_GENEVE_PORT */ nla_total_size(0) + /* IFLA_GENEVE_COLLECT_METADATA */ + nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_UDP_CSUM */ + nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_UDP_ZERO_CSUM6_TX */ + nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_UDP_ZERO_CSUM6_RX */ 0; } @@ -1315,6 +1403,14 @@ goto nla_put_failure; } + if (nla_put_u8(skb, IFLA_GENEVE_UDP_CSUM, + !!(geneve->flags & GENEVE_F_UDP_CSUM)) || + nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_TX, + !!(geneve->flags & GENEVE_F_UDP_ZERO_CSUM6_TX)) || + nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX, + !!(geneve->flags & GENEVE_F_UDP_ZERO_CSUM6_RX))) + goto nla_put_failure; + return 0; nla_put_failure: @@ -1348,7 +1444,7 @@ return dev; err = geneve_configure(net, dev, &geneve_remote_unspec, - 0, 0, 0, htons(dst_port), true); + 0, 0, 0, htons(dst_port), true, 0); if (err) { free_netdev(dev); return ERR_PTR(err); --- linux-4.4.0.orig/drivers/net/phy/fixed_phy.c +++ linux-4.4.0/drivers/net/phy/fixed_phy.c @@ -5,6 +5,7 @@ * Anton Vorontsov * * Copyright (c) 2006-2007 MontaVista Software, Inc. + * Copyright 2009 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -59,6 +61,9 @@ if (fp->status.duplex) { switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; break; @@ -73,6 +78,9 @@ } } else { switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; break; --- linux-4.4.0.orig/drivers/net/phy/vitesse.c +++ linux-4.4.0/drivers/net/phy/vitesse.c @@ -75,7 +75,7 @@ MODULE_AUTHOR("Kriston Carson"); MODULE_LICENSE("GPL"); -static int vsc824x_add_skew(struct phy_device *phydev) +int vsc824x_add_skew(struct phy_device *phydev) { int err; int extcon; @@ -95,6 +95,7 @@ return err; } +EXPORT_SYMBOL(vsc824x_add_skew); static int vsc824x_config_init(struct phy_device *phydev) { --- linux-4.4.0.orig/drivers/net/team/team.c +++ linux-4.4.0/drivers/net/team/team.c @@ -1845,10 +1845,10 @@ struct team *team = netdev_priv(dev); struct team_port *port; - rcu_read_lock(); - list_for_each_entry_rcu(port, &team->port_list, list) + mutex_lock(&team->lock); + list_for_each_entry(port, &team->port_list, list) vlan_vid_del(port->dev, proto, vid); - rcu_read_unlock(); + mutex_unlock(&team->lock); return 0; } --- linux-4.4.0.orig/drivers/net/vxlan.c +++ linux-4.4.0/drivers/net/vxlan.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -106,6 +107,167 @@ ip_tunnel_collect_metadata(); } +static struct ip_fan_map *vxlan_fan_find_map(struct vxlan_dev *vxlan, __be32 daddr) +{ + struct ip_fan_map *fan_map; + + rcu_read_lock(); + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + if (fan_map->overlay == + (daddr & inet_make_mask(fan_map->overlay_prefix))) { + rcu_read_unlock(); + return fan_map; + } + } + rcu_read_unlock(); + + return NULL; +} + +static void vxlan_fan_flush_map(struct vxlan_dev *vxlan) +{ + struct ip_fan_map *fan_map; + + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + } +} + +static int vxlan_fan_del_map(struct vxlan_dev *vxlan, __be32 overlay) +{ + struct ip_fan_map *fan_map; + + fan_map = vxlan_fan_find_map(vxlan, overlay); + if (!fan_map) + return -ENOENT; + + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + + return 0; +} + +static int vxlan_fan_add_map(struct vxlan_dev *vxlan, struct ifla_fan_map *map) +{ + __be32 overlay_mask, underlay_mask; + struct ip_fan_map *fan_map; + + overlay_mask = inet_make_mask(map->overlay_prefix); + underlay_mask = inet_make_mask(map->underlay_prefix); + + netdev_dbg(vxlan->dev, "vfam: map: o %x/%d u %x/%d om %x um %x\n", + map->overlay, map->overlay_prefix, + map->underlay, map->underlay_prefix, + overlay_mask, underlay_mask); + + if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) + return -EINVAL; + + if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) + return -EINVAL; + + /* Special case: overlay 0 and underlay 0: flush all mappings */ + if (!map->overlay && !map->underlay) { + vxlan_fan_flush_map(vxlan); + return 0; + } + + /* Special case: overlay set and underlay 0: clear map for overlay */ + if (!map->underlay) + return vxlan_fan_del_map(vxlan, map->overlay); + + if (vxlan_fan_find_map(vxlan, map->overlay)) + return -EEXIST; + + fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); + fan_map->underlay = map->underlay; + fan_map->overlay = map->overlay; + fan_map->underlay_prefix = map->underlay_prefix; + fan_map->overlay_mask = ntohl(overlay_mask); + fan_map->overlay_prefix = map->overlay_prefix; + + list_add_tail_rcu(&fan_map->list, &vxlan->fan.fan_maps); + + return 0; +} + +static int vxlan_parse_fan_map(struct nlattr *data[], struct vxlan_dev *vxlan) +{ + struct ifla_fan_map *map; + struct nlattr *attr; + int rem, rv; + + nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { + map = nla_data(attr); + rv = vxlan_fan_add_map(vxlan, map); + if (rv) + return rv; + } + + return 0; +} + +static int vxlan_fan_build_rdst(struct vxlan_dev *vxlan, struct sk_buff *skb, + struct vxlan_rdst *fan_rdst) +{ + struct ip_fan_map *f_map; + union vxlan_addr *va; + u32 daddr, underlay; + struct arphdr *arp; + void *arp_ptr; + struct ethhdr *eth; + struct iphdr *iph; + + eth = eth_hdr(skb); + switch (eth->h_proto) { + case htons(ETH_P_IP): + iph = ip_hdr(skb); + if (!iph) + return -EINVAL; + daddr = iph->daddr; + break; + case htons(ETH_P_ARP): + arp = arp_hdr(skb); + if (!arp) + return -EINVAL; + arp_ptr = arp + 1; + netdev_dbg(vxlan->dev, + "vfbr: arp sha %pM sip %pI4 tha %pM tip %pI4\n", + arp_ptr, arp_ptr + skb->dev->addr_len, + arp_ptr + skb->dev->addr_len + 4, + arp_ptr + (skb->dev->addr_len * 2) + 4); + arp_ptr += (skb->dev->addr_len * 2) + 4; + memcpy(&daddr, arp_ptr, 4); + break; + default: + netdev_dbg(vxlan->dev, "vfbr: unknown eth p %x\n", eth->h_proto); + return -EINVAL; + } + + f_map = vxlan_fan_find_map(vxlan, daddr); + if (!f_map) + return -EINVAL; + + daddr = ntohl(daddr); + underlay = ntohl(f_map->underlay); + if (!underlay) + return -EINVAL; + + memset(fan_rdst, 0, sizeof(*fan_rdst)); + va = &fan_rdst->remote_ip; + va->sa.sa_family = AF_INET; + fan_rdst->remote_vni = vxlan->default_dst.remote_vni; + va->sin.sin_addr.s_addr = htonl(underlay | + ((daddr & ~f_map->overlay_mask) >> + (32 - f_map->overlay_prefix - + (32 - f_map->underlay_prefix)))); + netdev_dbg(vxlan->dev, "vfbr: daddr %x ul %x dst %x\n", + daddr, underlay, va->sin.sin_addr.s_addr); + + return 0; +} + #if IS_ENABLED(CONFIG_IPV6) static inline bool vxlan_addr_equal(const union vxlan_addr *a, const union vxlan_addr *b) @@ -2029,6 +2191,13 @@ goto rt_tx_error; } + if (fan_has_map(&vxlan->fan) && rt->rt_flags & RTCF_LOCAL) { + netdev_dbg(dev, "discard fan to localhost %pI4\n", + &dst->sin.sin_addr.s_addr); + ip_rt_put(rt); + goto tx_free; + } + /* Bypass encapsulation if the destination is local */ if (rt->rt_flags & RTCF_LOCAL && !(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) { @@ -2169,6 +2338,20 @@ return NETDEV_TX_OK; } + if (fan_has_map(&vxlan->fan)) { + struct vxlan_rdst fan_rdst; + + netdev_dbg(vxlan->dev, "vxlan_xmit p %x d %pM\n", + eth->h_proto, eth->h_dest); + if (vxlan_fan_build_rdst(vxlan, skb, &fan_rdst)) { + dev->stats.tx_dropped++; + kfree_skb(skb); + return NETDEV_TX_OK; + } + vxlan_xmit_one(skb, dev, &fan_rdst, 0); + return NETDEV_TX_OK; + } + f = vxlan_find_mac(vxlan, eth->h_dest); did_rsc = false; @@ -2532,6 +2715,8 @@ for (h = 0; h < FDB_HASH_SIZE; ++h) INIT_HLIST_HEAD(&vxlan->fdb_head[h]); + + INIT_LIST_HEAD(&vxlan->fan.fan_maps); } static const struct nla_policy vxlan_policy[IFLA_VXLAN_MAX + 1] = { @@ -2751,7 +2936,7 @@ struct vxlan_config *conf) { struct vxlan_net *vn = net_generic(src_net, vxlan_net_id); - struct vxlan_dev *vxlan = netdev_priv(dev); + struct vxlan_dev *vxlan = netdev_priv(dev), *tmp; struct vxlan_rdst *dst = &vxlan->default_dst; unsigned short needed_headroom = ETH_HLEN; int err; @@ -2817,9 +3002,15 @@ if (!vxlan->cfg.age_interval) vxlan->cfg.age_interval = FDB_AGE_DEFAULT; - if (vxlan_find_vni(src_net, conf->vni, use_ipv6 ? AF_INET6 : AF_INET, - vxlan->cfg.dst_port, vxlan->flags)) + list_for_each_entry(tmp, &vn->vxlan_list, next) { + if (tmp->cfg.vni == conf->vni && + (tmp->default_dst.remote_ip.sa.sa_family == AF_INET6 || + tmp->cfg.saddr.sa.sa_family == AF_INET6) == use_ipv6 && + tmp->cfg.dst_port == vxlan->cfg.dst_port && + (tmp->flags & VXLAN_F_RCV_FLAGS) == + (vxlan->flags & VXLAN_F_RCV_FLAGS)) return -EEXIST; + } dev->ethtool_ops = &vxlan_ethtool_ops; @@ -2875,6 +3066,7 @@ static int vxlan_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[]) { + struct vxlan_dev *vxlan = netdev_priv(dev); struct vxlan_config conf; int err; @@ -2893,6 +3085,12 @@ conf.remote_ip.sa.sa_family = AF_INET6; } + if (data[IFLA_VXLAN_FAN_MAP]) { + err = vxlan_parse_fan_map(data, vxlan); + if (err) + return err; + } + if (data[IFLA_VXLAN_LOCAL]) { conf.saddr.sin.sin_addr.s_addr = nla_get_in_addr(data[IFLA_VXLAN_LOCAL]); conf.saddr.sa.sa_family = AF_INET; @@ -3031,6 +3229,7 @@ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_UDP_ZERO_CSUM6_RX */ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_TX */ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_RX */ + nla_total_size(sizeof(struct ip_fan_map) * 256) + 0; } @@ -3077,6 +3276,26 @@ } } + if (fan_has_map(&vxlan->fan)) { + struct nlattr *fan_nest; + struct ip_fan_map *fan_map; + + fan_nest = nla_nest_start(skb, IFLA_VXLAN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + struct ifla_fan_map map; + + map.underlay = fan_map->underlay; + map.underlay_prefix = fan_map->underlay_prefix; + map.overlay = fan_map->overlay; + map.overlay_prefix = fan_map->overlay_prefix; + if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) + goto nla_put_failure; + } + nla_nest_end(skb, fan_nest); + } + if (nla_put_u8(skb, IFLA_VXLAN_TTL, vxlan->cfg.ttl) || nla_put_u8(skb, IFLA_VXLAN_TOS, vxlan->cfg.tos) || nla_put_u8(skb, IFLA_VXLAN_LEARNING, @@ -3195,6 +3414,22 @@ return 0; } +#ifdef CONFIG_SYSCTL +static struct ctl_table_header *vxlan_fan_header; +static unsigned int vxlan_fan_version = 4; + +static struct ctl_table vxlan_fan_sysctls[] = { + { + .procname = "vxlan", + .data = &vxlan_fan_version, + .maxlen = sizeof(vxlan_fan_version), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + {}, +}; +#endif /* CONFIG_SYSCTL */ + static void __net_exit vxlan_exit_net(struct net *net) { struct vxlan_net *vn = net_generic(net, vxlan_net_id); @@ -3250,7 +3485,20 @@ if (rc) goto out3; +#ifdef CONFIG_SYSCTL + vxlan_fan_header = register_net_sysctl(&init_net, "net/fan", + vxlan_fan_sysctls); + if (!vxlan_fan_header) { + rc = -ENOMEM; + goto sysctl_failed; + } +#endif /* CONFIG_SYSCTL */ + return 0; +#ifdef CONFIG_SYSCTL +sysctl_failed: + rtnl_link_unregister(&vxlan_link_ops); +#endif /* CONFIG_SYSCTL */ out3: unregister_netdevice_notifier(&vxlan_notifier_block); out2: @@ -3263,6 +3511,9 @@ static void __exit vxlan_cleanup_module(void) { +#ifdef CONFIG_SYSCTL + unregister_net_sysctl_table(vxlan_fan_header); +#endif /* CONFIG_SYSCTL */ rtnl_link_unregister(&vxlan_link_ops); unregister_netdevice_notifier(&vxlan_notifier_block); destroy_workqueue(vxlan_wq); --- linux-4.4.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-4.4.0/drivers/net/wireless/hostap/hostap_hw.c @@ -69,7 +69,7 @@ module_param_string(essid, essid, sizeof(essid), 0444); MODULE_PARM_DESC(essid, "Host AP's ESSID"); -static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_MASTER, DEF_INTS }; +static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_INFRA, DEF_INTS }; module_param_array(iw_mode, int, NULL, 0444); MODULE_PARM_DESC(iw_mode, "Initial operation mode"); --- linux-4.4.0.orig/drivers/net/wireless/realtek/rtlwifi/usb.c +++ linux-4.4.0/drivers/net/wireless/realtek/rtlwifi/usb.c @@ -531,6 +531,8 @@ ieee80211_rx(hw, skb); else dev_kfree_skb_any(skb); + } else { + dev_kfree_skb_any(skb); } } --- linux-4.4.0.orig/drivers/ntb/hw/Kconfig +++ linux-4.4.0/drivers/ntb/hw/Kconfig @@ -1 +1,2 @@ +source "drivers/ntb/hw/amd/Kconfig" source "drivers/ntb/hw/intel/Kconfig" --- linux-4.4.0.orig/drivers/ntb/hw/Makefile +++ linux-4.4.0/drivers/ntb/hw/Makefile @@ -1 +1,2 @@ +obj-$(CONFIG_NTB_AMD) += amd/ obj-$(CONFIG_NTB_INTEL) += intel/ --- linux-4.4.0.orig/drivers/ntb/hw/amd/Kconfig +++ linux-4.4.0/drivers/ntb/hw/amd/Kconfig @@ -0,0 +1,7 @@ +config NTB_AMD + tristate "AMD Non-Transparent Bridge support" + depends on X86_64 + help + This driver supports AMD NTB on capable Zeppelin hardware. + + If unsure, say N. --- linux-4.4.0.orig/drivers/ntb/hw/amd/Makefile +++ linux-4.4.0/drivers/ntb/hw/amd/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_NTB_AMD) += ntb_hw_amd.o --- linux-4.4.0.orig/drivers/ntb/hw/amd/ntb_hw_amd.c +++ linux-4.4.0/drivers/ntb/hw/amd/ntb_hw_amd.c @@ -0,0 +1,1143 @@ +/* + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * BSD LICENSE + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copy + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of AMD Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "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 COPYRIGHT + * OWNER OR CONTRIBUTORS 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. + * + * AMD PCIe NTB Linux driver + * + * Contact Information: + * Xiangliang Yu + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ntb_hw_amd.h" + +#define NTB_NAME "ntb_hw_amd" +#define NTB_DESC "AMD(R) PCI-E Non-Transparent Bridge Driver" +#define NTB_VER "1.0" + +MODULE_DESCRIPTION(NTB_DESC); +MODULE_VERSION(NTB_VER); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("AMD Inc."); + +static const struct file_operations amd_ntb_debugfs_info; +static struct dentry *debugfs_dir; + +static int ndev_mw_to_bar(struct amd_ntb_dev *ndev, int idx) +{ + if (idx < 0 || idx > ndev->mw_count) + return -EINVAL; + + return 1 << idx; +} + +static int amd_ntb_mw_count(struct ntb_dev *ntb) +{ + return ntb_ndev(ntb)->mw_count; +} + +static int amd_ntb_mw_get_range(struct ntb_dev *ntb, int idx, + phys_addr_t *base, + resource_size_t *size, + resource_size_t *align, + resource_size_t *align_size) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + int bar; + + bar = ndev_mw_to_bar(ndev, idx); + if (bar < 0) + return bar; + + if (base) + *base = pci_resource_start(ndev->ntb.pdev, bar); + + if (size) + *size = pci_resource_len(ndev->ntb.pdev, bar); + + if (align) + *align = SZ_4K; + + if (align_size) + *align_size = 1; + + return 0; +} + +static int amd_ntb_mw_set_trans(struct ntb_dev *ntb, int idx, + dma_addr_t addr, resource_size_t size) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + unsigned long xlat_reg, limit_reg = 0; + resource_size_t mw_size; + void __iomem *mmio, *peer_mmio; + u64 base_addr, limit, reg_val; + int bar; + + bar = ndev_mw_to_bar(ndev, idx); + if (bar < 0) + return bar; + + mw_size = pci_resource_len(ndev->ntb.pdev, bar); + + /* make sure the range fits in the usable mw size */ + if (size > mw_size) + return -EINVAL; + + mmio = ndev->self_mmio; + peer_mmio = ndev->peer_mmio; + + base_addr = pci_resource_start(ndev->ntb.pdev, bar); + + if (bar != 1) { + xlat_reg = AMD_BAR23XLAT_OFFSET + ((bar - 2) << 3); + limit_reg = AMD_BAR23LMT_OFFSET + ((bar - 2) << 3); + + /* Set the limit if supported */ + limit = base_addr + size; + + /* set and verify setting the translation address */ + write64(addr, peer_mmio + xlat_reg); + reg_val = read64(peer_mmio + xlat_reg); + if (reg_val != addr) { + write64(0, peer_mmio + xlat_reg); + return -EIO; + } + + /* set and verify setting the limit */ + write64(limit, mmio + limit_reg); + reg_val = read64(mmio + limit_reg); + if (reg_val != limit) { + write64(base_addr, mmio + limit_reg); + write64(0, peer_mmio + xlat_reg); + return -EIO; + } + } else { + xlat_reg = AMD_BAR1XLAT_OFFSET; + limit_reg = AMD_BAR1LMT_OFFSET; + + /* split bar addr range must all be 32 bit */ + if (addr & (~0ull << 32)) + return -EINVAL; + if ((addr + size) & (~0ull << 32)) + return -EINVAL; + + /* Set the limit if supported */ + limit = base_addr + size; + + /* set and verify setting the translation address */ + write64(addr, peer_mmio + xlat_reg); + reg_val = read64(peer_mmio + xlat_reg); + if (reg_val != addr) { + write64(0, peer_mmio + xlat_reg); + return -EIO; + } + + /* set and verify setting the limit */ + writel(limit, mmio + limit_reg); + reg_val = readl(mmio + limit_reg); + if (reg_val != limit) { + writel(base_addr, mmio + limit_reg); + writel(0, peer_mmio + xlat_reg); + return -EIO; + } + } + + return 0; +} + +static int amd_link_is_up(struct amd_ntb_dev *ndev) +{ + if (!ndev->peer_sta) + return NTB_LNK_STA_ACTIVE(ndev->cntl_sta); + + /* If peer_sta is reset or D0 event, the ISR has + * started a timer to check link status of hardware. + * So here just clear status bit. And if peer_sta is + * D3 or PME_TO, D0/reset event will be happened when + * system wakeup/poweron, so do nothing here. + */ + if (ndev->peer_sta & AMD_PEER_RESET_EVENT) + ndev->peer_sta &= ~AMD_PEER_RESET_EVENT; + else if (ndev->peer_sta & AMD_PEER_D0_EVENT) + ndev->peer_sta = 0; + + return 0; +} + +static int amd_ntb_link_is_up(struct ntb_dev *ntb, + enum ntb_speed *speed, + enum ntb_width *width) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + int ret = 0; + + if (amd_link_is_up(ndev)) { + if (speed) + *speed = NTB_LNK_STA_SPEED(ndev->lnk_sta); + if (width) + *width = NTB_LNK_STA_WIDTH(ndev->lnk_sta); + + dev_dbg(ndev_dev(ndev), "link is up.\n"); + + ret = 1; + } else { + if (speed) + *speed = NTB_SPEED_NONE; + if (width) + *width = NTB_WIDTH_NONE; + + dev_dbg(ndev_dev(ndev), "link is down.\n"); + } + + return ret; +} + +static int amd_ntb_link_enable(struct ntb_dev *ntb, + enum ntb_speed max_speed, + enum ntb_width max_width) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 ntb_ctl; + + /* Enable event interrupt */ + ndev->int_mask &= ~AMD_EVENT_INTMASK; + writel(ndev->int_mask, mmio + AMD_INTMASK_OFFSET); + + if (ndev->ntb.topo == NTB_TOPO_SEC) + return -EINVAL; + dev_dbg(ndev_dev(ndev), "Enabling Link.\n"); + + ntb_ctl = readl(mmio + AMD_CNTL_OFFSET); + ntb_ctl |= (PMM_REG_CTL | SMM_REG_CTL); + writel(ntb_ctl, mmio + AMD_CNTL_OFFSET); + + return 0; +} + +static int amd_ntb_link_disable(struct ntb_dev *ntb) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 ntb_ctl; + + /* Disable event interrupt */ + ndev->int_mask |= AMD_EVENT_INTMASK; + writel(ndev->int_mask, mmio + AMD_INTMASK_OFFSET); + + if (ndev->ntb.topo == NTB_TOPO_SEC) + return -EINVAL; + dev_dbg(ndev_dev(ndev), "Enabling Link.\n"); + + ntb_ctl = readl(mmio + AMD_CNTL_OFFSET); + ntb_ctl &= ~(PMM_REG_CTL | SMM_REG_CTL); + writel(ntb_ctl, mmio + AMD_CNTL_OFFSET); + + return 0; +} + +static u64 amd_ntb_db_valid_mask(struct ntb_dev *ntb) +{ + return ntb_ndev(ntb)->db_valid_mask; +} + +static int amd_ntb_db_vector_count(struct ntb_dev *ntb) +{ + return ntb_ndev(ntb)->db_count; +} + +static u64 amd_ntb_db_vector_mask(struct ntb_dev *ntb, int db_vector) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + + if (db_vector < 0 || db_vector > ndev->db_count) + return 0; + + return ntb_ndev(ntb)->db_valid_mask & (1 << db_vector); +} + +static u64 amd_ntb_db_read(struct ntb_dev *ntb) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + + return (u64)readw(mmio + AMD_DBSTAT_OFFSET); +} + +static int amd_ntb_db_clear(struct ntb_dev *ntb, u64 db_bits) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + + writew((u16)db_bits, mmio + AMD_DBSTAT_OFFSET); + + return 0; +} + +static int amd_ntb_db_set_mask(struct ntb_dev *ntb, u64 db_bits) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + unsigned long flags; + + if (db_bits & ~ndev->db_valid_mask) + return -EINVAL; + + spin_lock_irqsave(&ndev->db_mask_lock, flags); + ndev->db_mask |= db_bits; + writew((u16)ndev->db_mask, mmio + AMD_DBMASK_OFFSET); + spin_unlock_irqrestore(&ndev->db_mask_lock, flags); + + return 0; +} + +static int amd_ntb_db_clear_mask(struct ntb_dev *ntb, u64 db_bits) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + unsigned long flags; + + if (db_bits & ~ndev->db_valid_mask) + return -EINVAL; + + spin_lock_irqsave(&ndev->db_mask_lock, flags); + ndev->db_mask &= ~db_bits; + writew((u16)ndev->db_mask, mmio + AMD_DBMASK_OFFSET); + spin_unlock_irqrestore(&ndev->db_mask_lock, flags); + + return 0; +} + +static int amd_ntb_peer_db_addr(struct ntb_dev *ntb, + phys_addr_t *db_addr, + resource_size_t *db_size) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + + if (db_addr) + *db_addr = (phys_addr_t)(ndev->peer_mmio + AMD_DBREQ_OFFSET); + if (db_size) + *db_size = sizeof(u32); + + return 0; +} + +static int amd_ntb_peer_db_set(struct ntb_dev *ntb, u64 db_bits) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + + writew((u16)db_bits, mmio + AMD_DBREQ_OFFSET); + + return 0; +} + +static int amd_ntb_spad_count(struct ntb_dev *ntb) +{ + return ntb_ndev(ntb)->spad_count; +} + +static u32 amd_ntb_spad_read(struct ntb_dev *ntb, int idx) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 offset; + + if (idx < 0 || idx >= ndev->spad_count) + return 0; + + offset = ndev->self_spad + (idx << 2); + return readl(mmio + AMD_SPAD_OFFSET + offset); +} + +static int amd_ntb_spad_write(struct ntb_dev *ntb, + int idx, u32 val) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 offset; + + if (idx < 0 || idx >= ndev->spad_count) + return -EINVAL; + + offset = ndev->self_spad + (idx << 2); + writel(val, mmio + AMD_SPAD_OFFSET + offset); + + return 0; +} + +static int amd_ntb_peer_spad_addr(struct ntb_dev *ntb, int idx, + phys_addr_t *spad_addr) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + + if (idx < 0 || idx >= ndev->spad_count) + return -EINVAL; + + if (spad_addr) + *spad_addr = (phys_addr_t)(ndev->self_mmio + AMD_SPAD_OFFSET + + ndev->peer_spad + (idx << 2)); + return 0; +} + +static u32 amd_ntb_peer_spad_read(struct ntb_dev *ntb, int idx) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 offset; + + if (idx < 0 || idx >= ndev->spad_count) + return -EINVAL; + + offset = ndev->peer_spad + (idx << 2); + return readl(mmio + AMD_SPAD_OFFSET + offset); +} + +static int amd_ntb_peer_spad_write(struct ntb_dev *ntb, + int idx, u32 val) +{ + struct amd_ntb_dev *ndev = ntb_ndev(ntb); + void __iomem *mmio = ndev->self_mmio; + u32 offset; + + if (idx < 0 || idx >= ndev->spad_count) + return -EINVAL; + + offset = ndev->peer_spad + (idx << 2); + writel(val, mmio + AMD_SPAD_OFFSET + offset); + + return 0; +} + +static const struct ntb_dev_ops amd_ntb_ops = { + .mw_count = amd_ntb_mw_count, + .mw_get_range = amd_ntb_mw_get_range, + .mw_set_trans = amd_ntb_mw_set_trans, + .link_is_up = amd_ntb_link_is_up, + .link_enable = amd_ntb_link_enable, + .link_disable = amd_ntb_link_disable, + .db_valid_mask = amd_ntb_db_valid_mask, + .db_vector_count = amd_ntb_db_vector_count, + .db_vector_mask = amd_ntb_db_vector_mask, + .db_read = amd_ntb_db_read, + .db_clear = amd_ntb_db_clear, + .db_set_mask = amd_ntb_db_set_mask, + .db_clear_mask = amd_ntb_db_clear_mask, + .peer_db_addr = amd_ntb_peer_db_addr, + .peer_db_set = amd_ntb_peer_db_set, + .spad_count = amd_ntb_spad_count, + .spad_read = amd_ntb_spad_read, + .spad_write = amd_ntb_spad_write, + .peer_spad_addr = amd_ntb_peer_spad_addr, + .peer_spad_read = amd_ntb_peer_spad_read, + .peer_spad_write = amd_ntb_peer_spad_write, +}; + +static void amd_ack_smu(struct amd_ntb_dev *ndev, u32 bit) +{ + void __iomem *mmio = ndev->self_mmio; + int reg; + + reg = readl(mmio + AMD_SMUACK_OFFSET); + reg |= bit; + writel(reg, mmio + AMD_SMUACK_OFFSET); + + ndev->peer_sta |= bit; +} + +static void amd_handle_event(struct amd_ntb_dev *ndev, int vec) +{ + void __iomem *mmio = ndev->self_mmio; + u32 status; + + status = readl(mmio + AMD_INTSTAT_OFFSET); + if (!(status & AMD_EVENT_INTMASK)) + return; + + dev_dbg(ndev_dev(ndev), "status = 0x%x and vec = %d\n", status, vec); + + status &= AMD_EVENT_INTMASK; + switch (status) { + case AMD_PEER_FLUSH_EVENT: + dev_info(ndev_dev(ndev), "Flush is done.\n"); + break; + case AMD_PEER_RESET_EVENT: + amd_ack_smu(ndev, AMD_PEER_RESET_EVENT); + + /* link down first */ + ntb_link_event(&ndev->ntb); + /* polling peer status */ + schedule_delayed_work(&ndev->hb_timer, AMD_LINK_HB_TIMEOUT); + + break; + case AMD_PEER_D3_EVENT: + case AMD_PEER_PMETO_EVENT: + amd_ack_smu(ndev, status); + + /* link down */ + ntb_link_event(&ndev->ntb); + + break; + case AMD_PEER_D0_EVENT: + mmio = ndev->peer_mmio; + status = readl(mmio + AMD_PMESTAT_OFFSET); + /* check if this is WAKEUP event */ + if (status & 0x1) + dev_info(ndev_dev(ndev), "Wakeup is done.\n"); + + amd_ack_smu(ndev, AMD_PEER_D0_EVENT); + + /* start a timer to poll link status */ + schedule_delayed_work(&ndev->hb_timer, + AMD_LINK_HB_TIMEOUT); + break; + default: + dev_info(ndev_dev(ndev), "event status = 0x%x.\n", status); + break; + } +} + +static irqreturn_t ndev_interrupt(struct amd_ntb_dev *ndev, int vec) +{ + dev_dbg(ndev_dev(ndev), "vec %d\n", vec); + + if (vec > (AMD_DB_CNT - 1) || (ndev->msix_vec_count == 1)) + amd_handle_event(ndev, vec); + + if (vec < AMD_DB_CNT) + ntb_db_event(&ndev->ntb, vec); + + return IRQ_HANDLED; +} + +static irqreturn_t ndev_vec_isr(int irq, void *dev) +{ + struct amd_ntb_vec *nvec = dev; + + return ndev_interrupt(nvec->ndev, nvec->num); +} + +static irqreturn_t ndev_irq_isr(int irq, void *dev) +{ + struct amd_ntb_dev *ndev = dev; + + return ndev_interrupt(ndev, irq - ndev_pdev(ndev)->irq); +} + +static int ndev_init_isr(struct amd_ntb_dev *ndev, + int msix_min, int msix_max) +{ + struct pci_dev *pdev; + int rc, i, msix_count, node; + + pdev = ndev_pdev(ndev); + + node = dev_to_node(&pdev->dev); + + ndev->db_mask = ndev->db_valid_mask; + + /* Try to set up msix irq */ + ndev->vec = kzalloc_node(msix_max * sizeof(*ndev->vec), + GFP_KERNEL, node); + if (!ndev->vec) + goto err_msix_vec_alloc; + + ndev->msix = kzalloc_node(msix_max * sizeof(*ndev->msix), + GFP_KERNEL, node); + if (!ndev->msix) + goto err_msix_alloc; + + for (i = 0; i < msix_max; ++i) + ndev->msix[i].entry = i; + + msix_count = pci_enable_msix_range(pdev, ndev->msix, + msix_min, msix_max); + if (msix_count < 0) + goto err_msix_enable; + + /* NOTE: Disable MSIX if msix count is less than 16 because of + * hardware limitation. + */ + if (msix_count < msix_min) { + pci_disable_msix(pdev); + goto err_msix_enable; + } + + for (i = 0; i < msix_count; ++i) { + ndev->vec[i].ndev = ndev; + ndev->vec[i].num = i; + rc = request_irq(ndev->msix[i].vector, ndev_vec_isr, 0, + "ndev_vec_isr", &ndev->vec[i]); + if (rc) + goto err_msix_request; + } + + dev_dbg(ndev_dev(ndev), "Using msix interrupts\n"); + ndev->db_count = msix_min; + ndev->msix_vec_count = msix_max; + return 0; + +err_msix_request: + while (i-- > 0) + free_irq(ndev->msix[i].vector, ndev); + pci_disable_msix(pdev); +err_msix_enable: + kfree(ndev->msix); +err_msix_alloc: + kfree(ndev->vec); +err_msix_vec_alloc: + ndev->msix = NULL; + ndev->vec = NULL; + + /* Try to set up msi irq */ + rc = pci_enable_msi(pdev); + if (rc) + goto err_msi_enable; + + rc = request_irq(pdev->irq, ndev_irq_isr, 0, + "ndev_irq_isr", ndev); + if (rc) + goto err_msi_request; + + dev_dbg(ndev_dev(ndev), "Using msi interrupts\n"); + ndev->db_count = 1; + ndev->msix_vec_count = 1; + return 0; + +err_msi_request: + pci_disable_msi(pdev); +err_msi_enable: + + /* Try to set up intx irq */ + pci_intx(pdev, 1); + + rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED, + "ndev_irq_isr", ndev); + if (rc) + goto err_intx_request; + + dev_dbg(ndev_dev(ndev), "Using intx interrupts\n"); + ndev->db_count = 1; + ndev->msix_vec_count = 1; + return 0; + +err_intx_request: + return rc; +} + +static void ndev_deinit_isr(struct amd_ntb_dev *ndev) +{ + struct pci_dev *pdev; + void __iomem *mmio = ndev->self_mmio; + int i; + + pdev = ndev_pdev(ndev); + + /* Mask all doorbell interrupts */ + ndev->db_mask = ndev->db_valid_mask; + writel(ndev->db_mask, mmio + AMD_DBMASK_OFFSET); + + if (ndev->msix) { + i = ndev->msix_vec_count; + while (i--) + free_irq(ndev->msix[i].vector, &ndev->vec[i]); + pci_disable_msix(pdev); + kfree(ndev->msix); + kfree(ndev->vec); + } else { + free_irq(pdev->irq, ndev); + if (pci_dev_msi_enabled(pdev)) + pci_disable_msi(pdev); + else + pci_intx(pdev, 0); + } +} + +static ssize_t ndev_debugfs_read(struct file *filp, char __user *ubuf, + size_t count, loff_t *offp) +{ + struct amd_ntb_dev *ndev; + void __iomem *mmio; + char *buf; + size_t buf_size; + ssize_t ret, off; + union { u64 v64; u32 v32; u16 v16; } u; + + ndev = filp->private_data; + mmio = ndev->self_mmio; + + buf_size = min(count, 0x800ul); + + buf = kmalloc(buf_size, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + off = 0; + + off += scnprintf(buf + off, buf_size - off, + "NTB Device Information:\n"); + + off += scnprintf(buf + off, buf_size - off, + "Connection Topology -\t%s\n", + ntb_topo_string(ndev->ntb.topo)); + + off += scnprintf(buf + off, buf_size - off, + "LNK STA -\t\t%#06x\n", ndev->lnk_sta); + + if (!amd_link_is_up(ndev)) { + off += scnprintf(buf + off, buf_size - off, + "Link Status -\t\tDown\n"); + } else { + off += scnprintf(buf + off, buf_size - off, + "Link Status -\t\tUp\n"); + off += scnprintf(buf + off, buf_size - off, + "Link Speed -\t\tPCI-E Gen %u\n", + NTB_LNK_STA_SPEED(ndev->lnk_sta)); + off += scnprintf(buf + off, buf_size - off, + "Link Width -\t\tx%u\n", + NTB_LNK_STA_WIDTH(ndev->lnk_sta)); + } + + off += scnprintf(buf + off, buf_size - off, + "Memory Window Count -\t%u\n", ndev->mw_count); + off += scnprintf(buf + off, buf_size - off, + "Scratchpad Count -\t%u\n", ndev->spad_count); + off += scnprintf(buf + off, buf_size - off, + "Doorbell Count -\t%u\n", ndev->db_count); + off += scnprintf(buf + off, buf_size - off, + "MSIX Vector Count -\t%u\n", ndev->msix_vec_count); + + off += scnprintf(buf + off, buf_size - off, + "Doorbell Valid Mask -\t%#llx\n", ndev->db_valid_mask); + + u.v32 = readl(ndev->self_mmio + AMD_DBMASK_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "Doorbell Mask -\t\t\t%#06x\n", u.v32); + + u.v32 = readl(mmio + AMD_DBSTAT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "Doorbell Bell -\t\t\t%#06x\n", u.v32); + + off += scnprintf(buf + off, buf_size - off, + "\nNTB Incoming XLAT:\n"); + + u.v64 = read64(mmio + AMD_BAR1XLAT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "XLAT1 -\t\t%#018llx\n", u.v64); + + u.v64 = read64(ndev->self_mmio + AMD_BAR23XLAT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "XLAT23 -\t\t%#018llx\n", u.v64); + + u.v64 = read64(ndev->self_mmio + AMD_BAR45XLAT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "XLAT45 -\t\t%#018llx\n", u.v64); + + u.v32 = readl(mmio + AMD_BAR1LMT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "LMT1 -\t\t\t%#06x\n", u.v32); + + u.v64 = read64(ndev->self_mmio + AMD_BAR23LMT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "LMT23 -\t\t\t%#018llx\n", u.v64); + + u.v64 = read64(ndev->self_mmio + AMD_BAR45LMT_OFFSET); + off += scnprintf(buf + off, buf_size - off, + "LMT45 -\t\t\t%#018llx\n", u.v64); + + ret = simple_read_from_buffer(ubuf, count, offp, buf, off); + kfree(buf); + return ret; +} + +static void ndev_init_debugfs(struct amd_ntb_dev *ndev) +{ + if (!debugfs_dir) { + ndev->debugfs_dir = NULL; + ndev->debugfs_info = NULL; + } else { + ndev->debugfs_dir = + debugfs_create_dir(ndev_name(ndev), debugfs_dir); + if (!ndev->debugfs_dir) + ndev->debugfs_info = NULL; + else + ndev->debugfs_info = + debugfs_create_file("info", S_IRUSR, + ndev->debugfs_dir, ndev, + &amd_ntb_debugfs_info); + } +} + +static void ndev_deinit_debugfs(struct amd_ntb_dev *ndev) +{ + debugfs_remove_recursive(ndev->debugfs_dir); +} + +static inline void ndev_init_struct(struct amd_ntb_dev *ndev, + struct pci_dev *pdev) +{ + ndev->ntb.pdev = pdev; + ndev->ntb.topo = NTB_TOPO_NONE; + ndev->ntb.ops = &amd_ntb_ops; + ndev->int_mask = AMD_EVENT_INTMASK; + spin_lock_init(&ndev->db_mask_lock); +} + +static int amd_poll_link(struct amd_ntb_dev *ndev) +{ + void __iomem *mmio = ndev->peer_mmio; + u32 reg, stat; + int rc; + + reg = readl(mmio + AMD_SIDEINFO_OFFSET); + reg &= NTB_LIN_STA_ACTIVE_BIT; + + dev_dbg(ndev_dev(ndev), "%s: reg_val = 0x%x.\n", __func__, reg); + + if (reg == ndev->cntl_sta) + return 0; + + ndev->cntl_sta = reg; + + rc = pci_read_config_dword(ndev->ntb.pdev, + AMD_LINK_STATUS_OFFSET, &stat); + if (rc) + return 0; + ndev->lnk_sta = stat; + + return 1; +} + +static void amd_link_hb(struct work_struct *work) +{ + struct amd_ntb_dev *ndev = hb_ndev(work); + + if (amd_poll_link(ndev)) + ntb_link_event(&ndev->ntb); + + if (!amd_link_is_up(ndev)) + schedule_delayed_work(&ndev->hb_timer, AMD_LINK_HB_TIMEOUT); +} + +static int amd_init_isr(struct amd_ntb_dev *ndev) +{ + return ndev_init_isr(ndev, AMD_DB_CNT, AMD_MSIX_VECTOR_CNT); +} + +static void amd_init_side_info(struct amd_ntb_dev *ndev) +{ + void __iomem *mmio = ndev->self_mmio; + unsigned int reg; + + reg = readl(mmio + AMD_SIDEINFO_OFFSET); + if (!(reg & AMD_SIDE_READY)) { + reg |= AMD_SIDE_READY; + writel(reg, mmio + AMD_SIDEINFO_OFFSET); + } +} + +static void amd_deinit_side_info(struct amd_ntb_dev *ndev) +{ + void __iomem *mmio = ndev->self_mmio; + unsigned int reg; + + reg = readl(mmio + AMD_SIDEINFO_OFFSET); + if (reg & AMD_SIDE_READY) { + reg &= ~AMD_SIDE_READY; + writel(reg, mmio + AMD_SIDEINFO_OFFSET); + readl(mmio + AMD_SIDEINFO_OFFSET); + } +} + +static int amd_init_ntb(struct amd_ntb_dev *ndev) +{ + void __iomem *mmio = ndev->self_mmio; + + ndev->mw_count = AMD_MW_CNT; + ndev->spad_count = AMD_SPADS_CNT; + ndev->db_count = AMD_DB_CNT; + + switch (ndev->ntb.topo) { + case NTB_TOPO_PRI: + case NTB_TOPO_SEC: + ndev->spad_count >>= 1; + if (ndev->ntb.topo == NTB_TOPO_PRI) { + ndev->self_spad = 0; + ndev->peer_spad = 0x20; + } else { + ndev->self_spad = 0x20; + ndev->peer_spad = 0; + } + + INIT_DELAYED_WORK(&ndev->hb_timer, amd_link_hb); + schedule_delayed_work(&ndev->hb_timer, AMD_LINK_HB_TIMEOUT); + + break; + default: + dev_err(ndev_dev(ndev), "AMD NTB does not support B2B mode.\n"); + return -EINVAL; + } + + ndev->db_valid_mask = BIT_ULL(ndev->db_count) - 1; + + /* Mask event interrupts */ + writel(ndev->int_mask, mmio + AMD_INTMASK_OFFSET); + + return 0; +} + +static enum ntb_topo amd_get_topo(struct amd_ntb_dev *ndev) +{ + void __iomem *mmio = ndev->self_mmio; + u32 info; + + info = readl(mmio + AMD_SIDEINFO_OFFSET); + if (info & AMD_SIDE_MASK) + return NTB_TOPO_SEC; + else + return NTB_TOPO_PRI; +} + +static int amd_init_dev(struct amd_ntb_dev *ndev) +{ + struct pci_dev *pdev; + int rc = 0; + + pdev = ndev_pdev(ndev); + + ndev->ntb.topo = amd_get_topo(ndev); + dev_dbg(ndev_dev(ndev), "AMD NTB topo is %s\n", + ntb_topo_string(ndev->ntb.topo)); + + rc = amd_init_ntb(ndev); + if (rc) + return rc; + + rc = amd_init_isr(ndev); + if (rc) { + dev_err(ndev_dev(ndev), "fail to init isr.\n"); + return rc; + } + + ndev->db_valid_mask = BIT_ULL(ndev->db_count) - 1; + + return 0; +} + +static void amd_deinit_dev(struct amd_ntb_dev *ndev) +{ + cancel_delayed_work_sync(&ndev->hb_timer); + + ndev_deinit_isr(ndev); +} + +static int amd_ntb_init_pci(struct amd_ntb_dev *ndev, + struct pci_dev *pdev) +{ + int rc; + + pci_set_drvdata(pdev, ndev); + + rc = pci_enable_device(pdev); + if (rc) + goto err_pci_enable; + + rc = pci_request_regions(pdev, NTB_NAME); + if (rc) + goto err_pci_regions; + + pci_set_master(pdev); + + rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); + if (rc) { + rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); + if (rc) + goto err_dma_mask; + dev_warn(ndev_dev(ndev), "Cannot DMA highmem\n"); + } + + rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); + if (rc) { + rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)); + if (rc) + goto err_dma_mask; + dev_warn(ndev_dev(ndev), "Cannot DMA consistent highmem\n"); + } + + ndev->self_mmio = pci_iomap(pdev, 0, 0); + if (!ndev->self_mmio) { + rc = -EIO; + goto err_dma_mask; + } + ndev->peer_mmio = ndev->self_mmio + AMD_PEER_OFFSET; + + return 0; + +err_dma_mask: + pci_clear_master(pdev); +err_pci_regions: + pci_disable_device(pdev); +err_pci_enable: + pci_set_drvdata(pdev, NULL); + return rc; +} + +static void amd_ntb_deinit_pci(struct amd_ntb_dev *ndev) +{ + struct pci_dev *pdev = ndev_pdev(ndev); + + pci_iounmap(pdev, ndev->self_mmio); + + pci_clear_master(pdev); + pci_release_regions(pdev); + pci_disable_device(pdev); + pci_set_drvdata(pdev, NULL); +} + +static int amd_ntb_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) +{ + struct amd_ntb_dev *ndev; + int rc, node; + + node = dev_to_node(&pdev->dev); + + ndev = kzalloc_node(sizeof(*ndev), GFP_KERNEL, node); + if (!ndev) { + rc = -ENOMEM; + goto err_ndev; + } + + ndev_init_struct(ndev, pdev); + + rc = amd_ntb_init_pci(ndev, pdev); + if (rc) + goto err_init_pci; + + rc = amd_init_dev(ndev); + if (rc) + goto err_init_dev; + + /* write side info */ + amd_init_side_info(ndev); + + amd_poll_link(ndev); + + ndev_init_debugfs(ndev); + + rc = ntb_register_device(&ndev->ntb); + if (rc) + goto err_register; + + dev_info(&pdev->dev, "NTB device registered.\n"); + + return 0; + +err_register: + ndev_deinit_debugfs(ndev); + amd_deinit_dev(ndev); +err_init_dev: + amd_ntb_deinit_pci(ndev); +err_init_pci: + kfree(ndev); +err_ndev: + return rc; +} + +static void amd_ntb_pci_remove(struct pci_dev *pdev) +{ + struct amd_ntb_dev *ndev = pci_get_drvdata(pdev); + + ntb_unregister_device(&ndev->ntb); + ndev_deinit_debugfs(ndev); + amd_deinit_side_info(ndev); + amd_deinit_dev(ndev); + amd_ntb_deinit_pci(ndev); + kfree(ndev); +} + +static const struct file_operations amd_ntb_debugfs_info = { + .owner = THIS_MODULE, + .open = simple_open, + .read = ndev_debugfs_read, +}; + +static const struct pci_device_id amd_ntb_pci_tbl[] = { + {PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NTB)}, + {0} +}; +MODULE_DEVICE_TABLE(pci, amd_ntb_pci_tbl); + +static struct pci_driver amd_ntb_pci_driver = { + .name = KBUILD_MODNAME, + .id_table = amd_ntb_pci_tbl, + .probe = amd_ntb_pci_probe, + .remove = amd_ntb_pci_remove, +}; + +static int __init amd_ntb_pci_driver_init(void) +{ + pr_info("%s %s\n", NTB_DESC, NTB_VER); + + if (debugfs_initialized()) + debugfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); + + return pci_register_driver(&amd_ntb_pci_driver); +} +module_init(amd_ntb_pci_driver_init); + +static void __exit amd_ntb_pci_driver_exit(void) +{ + pci_unregister_driver(&amd_ntb_pci_driver); + debugfs_remove_recursive(debugfs_dir); +} +module_exit(amd_ntb_pci_driver_exit); --- linux-4.4.0.orig/drivers/ntb/hw/amd/ntb_hw_amd.h +++ linux-4.4.0/drivers/ntb/hw/amd/ntb_hw_amd.h @@ -0,0 +1,217 @@ +/* + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * BSD LICENSE + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copy + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of AMD Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "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 COPYRIGHT + * OWNER OR CONTRIBUTORS 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. + * + * AMD PCIe NTB Linux driver + * + * Contact Information: + * Xiangliang Yu + */ + +#ifndef NTB_HW_AMD_H +#define NTB_HW_AMD_H + +#include +#include + +#define PCI_DEVICE_ID_AMD_NTB 0x145B +#define AMD_LINK_HB_TIMEOUT msecs_to_jiffies(1000) +#define AMD_LINK_STATUS_OFFSET 0x68 +#define NTB_LIN_STA_ACTIVE_BIT 0x00000002 +#define NTB_LNK_STA_SPEED_MASK 0x000F0000 +#define NTB_LNK_STA_WIDTH_MASK 0x03F00000 +#define NTB_LNK_STA_ACTIVE(x) (!!((x) & NTB_LIN_STA_ACTIVE_BIT)) +#define NTB_LNK_STA_SPEED(x) (((x) & NTB_LNK_STA_SPEED_MASK) >> 16) +#define NTB_LNK_STA_WIDTH(x) (((x) & NTB_LNK_STA_WIDTH_MASK) >> 20) + +#ifndef read64 +#ifdef readq +#define read64 readq +#else +#define read64 _read64 +static inline u64 _read64(void __iomem *mmio) +{ + u64 low, high; + + low = readl(mmio); + high = readl(mmio + sizeof(u32)); + return low | (high << 32); +} +#endif +#endif + +#ifndef write64 +#ifdef writeq +#define write64 writeq +#else +#define write64 _write64 +static inline void _write64(u64 val, void __iomem *mmio) +{ + writel(val, mmio); + writel(val >> 32, mmio + sizeof(u32)); +} +#endif +#endif + +enum { + /* AMD NTB Capability */ + AMD_MW_CNT = 3, + AMD_DB_CNT = 16, + AMD_MSIX_VECTOR_CNT = 24, + AMD_SPADS_CNT = 16, + + /* AMD NTB register offset */ + AMD_CNTL_OFFSET = 0x200, + + /* NTB control register bits */ + PMM_REG_CTL = BIT(21), + SMM_REG_CTL = BIT(20), + SMM_REG_ACC_PATH = BIT(18), + PMM_REG_ACC_PATH = BIT(17), + NTB_CLK_EN = BIT(16), + + AMD_STA_OFFSET = 0x204, + AMD_PGSLV_OFFSET = 0x208, + AMD_SPAD_MUX_OFFSET = 0x20C, + AMD_SPAD_OFFSET = 0x210, + AMD_RSMU_HCID = 0x250, + AMD_RSMU_SIID = 0x254, + AMD_PSION_OFFSET = 0x300, + AMD_SSION_OFFSET = 0x330, + AMD_MMINDEX_OFFSET = 0x400, + AMD_MMDATA_OFFSET = 0x404, + AMD_SIDEINFO_OFFSET = 0x408, + + AMD_SIDE_MASK = BIT(0), + AMD_SIDE_READY = BIT(1), + + /* limit register */ + AMD_ROMBARLMT_OFFSET = 0x410, + AMD_BAR1LMT_OFFSET = 0x414, + AMD_BAR23LMT_OFFSET = 0x418, + AMD_BAR45LMT_OFFSET = 0x420, + /* xlat address */ + AMD_POMBARXLAT_OFFSET = 0x428, + AMD_BAR1XLAT_OFFSET = 0x430, + AMD_BAR23XLAT_OFFSET = 0x438, + AMD_BAR45XLAT_OFFSET = 0x440, + /* doorbell and interrupt */ + AMD_DBFM_OFFSET = 0x450, + AMD_DBREQ_OFFSET = 0x454, + AMD_MIRRDBSTAT_OFFSET = 0x458, + AMD_DBMASK_OFFSET = 0x45C, + AMD_DBSTAT_OFFSET = 0x460, + AMD_INTMASK_OFFSET = 0x470, + AMD_INTSTAT_OFFSET = 0x474, + + /* event type */ + AMD_PEER_FLUSH_EVENT = BIT(0), + AMD_PEER_RESET_EVENT = BIT(1), + AMD_PEER_D3_EVENT = BIT(2), + AMD_PEER_PMETO_EVENT = BIT(3), + AMD_PEER_D0_EVENT = BIT(4), + AMD_EVENT_INTMASK = (AMD_PEER_FLUSH_EVENT | + AMD_PEER_RESET_EVENT | AMD_PEER_D3_EVENT | + AMD_PEER_PMETO_EVENT | AMD_PEER_D0_EVENT), + + AMD_PMESTAT_OFFSET = 0x480, + AMD_PMSGTRIG_OFFSET = 0x490, + AMD_LTRLATENCY_OFFSET = 0x494, + AMD_FLUSHTRIG_OFFSET = 0x498, + + /* SMU register*/ + AMD_SMUACK_OFFSET = 0x4A0, + AMD_SINRST_OFFSET = 0x4A4, + AMD_RSPNUM_OFFSET = 0x4A8, + AMD_SMU_SPADMUTEX = 0x4B0, + AMD_SMU_SPADOFFSET = 0x4B4, + + AMD_PEER_OFFSET = 0x400, +}; + +struct amd_ntb_dev; + +struct amd_ntb_vec { + struct amd_ntb_dev *ndev; + int num; +}; + +struct amd_ntb_dev { + struct ntb_dev ntb; + + u32 ntb_side; + u32 lnk_sta; + u32 cntl_sta; + u32 peer_sta; + + unsigned char mw_count; + unsigned char spad_count; + unsigned char db_count; + unsigned char msix_vec_count; + + u64 db_valid_mask; + u64 db_mask; + u32 int_mask; + + struct msix_entry *msix; + struct amd_ntb_vec *vec; + + /* synchronize rmw access of db_mask and hw reg */ + spinlock_t db_mask_lock; + + void __iomem *self_mmio; + void __iomem *peer_mmio; + unsigned int self_spad; + unsigned int peer_spad; + + struct delayed_work hb_timer; + + struct dentry *debugfs_dir; + struct dentry *debugfs_info; +}; + +#define ndev_pdev(ndev) ((ndev)->ntb.pdev) +#define ndev_name(ndev) pci_name(ndev_pdev(ndev)) +#define ndev_dev(ndev) (&ndev_pdev(ndev)->dev) +#define ntb_ndev(__ntb) container_of(__ntb, struct amd_ntb_dev, ntb) +#define hb_ndev(__work) container_of(__work, struct amd_ntb_dev, hb_timer.work) + +#endif --- linux-4.4.0.orig/drivers/nvme/host/Kconfig +++ linux-4.4.0/drivers/nvme/host/Kconfig @@ -8,3 +8,14 @@ To compile this driver as a module, choose M here: the module will be called nvme. + +config BLK_DEV_NVME_SCSI + bool "SCSI emulation for NVMe device nodes" + depends on BLK_DEV_NVME + ---help--- + This adds support for the SG_IO ioctl on the NVMe character + and block devices nodes, as well a a translation for a small + number of selected SCSI commands to NVMe commands to the NVMe + driver. If you don't know what this means you probably want + to say N here, and if you know what it means you probably + want to say N as well. --- linux-4.4.0.orig/drivers/nvme/host/Makefile +++ linux-4.4.0/drivers/nvme/host/Makefile @@ -1,5 +1,6 @@ obj-$(CONFIG_BLK_DEV_NVME) += nvme.o -lightnvm-$(CONFIG_NVM) := lightnvm.o -nvme-y += pci.o scsi.o $(lightnvm-y) +lightnvm-$(CONFIG_NVM) := lightnvm.o +nvme-y += core.o pci.o $(lightnvm-y) +nvme-$(CONFIG_BLK_DEV_NVME_SCSI) += scsi.o --- linux-4.4.0.orig/drivers/nvme/host/core.c +++ linux-4.4.0/drivers/nvme/host/core.c @@ -0,0 +1,1472 @@ +/* + * NVM Express device driver + * Copyright (c) 2011-2014, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvme.h" + +#define NVME_MINORS (1U << MINORBITS) + +static int nvme_major; +module_param(nvme_major, int, 0); + +static int nvme_char_major; +module_param(nvme_char_major, int, 0); + +static LIST_HEAD(nvme_ctrl_list); +DEFINE_SPINLOCK(dev_list_lock); + +static struct class *nvme_class; + +static void nvme_free_ns(struct kref *kref) +{ + struct nvme_ns *ns = container_of(kref, struct nvme_ns, kref); + + if (ns->type == NVME_NS_LIGHTNVM) + nvme_nvm_unregister(ns->queue, ns->disk->disk_name); + + spin_lock(&dev_list_lock); + ns->disk->private_data = NULL; + spin_unlock(&dev_list_lock); + + nvme_put_ctrl(ns->ctrl); + put_disk(ns->disk); + kfree(ns); +} + +static void nvme_put_ns(struct nvme_ns *ns) +{ + kref_put(&ns->kref, nvme_free_ns); +} + +static struct nvme_ns *nvme_get_ns_from_disk(struct gendisk *disk) +{ + struct nvme_ns *ns; + + spin_lock(&dev_list_lock); + ns = disk->private_data; + if (ns && !kref_get_unless_zero(&ns->kref)) + ns = NULL; + spin_unlock(&dev_list_lock); + + return ns; +} + +void nvme_requeue_req(struct request *req) +{ + unsigned long flags; + + blk_mq_requeue_request(req); + spin_lock_irqsave(req->q->queue_lock, flags); + if (!blk_queue_stopped(req->q)) + blk_mq_kick_requeue_list(req->q); + spin_unlock_irqrestore(req->q->queue_lock, flags); +} + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags) +{ + bool write = cmd->common.opcode & 1; + struct request *req; + + req = blk_mq_alloc_request(q, write, flags); + if (IS_ERR(req)) + return req; + + req->cmd_type = REQ_TYPE_DRV_PRIV; + req->cmd_flags |= REQ_FAILFAST_DRIVER; + req->__data_len = 0; + req->__sector = (sector_t) -1; + req->bio = req->biotail = NULL; + + req->cmd = (unsigned char *)cmd; + req->cmd_len = sizeof(struct nvme_command); + req->special = (void *)0; + + return req; +} + +/* + * Returns 0 on success. If the result is negative, it's a Linux error code; + * if the result is positive, it's an NVM Express status code + */ +int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buffer, unsigned bufflen, u32 *result, unsigned timeout) +{ + struct request *req; + int ret; + + req = nvme_alloc_request(q, cmd, 0); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = timeout ? timeout : ADMIN_TIMEOUT; + + if (buffer && bufflen) { + ret = blk_rq_map_kern(q, req, buffer, bufflen, GFP_KERNEL); + if (ret) + goto out; + } + + blk_execute_rq(req->q, NULL, req, 0); + if (result) + *result = (u32)(uintptr_t)req->special; + ret = req->errors; + out: + blk_mq_free_request(req); + return ret; +} + +int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, + void *buffer, unsigned bufflen) +{ + return __nvme_submit_sync_cmd(q, cmd, buffer, bufflen, NULL, 0); +} + +int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, + void __user *meta_buffer, unsigned meta_len, u32 meta_seed, + u32 *result, unsigned timeout) +{ + bool write = cmd->common.opcode & 1; + struct nvme_ns *ns = q->queuedata; + struct gendisk *disk = ns ? ns->disk : NULL; + struct request *req; + struct bio *bio = NULL; + void *meta = NULL; + int ret; + + req = nvme_alloc_request(q, cmd, 0); + if (IS_ERR(req)) + return PTR_ERR(req); + + req->timeout = timeout ? timeout : ADMIN_TIMEOUT; + + if (ubuffer && bufflen) { + ret = blk_rq_map_user(q, req, NULL, ubuffer, bufflen, + GFP_KERNEL); + if (ret) + goto out; + bio = req->bio; + + if (!disk) + goto submit; + bio->bi_bdev = bdget_disk(disk, 0); + if (!bio->bi_bdev) { + ret = -ENODEV; + goto out_unmap; + } + + if (meta_buffer) { + struct bio_integrity_payload *bip; + + meta = kmalloc(meta_len, GFP_KERNEL); + if (!meta) { + ret = -ENOMEM; + goto out_unmap; + } + + if (write) { + if (copy_from_user(meta, meta_buffer, + meta_len)) { + ret = -EFAULT; + goto out_free_meta; + } + } + + bip = bio_integrity_alloc(bio, GFP_KERNEL, 1); + if (IS_ERR(bip)) { + ret = PTR_ERR(bip); + goto out_free_meta; + } + + bip->bip_iter.bi_size = meta_len; + bip->bip_iter.bi_sector = meta_seed; + + ret = bio_integrity_add_page(bio, virt_to_page(meta), + meta_len, offset_in_page(meta)); + if (ret != meta_len) { + ret = -ENOMEM; + goto out_free_meta; + } + } + } + submit: + blk_execute_rq(req->q, disk, req, 0); + ret = req->errors; + if (result) + *result = (u32)(uintptr_t)req->special; + if (meta && !ret && !write) { + if (copy_to_user(meta_buffer, meta, meta_len)) + ret = -EFAULT; + } + out_free_meta: + kfree(meta); + out_unmap: + if (bio) { + if (disk && bio->bi_bdev) + bdput(bio->bi_bdev); + blk_rq_unmap_user(bio); + } + out: + blk_mq_free_request(req); + return ret; +} + +int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, u32 *result, + unsigned timeout) +{ + return __nvme_submit_user_cmd(q, cmd, ubuffer, bufflen, NULL, 0, 0, + result, timeout); +} + +int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id) +{ + struct nvme_command c = { }; + int error; + + /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ + c.identify.opcode = nvme_admin_identify; + c.identify.cns = cpu_to_le32(1); + + *id = kmalloc(sizeof(struct nvme_id_ctrl), GFP_KERNEL); + if (!*id) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, + sizeof(struct nvme_id_ctrl)); + if (error) + kfree(*id); + return error; +} + +static int nvme_identify_ns_list(struct nvme_ctrl *dev, unsigned nsid, __le32 *ns_list) +{ + struct nvme_command c = { }; + + c.identify.opcode = nvme_admin_identify; + c.identify.cns = cpu_to_le32(2); + c.identify.nsid = cpu_to_le32(nsid); + return nvme_submit_sync_cmd(dev->admin_q, &c, ns_list, 0x1000); +} + +int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid, + struct nvme_id_ns **id) +{ + struct nvme_command c = { }; + int error; + + /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ + c.identify.opcode = nvme_admin_identify, + c.identify.nsid = cpu_to_le32(nsid), + + *id = kmalloc(sizeof(struct nvme_id_ns), GFP_KERNEL); + if (!*id) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, + sizeof(struct nvme_id_ns)); + if (error) + kfree(*id); + return error; +} + +int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid, + dma_addr_t dma_addr, u32 *result) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.features.opcode = nvme_admin_get_features; + c.features.nsid = cpu_to_le32(nsid); + c.features.prp1 = cpu_to_le64(dma_addr); + c.features.fid = cpu_to_le32(fid); + + return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0, result, 0); +} + +int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11, + dma_addr_t dma_addr, u32 *result) +{ + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.features.opcode = nvme_admin_set_features; + c.features.prp1 = cpu_to_le64(dma_addr); + c.features.fid = cpu_to_le32(fid); + c.features.dword11 = cpu_to_le32(dword11); + + return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0, result, 0); +} + +int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log) +{ + struct nvme_command c = { }; + int error; + + c.common.opcode = nvme_admin_get_log_page, + c.common.nsid = cpu_to_le32(0xFFFFFFFF), + c.common.cdw10[0] = cpu_to_le32( + (((sizeof(struct nvme_smart_log) / 4) - 1) << 16) | + NVME_LOG_SMART), + + *log = kmalloc(sizeof(struct nvme_smart_log), GFP_KERNEL); + if (!*log) + return -ENOMEM; + + error = nvme_submit_sync_cmd(dev->admin_q, &c, *log, + sizeof(struct nvme_smart_log)); + if (error) + kfree(*log); + return error; +} + +int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count) +{ + u32 q_count = (*count - 1) | ((*count - 1) << 16); + u32 result; + int status, nr_io_queues; + + status = nvme_set_features(ctrl, NVME_FEAT_NUM_QUEUES, q_count, 0, + &result); + if (status) + return status; + + nr_io_queues = min(result & 0xffff, result >> 16) + 1; + *count = min(*count, nr_io_queues); + return 0; +} + +static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) +{ + struct nvme_user_io io; + struct nvme_command c; + unsigned length, meta_len; + void __user *metadata; + + if (copy_from_user(&io, uio, sizeof(io))) + return -EFAULT; + + switch (io.opcode) { + case nvme_cmd_write: + case nvme_cmd_read: + case nvme_cmd_compare: + break; + default: + return -EINVAL; + } + + length = (io.nblocks + 1) << ns->lba_shift; + meta_len = (io.nblocks + 1) * ns->ms; + metadata = (void __user *)(uintptr_t)io.metadata; + + if (ns->ext) { + length += meta_len; + meta_len = 0; + } else if (meta_len) { + if ((io.metadata & 3) || !io.metadata) + return -EINVAL; + } + + memset(&c, 0, sizeof(c)); + c.rw.opcode = io.opcode; + c.rw.flags = io.flags; + c.rw.nsid = cpu_to_le32(ns->ns_id); + c.rw.slba = cpu_to_le64(io.slba); + c.rw.length = cpu_to_le16(io.nblocks); + c.rw.control = cpu_to_le16(io.control); + c.rw.dsmgmt = cpu_to_le32(io.dsmgmt); + c.rw.reftag = cpu_to_le32(io.reftag); + c.rw.apptag = cpu_to_le16(io.apptag); + c.rw.appmask = cpu_to_le16(io.appmask); + + return __nvme_submit_user_cmd(ns->queue, &c, + (void __user *)(uintptr_t)io.addr, length, + metadata, meta_len, io.slba, NULL, 0); +} + +static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns, + struct nvme_passthru_cmd __user *ucmd) +{ + struct nvme_passthru_cmd cmd; + struct nvme_command c; + unsigned timeout = 0; + int status; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + if (copy_from_user(&cmd, ucmd, sizeof(cmd))) + return -EFAULT; + + memset(&c, 0, sizeof(c)); + c.common.opcode = cmd.opcode; + c.common.flags = cmd.flags; + c.common.nsid = cpu_to_le32(cmd.nsid); + c.common.cdw2[0] = cpu_to_le32(cmd.cdw2); + c.common.cdw2[1] = cpu_to_le32(cmd.cdw3); + c.common.cdw10[0] = cpu_to_le32(cmd.cdw10); + c.common.cdw10[1] = cpu_to_le32(cmd.cdw11); + c.common.cdw10[2] = cpu_to_le32(cmd.cdw12); + c.common.cdw10[3] = cpu_to_le32(cmd.cdw13); + c.common.cdw10[4] = cpu_to_le32(cmd.cdw14); + c.common.cdw10[5] = cpu_to_le32(cmd.cdw15); + + if (cmd.timeout_ms) + timeout = msecs_to_jiffies(cmd.timeout_ms); + + status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, + (void __user *)(uintptr_t)cmd.addr, cmd.data_len, + &cmd.result, timeout); + if (status >= 0) { + if (put_user(cmd.result, &ucmd->result)) + return -EFAULT; + } + + return status; +} + +static int nvme_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + + switch (cmd) { + case NVME_IOCTL_ID: + force_successful_syscall_return(); + return ns->ns_id; + case NVME_IOCTL_ADMIN_CMD: + return nvme_user_cmd(ns->ctrl, NULL, (void __user *)arg); + case NVME_IOCTL_IO_CMD: + return nvme_user_cmd(ns->ctrl, ns, (void __user *)arg); + case NVME_IOCTL_SUBMIT_IO: + return nvme_submit_io(ns, (void __user *)arg); +#ifdef CONFIG_BLK_DEV_NVME_SCSI + case SG_GET_VERSION_NUM: + return nvme_sg_get_version_num((void __user *)arg); + case SG_IO: + return nvme_sg_io(ns, (void __user *)arg); +#endif + default: + return -ENOTTY; + } +} + +#ifdef CONFIG_COMPAT +static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case SG_IO: + return -ENOIOCTLCMD; + } + return nvme_ioctl(bdev, mode, cmd, arg); +} +#else +#define nvme_compat_ioctl NULL +#endif + +static int nvme_open(struct block_device *bdev, fmode_t mode) +{ + return nvme_get_ns_from_disk(bdev->bd_disk) ? 0 : -ENXIO; +} + +static void nvme_release(struct gendisk *disk, fmode_t mode) +{ + nvme_put_ns(disk->private_data); +} + +static int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo) +{ + /* some standard values */ + geo->heads = 1 << 6; + geo->sectors = 1 << 5; + geo->cylinders = get_capacity(bdev->bd_disk) >> 11; + return 0; +} + +#ifdef CONFIG_BLK_DEV_INTEGRITY +static void nvme_init_integrity(struct nvme_ns *ns) +{ + struct blk_integrity integrity; + + switch (ns->pi_type) { + case NVME_NS_DPS_PI_TYPE3: + integrity.profile = &t10_pi_type3_crc; + break; + case NVME_NS_DPS_PI_TYPE1: + case NVME_NS_DPS_PI_TYPE2: + integrity.profile = &t10_pi_type1_crc; + break; + default: + integrity.profile = NULL; + break; + } + integrity.tuple_size = ns->ms; + blk_integrity_register(ns->disk, &integrity); + blk_queue_max_integrity_segments(ns->queue, 1); +} +#else +static void nvme_init_integrity(struct nvme_ns *ns) +{ +} +#endif /* CONFIG_BLK_DEV_INTEGRITY */ + +static void nvme_config_discard(struct nvme_ns *ns) +{ + u32 logical_block_size = queue_logical_block_size(ns->queue); + ns->queue->limits.discard_zeroes_data = 0; + ns->queue->limits.discard_alignment = logical_block_size; + ns->queue->limits.discard_granularity = logical_block_size; + blk_queue_max_discard_sectors(ns->queue, 0xffffffff); + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, ns->queue); +} + +static int nvme_revalidate_disk(struct gendisk *disk) +{ + struct nvme_ns *ns = disk->private_data; + struct nvme_id_ns *id; + u8 lbaf, pi_type; + u16 old_ms; + unsigned short bs; + + if (nvme_identify_ns(ns->ctrl, ns->ns_id, &id)) { + dev_warn(ns->ctrl->dev, "%s: Identify failure nvme%dn%d\n", + __func__, ns->ctrl->instance, ns->ns_id); + return -ENODEV; + } + if (id->ncap == 0) { + kfree(id); + return -ENODEV; + } + + if (nvme_nvm_ns_supported(ns, id) && ns->type != NVME_NS_LIGHTNVM) { + if (nvme_nvm_register(ns->queue, disk->disk_name)) { + dev_warn(ns->ctrl->dev, + "%s: LightNVM init failure\n", __func__); + kfree(id); + return -ENODEV; + } + ns->type = NVME_NS_LIGHTNVM; + } + + if (ns->ctrl->vs >= NVME_VS(1, 1)) + memcpy(ns->eui, id->eui64, sizeof(ns->eui)); + if (ns->ctrl->vs >= NVME_VS(1, 2)) + memcpy(ns->uuid, id->nguid, sizeof(ns->uuid)); + + old_ms = ns->ms; + lbaf = id->flbas & NVME_NS_FLBAS_LBA_MASK; + ns->lba_shift = id->lbaf[lbaf].ds; + ns->ms = le16_to_cpu(id->lbaf[lbaf].ms); + ns->ext = ns->ms && (id->flbas & NVME_NS_FLBAS_META_EXT); + + /* + * If identify namespace failed, use default 512 byte block size so + * block layer can use before failing read/write for 0 capacity. + */ + if (ns->lba_shift == 0) + ns->lba_shift = 9; + bs = 1 << ns->lba_shift; + /* XXX: PI implementation requires metadata equal t10 pi tuple size */ + pi_type = ns->ms == sizeof(struct t10_pi_tuple) ? + id->dps & NVME_NS_DPS_PI_MASK : 0; + + blk_mq_freeze_queue(disk->queue); + if (blk_get_integrity(disk) && (ns->pi_type != pi_type || + ns->ms != old_ms || + bs != queue_logical_block_size(disk->queue) || + (ns->ms && ns->ext))) + blk_integrity_unregister(disk); + + ns->pi_type = pi_type; + blk_queue_logical_block_size(ns->queue, bs); + + if (ns->ms && !blk_get_integrity(disk) && !ns->ext) + nvme_init_integrity(ns); + if (ns->ms && !(ns->ms == 8 && ns->pi_type) && !blk_get_integrity(disk)) + set_capacity(disk, 0); + else + set_capacity(disk, le64_to_cpup(&id->nsze) << (ns->lba_shift - 9)); + + if (ns->ctrl->oncs & NVME_CTRL_ONCS_DSM) + nvme_config_discard(ns); + blk_mq_unfreeze_queue(disk->queue); + + kfree(id); + return 0; +} + +static char nvme_pr_type(enum pr_type type) +{ + switch (type) { + case PR_WRITE_EXCLUSIVE: + return 1; + case PR_EXCLUSIVE_ACCESS: + return 2; + case PR_WRITE_EXCLUSIVE_REG_ONLY: + return 3; + case PR_EXCLUSIVE_ACCESS_REG_ONLY: + return 4; + case PR_WRITE_EXCLUSIVE_ALL_REGS: + return 5; + case PR_EXCLUSIVE_ACCESS_ALL_REGS: + return 6; + default: + return 0; + } +}; + +static int nvme_pr_command(struct block_device *bdev, u32 cdw10, + u64 key, u64 sa_key, u8 op) +{ + struct nvme_ns *ns = bdev->bd_disk->private_data; + struct nvme_command c; + u8 data[16] = { 0, }; + + put_unaligned_le64(key, &data[0]); + put_unaligned_le64(sa_key, &data[8]); + + memset(&c, 0, sizeof(c)); + c.common.opcode = op; + c.common.nsid = cpu_to_le32(ns->ns_id); + c.common.cdw10[0] = cpu_to_le32(cdw10); + + return nvme_submit_sync_cmd(ns->queue, &c, data, 16); +} + +static int nvme_pr_register(struct block_device *bdev, u64 old, + u64 new, unsigned flags) +{ + u32 cdw10; + + if (flags & ~PR_FL_IGNORE_KEY) + return -EOPNOTSUPP; + + cdw10 = old ? 2 : 0; + cdw10 |= (flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0; + cdw10 |= (1 << 30) | (1 << 31); /* PTPL=1 */ + return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_register); +} + +static int nvme_pr_reserve(struct block_device *bdev, u64 key, + enum pr_type type, unsigned flags) +{ + u32 cdw10; + + if (flags & ~PR_FL_IGNORE_KEY) + return -EOPNOTSUPP; + + cdw10 = nvme_pr_type(type) << 8; + cdw10 |= ((flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0); + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_acquire); +} + +static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new, + enum pr_type type, bool abort) +{ + u32 cdw10 = nvme_pr_type(type) << 8 | abort ? 2 : 1; + return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_acquire); +} + +static int nvme_pr_clear(struct block_device *bdev, u64 key) +{ + u32 cdw10 = 1 | (key ? 1 << 3 : 0); + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register); +} + +static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type) +{ + u32 cdw10 = nvme_pr_type(type) << 8 | key ? 1 << 3 : 0; + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release); +} + +static const struct pr_ops nvme_pr_ops = { + .pr_register = nvme_pr_register, + .pr_reserve = nvme_pr_reserve, + .pr_release = nvme_pr_release, + .pr_preempt = nvme_pr_preempt, + .pr_clear = nvme_pr_clear, +}; + +static const struct block_device_operations nvme_fops = { + .owner = THIS_MODULE, + .ioctl = nvme_ioctl, + .compat_ioctl = nvme_compat_ioctl, + .open = nvme_open, + .release = nvme_release, + .getgeo = nvme_getgeo, + .revalidate_disk= nvme_revalidate_disk, + .pr_ops = &nvme_pr_ops, +}; + +static int nvme_wait_ready(struct nvme_ctrl *ctrl, u64 cap, bool enabled) +{ + unsigned long timeout = + ((NVME_CAP_TIMEOUT(cap) + 1) * HZ / 2) + jiffies; + u32 csts, bit = enabled ? NVME_CSTS_RDY : 0; + int ret; + + while ((ret = ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &csts)) == 0) { + if ((csts & NVME_CSTS_RDY) == bit) + break; + + msleep(100); + if (fatal_signal_pending(current)) + return -EINTR; + if (time_after(jiffies, timeout)) { + dev_err(ctrl->dev, + "Device not ready; aborting %s\n", enabled ? + "initialisation" : "reset"); + return -ENODEV; + } + } + + return ret; +} + +/* + * If the device has been passed off to us in an enabled state, just clear + * the enabled bit. The spec says we should set the 'shutdown notification + * bits', but doing so may cause the device to complete commands to the + * admin queue ... and we don't know what memory that might be pointing at! + */ +int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap) +{ + int ret; + + ctrl->ctrl_config &= ~NVME_CC_SHN_MASK; + ctrl->ctrl_config &= ~NVME_CC_ENABLE; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + return nvme_wait_ready(ctrl, cap, false); +} + +int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap) +{ + /* + * Default to a 4K page size, with the intention to update this + * path in the future to accomodate architectures with differing + * kernel and IO page sizes. + */ + unsigned dev_page_min = NVME_CAP_MPSMIN(cap) + 12, page_shift = 12; + int ret; + + if (page_shift < dev_page_min) { + dev_err(ctrl->dev, + "Minimum device page size %u too large for host (%u)\n", + 1 << dev_page_min, 1 << page_shift); + return -ENODEV; + } + + ctrl->page_size = 1 << page_shift; + + ctrl->ctrl_config = NVME_CC_CSS_NVM; + ctrl->ctrl_config |= (page_shift - 12) << NVME_CC_MPS_SHIFT; + ctrl->ctrl_config |= NVME_CC_ARB_RR | NVME_CC_SHN_NONE; + ctrl->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES; + ctrl->ctrl_config |= NVME_CC_ENABLE; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + return nvme_wait_ready(ctrl, cap, true); +} + +int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl) +{ + unsigned long timeout = SHUTDOWN_TIMEOUT + jiffies; + u32 csts; + int ret; + + ctrl->ctrl_config &= ~NVME_CC_SHN_MASK; + ctrl->ctrl_config |= NVME_CC_SHN_NORMAL; + + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC, ctrl->ctrl_config); + if (ret) + return ret; + + while ((ret = ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &csts)) == 0) { + if ((csts & NVME_CSTS_SHST_MASK) == NVME_CSTS_SHST_CMPLT) + break; + + msleep(100); + if (fatal_signal_pending(current)) + return -EINTR; + if (time_after(jiffies, timeout)) { + dev_err(ctrl->dev, + "Device shutdown incomplete; abort shutdown\n"); + return -ENODEV; + } + } + + return ret; +} + +/* + * Initialize the cached copies of the Identify data and various controller + * register in our nvme_ctrl structure. This should be called as soon as + * the admin queue is fully up and running. + */ +int nvme_init_identify(struct nvme_ctrl *ctrl) +{ + struct nvme_id_ctrl *id; + u64 cap; + int ret, page_shift; + + ret = ctrl->ops->reg_read32(ctrl, NVME_REG_VS, &ctrl->vs); + if (ret) { + dev_err(ctrl->dev, "Reading VS failed (%d)\n", ret); + return ret; + } + + ret = ctrl->ops->reg_read64(ctrl, NVME_REG_CAP, &cap); + if (ret) { + dev_err(ctrl->dev, "Reading CAP failed (%d)\n", ret); + return ret; + } + page_shift = NVME_CAP_MPSMIN(cap) + 12; + + if (ctrl->vs >= NVME_VS(1, 1)) + ctrl->subsystem = NVME_CAP_NSSRC(cap); + + ret = nvme_identify_ctrl(ctrl, &id); + if (ret) { + dev_err(ctrl->dev, "Identify Controller failed (%d)\n", ret); + return -EIO; + } + + ctrl->oncs = le16_to_cpup(&id->oncs); + atomic_set(&ctrl->abort_limit, id->acl + 1); + ctrl->vwc = id->vwc; + memcpy(ctrl->serial, id->sn, sizeof(id->sn)); + memcpy(ctrl->model, id->mn, sizeof(id->mn)); + memcpy(ctrl->firmware_rev, id->fr, sizeof(id->fr)); + if (id->mdts) + ctrl->max_hw_sectors = 1 << (id->mdts + page_shift - 9); + else + ctrl->max_hw_sectors = UINT_MAX; + + if ((ctrl->quirks & NVME_QUIRK_STRIPE_SIZE) && id->vs[3]) { + unsigned int max_hw_sectors; + + ctrl->stripe_size = 1 << (id->vs[3] + page_shift); + max_hw_sectors = ctrl->stripe_size >> (page_shift - 9); + if (ctrl->max_hw_sectors) { + ctrl->max_hw_sectors = min(max_hw_sectors, + ctrl->max_hw_sectors); + } else { + ctrl->max_hw_sectors = max_hw_sectors; + } + } + + kfree(id); + return 0; +} + +static int nvme_dev_open(struct inode *inode, struct file *file) +{ + struct nvme_ctrl *ctrl; + int instance = iminor(inode); + int ret = -ENODEV; + + spin_lock(&dev_list_lock); + list_for_each_entry(ctrl, &nvme_ctrl_list, node) { + if (ctrl->instance != instance) + continue; + + if (!ctrl->admin_q) { + ret = -EWOULDBLOCK; + break; + } + if (!kref_get_unless_zero(&ctrl->kref)) + break; + file->private_data = ctrl; + ret = 0; + break; + } + spin_unlock(&dev_list_lock); + + return ret; +} + +static int nvme_dev_release(struct inode *inode, struct file *file) +{ + nvme_put_ctrl(file->private_data); + return 0; +} + +static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp) +{ + struct nvme_ns *ns; + int ret; + + mutex_lock(&ctrl->namespaces_mutex); + if (list_empty(&ctrl->namespaces)) { + ret = -ENOTTY; + goto out_unlock; + } + + ns = list_first_entry(&ctrl->namespaces, struct nvme_ns, list); + if (ns != list_last_entry(&ctrl->namespaces, struct nvme_ns, list)) { + dev_warn(ctrl->dev, + "NVME_IOCTL_IO_CMD not supported when multiple namespaces present!\n"); + ret = -EINVAL; + goto out_unlock; + } + + dev_warn(ctrl->dev, + "using deprecated NVME_IOCTL_IO_CMD ioctl on the char device!\n"); + kref_get(&ns->kref); + mutex_unlock(&ctrl->namespaces_mutex); + + ret = nvme_user_cmd(ctrl, ns, argp); + nvme_put_ns(ns); + return ret; + +out_unlock: + mutex_unlock(&ctrl->namespaces_mutex); + return ret; +} + +static long nvme_dev_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct nvme_ctrl *ctrl = file->private_data; + void __user *argp = (void __user *)arg; + + switch (cmd) { + case NVME_IOCTL_ADMIN_CMD: + return nvme_user_cmd(ctrl, NULL, argp); + case NVME_IOCTL_IO_CMD: + return nvme_dev_user_cmd(ctrl, argp); + case NVME_IOCTL_RESET: + dev_warn(ctrl->dev, "resetting controller\n"); + return ctrl->ops->reset_ctrl(ctrl); + case NVME_IOCTL_SUBSYS_RESET: + return nvme_reset_subsystem(ctrl); + default: + return -ENOTTY; + } +} + +static const struct file_operations nvme_dev_fops = { + .owner = THIS_MODULE, + .open = nvme_dev_open, + .release = nvme_dev_release, + .unlocked_ioctl = nvme_dev_ioctl, + .compat_ioctl = nvme_dev_ioctl, +}; + +static ssize_t nvme_sysfs_reset(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t count) +{ + struct nvme_ctrl *ctrl = dev_get_drvdata(dev); + int ret; + + ret = ctrl->ops->reset_ctrl(ctrl); + if (ret < 0) + return ret; + return count; +} +static DEVICE_ATTR(reset_controller, S_IWUSR, NULL, nvme_sysfs_reset); + +static ssize_t uuid_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%pU\n", ns->uuid); +} +static DEVICE_ATTR(uuid, S_IRUGO, uuid_show, NULL); + +static ssize_t eui_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%8phd\n", ns->eui); +} +static DEVICE_ATTR(eui, S_IRUGO, eui_show, NULL); + +static ssize_t nsid_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + return sprintf(buf, "%d\n", ns->ns_id); +} +static DEVICE_ATTR(nsid, S_IRUGO, nsid_show, NULL); + +static struct attribute *nvme_ns_attrs[] = { + &dev_attr_uuid.attr, + &dev_attr_eui.attr, + &dev_attr_nsid.attr, + NULL, +}; + +static umode_t nvme_attrs_are_visible(struct kobject *kobj, + struct attribute *a, int n) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct nvme_ns *ns = dev_to_disk(dev)->private_data; + + if (a == &dev_attr_uuid.attr) { + if (!memchr_inv(ns->uuid, 0, sizeof(ns->uuid))) + return 0; + } + if (a == &dev_attr_eui.attr) { + if (!memchr_inv(ns->eui, 0, sizeof(ns->eui))) + return 0; + } + return a->mode; +} + +static const struct attribute_group nvme_ns_attr_group = { + .attrs = nvme_ns_attrs, + .is_visible = nvme_attrs_are_visible, +}; + +#define nvme_show_function(field) \ +static ssize_t field##_show(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + struct nvme_ctrl *ctrl = dev_get_drvdata(dev); \ + return sprintf(buf, "%.*s\n", (int)sizeof(ctrl->field), ctrl->field); \ +} \ +static DEVICE_ATTR(field, S_IRUGO, field##_show, NULL); + +nvme_show_function(model); +nvme_show_function(serial); +nvme_show_function(firmware_rev); + +static struct attribute *nvme_dev_attrs[] = { + &dev_attr_reset_controller.attr, + &dev_attr_model.attr, + &dev_attr_serial.attr, + &dev_attr_firmware_rev.attr, + NULL +}; + +static struct attribute_group nvme_dev_attrs_group = { + .attrs = nvme_dev_attrs, +}; + +static const struct attribute_group *nvme_dev_attr_groups[] = { + &nvme_dev_attrs_group, + NULL, +}; + +static int ns_cmp(void *priv, struct list_head *a, struct list_head *b) +{ + struct nvme_ns *nsa = container_of(a, struct nvme_ns, list); + struct nvme_ns *nsb = container_of(b, struct nvme_ns, list); + + return nsa->ns_id - nsb->ns_id; +} + +static struct nvme_ns *nvme_find_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + + lockdep_assert_held(&ctrl->namespaces_mutex); + + list_for_each_entry(ns, &ctrl->namespaces, list) { + if (ns->ns_id == nsid) + return ns; + if (ns->ns_id > nsid) + break; + } + return NULL; +} + +static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + struct gendisk *disk; + int node = dev_to_node(ctrl->dev); + + lockdep_assert_held(&ctrl->namespaces_mutex); + + ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node); + if (!ns) + return; + + ns->queue = blk_mq_init_queue(ctrl->tagset); + if (IS_ERR(ns->queue)) + goto out_free_ns; + queue_flag_set_unlocked(QUEUE_FLAG_NOMERGES, ns->queue); + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, ns->queue); + ns->queue->queuedata = ns; + ns->ctrl = ctrl; + + disk = alloc_disk_node(0, node); + if (!disk) + goto out_free_queue; + + kref_init(&ns->kref); + ns->ns_id = nsid; + ns->disk = disk; + ns->lba_shift = 9; /* set to a default value for 512 until disk is validated */ + + blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift); + if (ctrl->max_hw_sectors) { + blk_queue_max_hw_sectors(ns->queue, ctrl->max_hw_sectors); + blk_queue_max_segments(ns->queue, + (ctrl->max_hw_sectors / (ctrl->page_size >> 9)) + 1); + } + if (ctrl->stripe_size) + blk_queue_chunk_sectors(ns->queue, ctrl->stripe_size >> 9); + if (ctrl->vwc & NVME_CTRL_VWC_PRESENT) + blk_queue_flush(ns->queue, REQ_FLUSH | REQ_FUA); + blk_queue_virt_boundary(ns->queue, ctrl->page_size - 1); + + disk->major = nvme_major; + disk->first_minor = 0; + disk->fops = &nvme_fops; + disk->private_data = ns; + disk->queue = ns->queue; + disk->driverfs_dev = ctrl->device; + disk->flags = GENHD_FL_EXT_DEVT; + sprintf(disk->disk_name, "nvme%dn%d", ctrl->instance, nsid); + + if (nvme_revalidate_disk(ns->disk)) + goto out_free_disk; + + list_add_tail(&ns->list, &ctrl->namespaces); + kref_get(&ctrl->kref); + if (ns->type == NVME_NS_LIGHTNVM) + return; + + add_disk(ns->disk); + if (sysfs_create_group(&disk_to_dev(ns->disk)->kobj, + &nvme_ns_attr_group)) + pr_warn("%s: failed to create sysfs group for identification\n", + ns->disk->disk_name); + return; + out_free_disk: + kfree(disk); + out_free_queue: + blk_cleanup_queue(ns->queue); + out_free_ns: + kfree(ns); +} + +static void nvme_ns_remove(struct nvme_ns *ns) +{ + bool kill = nvme_io_incapable(ns->ctrl) && + !blk_queue_dying(ns->queue); + + lockdep_assert_held(&ns->ctrl->namespaces_mutex); + + if (kill) { + blk_set_queue_dying(ns->queue); + + /* + * The controller was shutdown first if we got here through + * device removal. The shutdown may requeue outstanding + * requests. These need to be aborted immediately so + * del_gendisk doesn't block indefinitely for their completion. + */ + blk_mq_abort_requeue_list(ns->queue); + } + if (ns->disk->flags & GENHD_FL_UP) { + if (blk_get_integrity(ns->disk)) + blk_integrity_unregister(ns->disk); + sysfs_remove_group(&disk_to_dev(ns->disk)->kobj, + &nvme_ns_attr_group); + del_gendisk(ns->disk); + } + if (kill || !blk_queue_dying(ns->queue)) { + blk_mq_abort_requeue_list(ns->queue); + blk_cleanup_queue(ns->queue); + } + list_del_init(&ns->list); + nvme_put_ns(ns); +} + +static void nvme_validate_ns(struct nvme_ctrl *ctrl, unsigned nsid) +{ + struct nvme_ns *ns; + + ns = nvme_find_ns(ctrl, nsid); + if (ns) { + if (revalidate_disk(ns->disk)) + nvme_ns_remove(ns); + } else + nvme_alloc_ns(ctrl, nsid); +} + +static int nvme_scan_ns_list(struct nvme_ctrl *ctrl, unsigned nn) +{ + struct nvme_ns *ns; + __le32 *ns_list; + unsigned i, j, nsid, prev = 0, num_lists = DIV_ROUND_UP(nn, 1024); + int ret = 0; + + ns_list = kzalloc(0x1000, GFP_KERNEL); + if (!ns_list) + return -ENOMEM; + + for (i = 0; i < num_lists; i++) { + ret = nvme_identify_ns_list(ctrl, prev, ns_list); + if (ret) + goto out; + + for (j = 0; j < min(nn, 1024U); j++) { + nsid = le32_to_cpu(ns_list[j]); + if (!nsid) + goto out; + + nvme_validate_ns(ctrl, nsid); + + while (++prev < nsid) { + ns = nvme_find_ns(ctrl, prev); + if (ns) + nvme_ns_remove(ns); + } + } + nn -= j; + } + out: + kfree(ns_list); + return ret; +} + +static void __nvme_scan_namespaces(struct nvme_ctrl *ctrl, unsigned nn) +{ + struct nvme_ns *ns, *next; + unsigned i; + + lockdep_assert_held(&ctrl->namespaces_mutex); + + for (i = 1; i <= nn; i++) + nvme_validate_ns(ctrl, i); + + list_for_each_entry_safe(ns, next, &ctrl->namespaces, list) { + if (ns->ns_id > nn) + nvme_ns_remove(ns); + } +} + +void nvme_scan_namespaces(struct nvme_ctrl *ctrl) +{ + struct nvme_id_ctrl *id; + unsigned nn; + + if (nvme_identify_ctrl(ctrl, &id)) + return; + + mutex_lock(&ctrl->namespaces_mutex); + nn = le32_to_cpu(id->nn); + if (ctrl->vs >= NVME_VS(1, 1) && + !(ctrl->quirks & NVME_QUIRK_IDENTIFY_CNS)) { + if (!nvme_scan_ns_list(ctrl, nn)) + goto done; + } + __nvme_scan_namespaces(ctrl, le32_to_cpup(&id->nn)); + done: + list_sort(NULL, &ctrl->namespaces, ns_cmp); + mutex_unlock(&ctrl->namespaces_mutex); + kfree(id); +} + +void nvme_remove_namespaces(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns, *next; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry_safe(ns, next, &ctrl->namespaces, list) + nvme_ns_remove(ns); + mutex_unlock(&ctrl->namespaces_mutex); +} + +static DEFINE_IDA(nvme_instance_ida); + +static int nvme_set_instance(struct nvme_ctrl *ctrl) +{ + int instance, error; + + do { + if (!ida_pre_get(&nvme_instance_ida, GFP_KERNEL)) + return -ENODEV; + + spin_lock(&dev_list_lock); + error = ida_get_new(&nvme_instance_ida, &instance); + spin_unlock(&dev_list_lock); + } while (error == -EAGAIN); + + if (error) + return -ENODEV; + + ctrl->instance = instance; + return 0; +} + +static void nvme_release_instance(struct nvme_ctrl *ctrl) +{ + spin_lock(&dev_list_lock); + ida_remove(&nvme_instance_ida, ctrl->instance); + spin_unlock(&dev_list_lock); +} + +void nvme_uninit_ctrl(struct nvme_ctrl *ctrl) + { + device_destroy(nvme_class, MKDEV(nvme_char_major, ctrl->instance)); + + spin_lock(&dev_list_lock); + list_del(&ctrl->node); + spin_unlock(&dev_list_lock); +} + +static void nvme_free_ctrl(struct kref *kref) +{ + struct nvme_ctrl *ctrl = container_of(kref, struct nvme_ctrl, kref); + + put_device(ctrl->device); + nvme_release_instance(ctrl); + + ctrl->ops->free_ctrl(ctrl); +} + +void nvme_put_ctrl(struct nvme_ctrl *ctrl) +{ + kref_put(&ctrl->kref, nvme_free_ctrl); +} + +/* + * Initialize a NVMe controller structures. This needs to be called during + * earliest initialization so that we have the initialized structured around + * during probing. + */ +int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, + const struct nvme_ctrl_ops *ops, unsigned long quirks) +{ + int ret; + + INIT_LIST_HEAD(&ctrl->namespaces); + mutex_init(&ctrl->namespaces_mutex); + kref_init(&ctrl->kref); + ctrl->dev = dev; + ctrl->ops = ops; + ctrl->quirks = quirks; + + ret = nvme_set_instance(ctrl); + if (ret) + goto out; + + ctrl->device = device_create_with_groups(nvme_class, ctrl->dev, + MKDEV(nvme_char_major, ctrl->instance), + dev, nvme_dev_attr_groups, + "nvme%d", ctrl->instance); + if (IS_ERR(ctrl->device)) { + ret = PTR_ERR(ctrl->device); + goto out_release_instance; + } + get_device(ctrl->device); + dev_set_drvdata(ctrl->device, ctrl); + + spin_lock(&dev_list_lock); + list_add_tail(&ctrl->node, &nvme_ctrl_list); + spin_unlock(&dev_list_lock); + + return 0; +out_release_instance: + nvme_release_instance(ctrl); +out: + return ret; +} + +void nvme_stop_queues(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry(ns, &ctrl->namespaces, list) { + spin_lock_irq(ns->queue->queue_lock); + queue_flag_set(QUEUE_FLAG_STOPPED, ns->queue); + spin_unlock_irq(ns->queue->queue_lock); + + blk_mq_cancel_requeue_work(ns->queue); + blk_mq_stop_hw_queues(ns->queue); + } + mutex_unlock(&ctrl->namespaces_mutex); +} + +void nvme_start_queues(struct nvme_ctrl *ctrl) +{ + struct nvme_ns *ns; + + mutex_lock(&ctrl->namespaces_mutex); + list_for_each_entry(ns, &ctrl->namespaces, list) { + queue_flag_clear_unlocked(QUEUE_FLAG_STOPPED, ns->queue); + blk_mq_start_stopped_hw_queues(ns->queue, true); + blk_mq_kick_requeue_list(ns->queue); + } + mutex_unlock(&ctrl->namespaces_mutex); +} + +int __init nvme_core_init(void) +{ + int result; + + result = register_blkdev(nvme_major, "nvme"); + if (result < 0) + return result; + else if (result > 0) + nvme_major = result; + + result = __register_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme", + &nvme_dev_fops); + if (result < 0) + goto unregister_blkdev; + else if (result > 0) + nvme_char_major = result; + + nvme_class = class_create(THIS_MODULE, "nvme"); + if (IS_ERR(nvme_class)) { + result = PTR_ERR(nvme_class); + goto unregister_chrdev; + } + + return 0; + + unregister_chrdev: + __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); + unregister_blkdev: + unregister_blkdev(nvme_major, "nvme"); + return result; +} + +void nvme_core_exit(void) +{ + unregister_blkdev(nvme_major, "nvme"); + class_destroy(nvme_class); + __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); +} --- linux-4.4.0.orig/drivers/nvme/host/lightnvm.c +++ linux-4.4.0/drivers/nvme/host/lightnvm.c @@ -146,6 +146,16 @@ }; }; +struct nvme_nvm_lp_mlc { + __u16 num_pairs; + __u8 pairs[886]; +}; + +struct nvme_nvm_lp_tbl { + __u8 id[8]; + struct nvme_nvm_lp_mlc mlc; +}; + struct nvme_nvm_id_group { __u8 mtype; __u8 fmtype; @@ -169,7 +179,8 @@ __le32 mpos; __le32 mccap; __le16 cpar; - __u8 reserved[906]; + __u8 reserved[10]; + struct nvme_nvm_lp_tbl lptbl; } __packed; struct nvme_nvm_addr_format { @@ -266,6 +277,15 @@ dst->mccap = le32_to_cpu(src->mccap); dst->cpar = le16_to_cpu(src->cpar); + + if (dst->fmtype == NVM_ID_FMTYPE_MLC) { + memcpy(dst->lptbl.id, src->lptbl.id, 8); + dst->lptbl.mlc.num_pairs = + le16_to_cpu(src->lptbl.mlc.num_pairs); + /* 4 bits per pair */ + memcpy(dst->lptbl.mlc.pairs, src->lptbl.mlc.pairs, + dst->lptbl.mlc.num_pairs >> 1); + } } return 0; @@ -274,7 +294,6 @@ static int nvme_nvm_identity(struct nvm_dev *nvmdev, struct nvm_id *nvm_id) { struct nvme_ns *ns = nvmdev->q->queuedata; - struct nvme_dev *dev = ns->dev; struct nvme_nvm_id *nvme_nvm_id; struct nvme_nvm_command c = {}; int ret; @@ -287,7 +306,7 @@ if (!nvme_nvm_id) return -ENOMEM; - ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c, + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c, nvme_nvm_id, sizeof(struct nvme_nvm_id)); if (ret) { ret = -EIO; @@ -312,9 +331,8 @@ nvm_l2p_update_fn *update_l2p, void *priv) { struct nvme_ns *ns = nvmdev->q->queuedata; - struct nvme_dev *dev = ns->dev; struct nvme_nvm_command c = {}; - u32 len = queue_max_hw_sectors(dev->admin_q) << 9; + u32 len = queue_max_hw_sectors(ns->ctrl->admin_q) << 9; u32 nlb_pr_rq = len / sizeof(u64); u64 cmd_slba = slba; void *entries; @@ -332,10 +350,10 @@ c.l2p.slba = cpu_to_le64(cmd_slba); c.l2p.nlb = cpu_to_le32(cmd_nlb); - ret = nvme_submit_sync_cmd(dev->admin_q, + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c, entries, len); if (ret) { - dev_err(dev->dev, "L2P table transfer failed (%d)\n", + dev_err(ns->ctrl->dev, "L2P table transfer failed (%d)\n", ret); ret = -EIO; goto out; @@ -361,7 +379,7 @@ { struct request_queue *q = nvmdev->q; struct nvme_ns *ns = q->queuedata; - struct nvme_dev *dev = ns->dev; + struct nvme_ctrl *ctrl = ns->ctrl; struct nvme_nvm_command c = {}; struct nvme_nvm_bb_tbl *bb_tbl; int tblsz = sizeof(struct nvme_nvm_bb_tbl) + nr_blocks; @@ -375,41 +393,36 @@ if (!bb_tbl) return -ENOMEM; - ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c, + ret = nvme_submit_sync_cmd(ctrl->admin_q, (struct nvme_command *)&c, bb_tbl, tblsz); if (ret) { - dev_err(dev->dev, "get bad block table failed (%d)\n", ret); + dev_err(ctrl->dev, "get bad block table failed (%d)\n", ret); ret = -EIO; goto out; } if (bb_tbl->tblid[0] != 'B' || bb_tbl->tblid[1] != 'B' || bb_tbl->tblid[2] != 'L' || bb_tbl->tblid[3] != 'T') { - dev_err(dev->dev, "bbt format mismatch\n"); + dev_err(ctrl->dev, "bbt format mismatch\n"); ret = -EINVAL; goto out; } if (le16_to_cpu(bb_tbl->verid) != 1) { ret = -EINVAL; - dev_err(dev->dev, "bbt version not supported\n"); + dev_err(ctrl->dev, "bbt version not supported\n"); goto out; } if (le32_to_cpu(bb_tbl->tblks) != nr_blocks) { ret = -EINVAL; - dev_err(dev->dev, "bbt unsuspected blocks returned (%u!=%u)", + dev_err(ctrl->dev, "bbt unsuspected blocks returned (%u!=%u)", le32_to_cpu(bb_tbl->tblks), nr_blocks); goto out; } ppa = dev_to_generic_addr(nvmdev, ppa); ret = update_bbtbl(ppa, nr_blocks, bb_tbl->blk, priv); - if (ret) { - ret = -EINTR; - goto out; - } - out: kfree(bb_tbl); return ret; @@ -419,7 +432,6 @@ int type) { struct nvme_ns *ns = nvmdev->q->queuedata; - struct nvme_dev *dev = ns->dev; struct nvme_nvm_command c = {}; int ret = 0; @@ -429,10 +441,10 @@ c.set_bb.nlb = cpu_to_le16(rqd->nr_pages - 1); c.set_bb.value = type; - ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c, + ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c, NULL, 0); if (ret) - dev_err(dev->dev, "set bad block table failed (%d)\n", ret); + dev_err(ns->ctrl->dev, "set bad block table failed (%d)\n", ret); return ret; } @@ -453,11 +465,8 @@ static void nvme_nvm_end_io(struct request *rq, int error) { struct nvm_rq *rqd = rq->end_io_data; - struct nvm_dev *dev = rqd->dev; - if (dev->mt && dev->mt->end_io(rqd, error)) - pr_err("nvme: err status: %x result: %lx\n", - rq->errors, (unsigned long)rq->special); + nvm_end_io(rqd, error); kfree(rq->cmd); blk_mq_free_request(rq); @@ -471,7 +480,7 @@ struct bio *bio = rqd->bio; struct nvme_nvm_command *cmd; - rq = blk_mq_alloc_request(q, bio_rw(bio), GFP_KERNEL, 0); + rq = blk_mq_alloc_request(q, bio_rw(bio), 0); if (IS_ERR(rq)) return -ENOMEM; @@ -520,9 +529,8 @@ static void *nvme_nvm_create_dma_pool(struct nvm_dev *nvmdev, char *name) { struct nvme_ns *ns = nvmdev->q->queuedata; - struct nvme_dev *dev = ns->dev; - return dma_pool_create(name, dev->dev, PAGE_SIZE, PAGE_SIZE, 0); + return dma_pool_create(name, ns->ctrl->dev, PAGE_SIZE, PAGE_SIZE, 0); } static void nvme_nvm_destroy_dma_pool(void *pool) @@ -580,8 +588,9 @@ int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id) { - struct nvme_dev *dev = ns->dev; - struct pci_dev *pdev = to_pci_dev(dev->dev); + struct nvme_ctrl *ctrl = ns->ctrl; + /* XXX: this is poking into PCI structures from generic code! */ + struct pci_dev *pdev = to_pci_dev(ctrl->dev); /* QEMU NVMe simulator - PCI ID + Vendor specific bit */ if (pdev->vendor == PCI_VENDOR_ID_CNEX && --- linux-4.4.0.orig/drivers/nvme/host/nvme.h +++ linux-4.4.0/drivers/nvme/host/nvme.h @@ -19,58 +19,77 @@ #include #include +enum { + /* + * Driver internal status code for commands that were cancelled due + * to timeouts or controller shutdown. The value is negative so + * that it a) doesn't overlap with the unsigned hardware error codes, + * and b) can easily be tested for. + */ + NVME_SC_CANCELLED = -EINTR, +}; + extern unsigned char nvme_io_timeout; #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) +extern unsigned char admin_timeout; +#define ADMIN_TIMEOUT (admin_timeout * HZ) + +extern unsigned char shutdown_timeout; +#define SHUTDOWN_TIMEOUT (shutdown_timeout * HZ) + enum { NVME_NS_LBA = 0, NVME_NS_LIGHTNVM = 1, }; /* - * Represents an NVM Express device. Each nvme_dev is a PCI function. + * List of workarounds for devices that required behavior not specified in + * the standard. */ -struct nvme_dev { - struct list_head node; - struct nvme_queue **queues; +enum nvme_quirks { + /* + * Prefers I/O aligned to a stripe size specified in a vendor + * specific Identify field. + */ + NVME_QUIRK_STRIPE_SIZE = (1 << 0), + + /* + * The controller doesn't handle Identify value others than 0 or 1 + * correctly. + */ + NVME_QUIRK_IDENTIFY_CNS = (1 << 1), +}; + +struct nvme_ctrl { + const struct nvme_ctrl_ops *ops; struct request_queue *admin_q; - struct blk_mq_tag_set tagset; - struct blk_mq_tag_set admin_tagset; - u32 __iomem *dbs; struct device *dev; - struct dma_pool *prp_page_pool; - struct dma_pool *prp_small_pool; + struct kref kref; int instance; - unsigned queue_count; - unsigned online_queues; - unsigned max_qid; - int q_depth; - u32 db_stride; - u32 ctrl_config; - struct msix_entry *entry; - struct nvme_bar __iomem *bar; + struct blk_mq_tag_set *tagset; struct list_head namespaces; - struct kref kref; - struct device *device; - struct work_struct reset_work; - struct work_struct probe_work; - struct work_struct scan_work; + struct mutex namespaces_mutex; + struct device *device; /* char device */ + struct list_head node; + char name[12]; char serial[20]; char model[40]; char firmware_rev[8]; - bool subsystem; + + u32 ctrl_config; + + u32 page_size; u32 max_hw_sectors; u32 stripe_size; - u32 page_size; - void __iomem *cmb; - dma_addr_t cmb_dma_addr; - u64 cmb_size; - u32 cmbsz; u16 oncs; - u16 abort_limit; + atomic_t abort_limit; u8 event_limit; u8 vwc; + u32 vs; + bool subsystem; + unsigned long quirks; }; /* @@ -79,11 +98,14 @@ struct nvme_ns { struct list_head list; - struct nvme_dev *dev; + struct nvme_ctrl *ctrl; struct request_queue *queue; struct gendisk *disk; struct kref kref; + u8 eui[8]; + u8 uuid[16]; + unsigned ns_id; int lba_shift; u16 ms; @@ -94,41 +116,156 @@ u32 mode_select_block_len; }; -/* - * The nvme_iod describes the data in an I/O, including the list of PRP - * entries. You can't see it in this data structure because C doesn't let - * me express that. Use nvme_alloc_iod to ensure there's enough space - * allocated to store the PRP list. - */ -struct nvme_iod { - unsigned long private; /* For the use of the submitter of the I/O */ - int npages; /* In the PRP list. 0 means small pool in use */ - int offset; /* Of PRP list */ - int nents; /* Used in scatterlist */ - int length; /* Of data, in bytes */ - dma_addr_t first_dma; - struct scatterlist meta_sg[1]; /* metadata requires single contiguous buffer */ - struct scatterlist sg[0]; +struct nvme_ctrl_ops { + int (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val); + int (*reg_write32)(struct nvme_ctrl *ctrl, u32 off, u32 val); + int (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val); + bool (*io_incapable)(struct nvme_ctrl *ctrl); + int (*reset_ctrl)(struct nvme_ctrl *ctrl); + void (*free_ctrl)(struct nvme_ctrl *ctrl); }; +static inline bool nvme_ctrl_ready(struct nvme_ctrl *ctrl) +{ + u32 val = 0; + + if (ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &val)) + return false; + return val & NVME_CSTS_RDY; +} + +static inline bool nvme_io_incapable(struct nvme_ctrl *ctrl) +{ + u32 val = 0; + + if (ctrl->ops->io_incapable(ctrl)) + return false; + if (ctrl->ops->reg_read32(ctrl, NVME_REG_CSTS, &val)) + return false; + return val & NVME_CSTS_CFS; +} + +static inline int nvme_reset_subsystem(struct nvme_ctrl *ctrl) +{ + if (!ctrl->subsystem) + return -ENOTTY; + return ctrl->ops->reg_write32(ctrl, NVME_REG_NSSR, 0x4E564D65); +} + static inline u64 nvme_block_nr(struct nvme_ns *ns, sector_t sector) { return (sector >> (ns->lba_shift - 9)); } +static inline void nvme_setup_flush(struct nvme_ns *ns, + struct nvme_command *cmnd) +{ + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->common.opcode = nvme_cmd_flush; + cmnd->common.nsid = cpu_to_le32(ns->ns_id); +} + +static inline void nvme_setup_rw(struct nvme_ns *ns, struct request *req, + struct nvme_command *cmnd) +{ + u16 control = 0; + u32 dsmgmt = 0; + + if (req->cmd_flags & REQ_FUA) + control |= NVME_RW_FUA; + if (req->cmd_flags & (REQ_FAILFAST_DEV | REQ_RAHEAD)) + control |= NVME_RW_LR; + + if (req->cmd_flags & REQ_RAHEAD) + dsmgmt |= NVME_RW_DSM_FREQ_PREFETCH; + + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read); + cmnd->rw.command_id = req->tag; + cmnd->rw.nsid = cpu_to_le32(ns->ns_id); + cmnd->rw.slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); + cmnd->rw.length = cpu_to_le16((blk_rq_bytes(req) >> ns->lba_shift) - 1); + + if (ns->ms) { + switch (ns->pi_type) { + case NVME_NS_DPS_PI_TYPE3: + control |= NVME_RW_PRINFO_PRCHK_GUARD; + break; + case NVME_NS_DPS_PI_TYPE1: + case NVME_NS_DPS_PI_TYPE2: + control |= NVME_RW_PRINFO_PRCHK_GUARD | + NVME_RW_PRINFO_PRCHK_REF; + cmnd->rw.reftag = cpu_to_le32( + nvme_block_nr(ns, blk_rq_pos(req))); + break; + } + if (!blk_integrity_rq(req)) + control |= NVME_RW_PRINFO_PRACT; + } + + cmnd->rw.control = cpu_to_le16(control); + cmnd->rw.dsmgmt = cpu_to_le32(dsmgmt); +} + + +static inline int nvme_error_status(u16 status) +{ + switch (status & 0x7ff) { + case NVME_SC_SUCCESS: + return 0; + case NVME_SC_CAP_EXCEEDED: + return -ENOSPC; + default: + return -EIO; + } +} + +static inline bool nvme_req_needs_retry(struct request *req, u16 status) +{ + return !(status & NVME_SC_DNR || blk_noretry_request(req)) && + (jiffies - req->start_time) < req->timeout; +} + +int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap); +int nvme_enable_ctrl(struct nvme_ctrl *ctrl, u64 cap); +int nvme_shutdown_ctrl(struct nvme_ctrl *ctrl); +int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, + const struct nvme_ctrl_ops *ops, unsigned long quirks); +void nvme_uninit_ctrl(struct nvme_ctrl *ctrl); +void nvme_put_ctrl(struct nvme_ctrl *ctrl); +int nvme_init_identify(struct nvme_ctrl *ctrl); + +void nvme_scan_namespaces(struct nvme_ctrl *ctrl); +void nvme_remove_namespaces(struct nvme_ctrl *ctrl); + +void nvme_stop_queues(struct nvme_ctrl *ctrl); +void nvme_start_queues(struct nvme_ctrl *ctrl); + +struct request *nvme_alloc_request(struct request_queue *q, + struct nvme_command *cmd, unsigned int flags); +void nvme_requeue_req(struct request *req); int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, void *buf, unsigned bufflen); int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, - void *buffer, void __user *ubuffer, unsigned bufflen, + void *buffer, unsigned bufflen, u32 *result, unsigned timeout); +int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, u32 *result, + unsigned timeout); +int __nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, + void __user *ubuffer, unsigned bufflen, + void __user *meta_buffer, unsigned meta_len, u32 meta_seed, u32 *result, unsigned timeout); -int nvme_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl **id); -int nvme_identify_ns(struct nvme_dev *dev, unsigned nsid, +int nvme_identify_ctrl(struct nvme_ctrl *dev, struct nvme_id_ctrl **id); +int nvme_identify_ns(struct nvme_ctrl *dev, unsigned nsid, struct nvme_id_ns **id); -int nvme_get_log_page(struct nvme_dev *dev, struct nvme_smart_log **log); -int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid, +int nvme_get_log_page(struct nvme_ctrl *dev, struct nvme_smart_log **log); +int nvme_get_features(struct nvme_ctrl *dev, unsigned fid, unsigned nsid, dma_addr_t dma_addr, u32 *result); -int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11, +int nvme_set_features(struct nvme_ctrl *dev, unsigned fid, unsigned dword11, dma_addr_t dma_addr, u32 *result); +int nvme_set_queue_count(struct nvme_ctrl *ctrl, int *count); + +extern spinlock_t dev_list_lock; struct sg_io_hdr; @@ -154,4 +291,7 @@ } #endif /* CONFIG_NVM */ +int __init nvme_core_init(void); +void nvme_core_exit(void); + #endif /* _NVME_H */ --- linux-4.4.0.orig/drivers/nvme/host/pci.c +++ linux-4.4.0/drivers/nvme/host/pci.c @@ -12,6 +12,7 @@ * more details. */ +#include #include #include #include @@ -28,10 +29,10 @@ #include #include #include -#include #include #include #include +#include #include #include #include @@ -39,23 +40,24 @@ #include #include #include -#include -#include #include #include -#include #include "nvme.h" -#define NVME_MINORS (1U << MINORBITS) #define NVME_Q_DEPTH 1024 #define NVME_AQ_DEPTH 256 #define SQ_SIZE(depth) (depth * sizeof(struct nvme_command)) #define CQ_SIZE(depth) (depth * sizeof(struct nvme_completion)) -#define ADMIN_TIMEOUT (admin_timeout * HZ) -#define SHUTDOWN_TIMEOUT (shutdown_timeout * HZ) + +/* + * We handle AEN commands ourselves and don't even let the + * block layer know about them. + */ +#define NVME_NR_AEN_COMMANDS 1 +#define NVME_AQ_BLKMQ_DEPTH (NVME_AQ_DEPTH - NVME_NR_AEN_COMMANDS) -static unsigned char admin_timeout = 60; +unsigned char admin_timeout = 60; module_param(admin_timeout, byte, 0644); MODULE_PARM_DESC(admin_timeout, "timeout in seconds for admin commands"); @@ -63,16 +65,10 @@ module_param_named(io_timeout, nvme_io_timeout, byte, 0644); MODULE_PARM_DESC(io_timeout, "timeout in seconds for I/O"); -static unsigned char shutdown_timeout = 5; +unsigned char shutdown_timeout = 5; module_param(shutdown_timeout, byte, 0644); MODULE_PARM_DESC(shutdown_timeout, "timeout in seconds for controller shutdown"); -static int nvme_major; -module_param(nvme_major, int, 0); - -static int nvme_char_major; -module_param(nvme_char_major, int, 0); - static int use_threaded_interrupts; module_param(use_threaded_interrupts, int, 0); @@ -80,28 +76,60 @@ module_param(use_cmb_sqes, bool, 0644); MODULE_PARM_DESC(use_cmb_sqes, "use controller's memory buffer for I/O SQes"); -static DEFINE_SPINLOCK(dev_list_lock); static LIST_HEAD(dev_list); static struct task_struct *nvme_thread; static struct workqueue_struct *nvme_workq; static wait_queue_head_t nvme_kthread_wait; -static struct class *nvme_class; +struct nvme_dev; +struct nvme_queue; -static int __nvme_reset(struct nvme_dev *dev); static int nvme_reset(struct nvme_dev *dev); static void nvme_process_cq(struct nvme_queue *nvmeq); -static void nvme_dead_ctrl(struct nvme_dev *dev); +static void nvme_remove_dead_ctrl(struct nvme_dev *dev); +static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown); -struct async_cmd_info { - struct kthread_work work; - struct kthread_worker *worker; - struct request *req; - u32 result; - int status; - void *ctx; +/* + * Represents an NVM Express device. Each nvme_dev is a PCI function. + */ +struct nvme_dev { + struct list_head node; + struct nvme_queue **queues; + struct blk_mq_tag_set tagset; + struct blk_mq_tag_set admin_tagset; + u32 __iomem *dbs; + struct device *dev; + struct dma_pool *prp_page_pool; + struct dma_pool *prp_small_pool; + unsigned queue_count; + unsigned online_queues; + unsigned max_qid; + int q_depth; + u32 db_stride; + struct msix_entry *entry; + void __iomem *bar; + struct work_struct reset_work; + struct work_struct scan_work; + struct work_struct remove_work; + struct mutex shutdown_lock; + bool subsystem; + void __iomem *cmb; + dma_addr_t cmb_dma_addr; + u64 cmb_size; + u32 cmbsz; + unsigned long flags; + +#define NVME_CTRL_RESETTING 0 + + struct nvme_ctrl ctrl; + struct completion ioq_wait; }; +static inline struct nvme_dev *to_nvme_dev(struct nvme_ctrl *ctrl) +{ + return container_of(ctrl, struct nvme_dev, ctrl); +} + /* * An NVM Express queue. Each device has at least two (one for admin * commands and one for I/O commands). @@ -126,7 +154,24 @@ u16 qid; u8 cq_phase; u8 cqe_seen; - struct async_cmd_info cmdinfo; +}; + +/* + * The nvme_iod describes the data in an I/O, including the list of PRP + * entries. You can't see it in this data structure because C doesn't let + * me express that. Use nvme_init_iod to ensure there's enough space + * allocated to store the PRP list. + */ +struct nvme_iod { + struct nvme_queue *nvmeq; + int aborted; + int npages; /* In the PRP list. 0 means small pool in use */ + int nents; /* Used in scatterlist */ + int length; /* Of data, in bytes */ + dma_addr_t first_dma; + struct scatterlist meta_sg; /* metadata requires single contiguous buffer */ + struct scatterlist *sg; + struct scatterlist inline_sg[0]; }; /* @@ -148,23 +193,11 @@ BUILD_BUG_ON(sizeof(struct nvme_smart_log) != 512); } -typedef void (*nvme_completion_fn)(struct nvme_queue *, void *, - struct nvme_completion *); - -struct nvme_cmd_info { - nvme_completion_fn fn; - void *ctx; - int aborted; - struct nvme_queue *nvmeq; - struct nvme_iod iod[0]; -}; - /* * Max size of iod being embedded in the request payload */ #define NVME_INT_PAGES 2 -#define NVME_INT_BYTES(dev) (NVME_INT_PAGES * (dev)->page_size) -#define NVME_INT_MASK 0x01 +#define NVME_INT_BYTES(dev) (NVME_INT_PAGES * (dev)->ctrl.page_size) /* * Will slightly overestimate the number of pages needed. This is OK @@ -173,19 +206,22 @@ */ static int nvme_npages(unsigned size, struct nvme_dev *dev) { - unsigned nprps = DIV_ROUND_UP(size + dev->page_size, dev->page_size); + unsigned nprps = DIV_ROUND_UP(size + dev->ctrl.page_size, + dev->ctrl.page_size); return DIV_ROUND_UP(8 * nprps, PAGE_SIZE - 8); } -static unsigned int nvme_cmd_size(struct nvme_dev *dev) +static unsigned int nvme_iod_alloc_size(struct nvme_dev *dev, + unsigned int size, unsigned int nseg) { - unsigned int ret = sizeof(struct nvme_cmd_info); - - ret += sizeof(struct nvme_iod); - ret += sizeof(__le64 *) * nvme_npages(NVME_INT_BYTES(dev), dev); - ret += sizeof(struct scatterlist) * NVME_INT_PAGES; + return sizeof(__le64 *) * nvme_npages(size, dev) + + sizeof(struct scatterlist) * nseg; +} - return ret; +static unsigned int nvme_cmd_size(struct nvme_dev *dev) +{ + return sizeof(struct nvme_iod) + + nvme_iod_alloc_size(dev, NVME_INT_BYTES(dev), NVME_INT_PAGES); } static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, @@ -215,11 +251,11 @@ unsigned int numa_node) { struct nvme_dev *dev = data; - struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(req); + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); struct nvme_queue *nvmeq = dev->queues[0]; BUG_ON(!nvmeq); - cmd->nvmeq = nvmeq; + iod->nvmeq = nvmeq; return 0; } @@ -242,148 +278,36 @@ unsigned int numa_node) { struct nvme_dev *dev = data; - struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(req); + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); struct nvme_queue *nvmeq = dev->queues[hctx_idx + 1]; BUG_ON(!nvmeq); - cmd->nvmeq = nvmeq; + iod->nvmeq = nvmeq; return 0; } -static void nvme_set_info(struct nvme_cmd_info *cmd, void *ctx, - nvme_completion_fn handler) +static void nvme_complete_async_event(struct nvme_dev *dev, + struct nvme_completion *cqe) { - cmd->fn = handler; - cmd->ctx = ctx; - cmd->aborted = 0; - blk_mq_start_request(blk_mq_rq_from_pdu(cmd)); -} - -static void *iod_get_private(struct nvme_iod *iod) -{ - return (void *) (iod->private & ~0x1UL); -} - -/* - * If bit 0 is set, the iod is embedded in the request payload. - */ -static bool iod_should_kfree(struct nvme_iod *iod) -{ - return (iod->private & NVME_INT_MASK) == 0; -} - -/* Special values must be less than 0x1000 */ -#define CMD_CTX_BASE ((void *)POISON_POINTER_DELTA) -#define CMD_CTX_CANCELLED (0x30C + CMD_CTX_BASE) -#define CMD_CTX_COMPLETED (0x310 + CMD_CTX_BASE) -#define CMD_CTX_INVALID (0x314 + CMD_CTX_BASE) - -static void special_completion(struct nvme_queue *nvmeq, void *ctx, - struct nvme_completion *cqe) -{ - if (ctx == CMD_CTX_CANCELLED) - return; - if (ctx == CMD_CTX_COMPLETED) { - dev_warn(nvmeq->q_dmadev, - "completed id %d twice on queue %d\n", - cqe->command_id, le16_to_cpup(&cqe->sq_id)); - return; - } - if (ctx == CMD_CTX_INVALID) { - dev_warn(nvmeq->q_dmadev, - "invalid id %d completed on queue %d\n", - cqe->command_id, le16_to_cpup(&cqe->sq_id)); - return; - } - dev_warn(nvmeq->q_dmadev, "Unknown special completion %p\n", ctx); -} - -static void *cancel_cmd_info(struct nvme_cmd_info *cmd, nvme_completion_fn *fn) -{ - void *ctx; - - if (fn) - *fn = cmd->fn; - ctx = cmd->ctx; - cmd->fn = special_completion; - cmd->ctx = CMD_CTX_CANCELLED; - return ctx; -} - -static void async_req_completion(struct nvme_queue *nvmeq, void *ctx, - struct nvme_completion *cqe) -{ - u32 result = le32_to_cpup(&cqe->result); - u16 status = le16_to_cpup(&cqe->status) >> 1; + u16 status = le16_to_cpu(cqe->status) >> 1; + u32 result = le32_to_cpu(cqe->result); if (status == NVME_SC_SUCCESS || status == NVME_SC_ABORT_REQ) - ++nvmeq->dev->event_limit; + ++dev->ctrl.event_limit; if (status != NVME_SC_SUCCESS) return; switch (result & 0xff07) { case NVME_AER_NOTICE_NS_CHANGED: - dev_info(nvmeq->q_dmadev, "rescanning\n"); - schedule_work(&nvmeq->dev->scan_work); + dev_info(dev->dev, "rescanning\n"); + queue_work(nvme_workq, &dev->scan_work); default: - dev_warn(nvmeq->q_dmadev, "async event result %08x\n", result); + dev_warn(dev->dev, "async event result %08x\n", result); } } -static void abort_completion(struct nvme_queue *nvmeq, void *ctx, - struct nvme_completion *cqe) -{ - struct request *req = ctx; - - u16 status = le16_to_cpup(&cqe->status) >> 1; - u32 result = le32_to_cpup(&cqe->result); - - blk_mq_free_request(req); - - dev_warn(nvmeq->q_dmadev, "Abort status:%x result:%x", status, result); - ++nvmeq->dev->abort_limit; -} - -static void async_completion(struct nvme_queue *nvmeq, void *ctx, - struct nvme_completion *cqe) -{ - struct async_cmd_info *cmdinfo = ctx; - cmdinfo->result = le32_to_cpup(&cqe->result); - cmdinfo->status = le16_to_cpup(&cqe->status) >> 1; - queue_kthread_work(cmdinfo->worker, &cmdinfo->work); - blk_mq_free_request(cmdinfo->req); -} - -static inline struct nvme_cmd_info *get_cmd_from_tag(struct nvme_queue *nvmeq, - unsigned int tag) -{ - struct request *req = blk_mq_tag_to_rq(*nvmeq->tags, tag); - - return blk_mq_rq_to_pdu(req); -} - -/* - * Called with local interrupts disabled and the q_lock held. May not sleep. - */ -static void *nvme_finish_cmd(struct nvme_queue *nvmeq, int tag, - nvme_completion_fn *fn) -{ - struct nvme_cmd_info *cmd = get_cmd_from_tag(nvmeq, tag); - void *ctx; - if (tag >= nvmeq->q_depth) { - *fn = special_completion; - return CMD_CTX_INVALID; - } - if (fn) - *fn = cmd->fn; - ctx = cmd->ctx; - cmd->fn = special_completion; - cmd->ctx = CMD_CTX_COMPLETED; - return ctx; -} - /** - * nvme_submit_cmd() - Copy a command into a queue and ring the doorbell + * __nvme_submit_cmd() - Copy a command into a queue and ring the doorbell * @nvmeq: The queue to use * @cmd: The command to send * @@ -405,69 +329,44 @@ nvmeq->sq_tail = tail; } -static void nvme_submit_cmd(struct nvme_queue *nvmeq, struct nvme_command *cmd) -{ - unsigned long flags; - spin_lock_irqsave(&nvmeq->q_lock, flags); - __nvme_submit_cmd(nvmeq, cmd); - spin_unlock_irqrestore(&nvmeq->q_lock, flags); -} - -static __le64 **iod_list(struct nvme_iod *iod) -{ - return ((void *)iod) + iod->offset; -} - -static inline void iod_init(struct nvme_iod *iod, unsigned nbytes, - unsigned nseg, unsigned long private) -{ - iod->private = private; - iod->offset = offsetof(struct nvme_iod, sg[nseg]); - iod->npages = -1; - iod->length = nbytes; - iod->nents = 0; -} - -static struct nvme_iod * -__nvme_alloc_iod(unsigned nseg, unsigned bytes, struct nvme_dev *dev, - unsigned long priv, gfp_t gfp) +static __le64 **iod_list(struct request *req) { - struct nvme_iod *iod = kmalloc(sizeof(struct nvme_iod) + - sizeof(__le64 *) * nvme_npages(bytes, dev) + - sizeof(struct scatterlist) * nseg, gfp); - - if (iod) - iod_init(iod, bytes, nseg, priv); - - return iod; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + return (__le64 **)(iod->sg + req->nr_phys_segments); } -static struct nvme_iod *nvme_alloc_iod(struct request *rq, struct nvme_dev *dev, - gfp_t gfp) +static int nvme_init_iod(struct request *rq, struct nvme_dev *dev) { - unsigned size = !(rq->cmd_flags & REQ_DISCARD) ? blk_rq_bytes(rq) : - sizeof(struct nvme_dsm_range); - struct nvme_iod *iod; + struct nvme_iod *iod = blk_mq_rq_to_pdu(rq); + int nseg = rq->nr_phys_segments; + unsigned size; - if (rq->nr_phys_segments <= NVME_INT_PAGES && - size <= NVME_INT_BYTES(dev)) { - struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(rq); + if (rq->cmd_flags & REQ_DISCARD) + size = sizeof(struct nvme_dsm_range); + else + size = blk_rq_bytes(rq); - iod = cmd->iod; - iod_init(iod, size, rq->nr_phys_segments, - (unsigned long) rq | NVME_INT_MASK); - return iod; + if (nseg > NVME_INT_PAGES || size > NVME_INT_BYTES(dev)) { + iod->sg = kmalloc(nvme_iod_alloc_size(dev, size, nseg), GFP_ATOMIC); + if (!iod->sg) + return BLK_MQ_RQ_QUEUE_BUSY; + } else { + iod->sg = iod->inline_sg; } - return __nvme_alloc_iod(rq->nr_phys_segments, size, dev, - (unsigned long) rq, gfp); + iod->aborted = 0; + iod->npages = -1; + iod->nents = 0; + iod->length = size; + return 0; } -static void nvme_free_iod(struct nvme_dev *dev, struct nvme_iod *iod) +static void nvme_free_iod(struct nvme_dev *dev, struct request *req) { - const int last_prp = dev->page_size / 8 - 1; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + const int last_prp = dev->ctrl.page_size / 8 - 1; int i; - __le64 **list = iod_list(iod); + __le64 **list = iod_list(req); dma_addr_t prp_dma = iod->first_dma; if (iod->npages == 0) @@ -479,20 +378,8 @@ prp_dma = next_prp_dma; } - if (iod_should_kfree(iod)) - kfree(iod); -} - -static int nvme_error_status(u16 status) -{ - switch (status & 0x7ff) { - case NVME_SC_SUCCESS: - return 0; - case NVME_SC_CAP_EXCEEDED: - return -ENOSPC; - default: - return -EIO; - } + if (iod->sg != iod->inline_sg) + kfree(iod->sg); } #ifdef CONFIG_BLK_DEV_INTEGRITY @@ -549,27 +436,6 @@ } kunmap_atomic(pmap); } - -static void nvme_init_integrity(struct nvme_ns *ns) -{ - struct blk_integrity integrity; - - switch (ns->pi_type) { - case NVME_NS_DPS_PI_TYPE3: - integrity.profile = &t10_pi_type3_crc; - break; - case NVME_NS_DPS_PI_TYPE1: - case NVME_NS_DPS_PI_TYPE2: - integrity.profile = &t10_pi_type1_crc; - break; - default: - integrity.profile = NULL; - break; - } - integrity.tuple_size = ns->ms; - blk_integrity_register(ns->disk, &integrity); - blk_queue_max_integrity_segments(ns->queue, 1); -} #else /* CONFIG_BLK_DEV_INTEGRITY */ static void nvme_dif_remap(struct request *req, void (*dif_swap)(u32 p, u32 v, struct t10_pi_tuple *pi)) @@ -581,91 +447,27 @@ static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi) { } -static void nvme_init_integrity(struct nvme_ns *ns) -{ -} #endif -static void req_completion(struct nvme_queue *nvmeq, void *ctx, - struct nvme_completion *cqe) -{ - struct nvme_iod *iod = ctx; - struct request *req = iod_get_private(iod); - struct nvme_cmd_info *cmd_rq = blk_mq_rq_to_pdu(req); - u16 status = le16_to_cpup(&cqe->status) >> 1; - bool requeue = false; - int error = 0; - - if (unlikely(status)) { - if (!(status & NVME_SC_DNR || blk_noretry_request(req)) - && (jiffies - req->start_time) < req->timeout) { - unsigned long flags; - - requeue = true; - blk_mq_requeue_request(req); - spin_lock_irqsave(req->q->queue_lock, flags); - if (!blk_queue_stopped(req->q)) - blk_mq_kick_requeue_list(req->q); - spin_unlock_irqrestore(req->q->queue_lock, flags); - goto release_iod; - } - - if (req->cmd_type == REQ_TYPE_DRV_PRIV) { - if (cmd_rq->ctx == CMD_CTX_CANCELLED) - error = -EINTR; - else - error = status; - } else { - error = nvme_error_status(status); - } - } - - if (req->cmd_type == REQ_TYPE_DRV_PRIV) { - u32 result = le32_to_cpup(&cqe->result); - req->special = (void *)(uintptr_t)result; - } - - if (cmd_rq->aborted) - dev_warn(nvmeq->dev->dev, - "completing aborted command with status:%04x\n", - error); - -release_iod: - if (iod->nents) { - dma_unmap_sg(nvmeq->dev->dev, iod->sg, iod->nents, - rq_data_dir(req) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); - if (blk_integrity_rq(req)) { - if (!rq_data_dir(req)) - nvme_dif_remap(req, nvme_dif_complete); - dma_unmap_sg(nvmeq->dev->dev, iod->meta_sg, 1, - rq_data_dir(req) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); - } - } - nvme_free_iod(nvmeq->dev, iod); - - if (likely(!requeue)) - blk_mq_complete_request(req, error); -} - -/* length is in bytes. gfp flags indicates whether we may sleep. */ -static int nvme_setup_prps(struct nvme_dev *dev, struct nvme_iod *iod, - int total_len, gfp_t gfp) +static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req, + int total_len) { + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); struct dma_pool *pool; int length = total_len; struct scatterlist *sg = iod->sg; int dma_len = sg_dma_len(sg); u64 dma_addr = sg_dma_address(sg); - u32 page_size = dev->page_size; + u32 page_size = dev->ctrl.page_size; int offset = dma_addr & (page_size - 1); __le64 *prp_list; - __le64 **list = iod_list(iod); + __le64 **list = iod_list(req); dma_addr_t prp_dma; int nprps, i; length -= (page_size - offset); if (length <= 0) - return total_len; + return true; dma_len -= (page_size - offset); if (dma_len) { @@ -678,7 +480,7 @@ if (length <= page_size) { iod->first_dma = dma_addr; - return total_len; + return true; } nprps = DIV_ROUND_UP(length, page_size); @@ -690,11 +492,11 @@ iod->npages = 1; } - prp_list = dma_pool_alloc(pool, gfp, &prp_dma); + prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); if (!prp_list) { iod->first_dma = dma_addr; iod->npages = -1; - return (total_len - length) + page_size; + return false; } list[0] = prp_list; iod->first_dma = prp_dma; @@ -702,9 +504,9 @@ for (;;) { if (i == page_size >> 3) { __le64 *old_prp_list = prp_list; - prp_list = dma_pool_alloc(pool, gfp, &prp_dma); + prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); if (!prp_list) - return total_len - length; + return false; list[iod->npages++] = prp_list; prp_list[0] = old_prp_list[i - 1]; old_prp_list[i - 1] = cpu_to_le64(prp_dma); @@ -724,115 +526,105 @@ dma_len = sg_dma_len(sg); } - return total_len; + return true; } -static void nvme_submit_priv(struct nvme_queue *nvmeq, struct request *req, - struct nvme_iod *iod) +static int nvme_map_data(struct nvme_dev *dev, struct request *req, + struct nvme_command *cmnd) { - struct nvme_command cmnd; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct request_queue *q = req->q; + enum dma_data_direction dma_dir = rq_data_dir(req) ? + DMA_TO_DEVICE : DMA_FROM_DEVICE; + int ret = BLK_MQ_RQ_QUEUE_ERROR; - memcpy(&cmnd, req->cmd, sizeof(cmnd)); - cmnd.rw.command_id = req->tag; - if (req->nr_phys_segments) { - cmnd.rw.prp1 = cpu_to_le64(sg_dma_address(iod->sg)); - cmnd.rw.prp2 = cpu_to_le64(iod->first_dma); - } + sg_init_table(iod->sg, req->nr_phys_segments); + iod->nents = blk_rq_map_sg(q, req, iod->sg); + if (!iod->nents) + goto out; - __nvme_submit_cmd(nvmeq, &cmnd); -} + ret = BLK_MQ_RQ_QUEUE_BUSY; + if (!dma_map_sg(dev->dev, iod->sg, iod->nents, dma_dir)) + goto out; -/* - * We reuse the small pool to allocate the 16-byte range here as it is not - * worth having a special pool for these or additional cases to handle freeing - * the iod. - */ -static void nvme_submit_discard(struct nvme_queue *nvmeq, struct nvme_ns *ns, - struct request *req, struct nvme_iod *iod) -{ - struct nvme_dsm_range *range = - (struct nvme_dsm_range *)iod_list(iod)[0]; - struct nvme_command cmnd; + if (!nvme_setup_prps(dev, req, blk_rq_bytes(req))) + goto out_unmap; - range->cattr = cpu_to_le32(0); - range->nlb = cpu_to_le32(blk_rq_bytes(req) >> ns->lba_shift); - range->slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); + ret = BLK_MQ_RQ_QUEUE_ERROR; + if (blk_integrity_rq(req)) { + if (blk_rq_count_integrity_sg(q, req->bio) != 1) + goto out_unmap; - memset(&cmnd, 0, sizeof(cmnd)); - cmnd.dsm.opcode = nvme_cmd_dsm; - cmnd.dsm.command_id = req->tag; - cmnd.dsm.nsid = cpu_to_le32(ns->ns_id); - cmnd.dsm.prp1 = cpu_to_le64(iod->first_dma); - cmnd.dsm.nr = 0; - cmnd.dsm.attributes = cpu_to_le32(NVME_DSMGMT_AD); + sg_init_table(&iod->meta_sg, 1); + if (blk_rq_map_integrity_sg(q, req->bio, &iod->meta_sg) != 1) + goto out_unmap; - __nvme_submit_cmd(nvmeq, &cmnd); -} + if (rq_data_dir(req)) + nvme_dif_remap(req, nvme_dif_prep); -static void nvme_submit_flush(struct nvme_queue *nvmeq, struct nvme_ns *ns, - int cmdid) -{ - struct nvme_command cmnd; + if (!dma_map_sg(dev->dev, &iod->meta_sg, 1, dma_dir)) + goto out_unmap; + } - memset(&cmnd, 0, sizeof(cmnd)); - cmnd.common.opcode = nvme_cmd_flush; - cmnd.common.command_id = cmdid; - cmnd.common.nsid = cpu_to_le32(ns->ns_id); + cmnd->rw.prp1 = cpu_to_le64(sg_dma_address(iod->sg)); + cmnd->rw.prp2 = cpu_to_le64(iod->first_dma); + if (blk_integrity_rq(req)) + cmnd->rw.metadata = cpu_to_le64(sg_dma_address(&iod->meta_sg)); + return BLK_MQ_RQ_QUEUE_OK; - __nvme_submit_cmd(nvmeq, &cmnd); +out_unmap: + dma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir); +out: + return ret; } -static int nvme_submit_iod(struct nvme_queue *nvmeq, struct nvme_iod *iod, - struct nvme_ns *ns) +static void nvme_unmap_data(struct nvme_dev *dev, struct request *req) { - struct request *req = iod_get_private(iod); - struct nvme_command cmnd; - u16 control = 0; - u32 dsmgmt = 0; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + enum dma_data_direction dma_dir = rq_data_dir(req) ? + DMA_TO_DEVICE : DMA_FROM_DEVICE; - if (req->cmd_flags & REQ_FUA) - control |= NVME_RW_FUA; - if (req->cmd_flags & (REQ_FAILFAST_DEV | REQ_RAHEAD)) - control |= NVME_RW_LR; - - if (req->cmd_flags & REQ_RAHEAD) - dsmgmt |= NVME_RW_DSM_FREQ_PREFETCH; - - memset(&cmnd, 0, sizeof(cmnd)); - cmnd.rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read); - cmnd.rw.command_id = req->tag; - cmnd.rw.nsid = cpu_to_le32(ns->ns_id); - cmnd.rw.prp1 = cpu_to_le64(sg_dma_address(iod->sg)); - cmnd.rw.prp2 = cpu_to_le64(iod->first_dma); - cmnd.rw.slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); - cmnd.rw.length = cpu_to_le16((blk_rq_bytes(req) >> ns->lba_shift) - 1); - - if (ns->ms) { - switch (ns->pi_type) { - case NVME_NS_DPS_PI_TYPE3: - control |= NVME_RW_PRINFO_PRCHK_GUARD; - break; - case NVME_NS_DPS_PI_TYPE1: - case NVME_NS_DPS_PI_TYPE2: - control |= NVME_RW_PRINFO_PRCHK_GUARD | - NVME_RW_PRINFO_PRCHK_REF; - cmnd.rw.reftag = cpu_to_le32( - nvme_block_nr(ns, blk_rq_pos(req))); - break; + if (iod->nents) { + dma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir); + if (blk_integrity_rq(req)) { + if (!rq_data_dir(req)) + nvme_dif_remap(req, nvme_dif_complete); + dma_unmap_sg(dev->dev, &iod->meta_sg, 1, dma_dir); } - if (blk_integrity_rq(req)) - cmnd.rw.metadata = - cpu_to_le64(sg_dma_address(iod->meta_sg)); - else - control |= NVME_RW_PRINFO_PRACT; } - cmnd.rw.control = cpu_to_le16(control); - cmnd.rw.dsmgmt = cpu_to_le32(dsmgmt); + nvme_free_iod(dev, req); +} - __nvme_submit_cmd(nvmeq, &cmnd); +/* + * We reuse the small pool to allocate the 16-byte range here as it is not + * worth having a special pool for these or additional cases to handle freeing + * the iod. + */ +static int nvme_setup_discard(struct nvme_queue *nvmeq, struct nvme_ns *ns, + struct request *req, struct nvme_command *cmnd) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_dsm_range *range; - return 0; + range = dma_pool_alloc(nvmeq->dev->prp_small_pool, GFP_ATOMIC, + &iod->first_dma); + if (!range) + return BLK_MQ_RQ_QUEUE_BUSY; + iod_list(req)[0] = (__le64 *)range; + iod->npages = 0; + + range->cattr = cpu_to_le32(0); + range->nlb = cpu_to_le32(blk_rq_bytes(req) >> ns->lba_shift); + range->slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req))); + + memset(cmnd, 0, sizeof(*cmnd)); + cmnd->dsm.opcode = nvme_cmd_dsm; + cmnd->dsm.nsid = cpu_to_le32(ns->ns_id); + cmnd->dsm.prp1 = cpu_to_le64(iod->first_dma); + cmnd->dsm.nr = 0; + cmnd->dsm.attributes = cpu_to_le32(NVME_DSMGMT_AD); + return BLK_MQ_RQ_QUEUE_OK; } /* @@ -845,9 +637,8 @@ struct nvme_queue *nvmeq = hctx->driver_data; struct nvme_dev *dev = nvmeq->dev; struct request *req = bd->rq; - struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(req); - struct nvme_iod *iod; - enum dma_data_direction dma_dir; + struct nvme_command cmnd; + int ret = BLK_MQ_RQ_QUEUE_OK; /* * If formated with metadata, require the block layer provide a buffer @@ -857,91 +648,72 @@ if (ns && ns->ms && !blk_integrity_rq(req)) { if (!(ns->pi_type && ns->ms == 8) && req->cmd_type != REQ_TYPE_DRV_PRIV) { - blk_mq_complete_request(req, -EFAULT); + blk_mq_end_request(req, -EFAULT); return BLK_MQ_RQ_QUEUE_OK; } } - iod = nvme_alloc_iod(req, dev, GFP_ATOMIC); - if (!iod) - return BLK_MQ_RQ_QUEUE_BUSY; + ret = nvme_init_iod(req, dev); + if (ret) + return ret; if (req->cmd_flags & REQ_DISCARD) { - void *range; - /* - * We reuse the small pool to allocate the 16-byte range here - * as it is not worth having a special pool for these or - * additional cases to handle freeing the iod. - */ - range = dma_pool_alloc(dev->prp_small_pool, GFP_ATOMIC, - &iod->first_dma); - if (!range) - goto retry_cmd; - iod_list(iod)[0] = (__le64 *)range; - iod->npages = 0; - } else if (req->nr_phys_segments) { - dma_dir = rq_data_dir(req) ? DMA_TO_DEVICE : DMA_FROM_DEVICE; - - sg_init_table(iod->sg, req->nr_phys_segments); - iod->nents = blk_rq_map_sg(req->q, req, iod->sg); - if (!iod->nents) - goto error_cmd; - - if (!dma_map_sg(nvmeq->q_dmadev, iod->sg, iod->nents, dma_dir)) - goto retry_cmd; - - if (blk_rq_bytes(req) != - nvme_setup_prps(dev, iod, blk_rq_bytes(req), GFP_ATOMIC)) { - dma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir); - goto retry_cmd; - } - if (blk_integrity_rq(req)) { - if (blk_rq_count_integrity_sg(req->q, req->bio) != 1) { - dma_unmap_sg(dev->dev, iod->sg, iod->nents, - dma_dir); - goto error_cmd; - } + ret = nvme_setup_discard(nvmeq, ns, req, &cmnd); + } else { + if (req->cmd_type == REQ_TYPE_DRV_PRIV) + memcpy(&cmnd, req->cmd, sizeof(cmnd)); + else if (req->cmd_flags & REQ_FLUSH) + nvme_setup_flush(ns, &cmnd); + else + nvme_setup_rw(ns, req, &cmnd); - sg_init_table(iod->meta_sg, 1); - if (blk_rq_map_integrity_sg( - req->q, req->bio, iod->meta_sg) != 1) { - dma_unmap_sg(dev->dev, iod->sg, iod->nents, - dma_dir); - goto error_cmd; - } + if (req->nr_phys_segments) + ret = nvme_map_data(dev, req, &cmnd); + } - if (rq_data_dir(req)) - nvme_dif_remap(req, nvme_dif_prep); + if (ret) + goto out; - if (!dma_map_sg(nvmeq->q_dmadev, iod->meta_sg, 1, dma_dir)) { - dma_unmap_sg(dev->dev, iod->sg, iod->nents, - dma_dir); - goto error_cmd; - } - } - } + cmnd.common.command_id = req->tag; + blk_mq_start_request(req); - nvme_set_info(cmd, iod, req_completion); spin_lock_irq(&nvmeq->q_lock); - if (req->cmd_type == REQ_TYPE_DRV_PRIV) - nvme_submit_priv(nvmeq, req, iod); - else if (req->cmd_flags & REQ_DISCARD) - nvme_submit_discard(nvmeq, ns, req, iod); - else if (req->cmd_flags & REQ_FLUSH) - nvme_submit_flush(nvmeq, ns, req->tag); - else - nvme_submit_iod(nvmeq, iod, ns); - + __nvme_submit_cmd(nvmeq, &cmnd); nvme_process_cq(nvmeq); spin_unlock_irq(&nvmeq->q_lock); return BLK_MQ_RQ_QUEUE_OK; +out: + nvme_free_iod(dev, req); + return ret; +} + +static void nvme_complete_rq(struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_dev *dev = iod->nvmeq->dev; + int error = 0; + + nvme_unmap_data(dev, req); - error_cmd: - nvme_free_iod(dev, iod); - return BLK_MQ_RQ_QUEUE_ERROR; - retry_cmd: - nvme_free_iod(dev, iod); - return BLK_MQ_RQ_QUEUE_BUSY; + if (unlikely(req->errors)) { + if (nvme_req_needs_retry(req, req->errors)) { + nvme_requeue_req(req); + return; + } + + if (req->cmd_type == REQ_TYPE_DRV_PRIV) + error = req->errors; + else + error = nvme_error_status(req->errors); + } + + if (unlikely(iod->aborted)) { + dev_warn(dev->dev, + "completing aborted command with status: %04x\n", + req->errors); + } + + blk_mq_end_request(req, error); } static void __nvme_process_cq(struct nvme_queue *nvmeq, unsigned int *tag) @@ -952,20 +724,47 @@ phase = nvmeq->cq_phase; for (;;) { - void *ctx; - nvme_completion_fn fn; struct nvme_completion cqe = nvmeq->cqes[head]; - if ((le16_to_cpu(cqe.status) & 1) != phase) + u16 status = le16_to_cpu(cqe.status); + struct request *req; + + if ((status & 1) != phase) break; nvmeq->sq_head = le16_to_cpu(cqe.sq_head); if (++head == nvmeq->q_depth) { head = 0; phase = !phase; } + if (tag && *tag == cqe.command_id) *tag = -1; - ctx = nvme_finish_cmd(nvmeq, cqe.command_id, &fn); - fn(nvmeq, ctx, &cqe); + + if (unlikely(cqe.command_id >= nvmeq->q_depth)) { + dev_warn(nvmeq->q_dmadev, + "invalid id %d completed on queue %d\n", + cqe.command_id, le16_to_cpu(cqe.sq_id)); + continue; + } + + /* + * AEN requests are special as they don't time out and can + * survive any kind of queue freeze and often don't respond to + * aborts. We don't even bother to allocate a struct request + * for them but rather special case them here. + */ + if (unlikely(nvmeq->qid == 0 && + cqe.command_id >= NVME_AQ_BLKMQ_DEPTH)) { + nvme_complete_async_event(nvmeq->dev, &cqe); + continue; + } + + req = blk_mq_tag_to_rq(*nvmeq->tags, cqe.command_id); + if (req->cmd_type == REQ_TYPE_DRV_PRIV) { + u32 result = le32_to_cpu(cqe.result); + req->special = (void *)(uintptr_t)result; + } + blk_mq_complete_request(req, status >> 1); + } /* If the controller ignores the cq head doorbell and continuously @@ -1028,129 +827,33 @@ return 0; } -/* - * Returns 0 on success. If the result is negative, it's a Linux error code; - * if the result is positive, it's an NVM Express status code - */ -int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, - void *buffer, void __user *ubuffer, unsigned bufflen, - u32 *result, unsigned timeout) +static void nvme_submit_async_event(struct nvme_dev *dev) { - bool write = cmd->common.opcode & 1; - struct bio *bio = NULL; - struct request *req; - int ret; + struct nvme_command c; - req = blk_mq_alloc_request(q, write, GFP_KERNEL, false); - if (IS_ERR(req)) - return PTR_ERR(req); + memset(&c, 0, sizeof(c)); + c.common.opcode = nvme_admin_async_event; + c.common.command_id = NVME_AQ_BLKMQ_DEPTH + --dev->ctrl.event_limit; - req->cmd_type = REQ_TYPE_DRV_PRIV; - req->cmd_flags |= REQ_FAILFAST_DRIVER; - req->__data_len = 0; - req->__sector = (sector_t) -1; - req->bio = req->biotail = NULL; - - req->timeout = timeout ? timeout : ADMIN_TIMEOUT; - - req->cmd = (unsigned char *)cmd; - req->cmd_len = sizeof(struct nvme_command); - req->special = (void *)0; - - if (buffer && bufflen) { - ret = blk_rq_map_kern(q, req, buffer, bufflen, - __GFP_DIRECT_RECLAIM); - if (ret) - goto out; - } else if (ubuffer && bufflen) { - ret = blk_rq_map_user(q, req, NULL, ubuffer, bufflen, - __GFP_DIRECT_RECLAIM); - if (ret) - goto out; - bio = req->bio; - } - - blk_execute_rq(req->q, NULL, req, 0); - if (bio) - blk_rq_unmap_user(bio); - if (result) - *result = (u32)(uintptr_t)req->special; - ret = req->errors; - out: - blk_mq_free_request(req); - return ret; + __nvme_submit_cmd(dev->queues[0], &c); } -int nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, - void *buffer, unsigned bufflen) +static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id) { - return __nvme_submit_sync_cmd(q, cmd, buffer, NULL, bufflen, NULL, 0); + struct nvme_command c; + + memset(&c, 0, sizeof(c)); + c.delete_queue.opcode = opcode; + c.delete_queue.qid = cpu_to_le16(id); + + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); } -static int nvme_submit_async_admin_req(struct nvme_dev *dev) +static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid, + struct nvme_queue *nvmeq) { - struct nvme_queue *nvmeq = dev->queues[0]; struct nvme_command c; - struct nvme_cmd_info *cmd_info; - struct request *req; - - req = blk_mq_alloc_request(dev->admin_q, WRITE, GFP_ATOMIC, true); - if (IS_ERR(req)) - return PTR_ERR(req); - - req->cmd_flags |= REQ_NO_TIMEOUT; - cmd_info = blk_mq_rq_to_pdu(req); - nvme_set_info(cmd_info, NULL, async_req_completion); - - memset(&c, 0, sizeof(c)); - c.common.opcode = nvme_admin_async_event; - c.common.command_id = req->tag; - - blk_mq_free_request(req); - __nvme_submit_cmd(nvmeq, &c); - return 0; -} - -static int nvme_submit_admin_async_cmd(struct nvme_dev *dev, - struct nvme_command *cmd, - struct async_cmd_info *cmdinfo, unsigned timeout) -{ - struct nvme_queue *nvmeq = dev->queues[0]; - struct request *req; - struct nvme_cmd_info *cmd_rq; - - req = blk_mq_alloc_request(dev->admin_q, WRITE, GFP_KERNEL, false); - if (IS_ERR(req)) - return PTR_ERR(req); - - req->timeout = timeout; - cmd_rq = blk_mq_rq_to_pdu(req); - cmdinfo->req = req; - nvme_set_info(cmd_rq, cmdinfo, async_completion); - cmdinfo->status = -EINTR; - - cmd->common.command_id = req->tag; - - nvme_submit_cmd(nvmeq, cmd); - return 0; -} - -static int adapter_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id) -{ - struct nvme_command c; - - memset(&c, 0, sizeof(c)); - c.delete_queue.opcode = opcode; - c.delete_queue.qid = cpu_to_le16(id); - - return nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0); -} - -static int adapter_alloc_cq(struct nvme_dev *dev, u16 qid, - struct nvme_queue *nvmeq) -{ - struct nvme_command c; - int flags = NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ_ENABLED; + int flags = NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ_ENABLED; /* * Note: we (ab)use the fact the the prp fields survive if no data @@ -1164,7 +867,7 @@ c.create_cq.cq_flags = cpu_to_le16(flags); c.create_cq.irq_vector = cpu_to_le16(nvmeq->cq_vector); - return nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0); + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); } static int adapter_alloc_sq(struct nvme_dev *dev, u16 qid, @@ -1185,7 +888,7 @@ c.create_sq.sq_flags = cpu_to_le16(flags); c.create_sq.cqid = cpu_to_le16(qid); - return nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0); + return nvme_submit_sync_cmd(dev->ctrl.admin_q, &c, NULL, 0); } static int adapter_delete_cq(struct nvme_dev *dev, u16 cqid) @@ -1198,195 +901,111 @@ return adapter_delete_queue(dev, nvme_admin_delete_sq, sqid); } -int nvme_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl **id) -{ - struct nvme_command c = { }; - int error; - - /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ - c.identify.opcode = nvme_admin_identify; - c.identify.cns = cpu_to_le32(1); - - *id = kmalloc(sizeof(struct nvme_id_ctrl), GFP_KERNEL); - if (!*id) - return -ENOMEM; - - error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, - sizeof(struct nvme_id_ctrl)); - if (error) - kfree(*id); - return error; -} - -int nvme_identify_ns(struct nvme_dev *dev, unsigned nsid, - struct nvme_id_ns **id) -{ - struct nvme_command c = { }; - int error; - - /* gcc-4.4.4 (at least) has issues with initializers and anon unions */ - c.identify.opcode = nvme_admin_identify, - c.identify.nsid = cpu_to_le32(nsid), - - *id = kmalloc(sizeof(struct nvme_id_ns), GFP_KERNEL); - if (!*id) - return -ENOMEM; - - error = nvme_submit_sync_cmd(dev->admin_q, &c, *id, - sizeof(struct nvme_id_ns)); - if (error) - kfree(*id); - return error; -} - -int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid, - dma_addr_t dma_addr, u32 *result) +static void abort_endio(struct request *req, int error) { - struct nvme_command c; - - memset(&c, 0, sizeof(c)); - c.features.opcode = nvme_admin_get_features; - c.features.nsid = cpu_to_le32(nsid); - c.features.prp1 = cpu_to_le64(dma_addr); - c.features.fid = cpu_to_le32(fid); + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = iod->nvmeq; + u32 result = (u32)(uintptr_t)req->special; + u16 status = req->errors; - return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, NULL, 0, - result, 0); -} - -int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11, - dma_addr_t dma_addr, u32 *result) -{ - struct nvme_command c; - - memset(&c, 0, sizeof(c)); - c.features.opcode = nvme_admin_set_features; - c.features.prp1 = cpu_to_le64(dma_addr); - c.features.fid = cpu_to_le32(fid); - c.features.dword11 = cpu_to_le32(dword11); - - return __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, NULL, 0, - result, 0); -} - -int nvme_get_log_page(struct nvme_dev *dev, struct nvme_smart_log **log) -{ - struct nvme_command c = { }; - int error; - - c.common.opcode = nvme_admin_get_log_page, - c.common.nsid = cpu_to_le32(0xFFFFFFFF), - c.common.cdw10[0] = cpu_to_le32( - (((sizeof(struct nvme_smart_log) / 4) - 1) << 16) | - NVME_LOG_SMART), - - *log = kmalloc(sizeof(struct nvme_smart_log), GFP_KERNEL); - if (!*log) - return -ENOMEM; + dev_warn(nvmeq->q_dmadev, "Abort status:%x result:%x", status, result); + atomic_inc(&nvmeq->dev->ctrl.abort_limit); - error = nvme_submit_sync_cmd(dev->admin_q, &c, *log, - sizeof(struct nvme_smart_log)); - if (error) - kfree(*log); - return error; + blk_mq_free_request(req); } -/** - * nvme_abort_req - Attempt aborting a request - * - * Schedule controller reset if the command was already aborted once before and - * still hasn't been returned to the driver, or if this is the admin queue. - */ -static void nvme_abort_req(struct request *req) +static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved) { - struct nvme_cmd_info *cmd_rq = blk_mq_rq_to_pdu(req); - struct nvme_queue *nvmeq = cmd_rq->nvmeq; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + struct nvme_queue *nvmeq = iod->nvmeq; struct nvme_dev *dev = nvmeq->dev; struct request *abort_req; - struct nvme_cmd_info *abort_cmd; struct nvme_command cmd; - if (!nvmeq->qid || cmd_rq->aborted) { - spin_lock(&dev_list_lock); - if (!__nvme_reset(dev)) { - dev_warn(dev->dev, - "I/O %d QID %d timeout, reset controller\n", - req->tag, nvmeq->qid); - } - spin_unlock(&dev_list_lock); - return; + /* + * Shutdown immediately if controller times out while starting. The + * reset work will see the pci device disabled when it gets the forced + * cancellation error. All outstanding requests are completed on + * shutdown, so we return BLK_EH_HANDLED. + */ + if (test_bit(NVME_CTRL_RESETTING, &dev->flags)) { + dev_warn(dev->dev, + "I/O %d QID %d timeout, disable controller\n", + req->tag, nvmeq->qid); + nvme_dev_disable(dev, false); + req->errors = NVME_SC_CANCELLED; + return BLK_EH_HANDLED; } - if (!dev->abort_limit) - return; + /* + * Shutdown the controller immediately and schedule a reset if the + * command was already aborted once before and still hasn't been + * returned to the driver, or if this is the admin queue. + */ + if (!nvmeq->qid || iod->aborted) { + dev_warn(dev->dev, + "I/O %d QID %d timeout, reset controller\n", + req->tag, nvmeq->qid); + nvme_dev_disable(dev, false); + queue_work(nvme_workq, &dev->reset_work); - abort_req = blk_mq_alloc_request(dev->admin_q, WRITE, GFP_ATOMIC, - false); - if (IS_ERR(abort_req)) - return; + /* + * Mark the request as handled, since the inline shutdown + * forces all outstanding requests to complete. + */ + req->errors = NVME_SC_CANCELLED; + return BLK_EH_HANDLED; + } + + iod->aborted = 1; - abort_cmd = blk_mq_rq_to_pdu(abort_req); - nvme_set_info(abort_cmd, abort_req, abort_completion); + if (atomic_dec_return(&dev->ctrl.abort_limit) < 0) { + atomic_inc(&dev->ctrl.abort_limit); + return BLK_EH_RESET_TIMER; + } memset(&cmd, 0, sizeof(cmd)); cmd.abort.opcode = nvme_admin_abort_cmd; cmd.abort.cid = req->tag; cmd.abort.sqid = cpu_to_le16(nvmeq->qid); - cmd.abort.command_id = abort_req->tag; - --dev->abort_limit; - cmd_rq->aborted = 1; + dev_warn(nvmeq->q_dmadev, "I/O %d QID %d timeout, aborting\n", + req->tag, nvmeq->qid); - dev_warn(nvmeq->q_dmadev, "Aborting I/O %d QID %d\n", req->tag, - nvmeq->qid); - nvme_submit_cmd(dev->queues[0], &cmd); + abort_req = nvme_alloc_request(dev->ctrl.admin_q, &cmd, + BLK_MQ_REQ_NOWAIT); + if (IS_ERR(abort_req)) { + atomic_inc(&dev->ctrl.abort_limit); + return BLK_EH_RESET_TIMER; + } + + abort_req->timeout = ADMIN_TIMEOUT; + abort_req->end_io_data = NULL; + blk_execute_rq_nowait(abort_req->q, NULL, abort_req, 0, abort_endio); + + /* + * The aborted req will be completed on receiving the abort req. + * We enable the timer again. If hit twice, it'll cause a device reset, + * as the device then is in a faulty state. + */ + return BLK_EH_RESET_TIMER; } static void nvme_cancel_queue_ios(struct request *req, void *data, bool reserved) { struct nvme_queue *nvmeq = data; - void *ctx; - nvme_completion_fn fn; - struct nvme_cmd_info *cmd; - struct nvme_completion cqe; + int status; if (!blk_mq_request_started(req)) return; - cmd = blk_mq_rq_to_pdu(req); - - if (cmd->ctx == CMD_CTX_CANCELLED) - return; + dev_warn(nvmeq->q_dmadev, + "Cancelling I/O %d QID %d\n", req->tag, nvmeq->qid); + status = NVME_SC_ABORT_REQ; if (blk_queue_dying(req->q)) - cqe.status = cpu_to_le16((NVME_SC_ABORT_REQ | NVME_SC_DNR) << 1); - else - cqe.status = cpu_to_le16(NVME_SC_ABORT_REQ << 1); - - - dev_warn(nvmeq->q_dmadev, "Cancelling I/O %d QID %d\n", - req->tag, nvmeq->qid); - ctx = cancel_cmd_info(cmd, &fn); - fn(nvmeq, ctx, &cqe); -} - -static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved) -{ - struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(req); - struct nvme_queue *nvmeq = cmd->nvmeq; - - dev_warn(nvmeq->q_dmadev, "Timeout I/O %d QID %d\n", req->tag, - nvmeq->qid); - spin_lock_irq(&nvmeq->q_lock); - nvme_abort_req(req); - spin_unlock_irq(&nvmeq->q_lock); - - /* - * The aborted req will be completed on receiving the abort req. - * We enable the timer again. If hit twice, it'll cause a device reset, - * as the device then is in a faulty state. - */ - return BLK_EH_RESET_TIMER; + status |= NVME_SC_DNR; + blk_mq_complete_request(req, status); } static void nvme_free_queue(struct nvme_queue *nvmeq) @@ -1429,8 +1048,8 @@ nvmeq->cq_vector = -1; spin_unlock_irq(&nvmeq->q_lock); - if (!nvmeq->qid && nvmeq->dev->admin_q) - blk_mq_freeze_queue_start(nvmeq->dev->admin_q); + if (!nvmeq->qid && nvmeq->dev->ctrl.admin_q) + blk_mq_stop_hw_queues(nvmeq->dev->ctrl.admin_q); irq_set_affinity_hint(vector, NULL); free_irq(vector, nvmeq); @@ -1446,21 +1065,20 @@ spin_unlock_irq(&nvmeq->q_lock); } -static void nvme_disable_queue(struct nvme_dev *dev, int qid) +static void nvme_disable_admin_queue(struct nvme_dev *dev, bool shutdown) { - struct nvme_queue *nvmeq = dev->queues[qid]; + struct nvme_queue *nvmeq = dev->queues[0]; if (!nvmeq) return; if (nvme_suspend_queue(nvmeq)) return; - /* Don't tell the adapter to delete the admin queue. - * Don't tell a removed adapter to delete IO queues. */ - if (qid && readl(&dev->bar->csts) != -1) { - adapter_delete_sq(dev, qid); - adapter_delete_cq(dev, qid); - } + if (shutdown) + nvme_shutdown_ctrl(&dev->ctrl); + else + nvme_disable_ctrl(&dev->ctrl, lo_hi_readq( + dev->bar + NVME_REG_CAP)); spin_lock_irq(&nvmeq->q_lock); nvme_process_cq(nvmeq); @@ -1471,11 +1089,12 @@ int entry_size) { int q_depth = dev->q_depth; - unsigned q_size_aligned = roundup(q_depth * entry_size, dev->page_size); + unsigned q_size_aligned = roundup(q_depth * entry_size, + dev->ctrl.page_size); if (q_size_aligned * nr_io_queues > dev->cmb_size) { u64 mem_per_q = div_u64(dev->cmb_size, nr_io_queues); - mem_per_q = round_down(mem_per_q, dev->page_size); + mem_per_q = round_down(mem_per_q, dev->ctrl.page_size); q_depth = div_u64(mem_per_q, entry_size); /* @@ -1494,8 +1113,8 @@ int qid, int depth) { if (qid && dev->cmb && use_cmb_sqes && NVME_CMB_SQS(dev->cmbsz)) { - unsigned offset = (qid - 1) * - roundup(SQ_SIZE(depth), dev->page_size); + unsigned offset = (qid - 1) * roundup(SQ_SIZE(depth), + dev->ctrl.page_size); nvmeq->sq_dma_addr = dev->cmb_dma_addr + offset; nvmeq->sq_cmds_io = dev->cmb + offset; } else { @@ -1526,7 +1145,7 @@ nvmeq->q_dmadev = dev->dev; nvmeq->dev = dev; snprintf(nvmeq->irqname, sizeof(nvmeq->irqname), "nvme%dq%d", - dev->instance, qid); + dev->ctrl.instance, qid); spin_lock_init(&nvmeq->q_lock); nvmeq->cq_head = 0; nvmeq->cq_phase = 1; @@ -1603,79 +1222,9 @@ return result; } -static int nvme_wait_ready(struct nvme_dev *dev, u64 cap, bool enabled) -{ - unsigned long timeout; - u32 bit = enabled ? NVME_CSTS_RDY : 0; - - timeout = ((NVME_CAP_TIMEOUT(cap) + 1) * HZ / 2) + jiffies; - - while ((readl(&dev->bar->csts) & NVME_CSTS_RDY) != bit) { - msleep(100); - if (fatal_signal_pending(current)) - return -EINTR; - if (time_after(jiffies, timeout)) { - dev_err(dev->dev, - "Device not ready; aborting %s\n", enabled ? - "initialisation" : "reset"); - return -ENODEV; - } - } - - return 0; -} - -/* - * If the device has been passed off to us in an enabled state, just clear - * the enabled bit. The spec says we should set the 'shutdown notification - * bits', but doing so may cause the device to complete commands to the - * admin queue ... and we don't know what memory that might be pointing at! - */ -static int nvme_disable_ctrl(struct nvme_dev *dev, u64 cap) -{ - dev->ctrl_config &= ~NVME_CC_SHN_MASK; - dev->ctrl_config &= ~NVME_CC_ENABLE; - writel(dev->ctrl_config, &dev->bar->cc); - - return nvme_wait_ready(dev, cap, false); -} - -static int nvme_enable_ctrl(struct nvme_dev *dev, u64 cap) -{ - dev->ctrl_config &= ~NVME_CC_SHN_MASK; - dev->ctrl_config |= NVME_CC_ENABLE; - writel(dev->ctrl_config, &dev->bar->cc); - - return nvme_wait_ready(dev, cap, true); -} - -static int nvme_shutdown_ctrl(struct nvme_dev *dev) -{ - unsigned long timeout; - - dev->ctrl_config &= ~NVME_CC_SHN_MASK; - dev->ctrl_config |= NVME_CC_SHN_NORMAL; - - writel(dev->ctrl_config, &dev->bar->cc); - - timeout = SHUTDOWN_TIMEOUT + jiffies; - while ((readl(&dev->bar->csts) & NVME_CSTS_SHST_MASK) != - NVME_CSTS_SHST_CMPLT) { - msleep(100); - if (fatal_signal_pending(current)) - return -EINTR; - if (time_after(jiffies, timeout)) { - dev_err(dev->dev, - "Device shutdown incomplete; abort shutdown\n"); - return -ENODEV; - } - } - - return 0; -} - static struct blk_mq_ops nvme_mq_admin_ops = { .queue_rq = nvme_queue_rq, + .complete = nvme_complete_rq, .map_queue = blk_mq_map_queue, .init_hctx = nvme_admin_init_hctx, .exit_hctx = nvme_admin_exit_hctx, @@ -1685,6 +1234,7 @@ static struct blk_mq_ops nvme_mq_ops = { .queue_rq = nvme_queue_rq, + .complete = nvme_complete_rq, .map_queue = blk_mq_map_queue, .init_hctx = nvme_init_hctx, .init_request = nvme_init_request, @@ -1694,19 +1244,23 @@ static void nvme_dev_remove_admin(struct nvme_dev *dev) { - if (dev->admin_q && !blk_queue_dying(dev->admin_q)) { - blk_cleanup_queue(dev->admin_q); + if (dev->ctrl.admin_q && !blk_queue_dying(dev->ctrl.admin_q)) { + blk_cleanup_queue(dev->ctrl.admin_q); blk_mq_free_tag_set(&dev->admin_tagset); } } static int nvme_alloc_admin_tags(struct nvme_dev *dev) { - if (!dev->admin_q) { + if (!dev->ctrl.admin_q) { dev->admin_tagset.ops = &nvme_mq_admin_ops; dev->admin_tagset.nr_hw_queues = 1; - dev->admin_tagset.queue_depth = NVME_AQ_DEPTH - 1; - dev->admin_tagset.reserved_tags = 1; + + /* + * Subtract one to leave an empty queue entry for 'Full Queue' + * condition. See NVM-Express 1.2 specification, section 4.1.2. + */ + dev->admin_tagset.queue_depth = NVME_AQ_BLKMQ_DEPTH - 1; dev->admin_tagset.timeout = ADMIN_TIMEOUT; dev->admin_tagset.numa_node = dev_to_node(dev->dev); dev->admin_tagset.cmd_size = nvme_cmd_size(dev); @@ -1715,18 +1269,18 @@ if (blk_mq_alloc_tag_set(&dev->admin_tagset)) return -ENOMEM; - dev->admin_q = blk_mq_init_queue(&dev->admin_tagset); - if (IS_ERR(dev->admin_q)) { + dev->ctrl.admin_q = blk_mq_init_queue(&dev->admin_tagset); + if (IS_ERR(dev->ctrl.admin_q)) { blk_mq_free_tag_set(&dev->admin_tagset); return -ENOMEM; } - if (!blk_get_queue(dev->admin_q)) { + if (!blk_get_queue(dev->ctrl.admin_q)) { nvme_dev_remove_admin(dev); - dev->admin_q = NULL; + dev->ctrl.admin_q = NULL; return -ENODEV; } } else - blk_mq_unfreeze_queue(dev->admin_q); + blk_mq_start_stopped_hw_queues(dev->ctrl.admin_q, true); return 0; } @@ -1735,31 +1289,17 @@ { int result; u32 aqa; - u64 cap = lo_hi_readq(&dev->bar->cap); + u64 cap = lo_hi_readq(dev->bar + NVME_REG_CAP); struct nvme_queue *nvmeq; - /* - * default to a 4K page size, with the intention to update this - * path in the future to accomodate architectures with differing - * kernel and IO page sizes. - */ - unsigned page_shift = 12; - unsigned dev_page_min = NVME_CAP_MPSMIN(cap) + 12; - if (page_shift < dev_page_min) { - dev_err(dev->dev, - "Minimum device page size (%u) too large for " - "host (%u)\n", 1 << dev_page_min, - 1 << page_shift); - return -ENODEV; - } - - dev->subsystem = readl(&dev->bar->vs) >= NVME_VS(1, 1) ? + dev->subsystem = readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 1) ? NVME_CAP_NSSRC(cap) : 0; - if (dev->subsystem && (readl(&dev->bar->csts) & NVME_CSTS_NSSRO)) - writel(NVME_CSTS_NSSRO, &dev->bar->csts); + if (dev->subsystem && + (readl(dev->bar + NVME_REG_CSTS) & NVME_CSTS_NSSRO)) + writel(NVME_CSTS_NSSRO, dev->bar + NVME_REG_CSTS); - result = nvme_disable_ctrl(dev, cap); + result = nvme_disable_ctrl(&dev->ctrl, cap); if (result < 0) return result; @@ -1773,18 +1313,11 @@ aqa = nvmeq->q_depth - 1; aqa |= aqa << 16; - dev->page_size = 1 << page_shift; + writel(aqa, dev->bar + NVME_REG_AQA); + lo_hi_writeq(nvmeq->sq_dma_addr, dev->bar + NVME_REG_ASQ); + lo_hi_writeq(nvmeq->cq_dma_addr, dev->bar + NVME_REG_ACQ); - dev->ctrl_config = NVME_CC_CSS_NVM; - dev->ctrl_config |= (page_shift - 12) << NVME_CC_MPS_SHIFT; - dev->ctrl_config |= NVME_CC_ARB_RR | NVME_CC_SHN_NONE; - dev->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES; - - writel(aqa, &dev->bar->aqa); - lo_hi_writeq(nvmeq->sq_dma_addr, &dev->bar->asq); - lo_hi_writeq(nvmeq->cq_dma_addr, &dev->bar->acq); - - result = nvme_enable_ctrl(dev, cap); + result = nvme_enable_ctrl(&dev->ctrl, cap); if (result) goto free_nvmeq; @@ -1802,406 +1335,6 @@ return result; } -static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) -{ - struct nvme_dev *dev = ns->dev; - struct nvme_user_io io; - struct nvme_command c; - unsigned length, meta_len; - int status, write; - dma_addr_t meta_dma = 0; - void *meta = NULL; - void __user *metadata; - - if (copy_from_user(&io, uio, sizeof(io))) - return -EFAULT; - - switch (io.opcode) { - case nvme_cmd_write: - case nvme_cmd_read: - case nvme_cmd_compare: - break; - default: - return -EINVAL; - } - - length = (io.nblocks + 1) << ns->lba_shift; - meta_len = (io.nblocks + 1) * ns->ms; - metadata = (void __user *)(uintptr_t)io.metadata; - write = io.opcode & 1; - - if (ns->ext) { - length += meta_len; - meta_len = 0; - } - if (meta_len) { - if (((io.metadata & 3) || !io.metadata) && !ns->ext) - return -EINVAL; - - meta = dma_alloc_coherent(dev->dev, meta_len, - &meta_dma, GFP_KERNEL); - - if (!meta) { - status = -ENOMEM; - goto unmap; - } - if (write) { - if (copy_from_user(meta, metadata, meta_len)) { - status = -EFAULT; - goto unmap; - } - } - } - - memset(&c, 0, sizeof(c)); - c.rw.opcode = io.opcode; - c.rw.flags = io.flags; - c.rw.nsid = cpu_to_le32(ns->ns_id); - c.rw.slba = cpu_to_le64(io.slba); - c.rw.length = cpu_to_le16(io.nblocks); - c.rw.control = cpu_to_le16(io.control); - c.rw.dsmgmt = cpu_to_le32(io.dsmgmt); - c.rw.reftag = cpu_to_le32(io.reftag); - c.rw.apptag = cpu_to_le16(io.apptag); - c.rw.appmask = cpu_to_le16(io.appmask); - c.rw.metadata = cpu_to_le64(meta_dma); - - status = __nvme_submit_sync_cmd(ns->queue, &c, NULL, - (void __user *)(uintptr_t)io.addr, length, NULL, 0); - unmap: - if (meta) { - if (status == NVME_SC_SUCCESS && !write) { - if (copy_to_user(metadata, meta, meta_len)) - status = -EFAULT; - } - dma_free_coherent(dev->dev, meta_len, meta, meta_dma); - } - return status; -} - -static int nvme_user_cmd(struct nvme_dev *dev, struct nvme_ns *ns, - struct nvme_passthru_cmd __user *ucmd) -{ - struct nvme_passthru_cmd cmd; - struct nvme_command c; - unsigned timeout = 0; - int status; - - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - if (copy_from_user(&cmd, ucmd, sizeof(cmd))) - return -EFAULT; - - memset(&c, 0, sizeof(c)); - c.common.opcode = cmd.opcode; - c.common.flags = cmd.flags; - c.common.nsid = cpu_to_le32(cmd.nsid); - c.common.cdw2[0] = cpu_to_le32(cmd.cdw2); - c.common.cdw2[1] = cpu_to_le32(cmd.cdw3); - c.common.cdw10[0] = cpu_to_le32(cmd.cdw10); - c.common.cdw10[1] = cpu_to_le32(cmd.cdw11); - c.common.cdw10[2] = cpu_to_le32(cmd.cdw12); - c.common.cdw10[3] = cpu_to_le32(cmd.cdw13); - c.common.cdw10[4] = cpu_to_le32(cmd.cdw14); - c.common.cdw10[5] = cpu_to_le32(cmd.cdw15); - - if (cmd.timeout_ms) - timeout = msecs_to_jiffies(cmd.timeout_ms); - - status = __nvme_submit_sync_cmd(ns ? ns->queue : dev->admin_q, &c, - NULL, (void __user *)(uintptr_t)cmd.addr, cmd.data_len, - &cmd.result, timeout); - if (status >= 0) { - if (put_user(cmd.result, &ucmd->result)) - return -EFAULT; - } - - return status; -} - -static int nvme_subsys_reset(struct nvme_dev *dev) -{ - if (!dev->subsystem) - return -ENOTTY; - - writel(0x4E564D65, &dev->bar->nssr); /* "NVMe" */ - return 0; -} - -static int nvme_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, - unsigned long arg) -{ - struct nvme_ns *ns = bdev->bd_disk->private_data; - - switch (cmd) { - case NVME_IOCTL_ID: - force_successful_syscall_return(); - return ns->ns_id; - case NVME_IOCTL_ADMIN_CMD: - return nvme_user_cmd(ns->dev, NULL, (void __user *)arg); - case NVME_IOCTL_IO_CMD: - return nvme_user_cmd(ns->dev, ns, (void __user *)arg); - case NVME_IOCTL_SUBMIT_IO: - return nvme_submit_io(ns, (void __user *)arg); - case SG_GET_VERSION_NUM: - return nvme_sg_get_version_num((void __user *)arg); - case SG_IO: - return nvme_sg_io(ns, (void __user *)arg); - default: - return -ENOTTY; - } -} - -#ifdef CONFIG_COMPAT -static int nvme_compat_ioctl(struct block_device *bdev, fmode_t mode, - unsigned int cmd, unsigned long arg) -{ - switch (cmd) { - case SG_IO: - return -ENOIOCTLCMD; - } - return nvme_ioctl(bdev, mode, cmd, arg); -} -#else -#define nvme_compat_ioctl NULL -#endif - -static void nvme_free_dev(struct kref *kref); -static void nvme_free_ns(struct kref *kref) -{ - struct nvme_ns *ns = container_of(kref, struct nvme_ns, kref); - - if (ns->type == NVME_NS_LIGHTNVM) - nvme_nvm_unregister(ns->queue, ns->disk->disk_name); - - spin_lock(&dev_list_lock); - ns->disk->private_data = NULL; - spin_unlock(&dev_list_lock); - - kref_put(&ns->dev->kref, nvme_free_dev); - put_disk(ns->disk); - kfree(ns); -} - -static int nvme_open(struct block_device *bdev, fmode_t mode) -{ - int ret = 0; - struct nvme_ns *ns; - - spin_lock(&dev_list_lock); - ns = bdev->bd_disk->private_data; - if (!ns) - ret = -ENXIO; - else if (!kref_get_unless_zero(&ns->kref)) - ret = -ENXIO; - spin_unlock(&dev_list_lock); - - return ret; -} - -static void nvme_release(struct gendisk *disk, fmode_t mode) -{ - struct nvme_ns *ns = disk->private_data; - kref_put(&ns->kref, nvme_free_ns); -} - -static int nvme_getgeo(struct block_device *bd, struct hd_geometry *geo) -{ - /* some standard values */ - geo->heads = 1 << 6; - geo->sectors = 1 << 5; - geo->cylinders = get_capacity(bd->bd_disk) >> 11; - return 0; -} - -static void nvme_config_discard(struct nvme_ns *ns) -{ - u32 logical_block_size = queue_logical_block_size(ns->queue); - ns->queue->limits.discard_zeroes_data = 0; - ns->queue->limits.discard_alignment = logical_block_size; - ns->queue->limits.discard_granularity = logical_block_size; - blk_queue_max_discard_sectors(ns->queue, 0xffffffff); - queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, ns->queue); -} - -static int nvme_revalidate_disk(struct gendisk *disk) -{ - struct nvme_ns *ns = disk->private_data; - struct nvme_dev *dev = ns->dev; - struct nvme_id_ns *id; - u8 lbaf, pi_type; - u16 old_ms; - unsigned short bs; - - if (nvme_identify_ns(dev, ns->ns_id, &id)) { - dev_warn(dev->dev, "%s: Identify failure nvme%dn%d\n", __func__, - dev->instance, ns->ns_id); - return -ENODEV; - } - if (id->ncap == 0) { - kfree(id); - return -ENODEV; - } - - if (nvme_nvm_ns_supported(ns, id) && ns->type != NVME_NS_LIGHTNVM) { - if (nvme_nvm_register(ns->queue, disk->disk_name)) { - dev_warn(dev->dev, - "%s: LightNVM init failure\n", __func__); - kfree(id); - return -ENODEV; - } - ns->type = NVME_NS_LIGHTNVM; - } - - old_ms = ns->ms; - lbaf = id->flbas & NVME_NS_FLBAS_LBA_MASK; - ns->lba_shift = id->lbaf[lbaf].ds; - ns->ms = le16_to_cpu(id->lbaf[lbaf].ms); - ns->ext = ns->ms && (id->flbas & NVME_NS_FLBAS_META_EXT); - - /* - * If identify namespace failed, use default 512 byte block size so - * block layer can use before failing read/write for 0 capacity. - */ - if (ns->lba_shift == 0) - ns->lba_shift = 9; - bs = 1 << ns->lba_shift; - - /* XXX: PI implementation requires metadata equal t10 pi tuple size */ - pi_type = ns->ms == sizeof(struct t10_pi_tuple) ? - id->dps & NVME_NS_DPS_PI_MASK : 0; - - blk_mq_freeze_queue(disk->queue); - if (blk_get_integrity(disk) && (ns->pi_type != pi_type || - ns->ms != old_ms || - bs != queue_logical_block_size(disk->queue) || - (ns->ms && ns->ext))) - blk_integrity_unregister(disk); - - ns->pi_type = pi_type; - blk_queue_logical_block_size(ns->queue, bs); - - if (ns->ms && !ns->ext) - nvme_init_integrity(ns); - - if ((ns->ms && !(ns->ms == 8 && ns->pi_type) && - !blk_get_integrity(disk)) || - ns->type == NVME_NS_LIGHTNVM) - set_capacity(disk, 0); - else - set_capacity(disk, le64_to_cpup(&id->nsze) << (ns->lba_shift - 9)); - - if (dev->oncs & NVME_CTRL_ONCS_DSM) - nvme_config_discard(ns); - blk_mq_unfreeze_queue(disk->queue); - - kfree(id); - return 0; -} - -static char nvme_pr_type(enum pr_type type) -{ - switch (type) { - case PR_WRITE_EXCLUSIVE: - return 1; - case PR_EXCLUSIVE_ACCESS: - return 2; - case PR_WRITE_EXCLUSIVE_REG_ONLY: - return 3; - case PR_EXCLUSIVE_ACCESS_REG_ONLY: - return 4; - case PR_WRITE_EXCLUSIVE_ALL_REGS: - return 5; - case PR_EXCLUSIVE_ACCESS_ALL_REGS: - return 6; - default: - return 0; - } -}; - -static int nvme_pr_command(struct block_device *bdev, u32 cdw10, - u64 key, u64 sa_key, u8 op) -{ - struct nvme_ns *ns = bdev->bd_disk->private_data; - struct nvme_command c; - u8 data[16] = { 0, }; - - put_unaligned_le64(key, &data[0]); - put_unaligned_le64(sa_key, &data[8]); - - memset(&c, 0, sizeof(c)); - c.common.opcode = op; - c.common.nsid = cpu_to_le32(ns->ns_id); - c.common.cdw10[0] = cpu_to_le32(cdw10); - - return nvme_submit_sync_cmd(ns->queue, &c, data, 16); -} - -static int nvme_pr_register(struct block_device *bdev, u64 old, - u64 new, unsigned flags) -{ - u32 cdw10; - - if (flags & ~PR_FL_IGNORE_KEY) - return -EOPNOTSUPP; - - cdw10 = old ? 2 : 0; - cdw10 |= (flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0; - cdw10 |= (1 << 30) | (1 << 31); /* PTPL=1 */ - return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_register); -} - -static int nvme_pr_reserve(struct block_device *bdev, u64 key, - enum pr_type type, unsigned flags) -{ - u32 cdw10; - - if (flags & ~PR_FL_IGNORE_KEY) - return -EOPNOTSUPP; - - cdw10 = nvme_pr_type(type) << 8; - cdw10 |= ((flags & PR_FL_IGNORE_KEY) ? 1 << 3 : 0); - return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_acquire); -} - -static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new, - enum pr_type type, bool abort) -{ - u32 cdw10 = nvme_pr_type(type) << 8 | abort ? 2 : 1; - return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_acquire); -} - -static int nvme_pr_clear(struct block_device *bdev, u64 key) -{ - u32 cdw10 = 1 | (key ? 1 << 3 : 0); - return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register); -} - -static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type) -{ - u32 cdw10 = nvme_pr_type(type) << 8 | key ? 1 << 3 : 0; - return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release); -} - -static const struct pr_ops nvme_pr_ops = { - .pr_register = nvme_pr_register, - .pr_reserve = nvme_pr_reserve, - .pr_release = nvme_pr_release, - .pr_preempt = nvme_pr_preempt, - .pr_clear = nvme_pr_clear, -}; - -static const struct block_device_operations nvme_fops = { - .owner = THIS_MODULE, - .ioctl = nvme_ioctl, - .compat_ioctl = nvme_compat_ioctl, - .open = nvme_open, - .release = nvme_release, - .getgeo = nvme_getgeo, - .revalidate_disk= nvme_revalidate_disk, - .pr_ops = &nvme_pr_ops, -}; - static int nvme_kthread(void *data) { struct nvme_dev *dev, *next; @@ -2211,14 +1344,20 @@ spin_lock(&dev_list_lock); list_for_each_entry_safe(dev, next, &dev_list, node) { int i; - u32 csts = readl(&dev->bar->csts); + u32 csts = readl(dev->bar + NVME_REG_CSTS); + + /* + * Skip controllers currently under reset. + */ + if (work_pending(&dev->reset_work) || work_busy(&dev->reset_work)) + continue; if ((dev->subsystem && (csts & NVME_CSTS_NSSRO)) || csts & NVME_CSTS_CFS) { - if (!__nvme_reset(dev)) { + if (queue_work(nvme_workq, &dev->reset_work)) { dev_warn(dev->dev, "Failed status: %x, reset controller\n", - readl(&dev->bar->csts)); + readl(dev->bar + NVME_REG_CSTS)); } continue; } @@ -2229,11 +1368,8 @@ spin_lock_irq(&nvmeq->q_lock); nvme_process_cq(nvmeq); - while ((i == 0) && (dev->event_limit > 0)) { - if (nvme_submit_async_admin_req(dev)) - break; - dev->event_limit--; - } + while (i == 0 && dev->ctrl.event_limit > 0) + nvme_submit_async_event(dev); spin_unlock_irq(&nvmeq->q_lock); } } @@ -2243,127 +1379,33 @@ return 0; } -static void nvme_alloc_ns(struct nvme_dev *dev, unsigned nsid) -{ - struct nvme_ns *ns; - struct gendisk *disk; - int node = dev_to_node(dev->dev); - - ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node); - if (!ns) - return; - - ns->queue = blk_mq_init_queue(&dev->tagset); - if (IS_ERR(ns->queue)) - goto out_free_ns; - queue_flag_set_unlocked(QUEUE_FLAG_NOMERGES, ns->queue); - queue_flag_set_unlocked(QUEUE_FLAG_NONROT, ns->queue); - ns->dev = dev; - ns->queue->queuedata = ns; - - disk = alloc_disk_node(0, node); - if (!disk) - goto out_free_queue; - - kref_init(&ns->kref); - ns->ns_id = nsid; - ns->disk = disk; - ns->lba_shift = 9; /* set to a default value for 512 until disk is validated */ - list_add_tail(&ns->list, &dev->namespaces); - - blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift); - if (dev->max_hw_sectors) { - blk_queue_max_hw_sectors(ns->queue, dev->max_hw_sectors); - blk_queue_max_segments(ns->queue, - (dev->max_hw_sectors / (dev->page_size >> 9)) + 1); - } - if (dev->stripe_size) - blk_queue_chunk_sectors(ns->queue, dev->stripe_size >> 9); - if (dev->vwc & NVME_CTRL_VWC_PRESENT) - blk_queue_flush(ns->queue, REQ_FLUSH | REQ_FUA); - blk_queue_virt_boundary(ns->queue, dev->page_size - 1); - - disk->major = nvme_major; - disk->first_minor = 0; - disk->fops = &nvme_fops; - disk->private_data = ns; - disk->queue = ns->queue; - disk->driverfs_dev = dev->device; - disk->flags = GENHD_FL_EXT_DEVT; - sprintf(disk->disk_name, "nvme%dn%d", dev->instance, nsid); - - /* - * Initialize capacity to 0 until we establish the namespace format and - * setup integrity extentions if necessary. The revalidate_disk after - * add_disk allows the driver to register with integrity if the format - * requires it. - */ - set_capacity(disk, 0); - if (nvme_revalidate_disk(ns->disk)) - goto out_free_disk; - - kref_get(&dev->kref); - if (ns->type != NVME_NS_LIGHTNVM) { - add_disk(ns->disk); - if (ns->ms) { - struct block_device *bd = bdget_disk(ns->disk, 0); - if (!bd) - return; - if (blkdev_get(bd, FMODE_READ, NULL)) { - bdput(bd); - return; - } - blkdev_reread_part(bd); - blkdev_put(bd, FMODE_READ); - } - } - return; - out_free_disk: - kfree(disk); - list_del(&ns->list); - out_free_queue: - blk_cleanup_queue(ns->queue); - out_free_ns: - kfree(ns); -} - -/* - * Create I/O queues. Failing to create an I/O queue is not an issue, - * we can continue with less than the desired amount of queues, and - * even a controller without I/O queues an still be used to issue - * admin commands. This might be useful to upgrade a buggy firmware - * for example. - */ -static void nvme_create_io_queues(struct nvme_dev *dev) +static int nvme_create_io_queues(struct nvme_dev *dev) { unsigned i; + int ret = 0; - for (i = dev->queue_count; i <= dev->max_qid; i++) - if (!nvme_alloc_queue(dev, i, dev->q_depth)) + for (i = dev->queue_count; i <= dev->max_qid; i++) { + if (!nvme_alloc_queue(dev, i, dev->q_depth)) { + ret = -ENOMEM; break; + } + } - for (i = dev->online_queues; i <= dev->queue_count - 1; i++) - if (nvme_create_queue(dev->queues[i], i)) { + for (i = dev->online_queues; i <= dev->queue_count - 1; i++) { + ret = nvme_create_queue(dev->queues[i], i); + if (ret) { nvme_free_queues(dev, i); break; } -} - -static int set_queue_count(struct nvme_dev *dev, int count) -{ - int status; - u32 result; - u32 q_count = (count - 1) | ((count - 1) << 16); - - status = nvme_set_features(dev, NVME_FEAT_NUM_QUEUES, q_count, 0, - &result); - if (status < 0) - return status; - if (status > 0) { - dev_err(dev->dev, "Could not set queue count (%d)\n", status); - return 0; } - return min(result & 0xffff, result >> 16) + 1; + + /* + * Ignore failing Create SQ/CQ commands, we can continue with less + * than the desired aount of queues, and even a controller without + * I/O queues an still be used to issue admin commands. This might + * be useful to upgrade a buggy firmware for example. + */ + return ret >= 0 ? 0 : ret; } static void __iomem *nvme_map_cmb(struct nvme_dev *dev) @@ -2378,11 +1420,11 @@ if (!use_cmb_sqes) return NULL; - dev->cmbsz = readl(&dev->bar->cmbsz); + dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ); if (!(NVME_CMB_SZ(dev->cmbsz))) return NULL; - cmbloc = readl(&dev->bar->cmbloc); + cmbloc = readl(dev->bar + NVME_REG_CMBLOC); szu = (u64)1 << (12 + 4 * NVME_CMB_SZU(dev->cmbsz)); size = szu * NVME_CMB_SZ(dev->cmbsz); @@ -2430,11 +1472,20 @@ int result, i, vecs, nr_io_queues, size; nr_io_queues = num_possible_cpus(); - result = set_queue_count(dev, nr_io_queues); - if (result <= 0) + result = nvme_set_queue_count(&dev->ctrl, &nr_io_queues); + if (result < 0) return result; - if (result < nr_io_queues) - nr_io_queues = result; + + /* + * Degraded controllers might return an error when setting the queue + * count. We still want to be able to bring them online and offer + * access to the admin queue, as that might be only way to fix them up. + */ + if (result > 0) { + dev_err(dev->dev, "Could not set queue count (%d)\n", result); + nr_io_queues = 0; + result = 0; + } if (dev->cmb && NVME_CMB_SQS(dev->cmbsz)) { result = nvme_cmb_qdepth(dev, nr_io_queues, @@ -2456,7 +1507,7 @@ return -ENOMEM; size = db_bar_size(dev, nr_io_queues); } while (1); - dev->dbs = ((void __iomem *)dev->bar) + 4096; + dev->dbs = dev->bar + 4096; adminq->q_db = dev->dbs; } @@ -2500,115 +1551,115 @@ /* Free previously allocated queues that are no longer usable */ nvme_free_queues(dev, nr_io_queues + 1); - nvme_create_io_queues(dev); - - return 0; + return nvme_create_io_queues(dev); free_queues: nvme_free_queues(dev, 1); return result; } -static int ns_cmp(void *priv, struct list_head *a, struct list_head *b) +static void nvme_set_irq_hints(struct nvme_dev *dev) { - struct nvme_ns *nsa = container_of(a, struct nvme_ns, list); - struct nvme_ns *nsb = container_of(b, struct nvme_ns, list); + struct nvme_queue *nvmeq; + int i; - return nsa->ns_id - nsb->ns_id; -} + for (i = 0; i < dev->online_queues; i++) { + nvmeq = dev->queues[i]; -static struct nvme_ns *nvme_find_ns(struct nvme_dev *dev, unsigned nsid) -{ - struct nvme_ns *ns; + if (!nvmeq->tags || !(*nvmeq->tags)) + continue; - list_for_each_entry(ns, &dev->namespaces, list) { - if (ns->ns_id == nsid) - return ns; - if (ns->ns_id > nsid) - break; + irq_set_affinity_hint(dev->entry[nvmeq->cq_vector].vector, + blk_mq_tags_cpumask(*nvmeq->tags)); } - return NULL; } -static inline bool nvme_io_incapable(struct nvme_dev *dev) +static void nvme_dev_scan(struct work_struct *work) { - return (!dev->bar || readl(&dev->bar->csts) & NVME_CSTS_CFS || - dev->online_queues < 2); + struct nvme_dev *dev = container_of(work, struct nvme_dev, scan_work); + + if (!dev->tagset.tags) + return; + nvme_scan_namespaces(&dev->ctrl); + nvme_set_irq_hints(dev); } -static void nvme_ns_remove(struct nvme_ns *ns) +static void nvme_del_queue_end(struct request *req, int error) { - bool kill = nvme_io_incapable(ns->dev) && !blk_queue_dying(ns->queue); - - if (kill) { - blk_set_queue_dying(ns->queue); + struct nvme_queue *nvmeq = req->end_io_data; - /* - * The controller was shutdown first if we got here through - * device removal. The shutdown may requeue outstanding - * requests. These need to be aborted immediately so - * del_gendisk doesn't block indefinitely for their completion. - */ - blk_mq_abort_requeue_list(ns->queue); - } - if (ns->disk->flags & GENHD_FL_UP) - del_gendisk(ns->disk); - if (kill || !blk_queue_dying(ns->queue)) { - blk_mq_abort_requeue_list(ns->queue); - blk_cleanup_queue(ns->queue); - } - list_del_init(&ns->list); - kref_put(&ns->kref, nvme_free_ns); + blk_mq_free_request(req); + complete(&nvmeq->dev->ioq_wait); } -static void nvme_scan_namespaces(struct nvme_dev *dev, unsigned nn) +static void nvme_del_cq_end(struct request *req, int error) { - struct nvme_ns *ns, *next; - unsigned i; + struct nvme_queue *nvmeq = req->end_io_data; + + if (!error) { + unsigned long flags; - for (i = 1; i <= nn; i++) { - ns = nvme_find_ns(dev, i); - if (ns) { - if (revalidate_disk(ns->disk)) - nvme_ns_remove(ns); - } else - nvme_alloc_ns(dev, i); - } - list_for_each_entry_safe(ns, next, &dev->namespaces, list) { - if (ns->ns_id > nn) - nvme_ns_remove(ns); + spin_lock_irqsave(&nvmeq->q_lock, flags); + nvme_process_cq(nvmeq); + spin_unlock_irqrestore(&nvmeq->q_lock, flags); } - list_sort(NULL, &dev->namespaces, ns_cmp); + + nvme_del_queue_end(req, error); } -static void nvme_set_irq_hints(struct nvme_dev *dev) +static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode) { - struct nvme_queue *nvmeq; - int i; + struct request_queue *q = nvmeq->dev->ctrl.admin_q; + struct request *req; + struct nvme_command cmd; - for (i = 0; i < dev->online_queues; i++) { - nvmeq = dev->queues[i]; + memset(&cmd, 0, sizeof(cmd)); + cmd.delete_queue.opcode = opcode; + cmd.delete_queue.qid = cpu_to_le16(nvmeq->qid); - if (!nvmeq->tags || !(*nvmeq->tags)) - continue; + req = nvme_alloc_request(q, &cmd, BLK_MQ_REQ_NOWAIT); + if (IS_ERR(req)) + return PTR_ERR(req); - irq_set_affinity_hint(dev->entry[nvmeq->cq_vector].vector, - blk_mq_tags_cpumask(*nvmeq->tags)); - } + req->timeout = ADMIN_TIMEOUT; + req->end_io_data = nvmeq; + + blk_execute_rq_nowait(q, NULL, req, false, + opcode == nvme_admin_delete_cq ? + nvme_del_cq_end : nvme_del_queue_end); + return 0; } -static void nvme_dev_scan(struct work_struct *work) +static void nvme_disable_io_queues(struct nvme_dev *dev) { - struct nvme_dev *dev = container_of(work, struct nvme_dev, scan_work); - struct nvme_id_ctrl *ctrl; + int pass; + unsigned long timeout; + u8 opcode = nvme_admin_delete_sq; - if (!dev->tagset.tags) - return; - if (nvme_identify_ctrl(dev, &ctrl)) - return; - nvme_scan_namespaces(dev, le32_to_cpup(&ctrl->nn)); - kfree(ctrl); - nvme_set_irq_hints(dev); + for (pass = 0; pass < 2; pass++) { + int sent = 0, i = dev->queue_count - 1; + + reinit_completion(&dev->ioq_wait); + retry: + timeout = ADMIN_TIMEOUT; + for (; i > 0; i--) { + struct nvme_queue *nvmeq = dev->queues[i]; + + if (!pass) + nvme_suspend_queue(nvmeq); + if (nvme_delete_queue(nvmeq, opcode)) + break; + ++sent; + } + while (sent--) { + timeout = wait_for_completion_io_timeout(&dev->ioq_wait, timeout); + if (timeout == 0) + return; + if (i) + goto retry; + } + opcode = nvme_admin_delete_cq; + } } /* @@ -2619,42 +1670,7 @@ */ static int nvme_dev_add(struct nvme_dev *dev) { - struct pci_dev *pdev = to_pci_dev(dev->dev); - int res; - struct nvme_id_ctrl *ctrl; - int shift = NVME_CAP_MPSMIN(lo_hi_readq(&dev->bar->cap)) + 12; - - res = nvme_identify_ctrl(dev, &ctrl); - if (res) { - dev_err(dev->dev, "Identify Controller failed (%d)\n", res); - return -EIO; - } - - dev->oncs = le16_to_cpup(&ctrl->oncs); - dev->abort_limit = ctrl->acl + 1; - dev->vwc = ctrl->vwc; - memcpy(dev->serial, ctrl->sn, sizeof(ctrl->sn)); - memcpy(dev->model, ctrl->mn, sizeof(ctrl->mn)); - memcpy(dev->firmware_rev, ctrl->fr, sizeof(ctrl->fr)); - if (ctrl->mdts) - dev->max_hw_sectors = 1 << (ctrl->mdts + shift - 9); - else - dev->max_hw_sectors = UINT_MAX; - if ((pdev->vendor == PCI_VENDOR_ID_INTEL) && - (pdev->device == 0x0953) && ctrl->vs[3]) { - unsigned int max_hw_sectors; - - dev->stripe_size = 1 << (ctrl->vs[3] + shift); - max_hw_sectors = dev->stripe_size >> (shift - 9); - if (dev->max_hw_sectors) { - dev->max_hw_sectors = min(max_hw_sectors, - dev->max_hw_sectors); - } else - dev->max_hw_sectors = max_hw_sectors; - } - kfree(ctrl); - - if (!dev->tagset.tags) { + if (!dev->ctrl.tagset) { dev->tagset.ops = &nvme_mq_ops; dev->tagset.nr_hw_queues = dev->online_queues - 1; dev->tagset.timeout = NVME_IO_TIMEOUT; @@ -2667,8 +1683,9 @@ if (blk_mq_alloc_tag_set(&dev->tagset)) return 0; + dev->ctrl.tagset = &dev->tagset; } - schedule_work(&dev->scan_work); + queue_work(nvme_workq, &dev->scan_work); return 0; } @@ -2698,7 +1715,7 @@ if (!dev->bar) goto disable; - if (readl(&dev->bar->csts) == -1) { + if (readl(dev->bar + NVME_REG_CSTS) == -1) { result = -ENODEV; goto unmap; } @@ -2713,10 +1730,11 @@ goto unmap; } - cap = lo_hi_readq(&dev->bar->cap); + cap = lo_hi_readq(dev->bar + NVME_REG_CAP); + dev->q_depth = min_t(int, NVME_CAP_MQES(cap) + 1, NVME_Q_DEPTH); dev->db_stride = 1 << NVME_CAP_STRIDE(cap); - dev->dbs = ((void __iomem *)dev->bar) + 4096; + dev->dbs = dev->bar + 4096; /* * Temporary fix for the Apple controller found in the MacBook8,1 and @@ -2729,9 +1747,11 @@ dev->q_depth); } - if (readl(&dev->bar->vs) >= NVME_VS(1, 2)) + if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2)) dev->cmb = nvme_map_cmb(dev); + pci_enable_pcie_error_reporting(pdev); + pci_save_state(pdev); return 0; unmap: @@ -2759,152 +1779,34 @@ pci_release_regions(pdev); } - if (pci_is_enabled(pdev)) + if (pci_is_enabled(pdev)) { + pci_disable_pcie_error_reporting(pdev); pci_disable_device(pdev); -} - -struct nvme_delq_ctx { - struct task_struct *waiter; - struct kthread_worker *worker; - atomic_t refcount; -}; - -static void nvme_wait_dq(struct nvme_delq_ctx *dq, struct nvme_dev *dev) -{ - dq->waiter = current; - mb(); - - for (;;) { - set_current_state(TASK_KILLABLE); - if (!atomic_read(&dq->refcount)) - break; - if (!schedule_timeout(ADMIN_TIMEOUT) || - fatal_signal_pending(current)) { - /* - * Disable the controller first since we can't trust it - * at this point, but leave the admin queue enabled - * until all queue deletion requests are flushed. - * FIXME: This may take a while if there are more h/w - * queues than admin tags. - */ - set_current_state(TASK_RUNNING); - nvme_disable_ctrl(dev, lo_hi_readq(&dev->bar->cap)); - nvme_clear_queue(dev->queues[0]); - flush_kthread_worker(dq->worker); - nvme_disable_queue(dev, 0); - return; - } } - set_current_state(TASK_RUNNING); -} - -static void nvme_put_dq(struct nvme_delq_ctx *dq) -{ - atomic_dec(&dq->refcount); - if (dq->waiter) - wake_up_process(dq->waiter); -} - -static struct nvme_delq_ctx *nvme_get_dq(struct nvme_delq_ctx *dq) -{ - atomic_inc(&dq->refcount); - return dq; -} - -static void nvme_del_queue_end(struct nvme_queue *nvmeq) -{ - struct nvme_delq_ctx *dq = nvmeq->cmdinfo.ctx; - nvme_put_dq(dq); - - spin_lock_irq(&nvmeq->q_lock); - nvme_process_cq(nvmeq); - spin_unlock_irq(&nvmeq->q_lock); -} - -static int adapter_async_del_queue(struct nvme_queue *nvmeq, u8 opcode, - kthread_work_func_t fn) -{ - struct nvme_command c; - - memset(&c, 0, sizeof(c)); - c.delete_queue.opcode = opcode; - c.delete_queue.qid = cpu_to_le16(nvmeq->qid); - - init_kthread_work(&nvmeq->cmdinfo.work, fn); - return nvme_submit_admin_async_cmd(nvmeq->dev, &c, &nvmeq->cmdinfo, - ADMIN_TIMEOUT); } -static void nvme_del_cq_work_handler(struct kthread_work *work) +static int nvme_dev_list_add(struct nvme_dev *dev) { - struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, - cmdinfo.work); - nvme_del_queue_end(nvmeq); -} - -static int nvme_delete_cq(struct nvme_queue *nvmeq) -{ - return adapter_async_del_queue(nvmeq, nvme_admin_delete_cq, - nvme_del_cq_work_handler); -} - -static void nvme_del_sq_work_handler(struct kthread_work *work) -{ - struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, - cmdinfo.work); - int status = nvmeq->cmdinfo.status; - - if (!status) - status = nvme_delete_cq(nvmeq); - if (status) - nvme_del_queue_end(nvmeq); -} - -static int nvme_delete_sq(struct nvme_queue *nvmeq) -{ - return adapter_async_del_queue(nvmeq, nvme_admin_delete_sq, - nvme_del_sq_work_handler); -} - -static void nvme_del_queue_start(struct kthread_work *work) -{ - struct nvme_queue *nvmeq = container_of(work, struct nvme_queue, - cmdinfo.work); - if (nvme_delete_sq(nvmeq)) - nvme_del_queue_end(nvmeq); -} + bool start_thread = false; -static void nvme_disable_io_queues(struct nvme_dev *dev) -{ - int i; - DEFINE_KTHREAD_WORKER_ONSTACK(worker); - struct nvme_delq_ctx dq; - struct task_struct *kworker_task = kthread_run(kthread_worker_fn, - &worker, "nvme%d", dev->instance); - - if (IS_ERR(kworker_task)) { - dev_err(dev->dev, - "Failed to create queue del task\n"); - for (i = dev->queue_count - 1; i > 0; i--) - nvme_disable_queue(dev, i); - return; + spin_lock(&dev_list_lock); + if (list_empty(&dev_list) && IS_ERR_OR_NULL(nvme_thread)) { + start_thread = true; + nvme_thread = NULL; } + list_add(&dev->node, &dev_list); + spin_unlock(&dev_list_lock); - dq.waiter = NULL; - atomic_set(&dq.refcount, 0); - dq.worker = &worker; - for (i = dev->queue_count - 1; i > 0; i--) { - struct nvme_queue *nvmeq = dev->queues[i]; + if (start_thread) { + nvme_thread = kthread_run(nvme_kthread, NULL, "nvme"); + wake_up_all(&nvme_kthread_wait); + } else + wait_event_killable(nvme_kthread_wait, nvme_thread); - if (nvme_suspend_queue(nvmeq)) - continue; - nvmeq->cmdinfo.ctx = nvme_get_dq(&dq); - nvmeq->cmdinfo.worker = dq.worker; - init_kthread_work(&nvmeq->cmdinfo.work, nvme_del_queue_start); - queue_kthread_work(dq.worker, &nvmeq->cmdinfo.work); - } - nvme_wait_dq(&dq, dev); - kthread_stop(kworker_task); + if (IS_ERR_OR_NULL(nvme_thread)) + return nvme_thread ? PTR_ERR(nvme_thread) : -EINTR; + + return 0; } /* @@ -2927,44 +1829,17 @@ kthread_stop(tmp); } -static void nvme_freeze_queues(struct nvme_dev *dev) -{ - struct nvme_ns *ns; - - list_for_each_entry(ns, &dev->namespaces, list) { - blk_mq_freeze_queue_start(ns->queue); - - spin_lock_irq(ns->queue->queue_lock); - queue_flag_set(QUEUE_FLAG_STOPPED, ns->queue); - spin_unlock_irq(ns->queue->queue_lock); - - blk_mq_cancel_requeue_work(ns->queue); - blk_mq_stop_hw_queues(ns->queue); - } -} - -static void nvme_unfreeze_queues(struct nvme_dev *dev) -{ - struct nvme_ns *ns; - - list_for_each_entry(ns, &dev->namespaces, list) { - queue_flag_clear_unlocked(QUEUE_FLAG_STOPPED, ns->queue); - blk_mq_unfreeze_queue(ns->queue); - blk_mq_start_stopped_hw_queues(ns->queue, true); - blk_mq_kick_requeue_list(ns->queue); - } -} - -static void nvme_dev_shutdown(struct nvme_dev *dev) +static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown) { int i; u32 csts = -1; nvme_dev_list_remove(dev); + mutex_lock(&dev->shutdown_lock); if (dev->bar) { - nvme_freeze_queues(dev); - csts = readl(&dev->bar->csts); + nvme_stop_queues(&dev->ctrl); + csts = readl(dev->bar + NVME_REG_CSTS); } if (csts & NVME_CSTS_CFS || !(csts & NVME_CSTS_RDY)) { for (i = dev->queue_count - 1; i >= 0; i--) { @@ -2973,30 +1848,13 @@ } } else { nvme_disable_io_queues(dev); - nvme_shutdown_ctrl(dev); - nvme_disable_queue(dev, 0); + nvme_disable_admin_queue(dev, shutdown); } nvme_dev_unmap(dev); for (i = dev->queue_count - 1; i >= 0; i--) nvme_clear_queue(dev->queues[i]); -} - -static void nvme_dev_remove(struct nvme_dev *dev) -{ - struct nvme_ns *ns, *next; - - if (nvme_io_incapable(dev)) { - /* - * If the device is not capable of IO (surprise hot-removal, - * for example), we need to quiesce prior to deleting the - * namespaces. This will end outstanding requests and prevent - * attempts to sync dirty data. - */ - nvme_dev_shutdown(dev); - } - list_for_each_entry_safe(ns, next, &dev->namespaces, list) - nvme_ns_remove(ns); + mutex_unlock(&dev->shutdown_lock); } static int nvme_setup_prp_pools(struct nvme_dev *dev) @@ -3022,119 +1880,36 @@ dma_pool_destroy(dev->prp_small_pool); } -static DEFINE_IDA(nvme_instance_ida); - -static int nvme_set_instance(struct nvme_dev *dev) -{ - int instance, error; - - do { - if (!ida_pre_get(&nvme_instance_ida, GFP_KERNEL)) - return -ENODEV; - - spin_lock(&dev_list_lock); - error = ida_get_new(&nvme_instance_ida, &instance); - spin_unlock(&dev_list_lock); - } while (error == -EAGAIN); - - if (error) - return -ENODEV; - - dev->instance = instance; - return 0; -} - -static void nvme_release_instance(struct nvme_dev *dev) -{ - spin_lock(&dev_list_lock); - ida_remove(&nvme_instance_ida, dev->instance); - spin_unlock(&dev_list_lock); -} - -static void nvme_free_dev(struct kref *kref) +static void nvme_pci_free_ctrl(struct nvme_ctrl *ctrl) { - struct nvme_dev *dev = container_of(kref, struct nvme_dev, kref); + struct nvme_dev *dev = to_nvme_dev(ctrl); put_device(dev->dev); - put_device(dev->device); - nvme_release_instance(dev); if (dev->tagset.tags) blk_mq_free_tag_set(&dev->tagset); - if (dev->admin_q) - blk_put_queue(dev->admin_q); + if (dev->ctrl.admin_q) + blk_put_queue(dev->ctrl.admin_q); kfree(dev->queues); kfree(dev->entry); kfree(dev); } -static int nvme_dev_open(struct inode *inode, struct file *f) -{ - struct nvme_dev *dev; - int instance = iminor(inode); - int ret = -ENODEV; - - spin_lock(&dev_list_lock); - list_for_each_entry(dev, &dev_list, node) { - if (dev->instance == instance) { - if (!dev->admin_q) { - ret = -EWOULDBLOCK; - break; - } - if (!kref_get_unless_zero(&dev->kref)) - break; - f->private_data = dev; - ret = 0; - break; - } - } - spin_unlock(&dev_list_lock); - - return ret; -} - -static int nvme_dev_release(struct inode *inode, struct file *f) +static void nvme_reset_work(struct work_struct *work) { - struct nvme_dev *dev = f->private_data; - kref_put(&dev->kref, nvme_free_dev); - return 0; -} + struct nvme_dev *dev = container_of(work, struct nvme_dev, reset_work); + int result; -static long nvme_dev_ioctl(struct file *f, unsigned int cmd, unsigned long arg) -{ - struct nvme_dev *dev = f->private_data; - struct nvme_ns *ns; - - switch (cmd) { - case NVME_IOCTL_ADMIN_CMD: - return nvme_user_cmd(dev, NULL, (void __user *)arg); - case NVME_IOCTL_IO_CMD: - if (list_empty(&dev->namespaces)) - return -ENOTTY; - ns = list_first_entry(&dev->namespaces, struct nvme_ns, list); - return nvme_user_cmd(dev, ns, (void __user *)arg); - case NVME_IOCTL_RESET: - dev_warn(dev->dev, "resetting controller\n"); - return nvme_reset(dev); - case NVME_IOCTL_SUBSYS_RESET: - return nvme_subsys_reset(dev); - default: - return -ENOTTY; - } -} + if (WARN_ON(test_bit(NVME_CTRL_RESETTING, &dev->flags))) + goto out; -static const struct file_operations nvme_dev_fops = { - .owner = THIS_MODULE, - .open = nvme_dev_open, - .release = nvme_dev_release, - .unlocked_ioctl = nvme_dev_ioctl, - .compat_ioctl = nvme_dev_ioctl, -}; + /* + * If we're called to reset a live controller first shut it down before + * moving on. + */ + if (dev->bar) + nvme_dev_disable(dev, false); -static void nvme_probe_work(struct work_struct *work) -{ - struct nvme_dev *dev = container_of(work, struct nvme_dev, probe_work); - bool start_thread = false; - int result; + set_bit(NVME_CTRL_RESETTING, &dev->flags); result = nvme_dev_map(dev); if (result) @@ -3144,35 +1919,24 @@ if (result) goto unmap; - spin_lock(&dev_list_lock); - if (list_empty(&dev_list) && IS_ERR_OR_NULL(nvme_thread)) { - start_thread = true; - nvme_thread = NULL; - } - list_add(&dev->node, &dev_list); - spin_unlock(&dev_list_lock); - - if (start_thread) { - nvme_thread = kthread_run(nvme_kthread, NULL, "nvme"); - wake_up_all(&nvme_kthread_wait); - } else - wait_event_killable(nvme_kthread_wait, nvme_thread); - - if (IS_ERR_OR_NULL(nvme_thread)) { - result = nvme_thread ? PTR_ERR(nvme_thread) : -EINTR; - goto disable; - } - nvme_init_queue(dev->queues[0], 0); result = nvme_alloc_admin_tags(dev); if (result) goto disable; + result = nvme_init_identify(&dev->ctrl); + if (result) + goto free_tags; + result = nvme_setup_io_queues(dev); if (result) goto free_tags; - dev->event_limit = 1; + dev->ctrl.event_limit = NVME_NR_AEN_COMMANDS; + + result = nvme_dev_list_add(dev); + if (result) + goto remove; /* * Keep the controller around but remove all namespaces if we don't have @@ -3180,117 +1944,98 @@ */ if (dev->online_queues < 2) { dev_warn(dev->dev, "IO queues not created\n"); - nvme_dev_remove(dev); + nvme_remove_namespaces(&dev->ctrl); } else { - nvme_unfreeze_queues(dev); + nvme_start_queues(&dev->ctrl); nvme_dev_add(dev); } + clear_bit(NVME_CTRL_RESETTING, &dev->flags); return; + remove: + nvme_dev_list_remove(dev); free_tags: nvme_dev_remove_admin(dev); - blk_put_queue(dev->admin_q); - dev->admin_q = NULL; + blk_put_queue(dev->ctrl.admin_q); + dev->ctrl.admin_q = NULL; dev->queues[0]->tags = NULL; disable: - nvme_disable_queue(dev, 0); - nvme_dev_list_remove(dev); + nvme_disable_admin_queue(dev, false); unmap: nvme_dev_unmap(dev); out: - if (!work_busy(&dev->reset_work)) - nvme_dead_ctrl(dev); + nvme_remove_dead_ctrl(dev); } -static int nvme_remove_dead_ctrl(void *arg) +static void nvme_remove_dead_ctrl_work(struct work_struct *work) { - struct nvme_dev *dev = (struct nvme_dev *)arg; + struct nvme_dev *dev = container_of(work, struct nvme_dev, remove_work); struct pci_dev *pdev = to_pci_dev(dev->dev); if (pci_get_drvdata(pdev)) pci_stop_and_remove_bus_device_locked(pdev); - kref_put(&dev->kref, nvme_free_dev); - return 0; + nvme_put_ctrl(&dev->ctrl); } -static void nvme_dead_ctrl(struct nvme_dev *dev) +static void nvme_remove_dead_ctrl(struct nvme_dev *dev) { - dev_warn(dev->dev, "Device failed to resume\n"); - kref_get(&dev->kref); - if (IS_ERR(kthread_run(nvme_remove_dead_ctrl, dev, "nvme%d", - dev->instance))) { - dev_err(dev->dev, - "Failed to start controller remove task\n"); - kref_put(&dev->kref, nvme_free_dev); - } + dev_warn(dev->dev, "Removing after probe failure\n"); + kref_get(&dev->ctrl.kref); + if (!schedule_work(&dev->remove_work)) + nvme_put_ctrl(&dev->ctrl); } -static void nvme_reset_work(struct work_struct *ws) +static int nvme_reset(struct nvme_dev *dev) { - struct nvme_dev *dev = container_of(ws, struct nvme_dev, reset_work); - bool in_probe = work_busy(&dev->probe_work); - - nvme_dev_shutdown(dev); + if (!dev->ctrl.admin_q || blk_queue_dying(dev->ctrl.admin_q)) + return -ENODEV; - /* Synchronize with device probe so that work will see failure status - * and exit gracefully without trying to schedule another reset */ - flush_work(&dev->probe_work); + if (!queue_work(nvme_workq, &dev->reset_work)) + return -EBUSY; - /* Fail this device if reset occured during probe to avoid - * infinite initialization loops. */ - if (in_probe) { - nvme_dead_ctrl(dev); - return; - } - /* Schedule device resume asynchronously so the reset work is available - * to cleanup errors that may occur during reinitialization */ - schedule_work(&dev->probe_work); + flush_work(&dev->reset_work); + return 0; } -static int __nvme_reset(struct nvme_dev *dev) +static int nvme_pci_reg_read32(struct nvme_ctrl *ctrl, u32 off, u32 *val) { - if (work_pending(&dev->reset_work)) - return -EBUSY; - list_del_init(&dev->node); - queue_work(nvme_workq, &dev->reset_work); + *val = readl(to_nvme_dev(ctrl)->bar + off); return 0; } -static int nvme_reset(struct nvme_dev *dev) +static int nvme_pci_reg_write32(struct nvme_ctrl *ctrl, u32 off, u32 val) { - int ret; - - if (!dev->admin_q || blk_queue_dying(dev->admin_q)) - return -ENODEV; - - spin_lock(&dev_list_lock); - ret = __nvme_reset(dev); - spin_unlock(&dev_list_lock); - - if (!ret) { - flush_work(&dev->reset_work); - flush_work(&dev->probe_work); - return 0; - } + writel(val, to_nvme_dev(ctrl)->bar + off); + return 0; +} - return ret; +static int nvme_pci_reg_read64(struct nvme_ctrl *ctrl, u32 off, u64 *val) +{ + *val = readq(to_nvme_dev(ctrl)->bar + off); + return 0; } -static ssize_t nvme_sysfs_reset(struct device *dev, - struct device_attribute *attr, const char *buf, - size_t count) +static bool nvme_pci_io_incapable(struct nvme_ctrl *ctrl) { - struct nvme_dev *ndev = dev_get_drvdata(dev); - int ret; + struct nvme_dev *dev = to_nvme_dev(ctrl); - ret = nvme_reset(ndev); - if (ret < 0) - return ret; + return !dev->bar || dev->online_queues < 2; +} - return count; +static int nvme_pci_reset_ctrl(struct nvme_ctrl *ctrl) +{ + return nvme_reset(to_nvme_dev(ctrl)); } -static DEVICE_ATTR(reset_controller, S_IWUSR, NULL, nvme_sysfs_reset); + +static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = { + .reg_read32 = nvme_pci_reg_read32, + .reg_write32 = nvme_pci_reg_write32, + .reg_read64 = nvme_pci_reg_read64, + .io_incapable = nvme_pci_io_incapable, + .reset_ctrl = nvme_pci_reset_ctrl, + .free_ctrl = nvme_pci_free_ctrl, +}; static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -3313,46 +2058,30 @@ if (!dev->queues) goto free; - INIT_LIST_HEAD(&dev->namespaces); - INIT_WORK(&dev->reset_work, nvme_reset_work); dev->dev = get_device(&pdev->dev); pci_set_drvdata(pdev, dev); - result = nvme_set_instance(dev); - if (result) - goto put_pci; + + INIT_LIST_HEAD(&dev->node); + INIT_WORK(&dev->scan_work, nvme_dev_scan); + INIT_WORK(&dev->reset_work, nvme_reset_work); + INIT_WORK(&dev->remove_work, nvme_remove_dead_ctrl_work); + mutex_init(&dev->shutdown_lock); + init_completion(&dev->ioq_wait); result = nvme_setup_prp_pools(dev); if (result) - goto release; - - kref_init(&dev->kref); - dev->device = device_create(nvme_class, &pdev->dev, - MKDEV(nvme_char_major, dev->instance), - dev, "nvme%d", dev->instance); - if (IS_ERR(dev->device)) { - result = PTR_ERR(dev->device); - goto release_pools; - } - get_device(dev->device); - dev_set_drvdata(dev->device, dev); + goto put_pci; - result = device_create_file(dev->device, &dev_attr_reset_controller); + result = nvme_init_ctrl(&dev->ctrl, &pdev->dev, &nvme_pci_ctrl_ops, + id->driver_data); if (result) - goto put_dev; + goto release_pools; - INIT_LIST_HEAD(&dev->node); - INIT_WORK(&dev->scan_work, nvme_dev_scan); - INIT_WORK(&dev->probe_work, nvme_probe_work); - schedule_work(&dev->probe_work); + queue_work(nvme_workq, &dev->reset_work); return 0; - put_dev: - device_destroy(nvme_class, MKDEV(nvme_char_major, dev->instance)); - put_device(dev->device); release_pools: nvme_release_prp_pools(dev); - release: - nvme_release_instance(dev); put_pci: put_device(dev->dev); free: @@ -3367,15 +2096,15 @@ struct nvme_dev *dev = pci_get_drvdata(pdev); if (prepare) - nvme_dev_shutdown(dev); + nvme_dev_disable(dev, false); else - schedule_work(&dev->probe_work); + queue_work(nvme_workq, &dev->reset_work); } static void nvme_shutdown(struct pci_dev *pdev) { struct nvme_dev *dev = pci_get_drvdata(pdev); - nvme_dev_shutdown(dev); + nvme_dev_disable(dev, true); } static void nvme_remove(struct pci_dev *pdev) @@ -3387,34 +2116,25 @@ spin_unlock(&dev_list_lock); pci_set_drvdata(pdev, NULL); - flush_work(&dev->probe_work); flush_work(&dev->reset_work); flush_work(&dev->scan_work); - device_remove_file(dev->device, &dev_attr_reset_controller); - nvme_dev_remove(dev); - nvme_dev_shutdown(dev); + nvme_remove_namespaces(&dev->ctrl); + nvme_uninit_ctrl(&dev->ctrl); + nvme_dev_disable(dev, true); nvme_dev_remove_admin(dev); - device_destroy(nvme_class, MKDEV(nvme_char_major, dev->instance)); nvme_free_queues(dev, 0); nvme_release_cmb(dev); nvme_release_prp_pools(dev); - kref_put(&dev->kref, nvme_free_dev); + nvme_put_ctrl(&dev->ctrl); } -/* These functions are yet to be implemented */ -#define nvme_error_detected NULL -#define nvme_dump_registers NULL -#define nvme_link_reset NULL -#define nvme_slot_reset NULL -#define nvme_error_resume NULL - #ifdef CONFIG_PM_SLEEP static int nvme_suspend(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct nvme_dev *ndev = pci_get_drvdata(pdev); - nvme_dev_shutdown(ndev); + nvme_dev_disable(ndev, true); return 0; } @@ -3423,17 +2143,53 @@ struct pci_dev *pdev = to_pci_dev(dev); struct nvme_dev *ndev = pci_get_drvdata(pdev); - schedule_work(&ndev->probe_work); + queue_work(nvme_workq, &ndev->reset_work); return 0; } #endif static SIMPLE_DEV_PM_OPS(nvme_dev_pm_ops, nvme_suspend, nvme_resume); +static pci_ers_result_t nvme_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + /* + * A frozen channel requires a reset. When detected, this method will + * shutdown the controller to quiesce. The controller will be restarted + * after the slot reset through driver's slot_reset callback. + */ + dev_warn(&pdev->dev, "error detected: state:%d\n", state); + switch (state) { + case pci_channel_io_normal: + return PCI_ERS_RESULT_CAN_RECOVER; + case pci_channel_io_frozen: + nvme_dev_disable(dev, false); + return PCI_ERS_RESULT_NEED_RESET; + case pci_channel_io_perm_failure: + return PCI_ERS_RESULT_DISCONNECT; + } + return PCI_ERS_RESULT_NEED_RESET; +} + +static pci_ers_result_t nvme_slot_reset(struct pci_dev *pdev) +{ + struct nvme_dev *dev = pci_get_drvdata(pdev); + + dev_info(&pdev->dev, "restart after slot reset\n"); + pci_restore_state(pdev); + queue_work(nvme_workq, &dev->reset_work); + return PCI_ERS_RESULT_RECOVERED; +} + +static void nvme_error_resume(struct pci_dev *pdev) +{ + pci_cleanup_aer_uncorrect_error_status(pdev); +} + static const struct pci_error_handlers nvme_err_handler = { .error_detected = nvme_error_detected, - .mmio_enabled = nvme_dump_registers, - .link_reset = nvme_link_reset, .slot_reset = nvme_slot_reset, .resume = nvme_error_resume, .reset_notify = nvme_reset_notify, @@ -3443,6 +2199,10 @@ #define PCI_CLASS_STORAGE_EXPRESS 0x010802 static const struct pci_device_id nvme_id_table[] = { + { PCI_VDEVICE(INTEL, 0x0953), + .driver_data = NVME_QUIRK_STRIPE_SIZE, }, + { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */ + .driver_data = NVME_QUIRK_IDENTIFY_CNS, }, { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001) }, { 0, } @@ -3467,40 +2227,21 @@ init_waitqueue_head(&nvme_kthread_wait); - nvme_workq = create_singlethread_workqueue("nvme"); + nvme_workq = alloc_workqueue("nvme", WQ_UNBOUND | WQ_MEM_RECLAIM, 0); if (!nvme_workq) return -ENOMEM; - result = register_blkdev(nvme_major, "nvme"); + result = nvme_core_init(); if (result < 0) goto kill_workq; - else if (result > 0) - nvme_major = result; - - result = __register_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme", - &nvme_dev_fops); - if (result < 0) - goto unregister_blkdev; - else if (result > 0) - nvme_char_major = result; - - nvme_class = class_create(THIS_MODULE, "nvme"); - if (IS_ERR(nvme_class)) { - result = PTR_ERR(nvme_class); - goto unregister_chrdev; - } result = pci_register_driver(&nvme_driver); if (result) - goto destroy_class; + goto core_exit; return 0; - destroy_class: - class_destroy(nvme_class); - unregister_chrdev: - __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); - unregister_blkdev: - unregister_blkdev(nvme_major, "nvme"); + core_exit: + nvme_core_exit(); kill_workq: destroy_workqueue(nvme_workq); return result; @@ -3509,10 +2250,8 @@ static void __exit nvme_exit(void) { pci_unregister_driver(&nvme_driver); - unregister_blkdev(nvme_major, "nvme"); + nvme_core_exit(); destroy_workqueue(nvme_workq); - class_destroy(nvme_class); - __unregister_chrdev(nvme_char_major, 0, NVME_MINORS, "nvme"); BUG_ON(nvme_thread && !IS_ERR(nvme_thread)); _nvme_check_size(); } --- linux-4.4.0.orig/drivers/nvme/host/scsi.c +++ linux-4.4.0/drivers/nvme/host/scsi.c @@ -524,7 +524,7 @@ struct sg_io_hdr *hdr, u8 *inq_response, int alloc_len) { - struct nvme_dev *dev = ns->dev; + struct nvme_ctrl *ctrl = ns->ctrl; struct nvme_id_ns *id_ns; int res; int nvme_sc; @@ -532,10 +532,10 @@ u8 resp_data_format = 0x02; u8 protect; u8 cmdque = 0x01 << 1; - u8 fw_offset = sizeof(dev->firmware_rev); + u8 fw_offset = sizeof(ctrl->firmware_rev); /* nvme ns identify - use DPS value for PROTECT field */ - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -553,12 +553,12 @@ inq_response[5] = protect; /* sccs=0 | acc=0 | tpgs=0 | pc3=0 */ inq_response[7] = cmdque; /* wbus16=0 | sync=0 | vs=0 */ strncpy(&inq_response[8], "NVMe ", 8); - strncpy(&inq_response[16], dev->model, 16); + strncpy(&inq_response[16], ctrl->model, 16); - while (dev->firmware_rev[fw_offset - 1] == ' ' && fw_offset > 4) + while (ctrl->firmware_rev[fw_offset - 1] == ' ' && fw_offset > 4) fw_offset--; fw_offset -= 4; - strncpy(&inq_response[32], dev->firmware_rev + fw_offset, 4); + strncpy(&inq_response[32], ctrl->firmware_rev + fw_offset, 4); xfer_len = min(alloc_len, STANDARD_INQUIRY_LENGTH); return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); @@ -588,82 +588,113 @@ struct sg_io_hdr *hdr, u8 *inq_response, int alloc_len) { - struct nvme_dev *dev = ns->dev; int xfer_len; memset(inq_response, 0, STANDARD_INQUIRY_LENGTH); inq_response[1] = INQ_UNIT_SERIAL_NUMBER_PAGE; /* Page Code */ inq_response[3] = INQ_SERIAL_NUMBER_LENGTH; /* Page Length */ - strncpy(&inq_response[4], dev->serial, INQ_SERIAL_NUMBER_LENGTH); + strncpy(&inq_response[4], ns->ctrl->serial, INQ_SERIAL_NUMBER_LENGTH); xfer_len = min(alloc_len, STANDARD_INQUIRY_LENGTH); return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); } -static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, - u8 *inq_response, int alloc_len) +static int nvme_fill_device_id_eui64(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *inq_response, int alloc_len) { - struct nvme_dev *dev = ns->dev; - int res; - int nvme_sc; - int xfer_len; - __be32 tmp_id = cpu_to_be32(ns->ns_id); + struct nvme_id_ns *id_ns; + int nvme_sc, res; + size_t len; + void *eui; - memset(inq_response, 0, alloc_len); - inq_response[1] = INQ_DEVICE_IDENTIFICATION_PAGE; /* Page Code */ - if (readl(&dev->bar->vs) >= NVME_VS(1, 1)) { - struct nvme_id_ns *id_ns; - void *eui; - int len; + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); - res = nvme_trans_status_code(hdr, nvme_sc); - if (res) - return res; + eui = id_ns->eui64; + len = sizeof(id_ns->eui64); - eui = id_ns->eui64; - len = sizeof(id_ns->eui64); - if (readl(&dev->bar->vs) >= NVME_VS(1, 2)) { - if (bitmap_empty(eui, len * 8)) { - eui = id_ns->nguid; - len = sizeof(id_ns->nguid); - } - } + if (ns->ctrl->vs >= NVME_VS(1, 2)) { if (bitmap_empty(eui, len * 8)) { - kfree(id_ns); - goto scsi_string; + eui = id_ns->nguid; + len = sizeof(id_ns->nguid); } + } - inq_response[3] = 4 + len; /* Page Length */ - /* Designation Descriptor start */ - inq_response[4] = 0x01; /* Proto ID=0h | Code set=1h */ - inq_response[5] = 0x02; /* PIV=0b | Asso=00b | Designator Type=2h */ - inq_response[6] = 0x00; /* Rsvd */ - inq_response[7] = len; /* Designator Length */ - memcpy(&inq_response[8], eui, len); - kfree(id_ns); - } else { - scsi_string: - if (alloc_len < 72) { - return nvme_trans_completion(hdr, - SAM_STAT_CHECK_CONDITION, - ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, - SCSI_ASCQ_CAUSE_NOT_REPORTABLE); - } - inq_response[3] = 0x48; /* Page Length */ - /* Designation Descriptor start */ - inq_response[4] = 0x03; /* Proto ID=0h | Code set=3h */ - inq_response[5] = 0x08; /* PIV=0b | Asso=00b | Designator Type=8h */ - inq_response[6] = 0x00; /* Rsvd */ - inq_response[7] = 0x44; /* Designator Length */ - - sprintf(&inq_response[8], "%04x", to_pci_dev(dev->dev)->vendor); - memcpy(&inq_response[12], dev->model, sizeof(dev->model)); - sprintf(&inq_response[52], "%04x", tmp_id); - memcpy(&inq_response[56], dev->serial, sizeof(dev->serial)); + if (bitmap_empty(eui, len * 8)) { + res = -EOPNOTSUPP; + goto out_free_id; } - xfer_len = alloc_len; - return nvme_trans_copy_to_user(hdr, inq_response, xfer_len); + + memset(inq_response, 0, alloc_len); + inq_response[1] = INQ_DEVICE_IDENTIFICATION_PAGE; + inq_response[3] = 4 + len; /* Page Length */ + + /* Designation Descriptor start */ + inq_response[4] = 0x01; /* Proto ID=0h | Code set=1h */ + inq_response[5] = 0x02; /* PIV=0b | Asso=00b | Designator Type=2h */ + inq_response[6] = 0x00; /* Rsvd */ + inq_response[7] = len; /* Designator Length */ + memcpy(&inq_response[8], eui, len); + + res = nvme_trans_copy_to_user(hdr, inq_response, alloc_len); +out_free_id: + kfree(id_ns); + return res; +} + +static int nvme_fill_device_id_scsi_string(struct nvme_ns *ns, + struct sg_io_hdr *hdr, u8 *inq_response, int alloc_len) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_id_ctrl *id_ctrl; + int nvme_sc, res; + + if (alloc_len < 72) { + return nvme_trans_completion(hdr, + SAM_STAT_CHECK_CONDITION, + ILLEGAL_REQUEST, SCSI_ASC_INVALID_CDB, + SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + } + + nvme_sc = nvme_identify_ctrl(ctrl, &id_ctrl); + res = nvme_trans_status_code(hdr, nvme_sc); + if (res) + return res; + + memset(inq_response, 0, alloc_len); + inq_response[1] = INQ_DEVICE_IDENTIFICATION_PAGE; + inq_response[3] = 0x48; /* Page Length */ + + /* Designation Descriptor start */ + inq_response[4] = 0x03; /* Proto ID=0h | Code set=3h */ + inq_response[5] = 0x08; /* PIV=0b | Asso=00b | Designator Type=8h */ + inq_response[6] = 0x00; /* Rsvd */ + inq_response[7] = 0x44; /* Designator Length */ + + sprintf(&inq_response[8], "%04x", le16_to_cpu(id_ctrl->vid)); + memcpy(&inq_response[12], ctrl->model, sizeof(ctrl->model)); + sprintf(&inq_response[52], "%04x", cpu_to_be32(ns->ns_id)); + memcpy(&inq_response[56], ctrl->serial, sizeof(ctrl->serial)); + + res = nvme_trans_copy_to_user(hdr, inq_response, alloc_len); + kfree(id_ctrl); + return res; +} + +static int nvme_trans_device_id_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, + u8 *resp, int alloc_len) +{ + int res; + + if (ns->ctrl->vs >= NVME_VS(1, 1)) { + res = nvme_fill_device_id_eui64(ns, hdr, resp, alloc_len); + if (res != -EOPNOTSUPP) + return res; + } + + return nvme_fill_device_id_scsi_string(ns, hdr, resp, alloc_len); } static int nvme_trans_ext_inq_page(struct nvme_ns *ns, struct sg_io_hdr *hdr, @@ -672,7 +703,7 @@ u8 *inq_response; int res; int nvme_sc; - struct nvme_dev *dev = ns->dev; + struct nvme_ctrl *ctrl = ns->ctrl; struct nvme_id_ctrl *id_ctrl; struct nvme_id_ns *id_ns; int xfer_len; @@ -688,7 +719,7 @@ if (inq_response == NULL) return -ENOMEM; - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) goto out_free_inq; @@ -704,7 +735,7 @@ app_chk = protect << 1; ref_chk = protect; - nvme_sc = nvme_identify_ctrl(dev, &id_ctrl); + nvme_sc = nvme_identify_ctrl(ctrl, &id_ctrl); res = nvme_trans_status_code(hdr, nvme_sc); if (res) goto out_free_inq; @@ -815,7 +846,6 @@ int res; int xfer_len; u8 *log_response; - struct nvme_dev *dev = ns->dev; struct nvme_smart_log *smart_log; u8 temp_c; u16 temp_k; @@ -824,7 +854,7 @@ if (log_response == NULL) return -ENOMEM; - res = nvme_get_log_page(dev, &smart_log); + res = nvme_get_log_page(ns->ctrl, &smart_log); if (res < 0) goto out_free_response; @@ -862,7 +892,6 @@ int res; int xfer_len; u8 *log_response; - struct nvme_dev *dev = ns->dev; struct nvme_smart_log *smart_log; u32 feature_resp; u8 temp_c_cur, temp_c_thresh; @@ -872,7 +901,7 @@ if (log_response == NULL) return -ENOMEM; - res = nvme_get_log_page(dev, &smart_log); + res = nvme_get_log_page(ns->ctrl, &smart_log); if (res < 0) goto out_free_response; @@ -886,7 +915,7 @@ kfree(smart_log); /* Get Features for Temp Threshold */ - res = nvme_get_features(dev, NVME_FEAT_TEMP_THRESH, 0, 0, + res = nvme_get_features(ns->ctrl, NVME_FEAT_TEMP_THRESH, 0, 0, &feature_resp); if (res != NVME_SC_SUCCESS) temp_c_thresh = LOG_TEMP_UNKNOWN; @@ -948,7 +977,6 @@ { int res; int nvme_sc; - struct nvme_dev *dev = ns->dev; struct nvme_id_ns *id_ns; u8 flbas; u32 lba_length; @@ -958,7 +986,7 @@ else if (llbaa > 0 && len < MODE_PAGE_LLBAA_BLK_DES_LEN) return -EINVAL; - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -1014,14 +1042,13 @@ { int res = 0; int nvme_sc; - struct nvme_dev *dev = ns->dev; u32 feature_resp; u8 vwc; if (len < MODE_PAGE_CACHING_LEN) return -EINVAL; - nvme_sc = nvme_get_features(dev, NVME_FEAT_VOLATILE_WC, 0, 0, + nvme_sc = nvme_get_features(ns->ctrl, NVME_FEAT_VOLATILE_WC, 0, 0, &feature_resp); res = nvme_trans_status_code(hdr, nvme_sc); if (res) @@ -1207,12 +1234,11 @@ { int res; int nvme_sc; - struct nvme_dev *dev = ns->dev; struct nvme_id_ctrl *id_ctrl; int lowest_pow_st; /* max npss = lowest power consumption */ unsigned ps_desired = 0; - nvme_sc = nvme_identify_ctrl(dev, &id_ctrl); + nvme_sc = nvme_identify_ctrl(ns->ctrl, &id_ctrl); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -1256,7 +1282,7 @@ SCSI_ASCQ_CAUSE_NOT_REPORTABLE); break; } - nvme_sc = nvme_set_features(dev, NVME_FEAT_POWER_MGMT, ps_desired, 0, + nvme_sc = nvme_set_features(ns->ctrl, NVME_FEAT_POWER_MGMT, ps_desired, 0, NULL); return nvme_trans_status_code(hdr, nvme_sc); } @@ -1280,7 +1306,6 @@ u8 buffer_id) { int nvme_sc; - struct nvme_dev *dev = ns->dev; struct nvme_command c; if (hdr->iovec_count > 0) { @@ -1297,7 +1322,7 @@ c.dlfw.numd = cpu_to_le32((tot_len/BYTES_TO_DWORDS) - 1); c.dlfw.offset = cpu_to_le32(offset/BYTES_TO_DWORDS); - nvme_sc = __nvme_submit_sync_cmd(dev->admin_q, &c, NULL, + nvme_sc = nvme_submit_user_cmd(ns->ctrl->admin_q, &c, hdr->dxferp, tot_len, NULL, 0); return nvme_trans_status_code(hdr, nvme_sc); } @@ -1364,14 +1389,13 @@ { int res = 0; int nvme_sc; - struct nvme_dev *dev = ns->dev; unsigned dword11; switch (page_code) { case MODE_PAGE_CACHING: dword11 = ((mode_page[2] & CACHING_MODE_PAGE_WCE_MASK) ? 1 : 0); - nvme_sc = nvme_set_features(dev, NVME_FEAT_VOLATILE_WC, dword11, - 0, NULL); + nvme_sc = nvme_set_features(ns->ctrl, NVME_FEAT_VOLATILE_WC, + dword11, 0, NULL); res = nvme_trans_status_code(hdr, nvme_sc); break; case MODE_PAGE_CONTROL: @@ -1473,7 +1497,6 @@ { int res = 0; int nvme_sc; - struct nvme_dev *dev = ns->dev; u8 flbas; /* @@ -1486,7 +1509,7 @@ if (ns->mode_select_num_blocks == 0 || ns->mode_select_block_len == 0) { struct nvme_id_ns *id_ns; - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -1570,7 +1593,6 @@ { int res; int nvme_sc; - struct nvme_dev *dev = ns->dev; struct nvme_id_ns *id_ns; u8 i; u8 flbas, nlbaf; @@ -1579,7 +1601,7 @@ struct nvme_command c; /* Loop thru LBAF's in id_ns to match reqd lbaf, put in cdw10 */ - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -1611,7 +1633,7 @@ c.format.nsid = cpu_to_le32(ns->ns_id); c.format.cdw10 = cpu_to_le32(cdw10); - nvme_sc = nvme_submit_sync_cmd(dev->admin_q, &c, NULL, 0); + nvme_sc = nvme_submit_sync_cmd(ns->ctrl->admin_q, &c, NULL, 0); res = nvme_trans_status_code(hdr, nvme_sc); kfree(id_ns); @@ -1704,7 +1726,7 @@ nvme_sc = NVME_SC_LBA_RANGE; break; } - nvme_sc = __nvme_submit_sync_cmd(ns->queue, &c, NULL, + nvme_sc = nvme_submit_user_cmd(ns->queue, &c, next_mapping_addr, unit_len, NULL, 0); if (nvme_sc) break; @@ -2040,7 +2062,6 @@ u32 alloc_len; u32 resp_size; u32 xfer_len; - struct nvme_dev *dev = ns->dev; struct nvme_id_ns *id_ns; u8 *response; @@ -2052,7 +2073,7 @@ resp_size = READ_CAP_10_RESP_SIZE; } - nvme_sc = nvme_identify_ns(dev, ns->ns_id, &id_ns); + nvme_sc = nvme_identify_ns(ns->ctrl, ns->ns_id, &id_ns); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -2080,7 +2101,6 @@ int nvme_sc; u32 alloc_len, xfer_len, resp_size; u8 *response; - struct nvme_dev *dev = ns->dev; struct nvme_id_ctrl *id_ctrl; u32 ll_length, lun_id; u8 lun_id_offset = REPORT_LUNS_FIRST_LUN_OFFSET; @@ -2094,7 +2114,7 @@ case ALL_LUNS_RETURNED: case ALL_WELL_KNOWN_LUNS_RETURNED: case RESTRICTED_LUNS_RETURNED: - nvme_sc = nvme_identify_ctrl(dev, &id_ctrl); + nvme_sc = nvme_identify_ctrl(ns->ctrl, &id_ctrl); res = nvme_trans_status_code(hdr, nvme_sc); if (res) return res; @@ -2295,9 +2315,7 @@ struct sg_io_hdr *hdr, u8 *cmd) { - struct nvme_dev *dev = ns->dev; - - if (!(readl(&dev->bar->csts) & NVME_CSTS_RDY)) + if (nvme_ctrl_ready(ns->ctrl)) return nvme_trans_completion(hdr, SAM_STAT_CHECK_CONDITION, NOT_READY, SCSI_ASC_LUN_NOT_READY, SCSI_ASCQ_CAUSE_NOT_REPORTABLE); --- linux-4.4.0.orig/drivers/pci/msi.c +++ linux-4.4.0/drivers/pci/msi.c @@ -257,6 +257,7 @@ { msi_set_mask_bit(data, 1); } +EXPORT_SYMBOL_GPL(pci_msi_mask_irq); /** * pci_msi_unmask_irq - Generic irq chip callback to unmask PCI/MSI interrupts @@ -266,6 +267,7 @@ { msi_set_mask_bit(data, 0); } +EXPORT_SYMBOL_GPL(pci_msi_unmask_irq); void default_restore_msi_irqs(struct pci_dev *dev) { @@ -1126,6 +1128,7 @@ { return to_pci_dev(desc->dev); } +EXPORT_SYMBOL(msi_desc_to_pci_dev); void *msi_desc_to_pci_sysdata(struct msi_desc *desc) { @@ -1285,6 +1288,7 @@ domain->bus_token = DOMAIN_BUS_PCI_MSI; return domain; } +EXPORT_SYMBOL_GPL(pci_msi_create_irq_domain); /** * pci_msi_domain_alloc_irqs - Allocate interrupts for @dev in @domain --- linux-4.4.0.orig/drivers/pci/pci-acpi.c +++ linux-4.4.0/drivers/pci/pci-acpi.c @@ -9,7 +9,9 @@ #include #include +#include #include +#include #include #include #include @@ -689,6 +691,46 @@ .cleanup = pci_acpi_cleanup, }; + +static struct fwnode_handle *(*pci_msi_get_fwnode_cb)(struct device *dev); + +/** + * pci_msi_register_fwnode_provider - Register callback to retrieve fwnode + * @fn: Callback matching a device to a fwnode that identifies a PCI + * MSI domain. + * + * This should be called by irqchip driver, which is the parent of + * the MSI domain to provide callback interface to query fwnode. + */ +void +pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *)) +{ + pci_msi_get_fwnode_cb = fn; +} + +/** + * pci_host_bridge_acpi_msi_domain - Retrieve MSI domain of a PCI host bridge + * @bus: The PCI host bridge bus. + * + * This function uses the callback function registered by + * pci_msi_register_fwnode_provider() to retrieve the irq_domain with + * type DOMAIN_BUS_PCI_MSI of the specified host bridge bus. + * This returns NULL on error or when the domain is not found. + */ +struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) +{ + struct fwnode_handle *fwnode; + + if (!pci_msi_get_fwnode_cb) + return NULL; + + fwnode = pci_msi_get_fwnode_cb(&bus->dev); + if (!fwnode) + return NULL; + + return irq_find_matching_fwnode(fwnode, DOMAIN_BUS_PCI_MSI); +} + static int __init acpi_pci_init(void) { int ret; --- linux-4.4.0.orig/drivers/pci/probe.c +++ linux-4.4.0/drivers/pci/probe.c @@ -672,6 +672,8 @@ * should be called from here. */ d = pci_host_bridge_of_msi_domain(bus); + if (!d) + d = pci_host_bridge_acpi_msi_domain(bus); return d; } --- linux-4.4.0.orig/drivers/pci/quirks.c +++ linux-4.4.0/drivers/pci/quirks.c @@ -41,6 +41,21 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on); +/* The BAR0 ~ BAR4 of Marvell 9125 device can't be accessed +* by IO resource file, and need to skip the files +*/ +static void quirk_marvell_mask_bar(struct pci_dev *dev) +{ + int i; + + for (i = 0; i < 5; i++) + if (dev->resource[i].start) + dev->resource[i].start = + dev->resource[i].end = 0; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9125, + quirk_marvell_mask_bar); + /* The Mellanox Tavor device gives false positive parity errors * Mark this device with a broken_parity_status, to allow * PCI scanning code to "skip" this now blacklisted device. --- linux-4.4.0.orig/drivers/platform/x86/Kconfig +++ linux-4.4.0/drivers/platform/x86/Kconfig @@ -944,4 +944,21 @@ depends on ACPI && INPUT ---help--- This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet. + +config INTEL_PUNIT_IPC + tristate "Intel P-Unit IPC Driver" + ---help--- + This driver provides support for Intel P-Unit Mailbox IPC mechanism, + which is used to bridge the communications between kernel and P-Unit. + +config INTEL_TELEMETRY + tristate "Intel SoC Telemetry Driver" + default n + depends on INTEL_PMC_IPC && INTEL_PUNIT_IPC && X86_64 + ---help--- + This driver provides interfaces to configure and use + telemetry for INTEL SoC from APL onwards. It is also + used to get various SoC events and parameters + directly via debugfs files. Various tools may use + this interface for SoC state monitoring. endif # X86_PLATFORM_DEVICES --- linux-4.4.0.orig/drivers/platform/x86/Makefile +++ linux-4.4.0/drivers/platform/x86/Makefile @@ -62,3 +62,7 @@ obj-$(CONFIG_ALIENWARE_WMI) += alienware-wmi.o obj-$(CONFIG_INTEL_PMC_IPC) += intel_pmc_ipc.o obj-$(CONFIG_SURFACE_PRO3_BUTTON) += surfacepro3_button.o +obj-$(CONFIG_INTEL_PUNIT_IPC) += intel_punit_ipc.o +obj-$(CONFIG_INTEL_TELEMETRY) += intel_telemetry_core.o \ + intel_telemetry_pltdrv.o \ + intel_telemetry_debugfs.o --- linux-4.4.0.orig/drivers/platform/x86/intel_ips.c +++ linux-4.4.0/drivers/platform/x86/intel_ips.c @@ -1501,6 +1501,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"), }, }, + { + .callback = ips_blacklist_callback, + .ident = "G60JX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "G60JX"), + }, + }, { } /* terminating entry */ }; --- linux-4.4.0.orig/drivers/platform/x86/intel_pmc_ipc.c +++ linux-4.4.0/drivers/platform/x86/intel_pmc_ipc.c @@ -68,8 +68,13 @@ #define PLAT_RESOURCE_IPC_INDEX 0 #define PLAT_RESOURCE_IPC_SIZE 0x1000 #define PLAT_RESOURCE_GCR_SIZE 0x1000 -#define PLAT_RESOURCE_PUNIT_DATA_INDEX 1 -#define PLAT_RESOURCE_PUNIT_INTER_INDEX 2 +#define PLAT_RESOURCE_BIOS_DATA_INDEX 1 +#define PLAT_RESOURCE_BIOS_IFACE_INDEX 2 +#define PLAT_RESOURCE_TELEM_SSRAM_INDEX 3 +#define PLAT_RESOURCE_ISP_DATA_INDEX 4 +#define PLAT_RESOURCE_ISP_IFACE_INDEX 5 +#define PLAT_RESOURCE_GTD_DATA_INDEX 6 +#define PLAT_RESOURCE_GTD_IFACE_INDEX 7 #define PLAT_RESOURCE_ACPI_IO_INDEX 0 /* @@ -84,6 +89,10 @@ #define TCO_BASE_OFFSET 0x60 #define TCO_REGS_SIZE 16 #define PUNIT_DEVICE_NAME "intel_punit_ipc" +#define TELEMETRY_DEVICE_NAME "intel_telemetry" +#define TELEM_SSRAM_SIZE 240 +#define TELEM_PMC_SSRAM_OFFSET 0x1B00 +#define TELEM_PUNIT_SSRAM_OFFSET 0x1A00 static const int iTCO_version = 3; @@ -105,11 +114,15 @@ int gcr_size; /* punit */ - resource_size_t punit_base; - int punit_size; - resource_size_t punit_base2; - int punit_size2; struct platform_device *punit_dev; + + /* Telemetry */ + resource_size_t telem_pmc_ssram_base; + resource_size_t telem_punit_ssram_base; + int telem_pmc_ssram_size; + int telem_punit_ssram_size; + u8 telem_res_inval; + struct platform_device *telemetry_dev; } ipcdev; static char *ipc_err_sources[] = { @@ -444,9 +457,22 @@ .attrs = intel_ipc_attrs, }; -#define PUNIT_RESOURCE_INTER 1 -static struct resource punit_res[] = { - /* Punit */ +static struct resource punit_res_array[] = { + /* Punit BIOS */ + { + .flags = IORESOURCE_MEM, + }, + { + .flags = IORESOURCE_MEM, + }, + /* Punit ISP */ + { + .flags = IORESOURCE_MEM, + }, + { + .flags = IORESOURCE_MEM, + }, + /* Punit GTD */ { .flags = IORESOURCE_MEM, }, @@ -478,10 +504,21 @@ .version = 3, }; +#define TELEMETRY_RESOURCE_PUNIT_SSRAM 0 +#define TELEMETRY_RESOURCE_PMC_SSRAM 1 +static struct resource telemetry_res[] = { + /*Telemetry*/ + { + .flags = IORESOURCE_MEM, + }, + { + .flags = IORESOURCE_MEM, + }, +}; + static int ipc_create_punit_device(void) { struct platform_device *pdev; - struct resource *res; int ret; pdev = platform_device_alloc(PUNIT_DEVICE_NAME, -1); @@ -491,17 +528,8 @@ } pdev->dev.parent = ipcdev.dev; - - res = punit_res; - res->start = ipcdev.punit_base; - res->end = res->start + ipcdev.punit_size - 1; - - res = punit_res + PUNIT_RESOURCE_INTER; - res->start = ipcdev.punit_base2; - res->end = res->start + ipcdev.punit_size2 - 1; - - ret = platform_device_add_resources(pdev, punit_res, - ARRAY_SIZE(punit_res)); + ret = platform_device_add_resources(pdev, punit_res_array, + ARRAY_SIZE(punit_res_array)); if (ret) { dev_err(ipcdev.dev, "Failed to add platform punit resources\n"); goto err; @@ -571,6 +599,51 @@ return ret; } +static int ipc_create_telemetry_device(void) +{ + struct platform_device *pdev; + struct resource *res; + int ret; + + pdev = platform_device_alloc(TELEMETRY_DEVICE_NAME, -1); + if (!pdev) { + dev_err(ipcdev.dev, + "Failed to allocate telemetry platform device\n"); + return -ENOMEM; + } + + pdev->dev.parent = ipcdev.dev; + + res = telemetry_res + TELEMETRY_RESOURCE_PUNIT_SSRAM; + res->start = ipcdev.telem_punit_ssram_base; + res->end = res->start + ipcdev.telem_punit_ssram_size - 1; + + res = telemetry_res + TELEMETRY_RESOURCE_PMC_SSRAM; + res->start = ipcdev.telem_pmc_ssram_base; + res->end = res->start + ipcdev.telem_pmc_ssram_size - 1; + + ret = platform_device_add_resources(pdev, telemetry_res, + ARRAY_SIZE(telemetry_res)); + if (ret) { + dev_err(ipcdev.dev, + "Failed to add telemetry platform resources\n"); + goto err; + } + + ret = platform_device_add(pdev); + if (ret) { + dev_err(ipcdev.dev, + "Failed to add telemetry platform device\n"); + goto err; + } + ipcdev.telemetry_dev = pdev; + + return 0; +err: + platform_device_put(pdev); + return ret; +} + static int ipc_create_pmc_devices(void) { int ret; @@ -585,12 +658,20 @@ dev_err(ipcdev.dev, "Failed to add punit platform device\n"); platform_device_unregister(ipcdev.tco_dev); } + + if (!ipcdev.telem_res_inval) { + ret = ipc_create_telemetry_device(); + if (ret) + dev_warn(ipcdev.dev, + "Failed to add telemetry platform device\n"); + } + return ret; } static int ipc_plat_get_res(struct platform_device *pdev) { - struct resource *res; + struct resource *res, *punit_res; void __iomem *addr; int size; @@ -603,32 +684,68 @@ size = resource_size(res); ipcdev.acpi_io_base = res->start; ipcdev.acpi_io_size = size; - dev_info(&pdev->dev, "io res: %llx %x\n", - (long long)res->start, (int)resource_size(res)); + dev_info(&pdev->dev, "io res: %pR\n", res); + /* This is index 0 to cover BIOS data register */ + punit_res = punit_res_array; res = platform_get_resource(pdev, IORESOURCE_MEM, - PLAT_RESOURCE_PUNIT_DATA_INDEX); + PLAT_RESOURCE_BIOS_DATA_INDEX); if (!res) { - dev_err(&pdev->dev, "Failed to get punit resource\n"); + dev_err(&pdev->dev, "Failed to get res of punit BIOS data\n"); return -ENXIO; } - size = resource_size(res); - ipcdev.punit_base = res->start; - ipcdev.punit_size = size; - dev_info(&pdev->dev, "punit data res: %llx %x\n", - (long long)res->start, (int)resource_size(res)); + *punit_res = *res; + dev_info(&pdev->dev, "punit BIOS data res: %pR\n", res); res = platform_get_resource(pdev, IORESOURCE_MEM, - PLAT_RESOURCE_PUNIT_INTER_INDEX); + PLAT_RESOURCE_BIOS_IFACE_INDEX); if (!res) { - dev_err(&pdev->dev, "Failed to get punit inter resource\n"); + dev_err(&pdev->dev, "Failed to get res of punit BIOS iface\n"); return -ENXIO; } - size = resource_size(res); - ipcdev.punit_base2 = res->start; - ipcdev.punit_size2 = size; - dev_info(&pdev->dev, "punit interface res: %llx %x\n", - (long long)res->start, (int)resource_size(res)); + /* This is index 1 to cover BIOS interface register */ + *++punit_res = *res; + dev_info(&pdev->dev, "punit BIOS interface res: %pR\n", res); + + res = platform_get_resource(pdev, IORESOURCE_MEM, + PLAT_RESOURCE_ISP_DATA_INDEX); + if (!res) { + dev_err(&pdev->dev, "Failed to get res of punit ISP data\n"); + return -ENXIO; + } + /* This is index 2 to cover ISP data register */ + *++punit_res = *res; + dev_info(&pdev->dev, "punit ISP data res: %pR\n", res); + + res = platform_get_resource(pdev, IORESOURCE_MEM, + PLAT_RESOURCE_ISP_IFACE_INDEX); + if (!res) { + dev_err(&pdev->dev, "Failed to get res of punit ISP iface\n"); + return -ENXIO; + } + /* This is index 3 to cover ISP interface register */ + *++punit_res = *res; + dev_info(&pdev->dev, "punit ISP interface res: %pR\n", res); + + res = platform_get_resource(pdev, IORESOURCE_MEM, + PLAT_RESOURCE_GTD_DATA_INDEX); + if (!res) { + dev_err(&pdev->dev, "Failed to get res of punit GTD data\n"); + return -ENXIO; + } + /* This is index 4 to cover GTD data register */ + *++punit_res = *res; + dev_info(&pdev->dev, "punit GTD data res: %pR\n", res); + + res = platform_get_resource(pdev, IORESOURCE_MEM, + PLAT_RESOURCE_GTD_IFACE_INDEX); + if (!res) { + dev_err(&pdev->dev, "Failed to get res of punit GTD iface\n"); + return -ENXIO; + } + /* This is index 5 to cover GTD interface register */ + *++punit_res = *res; + dev_info(&pdev->dev, "punit GTD interface res: %pR\n", res); res = platform_get_resource(pdev, IORESOURCE_MEM, PLAT_RESOURCE_IPC_INDEX); @@ -651,8 +768,23 @@ ipcdev.gcr_base = res->start + size; ipcdev.gcr_size = PLAT_RESOURCE_GCR_SIZE; - dev_info(&pdev->dev, "ipc res: %llx %x\n", - (long long)res->start, (int)resource_size(res)); + dev_info(&pdev->dev, "ipc res: %pR\n", res); + + ipcdev.telem_res_inval = 0; + res = platform_get_resource(pdev, IORESOURCE_MEM, + PLAT_RESOURCE_TELEM_SSRAM_INDEX); + if (!res) { + dev_err(&pdev->dev, "Failed to get telemetry ssram resource\n"); + ipcdev.telem_res_inval = 1; + } else { + ipcdev.telem_punit_ssram_base = res->start + + TELEM_PUNIT_SSRAM_OFFSET; + ipcdev.telem_punit_ssram_size = TELEM_SSRAM_SIZE; + ipcdev.telem_pmc_ssram_base = res->start + + TELEM_PMC_SSRAM_OFFSET; + ipcdev.telem_pmc_ssram_size = TELEM_SSRAM_SIZE; + dev_info(&pdev->dev, "telemetry ssram res: %pR\n", res); + } return 0; } @@ -711,6 +843,7 @@ err_irq: platform_device_unregister(ipcdev.tco_dev); platform_device_unregister(ipcdev.punit_dev); + platform_device_unregister(ipcdev.telemetry_dev); err_device: iounmap(ipcdev.ipc_base); res = platform_get_resource(pdev, IORESOURCE_MEM, @@ -728,6 +861,7 @@ free_irq(ipcdev.irq, &ipcdev); platform_device_unregister(ipcdev.tco_dev); platform_device_unregister(ipcdev.punit_dev); + platform_device_unregister(ipcdev.telemetry_dev); iounmap(ipcdev.ipc_base); res = platform_get_resource(pdev, IORESOURCE_MEM, PLAT_RESOURCE_IPC_INDEX); --- linux-4.4.0.orig/drivers/platform/x86/intel_punit_ipc.c +++ linux-4.4.0/drivers/platform/x86/intel_punit_ipc.c @@ -0,0 +1,342 @@ +/* + * Driver for the Intel P-Unit Mailbox IPC mechanism + * + * (C) Copyright 2015 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * The heart of the P-Unit is the Foxton microcontroller and its firmware, + * which provide mailbox interface for power management usage. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* IPC Mailbox registers */ +#define OFFSET_DATA_LOW 0x0 +#define OFFSET_DATA_HIGH 0x4 +/* bit field of interface register */ +#define CMD_RUN BIT(31) +#define CMD_ERRCODE_MASK GENMASK(7, 0) +#define CMD_PARA1_SHIFT 8 +#define CMD_PARA2_SHIFT 16 + +#define CMD_TIMEOUT_SECONDS 1 + +enum { + BASE_DATA = 0, + BASE_IFACE, + BASE_MAX, +}; + +typedef struct { + struct device *dev; + struct mutex lock; + int irq; + struct completion cmd_complete; + /* base of interface and data registers */ + void __iomem *base[RESERVED_IPC][BASE_MAX]; + IPC_TYPE type; +} IPC_DEV; + +static IPC_DEV *punit_ipcdev; + +static inline u32 ipc_read_status(IPC_DEV *ipcdev, IPC_TYPE type) +{ + return readl(ipcdev->base[type][BASE_IFACE]); +} + +static inline void ipc_write_cmd(IPC_DEV *ipcdev, IPC_TYPE type, u32 cmd) +{ + writel(cmd, ipcdev->base[type][BASE_IFACE]); +} + +static inline u32 ipc_read_data_low(IPC_DEV *ipcdev, IPC_TYPE type) +{ + return readl(ipcdev->base[type][BASE_DATA] + OFFSET_DATA_LOW); +} + +static inline u32 ipc_read_data_high(IPC_DEV *ipcdev, IPC_TYPE type) +{ + return readl(ipcdev->base[type][BASE_DATA] + OFFSET_DATA_HIGH); +} + +static inline void ipc_write_data_low(IPC_DEV *ipcdev, IPC_TYPE type, u32 data) +{ + writel(data, ipcdev->base[type][BASE_DATA] + OFFSET_DATA_LOW); +} + +static inline void ipc_write_data_high(IPC_DEV *ipcdev, IPC_TYPE type, u32 data) +{ + writel(data, ipcdev->base[type][BASE_DATA] + OFFSET_DATA_HIGH); +} + +static const char *ipc_err_string(int error) +{ + if (error == IPC_PUNIT_ERR_SUCCESS) + return "no error"; + else if (error == IPC_PUNIT_ERR_INVALID_CMD) + return "invalid command"; + else if (error == IPC_PUNIT_ERR_INVALID_PARAMETER) + return "invalid parameter"; + else if (error == IPC_PUNIT_ERR_CMD_TIMEOUT) + return "command timeout"; + else if (error == IPC_PUNIT_ERR_CMD_LOCKED) + return "command locked"; + else if (error == IPC_PUNIT_ERR_INVALID_VR_ID) + return "invalid vr id"; + else if (error == IPC_PUNIT_ERR_VR_ERR) + return "vr error"; + else + return "unknown error"; +} + +static int intel_punit_ipc_check_status(IPC_DEV *ipcdev, IPC_TYPE type) +{ + int loops = CMD_TIMEOUT_SECONDS * USEC_PER_SEC; + int errcode; + int status; + + if (ipcdev->irq) { + if (!wait_for_completion_timeout(&ipcdev->cmd_complete, + CMD_TIMEOUT_SECONDS * HZ)) { + dev_err(ipcdev->dev, "IPC timed out\n"); + return -ETIMEDOUT; + } + } else { + while ((ipc_read_status(ipcdev, type) & CMD_RUN) && --loops) + udelay(1); + if (!loops) { + dev_err(ipcdev->dev, "IPC timed out\n"); + return -ETIMEDOUT; + } + } + + status = ipc_read_status(ipcdev, type); + errcode = status & CMD_ERRCODE_MASK; + if (errcode) { + dev_err(ipcdev->dev, "IPC failed: %s, IPC_STS=0x%x\n", + ipc_err_string(errcode), status); + return -EIO; + } + + return 0; +} + +/** + * intel_punit_ipc_simple_command() - Simple IPC command + * @cmd: IPC command code. + * @para1: First 8bit parameter, set 0 if not used. + * @para2: Second 8bit parameter, set 0 if not used. + * + * Send a IPC command to P-Unit when there is no data transaction + * + * Return: IPC error code or 0 on success. + */ +int intel_punit_ipc_simple_command(int cmd, int para1, int para2) +{ + IPC_DEV *ipcdev = punit_ipcdev; + IPC_TYPE type; + u32 val; + int ret; + + mutex_lock(&ipcdev->lock); + + reinit_completion(&ipcdev->cmd_complete); + type = (cmd & IPC_PUNIT_CMD_TYPE_MASK) >> IPC_TYPE_OFFSET; + + val = cmd & ~IPC_PUNIT_CMD_TYPE_MASK; + val |= CMD_RUN | para2 << CMD_PARA2_SHIFT | para1 << CMD_PARA1_SHIFT; + ipc_write_cmd(ipcdev, type, val); + ret = intel_punit_ipc_check_status(ipcdev, type); + + mutex_unlock(&ipcdev->lock); + + return ret; +} +EXPORT_SYMBOL(intel_punit_ipc_simple_command); + +/** + * intel_punit_ipc_command() - IPC command with data and pointers + * @cmd: IPC command code. + * @para1: First 8bit parameter, set 0 if not used. + * @para2: Second 8bit parameter, set 0 if not used. + * @in: Input data, 32bit for BIOS cmd, two 32bit for GTD and ISPD. + * @out: Output data. + * + * Send a IPC command to P-Unit with data transaction + * + * Return: IPC error code or 0 on success. + */ +int intel_punit_ipc_command(u32 cmd, u32 para1, u32 para2, u32 *in, u32 *out) +{ + IPC_DEV *ipcdev = punit_ipcdev; + IPC_TYPE type; + u32 val; + int ret; + + mutex_lock(&ipcdev->lock); + + reinit_completion(&ipcdev->cmd_complete); + type = (cmd & IPC_PUNIT_CMD_TYPE_MASK) >> IPC_TYPE_OFFSET; + + if (in) { + ipc_write_data_low(ipcdev, type, *in); + if (type == GTDRIVER_IPC || type == ISPDRIVER_IPC) + ipc_write_data_high(ipcdev, type, *++in); + } + + val = cmd & ~IPC_PUNIT_CMD_TYPE_MASK; + val |= CMD_RUN | para2 << CMD_PARA2_SHIFT | para1 << CMD_PARA1_SHIFT; + ipc_write_cmd(ipcdev, type, val); + + ret = intel_punit_ipc_check_status(ipcdev, type); + if (ret) + goto out; + + if (out) { + *out = ipc_read_data_low(ipcdev, type); + if (type == GTDRIVER_IPC || type == ISPDRIVER_IPC) + *++out = ipc_read_data_high(ipcdev, type); + } + +out: + mutex_unlock(&ipcdev->lock); + return ret; +} +EXPORT_SYMBOL_GPL(intel_punit_ipc_command); + +static irqreturn_t intel_punit_ioc(int irq, void *dev_id) +{ + IPC_DEV *ipcdev = dev_id; + + complete(&ipcdev->cmd_complete); + return IRQ_HANDLED; +} + +static int intel_punit_get_bars(struct platform_device *pdev) +{ + struct resource *res; + void __iomem *addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[BIOS_IPC][BASE_DATA] = addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[BIOS_IPC][BASE_IFACE] = addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 2); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 3); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 4); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 5); + addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; + + return 0; +} + +static int intel_punit_ipc_probe(struct platform_device *pdev) +{ + int irq, ret; + + punit_ipcdev = devm_kzalloc(&pdev->dev, + sizeof(*punit_ipcdev), GFP_KERNEL); + if (!punit_ipcdev) + return -ENOMEM; + + platform_set_drvdata(pdev, punit_ipcdev); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + punit_ipcdev->irq = 0; + dev_warn(&pdev->dev, "Invalid IRQ, using polling mode\n"); + } else { + ret = devm_request_irq(&pdev->dev, irq, intel_punit_ioc, + IRQF_NO_SUSPEND, "intel_punit_ipc", + &punit_ipcdev); + if (ret) { + dev_err(&pdev->dev, "Failed to request irq: %d\n", irq); + return ret; + } + punit_ipcdev->irq = irq; + } + + ret = intel_punit_get_bars(pdev); + if (ret) + goto out; + + punit_ipcdev->dev = &pdev->dev; + mutex_init(&punit_ipcdev->lock); + init_completion(&punit_ipcdev->cmd_complete); + +out: + return ret; +} + +static int intel_punit_ipc_remove(struct platform_device *pdev) +{ + return 0; +} + +static const struct acpi_device_id punit_ipc_acpi_ids[] = { + { "INT34D4", 0 }, + { } +}; + +static struct platform_driver intel_punit_ipc_driver = { + .probe = intel_punit_ipc_probe, + .remove = intel_punit_ipc_remove, + .driver = { + .name = "intel_punit_ipc", + .acpi_match_table = ACPI_PTR(punit_ipc_acpi_ids), + }, +}; + +static int __init intel_punit_ipc_init(void) +{ + return platform_driver_register(&intel_punit_ipc_driver); +} + +static void __exit intel_punit_ipc_exit(void) +{ + platform_driver_unregister(&intel_punit_ipc_driver); +} + +MODULE_AUTHOR("Zha Qipeng "); +MODULE_DESCRIPTION("Intel P-Unit IPC driver"); +MODULE_LICENSE("GPL v2"); + +/* Some modules are dependent on this, so init earlier */ +fs_initcall(intel_punit_ipc_init); +module_exit(intel_punit_ipc_exit); --- linux-4.4.0.orig/drivers/platform/x86/intel_telemetry_core.c +++ linux-4.4.0/drivers/platform/x86/intel_telemetry_core.c @@ -0,0 +1,464 @@ +/* + * Intel SoC Core Telemetry Driver + * Copyright (C) 2015, Intel Corporation. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * Telemetry Framework provides platform related PM and performance statistics. + * This file provides the core telemetry API implementation. + */ +#include +#include +#include + +#include + +#define DRIVER_NAME "intel_telemetry_core" + +struct telemetry_core_config { + struct telemetry_plt_config *plt_config; + struct telemetry_core_ops *telem_ops; +}; + +static struct telemetry_core_config telm_core_conf; + +static int telemetry_def_update_events(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig) +{ + return 0; +} + +static int telemetry_def_set_sampling_period(u8 pss_period, u8 ioss_period) +{ + return 0; +} + +static int telemetry_def_get_sampling_period(u8 *pss_min_period, + u8 *pss_max_period, + u8 *ioss_min_period, + u8 *ioss_max_period) +{ + return 0; +} + +static int telemetry_def_get_eventconfig( + struct telemetry_evtconfig *pss_evtconfig, + struct telemetry_evtconfig *ioss_evtconfig, + int pss_len, int ioss_len) +{ + return 0; +} + +static int telemetry_def_get_trace_verbosity(enum telemetry_unit telem_unit, + u32 *verbosity) +{ + return 0; +} + + +static int telemetry_def_set_trace_verbosity(enum telemetry_unit telem_unit, + u32 verbosity) +{ + return 0; +} + +static int telemetry_def_raw_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, + int len, int log_all_evts) +{ + return 0; +} + +static int telemetry_def_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, + int len, int log_all_evts) +{ + return 0; +} + +static int telemetry_def_add_events(u8 num_pss_evts, u8 num_ioss_evts, + u32 *pss_evtmap, u32 *ioss_evtmap) +{ + return 0; +} + +static int telemetry_def_reset_events(void) +{ + return 0; +} + +static struct telemetry_core_ops telm_defpltops = { + .set_sampling_period = telemetry_def_set_sampling_period, + .get_sampling_period = telemetry_def_get_sampling_period, + .get_trace_verbosity = telemetry_def_get_trace_verbosity, + .set_trace_verbosity = telemetry_def_set_trace_verbosity, + .raw_read_eventlog = telemetry_def_raw_read_eventlog, + .get_eventconfig = telemetry_def_get_eventconfig, + .read_eventlog = telemetry_def_read_eventlog, + .update_events = telemetry_def_update_events, + .reset_events = telemetry_def_reset_events, + .add_events = telemetry_def_add_events, +}; + +/** + * telemetry_update_events() - Update telemetry Configuration + * @pss_evtconfig: PSS related config. No change if num_evts = 0. + * @pss_evtconfig: IOSS related config. No change if num_evts = 0. + * + * This API updates the IOSS & PSS Telemetry configuration. Old config + * is overwritten. Call telemetry_reset_events when logging is over + * All sample period values should be in the form of: + * bits[6:3] -> value; bits [0:2]-> Exponent; Period = (Value *16^Exponent) + * + * Return: 0 success, < 0 for failure + */ +int telemetry_update_events(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig) +{ + return telm_core_conf.telem_ops->update_events(pss_evtconfig, + ioss_evtconfig); +} +EXPORT_SYMBOL_GPL(telemetry_update_events); + + +/** + * telemetry_set_sampling_period() - Sets the IOSS & PSS sampling period + * @pss_period: placeholder for PSS Period to be set. + * Set to 0 if not required to be updated + * @ioss_period: placeholder for IOSS Period to be set + * Set to 0 if not required to be updated + * + * All values should be in the form of: + * bits[6:3] -> value; bits [0:2]-> Exponent; Period = (Value *16^Exponent) + * + * Return: 0 success, < 0 for failure + */ +int telemetry_set_sampling_period(u8 pss_period, u8 ioss_period) +{ + return telm_core_conf.telem_ops->set_sampling_period(pss_period, + ioss_period); +} +EXPORT_SYMBOL_GPL(telemetry_set_sampling_period); + +/** + * telemetry_get_sampling_period() - Get IOSS & PSS min & max sampling period + * @pss_min_period: placeholder for PSS Min Period supported + * @pss_max_period: placeholder for PSS Max Period supported + * @ioss_min_period: placeholder for IOSS Min Period supported + * @ioss_max_period: placeholder for IOSS Max Period supported + * + * All values should be in the form of: + * bits[6:3] -> value; bits [0:2]-> Exponent; Period = (Value *16^Exponent) + * + * Return: 0 success, < 0 for failure + */ +int telemetry_get_sampling_period(u8 *pss_min_period, u8 *pss_max_period, + u8 *ioss_min_period, u8 *ioss_max_period) +{ + return telm_core_conf.telem_ops->get_sampling_period(pss_min_period, + pss_max_period, + ioss_min_period, + ioss_max_period); +} +EXPORT_SYMBOL_GPL(telemetry_get_sampling_period); + + +/** + * telemetry_reset_events() - Restore the IOSS & PSS configuration to default + * + * Return: 0 success, < 0 for failure + */ +int telemetry_reset_events(void) +{ + return telm_core_conf.telem_ops->reset_events(); +} +EXPORT_SYMBOL_GPL(telemetry_reset_events); + +/** + * telemetry_get_eventconfig() - Returns the pss and ioss events enabled + * @pss_evtconfig: Pointer to PSS related configuration. + * @pss_evtconfig: Pointer to IOSS related configuration. + * @pss_len: Number of u32 elements allocated for pss_evtconfig array + * @ioss_len: Number of u32 elements allocated for ioss_evtconfig array + * + * Return: 0 success, < 0 for failure + */ +int telemetry_get_eventconfig(struct telemetry_evtconfig *pss_evtconfig, + struct telemetry_evtconfig *ioss_evtconfig, + int pss_len, int ioss_len) +{ + return telm_core_conf.telem_ops->get_eventconfig(pss_evtconfig, + ioss_evtconfig, + pss_len, ioss_len); +} +EXPORT_SYMBOL_GPL(telemetry_get_eventconfig); + +/** + * telemetry_add_events() - Add IOSS & PSS configuration to existing settings. + * @num_pss_evts: Number of PSS Events (<29) in pss_evtmap. Can be 0. + * @num_ioss_evts: Number of IOSS Events (<29) in ioss_evtmap. Can be 0. + * @pss_evtmap: Array of PSS Event-IDs to Enable + * @ioss_evtmap: Array of PSS Event-IDs to Enable + * + * Events are appended to Old Configuration. In case of total events > 28, it + * returns error. Call telemetry_reset_events to reset after eventlog done + * + * Return: 0 success, < 0 for failure + */ +int telemetry_add_events(u8 num_pss_evts, u8 num_ioss_evts, + u32 *pss_evtmap, u32 *ioss_evtmap) +{ + return telm_core_conf.telem_ops->add_events(num_pss_evts, + num_ioss_evts, pss_evtmap, + ioss_evtmap); +} +EXPORT_SYMBOL_GPL(telemetry_add_events); + +/** + * telemetry_read_events() - Fetches samples as specified by evtlog.telem_evt_id + * @telem_unit: Specify whether IOSS or PSS Read + * @evtlog: Array of telemetry_evtlog structs to fill data + * evtlog.telem_evt_id specifies the ids to read + * @len: Length of array of evtlog + * + * Return: number of eventlogs read for success, < 0 for failure + */ +int telemetry_read_events(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len) +{ + return telm_core_conf.telem_ops->read_eventlog(telem_unit, evtlog, + len, 0); +} +EXPORT_SYMBOL_GPL(telemetry_read_events); + +/** + * telemetry_raw_read_events() - Fetch samples specified by evtlog.telem_evt_id + * @telem_unit: Specify whether IOSS or PSS Read + * @evtlog: Array of telemetry_evtlog structs to fill data + * evtlog.telem_evt_id specifies the ids to read + * @len: Length of array of evtlog + * + * The caller must take care of locking in this case. + * + * Return: number of eventlogs read for success, < 0 for failure + */ +int telemetry_raw_read_events(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len) +{ + return telm_core_conf.telem_ops->raw_read_eventlog(telem_unit, evtlog, + len, 0); +} +EXPORT_SYMBOL_GPL(telemetry_raw_read_events); + +/** + * telemetry_read_eventlog() - Fetch the Telemetry log from PSS or IOSS + * @telem_unit: Specify whether IOSS or PSS Read + * @evtlog: Array of telemetry_evtlog structs to fill data + * @len: Length of array of evtlog + * + * Return: number of eventlogs read for success, < 0 for failure + */ +int telemetry_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len) +{ + return telm_core_conf.telem_ops->read_eventlog(telem_unit, evtlog, + len, 1); +} +EXPORT_SYMBOL_GPL(telemetry_read_eventlog); + +/** + * telemetry_raw_read_eventlog() - Fetch the Telemetry log from PSS or IOSS + * @telem_unit: Specify whether IOSS or PSS Read + * @evtlog: Array of telemetry_evtlog structs to fill data + * @len: Length of array of evtlog + * + * The caller must take care of locking in this case. + * + * Return: number of eventlogs read for success, < 0 for failure + */ +int telemetry_raw_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len) +{ + return telm_core_conf.telem_ops->raw_read_eventlog(telem_unit, evtlog, + len, 1); +} +EXPORT_SYMBOL_GPL(telemetry_raw_read_eventlog); + + +/** + * telemetry_get_trace_verbosity() - Get the IOSS & PSS Trace verbosity + * @telem_unit: Specify whether IOSS or PSS Read + * @verbosity: Pointer to return Verbosity + * + * Return: 0 success, < 0 for failure + */ +int telemetry_get_trace_verbosity(enum telemetry_unit telem_unit, + u32 *verbosity) +{ + return telm_core_conf.telem_ops->get_trace_verbosity(telem_unit, + verbosity); +} +EXPORT_SYMBOL_GPL(telemetry_get_trace_verbosity); + + +/** + * telemetry_set_trace_verbosity() - Update the IOSS & PSS Trace verbosity + * @telem_unit: Specify whether IOSS or PSS Read + * @verbosity: Verbosity to set + * + * Return: 0 success, < 0 for failure + */ +int telemetry_set_trace_verbosity(enum telemetry_unit telem_unit, u32 verbosity) +{ + return telm_core_conf.telem_ops->set_trace_verbosity(telem_unit, + verbosity); +} +EXPORT_SYMBOL_GPL(telemetry_set_trace_verbosity); + +/** + * telemetry_set_pltdata() - Set the platform specific Data + * @ops: Pointer to ops structure + * @pltconfig: Platform config data + * + * Usage by other than telemetry pltdrv module is invalid + * + * Return: 0 success, < 0 for failure + */ +int telemetry_set_pltdata(struct telemetry_core_ops *ops, + struct telemetry_plt_config *pltconfig) +{ + if (ops) + telm_core_conf.telem_ops = ops; + + if (pltconfig) + telm_core_conf.plt_config = pltconfig; + + return 0; +} +EXPORT_SYMBOL_GPL(telemetry_set_pltdata); + +/** + * telemetry_clear_pltdata() - Clear the platform specific Data + * + * Usage by other than telemetry pltdrv module is invalid + * + * Return: 0 success, < 0 for failure + */ +int telemetry_clear_pltdata(void) +{ + telm_core_conf.telem_ops = &telm_defpltops; + telm_core_conf.plt_config = NULL; + + return 0; +} +EXPORT_SYMBOL_GPL(telemetry_clear_pltdata); + +/** + * telemetry_pltconfig_valid() - Checkif platform config is valid + * + * Usage by other than telemetry module is invalid + * + * Return: 0 success, < 0 for failure + */ +int telemetry_pltconfig_valid(void) +{ + if (telm_core_conf.plt_config) + return 0; + + else + return -EINVAL; +} +EXPORT_SYMBOL_GPL(telemetry_pltconfig_valid); + +static inline int telemetry_get_pssevtname(enum telemetry_unit telem_unit, + const char **name, int len) +{ + struct telemetry_unit_config psscfg; + int i; + + if (!telm_core_conf.plt_config) + return -EINVAL; + + psscfg = telm_core_conf.plt_config->pss_config; + + if (len > psscfg.ssram_evts_used) + len = psscfg.ssram_evts_used; + + for (i = 0; i < len; i++) + name[i] = psscfg.telem_evts[i].name; + + return 0; +} + +static inline int telemetry_get_iossevtname(enum telemetry_unit telem_unit, + const char **name, int len) +{ + struct telemetry_unit_config iosscfg; + int i; + + if (!(telm_core_conf.plt_config)) + return -EINVAL; + + iosscfg = telm_core_conf.plt_config->ioss_config; + + if (len > iosscfg.ssram_evts_used) + len = iosscfg.ssram_evts_used; + + for (i = 0; i < len; i++) + name[i] = iosscfg.telem_evts[i].name; + + return 0; + +} + +/** + * telemetry_get_evtname() - Checkif platform config is valid + * @telem_unit: Telemetry Unit to check + * @name: Array of character pointers to contain name + * @len: length of array name provided by user + * + * Usage by other than telemetry debugfs module is invalid + * + * Return: 0 success, < 0 for failure + */ +int telemetry_get_evtname(enum telemetry_unit telem_unit, + const char **name, int len) +{ + int ret = -EINVAL; + + if (telem_unit == TELEM_PSS) + ret = telemetry_get_pssevtname(telem_unit, name, len); + + else if (telem_unit == TELEM_IOSS) + ret = telemetry_get_iossevtname(telem_unit, name, len); + + return ret; +} +EXPORT_SYMBOL_GPL(telemetry_get_evtname); + +static int __init telemetry_module_init(void) +{ + pr_info(pr_fmt(DRIVER_NAME) " Init\n"); + + telm_core_conf.telem_ops = &telm_defpltops; + return 0; +} + +static void __exit telemetry_module_exit(void) +{ +} + +module_init(telemetry_module_init); +module_exit(telemetry_module_exit); + +MODULE_AUTHOR("Souvik Kumar Chakravarty "); +MODULE_DESCRIPTION("Intel SoC Telemetry Interface"); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/drivers/platform/x86/intel_telemetry_debugfs.c +++ linux-4.4.0/drivers/platform/x86/intel_telemetry_debugfs.c @@ -0,0 +1,1030 @@ +/* + * Intel SOC Telemetry debugfs Driver: Currently supports APL + * Copyright (c) 2015, Intel Corporation. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * This file provides the debugfs interfaces for telemetry. + * /sys/kernel/debug/telemetry/pss_info: Shows Primary Control Sub-Sys Counters + * /sys/kernel/debug/telemetry/ioss_info: Shows IO Sub-System Counters + * /sys/kernel/debug/telemetry/soc_states: Shows SoC State + * /sys/kernel/debug/telemetry/pss_trace_verbosity: Read and Change Tracing + * Verbosity via firmware + * /sys/kernel/debug/telemetry/ioss_race_verbosity: Write and Change Tracing + * Verbosity via firmware + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#define DRIVER_NAME "telemetry_soc_debugfs" +#define DRIVER_VERSION "1.0.0" + +/* ApolloLake SoC Event-IDs */ +#define TELEM_APL_PSS_PSTATES_ID 0x2802 +#define TELEM_APL_PSS_IDLE_ID 0x2806 +#define TELEM_APL_PCS_IDLE_BLOCKED_ID 0x2C00 +#define TELEM_APL_PCS_S0IX_BLOCKED_ID 0x2C01 +#define TELEM_APL_PSS_WAKEUP_ID 0x2C02 +#define TELEM_APL_PSS_LTR_BLOCKING_ID 0x2C03 + +#define TELEM_APL_S0IX_TOTAL_OCC_ID 0x4000 +#define TELEM_APL_S0IX_SHLW_OCC_ID 0x4001 +#define TELEM_APL_S0IX_DEEP_OCC_ID 0x4002 +#define TELEM_APL_S0IX_TOTAL_RES_ID 0x4800 +#define TELEM_APL_S0IX_SHLW_RES_ID 0x4801 +#define TELEM_APL_S0IX_DEEP_RES_ID 0x4802 +#define TELEM_APL_D0IX_ID 0x581A +#define TELEM_APL_D3_ID 0x5819 +#define TELEM_APL_PG_ID 0x5818 + +#define TELEM_INFO_SRAMEVTS_MASK 0xFF00 +#define TELEM_INFO_SRAMEVTS_SHIFT 0x8 +#define TELEM_SSRAM_READ_TIMEOUT 10 + +#define TELEM_MASK_BIT 1 +#define TELEM_MASK_BYTE 0xFF +#define BYTES_PER_LONG 8 +#define TELEM_APL_MASK_PCS_STATE 0xF + +/* Max events in bitmap to check for */ +#define TELEM_PSS_IDLE_EVTS 25 +#define TELEM_PSS_IDLE_BLOCKED_EVTS 20 +#define TELEM_PSS_S0IX_BLOCKED_EVTS 20 +#define TELEM_PSS_S0IX_WAKEUP_EVTS 20 +#define TELEM_PSS_LTR_BLOCKING_EVTS 20 +#define TELEM_IOSS_DX_D0IX_EVTS 25 +#define TELEM_IOSS_PG_EVTS 30 + +#define TELEM_EVT_LEN(x) (sizeof(x)/sizeof((x)[0])) + +#define TELEM_DEBUGFS_CPU(model, data) \ + { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&data} + +#define TELEM_CHECK_AND_PARSE_EVTS(EVTID, EVTNUM, BUF, EVTLOG, EVTDAT, MASK) { \ + if (evtlog[index].telem_evtid == (EVTID)) { \ + for (idx = 0; idx < (EVTNUM); idx++) \ + (BUF)[idx] = ((EVTLOG) >> (EVTDAT)[idx].bit_pos) & \ + (MASK); \ + continue; \ + } \ +} + +#define TELEM_CHECK_AND_PARSE_CTRS(EVTID, CTR) { \ + if (evtlog[index].telem_evtid == (EVTID)) { \ + (CTR) = evtlog[index].telem_evtlog; \ + continue; \ + } \ +} + +static u8 suspend_prep_ok; +static u32 suspend_shlw_ctr_temp, suspend_deep_ctr_temp; +static u64 suspend_shlw_res_temp, suspend_deep_res_temp; + +struct telemetry_susp_stats { + u32 shlw_swake_ctr; + u32 deep_swake_ctr; + u64 shlw_swake_res; + u64 deep_swake_res; + u32 shlw_ctr; + u32 deep_ctr; + u64 shlw_res; + u64 deep_res; +}; + +/* Bitmap definitions for default counters in APL */ +struct telem_pss_idle_stateinfo { + const char *name; + u32 bit_pos; +}; + +static struct telem_pss_idle_stateinfo telem_apl_pss_idle_data[] = { + {"IA_CORE0_C1E", 0}, + {"IA_CORE1_C1E", 1}, + {"IA_CORE2_C1E", 2}, + {"IA_CORE3_C1E", 3}, + {"IA_CORE0_C6", 16}, + {"IA_CORE1_C6", 17}, + {"IA_CORE2_C6", 18}, + {"IA_CORE3_C6", 19}, + {"IA_MODULE0_C7", 32}, + {"IA_MODULE1_C7", 33}, + {"GT_RC6", 40}, + {"IUNIT_PROCESSING_IDLE", 41}, + {"FAR_MEM_IDLE", 43}, + {"DISPLAY_IDLE", 44}, + {"IUNIT_INPUT_SYSTEM_IDLE", 45}, + {"PCS_STATUS", 60}, +}; + +struct telem_pcs_blkd_info { + const char *name; + u32 bit_pos; +}; + +static struct telem_pcs_blkd_info telem_apl_pcs_idle_blkd_data[] = { + {"COMPUTE", 0}, + {"MISC", 8}, + {"MODULE_ACTIONS_PENDING", 16}, + {"LTR", 24}, + {"DISPLAY_WAKE", 32}, + {"ISP_WAKE", 40}, + {"PSF0_ACTIVE", 48}, +}; + +static struct telem_pcs_blkd_info telem_apl_pcs_s0ix_blkd_data[] = { + {"LTR", 0}, + {"IRTL", 8}, + {"WAKE_DEADLINE_PENDING", 16}, + {"DISPLAY", 24}, + {"ISP", 32}, + {"CORE", 40}, + {"PMC", 48}, + {"MISC", 56}, +}; + +struct telem_pss_ltr_info { + const char *name; + u32 bit_pos; +}; + +static struct telem_pss_ltr_info telem_apl_pss_ltr_data[] = { + {"CORE_ACTIVE", 0}, + {"MEM_UP", 8}, + {"DFX", 16}, + {"DFX_FORCE_LTR", 24}, + {"DISPLAY", 32}, + {"ISP", 40}, + {"SOUTH", 48}, +}; + +struct telem_pss_wakeup_info { + const char *name; + u32 bit_pos; +}; + +static struct telem_pss_wakeup_info telem_apl_pss_wakeup[] = { + {"IP_IDLE", 0}, + {"DISPLAY_WAKE", 8}, + {"VOLTAGE_REG_INT", 16}, + {"DROWSY_TIMER (HOTPLUG)", 24}, + {"CORE_WAKE", 32}, + {"MISC_S0IX", 40}, + {"MISC_ABORT", 56}, +}; + +struct telem_ioss_d0ix_stateinfo { + const char *name; + u32 bit_pos; +}; + +static struct telem_ioss_d0ix_stateinfo telem_apl_ioss_d0ix_data[] = { + {"CSE", 0}, + {"SCC2", 1}, + {"GMM", 2}, + {"XDCI", 3}, + {"XHCI", 4}, + {"ISH", 5}, + {"AVS", 6}, + {"PCIE0P1", 7}, + {"PECI0P0", 8}, + {"LPSS", 9}, + {"SCC", 10}, + {"PWM", 11}, + {"PCIE1_P3", 12}, + {"PCIE1_P2", 13}, + {"PCIE1_P1", 14}, + {"PCIE1_P0", 15}, + {"CNV", 16}, + {"SATA", 17}, + {"PRTC", 18}, +}; + +struct telem_ioss_pg_info { + const char *name; + u32 bit_pos; +}; + +static struct telem_ioss_pg_info telem_apl_ioss_pg_data[] = { + {"LPSS", 0}, + {"SCC", 1}, + {"P2SB", 2}, + {"SCC2", 3}, + {"GMM", 4}, + {"PCIE0", 5}, + {"XDCI", 6}, + {"xHCI", 7}, + {"CSE", 8}, + {"SPI", 9}, + {"AVSPGD4", 10}, + {"AVSPGD3", 11}, + {"AVSPGD2", 12}, + {"AVSPGD1", 13}, + {"ISH", 14}, + {"EXI", 15}, + {"NPKVRC", 16}, + {"NPKVNN", 17}, + {"CUNIT", 18}, + {"FUSE_CTRL", 19}, + {"PCIE1", 20}, + {"CNV", 21}, + {"LPC", 22}, + {"SATA", 23}, + {"SMB", 24}, + {"PRTC", 25}, +}; + + +struct telemetry_debugfs_conf { + struct telemetry_susp_stats suspend_stats; + struct dentry *telemetry_dbg_dir; + + /* Bitmap Data */ + struct telem_ioss_d0ix_stateinfo *ioss_d0ix_data; + struct telem_pss_idle_stateinfo *pss_idle_data; + struct telem_pcs_blkd_info *pcs_idle_blkd_data; + struct telem_pcs_blkd_info *pcs_s0ix_blkd_data; + struct telem_pss_wakeup_info *pss_wakeup; + struct telem_pss_ltr_info *pss_ltr_data; + struct telem_ioss_pg_info *ioss_pg_data; + u8 pcs_idle_blkd_evts; + u8 pcs_s0ix_blkd_evts; + u8 pss_wakeup_evts; + u8 pss_idle_evts; + u8 pss_ltr_evts; + u8 ioss_d0ix_evts; + u8 ioss_pg_evts; + + /* IDs */ + u16 pss_ltr_blocking_id; + u16 pcs_idle_blkd_id; + u16 pcs_s0ix_blkd_id; + u16 s0ix_total_occ_id; + u16 s0ix_shlw_occ_id; + u16 s0ix_deep_occ_id; + u16 s0ix_total_res_id; + u16 s0ix_shlw_res_id; + u16 s0ix_deep_res_id; + u16 pss_wakeup_id; + u16 ioss_d0ix_id; + u16 pstates_id; + u16 pss_idle_id; + u16 ioss_d3_id; + u16 ioss_pg_id; +}; + +static struct telemetry_debugfs_conf *debugfs_conf; + +static struct telemetry_debugfs_conf telem_apl_debugfs_conf = { + .pss_idle_data = telem_apl_pss_idle_data, + .pcs_idle_blkd_data = telem_apl_pcs_idle_blkd_data, + .pcs_s0ix_blkd_data = telem_apl_pcs_s0ix_blkd_data, + .pss_ltr_data = telem_apl_pss_ltr_data, + .pss_wakeup = telem_apl_pss_wakeup, + .ioss_d0ix_data = telem_apl_ioss_d0ix_data, + .ioss_pg_data = telem_apl_ioss_pg_data, + + .pss_idle_evts = TELEM_EVT_LEN(telem_apl_pss_idle_data), + .pcs_idle_blkd_evts = TELEM_EVT_LEN(telem_apl_pcs_idle_blkd_data), + .pcs_s0ix_blkd_evts = TELEM_EVT_LEN(telem_apl_pcs_s0ix_blkd_data), + .pss_ltr_evts = TELEM_EVT_LEN(telem_apl_pss_ltr_data), + .pss_wakeup_evts = TELEM_EVT_LEN(telem_apl_pss_wakeup), + .ioss_d0ix_evts = TELEM_EVT_LEN(telem_apl_ioss_d0ix_data), + .ioss_pg_evts = TELEM_EVT_LEN(telem_apl_ioss_pg_data), + + .pstates_id = TELEM_APL_PSS_PSTATES_ID, + .pss_idle_id = TELEM_APL_PSS_IDLE_ID, + .pcs_idle_blkd_id = TELEM_APL_PCS_IDLE_BLOCKED_ID, + .pcs_s0ix_blkd_id = TELEM_APL_PCS_S0IX_BLOCKED_ID, + .pss_wakeup_id = TELEM_APL_PSS_WAKEUP_ID, + .pss_ltr_blocking_id = TELEM_APL_PSS_LTR_BLOCKING_ID, + .s0ix_total_occ_id = TELEM_APL_S0IX_TOTAL_OCC_ID, + .s0ix_shlw_occ_id = TELEM_APL_S0IX_SHLW_OCC_ID, + .s0ix_deep_occ_id = TELEM_APL_S0IX_DEEP_OCC_ID, + .s0ix_total_res_id = TELEM_APL_S0IX_TOTAL_RES_ID, + .s0ix_shlw_res_id = TELEM_APL_S0IX_SHLW_RES_ID, + .s0ix_deep_res_id = TELEM_APL_S0IX_DEEP_RES_ID, + .ioss_d0ix_id = TELEM_APL_D0IX_ID, + .ioss_d3_id = TELEM_APL_D3_ID, + .ioss_pg_id = TELEM_APL_PG_ID, +}; + +static const struct x86_cpu_id telemetry_debugfs_cpu_ids[] = { + TELEM_DEBUGFS_CPU(0x5c, telem_apl_debugfs_conf), + {} +}; + +MODULE_DEVICE_TABLE(x86cpu, telemetry_debugfs_cpu_ids); + +static int telemetry_debugfs_check_evts(void) +{ + if ((debugfs_conf->pss_idle_evts > TELEM_PSS_IDLE_EVTS) || + (debugfs_conf->pcs_idle_blkd_evts > TELEM_PSS_IDLE_BLOCKED_EVTS) || + (debugfs_conf->pcs_s0ix_blkd_evts > TELEM_PSS_S0IX_BLOCKED_EVTS) || + (debugfs_conf->pss_ltr_evts > TELEM_PSS_LTR_BLOCKING_EVTS) || + (debugfs_conf->pss_wakeup_evts > TELEM_PSS_S0IX_WAKEUP_EVTS) || + (debugfs_conf->ioss_d0ix_evts > TELEM_IOSS_DX_D0IX_EVTS) || + (debugfs_conf->ioss_pg_evts > TELEM_IOSS_PG_EVTS)) + return -EINVAL; + + return 0; +} + +static int telem_pss_states_show(struct seq_file *s, void *unused) +{ + struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS]; + struct telemetry_debugfs_conf *conf = debugfs_conf; + const char *name[TELEM_MAX_OS_ALLOCATED_EVENTS]; + u32 pcs_idle_blkd[TELEM_PSS_IDLE_BLOCKED_EVTS], + pcs_s0ix_blkd[TELEM_PSS_S0IX_BLOCKED_EVTS], + pss_s0ix_wakeup[TELEM_PSS_S0IX_WAKEUP_EVTS], + pss_ltr_blkd[TELEM_PSS_LTR_BLOCKING_EVTS], + pss_idle[TELEM_PSS_IDLE_EVTS]; + int index, idx, ret, err = 0; + u64 pstates = 0; + + ret = telemetry_read_eventlog(TELEM_PSS, evtlog, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (ret < 0) + return ret; + + err = telemetry_get_evtname(TELEM_PSS, name, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (err < 0) + return err; + + seq_puts(s, "\n----------------------------------------------------\n"); + seq_puts(s, "\tPSS TELEM EVENTLOG (Residency = field/19.2 us\n"); + seq_puts(s, "----------------------------------------------------\n"); + for (index = 0; index < ret; index++) { + seq_printf(s, "%-32s %llu\n", + name[index], evtlog[index].telem_evtlog); + + /* Fetch PSS IDLE State */ + if (evtlog[index].telem_evtid == conf->pss_idle_id) { + pss_idle[conf->pss_idle_evts - 1] = + (evtlog[index].telem_evtlog >> + conf->pss_idle_data[conf->pss_idle_evts - 1].bit_pos) & + TELEM_APL_MASK_PCS_STATE; + } + + + TELEM_CHECK_AND_PARSE_EVTS(conf->pss_idle_id, + conf->pss_idle_evts - 1, + pss_idle, evtlog[index].telem_evtlog, + conf->pss_idle_data, TELEM_MASK_BIT); + + TELEM_CHECK_AND_PARSE_EVTS(conf->pcs_idle_blkd_id, + conf->pcs_idle_blkd_evts, + pcs_idle_blkd, + evtlog[index].telem_evtlog, + conf->pcs_idle_blkd_data, + TELEM_MASK_BYTE); + + TELEM_CHECK_AND_PARSE_EVTS(conf->pcs_s0ix_blkd_id, + conf->pcs_s0ix_blkd_evts, + pcs_s0ix_blkd, + evtlog[index].telem_evtlog, + conf->pcs_s0ix_blkd_data, + TELEM_MASK_BYTE); + + + TELEM_CHECK_AND_PARSE_EVTS(conf->pss_wakeup_id, + conf->pss_wakeup_evts, + pss_s0ix_wakeup, + evtlog[index].telem_evtlog, + conf->pss_wakeup, TELEM_MASK_BYTE); + + TELEM_CHECK_AND_PARSE_EVTS(conf->pss_ltr_blocking_id, + conf->pss_ltr_evts, pss_ltr_blkd, + evtlog[index].telem_evtlog, + conf->pss_ltr_data, TELEM_MASK_BYTE); + + if (evtlog[index].telem_evtid == debugfs_conf->pstates_id) + pstates = evtlog[index].telem_evtlog; + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "PStates\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Domain\t\t\t\tFreq(Mhz)\n"); + seq_printf(s, " IA\t\t\t\t %llu\n GT\t\t\t\t %llu\n", + (pstates & TELEM_MASK_BYTE)*100, + ((pstates >> 8) & TELEM_MASK_BYTE)*50/3); + + seq_printf(s, " IUNIT\t\t\t\t %llu\n SA\t\t\t\t %llu\n", + ((pstates >> 16) & TELEM_MASK_BYTE)*25, + ((pstates >> 24) & TELEM_MASK_BYTE)*50/3); + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "PSS IDLE Status\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Device\t\t\t\t\tIDLE\n"); + for (index = 0; index < debugfs_conf->pss_idle_evts; index++) { + seq_printf(s, "%-32s\t%u\n", + debugfs_conf->pss_idle_data[index].name, + pss_idle[index]); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "PSS Idle blkd Status (~1ms saturating bucket)\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Blocker\t\t\t\t\tCount\n"); + for (index = 0; index < debugfs_conf->pcs_idle_blkd_evts; index++) { + seq_printf(s, "%-32s\t%u\n", + debugfs_conf->pcs_idle_blkd_data[index].name, + pcs_idle_blkd[index]); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "PSS S0ix blkd Status (~1ms saturating bucket)\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Blocker\t\t\t\t\tCount\n"); + for (index = 0; index < debugfs_conf->pcs_s0ix_blkd_evts; index++) { + seq_printf(s, "%-32s\t%u\n", + debugfs_conf->pcs_s0ix_blkd_data[index].name, + pcs_s0ix_blkd[index]); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "LTR Blocking Status (~1ms saturating bucket)\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Blocker\t\t\t\t\tCount\n"); + for (index = 0; index < debugfs_conf->pss_ltr_evts; index++) { + seq_printf(s, "%-32s\t%u\n", + debugfs_conf->pss_ltr_data[index].name, + pss_s0ix_wakeup[index]); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "Wakes Status (~1ms saturating bucket)\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Wakes\t\t\t\t\tCount\n"); + for (index = 0; index < debugfs_conf->pss_wakeup_evts; index++) { + seq_printf(s, "%-32s\t%u\n", + debugfs_conf->pss_wakeup[index].name, + pss_ltr_blkd[index]); + } + + return 0; +} + +static int telem_pss_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, telem_pss_states_show, inode->i_private); +} + +static const struct file_operations telem_pss_ops = { + .open = telem_pss_state_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + + +static int telem_ioss_states_show(struct seq_file *s, void *unused) +{ + struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS]; + const char *name[TELEM_MAX_OS_ALLOCATED_EVENTS]; + int index, ret, err; + + ret = telemetry_read_eventlog(TELEM_IOSS, evtlog, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (ret < 0) + return ret; + + err = telemetry_get_evtname(TELEM_IOSS, name, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (err < 0) + return err; + + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "\tI0SS TELEMETRY EVENTLOG\n"); + seq_puts(s, "--------------------------------------\n"); + for (index = 0; index < ret; index++) { + seq_printf(s, "%-32s 0x%llx\n", + name[index], evtlog[index].telem_evtlog); + } + + return 0; +} + +static int telem_ioss_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, telem_ioss_states_show, inode->i_private); +} + +static const struct file_operations telem_ioss_ops = { + .open = telem_ioss_state_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int telem_soc_states_show(struct seq_file *s, void *unused) +{ + u32 d3_sts[TELEM_IOSS_DX_D0IX_EVTS], d0ix_sts[TELEM_IOSS_DX_D0IX_EVTS]; + u32 pg_sts[TELEM_IOSS_PG_EVTS], pss_idle[TELEM_PSS_IDLE_EVTS]; + struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS]; + u32 s0ix_total_ctr = 0, s0ix_shlw_ctr = 0, s0ix_deep_ctr = 0; + u64 s0ix_total_res = 0, s0ix_shlw_res = 0, s0ix_deep_res = 0; + struct telemetry_debugfs_conf *conf = debugfs_conf; + struct pci_dev *dev = NULL; + int index, idx, ret; + u32 d3_state; + u16 pmcsr; + + ret = telemetry_read_eventlog(TELEM_IOSS, evtlog, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (ret < 0) + return ret; + + for (index = 0; index < ret; index++) { + TELEM_CHECK_AND_PARSE_EVTS(conf->ioss_d3_id, + conf->ioss_d0ix_evts, + d3_sts, evtlog[index].telem_evtlog, + conf->ioss_d0ix_data, + TELEM_MASK_BIT); + + TELEM_CHECK_AND_PARSE_EVTS(conf->ioss_pg_id, conf->ioss_pg_evts, + pg_sts, evtlog[index].telem_evtlog, + conf->ioss_pg_data, TELEM_MASK_BIT); + + TELEM_CHECK_AND_PARSE_EVTS(conf->ioss_d0ix_id, + conf->ioss_d0ix_evts, + d0ix_sts, evtlog[index].telem_evtlog, + conf->ioss_d0ix_data, + TELEM_MASK_BIT); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_total_occ_id, + s0ix_total_ctr); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_occ_id, + s0ix_shlw_ctr); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_occ_id, + s0ix_deep_ctr); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_total_res_id, + s0ix_total_res); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_res_id, + s0ix_shlw_res); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_res_id, + s0ix_deep_res); + } + + seq_puts(s, "\n---------------------------------------------------\n"); + seq_puts(s, "S0IX Type\t\t\t Occurrence\t\t Residency(us)\n"); + seq_puts(s, "---------------------------------------------------\n"); + + seq_printf(s, "S0IX Shallow\t\t\t %10u\t %10llu\n", + s0ix_shlw_ctr - + conf->suspend_stats.shlw_ctr - + conf->suspend_stats.shlw_swake_ctr, + (u64)((s0ix_shlw_res - + conf->suspend_stats.shlw_res - + conf->suspend_stats.shlw_swake_res)*10/192)); + + seq_printf(s, "S0IX Deep\t\t\t %10u\t %10llu\n", + s0ix_deep_ctr - + conf->suspend_stats.deep_ctr - + conf->suspend_stats.deep_swake_ctr, + (u64)((s0ix_deep_res - + conf->suspend_stats.deep_res - + conf->suspend_stats.deep_swake_res)*10/192)); + + seq_printf(s, "Suspend(With S0ixShallow)\t %10u\t %10llu\n", + conf->suspend_stats.shlw_ctr, + (u64)(conf->suspend_stats.shlw_res*10)/192); + + seq_printf(s, "Suspend(With S0ixDeep)\t\t %10u\t %10llu\n", + conf->suspend_stats.deep_ctr, + (u64)(conf->suspend_stats.deep_res*10)/192); + + seq_printf(s, "Suspend(With Shallow-Wakes)\t %10u\t %10llu\n", + conf->suspend_stats.shlw_swake_ctr + + conf->suspend_stats.deep_swake_ctr, + (u64)((conf->suspend_stats.shlw_swake_res + + conf->suspend_stats.deep_swake_res)*10/192)); + + seq_printf(s, "S0IX+Suspend Total\t\t %10u\t %10llu\n", s0ix_total_ctr, + (u64)(s0ix_total_res*10/192)); + seq_puts(s, "\n-------------------------------------------------\n"); + seq_puts(s, "\t\tDEVICE STATES\n"); + seq_puts(s, "-------------------------------------------------\n"); + + for_each_pci_dev(dev) { + pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr); + d3_state = ((pmcsr & PCI_PM_CTRL_STATE_MASK) == + (__force int)PCI_D3hot) ? 1 : 0; + + seq_printf(s, "pci %04x %04X %s %20.20s: ", + dev->vendor, dev->device, dev_name(&dev->dev), + dev_driver_string(&dev->dev)); + seq_printf(s, " d3:%x\n", d3_state); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "D3/D0i3 Status\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Block\t\t D3\t D0i3\n"); + for (index = 0; index < conf->ioss_d0ix_evts; index++) { + seq_printf(s, "%-10s\t %u\t %u\n", + conf->ioss_d0ix_data[index].name, + d3_sts[index], d0ix_sts[index]); + } + + seq_puts(s, "\n--------------------------------------\n"); + seq_puts(s, "South Complex PowerGate Status\n"); + seq_puts(s, "--------------------------------------\n"); + seq_puts(s, "Device\t\t PG\n"); + for (index = 0; index < conf->ioss_pg_evts; index++) { + seq_printf(s, "%-10s\t %u\n", + conf->ioss_pg_data[index].name, + pg_sts[index]); + } + + evtlog->telem_evtid = conf->pss_idle_id; + ret = telemetry_read_events(TELEM_PSS, evtlog, 1); + if (ret < 0) + return ret; + + seq_puts(s, "\n-----------------------------------------\n"); + seq_puts(s, "North Idle Status\n"); + seq_puts(s, "-----------------------------------------\n"); + for (idx = 0; idx < conf->pss_idle_evts - 1; idx++) { + pss_idle[idx] = (evtlog->telem_evtlog >> + conf->pss_idle_data[idx].bit_pos) & + TELEM_MASK_BIT; + } + + pss_idle[idx] = (evtlog->telem_evtlog >> + conf->pss_idle_data[idx].bit_pos) & + TELEM_APL_MASK_PCS_STATE; + + for (index = 0; index < conf->pss_idle_evts; index++) { + seq_printf(s, "%-30s %u\n", + conf->pss_idle_data[index].name, + pss_idle[index]); + } + + seq_puts(s, "\nPCS_STATUS Code\n"); + seq_puts(s, "0:C0 1:C1 2:C1_DN_WT_DEV 3:C2 4:C2_WT_DE_MEM_UP\n"); + seq_puts(s, "5:C2_WT_DE_MEM_DOWN 6:C2_UP_WT_DEV 7:C2_DN 8:C2_VOA\n"); + seq_puts(s, "9:C2_VOA_UP 10:S0IX_PRE 11:S0IX\n"); + + return 0; +} + +static int telem_soc_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, telem_soc_states_show, inode->i_private); +} + +static const struct file_operations telem_socstate_ops = { + .open = telem_soc_state_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int telem_pss_trc_verb_show(struct seq_file *s, void *unused) +{ + u32 verbosity; + int err; + + err = telemetry_get_trace_verbosity(TELEM_PSS, &verbosity); + if (err) { + pr_err("Get PSS Trace Verbosity Failed with Error %d\n", err); + return -EFAULT; + } + + seq_printf(s, "PSS Trace Verbosity %u\n", verbosity); + return 0; +} + +static ssize_t telem_pss_trc_verb_write(struct file *file, + const char __user *userbuf, + size_t count, loff_t *ppos) +{ + u32 verbosity; + int err; + + if (kstrtou32_from_user(userbuf, count, 0, &verbosity)) + return -EFAULT; + + err = telemetry_set_trace_verbosity(TELEM_PSS, verbosity); + if (err) { + pr_err("Changing PSS Trace Verbosity Failed. Error %d\n", err); + count = err; + } + + return count; +} + +static int telem_pss_trc_verb_open(struct inode *inode, struct file *file) +{ + return single_open(file, telem_pss_trc_verb_show, inode->i_private); +} + +static const struct file_operations telem_pss_trc_verb_ops = { + .open = telem_pss_trc_verb_open, + .read = seq_read, + .write = telem_pss_trc_verb_write, + .llseek = seq_lseek, + .release = single_release, +}; + + +static int telem_ioss_trc_verb_show(struct seq_file *s, void *unused) +{ + u32 verbosity; + int err; + + err = telemetry_get_trace_verbosity(TELEM_IOSS, &verbosity); + if (err) { + pr_err("Get IOSS Trace Verbosity Failed with Error %d\n", err); + return -EFAULT; + } + + seq_printf(s, "IOSS Trace Verbosity %u\n", verbosity); + return 0; +} + +static ssize_t telem_ioss_trc_verb_write(struct file *file, + const char __user *userbuf, + size_t count, loff_t *ppos) +{ + u32 verbosity; + int err; + + if (kstrtou32_from_user(userbuf, count, 0, &verbosity)) + return -EFAULT; + + err = telemetry_set_trace_verbosity(TELEM_IOSS, verbosity); + if (err) { + pr_err("Changing IOSS Trace Verbosity Failed. Error %d\n", err); + count = err; + } + + return count; +} + +static int telem_ioss_trc_verb_open(struct inode *inode, struct file *file) +{ + return single_open(file, telem_ioss_trc_verb_show, inode->i_private); +} + +static const struct file_operations telem_ioss_trc_verb_ops = { + .open = telem_ioss_trc_verb_open, + .read = seq_read, + .write = telem_ioss_trc_verb_write, + .llseek = seq_lseek, + .release = single_release, +}; + +#ifdef CONFIG_PM_SLEEP +static int pm_suspend_prep_cb(void) +{ + struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS]; + struct telemetry_debugfs_conf *conf = debugfs_conf; + int ret, index; + + ret = telemetry_raw_read_eventlog(TELEM_IOSS, evtlog, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (ret < 0) { + suspend_prep_ok = 0; + goto out; + } + + for (index = 0; index < ret; index++) { + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_occ_id, + suspend_shlw_ctr_temp); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_occ_id, + suspend_deep_ctr_temp); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_res_id, + suspend_shlw_res_temp); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_res_id, + suspend_deep_res_temp); + } + suspend_prep_ok = 1; +out: + return NOTIFY_OK; +} + +static int pm_suspend_exit_cb(void) +{ + struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS]; + static u32 suspend_shlw_ctr_exit, suspend_deep_ctr_exit; + static u64 suspend_shlw_res_exit, suspend_deep_res_exit; + struct telemetry_debugfs_conf *conf = debugfs_conf; + int ret, index; + + if (!suspend_prep_ok) + goto out; + + ret = telemetry_raw_read_eventlog(TELEM_IOSS, evtlog, + TELEM_MAX_OS_ALLOCATED_EVENTS); + if (ret < 0) + goto out; + + for (index = 0; index < ret; index++) { + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_occ_id, + suspend_shlw_ctr_exit); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_occ_id, + suspend_deep_ctr_exit); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_res_id, + suspend_shlw_res_exit); + + TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_res_id, + suspend_deep_res_exit); + } + + if ((suspend_shlw_ctr_exit < suspend_shlw_ctr_temp) || + (suspend_deep_ctr_exit < suspend_deep_ctr_temp) || + (suspend_shlw_res_exit < suspend_shlw_res_temp) || + (suspend_deep_res_exit < suspend_deep_res_temp)) { + pr_err("Wrong s0ix counters detected\n"); + goto out; + } + + suspend_shlw_ctr_exit -= suspend_shlw_ctr_temp; + suspend_deep_ctr_exit -= suspend_deep_ctr_temp; + suspend_shlw_res_exit -= suspend_shlw_res_temp; + suspend_deep_res_exit -= suspend_deep_res_temp; + + if (suspend_shlw_ctr_exit == 1) { + conf->suspend_stats.shlw_ctr += + suspend_shlw_ctr_exit; + + conf->suspend_stats.shlw_res += + suspend_shlw_res_exit; + } + /* Shallow Wakes Case */ + else if (suspend_shlw_ctr_exit > 1) { + conf->suspend_stats.shlw_swake_ctr += + suspend_shlw_ctr_exit; + + conf->suspend_stats.shlw_swake_res += + suspend_shlw_res_exit; + } + + if (suspend_deep_ctr_exit == 1) { + conf->suspend_stats.deep_ctr += + suspend_deep_ctr_exit; + + conf->suspend_stats.deep_res += + suspend_deep_res_exit; + } + + /* Shallow Wakes Case */ + else if (suspend_deep_ctr_exit > 1) { + conf->suspend_stats.deep_swake_ctr += + suspend_deep_ctr_exit; + + conf->suspend_stats.deep_swake_res += + suspend_deep_res_exit; + } + +out: + suspend_prep_ok = 0; + return NOTIFY_OK; +} + +static int pm_notification(struct notifier_block *this, + unsigned long event, void *ptr) +{ + switch (event) { + case PM_SUSPEND_PREPARE: + return pm_suspend_prep_cb(); + case PM_POST_SUSPEND: + return pm_suspend_exit_cb(); + } + + return NOTIFY_DONE; +} + +static struct notifier_block pm_notifier = { + .notifier_call = pm_notification, +}; +#endif /* CONFIG_PM_SLEEP */ + +static int __init telemetry_debugfs_init(void) +{ + const struct x86_cpu_id *id; + int err = -ENOMEM; + struct dentry *f; + + /* Only APL supported for now */ + id = x86_match_cpu(telemetry_debugfs_cpu_ids); + if (!id) + return -ENODEV; + + debugfs_conf = (struct telemetry_debugfs_conf *)id->driver_data; + + err = telemetry_pltconfig_valid(); + if (err < 0) + return -ENODEV; + + err = telemetry_debugfs_check_evts(); + if (err < 0) + return -EINVAL; + + +#ifdef CONFIG_PM_SLEEP + register_pm_notifier(&pm_notifier); +#endif /* CONFIG_PM_SLEEP */ + + debugfs_conf->telemetry_dbg_dir = debugfs_create_dir("telemetry", NULL); + if (!debugfs_conf->telemetry_dbg_dir) + return -ENOMEM; + + f = debugfs_create_file("pss_info", S_IFREG | S_IRUGO, + debugfs_conf->telemetry_dbg_dir, NULL, + &telem_pss_ops); + if (!f) { + pr_err("pss_sample_info debugfs register failed\n"); + goto out; + } + + f = debugfs_create_file("ioss_info", S_IFREG | S_IRUGO, + debugfs_conf->telemetry_dbg_dir, NULL, + &telem_ioss_ops); + if (!f) { + pr_err("ioss_sample_info debugfs register failed\n"); + goto out; + } + + f = debugfs_create_file("soc_states", S_IFREG | S_IRUGO, + debugfs_conf->telemetry_dbg_dir, + NULL, &telem_socstate_ops); + if (!f) { + pr_err("ioss_sample_info debugfs register failed\n"); + goto out; + } + + f = debugfs_create_file("pss_trace_verbosity", S_IFREG | S_IRUGO, + debugfs_conf->telemetry_dbg_dir, NULL, + &telem_pss_trc_verb_ops); + if (!f) { + pr_err("pss_trace_verbosity debugfs register failed\n"); + goto out; + } + + f = debugfs_create_file("ioss_trace_verbosity", S_IFREG | S_IRUGO, + debugfs_conf->telemetry_dbg_dir, NULL, + &telem_ioss_trc_verb_ops); + if (!f) { + pr_err("ioss_trace_verbosity debugfs register failed\n"); + goto out; + } + + return 0; + +out: + debugfs_remove_recursive(debugfs_conf->telemetry_dbg_dir); + debugfs_conf->telemetry_dbg_dir = NULL; + + return err; +} + +static void __exit telemetry_debugfs_exit(void) +{ + debugfs_remove_recursive(debugfs_conf->telemetry_dbg_dir); + debugfs_conf->telemetry_dbg_dir = NULL; +} + +late_initcall(telemetry_debugfs_init); +module_exit(telemetry_debugfs_exit); + +MODULE_AUTHOR("Souvik Kumar Chakravarty "); +MODULE_DESCRIPTION("Intel SoC Telemetry debugfs Interface"); +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/drivers/platform/x86/intel_telemetry_pltdrv.c +++ linux-4.4.0/drivers/platform/x86/intel_telemetry_pltdrv.c @@ -0,0 +1,1206 @@ +/* + * Intel SOC Telemetry Platform Driver: Currently supports APL + * Copyright (c) 2015, Intel Corporation. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * This file provides the platform specific telemetry implementation for APL. + * It used the PUNIT and PMC IPC interfaces for configuring the counters. + * The accumulated results are fetched from SRAM. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#define DRIVER_NAME "intel_telemetry" +#define DRIVER_VERSION "1.0.0" + +#define TELEM_TRC_VERBOSITY_MASK 0x3 + +#define TELEM_MIN_PERIOD(x) ((x) & 0x7F0000) +#define TELEM_MAX_PERIOD(x) ((x) & 0x7F000000) +#define TELEM_SAMPLE_PERIOD_INVALID(x) ((x) & (BIT(7))) +#define TELEM_CLEAR_SAMPLE_PERIOD(x) ((x) &= ~0x7F) + +#define TELEM_SAMPLING_DEFAULT_PERIOD 0xD + +#define TELEM_MAX_EVENTS_SRAM 28 +#define TELEM_MAX_OS_ALLOCATED_EVENTS 20 +#define TELEM_SSRAM_STARTTIME_OFFSET 8 +#define TELEM_SSRAM_EVTLOG_OFFSET 16 + +#define IOSS_TELEM_EVENT_READ 0x0 +#define IOSS_TELEM_EVENT_WRITE 0x1 +#define IOSS_TELEM_INFO_READ 0x2 +#define IOSS_TELEM_TRACE_CTL_READ 0x5 +#define IOSS_TELEM_TRACE_CTL_WRITE 0x6 +#define IOSS_TELEM_EVENT_CTL_READ 0x7 +#define IOSS_TELEM_EVENT_CTL_WRITE 0x8 +#define IOSS_TELEM_EVT_CTRL_WRITE_SIZE 0x4 +#define IOSS_TELEM_READ_WORD 0x1 +#define IOSS_TELEM_WRITE_FOURBYTES 0x4 +#define IOSS_TELEM_EVT_WRITE_SIZE 0x3 + +#define TELEM_INFO_SRAMEVTS_MASK 0xFF00 +#define TELEM_INFO_SRAMEVTS_SHIFT 0x8 +#define TELEM_SSRAM_READ_TIMEOUT 10 + +#define TELEM_INFO_NENABLES_MASK 0xFF +#define TELEM_EVENT_ENABLE 0x8000 + +#define TELEM_MASK_BIT 1 +#define TELEM_MASK_BYTE 0xFF +#define BYTES_PER_LONG 8 +#define TELEM_MASK_PCS_STATE 0xF + +#define TELEM_DISABLE(x) ((x) &= ~(BIT(31))) +#define TELEM_CLEAR_EVENTS(x) ((x) |= (BIT(30))) +#define TELEM_ENABLE_SRAM_EVT_TRACE(x) ((x) &= ~(BIT(30) | BIT(24))) +#define TELEM_ENABLE_PERIODIC(x) ((x) |= (BIT(23) | BIT(31) | BIT(7))) +#define TELEM_EXTRACT_VERBOSITY(x, y) ((y) = (((x) >> 27) & 0x3)) +#define TELEM_CLEAR_VERBOSITY_BITS(x) ((x) &= ~(BIT(27) | BIT(28))) +#define TELEM_SET_VERBOSITY_BITS(x, y) ((x) |= ((y) << 27)) + +#define TELEM_CPU(model, data) \ + { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&data } + +enum telemetry_action { + TELEM_UPDATE = 0, + TELEM_ADD, + TELEM_RESET, + TELEM_ACTION_NONE +}; + +struct telem_ssram_region { + u64 timestamp; + u64 start_time; + u64 events[TELEM_MAX_EVENTS_SRAM]; +}; + +static struct telemetry_plt_config *telm_conf; + +/* + * The following counters are programmed by default during setup. + * Only 20 allocated to kernel driver + */ +static struct telemetry_evtmap + telemetry_apl_ioss_default_events[TELEM_MAX_OS_ALLOCATED_EVENTS] = { + {"SOC_S0IX_TOTAL_RES", 0x4800}, + {"SOC_S0IX_TOTAL_OCC", 0x4000}, + {"SOC_S0IX_SHALLOW_RES", 0x4801}, + {"SOC_S0IX_SHALLOW_OCC", 0x4001}, + {"SOC_S0IX_DEEP_RES", 0x4802}, + {"SOC_S0IX_DEEP_OCC", 0x4002}, + {"PMC_POWER_GATE", 0x5818}, + {"PMC_D3_STATES", 0x5819}, + {"PMC_D0I3_STATES", 0x581A}, + {"PMC_S0IX_WAKE_REASON_GPIO", 0x6000}, + {"PMC_S0IX_WAKE_REASON_TIMER", 0x6001}, + {"PMC_S0IX_WAKE_REASON_VNNREQ", 0x6002}, + {"PMC_S0IX_WAKE_REASON_LOWPOWER", 0x6003}, + {"PMC_S0IX_WAKE_REASON_EXTERNAL", 0x6004}, + {"PMC_S0IX_WAKE_REASON_MISC", 0x6005}, + {"PMC_S0IX_BLOCKING_IPS_D3_D0I3", 0x6006}, + {"PMC_S0IX_BLOCKING_IPS_PG", 0x6007}, + {"PMC_S0IX_BLOCKING_MISC_IPS_PG", 0x6008}, + {"PMC_S0IX_BLOCK_IPS_VNN_REQ", 0x6009}, + {"PMC_S0IX_BLOCK_IPS_CLOCKS", 0x600B}, +}; + + +static struct telemetry_evtmap + telemetry_apl_pss_default_events[TELEM_MAX_OS_ALLOCATED_EVENTS] = { + {"IA_CORE0_C6_RES", 0x0400}, + {"IA_CORE0_C6_CTR", 0x0000}, + {"IA_MODULE0_C7_RES", 0x0410}, + {"IA_MODULE0_C7_CTR", 0x000E}, + {"IA_C0_RES", 0x0805}, + {"PCS_LTR", 0x2801}, + {"PSTATES", 0x2802}, + {"SOC_S0I3_RES", 0x0409}, + {"SOC_S0I3_CTR", 0x000A}, + {"PCS_S0I3_CTR", 0x0009}, + {"PCS_C1E_RES", 0x041A}, + {"PCS_IDLE_STATUS", 0x2806}, + {"IA_PERF_LIMITS", 0x280B}, + {"GT_PERF_LIMITS", 0x280C}, + {"PCS_WAKEUP_S0IX_CTR", 0x0030}, + {"PCS_IDLE_BLOCKED", 0x2C00}, + {"PCS_S0IX_BLOCKED", 0x2C01}, + {"PCS_S0IX_WAKE_REASONS", 0x2C02}, + {"PCS_LTR_BLOCKING", 0x2C03}, + {"PC2_AND_MEM_SHALLOW_IDLE_RES", 0x1D40}, +}; + +/* APL specific Data */ +static struct telemetry_plt_config telem_apl_config = { + .pss_config = { + .telem_evts = telemetry_apl_pss_default_events, + }, + .ioss_config = { + .telem_evts = telemetry_apl_ioss_default_events, + }, +}; + +static const struct x86_cpu_id telemetry_cpu_ids[] = { + TELEM_CPU(0x5c, telem_apl_config), + {} +}; + +MODULE_DEVICE_TABLE(x86cpu, telemetry_cpu_ids); + +static inline int telem_get_unitconfig(enum telemetry_unit telem_unit, + struct telemetry_unit_config **unit_config) +{ + if (telem_unit == TELEM_PSS) + *unit_config = &(telm_conf->pss_config); + else if (telem_unit == TELEM_IOSS) + *unit_config = &(telm_conf->ioss_config); + else + return -EINVAL; + + return 0; + +} + +static int telemetry_check_evtid(enum telemetry_unit telem_unit, + u32 *evtmap, u8 len, + enum telemetry_action action) +{ + struct telemetry_unit_config *unit_config; + int ret; + + ret = telem_get_unitconfig(telem_unit, &unit_config); + if (ret < 0) + return ret; + + switch (action) { + case TELEM_RESET: + if (len > TELEM_MAX_EVENTS_SRAM) + return -EINVAL; + + break; + + case TELEM_UPDATE: + if (len > TELEM_MAX_EVENTS_SRAM) + return -EINVAL; + + if ((len > 0) && (evtmap == NULL)) + return -EINVAL; + + break; + + case TELEM_ADD: + if ((len + unit_config->ssram_evts_used) > + TELEM_MAX_EVENTS_SRAM) + return -EINVAL; + + if ((len > 0) && (evtmap == NULL)) + return -EINVAL; + + break; + + default: + pr_err("Unknown Telemetry action Specified %d\n", action); + return -EINVAL; + } + + return 0; +} + + +static inline int telemetry_plt_config_ioss_event(u32 evt_id, int index) +{ + u32 write_buf; + int ret; + + write_buf = evt_id | TELEM_EVENT_ENABLE; + write_buf <<= BITS_PER_BYTE; + write_buf |= index; + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_WRITE, (u8 *)&write_buf, + IOSS_TELEM_EVT_WRITE_SIZE, NULL, 0); + + return ret; +} + +static inline int telemetry_plt_config_pss_event(u32 evt_id, int index) +{ + u32 write_buf; + int ret; + + write_buf = evt_id | TELEM_EVENT_ENABLE; + ret = intel_punit_ipc_command(IPC_PUNIT_BIOS_WRITE_TELE_EVENT, + index, 0, &write_buf, NULL); + + return ret; +} + +static int telemetry_setup_iossevtconfig(struct telemetry_evtconfig evtconfig, + enum telemetry_action action) +{ + u8 num_ioss_evts, ioss_period; + int ret, index, idx; + u32 *ioss_evtmap; + u32 telem_ctrl; + + num_ioss_evts = evtconfig.num_evts; + ioss_period = evtconfig.period; + ioss_evtmap = evtconfig.evtmap; + + /* Get telemetry EVENT CTL */ + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_READ, NULL, 0, + &telem_ctrl, IOSS_TELEM_READ_WORD); + if (ret) { + pr_err("IOSS TELEM_CTRL Read Failed\n"); + return ret; + } + + /* Disable Telemetry */ + TELEM_DISABLE(telem_ctrl); + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, + NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + + + /* Reset Everything */ + if (action == TELEM_RESET) { + /* Clear All Events */ + TELEM_CLEAR_EVENTS(telem_ctrl); + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, + NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + telm_conf->ioss_config.ssram_evts_used = 0; + + /* Configure Events */ + for (idx = 0; idx < num_ioss_evts; idx++) { + if (telemetry_plt_config_ioss_event( + telm_conf->ioss_config.telem_evts[idx].evt_id, + idx)) { + pr_err("IOSS TELEM_RESET Fail for data: %x\n", + telm_conf->ioss_config.telem_evts[idx].evt_id); + continue; + } + telm_conf->ioss_config.ssram_evts_used++; + } + } + + /* Re-Configure Everything */ + if (action == TELEM_UPDATE) { + /* Clear All Events */ + TELEM_CLEAR_EVENTS(telem_ctrl); + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, + NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + telm_conf->ioss_config.ssram_evts_used = 0; + + /* Configure Events */ + for (index = 0; index < num_ioss_evts; index++) { + telm_conf->ioss_config.telem_evts[index].evt_id = + ioss_evtmap[index]; + + if (telemetry_plt_config_ioss_event( + telm_conf->ioss_config.telem_evts[index].evt_id, + index)) { + pr_err("IOSS TELEM_UPDATE Fail for Evt%x\n", + ioss_evtmap[index]); + continue; + } + telm_conf->ioss_config.ssram_evts_used++; + } + } + + /* Add some Events */ + if (action == TELEM_ADD) { + /* Configure Events */ + for (index = telm_conf->ioss_config.ssram_evts_used, idx = 0; + idx < num_ioss_evts; index++, idx++) { + telm_conf->ioss_config.telem_evts[index].evt_id = + ioss_evtmap[idx]; + + if (telemetry_plt_config_ioss_event( + telm_conf->ioss_config.telem_evts[index].evt_id, + index)) { + pr_err("IOSS TELEM_ADD Fail for Event %x\n", + ioss_evtmap[idx]); + continue; + } + telm_conf->ioss_config.ssram_evts_used++; + } + } + + /* Enable Periodic Telemetry Events and enable SRAM trace */ + TELEM_CLEAR_SAMPLE_PERIOD(telem_ctrl); + TELEM_ENABLE_SRAM_EVT_TRACE(telem_ctrl); + TELEM_ENABLE_PERIODIC(telem_ctrl); + telem_ctrl |= ioss_period; + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Enable Write Failed\n"); + return ret; + } + + telm_conf->ioss_config.curr_period = ioss_period; + + return 0; +} + + +static int telemetry_setup_pssevtconfig(struct telemetry_evtconfig evtconfig, + enum telemetry_action action) +{ + u8 num_pss_evts, pss_period; + int ret, index, idx; + u32 *pss_evtmap; + u32 telem_ctrl; + + num_pss_evts = evtconfig.num_evts; + pss_period = evtconfig.period; + pss_evtmap = evtconfig.evtmap; + + /* PSS Config */ + /* Get telemetry EVENT CTL */ + ret = intel_punit_ipc_command(IPC_PUNIT_BIOS_READ_TELE_EVENT_CTRL, + 0, 0, NULL, &telem_ctrl); + if (ret) { + pr_err("PSS TELEM_CTRL Read Failed\n"); + return ret; + } + + /* Disable Telemetry */ + TELEM_DISABLE(telem_ctrl); + ret = intel_punit_ipc_command(IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + + /* Reset Everything */ + if (action == TELEM_RESET) { + /* Clear All Events */ + TELEM_CLEAR_EVENTS(telem_ctrl); + + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + telm_conf->pss_config.ssram_evts_used = 0; + /* Configure Events */ + for (idx = 0; idx < num_pss_evts; idx++) { + if (telemetry_plt_config_pss_event( + telm_conf->pss_config.telem_evts[idx].evt_id, + idx)) { + pr_err("PSS TELEM_RESET Fail for Event %x\n", + telm_conf->pss_config.telem_evts[idx].evt_id); + continue; + } + telm_conf->pss_config.ssram_evts_used++; + } + } + + /* Re-Configure Everything */ + if (action == TELEM_UPDATE) { + /* Clear All Events */ + TELEM_CLEAR_EVENTS(telem_ctrl); + + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Disable Write Failed\n"); + return ret; + } + telm_conf->pss_config.ssram_evts_used = 0; + + /* Configure Events */ + for (index = 0; index < num_pss_evts; index++) { + telm_conf->pss_config.telem_evts[index].evt_id = + pss_evtmap[index]; + + if (telemetry_plt_config_pss_event( + telm_conf->pss_config.telem_evts[index].evt_id, + index)) { + pr_err("PSS TELEM_UPDATE Fail for Event %x\n", + pss_evtmap[index]); + continue; + } + telm_conf->pss_config.ssram_evts_used++; + } + } + + /* Add some Events */ + if (action == TELEM_ADD) { + /* Configure Events */ + for (index = telm_conf->pss_config.ssram_evts_used, idx = 0; + idx < num_pss_evts; index++, idx++) { + + telm_conf->pss_config.telem_evts[index].evt_id = + pss_evtmap[idx]; + + if (telemetry_plt_config_pss_event( + telm_conf->pss_config.telem_evts[index].evt_id, + index)) { + pr_err("PSS TELEM_ADD Fail for Event %x\n", + pss_evtmap[idx]); + continue; + } + telm_conf->pss_config.ssram_evts_used++; + } + } + + /* Enable Periodic Telemetry Events and enable SRAM trace */ + TELEM_CLEAR_SAMPLE_PERIOD(telem_ctrl); + TELEM_ENABLE_SRAM_EVT_TRACE(telem_ctrl); + TELEM_ENABLE_PERIODIC(telem_ctrl); + telem_ctrl |= pss_period; + + ret = intel_punit_ipc_command(IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Enable Write Failed\n"); + return ret; + } + + telm_conf->pss_config.curr_period = pss_period; + + return 0; +} + +static int telemetry_setup_evtconfig(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig, + enum telemetry_action action) +{ + int ret; + + mutex_lock(&(telm_conf->telem_lock)); + + if ((action == TELEM_UPDATE) && (telm_conf->telem_in_use)) { + ret = -EBUSY; + goto out; + } + + ret = telemetry_check_evtid(TELEM_PSS, pss_evtconfig.evtmap, + pss_evtconfig.num_evts, action); + if (ret) + goto out; + + ret = telemetry_check_evtid(TELEM_IOSS, ioss_evtconfig.evtmap, + ioss_evtconfig.num_evts, action); + if (ret) + goto out; + + if (ioss_evtconfig.num_evts) { + ret = telemetry_setup_iossevtconfig(ioss_evtconfig, action); + if (ret) + goto out; + } + + if (pss_evtconfig.num_evts) { + ret = telemetry_setup_pssevtconfig(pss_evtconfig, action); + if (ret) + goto out; + } + + if ((action == TELEM_UPDATE) || (action == TELEM_ADD)) + telm_conf->telem_in_use = true; + else + telm_conf->telem_in_use = false; + +out: + mutex_unlock(&(telm_conf->telem_lock)); + return ret; +} + +static int telemetry_setup(struct platform_device *pdev) +{ + struct telemetry_evtconfig pss_evtconfig, ioss_evtconfig; + u32 read_buf, events, event_regs; + int ret; + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, IOSS_TELEM_INFO_READ, + NULL, 0, &read_buf, IOSS_TELEM_READ_WORD); + if (ret) { + dev_err(&pdev->dev, "IOSS TELEM_INFO Read Failed\n"); + return ret; + } + + /* Get telemetry Info */ + events = (read_buf & TELEM_INFO_SRAMEVTS_MASK) >> + TELEM_INFO_SRAMEVTS_SHIFT; + event_regs = read_buf & TELEM_INFO_NENABLES_MASK; + if ((events < TELEM_MAX_EVENTS_SRAM) || + (event_regs < TELEM_MAX_EVENTS_SRAM)) { + dev_err(&pdev->dev, "IOSS:Insufficient Space for SRAM Trace\n"); + dev_err(&pdev->dev, "SRAM Events %d; Event Regs %d\n", + events, event_regs); + return -ENOMEM; + } + + telm_conf->ioss_config.min_period = TELEM_MIN_PERIOD(read_buf); + telm_conf->ioss_config.max_period = TELEM_MAX_PERIOD(read_buf); + + /* PUNIT Mailbox Setup */ + ret = intel_punit_ipc_command(IPC_PUNIT_BIOS_READ_TELE_INFO, 0, 0, + NULL, &read_buf); + if (ret) { + dev_err(&pdev->dev, "PSS TELEM_INFO Read Failed\n"); + return ret; + } + + /* Get telemetry Info */ + events = (read_buf & TELEM_INFO_SRAMEVTS_MASK) >> + TELEM_INFO_SRAMEVTS_SHIFT; + event_regs = read_buf & TELEM_INFO_SRAMEVTS_MASK; + if ((events < TELEM_MAX_EVENTS_SRAM) || + (event_regs < TELEM_MAX_EVENTS_SRAM)) { + dev_err(&pdev->dev, "PSS:Insufficient Space for SRAM Trace\n"); + dev_err(&pdev->dev, "SRAM Events %d; Event Regs %d\n", + events, event_regs); + return -ENOMEM; + } + + telm_conf->pss_config.min_period = TELEM_MIN_PERIOD(read_buf); + telm_conf->pss_config.max_period = TELEM_MAX_PERIOD(read_buf); + + pss_evtconfig.evtmap = NULL; + pss_evtconfig.num_evts = TELEM_MAX_OS_ALLOCATED_EVENTS; + pss_evtconfig.period = TELEM_SAMPLING_DEFAULT_PERIOD; + + ioss_evtconfig.evtmap = NULL; + ioss_evtconfig.num_evts = TELEM_MAX_OS_ALLOCATED_EVENTS; + ioss_evtconfig.period = TELEM_SAMPLING_DEFAULT_PERIOD; + + ret = telemetry_setup_evtconfig(pss_evtconfig, ioss_evtconfig, + TELEM_RESET); + if (ret) { + dev_err(&pdev->dev, "TELEMTRY Setup Failed\n"); + return ret; + } + return 0; +} + +static int telemetry_plt_update_events(struct telemetry_evtconfig pss_evtconfig, + struct telemetry_evtconfig ioss_evtconfig) +{ + int ret; + + if ((pss_evtconfig.num_evts > 0) && + (TELEM_SAMPLE_PERIOD_INVALID(pss_evtconfig.period))) { + pr_err("PSS Sampling Period Out of Range\n"); + return -EINVAL; + } + + if ((ioss_evtconfig.num_evts > 0) && + (TELEM_SAMPLE_PERIOD_INVALID(ioss_evtconfig.period))) { + pr_err("IOSS Sampling Period Out of Range\n"); + return -EINVAL; + } + + ret = telemetry_setup_evtconfig(pss_evtconfig, ioss_evtconfig, + TELEM_UPDATE); + if (ret) + pr_err("TELEMTRY Config Failed\n"); + + return ret; +} + + +static int telemetry_plt_set_sampling_period(u8 pss_period, u8 ioss_period) +{ + u32 telem_ctrl = 0; + int ret; + + mutex_lock(&(telm_conf->telem_lock)); + if (ioss_period) { + if (TELEM_SAMPLE_PERIOD_INVALID(ioss_period)) { + pr_err("IOSS Sampling Period Out of Range\n"); + ret = -EINVAL; + goto out; + } + + /* Get telemetry EVENT CTL */ + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_READ, NULL, 0, + &telem_ctrl, IOSS_TELEM_READ_WORD); + if (ret) { + pr_err("IOSS TELEM_CTRL Read Failed\n"); + goto out; + } + + /* Disable Telemetry */ + TELEM_DISABLE(telem_ctrl); + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, + NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Disable Write Failed\n"); + goto out; + } + + /* Enable Periodic Telemetry Events and enable SRAM trace */ + TELEM_CLEAR_SAMPLE_PERIOD(telem_ctrl); + TELEM_ENABLE_SRAM_EVT_TRACE(telem_ctrl); + TELEM_ENABLE_PERIODIC(telem_ctrl); + telem_ctrl |= ioss_period; + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_EVENT_CTL_WRITE, + (u8 *)&telem_ctrl, + IOSS_TELEM_EVT_CTRL_WRITE_SIZE, + NULL, 0); + if (ret) { + pr_err("IOSS TELEM_CTRL Event Enable Write Failed\n"); + goto out; + } + telm_conf->ioss_config.curr_period = ioss_period; + } + + if (pss_period) { + if (TELEM_SAMPLE_PERIOD_INVALID(pss_period)) { + pr_err("PSS Sampling Period Out of Range\n"); + ret = -EINVAL; + goto out; + } + + /* Get telemetry EVENT CTL */ + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_READ_TELE_EVENT_CTRL, + 0, 0, NULL, &telem_ctrl); + if (ret) { + pr_err("PSS TELEM_CTRL Read Failed\n"); + goto out; + } + + /* Disable Telemetry */ + TELEM_DISABLE(telem_ctrl); + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Disable Write Failed\n"); + goto out; + } + + /* Enable Periodic Telemetry Events and enable SRAM trace */ + TELEM_CLEAR_SAMPLE_PERIOD(telem_ctrl); + TELEM_ENABLE_SRAM_EVT_TRACE(telem_ctrl); + TELEM_ENABLE_PERIODIC(telem_ctrl); + telem_ctrl |= pss_period; + + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_WRITE_TELE_EVENT_CTRL, + 0, 0, &telem_ctrl, NULL); + if (ret) { + pr_err("PSS TELEM_CTRL Event Enable Write Failed\n"); + goto out; + } + telm_conf->pss_config.curr_period = pss_period; + } + +out: + mutex_unlock(&(telm_conf->telem_lock)); + return ret; +} + + +static int telemetry_plt_get_sampling_period(u8 *pss_min_period, + u8 *pss_max_period, + u8 *ioss_min_period, + u8 *ioss_max_period) +{ + *pss_min_period = telm_conf->pss_config.min_period; + *pss_max_period = telm_conf->pss_config.max_period; + *ioss_min_period = telm_conf->ioss_config.min_period; + *ioss_max_period = telm_conf->ioss_config.max_period; + + return 0; +} + + +static int telemetry_plt_reset_events(void) +{ + struct telemetry_evtconfig pss_evtconfig, ioss_evtconfig; + int ret; + + pss_evtconfig.evtmap = NULL; + pss_evtconfig.num_evts = TELEM_MAX_OS_ALLOCATED_EVENTS; + pss_evtconfig.period = TELEM_SAMPLING_DEFAULT_PERIOD; + + ioss_evtconfig.evtmap = NULL; + ioss_evtconfig.num_evts = TELEM_MAX_OS_ALLOCATED_EVENTS; + ioss_evtconfig.period = TELEM_SAMPLING_DEFAULT_PERIOD; + + ret = telemetry_setup_evtconfig(pss_evtconfig, ioss_evtconfig, + TELEM_RESET); + if (ret) + pr_err("TELEMTRY Reset Failed\n"); + + return ret; +} + + +static int telemetry_plt_get_eventconfig(struct telemetry_evtconfig *pss_config, + struct telemetry_evtconfig *ioss_config, + int pss_len, int ioss_len) +{ + u32 *pss_evtmap, *ioss_evtmap; + u32 index; + + pss_evtmap = pss_config->evtmap; + ioss_evtmap = ioss_config->evtmap; + + mutex_lock(&(telm_conf->telem_lock)); + pss_config->num_evts = telm_conf->pss_config.ssram_evts_used; + ioss_config->num_evts = telm_conf->ioss_config.ssram_evts_used; + + pss_config->period = telm_conf->pss_config.curr_period; + ioss_config->period = telm_conf->ioss_config.curr_period; + + if ((pss_len < telm_conf->pss_config.ssram_evts_used) || + (ioss_len < telm_conf->ioss_config.ssram_evts_used)) { + mutex_unlock(&(telm_conf->telem_lock)); + return -EINVAL; + } + + for (index = 0; index < telm_conf->pss_config.ssram_evts_used; + index++) { + pss_evtmap[index] = + telm_conf->pss_config.telem_evts[index].evt_id; + } + + for (index = 0; index < telm_conf->ioss_config.ssram_evts_used; + index++) { + ioss_evtmap[index] = + telm_conf->ioss_config.telem_evts[index].evt_id; + } + + mutex_unlock(&(telm_conf->telem_lock)); + return 0; +} + + +static int telemetry_plt_add_events(u8 num_pss_evts, u8 num_ioss_evts, + u32 *pss_evtmap, u32 *ioss_evtmap) +{ + struct telemetry_evtconfig pss_evtconfig, ioss_evtconfig; + int ret; + + pss_evtconfig.evtmap = pss_evtmap; + pss_evtconfig.num_evts = num_pss_evts; + pss_evtconfig.period = telm_conf->pss_config.curr_period; + + ioss_evtconfig.evtmap = ioss_evtmap; + ioss_evtconfig.num_evts = num_ioss_evts; + ioss_evtconfig.period = telm_conf->ioss_config.curr_period; + + ret = telemetry_setup_evtconfig(pss_evtconfig, ioss_evtconfig, + TELEM_ADD); + if (ret) + pr_err("TELEMTRY ADD Failed\n"); + + return ret; +} + +static int telem_evtlog_read(enum telemetry_unit telem_unit, + struct telem_ssram_region *ssram_region, u8 len) +{ + struct telemetry_unit_config *unit_config; + u64 timestamp_prev, timestamp_next; + int ret, index, timeout = 0; + + ret = telem_get_unitconfig(telem_unit, &unit_config); + if (ret < 0) + return ret; + + if (len > unit_config->ssram_evts_used) + len = unit_config->ssram_evts_used; + + do { + timestamp_prev = readq(unit_config->regmap); + if (!timestamp_prev) { + pr_err("Ssram under update. Please Try Later\n"); + return -EBUSY; + } + + ssram_region->start_time = readq(unit_config->regmap + + TELEM_SSRAM_STARTTIME_OFFSET); + + for (index = 0; index < len; index++) { + ssram_region->events[index] = + readq(unit_config->regmap + TELEM_SSRAM_EVTLOG_OFFSET + + BYTES_PER_LONG*index); + } + + timestamp_next = readq(unit_config->regmap); + if (!timestamp_next) { + pr_err("Ssram under update. Please Try Later\n"); + return -EBUSY; + } + + if (timeout++ > TELEM_SSRAM_READ_TIMEOUT) { + pr_err("Timeout while reading Events\n"); + return -EBUSY; + } + + } while (timestamp_prev != timestamp_next); + + ssram_region->timestamp = timestamp_next; + + return len; +} + +static int telemetry_plt_raw_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, + int len, int log_all_evts) +{ + int index, idx1, ret, readlen = len; + struct telem_ssram_region ssram_region; + struct telemetry_evtmap *evtmap; + + switch (telem_unit) { + case TELEM_PSS: + evtmap = telm_conf->pss_config.telem_evts; + break; + + case TELEM_IOSS: + evtmap = telm_conf->ioss_config.telem_evts; + break; + + default: + pr_err("Unknown Telemetry Unit Specified %d\n", telem_unit); + return -EINVAL; + } + + if (!log_all_evts) + readlen = TELEM_MAX_EVENTS_SRAM; + + ret = telem_evtlog_read(telem_unit, &ssram_region, readlen); + if (ret < 0) + return ret; + + /* Invalid evt-id array specified via length mismatch */ + if ((!log_all_evts) && (len > ret)) + return -EINVAL; + + if (log_all_evts) + for (index = 0; index < ret; index++) { + evtlog[index].telem_evtlog = ssram_region.events[index]; + evtlog[index].telem_evtid = evtmap[index].evt_id; + } + else + for (index = 0, readlen = 0; (index < ret) && (readlen < len); + index++) { + for (idx1 = 0; idx1 < len; idx1++) { + /* Elements matched */ + if (evtmap[index].evt_id == + evtlog[idx1].telem_evtid) { + evtlog[idx1].telem_evtlog = + ssram_region.events[index]; + readlen++; + + break; + } + } + } + + return readlen; +} + +static int telemetry_plt_read_eventlog(enum telemetry_unit telem_unit, + struct telemetry_evtlog *evtlog, int len, int log_all_evts) +{ + int ret; + + mutex_lock(&(telm_conf->telem_lock)); + ret = telemetry_plt_raw_read_eventlog(telem_unit, evtlog, + len, log_all_evts); + mutex_unlock(&(telm_conf->telem_lock)); + + return ret; +} + +static int telemetry_plt_get_trace_verbosity(enum telemetry_unit telem_unit, + u32 *verbosity) +{ + u32 temp = 0; + int ret; + + if (verbosity == NULL) + return -EINVAL; + + mutex_lock(&(telm_conf->telem_trace_lock)); + switch (telem_unit) { + case TELEM_PSS: + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_READ_TELE_TRACE_CTRL, + 0, 0, NULL, &temp); + if (ret) { + pr_err("PSS TRACE_CTRL Read Failed\n"); + goto out; + } + + break; + + case TELEM_IOSS: + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_TRACE_CTL_READ, NULL, 0, &temp, + IOSS_TELEM_READ_WORD); + if (ret) { + pr_err("IOSS TRACE_CTL Read Failed\n"); + goto out; + } + + break; + + default: + pr_err("Unknown Telemetry Unit Specified %d\n", telem_unit); + ret = -EINVAL; + break; + } + TELEM_EXTRACT_VERBOSITY(temp, *verbosity); + +out: + mutex_unlock(&(telm_conf->telem_trace_lock)); + return ret; +} + +static int telemetry_plt_set_trace_verbosity(enum telemetry_unit telem_unit, + u32 verbosity) +{ + u32 temp = 0; + int ret; + + verbosity &= TELEM_TRC_VERBOSITY_MASK; + + mutex_lock(&(telm_conf->telem_trace_lock)); + switch (telem_unit) { + case TELEM_PSS: + ret = intel_punit_ipc_command( + IPC_PUNIT_BIOS_WRITE_TELE_TRACE_CTRL, + 0, 0, &verbosity, NULL); + if (ret) { + pr_err("PSS TRACE_CTRL Verbosity Set Failed\n"); + goto out; + } + break; + + case TELEM_IOSS: + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_TRACE_CTL_READ, NULL, 0, &temp, + IOSS_TELEM_READ_WORD); + if (ret) { + pr_err("IOSS TRACE_CTL Read Failed\n"); + goto out; + } + + TELEM_CLEAR_VERBOSITY_BITS(temp); + TELEM_SET_VERBOSITY_BITS(temp, verbosity); + + ret = intel_pmc_ipc_command(PMC_IPC_PMC_TELEMTRY, + IOSS_TELEM_TRACE_CTL_WRITE, (u8 *)&temp, + IOSS_TELEM_WRITE_FOURBYTES, NULL, 0); + if (ret) { + pr_err("IOSS TRACE_CTL Verbosity Set Failed\n"); + goto out; + } + break; + + default: + pr_err("Unknown Telemetry Unit Specified %d\n", telem_unit); + ret = -EINVAL; + break; + } + +out: + mutex_unlock(&(telm_conf->telem_trace_lock)); + return ret; +} + +static struct telemetry_core_ops telm_pltops = { + .get_trace_verbosity = telemetry_plt_get_trace_verbosity, + .set_trace_verbosity = telemetry_plt_set_trace_verbosity, + .set_sampling_period = telemetry_plt_set_sampling_period, + .get_sampling_period = telemetry_plt_get_sampling_period, + .raw_read_eventlog = telemetry_plt_raw_read_eventlog, + .get_eventconfig = telemetry_plt_get_eventconfig, + .update_events = telemetry_plt_update_events, + .read_eventlog = telemetry_plt_read_eventlog, + .reset_events = telemetry_plt_reset_events, + .add_events = telemetry_plt_add_events, +}; + +static int telemetry_pltdrv_probe(struct platform_device *pdev) +{ + struct resource *res0 = NULL, *res1 = NULL; + const struct x86_cpu_id *id; + int size, ret = -ENOMEM; + + id = x86_match_cpu(telemetry_cpu_ids); + if (!id) + return -ENODEV; + + telm_conf = (struct telemetry_plt_config *)id->driver_data; + + res0 = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res0) { + ret = -EINVAL; + goto out; + } + size = resource_size(res0); + if (!devm_request_mem_region(&pdev->dev, res0->start, size, + pdev->name)) { + ret = -EBUSY; + goto out; + } + telm_conf->pss_config.ssram_base_addr = res0->start; + telm_conf->pss_config.ssram_size = size; + + res1 = platform_get_resource(pdev, IORESOURCE_MEM, 1); + if (!res1) { + ret = -EINVAL; + goto out; + } + size = resource_size(res1); + if (!devm_request_mem_region(&pdev->dev, res1->start, size, + pdev->name)) { + ret = -EBUSY; + goto out; + } + + telm_conf->ioss_config.ssram_base_addr = res1->start; + telm_conf->ioss_config.ssram_size = size; + + telm_conf->pss_config.regmap = ioremap_nocache( + telm_conf->pss_config.ssram_base_addr, + telm_conf->pss_config.ssram_size); + if (!telm_conf->pss_config.regmap) { + ret = -ENOMEM; + goto out; + } + + telm_conf->ioss_config.regmap = ioremap_nocache( + telm_conf->ioss_config.ssram_base_addr, + telm_conf->ioss_config.ssram_size); + if (!telm_conf->ioss_config.regmap) { + ret = -ENOMEM; + goto out; + } + + mutex_init(&telm_conf->telem_lock); + mutex_init(&telm_conf->telem_trace_lock); + + ret = telemetry_setup(pdev); + if (ret) + goto out; + + ret = telemetry_set_pltdata(&telm_pltops, telm_conf); + if (ret) { + dev_err(&pdev->dev, "TELEMTRY Set Pltops Failed.\n"); + goto out; + } + + return 0; + +out: + if (res0) + release_mem_region(res0->start, resource_size(res0)); + if (res1) + release_mem_region(res1->start, resource_size(res1)); + if (telm_conf->pss_config.regmap) + iounmap(telm_conf->pss_config.regmap); + if (telm_conf->ioss_config.regmap) + iounmap(telm_conf->ioss_config.regmap); + dev_err(&pdev->dev, "TELEMTRY Setup Failed.\n"); + + return ret; +} + +static int telemetry_pltdrv_remove(struct platform_device *pdev) +{ + telemetry_clear_pltdata(); + iounmap(telm_conf->pss_config.regmap); + iounmap(telm_conf->ioss_config.regmap); + + return 0; +} + +static struct platform_driver telemetry_soc_driver = { + .probe = telemetry_pltdrv_probe, + .remove = telemetry_pltdrv_remove, + .driver = { + .name = DRIVER_NAME, + }, +}; + +static int __init telemetry_module_init(void) +{ + pr_info(DRIVER_NAME ": version %s loaded\n", DRIVER_VERSION); + return platform_driver_register(&telemetry_soc_driver); +} + +static void __exit telemetry_module_exit(void) +{ + platform_driver_unregister(&telemetry_soc_driver); +} + +device_initcall(telemetry_module_init); +module_exit(telemetry_module_exit); + +MODULE_AUTHOR("Souvik Kumar Chakravarty "); +MODULE_DESCRIPTION("Intel SoC Telemetry Platform Driver"); +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/drivers/pnp/isapnp/core.c +++ linux-4.4.0/drivers/pnp/isapnp/core.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include "../base.h" @@ -990,7 +991,7 @@ .disable = isapnp_disable_resources, }; -static int __init isapnp_init(void) +static int __init real_isapnp_init(void) { int cards; struct pnp_card *card; @@ -1084,6 +1085,16 @@ return 0; } +static void __init async_isapnp_init(void *unused, async_cookie_t cookie) +{ + (void)real_isapnp_init(); +} + +static int __init isapnp_init(void) +{ + async_schedule(async_isapnp_init, NULL); + return 0; +} device_initcall(isapnp_init); /* format is: noisapnp */ --- linux-4.4.0.orig/drivers/rtc/interface.c +++ linux-4.4.0/drivers/rtc/interface.c @@ -748,9 +748,23 @@ */ static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) { + struct timerqueue_node *next = timerqueue_getnext(&rtc->timerqueue); + struct rtc_time tm; + ktime_t now; + timer->enabled = 1; + __rtc_read_time(rtc, &tm); + now = rtc_tm_to_ktime(tm); + + /* Skip over expired timers */ + while (next) { + if (next->expires.tv64 >= now.tv64) + break; + next = timerqueue_iterate_next(next); + } + timerqueue_add(&rtc->timerqueue, &timer->node); - if (&timer->node == timerqueue_getnext(&rtc->timerqueue)) { + if (!next) { struct rtc_wkalrm alarm; int err; alarm.time = rtc_ktime_to_tm(timer->node.expires); --- linux-4.4.0.orig/drivers/s390/cio/chp.c +++ linux-4.4.0/drivers/s390/cio/chp.c @@ -139,11 +139,11 @@ device = container_of(kobj, struct device, kobj); chp = to_channelpath(device); - if (!chp->cmg_chars) + if (chp->cmg == -1) return 0; - return memory_read_from_buffer(buf, count, &off, - chp->cmg_chars, sizeof(struct cmg_chars)); + return memory_read_from_buffer(buf, count, &off, &chp->cmg_chars, + sizeof(chp->cmg_chars)); } static struct bin_attribute chp_measurement_chars_attr = { @@ -416,7 +416,8 @@ * chp_update_desc - update channel-path description * @chp - channel-path * - * Update the channel-path description of the specified channel-path. + * Update the channel-path description of the specified channel-path + * including channel measurement related information. * Return zero on success, non-zero otherwise. */ int chp_update_desc(struct channel_path *chp) @@ -428,8 +429,10 @@ return rc; rc = chsc_determine_fmt1_channel_path_desc(chp->chpid, &chp->desc_fmt1); + if (rc) + return rc; - return rc; + return chsc_get_channel_measurement_chars(chp); } /** @@ -466,14 +469,6 @@ ret = -ENODEV; goto out_free; } - /* Get channel-measurement characteristics. */ - if (css_chsc_characteristics.scmc && css_chsc_characteristics.secm) { - ret = chsc_get_channel_measurement_chars(chp); - if (ret) - goto out_free; - } else { - chp->cmg = -1; - } dev_set_name(&chp->dev, "chp%x.%02x", chpid.cssid, chpid.id); /* make it known to the system */ --- linux-4.4.0.orig/drivers/s390/cio/chp.h +++ linux-4.4.0/drivers/s390/cio/chp.h @@ -48,7 +48,7 @@ /* Channel-measurement related stuff: */ int cmg; int shared; - void *cmg_chars; + struct cmg_chars cmg_chars; }; /* Return channel_path struct for given chpid. */ --- linux-4.4.0.orig/drivers/s390/cio/chsc.c +++ linux-4.4.0/drivers/s390/cio/chsc.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -224,8 +225,9 @@ void chsc_chp_offline(struct chp_id chpid) { - char dbf_txt[15]; + struct channel_path *chp = chpid_to_chp(chpid); struct chp_link link; + char dbf_txt[15]; sprintf(dbf_txt, "chpr%x.%02x", chpid.cssid, chpid.id); CIO_TRACE_EVENT(2, dbf_txt); @@ -236,6 +238,11 @@ link.chpid = chpid; /* Wait until previous actions have settled. */ css_wait_for_slow_path(); + + mutex_lock(&chp->lock); + chp_update_desc(chp); + mutex_unlock(&chp->lock); + for_each_subchannel_staged(s390_subchannel_remove_chpid, NULL, &link); } @@ -690,8 +697,9 @@ void chsc_chp_online(struct chp_id chpid) { - char dbf_txt[15]; + struct channel_path *chp = chpid_to_chp(chpid); struct chp_link link; + char dbf_txt[15]; sprintf(dbf_txt, "cadd%x.%02x", chpid.cssid, chpid.id); CIO_TRACE_EVENT(2, dbf_txt); @@ -701,6 +709,11 @@ link.chpid = chpid; /* Wait until previous actions have settled. */ css_wait_for_slow_path(); + + mutex_lock(&chp->lock); + chp_update_desc(chp); + mutex_unlock(&chp->lock); + for_each_subchannel_staged(__s390_process_res_acc, NULL, &link); css_schedule_reprobe(); @@ -967,22 +980,19 @@ chsc_initialize_cmg_chars(struct channel_path *chp, u8 cmcv, struct cmg_chars *chars) { - struct cmg_chars *cmg_chars; int i, mask; - cmg_chars = chp->cmg_chars; for (i = 0; i < NR_MEASUREMENT_CHARS; i++) { mask = 0x80 >> (i + 3); if (cmcv & mask) - cmg_chars->values[i] = chars->values[i]; + chp->cmg_chars.values[i] = chars->values[i]; else - cmg_chars->values[i] = 0; + chp->cmg_chars.values[i] = 0; } } int chsc_get_channel_measurement_chars(struct channel_path *chp) { - struct cmg_chars *cmg_chars; int ccode, ret; struct { @@ -1006,10 +1016,11 @@ u32 data[NR_MEASUREMENT_CHARS]; } __attribute__ ((packed)) *scmc_area; - chp->cmg_chars = NULL; - cmg_chars = kmalloc(sizeof(*cmg_chars), GFP_KERNEL); - if (!cmg_chars) - return -ENOMEM; + chp->shared = -1; + chp->cmg = -1; + + if (!css_chsc_characteristics.scmc || !css_chsc_characteristics.secm) + return 0; spin_lock_irq(&chsc_page_lock); memset(chsc_page, 0, PAGE_SIZE); @@ -1031,25 +1042,19 @@ scmc_area->response.code); goto out; } - if (scmc_area->not_valid) { - chp->cmg = -1; - chp->shared = -1; + if (scmc_area->not_valid) goto out; - } + chp->cmg = scmc_area->cmg; chp->shared = scmc_area->shared; if (chp->cmg != 2 && chp->cmg != 3) { /* No cmg-dependent data. */ goto out; } - chp->cmg_chars = cmg_chars; chsc_initialize_cmg_chars(chp, scmc_area->cmcv, (struct cmg_chars *) &scmc_area->data); out: spin_unlock_irq(&chsc_page_lock); - if (!chp->cmg_chars) - kfree(cmg_chars); - return ret; } --- linux-4.4.0.orig/drivers/s390/net/qeth_l2_main.c +++ linux-4.4.0/drivers/s390/net/qeth_l2_main.c @@ -1126,6 +1126,7 @@ qeth_l2_request_initial_mac(card); SET_NETDEV_DEV(card->dev, &card->gdev->dev); netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT); + netif_carrier_off(card->dev); return register_netdev(card->dev); } --- linux-4.4.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-4.4.0/drivers/s390/net/qeth_l3_main.c @@ -3220,6 +3220,7 @@ SET_NETDEV_DEV(card->dev, &card->gdev->dev); netif_napi_add(card->dev, &card->napi, qeth_l3_poll, QETH_NAPI_WEIGHT); + netif_carrier_off(card->dev); return register_netdev(card->dev); } --- linux-4.4.0.orig/drivers/scsi/be2iscsi/be_main.c +++ linux-4.4.0/drivers/scsi/be2iscsi/be_main.c @@ -232,20 +232,20 @@ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!aborted_task || !aborted_task->sc) { /* we raced */ - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return SUCCESS; } aborted_io_task = aborted_task->dd_data; if (!aborted_io_task->scsi_cmnd) { /* raced or invalid command */ - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return SUCCESS; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* Invalidate WRB Posted for this Task */ AMAP_SET_BITS(struct amap_iscsi_wrb, invld, aborted_io_task->pwrb_handle->pwrb, @@ -310,9 +310,9 @@ /* invalidate iocbs */ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return FAILED; } conn = session->leadconn; @@ -341,7 +341,7 @@ num_invalidate++; inv_tbl++; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); inv_tbl = phba->inv_tbl; nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev, @@ -1137,9 +1137,9 @@ return 1; } - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); __iscsi_complete_pdu(conn, (struct iscsi_hdr *)ppdu, pbuffer, buf_len); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); return 0; } @@ -1562,7 +1562,7 @@ pwrb = pwrb_handle->pwrb; type = ((struct beiscsi_io_task *)task->dd_data)->wrb_type; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); switch (type) { case HWH_TYPE_IO: case HWH_TYPE_IO_RD: @@ -1601,7 +1601,7 @@ break; } - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); } static struct list_head *hwi_get_async_busy_list(struct hwi_async_pdu_context @@ -4691,9 +4691,9 @@ * login/startup related tasks. */ beiscsi_conn->login_in_progress = 0; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); beiscsi_cleanup_task(task); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); pwrb_handle = alloc_wrb_handle(phba, beiscsi_conn->beiscsi_conn_cid, &pwrb_context); --- linux-4.4.0.orig/drivers/scsi/bnx2i/bnx2i_hwi.c +++ linux-4.4.0/drivers/scsi/bnx2i/bnx2i_hwi.c @@ -1363,7 +1363,7 @@ u32 datalen = 0; resp_cqe = (struct bnx2i_cmd_response *)cqe; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); task = iscsi_itt_to_task(conn, resp_cqe->itt & ISCSI_CMD_RESPONSE_INDEX); if (!task) @@ -1434,7 +1434,7 @@ __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, conn->data, datalen); fail: - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); return 0; } @@ -1459,7 +1459,7 @@ int pad_len; login = (struct bnx2i_login_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, login->itt & ISCSI_LOGIN_RESPONSE_INDEX); if (!task) @@ -1502,7 +1502,7 @@ bnx2i_conn->gen_pdu.resp_buf, bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1527,7 +1527,7 @@ int pad_len; text = (struct bnx2i_text_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, text->itt & ISCSI_LOGIN_RESPONSE_INDEX); if (!task) goto done; @@ -1563,7 +1563,7 @@ bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1586,7 +1586,7 @@ struct iscsi_tm_rsp *resp_hdr; tmf_cqe = (struct bnx2i_tmf_response *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, tmf_cqe->itt & ISCSI_TMF_RESPONSE_INDEX); if (!task) @@ -1602,7 +1602,7 @@ __iscsi_complete_pdu(conn, (struct iscsi_hdr *)resp_hdr, NULL, 0); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1625,7 +1625,7 @@ struct iscsi_logout_rsp *resp_hdr; logout = (struct bnx2i_logout_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, logout->itt & ISCSI_LOGOUT_RESPONSE_INDEX); if (!task) @@ -1649,7 +1649,7 @@ bnx2i_conn->ep->state = EP_STATE_LOGOUT_RESP_RCVD; done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1670,12 +1670,12 @@ struct iscsi_task *task; nop_in = (struct bnx2i_nop_in_msg *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, nop_in->itt & ISCSI_NOP_IN_MSG_INDEX); if (task) __iscsi_put_task(task); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } /** @@ -1714,7 +1714,7 @@ nop_in = (struct bnx2i_nop_in_msg *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); hdr = (struct iscsi_nopin *)&bnx2i_conn->gen_pdu.resp_hdr; memset(hdr, 0, sizeof(struct iscsi_hdr)); hdr->opcode = nop_in->op_code; @@ -1740,7 +1740,7 @@ } done: __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return tgt_async_nop; } @@ -1773,7 +1773,7 @@ return; } - spin_lock(&session->back_lock); + spin_lock(&session->lock); resp_hdr = (struct iscsi_async *) &bnx2i_conn->gen_pdu.resp_hdr; memset(resp_hdr, 0, sizeof(struct iscsi_hdr)); resp_hdr->opcode = async_cqe->op_code; @@ -1792,7 +1792,7 @@ __iscsi_complete_pdu(bnx2i_conn->cls_conn->dd_data, (struct iscsi_hdr *)resp_hdr, NULL, 0); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } @@ -1819,7 +1819,7 @@ } else bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); - spin_lock(&session->back_lock); + spin_lock(&session->lock); hdr = (struct iscsi_reject *) &bnx2i_conn->gen_pdu.resp_hdr; memset(hdr, 0, sizeof(struct iscsi_hdr)); hdr->opcode = reject->op_code; @@ -1830,7 +1830,7 @@ hdr->ffffffff = cpu_to_be32(RESERVED_ITT); __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, conn->data, reject->data_length); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } /** @@ -1850,13 +1850,13 @@ struct iscsi_task *task; cmd_clean_rsp = (struct bnx2i_cleanup_response *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, cmd_clean_rsp->itt & ISCSI_CLEANUP_RESPONSE_INDEX); if (!task) printk(KERN_ALERT "bnx2i: cmd clean ITT %x not active\n", cmd_clean_rsp->itt & ISCSI_CLEANUP_RESPONSE_INDEX); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); complete(&bnx2i_conn->cmd_cleanup_cmpl); } @@ -1923,11 +1923,11 @@ int rc = 0; int cpu; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data, cqe->itt & ISCSI_CMD_RESPONSE_INDEX); if (!task || !task->sc) { - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return -EINVAL; } sc = task->sc; @@ -1937,7 +1937,7 @@ else cpu = sc->request->cpu; - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); p = &per_cpu(bnx2i_percpu, cpu); spin_lock(&p->p_work_lock); --- linux-4.4.0.orig/drivers/scsi/bnx2i/bnx2i_iscsi.c +++ linux-4.4.0/drivers/scsi/bnx2i/bnx2i_iscsi.c @@ -1172,12 +1172,10 @@ if (task->state == ISCSI_TASK_ABRT_TMF) { bnx2i_send_cmd_cleanup_req(hba, task->dd_data); - spin_unlock_bh(&conn->session->back_lock); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); wait_for_completion_timeout(&bnx2i_conn->cmd_cleanup_cmpl, msecs_to_jiffies(ISCSI_CMD_CLEANUP_TIMEOUT)); - spin_lock_bh(&conn->session->frwd_lock); - spin_lock_bh(&conn->session->back_lock); + spin_lock_bh(&conn->session->lock); } bnx2i_iscsi_unmap_sg_list(task->dd_data); } @@ -2063,7 +2061,7 @@ goto out; if (session) { - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (bnx2i_ep->state != EP_STATE_TCP_FIN_RCVD) { if (session->state == ISCSI_STATE_LOGGING_OUT) { if (bnx2i_ep->state == EP_STATE_LOGOUT_SENT) { @@ -2079,7 +2077,7 @@ } else close = 1; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); } bnx2i_ep->state = EP_STATE_DISCONN_START; --- linux-4.4.0.orig/drivers/scsi/cxlflash/common.h +++ linux-4.4.0/drivers/scsi/cxlflash/common.h @@ -165,6 +165,8 @@ struct sisl_host_map __iomem *host_map; /* MC host map */ struct sisl_ctrl_map __iomem *ctrl_map; /* MC control map */ + struct kref mapcount; + ctx_hndl_t ctx_hndl; /* master's context handle */ u64 *hrrq_start; u64 *hrrq_end; --- linux-4.4.0.orig/drivers/scsi/cxlflash/main.c +++ linux-4.4.0/drivers/scsi/cxlflash/main.c @@ -368,6 +368,7 @@ no_room: afu->read_room = true; + kref_get(&cfg->afu->mapcount); schedule_work(&cfg->work_q); rc = SCSI_MLQUEUE_HOST_BUSY; goto out; @@ -473,6 +474,16 @@ return rc; } +static void afu_unmap(struct kref *ref) +{ + struct afu *afu = container_of(ref, struct afu, mapcount); + + if (likely(afu->afu_map)) { + cxl_psa_unmap((void __iomem *)afu->afu_map); + afu->afu_map = NULL; + } +} + /** * cxlflash_driver_info() - information handler for this host driver * @host: SCSI host associated with device. @@ -503,6 +514,7 @@ ulong lock_flags; short lflag = 0; int rc = 0; + int kref_got = 0; dev_dbg_ratelimited(dev, "%s: (scp=%p) %d/%d/%d/%llu " "cdb=(%08X-%08X-%08X-%08X)\n", @@ -547,6 +559,9 @@ goto out; } + kref_get(&cfg->afu->mapcount); + kref_got = 1; + cmd->rcb.ctx_id = afu->ctx_hndl; cmd->rcb.port_sel = port_sel; cmd->rcb.lun_id = lun_to_lunid(scp->device->lun); @@ -587,6 +602,8 @@ } out: + if (kref_got) + kref_put(&afu->mapcount, afu_unmap); pr_devel("%s: returning rc=%d\n", __func__, rc); return rc; } @@ -632,20 +649,36 @@ * @cfg: Internal structure associated with the host. * * Safe to call with AFU in a partially allocated/initialized state. + * + * Cleans up all state associated with the command queue, and unmaps + * the MMIO space. + * + * - complete() will take care of commands we initiated (they'll be checked + * in as part of the cleanup that occurs after the completion) + * + * - cmd_checkin() will take care of entries that we did not initiate and that + * have not (and will not) complete because they are sitting on a [now stale] + * hardware queue */ static void stop_afu(struct cxlflash_cfg *cfg) { int i; struct afu *afu = cfg->afu; + struct afu_cmd *cmd; if (likely(afu)) { - for (i = 0; i < CXLFLASH_NUM_CMDS; i++) - complete(&afu->cmd[i].cevent); + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) { + cmd = &afu->cmd[i]; + complete(&cmd->cevent); + if (!atomic_read(&cmd->free)) + cmd_checkin(cmd); + } if (likely(afu->afu_map)) { cxl_psa_unmap((void __iomem *)afu->afu_map); afu->afu_map = NULL; } + kref_put(&afu->mapcount, afu_unmap); } } @@ -731,8 +764,8 @@ scsi_remove_host(cfg->host); /* fall through */ case INIT_STATE_AFU: - term_afu(cfg); cancel_work_sync(&cfg->work_q); + term_afu(cfg); case INIT_STATE_PCI: pci_release_regions(cfg->dev); pci_disable_device(pdev); @@ -1108,7 +1141,7 @@ {SISL_ASTATUS_FC1_OTHER, "other error", 1, CLR_FC_ERROR | LINK_RESET}, {SISL_ASTATUS_FC1_LOGO, "target initiated LOGO", 1, 0}, {SISL_ASTATUS_FC1_CRC_T, "CRC threshold exceeded", 1, LINK_RESET}, - {SISL_ASTATUS_FC1_LOGI_R, "login timed out, retrying", 1, 0}, + {SISL_ASTATUS_FC1_LOGI_R, "login timed out, retrying", 1, LINK_RESET}, {SISL_ASTATUS_FC1_LOGI_F, "login failed", 1, CLR_FC_ERROR}, {SISL_ASTATUS_FC1_LOGI_S, "login succeeded", 1, SCAN_HOST}, {SISL_ASTATUS_FC1_LINK_DN, "link down", 1, 0}, @@ -1316,6 +1349,7 @@ __func__, port); cfg->lr_state = LINK_RESET_REQUIRED; cfg->lr_port = port; + kref_get(&cfg->afu->mapcount); schedule_work(&cfg->work_q); } @@ -1336,6 +1370,7 @@ if (info->action & SCAN_HOST) { atomic_inc(&cfg->scan_host_needed); + kref_get(&cfg->afu->mapcount); schedule_work(&cfg->work_q); } } @@ -1731,6 +1766,7 @@ rc = -ENOMEM; goto err1; } + kref_init(&afu->mapcount); /* No byte reverse on reading afu_version or string will be backwards */ reg = readq(&afu->afu_map->global.regs.afu_version); @@ -1765,8 +1801,7 @@ return rc; err2: - cxl_psa_unmap((void __iomem *)afu->afu_map); - afu->afu_map = NULL; + kref_put(&afu->mapcount, afu_unmap); err1: term_mc(cfg, UNDO_START); goto out; @@ -2274,6 +2309,7 @@ * Device dependent values */ static struct dev_dependent_vals dev_corsa_vals = { CXLFLASH_MAX_SECTORS }; +static struct dev_dependent_vals dev_flash_gt_vals = { CXLFLASH_MAX_SECTORS }; /* * PCI device binding table @@ -2281,6 +2317,8 @@ static struct pci_device_id cxlflash_pci_table[] = { {PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CORSA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (kernel_ulong_t)&dev_corsa_vals}, + {PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_FLASH_GT, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, (kernel_ulong_t)&dev_flash_gt_vals}, {} }; @@ -2339,6 +2377,7 @@ if (atomic_dec_if_positive(&cfg->scan_host_needed) >= 0) scsi_scan_host(cfg->host); + kref_put(&afu->mapcount, afu_unmap); } /** @@ -2585,8 +2624,7 @@ */ static int __init init_cxlflash(void) { - pr_info("%s: IBM Power CXL Flash Adapter: %s\n", - __func__, CXLFLASH_DRIVER_DATE); + pr_info("%s: %s\n", __func__, CXLFLASH_ADAPTER_NAME); cxlflash_list_init(); --- linux-4.4.0.orig/drivers/scsi/cxlflash/main.h +++ linux-4.4.0/drivers/scsi/cxlflash/main.h @@ -22,10 +22,9 @@ #define CXLFLASH_NAME "cxlflash" #define CXLFLASH_ADAPTER_NAME "IBM POWER CXL Flash Adapter" -#define CXLFLASH_DRIVER_DATE "(August 13, 2015)" -#define PCI_DEVICE_ID_IBM_CORSA 0x04F0 -#define CXLFLASH_SUBS_DEV_ID 0x04F0 +#define PCI_DEVICE_ID_IBM_CORSA 0x04F0 +#define PCI_DEVICE_ID_IBM_FLASH_GT 0x0600 /* Since there is only one target, make it 0 */ #define CXLFLASH_TARGET 0 --- linux-4.4.0.orig/drivers/scsi/cxlflash/superpipe.c +++ linux-4.4.0/drivers/scsi/cxlflash/superpipe.c @@ -1372,7 +1372,7 @@ } ctx = cxl_dev_context_init(cfg->dev); - if (unlikely(IS_ERR_OR_NULL(ctx))) { + if (IS_ERR_OR_NULL(ctx)) { dev_err(dev, "%s: Could not initialize context %p\n", __func__, ctx); rc = -ENODEV; @@ -1380,7 +1380,7 @@ } ctxid = cxl_process_element(ctx); - if (unlikely((ctxid > MAX_CONTEXT) || (ctxid < 0))) { + if (unlikely((ctxid >= MAX_CONTEXT) || (ctxid < 0))) { dev_err(dev, "%s: ctxid (%d) invalid!\n", __func__, ctxid); rc = -EPERM; goto err2; @@ -1500,7 +1500,7 @@ struct afu *afu = cfg->afu; ctx = cxl_dev_context_init(cfg->dev); - if (unlikely(IS_ERR_OR_NULL(ctx))) { + if (IS_ERR_OR_NULL(ctx)) { dev_err(dev, "%s: Could not initialize context %p\n", __func__, ctx); rc = -ENODEV; @@ -1508,7 +1508,7 @@ } ctxid = cxl_process_element(ctx); - if (unlikely((ctxid > MAX_CONTEXT) || (ctxid < 0))) { + if (unlikely((ctxid >= MAX_CONTEXT) || (ctxid < 0))) { dev_err(dev, "%s: ctxid (%d) invalid!\n", __func__, ctxid); rc = -EPERM; goto err1; --- linux-4.4.0.orig/drivers/scsi/cxlflash/vlun.c +++ linux-4.4.0/drivers/scsi/cxlflash/vlun.c @@ -1008,6 +1008,8 @@ virt->last_lba = last_lba; virt->rsrc_handle = rsrc_handle; + if (lli->port_sel == BOTH_PORTS) + virt->hdr.return_flags |= DK_CXLFLASH_ALL_PORTS_ACTIVE; out: if (likely(ctxi)) put_context(ctxi); --- linux-4.4.0.orig/drivers/scsi/iscsi_tcp.c +++ linux-4.4.0/drivers/scsi/iscsi_tcp.c @@ -593,9 +593,9 @@ iscsi_sw_tcp_conn_restore_callbacks(conn); sock_put(sock->sk); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); tcp_sw_conn->sock = NULL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); sockfd_put(sock); } @@ -663,10 +663,10 @@ if (err) goto free_socket; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* bind iSCSI connection and socket */ tcp_sw_conn->sock = sock; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* setup Socket parameters */ sk = sock->sk; @@ -727,9 +727,9 @@ case ISCSI_PARAM_CONN_PORT: case ISCSI_PARAM_CONN_ADDRESS: case ISCSI_PARAM_LOCAL_PORT: - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (!tcp_sw_conn || !tcp_sw_conn->sock) { - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENOTCONN; } if (param == ISCSI_PARAM_LOCAL_PORT) @@ -738,7 +738,7 @@ else rc = kernel_getpeername(tcp_sw_conn->sock, (struct sockaddr *)&addr, &len); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); if (rc) return rc; @@ -767,23 +767,23 @@ if (!session) return -ENOTCONN; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn = session->leadconn; if (!conn) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return -ENOTCONN; } tcp_conn = conn->dd_data; tcp_sw_conn = tcp_conn->dd_data; if (!tcp_sw_conn->sock) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return -ENOTCONN; } rc = kernel_getsockname(tcp_sw_conn->sock, (struct sockaddr *)&addr, &len); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); if (rc) return rc; --- linux-4.4.0.orig/drivers/scsi/libiscsi.c +++ linux-4.4.0/drivers/scsi/libiscsi.c @@ -477,7 +477,7 @@ * iscsi_free_task - free a task * @task: iscsi cmd task * - * Must be called with session back_lock. + * Must be called with session lock. * This function returns the scsi command to scsi-ml or cleans * up mgmt tasks then returns the task to the pool. */ @@ -531,10 +531,9 @@ { struct iscsi_session *session = task->conn->session; - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); __iscsi_put_task(task); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); } EXPORT_SYMBOL_GPL(iscsi_put_task); @@ -543,7 +542,7 @@ * @task: iscsi cmd task * @state: state to complete task with * - * Must be called with session back_lock. + * Must be called with session lock. */ static void iscsi_complete_task(struct iscsi_task *task, int state) { @@ -582,7 +581,7 @@ * This is used when drivers do not need or cannot perform * lower level pdu processing. * - * Called with session back_lock + * Called with session lock */ void iscsi_complete_scsi_task(struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn) @@ -599,7 +598,7 @@ /* - * session back_lock must be held and if not called for a task that is + * session lock must be held and if not called for a task that is * still pending or from the xmit thread, then xmit thread must * be suspended. */ @@ -639,10 +638,7 @@ scsi_in(sc)->resid = scsi_in(sc)->length; } - /* regular RX path uses back_lock */ - spin_lock_bh(&conn->session->back_lock); iscsi_complete_task(task, state); - spin_unlock_bh(&conn->session->back_lock); } static int iscsi_prep_mgmt_task(struct iscsi_conn *conn, @@ -790,10 +786,7 @@ return task; free_task: - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); __iscsi_put_task(task); - spin_unlock_bh(&session->back_lock); return NULL; } @@ -804,10 +797,10 @@ struct iscsi_session *session = conn->session; int err = 0; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!__iscsi_conn_send_pdu(conn, hdr, data, data_size)) err = -EPERM; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return err; } EXPORT_SYMBOL_GPL(iscsi_conn_send_pdu); @@ -1071,19 +1064,14 @@ if (opcode != ISCSI_OP_NOOP_OUT) return 0; - if (rejected_pdu.itt == cpu_to_be32(ISCSI_RESERVED_TAG)) { + if (rejected_pdu.itt == cpu_to_be32(ISCSI_RESERVED_TAG)) /* * nop-out in response to target's nop-out rejected. * Just resend. */ - /* In RX path we are under back lock */ - spin_unlock(&conn->session->back_lock); - spin_lock(&conn->session->frwd_lock); iscsi_send_nopout(conn, (struct iscsi_nopin*)&rejected_pdu); - spin_unlock(&conn->session->frwd_lock); - spin_lock(&conn->session->back_lock); - } else { + else { struct iscsi_task *task; /* * Our nop as ping got dropped. We know the target @@ -1119,7 +1107,7 @@ * This should be used for mgmt tasks like login and nops, or if * the LDD's itt space does not include the session age. * - * The session back_lock must be held. + * The session lock must be held. */ struct iscsi_task *iscsi_itt_to_task(struct iscsi_conn *conn, itt_t itt) { @@ -1148,7 +1136,7 @@ * @datalen: len of data buffer * * Completes pdu processing by freeing any resources allocated at - * queuecommand or send generic. session back_lock must be held and verify + * queuecommand or send generic. session lock must be held and verify * itt must have been called. */ int __iscsi_complete_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, @@ -1185,12 +1173,7 @@ if (hdr->ttt == cpu_to_be32(ISCSI_RESERVED_TAG)) break; - /* In RX path we are under back lock */ - spin_unlock(&session->back_lock); - spin_lock(&session->frwd_lock); iscsi_send_nopout(conn, (struct iscsi_nopin*)hdr); - spin_unlock(&session->frwd_lock); - spin_lock(&session->back_lock); break; case ISCSI_OP_REJECT: rc = iscsi_handle_reject(conn, hdr, data, datalen); @@ -1297,9 +1280,9 @@ { int rc; - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); rc = __iscsi_complete_pdu(conn, hdr, data, datalen); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); return rc; } EXPORT_SYMBOL_GPL(iscsi_complete_pdu); @@ -1343,7 +1326,7 @@ * * This should be used for cmd tasks. * - * The session back_lock must be held. + * The session lock must be held. */ struct iscsi_task *iscsi_itt_to_ctask(struct iscsi_conn *conn, itt_t itt) { @@ -1373,15 +1356,15 @@ struct iscsi_conn *conn; struct device *dev; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn = session->leadconn; if (session->state == ISCSI_STATE_TERMINATE || !conn) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return; } dev = get_device(&conn->cls_conn->dev); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); if (!dev) return; /* @@ -1401,15 +1384,15 @@ { struct iscsi_session *session = conn->session; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_FAILED) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return; } if (conn->stop_stage == 0) session->state = ISCSI_STATE_FAILED; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx); @@ -1443,18 +1426,15 @@ return -ENODATA; __iscsi_get_task(task); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); rc = conn->session->tt->xmit_task(task); - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (!rc) { /* done with this task */ task->last_xfer = jiffies; conn->task = NULL; } - /* regular RX path uses back_lock */ - spin_lock(&conn->session->back_lock); __iscsi_put_task(task); - spin_unlock(&conn->session->back_lock); return rc; } @@ -1463,7 +1443,7 @@ * @task: task to requeue * * LLDs that need to run a task from the session workqueue should call - * this. The session frwd_lock must be held. This should only be called + * this. The session lock must be held. This should only be called * by software drivers. */ void iscsi_requeue_task(struct iscsi_task *task) @@ -1494,10 +1474,10 @@ struct iscsi_task *task; int rc = 0; - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) { ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n"); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENODATA; } @@ -1518,10 +1498,7 @@ struct iscsi_task, running); list_del_init(&conn->task->running); if (iscsi_prep_mgmt_task(conn, conn->task)) { - /* regular RX path uses back_lock */ - spin_lock_bh(&conn->session->back_lock); __iscsi_put_task(conn->task); - spin_unlock_bh(&conn->session->back_lock); conn->task = NULL; continue; } @@ -1583,11 +1560,11 @@ if (!list_empty(&conn->mgmtqueue)) goto check_mgmt; } - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENODATA; done: - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return rc; } @@ -1657,7 +1634,7 @@ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); reason = iscsi_session_chkready(cls_session); if (reason) { @@ -1743,13 +1720,13 @@ } session->queued_cmdsn++; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return 0; prepd_reject: iscsi_complete_task(task, ISCSI_TASK_REQUEUE_SCSIQ); reject: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); ISCSI_DBG_SESSION(session, "cmd 0x%x rejected (%d)\n", sc->cmnd[0], reason); return SCSI_MLQUEUE_TARGET_BUSY; @@ -1757,7 +1734,7 @@ prepd_fault: iscsi_complete_task(task, ISCSI_TASK_REQUEUE_SCSIQ); fault: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n", sc->cmnd[0], reason); if (!scsi_bidi_cmnd(sc)) @@ -1786,14 +1763,14 @@ struct iscsi_conn *conn = (struct iscsi_conn *)data; struct iscsi_session *session = conn->session; - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); if (conn->tmf_state == TMF_QUEUED) { conn->tmf_state = TMF_TIMEDOUT; ISCSI_DBG_EH(session, "tmf timedout\n"); /* unblock eh_abort() */ wake_up(&conn->ehwait); } - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); } static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn, @@ -1806,10 +1783,10 @@ task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0); if (!task) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_printk(KERN_ERR, conn, "Could not send TMF.\n"); iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); return -EPERM; } conn->tmfcmd_pdus_cnt++; @@ -1819,7 +1796,7 @@ add_timer(&conn->tmf_timer); ISCSI_DBG_EH(session, "tmf set timeout\n"); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); /* @@ -1838,7 +1815,7 @@ del_timer_sync(&conn->tmf_timer); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* if the session drops it will clean up the task */ if (age != session->age || session->state != ISCSI_STATE_LOGGED_IN) @@ -1874,7 +1851,7 @@ * iscsi_suspend_queue - suspend iscsi_queuecommand * @conn: iscsi conn to stop queueing IO on * - * This grabs the session frwd_lock to make sure no one is in + * This grabs the session lock to make sure no one is in * xmit_task/queuecommand, and then sets suspend to prevent * new commands from being queued. This only needs to be called * by offload drivers that need to sync a path like ep disconnect @@ -1883,9 +1860,9 @@ */ void iscsi_suspend_queue(struct iscsi_conn *conn) { - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); } EXPORT_SYMBOL_GPL(iscsi_suspend_queue); @@ -1944,7 +1921,7 @@ ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc); - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); task = (struct iscsi_task *)sc->SCp.ptr; if (!task) { /* @@ -2058,7 +2035,7 @@ done: if (task) task->last_timeout = jiffies; - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ? "timer reset" : "nh"); return rc; @@ -2070,7 +2047,7 @@ struct iscsi_session *session = conn->session; unsigned long recv_timeout, next_timeout = 0, last_recv; - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); if (session->state != ISCSI_STATE_LOGGED_IN) goto done; @@ -2087,7 +2064,7 @@ "last ping %lu, now %lu\n", conn->ping_timeout, conn->recv_timeout, last_recv, conn->last_ping, jiffies); - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_NOP_TIMEDOUT); return; } @@ -2105,7 +2082,7 @@ ISCSI_DBG_CONN(conn, "Setting next tmo %lu\n", next_timeout); mod_timer(&conn->transport_timer, next_timeout); done: - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); } static void iscsi_prep_abort_task_pdu(struct iscsi_task *task, @@ -2135,7 +2112,7 @@ ISCSI_DBG_EH(session, "aborting sc %p\n", sc); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * if session was ISCSI_STATE_IN_RECOVERY then we may not have * got the command. @@ -2143,7 +2120,7 @@ if (!sc->SCp.ptr) { ISCSI_DBG_EH(session, "sc never reached iscsi layer or " "it completed.\n"); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return SUCCESS; } @@ -2154,7 +2131,7 @@ */ if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN || sc->SCp.phase != session->age) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); ISCSI_DBG_EH(session, "failing abort due to dropped " "session.\n"); @@ -2195,7 +2172,7 @@ switch (conn->tmf_state) { case TMF_SUCCESS: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * stop tx side incase the target had sent a abort rsp but * the initiator was still writing out data. @@ -2206,15 +2183,15 @@ * good and have never sent us a successful tmf response * then sent more data for the cmd. */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); fail_scsi_task(task, DID_ABORT); conn->tmf_state = TMF_INITIAL; memset(hdr, 0, sizeof(*hdr)); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto success_unlocked; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto failed_unlocked; case TMF_NOT_FOUND: @@ -2233,7 +2210,7 @@ } success: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); success_unlocked: ISCSI_DBG_EH(session, "abort success [sc %p itt 0x%x]\n", sc, task->itt); @@ -2241,7 +2218,7 @@ return SUCCESS; failed: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); failed_unlocked: ISCSI_DBG_EH(session, "abort failed [sc %p itt 0x%x]\n", sc, task ? task->itt : 0); @@ -2275,7 +2252,7 @@ sc->device->lun); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * Just check if we are not logged in. We cannot check for * the phase because the reset could come from a ioctl. @@ -2302,7 +2279,7 @@ case TMF_SUCCESS: break; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto done; default: @@ -2311,21 +2288,21 @@ } rc = SUCCESS; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); memset(hdr, 0, sizeof(*hdr)); fail_scsi_tasks(conn, sc->device->lun, DID_ERROR); conn->tmf_state = TMF_INITIAL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto done; unlock: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); done: ISCSI_DBG_EH(session, "dev reset result = %s\n", rc == SUCCESS ? "SUCCESS" : "FAILED"); @@ -2338,13 +2315,13 @@ { struct iscsi_session *session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state != ISCSI_STATE_LOGGED_IN) { session->state = ISCSI_STATE_RECOVERY_FAILED; if (session->leadconn) wake_up(&session->leadconn->ehwait); } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); } EXPORT_SYMBOL_GPL(iscsi_session_recovery_timedout); @@ -2366,19 +2343,19 @@ conn = session->leadconn; mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_TERMINATE) { failed: ISCSI_DBG_EH(session, "failing session reset: Could not log back into " "%s, %s [age %d]\n", session->targetname, conn->persistent_address, session->age); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return FAILED; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); /* * we drop the lock here but the leadconn cannot be destoyed while @@ -2395,14 +2372,14 @@ flush_signals(current); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_LOGGED_IN) { ISCSI_DBG_EH(session, "session reset succeeded for %s,%s\n", session->targetname, conn->persistent_address); } else goto failed; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return SUCCESS; } @@ -2438,7 +2415,7 @@ session->targetname); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * Just check if we are not logged in. We cannot check for * the phase because the reset could come from a ioctl. @@ -2465,7 +2442,7 @@ case TMF_SUCCESS: break; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto done; default: @@ -2474,21 +2451,21 @@ } rc = SUCCESS; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); memset(hdr, 0, sizeof(*hdr)); fail_scsi_tasks(conn, -1, DID_ERROR); conn->tmf_state = TMF_INITIAL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto done; unlock: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); done: ISCSI_DBG_EH(session, "tgt %s reset result = %s\n", session->targetname, rc == SUCCESS ? "SUCCESS" : "FAILED"); @@ -2786,10 +2763,8 @@ session->max_r2t = 1; session->tt = iscsit; session->dd_data = cls_session->dd_data + sizeof(*session); - mutex_init(&session->eh_mutex); - spin_lock_init(&session->frwd_lock); - spin_lock_init(&session->back_lock); + spin_lock_init(&session->lock); /* initialize SCSI PDU commands pool */ if (iscsi_pool_init(&session->cmdpool, session->cmds_max, @@ -2903,14 +2878,14 @@ INIT_WORK(&conn->xmitwork, iscsi_xmitworker); /* allocate login_task used for the login/text sequences */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!kfifo_out(&session->cmdpool.queue, (void*)&conn->login_task, sizeof(void*))) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); goto login_task_alloc_fail; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); data = (char *) __get_free_pages(GFP_KERNEL, get_order(ISCSI_DEF_MAX_RECV_SEG_LEN)); @@ -2947,7 +2922,7 @@ del_timer_sync(&conn->transport_timer); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_CLEANUP_WAIT; if (session->leadconn == conn) { /* @@ -2956,24 +2931,21 @@ session->state = ISCSI_STATE_TERMINATE; wake_up(&conn->ehwait); } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* flush queued up work because we free the connection below */ iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); free_pages((unsigned long) conn->data, get_order(ISCSI_DEF_MAX_RECV_SEG_LEN)); kfree(conn->persistent_address); kfree(conn->local_ipaddr); - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, sizeof(void*)); - spin_unlock_bh(&session->back_lock); if (session->leadconn == conn) session->leadconn = NULL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); iscsi_destroy_conn(cls_conn); @@ -3011,7 +2983,7 @@ conn->ping_timeout = 5; } - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_STARTED; session->state = ISCSI_STATE_LOGGED_IN; session->queued_cmdsn = session->cmdsn; @@ -3040,7 +3012,7 @@ default: break; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_unblock_session(session->cls_session); wake_up(&conn->ehwait); @@ -3079,9 +3051,9 @@ int old_stop_stage; mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (conn->stop_stage == STOP_CONN_TERM) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return; } @@ -3098,14 +3070,14 @@ old_stop_stage = conn->stop_stage; conn->stop_stage = flag; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); del_timer_sync(&conn->transport_timer); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_STOPPED; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * for connection level recovery we should not calculate @@ -3126,11 +3098,11 @@ /* * flush queues. */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); fail_scsi_tasks(conn, -1, DID_TRANSPORT_DISRUPTED); fail_mgmt_tasks(session, conn); memset(&conn->tmhdr, 0, sizeof(conn->tmhdr)); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); } @@ -3157,10 +3129,10 @@ struct iscsi_session *session = cls_session->dd_data; struct iscsi_conn *conn = cls_conn->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (is_leading) session->leadconn = conn; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * Unblock xmitworker(), Login Phase will pass through. --- linux-4.4.0.orig/drivers/scsi/libiscsi_tcp.c +++ linux-4.4.0/drivers/scsi/libiscsi_tcp.c @@ -446,7 +446,7 @@ * iscsi_tcp_cleanup_task - free tcp_task resources * @task: iscsi task * - * must be called with session back_lock + * must be called with session lock */ void iscsi_tcp_cleanup_task(struct iscsi_task *task) { @@ -457,7 +457,6 @@ if (!task->sc) return; - spin_lock_bh(&tcp_task->queue2pool); /* flush task's r2t queues */ while (kfifo_out(&tcp_task->r2tqueue, (void*)&r2t, sizeof(void*))) { kfifo_in(&tcp_task->r2tpool.queue, (void*)&r2t, @@ -471,7 +470,6 @@ sizeof(void*)); tcp_task->r2t = NULL; } - spin_unlock_bh(&tcp_task->queue2pool); } EXPORT_SYMBOL_GPL(iscsi_tcp_cleanup_task); @@ -579,13 +577,11 @@ return ISCSI_ERR_DATALEN; } - spin_lock(&tcp_task->pool2queue); rc = kfifo_out(&tcp_task->r2tpool.queue, (void *)&r2t, sizeof(void *)); if (!rc) { iscsi_conn_printk(KERN_ERR, conn, "Could not allocate R2T. " "Target has sent more R2Ts than it " "negotiated for or driver has leaked.\n"); - spin_unlock(&tcp_task->pool2queue); return ISCSI_ERR_PROTO; } @@ -600,7 +596,6 @@ tcp_task->exp_datasn = r2tsn + 1; kfifo_in(&tcp_task->r2tqueue, (void*)&r2t, sizeof(void*)); conn->r2t_pdus_cnt++; - spin_unlock(&tcp_task->pool2queue); iscsi_requeue_task(task); return 0; @@ -673,14 +668,14 @@ switch(opcode) { case ISCSI_OP_SCSI_DATA_IN: - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_ctask(conn, hdr->itt); if (!task) rc = ISCSI_ERR_BAD_ITT; else rc = iscsi_tcp_data_in(conn, task); if (rc) { - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); break; } @@ -713,11 +708,11 @@ tcp_conn->in.datalen, iscsi_tcp_process_data_in, rx_hash); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); return rc; } rc = __iscsi_complete_pdu(conn, hdr, NULL, 0); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); break; case ISCSI_OP_SCSI_CMD_RSP: if (tcp_conn->in.datalen) { @@ -727,20 +722,18 @@ rc = iscsi_complete_pdu(conn, hdr, NULL, 0); break; case ISCSI_OP_R2T: - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_ctask(conn, hdr->itt); - spin_unlock(&conn->session->back_lock); if (!task) rc = ISCSI_ERR_BAD_ITT; else if (ahslen) rc = ISCSI_ERR_AHSLEN; else if (task->sc->sc_data_direction == DMA_TO_DEVICE) { task->last_xfer = jiffies; - spin_lock(&conn->session->frwd_lock); rc = iscsi_tcp_r2t_rsp(conn, task); - spin_unlock(&conn->session->frwd_lock); } else rc = ISCSI_ERR_PROTO; + spin_unlock(&conn->session->lock); break; case ISCSI_OP_LOGIN_RSP: case ISCSI_OP_TEXT_RSP: @@ -988,13 +981,14 @@ static struct iscsi_r2t_info *iscsi_tcp_get_curr_r2t(struct iscsi_task *task) { + struct iscsi_session *session = task->conn->session; struct iscsi_tcp_task *tcp_task = task->dd_data; struct iscsi_r2t_info *r2t = NULL; if (iscsi_task_has_unsol_data(task)) r2t = &task->unsol_r2t; else { - spin_lock_bh(&tcp_task->queue2pool); + spin_lock_bh(&session->lock); if (tcp_task->r2t) { r2t = tcp_task->r2t; /* Continue with this R2T? */ @@ -1016,7 +1010,7 @@ else r2t = tcp_task->r2t; } - spin_unlock_bh(&tcp_task->queue2pool); + spin_unlock_bh(&session->lock); } return r2t; @@ -1146,8 +1140,6 @@ iscsi_pool_free(&tcp_task->r2tpool); goto r2t_alloc_fail; } - spin_lock_init(&tcp_task->pool2queue); - spin_lock_init(&tcp_task->queue2pool); } return 0; --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc.h @@ -386,7 +386,6 @@ uint32_t work_port_events; /* Timeout to be handled */ #define WORKER_DISC_TMO 0x1 /* vport: Discovery timeout */ #define WORKER_ELS_TMO 0x2 /* vport: ELS timeout */ -#define WORKER_FDMI_TMO 0x4 /* vport: FDMI timeout */ #define WORKER_DELAYED_DISC_TMO 0x8 /* vport: delayed discovery */ #define WORKER_MBOX_TMO 0x100 /* hba: MBOX timeout */ @@ -396,7 +395,6 @@ #define WORKER_RAMP_UP_QUEUE 0x1000 /* hba: Increase Q depth */ #define WORKER_SERVICE_TXQ 0x2000 /* hba: IOCBs on the txq */ - struct timer_list fc_fdmitmo; struct timer_list els_tmofunc; struct timer_list delayed_disc_tmo; @@ -405,6 +403,7 @@ uint8_t load_flag; #define FC_LOADING 0x1 /* HBA in process of loading drvr */ #define FC_UNLOADING 0x2 /* HBA in process of unloading drvr */ +#define FC_ALLOW_FDMI 0x4 /* port is ready for FDMI requests */ /* Vport Config Parameters */ uint32_t cfg_scan_down; uint32_t cfg_lun_queue_depth; @@ -414,10 +413,6 @@ uint32_t cfg_peer_port_login; uint32_t cfg_fcp_class; uint32_t cfg_use_adisc; - uint32_t cfg_fdmi_on; -#define LPFC_FDMI_SUPPORT 1 /* bit 0 - FDMI supported? */ -#define LPFC_FDMI_REG_DELAY 2 /* bit 1 - 60 sec registration delay */ -#define LPFC_FDMI_ALL_ATTRIB 4 /* bit 2 - register ALL attributes? */ uint32_t cfg_discovery_threads; uint32_t cfg_log_verbose; uint32_t cfg_max_luns; @@ -443,6 +438,10 @@ unsigned long rcv_buffer_time_stamp; uint32_t vport_flag; #define STATIC_VPORT 1 + + uint16_t fdmi_num_disc; + uint32_t fdmi_hba_mask; + uint32_t fdmi_port_mask; }; struct hbq_s { @@ -755,6 +754,11 @@ #define LPFC_DELAY_INIT_LINK 1 /* layered driver hold off */ #define LPFC_DELAY_INIT_LINK_INDEFINITELY 2 /* wait, manual intervention */ uint32_t cfg_enable_dss; + uint32_t cfg_fdmi_on; +#define LPFC_FDMI_NO_SUPPORT 0 /* FDMI not supported */ +#define LPFC_FDMI_SUPPORT 1 /* FDMI supported? */ +#define LPFC_FDMI_SMART_SAN 2 /* SmartSAN supported */ + uint32_t cfg_enable_SmartSAN; lpfc_vpd_t vpd; /* vital product data */ struct pci_dev *pcidev; --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_attr.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_attr.c @@ -4572,19 +4572,27 @@ 255, "Identifies TYPE for additional ring configuration"); /* -# lpfc_fdmi_on: controls FDMI support. -# Set NOT Set -# bit 0 = FDMI support no FDMI support -# LPFC_FDMI_SUPPORT just turns basic support on/off -# bit 1 = Register delay no register delay (60 seconds) -# LPFC_FDMI_REG_DELAY 60 sec registration delay after FDMI login -# bit 2 = All attributes Use a attribute subset -# LPFC_FDMI_ALL_ATTRIB applies to both port and HBA attributes -# Port attrutes subset: 1 thru 6 OR all: 1 thru 0xd 0x101 0x102 0x103 -# HBA attributes subset: 1 thru 0xb OR all: 1 thru 0xc -# Value range [0,7]. Default value is 0. +# lpfc_enable_SmartSAN: Sets up FDMI support for SmartSAN +# 0 = SmartSAN functionality disabled (default) +# 1 = SmartSAN functionality enabled +# This parameter will override the value of lpfc_fdmi_on module parameter. +# Value range is [0,1]. Default value is 0. */ -LPFC_VPORT_ATTR_RW(fdmi_on, 0, 0, 7, "Enable FDMI support"); +LPFC_ATTR_R(enable_SmartSAN, 0, 0, 1, "Enable SmartSAN functionality"); + +/* +# lpfc_fdmi_on: Controls FDMI support. +# 0 No FDMI support (default) +# 1 Traditional FDMI support +# 2 Smart SAN support +# If lpfc_enable_SmartSAN is set 1, the driver sets lpfc_fdmi_on to value 2 +# overwriting the current value. If lpfc_enable_SmartSAN is set 0, the +# driver uses the current value of lpfc_fdmi_on provided it has value 0 or 1. +# A value of 2 with lpfc_enable_SmartSAN set to 0 causes the driver to +# set lpfc_fdmi_on back to 1. +# Value range [0,2]. Default value is 0. +*/ +LPFC_ATTR_R(fdmi_on, 0, 0, 2, "Enable FDMI support"); /* # Specifies the maximum number of ELS cmds we can have outstanding (for @@ -4815,6 +4823,7 @@ &dev_attr_lpfc_multi_ring_rctl, &dev_attr_lpfc_multi_ring_type, &dev_attr_lpfc_fdmi_on, + &dev_attr_lpfc_enable_SmartSAN, &dev_attr_lpfc_max_luns, &dev_attr_lpfc_enable_npiv, &dev_attr_lpfc_fcf_failover_policy, @@ -4887,7 +4896,6 @@ &dev_attr_lpfc_fcp_class, &dev_attr_lpfc_use_adisc, &dev_attr_lpfc_first_burst_size, - &dev_attr_lpfc_fdmi_on, &dev_attr_lpfc_max_luns, &dev_attr_nport_evt_cnt, &dev_attr_npiv_info, @@ -5247,7 +5255,7 @@ spin_lock_irq(shost->host_lock); - if (lpfc_is_link_up(phba)) { + if ((lpfc_is_link_up(phba)) && (!(phba->hba_flag & HBA_FCOE_MODE))) { switch(phba->fc_linkspeed) { case LPFC_LINK_SPEED_1GHZ: fc_host_speed(shost) = FC_PORTSPEED_1GBIT; @@ -5826,6 +5834,8 @@ lpfc_enable_npiv_init(phba, lpfc_enable_npiv); lpfc_fcf_failover_policy_init(phba, lpfc_fcf_failover_policy); lpfc_enable_rrq_init(phba, lpfc_enable_rrq); + lpfc_fdmi_on_init(phba, lpfc_fdmi_on); + lpfc_enable_SmartSAN_init(phba, lpfc_enable_SmartSAN); lpfc_use_msi_init(phba, lpfc_use_msi); lpfc_fcp_imax_init(phba, lpfc_fcp_imax); lpfc_fcp_cpu_map_init(phba, lpfc_fcp_cpu_map); @@ -5846,6 +5856,15 @@ phba->cfg_poll = 0; else phba->cfg_poll = lpfc_poll; + + /* Ensure fdmi_on and enable_SmartSAN don't conflict */ + if (phba->cfg_enable_SmartSAN) { + phba->cfg_fdmi_on = LPFC_FDMI_SMART_SAN; + } else { + if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN) + phba->cfg_fdmi_on = LPFC_FDMI_SUPPORT; + } + phba->cfg_soft_wwnn = 0L; phba->cfg_soft_wwpn = 0L; lpfc_sg_seg_cnt_init(phba, lpfc_sg_seg_cnt); @@ -5879,7 +5898,6 @@ lpfc_use_adisc_init(vport, lpfc_use_adisc); lpfc_first_burst_size_init(vport, lpfc_first_burst_size); lpfc_max_scsicmpl_time_init(vport, lpfc_max_scsicmpl_time); - lpfc_fdmi_on_init(vport, lpfc_fdmi_on); lpfc_discovery_threads_init(vport, lpfc_discovery_threads); lpfc_max_luns_init(vport, lpfc_max_luns); lpfc_scan_down_init(vport, lpfc_scan_down); --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_crtn.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_crtn.h @@ -72,6 +72,7 @@ void lpfc_retry_pport_discovery(struct lpfc_hba *); void lpfc_release_rpi(struct lpfc_hba *, struct lpfc_vport *, uint16_t); +void lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *, LPFC_MBOXQ_t *); void lpfc_mbx_cmpl_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); void lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *, LPFC_MBOXQ_t *); void lpfc_mbx_cmpl_fabric_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); @@ -167,9 +168,8 @@ struct lpfc_iocbq *); int lpfc_ct_handle_unsol_abort(struct lpfc_hba *, struct hbq_dmabuf *); int lpfc_ns_cmd(struct lpfc_vport *, int, uint8_t, uint32_t); -int lpfc_fdmi_cmd(struct lpfc_vport *, struct lpfc_nodelist *, int); -void lpfc_fdmi_tmo(unsigned long); -void lpfc_fdmi_timeout_handler(struct lpfc_vport *); +int lpfc_fdmi_cmd(struct lpfc_vport *, struct lpfc_nodelist *, int, uint32_t); +void lpfc_fdmi_num_disc_check(struct lpfc_vport *); void lpfc_delayed_disc_tmo(unsigned long); void lpfc_delayed_disc_timeout_handler(struct lpfc_vport *); --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_ct.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_ct.c @@ -48,15 +48,26 @@ #include "lpfc_vport.h" #include "lpfc_debugfs.h" -/* FDMI Port Speed definitions */ -#define HBA_PORTSPEED_1GBIT 0x0001 /* 1 GBit/sec */ -#define HBA_PORTSPEED_2GBIT 0x0002 /* 2 GBit/sec */ -#define HBA_PORTSPEED_4GBIT 0x0008 /* 4 GBit/sec */ -#define HBA_PORTSPEED_10GBIT 0x0004 /* 10 GBit/sec */ -#define HBA_PORTSPEED_8GBIT 0x0010 /* 8 GBit/sec */ -#define HBA_PORTSPEED_16GBIT 0x0020 /* 16 GBit/sec */ -#define HBA_PORTSPEED_32GBIT 0x0040 /* 32 GBit/sec */ -#define HBA_PORTSPEED_UNKNOWN 0x0800 /* Unknown */ +/* FDMI Port Speed definitions - FC-GS-7 */ +#define HBA_PORTSPEED_1GFC 0x00000001 /* 1G FC */ +#define HBA_PORTSPEED_2GFC 0x00000002 /* 2G FC */ +#define HBA_PORTSPEED_4GFC 0x00000008 /* 4G FC */ +#define HBA_PORTSPEED_10GFC 0x00000004 /* 10G FC */ +#define HBA_PORTSPEED_8GFC 0x00000010 /* 8G FC */ +#define HBA_PORTSPEED_16GFC 0x00000020 /* 16G FC */ +#define HBA_PORTSPEED_32GFC 0x00000040 /* 32G FC */ +#define HBA_PORTSPEED_20GFC 0x00000080 /* 20G FC */ +#define HBA_PORTSPEED_40GFC 0x00000100 /* 40G FC */ +#define HBA_PORTSPEED_128GFC 0x00000200 /* 128G FC */ +#define HBA_PORTSPEED_64GFC 0x00000400 /* 64G FC */ +#define HBA_PORTSPEED_256GFC 0x00000800 /* 256G FC */ +#define HBA_PORTSPEED_UNKNOWN 0x00008000 /* Unknown */ +#define HBA_PORTSPEED_10GE 0x00010000 /* 10G E */ +#define HBA_PORTSPEED_40GE 0x00020000 /* 40G E */ +#define HBA_PORTSPEED_100GE 0x00040000 /* 100G E */ +#define HBA_PORTSPEED_25GE 0x00080000 /* 25G E */ +#define HBA_PORTSPEED_50GE 0x00100000 /* 50G E */ +#define HBA_PORTSPEED_400GE 0x00200000 /* 400G E */ #define FOURBYTES 4 @@ -287,6 +298,17 @@ return 0; } +/** + * lpfc_gen_req - Build and issue a GEN_REQUEST command to the SLI Layer + * @vport: pointer to a host virtual N_Port data structure. + * @bmp: Pointer to BPL for SLI command + * @inp: Pointer to data buffer for response data. + * @outp: Pointer to data buffer that hold the CT command. + * @cmpl: completion routine to call when command completes + * @ndlp: Destination NPort nodelist entry + * + * This function as the final part for issuing a CT command. + */ static int lpfc_gen_req(struct lpfc_vport *vport, struct lpfc_dmabuf *bmp, struct lpfc_dmabuf *inp, struct lpfc_dmabuf *outp, @@ -311,7 +333,7 @@ icmd->un.genreq64.bdl.addrHigh = putPaddrHigh(bmp->phys); icmd->un.genreq64.bdl.addrLow = putPaddrLow(bmp->phys); icmd->un.genreq64.bdl.bdeFlags = BUFF_TYPE_BLP_64; - icmd->un.genreq64.bdl.bdeSize = (num_entry * sizeof (struct ulp_bde64)); + icmd->un.genreq64.bdl.bdeSize = (num_entry * sizeof(struct ulp_bde64)); if (usr_flg) geniocb->context3 = NULL; @@ -370,6 +392,16 @@ return 0; } +/** + * lpfc_ct_cmd - Build and issue a CT command + * @vport: pointer to a host virtual N_Port data structure. + * @inmp: Pointer to data buffer for response data. + * @bmp: Pointer to BPL for SLI command + * @ndlp: Destination NPort nodelist entry + * @cmpl: completion routine to call when command completes + * + * This function is called for issuing a CT command. + */ static int lpfc_ct_cmd(struct lpfc_vport *vport, struct lpfc_dmabuf *inmp, struct lpfc_dmabuf *bmp, struct lpfc_nodelist *ndlp, @@ -453,7 +485,7 @@ Cnt -= 16; /* subtract length of CT header */ /* Loop through entire NameServer list of DIDs */ - while (Cnt >= sizeof (uint32_t)) { + while (Cnt >= sizeof(uint32_t)) { /* Get next DID from NameServer List */ CTentry = *ctptr++; Did = ((be32_to_cpu(CTentry)) & Mask_DID); @@ -558,7 +590,7 @@ } if (CTentry & (cpu_to_be32(SLI_CT_LAST_ENTRY))) goto nsout1; - Cnt -= sizeof (uint32_t); + Cnt -= sizeof(uint32_t); } ctptr = NULL; @@ -1146,7 +1178,7 @@ /* fill in BDEs for command */ /* Allocate buffer for command payload */ - mp = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL); + mp = kmalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); if (!mp) { rc=2; goto ns_cmd_exit; @@ -1160,7 +1192,7 @@ } /* Allocate buffer for Buffer ptr list */ - bmp = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL); + bmp = kmalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); if (!bmp) { rc=4; goto ns_cmd_free_mpvirt; @@ -1204,7 +1236,7 @@ bpl->tus.w = le32_to_cpu(bpl->tus.w); CtReq = (struct lpfc_sli_ct_request *) mp->virt; - memset(CtReq, 0, sizeof (struct lpfc_sli_ct_request)); + memset(CtReq, 0, sizeof(struct lpfc_sli_ct_request)); CtReq->RevisionId.bits.Revision = SLI_CT_REVISION; CtReq->RevisionId.bits.InId = 0; CtReq->FsType = SLI_CT_DIRECTORY_SERVICE; @@ -1244,7 +1276,7 @@ cpu_to_be16(SLI_CTNS_RNN_ID); CtReq->un.rnn.PortId = cpu_to_be32(vport->fc_myDID); memcpy(CtReq->un.rnn.wwnn, &vport->fc_nodename, - sizeof (struct lpfc_name)); + sizeof(struct lpfc_name)); cmpl = lpfc_cmpl_ct_cmd_rnn_id; break; @@ -1264,7 +1296,7 @@ CtReq->CommandResponse.bits.CmdRsp = cpu_to_be16(SLI_CTNS_RSNN_NN); memcpy(CtReq->un.rsnn.wwnn, &vport->fc_nodename, - sizeof (struct lpfc_name)); + sizeof(struct lpfc_name)); size = sizeof(CtReq->un.rsnn.symbname); CtReq->un.rsnn.len = lpfc_vport_symbolic_node_name(vport, @@ -1319,20 +1351,29 @@ return 1; } +/** + * lpfc_cmpl_ct_disc_fdmi - Handle a discovery FDMI completion + * @phba: Pointer to HBA context object. + * @cmdiocb: Pointer to the command IOCBQ. + * @rspiocb: Pointer to the response IOCBQ. + * + * This function to handle the completion of a driver initiated FDMI + * CT command issued during discovery. + */ static void -lpfc_cmpl_ct_cmd_fdmi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, - struct lpfc_iocbq * rspiocb) +lpfc_cmpl_ct_disc_fdmi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, + struct lpfc_iocbq *rspiocb) { + struct lpfc_vport *vport = cmdiocb->vport; struct lpfc_dmabuf *inp = cmdiocb->context1; struct lpfc_dmabuf *outp = cmdiocb->context2; - struct lpfc_sli_ct_request *CTrsp = outp->virt; struct lpfc_sli_ct_request *CTcmd = inp->virt; - struct lpfc_nodelist *ndlp; + struct lpfc_sli_ct_request *CTrsp = outp->virt; uint16_t fdmi_cmd = CTcmd->CommandResponse.bits.CmdRsp; uint16_t fdmi_rsp = CTrsp->CommandResponse.bits.CmdRsp; - struct lpfc_vport *vport = cmdiocb->vport; IOCB_t *irsp = &rspiocb->iocb; - uint32_t latt; + struct lpfc_nodelist *ndlp; + uint32_t latt, cmd, err; latt = lpfc_els_chk_latt(vport); lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT, @@ -1340,91 +1381,1115 @@ irsp->ulpStatus, irsp->un.ulpWord[4], latt); if (latt || irsp->ulpStatus) { + + /* Look for a retryable error */ + if (irsp->ulpStatus == IOSTAT_LOCAL_REJECT) { + switch ((irsp->un.ulpWord[4] & IOERR_PARAM_MASK)) { + case IOERR_SLI_ABORTED: + case IOERR_ABORT_IN_PROGRESS: + case IOERR_SEQUENCE_TIMEOUT: + case IOERR_ILLEGAL_FRAME: + case IOERR_NO_RESOURCES: + case IOERR_ILLEGAL_COMMAND: + cmdiocb->retry++; + if (cmdiocb->retry >= LPFC_FDMI_MAX_RETRY) + break; + + /* Retry the same FDMI command */ + err = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, + cmdiocb, 0); + if (err == IOCB_ERROR) + break; + return; + default: + break; + } + } + lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, "0229 FDMI cmd %04x failed, latt = %d " "ulpStatus: x%x, rid x%x\n", be16_to_cpu(fdmi_cmd), latt, irsp->ulpStatus, irsp->un.ulpWord[4]); - goto fail_out; } + lpfc_ct_free_iocb(phba, cmdiocb); ndlp = lpfc_findnode_did(vport, FDMI_DID); if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) - goto fail_out; + return; + /* Check for a CT LS_RJT response */ + cmd = be16_to_cpu(fdmi_cmd); if (fdmi_rsp == cpu_to_be16(SLI_CT_RESPONSE_FS_RJT)) { /* FDMI rsp failed */ lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, - "0220 FDMI rsp failed Data: x%x\n", - be16_to_cpu(fdmi_cmd)); - } + "0220 FDMI cmd failed FS_RJT Data: x%x", cmd); -fail_out: - lpfc_ct_free_iocb(phba, cmdiocb); -} - -static void -lpfc_cmpl_ct_disc_fdmi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, - struct lpfc_iocbq *rspiocb) -{ - struct lpfc_vport *vport = cmdiocb->vport; - struct lpfc_dmabuf *inp = cmdiocb->context1; - struct lpfc_sli_ct_request *CTcmd = inp->virt; - uint16_t fdmi_cmd = CTcmd->CommandResponse.bits.CmdRsp; - struct lpfc_nodelist *ndlp; + /* Should we fallback to FDMI-2 / FDMI-1 ? */ + switch (cmd) { + case SLI_MGMT_RHBA: + if (vport->fdmi_hba_mask == LPFC_FDMI2_HBA_ATTR) { + /* Fallback to FDMI-1 */ + vport->fdmi_hba_mask = LPFC_FDMI1_HBA_ATTR; + vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR; + /* Start over */ + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0); + } + return; - lpfc_cmpl_ct_cmd_fdmi(phba, cmdiocb, rspiocb); + case SLI_MGMT_RPRT: + if (vport->fdmi_port_mask == LPFC_FDMI2_PORT_ATTR) { + /* Fallback to FDMI-1 */ + vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR; + /* Start over */ + lpfc_fdmi_cmd(vport, ndlp, cmd, 0); + } + if (vport->fdmi_port_mask == LPFC_FDMI2_SMART_ATTR) { + vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR; + /* Retry the same command */ + lpfc_fdmi_cmd(vport, ndlp, cmd, 0); + } + return; - ndlp = lpfc_findnode_did(vport, FDMI_DID); - if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) - return; + case SLI_MGMT_RPA: + if (vport->fdmi_port_mask == LPFC_FDMI2_PORT_ATTR) { + /* Fallback to FDMI-1 */ + vport->fdmi_hba_mask = LPFC_FDMI1_HBA_ATTR; + vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR; + /* Start over */ + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0); + } + if (vport->fdmi_port_mask == LPFC_FDMI2_SMART_ATTR) { + vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR; + /* Retry the same command */ + lpfc_fdmi_cmd(vport, ndlp, cmd, 0); + } + return; + } + } /* - * Need to cycle thru FDMI registration for discovery - * DHBA -> DPRT -> RHBA -> RPA + * On success, need to cycle thru FDMI registration for discovery + * DHBA -> DPRT -> RHBA -> RPA (physical port) + * DPRT -> RPRT (vports) */ - switch (be16_to_cpu(fdmi_cmd)) { + switch (cmd) { case SLI_MGMT_RHBA: - lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPA); + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPA, 0); break; case SLI_MGMT_DHBA: - lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT); + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT, 0); break; case SLI_MGMT_DPRT: - lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RHBA); + if (vport->port_type == LPFC_PHYSICAL_PORT) + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RHBA, 0); + else + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPRT, 0); break; } + return; +} + + +/** + * lpfc_fdmi_num_disc_check - Check how many mapped NPorts we are connected to + * @vport: pointer to a host virtual N_Port data structure. + * + * Called from hbeat timeout routine to check if the number of discovered + * ports has changed. If so, re-register thar port Attribute. + */ +void +lpfc_fdmi_num_disc_check(struct lpfc_vport *vport) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_nodelist *ndlp; + uint16_t cnt; + + if (!lpfc_is_link_up(phba)) + return; + + if (!(vport->fdmi_port_mask & LPFC_FDMI_PORT_ATTR_num_disc)) + return; + + cnt = lpfc_find_map_node(vport); + if (cnt == vport->fdmi_num_disc) + return; + + ndlp = lpfc_findnode_did(vport, FDMI_DID); + if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) + return; + + if (vport->port_type == LPFC_PHYSICAL_PORT) { + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPA, + LPFC_FDMI_PORT_ATTR_num_disc); + } else { + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPRT, + LPFC_FDMI_PORT_ATTR_num_disc); + } +} + +/* Routines for all individual HBA attributes */ +int +lpfc_fdmi_hba_attr_wwnn(struct lpfc_vport *vport, struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, sizeof(struct lpfc_name)); + + memcpy(&ae->un.AttrWWN, &vport->fc_sparam.nodeName, + sizeof(struct lpfc_name)); + size = FOURBYTES + sizeof(struct lpfc_name); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_NODENAME); + return size; +} +int +lpfc_fdmi_hba_attr_manufacturer(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, + "Emulex Corporation", + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_MANUFACTURER); + return size; +} + +int +lpfc_fdmi_hba_attr_sn(struct lpfc_vport *vport, struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, phba->SerialNumber, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_SERIAL_NUMBER); + return size; +} + +int +lpfc_fdmi_hba_attr_model(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, phba->ModelName, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_MODEL); + return size; +} + +int +lpfc_fdmi_hba_attr_description(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, phba->ModelDesc, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_MODEL_DESCRIPTION); + return size; } +int +lpfc_fdmi_hba_attr_hdw_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + lpfc_vpd_t *vp = &phba->vpd; + struct lpfc_fdmi_attr_entry *ae; + uint32_t i, j, incr, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + /* Convert JEDEC ID to ascii for hardware version */ + incr = vp->rev.biuRev; + for (i = 0; i < 8; i++) { + j = (incr & 0xf); + if (j <= 9) + ae->un.AttrString[7 - i] = + (char)((uint8_t) 0x30 + + (uint8_t) j); + else + ae->un.AttrString[7 - i] = + (char)((uint8_t) 0x61 + + (uint8_t) (j - 10)); + incr = (incr >> 4); + } + size = FOURBYTES + 8; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_HARDWARE_VERSION); + return size; +} int -lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode) +lpfc_fdmi_hba_attr_drvr_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, lpfc_release_version, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_DRIVER_VERSION); + return size; +} + +int +lpfc_fdmi_hba_attr_rom_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + if (phba->sli_rev == LPFC_SLI_REV4) + lpfc_decode_firmware_rev(phba, ae->un.AttrString, 1); + else + strncpy(ae->un.AttrString, phba->OptionROMVersion, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_OPTION_ROM_VERSION); + return size; +} + +int +lpfc_fdmi_hba_attr_fmw_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + lpfc_decode_firmware_rev(phba, ae->un.AttrString, 1); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_FIRMWARE_VERSION); + return size; +} + +int +lpfc_fdmi_hba_attr_os_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + snprintf(ae->un.AttrString, sizeof(ae->un.AttrString), "%s %s %s", + init_utsname()->sysname, + init_utsname()->release, + init_utsname()->version); + + len = strnlen(ae->un.AttrString, sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_OS_NAME_VERSION); + return size; +} + +int +lpfc_fdmi_hba_attr_ct_len(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + ae->un.AttrInt = cpu_to_be32(LPFC_MAX_CT_SIZE); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_MAX_CT_PAYLOAD_LEN); + return size; +} + +int +lpfc_fdmi_hba_attr_symbolic_name(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + len = lpfc_vport_symbolic_node_name(vport, + ae->un.AttrString, 256); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_SYM_NODENAME); + return size; +} + +int +lpfc_fdmi_hba_attr_vendor_info(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + /* Nothing is defined for this currently */ + ae->un.AttrInt = cpu_to_be32(0); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_VENDOR_INFO); + return size; +} + +int +lpfc_fdmi_hba_attr_num_ports(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + /* Each driver instance corresponds to a single port */ + ae->un.AttrInt = cpu_to_be32(1); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_NUM_PORTS); + return size; +} + +int +lpfc_fdmi_hba_attr_fabric_wwnn(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, sizeof(struct lpfc_name)); + + memcpy(&ae->un.AttrWWN, &vport->fabric_nodename, + sizeof(struct lpfc_name)); + size = FOURBYTES + sizeof(struct lpfc_name); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_FABRIC_WWNN); + return size; +} + +int +lpfc_fdmi_hba_attr_bios_ver(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + lpfc_decode_firmware_rev(phba, ae->un.AttrString, 1); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_BIOS_VERSION); + return size; +} + +int +lpfc_fdmi_hba_attr_bios_state(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + /* Driver doesn't have access to this information */ + ae->un.AttrInt = cpu_to_be32(0); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_BIOS_STATE); + return size; +} + +int +lpfc_fdmi_hba_attr_vendor_id(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, "EMULEX", + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RHBA_VENDOR_ID); + return size; +} + +/* Routines for all individual PORT attributes */ +int +lpfc_fdmi_port_attr_fc4type(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 32); + + ae->un.AttrTypes[3] = 0x02; /* Type 1 - ELS */ + ae->un.AttrTypes[2] = 0x01; /* Type 8 - FCP */ + ae->un.AttrTypes[7] = 0x01; /* Type 32 - CT */ + size = FOURBYTES + 32; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_FC4_TYPES); + return size; +} + +int +lpfc_fdmi_port_attr_support_speed(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + ae->un.AttrInt = 0; + if (!(phba->hba_flag & HBA_FCOE_MODE)) { + if (phba->lmt & LMT_32Gb) + ae->un.AttrInt |= HBA_PORTSPEED_32GFC; + if (phba->lmt & LMT_16Gb) + ae->un.AttrInt |= HBA_PORTSPEED_16GFC; + if (phba->lmt & LMT_10Gb) + ae->un.AttrInt |= HBA_PORTSPEED_10GFC; + if (phba->lmt & LMT_8Gb) + ae->un.AttrInt |= HBA_PORTSPEED_8GFC; + if (phba->lmt & LMT_4Gb) + ae->un.AttrInt |= HBA_PORTSPEED_4GFC; + if (phba->lmt & LMT_2Gb) + ae->un.AttrInt |= HBA_PORTSPEED_2GFC; + if (phba->lmt & LMT_1Gb) + ae->un.AttrInt |= HBA_PORTSPEED_1GFC; + } else { + /* FCoE links support only one speed */ + switch (phba->fc_linkspeed) { + case LPFC_ASYNC_LINK_SPEED_10GBPS: + ae->un.AttrInt = HBA_PORTSPEED_10GE; + break; + case LPFC_ASYNC_LINK_SPEED_25GBPS: + ae->un.AttrInt = HBA_PORTSPEED_25GE; + break; + case LPFC_ASYNC_LINK_SPEED_40GBPS: + ae->un.AttrInt = HBA_PORTSPEED_40GE; + break; + case LPFC_ASYNC_LINK_SPEED_100GBPS: + ae->un.AttrInt = HBA_PORTSPEED_100GE; + break; + } + } + ae->un.AttrInt = cpu_to_be32(ae->un.AttrInt); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_SPEED); + return size; +} + +int +lpfc_fdmi_port_attr_speed(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + if (!(phba->hba_flag & HBA_FCOE_MODE)) { + switch (phba->fc_linkspeed) { + case LPFC_LINK_SPEED_1GHZ: + ae->un.AttrInt = HBA_PORTSPEED_1GFC; + break; + case LPFC_LINK_SPEED_2GHZ: + ae->un.AttrInt = HBA_PORTSPEED_2GFC; + break; + case LPFC_LINK_SPEED_4GHZ: + ae->un.AttrInt = HBA_PORTSPEED_4GFC; + break; + case LPFC_LINK_SPEED_8GHZ: + ae->un.AttrInt = HBA_PORTSPEED_8GFC; + break; + case LPFC_LINK_SPEED_10GHZ: + ae->un.AttrInt = HBA_PORTSPEED_10GFC; + break; + case LPFC_LINK_SPEED_16GHZ: + ae->un.AttrInt = HBA_PORTSPEED_16GFC; + break; + case LPFC_LINK_SPEED_32GHZ: + ae->un.AttrInt = HBA_PORTSPEED_32GFC; + break; + default: + ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN; + break; + } + } else { + switch (phba->fc_linkspeed) { + case LPFC_ASYNC_LINK_SPEED_10GBPS: + ae->un.AttrInt = HBA_PORTSPEED_10GE; + break; + case LPFC_ASYNC_LINK_SPEED_25GBPS: + ae->un.AttrInt = HBA_PORTSPEED_25GE; + break; + case LPFC_ASYNC_LINK_SPEED_40GBPS: + ae->un.AttrInt = HBA_PORTSPEED_40GE; + break; + case LPFC_ASYNC_LINK_SPEED_100GBPS: + ae->un.AttrInt = HBA_PORTSPEED_100GE; + break; + default: + ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN; + break; + } + } + + ae->un.AttrInt = cpu_to_be32(ae->un.AttrInt); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_PORT_SPEED); + return size; +} + +int +lpfc_fdmi_port_attr_max_frame(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct serv_parm *hsp; + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + hsp = (struct serv_parm *)&vport->fc_sparam; + ae->un.AttrInt = (((uint32_t) hsp->cmn.bbRcvSizeMsb) << 8) | + (uint32_t) hsp->cmn.bbRcvSizeLsb; + ae->un.AttrInt = cpu_to_be32(ae->un.AttrInt); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_MAX_FRAME_SIZE); + return size; +} + +int +lpfc_fdmi_port_attr_os_devname(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct Scsi_Host *shost = lpfc_shost_from_vport(vport); + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + snprintf(ae->un.AttrString, sizeof(ae->un.AttrString), + "/sys/class/scsi_host/host%d", shost->host_no); + len = strnlen((char *)ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_OS_DEVICE_NAME); + return size; +} + +int +lpfc_fdmi_port_attr_host_name(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + snprintf(ae->un.AttrString, sizeof(ae->un.AttrString), "%s", + init_utsname()->nodename); + + len = strnlen(ae->un.AttrString, sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_HOST_NAME); + return size; +} + +int +lpfc_fdmi_port_attr_wwnn(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, sizeof(struct lpfc_name)); + + memcpy(&ae->un.AttrWWN, &vport->fc_sparam.nodeName, + sizeof(struct lpfc_name)); + size = FOURBYTES + sizeof(struct lpfc_name); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_NODENAME); + return size; +} + +int +lpfc_fdmi_port_attr_wwpn(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, sizeof(struct lpfc_name)); + + memcpy(&ae->un.AttrWWN, &vport->fc_sparam.portName, + sizeof(struct lpfc_name)); + size = FOURBYTES + sizeof(struct lpfc_name); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_PORTNAME); + return size; +} + +int +lpfc_fdmi_port_attr_symbolic_name(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + len = lpfc_vport_symbolic_port_name(vport, ae->un.AttrString, 256); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SYM_PORTNAME); + return size; +} + +int +lpfc_fdmi_port_attr_port_type(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) + ae->un.AttrInt = cpu_to_be32(LPFC_FDMI_PORTTYPE_NLPORT); + else + ae->un.AttrInt = cpu_to_be32(LPFC_FDMI_PORTTYPE_NPORT); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_PORT_TYPE); + return size; +} + +int +lpfc_fdmi_port_attr_class(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + ae->un.AttrInt = cpu_to_be32(FC_COS_CLASS2 | FC_COS_CLASS3); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_CLASS); + return size; +} + +int +lpfc_fdmi_port_attr_fabric_wwpn(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, sizeof(struct lpfc_name)); + + memcpy(&ae->un.AttrWWN, &vport->fabric_portname, + sizeof(struct lpfc_name)); + size = FOURBYTES + sizeof(struct lpfc_name); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_FABRICNAME); + return size; +} + +int +lpfc_fdmi_port_attr_active_fc4type(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 32); + + ae->un.AttrTypes[3] = 0x02; /* Type 1 - ELS */ + ae->un.AttrTypes[2] = 0x01; /* Type 8 - FCP */ + ae->un.AttrTypes[7] = 0x01; /* Type 32 - CT */ + size = FOURBYTES + 32; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_ACTIVE_FC4_TYPES); + return size; +} + +int +lpfc_fdmi_port_attr_port_state(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + /* Link Up - operational */ + ae->un.AttrInt = cpu_to_be32(LPFC_FDMI_PORTSTATE_ONLINE); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_PORT_STATE); + return size; +} + +int +lpfc_fdmi_port_attr_num_disc(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + vport->fdmi_num_disc = lpfc_find_map_node(vport); + ae->un.AttrInt = cpu_to_be32(vport->fdmi_num_disc); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_DISC_PORT); + return size; +} + +int +lpfc_fdmi_port_attr_nportid(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + ae->un.AttrInt = cpu_to_be32(vport->fc_myDID); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_PORT_ID); + return size; +} + +int +lpfc_fdmi_smart_attr_service(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, "Smart SAN Initiator", + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_SERVICE); + return size; +} + +int +lpfc_fdmi_smart_attr_guid(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + memcpy(&ae->un.AttrString, &vport->fc_sparam.nodeName, + sizeof(struct lpfc_name)); + memcpy((((uint8_t *)&ae->un.AttrString) + + sizeof(struct lpfc_name)), + &vport->fc_sparam.portName, sizeof(struct lpfc_name)); + size = FOURBYTES + (2 * sizeof(struct lpfc_name)); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_GUID); + return size; +} + +int +lpfc_fdmi_smart_attr_version(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, "Smart SAN Version 1.0", + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, + sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_VERSION); + return size; +} + +int +lpfc_fdmi_smart_attr_model(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_fdmi_attr_entry *ae; + uint32_t len, size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + memset(ae, 0, 256); + + strncpy(ae->un.AttrString, phba->ModelName, + sizeof(ae->un.AttrString)); + len = strnlen(ae->un.AttrString, sizeof(ae->un.AttrString)); + len += (len & 3) ? (4 - (len & 3)) : 4; + size = FOURBYTES + len; + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_MODEL); + return size; +} + +int +lpfc_fdmi_smart_attr_port_info(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + + /* SRIOV (type 3) is not supported */ + if (vport->vpi) + ae->un.AttrInt = cpu_to_be32(2); /* NPIV */ + else + ae->un.AttrInt = cpu_to_be32(1); /* Physical */ + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_PORT_INFO); + return size; +} + +int +lpfc_fdmi_smart_attr_qos(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + ae->un.AttrInt = cpu_to_be32(0); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_QOS); + return size; +} + +int +lpfc_fdmi_smart_attr_security(struct lpfc_vport *vport, + struct lpfc_fdmi_attr_def *ad) +{ + struct lpfc_fdmi_attr_entry *ae; + uint32_t size; + + ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; + ae->un.AttrInt = cpu_to_be32(0); + size = FOURBYTES + sizeof(uint32_t); + ad->AttrLen = cpu_to_be16(size); + ad->AttrType = cpu_to_be16(RPRT_SMART_SECURITY); + return size; +} + +/* RHBA attribute jump table */ +int (*lpfc_fdmi_hba_action[]) + (struct lpfc_vport *vport, struct lpfc_fdmi_attr_def *ad) = { + /* Action routine Mask bit Attribute type */ + lpfc_fdmi_hba_attr_wwnn, /* bit0 RHBA_NODENAME */ + lpfc_fdmi_hba_attr_manufacturer, /* bit1 RHBA_MANUFACTURER */ + lpfc_fdmi_hba_attr_sn, /* bit2 RHBA_SERIAL_NUMBER */ + lpfc_fdmi_hba_attr_model, /* bit3 RHBA_MODEL */ + lpfc_fdmi_hba_attr_description, /* bit4 RHBA_MODEL_DESCRIPTION */ + lpfc_fdmi_hba_attr_hdw_ver, /* bit5 RHBA_HARDWARE_VERSION */ + lpfc_fdmi_hba_attr_drvr_ver, /* bit6 RHBA_DRIVER_VERSION */ + lpfc_fdmi_hba_attr_rom_ver, /* bit7 RHBA_OPTION_ROM_VERSION */ + lpfc_fdmi_hba_attr_fmw_ver, /* bit8 RHBA_FIRMWARE_VERSION */ + lpfc_fdmi_hba_attr_os_ver, /* bit9 RHBA_OS_NAME_VERSION */ + lpfc_fdmi_hba_attr_ct_len, /* bit10 RHBA_MAX_CT_PAYLOAD_LEN */ + lpfc_fdmi_hba_attr_symbolic_name, /* bit11 RHBA_SYM_NODENAME */ + lpfc_fdmi_hba_attr_vendor_info, /* bit12 RHBA_VENDOR_INFO */ + lpfc_fdmi_hba_attr_num_ports, /* bit13 RHBA_NUM_PORTS */ + lpfc_fdmi_hba_attr_fabric_wwnn, /* bit14 RHBA_FABRIC_WWNN */ + lpfc_fdmi_hba_attr_bios_ver, /* bit15 RHBA_BIOS_VERSION */ + lpfc_fdmi_hba_attr_bios_state, /* bit16 RHBA_BIOS_STATE */ + lpfc_fdmi_hba_attr_vendor_id, /* bit17 RHBA_VENDOR_ID */ +}; + +/* RPA / RPRT attribute jump table */ +int (*lpfc_fdmi_port_action[]) + (struct lpfc_vport *vport, struct lpfc_fdmi_attr_def *ad) = { + /* Action routine Mask bit Attribute type */ + lpfc_fdmi_port_attr_fc4type, /* bit0 RPRT_SUPPORT_FC4_TYPES */ + lpfc_fdmi_port_attr_support_speed, /* bit1 RPRT_SUPPORTED_SPEED */ + lpfc_fdmi_port_attr_speed, /* bit2 RPRT_PORT_SPEED */ + lpfc_fdmi_port_attr_max_frame, /* bit3 RPRT_MAX_FRAME_SIZE */ + lpfc_fdmi_port_attr_os_devname, /* bit4 RPRT_OS_DEVICE_NAME */ + lpfc_fdmi_port_attr_host_name, /* bit5 RPRT_HOST_NAME */ + lpfc_fdmi_port_attr_wwnn, /* bit6 RPRT_NODENAME */ + lpfc_fdmi_port_attr_wwpn, /* bit7 RPRT_PORTNAME */ + lpfc_fdmi_port_attr_symbolic_name, /* bit8 RPRT_SYM_PORTNAME */ + lpfc_fdmi_port_attr_port_type, /* bit9 RPRT_PORT_TYPE */ + lpfc_fdmi_port_attr_class, /* bit10 RPRT_SUPPORTED_CLASS */ + lpfc_fdmi_port_attr_fabric_wwpn, /* bit11 RPRT_FABRICNAME */ + lpfc_fdmi_port_attr_active_fc4type, /* bit12 RPRT_ACTIVE_FC4_TYPES */ + lpfc_fdmi_port_attr_port_state, /* bit13 RPRT_PORT_STATE */ + lpfc_fdmi_port_attr_num_disc, /* bit14 RPRT_DISC_PORT */ + lpfc_fdmi_port_attr_nportid, /* bit15 RPRT_PORT_ID */ + lpfc_fdmi_smart_attr_service, /* bit16 RPRT_SMART_SERVICE */ + lpfc_fdmi_smart_attr_guid, /* bit17 RPRT_SMART_GUID */ + lpfc_fdmi_smart_attr_version, /* bit18 RPRT_SMART_VERSION */ + lpfc_fdmi_smart_attr_model, /* bit19 RPRT_SMART_MODEL */ + lpfc_fdmi_smart_attr_port_info, /* bit20 RPRT_SMART_PORT_INFO */ + lpfc_fdmi_smart_attr_qos, /* bit21 RPRT_SMART_QOS */ + lpfc_fdmi_smart_attr_security, /* bit22 RPRT_SMART_SECURITY */ +}; + +/** + * lpfc_fdmi_cmd - Build and send a FDMI cmd to the specified NPort + * @vport: pointer to a host virtual N_Port data structure. + * @ndlp: ndlp to send FDMI cmd to (if NULL use FDMI_DID) + * cmdcode: FDMI command to send + * mask: Mask of HBA or PORT Attributes to send + * + * Builds and sends a FDMI command using the CT subsystem. + */ +int +lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, + int cmdcode, uint32_t new_mask) { struct lpfc_hba *phba = vport->phba; struct lpfc_dmabuf *mp, *bmp; struct lpfc_sli_ct_request *CtReq; struct ulp_bde64 *bpl; + uint32_t bit_pos; uint32_t size; uint32_t rsp_size; + uint32_t mask; struct lpfc_fdmi_reg_hba *rh; struct lpfc_fdmi_port_entry *pe; struct lpfc_fdmi_reg_portattr *pab = NULL; struct lpfc_fdmi_attr_block *ab = NULL; - struct lpfc_fdmi_attr_entry *ae; - struct lpfc_fdmi_attr_def *ad; - void (*cmpl) (struct lpfc_hba *, struct lpfc_iocbq *, - struct lpfc_iocbq *); + int (*func)(struct lpfc_vport *vport, struct lpfc_fdmi_attr_def *ad); + void (*cmpl)(struct lpfc_hba *, struct lpfc_iocbq *, + struct lpfc_iocbq *); - if (ndlp == NULL) { - ndlp = lpfc_findnode_did(vport, FDMI_DID); - if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) - return 0; - cmpl = lpfc_cmpl_ct_cmd_fdmi; /* cmd interface */ - } else { - cmpl = lpfc_cmpl_ct_disc_fdmi; /* called from discovery */ - } + if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) + return 0; + + cmpl = lpfc_cmpl_ct_disc_fdmi; /* called from discovery */ /* fill in BDEs for command */ /* Allocate buffer for command payload */ @@ -1470,573 +2535,99 @@ switch (cmdcode) { case SLI_MGMT_RHAT: case SLI_MGMT_RHBA: - { - lpfc_vpd_t *vp = &phba->vpd; - uint32_t i, j, incr; - int len = 0; + rh = (struct lpfc_fdmi_reg_hba *)&CtReq->un.PortID; + /* HBA Identifier */ + memcpy(&rh->hi.PortName, &phba->pport->fc_sparam.portName, + sizeof(struct lpfc_name)); - rh = (struct lpfc_fdmi_reg_hba *)&CtReq->un.PortID; - /* HBA Identifier */ - memcpy(&rh->hi.PortName, &vport->fc_sparam.portName, + if (cmdcode == SLI_MGMT_RHBA) { + /* Registered Port List */ + /* One entry (port) per adapter */ + rh->rpl.EntryCnt = cpu_to_be32(1); + memcpy(&rh->rpl.pe, &phba->pport->fc_sparam.portName, sizeof(struct lpfc_name)); - if (cmdcode == SLI_MGMT_RHBA) { - /* Registered Port List */ - /* One entry (port) per adapter */ - rh->rpl.EntryCnt = cpu_to_be32(1); - memcpy(&rh->rpl.pe, &vport->fc_sparam.portName, - sizeof(struct lpfc_name)); - - /* point to the HBA attribute block */ - size = 2 * sizeof(struct lpfc_name) + - FOURBYTES; - } else { - size = sizeof(struct lpfc_name); - } - ab = (struct lpfc_fdmi_attr_block *) - ((uint8_t *)rh + size); - ab->EntryCnt = 0; - size += FOURBYTES; + /* point to the HBA attribute block */ + size = 2 * sizeof(struct lpfc_name) + + FOURBYTES; + } else { + size = sizeof(struct lpfc_name); + } + ab = (struct lpfc_fdmi_attr_block *)((uint8_t *)rh + size); + ab->EntryCnt = 0; + size += FOURBYTES; + bit_pos = 0; + if (new_mask) + mask = new_mask; + else + mask = vport->fdmi_hba_mask; - /* - * Point to beginning of first HBA attribute entry - */ - /* #1 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(struct lpfc_name)); - ad->AttrType = cpu_to_be16(RHBA_NODENAME); - ad->AttrLen = cpu_to_be16(FOURBYTES - + sizeof(struct lpfc_name)); - memcpy(&ae->un.NodeName, &vport->fc_sparam.nodeName, - sizeof(struct lpfc_name)); - ab->EntryCnt++; - size += FOURBYTES + sizeof(struct lpfc_name); - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #2 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.Manufacturer)); - ad->AttrType = cpu_to_be16(RHBA_MANUFACTURER); - strncpy(ae->un.Manufacturer, "Emulex Corporation", - sizeof(ae->un.Manufacturer)); - len = strnlen(ae->un.Manufacturer, - sizeof(ae->un.Manufacturer)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #3 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.SerialNumber)); - ad->AttrType = cpu_to_be16(RHBA_SERIAL_NUMBER); - strncpy(ae->un.SerialNumber, phba->SerialNumber, - sizeof(ae->un.SerialNumber)); - len = strnlen(ae->un.SerialNumber, - sizeof(ae->un.SerialNumber)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #4 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.Model)); - ad->AttrType = cpu_to_be16(RHBA_MODEL); - strncpy(ae->un.Model, phba->ModelName, - sizeof(ae->un.Model)); - len = strnlen(ae->un.Model, sizeof(ae->un.Model)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #5 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.ModelDescription)); - ad->AttrType = cpu_to_be16(RHBA_MODEL_DESCRIPTION); - strncpy(ae->un.ModelDescription, phba->ModelDesc, - sizeof(ae->un.ModelDescription)); - len = strnlen(ae->un.ModelDescription, - sizeof(ae->un.ModelDescription)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + 8) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #6 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, 8); - ad->AttrType = cpu_to_be16(RHBA_HARDWARE_VERSION); - ad->AttrLen = cpu_to_be16(FOURBYTES + 8); - /* Convert JEDEC ID to ascii for hardware version */ - incr = vp->rev.biuRev; - for (i = 0; i < 8; i++) { - j = (incr & 0xf); - if (j <= 9) - ae->un.HardwareVersion[7 - i] = - (char)((uint8_t)0x30 + - (uint8_t)j); - else - ae->un.HardwareVersion[7 - i] = - (char)((uint8_t)0x61 + - (uint8_t)(j - 10)); - incr = (incr >> 4); + /* Mask will dictate what attributes to build in the request */ + while (mask) { + if (mask & 0x1) { + func = lpfc_fdmi_hba_action[bit_pos]; + size += func(vport, + (struct lpfc_fdmi_attr_def *) + ((uint8_t *)rh + size)); + ab->EntryCnt++; + if ((size + 256) > + (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) + goto hba_out; } - ab->EntryCnt++; - size += FOURBYTES + 8; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #7 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.DriverVersion)); - ad->AttrType = cpu_to_be16(RHBA_DRIVER_VERSION); - strncpy(ae->un.DriverVersion, lpfc_release_version, - sizeof(ae->un.DriverVersion)); - len = strnlen(ae->un.DriverVersion, - sizeof(ae->un.DriverVersion)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #8 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.OptionROMVersion)); - ad->AttrType = cpu_to_be16(RHBA_OPTION_ROM_VERSION); - strncpy(ae->un.OptionROMVersion, phba->OptionROMVersion, - sizeof(ae->un.OptionROMVersion)); - len = strnlen(ae->un.OptionROMVersion, - sizeof(ae->un.OptionROMVersion)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #9 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.FirmwareVersion)); - ad->AttrType = cpu_to_be16(RHBA_FIRMWARE_VERSION); - lpfc_decode_firmware_rev(phba, ae->un.FirmwareVersion, - 1); - len = strnlen(ae->un.FirmwareVersion, - sizeof(ae->un.FirmwareVersion)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #10 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.OsNameVersion)); - ad->AttrType = cpu_to_be16(RHBA_OS_NAME_VERSION); - snprintf(ae->un.OsNameVersion, - sizeof(ae->un.OsNameVersion), - "%s %s %s", - init_utsname()->sysname, - init_utsname()->release, - init_utsname()->version); - len = strnlen(ae->un.OsNameVersion, - sizeof(ae->un.OsNameVersion)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* #11 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = - cpu_to_be16(RHBA_MAX_CT_PAYLOAD_LEN); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - ae->un.MaxCTPayloadLen = cpu_to_be32(LPFC_MAX_CT_SIZE); - ab->EntryCnt++; - size += FOURBYTES + 4; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto hba_out; - - /* - * Currently switches don't seem to support the - * following extended HBA attributes. - */ - if (!(vport->cfg_fdmi_on & LPFC_FDMI_ALL_ATTRIB)) - goto hba_out; - - /* #12 HBA attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)rh + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.NodeSymName)); - ad->AttrType = cpu_to_be16(RHBA_SYM_NODENAME); - len = lpfc_vport_symbolic_node_name(vport, - ae->un.NodeSymName, sizeof(ae->un.NodeSymName)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - ab->EntryCnt++; - size += FOURBYTES + len; -hba_out: - ab->EntryCnt = cpu_to_be32(ab->EntryCnt); - /* Total size */ - size = GID_REQUEST_SZ - 4 + size; + mask = mask >> 1; + bit_pos++; } +hba_out: + ab->EntryCnt = cpu_to_be32(ab->EntryCnt); + /* Total size */ + size = GID_REQUEST_SZ - 4 + size; break; case SLI_MGMT_RPRT: case SLI_MGMT_RPA: - { - struct serv_parm *hsp; - int len = 0; - - if (cmdcode == SLI_MGMT_RPRT) { - rh = (struct lpfc_fdmi_reg_hba *) - &CtReq->un.PortID; - /* HBA Identifier */ - memcpy(&rh->hi.PortName, - &vport->fc_sparam.portName, - sizeof(struct lpfc_name)); - pab = (struct lpfc_fdmi_reg_portattr *) - &rh->rpl.EntryCnt; - } else - pab = (struct lpfc_fdmi_reg_portattr *) - &CtReq->un.PortID; - size = sizeof(struct lpfc_name) + FOURBYTES; - memcpy((uint8_t *)&pab->PortName, - (uint8_t *)&vport->fc_sparam.portName, + pab = (struct lpfc_fdmi_reg_portattr *)&CtReq->un.PortID; + if (cmdcode == SLI_MGMT_RPRT) { + rh = (struct lpfc_fdmi_reg_hba *)pab; + /* HBA Identifier */ + memcpy(&rh->hi.PortName, + &phba->pport->fc_sparam.portName, sizeof(struct lpfc_name)); - pab->ab.EntryCnt = 0; - - /* #1 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.FC4Types)); - ad->AttrType = - cpu_to_be16(RPRT_SUPPORTED_FC4_TYPES); - ad->AttrLen = cpu_to_be16(FOURBYTES + 32); - ae->un.FC4Types[0] = 0x40; /* Type 1 - ELS */ - ae->un.FC4Types[1] = 0x80; /* Type 8 - FCP */ - ae->un.FC4Types[4] = 0x80; /* Type 32 - CT */ - pab->ab.EntryCnt++; - size += FOURBYTES + 32; - - /* #2 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_SPEED); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - ae->un.SupportSpeed = 0; - if (phba->lmt & LMT_32Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_32GBIT; - if (phba->lmt & LMT_16Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_16GBIT; - if (phba->lmt & LMT_10Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_10GBIT; - if (phba->lmt & LMT_8Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_8GBIT; - if (phba->lmt & LMT_4Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_4GBIT; - if (phba->lmt & LMT_2Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_2GBIT; - if (phba->lmt & LMT_1Gb) - ae->un.SupportSpeed |= HBA_PORTSPEED_1GBIT; - ae->un.SupportSpeed = - cpu_to_be32(ae->un.SupportSpeed); - - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - - /* #3 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_PORT_SPEED); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - switch (phba->fc_linkspeed) { - case LPFC_LINK_SPEED_1GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_1GBIT; - break; - case LPFC_LINK_SPEED_2GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_2GBIT; - break; - case LPFC_LINK_SPEED_4GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_4GBIT; - break; - case LPFC_LINK_SPEED_8GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_8GBIT; - break; - case LPFC_LINK_SPEED_10GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_10GBIT; - break; - case LPFC_LINK_SPEED_16GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_16GBIT; - break; - case LPFC_LINK_SPEED_32GHZ: - ae->un.PortSpeed = HBA_PORTSPEED_32GBIT; - break; - default: - ae->un.PortSpeed = HBA_PORTSPEED_UNKNOWN; - break; - } - ae->un.PortSpeed = cpu_to_be32(ae->un.PortSpeed); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - - /* #4 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_MAX_FRAME_SIZE); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - hsp = (struct serv_parm *)&vport->fc_sparam; - ae->un.MaxFrameSize = - (((uint32_t)hsp->cmn. - bbRcvSizeMsb) << 8) | (uint32_t)hsp->cmn. - bbRcvSizeLsb; - ae->un.MaxFrameSize = - cpu_to_be32(ae->un.MaxFrameSize); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #5 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.OsDeviceName)); - ad->AttrType = cpu_to_be16(RPRT_OS_DEVICE_NAME); - strncpy((char *)ae->un.OsDeviceName, LPFC_DRIVER_NAME, - sizeof(ae->un.OsDeviceName)); - len = strnlen((char *)ae->un.OsDeviceName, - sizeof(ae->un.OsDeviceName)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - pab->ab.EntryCnt++; - size += FOURBYTES + len; - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #6 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.HostName)); - snprintf(ae->un.HostName, sizeof(ae->un.HostName), "%s", - init_utsname()->nodename); - ad->AttrType = cpu_to_be16(RPRT_HOST_NAME); - len = strnlen(ae->un.HostName, - sizeof(ae->un.HostName)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = - cpu_to_be16(FOURBYTES + len); - pab->ab.EntryCnt++; - size += FOURBYTES + len; - if ((size + sizeof(struct lpfc_name)) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; + pab = (struct lpfc_fdmi_reg_portattr *) + ((uint8_t *)pab + sizeof(struct lpfc_name)); + } - /* - * Currently switches don't seem to support the - * following extended Port attributes. - */ - if (!(vport->cfg_fdmi_on & LPFC_FDMI_ALL_ATTRIB)) - goto port_out; + memcpy((uint8_t *)&pab->PortName, + (uint8_t *)&vport->fc_sparam.portName, + sizeof(struct lpfc_name)); + size += sizeof(struct lpfc_name) + FOURBYTES; + pab->ab.EntryCnt = 0; + bit_pos = 0; + if (new_mask) + mask = new_mask; + else + mask = vport->fdmi_port_mask; - /* #7 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(struct lpfc_name)); - ad->AttrType = cpu_to_be16(RPRT_NODENAME); - ad->AttrLen = cpu_to_be16(FOURBYTES - + sizeof(struct lpfc_name)); - memcpy(&ae->un.NodeName, &vport->fc_sparam.nodeName, - sizeof(struct lpfc_name)); - pab->ab.EntryCnt++; - size += FOURBYTES + sizeof(struct lpfc_name); - if ((size + sizeof(struct lpfc_name)) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #8 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(struct lpfc_name)); - ad->AttrType = cpu_to_be16(RPRT_PORTNAME); - ad->AttrLen = cpu_to_be16(FOURBYTES - + sizeof(struct lpfc_name)); - memcpy(&ae->un.PortName, &vport->fc_sparam.portName, - sizeof(struct lpfc_name)); - pab->ab.EntryCnt++; - size += FOURBYTES + sizeof(struct lpfc_name); - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #9 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.NodeSymName)); - ad->AttrType = cpu_to_be16(RPRT_SYM_PORTNAME); - len = lpfc_vport_symbolic_port_name(vport, - ae->un.NodeSymName, sizeof(ae->un.NodeSymName)); - len += (len & 3) ? (4 - (len & 3)) : 4; - ad->AttrLen = cpu_to_be16(FOURBYTES + len); - pab->ab.EntryCnt++; - size += FOURBYTES + len; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #10 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_PORT_TYPE); - ae->un.PortState = 0; - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #11 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_CLASS); - ae->un.SupportClass = - cpu_to_be32(FC_COS_CLASS2 | FC_COS_CLASS3); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - if ((size + sizeof(struct lpfc_name)) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #12 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(struct lpfc_name)); - ad->AttrType = cpu_to_be16(RPRT_FABRICNAME); - ad->AttrLen = cpu_to_be16(FOURBYTES - + sizeof(struct lpfc_name)); - memcpy(&ae->un.FabricName, &vport->fabric_nodename, - sizeof(struct lpfc_name)); - pab->ab.EntryCnt++; - size += FOURBYTES + sizeof(struct lpfc_name); - if ((size + LPFC_FDMI_MAX_AE_SIZE) > - (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #13 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - memset(ae, 0, sizeof(ae->un.FC4Types)); - ad->AttrType = - cpu_to_be16(RPRT_ACTIVE_FC4_TYPES); - ad->AttrLen = cpu_to_be16(FOURBYTES + 32); - ae->un.FC4Types[0] = 0x40; /* Type 1 - ELS */ - ae->un.FC4Types[1] = 0x80; /* Type 8 - FCP */ - ae->un.FC4Types[4] = 0x80; /* Type 32 - CT */ - pab->ab.EntryCnt++; - size += FOURBYTES + 32; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #257 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_PORT_STATE); - ae->un.PortState = 0; - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #258 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_DISC_PORT); - ae->un.PortState = lpfc_find_map_node(vport); - ae->un.PortState = cpu_to_be32(ae->un.PortState); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; - if ((size + 4) > (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) - goto port_out; - - /* #259 Port attribute entry */ - ad = (struct lpfc_fdmi_attr_def *) - ((uint8_t *)pab + size); - ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; - ad->AttrType = cpu_to_be16(RPRT_PORT_ID); - ae->un.PortId = cpu_to_be32(vport->fc_myDID); - ad->AttrLen = cpu_to_be16(FOURBYTES + 4); - pab->ab.EntryCnt++; - size += FOURBYTES + 4; -port_out: - pab->ab.EntryCnt = cpu_to_be32(pab->ab.EntryCnt); - /* Total size */ - size = GID_REQUEST_SZ - 4 + size; + /* Mask will dictate what attributes to build in the request */ + while (mask) { + if (mask & 0x1) { + func = lpfc_fdmi_port_action[bit_pos]; + size += func(vport, + (struct lpfc_fdmi_attr_def *) + ((uint8_t *)pab + size)); + pab->ab.EntryCnt++; + if ((size + 256) > + (LPFC_BPL_SIZE - LPFC_CT_PREAMBLE)) + goto port_out; + } + mask = mask >> 1; + bit_pos++; } +port_out: + pab->ab.EntryCnt = cpu_to_be32(pab->ab.EntryCnt); + /* Total size */ + if (cmdcode == SLI_MGMT_RPRT) + size += sizeof(struct lpfc_name); + size = GID_REQUEST_SZ - 4 + size; break; case SLI_MGMT_GHAT: @@ -2158,41 +2749,6 @@ } void -lpfc_fdmi_tmo(unsigned long ptr) -{ - struct lpfc_vport *vport = (struct lpfc_vport *)ptr; - struct lpfc_hba *phba = vport->phba; - uint32_t tmo_posted; - unsigned long iflag; - - spin_lock_irqsave(&vport->work_port_lock, iflag); - tmo_posted = vport->work_port_events & WORKER_FDMI_TMO; - if (!tmo_posted) - vport->work_port_events |= WORKER_FDMI_TMO; - spin_unlock_irqrestore(&vport->work_port_lock, iflag); - - if (!tmo_posted) - lpfc_worker_wake_up(phba); - return; -} - -void -lpfc_fdmi_timeout_handler(struct lpfc_vport *vport) -{ - struct lpfc_nodelist *ndlp; - - ndlp = lpfc_findnode_did(vport, FDMI_DID); - if (ndlp && NLP_CHK_NODE_ACT(ndlp)) { - if (init_utsname()->nodename[0] != '\0') - lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA); - else - mod_timer(&vport->fc_fdmitmo, jiffies + - msecs_to_jiffies(1000 * 60)); - } - return; -} - -void lpfc_decode_firmware_rev(struct lpfc_hba *phba, char *fwrevision, int flag) { struct lpfc_sli *psli = &phba->sli; --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_els.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_els.c @@ -455,9 +455,9 @@ lpfc_issue_reg_vfi(struct lpfc_vport *vport) { struct lpfc_hba *phba = vport->phba; - LPFC_MBOXQ_t *mboxq; + LPFC_MBOXQ_t *mboxq = NULL; struct lpfc_nodelist *ndlp; - struct lpfc_dmabuf *dmabuf; + struct lpfc_dmabuf *dmabuf = NULL; int rc = 0; /* move forward in case of SLI4 FC port loopback test and pt2pt mode */ @@ -471,25 +471,33 @@ } } - dmabuf = kzalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); - if (!dmabuf) { + mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); + if (!mboxq) { rc = -ENOMEM; goto fail; } - dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); - if (!dmabuf->virt) { - rc = -ENOMEM; - goto fail_free_dmabuf; - } - mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); - if (!mboxq) { - rc = -ENOMEM; - goto fail_free_coherent; + /* Supply CSP's only if we are fabric connect or pt-to-pt connect */ + if ((vport->fc_flag & FC_FABRIC) || (vport->fc_flag & FC_PT2PT)) { + dmabuf = kzalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); + if (!dmabuf) { + rc = -ENOMEM; + goto fail; + } + dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); + if (!dmabuf->virt) { + rc = -ENOMEM; + goto fail; + } + memcpy(dmabuf->virt, &phba->fc_fabparam, + sizeof(struct serv_parm)); } + vport->port_state = LPFC_FABRIC_CFG_LINK; - memcpy(dmabuf->virt, &phba->fc_fabparam, sizeof(vport->fc_sparam)); - lpfc_reg_vfi(mboxq, vport, dmabuf->phys); + if (dmabuf) + lpfc_reg_vfi(mboxq, vport, dmabuf->phys); + else + lpfc_reg_vfi(mboxq, vport, 0); mboxq->mbox_cmpl = lpfc_mbx_cmpl_reg_vfi; mboxq->vport = vport; @@ -497,17 +505,19 @@ rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); if (rc == MBX_NOT_FINISHED) { rc = -ENXIO; - goto fail_free_mbox; + goto fail; } return 0; -fail_free_mbox: - mempool_free(mboxq, phba->mbox_mem_pool); -fail_free_coherent: - lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); -fail_free_dmabuf: - kfree(dmabuf); fail: + if (mboxq) + mempool_free(mboxq, phba->mbox_mem_pool); + if (dmabuf) { + if (dmabuf->virt) + lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); + kfree(dmabuf); + } + lpfc_vport_set_state(vport, FC_VPORT_FAILED); lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, "0289 Issue Register VFI failed: Err %d\n", rc); @@ -678,6 +688,21 @@ sp->cmn.bbRcvSizeLsb; fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); + if (fabric_param_changed) { + /* Reset FDMI attribute masks based on config parameter */ + if (phba->cfg_fdmi_on == LPFC_FDMI_NO_SUPPORT) { + vport->fdmi_hba_mask = 0; + vport->fdmi_port_mask = 0; + } else { + /* Setup appropriate attribute masks */ + vport->fdmi_hba_mask = LPFC_FDMI2_HBA_ATTR; + if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN) + vport->fdmi_port_mask = LPFC_FDMI2_SMART_ATTR; + else + vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR; + } + + } memcpy(&vport->fabric_portname, &sp->portName, sizeof(struct lpfc_name)); memcpy(&vport->fabric_nodename, &sp->nodeName, @@ -711,9 +736,10 @@ * For FC we need to do some special processing because of the SLI * Port's default settings of the Common Service Parameters. */ - if (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC) { + if ((phba->sli_rev == LPFC_SLI_REV4) && + (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC)) { /* If physical FC port changed, unreg VFI and ALL VPIs / RPIs */ - if ((phba->sli_rev == LPFC_SLI_REV4) && fabric_param_changed) + if (fabric_param_changed) lpfc_unregister_fcf_prep(phba); /* This should just update the VFI CSPs*/ @@ -824,13 +850,21 @@ spin_lock_irq(shost->host_lock); vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); + vport->fc_flag |= FC_PT2PT; spin_unlock_irq(shost->host_lock); - phba->fc_edtov = FF_DEF_EDTOV; - phba->fc_ratov = FF_DEF_RATOV; + /* If physical FC port changed, unreg VFI and ALL VPIs / RPIs */ + if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { + lpfc_unregister_fcf_prep(phba); + + spin_lock_irq(shost->host_lock); + vport->fc_flag &= ~FC_VFI_REGISTERED; + spin_unlock_irq(shost->host_lock); + phba->fc_topology_changed = 0; + } + rc = memcmp(&vport->fc_portname, &sp->portName, sizeof(vport->fc_portname)); - memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); if (rc >= 0) { /* This side will initiate the PLOGI */ @@ -839,38 +873,14 @@ spin_unlock_irq(shost->host_lock); /* - * N_Port ID cannot be 0, set our to LocalID the other - * side will be RemoteID. + * N_Port ID cannot be 0, set our Id to LocalID + * the other side will be RemoteID. */ /* not equal */ if (rc) vport->fc_myDID = PT2PT_LocalID; - mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); - if (!mbox) - goto fail; - - lpfc_config_link(phba, mbox); - - mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; - mbox->vport = vport; - rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); - if (rc == MBX_NOT_FINISHED) { - mempool_free(mbox, phba->mbox_mem_pool); - goto fail; - } - - /* - * For SLI4, the VFI/VPI are registered AFTER the - * Nport with the higher WWPN sends the PLOGI with - * an assigned NPortId. - */ - - /* not equal */ - if ((phba->sli_rev == LPFC_SLI_REV4) && rc) - lpfc_issue_reg_vfi(vport); - /* Decrement ndlp reference count indicating that ndlp can be * safely released when other references to it are done. */ @@ -912,29 +922,20 @@ /* If we are pt2pt with another NPort, force NPIV off! */ phba->sli3_options &= ~LPFC_SLI3_NPIV_ENABLED; - spin_lock_irq(shost->host_lock); - vport->fc_flag |= FC_PT2PT; - spin_unlock_irq(shost->host_lock); - /* If physical FC port changed, unreg VFI and ALL VPIs / RPIs */ - if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { - lpfc_unregister_fcf_prep(phba); + mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); + if (!mbox) + goto fail; - /* The FC_VFI_REGISTERED flag will get clear in the cmpl - * handler for unreg_vfi, but if we don't force the - * FC_VFI_REGISTERED flag then the reg_vfi mailbox could be - * built with the update bit set instead of just the vp bit to - * change the Nport ID. We need to have the vp set and the - * Upd cleared on topology changes. - */ - spin_lock_irq(shost->host_lock); - vport->fc_flag &= ~FC_VFI_REGISTERED; - spin_unlock_irq(shost->host_lock); - phba->fc_topology_changed = 0; - lpfc_issue_reg_vfi(vport); + lpfc_config_link(phba, mbox); + + mbox->mbox_cmpl = lpfc_mbx_cmpl_local_config_link; + mbox->vport = vport; + rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); + if (rc == MBX_NOT_FINISHED) { + mempool_free(mbox, phba->mbox_mem_pool); + goto fail; } - /* Start discovery - this should just do CLEAR_LA */ - lpfc_disc_start(vport); return 0; fail: return -ENXIO; @@ -1157,6 +1158,7 @@ spin_lock_irq(&phba->hbalock); phba->fcf.fcf_flag &= ~FCF_DISCOVERY; spin_unlock_irq(&phba->hbalock); + lpfc_nlp_put(ndlp); if (!lpfc_error_lost_link(irsp)) { @@ -3792,14 +3794,17 @@ lpfc_nlp_set_state(vport, ndlp, NLP_STE_REG_LOGIN_ISSUE); } + + ndlp->nlp_flag |= NLP_REG_LOGIN_SEND; if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) != MBX_NOT_FINISHED) goto out; - else - /* Decrement the ndlp reference count we - * set for this failed mailbox command. - */ - lpfc_nlp_put(ndlp); + + /* Decrement the ndlp reference count we + * set for this failed mailbox command. + */ + lpfc_nlp_put(ndlp); + ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND; /* ELS rsp: Cannot issue reg_login for */ lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, @@ -3856,6 +3861,7 @@ * the routine lpfc_els_free_iocb. */ cmdiocb->context1 = NULL; + } lpfc_els_free_iocb(phba, cmdiocb); @@ -3898,6 +3904,7 @@ IOCB_t *oldcmd; struct lpfc_iocbq *elsiocb; uint8_t *pcmd; + struct serv_parm *sp; uint16_t cmdsize; int rc; ELS_PKT *els_pkt_ptr; @@ -3927,6 +3934,7 @@ "Issue ACC: did:x%x flg:x%x", ndlp->nlp_DID, ndlp->nlp_flag, 0); break; + case ELS_CMD_FLOGI: case ELS_CMD_PLOGI: cmdsize = (sizeof(struct serv_parm) + sizeof(uint32_t)); elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, @@ -3944,10 +3952,34 @@ *((uint32_t *) (pcmd)) = ELS_CMD_ACC; pcmd += sizeof(uint32_t); - memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); + sp = (struct serv_parm *)pcmd; + + if (flag == ELS_CMD_FLOGI) { + /* Copy the received service parameters back */ + memcpy(sp, &phba->fc_fabparam, + sizeof(struct serv_parm)); + + /* Clear the F_Port bit */ + sp->cmn.fPort = 0; + + /* Mark all class service parameters as invalid */ + sp->cls1.classValid = 0; + sp->cls2.classValid = 0; + sp->cls3.classValid = 0; + sp->cls4.classValid = 0; + + /* Copy our worldwide names */ + memcpy(&sp->portName, &vport->fc_sparam.portName, + sizeof(struct lpfc_name)); + memcpy(&sp->nodeName, &vport->fc_sparam.nodeName, + sizeof(struct lpfc_name)); + } else { + memcpy(pcmd, &vport->fc_sparam, + sizeof(struct serv_parm)); + } lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, - "Issue ACC PLOGI: did:x%x flg:x%x", + "Issue ACC FLOGI/PLOGI: did:x%x flg:x%x", ndlp->nlp_DID, ndlp->nlp_flag, 0); break; case ELS_CMD_PRLO: @@ -4673,6 +4705,23 @@ desc->length = cpu_to_be32(sizeof(desc->info)); } +int +lpfc_rdp_res_fec_desc(struct fc_fec_rdp_desc *desc, READ_LNK_VAR *stat) +{ + if (bf_get(lpfc_read_link_stat_gec2, stat) == 0) + return 0; + desc->tag = cpu_to_be32(RDP_FEC_DESC_TAG); + + desc->info.CorrectedBlocks = + cpu_to_be32(stat->fecCorrBlkCount); + desc->info.UncorrectableBlocks = + cpu_to_be32(stat->fecUncorrBlkCount); + + desc->length = cpu_to_be32(sizeof(desc->info)); + + return sizeof(struct fc_fec_rdp_desc); +} + void lpfc_rdp_res_speed(struct fc_rdp_port_speed_desc *desc, struct lpfc_hba *phba) { @@ -4681,26 +4730,26 @@ desc->tag = cpu_to_be32(RDP_PORT_SPEED_DESC_TAG); - switch (phba->sli4_hba.link_state.speed) { - case LPFC_FC_LA_SPEED_1G: + switch (phba->fc_linkspeed) { + case LPFC_LINK_SPEED_1GHZ: rdp_speed = RDP_PS_1GB; break; - case LPFC_FC_LA_SPEED_2G: + case LPFC_LINK_SPEED_2GHZ: rdp_speed = RDP_PS_2GB; break; - case LPFC_FC_LA_SPEED_4G: + case LPFC_LINK_SPEED_4GHZ: rdp_speed = RDP_PS_4GB; break; - case LPFC_FC_LA_SPEED_8G: + case LPFC_LINK_SPEED_8GHZ: rdp_speed = RDP_PS_8GB; break; - case LPFC_FC_LA_SPEED_10G: + case LPFC_LINK_SPEED_10GHZ: rdp_speed = RDP_PS_10GB; break; - case LPFC_FC_LA_SPEED_16G: + case LPFC_LINK_SPEED_16GHZ: rdp_speed = RDP_PS_16GB; break; - case LPFC_FC_LA_SPEED_32G: + case LPFC_LINK_SPEED_32GHZ: rdp_speed = RDP_PS_32GB; break; default: @@ -4778,15 +4827,18 @@ struct lpfc_nodelist *ndlp = rdp_context->ndlp; struct lpfc_vport *vport = ndlp->vport; struct lpfc_iocbq *elsiocb; + struct ulp_bde64 *bpl; IOCB_t *icmd; uint8_t *pcmd; struct ls_rjt *stat; struct fc_rdp_res_frame *rdp_res; uint32_t cmdsize; - int rc; + int rc, fec_size; if (status != SUCCESS) goto error; + + /* This will change once we know the true size of the RDP payload */ cmdsize = sizeof(struct fc_rdp_res_frame); elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, @@ -4823,10 +4875,18 @@ lpfc_rdp_res_diag_port_names(&rdp_res->diag_port_names_desc, phba); lpfc_rdp_res_attach_port_names(&rdp_res->attached_port_names_desc, vport, ndlp); - rdp_res->length = cpu_to_be32(RDP_DESC_PAYLOAD_SIZE); - + fec_size = lpfc_rdp_res_fec_desc(&rdp_res->fec_desc, + &rdp_context->link_stat); + rdp_res->length = cpu_to_be32(fec_size + RDP_DESC_PAYLOAD_SIZE); elsiocb->iocb_cmpl = lpfc_cmpl_els_rsp; + /* Now that we know the true size of the payload, update the BPL */ + bpl = (struct ulp_bde64 *) + (((struct lpfc_dmabuf *)(elsiocb->context3))->virt); + bpl->tus.f.bdeSize = (fec_size + RDP_DESC_PAYLOAD_SIZE + 8); + bpl->tus.f.bdeFlags = 0; + bpl->tus.w = le32_to_cpu(bpl->tus.w); + phba->fc_stat.elsXmitACC++; rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); if (rc == IOCB_ERROR) @@ -4956,13 +5016,12 @@ if (RDP_NPORT_ID_SIZE != be32_to_cpu(rdp_req->nport_id_desc.length)) goto rjt_logerr; - rdp_context = kmalloc(sizeof(struct lpfc_rdp_context), GFP_KERNEL); + rdp_context = kzalloc(sizeof(struct lpfc_rdp_context), GFP_KERNEL); if (!rdp_context) { rjt_err = LSRJT_UNABLE_TPC; goto error; } - memset(rdp_context, 0, sizeof(struct lpfc_rdp_context)); cmd = &cmdiocb->iocb; rdp_context->ndlp = lpfc_nlp_get(ndlp); rdp_context->ox_id = cmd->unsli3.rcvsli3.ox_id; @@ -5739,7 +5798,6 @@ IOCB_t *icmd = &cmdiocb->iocb; struct serv_parm *sp; LPFC_MBOXQ_t *mbox; - struct ls_rjt stat; uint32_t cmd, did; int rc; uint32_t fc_flag = 0; @@ -5765,135 +5823,92 @@ return 1; } - if ((lpfc_check_sparm(vport, ndlp, sp, CLASS3, 1))) { - /* For a FLOGI we accept, then if our portname is greater - * then the remote portname we initiate Nport login. - */ + (void) lpfc_check_sparm(vport, ndlp, sp, CLASS3, 1); - rc = memcmp(&vport->fc_portname, &sp->portName, - sizeof(struct lpfc_name)); - if (!rc) { - if (phba->sli_rev < LPFC_SLI_REV4) { - mbox = mempool_alloc(phba->mbox_mem_pool, - GFP_KERNEL); - if (!mbox) - return 1; - lpfc_linkdown(phba); - lpfc_init_link(phba, mbox, - phba->cfg_topology, - phba->cfg_link_speed); - mbox->u.mb.un.varInitLnk.lipsr_AL_PA = 0; - mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; - mbox->vport = vport; - rc = lpfc_sli_issue_mbox(phba, mbox, - MBX_NOWAIT); - lpfc_set_loopback_flag(phba); - if (rc == MBX_NOT_FINISHED) - mempool_free(mbox, phba->mbox_mem_pool); - return 1; - } else { - /* abort the flogi coming back to ourselves - * due to external loopback on the port. - */ - lpfc_els_abort_flogi(phba); - return 0; - } - } else if (rc > 0) { /* greater than */ - spin_lock_irq(shost->host_lock); - vport->fc_flag |= FC_PT2PT_PLOGI; - spin_unlock_irq(shost->host_lock); + /* + * If our portname is greater than the remote portname, + * then we initiate Nport login. + */ - /* If we have the high WWPN we can assign our own - * myDID; otherwise, we have to WAIT for a PLOGI - * from the remote NPort to find out what it - * will be. - */ - vport->fc_myDID = PT2PT_LocalID; - } else - vport->fc_myDID = PT2PT_RemoteID; + rc = memcmp(&vport->fc_portname, &sp->portName, + sizeof(struct lpfc_name)); - /* - * The vport state should go to LPFC_FLOGI only - * AFTER we issue a FLOGI, not receive one. + if (!rc) { + if (phba->sli_rev < LPFC_SLI_REV4) { + mbox = mempool_alloc(phba->mbox_mem_pool, + GFP_KERNEL); + if (!mbox) + return 1; + lpfc_linkdown(phba); + lpfc_init_link(phba, mbox, + phba->cfg_topology, + phba->cfg_link_speed); + mbox->u.mb.un.varInitLnk.lipsr_AL_PA = 0; + mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; + mbox->vport = vport; + rc = lpfc_sli_issue_mbox(phba, mbox, + MBX_NOWAIT); + lpfc_set_loopback_flag(phba); + if (rc == MBX_NOT_FINISHED) + mempool_free(mbox, phba->mbox_mem_pool); + return 1; + } + + /* abort the flogi coming back to ourselves + * due to external loopback on the port. */ + lpfc_els_abort_flogi(phba); + return 0; + + } else if (rc > 0) { /* greater than */ spin_lock_irq(shost->host_lock); - fc_flag = vport->fc_flag; - port_state = vport->port_state; - vport->fc_flag |= FC_PT2PT; - vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); + vport->fc_flag |= FC_PT2PT_PLOGI; spin_unlock_irq(shost->host_lock); - lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, - "3311 Rcv Flogi PS x%x new PS x%x " - "fc_flag x%x new fc_flag x%x\n", - port_state, vport->port_state, - fc_flag, vport->fc_flag); - /* - * We temporarily set fc_myDID to make it look like we are - * a Fabric. This is done just so we end up with the right - * did / sid on the FLOGI ACC rsp. + /* If we have the high WWPN we can assign our own + * myDID; otherwise, we have to WAIT for a PLOGI + * from the remote NPort to find out what it + * will be. */ - did = vport->fc_myDID; - vport->fc_myDID = Fabric_DID; - + vport->fc_myDID = PT2PT_LocalID; } else { - /* Reject this request because invalid parameters */ - stat.un.b.lsRjtRsvd0 = 0; - stat.un.b.lsRjtRsnCode = LSRJT_UNABLE_TPC; - stat.un.b.lsRjtRsnCodeExp = LSEXP_SPARM_OPTIONS; - stat.un.b.vendorUnique = 0; - - /* - * We temporarily set fc_myDID to make it look like we are - * a Fabric. This is done just so we end up with the right - * did / sid on the FLOGI LS_RJT rsp. - */ - did = vport->fc_myDID; - vport->fc_myDID = Fabric_DID; - - lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, - NULL); + vport->fc_myDID = PT2PT_RemoteID; + } - /* Now lets put fc_myDID back to what its supposed to be */ - vport->fc_myDID = did; + /* + * The vport state should go to LPFC_FLOGI only + * AFTER we issue a FLOGI, not receive one. + */ + spin_lock_irq(shost->host_lock); + fc_flag = vport->fc_flag; + port_state = vport->port_state; + vport->fc_flag |= FC_PT2PT; + vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); + spin_unlock_irq(shost->host_lock); + lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, + "3311 Rcv Flogi PS x%x new PS x%x " + "fc_flag x%x new fc_flag x%x\n", + port_state, vport->port_state, + fc_flag, vport->fc_flag); - return 1; - } + /* + * We temporarily set fc_myDID to make it look like we are + * a Fabric. This is done just so we end up with the right + * did / sid on the FLOGI ACC rsp. + */ + did = vport->fc_myDID; + vport->fc_myDID = Fabric_DID; - /* send our FLOGI first */ - if (vport->port_state < LPFC_FLOGI) { - vport->fc_myDID = 0; - lpfc_initial_flogi(vport); - vport->fc_myDID = Fabric_DID; - } + memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); /* Send back ACC */ - lpfc_els_rsp_acc(vport, ELS_CMD_PLOGI, cmdiocb, ndlp, NULL); + lpfc_els_rsp_acc(vport, ELS_CMD_FLOGI, cmdiocb, ndlp, NULL); /* Now lets put fc_myDID back to what its supposed to be */ vport->fc_myDID = did; - if (!(vport->fc_flag & FC_PT2PT_PLOGI)) { - - mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); - if (!mbox) - goto fail; - - lpfc_config_link(phba, mbox); - - mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; - mbox->vport = vport; - rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); - if (rc == MBX_NOT_FINISHED) { - mempool_free(mbox, phba->mbox_mem_pool); - goto fail; - } - } - return 0; -fail: - return 1; } /** @@ -7345,7 +7360,7 @@ /* reject till our FLOGI completes */ if ((vport->port_state < LPFC_FABRIC_CFG_LINK) && - (cmd != ELS_CMD_FLOGI)) { + (cmd != ELS_CMD_FLOGI)) { rjt_err = LSRJT_UNABLE_TPC; rjt_exp = LSEXP_NOTHING_MORE; goto lsrjt; @@ -7381,6 +7396,7 @@ rjt_exp = LSEXP_NOTHING_MORE; break; } + if (vport->port_state < LPFC_DISC_AUTH) { if (!(phba->pport->fc_flag & FC_PT2PT) || (phba->pport->fc_flag & FC_PT2PT_PLOGI)) { @@ -7730,6 +7746,35 @@ } } +void +lpfc_start_fdmi(struct lpfc_vport *vport) +{ + struct lpfc_hba *phba = vport->phba; + struct lpfc_nodelist *ndlp; + + /* If this is the first time, allocate an ndlp and initialize + * it. Otherwise, make sure the node is enabled and then do the + * login. + */ + ndlp = lpfc_findnode_did(vport, FDMI_DID); + if (!ndlp) { + ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); + if (ndlp) { + lpfc_nlp_init(vport, ndlp, FDMI_DID); + ndlp->nlp_type |= NLP_FABRIC; + } else { + return; + } + } + if (!NLP_CHK_NODE_ACT(ndlp)) + ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_NPR_NODE); + + if (ndlp) { + lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); + lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); + } +} + /** * lpfc_do_scr_ns_plogi - Issue a plogi to the name server for scr * @phba: pointer to lpfc hba data structure. @@ -7746,7 +7791,7 @@ void lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) { - struct lpfc_nodelist *ndlp, *ndlp_fdmi; + struct lpfc_nodelist *ndlp; struct Scsi_Host *shost = lpfc_shost_from_vport(vport); /* @@ -7804,32 +7849,9 @@ return; } - if (vport->cfg_fdmi_on & LPFC_FDMI_SUPPORT) { - /* If this is the first time, allocate an ndlp and initialize - * it. Otherwise, make sure the node is enabled and then do the - * login. - */ - ndlp_fdmi = lpfc_findnode_did(vport, FDMI_DID); - if (!ndlp_fdmi) { - ndlp_fdmi = mempool_alloc(phba->nlp_mem_pool, - GFP_KERNEL); - if (ndlp_fdmi) { - lpfc_nlp_init(vport, ndlp_fdmi, FDMI_DID); - ndlp_fdmi->nlp_type |= NLP_FABRIC; - } else - return; - } - if (!NLP_CHK_NODE_ACT(ndlp_fdmi)) - ndlp_fdmi = lpfc_enable_node(vport, - ndlp_fdmi, - NLP_STE_NPR_NODE); - - if (ndlp_fdmi) { - lpfc_nlp_set_state(vport, ndlp_fdmi, - NLP_STE_PLOGI_ISSUE); - lpfc_issue_els_plogi(vport, ndlp_fdmi->nlp_DID, 0); - } - } + if ((phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) && + (vport->load_flag & FC_ALLOW_FDMI)) + lpfc_start_fdmi(vport); } /** --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_hbadisc.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -674,8 +674,6 @@ lpfc_mbox_timeout_handler(phba); if (work_port_events & WORKER_FABRIC_BLOCK_TMO) lpfc_unblock_fabric_iocbs(phba); - if (work_port_events & WORKER_FDMI_TMO) - lpfc_fdmi_timeout_handler(vport); if (work_port_events & WORKER_RAMP_DOWN_QUEUE) lpfc_ramp_down_queue_handler(phba); if (work_port_events & WORKER_DELAYED_DISC_TMO) @@ -1083,7 +1081,7 @@ } -static void +void lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) { struct lpfc_vport *vport = pmb->vport; @@ -1113,8 +1111,10 @@ /* Start discovery by sending a FLOGI. port_state is identically * LPFC_FLOGI while waiting for FLOGI cmpl */ - if (vport->port_state != LPFC_FLOGI || vport->fc_flag & FC_PT2PT_PLOGI) + if (vport->port_state != LPFC_FLOGI) lpfc_initial_flogi(vport); + else if (vport->fc_flag & FC_PT2PT) + lpfc_disc_start(vport); return; out: @@ -2963,8 +2963,10 @@ out_free_mem: mempool_free(mboxq, phba->mbox_mem_pool); - lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); - kfree(dmabuf); + if (dmabuf) { + lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); + kfree(dmabuf); + } return; } @@ -3035,19 +3037,22 @@ uint32_t fc_flags = 0; spin_lock_irq(&phba->hbalock); - switch (bf_get(lpfc_mbx_read_top_link_spd, la)) { - case LPFC_LINK_SPEED_1GHZ: - case LPFC_LINK_SPEED_2GHZ: - case LPFC_LINK_SPEED_4GHZ: - case LPFC_LINK_SPEED_8GHZ: - case LPFC_LINK_SPEED_10GHZ: - case LPFC_LINK_SPEED_16GHZ: - case LPFC_LINK_SPEED_32GHZ: - phba->fc_linkspeed = bf_get(lpfc_mbx_read_top_link_spd, la); - break; - default: - phba->fc_linkspeed = LPFC_LINK_SPEED_UNKNOWN; - break; + phba->fc_linkspeed = bf_get(lpfc_mbx_read_top_link_spd, la); + + if (!(phba->hba_flag & HBA_FCOE_MODE)) { + switch (bf_get(lpfc_mbx_read_top_link_spd, la)) { + case LPFC_LINK_SPEED_1GHZ: + case LPFC_LINK_SPEED_2GHZ: + case LPFC_LINK_SPEED_4GHZ: + case LPFC_LINK_SPEED_8GHZ: + case LPFC_LINK_SPEED_10GHZ: + case LPFC_LINK_SPEED_16GHZ: + case LPFC_LINK_SPEED_32GHZ: + break; + default: + phba->fc_linkspeed = LPFC_LINK_SPEED_UNKNOWN; + break; + } } if (phba->fc_topology && @@ -3448,10 +3453,10 @@ spin_lock_irq(shost->host_lock); ndlp->nlp_flag &= ~NLP_IGNR_REG_CMPL; spin_unlock_irq(shost->host_lock); - } else - /* Good status, call state machine */ - lpfc_disc_state_machine(vport, ndlp, pmb, - NLP_EVT_CMPL_REG_LOGIN); + } + + /* Call state machine */ + lpfc_disc_state_machine(vport, ndlp, pmb, NLP_EVT_CMPL_REG_LOGIN); lpfc_mbuf_free(phba, mp->virt, mp->phys); kfree(mp); @@ -5550,15 +5555,15 @@ ndlp->nlp_usg_map, ndlp); /* * Start issuing Fabric-Device Management Interface (FDMI) command to - * 0xfffffa (FDMI well known port) or Delay issuing FDMI command if - * fdmi-on=2 (supporting RPA/hostnmae) + * 0xfffffa (FDMI well known port). + * DHBA -> DPRT -> RHBA -> RPA (physical port) + * DPRT -> RPRT (vports) */ - - if (vport->cfg_fdmi_on & LPFC_FDMI_REG_DELAY) - mod_timer(&vport->fc_fdmitmo, - jiffies + msecs_to_jiffies(1000 * 60)); + if (vport->port_type == LPFC_PHYSICAL_PORT) + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0); else - lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA); + lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT, 0); + /* decrement the node reference count held for this callback * function. --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_hw.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_hw.h @@ -1097,6 +1097,18 @@ }; +struct fc_rdp_fec_info { + uint32_t CorrectedBlocks; + uint32_t UncorrectableBlocks; +}; + +#define RDP_FEC_DESC_TAG 0x00010005 +struct fc_fec_rdp_desc { + uint32_t tag; + uint32_t length; + struct fc_rdp_fec_info info; +}; + struct fc_rdp_link_error_status_payload_info { struct fc_link_status link_status; /* 24 bytes */ uint32_t port_type; /* bits 31-30 only */ @@ -1196,14 +1208,15 @@ struct fc_rdp_link_error_status_desc link_error_desc; /* Word 13-21 */ struct fc_rdp_port_name_desc diag_port_names_desc; /* Word 22-27 */ struct fc_rdp_port_name_desc attached_port_names_desc;/* Word 28-33 */ + struct fc_fec_rdp_desc fec_desc; /* FC Word 34 - 37 */ }; #define RDP_DESC_PAYLOAD_SIZE (sizeof(struct fc_rdp_link_service_desc) \ - + sizeof(struct fc_rdp_sfp_desc) \ - + sizeof(struct fc_rdp_port_speed_desc) \ - + sizeof(struct fc_rdp_link_error_status_desc) \ - + (sizeof(struct fc_rdp_port_name_desc) * 2)) + + sizeof(struct fc_rdp_sfp_desc) \ + + sizeof(struct fc_rdp_port_speed_desc) \ + + sizeof(struct fc_rdp_link_error_status_desc) \ + + (sizeof(struct fc_rdp_port_name_desc) * 2)) /******** FDMI ********/ @@ -1233,31 +1246,10 @@ /* Attribute Entry */ struct lpfc_fdmi_attr_entry { union { - uint32_t VendorSpecific; - uint32_t SupportClass; - uint32_t SupportSpeed; - uint32_t PortSpeed; - uint32_t MaxFrameSize; - uint32_t MaxCTPayloadLen; - uint32_t PortState; - uint32_t PortId; - struct lpfc_name NodeName; - struct lpfc_name PortName; - struct lpfc_name FabricName; - uint8_t FC4Types[32]; - uint8_t Manufacturer[64]; - uint8_t SerialNumber[64]; - uint8_t Model[256]; - uint8_t ModelDescription[256]; - uint8_t HardwareVersion[256]; - uint8_t DriverVersion[256]; - uint8_t OptionROMVersion[256]; - uint8_t FirmwareVersion[256]; - uint8_t OsHostName[256]; - uint8_t NodeSymName[256]; - uint8_t OsDeviceName[256]; - uint8_t OsNameVersion[256]; - uint8_t HostName[256]; + uint32_t AttrInt; + uint8_t AttrTypes[32]; + uint8_t AttrString[256]; + struct lpfc_name AttrWWN; } un; }; @@ -1327,6 +1319,8 @@ #define SLI_MGMT_DPRT 0x310 /* De-register Port */ #define SLI_MGMT_DPA 0x311 /* De-register Port attributes */ +#define LPFC_FDMI_MAX_RETRY 3 /* Max retries for a FDMI command */ + /* * HBA Attribute Types */ @@ -1342,6 +1336,39 @@ #define RHBA_OS_NAME_VERSION 0xa /* 4 to 256 byte ASCII string */ #define RHBA_MAX_CT_PAYLOAD_LEN 0xb /* 32-bit unsigned int */ #define RHBA_SYM_NODENAME 0xc /* 4 to 256 byte ASCII string */ +#define RHBA_VENDOR_INFO 0xd /* 32-bit unsigned int */ +#define RHBA_NUM_PORTS 0xe /* 32-bit unsigned int */ +#define RHBA_FABRIC_WWNN 0xf /* 8 byte WWNN */ +#define RHBA_BIOS_VERSION 0x10 /* 4 to 256 byte ASCII string */ +#define RHBA_BIOS_STATE 0x11 /* 32-bit unsigned int */ +#define RHBA_VENDOR_ID 0xe0 /* 8 byte ASCII string */ + +/* Bit mask for all individual HBA attributes */ +#define LPFC_FDMI_HBA_ATTR_wwnn 0x00000001 +#define LPFC_FDMI_HBA_ATTR_manufacturer 0x00000002 +#define LPFC_FDMI_HBA_ATTR_sn 0x00000004 +#define LPFC_FDMI_HBA_ATTR_model 0x00000008 +#define LPFC_FDMI_HBA_ATTR_description 0x00000010 +#define LPFC_FDMI_HBA_ATTR_hdw_ver 0x00000020 +#define LPFC_FDMI_HBA_ATTR_drvr_ver 0x00000040 +#define LPFC_FDMI_HBA_ATTR_rom_ver 0x00000080 +#define LPFC_FDMI_HBA_ATTR_fmw_ver 0x00000100 +#define LPFC_FDMI_HBA_ATTR_os_ver 0x00000200 +#define LPFC_FDMI_HBA_ATTR_ct_len 0x00000400 +#define LPFC_FDMI_HBA_ATTR_symbolic_name 0x00000800 +#define LPFC_FDMI_HBA_ATTR_vendor_info 0x00001000 /* Not used */ +#define LPFC_FDMI_HBA_ATTR_num_ports 0x00002000 +#define LPFC_FDMI_HBA_ATTR_fabric_wwnn 0x00004000 +#define LPFC_FDMI_HBA_ATTR_bios_ver 0x00008000 +#define LPFC_FDMI_HBA_ATTR_bios_state 0x00010000 /* Not used */ +#define LPFC_FDMI_HBA_ATTR_vendor_id 0x00020000 + +/* Bit mask for FDMI-1 defined HBA attributes */ +#define LPFC_FDMI1_HBA_ATTR 0x000007ff + +/* Bit mask for FDMI-2 defined HBA attributes */ +/* Skip vendor_info and bios_state */ +#define LPFC_FDMI2_HBA_ATTR 0x0002efff /* * Port Attrubute Types @@ -1353,15 +1380,65 @@ #define RPRT_OS_DEVICE_NAME 0x5 /* 4 to 256 byte ASCII string */ #define RPRT_HOST_NAME 0x6 /* 4 to 256 byte ASCII string */ #define RPRT_NODENAME 0x7 /* 8 byte WWNN */ -#define RPRT_PORTNAME 0x8 /* 8 byte WWNN */ +#define RPRT_PORTNAME 0x8 /* 8 byte WWPN */ #define RPRT_SYM_PORTNAME 0x9 /* 4 to 256 byte ASCII string */ #define RPRT_PORT_TYPE 0xa /* 32-bit unsigned int */ #define RPRT_SUPPORTED_CLASS 0xb /* 32-bit unsigned int */ -#define RPRT_FABRICNAME 0xc /* 8 byte Fabric WWNN */ +#define RPRT_FABRICNAME 0xc /* 8 byte Fabric WWPN */ #define RPRT_ACTIVE_FC4_TYPES 0xd /* 32 byte binary array */ #define RPRT_PORT_STATE 0x101 /* 32-bit unsigned int */ #define RPRT_DISC_PORT 0x102 /* 32-bit unsigned int */ #define RPRT_PORT_ID 0x103 /* 32-bit unsigned int */ +#define RPRT_SMART_SERVICE 0xf100 /* 4 to 256 byte ASCII string */ +#define RPRT_SMART_GUID 0xf101 /* 8 byte WWNN + 8 byte WWPN */ +#define RPRT_SMART_VERSION 0xf102 /* 4 to 256 byte ASCII string */ +#define RPRT_SMART_MODEL 0xf103 /* 4 to 256 byte ASCII string */ +#define RPRT_SMART_PORT_INFO 0xf104 /* 32-bit unsigned int */ +#define RPRT_SMART_QOS 0xf105 /* 32-bit unsigned int */ +#define RPRT_SMART_SECURITY 0xf106 /* 32-bit unsigned int */ + +/* Bit mask for all individual PORT attributes */ +#define LPFC_FDMI_PORT_ATTR_fc4type 0x00000001 +#define LPFC_FDMI_PORT_ATTR_support_speed 0x00000002 +#define LPFC_FDMI_PORT_ATTR_speed 0x00000004 +#define LPFC_FDMI_PORT_ATTR_max_frame 0x00000008 +#define LPFC_FDMI_PORT_ATTR_os_devname 0x00000010 +#define LPFC_FDMI_PORT_ATTR_host_name 0x00000020 +#define LPFC_FDMI_PORT_ATTR_wwnn 0x00000040 +#define LPFC_FDMI_PORT_ATTR_wwpn 0x00000080 +#define LPFC_FDMI_PORT_ATTR_symbolic_name 0x00000100 +#define LPFC_FDMI_PORT_ATTR_port_type 0x00000200 +#define LPFC_FDMI_PORT_ATTR_class 0x00000400 +#define LPFC_FDMI_PORT_ATTR_fabric_wwpn 0x00000800 +#define LPFC_FDMI_PORT_ATTR_port_state 0x00001000 +#define LPFC_FDMI_PORT_ATTR_active_fc4type 0x00002000 +#define LPFC_FDMI_PORT_ATTR_num_disc 0x00004000 +#define LPFC_FDMI_PORT_ATTR_nportid 0x00008000 +#define LPFC_FDMI_SMART_ATTR_service 0x00010000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_guid 0x00020000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_version 0x00040000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_model 0x00080000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_port_info 0x00100000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_qos 0x00200000 /* Vendor specific */ +#define LPFC_FDMI_SMART_ATTR_security 0x00400000 /* Vendor specific */ + +/* Bit mask for FDMI-1 defined PORT attributes */ +#define LPFC_FDMI1_PORT_ATTR 0x0000003f + +/* Bit mask for FDMI-2 defined PORT attributes */ +#define LPFC_FDMI2_PORT_ATTR 0x0000ffff + +/* Bit mask for Smart SAN defined PORT attributes */ +#define LPFC_FDMI2_SMART_ATTR 0x007fffff + +/* Defines for PORT port state attribute */ +#define LPFC_FDMI_PORTSTATE_UNKNOWN 1 +#define LPFC_FDMI_PORTSTATE_ONLINE 2 + +/* Defines for PORT port type attribute */ +#define LPFC_FDMI_PORTTYPE_UNKNOWN 0 +#define LPFC_FDMI_PORTTYPE_NPORT 1 +#define LPFC_FDMI_PORTTYPE_NLPORT 2 /* * Begin HBA configuration parameters. @@ -2498,10 +2575,38 @@ /* Structure for MB Command READ_LINK_STAT (18) */ typedef struct { - uint32_t rsvd1; + uint32_t word0; + +#define lpfc_read_link_stat_rec_SHIFT 0 +#define lpfc_read_link_stat_rec_MASK 0x1 +#define lpfc_read_link_stat_rec_WORD word0 + +#define lpfc_read_link_stat_gec_SHIFT 1 +#define lpfc_read_link_stat_gec_MASK 0x1 +#define lpfc_read_link_stat_gec_WORD word0 + +#define lpfc_read_link_stat_w02oftow23of_SHIFT 2 +#define lpfc_read_link_stat_w02oftow23of_MASK 0x3FFFFF +#define lpfc_read_link_stat_w02oftow23of_WORD word0 + +#define lpfc_read_link_stat_rsvd_SHIFT 24 +#define lpfc_read_link_stat_rsvd_MASK 0x1F +#define lpfc_read_link_stat_rsvd_WORD word0 + +#define lpfc_read_link_stat_gec2_SHIFT 29 +#define lpfc_read_link_stat_gec2_MASK 0x1 +#define lpfc_read_link_stat_gec2_WORD word0 + +#define lpfc_read_link_stat_clrc_SHIFT 30 +#define lpfc_read_link_stat_clrc_MASK 0x1 +#define lpfc_read_link_stat_clrc_WORD word0 + +#define lpfc_read_link_stat_clof_SHIFT 31 +#define lpfc_read_link_stat_clof_MASK 0x1 +#define lpfc_read_link_stat_clof_WORD word0 + uint32_t linkFailureCnt; uint32_t lossSyncCnt; - uint32_t lossSignalCnt; uint32_t primSeqErrCnt; uint32_t invalidXmitWord; @@ -2509,6 +2614,19 @@ uint32_t primSeqTimeout; uint32_t elasticOverrun; uint32_t arbTimeout; + uint32_t advRecBufCredit; + uint32_t curRecBufCredit; + uint32_t advTransBufCredit; + uint32_t curTransBufCredit; + uint32_t recEofCount; + uint32_t recEofdtiCount; + uint32_t recEofniCount; + uint32_t recSofcount; + uint32_t rsvd1; + uint32_t rsvd2; + uint32_t recDrpXriCount; + uint32_t fecCorrBlkCount; + uint32_t fecUncorrBlkCount; } READ_LNK_VAR; /* Structure for MB Command REG_LOGIN (19) */ --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_hw4.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_hw4.h @@ -3317,6 +3317,7 @@ #define LPFC_ASYNC_LINK_SPEED_20GBPS 0x5 #define LPFC_ASYNC_LINK_SPEED_25GBPS 0x6 #define LPFC_ASYNC_LINK_SPEED_40GBPS 0x7 +#define LPFC_ASYNC_LINK_SPEED_100GBPS 0x8 #define lpfc_acqe_link_duplex_SHIFT 16 #define lpfc_acqe_link_duplex_MASK 0x000000FF #define lpfc_acqe_link_duplex_WORD word0 @@ -3447,23 +3448,50 @@ struct lpfc_acqe_misconfigured_event { struct { uint32_t word0; -#define lpfc_sli_misconfigured_port0_SHIFT 0 -#define lpfc_sli_misconfigured_port0_MASK 0x000000FF -#define lpfc_sli_misconfigured_port0_WORD word0 -#define lpfc_sli_misconfigured_port1_SHIFT 8 -#define lpfc_sli_misconfigured_port1_MASK 0x000000FF -#define lpfc_sli_misconfigured_port1_WORD word0 -#define lpfc_sli_misconfigured_port2_SHIFT 16 -#define lpfc_sli_misconfigured_port2_MASK 0x000000FF -#define lpfc_sli_misconfigured_port2_WORD word0 -#define lpfc_sli_misconfigured_port3_SHIFT 24 -#define lpfc_sli_misconfigured_port3_MASK 0x000000FF -#define lpfc_sli_misconfigured_port3_WORD word0 +#define lpfc_sli_misconfigured_port0_state_SHIFT 0 +#define lpfc_sli_misconfigured_port0_state_MASK 0x000000FF +#define lpfc_sli_misconfigured_port0_state_WORD word0 +#define lpfc_sli_misconfigured_port1_state_SHIFT 8 +#define lpfc_sli_misconfigured_port1_state_MASK 0x000000FF +#define lpfc_sli_misconfigured_port1_state_WORD word0 +#define lpfc_sli_misconfigured_port2_state_SHIFT 16 +#define lpfc_sli_misconfigured_port2_state_MASK 0x000000FF +#define lpfc_sli_misconfigured_port2_state_WORD word0 +#define lpfc_sli_misconfigured_port3_state_SHIFT 24 +#define lpfc_sli_misconfigured_port3_state_MASK 0x000000FF +#define lpfc_sli_misconfigured_port3_state_WORD word0 + uint32_t word1; +#define lpfc_sli_misconfigured_port0_op_SHIFT 0 +#define lpfc_sli_misconfigured_port0_op_MASK 0x00000001 +#define lpfc_sli_misconfigured_port0_op_WORD word1 +#define lpfc_sli_misconfigured_port0_severity_SHIFT 1 +#define lpfc_sli_misconfigured_port0_severity_MASK 0x00000003 +#define lpfc_sli_misconfigured_port0_severity_WORD word1 +#define lpfc_sli_misconfigured_port1_op_SHIFT 8 +#define lpfc_sli_misconfigured_port1_op_MASK 0x00000001 +#define lpfc_sli_misconfigured_port1_op_WORD word1 +#define lpfc_sli_misconfigured_port1_severity_SHIFT 9 +#define lpfc_sli_misconfigured_port1_severity_MASK 0x00000003 +#define lpfc_sli_misconfigured_port1_severity_WORD word1 +#define lpfc_sli_misconfigured_port2_op_SHIFT 16 +#define lpfc_sli_misconfigured_port2_op_MASK 0x00000001 +#define lpfc_sli_misconfigured_port2_op_WORD word1 +#define lpfc_sli_misconfigured_port2_severity_SHIFT 17 +#define lpfc_sli_misconfigured_port2_severity_MASK 0x00000003 +#define lpfc_sli_misconfigured_port2_severity_WORD word1 +#define lpfc_sli_misconfigured_port3_op_SHIFT 24 +#define lpfc_sli_misconfigured_port3_op_MASK 0x00000001 +#define lpfc_sli_misconfigured_port3_op_WORD word1 +#define lpfc_sli_misconfigured_port3_severity_SHIFT 25 +#define lpfc_sli_misconfigured_port3_severity_MASK 0x00000003 +#define lpfc_sli_misconfigured_port3_severity_WORD word1 } theEvent; #define LPFC_SLI_EVENT_STATUS_VALID 0x00 #define LPFC_SLI_EVENT_STATUS_NOT_PRESENT 0x01 #define LPFC_SLI_EVENT_STATUS_WRONG_TYPE 0x02 #define LPFC_SLI_EVENT_STATUS_UNSUPPORTED 0x03 +#define LPFC_SLI_EVENT_STATUS_UNQUALIFIED 0x04 +#define LPFC_SLI_EVENT_STATUS_UNCERTIFIED 0x05 }; struct lpfc_acqe_sli { --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_init.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_init.c @@ -1184,8 +1184,10 @@ vports = lpfc_create_vport_work_array(phba); if (vports != NULL) - for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) + for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { lpfc_rcv_seq_check_edtov(vports[i]); + lpfc_fdmi_num_disc_check(vports[i]); + } lpfc_destroy_vport_work_array(phba, vports); if ((phba->link_state == LPFC_HBA_ERROR) || @@ -1290,6 +1292,10 @@ jiffies + msecs_to_jiffies(1000 * LPFC_HB_MBOX_TIMEOUT)); } + } else { + mod_timer(&phba->hb_tmofunc, + jiffies + + msecs_to_jiffies(1000 * LPFC_HB_MBOX_INTERVAL)); } } @@ -2621,7 +2627,6 @@ lpfc_stop_vport_timers(struct lpfc_vport *vport) { del_timer_sync(&vport->els_tmofunc); - del_timer_sync(&vport->fc_fdmitmo); del_timer_sync(&vport->delayed_disc_tmo); lpfc_can_disctmo(vport); return; @@ -3340,10 +3345,6 @@ vport->fc_disctmo.function = lpfc_disc_timeout; vport->fc_disctmo.data = (unsigned long)vport; - init_timer(&vport->fc_fdmitmo); - vport->fc_fdmitmo.function = lpfc_fdmi_tmo; - vport->fc_fdmitmo.data = (unsigned long)vport; - init_timer(&vport->els_tmofunc); vport->els_tmofunc.function = lpfc_els_timeout; vport->els_tmofunc.data = (unsigned long)vport; @@ -3709,49 +3710,6 @@ } /** - * lpfc_sli4_parse_latt_link_speed - Parse sli4 link-attention link speed - * @phba: pointer to lpfc hba data structure. - * @acqe_link: pointer to the async link completion queue entry. - * - * This routine is to parse the SLI4 link-attention link speed and translate - * it into the base driver's link-attention link speed coding. - * - * Return: Link-attention link speed in terms of base driver's coding. - **/ -static uint8_t -lpfc_sli4_parse_latt_link_speed(struct lpfc_hba *phba, - struct lpfc_acqe_link *acqe_link) -{ - uint8_t link_speed; - - switch (bf_get(lpfc_acqe_link_speed, acqe_link)) { - case LPFC_ASYNC_LINK_SPEED_ZERO: - case LPFC_ASYNC_LINK_SPEED_10MBPS: - case LPFC_ASYNC_LINK_SPEED_100MBPS: - link_speed = LPFC_LINK_SPEED_UNKNOWN; - break; - case LPFC_ASYNC_LINK_SPEED_1GBPS: - link_speed = LPFC_LINK_SPEED_1GHZ; - break; - case LPFC_ASYNC_LINK_SPEED_10GBPS: - link_speed = LPFC_LINK_SPEED_10GHZ; - break; - case LPFC_ASYNC_LINK_SPEED_20GBPS: - case LPFC_ASYNC_LINK_SPEED_25GBPS: - case LPFC_ASYNC_LINK_SPEED_40GBPS: - link_speed = LPFC_LINK_SPEED_UNKNOWN; - break; - default: - lpfc_printf_log(phba, KERN_ERR, LOG_INIT, - "0483 Invalid link-attention link speed: x%x\n", - bf_get(lpfc_acqe_link_speed, acqe_link)); - link_speed = LPFC_LINK_SPEED_UNKNOWN; - break; - } - return link_speed; -} - -/** * lpfc_sli_port_speed_get - Get sli3 link speed code to link speed * @phba: pointer to lpfc hba data structure. * @@ -3767,27 +3725,35 @@ if (!lpfc_is_link_up(phba)) return 0; - switch (phba->fc_linkspeed) { - case LPFC_LINK_SPEED_1GHZ: - link_speed = 1000; - break; - case LPFC_LINK_SPEED_2GHZ: - link_speed = 2000; - break; - case LPFC_LINK_SPEED_4GHZ: - link_speed = 4000; - break; - case LPFC_LINK_SPEED_8GHZ: - link_speed = 8000; - break; - case LPFC_LINK_SPEED_10GHZ: - link_speed = 10000; - break; - case LPFC_LINK_SPEED_16GHZ: - link_speed = 16000; - break; - default: - link_speed = 0; + if (phba->sli_rev <= LPFC_SLI_REV3) { + switch (phba->fc_linkspeed) { + case LPFC_LINK_SPEED_1GHZ: + link_speed = 1000; + break; + case LPFC_LINK_SPEED_2GHZ: + link_speed = 2000; + break; + case LPFC_LINK_SPEED_4GHZ: + link_speed = 4000; + break; + case LPFC_LINK_SPEED_8GHZ: + link_speed = 8000; + break; + case LPFC_LINK_SPEED_10GHZ: + link_speed = 10000; + break; + case LPFC_LINK_SPEED_16GHZ: + link_speed = 16000; + break; + default: + link_speed = 0; + } + } else { + if (phba->sli4_hba.link_state.logical_speed) + link_speed = + phba->sli4_hba.link_state.logical_speed; + else + link_speed = phba->sli4_hba.link_state.speed; } return link_speed; } @@ -3983,7 +3949,7 @@ la->eventTag = acqe_link->event_tag; bf_set(lpfc_mbx_read_top_att_type, la, att_type); bf_set(lpfc_mbx_read_top_link_spd, la, - lpfc_sli4_parse_latt_link_speed(phba, acqe_link)); + (bf_get(lpfc_acqe_link_speed, acqe_link))); /* Fake the the following irrelvant fields */ bf_set(lpfc_mbx_read_top_topology, la, LPFC_TOPOLOGY_PT_PT); @@ -4113,22 +4079,18 @@ char message[128]; uint8_t status; uint8_t evt_type; + uint8_t operational = 0; struct temp_event temp_event_data; struct lpfc_acqe_misconfigured_event *misconfigured; struct Scsi_Host *shost; evt_type = bf_get(lpfc_trailer_type, acqe_sli); - /* Special case Lancer */ - if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) != - LPFC_SLI_INTF_IF_TYPE_2) { - lpfc_printf_log(phba, KERN_INFO, LOG_SLI, - "2901 Async SLI event - Event Data1:x%08x Event Data2:" - "x%08x SLI Event Type:%d\n", - acqe_sli->event_data1, acqe_sli->event_data2, - evt_type); - return; - } + lpfc_printf_log(phba, KERN_INFO, LOG_SLI, + "2901 Async SLI event - Event Data1:x%08x Event Data2:" + "x%08x SLI Event Type:%d\n", + acqe_sli->event_data1, acqe_sli->event_data2, + evt_type); port_name = phba->Port[0]; if (port_name == 0x00) @@ -4174,29 +4136,46 @@ /* fetch the status for this port */ switch (phba->sli4_hba.lnk_info.lnk_no) { case LPFC_LINK_NUMBER_0: - status = bf_get(lpfc_sli_misconfigured_port0, + status = bf_get(lpfc_sli_misconfigured_port0_state, + &misconfigured->theEvent); + operational = bf_get(lpfc_sli_misconfigured_port0_op, &misconfigured->theEvent); break; case LPFC_LINK_NUMBER_1: - status = bf_get(lpfc_sli_misconfigured_port1, + status = bf_get(lpfc_sli_misconfigured_port1_state, + &misconfigured->theEvent); + operational = bf_get(lpfc_sli_misconfigured_port1_op, &misconfigured->theEvent); break; case LPFC_LINK_NUMBER_2: - status = bf_get(lpfc_sli_misconfigured_port2, + status = bf_get(lpfc_sli_misconfigured_port2_state, + &misconfigured->theEvent); + operational = bf_get(lpfc_sli_misconfigured_port2_op, &misconfigured->theEvent); break; case LPFC_LINK_NUMBER_3: - status = bf_get(lpfc_sli_misconfigured_port3, + status = bf_get(lpfc_sli_misconfigured_port3_state, + &misconfigured->theEvent); + operational = bf_get(lpfc_sli_misconfigured_port3_op, &misconfigured->theEvent); break; default: - status = ~LPFC_SLI_EVENT_STATUS_VALID; - break; + lpfc_printf_log(phba, KERN_ERR, LOG_SLI, + "3296 " + "LPFC_SLI_EVENT_TYPE_MISCONFIGURED " + "event: Invalid link %d", + phba->sli4_hba.lnk_info.lnk_no); + return; } + /* Skip if optic state unchanged */ + if (phba->sli4_hba.lnk_info.optic_state == status) + return; + switch (status) { case LPFC_SLI_EVENT_STATUS_VALID: - return; /* no message if the sfp is okay */ + sprintf(message, "Physical Link is functional"); + break; case LPFC_SLI_EVENT_STATUS_NOT_PRESENT: sprintf(message, "Optics faulted/incorrectly " "installed/not installed - Reseat optics, " @@ -4211,15 +4190,26 @@ sprintf(message, "Incompatible optics - Replace with " "compatible optics for card to function."); break; + case LPFC_SLI_EVENT_STATUS_UNQUALIFIED: + sprintf(message, "Unqualified optics - Replace with " + "Avago optics for Warranty and Technical " + "Support - Link is%s operational", + (operational) ? "" : " not"); + break; + case LPFC_SLI_EVENT_STATUS_UNCERTIFIED: + sprintf(message, "Uncertified optics - Replace with " + "Avago-certified optics to enable link " + "operation - Link is%s operational", + (operational) ? "" : " not"); + break; default: /* firmware is reporting a status we don't know about */ sprintf(message, "Unknown event status x%02x", status); break; } - + phba->sli4_hba.lnk_info.optic_state = status; lpfc_printf_log(phba, KERN_ERR, LOG_SLI, - "3176 Misconfigured Physical Port - " - "Port Name %c %s\n", port_name, message); + "3176 Port Name %c %s\n", port_name, message); break; case LPFC_SLI_EVENT_TYPE_REMOTE_DPORT: lpfc_printf_log(phba, KERN_INFO, LOG_SLI, @@ -5293,6 +5283,9 @@ INIT_LIST_HEAD(&phba->sli4_hba.lpfc_vfi_blk_list); INIT_LIST_HEAD(&phba->lpfc_vpi_blk_list); + /* initialize optic_state to 0xFF */ + phba->sli4_hba.lnk_info.optic_state = 0xff; + /* Initialize the driver internal SLI layer lists. */ lpfc_sli_setup(phba); lpfc_sli_queue_setup(phba); @@ -6159,6 +6152,20 @@ /* Put reference to SCSI host to driver's device private data */ pci_set_drvdata(phba->pcidev, shost); + /* + * At this point we are fully registered with PSA. In addition, + * any initial discovery should be completed. + */ + vport->load_flag |= FC_ALLOW_FDMI; + if (phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) { + + /* Setup appropriate attribute masks */ + vport->fdmi_hba_mask = LPFC_FDMI2_HBA_ATTR; + if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN) + vport->fdmi_port_mask = LPFC_FDMI2_SMART_ATTR; + else + vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR; + } return 0; } @@ -8833,9 +8840,12 @@ * already mapped to this phys_id. */ if (cpup->irq != LPFC_VECTOR_MAP_EMPTY) { - chann[saved_chann] = - cpup->channel_id; - saved_chann++; + if (saved_chann <= + LPFC_FCP_IO_CHAN_MAX) { + chann[saved_chann] = + cpup->channel_id; + saved_chann++; + } goto out; } --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_mem.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_mem.c @@ -231,15 +231,13 @@ if (phba->lpfc_hbq_pool) pci_pool_destroy(phba->lpfc_hbq_pool); phba->lpfc_hbq_pool = NULL; - - if (phba->rrq_pool) - mempool_destroy(phba->rrq_pool); + mempool_destroy(phba->rrq_pool); phba->rrq_pool = NULL; /* Free NLP memory pool */ mempool_destroy(phba->nlp_mem_pool); phba->nlp_mem_pool = NULL; - if (phba->sli_rev == LPFC_SLI_REV4 && phba->active_rrq_pool) { + if (phba->sli_rev == LPFC_SLI_REV4) { mempool_destroy(phba->active_rrq_pool); phba->active_rrq_pool = NULL; } --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_nportdisc.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_nportdisc.c @@ -280,38 +280,12 @@ uint32_t *lp; IOCB_t *icmd; struct serv_parm *sp; + uint32_t ed_tov; LPFC_MBOXQ_t *mbox; struct ls_rjt stat; int rc; memset(&stat, 0, sizeof (struct ls_rjt)); - if (vport->port_state <= LPFC_FDISC) { - /* Before responding to PLOGI, check for pt2pt mode. - * If we are pt2pt, with an outstanding FLOGI, abort - * the FLOGI and resend it first. - */ - if (vport->fc_flag & FC_PT2PT) { - lpfc_els_abort_flogi(phba); - if (!(vport->fc_flag & FC_PT2PT_PLOGI)) { - /* If the other side is supposed to initiate - * the PLOGI anyway, just ACC it now and - * move on with discovery. - */ - phba->fc_edtov = FF_DEF_EDTOV; - phba->fc_ratov = FF_DEF_RATOV; - /* Start discovery - this should just do - CLEAR_LA */ - lpfc_disc_start(vport); - } else - lpfc_initial_flogi(vport); - } else { - stat.un.b.lsRjtRsnCode = LSRJT_LOGICAL_BSY; - stat.un.b.lsRjtRsnCodeExp = LSEXP_NOTHING_MORE; - lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, - ndlp, NULL); - return 0; - } - } pcmd = (struct lpfc_dmabuf *) cmdiocb->context2; lp = (uint32_t *) pcmd->virt; sp = (struct serv_parm *) ((uint8_t *) lp + sizeof (uint32_t)); @@ -404,30 +378,46 @@ /* Check for Nport to NPort pt2pt protocol */ if ((vport->fc_flag & FC_PT2PT) && !(vport->fc_flag & FC_PT2PT_PLOGI)) { - /* rcv'ed PLOGI decides what our NPortId will be */ vport->fc_myDID = icmd->un.rcvels.parmRo; - mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); - if (mbox == NULL) - goto out; - lpfc_config_link(phba, mbox); - mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; - mbox->vport = vport; - rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); - if (rc == MBX_NOT_FINISHED) { - mempool_free(mbox, phba->mbox_mem_pool); - goto out; + + ed_tov = be32_to_cpu(sp->cmn.e_d_tov); + if (sp->cmn.edtovResolution) { + /* E_D_TOV ticks are in nanoseconds */ + ed_tov = (phba->fc_edtov + 999999) / 1000000; } + /* - * For SLI4, the VFI/VPI are registered AFTER the - * Nport with the higher WWPN sends us a PLOGI with - * our assigned NPortId. + * For pt-to-pt, use the larger EDTOV + * RATOV = 2 * EDTOV */ + if (ed_tov > phba->fc_edtov) + phba->fc_edtov = ed_tov; + phba->fc_ratov = (2 * phba->fc_edtov) / 1000; + + memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); + + /* Issue config_link / reg_vfi to account for updated TOV's */ + if (phba->sli_rev == LPFC_SLI_REV4) lpfc_issue_reg_vfi(vport); + else { + mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); + if (mbox == NULL) + goto out; + lpfc_config_link(phba, mbox); + mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; + mbox->vport = vport; + rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); + if (rc == MBX_NOT_FINISHED) { + mempool_free(mbox, phba->mbox_mem_pool); + goto out; + } + } lpfc_can_disctmo(vport); } + mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); if (!mbox) goto out; @@ -1038,7 +1028,9 @@ uint32_t *lp; IOCB_t *irsp; struct serv_parm *sp; + uint32_t ed_tov; LPFC_MBOXQ_t *mbox; + int rc; cmdiocb = (struct lpfc_iocbq *) arg; rspiocb = cmdiocb->context_un.rsp_iocb; @@ -1094,18 +1086,63 @@ ndlp->nlp_maxframe = ((sp->cmn.bbRcvSizeMsb & 0x0F) << 8) | sp->cmn.bbRcvSizeLsb; + if ((vport->fc_flag & FC_PT2PT) && + (vport->fc_flag & FC_PT2PT_PLOGI)) { + ed_tov = be32_to_cpu(sp->cmn.e_d_tov); + if (sp->cmn.edtovResolution) { + /* E_D_TOV ticks are in nanoseconds */ + ed_tov = (phba->fc_edtov + 999999) / 1000000; + } + + /* + * Use the larger EDTOV + * RATOV = 2 * EDTOV for pt-to-pt + */ + if (ed_tov > phba->fc_edtov) + phba->fc_edtov = ed_tov; + phba->fc_ratov = (2 * phba->fc_edtov) / 1000; + + memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); + + /* Issue config_link / reg_vfi to account for updated TOV's */ + if (phba->sli_rev == LPFC_SLI_REV4) { + lpfc_issue_reg_vfi(vport); + } else { + mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); + if (!mbox) { + lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, + "0133 PLOGI: no memory " + "for config_link " + "Data: x%x x%x x%x x%x\n", + ndlp->nlp_DID, ndlp->nlp_state, + ndlp->nlp_flag, ndlp->nlp_rpi); + goto out; + } + + lpfc_config_link(phba, mbox); + + mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; + mbox->vport = vport; + rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); + if (rc == MBX_NOT_FINISHED) { + mempool_free(mbox, phba->mbox_mem_pool); + goto out; + } + } + } + + lpfc_unreg_rpi(vport, ndlp); + mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); if (!mbox) { lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, - "0133 PLOGI: no memory for reg_login " - "Data: x%x x%x x%x x%x\n", - ndlp->nlp_DID, ndlp->nlp_state, - ndlp->nlp_flag, ndlp->nlp_rpi); + "0018 PLOGI: no memory for reg_login " + "Data: x%x x%x x%x x%x\n", + ndlp->nlp_DID, ndlp->nlp_state, + ndlp->nlp_flag, ndlp->nlp_rpi); goto out; } - lpfc_unreg_rpi(vport, ndlp); - if (lpfc_reg_rpi(phba, vport->vpi, irsp->un.elsreq64.remoteID, (uint8_t *) sp, mbox, ndlp->nlp_rpi) == 0) { switch (ndlp->nlp_DID) { @@ -2299,6 +2336,9 @@ if (vport->phba->sli_rev < LPFC_SLI_REV4) ndlp->nlp_rpi = mb->un.varWords[0]; ndlp->nlp_flag |= NLP_RPI_REGISTERED; + if (ndlp->nlp_flag & NLP_LOGO_ACC) { + lpfc_unreg_rpi(vport, ndlp); + } } else { if (ndlp->nlp_flag & NLP_NODEV_REMOVE) { lpfc_drop_node(vport, ndlp); --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_scsi.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_scsi.c @@ -3676,6 +3676,7 @@ lpfc_handle_fcp_err(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd, struct lpfc_iocbq *rsp_iocb) { + struct lpfc_hba *phba = vport->phba; struct scsi_cmnd *cmnd = lpfc_cmd->pCmd; struct fcp_cmnd *fcpcmd = lpfc_cmd->fcp_cmnd; struct fcp_rsp *fcprsp = lpfc_cmd->fcp_rsp; @@ -3685,6 +3686,7 @@ uint32_t *lp; uint32_t host_status = DID_OK; uint32_t rsplen = 0; + uint32_t fcpDl; uint32_t logit = LOG_FCP | LOG_FCP_ERROR; @@ -3755,13 +3757,14 @@ fcprsp->rspInfo3); scsi_set_resid(cmnd, 0); + fcpDl = be32_to_cpu(fcpcmd->fcpDl); if (resp_info & RESID_UNDER) { scsi_set_resid(cmnd, be32_to_cpu(fcprsp->rspResId)); lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP_UNDER, "9025 FCP Read Underrun, expected %d, " "residual %d Data: x%x x%x x%x\n", - be32_to_cpu(fcpcmd->fcpDl), + fcpDl, scsi_get_resid(cmnd), fcpi_parm, cmnd->cmnd[0], cmnd->underflow); @@ -3777,7 +3780,7 @@ LOG_FCP | LOG_FCP_ERROR, "9026 FCP Read Check Error " "and Underrun Data: x%x x%x x%x x%x\n", - be32_to_cpu(fcpcmd->fcpDl), + fcpDl, scsi_get_resid(cmnd), fcpi_parm, cmnd->cmnd[0]); scsi_set_resid(cmnd, scsi_bufflen(cmnd)); @@ -3812,13 +3815,25 @@ * Check SLI validation that all the transfer was actually done * (fcpi_parm should be zero). Apply check only to reads. */ - } else if (fcpi_parm && (cmnd->sc_data_direction == DMA_FROM_DEVICE)) { + } else if (fcpi_parm) { lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP | LOG_FCP_ERROR, - "9029 FCP Read Check Error Data: " + "9029 FCP %s Check Error xri x%x Data: " "x%x x%x x%x x%x x%x\n", - be32_to_cpu(fcpcmd->fcpDl), - be32_to_cpu(fcprsp->rspResId), + ((cmnd->sc_data_direction == DMA_FROM_DEVICE) ? + "Read" : "Write"), + ((phba->sli_rev == LPFC_SLI_REV4) ? + lpfc_cmd->cur_iocbq.sli4_xritag : + rsp_iocb->iocb.ulpContext), + fcpDl, be32_to_cpu(fcprsp->rspResId), fcpi_parm, cmnd->cmnd[0], scsi_status); + + /* There is some issue with the LPe12000 that causes it + * to miscalculate the fcpi_parm and falsely trip this + * recovery logic. Detect this case and don't error when true. + */ + if (fcpi_parm > fcpDl) + goto out; + switch (scsi_status) { case SAM_STAT_GOOD: case SAM_STAT_CHECK_CONDITION: @@ -3908,9 +3923,9 @@ uint32_t logit = LOG_FCP; /* Sanity check on return of outstanding command */ - if (!(lpfc_cmd->pCmd)) - return; cmd = lpfc_cmd->pCmd; + if (!cmd) + return; shost = cmd->device->host; lpfc_cmd->result = (pIocbOut->iocb.un.ulpWord[4] & IOERR_PARAM_MASK); @@ -4446,15 +4461,7 @@ phba->Port); } len = strlen(lpfcinfobuf); - if (phba->sli_rev <= LPFC_SLI_REV3) { - link_speed = lpfc_sli_port_speed_get(phba); - } else { - if (phba->sli4_hba.link_state.logical_speed) - link_speed = - phba->sli4_hba.link_state.logical_speed; - else - link_speed = phba->sli4_hba.link_state.speed; - } + link_speed = lpfc_sli_port_speed_get(phba); if (link_speed != 0) snprintf(lpfcinfobuf + len, 384-len, " Logical Link Speed: %d Mbps", link_speed); --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_sli.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_sli.c @@ -14842,10 +14842,12 @@ struct lpfc_dmabuf *h_buf; struct hbq_dmabuf *seq_dmabuf = NULL; struct hbq_dmabuf *temp_dmabuf = NULL; + uint8_t found = 0; INIT_LIST_HEAD(&dmabuf->dbuf.list); dmabuf->time_stamp = jiffies; new_hdr = (struct fc_frame_header *)dmabuf->hbuf.virt; + /* Use the hdr_buf to find the sequence that this frame belongs to */ list_for_each_entry(h_buf, &vport->rcv_buffer_list, list) { temp_hdr = (struct fc_frame_header *)h_buf->virt; @@ -14885,7 +14887,8 @@ return seq_dmabuf; } /* find the correct place in the sequence to insert this frame */ - list_for_each_entry_reverse(d_buf, &seq_dmabuf->dbuf.list, list) { + d_buf = list_entry(seq_dmabuf->dbuf.list.prev, typeof(*d_buf), list); + while (!found) { temp_dmabuf = container_of(d_buf, struct hbq_dmabuf, dbuf); temp_hdr = (struct fc_frame_header *)temp_dmabuf->hbuf.virt; /* @@ -14895,9 +14898,17 @@ if (be16_to_cpu(new_hdr->fh_seq_cnt) > be16_to_cpu(temp_hdr->fh_seq_cnt)) { list_add(&dmabuf->dbuf.list, &temp_dmabuf->dbuf.list); - return seq_dmabuf; + found = 1; + break; } + + if (&d_buf->list == &seq_dmabuf->dbuf.list) + break; + d_buf = list_entry(d_buf->list.prev, typeof(*d_buf), list); } + + if (found) + return seq_dmabuf; return NULL; } @@ -16173,7 +16184,7 @@ } /** - * lpfc_check_next_fcf_pri + * lpfc_check_next_fcf_pri_level * phba pointer to the lpfc_hba struct for this port. * This routine is called from the lpfc_sli4_fcf_rr_next_index_get * routine when the rr_bmask is empty. The FCF indecies are put into the @@ -16329,8 +16340,12 @@ if (next_fcf_index < LPFC_SLI4_FCF_TBL_INDX_MAX && phba->fcf.fcf_pri[next_fcf_index].fcf_rec.flag & - LPFC_FCF_FLOGI_FAILED) + LPFC_FCF_FLOGI_FAILED) { + if (list_is_singular(&phba->fcf.fcf_pri_list)) + return LPFC_FCOE_FCF_NEXT_NONE; + goto next_priority; + } lpfc_printf_log(phba, KERN_INFO, LOG_FIP, "2845 Get next roundrobin failover FCF (x%x)\n", --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_sli4.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_sli4.h @@ -442,6 +442,7 @@ #define LPFC_LNK_GE 0x0 /* FCoE */ #define LPFC_LNK_FC 0x1 /* FC */ uint8_t lnk_no; + uint8_t optic_state; }; #define LPFC_SLI4_HANDLER_CNT (LPFC_FCP_IO_CHAN_MAX+ \ --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_version.h +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_version.h @@ -18,7 +18,7 @@ * included with this package. * *******************************************************************/ -#define LPFC_DRIVER_VERSION "11.0.0.0." +#define LPFC_DRIVER_VERSION "11.0.0.10." #define LPFC_DRIVER_NAME "lpfc" /* Used for SLI 2/3 */ --- linux-4.4.0.orig/drivers/scsi/lpfc/lpfc_vport.c +++ linux-4.4.0/drivers/scsi/lpfc/lpfc_vport.c @@ -393,6 +393,14 @@ *(struct lpfc_vport **)fc_vport->dd_data = vport; vport->fc_vport = fc_vport; + /* At this point we are fully registered with SCSI Layer. */ + vport->load_flag |= FC_ALLOW_FDMI; + if (phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) { + /* Setup appropriate attribute masks */ + vport->fdmi_hba_mask = phba->pport->fdmi_hba_mask; + vport->fdmi_port_mask = phba->pport->fdmi_port_mask; + } + /* * In SLI4, the vpi must be activated before it can be used * by the port. --- linux-4.4.0.orig/drivers/scsi/megaraid/megaraid_mm.c +++ linux-4.4.0/drivers/scsi/megaraid/megaraid_mm.c @@ -179,8 +179,12 @@ /* * The following call will block till a kioc is available + * or return NULL if the list head is empty for the pointer + * of type mraid_mmapt passed to mraid_mm_alloc_kioc */ kioc = mraid_mm_alloc_kioc(adp); + if (!kioc) + return -ENXIO; /* * User sent the old mimd_t ioctl packet. Convert it to uioc_t. --- linux-4.4.0.orig/drivers/scsi/qla2xxx/Kconfig +++ linux-4.4.0/drivers/scsi/qla2xxx/Kconfig @@ -18,9 +18,6 @@ 2322, 6322 ql2322_fw.bin 24xx, 54xx ql2400_fw.bin 25xx ql2500_fw.bin - 2031 ql2600_fw.bin - 8031 ql8300_fw.bin - 27xx ql2700_fw.bin Upon request, the driver caches the firmware image until the driver is unloaded. --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_attr.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_attr.c @@ -824,6 +824,41 @@ }; static ssize_t +qla2x00_issue_logo(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, + char *buf, loff_t off, size_t count) +{ + struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj, + struct device, kobj))); + int type; + int rval = 0; + port_id_t did; + + type = simple_strtol(buf, NULL, 10); + + did.b.domain = (type & 0x00ff0000) >> 16; + did.b.area = (type & 0x0000ff00) >> 8; + did.b.al_pa = (type & 0x000000ff); + + ql_log(ql_log_info, vha, 0x70e3, "portid=%02x%02x%02x done\n", + did.b.domain, did.b.area, did.b.al_pa); + + ql_log(ql_log_info, vha, 0x70e4, "%s: %d\n", __func__, type); + + rval = qla24xx_els_dcmd_iocb(vha, ELS_DCMD_LOGO, did); + return count; +} + +static struct bin_attribute sysfs_issue_logo_attr = { + .attr = { + .name = "issue_logo", + .mode = S_IWUSR, + }, + .size = 0, + .write = qla2x00_issue_logo, +}; + +static ssize_t qla2x00_sysfs_read_xgmac_stats(struct file *filp, struct kobject *kobj, struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count) @@ -937,6 +972,7 @@ { "vpd", &sysfs_vpd_attr, 1 }, { "sfp", &sysfs_sfp_attr, 1 }, { "reset", &sysfs_reset_attr, }, + { "issue_logo", &sysfs_issue_logo_attr, }, { "xgmac_stats", &sysfs_xgmac_stats_attr, 3 }, { "dcbx_tlv", &sysfs_dcbx_tlv_attr, 3 }, { NULL }, --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_dbg.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_dbg.c @@ -14,25 +14,24 @@ * | Module Init and Probe | 0x017f | 0x0146 | * | | | 0x015b-0x0160 | * | | | 0x016e-0x0170 | - * | Mailbox commands | 0x118d | 0x1115-0x1116 | - * | | | 0x111a-0x111b | + * | Mailbox commands | 0x1192 | | + * | | | | * | Device Discovery | 0x2016 | 0x2020-0x2022, | * | | | 0x2011-0x2012, | * | | | 0x2099-0x20a4 | - * | Queue Command and IO tracing | 0x3075 | 0x300b | + * | Queue Command and IO tracing | 0x3074 | 0x300b | * | | | 0x3027-0x3028 | * | | | 0x303d-0x3041 | * | | | 0x302d,0x3033 | * | | | 0x3036,0x3038 | * | | | 0x303a | * | DPC Thread | 0x4023 | 0x4002,0x4013 | - * | Async Events | 0x508a | 0x502b-0x502f | - * | | | 0x5047 | + * | Async Events | 0x5089 | 0x502b-0x502f | * | | | 0x5084,0x5075 | * | | | 0x503d,0x5044 | * | | | 0x507b,0x505f | * | Timer Routines | 0x6012 | | - * | User Space Interactions | 0x70e2 | 0x7018,0x702e | + * | User Space Interactions | 0x70e65 | 0x7018,0x702e | * | | | 0x7020,0x7024 | * | | | 0x7039,0x7045 | * | | | 0x7073-0x7075 | @@ -60,15 +59,11 @@ * | | | 0xb13c-0xb140 | * | | | 0xb149 | * | MultiQ | 0xc00c | | - * | Misc | 0xd300 | 0xd016-0xd017 | - * | | | 0xd021,0xd024 | - * | | | 0xd025,0xd029 | - * | | | 0xd02a,0xd02e | - * | | | 0xd031-0xd0ff | + * | Misc | 0xd301 | 0xd031-0xd0ff | * | | | 0xd101-0xd1fe | * | | | 0xd214-0xd2fe | * | Target Mode | 0xe080 | | - * | Target Mode Management | 0xf096 | 0xf002 | + * | Target Mode Management | 0xf09b | 0xf002 | * | | | 0xf046-0xf049 | * | Target Mode Task Management | 0x1000d | | * ---------------------------------------------------------------------- --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_def.h +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_def.h @@ -259,7 +259,7 @@ #define LOOP_DOWN_TIME 255 /* 240 */ #define LOOP_DOWN_RESET (LOOP_DOWN_TIME - 30) -#define DEFAULT_OUTSTANDING_COMMANDS 1024 +#define DEFAULT_OUTSTANDING_COMMANDS 4096 #define MIN_OUTSTANDING_COMMANDS 128 /* ISP request and response entry counts (37-65535) */ @@ -267,11 +267,13 @@ #define REQUEST_ENTRY_CNT_2200 2048 /* Number of request entries. */ #define REQUEST_ENTRY_CNT_24XX 2048 /* Number of request entries. */ #define REQUEST_ENTRY_CNT_83XX 8192 /* Number of request entries. */ +#define RESPONSE_ENTRY_CNT_83XX 4096 /* Number of response entries.*/ #define RESPONSE_ENTRY_CNT_2100 64 /* Number of response entries.*/ #define RESPONSE_ENTRY_CNT_2300 512 /* Number of response entries.*/ #define RESPONSE_ENTRY_CNT_MQ 128 /* Number of response entries.*/ #define ATIO_ENTRY_CNT_24XX 4096 /* Number of ATIO entries. */ #define RESPONSE_ENTRY_CNT_FX00 256 /* Number of response entries.*/ +#define EXTENDED_EXCH_ENTRY_CNT 32768 /* Entries for offload case */ struct req_que; struct qla_tgt_sess; @@ -309,6 +311,14 @@ /* To identify if a srb is of T10-CRC type. @sp => srb_t pointer */ #define IS_PROT_IO(sp) (sp->flags & SRB_CRC_CTX_DSD_VALID) +struct els_logo_payload { + uint8_t opcode; + uint8_t rsvd[3]; + uint8_t s_id[3]; + uint8_t rsvd1[1]; + uint8_t wwpn[WWN_SIZE]; +}; + /* * SRB extensions. */ @@ -322,6 +332,15 @@ uint16_t data[2]; } logio; struct { +#define ELS_DCMD_TIMEOUT 20 +#define ELS_DCMD_LOGO 0x5 + uint32_t flags; + uint32_t els_cmd; + struct completion comp; + struct els_logo_payload *els_logo_pyld; + dma_addr_t els_logo_pyld_dma; + } els_logo; + struct { /* * Values for flags field below are as * defined in tsk_mgmt_entry struct @@ -382,7 +401,7 @@ #define SRB_FXIOCB_DCMD 10 #define SRB_FXIOCB_BCMD 11 #define SRB_ABT_CMD 12 - +#define SRB_ELS_DCMD 13 typedef struct srb { atomic_t ref_count; @@ -891,6 +910,7 @@ #define MBC_DISABLE_VI 0x24 /* Disable VI operation. */ #define MBC_ENABLE_VI 0x25 /* Enable VI operation. */ #define MBC_GET_FIRMWARE_OPTION 0x28 /* Get Firmware Options. */ +#define MBC_GET_MEM_OFFLOAD_CNTRL_STAT 0x34 /* Memory Offload ctrl/Stat*/ #define MBC_SET_FIRMWARE_OPTION 0x38 /* Set Firmware Options. */ #define MBC_LOOP_PORT_BYPASS 0x40 /* Loop Port Bypass. */ #define MBC_LOOP_PORT_ENABLE 0x41 /* Loop Port Enable. */ @@ -2695,11 +2715,16 @@ struct scsi_qla_host; + +#define QLA83XX_RSPQ_MSIX_ENTRY_NUMBER 1 /* refer to qla83xx_msix_entries */ + struct qla_msix_entry { int have_irq; uint32_t vector; uint16_t entry; struct rsp_que *rsp; + struct irq_affinity_notify irq_notify; + int cpuid; }; #define WATCH_INTERVAL 1 /* number of seconds */ @@ -2910,12 +2935,15 @@ uint32_t num_qfull_cmds_dropped; spinlock_t q_full_lock; uint32_t leak_exchg_thresh_hold; + spinlock_t sess_lock; + int rspq_vector_cpuid; + spinlock_t atio_lock ____cacheline_aligned; }; #define MAX_QFULL_CMDS_ALLOC 8192 #define Q_FULL_THRESH_HOLD_PERCENT 90 #define Q_FULL_THRESH_HOLD(ha) \ - ((ha->fw_xcb_count/100) * Q_FULL_THRESH_HOLD_PERCENT) + ((ha->cur_fw_xcb_count/100) * Q_FULL_THRESH_HOLD_PERCENT) #define LEAK_EXCHG_THRESH_HOLD_PERCENT 75 /* 75 percent */ @@ -2962,10 +2990,12 @@ uint32_t isp82xx_no_md_cap:1; uint32_t host_shutting_down:1; uint32_t idc_compl_status:1; - uint32_t mr_reset_hdlr_active:1; uint32_t mr_intr_valid:1; + uint32_t fawwpn_enabled:1; + uint32_t exlogins_enabled:1; + uint32_t exchoffld_enabled:1; /* 35 bits */ } flags; @@ -3237,6 +3267,21 @@ void *async_pd; dma_addr_t async_pd_dma; +#define ENABLE_EXTENDED_LOGIN BIT_7 + + /* Extended Logins */ + void *exlogin_buf; + dma_addr_t exlogin_buf_dma; + int exlogin_size; + +#define ENABLE_EXCHANGE_OFFLD BIT_2 + + /* Exchange Offload */ + void *exchoffld_buf; + dma_addr_t exchoffld_buf_dma; + int exchoffld_size; + int exchoffld_count; + void *swl; /* These are used by mailbox operations. */ @@ -3279,8 +3324,14 @@ #define RISC_START_ADDRESS_2100 0x1000 #define RISC_START_ADDRESS_2300 0x800 #define RISC_START_ADDRESS_2400 0x100000 - uint16_t fw_xcb_count; - uint16_t fw_iocb_count; + + uint16_t orig_fw_tgt_xcb_count; + uint16_t cur_fw_tgt_xcb_count; + uint16_t orig_fw_xcb_count; + uint16_t cur_fw_xcb_count; + uint16_t orig_fw_iocb_count; + uint16_t cur_fw_iocb_count; + uint16_t fw_max_fcf_count; uint32_t fw_shared_ram_start; uint32_t fw_shared_ram_end; @@ -3323,6 +3374,9 @@ uint32_t chain_offset; struct dentry *dfs_dir; struct dentry *dfs_fce; + struct dentry *dfs_tgt_counters; + struct dentry *dfs_fw_resource_cnt; + dma_addr_t fce_dma; void *fce; uint32_t fce_bufs; @@ -3480,6 +3534,18 @@ int allow_cna_fw_dump; }; +struct qla_tgt_counters { + uint64_t qla_core_sbt_cmd; + uint64_t core_qla_que_buf; + uint64_t qla_core_ret_ctio; + uint64_t core_qla_snd_status; + uint64_t qla_core_ret_sta_ctio; + uint64_t core_qla_free_cmd; + uint64_t num_q_full_sent; + uint64_t num_alloc_iocb_failed; + uint64_t num_term_xchg_sent; +}; + /* * Qlogic scsi host structure */ @@ -3595,6 +3661,10 @@ atomic_t generation_tick; /* Time when global fcport update has been scheduled */ int total_fcport_update_gen; + /* List of pending LOGOs, protected by tgt_mutex */ + struct list_head logo_list; + /* List of pending PLOGI acks, protected by hw lock */ + struct list_head plogi_ack_list; uint32_t vp_abort_cnt; @@ -3632,6 +3702,7 @@ atomic_t vref_count; struct qla8044_reset_template reset_tmplt; + struct qla_tgt_counters tgt_counters; } scsi_qla_host_t; #define SET_VP_IDX 1 --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_dfs.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_dfs.c @@ -13,6 +13,85 @@ static atomic_t qla2x00_dfs_root_count; static int +qla_dfs_fw_resource_cnt_show(struct seq_file *s, void *unused) +{ + struct scsi_qla_host *vha = s->private; + struct qla_hw_data *ha = vha->hw; + + seq_puts(s, "FW Resource count\n\n"); + seq_printf(s, "Original TGT exchg count[%d]\n", + ha->orig_fw_tgt_xcb_count); + seq_printf(s, "current TGT exchg count[%d]\n", + ha->cur_fw_tgt_xcb_count); + seq_printf(s, "original Initiator Exchange count[%d]\n", + ha->orig_fw_xcb_count); + seq_printf(s, "Current Initiator Exchange count[%d]\n", + ha->cur_fw_xcb_count); + seq_printf(s, "Original IOCB count[%d]\n", ha->orig_fw_iocb_count); + seq_printf(s, "Current IOCB count[%d]\n", ha->cur_fw_iocb_count); + seq_printf(s, "MAX VP count[%d]\n", ha->max_npiv_vports); + seq_printf(s, "MAX FCF count[%d]\n", ha->fw_max_fcf_count); + + return 0; +} + +static int +qla_dfs_fw_resource_cnt_open(struct inode *inode, struct file *file) +{ + struct scsi_qla_host *vha = inode->i_private; + return single_open(file, qla_dfs_fw_resource_cnt_show, vha); +} + +static const struct file_operations dfs_fw_resource_cnt_ops = { + .open = qla_dfs_fw_resource_cnt_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int +qla_dfs_tgt_counters_show(struct seq_file *s, void *unused) +{ + struct scsi_qla_host *vha = s->private; + + seq_puts(s, "Target Counters\n"); + seq_printf(s, "qla_core_sbt_cmd = %lld\n", + vha->tgt_counters.qla_core_sbt_cmd); + seq_printf(s, "qla_core_ret_sta_ctio = %lld\n", + vha->tgt_counters.qla_core_ret_sta_ctio); + seq_printf(s, "qla_core_ret_ctio = %lld\n", + vha->tgt_counters.qla_core_ret_ctio); + seq_printf(s, "core_qla_que_buf = %lld\n", + vha->tgt_counters.core_qla_que_buf); + seq_printf(s, "core_qla_snd_status = %lld\n", + vha->tgt_counters.core_qla_snd_status); + seq_printf(s, "core_qla_free_cmd = %lld\n", + vha->tgt_counters.core_qla_free_cmd); + seq_printf(s, "num alloc iocb failed = %lld\n", + vha->tgt_counters.num_alloc_iocb_failed); + seq_printf(s, "num term exchange sent = %lld\n", + vha->tgt_counters.num_term_xchg_sent); + seq_printf(s, "num Q full sent = %lld\n", + vha->tgt_counters.num_q_full_sent); + + return 0; +} + +static int +qla_dfs_tgt_counters_open(struct inode *inode, struct file *file) +{ + struct scsi_qla_host *vha = inode->i_private; + return single_open(file, qla_dfs_tgt_counters_show, vha); +} + +static const struct file_operations dfs_tgt_counters_ops = { + .open = qla_dfs_tgt_counters_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int qla2x00_dfs_fce_show(struct seq_file *s, void *unused) { scsi_qla_host_t *vha = s->private; @@ -146,6 +225,22 @@ atomic_inc(&qla2x00_dfs_root_count); create_nodes: + ha->dfs_fw_resource_cnt = debugfs_create_file("fw_resource_count", + S_IRUSR, ha->dfs_dir, vha, &dfs_fw_resource_cnt_ops); + if (!ha->dfs_fw_resource_cnt) { + ql_log(ql_log_warn, vha, 0x00fd, + "Unable to create debugFS fw_resource_count node.\n"); + goto out; + } + + ha->dfs_tgt_counters = debugfs_create_file("tgt_counters", S_IRUSR, + ha->dfs_dir, vha, &dfs_tgt_counters_ops); + if (!ha->dfs_tgt_counters) { + ql_log(ql_log_warn, vha, 0xd301, + "Unable to create debugFS tgt_counters node.\n"); + goto out; + } + ha->dfs_fce = debugfs_create_file("fce", S_IRUSR, ha->dfs_dir, vha, &dfs_fce_ops); if (!ha->dfs_fce) { @@ -161,6 +256,17 @@ qla2x00_dfs_remove(scsi_qla_host_t *vha) { struct qla_hw_data *ha = vha->hw; + + if (ha->dfs_fw_resource_cnt) { + debugfs_remove(ha->dfs_fw_resource_cnt); + ha->dfs_fw_resource_cnt = NULL; + } + + if (ha->dfs_tgt_counters) { + debugfs_remove(ha->dfs_tgt_counters); + ha->dfs_tgt_counters = NULL; + } + if (ha->dfs_fce) { debugfs_remove(ha->dfs_fce); ha->dfs_fce = NULL; --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_gbl.h +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_gbl.h @@ -44,6 +44,8 @@ extern int qla2x00_fabric_login(scsi_qla_host_t *, fc_port_t *, uint16_t *); extern int qla2x00_local_device_login(scsi_qla_host_t *, fc_port_t *); +extern int qla24xx_els_dcmd_iocb(scsi_qla_host_t *, int, port_id_t); + extern void qla2x00_update_fcports(scsi_qla_host_t *); extern int qla2x00_abort_isp(scsi_qla_host_t *); @@ -117,6 +119,8 @@ extern uint64_t ql2xmaxlun; extern int ql2xmdcapmask; extern int ql2xmdenable; +extern int ql2xexlogins; +extern int ql2xexchoffld; extern int qla2x00_loop_reset(scsi_qla_host_t *); extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int); @@ -135,6 +139,10 @@ uint16_t *); extern int qla2x00_post_async_adisc_done_work(struct scsi_qla_host *, fc_port_t *, uint16_t *); +extern int qla2x00_set_exlogins_buffer(struct scsi_qla_host *); +extern void qla2x00_free_exlogin_buffer(struct qla_hw_data *); +extern int qla2x00_set_exchoffld_buffer(struct scsi_qla_host *); +extern void qla2x00_free_exchoffld_buffer(struct qla_hw_data *); extern int qla81xx_restart_mpi_firmware(scsi_qla_host_t *); @@ -323,8 +331,7 @@ qla2x00_get_id_list(scsi_qla_host_t *, void *, dma_addr_t, uint16_t *); extern int -qla2x00_get_resource_cnts(scsi_qla_host_t *, uint16_t *, uint16_t *, - uint16_t *, uint16_t *, uint16_t *, uint16_t *); +qla2x00_get_resource_cnts(scsi_qla_host_t *); extern int qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map); @@ -766,4 +773,11 @@ extern int qla8044_check_fw_alive(struct scsi_qla_host *); extern void qlt_host_reset_handler(struct qla_hw_data *ha); +extern int qla_get_exlogin_status(scsi_qla_host_t *, uint16_t *, + uint16_t *); +extern int qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr); +extern int qla_get_exchoffld_status(scsi_qla_host_t *, uint16_t *, uint16_t *); +extern int qla_set_exchoffld_mem_cfg(scsi_qla_host_t *, dma_addr_t); +extern void qlt_handle_abts_recv(struct scsi_qla_host *, response_t *); + #endif /* _QLA_GBL_H */ --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_init.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_init.c @@ -1766,10 +1766,10 @@ (ql2xmultique_tag || ql2xmaxqueues > 1))) req->num_outstanding_cmds = DEFAULT_OUTSTANDING_COMMANDS; else { - if (ha->fw_xcb_count <= ha->fw_iocb_count) - req->num_outstanding_cmds = ha->fw_xcb_count; + if (ha->cur_fw_xcb_count <= ha->cur_fw_iocb_count) + req->num_outstanding_cmds = ha->cur_fw_xcb_count; else - req->num_outstanding_cmds = ha->fw_iocb_count; + req->num_outstanding_cmds = ha->cur_fw_iocb_count; } req->outstanding_cmds = kzalloc(sizeof(srb_t *) * @@ -1843,9 +1843,23 @@ ql_dbg(ql_dbg_init, vha, 0x00ca, "Starting firmware.\n"); + if (ql2xexlogins) + ha->flags.exlogins_enabled = 1; + + if (ql2xexchoffld) + ha->flags.exchoffld_enabled = 1; + rval = qla2x00_execute_fw(vha, srisc_address); /* Retrieve firmware information. */ if (rval == QLA_SUCCESS) { + rval = qla2x00_set_exlogins_buffer(vha); + if (rval != QLA_SUCCESS) + goto failed; + + rval = qla2x00_set_exchoffld_buffer(vha); + if (rval != QLA_SUCCESS) + goto failed; + enable_82xx_npiv: fw_major_version = ha->fw_major_version; if (IS_P3P_TYPE(ha)) @@ -1864,9 +1878,7 @@ ha->max_npiv_vports = MIN_MULTI_ID_FABRIC - 1; } - qla2x00_get_resource_cnts(vha, NULL, - &ha->fw_xcb_count, NULL, &ha->fw_iocb_count, - &ha->max_npiv_vports, NULL); + qla2x00_get_resource_cnts(vha); /* * Allocate the array of outstanding commands @@ -2248,7 +2260,7 @@ if (IS_FWI2_CAPABLE(ha)) { mid_init_cb->options = cpu_to_le16(BIT_1); mid_init_cb->init_cb.execution_throttle = - cpu_to_le16(ha->fw_xcb_count); + cpu_to_le16(ha->cur_fw_xcb_count); /* D-Port Status */ if (IS_DPORT_CAPABLE(ha)) mid_init_cb->init_cb.firmware_options_1 |= @@ -3053,6 +3065,26 @@ atomic_set(&vha->loop_state, LOOP_READY); ql_dbg(ql_dbg_disc, vha, 0x2069, "LOOP READY.\n"); + + /* + * Process any ATIO queue entries that came in + * while we weren't online. + */ + if (qla_tgt_mode_enabled(vha)) { + if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) { + spin_lock_irqsave(&ha->tgt.atio_lock, + flags); + qlt_24xx_process_atio_queue(vha, 0); + spin_unlock_irqrestore( + &ha->tgt.atio_lock, flags); + } else { + spin_lock_irqsave(&ha->hardware_lock, + flags); + qlt_24xx_process_atio_queue(vha, 1); + spin_unlock_irqrestore( + &ha->hardware_lock, flags); + } + } } } @@ -4907,7 +4939,6 @@ struct qla_hw_data *ha = vha->hw; struct req_que *req = ha->req_q_map[0]; struct rsp_que *rsp = ha->rsp_q_map[0]; - unsigned long flags; /* If firmware needs to be loaded */ if (qla2x00_isp_firmware(vha)) { @@ -4929,17 +4960,6 @@ /* Issue a marker after FW becomes ready. */ qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL); - vha->flags.online = 1; - - /* - * Process any ATIO queue entries that came in - * while we weren't online. - */ - spin_lock_irqsave(&ha->hardware_lock, flags); - if (qla_tgt_mode_enabled(vha)) - qlt_24xx_process_atio_queue(vha); - spin_unlock_irqrestore(&ha->hardware_lock, flags); - set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); } --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_inline.h +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_inline.h @@ -258,6 +258,8 @@ if ((IS_QLAFX00(sp->fcport->vha->hw)) && (sp->type == SRB_FXIOCB_DCMD)) init_completion(&sp->u.iocb_cmd.u.fxiocb.fxiocb_comp); + if (sp->type == SRB_ELS_DCMD) + init_completion(&sp->u.iocb_cmd.u.els_logo.comp); } static inline int --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_iocb.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_iocb.c @@ -1868,6 +1868,7 @@ } queuing_error: + vha->tgt_counters.num_alloc_iocb_failed++; return pkt; } @@ -2010,6 +2011,190 @@ } static void +qla2x00_els_dcmd_sp_free(void *ptr, void *data) +{ + struct scsi_qla_host *vha = (scsi_qla_host_t *)ptr; + struct qla_hw_data *ha = vha->hw; + srb_t *sp = (srb_t *)data; + struct srb_iocb *elsio = &sp->u.iocb_cmd; + + kfree(sp->fcport); + + if (elsio->u.els_logo.els_logo_pyld) + dma_free_coherent(&ha->pdev->dev, DMA_POOL_SIZE, + elsio->u.els_logo.els_logo_pyld, + elsio->u.els_logo.els_logo_pyld_dma); + + del_timer(&elsio->timer); + qla2x00_rel_sp(vha, sp); +} + +static void +qla2x00_els_dcmd_iocb_timeout(void *data) +{ + srb_t *sp = (srb_t *)data; + struct srb_iocb *lio = &sp->u.iocb_cmd; + fc_port_t *fcport = sp->fcport; + struct scsi_qla_host *vha = fcport->vha; + struct qla_hw_data *ha = vha->hw; + unsigned long flags = 0; + + ql_dbg(ql_dbg_io, vha, 0x3069, + "%s Timeout, hdl=%x, portid=%02x%02x%02x\n", + sp->name, sp->handle, fcport->d_id.b.domain, fcport->d_id.b.area, + fcport->d_id.b.al_pa); + + /* Abort the exchange */ + spin_lock_irqsave(&ha->hardware_lock, flags); + if (ha->isp_ops->abort_command(sp)) { + ql_dbg(ql_dbg_io, vha, 0x3070, + "mbx abort_command failed.\n"); + } else { + ql_dbg(ql_dbg_io, vha, 0x3071, + "mbx abort_command success.\n"); + } + spin_unlock_irqrestore(&ha->hardware_lock, flags); + + complete(&lio->u.els_logo.comp); +} + +static void +qla2x00_els_dcmd_sp_done(void *data, void *ptr, int res) +{ + srb_t *sp = (srb_t *)ptr; + fc_port_t *fcport = sp->fcport; + struct srb_iocb *lio = &sp->u.iocb_cmd; + struct scsi_qla_host *vha = fcport->vha; + + ql_dbg(ql_dbg_io, vha, 0x3072, + "%s hdl=%x, portid=%02x%02x%02x done\n", + sp->name, sp->handle, fcport->d_id.b.domain, + fcport->d_id.b.area, fcport->d_id.b.al_pa); + + complete(&lio->u.els_logo.comp); +} + +int +qla24xx_els_dcmd_iocb(scsi_qla_host_t *vha, int els_opcode, + port_id_t remote_did) +{ + srb_t *sp; + fc_port_t *fcport = NULL; + struct srb_iocb *elsio = NULL; + struct qla_hw_data *ha = vha->hw; + struct els_logo_payload logo_pyld; + int rval = QLA_SUCCESS; + + fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); + if (!fcport) { + ql_log(ql_log_info, vha, 0x70e5, "fcport allocation failed\n"); + return -ENOMEM; + } + + /* Alloc SRB structure */ + sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); + if (!sp) { + kfree(fcport); + ql_log(ql_log_info, vha, 0x70e6, + "SRB allocation failed\n"); + return -ENOMEM; + } + + elsio = &sp->u.iocb_cmd; + fcport->loop_id = 0xFFFF; + fcport->d_id.b.domain = remote_did.b.domain; + fcport->d_id.b.area = remote_did.b.area; + fcport->d_id.b.al_pa = remote_did.b.al_pa; + + ql_dbg(ql_dbg_io, vha, 0x3073, "portid=%02x%02x%02x done\n", + fcport->d_id.b.domain, fcport->d_id.b.area, fcport->d_id.b.al_pa); + + sp->type = SRB_ELS_DCMD; + sp->name = "ELS_DCMD"; + sp->fcport = fcport; + qla2x00_init_timer(sp, ELS_DCMD_TIMEOUT); + elsio->timeout = qla2x00_els_dcmd_iocb_timeout; + sp->done = qla2x00_els_dcmd_sp_done; + sp->free = qla2x00_els_dcmd_sp_free; + + elsio->u.els_logo.els_logo_pyld = dma_alloc_coherent(&ha->pdev->dev, + DMA_POOL_SIZE, &elsio->u.els_logo.els_logo_pyld_dma, + GFP_KERNEL); + + if (!elsio->u.els_logo.els_logo_pyld) { + sp->free(vha, sp); + return QLA_FUNCTION_FAILED; + } + + memset(&logo_pyld, 0, sizeof(struct els_logo_payload)); + + elsio->u.els_logo.els_cmd = els_opcode; + logo_pyld.opcode = els_opcode; + logo_pyld.s_id[0] = vha->d_id.b.al_pa; + logo_pyld.s_id[1] = vha->d_id.b.area; + logo_pyld.s_id[2] = vha->d_id.b.domain; + host_to_fcp_swap(logo_pyld.s_id, sizeof(uint32_t)); + memcpy(&logo_pyld.wwpn, vha->port_name, WWN_SIZE); + + memcpy(elsio->u.els_logo.els_logo_pyld, &logo_pyld, + sizeof(struct els_logo_payload)); + + rval = qla2x00_start_sp(sp); + if (rval != QLA_SUCCESS) { + sp->free(vha, sp); + return QLA_FUNCTION_FAILED; + } + + ql_dbg(ql_dbg_io, vha, 0x3074, + "%s LOGO sent, hdl=%x, loopid=%x, portid=%02x%02x%02x.\n", + sp->name, sp->handle, fcport->loop_id, fcport->d_id.b.domain, + fcport->d_id.b.area, fcport->d_id.b.al_pa); + + wait_for_completion(&elsio->u.els_logo.comp); + + sp->free(vha, sp); + return rval; +} + +static void +qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) +{ + scsi_qla_host_t *vha = sp->fcport->vha; + struct srb_iocb *elsio = &sp->u.iocb_cmd; + + els_iocb->entry_type = ELS_IOCB_TYPE; + els_iocb->entry_count = 1; + els_iocb->sys_define = 0; + els_iocb->entry_status = 0; + els_iocb->handle = sp->handle; + els_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id); + els_iocb->tx_dsd_count = 1; + els_iocb->vp_index = vha->vp_idx; + els_iocb->sof_type = EST_SOFI3; + els_iocb->rx_dsd_count = 0; + els_iocb->opcode = elsio->u.els_logo.els_cmd; + + els_iocb->port_id[0] = sp->fcport->d_id.b.al_pa; + els_iocb->port_id[1] = sp->fcport->d_id.b.area; + els_iocb->port_id[2] = sp->fcport->d_id.b.domain; + els_iocb->control_flags = 0; + + els_iocb->tx_byte_count = sizeof(struct els_logo_payload); + els_iocb->tx_address[0] = + cpu_to_le32(LSD(elsio->u.els_logo.els_logo_pyld_dma)); + els_iocb->tx_address[1] = + cpu_to_le32(MSD(elsio->u.els_logo.els_logo_pyld_dma)); + els_iocb->tx_len = cpu_to_le32(sizeof(struct els_logo_payload)); + + els_iocb->rx_byte_count = 0; + els_iocb->rx_address[0] = 0; + els_iocb->rx_address[1] = 0; + els_iocb->rx_len = 0; + + sp->fcport->vha->qla_stats.control_requests++; +} + +static void qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) { struct fc_bsg_job *bsg_job = sp->u.bsg_job; @@ -2623,6 +2808,9 @@ qlafx00_abort_iocb(sp, pkt) : qla24xx_abort_iocb(sp, pkt); break; + case SRB_ELS_DCMD: + qla24xx_els_logo_iocb(sp, pkt); + break; default: break; } --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_isr.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_isr.c @@ -18,6 +18,10 @@ static void qla2x00_status_cont_entry(struct rsp_que *, sts_cont_entry_t *); static void qla2x00_error_entry(scsi_qla_host_t *, struct rsp_que *, sts_entry_t *); +static void qla_irq_affinity_notify(struct irq_affinity_notify *, + const cpumask_t *); +static void qla_irq_affinity_release(struct kref *); + /** * qla2100_intr_handler() - Process interrupts for the ISP2100 and ISP2200. @@ -1418,6 +1422,12 @@ case SRB_CT_CMD: type = "ct pass-through"; break; + case SRB_ELS_DCMD: + type = "Driver ELS logo"; + ql_dbg(ql_dbg_user, vha, 0x5047, + "Completing %s: (%p) type=%d.\n", type, sp, sp->type); + sp->done(vha, sp, 0); + return; default: ql_dbg(ql_dbg_user, vha, 0x503e, "Unrecognized SRB: (%p) type=%d.\n", sp, sp->type); @@ -2542,6 +2552,14 @@ if (!vha->flags.online) return; + if (rsp->msix->cpuid != smp_processor_id()) { + /* if kernel does not notify qla of IRQ's CPU change, + * then set it here. + */ + rsp->msix->cpuid = smp_processor_id(); + ha->tgt.rspq_vector_cpuid = rsp->msix->cpuid; + } + while (rsp->ring_ptr->signature != RESPONSE_PROCESSED) { pkt = (struct sts_entry_24xx *)rsp->ring_ptr; @@ -2587,8 +2605,14 @@ qla24xx_els_ct_entry(vha, rsp->req, pkt, ELS_IOCB_TYPE); break; case ABTS_RECV_24XX: - /* ensure that the ATIO queue is empty */ - qlt_24xx_process_atio_queue(vha); + if (IS_QLA83XX(ha) || IS_QLA27XX(ha)) { + /* ensure that the ATIO queue is empty */ + qlt_handle_abts_recv(vha, (response_t *)pkt); + break; + } else { + /* drop through */ + qlt_24xx_process_atio_queue(vha, 1); + } case ABTS_RESP_24XX: case CTIO_TYPE7: case NOTIFY_ACK_TYPE: @@ -2755,13 +2779,22 @@ case INTR_RSP_QUE_UPDATE_83XX: qla24xx_process_response_queue(vha, rsp); break; - case INTR_ATIO_QUE_UPDATE: - qlt_24xx_process_atio_queue(vha); + case INTR_ATIO_QUE_UPDATE:{ + unsigned long flags2; + spin_lock_irqsave(&ha->tgt.atio_lock, flags2); + qlt_24xx_process_atio_queue(vha, 1); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2); break; - case INTR_ATIO_RSP_QUE_UPDATE: - qlt_24xx_process_atio_queue(vha); + } + case INTR_ATIO_RSP_QUE_UPDATE: { + unsigned long flags2; + spin_lock_irqsave(&ha->tgt.atio_lock, flags2); + qlt_24xx_process_atio_queue(vha, 1); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2); + qla24xx_process_response_queue(vha, rsp); break; + } default: ql_dbg(ql_dbg_async, vha, 0x504f, "Unrecognized interrupt type (%d).\n", stat * 0xff); @@ -2920,13 +2953,22 @@ case INTR_RSP_QUE_UPDATE_83XX: qla24xx_process_response_queue(vha, rsp); break; - case INTR_ATIO_QUE_UPDATE: - qlt_24xx_process_atio_queue(vha); + case INTR_ATIO_QUE_UPDATE:{ + unsigned long flags2; + spin_lock_irqsave(&ha->tgt.atio_lock, flags2); + qlt_24xx_process_atio_queue(vha, 1); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2); break; - case INTR_ATIO_RSP_QUE_UPDATE: - qlt_24xx_process_atio_queue(vha); + } + case INTR_ATIO_RSP_QUE_UPDATE: { + unsigned long flags2; + spin_lock_irqsave(&ha->tgt.atio_lock, flags2); + qlt_24xx_process_atio_queue(vha, 1); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2); + qla24xx_process_response_queue(vha, rsp); break; + } default: ql_dbg(ql_dbg_async, vha, 0x5051, "Unrecognized interrupt type (%d).\n", stat & 0xff); @@ -2973,8 +3015,11 @@ for (i = 0; i < ha->msix_count; i++) { qentry = &ha->msix_entries[i]; - if (qentry->have_irq) + if (qentry->have_irq) { + /* un-register irq cpu affinity notification */ + irq_set_affinity_notifier(qentry->vector, NULL); free_irq(qentry->vector, qentry->rsp); + } } pci_disable_msix(ha->pdev); kfree(ha->msix_entries); @@ -3037,6 +3082,9 @@ qentry->entry = entries[i].entry; qentry->have_irq = 0; qentry->rsp = NULL; + qentry->irq_notify.notify = qla_irq_affinity_notify; + qentry->irq_notify.release = qla_irq_affinity_release; + qentry->cpuid = -1; } /* Enable MSI-X vectors for the base queue */ @@ -3055,6 +3103,18 @@ qentry->have_irq = 1; qentry->rsp = rsp; rsp->msix = qentry; + + /* Register for CPU affinity notification. */ + irq_set_affinity_notifier(qentry->vector, &qentry->irq_notify); + + /* Schedule work (ie. trigger a notification) to read cpu + * mask for this specific irq. + * kref_get is required because + * irq_affinity_notify() will do + * kref_put(). + */ + kref_get(&qentry->irq_notify.kref); + schedule_work(&qentry->irq_notify.work); } /* @@ -3234,3 +3294,47 @@ msix->rsp = rsp; return ret; } + + +/* irq_set_affinity/irqbalance will trigger notification of cpu mask update */ +static void qla_irq_affinity_notify(struct irq_affinity_notify *notify, + const cpumask_t *mask) +{ + struct qla_msix_entry *e = + container_of(notify, struct qla_msix_entry, irq_notify); + struct qla_hw_data *ha; + struct scsi_qla_host *base_vha; + + /* user is recommended to set mask to just 1 cpu */ + e->cpuid = cpumask_first(mask); + + ha = e->rsp->hw; + base_vha = pci_get_drvdata(ha->pdev); + + ql_dbg(ql_dbg_init, base_vha, 0xffff, + "%s: host %ld : vector %d cpu %d \n", __func__, + base_vha->host_no, e->vector, e->cpuid); + + if (e->have_irq) { + if ((IS_QLA83XX(ha) || IS_QLA27XX(ha)) && + (e->entry == QLA83XX_RSPQ_MSIX_ENTRY_NUMBER)) { + ha->tgt.rspq_vector_cpuid = e->cpuid; + ql_dbg(ql_dbg_init, base_vha, 0xffff, + "%s: host%ld: rspq vector %d cpu %d runtime change\n", + __func__, base_vha->host_no, e->vector, e->cpuid); + } + } +} + +static void qla_irq_affinity_release(struct kref *ref) +{ + struct irq_affinity_notify *notify = + container_of(ref, struct irq_affinity_notify, kref); + struct qla_msix_entry *e = + container_of(notify, struct qla_msix_entry, irq_notify); + struct scsi_qla_host *base_vha = pci_get_drvdata(e->rsp->hw->pdev); + + ql_dbg(ql_dbg_init, base_vha, 0xffff, + "%s: host%ld: vector %d cpu %d \n", __func__, + base_vha->host_no, e->vector, e->cpuid); +} --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_mbx.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_mbx.c @@ -489,6 +489,13 @@ EXTENDED_BB_CREDITS); } else mcp->mb[4] = 0; + + if (ha->flags.exlogins_enabled) + mcp->mb[4] |= ENABLE_EXTENDED_LOGIN; + + if (ha->flags.exchoffld_enabled) + mcp->mb[4] |= ENABLE_EXCHANGE_OFFLD; + mcp->out_mb |= MBX_4|MBX_3|MBX_2|MBX_1; mcp->in_mb |= MBX_1; } else { @@ -521,6 +528,226 @@ } /* + * qla_get_exlogin_status + * Get extended login status + * uses the memory offload control/status Mailbox + * + * Input: + * ha: adapter state pointer. + * fwopt: firmware options + * + * Returns: + * qla2x00 local function status + * + * Context: + * Kernel context. + */ +#define FETCH_XLOGINS_STAT 0x8 +int +qla_get_exlogin_status(scsi_qla_host_t *vha, uint16_t *buf_sz, + uint16_t *ex_logins_cnt) +{ + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118f, + "Entered %s\n", __func__); + + memset(mcp->mb, 0 , sizeof(mcp->mb)); + mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT; + mcp->mb[1] = FETCH_XLOGINS_STAT; + mcp->out_mb = MBX_1|MBX_0; + mcp->in_mb = MBX_10|MBX_4|MBX_0; + mcp->tov = MBX_TOV_SECONDS; + mcp->flags = 0; + + rval = qla2x00_mailbox_command(vha, mcp); + if (rval != QLA_SUCCESS) { + ql_dbg(ql_dbg_mbx, vha, 0x1115, "Failed=%x.\n", rval); + } else { + *buf_sz = mcp->mb[4]; + *ex_logins_cnt = mcp->mb[10]; + + ql_log(ql_log_info, vha, 0x1190, + "buffer size 0x%x, exchange login count=%d\n", + mcp->mb[4], mcp->mb[10]); + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1116, + "Done %s.\n", __func__); + } + + return rval; +} + +/* + * qla_set_exlogin_mem_cfg + * set extended login memory configuration + * Mbx needs to be issues before init_cb is set + * + * Input: + * ha: adapter state pointer. + * buffer: buffer pointer + * phys_addr: physical address of buffer + * size: size of buffer + * TARGET_QUEUE_LOCK must be released + * ADAPTER_STATE_LOCK must be release + * + * Returns: + * qla2x00 local funxtion status code. + * + * Context: + * Kernel context. + */ +#define CONFIG_XLOGINS_MEM 0x3 +int +qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr) +{ + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + struct qla_hw_data *ha = vha->hw; + int configured_count; + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x111a, + "Entered %s.\n", __func__); + + memset(mcp->mb, 0 , sizeof(mcp->mb)); + mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT; + mcp->mb[1] = CONFIG_XLOGINS_MEM; + mcp->mb[2] = MSW(phys_addr); + mcp->mb[3] = LSW(phys_addr); + mcp->mb[6] = MSW(MSD(phys_addr)); + mcp->mb[7] = LSW(MSD(phys_addr)); + mcp->mb[8] = MSW(ha->exlogin_size); + mcp->mb[9] = LSW(ha->exlogin_size); + mcp->out_mb = MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_11|MBX_0; + mcp->tov = MBX_TOV_SECONDS; + mcp->flags = 0; + rval = qla2x00_mailbox_command(vha, mcp); + if (rval != QLA_SUCCESS) { + /*EMPTY*/ + ql_dbg(ql_dbg_mbx, vha, 0x111b, "Failed=%x.\n", rval); + } else { + configured_count = mcp->mb[11]; + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c, + "Done %s.\n", __func__); + } + + return rval; +} + +/* + * qla_get_exchoffld_status + * Get exchange offload status + * uses the memory offload control/status Mailbox + * + * Input: + * ha: adapter state pointer. + * fwopt: firmware options + * + * Returns: + * qla2x00 local function status + * + * Context: + * Kernel context. + */ +#define FETCH_XCHOFFLD_STAT 0x2 +int +qla_get_exchoffld_status(scsi_qla_host_t *vha, uint16_t *buf_sz, + uint16_t *ex_logins_cnt) +{ + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1019, + "Entered %s\n", __func__); + + memset(mcp->mb, 0 , sizeof(mcp->mb)); + mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT; + mcp->mb[1] = FETCH_XCHOFFLD_STAT; + mcp->out_mb = MBX_1|MBX_0; + mcp->in_mb = MBX_10|MBX_4|MBX_0; + mcp->tov = MBX_TOV_SECONDS; + mcp->flags = 0; + + rval = qla2x00_mailbox_command(vha, mcp); + if (rval != QLA_SUCCESS) { + ql_dbg(ql_dbg_mbx, vha, 0x1155, "Failed=%x.\n", rval); + } else { + *buf_sz = mcp->mb[4]; + *ex_logins_cnt = mcp->mb[10]; + + ql_log(ql_log_info, vha, 0x118e, + "buffer size 0x%x, exchange offload count=%d\n", + mcp->mb[4], mcp->mb[10]); + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1156, + "Done %s.\n", __func__); + } + + return rval; +} + +/* + * qla_set_exchoffld_mem_cfg + * Set exchange offload memory configuration + * Mbx needs to be issues before init_cb is set + * + * Input: + * ha: adapter state pointer. + * buffer: buffer pointer + * phys_addr: physical address of buffer + * size: size of buffer + * TARGET_QUEUE_LOCK must be released + * ADAPTER_STATE_LOCK must be release + * + * Returns: + * qla2x00 local funxtion status code. + * + * Context: + * Kernel context. + */ +#define CONFIG_XCHOFFLD_MEM 0x3 +int +qla_set_exchoffld_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr) +{ + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + struct qla_hw_data *ha = vha->hw; + + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1157, + "Entered %s.\n", __func__); + + memset(mcp->mb, 0 , sizeof(mcp->mb)); + mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT; + mcp->mb[1] = CONFIG_XCHOFFLD_MEM; + mcp->mb[2] = MSW(phys_addr); + mcp->mb[3] = LSW(phys_addr); + mcp->mb[6] = MSW(MSD(phys_addr)); + mcp->mb[7] = LSW(MSD(phys_addr)); + mcp->mb[8] = MSW(ha->exlogin_size); + mcp->mb[9] = LSW(ha->exlogin_size); + mcp->out_mb = MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_11|MBX_0; + mcp->tov = MBX_TOV_SECONDS; + mcp->flags = 0; + rval = qla2x00_mailbox_command(vha, mcp); + if (rval != QLA_SUCCESS) { + /*EMPTY*/ + ql_dbg(ql_dbg_mbx, vha, 0x1158, "Failed=%x.\n", rval); + } else { + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1192, + "Done %s.\n", __func__); + } + + return rval; +} + +/* * qla2x00_get_fw_version * Get firmware version. * @@ -594,6 +821,16 @@ ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x112f, "%s: Ext_FwAttributes Upper: 0x%x, Lower: 0x%x.\n", __func__, mcp->mb[17], mcp->mb[16]); + + if (ha->fw_attributes_h & 0x4) + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118d, + "%s: Firmware supports Extended Login 0x%x\n", + __func__, ha->fw_attributes_h); + + if (ha->fw_attributes_h & 0x8) + ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1191, + "%s: Firmware supports Exchange Offload 0x%x\n", + __func__, ha->fw_attributes_h); } if (IS_QLA27XX(ha)) { @@ -2383,10 +2620,9 @@ * Kernel context. */ int -qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, - uint16_t *orig_xchg_cnt, uint16_t *cur_iocb_cnt, - uint16_t *orig_iocb_cnt, uint16_t *max_npiv_vports, uint16_t *max_fcfs) +qla2x00_get_resource_cnts(scsi_qla_host_t *vha) { + struct qla_hw_data *ha = vha->hw; int rval; mbx_cmd_t mc; mbx_cmd_t *mcp = &mc; @@ -2414,19 +2650,16 @@ mcp->mb[3], mcp->mb[6], mcp->mb[7], mcp->mb[10], mcp->mb[11], mcp->mb[12]); - if (cur_xchg_cnt) - *cur_xchg_cnt = mcp->mb[3]; - if (orig_xchg_cnt) - *orig_xchg_cnt = mcp->mb[6]; - if (cur_iocb_cnt) - *cur_iocb_cnt = mcp->mb[7]; - if (orig_iocb_cnt) - *orig_iocb_cnt = mcp->mb[10]; - if (vha->hw->flags.npiv_supported && max_npiv_vports) - *max_npiv_vports = mcp->mb[11]; - if ((IS_QLA81XX(vha->hw) || IS_QLA83XX(vha->hw) || - IS_QLA27XX(vha->hw)) && max_fcfs) - *max_fcfs = mcp->mb[12]; + ha->orig_fw_tgt_xcb_count = mcp->mb[1]; + ha->cur_fw_tgt_xcb_count = mcp->mb[2]; + ha->cur_fw_xcb_count = mcp->mb[3]; + ha->orig_fw_xcb_count = mcp->mb[6]; + ha->cur_fw_iocb_count = mcp->mb[7]; + ha->orig_fw_iocb_count = mcp->mb[10]; + if (ha->flags.npiv_supported) + ha->max_npiv_vports = mcp->mb[11]; + if (IS_QLA81XX(ha) || IS_QLA83XX(ha) || IS_QLA27XX(ha)) + ha->fw_max_fcf_count = mcp->mb[12]; } return (rval); --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_os.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_os.c @@ -221,6 +221,18 @@ "0 - MiniDump disabled. " "1 (Default) - MiniDump enabled."); +int ql2xexlogins = 0; +module_param(ql2xexlogins, uint, S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(ql2xexlogins, + "Number of extended Logins. " + "0 (Default)- Disabled."); + +int ql2xexchoffld = 0; +module_param(ql2xexchoffld, uint, S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(ql2xexchoffld, + "Number of exchanges to offload. " + "0 (Default)- Disabled."); + /* * SCSI host template entry points */ @@ -2324,6 +2336,9 @@ ha->tgt.enable_class_2 = ql2xenableclass2; INIT_LIST_HEAD(&ha->tgt.q_full_list); spin_lock_init(&ha->tgt.q_full_lock); + spin_lock_init(&ha->tgt.sess_lock); + spin_lock_init(&ha->tgt.atio_lock); + /* Clear our data area */ ha->bars = bars; @@ -2468,7 +2483,7 @@ ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; ha->mbx_count = MAILBOX_REGISTER_COUNT; req_length = REQUEST_ENTRY_CNT_83XX; - rsp_length = RESPONSE_ENTRY_CNT_2300; + rsp_length = RESPONSE_ENTRY_CNT_83XX; ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; ha->max_loop_id = SNS_LAST_LOOP_ID_2300; ha->init_cb_size = sizeof(struct mid_init_cb_81xx); @@ -2498,8 +2513,8 @@ ha->portnum = PCI_FUNC(ha->pdev->devfn); ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; ha->mbx_count = MAILBOX_REGISTER_COUNT; - req_length = REQUEST_ENTRY_CNT_24XX; - rsp_length = RESPONSE_ENTRY_CNT_2300; + req_length = REQUEST_ENTRY_CNT_83XX; + rsp_length = RESPONSE_ENTRY_CNT_83XX; ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; ha->max_loop_id = SNS_LAST_LOOP_ID_2300; ha->init_cb_size = sizeof(struct mid_init_cb_81xx); @@ -3128,6 +3143,14 @@ base_vha->flags.online = 0; + /* free DMA memory */ + if (ha->exlogin_buf) + qla2x00_free_exlogin_buffer(ha); + + /* free DMA memory */ + if (ha->exchoffld_buf) + qla2x00_free_exchoffld_buffer(ha); + qla2x00_destroy_deferred_work(ha); qlt_remove_target(ha, base_vha); @@ -3587,6 +3610,140 @@ return -ENOMEM; } +int +qla2x00_set_exlogins_buffer(scsi_qla_host_t *vha) +{ + int rval; + uint16_t size, max_cnt, temp; + struct qla_hw_data *ha = vha->hw; + + /* Return if we don't need to alloacate any extended logins */ + if (!ql2xexlogins) + return QLA_SUCCESS; + + ql_log(ql_log_info, vha, 0xd021, "EXLOGIN count: %d.\n", ql2xexlogins); + max_cnt = 0; + rval = qla_get_exlogin_status(vha, &size, &max_cnt); + if (rval != QLA_SUCCESS) { + ql_log_pci(ql_log_fatal, ha->pdev, 0xd029, + "Failed to get exlogin status.\n"); + return rval; + } + + temp = (ql2xexlogins > max_cnt) ? max_cnt : ql2xexlogins; + ha->exlogin_size = (size * temp); + ql_log(ql_log_info, vha, 0xd024, + "EXLOGIN: max_logins=%d, portdb=0x%x, total=%d.\n", + max_cnt, size, temp); + + ql_log(ql_log_info, vha, 0xd025, "EXLOGIN: requested size=0x%x\n", + ha->exlogin_size); + + /* Get consistent memory for extended logins */ + ha->exlogin_buf = dma_alloc_coherent(&ha->pdev->dev, + ha->exlogin_size, &ha->exlogin_buf_dma, GFP_KERNEL); + if (!ha->exlogin_buf) { + ql_log_pci(ql_log_fatal, ha->pdev, 0xd02a, + "Failed to allocate memory for exlogin_buf_dma.\n"); + return -ENOMEM; + } + + /* Now configure the dma buffer */ + rval = qla_set_exlogin_mem_cfg(vha, ha->exlogin_buf_dma); + if (rval) { + ql_log(ql_log_fatal, vha, 0x00cf, + "Setup extended login buffer ****FAILED****.\n"); + qla2x00_free_exlogin_buffer(ha); + } + + return rval; +} + +/* +* qla2x00_free_exlogin_buffer +* +* Input: +* ha = adapter block pointer +*/ +void +qla2x00_free_exlogin_buffer(struct qla_hw_data *ha) +{ + if (ha->exlogin_buf) { + dma_free_coherent(&ha->pdev->dev, ha->exlogin_size, + ha->exlogin_buf, ha->exlogin_buf_dma); + ha->exlogin_buf = NULL; + ha->exlogin_size = 0; + } +} + +int +qla2x00_set_exchoffld_buffer(scsi_qla_host_t *vha) +{ + int rval; + uint16_t size, max_cnt, temp; + struct qla_hw_data *ha = vha->hw; + + /* Return if we don't need to alloacate any extended logins */ + if (!ql2xexchoffld) + return QLA_SUCCESS; + + ql_log(ql_log_info, vha, 0xd014, + "Exchange offload count: %d.\n", ql2xexlogins); + + max_cnt = 0; + rval = qla_get_exchoffld_status(vha, &size, &max_cnt); + if (rval != QLA_SUCCESS) { + ql_log_pci(ql_log_fatal, ha->pdev, 0xd012, + "Failed to get exlogin status.\n"); + return rval; + } + + temp = (ql2xexchoffld > max_cnt) ? max_cnt : ql2xexchoffld; + ha->exchoffld_size = (size * temp); + ql_log(ql_log_info, vha, 0xd016, + "Exchange offload: max_count=%d, buffers=0x%x, total=%d.\n", + max_cnt, size, temp); + + ql_log(ql_log_info, vha, 0xd017, + "Exchange Buffers requested size = 0x%x\n", ha->exchoffld_size); + + /* Get consistent memory for extended logins */ + ha->exchoffld_buf = dma_alloc_coherent(&ha->pdev->dev, + ha->exchoffld_size, &ha->exchoffld_buf_dma, GFP_KERNEL); + if (!ha->exchoffld_buf) { + ql_log_pci(ql_log_fatal, ha->pdev, 0xd013, + "Failed to allocate memory for exchoffld_buf_dma.\n"); + return -ENOMEM; + } + + /* Now configure the dma buffer */ + rval = qla_set_exchoffld_mem_cfg(vha, ha->exchoffld_buf_dma); + if (rval) { + ql_log(ql_log_fatal, vha, 0xd02e, + "Setup exchange offload buffer ****FAILED****.\n"); + qla2x00_free_exchoffld_buffer(ha); + } + + return rval; +} + +/* +* qla2x00_free_exchoffld_buffer +* +* Input: +* ha = adapter block pointer +*/ +void +qla2x00_free_exchoffld_buffer(struct qla_hw_data *ha) +{ + if (ha->exchoffld_buf) { + dma_free_coherent(&ha->pdev->dev, ha->exchoffld_size, + ha->exchoffld_buf, ha->exchoffld_buf_dma); + ha->exchoffld_buf = NULL; + ha->exchoffld_size = 0; + } +} + /* * qla2x00_free_fw_dump * Frees fw dump stuff. @@ -3766,6 +3923,8 @@ INIT_LIST_HEAD(&vha->list); INIT_LIST_HEAD(&vha->qla_cmd_list); INIT_LIST_HEAD(&vha->qla_sess_op_cmd_list); + INIT_LIST_HEAD(&vha->logo_list); + INIT_LIST_HEAD(&vha->plogi_ack_list); spin_lock_init(&vha->work_lock); spin_lock_init(&vha->cmd_list_lock); @@ -5843,6 +6002,3 @@ MODULE_FIRMWARE(FW_FILE_ISP2322); MODULE_FIRMWARE(FW_FILE_ISP24XX); MODULE_FIRMWARE(FW_FILE_ISP25XX); -MODULE_FIRMWARE(FW_FILE_ISP2031); -MODULE_FIRMWARE(FW_FILE_ISP8031); -MODULE_FIRMWARE(FW_FILE_ISP27XX); --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_target.c +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_target.c @@ -100,7 +100,7 @@ */ /* Predefs for callbacks handed to qla2xxx LLD */ static void qlt_24xx_atio_pkt(struct scsi_qla_host *ha, - struct atio_from_isp *pkt); + struct atio_from_isp *pkt, uint8_t); static void qlt_response_pkt(struct scsi_qla_host *ha, response_t *pkt); static int qlt_issue_task_mgmt(struct qla_tgt_sess *sess, uint32_t lun, int fn, void *iocb, int flags); @@ -118,10 +118,13 @@ struct imm_ntfy_from_isp *ntfy, uint32_t add_flags, uint16_t resp_code, int resp_code_valid, uint16_t srr_flags, uint16_t srr_reject_code, uint8_t srr_explan); +static void qlt_send_term_imm_notif(struct scsi_qla_host *vha, + struct imm_ntfy_from_isp *imm, int ha_locked); /* * Global Variables */ static struct kmem_cache *qla_tgt_mgmt_cmd_cachep; +static struct kmem_cache *qla_tgt_plogi_cachep; static mempool_t *qla_tgt_mgmt_cmd_mempool; static struct workqueue_struct *qla_tgt_wq; static DEFINE_MUTEX(qla_tgt_mutex); @@ -226,8 +229,8 @@ spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); } -static void qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, - struct atio_from_isp *atio) +static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, + struct atio_from_isp *atio, uint8_t ha_locked) { ql_dbg(ql_dbg_tgt, vha, 0xe072, "%s: qla_target(%d): type %x ox_id %04x\n", @@ -248,7 +251,7 @@ atio->u.isp24.fcp_hdr.d_id[2]); break; } - qlt_24xx_atio_pkt(host, atio); + qlt_24xx_atio_pkt(host, atio, ha_locked); break; } @@ -271,7 +274,7 @@ break; } } - qlt_24xx_atio_pkt(host, atio); + qlt_24xx_atio_pkt(host, atio, ha_locked); break; } @@ -282,7 +285,7 @@ break; } - return; + return false; } void qlt_response_pkt_all_vps(struct scsi_qla_host *vha, response_t *pkt) @@ -389,6 +392,131 @@ } +/* + * All qlt_plogi_ack_t operations are protected by hardware_lock + */ + +/* + * This is a zero-base ref-counting solution, since hardware_lock + * guarantees that ref_count is not modified concurrently. + * Upon successful return content of iocb is undefined + */ +static qlt_plogi_ack_t * +qlt_plogi_ack_find_add(struct scsi_qla_host *vha, port_id_t *id, + struct imm_ntfy_from_isp *iocb) +{ + qlt_plogi_ack_t *pla; + + list_for_each_entry(pla, &vha->plogi_ack_list, list) { + if (pla->id.b24 == id->b24) { + qlt_send_term_imm_notif(vha, &pla->iocb, 1); + pla->iocb = *iocb; + return pla; + } + } + + pla = kmem_cache_zalloc(qla_tgt_plogi_cachep, GFP_ATOMIC); + if (!pla) { + ql_dbg(ql_dbg_async, vha, 0x5088, + "qla_target(%d): Allocation of plogi_ack failed\n", + vha->vp_idx); + return NULL; + } + + pla->iocb = *iocb; + pla->id = *id; + list_add_tail(&pla->list, &vha->plogi_ack_list); + + return pla; +} + +static void qlt_plogi_ack_unref(struct scsi_qla_host *vha, qlt_plogi_ack_t *pla) +{ + BUG_ON(!pla->ref_count); + pla->ref_count--; + + if (pla->ref_count) + return; + + ql_dbg(ql_dbg_async, vha, 0x5089, + "Sending PLOGI ACK to wwn %8phC s_id %02x:%02x:%02x loop_id %#04x" + " exch %#x ox_id %#x\n", pla->iocb.u.isp24.port_name, + pla->iocb.u.isp24.port_id[2], pla->iocb.u.isp24.port_id[1], + pla->iocb.u.isp24.port_id[0], + le16_to_cpu(pla->iocb.u.isp24.nport_handle), + pla->iocb.u.isp24.exchange_address, pla->iocb.ox_id); + qlt_send_notify_ack(vha, &pla->iocb, 0, 0, 0, 0, 0, 0); + + list_del(&pla->list); + kmem_cache_free(qla_tgt_plogi_cachep, pla); +} + +static void +qlt_plogi_ack_link(struct scsi_qla_host *vha, qlt_plogi_ack_t *pla, + struct qla_tgt_sess *sess, qlt_plogi_link_t link) +{ + /* Inc ref_count first because link might already be pointing at pla */ + pla->ref_count++; + + if (sess->plogi_link[link]) + qlt_plogi_ack_unref(vha, sess->plogi_link[link]); + + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf097, + "Linking sess %p [%d] wwn %8phC with PLOGI ACK to wwn %8phC" + " s_id %02x:%02x:%02x, ref=%d\n", sess, link, sess->port_name, + pla->iocb.u.isp24.port_name, pla->iocb.u.isp24.port_id[2], + pla->iocb.u.isp24.port_id[1], pla->iocb.u.isp24.port_id[0], + pla->ref_count); + + sess->plogi_link[link] = pla; +} + +typedef struct { + /* These fields must be initialized by the caller */ + port_id_t id; + /* + * number of cmds dropped while we were waiting for + * initiator to ack LOGO initialize to 1 if LOGO is + * triggered by a command, otherwise, to 0 + */ + int cmd_count; + + /* These fields are used by callee */ + struct list_head list; +} qlt_port_logo_t; + +static void +qlt_send_first_logo(struct scsi_qla_host *vha, qlt_port_logo_t *logo) +{ + qlt_port_logo_t *tmp; + int res; + + mutex_lock(&vha->vha_tgt.tgt_mutex); + + list_for_each_entry(tmp, &vha->logo_list, list) { + if (tmp->id.b24 == logo->id.b24) { + tmp->cmd_count += logo->cmd_count; + mutex_unlock(&vha->vha_tgt.tgt_mutex); + return; + } + } + + list_add_tail(&logo->list, &vha->logo_list); + + mutex_unlock(&vha->vha_tgt.tgt_mutex); + + res = qla24xx_els_dcmd_iocb(vha, ELS_DCMD_LOGO, logo->id); + + mutex_lock(&vha->vha_tgt.tgt_mutex); + list_del(&logo->list); + mutex_unlock(&vha->vha_tgt.tgt_mutex); + + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf098, + "Finished LOGO to %02x:%02x:%02x, dropped %d cmds, res = %#x\n", + logo->id.b.domain, logo->id.b.area, logo->id.b.al_pa, + logo->cmd_count, res); +} + static void qlt_free_session_done(struct work_struct *work) { struct qla_tgt_sess *sess = container_of(work, struct qla_tgt_sess, @@ -402,14 +530,21 @@ ql_dbg(ql_dbg_tgt_mgt, vha, 0xf084, "%s: se_sess %p / sess %p from port %8phC loop_id %#04x" - " s_id %02x:%02x:%02x logout %d keep %d plogi %d\n", + " s_id %02x:%02x:%02x logout %d keep %d els_logo %d\n", __func__, sess->se_sess, sess, sess->port_name, sess->loop_id, sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa, sess->logout_on_delete, sess->keep_nport_handle, - sess->plogi_ack_needed); + sess->send_els_logo); BUG_ON(!tgt); + if (sess->send_els_logo) { + qlt_port_logo_t logo; + logo.id = sess->s_id; + logo.cmd_count = 0; + qlt_send_first_logo(vha, &logo); + } + if (sess->logout_on_delete) { int rc; @@ -455,9 +590,34 @@ spin_lock_irqsave(&ha->hardware_lock, flags); - if (sess->plogi_ack_needed) - qlt_send_notify_ack(vha, &sess->tm_iocb, - 0, 0, 0, 0, 0, 0); + { + qlt_plogi_ack_t *own = + sess->plogi_link[QLT_PLOGI_LINK_SAME_WWN]; + qlt_plogi_ack_t *con = + sess->plogi_link[QLT_PLOGI_LINK_CONFLICT]; + + if (con) { + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf099, + "se_sess %p / sess %p port %8phC is gone," + " %s (ref=%d), releasing PLOGI for %8phC (ref=%d)\n", + sess->se_sess, sess, sess->port_name, + own ? "releasing own PLOGI" : + "no own PLOGI pending", + own ? own->ref_count : -1, + con->iocb.u.isp24.port_name, con->ref_count); + qlt_plogi_ack_unref(vha, con); + } else { + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf09a, + "se_sess %p / sess %p port %8phC is gone, %s (ref=%d)\n", + sess->se_sess, sess, sess->port_name, + own ? "releasing own PLOGI" : + "no own PLOGI pending", + own ? own->ref_count : -1); + } + + if (own) + qlt_plogi_ack_unref(vha, own); + } list_del(&sess->sess_list_entry); @@ -476,7 +636,7 @@ wake_up_all(&tgt->waitQ); } -/* ha->hardware_lock supposed to be held on entry */ +/* ha->tgt.sess_lock supposed to be held on entry */ void qlt_unreg_sess(struct qla_tgt_sess *sess) { struct scsi_qla_host *vha = sess->vha; @@ -492,7 +652,7 @@ } EXPORT_SYMBOL(qlt_unreg_sess); -/* ha->hardware_lock supposed to be held on entry */ + static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) { struct qla_hw_data *ha = vha->hw; @@ -502,12 +662,15 @@ int res = 0; struct imm_ntfy_from_isp *n = (struct imm_ntfy_from_isp *)iocb; struct atio_from_isp *a = (struct atio_from_isp *)iocb; + unsigned long flags; loop_id = le16_to_cpu(n->u.isp24.nport_handle); if (loop_id == 0xFFFF) { /* Global event */ atomic_inc(&vha->vha_tgt.qla_tgt->tgt_global_resets_count); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); qlt_clear_tgt_db(vha->vha_tgt.qla_tgt); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); #if 0 /* FIXME: do we need to choose a session here? */ if (!list_empty(&ha->tgt.qla_tgt->sess_list)) { sess = list_entry(ha->tgt.qla_tgt->sess_list.next, @@ -534,7 +697,9 @@ sess = NULL; #endif } else { + spin_lock_irqsave(&ha->tgt.sess_lock, flags); sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); } ql_dbg(ql_dbg_tgt, vha, 0xe000, @@ -556,7 +721,7 @@ iocb, QLA24XX_MGMT_SEND_NACK); } -/* ha->hardware_lock supposed to be held on entry */ +/* ha->tgt.sess_lock supposed to be held on entry */ static void qlt_schedule_sess_for_deletion(struct qla_tgt_sess *sess, bool immediate) { @@ -600,7 +765,7 @@ sess->expires - jiffies); } -/* ha->hardware_lock supposed to be held on entry */ +/* ha->tgt.sess_lock supposed to be held on entry */ static void qlt_clear_tgt_db(struct qla_tgt *tgt) { struct qla_tgt_sess *sess; @@ -636,12 +801,12 @@ ql_dbg(ql_dbg_tgt_mgt, vha, 0xf045, "qla_target(%d): get_id_list() failed: %x\n", vha->vp_idx, rc); - res = -1; + res = -EBUSY; goto out_free_id_list; } id_iter = (char *)gid_list; - res = -1; + res = -ENOENT; for (i = 0; i < entries; i++) { struct gid_list_info *gid = (struct gid_list_info *)id_iter; if ((gid->al_pa == s_id[2]) && @@ -660,7 +825,7 @@ return res; } -/* ha->hardware_lock supposed to be held on entry */ +/* ha->tgt.sess_lock supposed to be held on entry */ static void qlt_undelete_sess(struct qla_tgt_sess *sess) { BUG_ON(sess->deleted != QLA_SESS_DELETION_PENDING); @@ -678,7 +843,7 @@ struct qla_tgt_sess *sess; unsigned long flags, elapsed; - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); while (!list_empty(&tgt->del_sess_list)) { sess = list_entry(tgt->del_sess_list.next, typeof(*sess), del_list_entry); @@ -699,7 +864,7 @@ break; } } - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); } /* @@ -717,7 +882,7 @@ unsigned char be_sid[3]; /* Check to avoid double sessions */ - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); list_for_each_entry(sess, &vha->vha_tgt.qla_tgt->sess_list, sess_list_entry) { if (!memcmp(sess->port_name, fcport->port_name, WWN_SIZE)) { @@ -732,7 +897,7 @@ /* Cannot undelete at this point */ if (sess->deleted == QLA_SESS_DELETION_IN_PROGRESS) { - spin_unlock_irqrestore(&ha->hardware_lock, + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return NULL; } @@ -749,12 +914,12 @@ qlt_do_generation_tick(vha, &sess->generation); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return sess; } } - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); sess = kzalloc(sizeof(*sess), GFP_KERNEL); if (!sess) { @@ -799,7 +964,7 @@ } /* * Take an extra reference to ->sess_kref here to handle qla_tgt_sess - * access across ->hardware_lock reaquire. + * access across ->tgt.sess_lock reaquire. */ kref_get(&sess->se_sess->sess_kref); @@ -807,11 +972,11 @@ BUILD_BUG_ON(sizeof(sess->port_name) != sizeof(fcport->port_name)); memcpy(sess->port_name, fcport->port_name, sizeof(sess->port_name)); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); list_add_tail(&sess->sess_list_entry, &vha->vha_tgt.qla_tgt->sess_list); vha->vha_tgt.qla_tgt->sess_count++; qlt_do_generation_tick(vha, &sess->generation); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); ql_dbg(ql_dbg_tgt_mgt, vha, 0xf04b, "qla_target(%d): %ssession for wwn %8phC (loop_id %d, " @@ -842,23 +1007,23 @@ if (qla_ini_mode_enabled(vha)) return; - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); if (tgt->tgt_stop) { - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return; } sess = qlt_find_sess_by_port_name(tgt, fcport->port_name); if (!sess) { - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); mutex_lock(&vha->vha_tgt.tgt_mutex); sess = qlt_create_sess(vha, fcport, false); mutex_unlock(&vha->vha_tgt.tgt_mutex); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); } else if (sess->deleted == QLA_SESS_DELETION_IN_PROGRESS) { /* Point of no return */ - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return; } else { kref_get(&sess->se_sess->sess_kref); @@ -887,7 +1052,7 @@ sess->local = 0; } ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); } /* @@ -899,6 +1064,7 @@ { struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; struct qla_tgt_sess *sess; + unsigned long flags; if (!vha->hw->tgt.tgt_ops) return; @@ -906,15 +1072,19 @@ if (!tgt) return; + spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); if (tgt->tgt_stop) { + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); return; } sess = qlt_find_sess_by_port_name(tgt, fcport->port_name); if (!sess) { + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); return; } if (max_gen - sess->generation < 0) { + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); ql_dbg(ql_dbg_tgt_mgt, vha, 0xf092, "Ignoring stale deletion request for se_sess %p / sess %p" " for port %8phC, req_gen %d, sess_gen %d\n", @@ -927,6 +1097,7 @@ sess->local = 1; qlt_schedule_sess_for_deletion(sess, false); + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); } static inline int test_tgt_sess_count(struct qla_tgt *tgt) @@ -984,10 +1155,10 @@ * Lock is needed, because we still can get an incoming packet. */ mutex_lock(&vha->vha_tgt.tgt_mutex); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); tgt->tgt_stop = 1; qlt_clear_tgt_db(tgt); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); mutex_unlock(&vha->vha_tgt.tgt_mutex); mutex_unlock(&qla_tgt_mutex); @@ -1040,7 +1211,7 @@ mutex_lock(&vha->vha_tgt.tgt_mutex); spin_lock_irqsave(&ha->hardware_lock, flags); - while (tgt->irq_cmd_count != 0) { + while ((tgt->irq_cmd_count != 0) || (tgt->atio_irq_cmd_count != 0)) { spin_unlock_irqrestore(&ha->hardware_lock, flags); udelay(2); spin_lock_irqsave(&ha->hardware_lock, flags); @@ -1309,7 +1480,7 @@ list_for_each_entry(cmd, &vha->qla_cmd_list, cmd_list) { if (tag == cmd->atio.u.isp24.exchange_addr) { - cmd->state = QLA_TGT_STATE_ABORTED; + cmd->aborted = 1; spin_unlock(&vha->cmd_list_lock); return 1; } @@ -1351,7 +1522,7 @@ cmd_lun = scsilun_to_int( (struct scsi_lun *)&cmd->atio.u.isp24.fcp_cmnd.lun); if (cmd_key == key && cmd_lun == lun) - cmd->state = QLA_TGT_STATE_ABORTED; + cmd->aborted = 1; } spin_unlock(&vha->cmd_list_lock); } @@ -1435,6 +1606,7 @@ uint32_t tag = abts->exchange_addr_to_abort; uint8_t s_id[3]; int rc; + unsigned long flags; if (le32_to_cpu(abts->fcp_hdr_le.parameter) & ABTS_PARAM_ABORT_SEQ) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf053, @@ -1462,6 +1634,7 @@ s_id[1] = abts->fcp_hdr_le.s_id[1]; s_id[2] = abts->fcp_hdr_le.s_id[0]; + spin_lock_irqsave(&ha->tgt.sess_lock, flags); sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); if (!sess) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf012, @@ -1469,12 +1642,17 @@ vha->vp_idx); rc = qlt_sched_sess_work(vha->vha_tgt.qla_tgt, QLA_TGT_SESS_WORK_ABORT, abts, sizeof(*abts)); + + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); + if (rc != 0) { qlt_24xx_send_abts_resp(vha, abts, FCP_TMF_REJECTED, false); } return; } + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); + if (sess->deleted == QLA_SESS_DELETION_IN_PROGRESS) { qlt_24xx_send_abts_resp(vha, abts, FCP_TMF_REJECTED, false); @@ -1560,15 +1738,15 @@ spin_lock_irqsave(&ha->hardware_lock, flags); - if (qla2x00_reset_active(vha) || mcmd->reset_count != ha->chip_reset) { + if (!vha->flags.online || mcmd->reset_count != ha->chip_reset) { /* - * Either a chip reset is active or this request was from + * Either the port is not online or this request was from * previous life, just abort the processing. */ ql_dbg(ql_dbg_async, vha, 0xe100, - "RESET-TMR active/old-count/new-count = %d/%d/%d.\n", - qla2x00_reset_active(vha), mcmd->reset_count, - ha->chip_reset); + "RESET-TMR online/active/old-count/new-count = %d/%d/%d/%d.\n", + vha->flags.online, qla2x00_reset_active(vha), + mcmd->reset_count, ha->chip_reset); ha->tgt.tgt_ops->free_mcmd(mcmd); spin_unlock_irqrestore(&ha->hardware_lock, flags); return; @@ -2510,17 +2688,22 @@ spin_lock_irqsave(&ha->hardware_lock, flags); - if (qla2x00_reset_active(vha) || cmd->reset_count != ha->chip_reset) { + if (xmit_type == QLA_TGT_XMIT_STATUS) + vha->tgt_counters.core_qla_snd_status++; + else + vha->tgt_counters.core_qla_que_buf++; + + if (!vha->flags.online || cmd->reset_count != ha->chip_reset) { /* - * Either a chip reset is active or this request was from + * Either the port is not online or this request was from * previous life, just abort the processing. */ cmd->state = QLA_TGT_STATE_PROCESSED; qlt_abort_cmd_on_host_reset(cmd->vha, cmd); ql_dbg(ql_dbg_async, vha, 0xe101, - "RESET-RSP active/old-count/new-count = %d/%d/%d.\n", - qla2x00_reset_active(vha), cmd->reset_count, - ha->chip_reset); + "RESET-RSP online/active/old-count/new-count = %d/%d/%d/%d.\n", + vha->flags.online, qla2x00_reset_active(vha), + cmd->reset_count, ha->chip_reset); spin_unlock_irqrestore(&ha->hardware_lock, flags); return 0; } @@ -2651,18 +2834,18 @@ spin_lock_irqsave(&ha->hardware_lock, flags); - if (qla2x00_reset_active(vha) || (cmd->reset_count != ha->chip_reset) || + if (!vha->flags.online || (cmd->reset_count != ha->chip_reset) || (cmd->sess && cmd->sess->deleted == QLA_SESS_DELETION_IN_PROGRESS)) { /* - * Either a chip reset is active or this request was from + * Either the port is not online or this request was from * previous life, just abort the processing. */ cmd->state = QLA_TGT_STATE_NEED_DATA; qlt_abort_cmd_on_host_reset(cmd->vha, cmd); ql_dbg(ql_dbg_async, vha, 0xe102, - "RESET-XFR active/old-count/new-count = %d/%d/%d.\n", - qla2x00_reset_active(vha), cmd->reset_count, - ha->chip_reset); + "RESET-XFR online/active/old-count/new-count = %d/%d/%d/%d.\n", + vha->flags.online, qla2x00_reset_active(vha), + cmd->reset_count, ha->chip_reset); spin_unlock_irqrestore(&ha->hardware_lock, flags); return 0; } @@ -2957,12 +3140,13 @@ ret = 1; } + vha->tgt_counters.num_term_xchg_sent++; pkt->entry_count = 1; pkt->handle = QLA_TGT_SKIP_HANDLE | CTIO_COMPLETION_HANDLE_MARK; ctio24 = (struct ctio7_to_24xx *)pkt; ctio24->entry_type = CTIO_TYPE7; - ctio24->nport_handle = cmd ? cmd->loop_id : CTIO7_NHANDLE_UNRECOGNIZED; + ctio24->nport_handle = CTIO7_NHANDLE_UNRECOGNIZED; ctio24->timeout = cpu_to_le16(QLA_TGT_TIMEOUT); ctio24->vp_index = vha->vp_idx; ctio24->initiator_id[0] = atio->u.isp24.fcp_hdr.s_id[2]; @@ -3009,7 +3193,7 @@ qlt_alloc_qfull_cmd(vha, atio, 0, 0); done: - if (cmd && ((cmd->state != QLA_TGT_STATE_ABORTED) || + if (cmd && (!cmd->aborted || !cmd->cmd_sent_to_fw)) { if (cmd->sg_mapped) qlt_unmap_sg(vha, cmd); @@ -3028,7 +3212,7 @@ struct qla_tgt_cmd *cmd, *tcmd; vha->hw->tgt.leak_exchg_thresh_hold = - (vha->hw->fw_xcb_count/100) * LEAK_EXCHG_THRESH_HOLD_PERCENT; + (vha->hw->cur_fw_xcb_count/100) * LEAK_EXCHG_THRESH_HOLD_PERCENT; cmd = tcmd = NULL; if (!list_empty(&vha->hw->tgt.q_full_list)) { @@ -3058,7 +3242,7 @@ ql_dbg(ql_dbg_tgt, vha, 0xe079, "Chip reset due to exchange starvation: %d/%d.\n", - total_leaked, vha->hw->fw_xcb_count); + total_leaked, vha->hw->cur_fw_xcb_count); if (IS_P3P_TYPE(vha->hw)) set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); @@ -3080,7 +3264,7 @@ "(se_cmd=%p, tag=%llu)", vha->vp_idx, cmd, &cmd->se_cmd, se_cmd->tag); - cmd->state = QLA_TGT_STATE_ABORTED; + cmd->aborted = 1; cmd->cmd_flags |= BIT_6; qlt_send_term_exchange(vha, cmd, &cmd->atio, 0); @@ -3300,9 +3484,6 @@ ha->tgt.tgt_ops->handle_data(cmd); return; - } else if (cmd->state == QLA_TGT_STATE_ABORTED) { - ql_dbg(ql_dbg_io, vha, 0xff02, - "HOST-ABORT: handle=%d, state=ABORTED.\n", handle); } else { ql_dbg(ql_dbg_io, vha, 0xff03, "HOST-ABORT: handle=%d, state=BAD(%d).\n", handle, @@ -3398,13 +3579,26 @@ case CTIO_PORT_LOGGED_OUT: case CTIO_PORT_UNAVAILABLE: + { + int logged_out = (status & 0xFFFF); ql_dbg(ql_dbg_tgt_mgt, vha, 0xf059, - "qla_target(%d): CTIO with PORT LOGGED " - "OUT (29) or PORT UNAVAILABLE (28) status %x " + "qla_target(%d): CTIO with %s status %x " "received (state %x, se_cmd %p)\n", vha->vp_idx, + (logged_out == CTIO_PORT_LOGGED_OUT) ? + "PORT LOGGED OUT" : "PORT UNAVAILABLE", status, cmd->state, se_cmd); - break; + if (logged_out && cmd->sess) { + /* + * Session is already logged out, but we need + * to notify initiator, who's not aware of this + */ + cmd->sess->logout_on_delete = 0; + cmd->sess->send_els_logo = 1; + qlt_schedule_sess_for_deletion(cmd->sess, true); + } + break; + } case CTIO_SRR_RECEIVED: ql_dbg(ql_dbg_tgt_mgt, vha, 0xf05a, "qla_target(%d): CTIO with SRR_RECEIVED" @@ -3454,14 +3648,14 @@ } - /* "cmd->state == QLA_TGT_STATE_ABORTED" means + /* "cmd->aborted" means * cmd is already aborted/terminated, we don't * need to terminate again. The exchange is already * cleaned up/freed at FW level. Just cleanup at driver * level. */ if ((cmd->state != QLA_TGT_STATE_NEED_DATA) && - (cmd->state != QLA_TGT_STATE_ABORTED)) { + (!cmd->aborted)) { cmd->cmd_flags |= BIT_13; if (qlt_term_ctio_exchange(vha, ctio, cmd, status)) return; @@ -3479,7 +3673,7 @@ ha->tgt.tgt_ops->handle_data(cmd); return; - } else if (cmd->state == QLA_TGT_STATE_ABORTED) { + } else if (cmd->aborted) { cmd->cmd_flags |= BIT_18; ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01e, "Aborted command %p (tag %lld) finished\n", cmd, se_cmd->tag); @@ -3491,7 +3685,7 @@ } if (unlikely(status != CTIO_SUCCESS) && - (cmd->state != QLA_TGT_STATE_ABORTED)) { + !cmd->aborted) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01f, "Finishing failed CTIO\n"); dump_stack(); } @@ -3553,7 +3747,7 @@ if (tgt->tgt_stop) goto out_term; - if (cmd->state == QLA_TGT_STATE_ABORTED) { + if (cmd->aborted) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf082, "cmd with tag %u is aborted\n", cmd->atio.u.isp24.exchange_addr); @@ -3589,9 +3783,9 @@ /* * Drop extra session reference from qla_tgt_handle_cmd_for_atio*( */ - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return; out_term: @@ -3606,8 +3800,11 @@ qlt_decr_num_pend_cmds(vha); percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); - ha->tgt.tgt_ops->put_sess(sess); spin_unlock_irqrestore(&ha->hardware_lock, flags); + + spin_lock_irqsave(&ha->tgt.sess_lock, flags); + ha->tgt.tgt_ops->put_sess(sess); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); } static void qlt_do_work(struct work_struct *work) @@ -3692,10 +3889,8 @@ goto out_term; } - mutex_lock(&vha->vha_tgt.tgt_mutex); sess = qlt_make_local_sess(vha, s_id); /* sess has an extra creation ref. */ - mutex_unlock(&vha->vha_tgt.tgt_mutex); if (!sess) goto out_term; @@ -3787,13 +3982,24 @@ cmd->cmd_in_wq = 1; cmd->cmd_flags |= BIT_0; + cmd->se_cmd.cpuid = -1; spin_lock(&vha->cmd_list_lock); list_add_tail(&cmd->cmd_list, &vha->qla_cmd_list); spin_unlock(&vha->cmd_list_lock); INIT_WORK(&cmd->work, qlt_do_work); - queue_work(qla_tgt_wq, &cmd->work); + if (ha->msix_count) { + cmd->se_cmd.cpuid = ha->tgt.rspq_vector_cpuid; + if (cmd->atio.u.isp24.fcp_cmnd.rddata) + queue_work_on(smp_processor_id(), qla_tgt_wq, + &cmd->work); + else + queue_work_on(cmd->se_cmd.cpuid, qla_tgt_wq, + &cmd->work); + } else { + queue_work(qla_tgt_wq, &cmd->work); + } return 0; } @@ -3917,13 +4123,18 @@ struct qla_tgt_sess *sess; uint32_t lun, unpacked_lun; int fn; + unsigned long flags; tgt = vha->vha_tgt.qla_tgt; lun = a->u.isp24.fcp_cmnd.lun; fn = a->u.isp24.fcp_cmnd.task_mgmt_flags; + + spin_lock_irqsave(&ha->tgt.sess_lock, flags); sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, a->u.isp24.fcp_hdr.s_id); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); + unpacked_lun = scsilun_to_int((struct scsi_lun *)&lun); if (!sess) { @@ -3987,10 +4198,14 @@ struct qla_hw_data *ha = vha->hw; struct qla_tgt_sess *sess; int loop_id; + unsigned long flags; loop_id = GET_TARGET_ID(ha, (struct atio_from_isp *)iocb); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); + if (sess == NULL) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf025, "qla_target(%d): task abort for unexisting " @@ -4022,15 +4237,6 @@ } } -static void qlt_swap_imm_ntfy_iocb(struct imm_ntfy_from_isp *a, - struct imm_ntfy_from_isp *b) -{ - struct imm_ntfy_from_isp tmp; - memcpy(&tmp, a, sizeof(struct imm_ntfy_from_isp)); - memcpy(a, b, sizeof(struct imm_ntfy_from_isp)); - memcpy(b, &tmp, sizeof(struct imm_ntfy_from_isp)); -} - /* * ha->hardware_lock supposed to be held on entry (to protect tgt->sess_list) * @@ -4040,11 +4246,13 @@ */ static struct qla_tgt_sess * qlt_find_sess_invalidate_other(struct qla_tgt *tgt, uint64_t wwn, - port_id_t port_id, uint16_t loop_id) + port_id_t port_id, uint16_t loop_id, struct qla_tgt_sess **conflict_sess) { struct qla_tgt_sess *sess = NULL, *other_sess; uint64_t other_wwn; + *conflict_sess = NULL; + list_for_each_entry(other_sess, &tgt->sess_list, sess_list_entry) { other_wwn = wwn_to_u64(other_sess->port_name); @@ -4072,9 +4280,10 @@ } else { /* * Another wwn used to have our s_id/loop_id - * combo - kill the session, but don't log out + * kill the session, but don't free the loop_id */ - sess->logout_on_delete = 0; + other_sess->keep_nport_handle = 1; + *conflict_sess = other_sess; qlt_schedule_sess_for_deletion(other_sess, true); } @@ -4119,7 +4328,7 @@ list_for_each_entry(cmd, &vha->qla_cmd_list, cmd_list) { uint32_t cmd_key = sid_to_key(cmd->atio.u.isp24.fcp_hdr.s_id); if (cmd_key == key) { - cmd->state = QLA_TGT_STATE_ABORTED; + cmd->aborted = 1; count++; } } @@ -4136,12 +4345,14 @@ { struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; struct qla_hw_data *ha = vha->hw; - struct qla_tgt_sess *sess = NULL; + struct qla_tgt_sess *sess = NULL, *conflict_sess = NULL; uint64_t wwn; port_id_t port_id; uint16_t loop_id; uint16_t wd3_lo; int res = 0; + qlt_plogi_ack_t *pla; + unsigned long flags; wwn = wwn_to_u64(iocb->u.isp24.port_name); @@ -4165,27 +4376,20 @@ /* Mark all stale commands in qla_tgt_wq for deletion */ abort_cmds_for_s_id(vha, &port_id); - if (wwn) + if (wwn) { + spin_lock_irqsave(&tgt->ha->tgt.sess_lock, flags); sess = qlt_find_sess_invalidate_other(tgt, wwn, - port_id, loop_id); + port_id, loop_id, &conflict_sess); + spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, flags); + } - if (!sess || IS_SW_RESV_ADDR(sess->s_id)) { + if (IS_SW_RESV_ADDR(port_id) || (!sess && !conflict_sess)) { res = 1; break; } - if (sess->plogi_ack_needed) { - /* - * Initiator sent another PLOGI before last PLOGI could - * finish. Swap plogi iocbs and terminate old one - * without acking, new one will get acked when session - * deletion completes. - */ - ql_log(ql_log_warn, sess->vha, 0xf094, - "sess %p received double plogi.\n", sess); - - qlt_swap_imm_ntfy_iocb(iocb, &sess->tm_iocb); - + pla = qlt_plogi_ack_find_add(vha, &port_id, iocb); + if (!pla) { qlt_send_term_imm_notif(vha, iocb, 1); res = 0; @@ -4194,13 +4398,14 @@ res = 0; - /* - * Save immediate Notif IOCB for Ack when sess is done - * and being deleted. - */ - memcpy(&sess->tm_iocb, iocb, sizeof(sess->tm_iocb)); - sess->plogi_ack_needed = 1; + if (conflict_sess) + qlt_plogi_ack_link(vha, pla, conflict_sess, + QLT_PLOGI_LINK_CONFLICT); + + if (!sess) + break; + qlt_plogi_ack_link(vha, pla, sess, QLT_PLOGI_LINK_SAME_WWN); /* * Under normal circumstances we want to release nport handle * during LOGO process to avoid nport handle leaks inside FW. @@ -4227,9 +4432,21 @@ case ELS_PRLI: wd3_lo = le16_to_cpu(iocb->u.isp24.u.prli.wd3_lo); - if (wwn) + if (wwn) { + spin_lock_irqsave(&tgt->ha->tgt.sess_lock, flags); sess = qlt_find_sess_invalidate_other(tgt, wwn, port_id, - loop_id); + loop_id, &conflict_sess); + spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, flags); + } + + if (conflict_sess) { + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf09b, + "PRLI with conflicting sess %p port %8phC\n", + conflict_sess, conflict_sess->port_name); + qlt_send_term_imm_notif(vha, iocb, 1); + res = 0; + break; + } if (sess != NULL) { if (sess->deleted) { @@ -4899,9 +5116,12 @@ struct qla_hw_data *ha = vha->hw; request_t *pkt; struct qla_tgt_sess *sess = NULL; + unsigned long flags; + spin_lock_irqsave(&ha->tgt.sess_lock, flags); sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, atio->u.isp24.fcp_hdr.s_id); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); if (!sess) { qlt_send_term_exchange(vha, NULL, atio, 1); return 0; @@ -4916,6 +5136,7 @@ return -ENOMEM; } + vha->tgt_counters.num_q_full_sent++; pkt->entry_count = 1; pkt->handle = QLA_TGT_SKIP_HANDLE | CTIO_COMPLETION_HANDLE_MARK; @@ -5129,11 +5350,12 @@ /* ha->hardware_lock supposed to be held on entry */ /* called via callback from qla2xxx */ static void qlt_24xx_atio_pkt(struct scsi_qla_host *vha, - struct atio_from_isp *atio) + struct atio_from_isp *atio, uint8_t ha_locked) { struct qla_hw_data *ha = vha->hw; struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; int rc; + unsigned long flags; if (unlikely(tgt == NULL)) { ql_dbg(ql_dbg_io, vha, 0x3064, @@ -5145,7 +5367,7 @@ * Otherwise, some commands can stuck. */ - tgt->irq_cmd_count++; + tgt->atio_irq_cmd_count++; switch (atio->u.raw.entry_type) { case ATIO_TYPE7: @@ -5155,7 +5377,11 @@ "qla_target(%d): ATIO_TYPE7 " "received with UNKNOWN exchange address, " "sending QUEUE_FULL\n", vha->vp_idx); + if (!ha_locked) + spin_lock_irqsave(&ha->hardware_lock, flags); qlt_send_busy(vha, atio, SAM_STAT_TASK_SET_FULL); + if (!ha_locked) + spin_unlock_irqrestore(&ha->hardware_lock, flags); break; } @@ -5164,7 +5390,7 @@ if (likely(atio->u.isp24.fcp_cmnd.task_mgmt_flags == 0)) { rc = qlt_chk_qfull_thresh_hold(vha, atio); if (rc != 0) { - tgt->irq_cmd_count--; + tgt->atio_irq_cmd_count--; return; } rc = qlt_handle_cmd_for_atio(vha, atio); @@ -5173,11 +5399,20 @@ } if (unlikely(rc != 0)) { if (rc == -ESRCH) { + if (!ha_locked) + spin_lock_irqsave + (&ha->hardware_lock, flags); + #if 1 /* With TERM EXCHANGE some FC cards refuse to boot */ qlt_send_busy(vha, atio, SAM_STAT_BUSY); #else qlt_send_term_exchange(vha, NULL, atio, 1); #endif + + if (!ha_locked) + spin_unlock_irqrestore + (&ha->hardware_lock, flags); + } else { if (tgt->tgt_stop) { ql_dbg(ql_dbg_tgt, vha, 0xe059, @@ -5189,7 +5424,13 @@ "qla_target(%d): Unable to send " "command to target, sending BUSY " "status.\n", vha->vp_idx); + if (!ha_locked) + spin_lock_irqsave( + &ha->hardware_lock, flags); qlt_send_busy(vha, atio, SAM_STAT_BUSY); + if (!ha_locked) + spin_unlock_irqrestore( + &ha->hardware_lock, flags); } } } @@ -5206,7 +5447,12 @@ break; } ql_dbg(ql_dbg_tgt, vha, 0xe02e, "%s", "IMMED_NOTIFY ATIO"); + + if (!ha_locked) + spin_lock_irqsave(&ha->hardware_lock, flags); qlt_handle_imm_notify(vha, (struct imm_ntfy_from_isp *)atio); + if (!ha_locked) + spin_unlock_irqrestore(&ha->hardware_lock, flags); break; } @@ -5217,7 +5463,7 @@ break; } - tgt->irq_cmd_count--; + tgt->atio_irq_cmd_count--; } /* ha->hardware_lock supposed to be held on entry */ @@ -5534,12 +5780,16 @@ int rc, global_resets; uint16_t loop_id = 0; + mutex_lock(&vha->vha_tgt.tgt_mutex); + retry: global_resets = atomic_read(&vha->vha_tgt.qla_tgt->tgt_global_resets_count); rc = qla24xx_get_loop_id(vha, s_id, &loop_id); if (rc != 0) { + mutex_unlock(&vha->vha_tgt.tgt_mutex); + if ((s_id[0] == 0xFF) && (s_id[1] == 0xFC)) { /* @@ -5550,17 +5800,27 @@ "Unable to find initiator with S_ID %x:%x:%x", s_id[0], s_id[1], s_id[2]); } else - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf071, + ql_log(ql_log_info, vha, 0xf071, "qla_target(%d): Unable to find " "initiator with S_ID %x:%x:%x", vha->vp_idx, s_id[0], s_id[1], s_id[2]); + + if (rc == -ENOENT) { + qlt_port_logo_t logo; + sid_to_portid(s_id, &logo.id); + logo.cmd_count = 1; + qlt_send_first_logo(vha, &logo); + } + return NULL; } fcport = qlt_get_port_database(vha, loop_id); - if (!fcport) + if (!fcport) { + mutex_unlock(&vha->vha_tgt.tgt_mutex); return NULL; + } if (global_resets != atomic_read(&vha->vha_tgt.qla_tgt->tgt_global_resets_count)) { @@ -5575,6 +5835,8 @@ sess = qlt_create_sess(vha, fcport, true); + mutex_unlock(&vha->vha_tgt.tgt_mutex); + kfree(fcport); return sess; } @@ -5585,15 +5847,15 @@ struct scsi_qla_host *vha = tgt->vha; struct qla_hw_data *ha = vha->hw; struct qla_tgt_sess *sess = NULL; - unsigned long flags; + unsigned long flags = 0, flags2 = 0; uint32_t be_s_id; uint8_t s_id[3]; int rc; - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags2); if (tgt->tgt_stop) - goto out_term; + goto out_term2; s_id[0] = prm->abts.fcp_hdr_le.s_id[2]; s_id[1] = prm->abts.fcp_hdr_le.s_id[1]; @@ -5602,41 +5864,47 @@ sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, (unsigned char *)&be_s_id); if (!sess) { - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); - mutex_lock(&vha->vha_tgt.tgt_mutex); sess = qlt_make_local_sess(vha, s_id); /* sess has got an extra creation ref */ - mutex_unlock(&vha->vha_tgt.tgt_mutex); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags2); if (!sess) - goto out_term; + goto out_term2; } else { if (sess->deleted == QLA_SESS_DELETION_IN_PROGRESS) { sess = NULL; - goto out_term; + goto out_term2; } kref_get(&sess->se_sess->sess_kref); } + spin_lock_irqsave(&ha->hardware_lock, flags); + if (tgt->tgt_stop) goto out_term; rc = __qlt_24xx_handle_abts(vha, &prm->abts, sess); if (rc != 0) goto out_term; + spin_unlock_irqrestore(&ha->hardware_lock, flags); ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); return; +out_term2: + spin_lock_irqsave(&ha->hardware_lock, flags); + out_term: qlt_24xx_send_abts_resp(vha, &prm->abts, FCP_TMF_REJECTED, false); + spin_unlock_irqrestore(&ha->hardware_lock, flags); + if (sess) ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); } static void qlt_tmr_work(struct qla_tgt *tgt, @@ -5653,7 +5921,7 @@ int fn; void *iocb; - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); if (tgt->tgt_stop) goto out_term; @@ -5661,14 +5929,12 @@ s_id = prm->tm_iocb2.u.isp24.fcp_hdr.s_id; sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); if (!sess) { - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); - mutex_lock(&vha->vha_tgt.tgt_mutex); sess = qlt_make_local_sess(vha, s_id); /* sess has got an extra creation ref */ - mutex_unlock(&vha->vha_tgt.tgt_mutex); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); if (!sess) goto out_term; } else { @@ -5690,14 +5956,14 @@ goto out_term; ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); return; out_term: - qlt_send_term_exchange(vha, NULL, &prm->tm_iocb2, 1); + qlt_send_term_exchange(vha, NULL, &prm->tm_iocb2, 0); if (sess) ha->tgt.tgt_ops->put_sess(sess); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); } static void qlt_sess_work_fn(struct work_struct *work) @@ -6002,6 +6268,7 @@ struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; unsigned long flags; scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev); + int rspq_ent = QLA83XX_RSPQ_MSIX_ENTRY_NUMBER; if (!tgt) { ql_dbg(ql_dbg_tgt, vha, 0xe069, @@ -6020,6 +6287,17 @@ qla24xx_disable_vp(vha); qla24xx_enable_vp(vha); } else { + if (ha->msix_entries) { + ql_dbg(ql_dbg_tgt, vha, 0xffff, + "%s: host%ld : vector %d cpu %d\n", + __func__, vha->host_no, + ha->msix_entries[rspq_ent].vector, + ha->msix_entries[rspq_ent].cpuid); + + ha->tgt.rspq_vector_cpuid = + ha->msix_entries[rspq_ent].cpuid; + } + set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags); qla2xxx_wake_dpc(base_vha); qla2x00_wait_for_hba_online(base_vha); @@ -6131,7 +6409,7 @@ * @ha: SCSI driver HA context */ void -qlt_24xx_process_atio_queue(struct scsi_qla_host *vha) +qlt_24xx_process_atio_queue(struct scsi_qla_host *vha, uint8_t ha_locked) { struct qla_hw_data *ha = vha->hw; struct atio_from_isp *pkt; @@ -6144,7 +6422,8 @@ pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; cnt = pkt->u.raw.entry_count; - qlt_24xx_atio_pkt_all_vps(vha, (struct atio_from_isp *)pkt); + qlt_24xx_atio_pkt_all_vps(vha, (struct atio_from_isp *)pkt, + ha_locked); for (i = 0; i < cnt; i++) { ha->tgt.atio_ring_index++; @@ -6265,10 +6544,21 @@ { struct qla_hw_data *ha = vha->hw; + if (!QLA_TGT_MODE_ENABLED()) + return; + if (ha->tgt.node_name_set) { memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); icb->firmware_options_1 |= cpu_to_le32(BIT_14); } + + /* disable ZIO at start time. */ + if (!vha->flags.init_done) { + uint32_t tmp; + tmp = le32_to_cpu(icb->firmware_options_2); + tmp &= ~(BIT_3 | BIT_2 | BIT_1 | BIT_0); + icb->firmware_options_2 = cpu_to_le32(tmp); + } } void @@ -6359,6 +6649,15 @@ memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); icb->firmware_options_1 |= cpu_to_le32(BIT_14); } + + /* disable ZIO at start time. */ + if (!vha->flags.init_done) { + uint32_t tmp; + tmp = le32_to_cpu(icb->firmware_options_2); + tmp &= ~(BIT_3 | BIT_2 | BIT_1 | BIT_0); + icb->firmware_options_2 = cpu_to_le32(tmp); + } + } void @@ -6428,16 +6727,59 @@ ha = rsp->hw; vha = pci_get_drvdata(ha->pdev); - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.atio_lock, flags); - qlt_24xx_process_atio_queue(vha); - qla24xx_process_response_queue(vha, rsp); + qlt_24xx_process_atio_queue(vha, 0); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags); return IRQ_HANDLED; } +static void +qlt_handle_abts_recv_work(struct work_struct *work) +{ + struct qla_tgt_sess_op *op = container_of(work, + struct qla_tgt_sess_op, work); + scsi_qla_host_t *vha = op->vha; + struct qla_hw_data *ha = vha->hw; + unsigned long flags; + + if (qla2x00_reset_active(vha) || (op->chip_reset != ha->chip_reset)) + return; + + spin_lock_irqsave(&ha->tgt.atio_lock, flags); + qlt_24xx_process_atio_queue(vha, 0); + spin_unlock_irqrestore(&ha->tgt.atio_lock, flags); + + spin_lock_irqsave(&ha->hardware_lock, flags); + qlt_response_pkt_all_vps(vha, (response_t *)&op->atio); + spin_unlock_irqrestore(&ha->hardware_lock, flags); +} + +void +qlt_handle_abts_recv(struct scsi_qla_host *vha, response_t *pkt) +{ + struct qla_tgt_sess_op *op; + + op = kzalloc(sizeof(*op), GFP_ATOMIC); + + if (!op) { + /* do not reach for ATIO queue here. This is best effort err + * recovery at this point. + */ + qlt_response_pkt_all_vps(vha, pkt); + return; + } + + memcpy(&op->atio, pkt, sizeof(*pkt)); + op->vha = vha; + op->chip_reset = vha->hw->chip_reset; + INIT_WORK(&op->work, qlt_handle_abts_recv_work); + queue_work(qla_tgt_wq, &op->work); + return; +} + int qlt_mem_alloc(struct qla_hw_data *ha) { @@ -6532,13 +6874,25 @@ return -ENOMEM; } + qla_tgt_plogi_cachep = kmem_cache_create("qla_tgt_plogi_cachep", + sizeof(qlt_plogi_ack_t), + __alignof__(qlt_plogi_ack_t), + 0, NULL); + + if (!qla_tgt_plogi_cachep) { + ql_log(ql_log_fatal, NULL, 0xe06d, + "kmem_cache_create for qla_tgt_plogi_cachep failed\n"); + ret = -ENOMEM; + goto out_mgmt_cmd_cachep; + } + qla_tgt_mgmt_cmd_mempool = mempool_create(25, mempool_alloc_slab, mempool_free_slab, qla_tgt_mgmt_cmd_cachep); if (!qla_tgt_mgmt_cmd_mempool) { ql_log(ql_log_fatal, NULL, 0xe06e, "mempool_create for qla_tgt_mgmt_cmd_mempool failed\n"); ret = -ENOMEM; - goto out_mgmt_cmd_cachep; + goto out_plogi_cachep; } qla_tgt_wq = alloc_workqueue("qla_tgt_wq", 0, 0); @@ -6555,6 +6909,8 @@ out_cmd_mempool: mempool_destroy(qla_tgt_mgmt_cmd_mempool); +out_plogi_cachep: + kmem_cache_destroy(qla_tgt_plogi_cachep); out_mgmt_cmd_cachep: kmem_cache_destroy(qla_tgt_mgmt_cmd_cachep); return ret; @@ -6567,5 +6923,6 @@ destroy_workqueue(qla_tgt_wq); mempool_destroy(qla_tgt_mgmt_cmd_mempool); + kmem_cache_destroy(qla_tgt_plogi_cachep); kmem_cache_destroy(qla_tgt_mgmt_cmd_cachep); } --- linux-4.4.0.orig/drivers/scsi/qla2xxx/qla_target.h +++ linux-4.4.0/drivers/scsi/qla2xxx/qla_target.h @@ -787,7 +787,7 @@ #define QLA_TGT_STATE_NEED_DATA 1 /* target needs data to continue */ #define QLA_TGT_STATE_DATA_IN 2 /* Data arrived + target processing */ #define QLA_TGT_STATE_PROCESSED 3 /* target done processing */ -#define QLA_TGT_STATE_ABORTED 4 /* Command aborted */ + /* Special handles */ #define QLA_TGT_NULL_HANDLE 0 @@ -835,6 +835,7 @@ * HW lock. */ int irq_cmd_count; + int atio_irq_cmd_count; int datasegs_per_cmd, datasegs_per_cont, sg_tablesize; @@ -883,6 +884,7 @@ struct qla_tgt_sess_op { struct scsi_qla_host *vha; + uint32_t chip_reset; struct atio_from_isp atio; struct work_struct work; struct list_head cmd_list; @@ -896,6 +898,19 @@ QLA_SESS_DELETION_IN_PROGRESS = 2, }; +typedef enum { + QLT_PLOGI_LINK_SAME_WWN, + QLT_PLOGI_LINK_CONFLICT, + QLT_PLOGI_LINK_MAX +} qlt_plogi_link_t; + +typedef struct { + struct list_head list; + struct imm_ntfy_from_isp iocb; + port_id_t id; + int ref_count; +} qlt_plogi_ack_t; + /* * Equivilant to IT Nexus (Initiator-Target) */ @@ -907,8 +922,8 @@ unsigned int deleted:2; unsigned int local:1; unsigned int logout_on_delete:1; - unsigned int plogi_ack_needed:1; unsigned int keep_nport_handle:1; + unsigned int send_els_logo:1; unsigned char logout_completed; @@ -925,9 +940,7 @@ uint8_t port_name[WWN_SIZE]; struct work_struct free_work; - union { - struct imm_ntfy_from_isp tm_iocb; - }; + qlt_plogi_ack_t *plogi_link[QLT_PLOGI_LINK_MAX]; }; struct qla_tgt_cmd { @@ -949,6 +962,7 @@ unsigned int term_exchg:1; unsigned int cmd_sent_to_fw:1; unsigned int cmd_in_wq:1; + unsigned int aborted:1; struct scatterlist *sg; /* cmd data buffer SG vector */ int sg_cnt; /* SG segments count */ @@ -1120,6 +1134,14 @@ return key; } +static inline void sid_to_portid(const uint8_t *s_id, port_id_t *p) +{ + memset(p, 0, sizeof(*p)); + p->b.domain = s_id[0]; + p->b.area = s_id[1]; + p->b.al_pa = s_id[2]; +} + /* * Exported symbols from qla_target.c LLD logic used by qla2xxx code.. */ @@ -1135,7 +1157,7 @@ extern void qlt_vport_create(struct scsi_qla_host *, struct qla_hw_data *); extern void qlt_rff_id(struct scsi_qla_host *, struct ct_sns_req *); extern void qlt_init_atio_q_entries(struct scsi_qla_host *); -extern void qlt_24xx_process_atio_queue(struct scsi_qla_host *); +extern void qlt_24xx_process_atio_queue(struct scsi_qla_host *, uint8_t); extern void qlt_24xx_config_rings(struct scsi_qla_host *); extern void qlt_24xx_config_nvram_stage1(struct scsi_qla_host *, struct nvram_24xx *); --- linux-4.4.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-4.4.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -284,6 +284,7 @@ WARN_ON(cmd->cmd_flags & BIT_16); + cmd->vha->tgt_counters.qla_core_ret_sta_ctio++; cmd->cmd_flags |= BIT_16; transport_generic_free_cmd(&cmd->se_cmd, 0); } @@ -295,9 +296,10 @@ */ static void tcm_qla2xxx_free_cmd(struct qla_tgt_cmd *cmd) { + cmd->vha->tgt_counters.core_qla_free_cmd++; cmd->cmd_in_wq = 1; INIT_WORK(&cmd->work, tcm_qla2xxx_complete_free); - queue_work(tcm_qla2xxx_free_wq, &cmd->work); + queue_work_on(smp_processor_id(), tcm_qla2xxx_free_wq, &cmd->work); } /* @@ -342,9 +344,9 @@ BUG_ON(!sess); vha = sess->vha; - spin_lock_irqsave(&vha->hw->hardware_lock, flags); + spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); target_sess_cmd_list_set_waiting(se_sess); - spin_unlock_irqrestore(&vha->hw->hardware_lock, flags); + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); return 1; } @@ -358,9 +360,9 @@ BUG_ON(!sess); vha = sess->vha; - spin_lock_irqsave(&vha->hw->hardware_lock, flags); + spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); qlt_unreg_sess(sess); - spin_unlock_irqrestore(&vha->hw->hardware_lock, flags); + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); } static u32 tcm_qla2xxx_sess_get_index(struct se_session *se_sess) @@ -454,6 +456,7 @@ return -EINVAL; } + cmd->vha->tgt_counters.qla_core_sbt_cmd++; return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0], cmd->unpacked_lun, data_length, fcp_task_attr, data_dir, flags); @@ -469,6 +472,7 @@ */ cmd->cmd_in_wq = 0; cmd->cmd_flags |= BIT_11; + cmd->vha->tgt_counters.qla_core_ret_ctio++; if (!cmd->write_data_transferred) { /* * Check if se_cmd has already been aborted via LUN_RESET, and @@ -500,7 +504,7 @@ cmd->cmd_flags |= BIT_10; cmd->cmd_in_wq = 1; INIT_WORK(&cmd->work, tcm_qla2xxx_handle_data_work); - queue_work(tcm_qla2xxx_free_wq, &cmd->work); + queue_work_on(smp_processor_id(), tcm_qla2xxx_free_wq, &cmd->work); } static void tcm_qla2xxx_handle_dif_work(struct work_struct *work) @@ -643,7 +647,7 @@ static void tcm_qla2xxx_clear_sess_lookup(struct tcm_qla2xxx_lport *, struct tcm_qla2xxx_nacl *, struct qla_tgt_sess *); /* - * Expected to be called with struct qla_hw_data->hardware_lock held + * Expected to be called with struct qla_hw_data->tgt.sess_lock held */ static void tcm_qla2xxx_clear_nacl_from_fcport_map(struct qla_tgt_sess *sess) { @@ -697,13 +701,13 @@ if (!sess) return; - assert_spin_locked(&sess->vha->hw->hardware_lock); + assert_spin_locked(&sess->vha->hw->tgt.sess_lock); kref_put(&sess->se_sess->sess_kref, tcm_qla2xxx_release_session); } static void tcm_qla2xxx_shutdown_sess(struct qla_tgt_sess *sess) { - assert_spin_locked(&sess->vha->hw->hardware_lock); + assert_spin_locked(&sess->vha->hw->tgt.sess_lock); target_sess_cmd_list_set_waiting(sess->se_sess); } @@ -1077,7 +1081,7 @@ } /* - * Expected to be called with struct qla_hw_data->hardware_lock held + * Expected to be called with struct qla_hw_data->tgt.sess_lock held */ static struct qla_tgt_sess *tcm_qla2xxx_find_sess_by_s_id( scsi_qla_host_t *vha, @@ -1116,7 +1120,7 @@ } /* - * Expected to be called with struct qla_hw_data->hardware_lock held + * Expected to be called with struct qla_hw_data->tgt.sess_lock held */ static void tcm_qla2xxx_set_sess_by_s_id( struct tcm_qla2xxx_lport *lport, @@ -1182,7 +1186,7 @@ } /* - * Expected to be called with struct qla_hw_data->hardware_lock held + * Expected to be called with struct qla_hw_data->tgt.sess_lock held */ static struct qla_tgt_sess *tcm_qla2xxx_find_sess_by_loop_id( scsi_qla_host_t *vha, @@ -1221,7 +1225,7 @@ } /* - * Expected to be called with struct qla_hw_data->hardware_lock held + * Expected to be called with struct qla_hw_data->tgt.sess_lock held */ static void tcm_qla2xxx_set_sess_by_loop_id( struct tcm_qla2xxx_lport *lport, @@ -1285,7 +1289,7 @@ } /* - * Should always be called with qla_hw_data->hardware_lock held. + * Should always be called with qla_hw_data->tgt.sess_lock held. */ static void tcm_qla2xxx_clear_sess_lookup(struct tcm_qla2xxx_lport *lport, struct tcm_qla2xxx_nacl *nacl, struct qla_tgt_sess *sess) @@ -1353,7 +1357,7 @@ struct qla_tgt_sess *sess = qla_tgt_sess; unsigned char port_name[36]; unsigned long flags; - int num_tags = (ha->fw_xcb_count) ? ha->fw_xcb_count : + int num_tags = (ha->cur_fw_xcb_count) ? ha->cur_fw_xcb_count : TCM_QLA2XXX_DEFAULT_TAGS; lport = vha->vha_tgt.target_lport_ptr; @@ -1401,12 +1405,12 @@ * And now setup the new se_nacl and session pointers into our HW lport * mappings for fabric S_ID and LOOP_ID. */ - spin_lock_irqsave(&ha->hardware_lock, flags); + spin_lock_irqsave(&ha->tgt.sess_lock, flags); tcm_qla2xxx_set_sess_by_s_id(lport, se_nacl, nacl, se_sess, qla_tgt_sess, s_id); tcm_qla2xxx_set_sess_by_loop_id(lport, se_nacl, nacl, se_sess, qla_tgt_sess, loop_id); - spin_unlock_irqrestore(&ha->hardware_lock, flags); + spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); /* * Finally register the new FC Nexus with TCM */ --- linux-4.4.0.orig/drivers/scsi/qla4xxx/ql4_isr.c +++ linux-4.4.0/drivers/scsi/qla4xxx/ql4_isr.c @@ -385,9 +385,9 @@ cls_conn = ddb_entry->conn; conn = cls_conn->dd_data; - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_task(conn, itt); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); if (task == NULL) { ql4_printk(KERN_ERR, ha, "%s: Task is NULL\n", __func__); --- linux-4.4.0.orig/drivers/scsi/storvsc_drv.c +++ linux-4.4.0/drivers/scsi/storvsc_drv.c @@ -1633,6 +1633,11 @@ * from the host. */ host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT); +#if defined(CONFIG_X86_32) + dev_warn(&device->device, "adjusting sg_tablesize 0x%x -> 0x%x", + host->sg_tablesize, MAX_MULTIPAGE_BUFFER_COUNT); + host->sg_tablesize = MAX_MULTIPAGE_BUFFER_COUNT; +#endif /* Register the HBA and start the scsi bus scan */ ret = scsi_add_host(host, &device->device); --- linux-4.4.0.orig/drivers/target/target_core_iblock.c +++ linux-4.4.0/drivers/target/target_core_iblock.c @@ -613,9 +613,9 @@ } bip = bio_integrity_alloc(bio, GFP_NOIO, cmd->t_prot_nents); - if (!bip) { + if (IS_ERR(bip)) { pr_err("Unable to allocate bio_integrity_payload\n"); - return -ENOMEM; + return PTR_ERR(bip); } bip->bip_iter.bi_size = (cmd->data_length / dev->dev_attrib.block_size) * --- linux-4.4.0.orig/drivers/target/target_core_transport.c +++ linux-4.4.0/drivers/target/target_core_transport.c @@ -715,7 +715,10 @@ cmd->transport_state |= (CMD_T_COMPLETE | CMD_T_ACTIVE); spin_unlock_irqrestore(&cmd->t_state_lock, flags); - queue_work(target_completion_wq, &cmd->work); + if (cmd->cpuid == -1) + queue_work(target_completion_wq, &cmd->work); + else + queue_work_on(cmd->cpuid, target_completion_wq, &cmd->work); } EXPORT_SYMBOL(target_complete_cmd); --- linux-4.4.0.orig/drivers/tty/vt/vt.c +++ linux-4.4.0/drivers/tty/vt/vt.c @@ -102,6 +102,7 @@ #include #include #include +#include #define MAX_NR_CON_DRIVER 16 @@ -146,7 +147,7 @@ static int con_open(struct tty_struct *, struct file *); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear); + unsigned int cols, int do_clear, int mode); static void gotoxy(struct vc_data *vc, int new_x, int new_y); static void save_cur(struct vc_data *vc); static void reset_terminal(struct vc_data *vc, int do_clear); @@ -170,6 +171,9 @@ static int cur_default = CUR_DEFAULT; module_param(cur_default, int, S_IRUGO | S_IWUSR); +int vt_handoff = 0; +module_param_named(handoff, vt_handoff, int, S_IRUGO | S_IWUSR); + /* * ignore_poke: don't unblank the screen when things are typed. This is * mainly for the privacy of braille terminal users. @@ -684,6 +688,13 @@ } if (tty0dev) sysfs_notify(&tty0dev->kobj, NULL, "active"); + /* + * If we are switching away from a transparent VT the contents + * will be lost, convert it into a blank text console then + * it will be repainted blank if we ever switch back. + */ + if (old_vc->vc_mode == KD_TRANSPARENT) + old_vc->vc_mode = KD_TEXT; } else { hide_cursor(vc); redraw = 1; @@ -799,7 +810,7 @@ if (global_cursor_default == -1) global_cursor_default = 1; - vc_init(vc, vc->vc_rows, vc->vc_cols, 1); + vc_init(vc, vc->vc_rows, vc->vc_cols, 1, KD_TEXT); vcs_make_sysfs(currcons); atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); } @@ -2927,7 +2938,7 @@ module_param_named(underline, default_underline_color, int, S_IRUGO | S_IWUSR); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear) + unsigned int cols, int do_clear, int mode) { int j, k ; @@ -2938,7 +2949,7 @@ set_origin(vc); vc->vc_pos = vc->vc_origin; - reset_vc(vc); + reset_vc(vc, mode); for (j=k=0; j<16; j++) { vc->vc_palette[k++] = default_red[j] ; vc->vc_palette[k++] = default_grn[j] ; @@ -2995,16 +3006,32 @@ mod_timer(&console_timer, jiffies + (blankinterval * HZ)); } + if (vt_handoff > 0 && vt_handoff <= MAX_NR_CONSOLES) { + currcons = vt_handoff - 1; + vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); + INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); + tty_port_init(&vc->port); + visual_init(vc, currcons, 1); + vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); + vc_init(vc, vc->vc_rows, vc->vc_cols, 0, KD_TRANSPARENT); + } for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) { + if (currcons == vt_handoff - 1) + continue; vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); tty_port_init(&vc->port); visual_init(vc, currcons, 1); vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); vc_init(vc, vc->vc_rows, vc->vc_cols, - currcons || !vc->vc_sw->con_save_screen); + currcons || !vc->vc_sw->con_save_screen, KD_TEXT); } currcons = fg_console = 0; + if (vt_handoff > 0) { + printk(KERN_INFO "vt handoff: transparent VT on vt#%d\n", + vt_handoff); + currcons = fg_console = vt_handoff - 1; + } master_display_fg = vc = vc_cons[currcons].d; set_origin(vc); save_screen(vc); --- linux-4.4.0.orig/drivers/tty/vt/vt_ioctl.c +++ linux-4.4.0/drivers/tty/vt/vt_ioctl.c @@ -1046,9 +1046,9 @@ return ret; } -void reset_vc(struct vc_data *vc) +void reset_vc(struct vc_data *vc, int mode) { - vc->vc_mode = KD_TEXT; + vc->vc_mode = mode; vt_reset_unicode(vc->vc_num); vc->vt_mode.mode = VT_AUTO; vc->vt_mode.waitv = 0; @@ -1080,7 +1080,7 @@ */ if (tty) __do_SAK(tty); - reset_vc(vc); + reset_vc(vc, KD_TEXT); } console_unlock(); } @@ -1337,7 +1337,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); if (old_vc_mode != vc->vc_mode) { if (vc->vc_mode == KD_TEXT) @@ -1409,7 +1409,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); /* * Fall through to normal (VT_AUTO) handling of the switch... --- linux-4.4.0.orig/drivers/usb/core/hub.c +++ linux-4.4.0/drivers/usb/core/hub.c @@ -3895,17 +3895,30 @@ return; } - if (usb_set_lpm_timeout(udev, state, timeout)) + if (usb_set_lpm_timeout(udev, state, timeout)) { /* If we can't set the parent hub U1/U2 timeout, * device-initiated LPM won't be allowed either, so let the xHCI * host know that this link state won't be enabled. */ hcd->driver->disable_usb3_lpm_timeout(hcd, udev, state); + } else { + /* Only a configured device will accept the Set Feature + * U1/U2_ENABLE + */ + if (udev->actconfig) + usb_set_device_initiated_lpm(udev, state, true); - /* Only a configured device will accept the Set Feature U1/U2_ENABLE */ - else if (udev->actconfig) - usb_set_device_initiated_lpm(udev, state, true); - + /* As soon as usb_set_lpm_timeout(timeout) returns 0, the + * hub-initiated LPM is enabled. Thus, LPM is enabled no + * matter the result of usb_set_device_initiated_lpm(). + * The only difference is whether device is able to initiate + * LPM. + */ + if (state == USB3_LPM_U1) + udev->usb3_lpm_u1_enabled = 1; + else if (state == USB3_LPM_U2) + udev->usb3_lpm_u2_enabled = 1; + } } /* @@ -3945,6 +3958,18 @@ dev_warn(&udev->dev, "Could not disable xHCI %s timeout, " "bus schedule bandwidth may be impacted.\n", usb3_lpm_names[state]); + + /* As soon as usb_set_lpm_timeout(0) return 0, hub initiated LPM + * is disabled. Hub will disallows link to enter U1/U2 as well, + * even device is initiating LPM. Hence LPM is disabled if hub LPM + * timeout set to 0, no matter device-initiated LPM is disabled or + * not. + */ + if (state == USB3_LPM_U1) + udev->usb3_lpm_u1_enabled = 0; + else if (state == USB3_LPM_U2) + udev->usb3_lpm_u2_enabled = 0; + return 0; } @@ -3979,8 +4004,6 @@ if (usb_disable_link_state(hcd, udev, USB3_LPM_U2)) goto enable_lpm; - udev->usb3_lpm_enabled = 0; - return 0; enable_lpm: @@ -4038,8 +4061,6 @@ usb_enable_link_state(hcd, udev, USB3_LPM_U1); usb_enable_link_state(hcd, udev, USB3_LPM_U2); - - udev->usb3_lpm_enabled = 1; } EXPORT_SYMBOL_GPL(usb_enable_lpm); --- linux-4.4.0.orig/drivers/usb/core/sysfs.c +++ linux-4.4.0/drivers/usb/core/sysfs.c @@ -531,7 +531,7 @@ } static DEVICE_ATTR_RW(usb2_lpm_besl); -static ssize_t usb3_hardware_lpm_show(struct device *dev, +static ssize_t usb3_hardware_lpm_u1_show(struct device *dev, struct device_attribute *attr, char *buf) { struct usb_device *udev = to_usb_device(dev); @@ -539,7 +539,7 @@ usb_lock_device(udev); - if (udev->usb3_lpm_enabled) + if (udev->usb3_lpm_u1_enabled) p = "enabled"; else p = "disabled"; @@ -548,7 +548,26 @@ return sprintf(buf, "%s\n", p); } -static DEVICE_ATTR_RO(usb3_hardware_lpm); +static DEVICE_ATTR_RO(usb3_hardware_lpm_u1); + +static ssize_t usb3_hardware_lpm_u2_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_device *udev = to_usb_device(dev); + const char *p; + + usb_lock_device(udev); + + if (udev->usb3_lpm_u2_enabled) + p = "enabled"; + else + p = "disabled"; + + usb_unlock_device(udev); + + return sprintf(buf, "%s\n", p); +} +static DEVICE_ATTR_RO(usb3_hardware_lpm_u2); static struct attribute *usb2_hardware_lpm_attr[] = { &dev_attr_usb2_hardware_lpm.attr, @@ -562,7 +581,8 @@ }; static struct attribute *usb3_hardware_lpm_attr[] = { - &dev_attr_usb3_hardware_lpm.attr, + &dev_attr_usb3_hardware_lpm_u1.attr, + &dev_attr_usb3_hardware_lpm_u2.attr, NULL, }; static struct attribute_group usb3_hardware_lpm_attr_group = { @@ -592,7 +612,8 @@ if (udev->usb2_hw_lpm_capable == 1) rc = sysfs_merge_group(&dev->kobj, &usb2_hardware_lpm_attr_group); - if (udev->lpm_capable == 1) + if (udev->speed == USB_SPEED_SUPER && + udev->lpm_capable == 1) rc = sysfs_merge_group(&dev->kobj, &usb3_hardware_lpm_attr_group); } --- linux-4.4.0.orig/drivers/usb/host/xhci.c +++ linux-4.4.0/drivers/usb/host/xhci.c @@ -5059,6 +5059,10 @@ BUILD_BUG_ON(sizeof(struct xhci_intr_reg) != 8*32/8); /* xhci_run_regs has eight fields and embeds 128 xhci_intr_regs */ BUILD_BUG_ON(sizeof(struct xhci_run_regs) != (8+8*128)*32/8); + + if (usb_disabled()) + return -ENODEV; + return 0; } --- linux-4.4.0.orig/drivers/usb/phy/phy-fsl-usb.c +++ linux-4.4.0/drivers/usb/phy/phy-fsl-usb.c @@ -75,7 +75,7 @@ .otg_port = 1, }; -#ifdef CONFIG_PPC32 +#ifdef CONFIG_PPC static u32 _fsl_readl_be(const unsigned __iomem *p) { return in_be32(p); @@ -105,7 +105,7 @@ #else #define fsl_readl(addr) readl(addr) #define fsl_writel(val, addr) writel(val, addr) -#endif /* CONFIG_PPC32 */ +#endif /* CONFIG_PPC */ int write_ulpi(u8 addr, u8 data) { @@ -879,6 +879,7 @@ if (pdata->init && pdata->init(pdev) != 0) return -EINVAL; +#ifdef CONFIG_PPC if (pdata->big_endian_mmio) { _fsl_readl = _fsl_readl_be; _fsl_writel = _fsl_writel_be; @@ -886,6 +887,7 @@ _fsl_readl = _fsl_readl_le; _fsl_writel = _fsl_writel_le; } +#endif /* request irq */ p_otg->irq = platform_get_irq(pdev, 0); --- linux-4.4.0.orig/drivers/usb/serial/cp210x.c +++ linux-4.4.0/drivers/usb/serial/cp210x.c @@ -160,6 +160,7 @@ { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */ { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */ + { USB_DEVICE(0x18EF, 0xE025) }, /* ELV Marble Sound Board 1 */ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */ { USB_DEVICE(0x1BA4, 0x0002) }, /* Silicon Labs 358x factory default */ --- linux-4.4.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-4.4.0/drivers/usb/storage/unusual_devs.h @@ -1262,6 +1262,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, 0), +/* Reported by Timo Aaltonen */ +UNUSUAL_DEV( 0x0af0, 0x7011, 0x0000, 0x9999, + "Option", + "Mass Storage", + USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, + 0 ), + /* Reported by F. Aben * This device (wrongly) has a vendor-specific device descriptor. * The entry is needed so usb-storage can bind to it's mass-storage --- linux-4.4.0.orig/dropped.txt +++ linux-4.4.0/dropped.txt @@ -0,0 +1,11 @@ +UBUNTU: SAUCE: (no-up) dell-wmi: Demote unknown WMI event message to pr_debug +UBUNTU: SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node +UBUNTU: SAUCE: (no-up) Add documentation for generic SYSCON reboot driver. +UBUNTU: SAUCE: fix perf_regs definitions for arm64 +UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch +Revert "UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch" +UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch +UBUNTU: SAUCE: aufs3 -- avoid aufs3-mmap.patch include hell for arm64 +UBUNTU: SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read modify write. +UBUNTU: SAUCE: (no-up) PCI: Increase BAR size quirk for IBM ipr SAS Crocodile adapters + --- linux-4.4.0.orig/firmware/Makefile +++ linux-4.4.0/firmware/Makefile @@ -20,80 +20,32 @@ # accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all). # But be aware that the config file might not be included at all. -ifdef CONFIG_ACENIC_OMIT_TIGON_I -acenic-objs := acenic/tg2.bin -fw-shipped- += acenic/tg1.bin -else -acenic-objs := acenic/tg1.bin acenic/tg2.bin -endif -fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) -fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ - adaptec/starfire_tx.bin -fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin -fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw -fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ - bnx2x/bnx2x-e1h-6.2.9.0.fw \ - bnx2x/bnx2x-e2-6.2.9.0.fw -fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ - bnx2/bnx2-rv2p-09-6.0.17.fw \ - bnx2/bnx2-rv2p-09ax-6.0.17.fw \ - bnx2/bnx2-mips-06-6.2.1.fw \ - bnx2/bnx2-rv2p-06-6.0.15.fw -fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin -fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ - cxgb3/t3c_psram-1.1.0.bin \ - cxgb3/ael2005_opt_edc.bin \ - cxgb3/ael2005_twx_edc.bin \ - cxgb3/ael2020_twx_edc.bin -fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw -fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin -fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \ - radeon/R300_cp.bin radeon/R420_cp.bin \ - radeon/RS690_cp.bin radeon/RS600_cp.bin \ - radeon/R520_cp.bin \ - radeon/R600_pfp.bin radeon/R600_me.bin \ - radeon/RV610_pfp.bin radeon/RV610_me.bin \ - radeon/RV630_pfp.bin radeon/RV630_me.bin \ - radeon/RV620_pfp.bin radeon/RV620_me.bin \ - radeon/RV635_pfp.bin radeon/RV635_me.bin \ - radeon/RV670_pfp.bin radeon/RV670_me.bin \ - radeon/RS780_pfp.bin radeon/RS780_me.bin \ - radeon/RV770_pfp.bin radeon/RV770_me.bin \ - radeon/RV730_pfp.bin radeon/RV730_me.bin \ - radeon/RV710_pfp.bin radeon/RV710_me.bin -fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin -fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.12.30.0.fw \ + bnx2x/bnx2x-e1h-7.12.30.0.fw \ + bnx2x/bnx2x-e2-7.12.30.0.fw +fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1b.fw \ + bnx2/bnx2-rv2p-06-6.0.15.fw \ + bnx2/bnx2-mips-06-6.2.3.fw \ + bnx2/bnx2-rv2p-09-6.0.17.fw \ + bnx2/bnx2-rv2p-09ax-6.0.17.fw fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ e100/d102e_ucode.bin -fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin -fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \ - cis/DP83903.cis cis/NE2K.cis \ - cis/tamarack.cis cis/PE-200.cis \ - cis/PE520.cis -fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis -fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis -fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ - cis/COMpad2.cis cis/COMpad4.cis \ - cis/SW_555_SER.cis cis/SW_7xx_SER.cis \ - cis/SW_8xx_SER.cis -fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin -fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ - advansys/3550.bin advansys/38C0800.bin +fw-shipped-$(CONFIG_PCMCIA_PCNET) += + +fw-shipped-$(CONFIG_PCMCIA_3C589) += +fw-shipped-$(CONFIG_PCMCIA_3C574) += +fw-shipped-$(CONFIG_SERIAL_8250_CS) += + fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \ qlogic/12160.bin fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp -fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \ - ess/maestro3_assp_minisrc.fw fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \ sb16/ima_adpcm_init.csp \ sb16/ima_adpcm_playback.csp \ sb16/ima_adpcm_capture.csp -fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ - yamaha/ds1e_ctrl.fw fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin -fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ tigon/tg3_tso5.bin fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin @@ -101,40 +53,8 @@ emi26/bitstream.fw fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \ emi62/spdif.fw emi62/midi.fw -fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \ - kaweth/new_code_fix.bin \ - kaweth/trigger_code_fix.bin -ifdef CONFIG_FIRMWARE_IN_KERNEL -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw -else -fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw \ - keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw \ - keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \ - keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw -endif -fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \ - mts_cdma.fw mts_gsm.fw mts_edge.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \ - edgeport/down.fw edgeport/down2.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \ # whiteheat_loader_debug.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw -fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw -fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw -fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin -fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) --- linux-4.4.0.orig/firmware/WHENCE +++ linux-4.4.0/firmware/WHENCE @@ -619,16 +619,6 @@ -------------------------------------------------------------------------- -Driver: MYRI_SBUS - MyriCOM Gigabit Ethernet - -File: myricom/lanai.bin - -Licence: Unknown - -Found in hex form in kernel source. - --------------------------------------------------------------------------- - Driver: bnx2x: Broadcom Everest File: bnx2x/bnx2x-e1-6.2.9.0.fw --- linux-4.4.0.orig/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +++ linux-4.4.0/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex @@ -0,0 +1,5804 @@ +:10000000080001180800000000004A68000000C84D +:1000100000000000000000000000000008004A6826 +:100020000000001400004B30080000A00800000091 +:100030000000569400004B44080058200000008443 +:100040000000A1D808005694000001580000A25CEE +:100050000800321008000000000072F00000A3B495 +:10006000000000000000000000000000080072F026 +:1000700000000024000116A40800049008000400F9 +:10008000000017D4000116C80000000000000000A6 +:100090000000000000000000000000000000000060 +:1000A000080000A80800000000003BFC00012E9C96 +:1000B0000000000000000000000000000000000040 +:1000C00000000000000000000A00004600000000E0 +:1000D000000000000000000D636F6D362E322E33DD +:1000E0000000000006020302000000000000000300 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C02080024424AA03C03080015 +:1002000024634B9CAC4000000043202B1480FFFD76 +:10021000244200043C1D080037BD7FFC03A0F021F0 +:100220003C100800261001183C1C0800279C4AA01E +:100230000E000168000000000000000D27470100CB +:1002400090E3000B2402001A94E5000814620028D1 +:10025000000020218CE200003C0308008C63004475 +:1002600094E60014000211C20002104030A4000203 +:10027000005A10212463000130A50004A446008028 +:100280003C010800AC23004410A000190004202BFE +:100290008F4202B804410008240400013C02080017 +:1002A0008C420060244200013C010800AC22006046 +:1002B00003E00008008010218CE2002094E3001687 +:1002C00000002021AF4202808CE20004A743028498 +:1002D000AF4202883C021000AF4202B83C02080064 +:1002E0008C42005C244200013C010800AC22005C0E +:1002F00003E00008008010212747010090E3000B75 +:100300002402000394E50008146200280000202164 +:100310008CE200003C0308008C63004494E6001467 +:10032000000211C20002104030A40002005A102145 +:100330002463000130A50004A44600803C010800AD +:10034000AC23004410A000190004202B8F4202B8F7 +:1003500004410008240400013C0208008C420060B3 +:10036000244200013C010800AC22006003E00008C8 +:10037000008010218CE2002094E300160000202170 +:10038000AF4202808CE20004A7430284AF4202889D +:100390003C021000AF4202B83C0208008C42005CF4 +:1003A000244200013C010800AC22005C03E000088C +:1003B000008010218F4301002402010050620003DD +:1003C000000311C20000000D000311C20002104022 +:1003D000005A1021A440008003E000080000102112 +:1003E0009362000003E00008AF80000003E0000813 +:1003F0000000102103E00008000010212402010089 +:1004000014820008000000003C0208008C4200FC3E +:10041000244200013C010800AC2200FC0A0000DD7F +:1004200030A200203C0208008C42008424420001DB +:100430003C010800AC22008430A2002010400008DB +:1004400030A300103C0208008C4201082442000145 +:100450003C010800AC22010803E000080000000095 +:1004600010600008000000003C0208008C420104FB +:10047000244200013C010800AC22010403E0000812 +:10048000000000003C0208008C42010024420001F0 +:100490003C010800AC22010003E00008000000005D +:1004A00027BDFFE8AFBF0010274401009483000878 +:1004B000306200041040001B306600028F4202B818 +:1004C00004410008240500013C0208008C42006041 +:1004D000244200013C010800AC2200600A0001290E +:1004E0008FBF00108C82002094830016000028210A +:1004F000AF4202808C820004A7430284AF4202888C +:100500003C021000AF4202B83C0208008C42005C82 +:10051000244200013C010800AC22005C0A000129D1 +:100520008FBF001010C00006006028218F4401001A +:100530000E0000CD000000000A0001282405000183 +:100540008F8200088F4301045043000700002821D8 +:100550008F4401000E0000CD000000008F42010416 +:10056000AF820008000028218FBF001000A01021DA +:1005700003E0000827BD001827BDFFE8AFBF001447 +:10058000AFB00010974201083043700024022000F1 +:100590001062000B286220011440002F000010217F +:1005A00024024000106200250000000024026000C8 +:1005B00010620026000010210A0001658FBF0014A0 +:1005C00027500100920200091040001A2403000184 +:1005D0003C0208008C420020104000160000182148 +:1005E0000E00049300000000960300083C0608007B +:1005F00094C64B5E8E0400188F8200209605000C76 +:1006000000031C0000661825AC440000AC45000443 +:1006100024040001AC400008AC40000CAC400010C9 +:10062000AC400014AC4000180E0004B8AC43001CF1 +:10063000000018210A000164006010210E0003254B +:10064000000000000A000164000010210E000EE905 +:1006500000000000000010218FBF00148FB00010B8 +:1006600003E0000827BD001827BDFFE0AFB2001867 +:100670003C036010AFBF001CAFB10014AFB000105E +:100680008C6450002402FF7F3C1A800000822024EA +:100690003484380C24020037AC6450003C1208004B +:1006A00026524AD8AF42000824020C80AF420024F0 +:1006B0003C1B80083C06080024C60324024010218D +:1006C0002404001D2484FFFFAC4600000481FFFDCC +:1006D000244200043C020800244204B03C0108000B +:1006E000AC224AE03C020800244202303C010800EF +:1006F000AC224AE43C020800244201743C03080096 +:100700002463032C3C040800248403D83C0508001F +:1007100024A538F03C010800AC224B403C02080004 +:10072000244202EC3C010800AC264B243C010800AA +:10073000AC254B343C010800AC234B3C3C01080089 +:10074000AC244B443C010800AC224B483C0108005F +:10075000AC234ADC3C010800AC204AE83C0108001C +:10076000AC204AEC3C010800AC204AF03C010800F7 +:10077000AC204AF43C010800AC204AF83C010800D7 +:10078000AC204AFC3C010800AC204B003C010800B6 +:10079000AC244B043C010800AC204B083C01080091 +:1007A000AC204B0C3C010800AC204B103C01080075 +:1007B000AC204B143C010800AC204B183C01080055 +:1007C000AC264B1C3C010800AC264B203C01080029 +:1007D000AC254B303C010800AC234B380E000623FF +:1007E000000000003C028000344200708C42000097 +:1007F000AF8200143C0308008C6300208F82000449 +:10080000104300043C0280000E00045BAF83000430 +:100810003C028000344600703C0308008C6300A05A +:100820003C0208008C4200A4104300048F84001492 +:100830003C010800AC2300A4A743009E8CCA000022 +:100840003C0308008C6300BC3C0208008C4200B8EA +:100850000144202300641821000040210064202B63 +:1008600000481021004410213C010800AC2300BCCA +:100870003C010800AC2200B88F5100003222000772 +:100880001040FFDCAF8A00148CC600003C05080055 +:100890008CA500BC3C0408008C8400B800CA30233E +:1008A00000A628210000102100A6302B0082202164 +:1008B00000862021322700013C010800AC2500BC45 +:1008C0003C010800AC2400B810E0001F32220002F6 +:1008D0008F420100AF4200208F420104AF4200A8C6 +:1008E0009342010B0E0000C6305000FF2E02001E86 +:1008F00054400004001010800E0000C90A000213CA +:1009000000000000005210218C4200000040F80955 +:1009100000000000104000053C0240008F4301042D +:100920003C026020AC4300143C024000AF4201385E +:100930003C0208008C420034244200013C010800C3 +:10094000AC220034322200021040000E3222000499 +:100950008F4201400E0000C6AF4200200E000295FB +:10096000000000003C024000AF4201783C02080059 +:100970008C420038244200013C010800AC220038BF +:10098000322200041040FF983C0280008F42018018 +:100990000E0000C6AF4200208F43018024020F00EA +:1009A00014620005000000008F420188A742009CED +:1009B0000A0002483C0240009362000024030050F9 +:1009C000304200FF144300083C0240000E00027B4E +:1009D00000000000544000043C0240000E000D7571 +:1009E000000000003C024000AF4201B83C02080099 +:1009F0008C42003C244200013C010800AC22003C37 +:100A00000A0001C83C0280003C0290003442000110 +:100A100000822025AF4400208F4200200440FFFECA +:100A20000000000003E00008000000003C0280001D +:100A3000344200010082202503E00008AF4400207A +:100A400027BDFFE0AFB10014AFB0001000808821D7 +:100A5000AFBF00180E00025030B000FF9362007D5F +:100A60000220202102028025A370007D8F70007477 +:100A70003C0280000E000259020280241600000988 +:100A80008FBF00188F4201F80440FFFE24020002CD +:100A9000AF5101C0A34201C43C021000AF4201F8B3 +:100AA0008FBF00188FB100148FB0001003E0000852 +:100AB00027BD002027BDFFE8AFBF0010974201848B +:100AC0008F440188304202001040000500002821B8 +:100AD0000E000FAA000000000A00028D240500018C +:100AE0003C02FF0004800005008218243C02040040 +:100AF000506200019362003E240500018FBF001088 +:100B000000A0102103E0000827BD0018A360002208 +:100B10008F4401400A00025E2405000127BDFFE862 +:100B2000AFBF0014AFB0001093620000304400FF6C +:100B300038830020388200300003182B0002102B6D +:100B40000062182410600003240200501482008008 +:100B50008FBF001493620005304200011040007CFA +:100B60008FBF0014934201482443FFFF2C6200050D +:100B7000104000788FB00010000310803C03080084 +:100B800024634A68004310218C42000000400008A2 +:100B9000000000000E0002508F4401408F70000CD6 +:100BA0008F4201441602000224020001AF62000CD1 +:100BB0000E0002598F4401408F420144145000043A +:100BC0008FBF00148FB000100A000F2027BD00183F +:100BD0008F62000C0A0003040000000097620010FE +:100BE0008F4301443042FFFF1462001A00000000EE +:100BF00024020001A76200108F4202380443001053 +:100C00008F4201403C02003F3446F0003C0560004A +:100C10003C04FFC08CA22BBC0044182400461024C6 +:100C20000002130200031D82106200390000000060 +:100C30008F4202380440FFF7000000008F4201405D +:100C4000AF4202003C021000AF4202380A00032209 +:100C50008FBF0014976200100A0003040000000018 +:100C60000E0002508F440140976200128F430144EE +:100C70003050FFFF1603000224020001A762001299 +:100C80000E0002598F4401408F42014416020004B5 +:100C90008FBF00148FB000100A00029127BD00180A +:100CA000976200120A00030400000000976200141B +:100CB0008F4301443042FFFF14620006240200010A +:100CC0008FBF00148FB00010A76200140A00124AF0 +:100CD00027BD0018976200141440001D8FBF001438 +:100CE0000A00031C00000000976200168F430144B5 +:100CF0003042FFFF1462000B240200018FBF00147A +:100D00008FB00010A76200160A000B1227BD001852 +:100D10009742007824420004A76200100A000322D0 +:100D20008FBF001497620016240300013042FFFFBA +:100D3000144300078FBF00143C0208008C4200706F +:100D4000244200013C010800AC2200708FBF001457 +:100D50008FB0001003E0000827BD001827BDFFE892 +:100D6000AFBF0014AFB000108F50010093620000BD +:100D700093430109304400FF2402001F106200A5C4 +:100D80002862002010400018240200382862000A5F +:100D90001040000C2402000B286200081040002CB8 +:100DA00000000000046000E52862000214400028F2 +:100DB00024020006106200268FBF00140A00041FE0 +:100DC0008FB000101062005E2862000B144000DC3F +:100DD0008FBF00142402000E106200738FB0001049 +:100DE0000A00041F00000000106200C028620039E1 +:100DF0001040000A2402008024020036106200CA5B +:100E000028620037104000B424020035106200C18F +:100E10008FBF00140A00041F8FB000101062002B57 +:100E20002862008110400006240200C82402003914 +:100E3000106200B48FBF00140A00041F8FB00010AE +:100E4000106200998FBF00140A00041F8FB00010B9 +:100E50003C0208008C420020104000B98FBF0014F3 +:100E60000E000493000000008F4201008F830020D9 +:100E70009745010C97460108AC6200008F420104BF +:100E80003C04080094844B5E00052C00AC62000416 +:100E90008F4201180006340000C43025AC620008FF +:100EA0008F42011C24040001AC62000C9342010A31 +:100EB00000A22825AC650010AC600014AC600018DE +:100EC000AC66001C0A0003F58FBF00143C0208004A +:100ED0008C4200201040009A8FBF00140E00049333 +:100EE00000000000974401083C03080094634B5E37 +:100EF0009745010C000422029746010E8F820020C4 +:100F0000000426000083202500052C003C030080FF +:100F100000A6282500832025AC400000AC4000043A +:100F2000AC400008AC40000CAC450010AC400014D4 +:100F3000AC400018AC44001C0A0003F42404000177 +:100F40009742010C14400015000000009362000558 +:100F50003042001014400011000000000E0002504A +:100F6000020020219362000502002021344200107B +:100F70000E000259A36200059362000024030020C2 +:100F8000304200FF1043006D020020218FBF00148B +:100F90008FB000100A000FC027BD00180000000D20 +:100FA0000A00041E8FBF00143C0208008C4200207F +:100FB000104000638FBF00140E0004930000000077 +:100FC0008F4201048F8300209744010C3C050800E8 +:100FD00094A54B5EAC6200009762002C00042400D4 +:100FE0003042FFFF008220253C02400E00A228254F +:100FF000AC640004AC600008AC60000CAC60001095 +:10100000AC600014AC600018AC65001C0A0003F46E +:10101000240400010E00025002002021A7600008F5 +:101020000E00025902002021020020210E00025E63 +:10103000240500013C0208008C42002010400040C2 +:101040008FBF00140E000493000000009742010CB3 +:101050008F8300203C05080094A54B5E000214001D +:10106000AC700000AC620004AC6000088F64004CFF +:101070003C02401F00A22825AC64000C8F62005087 +:1010800024040001AC6200108F620054AC620014B2 +:10109000AC600018AC65001C8FBF00148FB000104E +:1010A0000A0004B827BD0018240200205082002541 +:1010B0008FB000100E000F0A020020211040002007 +:1010C0008FBF0014020020218FB0001000002821E3 +:1010D0000A00025E27BD0018020020218FBF001405 +:1010E0008FB000100A00058027BD00189745010C3D +:1010F000020020218FBF00148FB000100A0005A04D +:1011000027BD0018020020218FB000100A0005C57D +:1011100027BD00189345010D020020218FB000105B +:101120000A00060F27BD0018020020218FBF0014FF +:101130008FB000100A0005EB27BD00188FBF001408 +:101140008FB0001003E0000827BD00188F4202781E +:101150000440FFFE2402000234840080AF440240B9 +:10116000A34202443C02100003E00008AF420278B0 +:101170003C04080094844B6A3C0208008C424B7487 +:101180003083FFFF000318C000431021AF42003C32 +:101190003C0208008C424B70AF4200383C020050C9 +:1011A00034420008AF4200300000000000000000A0 +:1011B000000000008F420000304200201040FFFD80 +:1011C000000000008F4204003C010800AC224B608C +:1011D0008F4204043C010800AC224B643C02002016 +:1011E000AF420030000000003C02080094424B680F +:1011F0003C03080094634B6C3C05080094A54B6EBF +:1012000024840001004310213083FFFF3C010800CB +:10121000A4224B683C010800A4244B6A1465000317 +:10122000000000003C010800A4204B6A03E0000815 +:10123000000000003C05000A27BDFFE80345282107 +:101240003C04080024844B50AFBF00100E00051D65 +:101250002406000A3C02080094424B523C0308005A +:1012600094634B6E3042000F244200030043180485 +:1012700024027FFF0043102B10400002AF83001CAC +:101280000000000D0E00042A000000003C020800CF +:1012900094424B5A8FBF001027BD001803E000088E +:1012A000A74200A23C02000A034210219443000618 +:1012B0003C02080094424B5A3C010800A4234B56C0 +:1012C000004310238F83001C00021400000214034B +:1012D0000043102B03E000083842000127BDFFE85F +:1012E000AFBF00103C02000A0342102194420006E6 +:1012F0003C010800A4224B560E00047700000000B9 +:101300005440FFF93C02000A8FBF001003E00008C0 +:1013100027BD001827BDFFE8AFBF00100E000477FF +:101320000000000010400003000000000E000485D3 +:10133000000000003C0208008C424B608FBF001090 +:1013400027430400AF4200383C0208008C424B6443 +:1013500027BD0018AF830020AF42003C3C020005CF +:10136000AF42003003E00008AF8000188F82001801 +:101370003C0300060002114000431025AF4200303C +:101380000000000000000000000000008F4200008C +:10139000304200101040FFFD27420400AF820020C1 +:1013A00003E00008AF8000183C0608008CC64B64C0 +:1013B0008F8500188F8300203C02080094424B5A0E +:1013C00027BDFFE024A50001246300202442000182 +:1013D00024C70020AFB10014AFB00010AFBF001899 +:1013E000AF850018AF8300203C010800A4224B5AAF +:1013F000309000FF3C010800AC274B6404C100089A +:101400000000882104E00006000000003C02080003 +:101410008C424B60244200013C010800AC224B602E +:101420003C02080094424B5A3C03080094634B680A +:101430000010202B004310262C42000100441025F0 +:10144000144000048F830018240200101462000F5F +:10145000000000000E0004A9241100013C03080054 +:1014600094634B5A3C02080094424B681462000398 +:10147000000000000E00042A000000001600000317 +:10148000000000000E000493000000003C03080070 +:1014900094634B5E3C02080094424B5C2463000161 +:1014A0003064FFFF3C010800A4234B5E148200035C +:1014B000000000003C010800A4204B5E1200000662 +:1014C000000000003C02080094424B5AA74200A2D0 +:1014D0000A00050B022010210E0004770000000016 +:1014E00010400004022010210E00048500000000BE +:1014F000022010218FBF00188FB100148FB0001090 +:1015000003E0000827BD00203084FFFF30A5FFFF67 +:101510000000182110800007000000003082000148 +:101520001040000200042042006518210A00051343 +:101530000005284003E000080060102110C00006EC +:1015400024C6FFFF8CA2000024A50004AC8200008A +:101550000A00051D2484000403E0000800000000C8 +:1015600010A0000824A3FFFFAC86000000000000CC +:10157000000000002402FFFF2463FFFF1462FFFA53 +:101580002484000403E0000800000000240200019D +:10159000AF62000CA7620010A7620012A7620014DD +:1015A00003E00008A76200163082007F034210218A +:1015B0003C08000E004818213C0208008C42002024 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF +:1015D000AFB10014AFB00010AFBF00200080802179 +:1015E00030B100FF0087202430D200FF1040002FD0 +:1015F00000009821AF44002C9062000024030050AA +:10160000304200FF1443000E000000003C020800BE +:101610008C4200E00202102100471024AF42002C4F +:101620003C0208008C4200E0020210213042007FA0 +:101630000342102100481021944200D43053FFFF90 +:101640000E000493000000003C02080094424B5E30 +:101650008F8300200011340000C2302500122C00BE +:101660003C02400000C2302534A50001AC700000EF +:101670008FBF0020AC6000048FB20018AC7300086C +:101680008FB10014AC60000C8FB3001CAC6500106F +:101690008FB00010AC60001424040001AC6000188E +:1016A00027BD00280A0004B8AC66001C8FBF0020CC +:1016B0008FB3001C8FB200188FB100148FB00010D0 +:1016C00003E0000827BD00289343010F2402001007 +:1016D0001062000E2865001110A0000724020012FD +:1016E000240200082405003A1062000600003021A0 +:1016F00003E0000800000000240500351462FFFC30 +:10170000000030210A000538000000008F420074FC +:1017100024420FA003E00008AF62000C27BDFFE8E1 +:10172000AFBF00100E00025E240500018FBF001045 +:1017300024020001A762001227BD00182402000144 +:1017400003E00008A360002227BDFFE0AFB1001452 +:10175000AFB00010AFBF001830B1FFFF0E00025055 +:10176000008080219362003F24030004304200FF88 +:101770001443000C02002021122000082402000A59 +:101780000E00053100000000936200052403FFFEF7 +:1017900000431024A362000524020012A362003F4C +:1017A000020020210E000259A360008116200003D0 +:1017B000020020210E0005950000000002002021FB +:1017C000322600FF8FBF00188FB100148FB00010B9 +:1017D000240500380A00053827BD002027BDFFE09A +:1017E000AFBF001CAFB20018AFB10014AFB0001013 +:1017F0000E000250008080210E0005310000000024 +:101800009362003F24120018305100FF123200038F +:101810000200202124020012A362003F936200050F +:101820002403FFFE004310240E000259A3620005AA +:10183000020020212405002016320007000030217C +:101840008FBF001C8FB200188FB100148FB0001032 +:101850000A00025E27BD00208FBF001C8FB2001857 +:101860008FB100148FB00010240500390A0005382C +:1018700027BD002027BDFFE8AFB00010AFBF0014A8 +:101880009742010C2405003600808021144000108E +:10189000304600FF0E00025000000000240200123B +:1018A000A362003F93620005344200100E00053130 +:1018B000A36200050E00025902002021020020212F +:1018C0000E00025E240500200A000604000000004D +:1018D0000E000538000000000E000250020020211A +:1018E000936200232403FF9F020020210043102461 +:1018F0008FBF00148FB00010A36200230A000259AA +:1019000027BD001827BDFFE0AFBF0018AFB100141E +:10191000AFB0001030B100FF0E00025000808021F7 +:10192000240200120E000531A362003F0E0002598E +:101930000200202102002021022030218FBF001848 +:101940008FB100148FB00010240500350A0005384F +:1019500027BD0020A380002C03E00008A380002DF9 +:101960008F4202780440FFFE8F820034AF42024073 +:1019700024020002A34202443C02100003E00008DB +:10198000AF4202783C0360008C6254003042000891 +:101990001440FFFD000000008C625408AF82000C70 +:1019A00024020052AC605408AC645430AC6254342D +:1019B0002402000803E00008AC6254003C0260000E +:1019C0008C42540030420008104000053C03600087 +:1019D0008C625400304200081440FFFD00000000FB +:1019E0008F83000C3C02600003E00008AC43540805 +:1019F00090A3000024020005008040213063003FD6 +:101A000000004821146200050000502190A2001C33 +:101A100094A3001E304900FF306AFFFFAD00000CA8 +:101A2000AD000010AD000024950200148D05001CCF +:101A30008D0400183042FFFF0049102300021100FE +:101A4000000237C3004038210086202300A2102B5B +:101A50000082202300A72823AD05001CAD04001838 +:101A6000A5090014A5090020A50A001603E0000836 +:101A7000A50A00228F4201F80440FFFE2402000262 +:101A8000AF4401C0A34201C43C02100003E00008BF +:101A9000AF4201F83C0208008C4200B427BDFFE8C9 +:101AA000AFBF001424420001AFB000103C01080099 +:101AB000AC2200B48F4300243C02001F30AA00FF78 +:101AC0003442FF8030D800FF006280240080F8217B +:101AD00030EF00FF1158003B01405821240CFF80DB +:101AE0003C19000A3163007F000310C00003194055 +:101AF000006218213C0208008C4200DC25680001CD +:101B0000310D007F03E21021004310213043007F9C +:101B100003431821004C102400794821AF420024CF +:101B20008D220024016C1824006C7026AD22000C5C +:101B30008D220024310800FFAD22001095220014F0 +:101B4000952300208D27001C3042FFFF3063FFFFEC +:101B50008D2600180043102300021100000227C345 +:101B60000040282100C4302300E2102B00C23023A3 +:101B700000E53823AD27001CAD2600189522002073 +:101B8000A522001495220022154B000AA52200165A +:101B90008D2300248D220008254600013145008058 +:101BA0001462000430C4007F108F000238AA008045 +:101BB00000C0502151AF000131C800FF1518FFC906 +:101BC000010058218F8400343082007F03421821A5 +:101BD0003C02000A006218212402FF8000822024B7 +:101BE000AF440024A06A0079A06A00838C62005090 +:101BF0008F840034AC6200708C6500743C027FFFFF +:101C00003442FFFF00A228240E00066BAC6500746E +:101C1000AF5000248FBF00148FB0001003E0000805 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 +:101C4000AFBF003CAFB60030AFB40028AFB3002444 +:101C50008F4500248F4600288F43002C3C02001F34 +:101C60003442FF800062182400C230240080A82182 +:101C7000AFA3001400A2F0240E00062FAFA60010A0 +:101C80003C0208008C4200E02410FF8003608821A1 +:101C900002A2102100501024AF4200243C02080090 +:101CA0008C4200E002A210213042007F0342182142 +:101CB0003C02000A00629021924200D293630084A9 +:101CC000305700FF306300FF24020001106200342F +:101CD000036020212402000214620036000000008C +:101CE0000E001216024028219223008392220083C4 +:101CF0003063007F3042007F000210C000031940B3 +:101D0000006218213C0208008C4200DC02A2102173 +:101D10000043382100F01024AF42002892250078BB +:101D20009224008330E2007F034218213C02000C21 +:101D300014850007006280212402FFFFA24200F107 +:101D40002402FFFFA64200F20A0007272402FFFF39 +:101D500096020020A24200F196020022A64200F262 +:101D60008E020024AE4200F492220083A24200F0D0 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863 +:101D80008E220050AE4201008E4200CCAE420104D1 +:101D9000922200853042003F0A0007823442004010 +:101DA0000E00123902402821922200850A00078283 +:101DB0003042003F936200852403FFDF3042003F42 +:101DC000A36200859362008500431024A36200850E +:101DD0009363008393620078307400FF304200FF09 +:101DE00010540036240AFF803C0C000C3283007F24 +:101DF000000310C000031940006218213C020800D3 +:101E00008C4200DC268800013109007F02A21021EB +:101E10000043382130E2007F0342182100EA1024F9 +:101E2000AF420028006C80218E020024028A182410 +:101E3000006A5826AE02000C8E020024310800FF12 +:101E4000AE02001096020014960300208E07001CBC +:101E50003042FFFF3063FFFF8E060018004310235F +:101E600000021100000227C30040282100C43023D3 +:101E700000E2102B00C2302300E53823AE07001C1F +:101E8000AE06001896020020A60200149602002258 +:101E9000A602001692220079304200FF105400077B +:101EA0000000000051370001316800FF92220078E5 +:101EB000304200FF1448FFCD0100A0219222008390 +:101EC000A22200798E2200500A0007E2AE220070A2 +:101ED000A22200858E22004C2405FF80AE42010C18 +:101EE0009222008534420020A2220085924200D135 +:101EF0003C0308008C6300DC305400FF3C02080007 +:101F00008C4200E400143140001420C002A31821C8 +:101F100000C4202102A210210064382100461021B3 +:101F20000045182400E52824AF450028AF43002CC5 +:101F30003042007F924400D030E3007F03422821EA +:101F4000034318213C02000C006280213C02000E79 +:101F5000309600FF00A298211296002A000000008F +:101F60008E02000C02002021026028211040002572 +:101F7000261000280E00064A000000009262000DA4 +:101F800026830001307400FF3042007FA262000D02 +:101F90002404FF801697FFF0267300203C020800FF +:101FA0008C4200DC0000A02102A210210044102479 +:101FB000AF4200283C0208008C4200E43C030800C9 +:101FC0008C6300DC02A2102100441024AF42002CDC +:101FD0003C0208008C4200E402A318213063007F19 +:101FE00002A210213042007F034220210343182126 +:101FF0003C02000C006280213C02000E0A0007A493 +:10200000008298218E4200D8AE2200508E4200D825 +:10201000AE22007092250083924600D19223008365 +:10202000924400D12402FF8000A228243063007F64 +:10203000308400FF00A628250064182A10600002E2 +:1020400030A500FF38A50080A2250083A2250079D5 +:102050000E00063D000000009222007E02A020211A +:10206000A222007A8E2300743C027FFF3442FFFFDD +:10207000006218240E00066BAE2300748FA20010BD +:10208000AF5E00248FBF003CAF4200288FBE0038F7 +:102090008FA200148FB700348FB600308FB5002C9C +:1020A0008FB400288FB300248FB200208FB1001CA2 +:1020B0008FB0001827BD004003E00008AF42002C9D +:1020C00090A2000024420001A0A200003C030800EE +:1020D0008C6300F4304200FF1443000F0080302175 +:1020E000A0A000003C0208008C4200E48F84003471 +:1020F000008220213082007F034218213C02000C24 +:10210000006218212402FF8000822024ACC300005A +:1021100003E00008AF4400288C8200002442002025 +:1021200003E00008AC82000094C200003C080800F4 +:10213000950800CA30E7FFFF008048210102102106 +:10214000A4C2000094C200003042FFFF00E2102B46 +:1021500054400001A4C7000094A200003C03080002 +:102160008C6300CC24420001A4A2000094A20000D1 +:102170003042FFFF544300078F8600280107102BD1 +:10218000A4A000005440000101003821A4C70000B1 +:102190008F8600288CC4001CAF44003C94A2000031 +:1021A0008F43003C3042FFFF000210C00062182144 +:1021B000AF43003C8F42003C008220231880000483 +:1021C000000000008CC200180A00084324420001ED +:1021D0008CC20018AF4200383C020050344200105C +:1021E000AF420030000000000000000000000000CE +:1021F0008F420000304200201040FFFD0000000030 +:102200008F420404AD2200048F420400AD2200007E +:102210003C020020AF42003003E000080000000054 +:1022200027BDFFE0AFB20018AFB10014AFB000108F +:10223000AFBF001C94C2000000C080213C12080007 +:10224000965200C624420001A60200009603000038 +:1022500094E2000000E03021144300058FB100300B +:102260000E000818024038210A000875000000001E +:102270008C8300048C820004244200400461000727 +:10228000AC8200048C8200040440000400000000C2 +:102290008C82000024420001AC8200009602000003 +:1022A0003042FFFF50520001A600000096220000BD +:1022B00024420001A62200008F82002896230000FD +:1022C00094420016144300048FBF001C2402000136 +:1022D000A62200008FBF001C8FB200188FB100141F +:1022E0008FB0001003E0000827BD00208F89002870 +:1022F00027BDFFE0AFBF00188D220028274804004B +:1023000030E700FFAF4200388D22002CAF8800304C +:10231000AF42003C3C020005AF420030000000002C +:1023200000000000000000000000000000000000AD +:10233000000000008C82000C8C82000CAD020000BA +:102340008C820010AD0200048C820018AD020008DF +:102350008C82001CAD02000C8CA20014AD02001097 +:102360008C820020AD02001490820005304200FFF4 +:1023700000021200AD0200188CA20018AD02001C71 +:102380008CA2000CAD0200208CA20010AD02002433 +:102390008CA2001CAD0200288CA20020AD02002CF3 +:1023A000AD060030AD000034978300263402FFFFF5 +:1023B00014620002006020213404FFFF10E00011CD +:1023C000AD04003895230036952400362402000120 +:1023D0003063FFFF000318C20069182190650040B8 +:1023E000308400070082100400451025A0620040E0 +:1023F0008F820028944200563042FFFF0A0008DC1A +:10240000AD02003C952300369524003624020001DD +:102410003063FFFF000318C2006918219065004077 +:1024200030840007008210040002102700451024A9 +:10243000A0620040AD00003C000000000000000071 +:10244000000000003C02000634420040AF42003071 +:102450000000000000000000000000008F420000AB +:10246000304200101040FFFD8F860028AF880030FA +:1024700024C2005624C7003C24C4002824C50032CE +:1024800024C600360E000856AFA200108FBF0018F9 +:1024900003E0000827BD00208F8300243C060800CD +:1024A0008CC600E88F82003430633FFF0003198040 +:1024B00000461021004310212403FF803046007F96 +:1024C00000431024AF420028034618213C02000CB0 +:1024D0000062302190C2000D30A500FF00003821BD +:1024E00034420010A0C2000D8F8900288F8A00247A +:1024F00095230036000A13823048000324020001AD +:10250000A4C3000E1102000B2902000210400005B6 +:10251000240200021100000C240300010A0009201B +:102520000000182111020006000000000A00092026 +:10253000000018218CC2002C0A000920244300014D +:102540008CC20014244300018CC200180043102BDD +:1025500050400009240700012402002714A20003B0 +:10256000000000000A00092C240700019522003E0B +:1025700024420001A522003E000A138230430003DA +:102580002C62000210400009008028211460000421 +:102590000000000094C200360A00093C3046FFFFEC +:1025A0008CC600380A00093C008028210000302138 +:1025B0003C04080024844B780A00088900000000CD +:1025C000274901008D22000C9523000601202021BF +:1025D000000216023046003F3063FFFF240200274E +:1025E00000C0282128C7002810C2000EAF83002495 +:1025F00010E00008240200312402002110C200096A +:102600002402002510C200079382002D0A00095BF6 +:102610000000000010C200059382002D0A00095B33 +:10262000000000000A0008F4000000000A0006266E +:102630000000000095230006912400058D25000C64 +:102640008D2600108D2700188D28001C8D29002054 +:10265000244200013C010800A4234B7E3C010800F9 +:10266000A0244B7D3C010800AC254B843C010800B4 +:10267000AC264B883C010800AC274B903C0108007D +:10268000AC284B943C010800AC294B9803E00008AF +:10269000A382002D8F87002827BDFFC0AFB3003471 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 +:1026B0003C0208008C4200D094E3003030B0FFFFB1 +:1026C000005010073045FFFF3063FFFF00C0982126 +:1026D000A7A200103C110800963100C614A3000602 +:1026E0003092FFFF8CE2002424420030AF42003CD5 +:1026F0000A0009948CE2002094E200323042FFFF8D +:1027000054A2000827A400188CE2002C24420030B8 +:10271000AF42003C8CE20028AF4200380A0009A218 +:102720008F84002827A5001027A60020022038212A +:102730000E000818A7A000208FA200182442003025 +:10274000AF4200388FA2001CAF42003C8F840028AB +:102750003C020005AF42003094820034274304005D +:102760003042FFFF0202102B14400007AF830030FD +:1027700094820054948300340202102100431023F9 +:102780000A0009B63043FFFF94830054948200345A +:102790000223182100501023006218233063FFFF2A +:1027A000948200163042FFFF144300030000000033 +:1027B0000A0009C424030001948200163042FFFF7E +:1027C0000043102B104000058F82003094820016C9 +:1027D000006210233043FFFF8F820030AC530000B3 +:1027E000AC400004AC520008AC43000C3C020006B4 +:1027F00034420010AF420030000000000000000032 +:10280000000000008F420000304200101040FFFD29 +:10281000001018C2006418219065004032040007BF +:10282000240200018FBF00388FB300348FB2003014 +:102830008FB1002C8FB000280082100400451025B5 +:1028400027BD004003E00008A062004027BDFFA8AC +:10285000AFB60050AFB5004CAFB40048AFB30044C2 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2 +:102870008C9000003C0208008C4200E88F860034F7 +:10288000960300022413FF8000C2302130633FFF13 +:102890000003198000C3382100F3102490B2000017 +:1028A000AF42002C9203000230E2007F034230214D +:1028B0003C02000E00C28821306300C024020040A8 +:1028C0000080A82100A0B021146200260000A021F1 +:1028D0008E3400388E2200181440000224020001B9 +:1028E000AE2200189202000D304200201440001564 +:1028F0008F8200343C0308008C6300DC001238C077 +:10290000001231400043102100C730210046382119 +:1029100030E300073C02008030E6007800C230253A +:102920000343182100F31024AF4208002463090078 +:10293000AF4608108E2200188C6300080043102157 +:10294000AE2200188E22002C8E2300182442000193 +:102950000062182B1060003D000000000A000A7899 +:1029600000000000920300022402FFC00043102474 +:10297000304200FF1440000524020001AE2200187E +:10298000962200360A000A613054FFFF8E2200149E +:1029900024420001AE22001892020000000216003C +:1029A0000002160304410029000000009602000204 +:1029B00027A4001000802821A7A20016960200027A +:1029C00024070001000030213042FFFFAF820024C5 +:1029D0000E000889AFA0001C960300023C0408000A +:1029E0008C8400E88F82003430633FFF000319803D +:1029F00000441021004310213043007F3C05000CAF +:102A00000053102403431821AF4200280065182109 +:102A10009062000D001221403042007FA062000D44 +:102A20003C0308008C6300E48F82003400431021D3 +:102A30000044382130E2007F03421021004510217C +:102A400000F31824AF430028AEA200009222000D2C +:102A5000304200101040001302A020218F83002874 +:102A60008EA40000028030219462003E2442FFFFC9 +:102A7000A462003E948400029625000E3084FFFF7D +:102A80000E00097330A5FFFF8F82002894430034A5 +:102A90009622000E1443000302A02021240200010C +:102AA000A382002C02C028210E0007FE00000000B7 +:102AB0008FBF00548FB600508FB5004C8FB40048C4 +:102AC0008FB300448FB200408FB1003C8FB000380C +:102AD00003E0000827BD00588F82002827BDFFD0E3 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA +:102AF000AFB1001CAFB00018904400D0904300D19B +:102B00000000A021309200FFA3A30010306300FF5B +:102B10008C5100D88C5300DC1072002B2402000171 +:102B20003C0308008C6300E493A400108F820034FF +:102B30002406FF800004214000431021004410219E +:102B40003043007F00461024AF4200280343182181 +:102B50003C02000C006218218C62000427A40014BF +:102B600027A50010022280210270102304400015C6 +:102B7000AFA300149062000D00C21024304200FF89 +:102B800014400007020088219062000D344200408A +:102B90000E0007FEA062000D0A000ABD93A20010FD +:102BA0000E0009E1241400018F830028AC7000D8C6 +:102BB00093A20010A06200D193A200101452FFD87B +:102BC0000000000024020001168200048FBF002CC8 +:102BD0000E000626000000008FBF002C8FB40028D6 +:102BE0008FB300248FB200208FB1001C8FB000186B +:102BF00003E0000827BD003027BDFFD8AFB3001C9D +:102C0000AFB20018AFB10014AFB00010AFBF0020DA +:102C10000080982100E0802130B1FFFF0E00049376 +:102C200030D200FF000000000000000000000000A3 +:102C30008F820020AC510000AC520004AC5300085D +:102C4000AC40000CAC400010AC400014AC4000188C +:102C50003C03080094634B5E02038025AC50001CCB +:102C6000000000000000000000000000240400013B +:102C70008FBF00208FB3001C8FB200188FB10014DB +:102C80008FB000100A0004B827BD002827BDFFE858 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B +:102CA0000080802124020C80AF420024000000003C +:102CB0000000000000000000000000000000000014 +:102CC0000E000ACC000000003C040800248400E050 +:102CD0008C8200002403FF808FBF001402021021A9 +:102CE00000431024AF4200248C8200003C03000A01 +:102CF000020280213210007F035010218FB000109B +:102D00000043102127BD001803E00008AF8200280F +:102D100027BDFFE8AFBF00108F4401403C0308000F +:102D20008C6300E02402FF80AF840034008318210C +:102D300000621024AF4200243C02000803424021FC +:102D4000950500023063007F3C02000A034318210E +:102D50000062182130A5FFFF3402FFFF0000302180 +:102D60003C07602010A20006AF8300282402FFFF6A +:102D7000A5020002946500D40E000AF130A5FFFF01 +:102D80008FBF001024020C8027BD001803E000084C +:102D9000AF4200243C020008034240219502000299 +:102DA0003C0A0800954A00C63046FFFF14C00007E1 +:102DB0003402FFFF8F8200288F8400343C0760209C +:102DC000944500D40A000B5A30A5FFFF10C200241E +:102DD0008F87002894E2005494E400163045FFFFEA +:102DE00000A6102300A6182B3089FFFF10600004F6 +:102DF0003044FFFF00C51023012210233044FFFFA1 +:102E0000008A102B1040000C012A1023240200011C +:102E1000A50200162402FFFFA502000294E500D4DB +:102E20008F8400340000302130A5FFFF3C07602074 +:102E30000A000AF1000000000044102A10400008B7 +:102E4000000000009502001630420001104000040E +:102E5000000000009742007E24420014A5020016E4 +:102E600003E00008000000008F84002827BDFFE079 +:102E7000AFBF0018948200349483003E1060001AA3 +:102E80003048FFFF9383002C2402000114620027C6 +:102E90008FBF00188F820028000818C23108000771 +:102EA000006218212447003A244900542444002099 +:102EB000244500302446003490620040304200FF38 +:102EC0000102100730420001104000168FBF0018A9 +:102ED0000E000856AFA900108F82002894420034DB +:102EE0000A000B733048FFFF94830036948200344D +:102EF0001043000E8FBF001894820036A482003465 +:102F000094820056A48200548C82002CAC8200244F +:102F100094820032A48200309482003CA482003A61 +:102F20008FBF00180A000B3327BD002003E0000804 +:102F300027BD002027BDFFE8AFBF00108F4A01006A +:102F40003C0508008CA500E03C02080090424B8440 +:102F50003C0C0800958C4B7E01452821304B003FEE +:102F600030A2007F03424021396900323C02000A4E +:102F70003963003F2C630001010240212D2900012B +:102F80002402FF8000A2282401234825AF8A0034B0 +:102F900000801821AF450024000030210080282146 +:102FA00024070001AF8800283C04080024844B78E3 +:102FB000AF8C002415200007A380002D24020020E0 +:102FC0005562000F006020213402FFFF5582000C83 +:102FD000006020212402002015620005000000008E +:102FE0008C6300142402FFFF106200070000000041 +:102FF0000E000889000000000A000BD0000000004D +:103000000E0008F4016028210E000B68000000008B +:103010008FBF001024020C8027BD001803E00008B9 +:10302000AF4200243C0208008C4200E027BDFFA014 +:10303000AFB1003C008210212411FF80AFBE0058C8 +:10304000AFB70054AFB20040AFB00038AFBF005CC4 +:10305000AFB60050AFB5004CAFB40048AFB30044BA +:10306000005110248F4800248F4900288F470028E2 +:10307000AF4200243C0208008C4200E00080902116 +:1030800024060006008210213042007F03421821EE +:103090003C02000A006280213C02001F3442FF8093 +:1030A00000E2382427A40010260500F00122F024B5 +:1030B0000102B8240E00051DAFA700308FA2001832 +:1030C000AE0200C48FA2001CAE0200C88FA2002472 +:1030D000AE0200CC93A40010920300D12402FF8022 +:1030E0000082102400431025304900FF3083007F08 +:1030F0003122007F0062102A10400004000310C03B +:1031000001311026304900FF000310C000031940B0 +:10311000006218213C0208008C4200DC920400D2BC +:10312000024210210043102100511024AF42002818 +:1031300093A300103063007F000310C00003194008 +:10314000006218213C0208008C4200DC024210217F +:10315000004310213042007F034218213C02000C42 +:10316000006240218FA300142402FFFF1062003090 +:10317000309500FF93A2001195030014304400FF26 +:103180003063FFFF0064182B1060000D000000008A +:10319000950400148D07001C8D0600183084FFFF75 +:1031A00000442023000421000000102100E4382105 +:1031B00000E4202B00C230210A000C4A00C4302158 +:1031C000950400148D07001C8D0600183084FFFF45 +:1031D000008220230004210000001021008018211B +:1031E00000C2302300E4202B00C4302300E3382346 +:1031F000AD07001CAD06001893A20011A502001433 +:1032000097A20012A50200168FA20014AD020010B2 +:103210008FA20014AD02000C93A20011A5020020A1 +:1032200097A20012A50200228FA20014AD02002472 +:103230002406FF80024610243256007FAF4200244D +:10324000035618213C02000A006280218E02004CC5 +:103250008FA200203124007F000428C0AE0200505D +:103260008FA200200004214000852821AE020070BA +:1032700093A2001001208821A202008393A20010D3 +:10328000A2020079920200853042003FA20200852E +:103290003C0208008C4200DC024210210045102153 +:1032A00000461024AF42002C3C0208008C4200E48F +:1032B0003C0308008C6300DC024210210044102112 +:1032C00000461024AF4200283C0208008C4200E473 +:1032D00002431821006518210242102100441021E8 +:1032E0003042007F3063007F93A50010034220210D +:1032F000034318213C02000E006240213C02000CF6 +:1033000010B1008C008248213233007F1660001912 +:103310002404FF803C0208008C4200DC02421021A1 +:1033200000441024AF42002C3C0208008C4200E410 +:103330003C0308008C6300DC02421021004410248E +:10334000AF4200283C0208008C4200E402431821EE +:103350003063007F024210213042007F034220216F +:10336000034318213C02000E006240213C02000C85 +:10337000008248219124000D2414FF8000001021B8 +:1033800000942025A124000D950400029505001449 +:103390008D07001C3084FFFF30A5FFFF8D0600184D +:1033A000008520230004210000E4382100C23021E0 +:1033B00000E4202B00C43021AD07001CAD0600182E +:1033C00095020002A5020014A50000168D02000857 +:1033D000AD0200108D020008AD02000C9502000243 +:1033E000A5020020A50000228D020008AD020024E5 +:1033F0009122000D30420040104000422622000180 +:103400003C0208008C4200E0A3B300283C10000AF4 +:103410000242102100541024AF4200243C02080054 +:103420008C4200E0A380002C27A4002C0242102133 +:103430003042007F03421821007018218C6200D8AE +:103440008D26000427A50028AFA9002C00461021D6 +:10345000AC6200D80E0009E1AF83002893A30028D6 +:103460008F8200280E000626A04300D10E000B68B4 +:103470000000000002541024AF4200243C02080067 +:103480008C4200DC00132940001320C000A420213E +:10349000024210210044102100541024AF42002C9D +:1034A0003C0208008C4200E43C0308008C6300DC12 +:1034B00003563021024210210045102100541024EF +:1034C000AF4200283C0208008C4200E4024318216D +:1034D0000064182102421021004510213042007F73 +:1034E0003063007F03422021034318213C02000E79 +:1034F000006240213C02000C00D080210082482163 +:10350000262200013043007F14750005304400FF7F +:103510002403FF800223102400431026304400FFC0 +:1035200093A2001000808821250800281444FF760B +:103530002529002093A400108FA300142402FFFF6C +:103540001062000A308900FF2482000124830001F8 +:103550003042007F14550005306900FF2403FF80CE +:103560000083102400431026304900FF92020078A7 +:10357000305300FF11330032012088213C02080043 +:103580008C4200DC3225007F000520C00005294068 +:1035900000A42021024210212406FF8000441021B3 +:1035A00000461024AF42002C3C0308008C6300DC72 +:1035B0003C0208008C4200E4024318210242102120 +:1035C0000045102100641821004610243063007F5C +:1035D000AF420028034318213C02000E0062402144 +:1035E0003C0208008C4200E48D06000C0100202102 +:1035F00002421021004510213042007F0342182171 +:103600003C02000C0062482110C0000D012028215E +:103610000E00064A000000002402FF800222182447 +:1036200026240001006228263082007F1455000203 +:10363000308300FF30A300FF1473FFD000608821A7 +:103640008E0300743C027FFF3442FFFF00621824A7 +:10365000AE0300740E00066B02402021AF57002419 +:103660008FA20030AF5E00288FBF005C8FBE005875 +:103670008FB700548FB600508FB5004C8FB4004800 +:103680008FB300448FB200408FB1003C8FB0003840 +:1036900027BD006003E00008AF42002C27BDFFD823 +:1036A000AFB1001CAFBF0020AFB000182751018898 +:1036B000922200032408FF803C03000A3047007F69 +:1036C000A3A700108F4601803C0208008C4200E056 +:1036D000AF86003400C2282100A81024AF42002485 +:1036E0009224000030A2007F0342102100431021E9 +:1036F000AF8200283084007F24020002148200255B +:10370000000719403C0208008C4200E400C210216E +:103710000043282130A2007F0342182100A8102472 +:10372000AF4200283C02000C006218219062000D9C +:10373000AFA3001400481025A062000D8FA3001451 +:103740009062000D304200405040006A8FBF002060 +:103750008F860028A380002C27A400148CC200D8D8 +:103760008C63000427A50010004310210E0009E11E +:10377000ACC200D893A300108F8200280E0006264A +:10378000A04300D10E000B68000000000A000E0BE1 +:103790008FBF00200E00062F00C020210E00063D26 +:1037A000000000003C020008034280219223000137 +:1037B0009202007B1443004F8FBF00209222000032 +:1037C0003044007F24020004108200172882000584 +:1037D00010400006240200052402000310820007A6 +:1037E0008FB1001C0A000E0C0000000010820012B5 +:1037F0008FBF00200A000E0C8FB1001C92050083C1 +:10380000920600788E0700748F84003430A500FF84 +:1038100000073E0230C600FF0E00067330E7007F4F +:103820000A000E0B8FBF00200E000BD78F840034D0 +:103830000A000E0B8FBF002024020C80AF42002430 +:103840009202003E30420040104000200000000084 +:103850009202003E00021600000216030441000618 +:10386000000000008F8400340E0005A024050093A2 +:103870000A000E0B8FBF00209202003F24030018A5 +:10388000304200FF1443000C8F84003424050039BB +:103890000E000538000030210E0002508F840034E5 +:1038A00024020012A202003F0E0002598F8400344D +:1038B0000A000E0B8FBF0020240500360E000538CD +:1038C000000030210A000E0B8FBF00200E000250B6 +:1038D0008F8400349202000534420020A2020005C9 +:1038E0000E0002598F8400340E000FC08F84003404 +:1038F0008FBF00208FB1001C8FB0001824020C80F5 +:1039000027BD002803E00008AF42002427BDFFE8E0 +:10391000AFB00010AFBF001427430100946200084D +:103920000002140000021403044100020000802180 +:103930002410000194620008304200801040001AF8 +:10394000020010219462000830422000104000164E +:10395000020010218C6300183C021C2D344219ED2A +:10396000240600061062000F3C0760213C0208009C +:103970008C4200D4104000078F8200288F830028DB +:10398000906200623042000F34420040A062006248 +:103990008F8200288F840034944500D40E000AF1F1 +:1039A00030A5FFFF020010218FBF00148FB0001060 +:1039B00003E0000827BD001827BDFFE0AFB10014E9 +:1039C000AFB00010A380002CAFBF00188F450100DE +:1039D0003C0308008C6300E02402FF80AF850034C4 +:1039E00000A318213064007F0344202100621824C2 +:1039F0003C02000A00822021AF430024275001002E +:103A00008E0200148C8300DCAF8400280043102356 +:103A100018400004000088218E0200140E000A8461 +:103A2000AC8200DC9202000B24030002304200FF53 +:103A30001443002F0000000096020008304300FFEE +:103A40002402008214620005240200840E00093E54 +:103A5000000000000A000E97000000001462000938 +:103A6000240200818F8200288F8400343C0760216B +:103A7000944500D49206000530A5FFFF0A000E868B +:103A800030C600FF14620027000000009202000A06 +:103A9000304300FF306200201040000430620040DC +:103AA0008F8400340A000E82240600401040000477 +:103AB000000316008F8400340A000E8224060041A1 +:103AC00000021603044100178F84003424060042CC +:103AD0008F8200283C076019944500D430A5FFFF71 +:103AE0000E000AF1000000000A000E97000000001E +:103AF0009202000B24030016304200FF1043000620 +:103B0000000000009202000B24030017304200FF67 +:103B100014430004000000000E000E11000000001D +:103B2000004088210E000B68000000009202000A8D +:103B3000304200081040000624020C808F850028C7 +:103B40003C0400080E0011EE0344202124020C80E6 +:103B5000AF4200248FBF0018022010218FB0001048 +:103B60008FB1001403E0000827BD002027BDFFE847 +:103B7000AFBF0014AFB000108F5000243C0308000A +:103B80008C6300E08F4501002402FF8000A3182110 +:103B90003064007F03442021006218243C02000AA4 +:103BA00000822021AF850034AF4300249082006260 +:103BB000AF8400283042000F34420050A0820062DF +:103BC0003C02001F3442FF800E00062602028024C1 +:103BD000AF5000248FBF00148FB0001003E0000826 +:103BE00027BD00183C0208008C4200201040001D38 +:103BF0002745010090A300093C0200080342202150 +:103C000024020018546200033C0200080A000ED887 +:103C10002402000803422021240200161462000539 +:103C20002402001724020012A082003F0A000EE2C4 +:103C300094A700085462000694A700089362000548 +:103C40002403FFFE00431024A362000594A700088C +:103C500090A6001B8CA4000094A500060A000ACCC4 +:103C600000073C0003E000080000000027440100BA +:103C700094820008304500FF38A3008238A20084F7 +:103C80002C6300012C420001006218251060000620 +:103C9000240200839382002D1040000D00000000DC +:103CA0000A000B9B0000000014A2000524A2FF8064 +:103CB0008F4301043C02602003E00008AC43001481 +:103CC000304200FF2C420002104000032402002278 +:103CD0000A000E3C0000000014A2000300000000D7 +:103CE0000A000EA9000000000A000EC70000000034 +:103CF0009363007E9362007A144300090000202140 +:103D00009362000024030050304200FF144300047B +:103D1000240400019362007E24420001A362007E1D +:103D200003E00008008010218F4201F80440FFFEEC +:103D300024020002AF4401C0A34201C43C021000AF +:103D400003E00008AF4201F827BDFFE8AFBF001055 +:103D50009362003F2403000A304200FF14430046F0 +:103D6000000000008F6300548F62004C1062007DE1 +:103D7000036030219362000024030050304200FFB2 +:103D80001443002F000000008F4401403C02080053 +:103D90008C4200E02403FF800082102100431024A5 +:103DA000AF4200243C0208008C4200E08F650054C2 +:103DB0003C03000A008220213084007F034410214C +:103DC00000431021AC4501089762003C8F63004C12 +:103DD0003042FFFF0002104000621821AF63005C18 +:103DE0008F6300548F64004C9762003C006418237A +:103DF0003042FFFF00031843000210400043102A26 +:103E000010400006000000008F6200548F63004CD9 +:103E1000004310230A000F58000210439762003C31 +:103E20003042FFFF00021040ACC2006424020001D7 +:103E3000A0C0007CA0C2008424020C80AF420024F9 +:103E40000E000F0A8F440140104000478FBF001042 +:103E50008F4301408F4201F80440FFFE240200021C +:103E6000AF4301C0A34201C43C021000AF4201F8BD +:103E70000A000FA88FBF00109362003F24030010B8 +:103E8000304200FF14430004000000008F44014052 +:103E90000A000F94000028219362003F24030016BB +:103EA000304200FF1443000424020014A362003FC8 +:103EB0000A000FA2000000008F62004C8F630050C8 +:103EC00000431023044100288FBF0010936200813B +:103ED00024420001A3620081936200812C4200040D +:103EE00014400010000000009362003F240300040F +:103EF000304200FF14430006000000008F440140E0 +:103F00008FBF0010240500930A0005A027BD0018EC +:103F10008F440140240500938FBF00100A00060F54 +:103F200027BD00188F4401400E0002500000000021 +:103F30008F6200542442FFFFAF6200548F62005032 +:103F40002442FFFFAF6200500E0002598F4401402F +:103F50008F4401408FBF0010240500040A00025E58 +:103F600027BD00188FBF001003E0000827BD001810 +:103F70008F4201889363007E00021402304400FFE8 +:103F8000306300FF1464000D0000000093620080A5 +:103F9000304200FF1044000900000000A3640080CC +:103FA0009362000024030050304200FF14430004D9 +:103FB000000000000A0006D78F440180A36400803F +:103FC00003E000080000000027BDFFE8AFB00010CC +:103FD000AFBF00149362000524030030304200306C +:103FE00014430089008080213C0208008C4200209C +:103FF00010400080020020210E0004930000000009 +:104000008F850020ACB000009362003E9363003FB8 +:10401000304200FF00021200306300FF0043102511 +:10402000ACA2000493620082000216000002160394 +:1040300004410005000000003C0308008C630048B8 +:104040000A000FE6000000009362003E304200408C +:10405000144000030000182193620081304300FFE8 +:104060009362008200031E00304200FF0002140031 +:1040700000621825ACA300088F620040ACA2000CBF +:104080008F620048ACA200108F62004CACA20014FA +:104090008F6200508F63004C0043102304410003E3 +:1040A000000000000A000FFA8F62004C8F6200507F +:1040B000ACA200183C02080094424B5E3C03C00BCB +:1040C00000002021004310250E0004B8ACA2001C03 +:1040D0008F6200548F840020AC8200008F620058F1 +:1040E000AC8200048F62005CAC8200088F620060CA +:1040F0008F43007400431021AC82000C8F62006477 +:10410000AC820010976300689762006A00031C008D +:104110003042FFFF00621825AC83001493620082D6 +:1041200024030080304200FF14430003000000001D +:104130000A00102EAC8000188F63000C24020001CE +:104140001062000E2402FFFF9362003E30420040E6 +:104150001440000A2402FFFF8F63000C8F4200749A +:10416000006218233C020800006210241440000280 +:10417000000028210060282100051043AC820018AF +:104180003C02080094424B5E3C03C00C000020211E +:10419000004310258F8300200E0004B8AC62001C81 +:1041A0008F6200188F8300203C05080094A54B5EA9 +:1041B00024040001AC620000AC6000048F66006C57 +:1041C0003C02400D00A22825AC6600088F6200DC8E +:1041D000AC62000CAC600010936200050002160097 +:1041E000AC620014AC6000180E0004B8AC65001C92 +:1041F000020020218FBF00148FB00010A3600005C3 +:104200000A00042127BD00188FBF00148FB00010D2 +:1042100003E0000827BD00189742007C30C600FF6D +:10422000A08600843047FFFF2402000514C2000B63 +:1042300024E3465090A201122C42000710400007D0 +:1042400024E30A0090A30112240200140062100467 +:1042500000E210210A0010663047FFFF3067FFFFC1 +:1042600003E00008A4870014AC87004C8CA201086E +:104270000080402100A0482100E2102330C600FF4A +:104280001840000393AA001324E2FFFCACA201082B +:1042900030C2000110400008000000008D020050F4 +:1042A00000E2102304410013240600058D0200548F +:1042B00010E20010000000008D02005414E2001A09 +:1042C000000000003C0208008C4200D83042002070 +:1042D0001040000A2402000191030078910200833B +:1042E000144300062402000101002021012028219E +:1042F000240600040A00105400000000A1000084FD +:1043000011400009A50200148F4301008F4201F8FB +:104310000440FFFE24020002AF4301C0A34201C4D7 +:104320003C021000AF4201F803E00008000000006A +:1043300027BDFFE88FA90028AFBF001000804021F3 +:1043400000E918231860007330C600FFA080007CCD +:10435000A08000818CA2010800E210230440004DDF +:10436000000000008C8200509483003C8C84006428 +:10437000004748233063FFFF012318210083202BCF +:1043800010800004000000008D0200640A0010B7D5 +:1043900000E210219502003C3042FFFF0122102173 +:1043A00000E21021AD02005C9502003C8D03005C30 +:1043B0003042FFFF0002104000E210210043102BAA +:1043C00010400003000000000A0010C68D02005CCF +:1043D0009502003C3042FFFF0002104000E2102135 +:1043E000AD02005CA1000084AD07004C8CA2010866 +:1043F00000E210231840000224E2FFFCACA20108F6 +:1044000030C200011040000A000000008D02005080 +:1044100000E2102304410004010020218D02005419 +:1044200014E20003000000000A0010E82406000562 +:104430008D02005414E200478FBF00103C020800B8 +:104440008C4200D8304200201040000A24020001B3 +:1044500091030078910200831443000624020001B6 +:1044600001002021240600048FBF00100A00105410 +:1044700027BD0018A1000084A50200148F4301008D +:104480008F4201F80440FFFE240200020A00110DD1 +:10449000000000008C82005C004910230043102BB8 +:1044A00054400001AC87005C9502003C3042FFFFA5 +:1044B0000062102B14400007240200029502003C09 +:1044C0008D03005C3042FFFF00621821AD03005CE9 +:1044D00024020002AD07004CA10200840E000F0A66 +:1044E0008F4401001040001B8FBF00108F4301005C +:1044F0008F4201F80440FFFE24020002AF4301C0D6 +:10450000A34201C43C021000AF4201F80A0011238B +:104510008FBF001030C200101040000E8FBF00107F +:104520008C83005C9482003C006918233042FFFFBA +:10453000006218213C023FFF3444FFFF0083102B30 +:10454000544000010080182101231021AD02005CBD +:104550008FBF001003E0000827BD001827BDFFE84B +:104560008FAA0028AFBF00100080402100EA482336 +:104570001920002130C600FF8C83005C8C8200640F +:10458000006A18230043102B5040001000691821C6 +:1045900094A2011001221021A4A2011094A20110E2 +:1045A0003042FFFF0043102B1440000A3C023FFF43 +:1045B00094A2011000431023A4A201109482003C95 +:1045C0003042FFFF0A00114200621821A4A001102E +:1045D0003C023FFF3444FFFF0083102B5440000196 +:1045E0000080182100671021AD02005CA100007C52 +:1045F0000A00118AA100008130C200101040003C66 +:10460000000000008C820050004A1023184000383F +:10461000000000009082007C24420001A082007C07 +:104620009082007C3C0308008C630024304200FF31 +:104630000043102B1440005C8FBF00108CA20108B7 +:1046400000E2102318400058000000008C83005442 +:104650009482003C006A18233042FFFF0003184395 +:10466000000210400043102A104000050000000026 +:104670008C820054004A10230A001171000210437A +:104680009482003C3042FFFF00021040AD02006403 +:104690009502003C8D0400649503003C3042FFFF0E +:1046A00000021040008220213063FFFF00831821A8 +:1046B00001431021AD02005C8D020054ACA2010840 +:1046C00024020002A10200840E000F0A8F440100A0 +:1046D000104000358FBF00108F4301008F4201F85A +:1046E0000440FFFE240200020A0011B30000000093 +:1046F000AD07004C8CA2010800E210231840000214 +:1047000024E2FFFCACA2010830C200011040000A04 +:10471000000000008D02005000E21023044100045C +:10472000010020218D02005414E20003000000006B +:104730000A0011AA240600058D02005414E2001A92 +:104740008FBF00103C0208008C4200D8304200208D +:104750001040000A240200019103007891020083B6 +:104760001443000624020001010020212406000455 +:104770008FBF00100A00105427BD0018A10000844C +:10478000A50200148F4301008F4201F80440FFFE90 +:1047900024020002AF4301C0A34201C43C02100046 +:1047A000AF4201F88FBF001003E0000827BD0018DA +:1047B0008FAA00108C8200500080402130C600FF7C +:1047C000004A102300A048211840000700E01821EB +:1047D00024020001A0800084A0A00112A482001481 +:1047E0000A001125AFAA0010A0800081AD07004C7F +:1047F0008CA2010800E210231840000224E2FFFC12 +:10480000ACA2010830C20001104000080000000006 +:104810008D0200500062102304410013240600059D +:104820008D02005410620010000000008D02005440 +:1048300014620011000000003C0208008C4200D805 +:10484000304200201040000A240200019103007849 +:10485000910200831443000624020001010020217C +:1048600001202821240600040A0010540000000042 +:10487000A1000084A502001403E00008000000006D +:1048800027BDFFE0AFBF0018274201009046000A95 +:104890008C4800148C8B004C9082008430C900FF3F +:1048A00001681823304A00FF1C60001A2D460006DC +:1048B000240200010142100410C00016304300031E +:1048C000012030210100382114600007304C000C19 +:1048D00015800009304200301440000B8FBF0018D3 +:1048E0000A001214000000000E001125AFAB0010EA +:1048F0000A0012148FBF00180E00109AAFAB001000 +:104900000A0012148FBF0018AFAB00100E0011BACE +:10491000AFAA00148FBF001803E0000827BD0020D5 +:1049200024020003A08200848C82005403E000086B +:10493000ACA201083C0200080342182190620081E9 +:10494000240600433C07601924420001A062008154 +:10495000906300813C0208008C4200C0306300FF7D +:10496000146200102403FF803C0208008C4200E027 +:104970000082102100431024AF4200243C020800B2 +:104980008C4200E03C03000A008210213042007F8C +:104990000342102100431021944500D40A000AF17B +:1049A00030A5FFFF03E000080000000027BDFFE086 +:1049B000AFBF0018AFB10014AFB000108F4201803C +:1049C0000080802100A088210E00121B00402021C1 +:1049D000A20000848E0200548FBF00188FB0001018 +:1049E000AE2201088FB1001403E0000827BD0020AB +:1049F00027BDFFE03C020008AFB00010AFBF0018B9 +:104A0000AFB10014034280218F5101409203008412 +:104A10008E0400508E02004C14820040306600FF6D +:104A20003C0208008C4200E02403FF800222102197 +:104A300000431024AF4200243C0208008C4200E0F6 +:104A40009744007C92050081022210213042007FB1 +:104A5000034218213C02000A0062182114A0000B36 +:104A60003084FFFF2402000554C20014248205DCB8 +:104A70009062011224420001A062011224020C8003 +:104A8000AF4200240A00127324020005A060011244 +:104A90002402000514C20009248205DC9202008170 +:104AA0002C4200075040000524820A009203008136 +:104AB0002402001400621004008210213044FFFF21 +:104AC000A60400140E00121B022020219602003CB6 +:104AD0008E03004C022020213042FFFF00021040D4 +:104AE000006218210E000250AE03005C9202007DAD +:104AF00002202021344200400E000259A202007D13 +:104B00008F4201F80440FFFE24020002AF5101C0B1 +:104B1000A34201C43C021000AF4201F88FBF00184D +:104B20008FB100148FB0001003E0000827BD0020F3 +:104B300008000ACC08000B1408000B9808000BE4CE +:104B400008000C200A0000280000000000000000FF +:104B50000000000D6370362E322E3300000000007E +:104B60000602030400000000000000000000000036 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000002005 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000001F4 +:104BC0000000002B000000000000000400030D4066 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000001000000300000000B2 +:104BF0000000000D0000000D3C020800244258A4F3 +:104C00003C03080024635F70AC4000000043202B8D +:104C10001480FFFD244200043C1D080037BD7FFCCA +:104C200003A0F0213C100800261000A03C1C080046 +:104C3000279C58A40E0001AC000000000000000DED +:104C400027BDFFE83C096018AFBF00108D2C500055 +:104C5000240DFF7F24080031018D5824356A380C5B +:104C600024070C003C1A8000AD2A50003C04800A46 +:104C7000AF4800083C1B8008AF4700240E00091510 +:104C8000AF8400100E0008D8000000000E000825B8 +:104C9000000000000E001252000000003C046016EC +:104CA0008C8500003C06FFFF3C02535300A61824ED +:104CB0001062004734867C0094C201F2A780002C69 +:104CC00010400003A78000CC38581E1EA798002C67 +:104CD00094C201F810400004978300CC38591E1E7E +:104CE000A79900CC978300CC2C7F006753E000018C +:104CF000240300669784002C2C82040114400002D7 +:104D000000602821240404003C0760008CE904387A +:104D10002403103C3128FFFF1103001F30B9FFFFAF +:104D200057200010A38000CE24020050A38200CEA2 +:104D3000939F00CE53E0000FA78500CCA78000CC46 +:104D4000978500CC8FBF0010A780002CA78000346F +:104D5000A78000E63C010800AC25008003E00008C5 +:104D600027BD0018939F00CE57E0FFF5A78000CC29 +:104D7000A78500CC978500CC8FBF0010A784002C9E +:104D8000A7800034A78000E63C010800AC25008025 +:104D900003E0000827BD0018A38000CE8CCB003CA8 +:104DA000316A00011140000E0000000030A7FFFF33 +:104DB00010E0FFDE240200508CCC00C831860001D8 +:104DC00014C0FFDC939F00CE0A00007A2402005139 +:104DD0008C8F00043C0E60000A00005D01EE302163 +:104DE0008CEF0808240D5708000F740211CD000441 +:104DF00030B8FFFF240500660A00007B240404008D +:104E00001700FFCC939F00CE0A00007A24020050C6 +:104E10008F8600103089FFFF000939408CC30010D5 +:104E20003C08005000E82025AF4300388CC5001432 +:104E300027420400AF82001CAF45003CAF44003065 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60008F4B0000316A00201140FFFD0000000060 +:104E700003E00008000000008F840010948A001AEC +:104E80008C8700243149FFFF000940C000E8302131 +:104E9000AF46003C8C8500248F43003C00A31023C8 +:104EA00018400029000000008C8B002025620001C2 +:104EB0003C0D005035AC0008AF420038AF4C00301C +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE0008F4F000031EE002011C0FFFD00000000D8 +:104EF0008F4A04003C080020AC8A00108F4904044B +:104F0000AC890014AF4800300000000094860018FF +:104F10009487001C00C71821A48300189485001AE8 +:104F200024A20001A482001A9498001A9499001EE9 +:104F3000133800030000000003E000080000000038 +:104F400003E00008A480001A8C8200200A0000DC24 +:104F50003C0D00500A0000CD000000003C0308009A +:104F60008C6300208F82001827BDFFE810620008C4 +:104F7000AFBF00100E000104AF8300183C0308000F +:104F80008C63002024040001106400048F89001049 +:104F90008FBF001003E0000827BD00188FBF00106E +:104FA0003C076012A520000A9528000A34E500108D +:104FB00027BD00183106FFFF03E00008ACA60090F3 +:104FC0003C0208008C42002027BDFFC8AFBF003460 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D +:104FE000AFB40020AFB3001CAFB20018AFB10014D3 +:104FF00010400050AFB000108F840010948600065F +:105000009483000A00C3282330B6FFFF12C0004A71 +:105010008FBF003494890018948A000A012A402323 +:105020003102FFFF02C2382B14E0000202C020212F +:10503000004020212C8C0005158000020080A0215A +:10504000241400040E0000B3028020218F8700107A +:1050500002809821AF80001494ED000A028088211C +:105060001280004E31B2FFFF3C1770003C1540002B +:105070003C1E60008F8F001C8DEE000001D71824AD +:10508000507500500220202102A3802B160000350D +:105090003C182000507800470220202124100001F5 +:1050A0008F83001414600039029158230230F823D2 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D +:1050C0008F8700103C110020AF510030000000001D +:1050D00094E6000A3C1E601237D5001002662821B3 +:1050E000A4E5000A94E2000A94F2000A94F400187D +:1050F0003057FFFF1292003BAEB700908CED0014CA +:105100008CE400100013714001AE4021000E5FC31B +:10511000010E502B008B4821012A1821ACE8001405 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE +:105130008F8400108FBF00348FBE00308FB7002CDB +:105140008FB600288FB500248FB400208FB3001CC9 +:105150008FB200188FB100148FB0001003E0000868 +:1051600027BD0038107E001B000000001477FFCC24 +:10517000241000010E00159B000000008F83001416 +:105180001060FFCB0230F823029158238F87001064 +:10519000017020210A0001973093FFFF8F830014D4 +:1051A0001460FFCB3C110020AF5100300A000163B6 +:1051B000000000000E00077D024028210A00015770 +:1051C000004080210E00033A024028210A000157C6 +:1051D000004080210E001463022020210A000157A4 +:1051E000004080210E0000CD000000000A0001797F +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 +:105200000E00003F000000003C028000345000709F +:105210000A0001BA8E0600008F4F000039EE00012F +:1052200031C20001104000248F8600A88E070000C4 +:105230003C0C08008D8C003C3C0908008D2900388E +:1052400000E66823018D28210000502100AD302B9D +:10525000012A4021010620213C010800AC25003C28 +:10526000AF8700A83C010800AC2400380E000106FE +:10527000000000003C0308008C6300701060FFE633 +:10528000006020213C0508008CA500683C06080051 +:105290008CC6006C0E00152A000000003C010800BE +:1052A000AC2000708F4F000039EE000131C20001C8 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 +:1052C0003C0508008CA5003C3C0408008C84003898 +:1052D000014B482300A938210082182100E9402B06 +:1052E000006810213C010800AC27003C3C0108008C +:1052F000AC2200388F5F01002419FF0024180C0035 +:1053000003F9202410980012AF840000AF4400205D +:10531000936D0000240C002031A600FF10CC001279 +:10532000240E005010CE00043C194000AF59013843 +:105330000A0001B3000000000E0011C800000000C8 +:105340003C194000AF5901380A0001B300000000C9 +:105350000E00011F000000003C194000AF59013849 +:105360000A0001B3000000008F58010000802821CE +:10537000330F00FF01E020210E0002F1AF8F000487 +:105380003C194000AF5901380A0001B30000000089 +:1053900000A4102B2403000110400009000030215C +:1053A0000005284000A4102B04A0000300031840AF +:1053B0005440FFFC000528405060000A0004182BF0 +:1053C0000085382B54E000040003184200C3302548 +:1053D00000852023000318421460FFF900052842CD +:1053E0000004182B03E0000800C310218F4201B80D +:1053F0000440FFFE00000000AF4401803C031000A9 +:1054000024040040AF450184A3440188A3460189D8 +:10541000A747018A03E00008AF4301B83084FFFFCB +:105420000080382130A5FFFF000020210A00022A59 +:10543000240600803087FFFF8CA40000240600387B +:105440000A00022A000028218F8300388F8600304E +:105450001066000B008040213C07080024E75A1822 +:10546000000328C000A710218C4400002463000121 +:10547000108800053063000F5466FFFA000328C04F +:1054800003E00008000010213C07080024E75A1C34 +:1054900000A7302103E000088CC200003C0390000C +:1054A0003462000100822025AF4400208F45002097 +:1054B00004A0FFFE0000000003E000080000000060 +:1054C0003C038000346200010082202503E00008D4 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3 +:1054E000AFB00010AFBF00181220001300A0802141 +:1054F0008CA2000024040002240601401040000F8A +:10550000004028210E000C5C00000000000010216B +:10551000AE000000022038218FBF00188FB10014A8 +:105520008FB0001000402021000028210000302111 +:105530000A00022A27BD00208CA200000220382188 +:105540008FBF00188FB100148FB0001000402021D1 +:1055500000002821000030210A00022A27BD002077 +:1055600000A010213087FFFF8CA500048C440000B0 +:105570000A00022A2406000627BDFFE0AFB0001093 +:10558000AFBF0018AFB100149363003E00808021CC +:105590000080282130620040000020211040000FD0 +:1055A0008E1100000E000851022020219367000098 +:1055B0002404005030E500FF50A400128E0F0000BC +:1055C000022020218FBF00188FB100148FB000106F +:1055D000A762013C0A00091127BD00200E000287C6 +:1055E000000000000E0008510220202193670000F7 +:1055F0002404005030E500FF14A4FFF20220202113 +:105600008E0F00003C1008008E1000503C0D000C66 +:10561000240BFF8001F05021314E007F01DA602120 +:10562000018D4021014B4824AF4900280220202150 +:105630008FBF00188FB100148FB00010A50200D6E4 +:1056400027BD00200A000911AF8800D027BDFFE068 +:10565000AFBF0018AFB10014AFB0001093660001E7 +:10566000008080210E00025630D1000493640005B2 +:10567000001029C2A765000034830040A363000521 +:105680000E00025F020020210E00091302002021FB +:1056900024020001AF62000C02002821A762001062 +:1056A00024040002A762001224060140A76200142D +:1056B0000E000C5CA76200161620000F8FBF0018AA +:1056C000978C00343C0B08008D6B00782588FFFF19 +:1056D0003109FFFF256A0001012A382B10E000067E +:1056E000A78800343C0F6006240E001635ED00102C +:1056F000ADAE00508FBF00188FB100148FB00010F6 +:1057000003E0000827BD002027BDFFE0AFB1001473 +:10571000AFBF0018AFB0001000A088211080000AB1 +:105720003C03600024020080108200120000000090 +:105730000000000D8FBF00188FB100148FB0001053 +:1057400003E0000827BD00208C682BF80500FFFE51 +:1057500000000000AC712BC08FBF00188FB1001487 +:105760008FB000103C09100027BD002003E00008A6 +:10577000AC692BF80E00025600A0202193650005AD +:10578000022020210E00025F30B000FF2403003E03 +:105790001603FFE7000000008F4401780480FFFE3D +:1057A000240700073C061000AF51014002202021D1 +:1057B000A34701448FBF00188FB100148FB00010B1 +:1057C000AF4601780A0002C227BD002027BDFFE8CE +:1057D000AFBF0014AFB000108F50002000000000D9 +:1057E0000E000913AF440020AF5000208FBF0014FB +:1057F0008FB0001003E0000827BD00183084FFFFC1 +:10580000008038212406003500A020210A00022A49 +:10581000000028213084FFFF008038212406003654 +:1058200000A020210A00022A0000282127BDFFD065 +:10583000AFB3001C3093FFFFAFB50024AFB2001828 +:10584000AFBF0028AFB40020AFB10014AFB000105C +:1058500030B5FFFF12600027000090218F90001CE0 +:105860008E0300003C0680002402004000033E023C +:1058700000032C0230E4007F006688241482001D9F +:1058800030A500FF8F8300282C68000A510000100B +:105890008F910014000358803C0C0800258C56940E +:1058A000016C50218D49000001200008000000001B +:1058B00002B210213045FFFF0E000236240400849E +:1058C000162000028F90001CAF8000288F910014DA +:1058D000260C002026430001018080213072FFFF4A +:1058E00016200004AF8C001C0253502B1540FFDC27 +:1058F00000000000024010218FBF00288FB5002457 +:105900008FB400208FB3001C8FB200188FB1001429 +:105910008FB0001003E0000827BD0030240E0034D3 +:1059200014AE00F9000000009203000E241F168040 +:105930003C07000CA36300219202000D0347C8211D +:105940003C066000A3620020961100123C0A7FFF13 +:10595000354CFFFFA771003C960B00102403000597 +:105960003168FFFFAF6800848E05001CAF5F002820 +:105970008F3800008CC4444803057826008F3021FE +:10598000AF66004C8F69004C24CE00013C057F00BF +:10599000AF6900508F740050AF740054AF66007050 +:1059A000AF6E00588F6D005824140050AF6D005C2E +:1059B000A3600023AF6C0064A36300378E02001461 +:1059C000AF6200488F710048AF7100248E0B001841 +:1059D000AF6B006C9208000CA3680036937F003E0A +:1059E00037F90020A379003E8F78007403058024E6 +:1059F000360F4000AF6F007493640000308900FFE1 +:105A0000513402452404FF803C04080024845A9841 +:105A10000E00028D000000003C1008008E105A9805 +:105A20000E00025602002021240600042407000173 +:105A3000A366007D020020210E00025FA36700051F +:105A40008F5F017807E0FFFE240B0002AF5001409A +:105A5000A34B01448F90001C3C081000AF48017814 +:105A60000A000362AF8000282CAD003751A0FF98D8 +:105A70008F9100140005A0803C180800271856BC20 +:105A8000029878218DEE000001C00008000000009F +:105A90002418000614B80011000000003C0808009B +:105AA0008D085A9824040005AF4800208E1F001866 +:105AB000AF7F00188F79004CAF79001C8F650050C4 +:105AC000122000C0AF6500700A000362AF84002896 +:105AD0002406000710A60083240300063C050800E6 +:105AE00024A55A980E000264240400818F90001CA3 +:105AF0000011102B0A000362AF8200282407000463 +:105B000014A7FFF6240500503C1808008F185A9877 +:105B1000AF5800208E0F0008AF6F00408E090008BC +:105B2000AF6900448E14000CAF7400488E0E001054 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D +:105B5000AF64005893630000306B00FF116501D8FB +:105B6000000000008F7400488F6900400289702394 +:105B700005C000042404008C1620FFDE240200036C +:105B8000240400823C05080024A55A980E000287D0 +:105B9000000000008F90001C000010210A0003622A +:105BA000AF820028240F000514AFFFCC240520008D +:105BB0003C0708008CE75A98AF4700208E06000487 +:105BC000AF66005C9208000824100008A36800215A +:105BD0008F9F001C93F90009A37900208F86001C79 +:105BE00090D8000A330400FF10900011000000005C +:105BF0002885000914A0006924020002240A00205C +:105C0000108A000B34058000288D002115A00008A3 +:105C100024054000240E0040108E00053C050001C4 +:105C200024140080109400023C050002240540006A +:105C30008F7800743C19FF00031980240205782531 +:105C4000AF6F007490C4000BA36400818F84001CAC +:105C50009489000C11200192000000009490000C27 +:105C60002406FFBF24050004A770003C908F000E9F +:105C7000A36F003E8F84001C9089000FA369003F32 +:105C80008F8B001C8D6E00108F54007401D468231C +:105C9000AF6D00608D6A0014AF6A0064956C0018E7 +:105CA000A76C00689563001AA763006A8D62001CE8 +:105CB000AF62006C9167000EA367003E9368003EE0 +:105CC0000106F8241220014BA37F003E8F90001C98 +:105CD0000A000362AF8500282407002214A7FF7F73 +:105CE000240300073C0B08008D6B5A981220000C0F +:105CF000AF4B00200A000362AF830028240C00335E +:105D000010AC0014240A00283C05080024A55A9869 +:105D10000E00023C240400810A0003EB8F90001C5B +:105D20003C04080024845A980E00028D00000000F4 +:105D30009363000024110050306200FF10510135C0 +:105D4000000000008F90001C000018210A00036270 +:105D5000AF8300283C0D08008DAD5A9824040081C3 +:105D6000AF4D00203C05080024A55A980E00023CC7 +:105D7000A36A00348F90001C240200090A00036209 +:105D8000AF82002802B288213225FFFF0E000236C2 +:105D9000240400840A0003628F90001C1082FFA478 +:105DA00024050400288B000311600170240C0004FA +:105DB000240300015483FF9E240540000A00043B95 +:105DC000240501003C04080024845A988F62004C8A +:105DD0000E00028D8F6300508F90001C0000202168 +:105DE0000A000362AF8400288E1000042404008A95 +:105DF000AF50002093790005333800021700015F8F +:105E0000020028219368002302002821311F00206E +:105E100017E0015A2404008D9367003F2406001206 +:105E200030E200FF10460155240400810E000256A6 +:105E30000200202193630023240500040200202196 +:105E4000346B0042A36B00230E00025FA365007D4C +:105E50008F4401780480FFFE240A0002AF50014005 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9 +:105E70000A0003EC0011102B8E1000042404008A89 +:105E8000AF500020936E000531CD000215A0001622 +:105E900002002821936F003F2414000402002821EF +:105EA00031E900FF11340010240400810E00025675 +:105EB000020020219362002324080012241FFFFE09 +:105EC00034460020A3660023A368003F93790005B1 +:105ED00002002021033FC0240E00025FA3780005CA +:105EE00002002821000020210E00033400000000E1 +:105EF0000A0003EB8F90001C8E1000043C03000886 +:105F00000343A021AF500020928B000024050050D5 +:105F1000316400FF10850161240700880200202100 +:105F2000000028210E00022A2406000E928D000097 +:105F3000240EFF800200282101AE8025A2900000DF +:105F4000240400040E000C5C240600300A0003EB5D +:105F50008F90001C8E0800043C14080026945A9868 +:105F60003C010800AC285A98AF480020921F00035B +:105F700033F9000413200002240200122402000658 +:105F8000A362003F920B001B2404FFC03165003F59 +:105F900000A43825A367003E9206000330C200012A +:105FA00014400132000000008E020008AE8200089A +:105FB0003C0208008C425AA010400131000249C244 +:105FC000A76900088E14000C240C0001240300149F +:105FD000AF74002C8E0E0010AF6E0030960D0016C0 +:105FE000A76D0038960A0014A76A003AAF6C000C3F +:105FF000A76C0010A76C0012A76C0014A76C001609 +:1060000012200136A3630034920F000331F0000226 +:106010002E1100018F90001C262200080A00036246 +:10602000AF8200288E0400043C0E0008034E30218D +:10603000AF4400208E05000890CD0000240C0050D5 +:1060400031AA00FF114C00862407008824060009AD +:106050000E00022A000000000A0003EB8F90001CD3 +:106060008E04001C0E00024100000000104000F4ED +:10607000004050218F89001C240700890140202105 +:106080008D25001C240600010E00022A00000000DD +:106090000A0003EB8F90001C960D00023C140800D0 +:1060A00026945A9831AA0004514000B83C10600070 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA +:1060C000920700102408001430E200FF144800D6A4 +:1060D00000000000960B00023163000114600165AE +:1060E000000000008E020004AE8200083C1408008C +:1060F0008E945AA01280015B000000008F7400741F +:106100003C0380002404000102835825AF6B007417 +:10611000A3600005AF64000C3C0708008CE75AA0A0 +:106120008F86001CA7640010000711C2A76400122C +:10613000A7640014A7640016A76200088CC80008B2 +:1061400024040002AF68002C8CC5000CAF65003041 +:1061500090DF0010A37F00348F99001C9330001152 +:10616000A37000358F98001C930F0012A36F0036A8 +:106170008F89001C912E0013A36E00378F90001C96 +:10618000960D0014A76D0038960A0016A76A003A0B +:106190008E0C0018AF6C00245620FDCCAF84002874 +:1061A0003C05080024A55A980E0002640000202136 +:1061B0008F90001C0A0004A7000020218E1000040C +:1061C00024070081AF500020936900233134001070 +:1061D000128000170000000002002021000028218A +:1061E0002406001F0E00022A000000000A0003EB34 +:1061F0008F90001C3C05080024A55A980E000287C9 +:10620000240400828F90001C000028210A000362F1 +:10621000AF8500283C0408008C845A980E0014E8CE +:10622000000000008F90001C0A000482000018216A +:106230000E00025602002021937800230200202144 +:10624000370F00100E00025FA36F002300003821FB +:1062500002002021000028210A0005A82406001FB2 +:10626000920F000C31E90001112000030000000032 +:106270009618000EA4D8002C921F000C33F90002CF +:1062800013200005000038218E0200149608001229 +:10629000ACC2001CA4C8001A0A0005432406000969 +:1062A0003C05080024A55A980E0002872404008BA0 +:1062B0008F90001C0011282B0A000362AF85002874 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3 +:1062D0008DAD0050240CFF803C02000C014D1821B4 +:1062E000006C2024AF4400288E070014306B007F20 +:1062F000017A282100A2C821AF2700D88E060014F9 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD +:106310000A000408AF3F01083C0508008CA55A9804 +:106320003C1908008F39005024CCFFFE00B9C02171 +:1063300003047824AF4F00283C1408008E945A9828 +:106340003C0908008D2900500289702131CD007F61 +:1063500001BA502101478021AE0600D8AF9000D08D +:10636000AE0000DC0A0003B1AE0C0108548CFE3014 +:10637000240540000A00043B240510000E00032EF3 +:10638000000000000A0003EB8F90001C8E0F442CCD +:106390003C186C62370979703C010800AC205A98AF +:1063A00015E9000824050140979F00349786002CCA +:1063B0000280282103E6C82B132000112404009238 +:1063C000240501400E000C7A240400023C01080060 +:1063D000AC225A98AF4200203C0508008CA55A9880 +:1063E00010A00005240400830E00084500000000F2 +:1063F00010400009240400833C05080024A55A9895 +:106400000E000264000000008F90001C0011202B81 +:106410000A000362AF8400280E0008490000000053 +:106420000A00055F8F90001C0E00084D0000000060 +:106430003C05080024A55A980A00062F2404008B66 +:10644000240400040E000C7A240500301440002AB5 +:10645000004050218F89001C240700830140202127 +:106460008D25001C0A000551240600018E04000839 +:106470000E000241000000000A00051BAE82000869 +:106480003C05080024A55A980E00023C240400870D +:106490008F90001C0A0005360011102B8F830038E6 +:1064A0008F8600301066FE9D000038213C070800F2 +:1064B00024E75A1C000320C0008728218CAC000070 +:1064C00011900061246A00013143000F5466FFFA05 +:1064D000000320C00A0004F6000038213C05080033 +:1064E00024A55A980E000287240400828F90001C75 +:1064F0000A000536000010213C0B0008034B202148 +:106500002403005024070001AF420020A0830000B4 +:10651000A08700018F82001C90480004A08800180A +:106520008F85001C90A60005A08600198F9F001C77 +:1065300093F90006A099001A8F90001C921800078A +:10654000A098001B8F94001C928F0008A08F001C45 +:106550008F89001C912E0009A08E001D8F8D001CBC +:1065600091AC000AA08C001E8F8B001C3C0C080014 +:10657000258C5A1C9163000B3C0B0800256B5A18A4 +:10658000A083001F8F87001C90E8000CA0880020CB +:106590008F82001C9045000D24024646A0850021F4 +:1065A0008F86001C90DF000EA09F00228F99001C98 +:1065B0009330000FA09000238F98001C93140010BC +:1065C000A09400248F8F001C91E90011A089002560 +:1065D0008F89001C8F8E00308F900038952D00140D +:1065E000000E18C025C80001A48D002895270016AC +:1065F000006C3021006BC821A487002A9525001863 +:106600003108000FA485002CA482002E8D3F001CB1 +:10661000ACCA0000AF88003011100006AF3F000088 +:10662000000038218D25001C014020210A00055161 +:1066300024060001250C00013184000F00003821E0 +:106640000A0006B8AF8400383C07080024E75A184F +:106650000087302100003821ACA000000A0004F6B9 +:10666000ACC000003C05080024A55A980A00062F7B +:10667000240400878E0400040E0002410000000084 +:106680000A00056AAE8200083084FFFF30C600FFB2 +:106690008F4201B80440FFFE00064400010430258B +:1066A0003C07200000C720253C031000AF400180BC +:1066B000AF450184AF44018803E00008AF4301B84F +:1066C00027BDFFE8AFB00010AFBF00143C0760006B +:1066D000240600021080000600A080210010102B6C +:1066E0008FBF00148FB0001003E0000827BD001812 +:1066F0003C09600EAD2000348CE5201C8F82001C0C +:106700002408FFFC00A81824ACE3201C0E0006D1CE +:106710008C45000C0010102B8FBF00148FB00010A0 +:1067200003E0000827BD00183C02600E344701005A +:1067300024090018274A040000000000000000009F +:10674000000000003C06005034C30200AF44003893 +:10675000AF45003CAF430030014018218F4B000093 +:10676000316800201100FFFD2406007F2408FFFF90 +:106770008C6C000024C6FFFF24630004ACEC000016 +:1067800014C8FFFB24E70004000000000000000024 +:10679000000000003C0F0020AF4F00300000000060 +:1067A00024AD020001A5702B2529FFFF008E2021BA +:1067B0001520FFE101A0282103E0000800000000EF +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D +:1067D0003C05600E8CA20034008088211440000625 +:1067E0003C0460008C87201C2408FFFC00E8302457 +:1067F00034C30001AC83201C8F8B001C24090001D2 +:10680000ACA90034956900028D6500148D70000CF0 +:106810002D2400818D6700048D660008108000071C +:106820008D6A00102D2C00041580000E30CE00075C +:10683000312D000311A0000B000000002404008B88 +:10684000020028210E0006D1240600030011102B9F +:106850008FBF00188FB100148FB0001003E0000844 +:1068600027BD002015C0FFF62404008B3C03002048 +:10687000AF4300300000000024020001AF8200148A +:106880000000000000000000000000003C1F01505C +:10689000013FC825253800033C0F600EAF47003884 +:1068A00000181882AF46003C35E8003CAF59003074 +:1068B000274704008F4400003086002010C0FFFDF1 +:1068C00000000000106000082466FFFF2403FFFFA3 +:1068D0008CEB000024C6FFFF24E70004AD0B000092 +:1068E00014C3FFFB250800043C08600EAD09003806 +:1068F0000000000000000000000000003C07002035 +:10690000AF470030000000000E0006F901402021D2 +:1069100002002821000020210E0006D124060003D9 +:106920000011102B8FBF00188FB100148FB0001012 +:1069300003E0000827BD002027BDFFE0AFB200182C +:106940003092FFFFAFB10014AFBF001CAFB000101A +:106950001640000D000088210A0007AA022010211D +:1069600024050001508500278CE5000C0000000D77 +:10697000262300013071FFFF24E200200232382B71 +:1069800010E00019AF82001C8F8200141440001622 +:106990008F87001C3C0670003C0320008CE5000043 +:1069A00000A62024148300108F84003C00054402BC +:1069B0003C09800000A980241480FFE9310600FF13 +:1069C0002CCA00095140FFEB262300010006688015 +:1069D0003C0E080025CE579801AE60218D8B00003B +:1069E0000160000800000000022010218FBF001C81 +:1069F0008FB200188FB100148FB0001003E00008B0 +:106A000027BD00200E0006D1240400841600FFD804 +:106A10008F87001C0A00078BAF80003C90EF0002BC +:106A200000002021240600090E0006D1000F2E00D0 +:106A30008F87001C0010102B0A00078BAF82003CD0 +:106A4000020028210E0006DF240400018F87001CAD +:106A50000A00078BAF82003C020028210E0006DFEF +:106A6000000020210A0007C38F87001C0E00071FAB +:106A7000020020210A0007C38F87001C30B0FFFFEF +:106A8000001019C08F5801B80700FFFE3C1F2004FA +:106A90003C191000AF430180AF400184AF5F018813 +:106AA000AF5901B80A00078C262300013082FFFF8E +:106AB00014400003000018210004240224030010E5 +:106AC000308500FF14A000053087000F2466000801 +:106AD0000004220230C300FF3087000F14E00005DD +:106AE000308900032468000400042102310300FF00 +:106AF0003089000315200005388B0001246A00024C +:106B000000042082314300FF388B00013164000112 +:106B100010800002246C0001318300FF03E00008B4 +:106B200000601021308BFFFF000B394230E600FF80 +:106B30003C09080025295998000640800109602178 +:106B40008D8700003164001F240A0001008A1804A8 +:106B500030A500FF00E3202514A000020003102749 +:106B600000E22024240F000100CF700401096821F5 +:106B7000000E282714800005ADA400008F86000CAD +:106B800000A6102403E00008AF82000C8F88000CE0 +:106B900001C8102503E00008AF82000C3C06001F6E +:106BA0003C0360003084FFFF34C5FF8024020020D6 +:106BB000AC602008AC60200CAC602010AC652014E8 +:106BC000AC642018AC62200000000000000000004F +:106BD00003E000080000000027BDFFE82402FFFFDB +:106BE000AFBF0010AF82000C000020213C0608005F +:106BF00024C659982405FFFF248900010004408021 +:106C00003124FFFF010618212C87002014E0FFFA31 +:106C1000AC6500000E0008160000202124020001CF +:106C20003C04600024050020AC822018AC852000C4 +:106C3000000000000000000000000000244A0001E5 +:106C40003142FFFF2C46040014C0FFF78FBF001035 +:106C500003E0000827BD00188F8300082C620400A1 +:106C600003E00008384200018F830008246200011D +:106C700003E00008AF8200088F8300082462FFFF52 +:106C800003E00008AF82000827BDFFE0AFB10014A9 +:106C9000AFBF0018AFB000108F6B00303C06600033 +:106CA00000808821ACCB20088F6A002C3C02800039 +:106CB00024030008ACCA200C9769003A9768003892 +:106CC00000092C003107FFFF00A72025ACC42010CD +:106CD000ACC22014ACC32000000000000000000083 +:106CE000000000003C0360008C6D200031AC000807 +:106CF0001580FFF9000000008C6E201405C00020F4 +:106D0000000000000E0007DA8F84000C00024080B3 +:106D10003C09080025295998010938218CE4000014 +:106D20000E0007DA00028140020220213090FFFFAE +:106D3000020020210E0007F8000028213C0C8000F2 +:106D4000022C58253210FFFF3C116000240A00205D +:106D5000AE2B2014AE302018AE2A20000000000018 +:106D60000000000000000000020010218FBF00188A +:106D70008FB100148FB0001003E0000827BD002081 +:106D80008C6620143C02001F3443FF803C1FFFE848 +:106D900000C3C02437F9080003198021001079C20C +:106DA0003C0C8000022C582531F0FFFF3C116000A4 +:106DB000240A0020AE2B2014AE302018AE2A20006A +:106DC0000000000000000000000000000200102190 +:106DD0008FBF00188FB100148FB0001003E00008BF +:106DE00027BD002027BDFFE8AFB000103402FFFF31 +:106DF0003090FFFFAFBF00141202000602002021F6 +:106E00000E00081600000000020020210E0007F806 +:106E1000240500018F8400088FBF00148FB000107C +:106E20002483FFFF27BD001803E00008AF8300089C +:106E3000000439C230E6003F00043B42000718401E +:106E4000240210002CC4002024C8FFE0AF42002C14 +:106E5000246300011480000330A900FF00071840DC +:106E6000310600FF0003608024080001019A5821C8 +:106E70003C0A000E00C82804016A382111200005D0 +:106E8000000530278CE900000125302503E00008CB +:106E9000ACE600008CEE000001C6682403E00008A8 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D +:106EB0003C0460008C8508083403F00030A2F00028 +:106EC00050430006240200018C8708083404E000C7 +:106ED00030E6F00010C4001E24020002AF82004021 +:106EE0003C1060003C0A0200AE0A0814240910009D +:106EF0003C08000E8E03440003482021AF49002CBB +:106F0000240501200E000CC0000030218F830040BA +:106F1000106000043C021691240B0001106B000E5F +:106F20003C023D2C344F0090AE0F44088FBF00143C +:106F30008FB000103C0C6000240E10003C0D0200CD +:106F400027BD0018AD8E442003E00008AD8D081069 +:106F50000A0008E7AF8000403C0218DA344F009086 +:106F6000AE0F44088FBF00148FB000103C0C6000BF +:106F7000240E10003C0D020027BD0018AD8E4420E9 +:106F800003E00008AD8D08100A0008BB24050001CD +:106F90000A0008BB000028213C08080025085DA461 +:106FA0002404FFFF010018212402001E2442FFFFD9 +:106FB000AC6400000441FFFD246300043C070800AA +:106FC00024E75E208CE5FFFC2404001C240600015D +:106FD000308A001F0146480424840001000910275C +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB +:106FF0003C05666634A4616E3C06080024C65EE06B +:10700000AF840058AF88009C2404FFFF00C0182103 +:107010002402001F2442FFFFAC6400000441FFFD76 +:10702000246300043C0766663C05080024A55EA0B6 +:10703000AF86004834E6616EAF8600982404FFFFF7 +:1070400000A018212402000F2442FFFFAC640000BE +:107050000441FFFD246300043C0B66663C06080007 +:1070600024C65E203568616EAF8500A4AF880070CD +:107070002404FFFF00C018212402001F2442FFFF48 +:10708000AC6400000441FFFD246300043C0D66660F +:107090003C0A0800254A5F6035AC616EAF860090FF +:1070A000AF8C005C2404FFFF014018212402000380 +:1070B0002442FFFFAC6400000441FFFD2463000490 +:1070C0003C09080025295F708D27FFFC2404000679 +:1070D000240500013099001F0325C0042484000109 +:1070E000001878272C8E002015C0FFFA00EF3824F6 +:1070F000AD27FFFC3C09666624030400240403DC7E +:1071000024050200240600663522616E3C08080052 +:1071100025085AA4AF820074AF830044AF83006C8B +:10712000AF830050AF830084AF8A008CAF840064CB +:10713000AF85004CAF860054AF840078AF85006007 +:10714000AF86008001001821240200022442FFFFC4 +:10715000AC6000000441FFFD24630004240400032C +:107160002403000C3C0A0800254A5AB0AF8A006884 +:107170000A00098E2405FFFF000418802484000102 +:10718000006858212C8700C014E0FFFBAD650000AB +:107190003C0E666635CD616E240C17A024081800DD +:1071A000AF8D0088AF8C009403E00008AF88007CAE +:1071B0002484007F000421C200004021000030210F +:1071C00000003821000028210A0009A5AF8400A092 +:1071D0001060000624E7000100C4302124A500014E +:1071E0002CC20BF51440FFFA2CA300663C090800E2 +:1071F00025295F6001201821240200032442FFFF9B +:10720000AC6000000441FFFD2463000410E0001A9C +:1072100024E3FFFF0003294210A0000A0000202100 +:107220002406FFFF3C03080024635F602484000100 +:107230000085502BAC660000250800011540FFFBBF +:107240002463000430E2001F10400008000868803A +:10725000240C0001004C38040008588001692821E2 +:1072600024E6FFFF03E00008ACA6000001A94021CE +:107270002409FFFFAD09000003E000080000000042 +:10728000AF4400283C04000C034420210005288260 +:107290000A000CC000003021000421803C03600083 +:1072A000AC6410080000000000052980AC65100CDB +:1072B0000000000003E000088C62100C27BDFFE80E +:1072C0000080282124040038AFBF00140E0009D527 +:1072D000AFB0001024040E00AF4400283C10000C96 +:1072E00003502021240500100E000CC000003021A6 +:1072F00003501021AC400000AC40000424040038CE +:107300008FBF00148FB0001024053FFF27BD001869 +:107310000A0009D58C430000000421803C03600072 +:10732000AC641008000000008C62100C03E0000840 +:107330000002118227BDFFC8AFB400208F940068FF +:10734000AFBE0030AFB7002CAFB600280000B821A8 +:107350000080B021241E00C0AFBF0034AFB50024B0 +:10736000AFB3001CAFB20018AFB10014AFB0001043 +:107370000A000A12AFA5003C504000018F9400683B +:1073800027DEFFFF13C00028269400048E92000021 +:107390003C03080024635DA01240FFF70283102B1A +:1073A0003C04080024845AA4028410230002A8C0CC +:1073B000000098210A000A212411000100118840D0 +:1073C000122000260000000002B380210251282470 +:1073D0000200202110A0FFF9267300010E0009DE33 +:1073E000000000000016684032EC000101AC2021D2 +:1073F0000E0009D5020028218F89009426F700018C +:107400008FA6003C3AEB0001316A00012528FFFFFE +:107410000011382702CAB021AF88009416E6FFE7B2 +:1074200002479024AE92000002E010218FBF00348A +:107430008FBE00308FB7002C8FB600288FB5002488 +:107440008FB400208FB3001C8FB200188FB10014CE +:107450008FB0001003E0000827BD00383C0E080084 +:1074600025CE5DA0028E102B0A000A0DAE92000000 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 +:10748000AFB3001CAFB2001800A0882110A0001FED +:10749000000480403C13080026735AA40A000A5ACC +:1074A0002412000112200019261000010E0009F517 +:1074B00002002021000231422444FFA0000618806F +:1074C0003045001F2C8217A1007318212631FFFFC1 +:1074D0001040FFF400B230048C690000020020214B +:1074E00024053FFF012640241500FFEE0126382524 +:1074F0000E0009D5AC6700008F8A009426100001A9 +:10750000254700011620FFE9AF8700948FBF0020B8 +:107510008FB3001C8FB200188FB100148FB0001011 +:1075200003E0000827BD00288F85009C00805821BB +:107530000000402100004821240A001F3C0C0800E4 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA +:1075500050C000140000402100AD1023000238C0CC +:10756000240300010A000A930000202115000003F3 +:1075700000E410212448202400004821252900018E +:10758000512B00132506DFDC106000062484000167 +:1075900000C3702415C0FFF5000318400A000A91CB +:1075A0000000402110AC002624A300040060282124 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5 +:1075C0002506DFDC0000402103E000080100102157 +:1075D0000006614230C5001F000C50803C070800C7 +:1075E00024E75DA424040001014730211120000F8D +:1075F00000A420043C05080024A55E20148000059A +:107600002529FFFF24C6000410C50011000000005A +:10761000240400018CCF00000004C0270004204097 +:1076200001F868241520FFF5ACCD00008F99007893 +:1076300001001021032B482303E00008AF890078E4 +:107640003C05080024A55DA40A000A9B0000402117 +:107650003C06080024C65DA40A000AB42404000104 +:10766000308800FF240200021102000A24030003F4 +:107670001103005C8F8900A4240400041104005F3E +:1076800024050005110500670000182103E000082B +:10769000006010218F8900483C0C0800258C5EE0BA +:1076A0003C04080024845F60240300201060000F65 +:1076B00000005821240D0002240E00033C0F080096 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E +:1076D000252900040124C02B53000001018048210A +:1076E0002463FFFF5460FFF88D270000016018211C +:1076F00003E0000800601021132000323C0500FF69 +:1077000030E200FF004030211040004200005021D4 +:1077100024050001000020210005C84000A6C02467 +:1077200017000003332500FF14A0FFFB2484000191 +:10773000012CC023001828C000AA6021008C502111 +:107740003144001F240C0001008C18040003102792 +:1077500000E23024110D0041AD260000110E004C56 +:10776000000A1840110D00368F87006C510E00562C +:107770008F8C0060240D0004110D005A8F8E008440 +:10778000240E0005150EFFDA01601821240B1430B9 +:1077900011400006000018218F8400A0246300011E +:1077A000006A402B1500FFFD016458218F8A00807C +:1077B000AF89008C016018212549FFFF0A000AEB00 +:1077C000AF89008000E52024000736021080FFD03A +:1077D000240A001800075402314600FF0A000AF389 +:1077E000240A00103C0C0800258C5EA03C04080014 +:1077F00024845EE00A000ADA240300103C0C08002E +:10780000258C5E203C04080024845EA00A000AD96E +:107810008F89009000071A02306600FF0A000AF301 +:10782000240A00088F89008C3C0C0800258C5F60BE +:107830003C04080024845F700A000ADA2403000470 +:10784000000A4080250B003024E6FFFF016018216C +:10785000AF8900480A000AEBAF86006C000AC982B3 +:10786000001978803C07080024E75EA001E720218A +:10787000000A18428C8F00003079001F032C380456 +:107880000007C02701F860240A000B08AC8C000038 +:10789000000331420006288000AF28213062001F1B +:1078A0008CB8000024630001004CC804000321428E +:1078B000001938270004108003073024004F2021CE +:1078C0000A000B4CACA60000000A68C025AB0032D1 +:1078D000258AFFFF01601821AF8900A40A000AEB86 +:1078E000AF8A0060254B1030AF89009001601821ED +:1078F00025C9FFFF0A000AEBAF8900843086000724 +:107900002CC2000610400014000000000006408059 +:107910003C030800246357BC010338218CE40000B9 +:1079200000800008000000002409000310A9000ED8 +:1079300000000000240A000510AA000B000000004F +:10794000240B000110AB0008000000008F8C00A089 +:1079500010AC00050000000003E00008000010214A +:107960000A000A7900A020210A000AC700C02021CD +:1079700027BDFFE8308400FF240300021083000BC2 +:10798000AFBF0010240600031086003A240800044C +:1079900010880068240E0005108E007F2CAF143074 +:1079A0008FBF001003E0000827BD00182CA2003094 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A +:1079C000000668803C07080024E75EE001A730213C +:1079D0008CC900000005288230AC001F240B000178 +:1079E000018B50048F840048012A4025ACC8000058 +:1079F0008C83000050600001AF8600488F98006CB7 +:107A000030AE000124A6FFFF270F000115C00002C1 +:107A1000AF8F006C24A600010006414200082080C0 +:107A2000008718218C79000030C2001F2406000155 +:107A30000046F804033F382410E0FFDA8FBF00103F +:107A40000005C182001870803C0F080025EF5EA081 +:107A500001CF48218D2B00000005684231A5001F91 +:107A600000A66004016C502527BD001803E0000843 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011 +:107A800030B900071723FFC724A8FFCE00086A02F9 +:107A9000000D60803C0B0800256B5EA0018B30213F +:107AA0008CC40000000828C230AA001F240800016E +:107AB000014848048F8200A400891825ACC3000047 +:107AC0008C5F000053E00001AF8600A40005704009 +:107AD000000E7942000F28803C04080024845EE0F8 +:107AE00000A418218C6B000025DF000131CD001FA0 +:107AF000001F514201A86004016C4825000A108053 +:107B0000AC690000004428218CA600008F9800601A +:107B100033F9001F8FBF00100328380400C77825F1 +:107B2000270E000127BD0018ACAF000003E00008DD +:107B3000AF8E006024A5EFD02CB804001300FF998D +:107B40008FBF001000053142000658803C0A080033 +:107B5000254A5E20016A30218CC4000030A3001F3A +:107B600024090001006910048F9900900082F82513 +:107B7000ACDF00008F27000050E00001AF860090CE +:107B80008F8D00848FBF001027BD001825AC000129 +:107B900003E00008AF8C008415E0FF828FBF001067 +:107BA0008F8600A0000610400046F821001F21002B +:107BB00003E4C8210019384024F8143000B8402BE1 +:107BC0001100FF788FBF001024A4EBD00E00021329 +:107BD00000C0282100027942000F70803C0D08008F +:107BE00025AD5F6001CD20218C8B0000304C001F43 +:107BF00024060001018618048F89008C016350253A +:107C0000AC8A00008D25000050A00001AF84008CDC +:107C10008F9800808FBF001027BD00182708000133 +:107C200003E00008AF88008030A5000724030003AC +:107C300010A3001028A2000414400008240700022A +:107C40002403000410A300152408000510A8000F49 +:107C50008F8500A003E000080000000014A7FFFDCE +:107C60000080282114C3FFFB240400020A000B8BB0 +:107C700000000000240900050080282110C9FFFB36 +:107C80002404000303E000080000000014C5FFF115 +:107C9000008028210A000B8B24040005240A00011F +:107CA0000080282110CAFFF12404000403E000082A +:107CB0000000000027BDFFE0AFB00010000581C24A +:107CC0002603FFD024C5003F2C6223D024C6007FAA +:107CD000AFB20018AFB10014AFBF001C309100FF6D +:107CE000000691C2000529820200202110400008F0 +:107CF0002403FFFF0E000A4B0000000002002021B9 +:107D0000022028210E000C390240302100001821E9 +:107D10008FBF001C8FB200188FB100148FB00010FD +:107D20000060102103E0000827BD002027BDFFD818 +:107D300024A2007FAFB3001CAFB20018000299C2AA +:107D4000309200FF24A3003F02402021026028213E +:107D5000AFB10014AFB00010AFBF00200E000B6E2B +:107D60000003898200408021004020210220282138 +:107D700014400009000018218FBF00208FB3001CA1 +:107D80008FB200188FB100148FB000100060102166 +:107D900003E0000827BD00280E0009FC00000000D9 +:107DA00000402821020020211051FFF3001019C0CB +:107DB0000E000A4B00000000020020210240282192 +:107DC0000E000C39026030218FBF00208FB3001CE1 +:107DD0008FB200188FB100148FB00010000018216E +:107DE0000060102103E0000827BD00283084FFFF59 +:107DF00030A5FFFF1080000700001821308200012D +:107E00001040000200042042006518211480FFFB8E +:107E10000005284003E000080060102110C00007A2 +:107E2000000000008CA2000024C6FFFF24A500046F +:107E3000AC82000014C0FFFB2484000403E00008AF +:107E40000000000010A0000824A3FFFFAC86000083 +:107E500000000000000000002402FFFF2463FFFF79 +:107E60001462FFFA2484000403E00008000000000C +:107E700030A5FFFF8F4201B80440FFFE3C076015AC +:107E800000A730253C031000AF440180AF400184BF +:107E9000AF46018803E00008AF4301B88F8500D0EA +:107EA0002C864000008018218CA700840087102BAE +:107EB00014400010000000008CA800842D06400033 +:107EC00050C0000F240340008CAA0084008A482B75 +:107ED000512000018CA3008400035A42000B208033 +:107EE0003C05080024A558200085182103E000085F +:107EF0008C62000014C0FFF4000000002403400066 +:107F000000035A42000B20803C05080024A558209D +:107F10000085182103E000088C6200008F8300D0E8 +:107F2000906600D024C50001A06500D08F8500D0E8 +:107F3000906400D090A200D210440017000000000E +:107F4000936C00788F8B00BC318A00FFA16A000C13 +:107F500025490001938700C4312200FF3048007F8B +:107F60001107000B00026827A36200788F4E01788A +:107F700005C0FFFE8F9900B0241800023C0F1000CE +:107F8000AF590140A358014403E00008AF4F017806 +:107F90000A000D0931A20080A0A000D00A000CFF49 +:107FA000000000008F8700D027BDFFC8AFBF0030A2 +:107FB000AFB7002CAFB60028AFB50024AFB4002097 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7 +:107FD00094E300E094E200E2104300D72405FFFFA1 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B +:107FF0003C16000E108A00D18FBF00308F9100B068 +:108000003C1808008F18005C001230C0001291402C +:108010000311702101D57824AF4F002C94EC00E2BD +:1080200031CD007F01BA5821318A7FFF0176482186 +:10803000000A804002091021945300003C08080007 +:108040008D0800580246C02132733FFF001319808B +:10805000010320210224282130BF007F03FAC82118 +:1080600000B5A024AF54002C0336A0218E87001049 +:108070008E8F003003785821256D008800EF702323 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5 +:10809000976A003C8E8400308F9100AC0E000CD6A5 +:1080A0003150FFFF00024B80020940253C02420094 +:1080B00001022025AE2400048E8300048F8D00ACC5 +:1080C0008E860000240E0008ADA3001CADA600188B +:1080D000ADA0000CADA00010929F000A33F900FF84 +:1080E000A5B90014968500083C1F000CA5A5001634 +:1080F0009298000A331100FFA5B100209690000865 +:1081000024180005A5B00022ADA00024928F000B1A +:108110002410C00031E700FFA5A70002A1AE0001B6 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B +:108130003C0A08008D4A005401444821013540247E +:10814000AF4800283C0208008C4200540044302113 +:1081500030C3007F007AC821033F282102458821CF +:10816000AF9100BCAF8500C0A23800008F8A00BC70 +:108170002403FFBF2418FFDF954F000201F03824CD +:1081800000F37025A54E0002914D000231AC003F76 +:10819000358B0040A14B00028F8600BC8F8900D038 +:1081A000ACC000048D28007C3C098000ACC80008ED +:1081B00090C4000D3082007FA0C2000D8F8500BCEE +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F +:1081D0009233000D02789024A232000D8E9000346C +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE +:1081F00000EF7023AD6E0014916D001831AC007F5C +:10820000A16C00188F9F00BC8E8A00308FE8001888 +:10821000015720240109302400C41025AFE20018C2 +:108220009283000AA3E3001C969900088F8500BC86 +:108230008F9800D0A4B9001E8E9000308E8400303C +:108240000E0002138F0500848F8500D0000291403C +:108250000002990090AF00BC0253882100403021F9 +:1082600031E7000210E0000302118021000290803B +:108270000212802190B900BC3327000410E00002F4 +:108280000006F880021F80218E9800308F8B00BC82 +:1082900024068000330F0003000F702331CD00034C +:1082A000020D6021AD6C000494A400E294AA00E2E7 +:1082B00094B000E231497FFF2522000130537FFF57 +:1082C0000206182400734025A4A800E294A400E24A +:1082D0003C1408008E94006030917FFF123400221D +:1082E000000000000E000CF6000000008F8700D098 +:1082F0000000282194F300E094F000E21213000F34 +:108300008FBF003090E900D090E800D1313200FFFB +:10831000310400FF0244302B14C0FF36264A00010E +:1083200090EE00D2264B000131CD00FF008D602180 +:10833000158BFF338F9100B08FBF00308FB7002CAB +:108340008FB600288FB500248FB400208FB3001C97 +:108350008FB200188FB100148FB0001000A0102150 +:1083600003E0000827BD003894A300E20066402423 +:10837000A4A800E290A400E290B900E2309100FFCE +:108380000011A1C20014F827001F39C03332007F4A +:10839000024730250A000DE8A0A600E23084FFFF66 +:1083A00030A5FFFFAF440018AF45001C03E00008F4 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF +:1083C0003084FFFFAFA40010AFBF0044AFBE004039 +:1083D000AFB7003CAFB60038AFB50034AFB4003033 +:1083E000AFB3002CAFB20028AFB10024A7A0001893 +:1083F000920600D1920500D030C400FF30A300FFE8 +:108400000064102B10400122AFA00014920900D08C +:108410008FB50010312800FF0088382324F4FFFFB7 +:108420000014882B0015982B02339024524001260B +:108430008FB40014961E0012961F00108FB7001004 +:1084400003DFC823001714000019C400000224032E +:108450000018140302E2B02A52C00001004020219B +:108460000284282B10A0000200801821028018210D +:1084700000033C0000071C033064FFFF2C8600094A +:1084800014C000020060B821241700088E0A0008FA +:10849000001769808E09000C31ABFFFF3C0C001007 +:1084A000016C402527520400AF4A0038AF9200B853 +:1084B000AF49003CAF480030000000000000000061 +:1084C00000000000000000000000000000000000AC +:1084D00000000000000000008F4F000031EE00207F +:1084E00011C0FFFD0017982A027110240A000E83A4 +:1084F0000000B02155E001019258000131130080C5 +:10850000126001CF012020219655001232A5FFFFF5 +:108510000E000CCBA7B500188F9000D00291A023BD +:1085200026CD00018F9100B8000DB4000016B403F1 +:108530002638004002D7582A0014882B2405000151 +:108540000300902101711024AF9800B8AFA500146A +:10855000104001BC8F8900B03C0C08008D8C005489 +:10856000240BFF80921E00D001895021014B28244A +:10857000921900D0AF4500288E4700103C08080033 +:108580008D0800583C1808008F18005430E33FFF56 +:108590000003218001043021012658212402FF809C +:1085A0000162F824920C00D0AF5F002C92480000CA +:1085B00033D100FF333500FF0309982100117140CA +:1085C000001578C0326D007F01CF382101BA282113 +:1085D000318300FF3164007F3C0A000C00AA88212F +:1085E0000367F02100033140009A10213108003F59 +:1085F0003C1F000E00D1C021005F982127D90088C0 +:108600002D150008AF9100C0AF9900ACAF9800BC29 +:10861000AF9300B412A0018A00008821240E00014B +:10862000010E4004310D005D11A0FFB2310F0002B8 +:108630008E4A00283C0300803C04FFEFAE6A000035 +:108640008E450024A260000A3488FFFFAE65000456 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4 +:108660008E62000C3C180040A267000B00433025CE +:1086700000C8C824033E88240238A825AE75000C23 +:108680008E490004AE6000183C0F00FFAE69001474 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 +:1086A000AE6C00108E470008A660000896450012C8 +:1086B000AE6700208E42000C30B03FFF00105180AA +:1086C000AE6200248E5E0014014B182130A400011C +:1086D000AE7E00288E590018000331C2000443808A +:1086E000AE79002C8E51001C00C8F821A67F001C1A +:1086F000AE710030965800028E550020A678001EFC +:10870000AE75003492490033313000045600000544 +:10871000925000008F8C00D08D8B007CAE6B0030AF +:10872000925000008F8F00BCA1F00000924E0033E9 +:1087300031CD000251A00007925E00018F8900BC7C +:108740002418FF80913100000311A825A1350000F5 +:10875000925E00018F9900BC2409FFBF240BFFDF4C +:10876000A33E00018F9500BC92B8000D3311007F2D +:10877000A2B1000D8F8E00BC91D0000D02097824AB +:10878000A1CF000D8F8800BC8E6D0014910A000DE2 +:108790002DAC0001000C2940014B382400E51825C0 +:1087A000A103000D964200128F8800BC8F8700D075 +:1087B000A50200028E45000490FF00BC30A4000317 +:1087C0000004302330DE000300BE102133F9000224 +:1087D00017200002244400342444003090E200BCFE +:1087E00000A2302430DF000417E0000224830004DC +:1087F000008018218F8F00AC24090002AD03000413 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7 +:108810008F9500AC924C003F8E440004A6AC000241 +:10882000976B003C0E000CD63170FFFF00025380A6 +:10883000020A38253C05420000E51825AEA30004D5 +:108840008F8600AC8E480038ACC800188E440034C7 +:10885000ACC4001CACC0000CACC00010A4C0001420 +:10886000A4C00016A4C00020A4C00022ACC00024F4 +:108870008E6400145080000124040001ACC4000880 +:108880000E000CF6241100010A000E768F9000D025 +:10889000920F00D2920E00D08FB5001031EB00FF86 +:1088A00031CD00FF008D6023016C50212554FFFF66 +:1088B0000014882B0015982B023390241640FEDDFF +:1088C000000000008FB400148FBF00448FBE004032 +:1088D0003A8200018FB7003C8FB600388FB5003464 +:1088E0008FB400308FB3002C8FB200288FB10024DA +:1088F0008FB0002003E0000827BD0048331100209E +:10890000122000EF24150001921E00BC241F00015C +:108910000000A82133D900011320000DAFBF001CB7 +:108920008E4400148E0800840088102B144000022E +:10893000008030218E0600848E03006400C3A82BC3 +:1089400016A0000200C020218E0400640080A8212F +:108950008E4700148E05006400E5302B14C0000221 +:1089600000E020218E0400640095F02313C0000471 +:108970008FAC001C240A0002AFAA001C8FAC001CA4 +:10898000028C582B156000A8000018218E4F00386B +:108990008E6D000C3C0E0080AE6F00008E4A0034DD +:1089A0003C10FF9F01AE5825AE6A00049246003F7E +:1089B000360CFFFF016C38243C0500203C03FFEF20 +:1089C000A266000B00E510253468FFFF8F8700B812 +:1089D0000048F8243C04000803E4C825AE79000CE4 +:1089E0008CF80014AE60001802BE7821AE78001436 +:1089F0008CF10018AE71001C8CE90008AE690024EF +:108A00008CEE000CAE6F002CAE600028AE6E002025 +:108A1000A6600038A660003A8CED001401B58023F2 +:108A2000021E902312400011AE72001090EA003D29 +:108A30008E6500048E640000000A310000A6C82183 +:108A4000000010210326402B0082F82103E8C021FA +:108A5000AE790004AE78000090F1003DA271000AEA +:108A60008F8900B895320006A67200088F9800AC76 +:108A70002419000202A02021A31900009769003CDC +:108A80008F9200AC0E000CD63131FFFF00027B80CC +:108A90008F8500B8022F68253C0E420001AE80256C +:108AA000AE5000048F8400AC8CAC0038AC8C001845 +:108AB0008CAB0034AC8B001CAC80000CAC80001084 +:108AC000A4800014A4800016A4800020A4800022AA +:108AD000AC80002490A7003FA487000212A00135BB +:108AE0002403000153C0000290A2003D90A2003E6A +:108AF00024480001A08800018F9F00ACAFF500085A +:108B00008F8300D024070034906600BC30C500027B +:108B100050A00001240700308F9200B88F8A00BC5B +:108B2000906D00BC924B00002412C00032A50003DF +:108B3000A14B00008F8600B88F8800BC240200047F +:108B400090C400010045182330790003A1040001FE +:108B50008F8A00BC8F9F00B800F53821955800021D +:108B600097E9001200F9382103128824312F3FFFC2 +:108B7000022F7025A54E00029150000231A800047A +:108B8000320C003F358B0040A14B000212A00002C6 +:108B90008F8500BC00E838218F8E00D0ACA7000480 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A +:108BB000ACAD000890B0000D00044140320C007FC5 +:108BC000A0AC000D8F8600BC90CA000D014B102494 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 +:108BF0008E380020ADB800108E290024ADA90014D5 +:108C00008E2F0028ADAF00188E2E002C0E000CF613 +:108C1000ADAE001C8FB0001C240C0002120C00EE44 +:108C20008F9000D08FA3001C006088211460000288 +:108C30000060A8210000A02156A0FE390291A023C7 +:108C40000014882B8FA90010960700103C1E0020EE +:108C50000136402302C750213112FFFFA60A00103F +:108C6000AFB20010AF5E0030000000009617001099 +:108C7000961300121277008F000000008E05000C82 +:108C80008E0B00080016698000AD7021000DC7C36F +:108C900001CDA82B0178782101F56021AE0E000CE2 +:108CA000AE0C00088FB300100013B82B02378024DD +:108CB0001200FF048F9000D00A000E3C000000005C +:108CC0008E4D0038A6600008240B0003AE6D000036 +:108CD0008E500034A260000A8F9800B8AE70000475 +:108CE0003C0500809311003FA26B000C8E6F000CBE +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 +:108D00003C03FFEF8F9200B8004C30243464FFFF27 +:108D100000C4F824AE7F000C8E590014964800124F +:108D20008F8A00B0AE7900108E490014AE60001832 +:108D3000AE600020AE690014AE6000248E470018BB +:108D400031093FFF0009F180AE6700288E4D000811 +:108D500003CA802131180001AE6D00308E4F000C27 +:108D60008F8C00AC001089C200185B80022B282178 +:108D7000240E0002A665001CA6600036AE6F002C13 +:108D8000A18E00009763003C8F8A00AC3C04420037 +:108D90003062FFFF00443025AD4600048F9F00B8CD +:108DA000240700012411C0008FF30038240600348A +:108DB000AD5300188FF90034AD59001CAD40000CC4 +:108DC000AD400010A5400014A5400016A5400020AD +:108DD000A5400022AD400024A5550002A147000196 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 +:108DF000910D0000A24D00008F9000B88F8B00BC39 +:108E000092180001A17800018F8400BC94850002B3 +:108E100000B1782401E97025A48E0002908C000234 +:108E20003183003FA08300028F8300D08F8400BC79 +:108E3000906200BC305300025260000124060030F2 +:108E4000AC8600048C6F007C2403FFBF02A0882145 +:108E5000AC8F0008908E000D31CC007FA08C000DEF +:108E60008F8600BC90C2000D00432024A0C4000DDA +:108E70008F8900BC913F000D37F90020A139000D0A +:108E80008F8800B88F9300BC8D070020AE6700105C +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 +:108EA0008D12002C0E000CF6AE72001C0A00103D54 +:108EB0008F9000D0960E00148E03000431CCFFFF7B +:108EC000000C10C000622021AF44003C8E1F000443 +:108ED0008F46003C03E6C8231B20003C0000000036 +:108EE0008E0F000025E200013C05001034B500089B +:108EF000AF420038AF550030000000000000000015 +:108F00000000000000000000000000000000000061 +:108F100000000000000000008F580000330B00200C +:108F20001160FFFD000000008F5304003C0D002085 +:108F3000AE1300088F570404AE17000CAF4D00307D +:108F4000000000003C0608008CC600442416000106 +:108F500010D600BD00000000961F00123C0508005E +:108F60008CA5004000BFC821A61900129609001464 +:108F700025270001A6070014960A00143144FFFFBC +:108F80005486FF498FB30010A60000140E000E1681 +:108F900030A5FFFF3C0408008C84002496030012D7 +:108FA0000044102300623023A60600120A00105964 +:108FB0008FB30010A08300018F8200AC2404000155 +:108FC000AC4400080A000FF08F8300D08E0200002E +:108FD0000A0010EA3C0500108F8200C08FA7001C19 +:108FE000921800D0920B00D0920E00D0331100FFE7 +:108FF000316900FF00117940000928C001E56021B6 +:1090000031C300FF036C50210003314000C2C8216E +:10901000255F0088AF9F00ACAF9900BCA1470088D6 +:109020009768003C03C020218F9100AC0E000CD645 +:109030003110FFFF00026B80020DC0253C0442008E +:109040008F8D00B803045825AE2B00048DA900387D +:109050008F8B00AC0000882100118100AD690018E1 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F +:1090700091AC003E8D65001C8D660018000C190037 +:10908000000C770200A33821020E102500E3F82B14 +:1090900000C2C821033F5021AD67001CAD6A001813 +:1090A000AD60000CAD60001091B8003E24050005D5 +:1090B00003C45024A578001495A9000403C02021FE +:1090C000A569001691AF003EA56F002095B1000480 +:1090D000A5710022AD60002491AE003FA56E000294 +:1090E00091B0003E91AC003D01901023244300015B +:1090F000A16300018F8600AC8F9F00BCACDE00082E +:10910000A3E500008F9000BC8F9900B82405FFBF35 +:1091100096070002973800120247782433093FFF70 +:1091200001E98825A6110002921200022418FFDF2F +:10913000324E003F35CD0040A20D00028F8600BCAC +:109140008F8C00D02412FFFFACC000048D8B007CFC +:109150003C0C8000ACCB000890C2000D3043007F77 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D +:10917000A0F9000D8F9100BC9229000D01387824D0 +:10918000A22F000D8F9000BCAE120010AE1500147F +:10919000920E00182415FF8002AE6825A20D00185B +:1091A0008F8500BC8F8300B88CAB0018016C102435 +:1091B000004A3025ACA600189068003EA0A8001C0C +:1091C0008F9F00B88F8700BC8F9800D097F900045C +:1091D000A4F9001E0E0002138F0500848F8600D0B4 +:1091E000000279400002490090D200BC01E98821C8 +:1091F000004028213255000212A0000303D1202193 +:109200000002A8800095202190CD00BC31B200045E +:109210001240000333DF0003000540800088202156 +:10922000240600048F9E00BC00DFC8233327000300 +:1092300000875021AFCA00040E000CF6A665003866 +:109240000A0010388F9000D0961E00123C080800CB +:109250008D080024011E9021A61200120A00105948 +:109260008FB3001027BDFFE03C1808008F18005096 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2 +:1092800093710074030478212410FF8031EE007F75 +:109290003225007F01F0582401DA68213C0C000AD5 +:1092A000A38500C401AC2821AF4B002494A9001071 +:1092B0009768000690A600620080382124020030E2 +:1092C0000109202330C300F0AF8500D010620019DF +:1092D0003090FFFF90AE0062240DFFF0240A005092 +:1092E00001AE6024318B00FF116A002F00000000E6 +:1092F00016000007241F0C00AF5F00248FB100147C +:109300008FBF00188FB0001003E0000827BD0020B9 +:109310000E000E1C02002021241F0C00AF5F002451 +:109320008FB100148FBF00188FB0001003E0000849 +:1093300027BD002094A200E094A400E290BF011396 +:10934000008218263079FFFF33E700C014E00009DF +:109350002F31000116000038000000005620FFE603 +:10936000241F0C000E000D18000000000A0011ED73 +:10937000241F0C001620FFDE000000000E000D1858 +:10938000000000001440FFDC241F0C001600002227 +:109390008F8300D0906901133122003FA062011336 +:1093A0000A0011ED241F0C0094AF00D48F8600D466 +:1093B00000E02821240400050E000C5C31F0FFFFC2 +:1093C0001440000524030003979100E600001821D3 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E +:1093E0003C196013AF400180241F0C00AF50018472 +:1093F000007938253C101000AF4701888FB1001468 +:10940000AF5001B8AF5F00248FB000108FBF0018BD +:1094100003E0000827BD00200E000E1C02002021E2 +:109420005040FFB5241F0C008F8300D090690113BA +:109430000A0012163122003F0E000E1C02002021ED +:109440001440FFAD241F0C00122000078F8300D0B2 +:10945000906801133106003F34C20040A06201133E +:109460000A0011ED241F0C000E000D180000000072 +:109470005040FFA1241F0C008F8300D0906801137F +:109480003106003F0A00124634C20040AF9B00C8BC +:1094900003E00008AF8000EC3089FFFF0009404284 +:1094A0002D020041000921801440000200095040B3 +:1094B00024080040000830C0000811400046582130 +:1094C000256701A800E2C821272F007F2418FF800C +:1094D00001F818240064302100CA702125CC00FF57 +:1094E000240DFF00018D202425650088240A0088B2 +:1094F0003C010800AC2A004C3C010800AC2500509F +:10950000AF8400D43C010800AC2900603C01080095 +:10951000AC2800643C010800AC2700543C01080062 +:10952000AC2300583C010800AC26005C03E00008B6 +:1095300000000000308300FF30C6FFFF30E400FF72 +:109540008F4201B80440FFFE00034C00012438257F +:109550003C08600000E820253C031000AF45018076 +:10956000AF460184AF44018803E00008AF4301B86F +:109570008F86001C3C096012352700108CCB00043C +:109580003C0C600E35850010316A00062D48000144 +:10959000ACE800C48CC40004ACA431808CC20008C8 +:1095A00094C30002ACA2318403E00008A78300E466 +:1095B0003C0308008C6300508F8400E88F86001CF9 +:1095C0002402FF800064C0210302C824AF59002890 +:1095D0008CCD00043305007F00BA78213C0E000CCE +:1095E00001EE2821ACAD00588CC80008AF8500D032 +:1095F0003C076012ACA8005C8CCC001034E8001072 +:10960000ACAC000C8CCB000CACAB000894AA0014E2 +:109610003C0208008C42004425490001A4A9001422 +:1096200094A400143083FFFF106200178F8400D0D1 +:109630003C0A08008D4A0040A4AA00128CCE0018F3 +:10964000AC8E00248CCD0014AC8D00208CC700188B +:10965000AC87002C8CCC001424060001AC8C0028B4 +:109660008D0B00BC5166001A8D0200B48D0200B84B +:10967000A482003A948F003AA48F003C948800D4CE +:1096800003E000083102FFFF3C0908008D29002497 +:10969000A4A000148F8400D0A4A900128CCE0018BE +:1096A000AC8E00248CCD0014AC8D00208CC700182B +:1096B000AC87002C8CCC001424060001AC8C002854 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 +:1096D000A482003A948F003AA48F003C948800D46E +:1096E00003E000083102FFFF8F86001C3C0C0800DD +:1096F0008D8C0050240BFF808CCD00083C03000CA7 +:10970000000D51C0018A4021010B4824AF8A00E8B6 +:10971000AF49002890C700073105007F00BA10212B +:109720000043282130E4000410800039AF8500D0C8 +:1097300090CF000731EE000811C000380000000093 +:109740008CD9000C8CC400140324C02B13000030EF +:10975000000000008CC2000CACA200648CCD00188C +:109760002402FFF8ACAD00688CCC0010ACAC0080DB +:109770008CCB000CACAB00848CCA001CACAA007C67 +:1097800090A900BC01224024A0A800BC90C30007FF +:109790003067000810E000048F8500D090AF00BC57 +:1097A00035EE0001A0AE00BC90D9000733380001AF +:1097B000130000088F8300D08F8700D0240400346A +:1097C00090E800BC35030002A0E300BC8F8300D00A +:1097D000AC6400C090C900073126000210C000052B +:1097E00000000000906A00BC35420004A06200BC8A +:1097F0008F8300D09065011330AD003FA06D011341 +:109800008F8C00D0958B00D403E000083162FFFFFD +:109810008CC200140A001305000000000A001306A1 +:10982000ACA0006427BDFFD8AFB000108F90001C23 +:10983000AFBF0024AFB40020AFB20018AFB1001426 +:10984000AFB3001C9613000E3C07600A3C14600680 +:109850003264FFFF369300100E00125534F40410EA +:109860008F8400D43C11600E0E00099B363100102D +:10987000920E00153C0708008CE700603C12601255 +:1098800031CD000FA38D00F08E0E00048E0D000868 +:1098900096080012961F00109619001A9618001EBE +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD +:1098C0003C010800AC2C00243C010800AC2A0044F8 +:1098D000AE293178AE26317C92020015960300162F +:1098E00036520010304400FF3065FFFF3C06080090 +:1098F0008CC60064AE243188AE4500B492080014D2 +:1099000096190018241F0001011FC004332FFFFF08 +:109910003C0508008CA50058AE5800B8AE4F00BCFE +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D +:10993000AE4B00C0920A0015AE670048AE66004C00 +:10994000314900FFAE4900C8AE65007C3C03080009 +:109950008C6300503C0408008C84004C3C080800D8 +:109960008D0800543C0208008C42005C8FBF00242C +:10997000AE6300808FB00010AE8300748FB3001C04 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F +:10999000AE24318CAE233190AE283194AE2531986F +:1099A000AE870050AE860054AE8500708FB10014B3 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B +:1099C000AE4800D4AE4500D88FB400208FB2001846 +:1099D00003E0000827BD002827BDFFE0AFB1001459 +:1099E000AFBF0018241100010E000845AFB00010F1 +:1099F00010510005978400E6978300CC0083102B5C +:109A0000144000088F8500D4240700028FBF00187F +:109A10008FB100148FB0001000E0102103E00008A7 +:109A200027BD00200E000C7A24040005AF8200E858 +:109A30001040FFF6240700020E0008498F90001C1A +:109A4000979F00E68F9900E88F8D00C827EF0001EF +:109A5000240E0050AF590020A78F00E6A1AE0000F1 +:109A60003C0C08008D8C00648F8600C8240A80009E +:109A7000000C5E00ACCB0074A4C0000694C9000AC0 +:109A8000241FFF803C0D000C012AC024A4D8000A2A +:109A900090C8000A24182000011F1825A0C3000A3E +:109AA0008F8700C8A0E000788F8500C800003821AB +:109AB000A0A000833C0208008C4200508F8400E884 +:109AC0000044782101FFC824AF590028960B0002FA +:109AD00031EE007F01DA6021018D3021A4CB00D46A +:109AE000960A0002AF8600D03C0E000425492401EE +:109AF000A4C900E68E080004ACC800048E03000868 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA +:109B10008F8500D02403FFBFA0A000D13C04080023 +:109B20008C8400648F8200D0A04400D28E1F000C71 +:109B30008F8A00D0978F00E4AD5F001C8E19001053 +:109B400024100030AD590018A5400030A551005434 +:109B5000A5510056A54F0016AD4E0068AD580080C7 +:109B6000AD580084914D006231AC000F358B001070 +:109B7000A14B00628F8600D090C900633128007F1E +:109B8000A0C800638F8400D02406FFFF9085006387 +:109B900000A31024A08200638F9100D000E0102168 +:109BA000923F00BC37F90001A23900BC8F8A00D077 +:109BB000938F00F0AD580064AD5000C0914E00D3BB +:109BC000000F690031CC000F018D5825A14B00D347 +:109BD0008F8500D08F8900DCACA900E88F8800D881 +:109BE0008FBF00188FB100148FB0001027BD002068 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB +:109C000003E000080000000027BDFFE0AFB0001037 +:109C10008F90001CAFB10014AFBF00188E19000464 +:109C20003C1808008F180050240FFF80001989C0CD +:109C30000238702131CD007F01CF602401BA50215C +:109C40003C0B000CAF4C0028014B4021950900D47F +:109C5000950400D68E0700043131FFFFAF8800D095 +:109C60000E000913000721C08E0600048F8300C870 +:109C7000000629C0AF4500209064003E30820040BD +:109C8000144000068F8400D0341FFFFF948300D659 +:109C90003062FFFF145F000400000000948400D6CF +:109CA0000E0008A83084FFFF8E050004022030213A +:109CB0008FBF00188FB100148FB000102404002251 +:109CC00000003821000529C00A00127C27BD0020B1 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F +:109CE000AFBF00181220001D000080218F86001CCD +:109CF0008CC500002403000600053F020005140285 +:109D000030E4000714830015304500FF2CA800063E +:109D10001100004D000558803C0C0800258C57D4DC +:109D2000016C50218D490000012000080000000056 +:109D30008F8E00EC240D000111CD005900000000B1 +:109D4000260B00013170FFFF24CA00200211202BD6 +:109D5000014030211480FFE6AF8A001C0200102170 +:109D60008FBF00188FB100148FB0001003E00008FF +:109D700027BD0020938700CE14E00038240400148F +:109D80000E001338000000008F86001C2402000122 +:109D90000A00147FAF8200EC8F8900EC24080002D7 +:109DA0001128003B2404001300002821000030216A +:109DB000240700010E00127C000000000A00147F3E +:109DC0008F86001C8F8700EC2405000214E5FFF647 +:109DD000240400120E0012E9000000008F8500E844 +:109DE00000403021240400120E00127C00003821B3 +:109DF0000A00147F8F86001C8F8300EC241F000351 +:109E0000147FFFD0260B00010E00129B0000000003 +:109E10008F8500E800403021240200022404001055 +:109E200000003821AF8200EC0E00127C0000000020 +:109E30000A00147F8F86001C8F8F00EC240600021E +:109E400011E6000B0000000024040010000028218F +:109E5000000030210A00149C240700010000282182 +:109E60000E00127C000030210A00147F8F86001C37 +:109E70000E0013A500000000144000128F99001C72 +:109E80008F86001C240200030A00147FAF8200ECBE +:109E90000E001431000000000A00147F8F86001CA1 +:109EA0000E00128B000000002402000224040014A3 +:109EB0000000282100003021000038210A0014B9D8 +:109EC000AF8200EC004038212404001097380002D3 +:109ED000000028210E00127C3306FFFF0A00147FC9 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D +:109EF0008C8500742402000100A61824AC83007431 +:109F000003E00008A082000510A000362CA200800B +:109F1000274A04003C0B000524090080104000077C +:109F20002408008030A6000F00C540212D030081C9 +:109F30001460000200A0482124080080AF4B0030CC +:109F400000000000000000000000000011000009F7 +:109F500000003821014030218C8D000024E70004EE +:109F600000E8602BACCD0000248400041580FFFACB +:109F700024C60004000000000000000000000000F3 +:109F80003C0E0006010E3825AF47003000000000EF +:109F900000000000000000008F4F000031E80010BA +:109FA0001100FFFD000000008F42003C8F43003C89 +:109FB0000049C8210323C02B130000040000000047 +:109FC0008F4C003825860001AF4600388F47003C93 +:109FD00000A9282300E96821AF4D003C14A0FFCE62 +:109FE0002CA2008003E000080000000027BDFFD085 +:109FF0003C020002AFB100143C11000CAF45003828 +:10A00000AFB3001CAF46003C00809821AF42003047 +:10A0100024050088AF44002803512021AFBF002849 +:10A02000AFB50024AFB40020AFB200180E0014F199 +:10A03000AFB000103C1F08008FFF004C3C18080018 +:10A040008F1800642410FF8003F3A82132B9007F29 +:10A0500002B078240018A0C0033A70210018914083 +:10A0600001D12021AF4F00280E0014F10254282105 +:10A070003C0D08008DAD00502405012001B358218E +:10A08000316C007F01705024019A48210131202158 +:10A090000E0014F1AF4A00283C0808008D08005457 +:10A0A0003C0508008CA500640113382130E6007FD0 +:10A0B00000F0182400DA202100912021AF4300286D +:10A0C0000E0014F1000529403C0208008C420058A3 +:10A0D0003C1008008E1000601200001C0053882104 +:10A0E0002415FF800A0015743C14000C3226007FF2 +:10A0F0000235182400DA202102402821AF4300282D +:10A10000009420210E0014F12610FFC01200000F51 +:10A11000023288212E05004110A0FFF42412100005 +:10A120003226007F001091800235182400DA2021A9 +:10A1300002402821AF430028009420210E0014F192 +:10A14000000080211600FFF3023288213C0B08003A +:10A150008D6B005C240AFF802405000201734021FE +:10A16000010A4824AF4900283C0408009484006296 +:10A170003110007F021A88213C07000C0E000CAA47 +:10A180000227982100402821026020218FBF00284B +:10A190008FB500248FB400208FB3001C8FB200183D +:10A1A0008FB100148FB000100A0014F127BD0030E9 +:10A1B0008F83001C8C62000410400003000000002C +:10A1C00003E00008000000008C6400108C650008AB +:10A1D0000A00152A8C66000C000000000000001B1D +:10A1E0000000000F0000000A000000080000000648 +:10A1F000000000050000000500000004000000044D +:10A200000000000300000003000000030000000342 +:10A210000000000300000002000000020000000235 +:10A220000000000200000002000000020000000226 +:10A230000000000200000002000000020000000216 +:10A240000000000200000002000000020000000206 +:10A2500000000001000000010000000108000F24C0 +:10A2600008000D6C08000FB80800106008000F4CC3 +:10A2700008000F8C0800119408000D88080011B820 +:10A2800008000DD8080015540800151C08000D889A +:10A2900008000D8808000D880800124008001240D0 +:10A2A00008000D8808000D88080014E008000D88DB +:10A2B00008000D8808000D8808000D88080013B4F8 +:10A2C00008000D8808000D8808000D8808000D881A +:10A2D00008000D8808000D8808000D8808000D880A +:10A2E00008000D8808000D8808000D8808000D88FA +:10A2F00008000D8808000D8808000FAC08000D88C4 +:10A3000008000D880800167808000D8808000D88E0 +:10A3100008000D8808000D8808000D8808000D88C9 +:10A3200008000D8808000D8808000D8808000D88B9 +:10A3300008000D8808000D8808000D8808000D88A9 +:10A3400008000D8808000D8808000D88080014100A +:10A3500008000D8808000D8808001334080012A4B6 +:10A3600008001E2C08001EFC08001F1408001F28EF +:10A3700008001F3808001E2C08001E2C08001E2C88 +:10A3800008001ED808002E1408002E1C08002DE41A +:10A3900008002DF008002DFC08002E08080052F4DB +:10A3A000080052B40800528008005254080052308D +:10A3B000080051EC0A000C840000000000000000BE +:10A3C0000000000D727870362E322E33000000002F +:10A3D000060203030000000000000001000000006E +:10A3E000000000000000000000000000000000006D +:10A3F000000000000000000000000000000000005D +:10A40000000000000000000000000000000000004C +:10A41000000000000000000000000000000000003C +:10A42000000000000000000000000000000000002C +:10A43000000000000000000000000000000000001C +:10A44000000000000000000000000000000000000C +:10A4500000000000000000000000000000000000FC +:10A4600000000000000000000000000000000000EC +:10A4700000000000000000000000000000000000DC +:10A4800000000000000000000000000000000000CC +:10A4900000000000000000000000000000000000BC +:10A4A00000000000000000000000000000000000AC +:10A4B000000000000000000000000000000000009C +:10A4C000000000000000000000000000000000008C +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A00000000000000000000000000000000000AB +:10A5B000000000000000000000000000000000009B +:10A5C000000000000000000000000000000000008B +:10A5D000000000000000000000000000000000007B +:10A5E000000000000000000000000000000000006B +:10A5F000000000000000000000000000000000005B +:10A60000000000000000000000000000000000004A +:10A61000000000000000000000000000000000003A +:10A62000000000000000000000000000000000002A +:10A63000000000000000000000000000000000001A +:10A64000000000000000000000000000000000000A +:10A6500000000000000000000000000000000000FA +:10A6600000000000000000000000000000000000EA +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:10A7E0000000000000000000000000000000000069 +:10A7F0000000000000000000000000000000000059 +:10A800000000000000000000000000000000000048 +:10A810000000000000000000000000000000000038 +:10A820000000000000000000000000000000000028 +:10A830000000000000000000000000000000000018 +:10A840000000000000000000000000000000000008 +:10A8500000000000000000000000000000000000F8 +:10A8600000000000000000000000000000000000E8 +:10A8700000000000000000000000000000000000D8 +:10A8800000000000000000000000000000000000C8 +:10A8900000000000000000000000000000000000B8 +:10A8A00000000000000000000000000000000000A8 +:10A8B0000000000000000000000000000000000098 +:10A8C0000000000000000000000000000000000088 +:10A8D0000000000000000000000000000000000078 +:10A8E0000000000000000000000000000000000068 +:10A8F0000000000000000000000000000000000058 +:10A900000000000000000000000000000000000047 +:10A910000000000000000000000000000000000037 +:10A920000000000000000000000000000000000027 +:10A930000000000000000000000000000000000017 +:10A940000000000000000000000000000000000007 +:10A9500000000000000000000000000000000000F7 +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA700000000000000000000000000000000000D6 +:10AA800000000000000000000000000000000000C6 +:10AA900000000000000000000000000000000000B6 +:10AAA00000000000000000000000000000000000A6 +:10AAB0000000000000000000000000000000000096 +:10AAC0000000000000000000000000000000000086 +:10AAD0000000000000000000000000000000000076 +:10AAE0000000000000000000000000000000000066 +:10AAF0000000000000000000000000000000000056 +:10AB00000000000000000000000000000000000045 +:10AB10000000000000000000000000000000000035 +:10AB20000000000000000000000000000000000025 +:10AB30000000000000000000000000000000000015 +:10AB40000000000000000000000000000000000005 +:10AB500000000000000000000000000000000000F5 +:10AB600000000000000000000000000000000000E5 +:10AB700000000000000000000000000000000000D5 +:10AB800000000000000000000000000000000000C5 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40000000000000000000000000000000000004 +:10AC500000000000000000000000000000000000F4 +:10AC600000000000000000000000000000000000E4 +:10AC700000000000000000000000000000000000D4 +:10AC800000000000000000000000000000000000C4 +:10AC900000000000000000000000000000000000B4 +:10ACA00000000000000000000000000000000000A4 +:10ACB0000000000000000000000000000000000094 +:10ACC0000000000000000000000000000000000084 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD00000000000000000000000000000000000043 +:10AD10000000000000000000000000000000000033 +:10AD20000000000000000000000000000000000023 +:10AD30000000000000000000000000000000000013 +:10AD40000000000000000000000000000000000003 +:10AD500000000000000000000000000000000000F3 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA00000000000000000000000000000000000A3 +:10ADB0000000000000000000000000000000000093 +:10ADC0000000000000000000000000000000000083 +:10ADD0000000000000000000000000000000000073 +:10ADE0000000000000000000000000000000000063 +:10ADF0000000000000000000000000000000000053 +:10AE00000000000000000000000000000000000042 +:10AE10000000000000000000000000000000000032 +:10AE20000000000000000000000000000000000022 +:10AE30000000000000000000000000000000000012 +:10AE40000000000000000000000000000000000002 +:10AE500000000000000000000000000000000000F2 +:10AE600000000000000000000000000000000000E2 +:10AE700000000000000000000000000000000000D2 +:10AE800000000000000000000000000000000000C2 +:10AE900000000000000000000000000000000000B2 +:10AEA00000000000000000000000000000000000A2 +:10AEB0000000000000000000000000000000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF00000000000000000000000000000000000041 +:10AF10000000000000000000000000000000000031 +:10AF20000000000000000000000000000000000021 +:10AF30000000000000000000000000000000000011 +:10AF40000000000000000000000000000000000001 +:10AF500000000000000000000000000000000000F1 +:10AF600000000000000000000000000000000000E1 +:10AF700000000000000000000000000000000000D1 +:10AF800000000000000000000000000000000000C1 +:10AF900000000000000000000000000000000000B1 +:10AFA00000000000000000000000000000000000A1 +:10AFB0000000000000000000000000000000000091 +:10AFC0000000000000000000000000000000000081 +:10AFD0000000000000000000000000000000000071 +:10AFE0000000000000000000000000000000000061 +:10AFF0000000000000000000000000000000000051 +:10B000000000000000000000000000000000000040 +:10B010000000000000000000000000000000000030 +:10B020000000000000000000000000000000000020 +:10B030000000000000000000000000000000000010 +:10B040000000000000000000000000000000000000 +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000008000000000000000000B +:10D5A000000000000000000000000000000000007B +:10D5B00000000000000000000000000A0000000061 +:10D5C0000000000000000000100000030000000048 +:10D5D0000000000D0000000D3C02080024427340D2 +:10D5E0003C030800246377CCAC4000000043202BB0 +:10D5F0001480FFFD244200043C1D080037BD7FFC61 +:10D6000003A0F0213C100800261032103C1C08003A +:10D61000279C73400E0010FE000000000000000D6B +:10D6200030A5FFFF30C600FF274301808F4201B8BD +:10D630000440FFFE24020002AC640000A465000860 +:10D64000A066000AA062000B3C021000AC67001844 +:10D6500003E00008AF4201B83C0360008C624FF861 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9 +:10D670003C02100003E00008AC624FF89482000CFA +:10D680002486001400A0382100021302000210803A +:10D690000082402100C8102B1040005700000000FD +:10D6A00090C300002C6200095040005190C200015C +:10D6B000000310803C030800246372F00043102133 +:10D6C0008C420000004000080000000090C30001F0 +:10D6D0002402000A1462003A000000000106102330 +:10D6E0002C42000A1440003624C600028CE20000DE +:10D6F00034420100ACE2000090C2000090C300017F +:10D7000090C4000290C5000300031C000002160034 +:10D710000043102500042200004410250045102578 +:10D7200024C60004ACE2000490C2000090C30001D3 +:10D7300090C4000290C500030002160000031C0004 +:10D740000043102500042200004410250045102548 +:10D7500024C600040A000CB8ACE2000890C3000123 +:10D76000240200041462001624C6000290C20000C5 +:10D7700090C400018CE30000000212000044102558 +:10D780003463000424C60002ACE2000C0A000CB8AA +:10D79000ACE3000090C300012402000314620008FF +:10D7A00024C600028CE2000090C3000024C60001E1 +:10D7B00034420008A0E300100A000CB8ACE20000FC +:10D7C00003E000082402000190C3000124020002CB +:10D7D0001062000224C40002010020210A000CB8DB +:10D7E000008030210A000CB824C6000190C200015C +:10D7F0000A000CB800C2302103E00008000010212C +:10D8000027BDFFE8AFBF0014AFB000100E00130239 +:10D8100000808021936200052403FFFE0200202186 +:10D82000004310248FBF00148FB00010A3620005C6 +:10D830000A00130B27BD001827BDFFE8AFB000108A +:10D84000AFBF00140E000F3C0080802193620000E7 +:10D8500024030050304200FF14430004240201005E +:10D86000AF4201800A000D3002002021AF4001804C +:10D87000020020218FBF00148FB000100A000FE7B4 +:10D8800027BD001827BDFF80AFBE0078AFB700747A +:10D89000AFB20060AFBF007CAFB60070AFB5006C38 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874 +:10D8B0008F5001283C0208008C4231A02403FF80D5 +:10D8C0009365003F0202102100431024AF42002460 +:10D8D0003C0208008C4231A09364000530B200FF86 +:10D8E000020210213042007F034218210004202749 +:10D8F0003C02000A0062182130840001AF8300144A +:10D900000000F0210000B82114800053AFA00050A7 +:10D9100093430116934401128F450104306300FFC5 +:10D920003C020001308400FF00A2282403431021A0 +:10D9300003441821245640002467400014A001CD60 +:10D940002402000193620000304300FF2402002003 +:10D950001062000524020050106200060000000062 +:10D960000A000D74000000000000000D0A000D7D8B +:10D97000AFA000303C1E080027DE738C0A000D7D2E +:10D98000AFA000303C0208008C4200DC24420001C1 +:10D990003C010800AC2200DC0E00139F00000000D8 +:10D9A0000A000F318FBF007C8F4201043C0300202E +:10D9B00092D3000D004310240002202B00042140CC +:10D9C000AFA400308F4301043C02004000621824E1 +:10D9D000146000023485004000802821326200205B +:10D9E000AFA500301440000234A6008000A0302112 +:10D9F00010C0000BAFA6003093C500088F67004C25 +:10DA00000200202100052B0034A5008130A5F08103 +:10DA10000E000C9B30C600FF0A000F2E0000000015 +:10DA20009362003E304200401040000F2402000488 +:10DA300056420007240200120200202100E02821A3 +:10DA40000E0013F702C030210A000F318FBF007C97 +:10DA500016420005000000000E000D2100002021EC +:10DA60000A000F318FBF007C9743011A96C4000E45 +:10DA700093620035326500043075FFFF00442004D6 +:10DA8000AFA400548ED1000410A000158ED400085D +:10DA90009362003E3042004010400007000000004A +:10DAA0000E0013E0022020211040000D00000000B5 +:10DAB0000A000F2E000000008F6200440222102393 +:10DAC0000440016A000000008F6200480222102317 +:10DAD00004410166240400160A000E218FC20004CE +:10DAE0008F6200480222102304400008000000005A +:10DAF0003C0208008C423100244200013C01080035 +:10DB0000AC2231000A000F23000000008F620040A9 +:10DB100002221023184000128F8400143C020800D7 +:10DB20008C423100327300FC0000A8212442000125 +:10DB30003C010800AC2231008F6300409482011C3C +:10DB4000022318233042FFFF0043102A50400010E8 +:10DB50002402000C8F6200400A000DF20222102302 +:10DB60009483011C9762003C0043102B1040000678 +:10DB7000000000009482011C00551023A482011CA7 +:10DB80000A000DF72402000CA480011C2402000CE2 +:10DB9000AFA200308F620040005120231880000D9A +:10DBA00002A4102A1440012600000000149500066B +:10DBB00002A410233A620001304200011440012007 +:10DBC0000000000002A41023022488210A000E098C +:10DBD0003055FFFF00002021326200021040001A81 +:10DBE000326200109362003E30420040504000110B +:10DBF0008FC200040E00130202002021240200182C +:10DC0000A362003F936200052403FFFE020020216F +:10DC1000004310240E00130BA362000524040039F6 +:10DC2000000028210E0013C9240600180A000F3036 +:10DC300024020001240400170040F809000000003D +:10DC40000A000F302402000110400108000000000B +:10DC50008F63004C8F620054028210231C4001032A +:10DC600002831023044200010060A021AFA4001829 +:10DC7000AFB10010AFB50014934201208F65004092 +:10DC80009763003C304200FF034210210044102102 +:10DC90008FA400543063FFFF244240000083182B00 +:10DCA0008FA40030AFA20020AFA50028008320255C +:10DCB000AFA40030AFA50024AFA0002CAFB4003457 +:10DCC0009362003E30420008504000118FC20000B5 +:10DCD00002C0202127A500380E000CB2AFA00038EA +:10DCE0005440000B8FC200008FA200383042010068 +:10DCF000504000078FC200008FA3003C8F6200607D +:10DD00000062102304430001AF6300608FC2000073 +:10DD10000040F80927A400108FA200303042000212 +:10DD200054400001327300FE9362003E30420040D6 +:10DD3000104000378FA200248F6200541682001A10 +:10DD40003262000124020014124200102A4200151F +:10DD500010400006240200162402000C12420007A4 +:10DD6000326200010A000E7D000000001242000530 +:10DD7000326200010A000E7D000000000A000E78E9 +:10DD80002417000E0A000E78241700100A000E7CDB +:10DD900024170012936200232403FFBD00431024C4 +:10DDA000A362002332620001104000198FA20024F8 +:10DDB0002402000C1242000E2A42000D1040000600 +:10DDC0002402000E2402000A124200078FA200243F +:10DDD0000A000E9524420001124200088FA200247E +:10DDE0000A000E95244200010A000E932417000831 +:10DDF0002402000E16E20002241700162417001059 +:10DE00008FA2002424420001AFA200248FA200248C +:10DE10008FA300148F76004000431021AF620040B2 +:10DE20008F8200149442011C104000090000000081 +:10DE30008F6200488F6400409763003C00441023C9 +:10DE40003063FFFF0043102A104000088FA20054E7 +:10DE5000936400368F6300403402FFFC008210049C +:10DE600000621821AF6300488FA200548FA60030D3 +:10DE70000282902130C200081040000E0000000015 +:10DE80008F6200581642000430C600FF9742011A04 +:10DE90005040000134C6001093C500088FA700341D +:10DEA0000200202100052B0034A500800E000C9BF1 +:10DEB00030A5F0808F620040005610231840001BF0 +:10DEC0008FA200183C0208008C42319830420010AA +:10DED0001040000D24020001976200681440000AFF +:10DEE000240200018F8200149442011C1440000699 +:10DEF00024020001A76200689742007A244200646D +:10DF00000A000EE9A7620012A76200120E001302B7 +:10DF1000020020219362007D2403000102002021E1 +:10DF2000344200010A000EE7AFA300501840000A77 +:10DF3000000000000E001302020020219362007D09 +:10DF40002403000102002021AFA30050344200044A +:10DF50000E00130BA362007D9362003E304200402E +:10DF60001440000C326200011040000A0000000062 +:10DF70008F6300408FC20004240400182463000152 +:10DF80000040F809AF6300408FA200300A000F3054 +:10DF9000304200048F620058105200100000000050 +:10DFA0008F620018022210231C4000082404000184 +:10DFB0008F62001816220009000000008F62001C0A +:10DFC000028210230440000500000000AF720058D8 +:10DFD000AFA40050AF710018AF74001C12E0000B2A +:10DFE0008FA200500E00130202002021A377003FF1 +:10DFF0000E00130B0200202102E030212404003720 +:10E000000E0013C9000028218FA200501040000309 +:10E01000000000000E000CA90200202112A0000543 +:10E02000000018218FA2003030420004504000113F +:10E0300000601021240300010A000F30006010214D +:10E040000E001302020020219362007D02002021B5 +:10E05000344200040E00130BA362007D0E000CA9D5 +:10E06000020020210A000F3024020001AF400044CA +:10E07000240200018FBF007C8FBE00788FB7007430 +:10E080008FB600708FB5006C8FB400688FB30064DA +:10E090008FB200608FB1005C8FB0005803E00008C1 +:10E0A00027BD00808F4201B80440FFFE2402080013 +:10E0B000AF4201B803E00008000000003C02000885 +:10E0C00003421021944200483084FFFF2484001250 +:10E0D0003045FFFF10A0001700A4102B10400016C1 +:10E0E00024020003934201202403001AA343018B5E +:10E0F000304200FF2446FFFE8F82000000A6182B4E +:10E100003863000100021382004310241040000510 +:10E110008F84000434820001A746019403E00008C4 +:10E12000AF8200042402FFFE0082102403E00008F6 +:10E13000AF8200042402000303E00008A342018B25 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 +:10E1600000000000AF440180AF4400200E000F42C9 +:10E17000020020218F8300008F840004A750019AA1 +:10E18000A750018EA74301908F8300083082800042 +:10E19000AF4301A8A75101881040000E8F820004F0 +:10E1A00093420116304200FC24420004005A102120 +:10E1B0008C4240003042FFFF144000068F82000472 +:10E1C0003C02FFFF34427FFF00821024AF82000434 +:10E1D0008F8200042403BFFF00431024A74201A63E +:10E1E0009743010C8F42010400031C003042FFFFE3 +:10E1F00000621825AF4301AC3C021000AF4201B8E9 +:10E200008FBF00188FB100148FB0001003E000081A +:10E2100027BD00208F470070934201128F830000BA +:10E2200027BDFFF0304200FF00022882306201006B +:10E23000000030211040004324A40003306240005D +:10E24000104000103062200000041080005A10219D +:10E250008C43400024A4000400041080AFA30000FD +:10E26000005A10218C424000AFA2000493420116D4 +:10E27000304200FC005A10218C4240000A000FC0BE +:10E28000AFA200081040002F0000302100041080D1 +:10E29000005A10218C43400024A400040004108084 +:10E2A000AFA30000005A10218C424000AFA000082C +:10E2B000AFA200048FA80008000030210000202138 +:10E2C000240A00083C0908002529010003A41021A4 +:10E2D000148A000300042A001100000A0000000054 +:10E2E00090420000248400012C83000C00A2102125 +:10E2F00000021080004910218C4200001460FFF3DE +:10E3000000C230263C0408008C8431048F42007027 +:10E310002C83002010600009004738233C030800CC +:10E32000246331080004108000431021248300017D +:10E33000AC4700003C010800AC233104AF86000864 +:10E340002406000100C0102103E0000827BD0010D2 +:10E350003C0208008C42003827BDFFD0AFB5002436 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 +:10E37000AFB20018AFB00010000088213C150800B3 +:10E3800026B50038144000022454FFFF0000A021ED +:10E390009742010E8F8400003042FFFF308340001F +:10E3A0001060000A245200043C0200200082102465 +:10E3B00050400007308280008F8200042403BFFF9A +:10E3C000008318240A0010103442100030828000AC +:10E3D0001040000A3C020020008210241040000778 +:10E3E0008F8200043C03FFFF34637FFF0083182407 +:10E3F00034428000AF820004AF8300000E000F980B +:10E400000000000014400007000000009743011EB8 +:10E410009742011C3063FFFF0002140000621825C0 +:10E42000AF8300089742010C8F4340003045FFFF47 +:10E430003402FFFF14620003000000000A001028ED +:10E44000241100208F42400030420100544000015E +:10E45000241100108F8400003082100050400014FE +:10E4600036310001308200201440000B3C021000C5 +:10E47000008210245040000E363100013C030E0093 +:10E480003C020DFF008318243442FFFF0043102B91 +:10E4900050400007363100013C0208008C42002C3D +:10E4A000244200013C010800AC22002C363100055A +:10E4B0003C0608008CC6003454C000238F85000041 +:10E4C0008F820004304240005440001F8F850000BE +:10E4D0003C021F01008210243C0310005443001A28 +:10E4E0008F85000030A20200144000178F850000C5 +:10E4F0003250FFFF363100028F4201B80440FFFE68 +:10E5000000000000AF400180020020210E000F42F9 +:10E51000AF4000208F8300042402BFFFA750019A60 +:10E52000006218248F820000A750018EA751018835 +:10E53000A74301A6A74201903C021000AF4201B8D8 +:10E540000A0010F5000010213C02100000A2102467 +:10E550001040003A0000000010C0000F0000000052 +:10E5600030A201001040000C3C0302003C020F00EE +:10E5700000A2102410430008000000008F82000851 +:10E58000005410240055102190420004244200043D +:10E590000A00109F000221C00000000000051602C2 +:10E5A0003050000F3A0300022E4203EF38420001C0 +:10E5B0002C6300010062182414600073240200011F +:10E5C0003C0308008C6300D02E06000C386200016A +:10E5D0002C4200010046102414400015001021C0F8 +:10E5E0002602FFFC2C4200045440001100002021B0 +:10E5F000386200022C420001004610241040000343 +:10E60000000512420A00109F000020210010182B64 +:10E610000043102450400006001021C000002021BB +:10E620003245FFFF0E000F633226FFFB001021C0B2 +:10E630003245FFFF0A0010F2362600028F424000EA +:10E640003C0308008C630024304201001040004667 +:10E6500030620001322200043070000D14400002CC +:10E660002413000424130002000512C238420001E2 +:10E670002E4303EF304200013863000100431025B0 +:10E68000104000033231FFFB2402FFFB0202802412 +:10E6900010C000183202000130A201001040001525 +:10E6A000320200013C020F0000A210243C030200D1 +:10E6B0001043000F8F8200082403FFFE0203802412 +:10E6C00000541024005510219042000402333025DC +:10E6D0002442000412000002000221C03226FFFF83 +:10E6E0000E000F633245FFFF1200002700001021CB +:10E6F000320200011040000D320200042402000129 +:10E7000012020002023330253226FFFF00002021D2 +:10E710000E000F633245FFFF2402FFFE0202802439 +:10E7200012000019000010213202000410400016EF +:10E7300024020001240200041202000202333025E8 +:10E740003226FFFF3245FFFF0E000F632404010055 +:10E750002402FFFB020280241200000B00001021A3 +:10E760000A0010F5240200011040000700001021EB +:10E770003245FFFF36260002000020210E000F6305 +:10E7800000000000000010218FBF00288FB500247A +:10E790008FB400208FB3001C8FB200188FB100140B +:10E7A0008FB0001003E0000827BD003027BDFFD068 +:10E7B000AFB000103C04600CAFBF002CAFB6002817 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC +:10E7E000004310243442380CAC8250002402000351 +:10E7F0003C106000AF4200088E0208083C1B8008F5 +:10E800003C010800AC2000203042FFF038420010EC +:10E810002C4200010E001B8DAF8200183C04FFFF4C +:10E820003C020400348308063442000CAE0219484E +:10E83000AE03194C3C0560168E0219808CA30000B3 +:10E840003442020000641824AE0219803C02535383 +:10E850001462000334A47C008CA200040050202128 +:10E860008C82007C8C830078AF820010AF83000C18 +:10E870008F55000032A200031040FFFD32A20001BC +:10E880001040013D32A200028F420128AF42002019 +:10E890008F4201048F430100AF8200000E000F3C45 +:10E8A000AF8300043C0208008C4200C01040000806 +:10E8B0008F8400003C0208008C4200C42442000106 +:10E8C0003C010800AC2200C40A00126900000000EC +:10E8D0003C020010008210241440010C8F830004BD +:10E8E0003C0208008C4200203C0308008C63003886 +:10E8F00000008821244200013C010800AC220020D5 +:10E900003C16080026D60038146000022474FFFF6D +:10E910000000A0219742010E308340003042FFFFEB +:10E920001060000A245200043C02002000821024DF +:10E9300050400007308280008F8200042403BFFF14 +:10E94000008318240A0011703442100030828000C5 +:10E950001040000A3C0200200082102410400007F2 +:10E960008F8200043C03FFFF34637FFF0083182481 +:10E9700034428000AF820004AF8300000E000F9885 +:10E980000000000014400007000000009743011E33 +:10E990009742011C3063FFFF00021400006218253B +:10E9A000AF8300089742010C8F4340003045FFFFC2 +:10E9B0003402FFFF14620003000000000A00118807 +:10E9C000241100208F4240003042010054400001D9 +:10E9D000241100108F840000308210005040001479 +:10E9E00036310001308200201440000B3C02100040 +:10E9F000008210245040000E363100013C030E000E +:10EA00003C020DFF008318243442FFFF0043102B0B +:10EA100050400007363100013C0208008C42002CB7 +:10EA2000244200013C010800AC22002C36310005D4 +:10EA30003C0608008CC6003454C000238F850000BB +:10EA40008F820004304240005440001F8F85000038 +:10EA50003C021F01008210243C0310005443001AA2 +:10EA60008F85000030A20200144000178F8500003F +:10EA70003250FFFF363100028F4201B80440FFFEE2 +:10EA800000000000AF400180020020210E000F4274 +:10EA9000AF4000208F8300042402BFFFA750019ADB +:10EAA000006218248F820000A750018EA7510188B0 +:10EAB000A74301A6A74201903C021000AF4201B853 +:10EAC0000A001267000010213C02100000A210246E +:10EAD0001040003A0000000010C0000F00000000CD +:10EAE00030A201001040000C3C0302003C020F0069 +:10EAF00000A2102410430008000000008F820008CC +:10EB000000541024005610219042000424420004B6 +:10EB10000A0011FF000221C00000000000051602DB +:10EB20003050000F3A0300022E4203EF384200013A +:10EB30002C63000100621824146000852402000187 +:10EB40003C0308008C6300D02E06000C38620001E4 +:10EB50002C4200010046102414400015001021C072 +:10EB60002602FFFC2C42000454400011000020212A +:10EB7000386200022C42000100461024504000037D +:10EB8000000512420A0011FF000020210010182B7E +:10EB90000043102450400006001021C00000202136 +:10EBA0003245FFFF0E000F633226FFFB001021C02D +:10EBB0003245FFFF0A001252362600028F42400003 +:10EBC0003C0308008C6300243042010010400046E2 +:10EBD00030620001322200043070000D1440000247 +:10EBE0002413000424130002000512C2384200015D +:10EBF0002E4303EF3042000138630001004310252B +:10EC0000104000033231FFFB2402FFFB020280248C +:10EC100010C000183202000130A20100104000159F +:10EC2000320200013C020F0000A210243C0302004B +:10EC30001043000F8F8200082403FFFE020380248C +:10EC40000054102400561021904200040233302555 +:10EC50002442000412000002000221C03226FFFFFD +:10EC60000E000F633245FFFF120000390000102133 +:10EC7000320200011040000D3202000424020001A3 +:10EC800012020002023330253226FFFF000020214D +:10EC90000E000F633245FFFF2402FFFE02028024B4 +:10ECA0001200002B00001021320200041040002846 +:10ECB0002402000124020004120200020233302563 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0 +:10ECD0002402FFFB020280241200001D000010210C +:10ECE0000A001267240200015040001900001021A0 +:10ECF0003245FFFF36260002000020210E000F6380 +:10ED0000000000000A001267000010212402BFFF6B +:10ED1000006210241040000800000000240287FF59 +:10ED200000621024144000083C020060008210249D +:10ED300010400005000000000E000D34000000002F +:10ED40000A001267000000000E0012C70000000059 +:10ED5000104000063C0240008F4301243C0260202A +:10ED6000AC430014000000003C024000AF420138F8 +:10ED70000000000032A200021040FEBD00000000B2 +:10ED80008F4201403C044000AF4200208F430148C5 +:10ED90003C02700000621824106400420000000071 +:10EDA0000083102B144000063C0260003C0220004F +:10EDB000106200073C0240000A0012C3000000007D +:10EDC0001062003C3C0240000A0012C30000000038 +:10EDD0008F4501408F4601448F42014800021402D2 +:10EDE000304300FF240200041462000A274401801B +:10EDF0008F4201B80440FFFE2402001CAC850000D5 +:10EE0000A082000B3C021000AF4201B80A0012C3FE +:10EE10003C0240002402000914620012000616029F +:10EE2000000229C0AF4500208F4201B80440FFFE18 +:10EE30002402000124030003AF450180A343018B9A +:10EE4000A740018EA740019AA7400190AF4001A8BA +:10EE5000A7420188A74201A6AF4001AC3C021000C6 +:10EE6000AF4201B88F4201B80440FFFE000000002D +:10EE7000AC8500008F42014800021402A482000801 +:10EE800024020002A082000B8F420148A4820010DD +:10EE90003C021000AC860024AF4201B80A0012C345 +:10EEA0003C0240000E001310000000000A0012C3D4 +:10EEB0003C0240000E001BC2000000003C0240006B +:10EEC000AF420178000000000A00112F000000008E +:10EED0008F4201003042003E144000112402000124 +:10EEE000AF4000488F420100304207C0104000058B +:10EEF00000000000AF40004CAF40005003E00008AD +:10EF000024020001AF400054AF4000408F42010096 +:10EF10003042380054400001AF4000442402000158 +:10EF200003E00008000000008F4201B80440FFFE2B +:10EF300024020001AF440180AF400184A74501884D +:10EF4000A342018A24020002A342018B9742014A94 +:10EF500014C00004A7420190AF4001A40A0012EFC0 +:10EF60003C0210008F420144AF4201A43C02100059 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA +:10EF80000440FFFE24020002AF440180AF4401842C +:10EF9000A7450188A342018AA342018B9742014AF7 +:10EFA000A7420190AF4001A48F420144AF4201A8A3 +:10EFB0003C02100003E00008AF4201B83C029000A0 +:10EFC0003442000100822025AF4400208F420020FF +:10EFD0000440FFFE0000000003E000080000000005 +:10EFE0003C028000344200010082202503E000083A +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 +:10F000008F50014093430149934201489344014882 +:10F01000306300FF304200FF00021200006228252A +:10F020002402001910620076308400802862001AE1 +:10F030001040001C24020020240200081062007707 +:10F04000286200091040000E2402000B2402000177 +:10F0500010620034286200025040000524020006BD +:10F0600050600034020020210A00139A00000000C2 +:10F0700010620030020020210A00139A00000000F4 +:10F080001062003B2862000C504000022402000E77 +:10F090002402000910620056020020210A00139A7F +:10F0A0000000000010620056286200211040000F8E +:10F0B000240200382402001C106200582862001D3F +:10F0C000104000062402001F2402001B1062004CA6 +:10F0D000000000000A00139A000000001062004ABD +:10F0E000020020210A00139A00000000106200456F +:10F0F0002862003910400007240200802462FFCB00 +:10F100002C42000210400045020020210A00139604 +:10F110000000302110620009000000000A00139A6C +:10F12000000000001480003D020020210A0013901E +:10F130008FBF00140A001396240600018F4201B805 +:10F140000440FFFE24020002A342018BA745018870 +:10F150009742014AA74201908F420144A74201927F +:10F160003C021000AF4201B80A00139C8FBF00148C +:10F170009742014A144000290000000093620005F4 +:10F180003042000414400025000000000E0013026D +:10F190000200202193620005020020213442000475 +:10F1A0000E00130BA36200059362000530420004B9 +:10F1B00014400002000000000000000D93620000F7 +:10F1C00024030020304200FF14430014000000001C +:10F1D0008F4201B80440FFFE24020005AF500180B9 +:10F1E000A342018B3C0210000A00139AAF4201B8FF +:10F1F0008FBF00148FB000100A0012F227BD001854 +:10F200000000000D02002021000030218FBF0014FB +:10F210008FB000100A0012DD27BD00180000000D9D +:10F220008FBF00148FB0001003E0000827BD001846 +:10F2300027BDFFE8AFBF00100E000F3C000000002C +:10F24000AF4001808FBF0010000020210A000FE7AF +:10F2500027BD00183084FFFF30A5FFFF00001821F4 +:10F260001080000700000000308200011040000202 +:10F2700000042042006518210A0013AB0005284055 +:10F2800003E000080060102110C0000624C6FFFF44 +:10F290008CA2000024A50004AC8200000A0013B573 +:10F2A0002484000403E000080000000010A000080F +:10F2B00024A3FFFFAC860000000000000000000057 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A +:10F2D00003E0000800000000308300FF30A500FFBD +:10F2E00030C600FF274701808F4201B80440FFFE6F +:10F2F000000000008F42012834634000ACE20000AF +:10F3000024020001ACE00004A4E30008A0E2000A2B +:10F3100024020002A0E2000B3C021000A4E5001051 +:10F32000ACE00024ACE00028A4E6001203E00008F2 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6 +:10F3400024030012304200FF1043000D00803021E2 +:10F350008F620044008210230440000A8FBF001017 +:10F360008F620048240400390000282100C21023C5 +:10F3700004410004240600120E0013C9000000001E +:10F380008FBF00102402000103E0000827BD001811 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 +:10F3A000AFB0002890C5000D0080902130A400105F +:10F3B0001080000B00C088218CC300088F620054AD +:10F3C0001062000730A20005144000B524040001BB +:10F3D0000E000D21000020210A0014BB0040202156 +:10F3E00030A200051040000930A30012108000ACCC +:10F3F000240400018E2300088F620054146200A9C7 +:10F400008FBF00340A00142C240400382402001298 +:10F41000146200A3240400010220202127A500106B +:10F420000E000CB2AFA000101040001102402021CD +:10F430008E220008AF620084AF6000400E0013020D +:10F44000000000009362007D024020213442002031 +:10F450000E00130BA362007D0E000CA902402021B8 +:10F46000240400382405008D0A0014B82406001274 +:10F470009362003E304200081040000F8FA200103F +:10F4800030420100104000078FA300148F6200601B +:10F490000062102304430008AF6300600A001441B7 +:10F4A00000000000AF6000609362003E2403FFF79D +:10F4B00000431024A362003E9362003E30420008E5 +:10F4C000144000022406000300003021936200343F +:10F4D000936300378F640084304200FF306300FF85 +:10F4E00000661821000318800043282100A4202B67 +:10F4F0001080000B000000009763003C8F620084C6 +:10F500003063FFFF004510230062182B14600004D5 +:10F51000000000008F6200840A00145D0045802313 +:10F520009762003C3050FFFF8FA300103062000450 +:10F5300010400004000628808FA2001C0A001465F9 +:10F540000202102B2E02021850400003240202185F +:10F550000A00146E020510233063000410600003DB +:10F56000004510238FA2001C00451023004080217D +:10F570002C42008054400001241000800E00130231 +:10F580000240202124020001AF62000C9362003E81 +:10F59000001020403042007FA362003E8E22000413 +:10F5A00024420001AF620040A770003C8F6200500F +:10F5B0009623000E00431021AF6200588F62005066 +:10F5C00000441021AF62005C8E220004AF6200187C +:10F5D0008E220008AF62001C8FA20010304200088B +:10F5E0005440000A93A20020A360003693620036C4 +:10F5F0002403FFDFA36200359362003E0043102422 +:10F60000A362003E0A0014988E220008A36200350F +:10F610008E220008AF62004C8F6200248F6300408E +:10F6200000431021AF6200489362000024030050A1 +:10F63000304200FF144300122403FF803C02080004 +:10F640008C4231A00242102100431024AF42002816 +:10F650003C0208008C4231A08E2400083C03000CC0 +:10F66000024210213042007F03421021004310214A +:10F67000AC4400D88E230008AF820014AC4300DCF9 +:10F680000E00130B02402021240400380000282122 +:10F690002406000A0E0013C9000000002404000123 +:10F6A0008FBF00348FB200308FB1002C8FB0002894 +:10F6B0000080102103E0000827BD003827BDFFF8B7 +:10F6C00027420180AFA20000308A00FF8F4201B8BC +:10F6D0000440FFFE000000008F4601283C020800A5 +:10F6E0008C4231A02403FF80AF86004800C2102165 +:10F6F00000431024AF4200243C0208008C4231A099 +:10F700008FA900008FA8000000C210213042007FA6 +:10F71000034218213C02000A00621821946400D4BC +:10F720008FA700008FA5000024020002AF83001401 +:10F73000A0A2000B8FA30000354260003084FFFFC1 +:10F74000A4E200083C021000AD260000AD04000455 +:10F75000AC60002427BD0008AF4201B803E00008F8 +:10F76000240200018F88003C938200288F830014BC +:10F770003C07080024E7779800481023304200FF38 +:10F78000304900FC246500888F860040304A000321 +:10F790001120000900002021248200048CA3000015 +:10F7A000304400FF0089102AACE3000024A50004C7 +:10F7B0001440FFF924E70004114000090000202153 +:10F7C0002482000190A30000304400FF008A102B27 +:10F7D000A0E3000024A500011440FFF924E7000184 +:10F7E00030C20003144000048F85003C3102000346 +:10F7F0001040000D0000000010A0000900002021B2 +:10F800002482000190C30000304400FF0085102BCB +:10F81000A0E3000024C600011440FFF924E7000122 +:10F8200003E00008000000001100FFFD000020219F +:10F83000248200048CC30000304400FF0088102B99 +:10F84000ACE3000024C600041440FFF924E70004E0 +:10F8500003E00008000000008F83003C9382002832 +:10F8600030C600FF30A500FF00431023304300FFE7 +:10F870008F820014008038210043102114C0000240 +:10F88000244800880083382130E20003144000053A +:10F8900030A2000314400003306200031040000D4A +:10F8A0000000000010A000090000202124820001B7 +:10F8B00090E30000304400FF0085102BA1030000FE +:10F8C00024E700011440FFF92508000103E00008C7 +:10F8D0000000000010A0FFFD000020212482000491 +:10F8E0008CE30000304400FF0085102BAD030000C6 +:10F8F00024E700041440FFF92508000403E0000891 +:10F90000000000000080482130AAFFFF30C600FF41 +:10F9100030E7FFFF274801808F4201B80440FFFE17 +:10F920008F820048AD0200008F420124AD02000426 +:10F930008D220020A5070008A102000A240200165B +:10F94000A102000B934301208D2200088D240004A6 +:10F95000306300FF004310219783003A00441021D8 +:10F960008D250024004310233C0308008C6331A044 +:10F970008F840014A502000C246300E82402FFFF1A +:10F98000A50A000EA5030010A5060012AD0500187B +:10F99000AD020024948201142403FFF73042FFFFDC +:10F9A000AD0200288C820118AD02002C3C02100030 +:10F9B000AD000030AF4201B88D220020004310247A +:10F9C00003E00008AD2200208F82001430E7FFFF23 +:10F9D00000804821904200D330A5FFFF30C600FFD1 +:10F9E0000002110030420F0000E238252748018054 +:10F9F0008F4201B80440FFFE8F820048AD02000034 +:10FA00008F420124AD0200048D220020A5070008CA +:10FA1000A102000A24020017A102000B9343012057 +:10FA20008D2200088D240004306300FF0043102164 +:10FA30009783003A004410218F8400140043102360 +:10FA40003C0308008C6331A0A502000CA505000E44 +:10FA5000246300E8A5030010A5060012AD00001401 +:10FA60008D220024AD0200188C82005CAD02001CC7 +:10FA70008C820058AD0200202402FFFFAD0200245A +:10FA8000948200E63042FFFFAD02002894820060BD +:10FA9000948300BE30427FFF3063FFFF00021200FC +:10FAA00000431021AD02002C3C021000AD000030DC +:10FAB000AF4201B8948200BE2403FFF700A21021D8 +:10FAC000A48200BE8D2200200043102403E0000821 +:10FAD000AD220020274301808F4201B80440FFFE81 +:10FAE0008F8200249442001C3042FFFF000211C0AC +:10FAF000AC62000024020019A062000B3C0210005E +:10FB0000AC60003003E00008AF4201B88F87002CE2 +:10FB100030C300FF8F4201B80440FFFE8F820048CF +:10FB200034636000ACA2000093820044A0A20005F0 +:10FB30008CE20010A4A20006A4A300088C8200207E +:10FB40002403FFF7A0A2000A24020002A0A2000BD7 +:10FB50008CE20000ACA200108CE20004ACA2001405 +:10FB60008CE2001CACA200248CE20020ACA2002895 +:10FB70008CE2002CACA2002C8C820024ACA20018D9 +:10FB80003C021000AF4201B88C82002000431024D8 +:10FB900003E00008AC8200208F86001427BDFFE838 +:10FBA000AFBF0014AFB0001090C20063304200201D +:10FBB0001040000830A500FF8CC2007C2403FFDF4A +:10FBC00024420001ACC2007C90C2006300431024B8 +:10FBD000A0C2006310A000238F830014275001806F +:10FBE000020028210E0015D6240600828F82001400 +:10FBF000904200633042004050400019A38000440E +:10FC00008F83002C8F4201B80440FFFE8F82004892 +:10FC1000AE02000024026082A60200082402000254 +:10FC2000A202000B8C620008AE0200108C62000C75 +:10FC3000AE0200148C620014AE0200188C62001830 +:10FC4000AE0200248C620024AE0200288C620028E0 +:10FC5000AE02002C3C021000AF4201B8A380004469 +:10FC60008F8300148FBF00148FB000109062006368 +:10FC700027BD00183042007FA06200639782003ADF +:10FC80008F86003C8F850014938300280046102344 +:10FC9000A782003AA4A000E490A400638F820040F1 +:10FCA000AF83003C2403FFBF0046102100832024C3 +:10FCB000AF820040A0A400638F820014A04000BD6A +:10FCC0008F82001403E00008A44000BE8F8A001455 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B +:10FCE000AFBF00189389001C954200E430D100FF9B +:10FCF0000109182B0080802130AC00FF3047FFFF46 +:10FD00000000582114600003310600FF012030215B +:10FD1000010958239783003A0068102B1440003CD7 +:10FD20000000000014680007240200018E02002079 +:10FD30002403FFFB34E7800000431024AE020020C0 +:10FD40002402000134E70880158200053165FFFFB9 +:10FD50000E001554020020210A00169102002021F5 +:10FD60000E001585020020218F8400482743018062 +:10FD70008F4201B80440FFFE24020018AC6400006A +:10FD8000A062000B8F840014948200E6A46200102D +:10FD90003C021000AC600030AF4201B894820060B9 +:10FDA00024420001A4820060948200603C030800A9 +:10FDB0008C63318830427FFF5443000F02002021C2 +:10FDC000948200602403800000431024A482006019 +:10FDD0009082006090830060304200FF000211C2F8 +:10FDE00000021027000211C03063007F0062182556 +:10FDF000A083006002002021022028218FBF00186C +:10FE00008FB100148FB000100A0015F927BD002033 +:10FE1000914200632403FF8000431025A142006348 +:10FE20009782003A3048FFFF110000209383001CA6 +:10FE30008F840014004B1023304600FF948300E4AD +:10FE40002402EFFF0168282B00621824A48300E439 +:10FE500014A000038E020020010058210000302170 +:10FE60002403FFFB34E7800000431024AE0200208F +:10FE700024020001158200053165FFFF0E001554B4 +:10FE8000020020210A0016B99783003A0E0015855A +:10FE9000020020219783003A8F82003CA780003A1D +:10FEA00000431023AF82003C9383001C8F82001418 +:10FEB0008FBF00188FB100148FB0001027BD002035 +:10FEC00003E00008A04300BD938200442403000126 +:10FED00027BDFFE8004330042C420020AFB00010E3 +:10FEE000AFBF00142410FFFE10400005274501801D +:10FEF0003C0208008C4231900A0016D600461024BD +:10FF00003C0208008C423194004610241440000743 +:10FF1000240600848F8300142410FFFF9062006287 +:10FF20003042000F34420040A06200620E0015D63D +:10FF300000000000020010218FBF00148FB00010DD +:10FF400003E0000827BD00188F83002427BDFFE0D1 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB +:10FF60009062000D00A0902130D100FF3042007F50 +:10FF7000A062000D8F8500148E4300180080802140 +:10FF80008CA2007C146200052402000E90A2006383 +:10FF9000344200200A0016FFA0A200630E0016C51E +:10FFA000A38200442403FFFF104300472404FFFF03 +:10FFB00052200045000020218E4300003C0200102A +:10FFC00000621024504000043C020008020020217E +:10FFD0000A00170E24020015006210245040000988 +:10FFE0008E45000002002021240200140E0016C5D8 +:10FFF000A38200442403FFFF104300332404FFFFC7 +:020000021000EC +:100000008E4500003C02000200A2102410400016A1 +:100010003C0200048F8600248CC200148CC30010A4 +:100020008CC40014004310230044102B50400005E2 +:10003000020020218E43002C8CC2001010620003AD +:10004000020020210A00173F240200123C02000493 +:1000500000A210245040001C00002021020020219A +:100060000A00173F2402001300A2102410400006CB +:100070008F8300248C620010504000130000202168 +:100080000A001739020020218C6200105040000441 +:100090008E42002C020020210A00173F240200118A +:1000A00050400009000020210200202124020017F6 +:1000B0000E0016C5A38200442403FFFF1043000274 +:1000C0002404FFFF000020218FBF001C8FB2001806 +:1000D0008FB100148FB000100080102103E00008E1 +:1000E00027BD00208F83001427BDFFD8AFB40020A8 +:1000F000AFB3001CAFB20018AFB10014AFB0001026 +:10010000AFBF0024906200638F91002C2412FFFF88 +:100110003442004092250000A06200638E2200104D +:100120000080982130B0003F105200060360A021EB +:100130002402000D0E0016C5A38200441052005484 +:100140002404FFFF8F8300148E2200188C63007C30 +:1001500010430007026020212402000E0E0016C585 +:10016000A38200442403FFFF104300492404FFFF3F +:1001700024040020120400048F83001490620063A2 +:1001800034420020A06200638F85003410A000205C +:1001900000000000560400048F8200140260202139 +:1001A0000A0017902402000A9683000A9442006015 +:1001B0003042FFFF144300048F8200202404FFFD1F +:1001C0000A0017B7AF82003C3C0208008C42318C19 +:1001D0000045102B14400006026020210000282159 +:1001E0000E001646240600010A0017B70000202161 +:1001F0002402002D0E0016C5A38200442403FFFF35 +:10020000104300232404FFFF0A0017B70000202139 +:10021000160400058F8400148E2300142402FFFFAF +:100220005062001802602021948200602442000184 +:10023000A4820060948200603C0308008C633188D3 +:1002400030427FFF5443000F0260202194820060FF +:100250002403800000431024A48200609082006088 +:1002600090830060304200FF000211C2000210279C +:10027000000211C03063007F00621825A083006077 +:10028000026020210E0015F9240500010000202144 +:100290008FBF00248FB400208FB3001C8FB20018D2 +:1002A0008FB100148FB000100080102103E000080F +:1002B00027BD00288F83001427BDFFE8AFB00010D2 +:1002C000AFBF0014906200638F87002C00808021F4 +:1002D000344200408CE60010A06200633C0308003A +:1002E0008C6331B030C23FFF0043102B1040004EF2 +:1002F0008F8500302402FF8090A3000D004310245E +:10030000304200FF504000490200202100061382C5 +:10031000304800032402000255020044020020215C +:1003200094A2001C8F85001424030023A4A20114AE +:100330008CE60000000616023042003F1043001019 +:100340003C0300838CE300188CA2007C1062000642 +:100350002402000E0E0016C5A38200442403FFFFF2 +:10036000104300382404FFFF8F8300149062006361 +:1003700034420020A06200630A0017FC8F8300242F +:1003800000C31024144300078F83002490A200624E +:100390003042000F34420020A0A20062A38800383F +:1003A0008F8300249062000D3042007FA062000D18 +:1003B0008F83003410600018020020218F840030E9 +:1003C0008C8200100043102B1040000924020018FA +:1003D000020020210E0016C5A38200442403FFFF63 +:1003E000104300182404FFFF0A00182400002021F5 +:1003F0008C820010240500010200202100431023FC +:100400008F830024240600010E001646AC62001003 +:100410000A001824000020210E0015F9240500010F +:100420000A00182400002021020020212402000DCF +:100430008FBF00148FB0001027BD00180A0016C52A +:10044000A38200448FBF00148FB0001000801021E1 +:1004500003E0000827BD001827BDFFC8AFB2002089 +:10046000AFBF0034AFB60030AFB5002CAFB400283A +:10047000AFB30024AFB1001CAFB000188F46012805 +:100480003C0308008C6331A02402FF80AF86004843 +:1004900000C318213065007F03452821006218241D +:1004A0003C02000AAF43002400A2282190A200626F +:1004B00000809021AF850014304200FF000211023D +:1004C000A382003890A200BC304200021440000217 +:1004D00024030034240300308F820014A3830028F7 +:1004E000938300388C4200C0A3800044AF82003C5C +:1004F000240200041062031C8F84003C8E4400041C +:10050000508003198F84003C8E4200103083FFFF1F +:10051000A784003A106002FFAF8200408F8400146D +:100520002403FF809082006300621024304200FFA9 +:10053000144002CF9785003A9383003824020002CA +:1005400030B6FFFF14620005000088219382002866 +:100550002403FFFD0A001B19AF82003C8F82003C80 +:1005600002C2102B144002A18F8400400E0014EC34 +:1005700000000000938300283C040800248477983E +:10058000240200341462002EAF84002C3C0A0800C0 +:100590008D4A77C82402FFFFAFA2001000803821E7 +:1005A0002405002F3C09080025297398240800FF22 +:1005B0002406FFFF90E2000024A3FFFF00062202B2 +:1005C00000C21026304200FF0002108000491021B6 +:1005D0008C420000306500FF24E7000114A8FFF5FD +:1005E0000082302600061027AFA20014AFA2001030 +:1005F0000000282127A7001027A6001400C51023FB +:100600009044000324A2000100A71821304500FFF8 +:100610002CA200041440FFF9A06400008FA2001077 +:100620001142000724020005024020210E0016C5D9 +:10063000A38200442403FFFF104300642404FFFF4F +:100640003C0208009042779C104000098F82001401 +:10065000024020212402000C0E0016C5A382004493 +:100660002403FFFF104300592404FFFF8F8200146E +:10067000A380001C3C0308008C63779C8C440080A2 +:100680003C0200FF3442FFFF006218240083202B4D +:1006900010800008AF83003402402021240200199A +:1006A0000E0016C5A38200442403FFFF1043004739 +:1006B0002404FFFF8F87003C9782003A8F85003427 +:1006C000AF8700200047202310A0003BA784003AFA +:1006D0008F86001430A200030002102390C300BCD8 +:1006E0003050000300B0282100031882307300014D +:1006F0000013108000A228213C0308008C6331A065 +:100700008F8200483084FFFF0085202B004310219A +:1007100010800011244200888F84002C1082000E6B +:100720003C033F013C0208008C42779800431024B0 +:100730003C0325001443000630E500FF8C820000D6 +:10074000ACC200888C8200100A0018E9ACC2009884 +:100750000E001529000030219382001C8F850014A3 +:100760008F830040020238218F82003CA387001C47 +:1007700094A400E4006218218F82003434841000B5 +:10078000AF83004000503021A4A400E41260000EAA +:10079000AF86003C24E20004A382001C94A200E483 +:1007A00024C30004AF83003C34422000A4A200E430 +:1007B0000A001906000020218F820040AF80003C13 +:1007C00000471021AF820040000020212414FFFFC9 +:1007D000109402112403FFFF3C0808008D0877A83D +:1007E0003C0208008C4231B03C03080090637798CB +:1007F00031043FFF0082102B1040001B3067003F88 +:100800003C0208008C4231A88F83004800042180FC +:1008100000621821006418213062007F0342282101 +:100820003C02000C00A228213C020080344200015E +:100830003066007800C230252402FF800062102458 +:10084000AF42002830640007AF4208048F820014D2 +:100850000344202124840940AF460814AF850024B6 +:10086000AF840030AC4301189383003824020003A6 +:10087000146201CF240200012402002610E201D1FB +:1008800028E2002710400013240200322402002234 +:1008900010E201CC28E200231040000824020024CA +:1008A0002402002010E201B82402002110E20147D6 +:1008B000024020210A001AFB2402000B10E201C1B1 +:1008C0002402002510E20010024020210A001AFB39 +:1008D0002402000B10E201AE28E2003310400006B3 +:1008E0002402003F2402003110E2009A024020213D +:1008F0000A001AFB2402000B10E201A5024020218D +:100900000A001AFB2402000B8F90002C3C03080005 +:100910008C6331B08F8500308E0400100000A82158 +:100920008CB3001430823FFF0043102B8CB10020A9 +:100930005040018F0240202190A3000D2402FF802F +:1009400000431024304200FF504001890240202122 +:10095000000413823042000314400185024020212C +:1009600094A3001C8F8200148E040028A443011459 +:100970008CA20010026218231064000302402021A0 +:100980000A00197C2402001F8F82003400621021AB +:100990000262102B104000088F83002402402021A7 +:1009A000240200180E0016C5A382004410540174DE +:1009B0002404FFFF8F8300248F8400348C62001096 +:1009C0000224882100441023AC6200108F8200149E +:1009D000AC7100208C4200680051102B10400009BF +:1009E0008F830030024020212402001D0E0016C516 +:1009F000A38200442403FFFF104301612404FFFF8E +:100A00008F8300308E0200248C6300241043000783 +:100A1000024020212402001C0E0016C5A3820044BF +:100A20002403FFFF104301562404FFFF8F8400249A +:100A30008C82002424420001AC8200241233000482 +:100A40008F8200148C4200685622000E8E02000035 +:100A50008E0200003C030080004310241440000D6F +:100A60002402001A024020210E0016C5A382004471 +:100A70002403FFFF104301422404FFFF0A0019BAB8 +:100A80008E0200143C0300800043102450400003F9 +:100A90008E020014AC8000208E0200142411FFFF8F +:100AA0001051000E3C0308003C0208008C423190BB +:100AB000004310242403001B14400007A3830044B8 +:100AC0000E0016C5024020211051012D2404FFFF05 +:100AD0000A0019CB8E030000A38000448E0300009F +:100AE0003C02000100621024104000123C02008011 +:100AF0000062102414400008024020212402001A41 +:100B00000E0016C5A38200442403FFFF1043011CFE +:100B10002404FFFF02402021020028210E0016E5D8 +:100B2000240600012403FFFF104301152404FFFFE6 +:100B3000241500018F83002402A0302102402021CF +:100B40009462003624050001244200010A001ADFE5 +:100B5000A46200368F90002C3C0308008C6331B0F7 +:100B60008E13001032623FFF0043102B10400089AB +:100B70008F8400302402FF809083000D00431024F6 +:100B8000304200FF104000842402000D0013138245 +:100B900030420003240300011443007F2402000DAF +:100BA0009082000D30420008544000048F820034CF +:100BB000024020210A001A102402002450400004A0 +:100BC0008E03000C024020210A001A102402002784 +:100BD0008C82002054620006024020218E0300080F +:100BE0008C820024506200098E02001402402021F1 +:100BF000240200200E0016C5A38200441054007188 +:100C00002403FFFF0A001A458F8400242411FFFFEC +:100C1000145100048F860014024020210A001A405B +:100C2000240200258E0300188CC2007C1062000391 +:100C30002402000E0A001A40024020218E030024E4 +:100C40008C82002810620003240200210A001A404E +:100C5000024020218E0500288C82002C10A2000367 +:100C60002402001F0A001A40024020218E03002C9B +:100C700014600003240200230A001A4002402021CD +:100C80008CC200680043102B104000032402002691 +:100C90000A001A40024020218C82001400651821AD +:100CA0000043102B104000088F84002402402021B4 +:100CB000240200220E0016C5A382004410510041F8 +:100CC0002403FFFF8F8400242403FFF79082000D8C +:100CD00000431024A082000D8F8600143C030800FE +:100CE0008C6331AC8F82004894C400E08F8500246F +:100CF0000043102130847FFF000420400044102175 +:100D00003043007F034320213C03000E0083202159 +:100D10002403FF8000431024AF42002CA493000062 +:100D20008CA2002824420001ACA200288CA2002C36 +:100D30008E03002C00431021ACA2002C8E02002C4C +:100D4000ACA200308E020014ACA2003494A2003A8F +:100D500024420001A4A2003A94C600E03C0208002C +:100D60008C4231B024C4000130837FFF1462000F35 +:100D700000803021240280000082302430C2FFFF36 +:100D8000000213C2304200FF000210270A001A7E40 +:100D9000000233C02402000D024020210E0016C5BF +:100DA000A38200440A001A84004018218F82001494 +:100DB00002402021240500010E0015F9A44600E0A0 +:100DC000000018210A001B16006088218F90002C5B +:100DD0003C0308008C6331B08E05001030A23FFF49 +:100DE0000043102B104000612402FF808F840030EC +:100DF0009083000D00431024304200FF5040005CFF +:100E0000024020218F8200341040000B0005138225 +:100E10008F8200149763000A944200603042FFFF03 +:100E200014430005000513828F8200202404FFFD77 +:100E30000A001AF3AF82003C304200031440000E57 +:100E40000000000092020002104000058E03002402 +:100E500050600015920300030A001AAF02402021DF +:100E60008C82002450620010920300030240202173 +:100E70000A001AB72402000F9082000D30420008C9 +:100E80005440000992030003024020212402001074 +:100E90000E0016C5A38200442403FFFF1043003850 +:100EA0002404FFFF92030003240200025462000C9A +:100EB000920200038F820034544000099202000322 +:100EC000024020212402002C0E0016C5A3820044FB +:100ED0002403FFFF1043002A2404FFFF92020003B3 +:100EE0000200282102402021384600102CC60001B3 +:100EF0002C4200010E0016E5004630252410FFFFAD +:100F00001050001F2404FFFF8F8300341060001373 +:100F1000024020213C0208008C42318C0043102BFF +:100F200014400007000000000000282124060001F2 +:100F30000E001646000000000A001AF300002021EF +:100F40002402002D0E0016C5A38200441050000C90 +:100F50002404FFFF0A001AF3000020210E0015F9F7 +:100F6000240500010A001AF300002021024020217C +:100F70002402000D0E0016C5A3820044004020216B +:100F80000A001B16008088211514000E00000000C6 +:100F90000E00174C024020210A001B160040882139 +:100FA0000E0016C5A38200440A001B1600408821CB +:100FB00014620017022018212402002314E2000505 +:100FC0002402000B0E0017C0024020210A001B164D +:100FD0000040882102402021A38200440E0016C553 +:100FE0002411FFFF0A001B170220182130A500FF63 +:100FF0000E001529240600019783003A8F82003CD9 +:10100000A780003A00431023AF82003C0220182141 +:101010001220003E9782003A2402FFFD5462003EF7 +:101020008E4300208E4200048F830014005610234C +:10103000AE420004906200633042007FA062006311 +:101040008E4200208F840014A780003A34420002B0 +:10105000AE420020A48000E4908200632403FFBF1E +:1010600000431024A08200630A001B598E43002015 +:101070009082006300621024304200FF1040002381 +:101080009782003A90820088908300BD2485008872 +:101090003042003F2444FFE02C820020A383001C48 +:1010A00010400019AF85002C2402000100821804B2 +:1010B000306200191440000C3C02800034420002EF +:1010C000006210241440000B306200201040000F1A +:1010D0009782003A90A600010240202124050001D9 +:1010E0000A001B5330C60001024020210A001B5297 +:1010F00024050001024020210000282124060001CF +:101100000E001646000000009782003A1440FD04CD +:101110008F8400148E4300203062000410400012BF +:101120008F84003C2402FFFB00621024AE420020AA +:10113000274301808F4201B80440FFFE8F820048A0 +:10114000AC6200008F420124AC6200042402608380 +:10115000A462000824020002A062000B3C021000FE +:10116000AF4201B88F84003C8F8300148FBF0034DE +:101170008FB600308FB5002C8FB400288FB30024B9 +:101180008FB200208FB1001C8FB000182402000124 +:1011900027BD003803E00008AC6400C030A500FFA4 +:1011A0002403000124A900010069102B1040000C49 +:1011B00000004021240A000100A31023004A380443 +:1011C00024630001308200010069302B10400002CE +:1011D000000420420107402554C0FFF800A310235B +:1011E00003E00008010010213C020800244260A432 +:1011F0003C010800AC22738C3C02080024425308D6 +:101200003C010800AC2273902402000627BDFFE0D9 +:101210003C010800A02273943C021EDCAFB200180F +:10122000AFB10014AFBF001CAFB0001034526F411B +:1012300000008821240500080E001B7A02202021CE +:10124000001180803C07080024E773980002160014 +:1012500002071821AC6200000000282124A200012E +:101260003045FFFF8C6200002CA6000804410002FC +:10127000000220400092202614C0FFF8AC64000059 +:10128000020780218E0400000E001B7A2405002036 +:10129000262300013071FFFF2E2301001460FFE5BB +:1012A000AE0200008FBF001C8FB200188FB1001477 +:1012B0008FB0001003E0000827BD002027BDFFD835 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425 +:1012D000AFB000108F5101408F48014800089402C0 +:1012E000324300FF311300FF8F4201B80440FFFE7C +:1012F00027500180AE1100008F420144AE0200046D +:1013000024020002A6120008A202000B240200140C +:10131000AE1300241062002528620015104000085A +:101320002402001524020010106200302402001272 +:10133000106200098FBF00200A001CB58FB3001C8B +:101340001062007024020022106200378FBF00205C +:101350000A001CB58FB3001C3C0208008C4231A06F +:101360002403FF800222102100431024AF420024F6 +:101370003C0208008C4231A0022210213042007F42 +:10138000034218213C02000A00621821166000BCCA +:10139000AF830014906200623042000F344200308C +:1013A000A06200620A001CB48FBF00203C046000F1 +:1013B0008C832C083C02F0033442FFFF00621824A7 +:1013C000AC832C083C0208008C4231A08C832C0892 +:1013D000244200740002108200021480006218256A +:1013E000AC832C080A001CB48FBF00203C0208000C +:1013F0008C4231A02403FF800222102100431024DC +:10140000AF4200243C0208008C4231A03C03000A99 +:10141000022210213042007F03421021004310219C +:101420000A001CB3AF8200143C0208008C4231A0B9 +:101430002405FF800222102100451024AF42002421 +:101440003C0208008C4231A0022210213042007F71 +:10145000034218213C02000A0062182190620063D6 +:1014600000A21024304200FF10400085AF8300141A +:1014700024620088944300123C0208008C4231A888 +:1014800030633FFF00031980022210210043102126 +:101490003043007F03432021004510243C03000C0F +:1014A00000832021AF4200289082000D00A210246A +:1014B000304200FF10400072AF8400249082000D83 +:1014C000304200101440006F8FBF00200E0015C87E +:1014D000000000008F4201B80440FFFE0000000041 +:1014E000AE1100008F420144AE020004240200024B +:1014F000A6120008A202000BAE1300240A001CB4BE +:101500008FBF00202406FF8002261024AF42002057 +:101510003C0208008C4231A031043FFF00042180CE +:101520000222102100461024AF4200243C03080090 +:101530008C6331A83C0208008C4231A03227007F26 +:101540000223182102221021006418213042007F5A +:101550003064007F034228213C02000A0066182400 +:1015600000A22821034420213C02000C00822021FB +:10157000AF4300283C020008034718210062902175 +:10158000AF850014AF8400240E0015C8010080212F +:101590008F4201B80440FFFE8F8200248F84001424 +:1015A000274501809042000DACB10000A4B00006B8 +:1015B000000216000002160300021027000237C2C4 +:1015C00014C00016248200889442001232033FFFA8 +:1015D00030423FFF14430012240260829083006374 +:1015E0002402FF8000431024304200FF5040000CD2 +:1015F00024026082908200623042000F3442004038 +:10160000A082006224026084A4A200082402000DCB +:10161000A0A200050A001C9E3C0227002402608252 +:10162000A4A20008A0A000053C02270000061C00A0 +:101630000062182524020002A0A2000BACA3001037 +:10164000ACA00014ACA00024ACA00028ACA0002CDE +:101650008E42004C8F840024ACA200189083000DB1 +:101660002402FF8000431024304200FF1040000598 +:101670008FBF00209082000D3042007FA082000DBD +:101680008FBF00208FB3001C8FB200188FB10014E1 +:101690008FB000103C02100027BD002803E00008B6 +:1016A000AF4201B80800343008003430080033A8D5 +:1016B000080033E0080034140800343808003438D7 +:1016C00008003438080033180A0001240000000024 +:1016D000000000000000000D747061362E322E33C1 +:1016E00000000000060203010000000000000000EE +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000001000000376 +:10176000000000000000000D0000000D3C02080019 +:1017700024421C003C03080024632094AC40000079 +:101780000043202B1480FFFD244200043C1D080070 +:1017900037BD2FFC03A0F0213C1008002610049058 +:1017A0003C1C0800279C1C000E00015C000000008F +:1017B0000000000D3084FFFF308200078F85001885 +:1017C00010400002248300073064FFF800853021B8 +:1017D00030C41FFF03441821247B4000AF85001C48 +:1017E000AF84001803E00008AF4400843084FFFF9A +:1017F000308200078F8500208F860028104000026D +:10180000248300073064FFF8008520210086182B10 +:1018100014600002AF8500240086202303442821A1 +:1018200034068000AF840020AF44008000A6202151 +:1018300003E00008AF84003827BDFFD8AFB3001C19 +:10184000AFB20018AFB00010AFBF0024AFB400209B +:10185000AFB100143C0860088D1450002418FF7FBD +:101860003C1A8000029898243672380CAD12500051 +:101870008F5100083C07601C3C08600036300001B6 +:10188000AF500008AF800018AF400080AF40008428 +:101890008CE600088D0F08083C0760168CEC0000F1 +:1018A00031EEFFF039CA00103C0DFFFF340B800011 +:1018B0003C030080034B48212D440001018D282466 +:1018C0003C0253533C010800AC230420AF8900388C +:1018D000AF860028AF840010275B400014A20003ED +:1018E00034E37C008CF90004032818218C7F007CF1 +:1018F0008C6500783C0280003C0B08008D6B048CEA +:101900003C0A08008D4A048834520070AF85003CC0 +:10191000AF9F00403C13080026731C440240A021E6 +:101920008E4800008F46000038C30001306400017B +:1019300010800017AF880034028048218D2F0000EE +:101940003C0508008CA5045C3C1808008F1804585E +:1019500001E8102300A280210000C8210202402BD0 +:1019600003198821022838213C010800AC30045CAE +:101970003C010800AC2704588F4E000039CD00010F +:1019800031AC00011580FFED01E04021AF8F003444 +:101990008E5100003C0708008CE7045C3C0D0800F9 +:1019A0008DAD04580228802300F0602100007021D2 +:1019B0000190302B01AE1821006620213C01080067 +:1019C000AC2C045C3C010800AC2404588F46010890 +:1019D0008F47010030C92000AF860000AF87000CA0 +:1019E0001120000A00C040213C1808008F18042C68 +:1019F000270800013C010800AC28042C3C184000DA +:101A0000AF5801380A000196000000009749010410 +:101A100000002821014550213122FFFF0162582199 +:101A20000162F82B015F502130D902003C0108000F +:101A3000AC2B048C3C010800AC2A0488172000154C +:101A400024040F0010E400130000000024080D001F +:101A500010E8023B30CD000611A0FFE93C18400021 +:101A6000936E00002409001031C400F01089027147 +:101A700024020070108202E58F880014250F0001F7 +:101A8000AF8F00143C184000AF5801380A0001968F +:101A900000000000974C01041180FFD93C18400061 +:101AA00030C34000146000A1000000008F460178A0 +:101AB00004C0FFFE8F87003824100800240F0008A0 +:101AC0008CE30008AF500178A74F0140A7400142C6 +:101AD000974E01048F86000031C9FFFF30CD000111 +:101AE00011A002E1012040212531FFFE241800024F +:101AF000A75801463228FFFFA75101483C190800AA +:101B00008F39043C172002D08F8C000C30DF00206E +:101B100017E00002240400092404000130C20C0074 +:101B2000240504005045000134840004A744014A00 +:101B30003C1108008E3104203C1800483C10000184 +:101B40000238182530CF00020070282511E000046B +:101B5000000018213C19010000B9282524030001C8 +:101B600030DF000453E00005AF8300083C0600109E +:101B700000A6282524030001AF830008AF4510000C +:101B80000000000000000000000000000000000055 +:101B90008F83000810600023000000008F451000B4 +:101BA00004A1FFFE000000001060001E0000000005 +:101BB0008F4410003C0C0020008C102410400019B1 +:101BC0008F8E000031CD000211A000160000000031 +:101BD000974F101415E000130000000097591008EB +:101BE0003338FFFF271100060011188200033080F0 +:101BF00000C7282132300001322300031200032CD9 +:101C00008CA200000000000D00C7F821AFE2000028 +:101C10003C0508008CA5043024A600013C01080006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E +:101C30008CEC0000118202A6000020218CED000037 +:101C400031AC01001180028A000000003C02080053 +:101C50008C4204743C0308008C63044C3C1F080055 +:101C60008FFF04703C1808008F1804480048382182 +:101C70000068802100E8282B03E430210208402B73 +:101C80000304882100C57021022878213C01080046 +:101C9000AC30044C3C010800AC2F04483C01080067 +:101CA000AC2704743C010800AC2E04708F8400182B +:101CB0000120302131290007249F000833F91FFF3C +:101CC00003594021AF84001CAF990018251B400028 +:101CD000AF590084112000038F83002024C2000725 +:101CE0003046FFF88F84002800C3282100A4302B41 +:101CF00014C00002AF83002400A428230345602100 +:101D0000340D8000018D10213C0F1000AF850020A4 +:101D1000AF820038AF450080AF4F01788F88001444 +:101D2000250F00010A0001EFAF8F00148F62000839 +:101D30008F670000240500300007760231C300F0F1 +:101D4000106500A7240F0040546FFF4C8F880014CB +:101D50008F4B01780560FFFE0000000030CA0200D2 +:101D600015400003000612820000000D00061282DA +:101D7000304D0003000D4900012D18210003808023 +:101D8000020D402100086080019380218E1F000019 +:101D900017E00002000000000000000D8F6E00043C +:101DA00005C202BD92070006920E000592020004D1 +:101DB0003C090001000E18800070F8218FED00181A +:101DC000277100082448000501A96021000830821D +:101DD000AFEC0018022020210E00059E26050014FD +:101DE000920A00068F7900043C0B7FFF000A2080D6 +:101DF000009178218DF800043566FFFF0326282422 +:101E000003053821ADE70004920E0005920D000491 +:101E1000960C0008000E10800051C8218F2300008E +:101E2000974901043C07FFFF006758243128FFFF52 +:101E3000010DF82103EC50233144FFFF01643025EC +:101E4000AF260000920300072418000110780275E5 +:101E5000240F0003106F0285000000008E050010A3 +:101E60002419000AA7590140A7450142921800040D +:101E70008F860000240F0001A7580144A7400146A7 +:101E80009747010430D100023C050041A7470148B3 +:101E900000001821A74F014A1220000330CB000494 +:101EA0003C0501412403000151600005AF83000897 +:101EB0003C06001000A6282524030001AF8300087B +:101EC000AF4510000000000000000000000000000E +:101ED000000000008F8A000811400004000000008C +:101EE0008F4410000481FFFE000000008F6B000093 +:101EF000920800043C1108008E310444AF8B0004AA +:101F000097590104311800FF3C0E08008DCE0440A3 +:101F10003325FFFF0305382102276021000010212F +:101F2000250F000A31E8FFFF0187482B01C2682115 +:101F300001A9F821311000073C010800AC2C044431 +:101F40003C010800AC3F0440120000038F8C0018D5 +:101F50002506000730C8FFF8010C682131BF1FFFBC +:101F6000AF8C001CAF9F0018AF5F00849744010442 +:101F7000035F80213084FFFF308A00071140000397 +:101F8000261B4000248900073124FFF88F8200209F +:101F90008F850028008220210085702B15C000024B +:101FA000AF820024008520233C0B08008D6B048C3D +:101FB0003C0A08008D4A04880344882134038000C9 +:101FC000022310213C0F1000AF840020AF820038A4 +:101FD000AF440080AF4F01780A0002968F8800144A +:101FE0008F5001780600FFFE30D10200162000035A +:101FF000000612820000000D00061282305F00030E +:10200000001F1900007F302100062080009FC8219A +:1020100000194880013380218E180000130000024F +:10202000000000000000000D8F6C000C058001FB1B +:102030008F870038240E0001AE0E00008CE30008EC +:10204000A20000078F65000400055402314D00FF17 +:1020500025A80005000830822CCB00411560000245 +:10206000A20A00040000000D8F7800043C03FFFF6B +:1020700000E02821330BFFFF256C000B000C1082C1 +:1020800000022080008748218D3F000026040014B4 +:10209000A618000803E3C8240E00059EAD39000011 +:1020A0008F4F01083C11100001F1382410E001AB02 +:1020B00000000000974D01049208000725AAFFECDC +:1020C000350600023144FFFFA2060007960600080D +:1020D0002CC7001354E0000592030007921100077B +:1020E000362F0001A20F00079203000724180001F9 +:1020F000107801C224090003106901D58F880038C7 +:1021000030CBFFFF257100020011788331E400FF1E +:1021100000042880A20F000500A848218D2D000092 +:10212000974A01043C0EFFFF01AEF8243143FFFF44 +:10213000006B1023244CFFFE03ECC825AD390000D2 +:10214000920600053C03FFF63462FFFF30D800FF23 +:102150000018388000F08821922F00143C04FF7F83 +:102160003487FFFF31EE000F01C65821316500FFB3 +:1021700000055080015068218DAC00200148F821F5 +:10218000A20B00060182C824AE0C000CAFF9000CB3 +:10219000920900068E11000C032778240009C080E4 +:1021A0000310702195C60026030828210227202449 +:1021B000AE04000CADCF0020ADC60024ACA60010CC +:1021C0008F8800003C0B08008D6B048C3C0A0800D3 +:1021D0008D4A0488241F001024190002A75F0140C3 +:1021E000A7400142A7400144A7590146974901046D +:1021F00024070001310600022538FFFEA7580148D8 +:102200003C050009A747014A10C00003000018213F +:102210003C05010924030001310C00045180000534 +:10222000AF8300083C08001000A828252403000103 +:10223000AF830008AF451000000000000000000060 +:1022400000000000000000009205000424AE00021F +:1022500031CD0007000D182330620007AE020010D8 +:102260008F90000812000004000000008F4F100043 +:1022700005E1FFFE000000008F7100008F8E001846 +:102280003C0308008C630444AF91000497450104AB +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC +:1022A000AF860018AF4600842449FFFE3C0C0800AE +:1022B0008D8C0440974D010401208021000947C303 +:1022C0000070C02131A9FFFF0310F82B0188C8213D +:1022D000033F202103463821313100073C0108002B +:1022E000AC3804443C010800AC2404401220000334 +:1022F00024FB40002527000730E9FFF88F860020E7 +:102300008F8400280126382100E4C02B170000022A +:10231000AF86002400E438230347202134198000CD +:10232000009910213C0F1000AF870020AF820038C9 +:10233000AF470080AF4F01780A0002968F880014E3 +:102340009747010410E0FDAE3C1840008F5801781B +:102350000700FFFE30C5400010A000033C1F00082E +:102360000000000D3C1F0008AF5F01402410080072 +:102370008F860000AF5001789744010430D90001E6 +:10238000132000ED3086FFFF24CCFFFE240D000259 +:10239000A74D0146A74C01488F9100182408000D55 +:1023A000A748014A8F630000262F000831E21FFF73 +:1023B0000342702130C90007AF830004AF91001CB5 +:1023C000AF82001800C03821AF4200841120000302 +:1023D00025DB400024D800073307FFF88F85002055 +:1023E0008F84002800E5302100C4382B14E000025F +:1023F000AF85002400C430238F8400140346F821E5 +:10240000340C8000AF86002003EC8021AF460080B2 +:10241000249900013C0610003C184000AF460178AA +:10242000AF900038AF990014AF5801380A000196F8 +:10243000000000008F630000975101043067FFFF28 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8 +:10245000000CF82333F0000724F9FFFE2404000ADF +:10246000A7440140A7500142A7590144A740014693 +:10247000A74801488F45010830B800201700000226 +:10248000240300092403000130CD0002A743014AC0 +:102490003C04004111A00003000018213C0401414C +:1024A0002403000130C9000451200005AF83000857 +:1024B0003C0600100086202524030001AF8300089D +:1024C000AF44100000000000000000000000000009 +:1024D000000000008F8E000811C000040000000002 +:1024E0008F4210000441FFFE000000008F7F0000BB +:1024F000276400088F91003CAF9F0004948500087A +:102500009490000A9499000C30AFFFFF0010C400B3 +:102510003323FFFF11F100A6030320253C0E080022 +:102520008DCE04443C0C08008D8C044000E88821CA +:102530002626FFFE01C628210000682100A6F82BF0 +:10254000018D2021009F80213C010800AC2504441E +:102550003C010800AC30044024E200083042FFFF98 +:102560003047000710E000038F830018244F000756 +:1025700031E2FFF83106FFFF30C800070043802139 +:1025800032191FFF0359C021AF83001CAF990018F7 +:10259000271B4000AF590084110000038F8C0020DE +:1025A00024C5000730A6FFF88F84002800CC28211E +:1025B00000A4F82B17E00002AF8C002400A428230D +:1025C000AF850020AF4500803C0408008C840434B3 +:1025D00003454821340E8000012E6821108000053B +:1025E000AF8D0038939100172406000E12260011BB +:1025F0002407043F3C021000AF4201788F8800148A +:10260000250F00010A0001EFAF8F00140E0005C472 +:1026100000E020218F8800143C0B08008D6B048C97 +:102620003C0A08008D4A0488250F00010A0001EFCA +:10263000AF8F00143C021000A7470148AF42017859 +:102640000A0004CE8F88001424040F001184003D7A +:1026500030CE002015C0000224030009240300012D +:102660000A00021AA743014A0A00020DA7400146C8 +:1026700094EF000894F1000A94F0000C8F8C003C59 +:10268000001174003207FFFF31EDFFFF11AC00377E +:1026900001C720253C1808008F1804443C0F08008F +:1026A0008DEF0440000080210308682101A8382B29 +:1026B00001F0702101C760213C010800AC2D0444E9 +:1026C0003C010800AC2C04400A00027A8F840018F8 +:1026D0003C0208008C42047C3C0308008C630454D8 +:1026E0003C1F08008FFF04783C1808008F18045026 +:1026F000004838210068802100E8282B03E43021BD +:102700000208402B0304882100C57021022878218B +:102710003C010800AC3004543C010800AC2F0450CC +:102720003C010800AC27047C3C010800AC2E047876 +:102730000A00027A8F840018A74001460A00043577 +:102740008F91001830CD002015A0FFC52403000D87 +:10275000240300050A00021AA743014A974E010408 +:1027600025C5FFF00A00038130A4FFFF8F980040C9 +:102770001498FFC8000010213C0508008CA5046CCB +:102780003C1F08008FFF046800A8C8210328302BD5 +:1027900003E22021008640213C010800AC39046C92 +:1027A0003C010800AC2804680A00027A8F840018F3 +:1027B0008F8C0040148CFF5900E8C8213C18080099 +:1027C0008F18046C3C1108008E3104682723FFFE2B +:1027D00003034821000010210123302B0222702125 +:1027E00001C668213C010800AC29046C3C010800CA +:1027F000AC2D04680A0004A524E200088F88003884 +:102800003C03FFFF8D02000C0043F82403E4C825BD +:10281000AD19000C0A00038F30CBFFFF0A0003C381 +:10282000AE000000974A0104920400048E26000CBA +:10283000014458212579FFF200C7C0243325FFFF4A +:1028400003053825AE27000C0A0002E68E050010AD +:102850003C0DFFFF8D0A0010014D582401646025D6 +:10286000AD0C00100A00038F30CBFFFF974301042B +:10287000920E00048E290010006E1021244DFFEEF0 +:102880000127602431A8FFFF0188F825AE3F001022 +:102890000A0002E68E0500108E0F000CAE0000004C +:1028A00000078880023028210A0002B8ACAF00205F +:1028B0001460000D3058FFFF3C04FFFF0044682403 +:1028C00001A47026000E602B000D102B004CF82484 +:1028D00013E00002000000000000000D8CAF0000BB +:1028E0000A00025001E410253B03FFFF0003882B80 +:1028F0000018802B0211202410800002000000002C +:102900000000000D8CB900000A0002503722FFFFC2 +:102910003084FFFF30A5FFFF108000070000182162 +:10292000308200011040000200042042006518219E +:102930001480FFFB0005284003E000080060102120 +:1029400010C00007000000008CA2000024C6FFFF9A +:1029500024A50004AC82000014C0FFFB2484000402 +:1029600003E000080000000010A0000824A3FFFFFF +:10297000AC86000000000000000000002402FFFF01 +:102980002463FFFF1462FFFA2484000403E00008BC +:1029900000000000308EFFFF30D8FFFF00057C00F4 +:1029A00001F8602539CDFFFF01AC5021014C582BB7 +:1029B000014B4821000944023127FFFF00E8302184 +:1029C0000006240230C5FFFF00A418213862FFFF73 +:1029D00003E000083042FFFF3C0C08008D8C0484AB +:1029E000240BFF8027BDFFD001845021014B4824D8 +:1029F000AF4900203C0808008D080484AFB20020D5 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 +:102A1000936600040104382130E4007F009A1021FD +:102A20003C0300080043902130C500200360802152 +:102A30003C080111277B000814A000022646007004 +:102A40002646006C9213000497510104920F000473 +:102A50003267000F322EFFFF31ED004001C72823FF +:102A600011A0000500004821925900BC3338000431 +:102A70001700009000000000924300BC307F00046B +:102A800013E0000F0000000010A0000D0000000087 +:102A9000960E0002240AFF8000A7602125CDFFFECC +:102AA000A74D1016920B0004014B2024308200FF2A +:102AB00010400085010C40253C0F0400010F40250B +:102AC0008F5301780660FFFE2404000AA7440140EA +:102AD000960D00022404000931AC0007000C5823B5 +:102AE000316A0007A74A0142960200022443FFFE12 +:102AF000A7430144A7400146975F0104A75F01482F +:102B00008F590108333800205300000124040001CC +:102B1000920F000431EE001015C000023483001043 +:102B200000801821A743014A0000000000000000B7 +:102B30000000000000000000AF481000000000008E +:102B40000000000000000000000000008F51100095 +:102B50000621FFFE3113FFFF12600003000000009A +:102B60008F481018ACC8000096030006307FFFFFA6 +:102B700027F900020019988200138880023B302157 +:102B80008CD800001520005700183402920300046E +:102B90002405FF8000A3F82433F100FF1220002C4D +:102BA00000000000924700BC30F2000212400028F2 +:102BB00000000000974B100C2562FFFEA742101684 +:102BC000000000003C0A040035490030AF49100005 +:102BD00000000000000000000000000000000000F5 +:102BE0008F4C10000581FFFE000000009749100C7B +:102BF0008F51101C00C020213127FFFF24F200302C +:102C0000001218820003288000BBF8213226FFFF43 +:102C1000AFF100000E0005B300112C020013C880B4 +:102C2000033B98218E78000000027400AFB80010BA +:102C30008FA80010310FFFFFAFAF00108FA400105E +:102C400001C46825AFAD00108FA60010AE6600006D +:102C500097730008976D000A9766000C8F8A003CF6 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF +:102C7000016C2025960600023C10100024D30008A9 +:102C80000E00013B3264FFFF974C01040E00014926 +:102C90003184FFFFAF5001788FBF00288FB300242D +:102CA0008FB200208FB1001C8FB0001803E0000825 +:102CB00027BD003010A0FF700000000024A5FFFC1D +:102CC0000A0005EC240900048CD10000AF51101853 +:102CD0008F5301780660FF7A2404000A0A00060177 +:102CE0000000000000A7C8218F8800388F4E101CFC +:102CF0000019C0820018788001E82021AC8E000005 +:102D0000000E2C0200C020210E0005B331C6FFFFCB +:102D1000023B28218CAD000000025400004030210D +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 +:102D30008FA2001001424825AFA900108FA70010F4 +:102D40000A000631ACA700008F8F0040148FFFC926 +:102D50000000000097420104960B00023C050800A9 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D +:102D70008E310468012A382124F2FFFE00B240217E +:102D80000012FFC30112C82B023FC02103192021EA +:102D90003C010800AC28046C3C010800AC24046829 +:102DA0000A00066B0000000000A4102B1040000970 +:102DB000240300010005284000A4102B04A00003F8 +:102DC000000318405440FFFC000528401060000735 +:102DD000000000000085302B14C0000200031842E0 +:102DE000008520231460FFFB0005284203E0000853 +:102DF000008010218F85002C27BDFFE800053027BB +:102E00002CC300012CA400020083102510400003F5 +:102E1000AFBF00102405007FAF85002C00052827D8 +:102E200030A5FFFF0E000592240426F58F830030A5 +:102E3000240402BD004030210083382B10E000093B +:102E400024050001000420400083102B04800003AF +:102E5000000528405440FFFC0004204010A000085A +:102E600000C350210064402B1500000200052842D9 +:102E70000064182314A0FFFB0004204200C350216B +:102E80008FBF0010000A4C02312200FF27BD00183E +:102E9000AF8A002C03E00008AF8900300A00002A46 +:102EA00000000000000000000000000D7478703683 +:102EB0002E322E3300000000060203000000000046 +:102EC000000001360000EA60000000000000000081 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000016BC +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F3000000000000000138800000000000005DC15 +:102F4000000000000000000010000003000000006E +:102F50000000000D0000000D3C02080024423C204F +:102F60003C03080024633DD4AC4000000043202B08 +:102F70001480FFFD244200043C1D080037BD7FFC87 +:102F800003A0F0213C100800261000A83C1C0800FB +:102F9000279C3C200E0002BA000000000000000D3B +:102FA0008F8300383C088000350700708CE50000F6 +:102FB000008330253C02900000C22025AF85003000 +:102FC000AF4400208F4900200520FFFE3C03800015 +:102FD000346200708C4500008F8600303C19080078 +:102FE0008F39007C3C0E08008DCE007800A620238F +:102FF00003245821000078210164682B01CF60214F +:10300000018D50213C010800AC2B007C3C010800E4 +:10301000AC2A007803E00008000000000A0000412C +:10302000240400018F8400383C05800034A2000194 +:103030000082182503E00008AF43002003E00008E9 +:10304000000010213084FFFF30A5FFFF1080000733 +:1030500000001821308200011040000200042042CC +:10306000006518211480FFFB0005284003E00008DC +:103070000060102110C00007000000008CA20000BA +:1030800024C6FFFF24A50004AC82000014C0FFFB8F +:103090002484000403E000080000000010A00008E1 +:1030A00024A3FFFFAC860000000000000000000029 +:1030B0002402FFFF2463FFFF1462FFFA248400044C +:1030C00003E0000800000000308AFFFF93A800130F +:1030D000A74A014497490E1630C600FF3C02100073 +:1030E000A7490146AF450148A3460152A748015AE6 +:1030F000AF4701608FA400188FA30014A7440158A4 +:10310000AF43015403E00008AF42017803E0000838 +:10311000000000003C038000346200708C49000015 +:103120008F8800002484000727BDFFF83084FFF853 +:10313000AF890030974D008A31ACFFFFAFAC000083 +:103140008FAB0000016850232547FFFF30E61FFFCB +:1031500000C4282B14A0FFF73C0C8000358B0070B6 +:103160008D6A00003C0708008CE700843C060800DC +:103170008CC6008000081082014918230002788064 +:1031800000E370210000202101C3C82B00C4C0212E +:1031900001FA4021031948212502400027BD0008FB +:1031A0003C010800AC2E00843C010800AC290080E2 +:1031B00003E00008000000008F8200002486000762 +:1031C00030C5FFF800A2182130641FFF03E000089B +:1031D000AF8400008F8700388F8A004027BDFFB87A +:1031E0008F860044AFB60040AFBF0044AFB5003C8F +:1031F000AFB40038AFB30034AFB20030AFB1002C81 +:10320000AFB000288F4501048D4900ACAF47008066 +:103210008CC8002000A938230000B021AF480E1050 +:103220008F440E1000004821AF440E148CC20024BD +:10323000AF420E188F430E18AF430E1C10E001254D +:103240002D230001936B0008116000D400000000E2 +:10325000976E001031CDFFFF00ED602B158000CF81 +:103260000000000097700010320FFFFFAF4F0E00FC +:103270008F520000325100081220FFFD00000000B4 +:1032800097540E088F460E043285FFFF30B30001BD +:1032900012600132000000000000000D30B8A040B4 +:1032A00024150040131500C030A9A0001120012DE5 +:1032B00000000000937F000813E0000800000000F9 +:1032C00097630010306BFFFF00CB402B1100000311 +:1032D00030AC00401180012300000000A785003CB5 +:1032E000AF8600349366000800E02821AFA70020D5 +:1032F00014C0012427B30020AF60000C9782003C6B +:103300003047400014E00002240300162403000E9E +:1033100024194007A363000AAF790014938A003E82 +:103320008F740014315800070018AA4002959025A8 +:10333000AF7200149784003C8F700014309100101D +:1033400002117825AF6F0014978E003C31CD000834 +:1033500011A00147000028218F6700143C021000D3 +:103360003C0C810000E22825AF65001497460E0A48 +:103370002408000E3405FFFC30C3FFFF006C582505 +:10338000AF6B0004A3680002937F000A27E90004E2 +:10339000A369000A9786003C9363000A30CC1F00A3 +:1033A000000C598301634021251F0028A37F0009D9 +:1033B00097490E0CA769001093790009272A00028B +:1033C000315800070018A82332B10007A371000B81 +:1033D00093740009976400108F910034978F003C1C +:1033E000329200FF024480210205702131ED00403D +:1033F00011A0000531C4FFFF0091282B3C12800072 +:1034000010A000140000A0210224382B14E0011B9E +:103410008FA500208F4D0E14AF4D0E108F420E1C45 +:10342000AF420E18AF440E008F4F000031EE00087F +:1034300011C0FFFD0000000097540E080080882195 +:1034400000009021A794003C8F500E04241400012A +:10345000AF900034976400103095FFFF8E68000035 +:103460000111F82317E00009AE7F00008F650014FA +:103470008F8B004434A60040AF6600148F4C0E10B2 +:10348000AD6C00208F430E18AD63002493670008D5 +:1034900014E000D2000000000E00009E2404001082 +:1034A0008F8900483C08320000402821312600FF67 +:1034B0000006FC0003E8502525390001AF990048BB +:1034C000AC4A0000937800099370000A330400FFAF +:1034D00000047400320F00FF01CF6825AC4D0004DA +:1034E0008F820048064000EAACA20008ACA0000CA5 +:1034F0009783003C306B0008156000022628000608 +:1035000026280002974E0E148F450E1C8F6700046C +:10351000936D000231C4FFFF31A200FFAFA2001083 +:103520008F6C0014AFA800180E00008BAFAC001415 +:10353000240400100E0000C7000000008E7200007E +:1035400016400005000000008F6400142405FFBF32 +:1035500000859824AF7300148F79000C033538214F +:10356000AF67000C9375000816A00008000000006B +:1035700012800006000000008F7F00143C0BEFFF5C +:103580003568FFFE03E84824AF690014A3740008FF +:103590008FA500200A00024602202021AF470E001E +:1035A0000A0000F5000000008F5901780720FFFE97 +:1035B000241F08008F840000AF5F0178974B008ABA +:1035C000316AFFFF014448232528FFFF31021FFF16 +:1035D0002C4300081460FFF9000000008F8E0048A3 +:1035E0008F8D003800C048210344202125C60001EA +:1035F000240C0F00AF86004800E9382324864000E1 +:1036000031CA00FF11AC0005240800019391003E6F +:103610003230000700107A4035E80001000AAC00A3 +:103620003C18010002B8A025AC9440008F930048DC +:1036300030B2003630A40008ACD3000410800097EC +:1036400001123025974E0E0A8F8D00003C0281003A +:1036500031CCFFFF25AB0008018240253C03100060 +:1036600031651FFF25390006241F000EAF48016099 +:1036700000C33025A75F015AAF850000A759015844 +:1036800014E0000A8F93003824120F0052720002D7 +:103690002416000134C600408F580E108F94004449 +:1036A000AE9800208F550E18AE9500248F450E144D +:1036B000AF4501448F590E1CAF590148A34A01522E +:1036C0003C0A1000AF460154AF4A017814E0FEDD19 +:1036D0002D2300010076A025128000178FBF004423 +:1036E0008F84003824160F0010960084000000001C +:1036F0008F45017804A0FFFE24150F001095006E81 +:10370000000000008F470E14240202403C1F1000EE +:10371000AF4701448F440E1CAF440148A3400152FF +:10372000A740015AAF400160A7400158AF42015481 +:10373000AF5F01788FBF00448FB600408FB5003C6B +:103740008FB400388FB300348FB200308FB1002CAB +:103750008FB0002803E0000827BD004814C0FED049 +:1037600030B8A0408F420E148F84004400004821DE +:10377000AC8200208F510E1CAC9100240A00020E76 +:103780002D2300018F910034978A003C3C12800069 +:103790000220A821315800401700FF300000A0216E +:1037A000976900108F9200343139FFFF13320035D2 +:1037B00000002021008048211480FEA000A03821B4 +:1037C0008F420E148F840044AC8200208F510E1C57 +:1037D000AC9100240A00020E2D230001936A000917 +:1037E0009378000B315000FF330F00FF020F702160 +:1037F00025C2000A3050FFFF0E00009E020020216B +:103800008F8600483C1F410024CD0001AF8D004849 +:10381000936C000930C600FF00064400318300FFAE +:10382000246B0002010B4825013FC825AC5900005C +:103830008F67000C97440E1400F22825AC45000455 +:103840008F450E1C8F670004936A00023084FFFFCF +:10385000315800FFAFB800108F6F0014AFB10018DF +:103860000E00008BAFAF00140A0001A60200202159 +:10387000AF6000040A00013EA36000020A00024695 +:1038800000002021000090210A0001702414000192 +:103890003C1280000A000195ACB2000C8F91000030 +:1038A00025240002A744015826300008320F1FFFCC +:1038B0000A0001F9AF8F0000AF40014C1120002C2D +:1038C000000000008F590E10AF5901448F430E18AD +:1038D000240200403C1F1000AF430148A3400152A6 +:1038E000A740015AAF400160A7400158AF420154C0 +:1038F000AF5F01780A0002278FBF00441120000645 +:103900000000000097460E0830CC004015800002F1 +:10391000000000000000000D8F4D017805A0FFFEA3 +:103920000000000097530E103C120500240E2000EA +:10393000326AFFFF0152C025AF58014C8F4F0E1461 +:103940003C021000AF4F01448F500E1CAF50014895 +:10395000A34001528F840038A740015AAF40016054 +:10396000A7400158AF4E01540A000215AF4201783A +:103970008F490E14AF4901448F430E1C0A00028E7A +:10398000240200403C0E20FF27BDFFE03C1A8000CF +:103990003C0F800835CDFFFDAFBF001CAFB2001853 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC +:1039B0000000000000000000000000000000000007 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC +:1039D0003C0660048CC95000240AFF7F3C11600043 +:1039E000012A40243507380CACC750008E24043817 +:1039F00024050009AF4500083083FFFF38622F71AE +:103A00002450C0B3AF8000480E000068AF800000B3 +:103A100052000001AE20442C0E0004353C11800001 +:103A20000E000ED9363000708F8A00403C1208001C +:103A300026523C88020088218E0800008F5F00001B +:103A40003BF900013338000113000017AF88003044 +:103A5000022048218D2700003C0F08008DEF006CEC +:103A60003C0C08008D8C006800E8C02301F8282178 +:103A70000000682100B8302B018D582101664021DB +:103A80003C010800AC25006C3C010800AC28006833 +:103A90008F44000038830001306200011440FFEDC4 +:103AA00000E04021AF8700308E0C00003C0508008C +:103AB0008CA5006C3C0408008C84006801883023CD +:103AC00000A638210000102100E6402B00821821BA +:103AD0000068F8213C010800AC27006C3C0108009C +:103AE000AC3F00688F49010025590088AF99004418 +:103AF000AF890038AF4900208E070000AF87003043 +:103B00008F4D017805A0FFFE000000008E0600002A +:103B10003C0B08008D6B00743C0408008C84007022 +:103B200000C728230165F8210000102103E5402B80 +:103B30000082382100E8C821240908003C0108005F +:103B4000AC3F00743C010800AC390070AF4901780B +:103B500093580108A398003E938F003E31EE000178 +:103B600015C000158F830038240E0D00106E00194B +:103B7000240F0F00106F001D00000000915900007D +:103B800024180050332900FF113800043C1F400066 +:103B9000AF5F01380A0002E7000000000E00090EC6 +:103BA000000000008F8A00403C1F4000AF5F0138DA +:103BB0000A0002E700000000938D003E31AC0006D1 +:103BC000000C51000E0000CE0152D8210A00034320 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A +:103BE000000000000A0003438F8A00403C1B0800CD +:103BF000277B3D280E0000CE000000000A00034392 +:103C00008F8A004090AA00018FAB00108CAC00108E +:103C10003C0300FF8D680004AD6C00208CAD0014E7 +:103C200000E060213462FFFFAD6D00248CA7001816 +:103C30003C09FF000109C024AD6700288CAE001CC0 +:103C40000182C82403197825AD6F0004AD6E002CE5 +:103C50008CAD0008314A00FFAD6D001C94A9000234 +:103C60003128FFFFAD68001090A70000A56000029A +:103C7000A1600004A167000090A30002306200FF71 +:103C80000002198210600005240500011065000E75 +:103C90000000000003E00008A16A00018CD80028A1 +:103CA000354A0080AD7800188CCF0014AD6F001439 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF +:103CC00003E00008AD64000C8CCD001CAD6D001845 +:103CD0008CC90014AD6900148CC80024AD680008BC +:103CE0008CC70020AD67000C8CC200148C8300646C +:103CF0000043C82B13200007000000008CC20014F2 +:103D0000144CFFE400000000354A008003E0000886 +:103D1000A16A00018C8200640A000399000000007F +:103D200090AA000027BDFFF88FA9001CA3AA0000DD +:103D30008FAE00003C0FFF808FA8001835E2FFFF18 +:103D40008CCD002C01C26024AFAC0000A120000487 +:103D500000E06021A7A000028FB800008D270004BA +:103D60000188182100A0582100C05021006D28268C +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E +:103D800034D9FFFF3C02FF0003193024000D1DC091 +:103D9000010EC82400E2C02400C370250319782551 +:103DA000AD2E0000AD2F00048D450024AFAE000005 +:103DB000AD2500088D4D00202405FFFFAD2D000C22 +:103DC000956800023107FFFFAD27001091660018CB +:103DD00030C200FF000219C2506000018D4500345E +:103DE000AD2500148D67000827BD0008AD27001C15 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA +:103E0000AD20001803E00008AD20002027BDFFE032 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC +:103E20009098000000C088213C0D00FF330F007FF8 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 +:103E4000A0CE000194A6001EA22000048CAB00149A +:103E50008E29000400A08021016C2824012A40241E +:103E60000080902101052025A6260002AE24000432 +:103E700026050020262400080E00007624060002F5 +:103E800092470000260500282624001400071E0083 +:103E90000003160324060004044000032403FFFF6C +:103EA000965900023323FFFF0E000076AE23001068 +:103EB000262400248FBF001C8FB200188FB100147D +:103EC0008FB0001024050003000030210A0000809C +:103ED00027BD002027BDFFD8AFB1001CAFB0001830 +:103EE000AFBF002090A80000240200018FB0003C6A +:103EF0003103003F00808821106200148FAA00382F +:103F0000240B0005506B0016AFAA001000A0202162 +:103F100000C028210E0003DC02003021922400BCE6 +:103F2000308300021060000326060030ACC00000A1 +:103F300024C600048FBF00208FB1001C8FB0001872 +:103F400000C0102103E0000827BD002801403821EF +:103F50000E00035AAFB000100A0004200000000059 +:103F60000E0003A1AFB000140A00042000000000FE +:103F70003C02000A034218213C04080024843D6CE2 +:103F80002405001A000030210A000080AF8300548D +:103F90003C038000346200708C48000000A058216F +:103FA00000C04821308A00FFAF8800308F4401787C +:103FB0000480FFFE3C0C8000358600708CC500003C +:103FC0003C0308008C6300743C1808008F180070D4 +:103FD00000A82023006468210000C82101A4782BD8 +:103FE0000319702101CF60213C010800AC2D007441 +:103FF0003C010800AC2C00708F480E14AF480144FF +:10400000AF47014CA34A0152A74B01589346010800 +:1040100030C5000854A0000135291000934B090059 +:1040200024070050316A00FF11470007000000001C +:104030008F450E1CAF450148AF4901543C091000A3 +:1040400003E00008AF490178934D010831A800084A +:104050001100001000000000934F010831EE001025 +:1040600051C00001352900083C04080090843DD06F +:10407000A34401508F4309A4AF4301488F4209A0D4 +:10408000AF420144AF4901543C09100003E000086D +:10409000AF4901783C1908008F393D8C333800084E +:1040A0005700FFF1352900080A00047300000000E2 +:1040B00024070040AF470814AF4008108F4209445E +:1040C0008F4309508F4409548F45095C8F46094C32 +:1040D000AF820064AF830050AF84004CAF85005CBA +:1040E00003E00008AF8600609346010930C5007FF9 +:1040F000000518C0000521400083102103E00008DE +:10410000244200883C09080091293D9124A800021E +:104110003C05110000093C0000E8302500C51825C9 +:1041200024820008AC83000003E00008AC80000497 +:104130009347010B8F4A002C974F09083C18000E3B +:104140000358482131EEFFFF000E41C0AF48002C5C +:1041500097430908952C001A008040212403000190 +:10416000318BFFFFAC8B00008D2D001C00A058216F +:1041700000C06021AC8D00048D24002030E7004099 +:10418000AD04000891220019304400031083004858 +:104190002885000214A00062240600021086005642 +:1041A00024190003109900660000000010E0003A96 +:1041B000000000003C07080094E73D8624E200016F +:1041C000934F0934934709219525002A31EE00FFCA +:1041D000000E488230ED00FF978700580009360036 +:1041E000000D1C003044FFFF00C310250044C02513 +:1041F00000A778213C19400003197025000F4C00DE +:10420000AD090004AD0E0000934D09203C030006EB +:1042100025090014000D360000C32025AD04000858 +:104220008F59092C24E5000130A27FFFAD19000C45 +:104230008F580930A782005825020028AD180010B9 +:104240008F4F0938AD0F0014AD2B00048F4E09407D +:10425000AD2E0008934D09373C05080090A53D9010 +:104260008F4409488F46094031A700FF00EC182110 +:10427000008678230003C7000005CC0003196025E1 +:1042800031E8FFFC01885825AD2B000CAD20001053 +:1042900003E00008AF4A002C3C0D080095AD3D86B8 +:1042A0003C0E080095CE3D800A0004C901AE1021E5 +:1042B0003C05080094A53D8A3C06080094C63D8054 +:1042C0003C18080097183D7C952E002400A6782104 +:1042D00001F86823000E240025A2FFF200821825B1 +:1042E00024190800AD03000CAD190014AD00001036 +:1042F0000A0004C4250800189526002495250028E6 +:104300000006C40000057C00370E810035ED080072 +:10431000AD0E000CAD0D00100A0004C425080014F9 +:104320001480FFA200000000952400240004140063 +:1043300034430800AD03000C0A0004C42508001033 +:104340003C03080094633D8A3C05080094A53D8029 +:104350003C06080094C63D7C953900249538002819 +:10436000006520210086782300196C000018740075 +:1043700025E2FFEE01C2202535A3810024190800A3 +:10438000AD03000CAD040010AD190018AD00001411 +:104390000A0004C42508001C03E00008240201F4FC +:1043A00027BDFFE8AFB00010AFBF00140E000060E3 +:1043B0000080802124050040AF4508148F83005001 +:1043C0008F84004C8F85005C0070182100641023DE +:1043D00018400004AF830050AF6300548F66005450 +:1043E000AF86004C1200000C000000008F440074E7 +:1043F000936800813409FA002D07000710E00005DA +:1044000000891021936C0081240B01F4018B50046E +:1044100001441021AF62000C8F4E095C01C5682376 +:1044200019A000048FBF00148F4F095CAF8F005C90 +:104430008FBF00148FB000100A00006227BD001863 +:104440008F8400648F8300508F82004CAF640044DF +:10445000AF63005003E00008AF6200543C038000EB +:10446000346200708C43000027BDFFF8308700FFE6 +:1044700030A900FF30C800FFAF8300308F440178BF +:104480000480FFFE3C028000345900708F38000029 +:10449000A3A700033C0708008CE700748FAC000062 +:1044A0003C0608008CC60070030378233C0E7FFF97 +:1044B00000EFC82135CDFFFF00005021018D2824D9 +:1044C00000CA1821000847C0032F202B00A8102580 +:1044D0000064C021AFA200003C010800AC390074A8 +:1044E0003C010800AC380070934F010AA3A0000201 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A +:1045000035CDFFFF018D4824000B5600012A4025C0 +:10451000240730002406FF803C05100027BD00085A +:10452000AF48014CAF470154A7400158A346015280 +:1045300003E00008AF45017827BDFFE8AFBF0014D6 +:10454000AFB000108F6500743C068000309000FF13 +:1045500000A620250E000060AF6400749363000580 +:10456000346200080E000062A362000502002021F0 +:104570008FBF00148FB00010240500052406000131 +:104580000A00057027BD001827BDFFE03C0380002E +:10459000AFB00010AFBF0018AFB1001434620070AC +:1045A0008C470000309000FF30A800FFAF8700303C +:1045B0008F4401780480FFFE3C18800037110070A2 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1 +:1045D0008D4A007001E7702301AE282100005821A8 +:1045E00000AE302B014B4821012638213C01080048 +:1045F000AC250074000088213C010800AC27007045 +:104600001100000F000000008F6200742619FFFFE8 +:104610003208007F0002FE0233E5007F150000062D +:10462000332200FF2407FF800207202624A3FFFF78 +:1046300000838025320200FF0040802124111008F1 +:104640000E000060000000008F49081831250004AA +:1046500014A0FFFD3218007F001878C000187140C8 +:1046600001CF682125AC0088AF4C0818274A098083 +:104670008D4B0020AF4B01448D460024AF460148CE +:10468000A35001500E000062A740015802201021E3 +:104690008FBF00188FB100148FB0001003E0000826 +:1046A00027BD002027BDFFE8308400FFAFBF00100A +:1046B0000E0005BB30A500FF8F8300508FBF001098 +:1046C000344500402404FF903C02100027BD001830 +:1046D000AF43014CA3440152AF45015403E000082D +:1046E000AF4201789343093E306200081040000D4C +:1046F0003C0901013528080AAC8800008F47007486 +:10470000AC8700043C06080090C63D9030C5001000 +:1047100050A00006AC8000088F6A0060AC8A0008D8 +:104720002484000C03E00008008010210A00062207 +:104730002484000C27BDFFE8AFBF0014AFB0001009 +:104740009346093F00A050210005288000853823AA +:1047500030C200FF240300063C09080095293D866D +:1047600024E8FFD824050004104300372406000283 +:104770009750093C3C0F020400063400320EFFFF44 +:1047800001CF6825AC8D0000934C093E318B002091 +:104790001160000800000000934309363C02010349 +:1047A000345F0300307900FF033FC0252405000873 +:1047B000AC98000493430934935909210005F88209 +:1047C000306200FF0002C082332F00FF00186E002D +:1047D000000F740001AE6025018920253C094000CE +:1047E00000898025ACF0FFD8934309378F4F0948E3 +:1047F0008F580940306200FF004AC821033F7021F2 +:1048000001F86023000E6F0001A650253185FFFCE2 +:10481000001F58800145482501683821AD09002056 +:104820000E00006024F00028240400040E00006242 +:10483000A364003F020010218FBF00148FB000104E +:1048400003E0000827BD00180A0006352406001200 +:1048500027BDFFD024090010AFB60028AFB5002453 +:10486000AFB40020AFB10014AFB000103C0108009D +:10487000A0293D90AFBF002CAFB3001CAFB2001811 +:1048800097480908309400FF3C02000E3107FFFFF3 +:10489000000731C0AF46002C974409089344010B30 +:1048A00030B500FF03428021308300300000B0218A +:1048B0001060012500008821240C00043C01080040 +:1048C000A02C3D90934B093E000B5600000A2E038E +:1048D00004A0016000000000AF400048934F010BAE +:1048E00031EE002011C00006000000009358093E80 +:1048F00000189E0000139603064001890000000086 +:104900009344010B30830040106000038F930050EC +:104910008F8200502453FFFF9347093E30E6000882 +:1049200014C0000224120003000090219619002CEC +:1049300093580934934F0937A7990058330C00FF57 +:1049400031EE00FF024E6821000D5880016C5021AD +:10495000015140213C010800A4283D869205001821 +:1049600030A900FF010918213C010800A4233D885B +:104970009211001816200002000000000000000D37 +:104980003C010800A4233D8A3C010800A4203D808E +:104990003C010800A4203D7C935F010B3063FFFFC6 +:1049A00033F00040120000022464000A2464000B6B +:1049B0003091FFFF0E00009E022020219358010B32 +:1049C0003C08080095083D8A0040202100185982C3 +:1049D000316700010E00049A01072821934C010B56 +:1049E0008F4B002C974E09083C0F000E034F4021BF +:1049F00031CDFFFF000D51C0AF4A002C974309088D +:104A00009505001A004038212404000130A9FFFF59 +:104A1000AC4900008D06001C00404821318A00404E +:104A2000AC4600048D020020ACE20008910300199E +:104A300030630003106400EC28790002172001188D +:104A4000241000021070010C241F0003107F011EAF +:104A500000000000114000DE000000003C090800DA +:104A600095293D8625220001935F0934934E092143 +:104A70009504002A33F900FF0019C08231CF00FFEE +:104A8000978E005800184600000F6C00010D80251D +:104A90003045FFFF02051025008E50213C034000E9 +:104AA00000433025000A6400ACEC0004ACE60000D2 +:104AB000935F09203C19000624EC0014001FC60077 +:104AC00003197825ACEF00088F48092C25CD00018B +:104AD00031A57FFFACE8000C8F500930A785005846 +:104AE00024E80028ACF000108F4409380100802130 +:104AF000ACE40014AD9300048F530940AD9300085B +:104B0000934A09373C19080093393D908F4309486F +:104B10008F460940314200FF0052F82100667023A1 +:104B2000001F7F000019C40001F8282531CDFFFCCB +:104B300000AD2025AD84000CAD800010AF4B002CE3 +:104B4000934B093E317300081260000D3C060101D1 +:104B500034CC080AACEC00288F530074AD13000469 +:104B60003C0B0800916B3D903167001050E0000352 +:104B7000AD0000088F6A0060AD0A00082510000C27 +:104B800012C0003D000000009343093F24160006B8 +:104B900024060004306200FF105600C924070002FA +:104BA0009758093C3C0F0204330DFFFF01AF40252D +:104BB000AE0800009345093E30A400201080000894 +:104BC00000000000935309363C0B0103357F0300BE +:104BD000327900FF033F7025AE0E00042406000862 +:104BE000934F093493480921312AFFFF31ED00FF2B +:104BF000000D1082310300FF0002B60000032C00FC +:104C000002C56025018A9825001220803C094000D9 +:104C10000204502302695825AD4BFFD8935F093732 +:104C20008F4F09488F58094033F900FF0332702134 +:104C30000006B08201D668210007440001F828234D +:104C4000000D1F000068302530A2FFFC2547FFD86B +:104C500000C260250016808002074821ACEC0020CD +:104C6000253000280E00006024120004A372003FCB +:104C70000E000062000000009347010B30F200407C +:104C8000124000053C1900FF8E180000372EFFFF70 +:104C9000030E3024AE0600000E0000C702202021C3 +:104CA0003C10080092103D90321100031220000FBA +:104CB00002A028218F89005025330001AF930050B6 +:104CC000AF7300508F6B00540173F8231BE0000298 +:104CD000026020218F640054AF6400548F4C007434 +:104CE000258401F4AF64000C02A028210280202159 +:104CF000A76000680E0005BB3C1410008F850050B3 +:104D000034550006AF45014C8F8A00488FBF002CF8 +:104D10008FB3001C25560001AF9600488FB20018D3 +:104D2000A34A01528FB60028AF5501548FB1001429 +:104D3000AF5401788FB500248FB400208FB00010DD +:104D400003E0000827BD00309358093E00189E007C +:104D500000139603064200362411000293440923EF +:104D6000308300021060FEDD8F8600608F8200506D +:104D700014C2FEDA000000000E0000600000000017 +:104D80009369003F24070016312800FF1107000C2B +:104D9000240500083C0C0800918C3D90358B0001E7 +:104DA0003C010800A02B3D90936A003F314300FF77 +:104DB00010650065240D000A106D005E2402000CD1 +:104DC0000E000062000000000A00069000000000D3 +:104DD0003C09080095293D863C0A0800954A3D801B +:104DE0000A0006F3012A10213C09080095293D8A92 +:104DF0003C04080094843D803C06080094C63D7C39 +:104E000095030024012410210046F8230003CC0060 +:104E100027F0FFF20330C025240F0800ACF8000C87 +:104E2000ACEF0014ACE000100A0006EE24E7001816 +:104E30003C010800A0313D90935F093E241600011B +:104E400033F900201720FEA5241100080A0006905F +:104E5000241100048F6E00848F4D094011A0FE9E26 +:104E6000AF8E0050240F00143C010800A02F3D908D +:104E70000A00068F00000000950E0024950D002802 +:104E8000000E6400000D2C003589810034A6080056 +:104E9000ACE9000CACE600100A0006EE24E70014B2 +:104EA0001460FEEC000000009502002400021C00CB +:104EB00034640800ACE4000C0A0006EE24E700109D +:104EC0000A000741240700123C02080094423D8A70 +:104ED0003C06080094C63D803C03080094633D7C7A +:104EE00095100024951900280046F82103E3C023FB +:104EF00000106C0000197400270FFFEE01CF282569 +:104F000035AC8100ACEC000CACE5001024070800C7 +:104F1000AD2700182527001C0A0006EEAD2000145E +:104F20008F7F004CAF7F00548F7900540A000699A0 +:104F3000AF790050A362003F0E0000620000000045 +:104F40000A00069000000000240200140A0008274E +:104F5000A362003F27BDFFE8308400FFAFBF001011 +:104F60000E0005BB30A500FF9378007E9379007F8B +:104F7000936E00809368007A332F00FF001866005C +:104F8000000F6C0031CB00FF018D4825000B520053 +:104F90008FBF0010012A3825310600FF344470000D +:104FA00000E628252402FF813C03100027BD0018DD +:104FB000AF45014CAF440154A342015203E0000845 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE +:104FD000AFB00010AFBF0020AFB3001C9342010977 +:104FE000308600FF30B000FF000618C23204000215 +:104FF0003071000114800005305200FF93670005F6 +:1050000030E5000810A0000D30C80010024020213B +:105010000E0005A702202821240400018FBF0020D4 +:105020008FB3001C8FB200188FB100148FB0001026 +:105030000080102103E0000827BD00281500003281 +:105040000000000093430109000028213062007F26 +:10505000000220C00002F94003E49821267900886C +:10506000033B98218E7800248E6F0008130F0046B2 +:10507000000000008F640084241800020004FD82F8 +:1050800033F900031338007C0000000093660083AE +:10509000934A0109514600043205007C10A00060CB +:1050A000000000003205007C14A0005302402021C3 +:1050B00016200006320400018E7F00248F5901045F +:1050C00017F9FFD600002021320400011080000AE9 +:1050D000024020218F4209408F9300641053000644 +:1050E000000000000E00066D022028218F430940B9 +:1050F000AF630044024020210E0006020220282156 +:105100000A000860240400013C0908008D2900649D +:10511000252600013C010800AC26006416000012A0 +:10512000000000008F6D00843C0E00C001AE6024C2 +:1051300015800005024020210E00082E02202821A3 +:105140000A00086024040001240500040E00057014 +:1051500024060001024020210E00082E02202821F2 +:105160000A000860240400010E000041240400012C +:10517000936B007D020B50250E000062A36A007D38 +:105180000A0008A38F6D00848F6600748F480104A5 +:105190008E67002400064E021507FFB63126007FF9 +:1051A000936B008326440001308A007F1146004340 +:1051B000316300FF5464FFB08F6400842645000112 +:1051C00030B1007F30A200FF122600042405000148 +:1051D000004090210A00087624110001240FFF806E +:1051E000024F702401CF9026324200FF00409021F0 +:1051F0000A000876241100010E00066D0220282105 +:10520000321800301300FFAA321000820240202121 +:105210000E0005A7022028210A00086024040001CE +:105220008F6E00743C0F80002405000301CF902591 +:10523000AF72007493710083240600010E000570A4 +:10524000322400FF0E00004124040001936D007D14 +:10525000020D60250E000062A36C007D3C0B08006F +:105260008D6B0054257000013C010800AC300054E7 +:105270000A000860240400018F6800743C09800063 +:105280002405000401093825AF6700749363008387 +:10529000240600010E000570306400FF0E0000417E +:1052A000240400019362007D020298250E00006232 +:1052B000A373007D0A00086024040001324D0080C1 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC +:1052D0002645000127BDFFC83C0A0008AFBF0030CB +:1052E000AFB5002CAFB40028AFB30024AFB200209C +:1052F000AFB1001CAFB00018034AD8212409004008 +:10530000AF490814AF4008108F4209448F43095039 +:105310008F4609548F47095C8F48094C9344010814 +:105320009345010BAF820064308400FF30A500FF7D +:10533000AF830050AF86004CAF87005C0E00084A78 +:10534000AF8800601440017D8FBF0030A760006807 +:10535000934D0900240B00503C15080026B53D482C +:1053600031AC00FF3C12080026523D58118B00035F +:10537000000000000000A8210000902193510109C5 +:105380008F9F005024040010322E007F000E68C052 +:10539000000E6140018D282124B40088AF54081804 +:1053A0008F4901048F4A09A43C0B000E034BC02116 +:1053B000012A10233C010800AC223D6C8F430958A0 +:1053C0003C010800A0243D9097470908007F302346 +:1053D0003C010800AC263D7030E8FFFF0008C9C062 +:1053E0003C010800AC3F3D94AF59002C974209089E +:1053F0009710002C8EB10000930F001803749821B1 +:10540000A7900058AF9300440220F80931F000FF44 +:10541000304E000215C001B2304F000111E0014FC3 +:10542000000000009343093E3066000814C00002EB +:10543000241400030000A0218F5809A424130001A4 +:105440003C010800AC383D98934F0934935109371B +:1054500031EC00FF322E00FF028E6821000D288003 +:1054600000AC5021015058213C010800A42B3D887C +:105470003C010800A42A3D8693490934312200FFEB +:1054800002022021249000103C010800A4303D8439 +:10549000240700068F9F00503C010800AC273D8C7C +:1054A0008F88005C8F59095800008021011F282334 +:1054B00004A00149033F20230480014700A4302BAE +:1054C00010C00149000000003C010800AC253D70FF +:1054D0008E4200000040F809000000003043000246 +:1054E000146000F80040882130440001548000100E +:1054F0008E4200043C0908008D293D743C0AC0001E +:10550000012A8025AF500E008F45000030AB000807 +:105510001160FFFD00000000974D0E0824100001EF +:10552000A78D003C8F4C0E04AF8C00348E420004DB +:105530000040F8090000000002228825322E0002F7 +:1055400015C00180000000003C09080095293D7C41 +:105550003C06080094C63D883C0A0800954A3D7EFA +:105560003C1908008F393D74012660213C18080061 +:105570008F183D983C03080094633D92018A2021D6 +:105580008F4E09400329F821248F000203E32821CC +:10559000031968213C010800A42C3D8AAF8E0064E9 +:1055A0003C010800AC2D3D983C010800A4253D803D +:1055B0000E00009E31E4FFFF8F870048004020214D +:1055C0003C010800A0273D918E42000824E800011C +:1055D000AF8800480040F809000000009344010B28 +:1055E0008F4C002C974A09083C0B000E034B4021BE +:1055F0003149FFFF000919C08F8B0050AF43002CC9 +:10560000974309089506001A00403821308A004067 +:1056100030DFFFFFAC5F00008D19001C0040482107 +:10562000AC5900048D180020AC580008910F0019E7 +:1056300031E30003107300F0000000002862000254 +:105640001440010924050002106500FD240D00032B +:10565000106D010D00000000114000D90000000095 +:105660003C0A0800954A3D8625420001934D0934C5 +:1056700093580921950E002A31A300FF00032082D0 +:10568000331F00FF9798005800047E00001FCC00D5 +:1056900001F940253049FFFF0109102501D83021CB +:1056A0003C0540000045502500066C00ACED0004B0 +:1056B000ACEA0000934309203C04000624ED0014EA +:1056C0000003FE0003E4C825ACF900088F49092C4B +:1056D000270F000131EE7FFFACE9000C8F48093045 +:1056E000A78E005824E90028ACE800108F4509383F +:1056F00001204021ACE50014ADAB00048F4209400D +:10570000ADA20008934B09373C1F080093FF3D9062 +:105710008F4309488F4A0940316600FF00D4202199 +:10572000006A78230004C700001FCC000319282555 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4 +:10574000AF4C002C934C093E318B00085160000F88 +:105750008E58000C3C06010134CA080AACEA002845 +:105760008F4B0074AD2B00043C0C0800918C3D90D5 +:105770003187001050E00003AD2000088F62006008 +:10578000AD2200082528000C8E58000C0300F809F3 +:10579000010020213C19080097393D8A3C1F080070 +:1057A00097FF3D7E033F782125E900020E0000C7E8 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 +:1057C0008D083D7401C828233C010800AC253D6CC0 +:1057D00014A00006000000003C0308008C633D8C10 +:1057E000346400403C010800AC243D8C1200007081 +:1057F0008F8C00448F470E108F900044AE0700201E +:105800008F4D0E18AE0D00243C10080096103D8000 +:105810000E0000600000000024020040AF420814A7 +:105820008F8600508F8A004C00D01821006A5823C0 +:1058300019600004AF830050AF6300548F650054BB +:10584000AF85004C1200000C000000008F44007473 +:10585000936800813409FA002D0E000711C000057D +:1058600000891821937F0081241901F403F9780439 +:1058700001E41821AF63000C8F44095C8F83005C46 +:105880000083C0231B000003000000008F50095C50 +:10589000AF90005C0E000062000000008F8C005092 +:1058A0008E4700103C010800AC2C3D9400E0F80944 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC +:1058C000240700068F450024975909088F8B006430 +:1058D0008F9400503C0F001F978200588F86005411 +:1058E0008F93004C3328FFFF35E9FF8000A9502437 +:1058F000000871C032320100AF4E0024A4C2002C57 +:10590000AF4A0024AF6B0044AF740050AF73005433 +:105910001640008032380010570000868EA4000424 +:10592000322300405460001B8EB100088EB0000C82 +:105930000200F809000000008FBF00308FB5002C76 +:105940008FB400288FB300248FB200208FB1001CC9 +:105950008FB0001803E0000827BD00389347010905 +:105960008F8800380007FE0003E8C825AF59008083 +:105970008F5809A08F5309A4AFB80010AF580E1468 +:105980008FB40010AF540E10AF530E1C0A00096202 +:10599000AF530E180220F809000000008EB0000C72 +:1059A0000200F809000000000A000AA88FBF0030BA +:1059B000A5800020A59300220A000A5BAD93002475 +:1059C0003C09080095293D863C06080094C63D80A8 +:1059D0000A0009F4012610213C010800AC203D70AA +:1059E0000A00098E8E4200003C010800AC243D7084 +:1059F0000A00098E8E4200003C03080094633D8A31 +:105A00003C04080094843D803C1F080097FF3D7CC7 +:105A1000951800240064C821033F782300186C0007 +:105A200025EEFFF201AE2825AC45000C240208004B +:105A3000ACE20014ACE000100A0009EF24E7001803 +:105A400095060024950900280006240000091C0082 +:105A5000349F810034790800ACFF000CACF90010D1 +:105A60000A0009EF24E700141460FEFB00000000A8 +:105A70009518002400187C0035EE0800ACEE000CF0 +:105A80000A0009EF24E700103C07080094E73D8076 +:105A90003C04080094843D8A3C03080094633D7CE8 +:105AA00095190024951800280087F82103E378232E +:105AB0002407080000192C0000186C0025EEFFEEEA +:105AC00001AE302534A28100AD2700182527001C27 +:105AD000AD22000CAD2600100A0009EFAD20001425 +:105AE00093520109000028210E000602324400FFF3 +:105AF0008FBF00308FB5002C8FB400288FB30024E7 +:105B00008FB200208FB1001C8FB0001803E0000896 +:105B100027BD0038935F010933E400FF0E00066DD6 +:105B200000002821323800105300FF7E322300404D +:105B30008EA400040080F809000000000A000AA2F8 +:105B4000322300401200FF5F000000008F540E144B +:105B50008F920044AE5400208F530E1C0A000A8A14 +:105B6000AE5300248F82001C008040213C040100C1 +:105B70009047008530E3002010600009000000001D +:105B80003C0708008CE73D948F83001800E3202336 +:105B9000048000089389000414E30003010020211D +:105BA00003E00008008010213C04010003E000082D +:105BB000008010211120000B006738238F8C0020FB +:105BC00024090034918B00BC316A0002514000016D +:105BD0002409003000E9682B15A0FFF10100202105 +:105BE00000E938232419FFFC00B9C02400F9782407 +:105BF00000F8702B15C0FFEA01E8202130C2000335 +:105C00000002182314C00012306900030000302184 +:105C100000A9702101C6682100ED602B1180FFE012 +:105C20003C0401002D2F00010006482B01053821FE +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E +:105C400000B9C0240308202103E0000800801021CF +:105C50008F8B002024060004916A00BC31440004AC +:105C60001480FFEC00A970210A000B5E00003021B7 +:105C700027BDFFE8AFBF00108F460100934A01091E +:105C80003C1F08008FFF00902407FF80314F00FF6A +:105C900031E8007F0008614003E6C821032CC021E1 +:105CA00027090120012770243C010800A02F3DD0C6 +:105CB000AF4E080C3C0D08008DAD00903C040080F8 +:105CC0003482000301A65821016C182124650120AB +:105CD00030AA007801424025AF48081C3C1F08004C +:105CE0008FFF00908F88004003E6C0213319000722 +:105CF00003074824033A7821AF49002825E909C061 +:105D0000952E00023C0D08008DAD008C3C0A080069 +:105D10008D4A009031CC3FFF01A61821000C59801C +:105D2000006B282100A72024AF44002C95220002FC +:105D30003C1F08008FFF008C9107008530593FFF02 +:105D400003E678210019C1800146702101F868211D +:105D500031CC007F31AB007F019A2821017A50219C +:105D60003C03000C3C04000E00A328210144102138 +:105D700030E6002027470980AF82002CAF88001C46 +:105D8000AF890024AF85002010C00006AF8700282F +:105D90008D0200508CA4010C0044302318C0007701 +:105DA00000000000910C0085240DFFDF018D3824D8 +:105DB000A10700858F8B001C8F8900248F87002806 +:105DC0008D65004CAF850018912F000D31EE00203D +:105DD00011C000170000000024090001A38900047D +:105DE000AF80000C8CE400248F85000C240A00088E +:105DF000AF800008AF8000103C010800A42A3D7E5F +:105E00003C010800A4203D920E000B32000030211E +:105E10008F8500248FBF0010AF82001490A8000D62 +:105E200027BD00180008394203E0000830E20001F5 +:105E3000913F00022418000133F900FF001921826C +:105E400010980039240800021088005B8F86002C0F +:105E50008CE5002414A0001B8F9F002091220000DD +:105E6000240A00053046003F10CA00472404000100 +:105E70008F860008A3840004AF860010AF86000C54 +:105E80008CE400248F85000C240A00083C010800E3 +:105E9000A42A3D7E3C010800A4203D920E000B3256 +:105EA000000000008F8500248FBF0010AF82001417 +:105EB00090A8000D27BD00180008394203E0000833 +:105EC00030E200018CF800088CF900248FEE00C449 +:105ED000A38000048CE40024AF8E000C8F85000C9E +:105EE0008F86000803197823240A0008AF8F00105A +:105EF0003C010800A42A3D7E3C010800A4203D92FC +:105F00000E000B32000000008F8500248FBF0010B0 +:105F1000AF82001490A8000D27BD00180008394278 +:105F200003E0000830E20001912300003062003FEE +:105F3000104400278F8500208CE400241480002169 +:105F4000000000008D2E00183C187FFF8F85002078 +:105F5000370FFFFF01CF1824AF8300088F9F000881 +:105F60008CA8008403E8C82B1720000203E020213E +:105F70008CA400840A000BEDAF8400088CA3010CF4 +:105F80000A000BCBAF8300188D2C00188F860008F9 +:105F90003C0D7FFF8F89002035A3FFFF018358242C +:105FA00024040001AF8B0010AD2000CCA3840004BA +:105FB0000A000BF9AF86000C8CCA00140A000BED26 +:105FC000AF8A00088CA300C80A000C30AF83000819 +:105FD0008F84002C8CAC00648C8D0014018D582BA8 +:105FE00011600004000000008CA200640A000C3064 +:105FF000AF8200088C8200140A000C30AF820008C7 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3 +:1060100014A00007AFB000108F86002424020005F2 +:1060200090C400003083003F106200B68F840020CF +:106030008F91000800A080218F8C00283C0508006B +:106040008CA53D708D8B000431663FFF00C5502B41 +:106050005540000100C02821938D000411A0007359 +:1060600000B0F82B8F98002024040034930F00BC5C +:1060700031EE000251C000012404003000A4C82BFE +:10608000172000D10000000000A4282300B0F82B46 +:106090003C010800A4243D7C17E000680200202198 +:1060A0003C0308008C633D6C0083102B54400001BE +:1060B000008018218F8800243C010800AC233D7427 +:1060C000000048219104000D308300205060000141 +:1060D0008F490E188F8300140123382B10E00059CC +:1060E000000000003C0408008C843D7400895821A5 +:1060F000006B502B114000560090602B006930233C +:1061000000C020213C010800AC263D7412000003B1 +:10611000241FFFFC1090008A32270003009FC82430 +:106120003C010800AC393D743C010800A4203D92BC +:106130008F84000C120400078F830020AF910008A9 +:10614000020020218C7100CCAF90000C26300001A1 +:10615000AC7000CC3C0208008C423D748F8A001069 +:10616000240700180082202301422823AF84000C5A +:1061700010800002AF850010240700108F86001CDD +:106180003C010800A0273D902407004090CC0085EA +:10619000318B00C0116700408F8D001414A00015D2 +:1061A00000002021934A01098F420974314500FF04 +:1061B0000002260224A300013090007F3071007F8E +:1061C0001230007A2407FF80A0C300833C09080036 +:1061D0008D293D8C8F880024240D0002352C000869 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 +:1061F00024040010910E000D31C6002010C00005CF +:1062000000801821240800013C010800AC283D74DE +:10621000348300018FBF00188FB100148FB00010BD +:106220000060102103E0000827BD00203C010800A9 +:10623000A4203D7C13E0FF9A020020210A000C817B +:1062400000A020213C0408008C843D740090602B49 +:106250001180FFAE000000003C0F080095EF3D7C70 +:1062600001E4702101C6682B11A000072C820004F4 +:106270003C1F60008FF954043338003F1700FFE5DE +:10628000240300422C8200041040FFA0240300429B +:106290000A000CDF8FBF0018152DFFC000000000A2 +:1062A0008CDF00743C0380002405FF8003E3C825D5 +:1062B000ACD9007490D80085240E0004240400108A +:1062C000330F003F01E54025A0C800858F880024DA +:1062D0003C010800A02E3DD1240300019106000DD1 +:1062E00030C9002015200003000000003C03080016 +:1062F0008C633D743C010800AC233D6C0A000CD655 +:10630000000000008F8700108C88008400E8282B94 +:1063100014A0000200E088218C910084240900016F +:10632000A38900048F440E18022028210E000B328E +:1063300002203021022080210A000C67AF82001465 +:1063400000071823306600033C010800A4263D9294 +:10635000122000058F8C0020918B00BC316A000454 +:106360001540001524CD00043C0F080095EF3D9228 +:1063700001E4702100AE302B50C0FF6E8F84000C02 +:106380002C85000514A0FFA32403004230980003CD +:1063900017000002009818232483FFFC3C0108002A +:1063A000AC233D740A000CA30000000000A7582491 +:1063B0000A000CCB016718263C010800A42D3D9271 +:1063C0000A000D33000000003C010800AC203D74C1 +:1063D0000A000CDE240300428F83001014600007C3 +:1063E000000010218F88002424050005910600007C +:1063F00030C400FF108500030000000003E0000827 +:1064000000000000910A0018314900FF000939C25C +:1064100014E0FFFA8F85001C3C04080094843D7C46 +:106420003C0308008C633D943C1908008F393D748F +:106430003C0F080095EF3D920064C0218CAD0054E4 +:106440000319702101CF6021018D58231960001DAF +:1064500000000000910E001C8F8C002C974B0E103A +:1064600031CD00FF8D850004016D30238D88000043 +:1064700030CEFFFF000E510000AAC82100003821D5 +:1064800001072021032A182B0083C021AD990004A5 +:10649000AD980000918F000A01CF6821A18D000AFC +:1064A0008F88002C974B0E12A50B0008950A003818 +:1064B00025490001A50900389107000D34E60008C0 +:1064C000A106000D03E000080000000027BDFFE06A +:1064D000938700048F8F00248FAD00143C0E7FFF44 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C +:1064F00001A8182491EA000D000717C03C1FBFFF38 +:10650000006258252D2E00018F90001837F9FFFFEB +:106510003C1808008F183D943C0F080095EF3D8A09 +:1065200001796824000E47803C07EFFF3C05F0FF2F +:1065300001A818253149002034E2FFFF34ACFFFFE9 +:106540000310582327A500102406000225EA0002A4 +:1065500000621824008080211520000200004021E4 +:106560008F480E1CA7AA0012056000372407000000 +:1065700030FF00FF001FCF008F8B001C00793825F3 +:10658000AFA70014916F00853C08080091083D9169 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A +:1065A0003C1F080097FF3D8400EA6824A3A800115F +:1065B0000003174001A248258FB90010AFA90014AD +:1065C0003C0A0800914A3D93A7BF00168FA800140B +:1065D000032CC0243C0B01003C0F0FFF030B1825BC +:1065E0003147000335EEFFFF010C68240007160059 +:1065F000006EF8243C09700001A2C82503E9582563 +:10660000AFB90014AFAB00100E000076A3A00015C8 +:106610008F8C0024260200089186000D30C40020D3 +:10662000108000068FBF001C3C05080094A53D802B +:1066300024B0FFFF3C010800A4303D808FB000185B +:1066400003E0000827BD00208F9800140118502B8C +:106650005540FFC7240700010A000DB630FF00FFB8 +:106660009382000427BDFFE0AFBF00181040000F69 +:10667000008050218F880024240B00058F8900089A +:10668000910700008F8400200100282130E3003FA3 +:106690008F86002C106B000800003821AFA9001075 +:1066A0000E00040EAFAA0014A38000048FBF0018D0 +:1066B00003E0000827BD00208D1900183C0F0800DA +:1066C0008DEF3D748F9800103C027FFF8D08001401 +:1066D000345FFFFF033F682401F8702101AE60239F +:1066E00001883821AFA900100E00040EAFAA0014D3 +:1066F0000A000E04A38000048F8700243C050800D4 +:1067000094A53D923C0208008C423D8C90E6000D21 +:106710000005240030C300201060002C00444025F8 +:106720008F85001C00006021240B000190A30085D0 +:1067300000004821240A00013C0F800035EE007063 +:106740008DC70000AF8700308F5801780700FFFE2B +:106750003C038000347900708F3800003C0508004D +:106760008CA500743C0D08008DAD007003077823E4 +:1067700000AF38210000102100EF302B01A22021B2 +:10678000008618213C010800AC2700743C01080079 +:10679000AC230070AF4B01483C1908008F393D9481 +:1067A000A7490144A74A0146AF59014C3C0B0800D8 +:1067B000916B3D91A34B0152AF4801543C0810002E +:1067C000A74C015803E00008AF4801788F4B0E1C1E +:1067D0003C0A08008D4A3D7497490E16974D0E14D9 +:1067E00001456021312AFFFF0A000E2731A9FFFF72 +:1067F0008F8300249064000D308200201040002917 +:10680000000000000000482100005021000040214D +:106810003C07800034EB00708D670000AF870030CC +:106820008F4C01780580FFFE3C0D800035AC007078 +:106830008D8B00003C0508008CA500743C0408000A +:106840008C8400700167302300A67821000010219D +:1068500001E6C82B0082C021031970213C01080009 +:10686000AC2F00743C010800AC2E0070AF49014809 +:106870003C0D08008DAD3D94A7480144240900401B +:10688000A74A01463C081000240AFF91AF4D014C75 +:10689000A34A0152AF490154A740015803E0000840 +:1068A000AF4801788F490E1897460E1297450E1083 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F +:1068C00027BDFFF89064000D308200201040003A90 +:1068D00000000000240B000100004821240A0001F0 +:1068E0003C088000350700708CE30000AF83003067 +:1068F0008F4C01780580FFFE3C0E80003C040800B0 +:1069000090843DD035C700708CEC00003C05080039 +:106910008CA50074A3A400033C1908008F390070F3 +:106920008FAD00000183302300A638210000102124 +:106930000322782100E6C02B01F8602101AE40253A +:10694000AFA800003C010800AC2700743C0108001F +:10695000AC2C00709346010A3C04080090843DD1A1 +:10696000A3A00002A3A600018FA300003C0580FFA6 +:106970003099007F34A2FFFF006278240019C6001E +:1069800001F87025240D3000AF4E014C27BD0008E2 +:10699000AF4D0154A7400158AF4B0148A7490144EE +:1069A000A74A01463C091000240AFF80A34A01526D +:1069B00003E00008AF4901788F4B0E1897460E127E +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 +:1069D0008F85001C2402008090A40085308300C0B5 +:1069E000106200058F8600208F8800088F87000CBA +:1069F000ACC800C8ACC700C403E000080000000039 +:106A00003C0A0800254A39543C09080025293A2047 +:106A10003C08080025082DD43C07080024E73B3437 +:106A20003C06080024C637C43C05080024A5353CB4 +:106A30003C040800248431643C0308002463385C6F +:106A40003C020800244236303C010800AC2A3D508C +:106A50003C010800AC293D4C3C010800AC283D48F5 +:106A60003C010800AC273D543C010800AC263D64C5 +:106A70003C010800AC253D5C3C010800AC243D58BD +:106A80003C010800AC233D683C010800AC223D609D +:086A900003E000080000000013 +:00000001FF --- linux-4.4.0.orig/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex +++ linux-4.4.0/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex @@ -0,0 +1,6496 @@ +:10000000080001180800000000005594000000C816 +:1000100000000000000000000000000008005594EF +:10002000000000380000565C080000A00800000036 +:100030000000574400005694080059200000008436 +:100040000000ADD808005744000001C00000AE5CBD +:100050000800321008000000000092580000B01C98 +:10006000000000000000000000000000080092589E +:100070000000033C000142740800049008000400E2 +:10008000000012FC000145B000000000000000006C +:1000900000000000080016FC00000004000158AC3D +:1000A000080000A80800000000003D00000158B052 +:1000B00000000000000000000000000008003D00FB +:1000C00000000030000195B00A000046000000006A +:1000D000000000000000000D636F6D362E322E31DF +:1000E00062000000060201020000000000000003A0 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C020800244256083C030800A1 +:1002000024635754AC4000000043202B1480FFFDB2 +:10021000244200043C1D080037BD9FFC03A0F021D0 +:100220003C100800261001183C1C0800279C5608AA +:100230000E000256000000000000000D27BDFFB4B4 +:10024000AFA10000AFA20004AFA30008AFA4000C50 +:10025000AFA50010AFA60014AFA70018AFA8001CF0 +:10026000AFA90020AFAA0024AFAB0028AFAC002C90 +:10027000AFAD0030AFAE0034AFAF0038AFB8003C28 +:10028000AFB90040AFBC0044AFBF00480E001544FA +:10029000000000008FBF00488FBC00448FB90040B1 +:1002A0008FB8003C8FAF00388FAE00348FAD003078 +:1002B0008FAC002C8FAB00288FAA00248FA90020C0 +:1002C0008FA8001C8FA700188FA600148FA5001000 +:1002D0008FA4000C8FA300088FA200048FA1000040 +:1002E00027BD004C3C1B60108F7A5030377B502864 +:1002F00003400008AF7A00008F82002427BDFFE092 +:10030000AFB00010AFBF0018AFB100148C42000CAA +:100310003C1080008E110100104000348FBF001887 +:100320000E000D84000000008F85002024047FFF54 +:100330000091202BACB100008E030104960201084D +:1003400000031C003042FFFF00621825ACA300042C +:100350009202010A96030114304200FF3063FFFF4E +:100360000002140000431025ACA200089603010C03 +:100370009602010E00031C003042FFFF00621825A8 +:10038000ACA3000C960301109602011200031C009E +:100390003042FFFF00621825ACA300108E02011846 +:1003A000ACA200148E02011CACA20018148000083C +:1003B0008F820024978200003C0420050044182509 +:1003C00024420001ACA3001C0A0000C6A782000062 +:1003D0003C0340189442001E00431025ACA2001CB0 +:1003E0000E000DB8240400018FBF00188FB1001457 +:1003F0008FB000100000102103E0000827BD00208E +:100400003C0780008CE202B834E50100044100089A +:10041000240300013C0208008C42006024420001D9 +:100420003C010800AC22006003E0000800601021DD +:100430003C0208008C42005C8CA4002094A30016AF +:100440008CA6000494A5000E24420001ACE40280B6 +:100450002463FFFC3C010800AC22005C3C0210005D +:10046000A4E30284A4E5028600001821ACE6028819 +:10047000ACE202B803E000080060102127BDFFE0F5 +:100480003C028000AFB0001034420100AFBF001C3E +:10049000AFB20018AFB100148C43000094450008BF +:1004A0002462FE002C42038110400003000381C23D +:1004B0000A00010226100004240201001462000553 +:1004C0003C1180003C02800890420004305000FF44 +:1004D0003C11800036320100964300143202000FB6 +:1004E00000021500004310253C0308008C63004403 +:1004F00030A40004AE220080246300013C01080007 +:10050000AC2300441080000730A200028FBF001C03 +:100510008FB200188FB100148FB000100A0000CE07 +:1005200027BD00201040002D0000182130A20080BF +:1005300010400005362200708E44001C0E000C672F +:10054000240500A0362200708C4400008F82000C2D +:10055000008210232C43012C10600004AF82001095 +:10056000240300010A000145AF84000C8E42000400 +:100570003C036020AF84000CAC6200143C02080015 +:100580008C42005850400015000018218C62000475 +:10059000240301FE304203FF144300100000182121 +:1005A0002E020004104000032E0200080A00014041 +:1005B0000000802114400003000000000A000140F8 +:1005C0002610FFF90000000D2402000202021004B0 +:1005D0003C036000AC626914000018218FBF001C4E +:1005E0008FB200188FB100148FB00010006010217E +:1005F00003E0000827BD00203C0480008C8301003C +:1006000024020100506200033C0280080000000D3B +:100610003C02800890430004000010213063000F6A +:1006200000031D0003E00008AC8300800004188074 +:100630002782FF9C00621821000410C00044102390 +:100640008C640000000210C03C030800246356E4E0 +:10065000004310213C038000AC64009003E00008DC +:10066000AF8200243C0208008C42011410400019A3 +:100670003084400030A2007F000231C03C02020002 +:100680001080001400A218253C026020AC43001426 +:100690003C0408008C8456B83C0308008C630110AD +:1006A0003C02800024050900AC4500200086202182 +:1006B000246300013C028008AC4400643C01080053 +:1006C000AC2301103C010800AC2456B803E000083C +:1006D000000000003C02602003E00008AC4500146C +:1006E00003E000080000102103E0000800001021D2 +:1006F00030A2000810400008240201003C0208005B +:100700008C42010C244200013C010800AC22010C87 +:1007100003E0000800000000148200080000000050 +:100720003C0208008C4200FC244200013C0108000D +:10073000AC2200FC0A0001A330A200203C02080009 +:100740008C420084244200013C010800AC22008459 +:1007500030A200201040000830A200103C02080027 +:100760008C420108244200013C010800AC2201082F +:1007700003E0000800000000104000080000000036 +:100780003C0208008C420104244200013C010800A4 +:10079000AC22010403E00008000000003C02080055 +:1007A0008C420100244200013C010800AC220100FF +:1007B00003E000080000000027BDFFE0AFB1001417 +:1007C0003C118000AFB20018AFBF001CAFB00010EA +:1007D0003632010096500008320200041040000733 +:1007E000320300028FBF001C8FB200188FB10014BB +:1007F0008FB000100A0000CE27BD00201060000B53 +:10080000020028218E2401000E00018A0000000051 +:100810003202008010400003240500A10E000C6786 +:100820008E44001C0A0001E3240200018E2301040F +:100830008F82000810430006020028218E24010048 +:100840000E00018A000000008E220104AF82000821 +:10085000000010218FBF001C8FB200188FB1001450 +:100860008FB0001003E0000827BD00202C82000498 +:1008700014400002000018212483FFFD240200021E +:10088000006210043C03600003E00008AC626914DD +:1008900027BDFFE0AFBF001CAFB20018AFB100141E +:1008A000AFB000103C048000948201083043700017 +:1008B000240220001062000A2862200154400052E5 +:1008C0008FBF001C24024000106200482402600018 +:1008D0001062004A8FBF001C0A0002518FB200183C +:1008E00034820100904300098C5000189451000C90 +:1008F000240200091062001C0000902128620009F7 +:10090000144000218F8200242402000A5062001249 +:10091000323100FF2402000B1062000F00000000C3 +:100920002402000C146200188F8200243C0208008C +:100930008C4256B824030900AC83002000501021DB +:100940003C038008AC6200643C010800AC2256B84D +:100950000A0002508FBF001C0E0001E900102602A1 +:100960000A0002308F8200240E0001E900102602E6 +:100970003C0380089462001A8C72000C3042FFFF26 +:10098000020280258F8200248C42000C5040001E01 +:100990008FBF001C0E000D84000000003C02800090 +:1009A00034420100944300088F82002400031C009D +:1009B0009444001E8F82002000641825AC50000073 +:1009C00024040001AC510004AC520008AC40000CFF +:1009D000AC400010AC400014AC4000180E000DB844 +:1009E000AC43001C0A0002508FBF001C0E000440E4 +:1009F000000000000A0002508FBF001C0E000C9F78 +:100A0000000000008FBF001C8FB200188FB10014CF +:100A10008FB000100000102103E0000827BD002067 +:100A200027BDFFD8AFB400203C036010AFBF002447 +:100A3000AFB3001CAFB20018AFB10014AFB00010DC +:100A40008C6450002402FF7F3C1408002694563822 +:100A5000008220243484380CAC6450003C028000B6 +:100A6000240300370E0014B0AC4300083C07080014 +:100A700024E70618028010212404001D2484FFFFAF +:100A8000AC4700000481FFFD244200043C02080042 +:100A9000244207C83C010800AC2256403C02080032 +:100AA000244202303C030800246306203C04080072 +:100AB000248403B43C05080024A506F03C06080085 +:100AC00024C62C9C3C010800AC2256803C02080045 +:100AD000244205303C010800AC2756843C01080044 +:100AE000AC2656943C010800AC23569C3C010800FF +:100AF000AC2456A03C010800AC2556A43C010800DB +:100B0000AC2256A83C010800AC23563C3C0108002E +:100B1000AC2456443C010800AC2056603C0108005F +:100B2000AC2556643C010800AC2056703C0108001E +:100B3000AC27567C3C010800AC2656903C010800CE +:100B4000AC2356980E00056E00000000AF80000C2C +:100B50003C0280008C5300008F8300043C0208009C +:100B60008C420020106200213262000700008821C0 +:100B70002792FF9C3C100800261056E43C02080017 +:100B80008C42002024050001022518040043202483 +:100B90008F820004004310245044000C26310001D1 +:100BA00010800008AF9000248E4300003C028000BB +:100BB000AC4300900E000D4BAE05000C0A0002C1C4 +:100BC00026310001AE00000C263100012E22000269 +:100BD000261000381440FFE9265200043C020800A9 +:100BE0008C420020AF820004326200071040FFD91F +:100BF0003C028000326200011040002D326200028F +:100C00003C0580008CA2010000002021ACA2002045 +:100C10008CA301042C42078110400008ACA300A85B +:100C200094A2010824032000304270001443000302 +:100C30003C02800890420005304400FF0E0001593C +:100C4000000000003C0280009042010B304300FF96 +:100C50002C62001E54400004000310800E00018628 +:100C60000A0002EC00000000005410218C42000039 +:100C70000040F80900000000104000043C02800021 +:100C80008C4301043C026020AC4300143C02080089 +:100C90008C4200343C0440003C03800024420001AC +:100CA000AC6401383C010800AC220034326200021E +:100CB00010400010326200043C1080008E0201409F +:100CC000000020210E000159AE0200200E00038317 +:100CD000000000003C024000AE0201783C02080027 +:100CE0008C420038244200013C010800AC2200384C +:100CF000326200041040FF973C0280003C108000EC +:100D00008E020180000020210E000159AE02002059 +:100D10008E03018024020F00546200073C02800809 +:100D20008E0201883C0300E03042FFFF00431025A3 +:100D30000A000328AE020080344200809042000086 +:100D400024030050304200FF14430007000000005D +:100D50000E000362000000001440000300000000C9 +:100D60000E000971000000003C0208008C42003CAB +:100D70003C0440003C03800024420001AC6401B804 +:100D80003C010800AC22003C0A0002A33C028000A7 +:100D90003C02900034420001008220253C02800089 +:100DA000AC4400203C0380008C6200200440FFFE25 +:100DB0000000000003E00008000000003C0280008A +:100DC000344300010083202503E00008AC440020E8 +:100DD00027BDFFE0AFB10014AFB000100080882144 +:100DE000AFBF00180E00033230B000FF8F83FF94B6 +:100DF000022020219062002502028025A07000259B +:100E00008C7000183C0280000E00033D020280241A +:100E10001600000B8FBF00183C0480008C8201F884 +:100E20000440FFFE348201C024030002AC510000E4 +:100E3000A04300043C021000AC8201F88FBF0018F0 +:100E40008FB100148FB0001003E0000827BD002010 +:100E500027BDFFE83C028000AFBF00103442018094 +:100E6000944300048C4400083063020010600005C5 +:100E7000000028210E00100C000000000A0003787A +:100E8000240500013C02FF000480000700821824B2 +:100E90003C02040014620004240500018F82FF94C8 +:100EA00090420008240500018FBF001000A010210F +:100EB00003E0000827BD00188F82FF982405000179 +:100EC000A040001A3C028000344201400A00034264 +:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E +:100EE000AFB20018AFB10014AFB0001090A2000074 +:100EF000304400FF38830020388200300003182B74 +:100F00000002102B0062182410600003240200501D +:100F1000148200A88FBF001C90A20005304200017F +:100F2000104000A48FBF001C3C02800034420140EE +:100F3000904200082443FFFF2C6200051040009EF1 +:100F40008FB20018000310803C030800246355ACE6 +:100F5000004310218C420000004000080000000007 +:100F60003C028000345101400E0003328E24000008 +:100F70008F92FF948E2200048E50000C1602000205 +:100F800024020001AE42000C0E00033D8E2400003E +:100F90008E220004145000068FBF001C8FB2001870 +:100FA0008FB100148FB000100A000F7827BD002009 +:100FB0008E42000C0A000419000000003C0480006E +:100FC0003482014094A300108C4200043063FFFF80 +:100FD0001443001C0000000024020001A4A2001021 +:100FE0008C8202380441000F3C0380003C02003F29 +:100FF0003448F0003C0760003C06FFC08CE22BBC8C +:1010000000461824004810240002130200031D8229 +:10101000106200583C0280008C8202380440FFF7C6 +:101020003C038000346201408C44000034620200C2 +:10103000AC4400003C021000AC6202380A00043BE1 +:101040008FBF001C94A200100A00041900000000C9 +:10105000240200201482000F3C0280003C03800028 +:1010600094A20012346301408C6300043042FFFFFD +:10107000146200050000000024020001A4A2001276 +:101080000A0004028FBF001C94A200120A00041977 +:1010900000000000345101400E0003328E24000095 +:1010A0008F92FF948E230004964200123050FFFF6F +:1010B0001603000224020001A64200120E00033DA6 +:1010C0008E2400008E220004160200068FBF001C32 +:1010D0008FB200188FB100148FB000100A00037C8B +:1010E00027BD0020964200120A00041900000000EB +:1010F0003C03800094A20014346301408C6300041C +:101100003042FFFF14620008240200018FBF001C60 +:101110008FB200188FB100148FB00010A4A2001479 +:101120000A00146327BD002094A20014144000217B +:101130008FBF001C0A000435000000003C03800043 +:1011400094A20016346301408C6300043042FFFF18 +:101150001462000D240200018FBF001C8FB2001822 +:101160008FB100148FB00010A4A200160A000B1457 +:1011700027BD00209442007824420004A4A200105D +:101180000A00043B8FBF001C94A200162403000138 +:101190003042FFFF144300078FBF001C3C020800D1 +:1011A0008C420070244200013C010800AC22007017 +:1011B0008FBF001C8FB200188FB100148FB00010C9 +:1011C00003E0000827BD002027BDFFD8AFB20018FC +:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB +:1011E000AFB000103C028000345101008C5001006F +:1011F0009242000092230009304400FF2402001FA5 +:10120000106200AB28620020104000192402003850 +:101210002862000A1040000D2402000B286200081A +:101220001040002E8F820024046001042862000216 +:101230001440002A8F820024240200061062002637 +:101240008FBF00200A00055F8FB3001C1062006092 +:101250002862000B144000FA8FBF00202402000E09 +:10126000106200788F8200240A00055F8FB3001C93 +:10127000106200D2286200391040000A2402008067 +:1012800024020036106200E528620037104000C3D7 +:1012900024020035106200D98FBF00200A00055FCC +:1012A0008FB3001C1062002D2862008110400006E0 +:1012B000240200C824020039106200C98FBF002038 +:1012C0000A00055F8FB3001C106200A28FBF0020D0 +:1012D0000A00055F8FB3001C8F8200248C42000C33 +:1012E000104000D78FBF00200E000D8400000000CA +:1012F0003C038000346301008C6200008F85002075 +:10130000946700089466000CACA200008C64000492 +:101310008F82002400063400ACA400049448001E10 +:101320008C62001800073C0000E83825ACA20008D9 +:101330008C62001C24040001ACA2000C9062000A24 +:1013400000C23025ACA60010ACA00014ACA0001860 +:10135000ACA7001C0A00051D8FBF00208F8200244F +:101360008C42000C104000B68FBF00200E000D8490 +:10137000000000008F820024962400089625000CAF +:101380009443001E000422029626000E8F82002045 +:10139000000426000083202500052C003C0300806B +:1013A00000A6282500832025AC400000AC400004A6 +:1013B000AC400008AC40000CAC450010AC40001440 +:1013C000AC400018AC44001C0A00051C24040001B9 +:1013D0009622000C14400018000000009242000504 +:1013E0003042001014400014000000000E000332D0 +:1013F0000200202192420005020020213442001008 +:101400000E00033DA242000592420000240300208A +:10141000304200FF10430089020020218FBF0020CE +:101420008FB3001C8FB200188FB100148FB0001062 +:101430000A00107527BD00280000000D0A00055E97 +:101440008FBF00208C42000C1040007D8FBF002019 +:101450000E000D84000000008E2200048F84002006 +:101460009623000CAC8200003C0280089445002CBE +:101470008F82002400031C0030A5FFFF9446001E4D +:101480003C02400E0065182500C23025AC830004E4 +:10149000AC800008AC80000CAC800010AC80001464 +:1014A000AC800018AC86001C0A00051C2404000156 +:1014B0000E000332020020218F93FF9802002021AA +:1014C0000E00033DA660000C020020210E00034226 +:1014D000240500018F8200248C42000C104000582B +:1014E0008FBF00200E000D84000000009622000C2B +:1014F0008F83002000021400AC700000AC62000476 +:10150000AC6000088E4400388F820024AC64000C6C +:101510008E46003C9445001E3C02401FAC66001005 +:1015200000A228258E62000424040001AC6200148D +:10153000AC600018AC65001C8FBF00208FB3001C8E +:101540008FB200188FB100148FB000100A000DB8D0 +:1015500027BD0028240200201082003A8FB3001C0F +:101560000E000F5E00000000104000358FBF00200D +:101570003C0480008C8201F80440FFFE348201C0EC +:1015800024030002AC500000A04300043C02100001 +:10159000AC8201F80A00055E8FBF00200200202106 +:1015A0008FBF00208FB3001C8FB200188FB10014C2 +:1015B0008FB000100A000EA727BD00289625000C4A +:1015C000020020218FBF00208FB3001C8FB20018B3 +:1015D0008FB100148FB000100A000ECC27BD002878 +:1015E000020020218FB3001C8FB200188FB10014AD +:1015F0008FB000100A000EF727BD00289225000DBD +:10160000020020218FB3001C8FB200188FB100148C +:101610008FB000100A000F4827BD002802002021CB +:101620008FBF00208FB3001C8FB200188FB1001441 +:101630008FB000100A000F1F27BD00288FBF0020A9 +:101640008FB3001C8FB200188FB100148FB0001040 +:1016500003E0000827BD00283C0580008CA202782A +:101660000440FFFE34A2024024030002AC44000008 +:10167000A04300043C02100003E00008ACA2027882 +:10168000A380001803E00008A38000193C03800039 +:101690008C6202780440FFFE8F82001CAC62024024 +:1016A00024020002A06202443C02100003E0000891 +:1016B000AC6202783C02600003E000088C425404F3 +:1016C0009083003024020005008040213063003FF9 +:1016D0000000482114620005000050219082004C57 +:1016E0009483004E304900FF306AFFFFAD00000CCC +:1016F000AD000010AD000024950200148D05001C03 +:101700008D0400183042FFFF004910230002110031 +:10171000000237C3004038210086202300A2102B8E +:101720000082202300A72823AD05001CAD0400186B +:10173000A5090014A5090020A50A001603E0000869 +:10174000A50A002203E000080000000027BDFFD822 +:10175000AFB200183C128008AFB40020AFB3001C39 +:10176000AFB10014AFBF0024AFB00010365101007C +:101770003C0260008C4254049222000C3C1408008D +:10178000929400F7304300FF2402000110620032FF +:101790000080982124020002146200353650008037 +:1017A0000E00143D000000009202004C2403FF8054 +:1017B0003C0480003042007F000211C024420240FD +:1017C0000262102100431824AC8300949245000863 +:1017D0009204004C3042007F3C03800614850007D1 +:1017E000004380212402FFFFA22200112402FFFFF8 +:1017F000A62200120A0005D22402FFFF9602002052 +:10180000A222001196020022A62200128E020024BB +:101810003C048008AE2200143485008090A2004C65 +:1018200034830100A06200108CA2003CAC6200185E +:101830008C820068AC6200F48C820064AC6200F0C0 +:101840008C82006CAC6200F824020001A0A2006847 +:101850000A0005EE3C0480080E001456000000004B +:1018600036420080A04000680A0005EE3C04800873 +:10187000A2000068A20000690A0006293C02800854 +:10188000348300808C62003834850100AC62006CC7 +:1018900024020001A062006990A200D59083000894 +:1018A000305100FF3072007F12320019001111C058 +:1018B00024420240026210212403FF8000431824C6 +:1018C0003C048000AC8300943042007F3C038006DF +:1018D000004380218E02000C1040000D02002021E8 +:1018E0000E00057E0000000026220001305100FF9E +:1018F0009203003C023410260002102B0002102339 +:101900003063007F022288240A0005F8A203003C0D +:101910003C088008350401008C8200E03507008017 +:10192000ACE2003C8C8200E0AD02000090E5004C8F +:10193000908600D590E3004C908400D52402FF806F +:1019400000A228243063007F308400FF00A62825F1 +:101950000064182A1060000230A500FF38A500803E +:10196000A0E5004CA10500093C0280089043000E50 +:10197000344400803C058000A043000A8C8300189A +:101980003C027FFF3442FFFF00621824AC83001842 +:101990008CA201F80440FFFE00000000ACB301C0BF +:1019A0008FBF00248FB400208FB3001C8FB20018AB +:1019B0008FB100148FB0001024020002A0A201C455 +:1019C00027BD00283C02100003E00008ACA201F88B +:1019D00090A2000024420001A0A200003C030800E5 +:1019E0008C6300F4304200FF144300020080302179 +:1019F000A0A0000090A200008F84001C000211C073 +:101A00002442024024830040008220212402FF80DF +:101A1000008220243063007F3C02800A006218218B +:101A20003C028000AC44002403E00008ACC300008A +:101A300094820006908300058C85000C8C86001033 +:101A40008C8700188C88001C8C8400203C010800C6 +:101A5000A42256C63C010800A02356C53C0108003C +:101A6000AC2556CC3C010800AC2656D03C01080001 +:101A7000AC2756D83C010800AC2856DC3C010800D5 +:101A8000AC2456E003E00008000000003C0280089F +:101A9000344201008C4400343C038000346504006F +:101AA000AC6400388C420038AF850028AC62003C42 +:101AB0003C020005AC6200300000000000000000A5 +:101AC00003E00008000000003C020006308400FF34 +:101AD000008220253C028000AC4400300000000061 +:101AE00000000000000000003C0380008C62000049 +:101AF000304200101040FFFD3462040003E0000893 +:101B0000AF82002894C200003C080800950800CA73 +:101B100030E7FFFF0080482101021021A4C200002D +:101B200094C200003042FFFF00E2102B544000013D +:101B3000A4C7000094A200003C0308008C6300CC02 +:101B400024420001A4A2000094A200003042FFFF42 +:101B5000144300073C0280080107102BA4A00000DA +:101B60005440000101003821A4C700003C02800855 +:101B7000344601008CC3002894A200003C0480007D +:101B80003042FFFE000210C000621021AC82003C17 +:101B90008C82003C006218231860000400000000E2 +:101BA0008CC200240A0006BA244200018CC2002420 +:101BB000AC8200383C020050344200103C038000EC +:101BC000AC620030000000000000000000000000D7 +:101BD0008C620000304200201040FFFD0000000039 +:101BE00094A200003C04800030420001000210C0BA +:101BF000004410218C430400AD2300008C420404F7 +:101C0000AD2200043C02002003E00008AC8200305A +:101C100027BDFFE0AFB20018AFB10014AFB00010A5 +:101C2000AFBF001C94C2000000C080213C1208001D +:101C3000965200C624420001A6020000960300004E +:101C400094E2000000E03021144300058FB1003021 +:101C50000E00068F024038210A0006F10000000045 +:101C60008C8300048C82000424420040046100073D +:101C7000AC8200048C8200040440000400000000D8 +:101C80008C82000024420001AC8200009602000019 +:101C90003042FFFF50520001A600000096220000D3 +:101CA00024420001A62200003C02800834420100C8 +:101CB000962300009442003C144300048FBF001C94 +:101CC00024020001A62200008FBF001C8FB2001862 +:101CD0008FB100148FB0001003E0000827BD002072 +:101CE00027BDFFE03C028008AFBF0018344201006E +:101CF0008C4800343C03800034690400AC68003830 +:101D00008C42003830E700FFAF890028AC62003C0D +:101D10003C020005AC620030000000000000000042 +:101D200000000000000000000000000000000000B3 +:101D30008C82000C8C82000C97830016AD22000070 +:101D40008C82001000604021AD2200048C820018BB +:101D5000AD2200088C82001CAD22000C8CA2001465 +:101D6000AD2200108C820020AD220014908200056C +:101D7000304200FF00021200AD2200188CA20018B1 +:101D8000AD22001C8CA2000CAD2200208CA2001001 +:101D9000AD2200248CA2001CAD2200288CA20020C1 +:101DA000AD22002C3402FFFFAD260030AD20003400 +:101DB000506200013408FFFFAD28003850E00011E8 +:101DC0003C0280083C048008348401009482005066 +:101DD0003042FFFFAD22003C9483004494850044D0 +:101DE000240200013063FFFF000318C200641821C1 +:101DF0009064006430A5000700A210040A00075C8C +:101E00000044102534420100AD20003C94430044BE +:101E1000944400443063FFFF000318C2006218219D +:101E200030840007906500642402000100821004E1 +:101E30000002102700451024A0620064000000008A +:101E400000000000000000003C0200063442004098 +:101E50003C038000AC620030000000000000000085 +:101E6000000000008C620000304200101040FFFDB6 +:101E70003C06800834C201503463040034C7014A70 +:101E800034C4013434C5014034C60144AFA200104B +:101E90000E0006D2AF8300288FBF001803E00008B1 +:101EA00027BD00208F8300143C0608008CC600E884 +:101EB0008F82001C30633FFF000319800046102111 +:101EC000004310212403FF80004318243C068000B7 +:101ED000ACC300283042007F3C03800C004330211B +:101EE00090C2000D30A500FF0000382134420010E0 +:101EF000A0C2000D8F8900143C028008344201000A +:101F00009443004400091382304800032402000176 +:101F1000A4C3000E1102000B2902000210400005AC +:101F2000240200021100000C240300010A0007A48F +:101F30000000182111020006000000000A0007A49A +:101F4000000018218CC2002C0A0007A424430001C1 +:101F50008CC20014244300018CC200180043102BD3 +:101F60005040000A240700012402002714A20003A5 +:101F70003C0380080A0007B1240700013463010014 +:101F80009462004C24420001A462004C00091382B8 +:101F9000304300032C620002104000090080282119 +:101FA000146000040000000094C200340A0007C15D +:101FB0003046FFFF8CC600380A0007C10080282188 +:101FC000000030213C040800248456C00A000706A3 +:101FD0000000000027BDFF90AFB60068AFB50064F9 +:101FE000AFB40060AFB3005CAFB20058AFB1005403 +:101FF000AFBF006CAFB000508C9000000080B021EB +:102000003C0208008C4200E8960400328F83001CDA +:102010002414FF8030843FFF0062182100042180D7 +:1020200000641821007410243C13800000A090214B +:1020300090A50000AE620028920400323C02800CA1 +:102040003063007F00628821308400C02402004099 +:10205000148200320000A8218E3500388E2200182C +:102060001440000224020001AE2200189202003C3B +:10207000304200201440000E8F83001C000511C068 +:102080002442024000621821306400783C02008043 +:102090000082202500741824AE630800AE64081086 +:1020A0008E2200188E03000800431021AE22001873 +:1020B0008E22002C8E230018244200010062182B6F +:1020C0001060004300000000924200002442000122 +:1020D000A24200003C0308008C6300F4304200FF81 +:1020E00050430001A2400000924200008F84001C77 +:1020F000000211C024420240248300403063007F6C +:10210000008220213C02800A0094202400621821D1 +:10211000AE6400240A0008D2AEC30000920300326D +:102120002402FFC000431024304200FF1440000589 +:1021300024020001AE220018962200340A00084250 +:102140003055FFFF8E22001424420001AE220018F9 +:102150009202003000021600000216030441001C27 +:10216000000000009602003227A400100080282101 +:10217000A7A20016960200320000302124070001B9 +:102180003042FFFFAF8200140E000706AFA0001C14 +:10219000960200328F83001C3C0408008C8400E807 +:1021A00030423FFF000211800064182100621821B4 +:1021B00000741024AE62002C3063007F3C02800E5D +:1021C000006218219062000D3042007FA062000D75 +:1021D0009222000D304200105040007892420000E0 +:1021E0003C028008344401009482004C8EC30000FD +:1021F0003C130800967300C62442FFFFA482004CE3 +:10220000946200329623000E3054FFFF3070FFFFBF +:102210003C0308008C6300D000701807A7A30038A7 +:102220009482003E3063FFFF3042FFFF14620007DC +:10223000000000008C8200303C038000244200300B +:10224000AC62003C0A00086A8C82002C9482004038 +:102250003042FFFF5462000927A400408C820038FE +:102260003C03800024420030AC62003C8C8200348D +:10227000AC6200380A0008793C03800027A50038CA +:1022800027A60048026038210E00068FA7A000484C +:102290008FA300403C02800024630030AC43003830 +:1022A0008FA30044AC43003C3C0380003C0200058B +:1022B000AC6200303C028008344401009482004249 +:1022C000346304003042FFFF0202102B1440000769 +:1022D000AF8300289482004E9483004202021021B2 +:1022E000004310230A00088F3043FFFF9483004E01 +:1022F00094820042026318210050102300621823C8 +:102300003063FFFF3C028008344401009482003CAB +:102310003042FFFF14430003000000000A00089F42 +:10232000240300019482003C3042FFFF0062102B26 +:10233000144000058F8200289482003C0062102324 +:102340003043FFFF8F820028AC550000AC400004F2 +:10235000AC540008AC43000C3C02000634420010B0 +:102360003C038000AC620030000000000000000070 +:10237000000000008C620000304200101040FFFDA1 +:102380003C04800834840100001018C20064182145 +:102390009065006432020007240600010046100424 +:1023A00000451025A0620064948300429622000E2E +:1023B00050430001A386001892420000244200010D +:1023C000A24200003C0308008C6300F4304200FF8E +:1023D00050430001A2400000924200008F84001C84 +:1023E000000211C0244202402483004000822021C8 +:1023F0002402FF80008220243063007F3C02800A98 +:10240000006218213C028000AC440024AEC30000EE +:102410008FBF006C8FB600688FB500648FB400600A +:102420008FB3005C8FB200588FB100548FB0005052 +:1024300003E0000827BD007027BDFFD8AFB3001C24 +:10244000AFB20018AFB10014AFB00010AFBF0020A2 +:102450000080982100E0802130B1FFFF0E000D8444 +:1024600030D200FF0000000000000000000000006B +:102470008F8200208F830024AC510000AC520004F6 +:10248000AC530008AC40000CAC400010AC40001451 +:10249000AC4000189463001E02038025AC50001C61 +:1024A0000000000000000000000000002404000103 +:1024B0008FBF00208FB3001C8FB200188FB10014A3 +:1024C0008FB000100A000DB827BD002830A5FFFF0F +:1024D0000A0008DC30C600FF3C02800834430100DB +:1024E0009462000E3C080800950800C63046FFFFC5 +:1024F00014C000043402FFFF946500EA0A000929B1 +:102500008F84001C10C20027000000009462004E5F +:102510009464003C3045FFFF00A6102300A6182B52 +:102520003087FFFF106000043044FFFF00C5102318 +:1025300000E210233044FFFF0088102B1040000EF3 +:1025400000E810233C028008344401002403000109 +:1025500034420080A44300162402FFFFA482000E30 +:10256000948500EA8F84001C0000302130A5FFFF15 +:102570000A0009013C0760200044102A10400009AD +:102580003C0280083443008094620016304200010F +:10259000104000043C0280009442007E244200145B +:1025A000A462001603E000080000000027BDFFE061 +:1025B0003C028008AFBF001CAFB0001834420100DD +:1025C000944300429442004C104000193068FFFFD1 +:1025D0009383001824020001146200298FBF001C9D +:1025E0003C06800834D00100000810C200501021C1 +:1025F000904200643103000734C70148304200FFB5 +:10260000006210073042000134C9014E34C4012C6D +:1026100034C5013E1040001634C601420E0006D2F9 +:10262000AFA90010960200420A0009463048FFFF99 +:102630003C028008344401009483004494820042A8 +:102640001043000F8FBF001C94820044A4820042FC +:1026500094820050A482004E8C820038AC820030FC +:1026600094820040A482003E9482004AA4820048E2 +:102670008FBF001C8FB000180A00090427BD00207E +:102680008FB0001803E0000827BD002027BDFFA081 +:10269000AFB1004C3C118000AFBF0058AFB3005445 +:1026A000AFB20050AFB000483626018890C2000398 +:1026B0003044007FA3A400108E32018090C200003D +:1026C0003043007F240200031062003BAF92001CE5 +:1026D00028620004104000062402000424020002C4 +:1026E000106200098FBF00580A000B0F8FB300540F +:1026F0001062004D240200051062014E8FBF005889 +:102700000A000B0F8FB30054000411C002421021C5 +:102710002404FF8024420240004410242643004049 +:10272000AE2200243063007F3C02800A0062182140 +:102730009062003CAFA3003C00441025A062003C26 +:102740008FA3003C9062003C304200401040016C7E +:102750008FBF00583C108008A3800018361001007D +:102760008E0200E08C63003427A4003C27A50010F3 +:10277000004310210E0007C3AE0200E093A2001038 +:102780003C038000A20200D58C6202780440FFFE68 +:102790008F82001CAC62024024020002A06202444C +:1027A0003C021000AC6202780E0009390000000003 +:1027B0000A000B0E8FBF00583C05800890C3000133 +:1027C00090A2000B1443014E8FBF005834A4008028 +:1027D0008C8200189082004C90A200083C0260009D +:1027E0008C4254048C8300183C027FFF3442FFFF6C +:1027F000006218243C0208008C4200B4AC8300182C +:102800003C038000244200013C010800AC2200B4DB +:102810008C6201F80440FFFE8F82001CAC6201C094 +:102820000A000AD6240200023C10800890C300016E +:102830009202000B144301328FBF005827A40018E6 +:1028400036050110240600033C0260008C4254044B +:102850000E000E470000000027A40028360501F0F6 +:102860000E000E47240600038FA200283603010045 +:10287000AE0200648FA2002CAE0200688FA200306E +:10288000AE02006C93A40018906300D52402FF8070 +:102890000082102400431025304900FF3084007F5F +:1028A0003122007F0082102A544000013929008023 +:1028B000000411C0244202402403FF800242102180 +:1028C00000431024AE220094264200403042007F94 +:1028D0003C038006004340218FA3001C2402FFFF1D +:1028E000AFA800403C130800927300F71062003359 +:1028F00093A2001995030014304400FF3063FFFFDA +:102900000064182B106000100000000095040014F3 +:102910008D07001C8D0600183084FFFF0044202323 +:102920000004210000E438210000102100E4202BE5 +:1029300000C2302100C43021AD07001CAD060018D4 +:102940000A000A2F93A20019950400148D07001C99 +:102950008D0600183084FFFF008220230004210030 +:10296000000010210080182100C2302300E4202B39 +:1029700000C4302300E33823AD07001CAD06001867 +:1029800093A200198FA30040A462001497A2001A1A +:10299000A46200168FA2001CAC6200108FA2001C63 +:1029A000AC62000C93A20019A462002097A2001A46 +:1029B000A46200228FA2001CAC6200243C048008A8 +:1029C000348300808C6200388FA20020012088218F +:1029D000AC62003C8FA20020AC82000093A20018E1 +:1029E000A062004C93A20018A0820009A0600068B9 +:1029F00093A20018105100512407FF803229007F54 +:102A0000000911C024420240024210213046007FDA +:102A10003C03800000471024AC6200943C02800616 +:102A200000C2302190C2003CAFA60040000020212F +:102A300000471025A0C2003C8FA80040950200026C +:102A4000950300148D07001C3042FFFF3063FFFF29 +:102A50008D060018004310230002110000E2382107 +:102A600000E2102B00C4302100C23021AD07001C51 +:102A7000AD06001895020002A5020014A50000167C +:102A80008D020008AD0200108D020008AD02000C9E +:102A900095020002A5020020A50000228D02000878 +:102AA000AD0200249102003C304200401040001A68 +:102AB000262200013C108008A3A90038A38000183A +:102AC000361001008E0200E08D03003427A4004080 +:102AD00027A50038004310210E0007C3AE0200E016 +:102AE00093A200383C038000A20200D58C620278D9 +:102AF0000440FFFE8F82001CAC62024024020002F0 +:102B0000A06202443C021000AC6202780E00093957 +:102B100000000000262200013043007F14730004EF +:102B2000004020212403FF8002231024004320269C +:102B300093A200180A000A4B309100FF93A40018DA +:102B40008FA3001C2402FFFF1062000A308900FFDF +:102B500024820001248300013042007F14530005C9 +:102B6000306900FF2403FF800083102400431026F7 +:102B7000304900FF3C028008904200080120882173 +:102B8000305000FF123000193222007F000211C0C5 +:102B900002421021244202402403FF8000431824F3 +:102BA0003C048000AC8300943042007F3C038006EC +:102BB000004310218C43000C004020211060000BCA +:102BC000AFA200400E00057E000000002623000199 +:102BD0002405FF803062007F145300020225202468 +:102BE000008518260A000AAF307100FF3C048008F7 +:102BF000348400808C8300183C027FFF3442FFFF46 +:102C000000621824AC8300183C0380008C6201F839 +:102C10000440FFFE00000000AC7201C0240200026C +:102C2000A06201C43C021000AC6201F80A000B0E65 +:102C30008FBF00583C04800890C300019082000BB5 +:102C40001443002F8FBF0058349000809202000878 +:102C500030420040104000200000000092020008B6 +:102C60000002160000021603044100050240202164 +:102C70000E000ECC240500930A000B0E8FBF0058E7 +:102C80009202000924030018304200FF1443000D93 +:102C900002402021240500390E000E64000030217E +:102CA0000E0003328F84001C8F82FF9424030012D5 +:102CB000A04300090E00033D8F84001C0A000B0E88 +:102CC0008FBF0058240500360E000E64000030212E +:102CD0000A000B0E8FBF00580E0003320240202165 +:102CE000920200058F84001C344200200E00033D38 +:102CF000A20200050E0010758F84001C8FBF0058C3 +:102D00008FB300548FB200508FB1004C8FB0004889 +:102D100003E0000827BD00603C0280083445010044 +:102D20003C0280008C42014094A3000E0000302140 +:102D300000402021AF82001C3063FFFF3402FFFF00 +:102D4000106200063C0760202402FFFFA4A2000ED0 +:102D500094A500EA0A00090130A5FFFF03E000087E +:102D60000000000027BDFFC83C0280003C06800830 +:102D7000AFB5002CAFB1001CAFBF0030AFB400281E +:102D8000AFB30024AFB20020AFB00018345101003F +:102D900034C501008C4301008E2200148CA400E491 +:102DA0000000A821AF83001C0044102318400052EB +:102DB000A38000188E22001400005021ACA200E471 +:102DC00090C3000890A200D53073007FA3A200102A +:102DD0008CB200E08CB400E4304200FF1053003BA2 +:102DE00093A200108F83001C2407FF80000211C0F3 +:102DF0000062102124420240246300400047102456 +:102E00003063007F3C0980003C08800A006818217C +:102E1000AD2200248C62003427A4001427A50010E2 +:102E2000024280210290102304400028AFA3001426 +:102E30009062003C00E21024304200FF1440001970 +:102E4000020090219062003C34420040A062003CAD +:102E50008F86001C93A3001024C200403042007FE4 +:102E6000004828213C0208008C4200F42463000141 +:102E7000306400FF14820002A3A30010A3A000107E +:102E800093A20010AFA50014000211C0244202401A +:102E900000C2102100471024AD2200240A000B4577 +:102EA00093A200100E0007C3000000003C0280083F +:102EB00034420100AC5000E093A30010240A00014A +:102EC000A04300D50A000B4593A200102402000184 +:102ED000154200093C0380008C6202780440FFFE2A +:102EE0008F82001CAC62024024020002A0620244F5 +:102EF0003C021000AC6202789222000B2403000214 +:102F0000304200FF144300720000000096220008C7 +:102F1000304300FF24020082146200402402008437 +:102F20003C028000344901008D22000C95230006EC +:102F3000000216023063FFFF3045003F24020027E5 +:102F400010A2000FAF83001428A200281040000830 +:102F5000240200312402002110A2000924020025CD +:102F600010A20007938200190A000BBD00000000A8 +:102F700010A20007938200190A000BBD0000000098 +:102F80000E000777012020210A000C3D0000000000 +:102F90003C0380008C6202780440FFFE8F82001C9C +:102FA000AC62024024020002A06202443C02100013 +:102FB000AC6202780A000C3D000000009523000678 +:102FC000912400058D25000C8D2600108D270018FA +:102FD0008D28001C8D290020244200013C0108009E +:102FE000A42356C63C010800A02456C53C01080095 +:102FF000AC2556CC3C010800AC2656D03C0108005C +:10300000AC2756D83C010800AC2856DC3C0108002F +:10301000AC2956E00A000C3DA38200191462000A94 +:10302000240200813C02800834420100944500EAF9 +:10303000922600058F84001C30A5FFFF30C600FFDC +:103040000A000BFE3C0760211462005C00000000D7 +:103050009222000A304300FF306200201040000737 +:10306000306200403C02800834420100944500EA8E +:103070008F84001C0A000BFC24060040104000074F +:10308000000316003C02800834420100944500EA27 +:103090008F84001C0A000BFC24060041000216036A +:1030A000044100463C02800834420100944500EA95 +:1030B0008F84001C2406004230A5FFFF3C076019E6 +:1030C0000E000901000000000A000C3D0000000095 +:1030D0009222000B24040016304200FF1044000628 +:1030E0003C0680009222000B24030017304200FFB0 +:1030F000144300320000000034C5010090A2000B10 +:10310000304200FF1444000B000080218CA20020FC +:103110008CA400202403FF800043102400021140EF +:103120003084007F004410253C032000004310251C +:10313000ACC2083094A2000800021400000214037C +:10314000044200012410000194A2000830420080D3 +:103150005040001A0200A82194A20008304220002A +:10316000504000160200A8218CA300183C021C2D20 +:10317000344219ED106200110200A8213C0208003F +:103180008C4200D4104000053C0280082403000457 +:1031900034420100A04300FC3C028008344201009C +:1031A000944500EA8F84001C2406000630A5FFFF2A +:1031B0000E0009013C0760210200A8210E00093918 +:1031C000000000009222000A304200081040000473 +:1031D00002A010210E0013790000000002A01021AF +:1031E0008FBF00308FB5002C8FB400288FB3002420 +:1031F0008FB200208FB1001C8FB0001803E00008D0 +:1032000027BD00382402FF80008220243C02900069 +:1032100034420007008220253C028000AC4400209C +:103220003C0380008C6200200440FFFE0000000090 +:1032300003E00008000000003C0380002402FF803F +:10324000008220243462000700822025AC64002024 +:103250008C6200200440FFFE0000000003E0000834 +:103260000000000027BDFFD8AFB3001CAFB10014B1 +:10327000AFB00010AFBF0020AFB200183C1180000B +:103280003C0280088E32002034530100AE2400201E +:10329000966300EA000514003C074000004738250B +:1032A00000A08021000030210E0009013065FFFFE1 +:1032B000240200A1160200022402FFFFA2620009FC +:1032C000AE3200208FBF00208FB3001C8FB20018D9 +:1032D0008FB100148FB0001003E0000827BD002854 +:1032E0003C0280082403000527BDFFE834420100AA +:1032F000A04300FCAFBF00103C0280008C420100E4 +:10330000240500A1004020210E000C67AF82001CA4 +:103310003C0380008C6202780440FFFE8F82001C18 +:103320008FBF001027BD0018AC62024024020002CB +:10333000A06202443C021000AC62027803E0000884 +:103340000000000027BDFFE83C068000AFBF001072 +:1033500034C7010094E20008304400FF3883008243 +:10336000388200842C6300012C4200010062182581 +:103370001060002D24020083938200195040003B0E +:103380008FBF00103C020800904256CC8CC4010054 +:103390003C06080094C656C63045003F38A30032AC +:1033A00038A2003F2C6300012C4200010062182566 +:1033B000AF84001CAF860014A380001914600007BE +:1033C00000E020212402002014A2001200000000CE +:1033D0003402FFFF14C2000F00000000240200208E +:1033E00014A2000500E028218CE300142402FFFF52 +:1033F0005062000B8FBF00103C040800248456C0AC +:10340000000030210E000706240700010A000CD638 +:103410008FBF00100E000777000000008FBF001064 +:103420000A00093927BD001814820004240200850F +:103430008CC501040A000CE1000020211482000662 +:103440002482FF808CC50104240440008FBF00103B +:103450000A00016727BD0018304200FF2C4200021D +:1034600010400004240200228FBF00100A000B2726 +:1034700027BD0018148200048F8200248FBF001023 +:103480000A000C8627BD00188C42000C1040001E5C +:1034900000E0282190E300092402001814620003D0 +:1034A000240200160A000CFC240300081462000722 +:1034B00024020017240300123C02800834420080DA +:1034C000A04300090A000D0994A7000854620007F0 +:1034D00094A700088F82FF942404FFFE9043000508 +:1034E00000641824A043000594A7000890A6001BC0 +:1034F0008CA4000094A500068FBF001000073C00BC +:103500000A0008DC27BD00188FBF001003E0000888 +:1035100027BD00188F8500243C04800094A2002A57 +:103520008CA30034000230C02402FFF000C210243B +:1035300000621821AC83003C8CA200303C03800068 +:10354000AC8200383C02005034420010AC620030C3 +:103550000000000000000000000000008C6200007D +:10356000304200201040FFFD30C20008104000062D +:103570003C0280008C620408ACA200208C62040C27 +:103580000A000D34ACA200248C430400ACA300203C +:103590008C420404ACA200243C0300203C028000C6 +:1035A000AC4300303C0480008C8200300043102487 +:1035B0001440FFFD8F8600243C020040AC820030A6 +:1035C00094C3002A94C2002894C4002C94C5002EF1 +:1035D00024630001004410213064FFFFA4C20028CE +:1035E00014850002A4C3002AA4C0002A03E0000836 +:1035F000000000008F84002427BDFFE83C05800404 +:1036000024840010AFBF00100E000E472406000AED +:103610008F840024948200129483002E3042000F85 +:10362000244200030043180424027FFF0043102BB0 +:1036300010400002AC8300000000000D0E000D13CE +:10364000000000008F8300248FBF001027BD0018EA +:10365000946200149463001A3042000F00021500B7 +:10366000006218253C02800003E00008AC4300A083 +:103670008F8300243C028004944400069462001A64 +:103680008C650000A4640016004410233042FFFF44 +:103690000045102B03E00008384200018F8400240D +:1036A0003C0780049486001A8C85000094E2000692 +:1036B000A482001694E3000600C310233042FFFFEB +:1036C0000045102B384200011440FFF8A483001677 +:1036D00003E00008000000008F8400243C02800406 +:1036E000944200069483001A8C850000A482001680 +:1036F000006210233042FFFF0045102B38420001CA +:103700005040000D8F850024006030213C0780046C +:1037100094E20006A482001694E3000600C310237E +:103720003042FFFF0045102B384200011440FFF8E3 +:10373000A48300168F8500243C03800034620400BB +:103740008CA40020AF820020AC6400388CA200243E +:10375000AC62003C3C020005AC62003003E00008B3 +:10376000ACA000048F8400243C0300068C8200047B +:1037700000021140004310253C038000AC62003081 +:103780000000000000000000000000008C6200004B +:10379000304200101040FFFD34620400AC80000491 +:1037A00003E00008AF8200208F86002427BDFFE0E1 +:1037B000AFB10014AFB00010AFBF00188CC300044D +:1037C0008CC500248F820020309000FF94C4001A22 +:1037D00024630001244200202484000124A7002047 +:1037E000ACC30004AF820020A4C4001AACC70024FC +:1037F00004A100060000882104E2000594C2001A1A +:103800008CC2002024420001ACC2002094C2001AE5 +:1038100094C300282E040001004310262C4200010E +:10382000004410245040000594C2001A24020001F4 +:10383000ACC2000894C2001A94C300280010202BC8 +:10384000004310262C4200010044102514400007BC +:10385000000000008CC20008144000042402001084 +:103860008CC300041462000F8F8500240E000DA786 +:10387000241100018F820024944300289442001AEE +:1038800014430003000000000E000D1300000000B0 +:10389000160000048F8500240E000D840000000037 +:1038A0008F85002494A2001E94A4001C24420001D1 +:1038B0003043FFFF14640002A4A2001EA4A0001E57 +:1038C0001200000A3C02800494A2001494A3001A7F +:1038D0003042000F00021500006218253C028000F3 +:1038E000AC4300A00A000E1EACA0000894420006E3 +:1038F00094A3001A8CA40000A4A200160062102356 +:103900003042FFFF0044102B384200011040000DF0 +:1039100002201021006030213C07800494E2000660 +:10392000A4A2001694E3000600C310233042FFFF58 +:103930000044102B384200011440FFF8A4A30016E5 +:10394000022010218FBF00188FB100148FB000101B +:1039500003E0000827BD002003E00008000000008D +:103960008F82002C3C03000600021140004310250A +:103970003C038000AC62003000000000000000004A +:10398000000000008C620000304200101040FFFD7B +:1039900034620400AF82002803E00008AF80002CEE +:1039A00003E000080000102103E000080000000010 +:1039B0003084FFFF30A5FFFF0000182110800007B2 +:1039C000000000003082000110400002000420428C +:1039D000006518210A000E3D0005284003E000089C +:1039E0000060102110C0000624C6FFFF8CA200005A +:1039F00024A50004AC8200000A000E4724840004C1 +:103A000003E000080000000010A0000824A3FFFF4E +:103A1000AC86000000000000000000002402FFFF50 +:103A20002463FFFF1462FFFA2484000403E000080B +:103A3000000000003C0280083442008024030001A2 +:103A4000AC43000CA4430010A4430012A443001490 +:103A500003E00008A44300168F82002427BDFFD88E +:103A6000AFB3001CAFB20018AFB10014AFB000107C +:103A7000AFBF00208C47000C248200802409FF8007 +:103A80003C08800E3043007F008080213C0A80008B +:103A9000004920240068182130B100FF30D200FF17 +:103AA00010E000290000982126020100AD44002CFE +:103AB000004928243042007F004820219062000005 +:103AC00024030050304200FF1443000400000000B3 +:103AD000AD45002C948200EA3053FFFF0E000D84A8 +:103AE000000000008F8200248F83002000112C0032 +:103AF0009442001E001224003484000100A22825F4 +:103B00003C02400000A22825AC7000008FBF0020BE +:103B1000AC6000048FB20018AC7300088FB10014C1 +:103B2000AC60000C8FB3001CAC6400108FB00010B0 +:103B3000AC60001424040001AC60001827BD00280C +:103B40000A000DB8AC65001C8FBF00208FB3001CAD +:103B50008FB200188FB100148FB0001003E000087E +:103B600027BD00283C06800034C201009043000FAE +:103B7000240200101062000E2865001110A000073A +:103B800024020012240200082405003A10620006F4 +:103B90000000302103E0000800000000240500358B +:103BA0001462FFFC000030210A000E6400000000D7 +:103BB0008CC200748F83FF9424420FA003E000089E +:103BC000AC62000C27BDFFE8AFBF00100E0003423F +:103BD000240500013C0480088FBF0010240200016E +:103BE00034830080A462001227BD00182402000163 +:103BF00003E00008A080001A27BDFFE0AFB2001864 +:103C0000AFB10014AFB00010AFBF001C30B2FFFF67 +:103C10000E000332008088213C028008345000806E +:103C20009202000924030004304200FF1443000CF8 +:103C30003C028008124000082402000A0E000E5BBD +:103C400000000000920200052403FFFE0043102440 +:103C5000A202000524020012A20200093C02800810 +:103C600034420080022020210E00033DA0400027A6 +:103C700016400003022020210E000EBF00000000AD +:103C800002202021324600FF8FBF001C8FB2001897 +:103C90008FB100148FB00010240500380A000E64A4 +:103CA00027BD002027BDFFE0AFBF001CAFB200184A +:103CB000AFB10014AFB000100E00033200808021BD +:103CC0000E000E5B000000003C02800834450080BE +:103CD00090A2000924120018305100FF1232000394 +:103CE0000200202124020012A0A2000990A20005D7 +:103CF0002403FFFE004310240E00033DA0A2000594 +:103D00000200202124050020163200070000302187 +:103D10008FBF001C8FB200188FB100148FB000103D +:103D20000A00034227BD00208FBF001C8FB200187D +:103D30008FB100148FB00010240500390A000E6402 +:103D400027BD002027BDFFE83C028000AFB0001077 +:103D5000AFBF0014344201009442000C2405003629 +:103D60000080802114400012304600FF0E00033214 +:103D7000000000003C02800834420080240300124E +:103D8000A043000990430005346300100E000E5B51 +:103D9000A04300050E00033D020020210200202167 +:103DA0000E000342240500200A000F3C0000000022 +:103DB0000E000E64000000000E00033202002021FD +:103DC0003C0280089043001B2405FF9F0200202135 +:103DD000006518248FBF00148FB00010A043001B93 +:103DE0000A00033D27BD001827BDFFE0AFBF001844 +:103DF000AFB10014AFB0001030B100FF0E000332BD +:103E0000008080213C02800824030012344200809C +:103E10000E000E5BA04300090E00033D02002021AE +:103E200002002021022030218FBF00188FB1001422 +:103E30008FB00010240500350A000E6427BD002055 +:103E40003C0480089083000E9082000A1443000B0B +:103E5000000028218F82FF942403005024050001D4 +:103E600090420000304200FF1443000400000000B4 +:103E70009082000E24420001A082000E03E00008A0 +:103E800000A010213C0380008C6201F80440FFFE7A +:103E900024020002AC6401C0A06201C43C02100014 +:103EA00003E00008AC6201F827BDFFE0AFB20018E4 +:103EB0003C128008AFB10014AFBF001CAFB00010BF +:103EC00036510080922200092403000A304200FF8C +:103ED0001443003E000000008E4300048E22003890 +:103EE000506200808FBF001C92220000240300500B +:103EF000304200FF144300253C0280008C42014008 +:103F00008E4300043642010002202821AC43001CED +:103F10009622005C8E2300383042FFFF00021040E2 +:103F200000621821AE23001C8E4300048E2400384A +:103F30009622005C006418233042FFFF0003184300 +:103F4000000210400043102A10400006000000004C +:103F50008E4200048E230038004310230A000FAA6B +:103F6000000220439622005C3042FFFF0002204006 +:103F70003C0280083443010034420080ACA4002C91 +:103F8000A040002424020001A062000C0E000F5E7D +:103F900000000000104000538FBF001C3C02800056 +:103FA0008C4401403C0380008C6201F80440FFFE19 +:103FB00024020002AC6401C0A06201C43C021000F3 +:103FC000AC6201F80A0010078FBF001C92220009A2 +:103FD00024030010304200FF144300043C02800020 +:103FE0008C4401400A000FEE0000282192220009B3 +:103FF00024030016304200FF14430006240200147C +:10400000A22200093C0280008C4401400A001001F9 +:104010008FBF001C8E2200388E23003C00431023EB +:10402000044100308FBF001C92220027244200016F +:10403000A2220027922200272C42000414400016DE +:104040003C1080009222000924030004304200FF4B +:10405000144300093C0280008C4401408FBF001CC7 +:104060008FB200188FB100148FB000102405009398 +:104070000A000ECC27BD00208C440140240500938B +:104080008FBF001C8FB200188FB100148FB00010CA +:104090000A000F4827BD00208E0401400E000332A5 +:1040A000000000008E4200042442FFFFAE420004E4 +:1040B0008E22003C2442FFFFAE22003C0E00033D56 +:1040C0008E0401408E0401408FBF001C8FB2001887 +:1040D0008FB100148FB00010240500040A000342C1 +:1040E00027BD00208FB200188FB100148FB00010D0 +:1040F00003E0000827BD00203C0680008CC2018838 +:104100003C038008346500809063000E00021402B6 +:10411000304400FF306300FF1464000E3C0280084E +:1041200090A20026304200FF104400098F82FF94C5 +:10413000A0A400262403005090420000304200FF5B +:1041400014430006000000000A0005A18CC4018091 +:104150003C02800834420080A044002603E00008AE +:104160000000000027BDFFE030E700FFAFB20018FD +:10417000AFBF001CAFB10014AFB0001000809021A1 +:1041800014E0000630C600FF000000000000000D33 +:10419000000000000A001060240001163C038008A3 +:1041A0009062000E304200FF14460023346200800B +:1041B00090420026304200FF1446001F000000001D +:1041C0009062000F304200FF1446001B0000000008 +:1041D0009062000A304200FF144600038F90FF9463 +:1041E0000000000D8F90FF948F82FF983C1180009B +:1041F000AE05003CAC450000A066000A0E0003328C +:104200008E240100A20000240E00033D8E24010034 +:104210003C0380008C6201F80440FFFE240200028F +:10422000AC7201C0A06201C43C021000AC6201F893 +:104230000A0010618FBF001C000000000000000D8C +:10424000000000002400013F8FBF001C8FB2001847 +:104250008FB100148FB0001003E0000827BD0020CC +:104260008F83FF943C0280008C44010034420100A3 +:104270008C65003C9046001B0A00102724070001B3 +:104280003C0280089043000E9042000A0043102632 +:10429000304200FF03E000080002102B27BDFFE0C2 +:1042A0003C028008AFB10014AFB00010AFBF0018DF +:1042B0003450008092020005240300303042003068 +:1042C00014430085008088218F8200248C42000CDA +:1042D000104000828FBF00180E000D840000000007 +:1042E0008F860020ACD100009202000892030009E2 +:1042F000304200FF00021200306300FF004310252F +:10430000ACC200049202004D000216000002160327 +:1043100004410005000000003C0308008C630048D5 +:104320000A00109F3C1080089202000830420040B2 +:10433000144000030000182192020027304300FFC0 +:104340003C108008361100809222004D00031E00B0 +:10435000304200FF0002140000621825ACC30008C0 +:104360008E2400308F820024ACC4000C8E250034D3 +:104370009443001E3C02C00BACC50010006218251F +:104380008E22003800002021ACC200148E22003C96 +:10439000ACC200180E000DB8ACC3001C8E020004A5 +:1043A0008F8400203C058000AC8200008E2200201B +:1043B000AC8200048E22001CAC8200088E220058C1 +:1043C0008CA3007400431021AC82000C8E22002CC0 +:1043D000AC8200108E2200408E23004400021400A4 +:1043E00000431025AC8200149222004D240300806B +:1043F000304200FF1443000400000000AC800018AD +:104400000A0010E38F8200248E23000C2402000196 +:104410001062000E2402FFFF92220008304200408A +:104420001440000A2402FFFF8E23000C8CA20074AB +:10443000006218233C0208000062102414400002AD +:10444000000028210060282100051043AC820018DC +:104450008F820024000020219443001E3C02C00CE7 +:10446000006218258F8200200E000DB8AC43001C9E +:104470003C038008346201008C4200008F850020DC +:10448000346300808FBF0018ACA20000ACA0000411 +:104490008C6400488F8200248FB10014ACA4000803 +:1044A000ACA0000CACA00010906300059446001E68 +:1044B0003C02400D00031E0000C23025ACA30014D6 +:1044C0008FB00010ACA0001824040001ACA6001CA2 +:1044D0000A000DB827BD00208FBF00188FB100144F +:1044E0008FB0001003E0000827BD00203C028000D0 +:1044F0009443007C3C02800834460100308400FF75 +:104500003065FFFF2402000524A34650A0C4000C20 +:104510005482000C3065FFFF90C2000D2C42000752 +:104520001040000724A30A0090C3000D24020014C9 +:104530000062100400A210210A00111F3045FFFF85 +:104540003065FFFF3C0280083442008003E0000831 +:10455000A44500143C03800834680080AD05003891 +:10456000346701008CE2001C308400FF00A210239D +:104570001840000330C600FF24A2FFFCACE2001C80 +:1045800030820001504000083C0380088D02003C4E +:1045900000A2102304410012240400058C620004D0 +:1045A00010A2000F3C0380088C62000414A2001EBD +:1045B000000000003C0208008C4200D8304200207D +:1045C000104000093C0280083462008090630008BB +:1045D0009042004C144300043C0280082404000470 +:1045E0000A00110900000000344300803442010039 +:1045F000A040000C24020001A462001410C0000AB4 +:104600003C0280008C4401003C0380008C6201F875 +:104610000440FFFE24020002AC6401C0A06201C499 +:104620003C021000AC6201F803E00008000000004A +:1046300027BDFFE800A61823AFBF00101860008058 +:10464000308800FF3C02800834470080A0E000244E +:1046500034440100A0E000278C82001C00A210233B +:1046600004400056000000008CE2003C94E3005C33 +:104670008CE4002C004530233063FFFF00C3182179 +:104680000083202B1080000400E018218CE2002C15 +:104690000A00117800A2102194E2005C3042FFFF72 +:1046A00000C2102100A21021AC62001C3C02800854 +:1046B000344400809482005C8C83001C3042FFFFF5 +:1046C0000002104000A210210043102B10400004F3 +:1046D000000000008C82001C0A00118B3C06800840 +:1046E0009482005C3042FFFF0002104000A21021C3 +:1046F0003C06800834C3010034C70080AC82001C33 +:10470000A060000CACE500388C62001C00A21023F5 +:104710001840000224A2FFFCAC62001C3102000120 +:10472000104000083C0380088CE2003C00A21023EB +:1047300004410012240400058CC2000410A20010E1 +:104740008FBF00108C62000414A2004F8FBF0010B6 +:104750003C0208008C4200D8304200201040000A81 +:104760003C02800834620080906300089042004C54 +:10477000144300053C028008240400048FBF00108D +:104780000A00110927BD001834430080344201009B +:10479000A040000C24020001A46200143C0280002E +:1047A0008C4401003C0380008C6201F80440FFFE51 +:1047B000240200020A0011D8000000008CE2001C54 +:1047C000004610230043102B54400001ACE5001CB0 +:1047D00094E2005C3042FFFF0062102B144000079F +:1047E0002402000294E2005C8CE3001C3042FFFFD4 +:1047F00000621821ACE3001C24020002ACE5003882 +:104800000E000F5EA082000C1040001F8FBF001032 +:104810003C0280008C4401003C0380008C6201F863 +:104820000440FFFE24020002AC6401C0A06201C487 +:104830003C021000AC6201F80A0011F08FBF0010BA +:1048400031020010104000108FBF00103C028008A1 +:10485000344500808CA3001C94A2005C00661823E1 +:104860003042FFFF006218213C023FFF3444FFFF4B +:104870000083102B544000010080182100C3102138 +:10488000ACA2001C8FBF001003E0000827BD001879 +:1048900027BDFFE800C0402100A63023AFBF0010B5 +:1048A00018C00026308A00FF3C028008344900808E +:1048B0008D24001C8D23002C008820230064182BDD +:1048C0001060000F344701008CE2002000461021E8 +:1048D000ACE200208CE200200044102B1440000BBE +:1048E0003C023FFF8CE2002000441023ACE2002099 +:1048F0009522005C3042FFFF0A0012100082202146 +:10490000ACE00020008620213C023FFF3443FFFF43 +:104910000064102B54400001006020213C028008FC +:104920003442008000851821AC43001CA0400024C4 +:10493000A04000270A0012623C03800831420010A8 +:10494000104000433C0380083C06800834C40080CB +:104950008C82003C004810235840003E34660080A2 +:104960009082002424420001A0820024908200242E +:104970003C0308008C630024304200FF0043102BEE +:10498000144000688FBF001034C201008C42001C2C +:1049900000A2102318400063000000008CC3000434 +:1049A0009482005C006818233042FFFF0003184324 +:1049B000000210400043102A1040000500000000D3 +:1049C0008CC20004004810230A0012450002104364 +:1049D0009482005C3042FFFF000210403C068008D9 +:1049E000AC82002C34C5008094A2005C8CA4002C06 +:1049F00094A3005C3042FFFF00021040008220219F +:104A00003063FFFF0083202101041021ACA2001CB1 +:104A10008CC2000434C60100ACC2001C2402000297 +:104A20000E000F5EA0C2000C1040003E8FBF0010B1 +:104A30003C0280008C4401003C0380008C6201F841 +:104A40000440FFFE240200020A001292000000004F +:104A500034660080ACC50038346401008C82001CD0 +:104A600000A210231840000224A2FFFCAC82001C0C +:104A7000314200015040000A3C0380088CC2003CD7 +:104A800000A2102304430014240400058C620004D7 +:104A900014A200033C0380080A00128424040005C9 +:104AA0008C62000414A2001F8FBF00103C0208009B +:104AB0008C4200D8304200201040000A3C0280089E +:104AC00034620080906300089042004C144300055B +:104AD0003C028008240400048FBF00100A00110962 +:104AE00027BD00183443008034420100A040000C70 +:104AF00024020001A46200143C0280008C440100E6 +:104B00003C0380008C6201F80440FFFE2402000296 +:104B1000AC6401C0A06201C43C021000AC6201F8A8 +:104B20008FBF001003E0000827BD001827BDFFE875 +:104B30003C0A8008AFBF0010354900808D22003C40 +:104B400000C04021308400FF004610231840009D23 +:104B500030E700FF354701002402000100A63023A2 +:104B6000A0E0000CA0E0000DA522001418C0002455 +:104B7000308200108D23001C8D22002C0068182329 +:104B80000043102B1040000F000000008CE20020BA +:104B900000461021ACE200208CE200200043102BE4 +:104BA0001440000B3C023FFF8CE200200043102326 +:104BB000ACE200209522005C3042FFFF0A0012C1E7 +:104BC00000621821ACE00020006618213C023FFF83 +:104BD0003446FFFF00C3102B5440000100C01821D1 +:104BE0003C0280083442008000651821AC43001C60 +:104BF000A0400024A04000270A00130F3C038008B7 +:104C0000104000403C0380088D22003C00481023E7 +:104C10005840003D34670080912200242442000166 +:104C2000A1220024912200243C0308008C6300246C +:104C3000304200FF0043102B1440009A8FBF001039 +:104C40008CE2001C00A21023184000960000000017 +:104C50008D4300049522005C006818233042FFFF5A +:104C600000031843000210400043102A10400005C2 +:104C7000012020218D420004004810230A0012F276 +:104C8000000210439522005C3042FFFF00021040FA +:104C90003C068008AC82002C34C5008094A2005CE5 +:104CA0008CA4002C94A3005C3042FFFF0002104053 +:104CB000008220213063FFFF0083182101031021AF +:104CC000ACA2001C8CC2000434C60100ACC2001CA3 +:104CD000240200020E000F5EA0C2000C1040007102 +:104CE0008FBF00103C0280008C4401003C03800018 +:104CF0008C6201F80440FFFE240200020A0013390E +:104D00000000000034670080ACE500383466010024 +:104D10008CC2001C00A210231840000224A2FFFC39 +:104D2000ACC2001C30820001504000083C038008E7 +:104D30008CE2003C00A2102304430051240400052F +:104D40008C62000410A2003E3C0380088C620004C8 +:104D500054A200548FBF00103C0208008C4200D8BF +:104D600030420020104000063C028008346200807F +:104D7000906300089042004C104300403C028008C1 +:104D80003443008034420100A040000C24020001A2 +:104D9000A46200143C0280008C4401003C038000AB +:104DA0008C6201F80440FFFE24020002AC6401C0E2 +:104DB000A06201C43C021000AC6201F80A00137743 +:104DC0008FBF001024020005A120002714E2000A72 +:104DD0003C038008354301009062000D2C42000620 +:104DE000504000053C0380089062000D2442000101 +:104DF000A062000D3C03800834670080ACE50038F9 +:104E0000346601008CC2001C00A21023184000026E +:104E100024A2FFFCACC2001C308200015040000AFA +:104E20003C0380088CE2003C00A2102304410014E3 +:104E3000240400058C62000414A200033C038008D3 +:104E40000A00136E240400058C62000414A20015ED +:104E50008FBF00103C0208008C4200D83042002076 +:104E60001040000A3C028008346200809063000811 +:104E70009042004C144300053C02800824040004C6 +:104E80008FBF00100A00110927BD001834430080AD +:104E900034420100A040000C24020001A46200146E +:104EA0008FBF001003E0000827BD00183C0B8008EE +:104EB00027BDFFE83C028000AFBF00103442010074 +:104EC000356A00809044000A356901008C45001461 +:104ED0008D4800389123000C308400FF0105102319 +:104EE0001C4000B3306700FF2CE20006504000B1C8 +:104EF0008FBF00102402000100E2300430C2000322 +:104F00005440000800A8302330C2000C144000A117 +:104F100030C20030144000A38FBF00100A00143BC1 +:104F20000000000018C00024308200108D43001CD7 +:104F30008D42002C006818230043102B1040000FF6 +:104F4000000000008D22002000461021AD2200202C +:104F50008D2200200043102B1440000B3C023FFF29 +:104F60008D22002000431023AD2200209542005CDA +:104F70003042FFFF0A0013AF00621821AD2000206D +:104F8000006618213C023FFF3446FFFF00C3102B90 +:104F90005440000100C018213C02800834420080C7 +:104FA00000651821AC43001CA0400024A04000274D +:104FB0000A0013FD3C038008104000403C038008B9 +:104FC0008D42003C004810231840003D34670080AB +:104FD0009142002424420001A14200249142002475 +:104FE0003C0308008C630024304200FF0043102B78 +:104FF000144000708FBF00108D22001C00A21023EF +:105000001840006C000000008D6300049542005CB5 +:10501000006818233042FFFF0003184300021040CD +:105020000043102A10400005014020218D62000439 +:10503000004810230A0013E0000210439542005C70 +:105040003042FFFF000210403C068008AC82002C7A +:1050500034C5008094A2005C8CA4002C94A3005C56 +:105060003042FFFF00021040008220213063FFFF2A +:105070000083182101031021ACA2001C8CC2000483 +:1050800034C60100ACC2001C240200020E000F5EF8 +:10509000A0C2000C104000478FBF00103C028000EF +:1050A0008C4401003C0380008C6201F80440FFFE48 +:1050B000240200020A00142D000000003467008062 +:1050C000ACE50038346601008CC2001C00A210233D +:1050D0001840000224A2FFFCACC2001C3082000178 +:1050E0005040000A3C0380088CE2003C00A21023E0 +:1050F00004430014240400058C62000414A200037D +:105100003C0380080A00141F240400058C6200047C +:1051100014A200288FBF00103C0208008C4200D867 +:10512000304200201040000A3C02800834620080B7 +:10513000906300089042004C144300053C02800834 +:10514000240400048FBF00100A00110927BD0018B5 +:105150003443008034420100A040000C24020001CE +:10516000A46200143C0280008C4401003C038000D7 +:105170008C6201F80440FFFE24020002AC6401C00E +:10518000A06201C43C021000AC6201F80A00143BAA +:105190008FBF00108FBF0010010030210A00115A8C +:1051A00027BD0018010030210A00129927BD001800 +:1051B0008FBF001003E0000827BD00183C038008E3 +:1051C0003464010024020003A082000C8C620004FD +:1051D00003E00008AC82001C3C05800834A300807A +:1051E0009062002734A501002406004324420001F8 +:1051F000A0620027906300273C0208008C42004810 +:10520000306300FF146200043C07602194A500EAAB +:105210000A00090130A5FFFF03E0000800000000BC +:1052200027BDFFE8AFBF00103C0280000E00144411 +:105230008C4401803C02800834430100A060000CD3 +:105240008C4200048FBF001027BD001803E0000847 +:10525000AC62001C27BDFFE03C028008AFBF001815 +:10526000AFB10014AFB000103445008034460100E7 +:105270003C0880008D09014090C3000C8CA4003CC8 +:105280008CA200381482003B306700FF9502007C3E +:1052900090A30027146000093045FFFF2402000599 +:1052A00054E200083C04800890C2000D2442000132 +:1052B000A0C2000D0A00147F3C048008A0C0000DAD +:1052C0003C048008348201009042000C2403000555 +:1052D000304200FF1443000A24A205DC348300801E +:1052E000906200272C4200075040000524A20A00CB +:1052F00090630027240200140062100400A2102111 +:105300003C108008361000803045FFFF012020212E +:105310000E001444A60500149602005C8E030038AB +:105320003C1180003042FFFF000210400062182153 +:10533000AE03001C0E0003328E24014092020025B1 +:1053400034420040A20200250E00033D8E2401409D +:105350008E2401403C0380008C6201F80440FFFE73 +:1053600024020002AC6401C0A06201C43C0210002F +:10537000AC6201F88FBF00188FB100148FB000101D +:1053800003E0000827BD00203C0360103C02080039 +:1053900024420174AC62502C8C6250003C048000AA +:1053A00034420080AC6250003C0208002442547C2D +:1053B0003C010800AC2256003C020800244254384C +:1053C0003C010800AC2256043C020002AC840008F8 +:1053D000AC82000C03E000082402000100A0302190 +:1053E0003C1C0800279C56083C0200023C050400B7 +:1053F00000852826008220260004102B2CA5000101 +:105400002C840001000210803C0308002463560035 +:105410000085202500431821108000030000102182 +:10542000AC6600002402000103E000080000000058 +:105430003C1C0800279C56083C0200023C05040066 +:1054400000852826008220260004102B2CA50001B0 +:105450002C840001000210803C03080024635600E5 +:105460000085202500431821108000050000102130 +:105470003C02080024425438AC62000024020001BF +:1054800003E00008000000003C0200023C030400AE +:1054900000821026008318262C4200012C63000194 +:1054A000004310251040000B000028213C1C080080 +:1054B000279C56083C0380008C62000824050001EC +:1054C00000431025AC6200088C62000C00441025DB +:1054D000AC62000C03E0000800A010213C1C080096 +:1054E000279C56083C0580008CA3000C0004202754 +:1054F000240200010064182403E00008ACA3000C9F +:105500003C020002148200063C0560008CA208D018 +:105510002403FFFE0043102403E00008ACA208D0DF +:105520003C02040014820005000000008CA208D098 +:105530002403FFFD00431024ACA208D003E00008C0 +:10554000000000003C02601A344200108C430080CE +:1055500027BDFFF88C440084AFA3000093A3000094 +:10556000240200041462001AAFA4000493A20001F4 +:105570001040000797A300023062FFFC3C0380004C +:10558000004310218C4200000A001536AFA200042F +:105590003062FFFC3C03800000431021AC4400005B +:1055A000A3A000003C0560008CA208D02403FFFEED +:1055B0003C04601A00431024ACA208D08FA300045E +:1055C0008FA2000034840010AC830084AC82008081 +:1055D00003E0000827BD000827BDFFE8AFBF0010AB +:1055E0003C1C0800279C56083C0280008C43000CA1 +:1055F0008C420004004318243C0200021060001496 +:10560000006228243C0204003C04000210A00005B3 +:10561000006210243C0208008C4256000A00155B10 +:1056200000000000104000073C0404003C02080099 +:105630008C4256040040F809000000000A00156082 +:10564000000000000000000D3C1C0800279C5608CC +:105650008FBF001003E0000827BD0018800802403B +:1056600080080100800800808008000000000C8095 +:105670000000320008000E9808000EF408000F88A1 +:1056800008001028080010748008010080080080BD +:10569000800800000A000028000000000000000050 +:1056A0000000000D6370362E322E316200000000C3 +:1056B00006020104000000000000000000000000DD +:1056C000000000000000000038003C000000000066 +:1056D00000000000000000000000000000000020AA +:1056E00000000000000000000000000000000000BA +:1056F00000000000000000000000000000000000AA +:10570000000000000000000021003800000000013F +:105710000000002B000000000000000400030D400A +:105720000000000000000000000000000000000079 +:105730000000000000000000100000030000000056 +:105740000000000D0000000D3C020800244259AC8E +:105750003C03080024635BF4AC4000000043202BB2 +:105760001480FFFD244200043C1D080037BD9FFC4F +:1057700003A0F0213C100800261000A03C1C0800EB +:10578000279C59AC0E0002F6000000000000000D3E +:1057900027BDFFB4AFA10000AFA20004AFA3000873 +:1057A000AFA4000CAFA50010AFA60014AFA700185F +:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF +:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F +:1057D000AFB8003CAFB90040AFBC0044AFBF004819 +:1057E0000E000820000000008FBF00488FBC00445E +:1057F0008FB900408FB8003C8FAF00388FAE0034B7 +:105800008FAD00308FAC002C8FAB00288FAA002406 +:105810008FA900208FA8001C8FA700188FA6001446 +:105820008FA500108FA4000C8FA300088FA2000486 +:105830008FA1000027BD004C3C1B60188F7A5030B0 +:10584000377B502803400008AF7A000000A01821E1 +:1058500000801021008028213C0460003C0760008B +:105860002406000810600006348420788C42000072 +:10587000ACE220088C63000003E00008ACE3200CDD +:105880000A000F8100000000240300403C02600079 +:1058900003E00008AC4320003C0760008F86000452 +:1058A0008CE520740086102100A2182B14600007DC +:1058B000000028218F8AFDA024050001A1440013C7 +:1058C0008F89000401244021AF88000403E0000810 +:1058D00000A010218F84FDA08F8500049086001306 +:1058E00030C300FF00A31023AF82000403E00008D0 +:1058F000A08000138F84FDA027BDFFE8AFB000108B +:10590000AFBF001490890011908700112402002875 +:10591000312800FF3906002830E300FF2485002CE1 +:105920002CD00001106200162484001C0E00006EB2 +:10593000000000008F8FFDA03C05600024020204DF +:1059400095EE003E95ED003C000E5C0031ACFFFF93 +:10595000016C5025ACAA2010520000012402000462 +:10596000ACA22000000000000000000000000000C9 +:105970008FBF00148FB0001003E0000827BD00188F +:105980000A0000A6000028218F85FDA027BDFFD8B2 +:10599000AFBF0020AFB3001CAFB20018AFB100140E +:1059A000AFB000100080982190A4001124B0001C1A +:1059B00024B1002C308300FF386200280E000090D4 +:1059C0002C5200010E00009800000000020020216F +:1059D0001240000202202821000028210E00006E43 +:1059E000000000008F8DFDA03C0880003C05600099 +:1059F00095AC003E95AB003C02683025000C4C0095 +:105A0000316AFFFF012A3825ACA7201024020202C8 +:105A1000ACA6201452400001240200028FBF0020D7 +:105A20008FB3001C8FB200188FB100148FB000101C +:105A300027BD002803E00008ACA2200027BDFFE03E +:105A4000AFB20018AFB10014AFB00010AFBF001C70 +:105A50003C1160008E2320748F82000430D0FFFF41 +:105A600030F2FFFF1062000C2406008F0E00006E63 +:105A7000000000003C06801F0010440034C5FF00F9 +:105A80000112382524040002AE2720100000302126 +:105A9000AE252014AE2420008FBF001C8FB200184A +:105AA0008FB100148FB0001000C0102103E0000877 +:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2 +:105AC000AFBF0018AFB100140E00006E30F1FFFF41 +:105AD00000102400009180253C036000AC70201071 +:105AE0008FBF00188FB100148FB000102402000483 +:105AF000AC62200027BD002003E000080000102158 +:105B000027BDFFE03C046018AFBF0018AFB1001420 +:105B1000AFB000108C8850002403FF7F34028071E6 +:105B20000103382434E5380C241F00313C1980006F +:105B3000AC8550003C11800AAC8253BCAF3F0008DA +:105B40000E00054CAF9100400E00050A3C116000AC +:105B50000E00007D000000008E3008083C0F570941 +:105B60002418FFF00218602435EEE00035EDF00057 +:105B7000018E5026018D58262D4600012D69000109 +:105B8000AF86004C0E000D09AF8900503C06601630 +:105B90008CC700003C0860148D0500A03C03FFFF8B +:105BA00000E320243C02535300052FC2108200550D +:105BB00034D07C00960201F2A780006C10400003F4 +:105BC000A780007C384B1E1EA78B006C960201F844 +:105BD000104000048F8D0050384C1E1EA78C007C96 +:105BE0008F8D005011A000058F83004C240E0020E3 +:105BF000A78E007CA78E006C8F83004C1060000580 +:105C00009785007C240F0020A78F007CA78F006C55 +:105C10009785007C2CB8008153000001240500808A +:105C20009784006C2C91040152200001240404008C +:105C30001060000B3C0260008FBF00188FB1001491 +:105C40008FB0001027BD0020A784006CA785007CC2 +:105C5000A380007EA780007403E00008A780009264 +:105C60008C4704382419103C30FFFFFF13F9000360 +:105C700030A8FFFF1100004624030050A380007EDF +:105C80009386007E50C00024A785007CA780007CFE +:105C90009798007CA780006CA7800074A780009272 +:105CA0003C010800AC3800800E00078700000000AF +:105CB0003C0F60008DED0808240EFFF03C0B600ED9 +:105CC000260C0388356A00100000482100002821B6 +:105CD00001AE20243C105709AF8C0010AF8A004859 +:105CE000AF89001810900023AF8500148FBF0018F3 +:105CF0008FB100148FB0001027BD002003E0000812 +:105D0000AF80005400055080014648218D260004D4 +:105D10000A00014800D180219798007CA784006C7C +:105D2000A7800074A78000923C010800AC38008076 +:105D30000E000787000000003C0F60008DED080892 +:105D4000240EFFF03C0B600E260C0388356A001011 +:105D5000000048210000282101AE20243C105709F2 +:105D6000AF8C0010AF8A0048AF8900181490FFDF95 +:105D7000AF85001424110001AF9100548FBF0018AB +:105D80008FB100148FB0001003E0000827BD002081 +:105D90000A00017BA383007E3083FFFF8F880040D1 +:105DA0008F87003C000321403C0580003C020050EE +:105DB000008248253C0660003C0A010034AC040027 +:105DC0008CCD08E001AA58241160000500000000F5 +:105DD0008CCF08E024E7000101EA7025ACCE08E092 +:105DE0008D19001001805821ACB900388D180014AD +:105DF000ACB8003CACA9003000000000000000007E +:105E00000000000000000000000000000000000092 +:105E100000000000000000003C0380008C640000D3 +:105E2000308200201040FFFD3C0F60008DED08E047 +:105E30003C0E010001AE18241460FFE100000000D8 +:105E4000AF87003C03E00008AF8B00588F8500400F +:105E5000240BFFF03C06800094A7001A8CA90024B4 +:105E600030ECFFFF000C38C000EB5024012A402129 +:105E7000ACC8003C8CA400248CC3003C00831023DD +:105E800018400033000000008CAD002025A2000166 +:105E90003C0F0050ACC2003835EE00103C068000CC +:105EA000ACCE003000000000000000000000000048 +:105EB00000000000000000000000000000000000E2 +:105EC000000000003C0480008C9900003338002062 +:105ED0001300FFFD30E20008104000173C0980006D +:105EE0008C880408ACA800108C83040CACA30014AC +:105EF0003C1900203C188000AF19003094AE001807 +:105F000094AF001C01CF3021A4A6001894AD001A54 +:105F100025A70001A4A7001A94AB001A94AC001E98 +:105F2000118B00030000000003E0000800000000E7 +:105F300003E00008A4A0001A8D2A0400ACAA0010F7 +:105F40008D240404ACA400140A0002183C1900209B +:105F50008CA200200A0002003C0F00500A0001EE53 +:105F60000000000027BDFFE8AFBF00100E000232A6 +:105F7000000000008F8900408FBF00103C038000AC +:105F8000A520000A9528000A9527000427BD0018BF +:105F90003105FFFF30E6000F0006150000A22025A6 +:105FA00003E00008AC6400803C0508008CA50020DC +:105FB0008F83000C27BDFFE8AFB00010AFBF001407 +:105FC00010A300100000802124040001020430040A +:105FD00000A6202400C3102450440006261000010F +:105FE000001018802787FDA41480000A006718217C +:105FF000261000012E0900025520FFF38F83000CAC +:10600000AF85000C8FBF00148FB0001003E00008B4 +:1060100027BD00188C6800003C058000ACA8002457 +:106020000E000234261000013C0508008CA500205B +:106030000A0002592E0900022405000100851804F7 +:106040003C0408008C84002027BDFFC8AFBF00348B +:1060500000831024AFBE0030AFB7002CAFB60028CD +:10606000AFB50024AFB40020AFB3001CAFB200182E +:10607000AFB1001410400051AFB000108F84004049 +:10608000948700069488000A00E8302330D5FFFF8B +:1060900012A0004B8FBF0034948B0018948C000A20 +:1060A000016C50233142FFFF02A2482B1520000251 +:1060B00002A02021004020212C8F000515E00002C5 +:1060C00000809821241300040E0001C102602021E9 +:1060D0008F87004002609021AF80004494F4000A52 +:1060E000026080211260004E3291FFFF3C1670006A +:1060F0003C1440003C1E20003C1760008F99005863 +:106100008F380000031618241074004F0283F82BF8 +:1061100017E0003600000000107E00478F86004424 +:1061200014C0003A2403000102031023022320219B +:106130003050FFFF1600FFF13091FFFF8F870040C6 +:106140003C1100203C108000AE11003094EB000A9E +:106150003C178000024B5021A4EA000A94E9000A8F +:1061600094E800043123FFFF3106000F00062D00E4 +:106170000065F025AEFE008094F3000A94F6001846 +:1061800012D30036001221408CFF00148CF4001052 +:1061900003E468210000C02101A4782B029870213B +:1061A00001CF6021ACED0014ACEC001002B238233A +:1061B00030F5FFFF16A0FFB88F8400408FBF00347A +:1061C0008FBE00308FB7002C8FB600288FB500240B +:1061D0008FB400208FB3001C8FB200188FB1001451 +:1061E0008FB0001003E0000827BD00381477FFCC03 +:1061F0008F8600440E000EE202002021004018218C +:106200008F86004410C0FFC9020310230270702360 +:106210008F87004001C368210A0002E431B2FFFF0A +:106220008F86004414C0FFC93C1100203C10800040 +:106230000A0002AEAE1100300E00046602002021FA +:106240000A0002DB00401821020020210E0009395B +:10625000022028210A0002DB004018210E0001EE76 +:10626000000000000A0002C702B2382327BDFFC8A1 +:10627000AFB7002CAFB60028AFB50024AFB40020F4 +:10628000AFB3001CAFB20018AFB10014AFB0001034 +:10629000AFBF00300E00011B241300013C047FFF40 +:1062A0003C0380083C0220003C010800AC20007048 +:1062B0003496FFFF34770080345200033C1512C03F +:1062C000241400013C1080002411FF800E000245C0 +:1062D000000000008F8700488F8B00188F89001402 +:1062E0008CEA00EC8CE800E8014B302B01092823F4 +:1062F00000A6102314400006014B18231440000E82 +:106300003C05800002A3602B1180000B0000000000 +:106310003C0560008CEE00EC8CED00E88CA4180CC1 +:10632000AF8E001804800053AF8D00148F8F0010C3 +:10633000ADF400003C0580008CBF00003BF900017B +:10634000333800011700FFE13C0380008C6201003C +:1063500024060C0010460009000000008C680100B3 +:106360002D043080548000103C0480008C690100B2 +:106370002D2331811060000C3C0480008CAA0100A8 +:1063800011460004000020218CA6010024C5FF81D5 +:1063900030A400FF8E0B01000E000269AE0B00243A +:1063A0000A00034F3C0480008C8D01002DAC3300AB +:1063B00011800022000000003C0708008CE70098D4 +:1063C00024EE00013C010800AC2E00983C04800043 +:1063D0008C8201001440000300000000566000148D +:1063E0003C0440008C9F01008C9801000000982123 +:1063F00003F1C82400193940330F007F00EF7025E6 +:1064000001D26825AC8D08308C8C01008C85010090 +:10641000258B0100017130240006514030A3007F1C +:106420000143482501324025AC8808303C04400037 +:10643000AE0401380A00030E000000008C99010030 +:10644000240F0020AC99002092F80000330300FFD5 +:10645000106F000C241F0050547FFFDD3C048000AF +:106460008C8401000E00154E000000000A00034F4E +:106470003C04800000963824ACA7180C0A000327BF +:106480008F8F00108C8501000E0008F72404008017 +:106490000A00034F3C04800000A4102B24030001D9 +:1064A00010400009000030210005284000A4102BF6 +:1064B00004A00003000318405440FFFC00052840DE +:1064C0005060000A0004182B0085382B54E00004AB +:1064D0000003184200C33025008520230003184222 +:1064E0001460FFF9000528420004182B03E000089F +:1064F00000C310213084FFFF30C600FF3C0780003E +:106500008CE201B80440FFFE00064C000124302557 +:106510003C08200000C820253C031000ACE00180AE +:10652000ACE50184ACE4018803E00008ACE301B809 +:106530003C0660008CC5201C2402FFF03083020062 +:10654000308601001060000E00A2282434A500014E +:106550003087300010E0000530830C0034A50004C3 +:106560003C04600003E00008AC85201C1060FFFDC7 +:106570003C04600034A5000803E00008AC85201C42 +:1065800054C0FFF334A500020A0003B03087300086 +:1065900027BDFFE8AFB00010AFBF00143C0760009C +:1065A000240600021080001100A080218F83005873 +:1065B0000E0003A78C6400188F8200580000202171 +:1065C000240600018C45000C0E000398000000001A +:1065D0001600000224020003000010218FBF0014E7 +:1065E0008FB0001003E0000827BD00188CE8201CC5 +:1065F0002409FFF001092824ACE5201C8F870058EE +:106600000A0003CD8CE5000C3C02600E00804021A6 +:1066100034460100240900180000000000000000BA +:10662000000000003C0A00503C0380003547020097 +:10663000AC68003834640400AC65003CAC670030E2 +:106640008C6C0000318B00201160FFFD2407FFFFE0 +:106650002403007F8C8D00002463FFFF248400044A +:10666000ACCD00001467FFFB24C60004000000004E +:10667000000000000000000024A402000085282B78 +:106680003C0300203C0E80002529FFFF010540212E +:10669000ADC300301520FFE00080282103E0000892 +:1066A000000000008F82005827BDFFD8AFB3001C48 +:1066B000AFBF0020AFB20018AFB10014AFB00010F0 +:1066C00094460002008098218C5200182CC300814F +:1066D0008C4800048C4700088C51000C8C49001039 +:1066E000106000078C4A00142CC4000414800013AE +:1066F00030EB000730C5000310A0001000000000C0 +:106700002410008B02002021022028210E00039873 +:10671000240600031660000224020003000010217A +:106720008FBF00208FB3001C8FB200188FB10014F0 +:106730008FB0001003E0000827BD00281560FFF1AE +:106740002410008B3C0C80003C030020241F00011F +:10675000AD830030AF9F0044000000000000000047 +:10676000000000002419FFF024D8000F031978243A +:106770003C1000D0AD88003801F0702524CD000316 +:106780003C08600EAD87003C35850400AD8E0030BE +:10679000000D38823504003C3C0380008C6B000007 +:1067A000316200201040FFFD0000000010E00008F2 +:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2 +:1067C00024A50004AC8800001467FFFB24840004A7 +:1067D0003C05600EACA60038000000000000000080 +:1067E000000000008F8600543C0400203C0780001D +:1067F000ACE4003054C000060120202102402021DA +:106800000E0003A7000080210A00041D02002021C1 +:106810000E0003DD01402821024020210E0003A7C5 +:10682000000080210A00041D0200202127BDFFE096 +:10683000AFB200183092FFFFAFB10014AFBF001C21 +:10684000AFB000101640000D000088210A0004932C +:106850000220102124050003508500278CE5000C40 +:106860000000000D262800013111FFFF24E2002066 +:106870000232802B12000019AF8200588F82004430 +:10688000144000168F8700583C0670003C0320001F +:106890008CE5000000A62024148300108F84006083 +:1068A000000544023C09800000A980241480FFE90F +:1068B000310600FF2CCA000B5140FFEB26280001D7 +:1068C000000668803C0E080025CE575801AE6021B6 +:1068D0008D8B0000016000080000000002201021E4 +:1068E0008FBF001C8FB200188FB100148FB0001042 +:1068F00003E0000827BD00200E0003982404008454 +:106900001600FFD88F8700580A000474AF8000601B +:10691000020028210E0003BF240400018F870058C5 +:106920000A000474AF820060020028210E0003BF39 +:10693000000020210A0004A38F8700580E000404E1 +:10694000020020218F8700580A000474AF82006083 +:1069500030AFFFFF000F19C03C0480008C9001B8DD +:106960000600FFFE3C1920043C181000AC83018097 +:10697000AC800184AC990188AC9801B80A00047518 +:106980002628000190E2000390E30002000020218D +:106990000002FE0000033A0000FF2825240600083C +:1069A0000E000398000000001600FFDC2402000324 +:1069B0008F870058000010210A000474AF82006025 +:1069C00090E8000200002021240600090A0004C308 +:1069D00000082E0090E4000C240900FF308500FF21 +:1069E00010A900150000302190F9000290F8000372 +:1069F000308F00FF94EB000400196E000018740043 +:106A0000000F62000186202501AE5025014B28258C +:106A10003084FF8B0A0004C32406000A90E30002BE +:106A200090FF0004000020210003360000DF28252D +:106A30000A0004C32406000B0A0004D52406008BB8 +:106A4000000449C23127003F000443423C02800059 +:106A500000082040240316802CE60020AC43002CC4 +:106A600024EAFFE02482000114C0000330A900FFE3 +:106A700000801021314700FF000260803C0D800043 +:106A8000240A0001018D20213C0B000E00EA28049D +:106A9000008B302111200005000538278CCE000026 +:106AA00001C5382503E00008ACC700008CD8000001 +:106AB0000307782403E00008ACCF000027BDFFE007 +:106AC000AFB10014AFB00010AFBF00183C076000BA +:106AD0008CE408083402F0003C1160003083F000C0 +:106AE000240501C03C04800E000030211062000625 +:106AF000241000018CEA08083149F0003928E00030 +:106B00000008382B000780403C0D0200AE2D081411 +:106B1000240C16803C0B80008E2744000E000F8B47 +:106B2000AD6C002C120000043C02169124050001FB +:106B3000120500103C023D2C345800E0AE384408E9 +:106B40003C1108008E31007C8FBF00183C066000AD +:106B500000118540360F16808FB100148FB00010E1 +:106B60003C0E020027BD0020ACCF442003E000080B +:106B7000ACCE08103C0218DA345800E0AE384408B5 +:106B80003C1108008E31007C8FBF00183C0660006D +:106B900000118540360F16808FB100148FB00010A1 +:106BA0003C0E020027BD0020ACCF442003E00008CB +:106BB000ACCE08100A0004EB240500010A0004EB27 +:106BC0000000282124020400A7820024A780001CC2 +:106BD000000020213C06080024C65A582405FFFF67 +:106BE00024890001000440803124FFFF01061821A0 +:106BF0002C87002014E0FFFAAC6500002404040098 +:106C0000A7840026A780001E000020213C06080063 +:106C100024C65AD82405FFFF248D0001000460809B +:106C200031A4FFFF018658212C8A00201540FFFA6D +:106C3000AD650000A7800028A7800020A780002263 +:106C4000000020213C06080024C65B582405FFFFF5 +:106C5000249900010004C0803324FFFF030678213B +:106C60002C8E000415C0FFFAADE500003C05600065 +:106C70008CA73D002403E08F00E31024344601403C +:106C800003E00008ACA63D002487007F000731C266 +:106C900024C5FFFF000518C2246400013082FFFFF5 +:106CA000000238C0A78400303C010800AC27003047 +:106CB000AF80002C0000282100002021000030219E +:106CC0002489000100A728213124FFFF2CA81701E7 +:106CD000110000032C8300801460FFF924C600011A +:106CE00000C02821AF86002C10C0001DA786002AF6 +:106CF00024CAFFFF000A11423C08080025085B581F +:106D00001040000A00002021004030212407FFFF2E +:106D1000248E00010004688031C4FFFF01A86021B7 +:106D20000086582B1560FFFAAD87000030A2001FC7 +:106D30005040000800043080240300010043C804D0 +:106D400000041080004878212738FFFF03E0000886 +:106D5000ADF8000000C820212405FFFFAC8500002D +:106D600003E000080000000030A5FFFF30C6FFFF71 +:106D700030A8001F0080602130E700FF0005294295 +:106D80000000502110C0001D24090001240B000147 +:106D900025180001010B2004330800FF0126782686 +:106DA000390E00202DED00012DC2000101A2182591 +:106DB0001060000D014450250005C880032C4021BF +:106DC0000100182110E0000F000A20278D040000A8 +:106DD000008A1825AD03000024AD00010000402109 +:106DE0000000502131A5FFFF252E000131C9FFFF12 +:106DF00000C9102B1040FFE72518000103E0000830 +:106E0000000000008D0A0000014440240A0005D162 +:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC +:106E2000AFB00010AFBF001430E7FFFF00005021EB +:106E30003410FFFF0000602124AF001F00C0482174 +:106E4000241800012419002005E0001601E010219B +:106E50000002F943019F682A0009702B01AE40240B +:106E600011000017000C18800064102110E00005CC +:106E70008C4B000000F840040008382301675824B8 +:106E800000003821154000410000402155600016E7 +:106E90003169FFFF258B0001316CFFFF05E1FFEC3D +:106EA00001E0102124A2003E0002F943019F682A5C +:106EB0000009702B01AE40241500FFEB000C188078 +:106EC000154600053402FFFF020028210E0005B51B +:106ED00000003821020010218FBF00148FB0001075 +:106EE00003E0000827BD00181520000301601821E9 +:106EF000000B1C0224080010306A00FF154000053A +:106F0000306E000F250D000800031A0231A800FFA3 +:106F1000306E000F15C00005307F000325100004FF +:106F200000031902320800FF307F000317E000055C +:106F3000386900012502000200031882304800FF72 +:106F4000386900013123000110600004310300FFA3 +:106F5000250A0001314800FF310300FF000C6940A1 +:106F600001A34021240A000110CAFFD53110FFFF00 +:106F7000246E000131C800FF1119FFC638C9000195 +:106F80002D1F002053E0001C258B0001240D000163 +:106F90000A000648240E002051460017258B0001E8 +:106FA00025090001312800FF2D0900205120001281 +:106FB000258B000125430001010D5004014B1024D5 +:106FC000250900011440FFF4306AFFFF3127FFFF5D +:106FD00010EE000C2582FFFF304CFFFF0000502117 +:106FE0003410FFFF312800FF2D0900205520FFF24B +:106FF00025430001258B0001014648260A000602B0 +:10700000316CFFFF00003821000050210A000654B7 +:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6 +:10702000AFB10014001039423211FFE000071080A8 +:10703000AFB3001C00B1282330D3FFFFAFB200185C +:1070400030A5FFFF00809021026030210044202104 +:10705000AFBF00200E0005E03207001F022288218A +:107060003403FFFF0240202102002821026030216A +:1070700000003821104300093231FFFF02201021A7 +:107080008FBF00208FB3001C8FB200188FB1001487 +:107090008FB0001003E0000827BD00280E0005E0B7 +:1070A0000000000000408821022010218FBF002036 +:1070B0008FB3001C8FB200188FB100148FB0001076 +:1070C00003E0000827BD0028000424003C03600002 +:1070D000AC603D0810A00002348210063482101605 +:1070E00003E00008AC623D0427BDFFE0AFB0001034 +:1070F000309000FF2E020006AFBF001810400008BD +:10710000AFB10014001030803C03080024635784A2 +:1071100000C328218CA400000080000800000000AB +:10712000000020218FBF00188FB100148FB0001015 +:107130000080102103E0000827BD00209791002A5D +:1071400016200051000020213C020800904200332C +:107150000A0006BB00000000978D002615A0003134 +:10716000000020210A0006BB2402000897870024A3 +:1071700014E0001A00001821006020212402000100 +:107180001080FFE98FBF0018000429C2004530219C +:1071900000A6582B1160FFE43C0880003C0720004B +:1071A000000569C001A76025AD0C00203C038008E4 +:1071B0002402001F2442FFFFAC6000000441FFFDD9 +:1071C0002463000424A5000100A6702B15C0FFF560 +:1071D000000569C00A0006A58FBF00189787001C2C +:1071E0003C04080024845A58240504000E0006605C +:1071F00024060001978B002424440001308AFFFFFD +:107200002569FFFF2D48040000402821150000409B +:10721000A789002424AC3800000C19C00A0006B964 +:10722000A780001C9787001E3C04080024845AD8BD +:10723000240504000E00066024060001979900262C +:10724000244400013098FFFF272FFFFF2F0E04007A +:107250000040882115C0002CA78F0026A780001EA3 +:107260003A020003262401003084FFFF0E00068D41 +:107270002C4500010011F8C027F00100001021C0CA +:107280000A0006BB240200089785002E978700227B +:107290003C04080024845B580E00066024060001AC +:1072A0009787002A8F89002C2445000130A8FFFF12 +:1072B00024E3FFFF0109302B0040802114C0001897 +:1072C000A783002AA7800022978500300E000F7543 +:1072D00002002021244A05003144FFFF0E00068DE4 +:1072E000240500013C05080094A500320E000F752E +:1072F00002002021244521003C0208009042003376 +:107300000A0006BB000521C00A0006F3A784001E80 +:1073100024AC3800000C19C00A0006B9A784001C70 +:107320000A00070DA7850022308400FF27BDFFE873 +:107330002C820006AFBF0014AFB000101040001543 +:1073400000A03821000440803C0308002463579CBF +:10735000010328218CA40000008000080000000028 +:1073600024CC007F000751C2000C59C23170FFFFCE +:107370002547C40030E5FFFF2784001C02003021B0 +:107380000E0005B52407000197860028020620217B +:10739000A78400288FBF00148FB0001003E00008FE +:1073A00027BD00183C0508008CA50030000779C2F5 +:1073B0000E00038125E4DF003045FFFF3C04080098 +:1073C00024845B58240600010E0005B52407000143 +:1073D000978E002A8FBF00148FB0001025CD0001BA +:1073E00027BD001803E00008A78D002A0007C9C2C6 +:1073F0002738FF00001878C231F0FFFF3C04080076 +:1074000024845AD802002821240600010E0005B564 +:1074100024070001978D0026260E0100000E84002F +:1074200025AC00013C0B6000A78C0026AD603D0838 +:1074300036040006000030213C0760008CE23D0469 +:10744000305F000617E0FFFD24C9000100061B00A5 +:10745000312600FF006440252CC50004ACE83D0443 +:1074600014A0FFF68FBF00148FB0001003E00008D7 +:1074700027BD0018000751C22549C8002406000195 +:10748000240700013C04080024845A580E0005B566 +:107490003125FFFF978700248FBF00148FB00010A5 +:1074A00024E6000127BD001803E00008A786002499 +:1074B0003C0660183C090800252900FCACC9502C8A +:1074C0008CC850003C0580003C020002350700805B +:1074D000ACC750003C04080024841FE03C030800B3 +:1074E00024631F98ACA50008ACA2000C3C01080066 +:1074F000AC2459A43C010800AC2359A803E00008BF +:107500002402000100A030213C1C0800279C59AC3B +:107510003C0C04003C0B0002008B3826008C4026FB +:107520002CE200010007502B2D050001000A4880C5 +:107530003C030800246359A4004520250123182199 +:107540001080000300001021AC660000240200013E +:1075500003E00008000000003C1C0800279C59AC18 +:107560003C0B04003C0A0002008A3026008B3826BF +:107570002CC200010006482B2CE5000100094080C8 +:107580003C030800246359A4004520250103182169 +:1075900010800005000010213C0C0800258C1F986D +:1075A000AC6C00002402000103E0000800000000B1 +:1075B0003C0900023C080400008830260089382677 +:1075C0002CC30001008028212CE400010083102539 +:1075D0001040000B000030213C1C0800279C59ACD7 +:1075E0003C0A80008D4E00082406000101CA68256F +:1075F000AD4D00088D4C000C01855825AD4B000C9D +:1076000003E0000800C010213C1C0800279C59AC76 +:107610003C0580008CA6000C0004202724020001F9 +:1076200000C4182403E00008ACA3000C3C020002D4 +:107630001082000B3C0560003C070400108700032B +:107640000000000003E00008000000008CA908D042 +:10765000240AFFFD012A402403E00008ACA808D05A +:107660008CA408D02406FFFE0086182403E000083E +:10767000ACA308D03C05601A34A600108CC300806F +:1076800027BDFFF88CC50084AFA3000093A40000C1 +:107690002402001010820003AFA5000403E00008DC +:1076A00027BD000893A7000114E0001497AC000266 +:1076B00097B800023C0F8000330EFFFC01CF682119 +:1076C000ADA50000A3A000003C0660008CC708D058 +:1076D0002408FFFE3C04601A00E82824ACC508D04A +:1076E0008FA300048FA200003499001027BD00086A +:1076F000AF22008003E00008AF2300843C0B800031 +:10770000318AFFFC014B48218D2800000A00080C3B +:10771000AFA8000427BDFFE8AFBF00103C1C080065 +:10772000279C59AC3C0580008CA4000C8CA2000462 +:107730003C0300020044282410A0000A00A31824DF +:107740003C0604003C0400021460000900A610245A +:107750001440000F3C0404000000000D3C1C080015 +:10776000279C59AC8FBF001003E0000827BD00180C +:107770003C0208008C4259A40040F80900000000B7 +:107780003C1C0800279C59AC0A0008358FBF00102C +:107790003C0208008C4259A80040F8090000000093 +:1077A0000A00083B000000003C0880008D0201B880 +:1077B0000440FFFE35090180AD2400003C031000A9 +:1077C00024040040AD250004A1240008A1260009DE +:1077D000A527000A03E00008AD0301B83084FFFFCD +:1077E0000080382130A5FFFF000020210A00084555 +:1077F000240600803087FFFF8CA400002406003898 +:107800000A000845000028218F8300788F860070C9 +:107810001066000B008040213C07080024E75B68ED +:10782000000328C000A710218C440000246300013D +:10783000108800053063000F5466FFFA000328C06B +:1078400003E00008000010213C07080024E75B6CFF +:1078500000A7302103E000088CC200003C03900028 +:1078600034620001008220253C038000AC640020CB +:107870008C65002004A0FFFE0000000003E000086B +:10788000000000003C0280003443000100832025FA +:1078900003E00008AC44002027BDFFE0AFB10014B6 +:1078A0003091FFFFAFB00010AFBF001812200013DF +:1078B00000A080218CA20000240400022406020003 +:1078C0001040000F004028210E0007250000000096 +:1078D00000001021AE000000022038218FBF0018E8 +:1078E0008FB100148FB0001000402021000028212B +:1078F000000030210A00084527BD00208CA20000AE +:10790000022038218FBF00188FB100148FB00010F3 +:107910000040202100002821000030210A000845F5 +:1079200027BD002000A010213087FFFF8CA5000498 +:107930008C4400000A000845240600068F83FD9C45 +:1079400027BDFFE8AFBF0014AFB00010906700087C +:10795000008010210080282130E600400000202116 +:1079600010C000088C5000000E0000BD0200202155 +:10797000020020218FBF00148FB000100A000548BC +:1079800027BD00180E0008A4000000000E0000BD76 +:1079900002002021020020218FBF00148FB00010B0 +:1079A0000A00054827BD001827BDFFE0AFB0001052 +:1079B0008F90FD9CAFBF001CAFB20018AFB1001498 +:1079C00092060001008088210E00087230D2000467 +:1079D00092040005001129C2A6050000348300406E +:1079E000A20300050E00087C022020210E00054A9B +:1079F0000220202124020001AE02000C02202821D6 +:107A0000A602001024040002A602001224060200AE +:107A1000A60200140E000725A60200161640000F4D +:107A20008FBF001C978C00743C0B08008D6B007896 +:107A30002588FFFF3109FFFF256A0001012A382B45 +:107A400010E00006A78800743C0F6006240E0016A4 +:107A500035ED0010ADAE00508FBF001C8FB2001886 +:107A60008FB100148FB0001003E0000827BD002084 +:107A700027BDFFE0AFB10014AFBF0018AFB00010DA +:107A80001080000400A088212402008010820007DA +:107A9000000000000000000D8FBF00188FB100141F +:107AA0008FB0001003E0000827BD00200E00087210 +:107AB00000A020218F86FD9C0220202190C500057A +:107AC0000E00087C30B000FF2403003E1603FFF1D7 +:107AD0003C0680008CC401780480FFFE34C801405D +:107AE000240900073C071000AD11000002202021EE +:107AF000A10900048FBF00188FB100148FB00010CF +:107B0000ACC701780A0008C527BD002027BDFFE0EB +:107B1000AFB00010AFBF0018AFB100143C10800030 +:107B20008E110020000000000E00054AAE04002067 +:107B3000AE1100208FBF00188FB100148FB000105D +:107B400003E0000827BD00203084FFFF00803821BB +:107B50002406003500A020210A0008450000282145 +:107B60003084FFFF008038212406003600A0202149 +:107B70000A0008450000282127BDFFD0AFB500242A +:107B80003095FFFFAFB60028AFB40020AFBF002C88 +:107B9000AFB3001CAFB20018AFB10014AFB000100B +:107BA00030B6FFFF12A000270000A0218F920058DE +:107BB0008E4300003C0680002402004000033E0289 +:107BC00000032C0230E4007F006698241482001D1C +:107BD00030A500FF8F8300682C68000A1100001098 +:107BE0008F8D0044000358803C0C0800258C57B84A +:107BF000016C50218D4900000120000800000000A8 +:107C000002D4302130C5FFFF0E0008522404008446 +:107C1000166000028F920058AF8000688F8D00447C +:107C20002659002026980001032090213314FFFFDD +:107C300015A00004AF9900580295202B1480FFDC9A +:107C400000000000028010218FBF002C8FB600289A +:107C50008FB500248FB400208FB3001C8FB20018A2 +:107C60008FB100148FB0001003E0000827BD003072 +:107C70002407003414A70149000000009247000EB9 +:107C80008F9FFDA08F90FD9C24181600A3E700197C +:107C90009242000D3C0880003C07800CA3E20018D3 +:107CA000964A00123C0D60003C117FFFA60A005C62 +:107CB000964400103623FFFF240200053099FFFF91 +:107CC000AE1900548E46001CAD1800288CEF000041 +:107CD0008DAE444801E6482601C93021AE06003881 +:107CE0008E05003824CB00013C0E7F00AE05003C21 +:107CF0008E0C003CAFEC0004AE0B00208E13002075 +:107D0000AE13001CA3E0001BAE03002CA3E2001284 +:107D10008E4A001424130050AE0A00348E0400343E +:107D2000AFE400148E590018AE1900489258000CA8 +:107D3000A218004E920D000835AF0020A20F0008D7 +:107D40008E090018012E282434AC4000AE0C001817 +:107D5000920B0000317200FF1253027F2403FF8058 +:107D60003C04080024845BE80E0008AA0000000020 +:107D70003C1108008E315BE80E00087202202021C1 +:107D80002405000424080001A2050025022020216A +:107D90000E00087CA20800053C0580008CB001782C +:107DA0000600FFFE8F92005834AE0140240F0002FF +:107DB0003C091000ADD10000A1CF0004ACA90178AE +:107DC0000A000962AF8000682CAD003751A0FF9413 +:107DD0008F8D0044000580803C110800263157E05B +:107DE000021178218DEE000001C0000800000000A3 +:107DF0002411000414B1008C3C0780003C080800EA +:107E00008D085BE88F86FD9CACE800208E4500085D +:107E10008F99FDA0240D0050ACC500308E4C000899 +:107E2000ACCC00508E4B000CACCB00348E43001019 +:107E3000ACC300388E4A0010ACCA00548E42001405 +:107E4000ACC2003C8E5F0018AF3F00048E50001C97 +:107E5000ACD0002090C40000309800FF130D024AFF +:107E6000000000008CC400348CD00030009030231F +:107E700004C000F12404008C126000EE2402000310 +:107E80000A000962AF8200682419000514B900666F +:107E90003C0580003C0808008D085BE88F86FD9C4F +:107EA000ACA800208E4C00048F8AFDA0240720007F +:107EB000ACCC001C924B000824120008A14B001906 +:107EC0008F82005890430009A14300188F85005805 +:107ED00090BF000A33E400FF1092001028890009C7 +:107EE000152000BA240E0002240D0020108D000B76 +:107EF000340780002898002117000008240740005C +:107F000024100040109000053C0700012419008057 +:107F1000109900023C070002240740008CC20018A0 +:107F20003C03FF00004350240147F825ACDF001854 +:107F300090B2000BA0D200278F8300589464000CED +:107F4000108001FE000000009467000C3C1F8000C0 +:107F50002405FFBFA4C7005C9063000E2407000443 +:107F6000A0C300088F820058904A000FA0CA0009E1 +:107F70008F8900588D3200108FE400740244C823AA +:107F8000ACD900588D300014ACD0002C95380018B6 +:107F9000330DFFFFACCD00409531001A322FFFFFAB +:107FA000ACCF00448D2E001CACCE00489128000EB2 +:107FB000A0C8000890CC000801855824126001B6C2 +:107FC000A0CB00088F9200580A000962AF870068B2 +:107FD0002406000614A600143C0E80003C0F080086 +:107FE0008DEF5BE88F85FD98ADCF00208E4900189E +:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B +:1080000024040005ACA800048CCC003C1260008164 +:10801000AD6C00000A000962AF84006824110007FB +:1080200010B1004B240400063C05080024A55BE8C1 +:108030000E000881240400818F9200580013102B39 +:108040000A000962AF820068241F002314BFFFF6F4 +:108050003C0C80003C0508008CA55BE88F8BFDA0E4 +:10806000AD8500208F91FD9C8E4600042564002084 +:1080700026450014AE260028240600030E000F81BA +:10808000257000308F87005802002021240600034D +:108090000E000F8124E500083C04080024845BE8FE +:1080A0000E0008AA0000000092230000240A0050DD +:1080B000306200FF544AFFE18F9200580E000F6CAF +:1080C000000000000A000A6A8F920058240800335A +:1080D00014A800323C0380003C1108008E315BE89C +:1080E0008F8FFDA0AC7100208E420008240D002867 +:1080F0008F89FD9CADE200308E4A000C24060009F9 +:10810000ADEA00348E5F0010ADFF00388E440014DD +:10811000ADE400208E590018ADF900248E58001CE3 +:10812000ADF80028A1ED00118E4E00041260003160 +:10813000AD2E00288F9200580A000962AF860068B1 +:10814000240D002214ADFFB8000000002404000735 +:108150003C1008008E105BE83C188000AF10002037 +:108160005660FEAEAF8400683C04080024845BE8DF +:108170000E0008AA241300508F84FD9C90920000EA +:10818000325900FF1333014B000000008F9200585A +:10819000000020210A000962AF8400683C05080045 +:1081A00024A55BE80E000858240400810A000A6A2E +:1081B0008F92005802D498213265FFFF0E000852BA +:1081C000240400840A0009628F920058108EFF5325 +:1081D000240704002887000310E00179241100041B +:1081E000240F0001548FFF4D240740000A000A228B +:1081F000240701003C05080024A55BE80E0008A444 +:10820000240400828F920058000030210A00096285 +:10821000AF8600683C04080024845BE88CC2003808 +:108220000E0008AA8CC3003C8F9200580A000AC0B6 +:1082300000002021240400823C05080024A55BE8FE +:108240000E0008A4000000008F92005800001021CA +:108250000A000962AF8200688E5000048F91FD9C75 +:108260003C078000ACF00020922C00050200282181 +:10827000318B0002156001562404008A8F92FDA004 +:108280002404008D9245001B30A6002014C001502C +:1082900002002821922E00092408001231C900FF93 +:1082A0001128014B240400810E00087202002021D5 +:1082B0009258001B240F000402002021370D0042B9 +:1082C000A24D001B0E00087CA22F00253C0580005B +:1082D0008CA401780480FFFE34B90140241F000201 +:1082E000AF300000A33F00048F9200583C101000F4 +:1082F000ACB001780A000A6B0013102B8E500004FA +:108300008F91FD9C3C038000AC700020922A0005F8 +:108310000200282131420002144000172404008A80 +:10832000922C00092412000402002821318B00FF46 +:1083300011720011240400810E0008720200202135 +:108340008F89FDA0240800122405FFFE912F001B39 +:108350000200202135EE0020A12E001BA2280009DA +:108360009226000500C538240E00087CA2270005CF +:1083700002002821000020210E0009330000000027 +:108380000A000A6A8F9200588E4C00043C07800055 +:108390003C10080026105BE8ACEC00203C01080013 +:1083A000AC2C5BE8924B0003317100041220013BBE +:1083B0008F84FD9C24020006A0820009924F001BBE +:1083C000240EFFC031E9003F012E4025A08800089F +:1083D0009245000330A6000114C0013200000000E5 +:1083E0008E420008AE0200083C0208008C425BF09E +:1083F000104001318F90FDA0000219C28F8DFD9CAD +:10840000A603000C8E4A000C24180001240400145A +:10841000AE0A002C8E420010AE02001C965F0016C1 +:10842000A61F003C96590014A619003EADB8000CDA +:10843000A5B80010A5B80012A5B80014A5B800167C +:1084400012600144A2040011925100033232000272 +:108450002E5300018F920058266200080A0009621C +:10846000AF8200688E4400043C1980003C068008FE +:10847000AF2400208E45000890D80000240D005045 +:10848000331100FF122D009C2407008824060009E8 +:108490000E000845000000000A000A6A8F9200588A +:1084A0008E5000043C0980003C118008AD30002053 +:1084B0009228000024050050310400FF10850110AF +:1084C0002407008802002021000028210E00084512 +:1084D0002406000E922D00002418FF80020028219F +:1084E00001B8802524040004240600300E0007256E +:1084F000A23000000A000A6A8F9200588E500004D1 +:108500008F91FDA03C028000AC500020923F001BE8 +:1085100033F900101320006C240700810200202191 +:10852000000028212406001F0E000845000000005E +:108530000A000A6A8F9200588E44001C0E00085DE3 +:1085400000000000104000E3004048218F880058E0 +:1085500024070089012020218D05001C240600012C +:108560000E000845000000000A000A6A8F920058B9 +:10857000964900023C10080026105BE831280004F0 +:10858000110000973C0460008E4E001C3C0F8000E0 +:10859000ADEE00203C010800AC2E5BE896470002DF +:1085A00030E40001148000E6000000008E42000468 +:1085B000AE0200083C1008008E105BF0120000ECC8 +:1085C0003C0F80008F92FD9C241000018E4E0018FD +:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3 +:1085E000A2400005AE50000C3C0808008D085BF06E +:1085F0008F840058A6500010000839C2A6500012FF +:10860000A6500014A6500016A5A7000C8C8C0008DC +:108610008F8B00588F8A0058ADAC002C8D63000CF6 +:1086200024070002ADA3001C91460010A1A6001172 +:108630008F82005890450011A3E500088F990058DB +:1086400093380012A258004E8F910058922F0013B9 +:10865000A1AF00128F920058964E0014A5AE003CB8 +:1086600096490016A5A9003E8E480018ADA8001432 +:108670005660FD6AAF8700683C05080024A55BE8EA +:108680000E000881000020218F9200580000382140 +:108690000A000962AF8700683C05080024A55BE872 +:1086A0000E0008A4240400828F9200580A000A4D8C +:1086B000000038210E000F6C000000008F9200585F +:1086C0000A000AC0000020210E00087202002021CA +:1086D0009223001B02002021346A00100E00087C47 +:1086E000A22A001B000038210200202100002821BE +:1086F0000A000BA52406001F9242000C305F000107 +:1087000013E0000300000000964A000EA4CA002CEB +:10871000924B000C316300025060000600003821CB +:108720008E470014964C0012ACC7001CA4CC001A53 +:10873000000038210A000B7F240600093C050800D0 +:1087400024A55BE80E0008A42404008B8F92005837 +:108750000A000A4D0013382B3C0C08008D8C5BE896 +:1087600024DFFFFE25930100326B007F016790211B +:1087700002638824AD110028AE4600E0AE4000E45C +:108780000A0009B3AE5F001CACC000543C0D0800E9 +:108790008DAD5BE83C18800C37090100ACED00287A +:1087A0008E510014AD3100E08E4F0014AD2F00E467 +:1087B0008E4E001025C7FFFE0A0009F4AD27001CED +:1087C0005491FDD6240740000A000A222407100015 +:1087D0000E00092D000000000A000A6A8F9200585E +:1087E0008C83442C3C12DEAD3651BEEF3C010800B8 +:1087F000AC205BE810710062000000003C196C6264 +:1088000037387970147800082404000297850074C2 +:108810009782006C2404009200A2F82B13E0001948 +:1088200002002821240400020E00069524050200FF +:108830003C068000ACC200203C010800AC225BE892 +:108840001040000D8F8C0058240A002824040003D7 +:10885000918B0010316300FF546A00012404000171 +:108860000E0000810000000010400004240400837A +:108870000A000BC28F920058240400833C050800B4 +:1088800024A55BE80E000881000000008F920058CC +:108890000013382B0A000962AF8700680A000B49F1 +:1088A000240200128E4400080E00085D0000000043 +:1088B0000A000B55AE0200083C05080024A55BE841 +:1088C0000E000858240400878F9200580A000B728B +:1088D0000013102B240400040E000695240500301C +:1088E0001440002A004048218F8800582407008344 +:1088F000012020218D05001C0A000BB32406000175 +:108900008F8300788F8600701066FEEE000038219D +:108910003C07080024E75B6C000320C00087282187 +:108920008CAE000011D0005D246F000131E3000F18 +:108930005466FFFA000320C00A000B8C00003821A7 +:108940008E4400040E00085D000000000A000BC801 +:10895000AE0200083C05080024A55BE80E0008A450 +:10896000240400828F9200580A000B72000010212C +:108970003C05080024A55BE80A000C7C2404008761 +:108980008C83442C0A000C5B3C196C628F88005865 +:108990003C0780083C0C8000240B0050240A000196 +:1089A000AD820020A0EB0000A0EA000191030004CA +:1089B000A0E3001891040005A0E400199106000648 +:1089C0003C04080024845B6CA0E6001A91020007B6 +:1089D0003C06080024C65B68A0E2001B9105000865 +:1089E000A0E5001C911F0009A0FF001D9119000ABD +:1089F000A0F9001E9118000BA0F8001F9112000CA6 +:108A0000A0F200209111000DA0F100219110000EA4 +:108A1000A0F00022910F000FA0EF0023910E001094 +:108A2000A0EE0024910D0011A0ED0025950C00147E +:108A3000A4EC0028950B00168F8A00708F920078A6 +:108A4000A4EB002A95030018000A10C02545000178 +:108A5000A4E3002C8D1F001C0044C0210046C82147 +:108A600030A5000FAF3F0000AF09000010B20006B4 +:108A7000AF850070000038218D05001C01202021E9 +:108A80000A000BB32406000124AD000131A7000F3A +:108A9000AF8700780A000CF9000038213C06080076 +:108AA00024C65B680086902100003821ACA000003D +:108AB0000A000B8CAE4000003C0482013C036000C5 +:108AC00034820E02AC603D68AF80009803E000087D +:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7 +:108AE000001018422C620041AFBF00141440000275 +:108AF00024040080240300403C010800AC300060E6 +:108B00003C010800AC2300640E000F7500602821B2 +:108B1000244802BF2409FF8001092824001039805D +:108B2000001030408FBF00148FB0001000A720212C +:108B300000861821AF8300803C010800AC25005856 +:108B40003C010800AC24005C03E0000827BD0018CD +:108B5000308300FF30C6FFFF30E400FF3C08800098 +:108B60008D0201B80440FFFE000354000144382583 +:108B70003C09600000E920253C031000AD050180A0 +:108B8000AD060184AD04018803E00008AD0301B81F +:108B90008F8500583C0A6012354800108CAC0004E8 +:108BA0003C0D600E35A60010318B00062D690001CA +:108BB000AD0900C48CA70004ACC731808CA20008AA +:108BC00094A40002ACC231848CA3001C0460000396 +:108BD000A784009003E00008000000008CAF00189C +:108BE000ACCF31D08CAE001C03E00008ACCE31D449 +:108BF0008F8500588F87FF288F86FF308CAE00044A +:108C00003C0F601235E80010ACEE00788CAD000827 +:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0 +:108C2000ACCB004894CA00543C0208008C4200447B +:108C300025490001A4C9005494C400543083FFFFA7 +:108C400010620017000000003C0208008C42004047 +:108C5000A4C200528CA30018ACE300308CA2001414 +:108C6000ACE2002C8CB90018ACF900388CB80014B8 +:108C700024050001ACF800348D0600BC50C5001975 +:108C80008D0200B48D0200B8A4E2004894E40048CC +:108C9000A4E4004A94E800EA03E000083102FFFF80 +:108CA0003C0208008C420024A4C00054A4C200521C +:108CB0008CA30018ACE300308CA20014ACE2002CB2 +:108CC0008CB90018ACF900388CB8001424050001E8 +:108CD000ACF800348D0600BC54C5FFEB8D0200B823 +:108CE0008D0200B4A4E2004894E40048A4E4004AE1 +:108CF00094E800EA03E000083102FFFF8F86005885 +:108D00003C0480008CC900088CC80008000929C0F8 +:108D1000000839C0AC87002090C30007306200040F +:108D20001040003EAF85009490CB0007316A0008E8 +:108D30001140003D8F87FF2C8CCD000C8CCE001491 +:108D400001AE602B11800036000000008CC2000CC8 +:108D5000ACE200708CCB00188F85FF288F88FF3025 +:108D6000ACEB00748CCA00102402FFF8ACAA00D847 +:108D70008CC9000CAD0900608CC4001CACA400D0F0 +:108D800090E3007C0062C824A0F9007C90D8000722 +:108D9000330F000811E000040000000090ED007C9B +:108DA00035AC0001A0EC007C90CF000731EE000153 +:108DB00011C000060000000090E3007C241800347D +:108DC00034790002A0F9007CACB800DC90C2000746 +:108DD0003046000210C000040000000090E8007C53 +:108DE00035040004A0E4007C90ED007D3C0B600E97 +:108DF000356A001031AC003FA0EC007D8D4931D4C4 +:108E00003127000110E00002240E0001A0AE00098D +:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8 +:108E20000A000DAF8CC200140A000DB0ACE0007057 +:108E30008F8C005827BDFFD8AFB3001CAFB200180D +:108E4000AFB00010AFBF0020AFB10014918F00157C +:108E50003C13600E3673001031EB000FA38B009CA7 +:108E60008D8F00048D8B0008959F0012959900103E +:108E70009584001A9598001E958E001C33EDFFFF17 +:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1 +:108E90003C010800AC2D00243C010800AC29004432 +:108EA0003C010800AC2A0040AE683178AE67317CE6 +:108EB00091850015959100163C12601236520010F3 +:108EC00030A200FF3230FFFFAE623188AE5000B4F6 +:108ED00091830014959F0018240600010066C804C1 +:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5 +:108EF000AF8F00843C08600631CD00FFAE4D00C04E +:108F0000918A00159584000E3C07600A314900FFE4 +:108F1000AF8B00883084FFFFAE4900C835110010C8 +:108F20000E000D1034F004103C0208008C4200606A +:108F30003C0308008C6300643C0608008CC60058A3 +:108F40003C0508008CA5005C8F8400808FBF00204A +:108F5000AE23004CAE65319CAE030054AE4500DC40 +:108F6000AE6231A0AE6331A4AE663198AE22004845 +:108F70008FB3001CAE0200508FB10014AE4200E06F +:108F8000AE4300E4AE4600D88FB000108FB2001898 +:108F90000A00057D27BD0028978500929783007CF5 +:108FA00027BDFFE8AFB0001000A3102BAFBF001427 +:108FB000240400058F900058104000552409000239 +:108FC0000E0006958F850080AF8200942404000374 +:108FD0001040004F240900023C0680000E00008172 +:108FE000ACC2002024070001240820001040004DDE +:108FF00024040005978E00928F8AFF2C24090050CC +:1090000025C50001A7850092A14900003C0D08007C +:109010008DAD0064240380008F84FF28000D66005E +:10902000AD4C0018A5400006954B000A8F85FF3017 +:109030002402FF8001633024A546000A915F000AE4 +:109040000000482103E2C825A159000AA0A0000899 +:10905000A140004CA08000D5961800029783009094 +:109060003C020004A49800EA960F00022418FFBFF7 +:1090700025EE2401A48E00BE8E0D0004ACAD00448C +:109080008E0C0008ACAC0040A4A00050A4A000547A +:109090008E0B000C240C0030AC8B00288E060010C8 +:1090A000AC860024A480003EA487004EA487005014 +:1090B000A483003CAD420074AC8800D8ACA800602A +:1090C000A08700FC909F00D433F9007FA09900D4C2 +:1090D000909000D402187824A08F00D4914E007C88 +:1090E00035CD0001A14D007C938B009CAD480070F4 +:1090F000AC8C00DCA08B00D68F8800888F87008422 +:10910000AC8800C4AC8700C8A5400078A540007AB0 +:109110008FBF00148FB000100120102103E0000861 +:1091200027BD00188F8500940E0007258F860080CC +:109130000A000E9F2409000227BDFFE0AFB0001017 +:109140008F900058AFB10014AFBF00188E09000413 +:109150000E00054A000921C08E0800048F84FF28F4 +:109160008F82FF30000839C03C068000ACC7002069 +:10917000948500EA904300131460001C30B1FFFF97 +:109180008F8CFF2C918B0008316A00401540000B3A +:10919000000000008E0D0004022030218FBF001857 +:1091A0008FB100148FB00010240400220000382179 +:1091B000000D29C00A000D2F27BD00200E000098C9 +:1091C000000000008E0D0004022030218FBF001827 +:1091D0008FB100148FB00010240400220000382149 +:1091E000000D29C00A000D2F27BD00200E000090A1 +:1091F000000000008E0D0004022030218FBF0018F7 +:109200008FB100148FB00010240400220000382118 +:10921000000D29C00A000D2F27BD002027BDFFE04B +:10922000AFB200183092FFFFAFB00010AFBF001C0C +:10923000AFB100141240001E000080218F8600583C +:109240008CC500002403000600053F02000514023F +:1092500030E4000714830016304500FF2CA80006F8 +:1092600011000040000558803C0C0800258C58BCBB +:10927000016C50218D490000012000080000000011 +:109280008F8E0098240D000111CD005024020002A1 +:10929000AF820098260900013130FFFF24C800206A +:1092A0000212202B010030211480FFE5AF88005806 +:1092B000020010218FBF001C8FB200188FB1001464 +:1092C0008FB0001003E0000827BD00209387007EC8 +:1092D00054E00034000030210E000DE700000000D3 +:1092E0008F8600580A000EFF240200018F87009825 +:1092F0002405000210E50031240400130000282199 +:1093000000003021240700010E000D2F0000000096 +:109310000A000F008F8600588F83009824020002F5 +:109320001462FFF6240400120E000D9A00000000E3 +:109330008F85009400403021240400120E000D2F70 +:10934000000038210A000F008F8600588F83009894 +:109350002411000310710029241F0002107FFFCE8A +:1093600026090001240400100000282100003021FB +:109370000A000F1D240700018F91009824060002A7 +:109380001626FFF9240400100E000E410000000014 +:10939000144000238F9800588F8600580A000EFF53 +:1093A00024020003240400140E000D2F00002821C5 +:1093B0008F8600580A000EFF240200020E000EA93C +:1093C000000000000A000F008F8600580E000D3FBD +:1093D00000000000241900022404001400002821C9 +:1093E0000000302100003821AF9900980E000D2FA9 +:1093F000000000000A000F008F8600580E000D5775 +:10940000000000008F8500942419000200403021E4 +:1094100024040010000038210A000F56AF9900986C +:109420000040382124040010970F0002000028217A +:109430000E000D2F31E6FFFF8F8600580A000F0047 +:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D +:109450008C8500182402000100A61824AC83001893 +:1094600003E00008A08200053084FFFF30A5FFFF65 +:109470001080000700001821308200011040000217 +:1094800000042042006518211480FFFB00052840DD +:1094900003E000080060102110C000070000000079 +:1094A0008CA2000024C6FFFF24A50004AC820000AB +:1094B00014C0FFFB2484000403E000080000000047 +:1094C00010A0000824A3FFFFAC86000000000000ED +:1094D000000000002402FFFF2463FFFF1462FFFA74 +:1094E0002484000403E0000800000000000411C010 +:1094F00003E000082442024027BDFFE8AFB000109F +:1095000000808021AFBF00140E000F9600A0202124 +:1095100000504821240AFF808FBF00148FB0001034 +:10952000012A30243127007F3C08800A3C042100B6 +:1095300000E8102100C428253C03800027BD001846 +:10954000AC650024AF820038AC400000AC6500245C +:1095500003E00008AC4000403C0D08008DAD005811 +:1095600000056180240AFF8001A45821016C482174 +:10957000012A30243127007F3C08800C3C04210064 +:1095800000E8102100C428253C038000AC650028B9 +:10959000AF82003403E00008AC40002430A5FFFF98 +:1095A0003C0680008CC201B80440FFFE3C086015F8 +:1095B00000A838253C031000ACC40180ACC0018475 +:1095C000ACC7018803E00008ACC301B83C0D08003B +:1095D0008DAD005800056180240AFF8001A4582148 +:1095E000016C4021010A4824000931403107007F05 +:1095F00000C728253C04200000A418253C02800058 +:10960000AC43083003E00008AF80003427BDFFE81A +:10961000AFB0001000808021AFBF00140E000F9685 +:1096200000A0202100504821240BFF80012B502452 +:10963000000A39403128007F3C0620008FBF00140B +:109640008FB0001000E8282534C2000100A21825C0 +:109650003C04800027BD0018AC83083003E00008FC +:10966000AF8000383C0580088CA700603C0680086D +:109670000087102B144000112C8340008CA8006040 +:109680002D0340001060000F240340008CC90060CF +:109690000089282B14A00002008018218CC30060D0 +:1096A00000035A42000B30803C0A0800254A59202A +:1096B00000CA202103E000088C8200001460FFF340 +:1096C0002403400000035A42000B30803C0A08008B +:1096D000254A592000CA202103E000088C8200009E +:1096E0003C05800890A60008938400AB24C20001CA +:1096F000304200FF3043007F1064000C0002382726 +:10970000A0A200083C0480008C85017804A0FFFE24 +:109710008F8A00A0240900023C081000AC8A014096 +:10972000A089014403E00008AC8801780A00101BFE +:1097300030E2008027BDFFD8AFB200188F9200A49E +:10974000AFBF0020AFB3001CAFB00010AFB100142A +:109750008F9300348E5900283C1000803C0EFFEFA0 +:10976000AE7900008E580024A260000A35CDFFFFBC +:10977000AE7800049251002C3C0BFF9F356AFFFF2E +:10978000A271000C8E6F000C3C080040A271000B0F +:1097900001F06025018D4824012A382400E8302595 +:1097A000AE66000C8E450004AE6000183C0400FF5D +:1097B000AE6500148E43002C3482FFFFA6600008C3 +:1097C0000062F824AE7F00108E5900088F9000A030 +:1097D000964E0012AE7900208E51000C31D83FFF1A +:1097E00000187980AE7100248E4D001401F06021C4 +:1097F00031CB0001AE6D00288E4A0018000C41C22A +:10980000000B4B80AE6A002C8E46001C01093821EB +:10981000A667001CAE660030964500028E4400200C +:10982000A665001EAE64003492430033306200042B +:1098300054400006924700003C0280083443010077 +:109840008C7F00D0AE7F0030924700008F860038BA +:10985000A0C700309245003330A4000250800007BA +:10986000925100018F880038240BFF80910A00304C +:10987000014B4825A1090030925100018F9000381A +:10988000240CFFBF2404FFDFA21100318F8D0038AC +:109890003C1880083711008091AF003C31EE007F0A +:1098A000A1AE003C8F890038912B003C016C502404 +:1098B000A12A003C8F9F00388E68001493E6003C7C +:1098C0002D0700010007114000C4282400A218251C +:1098D000A3E3003C8F87003896590012A4F90032A8 +:1098E0008E450004922E007C30B0000300107823D7 +:1098F00031ED000300AD102131CC000215800002D3 +:1099000024460034244600303C0280083443008062 +:10991000907F007C00BFC824333800041700000289 +:1099200024C2000400C010218F98003824190002BE +:10993000ACE20034A3190000924F003F8F8E003834 +:109940003C0C8008358B0080A1CF00018F9100383E +:10995000924D003F8E440004A62D0002956A005CE3 +:109960000E000FF43150FFFF00024B800209382532 +:109970003C08420000E82825AE2500048E4400384B +:109980008F850038ACA400188E460034ACA6001CAD +:10999000ACA0000CACA00010A4A00014A4A0001661 +:1099A000A4A00020A4A00022ACA000248E62001479 +:1099B00050400001240200018FBF00208FB3001C23 +:1099C0008FB200188FB100148FB00010ACA2000845 +:1099D0000A00101327BD002827BDFFC83C058008DA +:1099E00034A40080AFBF0034AFBE0030AFB7002C4E +:1099F000AFB60028AFB50024AFB40020AFB3001C51 +:109A0000AFB20018AFB10014AFB00010948300786B +:109A10009482007A104300512405FFFF0080F0215A +:109A20000A0011230080B821108B004D8FBF003435 +:109A30008F8600A03C1808008F18005C2411FF805E +:109A40003C1680000306782101F18024AED0002C62 +:109A500096EE007A31EC007F3C0D800E31CB7FFF1B +:109A6000018D5021000B4840012AA82196A4000036 +:109A70003C0808008D0800582405FF8030953FFF02 +:109A800001061821001539800067C8210325F82434 +:109A90003C02010003E290253338007F3C11800C2A +:109AA000AED20028031190219250000D320F000415 +:109AB00011E0003702E0982196E3007A96E8007AF8 +:109AC00096E5007A2404800031077FFF24E300013B +:109AD00030627FFF00A4F82403E2C825A6F9007ACB +:109AE00096E6007A3C1408008E94006030D67FFF22 +:109AF00012D400C1000000008E5800188F8400A00E +:109B000002A028212713FFFF0E000FCEAE53002C1A +:109B100097D5007897D4007A12950010000028217C +:109B20003C098008352401003C0A8008914800085F +:109B3000908700D53114007F30E400FF0284302B81 +:109B400014C0FFB9268B0001938E00AB268C000158 +:109B5000008E682115ACFFB78F8600A08FBF003440 +:109B60008FBE00308FB7002C8FB600288FB5002431 +:109B70008FB400208FB3001C8FB200188FB1001477 +:109B80008FB0001000A0102103E0000827BD0038AE +:109B900000C020210E000F99028028218E4B00105A +:109BA0008E4C00308F84003824090002016C502351 +:109BB000AE4A0010A089000096E3005C8E4400309D +:109BC0008F9100380E000FF43070FFFF00024380C9 +:109BD000020838253C02420000E22825AE25000498 +:109BE0008E5F00048F8A00388E590000240B000815 +:109BF000AD5F001CAD590018AD40000CAD40001029 +:109C00009246000A240400052408C00030D000FF5A +:109C1000A550001496580008A55800169251000A45 +:109C20003C188008322F00FFA54F0020964E0008F8 +:109C300037110100A54E0022AD400024924D000BCB +:109C400031AC00FFA54C0002A14B00018E49003051 +:109C50008F830038240BFFBFAC690008A06400307C +:109C60008F9000382403FFDF9607003200E8282495 +:109C700000B51025A6020032921F003233F9003FD2 +:109C800037260040A20600328F8C0038AD800034A9 +:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F +:109CA00031CD007FA18D003C8F84003835EEFFFF61 +:109CB000908A003C014B4824A089003C8F850038E5 +:109CC00090A8003C01033824A0A7003C8E42003439 +:109CD0008F9100383C038008AE2200408E59002C42 +:109CE0008E5F0030033F3023AE26004492300048A0 +:109CF0003218007FA23800488F8800388E4D00301F +:109D00008D0C004801AE582401965024014B482583 +:109D1000AD0900489244000AA104004C964700088F +:109D20008F850038A4A7004E8E5000308E4400303E +:109D30000E0003818C65006092F9007C0002F940FE +:109D4000004028210002110003E2302133360002D6 +:109D500012C00003020680210005B0800216802197 +:109D6000926D007C31B30004126000020005708027 +:109D7000020E80218E4B00308F8800382405800031 +:109D8000316A0003000A4823312400030204182129 +:109D9000AD03003496E4007A96F0007A96F1007AEA +:109DA00032027FFF2447000130FF7FFF0225C824D5 +:109DB000033F3025A6E6007A96F8007A3C120800A8 +:109DC0008E520060330F7FFF11F200180000000078 +:109DD0008F8400A00E000FCE02A028218F8400A047 +:109DE0000E000FDE028028210E001013000000007C +:109DF0000A00111F0000000096F1007A022480245E +:109E0000A6F0007A92EF007A92EB007A31EE00FF32 +:109E1000000E69C2000D6027000C51C03169007F3F +:109E2000012A20250A001119A2E4007A96E6007A98 +:109E300000C5C024A6F8007A92EF007A92F3007A67 +:109E400031F200FF001271C2000E6827000DB1C090 +:109E5000326C007F01962825A2E5007A0A0011D015 +:109E60008F8400A03C0380003084FFFF30A5FFFFFB +:109E7000AC640018AC65001C03E000088C620014A0 +:109E800027BDFFA03C068008AFBF005CAFBE0058F6 +:109E9000AFB70054AFB60050AFB5004CAFB40048F8 +:109EA000AFB30044AFB20040AFB1003CAFB0003838 +:109EB00034C80100910500D590C700083084FFFF29 +:109EC00030A500FF30E2007F0045182AAFA4001043 +:109ED000A7A00018A7A0002610600055AFA000148E +:109EE00090CA00083149007F00A9302324D3FFFF26 +:109EF0000013802B8FB400100014902B02128824C2 +:109F0000522000888FB300143C03800894790052DB +:109F1000947E00508FB60010033EC0230018BC0092 +:109F2000001714030016FC0002C2A82A16A00002A3 +:109F3000001F2C030040282100133C0000072403CD +:109F400000A4102A5440000100A020212885000907 +:109F500014A000020080A021241400083C0C8008FA +:109F60008D860048001459808D88004C3C03800089 +:109F70003169FFFF3C0A0010012A202534710400DA +:109F8000AC660038AF9100A4AC68003CAC64003013 +:109F900000000000000000000000000000000000C1 +:109FA00000000000000000000000000000000000B1 +:109FB0008C6E000031CD002011A0FFFD0014782A26 +:109FC00001F01024104000390000A8213C16800840 +:109FD00092D700083C1280008E44010032F6007FC8 +:109FE0000E000F9902C028218E3900108E44010006 +:109FF0000000902133373FFF0E000FB102E028210F +:10A00000923800003302003F2C500008520000102C +:10A0100000008821000210803C030800246358E4FB +:10A020000043F8218FFE000003C00008000000007C +:10A0300090CF0008938C00AB31EE007F00AE682318 +:10A04000018D58210A0012172573FFFF0000882197 +:10A050003C1E80008FC401000E000FCE02E02821BC +:10A060008FC401000E000FDE02C028211220000F55 +:10A070000013802B8F8B00A426A400010004AC00E9 +:10A08000027298230015AC032578004002B4B02A70 +:10A090000013802B241700010300882102D0102414 +:10A0A000AF9800A41440FFC9AFB700143C07800864 +:10A0B00094E200508FAE00103C05800002A288217F +:10A0C0003C060020A4F10050ACA6003094F40050EF +:10A0D00094EF005201D51823306CFFFF11F4001EDD +:10A0E000AFAC00108CEF004C001561808CF500487F +:10A0F00001EC28210000202100AC582B02A4C02133 +:10A10000030BB021ACE5004CACF600488FB4001056 +:10A110000014902B021288241620FF7C3C03800838 +:10A120008FB300148FBF005C8FBE00583A620001ED +:10A130008FB700548FB600508FB5004C8FB40048D5 +:10A140008FB300448FB200408FB1003C8FB0003815 +:10A1500003E0000827BD006094FE00548CF2004428 +:10A1600033C9FFFE0009C8C00259F821ACBF003C4A +:10A170008CE800448CAD003C010D50231940003B9D +:10A18000000000008CF7004026E20001ACA200387D +:10A190003C05005034A700103C038000AC67003041 +:10A1A00000000000000000000000000000000000AF +:10A1B000000000000000000000000000000000009F +:10A1C0008C7800003316002012C0FFFD3C1180087F +:10A1D000962200543C1580003C068008304E000159 +:10A1E000000E18C0007578218DEC04003C070800B3 +:10A1F0008CE700443C040020ACCC00488DF40404FF +:10A20000240B0001ACD4004C10EB0260AEA4003073 +:10A21000963900523C0508008CA5004000B99021F9 +:10A22000A6320052963F005427ED0001A62D00549F +:10A230009626005430C4FFFF5487FF2F8FB40010C0 +:10A2400030A5FFFF0E0011F4A62000543C070800C3 +:10A250008CE70024963E00520047B82303D74823DA +:10A26000A62900520A0012198FB400108CE2004097 +:10A270000A0012BE00000000922400012407000121 +:10A280003085007F14A7001C97AD00268E2B00148C +:10A29000240CC000316A3FFF01AC48243C06080092 +:10A2A0008CC60060012A402531043FFF0086882BC0 +:10A2B00012200011A7A800263C0508008CA5005814 +:10A2C0008F9100A0000439802402FF8000B1182182 +:10A2D0000067F82103E2F02433F8007F3C1280008D +:10A2E0003C19800EAE5E002C0319702191D0000D38 +:10A2F000360F0004A1CF000D0E001028241200011B +:10A30000241100013C1E80008FC401000E000FCEFE +:10A3100002E028218FC401000E000FDE02C02821B8 +:10A320001620FF558F8B00A40A0012860013802B85 +:10A330008F8600A490C80001310400201080019194 +:10A34000241000013C048008348B0080916A007C5A +:10A350008F9E0034AFA0002C314900011120000F66 +:10A36000AFB000288CCD00148C8E006001AE602B45 +:10A370001580000201A038218C8700603C188008FD +:10A38000370300808C70007000F0782B15E000021D +:10A3900000E020218C640070AFA4002C3C028008F7 +:10A3A000344500808CD200148CBF0070025FC82B33 +:10A3B00017200002024020218CA400708FA7002CDF +:10A3C0000087182310600003AFA3003024050002AB +:10A3D000AFA500288FA400280264882B162000BA9D +:10A3E000000018218CD000388FCE000C3C0F00806C +:10A3F000AFD000008CCD00343C0CFF9F01CF58251E +:10A40000AFCD000490CA003F3586FFFF01662024CF +:10A410003C0900203C08FFEFA3CA000B0089382547 +:10A420003511FFFF00F118243C0500088F8700A4B8 +:10A430000065C825AFD9000C8CE20014AFC000182D +:10A440008FA60030AFC200148CF800188FB0002C1B +:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A +:10A4600003326824AFCF00248CEC000C020670216C +:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B +:10A48000AFCC0020AFC000288CEA00148FAB002CAA +:10A49000014B48230126402311000011AFC80010D2 +:10A4A00090EB003D8FC900048FC80000000B5100E5 +:10A4B000012A28210000102100AA882B010218215E +:10A4C0000071F821AFC50004AFDF000090F2003D3D +:10A4D000A3D2000A8F9900A497380006A7D80008D5 +:10A4E0008F910038240800023C038008A228000055 +:10A4F0003465008094BF005C8FA4002C33F0FFFF14 +:10A500000E000FF48F9200380002CB808F8500A4DC +:10A51000021978253C18420001F87025AE4E00045F +:10A520008F8400388CAD0038AC8D00188CAC0034B2 +:10A53000AC8C001CAC80000CAC800010A48000141B +:10A54000A4800016A4800020A4800022AC800024F7 +:10A5500090A6003F8FA7002CA486000250E0019235 +:10A56000240700018FA200305040000290A2003D5D +:10A5700090A2003E244A0001A08A00018F84003886 +:10A580008FA9002CAC8900083C128008364D008051 +:10A5900091AC007C3186000214C000022407003414 +:10A5A000240700308F8500A43C198008373F0080C5 +:10A5B00090B0000093F9007C240E0004A0900030BD +:10A5C0008F8F00A48FB8002C8F8D003891F200017E +:10A5D0003304000301C46023A1B200318F8E003820 +:10A5E0008F8600A42402C00095CA003294C90012CC +:10A5F0008FAB002C0142402431233FFF010388250B +:10A60000A5D1003291D000323185000300EBF82152 +:10A610003218003F370F0040A1CF00328FA4002C2A +:10A6200003E5382133280004108000028F850038AC +:10A6300000E838213C0A8008ACA700343549010005 +:10A640008D2800D08FA3002C2419FFBFACA80038A0 +:10A6500090B1003C2C640001240FFFDF3227007F03 +:10A66000A0A7003C8F98003800049140931F003C45 +:10A6700003F98024A310003C8F8C0038918E003C9D +:10A6800001CF682401B23025A186003C8F8900A447 +:10A690008F8800388D2B0020AD0B00408D220024C8 +:10A6A000AD0200448D2A0028AD0A00488D23002CFD +:10A6B0000E001013AD03004C8FB1002824070002D8 +:10A6C000122700118FA300280003282B00058023E8 +:10A6D0000270982400608021006090210A00126FAF +:10A6E0000010882B962900128F8400A00000902172 +:10A6F0003125FFFFA7A900180E000FC22411000189 +:10A700000A00131D3C1E80003C0B80003C12800898 +:10A710008D640100924900088F92FF340E000F995A +:10A720003125007F8F9900388FA700288FA4003033 +:10A73000A3270000965F005C33F0FFFF0E000FF4CC +:10A740008F91003800026B80020D80253C0842008A +:10A750008F8D00A402085025AE2A00048DA5003874 +:10A760008F8A003800007821000F1100AD450018D5 +:10A770008DB800343C047FFF3488FFFFAD58001CC7 +:10A7800091A6003E8D4C001C8D4900180006190052 +:10A79000000677020183C821004E58250323882B29 +:10A7A000012B382100F1F821AD59001CAD5F0018D4 +:10A7B000AD40000CAD40001091B0003E8FA40030C1 +:10A7C00024090005A550001495A500042419C00013 +:10A7D00000884024A545001691B8003EA5580020E9 +:10A7E00095AF0004A54F0022AD40002491AE003F7C +:10A7F000A54E000291A6003E91AC003D01861023BB +:10A80000244B0001A14B00018F9100388FA3003031 +:10A810003C028008344B0100AE230008A22900301E +:10A820008F8C00388F8700A4959F003294F000121F +:10A830002407FFBF033FC02432053FFF03057825EF +:10A84000A58F0032918E00322418FFDF31CD003FFA +:10A8500035A60040A18600328F910038240DFFFFFD +:10A86000240CFF80AE2000348D6A00D0AE2A003860 +:10A870009223003C3069007FA229003C8F90003871 +:10A880003C0380009219003C0327F824A21F003CDF +:10A890008F8E003891C5003C00B87824A1CF003CD1 +:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA +:10A8B000AD46004491420048004C5825A14B004849 +:10A8C0008F9000388F9900A48E09004801238824B6 +:10A8D00002283825AE070048933F003EA21F004CD7 +:10A8E0008F9800A48F8F003897050004A5E5004ECF +:10A8F0000E0003818DC500609246007C8FAC003055 +:10A9000000026940000291000040282130CB000283 +:10A9100001B21021156000AA018230213C0E80088E +:10A9200035C20080904C007C31830004106000032D +:10A930008FB900300005788000CF3021241F00043B +:10A940008F910038332D000303ED8023320800037C +:10A9500000C85021AE2A00343C188000A7C500383A +:10A960003C0680088F04010090DE00080E000FDE18 +:10A9700033C5007F0E001013000000000A00140D04 +:10A980008FA300288F9800348CC90038241F00033F +:10A99000A7000008AF0900008CC50034A300000A1E +:10A9A0008F9900A4AF0500043C080080932D003F60 +:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D +:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E +:10A9D00003D170243646FFFF01C61824AF03000CD4 +:10A9E0008F2C0014972900128F8400A0AF0C001048 +:10A9F0008F2F0014AF000018AF000020AF0F00141D +:10AA0000AF0000248F270018312F3FFF000F59801F +:10AA1000AF0700288F2500080164F821312D0001BF +:10AA2000AF0500308F31000C8F920038001F51C2EB +:10AA3000000D438001481021241E00023C068008BE +:10AA4000A702001CA7000034AF11002CA25E00007A +:10AA500034D20080964E005C8F9900383C0342004F +:10AA600031CCFFFF01833825AF2700048F8B00A472 +:10AA7000240500012402C0008D640038240700343E +:10AA8000AF2400188D690034AF29001CAF20000CE2 +:10AA9000AF200010A7200014A7200016A720002038 +:10AAA000A7200022AF200024A7300002A325000128 +:10AAB0008F8800388F9F00A4AD10000893ED000030 +:10AAC000A10D00308F8A00A48F98003891510001A9 +:10AAD000A31100318F8B0038957E003203C27024A1 +:10AAE00001CF6025A56C0032916300323064003FD5 +:10AAF000A16400329249007C3125000214A00002BA +:10AB00008F840038240700303C198008AC8700345B +:10AB1000373201008E5F00D0240AFFBF020090216F +:10AB2000AC9F0038908D003C31A8007FA088003C8D +:10AB30008F9E003893C2003C004A8824A3D1003C79 +:10AB40008F8300380010882B9066003C34CE0020A4 +:10AB5000A06E003C8F8400A48F9800388C8C00205D +:10AB6000AF0C00408C8F0024AF0F00448C8700286E +:10AB7000AF0700488C8B002CAF0B004C0E0010135D +:10AB80003C1E80000A0012700000000094C80052B1 +:10AB90003C0A08008D4A002401488821A4D10052B3 +:10ABA0000A0012198FB40010A08700018F840038AA +:10ABB000240B0001AC8B00080A0013BE3C12800875 +:10ABC000000520800A0014A200C4302127BDFFE048 +:10ABD0003C0D8008AFB20018AFB00010AFBF001C32 +:10ABE000AFB1001435B200808E4C001835A80100BA +:10ABF000964B000695A70050910900FC000C5602E8 +:10AC0000016728233143007F312600FF240200031F +:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC +:10AC2000910600FC2412000530C200FF10520033D0 +:10AC300000000000160000098FBF001C8FB2001832 +:10AC40008FB100148FB00010240D0C003C0C80005C +:10AC500027BD002003E00008AD8D00240E0011FB8D +:10AC6000020020218FBF001C8FB200188FB100148A +:10AC70008FB00010240D0C003C0C800027BD00207C +:10AC800003E00008AD8D0024965800789651007AB4 +:10AC9000924E007D0238782631E8FFFF31C400C0B3 +:10ACA000148000092D11000116000037000000007B +:10ACB0005620FFE28FBF001C0E0010D100000000E4 +:10ACC0000A00156A8FBF001C1620FFDA0000000082 +:10ACD0000E0010D1000000001440FFD88FBF001CF0 +:10ACE0001600002200000000925F007D33E2003F6A +:10ACF000A242007D0A00156A8FBF001C950900EA78 +:10AD00008F86008000802821240400050E0007257E +:10AD10003130FFFF978300923C0480002465FFFFE1 +:10AD2000A78500928C8A01B80540FFFE0000000054 +:10AD3000AC8001808FBF001CAC9001848FB20018E2 +:10AD40008FB100148FB000103C0760133C0B100053 +:10AD5000240D0C003C0C800027BD0020AC8701882E +:10AD6000AC8B01B803E00008AD8D00240E0011FB90 +:10AD7000020020215040FFB18FBF001C925F007D78 +:10AD80000A00159733E2003F0E0011FB020020215C +:10AD90001440FFAA8FBF001C122000070000000013 +:10ADA0009259007D3330003F36020040A242007DC0 +:10ADB0000A00156A8FBF001C0E0010D100000000B1 +:10ADC0005040FF9E8FBF001C9259007D3330003FE2 +:10ADD0000A0015C636020040000000000000001BFB +:10ADE0000000000F0000000A00000008000000063C +:10ADF0000000000500000005000000040000000441 +:10AE00000000000300000003000000030000000336 +:10AE10000000000300000002000000020000000229 +:10AE2000000000020000000200000002000000021A +:10AE3000000000020000000200000002000000020A +:10AE400000000002000000020000000200000002FA +:10AE50000000000100000001000000018008010066 +:10AE6000800800808008000000000C000000308096 +:10AE7000080011D00800127C08001294080012A8E3 +:10AE8000080012BC080011D0080011D0080012F010 +:10AE90000800132C080013400800138808001A8CBF +:10AEA00008001A8C08001AC408001AC408001AD82E +:10AEB00008001AA808001D0008001CCC08001D5836 +:10AEC00008001D5808001DE008001D108008024001 +:10AED000080027340800256C0800275C080027F4C8 +:10AEE0000800293C0800298808002AAC080029B479 +:10AEF00008002A38080025DC08002EDC08002EA4F3 +:10AF000008002588080025880800258808002B20CF +:10AF100008002B20080025880800258808002DD06F +:10AF2000080025880800258808002588080025884D +:10AF300008002E0C080025880800258808002588B0 +:10AF4000080025880800258808002588080025882D +:10AF5000080025880800258808002588080025881D +:10AF6000080025880800258808002588080029A8E9 +:10AF7000080025880800258808002E680800258814 +:10AF800008002588080025880800258808002588ED +:10AF900008002588080025880800258808002588DD +:10AFA00008002588080025880800258808002588CD +:10AFB00008002588080025880800258808002588BD +:10AFC00008002CF4080025880800258808002C6853 +:10AFD00008002BC408003CE408003CB808003C848E +:10AFE00008003C5808003C3808003BEC8008010091 +:10AFF00080080080800800008008008008004C6401 +:10B0000008004C9C08004BE408004C6408004C64A9 +:10B01000080049B808004C64080050500A000C842D +:10B0200000000000000000000000000D7278703683 +:10B030002E322E31620000000602010300000000E3 +:10B0400000000001000000000000000000000000FF +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000000000000000000000008B +:10D5A000000000000000000000000000000000007B +:10D5B000000000000000000000000000000000006B +:10D5C000000000000000000000000000000000005B +:10D5D000000000000000000000000000000000004B +:10D5E000000000000000000000000000000000003B +:10D5F000000000000000000000000000000000002B +:10D60000000000000000000000000000000000001A +:10D61000000000000000000000000000000000000A +:10D6200000000000000000000000000000000000FA +:10D6300000000000000000000000000000000000EA +:10D6400000000000000000000000000000000000DA +:10D6500000000000000000000000000000000000CA +:10D6600000000000000000000000000000000000BA +:10D6700000000000000000000000000000000000AA +:10D68000000000000000000000000000000000009A +:10D69000000000000000000000000000000000008A +:10D6A000000000000000000000000000000000007A +:10D6B000000000000000000000000000000000006A +:10D6C000000000000000000000000000000000005A +:10D6D000000000000000000000000000000000004A +:10D6E000000000000000000000000000000000003A +:10D6F000000000000000000000000000000000002A +:10D700000000000000000000000000000000000019 +:10D710000000000000000000000000000000000009 +:10D7200000000000000000000000000000000000F9 +:10D7300000000000000000000000000000000000E9 +:10D7400000000000000000000000000000000000D9 +:10D7500000000000000000000000000000000000C9 +:10D7600000000000000000000000000000000000B9 +:10D7700000000000000000000000000000000000A9 +:10D780000000000000000000000000000000000099 +:10D790000000000000000000000000000000000089 +:10D7A0000000000000000000000000000000000079 +:10D7B0000000000000000000000000000000000069 +:10D7C0000000000000000000000000000000000059 +:10D7D0000000000000000000000000000000000049 +:10D7E0000000000000000000000000000000000039 +:10D7F0000000000000000000000000000000000029 +:10D800000000000000000000000000000000000018 +:10D810000000000000000000000000000000000008 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000000000000E8 +:10D8400000000000000000000000000000000000D8 +:10D8500000000000000000000000000000000000C8 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D880000000000000000000000000000000000098 +:10D890000000000000000000000000000000000088 +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0000000000000000000000000000000000058 +:10D8D0000000000000000000000000000000000048 +:10D8E0000000000000000000000000000000000038 +:10D8F0000000000000000000000000000000000028 +:10D900000000000000000000000000000000000017 +:10D910000000000000000000000000000000000007 +:10D9200000000000000000000000000000000000F7 +:10D9300000000000000000000000000000000000E7 +:10D9400000000000000000000000000000000000D7 +:10D9500000000000000000000000000000000000C7 +:10D9600000000000000000000000000000000000B7 +:10D9700000000000000000000000000000000000A7 +:10D980000000000000000000000000000000000097 +:10D990000000000000000000000000000000000087 +:10D9A0000000000000000000000000000000000077 +:10D9B0000000000000000000000000000000000067 +:10D9C0000000000000000000000000000000000057 +:10D9D0000000000000000000000000000000000047 +:10D9E0000000000000000000000000000000000037 +:10D9F0000000000000000000000000000000000027 +:10DA00000000000000000000000000000000000016 +:10DA10000000000000000000000000000000000006 +:10DA200000000000000000000000000000000000F6 +:10DA300000000000000000000000000000000000E6 +:10DA400000000000000000000000000000000000D6 +:10DA500000000000000000000000000000000000C6 +:10DA600000000000000000000000000000000000B6 +:10DA700000000000000000000000000000000000A6 +:10DA80000000000000000000000000000000000096 +:10DA90000000000000000000000000000000000086 +:10DAA0000000000000000000000000000000000076 +:10DAB0000000000000000000000000000000000066 +:10DAC0000000000000000000000000000000000056 +:10DAD0000000000000000000000000000000000046 +:10DAE0000000000000000000000000000000000036 +:10DAF0000000000000000000000000000000000026 +:10DB00000000000000000000000000000000000015 +:10DB10000000000000000000000000000000000005 +:10DB200000000000000000000000000000000000F5 +:10DB300000000000000000000000000000000000E5 +:10DB400000000000000000000000000000000000D5 +:10DB500000000000000000000000000000000000C5 +:10DB600000000000000000000000000000000000B5 +:10DB700000000000000000000000000000000000A5 +:10DB80000000000000000000000000000000000095 +:10DB90000000000000000000000000000000000085 +:10DBA0000000000000000000000000000000000075 +:10DBB0000000000000000000000000000000000065 +:10DBC0000000000000000000000000000000000055 +:10DBD0000000000000000000000000000000000045 +:10DBE0000000000000000000000000000000000035 +:10DBF0000000000000000000000000000000000025 +:10DC00000000000000000000000000000000000014 +:10DC10000000000000000000000000000000000004 +:10DC200000000000000000000000000000000000F4 +:10DC300000000000000000000000000000000000E4 +:10DC400000000000000000000000000000000000D4 +:10DC500000000000000000000000000000000000C4 +:10DC600000000000000000000000000000000000B4 +:10DC700000000000000000000000000000000000A4 +:10DC80000000000000000000000000000000000094 +:10DC90000000000000000000000000000000000084 +:10DCA0000000000000000000000000000000000074 +:10DCB0000000000000000000000000000000000064 +:10DCC0000000000000000000000000000000000054 +:10DCD0000000000000000000000000000000000044 +:10DCE0000000000000000000000000000000000034 +:10DCF0000000000000000000000000000000000024 +:10DD00000000000000000000000000000000000013 +:10DD10000000000000000000000000000000000003 +:10DD200000000000000000000000000000000000F3 +:10DD300000000000000000000000000000000000E3 +:10DD400000000000000000000000000000000000D3 +:10DD500000000000000000000000000000000000C3 +:10DD600000000000000000000000000000000000B3 +:10DD700000000000000000000000000000000000A3 +:10DD80000000000000000000000000000000000093 +:10DD90000000000000000000000000000000000083 +:10DDA0000000000000000000000000000000000073 +:10DDB0000000000000000000000000000000000063 +:10DDC0000000000000000000000000000000000053 +:10DDD0000000000000000000000000000000000043 +:10DDE0000000000000000000000000000000000033 +:10DDF0000000000000000000000000000000000023 +:10DE00000000000000000000000000000000000012 +:10DE10000000000000000000000000000000000002 +:10DE200000000000000000000000000000000000F2 +:10DE300000000000000000000000000000000000E2 +:10DE400000000000000000000000000000000000D2 +:10DE500000000000000000000000000000000000C2 +:10DE600000000000000000000000000000000000B2 +:10DE700000000000000000000000000000000000A2 +:10DE80000000000000000000000000000000000092 +:10DE90000000000000000000000000000000000082 +:10DEA0000000000000000000000000000000000072 +:10DEB0000000000000000000000000000000000062 +:10DEC0000000000000000000000000000000000052 +:10DED0000000000000000000000000000000000042 +:10DEE0000000000000000000000000000000000032 +:10DEF0000000000000000000000000000000000022 +:10DF00000000000000000000000000000000000011 +:10DF10000000000000000000000000000000000001 +:10DF200000000000000000000000000000000000F1 +:10DF300000000000000000000000000000000000E1 +:10DF400000000000000000000000000000000000D1 +:10DF500000000000000000000000000000000000C1 +:10DF600000000000000000000000000000000000B1 +:10DF700000000000000000000000000000000000A1 +:10DF80000000000000000000000000000000000091 +:10DF90000000000000000000000000000000000081 +:10DFA0000000000000000000000000000000000071 +:10DFB0000000000000000000000000000000000061 +:10DFC0000000000000000000000000000000000051 +:10DFD0000000000000000000000000000000000041 +:10DFE0000000000000000000000000000000000031 +:10DFF0000000000000000000000000000000000021 +:10E000000000000000000000000000000000000010 +:10E010000000000000000000000000000000000000 +:10E0200000000000000000000000000000000000F0 +:10E0300000000000000000000000000000000000E0 +:10E0400000000000000000000000000000000000D0 +:10E0500000000000000000000000000000000000C0 +:10E0600000000000000000000000000000000000B0 +:10E0700000000000000000000000000000000000A0 +:10E080000000000000000000000000000000000090 +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000000000000000000000000000060 +:10E0C0000000000000000000000000000000000050 +:10E0D0000000000000000000000000000000000040 +:10E0E0000000000000000000000000000000000030 +:10E0F0000000000000000000000000000000000020 +:10E10000000000000000000000000000000000000F +:10E1100000000000000000000000000000000000FF +:10E1200000000000000000000000000000000000EF +:10E1300000000000000000000000000000000000DF +:10E1400000000000000000000000000000000000CF +:10E1500000000000000000000000000000000000BF +:10E1600000000000000000000000000000000000AF +:10E17000000000000000000000000000000000009F +:10E18000000000000000000000000000000000008F +:10E19000000000000000000000000000000000007F +:10E1A000000000000000000000000000000000006F +:10E1B000000000000000000000000000000000005F +:10E1C000000000000000000000000000000000004F +:10E1D000000000000000000000000000000000003F +:10E1E000000000000000000000000000000000002F +:10E1F000000000000000000000000000000000809F +:10E20000000000000000000000000000000000000E +:10E2100000000000000000000000000000000000FE +:10E220000000000A000000000000000000000000E4 +:10E2300010000003000000000000000D0000000DB1 +:10E240003C020801244295C03C030801246397FC6A +:10E25000AC4000000043202B1480FFFD244200044A +:10E260003C1D080037BD9FFC03A0F0213C100800B6 +:10E27000261032103C1C0801279C95C00E0012BECF +:10E28000000000000000000D3C02800030A5FFFFF0 +:10E2900030C600FF344301803C0880008D0901B87E +:10E2A0000520FFFE00000000AC6400002404000212 +:10E2B000A4650008A066000AA064000BAC67001803 +:10E2C0003C03100003E00008AD0301B83C0560000A +:10E2D0008CA24FF80440FFFE00000000ACA44FC029 +:10E2E0003C0310003C040200ACA44FC403E000084F +:10E2F000ACA34FF89486000C00A050212488001491 +:10E3000000062B0200051080004448210109182B4B +:10E310001060001100000000910300002C6400094F +:10E320005080000991190001000360803C0D080134 +:10E3300025AD9258018D58218D67000000E000083E +:10E340000000000091190001011940210109302B42 +:10E3500054C0FFF29103000003E000080000102108 +:10E360000A000CCC25080001910F0001240E000AC0 +:10E3700015EE00400128C8232F38000A1700003D81 +:10E38000250D00028D580000250F0006370E0100F4 +:10E39000AD4E0000910C000291AB000191A400026F +:10E3A00091A60003000C2E00000B3C0000A71025D6 +:10E3B00000041A000043C8250326C025AD580004F8 +:10E3C000910E000691ED000191E7000291E5000336 +:10E3D000000E5E00000D6400016C30250007220075 +:10E3E00000C41025004518252508000A0A000CCC99 +:10E3F000AD430008910F000125040002240800022B +:10E4000055E80001012020210A000CCC00804021A9 +:10E41000910C0001240B0003158B00160000000076 +:10E420008D580000910E000225080003370D0008EA +:10E43000A14E00100A000CCCAD4D00009119000156 +:10E44000240F0004172F000B0000000091070002AA +:10E45000910400038D43000000072A0000A410254A +:10E460003466000425080004AD42000C0A000CCC00 +:10E47000AD46000003E000082402000127BDFFE8CC +:10E48000AFBF0014AFB000100E00164E0080802108 +:10E490003C0480083485008090A600052403FFFE1C +:10E4A0000200202100C310248FBF00148FB0001081 +:10E4B000A0A200050A00165827BD001827BDFFE8D6 +:10E4C000AFB00010AFBF00140E000FD40080802149 +:10E4D0003C06800834C5008090A40000240200504F +:10E4E000308300FF106200073C09800002002021F9 +:10E4F0008FBF00148FB00010AD2001800A00108F74 +:10E5000027BD0018240801003C07800002002021DC +:10E510008FBF00148FB00010ACE801800A00108F8C +:10E5200027BD001827BDFF783C058008AFBE0080DE +:10E53000AFB7007CAFB3006CAFB10064AFBF008475 +:10E54000AFB60078AFB50074AFB40070AFB200687A +:10E55000AFB0006034A600803C0580008CB201287A +:10E5600090C400098CA701043C020001309100FF17 +:10E5700000E218240000B8210000F021106000071C +:10E58000000098213C0908008D2931F02413000176 +:10E59000252800013C010800AC2831F0ACA0008423 +:10E5A00090CC0005000C5827316A0001154000721C +:10E5B000AFA0005090CD00002406002031A400FF41 +:10E5C00010860018240E0050108E009300000000EA +:10E5D0003C1008008E1000DC260F00013C010800F2 +:10E5E000AC2F00DC0E0016C7000000000040182110 +:10E5F0008FBF00848FBE00808FB7007C8FB60078FD +:10E600008FB500748FB400708FB3006C8FB2006848 +:10E610008FB100648FB000600060102103E000083B +:10E6200027BD00880000000D3C1F8000AFA0003017 +:10E6300097E501168FE201043C04002030B9FFFF8A +:10E64000004438240007182B00033140AFA60030E7 +:10E650008FF5010437F80C003C1600400338802188 +:10E6600002B6A02434C40040128000479215000D69 +:10E6700032A800201500000234860080008030217E +:10E6800014C0009FAFA600303C0D800835A6008066 +:10E6900090CC0008318B0040516000063C06800899 +:10E6A000240E0004122E00A8240F0012122F003294 +:10E6B0003C06800834C401003C0280009447011AE3 +:10E6C0009619000E909F00088E18000830E3FFFF97 +:10E6D00003F9B00432B40004AFB6005CAFA3005835 +:10E6E0008E1600041280002EAFB8005434C3008090 +:10E6F000906800083105004014A0002500000000CB +:10E700008C70005002D090230640000500000000ED +:10E710008C71003402D1A82306A201678EE20008A2 +:10E72000126000063C1280003C1508008EB531F4E2 +:10E7300026B600013C010800AC3631F4AE4000447E +:10E74000240300018FBF00848FBE00808FB7007C40 +:10E750008FB600788FB500748FB400708FB3006CE3 +:10E760008FB200688FB100648FB00060006010212C +:10E7700003E0000827BD00880E000D2800002021BE +:10E780000A000D75004018210A000D9500C02021D7 +:10E790000E00171702C020211440FFE10000000006 +:10E7A0003C0B8008356400808C8A003402CA482300 +:10E7B0000520001D000000003C1E08008FDE310017 +:10E7C00027D700013C010800AC3731001260000679 +:10E7D000024020213C1408008E9431F42690000160 +:10E7E0003C010800AC3031F40E00164E3C1E80088F +:10E7F00037CD008091B700250240202136EE00047D +:10E800000E001658A1AE00250E000CAC02402021CF +:10E810000A000DCA240300013C17080126F796C020 +:10E820000A000D843C1F80008C86003002C66023E5 +:10E830001980000C2419000C908F004F3C14080024 +:10E840008E94310032B500FC35ED0001268E0001BA +:10E850003C010800AC2E3100A08D004FAFA0005845 +:10E860002419000CAFB900308C9800300316A02397 +:10E870001A80010B8FA300580074F82A17E0FFD309 +:10E88000000000001074002A8FA5005802D4B021A7 +:10E8900000B410233044FFFFAFA4005832A8000298 +:10E8A0001100002E32AB00103C15800836B00080FD +:10E8B0009216000832D30040526000FB8EE200083E +:10E8C0000E00164E02402021240A0018A20A000958 +:10E8D000921100052409FFFE024020210229902404 +:10E8E0000E001658A2120005240400390000282149 +:10E8F0000E0016F2240600180A000DCA24030001B7 +:10E9000092FE000C3C0A800835490080001EBB00C6 +:10E910008D27003836F10081024020213225F08118 +:10E920000E000C9B30C600FF0A000DC10000000065 +:10E930003AA7000130E300011460FFA402D4B02123 +:10E940000A000E1D00000000024020210E001734B6 +:10E95000020028210A000D75004018211160FF7087 +:10E960003C0F80083C0D800835EE00808DC40038D7 +:10E970008FA300548DA60004006660231D80FF68ED +:10E98000000000000064C02307020001AFA400548F +:10E990003C1F08008FFF31E433F9000113200015FC +:10E9A0008FAC00583C07800094E3011A10600012FD +:10E9B0003C0680080E00216A024020213C03080129 +:10E9C000906396F13064000214800145000000005D +:10E9D000306C0004118000078FAC0058306600FBDB +:10E9E0003C010801A02696F132B500FCAFA000580A +:10E9F0008FAC00583C06800834D30080AFB40018B8 +:10EA0000AFB60010AFAC00143C088000950B01209D +:10EA10008E6F0030966A005C8FA3005C8FBF003061 +:10EA20003169FFFF3144FFFF8FAE005401341021E4 +:10EA3000350540000064382B0045C82103E7C02598 +:10EA4000AFB90020AFAF0028AFB80030AFAF00249F +:10EA5000AFA0002CAFAE0034926D000831B40008B6 +:10EA6000168000BB020020218EE200040040F8095D +:10EA700027A400108FAF003031F300025660000170 +:10EA800032B500FE3C048008349F008093F90008F2 +:10EA900033380040530000138FA400248C850004F9 +:10EAA0008FA7005410A700D52404001432B0000131 +:10EAB0001200000C8FA400242414000C1234011A3C +:10EAC0002A2D000D11A001022413000E240E000AAD +:10EAD000522E0001241E00088FAF002425E40001FF +:10EAE000AFA400248FAA00143C0B80083565008079 +:10EAF000008A48218CB10030ACA9003090A4004EAF +:10EB00008CA700303408FFFF0088180400E3F821C8 +:10EB1000ACBF00348FA600308FB900548FB8005CB2 +:10EB200030C200081040000B033898218CAC002044 +:10EB3000119300D330C600FF92EE000C8FA7003473 +:10EB400002402021000E6B0035B400800E000C9BAB +:10EB50003285F0803C028008345000808E0F0030F7 +:10EB600001F1302318C00097264800803C070800B8 +:10EB70008CE731E42404FF80010418243118007F5D +:10EB80003C1F80003C19800430F10001AFE300908D +:10EB900012200006031928213C030801906396F116 +:10EBA00030690008152000C6306A00F73C10800864 +:10EBB00036040080908C004F318B000115600042BC +:10EBC000000000003C0608008CC6319830CE0010D2 +:10EBD00051C0004230F9000190AF006B55E0003F9A +:10EBE00030F9000124180001A0B8006B3C1180002E +:10EBF0009622007A24470064A48700123C0D800806 +:10EC000035A5008090B40008329000401600000442 +:10EC10003C03800832AE000115C0008B00000000EC +:10EC2000346400808C86002010D3000A3463010015 +:10EC30008C67000002C7782319E000978FBF00544B +:10EC4000AC93002024130001AC760000AFB3005059 +:10EC5000AC7F000417C0004E000000008FA90050D8 +:10EC60001520000B000000003C030801906396F1A2 +:10EC7000306A00011140002E8FAB0058306400FE56 +:10EC80003C010801A02496F10A000D75000018212E +:10EC90000E000CAC024020210A000F1300000000FF +:10ECA0000A000E200000A0210040F80924040017EB +:10ECB0000A000DCA240300010040F80924040016CC +:10ECC0000A000DCA240300019094004F240DFFFE9A +:10ECD000028D2824A085004F30F900011320000682 +:10ECE0003C0480083C030801906396F1307F0010DB +:10ECF00017E00051306800EF34900080240A0001D2 +:10ED0000024020210E00164EA60A00129203002592 +:10ED100024090001AFA90050346200010240202103 +:10ED20000E001658A20200250A000EF93C0D8008BC +:10ED30001160FE83000018218FA5003030AC000464 +:10ED40001180FE2C8FBF00840A000DCB240300012C +:10ED500027A500380E000CB6AFA000385440FF4382 +:10ED60008EE200048FB40038329001005200FF3F61 +:10ED70008EE200048FA3003C8E6E0058006E682364 +:10ED800005A3FF39AE6300580A000E948EE200041A +:10ED90000E00164E024020213C038008346800809B +:10EDA000024020210E001658A11E000903C0302188 +:10EDB000240400370E0016F2000028210A000F116B +:10EDC0008FA900508FAB00185960FF8D3C0D800853 +:10EDD0000E00164E02402021920C00252405000151 +:10EDE000AFA5005035820004024020210E001658C5 +:10EDF000A20200250A000EF93C0D800812240059D9 +:10EE00002A2300151060004D240900162408000C68 +:10EE10005628FF2732B000013C0A8008914C001BA5 +:10EE20002406FFBD241E000E01865824A14B001BA2 +:10EE30000A000EA532B000013C010801A02896F19D +:10EE40000A000EF93C0D80088CB500308EFE0008DB +:10EE50002404001826B6000103C0F809ACB600303F +:10EE60003C030801906396F13077000116E0FF81C2 +:10EE7000306A00018FB200300A000D753243000481 +:10EE80003C1080009605011A50A0FF2B34C60010DC +:10EE90000A000EC892EE000C8C6200001456FF6D42 +:10EEA000000000008C7800048FB9005403388823D8 +:10EEB0000621FF638FBF00540A000F0E0000000000 +:10EEC0003C010801A02A96F10A000F3030F9000138 +:10EED0001633FF028FAF00240A000EB0241E00106C +:10EEE0000E00164E024020213C0B80083568008041 +:10EEF00091090025240A0001AFAA0050353300040F +:10EF0000024020210E001658A11300253C050801DF +:10EF100090A596F130A200FD3C010801A02296F1D7 +:10EF20000A000E6D004018212411000E53D1FEEA94 +:10EF3000241E00100A000EAF241E00165629FEDC07 +:10EF400032B000013C0A8008914C001B2406FFBD32 +:10EF5000241E001001865824A14B001B0A000EA598 +:10EF600032B000010A000EA4241E00123C038000EF +:10EF70008C6201B80440FFFE24040800AC6401B8B0 +:10EF800003E000080000000030A5FFFF30C6FFFFCF +:10EF90003C0780008CE201B80440FFFE34EA0180A7 +:10EFA000AD440000ACE400203C0480089483004899 +:10EFB0003068FFFF11000016AF88000824AB001274 +:10EFC000010B482B512000133C04800034EF01005A +:10EFD00095EE00208F890000240D001A31CCFFFF30 +:10EFE00031274000A14D000B10E000362583FFFEC5 +:10EFF0000103C02B170000348F9900048F88000490 +:10F00000A5430014350700010A001003AF87000470 +:10F010003C04800024030003348201808F890000B7 +:10F020008F870004A043000B3C088000350C018052 +:10F03000A585000EA585001A8F85000C30EB800099 +:10F04000A5890010AD850028A58600081160000F75 +:10F050008F85001435190100972A00163158FFFCDE +:10F06000270F000401E870218DCD400031A6FFFF7D +:10F0700014C000072403BFFF3C02FFFF34487FFF9A +:10F0800000E83824AF8700048F8500142403BFFFF5 +:10F090003C04800000E3582434830180A46B0026E4 +:10F0A000AC69002C10A0000300054C02A465001000 +:10F0B000A46900263C071000AC8701B803E00008F3 +:10F0C000000000008F990004240AFFFE032A382460 +:10F0D0000A001003AF87000427BDFFE88FA20028B5 +:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99 +:10F0F000AF820014AF8000040E000FDBAF80000071 +:10F100008FBF001027BD001803E00008AF80001477 +:10F110003C06800034C4007034C701008C8A0000B3 +:10F1200090E500128F84000027BDFFF030A300FFA0 +:10F13000000318823082400010400037246500032D +:10F140000005C8800326C0218F0E4000246F0004F4 +:10F15000000F6880AFAE000001A660218D8B4000DB +:10F16000AFAB000494E900163128FFFC01063821FA +:10F170008CE64000AFA600088FA9000800003021EF +:10F18000000028213C07080024E701000A0010675E +:10F19000240800089059000024A500012CAC000CA4 +:10F1A0000079C0210018788001E770218DCD000022 +:10F1B0001180000600CD302603A5102114A8FFF50C +:10F1C00000051A005520FFF4905900003C0480000F +:10F1D000348700703C0508008CA531048CE30000E6 +:10F1E0002CA2002010400009006A38230005488046 +:10F1F0003C0B0800256B3108012B402124AA00019B +:10F20000AD0700003C010800AC2A310400C0102109 +:10F2100003E0000827BD0010308220001040000BE2 +:10F2200000055880016648218D24400024680004B0 +:10F2300000083880AFA4000000E618218C6540006B +:10F24000AFA000080A001057AFA500040000000D91 +:10F250000A0010588FA9000827BDFFE03C07800076 +:10F2600034E60100AFBF001CAFB20018AFB100140C +:10F27000AFB0001094C5000E8F87000030A4FFFFD0 +:10F280002483000430E2400010400010AF830028C7 +:10F290003C09002000E940241100000D30EC800002 +:10F2A0008F8A0004240BBFFF00EB38243543100085 +:10F2B000AF87000030F220001640000B3C1900041C +:10F2C000241FFFBF0A0010B7007F102430EC80001D +:10F2D000158000423C0E002030F220001240FFF862 +:10F2E0008F8300043C19000400F9C0241300FFF5CB +:10F2F000241FFFBF34620040AF82000430E20100EF +:10F300001040001130F010008F83002C10600006B8 +:10F310003C0F80003C05002000E52024148000C044 +:10F320003C0800043C0F800035EE010095CD001E26 +:10F3300095CC001C31AAFFFF000C5C00014B482556 +:10F34000AF89000C30F010001200000824110001F9 +:10F3500030F100201620008B3C18100000F890249B +:10F36000164000823C040C002411000130E801002A +:10F370001500000B3C0900018F85000430A94000F6 +:10F38000152000073C0900013C0C1F0100EC58242B +:10F390003C0A1000116A01183C1080003C09000171 +:10F3A00000E9302410C000173C0B10003C18080086 +:10F3B0008F1800243307000214E0014024030001E9 +:10F3C0008FBF001C8FB200188FB100148FB00010D7 +:10F3D0000060102103E0000827BD002000EE682433 +:10F3E00011A0FFBE30F220008F8F00043C11FFFF00 +:10F3F00036307FFF00F0382435E380000A0010A685 +:10F40000AF87000000EB102450400065AF8000245F +:10F410008F8C002C3C0D0F0000ED18241580008807 +:10F42000AF83001030E8010011000086938F0010B8 +:10F430003C0A0200106A00833C1280003650010032 +:10F44000920500139789002A3626000230AF00FF8C +:10F4500025EE0004000E19C03C0480008C9801B811 +:10F460000700FFFE34880180AD0300003C198008CE +:10F47000AC830020973100483225FFFF10A0015CCB +:10F48000AF8500082523001200A3F82B53E0015993 +:10F490008F850004348D010095AC00202402001AF1 +:10F4A00030E44000318BFFFFA102000B108001927D +:10F4B0002563FFFE00A3502B154001908F8F0004A1 +:10F4C000A50300148F88000435050001AF850004F2 +:10F4D0003C08800035190180A729000EA729001AD1 +:10F4E0008F89000C30B18000A7270010AF290028B9 +:10F4F000A72600081220000E3C04800035020100FF +:10F50000944C0016318BFFFC256400040088182100 +:10F510008C7F400033E6FFFF14C000053C048000F0 +:10F520003C0AFFFF354D7FFF00AD2824AF85000466 +:10F53000240EBFFF00AE402434850180A4A800261D +:10F54000ACA7002C3C071000AC8701B800001821C4 +:10F550008FBF001C8FB200188FB100148FB0001045 +:10F560000060102103E0000827BD00203C020BFFD3 +:10F5700000E41824345FFFFF03E3C82B5320FF7B14 +:10F58000241100013C0608008CC6002C24C5000193 +:10F590003C010800AC25002C0A0010D42411000501 +:10F5A0008F85002410A0002FAF80001090A30000D2 +:10F5B000146000792419000310A0002A30E601002D +:10F5C00010C000CC8F860010241F000210DF00C97D +:10F5D0008F8B000C3C0708008CE7003824E4FFFF09 +:10F5E00014E0000201641824000018213C0D0800FA +:10F5F00025AD0038006D1021904C00048F85002847 +:10F6000025830004000321C030A5FFFF3626000239 +:10F610000E000FDB000000000A00114D0000182151 +:10F6200000E8302414C0FF403C0F80000E00103D65 +:10F63000000000008F8700000A0010CAAF82000C93 +:10F64000938F00103C18080127189640000F90C0B7 +:10F6500002588021AF9000248F85002414A0FFD38E +:10F66000AF8F00103C0480008C86400030C5010044 +:10F6700010A000BC322300043C0C08008D8C002438 +:10F6800024120004106000C23190000D3C04800080 +:10F690008C8D40003402FFFF11A201003231FFFBCC +:10F6A0008C884000310A01005540000124110010EF +:10F6B00030EE080011C000BE2419FFFB8F9800280F +:10F6C0002F0F03EF51E000010219802430E90100FF +:10F6D00011200014320800018F87002C14E000FB79 +:10F6E0008F8C000C3C05800034AB0100917F00132F +:10F6F00033E300FF246A00042403FFFE0203802496 +:10F70000000A21C012000002023230253226FFFF1B +:10F710000E000FDB9785002A1200FF290000182138 +:10F72000320800011100000D32180004240E0001FF +:10F73000120E0002023230253226FFFF9785002A82 +:10F740000E000FDB00002021240FFFFE020F80249B +:10F750001200FF1B00001821321800045300FF188C +:10F760002403000102323025241200045612000145 +:10F770003226FFFF9785002A0E000FDB24040100CC +:10F780002419FFFB021988241220FF0D0000182104 +:10F790000A0010E9240300011079009C00003021C8 +:10F7A00090AD00012402000211A200BE30EA004028 +:10F7B00090B90001241800011338007F30E900409F +:10F7C0008CA600049785002A00C020210E000FDBC4 +:10F7D0003626000200004021010018218FBF001CC6 +:10F7E0008FB200188FB100148FB00010006010218C +:10F7F00003E0000827BD0020360F010095EE000C45 +:10F8000031CD020015A0FEE63C0900013C1880083D +:10F81000971200489789002A362600023248FFFFD7 +:10F82000AF8800083C0380008C7101B80620FFFE01 +:10F83000346A0180AD4000001100008E3C0F800052 +:10F84000253F0012011FC82B1320008B240E00033C +:10F85000346C0100958B00202402001A30E4400033 +:10F860003163FFFFA142000B108000A72463FFFE5D +:10F870000103682B15A000A52408FFFE34A5000194 +:10F88000A5430014AF8500043C0480002412BFFF90 +:10F8900000B2802434850180A4A9000EA4A9001A16 +:10F8A000A4A60008A4B00026A4A700103C071000DE +:10F8B000AC8701B80A00114D000018213C038000FC +:10F8C00034640100949F000E3C1908008F3900D861 +:10F8D0002404008033E5FFFF273100013C010800CC +:10F8E000AC3100D80E000FDB240600030A00114DD6 +:10F8F00000001821240A000210CA00598F85002830 +:10F900003C0308008C6300D0240E0001106E005EE2 +:10F910002CCF000C24D2FFFC2E5000041600002136 +:10F9200000002021241800021078001B2CD9000CA4 +:10F9300024DFFFF82FE900041520FF330000202109 +:10F9400030EB020051600004000621C054C00022C8 +:10F9500030A5FFFF000621C030A5FFFF0A00117D82 +:10F96000362600023C0908008D29002431300001B0 +:10F970005200FEF7000018219785002A3626000263 +:10F980000E000FDB000020210A00114D000018219D +:10F990000A00119C241200021320FFE624DFFFF866 +:10F9A0000000202130A5FFFF0A00117D362600024D +:10F9B0000A0011AC021980245120FF828CA6000499 +:10F9C0003C05080190A5964110A0FF7E2408000187 +:10F9D0000A0011F0010018210E000FDB3226000191 +:10F9E0008F8600108F8500280A00124F000621C064 +:10F9F0008F8500043C18800024120003371001801A +:10FA0000A212000B0A00112E3C08800090A30001F6 +:10FA1000241100011071FF70240800012409000264 +:10FA20005069000430E60040240800010A0011F08B +:10FA30000100182150C0FFFD240800013C0C80008B +:10FA4000358B01009563001094A40002307FFFFF06 +:10FA5000509FFF62010018210A001284240800014F +:10FA60002CA803EF1100FE56240300010A001239EE +:10FA700000000000240E000335EA0180A14E000BB7 +:10FA80000A00121C3C04800011E0FFA2000621C005 +:10FA900030A5FFFF0A00117D362600020A0011A5DD +:10FAA000241100201140FFC63C1280003650010096 +:10FAB000960F001094AE000231E80FFF15C8FFC08A +:10FAC000000000000A0011E690B900013C060800A1 +:10FAD0008CC6003824C4FFFF14C00002018418241F +:10FAE000000018213C0D080025AD0038006D1021E4 +:10FAF0000A0011B6904300048F8F0004240EFFFE0D +:10FB00000A00112C01EE28242408FFFE0A00121A14 +:10FB100000A8282427BDFFC8AFB00010AFBF003435 +:10FB20003C10600CAFBE0030AFB7002CAFB6002861 +:10FB3000AFB50024AFB40020AFB3001CAFB20018C3 +:10FB4000AFB100148E0E5000240FFF7F3C068000E2 +:10FB500001CF682435AC380C240B0003AE0C5000E8 +:10FB6000ACCB00083C010800AC2000200E001819A6 +:10FB7000000000003C0A0010354980513C06601628 +:10FB8000AE09537C8CC700003C0860148D0500A0B2 +:10FB90003C03FFFF00E320243C02535300051FC237 +:10FBA0001482000634C57C000003A08002869821E0 +:10FBB0008E7200043C116000025128218CBF007C31 +:10FBC0008CA200783C1E600037C420203C05080150 +:10FBD00024A59288AF820018AF9F001C0E0016DD8E +:10FBE0002406000A3C190001273996403C01080010 +:10FBF000AC3931DC0E0020DDAF8000148FD708084F +:10FC00002418FFF03C15570902F8B02412D502F56C +:10FC100024040001AF80002C3C1480003697018042 +:10FC20003C1E080127DE9644369301008E900000AA +:10FC30003205000310A0FFFD3207000110E000882C +:10FC4000320600028E7100283C048000AE91002034 +:10FC50008E6500048E66000000A0382100C040219F +:10FC60008C8301B80460FFFE3C0B0010240A0800DE +:10FC700000AB4824AC8A01B8552000E0240BBFFF3C +:10FC80009675000E3C1208008E52002030AC4000E9 +:10FC900032AFFFFF264E000125ED00043C010800B5 +:10FCA000AC2E0020118000E8AF8D00283C18002009 +:10FCB00000B8B02412C000E530B980002408BFFFAE +:10FCC00000A8382434C81000AF87000030E62000B8 +:10FCD00010C000E92409FFBF3C03000400E328240E +:10FCE00010A00002010910243502004030EA010092 +:10FCF00011400010AF8200048F8B002C11600007B0 +:10FD00003C0D002000ED6024118000043C0F000435 +:10FD100000EF702411C00239000000009668001E38 +:10FD20009678001C3115FFFF0018B40002B690252C +:10FD3000AF92000C30F910001320001324150001BD +:10FD400030FF002017E0000A3C04100000E41024FB +:10FD50001040000D3C0A0C003C090BFF00EA18247F +:10FD60003525FFFF00A3302B10C0000830ED010047 +:10FD70003C0C08008D8C002C24150005258B0001FF +:10FD80003C010800AC2B002C30ED010015A0000B4D +:10FD90003C0500018F85000430AE400055C00007CF +:10FDA0003C0500013C161F0100F690243C0F10009A +:10FDB000124F01CE000000003C05000100E5302498 +:10FDC00010C000AF3C0C10003C1F08008FFF002447 +:10FDD00033E90002152000712403000100601021A6 +:10FDE000104000083C0680003C08800035180100E7 +:10FDF0008F0F00243C056020ACAF00140000000011 +:10FE00003C0680003C194000ACD9013800000000DD +:10FE10005220001332060002262B0140262C0080BF +:10FE2000240EFF80016E2024018E6824000D1940ED +:10FE3000318A007F0004A9403172007F3C16200007 +:10FE400036C20002006A482502B2382500E2882541 +:10FE50000122F825ACDF0830ACD1083032060002B0 +:10FE600010C0FF723C188000370501408CA80000CC +:10FE700024100040AF08002090AF000831E300706C +:10FE8000107000D428790041532000082405006038 +:10FE9000241100201071000E3C0A40003C09800033 +:10FEA000AD2A01780A001304000000001465FFFB6E +:10FEB0003C0A40000E001FFA000000003C0A40000F +:10FEC0003C098000AD2A01780A00130400000000FC +:10FED00090A90009241F00048CA70000312800FF0E +:10FEE000111F01B22503FFFA2C7200061240001404 +:10FEF0003C0680008CA9000494A4000A310500FF90 +:10FF000000095E022D6A00083086FFFF15400002DE +:10FF10002567000424070003240C000910AC01FA33 +:10FF200028AD000A11A001DE2410000A240E0008EA +:10FF300010AE0028000731C000C038213C06800008 +:10FF40008CD501B806A0FFFE34D20180AE47000078 +:10FF500034CB0140916E0008240300023C0A4000AB +:10FF600031C400FF00046A0001A86025A64C000807 +:10FF7000A243000B9562000A3C0810003C09800077 +:10FF8000A64200108D670004AE470024ACC801B83B +:10FF9000AD2A01780A001304000000003C0A80002A +:10FFA000354401009483000E3C0208008C4200D8C6 +:10FFB000240400803065FFFF245500013C01080047 +:10FFC000AC3500D80E000FDB240600030A001370C6 +:10FFD000000018210009320230D900FF2418000166 +:10FFE0001738FFD5000731C08F910020262200016D +:10FFF000AF8200200A0013C800C0382100CB2024A3 +:020000021000EC +:10000000AF85000010800008AF860004240D87FF34 +:1000100000CD6024158000083C0E006000AE302446 +:1000200010C00005000000000E000D42000000009E +:100030000A001371000000000E0016050000000009 +:100040000A0013710000000030B980005320FF1F28 +:10005000AF8500003C02002000A2F82453E0FF1B03 +:10006000AF8500003C07FFFF34E47FFF00A4382485 +:100070000A00132B34C880000A001334010910242D +:1000800000EC58245160005AAF8000248F8D002C62 +:100090003C0E0F0000EE182415A00075AF83001071 +:1000A00030EF010011E00073939800103C12020041 +:1000B000107200703C06800034D9010093280013B0 +:1000C0009789002A36A60002311800FF271600047F +:1000D000001619C03C0480008C8501B804A0FFFE06 +:1000E00034880180AD0300003C158008AC830020FB +:1000F00096BF004833E5FFFF10A001BCAF850008A4 +:100100002523001200A3102B504001B98F85000455 +:10011000348D010095AC0020240B001A30E440001F +:10012000318AFFFFA10B000B108001BA2543FFFEAF +:1001300000A3702B15C001B88F9600048F8F0004A8 +:10014000A503001435E50001AF8500043C088000DC +:1001500035150180A6A9000EA6A9001A8F89000CEA +:1001600030BF8000A6A70010AEA90028A6A60008F0 +:1001700013E0000F3C0F8000350C0100958B00163A +:10018000316AFFFC25440004008818218C6240007D +:100190003046FFFF14C000072416BFFF3C0EFFFFD0 +:1001A00035CD7FFF00AD2824AF8500043C0F8000D3 +:1001B0002416BFFF00B6902435E50180A4B20026C6 +:1001C000ACA7002C3C071000ADE701B80A00137083 +:1001D000000018210E00165D000000003C0A4000DF +:1001E0003C098000AD2A01780A00130400000000D9 +:1001F0008F85002410A00027AF80001090A300007E +:10020000106000742409000310690101000030210E +:1002100090AE0001240D000211CD014230EF0040EC +:1002200090A90001241F0001113F000930E20040A5 +:100230008CA600049785002A00C020210E000FDB49 +:1002400036A60002000040210A00137001001821A8 +:100250005040FFF88CA600043C07080190E7964147 +:1002600010E0FFF4240800010A00137001001821B7 +:10027000939800103C1F080127FF96400018C8C043 +:10028000033F4021AF8800248F85002414A0FFDBAA +:10029000AF9800103C0480008C86400030C50100FF +:1002A00010A0008732AB00043C0C08008D8C0024A9 +:1002B00024160004156000033192000D241600027C +:1002C0003C0480008C8E4000340DFFFF11CD0113E3 +:1002D00032B5FFFB8C984000330F010055E0000160 +:1002E0002415001030E80800110000382409FFFB35 +:1002F0008F9F00282FF903EF53200001024990241B +:1003000030E2010010400014325F00018F87002CA2 +:1003100014E0010E8F8C000C3C0480003486010038 +:1003200090C5001330AA00FF25430004000321C03C +:100330002419FFFE025990241240000202B6302513 +:1003400032A6FFFF0E000FDB9785002A1240FEA3A6 +:1003500000001821325F000113E0000D3247000455 +:10036000240900011249000202B6302532A6FFFF1F +:100370009785002A0E000FDB000020212402FFFEDB +:10038000024290241240FE950000182132470004DA +:1003900050E0FE922403000102B63025241600042A +:1003A0005656000132A6FFFF9785002A0E000FDB8C +:1003B000240401002403FFFB0243A82412A0FE87AB +:1003C000000018210A001370240300010A0014B968 +:1003D0000249902410A0FFAF30E5010010A00017E3 +:1003E0008F8600102403000210C300148F84000CB9 +:1003F0003C0608008CC6003824CAFFFF14C0000267 +:10040000008A1024000010213C0E080025CE003880 +:10041000004E682191AC00048F850028258B0004D4 +:10042000000B21C030A5FFFF36A600020E000FDB37 +:10043000000000000A00137000001821240F0002C1 +:1004400010CF0088241600013C0308008C6300D004 +:100450001076008D8F85002824D9FFFC2F280004FA +:100460001500006300002021241F0002107F005DA2 +:100470002CC9000C24C3FFF82C6200041440FFE9CF +:100480000000202130EA020051400004000621C093 +:1004900054C0000530A5FFFF000621C030A5FFFFB6 +:1004A0000A00150436A600020E000FDB32A600017A +:1004B0008F8600108F8500280A001520000621C0B5 +:1004C0003C0A08008D4A0024315200015240FE438C +:1004D000000018219785002A36A600020E000FDBC7 +:1004E000000020210A001370000018219668000CFB +:1004F000311802005700FE313C0500013C1F800806 +:1005000097F900489789002A36A600023328FFFF92 +:10051000AF8800083C0380008C7501B806A0FFFE80 +:100520003C04800034820180AC400000110000B621 +:1005300024180003252A0012010A182B106000B2AB +:1005400000000000966F00203C0E8000240D001A71 +:1005500031ECFFFF35CA018030EB4000A14D000BAC +:10056000116000B02583FFFE0103902B164000AE02 +:100570002416FFFE34A50001A5430014AF85000436 +:100580002419BFFF00B94024A6E9000EA6E9001A0D +:10059000A6E60008A6E80026A6E700103C07100023 +:1005A000AE8701B80A001370000018213C048000D7 +:1005B0008C8201B80440FFFE349601802415001C93 +:1005C000AEC70000A2D5000B3C071000AC8701B8F5 +:1005D0003C0A40003C098000AD2A01780A0013045F +:1005E000000000005120FFA424C3FFF800002021D8 +:1005F00030A5FFFF0A00150436A600020E00103DCC +:10060000000000008F8700000A001346AF82000C34 +:1006100090A30001241500011075FF0B24080001B0 +:10062000240600021066000430E2004024080001A5 +:100630000A001370010018215040FFFD240800013A +:100640003C0C8000358B0100956A001094A40002D8 +:100650003143FFFF5083FDE1010018210A00158599 +:10066000240800018F8500282CB203EF1240FDDB27 +:10067000240300013C0308008C6300D02416000111 +:100680001476FF7624D9FFFC2CD8000C1300FF72DF +:10069000000621C030A5FFFF0A00150436A600029F +:1006A00010B00037240F000B14AFFE23000731C039 +:1006B000312600FF00065600000A4E0305220047BF +:1006C00030C6007F0006F8C03C16080126D69640CA +:1006D00003F68021A2000001A20000003C0F600090 +:1006E0008DF918202405000100C588040011302769 +:1006F0000326C024000731C000C03821ADF81820FF +:100700000A0013C8A60000028F850020000731C030 +:1007100024A2FFFF0A0013F6AF8200200A0014B2E1 +:100720002415002011E0FECC3C1980003728010080 +:100730009518001094B6000233120FFF16D2FEC6B1 +:10074000000000000A00148290A900013C0B080080 +:100750008D6B0038256DFFFF15600002018D1024A0 +:10076000000010213C080800250800380048C0217E +:10077000930F000425EE00040A0014C5000E21C0EA +:1007800000065202241F00FF115FFDEB000731C07D +:10079000000A20C03C0E080125CE9640008EA821FC +:1007A000009E602100095C02240D00013C076000EE +:1007B000A2AD0000AD860000A2AB00018CF21820B3 +:1007C00024030001014310040242B025ACF61820B6 +:1007D00000C038210A0013C8A6A900020A0015AA01 +:1007E000AF8000200A0012FFAF84002C8F85000428 +:1007F0003C1980002408000337380180A308000B4F +:100800000A00144D3C088000A2F8000B0A00155A9B +:100810002419BFFF8F9600042412FFFE0A00144B18 +:1008200002D228242416FFFE0A00155800B62824F8 +:100830003C038000346401008C85000030A2003E3F +:100840001440000800000000AC6000488C870000E5 +:1008500030E607C010C0000500000000AC60004C8E +:10086000AC60005003E0000824020001AC600054BA +:10087000AC6000408C880000310438001080FFF923 +:10088000000000002402000103E00008AC60004406 +:100890003C0380008C6201B80440FFFE3467018095 +:1008A000ACE4000024080001ACE00004A4E500086A +:1008B00024050002A0E8000A34640140A0E5000B12 +:1008C0009483000A14C00008A4E30010ACE00024E4 +:1008D0003C07800034E901803C041000AD20002872 +:1008E00003E00008ACE401B88C8600043C0410006E +:1008F000ACE600243C07800034E90180AD200028EC +:1009000003E00008ACE401B83C0680008CC201B8EA +:100910000440FFFE34C7018024090002ACE400005B +:10092000ACE40004A4E50008A0E9000A34C50140D5 +:10093000A0E9000B94A8000A3C041000A4E80010F1 +:10094000ACE000248CA30004ACE3002803E0000822 +:10095000ACC401B83C039000346200010082202541 +:100960003C038000AC6400208C65002004A0FFFEE6 +:100970000000000003E00008000000003C028000CE +:10098000344300010083202503E00008AC4400202C +:1009900027BDFFE03C098000AFBF0018AFB10014D5 +:1009A000AFB00010352801408D10000091040009FF +:1009B0009107000891050008308400FF30E600FF31 +:1009C00000061A002C820081008330251040002A86 +:1009D00030A50080000460803C0D080125AD92B078 +:1009E000018D58218D6A00000140000800000000C0 +:1009F0003C038000346201409445000A14A0001EAC +:100A00008F91FCC09227000530E6000414C0001A44 +:100A1000000000000E00164E02002021922A000560 +:100A200002002021354900040E001658A2290005B5 +:100A30009228000531040004148000020000000028 +:100A40000000000D922D0000240B002031AC00FFAF +:100A5000158B00093C0580008CAE01B805C0FFFE77 +:100A600034B10180AE3000003C0F100024100005AE +:100A7000A230000BACAF01B80000000D8FBF001812 +:100A80008FB100148FB0001003E0000827BD0020D4 +:100A90000200202100C028218FBF00188FB1001450 +:100AA0008FB00010240600010A00161D27BD00208B +:100AB0000000000D0200202100C028218FBF001877 +:100AC0008FB100148FB00010000030210A00161DF5 +:100AD00027BD002014A0FFE8000000000200202134 +:100AE0008FBF00188FB100148FB0001000C02821F4 +:100AF0000A00163B27BD00203C0780008CEE01B8A1 +:100B000005C0FFFE34F00180241F0002A21F000B6D +:100B100034F80140A60600089719000A3C0F10009F +:100B2000A61900108F110004A6110012ACEF01B835 +:100B30000A0016998FBF001827BDFFE8AFBF00104D +:100B40000E000FD4000000003C0280008FBF001098 +:100B500000002021AC4001800A00108F27BD001842 +:100B60003084FFFF30A5FFFF108000070000182130 +:100B7000308200011040000200042042006518216C +:100B80001480FFFB0005284003E0000800601021EE +:100B900010C00007000000008CA2000024C6FFFF68 +:100BA00024A50004AC82000014C0FFFB24840004D0 +:100BB00003E000080000000010A0000824A3FFFFCD +:100BC000AC86000000000000000000002402FFFFCF +:100BD0002463FFFF1462FFFA2484000403E000088A +:100BE000000000003C03800027BDFFF83462018054 +:100BF000AFA20000308C00FF30AD00FF30CE00FF10 +:100C00003C0B80008D6401B80480FFFE00000000F2 +:100C10008FA900008D6801288FAA00008FA700000F +:100C20008FA400002405000124020002A085000A10 +:100C30008FA30000359940003C051000A062000B16 +:100C40008FB800008FAC00008FA600008FAF0000AF +:100C500027BD0008AD280000AD400004AD80002491 +:100C6000ACC00028A4F90008A70D0010A5EE0012E2 +:100C700003E00008AD6501B83C06800827BDFFE829 +:100C800034C50080AFBF001090A7000924020012F5 +:100C900030E300FF1062000B008030218CA8005070 +:100CA00000882023048000088FBF00108CAA003425 +:100CB000240400390000282100CA4823052000052B +:100CC000240600128FBF00102402000103E0000878 +:100CD00027BD00180E0016F2000000008FBF0010A4 +:100CE0002402000103E0000827BD001827BDFFC84B +:100CF000AFB20030AFB00028AFBF0034AFB1002CAE +:100D000000A0802190A5000D30A6001010C000109A +:100D1000008090213C0280088C4400048E0300086F +:100D20001064000C30A7000530A6000510C0009329 +:100D3000240400018FBF00348FB200308FB1002C2B +:100D40008FB000280080102103E0000827BD003884 +:100D500030A7000510E0000F30AB001210C00006F5 +:100D6000240400013C0980088E0800088D25000439 +:100D70005105009C240400388FBF00348FB200302E +:100D80008FB1002C8FB000280080102103E00008F4 +:100D900027BD0038240A0012156AFFE6240400016A +:100DA0000200202127A500100E000CB6AFA00010F5 +:100DB0001440007C3C19800837240080909800087B +:100DC000331100081220000A8FA7001030FF010025 +:100DD00013E000A48FA300148C8600580066102333 +:100DE000044000043C0A8008AC8300588FA7001020 +:100DF0003C0A800835480080910900083124000829 +:100E00001480000224080003000040213C1F8008D9 +:100E100093F1001193F9001237E600808CCC005456 +:100E2000333800FF03087821322D00FF000F708057 +:100E300001AE282100AC582B1160006F00000000AB +:100E400094CA005C8CC900543144FFFF0125102373 +:100E50000082182B14600068000000008CCB005446 +:100E60000165182330EC00041180006C000830800C +:100E70008FA8001C0068102B1040006230ED0004A9 +:100E8000006610232C46008010C00002004088211C +:100E9000241100800E00164E024020213C0D8008D7 +:100EA00035A6008024070001ACC7000C90C80008DC +:100EB0000011484035A70100310C007FA0CC00088C +:100EC0008E05000424AB0001ACCB0030A4D1005C43 +:100ED0008CCA003C9602000E01422021ACC40020C6 +:100EE0008CC3003C0069F821ACDF001C8E190004A3 +:100EF000ACF900008E180008ACF800048FB10010A7 +:100F0000322F000855E0004793A60020A0C0004EF5 +:100F100090D8004E2411FFDFA0F8000890CF000801 +:100F200001F17024A0CE00088E0500083C0B80085B +:100F300035690080AD2500388D6A00148D2200309F +:100F40002419005001422021AD24003491230000D7 +:100F5000307F00FF13F90036264F01000E001658AF +:100F60000240202124040038000028210E0016F23F +:100F70002406000A0A001757240400010E000D2859 +:100F8000000020218FBF00348FB200308FB1002CC1 +:100F90008FB00028004020210080102103E00008CD +:100FA00027BD00388E0E00083C0F800835F0008009 +:100FB000AE0E005402402021AE0000300E00164E4E +:100FC00000000000920D00250240202135AC0020D9 +:100FD0000E001658A20C00250E000CAC0240202179 +:100FE000240400382405008D0E0016F22406001299 +:100FF0000A0017572404000194C5005C0A001792E8 +:1010000030A3FFFF2407021811A0FF9E00E6102363 +:101010008FAE001C0A00179A01C610230A0017970A +:101020002C620218A0E600080A0017C48E0500080A +:101030002406FF8001E6C0243C118000AE38002861 +:101040008E0D000831E7007F3C0E800C00EE602121 +:10105000AD8D00E08E080008AF8C00380A0017D074 +:10106000AD8800E4AC800058908500082403FFF7A9 +:1010700000A33824A08700080A0017758FA7001066 +:101080003C05080024A560A83C04080024846FF4F3 +:101090003C020800244260B0240300063C01080121 +:1010A000AC2596C03C010801AC2496C43C01080163 +:1010B000AC2296C83C010801A02396CC03E00008AE +:1010C0000000000003E00008240200013C02800050 +:1010D000308800FF344701803C0680008CC301B893 +:1010E0000460FFFE000000008CC501282418FF806A +:1010F0003C0D800A24AF010001F8702431EC007F20 +:10110000ACCE0024018D2021ACE50000948B00EAD8 +:101110003509600024080002316AFFFFACEA0004D0 +:1011200024020001A4E90008A0E8000BACE00024C0 +:101130003C071000ACC701B8AF84003803E00008DA +:10114000AF85006C938800488F8900608F820038DB +:1011500030C600FF0109382330E900FF01221821C1 +:1011600030A500FF2468008810C000020124382147 +:101170000080382130E400031480000330AA00030B +:101180001140000D312B000310A0000900001021B8 +:1011900090ED0000244E000131C200FF0045602B9D +:1011A000A10D000024E700011580FFF925080001CA +:1011B00003E00008000000001560FFF300000000DD +:1011C00010A0FFFB000010218CF80000245900043F +:1011D000332200FF0045782BAD18000024E70004FF +:1011E00015E0FFF92508000403E0000800000000F6 +:1011F00093850048938800588F8700600004320070 +:101200003103007F00E5102B30C47F001040000F39 +:10121000006428258F8400383C0980008C8A00EC0B +:10122000AD2A00A43C03800000A35825AC6B00A0AD +:101230008C6C00A00580FFFE000000008C6D00ACEF +:10124000AC8D00EC03E000088C6200A80A00188254 +:101250008F840038938800593C0280000080502120 +:10126000310300FEA383005930ABFFFF30CC00FFF9 +:1012700030E7FFFF344801803C0980008D2401B82D +:101280000480FFFE8F8D006C24180016AD0D000049 +:101290008D2201248F8D0038AD0200048D5900206D +:1012A000A5070008240201C4A119000AA118000B17 +:1012B000952F01208D4E00088D4700049783005C18 +:1012C0008D59002401CF302100C7282100A32023FD +:1012D0002418FFFFA504000CA50B000EA5020010AA +:1012E000A50C0012AD190018AD18002495AF00E848 +:1012F0003C0B10002407FFF731EEFFFFAD0E002876 +:101300008DAC0084AD0C002CAD2B01B88D460020B7 +:1013100000C7282403E00008AD4500208F8800386E +:101320000080582130E7FFFF910900D63C02800081 +:1013300030A5FFFF312400FF00041A00006750258C +:1013400030C600FF344701803C0980008D2C01B875 +:101350000580FFFE8F82006C240F0017ACE20000B6 +:101360008D390124ACF900048D780020A4EA00082E +:10137000241901C4A0F8000AA0EF000B9523012056 +:101380008D6E00088D6D00049784005C01C35021B0 +:10139000014D602101841023A4E2000CA4E5000E9D +:1013A000A4F90010A4E60012ACE000148D7800242B +:1013B000240DFFFFACF800188D0F007CACEF001C73 +:1013C0008D0E00783C0F1000ACEE0020ACED002438 +:1013D000950A00BE240DFFF73146FFFFACE600285A +:1013E000950C00809504008231837FFF0003CA00C2 +:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2 +:10140000950E00828D6A002000AE3021014D282407 +:10141000A506008203E00008AD6500203C028000C4 +:10142000344501803C0480008C8301B80460FFFED9 +:101430008F8A0044240600199549001C3128FFFFBB +:10144000000839C0ACA70000A0A6000B3C051000A6 +:1014500003E00008AC8501B88F87004C0080402174 +:1014600030C400FF3C0680008CC201B80440FFFE7F +:101470008F89006C9383006834996000ACA90000E8 +:10148000A0A300058CE20010240F00022403FFF744 +:10149000A4A20006A4B900088D180020A0B8000A74 +:1014A000A0AF000B8CEE0000ACAE00108CED000481 +:1014B000ACAD00148CEC001CACAC00248CEB002018 +:1014C000ACAB00288CEA002C3C071000ACAA002C26 +:1014D0008D090024ACA90018ACC701B88D05002007 +:1014E00000A3202403E00008AD0400208F8600380C +:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0 +:1015000090C300D430A500FF3062002010400008D6 +:10151000008088218CCB00D02409FFDF256A0001E0 +:10152000ACCA00D090C800D401093824A0C700D4A8 +:1015300014A000403C0C80008F840038908700D4B9 +:101540002418FFBF2406FFEF30E3007FA08300D400 +:10155000979F005C8F8200608F8D003803E2C82364 +:10156000A799005CA5A000BC91AF00D401F870243D +:10157000A1AE00D48F8C0038A18000D78F8A0038AC +:10158000A5400082AD4000EC914500D400A658244F +:10159000A14B00D48F9000348F8400609786005C4C +:1015A0000204282110C0000FAF850034A38000582A +:1015B0003C0780008E2C000894ED01208E2B000447 +:1015C000018D5021014B8021020620233086FFFF30 +:1015D00030C8000F3909000131310001162000091F +:1015E000A3880058938600488FBF00188FB100145D +:1015F0008FB0001027BD0020AF85006403E0000815 +:10160000AF86006000C870238FBF00189386004823 +:101610008FB100148FB0001034EF0C00010F28219F +:1016200027BD0020ACEE0084AF85006403E0000815 +:10163000AF86006035900180020028210E00190F4E +:10164000240600828F840038908600D430C5004084 +:1016500050A0FFBAA38000688F85004C3C06800034 +:101660008CCD01B805A0FFFE8F89006C2408608234 +:1016700024070002AE090000A6080008A207000B1C +:101680008CA300083C0E1000AE0300108CA2000CCE +:10169000AE0200148CBF0014AE1F00188CB90018E5 +:1016A000AE1900248CB80024AE1800288CAF002896 +:1016B000AE0F002CACCE01B80A001948A380006818 +:1016C0008F8A003827BDFFE0AFB10014AFB0001023 +:1016D0008F880060AFBF00189389003C954200BC22 +:1016E00030D100FF0109182B0080802130AC00FFB1 +:1016F0003047FFFF0000582114600003310600FF4F +:1017000001203021010958239783005C0068202BB9 +:101710001480002700000000106800562419000102 +:101720001199006334E708803165FFFF0E0018C08F +:10173000020020218F83006C3C07800034E601808A +:101740003C0580008CAB01B80560FFFE240A001840 +:101750008F840038ACC30000A0CA000B948900BE7F +:101760003C081000A4C90010ACC00030ACA801B8FF +:101770009482008024430001A4830080949F008011 +:101780003C0608008CC6318833EC7FFF1186005E72 +:101790000000000002002021022028218FBF001835 +:1017A0008FB100148FB000100A00193427BD00203B +:1017B000914400D42403FF8000838825A15100D4E4 +:1017C0009784005C3088FFFF51000023938C003C1D +:1017D0008F8500382402EFFF008B782394AE00BC85 +:1017E0000168502B31E900FF01C26824A4AD00BCA0 +:1017F00051400039010058213C1F800037E60100AC +:101800008CD800043C190001031940245500000144 +:1018100034E740008E0A00202403FFFB241100015E +:1018200001432024AE0400201191002D34E78000F4 +:1018300002002021012030210E0018C03165FFFF79 +:101840009787005C8F890060A780005C0127802358 +:10185000AF900060938C003C8F8B00388FBF0018D6 +:101860008FB100148FB0001027BD002003E00008E6 +:10187000A16C00D73C0D800035AA01008D48000402 +:101880003C0900010109282454A0000134E740006C +:101890008E0F00202418FFFB34E7800001F870242D +:1018A00024190001AE0E00201599FF9F34E708802F +:1018B000020020210E00188E3165FFFF020020215A +:1018C000022028218FBF00188FB100148FB00010A4 +:1018D0000A00193427BD00200A0019F7000048212A +:1018E00002002021012030210E00188E3165FFFFFB +:1018F0009787005C8F890060A780005C01278023A8 +:101900000A001A0EAF900060948C0080241F8000A3 +:10191000019F3024A4860080908B0080908F0080EF +:10192000316700FF0007C9C20019C027001871C045 +:1019300031ED007F01AE2825A08500800A0019DF67 +:1019400002002021938500682403000127BDFFE8E1 +:1019500000A330042CA20020AFB00010AFBF0014D1 +:1019600000C01821104000132410FFFE3C0708009F +:101970008CE7319000E610243C088000350501809A +:1019800014400005240600848F890038240A0004CE +:101990002410FFFFA12A00FC0E00190F0000000018 +:1019A000020010218FBF00148FB0001003E0000868 +:1019B00027BD00183C0608008CC631940A001A574F +:1019C00000C310248F87004427BDFFE0AFB200188A +:1019D000AFB10014AFB00010AFBF001C30D000FF9B +:1019E00090E6000D00A088210080902130C5007F86 +:1019F000A0E5000D8F8500388E2300188CA200D042 +:101A00001062002E240A000E0E001A4AA38A0068F3 +:101A10002409FFFF104900222404FFFF5200002088 +:101A2000000020218E2600003C0C001000CC582421 +:101A3000156000393C0E000800CE682455A0003F18 +:101A4000024020213C18000200D880241200001F10 +:101A50003C0A00048F8700448CE200148CE30010E1 +:101A60008CE500140043F82303E5C82B1320000580 +:101A7000024020218E24002C8CF1001010910031A6 +:101A80000240202124020012A38200680E001A4A9C +:101A90002412FFFF105200022404FFFF0000202147 +:101AA0008FBF001C8FB200188FB100148FB00010D0 +:101AB0000080102103E0000827BD002090A800D47A +:101AC000350400200A001A80A0A400D400CA4824CB +:101AD0001520000B8F8B00448F8D00448DAC0010BF +:101AE0001580000B024020218E2E002C51C0FFECEF +:101AF00000002021024020210A001A9B2402001726 +:101B00008D66001050C0FFE6000020210240202119 +:101B10000A001A9B24020011024020212402001511 +:101B20000E001A4AA3820068240FFFFF104FFFDC4B +:101B30002404FFFF0A001A8A8E2600000A001AC138 +:101B4000240200143C08000400C8382450E0FFD4EC +:101B500000002021024020210A001A9B24020013C9 +:101B60008F85003827BDFFD8AFB3001CAFB2001877 +:101B7000AFB10014AFB00010AFBF002090A700D4E9 +:101B80008F90004C2412FFFF34E2004092060000C8 +:101B9000A0A200D48E0300100080982110720006CD +:101BA00030D1003F2408000D0E001A4AA3880068B7 +:101BB000105200252404FFFF8F8A00388E09001878 +:101BC0008D4400D01124000702602021240C000E57 +:101BD0000E001A4AA38C0068240BFFFF104B001A5A +:101BE0002404FFFF24040020122400048F8D0038F9 +:101BF00091AF00D435EE0020A1AE00D48F85005403 +:101C000010A00019000000001224004A8F9800382C +:101C10008F92FCC0971000809651000A5230004805 +:101C20008F9300403C1F08008FFF318C03E5C82BC9 +:101C30001720001E02602021000028210E0019A993 +:101C400024060001000020218FBF00208FB3001C5C +:101C50008FB200188FB100148FB0001000801021D7 +:101C600003E0000827BD00285224002A8E05001436 +:101C70008F840038948A008025490001A48900805F +:101C8000948800803C0208008C42318831077FFF35 +:101C900010E2000E00000000026020210E00193446 +:101CA000240500010A001B0B000020212402002D46 +:101CB0000E001A4AA38200682403FFFF1443FFE1C9 +:101CC0002404FFFF0A001B0C8FBF002094990080A2 +:101CD000241F800024050001033FC024A498008035 +:101CE00090920080908E0080325100FF001181C2DE +:101CF00000107827000F69C031CC007F018D582576 +:101D0000A08B00800E001934026020210A001B0BFA +:101D1000000020212406FFFF54A6FFD68F84003840 +:101D2000026020210E001934240500010A001B0B5B +:101D300000002021026020210A001B252402000A45 +:101D40002404FFFD0A001B0BAF9300608F8800384E +:101D500027BDFFE8AFB00010AFBF0014910A00D458 +:101D60008F87004C00808021354900408CE60010B0 +:101D7000A10900D43C0208008C4231B030C53FFFBD +:101D800000A2182B106000078F850050240DFF80E3 +:101D900090AE000D01AE6024318B00FF156000088D +:101DA0000006C382020020212403000D8FBF00140F +:101DB0008FB0001027BD00180A001A4AA3830068DC +:101DC00033060003240F000254CFFFF70200202146 +:101DD00094A2001C8F85003824190023A4A200E8D7 +:101DE0008CE8000000081E02307F003F13F9003528 +:101DF0003C0A00838CE800188CA600D0110600086D +:101E0000000000002405000E0E001A4AA385006899 +:101E10002407FFFF104700182404FFFF8F850038B8 +:101E200090A900D435240020A0A400D48F8C0044B5 +:101E3000918E000D31CD007FA18D000D8F83005458 +:101E40001060001C020020218F8400508C9800102C +:101E50000303782B11E0000D241900180200202143 +:101E6000A39900680E001A4A2410FFFF10500002C8 +:101E70002404FFFF000020218FBF00148FB000104A +:101E80000080102103E0000827BD00188C86001098 +:101E90008F9F00440200202100C31023AFE20010F6 +:101EA000240500010E0019A9240600010A001B9751 +:101EB000000020210E001934240500010A001B97A0 +:101EC00000002021010A5824156AFFD98F8C004494 +:101ED000A0A600FC0A001B84A386005A30A500FFC0 +:101EE0002406000124A9000100C9102B1040000C99 +:101EF00000004021240A000100A61823308B0001B5 +:101F000024C60001006A3804000420421160000267 +:101F100000C9182B010740251460FFF800A61823FC +:101F200003E000080100102127BDFFD8AFB0001862 +:101F30008F90004CAFB1001CAFBF00202403FFFF07 +:101F40002411002FAFA30010920600002405000802 +:101F500026100001006620260E001BB0308400FF12 +:101F600000021E003C021EDC34466F410A001BD8F2 +:101F70000000102110A00009008018212445000154 +:101F800030A2FFFF2C4500080461FFFA0003204047 +:101F90000086202614A0FFF9008018210E001BB037 +:101FA000240500208FA300102629FFFF313100FFF8 +:101FB00000034202240700FF1627FFE20102182651 +:101FC00000035027AFAA0014AFAA00100000302170 +:101FD00027A8001027A7001400E6782391ED00033E +:101FE00024CE000100C8602131C600FF2CCB0004C4 +:101FF0001560FFF9A18D00008FA200108FBF002097 +:102000008FB1001C8FB0001803E0000827BD002826 +:1020100027BDFFD0AFB3001CAFB00010AFBF00288A +:10202000AFB50024AFB40020AFB20018AFB10014B8 +:102030003C0C80008D880128240FFF803C06800A1C +:1020400025100100250B0080020F68243205007F57 +:10205000016F7024AD8E009000A62821AD8D002464 +:1020600090A600FC3169007F3C0A8004012A1821F7 +:10207000A386005A9067007C00809821AF830030CF +:1020800030E20002AF88006CAF85003800A0182154 +:10209000144000022404003424040030A3840048C7 +:1020A0008C7200DC30D100FF24040004AF92006089 +:1020B00012240004A38000688E7400041680001EA1 +:1020C0003C0880009386005930C7000110E0000FE3 +:1020D0008F9300608CB000848CA800842404FF805F +:1020E000020410240002F940310A007F03EA482567 +:1020F0003C0C2000012C902530CD00FE3C038000DC +:10210000AC720830A38D00598F9300608FBF0028F8 +:102110008FB50024ACB300DC8FB400208FB3001C5B +:102120008FB200188FB100148FB00010240200018C +:1021300003E0000827BD00308E7F000895020120D3 +:102140008E67001003E2C8213326FFFF30D8000F4E +:1021500033150001AF87003416A00058A39800582B +:1021600035090C000309382100D81823AD03008479 +:10217000AF8700648E6A00043148FFFF1100007EC3 +:10218000A78A005C90AC00D42407FF8000EC3024C8 +:1021900030CB00FF1560004B9786005C938E005A91 +:1021A000240D000230D5FFFF11CD02A20000A021B6 +:1021B0008F85006002A5802B160000BC9388004824 +:1021C0003C11800096240120310400FF1485008812 +:1021D0008F8400648F9800343312000356400085CA +:1021E00030A500FF8F900064310C00FF24060034FE +:1021F00011860095AF90004C9204000414800118E1 +:102200008F8E0038A380003C8E0D00048DC800D84E +:102210003C0600FF34CCFFFF01AC30240106182B34 +:1022200014600120AF8600548F8700609798005C8F +:10223000AF8700400307402310C000C7A788005C99 +:102240008F91003030C3000300035823922A007C92 +:102250003171000302261021000A20823092000111 +:102260000012488000492821311FFFFF03E5C82BD9 +:10227000132001208F8800388F8500348F880064F8 +:102280001105025A3C0E3F018E0600003C0C250051 +:1022900000CE682411AC01638F84004C30E500FF50 +:1022A0000E00184A000030218F8800388F870060A8 +:1022B0008F8500340A001DB78F8600540A001C5613 +:1022C000AF87006490A400D400E48024320200FFB1 +:1022D000104000169386005990A6008890AE00D753 +:1022E00024A8008830D4003F2686FFE02CD10020AF +:1022F000A38E003C1220000CAF88004C240B000180 +:1023000000CB20043095001916A0012B3C0680005C +:1023100034CF0002008FC0241700022E3099002015 +:1023200017200234000000009386005930CB0001D2 +:102330001160000F9788005C8CBF00848CA900841A +:10234000240AFF8003EA6024000C19403132007F28 +:10235000007238253C0D200000EDC82530D800FE65 +:102360003C0F8000ADF90830A39800599788005CB5 +:102370001500FF84000000008E630020306200041E +:102380001040FF51938600592404FFFB0064802411 +:102390003C038000AE700020346601808C7301B86D +:1023A0000660FFFE8F98006C347501003C1400013C +:1023B000ACD800008C6B012424076085ACCB0004F2 +:1023C0008EAE000401D488245220000124076083CB +:1023D00024190002A4C700083C0F1000A0D9000B6C +:1023E0003C068000ACCF01B80A001C2B9386005934 +:1023F00030A500FF0E00184A240600018F88006CEB +:102400003C05800034A90900250201889388004812 +:10241000304A0007304B00783C0340802407FF809F +:102420000163C825014980210047F824310C00FFD1 +:1024300024060034ACBF0800AF90004CACB90810C3 +:102440005586FF6E920400048F8400388E11003090 +:10245000908E00D431CD001015A000108F83006045 +:102460002C6F000515E000E400000000909800D4F7 +:102470002465FFFC331200101640000830A400FF52 +:102480008F9F00648F99003413F90004388700018E +:1024900030E20001144001C8000000000E001BC320 +:1024A000000000000A001DF8000000008F84006496 +:1024B00030C500FF0E00184A24060001939800481A +:1024C000240B0034130B00A08F8500388F8600602A +:1024D0009783005C306EFFFF00CE8823AF910060D1 +:1024E000A780005C1280FF90028018212414FFFD59 +:1024F0005474FFA28E6300208E6A00042403FFBF81 +:102500002408FFEF0155F823AE7F000490AC00D4FF +:102510003189007FA0A900D48E7200208F8F0038EF +:10252000A780005C364D0002AE6D0020A5E000BC27 +:1025300091E500D400A3C824A1F900D48F950038F8 +:10254000AEA000EC92B800D403085824A2AB00D48B +:102550000A001CD78F8500388F910034AF8000604F +:1025600002275821AF8B0034000020212403FFFFF5 +:10257000108301B48F8500388E0C00103C0D0800CC +:102580008DAD31B09208000031843FFF008D802B6B +:1025900012000023310D003F3C1908008F3931A88B +:1025A0008F9F006C000479802408FF80033F202166 +:1025B000008FC821938500590328F8243C06008029 +:1025C0003C0F800034D80001001F91403331007F60 +:1025D0008F8600380251502535EE0940332B0078A4 +:1025E000333000073C0310003C02800C017890253A +:1025F000020E48210143C0250222382134AE0001D9 +:10260000ADFF0804AF890050ADF20814AF87004455 +:10261000ADFF0028ACD90084ADF80830A38E005976 +:102620009383005A24070003106700272407000142 +:102630001467FFAC8F8500382411002311B1008589 +:1026400000000000240E000B026020210E001A4A38 +:10265000A38E00680040A0210A001D328F8500383B +:1026600002602021240B000C0E001A4AA38B006884 +:10267000240AFFFF104AFFBD2404FFFF8F8E00389D +:10268000A380003C8E0D00048DC800D83C0600FFDE +:1026900034CCFFFF01AC30240106182B1060FEE2A1 +:1026A000AF86005402602021241200190E001A4A3D +:1026B000A3920068240FFFFF104FFFAC2404FFFF1C +:1026C0000A001C838F86005425A3FFE02C74002091 +:1026D0001280FFDD240E000B000328803C1108014E +:1026E000263194B400B148218D2D000001A00008CE +:1026F000000000008F85003400A710219385003C66 +:10270000AF82003402251821A383003C951F00BC32 +:102710000226282137F91000A51900BC5240FF926B +:10272000AF850060246A0004A38A003C950900BCC0 +:1027300024A40004AF84006035322000A51200BC40 +:102740000A001D54000020218F8600602CC800055F +:102750001500FF609783005C3065FFFF00C5C8234C +:102760002F2F000511E00003306400FF24CDFFFC93 +:1027700031A400FF8F8900648F920034113200046D +:10278000389F000133EC0001158001380000000083 +:102790008F840038908700D434E60010A08600D4DF +:1027A0008F8500388F8600609783005CACA000ECBA +:1027B0000A001D2F306EFFFF8CB500848CB400849E +:1027C0003C04100002A7302400068940328E007FAE +:1027D000022E8025020410253C08800024050001FB +:1027E00002602021240600010E0019A9AD02083064 +:1027F0000A001CC38F8500388C8200EC1222FE7EFA +:102800000260202124090005A38900680E001A4AED +:102810002411FFFF1451FE782404FFFF0A001D5508 +:102820002403FFFF8F8F004C8F8800388DF8000045 +:10283000AD1800888DE70010AD0700988F87006005 +:102840000A001DB78F8600542406FFFF118600057D +:10285000000000000E001B4C026020210A001D8FAA +:102860000040A0210E001AD1026020210A001D8F15 +:102870000040A0218F90004C3C0208008C4231B0F7 +:102880008E110010322C3FFF0182282B10A0000C6B +:10289000240BFF808F85005090A3000D01637024EE +:1028A00031CA00FF1140000702602021001143825D +:1028B000310600032418000110D8010600000000B2 +:1028C000026020212403000D0E001A4AA383006831 +:1028D000004020218F8500380A001D320080A02191 +:1028E0008F90004C3C0A08008D4A31B08F85005013 +:1028F0008E0400100000A0218CB1001430823FFF34 +:10290000004A602B8CB200205180FFEE0260202133 +:1029100090B8000D240BFF800178702431C300FFB4 +:102920005060FFE80260202100044382310600036A +:1029300014C0FFE40260202194BF001C8F9900386E +:102940008E060028A73F00E88CAF0010022F20233E +:1029500014C4013A026020218F83005400C368210F +:10296000022D382B14E00136240200188F8A00440F +:102970008F820030024390218D4B00100163702341 +:10298000AD4E0010AD5200208C4C00740192282BEB +:1029900014A0015F026020218F8400508E08002463 +:1029A0008C86002411060007026020212419001CD7 +:1029B0000E001A4AA3990068240FFFFF104FFFC5AD +:1029C0002404FFFF8F8400448C87002424FF00012F +:1029D000AC9F00241251012F8F8D00308DB10074F7 +:1029E0001232012C3C0B00808E0E000001CB5024D3 +:1029F00015400075000000008E0300142411FFFF35 +:102A0000107100073C0808003C0608008CC6319095 +:102A100000C8C0241300015202602021A380006876 +:102A20008E0300003C19000100792024108000135F +:102A30003C1F0080007FA02416800009020028218E +:102A4000026020212411001A0E001A4AA391006886 +:102A50002407FFFF1047FF9F2404FFFF02002821E7 +:102A6000026020210E001A6A240600012410FFFFD4 +:102A70001050FF982404FFFF241400018F8D0044A0 +:102A8000026020210280302195A900342405000134 +:102A9000253200010E0019A9A5B200340000202142 +:102AA0008F8500380A001D320080A0218F90004CD5 +:102AB0003C1408008E9431B08E07001030E53FFFC3 +:102AC00000B4C82B132000618F8600502412FF80B1 +:102AD00090C9000D0249682431A400FF5080005CB9 +:102AE000026020218F8C00541180000700078B8228 +:102AF0008F8500388F82FCC094BF0080944A000A02 +:102B0000515F00F78F8600403227000314E0006415 +:102B100000000000920E000211C000D8000000006A +:102B20008E0B0024156000D902602021920400035E +:102B300024190002308500FF14B90005308900FF18 +:102B40008F940054128000EA240D002C308900FF7D +:102B5000392C00102D8400012D3200010244302553 +:102B6000020028210E001A6A026020212410FFFFB3 +:102B7000105000BF8F8500388F830054106000D341 +:102B8000240500013C0A08008D4A318C0143F82BD2 +:102B900017E000B22402002D02602021000028214D +:102BA0000E0019A9240600018F85003800001821A5 +:102BB0000A001D320060A0210E0018750000000000 +:102BC0000A001DF800000000AC8000200A001E78FA +:102BD0008E03001400002821026020210E0019A994 +:102BE000240600010A001CC38F8500380A001DB7A7 +:102BF0008F8800388CAA00848CAC00843C031000C1 +:102C00000147F824001F91403189007F024968255F +:102C100001A32825ACC50830910700012405000157 +:102C2000026020210E0019A930E600010A001CC331 +:102C30008F850038938F00482403FFFD0A001D3460 +:102C4000AF8F00600A001D342403FFFF02602021C3 +:102C50002410000D0E001A4AA390006800401821AD +:102C60008F8500380A001D320060A0210E00187503 +:102C7000000000009783005C8F86006000402021E8 +:102C80003070FFFF00D010232C4A00051140FE11C8 +:102C90008F850038ACA400EC0A001D2F306EFFFFBA +:102CA00090CF000D31E300085460FFA192040003AF +:102CB00002602021240200100E001A4AA38200683C +:102CC0002403FFFF5443FF9A920400030A001F12DB +:102CD0008F85003890A4000D308F000811E000951A +:102CE0008F990054572000A6026020218E1F000CEF +:102CF0008CB4002057F40005026020218E0D0008DE +:102D00008CA7002411A7003A026020212402002091 +:102D1000A38200680E001A4A2412FFFF1052FEED33 +:102D20002404FFFF8F9F00442402FFF73C14800E11 +:102D300093EA000D2419FF803C03800001423824EF +:102D4000A3E7000D8F9F00303C0908008D2931ACAE +:102D50008F8C006C97F200788F870044012C302113 +:102D6000324D7FFF000D204000C4782131E5007F07 +:102D700000B4C02101F94024AC68002CA711000068 +:102D80008CEB0028256E0001ACEE00288CEA002CAC +:102D90008E02002C01426021ACEC002C8E09002C2C +:102DA000ACE900308E120014ACF2003494ED003A1D +:102DB00025A40001A4E4003A97E600783C1108003D +:102DC0008E3131B024C3000130707FFF1211005CDE +:102DD000006030218F8F0030026020212405000127 +:102DE0000E001934A5E600780A001EA1000020217B +:102DF0008E0900142412FFFF1132006B8F8A0038F5 +:102E00008E0200188D4C00D0144C00650260202109 +:102E10008E0B00248CAE0028116E005B2402002172 +:102E20000E001A4AA38200681452FFBE2404FFFF5A +:102E30008F8500380A001D320080A0212402001F67 +:102E40000E001A4AA38200682409FFFF1049FEA160 +:102E50002404FFFF0A001E548F83005402602021C7 +:102E60000E001A4AA38200681450FF508F85003864 +:102E70002403FFFF0A001D320060A0218CD800242B +:102E80008E0800241118FF29026020210A001F2744 +:102E90002402000F8E0900003C05008001259024CB +:102EA0001640FF492402001A026020210E001A4A2F +:102EB000A3820068240CFFFF144CFECF2404FFFF04 +:102EC0008F8500380A001D320080A0210E001934C1 +:102ED000026020218F8500380A001EE500001821BD +:102EE0002403FFFD0060A0210A001D32AF860060B0 +:102EF000026020210E001A4AA38D00682403FFFF00 +:102F00001043FF588F8500380A001ECC920400033E +:102F10002418001D0E001A4AA39800682403FFFF1E +:102F20001443FE9D2404FFFF8F8500380A001D32E4 +:102F30000080A021026020210A001F3D24020024FD +:102F4000240880000068C024330BFFFF000B73C20D +:102F500031D000FF001088270A001F6E001133C017 +:102F6000240F001B0E001A4AA38F00681451FEACF8 +:102F70002404FFFF8F8500380A001D320080A02145 +:102F80000A001F3D240200278E0600288CA3002C77 +:102F900010C30008026020210A001F812402001FC4 +:102FA0000A001F812402000E026020210A001F81F6 +:102FB000240200258E04002C1080000D8F8F00301D +:102FC0008DE800740104C02B5700000C0260202122 +:102FD0008CB900140086A0210334282B10A0FF52C6 +:102FE0008F9F0044026020210A001F8124020022DA +:102FF000026020210A001F81240200230A001F8191 +:103000002402002627BDFFD8AFB3001CAFB10014C7 +:10301000AFBF0020AFB20018AFB000103C0280007C +:103020008C5201408C4B01483C048000000B8C0208 +:10303000322300FF317300FF8C8501B804A0FFFE2E +:1030400034900180AE1200008C8701442464FFF0AC +:10305000240600022C830013AE070004A61100080A +:10306000A206000BAE1300241060004F8FBF00209B +:10307000000448803C0A0801254A9534012A402171 +:103080008D04000000800008000000003C030800E0 +:103090008C6331A831693FFF00099980007280215B +:1030A000021370212405FF80264D0100264C00806C +:1030B0003C02800031B1007F3198007F31CA007F2F +:1030C0003C1F800A3C1980043C0F800C01C5202461 +:1030D00001A5302401853824014F1821AC46002475 +:1030E000023F402103194821AC470090AC4400281E +:1030F000AF830044AF880038AF8900300E0019005C +:10310000016080213C0380008C6B01B80560FFFEEC +:103110008F8700448F8600383465018090E8000D69 +:10312000ACB20000A4B0000600082600000416039C +:1031300000029027001227C21080008124C200885C +:10314000241F6082A4BF0008A0A000052402000282 +:10315000A0A2000B8F8B0030000424003C08270045 +:1031600000889025ACB20010ACA00014ACA00024E4 +:10317000ACA00028ACA0002C8D6900382413FF807F +:10318000ACA9001890E3000D02638024320500FF13 +:1031900010A000058FBF002090ED000D31AC007F26 +:1031A000A0EC000D8FBF00208FB3001C8FB2001861 +:1031B0008FB100148FB000103C0A10003C0E80004C +:1031C00027BD002803E00008ADCA01B8265F010052 +:1031D0002405FF8033F8007F3C06800003E5782457 +:1031E0003C19800A03192021ACCF0024908E00D412 +:1031F00000AE682431AC00FF11800024AF84003899 +:10320000248E008895CD00123C0C08008D8C31A8CE +:1032100031AB3FFF01924821000B5180012A402130 +:1032200001052024ACC400283107007F3C06800C37 +:1032300000E620219083000D00A31024304500FFFC +:1032400010A0FFD8AF8400449098000D330F0010F9 +:1032500015E0FFD58FBF00200E0019000000000010 +:103260003C0380008C7901B80720FFFE00000000BD +:10327000AE1200008C7F0144AE1F0004A6110008AE +:1032800024110002A211000BAE1300243C1308010C +:10329000927396F0327000015200FFC38FBF00207E +:1032A0000E002146024020210A0020638FBF00202B +:1032B0003C1260008E452C083C03F0033462FFFF93 +:1032C00000A2F824AE5F2C088E582C083C1901C0CF +:1032D00003199825AE532C080A0020638FBF0020E5 +:1032E000264D010031AF007F3C10800A240EFF8084 +:1032F00001F0282101AE60243C0B8000AD6C00245D +:103300001660FFA8AF85003824110003A0B100FCAF +:103310000A0020638FBF002026480100310A007F89 +:103320003C0B800A2409FF80014B30210109202435 +:103330003C078000ACE400240A002062AF8600381D +:10334000944E0012320C3FFF31CD3FFF15ACFF7D94 +:10335000241F608290D900D42418FF800319782498 +:1033600031EA00FF1140FF7700000000240700044D +:10337000A0C700FC8F870044241160842406000D40 +:10338000A4B10008A0A600050A00204D24020002F6 +:103390003C040001248496DC24030014240200FE73 +:1033A0003C010800AC2431EC3C010800AC2331E8BE +:1033B0003C010801A42296F83C040801248496F8F4 +:1033C0000000182100643021A0C300042463000120 +:1033D0002C6500FF54A0FFFC006430213C0708006E +:1033E00024E7010003E00008AF87007800A058211F +:1033F000008048210000102114A00012000050217C +:103400000A002142000000003C010801A42096F8B7 +:103410003C05080194A596F88F8200783C0C0801C1 +:10342000258C96F800E2182100AC2021014B302BAE +:10343000A089000400001021A460000810C0003919 +:10344000010048218F8600780009384000E94021BA +:103450000008388000E6282190A8000B90B9000AE7 +:103460000008204000881021000218800066C0215A +:10347000A319000A8F85007800E5782191EE000AF3 +:1034800091E6000B000E684001AE6021000C208028 +:1034900000851021A046000B3C030801906396F2C2 +:1034A000106000222462FFFF8F8300383C01080176 +:1034B000A02296F2906C00FF118000040000000032 +:1034C000906E00FF25CDFFFFA06D00FF3C190801A5 +:1034D000973996F8272300013078FFFF2F0F00FF60 +:1034E00011E0FFC9254A00013C010801A42396F818 +:1034F0003C05080194A596F88F8200783C0C0801E1 +:10350000258C96F800E2182100AC2021014B302BCD +:10351000A089000400001021A460000814C0FFC9A5 +:103520000100482103E000080000000003E000085B +:103530002402000227BDFFE0248501002407FF804C +:10354000AFB00010AFBF0018AFB1001400A718242F +:103550003C10800030A4007F3C06800A00862821B1 +:103560008E110024AE03002490A200FF1440000836 +:10357000AF850038A0A000098FBF0018AE1100244D +:103580008FB100148FB0001003E0000827BD0020A9 +:1035900090A900FD90A800FF312400FF0E0020F448 +:1035A000310500FF8F8500388FBF0018A0A00009EB +:1035B000AE1100248FB100148FB0001003E000089A +:1035C00027BD002027BDFFD0AFB20020AFB1001C47 +:1035D000AFB00018AFBF002CAFB40028AFB30024C9 +:1035E0003C0980009533011635320C00952F011AE5 +:1035F0003271FFFF023280218E08000431EEFFFF9E +:10360000248B0100010E6821240CFF8025A5FFFFFB +:10361000016C50243166007F3C07800AAD2A0024EB +:1036200000C73021AF850074AF8800703C010801ED +:10363000A02096F190C300090200D02100809821BB +:10364000306300FF2862000510400048AF86003854 +:10365000286400021480008E24140001240D00054B +:103660003C010801A02D96D590CC00FD3C0108013D +:10367000A02096D63C010801A02096D790CB000A46 +:10368000240AFF80318500FF014B4824312700FFC9 +:1036900010E0000C000058213C12800836510080D8 +:1036A0008E2F00308CD0005C01F0702305C0018E9D +:1036B0008F87007090D4000A3284007FA0C4000A73 +:1036C0008F8600383C118008363000808E0F003025 +:1036D0008F87007000EF702319C000EE000000001B +:1036E00090D4000924120002328400FF1092024795 +:1036F000000000008CC2005800E2F82327F9FFFF09 +:103700001B2001300000000090C5000924080004BF +:1037100030A300FF10680057240A00013C01080193 +:10372000A02A96D590C900FF252700013C01080179 +:10373000A02796D43C030801906396D52406000583 +:103740001066006A2C780005130000C40000902168 +:103750000003F8803C0408012484958003E4C82118 +:103760008F25000000A0000800000000241800FFC2 +:103770001078005C0000000090CC000A90CA00099C +:103780003C080801910896F13187008000EA48253D +:103790003C010801A02996DC90C500FD3C140801FD +:1037A000929496F2311100013C010801A02596DDAA +:1037B00090DF00FE3C010801A03F96DE90D200FFA2 +:1037C0003C010801A03296DF8CD900543C0108016D +:1037D000AC3996E08CD000583C010801AC3096E43E +:1037E0008CC3005C3C010801AC3496EC3C01080140 +:1037F000AC2396E8162000088FBF002C8FB4002859 +:103800008FB300248FB200208FB1001C8FB000183E +:1038100003E0000827BD00303C1180009624010E13 +:103820000E000FD43094FFFF3C0B08018D6B96F413 +:103830000260382102802821AE2B01803C13080150 +:103840008E7396D401602021240600830E00102F71 +:10385000AFB300108FBF002C8FB400288FB30024AB +:103860008FB200208FB1001C8FB0001803E0000859 +:1038700027BD00303C1808008F1831FC270F0001CD +:103880003C010800AC2F31FC0A0021D700000000E9 +:103890001474FFB900000000A0C000FF3C05080040 +:1038A0008CA531E43C0308008C6331E03C02080045 +:1038B0008C4232048F99003834A80001241F000282 +:1038C0003C010801AC2396F43C010801A02896F0C5 +:1038D0003C010801A02296F3A33F00090A002190B1 +:1038E0008F8600380E002146000000000A0021D714 +:1038F0008F8600383C1F080193FF96D424190001DD +:1039000013F902298F8700703C100801921096D895 +:103910003C06080190C696D610C000050200A02102 +:103920003C040801908496D9109001E48F870078B8 +:10393000001088408F9F0078023048210009C8801D +:10394000033F702195D80008270F0001A5CF00087C +:103950003C040801908496D93C05080190A596D6B0 +:103960000E0020F4000000008F8700780230202134 +:103970000004308000C720218C8500048F820074F1 +:1039800000A2402305020006AC8200048C8A0000DD +:103990008F830070014310235C400001AC83000062 +:1039A0008F86003890CB00FF2D6C00025580002DD3 +:1039B000241400010230F821001F40800107282153 +:1039C00090B9000B8CAE00040019C0400319782197 +:1039D000000F1880006710218C4D000001AE882375 +:1039E0002630FFFF5E00001F241400018C440004F9 +:1039F0008CAA0000008A482319200019240E000414 +:103A00003C010801A02E96D590AD000B8CAB0004B4 +:103A1000000D8840022D80210010108000471021E9 +:103A20008C44000401646023058202009443000872 +:103A300090DF00FE90B9000B33E500FF54B900049D +:103A40000107A021A0D400FE8F8700780107A021E4 +:103A50009284000B0E0020F4240500018F860038AC +:103A600024140001125400962E500001160000424A +:103A70003C08FFFF241900021659FF3F0000000018 +:103A8000A0C000FF8F860038A0D200090A0021D70D +:103A90008F86003890C700092404000230E300FF3D +:103AA0001064016F24090004106901528F880074AA +:103AB0008CCE0054010E682325B10001062001754B +:103AC000241800043C010801A03896D53C010801E7 +:103AD000A02096D490D400FD90D200FF2E4F00027B +:103AE00015E0FF14328400FF000438408F8900780D +:103AF00090DF00FF00E41021000220800089C8212F +:103B00002FE500029324000B14A0FF0A24070002F3 +:103B100000041840006480210010588001692821A9 +:103B20008CAC0004010C50230540FF020000000093 +:103B30003C030801906396D614600005246F0001D1 +:103B40003C010801A02496D93C010801A02796D782 +:103B50003C010801A02F96D690CE00FF24E700017B +:103B600031CD00FF01A7882B1220FFE990A4000BA4 +:103B70000A0021C6000000003C0508018CA596D46F +:103B80003C12000400A8F82413F2000624020005E9 +:103B90003C090801912996D5152000022402000352 +:103BA000240200053C010801A02296F190C700FF05 +:103BB00014E0012024020002A0C200090A0021D75B +:103BC0008F86003890CC00FF1180FEDA240A0001B5 +:103BD0008F8C00748F890078240F00030180682186 +:103BE0001160001E240E0002000540400105A021C6 +:103BF00000142080008990218E51000401918023BF +:103C00000600FECC000000003C020801904296D65F +:103C100014400005245800013C010801A02A96D751 +:103C20003C010801A02596D93C010801A03896D690 +:103C300090DF00FF010510210002C88033E500FF7E +:103C4000254A00010329202100AA402B1500FEB9B6 +:103C50009085000B1560FFE50005404000054040E1 +:103C600001051821000310803C010801A02A96D408 +:103C70003C010801A02596D8004918218C64000455 +:103C800000E4F82327F9FFFF1F20FFE900000000F0 +:103C90008C63000000E358230560013A01A38823E8 +:103CA00010E301170184C0231B00FEA200000000E6 +:103CB0003C010801A02E96D50A002305240B000123 +:103CC000240E0004A0CE00093C0D08008DAD31F893 +:103CD0008F86003825A200013C010800AC2231F893 +:103CE0000A0021D7000000008CD9005C00F9C02335 +:103CF0001F00FE7B000000008CDF005C10FFFF65F2 +:103D00008F8400748CC3005C008340232502000173 +:103D10001C40FF60000000008CC9005C248700018B +:103D200000E9282B10A0FE943C0D80008DAB01040F +:103D30003C0C0001016C50241140FE8F2402001045 +:103D40003C010801A02296F10A0021D700000000E2 +:103D50008F9100748F86003826220001ACC2005C6F +:103D60000A002292241400018F8700382404FF8067 +:103D70000000882190E9000A241400010124302564 +:103D8000A0E6000A3C05080190A596D63C0408016F +:103D9000908496D90E0020F4000000008F86003831 +:103DA0008F85007890C800FD310700FF0007404074 +:103DB0000107F821001FC0800305C8219323000BD1 +:103DC000A0C300FD8F8500788F8600380305602131 +:103DD000918F000B000F704001CF6821000D808093 +:103DE000020510218C4B0000ACCB00548D840004E4 +:103DF0008F83007400645023194000022482000164 +:103E00002462000101074821ACC2005C0009308037 +:103E100000C5402100E02021240500010E0020F40F +:103E20009110000B8F86003890C500FF10A0FF0C8A +:103E3000001070408F85007801D06821000D10803F +:103E4000004558218D6400008F8C0074018450233C +:103E50002547000104E0FF02263100013C03080170 +:103E6000906396D62E2F0002247800013C010801B1 +:103E7000A03896D63C010801A03496D711E0FEF890 +:103E8000020038210A002365000740408F84003873 +:103E90008F8300748C85005800A340230502FE9A8E +:103EA000AC8300580A00223B000000003C070801D8 +:103EB00090E796F2240200FF10E200BE8F860038E1 +:103EC0003C110801963196FA3C030801246396F8E8 +:103ED000262500013230FFFF30ABFFFF02036021D7 +:103EE0002D6A00FF1540008D918700043C010801F8 +:103EF000A42096FA8F88003800074840012728211F +:103F0000911800FF000530802405000127140001EE +:103F1000A11400FF3C120801925296F28F8800789B +:103F20008F8E0070264F000100C820213C0108013F +:103F3000A02F96F2AC8E00008F8D0074A48500082F +:103F4000AC8D00043C030801906396D414600077A4 +:103F5000000090213C010801A02596D4A087000B09 +:103F60008F8C007800CC5021A147000A8F82003846 +:103F7000A04700FD8F840038A08700FE8F860038A0 +:103F80008F9F0070ACDF00548F990074ACD900583B +:103F90008F8D00780127C02100185880016DA02165 +:103FA000928F000A000F704001CF18210003888013 +:103FB000022D8021A207000B8F8600780166602108 +:103FC000918A000B000A1040004A2021000428803A +:103FD00000A64021A107000A3C07800834E90080C0 +:103FE0008D2200308F860038ACC2005C0A0022921D +:103FF0002414000190CA00FF1540FEAD8F880074A4 +:10400000A0C400090A0021D78F860038A0C000FD97 +:104010008F98003824060001A30000FE3C0108012F +:10402000A02696D53C010801A02096D40A0021C6FE +:104030000000000090CB00FF3C040801908496F340 +:10404000316C00FF0184502B1540000F2402000347 +:1040500024020004A0C200090A0021D78F8600387C +:1040600090C3000A2410FF8002035824316C00FF23 +:104070001180FDC1000000003C010801A02096D580 +:104080000A0021C600000000A0C200090A0021D7D2 +:104090008F86003890D4000A2412FF8002544824EE +:1040A000312800FF1500FFF4240200083C0108013C +:1040B000A02296F10A0021D70000000000108840DD +:1040C0008F8B0070023018210003688001A7202127 +:1040D000AC8B00008F8A0074240C0001A48C0008B3 +:1040E000AC8A00043C05080190A596D62402000184 +:1040F00010A2FE1E24A5FFFF0A0022519084000B8F +:104100000184A0231A80FD8B000000003C010801FF +:10411000A02E96D50A002305240B00013C010801BE +:10412000A42596FA0A0023B78F880038240B0001D3 +:10413000106B00228F9800388F85003890BF00FFE9 +:1041400033F900FF1079002B000000003C1F08012C +:1041500093FF96D8001FC840033FC0210018A080DD +:104160000288782191EE000AA08E000A8F8D0078D7 +:104170003C030801906396D800CD88210A0023DD16 +:10418000A223000B263000010600003101A4902379 +:104190000640002B240200033C010801A02F96D505 +:1041A0000A002305240B00018F8900380A00223BF6 +:1041B000AD2700540A00229124120001931400FD3F +:1041C000A094000B8F8800388F8F0078910E00FE2E +:1041D00000CF6821A1AE000A8F910038A22700FD10 +:1041E0008F8300708F900038AE0300540A0023DEE6 +:1041F0008F8D007890B000FEA090000A8F8B003861 +:104200008F8C0078916A00FD00CC1021A04A000B31 +:104210008F840038A08700FE8F8600748F85003859 +:10422000ACA600580A0023DE8F8D007894B80008F1 +:10423000ACA40004030378210A002285A4AF00087F +:104240003C010801A02296D50A0021C6000000000A +:1042500090CF0009240D000431EE00FF11CDFD8543 +:10426000240200013C010801A02296D50A0021C6C3 +:1042700000000000080033440800334408003420E4 +:10428000080033F4080033D8080033280800332826 +:10429000080033280800334C8008010080080080A3 +:1042A000800800005F865437E4AC62CC50103A4579 +:1042B00036621985BF14C0E81BC27A1E84F4B55655 +:1042C000094EA6FE7DDA01E7C04D748108005A74DC +:1042D00008005AB808005A5C08005A5C08005A5C8A +:1042E00008005A5C08005A7408005A5C08005A5CBE +:1042F00008005AC008005A5C080059D408005A5CEB +:1043000008005A5C08005AC008005A5C08005A5C51 +:1043100008005A5C08005A5C08005A5C08005A5CA5 +:1043200008005A5C08005A5C08005A5C08005A5C95 +:1043300008005A9408005A5C08005A9408005A5C15 +:1043400008005A5C08005A5C08005A9808005A9401 +:1043500008005A5C08005A5C08005A5C08005A5C65 +:1043600008005A5C08005A5C08005A5C08005A5C55 +:1043700008005A5C08005A5C08005A5C08005A5C45 +:1043800008005A5C08005A5C08005A5C08005A5C35 +:1043900008005A5C08005A5C08005A5C08005A5C25 +:1043A00008005A9808005A9808005A5C08005A9861 +:1043B00008005A5C08005A5C08005A5C08005A5C05 +:1043C00008005A5C08005A5C08005A5C08005A5CF5 +:1043D00008005A5C08005A5C08005A5C08005A5CE5 +:1043E00008005A5C08005A5C08005A5C08005A5CD5 +:1043F00008005A5C08005A5C08005A5C08005A5CC5 +:1044000008005A5C08005A5C08005A5C08005A5CB4 +:1044100008005A5C08005A5C08005A5C08005A5CA4 +:1044200008005A5C08005A5C08005A5C08005A5C94 +:1044300008005A5C08005A5C08005A5C08005A5C84 +:1044400008005A5C08005A5C08005A5C08005A5C74 +:1044500008005A5C08005A5C08005A5C08005A5C64 +:1044600008005A5C08005A5C08005A5C08005A5C54 +:1044700008005A5C08005A5C08005A5C08005A5C44 +:1044800008005A5C08005A5C08005A5C08005A5C34 +:1044900008005A5C08005A5C08005A5C08005A5C24 +:1044A00008005A5C08005A5C08005A5C08005A5C14 +:1044B00008005A5C08005A5C08005A5C08005A5C04 +:1044C00008005A5C08005A5C08005A5C08005ADC74 +:1044D0000800782C08007A900800783808007628C0 +:1044E00008007838080078C4080078380800762872 +:1044F0000800762808007628080076280800762824 +:104500000800762808007628080076280800762813 +:1045100008007628080078580800784808007628AF +:1045200008007628080076280800762808007628F3 +:1045300008007628080076280800762808007628E3 +:1045400008007628080076280800762808007848B1 +:10455000080082FC08008188080082C40800818865 +:104560000800829408008070080081880800818813 +:1045700008008188080081880800818808008188F7 +:1045800008008188080081880800818808008188E7 +:104590000800818808008188080081B008008D34F7 +:1045A00008008E9008008E70080088D808008D4C96 +:1045B0000A00012400000000000000000000000DBF +:1045C000747061362E322E31620000000602010145 +:1045D00000000000000000000000000000000000DB +:1045E00000000000000000000000000000000000CB +:1045F00000000000000000000000000000000000BB +:1046000000000000000000000000000000000000AA +:10461000000000000000000000000000000000009A +:10462000000000000000000000000000000000008A +:10463000000000000000000000000000000000007A +:104640000000000010000003000000000000000D4A +:104650000000000D3C020800244217203C03080023 +:1046600024632A10AC4000000043202B1480FFFD7F +:10467000244200043C1D080037BD2FFC03A0F0219C +:104680003C100800261004903C1C0800279C1720B2 +:104690000E000262000000000000000D2402FF80F6 +:1046A00027BDFFE000821024AFB00010AF42002011 +:1046B000AFBF0018AFB10014936500043084007FD1 +:1046C000034418213C0200080062182130A5002094 +:1046D000036080213C080111277B000814A0000220 +:1046E0002466005C2466005892020004974301048B +:1046F000920400043047000F3063FFFF3084004015 +:10470000006728231080000900004821920200055C +:1047100030420004104000050000000010A000031B +:104720000000000024A5FFFC2409000492020005FB +:1047300030420004104000120000000010A00010E1 +:10474000000000009602000200A72021010440257D +:104750002442FFFEA7421016920300042402FF80A9 +:1047600000431024304200FF104000033C020400CC +:104770000A000174010240258CC20000AF421018EB +:104780008F4201780440FFFE2402000AA742014044 +:1047900096020002240400093042000700021023A0 +:1047A00030420007A7420142960200022442FFFE67 +:1047B000A7420144A740014697420104A74201488D +:1047C0008F420108304200205040000124040001C3 +:1047D00092020004304200101440000234830010A2 +:1047E00000801821A743014A0000000000000000DB +:1047F0000000000000000000AF48100000000000B2 +:104800000000000000000000000000008F421000C7 +:104810000441FFFE3102FFFF1040000700000000CE +:1048200092020004304200401440000300000000E7 +:104830008F421018ACC20000960200063042FFFF03 +:10484000244200020002104300021040036288214B +:10485000962200001120000D3044FFFF00A7102118 +:104860008F8300388F45101C0002108200021080D8 +:1048700000431021AC45000030A6FFFF0E00058D5F +:1048800000052C0200402021A62200009203000413 +:104890002402FF8000431024304200FF1040001F1C +:1048A0000000000092020005304200021040001B90 +:1048B000000000009742100C2442FFFEA742101691 +:1048C000000000003C02040034420030AF421000FF +:1048D00000000000000000000000000000000000D8 +:1048E0008F4210000441FFFE000000009742100CB0 +:1048F0008F45101C3042FFFF24420030000210821E +:1049000000021080005B1021AC45000030A6FFFFC4 +:104910000E00058D00052C02A62200009604000260 +:10492000248400080E0001E93084FFFF974401044D +:104930000E0001F73084FFFF8FBF00188FB1001405 +:104940008FB000103C02100027BD002003E00008DB +:10495000AF4201783084FFFF308200078F8500244A +:1049600010400002248300073064FFF800A41021E7 +:1049700030421FFF03421821247B4000AF850028EE +:10498000AF82002403E00008AF4200843084FFFFC0 +:104990003082000F8F85002C8F860034104000027B +:1049A0002483000F3064FFF000A410210046182B70 +:1049B000AF8500300046202314600002AF82002C37 +:1049C000AF84002C8F82002C340480000342182115 +:1049D00000641821AF83003803E00008AF42008074 +:1049E0008F820014104000088F8200048F82FFDC49 +:1049F000144000058F8200043C02FFBF3442FFFFD9 +:104A0000008220248F82000430430006240200022A +:104A10001062000F3C0201012C62000350400005AF +:104A2000240200041060000F3C0200010A00023062 +:104A30000000000010620005240200061462000C51 +:104A40003C0201110A000229008210253C020011DB +:104A500000821025AF421000240200010A0002303B +:104A6000AF82000C00821025AF421000AF80000C16 +:104A700000000000000000000000000003E000084B +:104A8000000000008F82000C1040000400000000B5 +:104A90008F4210000441FFFE0000000003E0000808 +:104AA000000000008F8200102443F800000231C291 +:104AB00024C2FFF02C6303011060000300021042C7 +:104AC0000A000257AC8200008F85001800C5102B29 +:104AD0001440000B0000182100C5102324470001DA +:104AE0008F82001C00A210212442FFFF0046102BE1 +:104AF000544000042402FFFF0A000257AC87000064 +:104B00002402FFFF0A000260AC8200008C820000D9 +:104B10000002194000621821000318800062182169 +:104B2000000318803C0208002442175C0062182130 +:104B300003E000080060102127BDFFD8AFBF0020B0 +:104B4000AFB1001CAFB000183C0460088C8250006C +:104B50002403FF7F3C066000004310243442380CDD +:104B6000AC8250008CC24C1C3C1A80000002160221 +:104B70003042000F10400007AF82001C8CC34C1C59 +:104B80003C02001F3442FC0000621824000319C2DA +:104B9000AF8300188F420008275B400034420001B9 +:104BA000AF420008AF8000243C02601CAF40008090 +:104BB000AF4000848C4500088CC308083402800094 +:104BC000034220212402FFF0006218243C020080EE +:104BD0003C010800AC2204203C025709AF84003895 +:104BE00014620004AF850034240200010A0002921E +:104BF000AF820014AF8000148F42000038420001E1 +:104C0000304200011440FFFC8F8200141040001657 +:104C10000000000097420104104000058F8300004F +:104C2000146000072462FFFF0A0002A72C62000A3A +:104C30002C620010504000048F83000024620001A9 +:104C4000AF8200008F8300002C62000A1440000332 +:104C50002C6200070A0002AEAF80FFDC10400002A9 +:104C600024020001AF82FFDC8F4301088F44010062 +:104C700030622000AF83000410400008AF840010B1 +:104C80003C0208008C42042C244200013C01080034 +:104C9000AC22042C0A00058A3C0240003065020068 +:104CA00014A0000324020F001482026024020D00ED +:104CB00097420104104002C83C02400030624000AC +:104CC000144000AD8F8200388C4400088F42017878 +:104CD0000440FFFE24020800AF42017824020008CD +:104CE000A7420140A7400142974201048F8400047B +:104CF0003051FFFF30820001104000070220802168 +:104D00002623FFFE240200023070FFFFA742014667 +:104D10000A0002DBA7430148A74001463C02080005 +:104D20008C42043C1440000D8F8300103082002020 +:104D30001440000224030009240300010060202124 +:104D40008F830010240209005062000134840004A3 +:104D5000A744014A0A0002F60000000024020F00E6 +:104D60001462000530820020144000062403000D68 +:104D70000A0002F524030005144000022403000980 +:104D800024030001A743014A3C0208008C4204208E +:104D90003C0400480E00020C004420250E000235A1 +:104DA000000000008F82000C1040003E0000000058 +:104DB0008F4210003C0300200043102410400039B3 +:104DC0008F820004304200021040003600000000D4 +:104DD000974210141440003300000000974210085E +:104DE0008F8800383042FFFF2442000600021882FC +:104DF0000003388000E83021304300018CC40000FB +:104E000010600004304200030000000D0A00033768 +:104E100000E81021544000103084FFFF3C05FFFFE4 +:104E200000852024008518260003182B0004102B71 +:104E300000431024104000050000000000000000A6 +:104E40000000000D00000000240002228CC20000BF +:104E50000A000336004520253883FFFF0003182B86 +:104E60000004102B00431024104000050000000037 +:104E7000000000000000000D000000002400022BD4 +:104E80008CC200003444FFFF00E81021AC44000055 +:104E90003C0208008C420430244200013C0108001E +:104EA000AC2204308F6200008F840038AF8200088B +:104EB0008C8300003402FFFF1462000F00001021F9 +:104EC0003C0508008CA504543C0408008C84045064 +:104ED00000B0282100B0302B008220210086202144 +:104EE0003C010800AC2504543C010800AC240450EB +:104EF0000A000580240400088C8200003042010072 +:104F00001040000F000010213C0508008CA5044C47 +:104F10003C0408008C84044800B0282100B0302BE9 +:104F200000822021008620213C010800AC25044C91 +:104F30003C010800AC2404480A0005802404000851 +:104F40003C0508008CA504443C0408008C84044003 +:104F500000B0282100B0302B0082202100862021C3 +:104F60003C010800AC2504443C010800AC2404408A +:104F70000A000580240400088F6200088F62000088 +:104F800000021602304300F02402003010620005D7 +:104F900024020040106200E08F8200200A00058891 +:104FA0002442000114A000050000000000000000E1 +:104FB0000000000D00000000240002568F4201781E +:104FC0000440FFFE000000000E00023D27A4001078 +:104FD0001440000500408021000000000000000D8A +:104FE000000000002400025D8E0200001040000559 +:104FF00000000000000000000000000D00000000A4 +:10500000240002608F62000C0443000324020001AC +:105010000A00042EAE000000AE0200008F820038AD +:105020008C480008A20000078F65000C8F64000404 +:1050300030A3FFFF0004240200852023308200FFFC +:105040000043102124420005000230832CC200815D +:10505000A605000A14400005A20400040000000098 +:105060000000000D00000000240002788F85003849 +:105070000E0005AB260400148F6200048F43010864 +:10508000A60200083C02100000621824106000080C +:105090000000000097420104920300072442FFEC45 +:1050A000346300023045FFFF0A0003C3A203000778 +:1050B000974201042442FFF03045FFFF96060008A6 +:1050C0002CC200135440000592030007920200070F +:1050D00034420001A20200079203000724020001EB +:1050E00010620005240200031062000B8F8200385A +:1050F0000A0003E030C6FFFF8F8200383C04FFFF48 +:105100008C43000C0064182400651825AC43000C87 +:105110000A0003E030C6FFFF3C04FFFF8C43001091 +:105120000064182400651825AC43001030C6FFFF4A +:1051300024C2000200021083A20200058F830038FF +:10514000304200FF00021080004328218CA800009C +:105150008CA2000024030004000217021443001272 +:1051600000000000974201043C03FFFF01031824E4 +:105170003042FFFF004610232442FFFE006240251C +:10518000ACA8000092030005306200FF000210800E +:1051900000501021904200143042000F00431021B3 +:1051A0000A000415A20200068CA400049742010420 +:1051B0009603000A3088FFFF3042FFFF00461023AD +:1051C0002442FFD60002140001024025ACA80004CE +:1051D000920200079204000524630028000318834C +:1051E0000064182134420004A2030006A202000752 +:1051F0008F8200042403FFFB34420002004310248A +:10520000AF820004920300068F87003800031880E5 +:10521000007010218C4400203C02FFF63442FFFF56 +:105220000082402400671821AE04000CAC68000C1A +:10523000920500063C03FF7F8E02000C00052880CB +:1052400000B020213463FFFF01033024948800263E +:1052500000A7282100431024AE02000CAC860020D9 +:10526000AC880024ACA8001024020010A742014022 +:1052700024020002A7400142A7400144A742014680 +:10528000974201043C0400082442FFFEA742014863 +:10529000240200010E00020CA742014A9603000AF4 +:1052A0009202000400431021244200023042000711 +:1052B00000021023304200070E000235AE0200103B +:1052C0008F6200003C0308008C6304442404001037 +:1052D000AF820008974201043042FFFF2442FFFEE4 +:1052E00000403821000237C33C0208008C420440D1 +:1052F000006718210067282B004610210045102167 +:105300003C010800AC2304443C010800AC220440EA +:105310000A0005150000000014A0000500000000B0 +:10532000000000000000000D000000002400030A3F +:105330008F4201780440FFFE000000000E00023D95 +:1053400027A4001414400005004080210000000044 +:105350000000000D00000000240003118E02000078 +:105360005440000692020007000000000000000DFB +:10537000000000002400031C9202000730420004D9 +:10538000104000058F8200042403FFFB344200021A +:1053900000431024AF8200048F620004044300081D +:1053A00092020007920200068E03000CAE0000007D +:1053B0000002108000501021AC4300209202000730 +:1053C00030420004544000099602000A920200058F +:1053D0003C03000100021080005010218C46001890 +:1053E00000C33021AC4600189602000A9206000461 +:1053F000277100080220202100C2302124C60005A8 +:10540000260500140E0005AB00063082920400064B +:105410008F6500043C027FFF000420800091202162 +:105420008C8300043442FFFF00A228240065182169 +:10543000AC8300049202000792040005920300046A +:10544000304200041040001496070008308400FF2A +:1054500000042080009120218C86000497420104E2 +:105460009605000A306300FF3042FFFF0043102121 +:105470000045102130E3FFFF004310232442FFD8F2 +:1054800030C6FFFF0002140000C23025AC860004C5 +:105490000A0004C992030007308500FF0005288038 +:1054A00000B128218CA4000097420104306300FF62 +:1054B0003042FFFF00431021004710233C03FFFF51 +:1054C000008320243042FFFF00822025ACA400008E +:1054D0009203000724020001106200060000000091 +:1054E0002402000310620011000000000A0004EC16 +:1054F0008E03001097420104920300049605000AEF +:105500008E24000C00431021004510212442FFF29C +:105510003C03FFFF008320243042FFFF0082202550 +:10552000AE24000C0A0004EC8E0300109742010424 +:10553000920300049605000A8E24001000431021F7 +:10554000004510212442FFEE3C03FFFF008320248E +:105550003042FFFF00822025AE2400108E03001091 +:105560002402000AA7420140A74301429603000A11 +:10557000920200043C04004000431021A742014471 +:10558000A740014697420104A742014824020001B6 +:105590000E00020CA742014A0E0002350000000076 +:1055A0008F6200009203000400002021AF820008F7 +:1055B000974201049606000A3042FFFF006218215C +:1055C000006028213C0308008C6304443C0208006E +:1055D0008C42044000651821004410210065382BDE +:1055E000004710213C010800AC2304443C010800A2 +:1055F000AC22044092040004008620212484000A86 +:105600003084FFFF0E0001E9000000009744010410 +:105610003084FFFF0E0001F7000000003C02100084 +:10562000AF4201780A0005878F820020148200278C +:105630003062000697420104104000673C024000BF +:105640003062400010400005000000000000000033 +:105650000000000D00000000240004208F420178AB +:105660000440FFFE24020800AF4201782402000833 +:10567000A7420140A74001428F82000497430104E2 +:1056800030420001104000073070FFFF2603FFFE8C +:1056900024020002A7420146A74301480A00053F31 +:1056A0002402000DA74001462402000DA742014A32 +:1056B0008F62000024040008AF8200080E0001E998 +:1056C000000000000A0005190200202110400042DD +:1056D0003C02400093620000304300F024020010BE +:1056E0001062000524020070106200358F820020D5 +:1056F0000A000588244200018F62000097430104DC +:105700003050FFFF3071FFFF8F4201780440FFFEF1 +:105710003202000700021023304200072403000A6F +:105720002604FFFEA7430140A7420142A7440144CB +:10573000A7400146A75101488F420108304200208E +:10574000144000022403000924030001A743014A76 +:105750000E00020C3C0400400E0002350000000068 +:105760003C0708008CE70444021110212442FFFE8C +:105770003C0608008CC604400040182100E3382194 +:10578000000010218F65000000E3402B00C2302193 +:105790002604000800C830213084FFFFAF850008D0 +:1057A0003C010800AC2704443C010800AC2604403E +:1057B0000E0001E9000000000A0005190220202166 +:1057C0000E00013B000000008F82002024420001F7 +:1057D000AF8200203C024000AF4201380A00029232 +:1057E000000000003084FFFF30C6FFFF00052C00E2 +:1057F00000A628253882FFFF004510210045282BF0 +:105800000045102100021C023042FFFF004310211E +:1058100000021C023042FFFF004310213842FFFF0C +:1058200003E000083042FFFF3084FFFF30A5FFFF98 +:1058300000001821108000070000000030820001E5 +:105840001040000200042042006518210A0005A152 +:105850000005284003E000080060102110C0000689 +:1058600024C6FFFF8CA2000024A50004AC82000027 +:105870000A0005AB2484000403E0000800000000D7 +:1058800010A0000824A3FFFFAC8600000000000069 +:10589000000000002402FFFF2463FFFF1462FFFAF0 +:1058A0002484000403E00008000000000000000160 +:1058B0000A00002A00000000000000000000000DA7 +:1058C000747870362E322E3162000000060201001C +:1058D00000000000000001360000EA600000000047 +:1058E00000000000000000000000000000000000B8 +:1058F00000000000000000000000000000000000A8 +:105900000000000000000000000000000000000097 +:105910000000001600000000000000000000000071 +:105920000000000000000000000000000000000077 +:105930000000000000000000000000000000000067 +:1059400000000000000000000000138800000000BC +:10595000000005DC00000000000000001000000353 +:10596000000000000000000D0000000D3C020800D7 +:1059700024423D683C0308002463401CAC40000006 +:105980000043202B1480FFFD244200043C1D08002E +:1059900037BD7FFC03A0F0213C100800261000A8B2 +:1059A0003C1C0800279C3D680E00044E00000000CF +:1059B0000000000D27BDFFB4AFA10000AFA200049E +:1059C000AFA30008AFA4000CAFA50010AFA6001451 +:1059D000AFA70018AFA8001CAFA90020AFAA0024F1 +:1059E000AFAB0028AFAC002CAFAD0030AFAE003491 +:1059F000AFAF0038AFB8003CAFB90040AFBC004417 +:105A0000AFBF00480E000591000000008FBF0048A6 +:105A10008FBC00448FB900408FB8003C8FAF003876 +:105A20008FAE00348FAD00308FAC002C8FAB0028D0 +:105A30008FAA00248FA900208FA8001C8FA7001810 +:105A40008FA600148FA500108FA4000C8FA3000850 +:105A50008FA200048FA1000027BD004C3C1B6004F6 +:105A60008F7A5030377B502803400008AF7A00000F +:105A70008F86003C3C0390003C0280000086282575 +:105A800000A32025AC4400203C0380008C6700204C +:105A900004E0FFFE0000000003E00008000000003A +:105AA0000A000070240400018F85003C3C04800043 +:105AB0003483000100A3102503E00008AC8200201D +:105AC00003E00008000010213084FFFF30A5FFFF35 +:105AD00010800007000018213082000110400002F1 +:105AE00000042042006518211480FFFB00052840B7 +:105AF00003E000080060102110C000070000000053 +:105B00008CA2000024C6FFFF24A50004AC82000084 +:105B100014C0FFFB2484000403E000080000000020 +:105B200010A0000824A3FFFFAC86000000000000C6 +:105B3000000000002402FFFF2463FFFF1462FFFA4D +:105B40002484000403E000080000000090AA003153 +:105B50008FAB00108CAC00403C0300FF8D6800044C +:105B6000AD6C00208CAD004400E060213462FFFF8A +:105B7000AD6D00248CA700483C09FF000109C0243A +:105B8000AD6700288CAE004C0182C824031978252B +:105B9000AD6F0004AD6E002C8CAD0038314A00FFB3 +:105BA000AD6D001C94A900323128FFFFAD680010D4 +:105BB00090A70030A5600002A1600004A16700006A +:105BC00090A30032306200FF0002198210600005CD +:105BD000240500011065000E0000000003E000082D +:105BE000A16A00018CD80028354A0080AD780018E1 +:105BF0008CCF0014AD6F00148CCE0030AD6E000859 +:105C00008CC4002CA16A000103E00008AD64000C04 +:105C10008CCD001CAD6D00188CC90014AD6900144A +:105C20008CC80024AD6800088CC70020AD67000C4C +:105C30008CC200148C8300700043C82B1320000713 +:105C4000000000008CC20014144CFFE400000000AF +:105C5000354A008003E00008A16A00018C820070D0 +:105C60000A0000E6000000009089003027BDFFF820 +:105C70008FA8001CA3A900008FA300003C0DFF808B +:105C800035A2FFFF8CAC002C00625824AFAB0000A3 +:105C9000A100000400C05821A7A000028D06000446 +:105CA00000A048210167C8218FA500000080502175 +:105CB0003C18FF7F032C20263C0E00FF2C8C00019B +:105CC000370FFFFF35CDFFFF3C02FF0000AFC824B8 +:105CD00000EDC02400C27824000C1DC003236825F9 +:105CE00001F87025AD0D0000AD0E00048D240024D8 +:105CF000AFAD0000AD0400088D2C00202404FFFF90 +:105D0000AD0C000C9547003230E6FFFFAD060010E9 +:105D10009145004830A200FF000219C25060000106 +:105D20008D240034AD0400148D4700388FAA00186C +:105D300027BD0008AD0B0028AD0A0024AD07001CEC +:105D4000AD00002CAD00001803E00008AD000020FD +:105D500027BDFFE0AFB20018AFB10014AFB0001024 +:105D6000AFBF001C9098003000C088213C0D00FFA0 +:105D7000330F007FA0CF0000908E003135ACFFFFC5 +:105D80003C0AFF00A0CE000194A6001EA220000441 +:105D90008CAB00148E29000400A08021016C282403 +:105DA000012A40240080902101052025A62600021A +:105DB000AE24000426050020262400080E000092D0 +:105DC00024060002924700302605002826240014ED +:105DD00000071E000003160324060004044000030D +:105DE0002403FFFF965900323323FFFF0E00009279 +:105DF000AE230010262400248FBF001C8FB2001891 +:105E00008FB100148FB00010240500030000302172 +:105E10000A00009C27BD002027BDFFD8AFB1001CA1 +:105E2000AFB00018AFBF002090A9003024020001DD +:105E300000E050213123003F00A040218FB00040FE +:105E40000080882100C04821106200148FA700380C +:105E5000240B000500A0202100C02821106B001396 +:105E6000020030210E000128000000009225007C75 +:105E700030A400021080000326030030AE00003082 +:105E8000260300348FBF00208FB1001C8FB0001894 +:105E90000060102103E0000827BD00280E0000A7C5 +:105EA000AFB000100A00016F000000008FA3003C9B +:105EB000010020210120282101403021AFA3001042 +:105EC0000E0000EEAFB000140A00016F00000000E9 +:105ED0003C06800034C20E008C4400108F850044C4 +:105EE000ACA400208C43001803E00008ACA30024FD +:105EF0003C06800034C20E008C4400148F850044A0 +:105F0000ACA400208C43001C03E00008ACA30024D8 +:105F10009382000C1040001B2483000F2404FFF028 +:105F20000064382410E00019978B00109784000E4D +:105F30009389000D3C0A601C0A0001AC01644023F7 +:105F400001037021006428231126000231C2FFFFE3 +:105F500030A2FFFF0047302B50C0000E00E4482164 +:105F60008D4D000C31A3FFFF00036400000C2C03D7 +:105F700004A1FFF30000302130637FFF0A0001A479 +:105F80002406000103E00008000000009784000ED2 +:105F900000E448213123FFFF3168FFFF0068382B00 +:105FA00054E0FFF8A783000E938A000D114000050E +:105FB000240F0001006BC023A380000D03E0000844 +:105FC000A798000E006BC023A38F000D03E000080C +:105FD000A798000E03E000080000000027BDFFE8BE +:105FE000AFB000103C10800036030140308BFFFF43 +:105FF00093AA002BAFBF0014A46B000436040E005C +:106000009488001630C600FF8FA90030A4680006EF +:10601000AC650008A0660012A46A001AAC670020F4 +:106020008FA5002CA4690018012020210E000198E2 +:10603000AC6500143C021000AE0201788FBF001462 +:106040008FB0001003E0000827BD00188F85000006 +:106050002484000727BDFFF83084FFF83C06800049 +:1060600094CB008A316AFFFFAFAA00008FA900001D +:10607000012540232507FFFF30E31FFF0064102B9D +:106080001440FFF700056882000D288034CC4000E2 +:1060900000AC102103E0000827BD00088F8200003B +:1060A0002486000730C5FFF800A2182130641FFFC6 +:1060B00003E00008AF8400008F87003C8F84004419 +:1060C00027BDFFB0AFB70044AFB40038AFB1002C6C +:1060D000AFBF0048AFB60040AFB5003CAFB300342F +:1060E000AFB20030AFB000283C0B80008C8600249B +:1060F000AD6700808C8A002035670E00356901008D +:10610000ACEA00108C8800248D2500040000B82122 +:10611000ACE800188CE3001000A688230000A02142 +:10612000ACE300148CE20018ACE2001C122000FE6C +:1061300000E0B021936C0008118000F40000000022 +:10614000976F001031EEFFFF022E682B15A000EFB5 +:1061500000000000977200103250FFFFAED0000028 +:106160003C0380008C740000329300081260FFFD35 +:106170000000000096D800088EC700043305FFFF1A +:1061800030B5000112A000E4000000000000000D86 +:1061900030BFA0402419004013F9011B30B4A00007 +:1061A000128000DF000000009373000812600008F6 +:1061B00000000000976D001031ACFFFF00EC202BB9 +:1061C0001080000330AE004011C000D50000000078 +:1061D000A7850040AF87003893630008022028217C +:1061E000AFB10020146000F527B40020AF60000CB0 +:1061F000978F004031F14000162000022403001662 +:106200002403000E24054007A363000AAF650014B1 +:10621000938A00428F70001431550001001512401E +:1062200002024825AF690014979F00408F78001440 +:1062300033F9001003194025AF680014979200400D +:106240003247000810E0016E000000008F67001464 +:106250003C1210003C11800000F27825AF6F001452 +:1062600036230E00946E000A3C0D81002406000EB9 +:1062700031CCFFFF018D2025AF640004A36600022E +:106280009373000A3406FFFC266B0004A36B000A1C +:1062900097980040330820001100015F00000000C3 +:1062A0003C05800034A90E00979900409538000CF9 +:1062B00097870040001940423312C00031030003A9 +:1062C00000127B0330F11000006F6825001172038B +:1062D00001AE6025000C20C0A76400129793004017 +:1062E000936A000A001359823175003C02AA1021FA +:1062F0002450003CA3700009953F000C33F93FFF88 +:10630000A779001097700012936900090130F821F5 +:1063100027E5000230B900070019C0233308000741 +:10632000A368000B9371000997720012976F001019 +:10633000322700FF8F910038978D004000F218211E +:10634000006F702101C6602131A6004010C0000519 +:106350003185FFFF00B1102B3C1280001040001768 +:10636000000098210225A82B56A0013E8FA50020F1 +:106370003C048000348A0E008D5300143C068000DB +:10638000AD5300108D4B001CAD4B0018AD45000007 +:106390008CCD000031AC00081180FFFD34CE0E0022 +:1063A00095C3000800A0882100009021A783004029 +:1063B0008DC6000424130001AF860038976F0010CB +:1063C00031F5FFFF8E9F000003F1282310A0011F6D +:1063D000AE85000093620008144000DD000000005C +:1063E0000E0001E7240400108F900048004028218F +:1063F0003C023200320600FF000654000142F8253C +:1064000026090001AF890048ACBF0000937900095C +:1064100097780012936F000A332800FF3303FFFFC1 +:106420000103382100076C0031EE00FF01AE60254A +:10643000ACAC00048F840048978B0040316A200088 +:106440001140010AACA4000897640012308BFFFFD2 +:1064500006400108ACAB000C978E004031C5000827 +:1064600014A0000226280006262800023C1F8000F7 +:1064700037E70E0094F900148CE5001C8F670004C8 +:10648000937800023324FFFF330300FFAFA3001013 +:106490008F6F0014AFA800180E0001CBAFAF00142F +:1064A000240400100E0001FB000000008E9200008A +:1064B00016400005000000008F7800142403FFBF81 +:1064C0000303A024AF7400148F67000C00F5C821EB +:1064D000AF79000C9375000816A0000800000000BA +:1064E00012600006000000008F6800143C0AEFFFF5 +:1064F0003549FFFE0109F824AF7F0014A37300089B +:106500008FA500200A00034F02202021AED10000F9 +:106510000A00022D3C03800014E0FF1E30BFA040A3 +:106520000E0001900000A0212E9100010237B0253D +:1065300012C000188FBF00488F87003C24170F003F +:1065400010F700D43C0680008CD901780720FFFEAC +:10655000241F0F0010FF00F634CA0E008D560014E1 +:1065600034C7014024080240ACF600048D49001CE9 +:106570003C141000ACE90008A0E00012A4E0001AEE +:10658000ACE00020A4E00018ACE80014ACD4017822 +:106590008FBF00488FB700448FB600408FB5003CD6 +:1065A0008FB400388FB300348FB200308FB1002C1D +:1065B0008FB0002803E0000827BD00508F910038FD +:1065C000978800403C1280000220A821310700403B +:1065D00014E0FF7C00009821977900108F9200381A +:1065E0003338FFFF131200A8000020210080A021F3 +:1065F000108000F300A088211620FECE00000000CD +:106600000A00031F2E9100013C0380008C62017878 +:106610000440FFFE240808008F860000AC68017863 +:106620003C038000946D008A31ACFFFF0186582343 +:10663000256AFFFF31441FFF2C8900081520FFF950 +:10664000000000008F8F0048347040008F83003CB2 +:1066500000E0A021240E0F0025E70001AF870048CD +:1066600000D03021023488233C08800031F500FF3F +:10667000106E0005240700019398004233130001B7 +:106680000013924036470001001524003C0A010027 +:10669000008A4825ACC900008F82004830BF003610 +:1066A00030B90008ACC200041320009900FF9825FF +:1066B00035120E009650000A8F8700003C0F8100B3 +:1066C0003203FFFF24ED000835060140006F60250E +:1066D0003C0E100031AB1FFF269200062405000E71 +:1066E000ACCC0020026E9825A4C5001AAF8B000028 +:1066F000A4D20018162000083C1080008F89003CAE +:1067000024020F00512200022417000136730040BA +:106710000E0001883C10800036060E008CCB001461 +:10672000360A014002402021AD4B00048CC5001CFC +:10673000AD450008A1550012AD5300140E0001989C +:106740003C151000AE1501780A000352000000004D +:10675000936F0009976E0012936D000B31E500FFF7 +:1067600000AE202131AC00FF008C80212602000AFF +:106770003050FFFF0E0001E7020020218F86004805 +:106780003C0341003C05800024CB0001AF8B004856 +:10679000936A00099769001230C600FF315F00FF5D +:1067A0003128FFFF03E8382124F900020006C40065 +:1067B0000319782501E37025AC4E00008F6D000CA5 +:1067C00034A40E00948B001401B26025AC4C00047C +:1067D0008C85001C8F670004936A00023164FFFF00 +:1067E000314900FFAFA900108F680014AFB1001845 +:1067F0000E0001CBAFA800140A0002FD0200202108 +:10680000AF600004A36000029798004033082000A6 +:106810001500FEA300003021A760001297840040FD +:10682000936B000A3C10800030931F0000135183CB +:10683000014BA82126A20028A362000936090E00F8 +:10684000953F000C0A000295A77F00108F7000147E +:10685000360900400E000188AF6900140A0002C921 +:10686000000000000A00034F000020210641FEFA4C +:10687000ACA0000C8CAC000C3C0D8000018D902570 +:106880000A0002EAACB2000C000090210A0002C526 +:1068900024130001128000073C028000344B0E00DC +:1068A0009566000830D300401260004900000000E7 +:1068B0003C0680008CD001780600FFFE34C50E0037 +:1068C00094B500103C03050034CC014032B8FFFF02 +:1068D00003039025AD92000C8CAF0014240D200012 +:1068E0003C041000AD8F00048CAE001CAD8E00087F +:1068F000A1800012A580001AAD800020A58000189C +:10690000AD8D0014ACC401780A0003263C0680005B +:106910008F9F0000351801402692000227F90008D9 +:1069200033281FFFA71200180A000391AF88000048 +:106930003C02800034450140ACA0000C1280001BDA +:1069400034530E0034510E008E370010ACB70004E3 +:106950008E2400183C0B8000ACA400083570014068 +:1069600024040040A20000128FBF0048A600001AB5 +:106970008FB70044AE0000208FB60040A60000187C +:106980008FB5003CAE0400148FB400388FB30034D0 +:106990008FB200308FB1002C8FB000283C02100065 +:1069A00027BD005003E00008AD6201788E66001438 +:1069B000ACA600048E64001C0A00042A3C0B800074 +:1069C0000E0001902E9100010A0003200237B0252D +:1069D000000000000000000D00000000240003691A +:1069E0000A0004013C06800027BDFFD8AFBF00208D +:1069F0003C0980003C1F20FFAFB200183C0760003C +:106A000035320E002402001037F9FFFDACE23008E9 +:106A1000AFB3001CAFB10014AFB00010AE5900000E +:106A20000000000000000000000000000000000066 +:106A3000000000003C1800FF3713FFFDAE530000BC +:106A40003C0B60048D7050002411FF7F3C0E00024F +:106A50000211782435EC380C35CD0109ACED4C1819 +:106A6000240A0009AD6C50008CE80438AD2A0008F7 +:106A7000AD2000148CE54C1C3106FFFF38C42F718B +:106A800000051E023062000F2486C0B310400007CC +:106A9000AF8200088CE54C1C3C09001F3528FC0027 +:106AA00000A81824000321C2AF8400048CF1080858 +:106AB0003C0F57092412F0000232702435F0001008 +:106AC00001D0602601CF68262DAA00012D8B000180 +:106AD000014B382550E00009A380000C3C1F601CCE +:106AE0008FF8000824190001A399000C33137C00CF +:106AF000A7930010A780000EA380000DAF80004870 +:106B000014C00003AF8000003C066000ACC0442C01 +:106B10000E0005B93C1080000E000F1A361101005E +:106B20003C12080026523DD03C13080026733E500C +:106B30008E03000038640001308200011440FFFC25 +:106B40003C0B800A8E2600002407FF8024C90240E7 +:106B5000312A007F014B402101272824AE06002066 +:106B6000AF880044AE0500243C048000AF86003CA2 +:106B70008C8C01780580FFFE24180800922F0008F5 +:106B8000AC980178A38F0042938E004231CD000172 +:106B900011A0000F24050D0024DFF8002FF90301D8 +:106BA0001320001C000629C224A4FFF00004104298 +:106BB000000231400E00020200D2D8213C02400007 +:106BC0003C068000ACC201380A0004A000000000AE +:106BD00010C50023240D0F0010CD00273C1F800896 +:106BE00037F9008093380000240E0050330F00FF67 +:106BF00015EEFFF33C0240000E000A3600000000D4 +:106C00003C0240003C068000ACC201380A0004A0EF +:106C1000000000008F83000400A3402B1500000B30 +:106C20008F8B0008006B50212547FFFF00E5482BA4 +:106C30001520000600A36023000C19400E0002027C +:106C40000073D8210A0004C43C0240000000000D7B +:106C50000E000202000000000A0004C43C024000D2 +:106C60003C1B0800277B3F500E0002020000000082 +:106C70000A0004C43C0240003C1B0800277B3F7014 +:106C80000E000202000000000A0004C43C024000A2 +:106C90003C0660043C09080025290104ACC9502CBD +:106CA0008CC850003C0580003C0200023507008083 +:106CB000ACC750003C040800248415A43C03080021 +:106CC0002463155CACA50008ACA2000C3C010800D4 +:106CD000AC243D603C010800AC233D6403E00008A7 +:106CE0002402000100A030213C1C0800279C3D68C4 +:106CF0003C0C04003C0B0002008B3826008C402624 +:106D00002CE200010007502B2D050001000A4880ED +:106D10003C03080024633D60004520250123182121 +:106D20001080000300001021AC6600002402000166 +:106D300003E00008000000003C1C0800279C3D68A0 +:106D40003C0B04003C0A0002008A3026008B3826E7 +:106D50002CC200010006482B2CE5000100094080F0 +:106D60003C03080024633D600045202501031821F1 +:106D700010800005000010213C0C0800258C155CDB +:106D8000AC6C00002402000103E0000800000000D9 +:106D90003C0900023C08040000883026008938269F +:106DA0002CC30001008028212CE400010083102561 +:106DB0001040000B000030213C1C0800279C3D685F +:106DC0003C0A80008D4E00082406000101CA682597 +:106DD000AD4D00088D4C000C01855825AD4B000CC5 +:106DE00003E0000800C010213C1C0800279C3D68FF +:106DF0003C0580008CA6000C000420272402000122 +:106E000000C4182403E00008ACA3000C3C020002FC +:106E10001082000B3C0560003C0704001087000353 +:106E20000000000003E00008000000008CA908D06A +:106E3000240AFFFD012A402403E00008ACA808D082 +:106E40008CA408D02406FFFE0086182403E0000866 +:106E5000ACA308D03C05601A34A600108CC3008097 +:106E600027BDFFF88CC50084AFA3000093A40000E9 +:106E70002402000110820003AFA5000403E0000813 +:106E800027BD000893A7000114E0001497AC00028E +:106E900097B800023C0F8000330EFFFC01CF682141 +:106EA000ADA50000A3A000003C0660008CC708D080 +:106EB0002408FFFE3C04601A00E82824ACC508D072 +:106EC0008FA300048FA200003499001027BD000892 +:106ED000AF22008003E00008AF2300843C0B800059 +:106EE000318AFFFC014B48218D2800000A00057DF6 +:106EF000AFA8000427BDFFE8AFBF00103C1C08008E +:106F0000279C3D683C0580008CA4000C8CA20004EA +:106F10003C0300020044282410A0000A00A3182407 +:106F20003C0604003C0400021460000900A6102482 +:106F30001440000F3C0404000000000D3C1C08003D +:106F4000279C3D688FBF001003E0000827BD001894 +:106F50003C0208008C423D600040F809000000003F +:106F60003C1C0800279C3D680A0005A68FBF001046 +:106F70003C0208008C423D640040F809000000001B +:106F80000A0005AC00000000000411C003E0000886 +:106F9000244202403C04080024843FB42405001A23 +:106FA0000A00009C0000302127BDFFE0AFB00010B8 +:106FB0003C108000AFBF0018AFB1001436110100C3 +:106FC000922200090E0005B63044007F8E3F00007B +:106FD0008F89003C3C0F008003E26021258800403F +:106FE0000049F821240DFF80310E00783198007897 +:106FF00035F9000135F100020319382501D1482582 +:10700000010D302403ED5824018D2824240A00406A +:1070100024040080240300C0AE0B0024AE0008103E +:10702000AE0A0814AE040818AE03081CAE05080426 +:10703000AE070820AE060808AE0908243609090084 +:107040009539000C3605098033ED007F3338FFFF9A +:10705000001889C0AE110800AE0F0828952C000C4E +:107060008FBF00188FB10014318BFFFF000B51C090 +:10707000AE0A002C8CA400508FB000108CA3003CF2 +:107080008D2700048CA8001C8CA600383C0E800ABA +:1070900001AE102127BD0020AF820044AF84005014 +:1070A000AF830054AF87004CAF88005C03E000085A +:1070B000AF8600603C09080091293FD924A800024E +:1070C0003C05110000093C0000E8302500C51825EA +:1070D00024820008AC83000003E00008AC800004B8 +:1070E0003C098000352309009128010B906A0011AA +:1070F0002402002800804821314700FF00A07021B1 +:1071000000C068213108004010E20002340C86DD26 +:10711000240C08003C0A800035420A9A944700007B +:10712000354B0A9C35460AA030F9FFFFAD39000007 +:107130008D780000354B0A8024040001AD3800042E +:107140008CCF0000AD2F00089165001930A300031B +:107150001064009028640002148000AF240500022F +:107160001065009E240F0003106F00B435450AA47B +:10717000240A0800118A0048000000005100003D68 +:107180003C0B80003C0480003483090090670012AF +:1071900030E200FF004D7821000FC8802724000155 +:1071A0003C0A8000354F090091E50019354C0980F3 +:1071B0008D87002830A300FF0003150000475825E5 +:1071C0000004C4003C19600001793025370806FF2F +:1071D000AD260000AD2800048DEA002C25280028EB +:1071E000AD2A00088DEC0030AD2C000C8DE500348C +:1071F000AD2500108DE400383C05800034AC093C1E +:10720000AD2400148DE3001CAD2300188DE7002091 +:10721000AD27001C8DE20024AD2200208DF900284E +:1072200034A20100AD3900248D830000AD0E0004AE +:1072300034B90900AD0300008C47000C250200148E +:10724000AD070008932B00123C04080090843FD83F +:10725000AD000010317800FF030D302100064F0013 +:1072600000047C00012F702535CDFFFC03E00008F1 +:10727000AD0D000C35780900930600123C0508009E +:1072800094A53FC830C800FF010D5021000A60805E +:107290000A00063C018520211500005B000000006B +:1072A0003C08080095083FCE3C06080094C63FC83D +:1072B000010610213C0B800035790900933800113C +:1072C000932A001935660A80330800FF94CF002AFC +:1072D00000086082314500FF978A0058000C1E00AC +:1072E000000524003047FFFF006410250047C0253B +:1072F00001EA30213C0B4000030B402500066400EE +:10730000AD280000AD2C0004932500183C030006B6 +:107310002528001400053E0000E31025AD220008DA +:107320008F24002C3C05800034AC093CAD24000CBB +:107330008F38001C34A20100254F0001AD38001029 +:107340008D830000AD0E000431EB7FFFAD03000024 +:107350008C47000C34B90900A78B0058AD07000812 +:10736000932B00123C04080090843FD8250200149F +:10737000317800FF030D302100064F0000047C002F +:10738000012F702535CDFFFCAD00001003E0000893 +:10739000AD0D000C3C02080094423FD23C050800B1 +:1073A00094A53FC835440AA43C07080094E73FC4AD +:1073B000948B00000045C8210327C023000B1C004C +:1073C0002706FFF200665025AD2A000CAD20001004 +:1073D000AD2C00140A00063025290018354F0AA4E8 +:1073E00095E50000956400280005140000043C00A9 +:1073F0003459810000EC5825AD39000CAD2B00103C +:107400000A000630252900143C0C0800958C3FCE5C +:107410000A000681258200015460FF56240A0800F4 +:1074200035580AA49706000000061C00006C502581 +:10743000AD2A000C0A000630252900103C03080084 +:1074400094633FD23C07080094E73FC83C0F080014 +:1074500095EF3FC494A4000095790028006710219F +:10746000004F582300041C00001934002578FFEE5B +:1074700000D87825346A8100AD2A000CAD2F0010A9 +:10748000AD200014AD2C00180A0006302529001C80 +:1074900003E00008240207D027BDFFE0AFB20018C8 +:1074A000AFB10014AFB00010AFBF001C0E00007CE5 +:1074B000008088218F8800548F87004C3C0580080D +:1074C00034B20080011128213C1080002402008089 +:1074D000240300C000A72023AE0208183C06800841 +:1074E000AE03081C18800004AF850054ACC500042E +:1074F0008CC90004AF89004C1220000936040980B1 +:107500000E0006F800000000924C00278E0B00745D +:1075100001825004014B3021AE46000C3604098034 +:107520008C8E001C8F8F005C01CF682319A0000493 +:107530008FBF001C8C90001CAF90005C8FBF001CA4 +:107540008FB200188FB100148FB000100A00007EB7 +:1075500027BD00208F8600508F8300548F82004CFF +:107560003C05800834A40080AC860050AC83003C0D +:1075700003E00008ACA200043C0308008C63005444 +:1075800027BDFFF8308400FF2462000130A500FF12 +:107590003C010800AC22005430C600FF3C078000CC +:1075A0008CE801780500FFFE3C0C7FFFA3A40003DC +:1075B0008FAA0000358BFFFF014B4824000627C02F +:1075C00001244025AFA8000034E201009043000AE6 +:1075D000A3A000023C1980FFA3A300018FAF00000D +:1075E00030AE007F3738FFFF01F86024000E6E00D8 +:1075F0003C0A002034E50140018D58253549200022 +:107600002406FF803C04100027BD0008ACAB000C32 +:10761000ACA90014A4A00018A0A6001203E0000862 +:10762000ACE40178308800FF30A700FF3C03800005 +:107630008C6201780440FFFE3C0C8000358A0A0011 +:107640008D4B00203584014035850980AC8B0004CA +:107650008D4900240007302B00061540AC89000836 +:10766000A088001090A3004CA083002D03E0000828 +:10767000A480001827BDFFE8308400FFAFBF0010D2 +:107680000E00075D30A500FF8F8300548FBF0010F0 +:107690003C06800034C50140344700402404FF907C +:1076A0003C02100027BD0018ACA3000CA0A40012DF +:1076B000ACA7001403E00008ACC2017827BDFFE0CE +:1076C0003C088008AFBF001CAFB20018AFB1001477 +:1076D000AFB00010351000808E0600183C07800007 +:1076E000309200FF00C72025AE0400180E00007C79 +:1076F00030B100FF92030005346200080E00007EE6 +:10770000A2020005024020210E000771022028215C +:10771000024020218FBF001C8FB200188FB10014CF +:107720008FB0001024050005240600010A0007326E +:1077300027BD00203C05800034A309809066000826 +:1077400030C200081040000F3C0A01013549080A08 +:10775000AC8900008CA80074AC8800043C070800C9 +:1077600090E73FD830E5001050A00008AC8000083A +:107770003C0D800835AC00808D8B0058AC8B000828 +:107780002484000C03E00008008010210A0007B5E3 +:107790002484000C27BDFFE83C098000AFB0001036 +:1077A000AFBF00143526098090C8000924020006E6 +:1077B00000A05821310300FF3527090000808021F7 +:1077C000240500041062007B2408000294CF005CB2 +:1077D0003C0E020431EDFFFF01AE6025AE0C00004F +:1077E00090CA00083144002010800008000000000A +:1077F00090C2004E3C1F010337F90300305800FFD0 +:107800000319302524050008AE06000490F9001184 +:1078100090E6001290E40011333800FF00187082E7 +:1078200030CF00FF01CF5021014B6821308900FF8C +:1078300031AAFFFF39230028000A60801460002C61 +:10784000020C482390E400123C198000372F0100FD +:10785000308C00FF018B1821000310800045F821B7 +:10786000001F8400360706FFAD270004373F0900DC +:1078700093EC001193EE0012372609800005C082B8 +:107880008DE4000C8CC5003431CD00FF01AB10211C +:107890000058182100A4F8230008840000033F00CA +:1078A00000F0302533F9FFFF318F00FC00D970253F +:1078B0000158202101E9682100045080ADAE000C80 +:1078C0000E00007C012A80213C088008240B000463 +:1078D000350500800E00007EA0AB000902001021DB +:1078E0008FBF00148FB0001003E0000827BD001800 +:1078F00090EC001190E300193C18080097183FCE57 +:10790000318200FF0002F882307000FF001FCE00BD +:1079100000103C000327302500D870253C0F4000A4 +:1079200001CF68253C198000AD2D0000373F0900CC +:1079300093EC001193EE0012372F010037260980D7 +:107940000005C0828DE4000C8CC5003431CD00FFF1 +:1079500001AB10210058182100A4F823000884006E +:1079600000033F0000F0302533F9FFFF318F00FCAA +:1079700000D970250158202101E9682100045080B8 +:10798000ADAE000C0E00007C012A80213C0880086E +:10799000240B0004350500800E00007EA0AB00091A +:1079A000020010218FBF00148FB0001003E0000808 +:1079B00027BD00180A0007C72408001227BDFFD002 +:1079C0003C038000AFB60028AFB50024AFB4002060 +:1079D000AFB10014AFBF002CAFB3001CAFB20018A2 +:1079E000AFB000103467010090E6000B309400FF48 +:1079F00030B500FF30C200300000B02110400099C7 +:107A000000008821346409809088000800082E0056 +:107A100000051E03046000C0240400048F86005487 +:107A20003C010800A0243FD83C0C8000AD800048F9 +:107A30003C048000348E010091CD000B31A5002064 +:107A400010A000073C078000349309809272000860 +:107A50000012860000107E0305E000C43C1F800871 +:107A600034EC0100918A000B34EB09809169000825 +:107A7000314400400004402B3123000800C8982303 +:107A80001460000224120003000090213C108000CA +:107A900036180A8036040900970E002C90830011D6 +:107AA0009089001293050018307F00FF312800FFF5 +:107AB000024810210002C880930D0018033F78216E +:107AC00001F1302130B100FF00D11821A78E0058FC +:107AD0003C010800A4263FCE3C010800A4233FD06F +:107AE00015A00002000000000000000D920B010B29 +:107AF0003065FFFF3C010800A4233FD2316A0040FB +:107B00003C010800A4203FC83C010800A4203FC459 +:107B10001140000224A4000A24A4000B3091FFFFAE +:107B20000E0001E7022020219206010B3C0C080008 +:107B3000958C3FD2004020210006698231A70001C8 +:107B40000E00060101872821004020210260282123 +:107B50000E00060C024030210E0007A1004020213B +:107B600016C00069004020219212010B32560040DD +:107B700012C000053C0500FF8C93000034AEFFFFEF +:107B8000026E8024AC9000000E0001FB0220202138 +:107B90003C0F080091EF3FD831F10003122000168E +:107BA0003C1380088F8200543C09800835280080EF +:107BB000245F0001AD1F003C3C0580088CB9000427 +:107BC00003E02021033FC0231B000002AF9F0054AD +:107BD0008CA400040E0006F8ACA400043C0780004E +:107BE0008CEB00743C04800834830080004B5021EF +:107BF000AC6A000C3C1380083670008002802021A3 +:107C000002A02821A200006B0E00075D3C1480003A +:107C10008F920054368C0140AD92000C8F86004844 +:107C20003C151000344D000624D60001AF960048E4 +:107C30008FBF002CA18600128FB60028AD8D0014D6 +:107C40008FB3001CAE9501788FB200188FB5002459 +:107C50008FB400208FB100148FB0001003E0000833 +:107C600027BD003034640980908F0008000F760033 +:107C7000000E6E0305A00033347F090093F8001B4B +:107C8000241900103C010800A0393FD8331300022A +:107C90001260FF678F8600548F8200601446FF6574 +:107CA0003C0480000E00007C000000003C048008C2 +:107CB0003485008090A8000924060016310300FFD7 +:107CC0001066000D0000000090AB00093C070800A2 +:107CD00090E73FD824090008316400FF34EA00012E +:107CE0003C010800A02A3FD81089002F240C000A6C +:107CF000108C00282402000C0E00007E0000000002 +:107D00000A0008608F8600540E0007B9024028213F +:107D10000A0008AE004020213C0B8008356A008034 +:107D20008D4600548CE9000C1120FF3DAF860054B5 +:107D3000240700143C010800A0273FD80A00085F70 +:107D40003C0C800090910008241200023C010800C5 +:107D5000A0323FD8323000201200000B2416000160 +:107D60008F8600540A0008602411000837F800804C +:107D70008F020038AFE200048FF90004AF19003C15 +:107D80000A00086C3C0780008F8600540A000860D7 +:107D900024110004A0A200090E00007E00000000D3 +:107DA0000A0008608F860054240200140A00093A71 +:107DB000A0A2000927BDFFE8AFB000103C10800072 +:107DC000AFBF001436020100904400090E00075DA9 +:107DD000240500013C0480089099000E3483008043 +:107DE000909F000F906F00269089000A33F800FFE3 +:107DF00000196E000018740031EC00FF01AE502530 +:107E0000000C5A00014B3825312800FF3603014091 +:107E10003445600000E830252402FF813C04100056 +:107E2000AC66000C8FBF0014AC650014A062001299 +:107E3000AE0401788FB0001003E0000827BD0018E1 +:107E400027BDFFE8308400FFAFBF00100E00075DC4 +:107E500030A500FF3C05800034A4014034470040B9 +:107E60002406FF92AC870014A08600128F83005472 +:107E70008FBF00103C02100027BD0018AC83000C1F +:107E800003E00008ACA2017827BDFFD8AFB0001016 +:107E9000308400FF30B000FF3C058000AFB100141B +:107EA000AFBF0020AFB3001CAFB20018000410C277 +:107EB00034A60100320300023051000114600007B3 +:107EC00090D200093C098008353300809268000593 +:107ED0003107000810E0000C308A00100240202119 +:107EE0000E00078302202821240200018FBF0020FA +:107EF0008FB3001C8FB200188FB100148FB0001028 +:107F000003E0000827BD00281540003434A50A000E +:107F10008CB800248CAF0008130F004B00003821F0 +:107F20003C0D800835B30080926C00682406000286 +:107F3000318B00FF116600843C06800034C20100D2 +:107F40009263004C90590009307F00FF53F9000400 +:107F50003213007C10E00069000000003213007C46 +:107F60005660005C0240202116200009320D0001FD +:107F70003C0C800035840100358B0A008D6500249F +:107F80008C86000414A6FFD900001021320D0001D8 +:107F900011A0000E024020213C1880003710010083 +:107FA0008E0F000C8F8E005011EE000800000000B4 +:107FB0000E000843022028218E19000C3C1F800867 +:107FC00037F00080AE190050024020210E000771EA +:107FD000022028210A00098F240200013C05080024 +:107FE0008CA5006424A400013C010800AC240064BA +:107FF0001600000D00000000022028210E0007716D +:1080000002402021926E0068240C000231CD00FF56 +:1080100011AC0022024020210E00094100000000A6 +:108020000A00098F240200010E00007024040001E0 +:10803000926B0025020B30250E00007EA266002503 +:108040000A0009D3022028218E6200188CDF000468 +:108050008CB9002400021E0217F9FFB13065007FC1 +:108060009268004C264400013093007F1265004066 +:10807000310300FF1464FFAB3C0D8008264700016C +:1080800030F1007F30E200FF1225000B24070001D1 +:10809000004090210A00099C2411000124050004DD +:1080A0000E000732240600010E0009410000000006 +:1080B0000A00098F240200012405FF8002452024C4 +:1080C00000859026324200FF004090210A00099C62 +:1080D000241100010E00084302202821320700303D +:1080E00010E0FFA132100082024020210E00078321 +:1080F000022028210A00098F240200018E6900183D +:108100000240202102202821012640250E0009647A +:10811000AE6800189264004C240500032406000198 +:108120000E000732308400FF0E00007024040001AE +:1081300092710025021150250E00007EA26A0025D2 +:108140000A00098F240200018E6F00183C1880007D +:108150000240202101F87025022028210E0007711D +:10816000AE6E00189264004C0A000A1B240500043D +:10817000324A0080394900801469FF6A3C0D80084A +:108180000A0009F42647000127BDFFC0AFB0001860 +:108190003C108000AFBF0038AFB70034AFB600303E +:1081A000AFB5002CAFB40028AFB30024AFB20020AD +:1081B0000E0005BEAFB1001C360201009045000B59 +:1081C0000E00097690440008144000E78FBF003885 +:1081D0003C08800835070080A0E0006B3606098067 +:1081E00090C50000240300503C17080026F73F907C +:1081F00030A400FF3C13080026733FA01083000347 +:108200003C1080000000B82100009821241F0010BD +:108210003611010036120A00361509808E580024E6 +:108220008E3400048EAF00208F8C00543C01080077 +:10823000A03F3FD836190A80972B002C8EF60000FD +:10824000932A00180298702301EC68233C0108006F +:10825000AC2E3FB43C010800AC2D3FB83C010800F7 +:10826000AC2C3FDCA78B005802C0F809315400FF4A +:1082700030490002152000E930420001504000C49E +:108280009227000992A90008312800081500000271 +:10829000241500030000A8213C0A80003543090092 +:1082A00035440A008C8D00249072001190700012E9 +:1082B000907F0011325900FF321100FF02B11021EE +:1082C0000002C08033EF00FF0319B021028F70213C +:1082D00002D4602125CB00103C010800A4363FCE1B +:1082E0003C010800AC2D3FE03C010800A42C3FD02D +:1082F0003C010800A42B3FCC3556010035540980C1 +:1083000035510E008F8700548F89005C8E850020C8 +:1083100024080006012730233C010800AC283FD484 +:1083200000A7282304C000B50000902104A000B3DA +:1083300000C5502B114000B5000000003C010800B2 +:10834000AC263FB88E6200000040F8090000000033 +:108350003046000214C0007400408021304B000100 +:10836000556000118E6200043C0D08008DAD3FBCCD +:108370003C0EC0003C04800001AE6025AE2C000025 +:108380008C980000330F000811E0FFFD0000000092 +:10839000963F000824120001A79F00408E39000478 +:1083A000AF9900388E6200040040F8090000000018 +:1083B0000202802532030002146000B300000000B6 +:1083C0003C09080095293FC43C06080094C63FD0EC +:1083D0003C0A0800954A3FC63C0708008CE73FBCB2 +:1083E000012670213C0308008C633FE03C08080034 +:1083F00095083FDA01CA20218ED9000C00E9282116 +:10840000249F000200A878210067C02133E4FFFF09 +:10841000AF9900503C010800AC383FE03C01080037 +:10842000A42F3FC83C010800A42E3FD20E0001E754 +:10843000000000008F8D0048004020213C01080012 +:10844000A02D3FD98E62000825AC0001AF8C0048FA +:108450000040F809000000008F85005402A0302180 +:108460000E00060C004020210E0007A10040202134 +:108470008E6B000C0160F809004020213C0A0800C6 +:10848000954A3FD23C06080094C63FC601464821A3 +:10849000252800020E0001FB3104FFFF3C05080007 +:1084A0008CA53FB43C0708008CE73FBC00A7202305 +:1084B0003C010800AC243FB414800006000000001A +:1084C0003C0208008C423FD4344B00403C01080081 +:1084D000AC2B3FD4124000438F8E00448E2D0010F1 +:1084E0008F920044AE4D00208E2C0018AE4C00241C +:1084F0003C04080094843FC80E0006FA0000000007 +:108500008F9F00548E6700103C010800AC3F3FDC99 +:1085100000E0F809000000003C1908008F393FB462 +:108520001720FF798F870054979300583C11800ED5 +:10853000321601000E000729A633002C16C0004594 +:10854000320300105460004C8EE5000432080040F5 +:108550005500001D8EF000088EE4000C0080F80924 +:10856000000000008FBF00388FB700348FB6003096 +:108570008FB5002C8FB400288FB300248FB2002059 +:108580008FB1001C8FB0001803E0000827BD004029 +:108590008F86003C36110E0000072E0000A6202515 +:1085A000AE0400808E4300208E500024AFA3001044 +:1085B000AE2300148FB20010AE320010AE30001C9B +:1085C0000A000A75AE3000180200F8090000000029 +:1085D0008EE4000C0080F809000000000A000B2E59 +:1085E0008FBF003824180001240F0001A5C000200F +:1085F000A5D800220A000B10ADCF00243C010800D2 +:10860000AC203FB80A000AA68E6200003C010800B8 +:10861000AC253FB80A000AA68E6200009224000929 +:108620000E000771000028218FBF00388FB700347B +:108630008FB600308FB5002C8FB400288FB3002484 +:108640008FB200208FB1001C8FB0001803E000082B +:1086500027BD00403C1480009295010900002821AC +:108660000E00084332A400FF320300105060FFB830 +:10867000320800408EE5000400A0F8090000000068 +:108680000A000B28320800405240FFA89793005878 +:108690008E3400148F930044AE7400208E35001C7D +:1086A000AE7500240A000B1F979300588F820014A8 +:1086B0000004218003E00008008210213C078008AC +:1086C00034E200809043006900804021106000097E +:1086D0003C0401003C0708008CE73FDC8F8300303E +:1086E00000E32023048000089389001C14E30003A6 +:1086F0000100202103E00008008010213C0401005B +:1087000003E00008008010211120000B00673823CF +:108710003C0D800035AC0980918B007C316A0002F1 +:10872000114000202409003400E9702B15C0FFF12E +:108730000100202100E938232403FFFC00A3C82402 +:1087400000E3C02400F9782B15E0FFEA030820219C +:1087500030C400030004102314C000143049000387 +:108760000000302100A9782101E6702100EE682B7D +:1087700011A0FFE03C0401002D3800010006C82BC9 +:10878000010548210319382414E0FFDA2524FFFCF1 +:108790002402FFFC00A218240068202103E0000846 +:1087A000008010210A000B9E240900303C0C800040 +:1087B0003586098090CB007C316A00041540FFE9C2 +:1087C000240600040A000BAD000030213C03080021 +:1087D0008C63005C8F82001827BDFFE0AFBF0018DC +:1087E000AFB1001410620005AFB00010000329C043 +:1087F00024A40280AF840014AF8300183C108000D2 +:1088000036020A0094450032361101000E000B7F3B +:1088100030A43FFF8E240000241FFF803C11008005 +:108820000082C021031F60243309007F000CC9406F +:1088300003294025330E0078362F00033C0D10002D +:10884000010D502501CF5825AE0C002836080980AF +:10885000AE0C080CAE0B082CAE0A08309103006970 +:108860003C06800C0126382110600006AF870034DA +:108870008D09003C8D03006C0123382318E0008231 +:10888000000000003C0B8008356A00803C1080002E +:10889000A1400069360609808CC200383C06800081 +:1088A00034C50A0090A8003C310C00201180001A49 +:1088B000AF820030240D00013C0E800035D10A004B +:1088C000A38D001CAF8000248E2400248F850024FB +:1088D000240D0008AF800020AF8000283C01080074 +:1088E000A42D3FC63C010800A4203FDA0E000B83F4 +:1088F000000030219228003C8FBF00188FB1001477 +:108900008FB0001000086142AF82002C27BD00200C +:1089100003E000083182000190B80032240E00010B +:10892000330F00FF000F2182108E00412419000236 +:108930001099006434C40AC03C03800034640A0007 +:108940008C8F002415E0001E34660900909F0030D3 +:108950002418000533F9003F1338004E24030001AA +:108960008F860020A383001CAF860028AF860024DA +:108970003C0E800035D10A008E2400248F8500240F +:10898000240D00083C010800A42D3FC63C0108004E +:10899000A4203FDA0E000B83000000009228003C68 +:1089A0008FBF00188FB100148FB000100008614213 +:1089B000AF82002C27BD002003E0000831820001B7 +:1089C0008C8A00088C8B00248CD000643C0E8000C4 +:1089D00035D10A00014B2823AF900024A380001C4E +:1089E000AF8500288E2400248F8600208F850024E8 +:1089F000240D00083C010800A42D3FC63C010800DE +:108A0000A4203FDA0E000B83000000009228003CF7 +:108A10008FBF00188FB100148FB0001000086142A2 +:108A2000AF82002C27BD002003E000083182000146 +:108A300090A200303051003F5224002834C50AC0B3 +:108A40008CB000241600002234CB09008CA600480C +:108A50003C0A7FFF3545FFFF00C510243C0E800017 +:108A6000AF82002035C509008F8800208CAD0060E2 +:108A7000010D602B15800002010020218CA40060F4 +:108A80000A000C22AF8400208D02006C0A000BFC4F +:108A90003C0680008C8200488F8600203C097FFFC6 +:108AA0003527FFFF004788243C0480082403000189 +:108AB000AF910028AC80006CA383001C0A000C302E +:108AC000AF8600248C9F00140A000C22AF9F002068 +:108AD0008D6200680A000C6C3C0E800034C4098072 +:108AE0008C8900708CA300140123382B10E0000443 +:108AF000000000008C8200700A000C6C3C0E8000AC +:108B00008CA200140A000C6C3C0E80008F8500249F +:108B100027BDFFE0AFBF0018AFB1001414A00008DC +:108B2000AFB000103C04800034870A0090E60030AB +:108B30002402000530C3003F106200B934840900EC +:108B40008F91002000A080213C048000348E0A0018 +:108B50008DCD00043C0608008CC63FB831A73FFF0E +:108B600000E6602B5580000100E03021938F001C4F +:108B700011E0007800D0282B349F098093F9007C05 +:108B800033380002130000792403003400C3102B93 +:108B9000144000D90000000000C3302300D0282B6F +:108BA0003C010800A4233FC414A0006E0200182159 +:108BB0003C0408008C843FB40064402B5500000145 +:108BC000006020213C05800034A90A00912A003C65 +:108BD0003C010800AC243FBC31430020146000037A +:108BE0000000482134AB0E008D6900188F88002CDE +:108BF0000128202B1080005F000000003C050800C9 +:108C00008CA53FBC00A96821010D602B1180005C80 +:108C100000B0702B0109382300E028213C01080036 +:108C2000AC273FBC12000003240AFFFC10B0008DEB +:108C30003224000300AA18243C010800A4203FDAD3 +:108C40003C010800AC233FBC006028218F84002435 +:108C5000120400063C0B80088D6C006C0200202181 +:108C6000AF91002025900001AD70006C8F8D002821 +:108C700000858823AF91002401A52023AF8400281C +:108C80001220000224070018240700103C18800856 +:108C90003706008090CF00683C010800A0273FD82D +:108CA0002407000131EE00FF11C70047000000005B +:108CB00014800018000028213C06800034D109806F +:108CC00034CD010091A600098E2C001824C40001A7 +:108CD000000C86023205007F308B007F1165007F1B +:108CE0002407FF803C19800837290080A124004C0C +:108CF0003C0808008D083FD4241800023C010800FD +:108D0000A0384019350F00083C010800AC2F3FD4B3 +:108D1000240500103C02800034440A009083003C8B +:108D2000307F002013E0000500A02021240A00016C +:108D30003C010800AC2A3FBC34A400018FBF0018DE +:108D40008FB100148FB000100080102103E00008E4 +:108D500027BD00203C010800A4203FC410A0FF94C0 +:108D6000020018210A000CC000C018210A000CB72C +:108D7000240300303C0508008CA53FBC00B0702BDC +:108D800011C0FFA8000000003C19080097393FC43B +:108D90000325C0210307782B11E000072CAA00044B +:108DA0003C0360008C625404305F003F17E0FFE337 +:108DB000240400422CAA00041140FF9A240400421B +:108DC0000A000D248FBF00181528FFB9000000000D +:108DD0008CCA00183C1F800024020002015F182585 +:108DE000ACC3001837F90A00A0C200689329003C00 +:108DF0002404000400A01021312800203C010800B8 +:108E0000A0244019110000022405001024020001D2 +:108E10003C010800AC223FB40A000D1A3C0280005D +:108E20008F8800288C8900600109282B14A000027B +:108E3000010088218C9100603C048000348B0E007E +:108E40008D640018240A000102202821022030210C +:108E5000A38A001C0E000B83022080210A000CA6AE +:108E6000AF82002C00045823122000073164000355 +:108E70003C0E800035C7098090ED007C31AC0004C9 +:108E800015800019248F00043C010800A4243FDA57 +:108E90003C1F080097FF3FDA03E5C82100D9C02B2B +:108EA0001300FF6B8F8400242CA6000514C0FFA3C1 +:108EB0002404004230A200031440000200A2182340 +:108EC00024A3FFFC3C010800AC233FBC3C0108008C +:108ED000A4203FDA0A000CE70060282100C77024B4 +:108EE0000A000D0D01C720263C010800A42F3FDA1F +:108EF0000A000D78000000003C010800AC203FBCD7 +:108F00000A000D23240400428F8300283C058000C2 +:108F100034AA0A00146000060000102191470030B6 +:108F20002406000530E400FF108600030000000066 +:108F300003E0000800000000914B0048316900FF89 +:108F4000000941C21500FFFA3C0680083C040800F5 +:108F500094843FC43C0308008C633FDC3C19080048 +:108F60008F393FBC3C0F080095EF3FDA0064C02109 +:108F70008CCD00040319702101CF602134AB0E00A9 +:108F8000018D282318A0001D00000000914F004C07 +:108F90008F8C0034956D001031EE00FF8D89000438 +:108FA00001AE30238D8A000030CEFFFF000E290075 +:108FB0000125C82100003821014720210325182B55 +:108FC0000083C021AD990004AD980000918F000A84 +:108FD00001CF6821A18D000A956500128F8A0034A7 +:108FE000A5450008954B003825690001A5490038C2 +:108FF0009148000D35070008A147000D03E0000867 +:109000000000000027BDFFD8AFB000189388001CF7 +:109010008FB000143C0A80003C197FFF8F8700242A +:109020003738FFFFAFBF0020AFB1001C355F0A002B +:109030000218182493EB003C00087FC03C02BFFFDD +:10904000006F60252CF000013449FFFF3C1F080031 +:109050008FFF3FDC8F9900303C18080097183FD2F3 +:1090600001897824001047803C07EFFF3C05F0FFA2 +:1090700001E818253C1180003169002034E2FFFF2F +:1090800034ADFFFF362E098027A50010240600020C +:1090900003F96023270B0002354A0E0000621824F2 +:1090A0000080802115200002000040218D48001C16 +:1090B000A7AB0012058000392407000030E800FF4C +:1090C00000083F00006758253C028008AFAB001441 +:1090D000344F008091EA00683C08080091083FD9AD +:1090E0003C09DFFF352CFFFF000AF82B3C0208008B +:1090F00094423FCCA3A80011016CC024001FCF40B4 +:10910000031918258FA70010AFA300143C0C08000A +:10911000918C3FDBA7A200168FAB001400ED482412 +:109120003C0F01003C0A0FFF012FC82531980003B6 +:10913000355FFFFF016D40243C027000033F38247F +:1091400000181E0000E2482501037825AFAF001487 +:10915000AFA9001091CC007C0E000092A3AC0015CA +:10916000362D0A0091A6003C30C400201080000675 +:10917000260200083C11080096313FC8262EFFFF4A +:109180003C010800A42E3FC88FBF00208FB1001CF7 +:109190008FB0001803E0000827BD00288F8B002C3B +:1091A000010B502B5540FFC5240700010A000E0497 +:1091B00030E800FF9383001C3C02800027BDFFD8ED +:1091C00034480A0000805021AFBF002034460AC056 +:1091D000010028211060000E3444098091070030FE +:1091E000240B00058F89002030EC003F118B000B11 +:1091F00000003821AFA900103C0B80088D69006C7D +:10920000AFAA00180E00015AAFA90014A380001CD9 +:109210008FBF002003E0000827BD00288D1F0048F5 +:109220003C1808008F183FBC8F9900283C027FFF34 +:109230008D0800443443FFFFAFA900103C0B8008A9 +:109240008D69006C03E370240319782101CF682332 +:1092500001A83821AFAA00180E00015AAFA90014C6 +:109260000A000E58A380001C3C05800034A60A00AA +:1092700090C7003C3C06080094C63FDA3C02080058 +:109280008C423FD430E30020000624001060001E12 +:10929000004438253C0880083505008090A300680C +:1092A00000004821240800010000282124040001B6 +:1092B0003C0680008CCD017805A0FFFE34CF014034 +:1092C000ADE800083C0208008C423FDCA5E5000444 +:1092D000A5E40006ADE2000C3C04080090843FD9F0 +:1092E0003C03800834790080A1E40012ADE700144B +:1092F000A5E900189338004C3C0E1000A1F8002D91 +:1093000003E00008ACCE017834A90E008D28001CC3 +:109310003C0C08008D8C3FBC952B0016952A001440 +:10932000018648213164FFFF0A000E803145FFFFAE +:109330003C04800034830A009065003C30A2002089 +:109340001040001934870E00000040210000382131 +:10935000000020213C0680008CC901780520FFFE1A +:1093600034CA014034CF010091EB0009AD48000838 +:109370003C0E08008DCE3FDC240DFF91240C0040F4 +:109380003C081000A5440004A5470006AD4E000CA3 +:10939000A14D0012AD4C0014A5400018A14B002DAA +:1093A00003E00008ACC801788CE8001894E60012CD +:1093B00094E4001030C7FFFF0A000EA93084FFFFBD +:1093C0003C04800034830A009065003C30A20020F9 +:1093D0001040002727BDFFF82409000100003821B4 +:1093E000240800013C0680008CCA01780540FFFE7D +:1093F0003C0280FF34C40100908D00093C0C080041 +:10940000918C4019A3AD00038FAB00003185007F24 +:109410003459FFFF01665025AFAA00009083000A6F +:10942000A3A0000200057E00A3A300018FB80000E6 +:1094300034CB0140240C30000319702401CF68257F +:10944000AD6D000C27BD0008AD6C0014A5600018C0 +:10945000AD690008A56700042409FF80A56800061F +:109460003C081000A169001203E00008ACC80178B4 +:1094700034870E008CE9001894E6001294E4001082 +:1094800030C8FFFF0A000ECD3087FFFF27BDFFE089 +:10949000AFB100143C118000AFB00010AFBF001896 +:1094A00036380A00970F0032363001000E000B7F6D +:1094B00031E43FFF8E0E0000240DFF803C042000AD +:1094C00001C25821016D6024000C4940316A007FBF +:1094D000012A4025010438253C048008AE270830C5 +:1094E0003486008090C500682403000230A200FF8B +:1094F000104300048F9F00208F990024AC9F0068C8 +:10950000AC9900648FBF00188FB100148FB00010A9 +:1095100003E0000827BD00203C0A0800254A3A80E5 +:109520003C09080025293B103C08080025082F1C91 +:109530003C07080024E73BDC3C06080024C639044D +:109540003C05080024A536583C0408002484325CFD +:109550003C030800246339B83C0208002442375415 +:109560003C010800AC2A3F983C010800AC293F941C +:109570003C010800AC283F903C010800AC273F9C10 +:109580003C010800AC263FAC3C010800AC253FA4E0 +:109590003C010800AC243FA03C010800AC233FB0D4 +:1095A0003C010800AC223FA803E0000800000000D6 +:1095B00080000940800009008008010080080080C8 +:1095C00080080000800E00008008008080080000F5 +:1095D00080000A8080000A00800009808000090065 +:00000001FF --- linux-4.4.0.orig/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex +++ linux-4.4.0/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000000E88000009500000000500000000CC :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F05060011000000080500FFFF4A :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -382,11 +381,3 @@ :1017C0000000000C2980000000000010001F000035 :0817D000000000188000FE3546 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-4.4.0.orig/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex +++ linux-4.4.0/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000001010000009C80000000500000000CA :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F03060011000000080500FFFF4C :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -155,8 +154,7 @@ :100990000000001091D40000000000080500005580 :1009A000000000188000FF360000000C29800001C4 :1009B0000000000C1F800001000000082A00000752 -:0809C000000000188000FEDEBB -:0809C80000000010B1800004E2 +:1009C000000000188000FEDE00000010B18000046E :1009D0000000001F0306001100000008050000FFD2 :1009E0000000001800020000000000002A000000C3 :1009F00000000010B1D400000000001091DE0000E3 @@ -415,11 +413,3 @@ :1019C00000000010001F00000000000C6BD7000199 :0819D000000000188000FE0475 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-4.4.0.orig/firmware/bnx2x/bnx2x-e1-7.12.30.0.fw.ihex +++ linux-4.4.0/firmware/bnx2x/bnx2x-e1-7.12.30.0.fw.ihex @@ -0,0 +1,10640 @@ +:100000000000165800000068000005D8000016C85F +:10001000000031D400001CA80000006C00004E80DD +:10002000000076EC00004EF00000009C0000C5E0EF +:100030000000C9800000C680000000880001900810 +:1000400000003C1800019098000000880001CCB826 +:100050000000B9680001CD480000120C000286B80B +:1000600000000004000298C8020600DC0000000145 +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:1000900002060068000000B80206007800000114A3 +:1000A000010600B800000000010600C800000000C2 +:1000B0000206006C000000B80206007C000001147B +:1000C000010600BC00000000010600CC000000009A +:1000D000020D004400000032030D004C0004020336 +:1000E000040D005C00000004030D008C00110207E9 +:1000F000020D015C00000001030D01640002021802 +:10010000020D020400000001030D020C0003021A9C +:10011000030D02200002021D040D028000000012E7 +:10012000030D03000018021F040D03600000000C03 +:10013000040D400000000A00030D0004000F023708 +:10014000020D01140000000D020D01180000002D29 +:100150000310100000030246021010100000026499 +:10016000071011000010024908101140000000089B +:100170000710116000100259081011A000000018AB +:1001800007101800020002690210101000000000A1 +:1001900004104C0000000100021040280000001074 +:1001A000031040400002046902104058002800007B +:1001B000021040840084924A02104058000000005F +:1001C000030C20080003046B030C201C0004046EC5 +:1001D000030C203800110472040C207C0000004F36 +:1001E000030C21B800110483040C21FC0000000F53 +:1001F000030C223800040494010C22480000000083 +:10020000010C224C00000000010C225000000000F4 +:10021000010C225400000000010C225800000000D4 +:10022000010C225C00000000010C226000000000B4 +:10023000010C226400000000010C22680000000094 +:10024000010C226C00000000010C22700000000074 +:10025000010C227400000000010C22780000000054 +:10026000010C227C00000000020C24BC00000001F4 +:100270000A00000100000001020C2000000003E859 +:100280000A00000100000002020C20000000000A29 +:100290000A00000100000004020C20000000000120 +:1002A0000520040000860000062007800010049846 +:1002B000042200000000160004228000000000401C +:1002C00004223BD000000008042248000000000681 +:1002D000032248180004049A042248280000000C55 +:1002E000032248580004049E042248680000000CC1 +:1002F00003224898000404A2042248A80000000C2D +:10030000032248D8000404A6042248E80000000C98 +:1003100003224918000404AA042249280000000C02 +:1003200003224958000404AE042249680000000C6E +:1003300003224998000404B2042249A80000000CDA +:10034000032249D8000404B6042249E80000000C46 +:1003500003224A18000404BA04224A280000000CB0 +:1003600003224A58000404BE04224A680000000C1C +:1003700003224A98000404C204224AA80000000C88 +:1003800003224AD8000404C604224AE80000000CF4 +:1003900003224B18000404CA04224B280000000C5E +:1003A00003224B58000404CE04224B680000000CCA +:1003B00003224B98000404D204224BA80000000C36 +:1003C00003224BD8000404D604224BE80000000CA2 +:1003D00003224C18000404DA04224C280000000C0C +:1003E00003224C58000404DE04224C680000000C78 +:1003F00003224C98000404E204224CA80000000CE4 +:1004000003224CD8000404E604224CE80000000C4F +:1004100003224D18000404EA04224D280000000CB9 +:1004200003224D58000404EE04224D680000000C25 +:1004300003224D98000404F204224DA80000000C91 +:1004400003224DD8000404F604224DE80000000CFD +:1004500003224E18000404FA04224E280000000C67 +:1004600003224E58000404FE04224E680000000CD3 +:1004700003224E980004050204224EA80000000C3E +:1004800003224ED80004050604224EE80000000CAA +:1004900003224F180004050A04224F280000000C14 +:1004A00003224F580004050E04224F680000000C80 +:1004B00003224F980004051204224FA80000000CEC +:1004C00003224FD80004051604224FE8000000065E +:1004D000032251980004051A022380000000001036 +:1004E00002238040000000120223808000000030C0 +:1004F000022380C00000000E022383800007A12099 +:10050000022383C0000001F402238BC0000000011D +:100510000A00000200000001022383000007A1205E +:1005200002238340000001F40A00000200000002E0 +:10053000022383000000138802238340000000058B +:100540000A000002000000040223830000000138BA +:1005500002238340000000000524000036A30000B1 +:100560000524800005710DA9062489C06D2E051E85 +:100570000120000000000000012000040000000035 +:1005800001200008000000000120000C0000000015 +:1005900001200010000000000120001400000000F5 +:1005A00003200020001A0520032000A40002053AC1 +:1005B000022002240000000002200234000000009B +:1005C0000220024C00000000022002E40000FFFFB5 +:1005D000082020000000080004221400000000028F +:1005E00004221490000000300422390000000010A2 +:1005F0000422510800000002042251A80000000655 +:1006000004221408000000020422155000000030EB +:1006100004223940000000100422511000000002A2 +:10062000042251C00000000604102400000000E075 +:100630000310201C0002053C021020C00000000135 +:10064000031020040002053E02170008000000020B +:100650000217002C000000030317003800020540B9 +:100660000317004400060542031700600005054813 +:10067000031700780002054D021700040000000F68 +:100680000410806800000004021080000000108048 +:1006900004108040000000020410802800000002C6 +:1006A0000210803800000010031080400002054F47 +:1006B00002108050000000000210810000000000C5 +:1006C000041081200000000202108008000002B522 +:1006D0000210801000000000021081080001FFFFDE +:1006E000041082000000004A041081400000000253 +:1006F0000210800000001A80041090000000002406 +:10070000041091200000004A041093700000004A79 +:10071000041095C00000004A021080040000108000 +:100720000410804800000002041080300000000225 +:100730000210803C000000100310804800020551A8 +:10074000021080540000000002108104000000002C +:1007500004108128000000020210800C000002B585 +:1007600002108014000000000210810C0001FFFF45 +:10077000041084000000004A0410814800000002B8 +:100780000210800400001A800410909000000024E1 +:10079000041092480000004A041094980000004A97 +:1007A000041096E80000004A0200A468000AFFDC7A +:1007B0000200A280000000010300A294000405537F +:1007C0000200A4FCFF000000030100B40002055772 +:1007D000020100DC000000010301010000020559D4 +:1007E0000201007C003000000201008400000028AB +:1007F0000201008C00000000020101300000000432 +:10080000040101380000001102010328000000006B +:100810000201055400000030020100C40000000184 +:10082000020100CC00000001020100F800000001FC +:10083000020100F000000001020100800030000011 +:100840000201008800000028020100900000000062 +:1008500002010134000000040401017C00000011C9 +:100860000201032C000000000201056400000030BA +:10087000020100C800000001020100D000000001D8 +:10088000020100FC00000001020100F40000000170 +:1008900002140000000000010214000C000000011E +:1008A000031400400002055B0214000C000000006D +:1008B00002140000000000000214006C00000000A0 +:1008C00002140004000000010214003000000001C6 +:1008D00002140004000000000214005C000000008C +:1008E000021400080000000102140034000000019E +:1008F0000214000800000000021400600000000064 +:10090000030400040012055D030400540003056F96 +:100910000204007000000004030400780004057263 +:1009200004040088000000050304009C0003057611 +:10093000040400A800000004030400B800050579C1 +:10094000040400CC00000004030400DC0004057E65 +:10095000040400EC00000004010401240000000075 +:1009600001040128000000000104012C0000000027 +:100970000104013000000000020401340000000FF7 +:1009800003120490002205820212052000000002DA +:1009900002120388000000640212039000000008A5 +:1009A0000312039C000305A4021203BC0000000410 +:1009B000021203C400000004021203D00000000071 +:1009C000021203DC000000000212036C00000001B0 +:1009D000021203680000003F031201BC003C05A79F +:1009E000031202B0000205E303120324000205E52E +:1009F000021201B00000000107103800000505E7F1 +:100A000007103C00000505EC07103C20000505F12F +:100A100003168030000805F602168054000000021C +:100A200003168060000505FE0416807400000007B0 +:100A300003168090000206030316809C000506053D +:100A4000041680B000000007031680CC0008060AD8 +:100A5000021680F000000007041680F40000000C6D +:100A60000316812400040612041681340000000CD1 +:100A700003168164003B0616041682500000000431 +:100A80000316826000020651041682680000000806 +:100A90000316828800080653041682A80000000A84 +:100AA00002168804000000040316880C0010065B80 +:100AB000021680EC000000FF030404080014066B1B +:100AC000030500440002067F030500500004068170 +:100AD0000405006000000004030500900013068573 +:100AE00002050114000000010305011C0002069824 +:100AF00002050204000000010305020C0002069A30 +:100B00000305021C0003069C040502400000000AC5 +:100B1000030502800020069F0405400000000D0030 +:100B200003050004001006BF020500E00000000EEF +:100B3000020500E40000002E04164024000000021C +:100B400003164030000306CF021640440000002088 +:100B5000021640700000001C02164208000000014E +:100B6000021642100000000102164220000000019F +:100B70000216422800000001021642300000000167 +:100B80000216423800000001021642600000000117 +:100B90000A000001000000010216401C0003D09072 +:100BA0000A000001000000020216401C000009C4F7 +:100BB0000A000001000000040216401C0000009C16 +:100BC0000216400000000001021640D8000000019B +:100BD00003164008000306D202164240000000003F +:100BE0000216424800000000081642700000000291 +:100BF0000216425000000000021642580000000099 +:100C0000081642800000000203042008000406D5F4 +:100C10000304201C000406D90404203800000080CE +:100C200003042238000406DD01042248000000000D +:100C30000104224C000000000104225000000000CA +:100C400001042254000000000104225800000000AA +:100C50000104225C0000000001042260000000008A +:100C6000010422640000000001042268000000006A +:100C70000104226C0000000001042270000000004A +:100C8000010422740000000001042278000000002A +:100C90000104227C00000000020424BC00000001CA +:100CA0000A0000010000000102042000000003E827 +:100CB0000A00000100000002020420000000000AF7 +:100CC0000A000001000000040204200000000001EE +:100CD00005180400006A000006180760001406E109 +:100CE000041A000000001600041A800000000040F2 +:100CF000031A08B0000206E3031A19C8000206E549 +:100D0000031A2FC0000406E7041A2FD000000006C3 +:100D1000031A2FE8000206EB031A300003F906ED70 +:100D2000041A3FE400000007031A487000040AE6B2 +:100D3000021B800000000034021B804000000018ED +:100D4000021B80800000000C021B80C000000020FD +:100D5000021B83800007A120021B83C0000001F456 +:100D6000021B8BC0000000010A000002000000010D +:100D7000021B83000007A120021B8340000001F436 +:100D80000A00000200000002021B8300000013881A +:100D9000021B8340000000050A000002000000045E +:100DA000021B830000000138021B8340000000008A +:100DB000051C000031730000051C8000358B0C5DA4 +:100DC000051D00000FEB19C0061D21B05BCA0AEA21 +:100DD00001180000000000000118000400000000DD +:100DE00001180008000000000118000C00000000BD +:100DF000011800100000000001180014000000009D +:100E000003180020001A0AEC031800A400020B06C5 +:100E10000218022400000000021802340000000042 +:100E20000218024C00000000021802E4000000FF5B +:100E30000818100000000400041A08000000000256 +:100E4000041A082000000012041A09C0000000481B +:100E5000041A250000000010041A2580000000126A +:100E6000041A261000000012031A2FB000020B080B +:100E7000041A400000000006041A4030000000027E +:100E8000041A482000000002031A4C5000020B0A0A +:100E9000041A081000000002041A0868000000127A +:100EA000041A0AE000000048041A2540000000105F +:100EB000041A25C800000012041A26580000001267 +:100EC000031A2FB800020B0C041A40180000000689 +:100ED000041A403800000002041A482800000002EA +:100EE000031A4C5800020B0E020E004C0000003298 +:100EF000030E005400040B10040E006400000004F4 +:100F0000030E009400130B14020E014400000001B4 +:100F1000030E014C00020B27020E02040000000128 +:100F2000030E020C00020B29030E021C00040B2B03 +:100F3000030E0280001B0B2F040E02EC00000017B2 +:100F4000040E200000000800030E000400110B4AEC +:100F5000020E01100000000F020E01140000002F0D +:100F6000020C100000000028030C400800040B5B7A +:100F7000030C401C00040B5F030C403800020B63A1 +:100F8000040C40400000005E020C41B8000000016B +:100F9000040C41BC0000001F030C423800040B6528 +:100FA000010C424800000000010C424C000000000F +:100FB000010C425000000000010C425400000000EF +:100FC000010C425800000000010C425C00000000CF +:100FD000010C426000000000010C426400000000AF +:100FE000010C426800000000010C426C000000008F +:100FF000010C427000000000010C4274000000006F +:10100000010C427800000000010C427C000000004E +:10101000010C428000000000020C44C000000001EE +:101020000A00000100000001020C4000000003E87B +:101030000A00000100000002020C40000000000A4B +:101040000A00000100000004020C40000000000142 +:1010500005300400009B00000630076800130B6990 +:10106000043200000000160004328000000000403E +:101070000332183000020B6B03322E7000040B6D2C +:101080000432508000000008033250A000020B71AF +:10109000023380000000001A023380400000004E3E +:1010A0000233808000000010023380C00000002066 +:1010B000023383800007A120023383C0000001F4C3 +:1010C00002338BC0000000010A0000020000000192 +:1010D000023383000007A12002338340000001F4A3 +:1010E0000A0000020000000202338300000013889F +:1010F00002338340000000050A00000200000004E3 +:1011000002338300000001380233834000000000F6 +:1011100005340000332800000534800028840CCA00 +:1011200005350000279416EB0535800036A820D041 +:10113000053600000F982E7A063621503BD60B73E9 +:101140000130000000000000013000040000000039 +:1011500001300008000000000130000C0000000019 +:1011600001300010000000000130001400000000F9 +:1011700003300020001A0B75033000A400020B8F0F +:10118000023002240000000002300234000000009F +:101190000230024C00000000023002E40000FFFFB9 +:1011A000083020000000080004322DE0000000029A +:1011B00004324000000000D8043246C00000012084 +:1011C000043250C80000002404322DE80000000260 +:1011D00004324360000000D804324B40000001207C +:1011E000043251580000002402020058000000326E +:1011F0000302006000040B91040200700000000470 +:10120000030200A0000E0B95030200DC00070BA3F5 +:10121000020200FC000000060202012000000000A3 +:101220000202013400000002020201B000000001CD +:101230000202020C000000010302021400020BAAC9 +:1012400002020404000000010302040C00020BACC3 +:101250000302041C00040BAE03020480001F0BB247 +:10126000040204FC000000130402800000002000BF +:101270000302000400140BD102020108000000C8A0 +:101280000202011800000002020201C40000000076 +:10129000020201CC00000000020201D400000002A2 +:1012A000020201DC00000002020201E4000000FF73 +:1012B000020201EC000000FF0202010C000000C865 +:1012C0000202011C00000002020201C8000000002E +:1012D000020201D000000000020201D8000000025A +:1012E000020201E000000002020201E8000000FF2B +:1012F000020201F0000000FF0216100000000028AA +:101300000316600800030BE50316601C00040BE8DD +:1013100003166038000D0BEC0416606C000000131F +:10132000031660B800020BF9041660C00000003E0E +:10133000021661B800000001041661BC0000001F25 +:101340000316623800040BFB01166248000000001F +:101350000116624C000000000116625000000000FF +:1013600001166254000000000116625800000000DF +:101370000116625C000000000116626000000000BF +:10138000011662640000000001166268000000009F +:101390000116626C0000000001166270000000007F +:1013A000011662740000000001166278000000005F +:1013B0000116627C00000000021664BC00000001FF +:1013C0000A0000010000000102166000000003E8AE +:1013D0000A00000100000002021660000000000A7E +:1013E0000A00000100000004021660000000000175 +:1013F00005280400008800000628076800130BFF7A +:10140000042A000000001600042A800000000040AA +:10141000032A250000020C01032A296000040C03A2 +:10142000032A2F4800020C07032A336800020C0924 +:10143000032A392000020C0B032A393000020C0D5C +:10144000032A3AC800020C0F042A3AD00000000612 +:10145000032A3B9800020C11032A3C2000040C13C1 +:10146000022A3CD000000000022B80000000000097 +:10147000022B804000000018022B80800000000C2E +:10148000022B80C000000066022B83800007A12091 +:10149000022B83C0000001F4022B8BC0000000016E +:1014A0000A00000200000001022B83000007A120B7 +:1014B000022B8340000001F40A0000020000000239 +:1014C000022B830000001388022B834000000005DC +:1014D0000A00000200000004022B83000000013813 +:1014E000022B8340000000000A00000100000020E1 +:1014F000022A3CD400000000052C0000384F0000F8 +:10150000052C80003A560E14052D00003C6D1CAAD7 +:10151000052D80000A4F2BC6062D93704D920C1797 +:101520000128000000000000012800040000000065 +:1015300001280008000000000128000C0000000045 +:101540000128001000000000012800140000000025 +:1015500003280020001A0C19032800A400020C33F1 +:1015600002280224000000000228023400000000CB +:101570000228024C00000000022802E40000FFFFE5 +:101580000828200000000800042A3910000000028A +:10159000042A393800000020042A3A3800000010DC +:1015A000032A3AE800020C35032A3AF800100C37F7 +:1015B000042A3C3000000002042A5000000000020F +:1015C000042A501000000002042A502000000002EB +:1015D000042A503000000002022A5040000000009F +:1015E000042A50480000000E042A391800000002A6 +:1015F000042A39B800000020042A3A7800000010BC +:10160000032A3AF000020C47032A3B3800100C4929 +:10161000042A3C3800000002042A5008000000029E +:10162000042A501800000002042A5028000000027A +:10163000042A503800000002022A50440000000032 +:10164000042A50800000000E0400A00000000016D4 +:101650000300A06C00060C590400A08400000005E3 +:101660000200A0980FE000000400A09C00000014FD +:101670000300A0EC00080C5F0400A22C0000000492 +:101680000200A060000003070300A10C00060C6725 +:101690000400A124000000050200A1380FE00000B2 +:1016A0000400A13C000000140300A18C00080C6D94 +:1016B0000400A23C000000040200A0640000030734 +:1016C000000000000000000000000000000000001A +:1016D000000000000000000000000000000000000A +:1016E00000000000000000000000000000000000FA +:1016F0000000000000000005000500090009000DC1 +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:10172000000D001B001B001C001C001D0000000021 +:1017300000000000000000000000000000000000A9 +:10174000000000000000000000000000001D002557 +:101750000000000000000000000000000000000089 +:101760000000000000000000000000000000000079 +:1017700000000000000000000025002B0000000019 +:101780000000000000000000000000000000000059 +:101790000000000000000000000000000000000049 +:1017A00000000000002B00470000000000000000C7 +:1017B0000000000000000000000000000000000029 +:1017C0000000000000000000000000000000000019 +:1017D000004700AE00AE00B300B300B80000000048 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:1018000000000000000000000000000000000000D8 +:1018100000000000000000000000000000000000C8 +:10182000000000000000000000B800BC0000000044 +:1018300000000000000000000000000000000000A8 +:101840000000000000000000000000000000000098 +:101850000000000000BC00C3000000000000000009 +:101860000000000000000000000000000000000078 +:101870000000000000000000000000000000000068 +:1018800000C300C400C400D600D600E80000000079 +:101890000000000000000000000000000000000048 +:1018A0000000000000000000000000000000000038 +:1018B0000000000000000000000000000000000028 +:1018C0000000000000000000000000000000000018 +:1018D000000000000000000000E800EC0000000034 +:1018E00000000000000000000000000000000000F8 +:1018F00000000000000000000000000000000000E8 +:101900000000000000EC00EF00EF00FA00FA010513 +:1019100000000000000000000000000000000000C7 +:1019200000000000000000000000000000000000B7 +:101930000105010B010B010F010F01130000000055 +:101940000000000000000000000000000000000097 +:101950000000000000000000000000000000000087 +:101960000000000000000000000000000000000077 +:101970000000000000000000000000000000000067 +:10198000000000000000000001130123000000001F +:101990000000000000000000000000000000000047 +:1019A0000000000000000000000000000000000037 +:1019B00000000000012301320000000000000000D0 +:1019C0000000000000000000000000000000000017 +:1019D0000000000000000000000000000000000007 +:1019E000013201350000000000000000000000008E +:1019F00000000000000000000000000000000000E7 +:101A00000000000000000000000000000135014A55 +:101A100000000000000000000000000000000000C6 +:101A200000000000000000000000000000000000B6 +:101A30000000000000000000014A014B000000000F +:101A40000000000000000000000000000000000096 +:101A50000000000000000000000000000000000086 +:101A600000000000014B0158015801590159015A69 +:101A70000000000000000000000000000000000066 +:101A80000000000000000000000000000000000056 +:101A9000015A016E016E01710171017400000000B4 +:101AA0000000000000000000000000000000000036 +:101AB0000000000000000000000000000174018D23 +:101AC0000000000000000000000000000000000016 +:101AD0000000000000000000000000000000000006 +:101AE0000000000000000000018D01BA01BA01C52C +:101AF00001C501D00000000000000000000000004F +:101B000000000000000000000000000000000000D5 +:101B10000000000001D001DD01DD01DE01DE01DF9A +:101B200000000000000000000000000000000000B5 +:101B300000000000000000000000000000000000A5 +:101B400001DF01E0000000000000000000000000D4 +:101B50000000000000000000000000000000000085 +:101B600000000000000000000000000001E001FD96 +:101B70000000000000000000000000000000000065 +:101B80000000000000000000000000000000000055 +:101B9000000000000000000001FD02280228022CC5 +:101BA000022C0230000000000000000000000000D5 +:101BB0000000000000000000000000000000000025 +:101BC00000000000023002420242024A024A02526F +:101BD0000000000000000000000000000000000005 +:101BE00000000000000000000000000000000000F5 +:101BF000025202530000000000000000000000003C +:101C000000000000000000000000000000000000D4 +:101C100000000000000000000000000002530271FC +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C40000000000000000000027102A402A402B023 +:101C500002B002BC00000000000000000000000014 +:101C60000000000000000000000000000000000074 +:101C70000000000002BC02BD02BD02C402C402CBCF +:101C80000000000000000000000000000000000054 +:101C90000000000000000000000000000000000044 +:101CA00000000000000000000000200000004000D4 +:101CB00000006000000080000000A0000000C000E4 +:101CC0000000E000000100000001200000014000D1 +:101CD00000016000000180000001A0000001C000C0 +:101CE0000001E000000200000002200000024000AD +:101CF00000026000000280000002A0000002C0009C +:101D00000002E00000030000000320000003400088 +:101D100000036000000380000003A0000003C00077 +:101D20000003E00000040000000420000004400064 +:101D300000046000000480000004A0000004C00053 +:101D40000004E00000050000000520000005400040 +:101D500000056000000580000005A0000005C0002F +:101D60000005E0000006000000062000000640001C +:101D700000066000000680000006A0000006C0000B +:101D80000006E000000700000007200000074000F8 +:101D900000076000000780000007A0000007C000E7 +:101DA0000007E000000800000008200000084000D4 +:101DB00000086000000880000008A0000008C000C3 +:101DC0000008E000000900000009200000094000B0 +:101DD00000096000000980000009A0000009C0009F +:101DE0000009E000000A0000000A2000000A40008C +:101DF000000A6000000A8000000AA000000AC0007B +:101E0000000AE000000B0000000B2000000B400067 +:101E1000000B6000000B8000000BA000000BC00056 +:101E2000000BE000000C0000000C2000000C400043 +:101E3000000C6000000C8000000CA000000CC00032 +:101E4000000CE000000D0000000D2000000D40001F +:101E5000000D6000000D8000000DA000000DC0000E +:101E6000000DE000000E0000000E2000000E4000FB +:101E7000000E6000000E8000000EA000000EC000EA +:101E8000000EE000000F0000000F2000000F4000D7 +:101E9000000F6000000F8000000FA000000FC000C6 +:101EA000000FE000001000000010200000104000B3 +:101EB00000106000001080000010A0000010C000A2 +:101EC0000010E0000011000000112000001140008F +:101ED00000116000001180000011A0000011C0007E +:101EE0000011E0000012000000122000001240006B +:101EF00000126000001280000012A0000012C0005A +:101F00000012E00000130000001320000013400046 +:101F100000136000001380000013A0000013C00035 +:101F20000013E00000140000001420000014400022 +:101F300000146000001480000014A0000014C00011 +:101F40000014E000001500000015200000154000FE +:101F500000156000001580000015A0000015C000ED +:101F60000015E000001600000016200000164000DA +:101F700000166000001680000016A0000016C000C9 +:101F80000016E000001700000017200000174000B6 +:101F900000176000001780000017A0000017C000A5 +:101FA0000017E00000180000001820000018400092 +:101FB00000186000001880000018A0000018C00081 +:101FC0000018E0000019000000192000001940006E +:101FD00000196000001980000019A0000019C0005D +:101FE0000019E000001A0000001A2000001A40004A +:101FF000001A6000001A8000001AA000001AC00039 +:10200000001AE000001B0000001B2000001B400025 +:10201000001B6000001B8000001BA000001BC00014 +:10202000001BE000001C0000001C2000001C400001 +:10203000001C6000001C8000001CA000001CC000F0 +:10204000001CE000001D0000001D2000001D4000DD +:10205000001D6000001D8000001DA000001DC000CC +:10206000001DE000001E0000001E2000001E4000B9 +:10207000001E6000001E8000001EA000001EC000A8 +:10208000001EE000001F0000001F2000001F400095 +:10209000001F6000001F8000001FA000001FC00084 +:1020A000001FE00000200000002020000020400071 +:1020B00000206000002080000020A0000020C00060 +:1020C0000020E0000021000000212000002140004D +:1020D00000216000002180000021A0000021C0003C +:1020E0000021E00000220000002220000022400029 +:1020F00000226000002280000022A0000022C00018 +:102100000022E00000230000002320000023400004 +:1021100000236000002380000023A0000023C000F3 +:102120000023E000002400000024200000244000E0 +:1021300000246000002480000024A0000024C000CF +:102140000024E000002500000025200000254000BC +:1021500000256000002580000025A0000025C000AB +:102160000025E00000260000002620000026400098 +:1021700000266000002680000026A0000026C00087 +:102180000026E00000270000002720000027400074 +:1021900000276000002780000027A0000027C00063 +:1021A0000027E00000280000002820000028400050 +:1021B00000286000002880000028A0000028C0003F +:1021C0000028E0000029000000292000002940002C +:1021D00000296000002980000029A0000029C0001B +:1021E0000029E000002A0000002A2000002A400008 +:1021F000002A6000002A8000002AA000002AC000F7 +:10220000002AE000002B0000002B2000002B4000E3 +:10221000002B6000002B8000002BA000002BC000D2 +:10222000002BE000002C0000002C2000002C4000BF +:10223000002C6000002C8000002CA000002CC000AE +:10224000002CE000002D0000002D2000002D40009B +:10225000002D6000002D8000002DA000002DC0008A +:10226000002DE000002E0000002E2000002E400077 +:10227000002E6000002E8000002EA000002EC00066 +:10228000002EE000002F0000002F2000002F400053 +:10229000002F6000002F8000002FA000002FC00042 +:1022A000002FE0000030000000302000003040002F +:1022B00000306000003080000030A0000030C0001E +:1022C0000030E0000031000000312000003140000B +:1022D00000316000003180000031A0000031C000FA +:1022E0000031E000003200000032200000324000E7 +:1022F00000326000003280000032A0000032C000D6 +:102300000032E000003300000033200000334000C2 +:1023100000336000003380000033A0000033C000B1 +:102320000033E0000034000000342000003440009E +:1023300000346000003480000034A0000034C0008D +:102340000034E0000035000000352000003540007A +:1023500000356000003580000035A0000035C00069 +:102360000035E00000360000003620000036400056 +:1023700000366000003680000036A0000036C00045 +:102380000036E00000370000003720000037400032 +:1023900000376000003780000037A0000037C00021 +:1023A0000037E0000038000000382000003840000E +:1023B00000386000003880000038A0000038C000FD +:1023C0000038E000003900000039200000394000EA +:1023D00000396000003980000039A0000039C000D9 +:1023E0000039E000003A0000003A2000003A4000C6 +:1023F000003A6000003A8000003AA000003AC000B5 +:10240000003AE000003B0000003B2000003B4000A1 +:10241000003B6000003B8000003BA000003BC00090 +:10242000003BE000003C0000003C2000003C40007D +:10243000003C6000003C8000003CA000003CC0006C +:10244000003CE000003D0000003D2000003D400059 +:10245000003D6000003D8000003DA000003DC00048 +:10246000003DE000003E0000003E2000003E400035 +:10247000003E6000003E8000003EA000003EC00024 +:10248000003EE000003F0000003F2000003F400011 +:10249000003F6000003F8000003FA000003FC00000 +:1024A000003FE000003FE00100000000000001FFED +:1024B0000000020000000001000000020000000017 +:1024C000000000080215002002150020081000007E +:1024D00000000033000000020000000000000005C2 +:1024E00000000005000000000000000000000002E5 +:1024F00000000003000000020000000100000004D2 +:1025000000000002000000020000000100000002C4 +:102510000000002000000040000000400000000318 +:102520000000001800002000000040C00000618092 +:10253000000082400000A3000000C3C00000E4804F +:102540000001054000012600000146C0000167802F +:10255000000188400001A9000001C9C00001EA8013 +:1025600000020B4000022C0000024CC000026D80F3 +:1025700000028E400002AF000002CFC00002F080D7 +:1025800000001140000000010000000100000001F7 +:102590000000000100000001000000010000000137 +:1025A0000000000100000001000000010000000127 +:1025B0000000000100000001000000010000000117 +:1025C0000003D0000000003D00000001000D0000ED +:1025D000000700D000028140000B81680002022049 +:1025E00000010240000F025000010340000C0000F7 +:1025F000000800C000028140000B81680002022038 +:102600000001024000070250000202C0001000005A +:102610000008010000028180000B81A80002026016 +:1026200000018280000E82980008038000000000F4 +:102630000000000000028000000B8028000200E083 +:10264000000101000000811000000118FFFFFFF3EE +:1026500001AFFFFF000000000000000000000000CC +:10266000000000000000000000000000FFFFFFF17C +:1026700000EFFFFF0000000000000000000000006D +:10268000000000000001000000000000FFFFFFF656 +:10269000005FFFFF000000000000000000000000DD +:1026A000000000000002000000000000FFFFF40630 +:1026B0001CBFFFFF00000005000000000000001428 +:1026C000000000000004000000000000FFFFFFF217 +:1026D000004FFFFF000000000000000000000000AD +:1026E000000000000008000000000000FFFFFFFAEB +:1026F000002FFFFF000000000000000000000000AD +:10270000000000000010000000000000FFFFFFF7C5 +:1027100001EFFFFF000000000000000000000000CB +:10272000000000000020000000000000FFFFFFF597 +:10273000002FFFFF0000000000000000000000006C +:10274000000000000040000000000000FFFFFFF359 +:10275000018FFFFF000000000000000000000000EB +:10276000000000000000000000000000FFFFFFF17B +:10277000010FFFFF0000000000000000000000004B +:10278000000000000001000000000000FFFFFFF655 +:10279000005FFFFF000000000000000000000000DC +:1027A000000000000002000000000000FFFFF4062F +:1027B0001CBFFFFF00000005000000000000001427 +:1027C000000000000004000000000000FFFFFFF216 +:1027D000004FFFFF000000000000000000000000AC +:1027E000000000000008000000000000FFFFFFFAEA +:1027F000002FFFFF000000000000000000000000AC +:10280000000000000010000000000000FFFFFFF7C4 +:1028100000EFFFFF000000000000000000000000CB +:10282000000000000020000000000000FFFFFFF596 +:10283000004FFFFF0000000000000000000000004B +:10284000000000000040000000000000FFFFFFFF4C +:1028500000CFFFFF0000000000000000000000CCDF +:10286000000000000000000000000000FFFFFFFF6C +:1028700000CFFFFF0000000000000000000000CCBF +:10288000000000000001000000000000FFFFFFFF4B +:1028900000CFFFFF0000000000000000000000CC9F +:1028A000000000000002000000000000FFFFFFFF2A +:1028B00000CFFFFF0000000000000000000000CC7F +:1028C000000000000004000000000000FFFFFFFF08 +:1028D00000CFFFFF0000000000000000000000CC5F +:1028E000000000000008000000000000FFFFFFFFE4 +:1028F00000CFFFFF0000000000000000000000CC3F +:10290000000000000010000000000000FFFFFFFFBB +:1029100000CFFFFF0000000000000000000000CC1E +:10292000000000000020000000000000FFFFFFFF8B +:1029300000CFFFFF0000000000000000000000CCFE +:10294000000000000040000000000000FFFFFFF357 +:10295000020FFFFF00000000000000000000000068 +:10296000000000000000000000000000FFFFFFF179 +:10297000010FFFFF00000000000000000000000049 +:10298000000000000001000000000000FFFFFFF653 +:10299000005FFFFF000000000000000000000000DA +:1029A000000000000002000000000000FFFFF4062D +:1029B0001CBFFFFF00000005000000000000001425 +:1029C000000000000004000000000000FFFFFFF214 +:1029D000004FFFFF000000000000000000000000AA +:1029E000000000000008000000000000FFFFFF8A58 +:1029F000042FFFFF000000000000000000000000A6 +:102A0000000000000010000000000000FFFFFF9722 +:102A100005CFFFFF000000000000000000000000E4 +:102A2000000000000020000000000000FFFFFFF594 +:102A3000010FFFFF00000000000000000000000088 +:102A4000000000000040000000000000FFFFFFF356 +:102A5000000FFFFF00000000000000000000000069 +:102A6000000000000000000000000000FFFFFFF178 +:102A7000000FFFFF00000000000000000000000049 +:102A8000000000000001000000000000FFFFFFF652 +:102A9000005FFFFF000000000000000000000000D9 +:102AA000000000000002000000000000FFFFF4062C +:102AB0001CBFFFFF00000005000000000000001424 +:102AC000000000000004000000000000FFFFFFF213 +:102AD000004FFFFF000000000000000000000000A9 +:102AE000000000000008000000000000FFFFFFFAE7 +:102AF000002FFFFF000000000000000000000000A9 +:102B0000000000000010000000000000FFFFFF9721 +:102B1000040FFFFF000000000000000000000000A4 +:102B2000000000000020000000000000FFFFFFF593 +:102B3000000FFFFF00000000000000000000000088 +:102B4000000000000040000000000000FFFFFFFF49 +:102B500000CFFFFF0000000000000000000000CCDC +:102B6000000000000000000000000000FFFFFFFF69 +:102B700000CFFFFF0000000000000000000000CCBC +:102B8000000000000001000000000000FFFFFFFF48 +:102B900000CFFFFF0000000000000000000000CC9C +:102BA000000000000002000000000000FFFFFFFF27 +:102BB00000CFFFFF0000000000000000000000CC7C +:102BC000000000000004000000000000FFFFFFFF05 +:102BD00000CFFFFF0000000000000000000000CC5C +:102BE000000000000008000000000000FFFFFFFFE1 +:102BF00000CFFFFF0000000000000000000000CC3C +:102C0000000000000010000000000000FFFFFFFFB8 +:102C100000CFFFFF0000000000000000000000CC1B +:102C2000000000000020000000000000FFFFFFFF88 +:102C300000CFFFFF0000000000000000000000CCFB +:102C4000000000000040000000000000FFFFFFFF48 +:102C500000CFFFFF0000000000000000000000CCDB +:102C6000000000000000000000000000FFFFFFFF68 +:102C700000CFFFFF0000000000000000000000CCBB +:102C8000000000000001000000000000FFFFFFFF47 +:102C900000CFFFFF0000000000000000000000CC9B +:102CA000000000000002000000000000FFFFFFFF26 +:102CB00000CFFFFF0000000000000000000000CC7B +:102CC000000000000004000000000000FFFFFFFF04 +:102CD00000CFFFFF0000000000000000000000CC5B +:102CE000000000000008000000000000FFFFFFFFE0 +:102CF00000CFFFFF0000000000000000000000CC3B +:102D0000000000000010000000000000FFFFFFFFB7 +:102D100000CFFFFF0000000000000000000000CC1A +:102D2000000000000020000000000000FFFFFFFF87 +:102D300000CFFFFF0000000000000000000000CCFA +:102D4000000000000040000000000000FFFFFFFF47 +:102D500000CFFFFF0000000000000000000000CCDA +:102D6000000000000000000000000000FFFFFFFF67 +:102D700000CFFFFF0000000000000000000000CCBA +:102D8000000000000001000000000000FFFFFFFF46 +:102D900000CFFFFF0000000000000000000000CC9A +:102DA000000000000002000000000000FFFFFFFF25 +:102DB00000CFFFFF0000000000000000000000CC7A +:102DC000000000000004000000000000FFFFFFFF03 +:102DD00000CFFFFF0000000000000000000000CC5A +:102DE000000000000008000000000000FFFFFFFFDF +:102DF00000CFFFFF0000000000000000000000CC3A +:102E0000000000000010000000000000FFFFFFFFB6 +:102E100000CFFFFF0000000000000000000000CC19 +:102E2000000000000020000000000000FFFFFFFF86 +:102E300000CFFFFF0000000000000000000000CCF9 +:102E40000000000000400000000000000000020040 +:102E500000003DFF00000A1100000A0000000A0403 +:102E60000000FFFF0000FFFF0000FFFF0000FFFF6A +:102E700000000020000000210000002200000023CC +:102E800000000024000000250000002600000027AC +:102E900000000028000000290000002A0000002B8C +:102EA0000000002C0000002D0000002E0000002F6C +:102EB00000000010000000010000000100000001FF +:102EC00000000001000000010000000100000001FE +:102ED00000000001000000010000000100000001EE +:102EE00000000001000000010000000100000001DE +:102EF000000000010000000107FFFFFF0000003F8D +:102F000007FFFFFF0000000F00007FF800007FF8C0 +:102F10000000FF1C0FFFFFFF0000FF1C0FFFFFFF63 +:102F20000000FF1C0FFFFFFF0000FF1C0FFFFFFF53 +:102F30000000FF1C0FFFFFFF0000FF1C0FFFFFFF43 +:102F40000000FF1C0FFFFFFF0000FF1C0FFFFFFF33 +:102F50000000FF1C0FFFFFFF0000FF1C0FFFFFFF23 +:102F60000000FF1C0FFFFFFF0000FF1C0FFFFFFF13 +:102F70000000FF1C0FFFFFFF0000FF1C0FFFFFFF03 +:102F80000000FF1C0FFFFFFF0000FF1C0FFFFFFFF3 +:102F90000000FF1C0FFFFFFF0000FF1C0FFFFFFFE3 +:102FA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD3 +:102FB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC3 +:102FC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB3 +:102FD0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA3 +:102FE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF93 +:102FF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF83 +:103000000000FF1C0FFFFFFF0000FF1C0FFFFFFF72 +:103010000000FF1C0FFFFFFF0000FF1C0FFFFFFF62 +:103020000000FF1C0FFFFFFF0000FF1C0FFFFFFF52 +:103030000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:103040000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:103050000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:103060000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:103070000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:103080000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:103090000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:1030A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:1030B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:1030C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1030D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1030E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1030F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:103100000000FF1C0FFFFFFF0000FF1C0FFFFFFF71 +:103110000000FF00000000000000FF0000000000B1 +:103120000000000200001500000000010000000285 +:103130000000000300000000000000040000000187 +:10314000000000000000000100000004000000007A +:10315000000000010000000300000000000000016A +:103160000000000400000000000000010000000357 +:10317000000000000000000100000004000000004A +:103180000000000400000003000000000000000038 +:1031900000003FFF000003FF0000000000000001EE +:1031A0000000000100000001007C10040000000489 +:1031B00000000000000000020000009000000090ED +:1031C00000800090081000000000008A00000080CD +:1031D000000000810000008000000006000007D011 +:1031E0000000076C0000FFFF0000FFFF0000FFFF72 +:1031F0000000FFFF071D291100000000009C0424AF +:1032000000000000000000010000000100000001BB +:10321000000000010000000100007FFF000000FF2F +:10322000000000FF000000FF000000FF000000FFA2 +:10323000000000FF000000FF000000FF0000003E53 +:10324000000000000000003F0000003F0000003FC1 +:10325000000000000000003F0000003F0000003FB1 +:103260000000000F00000043000000000000000606 +:1032700000000000121700002217000032170000A3 +:103280001215000022150000321500000210000087 +:10329000001000001010000020100000301000008E +:1032A000001000001214000022140000321400006C +:1032B00000E38340FFFFFFFFFFFFFFFFFFFFFFFF74 +:1032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +:1032D000FFFFFFFFF0003000FFFFFFFFFFFFFFFFDA +:1032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +:1032F000FFFFFFFFFFFF3328FFFF3338FFFFFFFF14 +:10330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +:10331000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:10332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +:10333000FFFFFFFF00003C1000000008000000003D +:103340000000000000000040000018080000080312 +:103350000000080300000040000000030000080314 +:103360000000080300000803000100030000080338 +:103370000000080300000003000000030000000339 +:103380000000000300000003000000030000000331 +:103390000000000300000003000000030000000321 +:1033A0000000000300000003000000030000000311 +:1033B000000024030000002F000000090000001995 +:1033C00000000184000001830000030600000019D2 +:1033D00000000006000003060000030600000306CC +:1033E00000000C8600000306000003060000000633 +:1033F00000000006000000060000000600000006B5 +:1034000000000006000000060000000600000006A4 +:103410000000000600000006000000060000000694 +:103420000000000600000006000003060000001374 +:1034300000000006000010040000100400106440AA +:1034400000106440000000000000000000000000C8 +:10345000000000000000200000000000000000004C +:10346000000000000000000000002000000000003C +:10347000000000000000000000000000000020002C +:103480000000007C0000003D0000003F0000009CA8 +:1034900000000006000000050000000A0000000512 +:1034A000000001400000014000000000000000009A +:1034B000000000C00000013F00007FFF0000004846 +:1034C000000000480000000000000000000000486C +:1034D00000000004000000040000000400000004DC +:1034E00000000004000000040000000400000004CC +:1034F00000000004000000090000000B0000000AAA +:1035000000000004000000090000000B0000000A99 +:1035100000000001000000010000000100000001A7 +:103520000000000100000001000000010000000197 +:103530000000000100000001000000010000000187 +:1035400000000004000000090000000B0000000A59 +:103550000000000100000001000000010000000167 +:103560000000000100000001000000010000000157 +:103570000000000100000001000000010000000147 +:1035800000000004000000090000000B0000000A19 +:103590000000000000000000000008000000020021 +:1035A000000001FF00000400000000000000000017 +:1035B0001E491E491E491E490E490E490E490E4913 +:1035C000FFFFFFFF00000000FFFFFFFF0000000003 +:1035D000000025E400008000000000130FFF0FFF33 +:1035E00000000000000000000FFF0FFF100010009F +:1035F000100010002000200020002000800080002B +:1036000080008000400040004000400000000000BA +:10361000000000010101010101200101200101015F +:10362000010110010101010101200101200101013D +:10363000010110012001010101011001010101013D +:10364000012001012001010101011001010101011D +:1036500001200101000001230000012300000123DB +:1036600000000123000001230000012300000123CA +:1036700000000123000001230000012300000123BA +:1036800000000123000001230000012300000123AA +:10369000000001230000012300000123000001239A +:1036A000000001230000002000000032000000079D +:1036B00000000007000000000000000802150020C4 +:1036C0000215002000000030081000000000003348 +:1036D0000000003000000031000000020000000582 +:1036E00000000006000000020000000200000000D0 +:1036F00000000005000000020000000200000002BF +:1037000000000001000000060000000100000002AF +:1037100000000040000000400000002000000013F6 +:103720000000002000010000000204C00003098026 +:1037300000040E4000051300000617C000071C809F +:103740000008214000092600000A2AC0000B2F8033 +:10375000000C3440000D3900000E3DC0000F4280C7 +:103760000010474000114C00001250C0001355805B +:1037700000145A4000155F00001663C000176880EF +:1037800000186D4000197200001A76C0001B7B8083 +:10379000001C8040001D8500001E89C0001F8E8017 +:1037A0000000934000000001000000010000000143 +:1037B0000000000100000001000000010000000105 +:1037C00000000001000000010000000100000001F5 +:1037D00000000001000000010000000100000001E5 +:1037E00000000001000000080000000C00000010B4 +:1037F00000000001000000010000000100000211B3 +:103800000000020000000204000002190000FFFF97 +:103810000000FFFF0000FFFF0000FFFF07FFFFFFAA +:103820000000003F07FFFFFF0000000F00007FF8CF +:1038300000007FF800000000140AFF0000000000F4 +:1038400000000001002010010000000001008600BF +:1038500000000100000000010000000000008602DE +:1038600000000000000000000000000000008604CE +:1038700000000000000000000000000000008606BC +:1038800000000000000000000000000000008608AA +:103890000000000000000000000000000000860A98 +:1038A0000000000000000000000000000000860C86 +:1038B0000000000000000000000000000000860E74 +:1038C0000000000000000000000000000000861062 +:1038D0000000000000000000000000000000861250 +:1038E000000000000000000000000000000086143E +:1038F000000000000000000000000000000086162C +:103900000000000000000000000000000000861819 +:103910000000000000000000000000000000861A07 +:103920000000000000000000000000000000861CF5 +:103930000000000000000000000000000000861EE3 +:1039400000000000000000000000000000008620D1 +:1039500000000000000000000000000000008622BF +:1039600000000000000000000000000000008624AD +:10397000000000000000000000000000000086269B +:103980000000000000000000000000000000862889 +:103990000000000000000000000000000000862A77 +:1039A0000000000000000000000000000000862C65 +:1039B0000000000000000000000000000000862E53 +:1039C0000000000000000000000000000000863041 +:1039D000000000000000000000000000000086322F +:1039E000000000000000000000000000000086341D +:1039F000000000000000000000000000000086360B +:103A000000000000000000000000000000008638F8 +:103A10000000000000000000000000000000863AE6 +:103A20000000000000000000000000000000863CD4 +:103A30000000000000000000000000000000863EC2 +:103A400000000000000000000000000000008640B0 +:103A5000000000000000000000000000000086429E +:103A6000000000000000000000000000000086448C +:103A7000000000000000000000000000000086467A +:103A80000000000000000000000000000000864868 +:103A90000000000000000000000000000000864A56 +:103AA0000000000000000000000000000000864C44 +:103AB0000000000000000000000000000000864E32 +:103AC0000000000000000000000000000000865020 +:103AD000000000000000000000000000000086520E +:103AE00000000000000000000000000000008654FC +:103AF00000000000000000000000000000008656EA +:103B000000000000000000000000000000008658D7 +:103B10000000000000000000000000000000865AC5 +:103B20000000000000000000000000000000865CB3 +:103B30000000000000000000000000000000865EA1 +:103B4000000000000000000000000000000086608F +:103B5000000000000000000000000000000086627D +:103B6000000000000000000000000000000086646B +:103B70000000000000000000000000000000866659 +:103B80000000000000000000000000000000866847 +:103B90000000000000000000000000000000866A35 +:103BA0000000000000000000000000000000866C23 +:103BB0000000000000000000000000000000866E11 +:103BC00000000000000000000000000000008670FF +:103BD00000000000000000000000000000008672ED +:103BE00000000000000000000000000000008674DB +:103BF00000000000000000000000000000008676C9 +:103C000000000000000000000000000000008678B6 +:103C10000000000000000000000000000000867AA4 +:103C20000000000000000000000000000000867C92 +:103C30000000000000000000000000000000867E80 +:103C4000000000000000000000000000000086806E +:103C5000000000000000000000000000000086825C +:103C6000000000000000000000000000000086844A +:103C70000000000000000000000000000000868638 +:103C80000000000000000000000000000000868826 +:103C90000000000000000000000000000000868A14 +:103CA0000000000000000000000000000000868C02 +:103CB0000000000000000000000000000000868EF0 +:103CC00000000000000000000000000000008690DE +:103CD00000000000000000000000000000008692CC +:103CE00000000000000000000000000000008694BA +:103CF00000000000000000000000000000008696A8 +:103D00000000000000000000000000000000869895 +:103D10000000000000000000000000000000869A83 +:103D20000000000000000000000000000000869C71 +:103D30000000000000000000000000000000869E5F +:103D4000000000000000000000000000000086A04D +:103D5000000000000000000000000000000086A23B +:103D6000000000000000000000000000000086A429 +:103D7000000000000000000000000000000086A617 +:103D8000000000000000000000000000000086A805 +:103D9000000000000000000000000000000086AAF3 +:103DA000000000000000000000000000000086ACE1 +:103DB000000000000000000000000000000086AECF +:103DC000000000000000000000000000000086B0BD +:103DD000000000000000000000000000000086B2AB +:103DE000000000000000000000000000000086B499 +:103DF000000000000000000000000000000086B687 +:103E0000000000000000000000000000000086B874 +:103E1000000000000000000000000000000086BA62 +:103E2000000000000000000000000000000086BC50 +:103E3000000000000000000000000000000086BE3E +:103E4000000000000000000000000000000086C02C +:103E5000000000000000000000000000000086C21A +:103E6000000000000000000000000000000086C408 +:103E7000000000000000000000000000000086C6F6 +:103E8000000000000000000000000000000086C8E4 +:103E9000000000000000000000000000000086CAD2 +:103EA000000000000000000000000000000086CCC0 +:103EB000000000000000000000000000000086CEAE +:103EC000000000000000000000000000000086D09C +:103ED000000000000000000000000000000086D28A +:103EE000000000000000000000000000000086D478 +:103EF000000000000000000000000000000086D666 +:103F0000000000000000000000000000000086D853 +:103F1000000000000000000000000000000086DA41 +:103F2000000000000000000000000000000086DC2F +:103F3000000000000000000000000000000086DE1D +:103F4000000000000000000000000000000086E00B +:103F5000000000000000000000000000000086E2F9 +:103F6000000000000000000000000000000086E4E7 +:103F7000000000000000000000000000000086E6D5 +:103F8000000000000000000000000000000086E8C3 +:103F9000000000000000000000000000000086EAB1 +:103FA000000000000000000000000000000086EC9F +:103FB000000000000000000000000000000086EE8D +:103FC000000000000000000000000000000086F07B +:103FD000000000000000000000000000000086F269 +:103FE000000000000000000000000000000086F457 +:103FF000000000000000000000000000000086F645 +:10400000000000000000000000000000000086F832 +:10401000000000000000000000000000000086FA20 +:10402000000000000000000000000000000086FC0E +:10403000000000000000000000000000000086FEFC +:1040400000000000000000000000000000008700E9 +:1040500000000000000000000000000000008702D7 +:1040600000000000000000000000000000008704C5 +:1040700000000000000000000000000000008706B3 +:1040800000000000000000000000000000008708A1 +:104090000000000000000000000000000000870A8F +:1040A0000000000000000000000000000000870C7D +:1040B0000000000000000000000000000000870E6B +:1040C0000000000000000000000000000000871059 +:1040D0000000000000000000000000000000871247 +:1040E0000000000000000000000000000000871435 +:1040F0000000000000000000000000000000871623 +:104100000000000000000000000000000000871810 +:104110000000000000000000000000000000871AFE +:104120000000000000000000000000000000871CEC +:104130000000000000000000000000000000871EDA +:1041400000000000000000000000000000008720C8 +:1041500000000000000000000000000000008722B6 +:1041600000000000000000000000000000008724A4 +:104170000000000000000000000000000000872692 +:104180000000000000000000000000000000872880 +:104190000000000000000000000000000000872A6E +:1041A0000000000000000000000000000000872C5C +:1041B0000000000000000000000000000000872E4A +:1041C0000000000000000000000000000000873038 +:1041D0000000000000000000000000000000873226 +:1041E0000000000000000000000000000000873414 +:1041F0000000000000000000000000000000873602 +:1042000000000000000000000000000000008738EF +:104210000000000000000000000000000000873ADD +:104220000000000000000000000000000000873CCB +:104230000000000000000000000000000000873EB9 +:1042400000000000000000000000000000008740A7 +:104250000000000000000000000000000000874295 +:104260000000000000000000000000000000874483 +:104270000000000000000000000000000000874671 +:10428000000000000000000000000000000087485F +:104290000000000000000000000000000000874A4D +:1042A0000000000000000000000000000000874C3B +:1042B0000000000000000000000000000000874E29 +:1042C0000000000000000000000000000000875017 +:1042D0000000000000000000000000000000875205 +:1042E00000000000000000000000000000008754F3 +:1042F00000000000000000000000000000008756E1 +:1043000000000000000000000000000000008758CE +:104310000000000000000000000000000000875ABC +:104320000000000000000000000000000000875CAA +:104330000000000000000000000000000000875E98 +:104340000000000000000000000000000000876086 +:104350000000000000000000000000000000876274 +:104360000000000000000000000000000000876462 +:104370000000000000000000000000000000876650 +:10438000000000000000000000000000000087683E +:104390000000000000000000000000000000876A2C +:1043A0000000000000000000000000000000876C1A +:1043B0000000000000000000000000000000876E08 +:1043C00000000000000000000000000000008770F6 +:1043D00000000000000000000000000000008772E4 +:1043E00000000000000000000000000000008774D2 +:1043F00000000000000000000000000000008776C0 +:1044000000000000000000000000000000008778AD +:104410000000000000000000000000000000877A9B +:104420000000000000000000000000000000877C89 +:104430000000000000000000000000000000877E77 +:104440000000000000000000000000000000878065 +:104450000000000000000000000000000000878253 +:104460000000000000000000000000000000878441 +:10447000000000000000000000000000000087862F +:10448000000000000000000000000000000087881D +:104490000000000000000000000000000000878A0B +:1044A0000000000000000000000000000000878CF9 +:1044B0000000000000000000000000000000878EE7 +:1044C00000000000000000000000000000008790D5 +:1044D00000000000000000000000000000008792C3 +:1044E00000000000000000000000000000008794B1 +:1044F000000000000000000000000000000087969F +:10450000000000000000000000000000000087988C +:104510000000000000000000000000000000879A7A +:104520000000000000000000000000000000879C68 +:104530000000000000000000000000000000879E56 +:10454000000000000000000000000000000087A044 +:10455000000000000000000000000000000087A232 +:10456000000000000000000000000000000087A420 +:10457000000000000000000000000000000087A60E +:10458000000000000000000000000000000087A8FC +:10459000000000000000000000000000000087AAEA +:1045A000000000000000000000000000000087ACD8 +:1045B000000000000000000000000000000087AEC6 +:1045C000000000000000000000000000000087B0B4 +:1045D000000000000000000000000000000087B2A2 +:1045E000000000000000000000000000000087B490 +:1045F000000000000000000000000000000087B67E +:10460000000000000000000000000000000087B86B +:10461000000000000000000000000000000087BA59 +:10462000000000000000000000000000000087BC47 +:10463000000000000000000000000000000087BE35 +:10464000000000000000000000000000000087C023 +:10465000000000000000000000000000000087C211 +:10466000000000000000000000000000000087C4FF +:10467000000000000000000000000000000087C6ED +:10468000000000000000000000000000000087C8DB +:10469000000000000000000000000000000087CAC9 +:1046A000000000000000000000000000000087CCB7 +:1046B000000000000000000000000000000087CEA5 +:1046C000000000000000000000000000000087D093 +:1046D000000000000000000000000000000087D281 +:1046E000000000000000000000000000000087D46F +:1046F000000000000000000000000000000087D65D +:10470000000000000000000000000000000087D84A +:10471000000000000000000000000000000087DA38 +:10472000000000000000000000000000000087DC26 +:10473000000000000000000000000000000087DE14 +:10474000000000000000000000000000000087E002 +:10475000000000000000000000000000000087E2F0 +:10476000000000000000000000000000000087E4DE +:10477000000000000000000000000000000087E6CC +:10478000000000000000000000000000000087E8BA +:10479000000000000000000000000000000087EAA8 +:1047A000000000000000000000000000000087EC96 +:1047B000000000000000000000000000000087EE84 +:1047C000000000000000000000000000000087F072 +:1047D000000000000000000000000000000087F260 +:1047E000000000000000000000000000000087F44E +:1047F000000000000000000000000000000087F63C +:10480000000000000000000000000000000087F829 +:10481000000000000000000000000000000087FA17 +:10482000000000000000000000000000000087FC05 +:10483000000000000000000000000000000087FEF3 +:104840000000FF00000000000000FF00000000006A +:10485000000000020000150000000001000000023E +:104860000000000300000000000000040000000140 +:104870000000000000000001000000040000000033 +:104880000000000100000003000000000000000123 +:104890000000000400000000000000010000000310 +:1048A0000000000000000001000000040000000003 +:1048B00000000004000000030000000000000000F1 +:1048C00000003FFF000003FF0000000300BEBC200B +:1048D00000000000000000050000000300BEBC2036 +:1048E00000000000000000050000000D0000000CAA +:1048F000000000000000001002150020021500203A +:1049000000000030081000000000003300000030FC +:104910000000003100000002000000040000000060 +:104920000000000200000002000000000000000281 +:10493000000000070000000200000002000000016B +:104940000000000300000001000000020000004021 +:104950000000004000000004000000200000000FE4 +:104960000000001B00008000000103C000018780E0 +:1049700000020B4000028F00000312C0000396806B +:1049800000041A4000049E00000521C00005A58017 +:10499000000629400006AD00000730C00007B480C3 +:1049A000000838400008BC0000093FC00009C3806F +:1049B000000A4740000ACB00000B4EC0000BD2801B +:1049C000000C5640000CDA00000D5DC00000618054 +:1049D00000000001000000010000000100000001D3 +:1049E00000000001000000010000000100000001C3 +:1049F00000000001000000010000000100000001B3 +:104A000000000001000000010000000100000001A2 +:104A100000000001000005AA000005990000059DA6 +:104A2000000003C00000FFFF0000FFFF0000FFFFC9 +:104A30000000FFFF000000460000000C07FFFFFF22 +:104A40000000003F07FFFFFF0000000F00007FF89D +:104A500000007FF8FFFFFFFFFFFFFFFF0000FF00E8 +:104A6000000000000000FF0000000000000019002E +:104A7000000000000000000200001500000000011E +:104A8000000000020000000300000000000000041D +:104A90000000000100000000000000010000000410 +:104AA0000000000000000001000000030000000002 +:104AB00000000001000000040000000000000001F0 +:104AC00000000003000000000000000100000004DE +:104AD00000000000000000040000000300000000CF +:104AE0000000000000003FFF000003FF0000000F77 +:104AF00000000007000000000000000E0315002069 +:104B000003150020010000300810000000000033F1 +:104B1000000000300000003100000003000000062B +:104B2000000000030000000300000002000000007D +:104B30000000000200000000000000060000000469 +:104B4000000000020000000200000001000000045C +:104B500000000001000000020000004000000040D2 +:104B60000000000400000020000000020000001F00 +:104B70000000100000002080000031000000418093 +:104B8000000052000000628000007300000083807B +:104B9000000094000000A4800000B5000000C58063 +:104BA0000000D6000000E6800000F700000107804A +:104BB000000118000001288000013900000149802F +:104BC00000015A0000016A8000017B0000018B8017 +:104BD00000019C000001AC800001BD000001CD80FF +:104BE0000001DE000001EE8000000F000000000167 +:104BF00000000001000000010000000100000001B1 +:104C000000000001000000010000000100000001A0 +:104C10000000000100000001000000010000000190 +:104C20000000000100000001000000010000000180 +:104C30000000000100000001000000010000061457 +:104C400000000600000006040000FFFF0000FFFF58 +:104C50000000FFFF0000FFFF000000200000002018 +:104C600000000000000000000000002300000024FD +:104C70000000002500000026000000270000002999 +:104C80000000002A0000002B0000002C00000001A2 +:104C90000000000107FFFFFF0000003F07FFFFFFCC +:104CA0000000000F00007FF800007FF80000000007 +:104CB00000000001CCCC0201CCCCCCCCCCCC02018D +:104CC000CCCCCCCCFFFFFFFFFFFFFFFF00000000BC +:104CD00000010001001E0C07CCCCCCC1FFFFFFFF80 +:104CE000FFFFFFFF10000000000028AD7058103CCF +:104CF000000000000000FF00000000000000FF00B6 +:104D0000000000000000000200001500000000018B +:104D1000000000020000000300000000000000048A +:104D2000000000010000000000000001000000047D +:104D3000000000000000000100000003000000006F +:104D4000000000010000000400000000000000015D +:104D5000000000030000000000000001000000044B +:104D6000000000000000000400000003000000003C +:104D70000000000000003FFF000003FF000E0000E5 +:104D8000011600D60000FFFF000000000000FFFF3A +:104D9000000000000000FFFF000000000000FFFF17 +:104DA000000000000000FFFF000000000000FFFF07 +:104DB0000000000000000000000000000000FFFFF5 +:104DC0000000000000720000012300F30000FFFF5C +:104DD000000000000000FFFF000000000000FFFFD7 +:104DE000000000000000FFFF000000000000FFFFC7 +:104DF000000000000000FFFF0000000000000000B5 +:104E0000000000000000FFFF00000000BF5C000089 +:104E1000FFF51FEF0000FFFFF00003E000000000BF +:104E20000000A0005554000055555555000055553B +:104E3000F0000000555400005555555500005555DB +:104E4000F0000000BF5C0000FFF51FEF0000FFFF57 +:104E5000F00003E0000000000000A0005554000036 +:104E60005555555500005555F000000055540000AB +:104E70005555555500005555F00000000000000044 +:104E80001F8B080000000000000BFB51CFC0F00397 +:104E9000099F6347E56730A3F24FB2A0F2071AB744 +:104EA000313130F403F115209EC1845FED6A464C28 +:104EB000B1371208F654310606061108DB4064E0EB +:104EC000FD368A698FFB9551F95D8A109A072A3E53 +:104ED000014DBE1B2AEF2007A1272A6337D7112ACD +:104EE0000F00DCF1F0E360030000000000000000B0 +:104EF0001F8B080000000000000BED7D0B7855D5DE +:104F000099E8DA67EFB3CFFB64279C242790D09D04 +:104F1000906080802721BC2CD69D10E4749AD60323 +:104F2000048D1AF5F0A846410D5CAC696B9B1D928F +:104F30004004C4A01D9BAAED1CD0B1B4B5BDC11BDB +:104F40002D9D713A41A58333EDBD94608B15F568B5 +:104F5000AD8F563B51EB407BA9DCFF5F8F73F6DED4 +:104F600079007E753ADFFD063FD9ACBD5EFFFAD70A +:104F7000FF5EFFDAC7139C4AD44F107206FF5C42F3 +:104F8000C8363739205D4888DF1B3BBC5A873281E1 +:104F90003F8B08D98ACF22F83FE552C87C4202589D +:104FA000867AB9D8F58A274CC81E1714F2E15D3409 +:104FB0008FB67707DB4852CF8E4BBCC635A4969090 +:104FC000D6A8AA6F9708592F93B6812A2C4F6F2025 +:104FD00073A0BDC4C69F877FE13872A3DE1921E4A8 +:104FE00083544F4CB68CE37CB62A846835F0243B5E +:104FF0008FC86184CF3D92F612FAE74C1921ED2754 +:10500000AAE3CF8832053914791D815F40169C913F +:10501000617C5295D339C1F8BFED38AC2915849C19 +:10502000EC88C59FA9185D2FD6B19E90D73C79B862 +:105030004E53BD72362117132F2E26B33E25AFB720 +:10504000201984FA4884E267FDBE6735A5320BD784 +:105050007A850C796A46C34F88C9F021FA1168072E +:10506000F3AC4F035C96758DEED747E7CF8CAB1052 +:10507000DBBEED7125EBB1DEDF709B3919CAEB1F8A +:105080005D4E287C007F62F604708BF91DF09F6DE9 +:10509000FEF71A7AB6121721C7DC7A4902F73D7E6D +:1050A000410381FD5A2131FA12785EBEB487CE37B2 +:1050B0001E9E61BF750DF12C076343943EEE5C08A4 +:1050C000DB48BE407C144FCE7E67A38735A3E9E161 +:1050D000B2A68F811EBE82F480FB18CFA7742ED695 +:1050E000EFC4636B83FB15CF9C09E880F73FF77D26 +:1050F000E0FD46EFFF9631F79F8F2FE840CCF3910C +:10510000E1E574404842C6F1B265932442C0F72AF3 +:105110004922BEBAF05511EB4F605F3D5AEC219425 +:1051200013F71395B657225E53A67226793FEDDF2B +:10513000685F8F9BA48804EDDD05953949188F04BD +:10514000991C72EECFB68EB6B862D9379077CD0380 +:10515000418A3836CF54929A84EB39BD445F111A94 +:105160009F0E86B15F55967E05DC4A31837BBF80FA +:10517000BBD163CA7328DCFBC782DBAF2508F2C54D +:10518000F0672F607073FC3BE75BE1FD1F7165AE5C +:1051900015AFC420058494F0A9FBCA499F9C036500 +:1051A000C365E27E9457F51D44912CE4EADD15F3C6 +:1051B0009F7243B9484D1E443864397610EB4A3625 +:1051C0000F109CB797E361A95CEC7B159EBB1BCAD3 +:1051D00072D6C0F30D228DC957F777C0DADC84ECA4 +:1051E000ECF0D2E7C91719FCE3E1EB810E3D8EED3F +:1051F00032E556259E82F60F6CD8BBFB52C05B4F42 +:10520000A4BC06F998B44A0AAE2B20B1753D8FF3C1 +:1052100003BCF7DFF8050A27E0F17984C71D49319F +:105220007A2509C2E80AE0B1E0A3DC300D2D98C56B +:10523000C734C09B0BF44F5E1F890D118A875771CD +:105240009C227DC0F0005E26C5635B409564F00043 +:105250005AE5D3E500D73DCF56D46C2759B82B2457 +:10526000974D1E1325569918834EC43EF5039EAAEA +:105270002AB09C9610CEEDBC2CDA3D4C92EF63BB6D +:10528000A9493FA5EFA9ED3137AEEBA8C4E80B144F +:105290002A417AE9E6EBEA5FE3A774D65DA2ED91D5 +:1052A0004B09F9108907E9EA41C9C9DF1F323A61A0 +:1052B000F8513486AF76292949F05EA9324DA48F82 +:1052C0006892BDEF729156BA6E931CC171A2121B07 +:1052D00047D075B85CDFBB1DE69B24317A882EDE93 +:1052E000BAD105789D1455287EA3E9D58D281F7C59 +:1052F000273EFD163EE13DB50BA62607104252D2D1 +:1053000068D6E17C93369BC81924DA983EB2049E95 +:10531000B74AC949088F5FEBEBF4D0C96212E2F3D8 +:105320001EB7493458BF77719F9108E2FE5F4A5615 +:105330005BF442B9C4D6ADE8C4485565F7FF9B326B +:1053400083BBCF38EABB2188EDFC14DE72D240E982 +:10535000611AB08D0474E0453A60FC300DE70F6CC3 +:10536000EE9324844F8FB9105EA0FF42A4B77BDC7C +:105370007A11F6BBE746B539C5F0730CE933ECE2B8 +:10538000B8D1E13FC43B2FBF0D9208E70B237E103D +:105390001F301F4C4AE4B903432EC0636E2389219A +:1053A0005AC388AF39597C29B503CF4E87FABCCD93 +:1053B0002466E0BE340E99B814A57CC040BAF4C788 +:1053C000637548A780AF4512AC3B4CFA24DC7F459F +:1053D00033295F3CA0B4BDFC15E8FFC0613966EA23 +:1053E00016FA24409FB3B3782BDE007C68B51B38D7 +:1053F0009DFAB99CE823C9A538BEA73849E9624798 +:105400003EC89570B6BF82F21AF150D944DBABD1D9 +:1054100081E36B505E47A2D5947F15CD85F8D9E125 +:1054200065FB90E5872D74BF7A3B52E4D76EE45F4D +:1054300036BE574FB067BBACBF86F2AD92C1DD5BE5 +:10544000B52287E07BEF0041FC07FAF653FCC198D8 +:10545000B1BFD719DC4DB02E0F50D710E8A3EFC164 +:10546000F34C29BE4FD179DC513F7D2FD6E96D57E2 +:10547000D9F82442E5CB64CE27256448C2FD215CDF +:105480009E4EE1DB3AB5784422A0C7F484560FE083 +:1054900092B2E6D853F8FC66EE23457BE8FC0DDAC1 +:1054A000EB30BE644C92CECC1A5FEEA1E27D5DC0C3 +:1054B0002167F11D5DA7BC9AB6EC43B811CA1678F6 +:1054C000FD55F67A90B2D97269761C318F26F49028 +:1054D0001E8B21FF6C77A79A498C900EE9692302F5 +:1054E000FBB4DD973A4E3490B3BD3F31E2D0CE3FAE +:1054F000959023C837CA8097C0F31B48FC2847748F +:105500009DCA9B309F6BC742170903BFE41429292A +:1055100002F31E4CCB44857DD81555529E528E44C5 +:1055200094D7BCBD186757FA5E2FEEDF9D55EF6923 +:10553000F8CC8C1F65ED7D9C3E4E56B808EEAB183E +:10554000FF648580AB8FF6F7A68127A03E00F3A508 +:1055500090DE499FB70EE5D162302CB1BCD01CA2C1 +:10556000AC674498FD7016790CB60BD5C74AA549AF +:10557000E52D943BA9FDD2374A7E3E8272C103F2EB +:1055800013E943C84F31CFF8FB6D0AFD5CA900DE7B +:105590006E27FE18DA0375527200C76B6F6A27A870 +:1055A000874FAE6A36F0D90E2352BA5EE84AFD7DC7 +:1055B00029A743E8B72B5198C27ECAA4E27C9C7706 +:1055C000D742268FC69B77478759516ED12B3B60B8 +:1055D0005F916F7654D578C7EA17886EAD289F041F +:1055E000E3C6F5426D0C7BFBECE3AEB08DFB59924C +:1055F000FCA9943F7A7C42185DBB408F23FDFB835E +:105600009B09F2959F58E8BD34DB2ECB27F672FF3D +:10561000EAEBA3888748A1512D011DD702DB274063 +:10562000354602C67EA4F3195B72EA82B02F118F51 +:10563000B1D105F5CB5C23C64E2C836F8BCCFEC954 +:105640002D7F229D006F0478955C04FBB1655AA7FD +:105650001964F84779B6BDE348D16B6E944FC7E93A +:10566000F34DAE5F7EC7E9D60FE449E55025B4B3EC +:10567000F2A562D2F73E1DFA59EDF02819427A528E +:10568000383D819E1941B95AD40C76978EF464B78F +:10569000BB9C78FF03D7B3FDA19BE8BA3374522BB0 +:1056A000E8E48877B985CEEFAA3D3FFAD8A9A4BD32 +:1056B000A85F77055FED9D06F466C65CB10A80AB16 +:1056C0000BCB308F3CBBBCDAEA770FB9EB55976553 +:1056D0007F8355309E050F779D271D65E68FD8E7A0 +:1056E000EF898C3B7F818BFA0DA062517EB0A9C9F6 +:1056F000D6A2FB281D3AE111FDAE9592092BDCBE26 +:105700007283E2FD547ADA84F66A2FD083D55EFD87 +:1057100080D301EE77AC0AF71BEA2DFBAD7039118F +:1057200059D942E1519ABC54CE9016C2EC594E0759 +:105730008AD626ECD81A5C8FD38EFD00891BDEF743 +:10574000BB93D136787F572EE8980BE1E9369B134F +:10575000B45D3ABAC2A2CF37BB987D9CE9B708F8CE +:1057600004C6FF21495E82EB2655D120CE2FE8D01A +:10577000A70D98487FA2FD564E5FFE4A83C9390E99 +:10578000F7E75C5C5E8F03FFB8EB6DB6FB37A2BD3D +:1057900058E71E57E203C962978E967F691B5D9F8B +:1057A000AFDC733E831249207F75056BB43516FA62 +:1057B0005CED62FCF565B7B11AF1E4A49FF3958B3B +:1057C000E3CDDB13B1CFDB969DB76DAC79C142D38E +:1057D000683C82CB3D25113603A8AF123BDF457DE7 +:1057E0000576727C2DE255D84BDCDE12FAFA6F5743 +:1057F0005D4AF9C7F79C4C907F886298549F001DC2 +:10580000517DD22719CCBF31A8FDE447FB898626FC +:1058100098FDB448EC7BB9C57E2AC3F998FD64D6DF +:10582000A30C82E74BBE5417B46FF786E710F03B2A +:105830004FFAD8F37679202E01DC275D0309A40FF7 +:105840001117F47B13061B8DD1C3398CD37B2EE348 +:1058500038FB39C785760B987FD876213E7794B38D +:10586000F1FCDE363A8AA438EC4F8E4F61237BBDC3 +:10587000A6B714E5D13199A05D2DF7550FE1F819C0 +:105880003BB498CD077EC8C3DB85FD09F42F73F9BF +:10589000E4AF72D9EC5077B19FE23BB3DFCDA68481 +:1058A000F3DD26E6E3785682A0D4AAD83EA13D03D4 +:1058B00096361D07CDBC33D45EFD329D47F453822E +:1058C00064C817A6FA9E58E3670AF68336A84E986E +:1058D0009EB5F71B8F7E47CDD76487F39CFB0515DC +:1058E000FD754B5C68FC7E763B79188DBA79A3F721 +:1058F00077792EC8990B47EF33D81F27509E1E7318 +:10590000B72D60C867FBED417B4CC627B39FA91D2F +:1059100002ED6F5582BD128CE70B0E527BC4A7DBE4 +:10592000EDED5BF11F28972A09954B814A7BBDD38A +:105930003EF977CED7A0A9646A3F134A23C097C126 +:10594000212A17172A6FA72DFC24D6BD290A7437E0 +:10595000697CBCB8C0430A7AD1FE67FC29F1B280E9 +:10596000E3BD3E298E71824DE002B4D758C755E998 +:10597000B84E79325ADEB6BDB987DAF305318C7389 +:105980006CCF3D415E21E72F77772A26D5E7BDC151 +:105990002DDE329B3D01E5B1F5B9264F604F9CAF3E +:1059A000FCCDCC1FB1CFDF1319777E1DE7DFC6E337 +:1059B0002CA3E4B016A47A6C328F43D5C84CCF82A6 +:1059C000BFD849989D9EF05AFDC5E69183E81F9681 +:1059D0004CFE45D1219827877453FF10C8B8F6CCE8 +:1059E000DC73A77B8F8BC5434982FBA97CFECC7CF3 +:1059F0003C2ED320337A0378F6AF817F3EB8202D3A +:105A0000E16460EEBADC005F6993BE85FAAB93593E +:105A1000DCEFA3FAAB197AD105BD9836FDDCAB7F7C +:105A20003CFA79959CD193ABE431F464EFC7A49F21 +:105A3000D7F17D8679D7C9F3CEAE9FBFBE324CE594 +:105A400044E88444FD61B3DE90DC487F53490C6335 +:105A5000DAE0F7DD8AF0BB9BCC652896424ADB276B +:105A6000D08E0B215E6BC9FF0F7EDF0EC493737C5B +:105A7000A7DF2787BE46F592EF3CFDBEC824F0F7AE +:105A8000624876D7D4FFD4E2EF7D4B8ED5337F8F3B +:105A900050FF6E8F9CDC82FE5C648AB11FDB9777BF +:105AA0005F5B8F718FC83456FF6585D5FF1814353D +:105AB0008D1B7ADB0C94FBFDABBF5049E3EE51929A +:105AC000962CFE9AA7393984FC037EDBB7717D01E1 +:105AD000ADEF20B29E1A8D49D87EA91CA4FAE7BD6D +:105AE0006292F248E3E3F16E1E1FC7B82F9E3BDCC3 +:105AF000D3A1D1726F47943E3D8BD9B9C6CE0E83E8 +:105B0000961F268941A4174F318B03F7F373862E16 +:105B100095B4E2F328F7177585F147F6C9E2D24F3D +:105B2000BFF8EDFE350857D01F43D48C07575F47A9 +:105B30006505C2D3DF11ABA0717C6948C7F8D0B34B +:105B40005DAF767A313E240F44B1BCB5FB8DCE06F5 +:105B5000C063D0C5E27EB23EA742B1E8AB7FE3FCB2 +:105B6000A2556EA5F6A96640FD5CEC4FDAC6F26B55 +:105B70007FCEF91ADAD3F35A4D63ED777039EC6CB6 +:105B80007F9CB7DF7EF059A203D30493A684788963 +:105B9000B6CFA7FDB61F7C8BE8B3314E9B3614E021 +:105BA000C3BEA524B617D69DDB5E45E1DC7EF07949 +:105BB0005206FDD21CCED0BA3EBA7F45EDB5B4FF39 +:105BC0003D3E726582C78FD9F98DBE773B95B9FA94 +:105BD00095B8BF6E6D7A1996DFE6FD7D712069B0CC +:105BE0003FC00B75C68BDEC67D53CA4DBA2E112F32 +:105BF000BA5B62E39A37821D01FF9EAC070D340E3B +:105C0000269717D463FC7772E54C7ACE3AB931B84F +:105C10009ABED70BD6B267E5E7F1BDB0FFC24A29FD +:105C20009D7FB27ED10D58DF3D337E184DA06C1C98 +:105C30002F4DE37844D7A9FD1AE2326B576D590E08 +:105C400099407E500D25E41BE53F3FDA3C96729E5D +:105C5000A33CD9D1BECC513FD3515F632BB7733C2A +:105C600093852AC507492B14DEBB783C90B4B95DF7 +:105C700088D7908F950F86EFF7BE52C59EAF5AD644 +:105C80007127AE6B02F955CAF97CB266591FFEE561 +:105C9000F567CB65146F51B413AD72C1802EBB167E +:105CA00065E48269F59F2D7261A692FFD1E582902D +:105CB00007BD281FC6D0530F93E47C05E3F0954C35 +:105CC0003E64E541AC15E55F8B32A75E5944E501C2 +:105CD0008D671132678B81E7252E565EAC4CAB3752 +:105CE000AB501E5C509846BB88F397E0077C96C289 +:105CF000536D9F4BE5B59837143D624A115C8F5642 +:105D0000832811EF55E0376C27E26567DDB719F797 +:105D1000B17D8327EE9B900767DBB75D801730D698 +:105D200033E59C4ABFA1CFA1E72BD42ECAA92AA84C +:105D3000D72DE711D72090B00F390B5D593AA47FCA +:105D4000C3BE86C6DC5F629465F717F09383F829BB +:105D5000187A9ECA17273C6AFB0C2A4714C0133EC8 +:105D600043515267042DF222A2ED41BFAFA0D95892 +:105D7000F41B3C978B4CA576E626859FCBA5ED7250 +:105D8000428C0BF26213D28F474B19CCC463F19053 +:105D900082211F0D3187817E7C306E78E11049C2EF +:105DA000FB6074889E5BA91A58623AC2339FC22373 +:105DB000D6A57279E7F2B2F816D06D928CADCF3AD3 +:105DC0009531F49953CF08387FA830B9279E4BE519 +:105DD0002A8AAFB3D1B5C0ABBF928DEF6CB795EB4C +:105DE0009D7BB93EEBED58C8CA4F7D83D2E5D7B94C +:105DF0003EF315F711C4B74F8995A23E32BB97D732 +:105E00003700DDDFEB63FD447B31EEDF71BCFB8AE5 +:105E1000D93E39E77D88AF6312A72767FDA3BC5E33 +:105E20006954D9F940632F93E7C5EA2BF4DC4007A6 +:105E30003D877279C41E1783FD7C14F7D34DDA8633 +:105E40001E2ECDCA7FB1BE7B9F7A8B94CEC67D6D50 +:105E5000A3E798837C9EEC3A78FDC23459CDDBD51C +:105E6000017C07F8FE0A7AF670BD7536BAFEB1A25B +:105E7000D9E499A8FFD065FCB342FD5493E2776B57 +:105E80006243E2F3484FDE9D745D8A376C06D07939 +:105E90003D366A7D87916E607D442A45BA11714B0B +:105EA00073BCF38EFFADD0F30E76CE7172153BF757 +:105EB00018ED4F30BBB7D761F79EAF5F71AE76EF8D +:105EC000F9FA0D13D8BDBF55CEC1EEED5E7DDF9062 +:105ED000413E82DD7BA1F1AE0BED5E926276EF0575 +:105EE000C67E2C0723F7D6E3F95D64AE90FB8FD412 +:105EF000A3DC8F2C205435FF5FE5DBD4CEFDAA6AEE +:105F00009C46F832F8AE74317D4B52DEE596F8F1DE +:105F1000F6CA8FDDCF0FB927F0F3B7E37E7C94F993 +:105F2000CFDDCF2F71B373032A0F552EBABB73AFDA +:105F30003FDBB9C11556B8D52893AB4A53024FF889 +:105F400047F187136E77218B8B77E75EAED17E0E9C +:105F5000FEBAD8CDF9D6111FFF4B8D3F46DCFDB4FC +:105F60006289BB9F46C590FFF1AF47F51874DECC40 +:105F70007CE7796E007287F6779E93FCB5E212ADEE +:105F8000EE4C7CA0D53D467CE0E38A4BDCEECEC4F3 +:105F9000436E779FC3B941B03496A07676918B203B +:105FA0007E645FF2B00CFCB22D7ABD6E9666F3C2D1 +:105FB000C4F8FFD33D8D8EDF1D555D1817ED3EBC37 +:105FC000B410EDB4ADEEB6388ED395EBD2F6968E16 +:105FD00086F79B6EA66FE5F61D150F4F10E79279B9 +:105FE0009E5FB7F614852B501DC9C5FC95AE835F27 +:105FF0003C2CA31D152D28457BE71FDD3CBF0A90D7 +:10600000F86B4BBC741BD20FC21F242953C2F97604 +:10601000D1F9CE06DF9D7CBFE4F63B2B1E9E20CE41 +:10602000FA97864FE0B19FF385DCBE93CE2FF02A1E +:10603000231FA07EA85286304FCA9DF6507B438E08 +:10604000B94C5A16F2A0CA45F32B810F7E84FB4E41 +:106050005EB3F3A9474B0C5179E6D6285CB2AF8DFD +:10606000CA4791FF134C7653BD14486EB5D9F94217 +:106070006F07DC3CCF2AA8D03C2A95D345D01D3BE6 +:1060800082F412AC9B5E86F422A90C8FBD06AC0B89 +:10609000FCDF5EBE8E3E7E2E29E621A4FCEB2D9811 +:1060A0005F6594D1BCB9B739FEBD2448F9DC8B7863 +:1060B000988B791DBB874A74F45F4291D7F14CBE2F +:1060C0008C9421DD6EAADBB40CED5BAF6E7AC6CA90 +:1060D000031EAD0F880FE197EB5CBE728CA75533A2 +:1060E0007D40A2B567C9D3E864FBC2F741E05FA970 +:1060F0005218FE319F1CE09579FEA0D8878CBD1EFA +:1061000065F8CDE4BD9FB0CB2F39C8CF95887267B5 +:106110008B645DFF2E4A0762FDEFB979FEF15F697E +:10612000FD693793CBE4E9195F6FC17343C315A3CE +:1061300067EBE540DF163F391064F97C828E7C27DF +:106140003AC95498C7AFFE75F72F033F780918BFB7 +:106150002B23E2CF46DB395719CF4F14FEB9FF0E80 +:1061600042E3B5A5552C7FB1AC6A0BCD67A4E777A8 +:106170008087923B147A5E0AF574DDA27F69AF6A6C +:106180003BCF9BB4CE5E2E214C2F7E829FBBD1F79E +:10619000304F09CFF32B2196F6A8B7E4961CAA2717 +:1061A0001DF2583C9DF9EA0B557BBEBAE83F1E9E96 +:1061B000449EFA2E627C4A9D97A5DBAE3296073547 +:1061C0001AAF4C2E14E8A681FB528879B3180F58E9 +:1061D000CCF266F34892C607C84276FE896E8C35CB +:1061E000CFFAB32AD3535EF2079A6FA992B449E566 +:1061F00091633FC43EF456B23809EE5F11D4E7F222 +:10620000DDEBC5BF601E7F11C853C0532EC73F6969 +:10621000E0F893888474195EACDACE53558EFF3C57 +:106220001EA7F03BF0ADF27D501DEFDBB87C3B1BB1 +:106230003E9DFB7193A0FF100959F7836863E789BE +:1062400089FDC8F84DE7395FBB982F08F34DFB086F +:10625000F339F6E152BE0F5B75B10FA411F7818AD5 +:1062600072E443928CA3FECBD3193F4CE279ABA4EA +:1062700091E1DD0BFFE13E1436DBF701CD6DB4D3C8 +:10628000BC0E3E180FFF32A7FF25AA712FA5D3D74A +:106290007C34BEE4CDD0CB93075580737B318961CC +:1062A0001E2CC1BF30BEF7610EA5931D3192DA02DC +:1062B000E34C2EBB87C541D105B3F4DFAEAF9830B8 +:1062C0000EDAD781171D08B9ABC34B862E18BF5DF8 +:1062D000484D26315EAC195A1DC69B27C5F51A9A42 +:1062E00067418E188827D5D0A9DEFBB92ACE8389CD +:1062F000EDDC5C8D33FDEE6D644FD55057233EBD14 +:106300008D0AD52F6A55FD5B0ABED79DF824E77527 +:10631000FE4EDBC8E3B73BD7E7DD8097572D7950BA +:1063200077A24F0AFBF0818E172E00EE5AF03A71D9 +:106330003DB55A015D476D2C489FE9BA382B27B609 +:1063400063FD88AA33B9D0C0E46958774DB83EFAE6 +:1063500047F86B6559BC08389CF4F3D7C2CF5D8809 +:106360009F0AEBF87D5EB49BF28EC94073E3F7CBD6 +:106370003BA590213CBFF00E0D21DD405B6A977B71 +:106380001783DC42BF54497DE37AB4A3A25AB569AE +:1063900059CF9F55666FAB98F78E7CAFE8D2CA9005 +:1063A000B55EA578063E3AADD278DDA3DE341D6F2A +:1063B00080DAC9C12A1741FB74C7E97FF652BBAD29 +:1063C0005565E304BF66931F0FA86E5B7E71467E22 +:1063D0004449DA65F1A385FC2F5293418F25BF51C3 +:1063E0008DB2FC46112F147168271EB676B0782145 +:1063F000F05F45394C7980C7C39FE0E7645AD46F9A +:10640000201D69514D473AD2A27A392BC7CAB1FC37 +:10641000033C4783F67B3B74DAFE9E8E4A5ADED5F8 +:1064200011E3F75316F2F337839FBBC5E933D591D8 +:10643000A0CF6F7534D3E7831D49FABCBFA395B0D5 +:1064400073B1365A7EB4A39D3EBFDB61D2F7FB3AEF +:106450007AE9F3918E3E765ED7D14F9F831D29FA5C +:106460007CAC631FAD1FE818E0F0C7E312C2CBE3BA +:1064700087B906ACD31AA75EE7A371738DD3ED334A +:106480002F7AE420ECD36E2EE7761B13CBAD456953 +:106490007B7ED182E3F6FCA20B0FE4D9CAD37A2724 +:1064A000DBED977899AD3E67E14C5B7D2856632B19 +:1064B000072A2FB2B5F7E9F5B672A9F937B6F69FF4 +:1064C000685F61B78FDAAEB2B59FD2BAC6565F9435 +:1064D000BCC9563F7B6093AD3C6BDF976CEDB7D684 +:1064E000AC6D23D584B4787ED0E52D01BA0B24752C +:1064F0003422A20FFC43179E5B6A51901EE0AFE46A +:10650000464939E60FB90D66F7B81B4C6ADF43FD03 +:106510004C7C0FF555D80EEA5F413F00EADFE5F508 +:10652000D3793DCD3F52B03FFA090DEC9C4FC543A6 +:1065300056E0D3EE30E81FF44B4F303F2213AF3814 +:106540003D2A8EBAD1837190283B2F15FE1BC0DDEA +:106550009618C30EB8D3C3F58857A1E308FB287378 +:106560008EA6B373451253A8FF91CBF343447F6FBC +:1065700003CB0B03AEFA0FCC5FC2EB3067A0CD8C20 +:10658000142B0B3C5ED06F2F57F4D9CBF38ED8CBA6 +:10659000730FDBCB2A3F1F76C2FF3D0EFFF68E81C5 +:1065A00039AF55B0B80D9E6FC06ED0B88D1FF6478D +:1065B000A3C952ECFE8597E3C90FFC8EE73CA49675 +:1065C000DD07D332EFF5E9D8DE6BC0BAE6603956A5 +:1065D0004EDB713BC87762D96189AE97E54B062ADD +:1065E000615E0BBD78CBED70072AED65A7BDF58820 +:1065F000E7A3D9DBE3D963A3E4E9E933345F4CDCF7 +:106600009FB88F9F17146DEE3B88F1F4A2751ABDE9 +:1066100017E79EED4AA07FBEB5CA15DF8376359495 +:10662000F159B421D5897651D181D2C7D00EF9D490 +:10663000A9A13AA48BA236AD1AE317D3BD3ABFFF86 +:10664000992CC2F858D181DD523D8C33CDCBE20577 +:10665000458DEC3CBCEB71765EF3CC8B57686918CA +:10666000F7BD4839953BEF3CE131308EF14E1EBB12 +:106670001FF6CE130B7E827CF0BB8EC379D673CB14 +:10668000777EF0F3F96E18FF9DC77E3E5FA1F98A11 +:1066900029AAA744FDCD6786E7237D9BF5A412F3C5 +:1066A0009A6FD55482E3DEEA65FC43D6313ABEAF39 +:1066B00040DD8AE31714BA76E1B309832EF9D93C99 +:1066C00040C2E9BEE05FDDF49CBEEB593F1DA79DD3 +:1066D000C75F88C6CE953755E85D41286F2AD562D9 +:1066E0008069D2956B7AA662BCF8454FECEFA1BCED +:1066F000E9D3E0A2637D9146EF4B754BDA122C9BF8 +:1067000025CCAF39594A2A4B411E284B0C3904F38A +:106710008DCC607905C27F0DA7470C24BB1D4AAA0A +:106720000BEFC77419848EB34319781ACB3B1A58F0 +:10673000F97657DBEE166A5727FBF0DECAC9F9AEC9 +:106740006AB40FAFF395897BB09EA9F0FEF6050AF7 +:106750007D2FCE119E7ED143D7B3E96732F55343E7 +:106760006E62066A28BD5C628D3304F0460A383BCF +:106770005FEBA8A470794A5DA61BE0CE8F30BF36D0 +:106780003FCAEEE7879AC04EB1CA71F8FF552FDFB6 +:106790001F4BDCEC00D7C3431D5E3ADEFD1D1A7DA6 +:1067A000FEB8234ADFDFD3A1D3E7931DB109E398F5 +:1067B000E33D7738ECA5FB66C32A00DEFBF8F9F46D +:1067C000FB552EB3FCC2F1FB3FD87178524345967E +:1067D0000E4ADAD8F9EBB8ED3BA5EB5600BD793699 +:1067E0002A89BDD42F481659F3E77BDCC92214AAA5 +:1067F000EF798E2F417D017C47F34B0CB2BB4EC32A +:10680000F3D6752486B82A8AF64978CE02F83F7303 +:1068100046D83FC0983F2AFEC3D339483755640055 +:10682000C152AB0CBD13FB1D9916C338C8A292F21E +:106830004EE463325BD4C7E41FA09F3078818E475B +:10684000F5073DC9B95EA0EF0392EB3AE40F9CA7B0 +:106850001E9E5F7BEA8F2A9E47F7BCAA7A31DE56DE +:10686000F4E42B2ACEDFE34AAB280C9BBC331BF0AD +:10687000FCBF474DCEC07C80A6DEFDDD58BE2F9C00 +:10688000FC0E1396331B9E89029F78CC07B0FE73D3 +:106890005E62C617C33C6EF36A5C6F0399DEED9DC2 +:1068A0004AEBA760BED4A5305E6F31D4A32D4DCF87 +:1068B00095CABB0D2CE7B27293775AB709FD2FE347 +:1068C00072830493A5E8DF65CA1A94C7383FCFD412 +:1068D0002BAC9E78D953ACEFE6A7FFF89329809FA5 +:1068E0005B9E940630EE54F4E46E8A6794532897C6 +:1068F0000E741CD6BAC57E5BFC8145989781784E94 +:1069000049A932899AA0F43B034A5EBF84FBD1FABD +:1069100079A2A3DC7CDCC7FCFA456918C722D7172B +:1069200029EC5EBBF3DE3ABD828EFBB5939D2B1442 +:10693000AD4BAB18873FB0D00CCC81F7EB5797D756 +:1069400074C2BECEE0E3B6035B36A03E8BF8359A48 +:106950000FCEF322DE167E0CCF8BD8C02FACB8B78B +:1069600010BACF3DBE81028CAB8C7CDF9D678D5B06 +:10697000F7E40E144863BCEF76C37BA433788F70C2 +:106980001DD0CCDC3C18E79603BBA79A80C75B48B8 +:10699000DFB55F42B87F2A13946F6F1D5C94F34993 +:1069A00028DF0C659F8EE7DE472E453C3F34583A82 +:1069B00080F270A797E9E55B0681AE82C8D740F305 +:1069C00020720E187DB314A087677C2F37F8C09E05 +:1069D000FA5199A1B98006D2BEB7BABD174359D5AD +:1069E00066A0BD95F68D507A5BFF6917BF4C39F2F2 +:1069F0008C518E70105ADEE95DDC8DF927B5CD5EC5 +:106A00006A4F15B81271CCA327475D54BEA2E85B4C +:106A10000CF89773BBE939DEBFF7B868BE1A1E637E +:106A2000DE01EF6B15725881E77DE050E37740CCD3 +:106A3000AD0AED07EF7BDD79B84FB1A7515E935EEC +:106A400042E5F9BC273D347FAAB6CDB891C689B4DA +:106A5000C5D41E9A4A327F68FEEC27B8DC5CA09150 +:106A60003AF4272FF2B1BCAADAE6CBD763BF69AB01 +:106A70009BFECD80FA8552CAA4E74BCF337DD0531D +:106A8000F0DD012F946B73140D6315833E63968EB6 +:106A9000FBF4737F35EED3606E4CA3FB1652F2F617 +:106AA00062FC3F0DFE3DE8A5278E6FF8DDC5787EC0 +:106AB000900F8A18E31CD0AE06F07D31CA11C49B3A +:106AC000B9B9C14039A82637229FBED5BBB91BF33F +:106AD000EF00EFD3BC80F737BD50867D18EC34A6AD +:106AE0006896F2823F83DD40F97433E55325F79EC3 +:106AF000F5C8F750FF0CCA931FE511BE2FACBEB608 +:106B00004C9441B42D04383A059F13D30B7AA1D687 +:106B1000D2BE01F8DC5DCFEA0FC17C268DA301ADAA +:106B2000E7E13AC1FEAD457DA8A4709DB8679877AE +:106B30007EA9DCF299D9F0DE53C1FC167F2E93CFEB +:106B4000FE5C9DC6EF067DEC9C7FE4B9600AF1E532 +:106B5000CF6DEBF3607D4939F5470329360E3E7161 +:106B6000FF033C5F5FD296537BD55769BF1FEB7124 +:106B7000DC8755B8BDA738DE7FABD4385802FDDBC3 +:106B8000D3CBA93C497B79FCAC84C5AB6F4F98CB88 +:106B9000D05F9D3932508FE645D5A9234FE1730E62 +:106BA00079B71EC568CC9BFB343E7FE765445BA389 +:106BB000552FC1A57D7271AA8B1EDBEBE92294676C +:106BC000F36428C33C398B07649CA7F09AF2F33C2A +:106BD000571FA279063B83AE788A9E3B3EA6ADB690 +:106BE000F4FF079FC82762F2058F7B908EDB495F19 +:106BF0001DDEC785BD67F751B8BC71734741212CB5 +:106C00009EA06831CD04795D17AAA5765E998FF1B3 +:106C1000BF7C70D1656897A82827A0FD833E16DF4A +:106C20001D2922037B75F4530C42F51ECF2BDCCCBF +:106C3000E715F2622BF8EBC60520673F37BD5EE42F +:106C40002BD23CF3A161E90C28CE7B303F91C629C1 +:106C50004654B4271FFF5C413DDAEF3F8CBBD05D4B +:106C600002B964FC720AF2F71137955BF7E632F964 +:106C700028D6FD1D1F3B6F3BED65F2B6C70DF555E0 +:106C8000F81D0F10DD30BF7A2A405273C14FE2F277 +:106C9000D8935C47E9CC03BA4FA774610A3F893C9B +:106CA0008EF19562174959FD965361DAFFB497E169 +:106CB000579CBF8E9717F0A4D807C7792B1E442383 +:106CC000DE3767F685C59F7F546FFC925039E176B9 +:106CD0008D753E399FAF4F3D255138C4FB8B5068B1 +:106CE000E37B2549EF97AAA7145A2FD62BDA65EB39 +:106CF000D93A7EAFB1FB316A94F1AB7A40A6F61F68 +:106D0000892A23D6FB2701B4CFA765F94CDC8B1960 +:106D1000BD8ED811EEAF51393B9A0F4D6A076D0EFB +:106D20001985A88F3CBABDDE99D79281FBD424DBAC +:106D30003A047F65D75340EB519FA03CB84521DF13 +:106D400040BFEE669E6F70B30CF404F0EFF8C340E2 +:106D500002E7FFBDF0279E64DFB1B979700FCF7BEA +:106D6000D06D71AC5B0E6CA471A93F68AD456847EE +:106D70003471FFA8C03524B37B434764E4E79E70B9 +:106D8000A252D298BC54A228FF85BC9CD98DFAF29D +:106D90003E352B3FD169BDCFCFCA5DBE99DDDDA8A1 +:106DA000DF73993C6DEA7DB2DB2C467D2FCA3FA490 +:106DB00076D47D6AEC698CFB994F7874D4E7D0DF88 +:106DC00040BE33AFAAA4FE4B4F19998C76DF330532 +:106DD000EC7B1F3D4F78F6A22B0DF6E2655E8B5FD4 +:106DE000F54EFEAFA692E098E399B6F1A69EDF7845 +:106DF00030FFA02B275BFF4CC145747CE8A763BF25 +:106E000077F2FD4338FE3B577A691CF841B79D6F16 +:106E1000C5F301CE975B3B34CAAF99FD473EC5F33E +:106E20006DD2C6F8B398F1A7279A67E3CF2CBD4C73 +:106E30002129CBF97519D7DB597A994AEB4F635F52 +:106E4000CC6BEBD0CF71BEB271E69B7596F9E6D8EC +:106E5000E643099BB9E736415CD979BFC629EFC43F +:106E600053C8BB021F1B3F4892077C50BE293D7090 +:106E7000294DCF93B4FC4E68B286DBD78B1EEDEC68 +:106E800042F53DE44EFC07EA7FCC5B413AFFB23B62 +:106E90007101F613E55B5F0B9AB8AFB7A07D02F402 +:106EA000B0E3CD51F72B87A6E8593E1943AE31FC2C +:106EB000717F1DE537961F3AE276754EE08739E51A +:106EC000D64EAF53BE31F9F5979B4FB6EDDFE8F9DB +:106ED000545A9FD54F4942C6D0739B8B8C4262E770 +:106EE0007703F91DD3F1B93D65A27CB857D49B5205 +:106EF0004F4331DAC9D97AB4B70A3CD9FE786FFC6E +:106F00005EBF681FEC417B6B54FB80A37D99685F7B +:106F100048DB3BE111F207CB68CF297FF664EC3DFB +:106F2000846FB7CB315E9E18AF8C8E27ECF8F6DEFF +:106F3000D9874C05E9B2AF0EF5F208F85118F77889 +:106F40004889F963167BA49DD3A77ACA67C37316D1 +:106F5000BF41FA9E44EDFBB9F9C5658513E57FBFD6 +:106F6000C1F5BA28DF90DC7C29B66FE7FAA1153CA1 +:106F7000011CBFF541D9C6B7FF0DEF7F1578678CAF +:106F8000639F5431FEFE2F076FD138F016FFA7C262 +:106F9000BB546B3BE8067897EA12BD37B814EA7C1D +:106FA000C0A3CBF08C1D9E4BC1900D62FC8FC755CA +:106FB000B18CF18B651FBE7FEC1290DFFB78DEFE9B +:106FC00005DFDC7CF4D330CE707CEE5C7EFF7FF698 +:106FD0004AB0FB1FF7B373C10BB87DEB84FB713F65 +:106FE000C3C7D1F8929B51BE7E9008D033F963AEEF +:106FF000D8CF6A31EEB042A6F69FB3DFD10E766EDF +:107000007E2F3A7CD0FF5842A6F2FA8378450AFBDD +:107010008F872712976DDF17400FD37A2E4B5E2B89 +:107020007459CF738F12FDAE5AB4671AC786E3B78F +:1070300008C70538FFCA09E3F36F7278DFC6737EAD +:1070400078B6EE93699CF4A6047B3AE775F6BFC95F +:107050009D2A9828BF73FD3ED9763E753678B6F8DE +:10706000591CF8C694BDDFCD0301C7F938DBF7081A +:107070008F73012666B2EF1AE86EB457579C60DF33 +:10708000197C0E5F15D17B84FFE487FD5E11AF662E +:10709000DF9313DFB553405FC020EB76CDA0DF73E5 +:1070A000234D2B69FB437E69ECEF67F2738A7DFC0D +:1070B000FB70852DA6DBFA1DB66040F8436D2508F0 +:1070C000C7A06ACCFA3E8C7FF4731E1A2FF7AC6C03 +:1070D000DC1102FA397665AE64BD8F98E6F436BFEE +:1070E000857DBF6DF078D2EDB2F0E79F793DF4BFBA +:1070F000263D06FE4EF0FACB93123F07374AACDF2F +:107100006B5403F67A67FF77FC61BAAE63E3DC3B4E +:107110007C93E3A3B979E2FEA46912FFCE9A31DD34 +:10712000FA9D3527FEBEE84FBEEB07787E29B5BD38 +:10713000781BF2539D97D23151F43908B7C003F050 +:107140007D2F7EBA52ECD36553AAE83E0978C47C01 +:1071500018FAC27849ADC1E26879FCFC63C14E5FA0 +:10716000AA93FA71FC3B9B0AC015A2F34B81FCF178 +:10717000E717E3461432A4C2B8EB5CA936B40B9D02 +:10718000EB10ED86FFB8E43308DFE05197B6A57445 +:10719000F4FA3374C3E5D2F47E3BDD9472BA89F01D +:1071A0007B6144692B69B6ECDF9400FB9EEBF9D25E +:1071B000D311B483A0DFF4AFB5B97518F70A85DF32 +:1071C0005783F1ADF4F12CC76724C0DA4764D33F8D +:1071D00013EDCC5F32F9B26FEF974AC68ADF1CE538 +:1071E000F941FFEAAFB49D6FAD8C571F8AD422BD21 +:1071F000ED8E615C63F0E84525C877972B2CFE3255 +:10720000A89A37E1FE1CBDD6934BE366E7B88EC162 +:10721000E30937EA8FAA2646877B5C89A5F9280708 +:107220001F2317239CAF20AA2DF9779B38DDEF533E +:10723000935DBE18E8871D7FD7D3EBA5FC4BEDBD52 +:107240001B763CD4837159D23D89F2FDF4A6773781 +:10725000E315D04195C5D39FBB3344CFB1810E6DAB +:10726000FA26D274B203E3A36B5DFAF5CC4F6672D3 +:10727000E76192FC4C605E56FE8C9237DD2BC57741 +:1072800032A78FF53D55F15D404127FB522B72D659 +:107290005AE8A42BA0DAF0FC0B2EE787B9FC16EF16 +:1072A0009B8EB37C1858078DFFFCEAE2923DB88EA6 +:1072B00048EBC90E6D0E8EC3E22C1FA4CA9EA01F00 +:1072C000A4E4EB17EB84754DFF2EB4BFA2D92E8733 +:1072D000051FAD6A0CD8DFF3FE95B2B19EFA279F69 +:1072E000617EB7182F12077CCDC17525B6844AB3CD +:1072F0007816F85CE3013C4E23EC821EC05B797784 +:1073000011BDFF94DF95BE0DFDC13F041339791601 +:10731000FAFB2ADFD72C1D323D86ED501FAD50748D +:10732000F7587A69655C1E13EEB5E1641B19C34F0B +:10733000CDF0B9430F6AAE3E37B66F266DF4791DB6 +:10734000312EC6E709BE1F19B94C86420B50BEC488 +:10735000651A8F3CD1B632670DACA3C53D10AA812A +:10736000677F80F1DD0B9B651AE714FAD839DF35AA +:107370001B64F30AA0B79614D3CB2D1B581CEB9AB1 +:1073800036FB7A86813C16E6219EDB8E7E1AE7FD6F +:10739000AACCBF0FC9EC85975379D5988745BF27ED +:1073A000837CB322C0EF4111FABDD024FB27793E84 +:1073B000BEF610C681BF1F607EFE707CEDA5E87A28 +:1073C000DFD04F7E9CD6D12E9A588F27EF906DFA42 +:1073D0007AFAD7ECDF9F9C8F7A04F94E192AB9D636 +:1073E000222703E100C5C7E54DACDE39AE3F1CA442 +:1073F000F5C31FCAAD63D96D7A98E17355FFD8FD07 +:10740000F57088D53F38B61EBB3114E07A62A0040F +:10741000E5F7AAE6B1C7D91E0CD376276E7EE31A2C +:107420008C7F1D73D9EF897E25C8E0B82EC8F86C13 +:1074300078EF97B616E17EDC226998CFBD66923E62 +:107440001DE9E5EA0DD5340EDF1C64F4BCD19F18AC +:1074500046F971C383ABB7E2F941E111978676EB48 +:107460003EC73D54F17CC1A137405FBD86FA2A82F8 +:10747000DFDBA6DF394FC5AE644B3673F270DF99A0 +:10748000DC35F7FA35DCF7E1466E9F9AB36DF6E925 +:107490001B0EFE72EEE70DFD0E7BCC41AF2F931855 +:1074A000B59BCDC68046EF239D7EFF670BD00EBFF8 +:1074B0007E52CC9A0728ECD46195D9D5C3BF9846A3 +:1074C000F313C6A3AB71EDD54699E68FFEA5EDD5B6 +:1074D000E14646E72FDF3137B4668C7EB9C1D273FF +:1074E000B2575FBE63627E7999E3E175BE2E414F6C +:1074F000682FAFB1ECFBE4A07D5F9AD7D9E7BDBCA4 +:10750000C53EAFE09363892E3FDA1B84C4A8FD23F8 +:10751000EC57D23D77CCEF8267E55F27F363383CC9 +:10752000C8F76BAA98B8403CAF44D901FB398BD35C +:10753000FBD1F8DC10D2B3733DC3AE11BAFFE6B78E +:10754000D8B96545FFEAA78AF4D1F4B7C0B1BE8FB8 +:107550004A7F42AE3BC7C9D05BE347F48B3E663AF5 +:107560001B7F1F52E74467420E5CAD0CB8175531C4 +:10757000F972233C8F6042553E3E75FABC9A9F8358 +:10758000C1E6CDC7FBAFC37BFDF43EBDB93D94AAB8 +:1075900000923EB662D6742B3CB7F17DB9BA7FF942 +:1075A00021CC0938E64AECA276D717D8F9FA8BC76E +:1075B0001FEBC1F26F405E493AD2DB5A5AFEE0B887 +:1075C0004E7FAF625390F9C3AB9A56BBADE33AE935 +:1075D0007795837E4F707833F69732528B7259AC21 +:1075E00013E56411CCB36AC3EE4538CF0DFD07DD5A +:1075F00033E0FD3AFC2818CCF7F920EBDFC2ED4E62 +:10760000E285F502FDBF80748BEBFDA2C4F49F926E +:10761000765BEF4B5EDBF6C6D2B1E4FA439CCE77E5 +:1076200071B9BED19F2C0EE667E56B6153E97CB45E +:107630006B8A91B72C70977038544FEC1166E7B095 +:107640007564F0780BC3E30BC757F4E4D78E8FC78C +:1076500007C6E18FB3E1F1D85E3FF59FCC4FB1FD96 +:10766000CDDAB725F49E8080B318E1E4F62DDA89EF +:10767000820E5ED8F8C63549E68F75337F6CA41646 +:10768000F1F5C39038872D7459EF51FC3A34F677F1 +:107690005C7FC5F9EF6CFC73D54DCF527FE1573756 +:1076A000FD5B099EFB8A7EE3F1C7553C8EB36F9369 +:1076B000A775EF18F39EE4781B252788DDEEB9A1A6 +:1076C00069F5D610A0604B20FC295CEFB8F65C137E +:1076D000F38BB2F65C2A84790C47397DFC0AEDB94C +:1076E000AA09ECB956B0E7E658ECB95699DE7770BE +:1076F000DA73CF91C467E7D566E33CCFAF63F1A8F7 +:10770000971B67B9505E3ED7742FD54BBFE5EB1B77 +:10771000E672FDB926BBDE7825688F678C92A78E4E +:107720003CE9F1F4CF6FCF53FF80BD5F8272F0B9B7 +:107730003D2DD7DC86F4B7C74FEFB339F7E7D990C3 +:10774000CCED243FF557841C1A5463EF0C46904E41 +:107750008B625BF4D1F439DCC8F4DABE158156B41F +:10776000E7F6F1FEAFD657EE45FCA0FF84F0A74345 +:10777000DCBF15FE35D75F57531198DD27A1AFD475 +:1077800010931F37F4BFE2D6A1FFB5C26FC63F000A +:107790008FB67D0ACDB37BC1C5E5C823219A1F25CD +:1077A000E613EBD24276BC3BE5F7D9F4D8F3299641 +:1077B000FF20E6BDFEC15216A7E2E596CDAC2CF443 +:1077C000DABE948BE9D3F61CBA7EA097D98F43F921 +:1077D000F5F659346FF69CF55CCAF5B1E839C4CFBB +:1077E000447AEEB3E81CE69F5DCFBD4E489CEEC7E1 +:1077F000E9B5BB16C1FA5EFAD2247ACFE8F57E4627 +:10780000AF9FE2787F494DCFB6C2F73AC7D309BEE2 +:10781000DED733F84D86ADDF8198C7E5DA4B9C0F94 +:107820005E6AB7F3C16742763EB8A1DF0EEF356DF1 +:1078300076789B43EC5CF2A5F62E3FCA9563826E88 +:10784000AE97A9FE399658129A17A1FE78CCBA4F76 +:10785000CD0EFA391BBF5D25817D8FFEF71E3FB52A +:10786000BB33F1D137D93E7EE065F45E16768DA943 +:107870004732F2F94DFBBEA33D61C5E3939C0F4532 +:10788000F9EA56875F3D62EF3FEC627C6C6E0F5009 +:10789000FB4F53199C1AF82126A3E7F9A80F33F3DD +:1078A0003BFA5FA5A46CF377723A196FFEB3D95314 +:1078B000FFEDCF8CEDCF7C2FF49FEBCF0C86CE4F1E +:1078C0009F3CCEED41A75F93D11BDCBE11F6CC9A55 +:1078D0001CFDF54198E2389FE7FAFEE5D4FE1C76E0 +:1078E000257A308FDD3CEAA279AAC38D6BBBB0FC50 +:1078F000417FA9EDF7D58A1DFA4EE89FB3E94F27DE +:10790000FF3CB76A5B0DCEFBDCAA2B6CF6EFE5A75C +:10791000A69021CB79A6883764F8D567DFF7912048 +:107920008BFF8D707B32D3EFD4543A4EC62EEE5F70 +:107930004DE30D2D4DBB174996F53C19627EC03FB6 +:1079400085D83A3276B1C2ECE2F1E26D6F3BE4D019 +:10795000737C7F45BC6D95921833DE767993EC90FD +:107960004FCC4E73CA23D1FE74C82E97C43C4E7CB4 +:107970009EEB7C25412677457C8FBC6DB753C7A312 +:10798000DFCCBC8EF6CE79FFC4F138DEFC07319E29 +:107990003E6FFC78550D8F57CDE7F1AAE1CF7DF210 +:1079A0006718A73BB6E2E9C548872FDFF1FE73579A +:1079B00044508F1F5A8CE0D7F0F8D5CB98D286F47C +:1079C0009E94A85D7845FF6AEA97417B26978E4D85 +:1079D000A3F77063616E17AA319B1E74F2E7F73943 +:1079E0009C4F05787E3A19A0E757E78AAF5F8D83F1 +:1079F000AFF3D51BDF17F39F9E3B1BF5C1FE80C67F +:107A0000CFD386583C6E09FB4EF5A09AB88DE6CFD1 +:107A1000AE0A697B59FC92DA732B08A3A74145DFB4 +:107A20003113EA0713D30C13CAA57FB39CB65FD1F9 +:107A300014D030756939F65904FB551F3471BCDA1E +:107A4000E1C6EFE1F9C36F9A3D3ADE137A26B156EB +:107A5000C6F8DBB146895EAD5E7549E21DCCF75ACA +:107A6000754540C7387A5EBC94DA85DFC5F92C7954 +:107A70006FC732E535DB1AA07E66FEA00B49F09990 +:107A8000F09A6D5E18B7A73311C5BCE5B6F0826DEC +:107A900098B75C50601CB92406DE7D78D1329AD745 +:107AA0007CBFE87FD136CC53FE4757B214EF233C5E +:107AB0001FBE72995284F74B1BAA31FFFC855DDF14 +:107AC000A6FD2FBFFCE6CF3F0EF5A7C35F5D86394D +:107AD00038F35B44FFAE654BCA0959B95894B7797E +:107AE000B01C0924745735C8C1F0DC650ACE97670D +:107AF0006CC4FCF5829CB974BC8549C2F264CCBBF1 +:107B0000687F31DEBAF0DC6D980753D4BE84FC1A6E +:107B1000E4CCC234FBEEE82FEADA96607EFCDFDCD0 +:107B20007DF7B62A90550BE27501CCDB5E7EF7231C +:107B3000CB3CD5F4BCAA5A87E7CABBBF43C79FDF7B +:107B400062CEC47A957C7F5BBC1AE1E2E772C5B174 +:107B5000E9B6DFC3AB6471AA4C39CACA835BC6CE2F +:107B60000FFB750E931B83FEB1EBEF0FDBCF57734B +:107B70008E13E3D12A3CE725835ED0139779482DF5 +:107B8000C6CDBB30BE3CCF32AF97C125FA11F3B2A0 +:107B90003CA4EF461E33C77A3CC7E9E77C3C2DC6C0 +:107BA000F8385F6676F848B5F410D267BE2C5DB73A +:107BB0001CDE17F849723FD64F22B4DC4888B13F2B +:107BC000981DF7A77CD8A5D3120F23BD2E2D2CAA64 +:107BD000C6EFB9C378745D006FB7D7720E05702B0E +:107BE0000877BEBCA27A639505EE2A06F7601EC32D +:107BF000C7E09F589C6DF068D95EA4DF1561BBFE9D +:107C0000987FA4869EABE52F21F477E146EEF2D172 +:107C10007C76E24DC6ACF758BEC3F1B8C19187B3CC +:107C200041195291CF37F03C9CFCAEB1F741C413DF +:107C3000379CCA25E65CEB7BB69EEC38115A0FF0F8 +:107C4000B03CF971E0F9C70C3CF63C9BEC382CCF0A +:107C5000E6E3862793A7272EA4F27145DEB3C80773 +:107C60001E4F7E6E70E43B67E76579CEA59F107965 +:107C700079432AFB9E03836F547EDEFE3A9A8F93EC +:107C80003DEFE674A0B2F5E33E5BF30A7ECBE97606 +:107C9000A5A06F7ECEBE76323B671FFCD39259CB38 +:107CA000E978EC5C7250617ED77CC5A0E7DDF38F8C +:107CB000E469785F41D0A5A047414F83796D751481 +:107CC0005FCBA531BF47F5AED07F09761E53D89262 +:107CD00094AD79FE82EF9C7C4AC837F93DE0D8F438 +:107CE0006B502EA03F88F0C7801F6DE7EE0CEECBE7 +:107CF000D196CEA774C0F6AF88DDBB10F8194D0F32 +:107D000053CE420F5369FDFC234FA9B8CE0D1CCEB4 +:107D1000C2E343E159556C1DEBE1F97C0E3B27BAF8 +:107D20002ACCF458EDFF5A12F8248FEFE1A8F3851E +:107D30007C36DFFE977A90AF8519790DFA84EA31A7 +:107D400022F21687F0DB1DA2FD4FEF7E7B5977797B +:107D5000163F11340EF2B2F0AEE378BD9EAF1BF0C9 +:107D6000677AF36C72832CACC9CA372127C4786256 +:107D70009C8B72D8380B7278FC4CC83FAE6741DEE2 +:107D800099EC7E988FDADD7F79B9279D45EE2DE756 +:107D9000728FBD3F04E631B65B9B975C8DBF9772D7 +:107DA000F4F0920A8CC78ADF956892923D989FBD45 +:107DB000568DF5842CF47839FE8E44257E0DC6450B +:107DC000EFD7341D61BF3FB932E13BA7DF9710F316 +:107DD0008BDF99381A67BFA794818BE37FAD7F64EF +:107DE00033CB17B0F3A728AF9D0E704FB3D40799CC +:107DF000DE3BE0379A72E6611E0AFF3D84867CDB3B +:107E0000F9C686B0DD4F11E7D6B501E36AECE76C41 +:107E10003F5A0EB2F6F9FCF76DC1C39167C33EAE8F +:107E2000B98E108CAB140E10CE9F43AE0D54BF1103 +:107E30005382F5BF9453C2ECCB555069B9A73A2C85 +:107E4000258A69BE7DBE2786F10DD817BAFEA5F238 +:107E50004696D7378DE5F57D392797EBDB915A5C50 +:107E6000677E80D1E1211FF1FA60FC7F81A7B726F0 +:107E70002B97FECFD419F49EB390671939785A1E08 +:107E8000BAC4527F485A5E8C57CE0FE517D6744954 +:107E9000743C9A3F28DAC3B8348F70D987EFBF7D1E +:107EA000097EEFAC8C8D1781F95758F860419CAD75 +:107EB000FB4E4EFF77E6B0F3E1A50136DEA152207E +:107EC000139CA702D603FCF0137FB2AA8DC27517CC +:107ED000CB57F7B3EF0014F07D2BE0BF17F9238DDC +:107EE000F1D57BFCB95963E31784C7FE0EEFB3BC31 +:107EF0009EA64C40FB1D8D8F39F2D4DBF8C7BED84F +:107F0000F720B7D7B17B41CE71FE36879D5B801ECF +:107F1000A3EB1DAD5798FCF32FAAC72F45906E9E7B +:107F2000B7E26CA706D25EFADDAB598A8BC643B8BE +:107F30001E1276FF0703CBE977AD9FE478531DDF70 +:107F4000BFEFE6718FF0A900F55B7FC8E1522A5FB1 +:107F5000A3FBAC2C842125FCEE5CC2D42CFBECD61C +:107F6000ECDFF7089F0AD3FE1B4ECDB5D923A3E55E +:107F7000F57C5B7E7006CE135750389DEB73E26D37 +:107F800088C32BCA46A5D2402C70D511AD1BE7A9DA +:107F900023CE7C99C51ABD5F07F486799C20BF99D2 +:107FA0009E80277EAF00F529CA45E18F201F69E03A +:107FB0008FB4E6D41DCDC9B7E817DE4FF0F1E09FCE +:107FC000DE3743CC9ECB030D475A38FFB770792F6D +:107FD000E4B933CF680A97E782DFE3DEA72F7CCDD1 +:107FE000A2E75A73743ACE6149FCEE6F8CE689CDF4 +:107FF0005FCCE401894B04AF1F2F6820B6FC89DFFA +:10800000E730BBF9F7392C7F43F0CF8A167BBBF7FB +:10801000B01DD23DE7A3B3E9A58C5C2C607251F191 +:10802000B3EF1EECF9F3127A0F76E4676E9A074706 +:108030000E30BCD45DB9B90BBF43E51E90346B1E46 +:1080400059B07DFF85EB709D7CFD1B220CBE0D9110 +:1080500021B51C409ABC81C1F9FF00307EBD0200F1 +:10806000800000001F8B080000000000000BDD7D79 +:108070000B7854459670DD7EA5937492EE4E27E9F9 +:108080003CB94D000384A4134208CAA393100812FC +:10809000A4C3CB04419B871025848CA2C61DFF4935 +:1080A00043100151C3A00E3AE874105D66961D039B +:1080B000323351111B04455731E00B4774DB172253 +:1080C00022447456DC71C7FF9C5375D37D6F120335 +:1080D000CEECF7CDB7996F2CEADEAABAA74E9D7702 +:1080E0009DAACE68DF2F197219FB01FF2630965129 +:1080F000C73C01A89BAD46C6463196566360AC08A6 +:10810000CA46CF76E662CC82CF93188BB1322A1959 +:108110000B48E945D48F6D90A19D1BFA5BA09D3B58 +:10812000202D82711A24683286B175BAEA5CAB03DD +:10813000CAE458770B3CBBD2E6B35B61FCFA13C1CF +:10814000601C34197DA2D3E0837E37DA3C89561C4B +:10815000B703FE93CA98ACB7A6B16CC6624F70B8AD +:108160005AEDEC3AAF250C2F6377139C8C6D237876 +:1081700092F4EC30B3639D05197C4F9E9BB36D83E5 +:10818000146E9F6C67BE76E89F9CCC7CBB2DD47E22 +:108190001D2B84D66646F34C5E3D64DB0617CD8B03 +:1081A000C6ADC8F66EC7E71529430B5BE079F6C686 +:1081B000A06121F47B66ABAE3210018752165825C0 +:1081C0008203E6911B390F6DBB30FC7E8E47D1CE0A +:1081D00018A39E5FB8DD2A8227B692E3B7B4D631E2 +:1081E00017E757BFE68FB151F0C9B4F636293617F5 +:1081F000DBDD4BED14BC031CE3100E434C7C1E4B2B +:10820000C076A5F22A5CCF578D6E6CD2177CF54DE7 +:108210004FE52F4E8CA8AF3111FEDB4CACAE3D3795 +:1082200012AED5F4BDD9561D958FD8BC55F8BD8674 +:108230008E4D265CCF1BB67F68F2E5FEC8FC2F1280 +:108240003F12D025AE437D8D3980F32DADE574B955 +:108250006C8D291005EB52BF735750077576077365 +:108260000F86A2BE7DD78B69809FF47ACF283DD040 +:108270006532105927E2C710343128D3EA83121B24 +:1082800088F858504FF4ED8C75237D1F3231160D50 +:10829000F473A6D4E297F2A134FA7364787FC6151A +:1082A000E3F6C3FB17A399DF6C0FE3F7A55D930F0C +:1082B0004BF18CC5ED8E0A6279A3CDB702E7BF61A1 +:1082C000955C8AEBB3A18259916EE428EF1EA2C798 +:1082D0009438B75FBAF8798F16EBAD3C1F7D07E78E +:1082E00083366BBCE03F56E885B9ADB7C6513D1942 +:1082F00096A104E8F9452387D320E03C6FF5FC0202 +:10830000F98D2113C277335860BFC9D5F3BB1174FF +:10831000B386DA5F349CED2619E05A26E44769ED0E +:1083200076E9E38875DF6CD553BBB49D6D924CF450 +:10833000BB7D558583DAB328941B3B25EAB70CDE59 +:108340005F1F21379479F4223F1E46F82C273A0FFD +:1083500072F911247A53E055D65159AF27AC32D176 +:10836000E72413F347D3780BEB713DD6A5F1F11455 +:108370007ED6F2DF1382AED36AB64BBA5C9C672717 +:10838000CD73798D81D6E5C0D5D72EC671963B5277 +:108390000B900EEFFFD3519304CF9FC27E00CAF221 +:1083A00056C983F286B51E35CD1E81E8FAAD9E25ED +:1083B000333695F1BF07FF70D424C3F3A97B241A89 +:1083C0006FF99E5D86459630FDB94E1FB816E9736C +:1083D000797B148B96705D641A574B772017881F32 +:1083E00098DF1418EC22B9E6E772D0E79A111796D5 +:1083F0009BE7055CCCE22DD239500E8E284079F7F0 +:10840000A298A7327E458CFB8019E55EA1E46E61DF +:1084100008C73182F3658147183F487293B181DE06 +:1084200011E1F17BCAFBE18588DFAF845C84753B99 +:10843000DA9BDC57C6773D3A83C97111EB81788EA0 +:10844000A0A390D544DF0F590D349EA18CE3C960E1 +:10845000E2F337AC360790BF5EB25572FCD8CD84DC +:108460009F4362BD0F89F55EA75B9DD3C8F5CD879D +:1084700008CF81ABE319972F5C9EDCFF94C4EB7EA1 +:108480004B80C13FEB7DB3689D9923DAFD38EA0745 +:10849000DF41D3ECB830BD69D755DEBDDF84F3983A +:1084A000DACEE93A8CAF808A0E414ED17AE33A2196 +:1084B0001E157E57F0A8E0E532E477E867B079BE94 +:1084C00049804FDEE4D4CB9F807CB6CCEBF233B94D +:1084D000275F2630B36CC961AC91E9D80F006FB14A +:1084E0009BD7F1EF07F8FFF956A912E5F84D2011D7 +:1084F0009A22E052FADFE434D1F8CB9AFE2315CB6E +:108500001B9D2F53E9888575867EC6816A3E89B793 +:1085100049D4FF5BB1CE49364E27CB8ADA49DE2EED +:10852000FBA491F8C652C9E583E5845AAE31768F33 +:10853000D0E31BA9FFB2222E2F973AE2DC92D4B7E8 +:10854000FC592A312FCE837DFF839E15033EA3C5A0 +:108550001CC5FB21364ED79FED800520F9DF6862F0 +:10856000BDE8D7F0788D47C6E03AEFD2BB1F673D34 +:10857000C765C137255CE765665E3DB3B37CCCA7B4 +:108580004027FE1D09EEC130E52F76CEBCFD53E835 +:108590007F66FB04B71EC9A5C54B74D39514EDDEE9 +:1085A00006EBE0D0B34A09F0BDAAFD85F82BA0DFA9 +:1085B000E7FF965F88F26F9C80F3F453FA26C4CBF2 +:1085C000E9A75EB8F7BFA15F5DA020194961F5BFBB +:1085D0003E6F0A01FCBAC0A6BFA15EABDB9E608DF8 +:1085E00082E72DFFF69BF1585FB63D81E4684BFBB7 +:1085F00063FCFD0EFEFEF4636DE311FF07FEF5C99B +:108600007D385EBD37DE8DCF3FFFD727C7A3DDF6B0 +:1086100000D039C259EF3378088F0A5D6BE5D4AECC +:10862000FD44870A9D005D33E2871A2E6F143A3E9F +:1086300086720BEC8C19659675581E9B125D43F47F +:108640002CF8B361AEAD8DF49FDFE5C7FE33BDB648 +:10865000820D505D2AE65F9FCBE9621D504D34E0EC +:10866000293637684A877657CFDB351EE15C17C35A +:108670004AA2895EE121ACCB0C623618A7F5A5EFC2 +:10868000A43CC64680D83B09740EA36DFF612463E9 +:108690006F83B94AFA2386EB81ABE77D28919E6010 +:1086A00006EB49B186B0C23FA2DF0C349ED2AEDBEE +:1086B0005E13780038FD627CD237C52B397D1F925E +:1086C00016B6C4A1BCB9253816E5E733A76E8AA94A +:1086D000CF8DA473DE3F6D0F970FCBF7B4AD324152 +:1086E000FB2B730A8AF133CB9BCAD9C7C86F7A892F +:1086F000F8ADC16F51C9C166C16FC956E6B81CBE9D +:108700005B61600E0B968CBD6924FC3CCEBF6300A0 +:108710001607BC9F5B352F09EDE0078DBED451F8DD +:10872000BD75428F6DE7F0427FABA590C6B35E5E2C +:1087300048E3741AED68B7C084A1BFFCFCE4EDAB5C +:10874000A430DC40D159A8CF70BC220BEA1F7F0DAA +:10875000E91FD9E4467A388D4D52095F79F3478491 +:10876000E70DF6890FE92CD9C4ED70947BD57168BB +:1087700037966EB18D0A97C931FCBD763DDEC3F7E1 +:10878000285FEC1E2AD98E449293FDD92707AE3E6E +:108790004BFC73FFB31F923C6A407AC7EFFB3E511C +:1087A000E965859E1E7CFA43A2F7191D7C7D1E9407 +:1087B000426B915FFC53A4918F239F377BD8C76096 +:1087C0006836083A5F56F9E1129CFFC08E542BCAF6 +:1087D000ABB3820F1AC68786A09C3CFB34E7834369 +:1087E0003A1DE1F3D0B6E16DA887C0AE25526E68A0 +:1087F00094B745117EB99D5F5ABB785305EAFD3A9F +:10880000E646BE6ED8539D2193FE8922FCBA1EFD1A +:10881000682DF2850DACD76819E7F7C12484AFA1A4 +:108820009E8D42FE4E9BE8791AEBAC4362680F279F +:10883000D73A4A0D445F0B46227D3D98D9BE16F5C6 +:10884000BB1FEC539CCF83C6D63203D41FAC90AD74 +:108850008031C00FE83BECDFADEF66ED21FE75CC5B +:10886000776F907A910F4FB73971BC861C931BEDCF +:1088700094A91DDCAE66605723BC0D1DAB7210FEC3 +:10888000A9F2E56E3DBCFF52E047C1D3D48940A7B1 +:10889000383FBF8561FBB3C6CE6BB17EF60F40801B +:1088A00012B16B29C2772A4F1A89F2E2A5A7C1FE3D +:1088B000C90BD363DC1FC10E82BADD6095DCC467CF +:1088C00033A322D7B3D5C8F5954DE89FEC4ABEAE89 +:1088D0009F0A3EFA54C89F4F6D26C1DFAD9CCEADB6 +:1088E000FE3CD4CB5F8AF5A6E150FE8B71972F0E2C +:1088F000121FD5EFE4F69B23CA53707304DD3ACA06 +:10890000B9BE4C023EAEA652476532FA2F0EF4AB0A +:10891000E56D7A5ACF19B4BE573A2E2B8C86BAD150 +:10892000CEF5685A8E3497E3C54478494AF46D42CF +:10893000BBB96BA854BC4DEE49EFD1766EDF25254F +:108940007A8B24689704FE06D25992BE54178DFD87 +:108950000A2437F64BD2CF20BFB62B29D5BD4DC543 +:10896000D7DC2E3C951CC7D739F0BA614684DC0FA2 +:10897000FBC3D16EF46B4EE9828668179F9FD712B6 +:108980009E5F60554C4DA4BC4A10F3090C6535C878 +:10899000FF609F5BCC28A7AC6017A1DFBDED8AC745 +:1089A000B8DFDD42EDFE6AB3F2EFC13CD04E4BCAF8 +:1089B000F6AEE47A348EE04DCA660BB15F528B534B +:1089C0004238C2F8B4B6213E1F11EBA9D8E70D40DA +:1089D000C768D73103E70BF95989E2157DC98130A2 +:1089E0005D733930B583AF6F6C2597032C571A89A7 +:1089F000FA1EE55BF5082E075CF961FE6D30858691 +:108A0000201D5EAC1CA8880D10FF540C1F4271067F +:108A1000659CB346F023E1F959E053B26B05DDC71D +:108A20003DC3E95D5997174D7EE2AF1707C6D07A6F +:108A3000235CE8172AF2B1E199F5437CBDC6151411 +:108A40007DE6F7209E4E0D647CDDC5B866D0917141 +:108A50008554FA513FC43671FD1C9B2B93FE6EC8A2 +:108A6000E91C87FE35ABD451FFBB73DFFC77EC7F8D +:108A700095DD42FDDB74561ADFD8D4E84F67147FCA +:108A8000E17ECAB6D800CA15250EA385AB54D08B9B +:108A900012EF50FC8BE478DEFE4641E7F3ED9C7F5D +:108AA0006F16A502B7626F43FB8168E0F4A54F948F +:108AB0007EFFA8B890F21D45AF85F1CCD713E16FCA +:108AC0001771ACEADCBEDBB5EEE77283FE705D9E2B +:108AD000496DDB407A55A6F55C2FE8FB4A9B77ACE5 +:108AE0001DF060AFE4FEEFEF25E02FFC7E8D4187A7 +:108AF000747C4B349753DAF195FA7DCD60D25ED613 +:108B0000B7FEB4FE4D4FF032E661381EC513906DCE +:108B1000CB2ADD38DF7BC43A69FB1998E19B906270 +:108B200037B922E0113617B0041B5F18095740050A +:108B30009775AC8E0523FC156DFFBEE05D87F3894C +:108B40008AA867EF63187F8A35C7131D81414FF6E6 +:108B5000FC7A310ED0BDBB9AE41B8F63F5F71D2D57 +:108B60009CD1B21ACE8BC5FF3ADDAE3AA4E77D02A6 +:108B70005E76FFC5CDEFF762BDEE6D3653C9E641B7 +:108B8000BFE2703F8B5B5E857A3E7FAF5C40F6B2A2 +:108B90008EC7EBE2C6B3AFF440AFF125AD39AB51B0 +:108BA0005E7BD570A7D4C4B0A0395C4FF5D955F51C +:108BB000F4BA3455FBCCC681AAF7039A86A9DEBB6A +:108BC000FC85AA7AF6BACB55ED07B796A9EA976D58 +:108BD000B952D57E686086AA3E7CC75C55FB11ED14 +:108BE0000BD5F4A1C1DF8655ED35C83F13FEF675F0 +:108BF00019C99B6798ED71A45D736824F25B7E8749 +:108C00007AFE67EC76A2E38412351E2E951E265C52 +:108C1000F871BA55F8289671BA88FD7EDD57FA3C8E +:108C2000AC6BF8458C3BDECCF9A4BF7157C75E6BCB +:108C3000403ADF8795087BF86D0D7F57D42490DD8F +:108C4000C32ECCE8C76EE6FC30278A3522FDCC89DE +:108C5000E5A5F27E7822979BD989229E7491F47BB8 +:108C60005CD0FBB1BEE817CC9B645CAF4A46FEB457 +:108C7000B572D55718BFA935045901F0CBFD623E36 +:108C80000F8AFE5B9AAD34DEC3CD4E2AB736CBF4E5 +:108C9000FCD1E61C2A03CD6E7ABEADB984CAED6064 +:108CA000C761F9447325953B9ABDD4EE77CD355411 +:108CB000EE6CF6717ED4AEDB053BF93373985A6ED9 +:108CC0005D5DA357AF8BA24F35FDAF661B3BF5F142 +:108CD0003DF1D1A3BF7E5E426F7A5A299B4E145458 +:108CE0001E8CA0CFCB13E31C27919846B3D1E49FF1 +:108CF000F6D3FFDB6677E5C1C1FDD3B5967ED8F725 +:108D0000370F463B58FB7E0E7E3B0DE4E0E64DEB15 +:108D1000FDB93DC70579B82604A49287BC17114751 +:108D2000DEAFA14B8F2141E5DF2AE55382BE4A0524 +:108D30001D966AE8F0FE44AE7F5626727DF87F8D60 +:108D40000E0F44C7911D7DC028672445ACEB81E818 +:108D5000587ACE72983C0BD645F230AB0BE8F24015 +:108D600022DFB793D063A0F8EF202BC52FA22F31BD +:108D7000CEA1C1A304E6B50BC62B8572BC9DC60F60 +:108D80001A707CB72E2C2F07E27F63C2F4ACEF4938 +:108D90000F308EDF0470FEDEC86413BC7F3751567F +:108DA000D90F6506FD8FCADF32E4A3BC9EF0F7E859 +:108DB00077897CF4D8FF321F29F4CEBECF1EE48D14 +:108DC000EBF9BE54F0D1DCC467D6FB2D617A2F439A +:108DD000FB2B028E6342EE1E13F47E40D81B481F0D +:108DE00085BDD81DAF88F64AFF4BC577A990778C13 +:108DF00085D290FF2FB53F708E01FB959AE3FDB1B0 +:108E00007997DEBF2F7CF6E8D7E1B8A83810481A6A +:108E100009F97C89806E89D9E2477A625B8C674266 +:108E200011747C7B8CF7D34468DF61641DB8BF008C +:108E30006A5BB62613DD135EE1CF6B867A81A88F5D +:108E4000F64B44CF51506942FE08BDF81DCA8B0253 +:108E5000518E162586419DC837B971069CA75B4186 +:108E6000938867162BD58960AAC0FBCB4515448132 +:108E7000B4D28EEE482BC3FDF00D927B9D1EBEA793 +:108E80004F71B52050232B4BF5E8E78C62AD548E23 +:108E9000659D2D0E28C7B32E3DB62F31B7B71800EC +:108EA000CE01EC7B2BD179CA13CB7F00D7B0C9CCD4 +:108EB000F785BF8DE6A5BF8C91BFE3FF203A807E8A +:108EC000CD34E68B72001E6ED37BE6E3B8D5B63B9D +:108ED000F231B80AF2E2A310C55925E2F3324B5140 +:108EE000CDF5C49FFC39E1D1156E47757DCFFA03EE +:108EF00077F27840CB7A4EC72DAB785D7608BF4CC1 +:108F000094431D42BEE34A24133E08EFD1CCEFC781 +:108F10007D5B9603F82CE6F8257C590E13BE63584A +:108F20003BE12B7ACE16820F04BDF5E4704066D08B +:108F3000CB7E88ED395E5FE398CDAD1E33D045EC36 +:108F4000BC80DFD8CB3806B4D7E03B8659263FEA51 +:108F5000F9369D2F1FF1C6327486487B2FCAEA6509 +:108F60006C60981E2F02FFA32F06FFC63277A7075B +:108F70004868768CE4DEF613D6C1EBB02BF82552A8 +:108F8000DC97CADAD08FAF73302703FA3759CCC4D5 +:108F9000276B32B9DF6F1AC6DCAB115F5E1DE14B88 +:108FA000991F3C60917602E0613AC26F0A481F2225 +:108FB0005E4CCE46F2C79821948EEDF6497CBDB545 +:108FC000FC5AEB9004BF66707A653FAEBF764DB336 +:108FD000BDE72066DA76E5AB4EA897DAAE715801A8 +:108FE000A4070AAE34805CD875941133FDD531E9FD +:108FF0006EB45376CDB6FD3A09DAD727873618C155 +:109000002ED9355FA2F75F26F1F7EF95B2768CDBAC +:109010003C60F72D45F8E7BE2A1F42B4EF7AF1C64F +:109020002CD40B8E7277488FF8BE264AC67D1DF66B +:109030003DC00178780C410038DB315E68E4CF2711 +:10904000C0F35A85AFFB9023A395BA5F6206A88F41 +:1090500053EA62DCED58CF0EB757E44EF6E29FFDBF +:10906000E7FF433BA5534F790F520DDF07192DCA78 +:1090700071A22C10A5BD92DB354B37B29112F41FB3 +:10908000B458D9C7890A0C867F0ED80AEFA1FED939 +:1090900026361279E2A4516EB1203D8E606E8C139B +:1090A00003A1137DBE9D690B603CE23389B5501C62 +:1090B000793D8F23631FDC4F742F86B52E4293CFEB +:1090C0001CC078F81BCDEDF96B8C11F20FD6C6538E +:1090D000CCC32B1C0FB9E4178D65E13F9C67451885 +:1090E0004FC44793447D723D8F834579402EA27EC5 +:1090F000D2C8D36816709A095F2ECAC3D04F66567D +:109100008437AB3208AA12E4A5A794E4E228E67BF0 +:10911000A113CA319E5D424E065A708A14C2C846D7 +:10912000FD271B703DCBC142C57A256BA5F24AD6FF +:109130004E6515EBA4F22AD645A597598D58FEC168 +:10914000E122FA1D6F06398DFC6E9029DE77F265FB +:10915000AB1BE38E332A7D26B917FB628981F17D33 +:1091600038E6CB42FE60065FD69C087BE164EDD515 +:10917000F33DD04F16FB28CAF3671DDC4E3E24F8A2 +:10918000E64149C891E55200FDDE076B4D943F73FF +:109190006CB9B40DE3EFF09EE2AEFE5A33C5E11EAA +:1091A00034CA99683F7CE39079FCAC7ED76D2C1E65 +:1091B000F7EF96A622BF1E977C93EAA0DF922A1EA5 +:1091C0003767067FE6EC083EFF6C01874BC93750D6 +:1091D0009E1F11F2FB1BA43180EB33809FF6DF94BE +:1091E000B8DA5C1BC9990A50FC3F8371DF17F3089A +:1091F00008B9A0F04F9D420706BF290DFACD71BBFB +:10920000088F73033C2E5B616041B477BBE1AF69AB +:10921000BB85017DCCADDB6F58924BF942149F5C4E +:1092200022F287A43AF94E07EE2BDEC1F757C2F9B6 +:10923000417C7F78C9BC5DF3296EB0388A215F2CF0 +:10924000D9B2E97DE4F7ABEB26CB883FF81EC545E4 +:109250002799F9FE9F19BE8FFB6593EB445E46DDAF +:109260005D9D489FD0CE83F6EE24686F28C4BC1B5A +:109270009ECF16E3E7F941311395FCA0C643499808 +:109280001FB482B9FDF0D9ABB7B6498CC7FFC81E71 +:10929000EACF5E79E4AEEF6DA88F48AF0F00789A01 +:1092A000F4F22723713E56EA3FD7CCF1B7AEAE8534 +:1092B000E8F02F353009F8EE9C5617D5D941CEDFAE +:1092C000736A0A421827325746D13C5122E17E8008 +:1092D000995512BF17301E87B809F30AE87D50056B +:1092E0005F0FFB1FE41DEA87BEEC26653EE62613F2 +:1092F0008757332F455EA05CE9EA85CFA5CA97B8AA +:109300009D254AE47BE4D742B35B1FA74312F3EAEF +:10931000B9DCF4338A87B33BB83E897E4242BD6DE7 +:1093200076F8AF4592FBECE0A03B2D84AE56166973 +:10933000F79BCBBCD77B23F86C7DA9777E64DEC31B +:10934000B024CE6FC39344FCF9557F167EE7D46BEF +:109350005C3FF8AF8F9229EED40F1E60EA015DF6F4 +:1093600045CC77B190E7A20CDB83720BAEE7B8A4D3 +:109370008104475165B51EED8CA7DA46BF3186F5ED +:109380005CA7BEE8488B9F6FED9E8A24B20B3CBA67 +:109390008BB19B2BF419D7D403FD9C9F17457CA55B +:1093A000E8C1425C14E4DB4E1600DE46FD407A2341 +:1093B000751DB34A32C62301F7AA78A4991954F14E +:1093C00048ABAA9E5EE754B5CF6C9455EF0734E5E1 +:1093D000A8DEBBFC6E553D7B5D89AAFDE0568FAAD9 +:1093E0007ED9964A55FBA101AFAA3E7C478DAAFDC6 +:1093F00079985210E653F496DEEDC7F5F57B3A7393 +:109400008BC37A7D44BB4FD57F74684115CAA7FCD6 +:109410008E3AD538EC04D86566CCDB6914EBE1D61E +:10942000A39C7083F07DD88528E4EFA93DD4DD2787 +:10943000A67C8E727A6E8D316CCF612FB691E28AE6 +:109440006E8D1DA8F57B971EF61FB2007CB5AFFA96 +:10945000D722FDAF4952FBC1157A0BCDEBFC9B7AAD +:10946000CA1BA943CA7484D7F13C0E84F3DECF0231 +:109470003CAF433D6FC54FAE45FC40BFB9304E10C9 +:109480005E4539D5EB1D2DABD73B3647BDDE716E42 +:10949000F57A2794A8D7DBE6C9E915BF8995EA755F +:1094A00057F05B02FF43FCFEA3F1B933491B471899 +:1094B0004BF2F42F5B843CED290766998B7BCA0144 +:1094C000056F3DE48185FB27DDF2608B90075BB47F +:1094D000F2C0F3422AC037CA07FE218CFBCEFCD172 +:1094E000E928D7D2D85EF25B4050FA303F06F87BCD +:1094F0003FF2776C933BE4473DB0358AECC8638715 +:10950000961CD2217C95DCBEBF5B3844AF60102A2C +:1095100089ECFA5792A08C3137FAD14CCF6AF2928B +:10952000DC7C17FD65DCDCD1C80BA691775A3B5873 +:1095300091279F8DE3F4F4CE6B2CB05A42BFFA28EA +:10954000F9B397AA17FAF3A7BBE5E83CAE37468B09 +:10955000922DF493FDAEE89196129F4BCA467DE2A0 +:10956000D1335DA47F1D22BD3281F949EE5E51E900 +:10957000FEF54AC4DB9477D2D15ED2FAD980E7B344 +:1095800088AFD8A6769EA75C29119EB5F8D599B963 +:109590005D1293C1F755BF4D52F651BDDFE23A2936 +:1095A00078DE1DED26BA7AAB96FB1F454707B55806 +:1095B000A05FF20D2E37F6DB6D73BF80F5B79673A3 +:1095C0007F70D49B1E3DE6236537BA282F6DB7CB3D +:1095D0005B8EF5B76EE1EF8B8FFB285F6950137FD1 +:1095E0005FB8BAF18538187FF62FF8FB67BF5CAB20 +:1095F0008F87F781D5A27F696B39D6DFBA93BF1FFA +:109600007D22D082F5A1EBC4F7A5F617E2D1BEBC4E +:1096100047E279745ABF47F83913C47AF4584FE1D6 +:109620000F8C17ED15BF66420D5FA7C55DDE49447F +:10963000669AF5D2DAEB15CC47F5C9CC4FE514168E +:10964000A0722A0BD2FB692C44F5E9E04263BD9A73 +:10965000C946EA9F9C43789F092291E20B256E330D +:10966000DAE38E4F5EB99DC587F7A5153BA0D5EE11 +:109670005D8E7682A3DC7B0BDA07E5C9DC8E0D9765 +:10968000DC4E48B6FBB3DCF0FE9451EC1376EF2FC2 +:109690001753FE0334D98876ECE8649EE79ABDB18F +:1096A000D1807C795586E4C6BC86C968E7027E8293 +:1096B000BF32D8307F0DD7A2377F381CF7D2C475A0 +:1096C0000D7EF22B0AF5F270649679C983EE46FF9F +:1096D000783732661AE021396FAA3F035B733BA6E5 +:1096E000BF766F8ABC98DD629F7196D7A523FA2C4E +:1096F00050DB49F392B97DA494A3DEFCC7CEAB70D6 +:10970000B59FF2A4676F8B623C9F85A561DECA128C +:10971000D648EB7A72849FD6559143B305DDCD16BA +:10972000F474B22D8AD6E1B3EBA58004F02CD9FAFB +:10973000D271A4B73EEDA4DCC1246F6609FA9C6324 +:109740006E9C5F8F74ADD84FBF1AA6FF6138E15190 +:109750002D07FBB00393445DF99E7E3CF327013C4B +:10976000EFCDE77230DD2F915EB85839E850BE2753 +:10977000E4609AF23D0F901CD4B3C45BA99ECF3F26 +:109780004994E9F55A3DE25B85F4EF64AD12D633B6 +:1097900059179532B3AE4ECAC650965B87F59443BF +:1097A0000757E1F836947B38EFF5078A50EE1945F4 +:1097B000DCD76806FD89F138878792330D07BBE354 +:1097C00064F727A37DF977C6C9C0621A4DFE326BD4 +:1097D000CCC7F213A3651DC56DB5F1941EF11775C5 +:1097E000DC615C2BC783D4AAE8039F13E7876990E9 +:1097F0002ABD30C62D633941F292FCB832D1B7335D +:109800003909E3138D19D85E670EE9510F6C10E723 +:109810006E360C51FC4B583D2CAD3CCE9D2FD67274 +:109820006DB2692DC6D9D6C6746DC8C679EDD3613F +:10983000062773812FD76989E827CBD42FCFCAE1B8 +:10984000BF17C7877E313AB918E188D1CB43B0FC46 +:109850004807AB0670243237D54D7A6BD22A1E4F9B +:109860003C90CCF3376324F8CE9BCFE924F4BFF3CC +:10987000C67C6447BFF7C9BDDB766C0392F9E6305E +:1098800057BBF7EED0FBA360FCBCA727C6BE06ED16 +:10989000573EC77933BF4447F2EF0B13DB88793269 +:1098A00033CC7AB301EC892F6E15792B0677567578 +:1098B000447CE02A279783C7FA88F715C597FE15D9 +:1098C000E13A96CAFB6BDF87841C2D9EC7F3F7D85D +:1098D000A914C2C3D7494C955F51147F158DA3D4E9 +:1098E0008D176CCC17718EC968F032AB059F3BE8C1 +:1098F0007902D8A118AF4FB0951890DECA98F5A09C +:1099000007F081470A70A2492DFCDC5157AA254077 +:1099100071BEB186AE6EFB6F20EA196E3F521CD647 +:1099200085FB1C6ABB319FA9EBDAB8EB5F843C3442 +:109930005E4867FE91BDC19945CF3D664B508F0A89 +:10994000AFC89D8372D96379E538CFFF02791001E2 +:10995000CFBFD83DE39C80933D269E2FB548E79925 +:109960004AC2E098CE8E7EA8C16EF6635E60C238B1 +:109970003BE5C929DF1B9DC2E3EB7BC022C1F5B1EA +:10998000EA986F97A5E77CD7005FB9000E570AD712 +:10999000674A7B458ECD57F8CA6F23BB669EE0AB06 +:1099A0005F396D3C5FCBCAF7413E5AFFE59DF87CBD +:1099B000C1D1181322FBBA792C7E04F4F33D9078C0 +:1099C000C423231DBBF7631E0BBB8FDB0FD6B29CDA +:1099D000628A1BB389B49F29F9D349BE5EAC7E6805 +:1099E0004E58F0690ADAABF101D90AE3C40C3B45E1 +:1099F000F970EE1446F32E47BB21BB97F5B47CA358 +:109A000043BAD0AE2B7E00D7A1BFF58DD1B3469E11 +:109A10000F161A1299E7D59C50FA69CA28CA4B0D3D +:109A2000DA31AFF1B9284E5F876169A1BE62DF50BC +:109A30008A8B3DE6F47D8C708F9EC8ED0D76B06B01 +:109A400008C6D716C58B3C33A7475E05EDEF1BEB69 +:109A500028D8200B6443BDDC6CA37CB1D92962FFFC +:109A60005CCCE352E9D7813A07E95F9202DBA4FEBE +:109A7000E7ABE4D92AF3FC3885D3B7522AF3D09E5A +:109A80006BFB58D0DFC729FC9CCB634E2FCD7BC529 +:109A90008CAE0F6C00C322138F77F637DF3A31CECE +:109AA0004F9DEFC5AEEB5F80D611AF8B622E0EAE31 +:109AB0009FFF9DEB70B1709D4C1170E55D1C5CF7D4 +:109AC000FD9DF8F230BE3EFDC105EB7912D7934DF6 +:109AD000EC1A82F35864BF38F8F6FC9D7843F8EC32 +:109AE0001707DF63C88F2CC8E19BC3DC46A75E0065 +:109AF0001371CE447BBE648E01746B61F8FC89CE19 +:109B00001CF06197593966A627BBE4A79D33E95E2F +:109B1000C76416B4A1BFB82F8AE2F8CCDD35245251 +:109B2000AF3E23D6EF31A7E779847FD11021172AE2 +:109B3000D5ED9ED7B4DB502AF474958EF4DBDDB9F5 +:109B400083E89CB4CECCA71C9321D33EC14B826F3B +:109B5000953C5E657FEF265B5D1DEE6B287A69EDB7 +:109B6000B0BA1CDCCFF0387BD74B0A1CA79B0F5B2D +:109B70000719FBC6C332FDEEE2C65EF6457E67F707 +:109B8000BD9B129137B06CC7CBD641117197112C88 +:109B9000A4E3F67D978EC77945DE4BCAA5E1FDF5B6 +:109BA000288EF7E6042FC967454F343CF35B19F55F +:109BB0000FD8030CE3BA5D713124AF5B8695E444A2 +:109BC000EEE3FC3545D1E7FA3EF4B949F53CD86CF3 +:109BD00066FE887C55CF29C344B4C34A99758D95D8 +:109BE000CA58E68FA0DBB05D23317FAF768D819EB2 +:109BF0002BEBD2979DA0E4A9069BDBCD9F80FFB6FF +:109C0000A639271ACB03CDEEE84F607D1E4A281DEA +:109C1000E3C47D146F87F913555C36A8AAA7FA0E22 +:109C20009B3F51C5653B55F5CCC6E3AAF6039A4266 +:109C3000AAF72EFF29D5FBEC755DAAFAE0D60BAA90 +:109C4000F6EB74FC9C41599199F2EA2FDBC2A223F6 +:109C5000DF2BF9AF468792FFAAA3F64303E6E8C8D5 +:109C600071CB3C16BF0DEDF2559C0F86EFB0AADE0E +:109C700097FE6D26ED17313BB3E1FED88876A7EA53 +:109C80003B466B8EAAEE31F33C998712168C41FB52 +:109C9000ABDC5CA07A5FCA76A9E6D19D4FDD4F9E12 +:109CA0008BC1B09EE28EB82739B6B0675EF5430926 +:109CB0001EFA9E96FEFD778D15FB41DC8F06BAA538 +:109CC0007D9C2EC94C7A5C12E78395EF4C73727BB6 +:109CD000AE5E43B7F586A009E9AAFEEFA4DB471202 +:109CE0003CAF24203D95F77EBFC1AD4ECE375F9887 +:109CF0007A7F3F57C067BC001E58AF746FA1E75F03 +:109D000094F1FEB4430A727BA54D8DDF3AF19D7B41 +:109D100045BC62659C27C5FE23795EC60BB12CD07D +:109D20002B1FC7D3F32F06FEF8F76EBDE4EFE9FB58 +:109D3000989F899EC33AF68A9FBB047EBEB0F7FE09 +:109D4000BEC5A9C8A55495DCB8CB2973BC767F27BE +:109D500083DEA3DFD4BBFC72D0F3FEFC2666F6B92B +:109D6000490EFFC3FD25C6E3699768AF2F4CE1702C +:109D7000F5377ED0E949203BE527EAED18D4D1A993 +:109D800034CE4EE4CBB5267E3E102413C537147F67 +:109D90008869FDA51C9EBF36DFF90AD91131187BF1 +:109DA00000BD1CF38B68DA57B94EB29A10FE6BCD2A +:109DB0005DEFFF1ADA9F782ECAC4E3238A3F14AB03 +:109DC000C7FDBA8B855389AB28F71D607C1CE55D08 +:109DD000FE846174CEE53EF4F31006715EE13E80D0 +:109DE0002115E44FDED1D909415C278CEBC0FB780B +:109DF0009C2FC09DA0B3D079A4BEBE9F00022CBDF5 +:109E000010CF7DF07D9484BD86D391EBA0DD47F922 +:109E1000A6F3EB18D4BB6F3BD5FB297F6155AF0F81 +:109E2000477C953808CF794F4F4C89BC5FA43B2FB6 +:109E300053C9F7EB23EEDC1D0FD2C47F94B8CFB823 +:109E40004B8CFF749FEBD7C47FFA8B5B7D6BF77DE8 +:109E5000ED247A53C7AF4C0778BBAEB668B23394E3 +:109E6000789632CFEF04BF7F90E8F90EF5F409A79A +:109E7000E7BFB13C16CDE341C7A64C4EC0A97DC398 +:109E80003C09E8EF62FE6EBABDE7BA60DC664D845D +:109E90003C3866EB5D7ED853B9FC3897D94974B825 +:109EA000A1B42BEBE122F25BADDB008FCBF7F278B4 +:109EB000E972B43BD0DED8A3B6372A45FFBBAB76F8 +:109EC0007B113F6DB8B9C4F78F449C8FDB9593EC41 +:109ED0009EC45468770AEF99C138798C28E3B9FC9D +:109EE000CC12E39844395294A7847C3D65E7ED1584 +:109EF000B89576A344F949B3D9BC6670F8BDFCABFC +:109F0000A846F44393B295F358C02930AF86BD29D3 +:109F1000E47F2C6EFDD084E79C46A7969A529378F6 +:109F20003BC4CF6243C86487F637DB7CC311DE06CF +:109F3000997976537C2E649A09F33827ECAB7346F3 +:109F40001EEF3A17CD4B059ED1A9D526EC776E5C56 +:109F5000C884F850EA0DACEB5ACCEB1C9DEAA5EF97 +:109F600041FD514DFD0303D45798447C532B473298 +:109F7000E2547266FEDE97898EAF35B3B5E9F0FE26 +:109F8000BABD2926745EEAE2FD43ACAA78CA4F93B3 +:109F90001F5A3BA33F7E93F68ABC3451B27D2FA754 +:109FA000E3FA8FDDF75A22966BA5468A3B47E4B960 +:109FB0001E7F16D641AFEB4A8CE433655F67BC1950 +:109FC000F86D20C529F839F924D35A2BF0D91AE0B5 +:109FD000032C7F99CAFD475C731E470D58D14E5123 +:109FE000E2AF2BCD1CAE8668CF7D65E8671DD56BD3 +:109FF000E2AEFCBEA0A4164F02C6CDBA8EEA258AF8 +:10A00000D38838EC4A11875DB9AB3405C7BD35F547 +:10A010007FD78E52E26D0D3603732484FB29F36CD7 +:10A0200010F76168D74F79FFECDFF4BDC657CF89D1 +:10A03000F77DD9671BC4BC1A2E0C55D9270DC00754 +:10A040000867C385DC1FB54F7ED9DDDFA6B23FC2EE +:10A05000FD1DF47C1AF31D443EA8B699FD7AA46F49 +:10A06000832793CB459E075527E8A84E913301B52A +:10A070009C51EE3BC2FB7FF07C318CF71BE41B65EF +:10A08000BC378D7C3F770193498E2DD0D80FCAFD08 +:10A09000488B2CB3884F16AD3386F303E8BF1E13ED +:10A0A000DA35D7B76A9F6BF36B397FC0F78F467E7F +:10A0B0005F99CFF298AAC31E6C56D449FB710DACC0 +:10A0C00095E440C31E90A3F1584607717F8475A89C +:10A0D000E7774364DE2FC07B236B37B924F487D541 +:10A0E000F0D4B34E1A6F79FB8FC3A9F801788E8430 +:10A0F000FBCD6395FC007ABF2B55267EFB7254E79F +:10A100001341F88E3E6EA219F5F2D98ECFDFA6BCB0 +:10A110004627B75B180B3D7805FCB3AE436FC538D7 +:10A120004E5DC70BA40FFA5AA7EEF3F5AC8BE6AF62 +:10A13000EC1B68E9E6C9541EB7B83CDDF336E2D142 +:10A1400038B09DEEF5EABA859F6377E8C17201F8F1 +:10A150009D21F0C074E1FB6998DB63C638E984286F +:10A160007ECFCEFBD632339ED34FB6E9BC28EFD795 +:10A170005817DAF0BE925471CF46B2A4F3A2BC9E37 +:10A180000FBC88F77D75D51A1E473E77DD1A1BCCAC +:10A19000867578DEC4CC484F8E581FDDCBD065D392 +:10A1A000D3F74B6BBF19690678D2BEB714625EA1B4 +:10A1B00002F784F2AE9118C7684EF0BD8470671E36 +:10A1C0000F9D943081D8E2A17DD5DF093EFEDD618F +:10A1D0005DE5B65EE61D9FC6F9715892C18BFB1D09 +:10A1E000C383CCD3D60B5F29ED94F3CB7DF1DD9EF9 +:10A1F000B2D0B5C897187FEDED7BFA34AE977E8963 +:10A200007776E03E803DB404F1B8E74AA01198DFCC +:10A21000D9E752B6AD8E98DF03625DCE4EE17AED9E +:10A220008DD91686F2B6D8D028D972C3F2A62EC11F +:10A23000BB13F939655E5047F113215F503ECB6483 +:10A2400017ABFD2605DE35629F48F197B4F2580B37 +:10A250007FC3054925977E89749B14295F0CF4BE42 +:10A26000427F07E5357CDE2A517EDAE7CCD742F51E +:10A270008D12E55D7E7E8CDB691839918A513E70C6 +:10A2800079B3E4F19964F72EF4F1FCE605DB97511C +:10A290007E11D6EF00FA5AE0E4E7A216AE51FB17A2 +:10A2A0008B37AAF90FF781D16FBA1E2F7400FE5CAD +:10A2B00072BFBA7D1DE3FBA4759ABCA46421D77A52 +:10A2C0009CFF4B13F671312BBE94734B1B99C793B4 +:10A2D000867691C837FE7C7B76CAC2887ED7644872 +:10A2E000AA733AA7414F0D827E679AAD54CE4CF3C4 +:10A2F00054A6C1FB8569BEA9589E3B2AF066E81AA0 +:10A3000042F2BA86CBD1280C22C23FA3AE3193BD14 +:10A310007B17DE7B05F88B8AE2F259D1E77AFDCD17 +:10A32000FA789CE7A7454EE2E37F9B5C8979161B90 +:10A330004A3D05C85F1BAA2D74AF419B8EDF6F6736 +:10A340008EE2F7ED047E37E600EE6D0F6ADF54868D +:10A35000F70B584341162F63DC6715E5ABAC1BCFF9 +:10A36000E8FE32E53B2521EF2E84276B9685EE2112 +:10A3700071E8DB9C1817710C37897B13B89E691044 +:10A3800038FE75477602EAE3F37B2FA37218E3EBFE +:10A39000AFE4E5E33759C43EDA9966A8479C6B1CE5 +:10A3A000D62E058DB8BFDEBEAA16E9A57E75E724B8 +:10A3B000BCB7A5EBDF19E5CD389E4F2D93E3C3F075 +:10A3C000D5EF7ADC4EE70B845CBB06FD3EDC8311E7 +:10A3D0007654F73902E1B7D408FAACDDCBFD956BC2 +:10A3E00062397E17327716F69B6B66F13AC0D93523 +:10A3F000E5EDA3501EB165461BDA71979C3722F438 +:10A4000099B6DD693CE380F2F0E9288A2B353C11EE +:10A410004771B915BA2EFAFE9634A1F7878878FFEE +:10A4200020E6C13CA3867D97D1FE5614DE9B54489E +:10A43000F2CB8CEB7A08E52CCCFB8667A3E9DEB681 +:10A44000EE7B49ACCC8F7CBA625F0AF9A78E6C4F69 +:10A45000C14DB9783F46288BF81BE49504B6D8AEB9 +:10A4600087674CC33C95863490B7503F91E69B6616 +:10A47000003A6C18185A82216C437A137F3F2C746F +:10A4800012EBF1E92DFC7D6168891EEA43D337F1B7 +:10A490003A268A016115A76F9986E7F14EDBB85E0F +:10A4A000396BE4F1DFB34F0FDDE68F58F781E95CDC +:10A4B000DE9D8EE6ED4EBBD8753310DF39A12191BC +:10A4C000F9F026D14ED17FCA3C957E303EEDCF6A61 +:10A4D000C70FA671797B83B84F66422C5B47F76044 +:10A4E00019981FF3AC0EEEBD8CF0F2781A3FC78EB0 +:10A4F00070E2FEBE328EF69CBAF2DD1BD15EB45025 +:10A50000FB9A48FDF19A5837F8CE1AFA4EAEA700DA +:10A51000F9A461464601AE1BAC9741AC97C14CE72C +:10A520004CDBA83D8E6BC33CAD72AE37262426B6FD +:10A5300021DF2B7083FD6321BD2CE07F47E89D1B4D +:10A540005A04BE0066CC6B6B7886EF7FE2FAA23EBF +:10A55000199ACEE73F309DC385ED69BC0CC0EF88EA +:10A560004B9FDFE7FF4BF38B58170FD2C9C18EA16A +:10A57000B42E0AFC8C6D528D737A95A65F09E3F7B1 +:10A58000AAD8B3A9DF5DD1CCCCEF3BDBD6DDCF952C +:10A59000C7ED0BA47FE59E30E61940FB54F5423A27 +:10A5A00074DFEFD5CECF47B041303FC4EB8CAA2249 +:10A5B000313FAB989F95CF2FA0A247F66657D6ACF8 +:10A5C000B89E74DA8DF7EEF1720BC5782AFEED6D48 +:10A5D0003C5CF7BED6233DFD1FBC1E0A9CE05E45D9 +:10A5E000AE43379E35F029F844BE157C48799A5A17 +:10A5F0003E8CEF5E470DFFBA7EE2F7C43EDCF2DB35 +:10A60000611DF1FC83ACA6E7E57B5CBA85B9E17E10 +:10A6100077EFD0C44FF6FCCC8F7EFD8ABDD5941762 +:10A620006A5C0D7292F209F4248FCFC1BBB5308FF2 +:10A63000733B5D019CC79D42CEDC69EB8A97287E07 +:10A64000A3D7A19DDB057E33EAEFAE68788EE716CF +:10A65000E0F9E311F33EE7ED8AB745AC57D1F3FAE1 +:10A6600078DCF70A05C08EEDC5DE50EE710A31FECA +:10A67000BE426FC96AC23CF2D6EC42DC623B6F66F6 +:10A68000594D0EAC0F2EF413C5F238E3A7CCFBF6F0 +:10A690001508B7C89B627E8F2115E87A91A0EBBAA6 +:10A6A000975BE2C92FDB0BF6577C2FF69565564278 +:10A6B00050EE6957DDC81A498FD66DD53EE7F1C80F +:10A6C0001B3579DD3E11C7D5DA5B75E9C2DE2A603C +:10A6D000055C2F727BE126114750F2E5CF897C792A +:10A6E0009827E1FFFC4E89E7C733F975F4931A0EFA +:10A6F000EBE9FE2986D9D36322E3965D26B49FB4A5 +:10A700007684B63CF387F78B7F0E4DEAFFF85EDE6A +:10A71000AFA13CF3C777873C8BF53FBD93F51EEBAC +:10A72000D9BE7CDF77749FDAB97D510CFD9473FB41 +:10A730005ECAFA39D69F897223DCE75647D13EB00C +:10A740007F5F1C9D033C9729CEE53EF76D5E88E256 +:10A75000446B687D1E48E779A9E7F7FEF503A493EB +:10A76000F37BC18A76A15E8E25D9BDE29968BA2FA6 +:10A77000F5DC73DF1647DAA17FEF7C1AC47D81E731 +:10A78000E2580DC5D90C5D5912D911E31291CF963B +:10A79000EFD96F427FAEFCF9FFC90B61BBDDFB4D0A +:10A7A0006C04E98F47317F35F0EBE7EEC1739E67AC +:10A7B00051A6815E1FBBF56FA4D7B5788171CFFE1E +:10A7C0001CE7F17C2CAD0FE0A50EFDAFBEF0F1A7AC +:10A7D0007F527C9C3376D27D80E7764923FD7224BC +:10A7E0005E247E8FF6DEB88059A2F9F3E7FBBECD7A +:10A7F00043FBF68BF65574BF427FF37E3B9DDF93A0 +:10A80000F77F67DE52F062E6FD977FD2F556E8FFEC +:10A81000E7E95C2F68F9A027FFFFE956AAFF3ECEC3 +:10A820004DF05E24FF2765FC73CEFF27AFFB6E89DA +:10A83000E26CFDAD7BD13FE9BCFB5FF797C5BAC7C2 +:10A8400059F1FEC373CFFD4F168B987F7FF39E990E +:10A85000F1CFC9E7FDCD5B1BC7DCFC1C7B18ED0904 +:10A86000E3349311CFD7CCF14AF4FB07B371C7A2FD +:10A8700010F3BD3ACB6231DF639E44E760E179506B +:10A8800026BBCDDBB9189EBF5DB3D989FAC0889DC0 +:10A89000709F608144E7A6675B9D65688724EE65CD +:10A8A0000FCBB41FC3F35667CF492DC4F64798EFBB +:10A8B0009E51C857B38CFC1C8C33C710792F29FCD0 +:10A8C000CD3A5C4CE74CE8EFF60C7E0FC3DB63AF90 +:10A8D0007FCB03EFAF6AF13662BC6C7A96B702D7D2 +:10A8E00071FA1C5B01DA11B37181A0E9CF33B8FFB3 +:10A8F000341B3BDB111EAF91FC7C655FC733EC273B +:10A90000EDEBE49BBA4EDC0C705B8FF038A751D8AE +:10A91000434ADC6306D623F6C5A7358DAC9A087E7C +:10A92000C813021EB6B8ED4E4711CDD31F87F3AC46 +:10A93000DF4FE79ABAEB2B3F54BFBF435AABAAAFE6 +:10A9400071A9EB1B4BD746F6EF6B3E332A0B241F46 +:10A95000E8F8C4FB25557EA9522AF0BDB68AD592E7 +:10A96000BDEEF0C89897CBF063A9F85EA7F223C3B9 +:10A9700078E278A915F9BCD3CAD882C87875BB88A3 +:10A9800097B56708FFDE21E2E26E8FDCDBBD59CAB6 +:10A9900078EF2E9D20615C1453B67ADBB7090A78F4 +:10A9A000DF4D902B94FB20D16E3F56CBE3207DE111 +:10A9B000E1ED29AECC8100E79CBD4015409765359F +:10A9C0000B8CC8D773164F9090EF8F4D0BE9B0CC1E +:10A9D0001F08F38072EE0FEED4EA087C1D11F3D845 +:10A9E0007C8FDA4F53CAAFC4FB3FEBF87EEB9FE39B +:10A9F000E5CCDADCC8FE669EEF1FC7E54ABE8119CA +:10AA0000F4117133BC478DF2196AF83AE1F76744E3 +:10AA10007CE784C0E766713FCCBB4BF38D0B22DE35 +:10AA2000C765F2759AD107DEE23239DEC01E277E95 +:10AA3000DD5C2505F8FDCA1E0BFA134B05FF6D16EC +:10AA4000E75267E2B95D78B474EC52F22BD856EE57 +:10AA50005798E17FB85F51103468F6513AE95EA328 +:10AA6000991ABF619AF027A6F5734EF44286259C89 +:10AA7000D7007272DA404E4FE0F7CA741FA5A047A4 +:10AA8000651DFAA21FEDF9DCBEE8C1EAD4333C9F94 +:10AA9000A1F819F9A57C1F24DFC8F97CF361EE87C2 +:10AAA0006DAE3A6F477FF38426FE3BAD29BB6A50FB +:10AAB000C4BEE56BD34C35FC3E4DEEFF1C13FECF00 +:10AAC000E6CA91D1A596F0FA6CAEFC9ACE9574F3D5 +:10AAD00003FB717EC837713F7E6665149D7B9AE9E2 +:10AAE00096DF5FC6EB56D4EB65556D5948C715FA2E +:10AAF000DC47FE059EBF561545679F14F9F4C64313 +:10AB00008F65A15FEADEB1B40243A405CC77279E2E +:10AB1000A39A5125B9C92F14F1879378C60DFA2746 +:10AB200006F87DF4FA2A2ED713B7DADA26C37A8D1F +:10AB3000C814E7F6AA78BBCD356AFAB941C8EBA5C7 +:10AB4000A31E3B3208CA1BA72D1C85E38FCA94792C +:10AB50005C02E988CE1F1F3D886AA5AEA6807E6F85 +:10AB600046391FADF49FC3DCD523A570FBD35B1E14 +:10AB70007B10D1B4B472C1A860049D2971FD1BB7CC +:10AB8000ABFDD7C422B5FFBB34A07E3F07FAE0BDC2 +:10AB9000F073FAA1C7F24CA0C7E1617A54BEA7AC2A +:10ABA0009B76BDB479360AFE3B4AF495684FE4DBE8 +:10ABB0003DBEC87DE09B043E95B263EF7FFD7919F1 +:10ABC000EA453C6F2CA312B64DC4ADD7DABAD222F7 +:10ABD000544365E6828358BFA611EAF07E5E26BF25 +:10ABE000D76EBEF5C30AFC6989EB9CD28B582E90B8 +:10ABF0005D93EC50AE10785F9453FA228687AADCFE +:10AC0000D5741F6E857E636C1EF2C7567E1F01C809 +:10AC100021BFAE973C9852306222CF89979BA355B3 +:10AC2000E7CB2BAC36557DB23355D57E8AEC52BD81 +:10AC30009F9A3354F5BECA5DA07AFFDB4C9E4FFD50 +:10AC4000E4239FBD7A3BCCF3C9317AFCE50C760452 +:10AC5000F1E208E305E0BD1FE13D32E6B62CFC5D04 +:10AC60009CDB32F9EF9EBCB175F45BB7B3B07C7B73 +:10AC7000BB8A71FA34F078C92CC6F9F16D26E87AEE +:10AC80008A44F19F5942BECDF4AAE966C658E387CB +:10AC90005128B744FC645AA576DF384470CE29E1C8 +:10ACA000FBBB899AFDA93942EEF547674F3EF26D2D +:10ACB0001AF2E7A64C755ED79312BF3FC1FF16FF8D +:10ACC000DD8DBEE458B7FCD2D0D76F055D2925C80D +:10ACD00087049413F926753BA57C17EC53038CF37A +:10ACE0005EB399CAF79BAD54FE67B393CA0F9B65D9 +:10ACF0002A3F6ECEA1F2B7995C1E2636C13A46ECC9 +:10AD0000332656794D3FC6275AF97624A423FE38B8 +:10AD100032FE967897259CAFF0874C7E3EEAB39240 +:10AD20008F2D526E984E3B421F59D03EA865013A76 +:10AD3000BF7A0D0BD279D6F92C44F5EBF008A83E7A +:10AD40009CCFB0887928CE9560F55279043F9D0656 +:10AD5000F492F99FF7E2BD5679A82F2D94A7B92E4A +:10AD6000920FBE13789B92E979217314E2B7F183B5 +:10AD700099281FC71B19DA7F4CDCBF94C8F7C8D8C5 +:10AD8000678F8C8E5ED88BDEB5672E7C2D73542436 +:10AD90007E7C266CF7A4729F8FB83FCA903C4865B2 +:10ADA000BF1C17F89D9FE1792393F67B1CE2F723E4 +:10ADB000BCCE1FD5177637D92FCA7C40F24B183F2F +:10ADC000FD4AE87FA57DBE09E4287C7F9ADB67C247 +:10ADD000BCA7B22D05D1A15EE1F77D9A99A4869F0B +:10ADE000CB114E4F7DADAF4217974A570AFDB46461 +:10ADF00078CEE3BC0DE25E2783BDC6897863D65961 +:10AE0000441FDF654A3F6A07E4957CBC7124FA253C +:10AE100045FC1EB0BC8E4E0BCA8B37D0EFC9473DE8 +:10AE2000F959D94840E9B10E6645B970A428FB35F7 +:10AE3000D46B47B646C978DEF933497E0DF9DBDFBE +:10AE4000A6A77BBC008F749FDC924A5B21FEDEC20A +:10AE5000F47146D283277D2EFABD8291591C9E53F0 +:10AE6000C27EF283FD81FDA64FBBED839500C7C96D +:10AE7000AA21F8CB0A40274BE32F47FBE2A16C1D28 +:10AE80000F97BA8D64376DD193BC79B36AD25B8B5F +:10AE900023E4D8498D1C9BC3C98D9D64FE24DCE747 +:10AEA0009B23F4E4AC1A8DFCAA52D76B34F22951DF +:10AEB000ECAB6BE596563E0DCA8A0BEB417D4FFB22 +:10AEC000EA94A52B783BCAA94A89F03413FC3E5F6B +:10AED0003EDA0905C69316A40389E840915333ABC3 +:10AEE000C01F2CC272C14833B42F07FF04FDD49990 +:10AEF0007BDCC62596483A5B6062E8B76C5940BF78 +:10AF000037303FC33B2A8BE8C16BBD1CF0B1792FB2 +:10AF10005FC7FCADEFFC19E7BF64CB576F0E02BCF7 +:10AF20008FA8D45B513F1EDB3A3A0EEDAC37025F7F +:10AF30003B586E24BD3752FE43D9D6AFD2907EB572 +:10AF4000F2C05FC6E877B0CE482C88BF4B74A634F9 +:10AF5000B90CC73F936932F07208AFA79698797D14 +:10AF600052259615FAB12FE0BD70E7ABF8FD59AF49 +:10AF70008BBCD3AB4216BAE7AF3EA4FB300AF368F2 +:10AF8000BBD4F7BC4CB8A0BEE7A594A9F56AB959E3 +:10AF9000AD57CFBC3C8FFCEB0AAB4BA37F876AF469 +:10AFA0006F81AA7E5548E747FA9A9A3346D5AFC3D0 +:10AFB000C472703DBAA418FA3DA66AC6F7F3A74357 +:10AFC00089BF7B7315E3E738A6B94B55FDEAC1A1EC +:10AFD00046FC607BCCF7985E3245F5BD7AEC0FCF2E +:10AFE000ABCD5E75BFA6FF227AB8A2E97BB2BF0BDC +:10AFF00082EDAAF7230F77A8C671775ACBD11D2D02 +:10B000003CEE7E01CB3598379600AC11F296A35BEF +:10B01000527CAAF1052CB579C5B7E9D89D1897B926 +:10B020004DEFAB43B9FFAD2E9043E7C1D32765E2A7 +:10B030007E49B56D2D1D1F9EC67CAB90AEC67C13A0 +:10B0400068C1FA84EFDB294FB905CF7927E0BA56FA +:10B05000C5BE86719E7689ECEA7A8B38E76D6FCF34 +:10B060008BFC5D93EE73DE4E8F7301B4BFD33188DA +:10B07000E21DDEF2380FEEDF2EFFE365747EACD604 +:10B0800055BA292B299C37C61CEAF300B52ECF2EC2 +:10B09000CC0F8A29D7F3B8CA6423C5556274DE7809 +:10B0A000715F03C5EF4C938D948F9B3C80CB9D9833 +:10B0B000FF6032E6BFC624FAF423B0DF5489213F93 +:10B0C0002AF0CDA8E2E7C47F9B25FC71A177AA9363 +:10B0D000DEDC49FB8903F8EF251657C9878C68A089 +:10B0E0005B0D56949B89C7BDD61100E71E4711F131 +:10B0F000ED9EE39DE32419DBCBD43EA5B2F4E652EA +:10B10000FCDEFD7AFA5D9D3DD689B1D89EE50CA1A5 +:10B110003CA69B443E68E23CF91DF4ABD861231386 +:10B120003F1B43F3B00E8BF9779C47E271CF329A05 +:10B130006F8E45C6DF7501F85CF83B491F37E35D4C +:10B14000707DEB998F372625E1BE6E75A935097F95 +:10B150005FA47A935EB9D486B697F067FC78FDFA5F +:10B16000D727025C3BBAEB2CC800EF1B4C4C5C06AB +:10B17000C15834D4ABA5EEF6D327E6523C4079EF64 +:10B180006725747E59BC5F42EFAD9AF194F15FCDB3 +:10B19000BAFEF57516C493382768B026513EE1F71C +:10B1A0003F489179B6317AB918E973A14ECEC3B24E +:10B1B00028DEF706D28755E71E82F59547477E8041 +:10B1C0007E12C897935B50BE4C3492DC5D91C3EF06 +:10B1D0007DDE6392FF781CF7379362287FC678F78D +:10B1E0000DED1D30EE0AEB7F117F01FDD279F7F3F3 +:10B1F0009D3A3BC63B17EABBE7E3C1BB563ED2854F +:10B20000EBC8770BC3F3F1E079C20D11F3C3DF3E56 +:10B210005924DA5B06DC3C7D0DD2FB6233F9BB3787 +:10B220000B1EDE6067AD98D7F975CEE573F0BB5F96 +:10B230006F3452F2F31E7C897AD11943E7368F744A +:10B24000EA3C18B7F13B62DA0653FDBC19E333ED73 +:10B25000B0DE1E9CA03C4435EED76327FF47368EF8 +:10B26000D7A9D321DE16854C4C46F96160C12890E0 +:10B2700043C56317EA07E6F27BCC3DE0AFDDE0F2C1 +:10B28000FC7716E5952871BF7FB9A4B8DF0AC6E53B +:10B29000D78A9255B928DF574C94483FAF68FA8651 +:10B2A000F0CA0CFC3C8F292A10588D74FB6C348F2B +:10B2B000675A3CAA7B1EEE91B9DFDF9CE0B9474E8E +:10B2C00042F9F735C93FA5FF1991EF80E7C431DF97 +:10B2D000BEFE6FFAEB30EE04F2731DCAD77A76C069 +:10B2E0007453849DC5DABFEA9697F9BAB01D66B863 +:10B2F0005F4FFA453B2F83AF8ABE572D5967E31D39 +:10B30000A3B7CAEF4EC77C9EEA68EB6CCC072A97BE +:10B310000F4DC7FC9FEA4CEB6CCCFFB9F63703BD71 +:10B32000544FB53EA07333F60BF90A2FB57759DFAA +:10B33000C2FA6D0344BD40A18B515E0FF25D1CAF9C +:10B340000F1D30CAEBA7788485CE0B9EAF8CA6DF8D +:10B350008FEC0BEF339B9E55F90F3DDE8BDF7BA30C +:10B36000C42EC0F39753F8EFBE28F916CB6764508C +:10B37000BEC515420EE2EFE994D8C3F9CE5F7EDA7E +:10B38000B904EF8999B9673DDD573FB3691F7DAFB8 +:10B390009E815501CF6FCAF6950E1885F770843ED1 +:10B3A00040F9BA7CDA1B43E83E616B17DD4B6E1443 +:10B3B000E7BA808F9C0B90FF1C06D2EFB5CC47FEFE +:10B3C000C62CCB2726BD0EE36E6EF243B4F2BC61F1 +:10B3D0006C34FF9D3F26D1BDAFEDCDA0EF8025762B +:10B3E000377750E9E9D84FF9CDB59A3CE6FEECB98C +:10B3F0001EF9D51AB9E251F28C35E75C1F4AF0EA22 +:10B400005DA3F03C51790AF7A3F83C7A7CDF32C89F +:10B410008878D0C2319305C9AFEA0F9EB3719DD72A +:10B420009AB2F1778EF8FA2EB7BB06633FC0F70ADF +:10B430008E6FC0BF1ECFA57626737F62A78CF2E009 +:10B440007C8E99F6E362861DCFEBED7792B5F87BA3 +:10B450001FE64A7AC81032E13D520DC7F93D0A1580 +:10B46000FA7AD283E73B5C2C320EB85ED04982F880 +:10B47000FD2AA01737D28B239B0529EFF14F2FEF21 +:10B48000C4BCC7F5421F2AF4392196B5637EA54294 +:10B4900047405F6EA42F859EC2F9362FECC47C9B7B +:10B4A000B2011CAE3D315CEE75FD819F5BD2C2F9ED +:10B4B0009B014A5C560DEFA31709E7A3FF2038153F +:10B4C000B9A4E049914B4CC8EDDA1AD7B60D52B881 +:10B4D0003EA3CA45FEAA02674FFAD92EF7463FFDA2 +:10B4E000D18D6900FF9D33453E2A7029726E4FF859 +:10B4F0007E150117BF2F370C17BF2721A1E96992CD +:10B50000D3FA38FE3B68B3729C74BF4B42E779862E +:10B510007EC16B0306D27712DABFA3D4D184A6BD55 +:10B52000D4BE3F3E54F482761E8A9EE8391F99BEEF +:10B53000A3D51FE398B82F137592847E80FA3ECC72 +:10B54000523CD9A0F2037EA689BFDDAE6A3FD9B9CD +:10B550004AF57E8ABC5EF57E6ACE26557D9AFB2131 +:10B5600055FBE9256DAAF7D5E61DAAFAD85027D9CB +:10B57000DB479A2BC94F1F7FAA8BECEEA0F0E70F99 +:10B58000087FFE20FAF3C0972FA23F0FE5E1663750 +:10B590003D7FA5B984CA579B3D5476367BA9D4F22A +:10B5A000F3554F5D6D40FFA6A4B395ECFEDF67FA3F +:10B5B000D2506F4ED7055AE25C78AF1EB7CF999341 +:10B5C000DB978A7D70E7FE31AFA37D99F8AA9E458F +:10B5D000CB7DEB93840B7AE68988DB27547531BCED +:10B5E000A73941C481FE3F8BFE2018008000000077 +:10B5F0001F8B080000000000000BB5390B7054D7FA +:10B6000075E7ED7BFB117A9256425F24E0AD56C898 +:10B610007210E2E96B2144784848410E9F95A08E54 +:10B62000C0225E7F011B2159CAC44A9C997D7409BE +:10B63000C694CE28F54C8B5B3C5D91312113774647 +:10B6400076314329E0B5E3DA4ACDA46BA3C438557B +:10B65000C99A24141AC12E981833F68C72CEBDEFF5 +:10B66000B1FB1614D9CC74359AB3E7DE73EF3DF70E +:10B67000DCF3DFB512EC72E60074CA52B8A00A40DF +:10B68000516C007900DD809F1A842EB0E7E622EC31 +:10B6900016D420B0711D7268127CAE7C80BF02FE91 +:10B6A000C1F1B01FE99D12E8B49FA889F075A2CB43 +:10B6B0009D2D4103C0062252905E06988F749BE434 +:10B6C000513B7801368EFD75EFC3380EBBF47A5FBF +:10B6D0000611AD745FA80010F4DFD8A616024CD195 +:10B6E00067F9ED104002A2A3CF94487CE3977A80DB +:10B6F0001F0A6A44437EF56C497D1987DAC4CAACD7 +:10B70000686562DD9FE6DB189D89AFF3AF06693699 +:10B71000C0DAA02E66D601C4DF07F520EEB57DE8BD +:10B72000133E2EC11EBA4F1FEED54472724BE17B01 +:10B7300032711E7ED44AF4DBC7152697BEC69D958E +:10B740005045EB3E65EBFA560A1F3B11EF1BBA0E54 +:10B75000522DF1F14A90E8AF9D05D589F4F74D8659 +:10B76000A22FE0398DF1E1D62CC4977E110A12ACDC +:10B770000E8F82E432EE85FFB563C740AA48E0260B +:10B78000DF2702DD20D9014E05FC0C86035B415A00 +:10B7900000F056A09FE16F078618FE4E4067702CA0 +:10B7A000B087C1FF0C0CB3F9D381FD0CFF6520C439 +:10B7B000602470988D3BE6037BFF76C5CD20B8569C +:10B7C00028BE45246E0E137AA1E890A417DB0BFF68 +:10B7D0009DDD7B26FD984E1F00428A80FB6DAA707E +:10B7E000C15E0FC083306C5F8AB07B8BBE68A77070 +:10B7F000F77AB111FC7660503A1FC5711B0830858D +:10B80000FB6E90CBEC88C0866EFBF96892BCD78348 +:10B810005F25FAAED5D67130D69BFB3AE62B4C8F1E +:10B82000C456111AF1BE4EF169B55FFEEAE7399CC4 +:10B830002AB38399CFE3EF622F0418C2F3ECD9BF88 +:10B840003E14461676C9E3DF166D779043AE14BFFB +:10B85000B5BE14E0D522BEFEABF207A0DAE9DD6783 +:10B86000E2AFD5A3ED55EA894F37938BF99E8E85CC +:10B87000FC3DDBC4C943FF44FA7F245D7592AD7E75 +:10B88000312500EAC7775C5C0FAE475A0BFC49765E +:10B890006ADADF686094E9E56B81630CF6B93F61B1 +:10B8A000F63429D81EF255DE7EEF3E1BF85FC3F159 +:10B8B0001A27B8049293A7E525E2AB4D6C8E687405 +:10B8C000BE5B62F6379DFEF40D5D65FB4F3B8FFB63 +:10B8D0008FE23BF79DAC773F2227C6FF47118C7B59 +:10B8E0004BEE0BAE845CBEAC9E2E8B775BEC7EF990 +:10B8F000677E8BDDAF806D96F956D7D316BCCDFD34 +:10B900003D0BFD370A775AE63B94E72DF3DFACF8A1 +:10B9100091055FA3BE68A15FD7386299EFD47E6AB4 +:10B92000995F2B8246F25DE7EF60EFB409ED95F485 +:10B93000EA4108337DDE0C51863F842A40F0615095 +:10B94000187C143407CD3F0E9A9FD195F8CFD0FBC9 +:10B95000D885A84CF3978F7E5EE647B98AD9E3571E +:10B960005E80DBFDDC97F56BA63F33FDDB6E076C7D +:10B970001D45BDD895EDD0492FED793923A227F18A +:10B980001E7F30E2DE74F613ABC607437E63AFA7BB +:10B9900003A01EC5326685047C72EDC4BB67852A90 +:10B9A0003293721BF9B54143469A4B0E8B385EDBDE +:10B9B000A3FED720D2C369111690DE837D3279DFD2 +:10B9C00036095D2CF93F49ADD8BC28717ED086FC84 +:10B9D000A21C0E237C15F9CEEC894A4A92BE8187BF +:10B9E000F3BB62E34AA0F826F56800389FE9062D0C +:10B9F00084789B0BEAD268DF2F3EA9A47DD77E8690 +:10BA00000F867ABDD70E617AB782C66A0190EEC5FD +:10BA10002C4DF0A0FCF5E79AB32FA05F05F413536B +:10BA2000F36FC76B4441A37BC73BD242073DB7EBE3 +:10BA300073B6C1CF76C33E6A6683AB90CEF7932CC4 +:10BA4000515E1DF71EDC8BF2AAF0E41876122FEF80 +:10BA5000A2B882E182D699717A320D985DAF3F9695 +:10BA6000860139B17F89279BD1AD775D67FA668EF4 +:10BA7000EF18BA69B1D71D95FCFE3541A5F669846A +:10BA800083143B96E0FBCFF1CDF7E0FA6DEFBDE21A +:10BA90002856E8BC03DFFD0DF9833199FBA3D37968 +:10BAA000ECAE3101BA4793E4BCDE75959D07306278 +:10BAB000D18F336B3EAC227FB5FE48BA4EEF6CF2AD +:10BAC000F581A02C223D36FD57EFA94BE7A094FC51 +:10BAD000D5D573CF92FC5E771AF9C54D363FE0F5A8 +:10BAE000D791FC5F1BB331F9F676380F925E82A4D2 +:10BAF0002CEACA48C82576C9CA572A7FE679265F44 +:10BB0000938260F18F2B8CF779C988EB9733D5CD71 +:10BB1000F42E978F16DB7421317E263B52952DFF34 +:10BB2000FFC5F94D60E47DA3C1456E64091EC3BC29 +:10BB30008FE9C1DDC577537F4003C58D7C08C67989 +:10BB4000809792105F66E0C10C0839905E90DFB973 +:10BB500049F6BACC8040468074CD06FFBB857E2076 +:10BB6000FE5C30CCE05E4155082E177C12B0F342EB +:10BB70004C7FDBA1BF84C6832BA2413A54CA8161AA +:10BB80007131C0C5DCAEBC9DC4653EEC06C42587E2 +:10BB90006ECF27FBEFCA525F5612F25A6F9CB71551 +:10BBA000FF9B512E52362812D26FC57CD38E72DD88 +:10BBB000B065E3DF5612BDBB99C9B1CBB807AD2361 +:10BBC000393E70BA7F0DC5EB6FBDF977BFD470FCFD +:10BBD00052CE7003F1F37F918355FF82344F9E392B +:10BBE0009149F3DBC39176143DEC8038F3BBA6FC9E +:10BBF0007B20C2E0B721CEA01FDC6CFE1150197C67 +:10BC00000C7C0C3E01FD0C7E5474A0172D003616E2 +:10BC1000ECB35F87841C9ECADED540E7B85BF62F85 +:10BC200020BDD35BA082F2A02157661560427B2322 +:10BC30008DC3CE6C5917B3D83CF39FFAB9B45010EA +:10BC4000F57C0DF85F20FD1FB7F7DFC7E5DBBF9878 +:10BC5000F42196ED0001E96379DC7FE89721F43265 +:10BC6000CA396637D65F55185ED75AC3E23ADC50F8 +:10BC700058BEBF94F2125722AFA95B6863EB618A8A +:10BC8000D32F8B4B963CA66EB18DED079FE3BC87FF +:10BC9000E2AEF417F39C0DA5394CDF96D0007EADD3 +:10BCA0009B6DEBA7B8C23E784EB0307F84F21D1377 +:10BCB000772AEE11F27BEF7978DD11CBB4313DC1FB +:10BCC000CF065703F1CBDF75E989F70C7DC4C22994 +:10BCD0009FDECB1897C26FD2F80E239EA01766F98D +:10BCE0005F33E927C9EB98359E40E14289D6371981 +:10BCF0002C98F598807BF5E4903E47447ACFAF438B +:10BD00009C410DDC2CAEB580CAE04AF03188FACDFA +:10BD1000E02A1866F07E18657035441884AFA96A69 +:10BD20000D9E6F7385458AD7003F705FC0D0081D98 +:10BD30005B6C531422BF05FDA3F2CC72B96CF8A55D +:10BD400099E58206DDF065E4E2E7FCA5CAA5A482D8 +:10BD5000D9912917531E69102A24392E83A84870B7 +:10BD600039F038BF02CD91F056D018DE36A33CC270 +:10BD700041C0FB3546FD92BFF20EF268E57A62EAF9 +:10BD80004D9B2833BDBB26E78F38719D526A33E245 +:10BD900022AA2EBEDF809BDFB3012AFEA119E9EAA9 +:10BDA000C7EC9851031C0F68F03BB4816B98718409 +:10BDB00069FDB8A8EA48DAF45828E842BC680FB828 +:10BDC000E96ECE421B28497A9CA6CC0225299F4BBE +:10BDD000AFC8B1E04D6322AB5733D4399675598D56 +:10BDE000A5163AB44F91F83E1E05F847E4FB08D972 +:10BDF00037BD9BAE452A1B12FE365BFB9A659F65DD +:10BE000091275603C6F3D9AB6A2CE3709DDB5B2305 +:10BE1000FED13B2D857EA6D74D93563B74C2BEAB5B +:10BE2000940F34468781F42D6D3CC92E695E6EBF38 +:10BE300044FB3B21691DF2373451BDEAEDA47DC2BC +:10BE4000A519B92CAF298112B267F33D52FD3EFA14 +:10BE5000B742F24375E92D9F50686C2ECDEF9430B8 +:10BE60003FA8AB6D19F422BEEAA087E34B5BFEB599 +:10BE700014F1FB0F96754A4BC89FB4D4DA55809DD8 +:10BE80003B1774AE443CF83EF77FE02AE7EF6AD4F4 +:10BE90003BD7E4EFAA6E7ABF125925BD79CE8177E0 +:10BEA000423E5C4E0E452FAF2B8F0790FE9E049FA7 +:10BEB0004E27CF17915EA7FC2EEFA2BE91FA0E7609 +:10BEC000AFC2F467DEAAF05B76856C4CA9A57ECA8A +:10BED000BC397EADB43EB13FF2414A05C5061FE60E +:10BEE000BA25B24323F941AEA796EEFD9D39BE3681 +:10BEF0005A17CB7031BF6DD21D36F2D225D2B03871 +:10BF000028D338F0BA741A3858AAADA17D52C74D5B +:10BF10007B1550B83D942F3CA9BA24E6FF9BDDB7B2 +:10BF2000F24EA45DF2982692CB6FE8EEFF39C13E47 +:10BF300031FE04E9474FA97F13EDDBEBBB32AF9A2B +:10BF4000F2F33FE00549CE50C2ED0EB8BF3E79EAAC +:10BF500017CF1673D407497EA5EFD4CD4FFF1BFD35 +:10BF600050DF355925F25826BFE7D2132F0E32394C +:10BF7000806CF1A3A61F6A3AE60C931E2E3D71EF6A +:10BF8000E344B7ECCC8497F2BBE513D120B5AF62A4 +:10BF9000273F2CE6F66FE433DA0DE16EF219F40F69 +:10BFA000CCBE077E25B27A7580121BC25F15423A5D +:10BFB000EA4BEF98FD63279EFFBF469C454F2E1727 +:10BFC00035F07C82DD0F229924A7AD071E5D4DFA66 +:10BFD00001215EBF2BF8477676DF59AB7DF58E5A8F +:10BFE000EBFB3EB237EA5F25C7BF3BD8D35EB22733 +:10BFF00012E05C98CBF8177BB2FC77C8534D7823DE +:10C00000A0AE7A1BEBB17DA00DD3FBD54BA0915F09 +:10C010006C137FC0EC61606E658D932571DC0F6ED3 +:10C0200049E3F779B04460721978490499E84E3AC7 +:10C0300042643723E8361B497FEA9E677ABDC5E034 +:10C04000CDB49F6D7B0450B03E8003B3994E2D3E1E +:10C05000E4647A3E72C8B987E4B2F850814630F899 +:10C06000C3593AC59FC50E5E7F04D3E27304CA3339 +:10C070004E3A6C9417509A20E0398B4BE3A594DF2D +:10C08000BC61F8EBA091DF80526EF1DB0319E5058E +:10C09000548FDD9A8F4A16FB0F1A75461DF147F52E +:10C0A00045BF9DD58F03699CFF37DF7F209DF2FE42 +:10C0B000D7255FBA5B263F5F9A0577E87798B03E51 +:10C0C0008CC2FF0B7D8BBAF17D11D2DBBAFD1297CA +:10C0D000478A9E511C714242EE89F85366893FD7C8 +:10C0E00080EBE1B5120851DD60BEA7193FF27CD6A6 +:10C0F000B853D06D8D3B457E6BDC29DE6A8D37737E +:10C10000FBADF166FE90358E78746BFCF0EE69B293 +:10C11000D02F186EB1E0F7ECBFDF427F6FA8CB8263 +:10C120002F3CBCC942BF68F411CBFCE2634F5AE616 +:10C130008FC328CB13A68B7BD5E1010BBD19F76A02 +:10C14000C7BE7FC7B8A7E31FB347239E37E23B5064 +:10C150005F6FBAF89716550B29DFBEDBF8075EC391 +:10C160005E8DF8F727ACE8C87F39491F44CA0F79BC +:10C170005E996AAFD3E995E977D11FAF2B457DEA88 +:10C180004BFFA29CF6EB755D99578B70ED984D2790 +:10C19000BD582BBB3E26FE51DF2AA45CD2A3592AF0 +:10C1A000E53D663CF21976B14E96985F5B9BCEED0D +:10C1B000661D0E37917DA7D477823C7653C8A43E86 +:10C1C0009590D2A74AB3F4A966EAA7D747C216BC8E +:10C1D0007A1C44F2E3F5BF578219784EED04EFCF95 +:10C1E000A7D69375517F90C2C47D93183614AA27A1 +:10C1F000393F4D9F8DFE9CE853EB1FB8B88FD59902 +:10C200000EC3AE52EBCE676C589F62BC7B46F4B354 +:10C210007CF486EDB63AB4506279A89FE5A51B8BF5 +:10C22000FC4D5EF43FEFDEAA4F791D0A300A14F789 +:10C2300063F49D82977EB05393A99EC2EF73D0B8EA +:10C24000F57FEED4292FCF0577B481B767E8D3E91E +:10C25000F5B7D37EE7055E0F5E5952BCBB16F96C8D +:10C26000A7788DE3053DA3E0E7FDA26F78EB6FFFB4 +:10C270005D2515A6F66D8F04C20CA657AAAC5E48C4 +:10C28000ED2FFD919858C2F6D5997F1912785FC6A7 +:10C29000A897371B728FDA80D7837BEDAC5E33FBB8 +:10C2A0000C3DC63DCEE3D456F4FB9B8FBDCBDEE305 +:10C2B000A9C249A37FD3AFBA71DDA325720DD51DE5 +:10C2C000A0D5AA5D96BE43B1F855E2F44CF77FAA1B +:10C2D000F092A54F05AFF0F833FDFE3AF3C749726F +:10C2E00060FB9FEFE0F1EA7C47710B6426EF7F85EE +:10C2F000F5BD36F7BF6FD1EF87863EB2E8F3C3FADC +:10C30000C796F9686EDC5E8CF78F1E2D6A7F10E58C +:10C3100079F9756703BD07BEFF2E6F527F2BDA7167 +:10C32000EF4AC8FC32F7FC23E363221061EF6BDEB7 +:10C33000F35CE02CC3A3812883A9F734FB042674A3 +:10C34000BC05CC2FC485592AF51753EDE7199B7608 +:10C350008EF4BEA4AC94F77B80EBC1338376564752 +:10C36000A226EF7F18F11B0FA457EF456C62457EA4 +:10C370000BC5F589B90E89C3728E1735BA38DEBE82 +:10C380008A60CC2EEFA13EC384C0FBD9F717F95FBA +:10C390002639F43D19AF227BBB9217FFD486E7B64E +:10C3A000E7F80FD3B880EEAE88F5BDF472CA932FCC +:10C3B000DAF42A016DFAC68F3F67F9FFC559FA15FD +:10C3C000403CE6BDC1EA838B0E6E87BFF57EC8ECAC +:10C3D000EE57B8994479C57181F52306B3FD47C876 +:10C3E0009E86ED10A6FBC4FF4D18A1FB831C759023 +:10C3F0007E9AFDC8981D21F501D3387CC3CBF3A1EB +:10C40000B097FFEE60C25E57D441F1E16F0EBCE61B +:10C4100023798DD8149E774348A377DF71EC696642 +:10C42000C7BF35ECBA4DDC574EFDF06BAB9D40FEFF +:10C4300018F9D36C645FA79CCCBEF2F1AE9447FDB3 +:10C440008783D71D356F38C34272BFD3EB61FBE7DB +:10C450007AD143E3BADC6FA68582F41ED1C8BCCE84 +:10C460000C76AF877CE46FC681F5372F531F98F7A2 +:10C47000013407E25D470B585FE0032FCFA77A7FB7 +:10C4800071FE1CF13FE0F5FF9AE47DAB9F0A910B32 +:10C490006E2FE38FD51F4E1176093933EBA7D91FC5 +:10C4A00035F1336B9E2B277DAF1105C6572AFD67EB +:10C4B0005EDE8F98B0F33C9035422D7C6BD536EA2A +:10C4C000D37655323F32BB8CCB3D554EF6322EF7EC +:10C4D0001AACDDA80FEE9C8531BB667AB95F7E3C55 +:10C4E000F2F79508AF64280BC8FF9AF746399C25E8 +:10C4F000FD30E56DCAC1DCC7E413CFF7D3EF0435D7 +:10C50000EF9DB617E0BEDB7EE6A1F6CCAD7B997C55 +:10C51000EE9EA34D79937EFF46FD62EFA277A4B114 +:10C52000F7EE3DF5D1B96771DDB69F2CAA253D31F7 +:10C53000D7A5F28B7CCE25FE3EB085597F10F994AD +:10C54000CBF2A88FFD413EC9D7E4F76EDF2736371F +:10C55000C27E2F8A8DDC9CA7E0FA5EE377965EA30D +:10C56000DF0347ACFD1D94AF4EF56D6A5C014A19BF +:10C57000F229BFE1F1C369AE2F912CEBBF37CBE7B6 +:10C580002DC37B1E35FC01D287C8EE29EFA0F872BF +:10C59000ABAF6CC4A37AC3050967791FB99E202588 +:10C5A0000495592C1ED599E7215FA40FBB059DC5A5 +:10C5B00071B3DF1434E2B6F8E820EBC335C2308340 +:10C5C00036178F530D25B22AB2438D3ED2F3EFB00A +:10C5D0003AF2CF3F65DAF7B021000000000000001A +:10C5E0001F8B080000000000000BFB51CFC0F003C0 +:10C5F000099FE142E59F1043E573A0C92FE444E59C +:10C60000FF6047E5B7A0CBA3E12646FCF284F00922 +:10C61000A0FE8B407C0B881F1330CB9708BBF6998C +:10C6200042E854203D1D88F70371872E0343B93E2D +:10C6300003C34D203D5D9732F7A2E37E6DEA9A3742 +:10C640008A49C3932C50F9858E0C0CB39D1818EEB3 +:10C650003943F85D48F25F8062458E1076AB350352 +:10C66000431990DF6481DDDC36A07C39509EC5051E +:10C67000C207009B5EE59168030000000000000017 +:10C680001F8B080000000000000BED7D0B7895C5A6 +:10C69000B5E8FC8FFD4A767676C24E0810927FE7A9 +:10C6A000014113D884F09062BB09118306D9282A6E +:10C6B0005ADAB30354908746A535B6D4EC900701F7 +:10C6C0000306811AAD0737905AB456A382458FF6F8 +:10C6D0000641C56A299C23D55ADB1B5289B1A55E48 +:10C6E000B4DAFA7D570F77AD3533C9FFFF7941EBE7 +:10C6F000777AEE776F5A9CCC3FAF356BAD59B3D696 +:10C700009A351397378BB16CC6CEE1CFD718DBE8DB +:10C71000600795498C79DCA1A39506E419FC5CC2FD +:10C720005823A6A3E05F5CD5D934C61218FFD132D6 +:10C73000D5532E1F636714A89C061F3252A9BEEE64 +:10C74000AD6251AAD1C2D8544C0D6724C99C8FB098 +:10C750004811630E278BB617325627FBC79F00631D +:10C760002E7F68EF6685B131CC49F5F5803BA6C1D7 +:10C7700038BABF8545BD385E740CF553C12CF03016 +:10C780001666388E23BD20390AFD322F8747CE4FDB +:10C79000A60FD7544DD4F34D79075BDCEEC5F67187 +:10C7A0001ACF71378B8F80F1D8E7D7185717F5D587 +:10C7B00073281C4E996FC37685FDE16EDB363763B7 +:10C7C000197C9F22E0B7C329DBC33CA6D0FCC4BCC4 +:10C7D00024FC6DDBC671F8038101E177B8EF98A8FE +:10C7E0008FE883577E6F489B66440B0522D219FE63 +:10C7F0001F50CFD87683B56840D7F40A3586F49AAF +:10C8000050668C5A0A452E85D3F7F79E6819F6E3D1 +:10C81000548D5215BE05DBD80607B46B10F3BB4C24 +:10C82000ABF074017C3B2239C94B215DC514A2B722 +:10C830001DAED61A980BE0F59E1A37A57FFBDD7862 +:10C840009A87BD9E4C1FA8E92C32D3E181E88E79EE +:10C85000E34A188B05D4503E8C9F51593FEA26403D +:10C860008163AC51ACE15C562A3A4E2A41E1F35A5D +:10C8700022E0003C2EE17C25E81F90F804784C78FB +:10C88000F08423617FA1090F2C125660BCB47D2C6B +:10C89000D4C1080FDFC27E7202307FC80717B5947B +:10C8A0009AF100FD7BF2019E9DAFE5176F36FAE02D +:10C8B0007E94A99CFF33039C8FF55006C2619F2F85 +:10C8C000CC8CEAFD00F0548803B07605D7C126CCA5 +:10C8D0009BF090CFA2DF4138C62C4E886913215DB2 +:10C8E0001356713E0D8AE4D30C86FC54DFCBF7D18E +:10C8F000477F44FC973E19E1DA20E17948198CEF33 +:10C90000360CC477631647C22AB4BF488936627BA7 +:10C91000ADC048C1AEDC6B429436CAF163EC38F668 +:10C920003B52D041F27F9261EC41FEBF1FE902FD14 +:10C930008F2C6FBC4D05F8D3CBF5980BD2919D95FC +:10C94000150CF0EE7E77DE078C7F27F93166490BF8 +:10C95000A29F651A55B588EFA4F96D61EC7AB412FF +:10C96000BD9FE0A88AC5CA689CA88270EE7444186E +:10C97000D2D1312B168E003CAD95D358A589CFF678 +:10C9800021B030BE1660E178611F1FFC40E3BF6F2D +:10C99000AF58EA595188F512084F17B192B0DF8BA2 +:10C9A000FC006C00FCE0407E30881F7E8CE5C66297 +:10C9B000E3256C170CB4942A06AD8391C8D700C741 +:10C9C000286CB7B3D2B938CEF1F226F1A72AF062BB +:10C9D000C0FF004F1E91BF953908AE048117370B79 +:10C9E00031960BEB6E624B5805FC0596B09001F545 +:10C9F000126C78D242F11896A7AD61A13074A519D6 +:10CA0000D1D9E3387EFE0DFB4B622D614710EA1B46 +:10CA10007186E9037AD5FFFC3ECCE381A35A28C690 +:10CA20004C7CC9802F4DF26CF472587F05823758C8 +:10CA30001F7F4AB9E067915730BF370DE487CF2495 +:10CA40007F84DC66998BA85E5675E89D95304476A8 +:10CA5000206332A158F7AB8887BD6E3EEF3EFEDF04 +:10CA600040F38FD7C4D91F1CB84E3B15E43F2316A3 +:10CA7000213ECC5ECF54C46B56F559055359EEA8F0 +:10CA8000D68CF746F4CDA3A1F9EA6486E5EE908A48 +:10CA90007C90DB32F92577807830F4239A47842D17 +:10CAA0004AC2A155D601F3FB09A4E7827DF2326B9D +:10CAB0007D02EB70F7CDDB51EDE4FDC7C287F200DC +:10CAC000EEF982A5E70B3AB012C77B9D124F3934BD +:10CAD000C1BE3C4CF8CF77C17F506E4D56E23F52FD +:10CAE000FA9757083A56E077392EC0A3298AD80F0B +:10CAF000F97AAE1065870FBC356E0ACCE7584863EB +:10CB00002EC4DA81579BA740FFBFBA04F286A05318 +:10CB10003AF6C7F1FBAB200B9761F954251E837ED3 +:10CB2000E7CFD04EE17AAB98B5F123941F1508BF3B +:10CB300069BE1F1EFC8B8EF8BD7596F57B32C29EBA +:10CB4000460CC3FB17656B8B35EAFF588912C7A5E6 +:10CB50007DE477EF6FFD0AC0F7C62C2584F01D0B2E +:10CB6000FDC1CBBC7DE3F6E2CB607EC4977D1CC9E2 +:10CB700067403092E7A902DF690C967D2EFD4AFBE3 +:10CB8000D70831BF747F95C2A09F8C192D87F812EA +:10CB9000E6741C1D6E9FAD436E67D2B8DFC4092FCB +:10CBA000CCD0A711F40C4500D02126C655CEB950E3 +:10CBB000BE8000F761397C97F4017C8D5C63A2171D +:10CBC000FC4B5A6CCD7B0AAC79CD4CDF60DF7C240A +:10CBD0009F7B849EC0C25103D75B93127B1B977AC5 +:10CBE00073D3FDE10A582F8E4EC67C0194037A3C24 +:10CBF0008E75F3F83EAFE1BC01CF4919CE78077CC2 +:10CC000077837A761CE58ADEE246FC3A0A4261CDF9 +:10CC1000E89B3F5B974A7C932470BBA9A43805D757 +:10CC200085EC0FE4A565BDDBF721DD7072BDCA6838 +:10CC30003ACE539DE8E7023D4D09D23E51AE209DCC +:10CC40005A9401F52C39CE60FB7B1F9D59810EF360 +:10CC5000BA932584707FA89E55FD76143E1E66D13A +:10CC60006BB07FC7ACCE5A9C57F257ABB371BDFBCC +:10CC70002E6655285F167F6509EB8634231089756B +:10CC8000C3F76A45E3FD9DCDA2790B71CE1C1D371C +:10CC90003003F77D6F281C463CB1C9B42F807CA0BF +:10CCA0007495C2F783DB455A2DD75D9875209FC9CF +:10CCB0007E70FF477872C2FE521DE0D1BC5C1EC977 +:10CCC000FDDF3EBF9B453F1B93BE9321F48D33D8C0 +:10CCD0009F53F4B771EC4DEE81F41FBF128D2926DE +:10CCE000BDCD991122F9F715D8F709DF796166866C +:10CCF000CBED6D61C8E7AB14BF653C1DE41CAE17FE +:10CD0000DF5796D038FA2CA92783FE5D48F45B459F +:10CD1000FD2DB6EA9F9E4098D647127BC8DF9D48FE +:10CD2000BFE69D83C586B843FEFBB8C41D7701FDF1 +:10CD3000933C20250108AFF21E8D83FB19EEA3C999 +:10CD4000D809ACC7CD35C78B7407F6C3D80C60C5FE +:10CD5000A490695DF1E4CD3C1857A862D0AE773D50 +:10CD6000D2BAF17AA35CBE86F87A72C3FF505EDC59 +:10CD7000099F66A6627DFF21D4479367E816F9E113 +:10CD80002F08913C48095BBFCF058221FC2997A958 +:10CD900071DAC358B8223FBD6FFCBF797C1311789C +:10CDA000942B49D07F4A1AECF358FF24DF2747D849 +:10CDB000E4B309BE2E840FB773842FB9B033A652E3 +:10CDC0007D90861AC1D7658663046BFE08E900F082 +:10CDD00059BEE3BCBE5ADC373E8CD7651EAFDACDF8 +:10CDE000E1C37AB3A0BCFADD8F8A8E98DAC74A59BC +:10CDF00041154CE6392529D07D314306D0717FF9A4 +:10CE0000949D0997E3BED49A49EBC2E7E76DBCEE67 +:10CE1000E3C444290827D0EF6F35678B8E98F44C14 +:10CE2000A0D7C7167ACD107903E425C7AFB59C65A6 +:10CE300012BF505E2378F8BEF77B4FBCCE04BFC450 +:10CE4000F39D5ABC5CC171D57804E19076A2C71DF0 +:10CE50000E73BD91F3E979F4D3F425F5731445C845 +:10CE600070FDD8DBD9FB857AD351AE423A09D3CDD8 +:10CE700079D05F2EF65345B851F430F5D3ABB708EF +:10CE80007DC829F421873BD21484FEB4373516833C +:10CE9000BCD63299F4CE5EFDC5E0E33903AC6DB388 +:10CEA000D45B4CF2CE53A05AF4173D3381F49C5E10 +:10CEB0003A2D8E2938DEB7459D5EFD86453B504FA5 +:10CEC000D7818736334A3B703F448985ED71C99CD1 +:10CED000A3FDF77B349E6CBFB9A098E4935D8EE907 +:10CEE000D80EEAA018E4FBA0B5DDE0FB826DBC45DE +:10CEF0005678CFBB9D5737BA659B9CA1DAE9ACDB6E +:10CF0000A48F65E3E245F9FF399403BC955840F3DB +:10CF10008E65223DBBC01EEB007DE1533DB604F1A2 +:10CF2000F5A9E16200213BEAF03766201F342806AC +:10CF3000D2A9B279E1022CAF7C530BA841411CC8A5 +:10CF40001F0DCE23BAE5AA5CDF677AA78EFB65E5E5 +:10CF50008CE05C94B1E57743BF48EF1C97F223A8BF +:10CF6000377B46ED726C7795718303E5EEAB8FD717 +:10CF7000D1B8AB8CCB75946313B11FE0D33F3FF6B0 +:10CF8000D43406F01DFD6912EBC07D5E8F3B71BF8E +:10CF90005FB55F233B67F59349A43FAC7A7AEDDE3A +:10CFA0000AE847F95912C153FEF48A475C045F1D31 +:10CFB000F5B3EAD96B92EF43384F6A6033405ACBEE +:10CFC000F7B7B5306737B43F1B74EDDD13ECC39F83 +:10CFD000C487CC2F6B0E3666207CFB82A4EFCBEF90 +:10CFE000AB74F62F11E8A712D2AB07D8F716A9DC5D +:10CFF0002E3D13742D4678957D87BE49F36CBFDEB8 +:10D0000081F354EA539CA7013FF304DEA01ECD2711 +:10D01000F6A812CF87F2338F2A7C7EED45BB3D41C7 +:10D020001C7FB77329F9956AA93EC0FF2FB8DF2F7F +:10D03000DB176C1C0DF59635058368CFCE79F2A70A +:10D04000BE4E6EE77A15A0F72D628DDDBA4FEB402C +:10D050007DE796FD6B49CE439EF49FD54FBEF86C9D +:10D060002C09DB6B9675754BFB3D24D7573FE3A22C +:10D070007DE38F6F6A210FF673D06191F37FCC78D7 +:10D08000CC877649C91B56F98FE37E964AE3543A1A +:10D0900093FBB703CC3B91FF6E6DDF44E3DCCAF832 +:10D0A000BE43E530DF3FE22FA3FAEF0BDF53613FD2 +:10D0B00040B93C9D4D47FE5EA345923B90DEFB464A +:10D0C0000CA89FC97D40EA67600FEC8AC1B8679ED3 +:10D0D000FED32E9CF7D12FFEB2EB7B88F7173D7E57 +:10D0E000E4F35B1F3BBDEBBB90FFF341978AFCB2BF +:10D0F000EAB10F7E8FE57F7D6E7C2AEA6D3B55AEEF +:10D10000077D18FC5B3AEA61EB5EBC6C24F2E5BA81 +:10D11000037346B201E4864C3F04BE8ABBCCEB34B9 +:10D120004EFD1807A1BF91907D41A436BA1DDEAF18 +:10D130007578816FFEFCB68BF4945BE15B35ECABEC +:10D14000B754ADA8403B0BF3EB01CFB73CCEED9FFE +:10D15000FE788E8D513330ED1883A6D72DFBAF5955 +:10D16000706909A68E9081F365671BD1AEB7B7EBE6 +:10D17000A5DF9B40BF49FDCB6F651CEFB7E2FE3FCB +:10D18000B13FFDFE8CBF5CD29F7ECFA8623F17F4FB +:10D19000FBEBA337247760E1FE11167FA39D7E6B26 +:10D1A0000F5C9B3C905C36E3B7E33CF0BB52D8FB92 +:10D1B000B56AF8B08AEBF3E99F3CF220E0F7C3DFF1 +:10D1C000B8421580900F7FFA69162A793D8EB3DF39 +:10D1D000C4F577F645977F0FB459F5E25BCE30D0B2 +:10D1E000F9C303279C06ED87A02A821CFF90F5FE59 +:10D1F0001C47B97E8BC233B7B62575A0BF47D2E9AD +:10D2000096F8C272C347DFC90F744B9CF3FD2DF132 +:10D21000438B9401E8F6BFD51C2E4FE3698497B584 +:10D22000C671A7DF6BA5A73203E9786A2EF2DD602D +:10D230007494F3F7E3FCA79BE8DA36F4BAFC70B712 +:10D240004B5792FBE8FBA1F01BDF1A57DE6203ACE1 +:10D2500057E9EF60DA9221E964E7874F6DEB59B641 +:10D2600097F31E6E3D0F3F9F0BC3D76914A269FD54 +:10D27000F1567B1997CFC7822ED2B74F388CFBEF70 +:10D2800040FE78CDC1F64093AB72DED78D01ECCF76 +:10D290005F015F1AE3FBF291191FD58F80769159D8 +:10D2A000B09F187D7CDA5B3E4B6386091ECDBF378D +:10D2B00082FACC60F8D47C6EF21FB1B0DE8DF450EF +:10D2C000519F55FBF023FD1BD15E360D53FE5BBD18 +:10D2D0007950AC41DEACC05F019ECA708913F58302 +:10D2E000E52CEAD4811E2B590BE557B1764AD7B00D +:10D2F000E394BA320D27F7BF97F9BB494F59A39D65 +:10D300004B3C7FBD44C2774C31EE2D03FE7164303F +:10D31000F29BBE3C8AC5715D38C7BC90897CD00C3D +:10D32000F86380BFC61A3F1AEBACA92683D2DE731E +:10D330009430288800FFED7E0E3FDBF7D8638FA581 +:10D340000B1507F0D0002A41BB891F0F0B7A9CAC4C +:10D3500071535AD6DCEEC075ADAC79CA81FBE6CB11 +:10D360004AFBCB7EDC0FD62AC5C2BF76591AC887C6 +:10D37000DC663FF9C15F177EE1DCC593D5A5A67DCC +:10D38000FFEBD80F7CFFFA9AC9A3717FD9FB8536D2 +:10D39000A01D5DAF713F7EED1627E9A7BB6A19C9D5 +:10D3A000F55D97B8C672E32D83F4E799427F3E326C +:10D3B000DB35761DD4FBCD4A2D84FEB0DFF4DC973F +:10D3C00084FBCDA1BB7E307F1A7C9FF926FF3E18DF +:10D3D000DEF7A05C8479B6C17C513E3E0278C4FC85 +:10D3E0003EC023A68FD518943E5E5340E54FD484AB +:10D3F00028DF5E3383F24FD78429BFBFA69CF2CFCC +:10D40000D644287FB06631A52FD4ACA4EFBECDEEB4 +:10D4100028EA393FAFA9A2EF33632115F7C78E9AE7 +:10D420006A2ABF524B253ECF6D0EA951F45736B133 +:10D4300026942FD53116467FF21E47E70D11139D16 +:10D44000AED4B8FE748F485F56426A0ACC37960253 +:10D45000FA28CC3777D1E497904ED77A8306B27BFF +:10D460001F5D2A1DA585E74F8FAB35EE2729F36A8F +:10D47000ACC0A4FF5CB708F2A675786C766726CAC4 +:10D480008B63A07EB1D18C75D6EFAA8D417F8F9C26 +:10D49000059B18E1CA70903F748F27BA7902C0B516 +:10D4A0006B94A3640F54DD33D93FDAAC1FFEBBA0ED +:10D4B000FFEE14AE874E3FCCFDA9F10FC6EDD9406B +:10D4C0007BC77F9E3B07F4CFC2DF73D19924FC3723 +:10D4D00005FE04F3394BFC2EE187476709B47FFE54 +:10D4E0002E7F1CF5F0B8A2121E20652AE9EFEA1E75 +:10D4F000D4BB99A124A05CDF0D65C908DF06750FB8 +:10D50000FA4F9F17788BFBFD6AC8046716EBF55F2F +:10D510006824DF0D6638A7E17746FE10590EC37701 +:10D520009C137B1EFA4BA81CA69455CFFD8FA67E9C +:10D53000689F28889BF2F0EFE27D563F4A51BB3549 +:10D540003FE9A0353FB9C39A9F72D49A9F7ADC9A7B +:10D550009FFEB6357FADCEE98DE717E8FFCE167298 +:10D560008F199D74DE928D7E70904359317EDE9BC3 +:10D57000B55EB7F973ADFE6E862E9769E26808FE58 +:10D580007349A7B5BE21FCE186CDDFC29614A8661B +:10D590003B708BCEC82EDE328BFBB5E1A7CC13409F +:10D5A0007FB6E247B9F34AEB2785EB20CD6A053D0C +:10D5B0001DF6831FFFEB2B99287FE7DEA54670DD64 +:10D5C000CD0D767A90DE6E23245C72BD7856CF4DF9 +:10D5D0001F9C7E61102508CF962FF8FA4B9DA793CC +:10D5E0001DF571CCD8A305FBF03441D07895E0C788 +:10D5F000F9B31C16BC5664382C74BDF4AC15EF5F3F +:10D60000FBCCEE2F33F18176E1F909824EBB40AEBF +:10D61000E17EE071B6903CF4FC9AFBB7F2ABC32F0D +:10D62000A1BF3E8B9D9A8DF649368BD7613AB33AAE +:10D630000198D004471BA78B1B3031D07947DE8E71 +:10D64000F3A3273595CE7D139E739AC08E9F02F962 +:10D6500095733ED0F1BC6011DFAF24DD810EACCB01 +:10D66000CC17E63C8CFF4EC7A30ED42BB23EE3741E +:10D67000B7B7BFB1BA53890D20D7B23E73527D9967 +:10D68000DF05FB40976378397A372A2569FDE5E99C +:10D69000C417C1A085FC13B14E05D34977C5354CDD +:10D6A000DB7BFC2AEE47A10646E5936BA11CF2CF7B +:10D6B000544339EA079FC32C005EE93298F201AF68 +:10D6C00067D4772A289FFD31BFDA09F582D58CFA15 +:10D6D000F1C7E21AE68D9E4E0FD603F9D8A1045089 +:10D6E0003EAAF10D24DFBA368D47F85F56DB117E76 +:10D6F000C6CFC2D8F3D5461CFDED52FEB1E3F17B97 +:10D7000048AE02BDF13BCAD9049493B5AA90B35C6C +:10D710005ED1FA07399B1D53C39E891679A5925C89 +:10D720005BCFF9D6CD9A6A51AFBA5079F43CC25367 +:10D7300038BC5C7A49EC43A009D1F704B7C2F5B80C +:10D7400041E4D46C6695ABFF5572EBDFB12DC09907 +:10D75000EA30521492132A4379158F5DCDF576E1A4 +:10D7600067227A6BFDF97297D047643EBB9EEFFF4C +:10D77000F67A27E4BEC7BEC6CCFC93556FDC3B4BA4 +:10D78000E83D86817831B6E1795DF0A846E7D8C1F9 +:10D79000FAE3E548F7FC1295E1560BF050FB88D010 +:10D7A000A73C4ECE2F9E46C6E56C8C7967A7F78ABC +:10D7B00004160F8F48457D30BB5AB5F8430AE4F98B +:10D7C000689CDB3DD27F9FDF63F57B64815D5C10ED +:10D7D0004478ADF65116E293EF8756BB49E0AB773C +:10D7E000DF64DCDFF99F8807E59F2F677BE5BFE0FB +:10D7F00013296FA5FCCDAF8E2C9846F356480FC960 +:10D800008A313AE7CB66670FB9203FB385C79BFCE7 +:10D81000BF2E7783A8A7A13DF6D939D2EF664A7A01 +:10D82000F7F4C56DF0B82AFF6E94579F9D7A3F5E5E +:10D8300087FEEBD474B213EF947A4B89880B124DA8 +:10D84000E4386794E89D7A5AFF38973BC5B8A9F346 +:10D85000F2868C134B0AA956FA08BBD485716E2642 +:10D860003A788CD1967AD20E03148651EE66CCE4C7 +:10D870007680ECF7239DEBEF773A542B1C421F7117 +:10D88000087AD9E191769FB4F7B6E8C7DDDCFF618D +:10D89000D56B1CCCAAC7C8F65BBE882C267D46CAB1 +:10D8A000A9EA5405FDDABBAAAF4EC6F899190ED500 +:10D8B000E21777087AC8F67B6DFEA43C195F23E86F +:10D8C000D780F573FBCA4789FE72035C9E0D474FF4 +:10D8D000597F087A8E720C40CF2D3AC83FD413413D +:10D8E000FEE1798A948F0ED13E37707636EEA3D959 +:10D8F000EBC32A8E3F0EFE8D00BCE4355BE5597EFE +:10D9000000089EC37AE5A343C847BB3CDC55DD3520 +:10D910002F88E702CDBA81700F2A075B4D728DFE0A +:10D92000CBE31E736DE77E0E21071D83C8414907B7 +:10D93000C705CA4156602ACFB1F0C979C9B93CC6FA +:10D94000FD10C3CBC3F0499487174BFC087998D7D7 +:10D950002BDF3F22B9E76865A1B88172B0B316F337 +:10D96000D90FF138AB8D0AB7FB2E1678CC0E2458A0 +:10D97000D6D74A87D8F71E97E7C403CBC7710FD90C +:10D98000F7F718F975241F1495149796E5E0BCACC9 +:10D99000F11B8EB226F23BE696733DC1D16CEDC70A +:10D9A000BDDF9ABF0D3B9CCAE73BA2F8C2E1B28F34 +:10D9B0002FD7FF60FE0ABB1C92F284798B49CEA45C +:10D9C000CE5BF7EA58D4079B449C248BB9B2207FE6 +:10D9D00067BD41FE19606292D30E8F4084382FA933 +:10D9E00016F289B5072DE519A365DCC9590FAE9B61 +:10D9F00086F55DA477A6DE9573EF7836389C83F9BB +:10DA0000A5EECFFE7D39AE3B07E81FE82774E83C62 +:10DA1000EEF26FA794D00666E1278B5D26E5A05D48 +:10DA20009E0D27C74E08B9FAF7CAB1876DF59F1644 +:10DA3000FDE5AE3FBF7D49D61F428E3DED1820FE6D +:10DA4000F2FFCBB17FB61CE37A9D5D8E49B9349C61 +:10DA50001CB3CBAD0B960B027F76F990AD85FF8A98 +:10DA6000FCF271F9BA8D545DE82BA9B51B2EC7F3F2 +:10DA7000B8C1E4443C9633A45CB1AF57E97F5E0083 +:10DA8000FA911B44CB025826060C7545E6F117CED9 +:10DA900042E99FF4A8C709E5F313C76EC0EA1B1D4E +:10DAA000670314941066863F9D9FCB239F29071B15 +:10DAB00023A8973A5815E9037506EBD4C8F9BCC4F6 +:10DAC0008FE75C0AEB64E72EEED393EC706D44FFB6 +:10DAD00034ADB30EB293C9EF07FDAA896746A17FA3 +:10DAE00039D3A958CE0764CAAAF533BDF8CC21F8BA +:10DAF00063A807532C10DAC4977AC81F3951EFA4D2 +:10DB0000789832FFC232B4FBE78682C532B68251C2 +:10DB10003E85D6B5E68C8E77C2380BBC1795E17C76 +:10DB2000303E84E2DE06D1177BE190E70C61D6A996 +:10DB300098F61F5720A8A6B0BE79FFDE1329467CB1 +:10DB4000063359298278995698DC3904BD1E117123 +:10DB5000F5E8AFC7B8AB67816E9876809CC5744F07 +:10DB60008D41E9C19A024AF7D584A8FEAE9A19946C +:10DB70007FB9264CF99FD744289FCF22A538FEB8FD +:10DB800007CB47A31CAA73B295741FC316EF76A5E3 +:10DB900093FB67655AE13408FF0D3831F4A79E7096 +:10DBA000F2B8573D3CE6EA249EA27C98A41F3AE2D4 +:10DBB00087AA57BCDB49F32E6C6AAF4F827C7B91FE +:10DBC000A2B2498CF95E48E85080DF7DC5EFF7DCF2 +:10DBD00003E54F164127F0BDA8B5E508F2F513455A +:10DBE000203FB15EC1C6DB705DF85EF8F5F728ED49 +:10DBF000E8FE3ED2C3F5F959FF95D8AFDA317A3550 +:10DC0000D277A93784FE8F079F7786B1DC17FAE1B8 +:10DC10001D58BF90856F5C0D5DFB0A1FFD36C9372F +:10DC20003DA6F900EEC2883F84FBE383CE96391807 +:10DC30008FF9E4752C84E756BEC27FBB93DAB777C1 +:10DC4000DC85F5D3E355B3518627175FF2C3FBA0FC +:10DC5000BC75C2847BAE8434E3F9D64D98DE5BF4A8 +:10DC60008D2B8B216DC9DB7E02C5CC83996F8EBE57 +:10DC700003F2716790F0F45ADEF68A62E8FFA1358C +:10DC8000A9B43FBC96773805F7A989F91AF9299FF5 +:10DC90009EA5979BED836F3B799C638DD3C9E3343D +:10DCA000F334BAAF20E5AE3E8BC7CD3B0EF2F84D54 +:10DCB000C7411EB7E90954D11A84FDA506E9CADA9D +:10DCC000ACFB8FDC67EA9C7EE147E84C45FFCF81E7 +:10DCD0004CD58FFC7E20F3EA44DCE72165145F9D80 +:10DCE000C7E34A269E885C5904F06FACBA7D7A2D52 +:10DCF000F51349BC1EE0D8E04CA07EEE41FFC1D434 +:10DD000021DA7F04ED619C8D6BA0BDD1D77EB393EA +:10DD1000C7DF6F1FAE7D70216F5FB5CE32FE7DA273 +:10DD2000FD0FB17DDAE0EDEDEBE84101F781379FC2 +:10DD30004E41F9D8A6B4E73140C98B8D57D7E9B029 +:10DD4000AEAF50E3EF61BC2E73AE98B318D6694501 +:10DD50006F1C6E3881CEA3D6A5929FBA58C89A2B55 +:10DD6000D5F0E642E4BF5F680CCFC706970B6ADFC9 +:10DD7000FE4002C764FF533ED5961F6DAB9F6329DB +:10DD80007FCD29CEC3D945B67AC596FC9507C795F0 +:10DD9000211F5FD9915ECA7C83C3F7FA8B7CDDBCFF +:10DDA0008E6B988C71106433187B4691F91573CA89 +:10DDB00060FECF88F263CEB575B585544EFE45F84A +:10DDC000BED87CAE784CC8E977041F6BFBDD749F2E +:10DDD00045F2A1B6BFF138E6F50E277DD7DE709E7D +:10DDE000A27CE126FAAEBDD0487AB9C7DBCBD7EF2B +:10DDF000105FB70FCCD76C39F747B8C4DCABD9F19B +:10DE00001B492EEC50795CDDE3FC7CC1857A2EF158 +:10DE100021D78B0B7BEB579553FD0A9DE828F5E244 +:10DE20004251FFA7C00BC7715FD28F131F54B38E2F +:10DE30002B2EC638AE37548672E7F08EE2D7910F9C +:10DE40009E3CAA515C3C8BE652FB8952FF8AE7F369 +:10DE5000BCD0B393B3647FFE44E4D7FD4AE8F542F7 +:10DE600094A7F3749263727F96FC1612FDC8FD7A34 +:10DE7000BD8B9F1F3EF1426A228EBBBD4CA7F2496B +:10DE8000FA53246727FA6797A6183C9EF4F9629420 +:10DE9000BFF123F8BDEDC5712AB2E2EB499DF75DF4 +:10DEA00089F08E5543782E97CFB651184251B591CF +:10DEB000300FD274570AF53F717DECD5EFE3FCF2D9 +:10DEC000FEA2E279F0A4964F5E4A443C7530BAA7B0 +:10DED00095B74DD75698D6592853A57597B76D075E +:10DEE000C9BD8640DB4C4DD0E9C624ECD7C5E55A08 +:10DEF000263FDF36C9AD7417F273F3C0F4CDD7589F +:10DF00004CC3715F55E3747E57EE4F5C683AFF7BFC +:10DF1000AA1DE428C057F8D4A2DB5F837AF5FE99E6 +:10DF200053783C4178F4CDA4AFCF9A82F27E9C4BDB +:10DF3000DCCBF30FAA9F8F730DA09F7F5CFE8982BD +:10DF400078CB2E4824B99BDDCEF9F7A9CF0DADF7DC +:10DF500070DDB4EE26EEB7FAF7D426ABDF289B9936 +:10DF6000FC46A49F5AD7377BF7E2BEFA39A4FFF1EB +:10DF70007B0D42AFCF1765A93B55DA879F6861716A +:10DF80008A438C85BDB3A7F5DD637918F90850BEC7 +:10DF90005BE8B34FC5BA1214E2539D62375F794113 +:10DFA0000D75A07D26CECD1DF5C74B911FE5FD1744 +:10DFB0005753A48EE45E89C362174C7DB385EE91FE +:10DFC000CCDB6FF5F74A3DB6D8661FE489B8993CBB +:10DFD0009B7D608F7FB9D6658D7FD9FA5D8DE2ED2F +:10DFE00062BFD6681DB75DC262784F150D428AF7D1 +:10DFF0005E3A9ACE3924FD643CCC3217F7271DF9DE +:10E00000DDFB09C8B74FB48CA375B60A27497293D4 +:10E01000C781E48975F5744B0ED9B98767FE22A1D3 +:10E0200093F44F7E2FA748946F80EFC847CF00BE70 +:10E03000B18B1FED2F1E83F7B2EE2B7393B3CFB7C7 +:10E04000373206E31F0FEC16F7E474CE5F186B4B04 +:10E05000EB1FBFA19F3D13EC46A87F874BC4432A0B +:10E06000913B90DF54378F1BF6E5DE9681F6EDC6C7 +:10E07000A0C2EF1D0ED3CFFABE7ED69BFB91FAEF66 +:10E080000235AA73FEEC20399225F822CBEDE5F299 +:10E09000D8AE371FE7FB05E8BF1B5DA8EFA11E4FF9 +:10E0A0007EF8CE52EAE7FCF5DF98D97ECDF2DF1696 +:10E0B000B6EABFD1EDD8BF113036203E5D997EBAA9 +:10E0C000E7789988E3FFB89AC7810C36CE5EA1073E +:10E0D0003F2CF4E2DD421F3E8EFA703EDDA37C1839 +:10E0E000F191D5CCEF456455F37B9475CED062DCCD +:10E0F000DF5FDED83507F7FB0687BF18F7FF1F6F16 +:10E10000ECAA738FC2F8E0B3A330FFDCC677E7B8A0 +:10E11000A1DC57A7D0567C00F2B159308ECAF11F4E +:10E120007B8409BD97A59603BC139607489FCC56E0 +:10E13000FD5714A09C5AA5921CF7B5713DD20EFF55 +:10E14000C3C2EFE5AB3B751BD2FB3917D7AF9F13AB +:10E15000F494F9295AF439928B3AD37533FDAAA372 +:10E16000423EB58C46F93400BDB55EFFFF50F46EFB +:10E17000EBA5F7AB380ED03B1C50FAE8FDBCCBCF7B +:10E18000E9A9C33845E74FFF2C61770F66E7B93E31 +:10E19000BB182F49F7E6815E27911FB232B93ED0F6 +:10E1A0004B2F15EC122FC2C7EF1DFAB48555B8CE10 +:10E1B000DE17EB5BA69D025FCC6BBDAF04F2BC1318 +:10E1C000E7E5D1AB44103D97E7BE3AE8C76BC2AB79 +:10E1D000B03311AF68674ED14A4F63BB1E97D497D7 +:10E1E000ABE85E2FD3ABE85ED5DF8DEFCC5E7CFF76 +:10E1F00085AFAF4E95E2C718B74BCF17BF7DF7136A +:10E200008C7A8ACFFA2E0B81ADCDE678175AE2F5DB +:10E21000E5FE6FEFE7308B6AEE3493DCFCDD4617EA +:10E22000B65BC0603E84A70E8A5B2F1D619428A850 +:10E230000FC7DC656F80482C45E56634E65D657880 +:10E240002E589AC8F3654DFFA33E06ED4B31B694A8 +:10E25000F4C5DC323CCF2ECDE5E5E5A2BCD019F605 +:10E26000BBA75AE444DCECA705B9908EE539FE144F +:10E27000D25F1C017E0F6B38FB18FD353A75729624 +:10E28000C7AD54F37BAB712127C0DE3570BEE83FCC +:10E290001BCADE9DE0E67C24D38BD0184D33D9BB5E +:10E2A0008F4A7B373E9ADBBBF1D1667EA8665C3E27 +:10E2B000B0591EAEA7083D3347EA8136392CF5CC5C +:10E2C0001C8F956FE2A3A4DD114AC07DAB4F5F8C1C +:10E2D00050DECE57524F94FBD9827D9CCF7CFF59A4 +:10E2E00057D90470CC057A225D5D82DFAA3C06F125 +:10E2F000F59E66AE3FA4DEC5E87EE78F5A525370A6 +:10E300008F79C315BECC4CA76657F8721BDDA236B9 +:10E31000BACD47FCF6A79B90E7EB19C589667B3D14 +:10E32000343F490789F7B7049D4E0879FE1F429E86 +:10E33000E7B3F075D86F9D939F6BC77EA1915C1D6D +:10E340008C0F068D8F14749672649987D3B72FE55E +:10E3500072F72D11D79B3383CDF427F7F57B9B9B69 +:10E36000DB336F79AC768E4CABDCBCBDAF2E42F2AA +:10E3700049C6A14D68E2FBB4AC77BB5B9EE31B2AA8 +:10E38000BF47D4A222BF5E8F7041BFB933D82CFFE4 +:10E39000A4BEFA31C187D727F072FBB835725C2171 +:10E3A00017E5B879CDD6716B7BC70DA9FC3D8E30D2 +:10E3B0008D3FA1E92CDDB3CE15F7AF8D964818F34C +:10E3C0006F7DE3CED33B517F4F2B28167A34C3F7B2 +:10E3D00030EE13F03CE80C67E0781AE009FD3459A0 +:10E3E0000037A60E2F233BCE511D237DCFA4DFDFA8 +:10E3F00047FC9339B07E2FF1EED35999CB24AF323D +:10E400003DAAC5DF27E779FD925A473AC037BED506 +:10E410004F7E9585650AADBB60387337C6397C225F +:10E42000F0F2E8BFB27684639CCB68C027351EBE8D +:10E4300081D1B9C3837783BDEBC379F0FDBAA15411 +:10E4400025FFCFC88ADA076E8674FCC399F43DE3D2 +:10E450000E95FAFFAD3BC8E314EB53E9FB0FAB029B +:10E46000F4FD81E53CBF774D1ECFD7ABE4CFD96B30 +:10E47000F3EBB4BB359AC7F36EF1AE49BD4AF64F24 +:10E480003FBFCE7ABEFF3996F3F32813FE9E27FCDA +:10E490000DE2D7F9B95BEE532D9E0484C7CBFD3A4C +:10E4A0007BBDC5242FF67A855FA45EA5F3D8078EC1 +:10E4B000877E51007C525725FD32A184EBA19F1726 +:10E4C000DDDCAFF20ACA91B421DA9F85F6304EDD69 +:10E4D0001AE917E2ED5F16ED8F61FBA943B4372609 +:10E4E000F3F6E8D7318DFF4B37F7CFFC7A98F67B00 +:10E4F0009B9F4E59615A0F27453B270BBFB309E637 +:10E500009DA4F1FBAB3F565A6E5C85FA5ABE9BE464 +:10E5100046B061B99BFB7DACEBF83D37E7B34F04E8 +:10E520007F1FAEBF8FE2B026D4EF28457CB2166EB7 +:10E53000EF061BCA54B3BD9BB79CDBBBC18600E78B +:10E54000239BBDFB895BD8BBCBF9BB23267A7EE23C +:10E550001EC2DE95F200D643BD793DDC26E454EFC1 +:10E560007A10F266B8F520E5DB97B51EAEF0FC63D5 +:10E57000EB21D5C3D7C3048FF0735EF87A98E01906 +:10E58000C2CF29E5343429435709EA79B8CF3E2C64 +:10E590006A49F990BD9EEBD1BDF2137F00FE96C58E +:10E5A0005C7E82FECDE924BE8F8CA6D3F900BEF836 +:10E5B00080FE87228FD08FFFC17557E8E1EB66AAF6 +:10E5C00067987533C8BA2B11ED2FF50CB36E075948 +:10E5D00077B33C7CFD5C364C7BFBBA2BF3FC63EBE6 +:10E5E000EE1AC197721F3E5CDFA5A0BD9E55FF1EAF +:10E5F0009DAF81BA11C2EB2DC1065D358F6B2CE743 +:10E60000F00CB6EE9679065D77CB3C43ACBB893A0D +:10E61000D82D44DFF3D3E7EDE76EC3C507A19EFF16 +:10E62000033A5F0ADFED31EDEB0062BDE053BA7FE4 +:10E6300022F954AEDB5E3E95FA457F3EE5F31A843F +:10E640004FA5DEE67746EB3C53FBD643361619D88A +:10E650003FBFFF3CF8BB0D2BDF8E1A64376C46B80A +:10E66000B366443A707DF7BEDB303E9481F1F275BB +:10E6700029D677B1F440682FC297FCD59EF6C3E83F +:10E68000974B2B9E8274BA5FAC7BFBFB0492BE401F +:10E69000A7FB711C49B75E3F2F30ACD9AFD038EA29 +:10E6A000BAC1DE5978D863D21B1C01FECE82FDDDD3 +:10E6B00003B09F845EE908A1ADFAD228B61FEDAA87 +:10E6C00097E47B47429F5A9011A4F78D1C60B71ABC +:10E6D00060B71EF604C57E0B3A0AF0D17C613FDEBE +:10E6E00019885D5EC9D0AE8B93BEFD273DDA8E7072 +:10E6F000FC32F1EEC5FC5D123FE95D2F8973C9580C +:10E700001A13764207F99B5C821EA52CE456515FD2 +:10E7100047BEC3F39F598CEE5BB10485D33513F824 +:10E72000D0742E5E2AF0CD32855FC2762EEB723326 +:10E730007702EC238AFBD0DB78BFCEA533B78FE21C +:10E7400004ADE7B2C047AF7A38FD75DD8467478016 +:10E75000F35F178BBE8EE55B67FEF16D0DE0F9F39D +:10E76000018F8171F1B71A9D57E51AFF7DE725EFFB +:10E7700091CAF807D8492DF7D565FC83B457B2770D +:10E78000707B657C8CBF5F5510DB40EF36A17D89C7 +:10E79000E5B93B74867C0DE5B42FC9F6E3E34E4B37 +:10E7A0003C46B0C99ACF15EF43E48BFBF3F41DFA56 +:10E7B000C915F19CB9B6EFF2FEDF2EFC30801FC503 +:10E7C000EE3FFDC233F0FDC1C1EC25E92FF5B1B03C +:10E7D0009680FC5CCDFD0F75692C667EF749A652CC +:10E7E0003E686E7E0F4FBE4B21ED2B9627FC2F62AD +:10E7F0003D30413F4FA6B107F1959AA0487F652A69 +:10E800008D27D7B5EDDEDA2625CAFD35DE182F17A0 +:10E81000F7D8E8090A95DB7906DA75E2DE9AB7A43B +:10E820008A7CA3AECCAA0EF4CB261530039B2B0515 +:10E830007186FB4942417B06DE7BBA67B07B4F099C +:10E84000DC3EAA2D7212BCF7FC4E21FFE33DF9DF3E +:10E85000C930DF4393F13447C67EC7DD69C2EBC6DA +:10E86000C0ED6EDC2737665E3D24BE1D2D1AC5E166 +:10E870000E5BAF89D71BACDC15E0F7C5FE3636F66C +:10E880002AA2DA85F15C24770DCB3998A3379E2B29 +:10E8900042EF08497F833C076B7047288EB4219371 +:10E8A000BFAB35E8789F2914C79BAD85CB916E87A8 +:10E8B0008AAE23BC3A8C767A7F27B110F60F485D7A +:10E8C000A138DD4FF01630BA3F311CDE7313B8DECD +:10E8D0008DFBA8F9BE9933D49281FB8F33CFC950F9 +:10E8E000BEE85E6BF926F16E8153C4B1C9FED24514 +:10E8F0007F9522451E98518CFCFA4884BF83E12500 +:10E90000B940FD40E1482DBC94F3A1F5BB9A547287 +:10E910001CF9E0F6B14E63283FF43B352C92E7C07A +:10E920007898AA56F42BB7264C6F68C8A0B846F260 +:10E930007BD56FBEAE01E3A27FAB727F13D3DBD377 +:10E940001616A15DFDECD4CA01E8FFDB84F66F93D7 +:10E95000FCCC72FA517E6E1CCBF9F1EBD727D1FDBE +:10E960002359EF51B18E64FCA4BD9F1D62FE187146 +:10E97000C1FD969122F37D39FB3DDBAFAF54227987 +:10E980002639F24EEFFE174F42FDA121ED91FC8199 +:10E99000E07DC713FF16F9C5C65AE1BDF13A0E2F47 +:10E9A000E8F353B17D4B826A8157A600C758F3390B +:10E9B000DEDD625ED0AE48F847084E3B7CBF95ED89 +:10E9C000F5F62481CFFCCA01F0F05B4FFB80F07DAF +:10E9D0001DE1339D1BFDDC864FC0DBD88545FDE185 +:10E9E000DA99E0B7C04774C6FEAF4DA2FD4ED2FD26 +:10E9F000FB095710DDDF11FE6BC0639AC0E3D481C1 +:10EA0000E07C27213E20DD6FBCDE0AE7CBFDE08CF9 +:10EA1000170D84BFF38073C879FE1815B2B4A1DA5C +:10EA20000D3CEE0BA2DDAF67E9A43FC6407FCCC72B +:10EA3000F3B11155DF31DF67BDCDCBEDBFDBBC9C42 +:10EA40002F3EAD28BBB78CA17E1B247D6CC5EB1A75 +:10EA5000D99F199318C9F39E78EEEE98090F9B6B16 +:10EA6000F8BD19DC0762AEBEF384CD25A93E03C60E +:10EA7000E9A9BF83E450EC5D85EC87C1D66FF5BB97 +:10EA80002B5EF93E946F294D5869B64F3353781C6D +:10EA9000CEC264BE2F4CF4C6AE0AE27E16D60D6618 +:10EAA000D23F2AFD55FC5C362BE446BFAA8385B6CF +:10EAB0005E0CF39DF8DC229FF53E78945DC87DF0F6 +:10EAC000D479792710EF9F1ED5E8DE4E8F1EB9EA64 +:10EAD00012C4A757A773D086F8356BF9658FC85451 +:10EAE000A46F522B97CF4D357C33589E50FA05CAF0 +:10EAF000B5B7C4FD9EF7BFAAC4F1DD8643D3566502 +:10EB0000A1DCEEBEEBF84AFCFED7A909F4BECD02AB +:10EB1000A8E64EE5717F942E996C50BC149004DFEA +:10EB20000B5850716539C545254ABD37EC536730E0 +:10EB3000F6F61589D4FF9AD6E06EFEEE5694DE4BBB +:10EB40005823E38BF5A873B1F9BC8475CEB90BD308 +:10EB50004C16BE16E30C5B175E81FD2E58B496EE84 +:10EB6000CF2C986114535A7E4F04F5B99B2A9471A7 +:10EB7000E8575C50FE949F7F3FE4273F45F3B2C6C1 +:10EB800051808F9E026F089F2858507E82CA6F2A3C +:10EB90005754D4DF7B962F6F1C85F49F91407E9B4A +:10EBA000A5E53C9E6C758592C7FB3B45F5575628FD +:10EBB000394632E63FA27EE7D757BE01D36215F34E +:10EBC000F6EA48D7792C46E73B97B3F8370FD03EA3 +:10EBD000C4FD1E37B5F27770B65E745108F798958C +:10EBE000F1A75E190DF984AF1684B8BFB437BED44F +:10EBF000796E0CE336613A3727B0DF040DB45C5808 +:10EC0000A223BD2C5C3603DF0D8D533EC7BBABA1E9 +:10EC10001EF4AF6415CA43F42E5BB82C03CB79BE47 +:10EC200073DFE70D472EE9CB3FDB90DE7864947805 +:10EC3000777434BE5B36612ECA9DE44B5804D7A965 +:10EC4000CEF8FD2720458CEEEFC1EF1BA6F5C1B134 +:10EC5000DA2BFC2FA21E7C7A0AEBFD7AF1B22D781A +:10EC60007FB6BB49F3A31CAF9F10F6E1FB072C1A3C +:10EC7000F2E13E72EFA11B7C781F2879D3355791C2 +:10EC8000FEBE5BF1E33A5FD91973221E6E8E29ED49 +:10EC9000B83E4EEB6C2EE6FF543FDBA8857C7672C7 +:10ECA0003EF14F77EB0827C6DD75B6297EEC36F9C5 +:10ECB000D21D8DD84FF7AC24DAEF3B9B73A9DFCA86 +:10ECC000568DE214BAE3B53E3C6FEA6A7AC6373332 +:10ECD00080798DDA9D66B5948F35F17301B4BD08E6 +:10ECE0009E266D0F7F8F93BF0B9988BFC37A49AC67 +:10ECF00057C213300E2199CBAB3F6486B2502E25FC +:10ED000036FFEC4E8C47EC627CBDC422C2DEC01FD5 +:10ED1000688F67A2C80781268DDADF9CC8E542624A +:10ED2000E4C2EE97DDDCC9E15BB143891B30CFF76C +:10ED3000AA2273311E71D9E30ABB6F80F6CB1E5233 +:10ED4000A87E653BAF6F2F4F8C69649FFC51896E25 +:10ED500025B8776A4CBC436AA9771AE0C6F2C4A703 +:10ED600094DD6C8072589D47F0BDBE00933FD6F293 +:10ED700040BBD2C1E3606DDF85DD0378B0C4338F63 +:10ED8000AD58B6039FA11CDBEFBD4C7ECF329D2852 +:10ED9000C3FADDFB5EFD90C3F2DE66BA7C2FD87647 +:10EDA000CFADFB0CBFD7182B5169BEE9AD5C5FEE50 +:10EDB0008614DF1F7823C3F108E91F673BBCD70126 +:10EDC0009FCEBD418DA0BF686E30EAC1FD44DE0B11 +:10EDD000F7E5F27DA9D43DF9881FBE5F91C7E381B5 +:10EDE000657C707926CF6FF9A2EA9BDCEF32F07D6B +:10EDF000059A8F4A70123F84C57D85F182CFFE63EC +:10EE0000037FD7A06736C8E160FFB8776831B512D5 +:10EE1000C6EBDA343215633D7A14E197788DF3B599 +:10EE20003D2E7E45857211C5C1B018F97D57C65378 +:10EE3000E8BEC7BC026BBDC8430AF9AD2E376CDF14 +:10EE40009B36D2BB9F6BE2A728AE694DD816776F71 +:10EE5000E78FE1F2E21ED01C41D7A322DE688EB814 +:10EE60001759CEB695A5C27C6E5ECCE3E751AE6273 +:10EE7000FE5B4BF87DC86FB5255AEFDB791D43DE8D +:10EE8000874C5F32F07D9F0CFEA9F77EE9D8B24532 +:10EE900014879065E3C30C71EF672CDEFB01F83239 +:10EEA000D659DF793DE93C5E9E8BF8CF5268BF753D +:10EEB000675ADFB1457BC56CD77F94C8E3F15886AC +:10EEC00041FBF6CD474730735CD2CD5E1EA7CBDA4F +:10EED0001C67CDFE8D8F8F5E33A41DE831ACE3D867 +:10EEE000DF61EC27DF01B71B4CFB8C49AEC7855CAB +:10EEF0004F42FE9772BD3CD120B8DF0B87B63AF087 +:10EF0000ACDE08537C836F0E5F1737E1FE087C761A +:10EF10008DCECAF4547A7798D2426CC7FD44E4BFD0 +:10EF200079A52083FC9037B5EE36F09DF87E70C150 +:10EF3000DED6386D40B862480F844B31C1559F0210 +:10EF4000FB4D2EC227CEB5CAF9BED3AFDF0CEB7E88 +:10EF500066EAB745EE634AC980F3F539906F33C26C +:10EF60001917D22F088D6D43F61B09F99CB9FDFBCB +:10EF70008559D44A3CA803C3DB4B1F3B1E10CE5E11 +:10EF80003C2C063C14F5B5F309FCD9D763F7E2DC59 +:10EF9000AD530D2B7DF93D8C41E63B0C7DD2BCBCC5 +:10EFA0009FC1E824EBA7CAFE068107B65F9F6308EE +:10EFB000BA0ED63EE2E5FC66EFE77CE7E114E5D366 +:10EFC000443F83E159D64F3F5FBC4661DD68FDF1A8 +:10EFD0000A43B763FBCB137BF136A03ED567F754EA +:10EFE00066E1FED22DEC6E69F774B772BB47DA3B6F +:10EFF00068E7C44698EC9ECC2A8ADBD95C924376BB +:10F000004F57AB46E76CFEE9CD5979857D713DCD13 +:10F010007EFEAE628F78AFDE6EEF3C2BCA537C5C17 +:10F02000AFB9D11BBD6A36C0D515D8E0540CD6CFC8 +:10F03000EE81A13BF15DD63AF10EF1E99523B65E82 +:10F0400087F5FE4E7B877E806E6B318541D6CE1074 +:10F05000F1E29F43ED69F8FE161F776D27DFB73E9B +:10F06000295FE74424AFF59BEEA9C3BF152D4A07DE +:10F07000BE5BB102FAEF2A10E301BEBB7AED271E98 +:10F080000F8EF6520CF405ADE19A26D4F797272C93 +:10F090007DC40BF3763C70CD54B2AB74D063A1FE4B +:10F0A000C9547E4FE4D0B48B4EA072D4F34B0743C7 +:10F0B0007FD0ECE985DB50EE759D70D01DA3D9D3D0 +:10F0C0009B77B950CFFD8D8BF25DCFB118D2FB3B52 +:10F0D000E9CE38D2EF4F8778FEAF0FBAE89D8506AC +:10F0E00047FB2E2FE4DFFF4D1243BB0CEDB6A80B00 +:10F0F000E356401060DC375447FB0AC4583A7FAFF0 +:10F10000CD18C9D3764A7742BD2E7AF7AD43E5DFF5 +:10F110008FA7F3FAD1913C3D4B69B787EB2D12EFE6 +:10F120002FA4717B7B71AAF40FB12C94270DE80FEB +:10F130004478E6AB71F3FB9F327D2495B76B489121 +:10F140007A50E8067AFFB4225DC57DEECDC8B28460 +:10F15000A978AED89AA3A2FD134AE27C74A22C77B8 +:10F16000AC13FAFD59BD8BCE09DE2B53E20ED84FFE +:10F170004E058D0DA4BF6D6221F42B8C73801E0390 +:10F18000F9718A128A41EFDDEFB2B803ECB2F75A97 +:10F19000B75F86DF4FEB0AD955ADA9DCFE9ABE43B7 +:10F1A0003BE5003A5F3563F62FAF80F292C7751AE0 +:10F1B000F72769974F3D89FD366864F7BD9CE622C5 +:10F1C000A5F6273BA7C771FC36164EC0F7A862F11B +:10F1D00081E388E6A472B873762FF319B81EBD2AAE +:10F1E000C595DF7B68D33103E16829D51155A75157 +:10F1F000C040BF37C567B7D54293933EBE7E4E3AF7 +:10F20000A38DA8CFC71ED4E89D58E4238C13EB161A +:10F21000EFAE9D6EAD23FBA8BB657C08D7D2CA7844 +:10F220006D16BD5F9CC4F5C43A5CBF6437879A9085 +:10F230005F7B364D1961FE7B23B124A7A41BD93512 +:10F24000F27D07A9BF8F65F2A7576EF1F7EF5BB9A3 +:10F250009D90D5AAD1BB2E63E3AE0EF1FE86E5DD0F +:10F2600014A847E71963855E3F86C50F95E0F775DB +:10F27000567D6B4C3DAF377A8D5D0FE3FABD5FACC9 +:10F28000D72E719FEF2B3DB677BC855EEFB7E9F5C2 +:10F29000170BBEB1CFAFBB7E0EBD3F3966274823EB +:10F2A000AB5CE6F36BE2F7A4B2C0CE19E89DADB15A +:10F2B0003BB8FD02F5480FB3CFA7BB87F3FFEA7D4C +:10F2C000DCCEB2CF6BD5998E46DC64D63C6ED503CE +:10F2D000EDF0B735F17B0833BD3CAE6E668BBADB23 +:10F2E00050F07DF7F63AF4B33BD202F44E6043900F +:10F2F000AFA3D47965C966BFEAC624BE2E739B54FA +:10F3000016368D93DF92C0C2263D707C6BAA253FD6 +:10F31000213EDA52FFE27D3996F2A2F68B2CE5937C +:10F320000E165BF2933B665AEA4F395A6AC94F3D53 +:10F330007E85A5FEF4B7AFB6E42FE9BCD152FF2B12 +:10F340003D4B2DE5979E5D65293F29E22FBFF6D9FC +:10F35000ED96EFB3D9F72CED36087E7065A82C6ECC +:10F36000AAE74BE4FA29EAE131CB79BBCAA2A67A33 +:10F37000778BF629972D1A52CFBE57ECAF9BC4BBA3 +:10F380008075F82EA00BFF9E5106A50DF82E20A427 +:10F390001BC5BB805BF05D4017F65BF200EA819F06 +:10F3A00066F0B386CA4CB60BCF455D207B0D83B1AA +:10F3B00011D3385F25C5F8DFCF881AB118BDEB34FB +:10F3C000CBAAD727E459DFF1D6BDA99677BEBD8574 +:10F3D000A32DE5CE408E25EFCEBCC852DF57526C30 +:10F3E000C9DBED86CFBC5CFFEA62D163E457C86835 +:10F3F00021BFDD6076CA7578869036F8FB7EEFE334 +:10F40000FB7E06BEEFD792657EDFEF9742AE7D6052 +:10F410007BDFAF7BE7F83D1B681DF3F7FDF0792339 +:10F4200044E04DA9BCFE0A16DA8AE7C4D2BE26BD66 +:10F43000009646770AD75FBA1535CCFD1DAEDD08BC +:10F440004737BEEF87F92D9A78DFAF92F4CA3F783D +:10F45000F9FB7EEF3FA8D1FB7EA79581E337415FA3 +:10F4600090F638BDEFB756E4EDEFF9111CA0EF743C +:10F47000FBAB9C18EFB0F62185E4CDDABEF6FF2D8C +:10F48000DEF5DB2EF6EB61DFF56BE5F2F0BFF05D4C +:10F490003FA2FF96107FD72FBC237ADF3CA0DBFC76 +:10F4A0000C2DA4187DEFF8497F8EA4CF60FE9BBF82 +:10F4B000D72F73690A970BF3453B0D6681DFBFECCD +:10F4C000F7A4B22EF01D15BBFF44FA31A4FF642946 +:10F4D000FA4FA04AB9B14D473C8E7C5CA17720A47D +:10F4E0009F6575D397EB47195BB6AE2C57B970FF84 +:10F4F00089DD5F82FB1CD2F524526D34CAF59F343E +:10F50000E27D806D623D6ECF8C24A7221DC53B1C21 +:10F51000AB853C68F629967847FB7B69598F2B03AE +:10F52000BE97B644D831DB46855EC33F55133BC911 +:10F53000EF8F254C0EDCB01CF2A7C209A47FC9F7DF +:10F5400029283E05D6F51635E69B13EC1B278EFBC6 +:10F55000C178BC5FCFF78336F14EEC23E29DD87DB6 +:10F56000B81FD0BBB17C3F781CDF891D8FF3697F4A +:10F5700009EF577FBA884D8E013D2FDAC7485F0CDF +:10F5800094A5C7F13CE75426D7079142785FEF94E2 +:10F59000F0DDB818DF177ADFC7F039E57B26641F86 +:10F5A0002D1738FDBAB8975529E8EE12EBEF1B8BF3 +:10F5B0003A1DF877D4B6B73C9386FE7256CFDF7308 +:10F5C0000E0BFA7FA3DA6179CF23C06A8FD5A0BF73 +:10F5D000BE5933E241ECD77A6F8F191105E1DE068F +:10F5E0004AEE8390FF43E7AB7E7A4735A43394B36A +:10F5F0002E5BFD40DB422503C66719FE51783E387D +:10F60000901DE99F66B523D17EAE0B47683E03D8B7 +:10F61000910AC6EF9CAF1D791FE234AD8FAE373132 +:10F62000CE47D9AD03F3C9589FB083A2563925DF21 +:10F630008596714B6C645586DFDB9F0FEDED5C2288 +:10F64000BE07F042EF4FE33C918E597AA782EDED71 +:10F65000EFE85DE8FBE077F9C47BF185ACD0F23EE2 +:10F66000B858374B051FDBFB91713EB8CEFC438C7D +:10F67000D76F7D3571BC497CF6087CDAF1978D8FA8 +:10F68000DCCD84F1B7FA36C6745C6765643FBDD7DC +:10F69000CBE7617A7FA64DECA5929FFF28E250361A +:10F6A000A4713ECF167CBD7D1FBFF7990DEB16CF21 +:10F6B000F7F2E4FB342DFCFEA8E4E7B488F5FEA9DC +:10F6C0005C070176C83F07DA2FAFD7C47B2D563EC3 +:10F6D00095743AF5B98BF4869E3227BDA769E7E7A2 +:10F6E00034D641FCFE2DE0F70E80BDA7F372E7286B +:10F6F0007E3E44F6A39D3E2C233217CBB75DCBFD57 +:10F70000064FFA443C96A0D7B6518CEEDBDAE551B1 +:10F71000D730F248D26F9B12F955DE00F6B99D7EC4 +:10F720005F96DCEACA8C6FC03CCC77327FFFDB2A65 +:10F73000AFD21685154700E5CA648AEB9CEF4BE70C +:10F74000FABA4D8E497AAF71F37676F975A9CF2062 +:10F75000FA4BFA6D6F07F9857165ADCB7C3361FCAF +:10F76000BA1695A1FC003BDC87F1463D7A07E95FBC +:10F77000CFB7077D616F9F9DD9D394EBCB31F177E4 +:10F7800097D807BA9BB85FACBBA9CE976B2AFF830B +:10F790008FC721F43063EB259C37AD7635B3DA990A +:10F7A000AC1EECECF43E3B7B58BB53F0ADB43BFFDE +:10F7B000517BBAE702EDE980387FB2CFABABC7B877 +:10F7C0006A06D06DF91A9DEC947EF6745CCC2B3EE3 +:10F7D000C8BC741E2F00F506B4A7190B913D619F9C +:10F7E000CFB233558D68FFAC68B19EF30D6A47B751 +:10F7F0006A163BBA8EB56BA4F79F61EC00E4DB5A46 +:10F8000052B7929FA43E97CC0549D749C2EE68C330 +:10F810000E47A35FE7F6463C17BF41F863EB2FE5C1 +:10F82000EF3A77EE73915DD6D9AC51BE32AEC515C5 +:10F83000187F99F44FEB5C8F947187BDEF8E015C5C +:10F84000E8D7EB6EBDC6F2CE6B14EB69FDD725FE93 +:10F85000DDD70ED3BB632363CA80EF93A4F939DCF1 +:10F860009F1EFD8BC2F9EF6BB46E96097E4B6F3E07 +:10F8700041EFA9AD2E5119DA6D2399D188EF388F58 +:10F880005C6CDB57C47A5B29703A9245EE25FE1614 +:10F89000EF80C9B8F6EEF81D29A8276449F95A6D1A +:10F8A0007DFF6BE9E3567D61A4EDFE7EB6E03BBBD8 +:10F8B0007C7D429E0F09BC901E9E8BA9552E0CA6E6 +:10F8C000FFAD5278FD379287D1FFF60D8CC7874484 +:10F8D000BBC1F4BF0F50DE1AEC9FA6FF7D9029DF5D +:10F8E000B91A5AFFDB92EC94EF72123D979EAFFE6D +:10F8F000D77461FADF8A56D0FF9421F4BF9D5CFF74 +:10F90000EB1E4EFF7B68E16CFA73B342FF33C74DC9 +:10F9100099F5BEDEB8A96F86DCFAD0715317A4FF43 +:10F920007D22E2CF245DD788F598DD3EB0FEF78DCD +:10F93000E4FFBBF4BFE792ADFA845DFFAB147CFC3F +:10F94000A5E97FF543EB7F127F52FFDB73EF131BBB +:10F950006379B8CEF248FFEB1A46FF7B4FDC7BCED3 +:10F96000F3DBF4BF168DF4A45EFDAFF5EFD3FF9685 +:10F97000B669642F0FA6FF7D80FA5FC9F0FADF6ACF +:10F98000D4FF82A8FF8DA7B8AFC1F5BF768A0393D5 +:10F99000FADFFF4A3E3FFD6F387BF4CBD6FFFE0F08 +:10F9A00059CD09A4008000001F8B08000000000052 +:10F9B000000BED7D097854C7956EDDBEBD686935D5 +:10F9C000575BAB2584B85AB00408D30261C0C14369 +:10F9D0000B642C088B58ECE08CC3D7422C02897C3A +:10F9E00022F19699BCA70B92B02C24D132622C1C28 +:10F9F000CCB48870C41827CA32134826F35A8678C4 +:10FA0000EC2476F042269E386F5A0B02644D1ECECF +:10FA1000D819BE0909EF9CAABA52DFDBDDEA16E06D +:10FA20000CDFCB93BFE452B7EAD67AEA9CFF9C3A4C +:10FA300075BAA7AE80F8F209F9BB3A27F15908392F +:10FA40005DB788A60F67F6BE1A574CC8279B48912A +:10FA50002213D29FE9DD8F69A59C149D24F4CF5A0F +:10FA6000721FBC17E05F909FBAC925985208F9C26F +:10FA7000D345F34578D53AC50E2F09B11003F115DA +:10FA800010F2C79BF087656FDC2404BE73C7B0EF2C +:10FA9000FE92D412021F54F82B56937B09F91F5380 +:10FAA00064F6DD072BAF62FAB0F2DD549715CA5E3B +:10FAB00087EFA1CADDD83294B7F7082EAF957584C9 +:10FAC00040BB1649EA6A86FAAFF75FF6D643DA9882 +:10FAD000642F12A1AAE229064216409962C148E0A9 +:10FAE000FB38FE0976E7E65242460577F11468CF07 +:10FAF0002879889BD6E722E509F81DA1FDB0C5D776 +:10FB00003E590EEF7F2129B624CC7F3CC980F56C8D +:10FB10008F65F5B82481969B9245C88542786174BB +:10FB2000DB08941BEEA8B41148BF6372B72D86FEA4 +:10FB30005C7E43749E80FE0C5BCBA724158EB7BF02 +:10FB40008E7FAFA65FAD2374FEB19C04F52C33CA43 +:10FB5000467CAAF9EA73798C48E7958E05FE37DC76 +:10FB6000B9710AF61FBF27F9E3E59679734BB11F08 +:10FB7000CB89B301EBD17FD7688401E3BA6E8AF7F2 +:10FB80009E1482DBD916B7EC4109FA77D14CAA7AD8 +:10FB90000B83F377F2FE13975196605D7189715D67 +:10FBA0004DB8AEB984D457C152E7E2CBC7A4E1D96E +:10FBB00034DF70139EEF2CABFD22CEEBB004F311BB +:10FBC00030BE27C2CD0794930A27311F31ACBCBE8B +:10FBD0005C50BDBC9C7E9E5C92ACE987BE7EE2F030 +:10FBE0009B914EBE6835F65B6C903E63BAE68FE142 +:10FBF000F939F8FFC6213F9437C0886F02BDBEBBFC +:10FC00007AB911D7A794BFA7E5B2C7CBD1B4189CD6 +:10FC10005E29114ABF2A3D441C0F2FB7DCE88C6EC9 +:10FC20009E8C51CE93F1D6E629D2FEE909DA3F1235 +:10FC3000DD37FDB87FAC91F7CF8C4481CECF5DBC72 +:10FC40007F5E09DC3FC4E131AF07BA11133AEC150E +:10FC5000565C5F8366FED427E9067A52DB017AAAF6 +:10FC6000E67470D039CF26433D8399A40CEB7B50CA +:10FC7000B4EE3D07EDFFD6B52419D837295958936E +:10FC80003508F526279A69BD92E83E1E0FF9E4571C +:10FC90001682FD1BEE73E707EEB79FAAFB97287647 +:10FCA000C322286F21B5BD940FFA048303F86A9527 +:10FCB00040AC31E3E3FDA96466FC9478EC980FABAB +:10FCC00026E077FA724019D61258E762CE0F8A39C9 +:10FCD0007F27178C03B84F5CF01F8E6B2EE7FF76E3 +:10FCE00022387DB0CE35EF894E2F144BDBCCCAA91C +:10FCF000F5CD7D5DA4FBCC425A3E126DF85D407E91 +:10FD0000F6B8BCB0E8DEA7E13FA0DE9DC556AF0F58 +:10FD1000D24F7FF0D19CF301F5B6C83EF354C86FC3 +:10FD2000D94C9C28E7761EDB2B201D5C921252904A +:10FD30005FC1DA17E23E847976FA709EA17F38CFF0 +:10FD400052AE2FC600DF492F8B9202F58EDC78DE93 +:10FD5000560EEB71D56F29C3F9FBCFBA6B73CECFBB +:10FD600020E49B404F4678F6D6C510A38990EFD487 +:10FD70004934FDBD3A074DFF439D4C9F67400EE35C +:10FD8000F307208731FF1F410E63FA9FEA5C34EDD1 +:10FD9000AB2BA36992C8E8458A2FCF72423B7D47BF +:10FDA0003EB7E52BD08FFE12ABD302FDEF3FEB9EAB +:10FDB0003ED17E867536B175F39970DD5A97C5557B +:10FDC0007943F175BEAF3E6F75AF2D81D20329FB2C +:10FDD000CD824C82F8BC0545B9887CBE9CAEE3A5BB +:10FDE000AAE4B647B01C2995860BC6F97DF8FE1823 +:10FDF000C97000BF7B0E696F02B9EB0ECB375C9404 +:10FE00006F7448127D3FA430FE11AE9EEA58D6FFB3 +:10FE100060F9EDA1DF15F27AAE9EE67C288CBCEA93 +:10FE20000EC77FFEC4F2AA27021F4E32C98902D034 +:10FE3000C96F3B45A208E3FC0EF0D8CD9BB09E5B9A +:10FE4000B1606E70BB7F83ED5AC6D3694D0C77E904 +:10FE5000CBFD3091CDE327AFFF8740A8FC5B4A7113 +:10FE6000DE2ED60562EF7EBB0CF7E1EE6203910554 +:10FE7000DC97CE03D8EFB4CD06AD5CE5F8701BDFA0 +:10FE8000A369A4FCD062243685507E92C5EB1BF694 +:10FE90007C39D105E3CF42BE82F2F769D8F7504FE3 +:10FEA0000CFC877CA5B2C734E00FA8378D18070279 +:10FEB000E5EE74CE2FA6EBF8457F82CCF81B9F179A +:10FEC0003B9F17BB0EC7B60B6433EEF3C3994C1EB2 +:10FED000A9F8B40AFB0A74FC5F895A1C739CAF9F93 +:10FEE0009ACEF2869EC79FF0EFDAD39D6FE4C17C75 +:10FEF00029174527E2EDB8A29447B7417AC415E720 +:10FF0000A4FB90F7CFC2FBD76A506CCBB3C7DBF131 +:10FF100002BFC1E709E037B87EDDC06F30FD12F0E7 +:10FF20001B7CF64489FB67F530FE99526AF78AD04C +:10FF3000B5112E77880EFFEB71BE91CB1F753D6B0F +:10FF4000C2E07D956F7F6193DF6482FCC3BD1CEFCF +:10FF500037983472E20B4F6BD73385EC7BAB0EFADC +:10FF6000B5F5B4287BB3B15EED3A12B95CC07EB78B +:10FF70001F15C80B90FED0FFCF12F26BC569242766 +:10FF8000B383E5843191AD7B4AD3FA7DE9F8D22180 +:10FF9000A5A39CBE5B7157A4FDAED2E376C2E8D1A7 +:10FFA000DE119DBEB42A31A2BEB42A3184BEB42A69 +:10FFB00091A8EB4DE9B292B73BBD25349D7F596DB9 +:10FFC000C75D40F9F1137C2DB03E4C53BA463A4F11 +:10FFD000AB7504CEA74ADFFAEF545C00EB3AEC674E +:10FFE0007287201D6619FD027E3FFD691D9F111F4E +:10FFF000A3FC2FDCFCEB71C2E5442D1E50BF57E77C +:020000021000EC +:10000000D9CDC7ABAF47C501C82726A2A320FEA004 +:10001000C0BC158ECFE755BECFF5F337BD1B069993 +:1000200001B2ABFD6C9392877CA281E2C32BB84FE7 +:10003000D9FA50BED92DF0E9E5FBB19FCBD117938A +:10004000D83E9DCEF7E5E10691E2B0E9C0770C30ED +:10005000FF792A7FF530FEA9EEC7D4722D3E53F703 +:10006000710AE9939603FFA8E9011C2707F3577566 +:100070009D466E00C78072574BCDDEFD42F07E4C30 +:10008000253E09F377C27E45DC76D5FFCFE6A9CCC5 +:10009000FEE03C2907AF0F71D4BE968EFBFD61C90F +:1000A000D90CF9D392B4EBD59E4EE8B8F4FCD41F2A +:1000B000819FAAEBD72E94FF3C2F3BF2FADD29BE9D +:1000C000EB477B4B4AF4F61663A29DD243387B8BF9 +:1000D0002A4FF5FCF770A2ACB5B77880FF1622AEB8 +:1000E000FC7E961FE827DFDC7BDC8EEBF0AFB1E413 +:1000F00004D4271C7F9DBE1FFD087066003DAFB372 +:1001000067AB7A818DEB0536C49772BA919085847E +:10011000984D176A91EF5C2EB612C4CB976F3CB521 +:10012000159583CA633104D7BFF2FAE7B65065A1CB +:10013000C342F973B767EB054C5F39260A28778607 +:10014000AC5A7E77F958A5E4867E3666D76E41DCD8 +:10015000BD2CA6E8BC04F517744B948F954AEB4B65 +:1001600013213DEB344BF759D97E2974BCFD2AB2DB +:10017000AA7BE58F9625C1D35990780E9FF39C45B5 +:10018000CB9391ED2D5A7F0E9FAF627B50FE3ED7F1 +:10019000DEE5296CEAB2CAE7E0C3FFCE6CE8575649 +:1001A00093409A21F5CDA66F9B912FCF7DA59D3EC3 +:1001B0007BBBF799112F3ABBFAE8B3E8DB5DF4F9A2 +:1001C000DD9E0A9A0FEB2112953FC2DFFCA3253476 +:1001D0007F5BCBDEF94BA0A1ED9D16D900E31F1686 +:1001E0000C3EC46B4AAB48F54AC923B830BDB34591 +:1001F0003C61A1F95F5A81F4AEBC2210DC0F83B0E0 +:10020000BE09D0AFE32F885E9C5FE9B440907EB614 +:1002100076B2F2D54DED141FE39F1148E58B9CCECD +:10022000179E3BBCF67EF8EEC31F1B7AF7E32089CE +:1002300051E1FBD080F4F3C54ED115CBEC1B0AC3C2 +:10024000574DFB6EC254CE3D635402E571914F9BF6 +:100250009EFFBA36FDA160A07869C105EDFB85BFA0 +:10026000D4A67F94C0E50261EDC5C50802B6573239 +:10027000DE2FCA1F7E043207E9A168EE9A37713D6E +:10028000C8FF329019300FFFC6D7ADBFFC0B59B075 +:1002900015C867E74E9B5F59185E0FA88C569F687C +:1002A000617AC03AC88A49A24F1F3EFFC5EC4A583E +:1002B0008074DD2C3A4F40DEBAC78A64E49739C8AF +:1002C0002AE7417AF567CB705F5D2A7FF11CF2D394 +:1002D000B8820B55B80F1615C71111E99CD4E6E08A +:1002E0007E5C422E88B81E679328F3237F41AED1EF +:1002F000F42F57C553795DD199DD65A1F622B71961 +:10030000E9B002EAEF65F646F3E639B43F0AA1FD2B +:10031000F22FFF0A3E3389EB616CBF73FD2A6C7FBD +:10032000DDA63D74BFAF5B24CFA3CFB283E5023C13 +:100330007794819C9F82E96F4BEC7D9F84FD7FC108 +:10034000BAF5403AF2E78238A701C755F636CD87AD +:10035000F2062C7F75DB369AAF2C8A73E2BC57AF5E +:1003600016EEC1F735AB853C565F3F2DBF6BB590A0 +:1003700023CFC5F447B4DE3592FB67C86E57AFFC98 +:10038000BA11D7E7E223D507908E2F2F8E9B87FBDC +:10039000F483A41C3AFEB86F7D244F8572BBBABBB0 +:1003A000E4ADA8C72D67EBB783D7B7D1484A8D30E6 +:1003B000CED5843D09617698D70A1C5DCD304F3B80 +:1003C0003AD977649C6ECC37B142FCB71DB54EA4C8 +:1003D000706847042A8325DE934A5CA5C0AFE20C0F +:1003E0005E9AAE4C7DEAD986C5400F06C877127278 +:1003F00004F31D98CFD2297FFBC3E6F38B314DA8C0 +:10040000FCF5A6FECB2A05D6A38DA70979F4B3C8BF +:1004100047D5FC6F1C79E0B3983F653129C7753328 +:100420001246F7D04585F269A813F9423CEFD796FA +:100430005466678987FE7A92E87B5702AC673C7402 +:10044000DC3E8FBE57A6CCA3EF7D56FE34E113C42D +:100450008D1DE7A390D51F47142FEE1F52E06E4568 +:1004600079DA705494707E40F1B5216E236EC586A2 +:10047000F474A86F572BD2F15597D1190BEB30E5D7 +:10048000E8E1B5487720F8A419507E9BDF65C67572 +:10049000AAEE117AB18BC346EF6B1950DF684B8916 +:1004A000AC40FA73A933E8BA55FA3D6B711DAA7BCB +:1004B000C41401C6551DE34E40FEB2EE909082E595 +:1004C000463D253617E5435EDB62FCBE1DFA431050 +:1004D000DF0854AFA07C11DBF588274E32CC221BFD +:1004E000715EF0DF401AF1802767021D7D98CCF421 +:1004F000EE2B994A16D245BCF7FB4F213D0FF1EF89 +:10050000416E7A4FAA9807BE4F1118BF4BF188AEC3 +:1005100099504E4E66FBBDDACFCA57760B5ED44B70 +:10052000E3CBB5FC083AB2C206F9574E811E01F37F +:1005300052D9B25E40B973C5A464A1FCBB92CDF49C +:10054000C0003AE3765CC96681F15575276623CE13 +:10055000CE4F667C6D574BD19BC5D8DEE3C4294393 +:100560007D553D156D380FD50E93D3055F5DC67E65 +:10057000E2BEEA1268FFE35D4605ED5EC3318CBE64 +:100580002F7B852ED4DF47855A1BDA459539A0CFBE +:1005900060730A399F771F9B3A3A055EC187FB2D2E +:1005A00085E33718D750205E9B166487065254F5B2 +:1005B0005DE8D7EE4DDAF2768E0FEC24E03D7CF765 +:1005C000B3CEFA7328EE3726B37D5B7D5A482C856F +:1005D0004E2CEE10E7E1343426BA1330DDF86C6EA1 +:1005E000523DA46DC96C1F9BD3DFA378E027C5855E +:1005F0000694EF6653ED564C9B5F2C30E0F85E306E +:10060000BB3BD6235F78C140F92A74EA09A4CF1511 +:1006100047930D482F8DD96EDB459C8F745312E69E +:100620000FAE140E48C01736BBDB1FB4A7A0992A23 +:1006300091CAFDF854662F1B34C9CB285D3C0BF8DA +:10064000319B92925205FB24A72C7B3F8ECB76FFE9 +:10065000A2952EC8CF596B20D89F7530C618D84F99 +:1006600079091B0C3827F7986A33907E36A530FE3F +:100670009CF3C143AF0B28176FFC4721EEA30D3944 +:10068000B53B705C53F79C4F7C08EB7936AF889E86 +:1006900083192FC4485AFA30DC5C48E75836ABF36C +:1006A0006DA0F3AA307C4DFA705E5BFFC0708D1EAA +:1006B00067FE86D33DF0D55902F0D977F78B945E6B +:1006C000864B042FE2B3F26E41417C0D352DA8C05C +:1006D000FD7C322D09E76BCD129386AECBBB9FB963 +:1006E00020DE8B38426EC7F551DE1029AE5EED304C +:1006F0002981EB8EF6429CCF5DDD89F31057938202 +:10070000807A7282E9BEA6BB9FDA7F6A5CFA7AF4CD +:10071000FB23425A21EFE5D951DF65F4F83AE06A4C +:1007200004E7CB396E2D23EDA549B8BF36136A2FE8 +:100730005E491423A6773E06381FCAEFF402470C21 +:10074000DCC75613A5DB18AEBFE8CF59EC8F69E9BB +:100750003D0BE9DD46F190669FE417E51EB2C0F758 +:1007600062CCD7CB8792C7D7A59EDB83FEA64E2946 +:10077000477B6D675D137D7E8BEFFB34D1F5CD64D8 +:10078000D48F8D4E07D2CBA0A9BCBC04F779A3406F +:10079000E75DD53FAAF978E91FA477E233808F514E +:1007A000FB5236B6FF126D3FED74451FCAE1349817 +:1007B0000764F3E9DE7D349DEE9629FDA76D86FE84 +:1007C000048C2BDD0DFD0A3CBF480C4D679B535834 +:1007D000BF557CADCF77A4B07D95DB6420AE80FAA9 +:1007E0006778E2882BA0FEFCCE244D7AA6374353CF +:1007F0007E764F8E267F4EEF2C4DFEDC33F334E9B0 +:1008000022DFFD9AF2F35F5FA6492FB8B04A537E0C +:10081000E12F3768D28BFD9FD794FFCC95AD9AFC22 +:1008200007AEEDD6E42FBDFE254DBA84FCB5A67CFF +:10083000D2CAD229280F2E82B84639BF3FE1E5033C +:100840000AD0414632C38D20E8E93E57E57A243B81 +:10085000AC7ABEAD9FEF203B6C0FB30FE8CB25A465 +:10086000466787AD19B3C32A07D0BE14CE0E5B1DF1 +:10087000C90E7B7A623B6C55AF49632788D60EFB65 +:1008800054B21C951D963CA6B503BD740DB00BF279 +:10089000338789CACF973ADF2943FEB862C132CA8B +:1008A000D7D579B2C3FCFBE68FA7573C6A28473BF4 +:1008B000D58A6C772CDA09636427AEE8181F9E2C62 +:1008C000FFCEE4EBB05BC7A707553EDDA3E5D3231E +:1008D000A7C2F0E91EC6A707A3E4D3BB7B189F7E7F +:1008E000E09A16C72CBDAE4D6711DF818CEC3BC181 +:1008F000A75D1743F169957FAA7C7A2BE7D36572D0 +:10090000BB11E721CD23906468FF0F686F4F1DE78F +:10091000EBDB9AB47CBB86D3812A5FBF56F36A6C4B +:100920007E807C1D2072DB4C9C974E03D583613EFC +:10093000B390BFAAEB7A9EE3BC6EE28A9B89FCD699 +:10094000CBE64FBF6F7E97C2CAE5745552FBD97094 +:10095000935886FBEB50DF4CDBFD50FFA0679911ED +:1009600055C541541C20BDC35BD2BD0F3EF95E8A04 +:1009700089F6EFA2D97B90EAE32F88F249364DE65B +:100980000D683F26CC0E37D2D59E856AC16067A51B +:100990002D07EA7D2285C9F1814ED60E31CAF49C1D +:1009A000FB6AD7FC64A403B55F4FA688B45F578881 +:1009B000BB6D51001EA6FB2F878CE1BE6944FD1B59 +:1009C0005B1FE126AC4366A7A858605EB3508F87D3 +:1009D000E7B46E8B0FE73940CFA7FB0DCAD1F3D533 +:1009E000697C1F4F25DEBE627CFFB8562E4EED801F +:1009F00072F07D468DF63DE1F851E2747085B0737A +:100A000082CF5CD19693F87E977438F2149FFF6181 +:100A1000F810E9A3E634E0F1ECE0F10E777CF7356D +:100A2000C4E3535B05D6967EBC5E91E2E52C2FB302 +:100A30005B8C987ACD483741E3F5B2714C3BCD7071 +:100A4000B27E9CFAF155F69A8602F78FBEFF034DEF +:100A5000953637E51332D5A7BA9B36D1F5543A44CB +:100A60006A97B8BF93EDFFFB3D862EE4BB9F21BD87 +:100A7000F5880B07F093FB711DEF6D76517B16A186 +:100A800072E4F5646BB3B284EA6536D49F063D0622 +:100A900082F437D0399FEA57035E4142FDEA07DE10 +:100AA0007D549FD2D3B33AFF83DE7A4A6FEAFB7359 +:100AB000EA3C7B19DD0D7BE7DB7203F2CF737A1B17 +:100AC000244ADBE210F3AF9F6FD200F4671FA73F09 +:100AD000FDFCEBE75DA52F75FE6F97CE06F9FE8A4C +:100AE00096CE5EE6FB4E3FAE2B5794B5540FAB014E +:100AF000812D87A0AB16BE8F5AD83E0A1A9791D97E +:100B000085A01CDD47FAF1801E49ED36FAF1EC1A9A +:100B1000F51D402340CD6993B6FF41FD26745DFA73 +:100B2000DA9FC9F217A25D56D1D9651751BBECA067 +:100B3000CE2EBB22353ABBEC28DA6551AF44BB2C34 +:100B4000E27D6E97DD75FDA12D4C1F67FE23637658 +:100B5000D95E5140FBD5D6145973FE3DDACBECB2C9 +:100B60003EC43F0BD04E2527A1DD5C3D27A9C02EFA +:100B7000A01C6FE0E71BF837C179D4EF9319CE9C26 +:100B8000E03CEAF7C90B82CFA37E8F46DC0591F1EA +:100B9000D636DE9F8878CB13FA1CAB2C95D1931EEA +:100BA0006F6DE7FDB477E8CFBD6B27C45BBBF83949 +:100BB0006958BCD50D78CB1A1E6FEDECB935BC5514 +:100BC000C8D73122DE4A65EBEA7530FA51D7B5064F +:100BD000CBA31ED51BDD39E3CCD488EB3A3335C427 +:100BE000BACE4C65EBDAF0C0C717D0303FD4293A03 +:100BF00071BE863CCBA99C965A0509EB4FE4B8E13F +:100C0000B2E0DB42286E7151BEACB7A75D4F62E522 +:100C1000109FA3DD4CB5AB05D9E760EFECBF6FDCEF +:100C20006EA8E603486CA7F9BCBD5F403913EAE340 +:100C30000DA2771FFDCE45F5BD68EB837F7A305F4F +:100C4000C0FA52597DC694F1FA1AD2159B2937443D +:100C50007D507CBF3D647D5ECCFF05E41B03FB251E +:100C600043BFE6603B5C4FD9AC507BE0E4FD6E9C3B +:100C7000D42EAEDAC90715E6F71AD43FC83E107A6B +:100C8000FE68BE92CAC64B2477821068A72C97E8EC +:100C9000BA455B9F01F3B343D4C3ED9D63E32D538A +:100CA00034F5C2DB7D6ABD86D0F5D2796CE7F437C6 +:100CB000D9FE7C4DF79D5DED27D1E269751E863723 +:100CC00027DBCC949F68E927496D4FF7DD71FE5D06 +:100CD00083E06E5B208CCFDB8958A6BF9C2892B244 +:100CE0003604F0AF3F72FDA43F91D92D169E63F8F4 +:100CF000E46A57FE89FDB4FE3FD27D8DF019F78F6F +:100D00006267E5FD05B5664CCFF4CA36A00C727576 +:100D10008D7933EEF7AB82C145ED6B5D962EB4AFA6 +:100D2000419A507F8B7DE2094CABFAD21E3E3F28A0 +:100D3000ABA614D3739313C897AFA0FD04FA392060 +:100D4000496667403F779231BD45C4F9DAC3D33075 +:100D5000CFBE9BDC2E82E7597B38BFDA0372057168 +:100D6000C79EF1EF287F2BF01A357ACEEC1EAD3EF0 +:100D700034A7579B9EECF956A473AD57EC9CDF71DA +:100D8000BBD67442989D47F60BB8BED3B9FE93D537 +:100D9000C4F043D657F5F841EF27CC7090CCEB590F +:100DA000ECD79697399F977538A271A69BDACB87B7 +:100DB00063D97C473A378DE7FD8EF6DC746169852F +:100DC000486DD011F4F256A3BB19F5B15687A95856 +:100DD00061454A63217F75B120A1FEAAEAE73F7B06 +:100DE0007147CB4AF9CEEBE7EB393DAFE1DF893014 +:100DF0006BF85EAF5747D2A323E9C7BF2D1B127410 +:100E0000B879527AB4DEDE59ADB377EE407B27A4D1 +:100E1000779C8E67675B6ABF2669EF44C2C4C9725C +:100E2000B05763FAFBB4D2C74B7385603BA8A3B439 +:100E300089FA714C2B33509CEE78DCA8D18F62324A +:100E4000B578F6552BC30DB071A97EBE2689F16128 +:100E5000154744C269AA1F53449CD611DA2E76D690 +:100E60001EDA2EB693CFB7FDD8DBD44EE48ED23F38 +:100E7000B122925DAC21827FA2726BFE89B25DD6F7 +:100E8000F85985C36991E4C5592E8FC6FC193CDC1D +:100E90009FC1B39EFA23CC3D92CDFC19B87F03B914 +:100EA00040DEC5F3BE815E2827A35FC35EFA7EE104 +:100EB000B9F93F457BF3E82981A0FFC0FC5302F557 +:100EC0005B701F13BD68A71EC573FF00BF07D50E5B +:100ED0002929824BA0FE1FCC3F01CAADC860F67025 +:100EE0006A3FB91CE35CE1807A8E3F272065A2FF50 +:100EF00003F567A86A82F202B6BBDC8CE5078F882F +:100F000064BFCCEA0CF46B181436507D4EF9B1A1D5 +:100F100017ED3D417E0D4D4C8FBB5DBF86487CFF7C +:100F200037A9D1F933FC06D723757CDD6C61F081DC +:100F30008A0B111F180D28EF953611F907C7E1AA82 +:100F40003E63F744A75F6D51E552781CBEC51E0293 +:100F5000876FB133FAB1D59302C4953BC538E789A1 +:100F60006CB4870F391D90FEB8213F07EDADC96BFA +:100F7000364DD90AFD98EFE07883CB79C75CE24320 +:100F80003EDEDF904BCF339BEB98FF94E5FA6CA2EB +:100F900080206981B402FBDA92596BC1769B8B7316 +:100FA0006C32DA4B1AC4329403D2C2D35979F0FCB2 +:100FB000CF5F3F43F31FCD34D1FA472A008F140689 +:100FC000FBB57BD359FEB319AC1F7BAC12F76B3F5B +:100FD00061A6DBC3659471FCF4DF3265BD7E01EF71 +:100FE0002F9172464FDF3BBCF62FE9CCA87EED6E09 +:100FF00072333E98CFA84FBD5F3BFD53CF01A09108 +:10100000F845310ADA75615F2C0DD417E3FDCF5C2A +:1010100040BEFA71D9E366945BF192910C04F0D171 +:101020009D1D820FF10DE0223250C0DB43FB93D1B6 +:10103000F9D622A477AB81FAB72574C2BE01F9298B +:101040009EDCD8B448C67B285B853418B7A971E309 +:1010500002AC9718BD0770FF5C4C62FE72490972C2 +:101060003BF2BF2FBF6DA2FE59250B0BA99DA1EF2F +:10107000BE59C7E3D13EFD7E2CC17D57B2F0F4715D +:101080003CD71E78DF42D34DB04E6E98AC03F0F4DF +:10109000C2FA0DF4B9E7A27E7B04D20333E07F6F7E +:1010A000B817B2F34FF5BE886240FBC31133F3A704 +:1010B0001FDD04826C0A9DF43496DFCB9F17E87D18 +:1010C00014DC38ECE94EC3E7FAAC6C7E5FE51A4DF0 +:1010D0008FDED81883F534DE10A91DE83C9E4BA1A5 +:1010E0003D63D13D944F00A569FCFD952CA6AF6FE3 +:1010F000147D6FA15D8DFCAD48CFCF3F3936FFE742 +:101100008B6973EC9CF960572E3D67BE52BEE6CDED +:1011100064481FFEAA6CC0EA76940907D0FFE40475 +:10112000A7D76EF4F7B3A07F9FC4FDFB1CDCBF8F75 +:10113000F9FB9D467F3F0BDE0371D2742FFAFB59FA +:10114000F01E888BA6BF575746D3FF50574ED36724 +:10115000EA36D3E70FEADCF4F98F755534FF9FEADE +:101160006A69DA57F7344D1F9ACAC6B1FCD9D2560C +:10117000C451BB3C22C1FB1FF900AE90FFEE5E6480 +:10118000F6229DED76303F1E521843FD74D65E70F8 +:10119000376563BA47988F69FFAFC9193C9FD8BDBF +:1011A00049A4F8BDB2D0DC8576C581078533028CB1 +:1011B000B3D223663D8D80AED048BF274EF938A606 +:1011C000DB4A3639717E4E986431B908E8E66B3FE8 +:1011D00059133313E8D54CEA939C909E4A9432A05D +:1011E000CFF9C51FEDFE0EA4DF7DE16C6B0CD27D47 +:1011F00049F1ABC934BDAB35261BCFD7972550DF9E +:10120000176557EB79781E14FCC604CCCFE83D98DF +:1012100002F56DC641DC8FE91953EAF3B0FF84DAB9 +:1012200047E71DDFD5AA00749825012E95B0FDB3C0 +:10123000B4BE4207E053E778FA5E19706A40BEB365 +:1012400000F02AA4672A675BCBA06A97BBE4CD3C79 +:10125000287F34FD3B079BE4E0F6DECBB9D667413F +:101260003F843642EF9FD964C64F6D4ABEB75E08D1 +:10127000BFFFDB4CFECE4AFCAED142BFEB473D2C5C +:1012800040AF499CC6F8EEFF4C67F2A12D96D57B86 +:10129000F9618317F9A8BEBE1F4EE7E512593DA0BC +:1012A000E03D4AFDC236D90DC8D7DF2BAF8C43BA1B +:1012B000ADEFCC31205FF7A731FA78BB34779A19BC +:1012C000D6FBFB0D1619ED75974A05AF09D6BB3F46 +:1012D0005BDE4FFD4CB83FC43D26C584F6C47B049D +:1012E000C1A920DD7F40BC2658FF4BDEC30FE2FBC7 +:1012F000CB46C1896C6C6D3ADB7F0B8F89FD26E094 +:10130000436B1795BCB90AF28B4F1B69BB2FA73EE5 +:10131000B400FD329423A213B63FF971AA858EEB77 +:10132000E5930BBDCCDF8D9FC334843E87A94E6708 +:10133000FC39A7F1EBF41C66C46AA0FCFE505FFA0E +:101340005B7271F0394C450F3B87B9672AE3EF17A1 +:10135000CDD2013C1F500E88323D0F327ACD1B405A +:101360000FEE57EDE10D5FA77CAFDF934FFD7E776A +:10137000F77465A1FC70F176EB1BD4F31867D922E2 +:10138000E47BCF6ACF635CE9E690F6E388E7300D53 +:10139000DC2EDEC0ECE2D37A2CA1CF611AF8B9C4FE +:1013A0001D3A871920DE7A3A1FDB08950BD1DAC97E +:1013B0007F9526703EAB1D677F4D29F5D39DDA05DD +:1013C000B3A7C5956C9C4D7C9C4D61ECFFDC2F292F +:1013D000B389F55F3FAE7E0430C5E3FE58C1F6F237 +:1013E000726A2FDFDE32F1794C779391D2CDFDE82E +:1013F000F71BE2DCC5949A62463B755BB6765FAA42 +:10140000CF9EA96CBFFDB9FB375C34CBEDA5B85FAF +:10141000DF09BD5F57F27D630131EB0DA847B523AE +:1014200026380D4409A82F5636107720BE76303E58 +:1014300095F8E0A609EF631CE2F2F6592E6FEBB9BE +:101440007FFD4194B7F06C44790BCF67B8BC6DE574 +:10145000FEF550EF51D4333E7150F591546492E350 +:1014600022A42D780602E349BD8FD15B82225079F8 +:10147000E9961505F51A698956EF8BCB8BD3A48DA8 +:10148000D624E20B1897B53043936F4EC9D1A463AD +:10149000326769CADB8AE769D2B013A4E1789E8615 +:1014A0008E7EB2BAF4502996AB17B2D0BEE1E7FEF9 +:1014B000452A6EF62BD1E2E6248A9BFB15C6D7A4FB +:1014C000854B34B8D93B8D9D5F0F86C1CDFF279DDD +:1014D000E52FCD10F87D50C0CDF2247073D5E1B664 +:1014E00047E8A86E0F37533D171AB1EB70F336DE9D +:1014F000AE5D879BED7ADCEC01DC7CEF2DE1E62A2A +:10150000C704B819F0F1DB288746DE34717C5C48EB +:1015100071F428E0684B76305E1E3D0B0018CA3F20 +:1015200039CBECC5F51BE88334E4FFEE8085A69B40 +:101530004DF2712BCADBF713E8B99E1E5FC36A1B1D +:10154000193E56F1B41637ABB81BCA19B4389AE134 +:10155000671537EBF1484326E37707D3557D95DDD3 +:1015600077688E65FB231C2E69C86238A63951B591 +:10157000C34D8C4B3E7284C62503884BE646C62578 +:1015800083884B00BF0CB4305C72157109D4BB5119 +:10159000C525DD804BEEBDF3B864F364714937C3F4 +:1015A00025EF67A8FE217A5CE2D1E092A1935D5B12 +:1015B0003264C427C9F4BC7E593A9BA74878645961 +:1015C000BA39A49CBE7BF1C8E4FC424639BDE8C7E9 +:1015D000D7DFB19CE1905641265A3B497438A44567 +:1015E000A0E30D8B43AEB075AC3E161A87EC1CF52C +:1015F0001E4039B13BC2B97DB438A499FB59A23F12 +:101600006145C0BE3C35EDCFC3CF528D8F11098FE0 +:1016100094F27DF1FFF1C6C478A3C821D37146C20C +:101620001DDF486376F90122BD857479D6A14D137B +:101630008742E3DC54A9716EBCDA38376978591AED +:10164000F98FC349CFB192D572AB8D9A72B1288B05 +:101650001604DFD76A4B93E9F797CA5FCCC27DAD1A +:10166000DED7D297EBE2E3D197EB3B19EE9EE22F68 +:101670006B719E4716580D2877473E62F70B7EF731 +:10168000628C01ED5B669387F28FD1EE7C9AFECA85 +:1016900054D5AEA4F593E9F6BC4AEF99F77B052A39 +:1016A000A7AAAE5BE8BD2B7382CF9608EDBEE460BF +:1016B000FD57FD6954FF97BE930BB99F8EF338FA1F +:1016C00065EAFB3580FD42B987FD2A0EEED710F69C +:1016D0000BCA3760BF42F8EF747B96BD55877A6CB2 +:1016E0002FF40BCAD560BFACD82F972D11DA3D9CD3 +:1016F000A6EDD79087F54BD577229DFBED4D8BEE70 +:10170000DC6F2F6F477FFED71CE5BDCC7AC7E4EEB8 +:101710006536F0F9D6DFCB7CC1ACB3D33849CCA267 +:1017200079B05E698C6EDE439988F9FB2D14C7D8B9 +:10173000643FF95221C6D3798ECAF3AB61E3E96401 +:10174000660DC2FBF70BD4783A12B587AAF174FA8A +:10175000319E4E005EFE76BA2AAFA28BA733502090 +:10176000F2F2B7162FC7FD29C5CBD916365E0E315A +:10177000E3B98C1A2F679B87C5CBF9697A94F1720C +:101780009E67F1722EDD5848E3E50C7ECAF172F4D3 +:10179000FACC5B056C7D3ECC0F7F0E30517C9BE01C +:1017A0007380C9C5B7F9773BE397079DFBA95EA690 +:1017B000DED30F47778F6646477724637274B7A2EC +:1017C00040E4FCEED6E86EF79F3C4E13E85D29C17D +:1017D000719A3232A2A4BB834077A86F619C26EB3A +:1017E000A71FA7E9494E67E1E22BED2B60F4174AEA +:1017F0009F9E90FE82F4E9C9D1DF2607A3BF70F156 +:101800006BAAB16128B7FD1E41E3D719149FE2749A +:10181000687FC805FCBB70F16BFA31DE02764617B3 +:101820006FA15DB85080CF3B1D472152DC4AF53C8B +:101830007F909F0FFD55863D64DC4A356E420A2934 +:101840007A03F5B0ED3526D92B8FC751D0C7ABD170 +:10185000C7C7B0FE81C5BBB882F12EB283E3D5A85D +:10186000FB229594AFC0F39A1DE5CCAFE34A84B850 +:1018700035C4E13E1018F7220A7AF29B909E5CE193 +:10188000E8C92D7C1AF4F4EB19B7464FAFCC1026FB +:101890008C8774354CFC8E4F8B9EAE4688CBA1D284 +:1018A000D3254E4FE723D3D34ABC27B0E316E969CB +:1018B00028223DB9E9F99F9BD3D350447A62F25D67 +:1018C000A5A728E4A3969E82CFC927454FAA7CB43A +:1018D000010D69F1DBC4E77087FA4EAD453BDE00D0 +:1018E000DE9380BCFA9E5C7A4FA2BE41900418D76A +:1018F0000F1A1243DE9350ED2F03687709A0BFBC87 +:10190000A98CEE46B8FD65A421D796ABC90F730E1E +:101910004422DC8FD0D95DC2DE8F68B833F723262E +:101920006B6F499F1AC6DE7245A2FE3435783F823E +:10193000048F33A2BD45BD1F11C6DE42482DD533ED +:1019400083ED2C4E6A678974FF66CCCED2A3BD6747 +:10195000534F7A45EA973A4AC8DF0BA8376D684378 +:101960003FF1FE8E5C6A1754D7F31AF74FE9C60AA7 +:1019700033D0DEB7B105EF715EC918D387DBEEFF58 +:1019800014E86C6F043ADBFBFF289DEDE0E30E47A3 +:101990006761EFE1DC369DF942DEC3A9413A837904 +:1019A000AF8CD69E778B74F66FFC5C5EA5B3EAA312 +:1019B0006F1C443A5B3095F943AA7466035A5F94EE +:1019C00044F556DF52E47B7603BD37AAF2C3DCAFA1 +:1019D000126A0751F5D870F778AAF01E0FB55B3C74 +:1019E000CFEEF1746BE32BF5F37B3CAA1D43F5C7F7 +:1019F00054ED186ABD433C6ED3108FDB54C3EF0720 +:101A0000D560BDC521EAF5B0B84DAA1D42AD57B5A8 +:101A100043D862587C0562F45339E65F4C9CE8A7D2 +:101A2000AF8ECFD6647621DD50524F62E5511EE86D +:101A3000E5807ADE51C5ED587AB950ED254A2CC6BD +:101A4000A5891194D8B990E6F7532E75919EE42993 +:101A500088FB04FA7C3783D93B2EB55AE83998BF06 +:101A60008B9C4984F743B1C299C4B9E3F9FE760B64 +:101A70005DB7B5CFEF6AC5786B7ABFE613B1CCAF6F +:101A8000F972BAA918FB77A2C89DB521801FFC3B4B +:101A9000A7FBE144E607A7FADD0FBC927F02D74916 +:101AA000F5BB3772DC742D8F958F27AE36432E1918 +:101AB000F36BA67EABD0A58144766E372018581CF8 +:101AC000E25798FFFD00FADF63BA9DC75191B3E971 +:101AD0007D80212BEBEF41EE77FFE198DFBDD3EC6A +:101AE0000CE8673CD1FADDAB7EF87ABF7BDA8F5C1D +:101AF0008C4B25B8F8F9DA5DE5773F6D063FCFFAF4 +:101B00006FF6BBD7FBC3B71A890FD7AB758940E314 +:101B100075119DFFFB6B9D1FD7E06BD50FFE1B2F33 +:101B2000BE9689FBE64EFBC19F9AC9F891FEDEF98D +:101B3000DDEE07BF1BFDE0E510713F7A3E1D3FF86B +:101B4000C61BA28BDEBF7F9CC5159AAC3F7CA3EF62 +:101B5000FDB25C946B99D94E540DF4FEF1C6F1734D +:101B60002E4D1C28B209E8E6BE71BA894F5976D5C8 +:101B700068A3FB939E63ABEDE3CE1C0898C791145A +:101B8000D22402DF325E67F4A3AFA7AF6763593692 +:101B90008CE7B7C7989DA45AAA7D0B0DB7C62641FE +:101BA00036427D254D02A5CFEDDD8217EDE7C6EB70 +:101BB000665ACFF6EE7637BDFF9E17436205E67F85 +:101BC000306002F8C1E39E34F3B827492BB751BD0A +:101BD000F463AFD08BF2AF2A4531E3B988492232A2 +:101BE000C6413349DAB8245505CA6BC8AFE20A5971 +:101BF000BECAF7E30BB4F14A729ACCC4953C1E6F8F +:101C000063E55123C569E3F7D6BC36AA7FEAE2CC87 +:101C10003F912984F99D86641E675E5A8B7ABD1AAE +:101C200067BEDFAA8DF3FC736E2F54D36A7C562CEB +:101C3000379938CFFD0D61E2CCF7E496623F6E2311 +:101C4000CEFC5F65A686FF9D861FF1FE4FF6771AD4 +:101C5000C6EF8F393572ECB54C46AF833A3976F51D +:101C600094568EA971B73ECFDBBFA4BF3FB69EC9C5 +:101C7000AFB1FB63A7407E0901F7C78E68EF8FA95C +:101C80007CEC92557B7F6C84DB1FF4724C7F7F4C25 +:101C9000E57F7A3936768F82CB313BB9BBE4D833D6 +:101CA000F977C7FDB1E69912F547EA8F65F3BDE410 +:101CB000DA85E5882756E565D3785F7F71FDDA39E7 +:101CC0004C9765B2F4D7F2395FBBCBEF83FD9CDB59 +:101CD0002D23DD075B59A04D3F244F2E7ECA9D96D4 +:101CE000836E9D1CACE072B042B9BBEF833538C641 +:101CF000E223D1FB60E37C468B97374E0B8D9787B1 +:101D00004E69EFA9C673BC5CC0F9CCA08ECF0CCDD8 +:101D1000617C6648C5C99CCF0CA938B955CB6754BE +:101D2000F93B1896CFF826E4332A7ED6F3195A2FBA +:101D3000F099F85EC6670270F65DC1671EBE4BF88B +:101D40004C1BF2196BF47CE6AF67DC1A9F5967F500 +:101D500019E9B916E72FAE0EF7732BA1FC1A8748C5 +:101D6000EDCA2B1EDD40711279209EDE7F08C16F07 +:101D7000FE7517D24711F3F39F2CDFC999111DFE91 +:101D8000BEDBF88E3EEEDE2E7E0F7597F7EEE63B5D +:101D90007BD318DFF19B088DDF190E376EE3F6FB5E +:101DA00060DCE8A378B12293D533EA49A6F10E2688 +:101DB0006B07F84D18BE367A24B41DE0DD995ABE83 +:101DC000A6EAF3A389ECFEFDA88A9F8E30BE36AA50 +:101DD000E2A7D6D0F849CFD72E8DF135CFEDE1A7C8 +:101DE000EEBB133F915977AD1D80AE7BAB93D9010C +:101DF000F4FC47D5FB3FED7875BF93A3C33FB76BAA +:101E000007C822F2A1D2ECC8E5A28D2BA7DA01C641 +:101E1000E2CA750A346685CAAF76F4DC5E1C503DB2 +:101E20003F7AA8F89D9252C3EDF3217DDCC8D2A37E +:101E300007A91EFBF607496B303E30FA21A39FB27B +:101E40005E9F7B97DF5F5DC6FDAED5FEABBF339770 +:101E5000B63A796DB14CEF934FEA77E6726264431C +:101E6000AD95DE3BE67667AE0FFF6F167F57B5CBBD +:101E7000E6C45CEB437FF69C16E2AC27C1F6D620A5 +:101E80003F2C6B747E58EF54B816A09FF860A3489F +:101E9000EF910F6613DF52C465A906CA4F0762852A +:101EA0009EDCB9841CB86776567F809E7DE0D9FCA5 +:101EB000AC01C4092D02FF5D1AC9FC4840FCBF8A71 +:101EC0002CB3466FEFDFCCFDA9A11C8D7F6D94E88C +:101ED000EFB10D24303EBCF199BD4F627CA5580393 +:101EE00071233F9CCDEDAFFA67F2D32F970F05EC2E +:101EF000C7E4D52EB33B01FDA1D63B9480F6F5CFC8 +:101F000046859D9334DE38EC467AADCAABB2238E5B +:101F1000ADF2C5523EB0E358C54B6857999DC7FD19 +:101F2000C274769B9DFCFEC34E7EDF61C76A27F5B7 +:101F300083D9C9ED42C9DC4EB35377FF416F1F4AC5 +:101F400047879BD4F17B0563EB8B0592503EFA3BB0 +:101F50000DE2ADC7BB1FE4F1EE5BCD6CBD5B9F3303 +:101F6000D0FB0DF9061F8D6BFF3CBFC7FB00F18B4B +:101F700044BDE701E5963608F49EBA1AF77E7B83E6 +:101F8000E0453FC9ED18EFDECAD66B73C204F1EE2F +:101F90001BD6AFC2FE848B775F81F1E9E7868A7733 +:101FA0009FB402EFAD5F5D12437FF7448D775F8191 +:101FB000F1EEE762BCFB149AAFC6BBDFA6C6BB1F3F +:101FC0008B9F1F6DBCFBA934AE811AEFFE57B96C15 +:101FD0001EE20E77154C95C7E3DD07F0C309E3D683 +:101FE0001F9CA5C6A5F7D2F4929E8A430DE9E37122 +:101FF000EBF7CCD6C6AD5F50F8CC1116B79EA59FB7 +:102000007BF1A523E7D3C7E3D46F7AB9EF61E4434B +:10201000D1C6A95FC8FD22EF789CFA4651423A200A +:102020002E0FC539C4EDA5F19BD438F5C36A9CFACF +:10203000C64A7AFE3A16A7DE53F21AC6CBAAEA15AA +:10204000681FAB7AD79B713FFF2C7706A5EFEDABEE +:10205000DD2C3EBD574CC1F3DAEA18772B9ED3AD89 +:102060007B9EC5A7EF077C87F6BCF138F50A8DB3D8 +:10207000AEC6A91FE671EAB7737A0D1BA7BE83C56A +:10208000A97F2397C9D5914C167727BEF3FB4F61E3 +:10209000DCF068E3D47F92C5F84DF56A567E7B6725 +:1020A000B838F56E1AA77EA48BC5A9DFDED14FEF35 +:1020B000158C98BC14E78E6433FE162C773D36E4FD +:1020C000D7BB3B13B3F1FCED06972B3B3A589CFA78 +:1020D0006A8C530FA5767B05CA9F7677085E97803A +:1020E00071D5247A0EAEA49BA83F8E1AA7BE1F05F9 +:1020F0002BD27787D0857826629CFA0E760FE3562E +:10210000E3D4579DD1FA05848D53DF507F0EE3AFA2 +:10211000164CCF6171797B789CFA1616A7BE99C7C9 +:10212000A96FBE5371EA1B930D68B76ACE966C1700 +:1021300053C6E3D45F0A13A7FE5A2EC3A79722C63D +:10214000A9DFCCE2D43F32719CFA41E42B0BC6E309 +:10215000D4E379D3527ADE349BF2E170F1EAF5B838 +:10216000710C4F46C08F6B389DEFD0C53BEEC778E2 +:10217000C7905FDEA98D773C7C344CBCE34E16EFF4 +:10218000B85FE0F74E23C43BDED119655CFACE3F61 +:102190006D5CFA4FEB7CEA4EC5A59F95CBF8CAA5BE +:1021A0005B8C43BF5B60E9A0F8F33DFBFAF0DC27F2 +:1021B000DAF8F3CD61E2CF3F95C3EF1586893F3F53 +:1021C00027EFCFE35ED464E3CFAB7AC46DE0361182 +:1021D0007F6636D2EF14BD359DF117FDEF146D6F9C +:1021E000507FA788E1EBBB0DB755DF21DCF62EE76A +:1021F000AF71DFBA35DC66CCD3E2B6FFCAFD830629 +:10220000B775E76971DBE84396E702715BD2EC656D +:10221000CF05FEFED0C1EEDD1B26F3FB429FE4326C +:10222000DCF67F01DA7E2DB8008000001F8B0800ED +:1022300000000000000BED7D0F7854D5B5EF3E7324 +:10224000CE4C2661984CFE4F20843349800426648E +:102250004212088A388108C1A28EE895E845EFF05D +:102260003F406CE3AD7F687BDFE54002061AE20485 +:10227000A3C68ABC09061B7B910ED55AEABDF5257B +:10228000883C6A5153159FB5B45F120549CCFB1EBB +:102290005A7DCDFD4AEB5B6BEF7D92396766321359 +:1022A000C0DBDAEF854F4FF6D9FBECBDD7DA6BAF69 +:1022B000F55B6BAF7332C14C882F99900984B827B6 +:1022C000CE81AB44483A5ECD44499C43EF7759F800 +:1022D000D588573BE94A87F6C42929BDF9842410DB +:1022E000C5FFA501CAF9DEBD8652421A768AB63DFF +:1022F0000294DD3EABA710AE5EBFD533919047BAD6 +:1023000037ED2D4B25E4BC5B72C5CB8424EE5C7BA2 +:102310003381F6A445B04D7310B2AED76DCA84FABE +:102320002D7E2140A0BE4F524E4E82FAA1D60A59B0 +:102330008166C773A7119246C8FA5E2F7D6E8B5FC8 +:102340004C15E0B92D66EFDE6BE0B95B9E1052B123 +:10235000DD90AFC2EA76C22F44B1CE87FB432D3069 +:102360001F289D27425500EEAFC72AB84F7CE2C117 +:1023700043384F4264692ED085BFE7C0B55570170A +:102380005809F91FB9021D6F30CB9BEDB1C0FDB6E6 +:102390009F3D24C0FD8FF8F38A87F8F9F384C0F3DA +:1023A000A9F87B2E5C7DA2BB6036B04766CF6FE993 +:1023B00065EDD7B7097EBC35C1C3F8863F5FD2FF54 +:1023C0007B9758A17EB05D203F00BAD7B7160B5E51 +:1023D00098E7A0D19F6D8371071DA43A40E981E77A +:1023E000CCFC3911FFEFB3C6C1739BDB921C7B8021 +:1023F0000F25322C4219211B5A8BDF28453EDE4F18 +:102400005CD01DD9EC8741815F9B5B05BF1B7EFDC6 +:1024100058B0DD5C0E6525D3E83A04F513DC921262 +:102420000774F599891BE7F971ABD0AE407F434241 +:102430001DE59F52289143949DE444DE5CC63ACA50 +:102440008256A18B009DA9BDAB97132BA5EBA39141 +:10245000F9C17F530894553A1DF462413EA5538E4D +:102460001352B33CA81EFE4B3FBB6C00FB4B2741F5 +:10247000FDC073A71BEA5F9D04BFFF939C43F9B99E +:10248000B95348AA8449CC6F12E7201B9A93BC1316 +:102490002B819EE6DDB9C9F5D0AF35A5EE415C2FA5 +:1024A00053E6BB7538D9D74B9D0611E83619EBD6E4 +:1024B00060D9F474BE4181F20F4CDED65B91DE1F11 +:1024C000185C0799183C80F2B964678A610FF4D3ED +:1024D000ECB059CF40BF1F671A93B1FEDC32619751 +:1024E000AD88906A6FCB0DE9D0CE2D25158BD06EBF +:1024F0007A1EE3FB39A3BC88CAC56EE23AE4A0A207 +:10250000A4D4C03EC9A972EC40BAACD7542F7343CF +:102510007DCE1D0682F3B9056834C37ECA9BB8C25E +:10252000803C996EAC9B84F29399E7A074E69C5D25 +:102530007A0AE56DAFE4A95E0DF3D8BB60964B81D6 +:10254000F156E4D46D40FA26DF7B226929F6B73BC9 +:10255000AF988AC3A87C18BE9C07EDFF5C778FC735 +:1025600049792D9B54BE1B287FA9FCB909E946FE79 +:10257000A6E50874FE1B970B3305A0EF9D1D229561 +:1025800097BE0AC17F10EA3DFB05459C8D0FBBCB72 +:102590005623BF9ECE48C6FD74D302A3468E3DFB94 +:1025A0001FEE11518E04B905D743F9A5E83A04F39B +:1025B0005D6E372AC172013546E4DFC6FD4973906E +:1025C000CF243FA89F9C5039AFDDDF27E0BC6BDDF7 +:1025D000FA7EF4FB214A5921EFE601131673F93B09 +:1025E000B50D2AE3A08CF20BF4559196CA64DC2752 +:1025F000D5C4E587FA654491B0BC6515717541791C +:102600004B2768C0E0F12D462AA7B86DF8BC47E516 +:1026100019C64B5FA5DD0FD928DFC09F6CDDBEF862 +:1026200038953422DF45F3339E8F526051F6BF6AEE +:102630002981713FDB2FB9E260DC7A01D61FE56AA0 +:10264000671CE5E797F873FDE8F5F16D8A4702D559 +:10265000D8B6AD915E2F3A98DEE9BB8E74E13A6E42 +:1026600004BDB3036E55ECBFD55301E5DA06C105D1 +:102670006493DAB616933C11E5D6B704F5ACD22EC6 +:1026800004709FD776ED3E69443EAC2232EAE9CD34 +:10269000D57E9309CAE95E42E56CF33A9FB006E441 +:1026A0002AA31AC60DA22FD30BE307C9437312C87E +:1026B0009F2574BED739D87E697684AF4F9DC9EA0D +:1026C000731B0DC41DD4FF345F027107F53FA32DAA +:1026D00059532EF04FD2B49FD599A3A92F0CCCD427 +:1026E000D4171D9BA32917775DA3695F726A91A612 +:1026F0005CD673A3A6FDBCF75768CAF37BEFD2B4D0 +:10270000BFF6C21A4DFD7517376BEAAF1FFE674D56 +:10271000B9827C4FD33E79596522DA8133262880ED +:10272000025CF6A4D4A400BF928D729200F2F0591C +:10273000A348504FF737DE96E885FBE412F00FF61A +:10274000F966EC400C272760C0E346CB199D82DB7D +:10275000EF0C6D27717DF0C5A93F0884CAF5F5D44B +:10276000BEADE3FB26DDE76841FD5B7B4AA4F66571 +:10277000AF5427A09CED6D1288CF817261205DC19E +:10278000F6EDD297F4F92D9CB60CE279A41CED81FC +:10279000422C15E9B81FD84FFFE16F27B9818E6C25 +:1027A0006E4FC856A91FF78919FEE1FE5A1B30F675 +:1027B00007EB9B0C22F507EFA3A9DC7E4CC5FB4180 +:1027C000F643E50BD57FB97865F3FB0BD20BA4DE9E +:1027D00044989E10A1576CAFD757D75DD4DAEBEB76 +:1027E00087F5F67B9C7A485F56DC67C2E925427A1A +:1027F00005C44F7ABD5425B748C8EF8C3681A4086C +:10280000A3FA2B3B5BA6FB5ED5331B505F05CDB314 +:102810009FC8CD05A847DA0C04F508E8F36CC46539 +:10282000EABABF25B375EF20EE8402D4071D22C596 +:10283000077AF9F82DD72F39879EB1CA884F1AC564 +:102840002A94A347BA0B6EBE069E3BE75B24C5C322 +:1028500073E70047A23DDCD851D1B11D1E79D2618A +:10286000A4FD9F31F97F9589FDFF4894B1FF41C2D6 +:102870007087D2211C44BB79AEF3196B0EF477FE3E +:10288000D0F67B26C13CEFE2E3F577B271882437BE +:1028900023DE3B7FA82405ED873AAF7F7488B4DD43 +:1028A00000F1379733BC41711D95AF1C32825FA692 +:1028B00010F567641D842F81DF599DA212877CEC7F +:1028C00014DDF1709DD21647F14D76F07A3968BB70 +:1028D0003EC44B53B89C4E26FEEE52BC7FBF56DF23 +:1028E0004F6E8276F0FCA45AED7DC271908DAFF7E9 +:1028F000002C69C082FA42DBCEC6E5D9A6C343CD1F +:102900009C1F831708B5D3B5AD0C57EAE91D6CBA07 +:10291000EDA415EA273F2F109B1C86DE0E4E6F0795 +:10292000A3F782D163427D1C426F07A797E33D3D29 +:102930009D7AFAB6048C5A3A74F3EF6F7CC6EAA516 +:102940007856A6FE414763295D4FA54924D3609E72 +:10295000D77432FC718DCFD08E745D4B02F58883B5 +:10296000FBF1916BF07FED3ED413CD0E567E474EBA +:10297000784CC942F97BEE66ECE79CCF4050FEFAFA +:102980003B6FA37E427F8760433FE1E58E16EA17E7 +:10299000E8E559E5FFB98E47A9DCA9F73B1D6C3F77 +:1029A0000C7680DCA19C77DC66CD0DB257CFA1BC44 +:1029B00021EE23BEE66BC2F05FCF6FD200F2973EEE +:1029C0002A7F7AFEEBF9AECA97CAFF2B95B373E361 +:1029D00094331F97333D5D03177C6FA2FF505B2B31 +:1029E000112A567AB96AE574B546A00BF482399972 +:1029F000B6A374E9E9017FC88472A1A767C35060D8 +:102A0000177146972FB441B82EDD2D3FCBEE85F6DA +:102A1000334C8103E988833E8827078124E1407590 +:102A2000762FAEF7A7DEA9B6A0F54CC971707A7DF6 +:102A300056831DAF3D564339109F09139E87FE43B1 +:102A40000FF527064B2D04FD87C14B0F517FA26662 +:102A5000BF99EC80476B8697DE43FD595F1C41BFF1 +:102A6000B0C3B7A607CB039DA280787FA943A6FD7C +:102A7000ABE30D76AEB5E13EC810DD9F3ACA62C742 +:102A80006B224CA73C393A6E13CDCF523C1909BF8B +:102A9000FD4A66F38986E3C830CC379DFBCD886B51 +:102AA000C13FC6FD407F80FE389BAD1DFDFDE1BEF0 +:102AB0008FFDF5509692D3A95F2422CE437E960ACD +:102AC000121ADF04FE884AFF90E015916EC9E623D2 +:102AD00014BF8019407B24F2F53BE7B0D1ABDFCEC9 +:102AE000F83F827B1A18EEE96BD0E29E1AEC22378F +:102AF00006DCE367F3D7B75BC8FD7D3DEED9C0E7E1 +:102B00009DDEC6FCE85A37D3B71944A6386833E0CF +:102B100020F40F62C03DB784C33D7D87DFA9A2F6D4 +:102B2000BCCC400C8EC8F867B30EFFA8FE5A241C1C +:102B3000A4FA6D23FEDC7708F5E7A2E123BD9F1719 +:102B4000829722FA7D5DD46F519E96AE8ADFD79729 +:102B500076F26426F9FAF97DAA3F17C9FFEBDE9FEA +:102B60009B887A49EF07AA72A8FA817ABFAE1E6DD8 +:102B70000CD8BB8BED77FB1467743CD73A95C973BF +:102B8000343C97967B7978EE9D1C237D6EBC78AEA5 +:102B900095FB17D1F0DC6339CCBEFEBDE3B9539C85 +:102BA0001F7AFA069BEAEF413E4E7E4C9089230C39 +:102BB0007DD1F0838AD73AC2DB59153F6E380CFAC3 +:102BC000CC1106C70D75517B5BDB66D4C4E9AE3E04 +:102BD0009E5BD882B80C6398E8E7B6FDF7F47DCA2F +:102BE00082AB8FE7FA73386E8E80E73ECC61FEC30E +:102BF000DF2B9E7B3D676C3CB705F19C1C46CEAE3F +:102C000018CF7585C573B543DE5D4011C8DFD87830 +:102C1000EE75E43DC5733FA4B86D86C97F80DA9137 +:102C20002878EE48AE83EFABB1F1DC10C773431CDC +:102C3000CF6D403C07E50D88E7E839810ECF0518D8 +:102C40009EDB9E236BF0DC506004CFCDCAA5F16003 +:102C50000FC56FCA4E81DA4315B7A9F6760B5F47E9 +:102C6000FA03E58D94E3A3E5CD022BAB382EE3F018 +:102C7000EA6ED4B31960A7F0B825B3737B379E977B +:102C8000647A658AB77C53654A6FAC786E13FE8EA2 +:102C900078AE23363C97931315CFE5E484C173399E +:102CA0007CFDBE6AFC16F89AE1B70D88DF12C7C03A +:102CB0006F6D80DFAC978FDFCE3F19237E6B03FCF7 +:102CC000363B76FCB6A12D36FCB6A1ADDB84EBFB22 +:102CD000D7C26F1B397EDB7895E2F664AB9C88F235 +:102CE0007CB9B86D666ED72318BF9D9A6BA372AA84 +:102CF000FA3597BB1FEFCA6571F231F6E35DB9692A +:102D0000A1FBF12E9411B83F5D66F320123B1F9A90 +:102D1000804DA0CB86EB3EEF590CE37CD420BAF07B +:102D2000D647BEC5CD88036D8F09361C770A1A8930 +:102D3000323C47ECBA87D0F57253BBFF7FB299BFE4 +:102D400036DEFECE6787EFCFBA989DE3AD5E2EE408 +:102D5000C8B04F6E9348A504FA733961D741D47750 +:102D6000CC9EB9717F9CCCB7B7238658DDD02EAFEF +:102D7000B1447FFE053E6EA4E7553EAEC8E9A9A268 +:102D8000B877AE81DA1BFD391B8972BEF654EDF1BE +:102D9000F81941E7747BFF4C28CEB929F7D02318E6 +:102DA000B75A4DE4643CF2DB93C4EE13E5DA16F750 +:102DB00082503C34C1AC3DA797B8FF8E7CC6F378F7 +:102DC000F5BC5EE2E303090AEE7702B66FC75CBCAE +:102DD000CFE6A7D69B0869C17A0B5FCFF7A01DC6C7 +:102DE0000FFA3A44FF76FA9CDB8EF2126B7FF0AB5F +:102DF0000FEB27F279617F52EA687F0D997EAB5124 +:102E00000CD31F34DF911EB63F3FD6BF07F552F0FB +:102E1000BC649857218EC3E5B7DA4FE5E5AB5EAFEA +:102E2000B4836E1FAE83BA5ECD496C5F13E580CF6D +:102E30009D151A8FCCCCE0FB81B8CA681EC4AA7C51 +:102E4000030EFA00D72DCF5E24241171B2DD48F3B2 +:102E5000089E6D7B9BDA9125658BE8F9B04A4F7A25 +:102E60009B48BA4A46CB4BEE3478503F2C7178E3FE +:102E70000DF0BC5976E109D1E879EF38E9FDB73CAE +:102E800021ECF9EF85CB3CFFBD30CEF3DF68E72BBB +:102E900057EFFC37FC398BDE8EAC433B4246EDC826 +:102EA0001A6E47D6F8B4E729E3B52368C87011EC69 +:102EB000ECD6885D595AFA7645A521D4AED82B1B9D +:102EC0003F457E4EA932507FC07EBF365FC29CA573 +:102ED000C5CD450848D2C2EC2F10C35DE1F73FAD28 +:102EE000CFC893D93EB279270AA541F93B1E9F3539 +:102EF00078FF4337DBD5FE0CE1F73FDDAF4ADEF864 +:102F0000E661C07A4798F179FED0C83EAFF26BE631 +:102F100093AE3EA75B67959EBEEA47AD26BA2E5A92 +:102F20003D96ACCE47F75C2B3E07FBA041B03597F2 +:102F30003942E98F958E164E7FB4735A7A9E1A0BDA +:102F4000DEF585C7BB7D79E1F1EE262E5FE91DBF79 +:102F5000667AB0D440D0BFCF205DBBD03FFAAACEB6 +:102F6000676BF71BFB83E531D6F3D90A55FEA29CAC +:102F7000D3465BBF769DDC5923C8876A9F503E24A9 +:102F8000C42782BF59444CC471987A7E9EDE191BB7 +:102F90000E3B9617D52F3A9617C62F3A86F3A5F60D +:102FA000A1F7ED5920F7D9FB05827AF5C8FE761313 +:102FB0000A5BD173B7D26BA075B509E330AE271D9C +:102FC000B45CBCBB825E498F6B02FA83FD7EF61C4B +:102FD000F04FC475ACE5E397B41FA5CFD90E1F35EC +:102FE0004D86766BF70B32E693CC7B55EC42B91CE1 +:102FF0007A5EF4E3B9C59030E724FA91CA6302CD52 +:10300000F3B2B50A6EDC879B0F8B07E368FD8A5D20 +:10301000F49CE14991C6193F015E2640F9C01EF1BA +:10302000A0C2E272444A1FF5DFE6BDBAB6793ED4CB +:103030000FBE6608EC80F6358D217103035D3F3FBE +:10304000B31F66D2B81DF3078B8E69F57E7197B6F4 +:103050005C724A5B1E140C342FAEAC477B7FDEFBE8 +:10306000DAF2EF26F3F5216CBC04B320E07815C149 +:1030700072E1C07624263FF54AF32B0E4C0BBF6F4E +:10308000A9FF0FFC4ADFCFF22BD6F3FC8A0C1018F5 +:10309000B4A7EBEE27FE2E21F2FE5D6B66CF47F460 +:1030A000539BDEA1FA209A9FBAAEF5F2F671D43C9A +:1030B0000B1D5ED0E38265F9DAF252F90AEDBDBE6E +:1030C0001CD5FEB3F840CD56E2C794C965C447F19C +:1030D000C0A66A66FF37F9C7E74766C8F755A25A20 +:1030E000891507E8EDFF88DDE738209AFDBF2F83BB +:1030F000D9C95E23A179A3A178D3DB9084FB3C409E +:10310000E83900B9D8C3F1A681ECA1F8F3B894026C +:10311000F54B7EE97621BB54DC59B6E0D7C7936402 +:10312000C49D3BA4648C87FD9CB8C0AD258FCB8C1F +:103130003FE6FFF0BA88767DC2E24E577EF1E21498 +:1031400019FDAF8B27A87E255A1C9A6F6E398EB158 +:10315000CD99B6A38B105A173B2BEAC19D2673DD80 +:10316000F7A1FB484EB6DD7F02DC38C0BDBDF58956 +:1031700038AE5CECC2755CF6B95F4A84ABBBB5EEA9 +:10318000834DD0F026579C0BD5CBCED4CF9C188F37 +:1031900053F17BCEA163CD88CB553D4FF524CE2393 +:1031A000109B9E2F9A1655CF174D0BA3E78B905966 +:1031B000A8E7F9FE5883552018531BC3EB87C72691 +:1031C00071BFDEAB5D3FCAA9749E1A04F321197565 +:1031D000F6E078E701D43F33429F8B234D547EE2E3 +:1031E00088741EF98DBCC1FD982DF50AF8FCD4AD8C +:1031F0003A7D22AEA2FA4E3F2FF5BAF5ECA785270D +:1032000082E4EEF5691353CFA313EA244EBACFF844 +:10321000F32A9F57737AF5FDFC71DBC5C213C09B7F +:1032200047B33C89B631C653E952CBD90D7CBD3882 +:103230003F0775FDABFC9BDA29D0757FE1D08D7B14 +:1032400015006B09C527E8F9D65016A962F9D46EA6 +:10325000AA1F3BD4982BD7A317E259F117D34D746B +:10326000BDA7923A2A278FFA455717C8C3D433A26D +:10327000CB00FCCF53F5A78FE94737D703691E4929 +:10328000A33FE3B8BE4C25DDB6C520B7EB3B441ADF +:10329000A7D2EB4F759D062EC511CCA31FAC34D120 +:1032A0003C80385DBB34D265C3FAB52E89A03D1889 +:1032B000EC5DB9849EBF7908F5B7F4EB43ECAE93AF +:1032C000769877CB3FD85C346E375DBB5E2D9984A2 +:1032D000D2A59C61E78309C5A977AE43BFDD9D40B8 +:1032E000F791CAE738CEE716A1271FAF23EBB77CCB +:1032F000C598F2A2AE9F1FF42D5E0F6EB3513BD95D +:10330000B1CD4ECBCF6E93E9B5735B3EBDFE689BEE +:103310008BD61FDE564ECB8F66058E23DEF8E27607 +:1033200052ACC0FCFBB2FC3B1218BDC58718999685 +:103330008AB918BFE4FB82AFE3503C2B9F98944EB0 +:10334000D7314E678FFE91AF6B2A298EBF16E39A55 +:10335000B54619D76535B707A481D9C148EB6AF9D5 +:10336000335BA78F709D1CD89F6E3DF9BAA711EFF4 +:103370002E5C1F2FAC4F17D47DD4FB3F6DE8B72BCD +:10338000B07E871CA1EB7B6212F777ECC4A459379F +:10339000BE0E5EBA47417E94F07EC137BE66FA63C8 +:1033A00005CAE3ACC8FA43D5D3574D7F0498DE8DE8 +:1033B000A43FBEA1D31FD73E3B8DEB8F52AA3F3E09 +:1033C0008CA23F06B8DC9DD4EB0FD8F75DA557AEB5 +:1033D0003FD63688343E11497FF4A1FE488DAE3F7A +:1033E000D6A1FE70A0FE9877D23EA6FE60EFE5A8BB +:1033F00072D818A3FE1842FD1124B77F2BFA630878 +:10340000F5476A74FDD1CFEDC077A3EB8FDD787EF1 +:10341000BAFE32F5C785A8FAC343F5FB06AE3F2EC8 +:1034200044D11FDF1DD11FA07782D6CD3A81C5C3FD +:10343000DFB3F9ADC928BFF727D37DBE86CBEB0339 +:1034400059CC2F490487A187E66504ACE83FAECE8E +:1034500062FD7DD2986245BF33523F1B38BF42FBAD +:103460005134FD5C684BA1E5687E56A47D1FE26780 +:1034700005C2E3A8A61942D83CF6D1F88883C6292C +:10348000F57E56CD15FA597B25DB9BE540D7DE55F9 +:10349000928CF216C9CFAAF9AAFC2C32763EFBDF39 +:1034A0008A9FE5453FCB31EA67ADAE66F2BD5AF97A +:1034B000DBF6B31AEC23E76634DF6A247EC3E3301D +:1034C00047FCF7D1B84BD1D32C6E136863711B172F +:1034D000C66DA05CDC722BBDBED05A4CAF6ADC4618 +:1034E000CD0728D9DBCDE23681EE939352E9FB7B01 +:1034F0009AB8CD873C6EF3A170D084F5CA933C6E28 +:10350000D3C6E2361B316E2360FD1A16D7D92DD2F1 +:10351000FA4FCC7233EAA903270D01E00CF64726D7 +:10352000623C7FB748EDC4C7828124B0F6EA7B9144 +:1035300034AE93C2E54C1FBF49E1711DB25CBAA223 +:10354000384EB4F8CDE2291CCF4489DF2CC6449C08 +:10355000B4A0F5F0F1F5F075B378DA5181C5D31464 +:10356000753D587C8CF4D8DE413EF6F3F8DBBC5751 +:103570004B683EDB27C0048C5F951C1228DF37ECBC +:1035800017FD9887F509C69D2CA3EBB69ECB97CA6D +:10359000FF9AFD8CFF9F086B9650FEEF1564B4AB4D +:1035A0001F9B158AC30FEC135032890DE687FCDE92 +:1035B000DCC8E26CF35E5DBC0BE771E1A848769075 +:1035C00051FE67E02F229EAB1CB7224E555E33049E +:1035D000B03FFD7A64E07AA09E59C5EE7F55EBF1CD +:1035E00052566CF1B497D0D7C675E3384E8D77A795 +:1035F000FB38FEC29F31FCEDB3D3A3FADB67A7878C +:10360000F1B7CF4EE7E35EA5F84761569F01D37649 +:1036100096DCB9AF92C63F7E415C98D7F6B8EC6FA6 +:10362000A0F18F2E2F8D43448B7F9494764BE1CE67 +:10363000DF22C53DCA16AC1653A1DF7995AB9B9628 +:103640004179E925A501E31C4B1C3D8B69FC23AFA7 +:1036500098C65D165C2495F130AF1B4B051BCEFB65 +:10366000874F9FCC0A8E7BBC35FDBE663CB7ACB1A4 +:10367000BB4F60BE598D45A2795AC46FBC38B25E4B +:10368000417AD500FA19F56A65C8FBBB5ABD1B52D1 +:10369000764BB26D2E4F6182791A111FC17AD7D73E +:1036A00010AF99E6A5ACB221CE17903F707D7B514B +:1036B000DD371147C0025A717F9D792FD780EBA06B +:1036C000AE6F5A81A0C9AF3ACE71609F8DE1FD45C2 +:1036D000922C85C3FD8BCDA2C66EF799C7F60F4617 +:1036E000FAE5ED1675E656A27ED829B9E87B568A2A +:1036F00045203F1522F7BF2E61D1C08CB2D1F7F41F +:103700007E31E3FA66CCCF6D1108D513E89F509C4B +:10371000C4F7C1166410F0EBB5990C9F44F4530E36 +:1037200087F7EF1EE3CFB564BA7E991706770F448B +:10373000C0DD7B0D7EEB62E1EAE3E9999D6C1FA79A +:1037400056A6FBF1DC7A60C43FD2E26A3D7EEECD44 +:1037500034A971318AABD6735CA5E26A1547AB38E0 +:10376000F8EEDB7B8D46A87FB4F585343C87D2E349 +:103770006BC0E1F4FD890D2F0A34BE72F7566DBEA1 +:10378000951E5F0F5ED2FAEF7A1CDD9F9A7C73055F +:1037900019F597BC3CDEF2516F9CDB8C7C27663FB1 +:1037A000E26FBDDCD7D7B8B767C2FD8117CB6EBE5D +:1037B000166E6DB6D5D13C4B23F108766C64B765B7 +:1037C000DE4A7143A5ED7CFEE87E88249F0834CE56 +:1037D00007EDB3FF9D4E58DE87599B0FF246B64C5E +:1037E000F979A5F92067783F91F24160D4749E4F32 +:1037F00029603EA5EA079772FAE36A046209C24BA0 +:10380000A5AA3FD42369D6EB0B72C9C0F4A140E549 +:103810006773168BBB67546BFDA4A2532CAF54F592 +:103820006F8B22F849FAF5A376939E7F5AFCE8E75E +:10383000EAFDDA26D94FED6D13E04E94E38DFBEFF0 +:1038400013D08EACCBD7FAB7378816EAB77FF6AE6F +:1038500048DFC3B1E57699D1FFB27D5FB461DE6820 +:10386000FFA527ACA8C7067AE3683EAEEAD71E815B +:103870007D86F95F01D8679291909FC03EC3F28B1D +:10388000B0CFB0FC12EC33BC1E837D86D797619F0E +:1038900061FD7FC03EC3F22BDBDCB4DCB5AD8A96A4 +:1038A0009D93983DDCBB28E128CDAFDF1767C3A30C +:1038B000A4EE96A5D9DF81F90D5558E8FC867EAEB9 +:1038C000CD83D55F5D9372B8FD568C6C1DBB8CB8F3 +:1038D0008E91F4550DD757DE8228FA2A425EA6ABA8 +:1038E000606C7DD51F21CEF85FA5AFFAB3581E7569 +:1038F000347DE59A6452CFA935E7E551F5D561D01D +:1039000057CEC8FAAAB646A0F19C58F555A4B84EB1 +:10391000247D3588FAAA744C7D254C467D5553D6B6 +:103920000CB7A15F0FE5BF571114B4CB6995A6760C +:103930007C274BB2F94D0C675D9EDEBADDCEF49666 +:103940006D4220DB05FCE87EFE67BFFFEE38E456E3 +:103950002FAFB00F68BED527332E3661CEC9D58ABA +:103960004B7C55FACDFB15E9B77511F51B8B1FABD9 +:10397000FA6D9D8FE9375210A37E7B02F41BF47B16 +:10398000EED23CAB2728BEF255E9B70F7BE358FED9 +:1039900023D9783BEE17757D7B9FFCE2369A532442 +:1039A000D9DEC44538F39E48827162443C67013CCD +:1039B00007FD2C061C17134E9462C489D265E3C41C +:1039C000D9056170A2AAF7689E3AC6F5DBC2EBD1B1 +:1039D000BDF9DC1FFA9AC4F56F2A18FB5C507D9F75 +:1039E00054DFCF65C7F55BB571FD01EC3F37947FC0 +:1039F000533B585C7FEE734B5AC713D757CF937E18 +:103A000093AF8BEB07AE4E5C7F73E3D871FD7E1EE8 +:103A1000D71F8812D7DFC8E3FA03BD3F64793B1193 +:103A2000E3FA752783E3C3F505DA73984871FD73EC +:103A300051FC0B75FD5A04CF5B98271B6DFDAE96AC +:103A40005D3F1725AE9F76BB5B30A6A29D2D2E4114 +:103A50007174615CBF2CD4CEEBE3BC7AFBFE7CBE00 +:103A6000CC9EE3EBF76813F347A2E5FB6DD4C9A343 +:103A70007A0D8967EF0FBFFF8D33A3C5B359BE5FC2 +:103A8000CD48BE9F7B17EABF4871ECDAD13876F893 +:103A90007CBFC0B793500F47CC13F25FDEF758845A +:103AA0002C39A67CBF91385EA740503E8F74B27807 +:103AB0006A11E6C1615CB591C5535D2DDB595CB5FA +:103AC000FD3E1AD77B613F8BF7A9F1B9B59C9E9259 +:103AD000A347E97DDBE1A3F4BC6B53AB20A3EC8EE1 +:103AE000E4C3ED6571D021611F3B4FD7C555373712 +:103AF000B1B8DE90B086ED2B1E57FD10E3AAA9A148 +:103B000071D5C1DD2C4E3B8871D5D2D0B8AA1AD759 +:103B1000FB6BC5F17E3F25B638DEEF31AE1A14C718 +:103B2000DBA2AED7E1D8E2782F15448DE3BD541067 +:103B3000268EF752018910C7FBDBC89BCF9C25FC62 +:103B4000FFBCF931F2E6D7AE62E7396B7D57F6FE7E +:103B500055A4739C9D974437E6492AF7B3EF308EFE +:103B6000377F7E67D76FAA72315E94E5A0DFA3D45A +:103B70009FF34876417D3F88EA4BF57D26723BC82E +:103B8000E3DC51799C90BA6840B262BD44FAB5F169 +:103B900052D21FC4C7C154D228829C48C34C2EF5B0 +:103BA000FD7477DE56E540FB017802CF7B36D8BA4C +:103BB000DE14711F1D166409FAAB382C507F71ADED +:103BC0004FF0E37981346CA2FDACF5B578F1FE9A43 +:103BD0003C338987FB7BC09EF4039E6EE0EFA1ED32 +:103BE000E1EFA1252FCBDB85FEC0E71D42009775D5 +:103BF00053AACF847ACD682332E216A34DFBDEE8C8 +:103C0000A67CDF49C413094E564F970AE34AF9DAF6 +:103C1000F749731A4DC49D12FA9DB2F1BE37F45E96 +:103C200050DC29DC7B43AABD588DCF63FE5C43F892 +:103C300073DF3FCEF87AE5BFFC64E6D83859CD177C +:103C4000BC6A38B971ECFC39957F6AFECB533FFAF8 +:103C5000D3A30C27A75A6527E65FA9F192B1F3E732 +:103C600042F25FFE4EF2E72ECC8C2DFF255A5CEB24 +:103C7000AF8593FBA3E4CFE971726F66F8FC173D43 +:103C80008ED4E3E40CC4C969413839C070F2D57AE6 +:103C9000FFEF3DF57D53FEFEDF57FDBECDFDB38446 +:103CA00071BE6FE31DF37D9B2BC5DF1B2EF37D9B48 +:103CB000FC99B2261F3912FE1EF77B64B3E4ABFAFF +:103CC0001ED932F445AFE27B6423F212EB7B649C95 +:103CD0009EF1BE4776F72CF9AABC477617D21F840F +:103CE000BBC7FB5ED2F4598668EF874F9F15E6FD90 +:103CF000F0E93ABE47A273339F5FB4F7AD54BBAE51 +:103D00007FDF4AB4907CDCD77692E0C2F8F256B3FB +:103D100075364904BD18CFAE0F19BC5E94CB87C46D +:103D200080D981FABDD4DB86F3FDA32160AB80721C +:103D30007DFAEB1E1C6ED5D6EFB92A0107D952C801 +:103D40003F85FB9EEC2A03F1A2BD7A86EFDFB3C666 +:103D5000AE2949B0AFAE2D5DF4CCACB230EDB7FEBC +:103D60002BED6FA148EA0261F0C5CB1CF73F65203F +:103D700035D8EFCA7B7F32F02CE224D93907D994A9 +:103D800090DFB3BC04D6A1F1AD5CFA7DEA9FF0717F +:103D900081D052E4EF2F5CDEA3C1E39A659BC4F8A7 +:103DA0001F988FF50BFFE43CFA16F4D7F80D0B7D46 +:103DB0003FDE9DEBBAA5244CBC13FA7919F9611EBC +:103DC000DEF329FA196A3FAFC4F73E45686640C57D +:103DD0001DEF03967A25A977B200E5E3B31C77A41B +:103DE000664239AD7732D69F503E7DECC47C2803C5 +:103DF00056C4386BDCE14F1FC378E4C21B879E7941 +:103E000004F31CA69BE87B1EBBF9B9903A6EBE5327 +:103E1000A4F4E43BB57C385D3B361FDE0EE5C3DB26 +:103E2000E1F8F046A9FB1DBC0F93A474376E23AED6 +:103E3000753047774620BE04FD2E39F0DC23D0CD07 +:103E4000A43C858252E8E7B7D8DE3CCCF0BEDA4F1E +:103E50005EA9FB2CF2E774EDDBCBF1BB16F1A745B5 +:103E60001AB732E7116582953ED71FFC5C854CEE90 +:103E7000177246D7A1BD98C97732CA01F4576FF2BD +:103E8000D96FC5F841DEE3DFB641FB5D0EA5DA135D +:103E9000463E7EEB64FB2E09A68CCF35D80E9A8366 +:103EA000BF272038191F8ECC715FC4F99904E2C175 +:103EB000767BCA19BFACA753E6507C9A474A578015 +:103EC000DE4A2D64ED61BEC3B4FD7C1F5522F1793D +:103ED0008CCE3DCE7D04E397F1F65676CDEB25985A +:103EE000FF114F02665C67E3F3E4F18672A4C395A9 +:103EF0008F65B9D0F7B804EBDE8E492D80EF2641EF +:103F000019F3430E802247BF4D9964A2E7447ABA61 +:103F1000089FC7F75DEEF6627CBF35AEF79947A004 +:103F2000FDEE02133D5F5868F055AF41B9B9D1427B +:103F30007114DCAF0EC6E7655C5ECA9CECBB61BB6E +:103F4000FFD34CEBF57C8D559EB29C21F294E50C91 +:103F50002F4F539CE1E42931A23C4D738697A7F67D +:103F6000E2B251B950AF92DD44FD7C6978570FBB86 +:103F70009AFBF0B978B38BE9F52A864BC5E104DAF0 +:103F80004E1C6EA2FEBE64ABA3EB047AF8D42C4A9E +:103F90008741425CA0EA69D1E2A6F5A7547D1C6185 +:103FA0001C028B8AF64DCADB15769C78731D41B9CD +:103FB0008771129D638C93E864E32CBCD1E245FBCE +:103FC000B210F566D0FAFDCE29517A7FCCE53B924E +:103FD000FC2715B2784F24F91F1E957F0FF2399AEE +:103FE000FC171432B98175A9A6ED23CA7F07BD2637 +:103FF000E433F94FE0F23FEC244A5539CE97C9FB40 +:1040000046E76E2AEFEA7E985BF894663F14411902 +:10401000DF138B445F32A7CF8AF43951BE4405E3E6 +:10402000497F20850731FE642DB749F87DCD6F3A71 +:10403000D57DEBBED7C9F212A97D6D2717BBE37002 +:104040009F2D10A8BF305109B8CD482FF111CC0BCE +:1040500079903F77C0C0ECBB329DB0735BC947908D +:104060001FFA7D1A9FD755EA0D9AA789EF5377A1BA +:10407000E7BF21BF0E186C096847D5F5D0D3F3010F +:104080001F6F7D09DBD7D1F4FF41D4FF657865CF81 +:1040900025FFC95C176E1F2FFCE6CB03CF8ED18F97 +:1040A0009FEB8327783FAA9E4E50F574FE889E7E34 +:1040B00082EEC7DA3DAA9E7E11F534ECEB36E46B56 +:1040C000C8BE4E817D2D84DDD77E675AF47D7D1577 +:1040D000F673E358FBAC71649F8DCDE74FB89DFD3F +:1040E00084F3E972F9FC06E7EF89E87C3E1181CFA1 +:1040F000AF85D59F91F9FC4604FDF926DE1FC31E4E +:10410000BF4BD74737BE19C775D0FAF783D70FEA29 +:104110003F170C6887088DBB267FCB4AFD43751D72 +:10412000553B7515D77500E71F695D171A188E5A2C +:104130007A78E5E334FE75E5E3FD74ACF17EEA647C +:104140007445B3DB09A376FB2FC83FBD1E6CE7DFC8 +:1041500011FCBECB6B2CA4F1CEDE65A8770E7C37AC +:1041600059C06F1065B9BB04C4CB2A1FBFE7647880 +:104170005E7D2ECBCDDA676D4D16301F2AA8BFC4E9 +:10418000B1FAD3CF03E6975C48F596FB03A4FB0393 +:10419000A70E7F715CD09EACD4A05E960B991D9249 +:1041A000B97D50CB334ADC930B195ECAC6F1FF5080 +:1041B0002ADE6FC8617A99E16CA6878D85AC7F8312 +:1041C000C74FF0FB8109E584FA55A3FAFCEE43AA38 +:1041D0003E5F6FC1F692AACF6760FF530BD5EFFB2E +:1041E000B0FE22CD732EB71773F93AA86598A78B46 +:1041F000CFB364AC79EAF914EB7CD7727B0DF3BDD5 +:10420000AEB02C727FEA7AE1B32413FFDE0EDB9F9F +:10421000379FCE9D83FBB36A047F7A96623F15E594 +:10422000C28B2CFE614BC0FE9E3201BD4EFC6ED295 +:10423000BE0A13CCA3FD5F6CFCEFD1F8B763F9A9FC +:104240007A5B31C6CD56F075D2CBE7C8F3A64041B4 +:104250008993F2E30E1CE7FA050C0F249E66DF0D2E +:10426000AB20B0DF45DCEF8ADD05F36D1414FB1ADB +:1042700094FB651696CF6DB99DCE5FDFFF087EC5B6 +:10428000ACFA20B92596D228EDB7D3F6B6094A9DE7 +:10429000673CEDE300375882F998528C7CBCB95CDE +:1042A00050504F559029EDC8EB07B9BCC2FADC87D6 +:1042B00072402C40ECFC51BE86F6AFD075A8F0D40D +:1042C00009C8D7F87C180AEEC67B148C451283EC1B +:1042D00023F85DE1843CC2CEE52CEFD2FE46E751E7 +:1042E00052A29DC775CF049F978164A8F25D4FE5E8 +:1042F00025C6F9E8FD766511D3C7CAEFE3FDF5CC15 +:104300006F7F84D247EAE6D1EF6091BA2276EDA2C0 +:1043100071B0EBB95EBBDE6C61E76597A4A1E0BC50 +:104320007401C4783262B391FCF15EE1CB09318D46 +:104330007B20DCB8B1C60B9E2B0C89173C57384646 +:10434000BCC04A7A151193C46C2C8E8CDB69F21CAC +:10435000B6EF10B7BDC8F77D62041CF6221F4F955B +:10436000CF953B17911CB8C699893231995D319F21 +:1043700017F6C7CF0B693B66172B6CE4C554C328EF +:104380003D2A7D6ABF2779BF23F335315C7FD6484C +:10439000AA8F5A187D7382E6B3A2B4E264309D2AD4 +:1043A0007DFAF99EDAB6D55509382065EB62F261DF +:1043B0000AE647796919E7193F87AE9B62A4F9C7F6 +:1043C0003DF7FCB380DFFBF5BE8DFDA6E4FBD6ED2B +:1043D000033EA5BC18EF0209223DE6DC261788DA69 +:1043E000B78EB173AF58E562BCF2D03DF1C1794CE4 +:1043F0006F3139A8BFA1B83A15358B92B9F234F8AC +:1044000007F56FB8DEB74079E0F9CC957690FBFA06 +:104410005FBBAAD340C54F3EF2C7C79B60DFD7DF63 +:104420005ADC86ED53FEFDFFA6DF80E53B056AEF13 +:104430008D473257A2BDAFEFD6E2AED17DB293C564 +:10444000C14B3DB38B501E25AF4CC7AF1022B46794 +:104450007A6A2B427BC475C306A6DF4A9369B0F221 +:104460007A7EBE423E4FA2E537394FEADDFDBFC23C +:10447000F877F78238398EC97FC26CAAF76DA78B9F +:10448000E0FEBE4506039E3FBF7A5D4613EA55DF58 +:10449000228340FFBED44D6C1EC6D45E71B5257418 +:1044A0001E71A5EE6F623FF5770BD5E1E26141ED3C +:1044B000BE5184575877FC7B817845B935C2FE15CB +:1044C0007999CB6FD26CEA3F0AA5A9F4BD109B1471 +:1044D000FCFD3E55AE5479FAE5B4FF958D7807E4BE +:1044E0002773765AA8BC2C9BFE9BE9CC5EEAE4417C +:1044F000CFBF107E7D66413BFA56B9182F5842F95E +:104500000BFC9B81F37CEB12E3ABAF7C06FD0EF75B +:10451000ABF3E30A7AA99DF214E07CC02E954E1409 +:10452000639A7FF1F8E6EF7ADF8BF3BF64D2ACFFDA +:10453000CD11D65F9CF8B905E785F4A03D80F92F31 +:10454000C4F1C429BD59A817D479C7AAFF96CD666E +:10455000F63A48FF2D9B9D1659FFC1BA2EC77AC067 +:10456000319F7F0BC5DCC6704C24BD74E7EC71EB4A +:10457000A53B678F432F85E1FFEAF1F05F3D2F36C2 +:1045800072764351B6417921FE2ED3F3BCDEB8DCFE +:1045900051F9168649D7442B9373FC1EF6AEE2629E +:1045A000B3490CED3756FE7F2794FFDF198BFF3799 +:1045B0008843F4BB389F2D10285DEE61983AD5777B +:1045C000E04205CD7BA1B989FA2389A0F382CFF11E +:1045D00093DC66127CFE9F5265D394D33C764DFBF0 +:1045E0008C6A9968BF339DAFA99F5CE3D294A7D42E +:1045F000956BDA4FDDEAD6941D4A95A67D6EA347EA +:10460000539EE6ABD6B49FD1E6D5D417F86B34F5FC +:10461000B33AEB34E5C2C0564DFBA2638AA6BEB8DE +:10462000AB51535F72CAA72997F5B469DACF7BDF24 +:10463000AFA99FDFDBA9A9BFF6424053BEEEE2312E +:104640004DFB8564245F47C0F395CF40C0F0DCCAC2 +:10465000532CD0782AC0AB1EFCFB06B711F5C7203F +:104660004BEA3A1A34CFD373BDDBD473C2E5EC7B8B +:10467000FD0AFC433BE9D1E5C52C047D8BDFCF77F8 +:10468000BBB4DFF55FC8CF0B17EABEBF5E41721245 +:104690006598D7C25322C1F7B5974791AB50BA0876 +:1046A000CD8FF59C11A9BD278ABB07F38946E91276 +:1046B000C645979A2740C8459A77BDB05C203F1001 +:1046C000C2D0C9E901BC2BE1FE0FA197E70BE8E9D5 +:1046D000D59FFF9F9FCDCFFB5DC4152E5F3E121F60 +:1046E0002A14338DDF55B805FA9EBB7ADE1FC20F40 +:1046F000CC7709C235F1B2761F4EC8D7EEC3892EEA +:10470000FB987214C25F858C8BBF32FCC379DC824C +:104710000D609EB70C13FA7E4124FEDE2269F3A6DB +:1047200062E56B529196AF5F9005B794C8CCCF4BC2 +:104730001D23DF05FC930CC41991EC4A5E91D6CF82 +:104740008CC1AEE41505DBA1F1DB1527CE2756BBE6 +:1047500012ABFE9F5F14A2FFE7178DA1FF47FC8FEE +:1047600005ECEF0DA876097EDC181FB2DAA7FBF185 +:104770009CF886A2B1FD901B8AF47EC86752B01FD8 +:10478000E28ECB48E071BEE3183755FD928A05C52D +:10479000B7605ADB711E278A95CE3B42E9BC632C79 +:1047A0003A5FD9CEE202AFBC21D2BFDBFB5AAAD816 +:1047B0009506F4ED2385F47D2EF5DCA2CA4BD8FED8 +:1047C000935A3AD11983F97AB1DF2AB942D864C130 +:1047D000FBF7D16B2439BAB768DCF8E4DEA22BC34F +:1047E000270F8C478EA2F93B0F8975EF7B8184FAE6 +:1047F0009D8C0FCAEF26D0F8E0C3BBD9DF937E783B +:104800003BF3575A399DF5FC5AE662F251612DA7E8 +:10481000F873A73091EB398FFD5F919F7613CDC769 +:10482000067EEEC1F99EC89C4BFF9ED11F4EBF6312 +:10483000093E8738CBE97C8FD3F9BB0746E8DC47D4 +:10484000E9AC5E4BFF1EB84AE7DD0FAA7466D9A833 +:104850005E403D017AC1640BD0B8F212D142E96BDF +:10486000C8237ECCC306495C7E433A4F2D85E78939 +:10487000B8FC14DACF2F9C12FD1B6266F5BD2C9993 +:10488000E5BF34C23FAA5F79FEA8D12E69F2D7E313 +:10489000516FCDA6799C9A7C19B57DBC2EBF46AFD1 +:1048A000CFFEAD88BF3F6122194C9FFD4B23A682EE +:1048B00010E2B507FB377A7DA6964FF4E666F486DC +:1048C000D927EA35B1FC426E9E06AF5DD49453AA57 +:1048D0008673F334788DE4059733AACD79C1ED332F +:1048E000BD364D79728D5DD37E4A9DACA99FBA3598 +:1048F0005F53EF505C9A726E63B9A6FD349F5B53B1 +:104900009ED156A5695FE0F768CAB33AAB35ED0BA7 +:10491000035E4DFD11FC857E1FFFD24ACC8B3A828F +:104920008933E07FFFE6C7FFB9929ED7F5ADB4D3D8 +:10493000F7B1D2EE3007CBA1FE7A228DC96BA47AF3 +:10494000757F46AAAFE27A6B676AFF9E59A978BE67 +:104950009947CFA3492A8FD30B4C1E2F72BD6630C7 +:10496000B3FC9A21C17B11F58F1ADF57F36DAA8032 +:104970008E6B407F2E93BFE3AA0CA2777BD69A362C +:1049800094F78761BFA1BC3F4C08FFDE3CA3FF61E9 +:1049900089F163847EA1AE11532C46F994598DF9A7 +:1049A000762A9FFEF2E3F46A8CF7EEEA5B6A47FF31 +:1049B000F04412F001EAFF1FAA04856000800000A5 +:1049C0001F8B080000000000000BC57D0B7C54C548 +:1049D000B9F89C3DFB4AB29B6CDE01026C08685042 +:1049E000C04DB2098104D89080B13C0C2818498090 +:1049F0000D2F7904121075ABF4B210C243C36D7C55 +:104A0000B5A82D77A1D86BABB6A0D8528B98007AF9 +:104A1000415143558C2F4C857A1551A2886E15CB88 +:104A2000FFFBBE99D93D679315ACEDFFC61F4EE65F +:104A3000CC9C797CEFEF9B6F4E2E5C809F318C5D20 +:104A400088280FADF6B9CA4D8CED5FEDA5F2E0EA0E +:104A500085AEF2418C3DBFBA81EA871456B5D3C604 +:104A600058859979770E09BF77A5CBC0586AB87C6D +:104A7000C6E54D701530F6D211F50B2FC31F87B167 +:104A80007268F4790E0F7AA39F17C67B9F79D3F1D2 +:104A9000BD766B76B32B85B1FA3DAACBE264EC9A76 +:104AA000CBDEBCCC0BF35EEE72D0F84D8A7F20CB10 +:104AB000867598FC159543707C0F63698C19159A5F +:104AC0008C35A58E77CD81FE835CF0A0009FDC4EF7 +:104AD000EDB758797BE4BE65696466D62AFB64311C +:104AE000A6644DAB62B08E8A5433B340BD4261952B +:104AF000B8FFC8F77AE1BE619E6B9C3F7695CBF715 +:104B0000E1DF9ACC395B989BB10D19F03E2C65031F +:104B1000368C847FFE5E551E186783117EEFCDD8DC +:104B20003F7E9F56E52FC1C64CC70771E27D95B108 +:104B300018DC17ECD36833FBD561503A1A18C2E978 +:104B4000B4E22D4138B14C8311F715CBE48F875572 +:104B5000DAB1F4139C22C7F36107580FB399030F1E +:104B6000C37E18AE15EA9F1FCADE76A7121D2E1B44 +:104B7000563B328DA6709DB100ED7703D203C1DFA5 +:104B80009531D54EE3338417CBB0D1F8B83DD60B71 +:104B9000FFE7CD9902EDD3057DDC9EEB9942EB77E3 +:104BA000003E47449F57EEE3F6DCCA2A17EEC7E8FB +:104BB000CDA1FD5DE27BDDCB16410F2EA7164E2960 +:104BC000F07BBB0DC78776D8CF7D36598776282BEB +:104BD00007B6B04E781EE3E4EDAAC2F795EE0D30AD +:104BE00033EC37CECD1CF8C880FDA0BF23AEDD630B +:104BF000C8656CBDABAC2A6330B40FF466185C5466 +:104C0000EF30C27C492AD41D387F59C741C0FB36DA +:104C1000E6B8428176AB714CC7A1518CC5334E17B3 +:104C20008C8DE9F00CC1765967AD2C07EAB1A1BAB9 +:104C3000C79A01F501A1BA1FEB5B0D9CCED6BBC68E +:104C400074AC1B82FC58B986E06D6D9D9803EBF542 +:104C50005814C79D4EA483148223AC3816E1111555 +:104C60008EA2DFC5E0BD6DC8138706003DF9338C09 +:104C7000AE4130FE466CD2BCF7B8CB4CFDEC79DED1 +:104C80007B713DF6555D4624C1BB8624D991BFC3D7 +:104C9000780844E081C3BD32274078881D1820BCC5 +:104CA000F4CFF8C25F0AF3F50718E276983389F07B +:104CB000B22D63A58278D93644E0258719902E63FA +:104CC0006199E9F0A0D1CC1622DDC6E5304F00F1A4 +:104CD0006561B32BA1FCB5A0CFA75CAA28B9FC489D +:104CE000C8B88F39A13DA6C240FD134419DEFF3A72 +:104CF000EAF794CB28E88BC3E325B77717EE13F0D8 +:104D0000578172E3C83A03F1DBB67503B6290AE2AC +:104D1000C1519E03E57FAD66AE7926C2530BF63FC7 +:104D2000E24A8EF572BCEDE9116F629F17C35B34E6 +:104D30007C1D1372375AFBF41BD54ADC9FC1EABDB8 +:104D40007F1ACCBB744F72AE0AF31EAB52DDED502E +:104D50005FF64C7A2E4088B50BB9576FE84A63F07E +:104D6000E04EDBF64A2C2D7BEEF6F471A29C72EA43 +:104D7000D651BFB794E4D7DAB8F812C477E43A8EC4 +:104D80009D7F2305E5F9A4BF5B48CE02529D469066 +:104D90006FB30989B4ADD706427D9690F35F08FCE6 +:104DA000BCB6BA8AC699D5593B910D63C4B89D5C0F +:104DB0000E2B172CF07EB84E729DF94C27B16E85E4 +:104DC000FF2E00EF1C338268857D1DF32B2E801C87 +:104DD000AB354E31E37CB57EDE8FDE837F732A7385 +:104DE000C7233BCCDDA87F3EFF9D6B3E42A69DCFF7 +:104DF0008C273B73C2F3DC50551BD20767E9FF01D8 +:104E00004E1F468FC900747064AAC250EE4EABBCF0 +:104E1000D1559E131EEF8D6FD5D9088763F82EAE3E +:104E2000ABE6F2ED7EA53B3CC6E4CAFD57929E0E72 +:104E3000C18778E1E27008C1EBFF081EE3D5890461 +:104E400087B95314D28F9170008A9F384EB39FBF99 +:104E5000C87D32D7B13858DF896613C18FB502F1EA +:104E600014323699BFAADDD7FBB82E07FC87FB8228 +:104E7000419A9261BEF9004CE4A3EBFCD0AE996F6D +:104E80003E6BFE0CF5EC1C5699D0AAD0BEDE8FB25C +:104E9000AFF7B5FB8A5C77E43E27097DE17BE7B39A +:104EA000A10735E33163EB10B48BDCB9F6940FAE98 +:104EB00084FA30E6423D7DD67D5D422BE2CF9DDA1D +:104EC000A3DCFD6A75D7D08383BAEBE3D9BE293A58 +:104ED000FB4361DE50DD0176C48A0CD5793219F8C6 +:104EE000B6CA743F92E1146BA791215CD49A04E492 +:104EF000C729CCEAB441FF3B00D91760CD933D31BF +:104F00004E9B665F9FB72815283757C070BE3CC2BE +:104F10000FD955B305DC57649869FCD9CCDF86708E +:104F2000047AFB424B6FD1E0707D78FFC3BECFFEA9 +:104F30008F82CEC47D3B9259AB0278ED52AC81EDAD +:104F400030478DEF0E57793EEE9FF9CD202A17E5B9 +:104F50006609FDCFD76B62F2A781ECA51A61CFBEBF +:104F6000636255BB6C58B6F6CDD3C8F7A9EED245EF +:104F7000B91A3956E3FB0F1A1FD531D29DA4CF5968 +:104F8000565BABCAE9EE74883E88EE6A1CB83FC037 +:104F900007BB00F6D8FADE8B5D086FA91FC1BE59AA +:104FA00089E3AF8F8D1FC6125848BEC7205ED10E51 +:104FB000CC317EADA5D36EFAF9E0BC47B6013F789F +:104FC0006D46762754BDCAC9267C0F206242FA9AE4 +:104FD000ED337DAE7DDF6B072902FB9D936123BB23 +:104FE000727DEF910EAA43DB48C4AB1FFA5BC3EBA3 +:104FF000F722DAE0F9FA2BD8CF3AB379BF55B044AB +:10500000B65133EE80F0B891F375D34F11E3478E6C +:10501000B3DE00FA19E0A3DAE72D24FB34A3B7834B +:105020006CAE1C6E47DE976BD0E99539D6E44C63C5 +:1050300072B8FE7E2F5B95563FCB52BE27E116B667 +:10504000C3DEED389819B6C3EE6A7AA3E3505F8DDC +:105050001DE67FA303EDF57FD60E7B7AD71B648711 +:105060003163C37B3F81FDDCF3824A784AF695B118 +:1050700013B06E23980D0949642FFBB1B4FAFAD02E +:105080007E1423400AE09EEC044507EFEFCF75D273 +:10509000BA8D4ED66A87C5251B5D8A0B9EDF23EC31 +:1050A00019FA013AB827C9B1ED4E20798B95AD8B2D +:1050B00049C2F7F8BEE57CA171735C8A6308F10F01 +:1050C000D93F926F24BC5E46FDA2A5FB8BF3C9CBF2 +:1050D000B905DDF9E48881EFDB0FFB7E18B63033CC +:1050E000E3C7F47CBA6F2E9537FA1651D921F4191B +:1050F000F8811DC80FED55AFCEBC0DFDC0DD1617F4 +:10510000A82FF669D5AB0B7EEE44F800BEF1FD1B6F +:10511000EF9D5608ED9B6C46B2F336F6E5FEA9BA54 +:105120004621FB6193D35CB11BCA99AE52731E0A30 +:10513000BC8C7803F2EBE7B19C5F67BACAE9F95718 +:10514000EF6EC89883F661462C4A14783FEBA706A9 +:10515000F4630EC37A19F225237DBCDECCCB60AE9E +:1051600091E0121470EDCAE576D0469337A701DAC4 +:10517000AD41588D861EAD463F73D8F0B9919EABB8 +:105180000AAC0FC78BF5E6DCA2819F1CD71A04E698 +:10519000CDEFE97D333DC77DD1FB497C3DB29F9288 +:1051A000C7DF57F20C629C389A6F7D12ACCBA61DFC +:1051B000279E3F177C16C9270DB9652684CB4C97CF +:1051C000C79C47FCD2694239392BE35087127F29AB +:1051D00072AE534139673FAFB4F607BCC796AA8198 +:1051E000B5408FB18A63921BFDCF52930BE1DA9EDB +:1051F00093621F00F31F353AEC49B08FF43C8EFFE9 +:10520000CA71607FA2BD5F6A227A3E9A33EFD72AC5 +:10521000B7F9AC5A7D33DBEA0F083D13B673783F1C +:10522000A7B150F48375CD2E573D31F1DDED9FA32D +:10523000439226B9617CFF2A95FC95D9E3D4636338 +:10524000B1711D3BA8B533415C1C1C08E31D17D58B +:105250004EE6309729613B63B64F6FFF30F44E0A3C +:10526000D14EE03FDDEC26B7EBF96427C26367055A +:10527000C163A8C181F0B8543B8AB1BB09BF71E3D7 +:105280009E74A01F64CFE372C15EFEAA87FCA47166 +:10529000678D04B7128525C23A9B7D06E681793673 +:1052A000BB4D0105DEDF9CD379780CF2A3DBE8A4CB +:1052B00038404EFBF565D45E40FEC52B38C508EA84 +:1052C0004FFE8ADF660B0C42FD5DF0BA75AE865E5E +:1052D00036BBDF1F8C7A6CABA0231083B67185615F +:1052E000B8217C9C2444D7105E0FDE1E4BF87CAFA7 +:1052F000590D58781F03E2D39EC1F9719C6AA3F936 +:10530000E6DEAF0430DE32B7E058A905FACF6D52C1 +:10531000882F67AF52FF6AE1F0D6D965DE864AB2C0 +:10532000176AFD11F69AB0E7607033D2EFA5DA7311 +:1053300091F6C9C23C619FE4B13CAD7D12CD7F9234 +:10534000F6898D799621FFCC31320FC1A7E43A82DC +:10535000EB38F5F4E131B0AFCFDD0306201C460990 +:105360003F66B3EF2D2BE273F37995F89B193B174A +:1053700021BCD43B4626A33C6FBBFD8AF413D0BEB0 +:10538000268FFBD15B0DCE9F9720FDBE6022B91A00 +:105390006D3D569FCA0602BFC7F8142A253EECBED3 +:1053A0001866D4C819009107E74D75772903347240 +:1053B000E5A7795C0F24AEE2FE72AA9B799CE80710 +:1053C000E60CD88E7E2C28243FE22D7690330FF504 +:1053D0009AEC7F5AE1F13A6379831FFDC1FEB00E6A +:1053E0009CCF09EB40FD96E58BA3FA005F3295D97F +:1053F000BE442A07FAFA50FB205F369597F9B2E8C7 +:10540000F9E5BE2BA99EE3CBA772B02F97CA2B7CE0 +:10541000C5545E09FA0DFB0DF1955239D437819EC2 +:105420000FF35D47E555BE2954BA7CD5D49EEB9B5E +:105430004B659EAF969EE7FB9650DDEDBB99EA0566 +:10544000BEE55416FAEEA072B8AF91CA22DF1AEA8E +:1054500037C27717D547FAEEA5B2D877379525BE6C +:1054600087A85DDA192FE3AF60CF4D4E9CE3207B18 +:105470009BB95C68976D8D227F5F16F27B749EE707 +:105480000F79A9E17EAACA1AB4FD65BF17F2B8FE6A +:1054900049649CCE0CD6566B36F9EDD979E8B76FD6 +:1054A00005FE77027E960D1EB01DE5E87342CEC65E +:1054B0009A5A3C7D94B09F9E58EE21FF7CD99EE580 +:1054C00054B2A2E44B8AFB3C25E4CF56A39FA1DE55 +:1054D000DCDAC05C7E781433B05D41F9B06D88A130 +:1054E00002E5F95D433E6F437E9E54E071A3797AF5 +:1054F000D71083C14A72AAD48DEBFC36CFC4E932EF +:10550000CFF33AEEBBBF3BF547D7417BFF750607AC +:1055100034B344B789E23889302DCA351957D916C2 +:10552000ABD7835F0A7880A4BE0FDFDFDA7B20D1A0 +:1055300025D4AFE1FC3480FCC6ADE656C588F20D3B +:105540001C9A87A5ACC7FEEBE7FC1AF96DC046D7DD +:105550007E5C5F7FBF2B1FD7FBA5E0BBAC16E7D8F7 +:10556000185850F616CFFE18783E28E01D1B0BF594 +:10557000CB1FF1EFC772F0CEC0D83828AFDCD3BA5A +:105580001FC3AF435B3BC7DAA07ED5217600C54081 +:105590006EBBB3CC0EF5FC0ECF010C4316747ACB68 +:1055A000E2114FE640633CAC67EB71E65A03F5113C +:1055B0005DFE03243E051E427460610D687F599DA7 +:1055C0002D1E8477E64A07C567647C73ABB133262A +:1055D00091E286B05FDC1FE01FE57CA6A78BE09F11 +:1055E000E966790042B66D9D847F16D14956BE2288 +:1055F000E2731E533EC6F3621DA51877EA1AC71C54 +:10560000DBA17DF2501EBF32370D203D22E90DE0B7 +:105610003A788A5D0B7F4E5F5B23ECD26870CDCA0F +:105620003753FFFFDF708D84E72EA4E382EE709581 +:10563000F06CC57D8CB838FFE6E573FA03FE1D9665 +:105640009F1ABDDF0DF91C4E9170DE66608740D752 +:1056500000BE38BD6602FE30FE33558C7BA9709DBE +:1056600098FF7F43AF91701D9CFFDD702563B417D9 +:10567000BEE788C5F38E687206C7C37DF724DF18BE +:10568000C525B3B6AB00875A01D73B83DB2A713CF3 +:1056900029DF8C7BEFF6F46161F93634FF22720B5F +:1056A000A7A678B62D80F2C126E21740091373DC55 +:1056B000E80F2849682FD50BBE79C655B914F10DEE +:1056C00056AA1BE983B9F4F1F589AAA314E50D2BB9 +:1056D00056C8FEBDB6E4A847257C39F3548E4D3A32 +:1056E0009F51EF88DD8EF8CC02BBC1087400BFB6B5 +:1056F0006299C076B6925FB28EE5A1BE678EDA0C73 +:105700002DDF49BD1EE64B491F49E40F22DD62FF34 +:1057100027057C12643FF49EA0DFFA1FF7A67320D2 +:10572000F9DE365B26BDF7647E22EDCFDCA72EA71F +:105730007648747A7E4FD2F3BA2708BE7125DC5EB4 +:1057400048589744F49D50EE4DC3E1C3743DC78C57 +:1057500074FD783E8FB74B390E7EF4EC2908FF2498 +:105760005ED24112CA9D3E99DBB9DCBE34FA5FF5C8 +:105770006FA6FF5582AEA3F141FF12479B8AE71344 +:10578000E5CCE144BE2E411D86E71366929F0CEDE9 +:105790005FA82700793FA8105C5B311EEA37D889E3 +:1057A000DE544B6739D18B2591FC83675CDE3FE784 +:1057B0007F071FAD373B7319985C6F3D79F2461B2D +:1057C000D0DDFA2CE02740DDE1FC4F6E6C2E4278F4 +:1057D0007632517F00DBFFD978068CFF26C6331C5A +:1057E000713C6E80E77B533574D82EE8E0F27CCFB5 +:1057F000CBB85EE08BB7902F4A195B69C8663F381B +:105800000E1219FF907C76313B45CA8F30BF3B7238 +:1058100025BF235D83BC3E49FC2BC68B6677350BC9 +:1058200039FC45FEC5ECAEA45223974B82BF397FAD +:10583000DEC9F8394934B97442D25514B964B7B6DF +:105840006CD9C1C2F15CAB809F5C5F4CC6FA76F448 +:105850007BEC229EBB0AE3B9406F311319F94FD696 +:1058600081FC39FEF41CD70DD0FC723C19D765C2FF +:105870005FBB59BCDBB2D6953010FD8F97799C0485 +:10588000A497D301ED13F17758AFE252084F2DFFE3 +:10589000C1F97452260BAC05D298F8B5C23C30DE83 +:1058A00091AF552A23E3B293E03DB4538E28D680BE +:1058B00015FAB7E55A9819CF4BEC06E137B666F6FC +:1058C000C37A9E85E2F807738727E0B9EBD923AF47 +:1058D000DABC437AD0B3DE5A5D5C2B4C17FA7DDE1E +:1058E00030F3391BC2F721C7586B16F9BDFC1CD326 +:1058F0002CE47E48BFBBCDC24EF50E716339AF6B51 +:105900009D19C5B2839F63B20C4E3FBD6CBB0F7B2C +:10591000E0D75E75DC7EEDCD026B1CB6EE74F992BD +:10592000DB5B88A1EE87E439611DB7B3363AF939FC +:1059300061697DEF920130C003A17342EF609CD793 +:1059400093BC3317E9E8A1AFF7C420C99C6347565D +:10595000927F91FF6E8A13E3DA05CFA5223C26459C +:10596000AC5F96323E17E9EF8E77EBE3F1E758C96B +:10597000B5387EB478BC8C1B4ABF17E3828E1EF408 +:105980004324BCE5FC35400E9437605248EE1DC1FF +:10599000AE23486E54B9E9FC13E4911BE5C7D0006F +:1059A000CAFF97DCF9745EC15CC9521F676ACF41B8 +:1059B000E57AE0F9A09ECE476BA2E471D4BBB9DCD6 +:1059C000AA3171B9A62C7FAE06F150936B512C59B8 +:1059D000613A9DCDCFE2D82C37D7FBB35D1B3E5348 +:1059E000E3BB9F77CC7273FFF788A935D321E2A57B +:1059F000AE1EE8331A5CDE34FA67225CDEF45A1C11 +:105A00007E18EF25EFF074D6C3BA65F916D207C039 +:105A10007F24C2AC40833774D67BC07F07E6F798FB +:105A2000BA9F2785DA6B63288E5E85F0D2AC7B8BBC +:105A3000D8F7EBA264167F0EC69137CEB9DFCAC085 +:105A4000EED934F0F3023FC07D13EB2AD84EF13586 +:105A50003BC52742F02BE2F0ABAA3D57B046931767 +:105A600034FBC02607D26D55D6BA54FF90EEF07CB9 +:105A7000DDCDF71523E8D9C63C0F227D84E22B0348 +:105A8000AFE7F47020C6D50AF35A5FCFCE437D2F1F +:105A9000E32B382ED10DE371E0950EBE0E94315AF2 +:105AA000BAAEF22DD3C98B98A0C202DABAB185E2A0 +:105AB000A83141233D8FE49F9F20FFC485F9E7D89B +:105AC000F90D0EA4272B9E6B0F099FABDB7392E899 +:105AD0001CFD5895EAE1F113C736F4CFFFEAE67AE8 +:105AE00045CA77793E1779DE26CFD9EC11E77631B2 +:105AF00039D6EF3CB793FB0D9FD7E9E11CB99F4323 +:105B0000EE28E77351E84AD293A4AF68F42AE92B50 +:105B1000F2B9A4AF8EDA4D394EA4ABD89EEDCD0FBD +:105B200005BFCA7A643E813C478F7CEF7762FCB345 +:105B3000DE11C44F5566FFA04B9157922E2E963F13 +:105B400071039E93F430DE5BA1791FA0738B9B0BD6 +:105B50000C0EA4BFCDF0CF8F7CE23651DED49BE794 +:105B60002D0CED407B81E1576B29EEBAAEEFCF50A3 +:105B70007FD65AE89CA315F8BC0EE0BB49F07B2801 +:105B80004EDBAC0606A1BE00CDAB3D079E54C0E384 +:105B9000E89BEFCB0DA07F143BD0AA6BDF543035D0 +:105BA000A1956A2D93E6C038739CFC1CB18AF1F371 +:105BB00040EBB71B2A917E37995A32726D61381CBF +:105BC00018F4A51DF37198123E6776827DD75A3B73 +:105BD0003CAD93E83583CE47AD0EDE36B7209FCE81 +:105BE000073B319F90CEF145BC98713E9C9BE54EA2 +:105BF000437CC838AF26BEAE8BDB468BF35E6A7C37 +:105C000057D27F249D0F2AD0F3EDF788F35E59A079 +:105C10008DF33AAFD7C913297F243FBC25F6DF3176 +:105C2000E86793F0DCA9633EB70E0F0CFAD94BABD3 +:105C3000DD98676674A2BEB17EFBDFE3900ED822CA +:105C4000A5C7F8EE2D52FEE2397F4E18FE377A17BF +:105C500085EA48C6D50B97EBF21322E57F74FEFC6C +:105C60006EFEEB7273FF4AEA07D4034936AE070CA7 +:105C7000F630BD47D30752FE47EA85483D5055DB15 +:105C8000E4F20FA5F2111CC79A1DDB10E8413F4456 +:105C9000CA75397FE4BA63822A0B246BF9D249FDB5 +:105CA000C272DD4CEDF09383FE978FC5BAD0EE98AB +:105CB000E5F22C2C207DEF5984E5189767718166F9 +:105CC000FC4613CF87540DCCBB8BFCD3CA0CAD5F05 +:105CD000B4A980D3415329EFD7965A98F137281B9E +:105CE000FF9A9B6182797F5AC0F3C70EDA0B133A91 +:105CF0007B905BB2FCA9A09FBB500E21FF0B3C4ADE +:105D00007F1EB6EFC1B84B93A93203FDC2F8114F05 +:105D1000B40F00B8373A0C0E05B6DA20D6D1C80C4D +:105D2000A417D6796C15BB87607F4672A4C9EE793B +:105D3000D82FEC9D6976ECCFD765B419BFD6F29712 +:105D4000CFE8B720BC7C567E6E10B9CEFB0B38FC7A +:105D50006F427B2435BCEFC87E9B0AB8BEAB757919 +:105D6000EE43784E7079361550FCD646E789341FDD +:105D7000E6AF5A797EC45731BCF48FE5EBF51F8F3F +:105D80000934C27A2D6EEF567CFF36D5CFD0BF6E68 +:105D90008CBFF52AB487A53D28CFB923E7AF317072 +:105DA00079FD1BB15EB4D3106EC5EEB1BF2928E8F2 +:105DB000A1BFB0CFC00EDF8FE7DDA54EF6450017BF +:105DC00069F43A31EE23F343C17EDD5940F1A086F8 +:105DD000693DE55DDE739178978C37811FFDC702C1 +:105DE0001E5FFA1396A545E047A39DEF92E374B2B8 +:105DF000EF1A07E044E7BF9700BFE771BFE6F886F8 +:105E0000E1381E60FE2ADCCFA5C2EF6877F81DFDE1 +:105E10002EF87DF5EEE509A80FC0BF677D92BAF7B1 +:105E200093E7FCB2BE31513FFFFA3C5E7F47D0F3AF +:105E30000C710EDF25D621FD628B95F963508F4DD5 +:105E4000641E941B325F2224C70AECFC3C3F7F6C2B +:105E500017C2777D96427904EB137929FB3D5650A2 +:105E6000DA85FB3925E6EB127636C6ABD0CE9071DB +:105E700000D9FF29EC8FE723057C5C104A83119E33 +:105E80006655ED118EE70AF879CEFE5C3EEE787924 +:105E90001EBA599E97EAF3E1E63EC348AFE379297B +:105EA000F26BB4BC376F8EE3790CDD9C6343641EE8 +:105EB000DF0FD29F08CFB8A4EEFAD35E18D29FAE00 +:105EC000EFA93F930BB5763C73E9E249527F7646E2 +:105ED0009CF3C8F28A42DEDE2CFC679483287F9311 +:105EE00054D64072D8C8FDCB7BE2797C13E94EB121 +:105EF000E17B9C5E22E34F32EE24E35032EE24E35A +:105F00005091F1A74E7367533AE0A96B30736D67F8 +:105F1000784EBABCCD84E754392C0FF1B43E8BC512 +:105F200017B9294FC485F1FDC4EB1DEB4D504F74DB +:105F3000B22444AB09C6B5C3B8330BB308FFCDFEDA +:105F4000EBDAD2A15FEDBACFC80E4C2B7126A1853A +:105F5000B02D9447BC960DD0D0CFD8424EEF094E0D +:105F60001E6F65563FBDE7B124E6DEC9B4FDE4FD12 +:105F70000C4F6921D1238F4B27324E47CCC5E38E7E +:105F8000D7B276CA3B5B6FD84972657E7ED9D5D8C9 +:105F90005FF24DA3812DDCA589BF46E61B55167E19 +:105FA00077BED13D22AEB61EC6DB45F15D190F4C62 +:105FB0005670BDD07F9D2909E1A1C74F082F1171EF +:105FC000C26871C1D81ACEEF91F4729B80D71C972A +:105FD000670EC1E1FC850B6A21BF0E81F882F718BC +:105FE000EAFD98143BC569639CFC7C9B39141E0F29 +:105FF00032F3B89CF93296BFC689F9E4B68D0AE649 +:10600000EDCD3330CCCF2D13E378AA98F2410E8139 +:106010009271796C641F483E5205F060DEB10294C3 +:1060200016407D1CC0A9CCF6C2DF15E0C7F4813C48 +:10603000CE9B9E9240F90FF74489BBCBFCAE703EDD +:10604000DB8FDED6DE2BB8ABA9FC6D7D3E5BF9DBCA +:106050003F249FEDBE3F94BFBD4E87B77F6D3E9BF3 +:10606000947F1DAAB7E30E80FF34105AE8B74E8321 +:10607000116B283EC9FD8AEB059CFD5F039CAD6159 +:10608000384FDB7B98E0D7618275C3FCA6B11CD486 +:10609000A6DB1348CF49BF6EBAB5651CDA0767CCDB +:1060A0005DC370DEA57F7CFC0F68672EFEFDFDF1F1 +:1060B000980CF191B1250D9FD73DDC148FF7303E40 +:1060C00034FAE3D1DEF928A056F44457EF083984B6 +:1060D0007E8D02EB5B26D6F721C81FBC8FB0E84D42 +:1060E0004B600DCC5FFF88A5D502FB5DB67B11C967 +:1060F0006BA8FF95D737901CAEDFA397C38BFFFB30 +:10610000FE3427BFAFD2C79041E8EA832058B6C318 +:1061100044718E65AFA92E9886D5B3AEF5B8BEC8CA +:10612000F7711D418043FD4EB5D69CD0BD1D249313 +:1061300019F552BDD003F511F27E61147FE94529AE +:10614000EF87B3E148CF0017572BDA13B01E72EF79 +:1061500002A964BF34FEC6E2C1F8ED476FA56F43E4 +:10616000BFE6F48E17E3952161F9CFD85A82DBE9B7 +:106170009DD9093DC56F65F9E96ACE2461FB86E3C7 +:10618000D1B90716980ED5BDBCAC33B5C617035CA4 +:10619000EAB6995C7E785CF7B8EA41938B01FCD152 +:1061A0003F5EF2F873C746C27A96EC32A54CE4DB48 +:1061B000B12969617CD5C33FA437899FC54F3E672C +:1061C000760EE5CF31EF55E269C9AE3633C6BB2254 +:1061D000E159B6B3CDCCFDDF087CEDFCEB78A4FB38 +:1061E000C6DF7C65467AFC689FC2D2B3BABFBFF0F7 +:1061F000E117E3B1DFC5F0767A471CD907A7F72A84 +:1062000024A7A2E1EFB142CE4F40DFBF7B1AE65D8B +:10621000F896C585FB5EF8BB9BE371FDFF6B6CE0F8 +:1062200074FECBA634940B0B4DFE340795FCF9C2DB +:10623000ADB710FDDD74F416F2DF81BE7B198A68FC +:106240007FBD705FF37F318DF6B5F09773695FECBA +:106250000185A18974CEC82A76F580CFA9C3B9FC7F +:10626000FDDFED1652D6FF6BE6FCE9FF8B1AE079F5 +:1062700018CB89BFE57D3D8A5C41FD9C95E327678E +:10628000B8CCEFE0F980F5A257FD8E0D74EE71AA3F +:10629000AF271DF50CC0419717A81E1D97CEF1C260 +:1062A000F303E93DE0FF327C8EFDDB4D9E9861BA41 +:1062B000F7845FC9E75F29E68775C72A57419916B2 +:1062C0003A876CC7752C53F83B483798F7E617FBAD +:1062D0000CF1FB8E4D1C3F82DFBF788DCB91658129 +:1062E00029152407DA4DADE9D82FD076BD4272C00A +:1062F00012BE8FA8E5E31D26410FFA76589751D1BB +:10630000C2739F42F1A405F7413F8DFF5FBFFB2E93 +:106310008A57D7E37D475D5E21E743196FBC292289 +:106320002E2ACB48393071B8880F0A39108A57FEA7 +:1063300022F53BE383D23FA933057EFD20F2EB9BA0 +:10634000163AE7AA7BDC44F99F1F3F76E0D80CA001 +:10635000EF8F774A3ED5CBD5483E5DF8C434D6138F +:106360009F7E9C52C97AE45378DE239FA6309263C5 +:10637000FF32B91A82B79E2F6F8A22576F8D8027FE +:10638000D8ED09C5503DF5DB25FD292F2B02AE12B6 +:106390009E91F23171B8B347F9083FAF310D1C251A +:1063A000FC247D2E7E7429CD13A25B499F524F851C +:1063B000E83372BF7A3846B6170F67B41E93C165CB +:1063C000C5D0CC8CD41D76F4471A855D0B06E82128 +:1063D0000C294FF3648B7C2DCEDF225794ED1D2EBC +:1063E000E35D9CDFE47D1F8B97F3BD8C675818F04D +:1063F0002F8733F1FDCBA90B2672E36745845C310F +:10640000905FD09E52F46B91F74072C1424D78FF7D +:106410006533C1E35A8F4A70B078781EB1667CC28A +:1064200063A3E744269E4F3516595C2887A13FC1D8 +:10643000699A97C3739A67C24708BFC92987AA3068 +:106440007FFADA223DDFCE88E0C31BAAF4EDD3D970 +:10645000F654B447A72F34B180827690BEFF3DC377 +:10646000F939D30DACA1C9C1E959C0497FEF84897D +:10647000F3DBC9428EC97CDB577628E45FBE523419 +:10648000B73917EB8F81D508EDE74AF29915E0F09F +:10649000B289ED21FBD6E3713A0AE95E0D3FDF2DAB +:1064A000FA1FB2B3128A0C3AF992E889D5AD3FB916 +:1064B0002249574FADECADEB9F5E3540D7DECB7B2D +:1064C00085AEBDCFC23C5DBD6FC3485DFFFEBEB1B2 +:1064D000BA7A96FF47BAFED91BA7EAEA835A66E85A +:1064E000FA5FBE658EAE7D7060B1AEFDCA4756E8FC +:1064F000EA4377DEAEEB7FD59EB5BAF6DCD63B75C8 +:10650000EDF987EED1D50BDA1FD4F51FDEB15DD7DB +:106510003EA2F3B7BAF6E20F9FD0D547753DADEB7B +:106520003F26B85F572F652FEAFA97595FD5D5C731 +:1065300039DED6F5BF3AE384AEFD1AE7C7BA7689ED +:10654000FF09396775CFD161F2033D2CE68FD8245E +:10655000D737BA718CAC92FC47336BA0D28AF989D9 +:10656000D9785F9DFB9536F433A12C2AF3A616A1AA +:10657000DED9EA5F8FC4F5F288AFFAA1FE78A5E410 +:106580003ADDB9D7B5F8AB134AABCD8FF254C67527 +:10659000E2832A6BCD073A0C2A543A8271AC15FC7F +:1065A0008DC4600C9549C1647A9E1C4CA43225D8D8 +:1065B000879EA7067B519916CCA6323D9845654625 +:1065C000F04A2A7B050753D93B984FEFF509E6526D +:1065D00099192CA6E77D8323A8EC172CA3E7FD834C +:1065E000A5543A8313A8CC0A5E43E580E075D42F06 +:1065F0003B3885CA81C16A7A3E287823959705E79A +:10660000527979B096CA9CE0122A0707175179454A +:10661000F0667AEFCAE0722A8704EFA0E743833F6F +:10662000A67258B091CAAB826BA87405EFA27EB96E +:10663000C14D54E605EFA5E7F9C1BBA974071FA238 +:10664000E705C107A82C0CFE8ACAE1C16D541605E6 +:106650001FA57244F037548E0C3E49EF1507775151 +:106660005912FC333D1F15FC1395A38307E8F998D5 +:10667000601B959EE08BF4BC347898CAB1C157E991 +:106680007959F02895E5C1B7E9F9B8E09B548E0F28 +:106690009EA0F2EAE05FA9AC087E4CE535C18FA868 +:1066A000FC51F02CBD3721F819951383DFD0F34945 +:1066B000C1BF5319F2074AA2DEBB335CA038F21601 +:1066C000A2A31A41AF3F8F8B27F977ED2A7EDF60B7 +:1066D0007DE9D9728A872EB738453E7084BC3C6FFD +:1066E000437BA1095B7AF13130DF65A6A0CB578AE5 +:1066F0000EA4E2F9D5FABCCE3A8C536DCEEAACC109 +:10670000F2D622AEB7961771FF706511B75F9F1B67 +:10671000E19D5C06CF17F735F8D17E581CEF4CB8D9 +:1067200001BA3C2BE4394B49E2F983B6AE7E6847A7 +:106730002C13FCB46CEFFF74A0DC55802D7C68E753 +:10674000C8FB387BF4FB57604D3549A8AF5C562B2E +:10675000C6733319C5A723F5C2C5E2C2B38BBC9B70 +:106760008A489F340CE7EFF3B8B0D43397F0FEDDDE +:106770003FF0FD07483E44797F43CAAD95B5583593 +:106780007A8C93001FD5021FD50D37915D037A8E49 +:10679000ECB94EB0E750B75BEAF4F77E2D8EDD26FC +:1067A000F403AA57F273C7C876F889C73CAEEA4C1F +:1067B00003C3381794D4AF1AED399D9FB093EE49B7 +:1067C00055A31F16DFBD7D4E147B6F7791DE8F962C +:1067D00074572DED1475D5213C2F3E7744A518C76D +:1067E00081543353A0DEB9D44274CB36727BF0EDC2 +:1067F000D43FF4756AFCEA5A90871E3CA75D7A5B29 +:1068000006D2ED86A65D268C6B74F65D4E973D2212 +:10681000FDE8CEBE8CFCDC6AFF7223D99939403189 +:1068200069C21E72A2DDE6DC897064FDAC2E3CBF3D +:10683000530DFA73EEA2119CAE65F91EC68BD00FF4 +:1068400059C6F37A4C8606BACFC9FAC51A387FF909 +:10685000EBB03EAFF9F201687F55189915F35CE58E +:10686000781A3B2B96E06B04C068ECB3483BEC44D1 +:1068700051A2F00BF9BDDE13E27B35F8A3C87D50C1 +:10688000FEA1C78C79B096142BB7E75AA62C41FB12 +:10689000F0BDD03D26D81BCC538D6B048057AF8AFA +:1068A000F30C86F60F05FF9A44FE10D0895F6BDF6C +:1068B00056A39E83FED78C907120BE3F6FB3C589CF +:1068C00074D3E37A0C2C94DFEA6D4E0C501C35C562 +:1068D00048EB32F5F5CCC273028B1FD687FC6DEC0A +:1068E000BAA516CF03FC89FC9EEF3A653CCA1B4B48 +:1068F000F39AE5D80EF06346E47723339A018EB518 +:10690000CC313E03E1DDCCF38D75FB427A6F5668E6 +:106910005FF6D07A3DB330756DAE9FE7D5013DD0BF +:10692000FC4D3FB17BF8FA946DA89F257EAAC5BCAB +:10693000D52D7FBC0DE591579C7F548BF9678BBC9F +:10694000C968701A3942DAF39EE36FB8BBCF2BD710 +:106950002BE1D4A4F0FC68FF66651BD28F65959D82 +:10696000FC75B97F8B5847F98801B41F0987CE356C +:106970003754D5C2BE4E6EBE1CBFECD16D3D48DB58 +:106980004C431F9174653270FCB07E8CFC6949F7F2 +:10699000925EF247F0F8AB2C5DA17D69E2086A983F +:1069A0002E23C79772EC6A6D7F787E7526CF077DA0 +:1069B0004FC45D878ED852E387F95E2A12FAC1D997 +:1069C0009043E78D623D0848E20F41B7169BD533EF +:1069D00018E03146ACA749A92438F8375B881E2255 +:1069E000FD7267880E98D75C28E4A8019F3BE9797F +:1069F00075B385E02DF1FD7EE8FB3F9E7E53501E72 +:106A00003B041C057D7D2BF4DEB7454E313FD03D68 +:106A1000E2EF6E0BC903899FF77008905F3346540D +:106A20004E1B5140FC398CE4FB2A7EEFA5C6D036C4 +:106A300008CF2F6BD6B65219965B1C6E15BDE57745 +:106A4000625C943FC2326D940720F354CF3617D066 +:106A500039A3379EF7538CDEE158AFF8C7DCE11855 +:106A600097656FD9E97ECCCC6C367BEA1091DF0755 +:106A7000EB99D9784D05EE73A980CB2BE05F7B2E87 +:106A800067ECE86A2BF300B1BCBADA41F5D7576777 +:106A900050FD8DD54E2ADF5C9D43E54933A78F9984 +:106AA000C9324FDA41F7106F16F2F1E610BC5766A3 +:106AB000A0BF5CF18F57312388A5F89FAE19378AA4 +:106AC000FC4894C1213AADBA3E4E1C52F07A6D6535 +:106AD000B1AEBD53E41FB09CFCF0F3019C2E907E40 +:106AE000E76CCCA2F3AF1B2726EBDE9BBEB18FAECB +:106AF0007EA7C0F7948A6CDDF3193557EAEAB5E250 +:106B00003E32B3C61AB4F13110D73C4F58E4FDDC25 +:106B1000BCFCEA84DB60FE9B8FAAD41E89875BE7FE +:106B2000FA67E1FA6EFD95C585F701E66E51983F6B +:106B300099E0C7F5C73195F86EDE16957961BE53B9 +:106B4000899EF40418EAC318BEAF0F5F57B735A289 +:106B5000FEF84736D74FBFB6907EFAD0C4FC0EFC85 +:106B60004E010A2D787EEAE820BA573133BBB52FA3 +:106B7000DE2BEF7A2A86CEEBE676F2F99892477111 +:106B80008B0F13992711E8F293492D0B285F5D3D78 +:106B9000928AE7309F3C01FA17DE5FB4FCF54207AA +:106BA000C075F1F33B8F21899F6C519903E3548F9A +:106BB00058B6F17BCA9E74E487F03E03C3286FB3D6 +:106BC000B07217D2F7A9058161E4A7AF4A25FA8E02 +:106BD00084C749B37738C6CBFD4897309EF756BB7C +:106BE00015FDAFB926575A2ED1118FD3F999BB177E +:106BF000A338EC13443F279B078D27F9B851611840 +:106C0000E796E3033F4D46389E6C493620FEE73455 +:106C1000AB742E86F762896FE57769EE56BD6083A7 +:106C2000E0FB5E1E27D2E311245B3AC26D03388479 +:106C3000A87F6645890F7E0ABCE3D5C4A1163FC371 +:106C4000BF27C4DCCE9F96C0FA26EF282BA03C8835 +:106C50000C3EFE1749926EF877943EF7F014EA73F3 +:106C60003BEC01A487D386278E1B010F6D06EFDB5B +:106C700008BF8593FD5B15C0FF99BD27FE13E3FC9C +:106C8000A71E37B970781BF3BC43F2C3C7ED217957 +:106C90009EBCF8B73144275FF6BD621BE22F2C3F44 +:106CA000D6F07D8BFEB8221ED76E4D53009E5E2718 +:106CB0001B8F71E46AB653C455389C9CB8288093E6 +:106CC000A38EC7D34E14D8EF6457017E22ECA113D4 +:106CD000821F3F137C2EE55CEE485E9F2BF5CA3E7B +:106CE0006E1FC9EFF72C641C1E329EAF8C1C4072C5 +:106CF0006EA1B067E907F6BD04E80DF1B9C091B81F +:106D000012BFCB54F7488C2B00EF8D1EC9F917C664 +:106D100070205F2E12AFDCC402CD7930DFD2474C39 +:106D2000AE56DA8EFCEE8F91E4C42913D86E493842 +:106D30009E42E3D7B528018C3725943498719D4B3A +:106D4000762B2C99FB45149793F7DB171B3753FCD5 +:106D50006D718E4276317BC47452EB872CDDA9BFF6 +:106D6000D75E1F719F7DBEB5B95DE57906FA7BFCE4 +:106D70002D26D29356665D83E354C6D9695D8B5B3D +:106D8000B8BF165EBFCA2E002C177803CF4F263827 +:106D900028AE00EBBE8E7129CB691F8B711F59DDA8 +:106DA000D715B9AF4B5DE702571BD149E47A357867 +:106DB00070EAF1D04EF1E4BF359818FA7D0BFC9CD7 +:106DC0000E16EC057867111DB4E3F706241DFC2DA3 +:106DD000A581CE55FEF60B85B56485E942D2C3A2E6 +:106DE0005D0133EAFB8F594BBC0DF8A46ECBAEE9C5 +:106DF00028C26FFAC55133DA0F3549AD830C8908C3 +:106E00003AE72F2BFA86E9735140BFFF258FE8EB55 +:106E1000FF2AF8301157A5F7002EF377A8644768CA +:106E2000FAE9EC20A6369BF11ED7B980E24279BA86 +:106E3000103F9B91F7FDD75B1FBAFFFFEF5D77A473 +:106E40003FB76CA4F0E75C3C0FE6F386693CBF7685 +:106E500055CFF7A923CF4322F5E93B269EF7D283EE +:106E60005EBD16E902F4AA012F094693C70B843EC2 +:106E70009D8FFA13CA0FB63C198F71B5BFDDF76449 +:106E80001A9DF3A0FE19A2D5C7A01F511FFF31867E +:106E9000CE4F6B7E6969C5F8F3E9DD9600CBEA3E1B +:106EA000FEAF0ABD9BE9CE81D09FA794A385F8BD14 +:106EB000292957A39DE7FEBBF63B07F79B8F760476 +:106EC000DFEFFB1BF93E4F34F37DCFEBB65FBDFD2B +:106ED000F1614C2BE9FB0F77A90CED0A694748BB20 +:106EE00040EEF31C6BD98ADF095BBAE28DE346A062 +:106EF0008F4597B50F6B8575D5DC6D217B60D153C0 +:106F00007682D729A5349DEE7BB5583C3684E323A1 +:106F100031F43CBC8E907DF0D4C8548D7D7089F0E6 +:106F2000937120C5E9E0F911BF60F47D4B3C1FC1AE +:106F300073096633907E897CFFB4D0434B5503D9E7 +:106F4000A775666EA79E117EEA0B23B9FDFEC248A7 +:106F5000EED7B48F74087BB56B2BC2EBE833160702 +:106F6000EA9F76338F0F1F3579B6FC04F6B5A4D8A7 +:106F7000FB0AD243A5C13613F9666DDC3013CAA1F2 +:106F800075890BE85C69166B37213C26174D7162D9 +:106F90005CE5789AD5A512FFB34A56188EDFBC6C13 +:106FA000E27935C711CFB0AF6A71DE703C06C425F7 +:106FB000CC7FBC9799E243FE672CA48737C4F27854 +:106FC000304B49A0EFA2CE10FC3EB3DCE241FFBE45 +:106FD000BA7C432596309E9F01BC6AAC5D4D988279 +:106FE000B2C6C0F5DD9A2416407CB3759D0508BF76 +:106FF000ABD83A07E695C0EE775F48FE2E3CE8F343 +:107000007AEA307E3592710415117C75F53A336F4A +:107010003714FF78E67D9950471B1DEDD16BD4C026 +:10702000F62C8C731B089FD762BE0BD9AF19BAEF31 +:10703000DB4D857F25B0CFA946E6372451B9D1066F +:10704000E5B422D69A00FB6B3DACCF3BBAA1D5D0BC +:107050007A399E63195BDB282F46654D68124F65B0 +:1070600059A61578EEBFF6D2D69B59BC6EE67D25A3 +:107070005037F0FBD65D3F56E87B6BB38CECA00A33 +:10708000EBA94F72FAE9F97285ECEA6A60263C9F37 +:1070900085F68DF179F89E42F485F8E5793C3CFF60 +:1070A00049E209FA5963E179EFE22CEE6F8AF56E55 +:1070B000F11AD2F07BBE4B851F35CBCAD661BE1C00 +:1070C000F87BF118C7C985656AF1546F96FED64EF4 +:1070D000F354B06F97ECFD9F8E2C80CB65C59C9EC2 +:1070E00097C878E963FA786945B193E655D02E03DD +:1070F00078568B321A7F8C13E38D2BE6FC915B2C38 +:10710000FDFE9DE4E72D1171DA68F32DB5B05682CE +:10711000D73316C2BB9CF75A519615F338865C8755 +:10712000A4F3050CEC816C2CB91E330032294FA757 +:10713000E55794DFB9F0171ABB87FEDF42E7D08B23 +:1071400077443ED7E8418A4FE8E3E58AB96B1EAE43 +:107150004F191DE342BEA836EF24FF5B018702E909 +:107160006B4194F74C2DDCDF3235737B86E22A6E5F +:107170008CCF2801948FB599AE0CBAA728ECDD0509 +:1071800002FF73521A48CF2E40BB86CE59791C9508 +:107190006DE1EB360A3B756E8B5ECFD76E8CDC17DC +:1071A000D7F7F23EA905F7A9D1D726A1EF1B4DAE1F +:1071B0000C94B326A6D7FB8D0A5FBF3F95C77B58BB +:1071C0000A6F370ABB4EF2FDF46293EE7B72E7D88A +:1071D0007923C25FB65796E39DE2E872E35A4F5CAB +:1071E000AB42E7CB571FE2E5A6763A1F16F9D0D798 +:1071F0000A3E87E764C75456287E3CB2B8D6633A45 +:10720000A5DDAFFC5E53A41DB2BA384A5E4649F212 +:1072100025E565C8BCF11A94D7940FCEE3D22BC2F2 +:10722000E7C73928BF6B945817DAE3328EFF79032A +:10723000BF6F54F32ED77332AE7FA6D4EE3740F92A +:107240008EA8D7C49B8D68BFCE4CB8753296B7A9AF +:107250009D34CF57862ED20FFBE27DE5288E3F6FFF +:1072600078DD8E68585F9ABF056C2AF6DF7F7E75E1 +:10727000A6B52F9D0A8AFCC4F7DEC5BCA5EBCFC31B +:107280003EA8DE39D303FED899E7BA66E1DDA3173D +:10729000FFDC39D308F039737FD756AC9FF8F32958 +:1072A0005EDFDCD52F86EA9FF1FA1A319EFFB39993 +:1072B00038DE990778FD4FD0EE2779D23A08F73BB0 +:1072C000B921C6857104198FAA31ECA7121D6D94DE +:1072D00043922FBE1CF4D9AC156447765D86F2A0AC +:1072E0003EB6D5948EFCBE8BCBC7A52B4BE34B197A +:1072F000D21F3F1F7D5AE863C5E321B96981B1629E +:10730000810E9E413F22B5BB7E6743603DEEF07A21 +:107310001E2DE6FD22D7F54971E5A3C5A9F83DC5A7 +:1073200093743FF9CB519E478BF9F9D3412C174FFA +:1073300051FC6680177B2D7099B01BC86FDE60D042 +:10734000E7C93F2AE49C2C5F2FE1E3D62C1F447948 +:107350007B30DECB3F64BCB9385E41783C09CFF965 +:10736000029E30FE5B3F647C29B7E478AE51DDD6E7 +:10737000FFC10F19FF9151FAF54BFB54EE6328DA68 +:107380006080E7E2D18CE359AC473E6F525A536FAD +:10739000C078D76195E2574DA91F18F1BB04ECA442 +:1073A0008DDBC1319CEF624A443CF7272E8AABF952 +:1073B0005FE2F7EF9B52A767A0BDF7F1E3372553D4 +:1073C0001C4AD88F1FB7BD69C6FCBD65417EDFBEB4 +:1073D0003EC8EFDF2FDBDD661E8F793E509669E2F7 +:1073E0001675E1EFFA18310F5FAE23A6C420E41D35 +:1073F0008F9B1CC7BC9D21DDE5487A4928FE4DFBCB +:107400001E26F677C6E3719468F62D9FCB7B5391C9 +:10741000E3D488713EC5E427CD7857291C7F35B168 +:107420005C1FCF2DB45B9D80AFC28ECA323BC0EFD4 +:10743000A62DFC7B46A7468CED57A2C1BB7C2F1C1A +:107440002FEEEA395EBC97C78BE57C2EB1CE9AA4AD +:10745000F695606CB09ABDE95BADA3189BF073160E +:10746000CA97C6B86C8545D687CD2ACFC478A44ABA +:10747000F5317B2FDF8AF7D80E89FB0B33870F8D11 +:107480004579D799156770801C9C3AA2B606E132FF +:1074900073F8A8F1F8BCD462BFAC96C7F389FEA616 +:1074A0008EA82CC276EC8F71A69AE5A605285F3FC0 +:1074B000F7C7503CD23B2CCE8BF1BC430656CE34A2 +:1074C000F7680A05BE6A4A38BDC9F9E5BC300FC97C +:1074D00069EF3D7D282E3663446975496A78DE1967 +:1074E00023BC15DA79619BC3E87BB951E68FC4DF11 +:1074F000B8121EE7AE2EE1F8AB2C01FAD3E8A7A92B +:10750000E571BAFAF5139399471B97BEBE8FAE5E2D +:107510005593ADEB3F63DE95BAF6499676B7D63E06 +:107520009178BB543F6A3CF07D02C0A5BD8D0DDD56 +:107530008D7C9865A77392251BAFA1387742B09ACE +:10754000CABA966BE893454B83D7517D99F8CEE63E +:10755000A43E33D7A2DD7228B69DE2B087FE9048E4 +:10756000FEE32B6AEB650FE178163BF1F5A4DF5FD4 +:107570004DF974CB76AF798CE27FCEB87C8CD74E48 +:1075800052D92105F30983317C3CF52FEEE500D774 +:1075900009655C6F4E421D0EED8D22DE188D6F1A4F +:1075A0004BB81E3175F2758F0B4ED17D8F7453C958 +:1075B00000DDBD4853EA0E23D9D7623FA64E85CAE7 +:1075C0001F05AFA4B27EF714239E2BBF90F3AB141C +:1075D000D41FD09FBE9311924B926F1A86277CD7EF +:1075E000F7092C42FE548B73E91A8FE7BF90BE2631 +:1075F000AFEA3462BC87D9CC0EF4532717E5662C6A +:10760000D08CD3D8762373D2792D33A35EAE865235 +:107610002BAFBC11F7AE64F97084BC92729C3DF63E +:1076200029FF6EB38C6B0BFAB847D0AB7CBF1D65DE +:1076300028E2ED297E5E758BC7BB07D7DB5ECAAA41 +:107640009E20F9D1DE0FFD8F7FD5FA01BF56C47F92 +:10765000BC91CF1B5F94B51DEF753D13DA07A7D31F +:107660008BEDE3B7A2FF2B2AF3217DBC32664C3BA6 +:107670007E87A4ED8EFC7C948BCCD1751EE9AE7E0A +:107680005F71367D4FA384DFE3ADDFC7F3C9EBF74E +:1076900059289F7C5272D707DC3F8971A27F82EF05 +:1076A000211D9F81468CDF5F51EA7D09E151BFEFCB +:1076B000A37CD4779EBD5F1DBFC38D59BA76BAAF88 +:1076C000F249B1E765922751D679317EEC4E5F16CB +:1076D000E2CBB34E3EBE7723E743AFE0C75A41BF8C +:1076E00073043F4A7E3621DDE523FD71BAAB0B26DC +:1076F000F2FE02CEB373F8FDB9A5C12C7A5FF2F1A8 +:107700009C55CA655B903F8D76BAF73347F083E4AA +:10771000D365C1641D9F4ABEDDE5F17E8B7009F122 +:107720006D23F07BFCA5D0C9DF8D987F612A514C79 +:1077300048271628CB34FC5D29F05E3B8FFB27B52C +:10774000401FDAF378C3A8EF47EF6704BDCFB1B5A8 +:107750000EC2FB6226B023F1FB3C35A94E925F2B93 +:107760003629F4F1B11526AE57573CC0FF1E00EA8A +:107770005BB4DF0B3B1ACCDAFB1A3706873127C024 +:10778000E7BAE0402A4F8DF03A46A5225EA60BBC30 +:107790000CBBA4F3C22F1A86A7A35DF3C51113B5C2 +:1077A0001778787CCE14B0B8B665617CCEAB22DE9B +:1077B0003EECCB1CF76AE27318EFC3B89F3C2794EA +:1077C000F13A4B8A41776E79CED8D20FEDED6E71DA +:1077D000BB526E7F9DDE61E279E86D7F29C47BB686 +:1077E000A7B23C14BFBB50E8BD6214DA875303BF95 +:1077F0003361BCBDE5C96378B42DE15933964D20A2 +:10780000BF67BF81E4FECE66B522C0F578DC144DBB +:10781000BE92B42B0E336E8F483A5D1CCC26F848CE +:107820007D23E5F71F576790132DE578343D14C984 +:107830002F522F9D6D78633CAEEBEC6E858E42250A +:107840007D87F590427C05428AE83CAC7F389D4BB1 +:10785000B93D09E34280874909FD29EE26E578A470 +:107860007E2AFE4DF6EEA79D98473EB312E71D73A4 +:10787000A54277A2EB9EE8E5F6F620A7A5BE96F016 +:1078800090F07941D47B7B3CF3908E2ECE3F3164D7 +:10789000E75AFC5318C95928B572D61461D7CAE7FC +:1078A0008B46C9FB2497C637378CD2FB13729DEDEC +:1078B0006619B7E6EB7F9171FB43CE738B67AA1F06 +:1078C000F7817A83ECEA51DCBEFD57ED2B9AFE6816 +:1078D0001AF5FDF4C70A010FB93FB90FB9AF23621A +:1078E000BF97AA5F1E1CF5CFE917F26150FEC624B0 +:1078F000501C66F4B323BEB8C3897AC662443BE326 +:107900008CA7ECC1519A75CA75C975BE24D60D7A7B +:10791000E8BF4669F0259FFFB37A49F26B24BF4563 +:10792000F26F24DF46DA8B926F22F953F2B5E4D37B +:107930000977717B9465737B54F2EDA1580E9F43D8 +:10794000572452DC7AD96E1EC766B68480D69E94C0 +:10795000FA6F92BAFD3FF1DEDBA43329AE4616D6AC +:1079600087926F99C7FB2AC269ECA3DF3CF9160B1B +:10797000F3EBC5E9F34F26D25B750AD9371628B564 +:107980007ACB1B85EF3ABE27DF3D2FFABFA272FAF2 +:10799000F62798C92EBB18FD9D1AC5BFD7F66FA054 +:1079A000BF5308AF6876F819C1DF407F67904EFF7C +:1079B0007576D01B6EFC9EF35937D84159613A9ABF +:1079C000F022D0893B4C2721FA30F715F29ACBF1FF +:1079D0000917785E9E57C401243DBFE5F1268F2E1E +:1079E00008D3C3A158FF10B46B2ED5BEAD4E69604D +:1079F000784FD60BA5563E59C477C523F19F31FA6F +:107A0000FBE1DF3C3A84FF4B923B39A3FF69BB3675 +:107A10007FF477D8B5CC11AB8B17B84CAE04CC8BB8 +:107A200071BDA422C6A2E253DDC2E11D825BAB514F +:107A3000DA07C9681F009DB847FF103A6195191809 +:107A4000E7A7BF5340E7379FCC467C1C50659DC7D6 +:107A500029DAB0DE1BF87CF427EFADD3C42DEF118B +:107A6000F1917D22CE85F19D5D3DE8EBA7C770FFCA +:107A7000F2C037A71EFD3DC69FFA9BC96E00089C49 +:107A8000EF0238BCDFD74CF93DB27F5B7FB30FF715 +:107A9000D966599D315FC32707FAA79DC77CD603D6 +:107AA000E9FCEFB41DB8239FDEF7D7F3FBC3FBFA65 +:107AB0007DB07938D4F72D53F18BA2617D57C7F390 +:107AC000974C293BEDF335EB3B509F5FE2D4E8DF69 +:107AD00073C2FF7F3BF356FAFB366DFD57B6E3DF0B +:107AE0008BF3A7F3EF3A5AFE5EE3C07BC8652AFF2B +:107AF0002EE892D15C4F1E0FCE686F877E4DB60187 +:107B000078F202CF45BC2D73BA95EEEFA618086F38 +:107B100026FB4C8759B31F4F8A91AF2B4BFFBDBC3F +:107B2000CFC5B8FB043DEE571DB46F588703E30182 +:107B3000B3BFA9E96887794CFD0A9D787EF0EEE82D +:107B40006C913FED28413BB54CEDCC671ABD76A357 +:107B500041E8AF88FC6C0B9E6B0CD3E5975A298FDC +:107B6000E12279D391F9ADF8A3A485F34841B70C8C +:107B7000C372F3688E77E467FC3E83CC9F3E24ECAF +:107B80001E908AE5F85CE621CB3C69535FB66C2A0F +:107B9000D119CF8F7F508C23E79179A6D522EF3969 +:107BA000943F9C6E1EB607F0DF6933D33D4CF95C01 +:107BB000CE572DE68B96672CD7F1DBD1FCFBC58D1C +:107BC0003FE1F1AECE7E4E3A97C01F6D7EB1CC271D +:107BD000EEECC79651DEB598AF499CF7596C7FB86B +:107BE0000DCF674279C56B8B33503F36C938C152D0 +:107BF00091C705F031A769F2AC53CC94675D0DEFE6 +:107C0000670DD3C8C5EF9987DC2D3F38A22EED1B39 +:107C1000491F2351361420DDA7AD22BE4AB712DD1D +:107C2000EFFBFAF60ECC037E2FCD4A7233C4A7E9E0 +:107C30001925F8770EDBEA93577569F864DFD77B6F +:107C40005FC2FB07FE34633EF2E5E86FCE0FC5BFAF +:107C500003D2969E42FD47AFFEF8E33FA21FFD4DC3 +:107C60002C7D5F6ADFD7239D2837554327C907F648 +:107C7000752CD1795942558653C317AF0BBE7AB0D4 +:107C8000C8F32ACA3D350DE8DF1696636ADA742F09 +:107C9000F26B635F6243FCFBA9146F6E14F890E310 +:107CA000BC2BF4C2BB92AE8C4EBA2FB35FE574ED21 +:107CB000DFC0EF419B52F7D8B5F1A94F45FFB6B8E9 +:107CC000042E9FEA93CFE33E6B33BD66C5A9EDC793 +:107CD000BF4F6DB126107FB759C678917F6B6DD3BA +:107CE0004DA47760BE6928BF47F3EF643526727BE9 +:107CF000E03D43A513F1F85C91B7700CBCFFBE8961 +:107D0000AFDBE368B7631EB467657222E69B8C162F +:107D1000F2A7ADBFD1A78DA39AC770F898C770F925 +:107D2000D1D6FF56C29BC4639BE559C28B29ED7A1D +:107D3000CA6B1F8DF218F1B03ACE85EB6F4BB712BC +:107D40005DB6A5F3EF4DB7D5AB1C1E0956B20F417A +:107D500091115D8C4E3792BC7E77B45317FF92F829 +:107D6000DDAF367470796525BBE2EDBAE4F38817B0 +:107D70009329C181FB7FCFD05580F2E1DDD149FC51 +:107D80003BCB86CA0CA6F1176684E555062BFC4E44 +:107D90007965BE947B1E17935716FCD3C0C09F0312 +:107DA00004FC2E26A7F0C754D8831C12722E52DE74 +:107DB00084EE59FC9BF8774604FFCAE7529F49B806 +:107DC0007E19AAF3BF3724F366DE1776ABBF2F23E5 +:107DD00079549DE9A1FBC76C5DC641ED79BB09E50E +:107DE00021F4DB709F1A40BF439EBB6F4819EF28F8 +:107DF00005BAD8D0C2EF01C34F33E6C1CD15EF2D80 +:107E0000702FBF0CC77B680C8F237B3F748CC7EF30 +:107E1000A11FCF9C5AB906F379328D0CE9EFD97FB7 +:107E2000F0EF5C9574B59725205FF9F9B94CC82F30 +:107E3000386DA4EF46D43207E543BE17EFABC0F769 +:107E40001B7FA9887D343CEF457AFF25FFFE61E367 +:107E50002DF6788C3B15F77D6D12DA05C5F7A792E4 +:107E60003D769C35B4E37AFDCD2AD127D8E3077B54 +:107E7000E1FE9544923B874DED2F6541FBE15B921E +:107E8000D1D2640B8CECA001E86381E0AB6A919FD6 +:107E90008170B1E2779800BFF8770301DFAC771EFD +:107EA0009D3393FD7AC800949987F623A7873AF10A +:107EB0003E8C67C5FC44A6EE2DC038BA9453C64428 +:107EC00037D9A79FEE995F88FC694ABDDE8BFB3BE3 +:107ED000B3774921C2E1B6312AFF1E78F376FA3B27 +:107EE00005963D77FB71DFA7117868B76EE4DF1563 +:107EF000967F37D522BEB378B171D7CA715B427F06 +:107F00008FF5BBC7DDA2CFA7687C20C68ADFB798F4 +:107F1000775FC473E1E744FE3DABEA667DFD610136 +:107F200017996F10CD6E8DCC57B87F8C4D7F0FEEAB +:107F300022EFCB7C8587059FB07722CEF11A6E7336 +:107F4000A09C3D0BF4C8F57D8315EBC7F11E9FD2B5 +:107F50007DBCCED58CEE6D5C17C17792CF0E08BF7D +:107F600003EFBDA05DFCACD9B912E5EBB3B17D1553 +:107F70003FC9D39DC9781EB05BECFFD9D0DF297013 +:107F8000955C07FAE159715F68B7C0CF9F4FE7D1A1 +:107F9000DFC1DD17CC2B99A3B58BD5CE4787939C3A +:107FA00036D0B92E7E1FE1C91EE070CD6855B74EA0 +:107FB00069BF4BF970AF58B7A4D7C8F78F0AF9D883 +:107FC000B9DAC74E68BEFFEC157E983C4FB5A438B1 +:107FD000757C3BB178ECE1310561BE60076E645998 +:107FE000745F279FFC94A362FFC0BBE3311EC032C5 +:107FF000F4DFC1FC2CE23CFEDE901CFB7EFECB6776 +:10800000C5E0BF68ECFDBBC5FE43EB3A0F35A007EA +:1080100055C4996BF07C14F8F453B1BEF176037D2E +:108020006764C2CF5B1F267D72734C1EEA930A0BF6 +:10803000FFBB139837BD4203B74F05BC26FC94EB3A +:10804000EB098DBCC471B6D9C2ED3563F97BB22E94 +:10805000F729D7F759B1B8BF15251FF8DF5DFE3FE7 +:10806000FA813CB6008000001F8B08000000000071 +:10807000000BAD590D7014C7957EB3B3B33BFADD59 +:108080004512482020BBFC1829081884004988F2B2 +:10809000AC7EB0B82079650A237C4A32011B0961A5 +:1080A000CC1AE288A452B7830558C5512E99F8120C +:1080B0002AA5F8C62A705439C759127CA5C4602F66 +:1080C0009CB145EC23F25D52C555EC631D30062C86 +:1080D000832C5F0ABB8E9CEEBDEE19697B65E17057 +:1080E00075A2A8D69BF7BAFBFD7CEFF5EB56434D86 +:1080F000ECBFD42900F9BA6AB8A7033C580E003384 +:10810000F03FA459BA1BE06B7F8FBF56120D3AA8FF +:1081100000BF931D3A3D515B82FC1F8CF14DE2D7AD +:1081200055F9ECF9A04B302E3F4DF7260E95D0E7D0 +:108130006E80E5381809777851125D867456125DA5 +:108140009E42F770F96C7702FC99F4DD62DF1B70D8 +:108150007DA9946867BDE13553CA001A4F48FE8374 +:10816000018087AA6E7A00F76DA849BC51887616FF +:10817000C7FD46661A7E3F21313D2BE20596E9E6B2 +:10818000EAC334804781FF7863922EE7215D2E5940 +:10819000738200A3F473EFF858A1BBB85E346F2A62 +:1081A0009FE316E783A7ECEEE6C30A7BFE1C363F8F +:1081B000EEBD8BFD3756816E654E94BBCF91BB8D66 +:1081C000B4B33EFA6C3DDA67954C94BF9FE471BD41 +:1081D00041976B07A0BF36C64B2C7535C615382E98 +:1081E00036C5171A660957574FB1F74EFAAEB6D7CC +:1081F0004DB63720CE8FDFC95F3513E6DBB8681385 +:1082000071525735AA431E8D880B5CE7B170DA2195 +:10821000F051FC6D5C9B2B0C1D79836930865301FA +:10822000D7E64AA316FDF81838F215968E74D8359D +:1082300026CF717E521A9B5F84F8F1019FBF3B5E8F +:108240006E917F301E8CCF68F71D701E4BA1AB5214 +:10825000F2C2C635CBCB32CA0BC99A2F4DF4CFD35D +:10826000769C3F96A03986FB0F56C337C334CEE1C8 +:10827000E34B948DE8B71FDA72CF39714E4FF2C3DA +:10828000CCF138E34F1C8A04BB999F36E539766FF1 +:1082900034D6CDC3F939B048429CF4E9EBAD7DB397 +:1082A000687ED80D1AE6026CB0DEC67AB2C9F6CB8B +:1082B0004BFA830993E52D4894673B180030EE276D +:1082C000245346BB7650DCBFC0AEEF4DC48D99320F +:1082D0005F57EE30DF9C385F4F990F4ADEDDCCB739 +:1082E000E3B22E256EF52971AB4DA15B1CDA12EAC3 +:1082F0009653CF36B5050F14A21EED2F4A7E926A13 +:10830000A88979A4A500FF12378CCC0AC26740293E +:1083100044CE9BF1CD0915B1DB44F58BE1758BA5FE +:10832000631CD6537E33FA61435F427889EC2F4059 +:10833000F97F8D3F62A998070FED7B4601A4DF8985 +:10834000B75A6E8CD7A6B25FBC41EBB9F76E4BAC97 +:1083500093EE80CFEE143B7A52683345FED92FA9B5 +:10836000E3FB52E67F3F857F28853E924277A5E674 +:10837000877FCD34AAF7FB2438085F9E2797EC78D7 +:10838000FE4E8E95A968FF47F1EF58FB0BF01CEBF2 +:10839000E438FF58EF309271AA00FFF9DB3C30E976 +:1083A0003C5026A94F1727C34951EAB9C5F9B51959 +:1083B0007FF9D520AEB7B5DBEBF7220E2FA78116DC +:1083C00047DAFC83AC1D43A911C4692E9D6B6AC0BA +:1083D00047FB5E3EB70C0EA23D3B06E4F7BDD9005D +:1083E000AF3FE365763E7242B6BC2C7E7A6603EA06 +:1083F000DB66E37ADBB392E95D8C74A4751D2C66B1 +:10840000349BB7F55DEE9FAD31C90AE0BC6D96F2C5 +:10841000A784CA6D1C25B701E7B79E94AC38F25B00 +:108420008F88FC1D3191DE09873E9117D3E8FE53FA +:10843000A2C8FE8EFEB948BF60FEEF79F79345AF44 +:1084400027C9036805E48F29A1ACBC2B0B89046DF7 +:10845000946AAFDCE233BEE0FC72C65BD1E145AFAB +:10846000CF07C8043D3F44FEFD7E2E1E82009BDDEB +:10847000A0C7C8AFEEF8D48DA877E7B9DC52C2C167 +:108480006B2E50CB7368BFBD36CEB8FC50D40058AD +:10849000007023DAC6C6CA13CFC885E8AF9BD2FBEB +:1084A0004FAFC2F9C31FBBB45E20B9081607941BB7 +:1084B0002AAB0A9490FC1E46033C69E38EE7F1EA7E +:1084C00013A7E542A46EF45FCA20FDC19FEEA2731C +:1084D0007CB76DF3A7119C84F1FB74C86D4190BE0D +:1084E000201FE3B4DB6F030BB4FC0EE4BF765E0128 +:1084F000EA571CBF5DFF2E4694F6BB8DDEC1F556D4 +:10850000D9EBB51E91C1580670FA9F724F56125E94 +:10851000327C7E740B5CEF93D93E5755DF0BEB70CA +:108520009FAB3DEBA701E6CD23CAB04743BDB45393 +:108530004DD93ADAF101CAC599BF2C99FAA2CA7A83 +:10854000584FF32AE36E08E0BC0FDC9A44F1BF7188 +:1085500019111CA4FC70D7539FF0C8AF659E57A794 +:10856000DDCFCF0F8EEB55536E9B61FB3712E2E7E9 +:10857000CB873DBF6A24F96B47153FE973E3A8C277 +:10858000E6B7235E5D88ABAB7D12C37BFBEF658DE9 +:108590008EE26B7D12E7232E55C2F9E38AEEF14D90 +:1085A000C4758D2387F824DC3BF86ED7AD35407653 +:1085B000D97856F1DF28F651532076C08FFA6FEF45 +:1085C000FBBFE13815BF6D84DB0CFCA5144A09B76D +:1085D00023910DBE7892FD93E176280A0C6FCEF7B9 +:1085E000DC1341A910C6EB81590D4511D4BFD3034B +:1085F000456E8AAB2B5D3B46FBABD98BA9B9B895D1 +:10860000C6C70E97FF2CE1A803CF03EA6F6E8482E2 +:10861000CCDFB75C5A1DD1302FAC4B383F5111D451 +:10862000280FE41A5724C6EB994AB81BB4FD185614 +:108630000F0DE6A2BD3F0F397D24305CEEF2737E54 +:108640009D9CC9FC3CD28C7EC675DD66F18FAAA8C4 +:10865000FE0D2860D17CFC62FB4F1A65F527E023F4 +:10866000F9F0800C07490F5D61FC00A87B290E1B07 +:10867000A86EE17EDE02170492FC9916488740D16D +:1086800038FD0708FBA8EE74DAF6E2013C380FF576 +:108690006AB6F5CE28CA11E49B33B7B2F8676933DE +:1086A0008475C1502EF3FD030C078DF42D8FFA5BFA +:1086B0005ED73634233F691DA5EA935A32236CE313 +:1086C00000915C40E78E52C5D771E4C233D75C831A +:1086D0006C66FFE53BE16441B55DDF8AA19870D22D +:1086E00029F1FDCDA9601D63752002B4BE83879773 +:1086F00043128B436775808DF2328C1BE236A1C02A +:10870000ECA52C7EFE5924DF9491F3E700C6E874B3 +:10871000E822BBAF35ADCA79622EF65BE7421F187F +:108720006EC45FD3B29C97E720FDD6E94B9C5E9266 +:10873000B35C417AAF74C5A8457A30A4BF46F5B39F +:10874000B3DAEF9C9F6C5DFC7E86BEFFC30AE36CD0 +:1087500008BFEFF4647649D847DCBC677836DD178C +:108760001CF9C4A9C2598894711AF5D34A8806869F +:10877000E3C9C65B21FD7CE80BBEEFC8C038E33E11 +:10878000BB5E7E2F3B80EB6E233FA15D5090C9F016 +:10879000F884EDD3A1C6F83D71F4DB8751C89B87FF +:1087A000F91470197F243D07826FCEA6BAFB614F82 +:1087B0006736D5C38F5F92B57528FFA80C1CF7B735 +:1087C000E5F8BDF8BD7ECE825EC2E5D0F1A7667E3B +:1087D0000BF5BD64E37E28C8FBE5A1E35E5B6ED3C9 +:1087E000515962E7CC65D277EC7C39BA81E9B5366C +:1087F00013CF153C974FADE4F1F2BAC1CCCA612357 +:1088000064E377054799DD47AD317E369D43812D81 +:1088100005BC8F41E860DDBCDFC6F3FDEEF8698979 +:10882000F0A6F9DC646F233797F8A61BD771A9A0CF +:10883000907DC5D0E3A7BA835AF78CE6B2FCD4E2A8 +:10884000986FBBB05FA0636217F98DE8E39265068D +:10885000A94F50D879FFA15D3F52EBE84E18CCA646 +:10886000B8B6F56C61F9E3D4CDB17CF1BBFF5FEA3A +:108870006576B55D2F97C2D2BB3CE7F3AA93FC5F48 +:1088800027B704DC64DFD4A252DEEFF07AD59AC6B3 +:10889000ED71E2B1EB2773F3D93950EE65FD5BABB7 +:1088A000AD0BF4E4B2F81D08CA407D41437F2104BA +:1088B000F0D3B67E0902789EAEEBCF6574F667D32F +:1088C00019DDF0D3FC6ACAF3B17EFDA70B187DED6C +:1088D00085B7CA8C9271FF8FFC9EFB1F52EA279EC0 +:1088E000A63FAA42FE8376BD1C011E9F113D83C593 +:1088F000C7B173BF5DE77CE5625D9CA28B7531B744 +:108900005EAC7B53C362BDCB6F9E23F0A71B5F158C +:10891000F8856DA5023D2B5229C87F654FB54007EC +:10892000CDBF11E4E7763D20D0F3BB1F12E4171C46 +:10893000D92CF08BAD7681BFB06F97402F8A7D4FD9 +:10894000905FD2FFA4C05F1A3F28F0970D1C16E875 +:10895000E5833F16E4575EE815F815899F09FC5535 +:10896000577F29D0AB877F23C8DFFBD919810EC180 +:108970005B827C8DFAEF025DE7FFA3207F5FC1255C +:1089800081BF36F091C0FF5AD1A702DDA0FDB7200C +:108990001F5E00593AE647F74AE33BD588B766D7EA +:1089A000A19FC4F1FBC8C025379D1BCAD725C82588 +:1089B000DC7F49FEA4E6DFDFA59C437F86CC6FB851 +:1089C000E87D09CB10CC9D3CFFC26AC043EF509BB1 +:1089D000CD372FB0FA449FA68DD7ADCD6A669C9D4A +:1089E000935DCAD058FEA3FC843A66D7B762D8E735 +:1089F000BFA28ED7AFC9F4A7CCB9E2AC87FADE54D8 +:108A0000F01CC2FC9074B40DF356C2C3AF05EBA2C8 +:108A100074F2CDCF995ECF69AA3A97A45BFC64A7A4 +:108A200004866B7421E5E73A9028DF6212CBCFC948 +:108A3000D6F161FFEA4E8AC3145D057792FF72EBAF +:108A4000FD023D355C20C8E7370704FE74A348E00B +:108A500017B669023D2B522EC87F658F2ED041B3C9 +:108A60005E909FDB1516E8F9DDCD82FC822386C07F +:108A70002FB6DA04FEC2BE88402F8AED11E497F4C7 +:108A80009B027F69BC4BE02F1BE816E8E583470497 +:108A9000F995172C815F91E813F8ABAEC6047AF50F +:108AA00070BF207FEF6771810EC13941BE467D479F +:108AB000A0EBFCFF21C8DF57F0BEC05F1BB826F05B +:108AC0001FFD488B53FEC02B92762C4079F889C04D +:108AD00057F2B0DFA6F72348D7E8DC4FEDB71D9C6F +:108AE00035689F0BFB74B822EC1DB54386441AE22F +:108AF000EF76F51CA70F575599CBB1BCAD87E7A909 +:108B0000EFF09912C31D1DC52D393613FB0076C435 +:108B1000A05E3ECA1324725C41935839D5A075E219 +:108B2000F78CF1BC9939BAECAFCF9B747AEFC4F3F0 +:108B3000B3BCC618A57AD21E3BBE86EE1B6D6A3743 +:108B4000CBEB3AB9C497C073EC7C1A7F1F4C5D6FB6 +:108B5000AD8A7E4CDAEF5C5AF7CCD23BD49DB5EAB5 +:108B600010931F5B57E1EB4A68CCAEA4F59FC67B20 +:108B7000901BAF82DD51CC33AC3387A37E463F1BC5 +:108B80002D60F40FA301361E8916B1F1C7518DF186 +:108B90007BA2E58C7E2EAA33DA8AD6B3B1371A6669 +:108BA000DF8F469B19FD02DEEF69ECC3FB3D8D3F75 +:108BB000C37B3CF15FC4FB3BD12F454D36C6A25D64 +:108BC000ECFB2FA3DD8C3E113DC2E87F8E5A6CEC8E +:108BD0008FF6B1F137D118E39F8CF633FAD5689C44 +:108BE000D1F1E800A3CF440719FD7AF402A3DF888E +:108BF00026D83810BDCAC6DF468719FFEDE8678C56 +:108C00001E72411BF5332B6A78BF0272A6CEEE4D61 +:108C1000D50B7A097FCEF7EDAB8C1535F43EEB81A1 +:108C20007EAA5B4F662C560CF6EE2ED6B9D4385C75 +:108C3000B7D757B0BF2EC3759519F7F47622FEF655 +:108C4000D2A51B71B53727D04B779190BDCF53E993 +:108C500060A6B17E95F7A5AD361E218FD7F1AD3652 +:108C6000945BED3C584E782C62787CFB6EEAB873CE +:108C7000CFBD5E6134915D5B33231EDEC669F75064 +:108C80005FDCE0E5EF37C3E764AD3730F9BA3BBBF3 +:108C9000D76251BE03FFD56B33E97CACFF1FD920EF +:108CA0003F9C57B29AE9FD628B6DEF961A97307E22 +:108CB000BB32BCB906C7D657BFCBCEC596C7E7FBFC +:108CC000C8CFF7D3D31FE675130414F6F712D0CF2D +:108CD00006E9DE88174BA23782C9C6072A8CED64E5 +:108CE000CF266CA0894E48F0C26E89ECE1F84FD5D2 +:108CF00063770D7F87DF5DE312C6C395E1DDB4CEF8 +:108D0000C395F77DC3859F7EB12AC0F46B84E1E7EC +:108D1000488F9DB38D8B8573C7DF095A6090E90733 +:108D20004EDFA982736F67EF072D52BA46F7F6033D +:108D300021FE6E63BE97661DC3ADDFB5EBDA484416 +:108D4000617868792FCB423021FDC412AA0B5FC72E +:108D5000FB8AA774BC0EB620ED2AA5FDEA95A9B83A +:108D60004E4BB9ACD153A9531F511E3C58CF3ACAF0 +:108D700083CC8E16BC68F0FB0FB077886F9EF4B280 +:108D8000FA77B6C2E826FBDA2B64D383F7BDF61C6C +:108D9000AC12A8DA532E1E77F3B732ABCF6E3F7FFB +:108DA000BFD8DA3365A91CE0F8685A0470C18E9701 +:108DB00013FFC7BA704CAA4F88AB1E8AE38D5FAF12 +:108DC0002CA2F8EF7CB5224071ECA4F5F3C6D727AE +:108DD000BDC81FB2AFE4F9833C4ECC3FC315595612 +:108DE0002FEA795A863DC7BFA01E9EB1E376BE40EA +:108DF00061EF619D769E39FC576CFD5EB171D67056 +:108E0000E6DCAC0E5CF7B10145A3F75D284B94247A +:108E1000DFF7C7F0BAE7ADE9F392ECD8D9FFFE1A55 +:108E20009DDDF713250F64717529BEFBEDBC74F64B +:108E300051A8FFA2C323CF3D34762F9B437EE2751A +:108E4000DFC19DECC9329ECF4CB683E30D717F9A92 +:108E5000E13E7B0FC3FD48E4836F535227D085F476 +:108E60003E62FCA3DF43F8DA0C1A1B1F86301B5B43 +:108E7000111E14B76D60B1713B240E2C43F9B0F98B +:108E8000ADD9849F9D305C5B807EDCD0B5F76C01F2 +:108E9000AAB2BEFB99BAE9A8F7833D4165068E4D9B +:108EA000471FDF4F7F3EC2BCF937DAFFA11743FBF4 +:108EB000E9FD15F3E60ADD8B1AED7B3BE24E9711D7 +:108EC0005772B6AABB307E0F1FE6F5F182EDDFC305 +:108ED00095FA05C253CB931C67C3A7BC2C7E63795C +:108EE00053BEFD62A18BFA3E607F0FBC79AAD8DA2F +:108EF0008BFC76EA7BE5E43ED0398F791FB01DFB11 +:108F000000C2EB7585E3E23AE60DD5CFEB12AE5326 +:108F10003AB13F70FACA0E39C2FAE95B2E3445A65F +:108F20007BE60F98BFDA546B31F905CFE111B21728 +:108F30001261768F6DCF57F93E538C434B699F9FDB +:108F40004B2CAF92EA3B8C665011E2EB3EADF0F752 +:108F50009854BD53F5F17AC054A93F2E7FE373EACC +:108F600027CC6A6E87F99FDC8E0ED9285821F33EF4 +:108F700085D6C573224E7DB2E2522DF64695B2FFDC +:108F8000BE49F695FC7CFD81BFF077677316B0FA99 +:108F900092AA4FEAFEDE74AE9F73EE74C83C1E8E3A +:108FA0003E85B5FC3D1366EBCCEE81607E911FD70C +:108FB0006FF47C95F567AA6CCCA845FE3B69FCDD97 +:108FC000C8792772EEDD70BB7326FFFB509CF55706 +:108FD000CE3D0452DE5DC2AA5FA1B8343A7954AEE8 +:108FE000087934F62E5325DE67D6D3793097EE33E1 +:108FF000EF3A7E12EE33FF0BDF219D2A5021000055 +:1090000000000000000000001F8B080000000000AE +:10901000000BBBC8C6C0F0A31E8139D851F9E8388F +:10902000174D7E23337EF584F01AA0FEE540BC0880 +:1090300088E702F10C209E0CC47D40DC09C46B590A +:1090400019185600F162209E07C43381780A10F780 +:109050000371172BC21C07A03F3CD9F0DBF590151C +:1090600053CC9713C1DE4BC0EFA378F8E373DC0C4D +:109070000C8778107C535E54F9F3DC08B6802065C9 +:1090800076C903F50300446FD3A5800300000000F8 +:1090900000000000000000001F8B0800000000001E +:1090A000000BDD7D097855D5B9E8DAC3994F4E76C6 +:1090B00006C24908B03300613E04C480A81B8888FA +:1090C000945E0F8A16ADB71E0625322522559EB531 +:1090D000CDCE0004418C80350AB5072A880ABD51DF +:1090E00051B10DDE035A0D8A2D54B44EB5B1B63EC2 +:1090F000AC0A11EBD03E5BDFFFFF6BED9CBD77123E +:10910000A0EDBDEFFBDE85DAC5DA7B4DFFB0FE6971 +:10911000FD6B1F5F7800932F64EC6BFC03E51A0F67 +:10912000DB278D66CCEF8FB5CF655087FFD804C69F +:109130005663990FFF2565958D672CC0F81FA550C4 +:109140007ED71761EC32AFCED839F0209A4DED3D85 +:10915000E11A968047FAAD4AA27504B68C32EC3714 +:10916000103BC2F3A9F5FE37878C636C7B63B1ECCF +:10917000837A0993A8FFB6A6E22083F6727DB4A095 +:1091800003CA87776517C8D04E5FEF654A114D292E +:10919000B33CC68AFC7C1CC64C86F5818CD7B7379D +:1091A0005E96C9C2505FBFFA1365541A2EAB2C35B8 +:1091B00065962AE36BFF9A613FF5CF1D561DC61FCA +:1091C00087FFE883FF57C8C7F5F377CFFDD647EB96 +:1091D000FD4993CC7CACFB3A1EDE55FC6219AE1304 +:1091E000DE2B2CBD0E5C9F313EBDBE7F743D041F47 +:1091F000AE27D59FF0A774C1ADFF46CF0594693265 +:10920000BB5DA792E8707B6DF2BCD2418C15A83B88 +:1092100064402ABB5D4DFA355C87691C8D42FF0AAC +:1092200066F5672C17EA93041D2795C926F60F9556 +:10923000417FDB7AAC7536D532660C013EA8F5531A +:1092400099E69758340EE35784AF9FC900DFABBF50 +:109250005FD381486CC8F2EAF5B0FE61DAB40FF072 +:10926000F98BFDA7F9919EAC43FD7D07C050067FA9 +:10927000BF2E66AC51DD95A58D40D2C3731BDC01BA +:109280009DB7B3D6318CD9EAF07E52D83B57867160 +:10929000BD038C681CC7ADB2BD87712769572E9678 +:1092A000001ED6691BB7388DCF476B356600210F7E +:1092B000D69651792FD475ACFF4D99D31A4ED3570A +:1092C00013FCBA7CB24CCC71D7317D3BB26A33FE11 +:1092D0001F8CF3AC071109A33EC4923B24EA5750FC +:1092E00005F5CDB3F2CA892E95401758E76649FFB8 +:1092F00003F6372FF2EAD8EE5EB57916F6DB1CCF0F +:10930000964DA93B7DF2E3B2D917D63FAC12F017C8 +:10931000A1FABB43609C831E66C4A15FF30D2C8938 +:10932000F8CDFF328FE963A19F01F887762F06EE13 +:10933000F9D007EFEF9AEED57D521ADF06FC45F81B +:10934000270CD42E31E1FDA61B54562F75C7BB9BAD +:109350002FCA9FB3BD473E89733EE9468FE99C1EE5 +:10936000DDE830F3F474B0CA3B6A93EC3DC0E5DA53 +:10937000DA28D16343AD4EE51AA40FF0DB7A6C9A7C +:10938000DF7DFFC076AB42F9D21464558F211FC434 +:10939000CA7B6C67958CD5919C598B742BA0E51872 +:1093A00088F4E0B8AE7A2A580AF3E3FB89E23D88F4 +:1093B0008226A9EBBDC900BECC747B3304EDD70671 +:1093C00078FD2DF33EC32C4CD73F649B0C7352F7B2 +:1093D000F71B3C9D863286B1A7CD6B8C1101C7F877 +:1093E000068E6F5F9F7F52F7F13604F8FAFECEEEDD +:1093F000A4FA1A09A05644190320A05F65058D4BF5 +:10940000F59DD909F3B909E9795E6709D3043EBF2F +:1094100096C50F22FE9352F35459C2793BE6305859 +:10942000573BF6877133CBF83CEDE65AA3414DE349 +:10943000E515D668221C96FC5504BF28A6DF5422E9 +:1094400028BF77190AE048C9611ACA7716E37A413A +:10945000D60CD6114ED343D1D4F7EDFCD5C517A207 +:109460007DEF74E4EDBAD6EF696E5060FD07F1153B +:10947000D4A70CAEF8D524E073DF114F0CE70F2012 +:109480005E8135025F296C623636AA3114DC4743AF +:10949000414642ED67B8E9802F82A5052C69933BD0 +:1094A0004CAD89C647A6C785F98E633B0B5F679AAB +:1094B0005FED6D7ED520FCAC11F3BBE7DD1088CDF0 +:1094C00041B9366562C5A58CC61924D37E16FD9AAE +:1094D000CFD765EC3752E27A3382E367A7E188E0C1 +:1094E0003C305F66058C6BC3AF351EE085E1785676 +:1094F0003FAB3DC02BC677E2C53D0EE02F1ACF38FB +:109500001DFDBFE4F49FEAA2BF7196F4FF6F1AF746 +:1095100053E06194C32B267B9326879F215D2CF813 +:109520002D782DF8DC70AF918CDF4C2A12F64F7637 +:109530009A9E9F62BF3EE9F9BBF1118B5D8AF336BB +:109540001FF5B0DB4F33AFD5DF3DEF8A97957C56E3 +:10955000DC7D5EF77ADDF3667F39941939A052908D +:1095600077004FF5755ED257CD952C89F46F6EBF9D +:1095700088EC948D323B84FC6AFEDAC376C0901B83 +:10958000519E92DD308EFA253358FE65237A97A7D7 +:109590001BC13E30498F425B289B253607E572F69A +:1095A0002EAEC79A3DCD970CC6F12F92C7EC60F452 +:1095B000FCDDBEA02F9A03CDB3A6D99EE7607B7CCD +:1095C0009E915C3B785CFA79C10DB981B9617AFFF3 +:1095D0002E8E67CD9F335D66A60DDE2C2F9B1BEF75 +:1095E000619DDF97645AE7D342BFDC2BF44B5650A2 +:1095F0009B8BF8D0EABDFA76C0C75D178D2F9867B0 +:10960000E3A31F8AFDD52CF4D3C13BF224E4B32C91 +:1096100083492AAC2F6B264857C0D7D39E585D2468 +:109620008BB11B2566D4C07AB28E375F8572D7ACFA +:10963000DBC77CD0BFA012EA1AE8E9488ABDD00790 +:10964000EB8CE4F056E955A301F447F2E54D0DB873 +:109650008E157F845E30E504B559A921FCE7F6A894 +:10966000CF7EF247FF9C24C03961FDEA2397133374 +:10967000251DFC33F10F4E3E781AE11D827047A97B +:109680004C48CCB1CF34FC27C0A1E13E1B45F6F7D6 +:109690006415F1F2218BA1BD3BC11F7BB30A59A117 +:1096A00092C51AF4EEEBD12A9DFB0DE0996A87E78B +:1096B000BF0A8E6B99718FD4A7F7F1BAEB87C48F6D +:1096C000B1FD04217FB32A934A227C3AB82BDE44B1 +:1096D000FB4DBB98C3DDDBF86E78D7097CC27C7B81 +:1096E000A473BACFF7DF850F18F7599267FFE2B876 +:1096F000597F70CBAB662157522A97F356DD6058DD +:10970000F77A19F975A8F3C82FC43FA8A70A633FD1 +:1097100041F97654F2123ED42897DB97791347111A +:109720002F6C2673F88F7E2DCE50AE790BCA321374 +:1097300068BF85737BD4FB4DB52DB3548FADEE61FF +:10974000C24EE770788B593207E1FA6ABE7ED9C8FB +:1097500074BB7C21F7ACFA7D5DFD9CEB8571EEBDA1 +:109760001EEA1E6DFC58D47B1FE0FA7B582FC0F117 +:10977000816493F3AA66325CF77D370CE6EB5FD029 +:1097800033FEF3FD5B66A93969BE244402FF658997 +:1097900071EF88B2662513EAE3C0BE063E2C29D4D9 +:1097A0000FAAC097F985A916F4C3D7328EE74DBE2C +:1097B000C45F108F1ED934FD45C85F35347FA38048 +:1097C000EB22E523FFEFA1BEA1A23813E5D8405953 +:1097D00072E825ABDC04721AF1793BF873587EF11C +:1097E000DB21B4FEDEF87D4BAD7F963AC8569FA9CB +:1097F0004E477EDAB2A4FC682580BC2AB7B49C74BC +:109800007595A4225C0189EFAB2C99CBCF4DDFBCC1 +:1098100099D609F8CB9271FDB91C6F8CC519DA572E +:10982000F847B5E1A3C4300CF40B2D7C1403BA2423 +:109830009827733D8BA574C243810C70E56B350688 +:10984000E2C93F493FA8E8693C80E3D35402EDEF09 +:109850003C34A8FC76DB3EBE46E67A809572BB813E +:10986000A931D29BBDC98F66C0D3080F914BC27579 +:10987000AE1175ABDD5B526238C2936B04497EE476 +:10988000C69312C275AFD07F56DCA351C0D53C251C +:10989000487CD7D85FDB86F18CF1D67AB64A6E3E2B +:1098A0001B2F9F93C68FC567B986919200CE9427D0 +:1098B0003111E157F4668DF64F3CA581C7CA564970 +:1098C000027E931DC1F1B2051D2C7ED7A2FAF6DBF4 +:1098D00061DE19822FB263AB6F44BF2DAB5425BF3D +:1098E0002EBB632EF991DEB72F21BF139E93FF9AF3 +:1098F0003BDD24F1921FD52723BE1FF32466E0FA37 +:10990000B4312B52387416330C2F8C7BA7C76048A8 +:10991000377552C2C0B8C0A66F8E67736D7CF56D87 +:109920008417D70DEE77329CA6FB5D0A5FE71DE337 +:10993000B2030BC3D82E48782961E30C8C5F140363 +:10994000D969BF22FD19D1FF6A9CDF57D97C80CB32 +:10995000115D46BC00DFF7453CDDE9E98C62BF3BA9 +:10996000BFE99D93E4F838867CE997052E74F80BDF +:10997000F8F1897AA9ECA175F9111F083F2A6F58EF +:109980009367584D4A02F91A99CE6288463FE267BA +:10999000541A3FCA0893617C2A33CE62063450A21F +:1099A000DA81C11C3FCB083FAC26857456C3A6891B +:1099B000FCB945ADF9DDF7018E2DED4ACCD46D7CB7 +:1099C000C862E46758782A5C02FBAD07FB3524E4E3 +:1099D000D90B52E256D926BFD7E783FCB0C5BB2CC2 +:1099E000F9CC46CCA6F6BEC254743ECCEB8F46C72B +:1099F000D03E55358A6FACB7647E17DFD773FF183A +:109A0000ED1DD8EFDE28972F81D204433DE6D79B8A +:109A1000A9F415727EB4DE7B572AFA1F50BE8DE082 +:109A2000F26F758CC7BFBCFE14433A84814C68B793 +:109A3000C37688EDA019136C7606F2BBCC52B086C3 +:109A400047A0E4F18724CDEFD3838EB89877A5970C +:109A50008F0F9625EED7FCB77D7CBF09FDF39614DA +:109A6000DF42F26081D87F961C88CFE6FAE9581968 +:109A7000C1BB43C4CFBAEF770EF71730F611C49BC2 +:109A80009AA038E4CECDF38208C7CE96CB3213E14C +:109A9000DEE523DABD293018B6813CC5724BAD46F0 +:109AA0006597BC1471A5AD422E58CF830ADF0FBF56 +:109AB000167272A73F1EA478DDB357CD180AA82CE2 +:109AC0003DA6C45026F4BBAB35EB74F3172E71C61C +:109AD000119972CD69D7BBF2EDFC59CFD9DA3F2B82 +:109AE00067E4BE1F827F9CCBCEFD5A3973FF2F6A7D +:109AF000A3B39EF3FCEB78D92AE211C186ABEA301E +:109B00001EC1521792BC2C16DB34BF8991BF56BAC6 +:109B10008225C987F9EA6BFEBE2B0E6A84E7427D77 +:109B200010DFD36C67D3BCDB514EF47F556132F04C +:109B3000D320B15FD9661E97F2C35F8C3F51680591 +:109B4000C62D59C092296857D2EC8C37E6B3F59FE1 +:109B5000A0DDD2DF151FCBC77D3F0ADF3BE35F856A +:109B6000E0575694FFEB74F833D261F8FF7B3A6C00 +:109B7000515B039AAD7F3F89C5915FFB2DFD833417 +:109B8000CFC6AF0185EB0DB632CCDEB3C5F9FA49CD +:109B9000298A3F6D5B224F4779BB05F0407186DC17 +:109BA0008E9F62972FDE59974FF655DEFB17A01C4C +:109BB000CC53425CEF4D67DC5E604E3904FA2F4FA8 +:109BC000B1D909DB1A2F63DC6E67C7304EAA0B7A56 +:109BD0006FF9AA41F2021D07AD64B17AA8EB82DEEB +:109BE000959B6B0E78E079F10A46F117663AE95FCA +:109BF000BC80D37FD07ACE57FD573AE39C208FEBC1 +:109C0000BDB0DEBE60F6DE07B5D2CD4EFEE82BE479 +:109C10007F5F177FE8C00739C007A5CD89DB71FCDE +:109C2000FC630AB7915DF30FD25B2F41FC94029E57 +:109C300092647FDAC65190BF62F5480F375FF645F0 +:109C4000BE1CD57DDE7F95EFA62ACEFDFF190BCF7A +:109C5000DB05D5E4AADD2F0EA656866CD74F16DF9E +:109C600085997109D289C57BB6DBD3F2D514E71883 +:109C700085329D030998262F8F06F15C60AB577BD8 +:109C800011CF57CCD71486FA61EBF28202FBFAB7F8 +:109C900079B8DCDC16E0E53C85CBCB84E2A17281AF +:109CA000A86F8DF078706FF2DDF263067F1966A9F8 +:109CB000B1F6BAD75557592AC75E8F50BDB13F2369 +:109CC0007F461FC04CBBBE5D93D14A760F5A12141B +:109CD000B712F2E9D92C7EEED1182ECF64F45E973C +:109CE000EDE7388DE1E2BECC06A715EFEE0D8FEE65 +:109CF00078B7EE35A259D0BF316B5A746E2EC6C9F3 +:109D0000B87EFF81D02B0ACE09C26E95F2445D7DEC +:109D100029D859CCA855FAF07EB85E3D1BEC3346E5 +:109D2000EDC81E73CFB748098A733DF5AFCEF87DF5 +:109D300058233925F8F57A257107F2813985A5D0A0 +:109D40004E37C19D6C40BEAEA911F63DA73FB4DBB6 +:109D500088F3433B13EDAAAE76891AD6154FE4ED8E +:109D6000EE11ED0C47BB78B7765BC5BCCC31AFD1FB +:109D70006DDE6D62BC14B38F17EB36DE4E319EC9BB +:109D8000ECE3E9DDC67BC45A9FA39DD6AD5DAB680D +:109D9000C71CF332E7BC5DEFF3BCE27D82ECC1D5BA +:109DA000F9D7FBC94F3ADEDFC1576E3A1DCCE77CCD +:109DB000F65CFEB426E4839B0E79E89CF240BE93E9 +:109DC000FFACF60DB5AC62C920E43793CE0B1BC2D5 +:109DD000DB691EEB7957BBF076ADE7E71B7B69BF0C +:109DE00051B4F79F968F1B908F81DF1A449CD1FD51 +:109DF0007EBCCAF7F39A3299FC4CF7FBC9E23DD816 +:109E000069E4BF05CACCF346D8E4E4FF2F7096ABF3 +:109E10005C9FAE295BDE3C055C8ECF1AFE5A877EC6 +:109E20007D53697D1CEBAF9A7FADAB2CFA9F076722 +:109E3000B61AA8B7C3F93316A8AF94FEE7C139BA6A +:109E4000B1AF03CE1F9B7D4F0BE76AE1BFBBC79D40 +:109E5000A8F238C12A4F82FCDAD5F95746513FAEF5 +:109E600016E78471F5CDBABA3036499CAF62BB3E75 +:109E7000961FA3937E39533FDF50358EFBACA9D498 +:109E8000B9DF5E177AC42ADF40E30DC6F70F5279B7 +:109E9000B244BE373948F027C6DD3E07C79EF4BC42 +:109EA000802F4775D66358B7ED5BF807E9158CC36B +:109EB0007E5DD25DAF6C1C2AF4ED305E5AEBBA3D8C +:109EC000C394EDFA36CBD2B7970C0EA0BC9B5A5F69 +:109ED000764929C6590E2B8CEC3F97DE9D5C3FBD21 +:109EE0001DF32736B67BC4FBA843BEAEABE5F90E27 +:109EF0002037FB32E20B9E2760D92F5DF3650CBE45 +:109F0000A414F0700AEC3C7BBCB851E8E946A1A768 +:109F1000DDF4FC9BE09347601ECC3BD8097C87E5D1 +:109F20007D504F083B1DCBFF003B3D01EBD85F1B35 +:109F3000A5FA815A9DCA87603D58DE591BA3F7FFD9 +:109F4000595B41F535C2CE2FD82D1B48C7B5C2DEAF +:109F5000BFBF964DC0F8DD1DB57E2A1B6AB5091836 +:109F6000F7DB531BA5FA3DB53AD51FA82DA3FAD6AA +:109F7000DA18D5EFAEADA0FA24E9B22615CF2DAA96 +:109F800018D9F50F9B83B7A3C955B45B25BBA1A80E +:109F900011F4E0B8F4730BCE49D2943B901F47B74D +:109FA000CAD46E741B28BC9EDB6DC4F1CF6FE5E391 +:109FB0009DFF6796B2CF636B770FB69BDCC2E14320 +:109FC0003D20F53CDE569C77680B1F6FE803604729 +:109FD000F43CDE361C2F732B5F5FE624B04B7A6EA9 +:109FE000B713C7BB702B1FEFC2AF58AA97791FC119 +:109FF000F142D9B1B971F2575A0F60BBECE95A3648 +:10A00000C6214339B11BF9735DC6B891AF903F0FBC +:10A01000637BE2673655C6388D2E9E637B7ADED130 +:10A0200080ED03A5621C2F1F7FC325DC6EC8AAD458 +:10A03000B6FB611D3B443D7BBABE0DEB211F9F2F3C +:10A0400032A08649B0DFB20A354982FA20A8CB5047 +:10A050000F7B755A5FCE0C266F87AE1B8A4D26C1CB +:10A060003ECED279BB1D5097A11EF6E912AE2BE76A +:10A070001BD00EF83E32A499DADD29CED3060DD1DD +:10A0800026D3FA2A75C9AFA7CFD7B24BA11FAC7F91 +:10A090006065C764DCFA8B3CCCB802DEDF792397BD +:10A0A0003FAFA8D553308F20439C87499EB6297572 +:10A0B00060A7860A78FC2AD42FF67A02E5CC682FAE +:10A0C0009D03860B621D7824C94605C7E03965B833 +:10A0D0005FEC7812D6C5C67AA99E092694960DFB28 +:10A0E00038F370D9DC1EF69DBBFCF4F0548A178659 +:10A0F00047C8CCE841DF58A536C9791E1B9D5E5381 +:10A10000A7823CAF4078A07E2FC23391B18FD5EFAC +:10A110004DC17C8CD2E9BC3E70D5AE2975202A4356 +:10A1200003001EC06768602A7F61AE0D9E01A9A270 +:10A1300035B9367806A6863E382E0D4F3EC283715D +:10A14000859B383C9FAA465FAD07B8DCEB2F58E0F3 +:10A150003CCFD1BD7A3ECA7F65BA773BBABE4A9240 +:10A16000AF6FB567443DFA050DE7335502E4350896 +:10A17000FF2AD3CF9A108F881F3C477847D85B5D62 +:10A1800074D9EB357322BDE335D48FD5F076FE77E5 +:10A19000B15DB880C31FDE1B34737AC8CBEB82037A +:10A1A000FB51BBF0BBF6F1DDF075A787518FF4983A +:10A1B000B5EA4EF96EA8F715F80749366572697762 +:10A1C000FA6CBC0EE01D0DA580371FE12DE7F8CD20 +:10A1D00086F93FB7E0B5E836DB7BDA758706F275BE +:10A1E000876603BCA390AE1C4FE1D9C1D3E2293CE2 +:10A1F00090E3293C3BFCAE7DFCBF6190BDCF99E96B +:10A20000DA20E06810FE71BE7A0638569C816E1620 +:10A210001C2B04DD2C38569C816E161C2B9C743B29 +:10A220005B38EE1270DC95C1ED9FFCB0E0BFDEE064 +:10A23000987396F498E3A2C79CB3A4C79C7F921E20 +:10A24000D63E12F4C854391CD638DDF6513F233AB5 +:10A25000D721DF0CBDCE26DFDEC179CFC17D619471 +:10A260006DB3C9393587CB83C6F339DE1A33C47C65 +:10A27000614EFFDEE7EBB86FB163BE8EEDEB7A9C0B +:10A28000AFE3E1476CF38DFA399FEF4C7180D96AE7 +:10A29000628347C40114BBBF5B9374F8BBD06E9359 +:10A2A00068672A76FF399174F8CFD0AEC523FC6C6D +:10A2B00047BB78B7763F12ED98635EA3DBBCDB4506 +:10A2C000BB946C1F2FD66DBC07453B53B68FA77749 +:10A2D0001B6FB780C370B4D3BAB57B54B4638E79A7 +:10A2E00099735EC66EA4F8F6775DE732EE323BEE08 +:10A2F00075C4FBB44A2F9DA358759FEE7CAF32DB2B +:10A30000FBA2F47CD67819E25C8925E23AAE7B7533 +:10A3100046E2753C02FBD5AAF7A6E462FE371ECCE6 +:10A32000827EFE95E74FF514A71FC7CF7954B67C00 +:10A3300020EA5F5F4C65C9229EAF8578F097AA142A +:10A34000575FE5315212C1C9E3687E3DC6E3B8A24A +:10A350003F10D271EE6595D6FAD4A897E26C6AB434 +:10A36000E9082F55CA7366CDDDCE4BDF46FCFA589F +:10A370001C0F0DBBCE4BAD797AC3A3ED3CBE0CF3E5 +:10A38000796E61C118E603DC2C27DE47FAAFAC5CBE +:10A39000C9704B7C7151159D3347598D84406A7D3E +:10A3A000855D32DF1FC3FDA14D9D447E55431FA730 +:10A3B000FF36C4CBEDFCCF3D0AC1AF85B85C627EF1 +:10A3C000337F960DEE2CD10EDEDF88783F67B5FC2B +:10A3D0006C5314EA996C8C0476D3A6ACC0D4E90013 +:10A3E000875622FA17F6D2BF843D8AED8779BF3EA1 +:10A3F000A862FB818CF4DE98D5050D26E0431BC2D4 +:10A40000E51B1BA76F6B84F5B7FC7BDE18CC53CE26 +:10A41000F9B79545985FD535CE704EEFB1D80FE7B7 +:10A420004B803D3E3E9D8FB7C997087AF1BC6DBA0F +:10A430009942BC28612B0FC1A038A4D9C74BE77C37 +:10A440006E7C678AF157CDF553DC2C3ACF9B44FBE9 +:10A45000F987B271018E07F3245DF3F43D9B792EE9 +:10A46000524664FEDE86F762AF33EF61B5C873E82B +:10A470008D0FD60CB8353F41F06BD6FA488E58EBAD +:10A480002B13CF59D8CCA7FDAA4199916EDF3CF58B +:10A490000712F63F29254679295E9A50EDF98BDEA1 +:10A4A000708D89EBB7DA3700FC926D7CEB398BF25B +:10A4B000F1BBEAD3795D157CAD4DBD86E2176A2507 +:10A4C000CFAB61739CF929AA56D395678178EB9E2F +:10A4D0006751A8519C9F7179DD15777C27906C801E +:10A4E000FDBAD21F198546F417015EDEA234B74BC0 +:10A4F000D0EE0BB9398EC058F73CFCFEB8C10F61E5 +:10A50000F87CEE7EEE71A1DDB97CFE9AD158AE2DBD +:10A5100085F14A709C1AF2A325354E72A1EB1C59A5 +:10A520009C4FAB426679FD097F11C6B7C1CFC67398 +:10A5300073A5790CC571BBCE93C1C6A3FC80287BE3 +:10A5400040E4F3303B1FF94B9DE7239EC2A0435EDE +:10A55000B239A684F35972D73A6F56C3B019097F3E +:10A560008690E75CAEE2143C5EF13D87BC56C32C9E +:10A570001588207CE5CC7E7E61C95F94855CFE7E7B +:10A58000EFACE47CB7F9663BD779D6FDC2AAFEBE34 +:10A59000EDBCAEF77E2A7BDF760ED5E86544EFC5CD +:10A5A0007B3EBBDF04BA7DF4D887F79B8087257F8D +:10A5B000FFF4FEEFA17DF04C4043F957FDF01FEF93 +:10A5C000BF15E8F1F13E9F8CFEDFA2873F78E77B65 +:10A5D00050FFFCE921D91832BA57ECC7138FFE257A +:10A5E0004F877156ECBF88E22A2B9E98EA38FF709D +:10A5F00097276A793E697A7D495A8FBE4FC24330A8 +:10A60000C6DA44C98CB004F85C86FF84F99EDDABE1 +:10A61000B000ACEFE3D77D491FE0BB1A9EAD04BB91 +:10A620006859EB523A1FC4FA6D60972DDBBD86CE98 +:10A63000D3AAF7791CE76CC0B9FDE42896A97E98E7 +:10A64000C2B36CEFE5979E3F0E4B0FE58154B3CE3E +:10A65000D5E84FB9FBE1FC5FC2B8D5C794B9DED1EC +:10A66000DDDF57B37826EAC5EADD6BF9BCAE73BC13 +:10A670008FF11F13BA9FCF3DE5759E0B7FFED0551E +:10A6800099297CB937A747FD669DCF2D7DE28AD3F6 +:10A690009E039E10F1A233E1573B5F8EF71487A70C +:10A6A0009B197D304F96DB9F774E92F331054EAB71 +:10A6B000E3E750DA942FDB310F2BF950F618E4035F +:10A6C000EB1C2ECC847C13E78A6EF9F1C3FE6C2B55 +:10A6D0009677E74339BABB3CF98537F126E90B9702 +:10A6E0005CF9A124DA65F1FB38203FFC41A0FBDDD9 +:10A6F00052677B093E9F2593BE86E74DC16C5BFB8D +:10A7000009E2FE8E61E8DA78BE6FB87C8347B0DF7D +:10A710003C4CFC19163351A87841EE91FC42BB0623 +:10A72000CA206BA5F2CFDE62EE27B023548FCC3A5D +:10A7300085378918DDC8182F408671FBF8C35C7E09 +:10A74000CF563FB2DBD301B695EC69ECF2B5952F4D +:10A750009877E67EB8DE7E98BF2FEEADE55AEB0522 +:10A76000B985F5FC2E783486F0F5136FFB3293EC47 +:10A77000990230D370BDFD5907D507E212A02C62B3 +:10A78000893A86F2CA8853FE5B80BD4DFA4336652E +:10A79000E9EBE1697AF9FC11334479A5DC8EF20A20 +:10A7A0003BCAA2AB2FBC9AF2296E918D3712DCBE48 +:10A7B000CAF60150DE776E3997E387D36FB3F09B0B +:10A7C000366738EDA8FE3EEEC758E5E62C41B72BBC +:10A7D00004DDD4B834CB96C747F82AC0D8EA8EA98E +:10A7E00064BFA87CFDEEE7D67C682FCEE5764E8769 +:10A7F00064CBD71BEDE3716FB043CA308FDBA73555 +:10A80000632679975E45BBA3E3347126CBEE58539C +:10A810009BA0F23C0C129F63B34F85BDA30AFAC004 +:10A820003CE7FC6BF3684C1DC4F906F5D55B52E2BE +:10A83000421CCF8FF9A511B4BF797E9422F2C32CAC +:10A840003FD51AE7121F97D35669E551F906AC3C7C +:10A850008EFE67F3E4A8D8C771B23F678876805F41 +:10A86000B253EE9684BF24F9C57E62BA9697DE4F46 +:10A870000A987D9457078063E943FE5690AF92543F +:10A8800086709F001F2EF615139E3258475A89C3B3 +:10A89000FCABCFD79298BFA802C2946C2A53585AE7 +:10A8A000FC82CF3DD93C8E1F81F23A5F36F723B050 +:10A8B0005E8E76663C81F800BEAF93695C43C1FD55 +:10A8C0009127D69767EDAF39CEFDD5C597594E7C08 +:10A8D0002D12FCB858F009CE8F72A5FB3EEEE65F54 +:10A8E0002CF7F5E05F20E6108F0D19AB8B904EDA58 +:10A8F00068F6891CC3E707A71E8E92FDFE28D61BAB +:10A900001AFF93FB0363393FDFEA7B96F8593B5705 +:10A91000F807154EFFA0C9C7CF8F4CC17F6C92B00E +:10A920002BB51AB25BC1FEBECB47EF855C36B87D56 +:10A93000DB55AFE4EDBBEA23F8FB7FC22EADC37954 +:10A94000CE64975AFABCA84B8E39FDE22291A77AC1 +:10A9500091122639E05DC9EFB3E8853C8FB5A8B008 +:10A960009EF25A718321DF14AC54E9DE0DBCA77C42 +:10A9700056ABBFDEE8F49BFD0B9C7E7381C8031BC6 +:10A98000C06CCF615105220FACC0ED578BBC1B2BA7 +:10A990002FDEBD4FDD7AFD31DF3F9777F70BC9D84A +:10A9A000E7237F84E7DD346439F351D2FAD9247A7E +:10A9B000FDA3F679C3E431AFE7029FF579FAF7C456 +:10A9C0006707AEC8A3F39DFBC23C9FAA2583DF1394 +:10A9D00077EF6F906B3FC67B3EFD5682FA207ED6A6 +:10A9E000E8FE7348BC9712CFFF4542BA68469D9473 +:10A9F00097967BAC9CF39117E9ACA05E4D52BD4B92 +:10AA00008FB24E2A15AD3985A6E4C19553B2F01E1A +:10AA10004E88AD77EC338B1F4EAD6064F7A96C7830 +:10AA200026D6A32B549E67651A47A27969BEB2F851 +:10AA3000200BC4923DDF3667BABFCBF7C07A9FB810 +:10AA4000E6A8F79D1375B4CF4F805D877034727B95 +:10AA50000ED38B797C2C4EFC175D02B82BEA9E4FEF +:10AA600018157964F90B522497FBD538F3BDA2224F +:10AA7000DF2BEAEAE7E6A3FFE313F621A877E42356 +:10AA8000C0432CC5CF25E91E8BDAE123BC14005E40 +:10AA9000100FA718A77FFFB92C691675C78BC5675C +:10AAA000F0BF580AD63F00C649C1735FD489A7805A +:10AAB000EEC453A8CC89A78C98134F16BE332B74C1 +:10AAC000473B0B6FD6BDF0DEF05458D55A87F0FCEB +:10AAD000B378D2FD4E3C7DC6DA0EE0BBFBC4770FE7 +:10AAE00090607E9BBDA4A82949D2D3F8C8AF02FECE +:10AAF0008575DCDF0BFFF7CF653A1E95B31119E4BE +:10AB0000FF47053EA5959CEF7BB31BDD7C0EDC5A11 +:10AB100087837AF05A4F09F2F9DB82CFDF636877D7 +:10AB200079D0DE1A8525974FFE5C839266D5308FEB +:10AB300097819CBDD08F72BE5076E457FAC47D1BBE +:10AB40004B2E282A1E44623D45F275886887763070 +:10AB5000B3C13504F5E228D44B1C6E292CF6F1560E +:10AB6000D09336BFD2D207670B27D36264A7F850C1 +:10AB70005F86D2FB7860973D691C43BEB4F27B07C9 +:10AB80009A26D1D9CAEBD56F03BB153BB9F27B4BE3 +:10AB9000CC38F947C5EB9D7C5228E4F68015CE7C75 +:10ABA000CF4221E70B5D79BDFDF5D659B44F6E93C9 +:10ABB000D15266FD6EE3DF5918B082690B6CFDFB64 +:10ABC0002522DA0258778188A3BAF9AEDAEF94F336 +:10ABD00037CD9A4DF2E2C7B76D0FF624EFB7D4FA2E +:10ABE000B50500F48EDA2895BB6A352A8B5B8E1882 +:10ABF0000158CFE0468E8FA239A9A235502F32FDE1 +:10AC0000313B9F8659E2077EA06FF2C6ABA7A03FFB +:10AC10005EDA98988CEAE5DF14A3169FB32A1E1714 +:10AC20001DBCB2505B3016F36707D0FADD7AA3DFA4 +:10AC3000D2BD476BA1E9F6DB80AF01B6815FFA0CAC +:10AC4000B47F302716E1D4CD9484E78377F9B91D1A +:10AC500078B93FBE1EC72FAE6153088D55D9348FCA +:10AC6000859FDEF49395170FF31D42FDA166653BAA +:10AC7000EE296C1734D9E1E7768C1527EAB27F9B71 +:10AC8000ACFB06BA4CF7459A8BEAFDF6F890B86F24 +:10AC900020331E07BA05EF1B4878B93EF100ED13CB +:10ACA000CD160F2A4EC77FFA2D2D0DA25CDEEE3792 +:10ACB000E520EAB5EF327000191B9A04FADBF90AB5 +:10ACC000FEABC8C63C830EB2A72C780BFD61C2EF69 +:10ACD000E5FE442BE205F185E375E147E4BB0F1483 +:10ACE000FC5D761B23B95CDC0C0A10F8AFACA9B391 +:10ACF0000EE9374DC8F3ED429EC3CA67CEB5C9EB26 +:10AD0000ED09231BCF852DF96AC9531073420FE952 +:10AD1000E4670FBDCDC9F7C5426E96BAE466B1903F +:10AD2000B7C5AEE743935A8F7C6FC1E9E6FB5F5A24 +:10AD3000F2B62FCBC738D4676C52DF8BF4345F5830 +:10AD400079F36EFBC61D8FB0C61F9372CE2FA92656 +:10AD5000C5913D51A6217FB6F4B1E4B2D38FEFB2D5 +:10AD60003B620913EFB5B2794CC3B877746682F2CF +:10AD700050A378BF07D7758C9F2BACF5F27EB2DF5E +:10AD800094300FDC5F78E47CE4C70FFC615ACF6538 +:10AD9000DEF80748CF9C993C6E9983725A39BDFC06 +:10ADA0003395B4FC6BF4274E617F4B0EEA094D0ED0 +:10ADB000F720872DB9EB96B32197BCF4A989D43C31 +:10ADC000BD3BDC783BD97EBF6D4D7F21BF0BB91EEB +:10ADD000DBB24415E7E4AB2A8D52C6D65DF168B408 +:10ADE0000F5D8A6529AD02EA9748F47ED8DA1F35EF +:10ADF000A27FB16E16AF5704EE69C4F3847557494C +:10AE0000E47F9C27DE03A4B45F3D7E0B7F35D7161D +:10AE1000E1795021B707D7149EFE9E4203C6A38650 +:10AE2000A4DB296A8CEE0F5972C0E78A7BAA61679E +:10AE30005C575DC2EF0B5AF2415DC2CF8BD68DBC21 +:10AE4000BE1DD781F163A4A3D75F43F9DABEE61B29 +:10AE5000295FD92D27FC424EDC2CEE25819C9003E6 +:10AE6000A82F3567DCD89213322A58783F785C0DCA +:10AE7000C58B7D7A42D6C3E9B88C2567FD6A9CC52F +:10AE8000E0B9677A0DC3F7BE9971CA4BF289FB65C9 +:10AE9000B23F7600F9D39F7B2446F2CFC58F1302D1 +:10AEA00016FF191302508EC279A19C14B0E26931C9 +:10AEB00089C7A9797E71A33F7E01B6D30BB57A8984 +:10AEC0009D3D7FD19FF122EE85E77A9AC14E17F71B +:10AED000B2F83A13FDF592EEFCB9C16B645D0470F3 +:10AEE00035FCD213C3FCA133F9233FAA05F9EA4983 +:10AEF000EB414BFF59FAF0FB8122EBBB07E4B710A3 +:10AF00001FC3F8EBDF1E9EA418BBE08FF50BD874AF +:10AF10007E0F93F3A54FF8985FF49F17F4022A6F02 +:10AF20000B288437EBFE8CC567C15EF2AC2DFEB4F6 +:10AF3000DA5BFCE96E77B67CE9F5279A8A01EE21A7 +:10AF4000E25C6348F38D07033DE82D6B5CB93B5F22 +:10AF5000DE867CD99BFE7ADD6F7C1FE9BFA13C5663 +:10AF600015EF619D4B823C6EB165C9E6800E78BAE3 +:10AF700017F165DBC7C110C7C317439713BEB60BE4 +:10AF80007C3DB8D589AFE819F065B5FF2FC0971F94 +:10AF9000BF0B1116F8EAED5EE169F0B5FD74F8BA81 +:10AFA0003DBEBDA918CF1513726C908EDF6792530A +:10AFB0001742FDDE2A7937DEE3DC1CDFEE1F847CDE +:10AFC000D672B03004EFEF0966F07B7B5AAA1DDB26 +:10AFD00099A5327DDF692DB023EA95352DF24F4CCE +:10AFE0001B3FEE2CE4F7A3D614CE0BCEB7E161677E +:10AFF000CBC1A85D2EEE74DD13B4CAF941C971AEA0 +:10B0000079DF027ECF2A3FC19278DFAD52DC6B0A36 +:10B01000E4F27848C0E0F521617ECFE9B931ABE9CF +:10B02000BB0E6B0B7978DFB22B5A5C7685E5AF07E8 +:10B030004BF9F79E5A12FC7B179EF3B9FD1312F6DB +:10B0400037BCA7784A7084D3CE5684FDE0DBEA7A19 +:10B050002EEC0D8FCBAEB0DA2B67F0DFB22A3B2897 +:10B060006EF44640D8D37DD940B42BEE8BCB044749 +:10B070003EC0813267FD75CD12DA83F95F2906DFA4 +:10B08000FFCDD1AB47A6ED8B4F0241C2E37A11D77A +:10B090001BF31C5330941299A4517CD3C2EFC90006 +:10B0A0008FEFAD177962E71C33948CD3B51371C859 +:10B0B000097F3095480FEDF604C57D6F353507E9FA +:10B0C000B6768C57C378E67A89CB47F3658FE06311 +:10B0D0004674DD799DB60DE3568FB517AFA3ABB5BA +:10B0E00009BD1CC77B0CF44B71B87739F97890AF68 +:10B0F00067F0F498C1BF43678D97DACDCF4753D13E +:10B100006B001FCF04B93E792C08F281F09428B06F +:10B11000C70DFF5DACD7C2D3937A62DD48D457B078 +:10B120000E1C26BBB086617EA735DF63857CBEC75B +:10B130005E97C92ECB8FBDB61BF587359E35DF9345 +:10B14000C19EE5D1B5421E59F8FE999E5C37CA36BC +:10B150009F6FBA733EDF02980FEAF9C765CA2BEEFC +:10B160006DBE9FF532DF5C0B3E41B767F48E75A371 +:10B17000619C20CE87FC8FF3857B98EFCB8D528628 +:10B180006D7FEE17F33C63E1514D145C669343A36E +:10B19000C4BE7D10E4C77C1877EDA0D501E4E39D23 +:10B1A0005292E4993946A6EFEEACDF7A2A85794EC1 +:10B1B0000F1A8CA2BE5915E664F4D79705B385DC47 +:10B1C0009D42FD24B5B90EF7A3D2C2B85D857E7944 +:10B1D00026EBE1FCAA99EC890133F9F79C2CBB2FF3 +:10B1E000DA52F3E25094132B65FA7E0D03375A1DA1 +:10B1F0009F8E7BB478C478E2FCC9B217F2851D7DBE +:10B200001ABB21C6ACF325AAF3F3282B0EC2CA0D34 +:10B210008A6758F17F2BCE67C5FDAD787F264B4DF1 +:10B22000B69F43953083BE673848C4458A0C7D0A73 +:10B23000C6CB07B724A6209F65AF60F47D489FB0BA +:10B24000C343253FCAEA8A0B9E07F305BBEE2114D0 +:10B25000A0BD9013ECBA8740F522D77B35C1F58F9E +:10B26000BA80CB3776B85BBED1A2601FCA83E071CB +:10B270001711DF7E4AD8619BE31B0328CFFFE2371B +:10B28000EA50FFD6093B0DECFEE5D88FCD06BAA0FB +:10B29000DF0E6DD00F51C24CFE47E89AA623E3F2B1 +:10B2A0007E25F717DDF4EA8DAE16FD2C7AFEA37429 +:10B2B000C44F4A29E8EF603C89EC42F3B4719E42E6 +:10B2C000B593CE177516237A96B238D1B3C0AFC9ED +:10B2D00048C7E24ABD2E80F4147AB33FE82BD49BD2 +:10B2E000F7C7971311DDF454CB047DE23C1EC38EE7 +:10B2F000488E3817D0E7FEE039DDE9737B7C4A00E1 +:10B30000F5F7CE98DC8AFBDBADB799D63C1DF1B9D9 +:10B31000B3B09CCE0B5ACA3606D00E00BD4D768017 +:10B320005925D37D97B3D0DFE417CDBFFD2DF28B28 +:10B33000D667897B8283BCC91D45A87F746EB777A9 +:10B340001E999A998BF150AE27D67B52D1D8086CB2 +:10B350009F9A330FE5C28FB85C7830EE960B49FFA9 +:10B360007C2452308B9F876EADBF84FC3FD524FB7D +:10B37000DF9AFFDCE0B9ABC82F0BA728CF6EFDAC7E +:10B38000E5F43D034B8EB8DB9DDCFF9BFE98E7F1B7 +:10B39000DBEB3ECD80CDC87EA77666E07A8EDFF609 +:10B3A0004A8601EF7F7B9B42F783BE23E25CD7D6C0 +:10B3B000FE6D3CDE0F7F45C8C79121E325E2EF9586 +:10B3C0007D88E96E482A18D4E57C05FF2DDE15C27C +:10B3D0004DDF555FDA9AE3A85BF1A0A53E7E8EB5FE +:10B3E00078F7016F3F80FB865D59140F3A2EBEDF60 +:10B3F000767C6FFF6D18B70E8464316FFC2D9C173F +:10B40000D78374F85D9B8FA5480E1FF170FD67CC44 +:10B41000C4F38684E00FF7BA9E7F2644E35E77B7D5 +:10B420004276D35CC0E54A10B989AAC5144F71AF02 +:10B43000FBBADFB63E5F00EBBA6EAD44DFF1C0F69B +:10B44000B7819F9758B986E2886EB8E69ACE3C904D +:10B45000F9ADB3283E396F85447A79DE5689F6EF27 +:10B46000FC2667BBC7DAA77A917FAF6B763E5FD8C1 +:10B47000B68EE659E88A57BAEDA5BF07859D349E7A +:10B480009D8B76D2A9F6CB28EED89BFF6DD947C706 +:10B49000C16EC70B4D7FAAF553F951AD46E54B413F +:10B4A000CEB78BF71D789E64837A643CF2D563ED4A +:10B4B000EF85AE8657CBA3DC5EBF60DBA70D4F32B6 +:10B4C0008AF7285C7E18243FAE11F8BF90F9F5305A +:10B4D000AC738788C38DFD12EA36F84E354BE4B75E +:10B4E000C1EED7306FE71A8477148ECFEDF46BF08E +:10B4F0003BB9A781BB7FC8196FFD57E1EEADDF52A5 +:10B5000085E753BA9F5BFBE125615F34ECBF671AA7 +:10B51000F2CB89BB243A3F3BE149AEA6FADD52ACFF +:10B520004EA7651F43796BF1A79BFFC0CFF5E2BE25 +:10B53000EEE2B3B63B081F161FC0BE898A7CA5A8E1 +:10B540005CD103BFB9F8CACD4F273C1D03709FBB28 +:10B55000F9E9442F7EC898103F9F5FA01BD3308E1F +:10B56000721D8B533E14D0F9D5FF4A38ACEF2795A6 +:10B57000F39814E6751995B04F1FFB8AFB37F57BDE +:10B580004B36A15D3CE625557C97D9243EBB00FF98 +:10B5900009738C29D12FFFF938FEDE64DDF172C109 +:10B5A0000B5F6D9AA99F193F6EBC74C9A1767E7E10 +:10B5B00076C1574E3FE786B635918928B70E737925 +:10B5C0005D7E5875E7977139F7D49E2751DE2E7A44 +:10B5D0006B638441F981DA9C8774D8F3C0AA8881AF +:10B5E0007257352388D70F924A8FF7A01F0A49D682 +:10B5F00077D91CF96FB03E13E3DF37BCE14BD6C1FE +:10B60000FAAA77F952A827973DB788E80075D29B28 +:10B61000CBF6F69CFFB6E8C1BBF3749EBFEECC83BD +:10B620007BC043E781CBC0CF42B63D631E5CAB32EB +:10B63000D79BD9537E5DA717E546B5F007DD797036 +:10B6400055BD9CA3B4849C79708017F2FB4C580FB5 +:10B650009D1125B9DE6978C867FA619D1FBCD9774D +:10B660001B9E037FF4C04B1169447A9F5B79681F6E +:10B67000B5969CF6BB6727843CB0EABDE5C7ED01F3 +:10B680007E407C2F017CA3DDB2E4A81C1A81718965 +:10B690006D1E5AD793AF1FCC1B09F5C58F7A726701 +:10B6A0007270C2A88F2C7A75E5270AFA2C7AFC17DB +:10B6B0005ECC93ECCA5314745AFCE8012FF2891B38 +:10B6C0009F535B0F783BC23DD0ABF5DD69747FF5CE +:10B6D000A12FBCA8673E7846627D8BBAF7AFDAF13E +:10B6E0005204DB9D896E1F3DC0F5E4476D52522A1E +:10B6F000EA9D7EFF0B65EF39DDCFF5CC29AC0CBFA1 +:10B700006BD9E06565E89798723086F6903B1EC865 +:10B71000C4F7BE6E39C8E83BDA1786AD781FFF0E56 +:10B72000DC2D2FF0E71E8CDDC27FE56F0F4FA2FDF1 +:10B730001F9B2AD7F0EFE0893C8070749B8F073EF7 +:10B74000294E754AC8114F98FB99633ACAEE9984FD +:10B75000718D760F4BEAE973F153C7F9BE1EDFAE68 +:10B7600090FDFF248B2B68AFFAA232D36DF808E866 +:10B7700041A6DBF8335496EDA837223C781E21CE43 +:10B78000D7C7F2572C2356E01867ACC6BF9F9E5907 +:10B7900051ECE8CF0E3BCFC5993242C1F57D960200 +:10B7A0001B1CE01A7FCC799E3351D0E3DC5C53A1A3 +:10B7B00034A0B75DEFC3D329CE32F10C7196EF867A +:10B7C00085FE2C6005B8CFE8AE0AD22B2B42F6AB33 +:10B7D00047D8F9F8DD32CCBBFBB9C0672C247FAA6F +:10B7E000038EFB8503D354D8BFB1B1F24D25781F2A +:10B7F000617D2EAF9F273F5E0CF511EBFB4CC3FB29 +:10B8000009B1D1F2580FDD8BCF9B5689F749648976 +:10B8100095E3F95F01FF0EC63A2FEC2BD8178D1177 +:10B82000666465E37D566606CA713E9D7F0F0D1CFA +:10B830008F00E68189F8B11AE1FD1A3DBCDFD98E8F +:10B84000678D53AEEAF49D4E5F29C05A949EA75C63 +:10B85000E5F08F087B892FD4294614FD1435DB1BB6 +:10B860006BA0769CDFCFB604F93700E59FA29CA2BF +:10B870003CE9CE7F0F515CFCCD20E7FF6F65AEF752 +:10B880000C837AB97FC04DB879DE94767F17CB3FB1 +:10B89000861313C314E7E7F78FAFFE8EB29DE2392C +:10B8A000E19A0CA48364707D2B0111AEC17CD07928 +:10B8B00031BF5A8222CA998FA628E59D299A37C39B +:10B8C000312FB8797ED4B7DFC2BB403A8E0B75E01A +:10B8D000DBDF54F0FA9C647143874EEB9811063815 +:10B8E000C6F892FD319FF96A39F95D9EA7E7CCE36E +:10B8F0003A1114FC2FBED3852211C719B76FB19529 +:10B90000BF45F2BBFA55117F3CC2F5A4953F83CBEE +:10B910005849DFEBEECCC3CEE71D96C92F737F9756 +:10B920007EC261EEA74F70F1F579E25CFFBC33D8BF +:10B93000C9F3C342AF087E3FDB3CAC6725E306C4D6 +:10B94000C34C9519F6DF0D582E1CD153878B33311C +:10B950007E7458E8692B6FD1AB2B745EBCD7A55FA2 +:10B960002C7E1B794C9B8FF819798C5D8B72C19D55 +:10B97000CFD3358FC6F139868DBA07BFDFDC9B1C6C +:10B98000B3D66BC9B32CC329C772A63BE5589FB881 +:10B99000538EF59DE39457F909A79CEA5735CCF1EE +:10B9A000BE7F4DB9A33E70E54447FB225004F67AB2 +:10B9B00049D30C47FB41CD9739EA435AAE76B41FC1 +:10B9C0009A9CE7783F7CD722C77B4B5EF7267F4760 +:10B9D000B62E77B4B7E4EFE87DB73AC6B5E4AF0961 +:10B9E0007F911FCB5131015E63221FAA37F9ABC88B +:10B9F0003553513FC652A682F6C53F2B879F74C967 +:10BA0000E1CFD8CC0A46E7BFFC9CB937BEB4F27A86 +:10BA10009510D7874AA65CF32894A3C3DC1F8985B9 +:10BA200045BC4BE37C7272FF108A33631E1CDA2123 +:10BA3000273DE1268C1365012FA11C71EBE7ACB605 +:10BA40001728FEE43EB7BB45D1293EF7856C4CC0B4 +:10BA5000F5F561AD14F76994C5BDC7297ED21F1BEA +:10BA600064F95A7B3CF6D530DF1FAF8AF56D01399A +:10BA70008D72B95F08ECD872DEDFFEFB08911CC640 +:10BA8000CFADCDA5AB2B0BF1FB571D657A16EC2B7B +:10BA9000AC9F9F9667203FC722BE405E75E03E0583 +:10BAA00039D53F0553CDC9ADF148005B3F3F333138 +:10BAB0002F18F0752DC66DB358AEB47C04C61FBBED +:10BAC000E4A5FE3530CDB38B8653FEF5A9AAA1F4CB +:10BAD0001DA553B0F62374FEA5F3DF7999CECFCB25 +:10BAE000AE12E760A7169450BB37BE03BB15F8EF44 +:10BAF00097B872D06F6F78F97741CEE467566DDBF7 +:10BB00009481E7C36F94F1F338EBB994C1E3C85261 +:10BB1000864278AA5E10A27CDB65490F9DD3542330 +:10BB20005AD05E4CF27D8E75F4B3D6366E74DEDF7D +:10BB30006AAF31D17FAF6E9B45F90BDFFA0DF7632A +:10BB4000BFF57F78DCC59A4FCBE0DF57D3C47C5775 +:10BB50004281F78BAF04FC6761F9C2A469B86FE05A +:10BB6000794A82FAA5ED601A00BE67258A3C88BC36 +:10BB70005758ECD52760C9FD32F8BCB359DC83FCBB +:10BB8000F01A4B7CFC6A916D3C6B1C5814EAE5DFA3 +:10BB900064999E3CE097CEF325D24F309F1F9FC7FC +:10BBA000AFE9B70A45A4359F35CE652C46E35EC1A3 +:10BBB0000C2A9911A4EFB458F271F90DA1540E8C0E +:10BBC000B71CEC738CB39CACEBFCE9CDB0AEDF2DB5 +:10BBD000FACB1394689FE8E88F7EE9552D0AFD9E05 +:10BBE000CAC1A0519A81FBA322E7ECBE6B07643463 +:10BBF000516F323EDFCB82DE73DA72C60ABD1DCBD7 +:10BC000000F8DF7C664F7F941B2F0E7D7010BF9F66 +:10BC10007A96E30B791F13FC05FA80ECE7932C1856 +:10BC2000F3F5603F3F2AF4EE2DB241F1D95B141ECB +:10BC3000A7FD42E6769B22C7A22AD45BDB9410F2D2 +:10BC400069048D23DBEFA144308951FCFE891FFC80 +:10BC500088E162FF5D9CF11FD31AB99FEFD4E7C260 +:10BC60006FB1F4771CFEA2BC3C0FEF3B4928BF9D8F +:10BC7000FEEF84944CFEC53FABAFAFCA70CAC5B3EC +:10BC8000D7D7897948D7D6322EB75A53419EFF0A63 +:10BC90002A00ED314B8FBBFB57897DB70C7D629439 +:10BCA0009F082BDA9F203F32F83D045329A73A0B17 +:10BCB00067535EB3D187D7CD4C289FD2787BAF74C2 +:10BCC000A2CC0F726AF91D8FAF6E9A84F712395E9B +:10BCD000B18EBFAFC2FC21AED72D39F2DC30FEDD14 +:10BCE000C0AF004AC4B7F05FDCEB1B077C4BCACD8A +:10BCF000E27BD13FF5FC5F23E817EEC9D67F751EC6 +:10BD0000DA7B871486FB29A07678B37A80F349948E +:10BD10004B4318DB97C1E5B07F9F44DFD9F1EBDCE3 +:10BD2000EF0A68DA18CA6D4FB010C65D3E7EB48463 +:10BD3000FCB05884CBEF9A507C3DF2F99FA4A3E36A +:10BD4000B512B28FEE407C5B786D4DF1EF928F545F +:10BD500059939A9DC6AB357F75CB583A5C58D692AD +:10BD600043E550F4B3E151758AC377625F43764F80 +:10BD7000FEFAC8B6B10BE95E5FDFCECFDF429FF0BF +:10BD80003FF8BD604C69C7FB200F7F399CC6DB9133 +:10BD900051C4ED2B95A91EB22B93327EB7AADAC7F8 +:10BDA000E5DF892F156AD735EEBEC98A06B41E9124 +:10BDB0006A3E88F67FA0CDA753DCF901FEBDC140E5 +:10BDC0005B2089FA4ED53ADF473B5E6DF3690D3A49 +:10BDD0009EF376BE83FCD5B9DF47BF2BB1C7DB4CE2 +:10BDE000ED3B073119EB438152F8FDB080D6CCB260 +:10BDF0006DF004DAEE419B1BF982BE3314509BD9DF +:10BE0000F9363AC5223CDFE0F90CCE4F7B82293966 +:10BE1000CCC765DB695DE975E2BAF0388AAF732893 +:10BE2000C525F678619DB9B42E0DF96028E3EB6461 +:10BE30006D4374D4CB2AAC87FC9A5226A34870AFCA +:10BE4000AB7A144BA27CD950CFD2BF8F04F2A23A66 +:10BE500098AEFB616FED2916FADA3CBE1A7F47A84F +:10BE6000AB8E02AD22DDFFED8C0F573716DAF68F61 +:10BE7000CAF7D342D4177DD2FB08F18071B15EF7C7 +:10BE80005B98B72BDBA67E8AF03F9A0AC7E8F7E2F9 +:10BE9000C4F782AD38CB0A29F5FE856847A50E8E1A +:10BEA000D2614D4B5EF8D900BCB2B7586EFBE14889 +:10BEB00078BFCA9B781FF9F5A9B76516013CFCE964 +:10BEC000A14072268C53F6F4B63C3CFF708FB7E667 +:10BED000F5FA8DFDD07E7A5AD231AE7BD2D349713C +:10BEE000D4656DFFDB8BF1BB8BF7BDEB45BBE10789 +:10BEF000914427EE8B8A7D7553118F13587303C6B7 +:10BF0000CD40AED2F74C5AA35C1E9D3A36787B1DCD +:10BF1000EEAFCEC440E4CBA8D857161DDAC4FE7CE1 +:10BF200006ED06289F1076CB1307AE2AD16DE7F6F3 +:10BF3000263B48F19F7AF65C3FC4B7F5FC6452A5F6 +:10BF4000FC93E1AFF9AF356C7C971DE1FB3D5BCC19 +:10BF5000978C24BC118CF31FF8BD3702707D2875B7 +:10BF60004EC357B09F7D119BBFD30AF68F9D7FBBF9 +:10BF7000ED67D77EAA563BBD142F3CCE48AE00BD20 +:10BF80001B33817E8FBCB66F18DDBFEB8C7F1BF13E +:10BF9000F0F9AB5E8679114F083BB6EED5CF47A1DD +:10BFA0001CFB7CFFE28188BF2F855D02FC3F057F83 +:10BFB000BBABF3514672CDDAA723709FC2524668DD +:10BFC000FC3C7104F27F11F2FF9119B42F9F90197C +:10BFD000DF877C3F00FF6B282F4668B01FA8FF104B +:10BFE000DAE77B8EC8FCDC0EF4049EFBED9101B514 +:10BFF000C067E33CA983D86F1CCC5BA7E37E3D12EE +:10C00000C4BC08B657CEC578DF38FC7EB20D2F0B06 +:10C010003322849785023FB70A3D12C24354DBBEE8 +:10C02000B0E95D5E177AF9FB917E6B36E38FB269FA +:10C030002187DFC7A22192F737095DB9FC17132FBB +:10C04000DD0DF02D7F59A1F7E38D9AA9A8562AA6F8 +:10C05000373F8BE5C478EB540C7FA2BED0812EE72E +:10C060004069805C9D34E7C8B3FC8EAB311CEDA009 +:10C07000BD072F198EE7D027DFF0D16F399CDC3355 +:10C08000E3113CA73CF94680C9528F768A83CFDC06 +:10C09000E549A9238271A02B360CBB5805DF78D95E +:10C0A000040EE7651BCAD698A0035F891857205F66 +:10C0B0001DCF4C5C1101FC9C3CFAD73C94DD4F1C1D +:10C0C000FB7D04F5FA5EAF315CA3927F7FD13DFE2C +:10C0D000D408E78771E2DC10F713DA471FB7E46C86 +:10C0E000C3FDF4F15EC5C803B9757384C7A92C7F7D +:10C0F000F03A8E3656B597DBCBD71B3CDE7A1DDA8D +:10C100003358DFEC71F86D558CFB47834DD615071E +:10C11000477FBBCA65AFD0F97B2EC65125FA0E8A80 +:10C120003B8EBA44F8894BCEE0FFDD1C11718912B9 +:10C130005682760EF003F99F9DAF2AB1EDA8DB542D +:10C14000D6EE83F53C22BE4B09F290F69365EFE400 +:10C150006AC6531A9E33087EDB23FCB5CE3D52924D +:10C16000F87F17A37B5D138FEBDB287FC034E8FBE0 +:10C17000DA5542BE4D54B9BF3BF15849CC44F8851D +:10C180009D5761241B30BFE9FA5D522C496A94C364 +:10C19000076AB52B6E83F02F6C03F8253C3F75C101 +:10C1A000DF72F479CC4958DAEABE1FDF733CF9310B +:10C1B000FC470FE701F745841D38800DB0DB81ACEB +:10C1C0003DFBB4F7E22DBBFA4371BFF5D7627CF8B3 +:10C1D00013C6FCB7F704FC4F087E596670789624A6 +:10C1E00095247EE766BEE00FB69EF38775EFA45AEE +:10C1F000C0BD742BA7BB1BBEAADD1EB27B01617440 +:10C20000FE51B5D5C95F8B04FC8B5CF02FC34BD3BB +:10C21000B6F92DFB7BBEE0DFDED6B3D8C3E9B7F8B5 +:10C2200055FE7B13FF5DEB73D3E5658B6F87B161C3 +:10C230000EBA4C3FFDF70ABAFC1D971D6BD9C1160B +:10C240001FB8FB4F13F6EFC52DDC5EDC7BE46013FB +:10C25000DABBE5FB150DCFF7F61E3915C1F397B123 +:10C26000FB79FEF7C9B6B1EBF03B168FB7975E8E40 +:10C2700079AFE54765DA07635F2E4F626A71F9CBE4 +:10C28000E5A1123AFFD273100F270F73BD79F27038 +:10C29000E92B78AE73B2BD721CAAE9BAC3E521D40A +:10C2A000EF8F33EEA74B2FFFF99738EFD843EA789B +:10C2B0008CD3AD8E2AB4DF2EBE77EE4EF4D3FE18AB +:10C2C000E17EF4F34796CF263A1C96357C7EE2B0A9 +:10C2D0004CED96FC48A13C4EA6DC96FB6D78FF59D0 +:10C2E0009B47E3EBF5D0FCD5FB07E5CCB7F95FF353 +:10C2F000049F9667E99B66A21D971F22BBF7E2FE8B +:10C300001ED27B1F15847E82F6CB60631B9DD37E7D +:10C31000F4B39B649CF7E41E89450180E7A3CFFE3C +:10C3200094BEEBF1E4513A579ABAF7289D23CDB366 +:10C33000FC39712E6AF1D342F4DBC0AFFCF84850EF +:10C34000E457347B912E4B8F5AF50E2FEAE7B8B0A5 +:10C350007B963DF02ED517A11D0FEB59F480447943 +:10C36000A8CFEE7F8ACEA396EDE6E7518BF66D9BC4 +:10C3700086ED16B3563A4F74CB8B852DCEFA0D82CF +:10C380000F6F38031F0EC8147C38940DA5EF664C50 +:10C39000E6DFDF684DCD1BB807E63FF5BA8FF8E161 +:10C3A00034FC487AEDB088D79C4AC906C26FB53BC9 +:10C3B00071F89417EDC2696D9F10DE66B61DA84432 +:10C3C0007C7C932596207CDF6C0B6928FF6676F0D9 +:10C3D0007D37A3CD47F72FBFC95A1BF97939973756 +:10C3E0000B051D170ABC9F7CC6C7CF5B7E2A91DD5B +:10C3F000B110046B0E88B425227ECBB63AE9021246 +:10C40000FD3BFC5CCE4776D337CA9CF89AC1B8FC9A +:10C4100098B14F22F9F10DA6D3EF407EA31D032959 +:10C42000305F7E887E2767C96EF7392EF7C797B9C8 +:10C43000F45B2C93EBDB7FF47706E22E7ACCECE412 +:10C44000F26986D0A3EDA9FA11183FB2F0E3A6472E +:10C45000BB7EFAF3DA5F0AFBD8AA5F0A1B05EDB0D0 +:10C46000568DE3FFD0913E9437B4688262A23DF0CE +:10C470006426B77B97FCFDF24B31C1F423F9E0CD84 +:10C48000BBE1FD87735B07235EC01FA8CA84F72F3B +:10C4900014CE5F3F06FAFF698F2786F28419DB0608 +:10C4A000A39DB426BA69269E2F55EFE6BFF379A265 +:10C4B0004231497EAA9DD370BE0FF74B1AC655ABC9 +:10C4C000F77DCAFD01E41328E36DD245C8276067F4 +:10C4D000AFC804791737B23C48BF6595129DEBCDC4 +:10C4E000AAFCC48B78057BFBBB9936FFF950690920 +:10C4F000F9CF87549DBE8BD89BBDBDEC4B6EDF59E9 +:10C50000CF97C1BE447C2E6B93C8AF4CDB777D25A3 +:10C51000B2EFF63FF55C36C985AC31A84E7F92D9B3 +:10C520006527515ECAF542CF30A991F6C3DE831F5D +:10C530005C89F0753EED61C52808A164E7823CFC8A +:10C540007590ECA213AFF1738A851A3FBF39312F72 +:10C55000D9988D76FD4312D911D70B7D85EF313EE9 +:10C56000793DD86B1794E3AF49D60BBFA5914AF735 +:10C57000BEAFDAF70AE54359F6063D2FEE2E2F96A9 +:10C580000ABE5D7A8638D2F0679E2A46BA3C99295F +:10C59000EC08C19700C73A949F270F291A9E1FEFF6 +:10C5A0003DF897FB0BD06E027BB818E5B3B02FF6C1 +:10C5B0001E0C907F70F268388978FC93E0BF8F443E +:10C5C0005CB7AE4221BCC8137889F3D177C2F67F3D +:10C5D000312001F2F691679E1A86F35B79058B771D +:10C5E00039F3D296B63AF3CE2CFC560BFCC2BA06FF +:10C5F000E3FD346B5D4FA81D91580FFB46920E1260 +:10C60000DD64C9E90F563FAD38BEEB03F05C8BF239 +:10C61000AC3DD3CA53EFCC43FD773853277EA86B8C +:10C62000E37496F7F312E6BF92C7393C347FB7F74D +:10C6300053CC25E4CF1585E83CB51DFC76FCEDE434 +:10C64000F6D703E48FDDFCEB4543ECBF4BC024EE93 +:10C65000B7567B3AF3C84F3CCABF3B34837D42F99F +:10C660001333DA3CB98029F67CF1CF553A77182597 +:10C67000B173601C13E7ED8BF1B5E7A8FF95992224 +:10C680003E3E81F7AF177CB5F7D73342E8A79DDC74 +:10C69000DF87F22DDF127EEFF1CCF87BB8CF2C7F55 +:10C6A000A337FBD1E6EF103EAA014EDC478FBFEE69 +:10C6B0004BCE94D03FFDE2B56F23BC8754CAABAEDE +:10C6C000DBEF33D16FAA7E3340DF236089C46894E7 +:10C6D0001B373FB370089D1B48F5448FCF9F39D45B +:10C6E00044FD9EF450846FE9FE57F348AF3E71CE8F +:10C6F00026B453C02EF906DA298FB779C84E297FA0 +:10C70000791CF1DBE387C7E594D0771B62211C77A6 +:10C71000E921358EFB7BE9A1712FCD44FBE2E529B0 +:10C7200064A7482F8FCB41B93356FCAE8F74A894C1 +:10C73000EAFF1776D3957D00800000001F8B08006C +:10C7400000000000000B8D566D885465147EDEFBE2 +:10C750003173D7999DBDFBE1A8ACD9DD55F723C74F +:10C76000E9EE9AEEFA5557ADD842735C332524278B +:10C770008D88D255834828F0AE9B609A24E18F8241 +:10C78000889B50F4C362AC4DF6C72AB3B8A6AD106F +:10C790001B16AE12310A5981DB6E4548124CE7BCBC +:10C7A000F78EB35F41B32C67DE8F73CE739EF3BCFD +:10C7B000EF3BF93C7D1E02EE94A9C06260A4AF6419 +:10C7C0009B9300046AABD10A2898276D3ED8B7B373 +:10C7D000FB7C0851B23DAAE3258AF305BF98A90165 +:10C7E000D3810AD392F13A33C2410BC539E5DB9DBF +:10C7F0003D5FC42DDAF7929E899B14A7F3A4EEAF98 +:10C800007FEA5BE098F4736D0598015CE2A959C07A +:10C8100080F09E03411CD0B125437E0357D3F756C9 +:10C82000B05D95AE677BDC14326F018F8BD512370C +:10C83000447B356602C3DD7A9B172DAE17EC51F6AB +:10C84000A37CB14A6C4B4DB17EC054E4FAE321A401 +:10C85000392FE044672D01BEE1AF54E213FD2FAE46 +:10C860003563C0BA60DF65A4CAB21412ADFA8D5C3C +:10C870000390A2BF7C2D50FFAE762367407EF2F47A +:10C88000BF09968EB9C046FABEAF02C834D8D3ED00 +:10C8900028CFBFF5BB9A2CE6DFB84E7742F74FC6DC +:10C8A0007577BD4D9F10579379E5B88662FF306B61 +:10C8B000437F4371DD314BAB6E2EA02F75A8CB1398 +:10C8C0009F50A3115105FC755137D51ADEE5CD4BAC +:10C8D0002D9C9CE7F6FE991BFA75E0ABFD54763D66 +:10C8E0007071BF21ED39E13C6652DD6B3538992915 +:10C8F000F87BA1D4EF4B67E395648EFBD577F5B356 +:10C90000F20780D1AB25A8659EFE2114C4E72E3323 +:10C91000C038C1BF13EDB28F07F0E4381D16FA39E5 +:10C920000CB4651293FBB923E8474743F83AF3D9AF +:10C93000A18E8698EF370FBD93621DE9BD9D2EE74E +:10C940006B0FF93A2DF877F4EC453AC178C300F152 +:10C9500032FC88F0C242E29E1396B8C3A8953C0D03 +:10C960007E504EEB9B864A7098D6FB1AAF8472E4D9 +:10C9700047C2FB0E71D2855F0E7665074326CDAFA9 +:10C9800037FC3EB35E4078EABA9F3D8860FEF566AC +:10C990009A278D3ED83C868F405FEB5BC7F7B71375 +:10C9A00015AE3C97A24ADA7A0C3E5A4D38363BC255 +:10C9B000F668FF0667FCFEF62D4DE789FE2974E256 +:10C9C000EB6CA25EDE33D3074D721819FCE3A98528 +:10C9D000146FA0F1E739CC4747A07FBBDEEAC9510D +:10C9E0003EFB92D9D4453EBB23B1A449FA7C9BF9C6 +:10C9F00026BFC6D2F451E9EFDD789E2E8FBBFE71C3 +:10CA0000D394EB03BA379BCF7DE1BCD933B0686FC9 +:10CA1000746CFFFCBE1D653D30F04425B0F4BFF5DD +:10CA2000CF84FBFABA9064FE07FABE4E86C6F4E9DC +:10CA3000D6CBE97ACEB7FBCCB9B8151DAB2B25D038 +:10CA40009526AD10BECE14315E67B7586709B6DFC4 +:10CA5000C797B31EBAD74C1756717DF7979763F3F4 +:10CA6000C7C41DEE55E57E68B9BA4DA563711E9425 +:10CA70003887337E3C6AAECBFAEA38DDB4E4B04F97 +:10CA8000BFABF078DEF68F594F4097DC5FD06789F7 +:10CA9000EE3AD5548F8E3D2EDB4C08D2DF3D1BF68F +:10CAA0003EA2F1089D4D50DD23D7CD0F5DA9CFD912 +:10CAB000601D9E0E74F46DC06B0B5D4EACC3A5C8BB +:10CAC000A87C1E5AA0612B8F356435B22BE0A97C5F +:10CAD0003E5AB46C9F48CA7957235DAE444ECE533C +:10CAE000291AFBAD82A5F1780DDC2E7A2CD0DBFD66 +:10CAF000B91AA154D9B8567E9374C657CB54FD2A9F +:10CB0000F2A1E1664177B4D90E931E1245DC4B8445 +:10CB10008FBBC581B18FF2DF09CEF5720C4A1C764E +:10CB2000C4AF77F46F782704E4D3B195F62DD7D04E +:10CB3000A6521D2B3518D3687CAA5F91E7F86CCEFE +:10CB4000F2F87EB32B03BF5FC9AFA658E732DA5FB6 +:10CB500056C1631CD2253FD929EB1D366B7C5D6223 +:10CB6000F4198EB3A6378CC334A518AECA3AFF3376 +:10CB700078F722C45B8CE22C3B26304438ECB97E3B +:10CB80007D85F8CB40F99A79BF5F178D3144F31159 +:10CB9000C3F7031E36991F918D2BF9C8FFE7712447 +:10CBA0000E893BB663F4B7D7B8CE3361F30441B214 +:10CBB0007B2F0C097AA784E380F9B48D68568D71B8 +:10CBC000C3B45B77EF057AA7C2E5DBF572C2232C0D +:10CBD00053F28934AC54293FC5EF9BFC6E28BCAF9F +:10CBE000D26FD32FD4A7CD81BEAE4D8B2551067CFD +:10CBF000E2B55BACE32D5586CD7C371B731681E225 +:10CC0000FE144DEBE5C4DB357172BE0CA2798B3995 +:10CC1000EE1B6A06CC2FFD3A90BADC67F8716E976E +:10CC2000F896CF1AEB3342D7B141788E90EE0D1AB9 +:10CC3000BBABFD3EBA3F96785D94E7553525457709 +:10CC40005BB10D8E87DAF4500B596DB563EDA1F32E +:10CC50001966FC9122FE8979B89E15857A94623D09 +:10CC600093F3B8FA7D359CC7EACA0959D702AEAB2F +:10CC700029ECDD93A5F9A715EF15C61181D32A710B +:10CC8000200BBECFCD80A7429D26F34FBA8343FC35 +:10CC90003714F92FD47B649A5FA78EA01E8BFAB04D +:10CCA00070721DFF029EEE0248C0090000000000E5 +:10CCB00000000000000000001F8B080000000000C2 +:10CCC000000B9BC2CFC0F0A31E81FF72A2F2D1F174 +:10CCD0004A0E54FE1A2EFCEA0961150604FB193BA4 +:10CCE00003C3572608DE0AC59140EC0AC5A2CC1042 +:10CCF000ACC382D0E3CBC6C01006C4F1409CC18651 +:10CD0000DFAE2E164C317B390686738A087EB62438 +:10CD100003C312201695A2CC5FA3786860494354E0 +:10CD2000FE7C2D547E9F0E303D20A959A0459AF9D6 +:10CD300062460C0CE2400C00564D6D566803000034 +:10CD400000000000000000001F8B08000000000031 +:10CD5000000BC57D0F7C14D5B5F09DD999D9D9CDDF +:10CD60006E761296B0094B988404A20DB80901039F +:10CD7000461D30D0587DED8A56A355BA0481A002D5 +:10CD80000BB592B6B63B90BF4020ABA2A588760308 +:10CD9000E2C33F3CA34FADFDAA75A968D1E7D7A672 +:10CDA000AD7DC53EEC0BA8885631DAAAF83EADEF52 +:10CDB0009E73EF6467870DE86BBFDF5B7F7273E77D +:10CDC000DEB9F7DC73CE3DE7DC73CFBDE3F6951239 +:10CDD000E97C423E831F4DBB65F284701621EDE174 +:10CDE0002E93D05F37FC338B902E488BE9FF29516F +:10CDF000223309F110F67385C5C3EE7C42562B3AF7 +:10CE00002163E9835021D6977C5112D3A186A40FC8 +:10CE1000A958D5FC6C52569E7CE6FA3CF94FA664A4 +:10CE2000E74DD60FF92E2145847C9B97D19F01F9C0 +:10CE3000469EB1C663A524A2907455A69D46C2F233 +:10CE4000BA2890CF04789A5D6EF5D3A6E64F2301F9 +:10CE5000423EF2B0D49C4B8BEA68FA274FAABD8CB5 +:10CE60008E5F887D89C1133F3B3A15D3B3206D1780 +:10CE700048F3802F071C643D213308D990884E7FEA +:10CE80004DCE3CF7484943ACC3B623BB016F3E22AD +:10CE9000C1783608D6F0060D579010351899BE9116 +:10CEA000E6665378A19DD54A7436A430FCA89F90BD +:10CEB0007D957734B7D07AEF4794881B9FEAACBF53 +:10CEC000CAC9E362D5502F4900BECD339E0BC57C45 +:10CED000D82FD120F51103E025E4FB04E8FB01E0A5 +:10CEE00055CFC0F71522623B997164E3EB39F883A3 +:10CEF00096B727F4868A4A427A65BDAF01F0F47F7F +:10CF00005D91DD582BDD0C78DB3CA348DC48C7D4B1 +:10CF10002E53FC5078BA13FA7489D6EF4C54617AC8 +:10CF20003E29C77636CF60F0EE9B31393044D3CE00 +:10CF3000B1DEE614C21F1932E9F8D60E3D7CCE46AA +:10CF40003D93570EFD04F3E7937CA4DB660FC33FCC +:10CF5000C5108E27C32783CD8B697D7F9D56CBDE81 +:10CF6000377CC5B43C8FB0F1925431F295A2B1BC7C +:10CF7000B78ED2C9E23FFA7FE3588910FABEAB8E72 +:10CF8000A4DC94FE7987965D4CA6C13C481A04FA4D +:10CF9000ABA678A1F535FADF6774287E6813E8E65A +:10CFA000232983D6572B58B9D59E62C723F013E99E +:10CFB0007DCF05ED399ECB1FBB2269DA0EF9BD0B83 +:10CFC000F94396A383E7033EEB768E33850C5DE44D +:10CFD0003A361FE5D8B4E98DD329FF1EEA3F677FB3 +:10CFE00055A63F93F8834761B06793B391CF5D57E0 +:10CFF000076239F8D44A3F4AA4CED92F235E443B76 +:10D000001E47ABDF99A0949E92C97795C54214152F +:10D010002469FE932151D476C9B19010A1F4DF7533 +:10D02000A1D144F3F294482842FB6F2FA08D9610B3 +:10D030007227599136299DE5F6642842D30DB2E353 +:10D04000F905117CDEEE61FCE3ECFF8F1473487F81 +:10D05000391922AE8C5C7073FABA43CF7D2C50FC28 +:10D060006E16A26D87813F0BF2913F69798F5488CC +:10D070006993520B95559473AAF59E443AA45A4C61 +:10D080001B95421857B2B905DFF7B1F9FA766CDB98 +:10D09000229AEFA9298A6CB4CD9B9F1101E1E9E2A4 +:10D0A000FCDE2B67C37D00CA29BF3F41644CBBFC3B +:10D0B0009C6FB5F6D025FE1CED703CBD48969BA636 +:10D0C0000FC6418840F9C22C5352BB4156186668BE +:10D0D000811F80CE968FA3D1CB2917DDBA2D0FFFEC +:10D0E00068367E2D877FC31AF20FAFFF3340CE58CC +:10D0F00084C32CB0C3A1AD0B2D007968D27E281C4F +:10D100006A88FE3D29AB3EE281A46939E019740BBF +:10D110006DAF3B78737211FD530A12338FF2B15425 +:10D12000D1F59E0B528DEA131FC8BBD8CF50DE69D4 +:10D13000244B0F49C44C0BD0AF3907C72D59F39975 +:10D140007C3B5B4F9C1F3B087274B35FD1D79781C8 +:10D150009E52D2C00FF01B9EC9F984B623D5750D1F +:10D160000AB45F7730DFCC9B06EDF53238C20EFC97 +:10D170009C66FE38E7DF30CCBF2F65E69F44A28176 +:10D1800034C01D0D8900A79FC3294514D3C5FA1DBE +:10D19000847E47E6E1D90B022067A4907298E125CE +:10D1A00049ECFD77C3FCA3839822443F053C758E70 +:10D1B000DB42408EB6CBF183C09F66A5C2E5F1602D +:10D1C000E892A999F79E03F94EE9B2038A00BFDB02 +:10D1D000C2E2E7E19F76C77CA743627AC40C227D56 +:10D1E000A411FDC5E6A12C30BA540A8C9F4992C9FE +:10D1F000957CDE8F027A7712D035858DE59134E605 +:10D20000DD6410F3AE70B46F12CEC7A11ED027EE4E +:10D210007A91F2DCC970F52554C4C36870F79DCBD0 +:10D22000F489CB1727D7DBF05724E473FBE26A0DB0 +:10D23000E8249831F219D08BEA4DA6672321D4EF68 +:10D240008936F22AD5579E5F5C48743ADF14185726 +:10D2500031F053C43080AF4375CC5E0246A47FB634 +:10D260008FD57682DE93C3EA227D1AA4DA253AF2BC +:10D27000DD3A6C57AE387309E343A6C7E530E77B68 +:10D280009D20FFC94113E9689B07E708008F9A3D7D +:10D290000FACF7492888769805EFC97688C9C76921 +:10D2A0008D2BA530FB65244F58DE64FA90B7AED4C1 +:10D2B00033B8947A2FF2A7D2281D1DB2E933ABDD23 +:10D2C00076C2F031A207B8DCC31F054DD622BB36AB +:10D2D00052BA7515CF0F2DA6CF9B0566CF908BB395 +:10D2E000C763BD4FC7DB0CE3953486076B9C5DC5F8 +:10D2F000930398F731BBD339CE2E6A8F48722E38FC +:10D3000052CC5E2921A931743CE493E9552037576A +:10D31000021D73B4F3EE28F0BFFBD49711FEF8E9B9 +:10D32000E18FE782FFDDA7A630F89F189B852F2BA2 +:10D330005DA94E6A90A6DBE9C5E69197B7DF172293 +:10D340004917B5D7BD0DA2097A7F427068DB223A32 +:10D350003F3611368E1782B104F4BB224AD6D31958 +:10D360004E56DE18D5C1C4DAC8C733CFE5F31CA1C9 +:10D3700069D2280FB450BEDA2D0859769E95FE88E2 +:10D38000CE73C0632F9D57907EF40A837BB4F9B5AA +:10D390003DA1CD027B6E247FADD494A2ED6F6FBD15 +:10D3A000F592F9147F9DC18A5A54CFAD02DAB91EA5 +:10D3B0002E177E68C9058E1F8AB71F02FC16FFFF55 +:10D3C00068C9E5C8FFF0936C78081A860176EC0806 +:10D3D0001EE8FBA0170BDA48844A10C0434AA0EDB0 +:10D3E000AED0281E683F2B1B07E7D0B9358207FA5D +:10D3F000F354D0FAB73C5F59BBD146B7570526174F +:10D400004975219FCF743EF9479F4F1B289EAA2B39 +:10D41000219F16A01EC8E36A1BFFB508B187018EC5 +:10D4200070059B3FE1F8B002E3396EE94312427B9D +:10D43000B563643E275B7722BF15D5005C4F09CCEE +:10D440000E273B84D1F8EC2968DFC967E10A232D58 +:10D45000D0F15E2DC5F641B94B1FD040E42BF12130 +:10D460004C3BF97A850E6310DA0D717A58FCEE099F +:10D47000E928BF7EC3F92354DFB55AA478F6564B8A +:10D48000A69B8E2334B4E86230BD954317BE49D8BD +:10D4900073B443C3319340BF1343E63AC0FB7429CE +:10D4A000F61BA0A767D68D40164A3F230D76F42DB4 +:10D4B000B24134906F0D3123EA033ACF248B6CFCD8 +:10D4C00075848FDBA5112365A3FF461783B3AF6176 +:10D4D000A7BACC07F5BC4887525267407B1380FC43 +:10D4E000147E09F840473E380CE3D7AB0671C9B249 +:10D4F000521B14003ECAFFB8DEB845D68A818F6E33 +:10D5000059A234A7183E5E02FE54458E0B9DFE07BD +:10D510007602CFDF2FC8D89F0AF800794822A8A743 +:10D52000E4DA785AA0725F8B9108A05105FC4CCBCD +:10D53000E0C755671258EF15C449C4A0E5AE50CAFC +:10D540009C4C103F1F207E48DC00DD29F94CD001A7 +:10D5500064BB14FFCFEFD3FADB0FB82226B1F1A3DF +:10D5600043BE8F6FA5F32E873CB6F486CB6770BEA3 +:10D5700088A07CA7F84C823C57B9DCBB48884A227B +:10D58000F071416BDACE57ED0A6945FED42FC37AAC +:10D590001B2AE7EB401FDA30DA091B1C7682B5CE76 +:10D5A000ED4AA4504F123D88F02AA108C22107631A +:10D5B000983AE172B5B9F4D7C6D8FAAD60F68E4B99 +:10D5C000E5EBD4E42D6C9DEC23DC8E8990CB40FF01 +:10D5D0005226063BF5019AC27AC992EF52D09BB50A +:10D5E000DE72B52959ED5BE989482400EDB784E680 +:10D5F000CCAEA0E54BDB56CFAEA0727759DB865997 +:10D6000012CD1FED599CCFE48EAEC07C3ABA6D4965 +:10D610003EC07B74C7127C7E74C724CC934F3EFB04 +:10D62000CC45F963E9C8FC8D63FD65DB04B467F79D +:10D63000BDB2AC14D6B3CBB675AF065363598F6C7D +:10D640001839E8B5563470FDD299186C78AD12FCD3 +:10D650000C04F1771E4CA2B1A88F999D2519B84EE4 +:10D660009828C6CE15E978DB86D6FDF27C8AEA8F4B +:10D67000FCA2EEA27878C6573E0EFA5BABC4A76850 +:10D68000363B676DA11243FEF66DCDD23BB344C667 +:10D69000CF4EB966CE25CD5EB0EFF3E9CA84B6DBD6 +:10D6A000E863F3EAFD2101FD0CED9CCE4EBCCA6D92 +:10D6B0009B107F23795F84E8D5193BD155C552ABC8 +:10D6C000FC32D18B74BB4274613A5D8C5D01FC0805 +:10D6D000D3BCAD10E649EF2CA60F7D689F21DE5C20 +:10D6E000009F8676BD59AAE8ED1457DD53ADF57F4E +:10D6F0009CD943529C807EB7E06C0CB3F969C13F62 +:10D700009A1EDB9488CE027DD79D68467DB6C93FC0 +:10D7100004BC47D64B119453EB817675E807EBDFD9 +:10D720005906F48A61BDF55AFCC01CF6BC76270187 +:10D73000BDD08AEDACD7E36AB9ED796F22CE9E1BDE +:10D740007175AEED797EDB161CE77A33DE5416CCAC +:10D750003CB7E05A4F5637CDC9F97C4D4FEEFA37FA +:10D76000F640FD7678AEDB9FB73595DB9EC3C20AE7 +:10D77000E6B38B736F77C58D6A8B8D3EEB7D9126FB +:10D78000B46F41E8DAEB55AD19A59EE1A8375A7B95 +:10D790006676BDC868EDD1D55956BDD1DA2362563B +:10D7A000BD3ADA5EF5C9F5BAEB6ECC7A6EA594EFA8 +:10D7B000EE156D76901BF86E0CFA439B400EBA4C3A +:10D7C000A27EB796B25535E9280F10F2AF22B35BAF +:10D7D000DA2CBE0E13A99E96BB2A88745EA16D7DBD +:10D7E000A45355518B7CAF663DD7A81D6D5F579EE6 +:10D7F000C4DF649B07F99BCE3FE1F3F36F7BC24428 +:10D80000FEEA49D4235F5AF3CE596FBFC8ED1C47D7 +:10D81000BF749CE4BB857C5D0C72F79007D7F774EE +:10D82000AE49F5856C9CE7D5DAC611A2E32B64E31B +:10D83000CC7AAE678FCF7ADEE9901BB256ABEAA8FE +:10D840001F983E580B7AB68490F7C4EBE780BF630D +:10D8500044BE1573F91662F26DB4F17726EA678358 +:10D860003F7263C2C0B43D54AB0D81BFC92791B4B0 +:10D870008FC90598CF543E9AA057D6962027124FAD +:10D88000306682FDE8AEA20A86B2BA126676873B9F +:10D890009C22CBAA99BFB0AD16ED4F26873F4920F9 +:10D8A000FF6EE2B689B76D3EEA11273C79A1467C4E +:10D8B000EE1CD77431FA17E037A9AD23B77CBB85CE +:10D8C0005449201F8837B20EE52F41BBEC7D4A0F2B +:10D8D00037D0C367BA73F921A4B60B906FADFE0AB7 +:10D8E000DB1373C08FD6F649BBBB14E6FD2177640A +:10D8F000BD0E7A62CD32A0EF9A573CC42D8C8E4F6C +:10D90000B9ED5B08BFABED1B59E37305238847975F +:10D9100046F5421DC216A9D4997E5FC6E43DB9B949 +:10D9200016DEBF89BD1FBB11F5AB13AEE9A231C630 +:10D9300095830FCDBDE4A017F51AD1D651F89E7985 +:10D94000E56CEC67CD61C6FF141F889FF7297EC088 +:10D950009E94387D2CF8BA134D48FF0D89D8EC0AF7 +:10D960003A1FF2385EDC15146E80AF9AC35DC1E0D9 +:10D97000EE4C44B15E6FA215DFCBAB36913F3CBE9F +:10D9800038F076A67E15AB9F571D853941BCCEF287 +:10D9900088551E335C34EF7396D7D17202E5830449 +:10D9A000EC576F0585CF364FA85EAF077CF823ADE7 +:10D9B00059CFA5D08D8847279EF61F9E12183A850D +:10D9C0003FAA27D186F2A00FF41AEDB8A72CD61CD7 +:10D9D00005BF24E83719E609D35F1DA09768BA058B +:10D9E000F4164DD7C064837587C4ECDF5EE85087BA +:10D9F0007F34A2D2FC662E679332E34BA54E4AEDEC +:10DA000014607E0CA0FFA65762CF7BEB75DC374914 +:10DA10007A78BD0682F52CBD237958BBBDD4AC0401 +:10DA2000FCF406F514749D2CA0EB0258A796A5559E +:10DA3000F4F747A8BEB2F1A9A6A49BA0BEF55CF37B +:10DA4000A6A32C2FD5E66A5F2B4C6B65415EAEDB3F +:10DA5000DA294F6BA6ED3DEB7952A1ED0533CF935B +:10DA6000DE41D65F1DEDAFECE4F69385832AB65F09 +:10DA7000C7F4B0B50E4B960FAAA6ED3DABFDCDD2C7 +:10DA8000A0BAE61472CC1F69CEB2EBF3AA289DB2FD +:10DA9000F4450AE913A86FCDAA276BF1ACFC33AFAC +:10DAA0004CC99297FB87269D925F8E02BFD8E4F304 +:10DAB000514F6C212920E4DF5CCFCEE908D3BC1C98 +:10DAC0002B15687E57E15BEB9ACE05BB99C987D6CB +:10DAD000B63928C796F62E56409E2F6BBB88E55365 +:10DAE00002CAD1A55C0EB498240CFAE50917B3FB61 +:10DAF0002CFD49753AEACF9660B67E69D1987E6969 +:10DB00000965EB97961DB2C30FA597A2DDDD7601DF +:10DB1000CA19ABDEB2DE6F3178A01FB0C3414EA38D +:10DB2000BC8D9536D3FAF7BB3C08C7D10D534A6379 +:10DB3000B89ED4EF6E03BFE9722FFAF99DF8B1FCDD +:10DB40007713418ECDC8E881A58EFD3367BA14F4F2 +:10DB500000F42BC510CE2FDADF7D2ED6DF524BFF1F +:10DB6000D0F1364FCDF47F24C870B1C3A532BD2E9D +:10DB7000517CE4F0038EE02F7663963CFFA278DBC5 +:10DB8000C5FBB99FC3F579DFB7CADFE078B7F91FE6 +:10DB9000CF00BCFC4FF9E95D97D7B2C750CE905685 +:10DBA0002FDA2D7F3F5F990C9F5F90CE13458DD369 +:10DBB000818E6BAA8D6E0E7A59EFFD96E3F31D50A0 +:10DBC00016634FA693134F475ABDA28BDAA1470E97 +:10DBD000CCC3F5F272C017ADB75DD117C23AA595A7 +:10DBE000E3EB28D57F1DB29D2E8B9FABA7FCD6D231 +:10DBF000535620D8FAA7F92E70212FDD51500B2053 +:10DC00002CEF61785EB66DD1EC0E1B3E28BE2BC0AA +:10DC10000E1E2BA9B9F15DC1F15D9D6D07B75431A1 +:10DC20003BB825E2C0772A37BE5B38DFD07176DC9F +:10DC30008AE3BC20E0F165F0B438C4D6EBDBF3F541 +:10DC40007CD01347A93EEBA072EB08B7D78F489161 +:10DC50002DB3605EF5BA6AECF3EA881AD97265AE44 +:10DC6000E7BEC8AF72D57F75C78CFC4539E4B49365 +:10DC70004E8B4337F2F9C1EC928FA85D02FEE21F92 +:10DC8000B8623512C839DFFD6F823FEA23FFEC5FCF +:10DC9000E9582D5B8F5BED84E2D2113B3E3C55345D +:10DCA0006F93FB6E3D3B2F115BFD321BBF420F5448 +:10DCB0004FCBC4FAA538FF10F2B66DBF4C1E2A58E0 +:10DCC0000CFEA939BA99063BFBFDA0A8BB73ECAFCB +:10DCD00064E4913E7D440FE162AB6AFA88BE01FFC5 +:10DCE00045B0FC947EE2F6C413B3EDFAC52551832A +:10DCF000C9EE1F68FBF96CE0E3FD4191D9BB3EAD75 +:10DD0000DF8DE35AEF88474865E55D6D5DC8EF56E6 +:10DD1000DECDFD5B844475DC37F0C40E82CA2ED89C +:10DD200012597F61B16D5F20BC95D54B313ECE1B42 +:10DD30007BF93D1B738C1F3DB460AFA7D7A19F51EA +:10DD4000D523585FAA20640CADAF509C0EB2F58568 +:10DD50000AF6A5A782F9BDDAC09907787F82C519AE +:10DD600078B8FCE8AE38A241BD8F2664BF47C0E852 +:10DD70009B69AF27927CDA4FFE542945000FE120C2 +:10DD8000F74B474FE99796427C3F31D433C852E670 +:10DD90009F9569B950867EE34EE04B921472EF274F +:10DDA000F17E46E703D6CFAD0963FA6B9519BE5FE6 +:10DDB0000B7C4F71BF35D184F12E45242E803DF868 +:10DDC000A910BB15FA939A2269E0BD8FFEA9E797C7 +:10DDD000E0F32E1CA7D708942EBF96493A1AA2F951 +:10DDE0003CFD6170A9FE7BE79B737DB4FF4230F67A +:10DDF000E97AE1EE8E8FD7C3BAA970925E2346A06E +:10DE0000BB0FE6BE08F5C7EBEFC1FB5DEA7B7321F4 +:10DE1000BEA0708AFE309497DEFA06E62DFBA2873C +:10DE2000F21DC0D99748CF06B8764BCCBFFCCF12B5 +:10DE30009BC7AA64A2BF51A5FC07FEC280348CF91F +:10DE400040DB73B35F83791D2269C093E55F78215E +:10DE5000187B5082FD85E8D07C5987F5181181EF39 +:10DE600037CAA96D1827E067FBAEF36801D88DEFBC +:10DE7000D7E93BEDEBACFF90985F3D993888FEBE4B +:10DE80004D09B6DFD2C5F75B362442C43E4F7CEE67 +:10DE900074E419583F9CADA09DA019945075A0E65C +:10DEA000B57EB09729CE58FC109FD7693EBED54AA3 +:10DEB000340D707EF4CA15C88FEF0F5D4A4879861D +:10DEC000CE27D1B56EA861643ED37A9BE48166A06B +:10DED000C71BD2D2B9418ACF4DC028B381FCDF9A8B +:10DEE0000BFE944D7E469F373B96237DA46A292DD9 +:10DEF000C33E66D5A1ABC0DFB991A47AC0FF656A05 +:10DF0000128B9B20D2DF60FFBF03E26D285FC85FEA +:10DF1000BA4A15683F8AC8FCDDE405163FD409A457 +:10DF2000281C9DFFA460A4C16E0F0774B6AE774B8A +:10DF30005CCF52FD0EF4EAE2F85042C43C0FE651C9 +:10DF400023C51745BD2A33FC74245AB3E2B21A859F +:10DF5000D87B802F39281E867D0E3976C374A0FFAA +:10DF6000EF24AECF4954C5F9C1E5AB2547A58B5584 +:10DF70009C6FB6F9F53B9C5F0F32BA38E7D707E4E0 +:10DF80001031205EE8D0970FC03EF0BD8903C897DE +:10DF9000E4C9092827FC9AED059BBC967690B42726 +:10DFA000DF169F50277D68D707CEF8032267C71F6B +:10DFB00058F10B4ADBF7CEB1FBC5C5508CC0BAC0D7 +:10DFC0008A3BF0CA7A967E53DA7E80F5BB126DE703 +:10DFD00000BF8EC0CBD7417E0E1FB999C11FE2F2A0 +:10DFE000CB1ADF33AF2C4BAFA0F8DF9E64B2797B46 +:10DFF0008CADF7FC0554F20A99792A25D9F846E840 +:10E00000EC18DF7899F9ADEE491CC3FEC30003E6B6 +:10E010008731EFA788FA3F10CFB3DF81473EEE8A02 +:10E02000E224AEFFA9DC667874B44F0E9C1AFFBBE5 +:10E03000299E583CC617A3438D9C3B0E8BB4D1DF61 +:10E040004C7043F0DF27B4746666FFDDC28345176A +:10E050002B4FD7758153F9C17E9C38319BADEBC9ED +:10E060003990FEF8E6352AF437F16692023D3031F8 +:10E07000CCF87B629278ABEA301F8131EA262BD74D +:10E0800079B99E34D4B23ACC63399D06582EF1F258 +:10E09000EEE0FA7D5374982FFC7972F8375F06B979 +:10E0A000D44A22205A651E2F1A0A0D3F3F05ECC4A0 +:10E0B00036E61F2110C940F17A37C76BF8E6A05841 +:10E0C00045D392509478983FC9606A85D5DBC1F1F9 +:10E0D000E136EF1100AD652152D804EDC5B2DBDBAE +:10E0E0006ED50B31B8494F76F936DEDF244D8269A3 +:10E0F0004ACA4386067E7252CFFC3256BD246F67F1 +:10E100005228DA5466F31359E55B78B927148DE287 +:10E11000FB4956EE093E6A94D1B43FB1ED1CE0C70D +:10E120008E44CF396C9EB0F736F1F72A42C480781E +:10E13000941F2792586ECD2BAB9E25C7A50EE68760 +:10E140009C7C731CE34C2CFA7672F965A5C0F71021 +:10E150008A5B598CB8A3E323682FC0BCBC993E9757 +:10E160007A29BF4ECBC1EF84E54BE98FC7C10AB016 +:10E170005EB1F8CBF21FEC3F7C7616BF9136CA5FDA +:10E18000563BA04FE294CFEC7163ADEA3959E531CB +:10E190002DBBDC0865E7EBF5ECFAD555D9E5159113 +:10E1A000AC720B8EDE4433FAEB3627DA6635D27466 +:10E1B0001BF7FF6E1EAB97C0BA60E758B62FF4A3EB +:10E1C000441CFD7B7771BF7007F70F6EE47EBF3E86 +:10E1D000EE27EC01FF1FC895B6F659104FB93D5117 +:10E1E0003FAB91E6F7723C93866C794EE5FC5E1985 +:10E1F000EC87BAA8E942FE60F27DB327DE0CEBB0F3 +:10E20000F1B14141B4E1ED6999E9FD305FDF50833F +:10E2100052B0C7FD3DCDFBB1E421AD1884FE327A8A +:10E220002CB54E617AAC06FAFBB9CCE327746AA12F +:10E23000D8E276F243DA3AF8BB51309E06F8368FD0 +:10E240008DA3DF4FD2A206F8B903868EEBBC30B5A2 +:10E250009B619CDEAA81B40871AB15ECB9D640F184 +:10E26000615B876C2E48A3BFB37B0941FF9647CF04 +:10E27000F64F16C37A9CB633DBB5E05732857F0282 +:10E28000F787B7FB9716B3FD67B62FD722C43E8139 +:10E2900072F72137EA4B7798C5435C20457F0DCF55 +:10E2A000C77CB507F7017E0D736606C6CBA19D50EE +:10E2B00078D1D52AC643713D4BAECEA683853F2B80 +:10E2C0006E84D26548B6ED835B74F9B56CADCB63F3 +:10E2D000C5C0E73709B1A3508F548554FBFE91E2C6 +:10E2E0008B1AA002ADFAD638CE520C84D382AF5C22 +:10E2F00031FE0CEF8FB44B68BB7E8843304D91C22A +:10E300003D01E0A5F2EFFF4163334E865BBED18055 +:10E310009DAB93C7D79C3BAEC8191766EDA3AF065C +:10E32000B868FFC765C6EF8563E2A11A1BDF4D54CD +:10E33000185F75CBD63E295F07F2780AFCC17A11C7 +:10E34000F2747E152B2CAE9662C5CC3B0BEC746A36 +:10E35000D8801CEC5652BBA95C191763F6E7F64E41 +:10E3600005ED5AB9B56831C43BD0399B867D6FB98C +:10E37000A36BB580F11171A49F0A127552C63FECD0 +:10E3800083F83E9AE693614C35A2E13AE1DD4543DC +:10E390003701117EE48E952AB4FF1BD4D8440805BA +:10E3A000B9E92B837F12E8F35285E1FD5CC928515E +:10E3B000669CB2FE4278EE23C644A8378E18BA8215 +:10E3C000EBDFEC78566B9F9DFE5EF4DBE84FEE11C1 +:10E3D0009DF3FC4C685FE6F18A237115BE60CEF8B0 +:10E3E00031E73A89FE5EF3CD3C55FB3A5B87707EA0 +:10E3F000B7DAFF61DEB47CB0CB9EE97161DAD53665 +:10E4000009D33F89644B3DEC0FBEE022B9FC865630 +:10E410003A047600E5D54685D94D17F17E16499A1E +:10E4200002EBEE45E6C7B3EDFEE24526F3FB2C9288 +:10E43000187D17B55D718F3DDED25A073BDFCBF8F3 +:10E44000A7862600FF3BCF4D38CF55AC75259B04E2 +:10E450003ACE8FC464149032327ED53058AB8CBF24 +:10E460003F473B3DFFA0760E007F9DAE9DD39D0FA5 +:10E47000719E0BD95041DB03FE57A3D88A2065C794 +:10E48000BD58F1340AB797DB432CFE85544570BE66 +:10E4900029F46F584FBB9202D3173CFE45AD10B321 +:10E4A000E2929D712FA4D914ECF1BC561C0C3A3A9F +:10E4B00066DAE51C61E71B3466875BE73CD037888A +:10E4C000E777BE97759E42F231BB7743456D561C88 +:10E4D000B24458DC38848B313F54F67BA3CF0F47CE +:10E4E0007F9765C3FDB9DFF349FA519BBD30FA7BD5 +:10E4F00012396AF35FED047982FEDDCF302E1D897B +:10E500008DE34E8F473B28C1E2AB3F90D2DF003C0A +:10E510007D30AC10387FF1A44CF66B407741D06170 +:10E52000BD6A68977C0DCA8D975C41B18C2397E6D4 +:10E530009F7CAF09FD49F72A32DF4F1B7441BBC6F0 +:10E540005FB54683E2AFE107B45D90ABEF2B02C845 +:10E55000D5397F4D2F86FCB9C3CD32C8D55F3EF883 +:10E560000CF67BDDF07C09F20FF376DEB9FFE19962 +:10E5700084B6F3E45E3F49A31D9152605D73DDA351 +:10E580002EB42BAF7FC88FF3F7BA4756ECBA98B6C4 +:10E590002BFCC48FF0343CB2EC5EE64F6BC7715F6E +:10E5A000F7F8A5813E80F3F72EA252FE7B721DF391 +:10E5B0008BAD70834D43C8F07BCA2EFBBE95858F13 +:10E5C00091F5B256B35F03F8F694D5B86CF4BA4E31 +:10E5D00022DF047BC3A0E9821CEB943F7079F4F640 +:10E5E0007B0AC6650B7BF62DC4710E5C81E316E8D1 +:10E5F0004C799DE2E7453E5E5A0FC763DE27A42AA9 +:10E6000069F9DBF7096C7C0353FB3D65D07FBFD212 +:10E61000828B50B65F42E1FF26D85F8D7B6A3A4A13 +:10E62000EA60BFB8AC0C42A92E78682FCA4F3807F1 +:10E6300024507AAF246CDEADDAE34AC37A66E5A3F0 +:10E640002B30AE91E6717D73FD434F3D6EFAE17D57 +:10E6500057D67C5B39B009D77DD7FFAB3B92A6ED8F +:10E66000BFF5922BE281769E90B3FCB76F0DEECE94 +:10E6700007BA9C7F22DBAF0BFD9E28C47E16298142 +:10E6800093DFA398C7F8EC55031BB09F55C4E6F77A +:10E69000A5E37D0BFE283E799DF937257B9D798387 +:10E6A0002B1A4803BDF78CC9A9A746CE19703D7532 +:10E6B000FDDE0FEE3669BF6F3FF2E7BB61DC37FC72 +:10E6C000ED2F777F0FD6373FF768A06756DDFFFA4B +:10E6D000DDDFA5E37DE709B708FC72DDFD6FFEE92C +:10E6E0007B34FFE14FA71482DD187233FBF6F8C3C9 +:10E6F0001F17E9B49D1B9F9A370EC67FE363178CE3 +:10E7000023A7D8773C4EF92AE5B6CFD314B6A33F5A +:10E710002180F2A68CC95307DD9E79F4995280EFCF +:10E720009D836E8C0B58A5B3388095032B30FE1259 +:10E73000F2B0FE59F960379EB33A19CFE67831C48A +:10E74000E63B84E2AE7CF4D2AF9D5B07A98C719C62 +:10E75000ABC87017F8019DEF8DD0EF254ABFB34EBF +:10E760002E5F4518DE573DB881F5EBA0DF3BF0C7C3 +:10E77000AC93E937D39D4DBF0FEFBB329086C247B4 +:10E78000C7E4F4C75AF45BF1D8D74F792EE5B863E4 +:10E79000DE8E86DF56EE3797DCC67C37CCCF47F26D +:10E7A0004C38DA70FC6577EA625A76BCF32FA5B074 +:10E7B000A83C260F2F84F937FC945B83FDF1454F6D +:10E7C000FD41017976FCB1DF283AEA3FE213A81C4B +:10E7D0003F4E467E8320D731DE1EF0738F3F0D7E85 +:10E7E000819537B7229D56A62E69D2F3F139FA0BDF +:10E7F00056A618DFAF4CEDBB4CC841B7EFBB0B9929 +:10E80000DC4E8DE5F65B868E423DD0EFF07CE0B7C6 +:10E81000D1E8678D5B83719F6DA3A7299F723E1E10 +:10E82000EF774B0294F3737B96BDBD2A25FC81E400 +:10E8300098A7D6BEC5173D37B4D63D8ABF888FF797 +:10E8400074F3F8F4E3F962F85AE6D6B15D27DED640 +:10E8500075BA510EFFA9C68D71498765FD876BE9B1 +:10E860007C1C7E5E261067B1B0F60D59CFE167FEC5 +:10E870004FCA8FBA8D1F636DEF758EA3EFC56E669D +:10E880007AC4B9BF13BBD945741B7EDEA50B2CD04F +:10E8900017ABEEF6A4C03E75FDFCE585200756FDDE +:10E8A000DC8F7260A57BF85EDC97FCB19BEC663C6C +:10E8B0008776C532EED77BE6B1B558FF382D87FA9B +:10E8C000EFFE3471F43B741CCBB7B1CAEF3E129823 +:10E8D00046E8BCBE9EFE0DFBC4CB9EFEDE57814FBC +:10E8E000210FFB9A47C7C61F87F68FDE35A106FAB0 +:10E8F0007FE6B18FB0BFE30FE511D0AFC79F7EE3D6 +:10E900003CC0E79F1FFFC934907FCBB6C9BADDEF8B +:10E91000B2DC7EEED9A65FAF1FD88CE7BFAE8772A0 +:10E92000565FF88CCF19B0A7A07FB04FAE7F2260A2 +:10E9300078A665D5C37656B9876F8AA07E334BC457 +:10E940007AA46F09D0F9FA3DD9FD3FE966FA7795C7 +:10E9500032BC94D54F96307E18C4F79EE772DC2AFD +:10E9600077BE6FD5FFA5BB3CAB9EF5FE4A3789E766 +:10E970008A3B7C89B77BFD9E4FA764B7C7F8F6E456 +:10E980007ED8F3E35EB6FE5CF1B81FE9BDE2696ACA +:10E99000DF4C83FC2F4B01BF2B9E5E8BF459E14E65 +:10E9A0002F04FFC6F0C36E0276CBDB0F3F8FE56FFF +:10E9B000CBE9D242A8F7A4E730CC5B275C2B06DC7E +:10E9C000FCF06776BFB05FC9FC7869DC3F72F17D0F +:10E9D0002EBA928DECE671672C4EB218D7C5CEF5E3 +:10E9E00081572D23B9CE8B77C2BE03F8FB549368B1 +:10E9F00076FF3E617193FFE5E00B458E69B05E5393 +:10EA0000041205BCCA52AC07FC9272285843212557 +:10EA10005DA105E8D7E9ADD670FEA82AA3AF9BB6E5 +:10EA20008FF6ECFEAD18FFAF86A5F7B3F6975FF350 +:10EA3000619C1EA9B03D2F4717373EF755D3E736E7 +:10EA40007A28C1D6ACF3D1CE7DEC9F090C1FA6DF8E +:10EA5000CDCE8512D305F3EECACC0608FAB75FB661 +:10EA6000CE674A1DACBCC02AEE60E57C9EAE6A61F2 +:10EA7000F3D049AF2B9FECC6F39A573E598C7E8753 +:10EA80002B7D535E07F9FB331E8F6616B8911E6708 +:10EA90003D19BDF49F68FE9AD64A3C7F543D10BD97 +:10EAA000682ACD5FDD3A09FD5C5F52193F7EA35FA6 +:10EAB00034654A2F94A100FF770484FF9BB0D0A057 +:10EAC0002F2E22BAC2164D29ACBF980CF8597E6081 +:10EAD0002CC499DBDE77F9E0FDD502EE635DF5FB32 +:10EAE00097E6012EFFF8D2914E48BFF92251F26805 +:10EAF000BF8B1ED5BB981B82B7F7246D4FCCB49744 +:10EB0000C123F3B7104945BC64F0A422DE5E1ED9D0 +:10EB1000A730F15CA50DCFB8AEB4F03C82B740F39E +:10EB200057480EFE1F29F74D7E9D4CCBC0E5C4F320 +:10EB3000CB241262EBA35ED61F3F37FF177844ED5C +:10EB4000868379FF2283FFE8650A3FC47BBC9C3F34 +:10EB5000793FBE27FB7A408F7F83A46578FF1A3206 +:10EB60002403FE9CF85D4C0C05CA979074172CEE9C +:10EB70007EE48E5DA9523856BA62138BA0DFF02076 +:10EB8000C635911773DB4319FBC6E4F38EA7AA4A77 +:10EB9000D4228C2B41785B86DE4B005C2DB47BD07D +:10EBA0002B1E62E96B76DEA3E5D09B9FDACBC948CA +:10EBB00039F3CF8FB4A3F6E2FEBAAD5E96BCC67A47 +:10EBC00042AE7668DE163771729EC1E17CDEA2E647 +:10EBD000E3B9921C7011B308F067FDD8FBAF0903CD +:10EBE00067C2F9FB1E756E630F95CB0F140E96A8C6 +:10EBF00034BF519DDF01F17C7BE97209F66F69BE7C +:10EC0000D16C80BCB110D66D8B25CACAB6FDD75B5E +:10EC100054E667BE45657E4E5A6E42F966C8CFC05F +:10EC2000F82A12A679B86B214CE9FEEA83E5BF3ACF +:10EC3000531F9D3E2DBD9FB9F51C721E2EB008CEF0 +:10EC400064EB7AF44B3E1731DDAE8C1FF88BFA1370 +:10EC50000B4904D32089626AC523844812D3123237 +:10EC60008069980C625A4A8631D58926323E67F30C +:10EC7000A09C44305F490C4CF796513D10C4F3679B +:10EC8000919D39E4FEB86BD8BD117FA57A017C8CCB +:10EC900069B53CA71E70A9173574D8CF3FDDA7E230 +:10ECA0007A78EF3A1DE9603D4F73399556991F7791 +:10ECB000EFBAC8C118950F47EE5323E08F7FD54FA9 +:10ECC0009402DAEFAB9BFF50BEC897A9F740213BF7 +:10ECD000C775E2F04FCE84730F5B55639F8A70A4B3 +:10ECE000913F2D7E59ACFA98DFB9577EDBAE07BE57 +:10ECF000A9469F87F977E05FBC68E7ADB945403B1F +:10ED00008FE802CEA76B399D1E281C780BE29DCDA3 +:10ED10002D6E1DE4E6B5BDEEC378BE3939CFB0B770 +:10ED2000F732E72392FC21EEB35E7B1A3FCFB51496 +:10ED30008DC067CE7608995000F631FA1C6CF555F7 +:10ED4000C2CED9518262BC413E5FCFB4EEFC3804E2 +:10ED5000715C6F73BDD8BA85C4408F1E13197EFADB +:10ED6000F879C83754E6F7B6EABDCDE11D93BA127B +:10ED7000FDF4AB95D8DB800FCAA759FE79F5620385 +:10ED8000CB8F2949BCF7A4EF4A76DFC0D486CBAF3E +:10ED900007BD34B5F926B44F6E175221BCBFE13E12 +:10EDA00037DA0F73CE6C7E0FF7639A151DF03AB504 +:10EDB000593140DE7AC1A941FB997C711C4E6891A2 +:10EDC000B7CE4D9580DFB015E28CD0DF13F360BC79 +:10EDD000D013EC3CFD75DC7F78C79E0B02A75A6709 +:10EDE00003906656FC1635ACB2E44EA1235FE2A850 +:10EDF0005F9E553E1EC284E87C1FEF23693F4DF79E +:10EE0000AE37E700DFF7B59008AC0B278062A2F4BD +:10EE10001B4FE505DCA301EE362F4DC334AF166260 +:10EE20003971F1F2004D7789034D40D4523E7E4D49 +:10EE30001ABEB0B30CE66B8F10F7D9C73FACA291E6 +:10EE4000C2C75FC461A2ED1068B7AFB95683F29430 +:10EE500042D6003C779CCBE851DDFCE142A447C39D +:10EE6000FCE590F6CB546F82FFA69FE8EB01FF7B99 +:10EE7000A62CC1E78AD602CFADF7AA9ABBA240BFA3 +:10EE8000A90D45182F77C15001B6FB16D00DCBEF59 +:10EE90005800E56E92CA877316A45924A0FFF74E56 +:10EEA00088FF7202B4AF93085D0982CB8E780A3175 +:10EEB00035FD85B0CD4952102F33351C45BD5C2C36 +:10EEC000B1E7741C868CE5E9729847530F2D7F07D4 +:10EED000FBF558F6646CC36CDAEE03F5228173C25D +:10EEE000CFBEE2467BE1ADB20ABCA7E681C2C81F35 +:10EEF000CF077A7DB2AB14F6ED765EA510F0436EC7 +:10EF00000727157DFF8E4FE321F08F558495349CA4 +:10EF100063DD3BC1749702DFFEC685F204E8A1D62B +:10EF2000229D483E4D77EE3CFBAA5FD0E7B7258691 +:10EF30001A3A709D19295E608B2FBE4D8E5C097147 +:10EF4000425FDBF0506390CEB7DB789CD00F3C2F54 +:10EF500074C0398FBEC7A84CA7765C9F157757350C +:10EF6000ACDAEFA368F60859EBBD3E7EDF0BA918BB +:10EF7000E6F136C32AF4F7EC2B6B43B00FDDD75024 +:10EF80005B0EEBE1EECDADC540E73B3E1D0E81BC17 +:10EF9000BC8D8F6F2A9D9E7329DC150D747C146FB8 +:10EFA000B72B8322C805F37182F36EEAE5FFD50C17 +:10EFB000F2C1DDF6BB0688EF69F31470FFEC30DEBA +:10EFC00093713B9C7FF565E0706B6C3F76AD87F984 +:10EFD00023D778987C8873B8E95CCC920770FEDF01 +:10EFE00083FB075103F8777DDE57D1EFDFE6E1FBC6 +:10EFF00084EA30C6EFE5786FAD87B6A75E7695D127 +:10F000004932EFD1F1E3B9DFBE7367E2B89F7DE526 +:10F01000A310F831FB36EF2985F15BE37EEBD35883 +:10F0200031E0A1A299D1D51AC75489A4E1BE1BE24F +:10F030008B94C37EF3160F936B5639A567F9D76D82 +:10F04000F4D8C2C779BB979757B1F732E5FCFD7C7E +:10F050007E4EB8C259CEF0F3EC2B572CDF0DF3E8FF +:10F060003135022E843B36B78500DE6E80D3978122 +:10F0700013F4138CEB4DEB5C3A0429533E0AABA41A +:10F0800043ADCD25C7989F97D4B338454B9E8C6A26 +:10F090000786A822B7E1D9BABFE385606C37E0DB09 +:10F0A000DD3CA8801B49AF189A0FE93CD7C518EF83 +:10F0B000E0E6FBF4CE768F25E84A85AEDF6E4F5052 +:10F0C00000315E4FC3FC6D8910A6A9848ECF9FE2EC +:10F0D00078F28A4CDF6C74DC13F628C793554F86A0 +:10F0E0001D8849103FC7F68DA5AA2EF4074815D6EE +:10F0F000FD2F23FBDB4F01DC24963BBE8C16087CE6 +:10F10000BF7D1FF061D1656C5FB9A899EDB76FE164 +:10F1100074B7FC57163CCF73389EE770FD073879FB +:10F12000A11F7EBF883BCCEF19B0EE1BE1E7194E63 +:10F1300081F7212137DE5F02F857240FCF2FD62128 +:10F140005E96C54F5AF1927F6D60F76D8DA6C72C04 +:10F15000BC5B74D8908861FEB6442BA681CB18FEA8 +:10F16000528938E65B84E861E82FD070EAF11FE548 +:10F17000F3F9CF1C0F9F779C777832FBEA18171CA6 +:10F1800064F785DC71E5E5A1C5F4F9871E7E5F486B +:10F190005CC819B740E9F921C067EDEFC37E23CC05 +:10F1A000F7FF50A327501E90E4234B840C3CA75B31 +:10F1B000F71C81B85C3AEED7200EB7F2F4FB966BE1 +:10F1C0006FBB418175DBA742CCEDA5EF7F74EB5798 +:10F1D0004C70072DEEADC17D3E6A37AA5EB0F303D9 +:10F1E000FA8720E78939751EC4DFB6B8F5C7217FD5 +:10F1F000B84E9D07F1B62DE3F49B60BD71C946DFA3 +:10F200003C88176D99C8F4C0928D0D9DA0077EE5CE +:10F21000310ABCB84F2C17C07E9DD37E3B793CD9B8 +:10F22000FB75265C00C2F8CAB4E391F253A9F7EF6C +:10F23000E2278B8F543E8F35623F3741E7D199806B +:10F24000178BAF4EC7476779191FD5F0F442AFC689 +:10F25000F50BE3230F97074E38667919DF6DE072DF +:10F2600082CAB51EBBFCB3E461918BC4412EEDBBD9 +:10F27000EAFEABE05E38F79EC9E530BEA02BF5474D +:10F28000B027C9034AED6E1B7FDDFFF1AE92053E4C +:10F290009043A992DD507E3F2DD7215E391E82FD1D +:10F2A000B9EAF0870BE17EA2EA0A92AAC4345D5E55 +:10F2B00046C719E4706EE5F5A6868B16839FFEEFB0 +:10F2C000A5DF8F3DD14B191F3039F50F68EF1AA01C +:10F2D0000FC5AFC0D6577F5F7B14CFA84FC09E54D9 +:10F2E000B81D04570E9148E4CC7F04BCFF5BEF07C8 +:10F2F00048CC84BB5E02107F45E9E8EE5D4760BE06 +:10F3000050FEEE02FC79B6F69BA0FF56350CE07A73 +:10F31000C6E26B6522E337ABDDBBBD6C7D7937E7B9 +:10F320006FF8E9743E4EC63F58BE97E6A7C01F541B +:10F33000AE4CE1E74CAA4812D7CF6792014CABC95B +:10F3400020A6D3C830A611A2B920AD2511178F076A +:10F350009A09E90D6AECC7A0927EE48EDD097CF380 +:10F36000CE84D83F43BCC6FABC95B3611EA6BC563A +:10F37000FC553A6B5D4BB8DFFF74EBDC71C4B8C76A +:10F380009B233E087EA39DA389D8E2BFAD73345F63 +:10F39000E03CC4A3D0DF49E721CED2DF63E71B56B0 +:10F3A000A07CB5CE336C1E7B0DCAD7C2B309FA6BF5 +:10F3B000FE7DE39A67419E4A17474D84E1A5DCF143 +:10F3C00070562A8F63F1651D05976B183FA6B2FD35 +:10F3D0002B89FB93AC7ABFF3EAEC7E32479CD93F92 +:10F3E000BA9F93EF378BFE1EE76FC67E2966A96131 +:10F3F000C50D1E477CF1F8384963F27734B8D6E77B +:10F400002DACB79F437215CC6CDA478726E65D1D9D +:10F41000B1EFC359E31DA9E763707DD1783CAABF62 +:10F42000FF1DE077C6E539F582959EE0F3E75EAF14 +:10F43000F11778CF16C7F6118C33471CDB09784ECD +:10F44000F9F46386A76C3E3DA60C5EB98CCAF5D76D +:10F450000BBCB87EDBF7E26F8BE1BE08A5C02B6268 +:10F46000BC07F7B778B99FA0A384F9A736A55C18A5 +:10F4700027BC6970AEBE2E08F1ED0A72DFEEAAB9A4 +:10F480007953C13EE871B1F3EADC8FA214EFC7F102 +:10F49000DDEA7721FC9B4EB4CF84F7CC7A82EBDD9A +:10F4A000B9F586BE0ED6916710B4F75BC79CD896A7 +:10F4B00047F377BEBC0C9D7A0D7EE65FB9B35FE182 +:10F4C000F7BB1284E3E88CE8EE8D6599FCB2E0822C +:10F4D000DD306F6A21B099D6FFF6864918EF06F73E +:10F4E0003330F7AAE962FB55569A76B1FD2E96772E +:10F4F000E23BC0F74D9CCF3FF5337D1B38F7B2039D +:10F5000017D0F697B4E25D1630CFF715D37CB281F1 +:10F51000EA489A0FF4B0B89AA4346CC2D224D960E5 +:10F5200050CAD3E7E121B81384CCCA93B19DFC9EA5 +:10F530005D02AC6FBCAD2C6EFB24FD9EC7C69F94D4 +:10F54000864C17B64322266D3F9FB603FE9CD3BD63 +:10F550005F93C7ECC8243FE7B86CEB228C9B59B68D +:10F560006D9C00F8B5EA5D98C7C6B5DB10F9BD170C +:10F57000516CFFC8483EAE403FFE60EC6EB827D2EB +:10F580001F52902F7C3B040FF8157C2926FC020D9E +:10F5900031F46775D272F0632E23B152905F03D2BB +:10F5A000C0CB4B015F147E702107B60A881FA9B03B +:10F5B000F5EEEF001FCE4ACE023C7EBBFF53720633 +:10F5C000EDE7051F3BB719D04EE07D40813A76BE8E +:10F5D0002ABF21F73807FCD97EC27C2E67FD5B77F6 +:10F5E000227E4AEA59FCFC9DF2407191EDFD0F7CB0 +:10F5F0008C2F2DFE72B65B9CC7D6B55DC5F7221F5A +:10F600007B253A3EC05F582170CF86B8E33778EF4C +:10F6100072A04E8C7C19647F247E10E8D45BCFB737 +:10F620007FC85033C6412F57302EEF18E757B381AC +:10F63000DD83EAECEF591F1BC75B756213C0D3B7BC +:10F64000FCB962E0971DFEE150B01ACA193C7D7EFC +:10F650001FBB9FF2FC7BBF3A89F6E77A607191A0ED +:10F66000DBDB61E3AAA0F61B9C77DB94F7F3CE0EFD +:10F67000CA9B15E050A3F6F5539B9FED84F3577793 +:10F68000F5BB387D758C3BFA456AD27808513D7AD6 +:10F6900003F32F1E8B59FEB334FA0FEF9C136371E3 +:10F6A000A4CB458CEFD95EF75B15CE696CAF10111A +:10F6B000DFFDA9F67CE0877E23580BF9C981059B05 +:10F6C000F2C6C2BD7E736F9D0CFC9BAC1070BED0A9 +:10F6D000BFA599781A08DFDBC2EF7BD0E69314C48C +:10F6E000CB153428686F1444D8B9914D275C6CFD54 +:10F6F00051CFF6B7B4E4C1EF0191B506B6CED5C28D +:10F70000777C8B119DE9DF00170D1ADFB7D11A95B1 +:10F71000AC78005AEE6BC57B7CD97D7A161C814192 +:10F7200031BD14EA87BC8717E7B37A45B548DFF4E3 +:10F730004CFABC20747929D827816AF1F0E2691962 +:10F740007FF05D028B7F3567293B013EFADC403A52 +:10F75000CF66795ADEFC08F0F181E128C229454BD9 +:10F76000C13F15A83F7A35C017D8FA071C4F00F6DD +:10F77000912035B2E12DCA371EC9E3768461E3EFEB +:10F78000FC3A769F21EECBD0FE5F5FC4EECBC8E79C +:10F79000E7E1EE1238BF2D217C7F95D6B29FBF02E4 +:10F7A000508AF87D7E22FADD1E8441FBF93ED5DBCE +:10F7B000032E7C7F5BB38EFB12C714D6DEEB17B231 +:10F7C0007EFC0D5DABA19EBFDEB6EF44FFFF751E54 +:10F7D000B3F3EE1232EB5CE8A718FA29CFE4F17C20 +:10F7E0000DEDF7E1FD851755433FD716E23E6B0758 +:10F7F000C72BFE287DF0F0399523059AD738830E64 +:10F800006E079F270FF37A5B0E68BF80389B39FF26 +:10F810007648053FD72E5F88DD135EFF3E9E93ED51 +:10F82000D318DC2571C65F25A16115FC7B4B7A04DA +:10F830006D27DF7F83FD309DC343F8BDACE11E2DF6 +:10F8400005F356EF110C8863853D7F71260FF9840F +:10F850007D9FB8B91A909DDFF0BE80F80B713AB465 +:10F8600032FCF4E943705731B9B347C03850ABDDCF +:10F87000927ADA2EE58B3B291CA0775FDF2A929DD6 +:10F880006599F1A2FD49F1D47283887C15AE27FDFC +:10F89000700069719C601CC7EEF0C0F3F0DED1DB34 +:10F8A000DDE887060606B84AF97B8BEB295CB45E77 +:10F8B0009F31DC0376E5EE1BD83DB8A5ADECF9E24F +:10F8C000AD3F590B7EE2DD2A8367592BC34BE936E6 +:10F8D000F67C191FC7927A3A0E80AB91D197A2D6C7 +:10F8E000FC4C84FE197F1F5D4EFAC1DFAD4C880DC4 +:10F8F0004E06F91E271AC4F194F766F3AF35AECA67 +:10F9000011FC32F8F31B8A74C0C344339B7F2C3C38 +:10F91000B7F0FA95306EC07F1BAB27C1CDD0F4791C +:10F920004B2BC37F653D4B17F3FD4F11CA611F156C +:10F93000C603E50D8F63DA1BBA765040BDADE81003 +:10F940007BDCB2D5D12F2529C8251FC7E3EEE729D7 +:10F95000D940086C65F45F57E865F6C7B90AEE6BE5 +:10F96000F95A59BB0F8BD1EDA0C7CC8D6E8CAF87E8 +:10F970007BB375DB7AE1C8A72CFE74F3B9CA1EC04D +:10F98000171D80807CCDFB795864F8366B997CAB71 +:10F990003D9BC5AF6E89287B404F17D417CE55408D +:10F9A0001E363039571039FA7D2604B2F77B7D07B1 +:10F9B000D8BDA1A16BB3F14FC763C0FA74448E1ACE +:10F9C00004FB2972EC0B43BD022AEFB4BAA2B920A2 +:10F9D0005767D8DBA7E5852F4A288F7D07A2E52842 +:10F9E0007F0FEC5800FED84247BD947F12CE3FDF18 +:10F9F00081B888F560579FD6EBE6F79882294E6A62 +:10FA000031DD0F29D5ED661ECB9B4221E045228DCD +:10FA1000B03F34278AF753587AADB746A989557352 +:10FA2000FA14629A26A738F7DB5B537406E86DDF99 +:10FA30008158B98670EB3A4B354C2D78ACFAC95ADF +:10FA400082F8F3FBC5ACF3AC56AA35FE2D6B1FFA5A +:10FA5000AD7CF3A67F037C9EA7A03DDB2E0FE33D8C +:10FA6000EFED8FF9C0E34CEE2F4895C0BD3DF7F99F +:10FA7000993CB4FA23D597A17D0C2136305E42988B +:10FA8000FE38D35FD50FF361AA61A29D3CB5222C4D +:10FA9000B4A3506271819DC4D0414E9A6111F9ACFA +:10FAA0003BD47513F0E3961EA110E4C396FAF22E30 +:10FAB000906B037122821C4D723939373ED404F5A4 +:10FAC00036EF13F13CEDE69F1AFA1F69FE430A0375 +:10FAD000D89373EB937128BFB3D287E577FE3436A2 +:10FAE00045B3E10522B399BD4C246E478B3C5E4C77 +:10FAF000C8653F7BC72E50C06E9BB87591097EF1DB +:10FB000082AD0573400EEB8D54C4423C6088A287E1 +:10FB1000E6BDFCDCB46ED0E767C3BDABAC5C0FB335 +:10FB20007C672286EB6052CDFCF667F65F8AF71D94 +:10FB30009E79863800BD770E368E017BE368AB88F0 +:10FB400062E5D1942BCB7EB5D6DFF24BA90D70AE1A +:10FB50007CC656116E6825BBB75D3006F86834FD6B +:10FB6000F172DE19D639399443384F5D197DB245AB +:10FB7000E3727C2BD727E121D427E11D549F7039F4 +:10FB80000EFAA49CCF6FB80802EA576E2B403BB028 +:10FB90007C878072BC7C2B93C74B43433D289740A6 +:10FBA0000F08197D45F513C6AFC173C88FDF21A4B7 +:10FBB000F020AA147D01EAB76C1B87F27349C818BC +:10FBC00003714B4B9AA5C84E3D236F752E3FFB1A10 +:10FBD00044E4AFFC1D029E67B7E4EB445EAEDFC0B9 +:10FBE000F4CAC49E752847F51D2CC518B7A28CBE53 +:10FBF0003B0AC148142F13E303A827742E5F2DFA84 +:10FC00001029A29FEA3EF1CE1DFD73701DB1639FC6 +:10FC100020D27453708D02E71DABF8FCB0ECF7F105 +:10FC20007C08E11D87D93AE70666F71F2DEEFA2A10 +:10FC30008CA3AB7FB102EBD09208D343BEF0D27B52 +:10FC4000414E9EC5D79923E7EEE3AD784EC3CFE191 +:10FC5000CFAF1B36A0BDC0D605579C8176FBC078C0 +:10FC600041CFC0F9862F9FAD3BEA860C2CAF67A62B +:10FC7000E1EE86680FACE3960445C4A9AFA71DE189 +:10FC8000A0EB1E4DB0F989FFD39787FDE7D7B37579 +:10FC9000D0E6AD6C1DD425A7E19B20243F22E2FADB +:10FCA00047AC8F6D5B04F4A2EB535837740BD1ABA8 +:10FCB00060FD48ED47A63F824C1EF44D98BC13E80A +:10FCC000BB65460AEF1DBE8EDB55B88EA076FCAA3A +:10FCD0004D2DF3C1AF638DD3CDC7E90F3BC6599FFF +:10FCE0003DCE45797C9CF5836C9C756C9CB47ED62E +:10FCF000388F49695CBF1E8B106D9D0EEB295A1E13 +:10FD00008475E02379D05EA61DF3AB408700C5075C +:10FD1000D021B0F51726D45B42DF83769CFCF00936 +:10FD2000E0692CBC4FD8BE7DA3D35E3875BCD3032D +:10FD30008584EB4BA6C74ED2832AFB2E83CFA19797 +:10FD4000BCF96523F7DD985976F0C057908F1E14E3 +:10FD500071DFFBAD7CE6A7F707599C127D6E8E0321 +:10FD6000BD4053D47F039239C5E69FF2D565EB853C +:10FD70006B4106E55A8FF275289106F1BEBFEE5928 +:10FD8000B199F6EF811CF4B1F5FA411FF34F760BF0 +:10FD90004306F2CFA8EB4F01E5422028A6BE4CFF58 +:10FDA000EC3E97E165CB0C11CF675D07F37506F864 +:10FDB000615EC375686F2BE547C4571CF7935BC73B +:10FDC000A858BF6F063BCF3590DE897EAC8DA90F5A +:10FDD0000F2EC6F5163BA7BEA7FFDE1EB807D65BE3 +:10FDE00065CC70D9E0CDAF1AC5EFE057AD7BDA0531 +:10FDF000A627AC94E90B2BEF7CCF0D7E179B9F477A +:10FE0000D634D487917D7F3D08B1629D5A09C6AB37 +:10FE10002EE4FA79E49EEA949FF9F9D2ECFB03967A +:10FE20009FCD75A89BDD6793F92EC2423FC8878698 +:10FE3000EC7B6C2CFF5B971C8F029EBA66A0C422E1 +:10FE40007EF0E3F8C07F41F240C4C9550B66ACB305 +:10FE50008DBF93FB9BE40605E9DA5793EDBF5BEB9F +:10FE600067F78C7D9BC3EB2251BC9F5219647C4485 +:10FE7000E1C6F5AB5247500F5278D1FF492E169C80 +:10FE8000E7496FF483FC4CAF3761DE59F05AF43A1E +:10FE9000DFCFF68BFAE4E19086FA2F1675B1798BF5 +:10FEA000FEA84D7583682C75C98C7FF2B7BA09C05E +:10FEB00021D6B3EF468DE7FE8BD757B073DB5BF8E7 +:10FEC000AD39DED0E52AE8876E79B819FCE7961CD3 +:10FED00072CA1FC013B4DB9972A17EEA24B124FA5E +:10FEE00009682B20CF06A4E85740CEB4D469113B53 +:10FEF000FE16E531BCB400FE7C8CCFEDF7ED7E97AD +:10FF0000FB755AB89C9039DE7066D9EFA5AA66F7E2 +:10FF100046485BD97A5885FB46C50C3E6DF4BF1B3D +:10FF2000E9DF949BFEDE3C86C74707CBF1DEEED1CE +:10FF3000EC55CB2E75DA9557FB74845793A81D5951 +:10FF40009BB1332DFDD82DA4FE781ECCABFB149DA8 +:10FF5000C5E9C6426087B926FB302EE70169C05B60 +:10FF60008BC6ADC9EE654A733E2146F43BB4BEDC98 +:10FF7000E3C2BCBC43386CE71F1BBF3BC77B39F8EF +:10FF80005F9CFC648DF7F23C26A7B41365C418632C +:10FF90005B1F348EF80B04B0AF5E9F43103EED4400 +:10FFA00005D6CBE1BF29037BD1E9B7216408E5CCB5 +:10FFB000FF96BFA6ABB848003CFC2FF86B8EF94FFC +:10FFC000E1AF210E3F8CD37FE3F4C38CE6CFB1FCCD +:10FFD0002FF0B3FB719CFE982208C09C04FE9C7617 +:10FFE0000FDC877D8CFB010F6C7A639E19CEC49168 +:10FFF000C86909E1936E6074B2E69125572D399B6B +:020000022000DC +:1000000043AE4ECA3B855C9DC4E7EFDE757CDE04E3 +:1000100089047AF581077FA142FCE9442E1F47F449 +:100020002EE85B9B7EF583BE9D767A7D9B6C2438A3 +:100030003F0AF9380A86595A38C4EE332B2032A6C3 +:10004000498934413F054DD9783AEB09A71DB28E55 +:10005000F9CF55237809F04B938871FA671FCCAE1E +:10006000D754F66CF0524A97C279622DDB0FE0EF5D +:10007000F9C8D8CB805E8D12BE77CEB1ECF732F6E0 +:1000800031AFAF31B8CE3F719A7A41E6CF77C27FB8 +:1000900081EACE0D7FC818FBF56006FE2F87B2EB14 +:1000A000352F7A76EC15B9E00F93A2E6BA0CFC175F +:1000B00055B94F0D97CEE0FF5AFD69EA55E486FF2A +:1000C000D2A651E0AF2217C279962B9A4FD32EA712 +:1000D000EB375A4F5DEF9B6DCE7E4CB63E098A1EC4 +:1000E000E067779A7DB7442632A6EE617E1F9E2692 +:1000F000A35CB3FA91C3D9741A9D7FCCE0823A5CB9 +:10010000B7639CB1930F2EAE91914FDC6345F6DD42 +:100110009B11FEE1740B32FC9F962F38FF38F9607B +:1001200034FE71C2EFE48B0CFF98632F0F66E0770B +:10013000F201B5EB907FE4704564A3FD3D8B7F82B7 +:100140008CEF4ECB179C7F9C7C90837F901F9CF004 +:100150003BF9E3FF1B5F6832CA153761FC20EBFFF8 +:1001600053BE48072FB5F18593BED139F390FE27D2 +:10017000F305A707E78BD3D29BF38593BE9F972FF9 +:100180004EA6B7C5178CEE16FC4EFAC6D67D5B633D +:10019000F7E98CF0C3E7A3AF4EE9EBFBFCF39DD886 +:1001A000E12D3F99CEA7A72FBBEF4CB3E8AB33FAB5 +:1001B0006A1AD3177284A5DD167D8DCF47DF6E9541 +:1001C000CA7FF4B732FC38E974D9259D4847CD4140 +:1001D000DF6E1FC72BA7EFE9E8D6CDE97B3AF9DC44 +:1001E0006DD1D701BF936E23F561AD16CCF88B9D11 +:1001F000748BAD933D76FA7687E34D9F876EDD9FD6 +:10020000733E12239BAEA3D1AFD51D4F631CDB38C9 +:10021000F6DD1F775813ECF7F08E0F30FBA2086C59 +:100220002FDA6E6B5EEEF3A67A80C5592CB4EA0520 +:10023000B2E398ACB492D7EBE7F55E81742C9C677F +:1002400088B6827DF3C83EBD7881EFE4F1DCBACE9A +:10025000FA8E972E2CB0C587CE0EB075CEAB098D19 +:1002600018B6EF25267B6BE6831FA73039A70BD284 +:100270006B7BC7102307BE0A4E4C42BB3CD35F8A40 +:10028000F955E669B8FF5D70623296BF9A50B17D4C +:10029000E81FD6CD27B79F374AFBC5A7693FCCD605 +:1002A00005F407E77CACF82757E0C9B7603DD919DA +:1002B0005674F06358E78B9CF8A4F2869DFF0936CC +:1002C0001A43367A7F9DE34586733DF07D883D2E47 +:1002D000663F3BEAB58B565C7A2C64C7EB359C4E87 +:1002E0006A4AE27E9758C87E0E21C9DB6F17220743 +:1002F00063C0E713D87DA9DDE766EF0BB40698DF8E +:10030000AD2330E25F44BF83EC7BEE20F83F652BEA +:100310004E2C2865C589B58B7CFEAC61F67A7725B5 +:10032000B9473C0BE305314EB38BAE43F0FCA7A0BD +:100330005AEB2D3CDF6BF93FBBF7517B16FC9D7EE2 +:100340003105FB7CE325B2DF0DE71442EC9CC2884B +:100350001F6C219B9F5DB710B39CB6DF05A747C1FB +:100360008FB188EDDB767DCAE0E85AA2A770FFC99D +:1003700030F46051E6DC1CBC577816C31FD0EBAEDE +:100380009052037E6A6BFC567FCE73541047436CC9 +:10039000F16EA3E18190087E7F49F6291AF8734E29 +:1003A00087B7D6009B4FD70474C4F7D45D0ABB3718 +:1003B0007CBC82F7B958742CDF2061DCDC5F8937A4 +:1003C00002E36C2F88BB2114BB9D2EB396DBFCB2DD +:1003D0001D09BDC11E9FDB314A9CD596422627EEE2 +:1003E0002F60F7F1ED155637DBCFD5E515303E38E8 +:1003F000C1F98AD44555163FDAF15BB80FBB4B13F0 +:1004000075C05B4FEA5AFCBEC3AE90A8093AA40B74 +:10041000D4EB701D206AB007BA2BB41EEB9BB43E20 +:100420008C67BFD682E7B33B7AC5E91007450974EC +:10043000714D51665DBCAB516474AE22A94A3AAEAF +:100440005B1A6B4BE0BB9293B5C2396C332C2E62B6 +:100450001CF95642B6D3F2FD9B15BC6726A9F9F0EC +:100460007E03DFD641037C25BB04E2A9C0752FB310 +:10047000C7E6BB7C98DF5D2F61FCD5BEFECB5F90ED +:10048000693BB71822DE4B10E0DFED3B14607E5372 +:1004900009BE4F47E9B5AB5FBA10DEAB3AA302F92C +:1004A000674FBF82F7DDEDEAEF2A417F7D43F6FD1E +:1004B00035FBE6CC2C817D205F5DF6F35D57464B26 +:1004C000F0BB8C27DD8341396B66E6DCEC81DB1504 +:1004D00001DE77DE5FAEF5D460DC36E9F5E1BDB56F +:1004E0007FA0F314F685F7888688DF43FA133B571D +:1004F0007DCF2D5D59DFBFD9176474EC4D904A88CC +:10050000BFAC2A13A3201FACEF0EFBF8F7CE2D7A59 +:100510003BD3F20D8DA7BCB75C5227659DD3B4F8D1 +:10052000CD171914E11EA8498F6A357914FE49BD0B +:10053000FA134314CEDD534B6BC07564F1DF73B710 +:100540005F7ED572FA7CCD5E463FEF2137DE439069 +:10055000C7E32377EFBB92C0BD29796DC14AB84785 +:10056000D1AB1755C2FD8972248DEB715F9B520987 +:10057000F777CD7FA8FA94DF3FDA98D02AE1FECA58 +:10058000AD091553EBBCC9971EBA18BFF7F9DFCFF9 +:1005900030E3C300800000001F8B08000000000053 +:1005A000000BED7D0B7854D5B9E8DA7BF6BC929957 +:1005B00030934C92C98BCC8404120D38098122628D +:1005C000DD2401C2C376025183220EEF008104B400 +:1005D0008A2D1E06089040D480E1795027C458B473 +:1005E000DA137A142962CF0868D16B7B22B6542DB6 +:1005F00072025A0BA8185BABF49C56EFFFFF6BED31 +:10060000CC9E4922787BEEF7DDEF7E277C7C3BEBAE +:10061000BDD6BFFEF7FAD7CAD75FC3CF4D8CD91D61 +:100620001263C98C7D2DD2CAAA785FC3C8483AD953 +:1006300029FB4336063F2177A53D92FF0AB61BC52D +:10064000D866895577DA22F9B1E5AC444D9BE06272 +:10065000AC7DBBC9B11992E32B4BD297943076AEE7 +:10066000D9E4307B18EB7870E843B3201D7CD3C00D +:10067000F2A0BC63FBE8F48585917EDAB1FFC2BECF +:10068000FD178A79EF4F0BEE917CD030F8D1E4372B +:10069000DC90B606F7304CB3F7791AAAB1B158FE20 +:1006A00087C92ACC73BF117E4F67ACC0F12F9383EB +:1006B0009876066F971D8C3D64FD5DD3F1EB219D0F +:1006C000177C5782F40B492C5C3E06D25E5EFFF12C +:1006D000475C8D4198C7FEE13CFDC42317A87DBB54 +:1006E000588FABCDC418ACA7BDAD219141BDD6CAC2 +:1006F000DCC11EF89E2B0AB919F467DEBAFE842508 +:100700000DEA49BC3D630B2B542C17E9918E05155E +:10071000D8DFF8CADC9DB3005E5BBB8C3E84CF396A +:10072000A3A309D3ED009FB550B53DCB9FEEEF07D6 +:100730001ECD6BDC79CDB0B606FCE645F2ED3E771A +:10074000DE33F98C7EBE86FF464774BA5DF2A7237E +:10075000BCD6C3F80ACCAFC3E827F8DDDD72234F5F +:10076000DBFDE9088F792DA3783A59CC3F38BC02DC +:10077000E1D991C6D3531D0515089FD879B41B7DC7 +:10078000E9BEC2AB9887A8F77FBA8E81E070B5E367 +:10079000FF7FDCFE769FEDCAED5F17F43A603FDE27 +:1007A000ABEBE71FC5C7FF69FF7FB7FD7A470EEDCB +:1007B000F395F181117F8D935900F9FBF6AA52EB65 +:1007C0001C1D9FFFB14BE6FD603DE4F34C95FCC062 +:1007D0001BCF354DB206005FB7B2AAD7CD4318CBB9 +:1007E0006FCB4D0840BBFCCAE97179C0271B5CC8C0 +:1007F0006DE1FBB7F59629986E951DEB3C50DF0136 +:10080000E5C0E75A208D2CB1C5556AC5FAC166D935 +:10081000877261834BB6CED38D0FF52A502EB5A8C3 +:10082000D3A3E44587901720C9C266E86F536ECE04 +:10083000BECDDE48F96A17C7F3D6C619EFE643798D +:1008400043B34C6B3EBE7DE2899B60BC0E87EC31AE +:1008500043FDE38EE2CD63707E6E9999A17CA8631F +:10086000FA9402483B2B649F077B679ECA02A877D5 +:10087000AD3970E226E847C9903D41483BCBEB6576 +:1008800006E941AD8C25A1EC684E642C8531878545 +:10089000C37623F3975A715D6398AF03D22FFB6140 +:1008A0007CE4F73E16C271E1C75E341ADAE26F30BB +:1008B000D0C47FC9B4E6427947399F87727AF2057E +:1008C0003682B1729797D691D43D671AA6B7B616FD +:1008D000BF9E0FFDDA6E917DD82E719A72AEDB123B +:1008E000D9CF8471D169A6F82B71DCCDB72828C384 +:1008F000998D41B9B6FF5E5C9FAEBE0E7EC97E4B40 +:100900005EAEAE9FF87C4754FA274AFD7F3C80FBE1 +:10091000D865F005711F3B155A5FBB838524E8E756 +:10092000DC2BEC09761DC8DB66BEEE4DAA2534CC67 +:100930002BE420C265AB12823D641DAFB0C3586F7B +:10094000EB2BCC270D228053B963636208E77BE071 +:1009500059134BC4FA765B280FD21FADF18D6B4053 +:100960004469D949F05E62E1F033C82D3E0678D87B +:10097000C4D41C6660ECC44F97B48C877157FECA10 +:10098000E043785EFCE9143793116F6FBB1DE7738A +:100990007E9F9D19681F1C33E743DA91E8F6A1DEBC +:1009A000D2807AC3585A669041DF4BA12F2EC75987 +:1009B000D0027878CEEA998D72F325D7ED532CA02A +:1009C000473C1BC7CB9F6B9DBD39380EF486B61BC9 +:1009D000F3510F58BF6D7C93B508F40FB3E82FA8FF +:1009E0006C1E0FF87A4096B4FE55067A4727EA1334 +:1009F000949EF67A39ACDD216BF5276C46B95B73B2 +:100A0000CC24C64F8F1B0FE5074A1D23DDD06FAAEC +:100A1000CB35C59285FD69F30B594AB17F136F9FA2 +:100A2000E00A55E07C8A86749EF921ACCF7C9FC990 +:100A3000B78F89F1713FEE35EDDB27F5D52F2E27E6 +:100A4000C9C40F3A4B5805D217CCAF3AA4A33B7F89 +:100A50009281CA67896F67E846D903F31CA23015F3 +:100A6000F907C02C691AD2D783FBC66ED6F1A96AE2 +:100A7000671CD5AF31B37AAC77A85BDE42F8D2EA17 +:100A800070E23EC8ADFE756721FF726222D5CB0BC6 +:100A90004F4F9750EFDAFF567121D40B3E6723BDBD +:100AA000F1E2FE197B0C38FF463333C0FCCFD96D21 +:100AB000D54F42BD0DA16BCB118FB4F1AC627E9BC3 +:100AC0009A8B3B57C17C2EDA6C0EC98378EBAB4610 +:100AD000FCFA89CDE4084AB4FF69C8CF72E510E991 +:100AE0003FF76C7DAEB12113D2028EEF271D6E440D +:100AF0007DADC9EF8B9310DF336586ED36B9A65B0C +:100B00008098D8A3E357D277932B27C306E54DAA45 +:100B1000C9C3A0BC653CD797DB1475BA17F2DB5A82 +:100B20005C52D013995FBC80733BEAB0B83E172388 +:100B30007A78DA097801F37B3A99B5AF07B8981D4E +:100B4000AC18D765CCAC57D57EF4EF74D10F031D2C +:100B5000D8369A4882E821A5FCD48F905F9C3775DF +:100B6000CD5C84F072C6F9F6417E87B52B4D82FECE +:100B70005312E3645C472AAE0640D520B3A938EE91 +:100B8000864CE6588BF98DE6A001DAA7349ACFE2BD +:100B90007703D231EEEB7C16C2F5A536CB67CD09D3 +:100BA00050DEFDD91A1CC7DD2A874D587F968979FA +:100BB00074F2C57DFAC2DF59024E0FF2757C26250C +:100BC000C1BFDD097CCD9CE99002369EEF86F9C756 +:100BD000B1DE1F3783B44924E29AE5A019FA7F7683 +:100BE0002DE70F9BD6B210E2EFB9E7D933081F9378 +:100BF000A5B9CB9040ED2DAB8A75705D0D7085F178 +:100C00004C8D9B56E03A4CF9BA79C0FFD349290480 +:100C1000BF4CD62D21FF7854D839C43AA1281B7176 +:100C20002407E1184EB801E1F8805C8C7024DB03E6 +:100C3000E6872C0BCBB5FD38E8E47227B61F8FE8AA +:100C4000474B3F2EDA1D389E3815F1FBF1606231BB +:100C5000B21AD8871A2ED778FFC9D80E51D911A742 +:100C60001620FF4FE2F6D081B8FA1A7F3FF8B02382 +:100C7000898FBFE135D85880CB81759EBBE720BCFA +:100C80004A6586F4FFB2CAF7F15C39C821849FCA6D +:100C9000E1D9D2CA4228D746FE4A6992613E99E319 +:100CA000E544CE1F0186305F3BFE024D5B7C7E46F5 +:100CB000FAA18BA9D611480FFE6A9C07531C52E576 +:100CC00070A27F26C3BCE3457D7B797005E2478B2C +:100CD000C56175A0BE90E99B928BE335498E7D047A +:100CE0000CBF5C698FC0C526E012DF0AED603F6D66 +:100CF0008D128D83FD2272276039EC53BCEBE07DB1 +:100D00001296ABFC3BA82A1AEFEC63A2F779AB80F2 +:100D1000C7DAC438C28B96655C0E13BFC47D5DC252 +:100D2000F129DE17DD4F86C22A4CC5086F47DA7CF1 +:100D300084E36633C3FDCF0E46F79FDE985A8AF8E8 +:100D400097C974EDA1FFBF399DB41FE927F64E97EF +:100D5000611D1D354C3600D264B0A05A53CCF70744 +:100D6000F58D4D2932F59BE14A2C453A02B854786D +:100D7000213F3DD553ACE7A346979F1517623D47EA +:100D8000E950A8F79344BE7FB04784E719277AEE6D +:100D90004678A7D746AF83E9E9CF70E5B4D1921082 +:100DA0008C877E8C31747B31D1CBF98DC00B146F65 +:100DB000C86F403230E4A317137CAFA3BE15BC57F5 +:100DC000F175403EEA66993047E333723015FA33E5 +:100DD0003FC3E9D8D8A904872590B8574D589EF944 +:100DE00095593FDFFDCF8F4B47B9D26EE474641045 +:100DF000FAA9068703892682EB8144C1FFD821A284 +:100E0000977BC55C4B5FC82C437EDC91C5C8BE3E5A +:100E10002FFBF7C4E3BCDE35A3EE08FD17AEC772A7 +:100E2000A70A7A870EBE9B947A8BB390961492DDB4 +:100E3000DFFEBB01F51ED8DF76A1D768F91DE1758D +:100E4000CBE7305C4F70B403D6E10CCB9A5E8114D3 +:100E5000A9D70B821690DB0586E0BD8B411EBDB97C +:100E60006DF9648715E53E137AC1BCC92AC8A7A2EB +:100E7000F592687F4713A6237A00909D25A207303C +:100E8000563FB906EB676AED674E5601E89D162D91 +:100E90003DF435F44F34183B47A3DEA23A438DA806 +:100EA000D76CB0FAAB91C77D96F4F964F467687AB1 +:100EB000CEF9472E3705A1AFE186AE6B2C507F47A8 +:100EC000CB754DE559489FBE38BFFDCAF069577CC8 +:100ED00071B8FE76B1FE0989C326AFCDBDF27EDFC3 +:100EE00081FB0DFB9C95C8F9DF7003D72362F9DF06 +:100EF0000AADBCDD548F7A4BE9301BA7F7076F7D35 +:100F000002E9BDF405DBEE78E47FEFCC3462BA2E63 +:100F10005111F8E3790CF3DBDF31939E8CF638CD79 +:100F2000F3F9590CFD3CC690490DF583178B120B54 +:100F3000080FFBAC33CF4674B9FF795B88C138CF5B +:100F4000AE037EDD8F3F279828F8F51A803D119378 +:100F50004F4638E626FB55648643DC81207E4D6093 +:100F600087A9FDD87FCAE50CA62645D26D0E95E669 +:100F7000AB5C1E4CF9FF64F0AF4B84FEDFCFDDB7F6 +:100F8000780BB4DB23E4CBC4416A03E6AF97D58783 +:100F90002BBC7DE7A57D1BD678C6A14EDC9B36F623 +:100FA000EF077C7C1087FB3F6017A824AFED71C46E +:100FB000C706B40BB6B97AED02E27B1BE4509EF78C +:100FC0001BEC8221451E941756438B05BFB9B2EF27 +:100FD000E1F15EB40F0E5F7C1AED83A7E2C93E68B3 +:100FE00090823F5D85F68891DB033549169A3FFC78 +:100FF00078513E0D6C17EC6CAC28BCB25D104B2FD9 +:10100000C52A237C5214568EFCAF0CF938C0CF7819 +:101010009CEB558A07F86402E79BF8B5B87C244F2F +:1010200035BEA28414AA67380D7A1A7E9B3792FEC9 +:10103000A338FC0CF5A915A6C031DC5F608B0AC291 +:10104000C3CAD7C20C3695050A07E617DDDB3C9309 +:101050001B61BE86E37167A9DF301FDF707AD3673B +:10106000A83FB1E7A2FB8371FE1DC7B11CF287E365 +:1010700075FD6BFCE9E0B6C19371FD9D213BF5FF69 +:10108000D6B6CCD782B9DFD07FB84FFFBFEFAF7FE6 +:101090008D1FFE725B5613D939D0D20C30ACD9C932 +:1010A000EDA937B7654E5EAB7CC3386FF419E77CAA +:1010B000BFEB107CF35FB7799B70DECFAEADAFEEC8 +:1010C0008F8E1312B99F2456FE1951FE1573B997CE +:1010D000AADB4F33CABF1103CBBF54C407E8AF2606 +:1010E0009EF3B9233D72FCBB642FA53811F53A1568 +:1010F0003FD9B18ECC14692DD26F121FDF11BA9374 +:10110000A13F5A76793676A35DD25499CEF47E7695 +:10111000B49F906EC07ECA23FBE934B7AF9EAF6523 +:10112000799E881D7571FFDD16C4A38093CBD9D439 +:101130004407E1A7F558718071570AC14F93FF43E7 +:1011400007051C49C928EFB97C37673229407A2C3A +:10115000B7AFFE513BE70127E72F1D56DF944968E3 +:10116000BF94CA0EA44FCD4E01BBC08A7AE5A6ED4E +:1011700032D9B9BDF689B05F347BA841E67C646B97 +:10118000ABBC0FE1760EE66505FEB2B5B9F82DB43D +:101190005B37D42BE457E963C7B8C0BE81FE5A1A47 +:1011A0000D53C98F037612DA41EEF9D1F592070596 +:1011B0008A100EB67299F4D68EFC7D641FC6DA1DB5 +:1011C00057D25763F5D0587D33735574F9B7D7F7B5 +:1011D000B8BE76B57A1FFEF4A7EF91FE497CC4DC59 +:1011E000847A04D96790BE9468263D4109737C5087 +:1011F000900EF18BF48774006C14E501D05D7512CC +:10120000F2A95A4941FD4DA347748FA01C8CF53FAC +:1012100068DF694E93D003A2F96AFB83430723DE9C +:101220009D337A66A39DF233E1177D4E7C0BC47922 +:1012300092567E50F84F0F0D507E58941F11DFD8F4 +:10124000F25F8876E101DA1F15ED8E0FD0FE55D1E1 +:10125000EEC400E5AF8BF23706E8FFD7A25DD700FA +:10126000ED4F8A76BF19A0FD29D1EEED3EE55CCEAB +:10127000BF2BCA4FC7F47F46D4EF16F9850E0FF780 +:10128000670C704EA6D9AB9887F621A95C4322FB68 +:10129000F96F4E59F89781464747EC408D6F384BB0 +:1012A0005808FD129A7DA9D981EF39F9B8B672B004 +:1012B0004729B393F0A6FD0AF05993C4F9EBFEE178 +:1012C000DC8F8C78B3408767EB938CBCBC88C321E0 +:1012D000B2AEA1B2B62E19F2B7087BBB50F8C7F771 +:1012E0003B23FDCDD3F55727FC51ED57C0ABA5628D +:1012F0005EED57D8FF1F613D5D7F03E1615D4CBD31 +:1013000081F0617DCCB803D1C5A2987A3F15F53A3A +:10131000C5F72E2187AE840FB178D52EF4AB829617 +:10132000579AF07CB1FD0AF4719F5817FEE8FD064C +:10133000B66699F02099F544E14702EB223F8A8690 +:101340001FC6CB5EA68EC434974FCE240FCDDBA82C +:10135000F819EAFDC6CBB9549EB71F4C7A904B1BC7 +:101360009E87D9C337AFD52105A07ECBF3C02021FE +:10137000ED740D35A1BC9AABDEABA2BCAC3DDEA5D5 +:101380007A1322FBAE0ABCBE921FB6F689776F971E +:1013900074ED260979D7ABEF3D746B941D12CB0F1A +:1013A000EF48B4D038FF15A7DE827A4CCD20EECFBF +:1013B0006365CC81FA34E85F12EA0F1DC98CFCA08A +:1013C000B20BF407289F9B696293D0FF9AC4E11483 +:1013D0006665B622D4339AB93F4AD31F0A0C8E3FB2 +:1013E000A3DF9525593C28BF51DF42BF087C8F9B66 +:1013F000E15BECE4FBF12DF42DD599DC57DF524590 +:101400003FFF8D7A70AEEBAAF4E0FEFDE7DF420FFE +:10141000F6B9FAD5839DD7325893BA357EB327AD46 +:101420006FFF9A5E3CDAF5E889E037E9AB7DF5E2DB +:10143000EFBAFA81DFB73D1F682F117657BE85ECF2 +:10144000AE2485B9938AB1C3693E3C6FFB9B83F39D +:10145000AD2B9D335DE95CE94AE749B7B9ECAE0FC6 +:1014600071213EE6433D64E2BF146EAB00FC5CF9C3 +:10147000A681FC37AB5AEE35E3DA63F15EB10C19A5 +:10148000D700BCA0750DF46F8CD8A79BD738280D5A +:101490007ACA64C4F3B887129D6837FE9B38CF7C44 +:1014A000B9999FA39DAB9279FCC589ED15782EF96A +:1014B000B9CACF2DB757AD9B8E70696D34F0738666 +:1014C000C6F58D63209D3F4176183C7AFBD89DA7D9 +:1014D000B78F87B90248D9D06F29E97D0D7F2BB32B +:1014E000A0DCDBE4981E877AB9769ED9D1CACF39C1 +:1014F000B75641BEEDCAE79CB1EBEE7688F303C662 +:10150000CF69AE3D36B312E36FE6362716593DB4C8 +:101510006EF2C79A05FF515619F23E007E968C7AFC +:1015200031E0D35C87CAF05C435965E2F94CB73FC0 +:10153000B05FF14ECE0FA18BA094487C322F57DBC9 +:101540005FC3C0F4A9D1A346A71A5DEAE87107D129 +:10155000E3AC687D4FC35FEDBCABC4F56805FA85AD +:101560009E95B81DB9C7F5CF8D88AF460FA37134CE +:10157000FDD088E38DD0E999A7CD443F465790FA36 +:10158000D38DDB41E39E60FDEA99DAB9DB16D75EC5 +:101590008A6FD9AE04A7D3794848616827BCEC9A12 +:1015A0005E81E7382D025F5A4E18C98EF81CE80696 +:1015B000FD3B786E1EE8679F34FCB00B79188B27D3 +:1015C00073857CE940F90276C8DC4667B47C69BD66 +:1015D00095A17C31A27C29EC2B5F4638391E8C709A +:1015E00072FB4C9323F198C6F52ABE7C5CDF7E63C8 +:1015F00090E24B8EB6DDEB26BBF0E7816C473FF304 +:10160000EDC5BB411E215F8356F4670103B2CA6377 +:10161000085E3609E057DB0BBF15E477FD81C09DFE +:101620005A3CA786F12718B8FF2BEE0989CE1996E8 +:101630000615DAB7DAE0BA15E807077E44F2CFFB01 +:101640008491E1B93D94D33E6AED97769A5958C793 +:101650001F963F07699D7DE365CDC417170398C2A8 +:101660003ABEE3C573F3042C8FCE67865983100FFF +:10167000AC08F4B4BEEB5D75BAED86E3BAFE2F6834 +:10168000FCE83BEC3B642F89F603C1EBCB35A11B97 +:101690008EC33E974AEAA7C897191EE65FCFD84384 +:1016A000D730B24F63EBA31B09E13B6F55197B1F8A +:1016B000E8EFA0C9315E41BBFC3189FC06EBE2BF1B +:1016C0003B51413FD479181AD2F3EE5F3A12E974D4 +:1016D00079574B5902CAE166A908DD5DDB8FD61741 +:1016E0003920DD73A7ED46D423984DF5E03920FA73 +:1016F0009A51DFFAD8C8CB8377DA8A506ECFA952D5 +:10170000DF41FC4835AC286A41FBFC6FB03AA8BF0A +:1017100040ECE60BAD95260FE0CB2225FCB204F39E +:101720009E33CB3306E139A7D3AAE237D5C4142BB5 +:10173000C8873916A6C4C137358E5928AD300BA6D7 +:1017400047AF637721BF4B18E337CD81FEE71CF924 +:10175000F15FB8B21E227C9C73E4B5BFA21DBE40EF +:10176000F59B50AFB876BF899FED08B80FEF8C4E50 +:101770005F77283A5D148E4E8F3C119D7E10610F6D +:10178000FF5FFCFBDDFFF100C0B3E75706D2B79661 +:10179000023BFA2EF0B183D7802D80EB5642837145 +:1017A0007C3063591CC0E7E2D3768A1FB9B4C637D0 +:1017B000AE1C007BF4BC4CBE9BA54FDBDBD04F7C4A +:1017C000F0ABF71FC2F3BF9E67E3E91CB56CE933CA +:1017D0003FBD1FD21F3D15EFA4F882DD2F3C86F8D8 +:1017E0007CF1D9610C59D647C2CFFAF2BB873FDCF6 +:1017F00003F94B7E1A5F84F53E7AF685A10897259A +:101800003F796930C6D95C7CFA27A329FDF45323BC +:10181000F07BF1A91F0FC5FC8F849F22F8B4B90D8E +:10182000F76DE933D6B34900B70F3FB1D9F4E7DC20 +:10183000DAF76AFB5D8AFD22FE60BF4877CF6CEA6B +:101840004A427ADB6F0F26E9F8CA92FD5B3ED3A7C6 +:1018500063BF4BF6F3F90C5CCEFB5D02901E037088 +:10186000FFD0C8E5D8D2FDE6A8FD1AB62B7AFF0A4C +:1018700042D1E9BA4BD5539C304EFEA559539CD06A +:10188000DF2521EF62C70B24733BACEE5074FF875A +:1018900095FEEB2F4CE672311F4F98757C22DDDCF4 +:1018A000FFB942ADA8FFF4D3BDF50DDC8F0264068D +:1018B0007AD952416F2FF6C625B17B3280AE968A17 +:1018C000735F2D7F29D3AD8FFC2ABE41E85F7689F7 +:1018D000FEBF3402FDE07EAD098CFC00F8C9876BC9 +:1018E000EA0BCA75FAC5A2BD7336A6C1FED51EC8DD +:1018F0002BC2E1B5FC6B3A8D24776B9F3A9680F250 +:10190000E2E2FE633B16203E761A59BC87F2533062 +:10191000FFE3CE5712EE80FC45BBBC457A3D66D155 +:10192000AE1F1494EBF8DFB7A54B8D8FD43A381C5B +:101930005E18D3353103F077E92EC987D59676DE68 +:1019400032E366C4BBBD061FFA19472BCC6F28C60D +:10195000753CFF6A3AE4D7BD346A34AE07BAA8C210 +:10196000FCCDB27FEA70E45B8F19297E0AF24FC882 +:10197000804747F3B799CEC13A4262BF37DF6AABBF +:1019800041BD09FA3B2E43BB84272455A4DFC6FA88 +:10199000E74B3B13D0EEBB60B435E239C2057BFDAB +:1019A0005B388FE0B3BC5F16E6F35E2CCE0B6A8E1D +:1019B00018498F38F8D59F6F1D8BF4DE66F022FF33 +:1019C00058B42B1AAF1C6A8B09E5410DF4ED8671F2 +:1019D0002FB6D9A9FF8BC9A1C128570F7ED57E0686 +:1019E000E9ACE729B3AC8FB3A9D9FFCBBF225F5DC8 +:1019F0001C8AEE2F162F5E11EB839F7C3D7EF5C572 +:101A00001FA628A323E5B5AB404EE8CE836A3F6806 +:101A100031A11EBA789AE91BC7FBF3E917867A64ED +:101A2000C2D320DA79C10306F2D37EF48989F8FEA5 +:101A3000D26B58B907D6B9DC3D725C39F4BF743A41 +:101A4000ABC034FC481618FF22FE3684A7E9FC051B +:101A5000F19EFCC4E1876E003CF8E86706B619E623 +:101A6000978EE776009FC32C9C20237FEB34C838E9 +:101A7000CEC5F3A000025C3E76841312914ECE6F69 +:101A8000263FE1DACE6309DD98EE4CA2F3F581F84A +:101A9000CDE167ADB20CF0FFF8FC93F1AC1FFA5D3D +:101AA000729E9FABC7F21F4D0E9FC55F415E7F9C2C +:101AB000ACFE3119E18E4605E809A949F545F5FD69 +:101AC000F4A7B59B23F176A9869554EF9354FF674D +:101AD000D8DE5E12F4A2FC4E0C587C683FBC6FF05E +:101AE000DDEB1882723660223F444332F5BF88C175 +:101AF000FE40FE3C858515C0D779289F47509AF84F +:101B0000FFBCFD52088F52ECCDE6A8F3BF85AD9027 +:101B1000D6AF63AFAE1CF8CD6294DF09740E1646E3 +:101B20007FEE9227A2EB2F05F31DC7AD7DE66BB3C9 +:101B3000BE5FD03CB5384F13EA8D7F1170F9245544 +:101B40008D4B81FCBB25FF77B1DD02F3016AEF12FB +:101B5000F1133D07A4D03E9427426FA8BBFFFE823D +:101B6000F9A0AF7CBAEA4705F393847F06E97F9733 +:101B70004476E6D27216CE82F9DD2EF49FA547A4F4 +:101B8000F070482F8075A31E31F61929680739B700 +:101B9000C0C282098867BFE1FB512BD683F50615C9 +:101BA00023FC8204CFC5AC8BE633B686FB55C61E3C +:101BB00092284E29164E357B63E0A6874B0EC22332 +:101BC0001ACECB9F03F844E10B870FE83DCC0AFB0C +:101BD000B55DF0F5336047E8F54A8651FC506FFB80 +:101BE0005A89CAB7DF62626E98D78E990BDB31AE25 +:101BF000E661F47388B8428C03DCACC5FD01C158C2 +:101C000060BCB8912C72DE3886F42A4A8FDB91359D +:101C1000755726F4630CA4A19F6A4725E8B95C9F19 +:101C2000B1A23EB3D51D188FFB34CFE07F150D8CCC +:101C3000F9B23A58417C5BC5E1B7B3B8BEA0BE1F4C +:101C400079A8E1F30EA94BA5F3A10724E28FF14790 +:101C50000E843360DECB2A3CE4F74CBEED74FE5CB0 +:101C60001877660AE74F838E7279B55B620D682735 +:101C7000BA011F24D89792E7B6A6A1DEC9E69B8ACF +:101C8000F19CE9612797073D6FB21BE97C26BEBE38 +:101C90000DE38C52EFCA2FC6F31F58EF5DD3A19FFF +:101CA000D9291E9A479A8DEFAF7B5DD0BB12F253B4 +:101CB0000126F6441CCFBFE215EC67388F6783FC22 +:101CC00046D43FDD6CAD84F5362673786F9CC3AA8D +:101CD0007F5648E76BCAA044FE7D1BBE6075361870 +:101CE000E19BAA80FECAF31B709CED097C1DC9B262 +:101CF000E1AE4ADCAF629E4E5C2DA9FB0879B7D2FB +:101D0000BC52CDAC02D789F9E8878369A907A83C02 +:101D1000C4F1A2ACBE88E63B847FDFE8B6040D8048 +:101D2000C76FB834BD336C23BDF3509A8C72E71E75 +:101D3000212F3F35AAA92391EFBE6964A8FFBB06F6 +:101D4000C7D4CFCD9791AFDE23E4D4E7BEB24148EC +:101D500054878CEABF3382AB41DAD7CF397E738A9E +:101D6000F0035FCE60219D5CA8ABFE82F4EFBACB9E +:101D700083A3F23F5E032B19A6931F35472762BD4D +:101D800065AC6B23E2DBB24E030BE9E8E39095EB25 +:101D9000FB5FBE6726BABBBB63D83E1E37E64998D9 +:101DA0006E8FD041DD65030B024EDF6090A97E5D32 +:101DB000B589FC4E758D8636A4D3BACB265E9ECDF2 +:101DC000FBABBB9CC48249585FA273C29E2603F939 +:101DD000492F187B36A25E137CC94B70AABB9C426C +:101DE000F5703CD4A3EA2E4B943E877A1FF4732EF1 +:101DF0002407F3AE43BDF04BB15E8597431784E7EC +:101E000087B89C9B06720DF9155360DE607F5FF208 +:101E1000BD9F80F03D27F4CD74437702C67FB21793 +:101E2000B9BCFA780D302680D3254F37C92B0D5E0B +:101E3000971CDD0908A74BD51A5D8615EC678FEF57 +:101E40006505FD3FB5BE9727321DBE44E01ACF821F +:101E50003AB8A6ACEF0ACBC0235EDB316F4B610111 +:101E60006CE151C10F820BB6A8E3A0DC2047F1075B +:101E70008C5DD1E28A1145B6CB06717F67E196F29F +:101E80004C5D5AD4EF6D1F5C34B51CFA2B29E4ED80 +:101E9000DFDA51F3BFD6293A39A0F40CF6DB7569C5 +:101EA0004B4CDA06E9E1BAB423A6DC1553EE8E49B1 +:101EB00067F2FAB307758F32808D766647ED54BCB2 +:101EC0007F343BA3FB0778DFABD95037B53C0DE53A +:101ED000A96F22EE57DD21C9C1D56E0EBFE53E4682 +:101EE000FA9ECDD76DC2F396F812DFABA857D44255 +:101EF0003D09F023BE30CC907FD5754AE4B7EB6D39 +:101F0000D7C9F5C4DACEB3D46EC0FEF365A2F3CD63 +:101F1000F9E7A8DEB2559F9850AF69AADDE647B948 +:101F2000B3C2C4F91560959A0178B1FC5025F99BAC +:101F30007E3FFCC86F31DC33FE9ECFD62A50E5BD14 +:101F4000657F1C85ED7E8F5D5F8F7C365480ED67ED +:101F5000D5CC2DC0FCC4C2AEDFDE0AF5CE18BB1F47 +:101F6000C5389294D4B55315A877C6DE9D8571C93E +:101F7000EE9D5B783AB9FB5184CB969DCD04A73397 +:101F800059DD5932A4B376BEC2CBF3BA1FC5F48C67 +:101F9000D4A779F9F0EE2C8303DDAA3F21387638F7 +:101FA000385F7B0CEC53E48FBF8F915BF654CED738 +:101FB0004FE6AA96543A97E572E351B0412CC0F728 +:101FC00066EFE97EB603E034FB87F1283158C7C7D6 +:101FD00033A6D0B91E0BFA510F4DE528CCE51BF105 +:101FE0006985F4823494698911B8DA077779701EAB +:101FF000B172E00FC96A338EAB7D1FF0C017E0DB12 +:102000009CEA117A497D9107FA9D35CBE6437F2EF4 +:1020100053BA47213E3D6CE5EB023AA0FDB2E1BE6A +:10202000C1BC8688F50C49E5F695256502F57BF778 +:102030007B93765BB85DC6EDEC6546D24B5A2BD5EB +:1020400034F407B456A6507CF4C1AF0C5CBFE93041 +:10205000D33A6E473E81FEE62246F9AD5B0B286E11 +:1020600056D36B5B1797A5219FB9C1509A8678D834 +:10207000536922FD1FF81AE763CB8C6D94D6F8DA0A +:1020800032A3E06B20AF088E9DC9FAFB97771899B1 +:102090001FF9D81D6D9C8FF5E64B904FFCA53319A9 +:1020A000F9D5D5E66F2F56D3908F69F34A5DDF4996 +:1020B000F348DDE94D44F893A0443D65EBB07D085D +:1020C000DFADEEE904FFD6CA27AD730B23F82BE78B +:1020D000A9D3108EB78B383C0D4FF007FD58F31E77 +:1020E000496D437F4AB3803BE82123503F5BE6D6EE +:1020F000F69311DD34A7723FE56C73D888F4F03F96 +:10210000FBF20FEFCB9A7F645F96ADFAE355F137A0 +:102110008DEE764861632AEED34B5C5FC47C94FB02 +:10212000135302DB5275FEEED93F5A9646F14062D8 +:102130003EF1F7BD50711B24CFDC7EB1E349687FCF +:10214000E68756D26B62F5D133EF5A9AD1DF155F2D +:10215000D8BD0CF7357155BC03F58B33C2BF76463D +:10216000AC7BF40F97BE41F71D520DB42EC0A334C3 +:10217000E177095A707E95A66FC6A3970C14FF6D80 +:102180008DC5A38E61028F42BB17A28CBDCD46FECA +:10219000D9D63C99F497D6FBE3C9CE68F576137C83 +:1021A0005BAFF7505C12E8391C8F669AA85F042079 +:1021B000D6FFB43A3D84F007BCE3E3CEB410FE6A28 +:1021C000F18D9FD6E4507CE30D066EC7F4E4C9A1FF +:1021D000683CEC49A8D4E1CFA7C2BFF529EA39830E +:1021E00074F98CEB3F20BF490FBBDAFC94F52ADD74 +:1021F0000FD1F050C3BB0FB601DE48A45E0C453AC8 +:10220000F8ADC01F8DDF2E7307DEC4FD8EE8C39CC2 +:10221000AEE63D3C9CDA6DB273FEBCD7CA1A2DC542 +:102220009171F782DD807205ECCB5388B77741C39B +:102230004390BE2B35F08B6E1C6F9586BF7E13E2EC +:10224000DB0261D7B2D5D1761BC631F5A60D7DD3A1 +:102250000B55EEFFED6337B3AFCCD1EDB85E125F37 +:10226000D863443CDF696541AB4E6EED42E72EAC6E +:102270006B17EC3BD2A556EFCF1FC7C978BFE0C4A0 +:102280001B2307E1F9CA9F996F10FA81EAA06FF446 +:102290007FD6C579C80F7583418EE25BCB712989E2 +:1022A00091FD3F77288DF003DBE17CEB72C1E64BBB +:1022B000447C51E750BBB5768FB62F547FD7308E14 +:1022C0004F1ABE3C2F097CE97992F8E7CF8731C4D9 +:1022D000FB4BC9BCFEA526431BE27D1D4208FB0F3C +:1022E000FE7D0DFA77CE29A1C52887833571541F4D +:1022F000FDA87A3B58D3A32FC1EF786FE11C0B2CBC +:10230000A673E36A5E5FD39B19A2404AE47C68B976 +:10231000CCCF0F757AF450B20B5FB416A31E5D2BB1 +:10232000EEED60EC39F98DB091CE8E41F88C2BA694 +:10233000EF7103ED43F768BFBDAF9DB35C3E3774EB +:10234000653F766D6FF9AE3FD23D243C47D2EF7FBB +:102350006D044FA4AF251C5F8737DE081FAA137ECC +:102360000AD2B371FEE58CEE23DA453ABEA22B8485 +:102370007C29F968F744B25FCE831D8DF50A593187 +:10238000FA3BC71E693B867A68627957166E5F9D75 +:10239000F0D36978A5CDF3FA235B0D681F6874A5A7 +:1023A000A3271A67414D3A9D537423B3BC1E33D7FC +:1023B000517BB45BF93D1C356D01CC69C7E21CBA99 +:1023C0003712AF70BEBFA065D8BEB5827E91EE3524 +:1023D0007B1734C3D148575BDDA5D3DCD0CF77D38F +:1023E0004A27E1978CA4EB0786A70617AD1EDABB38 +:1023F000DFE4275BF909D007F0A78AD7F252913EB4 +:10240000564A9E54A48F0F0D01F28B45FC3861FA99 +:10241000D60A3A5F28FC3F0B357FCF2E73549C239E +:10242000FA51F5E925C20FC4F69B23F18BE8D729B1 +:1024300067613BF4B70CFD47F8ED8C6EB79CF55027 +:10244000BBBA435F47C5E1B256BEBEBBC4FEEFB6E2 +:1024500072BF8F73759B81DB717C7D838A55EF061C +:10246000E49BAF19C92FF1072C22BEA58E467EFD35 +:10247000496A69A51BEAC5A1FD0BEBFE00E417EE56 +:102480002BE8C9774D477B714DA080E2151475F498 +:10249000F47EF07BF3616B0DE2C3036E39EA1CF945 +:1024A0003B6E23A5C93F84F4DF6426FA1F9D23F405 +:1024B0009A26F33EE433F3CD3CCDB6F0739FE5B7F7 +:1024C000DA02D8DF39E1BF6A72733DB9C9CDE32AB8 +:1024D000B5B4B63EED5C0FFD34FA7B670FF7D6E37B +:1024E000FE11A604289E6A8731645D40FCD14F7EB0 +:1024F000F23F7DCCF7FFC48979C437FE047C03CF5B +:1025000085E70BFFE99F9887F8652F7F6C3344C9F7 +:10251000C5F34FA40AB9C9EF1768E77ABDE5E787A5 +:102520006A7C3028933FD2AAC94D15E559F0F9616C +:1025300024FF99904BE78F6451FD0FF1BC0F407859 +:102540005E09EC5E40FE687E2E705EF31B2CB9388F +:1025500002F5A1F32C681E8CFCEE8899E4FF874CF1 +:10256000C4CD840CFB38FF0B65CCD0EDDB6171FF73 +:10257000EF3C0B2FA47A9D56F21B68E5E9669ECFCF +:10258000FE15F275FCEE45A3A87FC02AE9F30F9A69 +:10259000C29C9FFF8CE7FFCE1CF8855B8707B509BF +:1025A000E1A14EDBD5C00F181DE2C54B7651CEF927 +:1025B000C5F9C6613EF4CFF7CA91DD5C3E5D30F2ED +:1025C000F6C19F7B097E0F17733C3BDC66685B0797 +:1025D000553FF59B282EFABCF0B768705B77E1C9D0 +:1025E0008C6E5A3FE7FB3B8C1CEEC1368017EA5DD0 +:1025F000267526AD73B33989E40DF267F41B37F203 +:10260000F88D81F84EDDBE79740F7EC0F29ABFCD91 +:10261000A67E62CE012FD5FC6930BF7FE9A6C3A498 +:10262000E50E5116DB5E9347AE9E94FEE44C6FBD03 +:10263000F31B5760BDD871485F1ACDE52BF2B1BAD4 +:1026400098F345A64F1BFAA6FFE676F6C6C1625C74 +:10265000E358A6FD44D7FB0A633292B13CBAFF0FA0 +:102660008CC1043AB7BA20131F5AD63A6736AE3B2C +:102670003B39604C83FA87B76D1A4D70107831F68C +:10268000A342AED7B5F0F3880F8CEA6CA46F6779DC +:10269000D83457274F33D338DF9967E6F61486FFCF +:1026A000E9F994563EBA349A3F68DF8C34CE27EC71 +:1026B0005D5CAE3136C38CF2FE30FEEAD1D7E37AF0 +:1026C00065669A87FACB3ECFFD3BD9AB43EB31EE43 +:1026D000A1B673CE48045BF6EA30F1950F8C2C8CD2 +:1026E000FAFD07BB053EA33F03FA5D3886F7BBD072 +:1026F00000FA25E2AC389F5C22A0B9D00C7A28F011 +:10270000F117F68F37D8A1DF257B251FC64D8D1514 +:102710007C1EF5976C943BE2FCBA86756DEC86FEE8 +:10272000173633CB188A7308193208CE8CEED5CE03 +:102730003377933F91FD442A42FE00F2AA2101DA49 +:102740002D5143E4778C3D3F64FAF33FDC0F3C9717 +:10275000D29DDF2C6B69A2F32F4D0EA2BC62317AA1 +:102760006B341E05FB95B39A1CD2E42DE8D965693C +:102770007C9FA2CE6D96B17A7E2E25E45DEFB842A5 +:102780005E7E68E0F279A1792B7DABD3BCB44F4B70 +:10279000583797B7203F91EF5F697FAB059E68FB85 +:1027A0005A0B0CF246E87F26EEB74E0FAA5DCDC25B +:1027B000CB46F0AF7D04C193EB0116AE07E037EED8 +:1027C0002AF481583D2056EEC7CAFB541397EF1ADE +:1027D0001EE8FDFAA8DF8C5D1D32E07EBEBA46A57C +:1027E000F3F95596841118B7F5A5957F83A59CAE8E +:1027F0008267AC641FDC67F0ED7A13507FE2269E9F +:10280000CFFE239EF8E8FA262E1FD6AFE5F2778B8F +:10281000A08F55E2BB57D0C1511C270FEF0F54D0EA +:1028200078132D450AD2EF64C767831541C73680F8 +:10283000F32481D7CBCDE18D688F1E4B5BF6B85367 +:10284000DC377740F944FC05F23F31067E8C0ECE32 +:1028500009CCD3807AF66E736053DA2854677DF31F +:10286000574A1877B47C1CD2958DA98D989FCAD4ED +:10287000A6348A03CB74503C94C0376D5E65AC8738 +:10288000CE97265ACEDE8B72529B67ECBC6A2D81A6 +:10289000C73154ED58DA7BB3593FF38279ECC271FA +:1028A000EE8DF336B0E879EC16F3D89336AAEF3C08 +:1028B0002C48EF068C03B5539C952EDEAF9DE69D0C +:1028C0002947C5CD6AF17E1ABD1CFB84E5A0DDC693 +:1028D0001AD1378870E1F83AC1663E8BF87FD4C8C8 +:1028E0000E213DADB7B37CD4A38FB138DF3A2F753D +:1028F00093EB4AA1A953FD638CD353F0B495F657DB +:10290000B2F0737EC6021EB4778E59CD2AF1598F6C +:10291000272A5E4EE3C3C7DECB22BBFFA8D56C439C +:102920003C82FA947FF4BDF8500E8EE7D2C5C3E521 +:10293000F4C53B5435CF239FDB584FEF18B85927C8 +:10294000BDEB705AD029635D12CE2FF31EE6A1793C +:102950008CF159B81F9E9FD7978975C4CEAFCC62B2 +:10296000A3F84D66337EDCADE34FAC65A7AA87D7ED +:102970005184E3A0083C35F8C5CEBBCFFA7701DC23 +:1029800047EBE06E817623E89C8E6524F6D39E6546 +:102990003A3FBC9687F2239FD8951AE8C67DFED2AF +:1029A00058CFE3BD2A2D24F7122B7AE8FED999C817 +:1029B0007B0AB4CE636258397E5C26C643FD55D08F +:1029C00059ECBCB4F5C4AE33160EDA7CAFB4CEE32A +:1029D0005A7FB1EB750CD03E669DA34DFEFF42FCC5 +:1029E0003F2377DB89DF8A7BAE75E23C103112FB37 +:1029F0009D2BFA9DDB2D51BF7B58CF4343911F1D6B +:102A00003138502ECD3D620853FC6CE304B53B6A6F +:102A10003C8EFF5A7BB6AB2701F143EBE7D39AFF1D +:102A20004CC038E581DA3BD225A2A7A333BFA078FA +:102A30008D3D47DAE93C7A4725601ED9A53E3A4FDD +:102A4000FB2783FF966CA8F77E8D4CF8FD7E4D1C0E +:102A5000C5CF6AFCF435E41F7957E6AB8CD57F8788 +:102A6000E36FFD75F89DF8FD399FBBE87DC0176FDA +:102A70007E0364FFC44973EEC1F49C7F6EBDD9062A +:102A8000C431B14CE2EF01EED9FD10C63D4FBC6D33 +:102A9000CE3DC9509E9879D3F75C587E8724CECB23 +:102AA000367D0FE3A426DE2591F2D5BE17EAD3B911 +:102AB00042C088E777B7E23B378514CFA0EAE3C48A +:102AC00046A6F338F991E91C9F4AD23D942610217D +:102AD000DFAFE6710F601F19B99F2460C4799FBCF6 +:102AE00011B8E620EC3790D5A2D3B74E4D36DFA90A +:102AF00016F27A7ABFF3A47429CAEF16AB674D4C6D +:102B0000E7F2553BFFC0F6B70CD797F3FBEE937097 +:102B10007ED08FCDC3E530CEAB6A38FFEAF5DE5309 +:102B200033C74F4032BC251FF832433C0CDC9C8E2F +:102B30007C33ED133BD723BB87E33ACE18BB79DC5C +:102B40009093FB81919F1C8686132A7C4FDC07BFE4 +:102B5000DF97CEDFF53965A4B743D8B104735B03C3 +:102B60002CE584E0AFF8D3ACC90B818FF81E8C261E +:102B70001F7EE9DDA9A07C99C23A15C4FF69AC8B20 +:102B8000BEDF633DF4F5338711BFD3998FBE9F8EAF +:102B9000EF1E4D7E04217740BECCC7797F92C5E5FC +:102BA0005F050B1C417DEE6D1C1FF93F0B13BDF63D +:102BB000F2C118FE3E201FC4E9A544CEBD343E2C10 +:102BC0000580FF63FD8D41E2C7A92C700F8E9FC168 +:102BD000C294CE027E4CFE9A5E3E1C4DEFBDE71FB6 +:102BE00005129D4FEF8C4F207BF36481B44FBC1FC7 +:102BF00066C07B72042F6834295F9A8376CF4E01BA +:102C0000CF4915A9F3303D69D6C62E9CC7A4FC3721 +:102C10006FC7F440707BD1E89F908CFB7733DFBFA8 +:102C200077D6D4101DFAC20E7A47634AA193E20503 +:102C30008B4FF88E617A5A094F17767695E2BB1A58 +:102C4000DF1BC7D3230EF51CC5B4BF9CA7AF3B1237 +:102C500096313D35DF5B8C69E72C17C539B32A7196 +:102C60005E10B3CF9359B0EA66C48BDFE418517C91 +:102C700087D287129E5E3F5F6213A1DDF555D29326 +:102C8000924E3F60C1A70CC807ABC53E3903FC5C40 +:102C9000B73A5069C4FB158007F7E2FA60FF9F401E +:102CA000F86BF8706FDC9B672480DB41110F1B9C75 +:102CB000CEE10CF298E05C15E07E55FCA94A41FD9E +:102CC00048FB7110DFD5F8FA2949B49FC3DF5FF9DB +:102CD000DD3B207A019FCAFDDE7246F21F140D3CD7 +:102CE000C70998E9DCA67CD66D53E85DB7C0A62E6F +:102CF0008A8B76E8E2DA119F3E3045A58F09FC7495 +:102D00005749E4BF62FAB87603C6BFF0FBBA6E1B40 +:102D1000D7375203A6A83879B413A2EA33F5583A44 +:102D2000E9030AC59FE48BF813F8358CF193F0554D +:102D300031FED2987E9EFCFEEF582507C62DDF108F +:102D4000F257123E0B3BEA3601EF172CDC5F506561 +:102D50009342F86B957FEB9DB8DE84B76D1EF487C8 +:102D6000221E9B4A22F061420E3F2DE4D6B56E66CC +:102D7000C926392F05D12F71ED0BE9DC1E75F3BB88 +:102D8000F3D7ACF4905E54354B620EC49BE6387AB0 +:102D9000EF01E6F1F5D7BA7BA4B7CD12F3585D1277 +:102DA000421706AB192CEBE5EFC1622D9EC66344BA +:102DB000E63DDD1F6061DC1737F3A13FFC3755B2FC +:102DC0006A71D1E30EE4D79567713C98629328FE4F +:102DD000BBF4723C0B8FC4FD0E352462BD774C846E +:102DE000BFC95573EE447EA5F1B15271CEC3AA7925 +:102DF000DC7616E08B9FE2242545D1F18958FE82CE +:102E00008E189C6F5A6F1ABA49417EC1C81FCE2CCA +:102E1000DD0477BBA63709FB4A7BEFEB866EE73C08 +:102E2000DC9FD1364EE7F8240BFACB2D19393C6ED6 +:102E3000A9FA976F63BEE4E17872EA13361AE77B6A +:102E40006A80777DED195C8EBDF2DEA22CB4234F33 +:102E5000D9FD59683FA66778283FB7CA1C9661BC60 +:102E6000536901CA3F25E2BBB1FE594C3BFD594EA7 +:102E7000AAEFA5F1B17E228E9B15A0FC5EF962D56A +:102E8000DA0DCBC47647BD9E598807A70A52253C68 +:102E900077CB14F3C8CD87F1747E9FDCEA4D5D38A3 +:102EA0003ED821EC7DBAE7158EE2DFE81EB1170FA0 +:102EB000CCB76F403F0DC68DC17E617CD843265F85 +:102EC000A301E8A3B43C24FCBAD1FC38F5E3960D89 +:102ED000985BCD7CE52E1EE72A37A644F8EFEF0479 +:102EE0009DEED4F84191E0DB8B0691DFEB37737AEE +:102EF000F97614BF9B14E07C7B925FE3D79BBA709A +:102F00007F6E66DD0AF6FB7DBC2A0FE355325F5506 +:102F1000B1847CDA43F815B472FE3929C0F7BB9C42 +:102F2000F9899F57FCB6611A8A9319CCD3AF1CD488 +:102F3000E4DFAB8B1E273BF2DBF277E0A3DFCF1899 +:102F4000D597CF1776F2F49442CEE781CFF833923B +:102F500023F2E86AE5AB34EB556E37C5EC57C4BED7 +:102F6000E1F2342247791C57964D0EADA3CEEAA567 +:102F7000FEE4E96F237A46B4BD739572BE777CC6D2 +:102F8000FD72191A1932C981766CA6683FDAC282BD +:102F9000F128FFAB84FD27EC3190FF3FC82066C5C8 +:102FA000ED3037DA61800FED29458477B1F32D706C +:102FB000ABAB10CE130C361FF2A93FFD86BF6339B1 +:102FC000599D3901E3C5A6B0C006FDFDAD6160574E +:102FD000283ABE5F10B2804D1C495FBBDF11951EC1 +:102FE000DEE98EAA7FDD214F547911080D7DF9C8E5 +:102FF00013BEA8F4A8AE3151F5BFF3B61A95BEBE04 +:10300000BB22AAFE0DE7FD51E9A12C24E3626FEC7F +:10301000A98E6AF727164A74905C57BBF253E8FEF4 +:1030200021FDDC743910D57EB8B827369E2D8E6A06 +:10303000CF9EE3F750EBE11FEEDB3531F750878A87 +:1030400077556FAD3246EEABD27C9AC9DF3634A6E7 +:103050007EECBDB06732EC2EDC27A0E91294A77D90 +:10306000F687F17B8165FB5928E4C5F5505D76CD87 +:103070006EFEBE5EECBAB47B63CCF08C82F5FEE2F1 +:1030800091183E29607647EFA7D513BD9FF1F9D17E +:10309000FB69F745EFE7A031D1FBE954A3F733A96A +:1030A000227A3F93FDD1FB995A1DBD9F6981E8FDAE +:1030B000CCA889DECFACFAE87DCC5E15BD5FDE60C2 +:1030C0004D54F990C6FA687C14FB99D7B22AAA9D90 +:1030D000B69F41F8F74DFB5966DB2AA3BD5FF1446B +:1030E000F4BDE4ABDDD73FC6ECEBD5DEF7033EF72E +:1030F00009D27519F337244ABC3FBD1DF3BA900BB2 +:10310000C7D26E2E4FF4F0F228BBA66013D9359AC1 +:103110003E83662ED2C55416267EDE570E78284E84 +:103120006A06FADD20BDDC10DE88FAC117695C9FF3 +:1031300005FE2C65921F6D2BB59F82768E14F16370 +:10314000F5C787F1BCE26AF95FAF5FEB7BF5E45F3F +:10315000D2FC4C03FA973C5911BE064CB36C5599FE +:103160001FEF317E29CE957AACDCFF5C76FF78CA02 +:103170002FB3AC203F4EE91BFC5DFC529B44F13B5E +:10318000651566D22F7BEDA20B32C9D793959E2C85 +:103190008CE7393939B5DFB8B0A3F6DBDEAB87266B +:1031A0006522BEF764116F7FD2E90D61FDA3125352 +:1031B00083284F93B9BC3E6937A838DE4989DFEBD5 +:1031C0003D49BE37F8CEF150FDDEF3B5652CEA7C03 +:1031D000ED70BD439CAF7138F4FC8069711A6417BF +:1031E0001FB6E588F3C9B3A457F75CCFE8FDCB0B56 +:1031F000C6CE30DD83D9EEA57345420BECAF859F7B +:10320000D74D10F7990F2B2069719E85FC7EE861E0 +:1032100011EF734AEC2BF9D9B19F66BB66C7F07901 +:10322000B51490FE1C2BE70E33CF5ABA6FBA9A89A9 +:10323000B8ADCED32BB17EF5507A0799E6A1D3571E +:103240000FB3CE0FB69550BC07D53FE9ECFCFC247C +:10325000C265F135BE208BE0876BC4D447EFF1A087 +:10326000FDB389CED1CAABF8FDEF72C75A05E94963 +:10327000AAE6F8134B4F5BDD816AC4DB56EF53457A +:103280002BA1AF0A6F8715EB97093FF5EBBD767A57 +:10329000347D1D4B7B60EFCA7EE8AA571F622DF478 +:1032A000FD07E86929A7A7366AAFD99D40F7B59908 +:1032B000A322EB04006761FCDE25A791F138A92069 +:1032C000D3EB1903D195069F0A47D1712C8E854BFC +:1032D0007D4A6075A6EE5CA422D177BADE85FE3504 +:1032E000B32F48EB8ED61B4E0E00A73E7C67F23004 +:1032F000F2E794558DA7754D6041FA4E6621E59B26 +:10330000F9CF80FE95169CA7A65F4E177C07E0B408 +:103310003533B92FDFD1F4B15EB8C4DA4357EB6768 +:10332000E9D5B3A2F5423606E810F075BDC68F6246 +:10333000E03451DC4F7FC72189F7D8D5696929B8B6 +:103340006EFEF34E23A79F72E04F28B7A70AF9C479 +:103350000AB9DEE0837F38AFBF305BC0827EA9DC74 +:10336000687DA254DC432F8F7917A3D74E14F7D76B +:103370004B63CA63E1A0AD33565E69769CF67EF37B +:1033800040EB3E9A29E49A870DFB1ACA416691BE2A +:10339000D2F55B03F9C95F49BE6DFE56C0A7618FC8 +:1033A0005F43EFBDBC9272C73D6F62FAB1A1A4C783 +:1033B0004F4C5FBC7705A49FDC5348E59ADC7B2328 +:1033C00093FB21CB656901FAB1F24BDEB9DD0BF35A +:1033D000396E657762DACD6A5A2B611C77614EF1DE +:1033E0007AE4072646F5A65EB76CA4FE5CF974265F +:1033F000F71B4F15F1AA59F8445B317D15F443646E +:10340000B9438A03FA3589FB3A190A6BC077FE4C37 +:10341000EE169B03E11BC7FB2DCF0967DE8DF6C8B7 +:10342000411BBDCF7CAD2FFEEC109C8F24D17CAE18 +:10343000CD97C2F87E7279A2A85F1ACE7D04EB3FC9 +:103440006D2A463E7CADEFE60B58BF5CBC3B9AA0B4 +:10345000068C05E82F10FE8E630ADF8F2F322DB405 +:10346000EE176CE38D784FFE563FF737B983DD0DCD +:1034700049B8DEEAF125B85E6D7D7FC9E4F13955C2 +:103480006378BD2AFF1CE37CDDFA6F557BE85D9F06 +:103490005BABCF127FFC5D0CFD56E22F72847EFD8C +:1034A000F80BE0C99B7702FD225F99E5257A9CC164 +:1034B00054FADEC202C4CFAA590BA56F679DF49DD2 +:1034C000C5BA38DD9EEDA5DB6C570ED1AD394B4743 +:1034D000B7B731F652B7B72FBD0EC4BF80BEED5996 +:1034E000A3FAD2D740FCBAAC7AC5DE95FDD8C16547 +:1034F0007943683D11BEDD497CE7DBFA79B575C0DB +:10350000BA72B29223FA0F0339807E6D98EF103EA3 +:10351000DFE8F51DED871FE9F5A26FAB0FA1FF05F1 +:10352000F580AC7AC6EDD2183DE81BCE2DC7D2FC93 +:10353000AE706ED9E71C34457DD4931C3917A87B37 +:10354000DB62F160DC74899FE5601C40F2F857BCD7 +:10355000D06F9D38BF88EF626A1BE43F2AE25B0FA1 +:10356000783DD4AFDBC4E325F01DAC221BC6097443 +:1035700085299E2A19F4154FE47CFF513BB4C3F70B +:10358000ABBD9C7E7BDB5B58439CAE7DE91D9CCF35 +:103590007EF1A089DE01614A201BF59894DFF37764 +:1035A00076CF3D64A2B8B621264E772E2D6E9D6D46 +:1035B000E47F6720CBCBCFE7A4A36E74EA04D9667F +:1035C000FA6A718FE7C47D962F9C3E7A0FF38B07C2 +:1035D0005324D4D3CE29EAABD530EE90479CD23ACF +:1035E00016A95F95E5E1ED3CEA6727705D95361E0B +:1035F00047C60245F45E8EA1648A05CFB30DAB7B4E +:103600004E40FB655936FAFB55E5D9A74FE17B41A2 +:10361000179E33D21B888B3B660C0A63334575FBC0 +:1036200087F795DB8B43C6283B64E9FEE8F4B2CE0E +:10363000E8745D8C1C88E5F73FCAEAE5E33EE4E305 +:10364000576B9FA892BA16E96089D877B3B9FE7C08 +:103650001BACDBFC707EF15AC46BD6F332BED19D3D +:10366000F288B798E2BFB2385FF767F99BB09D392F +:10367000BB7004DA55A5D9D3E6D03EEEB6D2DF4D05 +:10368000F9021F52C1F44B5C3EB60EE6E5AD7BCCB1 +:103690001E49C8D351A3316E86D34FDD2E2E0FE1C4 +:1036A000C7C2DF93512DB88FAD26D59486EDFE8924 +:1036B000F9703E35BB16517C572DEBA278E95F8B34 +:1036C000FDAA333C63B2C0AFAD89EE52F4D3B6FE6F +:1036D00054A2773A95BF2B7EC41F0CAFA0FB0F16E8 +:1036E000D5817FF763D92127BD8FD091C5CFC39AEC +:1036F000C645DF67B03C57194457E64D7F2FA77783 +:103700008216ADBA83DE57E9BDCF2CE2DF16DD3F6E +:1037100093F28FEDFE3209FBFDF04199FCE11F3E73 +:103720003ABE0BFF8ECCA2669BC7D2DF7A593DFD15 +:103730003D920689DFB3FE84D5FFFA7E00D91F458E +:103740003C1C73D427103D7BEA13F4F741DAF71AD7 +:10375000E81DA83FEE1D49EFC8B64E9F320AE5F0BE +:103760004DCE127A274A2BD7F47B2571CC9348474C +:1037700037FDDD407450FEF0B838F4D72A20C7304A +:10378000BED4D35C4AF1964BFC714E0F31331E47C9 +:10379000DEFEA085F483BAE689B42F35CD3504F773 +:1037A0002133D265ECB7FD198939705D8671716B73 +:1037B000A17EDDC3E4AE61ED4CA9E8CF5FBC30CBA8 +:1037C00040FB747C7A9C2F0CF52F087FC8F86C3E68 +:1037D0009F89867153D0AE5AF6A04C719FCB1E3C88 +:1037E0009942EF123C61A0777F40A34A4778C4D248 +:1037F0008D36BF58FA3143BFD83E968EDA83FC7DB2 +:10380000F1587AC29FB0EE7CFC447331CD2B96CE3A +:10381000E636E7D07B09AC91D3DB05A007D23FAFFA +:103820009EDE3E45FEADD11BCB9C1E1547ADD1970C +:1038300096D6F8B9765E6BF131B5C346F78C55BCB8 +:1038400047ED1ACCCF6B5D83F93BBCCA5F57EEFFE7 +:1038500015CC7F6F56E02BA4CF6CA616217E793F46 +:1038600067F8FC019D4BD379732EBFEFB2C3E89785 +:10387000492F5402FFFA2BC83736D78C443A778A3F +:10388000FEFC5901F360E867FEEAC0672F33C4B756 +:103890006B88DEE75FAE92F1BCDBD6AADDAFF497B2 +:1038A0005A5DF4F7074A101F353E9D07F36DEBE7AD +:1038B0001CBA7830D77BF25C7EEA27219BBF4FD5BC +:1038C0009ACCE96BCF2A7EEEAFE95709620FBD1E95 +:1038D000FEBE97650C87C74AB7C18371F2300EE50B +:1038E0007BC7C8C149F0B58DE1F732E34BC2F4DEC6 +:1038F000711EE6031E797D8CDE41D1CAA1FE59CC32 +:103900009799C56383319AE137C487BC7CFE7E9961 +:10391000B795E76BFBFFA71689E8136C5007FE1DF0 +:10392000118CBF277959C2E5E54AB7C9A37F5FE388 +:10393000BB69E3870F46F9A4AAB92EEDDD52F8F969 +:103940002F11BF085C8AE2D7EE2A6401BCD7A6AD6E +:10395000676CABBA11F130166EF3C53C1FC4790227 +:10396000AA8CF5413A7FE0F939067BA2F0499B9F8A +:1039700069B94D417A7E14F511D87F53BADB86744C +:1039800004EBA03826C6E27C78CEA5C55964A5E72D +:10399000537D2DDEC215075FD01F807D2A888726C4 +:1039A0009995E33D8EFB643F9DB7DD6768A17EBFBF +:1039B00094B9DE93E9F01F580870CD301C285A01E5 +:1039C000F39B6D51FD83494FF1D0FDDE7303BC1BAA +:1039D0003FDB32FE16825F6374FC49CA7AC18717E7 +:1039E000CBC487B53894D8B8933D728B05C70F0EFA +:1039F000E6E74CCCC2EF61ED18CBE8EF50AEBF9ECE +:103A0000DB85DAFED489FD918E48B42F2C266E46D4 +:103A10008BAB8917F1C1DAB8730B95B0B99FF1F18F +:103A2000473F6FAD7EFCEE2E2FCE6BA0767B41EF35 +:103A3000C2F853B6D1E7C17A1F7A02AB100E19EB68 +:103A4000E778783C659717E1368D79F64A43302E52 +:103A5000CC9389EFB74DB3FCF26DEC7F9A857592EC +:103A60009EEA8BB593A3F5F0E5C2DFD62BD75EE2D5 +:103A7000FEB6E59ABFED08F7B7D5097F5BEC7DB9D7 +:103A8000BA43E3D38C905EEE3749E87FBB2039E23E +:103A9000707E07BF2AA37B74DA3D318FF0AFB51675 +:103AA000753FF623945B8B0BC93F7149DC2F685D32 +:103AB0005B9A86C431E0FDCB0D72DB3EAFEEFEE5D6 +:103AC00006799F883F17F7DE1C71F4F765C43E66E0 +:103AD0000B78B789FB6F6DC21F26ADE6F73CDA6243 +:103AE000FC5BF1857C9CC40699DE2708E141EA2055 +:103AF000ACC7B8DFCC6611F1398E38FE6E01BFC796 +:103B0000943286C3B64DBB3727F0438814D6EA54A7 +:103B1000D3F0FEBFBDD0EFB5E11B63594FFC3A2E89 +:103B2000F95BDCCF67DF6DF9E6FBF95BFC586EC132 +:103B3000D826518E621CE445EFDF0FC1B8E54DF683 +:103B400048B9027A95A5414B57FA27E4C27A2591E4 +:103B50000E2E7E18E38A1EB6B2A8F1F4F35362FA71 +:103B6000377A284E48B47FEC7B13147A1F43A4FFA6 +:103B7000F3217C8FE06163747F84EAA23D26B4F177 +:103B8000E4B68296E67111B90572EC7788F79E1E4D +:103B90004729FD990721DFE21D3388991A2F571114 +:103BA0007F37BAB8FD8C3101F8B45E5D6ECE3E3A17 +:103BB000E7573C145F61F57A487F3D3B98DB232B48 +:103BC0004C5CDE28472AE9495923F3EDFB9597E43D +:103BD000DD1F902FA5644F7B15F5134DDE811EBFB1 +:103BE000F1FBD06FD376E01BD08FA555C4318BFD90 +:103BF00036F79EBB07994CF5FCA390BFA8D9814F1F +:103C000007EBEE61E4B57A4CD89FF6774C5A17E78C +:103C1000C8924E3E2AD95C1FCDCBE7F229AF35D4EE +:103C20009803FD29CE2A92AB5ABD1C47AE8CEBCF30 +:103C3000C914720EE428EA9F39AD013AF2CF51025D +:103C40003371DD39D50B4DA87F2BD95CFF2A690C68 +:103C500059C7E35ED6C8F49EFFC7423E181DF3491C +:103C60003F37565B6C88BC7BFC4F5AB1FFBCFC7D78 +:103C7000343E7328F42E1753F8DF2D7C2C5119B5E0 +:103C800059379FCD0EA502E731DA105841F10D49A1 +:103C90006355A497ACC42915BE04CEF7EFB6E17DF9 +:103CA000E0FEDF2B9DEDE1FBD220F983DF477A2B8D +:103CB00002DD9C45CAB3C53B0E19D9FCFE9127E82D +:103CC000203D7FDCE77ED27F33B2155AC72F94EEBA +:103CD00078D4EFF298BA622EAED36FF370BF792723 +:103CE000D9A9AE351EBAC76271756FB90ECB7DFC0E +:103CF000EF4A6AFAF2A59FA7521CCE83D981FCEC49 +:103D000051B89EEE4770DFD916FEF71A2EFDDC4C37 +:103D10007CC2F5A3428A236972753F52C1E8FD0354 +:103D2000B2932DAEB06508C2F1B2EC93104F619B17 +:103D3000F05D1F9B8DBF375402744AF700DC12C53B +:103D4000A9D87C3D6F61FF533C6FF9701D65E27D22 +:103D5000A4587D8198B376FEC3707D41F6A1855C41 +:103D60003F0D5F2745F488094C257FB8A65FECC05E +:103D7000EB8AD074876CA1F389922E0E8729AB5FF2 +:103D8000A6F1ECBE4E15FDD2F3D19F09E99CFCE9EA +:103D9000741F61410BA7A7B9020F9902FA37F0D738 +:103DA0008AEC78112FDC405F926BB89E66139D2BD6 +:103DB000E4347A4DFAF7B5B4F75DE6B6F0F7704C37 +:103DC000E29E584E89882B645BA87C46B624FA5D37 +:103DD00027BEDAFB227CDCDE77878A38BFBE2B77F2 +:103DE0003ABDF39358724D31CEDBAD300BC6B32CD8 +:103DF00016FDC4BE3BA4CDA7A4A2258DE2847ADF24 +:103E00001DE27260E077877A26E460F9640FFDFDB9 +:103E1000ADE5D99EFFB7DE1F02BAC0F787D664F3BF +:103E20007B41BDEF0FF9A2EF87C6BE3BB4398DFBD6 +:103E3000EFF7B0D02E7CAF23986F72205CA7E5BF60 +:103E4000FA8DFA437DCA8C468CCFBD34F3F219BC8F +:103E50007BBB7D6DE54CBA17379CDF7B67C103BE2A +:103E600019241FA3F58CC8FDBE2174FF997C2A6913 +:103E7000FDDCEB2B5242FAFBCBB68E547EDF7D800D +:103E80007B7D36E780F7FAC224B7C5BD3E940BD8D8 +:103E90007F6D91D28674ABBDE36913F7CED84BFC2E +:103EA0005CCCD6C6F5044D1FFAF4252BF9E76CA0BF +:103EB000F7A05EC27ECEEF675C127654D0A7ECE32B +:103EC000E769AA7B86CE4E6F107CCE26851752FFFF +:103ED00007FEDBEFF71DCED6C9953EF7FB06842320 +:103EE0008F37EC79D01E753E69DB3D2CFA5D81265B +:103EF0007E4FFCFD7CFE771B237A56D8A17F5FC0E6 +:103F000066E4EF53CC13F7F334F8CDF39BE8EF7985 +:103F1000D824FE0E0653C20EFD7DB079C5F3E9BC70 +:103F200064207B799EB8A737AF31FA5ED3EF50B1EA +:103F30004B46FFD278BA6774EFB64AF29F2CC4FBA7 +:103F40004943D0BFD222EE1B45FC48F82EF112D6D1 +:103F500049F99E4625E886F57ADE8E0FA1C801ED67 +:103F6000C0C3BE83FA9A9FF8A03753F685B199244F +:103F70004BA8A778D0EB9C0AD36F52084E6D8D5298 +:103F800008E34B3735C8E23C95F3F16083AC623F00 +:103F9000309E1BF5F22F85BC1DE411F22AE6EF7F5F +:103FA00069FD3718393F5CCBE430A665897F37A1BE +:103FB0003CEDC71ED2FA6B30D65B50DEF764C9E425 +:103FC000776D3006EA70DF1ADE899751DE37D8EB5D +:103FD0001B2B7839D1DA17D67005F93F8BF8DF271C +:103FE00025F283F9FF6FAFD51F430080000000006A +:103FF0001F8B080000000000000BCD7D097C54D50C +:10400000D5F87DB327990993909540329390050890 +:10401000C9244044409C2484468D74D80414710201 +:1040200001B20341DB68C14C4C80A0E133D4284885 +:1040300051266C6A051B10904AB4C3A6B46A8DADB4 +:10404000B6B8F125A82802128356DADAFA3FE7DC7F +:10405000FB26EF0DA4D0DFF7EFEFFB62EDF52EEFBF +:104060002EE79E73EED9EE9DC4F783DA1E9618BB39 +:1040700090A0616C0C630B9A8C8C9918FDFD00FF6D +:104080002E6C51E7176F54E7CBBCEAFC02E6FE55F5 +:104090008C96B18A67D5E51712ACBC7F6633B02425 +:1040A000C61AF5B63FD84733D6B356C7B6DA18ABFB +:1040B0001FAC71B21B18D30CE16962D8A4D90CEA09 +:1040C00059988125C3FC9A75F0DF11903645B47973 +:1040D00020DF18C666B79BFFE7F30D9C67B42D85FC +:1040E000E609FDD3788D6B252F8E077F4E9CCF82FE +:1040F0005DC66D0FDB21B5D842711DE7A49E342D3E +:10410000947BD6596C3BA81DAC338AB1F956DEE7D7 +:10411000279263A70FDA6B1EDDBD3605BF7F449B78 +:104120000D23B2FCE96627F6FFF29766AF11BE2BAE +:104130000598C58643DEF1EE6B581FB82EF8B3E93B +:1041400072A05FFC2FD8AAF911CC199401FFAD6CB5 +:104150009788FF6F602C4DE4A1CF8448D7CDB64837 +:10416000E8370F0A60FC973719BD0D30DEE39A4F30 +:10417000F6BC8EF0DF13E440F857AFE8D9C9E0FB96 +:104180006F22DC93B1FDF9FB3F982C4139D3F1EF5D +:104190002EBE12BD15F16474A3B1AF7FFCBF66459E +:1041A0001EC76F8245DC0869ABBABC7473C077EC7C +:1041B0009F46E53C196B21B83F61700FB3C2BE6EDC +:1041C00072E5E4E07C9ED0B71432A85F1FE39E8DB9 +:1041D000F3FAB4C0F59AC64EDB91E21AC9D8ABDF48 +:1041E0002F48D2011C3D274D8E1D50FEAAAE2B2418 +:1041F0002C9DB1F404983CB48F31314F70382FC7E7 +:104200007E0D0FB17B5C90FE807F37F7A50B6C12A3 +:104210008DBFDCE60C4F80947D0FB302786B11B636 +:10422000D095C9BCD7A985715887644D86A4DAC6D4 +:10423000BA17873266EE909C89009F2543355E0948 +:10424000C6AF366BBA6F80F264B386F0850DD57950 +:1042500093B1BC957916C37EE93AEA3DD81FB4F311 +:10426000DC00F965063E4F791ED507A73237CC2F03 +:1042700024C2A55908E3E94B3504A327F42EEAEF3D +:104280000968EB81FE46C3FE7BCD58E3A57947194B +:104290005C7941501F15E5737870DF984BE3B230BD +:1042A000B6D2E6DC6883FACFB02816E830DA598750 +:1042B00070FCF67CB046CA64ECC4BBD30774413FC3 +:1042C000DF32D7002BC0ED8CD6FD132BE0F562E674 +:1042D0003120DCCB989752D63A90F675918EF974CE +:1042E00000CF45339CEF4B199CBE7C01F4A5CC5705 +:1042F000B24EA2770674E653E043A5CE7758023853 +:104300005599982F04D376F577D5AC87BE5B72F0BC +:1043100007A34F45071C4FA2B535594B71FD4EE71A +:10432000D008D827336FC2FE1ECBE1293998CF02BF +:10433000F3BB279DB94D89D7DFEEACAD254A03EB22 +:104340006D92F8F893B566A709E05AB54E43740A22 +:104350001D158D817E4A19C78B25B6C96719CC3FBB +:1043600002C80EE9D97440EB7DC84EED1D3EC8571A +:10437000BD627160D3525B6911CB40F8E84F772979 +:10438000D653CEF64CB6129C5C03904F543CABAE69 +:10439000AF6A57E79730DDE92E198ED0BEF6A3B687 +:1043A000F1C71474D561B3449C194173B3FF807095 +:1043B000D7CE1DE0BE0ABECBE97775DEF1C7F4B0FB +:1043C0002AC97904F1A25CC79CEDE957B61B3F846A +:1043D000D3C751F3A5816E457D5E3AA033E473F2F5 +:1043E000AE4E579D4857D06F4827E02BB433E93C79 +:1043F0002C4CF17D7FDFBD6FD3D077470DBCFE51D4 +:104400004B8813E11763604DA6ECBE76311AD6686F +:10441000027C7426B83EC4F99B6C3603CE6F9BDEDB +:10442000C334C8172299630780E1293DF30441BBD7 +:1044300038AD86F6334E6BDA8A7CF08FF17C5DD72F +:10444000C28F90F41E3DC2314EBB87F06E888679D4 +:1044500018F467D0C0B980FD86301604F3DA1CC4A6 +:104460003C381FA86712AF672C1BBF633E09D26898 +:10447000D8CB10287F14CF17E4BF23CDDEAD308515 +:104480005828473E0510EB92A0FC911C930DF96D46 +:10449000B486CFBBBFFD8BD6318F399C5266C11419 +:1044A000966CF917ED657E116DE4F38A0E59DA8684 +:1044B000708ABE272DBB01F029C8EED2D92309CFBF +:1044C00033907FC870A916F8EE87CB41C96709ED14 +:1044D000A39B1098B30EF95D8B91F81DA12CE56399 +:1044E000BD782E9EC23CF08FAA185718EF5F9CA78C +:1044F0008F8E24F983D50E24FEB4C602FB9D4E7028 +:1045000054EDB34CF79B25BEDF39799D747EF6AC34 +:10451000640CE127B74B1078166F97547C7585C0F3 +:10452000C37BECCE043BF473FE7D93890D80298E12 +:10453000E6745BED3213FF66ACCBF033284B3828C2 +:10454000591F463E94A6A1FE360F710FC379AFF9ED +:10455000C0ECD1C2770FA79D5E1D87FC39C2918345 +:10456000EC3109CB819FBA86B84762FF252BDC5F0F +:104570001F46B6396D7806E263CE0FF9AB0BF97CB6 +:10458000AD5B7148235BAAA4B3DBED1CDFE5F456F9 +:104590003BC7CBF3C01573615E0911CE3988170C88 +:1045A000CE8364D882105BA713F3D5FBB870429317 +:1045B000C0F3E9678309DED5FB72B38E63BE3D2885 +:1045C0000BDBE77C6826789FBF7F90570BF5EB12DB +:1045D000DC79B81ECBE81E09E7777ECF2D59980607 +:1045E000D2818CFFD14037D87FF45D26921F643C86 +:1045F00078420FFB9FD4471FA3ED369A7782389FEE +:104600001256B8D842735FDE1CC1F707CA3538DED0 +:10461000725BC16884D768BB8EBEAB89D1DA3E1DA0 +:1046200088A8667D88D9AFC45F3B50B819F8DD23F0 +:104630002004FD804BF7405E21FFF4B6488508D783 +:104640001A10C46AB3FBE6237F5F1363A0FE432EF8 +:10465000EB083F13AD06DA774B93C0D7158CF07794 +:10466000424F67FE0058EFD056DF042D741184636B +:10467000C5127E3C9209E5110375131E86F2A76BE5 +:10468000B38F9820AF5BDB79136E81BD9569822073 +:10469000D5FD43E7C275D21FD497B45A399EEB9625 +:1046A000A64D03BA5A2BF677F310E732DC87BCF736 +:1046B000F434FE5FD67179F02F61B9670F4760DE81 +:1046C000088CA67F7AF6B023263616D6D19C686071 +:1046D000E9B80E89E0CB860262C07C75EB3EF2F051 +:1046E000F9BD3B04A7B2CD6EA671E77B1C93116C9C +:1046F000F8BD2606E0DD62CDC3795B9AA769C4E602 +:10470000C74A509EDC344363837C720BEF3770FCE6 +:104710004D82CE7EF3BDB610E5710D743A14CFBD57 +:10472000A1E16D5AA427384F70FD55A911B4FEC7F9 +:10473000047EEB5A5D0C512850FEA9DA57CF9478CD +:1047400028F31D99DFC878F71BE817D7F51B6622F9 +:10475000F95CC6BF463D87B7E71F1AA28304C6CFE0 +:10476000B3A447BF8FA57ED9439CDF0B3EA8D3DB04 +:1047700056C720EFAAEF9A88705ED01CA6A94EC734 +:104780007E1C35D4CF3A33A37E9A138FA4215F6861 +:10479000B232C986FD2D4E207AFCD0C8105F74EB72 +:1047A000CC1A3C5774EB9D58CA74615179947F1CA4 +:1047B000F2D0FE3EBB9EE65D21F0B151EA9148AEDB +:1047C00062CE2C9463EFB1BB0F201E84087EC46AB6 +:1047D00083BDC9842F9D44B74FE7740E41F83D6DEA +:1047E00060A5B89EBC47D3A711BEACD54946C45FEF +:1047F0009D3B210CF29693D1241F1EB16B5478AFD0 +:10480000C0973806FB9AF88AD685F4A8D373BCD72C +:10481000AD05BD0ABEFB2CD27D1CE97182A7331FFA +:10482000F163E2DA4F43726DD77F0E30A787DA2D3E +:1048300091F9478744FCA3249E51FB5A536806F222 +:10484000DDEF82781A110C29F0CD372F803C0A79E0 +:104850008FD0533CA782BC781EFD54DB53AF8375C9 +:104860009FB4F3F1BED3707EB3145284C33C93FB68 +:10487000439C6F6D57560CEEFFA1D0A83C942B6162 +:1048800092F1787E9DD6733D31100EF34CB95D08E0 +:10489000EF37851E89E3DB611EE1B5F92EE40F11C8 +:1048A00006EF938B905FCF34937E147E7F2E952FEF +:1048B000FFF81909F5AFFC52467435C865F022FCC3 +:1048C0000F4962DEAF6809EF06153A63F5900F777E +:1048D000192413D46B63464D2881EF5BDBF8FEB6D9 +:1048E000EE48F522BC0FFC534BF99E62E6DD0AF957 +:1048F000D62CDB9325585F964E72FCCF2581CF0BCB +:1049000019F5DB6AD1D038AD5580C0D81EFE95B000 +:10491000FD321BD1C178AD86F77737EF8FE9BAE862 +:104920005CBE38D66A457E353E81F7D733C74072C4 +:10493000875FBF9B9DE67D98BE973C2497CC09A6D8 +:10494000FAB3023F3CC989DE1DF63E7E76F1DE7089 +:104950002FEAC10CF8A609F4DD3C517551E8E99E37 +:10496000D2606A7FD1ABF124C3BEE67549DDB82FB2 +:104970001799E8AF94D327D3B5FB34387EA1CD8106 +:10498000F363A6026797424F80F61ED4BB3C660DC8 +:104990001F5FD7138AFC53DE47A827BE13D5E08CD0 +:1049A000457AEC996AD028E50139FD9DE03BE95153 +:1049B000CE84C4317D782AE3F3A1ECE83CD467FAD5 +:1049C000C3EB3F32CEFF6727BAD212A13EFF8E5B08 +:1049D0001A6992455C2F3A2A011E013E1A0C5CAE00 +:1049E00031DC11B7B5C1AE945F38DF3924DA8D8878 +:1049F0006326D4F781163DB87FC30F0C27FE98932A +:104A0000C8E789A4837684E1E26C1B2EB5D78401C4 +:104A1000DE1F396D8F47FC93F1FA50701CE1BB0229 +:104A2000AFC7E3FC02E7C574AE91D3465E399FC9B8 +:104A300089CE5C828768DFBFDCE8A179190CEDCBF9 +:104A4000083FAA802E607DEF62157CB7ED0EA34F64 +:104A50008BFBAB3737211D9F0C99F75A2480D26C02 +:104A600072FF18FB9F3DEB96D598978E0CB4D5C07E +:104A7000BC2F1677E5A07EF5A4D13D1DE75B6972DA +:104A80002744C1BA7ED2DB794A42BEE81A28CE5BFF +:104A9000D748D7C8FEE7932FF1F1730CEEB938CEA3 +:104AA00051A9CBE24822BCA7EF983992FA3925E008 +:104AB0007558EF9CF035CCFFF0FA84AC06984F7E29 +:104AC000E8FB772DC1F3794374169EF3325C8E8A2E +:104AD000752DD4B8A27C5AD57CCB68BED6E284D8DA +:104AE000449AEF3CE2E366315F9D63F0BF9A6F83C7 +:104AF0004CCF2B25C2E7CDC180F2D97D74E5FE48AD +:104B0000D3867465D434B471BE6072203EBF2DE686 +:104B1000037A0C43F917BE23F97807730C471E106C +:104B200067E47415B74622BE399F39487F2D61AEC0 +:104B30007814115727BAEB71DEFF1DF2CF31766E74 +:104B40005218F32EF47FE0A16807CAB96C029FFFE8 +:104B5000B5F69FB1660DDA45A609FBD64221174D81 +:104B6000674E3D8E3793B9F5088F3F7C6570A25E26 +:104B7000FC07A1FFCC621E2A9FC3BC94DEC57CD477 +:104B8000FE6ED645F977423286D402FCA76E484DB8 +:104B900046FC56C07B03EE2BE0C73D11881F0FBEBD +:104BA000C3F1A335F2BAF075AAC00FA0DB2D44B74C +:104BB000E1F98DC837D9248E177DF4D1D53000E0C6 +:104BC0003735CA9E85F0B8F97BBE1F933FB5B669ED +:104BD000A53EBC00C6618E85F5FF486C59672F3F26 +:104BE000BF4E38EB2322605E055A33ED43A7434B9B +:104BF000E7C2EBB915450887D7EBF9FEBCFEA481E7 +:104C0000F6670AF33686417A4BC4D4013EEC073589 +:104C10002618AF335DA273A170B0BE4FCF877F6FF0 +:104C20001DAACE4FD9C8ED0E454E6DB711D374B540 +:104C30009D600A6BFE5A9B81A9DA5E7018D7127EBE +:104C4000A5DDE068A2B01B0C67C3C91E77FD7683A3 +:104C5000DF262AEC060CAD93C0B77E1CC4F96AE7C8 +:104C600084A3E32FC2BA2F75D809CB1F4AE172EF94 +:104C7000DF135DEFE077D586AE79B8CFA7EBA0AFB5 +:104C800054C63EAD333127E0F2993A2BE5BFA88BED +:104C9000A1F4CB3A1BA5E7EBD2A8FEAB3A07E5534C +:104CA000929CEF237EAC09E2FB208FBF5CE0E79A89 +:104CB00021391B5C30FE9A37F5942F6D6F990CAA41 +:104CC0003A5B3EE4F4432100EFE5CF49649FA9E855 +:104CD000701ACC30DF85C7DCAB51FC5DFC66D714A5 +:104CE000641F559725E606D2189FE2FA1CC719F3F0 +:104CF000DEA7510897CFEBC6D23CCED639691EE766 +:104D0000EA0A29CD4D729DC776D54DD2B138E8EF6C +:104D1000F65DDD3A4C0B0050B8BF139DCCEB857DA2 +:104D2000D8A877BB111F36C69A1C880FB923A73D98 +:104D3000752F437EECFE0BC26566F8828281503E81 +:104D40009975350E847637CF951C3E5B1FDE5E9BD2 +:104D50004E391CAA044E5C785522F8FC719F96E6E9 +:104D6000D17B32D80B270CEBDD174278D7DB6424DC +:104D700079E290C1638C87FCA1F86007F2C743F128 +:104D800083E85C340A3A3A07FBC460DDD3F7274571 +:104D9000A39E706EF74F6394F6A073E1ED7FF90068 +:104DA000F9D6C71AC7561AB9FDCC26C8BF343886FB +:104DB000F8CC57820F571B383DB0539AADC807CF78 +:104DC00005737AEB793F782BF2BBD3B21CFF7E7070 +:104DD0001BCA09392FC4E531F539179314D9B7AE79 +:104DE0009AFD23A251FF618323083E69924E53AB83 +:104DF000B01FE0BC6DA97DF9617B179F7EC0D6977F +:104E00003FB4F76E279EA33B773FD9FB32C259E8E8 +:104E100007CFBDF0D4A05F40AE72CFAA605C27CAB6 +:104E20007963817E0EAD0F21FE7648EF38558BF306 +:104E30007CCA4C76A667FEEBFED307315D57957DA5 +:104E40003F822C299CF6A3E4E77326C742BB9D074B +:104E5000581692D70898631CCC2F7DE3D74750E4AF +:104E6000C8F086E50F8272C7B359470741FEF9972C +:104E7000241FDAF7B3DBDBB64AC843BFDF3608E5E9 +:104E8000D99B936C2AB97EC490C2135A9277D5F2FB +:104E9000427AEBD779D8DFEE415C6E00F9E1CB7A4C +:104EA0003BD2C39FB2DDA4DF717BCA985766BE3187 +:104EB0009EE1BA3CB128CF7A8A0D6447C7E5EB2161 +:104EC0007F615F12C92507341E3A8F3CF34D0EDC1B +:104ED0008F0B2ECF93B87F55D01EE5CEAA2C4FE86E +:104EE00038D4F33E1EEA000C64439EFE5121C2A753 +:104EF0007ADFE3930741BB0B13984382A997EEBF78 +:104F00003499F61DB451D46F2EEC6B88BA13BE7B66 +:104F1000243D6F0C9EBF2E6D3B8DC396F07136887D +:104F2000F38E7565905F8550DB86FA3F3361797843 +:104F300047D8E138D6B75F4B3AEAEDE80F18ED36BF +:104F40003950FFDC68F7C4A2BD4E3E3FE11C2C4641 +:104F5000BC8935887EADD3494FB8DEF34FB6E7C97B +:104F6000FD6D3070FB9C6CEFDB6CE0E7F90EE03F11 +:104F7000887FF2790DE32E4B1AD3672F64D617B3CF +:104F8000AC30CFCF408E22BBC0758E2FCB574B8419 +:104F9000DE9427CEDFD9031B5EE982F58E31B95747 +:104FA000E2380B9993DBDD750E1BCA23834DCE07C8 +:104FB00093E81CED89C735C0B9FA10E6ABB5207788 +:104FC0002529E42ED3F59DAB0D427F0BE4B70D965A +:104FD0009C59681F69407E8B74744C53F91A9C97D6 +:104FE00037F196B0EE517FB6E1BADFD23394F71BBA +:104FF00018BBEABA5F057A75039FF1C179E04EC527 +:10500000469D0D688F71C2FF2CF0DDC4CBA808F25D +:1050100031F1FC0AFC1EE0BD05D797CB4254ED9C54 +:105020002C8CECC3CC1C7E5DEB9C107CF57365B9BD +:10503000E548D2A380C7CBBFE5C2D4F26FB3891FC6 +:10504000F6B79E57C47A7E96E2DE93A4A0DF9BBE9D +:10505000B1EA901E61BEFB112F27EAB4CCADF493E8 +:10506000C9F8799DF3BD4F621EB4E7B2AF0DA45FDE +:105070007508FDADA32C9DF4C30386A5FFBD12F5F5 +:10508000AFDFEB895F7558B81EDB31358AE48E439C +:1050900032DF2DD6927CDA1124BEDF114DF5838CE0 +:1050A000BC9E45335E2FF73F278AFA07FE48E78B01 +:1050B00007F447D257A73A6383513F9D1AA5A1F140 +:1050C000FF7974C4AF90CF4F35915EEDD78BB31895 +:1050D000E99DADF55C2F1EA45DFAC648E4130D21D1 +:1050E00034CF56CBD626F4B3B5AED43A10AF5AED82 +:1050F000BEBB502F6CFD3A85EC1DA0F7929F00F4CB +:105100005BD2BF7A8AB56D5BB93E2BE7B70A7D7675 +:10511000F65EE27F1ECB5480EBFB62BF4EEAB81E08 +:105120007912F5D5CC3E7FC149D42F493EF4585071 +:105130007F724F09D121DE0796CBFB20977FA00716 +:105140007D14E100FAE80E853EDA1AD612897EB6A1 +:10515000BF27B97B110FE62CDC11C4F9B13708F574 +:10516000DA07B5AE6FB07C53B063CA1DC8874BB8C1 +:105170005EF6815EC0F5AF5C0F7EB5E4F8025CD7E9 +:10518000AB3D314C692795F1C06F0758A9117600E6 +:10519000BE4F5BB64793DE3E3E01F000EBDFD2F23E +:1051A000735AAE37A7F07AAD4478D4B32748B60324 +:1051B00090BDD9B33F95C62F9CC6E5D5DE159A366E +:1051C000940D7C758E099392E17B61EFF3745868BE +:1051D000FFB70878DE23F8D41661F7F7B4EB853E05 +:1051E000EF8B5B82E3760C23FDDFC704FE1D0CA171 +:1051F000FA5EC6FBEB351BB6E13E5F147CA741E2CD +:1052000072C416E65B44EDDB8354701E64E4E5EC87 +:10521000452857C0E7905EB4DF132429CB0F187CD4 +:105220003B695E7B79F99F8DEE94A10A3AAD0CF54E +:10523000A58499AF07AE700E20BEDDAFF5D7231E53 +:105240006C593A52862BFFFE4923D5FBED2B557640 +:10525000615FF1AE4DC1F61D91048FAF567C92B3E4 +:10526000D14670CD3888EDF619891E64B8CAF3DBD3 +:1052700022F0CE2DEC0FEC412E579DB2765994FEC4 +:10528000B653AE3316E4531FD56A7D86D0FEF9C9F6 +:10529000DC8D9FFF03FD6D735D866ED423FA6DF781 +:1052A000E07CF26BF65B5FFAFD3CEAA7521DCF7023 +:1052B000EF50A76BA8124FCF6A54F6A897119E9291 +:1052C000029E167F3D8F9BF8225D6DAF3A1B2CE04E +:1052D000C9ED499EFD76821313F874E6AC86E41896 +:1052E000795E2FEB38BC5E16F6297FB9B027F9E15D +:1052F000F825C011BE6BB03A4C4A382644BACB11DF +:105300003F1E32679BBAA0BC7440DE09941FAB7588 +:10531000703EC3BEB40C752FC17A596E91EDA15584 +:10532000E9BE79740EAEB8BE73B622B8A35A4A84E9 +:105330006974EC388029CC8BE0C1F672FEECD6F8AB +:1053400042455EC27956C07F4E0C47BF329C5DE13C +:105350003C8FF26A609C0B917C14AF4739A1A25D2F +:10536000EB0C0AC5BCA1AF9D1DF35E922340BF3379 +:105370008D0579A622ECE07F8D87F272B3D9B482D5 +:10538000FC95EA7893F27D6B3A9332AE2CBF727C37 +:10539000BE3E6676DAD09E503C96D78DABCD679FE9 +:1053A0008C0238093BE2FC66AE0FC35F3DF2FB9214 +:1053B0005689A11E51EC99752BE255F18CC2B3A808 +:1053C0009F143F5ABF1AE59FC5C2DEBCF8E0E1BF9B +:1053D000E27EC8F10BC5EDCF7C8BF2E8FC80F8953E +:1053E00092E680795D236EA57CFB0F46751C0B97BA +:1053F000A3C775B46991AE168AF933CF4486EB1A08 +:1054000027A3A090233EC5CC8D1887E1DA83F8311D +:10541000AE957F57C578DC851C0FB1C808E732C050 +:10542000FB84C54070B8B47100D9132E097CBEB49A +:1054300099C3A56A20CF576D93C82F5725F84BD530 +:1054400033DC0EB408E038209BC7693815F3AE147E +:1054500070C1780D65396BE172A81C9F81711B4E7C +:10546000857FAD12D675329CC76B28BF53C66B289B +:10547000CB15F62A61E7F212BCB6E8BDCFED847910 +:105480006A1F0C96E35582514E5DFEF18F9E447B60 +:10549000ABDF9E5EA6EF478E1076F31D9C8FEAFB76 +:1054A000E4086E5F5F3F4CC811CE1494B3D96341DA +:1054B000A4D7B4466A3C41585FC6F5DF563BE727A0 +:1054C000AD735284FD7CAF8FCEBDC725FFB988FC7C +:1054D000FBCEF57DFC9DC65D6711FCDD9962A2FAED +:1054E000610EC18F787D2493F9BB9037BC915361D5 +:1054F0007D1FE07F027CEFD43317F29F3BDB38FF48 +:1055000091E58D3B2528C7F63A6F24CA0332DC02A9 +:10551000CB653E2197B7863963C3D3294EEA1FCAAC +:1055200073AB35CC1B84714FACF4FAECBB3B04FF7E +:10553000ED591F44F3FF54E2F15625C1AE876F4683 +:10554000FA7B223111F1CA82CA5B24FAE101BEBCA6 +:105550003DD983E5FD2E813D443DACE4E7A9849728 +:10556000729CC7A92C6E6F0B19CDFDC051A29FA8CC +:10557000648D2A8D09E671149F16703BA165B4CB2A +:105580008072D20E1B8F0F2831B87E7793623E3027 +:10559000AE09E16413FDC9702BD1484EF47F94FC31 +:1055A000DC48F400F320BE9E532351FCC7A7C2FE83 +:1055B00027EF0B635C2EBAF3EDC86CF247B07AD9D3 +:1055C0006EEF417F1EC873C477FBC547C0573CA729 +:1055D000C202F171872CD7727C637771F91CC49B6E +:1055E0003943A1DF05D30DA40FA12DF76F28E716CE +:1055F000D8BC57956BCBF46D5BED0AB9B64CBFF5D3 +:105600006A78E6C78F003C0BC49BFEF0E93AF0ECE9 +:10561000D6E4C8FEF10CBE1FE3B2F48F67552FED40 +:105620003EE0817996FFEAF15006EDCEEA5AA21CDF +:10563000D06FE58E55A14E48BFD07942B1BFB35E61 +:105640006DE1D5FCCE4DC992DF1E2B29FC385FE8F9 +:10565000BC2FBC0C70297BDFE8809D634B9E35FA24 +:105660008C648728233905F2DD3CBF86ECA34B0E02 +:1056700006C4633DF37894CD42F38C43BF3848A40D +:10568000E42FADDEAEA778AEEA77B50E448B25AC3D +:105690006735CE2FF07B9CC765C0DB25EDDA62C392 +:1056A000802BEB61C70CC8E796EC7BE46BB4DB04A2 +:1056B000C673950A3B5BA07DF6A7C996883368B888 +:1056C000BC81DD80E729C0C5E1437C84F924F36D0A +:1056D00027FC6D78EE99175E86799EFD203A0B5572 +:1056E000B5F3DBDF0895D2FBECB5B21DFB7C7BD2BA +:1056F00000F755E02AA75F093B5FDFBE71BE6D3B37 +:1057000028519011EBE069A5DE173A1EC6AB6CD3A9 +:1057100093DDA772F7B69D9B501E01F863DC49C567 +:10572000EEE37F1A07F98A3DFA8822BE1CB314D52E +:10573000B75F4B6CDC4E22EF4FF98BC70DB691BCB7 +:105740001CE50B799F2AF61C36B09157C233BFFD7A +:10575000B0A1CB7C95FD6AEF9E8CF6C086E7BE3388 +:1057600020BD9D7D5562D1F62BBF2FDDF14628B6B9 +:10577000BBD6BE9DDF1E427CF17C8744F122FDED4D +:10578000DF6CDC8C3188DF161606E3967E60F4163B +:10579000E1BEFED772C2F3CF754B399E3FB52ACA20 +:1057A00009F32ED57BA2AC94F2F2D2A7EF13F8E75F +:1057B0008CD5904CE489C5F52CDC3C93D653FAD4B7 +:1057C000025A0F7B526263600BBE053976CF55F6E5 +:1057D000F11F820F7EBE153611D6F3B9884FF4FC47 +:1057E000412BF8CE32924FEE136BA48819C87F2B51 +:1057F000E25DFF98ECF7439A94F2EB92ED6B3A710D +:105800003FBE1CE28C463D16D6EF117092301E470B +:10581000FB4E4134DF0F1EAF4CDFC159908FE5D8EE +:10582000BE534F71CB8AEF086EF2F8F78AF161DE52 +:10583000C128477F1EC5E31D18BA48106F24FE4DCE +:10584000F58AD2221BC07F84F027F8E97CFB5A4EF0 +:10585000D782CEBF7997F38F6AEFD442A2FF4EBDB5 +:105860002F1ADB790FCF9088FE03E34E051E6CD70D +:105870000B3C50D7C3BC7492129EAF723FDEA2564F +:10588000457C2BC249F85F96801CEC4B53AE53F815 +:1058900091847F65B1A0F7C0FD0BA4FFEF92857FD7 +:1058A00046D0BFFC3DDB7C757F401FBD7B681F2B56 +:1058B00041BE4039A8F27D23C93995EBB5149FF458 +:1058C00049F3D1A81B01AFCFB5CBF4A9E6A77EFA67 +:1058D0005CC1E3574BF7EE90103F03E9F35CA95727 +:1058E000BA2A7D42F955E9B394FDFFE5A77E78AB6E +:1058F000E971713FFCD49EA2E6A7DFB2F40168070C +:1059000067D6E204B2B705C0558667205FEC402633 +:105910001779255F64E81A57C051869F8C9FA0B9FC +:10592000D1387EBC95F1533E9FFCF819B85E351C0A +:1059300003EBCF08FEE3FA358F27AB047EC5E39671 +:105940003DAFC58D267A74127B612DAF61FC625F1D +:10595000DE1B906F0F68EF0CC8BB02DABB03F24B83 +:1059600055ED2B0F1E35F0B8329FAA9DB1F636D2F9 +:1059700097AE9413BC9CAEF77D6DF0205E0CEEA14B +:10598000F8B63CADE34416ECEB6D9617CDC8571A4C +:1059900084BECE98E304DA95270F4E12721BE717E8 +:1059A000F9825F3C90C2F961BEA982F6A18169B813 +:1059B000FDEE0A3EA821F9EC75D34D3B51DECF1F19 +:1059C000BC8EF8FCA4C15A9F3183D26E4C273B3861 +:1059D000DE370C1E3518E5FF06B3D1214938FE6DC0 +:1059E00067957E2A39CD37BD351BF5A94966353F08 +:1059F000B92D803FDC6253D717B2BD1128BF16A660 +:105A0000EB9917FBC7F60ABE393BC54AEBBA85B519 +:105A1000345A399D51FE2601D7C1BA2C1DF2DD49F9 +:105A2000BA778EA21E93FB0DB3717CE0F0CDFFC65A +:105A3000A143F8E69AC3746417B70D09433E832C5B +:105A4000E68738C6A6B4EFF90AE589293342C87F4C +:105A50003385B5FF1EFD3C6C86D601B238EB7EC1A6 +:105A60006240FFCBEDED5FEB70BF6F9F20A15AC589 +:105A7000BA83ACF1CBA0BF622D8F736D117CBA21BC +:105A800088CBA9C5AB87A42442F9ED189F77153FB1 +:105A9000F361B15F0DB9D2663CBF121AB8FE20B7F0 +:105AA000C77EB0DFD753F839F50B91CAF9847CDE95 +:105AB000BEA4C9D89D148AA9DE970AE98461795BDE +:105AC00052601E4589EC35AEE74836949FBB83840F +:105AD0009D699D9DE47737807A23AEB33689D13AAC +:105AE000731D8658A8EF5E6FB7A25F3424DD49DFCF +:105AF0002F6A916CE867EACE655CFEB718486F3A8A +:105B000065F50D457E7BCA31CC81727C82AC178EE7 +:105B1000E47155FA34F78B388FE296E237111FD9CA +:105B2000F7B0EE1CF4D33102FE237706331FC9E130 +:105B30008E50A49B07B5AE8329B0AE4F6AB51EEC5C +:105B4000E793D260F2D72668B9DFE9AB141BC1B77F +:105B500008FD50D91827D83507FBD93C5C94875BE2 +:105B600073CC38FEAA2086F32B0EB7CEC3F917AF3D +:105B70004E25FF5DD1435CAF8AD331930EBE6F4D8E +:105B8000E17C6D6E7D6B21D9C1EAC33518E738D849 +:105B9000C474185F7E7B7B16D1F303C3DCBFC07572 +:105BA0007CB1928DC37D5AD0BC9EF4B4026DFA00D4 +:105BB000C4BB5E66A37B25FDC9993BEB780CE2B3C1 +:105BC00075264A7F5967653AE061BBEA6228FF4261 +:105BD0009D8DD2F6BA342ADF5BE7A0FCBEBAB19441 +:105BE0003F50E7A4FCC1BA424A5FAE7351F950205E +:105BF00004B47BC07A3CC66C9E0FE279A7219CE777 +:105C0000711DB01ED233317411ED6543A05C134E8B +:105C1000ED289E1FDAB1A86CB266798221C523F502 +:105C200072367DC70688EF26427E884EDC2F80FEC6 +:105C3000117EF27EC0F7BE28C57E1468CFAFBB01CF +:105C4000E0D95BAA71A07CDECBBA76BF447933D9A8 +:105C500041E20DEC20CA3D5D0F9A19CA195A8D23F5 +:105C6000C688F132A018E814E7D7DD4B83984EC1FF +:105C700027EEA90D53E5231E3C791C8FA18B51EE15 +:105C80001F106F4EDD7FE1B367A0FF2D2BCF8C443B +:105C90003A8779ECD880E3AE0876186D646767E1DF +:105CA000986FD4CBF6368AEBA3FB66368C170EE9D9 +:105CB000C6F3E86983F54FCFA0DCB35A6B45BAF859 +:105CC00000F70FE0FD91D8BFF98D9C4FB2960D649F +:105CD000F72C96F96A5381D37F4E01D06253133962 +:105CE0009D06737B7E77E9E9DD2F41BFDD2B0C0E2E +:105CF000C1B29DA69C2BC7F7F71FD0DFE95846F627 +:105D000027D08A592DDA253B6CA71623DE3E6CA4DA +:105D1000387E090E87B950EE6E7AFD24F623D59EA3 +:105D200020FBA0DB64A6B835E6D19F57F627D5BE89 +:105D300046ED58D7E0309413881FDE8C760BA70110 +:105D4000E3A1B14FC49BF9694718F205D622595116 +:105D5000142811E525721CB6CE3D6C061C74B35395 +:105D6000B5B4DEC5A93CCEDDCFCF46733DBECC9BDE +:105D7000BA55ABB04F3F302C6F74AA928FCD90883C +:105D80007F01BD9B90BE270C9B3F2E750C951F4637 +:105D9000FE5694E71B5A43FB5AC99CE82F89610EB3 +:105DA000B417E2BE62FFBD4D3A92FB647A50E2AB9B +:105DB00021BC0F9F01CF9D1A4E074C8BF59062BB03 +:105DC000FF149DCEB371FA91E950A6339C9F269B98 +:105DD000C677EA14FC4DDF94AB41FBB94C4F647FAE +:105DE000CDC17BA5FCAFA459A27B06252D598645C4 +:105DF0008A7365BE285F80F73914E5CB705FC6E013 +:105E0000BD436F7D0CDA67C47D0FCC27021C9F2831 +:105E100077467898A21FB17F0D41AEAAFDA87FEF0B +:105E20000EA173B078F5DDB78F417EFAC240C2DFB4 +:105E30002FA7ECA1F8B5F98D73EE7B0FCADDCF0665 +:105E400051F98A547723F2CB2F25DBBCFD28877BC1 +:105E5000EC778C81EF3371B3C99EE16DA2711FCED7 +:105E60001D437179CC664039519EF7FCB4ECD5E8FE +:105E7000079DDF9C1BC189D45D86FBDB30E74E1D8F +:105E8000DA1FEF13F35B8C3E7394FBC57909703214 +:105E9000A03DE70BF4A0939D8BDBB5BEFCE5F3675B +:105EA000F07CFFCB73162B82B33C939FD72CDD9BEA +:105EB000339DEBA12A7D60D2F31F87225F97E5D93E +:105EC00025FBB45C7E7570BF03E4497E0D944B8F57 +:105ED000BDF061E855F5807DDC8E712D3D408EABC7 +:105EE0005BF26B2ECFCAFBB144BA4CFAF392575611 +:105EF000455D2D5E0DF54FE407817AC1B5F486400E +:105F00007DE19954B5BE70BDF17172BEB43623E91E +:105F1000D351182FE7DE83745B5E9B9384F1E4D545 +:105F2000B5132995E3E74A6B4750BBF2DA5154FEAB +:105F3000869083988E51DC658DD08F7BBDC903D848 +:105F4000BF187FC94698247CDFABB30D40BB821CD1 +:105F500027CD743D24BF55FC26291CF1ABACE331A1 +:105F60008306CAFF9ECAE5B30B01FA4DF5AE4FC8D2 +:105F7000EE50C53A695F60BF9849A9E76E34D038E2 +:105F8000FDCDAFE279CB52C4DBB276C9B903FAA931 +:105F900030DA1E45F9A5E28DE97A8F621FFF8C7811 +:105FA0001B79E5FCDF4CB5A9CA71BE8CFA69FF0A02 +:105FB000E3CCD8AF42483EBBD8C1EDAF9FEFD26E25 +:105FC0004379ACAC7D4F35D949768558D114F2A5CB +:105FD0009ECB8B723F9F083AF9245523E8AE9DDA99 +:105FE0009FDB15C21EB6F3F9221FF85252DF1F388D +:105FF0002BBE3B2BE0E5117426B72F33B71850BFEB +:10600000B9F0F2F48887705E07FF183A14CA2F8936 +:10601000F55DDC175248F0D8F7F72987503FDB973A +:106020001F2129F80B4BD3F3F978B91FE64207B7C4 +:106030005F54219C012FCE09BBC3B91706B6F1737B +:10604000DAAB8A073BB7EFC5504D7ADF3E2E31B54C +:1060500034E112E57B36417A8F07E5465DC7540F80 +:10606000F276A26B18676D5A8B0BF995DCCE6472D1 +:1060700052BC8E7C1F99C9F18422FE05E487B7DCEF +:1060800030FF9A320343F9615EA66DD65D780EBE8D +:10609000A1A7FD60836D1BD08F32EFED810CF9520B +:1060A0008DDD41F6A279A3387FE9B6F3B8F79EFB00 +:1060B0002D64CFAE6C929813FD6631F13CCEC6AF25 +:1060C0008F39DE5E83768BDF27917DBCD2AB656E28 +:1060D0006C37D6973255615F8E077CC1EF87A7F189 +:1060E000FD3C85F764CC785E1E4911710C128E233D +:1060F000B73F2FF952283E638F3A3EA0729A2F0580 +:10610000EDFA957B63C9AE7F5EDCB7C1729C7F659B +:10611000368F03F0B77FE0480AE263E5FCF6342BE4 +:10612000ADCBFA15E915FB2D742F51F39245F8E329 +:1061300082B6E2794CBE43C8978546519C775E1A79 +:10614000D7579EF6D3A72306F9EEA095E650659C97 +:10615000C320A985C733EC50C7399C32F072CF4EAB +:10616000F53ACEEBA11CCFA71DEA3887F386161EA1 +:10617000E7B0535D5E16DA42EBEAC6380F84D77398 +:10618000DCAFC6CC9D07B0FFF2E783882ECAEB6A6E +:10619000A7A07EFB65AC77D14128FFF2B9610CE581 +:1061A00056D84F9253CA3C12F1FF7260131827075A +:1061B0006921C6BB95FF72433CD9635772B9F68417 +:1061C000E509D23F7AB71B25E4E767236D03307FEB +:1061D000F6B70319C2FDACD4128FF32907490FE5B6 +:1061E00013376B994776E5ED46867EFDF2ED468ADC +:1061F0004B38BBE3BB614A3B3694ABFCB5F2BCFC0D +:10620000E7771AA7DBF9024F16A571FDB962D81F0F +:106210000E20BE77DBF9FEC0FE919EB6694F10E5F9 +:106220002B76476E45BA296F0FEAD6921CA651E924 +:106230007B65C000D14E56C6B83CF3E52E3DC55730 +:106240000025115FAC147CB1403B81EEDB5F6A1F1F +:106250003500E151AEC9FA31AEBBFCF7C974370065 +:10626000E04FF3C53FD4D7CEEE8CA377178AC2D9BF +:106270003DD3101EB57FA7788AB3E12D19E157D120 +:10628000ABCA5FB2501C6BF99A1B34644FD7727D56 +:106290001052A7C4EF17E7A03C51B52664A9D2AFAE +:1062A000526E3E43F11E81F0DB9BC6F9569588FB8A +:1062B000AAD8C9DFC3A8047AC3B8E88AD5DC2ECE31 +:1062C0007E29D1BDC9E541BED0F1905FBE434BFEF2 +:1062D000800A437B4A24CCFBA934CE37A1BD1BC71F +:1062E000F57F6F706CA07E7F3F93F6FDA9B4081A0E +:1062F000EF7CFB6351B8AF81ED9707011F312BDBBA +:106300006D0B55EEBFDCCEBFAE766EAFB9C43A7F33 +:10631000F2217CF2CDAE209A17F07B8AAB0B5C2F7A +:10632000CC97F0B2E20523C5959D13F7C33EAFE3CA +:10633000BCBE62F56D8FD27AFF309DE257177BD5D8 +:10634000DF5FB275E6A01DE1D2BEDB75F8FDD63485 +:106350007EEFAF6ACD78DA67F6B69EBE0BDCB75536 +:10636000A29D9FFE7687F07817D6FE02F6776E77AD +:106370008806E9AF3B8CE3C7B95C98279E03BBA3B3 +:10638000B3E94E090A538067E5568E67E7C2DAE340 +:10639000AD549F9AA5C22B1FB4447CC46F30AEA3EA +:1063A00096CB6F15A666B2EB633C484E36A53EE32E +:1063B00055E246100FD14E10334CF8DF703C8C2361 +:1063C000C1FEE83C6A37A0FFD12DE4CECA5D8171E1 +:1063D0001FBCFECF6992EC5FB045C87128405215D2 +:1063E0001E89FC03158DCBCA90CF542C5D7F17E21C +:1063F000A53CFF0A1D2B447ED02D69691EDD41405E +:106400001728AF2AC749E4A935AA6F9DDD62BCCF22 +:10641000D26C346F908B590BF453D9283553FF82CB +:106420004F50FC91E23B008301CF99EE5C511FB0CD +:10643000DE6E112FD9B35B6A539E2F81EB1E348C15 +:10644000F3F96EBBEDD109117D7177907FFBE6D139 +:1064500094A77B6B0DB87937D267840767E7F07331 +:1064600002CEF92C841B6A48FE780C2DBD1BA38B31 +:10647000CDE6FA19C6B7A37E8629EA673623D7CFB9 +:10648000308FFA19A6A89F6139EA679847FD0CF387 +:10649000A89F611EF5334C513FC3F271C3389F7CF6 +:1064A000997947E860BC3352E7EA5889FCD2DCFFAF +:1064B0007CD64CFCCFEF9F3EAB51FBA7CF6A02FDD1 +:1064C000D3214AFFF4B5E2B01222DDA9C322699FAD +:1064D00055FDBD9CE81D81FAEE1B6956B19FEDA4E8 +:1064E000FFA76C36A8E09EB65D9D1FBE4B9D4FDF9B +:1064F000A7CE6774A8F38E63EAFC5748EB385E7644 +:106500009019E379BA567DBE1AD5A96F22DCE9C38A +:10651000283EBB67278FBBF6117FE9AA87FDE5FB05 +:10652000CDED6ED01BE2AF1CCF7BCDF774AEF98EF4 +:106530008E1A1FE478A42DFA9E58E4939F3C676A54 +:10654000C6797E22ECA56CB689E4AB1AFF79C4F556 +:10655000AA9A75D2563C876F1D164EDFF79E48A645 +:10656000F3A93FFD62C1E551249FFBF3CD9286E282 +:10657000A463A2E8BC93E5B77809E437E47BB07E76 +:10658000940B53376A54F31FE60D56C177C4B3E139 +:10659000AAFCC8F641AAF699071355F559BEE1EAD7 +:1065A00078AE19F587F97D08310F21AF4E6F1EA522 +:1065B000FAAEC4355EF5DDF29526C2AFE5EF69C9E6 +:1065C000AE5A8A15183F827225ACB314BF457FEED0 +:1065D000761E47C26AD5E77AA98E79AC30F505E216 +:1065E000FC91E3C04BADCC1906FD5CC86AD989EFBC +:1065F000CA94FDF68F39568CE79372A3D17EF17C55 +:10660000B2FB5EC49B78BD730AF96BF62487D5A3F1 +:10661000DC79E238F9A5653C89D75B83713FDB5AA9 +:10662000B83E80761C6D78DF7EB7B50C0C1E6AEE26 +:106630005B77DFFEA693FC7CE98416D501569A2B86 +:10664000790C997DF3AF11E7853CDF4F85DEC0867D +:10665000F27EEE15F595D9AF3F1D0E5B775E73E4C4 +:106660002F6B607EE7B2DA537C90966F6A8BBA1319 +:10667000F509A37B1DAEA3E6ADFC50F4277EBB4B12 +:106680004FF7AA3E6BDDF634C679AC69D96640BBDC +:1066900041B9CE6B203FF7736D068CF3F8D1B36D23 +:1066A00054BEE8D962D233BFD02F35907CFA94C45F +:1066B000F6DBFBD65F9A276DB6C2BC2F0A3E5A1A8C +:1066C000CCDCED64679E703C02CFDB67258A77984F +:1066D0003923571F89F2FBAE30BACFF98C681F8877 +:1066E000F7BD6F6AB95D6C06DFEFFEEE994EBF6CC9 +:1066F000273C9F717904E95F337DC3B8BE9BAED65A +:10670000774B0DB6B791AFB3DF69493EF5DB1D1C82 +:106710007A9287319E11E3275D13B42ABC5B32293C +:10672000448597B359B82AFEF20E3648959F519486 +:10673000A46A3F6BC688007E90DD574FFC609C2AA0 +:106740000E130650D14515B6A0B8BC3C553B2CE7FE +:10675000F19DB7AAFA5BFED6A8681EAF38ADAF3D73 +:10676000CABFDBB97FA36A5FD856D4BF4BC5FDFC57 +:10677000D96E5E5E7D90973316ECBFDF3040CBED77 +:1067800009CAFB194CF8ED707C846B95B03355A5A4 +:1067900071FB52427EA7C144F2B944F762AB5B245D +:1067A0008233C05737309CE75764D3F7A681D97D31 +:1067B0007852BD4F7D7F12FB47BF72F5096D31D214 +:1067C00043603D9C53AB07E1BC8BA42CD43B176FBB +:1067D0000CF44B37935FB01AED468AFDC9447F0B2A +:1067E000E29BF0E7CCC60AD8B2CAF63DAF617F3370 +:1067F0005D1C2F03F147D60B1631C023F42B01BDCE +:106800007A6DFDC303EF76A1BE21C3A5DAC9F12DD0 +:1068100010BF0621FE613C2C03B841BF8BF7490E27 +:106820007C670ADB239C0621FE05C085E018000F6B +:10683000194E32DCD858F5FCAF841F5F077CC7AE19 +:1068400006BFC075F5074F79BDD32E73FB87BCDE3D +:10685000456E8E078B603DE817BD03DF731985F821 +:10686000C1F9470FF08FBDB84E1787D38C22359DE5 +:10687000F9F1C5C5F15CC6979997A3A89F7F1F5FE3 +:10688000BAC84E7BBD7822DBF565BE8BF6C462F2DA +:10689000473F74D5773B02ED91370E17F6C8316C40 +:1068A0008C2A1EA49F7B4281F120F2391D784E1460 +:1068B000FF969F13FE7344F0FF9A956944F7321FC9 +:1068C000758B72B7B0D3C9E31443DEA6C8AF6E4C64 +:1068D0008AEF52C811EE55FA28EC27BE7E20A5C5D6 +:1068E00041568A7B2AAEE7F128A7D746478D85FD1A +:1068F0003BBD8AC7A39CBE7F743CC6959C5E554039 +:10690000E927EB8DB3E95DA1074D0CE3C1AB0E4464 +:10691000F3FBD95A73D46CB4BBED1D48F72B170E9B +:10692000E7726BE5AAFDA1184655B18A9FBB3F4EA1 +:1069300076170F27FB7BDB4E32785BDB3290EF2B39 +:10694000ECB3CBB1BE0AEDB39077D727539CDC17DD +:106950003846369E4FFC9CFF22C87A078EF7C573D7 +:106960007ABA270BF54EF493DC2BF9CEDC4CF7E822 +:10697000A428B43B9D7F4F4BF6AF32EDE10C1CAF2A +:10698000B2EE603C9A0E4AB3E1FC043C986484F990 +:10699000A0FD61D5B678722636B5D1BB8681F6608A +:1069A000197E1F0A3FFA4E714EA3BC8F29CAFB2CD9 +:1069B00095CBFB9847791F5394F7B17CC946B5BC7A +:1069C00026DB8313B45F67D5A4F7F98598B5EB1878 +:1069D000F9851F33DA50EF18AC13EF99097F91EC6A +:1069E0009F91FD46C58F2D66F8E24D711C7348BC22 +:1069F0003DF99102FD47C5785710DB3DA2A3F7F1A1 +:106A0000E82F87FB5771DDB2DF09BF0FCD56F86164 +:106A100085FF47CFACF1783F3121DFFA9393DC8FCC +:106A20004DFA53511ED747E5757508FFBF9CA6A0C8 +:106A3000FD18FD3B1A470CF2E1298DC3C87EECC955 +:106A400063694B497E30A7619CF27229D881F2EFCD +:106A500072DC67CC7F1CC4FDA0DE58151D04BE5F30 +:106A600073530FC8880ABABCF9B2899528E83F97D2 +:106A700085A9F2F9A65855FB02AB5D55FFA39861B5 +:106A8000AAFA5B6C59AAFC6D6937AADADFEEC85521 +:106A9000E57F3CF61655FBA9CEA9AAFCF4C239AA9B +:106AA000F6335DC5AAFA59B3CB54F573DCCB54F970 +:106AB000BB4AEF57B5BF7B69BDAAFEA7A08F229C3A +:106AC0003B501F35E23D4E13A5DF69AC3A46F24319 +:106AD000B219E96942BE66E9D5E23EDE15747B79FA +:106AE00084736DFA187EAF16E96E88FCCE1E03A97A +:106AF00093F4F2CE58A4930921472ED9606FC63D76 +:106B0000DF3853077C6FC20D474625417EF9F38776 +:106B100066EA80AF4E187FE4C544C8FF6CC4B73C3A +:106B20009F79E412D69F7BDEC7DB4F672422AD1925 +:106B3000B16CA607E7757362B383DB69C4FD211FDF +:106B4000E1A93FEED064F62529E27B707D25C97866 +:106B5000FFCD4AE911A03F4C8F01FD9500BF7D0D8F +:106B6000E80FD313A06F63F9EF40DFC6F44DD0B741 +:106B700031FD3DE8DB987682BE8DE91FEA6653FA67 +:106B80006E9D9BBEFB535D29A527EB9652F90775B9 +:106B9000B5947E54E7A1728433E6BF1F2EEC310713 +:106BA000F5E795EFE7C8FE70D9FFCD5E7598309E8A +:106BB0008075E9C2CE98FAFCDAFDE979681039A34C +:106BC000900BA399D33882FC2583AD74FE88F2E440 +:106BD00044B77904D0DB7BF6E9C9A3203FEB7BF710 +:106BE0002A24F9F734DC0E1FD8EF69B1CF9D239C1E +:106BF00061D89FFF7D46C18736EB39DF91F90CFDE7 +:106C000029F885CC576E32F17B350A7E43FC42C1B0 +:106C100087888F147CC388AE2736E9C87F68D13156 +:106C20001FFA97657E0300C9C77B63FACB8CECDC47 +:106C3000F89EA2219BDA39B5906EFF2BB4CF50F0AD +:106C40003F23F3D07B8E822F423B1ABFE01B37F1EC +:106C5000C389C2FF3EC400072E6F47710116D4DB03 +:106C6000F0FB815D4771BCB8BF830C00ED405CA1B7 +:106C7000F814990F62FB10DEDE87FD0EFD1B8C1FE2 +:106C80008A70B3F177E3723BED681FDA7C9FC981AC +:106C9000F63DF95D4A327A019CA60B7E45411C986F +:106CA00017E73C7B369AEC5779A27E73A23B1FF71D +:106CB000CD65B47E1C4274953404E598A9427EFFEC +:106CC00017FB56F87F61DF2662C708EF0846FCFA1B +:106CD000FFEABE8DD6F1770D8C95268AB7BAD63EDF +:106CE000DED3C3260F80267727B94FA37C507CD9EB +:106CF000F61AE64B745906DC3AB97E11D68FB9B252 +:106D0000DEFD4D8F7E8062BF6F123C7A4D3FEDE518 +:106D100076F27BC772FFDBFB197F79018FDF2D7C59 +:106D20008FDBF9DFF0BF07E03467C17EE733DE4F6A +:106D30007EFA6292DF9999CBC536F807F9D2CD97E2 +:106D4000752A39B99089B81DE6D521FE1506F8E3F4 +:106D50006F1572F4AD017274A05CBC79848893B62F +:106D600033FBBFF98ECD56C46759EEC23838C4DF45 +:106D7000249BD63421BBEFDD1AF9FDA349827E0A9C +:106D8000989BCEB51F310FA5B7C0FC313D86EF1FD4 +:106D900065607CA78FCEC3DB81E162F98F5194815E +:106DA000FCD190297331863A7F54FE502C57BCCBCE +:106DB000B01FE751AD75FFB755F12EC3914936F2BB +:106DC0009F1E31F17B1B485FFAF0BE751C85736016 +:106DD000289C03C7E13C1A0AEB791DCE23CCFF1691 +:106DE000CE234CE576936DEA38B25BD3F87B8BB754 +:106DF00059F34121EA1F4EB765FC7A30C2F18DB0DC +:106E0000D44968977F23EC8649B8BE37C2A2353C87 +:106E1000351AFED53D6019DF6F4BE7F7076EB34EAD +:106E2000A6F1AA4242C5FB2D1F87C6005EF49A8ECA +:106E30006668213D8B1344BD28C00EF5791D4BC7F4 +:106E4000F54DAC1D4FDFDF5C7B23A595263E7FB65D +:106E50003D5AA38CE7DD667077217FFB7CB396F00B +:106E6000F5C2DE204711F4F385F7C5505C0FC8FB6F +:106E70009F22BC2BB5B66607DA6FDEE071ADECFB86 +:106E8000A3F1182FE37FD768FB74553CB88C0F959E +:106E900026BE0E59AFFA499293E88B89F758E4B8A9 +:106EA00099C1467E1F4D7E1F04E5088A030F38AF47 +:106EB0007382393F196CE47CD4CF270C3CCFDC2F94 +:106EC000D2FB6BDBAACD0E3CA786C538FF8AF397B1 +:106ED000EDB8BD8343E89EE844DF08F2A716A21D83 +:106EE00001A67A44C4D9FD68C4527322E0D51D2995 +:106EF0006E6D3ADD43F85E8B7CE9CD64890D94D0EC +:106F0000EE3BCA4C7AE435E82690EE42D205DD65C8 +:106F1000B08C1FF83B5814D7D3FBAED6C1F5491E31 +:106F20003F20CBD11359CA06B40FE49FD06304436A +:106F30005F9C5A0CF72FCA74597082C713196334B7 +:106F4000CCA6E01741B66066538E9F16AECA5B1C96 +:106F50008354ED078C4D54D5873987ABEA07166605 +:106F6000ABF291AE71AAF6D1B3F354F958F7ADAACA +:106F7000F671A5D354F9214BEF54B54FA89DAFAA94 +:106F8000B77BCA55F5A0D1D03E1CB74A6C935DF1D2 +:106F9000BE8AC7D99916C5F923FE2535D5A8BE2BBB +:106FA000342FA2F7C5925B1E50F5CF6CDC3EE18119 +:106FB0007F10AFBEC58B099016C4A8ED16F9D6DCBC +:106FC00063B82571220E8A31870DF96FBE556DC7E2 +:106FD000883317525C7BDC35E2A48AFE5D3C700F7F +:106FE000BF3A1E54F2F33C100FD07FA05C27FA0F7B +:106FF00094F040FF81328FFE03657BF41F28EBD1B4 +:107000007FA0AC1F75428D07633AD57870C34935B0 +:107010001E1C47FE9FD4FF7EDDD8A5C61379BFC6D0 +:107020007F31EDAAFB351BFEA1F391F1F37512C080 +:10703000CDC7AEDC3779BFE4FDFB9FEE5B43C0BE3E +:107040007DCB9AC764D1FB86702E69FB3F370B4D11 +:1070500057D7D364BE15A8AF05EACF72FCEF95EF02 +:10706000BE7659F05CFC4ED33512BF8F653DC7F13B +:107070001EF24B51EE2771BC688C1680FA4D657775 +:10708000D0BBD51787F49CC277BB3DF75B38FF4E6A +:10709000E7FDCD6BE0EF48C8F39E17C7E38FB6A6B8 +:1070A0000BFFB3A36B0CFA2377A473B9D6E2B052EB +:1070B0005C7B713A13F1BB2C7EDE48057F5DA1231A +:1070C000FE3ACFE4FE653ADE4F10EF88CB71EED783 +:1070D000F1EEECAFF03BFFBB1765EA774436F9DF22 +:1070E00011F105A562FDE31AD5FB2C9B2A6DFEF775 +:1070F00059C8CEB992BFE39ABA91A9CE75FFBB2207 +:10710000CB6C743F6D98D7A48A0FC7F766D0AF3D9C +:10711000E259ABAA7C647B8CAA9F4DE25D9CCC8338 +:107120003655BB4DE2FD912C5F9AAAFDA8130EF5D2 +:10713000F7E25D92319D6355DF77C9EFD994F1F79E +:1071400035500F40B9FE86934E55BB848A9A292844 +:10715000570C11F2F58D5D85AAFE132E066B304E8D +:10716000FBAB741E4F3EFE0B97AA9E741EC4839FFA +:1071700046111EC87A8A426F213DC5C0F87BE006E1 +:10718000D03310FFE478E8403B96DF4E65EAB38BDE +:1071900029E394653DC31FAFAC736A107FE5786542 +:1071A0003F1EE0FBEF3CDE80E0F0F40351AAF7491C +:1071B000BE15F8F8550AE3F7F24DDCCE85F153F829 +:1071C0004E31D375C5E2BB43DFA77339E497439DC6 +:1071D0007F4BA7F6DC1FFEB4A1E77D3C47E765F2D5 +:1071E00071E66A34F74C4DE7F1647B157A9D7124A2 +:1071F000FFFEAD0C9ECE1B20EEA7FF8CDF7397D752 +:107200001163608DF47E83AE6B18E2F7DDCDEDEB9C +:10721000D0B436D7D0A2E771D85E3DD277511EC820 +:10722000B9598CD5FF32E171732CBE8FAE23FB4A66 +:10723000E8EECD778084ECBFBF9300FF8DFB8036F6 +:107240005ED4ABDC19DAABDABDE57B29B6657AD75B +:107250005633DD6F2944FD4DAE5F9EC1E1E41DAAAA +:1072600021BFA8FCFB017EFBF3485E3F55ACB34059 +:10727000FB7D31AE6FA1C540F7A0263A5D4FA0DD82 +:107280007B7EAB9EB5A18DC703FA4B14C5AFD05F13 +:10729000B18DEB256EC1B7318F7E93628F9ACF2E61 +:1072A000C6DFEF90886F135D2F301BBCF8D6E682E7 +:1072B0002675BB858CF7B7D8CCDFEF5C18785F51AB +:1072C000E8398BAFA1E7FC74A4E0D7992CF307C58C +:1072D000BBA3BDA0078BB87FFE6E52AD81CE511906 +:1072E000EF15784DFAF57F2AAE9F89737EA880A3AB +:1072F0004C67323EC9F423E313EE2FEE9FBCBF78F8 +:107300007FA8DBDCB7BFFF5BF788FC70BB861DBCCA +:107310003FBB77205FA13F853DA43F7BB7CC67FC97 +:107320007C8401FF48EA8397ECBF2F153812286749 +:10733000F57A9328FE1AEF3169F93C299E4B3EB746 +:107340006DE8B751F815807E82F17D7B4FA38EEEFC +:10735000ED07C257A69FFEE20BCE637C01F25AD91D +:107360003F24EACF7B2E7553FDBE207AB7ED4256FF +:107370006706FA3D64BF51A01FAA77858961DC5A70 +:10738000EF3E0BF9E5D14F3300DF27AADF9681FEF0 +:107390001B793EEE2EB5DF2930FD71B27BCBC831B3 +:1073A000E8BFD1DF417172668D15FDCF6BCD47E827 +:1073B000DE3DE8FBDE91917DFA5D119C73B86FC0F4 +:1073C000970A71BF653F4BE07AFC743681DF43E872 +:1073D000F5F0B8F3DE4289E6FB1E7391BC522459E6 +:1073E00049CF57E2E7BFE3AF997E398BF667C6E531 +:1073F000F1B44E77D38D944F49F068303E99DD2536 +:10740000917D7AD676B62AD8867146B3C6A0BEF6E6 +:10741000E6482ED7A488F325102EC9829E766A24CA +:10742000F23FEE7C88C7CF8DD8E5D4E0BB38B3F708 +:1074300059C53BD84BB3513EB82BA07D8A8E9DD009 +:10744000670B3C86F6CFDC60DF4A71CC197CDCFA36 +:10745000E15681275D3A97426EAAA997882FD548B1 +:107460004C8E3722BE24E72FB5887C01CF2F5FC515 +:10747000F35DE2BDCB9DC2BE81F0C314E18776808F +:107480005DC2BE81F0C314E187E548DF9847FAC6C4 +:107490003CD237E691BE3145FAC6F2F9CC158F0ED3 +:1074A00043F4E34C52F069F4E34C52F05BF4E3280C +:1074B000F3E8C751B6473F8EB21EFD38CA7AF4E3EF +:1074C00028F3E8C751B6473F8E32CFC6DED2974782 +:1074D000BFA073AA2A3F1DF484498AF301FD38CA6C +:1074E000FED18FA3EACFBD4CF5FD5DAC56F57DD244 +:1074F000D27A55FB7B6A25959FA784F5103E2FD83D +:107500003890F07075A22B2803F6FB9E593DF4EEDF +:107510006881B6A30CF1A1A62AD8C1F7B9A590EF4E +:10752000BB86E268B7E86DD1F44EDE5B5AC6F799C8 +:10753000C7F106E227FA3326E9B95F0553F4AB60D9 +:107540008A7E154CD1AF82EF0CA25F0553F4AB607D +:1075500039FA553045BF0AA6E857C114FD2A98A24A +:107560005F0553F4ABE077E857C114FD2A588E7ECF +:10757000154CD1AF82E5A7D0AF02F9128CB9847552 +:107580008E6CF11C479BD494CDA78E619A32A07863 +:10759000AF04A83EEA85C859E8474A0929CE0E73C8 +:1075A000009F96E2664D82BC5BC4C765B01E92FF29 +:1075B000C85F0EEB77FB18C9EB23FF1A4BF57DF480 +:1075C000C2E969E4312BC9A9F5427F92BFCF425786 +:1075D0004D525FFBBEFCD5DB058E2FB7233EA69830 +:1075E000877C2F39E1751B9D4F400774CF4CFEFD02 +:1075F0001BB72797DEE52D3270B90AF8C238D49749 +:10760000467824E756C5FE1509F971C42E668841EF +:10761000BEB065DE68FA2ED8FFDDDFCE627CC158D1 +:107620003BBD6B38611773B6C1F73333B89F7642F1 +:107630004FFB11E46BC58D53E93BB9DFE2CDF1742B +:10764000DFB2982D7D007FA7858D9628BE0AF8D0E1 +:1076500031E443F2BAE4F6202E9F40BBE8F5DE6B3E +:10766000B969745801C68FB10E46EFE8DC3EFA1DC9 +:10767000D5BA695B72A85FE2FFA91E89DE679BE24B +:10768000A97F08D5C7DB3DCB8E63BC997B3B73D804 +:107690006DC4BA29FE5F9EDF70E71E0D1C1FA08E11 +:1076A000766AF037844055393A50B1BF80E1337083 +:1076B0003FB21C7AF23B4DD559F5748F3FE05C0C1C +:1076C0008CC7088CEBAB5979B91BE32C6BF6F373C1 +:1076D00056960F8A459CD7A5463DC54B14EF37D229 +:1076E000BB67EE8D12D1B11CAF7141F366D42CF89B +:1076F000AE2AC91BAFC1B8F0416D19E15A3A47D75C +:1077000064C03CCF37F2388AEEC617E99EDDA5C6C5 +:1077100099F46EBD6CEF2F11F02911F13A15CCFAE6 +:10772000278C7794DF7597E39B580B9787653B47CA +:10773000F15B3C0E24504E2E6BD4539C4D59807CF3 +:107740005C21E4E38A6BC8C74F6588F8180773FCAF +:107750009B7E806D190AB980C9EFFE8AF7EC8BDF3A +:107760003A3A93CEFBA5C91A3CEF6539616E3D9755 +:1077700003D81E46BFDB33B73E9FCED3B9FB9DF483 +:107780006EC2DBE2FC9F76398EE0FE4771DECFC42D +:10779000B842807F51571095DF713996D259977949 +:1077A0009C21DEF940FCE8FA35A3B8895E8F91CBC5 +:1077B0001F1D4CC42DAAF1338B590B10DF873BA53D +:1077C000A3285EDD8EF203F4371BE5898188EFC5BF +:1077D000AB2211DFBD8CE4BC407C2FD22F3D8EF557 +:1077E000453B18F975647C777BEC05B8BE2985129A +:1077F000439631DBFD8E0EE91CF88015BF730BBD7F +:107800004EC6EB403A981722F45D33B7B7F8F560EF +:107810009C243E92E8593E0BE5B27968431BC411A3 +:107820000BE3B52CE9BCFEEC0BCB67350EFDDFBFDF +:10783000D72FDFE7EFD3B3B95E8FFAB58BE2493EBE +:107840002A8826F9262C5B69EF3C2DE87683232FC6 +:107850002313BEAB599B1CFDAFEE6F2E807D43BA48 +:107860009C37A0EB3EFC85025D26734E1A8BBF9FB2 +:10787000C1E447257D18B777A7C86B331FFB735347 +:107880003AC199D7673E380BE319D6AEF87900FFB5 +:10789000733971BF42D29DE4F7E94F8F7F2FCA79C8 +:1078A0004326B45F902EFFCE288FBF3FBDF6F3E78F +:1078B00095760AD9CEC5580FC9F94F4C8BC912EF2E +:1078C000AF103D6C2A1F4C760D7BA6C61FB7F49FE8 +:1078D000B8A7B0D2E68ACB247EDA6222FD28ADE7D3 +:1078E000C91D30FEBC3AFEAE9EAC476D290FA67591 +:1078F0006C79C0407C50D6A7E61A3A8FD3EF346536 +:10790000F2761FD6FE5C8FE704EC2BAD636E397FF9 +:107910004F7383C39586E384A43BE89D0B77BA57E6 +:10792000C2DFBF1C64E5F85F94D893A521BB9C79A6 +:107930008CEA7709B5EC18DA45E726CAF7BBF8BD3B +:1079400075996FCAEDFE92C9F9C95FC53CEE6C919D +:10795000EFB3B7AD8A423B455316FDD4DF06877BB4 +:107960001CCE634187FD35FC7D89EA83FC5DF3799C +:10797000D1E2FE36EB8957BEDF3745F4FB1D466585 +:10798000D33D05711F40DC379F1361A57D033C6F1C +:10799000443D718AD82FD9BED5A7F7EAC8AE60A8F2 +:1079A00035D0BB8EA8AF1AB215F630C6F55F19DE1A +:1079B000B21EDB07672B7F77C562B0217C8ACD2999 +:1079C00093915E8A5BA470E49305DAA2D7488E5C3B +:1079D0006F4F4439D29329A9E2B7178AF3B0E6F181 +:1079E0002403FE9E42CD5A90C2906F85DBA89F9ED5 +:1079F0007592752BE2B3B047CBEB2FD97823D153D7 +:107A00008917D2ABBC3724A71FAD3F147923E2AF4F +:107A1000CF49F19C2556602B0ABBC302B11F81F9E7 +:107A2000A599DC7E3517C45784D7DDF7DA0DF3D17D +:107A3000EE06E208C6D779326DAA7BCCD08EE2186A +:107A400014EFD058D10E8CE3652BFA9F1FF0BB7B4F +:107A500045895C9E7A20D342FDCD6F0933E0BBC0DF +:107A6000C5562BCDF30A3808F82FF079F50E9C0F88 +:107A7000C64F40FE4EAB579F4D78689B8C7CBCA494 +:107A800099BFABEB6EE6E3B99BC20C23B17DB07539 +:107A900032D9A95749169C5F51B8D340EFC8ACB74B +:107AA000AB7E672B104EC562DE2530BF85AAF2F58E +:107AB0007AA49739E2BC98DF984BF7CF4B747CDD02 +:107AC000CF093C750BB87EB62CE861B4AFCF0D6F13 +:107AD00029B81FE970515818C65BFE2293CB8DCF91 +:107AE000093A91E132C7DA42EBF2C3F571800374CF +:107AF000B9D0EAA2FEE78ADF6D2D691574D55A6CFC +:107B00004837E33BB96EC3601ADF42FDCDD9C8E701 +:107B1000D9373E7F1F68EE267EFFE3CCE3B3E269F0 +:107B20001DAD1BF48CD6F10EC3DF014738223ECACF +:107B30007821DF77F6EB379966EABF43CCDF6F3FFA +:107B40000E7897A3A4B998DEF15810C3E85D29997F +:107B5000BE647A93E92CD04E3447D889F4CDDD65E4 +:107B6000C8BF647E00E7EAD2BD57396F32049DDF9B +:107B700029F603E0437C4AAEFF4CD09FCCB7FCE72C +:107B8000F600DEEF3B62BFE6E6F992F1BD27B9BD34 +:107B90003CEEDC70FE1DEE0FCA32EF88F1B07D0DB9 +:107BA000B557DFCF58E0B7B3EC5A1585E7E81E8923 +:107BB000EC5935EB8E0EF929D2FBEE10BA5772AEA6 +:107BC000724735FEFE16D379E395EF8C2E04390704 +:107BD000E97C91383F4B7C57A7F715A9EED3990A5A +:107BE000BDA1E4B1DD29C83F61FD3EE41B1FED3EB0 +:107BF000F4DE385BDF7928AF677E531BF1CBBB9B8C +:107C0000C3B2B59C5F3621BFCC107058D0C8F78D79 +:107C1000C1BEA11C28EF6F7123BF0FB7A036C78B61 +:107C20007628BF5C11C03F03F753DE67793FE7F862 +:107C3000CF83F505CAF3C00FBF3EFD807ED7B2B734 +:107C40009DC3AFB759CFED54BBB85DED5CCD4BBF15 +:107C5000BF03DAFD3FB9CDAD4D008000000000004C +:107C60001F8B080000000000000BDD587B5054E71C +:107C7000153FF7DEDDBBBBB00BBB2B2C6F585E4A4C +:107C8000CC02775725B576F4C6A871328E5D4CAB21 +:107C90009028AC550C2A20A4B681D6294B375182A6 +:107CA000934A27181FAD66A1EAB41D93AE91A94E61 +:107CB0004A3A9BD04C92D68E56675A47A7642D1DE0 +:107CC0005F6D6475A6553B69EC39DF772F8B284DC6 +:107CD000FEEA1F65068EDFE3BC7FE77CE77A5D087E +:107CE000B7644900F7E8670140C31D2FC02C800D21 +:107CF00077E631FA5C742EC0B4C4B94EB7CD08240F +:107D000029E989F573AFBF313DE001585D14B9F140 +:107D1000761A40BCCDA40C00C03AFCFD920FE06F77 +:107D2000475F35E6E0FEB30D8203D541BA52887F46 +:107D3000009E89F41B8BAC78AFD56B8714DA770380 +:107D4000CCC17D003582FBAB45F80D3813EB5AA44E +:107D5000C750CFD6364B0A54129FC369AF0098AFB5 +:107D6000888C6F5911D4FB3D09BB46DBD6FE00F071 +:107D70007CD402F52B90BF09F9DF223B455FBE6141 +:107D800036DAF98AC93720A04169916380EBBA2DB0 +:107D90001E5F4F21D3FBA18076CF560426B7A424C3 +:107DA0001626FB720C0016DC9745089A910E88DCAB +:107DB000BF2289D31F25451E69B53E182F9D9634D5 +:107DC000C56E923D2500419243D486FEAD26BFD3B9 +:107DD000D91A5C7C3F4A34CF0041D1C7F4064DDA52 +:107DE000DA82F77BCABE012ADA6BCC0445427B7388 +:107DF000CD680FEEE7A07FB22F212F0FE549B82FF6 +:107E0000E3BE487A44B1DE8FF6E524477E06988FBC +:107E10009C2D337D2174514E826EF2A77A0A7FA782 +:107E2000B25BB777B490C77D3C1E26A4CE841FBA40 +:107E30003D508676A0DEBAEF96F7F7A0AAD12E25A0 +:107E40009FE235959FA3850150094F59A00C3CC472 +:107E5000CFC9FE4159EF6217C9CF702B3DA8126AF6 +:107E6000CC22B800D69B81FD2C963CA931B4F356A8 +:107E70006F712AA0DE51018240F6B759448613CDB6 +:107E80008F239D78197DF869A799D19F77DA0166CC +:107E9000001CEDCC64EB373BDD8C463ACBD87E87BB +:107EA000E2E4FE41CCB6C286FE26018B3344095B78 +:107EB0000023EDC5CC5F7D7F9993E371B5336613E5 +:107EC00008871D924838FC6BABA5075209A7311BE8 +:107ED000D50BB417C3615435FA78CC3657BFE74E8B +:107EE000E069C41EB339A91E8C5C0FD8E4F061941C +:107EF000B3666BB5BC16F7D7B49F330A485FA4BC12 +:107F0000A27D05C5113583E26993ED2427645332C0 +:107F1000C99E9043C9744EA89B64EB4AD94DF12980 +:107F20008C96D8E9BED7C2E23F625DB9248BFCD9FA +:107F3000EB2089B0555046DAD12E78C9A41C46B240 +:107F40004C846E81E1212AE790BD5D02EB03FABE0D +:107F5000B12CF0AA82F82A908EFDF302C97D29592E +:107F6000213BE053D45B053093844AACFE54AAFB1A +:107F70001BD3793FC03508B83E28C76AE91C325D7B +:107F800022E0FDE729AFC40FDADACED705B2FBF461 +:107F90000E92FF9104241FF3FE275A377C6404D30A +:107FA000045C346AB868E87FDA457858BF57627D68 +:107FB000AF01A91BE97E3AC416B8BDEF0917E16607 +:107FC000FD0F17BF162C07C817C04FFD28DFA82EBE +:107FD000A7BE71B57F86A34B48C4EF62D8B434EC1A +:107FE000A1FD13BFAF42BD374EA67BC96C44B94A51 +:107FF000F75F2E49637818A4BE85796993797D1857 +:10800000B67605E95ACBC96A08903DFD3BF201F509 +:10801000AD6F0E4D277AB5DF5213C6FD45F6EA4522 +:108020000E94BBE1C70EAF84AC179B2496FF4D7F27 +:10803000281DA07EF0A156C74D9F0D1FB417A33F6A +:10804000B86747BDFF8824878378D4D479325F42EC +:10805000D506536098F2B1591C5A3917E56CDADF2E +:108060009F0FECBE3BC3FE5FFAD865AC0F37E2BF93 +:10807000F97BE7999C4FC453CB6B91BFA9F9780A60 +:10808000C9D9BCFB5C951DF7BF5A1A384DF2AF0B2E +:10809000FD47EC1480BDFD157EF44315D433B4BF09 +:1080A000C9807DDDF3A0FC3F5670FB9739FD2B6B3B +:1080B00067B33C2A13713F99369E1458DEF4F59A43 +:1080C00070AA0C28371005D94E799040A63A0B8635 +:1080D00004F170217F27A8FE02769009F757B4FAC1 +:1080E000B89ADA9B4FF5B0F1C89E7CC2FF351B5F92 +:1080F000AF3EB2EAB7D40F03874C32E12460005997 +:1081000041BE754141A53C432382332BA1FFA6927A +:10811000CCECDFB877D67DEF274098ED5F33C052C7 +:10812000F2BB40BAE96D437AD1106D205C5C6CB54E +:108130002841963F8EFB8BBDD212DA0F6E15A054EC +:10814000A0F5715B89954196E1B7C53EDED732084F +:108150009F75A9EE3DCF521FF89D91F58D64CF1903 +:1081600055C275F36021C39F6E4760F05D56DF9B7B +:10817000F09D77A37D4D86A84CF9DE34784C76A32C +:108180009CA6A3E817AE371F7D57A63ED472D25BDC +:10819000C5F00BBD4075D60CBCCE5A06B9FFCD83D9 +:1081A00097E47513F2B8B6CCB93D4701701C7B7DDE +:1081B000D56EBCB796F2F3658005BFD851D3856FF5 +:1081C000CA824A3BF30F0CF17CBF8DDEB3B332CDD4 +:1081D0000FCD2F6AF2CACE6E2F62767B8DC284BC21 +:1081E0003BBD4696279DBF79D0C1F8DACD2915D47D +:1081F000376F5B380D2E44D914B7114B3884F1AC6E +:108200003307DC5EBC9FBEF9DB8F411119DF5A4991 +:1082100038442798FEBF18A126F210BCD7991F2F0B +:1082200025BE21ED5D8B362775D3DCA1B6580D44F4 +:1082300043CD563687A86D672D981118BA91240A38 +:10824000290485F8B0887A4FB802955EB43703B038 +:10825000EA3080B91011A8BEC6DEB9328BEC1ECB55 +:108260008B8F00BA6214F6D52CC23EF3188E41EC07 +:108270001DF1C466917DE9EFF1F7E28011BAE9DD05 +:1082800005831F56E07E54D0FCBB2B8609CF4342AA +:10829000F42724DF6FB27617A23DCD5E8EE79622DB +:1082A000FF7CD2EF2F92CABDA4D768ED16303E797D +:1082B00038BF507F95B333AD846B4155A11DE58B1D +:1082C000C2FBEBA88FEC8C9BC18472435A3CF3B287 +:1082D00097B2F75170A7E19B05F09E470C9A50FFAB +:1082E0004E3087E99E2C5A54763EF4C15D01698E6A +:1082F00074733815CF735E1094109A5A77EBF24668 +:108300008ACFC8DDA3168AFF982BF034D9952DC5E6 +:10831000CA77A1A93BEDCAF900C9F39B952E37C7CF +:10832000B419F1BD90FF13863AEEA638917F613CF7 +:10833000E912C5772C7EF98D13B3899A15C2C7C28D +:1083400021296AAA20A6C56AAC8CF3DC637906D51C +:108350005C959003BD7B80EA668BF66EE8F2A6E240 +:108360001FCB741B285FE089A7EC427DA121C9DEE9 +:1083700003747FF83CF9B9D06C8D4A29C467FC7B43 +:10838000CC3C41EF993CC7E547D95306F77058718B +:1083900085781EE7A742EBC47ED7E9E5FDBF53CB46 +:1083A000971E6FE6FC7DEF1BAFF72DE36BF7698A35 +:1083B000D7057CDFC89E5B4338CF3CA48FEAF41C12 +:1083C000CD3338A7BC5DAC7652DC751CE879D7F5A7 +:1083D000EAF9D5F308DF39F37E6A21CB5FF92E6025 +:1083E000EFEF81D302CB5F0FD5C5FE3B035ECA6BB7 +:1083F000C8B6A490F0FCFF96B7C97D259084B4F26E +:10840000C1FEF282E44F9A81F4B6D8CBEA1BFBCDD1 +:108410009B149F7A4FAB40F1C19BC217EC37C789C1 +:108420006F1E3DAA6C4E13C3ECFBC4C0F5850E65F0 +:1084300084696E98578093049D77D8B47377177DBD +:10844000CF84B6E1DC0BC42F70FE8E64767ECDA89F +:10845000D9DB51CCE6433288C90B72793447D3FC5F +:108460001D223DC8170C26B37BA1B0182C4D65E723 +:108470006CBEA65A66729A80CBD1ED6A7587E9BB4D +:10848000C915E2FCF16FC9619A1703A9CF2FA7BEE6 +:108490001018E37DF182D7A1F5FDD81C9A93777E61 +:1084A000DF0684433DDFD9A0E15BCBB7A4E53BDB2E +:1084B000C3F39D6D15A326CA5BE3227562DEA65148 +:1084C0006F44B9DFFCF393FBCCB8FE95DE1FDF9160 +:1084D000989D7DD56A56521A519748F3CF2F3FE3A6 +:1084E000F352FCB089D92965CEFACA7A7C07FBBC65 +:1084F000E17D1BE8DED73D4A10F58E889A9C67F82F +:108500005CDD671383C4D7579B14065A17F2F3BE7A +:108510008D33D95C359EB7D2FBF336D698CBE28348 +:1085200079E3E7AFD898DEC47911CFAB24B03E81B0 +:10853000F9AA798BBDF3F194EAF2043EC6B4B961AD +:108540004CCBCBF83EE03EDD37C45328AE9FB7EFAF +:10855000710544DF9CC4799F43CDA2396872DC77F2 +:108560007779BBA7131E6CA29DE6FBA9F2A5E727AE +:1085700079957C90E68EF13C05390E9343F398FF94 +:10858000AFE979E990D8BB35398F90CB71A1CFFD98 +:1085900005C14BFBF87B1D7B84EA07EBAE8CBE1755 +:1085A00047A87F5526702BA858ABCE044EF53E3613 +:1085B000B97E8576EC6B290FABDF087B9F6F8B5103 +:1085C000BD7EA7537CE0D73888E1FA80A0649A8A00 +:1085D000BF50FD3EEAC3FEBA37235041FC695ABF83 +:1085E000D82F86BD241FF1D418E17D52A0387FAC6E +:1085F000C5AF1EFBD134AC93A53EFEFF18B06D5243 +:108600005FD2E25DA7DDFFF813ACA7CA44BEEAB5AE +:10861000EF9EBA6DA64BD4DFEAB61979FCDB17AB37 +:1086200093E4B0FEACCB01F7CD74F247E7ABDFF8D3 +:10863000AF749A0BA7E48FE53A2E276BFD11FDADC1 +:1086400092FD4F919F2362CCA6607C4EFD5BAA21D8 +:10865000FF2E61BCDD84934319FCBBCCC165ACF03B +:10866000F177AEC7E4AF26BE53DE2BA5F49D039F82 +:108670000EE7921D4B5CFEAFD1FECB25B764DAAF9F +:1086800087D80101E58ED45ECF23BBEADB3F60FDD6 +:10869000BB5EEFDF9F13A7C9F1D1E396F0F7563A1F +:1086A000CDBBFFAB78FD0772A96C9D701300000075 +:1086B000000000000000000000000040000000007A +:1086C000000000000000004000000000000000006A +:1086D0000000002800000000000000000000001062 +:1086E000000000000000000000000040000000004A +:1086F000000000000000001000000000000000006A +:108700000000000800000000000000000000000061 +:108710000000000000000000000000000000000059 +:108720000000000000000000000000000000000049 +:108730000000000000000000000000000000000039 +:108740000000000000000000000000000000000029 +:108750000000000000000000000000000000000019 +:108760000000000000000000000000000000000009 +:1087700000000000000000000000000000000000F9 +:1087800000000000000000000000000000000000E9 +:1087900000000000000000000000000000000000D9 +:1087A00000000000000000000000000000000000C9 +:1087B00000000000000000000000000000000000B9 +:1087C00000000000000000000000000000000000A9 +:1087D0000000000000000000000000000000000099 +:1087E0000000000000000000000000000000000089 +:1087F0000000000000000000000000000000000079 +:108800000000000000000000000000000000000068 +:108810000000000000000000000000000000000058 +:108820000000332000100000000000080000332882 +:1088300000100000000000020000332000100000C3 +:108840000000001080000000000000000000000098 +:108850008000000000000000000000008000000018 +:108860000000000000000000800000000000000088 +:108870000000000000003358000100040000000167 +:1088800000003360000000000000000200003368B8 +:1088900000000000000000080000336C0000000031 +:1088A0000000000200003920000000000000000865 +:1088B00000003AF800400000000000400000393895 +:1088C000008000000000004800003A38004000002E +:1088D0000000000800003A480040000000000018B6 +:1088E00000003370002800000000002800003C2039 +:1088F000000800000000000100003C21000800000A +:108900000000000100003C220008000000000001FF +:1089100000002008001000000000001000002000EF +:1089200000000000000000088000000000000000BF +:108930000000000000000000000000000000000037 +:108940000000000000000000000000000000000027 +:108950000000000000000000000000000000000017 +:108960000000000000000000000000000000000007 +:1089700000000000000000000000000000000000F7 +:1089800000000000000000000000000000000000E7 +:1089900000000000000000000000000000000000D7 +:1089A00000000000000000000000000000000000C7 +:1089B00000000000000000000000000000000000B7 +:1089C00000000000000000000000000000000000A7 +:1089D0000000000000000000000000000000000097 +:1089E0000000000000000000800000000000000007 +:1089F00000000000800000000000000000000000F7 +:108A00008000000000000000000000008000000066 +:108A100000000000000000008000000000000000D6 +:108A200000000000800000000000000000000000C6 +:108A30008000000000000000000000008000000036 +:108A400000000000000000008000000000000000A6 +:108A50000000000080000000000000000000000096 +:108A60008000000000000000000000008000000006 +:108A700000000000000000000000000000000000F6 +:108A800000000000000000000000000000000000E6 +:108A900000000000000000000000000000000000D6 +:108AA00000000000000000000000000000000000C6 +:108AB0000000000080000000000000000000000036 +:108AC00080000000000000000000000080000000A6 +:108AD0000000000000000000000000000000000096 +:108AE0000000000080000000000000000000000006 +:108AF0008000000000000000000000008000000076 +:108B00000000000000000000000000000000000065 +:108B10000000000000000000000000000000000055 +:108B20000000000000000000000000000000000045 +:108B30000000000000000000000000000000000035 +:108B40000000000000000000000000000000000025 +:108B50008000000000000000000000000000000095 +:108B60000000000000000000000019C80000000024 +:108B700000000008000020080010000000000010A5 +:108B8000000020000000000000000008800000003D +:108B90000000000000000000800000000000000055 +:108BA00000000000000000000000000000000000C5 +:108BB00000000000000000000000000000004870FD +:108BC00000080000000000010000487100080000DB +:108BD00000000001000048720008000000000001D1 +:108BE0000000404000380000000000388000000015 +:108BF00000000000000000008000000000000000F5 +:108C000000000000800000000000000000000000E4 +:108C10008000000000000000000000008000000054 +:108C200000000000000000008000000000000000C4 +:108C300000000000800000000000000000000000B4 +:108C40008000000000000000000000008000000024 +:108C50000000000000000000800000000000000094 +:108C60000000000080000000000000000000000084 +:108C700000000000000000000000000000000000F4 +:108C800000000000000000000000000000000000E4 +:108C900000000000000000000000000000000000D4 +:108CA0000000000000000000000000008000000044 +:108CB0000000000000000000800000000000000034 +:108CC00000000000000000000000000000000000A4 +:108CD0008000000000000000000000008000000094 +:108CE0000000000000000000800000000000000004 +:108CF00000000000800000000000000000000000F4 +:108D00008000000000000000000000008000000063 +:108D100000000000000000000000400000400000D3 +:108D2000000000400000480000400000000000403B +:108D30000000482E00400000000000010000480034 +:108D40000040000200000001000048010040000255 +:108D50000000000000003000004000000000004063 +:108D60008000000000000000000000000000300053 +:108D7000000800400000000400003004000800402B +:108D80000000000400003B800028000000000028D4 +:108D900000003BD0001000000000001000003BDA93 +:108DA00000100000000000010000380000800000FA +:108DB0000000008000003800000800800000000271 +:108DC00000003900004000000000004000002008C2 +:108DD0000010000000000010000020000000000053 +:108DE0000000000800005198000800000000000189 +:108DF0000000519900080000000000010000519A95 +:108E0000000800000000000100003980001000048C +:108E100000000004000051A80030001800000010FD +:108E2000000051B000300018000000028000000077 +:108E300000000000000000008000000000000000B2 +:108E400000000000800000000000000000000000A2 +:108E50008000000000000000000000008000000012 +:108E60000000000000000000800000000000000082 +:108E70000000000080000000000000000000000072 +:108E800000000000000000000000000000000000E2 +:108E900000000000000000000000000000000000D2 +:108EA00000000000000000000000000000000000C2 +:108EB00080000000000000000000000080000000B2 +:108EC00000000000000000000000000000000000A2 +:108ED0000000000080000000000000000000000012 +:108EE0008000000000000000000000008000000082 +:108EF00000000000000000008000000000000000F2 +:108F000000000000800000000000000000000000E1 +:108F1000000023E800800000000000800000000145 +:108F20000000000000000000000020080010000009 +:108F300000000010000020000000000000000008F9 +:108F400000002E70000800000000000100002E71DB +:108F5000000800000000000100002E720008000060 +:108F600000000001000024E8003800000000003884 +:108F700000002DD000080000000000088000000064 +:108F80000000000000000000800000000000000061 +:108F90000000000080000000000000000000000051 +:108FA00080000000000000000000000080000000C1 +:108FB0000000000000000000800000000000000031 +:108FC00000000000000000000000000000000000A1 +:108FD0000000000000000000000000000000000091 +:108FE0000000000000000000000000000000000081 +:108FF00000000000800000000000000000000000F1 +:1090000080000000000000000000000000000000E0 +:1090100000000000000000008000000000000000D0 +:1090200000000000800000000000000000000000C0 +:109030008000000000000000000000008000000030 +:1090400000000000000000008000000000000000A0 +:1090500000000000000025000040000000000008A3 +:1090600000002508004000000000002080000000F3 +:109070000000000000000000800000000000000070 +:109080000000000080000000000000000000000060 +:1090900080000000000000000000000080000000D0 +:1090A0000000000000000000000030000000000090 +:1090B00000001000000050A10000000000000001AE +:1090C000000050B80000000000000002000050C87E +:1090D0000090000800000008800000000000000070 +:1090E00000000000000029600008000000000001EE +:1090F0000000296100080000000000010000297044 +:1091000000080004000000020000297800080004A4 +:1091100000000004800000000000000000000000CB +:1091200000002FB0000800000000000400002FB471 +:10913000000800000000000400002FC00000000034 +:109140000000000800002FC8000000000000000818 +:10915000000030000000000000000010000050403F +:1091600000010001000000010000500000000000AC +:1091700000000020000008080010000000000004AB +:109180000000080C0010000000000001000008B7FB +:109190000000000000000001000008B60000000010 +:1091A000000000010000100000400020000000044A +:1091B000000010040040002000000004000010081F +:1091C00000400020000000020000100A00400020C3 +:1091D000000000020000100C004000200000000110 +:1091E0000000100D00400020000000010000100EE3 +:1091F000004000200000000100001010004000208E +:1092000000000004000010140040002000000004D2 +:109210000000101800400020000000040000101C96 +:109220000040002000000004000030000100008029 +:109230000008000400003004010000800008000461 +:109240000000000A0000000000000000000030687C +:109250000100008000000001000030690100008072 +:10926000000000010000306C0100008000000002DE +:109270000000306E0100008000000002000030702D +:109280000100008000000004000030740100008034 +:1092900000000004000030660100008000000002B1 +:1092A0000000306401000080000000010000306018 +:1092B0000100008000000002000030620100008018 +:1092C0000000000200003050010000800000000497 +:1092D00000003054010000800000000400003058FD +:1092E00001000080000000040000305C01000080EC +:1092F000000000040000307C01000080000000013C +:109300000000307D010000800000000100001C18FA +:10931000001000000000000400001C3000100000DD +:109320000000000400001C380010000000000004D1 +:10933000800000000000000000000000800000002D +:10934000000000000000000080000000000000009D +:10935000000000008000000000000000000000008D +:1093600000004C10000800000000000200004C1239 +:10937000000800000000000200004C14000800007B +:109380000000000200004C1600080000000000026F +:1093900000004C20000800000000000800004C0005 +:1093A000000800000000000200004C02000800005D +:1093B0000000000100004C04000800000000000252 +:1093C00000004C30000800000000000800004C4085 +:1093D000000800000000000400004C4400080000E9 +:1093E0000000000100004C500008000000000002D6 +:1093F00000004C54000800000000000200004C5225 +:10940000000800000000000200004C60000800009E +:10941000000000040000140000080000000000022A +:109420000000140200080000000000010000140405 +:1094300000080000000000020000141000080000F6 +:1094400000000002000014140008000000000002E8 +:10945000000014160008000000000002000019B807 +:1094600000080000000000080000142000080000B0 +:1094700000000002000014240008000000000002A8 +:10948000000019C8000800000000000800002C10AF +:10949000000800000000000100002C11000800007E +:1094A0000000000100002C12000800000000000174 +:1094B00000002C13000800000000000100002C0038 +:1094C000000800000000000200002C02000800005C +:1094D0000000000100002C04000800000000000251 +:1094E00000002C30000800000000000200002C32B8 +:1094F000000800000000000200002C3400080000FA +:109500000000000200002C20000800000000000104 +:1095100000002C21000800000000000100002C22A7 +:10952000000800000000000100002C2300080000DB +:109530000000000100002C240008000000000001D1 +:1095400000002C25000800000000000100002C266F +:109550000008000000000001000014800008000066 +:10956000000000020000148200080000000000015A +:1095700000001484000800000000000200001492A3 +:1095800000C00018000000020000149000C0001885 +:10959000000000020000149C00C000180000000839 +:1095A0000000149400C0001800000008000014A778 +:1095B00000C0001800000001000014A400C0001842 +:1095C00000000002000014A600C000180000000106 +:1095D000000016100008000000000008000016201F +:1095E000000800000000000800001630000800001D +:1095F00000000008800000000000000000000000E3 +:10960000800000000000000000000000800000005A +:1096100000000000000000008000000000000000CA +:1096200000000000800000000000000000000000BA +:10963000800000000000000000000000800000002A +:10964000000000000000000080000000000000009A +:10965000000000008000000000000000000000008A +:1096600080000000000000000000000080000000FA +:10967000000000000000000080000000000000006A +:10968000000000008000000000000000000000005A +:1096900080000000000000000000000080000000CA +:1096A000000000000000000080000000000000003A +:1096B000000000008000000000000000000000002A +:1096C000800000000000000000000000800000009A +:1096D000000000000000000080000000000000000A +:1096E00000000000800000000000000000000000FA +:1096F000800000000000000000000000800000006A +:1097000000000000000000008000000000000000D9 +:1097100000000000800000000000000000000000C9 +:109720008000000000000000000000008000000039 +:1097300000000000000000008000000000000000A9 +:109740000000000080000000000000000000000099 +:109750008000000000000000000000008000000009 +:109760000000000000000000800000000000000079 +:109770000000000080000000000000000000000069 +:1097800080000000000000000000000080000000D9 +:109790000000000000000000800000000000000049 +:1097A0000000000080000000000000000000000039 +:1097B00080000000000000000000000080000000A9 +:1097C0000000000000000000800000000000000019 +:1097D0000000000080000000000000000000000009 +:1097E0008000000000000000000000008000000079 +:1097F00000000000000000008000000000000000E9 +:1098000000000000800000000000000000000000D8 +:109810008000000000000000000000008000000048 +:1098200000000000000000008000000000000000B8 +:1098300000000000800000000000000000000000A8 +:109840008000000000000000000000008000000018 +:109850000000000000000000800000000000000088 +:109860000000000080000000000000000000000078 +:1098700080000000000000000000000080000000E8 +:109880000000000000000000800000000000000058 +:109890000000000080000000000000000000000048 +:1098A0008000000000000000000000000000000038 +:1098B0000000000000000000800000000000000028 +:1098C0000000000000000000070C1E000000000067 +:00000001FF --- linux-4.4.0.orig/firmware/bnx2x/bnx2x-e1h-7.12.30.0.fw.ihex +++ linux-4.4.0/firmware/bnx2x/bnx2x-e1h-7.12.30.0.fw.ihex @@ -0,0 +1,11190 @@ +:10000000000021F800000068000005D80000226808 +:10001000000036EC000028480000007000005F3847 +:1000200000007A8C00005FB0000000A00000DA4001 +:100030000000D2DC0000DAE8000000880001ADC852 +:1000400000003CA40001AE58000000880001EB0055 +:100050000000BD780001EB900000120C0002A91016 +:10006000000000040002BB20020600DC00000001CA +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:10009000010600B800000000010600C800000000D2 +:1000A0000206016C00000000010600BC0000000018 +:1000B000010600CC000000000206017000000000F4 +:1000C000020D004400000032030D004C0004020346 +:1000D000040D005C00000004030D008C00110207F9 +:1000E000020D015C00000001030D01640002021812 +:1000F000020D020400000001030D020C0003021AAD +:10010000030D02200002021D040D028000000012F7 +:10011000030D03000018021F040D03600000000C13 +:10012000040D400000000A00030D0004000F023718 +:10013000020D01140000000D020D01180000002D39 +:10014000020D01140000001D020D01180000003D09 +:10015000020D01140000004D020D01180000006D99 +:10016000020D01140000005D020D01180000007D69 +:10017000031010000003024602101050000000019E +:10018000071011000010024908101140000000087B +:100190000710116000100259081011A0000000188B +:1001A000071018000200026904104C000000010052 +:1001B00002104028000000100310404000020469B3 +:1001C0000210405800280000021040840084924A27 +:1001D0000210405800000000030C20080003046BCC +:1001E000030C201C0004046E030C20380011047260 +:1001F000040C207C0000004F030C21B80011048384 +:10020000040C21FC0000000F030C223800040494AD +:10021000010C224800000000010C224C00000000EC +:10022000010C225000000000010C225400000000CC +:10023000010C225800000000010C225C00000000AC +:10024000010C226000000000010C2264000000008C +:10025000010C226800000000010C226C000000006C +:10026000010C227000000000010C2274000000004C +:10027000010C227800000000010C227C000000002C +:100280000A00000100000001020C2000000003E849 +:100290000A00000100000002020C20000000000A19 +:1002A0000A00000100000004020C20000000000110 +:1002B0000520040000860000062007800010049836 +:1002C000042200000000400004232400000000403D +:1002D000032212500010049A0422B14000000020B2 +:1002E0000422C800000000060322C818000404AA63 +:1002F0000422C8280000000C0322C858000404AEE1 +:100300000422C8680000000C0322C898000404B24C +:100310000422C8A80000000C0322C8D8000404B6B8 +:100320000422C8E80000000C0322C918000404BA23 +:100330000422C9280000000C0322C958000404BE8E +:100340000422C9680000000C0322C998000404C2FA +:100350000422C9A80000000C0322C9D8000404C666 +:100360000422C9E80000000C0322CA18000404CAD1 +:100370000422CA280000000C0322CA58000404CE3C +:100380000422CA680000000C0322CA98000404D2A8 +:100390000422CAA80000000C0322CAD8000404D614 +:1003A0000422CAE80000000C0322CB18000404DA7F +:1003B0000422CB280000000C0322CB58000404DEEA +:1003C0000422CB680000000C0322CB98000404E256 +:1003D0000422CBA80000000C0322CBD8000404E6C2 +:1003E0000422CBE80000000C0322CC18000404EA2D +:1003F0000422CC280000000C0322CC58000404EE98 +:100400000422CC680000000C0322CC98000404F203 +:100410000422CCA80000000C0322CCD8000404F66F +:100420000422CCE80000000C0322CD18000404FADA +:100430000422CD280000000C0322CD58000404FE45 +:100440000422CD680000000C0322CD9800040502B0 +:100450000422CDA80000000C0322CDD8000405061C +:100460000422CDE80000000C0322CE180004050A87 +:100470000422CE280000000C0322CE580004050EF2 +:100480000422CE680000000C0322CE98000405125E +:100490000422CEA80000000C0322CED800040516CA +:1004A0000422CEE80000000C0322CF180004051A35 +:1004B0000422CF280000000C0322CF580004051EA0 +:1004C0000422CF680000000C0322CF98000405220C +:1004D0000422CFA80000000C0322CFD80004052678 +:1004E0000422CFE800000006022380000000001074 +:1004F00002238040000000120223808000000030B0 +:10050000022380C00000000E022383800007A12088 +:10051000022383C0000001F402238BC0000000010D +:100520000A00000200000001022383000007A1204E +:1005300002238340000001F40A00000200000002D0 +:10054000022383000000138802238340000000057B +:100550000A000002000000040223830000000138AA +:1005600002238340000000000524000036500000F4 +:100570000524800006540D9406248B306D00052A56 +:100580000A000001000000020223148000000000A5 +:100590000A00000100000004022314800000000093 +:1005A0000120000000000000012000040000000005 +:1005B00001200008000000000120000C00000000E5 +:1005C00001200010000000000120001400000000C5 +:1005D00003200020001A052C032000A40002054679 +:1005E000022002240000000002200234000000006B +:1005F0000220024C00000000022002E40000FFFF85 +:100600000820200000000800042211080000000259 +:1006100004221290000000060422340000000002B0 +:10062000042260400000003004228C000000001012 +:100630000422111000000002042212A8000000068B +:10064000042234080000000204226100000000308F +:1006500004228C4000000010042211180000000247 +:10066000042212C000000006042234100000000220 +:10067000042261C00000003004228C8000000010C1 +:100680000422112000000002042212D800000006FB +:1006900004223418000000020422628000000030AE +:1006A00004228CC000000010042211280000000267 +:1006B000042212F000000006042234200000000290 +:1006C000042263400000003004228D00000000106E +:1006D000042211300000000204221308000000066A +:1006E00004223428000000020422640000000030CC +:1006F00004228D4000000010042211380000000286 +:1007000004221320000000060422343000000002FE +:10071000042264C00000003004228D80000000101C +:1007200004221140000000020422133800000006D9 +:1007300004223438000000020422658000000030EA +:1007400004228DC00000001004102400000000E00E +:100750000310201C00020548021020C00000000207 +:10076000031020040002054A0217000800000002DE +:100770000217002C00000003031700380002054C8C +:10078000031700480005054E0317006000050553D8 +:100790000317007800020558021700040000000F3C +:1007A0000210800000001080041080400000000251 +:1007B000021080AC00000000021080380000001021 +:1007C00002108100000000000410812000000002DF +:1007D00002108008000002B5021080100000000026 +:1007E000021081080001FFFF041082000000004A8F +:1007F00004108140000000020210800000001A80F6 +:100800000410900000000024041091200000004A11 +:10081000041093700000004A041095C00000004AC4 +:1008200002108004000010800410804800000002C4 +:10083000021080B0000000010210803C0000001097 +:100840000210810400000000041081280000000252 +:100850000210800C000002B502108014000000009D +:100860000210810C0001FFFF041084000000004A08 +:1008700004108148000000020210800400001A8069 +:100880000410909000000024041092480000004AD8 +:10089000041094980000004A041096E80000004AF2 +:1008A0000210800000001080041080400000000250 +:1008B000021080AC0000000202108038000000101E +:1008C00002108100000000000410812000000002DE +:1008D00002108008000002B5021080100000000025 +:1008E000021081080001FFFF041082000000004A8E +:1008F00004108140000000020210800000001A80F5 +:100900000410900000000024041091200000004A10 +:10091000041093700000004A041095C00000004AC3 +:1009200002108004000010800410804800000002C3 +:10093000021080B0000000030210803C0000001094 +:100940000210810400000000041081280000000251 +:100950000210800C000002B502108014000000009C +:100960000210810C0001FFFF041084000000004A07 +:1009700004108148000000020210800400001A8068 +:100980000410909000000024041092480000004AD7 +:10099000041094980000004A041096E80000004AF1 +:1009A000021080000000108004108040000000024F +:1009B000021080AC0000000402108038000000101B +:1009C00002108100000000000410812000000002DD +:1009D00002108008000002B5021080100000000024 +:1009E000021081080001FFFF041082000000004A8D +:1009F00004108140000000020210800000001A80F4 +:100A00000410900000000024041091200000004A0F +:100A1000041093700000004A041095C00000004AC2 +:100A200002108004000010800410804800000002C2 +:100A3000021080B0000000050210803C0000001091 +:100A40000210810400000000041081280000000250 +:100A50000210800C000002B502108014000000009B +:100A60000210810C0001FFFF041084000000004A06 +:100A700004108148000000020210800400001A8067 +:100A80000410909000000024041092480000004AD6 +:100A9000041094980000004A041096E80000004AF0 +:100AA000021080000000108004108040000000024E +:100AB000021080AC00000006021080380000001018 +:100AC00002108100000000000410812000000002DC +:100AD00002108008000002B5021080100000000023 +:100AE000021081080001FFFF041082000000004A8C +:100AF00004108140000000020210800000001A80F3 +:100B00000410900000000024041091200000004A0E +:100B1000041093700000004A041095C00000004AC1 +:100B200002108004000010800410804800000002C1 +:100B3000021080B0000000070210803C000000108E +:100B4000021081040000000004108128000000024F +:100B50000210800C000002B502108014000000009A +:100B60000210810C0001FFFF041084000000004A05 +:100B700004108148000000020210800400001A8066 +:100B80000410909000000024041092480000004AD5 +:100B9000041094980000004A041096E80000004AEF +:100BA0000200A468000B01C80300A2940004055AC7 +:100BB0000A000001000000800200A5F8000000000B +:100BC0000A000001000001000200A5F80000000179 +:100BD0000200A270000000000200A27400000000E9 +:100BE0000200A270000000000200A27400000000D9 +:100BF0000200A270000000000200A27400000000C9 +:100C00000200A270000000000200A27400000000B8 +:100C1000030100B40002055E020100DC00000001D7 +:100C200003010100000205600201007C00300000A9 +:100C300002010084000000280201008C0000000076 +:100C4000020101300000000402010328000000003E +:100C50000201055400000030020160580000FFFF4F +:100C600002016070000000070201608000000001C6 +:100C7000020100C400000001020100CC00000001DC +:100C8000020100F800000001020100F00000000174 +:100C900002010080003000000201008800000028EE +:100CA0000201009000000000020101340000000475 +:100CB0000201032C00000000020105640000003066 +:100CC0000201605C0000FFFF020160740000000789 +:100CD0000201608400000001020100C80000000160 +:100CE000020100D000000001020100FC0000000130 +:100CF000020100F4000000010401013800000011AD +:100D00000401017C00000011040101380000001101 +:100D10000401017C000000110401013800000011F1 +:100D20000401017C000000110401013800000011E1 +:100D30000401017C00000011021400000000000109 +:100D40000214000C000000010314004000020562C0 +:100D50000214000C0000000002140000000000005B +:100D60000214006C000000000214000400000001E6 +:100D70000214003000000001021400040000000012 +:100D80000214005C000000000214000800000001D2 +:100D900002140034000000010214000800000000EA +:100DA0000214006000000000030400040012056447 +:100DB00002040054000000430204005C000000062E +:100DC00002040070000000040304007800040576AB +:100DD00004040088000000050304009C0003057A59 +:100DE000040400A800000004030400B80005057D09 +:100DF000040400CC00000004030400DC00040582AD +:100E0000040400EC000000040104012400000000C0 +:100E100001040128000000000104012C0000000072 +:100E20000104013000000000020401340000000F42 +:100E3000020401D000008906021205B00000000182 +:100E400003120490002205860312066C000205A816 +:100E500002120388000000640212039000000008E0 +:100E60000312039C000305AA031203BC000305AD93 +:100E7000021203D0000000000212036C0000000107 +:100E8000021203680000003F031201BC003C05B0E1 +:100E9000031202B0000205EC03120324000205EE67 +:100EA000021205B400000001021201B000000001AE +:100EB00007103800000505F007103820000505F57B +:100EC00007103C00000505FA03168030000805FFF6 +:100ED0000216805400000002031680600005060719 +:100EE0000416807400000007031680900002060CB0 +:100EF0000316809C0005060E041680B00000000753 +:100F0000031680CC00080613021680F000000007CC +:100F1000041680F40000000C031681240004061B54 +:100F2000041681340000000C031681640032061F91 +:100F30000316823400070651041682500000000494 +:100F4000031682600002065804168268000000083A +:100F5000031682880008065A041682A80000000AB8 +:100F600002168804000000040316880C00100662B4 +:100F70000316E000001006720416E40C0000000CDA +:100F80000316E43C000406820416E44C0000000C46 +:100F90000316E47C002E06860416E53400000004E7 +:100FA0000316E544000206B40416E54C00000008F0 +:100FB0000316E56C000606B60316E6BC000806BC80 +:100FC000021680EC000000FF03040408001406C4AD +:100FD000020404CC0000000103050044000206D80E +:100FE00003050050000406DA040500600000000458 +:100FF00003050090001306DE020501140000000145 +:101000000305011C000206F10205020400000001B4 +:101010000305020C000206F30305021C000306F59B +:10102000040502400000000A03050280002006F8C3 +:101030000405400000000D0003050004001007181F +:10104000020500E00000000E020500E40000002E92 +:10105000020500E00000001E020500E40000003E62 +:10106000020500E00000004E020500E40000006EF2 +:10107000020500E00000005E020500E40000007EC2 +:101080000416402400000002031640300003072825 +:101090000216404400000020021640700000001CB0 +:1010A0000216420800000001021642100000000172 +:1010B0000216422000000001021642280000000132 +:1010C0000216423000000001021642380000000102 +:1010D00002164260000000020A0000010000000148 +:1010E0000216401C0003D0900A000001000000021C +:1010F0000216401C000009C40A00000100000004A0 +:101100000216401C0000009C021640000000000176 +:10111000021640D800000001031640080003072B08 +:101120000216424000000000021642480000000083 +:101130000816427000000002021642500000000033 +:10114000021642580000000008164280000000020B +:10115000030420080004072E0304201C00040732A7 +:1011600002042038000000200404203C0000001F7E +:10117000020420B800000001040420BC0000005F4D +:10118000030422380004073601042248000000004E +:101190000104224C00000000010422500000000065 +:1011A0000104225400000000010422580000000045 +:1011B0000104225C00000000010422600000000025 +:1011C0000104226400000000010422680000000005 +:1011D0000104226C000000000104227000000000E5 +:1011E00001042274000000000104227800000000C5 +:1011F0000104227C000000000A0000010000000140 +:1012000002042000000003E80A00000100000002C0 +:10121000020420000000000A0A000001000000048F +:101220000204200000000001051804000070000006 +:10123000061807600014073A041A00000000400076 +:10124000041B240000000040031A1EC80002073CD3 +:10125000031A40400004073E041A405000000006F4 +:10126000031A406800020742031A52C000020744F2 +:10127000031A800003F90746041A8FE400000007F0 +:10128000031AA08000100B3F021B800000000034F6 +:10129000021B804000000018021B80800000000C30 +:1012A000021B80C000000020021B83800007A120D9 +:1012B000021B83C0000001F4021B8BC00000000170 +:1012C0000A00000200000001021B83000007A120A9 +:1012D000021B8340000001F40A000002000000022B +:1012E000021B830000001388021B834000000005DE +:1012F0000A00000200000004021B83000000013805 +:10130000021B834000000000051C0000317A000031 +:10131000051C800035910C5F051D0000137B19C46E +:10132000061D2B105A9E0B4F0A0000010000000200 +:10133000021B1480000000000A00000100000004ED +:10134000021B1480000000000118000000000000D3 +:10135000011800040000000001180008000000004F +:101360000118000C0000000001180010000000002F +:10137000011800140000000003180020001A0B518F +:10138000031800A400020B6B0218022400000000E6 +:1013900002180234000000000218024C0000000095 +:1013A000021802E4000000FF08181000000004000A +:1013B000041A300000000010041A308000000010F1 +:1013C000041A310000000010041A318000000010DF +:1013D000041A330000000012041A339000000012B7 +:1013E000041A342000000070041A90000000000667 +:1013F000041A304000000010041A30C00000001031 +:10140000041A314000000010041A31C0000000101E +:10141000041A334800000012041A33D800000012E6 +:10142000041A35E000000070041A9018000000064D +:10143000031A400000020B6D041A50000000000265 +:10144000041A508000000012031A614000020B6F62 +:10145000041A903000000002041AA00000000002EC +:10146000031A400800020B71041A50100000000219 +:10147000041A50C800000012031A614800020B73DE +:10148000041A903800000002041AA00800000002AC +:10149000031A401000020B75041A502000000002CD +:1014A000041A511000000012031A615000020B7759 +:1014B000041A904000000002041AA010000000026C +:1014C000031A401800020B79041A50300000000281 +:1014D000041A515800000012031A615800020B7BD5 +:1014E000041A904800000002041AA018000000022C +:1014F000031A402000020B7D041A50400000000235 +:10150000041A51A000000012031A616000020B7F50 +:10151000041A905000000002041AA02000000002EB +:10152000031A402800020B81041A505000000002E8 +:10153000041A51E800000012031A616800020B83CC +:10154000041A905800000002041AA02800000002AB +:10155000031A403000020B85041A5060000000029C +:10156000041A523000000012031A617000020B8747 +:10157000041A906000000002041AA030000000026B +:10158000031A403800020B89041A50700000000250 +:10159000041A527800000012031A617800020B8BC3 +:1015A000041A906800000002041AA038000000022B +:1015B000020E004C00000032030E005400040B8D9C +:1015C000040E006400000004030E009400130B914D +:1015D000020E014400000001030E014C00020BA4A6 +:1015E000020E020400000001030E020C00020BA612 +:1015F000030E021C00040BA8030E0280001B0BACA0 +:10160000040E02EC00000017040E20000000080089 +:10161000030E000400110BC7020E01100000000FA2 +:10162000020E01140000002F020E01100000001F26 +:10163000020E01140000003F020E01100000004FD6 +:10164000020E01140000006F020E01100000005F86 +:10165000020E01140000007F020C100000000028A0 +:10166000030C400800040BD8030C401C00040BDCE6 +:10167000030C403800050BE0040C404C0000005BFC +:10168000030C41B800050BE5040C41CC0000001B25 +:10169000030C423800040BEA010C42480000000031 +:1016A000010C424C00000000010C42500000000000 +:1016B000010C425400000000010C425800000000E0 +:1016C000010C425C00000000010C426000000000C0 +:1016D000010C426400000000010C426800000000A0 +:1016E000010C426C00000000010C42700000000080 +:1016F000010C427400000000010C42780000000060 +:10170000010C427C00000000010C4280000000003F +:101710000A00000100000001020C4000000003E884 +:101720000A00000100000002020C40000000000A54 +:101730000A00000100000004020C4000000000014B +:1017400005300400009E00000630076800130BEE11 +:101750000432000000004000043324000000004078 +:1017600004323E800000001003323EC000020BF045 +:10177000033274C000080BF20332850000100BFA2C +:10178000023380000000001A023380400000004E47 +:101790000233808000000010023380C0000000206F +:1017A000023383800007A120023383C0000001F4CC +:1017B00002338BC0000000010A000002000000019B +:1017C000023383000007A12002338340000001F4AC +:1017D0000A000002000000020233830000001388A8 +:1017E00002338340000000050A00000200000004EC +:1017F0000233830000000138023383400000000000 +:1018000005340000346A000005348000283C0D1BBC +:101810000535000024B7172A0535800034C8205844 +:10182000053600001CB42D8A063640B037EA0C0A93 +:101830000A000001000000020233148000000000D2 +:101840000A000001000000040233148000000000C0 +:101850000130000000000000013000040000000022 +:1018600001300008000000000130000C0000000002 +:1018700001300010000000000130001400000000E2 +:1018800003300020001A0C0C033000A400020C26C8 +:101890000230022400000000023002340000000088 +:1018A0000230024C00000000023002E40000FFFFA2 +:1018B000083020000000080004321000000001C0C1 +:1018C00004321E000000003804323000000001C065 +:1018D00004325000000000200432510000000020BB +:1018E00004325200000000200432530000000020A7 +:1018F0000432540000000020043255000000002093 +:10190000043256000000002004325700000000207E +:10191000043258000000002004325900000000206A +:1019200004325A000000002004325B000000002056 +:1019300004325C000000002004325D000000002042 +:1019400004325E000000002004325F00000000202E +:1019500004328450000000020332846000040C282A +:1019600004321700000001C004321EE000000038FD +:1019700004323700000001C0043250800000002013 +:101980000432518000000020043252800000002008 +:1019900004325380000000200432548000000020F4 +:1019A00004325580000000200432568000000020E0 +:1019B00004325780000000200432588000000020CC +:1019C000043259800000002004325A8000000020B8 +:1019D00004325B800000002004325C8000000020A4 +:1019E00004325D800000002004325E800000002090 +:1019F00004325F800000002004328458000000029E +:101A00000332847000040C2C0432401000000002E9 +:101A10000432841000000002043240200000000262 +:101A2000043284180000000204324030000000023A +:101A30000432842000000002043240400000000212 +:101A400004328428000000020432405000000002EA +:101A500004328430000000020432406000000002C2 +:101A6000043284380000000204324070000000029A +:101A70000432844000000002043240800000000272 +:101A800004328448000000020202005800000032C4 +:101A90000302006000040C30040200700000000427 +:101AA000030200A0000E0C34030200DC00070C420D +:101AB000020200FC000000060202012000000000FB +:101AC0000202013400000002020201B00000000125 +:101AD0000202020C000000010302021400020C4981 +:101AE00002020404000000010302040C00020C4B7B +:101AF0000302041C00040C4D0302048000200C515E +:101B00000402050000000012040280000000200012 +:101B10000302000400140C7102020108000000C856 +:101B20000202011800000002020201C400000000CD +:101B3000020201CC00000000020201D400000002F9 +:101B4000020201DC00000002020201E4000000FFCA +:101B5000020201EC000000FF0202010C000000C8BC +:101B60000202011C00000002020201C80000000085 +:101B7000020201D000000000020201D800000002B1 +:101B8000020201E000000002020201E8000000FF82 +:101B9000020201F0000000FF02020108000000C87C +:101BA0000202011800000002020201C4000000004D +:101BB000020201CC00000000020201D40000000279 +:101BC000020201DC00000002020201E4000000FF4A +:101BD000020201EC000000FF0202010C000000C83C +:101BE0000202011C00000002020201C80000000005 +:101BF000020201D000000000020201D80000000231 +:101C0000020201E000000002020201E8000000FF01 +:101C1000020201F0000000FF02020108000000C8FB +:101C20000202011800000002020201C400000000CC +:101C3000020201CC00000000020201D400000002F8 +:101C4000020201DC00000002020201E4000000FFC9 +:101C5000020201EC000000FF0202010C000000C8BB +:101C60000202011C00000002020201C80000000084 +:101C7000020201D000000000020201D800000002B0 +:101C8000020201E000000002020201E8000000FF81 +:101C9000020201F0000000FF02020108000000C87B +:101CA0000202011800000002020201C4000000004C +:101CB000020201CC00000000020201D40000000278 +:101CC000020201DC00000002020201E4000000FF49 +:101CD000020201EC000000FF0202010C000000C83B +:101CE0000202011C00000002020201C80000000004 +:101CF000020201D000000000020201D80000000230 +:101D0000020201E000000002020201E8000000FF00 +:101D1000020201F0000000FF02161000000000287F +:101D20000316600800030C850316601C00040C8871 +:101D300003166038000D0C8C0416606C0000001354 +:101D4000031660B800020C99041660C00000003E43 +:101D5000021661B800000001041661BC0000001FFB +:101D60000316623800040C9B011662480000000054 +:101D70000116624C000000000116625000000000D5 +:101D800001166254000000000116625800000000B5 +:101D90000116625C00000000011662600000000095 +:101DA0000116626400000000011662680000000075 +:101DB0000116626C00000000011662700000000055 +:101DC0000116627400000000011662780000000035 +:101DD0000116627C000000000A0000010000000102 +:101DE00002166000000003E80A0000010000000283 +:101DF000021660000000000A0A0000010000000452 +:101E000002166000000000010528040000870000A1 +:101E10000628076800130C9F042A000000004000F9 +:101E2000042B240000000040032A300000020CA113 +:101E3000032A400000100CA3032A840800080CB3F6 +:101E4000032A93C800040CBB032A96F000020CBFBF +:101E5000042A96F800000006032A994000020CC1EB +:101E6000022A9A2800000001032AC0C000100CC3F7 +:101E7000022B800000000000022B804000000018B0 +:101E8000022B80800000000C022B80C00000006646 +:101E9000022B83800007A120022B83C0000001F4E5 +:101EA000022B8BC0000000010A00000200000001AC +:101EB000022B83000007A120022B8340000001F4C5 +:101EC0000A00000200000002022B830000001388B9 +:101ED000022B8340000000050A00000200000004FD +:101EE000022B830000000138022B83400000000019 +:101EF0000A00000100000020022A9A2C00000000C5 +:101F0000052C000038390000052C80003B470E0FDF +:101F1000052D00003C671CE1052D80000D892BFB81 +:101F2000062D9A804CB00CD30A000001000000027C +:101F3000022B1480000000000A00000100000004D1 +:101F4000022B1480000000000128000000000000A7 +:101F50000128000400000000012800080000000023 +:101F60000128000C00000000012800100000000003 +:101F7000012800140000000003280020001A0CD5DE +:101F8000032800A400020CEF022802240000000035 +:101F900002280234000000000228024C0000000069 +:101FA000022802E40000FFFF0828200000000800CB +:101FB000042A500000000002042A50100000000211 +:101FC000042A502000000002042A503000000002C1 +:101FD000042A93E000000020042A94E00000000E90 +:101FE000032A951800020CF1042A95600000000EE7 +:101FF000032A959800020CF3042A95E00000000ED5 +:10200000032A961800020CF5042A96600000000EC0 +:10201000032A969800020CF7032A971000020CF985 +:10202000042A500800000002042A50180000000290 +:10203000042A502800000002042A50380000000240 +:10204000042A946000000020042A95200000000E5D +:10205000032A955800020CFB042A95A00000000EEC +:10206000032A95D800020CFD042A96200000000ED9 +:10207000032A965800020CFF042A96A00000000EC6 +:10208000032A96D800020D01032A971800020D03B7 +:10209000042A50480000000E032A972000100D0566 +:1020A000042A995000000002042AC0000000000227 +:1020B000042A50800000000E032A976000100D15BE +:1020C000042A995800000002042AC00800000002F7 +:1020D000042A50B80000000E032A97A000100D2516 +:1020E000042A996000000002042AC01000000002C7 +:1020F000042A50F00000000E032A97E000100D356E +:10210000042A996800000002042AC0180000000296 +:10211000042A51280000000E032A982000100D45C3 +:10212000042A997000000002042AC0200000000266 +:10213000042A51600000000E032A986000100D551B +:10214000042A997800000002042AC0280000000236 +:10215000042A51980000000E032A98A000100D6573 +:10216000042A998000000002042AC0300000000206 +:10217000042A51D00000000E032A98E000100D75CB +:10218000042A998800000002042AC03800000002D6 +:102190000400A0000000000C0400A0500000000299 +:1021A0000300A0EC00080D850300A18C00080D8D34 +:1021B0000200A45C00000C000200A61C000000034A +:1021C0000300A06C00060D950400A084000000052B +:1021D0000200A0980FE000000400A09C000000078F +:1021E0000300A0B8000D0D9B0400A22C0000000409 +:1021F0000300A10C00060DA80400A12400000005A6 +:102200000200A1380FE000000400A13C000000071C +:102210000300A158000D0DAE0400A23C0000000414 +:102220000200A030000000000200A0340000000006 +:102230000200A038000000000200A03C00000000E6 +:102240000200A040000000000200A04400000000C6 +:102250000200A048000000000200A04C00000000A6 +:10226000000000000000000000000000000000006E +:10227000000000000000000000000000000000005E +:10228000000000000000000000000000000000004E +:102290000000000000000005000500080008000B19 +:1022A000000000000000000000000000000000002E +:1022B000000000000000000000000000000000001E +:1022C000000B001900000000000000000019001AB7 +:1022D000001A001B001B001C001C001D001D001E1E +:1022E000001E001F001F00200020002100210028E8 +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000000000000000000CD +:1023100000000000000000000028002E0000000067 +:1023200000000000000000000000000000000000AD +:10233000000000000000000000000000000000009D +:1023400000000000002E0049000000000000000016 +:10235000000000000000000000000000000000007D +:10236000000000000000000000000000000000006D +:10237000004900B4000000000000000000B400B9F3 +:1023800000B900BE00BE00C300C300C800C800CD35 +:1023900000CD00D200D200D700D700DC0000000042 +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000000000000000001D +:1023C000000000000000000000DC00E00000000051 +:1023D00000000000000000000000000000000000FD +:1023E00000000000000000000000000000000000ED +:1023F0000000000000E000E7000000000000000016 +:1024000000000000000000000000000000000000CC +:1024100000000000000000000000000000000000BC +:1024200000000000000000000000000000E700F7CE +:1024300000F70107010701170117012701270137DD +:1024400001370147014701570157016700000000AC +:10245000000000000000000000000000000000007C +:10246000000000000000000000000000000000006C +:1024700000000000000000000167016D0000000086 +:1024800000000000016D016E016E016F016F0170AF +:1024900001700171017101720172017301730174A4 +:1024A000017401750175017801780185018501923A +:1024B0000192019301930194019401950195019674 +:1024C0000196019701970198019801990199019A44 +:1024D000019A01A001A001A401A401A8000000002C +:1024E00000000000000000000000000000000000EC +:1024F00000000000000000000000000000000000DC +:1025000000000000000000000000000000000000CB +:1025100000000000000000000000000000000000BB +:10252000000000000000000001A801BA0000000047 +:10253000000000000000000000000000000000009B +:10254000000000000000000000000000000000008B +:102550000000000001BA01C90000000000000000F6 +:10256000000000000000000000000000000000006B +:10257000000000000000000000000000000000005B +:1025800001C901CC000000000000000000000000B4 +:10259000000000000000000000000000000000003B +:1025A00000000000000000000000000001CC01EC71 +:1025B000000000000000000000000000000000001B +:1025C000000000000000000000000000000000000B +:1025D000000000000000000001EC01EE000000001F +:1025E00000000000000000000000000000000000EB +:1025F00000000000000000000000000000000000DB +:102600000000000001EE01FB0000000000000000DF +:1026100001FB01FC01FC01FD01FD01FE01FE01FFCA +:1026200001FF020002000201020102020202020393 +:10263000020302170217021A021A021D000000000C +:10264000000000000000000000000000000000008A +:10265000000000000000000000000000021D023821 +:10266000000000000000000000000000000000006A +:10267000000000000000000000000000000000005A +:1026800000000000000000000238026902690271C7 +:10269000027102790279027F027F02850285028B34 +:1026A000028B0291029102970297029D029D02A362 +:1026B00002A302A902A902B6000000000000000067 +:1026C00002B602B702B702B802B802B902B902BA3A +:1026D00002BA02BB02BB02BC02BC02BD02BD02BE0A +:1026E00002BE02BF00000000000000000000000069 +:1026F00000000000000000000000000000000000DA +:1027000000000000000000000000000002BF02DB2B +:1027100000000000000000000000000000000000B9 +:1027200000000000000000000000000000000000A9 +:10273000000000000000000002DB030A030A031F80 +:10274000031F033403340336033603380338033AD4 +:10275000033A033C033C033E033E03400340034271 +:10276000034203440344035600000000000000003D +:102770000356035E035E03660366036E036E037611 +:102780000376037E037E03860386038E038E039601 +:102790000396039700000000000000000000000006 +:1027A0000000000000000000000000000000000029 +:1027B000000000000000000000000000039703B4C8 +:1027C0000000000000000000000000000000000009 +:1027D00000000000000000000000000000000000F9 +:1027E000000000000000000003B403E903E903F760 +:1027F00003F70405040504090409040D040D04117C +:1028000004110415041504190419041D041D0421E0 +:10281000042104250425042B042B0431043104373E +:1028200004370438043804390439043A043A043BC0 +:10283000043B043C043C043D043D043E043E043F90 +:102840000000000000000000000020000000400028 +:1028500000006000000080000000A0000000C00038 +:102860000000E00000010000000120000001400025 +:1028700000016000000180000001A0000001C00014 +:102880000001E00000020000000220000002400001 +:1028900000026000000280000002A0000002C000F0 +:1028A0000002E000000300000003200000034000DD +:1028B00000036000000380000003A0000003C000CC +:1028C0000003E000000400000004200000044000B9 +:1028D00000046000000480000004A0000004C000A8 +:1028E0000004E00000050000000520000005400095 +:1028F00000056000000580000005A0000005C00084 +:102900000005E00000060000000620000006400070 +:1029100000066000000680000006A0000006C0005F +:102920000006E0000007000000072000000740004C +:1029300000076000000780000007A0000007C0003B +:102940000007E00000080000000820000008400028 +:1029500000086000000880000008A0000008C00017 +:102960000008E00000090000000920000009400004 +:1029700000096000000980000009A0000009C000F3 +:102980000009E000000A0000000A2000000A4000E0 +:10299000000A6000000A8000000AA000000AC000CF +:1029A000000AE000000B0000000B2000000B4000BC +:1029B000000B6000000B8000000BA000000BC000AB +:1029C000000BE000000C0000000C2000000C400098 +:1029D000000C6000000C8000000CA000000CC00087 +:1029E000000CE000000D0000000D2000000D400074 +:1029F000000D6000000D8000000DA000000DC00063 +:102A0000000DE000000E0000000E2000000E40004F +:102A1000000E6000000E8000000EA000000EC0003E +:102A2000000EE000000F0000000F2000000F40002B +:102A3000000F6000000F8000000FA000000FC0001A +:102A4000000FE00000100000001020000010400007 +:102A500000106000001080000010A0000010C000F6 +:102A60000010E000001100000011200000114000E3 +:102A700000116000001180000011A0000011C000D2 +:102A80000011E000001200000012200000124000BF +:102A900000126000001280000012A0000012C000AE +:102AA0000012E0000013000000132000001340009B +:102AB00000136000001380000013A0000013C0008A +:102AC0000013E00000140000001420000014400077 +:102AD00000146000001480000014A0000014C00066 +:102AE0000014E00000150000001520000015400053 +:102AF00000156000001580000015A0000015C00042 +:102B00000015E0000016000000162000001640002E +:102B100000166000001680000016A0000016C0001D +:102B20000016E0000017000000172000001740000A +:102B300000176000001780000017A0000017C000F9 +:102B40000017E000001800000018200000184000E6 +:102B500000186000001880000018A0000018C000D5 +:102B60000018E000001900000019200000194000C2 +:102B700000196000001980000019A0000019C000B1 +:102B80000019E000001A0000001A2000001A40009E +:102B9000001A6000001A8000001AA000001AC0008D +:102BA000001AE000001B0000001B2000001B40007A +:102BB000001B6000001B8000001BA000001BC00069 +:102BC000001BE000001C0000001C2000001C400056 +:102BD000001C6000001C8000001CA000001CC00045 +:102BE000001CE000001D0000001D2000001D400032 +:102BF000001D6000001D8000001DA000001DC00021 +:102C0000001DE000001E0000001E2000001E40000D +:102C1000001E6000001E8000001EA000001EC000FC +:102C2000001EE000001F0000001F2000001F4000E9 +:102C3000001F6000001F8000001FA000001FC000D8 +:102C4000001FE000002000000020200000204000C5 +:102C500000206000002080000020A0000020C000B4 +:102C60000020E000002100000021200000214000A1 +:102C700000216000002180000021A0000021C00090 +:102C80000021E0000022000000222000002240007D +:102C900000226000002280000022A0000022C0006C +:102CA0000022E00000230000002320000023400059 +:102CB00000236000002380000023A0000023C00048 +:102CC0000023E00000240000002420000024400035 +:102CD00000246000002480000024A0000024C00024 +:102CE0000024E00000250000002520000025400011 +:102CF00000256000002580000025A0000025C00000 +:102D00000025E000002600000026200000264000EC +:102D100000266000002680000026A0000026C000DB +:102D20000026E000002700000027200000274000C8 +:102D300000276000002780000027A0000027C000B7 +:102D40000027E000002800000028200000284000A4 +:102D500000286000002880000028A0000028C00093 +:102D60000028E00000290000002920000029400080 +:102D700000296000002980000029A0000029C0006F +:102D80000029E000002A0000002A2000002A40005C +:102D9000002A6000002A8000002AA000002AC0004B +:102DA000002AE000002B0000002B2000002B400038 +:102DB000002B6000002B8000002BA000002BC00027 +:102DC000002BE000002C0000002C2000002C400014 +:102DD000002C6000002C8000002CA000002CC00003 +:102DE000002CE000002D0000002D2000002D4000F0 +:102DF000002D6000002D8000002DA000002DC000DF +:102E0000002DE000002E0000002E2000002E4000CB +:102E1000002E6000002E8000002EA000002EC000BA +:102E2000002EE000002F0000002F2000002F4000A7 +:102E3000002F6000002F8000002FA000002FC00096 +:102E4000002FE00000300000003020000030400083 +:102E500000306000003080000030A0000030C00072 +:102E60000030E0000031000000312000003140005F +:102E700000316000003180000031A0000031C0004E +:102E80000031E0000032000000322000003240003B +:102E900000326000003280000032A0000032C0002A +:102EA0000032E00000330000003320000033400017 +:102EB00000336000003380000033A0000033C00006 +:102EC0000033E000003400000034200000344000F3 +:102ED00000346000003480000034A0000034C000E2 +:102EE0000034E000003500000035200000354000CF +:102EF00000356000003580000035A0000035C000BE +:102F00000035E000003600000036200000364000AA +:102F100000366000003680000036A0000036C00099 +:102F20000036E00000370000003720000037400086 +:102F300000376000003780000037A0000037C00075 +:102F40000037E00000380000003820000038400062 +:102F500000386000003880000038A0000038C00051 +:102F60000038E0000039000000392000003940003E +:102F700000396000003980000039A0000039C0002D +:102F80000039E000003A0000003A2000003A40001A +:102F9000003A6000003A8000003AA000003AC00009 +:102FA000003AE000003B0000003B2000003B4000F6 +:102FB000003B6000003B8000003BA000003BC000E5 +:102FC000003BE000003C0000003C2000003C4000D2 +:102FD000003C6000003C8000003CA000003CC000C1 +:102FE000003CE000003D0000003D2000003D4000AE +:102FF000003D6000003D8000003DA000003DC0009D +:10300000003DE000003E0000003E2000003E400089 +:10301000003E6000003E8000003EA000003EC00078 +:10302000003EE000003F0000003F2000003F400065 +:10303000003F6000003F8000003FA000003FC00054 +:10304000003FE000003FE00100000000000001FF41 +:10305000000002000000000100000002000000006B +:1030600000000008021500200215002008100000D2 +:103070000000003300000002000000000000000516 +:103080000000000500000000000000000000000239 +:103090000000000300000002000000010000000426 +:1030A0000000000200000002000000010000000219 +:1030B000000000200000004000000040000000036D +:1030C0000000001800002000000040C000006180E7 +:1030D000000082400000A3000000C3C00000E480A4 +:1030E0000001054000012600000146C00001678084 +:1030F000000188400001A9000001C9C00001EA8068 +:1031000000020B4000022C0000024CC000026D8047 +:1031100000028E400002AF000002CFC00002F0802B +:10312000000011400000000100000001000000014B +:10313000000000010000000100000001000000018B +:10314000000000010000000100000001000000017B +:10315000000000010000000100000001000000016B +:103160000003D0000000003D00000001000D000041 +:10317000000700D000028140000B8168000202209D +:1031800000010240000F025000010340000C00004B +:10319000000800C000028140000B8168000202208C +:1031A0000001024000070250000202C000100000AF +:1031B0000008010000028180000B81A8000202606B +:1031C00000018280000E8298000803800000000049 +:1031D000000000000002800000090028000200B882 +:1031E000000100D8000000E8000000E8FFFFFFF346 +:1031F00001AFFFFF00000000000000000000000021 +:10320000000000000000000000000000FFFFFFF1D0 +:1032100000EFFFFF000000000000000000000000C1 +:10322000000000000001000000000000FFFFFFF6AA +:10323000005FFFFF00000000000000000000000031 +:10324000000000000002000000000000FFFFF40684 +:103250001CBFFFFF0000000500000000000000147C +:10326000000000000004000000000000FFFFFFF26B +:10327000004FFFFF00000000000000000000000001 +:10328000000000000008000000000000FFFFFFFA3F +:10329000002FFFFF00000000000000000000000001 +:1032A000000000000010000000000000FFFFFFF71A +:1032B00001EFFFFF00000000000000000000000020 +:1032C000000000000020000000000000FFFFFFF5EC +:1032D000002FFFFF000000000000000000000000C1 +:1032E000000000000040000000000000FFFFFFF3AE +:1032F000018FFFFF00000000000000000000000040 +:10330000000000000000000000000000FFFFFFF1CF +:10331000010FFFFF0000000000000000000000009F +:10332000000000000001000000000000FFFFFFF6A9 +:10333000005FFFFF00000000000000000000000030 +:10334000000000000002000000000000FFFFF40683 +:103350001CBFFFFF0000000500000000000000147B +:10336000000000000004000000000000FFFFFFF26A +:10337000004FFFFF00000000000000000000000000 +:10338000000000000008000000000000FFFFFFFA3E +:10339000002FFFFF00000000000000000000000000 +:1033A000000000000010000000000000FFFFFFF719 +:1033B00000EFFFFF00000000000000000000000020 +:1033C000000000000020000000000000FFFFFFF5EB +:1033D000004FFFFF000000000000000000000000A0 +:1033E000000000000040000000000000FFFFFFFFA1 +:1033F00000CFFFFF0000000000000000000000CC34 +:10340000000000000000000000000000FFFFFFFFC0 +:1034100000CFFFFF0000000000000000000000CC13 +:10342000000000000001000000000000FFFFFFFF9F +:1034300000CFFFFF0000000000000000000000CCF3 +:10344000000000000002000000000000FFFFFFFF7E +:1034500000CFFFFF0000000000000000000000CCD3 +:10346000000000000004000000000000FFFFFFFF5C +:1034700000CFFFFF0000000000000000000000CCB3 +:10348000000000000008000000000000FFFFFFFF38 +:1034900000CFFFFF0000000000000000000000CC93 +:1034A000000000000010000000000000FFFFFFFF10 +:1034B00000CFFFFF0000000000000000000000CC73 +:1034C000000000000020000000000000FFFFFFFFE0 +:1034D00000CFFFFF0000000000000000000000CC53 +:1034E000000000000040000000000000FFFFFFF3AC +:1034F000020FFFFF000000000000000000000000BD +:10350000000000000000000000000000FFFFFFF1CD +:10351000010FFFFF0000000000000000000000009D +:10352000000000000001000000000000FFFFFFF6A7 +:10353000005FFFFF0000000000000000000000002E +:10354000000000000002000000000000FFFFF40681 +:103550001CBFFFFF00000005000000000000001479 +:10356000000000000004000000000000FFFFFFF268 +:10357000004FFFFF000000000000000000000000FE +:10358000000000000008000000000000FFFFFF8AAC +:10359000042FFFFF000000000000000000000000FA +:1035A000000000000010000000000000FFFFFF9777 +:1035B00005CFFFFF00000000000000000000000039 +:1035C000000000000020000000000000FFFFFFF5E9 +:1035D000010FFFFF000000000000000000000000DD +:1035E000000000000040000000000000FFFFFFF3AB +:1035F000000FFFFF000000000000000000000000BE +:10360000000000000000000000000000FFFFFFF1CC +:10361000000FFFFF0000000000000000000000009D +:10362000000000000001000000000000FFFFFFF6A6 +:10363000005FFFFF0000000000000000000000002D +:10364000000000000002000000000000FFFFFF0675 +:103650001CBFFFFF0000000000000000000000147D +:10366000000000000004000000000000FFFFFFF267 +:10367000004FFFFF000000000000000000000000FD +:10368000000000000008000000000000FFFFFFFA3B +:10369000002FFFFF000000000000000000000000FD +:1036A000000000000010000000000000FFFFFFF716 +:1036B000000FFFFF000000000000000000000000FD +:1036C000000000000020000000000000FFFFFFFFDE +:1036D00000CFFFFF0000000000000000000000CC51 +:1036E000000000000040000000000000FFFFFFFF9E +:1036F00000CFFFFF0000000000000000000000CC31 +:10370000000000000000000000000000FFFFFFFFBD +:1037100000CFFFFF0000000000000000000000CC10 +:10372000000000000001000000000000FFFFFFFF9C +:1037300000CFFFFF0000000000000000000000CCF0 +:10374000000000000002000000000000FFFFFFFF7B +:1037500000CFFFFF0000000000000000000000CCD0 +:10376000000000000004000000000000FFFFFFFF59 +:1037700000CFFFFF0000000000000000000000CCB0 +:10378000000000000008000000000000FFFFFFFF35 +:1037900000CFFFFF0000000000000000000000CC90 +:1037A000000000000010000000000000FFFFFFFF0D +:1037B00000CFFFFF0000000000000000000000CC70 +:1037C000000000000020000000000000FFFFFFFFDD +:1037D00000CFFFFF0000000000000000000000CC50 +:1037E000000000000040000000000000FFFFFFFF9D +:1037F00000CFFFFF0000000000000000000000CC30 +:10380000000000000000000000000000FFFFFFFFBC +:1038100000CFFFFF0000000000000000000000CC0F +:10382000000000000001000000000000FFFFFFFF9B +:1038300000CFFFFF0000000000000000000000CCEF +:10384000000000000002000000000000FFFFFFFF7A +:1038500000CFFFFF0000000000000000000000CCCF +:10386000000000000004000000000000FFFFFFFF58 +:1038700000CFFFFF0000000000000000000000CCAF +:10388000000000000008000000000000FFFFFFFF34 +:1038900000CFFFFF0000000000000000000000CC8F +:1038A000000000000010000000000000FFFFFFFF0C +:1038B00000CFFFFF0000000000000000000000CC6F +:1038C000000000000020000000000000FFFFFFFFDC +:1038D00000CFFFFF0000000000000000000000CC4F +:1038E000000000000040000000000000FFFFFFFF9C +:1038F00000CFFFFF0000000000000000000000CC2F +:10390000000000000000000000000000FFFFFFFFBB +:1039100000CFFFFF0000000000000000000000CC0E +:10392000000000000001000000000000FFFFFFFF9A +:1039300000CFFFFF0000000000000000000000CCEE +:10394000000000000002000000000000FFFFFFFF79 +:1039500000CFFFFF0000000000000000000000CCCE +:10396000000000000004000000000000FFFFFFFF57 +:1039700000CFFFFF0000000000000000000000CCAE +:10398000000000000008000000000000FFFFFFFF33 +:1039900000CFFFFF0000000000000000000000CC8E +:1039A000000000000010000000000000FFFFFFFF0B +:1039B00000CFFFFF0000000000000000000000CC6E +:1039C000000000000020000000000000FFFFFFFFDB +:1039D00000CFFFFF0000000000000000000000CC4E +:1039E0000000000000400000000000000000020095 +:1039F00000003DFF00000211000002000000020470 +:103A00000000FFFF0000FFFF0000FFFF0000FFFFBE +:103A10000000002000000021000000220000002320 +:103A20000000002400000025000000260000002700 +:103A300000000028000000290000002A0000002BE0 +:103A40000000002C0000002D0000002E0000002FC0 +:103A50000000001000000001000000010000000153 +:103A60000000000100000001000000010000000152 +:103A70000000000100000001000000010000000142 +:103A80000000000100000001000000010000000132 +:103A9000000000010000000107FFFFFF0000003FE1 +:103AA00007FFFFFF0000000F00007FF800007FF815 +:103AB0000000FF00000000000000FF000000000008 +:103AC0000000FF00000000000000FF0000000000F8 +:103AD0000000FF00000000000000FF0000000000E8 +:103AE0000000FF00000000000000FF0000000000D8 +:103AF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF78 +:103B00000000FF1C0FFFFFFF0000FF1C0FFFFFFF67 +:103B10000000FF1C0FFFFFFF0000FF1C0FFFFFFF57 +:103B20000000FF1C0FFFFFFF0000FF1C0FFFFFFF47 +:103B30000000FF1C0FFFFFFF0000FF1C0FFFFFFF37 +:103B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:103B50000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:103B60000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:103B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:103B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:103B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:103BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:103BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:103BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:103BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:103BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:103BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:103C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:103C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:103C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:103C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:103C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:103C50000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:103C60000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:103C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:103C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:103C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:103CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:103CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:103CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:103CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:103CE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF86 +:103CF00000000002000015000000000100000002AA +:103D000000000003000000000000000400000001AB +:103D1000000000000000000100000004000000009E +:103D2000000000010000000300000000000000018E +:103D3000000000040000000000000001000000037B +:103D4000000000000000000100000004000000006E +:103D5000000000040000000300000000000000005C +:103D600000003FFF000003FF000000000000000112 +:103D70000000000100000001007C100400000004AD +:103D80000000000200000090000000900080009001 +:103D9000081000000000008A000000800000008180 +:103DA0000000008000000006000007D00000076C43 +:103DB000071D291100000000009C042400000000E1 +:103DC00000000001000000010000000100000001EF +:103DD0000000000100007FFF000000FF000000FF66 +:103DE000000000FF000000FF0000007F000000FF57 +:103DF000000000FF000000FF0000003E0000000087 +:103E00000000003F0000003F0000003F0000003FB6 +:103E10000000003F0000003F0000003F0000000FD6 +:103E200000000000121700002217000032170000E7 +:103E300012150000221500003215000002100000CB +:103E400000100000101000002010000030100000D2 +:103E500000100000121400002214000032140000B0 +:103E600000E38340FFFFFFFFFFFFFFFFFFFFFFFFB8 +:103E7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +:103E8000FFFFFFFFF0005000F0001000FFFFFFFFFA +:103E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +:103EA000FFFFFFFFFF809000FFFFFFFFFFFFFFFF0F +:103EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +:103EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +:103ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +:103EE000FFFFFFFF00003C10000000010000000089 +:103EF00000000008000000080000000200000004AC +:103F00000000000500000004000000400000180848 +:103F10000000080300000803000000400000000348 +:103F2000000008030000080300000803000100036C +:103F30000000080300000803000000030000000365 +:103F40000000000300000003000000030000000365 +:103F50000000000300000003000000030000000355 +:103F60000000000300000003000000030000000345 +:103F700000000003000024030000002F00000009DF +:103F80000000001900000184000001830000030606 +:103F900000000019000000060000030600000306F0 +:103FA0000000030600000C86000003060000030664 +:103FB00000000006000000060000000600000006E9 +:103FC00000000006000000060000000600000006D9 +:103FD00000000006000000060000000600000006C9 +:103FE00000000006000000060000000600000306B6 +:103FF0000000001300000006000010040000100480 +:104000000010644000106440000000000000000048 +:104010000000000000000000000020000000000080 +:10402000000000000000000000000000040020006C +:104030000000000000000000000000000000000080 +:10404000000020000000007C0000003D0000003F58 +:104050000000009C00000006000000050000000AAF +:1040600000000005000001400000014000000000C9 +:1040700000000000000000C00000013F00007FFFC2 +:1040800000000048000000480000000000000000A0 +:1040900000000048000000040000000400000004CC +:1040A0000000000400000004000000040000000400 +:1040B0000000000400000004000000090000000BE4 +:1040C0000000000A00000004000000090000000BCE +:1040D0000000000A000000010000000100000001D3 +:1040E00000000001000000010000000100000001CC +:1040F00000000001000000010000000100000001BC +:104100000000000100000004000000090000000B96 +:104110000000000A00000001000000010000000192 +:10412000000000010000000100000001000000018B +:10413000000000010000000100000001000000017B +:104140000000000100000004000000090000000B56 +:104150000000000A0000000000000000000008004D +:1041600000000200000001FF000004000000000049 +:10417000000000001E491E491E491E490E490E49F5 +:104180000E490E49FFFFFFFF00000000000025E47C +:1041900000008000000000130FFF0FFF0000000070 +:1041A000000000000FFF0FFF1000100010001000B3 +:1041B000200020002000200080008000800080007F +:1041C00040004000400040000000000000000001EE +:1041D0000101010101200101200101010101100182 +:1041E0000101010101200101200101010101100172 +:1041F0002001010101011001010101010120010162 +:104200002001010101011001010101010120010151 +:104210000101010101200101200101010101100141 +:104220000101010101200101200101010101100131 +:104230000101010101200101200101010101100121 +:104240000101010101200101200101010101100111 +:1042500000000004000000090000000B0000000A3C +:1042600000000004000000090000000B0000000A2C +:10427000000000010000000100000001000000013A +:10428000000000010000000100000001000000012A +:10429000000000010000000100000001000000011A +:1042A00000000004000000090000000B0000000AEC +:1042B00000000001000000010000000100000001FA +:1042C00000000001000000010000000100000001EA +:1042D00000000001000000010000000100000001DA +:1042E00000000004000000090000000B0000000AAC +:1042F0001E491E491E491E490E490E490E490E49C6 +:10430000FFFFFFFF000000000FFF0FFF0000000095 +:10431000000000000FFF0FFF100010001000100041 +:10432000200020002000200080008000800080000D +:10433000400040004000400000000000000000027B +:10434000000000010000000300000004000000065F +:104350000000000500000007000001230000012309 +:1043600000000123000001230000012300000123BD +:1043700000000123000001230000012300000123AD +:10438000000001230000012300000123000001239D +:10439000000001230000012300000123000001238D +:1043A0000000012300000123000000200000003273 +:1043B00000000007000000070000000000000008E7 +:1043C0000215002002150020000000300810000037 +:1043D0000000003300000030000000310000000247 +:1043E00000000005000000060000000200000002BE +:1043F00000000000000000050000000200000002B4 +:1044000000000002000000010000000600000001A2 +:1044100000000002000000400000004000000020FA +:10442000000000130000002000010000000204C092 +:104430000003098000040E4000051300000617C0A9 +:1044400000071C800008214000092600000A2AC03D +:10445000000B2F80000C3440000D3900000E3DC0D1 +:10446000000F42800010474000114C00001250C065 +:104470000013558000145A4000155F00001663C0F9 +:104480000017688000186D4000197200001A76C08D +:10449000001B7B80001C8040001D8500001E89C021 +:1044A000001F8E800000934000000001000000010A +:1044B00000000001000000010000000100000001F8 +:1044C00000000001000000010000000100000001E8 +:1044D00000000001000000010000000100000001D8 +:1044E0000000000100000001000000080000000CB6 +:1044F00000000010000000010000000100000001A9 +:104500000000021100000200000002040000021975 +:104510000000FFFF0000FFFF0000FFFF0000FFFFA3 +:1045200007FFFFFF0000003F07FFFFFF0000000F35 +:1045300000007FF800007FF800000000000000018C +:1045400000201001000000000100900000000100A8 +:10455000000000010000000000000000140AFF003D +:1045600000009002000000000000000000000000B9 +:1045700000009004000000000000000000000000A7 +:104580000000900600000000000000000000000095 +:104590000000900800000000000000000000000083 +:1045A0000000900A00000000000000000000000071 +:1045B0000000900C0000000000000000000000005F +:1045C0000000900E0000000000000000000000004D +:1045D000000090100000000000000000000000003B +:1045E0000000901200000000000000000000000029 +:1045F0000000901400000000000000000000000017 +:104600000000901600000000000000000000000004 +:1046100000009018000000000000000000000000F2 +:104620000000901A000000000000000000000000E0 +:104630000000901C000000000000000000000000CE +:104640000000901E000000000000000000000000BC +:1046500000009020000000000000000000000000AA +:104660000000902200000000000000000000000098 +:104670000000902400000000000000000000000086 +:104680000000902600000000000000000000000074 +:104690000000902800000000000000000000000062 +:1046A0000000902A00000000000000000000000050 +:1046B0000000902C0000000000000000000000003E +:1046C0000000902E0000000000000000000000002C +:1046D000000090300000000000000000000000001A +:1046E0000000903200000000000000000000000008 +:1046F00000009034000000000000000000000000F6 +:1047000000009036000000000000000000000000E3 +:1047100000009038000000000000000000000000D1 +:104720000000903A000000000000000000000000BF +:104730000000903C000000000000000000000000AD +:104740000000903E0000000000000000000000009B +:104750000000904000000000000000000000000089 +:104760000000904200000000000000000000000077 +:104770000000904400000000000000000000000065 +:104780000000904600000000000000000000000053 +:104790000000904800000000000000000000000041 +:1047A0000000904A0000000000000000000000002F +:1047B0000000904C0000000000000000000000001D +:1047C0000000904E0000000000000000000000000B +:1047D00000009050000000000000000000000000F9 +:1047E00000009052000000000000000000000000E7 +:1047F00000009054000000000000000000000000D5 +:1048000000009056000000000000000000000000C2 +:1048100000009058000000000000000000000000B0 +:104820000000905A0000000000000000000000009E +:104830000000905C0000000000000000000000008C +:104840000000905E0000000000000000000000007A +:104850000000906000000000000000000000000068 +:104860000000906200000000000000000000000056 +:104870000000906400000000000000000000000044 +:104880000000906600000000000000000000000032 +:104890000000906800000000000000000000000020 +:1048A0000000906A0000000000000000000000000E +:1048B0000000906C000000000000000000000000FC +:1048C0000000906E000000000000000000000000EA +:1048D00000009070000000000000000000000000D8 +:1048E00000009072000000000000000000000000C6 +:1048F00000009074000000000000000000000000B4 +:1049000000009076000000000000000000000000A1 +:10491000000090780000000000000000000000008F +:104920000000907A0000000000000000000000007D +:104930000000907C0000000000000000000000006B +:104940000000907E00000000000000000000000059 +:104950000000908000000000000000000000000047 +:104960000000908200000000000000000000000035 +:104970000000908400000000000000000000000023 +:104980000000908600000000000000000000000011 +:1049900000009088000000000000000000000000FF +:1049A0000000908A000000000000000000000000ED +:1049B0000000908C000000000000000000000000DB +:1049C0000000908E000000000000000000000000C9 +:1049D00000009090000000000000000000000000B7 +:1049E00000009092000000000000000000000000A5 +:1049F0000000909400000000000000000000000093 +:104A00000000909600000000000000000000000080 +:104A1000000090980000000000000000000000006E +:104A20000000909A0000000000000000000000005C +:104A30000000909C0000000000000000000000004A +:104A40000000909E00000000000000000000000038 +:104A5000000090A000000000000000000000000026 +:104A6000000090A200000000000000000000000014 +:104A7000000090A400000000000000000000000002 +:104A8000000090A6000000000000000000000000F0 +:104A9000000090A8000000000000000000000000DE +:104AA000000090AA000000000000000000000000CC +:104AB000000090AC000000000000000000000000BA +:104AC000000090AE000000000000000000000000A8 +:104AD000000090B000000000000000000000000096 +:104AE000000090B200000000000000000000000084 +:104AF000000090B400000000000000000000000072 +:104B0000000090B60000000000000000000000005F +:104B1000000090B80000000000000000000000004D +:104B2000000090BA0000000000000000000000003B +:104B3000000090BC00000000000000000000000029 +:104B4000000090BE00000000000000000000000017 +:104B5000000090C000000000000000000000000005 +:104B6000000090C2000000000000000000000000F3 +:104B7000000090C4000000000000000000000000E1 +:104B8000000090C6000000000000000000000000CF +:104B9000000090C8000000000000000000000000BD +:104BA000000090CA000000000000000000000000AB +:104BB000000090CC00000000000000000000000099 +:104BC000000090CE00000000000000000000000087 +:104BD000000090D000000000000000000000000075 +:104BE000000090D200000000000000000000000063 +:104BF000000090D400000000000000000000000051 +:104C0000000090D60000000000000000000000003E +:104C1000000090D80000000000000000000000002C +:104C2000000090DA0000000000000000000000001A +:104C3000000090DC00000000000000000000000008 +:104C4000000090DE000000000000000000000000F6 +:104C5000000090E0000000000000000000000000E4 +:104C6000000090E2000000000000000000000000D2 +:104C7000000090E4000000000000000000000000C0 +:104C8000000090E6000000000000000000000000AE +:104C9000000090E80000000000000000000000009C +:104CA000000090EA0000000000000000000000008A +:104CB000000090EC00000000000000000000000078 +:104CC000000090EE00000000000000000000000066 +:104CD000000090F000000000000000000000000054 +:104CE000000090F200000000000000000000000042 +:104CF000000090F400000000000000000000000030 +:104D0000000090F60000000000000000000000001D +:104D1000000090F80000000000000000000000000B +:104D2000000090FA000000000000000000000000F9 +:104D3000000090FC000000000000000000000000E7 +:104D4000000090FE000000000000000000000000D5 +:104D500000009100000000000000000000000000C2 +:104D600000009102000000000000000000000000B0 +:104D7000000091040000000000000000000000009E +:104D8000000091060000000000000000000000008C +:104D9000000091080000000000000000000000007A +:104DA0000000910A00000000000000000000000068 +:104DB0000000910C00000000000000000000000056 +:104DC0000000910E00000000000000000000000044 +:104DD0000000911000000000000000000000000032 +:104DE0000000911200000000000000000000000020 +:104DF000000091140000000000000000000000000E +:104E000000009116000000000000000000000000FB +:104E100000009118000000000000000000000000E9 +:104E20000000911A000000000000000000000000D7 +:104E30000000911C000000000000000000000000C5 +:104E40000000911E000000000000000000000000B3 +:104E500000009120000000000000000000000000A1 +:104E6000000091220000000000000000000000008F +:104E7000000091240000000000000000000000007D +:104E8000000091260000000000000000000000006B +:104E90000000912800000000000000000000000059 +:104EA0000000912A00000000000000000000000047 +:104EB0000000912C00000000000000000000000035 +:104EC0000000912E00000000000000000000000023 +:104ED0000000913000000000000000000000000011 +:104EE00000009132000000000000000000000000FF +:104EF00000009134000000000000000000000000ED +:104F000000009136000000000000000000000000DA +:104F100000009138000000000000000000000000C8 +:104F20000000913A000000000000000000000000B6 +:104F30000000913C000000000000000000000000A4 +:104F40000000913E00000000000000000000000092 +:104F50000000914000000000000000000000000080 +:104F6000000091420000000000000000000000006E +:104F7000000091440000000000000000000000005C +:104F8000000091460000000000000000000000004A +:104F90000000914800000000000000000000000038 +:104FA0000000914A00000000000000000000000026 +:104FB0000000914C00000000000000000000000014 +:104FC0000000914E00000000000000000000000002 +:104FD00000009150000000000000000000000000F0 +:104FE00000009152000000000000000000000000DE +:104FF00000009154000000000000000000000000CC +:1050000000009156000000000000000000000000B9 +:1050100000009158000000000000000000000000A7 +:105020000000915A00000000000000000000000095 +:105030000000915C00000000000000000000000083 +:105040000000915E00000000000000000000000071 +:10505000000091600000000000000000000000005F +:10506000000091620000000000000000000000004D +:10507000000091640000000000000000000000003B +:105080000000916600000000000000000000000029 +:105090000000916800000000000000000000000017 +:1050A0000000916A00000000000000000000000005 +:1050B0000000916C000000000000000000000000F3 +:1050C0000000916E000000000000000000000000E1 +:1050D00000009170000000000000000000000000CF +:1050E00000009172000000000000000000000000BD +:1050F00000009174000000000000000000000000AB +:105100000000917600000000000000000000000098 +:105110000000917800000000000000000000000086 +:105120000000917A00000000000000000000000074 +:105130000000917C00000000000000000000000062 +:105140000000917E00000000000000000000000050 +:10515000000091800000000000000000000000003E +:10516000000091820000000000000000000000002C +:10517000000091840000000000000000000000001A +:105180000000918600000000000000000000000008 +:1051900000009188000000000000000000000000F6 +:1051A0000000918A000000000000000000000000E4 +:1051B0000000918C000000000000000000000000D2 +:1051C0000000918E000000000000000000000000C0 +:1051D00000009190000000000000000000000000AE +:1051E000000091920000000000000000000000009C +:1051F000000091940000000000000000000000008A +:105200000000919600000000000000000000000077 +:105210000000919800000000000000000000000065 +:105220000000919A00000000000000000000000053 +:105230000000919C00000000000000000000000041 +:105240000000919E0000000000000000000000002F +:10525000000091A00000000000000000000000001D +:10526000000091A20000000000000000000000000B +:10527000000091A4000000000000000000000000F9 +:10528000000091A6000000000000000000000000E7 +:10529000000091A8000000000000000000000000D5 +:1052A000000091AA000000000000000000000000C3 +:1052B000000091AC000000000000000000000000B1 +:1052C000000091AE0000000000000000000000009F +:1052D000000091B00000000000000000000000008D +:1052E000000091B20000000000000000000000007B +:1052F000000091B400000000000000000000000069 +:10530000000091B600000000000000000000000056 +:10531000000091B800000000000000000000000044 +:10532000000091BA00000000000000000000000032 +:10533000000091BC00000000000000000000000020 +:10534000000091BE0000000000000000000000000E +:10535000000091C0000000000000000000000000FC +:10536000000091C2000000000000000000000000EA +:10537000000091C4000000000000000000000000D8 +:10538000000091C6000000000000000000000000C6 +:10539000000091C8000000000000000000000000B4 +:1053A000000091CA000000000000000000000000A2 +:1053B000000091CC00000000000000000000000090 +:1053C000000091CE0000000000000000000000007E +:1053D000000091D00000000000000000000000006C +:1053E000000091D20000000000000000000000005A +:1053F000000091D400000000000000000000000048 +:10540000000091D600000000000000000000000035 +:10541000000091D800000000000000000000000023 +:10542000000091DA00000000000000000000000011 +:10543000000091DC000000000000000000000000FF +:10544000000091DE000000000000000000000000ED +:10545000000091E0000000000000000000000000DB +:10546000000091E2000000000000000000000000C9 +:10547000000091E4000000000000000000000000B7 +:10548000000091E6000000000000000000000000A5 +:10549000000091E800000000000000000000000093 +:1054A000000091EA00000000000000000000000081 +:1054B000000091EC0000000000000000000000006F +:1054C000000091EE0000000000000000000000005D +:1054D000000091F00000000000000000000000004B +:1054E000000091F200000000000000000000000039 +:1054F000000091F400000000000000000000000027 +:10550000000091F600000000000000000000000014 +:10551000000091F800000000000000000000000002 +:10552000000091FA000000000000000000000000F0 +:10553000000091FC000000000000000000000000DE +:10554000000091FE0000FF00000000000000FF00CE +:10555000000000000000FF00000000000000FF004D +:10556000000000000000FF00000000000000FF003D +:10557000000000000000FF00000000000000FF002D +:105580000000000000000002000015000000000103 +:105590000000000200000003000000000000000402 +:1055A00000000001000000000000000100000004F5 +:1055B00000000000000000010000000300000000E7 +:1055C00000000001000000040000000000000001D5 +:1055D00000000003000000000000000100000004C3 +:1055E00000000000000000040000000300000000B4 +:1055F0000000000000003FFF000003FF0000000368 +:1056000000BEBC20000000000000000500000003F8 +:1056100000BEBC20000000000000000500000003E8 +:1056200000BEBC20000000000000000500000003D8 +:1056300000BEBC20000000000000000500000003C8 +:1056400000BEBC20000000000000000500000003B8 +:1056500000BEBC20000000000000000500000003A8 +:1056600000BEBC2000000000000000050000000398 +:1056700000BEBC2000000000000000050000000D7E +:105680000000000C000000000000001002150020C7 +:105690000215002000000030081000000000003358 +:1056A0000000003000000031000000020000000493 +:1056B00000000000000000020000000200000000E6 +:1056C00000000002000000070000000200000002CD +:1056D00000000001000000030000000100000002C3 +:1056E0000000004000000040000000040000002016 +:1056F0000000000F0000001B00008000000103C03C +:105700000001878000020B4000028F00000312C0DE +:105710000003968000041A4000049E00000521C08A +:105720000005A580000629400006AD00000730C036 +:105730000007B480000838400008BC0000093FC0E2 +:105740000009C380000A4740000ACB00000B4EC08E +:10575000000BD280000C5640000CDA00000D5DC03A +:105760000000618000000001000000010000000155 +:105770000000000100000001000000010000000125 +:105780000000000100000001000000010000000115 +:105790000000000100000001000000010000000105 +:1057A00000000001000000010000101100001000C6 +:1057B00000001004000010210000FFFF0000FFFFA8 +:1057C0000000FFFF0000FFFF000000460000001087 +:1057D00000000000000000000000001800000001B0 +:1057E00000000000000000000000000000000001B8 +:1057F00007FFFFFF0000003F07FFFFFF0000000F53 +:1058000000007FF800007FF8000019000000000091 +:10581000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +:10582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +:105830000000FF00000000000000FF00000000006A +:105840000000FF00000000000000FF00000000005A +:105850000000FF00000000000000FF00000000004A +:105860000000FF00000000000000FF00000000003A +:10587000000000020000150000000001000000020E +:105880000000000300000000000000040000000110 +:105890000000000000000001000000040000000003 +:1058A00000000001000000030000000000000001F3 +:1058B00000000004000000000000000100000003E0 +:1058C00000000000000000010000000400000000D3 +:1058D00000000004000000030000000000000000C1 +:1058E00000003FFF000003FF00000000039387005B +:1058F000000000000000000000000000039387008B +:1059000000000000000000000000000F0000000781 +:10591000000000000000000E031500200315002009 +:1059200001000030081000000000003300000030CB +:10593000000000310000000300000006000000032A +:105940000000000300000002000000000000000250 +:10595000000000000000000600000004000000023B +:10596000000000020000000100000004000000012F +:1059700000000002000000400000004000000004A1 +:1059800000000020000000020000002000001000C5 +:105990000000208000003100000041800000520023 +:1059A000000062800000730000008380000094000B +:1059B0000000A4800000B5000000C5800000D600F3 +:1059C0000000E6800000F7000001078000011800D9 +:1059D00000012880000139000001498000015A00BF +:1059E00000016A8000017B0000018B8000019C00A7 +:1059F0000001AC800001BD000001CD800001DE008F +:105A00000001EE800001FF0000000F800000000197 +:105A10000000000100000001000000010000000182 +:105A20000000000100000001000000010000000172 +:105A30000000000100000001000000010000000162 +:105A40000000000100000001000000010000000152 +:105A5000000000010000000100000001000012240D +:105A600000001210000012140000FFFF0000FFFFF2 +:105A70000000FFFF0000FFFF0000002000000020EA +:105A800000000000000000000000002300000024CF +:105A9000000000250000002600000027000000296B +:105AA0000000002A0000002B0000002C0000000174 +:105AB0000000000107FFFFFF0000003F07FFFFFF9E +:105AC0000000000F00007FF800007FF800000000D9 +:105AD00000000001CCCC0201CCCCCCCCCCCC02015F +:105AE000CCCCCCCCCCCC0201CCCCCCCCCCCC020120 +:105AF000CCCCCCCCCCCC0201CCCCCCCCCCCC020110 +:105B0000CCCCCCCCCCCC0201CCCCCCCCCCCC0201FF +:105B1000CCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFF61 +:105B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +:105B3000FFFFFFFF0000000000010001001E0C0736 +:105B4000CCCCCCC510000000000028AD7058103C33 +:105B5000000000000000FF00000000000000FF0047 +:105B6000000000000000FF00000000000000FF0037 +:105B7000000000000000FF00000000000000FF0027 +:105B8000000000000000FF00000000000000FF0017 +:105B900000000000000000020000150000000001ED +:105BA00000000002000000030000000000000004EC +:105BB00000000001000000000000000100000004DF +:105BC00000000000000000010000000300000000D1 +:105BD00000000001000000040000000000000001BF +:105BE00000000003000000000000000100000004AD +:105BF000000000000000000400000003000000009E +:105C00000000000000003FFF000003FF002625A069 +:105C100000000000002625A000000000002625A0AE +:105C200000000000002625A000000000000E00007B +:105C3000011600D6002625A000000000002625A0A1 +:105C400000000000002625A000000000002625A07E +:105C50000000000000720000012300F30000FFFFBD +:105C6000000000000000FFFF000000000000FFFF38 +:105C7000000000000000FFFF000000000000FFFF28 +:105C8000000000000000FFFF000000000000000016 +:105C9000000000000000FFFF000000000000FFFF08 +:105CA000000000000000FFFF000000000000FFFFF8 +:105CB000000000000000FFFF000000000000FFFFE8 +:105CC000000000000000FFFF0000000000000000D6 +:105CD000000000000000FFFF000000000000FFFFC8 +:105CE000000000000000FFFF000000000000FFFFB8 +:105CF000000000000000FFFF000000000000FFFFA8 +:105D0000000000000000FFFF000000000000000095 +:105D1000000000000000FFFF000000000000FFFF87 +:105D2000000000000000FFFF000000000000FFFF77 +:105D3000000000000000FFFF000000000000FFFF67 +:105D4000000000000000FFFF000000000000000055 +:105D5000000000000000FFFF000000000000FFFF47 +:105D6000000000000000FFFF000000000000FFFF37 +:105D7000000000000000FFFF000000000000FFFF27 +:105D8000000000000000FFFF000000000000000015 +:105D9000000000000000FFFF000000000000FFFF07 +:105DA000000000000000FFFF000000000000FFFFF7 +:105DB000000000000000FFFF000000000000FFFFE7 +:105DC000000000000000FFFF0000000000000000D5 +:105DD000000000000000FFFF000000000000FFFFC7 +:105DE000000000000000FFFF000000000000FFFFB7 +:105DF000000000000000FFFF000000000000FFFFA7 +:105E0000000000000000FFFF000000000000000094 +:105E1000000000000000FFFF000000000000FFFF86 +:105E2000000000000000FFFF000000000000FFFF76 +:105E3000000000000000FFFF000000000000FFFF66 +:105E4000000000000000FFFF000000000000000054 +:105E5000000000000000FFFF00000000555400009B +:105E60005555555500005555F0000000555400009B +:105E70005555555500005555F0000000555400008B +:105E80005555555500005555F00000000000000024 +:105E9000000100000000501400000000FF5C000042 +:105EA000FFF55FFF0000FFFFF00003E000000000CF +:105EB0000000A0000000040000000000000000003E +:105EC00000000000000010000000000000000000C2 +:105ED0000000000000004000000000000000000082 +:105EE0000000000000010000FF5C0000FFF55FFF04 +:105EF0000000FFFFF00003E0000000000000A00031 +:105F00000000080000000000000000000000000089 +:105F10000000200000000000000000000000000061 +:105F200000008000000000000000000000000000F1 +:105F300000020000000000001F8B080000000000AD +:105F4000000BFB51CFC0F003096FE440E50BB3A099 +:105F5000F2D171152B7E794298878132FDBACC0C33 +:105F60000CE6405C07C48ECCF8D5F232618A7D968F +:105F700044B067893330308942D826A294B96B1473 +:105F80000F0DBC4B0595BF4E09429B42C577A3C977 +:105F9000AF87CA27C943E83D2AD8CD4D86CA03003A +:105FA000760E86656003000000000000000000001F +:105FB0001F8B080000000000000BED7D6D6054D5C4 +:105FC00099F0B93377EE7C676E42122624C19B109C +:105FD0002140C0490810BA717B13828C6D5A0708A2 +:105FE0009A6AB483504D153458DA66BBEECE255FFD +:105FF000C48010B4C554B13BA6D697EDBA6D74A356 +:10600000C5ADED3B8876E9DBF66D4AD0A2A2446BC4 +:1060100069BBD536B67E75D75DF73CCF3967E6DE0E +:106020009B4C0057DFB73F96EE7A3873BE9EF37CE9 +:106030009FE73CE7E20ECC25851F25E43DF843CBE6 +:106040005D2E7258BA8810AF27726C9346EB84FEAF +:106050005945481F9445F4FF930E99AC20C447D886 +:106060001F6789E325770E211F77D2CE05F487704D +:106070001EF677053A489CFE44B6861CA49090CF45 +:106080007B58FFB7BD394B4988904E0F2BBFE8CBEB +:106090001986B23741486A01B4CF4D123A9F42483F +:1060A000A55C0B237C916F9441D9B132B604CB8BA4 +:1060B000A09C431C842C877A897AC6CFE67ECF09C0 +:1060C000FFFD6B02F089F5C8A97803ACEF24E24F1D +:1060D00094C07827D9F3BA732921724788DC5A43D0 +:1060E000EBAA42527CCC7BB8B1B6503C90C18BBD80 +:1060F000EC3CD5907CB232D37F3109E69F594CFFFE +:10610000221319E1E0E3093108ACEF86BF6A53E7D7 +:10611000793BA1279F744DC553B675059E06121E87 +:1061200092A2937627542C7D25444F06902EFAC3D5 +:10613000553043D270E4533A6AE50F0F10131C5EDA +:10614000064794488C5E246EC1577FC91D1E7D860C +:106150007D930A8A27B1EFF2A9FBA3A4D047E8FAFE +:106160007E0ACF30EE7F2435131C9F4AC3D14ECC1C +:10617000FB3F7F383E6719EF5A48C818AC2FD3F55C +:106180004CF3108DD159D6F8B873C4BB92EFB0F070 +:1061900087BFD267A9CB813C2BFF4CE1CB41CEAF6F +:1061A0003127E363514F223FBAE69238E0AD1B7EC0 +:1061B0002AE2AC4AF1E656235F1F9080AB15EC2F24 +:1061C000E77B0C27CA5BFCAF717C33B1C8A38BCED5 +:1061D0002BD1FEAEC2CA501CF820C0E4D1BE9F5DD8 +:1061E0000923295F6891FBD691008307D7994B92C9 +:1061F000B3A87C9077576BEB83D9F1325E4AC7D155 +:1062000075D6D335611D01B75CC2E0BE03E0A6F4CC +:10621000959BDD06C81B85FB0EA4B70D6EAF1A2338 +:1062200020D2E39F58C0E08E16201EECEBADF77431 +:1062300027E5659C8F906F880EF42B15FB9718FE51 +:10624000F61711C4D3BDE1CA271C94D66525910861 +:10625000CC7F4778E8082DC88F95F8308C77971059 +:1062600009D62BDD3149405E075C6C3F6B9CF5DE47 +:10627000976979677379E85AFAFB31E0D3E553E11E +:106280003948E551A6F2BB9BCA23E0F3ED1718FC91 +:10629000D9F0D5972016BCF775C8D124EDDF177E4D +:1062A00022772DC55B6F7E450DB24BBB24C3BE7CF0 +:1062B0001293937FE6EB1FDCFE0502F3533CFE33A3 +:1062C000C0EFCA1F244CCFC408E32B0A8F091FE577 +:1062D0007A5257617F5187017ABA8CEB85703F897A +:1062E000A4181E8EC2BC459593BA9BAEA3C6558713 +:1062F000A265F04048E48715B4FFD00F2FAC1930E9 +:10630000C9874BE2FA373F9FD15D8E54C6A6E11391 +:1063100041A7BD144F552EE47B09FA7D0DEA263CBA +:10632000F492F809E85754E743BA156D89B8605FED +:10633000C725014718F5540FDFD7DE8FF890CF7AC5 +:106340004AD5FB9CD43E9C16F6E0A064E12B8AA7BC +:10635000D38C4F187E6495E1EBA4147F99AD9734EC +:106360004077E56CD1418D926E0769473930C81886 +:10637000CC334722993F743DB5561B06BEFE23D74A +:106380005B739AFAB63B005E4D46FCCE99D8D44C6E +:10639000289F074F5DFA1B28E9EF2FB96959DA3EAC +:1063A00069001F16D7261B00BFBEAD830D80EFFF0F +:1063B0002BC5FF0870176F21EB9A907527507E87C9 +:1063C0005C49A2823EAF1FD36301A0FB25649349C1 +:1063D0008FC9807F90AB4AA6F705DDEF75327EB995 +:1063E000237ADC7B7D00FAF9102FE5A44987F9CAEE +:1063F000A8B848741FBE0CFD9D129D27B46310966B +:10640000256AA5DA057052BE9F0D7C36E4328A609B +:10641000DCD076A535C9F07202F832C7C171A2D1BD +:10642000FF513CA9BCFE13AA8100AE1C8E971C81B3 +:106430000FBA2E1861E745138693DAF5595B484485 +:10644000D33278922344027B1F6E2711DA93F8C36C +:106450000F239EE4DAC994CCF014063873E214F1E9 +:10646000546FFBD4C12300679FDC71FA6FE87EFA9A +:106470008E39238666E24742F97149065FEE309510 +:106480003B93BD167CE9E3FA623B895748A80FE2CB +:10649000C81FAEC2C361B31CCB0AD5CFB0FFCA16AA +:1064A000ECAF84474E5E0BFA393F5C8DF22AAB6845 +:1064B00047767B88C5CE13D285F8EF4F24C92F5C71 +:1064C00020AF6C7E8F166365A7537B05F459258337 +:1064D000BBBF6A7D08EC95C73382F4F70F3E84F6A4 +:1064E00093CE19F986C6E06E5902F6D681F6EF1FF3 +:1064F00068F91EFA47495CC715F665EC2281F91563 +:106500009C3F0D8F47BF9A503CB787150DF8F84652 +:1065100027E900F96A0FCF6F023A08FD799D54C44C +:10652000E4C9D9ACEDA4EBBF99EC8D38B5EC7AADEC +:106530005DA63C5003567CCF18C82F49BA26278445 +:106540003D2C9FEA2FAD93B8BFB492AC04FBF82664 +:10655000A90AED9C61FE7F4D1C5351BF727FC9DEBD +:106560002EF6712321AFB8F3609F86F2298AA79B8C +:10657000240FD259EC4FCEEB2F447DC9F9E4C6432A +:106580003F54CD7C71A34CDDA99AA9F0A7ED8D18DD +:1065900047DD3058E7C6090A97D9EE4F19C7EC7C9A +:1065A0007A5E99D8F5D3E724DAEE6DFABC3187EE3E +:1065B000FFC607D7317D4EE107FECD0AB758DF068B +:1065C000FFD9D6FF43536F1FA8CA132EAD340674EC +:1065D0008F2E68027F5BD86F81E7756B7A0BA7F30C +:1065E0007FD3FC22134D053C3B039114F2C76D751C +:1065F0002007FF4BF24E6B27CFC60F77023FF82DD7 +:10660000FC7059CB87C00FDFE2FC20FC0BB17F3B55 +:106610001EDB9B5CA8B7B3F2011F7FEE74E0E3A61C +:10662000D2FF9FA6A53F9F5FF08158E77DC34BF245 +:10663000D19F98037FD5C03F4849641E7643FFA988 +:1066400098C333B7625202FED0626A2398EBF2D647 +:10665000C81350DE9BFB40D17D1AF46852CFD07531 +:10666000257D96F4DEE219FC73BACD33023E67064F +:106670000ED13E67ABFCF284496ED42DB46EDA4F76 +:106680004EBDB5DD474CED6599F9F2B8BE225A24EE +:1066900062F63FF6BA265A4984FA05D21FF57CDA2B +:1066A000BED73B7192A8D4CFB8ED2D3D4AEB3973DC +:1066B000C5F960D203FAF6DF258DE1A92E8AE70835 +:1066C00095AFBD4F77901CCADFB96572124CFE9131 +:1066D00009273D0B50A9D2E4A41B7D8328FA25216C +:1066E000AEF7C53C8313E31E42F9EFF6FABC5CCB70 +:1066F000FC61D63F28CEC3CB1DC4519B99FF6DCA08 +:10670000D363E0EFC863389EE895088F989F683F91 +:106710003B368FF6F7AC9109F863732726D1BFBBE0 +:1067200080909D602F643D99427447CFCD2F93EBAD +:1067300014F4B7E4BAFE3156327F85BA69763EF575 +:10674000389683DDA17EFABC8C1F25D6C9CE078280 +:10675000FFD879FE8BF43C0F76A740D12517AD7793 +:1067600096904817DD9726C5F31DE0CFB6747CBA26 +:1067700097D6A5CB3B174CD0F93B2906D0FED5398F +:10678000922C0E40F9958EDB1B9B9D8479E4592554 +:106790000500C7DE3AE6AF64836377822CAB30F93D +:1067A0009BBBE5110FE06B77558D67BA71FEB0B2F8 +:1067B000AC62169D37AACD56673887669F77BD6550 +:1067C000DEBF95E211C7F2A9F313CED70E4A7C9033 +:1067D000135FE0CB780E9ACAEFA6BA736A7D68534E +:1067E0001FFA2BF9B3F56A89F2F9B3D43D885197B2 +:1067F00039DFAF3F0472F0D3AE4F3704289DF2DD8E +:10680000FA76076D7FCD51DEB007EA947140294CCE +:10681000747D4CDA09E3C1267F84905F757D61A7A2 +:10682000C1F10F7E4F5F22957CC505718763C95703 +:10683000E87E9B1DCCFFBCCCC1F85A91E3E8AFB811 +:10684000C3B49F596E65E6C7FA2BE938B37E0C9343 +:1068500014F0974C185F533FB405F053D44A8EB8E8 +:1068600034E02FFB79AC2AF4B2890E6D0EEB796C13 +:1068700000CE61263AF83CCFCC35FB3D7D89937341 +:1068800019FC1373017EEA37EAE0CF1B7584005FC1 +:10689000ED4BFC1ADB73EA3AF07C9523B37DA7F548 +:1068A00089839D2F44299396500AE8A2DE8FFA33FC +:1068B00087EF43DE1122B7E6417DCFEB204F39AAA7 +:1068C000FC9659AFD9EDDE2D0EABDD0B75FE16E152 +:1068D00016F1A310C73F3935CCD611E711E7AB113C +:1068E00038970AFB37E0E071143E2E87D075291DDA +:1068F000C0A9E7FC83703839BF887DD9E1E9B1C10F +:1069000073B63898587F2FF8FFC007E9B8CB18C680 +:106910005D48AD7C06D615F1167798D2C11247A115 +:10692000F430ADAFD6FFDAD23E141C40BE4EEB8140 +:106930004AAA07100749CF3A937F3F50797EF2BFAA +:10694000479EF080DEDC1B78B91FF4A91171442E3C +:10695000A43076439DAEE35C52516DF6773FA73489 +:106960003E6096DF40159DCF04E700E889F7B37ECF +:10697000BE75FDDEFCACEB3FEA607AF45573BCAD4E +:10698000BFEC0B1EA08F1D1E31EE7B52FC2D33DCA5 +:10699000EE121DF9FB9D8979678953A42C710A9029 +:1069A000EF4815936FB3DF91DE0F972F51FF0AE881 +:1069B00005BA6E90F2018C0B46AC740FC079701E54 +:1069C000C4AB529EA7408FB778303E44DA088B7B29 +:1069D0007036A776E7E7B06F596572198830BBF358 +:1069E000155062CBF17C1AEEA0BF0FE4525E0F810E +:1069F000BE88B7C6F03C3C115E6FE28F394EA62FC1 +:106A0000D2E356517D09FDAAC201584FE8A12112D7 +:106A1000FF25ACE76FED48313D14B7ACD70FFC480C +:106A2000EBDE4A06BF80FB0DAE07EDF00BB8656EDE +:106A300037F337B4A15D48EFB7D5EA0F8AFE22AE2F +:106A4000F37167EC2B0E53FC62AA3D9CF0AC33FB58 +:106A50003DE76907ED65402231D037DD811AF55AEF +:106A600093DCBB39FE962ABADBB97C2ABF9DAF9D69 +:106A7000CCB66E6FBE75DDC2CCBA85D3AD6B8FB3AD +:106A8000EEAD3C13FB0CD02D9663F8E1DC14637A79 +:106A9000585653884F999FB7859E17E7F61C3E6757 +:106AA0004F1D3B7F5347CA403F83F215FA198312AB +:106AB000D3C3946FE1FC1D202C1E5CC0CFDF2F726E +:106AC0007E2725A6B87039ACC7CEDF4623E8425AE8 +:106AD000BE184C764BD9EF41C4FDC7DB8E64549A87 +:106AE00097B957F1B9060DF00FA9FFA5C3DCEF6305 +:106AF000BEFE99E63BDB78FB7AE21E66A0221943D4 +:106B00003996E97CF887E1351DD7E0F81567648F81 +:106B1000C7F094817E3BE12410AF710E56A760DE72 +:106B2000747CA384AD43EDC5FD0322AEB122737F17 +:106B3000E3ADB4C6E15D25D6383C693524733C5FCE +:106B4000C43FE4007582AA18FDC01F861B268893E7 +:106B5000C056DEC37390F5DE480E90943707EC4ABA +:106B60000D31DB3F99B0FB838C5DB58ECBC6DF5317 +:106B7000D66BB1C279CEE302B276C6C45FD9C7592B +:106B8000CF5F7F03085C9E9DCEEB72A93EBA28437F +:106B90006FEAAFEE72164CA5FB0957C745400C379C +:106BA000F8F558B2731AFAAF141F37CB817ED0C3F1 +:106BB000DEC028041D8957B39EE36E86BFA01D2743 +:106BC000A8BFFC95D676BB5F7BB753DC0FD163CDF6 +:106BD0008A8C9F95E309A4507FD6C9AFA6FB9BF092 +:106BE000714B98F2DFACECF871108F16A0EB7AB80D +:106BF000FC4ABC2EE0F8C3A01405BFF316EA927459 +:106C0000D698E755705EBBDE99AA978DCA615ADFA8 +:106C10005B51188173DA40EE29F212397FFDBC878F +:106C20009E4F41AFEE0BFCE118F805193F85D5A743 +:106C3000F113BEEB349DB3FFBB7A3ABD7EBE75FD4A +:106C4000DEFCACEBFF08F4743F8FDB4FD1D76A401A +:106C500036C7D55FE0F42D25A99D849DEF621E7394 +:106C60003CA275F208C41F4AE73F53F49406FE7035 +:106C70000FC61FA8BB59FBDEB273E77F8F83DDAF62 +:106C800091088F8364E2FA6C3D7ECFF27B6E6F28B1 +:106C90003C0F5D4BFF7A70E504C643E831C9E1A2C1 +:106CA000F095B5685D180F99BFE209F00FDE6F3CF3 +:106CB00024CD2FF5C29F9DB4F8B3FBEA3F1C3B4E99 +:106CC000E4B43D25F234F674DF79FAB1D9D6B5DBF8 +:106CD000F15066DDD074EBDAE569FF861CD413FE53 +:106CE0005352D24DF17ED786EFA39DF09EF26A10EB +:106CF00077311A59FCC0984B227067DA5911D38149 +:106D00001E9A142F95293F35BCF85818E207BB2F5F +:106D1000ECB88098CF0FB5D638C2EDB638C2EDB515 +:106D20001F4E1CE1F60F2E8EB04A3E87388233F894 +:106D300065B45BDEF38C23E4CFD2ABA508D41E6D23 +:106D4000FC715D267ED0DCD3DF182882F801C17883 +:106D500041ACE7709701F18262FD21E87F42FE4E6F +:106D600023C4D9F2E7B1F6C5BDB41DFC2D0F3D67B4 +:106D700053BD7C331007EE57E2CA4BE08FB94B0C82 +:106D8000E67F85C984648A03B85BE32990AF1F2B33 +:106D9000F1CB818E2175F088A4C17D0BBBA75DE38B +:106DA0000CA03DFA4309C1F85B367C427E04DCCB83 +:106DB000DEC3E3027B122AD6BF9A0863E9AE64F70A +:106DC000E8FD091DDB7B496C33E0D55DC2EE1D8714 +:106DD00078DCA15B21ED501EE7F7E33FE57C9C29C1 +:106DE000593CE0E80BDF79F63A802BE08B008AB261 +:106DF000C1D597A88CC07AFB12112CFB25EA05D1CE +:106E0000A345A7FC912ECF2AAA879CA922A8F7C93F +:106E10001FED6A5A95D15B4E6D694436E9BB2FC9A7 +:106E20004C6F2A5BFB308F45D1597B31C4BDA7E144 +:106E30003323D37F0CFBABACFF41AEA7EDFD77F165 +:106E4000FDDD73E4AB44A3FE92B79EC563429D2B68 +:106E500022F22CF8FD31A2517DB5C7359292E8BEE1 +:106E6000F79592C830DDB7BBB38AB7DF46CAE9B839 +:106E70007D7C5D8FCEE8A776D662FB1EEF243FA710 +:106E8000119E2FC0EE55A99D6F05FABAD4F9E550B1 +:106E9000BF878F0FC2ED3DF52BE8E9D71E97BC07E2 +:106EA000E826D71AB82F1197C4B9C05EE512D4AF3F +:106EB0003D37453D6B71440AEF9F4BB60474702615 +:106EC0004ADA0B1BB1DCBA08EF594A6A039BB0BE21 +:106ED000A5703394DF93CB70FD922D959FC1F62D55 +:106EE0001FB91E7E2F9E6B8BD3D6451D00979FEB3F +:106EF000B4DBABCA4364063D82164CE83F94431FA3 +:106F0000F844A67A9EAD3EC7D6BFDCD6BEC8D65ED4 +:106F100063A977723C935A85D91B758EE5BE924C56 +:106F2000CE61F0F3BC9C23DBFA3C2F0558698EBB85 +:106F3000F59F655F633293F312D5B43FF88FC7971F +:106F4000A99723DEC2781F4FF583EE30E9875AAA4E +:106F50001F965AF483613E9F9BF4C37340F7F7ABCF +:106F60001F06132C6FA39FE76DD8DB7B49FC0CE851 +:106F70001FB7CECEE919BD1069077D1870F535CA67 +:106F8000AB502F60BC944A6C17E42B791CACFEAA62 +:106F9000FCD78DA01F8FBEB060F64455C61F1AA443 +:106FA0007253BE849565B4543A97452A4C72ED0FDE +:106FB0008F18703FAF84D51A8C99F1DF152A77D0DE +:106FC0004FC463CF4ABF86038C7EB404FAA9FC3E4B +:106FD000EC36A0DF0C76680FC50B5990A907759F9A +:106FE000AED1FDE73AD8FD77B0A9B051CB31B503AA +:106FF000DD20CE137164F811FF4BE91BB4D099E882 +:10700000E5D9E94CF114023C15A61E437D63874B7C +:10701000E95C88FA4AA6F882D21F9ED4F52A93FE2C +:10702000C857EF83F36261ABBEEA979017923F17A0 +:10703000FDD2792E9E173261D51B625EAA3FE6B95A +:10704000001E7550672E218BB314A66E43383CDAB0 +:107050001889D332A88E19A0E7E430D1E0A82F8395 +:107060001E5C96D98F027A0FE0F318B84FCAB77139 +:1070700032BD5DAB764D63D7ECF646C077BD8BE98C +:107080006151421C7C6206F9137170814F5F654447 +:107090009ACE2FE9E3F6E74E6ED7F626EA58FD8939 +:1070A000AF9232BADFB52E16DFF7960C12E06BAF57 +:1070B0001C2903BB64F4FC7D6313B5F3777AD938DC +:1070C000D15FCC7B19C7B7B784D1C7BEEE0617D343 +:1070D000E7B3B85DB3B7B7F176B999DF4B35F37B5A +:1070E000A912C62F721DB37764724A9CB0CD05F900 +:1070F0000FA423757F59C60E88FDDDF9C4B3286F30 +:10710000C1920ECCA3D9C2F199D9076FAF1D239BB1 +:1071100078BF060A5F3BE76FC1CF6E6EBFCE95AFFB +:107120006F76A96C3F1E03F59CE08FBF77EA1D2E9A +:107130009CD7C0F6BED85616B7F2F0BC544F8EE1BD +:1071400087C3EE8929FBFC2BE01FBA4F229501FF74 +:1071500088FC2F23CB3D5BAC01EFD9F249A48BA077 +:107160007FBC13D675C7B2DCB3A5E3EBCC3F1E00E2 +:10717000FFB82CE31F9F6F9CFD5CFDE3F38D9FCF59 +:10718000E01FDFEB3A07FFB867D381944EDE877FBD +:107190007C91FEBA03FC63E34FCC3F5EA03F04F555 +:1071A000C0975F6D8CC27DDA326E0F8CF71A416E1C +:1071B000F2571234DDDFEA25DDE00F57BBF56F0330 +:1071C000FDD2F8D6D2F1024B1CB75F3BDF3841123B +:1071D000F1311018EE2FB7C409587D9A737ACA3569 +:1071E000439CA0FFBCE3047CFD7CEBFABDF959D7BE +:1071F0001F63FC4F06414F2A9CBF7B72AF437ACE80 +:10720000709FE1534C702B61769F21B7C408A6177D +:10721000DAE4C50EB76B368BBFF7E45EAEE2389B9F +:10722000BC4D7239B6C7E13FA8F9A789EF7F9BE152 +:1072300081D99D6FC322CB3FFCFD7C07F870B969F3 +:10724000BDF3BC9FA07A08C7DBF34F3FE87B3A7BD6 +:10725000992DAE51AC30BBB154D18B813FFEBBF701 +:1072600073D9D6B5C7351629E9B8C622E51CE21A86 +:1072700081B2480CFDF02207DE3B3BBDF163900F6D +:10728000B92B7C9D669465F2EFC4FCD72AF370FE9F +:107290009EB0E280B86ACFB135B3C17FEB7375445D +:1072A000619EEE5C873A5C3615DE98C2ECB7B3D3CC +:1072B000BFECFE19E2644E85D9E11EF50984CB5F6F +:1072C0009D9F0BF9B4DD47FEEA9813FCAA70619903 +:1072D00097D66F52B81F4585FC17A678EB2E7070B5 +:1072E00000FE00491A12AC9783EB9D0DBE7A4E2F1B +:1072F00067A777D9FD33C4693F68F8041E3FAE68BD +:107300007CFD00AE2FF0EA043900FB5025A7209F3A +:10731000D735E1463FC41961F9D3697D50E5C03CDA +:10732000192A075B81EEE415AB9CBAD5580ACA95B9 +:107330000ABB37747A3BF0BE57E4EF05E232DA2538 +:107340007F9CD927B15F61C7FD2E964FA10464CC05 +:10735000EFF5F0FCBC802B3206FC1268985F0EFC47 +:1073600032CAF1D8A7B37DF5C13EE09C01F7A05524 +:10737000997508A9B8ABAD16E204E5350374EB7F47 +:10738000C7C7292480FB53381E9489EDA952D0DB4E +:107390000ACF032827E5C0B7B734DCF22F008212EA +:1073A00036DCD3E5034CB507C40BFB753638BC158A +:1073B00070BF53CDEC01D16ACF922FB493E18BD340 +:1073C00041E05FAE62F9D52EC82FA57877EA941E0A +:1073D0004B337448FBEFA7ECF1014667A2E5A35CD1 +:1073E00039032CEF5621F26D6D65E6FD33BE15FBBA +:1073F000FF86C2F353FF3FEDFF4E85E9657274E1EE +:107400005D6D9067AC3B225E185F62E56F7F40C6A2 +:10741000F757828FDCA73691B9B4DFF7FE5CE0A79F +:10742000A70788EFC150F69FED96FB328DE7878B5B +:10743000737BCE0E82F1DE0BEA65A4AF56DFB5DDBD +:107440000176881EE0A07DCE0E19633BB41DF72D9A +:10745000C65F602896BC67758BB53E87E7E39412DC +:10746000D3EF749D393CFF7C0E31BDFF027F8CE76A +:10747000BD08B9B3EFD39E37F35BC59ACF7CAE7925 +:10748000333713FD75D41F9C3FBB17B1772B53F1D6 +:10749000CAF442A1D681F97EB3E93907E304F52C99 +:1074A0008F3F8FC4316E40EAD83DAA6C839BB89958 +:1074B0009D729337F01D8042260CD447367A083AE5 +:1074C000ECAA243CBF510F14D1F65C2E4FF81E10CD +:1074D000DE0F14517D4AF1940BF887734A13C7AB42 +:1074E0004424E0CB9C7AEB7B3A85BFB7CBE3F10B2E +:1074F0009F8D0E0AD001DFFD597F9FE7962C794DB5 +:10750000D9F069A747A99BEBAF20095ADEE3A9F997 +:10751000D3BE2B4ABFC313E7A8F37DFF27D60BD0FA +:10752000F5E6BD8FF56C74B884D3A1BF42D0813429 +:10753000031D667139EA079984FB104E87595C0E6A +:107540004833C3BB87FE0FE830BBD54A07EF39E2AB +:10755000DDC9FD90B794D8256E94634DC2F7455BA5 +:10756000FC187772A7F9E5F1230A9C132B08C6BD16 +:107570001F82472DB4FFEECF1EC310E79CB95D9864 +:107580005F4BA046C7293C5E35105E3F631CEAF6A0 +:1075900004C1778D43FC9D63B67E61251E873872DA +:1075A000B076C2007F60D60EAD06547E38CEF8B4F9 +:1075B000A45E1B86BDF4093E020E35DDBB23871792 +:1075C000225FE29F921A36AEAF9424BBE890BC1DB6 +:1075D000CCEEF795B1F84C68879C72D17A5ED525D0 +:1075E000BFC1770E720781735B5EB315CFA18E1F8B +:1075F000B44A78596DC22BE4F7954C5E8374AAB7F0 +:10760000BE5FCCB6BF732DFB28BE5E36E55FF54787 +:10761000D83EDE2C219857EC8E5315077632AE16E5 +:1076200002BDDDF14800CB898628FB3D3600E53000 +:10763000D00FE2183C0FB8A8C4617BD7383DFE20BC +:10764000340F21E910C78B802364E32B3B3EECF51C +:107650000F1A0F70AE06BE283DE124E0F7641B57F9 +:10766000FA8E4C52D4FE0F785229E83F5042D01F78 +:1076700077D7B3F7AC0139F955B8DF7187D56A838D +:1076800064C67DDBCDFC4E85BFBF25B2266D089A52 +:10769000DBD9FBC7B714FD5BEE029097073D10974F +:1076A000DBED4A617C6577358590AE136857D878F5 +:1076B000C8FF35E98B4FB85D96BCF9B4BE08930995 +:1076C00087E9DC2CF4FD8F95F8F7601D9147AB84BA +:1076D000D9BD8D881B8A78B47DFF221E7E38412259 +:1076E000E007F42546B0FEE40B5F4478EB741FDE40 +:1076F00097D4E9AA067C52A76B15AC1EA960F56861 +:1077000014F8BDAE89DDEF912D5E8C47E77279DF0D +:10771000D5B41EEF0DF6F2787B3FDCC7D1F251B83D +:107720008FA3E537131A965F4B5462793011C1F578 +:10773000EF4ED4617D08EEE968FD8E4414EB8712AC +:10774000312C1F48B462797F228EE570A21DFB2583 +:10775000131D581F4D7462FDE18481F591443F96DD +:10776000DF4A0C62F9606288DF0F26B11C481CC238 +:10777000FE022FAB26283ECC725DE7B0F8155ECD39 +:107780009A7FB4F2A4F51DF0E243732CFD2FE82C90 +:10779000B7B497762CB2B417B7D758EA45F18F58DB +:1077A000FACF8A365AEA0B931FB3F45F30B4DE5235 +:1077B000BF70F04A4BFF79FDD75ADACB8C1B2CED0A +:1077C000CBC76EB1D4971DFB92A5BF88370ED638B4 +:1077D000B713CABBFE7E578FA7949A393F29032758 +:1077E00061A838AF07E2C3B970EB7B11F8ADA40212 +:1077F0009483AB89F935AE1203E3B9B47D11FC4E25 +:10780000DBABA01F6DC7B8296D7F9DB7CFE7ED98A3 +:10781000A724C378F0F74BD83D9F0AC606E2FC398F +:107820004C4F3B4FB173423A1EF1EE94B8A9E6813A +:107830003887CEE2C7E27CA6FAE31DB169E4A1CEA7 +:10784000C3ED854796CDF9B6E97B348DDD2B928863 +:107850008CE70D6EA3D3E33D2524E55D0A7698E71A +:10786000615340DEA37DAA53AC2EF079D1616B7DCC +:10787000C988B51E8C58EBFE4A6B5DCD1247BF8A96 +:10788000C3DF9748AE847C7788CBE8CC3F44B815FB +:107890004A1F15FD6AF6FEC7C3F7A750F986FB1EFF +:1078A00052CBDE1F0BBF4FD1B5F9D0DFD3C4F2E20C +:1078B000142AF7D84FE49B9F5A7B4CC2FD323FDB22 +:1078C0001DA6EB9AF8C65367CD8357C249A493DB34 +:1078D000B61FBB5F75B9E7FDE5A367F3BBA6E8D1AB +:1078E00077DFC3BC32B7CA37FA2E6D87F739F07726 +:1078F000C86B2C9563F03E3B524BF4FB685922A7B2 +:10790000A4ED267C6FF530FDAFC1E16C392CB9BF19 +:1079100001F94F8E17C1BBF903FCFEE1ED17EE6ACA +:1079200070835F7D9D86EF45C5F8031EE6978F85C2 +:107930001DC857C1183BFF284527F4065ACFAB8511 +:10794000BB7FA08786F92E105A05D89E98EB23732B +:1079500068E573CFBAB1FFD1B9EC3DF42DB98AE532 +:10796000DE33FFDDCF4580BF5D17DC1A063DFEEB41 +:1079700004A9D97221BC9FF360F96A42C5F27789E4 +:1079800030966F955E87F932EE444718C6B9F5C553 +:1079900096FB49CA2E4ECA43E9FAAE230B25C8030B +:1079A0000846C7748877BB8F7AF15D45505586BD10 +:1079B00026387A5CF1A24D00FCA7143C9FECF70E30 +:1079C00036401CC3F80CA9FE069D7597AFA33297ED +:1079D000AEB7AB9C7C7ADD34FCBC9DE389729253DC +:1079E00031F96B91E860430EF8C25B4884824F5CCA +:1079F000BD540D407DB93A02F39678E83AE0076E3F +:107A000051B56E0DFA533B5D95A197CB4B620F05B7 +:107A1000A01FA36BA997DDD714C50625A063F72384 +:107A2000EC1EEDC917AE50E19EE40FF91568C75E74 +:107A30007BD4AD43BCE5B53CF65EFCB54757FE00D4 +:107A4000F4D46F13C7F2CCF7C9AF7DEB672B5C940E +:107A500060AF3DFCB315323255D2F26E65DB7BE38D +:107A60002BC07F351A4965072D6F5615CC63BF199A +:107A70006482ED0BE5F540A1D207F317CE76EC85D5 +:107A8000B2D9C7F212441E27E17AA9F0FFB8308FAD +:107A9000A2FB873E9CA7531E398AF868A2E7425A88 +:107AA000DC72A1D61DA0F55BCAD4089500D29D6BEF +:107AB000B8E7021D5E70B3F64B8913DB8B547C4F25 +:107AC0009DEB19C7F728EE270753C0D6FB25DD1914 +:107AD000043A2E64F389B8C1DB65A4B28CEA7179EB +:107AE000F54814E09E0C3AC8B004F7348C1EBBE98C +:107AF000B914D60BBD4276E668908FDCB1BF0DFDA0 +:107B000041F65D972B7CE52CEEC5EF6B76BEF0C59C +:107B10000533F92BA2FC3EF7579E4878B03C9C50A9 +:107B2000231554FE538930D6EF4C6858BF3B51891A +:107B3000F5DD890896F561164FA2FC2C81FCD7ABC8 +:107B40004CFF5D9CCFE20EC59A43572E8276967706 +:107B50005AC0F5C1C561F6BD9BFDFCBEB6F8D4BFE9 +:107B6000B482DEAB7F83FA9D263D562013CFAC3C1A +:107B7000CC633442983F4ADB2B39DCCE8CDE117A61 +:107B8000A660AB75FC7ED7089EAB8C4B199EEDF3BF +:107B900007F9FC79D46D754E337F306AED3FA83913 +:107BA0000CD745E7EF4FDF63F3A70F6CA358A27C18 +:107BB0007580E733DCB36D45E85A137DE07B182F01 +:107BC0009BF8FFE0F615A14DB4FDC076A2A921D324 +:107BD0003C7CFCC1C4B1C2A60B33FC5BDAC1EEF144 +:107BE00045BF12837C3A66D2F7831D727418E31680 +:107BF00054BF52BEE9055D8F8F5A234D7A09CE8B53 +:107C0000F512EFBA26C8BF28DAC1E4B8D1B3FF082D +:107C1000988420D5137E4AE7A2DA41490F64F43DE7 +:107C2000FAD1146FFF5BCF6B5201EFB56404C05201 +:107C30006A756D27C44DC7E645E0DEFFA30D3547E5 +:107C4000F0BB44CB457BA4FBDB1087195DA041EA68 +:107C5000C7FD9EF8122F95EFEF4B0E84BB283C28F2 +:107C600035D2F2EE27FEA4809EECF993E201B92C06 +:107C70007AFC2505EEC77BA40905F3EBBC0F344164 +:107C80003E09D5930BE19EBDD95BDD0BF50339F1C0 +:107C9000BF27689B1E687A92EADD42F7C43DD0FF99 +:107CA000122F31A2F5741DD7C45560A49BC8708FE4 +:107CB000672EB617433E9E4EE7EBA7F8F83EC8186E +:107CC000E6A7DCD7A343FF5C566FF6267B0C5A5F12 +:107CD000CBF51D09C4CB400ED37595D683A6BACC7F +:107CE000EAC4C34AB19F6D47FFF483628A8F9B1E2B +:107CF000974620F5A4E871AA2100EF87F763DEC15B +:107D0000E1C431B547D057E0998AFA2AC8EB01BCE3 +:107D100026A564B98447177C9F2EE70D1D81FBA320 +:107D2000F6CF100DC464D4C7FC985513741E133FCE +:107D3000AF92D97B68FB7B67FC740ED0670FBB5793 +:107D40002DDA32A1C07DCDE13AC3BF94FE7EE3A619 +:107D50008A9A9D948E657CDE4E62F89BC02F5215E8 +:107D600015E44CE4D5BC2ACEB73CAF66AB97555D65 +:107D70005D8C1F7BBD238500E7E43FBAF2CCF71B87 +:107D8000BDB92385D234BF5379C6DF0DFA3BC07528 +:107D9000583572F3E83C371DDE3F170CFA4D64F09E +:107DA0009A2F01DC3F761280E337475685FE82D654 +:107DB000B7D13A98AAAFCB6397009EBF3E5A36021E +:107DC0007AB4C7CBE0BF6994F25100CE4594E6D4B3 +:107DD000493DAC0F2E9629FD8F0E5CB3C67B312139 +:107DE0008F95EBAA83D2FCF4407BAF07EA8ABA10E6 +:107DF000FCF6D30337237FDD78A983C98F71F35352 +:107E00007A05C0C1E4A7C77BB807E4A7B6D583E766 +:107E1000B942472C0AEF36C87107DA6F30C5F5143E +:107E2000FFCEDC1E4F3985EBF7BD0E8CFFC07537DA +:107E3000BC7FAC95C931999607A8E308DF8F30FA6B +:107E4000641C477FEF77E5019D067578F74CFA993A +:107E50007E5BFEB81BF3EE6A3BF4CF623C51AD474C +:107E6000BF7A2E49FFC13CED0B08D3D32B55D2204E +:107E7000D37E35DC0ED6B65E7E238C9BB7A9E54754 +:107E80003A6DAF93D8776EC8B32C1EDA93FBC088D7 +:107E900087D66B43B20AF1A051AFBE1842AE933FF2 +:107EA000F355039D4673232AD22D28E781DDEA99F5 +:107EB00070186E2AA78F9EDCFADB8BE19EA9C0A307 +:107EC000417EBA93F6ABA1F80E80DEC07BFEC926D8 +:107ED0001DF49912DF0E72F9D26D933D90C749F1EE +:107EE0003ECF43F13EE19DC4F3D1E84EBD5835D5B8 +:107EF00057FE07D5D22897933DA0B7E4DC3B6E042C +:107F000039A7ED4F7AE87E1ECB137A8DB5D7968BC5 +:107F10003AF5D7A91E70EE14724D0C0FD5FBB5A61D +:107F2000FE4D54AE5D8DACFD7B743DA0239C833A29 +:107F3000F3609F04BFBF32B9504EC23E8166F0BEAF +:107F4000E11267DBC797407CE342128110902F97C4 +:107F5000E9635FAE86F1C5512FCB07997C3A900457 +:107F60007CF9723B06DDD05E5A41E05ECD9F64F342 +:107F70004009F4F7F3772192BA0ECF3DDE4AEBFBCE +:107F80007EF16E04EB905FC2CF0DB2EDF7AF95E9D5 +:107F9000474AE9F8CE8975A84F4E7A799CBD94DDA1 +:107FA0006B7C3166AC8538C7A2C991467083AADE66 +:107FB000197B02CAA5E4F546509B114FEE51287F6C +:107FC000C1FDBD1AB57A356CED2FEA93DD187ED26E +:107FD000268A409F2D77D23A5D27543FE28475660A +:107FE0005F5D719EF91729CC7FD813704493783F59 +:107FF000FDB0BAC934FE319FB89F64FAC5C5FD8D86 +:108000004E32D8A0A0FEE1EF9FB8BE71F18397CCAD +:10801000BFA726AB11D5A0FAB621588BFEE81C1FCE +:10802000F3879D47565D06E70405F404ED7FD0CB4A +:10803000EE01268BC8C8B006F7A33AC13C399E9F13 +:10804000BA83AF2BF4455FC243F405843CF2C9F90F +:108050008D1897A464C6F70CA971E93D7AEEBA238E +:10806000F39D0405FCDE473E59D8A8523A7D27EA25 +:10807000806337D54BFACF8B41BEC75CA8B7EECC37 +:10808000B5DAEB437CDF6F7819BCD45E7F1ACE156E +:10809000BBE8FA49BABEF28E9F24A97FD9CFF5B1C9 +:1080A0003BBE05F9CC1DA660225F18E2BC4D1E291F +:1080B0008373B58324CDF70AEFE4E0F837BC6C1D79 +:1080C000714F9F2D7FE4BB3E0777E6ECDF678B2285 +:1080D0005D76A4E9C2EE291E6BD47F4E504FB81CCA +:1080E000D3DD632FE5F329EF480887F8BDC6C7F84D +:1080F0004DBC8B57DE91B15DEC57F4CBB4B37DFC36 +:108100004E65EFB094309357E5B013FD4D129627AE +:10811000CDEF9CFC708E98979133F1FE6AEA3E2277 +:108120006378EEAF607A76AA1C1AE8F7EC08EAB337 +:10813000C11EB9356BBB3DFF290DF73BB32CFB10BE +:10814000F295D94F21B6833D017D70934CBE0AF163 +:10815000C16D3C2F659B93F213857FE08D640CD637 +:10816000FF9D38F73CCEBE7FB26D743FCF8FD12CD0 +:10817000F1CF9B0E6FC7FC137FE73FAC8477586F3E +:10818000A8ED45E04FF865A6AF48AB07EDFE7EAF22 +:1081900038D72C60F761F4FFF0FB3B84F50B546992 +:1081A000C3E0679EE0E7CA66101EBA4E4F500F4B01 +:1081B0002C16A0CB94063D0542AF3ED0037274400E +:1081C000C9E85D089A1CF0B17A97EF819E1EF00B0A +:1081D0007259FF666F7DAF51027E82A8AFEC057FBA +:1081E000EB8012390AE751E351B70670D2F13AFA3F +:1081F000055756B23CF5323207F0F064AE827E4C41 +:10820000CF23EE6138DF53BF72ADD7746E7C2DF78C +:1082100099B9A46ADAF90CCB7CA5E7371F5D7FD446 +:108220007151A6FDC9DC15479D6C9C06E35ECB55DC +:1082300030DFFFB54F79F05EE1A0CB2AEFA2BCDBC7 +:1082400027E24F2ACA799A6F40BE217F8274307A22 +:108250009530B97687F32C729DE1B3629234E5478D +:10826000CCE1F63EC36773B1FD0D4EBFBE84768E82 +:10827000EB9567596FF159D65B6A590F3473FA3D24 +:10828000E60CF717F6F75F763D294AA127737C6C59 +:10829000FE8BA5F8777CB47EC3C4C825980E2AA9A6 +:1082A000053B69972BB95FBEEAC19DDDC09E9F5318 +:1082B00062BFF316B0BC28908FA54AEC029FA97E3E +:1082C000F32B01C341F9E026F06B287D077ECDDE5C +:1082D000ED0AF9F27A62A9622D235FD3E843863F63 +:1082E0001E8F00BD0FF5AF8FB91C3BA7D18B197C3A +:1082F0005AF55D8F57B3E193E9BD0F6E3DA7857EBB +:1083000053D753B03D63D7E2844C631F7714E99889 +:108310000F6492771DE41D9E83703FCC00FD706753 +:10832000BA7D676F5309F8D7997682E7B5CC78F8AC +:108330006EC29D3E51DFD30B7EDA94FE7E5BFF72F0 +:1083400051BF0BFBDBE139E0CBD4C10F94FFC39DE0 +:10835000F61301BEFD0EDB7C79A23E8CF309FFBF54 +:10836000C3FB8F4F1932F0E56003D8F3497AFE82E0 +:10837000F73C5F9723BE88C98FE9E0FCA9BCE3B551 +:10838000E03983DF00FE4EC2567AEE7861EDEC995B +:10839000EE7B7FC5FD0151BF3EBEE312E8DFC1EDBC +:1083A0004A3B3D41C0FCED079D16B9FD1F78FF5CBF +:1083B000E05D98C5AFA962F2FD67076F5116784B73 +:1083C000FE9FC2BB46ED38E2A2F0AED1247CC7BA14 +:1083D00086B679A98CAE851C0E5AAEA10E7000FD32 +:1083E00096247BFF41EB10F758FB9F7F3CF151AA8D +:1083F000BF0FF1F7220BEEDD71FC523ACF7874D942 +:1084000032BC2F90F5251BE87961D4CFEE9F177011 +:10841000BFD80EF7A89FE1E37874F536CC1788F93A +:1084200031F7E38423F2935AF09FD63BD16FB48F98 +:108430003B9E60F91977F87371FC899893E51B44AA +:108440002F4C3AA5EC782251A7EDBBCD3E6B3E40B8 +:1084500085E630E7C11C27DAEDB5E0CF344F0FC712 +:10846000AB09F63DEC13B10D33DE0BFD2BEFF76BD3 +:10847000C827A1E50D234E8CFF6E8D3931DE6B5F71 +:10848000D73E7EAB2B5538533EFCB611A7E59EF484 +:108490006CF0ECF4B378F78D87ACE33E9BF4DBF241 +:1084A0002D18DDF3797C8C626211FBCEAFE682730E +:1084B000EBFA53ECBBCA3F879F56E13BD6C7FD742E +:1084C000DEF5D16AF6FD5CF15D6799E0BDCC96BD45 +:1084D0000BD1EF256D1BB0FF937EC9E25FA7E9C406 +:1084E000EFC70EF1EFE1CE6E335CE6EFCFFA03FC9F +:1084F0003C4BE2A500CFA8A22FFE473AFFF14FBAAE +:10850000D93BD00DCDBB83947F4E6CCC95CCEF6125 +:108510004FF3F556B4B17B98D1933197C3249FEFB5 +:10852000727EA4E3AF9E98067FCFF3F68D7189E744 +:108530005BE8A5E6EF53BB026C7ED13E855FE0F0C1 +:1085400051007ED4F4EF5E7FC5E76F6D99793C6989 +:108550009BC5838DFA7CF37766EDF8EBF4C727FDB6 +:1085600074BE67A4F8BD9F073E6EF0201F13595BD1 +:108570000A700B3C50B9EF874F750B3A5D565C851E +:108580007412F088F520640671965A9DC5DFF27862 +:108590007EF3CA3DDEE44E3CFFF1EF8ACB14AE2001 +:1085A000AE4F0205D9D717F3E6CB24A5D079B7385B +:1085B000921DE017DAF721FA8DFF69F5C701BED1E8 +:1085C000E30EB5AB6CEAFED37CC3F5D2FC212BDF06 +:1085D000689C6FF2F93B65EA7F95B69ABFD314F0B9 +:1085E000E2F8F3E5A79F82DF44CBF95F8EBB34BA94 +:1085F000EEE5328B9BC0FCE6EF401DE3FD670558BE +:10860000FF7CA7E15B047EE6CF997E39347C43E9A9 +:1086100074727B9CEB8D1FFA2B2DF2B2215AFD5404 +:108620007E2DF0DBFE08C443468F7F04C76FE4EB6A +:108630008F2AC60D409FE357BA73217E70AEFB00B0 +:10864000B900FB51C5F9F03E476C4D01D0EF6172A6 +:1086500031C0F9129777317E3BE7FB434ABCDB0B15 +:10866000F703810BFAFA3D28BFE8EF5D1798D707AB +:108670007140D2C3E838BFE5F51D909F37AAB038E6 +:10868000FCD3B705318F82F2A1C5DEE4B7BC9D8073 +:10869000B8EA6687761DFB080FD33BBD24FEB1C048 +:1086A000F28CFE99A26F7A3688EF4FCE9FEEFBF1E7 +:1086B000E2BBC8824F0E25D787369BF0DE15502CC3 +:1086C000F7A4CF70FD3D6ECB076C39C9F2AEE83E22 +:1086D000306EF4DCC5A5F7C13EF2DBDF4E40BE4292 +:1086E0005780C567DE4C963F0AFB15FB17FBA4FBC2 +:1086F0009AFF4DDAFF8A56AB1E1672B4B1D96FFDE0 +:108700009D8FAF74EA37E2F9E4E3ECDC2DE6CB8F22 +:10871000527C2D857DC5BA8265193C0B7C5EEBA62B +:10872000789C47D8C3500A6FE5BE22FCFE4441F74F +:10873000C4E7E13CF8462016CA33E9A5BF0958F55D +:10874000B3B0BBD00FECD17A59734D679736449DC7 +:10875000D3C2BD3927DE41A639A7A6E5DC66075599 +:10876000C7A00BFAB7920E2C3F4DF48BA13CC5E984 +:1087700021C69F22A9E04AF017A24E8CB79CEAD8E6 +:1087800080F7826DAE91600D2DEF0A303DF6FC0E44 +:1087900027C6477FCDF7615FEFEAAD4EE30ACA6FA8 +:1087A0006D496697DBB6B2F8D7D51DD6FD8C53F66A +:1087B000A8CB033C771CBF14D6FD5B27FF3E36F3E6 +:1087C000174E27F3AA21DF6F1C700F72B3DE2FDE66 +:1087D00035E277D2E3ECAFE4D9E8E6A7207EFC608F +:1087E000A00CE11B8F6EBE048EF6D70F91EF4F6881 +:1087F000E017CD6CC7E3B73A2DF67AFE97ADDFDF11 +:108800005ED12AA17E2772AAF41A931EF285FC88F3 +:10881000EFCB5B58BB7D5E6F28C0E0F94F67FB7400 +:108820007EDB05216E0787A61F7F4128C8DA0F4E21 +:108830006FC7DA73FCFC5E6F04EDF7C6D6E9E7B9E3 +:108840002DC8ECDDA96DBFBA1AEE994E38ACEF9386 +:108850006F0D32FEBC26C8E46C7CF84B7D45408F22 +:108860009B2415DE0B5C3B4B9B0FFC72D5D66A8CB0 +:10887000DF5FC1FB77F863C7417F5C7F70531FDC0C +:108880003BCC1E73A8E0B71EB2BD7F16E57336BBA6 +:1088900041EDD52B60AFF2E1FBCEF85DED64E45322 +:1088A000419CDA08E501DD99DE35867D2AD07DBC64 +:1088B00099FBA7C6128B7F7A86F365367A5E3F6492 +:1088C000F3C76CFC7A9A44D06F369AFD2ABEE37CDB +:1088D000F78F3F59097EF875B322E67C53E1A78EE6 +:1088E0002BCCAF1E7F661EE64364E3ABACFE6A335F +:1088F0002B3F687F75BC99F1F9E95B9705AF9D66E1 +:108900009C1A64F271367FF5F4AD33CBCB69BEAF00 +:10891000335C8F0B7E027FD99C475014B4EABDD6DE +:108920002DD6752F6FB3AE2BE4E444ACDB07FE0607 +:108930002111F47F84FF4A7A969DD3BB15010FC89D +:10894000FDB5554C5DC0397003E80E4ACF451CAEED +:10895000E3D16541E067FB7EC61D93487FE36BEC86 +:10896000BEF3C2A14D4F146953F96F45D0CA77EFDA +:1089700097FF845EB7CF93E6B7E6F7792EFA90F9C2 +:108980002C3B1D92E7C467420F5C258FB8565531CA +:10899000FDF2595AFE143EE2067E5440C3F22A7E8E +:1089A0007F4689B702DEA18E0FFB08C4AF8D8160C0 +:1089B000F24288FFAF5F3CDF0CCF0E4E97AB86D6FE +:1089C0003D05EEFD09476C2FFA5D5F60F7F22F9CC5 +:1089D0007CB817EABFA4FA4AD280DF3663FDCD9394 +:1089E0001AFEFB08DB83B9ECFCD1B2C9659ED7CE79 +:1089F000BF1B6DFCFB3C8737ED7FC993B5A097C5C6 +:108A00003E414F16D175366EDDBF0AD6B97EE88875 +:108A10006B21FD7D337C489CC2BB25C8C6B709BF0E +:108A2000D743F74BF9FF79E05BD8EF5F49CCFEC93C +:108A3000132EF33BF36B3A7EB5663ABD3ECCF9FCA0 +:108A4000F620D3BB1DFE7871B020A35F67B794AD4D +:108A500000BFA618CE1026B84B381C8A3BF200F394 +:108A600073D83ED278BC89E1F1F993EB7B0B6AB302 +:108A7000E3F1EE2CF271363C9E18F6B1EF3AFF2589 +:108A8000A36FC6BF2D4D7699FCB4628093FBB7E00F +:108A9000270A3E787EFBAFAE8EB3F3580F3B8F4D67 +:108AA000D602BE1ECDE1F7869A66F9F7A27E116462 +:108AB000FEAE1DCEE7B85C9D4D7EAEBCE187785E14 +:108AC00078EE861F95C27DB118974D3EAEE4719C3D +:108AD00043B7B8DB87A759F72D8EB7297A8258FD9F +:108AE0009EEB5B36F5010ABAFC397F09FBCDEACF74 +:108AF000B5B07351C69F4B0621FFE1677C9DE7C06F +:108B00009FAB9AC19F6BA7FEDC52933FD7EEC47711 +:108B100025767FEE6912FBC4F2DA4C9CE7D92D2C46 +:108B20001E75BA79B103F4E5D32D77A25DFA0DE78E +:108B3000CB71AED79F6EB1DA8D099BDD98A24F4FF6 +:108B40005AF3F5B3D99FDF9CA7FDA1FE7E29E8C1AA +:108B5000A7EF6BBB1ACFD9F7F9F0BDA49D3EC77242 +:108B60009CCCAF033E35E9A15125F2DA683EF069AD +:108B7000117E0FDFCE9FE3CDCCAE1D5AEF6F077F86 +:108B8000EE101FFF726325BE6F82F313C07F3A475A +:108B9000E2E75A7EBEE6F6EB2A5481193A097BE5F4 +:108BA000CA61FAE3FAA197F0DC7C0DFFEE39FEA171 +:108BB000F0A803C5988FF7BC83EB91078278BF2A92 +:108BC000D613FB0AE558E5F5B3492BBECE66C79E22 +:108BD0004DB2BC09B1EE7507CB589C8AD7DB76B095 +:108BE000BAB06B87922C5FFACDCE10EE9FF2CB928B +:108BF0004768FD4CE7E21A737EF559ED5CD2F1A1AE +:108C0000D839C0CF4C76AE39E7DCFCA93384449127 +:108C10001EEF6EDEBB8AEEEFC52FCDC27F87EBCC99 +:108C200010E3D78B39BD5F54269698E13BC3F77BA1 +:108C30008AD3F94C1ABFF11CF3F7186AB95E7B911D +:108C4000CBC18B9D5639F8588E550EAE1FB2C27BE4 +:108C5000758715DE2B72D8BDE48B9DDD3ED02B27AA +:108C600004DF5CE744FB7322B63AB83C1FCFE31144 +:108C7000339DAEC8393F79BB52A2FE3D9CBFEFF396 +:108C8000A1DF9D8E8F56323ABEE961FC5E16724CB2 +:108C90001BDF4CEBE74A2BDDC19F30E3F1BB5C0EE1 +:108CA00045FDAA76DBB93A621D3FEE60726C0CF8A6 +:108CB000D1FF531506A74ACF2106E3E715600FD36E +:108CC000EBDBC65F29272DEB1B9C4FB2AD7F367FB8 +:108CD000EA7FCE33D39F67BE9953764EF1F70FEA02 +:108CE0003CF34FE7C9DFA3DC1FB49F6BD27683FB55 +:108CF00037C29FB936A49D19A54BFC9CEBE1EB86CE +:108D0000D6A1FF39EE88F562BEFE71870AFC38DE17 +:108D1000BCB91BEA6F0E9559FE3DAF629BBF25ECB7 +:108D2000CFD9ECA75D7E9EDEB8AB06D67D7AE31583 +:108D300016FFF7F2778A49CA749F29E20D6979F51F +:108D40005AE9FEFB208BFFFD9EFB93E971EFCCC53A +:108D500079D27EF1D0268C37B4B5EC5F2599F6F345 +:108D60005D6ED71ECFD1AC7EB1CCFCE26CF1B6DF2C +:108D7000DAECD8D39CBE22DEB6518E4D1B6FBBBC45 +:108D8000C569D34FCC4FB3EB23D1FFDF73AC7A4926 +:108D9000AC63C7E7B9AE5712647A57C4F748957603 +:108DA0004EFFAE697A5D5B7FFBBA7FCAD12C78B18A +:108DB000AF8F8F4366885755F378D50A1EAF1AFFD9 +:108DC000E45FFC04E27427D61FAD073E3C7DEB1F39 +:108DD0009FBE221FECF853F5007E358F5F9D8654B1 +:108DE00038E0F7B8847EE115439BF05C46FB33BD69 +:108DF00074621EBEF7BE88CF4FF591C50EDAE5F35B +:108E0000410EE79180CAEFAF464A31AFFD1CF1F544 +:108E10005C167C9DAFDD7830C0F3EADF5DB604EC14 +:108E2000C1481A9E148BC7AD66DF511F55629FC79C +:108E3000BCDB8D417598C52FD19F5B4F183F8DCA04 +:108E4000DAEE45B47D34364F3768BDEC63EBB0FFE6 +:108E5000FA16BF0ADFC559076356517A35060C98D2 +:108E6000AF76BCF91FE0FEE197AD6E0DBEA3F364D3 +:108E70006CB313E26F279A250279BF1B3F1A7B0D53 +:108E8000F2C9365EE1D7F0FD7BB40CFDC26FC27A49 +:108E9000A6BCB713A26EBCB4AB89B62F2A1875C096 +:108EA000168EEE7B699787CEDBBB3316867CE79BFD +:108EB000F73DBA0BF2CE0B0BF5B18F4608F9BB7D2F +:108EC00087D7623EF4DD62FC63BB20BFF9BB8E78BE +:108ED00019BC5B38B9EFE45AC84B97A5A66AC85BC2 +:108EE0007F2EB4A01FFA5F7EF9B6CF3C42DBFF7D38 +:108EF000DF7FAC851C9C156D62BC23BA5A26644387 +:108F0000BDA82B1EA8E7FB639AA39A90CFEC7B78B1 +:108F1000AD0CEBE5E9F85EB560F0E15D305F5D9CBE +:108F2000F03C996074754566BECDFB1EDE65D07A57 +:108F300051E76AF20BAA67EA260C7C3FF24C43C762 +:108F40006AC8ABBF540DF5572D246465B4C10FF941 +:108F5000DE31757ED45D8DF755D51A2DD7AB0B114B +:108F6000DE156DC62268578CAAFE28E6F2F27BB9A0 +:108F700092C87CCBBFFF5BC9E254E97A98D547BB66 +:108F8000A6CF0FFB85CAF4C6A86FFAF6AF86ACF77A +:108F9000ABA193447F90964FF9C8A887DA89CBDCC0 +:108FA000A416E2E65D3CBE9C5ED7C3E012E3887186 +:108FB000591EE8A1661E338776B8C7B98BCBD9BCDA +:108FC0000893E30227F3C327ABA5AF037F16382529 +:108FD0007CBF57E823F187A07D167BCFD74C880E46 +:108FE000EFECC4BC3FE6D3AE9917BB1FF875CDECD0 +:108FF000A2EAEE329C0FF745E1EDF198EEA128DCF4 +:1090000032C05DE05C5FBDBDCA047715837B348FE1 +:10901000E163F4DF589C6DF478F930F0EFBA9055C5 +:109020000E578CD5E0BD5AC16A82FFEEDAE4ED5EE0 +:10903000CC83279EB8E5DF8F3BC4F7B9D59687B3BD +:10904000554E2920E75B791E4E41F7F47410F1C4A8 +:10905000ADEFE412C3F27E92ED27334F3EB6537864 +:10906000587E7D1678FE390D8F35CF26330FCBB362 +:10907000F9B0E149E7E98987C17C5E912F2DF2883B +:10908000B3E9CFADB63CE9CCBA2C3FBAEC0291972C +:109090009752D8BFD7C1E09B929FF750C36CF65D43 +:1090A0001171DFCDF94061FB073A9BF30A7EC3F1F2 +:1090B000B741F037BF67DF3C87DDB38FFEDBEAC522 +:1090C000EB703E762F392AB373D70A59C7FBEE15DA +:1090D00063792ABC73107C29F851F0D3685E47038A +:1090E000E26B9D34EDF7CE26855CC6D87DCCECB620 +:1090F000B8D3FC3E40C89D5D4E09B997BF438FCCA5 +:10910000BF1AF4029C0701FE089547CBBD3B837B49 +:109110006388D937CA078C7E45ECBD86C08F9D1FFA +:10912000FE0B5192C7FB0080000000001F8B08005F +:1091300000000000000BDD7D0D7C54D595F87DF31B +:10914000662633C924793399C977C20CE123088490 +:109150004908212A1F9384402C4127E12B41D0E16B +:1091600043881262546CB3BBD64C08D218598D3F59 +:109170002DA52D6B87145DD6A53520DAA888C3A749 +:10918000D82A06A48A15DDF1A380883045BB6297F2 +:10919000D6FF3DE7DE9B99F79210B0EEFFB7BB69B3 +:1091A000F57ADFBBF7BE73CFD73DE7DC73EFD45F53 +:1091B000CC20FEF1847C037F5309FD0B103281909B +:1091C0007A7DD0A8586879311BDF17F5EC3512A8E5 +:1091D0002F249EC01842528E07134643B9D027AFA2 +:1091E000A4E5BB4A02210E426A13152C0B9F2D8B5E +:1091F000BBBE90903FF6E81418B56812FDD775F421 +:109200001F7FFDA1D261B49FA8D327C449C84E3D9A +:10921000FDAF74AC074DA648FBD73BEA2BD6D2F680 +:1092200045FCBB76993EB745E05D9A28E1F76E4B69 +:109230002408F78158E237D922F3B8298690E20250 +:109240005A35B94778C7D2EFD8C8AD5E4B643C31C8 +:10925000CEB58A84ED8B7849FC37D94811219530F9 +:1092600014852FC72DF9099D0F596F0E0C77D14F1B +:10927000CA3A0A0C21E17CE9979D00822CDD5A450F +:10928000C74B8E25BEEDB4742411ACD3FE9EED9673 +:10929000C878AF13F6579EE3DD02E395A7A4E5B7C0 +:1092A000BA587F808BC2BFD654A0825F5F6C83F7B1 +:1092B00055F9778D893C3F60A453A2ED96DA7C8BFB +:1092C000258A93A387CA86130AD2DDA9B2F3932411 +:1092D00042E648BE0708856BA9D1FD40BC2B32CFC2 +:1092E00079C4E4B4E41272176DFC0D7D3FA727D654 +:1092F0002F53D2CDF69A9D161383ED1BFACF850E10 +:10930000A9A28B7EEF6E4294A682BEFC7177AA1151 +:10931000BF73B42227D1170D17C7FFD2D8F06A0246 +:10932000B4221D0C9F7A867F515F3A82C29D13F54D +:10933000DE42DFC713F29B38CF6C85D273998EF86B +:10934000E0FB641AADA445BEBF3291D127028F1F46 +:10935000E93FDEE259A04CE8DB5E5B8AF6F4FFC130 +:1093600018E4139F3C96D271C9AD84B4D35A4A17FE +:10937000E50B0BF07550570F7494895FA2F3FF4013 +:10938000C9C24E6FCDA52FC745C67B4BF2664AB406 +:10939000BFDF11E37E5242BAE0FCCBE5BBF618EC2E +:1093A0004067C9DD4AC7FD47C5CAE649C285304F97 +:1093B000471CE3C303666232D3F15FA525D25D4F3C +:1093C0003CC0576F668FEA6CA7E3ED34B27602BFFC +:1093D000E4921C9C1AF5FE805495A9D0FA01474AE4 +:1093E00041AB84E3117314FFD37109C033E36F5FA2 +:1093F0009C9D4AE96118CAC6B3D3EF5747C9C1C497 +:109400000A36EF36CEFF6D4A1C96E5716CBC032E12 +:10941000CA26F09DE1743E541E0EC6FAC634225C84 +:10942000FF8CED80EFBB683D99D32DD9C8EA2F5949 +:10943000997C7E6965E37E9F97C909AC9D963EBF86 +:10944000E3EF753034EDD75ED9E925944F66CA4E07 +:10945000AC9B4D8D840C85975E02FCD45E42E7D3B5 +:10946000CF388F2B3A46E732365FD710427A005E0C +:10947000AAD708F26B0B7E476F7A2B1BF8F8E1E254 +:109480004E05F878AD81D474F5D3DE181732019DFE +:10949000C968BDEE492A4FA4B84207F27C2F9799BC +:1094A0003F775525827EDCA5B0F91A65D208E3081E +:1094B00078D63603C3119270318E04E9F77E03F03B +:1094C000C1F7733F417AEB8BA99AA15D0DC4EB57AD +:1094D000A2E86DA0ED82B911B94CB89880FDEB2FD0 +:1094E0008E2781A4CBE9ED227C4F52299CC9517073 +:1094F0009E988F706AE7A7C55F90C32BEA9E5CFDBC +:10950000341205570951D6C2774AA89047C347C8B5 +:1095100024E5E4685A50BEFB46463DCED60B5A6E53 +:10952000B6A09EAF00FD5845E74AAE65F2A450DDF7 +:10953000BD4229390A72DFBBCEF07E429E77FEE53E +:109540000B7F3CC5D3CEA3436D6BE8E39BB91EB83C +:109550003991F189D0EBA067AAE32370A7737A0849 +:10956000B9AF3095793E89C2DB0A85F1D52189D121 +:109570009D107716F42F9AC4F402A990C8705A4C23 +:109580009CC6E443F43B07937740C9E444C851F5D3 +:109590004275BB0BD06E029471D87EB0F5A9573FCF +:1095A0002633FDA88F4DC8238950660708D5D39B65 +:1095B000FF5AE66C8175E70D83BB139A7733FC94F1 +:1095C000D4AE6ED5D3E7862E49892191EF5B9A24DC +:1095D000CF32E0032E87F5760667BD3D681C464115 +:1095E0004BAF67F06676ED91F4517C9059C7DA99EC +:1095F000AD068427BD862ED074BD4A6FF46C2194CD +:10960000FFE3E1391D2FCE4A387E03524621F6236F +:10961000ED14A5E96E36AEC51D9096D2711A38BD0F +:10962000DB745563405FB525C7B9415F55DA7C49A6 +:1096300056E0DB13C1603CE0F9448FDE07F4B779F4 +:10964000EC5647647E4E5949073D107782C1D5C11B +:10965000E91DE1FF87B87EED64722F934304F14C5E +:1096600082205FCE05B9A82F45FB641BD757C9C41C +:10967000B7C382EDDB08D281E03C93D78CE86C77EE +:1096800045E81459AF4715C07A9DB33EA85F42FB29 +:10969000BDB84957114D6F5116703D46E731367AC6 +:1096A0001E83AD4BA29D21563DBF483BA6B7E2B8F5 +:1096B000BE2EA9B52F80F9D5AF7D3E2E867E32BD58 +:1096C0006BB31487FAED616C27F04EE1980278D6FF +:1096D000F2537A5789B305E8FABAC12D9181E1AC0A +:1096E0006F923DCBA2ECC4FAB546A4C36623A98B06 +:1096F000D6E384ACC1EFCEB732FDF60B9BF746F84C +:109700006E43F7A346A0EBED5B3E34FAFAD137BDCA +:10971000FDAF104F12E54FA0477D8D2900F32EA914 +:1097200065FCB972AD311043E953BF6D7B5007F64C +:10973000DA7DC40DF25BDFB5FD603AC55346BD6707 +:10974000022C25C994D97AC644F45F7A7D5082757B +:1097500025BD6B713DF2796A9C1BF81CEC2C58FFFF +:10976000CE9658FC125DF7CF1AFCB94EFAFEAC2B20 +:10977000D6EDA7EF0F9A993C0B3CBFBA7DC6218965 +:10978000E2357E474C10CA7A9BEF2E987F7B8BB3D5 +:1097900004E8D45E4E14E01F678C7727F2654ABC5C +:1097A000DB2F5DF9BCC53A2D9E4FBC8FC9C32FADD1 +:1097B000095C0E4901D8170F59E3B14ED763D42F76 +:1097C000070D0C4E3D87F34BABC78F7C09C248BFDA +:1097D0009B49027B8CAEBEDF8DE29F75308F2B875D +:1097E000B3CBE8A470ADE47AA4A4768BF47114DD55 +:1097F0007F6C95995ED9B65972221F6F6929B7633C +:109800007B1203FA639B84FD56D2F7B745E90F310B +:109810008F7EF4C826988FE544CF7EA64782C86F16 +:10982000025E414741AFAD56277E7F3AB5D7CC386F +:10983000DE927AA0475B3A1B4FC8B5560EB772BE90 +:109840004EAFD922E9D06EEAC179AEAAD1235DF636 +:10985000CEBF65198CB3CA9E960F7CF8F86F8E1830 +:1098600025FAFC39DE6F5587E4C175A6E388712EB1 +:10987000E87BFFBFC9B03ECF644B28D9F0DC11A311 +:10988000933E9FB953C2F156EDDCAE5F6A89F09FFB +:10989000EBCCDE5B803F5775C510B3047461EB976A +:1098A00096EFA87E4079207E23F757286198BDEB7C +:1098B00082F54DE8CF2F395CC4E22DD4D9411F8EFB +:1098C000CD07BD77883F17E397C7BAF79A40FF15D2 +:1098D000307BD675E628C2F93B8E473A7E10F527D5 +:1098E000B5CE601D13E3F7D5FBA3D14EFD82AF4784 +:1098F000946E6FF5A7FFC5F8AE27AA89333E8A1E7E +:1099000080E7283EFAC86AC4EF7F64D5E378FA524C +:109910008627BD91CD5FBFC61400F97AD55AC1F034 +:109920006333217E0E707A1FE0F46ED3ADC96D648F +:10993000EBCEC700CFDEF90984E917A64F1E7F568C +:109940006275BF25007E55BD6F0ED299D8CD6EB41D +:10995000077DFB8D73E323FCA6A5AB73C71E23CC49 +:10996000636617E3EB08BE022A3EA47A0AE90D7487 +:10997000023C0A7917781478C9E5F26EB479BE040E +:10998000BB49F87D968561F4A7B57299C8FDBE46BE +:10999000F0FB28BC456E5687BFFEFC3D0197E82FC3 +:1099A000FCBD954DBFCBFE84AE0377A4BE8625F8E3 +:1099B00011607F0BBF42B4576C6CFDFB9AD33985A5 +:1099C000F3D1CAC22ED4B72B3F6944B9B15430FD8C +:1099D0006039A1D66BC2AFA00E37EFC7F4E50A7BA2 +:1099E000BC5B9206D63F2B24E245BFF112B53EA9DF +:1099F0007D5E6FE673E4EF736DCC2F38B595120082 +:109A0000F57F23DA9B038FD778F85AA0F376D9FD38 +:109A100024E93B2E091E9380CE2BB97D7D765BD940 +:109A2000B57FA47CE2DF9AE81E4EA7FCD9B6D9FF29 +:109A3000F047DAFFEC96A96E7087EDAD5EE49BB05F +:109A4000C3ECEE74613CA302FCCB96AE7D09102FF3 +:109A5000F9F4DFC71580FE9BCAE13CF3ACDC047867 +:109A600039F3ECBE87FF42FBD505F2938115D6FC96 +:109A7000EB2BC610855F1778F46FB0AED56D4944F7 +:109A8000BBAFF5DF7F3105EA2BB724A21E6DEDFADF +:109A9000257BBF95BD3FF3CBCD5300FF7BFFF599F1 +:109AA000DD305EBD37C10DCF3FFDD767A680FDF627 +:109AB00063CAE70067BD4FEF413C0ABED6EAA9ED95 +:109AC0007B900F059F50BEC67808A961FA46F0F159 +:109AD00051D05BD4DEA82EB5B44179F406730DF2F3 +:109AE0003397CF8605D6CDB8FEF95D7EE83FDB6BB8 +:109AF000CD073FFC763E7FEA8333BF94720DF8C9F1 +:109B0000716382C60CDA6EFEC2ED5300CEB65852B7 +:109B10006C467EA50F295DAA51D8E8381DAF7E2D71 +:109B2000E5113296AABD93B9E84F6EF986F2EBDBE8 +:109B300006E60FB7713B7CFEC20F255C27885E39B5 +:109B400029E21FF2E5D6373D8E27DAF5DA6D1C0FD4 +:109B50006DDCFFA7E3E37A53B49AF1F70169492B6F +:109B6000F82F07EE0D4E02FDF9E2E9BB63EBC744A7 +:109B7000F339EB9FBE93E987553B37B71869FBEF85 +:109B8000E5E617C167563595918F93805F2494B7AA +:109B900006BF45A5075B6C4CCE921562BF0EE20F67 +:109BA0007A62B74049C83103E2E7491E87A1224ED5 +:109BB000F17EBE65A103ECE10D065FDA04F85E1BE1 +:109BC0005FC7B63078697FC55280E329D715E03882 +:109BD0003D061BD82D04E360CE57666C6991227058 +:109BE000538ECE86F50CC62BB4C0FAE3AFC1F5C7D1 +:109BF0006974033F9C81266988AFBC456323F3D613 +:109C0000C60B40EF55C583DD58F233DB844829E2AB +:109C10000B5A7ABCCFDFA72479B0245B93504F0E48 +:109C2000669FEC9D7F0EE5E7F1973E447DD400FCF6 +:109C30000EDFF77DA25A97053F6D78E143E4F7EA1E +:109C40006E469F0D52681DC88BFF0669FC9320E786 +:109C5000CD1EF23135341B389FAFACF87039CC7F54 +:109C600068779A02FAEA1C97838629A111A027CF68 +:109C7000BDC0E4E0804E87F83CD0397A33AC43D4A1 +:109C8000AE45566E687476C6207E99BD5F52BBECB9 +:109C9000D17258F7EB881BE4BA616755A613D79FBA +:109CA00018C4AFEB898FD6815C58A9F56A76C2FCDF +:109CB0003E980EF035D4930920DFE9D33C2F409D28 +:109CC00074337F36B9D65EA247FE5A3C1EF86B430A +:109CD00056D73A58DFFDD43E85F96C307494EA6962 +:109CE0007D43B953A118A3F8A1EB1DF4EF5DEFE696 +:109CF000EC44F9B52F72B74BFDE8871736A7C27849 +:109D00000DB94637D82933BB995D4DA85D0DF036A6 +:109D100074B7E402FC339DD7B965FAFE738E1F81D8 +:109D2000A799D3289FC2FCFC1602EDCF197A6E8149 +:109D3000FAB9E728034A28AE2500DFE93C693CE888 +:109D40008B575FA0F64F5E841FE39FA77610ADDBB5 +:109D5000F48AE446399B1D134DCF0E035BAFAC7CF8 +:109D6000FDC9A960743DC5E5E89458276C46CEDF6F +:109D70003C4EA9F8F3605DFE9CD31B8703FDCFC763 +:109D80005DB52C887254BF8DD96FF6184FFE3D51CA +:109D90007C6B2F63EBA588173B641D8B1B83FF62D5 +:109DA00007FFDAD929233DAB91BEDFB38F2C30D327 +:109DB0007A4C12832B3D575AC0F06244BC38927CD7 +:109DC0008F82DD1C1E2515753AFBF27B5C128F839A +:109DD00025790B217EE5A0FE462BC6AB4B7466169B +:109DE000BF76433F875C8DFE6DD891E6EE54C93552 +:109DF000B30B4F27C7333A07DED45747E9FD885FD7 +:109E00006C76835F735A17D49BA3E2D9627E8196E6 +:109E1000D89A687D654D62F6416014A901F9A7F6EC +:109E2000B905E39F0AB58BC0FFEEBCFE97CCFF6E71 +:109E300045F8FF6A53D8F7E83CC04E73E47857B34F +:109E400075341EE175E49025D0CFD19A2A011C11FA +:109E50007C2A9B019FBFE0F414F67903E563B0EB25 +:109E6000889EC985F32509E31603E981085F333D20 +:109E700030B39BD137AE82E90132461A0FEB3DE891 +:109E8000B7AAB14C0FB8C645E4B7C1181A017C781F +:109E9000A57AA03C2E80F2533E7A04C61BC438E754 +:109EA0000CD48FA4CFCF513945BB96F37DFC8B8C5E +:109EB000DF055D0E1AFD285F0787C622BD012EF063 +:109EC0000B857E6C78F1C111BE7EE30B623DF363BE +:109ED0005CF2F450C2E8CEC785BD99F8022CFDB003 +:109EE0003EC435B1F59954E8B07D7BEEB15F417B5E +:109EF0009DA92B087C63CEEC990CFEB63789C5CBA7 +:109F000066CA6C7F28BBC94BE0FBC9E09300FE3AF0 +:109F1000E302A057443C460B5719E77F11F710FEA8 +:109F200005C491A17D7D12F3576EE57C756F92A4F7 +:109F30005A9785BD4DDB0F050367A0F544F4FBAED2 +:109F4000E243E23B625D8BE0B945150787F9548D2A +:109F500019B85DC71EA637F00FE8F262DAE6765C44 +:109F6000579D48CF87387F57DABC53926869AB60FA +:109F7000FEEFAF455CD3378AC5ABCD4C4F69C717F1 +:109F8000F54720EE3B72E0F553F99BCCF6658887E8 +:109F9000805C603C01C4B6B4C20DF37D84E34FDB4A +:109FA0004F4FF45F8684DDE48A8287DB5C10C69DB8 +:109FB000D2CF3E53EF7727A9E3E0DAFE03C1DBA659 +:109FC0008963B7E5EC26107F8A332530BE2597D00C +:109FD0009E7F908F43F9DE5D85FA8DC5B106FB8EBD +:109FE000164EB3530DE795E2BF4DB7BD0EF8793766 +:109FF00087976CBAB2F9FD9AD3EBE166139664D9F0 +:10A000002855BCDFE276B6C03A3F6E97331FED6548 +:10A010001D8BD7C54F217F9229BF261477E4AE014F +:10A020007DED55C39D52134B8251FB81693E9BAA26 +:10A030009E5197AE6A9FD53854F57E48D335AAF71E +:10A040002E7F81AA9ED3769DAAFDF08E52557DE487 +:10A05000C6EFA9DA8F0A54ABEAA3B72E50B51FDBBF +:10A06000B544CD1F1AFCB5B774D580FC4CFDDB1789 +:10A07000A5A86F5E2456D8AF23A6D07890B771DD1F +:10A08000EAF99F4BB2211F2716ABF170B5FC30F5F2 +:10A09000E2E5F956C8511C617C1177A9ED4F721E9B +:10A0A000D435F2C2C79D62627232D8B86BE26ED10B +:10A0B000039FEF864A943DFCB646BECB6B12D93E59 +:10A0C000CBC5EA41EC66260FF3624823F0CFBC38DB +:10A0D000568AF763ED4CEE87DB793CE90AF9F738ED +:10A0E000E7F7A303F12F356F92815E1504FD69A593 +:10A0F000A2E54F10BFA9D507493E9597C7F97C3611 +:10A10000F0FE1B9B151CEF67CDA9586E6A76E2F333 +:10A11000279A73B10C34BBF179677331965BA81D34 +:10A1200007E553CD15586E6DF662BBA79B6BB0DC8F +:10A13000D6EC63F2A8A5DB451BFA33F3885A6FCD42 +:10A14000AFD1EE87F9D93AA4E93F9FACEF817D7793 +:10A150002D3EFAF4971726F6B74E8BB2E9444960C4 +:10A160007F54FB49F6783BEEBF4D2413D13F1DA42D +:10A17000FF57CD9EC07EC3E07CADE51F72E99EE136 +:10A1800060076BDFCF03464EA7FCFBB8ADDD6FE980 +:10A190003B2ED5876B439455F240F6A2E2C87B3440 +:10A1A0007CE9D127AAFC5B513EC7F9AB84F36189F6 +:10A1B000860F37703EFCFEFF513EDC6B8E473B7ACC +:10A1C000AFC199E988A2EB5E731C3E27B9C43987F9 +:10A1D000D245F210C545F972BF9DEDD349E031601B +:10A1E000FC779882F10BF355C639347894A879ED51 +:10A1F000A2E395D0728A0DC70FEA617CB72EA22F19 +:10A20000719F3E36C2CF725F7EA0E3F88D14CE5FA1 +:10A210001B88D348DFBF6777AAEC8752BD7C59FD06 +:10A220005B0A7294D717FE3EFDAE528E9EFC6F966F +:10A2300023C1EFE452CE306F7CDFF7255C8E16DA57 +:10A24000AF6FF78F89F07B29D85F51701CE3FC7EDC +:10A25000CCCEFD1B6E6F007F14F46377BC6E57DBB2 +:10A2600067578BEF12AEEF0809A583FC5F6D7F2A5D +:10A27000397AE857624AF0C7E55D7DFF81F0D9A7DA +:10A280005FB7FD8AE24054D34830FE720EDD729310 +:10A29000C50FFC44361ACE86A2F8B829CE7BCA4E2A +:10A2A000DB771B4837EC2FD065DBA92423DF235E47 +:10A2B000E99FD744EBF9BC3ED12F213FC7D04A13C9 +:10A2C000C847E8E0D7A02FF27939919710064D05DD +:10A2D000B91913AF077DE31668E2F1CC22519D4610 +:10A2E0004D9564913207E31269B50DDC910E02FBC6 +:10A2F000E2ED92BB4DA6DF93535CAD00D4F88A1219 +:10A3000099E0165B079693484F2BE4CE4D216119D7 +:10A31000DA179BBA5AF514CE21E4927212782DE521 +:10A32000A955DF50D7F02B33DB1F6E32B1F207B1E6 +:10A33000099D507E6566FBC5FE5282FE8FFF83F845 +:10A3400000F895F74BBE3807C5CB573ACF22F88EA9 +:10A350003E29D3C1E3A91F8530EE2AA1DC975A0A12 +:10A360006B6E437965CF11AFAE483BACCB7DEB3F15 +:10A370007E80C5075A1F647CDDDAC2EAC31CCCCFDD +:10A380004B77307E1EEBE0FA1E28938CF8413A980A +:10A3900089DF0FFBB82497E2B788E11BF1673984A6 +:10A3A000F88F255D883FF3BC8D081F9538CC5F91F1 +:10A3B000825EF24D5CDFF1061AC764EAF098289FCE +:10A3C000C42D0CF80DFD8CA3E774D2CF3162BEDD35 +:10A3D0004CD9371EF046327548F758319EE2E5F900 +:10A3E0004D8C3FBF053D265F093D0CA5EE1E0F6558 +:10A3F000B1B9B112E6915C2D5DE6396C62BF1959B5 +:10A4000075771AD90C7E7F9D9DA4427E9CD16242B5 +:10A41000395A9BE5C4B8BE710471AF01FC797588E7 +:10A420003F315F91C725E492E2652EC06F0C481F53 +:10A43000029E8CA98DE8AF117D2803DAED9618FDF8 +:10A44000B5F27C2BE7078A50C6CFE4F2EBDBF65976 +:10A45000D6F7EC286CC367BE5E4CEB25D69BED0AA5 +:10A46000212336ECFC9E9EDA25DB8F10143669C35F +:10A47000A18740FF6E9F6BFDB983B6BF2B65E94393 +:10A4800006AA57B62F92F0FD17F09EE2F7BD12D242 +:10A4900005719D9F24F95639281C0B5E771E801C80 +:10A4A000B6ED07EFC806FCDBCBDC2119F07D738C21 +:10A4B00013F67DC8250A07C5C32F01040A6717C410 +:10A4C000130DECF954FABC56A067003D3351D4FD8E +:10A4D00012D1D3FA6451E7E36E817A4EA4BDD04B1A +:10A4E00039CBEEFA8F1F821DD323635E8454C3F6EB +:10A4F0004926F272322FF37969AB6076CF8AF56420 +:10A50000BC44FB0F5B26F6796202C3E97F0ED94497 +:10A51000DFD3FAA947C9789091930667AB05F87124 +:10A520002C71431C99E8197FBE9D650D40BCE294D7 +:10A53000445A31CEFC208B33431FD86F742FA3B401 +:10A540002E0493D0148078F95BCDC4B37678947ED2 +:10A55000A4B4F114B1F00BC3C318F49B2691C81F27 +:10A56000CCB33C822794ABE9BC3EA39EC5C9623CF8 +:10A57000546FC2FAA5D1B76612483521BE5C98A7C0 +:10A5800021CF200AC09B5D11A44B29D5A79E12D4D0 +:10A590009B13886F5F0F2DAFF56CE77A34D00A53A9 +:10A5A000C410470EAC8F4E3DD0B38C5AB050AF2084 +:10A5B0001D587E8F746159497AB0BC9184B1F412F0 +:10A5C000C500E54B0E17CAD31413D5E320FF7A2735 +:10A5D000C6034FBEA6B8212E595DE1333AFBB13F09 +:10A5E00096EB09DBA723BE6CCC1FD3FBB2E745D9A2 +:10A5F00013276BE72FF2D07E4E9D3ADF728F83D9FF +:10A600000BBFE3FA7383C4F5C82A29007EF1865A8A +:10A6100023E6D71C5D2575427C9EBEC7B8ACBFD66D +:10A620008471BA0D066716D8177F7138597CAD7ED4 +:10A63000FB0F401F1DBD61451AC8EB71C937BD8EA8 +:10A64000F65B5EC9E2EA44EFCF9A1B25E7A7163313 +:10A65000B8443E42AF3DC3E5F82FA05B20FE4EE17B +:10A6600047FD25E26E0BACA867CA498D1EF2A13FDB +:10A67000E6F30870BD20E4A74EF081DE6F4CA7FD25 +:10A68000E6B95D88C7050116B72DD79320D8C3BD9D +:10A69000F0D76CBE9750FE5850B747BF7C0CE613FE +:10A6A000613C7339CF2F92EA9C0FD861DFF13EB63F +:10A6B000FF12C91F62FBC7CB176E5F8471856531BE +:10A6C00004E462F9C647DF07799F5F37C309F8A33F +:10A6D000DFC3B8E97413DB1F34D1EFC37EDA8C3AE1 +:10A6E0009EB751F7A31EE04FDACE03F6F074DA5EA0 +:10A6F0005F0079392CEF2DD6CFF28762A789FCA1B4 +:10A70000C6030EC81FBA93B8FDF4B3F3376D96585D +:10A710005E2B41BF65307BE65F7E74C98AF62DAC47 +:10A72000FB43283C4DB213F6F3895EC1FE0B4C0C83 +:10A730007F6D75ADC8877FAEA193A0DF9DD7E16225 +:10A7400079F0FB997CCFABC90F411CC9541183F33D +:10A75000048D04715F13A94079CF272C4E7137CF38 +:10A7600037A756AF0ABE3EFE01D577B03E0C645700 +:10A7700089F9989A8C0C5ECDBC84BE00BD12EE4760 +:10A78000CEA58A57991DC64B907B90D702935B8EBE +:10A79000D7018B7965A637FD04E3E5E43EB69E98C4 +:10A7A0009F92601D37D9FDB780A97D6AFFB0072C45 +:10A7B00088AE0E12ED17984ABDB745E7233F58E221 +:10A7C0005D149D17E14E66FC8DBBF8C0E3AFFBB393 +:10A7D000E13BA7DF60EB83FFB61827C6A506C103E0 +:10A7E0009D7A40977305F35DC6F5392F23F6A2B322 +:10A7F00015E859963C14E129ACA892C1EE7876F39D +:10A80000C4B7AE257DE934101F69F1F37592676610 +:10A8100032B3AB7557625797CB9937D753FEB9B060 +:10A820003006E54AAC8305401490DB1E12A0B20D41 +:10A83000EB03AE1B696D44919C10AF84DC693E0E46 +:10A84000B0718D89E855F14A4555CFA84B55B5CF24 +:10A850006A74AADE0F69CA55BD77F9DDAA7A4E5B24 +:10A86000B1AAFDF00E8FAA3E726385AAFDA880579B +:10A87000551FBDB546D5FE029D5290CEA7F0F7B24A +:10A88000DB0FF4F57B7AC61445D6F5B15D3E55FF76 +:10A8900089A1C595A09FC675D7A9C62127A85D66C1 +:10A8A00082BC9E464E0FB70C7AC24D95EFCF5C80AE +:10A8B00042F61EDBD3BAFBC40D9F829E5E506388B6 +:10A8C000D873D08BACC7B8A35B63076AFDE215876A +:10A8D000FC072C14BEDAD7FDEB80FFDB93D57E722C +:10A8E000B96CC1795D3826635E491D70A63D42C7CB +:10A8F0000B3010CC7B0F09B0BC0FF5BC851F5D0B76 +:10A90000F8A1FD16D07182F4554CAA9ADE66A79A7A +:10A91000DE71B96A7AC7BBD5F44E2C56D3DBEAC9CF +:10A92000ED17BF49156ABA0BFC16D3FF017EBF6B4A +:10A930007CEE00FCC591A838C324D4A77FDEC8F5FF +:10A94000695F3D30C754D4570F08BCF5D10716E6F0 +:10A95000AFF4EA838D5C1F6CD4EA03CFBE340ADF08 +:10A96000041FF51FE9B8EF2C9A98017A2D9DEC127F +:10A97000F9FC3EC89FA1F2FD6AF204D8F77387FC88 +:10A98000B00E6C8A413B72FB811168E71F1D4E2699 +:10A99000A3BB50C1ECFC762383B327D9C2F28464F5 +:10A9A0006F0FF437343506C13E7E17FC69D8FCD1F1 +:10A9B000E80BA2D1775A3B58E8935393193FBDF364 +:10A9C0000609AC91C0EF3E82FEEED5AE0B83F9DBFB +:10A9D000BD7A74215B3726F2922CF1A3FD2ED6911D +:10A9E000D6629F0BF2F60B4C1E99E8A2FDEF10AE5B +:10A9F0002B53891FF5EEF515EE9FAF26602FBD9303 +:10AA000001F692D60FA778FE92E1B9777F55854F70 +:10AA1000EDFEEAA564B1BFEABD941CB5BFBAC3ECB4 +:10AA2000467EFA7D2DF33B0A8F0C6BB5D07EC9B7FD +:10AA3000BBDCD06F87D5BD0FEABF5FC5FCC009C7BF +:10AA40003C32E429E534BA305F6D87CB5B06F5DF35 +:10AA5000DFCBDE171DF7611ED3B026F6BE604DE3D7 +:10AA6000BE783AFEDCFBD9FB973E5F87E784026B3A +:10AA700078FF928E32A8FFFE01F67EE289402BD449 +:10AA800047B5F1EF4B5DFB12C0AEFC6789E5D769B6 +:10AA9000FD1DEEDF4CE574E84347EE074CE1ED8524 +:10AAA0003F33B586D16759D83B1DD94B4327AD9D60 +:10AAB0005E4E7C589F41FC58DE400258CE24417CBB +:10AAC0003F8B84B07E131CD1A1F52AE23440BD2215 +:10AAD0002517F97A36757531CE50EC36811D6EFF2B +:10AAE000E4B7FF401222FBD562FDEFB07957817DBC +:10AAF000602FF3DE0B7641450AB35F23A5D87FF6BE +:10AB000067BBE9FBD3FC3C5264DFB908F3226893CE +:10AB1000F560BF4E4A61F92939EB1BF5208F376686 +:10AB20004A6EC8779801F62DC54FF0277A2BE4B509 +:10AB3000012DFAF38323F1304DBC57EF477FA2403C +:10AB4000768E062159FC93A71E02BF780708643A47 +:10AB500055423FE99AE947E78BD92F83B53BC6F3C6 +:10AB60006576F0FDC7395E970EF9335F6D1F2D4E88 +:10AB700061F69128271CFB6EE755B0C68FF9D37399 +:10AB80003B6308CB7321E990CFB29C34225D4F8E9A +:10AB9000F51BD8B945A67FE672BE9BCBF9E9E4E682 +:10ABA00018A4C3A9DBA48044E159BEE9D5E3C06F72 +:10ABB00003DA476386A39E99C3F9739EA971513D39 +:10ABC000F0B5B09B7E728DFCCD68C4A35AFF0D60BA +:10ABD000FF39785D7C4F9E42FC0E0ACF7B8B98FE3E +:10ABE000CBF04BB81E5CA9FEB36BF45FBAF89E873E +:10ABF000B21CAD670BFD57CFE6EFE06546BD76FDB5 +:10AC0000F0B500FFA7920E09EA59248CA593286B92 +:10AC10001C3910D272EBA09E72607F0B8C6F057D89 +:10AC200007F37E706F21E83B038F071B4C74DD0434 +:10AC3000BBDCEEC1A44DFDFEDE78D94F5320BEF340 +:10AC40001DC7CBA8E5340EF8FC1383A50DE3BADAD3 +:10AC5000784A9FF88B3AEE30B983E143EA10EB81F2 +:10AC60002F15E6096992AA75E15AB713CAA9921776 +:10AC7000F548A5DDB723C501F189C64C68AF33851A +:10AC8000645807DAF9F99C767E3EA77D84F0332973 +:10AC900035A1F4E4229F8CE3B45D976C5C07F1B6B8 +:10ACA00075B1E1F61C98D76E1D647A469DEFE3FD01 +:10ACB000F879C53C85CDE361F80EED17AB7316014D +:10ACC0003CB1B27304941FE92815293C49C48D7521 +:10ACD000A3AC385A5C18577C2D05992F1C2BD1EF4B +:10ACE0001C7B5927811F9E77ED4736F07F9FD9D572 +:10ACF000B9B593B2D09787D8F2FBF056D91F43C7A6 +:10AD0000CF7B615ADC1BB4FDEA9799AC8E2BD6A1A0 +:10AD10003EFCCC48D6433E4DB549F6EA29FD3FFB03 +:10AD20003ECF6FD1BBB3ABA2E20473D3585CF7E85C +:10AD30000071BFF18925BA540AD7D1B4FECF819EE4 +:10AD4000E27A559CCF23B94EC4C3170EA2CAC318CA +:10AD50009F78238E23EA868B56E28B3A2768D07B36 +:10AD6000091CE5335CB4E3F3446A8F425C3FD15A7B +:10AD7000AC07FE2B25CA7E8F84478391BE8E567604 +:10AD80003E299C660960BC6F923EDC6B070E8575A0 +:10AD900087D991188F75C17E88DA7E1C47D4756D6E +:10ADA000FCF5125F270C9AF3FB1138D9B97D8FC9D6 +:10ADB000129461012C74E7829EF6587E7B9CE58993 +:10ADC00051FD1005CF7D499E69691322E78D97EAF1 +:10ADD0003C3351391CD5D9C01FD5DB4C7EC81F4C24 +:10ADE0009C6CC37C3AF1BD29A98C3E3BE9D205F4A9 +:10ADF0005174C487E7DD35F35D4BE5CB45E1C84DC4 +:10AE000065708BF642AF2D12F2E5B7A29DB390CBE1 +:10AE1000D71369ECDCF42285ED977CF4E0E70FC0F2 +:10AE2000F3C547628D80EC5B179284B1B49FEFC786 +:10AE300049873D4EE063F71EC877218F307B42295A +:10AE4000CD2D62E7D3A7E1BEA7E4CF407D7BA5EB84 +:10AE5000C5FDCAE2B3C017B10901A742C789BDE663 +:10AE600034E6CD4DA4F4877994811D91D30F3D2D07 +:10AE70005FEA802FB474850F001D06A36F2C3F3F3F +:10AE80004C486844743ED8FD4AC9D9D40998BF1AC1 +:10AE9000B441FEE3CB318CBF0E51D2D2FA9DBB47F9 +:10AEA000617CECE934DF196827CEAD92FD613C1777 +:10AEB000BB3481E7A3A57AF01CE92393ECF9ED4EAE +:10AEC0008E6C5A2F335931AF6C612A931B318FAB83 +:10AED000E55F3BAC41C0FF9214E894069FAFC8C742 +:10AEE00015F33C93CAD67F518A7968CFBF9DE1FCA8 +:10AEF00077263501CBA7D3BC38EF3BABC31F5873C4 +:10AF0000E0FE037E8FC020F3BDF3EF9CEF95D2F5FA +:10AF1000520A61E77B63AF0CAE35FF9FE0FA3C95C8 +:10AF2000C3957765706DF83BE1F210469FC1E0A2D2 +:10AF3000F4FC1CE48F4C0BE3FD104B6D5706DF4B0C +:10AF4000DF017CB62B83EF69842FC8E09B47DC864A +:10AF500054990313751E457B0E659E9EAEAD0591FB +:10AF6000732A3A53C0075DE6E49A08E8D76F7B1E60 +:10AF7000A5978EC9246805FF7C770CC6F3893B3CF6 +:10AF8000227A5DDDC3E5E6E934CF419097A523B889 +:10AF90005EA850B73BC8F128DA89FB1648A50ED742 +:10AFA000B7F6DC619D2CDF974DD99CE9C4FD82C3C7 +:10AFB0005C6E45BEAFD8E7BBDB5A5707FB1B625D33 +:10AFC0005A774D5D2EEC6B7852FB5F977AE5BCF9B2 +:10AFD0009032CC30301E56CA3B8A1AFBD91FD99604 +:10AFE000E40BA546E5E3ADDCFA9A322C2A0E349642 +:10AFF0008474CCDE0FEB58BC97E7C7A45C1DDE77EA +:10B00000C0980ED0CF5ED4CF629D6878F1DF9CB03F +:10B01000FE507B80407C371C1F8BFABAF59AE2DC2D +:10B02000E8FD1C5D9A58CFE501D673A3EA79B0D943 +:10B0300044FCD1F7339C66F73344EE658823FE2841 +:10B04000BE8DD83512F1F76BD7E8F1B9A0CB4076B9 +:10B0500082C8670D3607AB3F31C0BD16C5B3A1DC52 +:10B06000DBEC99FD09F5EF362A251EB0231CDE43E3 +:10B07000D59F44E139A5A647554FF31DAFFE240ADD +:10B08000BE8CBA90EA7D56E369D5FB214D6155DD52 +:10B09000E5BFA86A9FD3466647D78777986647B7C4 +:10B0A0006FD3B1F308A58526CCBF1FB95151BD1789 +:10B0B00079B206BBC893D561FB518154D5B8A51EA2 +:10B0C0008BDF0AF6790B9383D15B9DAA714AFE361A +:10B0D0001BF78D888D58619F6C6C57AEAABF4129B4 +:10B0E00056B5F798583ECD4665B1270DEC09538902 +:10B0F0007A3CB24735EFDEBCEB41F261F4FA07313E +:10B10000FE087B93930AFAE65F6F543CF83D2DFFEF +:10B11000FB7F3489EF0B31BF9AF22DEEE7842513C4 +:10B12000AEE3123F472CBE3387F36DBD866F23F726 +:10B1300090FC7D7CBB49F1FC16CEB78A7B5CB4F3F6 +:10B14000FC611AD3339F19FB7FBFB857AECCAAFB63 +:10B1500052227C6FC1E79F958A7B76D87D29ABAD63 +:10B160006AFCDEC9BFF3308F5FAC8EF7A4D82E9394 +:10B170000F66B8184702FDCA71023EFF6CE8E5BFD2 +:10B18000F7C3ABFE9E3CC0FC8CF89CD2B15FFC3C8C +:10B190002CF067EBFF7D7B2FFED2547AE3E134275E +:10B1A000BB9FA6F73B99F81EFCA6FEF5971D9F0FC7 +:10B1B000E6371193CF8D7AF83BF79708C27BB5F647 +:10B1C000FA921406D760E3BF9AE6494EC5FC936F26 +:10B1D000B76EC7C21A9D86E33C0B72B9CEC8CE11BA +:10B1E00052CD84F10EE10F11ADBF94CBF2DC16A568 +:10B1F000FE16ED88588841D07539F67E33EEAFDC07 +:10B200002A294680FF1653F8FD9FD3F6275E8E311C +:10B21000B27889F087E264D8B7BB5238459C45DCE8 +:10B220008B007172D077E3A65E83E7611E013F0F4A +:10B2300060E0E71A1EA130A451FD9377646E62109E +:10B24000E804711EFA3E01E64BE14ED459F0DCD21F +:10B2500040DF4FA40A2CA300CE87B0FD94C45DFA52 +:10B2600033D174D0EEA77CD9F3452CACBBEFA7A9A2 +:10B27000F755FE4C2ADF1C0DF82AB6239EF35E9884 +:10B2800096127D0F496FFEA6C80B1C200EDD1B1702 +:10B29000D2C48144FC67F255C6817ACFFF6BE2408D +:10B2A00083C5B1BE4EF2FD17F0C940F12CE35EF646 +:10B2B0003CBCD98CF686886F89F94AE94CAE437656 +:10B2C0008F944EBFFF719A47970E7114338B0B1DED +:10B2D00085EFE4C1FEC48C4498EA97C49308FE2F1E +:10B2E000E4FD66D8FAD209E2386BA3E4FEA8B57F84 +:10B2F0007D9291CEF4CDF9AC1EE4CBF69270F6CFF0 +:10B300000AD18F553A295E57ED62F1D45560878096 +:10B31000FDB1536D7F5471B807BB17AC22C99309B7 +:10B32000F33A0DF7D3401C3D9697094C9F8EE4707D +:10B3300024F272122F4F737D7BDAC6DAF7F2217F87 +:10B340003F857FFF936693776D943DEAFC494C23DC +:10B35000F8A58E1C718E8B4A0E9D57C3AE14F44710 +:10B3600096757C6884F3519EF49244C033B403FC18 +:10B370002CD3878C36DAFE5E9BAF109E37388967F8 +:10B3800007F477868CB3E93CCE737BEBBC81C5BFF9 +:10B39000CE9B5929E0F1A45725C23CCF4F0E19018D +:10B3A0001FA2DE40C2B7403EA827DD8BDFA3F527F2 +:10B3B00034F50FF4B47EA791C73DB57A25335EA569 +:10B3C0007716ED7A0DF9FA1613599741DFDFBA2B8C +:10B3D000C508CE4C5D827F84A28AAF7C3B7DA2B53E +:10B3E0003B06933F6917CF57E325D9FD5A06D07F17 +:10B3F000D2EE3792A05C2735625C3A2A3FF6F84BD2 +:10B40000940EB22E9C142D7762DF678A89CADF50B2 +:10B410008C5BB0F3F50EE33AB8976C2D950728379F +:10B42000A5337F692D970BC84D63F1D58082F7A2B4 +:10B43000F1B8EC6A1383AFC1EC79A414FCAF23B26A +:10B44000261ECBEE1B72B47A12219E163E224B189A +:10B45000BFE1F1D9D53C3EBB7A7B490A8CEB4FFF6B +:10B46000EFB5AF441CAEC1AA27F6C4483F31DF0692 +:10B470007E9F86968EE2FD4B7F93FB8DBB7ECDDF5C +:10B480000F64B73DCEE7D5707194CA6E69A0F20023 +:10B4900070365C1C7359BB6513E7FF06B037FAEDD5 +:10B4A0006FC7E7F74BBEC3C0EF5556935F063ED755 +:10B4B0007BB2D83D6B2C4FAA8EF3539DD03701B58C +:10B4C000BE11F72589FB36E978FF06F225C63B66F3 +:10B4D00060FBBD8B8913F5D9628D5D21EE575A6AE9 +:10B4E0009983F2B2B4CD10C91FC07F7B8C60EFDCB2 +:10B4F000D6A17DAECDBF657242BFFF5EF4F7C57CBD +:10B5000056C5561EF240B3C21EDCB76B201DA80FF5 +:10B510001A76527D9A00A53908FB28A45B3DBFDB53 +:10B52000A3F38229BC77902EA34B023F590D4F3DC8 +:10B53000E9C1F156755D1E4EE11FC03914E64FABEF +:10B54000EF037C29DD8974FB7C42CF5341FA1D391E +:10B550007E9A09D6EB73DD9FBE8D798FA9CC9EA113 +:10B560002BD386EBE97FD675CB0AC477EABAF7E12D +:10B57000BA30109D7ACFE79330CE5FEC2768F9E6BA +:10B580008574BECF9AE909011E0D43BBF05EB0F091 +:10B59000BDEC1CBC5DA6160D853F35443D335DE416 +:10B5A0007E1BE2F698207E3A3586DDD3F3BE526AE2 +:10B5B0008273FEC9569D17F4FE5A658915EE3B4904 +:10B5C000E3F774244B3A2FE8ED455416E1BEB07012 +:10B5D000ADFE499073D7F7E38239940EAF18D97D49 +:10B5E0009FF6381FDEEB10B6CAF8FD92DA2FC79B24 +:10B5F000283CE9972C05907728E09E5A161E0FF1FB +:10B600008DFB15DF11803BEB78E8A4040914160FBD +:10B61000EEBF3ECDE5F8E943BA8ACE7EE69D9AC1FB +:10B62000E67D8D43EF857D90D141761FE340EDC4EB +:10B63000F9E781E46E6769E816904B88CBF6F7BDB1 +:10B64000F80CD66E136C2842BCDF165A0E78DCF963 +:10B650003DCA23747EE75E4EE95C1335BF5F707DA3 +:10B6600071EE06B6BE897B218BF48D92754C44DF5A +:10B67000AC50BCCFC3FCE17E568CAB70FD027ADAD5 +:10B6800089F6B2DA9F12F0AEE5FB47C28F1AECFEE4 +:10B69000CB868B924A2F6DE27C1BD12F7A7C5F2E5A +:10B6A0005BD0CEFA3420619EE8A784E5437CDA21A2 +:10B6B000615ED7A74799FD061115A908F403D33792 +:10B6C000CB9F1CBF0EC463898FE53F2FDEB212F300 +:10B6D0008FA07E1FE5AFC5A9EC5CD592B56ABF43CC +:10B6E0008C771BF12606C1AE58AF96C73AC2F64F0B +:10B6F000611F19FCAC4F8F327B71F9E3EA71EAB636 +:10B70000CC3C05DFABD3E43325737DA7B5AB6764D1 +:10B71000F03CAF22527435E7A15611CFAC0CD8C71C +:10B72000E779CA9F6EC9495912D56F6596A43A2F19 +:10B730007B86AE5FC3E8DA7AB659C1727186672E2E +:10B74000F43F7F84CDBB31C3579BE1803A9B17D137 +:10B7500087D9BD99354CCFC640F091FE67CCCDA6B8 +:10B7600000E4C9FE08EED5A2F88D8961FA5BACFB56 +:10B77000B27C8F9C00F3FD63612ACAF9BFCFA8C0D9 +:10B78000FDD6124F3EC85F7B9505EF4DD8AC63F7F1 +:10B79000E79962D87D3E81A7AFDD0B2C3DACEBD1A4 +:10B7A000D20C50EFA120497042BCA805F35EDAA686 +:10B7B00010BC1F4D7CA738E4DD0EF064CFB1E03D36 +:10B7C000277679732AC453ECA38DFC5E06B60E353A +:10B7D000701AFCBC3B07EF67BDB06B2496D710C650 +:10B7E0001F22AF1FBE49A2F6DFCE36D37AD4B9C925 +:10B7F0006BBAA4A001F6E9BB5A6A81BEF56B7AA6C2 +:10B80000C3BD30E15F11CCBFB1BF9256EA4C88C0D6 +:10B8100057BFFD491B9E4FE07AEF66F01761EF8638 +:10B82000DB5BBDE710B8BF53C3F9B77617F3736E90 +:10B830008E63F85D42DCD9D06F818924E828CE6E12 +:10B840002EEB9A80F703AF3458C1DEBBEAFC13BE7F +:10B85000DE69DB9D011F0DF4E50B31188F6A782A34 +:10B860001EE37977EAC2F8FDA732B85D3182EF13A3 +:10B870000C231EC8576AD83D12F7C562E05EA602C7 +:10B88000D46F26A0EB01D0C374DEB7BF64C67BE1E2 +:10B890007AEF3D51881FE4F8CEDD29E8D7DA733C12 +:10B8A000F9778F81FB3742D928FF549F49D4567BC3 +:10B8B000E5E7EFCED2C37D1AE9541FD3FA998C5332 +:10B8C000AC3E34B41C6E3EB7657EC3EAD7844E42AC +:10B8D0003D3333F646C88F6928082D87D0F8C4CC8D +:10B8E0005456874433CA58D33287DC08E74DCE58C4 +:10B8F000D9BA73CEC0E2C6E75E18D5E98FA2BB3BCA +:10B9000093EF7B9959BB332E769F33C90DA9EEBFB8 +:10B91000B5678A73516C7D14F314FDE8F8B8AFABCA +:10B920001DFF7006EB773BBFAF666A1C6933B3FB44 +:10B93000A9FD90AFB57FD748C4CBB319EC1C10C09C +:10B94000097901621CED3978F1DD3BC09EB460FBE2 +:10B950009AE8F5E53D4E37FA9DB5F89D319E7C900D +:10B960009386EACC7CA01BA5979ED34BCFEECFDD70 +:10B970008CED615C2BE47B95B175656A52D2669063 +:10B980007B0137B58F2CB86E73F8FFC8D7A5DB5B8A +:10B9900039BE28CC901FD7F022DB3705FAC27A33A4 +:10B9A0003193AD83EECC487B1C2F93E277ECD5CF5F +:10B9B000EF2BFEDDEF7A7E5174F1009FECEF1E85D8 +:10B9C0007411F013F2A86A9C332D9A7EC504F336E5 +:10B9D0001B6C39D8EF47FC3E72718F2EF473E53142 +:10B9E000FB03F85FDC43463C43707FAB9E6B87DE16 +:10B9F000FBC3BAD8F90A328CCE0FF05A5D59C8E7AA +:10BA0000A7F0F929D1F71FF7CADDB170F69CF8BE8F +:10BA10007CDA8BF7DEF1C614F0F154F2DBDF78400C +:10BA2000F781E8312AF33BE637012775BFA2E9D059 +:10BA30008B670D7C029F20B75C0EF1BE5AAD1C6671 +:10BA4000F6D25123BFAE6FF93DBE7FB7EA1F281D66 +:10BA5000E1FC8453CDCFAB76BA744BC644FAB56FD4 +:10BA6000D5C45976DEE507FFFFCE5D55985F6A586D +:10BA700043F05EEEF0CB32EAE3F3F4DD3A3A8FF3D3 +:10BA8000DB5C0198C7035CCF3C600D274818E79149 +:10BA900075600787A97F0DEB79D84C9FC3B907FA6A +:10BAA000FCC9A8799FF78613AC51F42A7C454E80D7 +:10BAB000FDB25080DAB9FDD81DE29EA81061EFA951 +:10BAC0005D96DD0479E81D390590F376C144B29B9B +:10BAD000EC501F5EE0478E65F1C9F33CDFEA8FC48E +:10BAE000FBF6F5B01EFB3DFA34CAD74B395F9FE732 +:10BAF000795875AFB526A0FFB68BDA69097DEDAE32 +:10BB0000E5962DE8DFAD00BB4CEA6B6FDDC1E39736 +:10BB1000759B34CF77513B0CF486264FDCC7E3C1CD +:10BB20005A3BAC2993C735F3493E5B2799FD7037E3 +:10BB30008F3B88FCFBF33CFF9ECE1BE971619BC4ED +:10BB4000F2ED89F34DF0AB1A0EC978DF15F13BD059 +:10BB5000DE8BC43FC346B0A7B47685B63CFBDCFBA6 +:10BB600045FF449BD43FFF5EDECF6979F6F9774706 +:10BB7000BC04F5DFBC93FD1EE9DBBE6CF7D7787F14 +:10BB8000DBF9DD3104ECE4F3BB5FCDFE27A8BF1881 +:10BB9000E306B8CFAF89C1FD64FFEE783C57783E2D +:10BBA0008B9FFB7DF9ABBC10C697D622BD9ECC34D3 +:10BBB000229D2FECFAAF0F806F2EEC8A71823D74BC +:10BBC000E7EE38D4E577BE68C6FB59CFBFFC5551C8 +:10BBD000B47DFAF7CEA781DF4F783E9ED4607C4ECD +:10BBE0001FCE96D0AE989C0472B76AE71E23F87FEA +:10BBF00065AFFC352F04ED76EC3192B1B89E3C0177 +:10BC000079B15D9BCA1F8673A3E740C7D175BEF2A9 +:10BC10005FD6DD08E746B578A1E39EFB2798C72BE2 +:10BC200071481F8A973AF0D706C2C7AB992CFFF725 +:10BC30007F1A3ECE1B7AF0FEC1F3DBA5F1E007458B +:10BC4000F022B17BBB77C5074C12CE9F3DDFFD557F +:10BC50001ED8BB9F75B5E07D0E83CDFBE4FFB9799F +:10BC60004BC12B99B721EB7FE6BC05FF3F94E964FC +:10BC7000FB6C1A39E82BFFBFF93ED67F1DEF4678E3 +:10BC8000AF50FE8767FDCF94FF6F4DF71D12C6E5DD +:10BC900006A3FBB4FFB5747F8DD33D5E81FB16CF49 +:10BCA000BFFCD76C1235FFC1E6BDF47FE9BCB571AE +:10BCB000CFC75E263F033BC330CB688073C4B3BCA1 +:10BCC00012FEDEC25CD8E92880F325E163B3216F60 +:10BCD000A446C673B5F479D089769CB767197DFE02 +:10BCE00046E163A9B01E1824778F07F6156A0D98F0 +:10BCF000DF3A57492D05FB216917F99913F7715858 +:10BD0000FEEBDC796905D0FE30E9298D03B95AC80C +:10BD1000CFD7A4E6EAA3EF41A57F730E15E1F9158D +:10BD2000FC6BCF62FEDCDC09AD06B0676E6CF536ED +:10BD3000427CEDA6ECF0306B549CECE12C17CE7BF2 +:10BD4000AEDE6B8073D8738160FDEC0BCE85416DE8 +:10BD500000A7D7C07E2F88EF1379AEF956FB44E3D6 +:10BD60008CE113F7D0F9288759BCD4C0ED24111FFA +:10BD70009905F59CC838494DFB7CD3A8BFF2028FCA +:10BD80003391659BCB9300FF74407437EAF7942797 +:10BD90001546D5577FA87E7F9F345D555FEB52D700 +:10BDA000D7974C8FEE3FD07C6615BA0C3EDAA0FADE +:10BDB000714995BF2A4A01DF632DA416F7D5ED1E00 +:10BDC00027E4FD127B21CEEF852C9DCADF8CE08914 +:10BDD000E1A596E70B279592C5D1FB25FBB2989F6D +:10BDE000B32F8BFB11761E5F777B9CFDDDDF25C6B5 +:10BDF0007B77C53803C457299F60DC6ECE2E6273F3 +:10BE000046ED1F1FE5E3BE9BE82B67792CCCFF7F37 +:10BE10007B428AEA7756B4E51BB58BB386D2F6A58A +:10BE2000DE237A909759CB6E32801E78BBEA431D91 +:10BE30008498C60D65F02FF8C6995515358F109F5B +:10BE4000FFD17F56FB71A23466B3F9FD41C7F66D91 +:10BE5000FF90E0CBAA55F53761FFB7E359FF717A40 +:10BE6000A297A3E26AB36002902751C8E8B3E01B2F +:10BE70004F567554FF737CBEC7F87D34809FC55103 +:10BE8000EF87F2EF0B7C69E11B9ACDFAB74C66E7BE +:10BE900061DF9E45F07705926A66E0F95111477EB1 +:10BEA000BB82C591215E0C7EC80A2EA76FF3F3C238 +:10BEB000D5FCBCF09B065F16E06945CD0A8C1B9350 +:10BEC0004DCC1F31D1FFC17E487E50AFF24FAA3515 +:10BED00071DE241E274ED23CD7FA1BF1D996C8F941 +:10BEE0005EAA4F93387DA8BFECC47B32397F8606AB +:10BEF000E14FEDB9E081F8434995897E7CC41F1973 +:10BF000057C2F657C61998DC1F3DC4FCB7A3155F8E +:10BF1000D8C04F157489C87BAB6F58D47EE863379F +:10BF2000C4B07BD1B89F748CFB4947BD6F594AC6DA +:10BF300044E8F686F70B1B9E9311F2412E2F1FE368 +:10BF40008CCCFF5F591983E7AE56BADDEFAF04BD65 +:10BF50005019A3007CA5858BB3601D2B9727FDCBC3 +:10BF6000BD00F7B6183C7BF5D94FDFCA843889BBD2 +:10BF7000F007D3F1DE0849C1F3DAA0B89EA3F89F19 +:10BF80005DB9F8308C3B6B9B24411EB0D06FE5D976 +:10BF90004C2FCBDBEE3A9846C74BAAB4BA67900851 +:10BFA0003F7DF65309F969F936C64F827FEEE07A94 +:10BFB000BDAC32BC10DA3DB62DC609FC75C736C61D +:10BFC000372B67ED383C8CC03E80BB2489F6AFCA66 +:10BFD00076B2B801F115C1FEC2ACCA960D85386DB6 +:10BFE000764E5B8C47F9EF61F85D84CF7E65C07B50 +:10BFF0007DC4782D9357E0F3B77F25E379FEE5C440 +:10C000003F1DAE845D0E7C0EE7AB49C74138673CEF +:10C010008B8F7FB462BC15D66DED7EA3D85F584E72 +:10C02000FF817BEC930A35FB1C5B34FEF720E7AC09 +:10C030006F053E16F9402323E30B7A6BE9ACCD077D +:10C040001274E82E962B809FC6D93CBE683DFB300B +:10C05000E7235176EFFACF3FAC8475B7909D8FF60A +:10C0600010EB34D80AAEAD2B2984E5ACD494BF1FB5 +:10C07000EA3737D23AC55353B6819F73F9B01C7E65 +:10C0800052E5D654E920948B9DAEE9F0D3190F0107 +:10C090005DE8B84B734B0E4238AAD25D85F7FB962C +:10C0A000CBEBE3F240AEE87780BFA85EF3EBFA5942 +:10C0B000874BA891147DAEBDCC64569D872F57AC9D +:10C0C000AAFA8CD43455FB1B9C2ED5FB99B9A354EA +:10C0D000EF2BDDF9AAF787B2D97DDDCF4C38557942 +:10C0E0000F9DE733D7CAF04B6CE430E0C51EC10B9F +:10C0F00085F77180F7F0B5EF64DE46E7F35836FB5D +:10C100001D17A2677198DB7BF9AD67218CF3D866A8 +:10C1100019F9EDF6CAE5C86F751366A09D22F4E71C +:10C12000639B981C3C46D8FD56737ECAF6E1564C7C +:10C13000327C1893D7976FAA79BCA665328513FA1B +:10C140005338018FCB3769DA554E47FE9DA3D197FF +:10C15000D55C8F6AF5AB96FF9E99F0553AC87D572E +:10C16000B63A2FED1989E975FFEFD9EF8B0CA417BB +:10C170007BF5A186EF0E6533BD2BCA72794C22E8A0 +:10C180009D7146753B51BE4BED623D45FC7BCD2616 +:10C190002CDF6F56B0FC8FE6542C3F6C7662F97141 +:10C1A000732E9687B2995D92D444E91BB51F9A54B9 +:10C1B000E9355E4E7EB4FAF2704887727378CA032E +:10C1C000092E4B24AFE258363BDF75BAF8638B3447 +:10C1D00026C2BFDDA18F2C607FD492009EC7BD997F +:10C1E00004F17CEE2212C2FAAD70A4558EE45D2CEF +:10C1F000251EDCB74A54BC581E864FA753B978A2F7 +:10C20000E111D84FC98375D98279A66DD1F2913ADF +:10C2100084E1EDB66CCF47D9A0D76D3D2766837E0C +:10C220009D6220605F127E8F5412DBAB236F4C98AF +:10C23000685ED2CFFA3E327BC9D9EC09D1F8F11948 +:10C24000A1DD33E25E227E0F963E7918C6697BE956 +:10C25000CAF1BB2ACB7301BE2FF245A8DD9F7AD964 +:10C26000F5C7E6C67558CC87AE2812C4719521EA89 +:10C27000F5709CD16784F8EB727723EE5B976ECAFA +:10C280003787FAE18B91D93EFD100DFC4CBF307E13 +:10C290001A88BE822FAE96AF04FF6CC8F258E1BB7D +:10C2A0007A7E3F95DE56930A7823CA1CE48FD42108 +:10C2B000D265ED8ABCE28FD78F8705AA5287F7B285 +:10C2C000E675BBCDA0478E727FEB70E5477B87D1CB +:10C2D000F787BBD9BD318F554C34C33AFF98C59F02 +:10C2E0000D78392DB9CDFF08FAE8495941FF88B0DA +:10C2F00075724565F250A0D34D9327A01E3955E9BC +:10C300002A00BD3D97C3F32961F4F47B25BC0FEBF4 +:10C31000F40D3FCA8671DE98905200DF21F2A5C766 +:10C3200057D3F77FDE24DBA0DFDB852BE6DE43CBB4 +:10C33000535B64767EBCC215003FB65C3E61417FB4 +:10C3400097EBBBF9302EEDFF06713A805E7336C96C +:10C35000A8B7E683BEA37A66DE42B55E12EBFF297C +:10C36000B02725F8FD1CF5FBA44D6CDDFDB6F6DF0E +:10C37000F42197BFDFE5530B8BB75753FFD347F13A +:10C380005D56E1329C043FA44942BE107AABBA929A +:10C39000F9A5D5158BC79BE8FC12031325D087653B +:10C3A00095CE72F04F67554845D176E1AC8ABBD047 +:10C3B0008F9EB5E92EFCDDAC5559DEF9431CC02734 +:10C3C0005EEF75A0DFE9F780F9C705DEF903CC6FF2 +:10C3D000C5A63F1D1B46C71F5BA953603D7D2C3082 +:10C3E000321EE87C74CB1776F42B7AE5A0C308F9EB +:10C3F0008AA55BFE940E72A0D513FE5282BF03760F +:10C40000562241F85DA6B325C9A530FED92CA39EBE +:10C410009523583DADD8C4EAD32BA0A476DE3EB810 +:10C42000F7EE4225BB1FECC69005EF2FBC31A4F3FD +:10C4300003FDEA43BA0F63203F38ACBEC766EA4546 +:10C44000F53D362544BD0EBFC9F371CB4CEAF5F876 +:10C45000EC6B0BD1EF2F57D4EBF28D71099DD07E91 +:10C4600046EA28CDFA9DAFAADF6462798C3373AFB8 +:10C4700055F5EF36925CC85B0D4BB1F8FB54558413 +:10C48000E51FDC444BF81DA059EE1255FB7AEAD0AB +:10C49000039EA01DE4ADDC547C83EA3BF5D08F3EC7 +:10C4A000AF3279D5FD9AFE13F9E3FAA64B68EFE7B0 +:10C4B00007BB54EFC71FEA568DE3EE51CAC01D2ECD +:10C4C00038EEDE07A5C88F5E0B7970B42C0C79CBE3 +:10C4D000C0EC2D3ADDB80FCA81F2A67F2013FC5DB7 +:10C4E000ECAF74BE3ACC0BD505BA16D3791E9314B3 +:10C4F0000794F74BBE27411F15873BCA206DE7FA0B +:10C500004B8156285BE13C7B22D0B932EE0D88434B +:10C51000754968CFD75BF879765B575EF4EFBCF46A +:10C520009E674FF5A42EA6ED1FB00FC3788CB72CD5 +:10C53000DE03FBCDAB9E1F89E7E47E38B4E439F817 +:10C540009EC8832376F5B9871F0EF5BC04F94EB15A +:10C55000654C6F901906D437B13A6F02BFA702E35A +:10C560008BC61906CC33BECEC9F453ECEF8813F258 +:10C570007A63937CF258E8375322105712F05557DC +:10C58000B2F3F06F0CE17101BE3E55398E6D03FFC1 +:10C59000FD3A103A3A4E51A5F300FC8E3551F40A9B +:10C5A000D86B49C7BDCA580AE74E7BE11EE0939D90 +:10C5B000C77B264B4E68EFC4F6291525F794C0F7C4 +:10C5C0001E97F17786762AD3E2A03D09B8D93E15A9 +:10C5D000CF6F4D5AE87C07EC2D72C840F8CFE8E0E9 +:10C5E0003C946B627F05F3483AEE5989F3CDB53838 +:10C5F000E1776E287C2EF8DDA88F9BE1EEBB81D71A +:10C60000A38FD73B1CA057AA4A1407FCDE4AD5A328 +:10C6100072EFEFCCC3120E3FBBCCEA5FBD398DBECB +:10C62000DFDA5B274192CBEFD761BF434FCCB9FC38 +:10C63000778A59FB9BA659303E21DEFB49319ED3B8 +:10C64000E6EF2FE27B45339E183F3CE4AB37DB2C13 +:10C650008027661713BDE2C0FCC84BDFE0EFC78937 +:10C66000BCE158D959047CB944E7CC83727CA2EF71 +:10C670002BE00F45E71E01F5D547C67F0079CA5468 +:10C68000DF9CDC08FA669A01F5F09DB9EC1EEC9D82 +:10C6900046E7F3C7613FD6118BF93E86876EEFEA16 +:10C6A000A6E3DEA9FC27CA19E55F3CD77FA147674F +:10C6B000033BF9FF01D519CFF7008000000000000F +:10C6C0001F8B080000000000000BCD3A0B70545582 +:10C6D00096E7F57BFD4B3A49E79F10C0D7F960908C +:10C6E000009DAF01823C1270C8C8A713508303D2CB +:10C6F000A2086A0221CC8E99D19A6E6C54A4B42AF5 +:10C70000AEEE2EB383550DB5B26CADB31B1DD48CFC +:10C7100022DBA0AB7145B711DCC1598A6AD919C5B2 +:10C72000359026B8223596EC39E7BE47F7EB9009ED +:10C730005AB3559B54389CFBCEBDF7DC73CFFFBD7D +:10C74000B532004C00FAD1C00170DA92C0954A802F +:10C75000B584CF1678393EDF91C0230EC4EFD6E9F9 +:10C76000BDAAD5B7AD0AFF7F8FC30205005B1C4C85 +:10C77000033B72A04F9E0970A172F66D9087F0493D +:10C780002B8004B09F1E221E2C4A0B3F8FF80751AE +:10C790008B26D5219E97B6BB82F11147A90BA03FEE +:10C7A000801BDB9136E8B5404362DD0B4D3F78AF2F +:10C7B0008CD68B5A2CA0221F311BA8B500D50A4459 +:10C7C000EC35000D4D6BE552E4E704CDBF1EE0A94A +:10C7D000526DB25A4F3317B83FC57349DACFE4CB25 +:10C7E000E90097E967DE6808A000D1D1CF6594D150 +:10C7F000263A760EC2C6AD553003E102E9133BC1BD +:10C80000DE2F41A92572BFD7970160B387C38FE0A0 +:10C8100039E075A7F7799AECD226B74D4FACFBA259 +:10C820000705960FF073B7F6A207F9E9ECBD004AC9 +:10C830006E62FED05658E343BEFBACB0A60D61E776 +:10C84000B7F29A36944327C076A986E0615B4F55CC +:10C85000129FFDE741D1653213975E285765C5F0F9 +:10C86000B9F2ACFC893D73F4B914FF62DEAF4D72CE +:10C87000DF0A6E80BFF53CE0536621EE74DF2A21AB +:10C88000BEDE73BB4F29467C92FB560BE28F84F7CA +:10C890000BBCD8FD57162FC01ECFFB02F7B83F22A6 +:10C8A000FC97EAFB627EB5A117EFF834E4B72D439D +:10C8B000E04BD4777CC12AE2CBA5D17D8F2C728648 +:10C8C000ED9EB1E5BEBCF775E66FCCE7B2C4F28170 +:10C8D0000EFC43399F6D2DDEBD03D78372ADDA8226 +:10C8E0007857FBC49A1DA83F6B54FC07E55B807723 +:10C8F000D6887FFF6A0370A0FCCEFE217AAFA50C1C +:10C90000D7D9FFC4792993F63BC8FB75823A1D70CD +:10C91000FCB972FF3AD2930FA5D829C07BEF5A72A7 +:10C920006C0A908EBBE3E5743FD62280DE1C3ACFC2 +:10C93000E2A2BB70BF913CC56B47FD5B097E2BD16A +:10C94000AF70FDDE26237D3B78ADB41EE429F1985F +:10C95000A147A5001B9B9CCCF74690C29244FADDF0 +:10C960000F0A9AC44B810186DAC0A113C4D74A507A +:10C970004ED33C0B1ACB653CDF8A0EEBE9987ECF99 +:10C9800097F1AF7DB119079DDED057F8E6B2447636 +:10C99000F863A241FE34872B22CFA0A7D6A1647EE4 +:10C9A00076BA7DD797E279BF8CB614FAAB12E71846 +:10C9B000B5BFABDC4A7248E56339446C443F1E3F67 +:10C9C000E732A277DA501E56FD7EBB723C15340F5B +:10C9D000E5FD8C9037CA1F716B5EB4C0EF22F9BEC3 +:10C9E000A0923F18A974801DE59476C38919FEAA08 +:10C9F000D1FA902A3F09CF44F655A8C46C5E5C6713 +:10CA0000E309D0C2BC5EA73C9DD61BF000B91363FE +:10CA1000FEAF484F903E6B40623AD4172FE94B5E11 +:10CA200019442CA8AF79AFBEFB424822BA0CA633FA +:10CA3000F4735E3AF43B73127A84FAE525FD32F41E +:10CA4000695E0BF282F3E7E5BEF94208E577AF2AAB +:10CA5000F8DA9F26FC5EFC6567788F67349F6FEA83 +:10CA60007A9BCAEFE16BE4F3F09F894FC32F1972F1 +:10CA700032FC12E87E7B6587670FD99981B72F4614 +:10CA8000DC93E073B4FEFC9D7A35FD194F6F6E5058 +:10CA9000DDBC9EE11F0DBE0C3F87716451BF89AFA5 +:10CAA000ECDD66BEB2D93F64F5FE86FDB49CA1F014 +:10CAB000F88ACAA2DD328D4747D047039C574B59AD +:10CAC000EE59FD9700AA88FE00D38F6787465C4821 +:10CAD0003D871127469F47E5F3A4C68FB9E8D0D814 +:10CAE0008F534C42FEE77DED07A532B1DE7CB8EFF7 +:10CAF0008A9F27BCC5B1D9842F74FFD444FF83A279 +:10CB0000ADA6E7ADEA13A6E7B7543E6DC297787FAE +:10CB100061A25FD6B8DBF4BCCDB1CF8437C5A22DFE +:10CB2000A84EF0416011281500379D89BF4978242F +:10CB3000E066FC70A088E15B0195EDF2ED4025C355 +:10CB4000C18097C7FF2DD0C8F0484063180DF81872 +:10CB5000A6DAF3D25FDFAE002EDC18ED6BA190F207 +:10CB6000FE64FF4D14379759C2A10CBC8F1B4FF6C2 +:10CB7000CBE417C0EF35E51D8F1E9AF5EF5BD07E35 +:10CB8000728FC8E054C78E27595FCBA0D526E18BA2 +:10CB9000E340F12B0B5D663FC2A50A6CB3E3FDB623 +:10CBA000B9944821DED7023D7E53F801B4A30E07A5 +:10CBB000BA2CD4A78E0EC91B021E0F420EB3E0730F +:10CBC000203FB7EAAA88E3113FD2DB1508D27AB238 +:10CBD00026C34D449797AB505EB3828890CF5B716C +:10CBE000CFEB90EE0E573FC78F95838F74DD85E3B3 +:10CBF000B02D584FFA7F257F09FECE7279DAB5E75E +:10CC00002F0B2846A2DC1E95BC518DF2AE6C85F32D +:10CC100013C38E8C79C574BEFA04BE4CCF179686AA +:10CC2000827226CA337E14BC7BD4841DA27CB6D308 +:10CC3000790C3B68732B91EB33299E3EDD42F49DCA +:10CC4000C755968B610F9DBD5FF1BC54FD477F1F9B +:10CC500022FA9113E0257F77E35038F60CEED318D3 +:10CC6000EF6BC1BB8039DF844304AB23FD263DADB0 +:10CC70001D1C30E9A5C1F7814007EBCFC1809F6142 +:10CC800024B041D7CB6EC6DF0AF432FE7620C870DE +:10CC900030B05DD7CB3E7E7E24B093F10F02615D54 +:10CCA0003FF7F1F80DAA90E3FD1EDD2F39E6ABBE8C +:10CCB000E9246E01137AA10621492F3A8B843F1E85 +:10CCC0004F3FC6D20780B04A7EFA0E8C87E4CF7EF3 +:10CCD0008419E21C841DEB83D3B74ADF5F2FBE7B30 +:10CCE000BCF77BAF25DE1B7E4E6E9139FFB2CB9B2E +:10CCF000BDDDAEEFBE9FCD2EF2A8F1F713F762E4D3 +:10CD000067D6ECFFD81BC1B16DAEE377523E364A11 +:10CD10000E2979D9EB54F3E47F77FEB0F2B1D2BD9E +:10CD20008FC7DFFA52ED9F3CF949F14CBF4FDB341E +:10CD3000719F0BE5A1BDBF24FDDF9FCEF9646AFEA4 +:10CD400066E46706FF86FDA5FACB4DEE0B6C4F43FC +:10CD50009285E375EAB93759C0FF128ED7D8C12141 +:10CD6000A19CA696361FF270BED114D5687FB7E29B +:10CD70004DCE8F46CDEF3DCFEB8FF91CD727BFB9F6 +:10CD8000E98D7AF75A57625C2A15790DCAC5FDA953 +:10CD90002321976BD5D3B9F10E93DDFFBF8B8FDACB +:10CDA0003F989E2FC5B042F25DE66FE57BBA832ABD +:10CDB0003A99EC36C2FABC1A628CAF41152078174A +:10CDC000A80CEF06CD46CFD781E627D835C97F918D +:10CDD000EEC72AC55CF4FCEC2B7F2CA7FC58CE3E9A +:10CDE0007EEE1918EDE7AED5AF19FECCF06F8FD9F6 +:10CDF0006003E551DBB26D41D24B6B7E0EE747C657 +:10CE00007D384B45DC1BCB7E86ABF1C290DFE197D2 +:10CE1000D3B9BE19CE48E3FA463BF0CE0989F2A059 +:10CE200088393E1BF548ED2A2FC769C0385D417A25 +:10CE30009F529F2C5444DD068AB77275521D1DB255 +:10CE400020BF28877D085F44BE3357C5143549DFAE +:10CE5000CA757EE7AF5C005C0FAFD238CFCB74638E +:10CE60009E4DF5A803EA9CB4EE3717AA68DDA57AB3 +:10CE70001EB0C30A11BAB7C2C66A89F2C09D6EADB0 +:10CE800082EAA3E0E34DD99FA25F05AC7D2F5F3717 +:10CE90001AAF91258DCE1D6F15797DAA3ED7EBFC7B +:10CEA00074EAF651930B8E22DADF0F9C8F0EB74E89 +:10CEB000E57C7A71698EEE1FE253DA29AE60B82004 +:10CEC000DC88D3434E91872F1F7062404EACAF95E4 +:10CED000668BBCDFF1A5296FDFD87BC964AF1BABC4 +:10CEE000C4F96B426AED66845B287660FDFE6C894E +:10CEF000AF85CE79DF7B2FD84A54DA6FD74F7E4784 +:10CF0000FE60D025FCD1917C3EEBB0041DFD497242 +:10CF10005EEE382FFA17B0DBA41FC796FC96EBB570 +:10CF2000E5FBD38374CF065F469D67F8AFAE839F62 +:10CF30009F8252F257E74F3D44F27BD9AEE71797F5 +:10CF4000F839D6871DC4D74B8316966F57AB7D0F24 +:10CF5000E92528EAF4F68C845C863F37F395CA9F6E +:10CF6000B19FC1D7902499FCE33AFD7E0E515CC776 +:10CF7000FDCE667A57D3BD9C7DA5C4129412E3C73B +:10CF8000B2A333B25DFF7771FE0ED0F3BEFED07454 +:10CF900037F51DEEC1BC8FF5E0FBC577437F40033D +:10CFA000D55DC0AD37DE0FF0504A01D51D020F65CB +:10CFB00040D886F492EBED4B64AF7375C8C510D2C0 +:10CFC00035E9FC3F267503F1E7803E863B24AF4AF6 +:10CFD000709EE45380F70BB39C6E86EE89341E9AE4 +:10CFE0001F0BD1A68ADE073C93D79EBF95B82C8035 +:10CFF000C70071C516B41690FDB767799F5713F235 +:10D000005AAEEFB701FF9A502E4A36A80AD26FC027 +:10D010007CD38A725DB17EE5535544EF6E6239B6BA +:10D02000EBE7A07924C7DB8E742FA1787DFBA1BF2D +:10D03000FC40C3F1CF73FA1A889FFF8EEE99F12B53 +:10D04000A4B9FFD8814C7ADE1989DE8CA2878D10B5 +:10D0500067BF6BC87F154419DE0971867E70F3F3D4 +:10D06000B5E065780FF818DE0BDD0C3F2EDED585B8 +:10D0700016002B0B9FB47E0909393C90BDAD81F69B +:10D080007137EFAC20BD0B364325E541179D993331 +:10D09000A8C8E87508F8605AE61E826DD9AEA09C53 +:10D0A00045CF2787A9EEF9B9E41F28CDE779EC57DA +:10D0B00083A732C254E71FB776CF24790F67DB40CE +:10D0C00042FAE17CE147826781FBA9C3569DFEBC21 +:10D0D000CA785D4B0DC777B8A872DE3F87F2134759 +:10D0E00022BFA99B66E1F97059D0CF8D2BA67CA6F3 +:10D0F0008E9A8B34FF8FF8DC43F157F993F9CE4FBA +:10D10000CB72F8FCB36800FF5B976BE94EAED3437C +:10D110004505A26FA7E376D5CD757B5CB7C3E14C1F +:10D120000BEB0BFEAC703410BFE27EE71C784FD7E0 +:10D130004B2CA00AE8DEF471257288C637EA710527 +:10D14000BD31E7814DA4A7A49703E6B80245D314E7 +:10D150009A3F5B67C1A8CB245C6B550EE97554A65A +:10D160007BBD09E20C3570737C6B062FC305E06351 +:10D17000887ACE7011F431FC21F4335C0C51867046 +:10D1800083D75B83FB5B1C1199E236C0C3EE4F3142 +:10D190004442EB7A0BF59FEB6E87EE7ED7F872C9AF +:10D1A000291375D9F87241C36EB816B9F8057FA96D +:10D1B000729958C9F664C8C5908713C24524C7B987 +:10D1C000109309522B99E6CF47B324BC0534C617F8 +:10D1D0008E2B8F4808F07C8D31BFC2757BAA3C5ADC +:10D1E000849E187AB35076792314878EE756535E5F +:10D1F000BA40970390EAE2FDF5B8C5391BA0F26F7B +:10D200009A90AE7ED08A9935C06B010DFE0B6D6091 +:10D2100004BA65EE3BC700FA70DFD9F784430EA469 +:10D220002BDE0E6E3A9BBDC8026A921E3BD534506F +:10D2300093F2BAF4CA1C133E7B50E6BA35C33BC125 +:10D24000342FABB1D444F71AF4B39CF6939DD37D3D +:10D2500005B5685543C2DF666B3798E6CF8DDEBBF8 +:10D2600098EC3D77518D691CBE1476D688BF743F0B +:10D27000CE18FA5F84B387CCF61772A2FFC07DEC9C +:10D28000F0E479CA0B9CC793EC91F4DB75F3E7B437 +:10D29000BE1D92E6A13C7A4FCE0FBF954477A62CD7 +:10D2A000238FEF63224C243B36EE21D5EFA37F2B57 +:10D2B000A2B85497DE7C814A9ABBCAF6B5D17B816D +:10D2C000BADAE62D65887795ED6FA3F70275739A44 +:10D2D0007F5D8AF8A6B257C5F399CDB5562FC056D3 +:10D2E00069A06D013E0F1D15FE0F54F17EA747AFDB +:10D2F00077424785FF1B71FDC4EBA6FB9FE8F292C6 +:10D30000DE3C6EC3B3213F0EBB807299A82F5F0B2A +:10D31000E0BCEB13FCDAED226F44FA20E579F96703 +:10D32000822BA9FF30A35C65FF327951E4B055250B +:10D330001B536BA9AF5259E25F57969F581FF9E1F3 +:10D34000B857A2F363CC9BE5B269C417E4796AE9E4 +:10D35000FC8F94F8EEA779C3190EF6DB06DD3E3D8F +:10D360003F9DA5F4C95B5C340EACB763C19D655AA3 +:10D370004FD955C60D7B9550C8AB286FB8DFEB5021 +:10D3800038CE36B9AFE49F781FB3EED16472F90D91 +:10D390001DDD6F12DC24C7EF25FDDB5AE60F107F81 +:10D3A0005DBE7393AB294FFF838D9B5B78C1C2EE4B +:10D3B00040F8EB370EBEFB5089407D90E457361D98 +:10D3C000BCF4D57FA2FD6C1A7179897C38539C73AB +:10D3D000CE815F6C613980CBE4470D3F347BC01E4A +:10D3E000213D9C7360EA3AA29B7BEC6419E9EDBC99 +:10D3F00093B110B5B186DFF86D89B07FE37DDC4570 +:10D40000E9FBE435E81F382EF5BC21F17BA51E09A8 +:10D41000D85FF47C247B91023ED3E36BD7A095DFE9 +:10D4200087A12777153788BC82CEF79943E859271B +:10D430004433495E1B76DDBD98FBB66151CFABF836 +:10D440004B7677E30925A5EF8B7686745DFD297D04 +:10D45000DF5D2D9FD17A9B92E3E155ECEC45C3CE85 +:10D4600026C1243E8FBC2ACB7F95FCD58017035A5A +:10D47000F82DBCD82ED05EA5FBAC5740EBE7F76A81 +:10D480000FB37DF44CAAAAB18BBE37FBC5F54E7124 +:10D49000BE072689BABBE739195C2C275B98EC6874 +:10D4A00037BAD146D2A7C1A758CFD7EB6730ECE93E +:10D4B000BEED12BF4F855DB9AC6333F7DA59EF7734 +:10D4C000EFB56F27F9CCDC5BA8110C3D9A16A47858 +:10D4D00034D326EA9290333E81DFE3BE61B3509E9F +:10D4E000406903BDB79C591A2FA5BCE733DD7F8780 +:10D4F000F4FCC778AF6BF8F1909EF7F4644C29A464 +:10D500007AED0A9D7B82F0F7867FD0EB903AE2932A +:10D51000EA8FF804B18E539CE3D0D1DBD2A92E78E8 +:10D5200059F1A5BB5D143F4AB3E02AFD902BF55994 +:10D53000042FE14FF435EA8E3F19257DAEDBA908B3 +:10D54000B924F44F8F4F32F74D60545C2A37C5A58C +:10D5500011A2607F0661AA2B8C7B35E24ABECF1CEC +:10D560008F0A3BCCF1A8D86F8E47251BCC7168522F +:10D57000B7390E5DD76B8E339EA039BE946D9F6D0B +:10D58000A2AFE86B36E1D7EFFCA1897E6AB8DD84F3 +:10D590004FDB7787897E7AFF5AD3F39903F77FA70A +:10D5A000B8581DE931D11B71B176F067578D8B41A9 +:10D5B000FC65FB0461F78D780FD4F71B2F3E36C650 +:10D5C000FA80ECEDFBC6C9A9E5E638F93F58F991B8 +:10D5D0007FB3935EC8943F8ABC33D57EC7D22FC336 +:10D5E0002F6F2DF3FF98E2C0A6F46FA6D07A5D8E60 +:10D5F00073936B112E1DB404493F96BA1C9F10FF04 +:10D60000A877950AE53590E625BF67C42B9F6E1F66 +:10D61000CB5C0AFBBBA5E9C27E96E1F06CB2F79445 +:10D620003AD0A84396354A29FD2CA7A99F355EDF3D +:10D63000BD3E1A31E1D5C741263F5FFF7B3594815E +:10D64000FBD49E147DFCD4BAB32EE60F915BBE7161 +:10D6500008C38A4AF5E7E0257A4F395787B3BFEE0A +:10D660007F93E6A5D649F0ECD3645C60731BE710AA +:10D670007E23B55E7D501675ED458B9FF357E37E97 +:10D680008C7C36345FD4AD46BDBA76827F5D39CAB4 +:10D690005FB688BA151D4BAE78EFD20F0487698C40 +:10D6A000835D63BB467D876CE0EF5F2C50DF4EDF10 +:10D6B0003960AEE98E3588B60EFD3C5CEEDF5C8EDF +:10D6C0007EE2B424EAC873B34A1EAB457E37EBF161 +:10D6D000BD70553FF8459FA9A73C7FF4FB9854982F +:10D6E000DAEFDD1F88304CAFF2727D91DA97FA8263 +:10D6F0009898C5EB06D9EFF44AA29FA3D7D9ABF50A +:10D700007B885940D48F3BAC5CDF19FD8955FA39D1 +:10D710004EE3A30D1817560FBCC3F7F240D190DEAD +:10D72000F7E9F6BA71DEDD135DFCDD0568B5DE767E +:10D7300053BFA244FE2E717DBCF33F50F4B9A9BF84 +:10D74000052F88F834F6FA41F6D34972E0F54FB761 +:10D750008A7876BAB5A4193293D73FC7FDB2D5DD22 +:10D76000474DFABEA6F763937EDF15FCC4F43C96E2 +:10D7700017B796E0F963AF14DFFC2394E7D997ED70 +:10D780000D741F78FFFF5C9ED4178BB54E5D00991A +:10D79000D772CE2F988F938128DFAF71CE5381132C +:10D7A0008CC7023186A9E734FA0B06B41D06F613BE +:10D7B0007129CD4B7DC9B1FA0E86FD2CAA28E575DD +:10D7C0001E94B55322CF177A71B1C7CA75E8C9F94B +:10D7D00005CD14F74F4EB229024E117871A343E0E4 +:10D7E000372F22386C756DA7BEC44949F4C13F9AE2 +:10D7F000F0D55E1B2EBD7C82FF28C963B839FE952B +:10D8000085F29EBCD864B2AB45B9FEE3342EA11BB1 +:10D810002CE6BE59700AE5D7672CC119F45D52D9C0 +:10D82000F34FB7533D71262D788EBE5B2AA978AA97 +:10D830009DEA893336618FE9155D6C7F1FE1A20A8D +:10D84000E51FAF49DCC7F88B1C7F8CECB9CF0A1100 +:10D85000FEEEE237D26E9203B86236D253A39F39FE +:10D860006C4548F6EC14F08B72F11DC350B9C89F9B +:10D870000CD8E588D9A89FB363D71E1FF98D5B64C8 +:10D8800095E9ACD0A7D1FD6F1CD8CCF69C5E01FA0F +:10D89000771C4F4EA17EFAC8623B909F46FE34FA39 +:10D8A0005E2378D0CE7696FA7D52CDBFD8235252E1 +:10D8B000BFF4DB720FAF9F5706FCFD54DE2D4EEE1A +:10D8C000FF402C3A99BEB1A2EFC47CD43F380E9AE7 +:10D8D000F81E6AEA1EBD7FA0D9106F7FA590FB09D4 +:10D8E000DF968BBCABEBDDD3A788FFE7CAFD968A3A +:10D8F000FCA47E2C443F7597317F5CB7D865D82651 +:10D90000E58CAFA7467FD5C08F2D797C0AE97D0DC8 +:10D910007DA775957CB6BC42F071D20A29DF7119DA +:10D920007C1BDF7155B13F995771F5EFB8AA2B8475 +:10D93000DC6BB0E6A33EBA3D0D7D7ACDD8723FBB1D +:10D940002EFAD7551EFA0E49AD20BD36CE8D725037 +:10D950002A92FAE6861C8C750C3E717F3FBD67A843 +:10D9600079EF88B510D7BDEF1F3DD4D6B9722E839D +:10D97000CF674BB4691549F68EFAC5F7126C75F28C +:10D980007D771DFCF8D44338EFBEBF9F5E4B7A62B3 +:10D99000CC4BE517F99C44FC7D6889D8F4EFD21A8A +:10D9A00069DD97063FE4EFA30C7EBFEFFD0C4F8AC5 +:10D9B000F2FBA6E1DD9726AB38BF4B7F4FD3657CEA +:10D9C00027B6DFDC1742F906A92E4E8D2F40A94459 +:10D9D00001F0374A1447ECC6FC898A697E6FBA6F3A +:10D9E00019F1FF8AEE17903ECCF68FF908C5992BF6 +:10D9F0007D693D2ED5EBAE473A21FAD0F50429BE1C +:10DA00005765715CAA33F643BE481F1E9382DC97AC +:10DA1000B812D7F5BEB47CF716EEDF35421F438B44 +:10DA200043C4AB86892EAFCC9BEAFDA727DEE6FA7E +:10DA3000F37F01B3C10BF8102B00000000000000C1 +:10DA40001F8B080000000000000BFB51CFC0F0034B +:10DA500009BFE541E5674AA2F28F70A0F25DB951B6 +:10DA6000F996ACA8FC4634F30861356ED2D47F64D5 +:10DA70006460F80DC4AC4C0C0CFC4CF8D56E612401 +:10DA80006C5E9B2584D606D2B140DC0EC46F0D18A7 +:10DA900018EE1B313038183230FC3520CD7D84F043 +:10DAA000273DEA9A378A49C32936A87C3F5706861C +:10DAB0000637068663EE107E3492FC5DA098BF2B7D +:10DAC000841D670F9403F2836CB09B1B0F948F012E +:10DAD000CABF839A0300878BB61268030000000058 +:10DAE00000000000000000001F8B08000000000084 +:10DAF000000BED7D0B7854E599F0772E73C96432F5 +:10DB000099DC20C0309C0909040938847095EA101A +:10DB100082064419905A445A274005B948B46E8D7C +:10DB20002DDD9CDC2060C068711B29C5E122052F1A +:10DB3000352A50DAB5FB0F17956AD70D8A5511BBF8 +:10DB4000212262D7BA48DB95DFA72EFBBEEFF79DF7 +:10DB5000E49C9399807DFAECBFFFFFFCE9633FBE34 +:10DB6000F3DDDFFBFB7E97717983CC7F1D6397F03C +:10DB70000FD2750E7650BA9A31B73B7CAC8A411EF3 +:10DB8000FE6393185B8BE900F82F2EAB6C3C636946 +:10DB90008CFF2901F9B4CB0745B2C6581E7CC8CF0B +:10DBA000A6FAAAB79AC5A8462B63E330D59CD10C38 +:10DBB00073BE9A61DE1164B1F612C61A8CFEF12FA3 +:10DBC0009731973FBC7383C4D820E6A4FA6AAE5B52 +:10DBD00057601CD5AFB358098E171B44FDCC629615 +:10DBE000F93016E1FDF62BCEC47ACCCBE763ACCF8F +:10DBF00048B7D5B226D561CA3BD87C9C072C90C6C5 +:10DC0000737C8FC5734643F62FB7687347C17C2476 +:10DC100096B49FDD83A19DB7F7BC773F767DFE620A +:10DC2000E86FAC98BF7D9E467B58C7585A9F58975F +:10DC300031FFDD8F0DE3F30FE4125CECE3BADC4A55 +:10DC4000933AB667BEDDF81B3C5EE3FD4047FD003E +:10DC50001D62BCABB4D67A0950942ED6D1965B79AE +:10DC60001BE2F7D1DC7CFA5EB047D798CCD8CEF473 +:10DC7000D874737FF93126637FEB1C7C9DD3959517 +:10DC8000695D90FF87F905998B20BF9C498477FBDC +:10DC9000FCB6D4C29A00BEEB6BDD947EFEFE705AD9 +:10DCA0008FBD9E9136D5FA1BCDF8685AA656C6A1EF +:10DCB000FEC0BB763D762780C031582B557021CBF6 +:10DCC0002415D79586EB80792F14E3031C1772BABD +:10DCD00012F8CF35E009F330C321521DF1C3F7FC30 +:10DCE00079B2EE02FC8E60D509A98CB1FE7B583862 +:10DCF000A1D1FABF8DFD1504980C9863A185AD875D +:10DD00001D5ACFFA198BAD2F82F9FCE8D745A51B18 +:10DD10004C787C128187F45FC2F1C5D4703ECEC3CB +:10DD2000BE4EC674AAF708C0A7A408F3ED5214E8C3 +:10DD30006B2BE64DEB2F62B1EFE27A06557A88EE57 +:10DD400007AD8C713C48069DC28A809E1ABBE95E75 +:10DD5000DBBB8BE8AFDF980D30DF7A633E5BA55409 +:10DD600074579F8CEE0654563317B41FB4241CC14D +:10DD7000F46129B60EEBE54AD12C3614E7916031F7 +:10DD80008043B3310F9D7560FF0324D6F307F3C8BA +:10DD9000096B3B368480CE103FD07E4074ED3D321F +:10DDA000AC233FAAEA242F3AAB663180BFF7D48C6C +:10DDB0008F19FF7E1AF13168494702BB08845B2541 +:10DDC000847FCED70B0F217DD649B136EC47A94EC3 +:10DDD000B0E934884E70FB91A39A213E5D531291B5 +:10DDE00028CC6BCB5DE3599589CEF60A382801160D +:10DDF000897B7BE8A14DE1F4F3E8BCFAB4A55EAC05 +:10DE0000E7A1795EC5CA227E2FD24538C1802E5C3B +:10DE100048178CE8620F966B31ED30B60B055A0F40 +:10DE2000E3BC800FFA23FC601E03B0DD8FEE72CEE0 +:10DE3000A771747602E9344736D003FF033865CB07 +:10DE40007CDCD5CC41E3E508B8785918260972770F +:10DE50009856A702FCFA2D61610DEAE5D8E0A414FA +:10DE6000870F6179FF952C1C817225AC4F0D71F8DD +:10DE7000BC88FD65CFEF483850EC696109FB6B52F7 +:10DE8000ABFFF50750BFE918D4D44CF4C9803E4726 +:10DE9000F5C0C9990BFC572C6884F5D06908F10AC4 +:10DEA000F5FD2CFA0AF6BF23AF467799E8C8E1E4FE +:10DEB000F29B35CEA37AAE80B665190C11CCCD1F7E +:10DEC000A3E078AA5F4638EC705BE90F2914FB7B6E +:10DED000BC36CE3E7020BF56131D0E591325FA0ACC +:10DEE000D69C9730EF0A744A9837CA1D358A762631 +:10DEF00007C7CB2539D6D43C379361B95B9311FE64 +:10DF000005ADA17A7719D160F8091A31CAE6015D29 +:10DF10000F013A48C0FA9E82F45208BFC7697C5785 +:10DF20008D8725DC3DEB76D43879FF7AE45021CC1F +:10DF3000FB2681BE9B100F007F56E638D369C0A92F +:10DF400080A8A9270FF0FEC303F07F30BE3E468AAB +:10DF50003F21F52E9F85781C4DEAE04CA7312ECC51 +:10DF60004795B81C433E4478CD126547F6BF3D6CDB +:10DF70002C2CF5F5B0C210EEF5FB5F69190BFDFF17 +:10DF8000CB2485F894F084F5398DB17F09B148052B +:10DF9000968F93E23AF47BD34485F86AD694759FC2 +:10DFA0002998E2FC4DEBFDF4E01F5584EBEA29D6FD +:10DFB000EF7E9C3BC9D30A9233C67C56952AD4FF88 +:10DFC000EB65521C59FBE8FB1F6DBA06E6F79B296F +:10DFD0005218E7F77AF8032FE2C318B71B5E1AF35B +:10DFE00023BCECE31874E66A0C393B893FBF43EB72 +:10DFF000F93B51A78669D7E743FF28709E10EBF5E0 +:10E00000C37CAAC47AAB54E69E082A5E6EE6ED177E +:10E01000A99A13E9A0AAD945F8B68FC3C2E5448FDF +:10E0200055A2FF439D3B1F1D0FFD9F6A5668FEA72B +:10E030001A39FE4ED5C0FA007E5D2C913101CAF529 +:10E04000134A18C7EF6AFE202346F3D482282FBF55 +:10E050002EF8E35F417E2786337612F45D023B5251 +:10E06000B5E05C283FE9887F13599BB15D9113208F +:10E07000B24FA2201EC8D89D752FE83AC0BD4BE212 +:10E08000F9D2BA17223AF5DBB2F606D3FA628D124C +:10E09000975B51467A6FBD90B3315D2239EB0E84A8 +:10E0A000772A30CF29282D490F46A748828EC8DE0F +:10E0B0002A848AE37BE0994AFF9EC6F9BB7AF2592B +:10E0C00052EC7AEC27D6F8998395E078594EA493D0 +:10E0D000A5929FC3518D0FC6FEBBBAF5517CF01CB3 +:10E0E000F378697CFE4BA5E4F6817DBC3B1AB3AEA8 +:10E0F000CF47BE5D2985492DBAE383BF65924F772F +:10E100004A3EA247BD8AEB617D8044E31AE5B78BA6 +:10E1100071964A42EFFDF5EB5E9A7CDD063F746630 +:10E12000A0DC3C557D4B26A78318F187414FBF3EAD +:10E13000FD8A83E8785E1EC9A7D81AC5225F6E5F84 +:10E14000966EC92F6CE4FDA49A1FAB71F5D42F30E5 +:10E15000D131CB257AC8E645F02922A17E66C2EEF0 +:10E16000CB11F4D3CF5F2D3168973FB1F510D94F64 +:10E1700042EE0D8CB44F5521F768C6B077E3C45713 +:10E180004C53611D01FC17E92C55177C2A5D72A1C7 +:10E190003E6691B4D1580EDF0DBE02BA1BB052B527 +:10E1A000F0734ECC9ACFA8B4E615B33C0CF5ACC7CF +:10E1B000586F86B04F5944D790BE5AA4C43BC83F4D +:10E1C0002DEED722B380CF029D8CF9804EB2A36A88 +:10E1D0003C8E75CBB83E1B8CEB86EF399A339E8014 +:10E1E0007EC1AD611D48976A871BF1E8AA0C2754D0 +:10E1F000D3FA19760AEBCD1173DB386B6E16CA2D84 +:10E20000A33F98579FF69B1A76EA284FD57073075D +:10E210004F55F2835C508EA408F6D5B3C487AD5237 +:10E2200052FFC4182725DEBBF1CC8A5558D7FDCC48 +:10E230001346BF22D3197E27064D6B4A9CE17AC054 +:10E240009B634A671DEAD9A32CF6228E97796DCD80 +:10E2500010A427E9DA9AE19DB06EDF48568D7C3232 +:10E26000FF9A85EC2CDABDB951FD2C947F2429BC92 +:10E27000FFF34182832266E748DCC634B49FBDE1E8 +:10E280004804F52A1B437695C31DA6F41DE42F8090 +:10E290005FA7E0B38F246EDFC1B2124877463F60BC +:10E2A0002FBD8EF32988F8CB55989FE235FC88EA7C +:10E2B00077AA509E66B8499E4E574A32BB4CF4FF2F +:10E2C000B6E8AFDB9F117E448FDFE36B44FDFC605B +:10E2D000C6C17C61DF7F82E33AC5B80F8EBAD39D99 +:10E2E000CCCFB85F8AFDBB64A233677E98EC0C5636 +:10E2F0001861E6795FC3621F623D772416417A5147 +:10E30000BCDC1E7907E5DE381CF7403EE65510C838 +:10E31000C86FBE6B16D278EA14C33FAD36FCD37714 +:10E3200008FFF3AD7E9F3B17C6037ECC605BFD67A5 +:10E33000D389D50A2FC17AF472C6ED86DF65C41B76 +:10E3400000049FA7F946B34CC0B39BA7F77B7C3B67 +:10E3500030FD3C2D18473BE473B9B5521ADAE37728 +:10E36000A739741DF5958B4522C8F77F457FCD7F72 +:10E37000E3FE8E2189A5EAEF72EDEDE331567D359E +:10E38000CADDF585AD5184BBAA427FF467B30B8526 +:10E39000BDE944BE46FE70479B43D08F7242616820 +:10E3A000FF2AAD63C8AEEFB60F353E8E3397EDDA78 +:10E3B00060D885267E7017CA163B420D78AC76C5AC +:10E3C0007CD033267BA5DB7E64B104EA6715680543 +:10E3D000FD44481369683F02A5627B5CD22592D751 +:10E3E000DF67663DB5BEB09425D3072AB6833AC829 +:10E3F0001E5C6E5ADBA59623B6F1E659E77BC5EDA8 +:10E40000BCAA76D6A48752B753D959B3BD8BBA04E8 +:10E41000E5C35FA0DCB06B68DD7A00F1D925F4EFCD +:10E420009F557D21C2EBCF1A485018F458967F2D86 +:10E43000DA037A93A4219EAA5AE6644A505E754292 +:10E44000C995430239903F169A41788BCA0E61975D +:10E4500074AA285FAB2686AE47F955F9F7D02FE2AC +:10E46000BBC0253D01F5A64EAC5B82ED6ED66E734A +:10E47000B820FFCAD30D34EE72ED0615633CB7CB5E +:10E48000DC2FFBC393CF8D6730BF63CF64B004E94B +:10E4900091B813F5C8F27D4A04E3122B9ECD207D7E +:10E4A000B3FCF9553B67413FD2CF33683E95CF2F40 +:10E4B000DDEDA2F935D07C961FB825F3119CE75B02 +:10E4C0000A7303AD1DABE3F6D22A5833FA29E743AA +:10E4D000AE9D3B423DF033E061E417B784D6A2FD28 +:10E4E000BB7C4F688C62C2D77295DD112D21FBF782 +:10E4F0008EB949E45D9DCCE5F42721D77C9CAFB46F +:10E50000E7D0B7689DEDDF70E03AA5C62CE787003D +:10E510009FEF8AF5423D5A8FBE578A1741F9277BF4 +:10E5200025BEBEF651DBD34238FE76E7228ADFD520 +:10E53000517D98FF1DA80F16EF09AD1D08F5163780 +:10E540008742C8EAD39E7DC6C7EDF88857027CDFB4 +:10E550002D786CF51E2581FEC0DDFB56911F0579D7 +:10E56000F20F563CFBAB037A06B6572C7C7577FB53 +:10E57000839FA13C5DF1822B9C80FE7F0FF6771A72 +:10E58000F673D0D165B6277EDFF1840FF152F61B0A +:10E59000D5F21DC7BD984DE35439337BB703C83B53 +:10E5A00091FE56B7AFA77156EFBBE923F4CB5633B4 +:10E5B000E8C7649FFC1EFF017ABAE6545DE351D3BD +:10E5C000FCF6CA19B928BFD9043601E97CA512CDD9 +:10E5D00044BB83EDC9491A27FCBC566F3CEA20BAFC +:10E5E00027BA00BF6B9B0EE37FF2FCBF6DC3F51F24 +:10E5F000FBF28FDBBE8FF0FF559A1FE97DF5931F6D +:10E600006EFB1EE4FF70D02523DD2C7FF2E3DF617B +:10E61000F97FFC627836EAFB2332D7939F863EEF80 +:10E6200087FAFABE5F4DEF8F70B86FFFB4FEAC0F84 +:10E630007BF253A0AFB8CBCCAF71EA473B08FDF5F6 +:10E6400087EC8B22B5E1EFC83E25E105FAF9C33B23 +:10E65000AE38D2F76AF856530AE5D54B293E81F910 +:10E660003500EFBB9FE67E666F78EB83640AC225B8 +:10E670000661E8EAEE7DB7CCFE5A19A68EB086EBAD +:10E6800065E7D7A2DF666FD78DC71380C7AB7B97CF +:10E69000AF661CEEAB590B1FB7FA868F88BE6C783D +:10E6A000FC03FE63526F3C76D9F0F81F7B6FCB4CB6 +:10E6B00060E1BE9CA4F69981C755FBBFDEA7DDFED5 +:10E6C000A98D8F53C17999B0779F95231764E4C3BF +:10E6D000E79FDABD05E0FCE9BBAEF02C00CCA7CF8C +:10E6E000FC3908C6023BE738FF2DE4C7F3BF72F9D7 +:10E6F00077409BE5BF7ADB19017C7FBAFFB8531BDB +:10E7000045CBF14A20D73F65DD7F1D28E7EF16FE98 +:10E71000E2EA5D1909B44F0D7CDD1D9F53A9F9E8AC +:10E720003BD9AD77C7391FDC1D3F344F4A82BF91BB +:10E730004A0197E3F13C82CB2AAD83FC6C335EA5A2 +:10E740008988CFD3D723FDA5C2A7B17E3FAE7F82F4 +:10E7500009BFBBFAE6D34FB7BB5429B3379E3F1569 +:10E7600071D9D571E9ED647837E24C4C59D827BEA0 +:10E77000EC7451A458E9C2686FACFF72FC7DF97566 +:10E780007D35B8E522D3E7F5865FDD742EB75F0FE0 +:10E79000015FC2A7E30EED47DF413AF9B583ED8093 +:10E7A0002637177CA46AA37ACFF75F803EB5E13D98 +:10E7B000F9E8C4CF1A73A05D744A88C7ED6CFB0AF0 +:10E7C000D1290AD3CC7E9CFFC8B567C6A686A7E22E +:10E7D0007353FC8E45D4B3880FD00DD225B9073EB4 +:10E7E000E469F663628F08FF2294FF76775E65E83E +:10E7F0008F2EC57FC27CAA22654EB41B96B098D3DB +:10E8000001E932D64AF9E5AC9DD295AC8352574026 +:10E810007372BFA0C27F96EC9795CAA5F42BB75729 +:10E820008CF9BD2E690F5500FD38F219ED131C1936 +:10E83000C0E2C81FCE412F06900E5A007E0CE0B7F2 +:10E84000B6D68F462D6BAECDA7B47B1F2B3284EC92 +:10E85000D07BFD7CFE6CCF934F3ED94F983E008716 +:10E86000263015DA4DF4F816E203DA1FAF75537A45 +:10E870006B4BBB03F95B5AF91CC5138E48EDD3F300 +:10E88000D06F5A2595F2B8A67F7A2EE487B6F84B5A +:10E8900031DEFF9AC4F96068E5187991A9DFDBB130 +:10E8A0001FC8DFBE72CC40D4373BBF542C7113233A +:10E8B000DDA7F0F849DD4627D9ADDBEA18C9F96DC7 +:10E8C000935C83C92F060B0BD73359D8D547A7BA0A +:10E8D00006DF07F5DE5DA684310EF9EEB94732504A +:10E8E000FF1C7AE01F6EC278DAE413FC7B2AB8EFD3 +:10E8F00010F1B25D225EB61BE088F93D00474C9FE7 +:10E90000ACD5287DBAB698CA7F561BA67C7BED4451 +:10E91000CA3F5F1BA1FCBEDA4ACA1FA88D52FE6027 +:10E92000ED7C4A5FAC5D46DF7D1BDC31B47FFEA928 +:10E93000B69ABE4FD6C332EACB446D0D957F5FC900 +:10E94000263A1FDA129663F05D6B666EF24B74BE68 +:10E950005FB0C3D1795BD404CFEF2BDCEFFD4791DF +:10E960001E91C2F58497DBC04E85F50EAD18539EFF +:10E97000077C34675E484372EFC14BC8515E72E555 +:10E98000F8A817FDDF3A4F61C526BE9B5B61CDBF7E +:10E990003EB53380F2E275740C063236BAE9401D9A +:10E9A000C615779F672C13E795EFA038F48EB4D87F +:10E9B000861130AF6D031C653BA0DD8E31FE816694 +:10E9C000BB515639FEB76771FB74C2111E078D7FAC +:10E9D0003C6C473DE990FFBC7409F01FC47F23FFE6 +:10E9E00089FAACD8EF31C749E20F88FD0F749EA1B8 +:10E9F000FD2F1FF0C7D13E8F4B32C1015226935DD0 +:10EA00002FEF407B9C699207E5FB7628CBC4F9D5B4 +:10EA1000CB3B306EFD4B01B7B8DF2F874DF30CB207 +:10EA2000EEB89442F25D639A733C7E67E4571BE54F +:10EA3000307CE292D07DB8DF43E5B0A460238BA0A8 +:10EA40001F66EA87F44471DC9487FF46EE31C5B94E +:10EA5000E0BF51EDD6FCD507ADF931096B7EEC3145 +:10EA60006B7E5C87353FE11D6B7EB32AE2963A3BB5 +:10EA700081FB0E4384DC635AA784F01D22F6818259 +:10EA80003ADF6F0FAE516D7174EB3E03C32DA5F1EC +:10EA9000BC0BFCBF499DD6FA9AD887D06CFB10AC52 +:10EAA0009ACB2DC33FDCA832F297374EE1FB09F039 +:10EAB0005791968BFB08921FE5CECB6D7F2AB90F3D +:10EAC000D2601BD8EF6032FDF4272F0750FE5EFFA7 +:10EAD000801C45BEBB3ED49986F8766B6111A2E9D5 +:10EAE00086B37C69426AFC454094E07C367EC9F975 +:10EAF0002F7B864AFED5055DDB81F16E034E230434 +:10EB00008EF7AADC1EBE698AC302D759F90E0B5EC6 +:10EB1000BF76DE0AF7EB2E5AF3A6F909387EB5FC6C +:10EB20000881A76D20D7501FA4395B491EA6FD564A +:10EB300009EB50A7A8267218B70782ECF454DCB78B +:10EB40003CB9E6BC447ED739C6F6C3BA26D778802E +:10EB5000184DF3D9C5F1E3068824DB6F2ADC7C6508 +:10EB600078A5A646B0D804EF8266F0F3418F0797E8 +:10EB70004DFB58C5FD9A2556FC033E5897993ECC4F +:10EB80007918FFE4B29D1B717D0B968D198FE018EB +:10EB90007251A1FEECFD2C48EC75A0BFBB6059552D +:10EBA0000EEEDD1BFC0CDF5F72E1F735E1EB314669 +:10EBB00016BC28256F5FD32935249193432E3A93B1 +:10EBC000D64FA577821755AA6FE4B7811EEA725C0B +:10EBD0005E8EFF0C8DA271BDE5F9E85F7549A8F75F +:10EBE0007E56035A1DBE5F5D175730DF7ECE2F6302 +:10EBF0001A6EEAA4F2310F30CABFA04339CAC7BFA8 +:10EC000000F4000F462863ECC7BC1EC82719F58323 +:10EC1000BFC62FA3DE0FE9FCBBBF86B10CD4ABBAD5 +:10EC20004C765EF09CDFC34C72FA970FB0783D745F +:10EC30001604B36A4A29CACFEC99C548572FC9EDC3 +:10EC4000B89E5F82DCF560BE0EE42EB62F642AD635 +:10EC5000238C1AF266A8452ECA283F87E832C5FDE4 +:10EC6000D91ACE276ED65C8776DCE5E4DF84233BB9 +:10EC700007617CC22E077F897AA0E4F2F2F082223B +:10EC80008B383DE7678F5BE2F6630AF9389559E503 +:10EC9000F97F97BC9451CFE1BEBB43CB92483EC9AC +:10ECA0000CE5645C9FCBFD0511F7223C2BBDE9719F +:10ECB0009BB083BAE9B991DB1DBDE8DC21E2ECEC45 +:10ECC0003A66A69B60A3F6D014616F691AC2457BB1 +:10ECD00018F76743C7143ACF126AECA844FA282AF7 +:10ECE00093199A78301F6A1F15765C1A4A65944FFB +:10ECF0006B1997EF3AF34EEDD72D82583C92938DD6 +:10ED000076E8901A6B1CB4D8D80F8F737FCB0DFFA9 +:10ED100043F95474CE1A8709827F5E1CC2F95AFDEA +:10ED2000B2A038CF10B4FB6B025EDDFA1AF7EDDD4E +:10ED3000647D5C427AFC3F2DDFBBF58EA01343CE91 +:10ED40001B72BFA8263A7B3CAD5B22BE0CEA8CF658 +:10ED5000A986B0F38750CE4D6EE5E749FEAF93F339 +:10ED60006BC05F29492DDFED7AC024DF2D723FA5EE +:10ED70007CB7E901BBBCFF5BC9F92AC1AFECE22556 +:10ED8000B267271B74768E515C97FEE81C957F3B1B +:10ED9000EEB75D3CFD51BC01E3F8D9FDC82F3E60E4 +:10EDA000D86965E21C1AB3CE63801C3BA026395794 +:10EDB00075C09013330AFB3C97981196AD74619C13 +:10EDC00053C1739526FCA769032DF5F472CEF7FAAB +:10EDD000AB8E30FAA08707B07DE8C71C16FACAB020 +:10EDE000C767E78776E0BA1C1747320DE0B3D0114A +:10EDF0001272053C723CEF2271BA76E446E763FD7D +:10EE0000FB3B250DE5C62C607484D3FD8ED80C0722 +:10EE1000ACFF9FD3FF7E3EDF27EEA4735887250EFD +:10EE2000373D8FC5C9AE07B311E9CF25F8A49C853E +:10EE3000DDB282FB775EDA276353F87E2DF3480458 +:10EE40006716503F319FAB2917786001C6CFD14478 +:10EE500098E6EFC7F723B03F17081C0FE82FC97DCE +:10EE6000E81D8C57B954E6F611DD2FF49F1D89F586 +:10EE70003AD92548172BB19883AF4FC5788243E024 +:10EE8000CB911BA37D960F586C09966F9AFCFB776C +:10EE9000148CB7EE4FD3148A6F76DE3C54FB9FBBC5 +:10EEA0002E23CE00FC1D41FCE64FE67EAE41473FDF +:10EEB0007088736F4E9E76D39DB0B7090E49F67178 +:10EEC0008CB88611CFD8A876B8799CCF6AB73B9812 +:10EED000D54E37DA6FFC323A9FEC75431FB6644B60 +:10EEE000A85776B6CCCDC47379471DB2653FA8400C +:10EEF000F05F4A7DD82CCEED097E6DC2FA437BCA05 +:10EF00009F10EB0CE65E19FF1AF5FBE0DF271C49AA +:10EF1000F877A30A7A16FDA013E21C9DD0C3063D24 +:10EF20000573FDE5688F851AB93D3F1CCF404ABD8A +:10EF3000F5A6A17F0B84FE1DC262E59249EF1A7A05 +:10EF4000656773E9AB68BF0D794B09E3BE8AA15FC2 +:10EF5000404F74713DC1F5EDB0ADAA2DAE1865C836 +:10EF60008F4398E93BC6B184BE75A4D0B70E810724 +:10EF7000C757D4B7ACD8545E60A1932BD2A760AF6B +:10EF80003C54215D413B3DF29659EF3E23F4EE1097 +:10EF9000A10747B1D3F5E900AF8216168E43F96891 +:10EFA000D6519E0E3808B5F173BDC6B959038EA16E +:10EFB00066ABFEFD93615F5D460F0F6D33E5E9FFC4 +:10EFC000758A5B1A7430B2AC6B6A854CF0B7E86531 +:10EFD000474533C5D7839532ED7B396AACFDB89F81 +:10EFE000B6EAF72FB1C33CBEDE9CECAF3E2FFBF878 +:10EFF00006FFA7D29776BD63C813E62D2539933D4A +:10F00000E3BE5706033CE39BB552E4A3698B9A5DCC +:10F010004180F7CE56AD949F4374CB6497761F74AE +:10F02000E1FB8435F84F9477A7242E3FF574D2DFA7 +:10F03000463D63FCED2D73DDE81765E715CC0EB199 +:10F04000D4F34C15777D78C8EF2A719C10D8B9E8B5 +:10F050001FFD6848F030F2A1E3549A86F9A9BFBBBE +:10F060002D82F268E7697E4E71675EF5105662A1E7 +:10F07000334B3CC2908F76397739F91613F2F66F1D +:10F0800025DFA63ABF9A7C33EAF721DFA63AFFBF15 +:10F090007CFB1F28DFAC7EC53336BFE272F2CD2E7B +:10F0A000CFBEB2BC1072D42E37662B912627D0D398 +:10F0B00085CAFB6E4843BA10766B765DBD0BF3A92B +:10F0C000E4475C2FE853DED8F9D8D877990D76AAB3 +:10F0D0001B44CE6C60130D869A19E878F13C23BB73 +:10F0E000B30DE77153FA97B9C4546A359D5FB7DB26 +:10F0F0004F52FBDA28A7836AE2A3068D752AB4E98A +:10F1000092DC7EB2CF6B1DE37E0E0C4FF199A0B066 +:10F1100087E5F44F062C82EF4F3925CBBE9891B28C +:10F120001AB0F30CB815D0FC75F4C35CC27E645FF2 +:10F130004B237BAF44EDA473F915FE391559F0FD4F +:10F14000FA70A8D4386BC4289F457CFD88337600BC +:10F15000F974B6F7AA0AE20B715F2A95DFD03D0F6A +:10F16000637F2D0286B9492FB972437216EB59F7A6 +:10F17000CEF4E821EC3F1460E538453C87D7D90749 +:10F18000BE5E14F7787601DED422C68E00DE30DD56 +:10F1900001F217D303B51A95BF545B4CE93FD586EE +:10F1A000293D583B91CAF7D64628DD565B4969BCD4 +:10F1B000364AE5452CFA06E275CA856503915E1A62 +:10F1C0009C6C19DD0713F7B18CF1DF73F2FD062398 +:10F1D0003DE5D4080FEB1C1C6EFA7127B7A7D5C804 +:10F1E000203C778D29D287ABA555453ACDF11F97A5 +:10F1F00033219DEB3DAE6740DA3E4392D13FF205AD +:10F200003C093C5AEC1BF6D139D0586CDD0CE804B3 +:10F21000BE3F3B03E4E7D5C0679B1309ECCE376BD9 +:10F22000ED3D4857BEC06FBF4F69E2EC0F102FCEC7 +:10F23000467DC183D05F86DCB16005E2799B93CEC9 +:10F24000356EF9276784EA15FEF83B988E6291A91E +:10F2500059D0B5AF72EFDF113ED5586316F0F3A861 +:10F2600079FE30C6D1B7383B1B70BFA67D010BE3DA +:10F27000FE8CAFF21FEFA7F6FB120F60FDFE7F3989 +:10F280001F7B04EABD7053F3BB78E7E7A1195F4623 +:10F29000A7419A3FE1EC827B217DFE60E3769CC72B +:10F2A0006307E7A5A3DFD21A7EE461147F635CDC09 +:10F2B000BF730E38EA1E0AFD6FA996494FB4840F3A +:10F2C000533EB02A9BF2A3C7C851D443CF4FE1F7B6 +:10F2D000AE0CB83B5DFC9CA8DF25EEE185F9BD29AD +:10F2E000430EAB65FCDE8EE3457E1ED67190E7DDF6 +:10F2F000B9D54CD248DFF85D645759F591A17772C2 +:10F300005D7EE35C7536C627F7B7C97EA4FFFD6D49 +:10F3100073D3D11E8094A1DE718465D293A38F47ED +:10F320006F1C05F3DE5D7DEF843AEA279AFE0D98A7 +:10F33000478E8BDFDF09A02C19D747FBCFA03D8C70 +:10F34000B37B25B4D77ADA0FC2F6B0CE426C9FD722 +:10F3500047FBD01CDEBEFA3ECBF843C5F825971913 +:10F36000DFCE5723C5B8FB4F3C9F85F4FF53492B95 +:10F37000C2A3C937BB7EDCA04EC2FB43E1D3747F7E +:10F3800060EDB3D3E603DFCEC073CDE4CF577BF897 +:10F39000BE6C98ECA952217BE6CAD51B4AD0FF7CF3 +:10F3A0005561B84F9C5A4EC83DF104124026FD41AC +:10F3B000F96C5B7EA0AD7E81A57C81AB40ECEB5F00 +:10F3C00065AB576AC9CF7D715805D2F5DC44BF7271 +:10F3D000A4EB54F37B6330E79F3732F8D024D82670 +:10F3E0008AFB5418B4D19F9D5601EBCFF1F1FC1D5F +:10F3F000EBF637D479A99CEE23BD90C1E31E467F7E +:10F4000077B8B8DC5E21E858893BC95F570EAEA5D6 +:10F41000F3DB063D2AB3DCA7E93C7782D3B312586D +:10F420004B76BB5AB9BE0353B7B79BAE57105DB707 +:10F4300027A76B1022849771C20EAA619D5B483E7C +:10F44000EC93493EB0EA4CB297C7898635C28F3FEC +:10F45000B26FEE83586FDD2C9599EDEAD1A21FC3F0 +:10F460007E1EDD3D603EE5AF761BFD74BE8AE75D26 +:10F47000D95199F09FFD52C16C5267FA20EAE76AB0 +:10F48000712F23B3FB7C7C98E8749F749EDAE93774 +:10F49000F176867E36E82B2CC637F475A53B9BF0BB +:10F4A000FD42A25CC6FDC0ACE9D2182C9FD1527DB2 +:10F4B00018E75D5C534D681FB6479B5DC2F98CE44D +:10F4C000C50B5B172D780372A3B7F27B8033DA7814 +:10F4D0003A2A2E533A3AC0CFD1CF88F374B7F0DB33 +:10F4E0001C012E77466DE5FED34B82DE46178EB5A6 +:10F4F000D81D8E7D932DF98B9D43FBB44376D74663 +:10F500002DF74E7F2ACE6518F873D8FC9497041D0A +:10F5100019F832F068AF773C8FDF4B4B3D2E3F1F21 +:10F52000B68799E81B00B6A74D16F9DF29D35571A8 +:10F53000FF7A724FF9BAADD6F2178CF67AD7348CBF +:10F54000D3BFD0A652FEC5755DD3EA0A01BD02BE87 +:10F550008E360E3F35C008AE0E0147939C7EC9859E +:10F56000FCEBB6D2B3EC8E909F30CB1B6A40BD79DA +:10F570003F7CFB25B0F4B8531DE52031701F623A83 +:10F58000C6757F931151519FB58F92C278EE686610 +:10F5900073EB513CB758F7FEF01FAFC438E20127B8 +:10F5A000F95D1F087DF4B983CBE19AA372B81EBE42 +:10F5B0001F39FAC6DC1B818E1C8D059673238E7D48 +:10F5C000F322783F972558B808BE8FDAAF2A4B4D03 +:10F5D000F80C471C245747EDCFBD11AF3636E5EE8A +:10F5E0009AAC083E5C9081E3B9F87D8D8843B7AD55 +:10F5F000F703E2DF96E4FC3B5361BA82FCFA8ACC63 +:10F60000FDD64A7FFA1CD33987E78E819E84714BE1 +:10F610007FBD6BDF1B50AFD13F792C3F37D5BAF0A0 +:10F620005EF2CFA68C45BDFE4717BF97C5FC29FDEE +:10F63000B13F22DCEDFED885CA33746F2758924E55 +:10F64000722AB84FC829E15F151BF2C026C727757B +:10F650007A2C7162B9D11A370E9AE538C533AD727A +:10F660009C9D1AD9535E80F3C87D2D93FC072DEB2A +:10F670002A58D78D2FCADA06A2C688772ACC630EFD +:10F68000E3F37816CF39019E6E7C0C4C7FA087ED9A +:10F69000427E18FB23CF35CB54DE5428C5F1A8CACF +:10F6A000CBB9329DEB759DE0F7EEE6083FC755D329 +:10F6B000514E7AADC261F503D774D6A31E1DBDCFDE +:10F6C000E4DFC17F3384DF72A3CDEF9B81E7045178 +:10F6D0008ED8FC44FB39BF02B7F59CDFA6EF293476 +:10F6E0002FFDB70ADD0FF8E924A6E37B081800C058 +:10F6F000F9672D1A18A7B8AEB817F9BCC08371FE08 +:10F70000EF6A37F7BF8FBEFFB907EDE9F1C80440D4 +:10F7100067CF6EFD2EEDD7FEF458411AAEEFC8E468 +:10F72000931E714E9AE247867CAF9F7CF2D5BB60F8 +:10F730009C17B6CBE416ED39583A08CF4F3C52E14E +:10F740002666F3ED8CD2BEEAFEED465C9FD3D57AF9 +:10F750008107825D2EDE0BE4F181EBDC3CDE3A407A +:10F760008E5EE7CEEBE167DFD0AA8118C7D81DE235 +:10F77000F7E82ED74F654F3F95E67E0C3F67B61CE6 +:10F7800053F9E1B604C9CDA0A0F320C6C5916EED32 +:10F79000FE5107B703C0CFB9C53D0EF717AAC57E06 +:10F7A0005FA29C2E5F5CB99FA35BE214FE7B225696 +:10F7B0003F277607F6AFE56AF528575C01BF8C71E5 +:10F7C000FFE98A97F079A1869F734B35CECE5A7E9A +:10F7D000FFE871F47F8A90AEFD943F827E0FF92F8F +:10F7E000B115088F600BBFFF13ACE1F7F41B9CE170 +:10F7F000F968B73DDC5C598176DC3A87BF14F3DFEA +:10F8000069AE6C74437E887C7E00F3E3FDE5F20A0A +:10F81000CCFBF0920BB0661DE4F5008C2373F8EB83 +:10F82000BBC53E81CAB22B61BE2396E492BF304471 +:10F83000F6CF2C46F9B49CDB13BE5DE027F87ACFF7 +:10F84000FF71A13F7D0DA7EF417C37B9B9FFD424EB +:10F85000E8D4C82F56624D08273C76A99AF157C3C1 +:10F86000F74940AE0D44B99404DF4AF73E635FF8B0 +:10F87000DED58DEF1F1AF8CE0AF5E07BADDBB85769 +:10F880000AE38CBA72FC07193FA799CA9F775D1CDF +:10F89000898F7074E7015FDB095F016EDF75E34BF1 +:10F8A00006BFD38BFB25DC7EF42973AA91CF5E10B3 +:10F8B0007032D2A7DD224EECB5DEEB0339FE34F612 +:10F8C000EB56ABC5214F2EC77D0DD08FD7045711F6 +:10F8D0004F40B8623C61B152FE1CB6DBE736FCA07B +:10F8E0006ABA7768C437FE6A7807BAE1FDBFB0FF2D +:10F8F00059C897B84FC53AF93DD12B84AF714FAB7A +:10F90000E75E96D6E847F9F83D166E80754CF3CE63 +:10F91000B1DC5732EC037B7F4759ECB8DB1437A9D5 +:10F920007BFFFE3B90BEEFEF92283E3B9BC5547E93 +:10F93000E92A41F777CA73B43209FD1E7D75C56F98 +:10F94000C0EE2F47614876CEDD1568E794A7F37CBB +:10F95000CEFAD626BC375D8E67EAC92FD8C0CB87D2 +:10F96000F2F2FE580EF97F74467E47F4DD2337E24B +:10F97000E6B83DC88933585EE0CF2ACFD2707F9079 +:10F98000DF57BC52391117F26187888FD8CB81EECF +:10F99000CE63FF41DD2E2792C73BFEB7A03323FD88 +:10F9A00042E891EE78C74623DE111EC8E31DE181CF +:10F9B000667AE98EBB4F4913FB96223EDF6D3758BE +:10F9C000E5B43D2E6FD0558F9F10E1FEA68DCE0C75 +:10F9D000FFA0487C3BB2DE99B80EE0B563A29BE085 +:10F9E00035BB85D361FEA6652A9A1A869CEFF4F092 +:10F9F000F594087ADCDE5C3E13CFA7664FE7B77458 +:10FA0000DBDC91DCB4BC1E7CCD7747FAA559F1173D +:10FA1000B3E12F907605F80B7AD32CF0EFA64F8147 +:10FA2000B737459CEB6D11DF2A6291229C4783D347 +:10FA3000D85FE7EF00A4A28394E7C2057E0DF9F238 +:10FA4000A687E3B527E5FAF5A8A85730914DF667E4 +:10FA5000F6F41B49E3F58EA6B1A4E785AF4BE3F2BC +:10FA6000C9D71025B965ECF7879AB9FE36EA4D4D2E +:10FA700093849FAEC92467999FD20A31AFC2896C23 +:10FA80008A79DCD962DC0A0F2FB78F7BB331AE9055 +:10FA900097C6B845AD30AE895FA2DDE346C4B85124 +:10FAA00019F93CD4CCDFF9285CC3482F6B9BA31118 +:10FAB000CC1FCDBAA1F061B4E7F38A4BB95D1D61EB +:10FAC000F80E539598CF1667241FC70B029C304E33 +:10FAD000A7C0BC3175D430F2DF1D5E9DEE8998EC75 +:10FAE000FD2AA2A740727BDF80BB4F65152E93FCD9 +:10FAF0001A2AF062E48D751AF1DBD1FBFC742FEF4A +:10FB0000965912F1DB8848603B9E1FF842C065E7BA +:10FB10002EC6FD5B57C78215789EBA89DFDBDE52A1 +:10FB2000CFE31B5B9C9DCFBF86EBDCE024BF69D796 +:10FB30007EEF8CABA0BF7ED17B0EE541BE6DFFDAC0 +:10FB4000E75E83FC5378090FFADBBBEB919968877A +:10FB50006F5DC9E376467ED03DB9947FACE59119DF +:10FB6000C3503EEC92E91D85BDB6789E9EC6E379F2 +:10FB70001BD2B85FA2B670BFBB3B9E3785FBDD0EC4 +:10FB80005DC4F396F0F37326386E2038A688E76DCF +:10FB90004A137A9CB5A679601E7BBD3C9EB7D7FB05 +:10FBA00008D9BF7BBD221E1691693FEBB18ED69955 +:10FBB00057015C1AAA8D785CABE71BB81F95C6E3AA +:10FBC00069FF80038C33B7E7E72D8346FBF3ADB4C1 +:10FBD000FE8695463C90B77F54B4DF86EDF3FA1865 +:10FBE0005F7B98B7C7789E69FC9FA4F1B8DCEECB29 +:10FBF0008CBF77D7F3594B4DFAEF0931EE0801D797 +:10FC00009107ABCB51D439594758E86FB7F9BCFCD1 +:10FC1000E3CFB475BE0AE54F49D56FCC40BC0DE0CB +:10FC2000F69C61B719F57E2EE8E91541FF47B6CE7F +:10FC300065E83F38B60AFF780D237C0FFFC99F2483 +:10FC4000F37C862CE171C7E13FB9EFD51149FCE3A4 +:10FC500057D25C3CAEBB84CFD784E75708CF29FC92 +:10FC6000E30B954B64F8CC4635F238DAA8D6B5C428 +:10FC70006FA3F6E99C8F2F8E25BB6BC8C531F41896 +:10FC800045F0E23594775C9C44F9216D7CBC3DC223 +:10FC9000EE1ADDCCDB3B305E81FB507AA9C56FFDEF +:10FCA00022AD80BFCB56638FEF7C508FFB60179ED9 +:10FCB000F687CDE7CEECE9368CF398F4F2E3DDFB82 +:10FCC0003C3CCE53608BDF7C21E4953DCE63D41B5E +:10FCD00026B128B67F6AC3DC4CD6477CC9D8EF353D +:10FCE000FA1BF6031E67A73FDCB7CD8DD0FDE5619B +:10FCF0008FFDE9D7B8A7AAE65594211F7F91C6EFDB +:10FD0000E5DAE33146BF809F2F50DF19F832FC312E +:10FD1000438E831C6B34CBB1D31ED9F2CE86A12780 +:10FD20000C3936326E9563C3518E493D7A69FB7644 +:10FD300046782E76B55F7815E5D87ABB1CD34B5F35 +:10FD400045FA7A84CBB1D6AD8B24945FFD17D60DDE +:10FD5000580EE9C867D710FDE57F87EF3F347A7802 +:10FD60001CE8A75BEFA5EF3FAE16F26B09CFEF5D86 +:10FD700059C8F35B65925F763936C0C3E5D8628FA8 +:10FD8000D897D86ADB97B8BC1C5BECE9635FC2D03C +:10FD9000B3D0A4C2956DA60B1B1C0DBD27F0D93A9C +:10FDA0009FEB3D23DF3FD68FF4EF1D02FE172A4F56 +:10FDB000907D5212AB1B83F65085FFB46CB69F2F1B +:10FDC000CB37ED9C6F9E117CE3684FCE2F7778B2D6 +:10FDD00053F04BDFF1D0CBF18926E2C746F91D9EE7 +:10FDE000E47C62D42B117CF2B3FABEE3A1069F1827 +:10FDF000FD95A4E09392E7AC7C7287E7B27C7287B2 +:10FE000027099F80BF4BFC837E99C59F12FEEE524F +:10FE10008FE18FA5D263420F6CE5F235951EBBD3FF +:10FE2000C3F5C16A0C968E4BA2878CF629F4D8DDF7 +:10FE30001EAE87EEEFD5DE367E0A3DF65DD1BE16EC +:10FE4000DB27D383A2BD5D8FFDBD98F7E8A75B0FCD +:10FE5000E3FE694AFDF58BB6F86B50FE3389CF5F40 +:10FE6000AF93296E36E28925F42E8A5D8FB50A3E5E +:10FE7000880B3C1FD1418FE13C76CDA3F339861E20 +:10FE80001BF144723D36E209D5539C448FC53D2297 +:10FE9000CEDB5B8FC53D7DC4792F541E253D562C8E +:10FEA000F458B1D063C5F18E2BD363367E1C69E85C +:10FEB000B1147CF9A687EF5BF4E6CB170E239D5DAA +:10FEC00038F8B7D563867F914A8F75F3E715EA3125 +:10FED000A3BFC7DB79FCBB873F63BBADFCB9643C08 +:10FEE000F2E79B424EF7C19F6F7AF27AF36789CAB5 +:10FEF000E33A571AEFB09F3FB9DC796917EB9CFAE8 +:10FF0000309DB38868E926FF0650D96896F76FDA06 +:10FF1000ED7FC3BF12EB4E25EF03E986BC6F24795A +:10FF20003FAC5BDE3FF7D5E4BDCD4E4A651F05D241 +:10FF3000FF7BE47D20BD6F79DF6D175DA1BC37FAD3 +:10FF40007BBCCD4A4FA3F7013D41D1E36B163D8207 +:10FF500076F1E8FD4BE85E41205D492AEF818E0293 +:10FF60008847837E5CFB741D434420E789BED02F05 +:10FF70005593C879239EF0B83356949E541F548BE2 +:10FF80007D19BDEFF7B8F29DB48F159C184D20DD9B +:10FF90001F65B1D1D85FAFF7B88687F3F13E6B43E9 +:10FFA00096F16E9EC13FE19D484799D79E6B3F8277 +:10FFB000FB4979A56371BDD7A48BF7836DEF489991 +:10FFC000F8E79A74937EEBD97F6661735C7CED8071 +:10FFD0005B53BD8B352DDD64CF3872F9BB58F6F716 +:10FFE000A91437BFEFAF97B3E26A6F4F3C83158A0E +:10FFF00038A8886B1AEB710734BA67305BE07780FA +:020000021000EC +:100000001C9D4DF035E667BB1FBF5E8AF14797BC6C +:100010003A2F17F7E5E968184CA2B196BF57B051CF +:10002000DC8F077891FE52BC617ABFD751C2346C25 +:100030002E95B4935F945E529D8FF7ABD7A5B85FB2 +:10004000FDB09857DD6027CD77C3FB12DDABDB50E9 +:10005000343EDF7CDFDD2578EC68C67877A7899EA3 +:100060001B02A5745EB5C13BB7CF7725BCADFCBE06 +:10007000CC65EB352B96FB2AF65409B366DC875228 +:10008000D4307F97F6948BEC6F9778BF98754AE2DF +:10009000BD531EE733E62D79AB89EE8CF89E4BF00D +:1000A000E9B4D2896EFCDEE00ED3F9FE8640DFF2C1 +:1000B000DF85F77672E83CE03AA49743237693DE37 +:1000C000F668D5F45E9C2B0074330ADF8568E7EF91 +:1000D0005E013E700BE3727888A573F9EAF0CBAC51 +:1000E000D824B79CFED67C7CE7D659E864184FF13B +:1000F00095C9967BEFEB25BE6FE51472C8E8EF1645 +:10010000D15F5CA44813134B917E5F26FA0548D358 +:100110003940EA070A6F5022DBD3F37A7F37DEBF1C +:10012000115382BF7B2CEF6D19F7DF8CF8E290CD75 +:100130008CE867B8CEE573B15E7F8F4CFE083F2F29 +:100140003B74B3CA90BFA19CFC10A3FDF0B8D3725E +:100150007E36D46CCD0F15FB9845E2FD2FFA0EFDCF +:100160000C15FB9E436DDF8D774AB6E18724FB219A +:10017000F6FDCFC3E919B9B46EDB3B27A9E8C0D8B7 +:10018000E7F4B1C831E2E71ABE8FD03098915EB67D +:10019000D737E4E6C5D337F4A9874E821E6A349D6B +:1001A000C3784FE8A193811D198B4ACCFDD5115E10 +:1001B000DFAB7DE7DA338E1E3DE43BFCAE2394419A +:1001C000E94BFD806EBEB932340649FD9BD5871CD4 +:1001D000E6F73016AE7CF7DA33A6F52FC8BFB5B117 +:1001E00091E842FD02F78F317C89EF9DD13E4D5E53 +:1001F000CF38EB607E678AF0DD06EE1F6F2A72C68D +:10020000BDF0CF4D5FF2FBB7FA697EBEBDA9763E69 +:10021000D5237908F0CFF5723F3773E53D6E7E5FE9 +:100220002AEAE6F299F3A9D27D3E48E853C1A78AAB +:1002300010F44726BD4C72A78685E9BC1E3BC1CF92 +:10024000756D3AF42EF19D1D8EADB5FC5CC983F839 +:100250005E06094FAEC7BD46DC5FE86BAFE8BF4145 +:10026000BCA751C312CD8B4DFDAFCDAF7717E4E2E4 +:1002700039C102CBBB632D2AC7CB865AEB39F66F47 +:100280007A0D3BB32342E726BC8CEE1D679685139F +:10029000888FCC955288DE53047C94C37A32A7743D +:1002A000925CD894422EFCBBB09F16564B749F6A4A +:1002B00013C097C3FB88A33FC2FB6BFCFD3E7BBB17 +:1002C0008898C7FF6BF05DED35ECAEBF0D7C07790C +:1002D000397CD580EE42BBD4CE17AE40DC619603AC +:1002E000412956E9CDA3F7E6697EEB1DADF9F796F6 +:1002F000A01ED66FA07B12B9D6FAA676B3BDE37A5C +:10030000B75BDF6D3FCC233E710780BFCCF23F1758 +:10031000F8C824EF7BF8BF9EE3B73097BF136BE3B9 +:10032000DB54F26743C561B706F36BF1CA64677AC1 +:10033000A696B90B4DF35DEEE57184062FB7431F0A +:100340008C1C761796F42E6FF1CB963894917ABC6C +:100350002A8D93E9D5049ECE47F03E21DE07443C2A +:1003600079F30E77E0F9BAA64001C5B52E379F356F +:100370005EFE9E61AAF918E5A9E6335ECCE71A9CF9 +:10038000CFB8CBCFE74C7AB401F164D877767D282B +:10039000679475A0DCBB77B053EB6B1FF4642DBB87 +:1003A000B6B088DE796DC3F30EBF68B9616D533E98 +:1003B000DDBFA2FDD827BC4BD7E27EEC7B32DFF756 +:1003C000646A7BDE9C51B8CF73605C5512FA79CFBA +:1003D000D3FE77B4DF1974FA51BEAE13F6DAEDDF4F +:1003E000C8A077408C7AAF0AFE582725DF1FDBEFC5 +:1003F00095855C681FC5F7D7A3A3CC710CFB7B5711 +:10040000B72F93AE2D34D1E3C9EE7BB4F10C3C078A +:10041000D694B7BB28D97C4FA6C5BF4DFA60B0753E +:10042000BE0B6EE5F305F93F0EDB3F27F8CF98EFE3 +:100430003ADB3BDA467F8F7B8D7D33982FED9BF146 +:10044000DF4FB1CFEF3DA3BDDA9E21E059549504B3 +:100450000EEFA5B5279DDFED383FD33EE1BF0A394A +:10046000DA33AFF6C17346F59ED701AF1127E3F338 +:10047000233C63FF5FCF207D68E07D5BCB82B5B816 +:100480004F7F52F8B100C73C01C771C9E679D2135A +:100490004F8AF705DFB0CEF36CAF79C6472583DF0F +:1004A00015CCB3CF751EC339E7F5D52EF9B8EF6378 +:1004B0003B18F7B75354F21B75F01B8BD09ECDD170 +:1004C000BF6B7E57EA873E1E27F9A18FD3E99F674E +:1004D000553C54C130DE10A27DE765AF291457CFDB +:1004E000BF9A25E45C7C877EE876DD0407435FE005 +:1004F000FE33FE408371EE654359B60FE54C57E37A +:100500007712185FD34FF1F7D553F1EFE70EDD8582 +:10051000F18D8DE59E6566B9E2CFE5F36BCEE2EB3A +:100520001AEDD56F0EA1BE8BA81A33DDBFA9F25705 +:10053000F3F7C3836137C60B1D2CB26924148EFEFA +:10054000C53C9FF55DB618FB2AEFB265CF283C8EFF +:1005500070FFF33185DEB138A7466F9E84F0F4AAB0 +:10056000640734C56F59C52FDB45C7217E33DAB820 +:10057000BFD25CCBC8896CF2960FC930F9B987C677 +:100580007B088F67BF26D1B980B79DB16D2E80CF14 +:10059000B9932EB683CEA3804ECAE6F790285D3875 +:1005A00046A3F72E0025F86EDFEC593756A2FD1D45 +:1005B000CE0819FBDA3E7922C04DBCA7B1718B443D +:1005C000F87967663AE597B5F17196A11D427C1AF4 +:1005D00073CE379FEF619DD31EC034C0225FC7FB2F +:1005E0004F6D736662FFB3E7ADA27391B3276AA53F +:1005F00094563E1895287DCECFF387FCB4FFD29A4F +:1006000043BF93D05526D17DBA3B2BF9FD96D995A2 +:10061000C7A95ED792256B0720FE277AE81C6D6C70 +:1006200096340CF7CBBF5D09FE3BD45B3C4B2AE410 +:10063000F54F53FD45B3A4028DF29F51FF2FB71E16 +:10064000D98CEA63266BA5733A95AC9AD2B76E5DE6 +:1006500041FDFE7E9287EE310DF3717BD7D3B07DE5 +:10066000193E83B7A879CCCB382FCFB5C561BE8FE3 +:10067000DF7DEFCD796910E331AC7E5C7F23DD78DF +:1006800014D0E6C0AA93C0C1A800387BE438E52B9B +:100690007CCFAE6D9C84D61694835E5984E513B1ED +:1006A0009CE73BF764AC3B3AA9277FA069F8BAA363 +:1006B0000330CFE5CF68DFE41B50FE644EE2F12942 +:1006C00095F17741E0934EEF84C1BFEBC7F7CC6360 +:1006D000A34FEC8F8B7AF0E939ACF7DBF98B37E27B +:1006E00079CCB3CD8A1FE579E388B04FC5B8782CB3 +:1006F000E243BA7BE8D05D9B26C17A3FD495309A1D +:100700008099EB6FB999DE03D82EF991EF9775EACE +:10071000CE8150BEF469A91DF965C5D6CF3AA64170 +:10072000BEAA8DDF83BC35AB88C6ADEA8CDE8C7487 +:10073000B3B44DC9C5F3B24BDDCC87F43E7B9D9479 +:10074000AB43BD2EB5D587EF477D1C3FE4C3F78291 +:10075000CEB637F8B412940B8B89CF3E6475BEC900 +:1007600088EF667E5EA58A71B9C59A951DFC7749AA +:10077000F87BFFF47B50C037E98D526404E0FDF64E +:100780002C2E4FCF04A2419403E99B7F7E3FDE8F46 +:10079000EA629CAEF5A8388F887FE3F17781189DD7 +:1007A00077CB6D56A8FD8319BC7D7AB4EF77579649 +:1007B00076F2FEEE7A5A8A6BA1DEE51F54B75F8FA0 +:1007C000EFFC7FBB5D628F68BDCBD37585FCEC6FA2 +:1007D000EFE2FED88A56E847EA5DEFF7526C13CD98 +:1007E000BB0EECEE24E59D306F2C4F7F58DACE9295 +:1007F000CC03B8F368E1787E948A2559476EAB94B0 +:10080000E072C1F65DF8F70007CBBDEEC1B3166F1D +:1008100046B37570AFDF41E0EF0FF523CCB05EEF6C +:10082000B0ADDCE5B0DCD7EC27FCFF7EB6FB9A6709 +:100830003FE1EFFDE86532ADB75F1B8F2B9D85145F +:10084000EF97FD26DFB19BEC90F309EFAD40AFD7FA +:10085000DFC6F7D9AE0FC5D250AF18EFB4F9867224 +:10086000FD54EE1E73D40FDF6716F27B8AC67E71CD +:100870006580E7377EA97F8BC7C393DFA3A6F5C842 +:10088000344FA28788B847FD2D41676FD673FFF9B3 +:10089000DC54298EEF60DBEFE3428B71F87B015D66 +:1008A000EBFB67E3B9F373923887F56B4ED7F6FB32 +:1008B000BA77CD92AEC27762A18603FDA265F12C14 +:1008C0007A1F7346B1B55E749744FB3D3768B6EF47 +:1008D000CDEBE89ECFCAF86909E7BD3262BB0F6C69 +:1008E000A78FCBE5C5BB05D3045E8F89F3F0D3C4D6 +:1008F00079F74AF6704536ACA76A3E0BC7199E5782 +:10090000D755CCAF58C8EFF5AE684CB7DEEBF53A2B +:10091000FABCD7DB6FA1FD9D2B9D997F07CE787721 +:100920006970C53CDA5F09DAE8305FBC533058BC07 +:1009300053907F9FF59EF05BCE8ECAA108FF208F5B +:1009400037BA03D6DFF3C17D1873FC2AC7C7F72572 +:1009500058BE46FAFBAE6339CC7C1EED2E2FBF2F5E +:10096000C87639CE9BEF595F38D6F7EFA2A469B6A7 +:100970007BE72C40F16A030EBDE43BC0B2DEA46706 +:100980004C723D2EE47A06D2BF21D797676834EFC8 +:100990000F22914DF8DE2CD322741ED7378DF3C56C +:1009A0009DA81F417FDEA2B20A359B7E7F89D29B24 +:1009B000453B267E8FE4E5E27CDA1FBAB36DBB8649 +:1009C00071A85EF302DDB6767CD279E9880F9C9738 +:1009D000649A576316E81B05E727ECD94AAE777A85 +:1009E000F59B6FD567A67E5B0D3D2695255DAFCF48 +:1009F00081749B1FA173C857DA2F088D87FBEC37D2 +:100A00001AF13987F6EE17565167C0414E3EDF6E38 +:100A1000FCD8E18078E986C37C8083A95F9F809FB2 +:100A20009D1FCFCE1FBA699C66C52FBF1F9E62BD9A +:100A300097C1CF049F46FA3A159E8CFAD9467F2972 +:100A4000E6D3288509EEA9F09AAAFDBD3EBE0E7B2D +:100A50003F57BA0EA7289FDFC73A10CE46FD7E57F4 +:100A60000AD718F08DD21BAE30743BB6BF4BD44BB7 +:100A7000654FF5F83F5564879C15FEB7E1FF9C6D07 +:100A8000E3FE8FE1F7A0BFA3E798FC9F40B50BE51D +:100A9000C786B202EEFFB4291427F14F9815C43867 +:100AA0008AE1E79CCEE6719D3355FCDD5ABBDF93AE +:100AB00093C3CB4BFDDCEF59E08DDD3C15E6D595BE +:100AC0005BEF9434D6CBFF71E14E0CBE3B207E1F12 +:100AD000E6C365399B6EC57A7FA5DF437F80B75536 +:100AE00098C220AB26BA75710FEC3AFCBE448CBBA1 +:100AF000AA93EBAD3F55DEE74420AFF29BDE6F8358 +:100B0000FF96829D82EF382E85FEBB8AC57821B480 +:100B1000230D3F8A9FDB40BF49077B4169BAA51976 +:100B2000CC6BF09B161DF3E1FECC63B78CE3EF2E8C +:100B300080FD0AF5DFCAE6F7D60F8DBFEA381A47FF +:100B40005DFFEC60E8DF4C9D50F230F955C7BBF318 +:100B5000E4577DF2AE8BF2AC38B60DCFEB35BD9BD2 +:100B6000467AE093434C477CFEC71617BD3FD8E456 +:100B7000486CC3DF1938F76E06F961E8BFC55C78C9 +:100B80009E1A0401DD47D565F4B3408CF5E3EFA769 +:100B90006BFD79DA4EE9A350AF8B7E402C21F3EF49 +:100BA0001DFD78FD587F9E9EA7F46C1AB75B0CB8AC +:100BB00057E471BF7B7C9E11276241E4BF2634E27B +:100BC000D13EB9498E9B7FA7C348DF16F59BB20C77 +:100BD0003B287C1BC2A36A563F19D77722BAD83369 +:100BE0000ECFE5B415C8E8FFCCCDE476CFF18AA1ED +:100BF000839DD0EFCF1B5DF4DED8071552DC017664 +:100C0000CBE990564FF6DB7A16C6F8C23007D831DA +:100C100065B8AF2E8575E8FDEC2946F53E68FBE129 +:100C200074B46F3E5425F2ABFE3397FBA113362B01 +:100C3000A71D80E79B274EFDE799D0AEEC6995C6CE +:100C40007D2AEF86716F61BF4D0AF97F2FE5B9C824 +:100C5000A87DEAD109711C7F178B78F0FCBD1E4F6F +:100C60007EBEFDE35C3EEF82ED8BC9CF382BE29672 +:100C70000F1D5AFFBA06ED3E6C2D5711541FA2806E +:100C8000817EEF8C4FDD55074DBC599C7FDE72C6CF +:100C9000D6A23DAF6F51E8F75C908EF0DEC259717D +:100CA000DFF6C3B606F28BCEB60C0F235F2D8BD7C3 +:100CB00005D18FD921E0D580FC4B71A37033D2EBE5 +:100CC000B9F563733698E6B923D369ECCF6BDDFBD6 +:100CD000FC48AFC27E1FCC8CBF6EB9C57FD7AC8D30 +:100CE000FB11C13685DE391D1C7725C4BB9496F7F0 +:100CF00044A11EEDDB0D1676FD20163F5486DFEF76 +:100D0000B3DA5B831A79BD812BED7618B7EFFD82DC +:100D10005FBB443CFC9A73D67A7E61D7FB6D76FD4F +:100D20004D9952D2F59D6D1C4BBFEB32E851809A24 +:100D3000552EF3F5352B747E24087E4EB277AF071F +:100D40006F06FF6534D5233BCCBE9EB3E738FDAFBD +:100D5000D8C3FD34FBBA967F92588B4A66E5D3B66A +:100D6000DF8FB4CD7F57338F634FF6F27BA0935B59 +:100D7000E5EDE8AF5DC3DA1B70FFD991974BEFF655 +:100D80003785381F65CFA8C834C757F766F278E9AA +:100D9000D06699454CE314B57A58C464070E6FCBFE +:100DA000B6E447C4075AEA8FDC5360291FD57E9505 +:100DB000A5FCEA83A596FC98C4644BFDB1C7CA2D77 +:100DC000F9711D332DF527BC33D7929FD4B9C0528A +:100DD000FF9A738B2CE55F3BBFDC52FE96B80F7415 +:100DE000DDC57B2DDFA7B2EF5BDAED127CE1CA97A0 +:100DF00059DC54CF97CEED53B4C375537DB497638C +:100E0000A67A71414F59D3E7F569673709FDFA2092 +:100E1000BED33F1CF741F93BFD1BF19D7E17FEBE83 +:100E2000B3466903BED30FDF1F12EFF4674D2F7B6C +:100E30000CF5FA9F8BF91E3CE03288FBF9E06D93CC +:100E40007B9B732D233991A9F3DFD98CF9233A9E2B +:100E50003F70E6CA96DF47F496587F9FD51DC8B607 +:100E6000D8FDBEB28196724F6181F5F7BABC575971 +:100E7000F2FE29A57DFA0D0333B9FDD5C562AF5346 +:100E80005C22BF957E7F24959F5283BEE6B8D4EF47 +:100E9000ED9FC3F7F6357C6FBF3A38D704E74F05AF +:100EA000FC3FCAE2768DF18EF3996786EFA8273E64 +:100EB000E6EFEDE3B3E6F46E551EC7F707C5D54E72 +:100EC00002A85645F6EE992C27FDBED31949E6BF78 +:100ED000DFF48C6B3BEA8D33C63BFB1B15F1CE3E3A +:100EE000F7C7C98E0056FAC0CBDFDBFF688B42EF35 +:100EF000EDFF9B88639FF5479D61D33CC15E30FC4D +:100F0000717A6F7F95C8DBDFD7A77EC1DE59B559EF +:100F10002239BAAAA7DDFF88F7F5C7E4C957F6BE9C +:100F20007E1B9783FF8DEFEB13DE3786F9FBFA917B +:100F3000CD313AEF7653BE427AD0784FDF88E3184E +:100F4000784915B7F9AAF198FF028688DAD60080A9 +:100F5000000000001F8B080000000000000BED7D6A +:100F600009585CC7956EDD5E599B0B0D4D83A0B98A +:100F70002C3648465223A135B2DD4858468E16B469 +:100F8000C45112DB690496D096879738CA9BCCE38C +:100F90004A208C244060E1043948D32828C11392A8 +:100FA000C17626513C997960693476C6F648B69583 +:100FB00097F8397ED06A3689F7458EE3442F9F3201 +:100FC0007AE754D585BEB7BBE94696679C99513EF2 +:100FD0007F37D555B76E2D67F9EB9C530717210363 +:100FE00037B30919B10A84A410B28E18E4C128429B +:100FF000F4E426C1DFD7DA8DB48CFF6EC27F775F51 +:1010000083FA82A9F2BDD7D565C2DFA7657D60D915 +:1010100041A4A3A5D9E1DB11D97529CF46C82AFC83 +:101020004122E4D55AA834C3FBEFAD19271642CAB2 +:10103000485B69523121DBB612A7079A94496D06C5 +:1010400002E5D44E8158A1FF5583156BC93C427609 +:1010500034C612E23FBE38A30FBF13455CE4660EF0 +:10106000FDAE6F72FCF05DDB43069FFF7C6120F0FC +:10107000232176F613C92C7DB23457C079F8BD0709 +:10108000DFB397367EA087716596E986CCF05DFB6D +:10109000937EF5F05F548651D56FD29AD2047721B2 +:1010A00021974C504827A43BE1674FCB503E5C9CB6 +:1010B000D32624C37E34EA8900FD7A1B3727B8E3A0 +:1010C000E01DFC776FE0F3DD5A42FAF3A7CA23D59F +:1010D000FA320FB48F29AAB7E4F9BDB75A3412B265 +:1010E0008890B16A639907BE73C49964C92B0CAC2C +:1010F0001FDAC3DED77EA74C34D0FA3762CBCB449D +:10110000A0932FEDFD6A148EAB4D205BFBE0792C94 +:10111000A33C2109FA23D7A13DACD71E5823924BFB +:10112000C85951A0EF29FD9CD48CD7D127B83C8554 +:1011300081DF3BC6DF6B4B73BE9607EB215FD23B73 +:101140004F139C57F217AAA03CE48A71E227C80DFE +:1011500068BF989206FD5EB34EB6ACCA9EFA8E0783 +:10116000E8069FA76A45D20F8DBA6BEDB4FCDD5A35 +:10117000893E7B6A0BE8F3AF6B9DB4BEB776292D31 +:101180001FCBE87B2506E8E9A32DA44806FA9BD3EC +:1011900003FDC377934B6D1E3D7C78288394E1BC9F +:1011A00091A24AE0FB4302A35333D1917ED8F77F4B +:1011B000C579C06FF5A289F2158C93106857C5697F +:1011C000E04BA406998C54703A35235DC3F3E12DAE +:1011D000834623F473ACF5A51417AE67BDD18B74A9 +:1011E000E3E2F4FAF03E28FBD15532D9FF662D8CAC +:1011F000CBEDD14B1E01FB357827E90CF94C2A17B2 +:1012000070DC6DCD02790ECA6383FF24EA703D9DC8 +:1012100006723A1BC7AB6E9F2C6F1CB0C3F7895D7B +:101220004CDB184FC817E3DCEB4BA0E84D3E6012D7 +:10123000F077974112611E0251E64B068D308F3ACE +:1012400057399DCF70B5B5E5416C474AC591026CE1 +:10125000E7166EDE159A7E81FFC8881FFFFD0878AD +:1012600088AF17DDD7DD7C5FB37A83D3C91651C74A +:10127000DAEFCBD2E1FA7E95CF05570CF9D6CCC781 +:1012800049526BECA21F5DFF15D28739F03D3369DF +:10129000A27C0CEB323258C0E689FB9865B826E098 +:1012A000FBD237607FFDE583FEA169F973DF7BFB2D +:1012B000EBCFF9ED579F189F3C02EB410A4921956E +:1012C00073FC7D856FB6D33E03FBF943AD5C7FCEE7 +:1012D000C8F84C9CE67B01FCD5C1D64D594FAFA652 +:1012E0007F65FDB21A6192CB09392ECE69940DC883 +:1012F000675B2C127C6718E9BC90AE675C098CAF09 +:101300005BE0CBCBE979349A15BD7613E5D72C4E4B +:10131000D7C73AF5CE7EA0B32CE05B1DAC7F1ED2C2 +:1013200039EE6DAB81D2AF42CF29E57EF447A6F806 +:1013300020990C88AB80FF1EF5E8A97CCFD2D0A9FC +:10134000B24F633780E3E03BDE5293E740107A4EC2 +:1013500021FDA20EFAA9007AEF47793AF8F9D5698A +:1013600048FFE5C4795A0ADC1FA0FBD576E497CF85 +:1013700089CEC3503FA2D9AFB63442E7A5954723E3 +:10138000288F2412521E29FBD72694FF4B5E76F835 +:10139000FDBB5D726B24C3732086CDB7E8349BA67A +:1013A0004A5EA56C7109C664942B450B911CEB45F4 +:1013B0001BDD47AD1C53F67B67147B4F2BBF9E1480 +:1013C00025F61EDFBF63DD20BF807EEA3A2A2DCBE3 +:1013D000613C75AD3A82EB7374E0904502B93266B8 +:1013E000E8373981AE5EEECBB6603BA04B4A67630F +:1013F0008DB9961C3FFA4E4B647A00F421D55B23DD +:101400008D75965CBFFAF4443DA5DF3122B52C639F +:10141000B4291916A37E867F4CBF2BB842B8899B8E +:10142000524FCE21AEC8E4649CD1A897CD40478EE0 +:1014300046BD2BDA42F5BAEC4F3F999C6EA11DD503 +:10144000EBB38867A0187ECF78528D1366D5433DE5 +:10145000B44BDFA3C50F240ED74DE472688CCFF3D5 +:101460003363EA76225F3791F8FD0EDFF96C22C311 +:1014700065DA7979C7A4F54B61DF2AF718A878D324 +:10148000CE33C3C3E7E509312FE0F1A824DA8ECECD +:101490004B3B1FE05053797CE07CAA265A1B8017F7 +:1014A000C8CE26A30ADF68C7DDDD68A038627907E9 +:1014B000EC0FECFFF2565D970453A9237D7AD447D5 +:1014C000F204217F0BE5EED6A49665503F569FAB04 +:1014D00043FA53F6756302DBF76EEC10F0D17872C5 +:1014E0001DC5477F11CFE8ACFE6E03D5C7833D66AF +:1014F0000F0AE9C156F69D0A8FDE83B8E960BCC8C1 +:10150000D60D96C704EB168BFD80A84B324A89880E +:10151000AF7E0BE392E1BD910E86AF14BEDD85ED8B +:1015200082C8DF6F727DA194537B82EBA36D496CFF +:10153000DC1FBDFAA1C0E8EF5ECA378F727AB3B57F +:101540005F2CC371EF29D6115C8F54223588D04FA0 +:10155000EA56C66F93EBCFF9AD9AAF692A293F4A95 +:10156000E95B26540E3B787F239E271211273814FF +:10157000F9BA8FC9D728F81FCAD76D7D46957C4D1B +:101580002506AF3F6ECDE274A795AF17709DFDF4B1 +:10159000B00D2B72F1A9960BB70FAFB6ABF0686721 +:1015A00022C3A3E38857E310AF2E50E159A5FEF202 +:1015B0001E261702E468E2245E3D9918015EAD160E +:1015C000D8BEA72585C1AB1ED8F720F31B4F9C1EA4 +:1015D000AF8E87D10F9F345E1D9FD4E3D3E3D577C1 +:1015E00013D578F5D110F23E00AFB633791F295EDE +:1015F000DD25035ECD9E06AFC2463D877C8D78B566 +:10160000781ABCDAB35148C302C7ABF3E2E4F5D9A8 +:10161000B8CE1A9C5A21D650FE278F38A30CB0EEB4 +:1016200046E26AB90B2AE7FD748BC54DD7E5D6F0C3 +:101630006A0A7C13F73D52BCFAD7897F5E78D5944D +:10164000F4E9C2ABCAFA2978F537899766845787D7 +:10165000385E7D2C498357EB6F135EED06BC2A85FF +:10166000C6ABE388578BC3E3D54AC4AB422478D5D5 +:1016700079DE1FAFAE48FACF8557DF4D9C1EAFEE27 +:101680000871DEFE79A244E96812AF76F2F336A75C +:10169000EB4A4E77B62626EFE93FF8AE5914BB0E5B +:1016A00043FFD787463D75503624D98AF4D0D56E8E +:1016B000A44B9403C58201F99893D9148ED5B977B8 +:1016C000A31E32883261F2C645105FED4E246C1CB9 +:1016D00051B1F53E2B21BFD85A49E5D1D346A6A733 +:1016E0007E21BA2D497E72E4EB5C3F3D1D0FF588EB +:1016F00087ED6E4B113C2DB1F253E5749C4E1D7E6F +:10170000BF2A9AAD97F2DEB3490C47260070B85055 +:1017100048C598059029E0A65C0BE2B9B78C520B3E +:10172000E2C9B1D7F4CE53F09E370EF4A31FDF7693 +:101730006BF4E22B7CDFB11DE2979506C9108CCFCC +:101740005745E955B846C107F83EF1E3FB951DB989 +:10175000A5389E55C4598FFD68DF3B688005433D21 +:10176000B025D6735A08FCCEC1B895CF25A5507BBD +:101770005A755F10B9FB333E7EAD5E30225D00DDF1 +:10178000D7551377542EFEF89088FC03F53AD4030E +:101790006FAD94BF82EBEA15195E50FAFB395FCF4B +:1017A00080F51099BC8B783DA2A6978F93FDF276B9 +:1017B000DA757A3649528D43DB3FB10F521CFF95E3 +:1017C00038033D9F9033C66B93F2C6CFFE09A73313 +:1017D000AACFDE5EBBCA80FB53AAB16F6AEDA4DA62 +:1017E000F2C92446C70A3D849D0F6FB7CAE08C6CCE +:1017F0009D0C11AE93E1D6D62952FE1B8F90FF1E91 +:101800008D56F3BFD1CADE9BE23F91F2DD507B647F +:10181000FCF75C72087AFBF4F05F8C75D114FF1151 +:101820007BAB09F1983EBEDD561187F4A153C90F79 +:10183000E549BA811E95EF003DF6231D2D62785FC4 +:10184000827E2E737D7E9F3EEEB1B3F0FDDFBA56F1 +:10185000585157952CD9E3B80CFD5EB2323D2EEAB3 +:10186000DD2763A19EFC6F33C1F18D0CB8F3FDD76A +:10187000AF80AF3FCCC0A65B0AEDCDA486D96FFB8D +:10188000059D1DF61F0E00717E7ABDC0CA713069BC +:10189000B5E9A8F1FF8280EF69DB2938A398CB93E3 +:1018A00062AE5FC805830A07CFE7FAC74604AA8F6E +:1018B00077BFC37042EA56359E98FF2AB323287833 +:1018C00061BE1647707DA5C50DA9F87FE8B932CE77 +:1018D00083B8418B139AA4BEF3E950DFB495385115 +:1018E000CFEEE97B4C403A586905BC8087638E1780 +:1018F000609D9DFDB8CE303E5C6731B73F0AED6B11 +:10190000E2F7F4A29C8DF8E57B9672D88F2B836664 +:101910006AFF5670C20F819E0C7710D20738C00044 +:10192000E517010760F9478003B0FC63C001F83C8C +:101930000338009F2F030EC0FA9F010EC0F23FD460 +:10194000BA68B9BFB68C961FB6329C27C6963B9C28 +:10195000F09D81673FFFC8D7D1EE5F12E734C3F82F +:10196000877EEACE9A4ECEC03E1BD9BEF51B71DFF4 +:101970009A57C6547BFCFC2BBEA65C1D9E572F3786 +:101980006D4ED806BF3F691582D2A7F6BCEAAB669A +:10199000E7CD982283EABCFAB8D548C73B38795ED0 +:1019A0007D3C68FD6808FFCA79EBE479F5BCD5EFAA +:1019B000BCAA8CF74A379CAFF11CD73DB3F3F59521 +:1019C000C9F3F539D5781AF9782626C7FB62D0FA1B +:1019D000AB21C67B18C79B42C77B18F93EDCF97A5E +:1019E0001B3F5F6F4C0E73BE6E0C7EBECEE6F22FB9 +:1019F000D4F9DAF7EFEC0FF245E80F3A6F559FAFE5 +:101A0000DD919EAFE5999DAF777686F1073DCFFCDE +:101A100041A3E1FC41DD1BF7A74B6426FE207714B0 +:101A2000FA83AA43F98318AE0ACDB7C1FD4191EA02 +:101A3000E75F5B23D3CF3B34F838503F337CFC4126 +:101A400092487F1FEC647A3A9CFD701BA73BEDBC6B +:101A500002EC8721E8FC454EE75AFB61355F5F9B4E +:101A6000E762192A9B2AB41F52B9EF6C407D1DCA48 +:101A70007EA8D8EB43DA0FBB9F4844BA0A653FAC57 +:101A80006CBD35FBA10EFD0111D80F23DD573B5F67 +:101A90009770FBBA3BECB9A786EEE3FE24661F1EE7 +:101AA000EDCDA5FBAC8CB39A8F33CB13DC7EF34D1D +:101AB0002B3FE7FD99D86FEE4956EB77ADFDA62297 +:101AC00004BDDEB2FDA69E9F97F97A0E6BFA57D63B +:101AD0002FAB5DA076FDFCE47F3EC4EC3755D47E91 +:101AE0003312C67E33C1F7772099C9D149FB4D9F88 +:101AF0009EE2968F6BBF71B74EEF6FF4717FE3304C +:101B0000DA6F84F0F69BE141B3C95E1CB9FDE6C90A +:101B1000E4C8EC37E1E21FFEBDEC374368BF298E15 +:101B2000DC7E73DE3ABDFD667B08FDF863ABA4B6D0 +:101B3000DF7430FD18EABCFE56A8F3D3BFF179DD9F +:101B400088E35E14BA7F852F153BB28DDB91E9BF28 +:101B500069EC4F1F5AC3DA9F3EB406B13F7D08B20D +:101B60007726FAF5B508E5707558FD2A5139ACE8C5 +:101B700057AF87C9E14FABFD20DCBE0D3CFB13C75F +:101B800020B4CB37F59DB401FD57BF1B4D4EC1941A +:101B90008593AFD2DF273E80F38ADFF7F529D9CAD4 +:101BA000F9D2C2CF97163CA74869200C9710623231 +:101BB0005EA8C1FD1E2F8EA33863FCC6D7B661B9DF +:101BC000AA338AA0DDB8EAFAE71FC132693753DCCD +:101BD000D6DDBAED02E282B16EBDA087B2294152D4 +:101BE000D1FB7877A588FB5A347FDD1B77E161F55F +:101BF0007FEAC81DD0444860F31A2A7FD881FE913D +:101C0000CFCECF5C5809ED3E4C66FAD16367E30155 +:101C100004F416BE07F89C1C86D20F1B1F33E1FE8E +:101C2000CD3FB1DF84EBD4E719A04FE70B15F4F7F4 +:101C3000A2E35DB4FC528F40E271DC1D7A0FC9A6AD +:101C40007CAD47BEAEE4F4B9B0AD8DB613BBDBCE10 +:101C5000A39C7CB45790F07CB7E4EC667A5EF59D6B +:101C600010C80168E7131E5FB802E5CA0FCC12CE98 +:101C7000D79141C88A05F05EA740D05EBCAD437FD6 +:101C8000CA9C4DDB35A03C95BBF404E58F238F182F +:101C9000B01DFE33005D7E85F3D555E1806539B614 +:101CA000FB475D1FCA653FFFB80EE5CF573A98DF87 +:101CB0009C9C31CA0C0F35EEBF09EB33FF8C3ADE2A +:101CC000B1A85F5D5EF8AABABCE882BABCE497EA44 +:101CD000F2FB09DC1F44D87762A20401BF533235FE +:101CE0001EAA57DE4F20749F0E66CB8FE0F97B65EE +:101CF00054D13911C65FD02D52FE2F15379626428A +:101D0000794E2F2B5FB6B07E0BED175F4113F33C7E +:101D1000E98395685A7116249EC5E70267D12A6443 +:101D2000FDE2A51BCFE2D3676174B0D8F5D8AA64F1 +:101D3000F65947F95CD007D1EC7BA78A44C7263F08 +:101D4000FA6D486172602891C989256799FF7DF015 +:101D5000D9FC5307A8BDF05FA91CB3F273DF0B7663 +:101D6000D67EACA0C684EB3FDB2359D02434B8CE5A +:101D7000B415F1C2A0A073D1B88067CD5D68BF81F2 +:101D800032D5B3B08FA74E33DD41FDF87BE90E416C +:101D90003FF04E02D48F1ED69F42FE18E6E74EAFAC +:101DA000E83239FDC6B9834CAEB71ED7712F2F0369 +:101DB00055F7DF14A6E8622FA78BBDAD02DDF7BD96 +:101DC000C46F9FE0BD028F4115077B578F7A1FE7D5 +:101DD000F6A9CBB79B4E7E6DE774229377307E25B4 +:101DE0008B108633A54101E57816D78B8E46663F6A +:101DF000727C431BCFA1B5DFB2B81489F7B36C5026 +:101E0000DD5EE27A55D2C4751C9CED76A09C1F89DC +:101E100066F23F1C1D1E4B617A29523A5C525AA150 +:101E2000A7F4579345F5888293BF7B8DEDB76C3748 +:101E300052FB63B3C17D7836D05BB3DD582CB3263B +:101E4000A5D150BFB658101147D9E07CD6BF9090AD +:101E5000D74F6C6F5A03E5D55FD095239DADCE76F5 +:101E600047235D45494E8CBC25CD7F62F4ED173F7D +:101E7000A3BBB9648ADE6C9CDE6C9C1E5C3C5EFA83 +:101E8000434ECF9F74BCF46FCB7C82268E6946F1A3 +:101E9000D24A1CB4122FBD0BE3A5A17E0D910D58A3 +:101EA000DEFE10E04B78657BCFED8D9356E2B46F8C +:101EB00057BCB4CFC2700230AE03E97D0361F14B71 +:101EC000F0ECC7E7FF32B9E217A1FDFCB0DE790AFA +:101ED000EA363C5424E1F77370CB40FE6F58FBD9CF +:101EE000325C87E1F21367F17C105370A11AE5CDE3 +:101EF000D2E21882FAB29BD4E4A09C5A412EE85157 +:101F00000E5C41FD0CDFBB875CA3E55F3E104BF12F +:101F1000574547769799CA37B709E5239C9F5CF4E4 +:101F2000BC62709BB6CEA5E391091DD7E0AAAFE3D2 +:101F30003383B83E87DFEFD8F8007E7FC396BD7449 +:101F40003F362C9516D067D99172019EDBD70A795E +:101F50002401CB2F88ECF70111C7FF5CDCB6863477 +:101F6000D8A7CB2BA2E8B96643D9455ABFBD0C040C +:101F700024B4BF5C5545EBE5A5314ED4E77BD60ACA +:101F80007792F9B0CF658003697F43B47DE55A212C +:101F9000479A8FE50F68BFEB44F7EBD09CAC5DF33D +:101FA0001D03D2F7A5077737A09F797C59CC02246F +:101FB000A7785B0E9D7FCC4B5D3D704C23954D5DAE +:101FC000D236E01FCB2A86F3B6F3FE361B48A901B2 +:101FD000E6B996B02721CC4F70BEC0DE7518D66921 +:101FE0007B077BCF8F5E4D3767E1E6114A2F06CE28 +:101FF0005F317AD87DD8E24E3B7195020E8AD17955 +:1020000068F9990ECB91FA34E07D1DD43B09B93FB4 +:102010000DEAED58CFCA5F5BB7B9E9DCB2A9F2337C +:10202000278EF132A1E7CB79C77FB816E3C61296A7 +:102030009172DC2703E76318924CE53FBC43FCE256 +:10204000C39A791C6B2C8CAF3589FEEE8A87FD8B89 +:102050008581DA16D0DFE58405F4F7FE38FE34E238 +:10206000138E4B369C7F21EB3F86C81ED4E3A4C061 +:10207000DD8CE7C1FAE37A11D783B8440BD22F7114 +:10208000CB16A49FA3033B9B916E475D062742E6B8 +:1020900084E34FACA7CE846641BC03C65739E8A49D +:1020A000B868778FD087431C3178CEA74379A2B523 +:1020B00044C2F35666EA1D540E550DD6D0F776F796 +:1020C000E893D14EBC3BCA1D8F71971B8E09C9D8AE +:1020D0006EA2A9C842FDDBC4F326FA99269AF554EC +:1020E0004E8E1281DA2DABB00ABFDB04FA96D237DE +:1020F0008B378CC53502528805BD381BE8283D95C5 +:10210000E1F8B10C99EA8158CF4FBE86F47B99BFB4 +:102110000FE73E2A9FE93F781F8F0BC83FC94D7AD2 +:10212000D76CA0BB0D362637770F12C2F0ACE0C1DA +:1021300038B8D872AD5CAC596D413C8B764A1867A3 +:1021400055EB4601F1EB985176208E1ECB66FA3E98 +:10215000502E8A1633E2EFCEC46C5CEF076D4CFF55 +:10216000EC682D7AA318BFF7247122DD57F754D0FD +:10217000B8C3DD76A3D305E571818D47EE12E8F88B +:10218000635D061A3F3912C5E879DC2374A1FF6349 +:102190004268A5EB27CF35507C09DC7E2E6F317D60 +:1021A00095FE4BF608FDC85FC9DCFE00F352C9B1CD +:1021B000CC00BF2AD3C354CFC0C0766D51B7B7711E +:1021C0003D6CD3E8E1D73BEAF469D0FE00F229AEDA +:1021D00067AF90580A8358D6AEA7FC7B30D11D8FCD +:1021E000E583877293EAA06CB132BE35A5BD43CFBB +:1021F000153F2F2ED4A1DDDA64ACA1E70AD3890202 +:102200001DE2A8E74CEEF68D28479FD351390A838B +:10221000FA2AD2E7EAE3561DE2FE83D96ECB25DC2B +:1022200097346312D6FBD6080D22C899ADEEB6FBE3 +:102230006CC9680E4EA47ABF84E3159F515A49E9D0 +:10224000E21071225DC168E56AE0939CB2EC03384C +:102250002FCBF2A56B5CF05ECE7A1DC1F16C409D78 +:1022600003FC9417BF49876B72A7B1261DE9E7707D +:102270002A3B2FE5BC77FFAB02E2F21B1F16221FA1 +:102280006DCA91B7E3BC66ED3D97783FF67328AF12 +:1022900008E7DF6CB81025AAE92322BDAEE001ED06 +:1022A000F9302F95D1ED8EB5C21C01E4DEDB0718A5 +:1022B000DE1D29113C78CE2BEF1464FD3C2AFE165E +:1022C00055203F9F484DC2F55AB7C2A8A2EBF2CEA7 +:1022D000A72FA0DE1B11A436DC1FF9353DB50B6915 +:1022E0007103FAAF703D7774262E403E25057EFDC2 +:1022F00004C1037B3A87049CCF1E97B69F30B84138 +:102300005BE6F8321C8EA8E6F7AE141CB193E388A6 +:102310009D9E5826DBC9ADE108053768F1427E5124 +:10232000EE5133BCAF8F3A7B8F6FE1D4BED471DCFA +:10233000FFCD5AF91EF41B76D436D2E7FB9CEFEFA3 +:10234000D7BB7E6DA3B8C169477AF119CBCB4B706F +:10235000DD0F0A74DD55717B12FB1EB59BE3337BE9 +:10236000AA4CE343B3F1FBE7E9F7537B2B4AF07C3C +:102370009ABA150D1E84A479F6D3729A5BA2F49FC3 +:10238000BA15C6E3B7EF696E1897DF3C0F2606A7AC +:10239000B39654C637CA394F5BBF9ED7E736EA8833 +:1023A000CBAFBF3B5A6388CBEF7BF91D49AAF26CD8 +:1023B0004FBAAAFD5D3D39AAFAB97D7354F5F3CF42 +:1023C0002C50958BFA97ABDA2F7C75A5AABCE8C286 +:1023D00003AAF64B7EB949555E36F84555FBCF8CBE +:1023E0006D53D5DF7D6D97AAFEDEEB8FABCA25E47A +:1023F0002F54ED43DD9F5B630B1EF75D7FF7EF2EE0 +:10240000E0C1F672871E353EB9DCB490DE4B10DBBE +:102410000411C9DE6593E87BE342FF2384C60139DA +:10242000A99EFEA4E3C557D985A0F1E23B383DDA69 +:102430003A99BF672A5E5C9E365E7C375FA390FE4A +:102440009EDEE9E3C5AB6F315EFCBBB87E7E71B04A +:10245000A1FC3DE1CE75DFED788BCE77F5A29554EA +:102460001F28EBA49CE794F2ED3ECF6DE2FBB00B8E +:10247000E57BC2947CF7A17C87FAF21E90EFB85EF0 +:102480005CBE5F793E847CEF01F93E0FED5020DFAA +:102490008BC3CBF75D3D4CBE873B273A487F437AE1 +:1024A000F6ED90EFB778AFB649A0B61C07BFE7A32B +:1024B000E883CA46B5BCFF36E723452F7F7BCF2B89 +:1024C000D1F97E7AD94BA496D9B8DF1D3A42E52FCF +:1024D00071523B93B2AF1FDA047EEFC31583E77BE3 +:1024E000D9C3D64FCB37857CBF72BA2A699C90720C +:1024F0003FE8E8C06C6AD7F3B5AE3444C37B3E3CDA +:1025000060E039D753D2BD1F5EB992CAE21A2E9944 +:102510003C47685CED737AE9345B26D326E0F7111B +:10252000C2FCF857BA1E73A0DFDBD75149EF237DF9 +:102530009FE35E6F07FB0E31482DCB50CF772DB454 +:102540001EF61B5F6FAA9EE163E26E59CA70B0FA75 +:102550003E12C78BCAFDA3807B3B1D7A19CFC30EE9 +:10256000B43FC233B3D3DC4F82DCDF8176D4CEA359 +:10257000DC4F0A792FA99DDDEFB9DDF792FE0F5FE1 +:102580008F9131B6BE7B7A01C7FB9D1B94F98EB447 +:10259000BF74DE02EB34AB4D20A21464BE9A7B4ABA +:1025A000578C7D26A49B80F9F27B4A99BD0C5F6B0A +:1025B000E719704FA94F6D3FD08EDFDB58C9E3FE9E +:1025C000257A0EEB6EDC42F7536ED753BBB8F6DEBE +:1025D000D267485F1DE2491A8FBE1CF7F1B523E8A8 +:1025E0006F3A887306FDF307DBF78EC82BE8798E08 +:1025F000EA155FAB8E20FD793B56AD477CEDF508C3 +:10260000229ECB5EF6ECA7E7302D3D2BEBEFF3D40B +:10261000A9EEBFFD3F8E3B473CFCFE9B6795EAFE63 +:10262000DB1F39BDF9887C6BF7DFC2DD1353EEBFCA +:1026300079C2DC7F8B90CE7C33A4B3213E7FEDBC8E +:10264000C6C6E4F5F4FC86F7DF82D1552B9F576BA5 +:1026500098FB6FADA1EEBFD504BDFFB663A29FDEB0 +:102660007FDBD33B3D7D0D61401EECCB40F3D3DCE3 +:102670002F246BFC42658E41DCEF0FD4716CDFB010 +:1026800047E6179AE07EA109EE17DAC1FD423BAE9C +:102690002F617EA1268D5FA88FF9853A5225951F5F +:1026A0006BA28FF9857EC37153059192D05FAC8D7B +:1026B0000FB0D547E6872C4A0DEB872C4A0DE287F1 +:1026C0002CC2F54A098FB794B8FCB078AB2938DE34 +:1026D000FA1FDC6E1BEE7EDEAE49BCD53A6D7C8DFA +:1026E00072BF2024DEEA9C1E6FEDEC51C76F458A55 +:1026F000B7B6F17D0C87B716DB357E3C253F035F0F +:10270000475B5F64F71BBEACF81F42EFEB97ED8BA6 +:1027100002F7F5CB7612D49E96CFF122E273B49BEA +:102720002976B500FB1CBC7F60F1949D50A907B0D1 +:10273000D786F5F339DEF805B433E279BC5EEFD91C +:102740004FDF73D1F35EA4FDC1FF6DC57A271F175C +:10275000F667489EEAAF3E4DB6187383F427A10D85 +:1027600026687F1EACFF05D41BFCC725C1B8E6E276 +:1027700077B83D7BABCCEC8101FED517987FF50790 +:1027800003F4D9D7D7459FCEE7DB987FF534F3BF65 +:10279000BED4F918F58BBABBCD120D1ED2F857C7AF +:1027A000850556E60F1528DE123DFBA93DB1A25561 +:1027B00090501D2C396B35A1FD78EC10F3B38A8D48 +:1027C0001B4D2897B6B5BF40FDF3577BF5241EEA95 +:1027D0005F68D47BD016A8F85DC7051DA1711E8760 +:1027E000987F2E949F35C0AFDAC870CDC7F5AB8EF9 +:1027F000093A7AEE0FE7377B2A2532FFEA53298C14 +:102800004E238D83B8C2F167B83888CAB0F7005C30 +:10281000AA38085F536471864A7C485839D81B3CF3 +:10282000CE707D5A64E7CEEAC9384371DA736755D2 +:102830003839D83ABD1CACF0DC9A1CEC4991228A9C +:10284000330CE05B58EE86E07285D6FF8D9DF72B4A +:10285000BAE3057FFB7DB948F1A2D21EBAD9AFF425 +:10286000A70B2E57A81CC84D63F415E93874589F60 +:102870001DE4FBDC7F30293FCA64D5786CCA7BFE3F +:10288000F4AD9F9ACFC856ABC544F75B2D1F939408 +:10289000F168DE5B92C6DEAB17DC2D8B84C0F94796 +:1028A0003A8F623EFFC97870659F1A23C315A060F6 +:1028B000C2E10A9216045710FC6E4AF879966ADA59 +:1028C0005942ACA3A21F701D0D685712E4163DFCBF +:1028D0006EA9230528E777E8639C682F485AE373BD +:1028E000A29CFD5D7D7E0EDA31ACEBB6D07B069707 +:1028F000D219FE181298DCB0CF27FD68BF18AACFF6 +:10290000ED423E3F5CCBE290CCD7EF2232C8A1260D +:1029100028CBC0CFE68C1A33BF0F40E324BDF52C83 +:102920002E5F5CD2E9C07BF17F30CA66B47B3CEE9F +:10293000E0F7E62B4C5B715D957B0FCA3A9DCA6050 +:10294000F52B3318FFEF8D13793CF729135D16979C +:1029500041C2F515B81CC0FC3E02DE8F23E574BFF2 +:102960007C3F3AB6FE4BB81F53F7A5C9CDD840F906 +:10297000A23CB5F1DCF49F6297838FC42E8D627602 +:10298000F31BD0DA4F6FC50E323BF9EFCADE3121AF +:1029900011C58A06E2F5C3DB7B9B847E1EA741BC82 +:1029A00005FC7B78AE03798AE702394E47E325E3DD +:1029B0003B04222F04A8737A73E35209EF296D3B7D +:1029C0009506F3361EDCBC88DE0737781AD09F7672 +:1029D0002989C55F26C54B6D28F79EB86824E8EFA6 +:1029E00019589C4E717AC9928C9366C4DDBF32131C +:1029F000F4FF962C799DDE37F2FE2A9A961B619F92 +:102A0000DCB0580DF0F4601CD9807B3ECACB67A1C6 +:102A1000ECBD03FE7BCDBD84F923641DE279E55E48 +:102A2000D1B3A61A1AAF38BA85C886F974D153192A +:102A3000EEEFE34F6264ED2FD8D8D39D8ACF371DD8 +:102A4000CA39E11A2D8FDED81C85FB7FF0869EDA0D +:102A50002FCE25EB283F4D2CBDF394996E6639D5CA +:102A600047DB785CDE7589D1E1667D7FCB52F4FB74 +:102A7000FD0D8B97FAA877E1BF2CA79F657E9F235A +:102A8000C77375340F4EF9BA37ACD0EED837241D62 +:102A900076575D26344809182FCAE8B51BE347CDA1 +:102AA000182F2AF278513B8F1765F1A3BD183F6AA2 +:102AB000C67B424E5AEEC3F85133DE1372D1F28F09 +:102AC0006ACB68F9C7B5E5B47CA6762B7DBE5CEB16 +:102AD000A6CF9FD556D3FA7FA8ADA1E5FEDA7DB487 +:102AE0007C436274BCEA506933DA8B76C1F91D719C +:102AF0004DFEF30241FDB973A989E607D9693F602C +:102B0000C27D268551D44FBEFE82BB311BCBDDC2B8 +:102B1000422C8FFE9A9C41BFCECE2D7A1A875455F7 +:102B200068EAC2FB4183F70967D01E58D5FEC4FB93 +:102B300078FF88141AE8FBC4491CFBA0DC52B2C51C +:102B40008978ED9451D25B8B00579F7C784314AC0D +:102B500071AC89D42539A1EC207219D0EDC2E20FF5 +:102B600076BD08E5D733171F8D827E634B8A5FB130 +:102B7000D2F2480B96F3E257C6535F34196939070E +:102B8000CF23C2A0211EEB4F90E6E4D900137112AF +:102B9000CBB17C20A12E0FC74FA8DD212E6BA40541 +:102BA000E3A7E788175F4914F17BACFF42FB072BD3 +:102BB000D9F759799E947836C9AFDE5950B4CA0A0C +:102BC000E507C9E2A365D0B5CB5DF2461EB4FF4C64 +:102BD000A7AEB991047EEF9D9C6B0348FFA32D84A3 +:102BE000DE4FC470315C278B9CEFA91342F3FFD0FA +:102BF0003242EDA64AB9C558F308D2FB50347B2ABD +:102C0000BFE76531F92E6530BCD612CDFA1FFD9CA9 +:102C10008EDA5FB5FDEAB259FB9644D60FD0F717AE +:102C2000687CC6169B0EF5C73BE5953148BF751D00 +:102C3000393AD41F07D2199D5C2CCDCD34C1BEFFCB +:102C4000A4DE2CE179F872A9E031C2FE0E654B07D3 +:102C5000FCFD94771A65239ED7EF1404A70CBD8F53 +:102C6000BE473C46A08FCB9DC7EEC3DFC70C821387 +:102C7000C5D9B559D9B4DF251EFD9011E6B97E69D5 +:102C8000C91B0F407D71AF817EF7FB29F72F427F73 +:102C9000A9DCAC77821820FF9862A6F3FAFE697867 +:102CA00023DBCFCE591FDCCE199FC1F834E7E07784 +:102CB000A89DF34A9C8ECAFDA303696F4AC581761D +:102CC000CE8A1E66E7CC7228764EB101ED6F728314 +:102CD0005EA2F65683C7B409F4F790626FAAFF4E5E +:102CE00003FAAD86DAF3693CF9AE9E2E07EA19EFD6 +:102CF0002CF6DDBA7AC5DEE92C43BFF795430BAD60 +:102D000087FDF4AE779689DFAB9CA19DB39EDB6710 +:102D1000EA997D26B3C7DC4FE3D7881A9767D47347 +:102D2000BB5F383B675364F6272FF1D4D1F5A82257 +:102D3000543F446A87FA4B4E3FDA790EEDD942EDA3 +:102D40002DB34E08ECFCA59D67B8FC529DDC9ED9C6 +:102D500018DC0E3554C5F6B5AA9BD957B5F3DB3947 +:102D6000E16C401056D93ABD3D6A321F539C2EA8E3 +:102D70005DD398926C42DCD492ADE64BE5F952D625 +:102D80007FF91DB17CC9C4FD3A6F05E7D7AB9C6FD5 +:102D9000CC761DF1F8F56389ADA1E7C2783816CA83 +:102DA0007EFD454B3AE2F66BF736C78789F76D999A +:102DB000F69ECF41AE778FF07B1B4F73BDDB8C7AD5 +:102DC00017E8EE10EA5D78D6F17B1B47B9DE857E09 +:102DD0008F633CD24705D4FC432AE28803ED1CA054 +:102DE000F5903D48CA3D84CAA70459A0F1DA6ED1D6 +:102DF00025E379D494ACBE87145718A32A476524D9 +:102E0000A9CE8596E274557D4C5E8EAADE103747BA +:102E10005516572C509F2B498648EF2D11861B3F86 +:102E20005A5B7AB414FBAD131C887306B9DF5FC11B +:102E3000CF8372A4F83989E2E72199C93571C95A5B +:102E400007DE7BD5E2675F058B4BD6E2E71D994C29 +:102E5000AE9A33993CF822E2676906F8B9FA9836D7 +:102E60003FE62DE1677ACE858FD834F8598963B073 +:102E700069F0B34D8B9F7B013FCFBB25FC1C336BAF +:102E80001AFC3CB078CE45A49F2B6F1809E2CE9275 +:102E90002585144F8F5D54CABD27CD14379B6979A2 +:102EA000ECA70088A1FCD41C9307F7CF3BC0CABF96 +:102EB0006F30D3F261A374320ECAA3BF8AA77673B0 +:102EC0002DCE86DD36309CACDCD357E367057F43DF +:102ED0003B1DB7A7AB70B4829FB578E4A95C26EF21 +:102EE000E666E814B94FFD948711971487C625F755 +:102EF000E6B0F70E232EA1E7D0E971C9312E2FB429 +:102F0000B8C48BB8647E785CE2E3B8C4DB7A8CC664 +:102F10005F8D232E817E3F52704937E09279B71F33 +:102F200097FC71D60C714937C3256F6532FE0AC410 +:102F300025AD2A5C327CBAEB118C3BF5D55BA93F01 +:102F4000CC17211EF1FDD9E19199F9C35AF83A68DD +:102F5000E737D4B499E19036E1D670486B181C82FB +:102F60007E5EE87F8F27380EA99EF050BFD8AEBE98 +:102F700008F34286C12187B319FF609C4F851F5F0C +:102F8000FE3789F1E37F741CA2E451098747466646 +:102F9000313DF45F78637ABCF1360673A484C71DB3 +:102FA0006BD299BFCC4BC437912EBF348BDF4FE42B +:102FB000E570F9947E8AB1EDC89F7627BD97635579 +:102FC000DAAD35A8DA7D1F85DBA2C0FB784E1C2761 +:102FD000FC7EB9FC8403F95AB98FA76DB76A56F025 +:102FE0007603A7FF89DAABF24DFD2769FCE8A4BFA1 +:102FF000F99735C86F5716C5E950EF5EF980C5FDE2 +:10300000FEFE44940EED5C2663EB23587FB53B9F98 +:10301000C601F74DDA97D47EE8EED617DFAC857699 +:10302000439D02D5533BAE9BE9FD07537C9F251181 +:103030009E65B3D83A2BFEEAABBDCCBF3C70FA7E9E +:10304000EE0777513FB8765C5E1C17EA3D1C57715E +:10305000E0B886715C503EEDC8E6F25D3BAE4D34A3 +:10306000EFC5502F1BD7EEC971955B12D14FC4D756 +:103070005519D7703B1B9772DE09778FC99A1ED9F5 +:103080007D3A2BA733ED7D26459E85FBCE1DB3668D +:10309000765FEA4E4E07DA7B7BCF9934F61A2789A2 +:1030A0005ABA00F89FAFC33B398CEF460F98298E70 +:1030B000B14883E4F1C2A97C33831D2CDF8CE27715 +:1030C0000A2517B4F9660627F3CD3CA9CAD7FA60DA +:1030D00006CF7F33F9F7070EA8F2CD28F56321F26A +:1030E000CD6CCD98CC37B3356351E4F95CED7709FD +:1030F000AA7BB091E673BD365B98369FAB37C4FDB3 +:10310000FB36E142013E6FF7BD7A6F987BF58A1F6F +:10311000CEC71D23C73282DFAB57EED12793A268FB +:10312000C4F98FEE314A1E69EA5EBD36BF8C365F48 +:1031300042DC9F58FECA2B3CFF8136BF8C721F3F7A +:103140008594AF46BF7265398B0BBF12268FAB36A5 +:103150000F4230BFC4747F7720885F6246795C5B22 +:10316000B8FFE78873253D1F2AF97C02F38E653886 +:103170002E039D55CD65F92744BD783216198FE78A +:103180001D1BC2BC637E74FD528682D722CB3BF6E8 +:10319000D5B97ADEFED6F28A6D7F87E5AFB8DD79E4 +:1031A000C5DC21F38AB9E9BD3125AF985B6679C5E5 +:1031B000DEC850E7B1089957EC5B2CAFD8F08D25ED +:1031C00034AFD8E54F38AF98F63C5F9ECFF6E76F47 +:1031D000E7B0A722FFBC3D2C9FF5959E99C93FEF14 +:1031E000647E30753EEBDF73F93695CF7A65D07A21 +:1031F0005F08F9777D4AFE5DF7977F11F0892A1FF6 +:1032000053209FCC2C1F93C227CA3A8DDDE23A8D02 +:103210004DAE933A2FD92C7E3E9CCA4B9614B43EA9 +:10322000D4DFA9C9CC9C5CA7CCCC08F444A5C0E4ED +:10323000F6C373C2E88910F164CFCC16A6CD4B3625 +:103240001122CFEE27A52726C2E4CF55F4C455AEF0 +:1032500027B66686D513AF613CEB0ED41364E67ACD +:10326000C2C7F31C87D61335E7514F3CCAF5842FEC +:103270004C3E32622FA7F990153D11CCFE36AD9E23 +:1032800008B4BFCD484FFC3E5DD1139BA8DD633829 +:10329000647ECA99E9897D9933D313670A3F9E9E5C +:1032A000D8F509E989CA907AC2D3E09F7FB2B28982 +:1032B000E989673223CC3F7904F404DA076F7CCBC9 +:1032C00082787DFCDF584FFCA090EDCF03856A3DEE +:1032D000E16B67F26FB87D66F26F2A8FA41A27FF41 +:1032E0001D976F5338795BD0FA91107FF7E0EFA705 +:1032F000E4DFDFFBCBBF08F844AD2702F864667A51 +:1033000042E1130B8C517DEE98DE8F7C74E0F9F571 +:10331000188FE0E5F1F3753DB9F45E735DBD20E211 +:103320003ABF5C9F18347E5EB11B7AB9BD70521FE4 +:1033300038D87E5DE176C32BF5B9AAF8F94C470879 +:103340007B21091337AFB117868C9BAF0F1337FF63 +:1033500009D909931C21EC8463E29BB8BE21E3E602 +:10336000C3D90995B8F9107642905F41E3E6AB27DF +:103370005CD44F59D51BA17DB0477DFF22F0EFC62D +:103380002C68C17B3E434DB9D49E3DA98FB93D4CBD +:10339000F9BB317F9CD5DD2CA3BF2773D2AED3B24E +:1033A000FC13A0B35D61E86CD77F503AFB72183A0A +:1033B000DB13EAEF137D6C3AEB0B4A67BB153A0B54 +:1033C00073FFE7E3D2D9FE74359DC577A637E3FDD9 +:1033D000D3790E359D5980D69726517B4BFFBD285A +:1033E000F76C3A7A5F5C9187B9DF20D47EA7D85F0B +:1033F000A6E28FAD1694DB53F1C7A2C53F9FF57FC0 +:103400007708AAF8E321BBC8E38F6BA6CD87F94DF7 +:10341000BE5F53F1C7FD34EFDA44AF3A0FF9688865 +:103420003CE4EF70BB8852BEED79C8EB734B711C66 +:103430001F230FF9B71D8B42FF1D8057385E9FE990 +:10344000DF0150EEDD0CF37B37C3FCDECD6E7EEF8B +:1034500066F7F56FB17B37DDEA7B3743EDECDE8D48 +:10346000627F54EE6128F647A5DFABD82FB4BB8A44 +:10347000FD16FBDFE709D16F2FF42B4CD95B957E4E +:10348000157BAB258AE95DADBE55FCA1D1E9CCAE7B +:10349000ADD5BF551E22472700DF460972F47CE4F4 +:1034A00023661FBBDC457AACF0FB70B4409FAF676E +:1034B000327BE8E567CD34CE74B48B9C4984F683C7 +:1034C000D1C29944BFFAD1FD66CA1FBF491B699199 +:1034D000F380BE2A5C8BD0FF397E504FEF1B8C6788 +:1034E000035FE07EA6E8E87E7AA1FF5CE8A7E1CE74 +:1034F000BB1C437E74D47028DFE14539DE24F0FC28 +:10350000A0A2E9C1F8A9FAF7B97C9D94D35BB99F51 +:1035100010DAD138608348F3D17B39BF6C7EFAB1C1 +:10352000A7F0FE5EB48EB891BF5A395D6B9F29FB40 +:10353000FEF91EE447EBBED7E8BDFF942DE526F764 +:103540005C38AFB46FB4CBD0DFC13FE9297F6AE903 +:10355000ACB450CD2701744A369665A39C6964FECD +:10356000D583C9CFB8711F46EEA8B621BD0077D26A +:10357000F9B5CE6638DFFB974C0EECE5FEFE918187 +:103580009D8E28F4AB765458A3A1FD5EEEEFDFDEEE +:103590009FB61AF36B6EDFE25C8C7A6D6FF2CA71C4 +:1035A00003FEBED62954E2FB9A3880947D6FD2F98F +:1035B000217E9BFC1D3EF9721A9363D67DAFD379B1 +:1035C00007D893E322B3275F7C2F691DE65D413F57 +:1035D00032FA99B57CF93A3FF7646429F734D47F1D +:1035E0008F2275AD757DB144EF03CCE8EF51E44413 +:1035F00049BA9A381AC7CDE5AF48FF5EDEE8FB2C22 +:10360000AF8932EE9C289817AC634E1371D23C29D7 +:103610001A7E38155DC3F3DFC9AAFC77DBB3D8FE89 +:103620008E69F2DF0D1F57E7BF8BE576E8AC7CD6DD +:10363000DE57704195FF6E782E8B331916742CFF70 +:10364000DD7196FF6E58C97FD7A6CE7FA7E433F011 +:10365000C5B17BF3FF97E7BF1B99CC7FE7A17F57ED +:103660005119A75F1E3B9AFF2E9697B5F9EF68BFD9 +:1036700030AED81E81DECF899D7AEF5391FFEEB335 +:10368000F9BA4F45FEBB96D9A283C5AFB2F55E71BC +:10369000EDC22ADC8707F2B269DE9D7BAE5F3B8B11 +:1036A000E5B20C56BE7127DBF799E6B3DB10D76F96 +:1036B000A0E7759EF7C0D5EE7E660DB45F67D75361 +:1036C0007BD2EA2F6CA2F283DC1D4BE39103F32043 +:1036D000D4BCBB13FA1B2D32537E9D693E84FC0281 +:1036E000C697DAFC06DA3C066B0AD4E5FBA599E539 +:1036F00027B8DDF9ED7687CA4BD3FBF1F2D27CD245 +:10370000F9EDACDCEF3C682434BF95963E4E453372 +:10371000FA184D3316E37E9E2A723B36F9F1F9F51D +:103720002CB65F23894CBF4DCAA32E904794CF99E6 +:103730003C327079F4369747570BFA28DF13299BF0 +:10374000DEEB194ED4C8A32E9047D97EF2E807C10C +:10375000F3715EE5F2E808974763FC7E8B361FA79E +:103760009F5CF9B3CEC779F353228FB472A5D940C9 +:10377000FA71DF9B57081E99EA21755ECCF31DBFD5 +:10378000DB833F2B72E5FF0348B774EE0080000037 +:103790001F8B080000000000000BED7D0D5854D772 +:1037A000B9EEDAB3F70CC38FE306014111F7F0E786 +:1037B000A02083823F89D141390653D4D144435B51 +:1037C0009333A0222AC9C1137B624FF35C47458B18 +:1037D000147050927013CD1D08A6A487D38E27E9CC +:1037E00049DAE7A40F1AAF2739352D4D6ADAA73722 +:1037F0004F3BFC888ADE7B4DDA9E78EF31C7FB7D3C +:103800006BAD0D339B196640CCCFB9873ECD76EDBD +:10381000B5F6FAF9D6B7DEEFFDBEB5F69EEF9FBA64 +:1038200090E2C82164F5D77576770C5CCD8E485D43 +:103830003C2146C56A20F0D7F859CDE3F61CFC9729 +:10384000E4F41AF14A747716C37F15A21816119280 +:1038500048EFE015F22D84D808397BC74C48428EDA +:1038600000FF2164ED323DBD8F7F77E0FFA5497AEF +:10387000B51E9A7EE0A6E497BFE2967FDAA75D7256 +:10388000471C9DFEA464402069A1CB11A7ED520600 +:10389000747615A17D27EFEC87CC08487BCB4BC90C +:1038A0007C424A4873715C0121BBCA88D50DF96B13 +:1038B0008853C2F4D62DC4DA0D8F6CED8C26C4B7B4 +:1038C0005F31FA01ACDF0823BEC3DA1F18EE37B44C +:1038D00097B8451AF01D2774800A2B89DD22A91F8D +:1038E000ADB9464C841CBE2DDA8A41DECEBDC47D06 +:1038F0001A4496EA5B0FC831A9B8EE6311CACD2A03 +:10390000D1F546403F93F6FAE4E3FC146C2C31C346 +:10391000F30F36880B7098C614BD5FBBAFCC804ADE +:103920000B79A3305FD17CBEC8B6D93AECCFB7785B +:10393000D9E8F895D72413E64BA4CFA77D82691F59 +:10394000391E7E867413EC6F8740FB1B754B24DD9C +:10395000D346D777B8FBEB4623C8AFA2AE7C5A2438 +:10396000941B8A2775621EA4BBB38FA07E5558ACEA +:10397000AB23B1F65B42C0E7CF76A61B0428F789DC +:103980004C56C13491FE652E07C1FA328CE420F406 +:10399000ABA8CEDC5C0CE9CA1ED18AF951B70C0188 +:1039A000EBA9ECD863507209D9717283C101573AFF +:1039B0005571D8AE44CBDFC1BF1584D4EF27A44FD7 +:1039C0004F48ED7EE772498FE93A7ADD2EDB570BDF +:1039D000D08E144F141DE8855E867C1FF96FCFB121 +:1039E0001FD1417EB485E5475BE0391FF9A7D519A2 +:1039F000880DDAB984AB690621D75FDCD4E8847519 +:103A0000F6CA4D42A6A21C93F4548EED918EFA6C28 +:103A1000A8E74AB2BEA01DEA69CF77A46ECC19E927 +:103A2000DFEB0A9BC7C15852E681FB8BDF86C9805A +:103A3000F2038D73DA0F0AD8DABFDFB903E396F029 +:103A4000DF90D53E8795BF61E931609A2866931D66 +:103A5000C63F106B2873C3F30382CE86CF3B1B2374 +:103A6000DAB07D48131C87F38CD87EDA4C46ADEF74 +:103A70001BD0E7A990FF3FEBC5762794EF17A01F57 +:103A800070AF4F761BAC3EFD7C820CAF5F11F547EB +:103A9000C5058990EE3B02938B94C8EB4D876BA7CD +:103AA000608B9C3F524ED53B8B5BF2C389799DFE68 +:103AB000B890EBF14FE7BDE99FCEEFF64F2F7CC7F3 +:103AC0003F5DD8E39F5EFC5BFFF42FE6E8D8BA7158 +:103AD000925F236ECC265426F07FAF609F02698EE2 +:103AE0001BA975626F04AC9BD467B4EBDD1F0FE0BC +:103AF0002F06D79FC2EB59EAF52FAF201ECCC72C5B +:103B00009FFB380F35FEFADC0882C4796BB40A6E6D +:103B100027E4DB5A1CC7D7801EAD4D12AD02D4FB83 +:103B20007D8EE789ADB02E178ECCCB64E3FB37B921 +:103B30007EADE5CF89300ABC3FD9F89E4A9463C573 +:103B4000E6D0E582E1BB8AB32ABE57727C2F519A38 +:103B50002594E3F43A814C338FD8818AD66804F5F2 +:103B600091FEDD25CE3F58F07E51B16EFCB8AEC55A +:103B7000F1B835C553715E551C197CF1238A234772 +:103B800000B7DC7308899CA1D0F950F1CDABF7B632 +:103B9000EAA07F26ECFB02ECB697AE6FEF5262AD67 +:103BA000378F9437D5196C386EF5B9F5D836BB76A2 +:103BB000E3F53706DB9442D0972BF5A2B51DF2D67C +:103BC0006FC957509E69A80A50EFFAD2AF95E0F33B +:103BD00003F653A21EAA8CB2F454A17D585210458C +:103BE0004468A783D4A421FE2C233D22AEF704B35E +:103BF00099F282E5E4264DFFF621903794DF5A6B67 +:103C00006E8BA0F32C1B707D6D85FA115F88241BD1 +:103C1000CAA6D0FE3859FFBCABBE8DD71462DB8478 +:103C2000EDD76E7808FBB3FE9127E8FCAD5FA22CC0 +:103C3000A0D792EFD905B896970A19240FD36764D5 +:103C400076FFAC8CE55F88895B9D04F2B8B6CC68E2 +:103C500045DC5E5FF22B9A5F5E024008E5AF6D8B3C +:103C6000A7F9CE2551D64CC8AF2E15B2F07E658986 +:103C70002091A958BE9796DF592AA429B4FE8F69CE +:103C8000BD6B65C745284E4AD7BC2CE1BAB9B4799B +:103C9000E6EA2418DFD5A5510B44C8D8966DA67264 +:103CA0008F7AADAD3319CAEDEC68532A62FCF4D9B2 +:103CB000706726613A98487193AEBF2811B44326C5 +:103CC000E43BD9C4560CCA15A573D3F49E57DB5CEC +:103CD000B550D1541DE45B09993B17F297603ED370 +:103CE00093C3D9F226D493269E262473932D06F3EC +:103CF00059F926D78C67CF2F1D29BFEC07964D4E5B +:103D0000D0B3A94B891DED8CC4D73D3CE2A4F80D7E +:103D1000CFF8F288EA6C039DCF68E8AF2B8EDEB750 +:103D20004D817989868E272EA0F79D5317D0FBDD14 +:103D300031FCAAC76B12E94E84F22487D51F459C3B +:103D4000EE3BD8078BA311F5B4F6B028D7637B36CA +:103D500017B55BC4E136A15E1C3BBBB311F571D056 +:103D6000265923419E530F6F5D87EB983C2BC899D2 +:103D7000507EBBD7BE3A19D2D527050F76B157AAC8 +:103D800031CC84F2D71B8A142794572C9954FE5BAC +:103D9000BD0EFA5CF549315E80E7AA8D8EC6FB2028 +:103DA000BDFE98100F2B985C6FD960B2D179A959DC +:103DB000B714EE5F7F16FA03A9412294A05CB662A5 +:103DC00016D44B5AB8BD84AA25940BF6191647741D +:103DD0008360CBC6F56D613C7828C5916A87FAA2ED +:103DE0005BDF785A80FB97F109D42F3BE37DF40F1A +:103DF0009E8FC77FC3BA886F11E9F3DF32339CAD62 +:103E0000F6B2F25B5B0537528168BB16471DAB4DBE +:103E1000D09FA153027901C6B9B5215F40BC18D229 +:103E2000BB53656877C8CC78C3681C759922E0B924 +:103E30005DADB166C48567CCCCEE5536E4BF5700A6 +:103E4000F7ABF712AB02F5ED3A29D0F67735086EED +:103E50001BFCF3AA20AF5B82FD4FD65B4F432DD1F5 +:103E600036C98976B0178112F5BD416843FB745D90 +:103E700070AE5B8A3C275722A7193C9ECF58C4449A +:103E80004745D82074E33A8A47FC35D171F9E1DE21 +:103E90002C0D6E126E47A95D827EED28F5C7CD44CC +:103EA0006E47133576F462ED21712694EF34A7D175 +:103EB000F9D8D529C422EF5EEA12E9BA6C8A754CAA +:103EC000413ED974343DEE10A44DD36AFE06E7CBD3 +:103ED00090FCEB1AECECBF14E4E84418B7415F53D4 +:103EE0008169C3298B0E79D00B0647CB06C4C7174F +:103EF00074141FA153DF42FD5C7D789AAE1EEB3532 +:103F0000CBA64B8CD7C5617EFF1AE1880C7851E6B1 +:103F100068FE8B4428679362F3B1FDF72C4CEEFDED +:103F20007A6525E5D7478915F50A7AEBAC82759253 +:103F300056623E88E332DD57B6C606F9699B7504C2 +:103F4000FBB39EE37BC6948D3A944996BE6606EA1F +:103F50004FB785E14CDA470FBE83FAD628D9CBCAD2 +:103F600091372C9B67C575B031ADA612C737F38961 +:103F7000F3B10F627D4733F2194DF1E701C3FC2025 +:103F8000041FD89DC5F4BCAA54982BC0F83E38C86D +:103F9000F8696F91E06E877CBB5B708AF3F1615BBF +:103FA0006139EA47DBF4385C4F5AFFD0EEFE6E0F02 +:103FB000DAC55E41A1FCDEF9AE683DAD8CE6159038 +:103FC000A347F955B96317A09C89C5A79E00FE6059 +:103FD000B5BB57A07865D3D613825768D39C0F8E94 +:103FE000D78FACE67E64F55DFA912A9FD1F289AB5A +:103FF000E05FA1DC45E3DBCB0780F79D75BF1DB318 +:1040000010DAFDE4A4648D807E1C1260FE51AF0EB8 +:10401000475079AABC50BD3EC7FD9E56EEF774646A +:10402000B2F9EC7D00FC3DA8A70A7007FD8C22F7D1 +:10403000067B11A477D70AB4DEDDADCDD4BFEAD7B5 +:10404000BB56CFC0F93A2578709DEFEEFEF6053DE0 +:10405000E2CA16A2204EEF2A731B0C909FE8205450 +:10406000CF766D730915A057D3CBFCFDA96487BF2C +:10407000FFD4140BFA1733BABF6F66B2F5D2640ED1 +:104080009CFFF35C969F5EA723369FFA325D51C476 +:10409000E6D3DE9CD638BF74B67B865FF9799D691E +:1040A0007EF9B99EB97EF9796F2EF04BE777DFE79D +:1040B000577EE13B2BFDD2853D0FF9955FFCDB8DF3 +:1040C0007EE9A5DE6FF895BFFF6A855FFE0337774F +:1040D000F9E5AFB8F5D77EE922F21DBFF25ADEA8A6 +:1040E000FA9F77C1F3DE4633DD88F541F9C6E33A3E +:1040F00037E2E01C5D37E5731BD318BF7B80784542 +:10410000C20085965B512BB4A13D57F95E65ADE0C9 +:1041100046BE5739593C0F79D9183CEFB225CA8AA7 +:10412000FDD6F2BCCB4178DE56E48D3E3C6FFB38C9 +:1041300079DE966C2687A8D73EF626417A7BCBF8A7 +:1041400078DEBAF92A8F633CAF6CFE8AE6DAA523E3 +:104150003CAF67BECA0359BAB06BC9F3E79347D205 +:10416000C767953DEFCBEBDE98FFD4A3E3E1752B5A +:1041700072BE64BCAE746C5E97A8F2BAD2CF87D719 +:104180004DB3305E36515EE749E3BCAE948C93D7B5 +:10419000F51A26C2EBDE48D3D1F9FCCAF0BA37F5DE +:1041A000E3E275FD6981795D3DF23A48D723AF239B +:1041B00093C7EBEA91D7C587E675177299DC278B11 +:1041C000D7FD2497E1CA08AF23DD2B18AFA3383CF5 +:1041D000D9BC6E15E70195C8EBA606E075ADC0EB3E +:1041E0004CF830E37583FF3508AF6B055E373F7CD5 +:1041F0005E57D91A26AF6BEDA5F1FF2F8AD755214F +:10420000AF837455E7DDC58D82F1BA39F9E9C7226C +:10421000D246789DCA6F0EF1F8AB96B7FD6386C0A3 +:10422000FD083BE569CEC3029533B90DCFC13C57BC +:10423000139F3F4857E1D507A776092C3DDD532E44 +:10424000CC88477E46A8DD4CEE3C40D3C90E85EABB +:104250007528DE561FCBF44BCBCBC40CB61EEACD73 +:1042600081F3FF85E7FF276F0B1CEF6B8F64726B89 +:10427000CFB7A56EF4E1BD6FA6B3791F88657AA1AB +:10428000EE0F0CBE3AA7FD20C557B63FA0DA212796 +:10429000B75F57707F201DE5A798E240F4831BD8D5 +:1042A000FEC020EE0F205EBDCAF60706717F00D368 +:1042B000A7C02E621D1ADCB812C3F633D4FD81A14B +:1042C000E1FD018FC1EAD3CF71EF0F7409B648D376 +:1042D000976F7FA0CBC2F4F48BDE1FA8CF9653510B +:1042E0001F7A2399BC97DDEC5985F3F0508699EE3F +:1042F000072EBF75F36D4C97A4B0F4BC6C36EFDAA3 +:104300007D05ED7E54A3C4F6A31A93F4054E56A47E +:104310003812F24B0B04197159DD5FB878AAB261FB +:104320008D32F9FB0BEFF3B859A8FD853516FFF474 +:1043300083CAF8ECC064EF1F3B34F6A19CDB8772A4 +:10434000E7E4EE2BA8F66256F1DE625CFA77BBBFBB +:10435000903553667A219154D4DF3EA23465A33E52 +:10436000B4EA08B51FC49E8A7C5D5DC7EBD3D9FC57 +:1043700074105B14EA89B343A47C518BE76DDC1E97 +:10438000A59D7ED9A4205FAD134B105F8E9DCD5EA1 +:1043900087BCBCDFB552C27DE07E7480309ED351B5 +:1043A000D471001EF9CB0C3D7DEE92C11D4DE30A88 +:1043B0003F1015AC7F88301EEAEC10283FEFEF7CF1 +:1043C000D9948678757ACFE3B8A5A1F0F6FA3A5970 +:1043D0003B44529AEE435E727AE134D45BB55FE6B9 +:1043E0000C9196BB46DC4D4B7C787E2AFE2B8D0CC7 +:1043F000F3D95944FD1BD607E10ECC7B4AA7E8440C +:10440000B9A6768A74FF72566B04E5BBA9BE7A63BF +:10441000A6E5E8FA9FC579F04CE23E5B80F7F7FA33 +:10442000CFEF4C172B37A35A3BEF0C1764AE77D75F +:1044300040D5709DDF7FD5BF9CCCF141D6E0C32332 +:104440005C1EDAF10DB99E7A1CEDC3CC464121E623 +:1044500000E3EBE0E3EB60E3D38E6B16E7F7508EFF +:10446000F65B3B9EA1AB84DA9F4A0FF36BB4E3AAE1 +:10447000BEE1394272307EE4AF87DAFEF7D5BD6C1B +:104480007250FC50A8BFD85157DC847AE374890479 +:104490003C3E725F27B373F7B9746DD8CEFDC47319 +:1044A00008FDA23E7CE43E3AAEE3B61CE41B84DA8F +:1044B000D187D3B71F77A6A0FEBDBA0EF5A2DFA5A0 +:1044C00023A87F7D9D0BA9DFD8D721C80294FD6961 +:1044D00047B3C916809FA8F2EFEF3841F54EBDFFF4 +:1044E0002497F35007E81DEA79C74253BA8FDDFBE2 +:1044F0002BAE6FFDC4D5749F1040DF34F227B5A0FA +:104500007F8923FA17723EB87EA9F371B77AD63F36 +:104510004E3DDB9CC1F0403BAE6B575D26F413ABC8 +:10452000AB2566DBB47AD6C0C7D510645C128B535A +:1045300041B9807A069E34DD2FD48E67F70D07D5FA +:10454000AF4A8FBF1F39BADF84CECBD967BF9FEA8E +:1045500085F2730CEE97D0FFD8F1BB48D20E431210 +:104560005E5A92EAC5F9FED8315BF699CFE99966B1 +:104570003E5E97494741B9C7A45B02834F860E2F21 +:10458000467FB287FA97D70B6208F5976F3F5D4178 +:10459000D7C34923C1386AE5AD47E9FA232D110491 +:1045A00071ACC355D183E96B5DA280FBA653321475 +:1045B000DA2FB5BDEB5D5B655C070F8AB63732124B +:1045C00046F37B119A5D82719771F27CD17881FA02 +:1045D00015A1F8FED7D2597F42F1FE50BCE295D624 +:1045E000F74B709CAB0B57523F571DDFBD3EAF9052 +:1045F0009C19787FE2CA04F727AE8C737F22D439E6 +:1046000088C9DB9F088FA76CD7F0940ACE532A5A2B +:10461000EE0D4F99AC73107F863EE23CFE5D06E3E3 +:104620002BEE24B6DEE2F44A2C3D2F5627D2F5D6E7 +:1046300057F7F05407C6F9F87AD88E1588A3F1FC1D +:10464000B9FDE07844F8ACEB16C1E60E80FBEFF163 +:10465000FDAD3FBFF347CE1757D075B4938F33B13D +:10466000E3572594BF14E88802ED4F279E2332DDDF +:10467000DFD0916EDF78DEED3BF4B96A239B9FE9D2 +:10468000C47E8CF20F2789294AE4B8097F7D9EA752 +:1046900062D1FEA4725C27FBA43E948B11FE87F3CB +:1046A000B0DBADEFF395D37422F5F9CA7536C7E9DF +:1046B000D978DF07EF7E8FB892302297613F8BB0B9 +:1046C0007EFE3B8E57F091672D93676FADBF3C77B1 +:1046D000F0E742CAF324C833C0FECCF52C662FB5F0 +:1046E000F2AC54E5D9CAE292BB6DC01FA83C61BDD3 +:1046F000613CF31D91EA6918725D1F48AEBD9E0FC3 +:10470000E83C4D2F047FD61C5CBEBBBAF47DBE7A5C +:10471000A7C6BF82C9598D830DC7C7BE4D28AE68D5 +:10472000E5AF95BB366EA69D87E071B46EBABFE764 +:104730003C254D4A1CADB2F5AC01E7F73F4A1C8D54 +:10474000EC53A6222FD0E2CD701C8AC7D3B4F1B3AC +:104750004368178137FE63C7A96627B3B7A7330B32 +:10476000C3DF0755ED70A8FD50D5EE06DB178D4F62 +:1047700053E83A0D656F43F9694969E1F9699BB3FB +:1047800026E6A7C567E969FDE3F5D32E717B1CCA50 +:104790004FFB30F3FF0F3F2D92CB5FF59B76373009 +:1047A000DCD38E77C8B5F002EE07CD3C23B0B6B4AB +:1047B000E3D5F80957F45603EE078C1A2FF7138642 +:1047C000FD38CD3847F96B5DF7D84F73FE9EFA6917 +:1047D0004D66964E69BFFC9C73D9E4FB69E9DC8E9B +:1047E00007F3D332B244B65FF31FD44F8BCE1ADB3C +:1047F0004FDB8D7E9A1240AFEEDA4F7318502FB414 +:10480000E3A9BCD17D0437A143E9577416E17EDAF0 +:104810003F733FAD3B2C3FEDFF6685E7A70DA19FA2 +:1048200086716BF4D3B0DE93EC3D831DE8A7D1FD18 +:10483000608D9FD6097E1A943F8787061246DA1B41 +:10484000EA647EDABDE64F1F05E1A35F56FEA4FAD7 +:104850005D41F913F7BF26CA9F547F2D247F1A3E6E +:104860005F161E7F0AF77C596FC205031EAFFDAAB3 +:104870009D2F53CF8D05E35167DDE95371BD4D94F5 +:10488000477564EA288F22B7EED0FDA75D5881C82E +:10489000DEFB70C770A5023947C8323D1F74ABF705 +:1048A0008AFB10A4A5B8441A77C8CAE4FB2C058279 +:1048B00084931EC91F51DB4FD639B2909F49B293E2 +:1048C00030FB6323C8FBB2D0E8148EB4BB536DB782 +:1048D00023BC76F765F1F73F82B7BB2F2B6174BB22 +:1048E000FB10A71226DEAE3D3364BBF6CC00EDDA3A +:1048F0003359BB8E2C7FBF78743CC6511B8BBCCC0C +:1049000043280F24377B783C4647EA697CE69C3491 +:104910000DCF39BC6BB3A23AAA7199C265BF3A17E1 +:10492000AB605CE6A0148778F81362C5269F535CE1 +:10493000541F8DFFE4B0127F7D0F1897B15AF257C4 +:104940004D837A4AC9CDF3542EC43F4E6331369F0E +:1049500043DB36573EB33216AEF9394587F0B5AE74 +:1049600045B63DABB0D90BAD7BCF831B46569BBD47 +:1049700087F07D24A3926FC575B2E64F6E69AA8257 +:10498000EFC3D4FC6E27145C6B8DB0A20A1E8EFFA1 +:104990002407E5D4F819A1F1DF399673C730FE4B2F +:1049A00088F7FD79F07C6A974010377ED875C08013 +:1049B000F1C2BC36B301ED91A76E0F4D5B4FE5D34D +:1049C000747EE3067A7DADA5885E018744E21367B5 +:1049D0005BD8DC46EFCB9D6D869918E7EB1214F49B +:1049E0000B2ABBF62C5C06FDA970410A3A24D7417C +:1049F0001AFD88AE0805CFBF0D086986196C5F9552 +:104A00009EA3B97252245320FF4C9DE8C63347A998 +:104A1000D0D7650BD8FB5951F4FC08DB7F4DCD2076 +:104A200012DEA71207E1A28C100F7DECB20EF16F1F +:104A30005A1DB3D7A494C9D948EA0EE079ACF1EE77 +:104A4000875E1774747F31D4BEE8E6D95C7F09C3F2 +:104A5000CB28A320607B45C49F2F6C9ECDF4558E40 +:104A60009653F1FDB1B387A73FBE0FC67DA328863D +:104A7000BECF77E327FE765C7B457C66F6BC5B8F1A +:104A8000F6BC716514C59BBE93DFD8E49442C7831E +:104A90002AF9BA0C697F5B03C783244BE0F8C5365B +:104AA00042759E24BACCD4DEEE067B8B7CAA51AA3A +:104AB00011E87B5B1E81B8CCC1EDEFCE5071A18EA9 +:104AC000B1E342D51ABB1B6E5C28543CE85EBFE7DD +:104AD00035D1B826AC63017965B8EF770DE0641481 +:104AE0008ED8B751EF7BA9B800FC09EDFE0F5B191A +:104AF0001EE41DDD40F1C0D3B287A6ADA7185EE469 +:104B0000B79D61B8D05544D3A371A199E142473311 +:104B1000C5855D0D800B04AF0C07B4B850D9398C36 +:104B20000B47F0BCA3F35991FAF5975B26860BD39C +:104B3000B99E6B71613AE202EACF16767FA2B83075 +:104B400084B890131A173A146EC743E042078C9545 +:104B5000E1079F87063E0F0D6D0C9F5F2D67F8CC18 +:104B6000E7C57A94E172FEB30CAF5F3B7926F03C67 +:104B7000FC3D9B1FD95544E7A1AA81E1735503C3AE +:104B8000E74A0F9F87D63603FA1137848A23349E6B +:104B90007194E1F2E2B7D39BF05CE4D07FD7790E59 +:104BA000621F7B147A6E559D871B380F05C1E7E1A4 +:104BB00049FC47007C7E52C5E737F57785CFE1CECB +:104BC000C3D530F1F92AC76795C76CE57A94D81038 +:104BD0001E8FA99A1392C754CD09C063AAE6B07676 +:104BE0007F9026B3F625C61FD473C9B50FFCA9075D +:104BF00089C0E55A91DAFDCB2D0FD3B891DC28C8D6 +:104C0000D86E1BC6CD0AF11CABE771E61FD8E93C94 +:104C1000FD957962F5559A15FA9CB6BE50FEDDDD1C +:104C2000DA973396C0FE5D15FE13BA94E866F66512 +:104C30002BDA1742D7B90DF7A3B6EF25EEEE31EC1C +:104C4000CB363EC741FD3BD707940F86F2EFB63710 +:104C50004C6CFF21A49D09F1BD88BB3DEF73F7FBB0 +:104C600067DCAFDE47DC6E01FD2FC67F7796B1F8BB +:104C7000F5CEAEF1C5AFA72B7B8A51ADC2DD47D3D0 +:104C8000FA61C3FB667C1F2DD4FED9B4196C1D7864 +:104C9000F5849E1F1FC6590FC759CF0166EF86794D +:104CA000B0C070F68040A6A0BE81FDC1F322F98D90 +:104CB000CCAEBDD6C1F1B381E1A78ABBDB79BFFB26 +:104CC0008505279229BF15A81D934FEEA1E7F8B7D8 +:104CD00075313B08576ABFAAEBC476E263D7FA8501 +:104CE000BFA6F53A9F8D50104F650FC36515572F1E +:104CF0000BE7183EB7317CA692F5B17757DDD3A20A +:104D0000F17B0FF7CAEE85C2D9CEF4F0EC5D274EE9 +:104D1000BE8F9F3A5EFFB8C01212670B2C0170B6AF +:104D200000FBEA13B7DA98D643E33A3B16E9683C4E +:104D30006DBCFBEB2F569F8B9C133F72DE5CF5B76F +:104D400076675D76611CB79C287119667C9F8BF035 +:104D500073391F1DB7A58C8EF786C2558A7FE1C4B3 +:104D6000CDDC81E3666BB303F3F6917D5CF65D9178 +:104D70001D9CB7ABB8BA0D7155088EABBB43E06A4A +:104D8000A324FF02E3E18D5B24FABE4A305CDD76AA +:104D9000F21EE12AB9B7E728270B571D88ABE611A9 +:104DA0005C2D2F6371ADF19E9FFCBC71557B7E72B3 +:104DB000B2E22EB929BD3A3CD6B3FAEBC78B69DC17 +:104DC000E52D42DF537B4E71D7D2B84BB783F296B5 +:104DD00050EB7561C15929D0BA0D166F295C562E5A +:104DE000C643BD8B8BCB1BD6A03EDC76D6627C65E2 +:104DF000B5B967158DBB64E4D378CFB29BEC5CF09A +:104E00004305C097C8C8F747D4F5FFBE65A899C643 +:104E10005B38BE513E8EF8E6090FDFFE101ADFFE4A +:104E20001008DFFEC0F1CDB48ABDEF538EEFEF4D19 +:104E300025E46189144B71187F62D727395FA40F6D +:104E4000C2B82E5892DAF0AC60792D7B5F2FD4F384 +:104E5000F9E6B19FD7BE3FB716CB2730FE89EFC921 +:104E6000A9EFD18D7A1F0F14F4E0A291F702D57C3F +:104E70000321CD98BF89D7F32194D363BCBC43747D +:104E80001FA0CFD99270FCE1D607FF7461FE669F28 +:104E9000FAA4F891FA6A93DD26BD18A03E287E3068 +:104EA00031607D6ECCFF10F225DF7E29D0AF5C6CC7 +:104EB00087F3F03237DD27FC69324F136B217D1FFA +:104EC00090E39883EBC96C67601CCF9EC5F5621FA9 +:104ED000ACB34523EB8C6A76220F0DE0BA985E9353 +:104EE000E41B47FA6FDC4E689F8B200D749D4710C2 +:104EF0006910C7815DC671CC966E0AF8BCF20CE0F1 +:104F0000A92F8E885BA85D0A169FDAF7D181DAF3A4 +:104F10003E78F1A3EC29F18338E9392487E2217F37 +:104F20005E5D17C1ECDAA7FB9DB5E7F5849C48B13F +:104F30004F1D2B1EF6128E6BCE483A95DB3F559EC9 +:104F4000439AFA55F9CDEE14E83A6D7DB5A509E31B +:104F5000664F26D9CEE37EE4933112DDC703BFF45A +:104F6000E630CEF9E0AC0E2484E3281EF51E9FF651 +:104F7000BD064DDA2629F2227E1411E6474F6A68F3 +:104F8000BF0E55118791FA575BE4C179345F7707FB +:104F9000AEEFAFAC7912D71F911413F2824B1FA65C +:104FA000EB1027D4711C9827F8F198735C0E7D32B2 +:104FB00093D74A499102C96D9551F4B3E37DC6B1C7 +:104FC000E53B5C2F2FB7B236BD18E30987252B8D43 +:104FD00033396304F2632178FD876356FEAFECC278 +:104FE00091F779CEBDBAFE98D3677E76F3F999DD55 +:104FF00015D81FDC96C2F9E45744DFA7CC057D9F86 +:10500000175CDF553B3069FAEE617253E5D9ABA905 +:105010005F95DFEC5A81F2CD7FCD5E40F57D14AE19 +:10502000011C1D098CBB34BF295B61B8233BA6E082 +:1050300077E186DF67B6BB4C017137487D3ACC37E4 +:1050400007A887BF173D8C93256EBF7AE1EE01B5A7 +:105050005E5DE07A29FE66CD25B49FE3ED8F159F56 +:105060004B18B99FA8F693F8F339550EBD65274C38 +:10507000068A0BFE76274E6D4FF3DCC2B9ECB95AA7 +:10508000416E2A348F965BB0E7D669FA650AD22F53 +:10509000D58E61BF248CEF08EE2611D65554FEEB59 +:1050A0002605F4E37A0A3B2F01FDA5FCBC43E0CBC7 +:1050B00088F3F8C148B68E6AE6B1F7DF67233E4150 +:1050C000BD275A456B37CCD3EC4B22FD5E5486CAC4 +:1050D000DF5D8C9FDB380F4DB04B7EF1F708CED7EC +:1050E000E3C9597915C60D3CA2D54D46F377753DF8 +:1050F000DEB81D41BFD335546CA0E7CC2234E51295 +:1051000048B78CF9E5003B18E719F2BE7181FAC186 +:105110007642F7B1B5EB9024C9F4BB04CD9B642B68 +:10512000FAF74ECDBA6C4E067E8DBCF4123B1716C4 +:10513000951FFFF56DB89F6E8BA2FB67EA7AA2F808 +:1051400002726C167A2C781D5EA7A51BC7C4057564 +:105150009DBA81EFE3B57DBF4CF1A8637F124DBFCF +:10516000B25FA1D7CEFD167AFDC17E2BCDEFDABF9F +:1051700084A64FA478CE615CF5CF8F907CF49BAE73 +:10518000A6B80F46B1F1E673BF3FA608D73BE724A8 +:10519000EA3CF671A258362B91EA5B84C61FFA26C8 +:1051A0009FD778927F14E3BA3BAAF50ACE4B39F722 +:1051B00047482DDB470936AF319FB1791AC07932A4 +:1051C000637D9AF9E4F39E406A2E60BC63BB9DF94F +:1051D0003103DE7F96E97B94307FA7CDA3E7B76CE0 +:1051E00016F72392ECAB937DE6ADBE20AD19ED5FD3 +:1051F0007F8B48F0BB06975B1E1E53EEBFD3E06368 +:105200007F153BEF14952F99327CECCBBB73D9F90A +:105210003D6F959EE67FCF5A61CA88199D3F58CD54 +:10522000CEE969DBF9F95C89E6BF176DFFF95CE847 +:10523000F7379FF89611FBD5CCDFFF441C8FF3D9CD +:10524000FFAF14981E5DD4D8ED51781E242E7A92AB +:105250003FD79C6C7D372380DEDE40BD5546EB6D2D +:10526000A3CE6D5A254CBE3ECEED24D47F892F4E61 +:1052700074E379A01B882F39A3F552AB7FB7520C8A +:105280006C9EB9BE56701D50F552D543558F1E7B8E +:10529000C4ABC7EFEB9DA87B2D01F7FFB4FA097AE9 +:1052A0004CCFA76E7B5DA0F8F2D83EFF3882563F08 +:1052B000876E3F4AF7238700008F07D0C366B3B2DB +:1052C0000E3FD5D71B5F2CE077EA86BCCFB3F3AC9B +:1052D0008F70FF55C3E362CCC4660439C40846FA34 +:1052E0001D8243558CD7E9896DDDFD50CF133FD624 +:1052F0003B517FAF151BDAF0FD164976D3F3C6C0DC +:1053000020E541CB08DF0BA6CF88FC833E3CB209E9 +:105310003B95103EAE7B83E1BA7372707D67DDD83A +:10532000B8DE87B88E7E15C78B60B8BE0B711DFACC +:10533000DE8BF28E1F0BD7DD4766F8E0C3FDF3FC72 +:10534000FD8B60B81E6C7D7CD1B87E03713D3E3410 +:10535000AE5FE1B87E222524AEBF8BDF77D98EB851 +:10536000AE8C1FD755FB1B1CD7D9F768B6725C1FD4 +:10537000425C2F088EEB2752545CB75EF0B5C71124 +:10538000C6E8DA8169E02F974D33A1BCBFAB67B89F +:10539000F9A12C9BE27CE4BF8FE3DE77A7B0EFBDE1 +:1053A000F426C9A67CB89AA2597C82E06B5B209255 +:1053B000ED5C3EEA73CFA5B2E7A6A612D283B82170 +:1053C000D94CE8B71C4C65FC72A0259DA6C1BFFA5C +:1053D00005E2C1A50F45E2EB5F69AFC37E500CF05B +:1053E00073786E15F83F61F9575298FE953461FF56 +:1053F000EA857909C1FD2BF5BCE5EC9381EDCA6F17 +:10540000E67EB5E2093F99F7C5C613AED33E8F9647 +:105410001FF8AFD4BF6AFFBBDDCF3A331077F65227 +:105420007CBE12029FFB393E77E66AF0B96172F0EA +:10543000B9224CDE7D3D043EABBCFBBA77CE91A4D5 +:1054400031F1D99F77FFEF30F13918EF56F98B3AE8 +:105450007FCD82FD97B89FF279E17328DE9DF088B9 +:105460004DC0F75B1EDB97BF10D5F116E273C26823 +:105470007C56E7DB6164CF69F9CEA7E81F268CCCA8 +:10548000DF0927F09D98D0E7B9D4F3095A398CDAAF +:10549000176A08BCFE2BE60B21F685D8FB7DDBF1F5 +:1054A000FD3EE17378BFAF6562E7B8621445E595EC +:1054B00063EE0769E3D275FC7D236D5C7A5AA9D34C +:1054C000E0C07319EEF254275C6FA4B2FA073FDB19 +:1054D0009A8ADFF7772618A8BD23B71F4EDA306502 +:1054E000C44FB906F324F8CC53303DD5FA29D786FA +:1054F000FD94023F3FE5F11CF63D88FE613FA5DDCE +:10550000CF4F51F38782F8298E1C89E6839FE2C82A +:105510004908EDA7ECE27ECACCDC107E4A67607DCC +:10552000BA9EC3F429989F3210629DDF6B3F65607D +:10553000188FC7F653DE9AE5EFA7EC08D74F393935 +:10554000B69F525125D0737AE1FA2983DC4F89AF97 +:105550008B4DD6A58DC6E7DEF8478AF0FCFDA0F797 +:10556000D11233EA651D7B2F3BB49F626B5A04D77F +:105570005D720D7D0FE61B3BFDFD1442EC84EE4B8E +:105580004CD04FF957EC143DE7EA61E75CFFFE8D24 +:10559000DFFF6DC1DD9F73FDFEACCCCD4E1AC47331 +:1055A00025F2F75A04CC57ED6B011F6F449540620A +:1055B0007C70A440E5C13D92DFBCFC99DCD6B1FD16 +:1055C0004181EAC9AE1476BE657A99BF5DCD7B870D +:1055D000BDDFA3DACDBC20FC583B3FF45C069E1F28 +:1055E0002988A1FBE85A7BD9A0307FA6A18CD0EFF7 +:1055F000136F6DD823E0FAFC30C73F5EF517620CDD +:10560000E5039FFC9AFDEE879CDE6D44BF4AFE9E3B +:1056100028E37CF6DD7EDEE4FB3D58D55EFE10D649 +:105620009394498807D613BE9FF00FB09E30FD3A81 +:10563000AC27FADD34584F787D13D6135E7F0AEB22 +:1056400009F3FF09D613A67FB6DF46D3DDFB4B680F +:10565000FA9A37827D4FDDB97933DAA751F3E2FB4D +:105660001D06DCC7F204DEC7AACEF96AF14E63EE6E +:10567000D8BCB39CE398B69E09F3CEDAB179A72AD9 +:105680003F95777E9CB3E839943FC6B9F03D56EF1D +:10569000703CE68BE19D3B5C22C5B960BC7380C762 +:1056A0000542F1CEED3C2E70DDFBF485E43179A7A7 +:1056B0007FDC70796E78BCB3F74BCA3B7BC7C93BC4 +:1056C000DF9A3536EFAC0A62BF1A72147FDEE966E4 +:1056D000F62B5CFFBC3A373CFFBC32A47F5EE3E7AD +:1056E0009F5F69E5FEF93DC2F9CA7B84F38EA0385D +:1056F000EF3892EC83F30E27C3F913B961E2FCF3A0 +:1057000080F3D0CEE5DB8B4DBEDF8FBC5738DFAFEB +:10571000E23CE97CD817E7D5F74CC2D50F4F2EE312 +:1057200083A1F4A33AA47E38FDF4E3AA87E9875A5B +:10573000FE5E9DE35B75FA203DC7A39EE3AB8F251C +:10574000DCFE09C76DCB467F5FEBCBFA1DA067B8C7 +:105750009FF79FDF010AFC1DA06DFC3B1CDBEED117 +:10576000778026EDF7EEBAD8F79DEFFDEFDD797E75 +:1057700021D2737B82827EEEE7F57B77451E81FE28 +:10578000CEDEB616F69DFC6D2DCDC3BF7F17690E1C +:10579000FE7B77716B32685CEA4F1D8207D5804EC5 +:1057A00055DCC87A0AF777EF76CAAE317FF76E67B5 +:1057B0008E6B42BF7B37DE7369CDFC7C5ED8E7D24F +:1057C000429C9B73F13847B07373DAF869A29B9FD0 +:1057D0002BC1BF31CE29A6A93C3EF839C5B49C00E7 +:1057E000E714F1DB14BEE71A86C7A14CEC7C5D73AD +:1057F0001ADF67E0E7EBEEF577B17E335F18E77706 +:10580000B11C4790FF87718E3A70DCACEBA958B49D +:10581000C3C1E26695EE89C5CDFE90AB8415371BFA +:10582000EF79A1BF9DAF84755E28DC733D5D689BF9 +:105830002670AE27D839A3617DD19C330A76EE4716 +:105840001DCF78CFFD74CF67EB2ED8B99F70C7F10D +:10585000161FFF44DF97383A3FE43A3D3A3FC03ADB +:105860003D3ADF7F9D061BE77B9A72C1CE29A9B81E +:10587000A63DA7F469A4693EFEEE8818432CB8BE85 +:1058800093489415E350FB8CECFED351A676BC7E76 +:105890001A99EAC6CA9F161D0E1CFFA73A8F11F768 +:1058A000EBDF5BECF80CFB1F1D7BDE8ECD1E4EBCD0 +:1058B000CF82EB7DCBBEEFD88B8157C9D3C85F06B3 +:1058C000FABD9C2D3AE240DE6ACC63EBF9237DF70A +:1058D000AC5818BFB064A531AF3040F97DFF85D614 +:1058E000B75C24359E00B8309BD7F3A28E5461BDBF +:1058F0008F3EF10FD75E81F14429390B506C5196E0 +:105900009ED285302F75BF4CA7DFA59E9EC7ED7632 +:1059100012294079EF2F7024FAB66B5464899D17D1 +:10592000F02CC5FCE5FF9673E697505FDDD762E883 +:105930007B7AB674EBFA85C2E87E403DB3B11EE3D4 +:10594000ADFA8F91D7A9F5FC2CD2FB22FDCD13E740 +:105950001F1FFD2DD8829FC57A670A909EF3A30F63 +:105960001E8D5F0AE904EF4CCC3F4F3AE8EFA8FCEC +:105970000C6C22F2FEEABC8EE7D18E2D7FE8C6CBFE +:10598000C7A0FF24CB40BF837094C791D5761BF38B +:10599000443AFE463E2E550E17ABC796C3622E37CD +:1059A0001F392C0E2487134B6C4BF03E74928EBB28 +:1059B0006E3FB16F833EDAA67B2217C2C4272B9EAF +:1059C000578F413533329C9404403D362607C6AF8D +:1059D000D47A8616DB8AF0FEC5EAF74BF17B289174 +:1059E00017D9EF881A338833DA449F7B302F61E46C +:1059F000B92285EC15D246E6614721D3F738D403A6 +:105A0000A8EF90C195B401AE72C6734FC950FE881D +:105A1000D95D1648DF6C56B60EC18DA0BFFF532B63 +:105A2000B71B2B7CCA5572B9ED5D64DB84FD33086E +:105A3000C48EE5EA973079992E4E5B40E36219A453 +:105A40006023E0D8B7ADAC3CF4F7315A7EA98B8225 +:105A50004A64061B677DCE7182F1A0C8A41676CD7C +:105A6000F0D2F51D493C469CE75DD6D79EAF4DC2AE +:105A70007158E9EFE71CF6AC6C9560DEDBF0E50BE6 +:105A8000E02FFB218DEF27BD04C08E3CD939C3E048 +:105A90003E1D200EB2DDCAE66F6D816D4721CA251D +:105AA000C2FBF231287F34DB40FDDDE53A57590572 +:105AB000EACD4331D45F80FB65BE76F5053EEE1737 +:105AC000F2D8B9ABA3FFC748F3B5720D579F0E8C40 +:105AD0005E5707F21202EAD341BC3F4A9FA606D5A1 +:105AE000A7FA20FAB4A3B070442FD4AB9464A07E7C +:105AF0009574EB480FBB1A7BE973462BAD4F2A61B7 +:105B00007106F156142D27DE6AA0FE9524D7D079B0 +:105B1000025CCECDA3EB4227214F50715B8CB1D1FB +:105B2000FCDCBC30DBC93812AA9DBD63B5B397B7A6 +:105B3000B3FCA11807DA9BE5889B3EF3B7D2CACE27 +:105B4000C3C55BD979E360FAFF3721F4FF31EBB0CD +:105B5000FEFF18FB134AFF9BB8DEC1BCBC45CB0758 +:105B6000D5FF0E7A8DB230FD8FE2FAFF9895384B53 +:105B700092B0BF4CDF2FFEE8FE56F4E3D5F5F0A25D +:105B800067ADDF7A688134AE8760E37B9A8FDF840C +:105B9000E38376DE2B109DE807FD91E4B6A3BF6F8B +:105BA0005A224BF89DC30FF2D47EDBDECFA37E9B3F +:105BB00097DADB3672F36C04AEB365028D534E7127 +:105BC0007A6C461C2F7111DC67FC1F5CAF5FD23111 +:105BD0007BEFCC22743D12C945501EDA751A99D15B +:105BE0005DE0F099A7DD5CBEA7ADF63E94D74B3AD9 +:105BF000390AF99E3A1FDAF1ACE0F29DB798ADEBA5 +:105C000050F81F6165F81FC1DB89FB37634DA07534 +:105C1000BCFCC99F5E7B658C7AF4BCDDDB7CBC2A56 +:105C20004E47A9386D19C6E9DB14A7ABEB559C7E2E +:105C30001D711AD6F56701EDC43458D790FE7FAFB9 +:105C400086736100800000001F8B080000000000C8 +:105C5000000BC57D0B7C54D5D1F8B97BF71936C93B +:105C6000E64596F70612091260936C5E10E086878F +:105C7000C696C7A2A28104B20141C008415157A5EE +:105C80001F37E641D0F01951FBD1D28F6E102D7D18 +:105C9000E807CAD7A29FB58B6045050D9F8A88AFDC +:105CA000285A5FB45290BA6D6DFDCFCCB927BBF7BF +:105CB000260BA1B6FF0F7E3A9C7BCE3D67CE9C990A +:105CC000393373E69E1DE4D9FDD37B196383B35545 +:105CD000C64632B6C117B0788B18B347DAFE28270C +:105CE00001F4B8CC0127639F9528D717C1F3EBE1E6 +:105CF0003F96C198D96D55E5F10023AD5D1CDADF03 +:105D0000A7F6762FF563AE6CA7F7E54802B59323A7 +:105D1000ED5D5836BB1A58208FB141A6C0EF274021 +:105D20003FCC6D32B362C61C8CFF919D0AD5FF7EBD +:105D3000021F67CA774E3D746F3AFCFB12AB370700 +:105D4000C0268955ED067CBEC13F5319F37B65C65D +:105D50008A104AD43EF5AFF68610BCDF64ED70CFF2 +:105D60008376AEECEFDFEC8271A7AC7EEAD347CE50 +:105D7000D34F01BE0FFD8CD1E0E1FAFF9D55E863E2 +:105D80002CE1B0EC953C30AF5CA60E4822FA8CF1C9 +:105D9000C238F6FABB697E151EB65782F9DE5FAAD5 +:105DA0005C8ACF8730EFDC42E8A26D03F35F676166 +:105DB0004C49DBEDC0F2A0DE742EA07E7AD3B91080 +:105DC0009F8BF11D62FCEC9EF1CB687D0CE3DB71D7 +:105DD000DC2CAA9F1CDB2FD47F2999802E36181C1F +:105DE000FA4B5D93146A94A2EB38DB07EB9AF14F00 +:105DF0005DD739885FBC759D02B8B0898CFD624261 +:105E0000C25635EF9F32DE60EF79F868B097CF6BFE +:105E1000BB15E60EF357075B430F6745D75DC035EB +:105E20001AFF003D9622FEAD59B858B00EFF3569F5 +:105E3000AB3A94B14EC62A915F66FB02AB683CD682 +:105E40007D05037EDA7E47AA7437B41DAA84A59423 +:105E5000BC281DBB2778088AF7862ABCFDD060AA1B +:105E6000A44ABAFED69DAF3F231E80DF6D88DFC3F4 +:105E70005E652ABE3715E707E5549935607F4D26E4 +:105E8000B60261676A68851F608BD744F52D1A5F7B +:105E90008BF2EF8B1515FB017E69C27ECEFAE4759D +:105EA00026A0775229E743C087F913195BA5F56F40 +:105EB000F28758373C4F28654A08E0119FAC9A009A +:105EC000DFB36CD1C3B2C4DF5BE6C4F6669AF706F3 +:105ED0009FD28EFD377B5D5416FDC5C3739B86D75D +:105EE000360DCF6D513C1FF4527F81ADE7C3D348CF +:105EF000A7FEE27B68420FBE3B886FE3F427D60B18 +:105F0000DF6583E0793397CF39874715A07C3EAAB8 +:105F1000E1BDC1E7FF05F653512AED45FE050D949D +:105F200080FD6DB3C27C613DB7D56FA9B0021E9DE7 +:105F3000EB5DF932716AA811CBDB9A5CF977433FCC +:105F4000BFD2F8D0C89F3DEF5B778F29CC237AFC76 +:105F50000F8E33B5BC6B5621BC9F0C7A027BAB60B5 +:105F600020EF32CABBEAF602BE6D92EA5E827C7F07 +:105F700085D3FB3036705E4DF81BFB1790B1BB68C4 +:105F80001E62BECCE9BB40FB466AEF1AA036F82F72 +:105F9000A6BD4DADC2F6513AA6E5231DE7944A2AA7 +:105FA000EAA90A36AC1369FD16F2015F9F63B43E9D +:105FB0004E986C5994AEBDFB57A97D85BF4142BA3E +:105FC0003A72612878EAF0C373A09BC9D3C1BA01C1 +:105FD0002664035FE4617FAF517F513C0A0BF57883 +:105FE0004C7E08F188F6DF2AF0F984E4B69FF87C4D +:105FF000E5481ACF92190BDA39BC2D216907C2AFD7 +:106000001CC3430CF4D99192C0399C9F3A8DEB6923 +:10601000F5DDC45013F21A6B98E01F8730CC50BFE7 +:106020004DD5F4DB54BB93F421FBDA7CAADBCE9F85 +:106030007D03FC26013B0F49C5528DEB7763A1CC54 +:10604000BAA56F06F46B7C4B7E46FCF16B8277FA47 +:106050006714C22CD358ADDFD97B9E352616407EFF +:1060600071E573FE7DDB121E86FA4B2A9DE6CA2F70 +:10607000EAA37DF0DFA8BF24D6ADCA3E241FF33EBD +:10608000EC417C01FF022E8757C2B843F2B91E00D3 +:106090005495DD7D8C3B245FD2F1EBB52DD3D848F0 +:1060A00080363B531353394C2E2079F1E4533BBED9 +:1060B0004F56B8D8DE7453743E627EA2DF715ABF69 +:1060C0003DF85A617E79382F56B5C7C9E757108316 +:1060D0008FBBB4625CEC3CC5FC8CF81EDA10F4CFCC +:1060E00000BB202D389D9D4C63ECD90D012A239EC9 +:1060F0008E025A3FD502D0CCBA16DF04289C6481A8 +:1061000032EC372DB7E3BA2D40A7B4BD0E2F701473 +:10611000EBB28F6AF702EBADD9277B6D9EFEF3C71A +:10612000C5F285911FF627DE3A01F55AD3CCFCAAB9 +:1061300074D438EA91AAC3A5503EE23DEE84F2BC85 +:106140003D47AADC20FF4D47BD5519A0FA9BF6FC40 +:106150007C6B3BC847D3BCFCADD83EED7F7EE69E52 +:1061600089E50512D90137427B15F783FD7A7B2C2F +:106170002A3F2DC44F474AFCDF2F407933073CC8E4 +:106180008F4D15529CF65C7F0541E4B3D1DE8B98B0 +:10619000B8DE3B089A7120D0451808CD1544AF975A +:1061A00035DA34291FBC2441FBFDE5368F2D8BE405 +:1061B000E1A67CDAB75C8727C0F32DD34CA6BBA140 +:1061C000746072663BEADB8E692609E9DE349BE384 +:1061D0006149EF96EB9CBDF13852A21CC37E9A1622 +:1061E00041BBBCF8F842BB27707E36587F670187F9 +:1061F000C8BF169067592B6B7C7C7B3ED927922FAA +:106200007D14E167467A18F94BF0D50B396F0C47CE +:106210003B08F8A811DF33F2CD1597BC7909DF47A9 +:10622000F57CD18B7EBDE875C689FBEB2BA5B2430F +:1062300072F6A62FD0EF5E1CEF95AF395D3B4A4753 +:106240007B18D0F540996D4C37ED5FFEFBB01EDE3C +:10625000F225CAFDC2FF071787BFF77800F1FFDA02 +:10626000AA5BFF3971D65F4EFCD28978E17C709FC2 +:1062700000FC1FC1759387750F45FD20F0EEAF1E22 +:10628000DCA3E98F183DB827BF8F7D5DE80958D79B +:10629000BDF9DCBEF9720DB2B98BDB37F1F4D3FE78 +:1062A0007CBD9DD00FFDB43F76FC0BE9A73EE8FF17 +:1062B000C2C5D01FD435D1DBA2911B8A1E1794A76B +:1062C000E0BFE13DD893BB6DA3A2FC2D455838310A +:1062D00089F3B91DF8BE353FDF6E957BF7DB5FFABA +:1062E000BFDF9BFEEF9F8FFE33E5534DC9A0E7CE86 +:1062F000944B342F2502A893BE04D72A06EF29F623 +:1063000076F2539241E7997335BD0AFFA528766668 +:10631000B647CB69952E5D39C3EFD6B5CFACF2E861 +:10632000EA07057275F543567875E5610DA5BAF66D +:1063300023828AAE9CA556EADA8F6AF3EBCA391D2E +:1063400055BAF6A3B70674F563422B74F563773537 +:10635000E8CAE3760775ED27EC5375F5F9E1365D8C +:106360007DE1A10E5DB9A86BABAE7DC9F190AEBE6B +:10637000AC7B97AE7ED227BB75E5C9A7F7E9DA4FAC +:106380006166B59B97A56F60A9CF008349B07EFE7B +:106390007CC9ABC23A81D9D5950DF27D15137F4CDE +:1063A0001EB3584793EE7DF60DE8A5ABBAEB66E158 +:1063B0007EC766593EC4E72AFCC5FD12A8F8616C89 +:1063C000BB29A06F25808AD7127D8EF8BC7DC5A71A +:1063D0006C3CF5FB61CF7E8B76061B99EC01BCA66D +:1063E0001C925908CAB32EC057BDE7C5BC619CD7E3 +:1063F000EB32EDFB4C55BAB207C6CE4BBAA87929A1 +:10640000F097DB01A7CDB8AF4F2995D80FA53EE691 +:10641000A9CD07EC6033CA7FAFF932EE971BE71BBB +:106420007CBBB1F9604CBB390589E9BF437DE065B0 +:10643000DE6F64943327CDE7CC6BA03F587C3A5491 +:10644000A8D029E8990A450A21DDBEDAA0361FB492 +:10645000F4410F378BF209CCCBE1D1CBE1805CBDAD +:106460001C267ADDE7E5A35EF455D945D1D7037F35 +:10647000118FB9D800F09C1B61A170567CFACE3503 +:106480005BA2F4BB08BADE8E741D1BA5EB39563E29 +:10649000B7D0C3FD3FB40B8C7A4ED00FFC960D687D +:1064A00067C4DB57DA0B2E7A5F692FF876FBCA03D5 +:1064B000F87E7FF795FEEAFFCE825E7E4867417FD9 +:1064C000FC10D0FFE887887D09FE2818374A725FE4 +:1064D00012BA1BBA7CB480FBA3F1FC9147B571A33F +:1064E000FEC81973AC3FA2D83213B4F85F1BC65371 +:1064F000857F52519E3F17D0606DE8E316F57F9E71 +:10650000CF14F4DAE79E2938CF3EF74C238F173C9F +:106510007344F6EE80A19E4B97C31930BF2D6C5C7F +:1065200008FDDC2926BEDE9501C6E5CF7CDF2E7492 +:10653000CA00DF4348BF4A4F85B4D289CFD7128CF7 +:10654000C747AF5F3C1FBDFE2DF9E89D828BB04F62 +:106550002ED6EFF9CAD4703C00B0A985FB291B37B1 +:1065600031B2E73736F2F2DFB4F99ED2E08F0B3961 +:106570009F542495921DDA22256AFACEEFFE37A4A5 +:10658000ABDBCA30DE03743D8BF33E38A83819ED1F +:10659000CBB3875F750662FC84B7B5F91ED3E6FB03 +:1065A000CE2D3DF3FD2BC94DD5D2CD4531F35D74D4 +:1065B000AB98EF5017E95DD417A01FACAEDD144FB8 +:1065C000BD4C76D2BC9AB359C846FEBD326BE6408C +:1065D00054C25CFF3279D621DC47CFE599990C7A19 +:1065E000C78EFA0DFD488FF903D4476DF097F42C50 +:1065F000EA2FA093C50DCF63F49203F517B41FC023 +:10660000787BA1BF447B078B69DF875E4B2FD4F477 +:106610009A956572BDB6BE6D2CE2C502EE583FC7B5 +:10662000A8D744F960F7A8CCEE3EE445C0E4527B1D +:1066300053768CBE4D515CBA725AA5BB293B069F5E +:106640000CBF47579F5995ABAB1F14F0EACA43568E +:1066500094EADA0F6B5074E511C14A5DFB2CD5AF9B +:106660002B8F6AABD2B5CFE908E8EA476F5DA1ABE3 +:106670001F136AD095C7EE0AEADA8FDBADEAEA1F8C +:10668000C37F0C86FFD43D0B14A0D363A0E7D00FCB +:106690009FF6C4630B30CED9FAFEB56E8671E38CDB +:1066A0006BECB17C6884073338BFC6AB17721AAF86 +:1066B000BE52D35F26BBBF320BF8D7EE1A5920C3A8 +:1066C0003A3FB66F9A6B09F4BBB090CB114BD7C76A +:1066D000F5C5FB834C81858545D17300B46C30FED4 +:1066E0005609F39908FAF40ACFEDFE1931F36E1C3E +:1066F000BA642BF2FD46903BE4FB8D8CCF5BD061FE +:10670000A399D3A5870E5243DB5829965E2F2F50AD +:10671000F2A2F45AF1C44B0BD472A4D7E56EF4176D +:106720000FA6003DCEC37746BD7570C30AFF8C1C13 +:10673000C67EBBA181CA87B4F3A84A4D4F8AF71E13 +:10674000D4F48880E8FF17623CE4B0FC658066D72B +:106750007FFFBFF03CFBEC7D852E7E3E20A9D90C4F +:10676000EC874A4BA892E2B99A1F6796382D5B32A4 +:106770002EF32E81E7F716F27D87B13BA8FE164176 +:10678000EB38F33783408763F4819435BF0AF7977A +:10679000CA0C580F28574ACCDFD77EDA54C8E37F9B +:1067A000FD5F4FBE4E623DC53A19F5A11DE705D00C +:1067B000ECD4CE9FA2E7498F205FB1A1C07703A39D +:1067C0007C27F84BC4738DFD05B101DA0F4E7EBEF8 +:1067D000440A15EDDC43A33AEF96E2D365E306974E +:1067E0006246BBD6E54976211F4A7C5F01C3CE7D58 +:1067F00065E2BFBE9D283316223A1BDB07F19F18C6 +:1068000047713B695E48568CEF833ECE9D07F5AFDE +:106810006BEB33B94879B190A0FF30F219B307722E +:10682000915E507E99E8E9EA297751D90D658C6B24 +:10683000BB5C143F8F471F416F78EF8D421EFF13E3 +:10684000FDBC49FD38793F507E8BEAD37BCAEF50BF +:1068500079286FDFDF717AE6DB25871E8675FBD22C +:10686000AC24A7023DAE092E257B64417025C1B63C +:106870000DAE8A0F817E2736F89B9B015EB3A0D0B8 +:10688000E5017A2F58B694A0E8B71AF91ADEB76670 +:1068900099FD78DE206799FC3B49AEF839882C8554 +:1068A000347A3653792110783DD889D52BE635379F +:1068B000C7F0BB03F11B85FE8DF92FB1FEC27049F5 +:1068C000F97361CCB9C8C5CF0F7411F0E997CEEC5C +:1068D000908A7CCBA6B9FA3AC710F38CD7BF9867D9 +:1068E000EF71F93C05BDC4F34DD9052EAEB743BADF +:1068F00038BB2367860BF551B5A4E19968E7F2A48C +:10690000B55B08E33C8EEF99BD1EE4CF859ADE109F +:10691000E7720B81F3D6A746C71D2EF947F8327AE6 +:10692000D3B3BFF44A8731BA70BDCC1D747EF480F6 +:106930005394A11EA03F9B9F27393CBC5EE0911958 +:1069400008313C7F1AE0632E7C64C276682F0FE822 +:10695000524CF9A0EF7CD90BDD63A03E3BE03679C9 +:10696000A97CC29C81E7A35076E1F8D9270E96A3B3 +:106970001FE1BA54827ABBD973E2D06446AE26EDE9 +:1069800047CC7302F55C674F998519ECFB9D093D77 +:1069900065C50EBE71E7C89EB28AE5EDDAF97BA542 +:1069A000CF73A299C761A7FB907FECE159B9E9E8E1 +:1069B0009F482EB44BFB7BAED55F3A76E63D7E68B2 +:1069C00024DAD36EB337C7837624D3BDB7C667A5A1 +:1069D00076AF1605E6233E89EB4F93DB7E4F5E6A6A +:1069E00022F243741D428675E074F7E786B473BDE6 +:1069F00010ADCB08F7976A058C37A29C9BB5CC935A +:106A00004AEBD2E95E47E7829D79DABAE482570F12 +:106A1000E504403313ED7BED9C75402E3F3776D96E +:106A2000B87FB3C2C7F7DFDB7CB206F9FE97EC7E16 +:106A300080A1BC3B2A4DD43E5983D1F973B9BECD58 +:106A400067D6F64B4E8FFB4B0337FB62FCC4C3CDBE +:106A500026DA2F3A9B47764A12AE836B462EC01F2A +:106A60006B7924B04E57225D0E7BD312027CDDEE93 +:106A7000E873DDB4795E68DDE2AD97F033E2D55FAF +:106A8000B340F687C86E0B3C381FC6BD715F5A3ED7 +:106A9000DA6DC7AA645F179457FF3A93CEB5B7680B +:106AA000F45A633A3D10F7D94DCE2D7E84B67D8DD4 +:106AB000CA101411934787C79AA72B68FFBD6B4074 +:106AC0005239AEB7118F635FBF91EE87FAD97FB6A7 +:106AD00091BC63A005E332B5B48834ADD7306EB352 +:106AE00058B3537EE9E3F6E36B1BAAA89FC5C28F98 +:106AF00001C1D5F4A7F40D3864B5D132D9252CC81D +:106B0000E33176F88B7ECE3133980630AF63AA44FA +:106B1000F1A63AF33C2B8E57A7EAE3364BFCF997E4 +:106B2000A1382C6DD33F5FA6F93DCB0CF19F6BAB29 +:106B3000EA7AEC99B32CAADF9859B198800F0E5FCE +:106B40002931B41BE6FB17F867C4D8F36FFC4DAED0 +:106B5000453A1CC37711AF9AD13B309FC4480FA967 +:106B600088F3E76B1BFC6467F6D08764E1C274E8C6 +:106B7000A1D7FF113D2E9367111D96CE93C8BE334A +:106B8000D241F8AD623EFF2BE6C9BCC706007E27A6 +:106B9000DB2D443F169E4AE73C73F8ABB1F322FF6E +:106BA000D4057F793CD4D39206E32D0362A21C5D09 +:106BB000A55A747EED32CDAF5DC2FCC96189E6F5A0 +:106BC000419C79E9FC5B23DEC679CED6F60BA31F88 +:106BD000CCCCE13CB463FEE4D3E2A7E3799CEFAC18 +:106BE000EFAAE430AE1F2A8F3EF4AED11F167C55BB +:106BF0001B9CA7B39F2516E829BBC0AEB8C92D7B47 +:106C00003E4CC37882E54164C379F66E33C5A9E58D +:106C10009A6494C779CCEE7142FB3B61B1314E3A34 +:106C20004771789C31F89EE9902A516FDE04DD05AA +:106C3000296EA6905F50ABD1FD26B795FAAF65EAF5 +:106C40007EA423F0DB97B1FC168F0E038B7AE63F10 +:106C5000FE62E67F3FDAE23CCE19C678C669C91EFD +:106C6000DA2145E354F04FD50AAA726C5196A697E3 +:106C700015FD79156B207BBF1F71ABB1457DC4AD90 +:106C8000C479BCE0CFC5766758E67C77AA873F74A5 +:106C9000E7F1018671A9D6C1ABBC48EFD6041E97B7 +:106CA00012FB24D8B325182F6C4DE0F129A1E71D64 +:106CB000B8BE32E6B9805D1843B75EFBF4C1EB762F +:106CC00075825C049C667637B5CA25FC022E81DF8E +:106CD000690BF6531BB49C89ED2790085A05E6BF53 +:106CE000C4CDF3095A074F745199713F9BA9D03E07 +:106CF00026FE1EC065C4E7768FAE7F6C4F76595B6B +:106D00004CFF23098D630AE0D57A9785F0328EDF38 +:106D10006BFF328C67ECAF55CB2B9313AF5B41FE0F +:106D2000977BB08B6CB25CEEAF2C2C32E9F69D25D4 +:106D3000F634C59C162D7F30C85915BB7F0B28DE55 +:106D400013F48CDA69619D9D764FCB53270E0D8B22 +:106D5000B1D3D4A74E607CE11FB5D3D4FF7EEA4403 +:106D600033D9390DEF7D0FE3B42FCA4427913F6229 +:106D700006B3223995FC3215A13D3884E623F2484A +:106D8000D23C5E09D7ABADC8C3F33B3DFC9C35CDCF +:106D9000EC95BCF07C8B66EFD01FCC7348757562A8 +:106DA000FEA1CDCE9A1DA9F81E9FB718AFA7DF5C34 +:106DB000AFE4CA8B1FFF7DA0E8A2F3671E28EA2379 +:106DC0007FE6B089CF5B8579635C7E91FB767A6ED6 +:106DD000F4C7B66BE39D6481EDD84F57D5AB8B6E8E +:106DE000C338C75E1BC55DFF50F5EAF2FFF0207D9A +:106DF00060BDF1FD05F7CF2F4E47BBC44C7660DB7D +:106E0000301E7F911B25B22F3679AC957B017E50C9 +:106E1000587118FB63951E13F2F39904CECF1F141B +:106E2000CEA0E75FBDB3D1BD04ED477702E5DFC972 +:106E30008D59F7629E217B01F06528AF8CF6EB56E9 +:106E40002B87CF14F17CC36734BAFEB288FBCF6DB9 +:106E500096406E431EE6ED023631FC6837AB0CFD02 +:106E6000787BC44CCF6549223FAB3521907B4B0CDE +:106E7000FD44BFF6080871615FEF5BE939CE8BDE38 +:106E80004FE5F88876CF1771FBF4790D1F7B64000E +:106E90008DD79A0A783963FB49E2CF353933CA492D +:106EA00041D1F497501F7E50A81C2E2279E9B6A03C +:106EB0001E5DEC3E745C4AEA8F1EE4F1F9C4AFA596 +:106EC000F008CCBFAE904377013F2648AED93ED400 +:106ED000E91516CAE7E8CA4D4FC47395A366572251 +:106EE000FAE7EF14717BCF3F53263FDB5F61217ED2 +:106EF0003E9A7BDD2332B709EDB1FB51AD5D0D69E3 +:106F0000FB50D40EE2ED3CE662AD1DE0553B43562E +:106F10001C49BDEDA3A379A9B37DD0BFBA5E267F7E +:106F2000A676A67C0C8F0CC0DC3F186B8782BA3823 +:106F300088E7D0EF6AC56EE6B24E97A276486D50EC +:106F40006F1F31F45E8AD18EE07F7AD9553EEF6FA4 +:106F5000D33C488FDD95448F712617D2A3BF761698 +:106F600063F7119D06CC7CC2857ED2ABA817D0DF1B +:106F70009AF1AA427ED4CCB366A25BB9C45200CFC8 +:106F8000F6A0892930CE669F2584E7DE9B73BB5F20 +:106F9000988AF2E8337BC82FCFEDBA7A3AD51791A9 +:106FA000FFF10A0E5146EDF9F989D319CAC1FDBDA9 +:106FB000E875FBD2187ED9ECFB600CEE73DB353E36 +:106FC0000235E89C591CA51BD2C7434A94FBF10724 +:106FD000EF48A0F57CAF5DD6CE2DC010013A27BAA0 +:106FE000B93CCED4CE35963E2885309EB8B4E8580C +:106FF000850DDA2F6D91482E6BD7CBEFDB38BD7541 +:10700000765BA0C14FF6449D6AB0E7347B0F3AB778 +:1070100022FFF6D7DE33DA2FE38BB5F38C0256105E +:107020006BBFC4F3AF84FDE204AA17C3BC9798F901 +:1070300039232BBF8AE83A533EF5C25498D719DF5B +:10704000C89148879F6871D8CDC113765CCFCD5F5A +:10705000CB24DFCCDCBD12E925DF39310DF5F9FE9B +:107060003B2ECD3C09F597175BA9FD7693E73FCA08 +:10707000917F5FB4905E8D878F3D28B36C9077478A +:10708000502228D62331E860E6183D9388E7A130E6 +:107090006E86EFB4343246AFCC2FE67299B29EFBC7 +:1070A000D3193EA678D04FCC1EB903FD5CD89028EA +:1070B000CFD691E52940FE11ED079978DEB87946E3 +:1070C000833AC483E726328DE7013C707FCB0A0EFA +:1070D000A0F2C8601AC151C11482D9C121549F13B2 +:1070E0001C45F09260163D1F1D1C4BE5DC6021C164 +:1070F00031C17C82970627111C0BFB1BB6CB0B56AC +:10710000101C17FC2E3D1F1FBC8AE084E03C82DE71 +:107110006035D5E70797122C08D6D1F3C2E00D549D +:10712000F6056FA67251702DC1E2E09D044B824DB1 +:10713000044B838DD4AE2C780F952706EF27382982 +:10714000781FC1F2E036AA1776C6CBF84FB0F3E647 +:10715000A42C71F1BC11AF17FD82ED71F4EF03C5E2 +:107160005C7F9B8B95F5C519D176B296776F6CD7FE +:1071700051CCF7A114ED3CDB640FDB47915F3F8AF4 +:10718000CE63B683FC63FECAEA9C913B508FDEA3BC +:10719000AD8FC3A22A43B2A27E7CCA0CFEBDC5EA53 +:1071A0007D6BF9794C695ABFE2427716F3F7B79BCA +:1071B0005586FBE6F60646F93B8EEC2E09F543674D +:1071C0009EA912F5F93D7967F6A33CCF2E52300205 +:1071D000036593C94E7AAAC287781E28B6D07C5E12 +:1071E0002D52B6E1BC47F832BE7315D48F6836B95C +:1071F000A09AA5F82C14E749816151AF89B84B6773 +:10720000827E1F7C5AA30B68EA07F0FDED83B30B67 +:10721000B8BDCCBFCF90EF1C497EE5766B5832A34A +:107220007E0387E761A1EBB17DEB924750DE46B666 +:10723000799F45FC46A8DE42C4F7E9621EDFCAEA30 +:10724000F04C730042A3B62ACFE2D9424E28302D2B +:1072500001CAA377A9CF221CB33B346D00C0B1FB98 +:10726000C2CFA2DB332EDC3DCD09E50987D801541E +:1072700003F95D9EE989502E3CAE1CC0B076517773 +:10728000607A12AE9335D49404F86C7F97791BA181 +:107290005C765A3D40EA535B871E3EB0B106B4BFF0 +:1072A000EC9E0E05E93D749D8BE237C0095C2F987A +:1072B000BB1D29145784F9E2FC60FD51CF0F554ED8 +:1072C00013FD87FA5801909075360BFA67119F7C71 +:1072D000ACF105D0FF25A47F6782AB02E352A7671C +:1072E00032D70EA89F338EC7B7AC2D23691F11FC70 +:1072F00006741D332F3196FE5C9F6D37D8A5F1E8DB +:10730000FAB1A6CFFE7FD3D548CFDB343E36D25577 +:10731000D0338CF328BBB0FC46A2F2FB65ACFC1A60 +:10732000DB0D2BE17432D2B9D3C40EC15E13F3BDB1 +:107330009189617CC85D62BA28BAA696FCDFF0AB81 +:1073400091AE5F205D8BE2D3958CD141F89E2B816D +:10735000F591F724F40CF687F3EE4BBF318A5B66A8 +:10736000EDC07C87D11A5D3745EEF3637F42BF994C +:107370009F6E54701F12FAEDEC85F4160E4DF16EEF +:10738000279DB338B5F80670C2AC5C1FFA03522AC9 +:10739000EE7745DA781B7CFEC2123A37633E3A1725 +:1073A000F3EAE3EFB3645705EA1B364922FB776E35 +:1073B000F95145A6F5F214F0EF88F8F9A37C67C2FD +:1073C0000E5CCF2CB01BCCC007F0CF30C264B63BF4 +:1073D0004C7E49332BC0FD9EB9EADCB17227F6F52D +:1073E000A85C0AFE48257F10F916DBDF5E22E9F271 +:1073F0009F288A8EFEFBED83E99C53BCD7E91C4A8B +:10740000EFDD5E9242FD5A87D4E7D6E5C5E7E78710 +:10741000053F373F4EF41D50CEED85E4E654E2EFD4 +:10742000E4198181D87D94AF975891AF6F2E913533 +:1074300039E07A1CFCE85AFCEEB33395433AB04489 +:10744000BD3364E80EAEB7FBC7FFD3FEC5FC3FAD4E +:10745000C4A3C963DF7230A2DCB51FF3D146CC6090 +:107460002E0FCA7539EE61787E6125FDC9D0FE8583 +:107470007232B037E66F025DC3182F554D89C46F65 +:10748000B2AD7B06F18B2D85FC830DBE4063C979BF +:10749000F453ABD593CFC0E40AFDEAF96A67197ECD +:1074A0005F00F2044B776F4957757B29D2B39B6914 +:1074B000E56D58FF8FC633A0FFB7F0DCC93580C734 +:1074C0000DF01C39F65CFAFB1A1FFCBE587900F16E +:1074D00005B90821AC606C9D09BF77F896711063FF +:1074E000FC43C8D985EC14A13FA2F2EECA17F28E74 +:1074F0007C0DFAFA6724BF5A7FF1ECAE2B4BB8BD76 +:10750000F554C985ECAED40A33D74B9A7C73F9DCB9 +:10751000C4F8394A3CBDF453C15771F452A2BD635B +:10752000EB4E168DF7DA35FA09FC1C6EFE1D6EA2C5 +:1075300016EF5D8FF15EE037C72C46FE933D9B3F13 +:10754000C73F7DC77D43BAB88F88FB32CD5FBB593B +:107550007BB7E32E6F327E5FA2BECCE324E2FB80DA +:1075600059F86FC057F24AB44E1DFFC6E574F65085 +:1075700016BA0B5863D65F24A6407F87FF221334C8 +:10758000C66D67C37B68A71C96EC21BB84DF49D816 +:107590009815CF53124D9ADF181E3A1CCB05368A28 +:1075A000F31FCC2FA1BC1D63DE9D80D706EAFACC69 +:1075B0004334CEF3DA45CF3991BEDB5CD3EC59E4EA +:1075C000F7F2734EABA6F77BF6F712AB66A706CEC3 +:1075D00020BF245E77BAD98A6AD9C5CF39999BF37F +:1075E000CF20E7DE17302E3AA89EDBAF8359A8D113 +:1075F000E5ECCD97F79706BE2E81FEB68973C47A67 +:107600006E67B579F83962C59AC1E523A1831FF485 +:107610009C2306BEC0F64ADAEE7CE4A36D7FD9E770 +:10762000C0BCE173ECF03AF22F0ADF49F760DCBB33 +:10763000E8B90CA4C76C03FE028AF89CD1DF7596EA +:10764000EAE3F5222F395EBC5EC40D85DF8B714104 +:10765000571FFB8391DE62FC1A6007CA13B048A46F +:10766000F70E63D332D21BC34BF97EAAD87DA83F55 +:10767000C651FEEE115F219D67306F9AD88F87C685 +:107680009E930A7CE0794E5FE7A73571F2948A4AAF +:10769000B9DEAAB170BD26AD7DAE06D7A126DF2624 +:1076A000D9B2A27C5ACBCFEA58B6D6BED6BB91F29D +:1076B000BD8DE721D9A53C1FEBB0253CD4A5C54B1A +:1076C000BD7DF0673CBABC695617215DDE0CD85C05 +:1076D00098D771245092C9FAC05BC013C81F399C57 +:1076E00076D85FCFBAA1B3DEC7FA1FC7FC354BEF20 +:1076F000F3A69EFA3A07C5D1AB0C79218B4BB9FDA5 +:10770000B04D83CCA6E6621CB96DC98376360EF304 +:1077100042CE14A989A8E74E17EDA0F85A22C52732 +:107720007AE857CAE9575577AEA83126EFADF6C0CB +:107730002617F26D55567306DE2B60A4E7B6523E4F +:107740002F87C6CF4EA6044A63E32BD957737E38E2 +:10775000E0F086615CFBEBA30A70BF17F115EC97B4 +:10776000E7D5F238F03AED5C03754C2C5F570557BE +:10777000EBF4852322B1506CD9DC41715447C44CE1 +:10778000CF8DF233BD548B1769F273ECEB8D2EE481 +:10779000273B9E7BE745CFDD137353E99CFD58954E +:1077A0004C765F428E8BBE97FE4929DF57847E1749 +:1077B000E777C6F338710E976838D773E4DACF7B72 +:1077C000AE27E61B3DCFD3D3D9389F7F2F8D737E55 +:1077D0001787AF043F09FE8AC7AF82BF8CCF057FF2 +:1077E0001DAFDB94EB41BE4AE8DBDE7C4C6B27CA65 +:1077F000C67C0371CE6E7C6F9D26B7670365244FF0 +:10780000555635A73FFA4AF0C585F22BAEB5F2BC06 +:1078100058E3F350CFB83FA0738B9B8B4C2EE4BF43 +:10782000CDF09F8A72E2B3509ED49B5FDB18DA8161 +:107830008945A687EEA2B86BF3B0EFE3FE5967A3C4 +:10784000738E30C8793DC8F9264DDE7BE2B4ED7207 +:107850002807F70B26E9CE896717F138FAE607F211 +:1078600043E81F2564DB75F59B8AAE4C0E53A96374 +:1078700036DE33B0C4C3CF17AB183F1FB4FF6DA3C0 +:107880001FF97793A5C39DEF8CD2E140CE9F1231B3 +:107890005F8749D173680FD877E1BA9281DDC4AFB1 +:1078A000FC7CD2EEE2754B8B0AE91CB21BF365E956 +:1078B0009C5F8B17332E874BB37C03713D449C3701 +:1078C00026BEAE8BDBC68BF3F637BE2BF8DFC8E7E0 +:1078D0009FC7E1F378EB1C13E7FD23EE533D7AC815 +:1078E00073B54E9F08FD23E4E18436FFE339DF9F43 +:1078F0008DE74EC79771EBF040CEF78F6CF0517E5D +:10790000207DBF6CFFDB4F66221FB095529FF1DDDB +:107910004942FF621E406E94FE0B022B7BCAC8C612 +:10792000D52BD6EAF2178CFA3FBE7C9E5FFE7E59BD +:10793000CAED20B13FE03E90EAE4FB802931CAEF76 +:10794000F1F603A1FF8DFB82711FA8AA6BF1AAE3D8 +:1079500008EEC27EECA312E87E20A3DE32EA753187 +:10796000BE116F474466A1B458B9F4F07DA547AF86 +:107970005BA91E1918FDAF204BF0A2DDF1F742659F +:107980007C19B44BF3291310FEB450F196C5E89F4F +:10799000260BCFBB954D2CB087FC53BF2E5F776E67 +:1079A00019C7A7A582B7DB9F51ECFE0860D3FBF98E +:1079B0006E0B8C3BBF8C9FFF1D4C3C7F5EFEBD1A47 +:1079C000FFDC837A08E55F5B47E1CFC3F4158CBB2E +:1079D000B458FC6EF40B93CA1EEF1A09746F7299B7 +:1079E0005C124CB5B88CF34D93CB4C71D966A7B9EA +:1079F0007227B567A4475A12958755CDDE999F889F +:107A0000ED395E66A73E6F3568566D48AFA09D9F05 +:107A10001B18F1ACD6E63B4EB347C4BC8DEDE696E1 +:107A2000F1B896DBA72C44BA1E2C54E696115F3BA6 +:107A3000E93C91C6932FFE7B9F232581E5D8DF5734 +:107A40002695A1BFDD94589C8BFB687FBFCB5AABBA +:107A5000D129E6BBACB5657DF053CCF7DFF43D58DA +:107A600085877D1942A4B57B0E443E29D8B3417C5D +:107A70009FD91BE6F795A7B9E502F12F117F02BF49 +:107A80007A43198F373522AC2865749F8EF05BB727 +:107A900098BAD9F9FA013AD179703FEE13B9B72CF7 +:107AA000A3375DAD490D13B0FFFED2F187BDE9F8F4 +:107AB000C3F3D1F1AB774627E33E21EE4131B61354 +:107AC000E7FFA2DC96A21FBFB580971FD6C61DAAEE +:107AD0009D873FA9F1A3F097C57D1DF659FC1E199E +:107AE000914721FA79B22C91DA3F5332ED49C4B76C +:107AF000358BDF13D19AA2BFB7625D59C59348A7F2 +:107B000027B4FE9F447ECFE0712CB43F447C40B448 +:107B1000FF9ED6FE7B65D39EE47CEE19837C629546 +:107B2000E53EE9F84C19B707C57785E2FBAFA59BA1 +:107B300065DDF75F3DFBE8AF19EDF7788E8A721CC3 +:107B40002F5F2E90EBFA2D8674CEB13C91FFF7ADEE +:107B5000F655A4E780D4DEFBEAB1B2BEF3DFE2E97A +:107B6000B7987DF5EDB258FB9E79757126B1AF7669 +:107B70001BCE7F043CABAD7FBBE657A37E44BD8CE0 +:107B8000F757917E3673BF734B128F7B22DFE13D37 +:107B90001867CBF4F932222E25E251223E25E2511C +:107BA0003DF7BD18E252DDD6EE964C58A7D36318C8 +:107BB0007DA799B27EED7E0B9E5FE5B2025CA7D6F3 +:107BC0002C96548AF5F9262FC6FD53AE76B55AA0E9 +:107BD0009CE261A9B8AC16BC3F04FABD6462169F72 +:107BE000877AD5FE4C6857D7FC47B20F07967B5271 +:107BF000D172E8ECC93FBE8BEECD11F31F3091D3AB +:107C000027D9C3E3B0CCAED27B8A2D25FF6E16DB1D +:107C1000CEA4C5AF958489C48F3C5E9DC2381F3108 +:107C20002F8F47CE655D94A7D66ADA4DFA656CC989 +:107C30007417B6177283F781ED8989CB1AF3900612 +:107C400069E3C4CB43DAA2C5DB5AA1BF3D14F715E3 +:107C500071C23409F185F6CD9654A487BE9F9E75F6 +:107C600031C40FE3C50B136AB8BC1BF945D1E895C5 +:107C7000ED53C64E4459FBFA9B6FE4E2E87795F06A +:107C80001E437BC0919E48F15B87879F7B3397C4DF +:107C9000E344561EAFB35EC20A1B3D9887EE6C9359 +:107CA00080E9D875268679BDD3B57E942A26FD2E27 +:107CB0009748C9B85E36B3DF09799135E2C1B8D3C8 +:107CC0003452DA60E907009DA63B5FFCB304F298EA +:107CD00099CDE3BF99E9C99417B1254E3C5EE47D87 +:107CE000F5E4B9A9E3DFD1E5B959C6BCA3CB736309 +:107CF00063DEF936796E8B268E79E75F99E726F495 +:107D0000DF713970FC4EA0FF7C505AE8CFCE871E41 +:107D10006B286EE926BA5DADD159FD0BD0D91EA5F1 +:107D2000F3FCA75F20FA1DB7F0FB492CD338A92D2F +:107D30007724879AC8DE0951FFD7D83B66621CEDCD +:107D40000BEBE9F138EE8DBF7AF497687FAEFAAFAE +:107D500007933049E25373C7407C5EFF704B127E3D +:107D6000BFF189594D423BE8D3905CD9175F3D3252 +:107D700051D8E98A5302FC566BF87D02FA07BF63BB +:107D800058F9A62DD408E3AFD9650BDB60BEABF77D +:107D9000AE247D0DE5F7797923E9E135FBF47A78B6 +:107DA000D54F1E1CE8E1DFB30D31B969B986200952 +:107DB00056EFB450FC63F56BB21786616BD8E95689 +:107DC000C4CFF83EE211013AACD92DD759937BD7F5 +:107DD0008366B2E2BEB446DB07D6ECBDE2636496CE +:107DE0003506BDBF228E3FF5E0442D0E52C24A90AB +:107DF000AF813E74EF830A7891FB17CA207BA6E916 +:107E0000A73605E3BB9F9EC8EC44BFE7D4CE97924C +:107E1000A4BCE83E20EE573AB57B54F2F9BE67FDAC +:107E2000C3062E2C517B87AFA7671F209809C5A7D3 +:107E300039ACB7849326017DEA3B2D5E151ED73FF2 +:107E40002A2B6882315807F49F6F78F4B9631301C5 +:107E50009F1BF658D267F1E938A581D1755B03FF06 +:107E600021DF89755AF5C47356CF38FE1CF363C5FC +:107E70007ADDB067BF15E36146BA4EDFBDDFCAFDEC +:107E800063C3BAED7EFF32E4FFA69F7E6545BEFC6C +:107E9000F419896566F57E7FC5C32F2561BB0BADDF +:107EA000DFA99D03C84E38F5B444FAEA42EB780BDB +:107EB0007E7B9941FCFED85330FE8A13362FCE7F4D +:107EC000C5633727E13C3E363770BEFFCF9681A8A9 +:107ED000275658D4812E82FCF98AEDB7103F5E7F79 +:107EE000F416F2F381DF07994A699E83707ECB7E98 +:107EF000349FE6B7E23F97D2FCD80F2486297FE76C +:107F0000CCAC724F1FEB3A7C12D7C71FEFB0D1E653 +:107F1000FDB195CBABFABFFCBB37B0D049DEC5771E +:107F2000AB14E182F2393B5FA7B31345BE2FCF1BE1 +:107F30005CA3B55AB373239D8F7C364CC9C47D07AF +:107F4000E8A0CB1F948FCECCE4EBC3F308E93DD07F +:107F500007D3F139B6EFB2288EF1BAF734FF938F19 +:107F6000BF4E1B1FF04E9026001CD8735ED985783B +:107F7000AC96F83BC83F981F375B9B678FFCEFDCE4 +:107F8000C4D74993FF2F5FE37A6575685E25E9855D +:107F90002E4B3813DB85F65F2D915EB045BFCB8D40 +:107FA00095EB9D168D2FF4F58097598AA5E733122E +:107FB000C59DD6ECBD87E2D8CB1F80F631721CE59B +:107FC000176BF47956542E457CF27A431C5540A326 +:107FD0005E704FD2EC414D2FF4C4377F9471DE7840 +:107FE000A2F05FEA2DA1477E88F2FBA68DCEC5EAFE +:107FF0001FB550BEE8E7BF38706C21F0FBE7BB85CA +:10800000DCEAF5AD516E573C3E9FF525B79FA7FBC7 +:10801000599F720BCFFB94DB747E9FCD3F4DDF6A7F +:10802000EB104F4EAF8FA36FA74FD2EB5BB0EB932C +:108030002741F1B39FDD3082F2B90CF4157435EAB3 +:10804000CDB7277AFAD49BF0E73516434F4147C1A5 +:10805000AFAB7E7E238DD3C3C7825FC53ED6C3AF91 +:10806000C679EBE969ACB7E22400758BC96BC74FE1 +:10807000C21666EC4C447FA549DC6FCABC8730143D +:108080003D5F19A5E5797179D7724CD9A64962FF90 +:10809000E5F227BE23B205B81E6862268A8FDB98F8 +:1080A000FE1EA1973396F37B8134B98EEA1913F93A +:1080B0000D5DE9A58F68F912A427E86E10137E57AD +:1080C000B399E8315791890E3685E71FC7F44FEB16 +:1080D000D8A49C1C8AE75A4DA5362FEA67684F74CE +:1080E0009A1FE0F49CAF7C97DFDF947EA80AF3AE82 +:1080F000E796EAE578A1411EAFADD2D75FC37664BB +:10810000A0BD7ACD0A0B0B496827E9DBD74EE2E721 +:1081100053D7B2861617E76B8D4EFAEF599876EE65 +:108120003B47D36B224FF7959D12F99FAF942E6D6D +:10813000CFC7F22FC0AA84FA73E585CC0E7478D924 +:10814000C2F691FDAB281E5731BF1714EBA5D2E73D +:10815000C90E4B2E35E9F44C8A92A0C33FAD32557F +:1081600057CEF00FD6B5CFAC1AA9AB1F14B85457E1 +:108170003F644581AE3CAC61A2AEFD88E0345D3920 +:108180004BFD8EAEFDA8B62B75E59C8E85BAF6A389 +:10819000B72ED1D58F09ADD2D58FDD7593AE3C6E9C +:1081A000F71DBAF613F6DDA5ABCF0FDFADAB2F3C55 +:1081B000B445572EEAFAA1AE7DC9F11DBAFAB2EE66 +:1081C0009FE9EA277DF2B8AE3CF9F453BAF653239F +:1081D000CFEACA15EC255DFBE9F65775E599AEB710 +:1081E00074ED2F779FD4D55FE1F95C572FD6FFBB95 +:1081F000B96775CFD1A152811F56F1476CB6F7AF61 +:10820000BA7ECCCC4FFEA5953510B4635E23C00476 +:10821000C6FD4E27FAA100875D1EF86012F2EB76CC +:10822000B51599EBE5B2AF86E33EF24AF955BAF3DC +:1082300032BAC7CB0310EF534D8AC67D9222320B60 +:1082400017021F462482AEC80016067F2425E220AE +:10825000981A49A3E769911482E99121F43C2332E9 +:1082600088E0C0C8288299912C82EEC85882832267 +:1082700063080E8E14D27B4322F904874626D1F37D +:1082800061913282C323D3E9F9884805414FE4BBA9 +:1082900004B32257101C19B98ADA8D8ACC23981D91 +:1082A000A9A6E7399105042F892C25383A52473081 +:1082B000377203C1319195042F8DDC4CEF8D8DAC5D +:1082C000259817B9939E8F8BDC4E707CA489E0842F +:1082D0004823416FE41E6A971FD944B020723F3D86 +:1082E0002F8CDC47D017D946CF8B223F20581C79E2 +:1082F000886049A4936069E4E704CB223F253831C4 +:10830000F204BD3729B2876079E47FE8F9E4C893C5 +:1083100004A7440ED0F3A991FD0495C84BF4BC22E8 +:10832000F202C1699157E9F9F4C8518233226FD141 +:10833000F3999137095E163949F0F2C8FB042B23F3 +:108340009F13BC22F229C1EF44CED27BDF8DFC917A +:10835000E0ACC85FE9F9ECC89F09F6F809E571BF20 +:10836000E7337D03F03EBCB41FF4DB9CF55CDFFD1E +:10837000C7803F1C24FD5766F3F03D662BF1598DF5 +:10838000C6CF2DF83FD867F7977D3C14EDC5D68A48 +:10839000936FDF8C76D65A1BCF93E9A54FBF766AD1 +:1083A000F626C3FC99451ABFBE527A2003CFC35AA2 +:1083B0000BBAEB31BEB539ABBB06E165E5DC5EACB3 +:1083C00028E7FBDA8C726EE76E9B1C28BC1C9EAF04 +:1083D0001A6652D1BE5895E449BE169AB44FD2EEF1 +:1083E0006F4F4FE5B901CED3C3D1CE58ADC9D9EA4D +:1083F000A79F3F8EFA58027109A21D24BEEFD9A78C +:10840000A78B0438D5E07DCCCC6BB7631ED750E684 +:10841000E1F75AEBF78B0BC595F3CA030BCBFB883F +:108420002B47EFC956FB75DF36F4B3F49FD44F7D6D +:108430007FFAD9987EABBF0E8B66C53C1BD6A95A76 +:108440005B27261F5E84EF9D536D1E8CF557ABD7BF +:10845000935D64ABD77F7F5C0DFAAC02F6DDEA7505 +:10846000FC7CD3582FF6D5EE7ACE67DD4A831DFD0E +:1084700093EAA1266A5F6DB88FAB11F809DBBFD50F +:10848000C8BF9759A2D98581FACB293E1BD0FCBD24 +:10849000C005BE6FB9BBDC608F6BFC592DEC1D793C +:1084A000FD213CAF3E7758A658CA810C2BC3FB80F8 +:1084B000BB6FB4D1B8AC8DDB956F65FC729827C6E5 +:1084C0006FAF03BDAAE039F18DB7B991BF37B6ECF4 +:1084D000B160FCA47BD85AFAD8C4E8A7770F63E44C +:1084E0004757AB6BE9BE4A960B1C3650B3AB3C68A2 +:1084F000FF7976A39DCD86DBE97E3FD9A43F674F08 +:108500009ACCE540C0F7302E8572B79AE715594CE2 +:108510000DF43D291B9E60E2FEA35A8FE5EBDA477E +:108520008F443BAED2CCEC98672BFA8BB1D712C8F4 +:10853000DF31036162EC3CA33DF764798A663FF169 +:10854000EF8E4F6AF741E11F49CC83F21F152BE6EE +:10855000E1DAD2EDDC2EEC987703AED77B3DDF512C +:10856000C1DC8AB5FB5380E0D5EB072863A0FE1978 +:108570004DDE2D5AFE12F08F1A6B27237F61FB11FF +:108580009385BDCBE71768B779300EDB273E26D63B +:10859000935F1B684F0951BC36DD4C785986298B97 +:1085A000F13CC2A6027EA80FCCA76FA9C373073502 +:1085B00085E27A8166E932D44FB6F6C6B5588FF7B0 +:1085C000769953E9FE5FB315E858C75C97B991DE19 +:1085D000ED3CDF59372FD027D5ED12CDEBA4A6CF38 +:1085E0006007588CA9734B559ED707FC40E3B77CB6 +:1085F0002F51E1F8499DB8CF8BF5A9D6C6ADEEF85D +:10860000D56D12F1393F27A8D6C6AFD5F236E3D1E2 +:10861000C9D54327E5DD377CBDC715F80A3AB5480B +:108620003C3F5BDD2C7522FFD8D627521C40CCDFA7 +:10863000A6E13178F2489A8FA04377E3B5557530BB +:10864000AF0F378FC65FBAE9850FE99018FE30F299 +:1086500095C5C4D7870D67E4A70BBE17FCE298CC7D +:10866000E3E1025A270B7AC6C427E4285F1AFB17F6 +:10867000FAEDF2D8F6F0FCF2A13C1FF53D2DBE2B31 +:108680004F6E5A8CF7BC3F54AEED279E06BAA749F1 +:10869000E0838424F9D0F8D6E6B42B63801E191A3F +:1086A0009D5B243FD141DD6C237E30FAF97F2AEFB8 +:1086B000F1D302D6624DBF9AF0B9879E57B7DB88D7 +:1086C000DE62BD3FE8B9E74A193E8FEEA1D2E8A8C5 +:1086D000F1D7AB1A5FBD8AEF17D1FAD1FDC2EA7D9F +:1086E00036D207627DDEC32E407F7927FBC74E2E30 +:1086F00022F91C4F7A7F3DFFEEA6C6B43F07CF4B51 +:108700006BEE0A138CEA2D4EB7CAC1E21E1B2FE591 +:10871000AFB08689948720F264CFB617D1796620EE +:1087200089B793CC81122C57FE7D6909C67FD98900 +:1087300044FA3E67D128567B659E965F08F82C6AFE +:10874000BAA212E7395DA3DF2BE0A72BA3193BBA2E +:10875000C1CE1460965737B8A8FCFA063795DFD813 +:10876000E021F8E6865C821F5A397F2C4A1379DAB9 +:108770002EFA0EF20A4D3F5ED1C3FFEBDCE87757CD +:10878000FEFD55CC4862E9EAC38B674E267F9452C2 +:1087900078049F565D3D403B0CE1E53AFF245D7D4A +:1087A000B796FFC0720BA3CF4772BE40FE5DD29654 +:1087B00045E76C0B66A5E9DEBBA66D88AE1C98CCC0 +:1087C000D76B5EE528DDF385356375E53AED7B68AB +:1087D000E629A5FD4AC4DDC012E5F4D7F28E6E5E2F +:1087E0007B79F26D30FECD4765AA37AEC3AD4BD570 +:1087F000C588DFAD0FD9BCF83DC2D2AD1253D388C6 +:108800007E7CFF382693DC5DB755660118EFB31404 +:10881000253319BAFAC4C1E7F5C9EB7227DA0B950B +:108820007F1FC5F7A7476CB43F7D6261AA8BEEB18D +:1088300092487E3F3B9A43DF752C1A151E86DFB5A2 +:108840009FFE6F079D0B2EEDE6E331A980E21F9F8F +:10885000A4302505F8F2F7B33B9653BEBC7C380331 +:10886000CF7B7EFFB84CF779AE5CFB7AB10BE8BAF0 +:10887000EAB7BB8F618ACB871D327361DC6B97AD22 +:10888000937F27AD64A23C44E7191A8F7CF9E24438 +:10889000FFC6C9B0DE9F2D0F8D277F7F7D06B717DE +:1088A0000CF4F8D01A28C178BC8A7C09FD056E4DFD +:1088B000B4A31FB7D4E21D984F7CC4E37E2AF30D06 +:1088C0006214DF7D9CF8E7C3F69CCB483FB6490CA9 +:1088D000E3E8A27F90A73948C70F3BD24CB8FE4BC4 +:1088E000DA65FEBB2DCC6325B915F7E6DC2707C09A +:1088F00006C1F7033CDEA45F4790D04CA4DBC697CB +:10890000F93D138BE3C41BFF00B213888967ADFAEE +:1089100035BFEF88F93CF796A31DBF737A11E55D6B +:108920000478FF5FA60ABEE1F73C9D51780AF7B9CB +:108930009D8921E48753A6C7DF35C33A9C3605F6E7 +:10894000A07E583147DD8EBFCFF3C5D327FF1DCFA3 +:10895000113E7BD4E2C5EE9D4C799CF44790DB43FD +:10896000E2DC7AD5CF1CC4277F1A766927AE5F5424 +:108970007F34F2796BED19FE0216D1333C50027A46 +:10898000063CEC32B2FFD86E2D3EC3E9E441A48030 +:108990004EAE7A1E973B599478379B00EB63B087B5 +:1089A0004E6AF2F8BC26E742CFD9A7F0F252B1AF37 +:1089B0003CC3ED2371BFD00AC6E921CE0B563470FB +:1089C0007BF638EE6BF0DE9A86CB3FE671312E1FD8 +:1089D0003700DFE1BA2E77A5ACC3FBA3EA7739BC39 +:1089E00021787FE0148FB64F8066063AAFD45EB927 +:1089F0009E85DA0B60DC1B7759BC619A96B89FC8DC +:108A00004CFAE233B01D4B53B13F89FAAFEF9042BD +:108A100018BF4A2E6FB022BE37EC95581A8FBB5143 +:108A20009C4F7C67BFCABC99E279AB7225B297D9DB +:108A3000AE98FBCEA1DF1B77EBBFAF5F63F8AE7ED6 +:108A4000999DFF2ED93266B84FA0C342FBA59DD990 +:108A50001BE93EF9018984D7AA0E6E7747F197D9B1 +:108A60003740D3E581D06FE7101D246F88F5C663CA +:108A700066FA5A9AC72A9C47566FBC8CF3EA2F9E17 +:108A8000CBBDFB895F8CF8C6AC8347BF0E5D14A7D6 +:108A9000FEA8C1C2D05F5CAE727E58FE34BFAF5D2F +:108AA000DCBF6FE4878FD21BE8FCE6A31F49AC2331 +:108AB0002BCA1F822F56EE095971FFFF9C7524396E +:108AC000416EEAB7EEB9A60CDEBFFE4747AD684F70 +:108AD000D4A486734C294842E78F2B8745F97565E6 +:108AE000484F871B76E9CBFF2C3A312D5E4BEF01C7 +:108AF0007D96ED94C9AE8869A7B38B98DC6EC5EFFF +:108B0000CACE85242FEAD715788D47C1C5E3BBA609 +:108B1000E73E827F2DDE46FFEEB229FA7BE6CF34B8 +:108B2000CCE7F9BEEBFBFEBEDB78DE62DC5FDFB6D6 +:108B3000F07C9B3EF6D9B9C817B0CF9AF0A3C578A0 +:108B4000FA79B9B6BF2EC3FD14E0EFB63E9184F1B9 +:108B5000BA8F1E7862209D23E17E9417BB3FC37EAF +:108B600089FBF3AFF8EF26D5FCA72D8C71ED537B75 +:108B70006D2196D5BBFFFA89816553106F6D3FFD5E +:108B80004C3A5A8CF763093D1BEFFCF85F35DF2543 +:108B900038DF42B42BF87C3F68E3F33CD9CEE77D65 +:108BA0005DAFF9EAED914F1C61DAFF3FD92333B491 +:108BB00033845D21EC0431CF73AC633BDE6B76E331 +:108BC0004D6FBC6B06FE587949D778FCDD829AFB65 +:108BD0006C641FACFCEF44A2D767524526CAE7A9D4 +:108BE0000E9B823FF5766A97839E47F1E8B1173670 +:108BF0004F89B517FA493F1147923C2E9E97F123B2 +:108C0000E641BB13CF5DF0BC83394DB4DF18DF3FC5 +:108C1000A8ED4B37CA26B257EBADDC6EFD42F35BD5 +:108C20007768F53BA670FB75D714F1BB84A7B72313 +:108C3000BD8EFEDAE6C27DA8CBCAE3CE472DCAD6EA +:108C4000EFC1BC664C0DFC640AEC9B7E937311CAA9 +:108C5000CD5D03C65B500F35A72CA7F3AAC5AC8B1F +:108C6000EECD9A533ACF83DFEBBD3BD0EE9549FE74 +:108C7000999F1547E33C2F5B783ECFBBB8CE30AF12 +:108C80006AED1CE35D07A84D18FFDD4156CA23516C +:108C90007F6DA37D7963028F33B3F464BA8778A1C3 +:108CA00026EF8B66D814D493D53336FA11427F2A37 +:108CB000037AD5D84FB7E4C3388D26BEEF35A63238 +:108CC0001E876AEE2E42FA4D60CD2ECC6781D9EF19 +:108CD000FD26ED7CEBA0CF27AAC7B8D644C617A8BF +:108CE00094E8AB2BD75B79FD8929CB6A1F180A65FD +:108CF000B4D9D13EBD420EEDC8C2F8B989D6732EA3 +:108D0000E6D9903DEBD6DDC77725FC570EF3BCD2F4 +:108D1000CC54532AC13627C0F9A52C9C0CF30BBFA9 +:108D2000A0CF77BA366C0A8FC6F33173783FE5E38C +:108D3000C8AC054DE42B5996E526CC2FB8AB7FF88F +:108D40007E39A5A1F68172289BF8F7DFA76F97E817 +:108D50007EB8C56676107FF7614DAA47A5E76B25FB +:108D6000B2B3AB4198F0FC17EADB920AF03D89F808 +:108D70000BD797E70FF1BC2BB14ED0CE9E00CFCFD3 +:108D80004CC922BBAB5AC3776BC03410EFCFBE5176 +:108D9000F3AB16DB5933E6E981FF9784719D7C4084 +:108DA00033769DD65885FFB5DB8ABF8777C3D3CF8F +:108DB0001FCF02BAFC5DE3E71B44BCF517FA78ABA2 +:108DC00067AA87C6C5DF7E45FEA8D6603CF918367F +:108DD00095F7376C2A970FC754E1DFED26BFEF06F2 +:108DE0002DCE1B6FBC1B6D2C4CF4FAB58DD65D8C53 +:108DF0003B578343A6F2B886C043F0F97206F6C02B +:108E000028847C1F33C162525E50C7439457BAE234 +:108E100047FADF9D010385CEB957ED343E8FD90760 +:108E200075BF1BC5E3F092F5F475889F34C5E14525 +:108E3000B9A8B6EE267F5C020703F96B799CF72C84 +:108E40001DDCFFB2B473BB86E22C3E8CD748F4BB6A +:108E50002E7543BD6ED40B4BD21B685F1576F07236 +:108E60008D0F6CDAEFB92C473B07E37568E720FDFF +:108E7000B672FCCD9ADDBAB443BFDFD7B519E7C7E8 +:108E8000F77D4B4FBFFADF87B168FB7E93C5EB469A +:108E90007D6B61FAFDBF49E2F35033781C88A5F37E +:108EA0007AB366E709F99F30D5A2BBE7EE1CFBDA7F +:108EB0008CEB20EAFD33189B52105F7FCC55068463 +:108EC000253ABFBEFC10879BBAE8FC59CBC79EABC6 +:108ED000C93B3C277BC65F29D1EF1ACF552C9FC5D4 +:108EE000CE57DC2365B447AAA6C6C9FF284FEB5767 +:108EF000FE87C85FAF41BD4DBF9FC7E3D53745CFA4 +:108F0000A773518FD748095EB4CF45FCFF6D0D9E06 +:108F100069E0DF43D5BC03FBA1D4FB5CE08B8A4452 +:108F2000D504B026C96AC6755E947CEB1C84E2BC8D +:108F3000E06D0D7E65EAA6F16B59F7E798677D79DC +:108F40007A57222E4BCDDA1CCA536BAD28DC0A3679 +:108F5000176BFACDFE5AFB303A8DD4F2268FBC87C0 +:108F60007983577F0DF3A3F2CBB50A8EFBDCE9C5FD +:108F7000F8ADD44F7EF372AD19E8F6C583A7B76399 +:108F8000F937BF395E6B06BA7CB1F9F4700795DF2B +:108F9000E3F58D5A7FEA7BB5D8DF173FE0E507A1FF +:108FA0005E257B259C837498D3E0F062DC41C4AFDE +:108FB0006A4CCF1244C71CF594909B3FE5FC917E10 +:108FC000AF1234C025A82FD624842D99A80FF6708F +:108FD000FD79E3BA8AA40A867CC9CF65B768FA4BE3 +:108FE0005214D2AB36E82B01F8E3C1299ADE32ECF9 +:108FF000FF2C0FF0F145F1D988FA2DA3375E2F4CE5 +:10900000F56F9C5A84F73F7E48DF53BF57A15079D4 +:10901000DBE44008E1AA79926AC5DF167F2D7489E6 +:109020006657909FBDD1A4CFDFDFA8E941019F51D2 +:10903000A0DF8CE8FA407F3FFB36FDCD52389EA280 +:109040003F41CF651A3DA1FF5FE278FF68FF42AF65 +:1090500089FE0655F4C2FFD96FD3FF7D86FE84FDDD +:109060002AE6310E6D3458E7344C5C2E8AE2239E9A +:10907000B748E18C6B313EF6824CF1AE968CDF99AD +:10908000F11E05E69FC4ED640797C78FA6F2386C02 +:10909000CBF7BC1487538FF0FB025A32AE71A33D5D +:1090A000F8F9A3D7A751DC4AB32F3FDFFFA615F38A +:1090B000085747F8FD006B22FCBE80D57BF75B2F7D +:1090C000C3FC2280D363E21CF5D17B88CCF87D8081 +:1090D000C0E3A3A9262D0ECEE32CEF62BE505E1F87 +:1090E000F692D2132FA7798FD7E6F7E20CE5D4D406 +:1090F00098798BE7E23B2F633F33152E0F2F4E6598 +:109100007D7E77F6AF82FF0F0CC68CA60080000034 +:109110001F8B080000000000000BB55B097C54E5C4 +:10912000B53F77EEBD3393649299908404B2304397 +:109130000043D9862C102081C94A2C0407700910DD +:109140007482B288406244492BFDCD404090F27C4D +:109150007179155B6A278816ABD5A860A945980474 +:10916000A4C1756AEB93F7B43050AB6C4A047DC66A +:109170004AE59DF37DF74BE64E12305DC28FDF97D7 +:1091800073BFED7CE7FCCFF29D7B03A0B83E3603B6 +:109190008C93002ECB00D5D1708BDB0270EB845802 +:1091A000B37D1CC084A3EE92D84480A5DB1CD9B249 +:1091B0001D2050586C72250148342FAB7B5EC56072 +:1091C0008020CE03A56320505B37D9001300EEC288 +:1091D000B5E9E7E2BE3C2B8CA6DFF87E4E9A978974 +:1091E000FB0D08AE86F100652E8BDF5C0830E35185 +:1091F0001C32984D71018EAB3069B46FA8A7340D45 +:10920000E96F654667B9D2FC3E5CAF9DF8C576E173 +:10921000C431D1301620E48831D8ACD85F5853E639 +:10922000CAA3E785E5F4BCC8143BA2C6C2D61DE1BB +:109230008EA57EB783FA693CE039ABEF5497009E68 +:10924000F3822F0A640780676C8CC74FEB1BA01456 +:109250000620AFF4330D6088CB009044FCE24A79DD +:10926000DDFB8B7D711FA0753C0FA536D33ACEC2B6 +:10927000A252DA47ECEB2CF48C27F9897DF1986344 +:10928000E9795FFB8B7D453B96F6C7F54A697F5CC4 +:10929000C75D20834B93F165FC3FA73446475F3F92 +:1092A00033015C59DDF48DD7A7EAE8AAEA4CDDF872 +:1092B000F9B78DD2F5579A82B975966E7D0BBD417F +:1092C000036E3EA8277FA2458531FECA674B3E2B21 +:1092D000CA25D80A6376E3F97C8E58E793D87BC712 +:1092E000E66B017200AC9D0B58BBA209E9048095A6 +:1092F0009D7319BDAA3386D195A90BD7431CC939D3 +:10930000580EB9D8BE1C0F8DC8C33B7260C4CF685D +:109310003D13AE87B8AC7C7E7A05E979D5EE75CF82 +:10932000D238B0C7E40CC7719532B44BA8BFDACEBF +:1093300028BE9EFC6EEE9D28D71925B13E8395F57B +:1093400003E9B7312F760BE9A35185AA965EE4BEF7 +:10935000C22531B9AB21CE7759E76CB69EE8AF771D +:109360000D65E715B49AB4535964E93E8F1A9258C3 +:10937000FBFDCE51ACADDD3D5BB1E33EAF673D9152 +:10938000E8B1B0F1166AC13D456F377513AD644F52 +:109390007DC9D9D489FA473E16744AE0C2757DC5A5 +:1093A000AECD84AF596B438A19E50316A3ED49DCB2 +:1093B0007A56FEF8942561EB34B6CE033BE2CE94A8 +:1093C0000846173E5F806D4958BF0781D9D2CBBE92 +:1093D0000F68F80358C7DA59DA3848FB1688EF9B4C +:1093E0006D9C6F818F7BB5F1627E1079219CFBF6BD +:1093F00098FCC4D763C59E66B28F601154BDC8FC8B +:1094000047306376ECBF8E7FD4AF99F41FA7F07D11 +:10941000E3F21D3B7C685F4F759D83E3F46AE77858 +:10942000581BFF8E0C0D848F77A64D0BBA70BDD6DE +:109430007B7372C82F82ADE312E1AE76FF94CC2D20 +:10944000C8EFCB2E231B5FBB1F71CC9E9BFC12EE83 +:109450005B99D0F131F1D1F16A947D8783CF231CE0 +:109460009FC7CE2DB88EB1CCF332E9AF76FFE91CA1 +:109470000FEEE3DAF7D5B17B71BECB12EB24768E1B +:109480004C73FD86F9933EF8BC9A3DF6C49789D992 +:10949000E5453B5FDFB399DBA147B3C71A0DBF8B2F +:1094A000347B14F6AC12EE72087F1C772B3AE3F98A +:1094B000784DCEB764497E92F3CA4E079B2FEC7865 +:1094C000D15A69C436B24F25D639DC4EEB727B10C7 +:1094D00076BAAA334167A7C26EDF2BF67C4C72E9DD +:1094E000B2DB46B4F7B8EF8293AF15FB18E4B74090 +:1094F000520927266C4BC2ECDBADE9BDE63689E9A3 +:10950000A906F1015277FFD97EE2FDA8367E9125AA +:1095100030DC80EBA97551CEF5B85E75929DF9AF40 +:10952000FAFB914091D4AB3CAED63F263951332C57 +:10953000DE8295E26D9DD113C6DFBCCEB16047F9E6 +:10954000CCED1CC6DA40A1E76BD27F4DE78D9A5E69 +:10955000C6B216ECF9061808B09AF44A78847CAEC4 +:10956000678DBF2FEA2626AFC1FDBF785365FD7911 +:109570002EDFCDC48FEA37399B919F53511E99F44A +:10958000762A1D6C0F238BA754F0D9501FB76E930A +:10959000C187EBDF86AD07DB53F1E08ACF26BBC383 +:1095A0007386C5892F95A60CC0B8B0B2FEFD630ABC +:1095B000BAC2DB4704C70670DDEAA240D24DB8EE5E +:1095C000B99DAAD387FBAE687D778201FBCF385C5B +:1095D000C980BEF7F5C99E842214DDF239FEE75436 +:1095E000A4CF36BDF4DFF9F66E795617C30CE2ABA3 +:1095F000BACDC0FC7ECB56B9C2CFE378CCEC31619A +:10960000B8D6F28A23C0F31181D3E59D994C3E224E +:10961000DE08FFFD1B6F0A1EA2DB8FF7158722ED08 +:1096200045C4A58B75EF97135F17774B141CBBF0E0 +:10963000DD1D87246657E8A418CEBBE30FC7B9F039 +:10964000DB95B281E1AED23AC4DFE8E8F6E391F10E +:1096500069CAD399BB5FC175963FB3D04DFB4E1B12 +:1096600025818CFBAE787150AEA7173F2DE2B590E7 +:109670008790CFEB1A3DB5D8555994F75DEC27CAC2 +:10968000C8FCAC6F36303F8B6DB89F55853D404868 +:109690009913DBFD7C4E51FFECC6A58D177C0B3E6C +:1096A00083469E5F09FEDF009E7F887D1E2B9E7392 +:1096B0003BE187E206EDBFAA88C7E97FD5B9FA8A00 +:1096C0001FAB8AFA173F16449C4F9C439CEB4DED11 +:1096D000BCDF35BE341619D9BEFD8D2F8419961FF7 +:1096E0004559FD4F62FFD40393BEB8D74E71C6A44F +:1096F000509EF17A69496351189F822FC1E75B1A26 +:10970000DF1887361785DD03C4F37F342E097B8D80 +:10971000B4B748FB8DB4DBC87C51D84DA47D0ABBDF +:1097200016763AE3C73C1F854C9E8F0ABBC57C9ECC +:10973000C9A7FD7BF17EF237AB683EC391D51F9E72 +:109740004F8AF85729EF786032D9EFF944672374CC +:10975000C74361B7C38A3DFB484EC5CF7CF3D2FFF8 +:1097600042B7BD5E1D9FBF5559DC5A21B1FCC6846E +:109770006D78DCF2F46177ADFDB4BBE78BF87DE684 +:109780001D99E3DB6735B2BCEC6AF8FBE3BF0F7FE2 +:109790007F24FCF595871F25FB4E62F83BCAECFE43 +:1097A0005F9607BD9F6B47BE2EE6621EE4E8C6D1FA +:1097B0008C371027B9DD38E9C287315DF3D7DC8FEC +:1097C000CFB80C7524670FE93F2C4FFAB6D87389D0 +:1097D000F81478688FF68DA6BCE6BBE6B70B12EBE3 +:1097E000C085E33DD886FB2713E975744FFD4BC553 +:1097F000FDD3FFF9A2FEE5B5F1C5FF705E9B569C57 +:10980000D7775E0B2E9EBF087D3855A7750DCE7796 +:10981000BE2593C6FAD4A7BC8DCBBB4B6E0145E4E5 +:109820000709941F204ED28BFF099C5496B47C618B +:10983000C6D4764AF1E01A6512DE9FF341AB4FA41D +:1098400036BB86313F0230999F80EA15CC8E189D39 +:1098500076A294EE990F77F5FBA8BFACC0DA55DF7E +:10986000205310E327170F3AB195F1DDC4F5E7094E +:1098700029EE3161742ED2B161747E04BD9D8F8F4B +:1098800053426063EBF8D973C29D94CD71C2D7EB9C +:10989000288F47B9CFDA2DD9482FF30BCE1BA92E2D +:1098A0005359123A9C8AE7AC6C1B5A63C154653E0B +:1098B000F93DE47361DBF79A7D8A260FD4CF0A4D18 +:1098C0007CA616C925A37E56E44BFEA18E9EF25BB4 +:1098D00058AC8F8FF4A3E8E78331B77FF3497F6CEF +:1098E000FE50363F60EAC7FE371580CBDF4B9E74D3 +:1098F0008718770969B13ECA6C2E9EAFB7FACB5D67 +:10990000DAF8A0C1B012505EF7B64D6D36A7A35E6F +:1099100081E3E2476D85353E8E3F70459CF74AFCFA +:10992000D6F4725EBB7E7EE04AF25ADA63BE868B64 +:10993000657A9C94155C76919D9615202E288F71E2 +:10994000476DA57B476589866B5F458D2B0DCF17CE +:1099500005BA3A5C17AE7DD7D610AE5781183FA333 +:1099600099FC93DBD0359EE37C9FD4353F0BF143CC +:10997000A19DE63FDAF6FD66AADBA13E583FA3951E +:109980002BE0BC25822E88B00B0DD7CC2EC94FA35F +:109990007C864B3DE5F362318F739F4A3CAE048B6E +:1099A000795E191CCADB778B795C794593639BD010 +:1099B0007374981CD2BAF58C3F01BAFF849D9BC981 +:1099C000695EA238F7ED3533D13F0407C01809713D +:1099D000F266F1E2E60D8534DFAD007A3C0596369D +:1099E000BF89FE679E2697778B979DD07023919DA8 +:1099F000AD640040BDEF967C329E6B25E9BD977348 +:109A00003DDE1337BE88F92EF50AF377F69CEF8A10 +:109A1000980F6A627FE66B7A9919A1B78A08BD959B +:109A200046D0D582F6EBFC96F067F39639EE4B45BF +:109A30003E963F2B310F8E7ED9288D07F8A4ADBE00 +:109A4000C63289F0695753B1E76CDBEA1366C4EE9E +:109A50006CF25F0CAF77333F3D97EC9BD1F7D4B8F6 +:109A6000AC8497BA8D2938FEF3B635CD66B483F948 +:109A70001B1E5401E92FDB7ED0ACA0BEE6E53E7F85 +:109A800098D653D6DD7B62A6E30AF86C8A38C7F60F +:109A900008DA1731FE91ABF8F10D11F3D746F46FE8 +:109AA0008DA0B745D09B23EDC3563E90FCFD060923 +:109AB000B6C0D5EDC45422F2C1965C339EDF7A70F5 +:109AC00073F3464CB96734729CC797DC5F138E53AF +:109AD00015F8CF8244F0513C50FBF04F72491F38CB +:109AE000C98A8C5BA2DF9D42CF8F69F6811A5944E7 +:109AF00079F0C1AEF8CAEDAD55E67C0D2E997772BE +:109B0000039BCFEF290F69EF25F61B6019D93BAEF8 +:109B100053F1422FFEFFA1527E5F3CF8CD99679E24 +:109B200047B9F88618D97D1D338F4B1D789E93E970 +:109B3000C63C8A93627CEB106303C59156933765EC +:109B400071587C383864E0A51A9C7F30196C14D7A2 +:109B50000FDE9BC3E6FB6A65E770A4F7677CFC1F1A +:109B60001391DEBF4ACEA17E314F5D21B338A326CB +:109B7000B6C42E0EE3EF606D4E813DECDEFBA556C4 +:109B800077FF20ED1E1BC5EBD621AB8345C46FB21A +:109B9000C2F8357D5D6D93F079898C7928B59A1E70 +:109BA0008F75CE0F0671DC46CB50F254F89CFBB992 +:109BB0008D69379A699DC64403CB97D4D88536639F +:109BC000D8795C890AE7CB01EEF03CFC754D8F3FFC +:109BD00029E1F97F9B6C63E7463E6C5487BFE59BA8 +:109BE000EAA341DC47CD9860071CBAA724938D3BBC +:109BF0006EB015507DA8440EE540D87D729E41BBE5 +:109C00003766A1771DC8F25AEE77CC5B83F258A273 +:109C1000155F88D799CC974970182B0C13B471062F +:109C20005D3F5C46DCA9060DDF19C0EE170CA8B439 +:109C30002ECDC57DF14E3796DAC5255CEF9447AB46 +:109C4000548F4934BBA2E83D83566FC0DB48293DA1 +:109C5000AFC0FD14BAEF49280792533AAC9AC370CB +:109C6000D6A292DDD56BEB887D16687C2D40F9D1AC +:109C70007A0B14508CE8C76E49368EDD8BFA0F597B +:109C80008C4E8297782EF65BA0ED778BCCEF11A6E9 +:109C900015AA2F14F65E46F0B1BE249EC9B3F14753 +:109CA000FC3D5328C3EE07ED9C72B85CD6C6BAA241 +:109CB000E87D580686780B3B0FDB6F23C53FA22D4E +:109CC0002FAF91E2BA9F87D64F49A17BE946519FBA +:109CD0005F29B17B20D99991CE45BF0FA573195D3E +:109CE00023E95C38DF3136CC6F44F0CB6A90429F79 +:109CF000993DF5349D6873DFB4A82B087C0C2805CA +:109D000026E7D62103D732BB4A3633DCEFFFDB0F21 +:109D10008FD6207D7CA099DD57BAEC3439A5C04E92 +:109D2000765A9BB0B623CC4EF6FF6DDF5B1368FE10 +:109D3000402587EC72EA3797C6DC4AE39213D9F8DC +:109D4000A9DEB3677F43F5EB6FA26D121B3FD94EBF +:109D5000F715D91062FE01FE16CD705E62AD4AB1F4 +:109D600087D9C5AF35BB5A59E07AA604F9940722C2 +:109D7000FE2DDD7E4C1E78A387ECB5319D99216CBC +:109D80004295925D356AFA10EBECD1EC768FB61EF7 +:109D900028F60C9ADF26735CFB36490CD76AD2DEB4 +:109DA000D8F0F74287351CB6C658B97FAA4DB844DB +:109DB000E7AC49F318257BF83899AD6B325B997D98 +:109DC000B79AA679C87E6B2C37AAECBE87FBDD80DC +:109DD000FBBD56A2B0F51AE379BE74DCE0B6931E63 +:109DE0007F56E0892BC5E72755CEB7CB168C95E873 +:109DF0001EB73A21DE872C4CD5FC4FEB10A5213C39 +:109E00007F3EA6F1774CF31FAD43EE617A137A6C77 +:109E1000351D607A51075EEF94995ED01F931EBC8A +:109E2000314EE2BF35D9CC70D99A6C64F7CDD65A91 +:109E300099CBC36A66710CE31CC3C5D46485F9EB86 +:109E40003D2576DDFB38A1DF36B9EE28F75766767B +:109E50009FFF6045C225D28BAA5A6D74FEE3868EA1 +:109E60003CF20F7B4A06303E65833B05C2EA74F341 +:109E7000BBFD550A4CB8A2BF32128EFF597F85F345 +:109E80002A54B4CFBF097F75153F453FEA845EFC75 +:109E900090E6E722FD8D98F7EFB2DFF911F62B9EE1 +:109EA0008B7826E4FA7F5D34A25AF08F3CACBBD3AA +:109EB000C4E4637A44F6934C16A4B94E539D0E360F +:109EC000A41C1A86FC2DE15BC249C91D7C9FF0844D +:109ED000F6457A5D52B77426D5F9362596DB8AF0B9 +:109EE000F9A626C9C9DF8BC05605D7BF559BB72435 +:109EF000F7CE11B4DE5DA5FCFDADE794AD3C0EC719 +:109F00001D4B9BE35E9748AD0284BF03DFCAECBBE9 +:109F100088828E608995ECCAC7BF8710F8F29C537F +:109F2000CA299ED680ED3ECA638EC73554D0FCC682 +:109F30009F4BEC1C27A5BAC31EE20F69F21F8D7759 +:109F4000C7C6D1A5684AFA9F2A292F98F25F49AC63 +:109F50000E720CEA82C4AF6FABCCF0D9A8C2A1419B +:109F60008457299EF99D236AF02D07F61FB93B817E +:109F70002A3CB044814306C4C7D4526E570BCC96DA +:109F800000E190E462C6E70B51BFC6014CDF3038F8 +:109F90009B92265E376A372032B3A96EC3F1505ABE +:109FA000CAFD0EAE674EA07A81BC2F8FDE5F0B3FDD +:109FB000A5C4E7B2BAD0677B174F20FB5493AEF726 +:109FC000D0F9CEEFBB6302C9E1BA52EE57EEDFFA29 +:109FD000909BE165EF3A1F9D679081DB61EDE64D57 +:109FE0009FCBA88FDA7D4540FED424F1BCE26AEB1A +:109FF000CEA775F15CF737E1BAF27758779BFA5143 +:10A00000388E1B1F8B324BE3006E7B24E2B9565F08 +:10A01000ACF1E99F2FD8AAA77FA4C905E46A6B6FAA +:10A02000EF5944DBF0E1BA0D87C2DE87AD2CB524D1 +:10A030007E3C0A7F99081359FDFC2AF3BFF2FA36D9 +:10A040001C52693F6E27E08CAC4FAEB1919FBD882A +:10A0500078E4F1BECE4CF4B134036CE9258F0F796E +:10A0600051D1683AA322EC4ED8D941ADDE7712E344 +:10A070000FE5C5078CF6D5E45F0F44A74B3EE64FCE +:10A080005B12E83DFC560D57078C3C8F46C60AE62E +:10A09000627C384079B585FAB9DE7F772EBB80CEF9 +:10A0A000B7BF33BB6051785E2C879E99C8FC34B72C +:10A0B0004BBC4654BCD48B1C1C5A5C127C8AFC5D85 +:10A0C000F8878735BE055E23E73F5DCAE365C8DBD9 +:10A0D000007F19DEB34E2EBE633225DA75763B6CF7 +:10A0E0005A71736952B75DC0C179E0A0FBD3DA1C25 +:10A0F000561F7C5AD33FDA6E39DD3F20C59D125E74 +:10A100006F7D6B9AFEBDCEC35D7EAC7FF797B7A621 +:10A11000E1FD252CDF7F503B7F175F9790423CC8C5 +:10A12000DAFBDD6AFA2E09EDF4B0C65F79ACC14DF9 +:10A13000F176C6A38127593CB92B2A9BE2498509B0 +:10A140006E996DA1EFAC02C3EBC3E4765893D78C44 +:10A15000FFE4F11AEF77ACA5759A2DDDFDD5C57C2E +:10A160009EA0C539057F6F4DB369F7D40400BC8745 +:10A1700097C6FCFDA520CA794993C966423E3FA215 +:10A180003A12F9B35779DE7201CFC3FC8BD96EA5B1 +:10A19000FBE2474772187E57B6CB274C68C7871E2D +:10A1A000E4FE7EF16EEEEFA9425C897E7E99160F89 +:10A1B0006E7F44F299D0BF2D23FF3E96D16CDE9284 +:10A1C0000FC119C0794BFE243BED34CEAF9E0CB7C6 +:10A1D00063BAF6D2BA4B5B247F40A2EFD9F4FDB547 +:10A1E000B0F573F29B2B5B229ED74DFF84E2482D86 +:10A1F0002827C3E3DF71E6847ADA3DDA07D3FBA7C9 +:10A20000A5B1DCFE9DE0EC8FFD5BC07591F028E40C +:10A21000B948D1EAF74A20E926CA1F8F2464D33D02 +:10A220001EEDCF9CCFE2FD3A9DFCCF7911F1D7A076 +:10A230003FF52E63EDE4DD0FCAA976AAC39F7860CF +:10A240000ACEEFF8D4E0DC0134AE8E05F7CFCEE5D0 +:10A25000B27BE66768373CD8AFD7EE337ED616EED2 +:10A260006E955381FCF35F62D8F7491175FA8B75CF +:10A2700026A6DF8BE714ED1EA2FFEE0005904C75BD +:10A28000FC036FABEC3D8090DB991F70FF24703DA9 +:10A29000455B6FA9F69D41EB3309FB26136E62AC5B +:10A2A00036CAD3CFEC92D93EA7CCD6A7A81E736AE4 +:10A2B000FBDC818076B858ED303A912FE7ABB3E301 +:10A2C000A80EF9571C1760F2F2CB148F2757C05C09 +:10A2D0009A3739A0801DE7FD55714A8483CF3E022D +:10A2E0006842FA2CBD2FC0718B7FCBF34968559A19 +:10A2F000873BBAF92AC9D78EA1C9B7B28CDBFB2735 +:10A30000DB5F9A45E34FEF546DC4CF673B55367F13 +:10A3100039E2D680F83AB58BBF375CBE4FF2476161 +:10A32000FFE95D12C3E772C4A719E5B0F24ED56527 +:10A33000B4F6C47709CDA3718853C2BFC0F9729730 +:10A34000BF9CDD27345C9BF1DF654C59E2A1E53E03 +:10A350001BF27FC7AE7F0ECF91382E2BD3F09B0D13 +:10A36000D984DF0B753758036172E80BBFE730EE15 +:10A3700010EEC4F384DD0E2995ADEA63FEC3570CDD +:10A3800059F43D61A311B214D2AF21DA497EE1AB99 +:10A39000A8B8B1940F359879BB263A6E07B55F45DA +:10A3A00065F889DF35B2ED357A8FFB4E9983ADF3D1 +:10A3B00095C1AED23D606E62A894A5CA250697816C +:10A3C000DEA7359A441E6D269C0635B9BA313F4F3B +:10A3D0004079FCB84CD4A180E1B8DEC6FBCB640B5D +:10A3E00093FB852A943BCE577C231F2DA0FB48BBB3 +:10A3F0000A7E9A0F5DF9ADC4EA1060B7D27877BBD8 +:10A400000C5B683F17CF9FED605E477AB981FC19FE +:10A41000DD07520C600F937F943D1AEC61727E0F42 +:10A42000DC56F2478DDAF9C1E70A525E5BA5F11DF1 +:10A4300093354037BECAB284E121D63958B72E7859 +:10A4400078DE62C77FB4FF2C7A86FC5FE7E2FEEE1F +:10A45000862AEC0F5B67531497AF5AF039939F5BD2 +:10A46000C38B5AA0CF7FDC69E5A749FE78FE8FAE8B +:10A470008497E872C44B0CFE3212465EE67516EE07 +:10A48000F793C4BDA60EDC6171F3E1327E9F59568D +:10A490006E67FA94730C2CFE8454C818CFEECDB6B8 +:10A4A000741A3F3B66C09776D4D12FCADE5E44EF64 +:10A4B000DF664F1970772666CABF2CFB13A7730699 +:10A4C000EC198AF4D3AFBDCBE97103F254A4D74998 +:10A4D000EF2D2A453FF35C99EBE76549B48F4DAB0F +:10A4E0002BF275F1B9BF0CF7BF79B2E7096A6B8D32 +:10A4F00096CD94279E1FD1914179A6181F7A3535A4 +:10A500009DEE515D34F2E71C4D3468FCF7DE1E2DE4 +:10A51000733DCBF7D53F5F19837A1E472DE21AE5CD +:10A520005DBFE7CF71765CFF7692D720D2633EBBEA +:10A5300077ADD670099EC90CA7776B3AF9C40B7535 +:10A54000C3C8CE660546D0F7559506CF3EDAE793E9 +:10A55000ED8D69F528EF4F5F343967E2B853FE9708 +:10A56000E2C85FAFD0EA4970490E4CC3FE8AA1D75A +:10A57000EC20BC9E7B61535A0D9EE35019CF1FCE39 +:10A5800039783E7CEE0593366EDE4E7A578FF1E8D1 +:10A5900035924F571CDA7903E3F35A0BC61F8CE34D +:10A5A0005BA6F0BC00EFA1BED801AC85387CAE62E2 +:10A5B0002BB3F78E7E7E6FC5FE388A57F65B5378D5 +:10A5C000BD1A2185FEF53A0DE7D729815689EE752A +:10A5D0004EAB42E79DC58F4BFD3E05D7319841A557 +:10A5E000F38C84ED36C21972BDFD7242B7DDD6BF61 +:10A5F000CAEDB65EE27940FD7BB2D347F2D2FCC928 +:10A60000CA7695E50991FEF61333F72F2B2018C76C +:10A61000F4BEFD56665FC2CF76D9934DF96EFE75D6 +:10A620007BC977F2AF9F0BFF3A1EC6F7333FF88A1C +:10A63000F42DF4512657DB153A6F525636CF97B8A2 +:10A640005F5B1AC5CF27F453FFF3CC64163F5A065D +:10A65000B2BAFD528D67D89EC0F4799F4306CA27CF +:10A660002AF7A6821D1FDDBE5762DF1BCEDC9BC012 +:10A67000E8B8CE418CAEFC657231C475EBB5F2978B +:10A68000D730FAF4536FE4D2FD0BF5C1E47F01E358 +:10A690009C09BAF9117E16A3F0A305D87FA3E6574B +:10A6A000376A7E4F9C8FF243FA6EF2822B967D3F83 +:10A6B0006ACDD7FBCF7897DE7F2654E8FD63925BA7 +:10A6C000EF1793AB86EAFA0779BEA7EB4F5D96AD1D +:10A6D000A3D3EB26EBC60F6928D6D10EDFF775E3BF +:10A6E0003337CFD1D1C39BE6EBC65FB36D91AE7F5D +:10A6F000A47FB9AE7FD4AE7A1D3DA6E587BAF1E35B +:10A70000F6AED7F58F0F6CD1F5E7B43FA4A3F38273 +:10A710003FD58D9F787487AE7F52E857BAFE29A740 +:10A720005ED4D1851DAFE8C64FEB6CD3D145F08622 +:10A730006E7C89F98F3ABACCF6816EFCF494BFE84E +:10A74000FAAFB59FD5F5CFC8BAA8A38314F7C71140 +:10A750002EB85D563ABFD1CD0FC286E1E4F7164E52 +:10A76000F12C2847FC1962CE2914678E2E94200103 +:10A77000A17EA17DAE8D70D8DFFBFAAD11F1EB4B60 +:10A78000B0DC4CDFA99AE80BE1CC9EF3055EDD66F8 +:10A79000BB91EAE28B7CBF3FCAFC173D1AD8EDD7CC +:10A7A0001669F518D8AC9EEBF20738BE879FD3FC2C +:10A7B000DF48D860A3FB9FF06F7DF14F96F4B1584E +:10A7C0000FF93DAF62FC423B925C7836B46309837B +:10A7D0006635FA4D69DFEFBF667C3DEE349BD9BD2F +:10A7E000B4DA467E47028FE1F228B2D799407584E9 +:10A7F0000B2D12B3D7C875445E66C5B0A484C92BAF +:10A80000DE6506254C6F0915361D9DE44ED18D4F32 +:10A81000AEB2EBFA0779B274FDA9CB9C3A3ABD2EE1 +:10A820005F377E48834B473B7C15BAF1999BDD3AF5 +:10A830007A7853956EFC35DB3CBAFE91FE65BAFE24 +:10A8400051BBEA74F4989606DDF8717B7DBAFEF18F +:10A8500081CDBAFE9CF6261D9D17DCA61B3FF1A8F4 +:10A860005FD73F29B44BD73FE5548B8E2EECD8AB46 +:10A870001B3FAD33A0A38BE0886E7C89F90F3ABAF9 +:10A88000CCF63FBAF1D3534EE8FAAFB59FD6F5AF49 +:10A8900038EB0CB0EF1C7F27B1BFA711F89991F5E9 +:10A8A000B96E9C9A88793B7D4F00D14ECA0FFACA87 +:10A8B000D705EE2A9D5FEBF65D23D7317B3A513EFB +:10A8C00054CBE321148574A3CFCDEADD36B35D22EA +:10A8D0007BB2FA24863F4A89ABD93D37917DFFC3CD +:10A8E000420FF267257B416280C1E1A0FB444CB777 +:10A8F000DDA45DCEE987DD687959FA74CF47E54973 +:10A9000074EF7AA19CEE2BCBCC4DCCAECBE4D1D660 +:10A9100010FA93B7A37AAF3B5D6B463986ED772487 +:10A92000AA292DFB0A7EE75AF33936BE6B5D95AF37 +:10A930002BE1F9C2EB330FE03D4A41FFD2E4453B46 +:10A94000C30BF0435E1BA31FF1A630FA275E3B6BDF +:10A95000B779B358FB53AF93F56FF7E633FA71AF9E +:10A960008BD17E6F056B7778DDECF94E6F15A39F69 +:10A97000F27A58BBCBBB8CB5BFF2D6B1FE67BD0D2A +:10A980008C7ECEEB636D8B77337BFEA2B789D1BB18 +:10A99000BDDB18FDB2D7CFDABDDE5DAC7DC5DBC255 +:10A9A000FAF779F7327ABF37C0E880B79DD16DDE0C +:10A9B00020A30F798F32FAB037C4DA76EF29D6BEEA +:10A9C000EEED60FD6F7A3B197D4EAB2FA64ED7DEC4 +:10A9D00083C91617BB6F155FB38370279E974EF31D +:10A9E000A44ECF63DF89EF25BFB53E66ACCAFC7FBE +:10A9F000849F8BD4C3196D7DB518D3477AFF337804 +:10AA0000C40EFA9E739D81DFDBD70DB0EFA03BCC67 +:10AA100088E9FC9EB2291A7C512C9FE579EB520DF6 +:10AA20008790C8FDB8780FB154C37D1EE1318BE12A +:10AA3000F1CDFEF871714F0E147A264CA77ABCA5A1 +:10AA4000CEC8D33A27FBFBC14A13AF03751C919DB7 +:10AA50003BEC7DAF5BAB7DEFDC67FFFED369141F82 +:10AA60002BBE953D2487B7D5D82AAA83546872ADEA +:10AA7000986ED0B533A7BAA7939C97EEFF018B8B46 +:10AA8000D5770EB7929CAFA34F40D07E67835D65AC +:10AA9000DFCDE17DC141F74DBC90127D13F8589B8D +:10AAA00055E871D379E661624D744882A7EE92E869 +:10AAB0003C1CFF917C546972AF9A6ED0B5CBA7BA9B +:10AAC000AB888FDB264FBFD9808F7E3CCDAE7D7F9C +:10AAD000DFF138F1519BE1399E9AD95D67A886A0D4 +:10AAE000CADFDF6979A8563FC53C95D51FAAA5687E +:10AAF00027DD1BEE2BD2DE27FE3996DD573FD4E251 +:10AB0000DE879A3FBB50A7325C54FF39C64F758829 +:10AB10000B757FB5102C457C5C88F71B7A8F5E8D9A +:10AB20002DBD8FA9A6E22EAE57BD5662DF91F7E587 +:10AB300027C5FB99E9050E76BE6ACC7FD9BD299160 +:10AB4000FF3F3F297507D5477F56E869A0732F9FC0 +:10AB500024FB8CF477A336FF08AA336E32703CF8DE +:10AB60005E9799DF566C6E9744F5D7EDF1E3D9FB0C +:10AB70005CC40D7D071BD0F42870B14AFB9E5EE0DB +:10AB800001F1B681F4F3D96F2766112E6AF74F628F +:10AB9000EFBD1B0DFCEF77C4FA402569DC4FB68E84 +:10ABA0006EDEC2F5C7CED93129D64FDFFDB6CAD089 +:10ABB000F0422F7EF2571AAEDE4E5159BDAD51B361 +:10ABC0003FD1FF84C6DF13DAB8CAB623E9F4F74AE7 +:10ABD000ABDA5527D5912137343ABC7ED085E38650 +:10ABE00027EE191686F3DABD27789D1E42A3E7C427 +:10ABF000727649EF1B357B15FBA894975130495469 +:10AC0000CE75DDDF86929C783C1078948DB19E667F +:10AC10004BF839BAECE169660F710DCC1E100FAB21 +:10AC2000C9D8432842AAB7787E613312EE168193C1 +:10AC3000B5B7819BB54B112684FFDBC1CFDA3B2032 +:10AC4000741F7D10E4F6D56450BCA9858ED214948F +:10AC5000E30D9BD7BD9682ACCC6D7AB06C10F27DC3 +:10AC6000E376873A18DBD93BEFDC489F17A23DBD5E +:10AC700042FBCF7FB66823D577D19E3EA6FBD22C70 +:10AC8000EDBE8F3874C9882B39CECCEA62B73DC48B +:10AC9000FD664093EFF2A9AE00CDAF5E0F0C2F1D05 +:10ACA000AF9A98FEBAEC29FF8EE3A906CA07817D08 +:10ACB0002F7AFED591FE75D8BF1C789CEECE3379E5 +:10ACC0007C16767046E57838F36B897D1F7F46C227 +:10ACD000F9D97DE35FE49B68AFDCFE8EC5327BF97A +:10ACE000CAC0F304C8F0A4646792BC7CF7517DF934 +:10ACF0008CC13F212E93C5EB0F887FB5D8B3753C2F +:10AD0000D5E99E939C8DC8CB99787F469D45E7FFFA +:10AD1000E1720C3929BEDE032AAFF344E6B7E21C28 +:10AD2000917C9A8CE0A3F7A85D794DFEE1AF29EF05 +:10AD3000E8C9AF27855E6036922A32892FB7BD37C2 +:10AD40003E3644EC2FF6956C7CDDF6BFF33AB72F18 +:10AD50001DD8F73757AB8B9AA2397F223EF5E48B8B +:10AD6000EBCB5CC1EBA6823F74205936DC4751A285 +:10AD70009D64C77F88E27529516F12F7F57CD9630E +:10AD8000AAC8A37E5EAF6A777C328CC5D74B8D692B +:10AD9000FC3BC300CBCBC43D6696B0AB7C5567573C +:10ADA0001051EF8182DEEF3F6EB34D253B984BF1A2 +:10ADB0002493EE431F0AF9B1FBD0FF03211A67D792 +:10ADC000B0400000000000001F8B080000000000E1 +:10ADD000000BBBC5C6C0F0A31E8185D851F9E8B8E9 +:10ADE0000C4D7E03337EF584F06AA0FE6540BC10F6 +:10ADF00088E700F174209E04C4BD40DC01C46B5898 +:10AE000019189603F122209E0BC43380783210F774 +:10AE10000171272BC21C37A03F02D8F0DBF5981533 +:10AE2000532C9213C13E41C0EFA378F8E307DC0C2A +:10AE30000CB77910FC005E54F987DC08B6A52065D4 +:10AE4000767901F503006133110A800300000000E8 +:10AE500000000000000000001F8B08000000000040 +:10AE6000000BDD7D0B7854D5B5F03E8F39F3C8CC9F +:10AE7000E4E4452621C0C903081270081103A21E8C +:10AE8000206254FA3B3E8B5E6F1D1E2A208F88B4D1 +:10AE9000D2D6DE4C1E8404A20D881681E2808AB6CA +:10AEA000C26D50B46883777854638B6D68B1A257D4 +:10AEB0006DB45E2F568414AB582FB7FE6BADBD4FEB +:10AEC00066CE4902D4DEFEDFF75FA8DDEC73F6D96B +:10AED0007BAFF7DA6BAFBDC7ED1FCA328731F625FE +:10AEE000FEB994B1952EB65B3A9F318F27DC398B32 +:10AEF000411DFE6313196BC2320FFE8BCB2A9BC020 +:10AF00009897F13F4A81FCAE3BC8D8CD9AC1580E04 +:10AF10003C0865527B97BF8645E1D1D66F2B33DB6A +:10AF2000FDD8D2646C1063067E08CFF7B77C9657C5 +:10AF30009ACDD8A38D45B21B1E153389B10B18CB02 +:10AF40009F9FFD8BD20A68D22A3305DAD5B70CCA87 +:10AF5000EF86EFB7149AF93AF5C364ECA7D0C3FBB8 +:10AF6000612C46FD0E63BCFE68E3B5E9AC0CEA6DEE +:10AF70004D7F528249B8AC72784C66090F9FFB979F +:10AF80000CBF53FFDC5D2AEA858C55E03F100E565E +:10AF9000C5104E43B43DF0F6A93C9CD763302F3723 +:10AFA000EB3B8FFCF915BE5129F3B6E681F333274D +:10AFB00024E7F7B7CE87E0CBC1A98415A660D53CBE +:10AFC000149A4028E67FD49FCB91318C35D41AED6A +:10AFD000252EFE281BDE5F2CC66B50C31EC4DBC5AE +:10AFE0007E39E61EDB777CD50FDFA58CCFD84CC22F +:10AFF000A72A9EADAA05CA01C0CDB51E2A97665CD8 +:10B00000EB61D0DF846CA03BF4D7E2324311A87B24 +:10B0100083915004E01D9F3DFD4306CF27EAB7CF43 +:10B02000C0F217C39B8EB8012F2B74CD70233CEF59 +:10B03000ABEF217CA5F0F7CB2278AE7666E2FC265A +:10B0400030FEDC823BAD14EA29F31AEF787FB1AE13 +:10B05000CD92A17FCF503E2E6B4F690FFD5E9C7D40 +:10B06000E39D12D09FFDD9FEDCC2E7DE5A9D9923F5 +:10B0700019DB5C5B4A703D037503EBFF6DF12BA799 +:10B08000AF26187D699E0C88656CDD11632BB26A52 +:10B090001BFE1FF4F388ABFB26649A589E663C2E79 +:10B0A00061CBF8C3B743BB076F1854BE0AF03F210A +:10B0B000C2F1F4A0D4FD2E7E1FBB86B77B460D5F88 +:10B0C00087F507AFCF9463525FBA8EBF5E8EE5C23D +:10B0D000FC2786008F41AABF3B722CD2FBF18FDC8C +:10B0E000F05D59B566AC82EFC67F3E8819598C4D2C +:10B0F000420683793CF02A8BD7E3F308A7C32FBE1F +:10B100003DDDDB5D96C4BB097F110FEB06C0BB9331 +:10B110007FA6AAAEE47BF8EF629817CA7B1F7A5429 +:10B12000033D82FDD06106D061ECC074B0CA15B594 +:10B1300071F687E18CDD5F1B22BAB4D41A54B60ACB +:10B14000FAB461D3897DF9F73E99CD6B07F8EEF338 +:10B15000B1794F239C6679BFEDAC92B13AD233F707 +:10B16000A3AC4CA2E998AC92B1F4ECDE7AC257825F +:10B170007C0DFFCA17EF0BA07FA9B71E6300872FB6 +:10B18000D93E9606EDEFF7F2FABFC73698B1826462 +:10B19000FD23F680199BDCF77D8B2B6E4AE3187B31 +:10B1A0003E768B59E6B5F56F62FFA9F3F34CEEDB03 +:10B1B0005F8B97B7FF2BFB3ED59BA44408F5039507 +:10B1C000610002BEABAAC47EA1AE33B62D331A3BDA +:10B1D000303139CE11168DC580FEB7B2C83EC4FFDE +:10B1E0000629DEA014E2B86D3319CCAB13BF877EFD +:10B1F0007D93F9B89DB116B3414DE2E5B7AC318608 +:10B200007058FA57117CAB346B31D4BBF52D9F9934 +:10B2100012F0A392C574B781506492FD907593A10A +:10B220003EB7E8A1E8EA07A9FCD5CB17A2FDC07498 +:10B23000E4ED7AE7EF8A4F9361FEFBF015D4A74E59 +:10B24000AAFCF564185FEB7285515F0711AFD065FA +:10B25000F0B4C2269563A3A829010D5B81D1514E9C +:10B260005F406607BE48AFCC67F1D4F9A8D150243F +:10B2700090EC17C63B8AED2C7C9D6D7C15C737FA88 +:10B28000195F3569FC2631BE73DC166F7826EAD566 +:10B29000A9232AAF66D4CF70D92D25BF6B1D65C8F1 +:10B2A000F8DD1889DB4D2FF65F9E84C38BE3C078F1 +:10B2B000BE12E837458F5AFD015E18EA63EB3BABDF +:10B2C0003DC04B746B1D65C78BB31FC05F08EDCECF +:10B2D000C0F4DFC6E93F1EE8CF52E81F06FA979D8B +:10B2E00003FDFF41FD7E023C8CF02F1BA7C563854B +:10B2F000C28FC94CC26FC16BC1E784BB49325F9F2B +:10B300002C113D19E2CDA2E727F85D4E72FC3E7C80 +:10B31000C4C284F7D6432EB6EA0CE35ADF3BC75DBE +:10B32000F6EAFE1058A43EE33AE7EB1C37F3F3517C +:10B33000CC04FB5084BC0378AAFF9E4676AC6939E6 +:10B340008B23FD9B3A2F233F65AD1CED447E8DFD85 +:10B35000C6C51E872ED7A23E453BD85C41DF3D12B5 +:10B360008886AEF50FAC4FD7819F100382AC853233 +:10B370003E12F1C4C88E66CF53C98E35B98C961271 +:10B38000ECFFDBF2B8C7193D7F3717EC4293D75873 +:10B390005395F23C07DBE3F340F89592ECE4F3AC11 +:10B3A000AFBDEF9DE5A7F7EFE6A6F875391199C592 +:10B3B00052F034548B4623FDCCF35E4926FABC8010 +:10B3C000F685EC3DB72F437DDDB3101FDA02CDD8F3 +:10B3D0000AF8D8FCED1BF367C3F7FB1E1C21BD5711 +:10B3E00086769BCBD766619FACFE32971B12FA41E3 +:10B3F0002FB8BAF7063318AB9198590378CF3C169B +:10B40000FE27D4BFB5D26EE686F12AAA79BDF2FE38 +:10B410007F632F539D91FEDC587798F4E986571F80 +:10B420006DC0F1977D08AD60A8496A5CA921BC6731 +:10B43000F76BC71EFFD033330EF39AB4AEA9EB3AC5 +:10B440006286B88D6F2E3A6AA7FF0B02CE6704DCC6 +:10B450005189D9E44B13F2A5F5CAD7883A15F5C33B +:10B4600009467A73922772F37CA84FAA66E106A375 +:10B47000EF7CB46A90B314FC033CD352E1F99F8291 +:10B48000E356663E245D30707F7DED427433B69F97 +:10B4900024F45B6675BB122D3B13DC37129CDA5526 +:10B4A0008CF4F540FD3BE1451F0CE70DE36D977211 +:10B4B000FA8EF78FC207F4BB9FF4D8DFD96FE6513D +:10B4C000A75E6F13FA24A1A2DD4BD6230CF58B36B1 +:10B4D0009445D1DF52843EA13F30B45A107E14719E +:10B4E000D12569D45E0D7908AF376BD12EA2DB0C64 +:10B4F000665B377AF4082825E82FBF349DE8E2EF31 +:10B500007FFECDB5914CD595527731E19F7338B41C +:10B510002216CF42B84ECF31AE1D936C9787F34BB6 +:10B52000E96FC310EB3BFB7C2D7FDDA54F18BF0AF5 +:10B530006A4771FE397DE70B701C9552F4BBAAC7B0 +:10B5400018D177FE083EFFB9D9FDFA2B799EEB3270 +:10B55000D5AC245F16CE30EA5583BA34910FE91585 +:10B56000D41FF01F3D12857FAE667CDE6EB9A71337 +:10B57000EDD36677F414E22FAFB98B49D02E6B462A +:10B580008245018E15880718F732C5EF453DD5660F +:10B5900016A5A3DE1A224B36FA5AE546D0CBEA703E +:10B5A000BE8EC3F2D4DB2369DE03F17943AD2723DA +:10B5B00015EF0D0BD5EA38F4DFE07FFAD074007593 +:10B5C00045764939D9E679928A7078250E47BA18B6 +:10B5D0007FE3A26F117E006FE932C0EDCAE6F8B2D8 +:10B5E000F808FFA829F01799515387F75993F93AAA +:10B5F000B510FC53F473329A5938C1080F21EC2767 +:10B600002F9448A0090F54E953118F161EE08F178D +:10B61000EDC59A578697231DAD79DF2CCB9C7FCB48 +:10B62000B89FC0D430F97303E98D56C053D970E286 +:10B630007B09DB6DC27A0A1EDE94A2A364A447D8FC +:10B640001753609E7973E312C2F5B064CD23447141 +:10B650008346C137ADE53EE2B7C621FA16F4172B93 +:10B66000646E87D826C9C95F15728A9C59FC9517E4 +:10B670008E52BCE1DF5CD14AC2E3B2761DE5C6372B +:10B68000B75B477F60A5356E8C75617FD9820E16DA +:10B690009F67961A5B91CFAB055DB22B9BEEC2758F +:10B6A0005A56994AEBB8ECEE59B4BEF4BD75C5874D +:10B6B0008C3FA7F56A5EA48B96A5F9A5E65EC4F754 +:10B6C0004E57B41AC7CF9C78C0243E04FA6800CF06 +:10B6D0001A5794E13A529B1C37711DBE71D18D6C83 +:10B6E000560A5FDD24F0EF02F3132F4BD2FD01E188 +:10B6F000D87D7F72B9F78E326CE723BC14B1EB8929 +:10B700000F0A5984FC5C2D49FF99881FFF8CB629CC +:10B7100038AF4048AFC77900DFE7229ED6B8F43C87 +:10B720009CC79A451AE93BC0C761E4CB7459E0C392 +:10B7300080BF809F80CCC72D925D349E0FF08D4ED0 +:10B74000A6BBA8CB54409F825A0A63F37481270B8F +:10B750002FAE9270A781FC388381A709EF05DE5CCC +:10B76000A5E00714117E16227E0266C2447C69D9C8 +:10B770006D7B310E74EAED0BAB910E27FD3243FA6F +:10B780005B7CE8E43FD50FF2D6AF1E0E935F9726A1 +:10B79000F4D94B52F4DB728A1ED2F23B43D1147FB0 +:10B7A00047D3B87E6665D7733D529008CD81F13D91 +:10B7B000A1D03842B9AA535CA3D51AAB97FFEB6965 +:10B7C000BC16E1E768A11AE23F6F4994F48DC7689F +:10B7D000A3D25DC0F9D27AAF2D578CF75188CBB880 +:10B7E000FE6B0A5F9B8E7E91E649105FF8DBF632B6 +:10B7F000C42B8845F8711A31CAAE0F20DFF3B8D7D1 +:10B800005350F2B8439CC6771B3E9648B173DA7228 +:10B810008DF72FE431EF2D37C95DB6B03F6F4A91F8 +:10B820000DA4172C39B4EC43E47A2EEFD55E82F7E1 +:10B830007111A7EB2BF71CEE53D07717E24D8DFA61 +:10B84000D01FDEB66EB60FE1D8B6FEDAF454FC3A7D +:10B85000CB87413F244040B7805EC57263AD4E65E3 +:10B86000AFDE15F1A44D424EADE75E85EB8143425C +:10B870002EB779223E8A6FEEBFE9CA5180CA92C3C1 +:10B880004A1875C3E035ED19671ABF60A16CC3177C +:10B89000536E39E37C97BF7528E3404AFB7D7220E5 +:10B8A000FB83D1F08F0BD9855F2A67FFFE546D575C +:10B8B000C601D7DF8F974D220EE1556EAA8B21DE90 +:10B8C000139792DE2C12AA2BAF99D13AAD64198B43 +:10B8D0001BD8F6F497FC7D6FDCD7F4CF823AA96AC7 +:10B8E000A86F6B9EBD0AE56CC86B0AC375F87094AF +:10B8F0004F8C3BADE371270FFCC5B8138558A0DF13 +:10B90000E2B92C9E8076C56DF638631E6BA5B8F142 +:10B9100010477C2B0FF500EA4596D21E9E1780B08B +:10B920005796FFFD74F804E990F6FF9E0E1BD5763E +:10B93000AF9EF2FD608945905F072F7A5F9A9DC2A6 +:10B94000AF1E85F3295BEE677F4889E30D96127978 +:10B95000A83FB72C94C93FD8B890C749DDD9DDFFBF +:10B960008A9F9C7A67751EF957833EB804F5618EED +:10B9700092C6FBA966DC6F60763D0476304749F1DC +:10B9800017B6345E4B7A07FE1CC6F8A821E8BDF155 +:10B990007483A4011D872F67E17AA81B82DE55EB13 +:10B9A0006AF6BAE079D132EEC7B3989DFE45733995 +:10B9B000FD87B772BE1AB25C7DCF1E2708D76B30E9 +:10B9C000DF5C50BF1BA056B2CECE1FB9C21EE43AF8 +:10B9D000F8C3003EC8023E28698BAEC2FEF30E2BB0 +:10B9E000DC47768C3FDC68BF02F15302788A93FF14 +:10B9F00099D28F82FC15AE477A38F93217F9726CFA +:10BA0000DF71FF5EBE9BAAD8E5FF535676F39350D5 +:10BA10007D64C5F64323A855444EF5972CBEF333F9 +:10BA2000B31AE9C422E7B61E63EC72D2C3D67ECA4B +:10BA300094A5211FC66B3669BA0FF75562BF53181C +:10BA4000DA874D4BF3F353E7BF45F8775BBCBC9CFB +:10BA500025F8F056C545E51C85C7E13705791C7802 +:10BA600020FD6ED9D3919FFB59222BB5AE39EA2A1E +:10BA70004B8C4FAD07A9DE98C3C8EE6CC53225FECE +:10BA8000B022D0CEF8BED45C19F59322F4D3FE8C4C +:10BA9000E91E84AFD15F2EF681A204BFF5BED15F4F +:10BAA00094CB52E06CC438F7C881F1B802E3DCE80B +:10BAB000F78BB8CC569719CA80B231637A6856367C +:10BAC000C6C706917DFF9EB02B0A8E09CAAEB16132 +:10BAD000575D3DF0E61A66FE8B7201FF0EFDABADC1 +:10BAE000191318EEEF413B33DE0FBFCC577C1C6FB0 +:10BAF00086FA853D6EEFD7895F04BFDEA6445B9171 +:10BB00000F62535902FDB518ACC71AD09ED7801FDB +:10BB10001B48D21FDAAD11ED6218BFEB6D17B5D619 +:10BB200003BDED1EC279423BD3D62ED2A7DD46D14E +:10BB30001FB38D6BF619372EFA4BB0D4FEC27DFAC7 +:10BB40007B5CB48BB1D4FE8C3EFDFDD89A9FAD9D3D +:10BB5000DEA7DD4F443B661B97D9C7ED7D3F54B34D +:10BB6000DE93BFB722E7460FAD97E2336D7CE5A4C5 +:10BB7000D3BE1CCE670772A657231FDCFD8A8BD667 +:10BB80000B7B73ECFC67B56FA865CD0B5DB80E64DD +:10BB9000B45FD8E0DF4AE358CF7BDBF9B7EAFD3F7B +:10BBA0009F3D40FBD9A2BDE78C7CDC20F8B841F07A +:10BBB000B1F3FD052A97EFE652B027FDC8B3A9728D +:10BBC00079676A84D6715A296B2F4BD167FFBFC042 +:10BBD000394EC0D15C5ADF3635CCD89F952FEA3C20 +:10BBE00040FF96D0DAB629507F8D7D515725FDEF65 +:10BBF0008333A3D1539F0AE70B314FFDFF4638C76C +:10BC0000AAB936381F61B9F5558503C3B942C4CB0B +:10BC10009DFD4E54F9FA79A52B427A7B45CEB74269 +:10BC200038DF1543B87EBFBAF18DBA3A3F36894E38 +:10BC30005661FC95F05F17DA23D520FB72B6EF3C16 +:10BC4000A3D408CA594B88FB6FD6B8AF0B3B62959B +:10BC500047C879037F2D4F25FF8EE568F1E1021E6D +:10BC60008CBB7DAAE836B9CC54756E3F44FD7CD5BB +:10BC7000FE1EFEF105FA313AC25FDCD7AEAC157696 +:10BC8000B6AFBD8DCBA9F636C3B2B7578CA07DEE4B +:10BC9000FD2D23AEC07D86C6830A23FFCF6177F7D3 +:10BCA000B64CEF34E0FDDA4E97786FDAF4EB7DE0D6 +:10BCB0002F231F80DECC65C4177CFFD9F25F7AC7C3 +:10BCC0000BF0714E829FE74EE1D346B11FDD28F69F +:10BCD000A39DF43C2DF4DB0E18C7800F9F04BEC358 +:10BCE000BC830D508F42FD51A847A1BE13FC742C9C +:10BCF0005FAC0DD1F315B506954FC17CF0F99ADA1A +:10BD0000309589DA4A2A5BD0CF87327F974C71967B +:10BD1000D5E8EF433D5ECB5A31DEF7FD5A0F950D66 +:10BD2000B53A953FA90D51B9BED6A0725B6D299564 +:10BD30009B6AC3543E545BD98AF1BFC9D2B52B91DB +:10BD4000AFF2E731A27BFEF7466C4597AB78974A96 +:10BD5000E314B7821DAC483EB7E09C2C4D6DC5EF97 +:10BD6000C6EDE6F31977000C5EFFEDD660BB4B76AF +:10BD7000F3FE2EF91CEC7476BFED1E52318E149733 +:10BD8000C95F71411BA9FFFE36627FA3E32AB51B81 +:10BD9000BD9D511CA99F7671EC2FE3313EBF8C2ACB +:10BDA000161BA0DDE3D8CE7C8CF767322931C0B8F2 +:10BDB0003FC67681CCF0AC08F167FB1419E36FD570 +:10BDC0007A26C6230359E1BBF873B31E9F7B4BF859 +:10BDD000F3606F7B633F3EF7958AE7BDED7B14050B +:10BDE0009EA795897E34DEBEED0AEE376454E95B8A +:10BDF0003D308F27AEE0F4C9AC36B6603DE0E6DFFB +:10BE0000EB23DA9804F29651A24B12C03912EA32AF +:10BE1000C86B5033A6C8F07DD6954CDE0A9FB69D00 +:10BE20001767123CCF28E5ED9E80BA0CDF05DD4692 +:10BE30001DCE2BEB2A68077CAF9FDF4EED5688FDA9 +:10BE4000A491E7EB7BF17D5A9521A168AC13FB4DE2 +:10BE500099658624C3F885556C2A8AFE7C17336F52 +:10BE600080EF57DCC5F5CF6F1A174FC5BC85F42A94 +:10BE7000C6F31C56FC6C6A1DA896403E8F5F0506F3 +:10BE8000878F44316E74A146FB7FC1FC70770CF53F +:10BE9000CE04DF38DC9F0C0E0E1F8DE3FB8BF87B8E +:10BEA00060D5989E09729C7EAC74D619D63F56F91F +:10BEB000C9C16914370C56C8CCECC7DE58A5966DBD +:10BEC000DF1FC9AB8ED5213C17223C08AF80E75855 +:10BED000E377A6623EC408B1BF37D4F5248707F7DD +:10BEE0004B603E816189BC3BB253E0199A285C5992 +:10BEF0009102CFB0C4A827B293F0640B780AEEE6A3 +:10BF0000F07CA29AB97A3FFAC439FF9C887D9F6879 +:10BF1000ABCBA0B8A8523D62032E7D9527F9FC5605 +:10BF2000AC185D5F5F02FA2087A9523A94627DE502 +:10BF3000F2B0661C17F183FB096F0B7DD54B970E92 +:10BF40002D96D54F1E99550606B31ADECEF32EB6A2 +:10BF50000B8AEF821DBE337E1714DF053BFCEF66B4 +:10BF6000050786AF2F3DA2F52AD8D788EBFBF283D1 +:10BF7000500F550B7E8A6D9C3AA5A42F7DD65EC3CB +:10BF8000E15D2BE0CDB6E005FC6602BC9F5AF05A9D +:10BF9000749B79167887C1BCA99D80577C179C79C2 +:10BFA0001678C577C19976784FE3A6C60567A76B63 +:10BFB0008380A341AC8FB3D5B3C0B10CE0E8271F99 +:10BFC000B20F1CCB3C349F5E3896F9CEF85D2F1C27 +:10BFD000CBFCEFA6C27BAE70AC1170AC09887C01C3 +:10BFE0003FC0517E06386E3947386E71C071CB390B +:10BFF000C271CB5783A3578E043D5C821E563F7D92 +:10C00000E468B0199A65D36FA65197A2DFDEB6C671 +:10C010001D6C966E49D1736A16D7078D38DEF950BC +:10C0200006C478026F038FC7062FB48D07A6BBDF47 +:10C03000F1C064A68C17DECFC73B5B1CE03A357AB3 +:10C040009F4BC401948A81E300D06EAD4BACB39595 +:10C05000EC81E300D0EE07A29D696B17E9D36E93E4 +:10C060001897D9C635FB8CBB45F49790B3078E0360 +:10C0700040BB6DA2BF985C31701C00DA3D65CDCF2E +:10C08000D64EEFD3AE5DB463B6711D7100C6EEA29D +:10C09000F8F6371DFB32CE327BAE66CB17CE9C61F5 +:10C0A000AFFB2BEC750DFEF6C6070B93E359FDA510 +:10C0B0005BFBF8D11A03E7B32A103F82F92A875CA9 +:10C0C0007F989A0DCF576570FD79C8F5513DC5E948 +:10C0D000B1027EB0DF8AC34FE6F1BF53E364822F23 +:10C0E00038468D338C4B3299FC427F8116C738A776 +:10C0F0003FDC25519E0DFA1C340F1E5F0B54447813 +:10C100007C57F4030C73C6FD59B554A3389C5ADA16 +:10C11000DCC54B95F2CF595B9FFDD47710EF6EDCF9 +:10C12000DF2B4EEEA75AE30C84DF243D5829E6C1ED +:10C13000DCC37C61DC3FCDD098A4C2A7CB0B78BC1C +:10C14000F99B72F48FC8275A55CDAD8D5097A62F05 +:10C150001F89EB8F106602813CE8B9C27F99E30921 +:10C16000A37CE9D326D33E1DE809DB3A6F8CC6D702 +:10C170008D5FB814C2879EC6F510F3C4F2AE49C9EC +:10C1800067088976F0FE2EA4CF454DEAFEE64AA860 +:10C19000A7B37112F823996BFCD3AA012EBD587C6A +:10C1A0005F30C0F7C56C27B60F6BD27E15DB0F630F +:10C1B000642F2F6C1AD280F9A0FA486E875985B186 +:10C1C000A511E6BFFE9F078DC33CC0ACFFB3BC10FA +:10C1D000F5406F3FA3392B4CC4EFB07D14FCF6093A +:10C1E000C97CBDCDEE6850C37DB9EAAE04AA16C5C0 +:10C1F000EFCC5B284B7F2F050F83347BDE42532D22 +:10C20000CF57B0EA9AE75719EF8F87EF677928EE93 +:10C21000169AADC5D1FF7E5036ABB40B68FCB8633F +:10C22000FCA1F8FC5CC72F157025C7F7B0D4FC073C +:10C2300067B972E877F2A2840FBEAE857991FEB13C +:10C24000E635563C67FE581EC9B90E6520D9BE6D4D +:10C25000DABF48F8FD71295A41F30F45D5D47CC7A0 +:10C26000AC1926F1ABD5BE01E09652FAB79EB310D9 +:10C27000EFBFB75ECDEBAAE07B7DDA2D14F750ABB4 +:10C28000783E0E9B69CF6B51F51A2B4F2384F3E850 +:10C290009BA751A0D3BE14E37ABE375EF94E20DED1 +:10C2A00080FB3BDEE05806766FB98797F7F8825B34 +:10C2B000B13CE51D1AC77D9253725BA7A424CF87BA +:10C2C000785DB118EA07904B13FB3CDBF7CEF140E9 +:10C2D0003F9C8FF36A29698B207C2E15FA33E8B9CD +:10C2E0007D3F5AEC735B7BEA9A27EA29C43839AC64 +:10C2F000D763C80F6DE3281EDCBB2F0DBE22E505FA +:10C3000085D863222F88A5F293A7C4BECFE22AF076 +:10C31000D9F42C9B1993703C4B7F5BFBD6AA1F84EE +:10C3200095F0690ABBC0F5310EC1E31EDFB5E97DAA +:10C33000D5CF12DE20C257CE52F74154C6F53AA6E9 +:10C3400023723DFEDD73B2177DC6BBDE3ECF73FEAA +:10C35000CEAF1A1FA4D8FF81BF53D90729FB59AD0F +:10C3600098680774BF73C7A79B6340B7634F7FB4D8 +:10C3700039067858F8D74F367F17FD8F17BD3AEA40 +:10C38000C7253FFE8FCDDF017A7CBCDB2D7BA0BEB5 +:10C39000E0C71FBEF35DA87FF6FCC84C0C3D6D11D5 +:10C3A000FAE1F8CEBF0C32A09F657B2EA3F8CCB289 +:10C3B00067A7D9F6519CE571D0237177EAFCE2D4E6 +:10C3C0008FB15BC2CD34C63A44C94CBF04F85C8C13 +:10C3D000FF84F1F6EF529817E6F7F11137E5C92E11 +:10C3E0008167CBC1BF5ADCBE88F619B17E2FF877C2 +:10C3F0008BB7AFA47DB925BB5DB6FD3AE0D8C1725D +:10C4000008CBC4604C095ABCEBBAAB2FAEC0D245C6 +:10C41000F9254B584F13AECB9CDFE1F89F43BF4B40 +:10C420000E2BB3B4F3FBBE5FC222E9B86FBD647BD1 +:10C430000B1FB7FD6BFF8972B2C4B12FF831FE63D9 +:10C4400062DFFDBE8466DFEFFBEC4737A527F0E532 +:10C45000AEAC7EF352ACFDBE45CFDE70C67D45C4AA +:10C4600073E21CF0AC5F2C47FA8BEB03A7109F3CE8 +:10C4700024F224BE3F59CEC3943ABD85EF6BE953F5 +:10C480003FEF2C86FA23F3B3C7213F58FB7A7E2671 +:10C49000F49ED8A71C489F3C34846DC2F2C13C284E +:10C4A000CF4FEA975F69D1F7B59C81F5CC4392787D +:10C4B0009EC1E2786E07F489C7578E79C13D9DC54C +:10C4C000F8FC1A99EC3B3C6FF665A6B49FC8DB33C9 +:10C4D000D334F4095C8EB89E824783285EC1FF9CEA +:10C4E000178EA192D1407FA13EF3A05F548C794971 +:10C4F000ED54FE552B22F8FCAC8BEAC16B4EE2C921 +:10C500002446273C2608D0A1DF1C8F9FEBF7EBD5F4 +:10C5100063BD7C50847A7E13F9E9F8C997561EE210 +:10C52000A0B37F87F31D4CE7240AA87DB6355F7161 +:10C530008E2FAF171E9D217C83C5DB5C1623FF2742 +:10C540003F92A07208EBA672184E41A1BCBE3AC63B +:10C55000FD7309F1EB656F917D9163B2F4E5E82419 +:10C56000FD2CFA30E18769C20F73D2F51EC57C231A +:10C570005A48FE58811BF378E49ADDDD50D7DEB9C6 +:10C58000A7270A1FAF13F67E5DC0EE778D74737D0B +:10C590006295EB3204DD6E10745323D235297E2868 +:10C5A000E10BFC9DF356FE681AF93B2A9FBFF3B9D5 +:10C5B000359E2BDBA47DC94081CEF3AEA28088944A +:10C5C000BCC0896E1ED7DFEC8E94E3BCFD7ADB5EC7 +:10C5D000C9E07E49773FF2619556FE66536D94CA75 +:10C5E0002A0C3EC32402D9350CBF07BFE712778A55 +:10C5F0003FA40A3AFDEDFDEBE4FFA05D45B97A5397 +:10C600008A56633EBBDB606DA877DC053CDF4A11D0 +:10C61000F966965F65F573AD9BFB535669E56569F1 +:10C62000F9F39EDC0278699B1212721C213FF53AE5 +:10C630004107C02BF92F0F4A62FD2579841C314335 +:10C640001F94942305DC40E42717004AF97BC8D7E0 +:10C650000AF2539CCA34940F9097656E2E3F01D610 +:10C660009D34E6D978EE468FE3390C1510A4645258 +:10C6700099C0D2E2137CEECAE4FB0241D4F3EE4C43 +:10C680009ED78C75947F39321FF10CFC5E2753BF07 +:10C69000A682723148CC6F90255733ED72D5CB8F7F +:10C6A00019767CDD2DF0B44CF0058E8FFAA4AFFC2A +:10C6B0009E755DF23D773FEB12C4249D130D34153A +:10C6C00022DDF4F3D99FE4303E7E79DAC14AF2FBF1 +:10C6D0007762BD41FDF9B46A106E7D3CE7EB152B26 +:10C6E0003BA7D1BAE042B1AEA8B4AF2B1E10F35DA8 +:10C6F0002DF8904D16FEA75E43FE2DF8E79B703E89 +:10C70000ABDD623FC8E47E706FBD8AB7EFAD97F1D5 +:10C71000F75FC17F6D759F83FF6AD979A3577FD972 +:10C72000D7DD561ED1658A9FF4816F19B80F80E757 +:10C73000616195F2928D70FD5D78EE94EC1BEE17C1 +:10C740002C53E90C00BCA775A8F5FDB09866F3174B +:10C750000373EDF5FCDE3C33FBFA3C5FE499E5B393 +:10C7600094753CEA4B91D7639DC376CAADD3CEEFA7 +:10C77000717FB57CB20392B99FF48738C73DB09FF3 +:10C7800017237A7F55FFBD61CAB823D9C06F39CF4F +:10C790001F257EDB7BC3208A176CF0F3BCADF5014F +:10C7A0007E0EDD29F7B08E7F6404E07DF0727ECED0 +:10C7B0001AED0F9EAF4E13EFA5E84B7FA1F3A6BA7B +:10C7C00059270D4AEA3F56CEF949437A2B6867E369 +:10C7D00054EFB5ABAC874A456F4BA0ABB96FF9D4FA +:10C7E0000C3CA798C65A6DF267F1C5C965FCFC946C +:10C7F000CA46A7633D047C40F95C31B32B84E7C291 +:10C80000057F168A3CE10C13631549FA64557B5881 +:10C810006ABE6F4E44B7D57367866CEDF3A2E0F73E +:10C82000211C8DDCCFC374661E878B101F861602F9 +:10C83000EE0AFBE62D8644BE5ADEDC04E9EBC13588 +:10C84000F6BCB290C82B0B39BE73F293DB23FC46C7 +:10C8500030F7C84F80877082EF7FD23921B5DB4D2A +:10C8600078C907BC201E4E324EF721B3189DB37312 +:10C87000E2C5E237F85F3801F31F0AFD24709C908F +:10C880001D4F5EC38EA7B4523B9E02613B9E2C7C23 +:10C89000A7571AB67616DEAC73E703E1A9605E7B94 +:10C8A0001DC2F355F154E6C0D3A7AC632FBEDB2005 +:10C8B000EE5540827952FC27454D489291C447DE9F +:10C8C0003CE05F98C7E601F87F483633704B9E9591 +:10C8D00005285E1012F8949673BE1FC88F74F23943 +:10C8E000706B1D76EAC2E343C5C8E76F093EFF03DC +:10C8F000433FCCE509C6D2C662C9F59407FC194C82 +:10C90000CE55FD3CFE06FAF62A0FEAFB02D996C781 +:10C91000E916E77A2CFDA0A8CC9053FCD591A21D76 +:10C92000FAC52C05AE91682FC7A27DE2704B7E211F +:10C93000C79BC07EA6AC3B2DBB70AE70323D4CFE9B +:10C940008B1BED685A528E2D3D360CE1243FD33CB3 +:10C950008CFC3942CC675833BF3F6284D0E7C6BDF8 +:10C96000E0CFE2C7EBEDF99C9FB219B45E75E66BC0 +:10C9700016083D3E74993DBFB440E8FD02471EF1E4 +:10C9800010A3FD1A9297988C1E341B1CE3F76A0CB7 +:10C990005DC6C27353FA1D1C0D86E78E4F9EE77469 +:10C9A000F2DFBD1EFBFAEEEE6BAE27BD118F6DED13 +:10C9B000378F7C63AD273C17F3886B43543E59ABEC +:10C9C0005359BCA92BE685F98C140E6BE14CBE5F64 +:10C9D00059D8AC8553F9D5CFA2AB910F1EB96BC115 +:10C9E00054C4C3F0C6E814D4CB5F53CC56E20F71E5 +:10C9F0002E6DE4F2029AF788E543A974DA91C18BAF +:10CA0000761DAA85A65BEF05FE467BFAB9DB44FFDF +:10CA1000087370F17B23A64FF5C0FBE266A31CFBF5 +:10CA2000DFECE1FED2AD1EF3611A671E3F5761E1F4 +:10CA300067207B65E5E1C378AFA01D5133326DE718 +:10CA400022B60A5C3FEDE17E8D154FB2FA696AB6F7 +:10CA5000CE3718948752D45658EF498D2389F30D59 +:10CA600032E3F1A27BF07C034C758627BA93E6A9EA +:10CA7000A7C48D8A9271A2C18B4A7CA89FB77A62A3 +:10CA800032DE2D30F89B0C16868C8D8A03FD6DFCF2 +:10CA9000032E18803AF4B130F19D05EFAD9E680782 +:10CAA000F65FE0F187E7427F858D864C717591577F +:10CAB0003F4CF075E9BD8CF472511BA3387D69734E +:10CAC0004F1DF6335DE8F3AD429F833CCC9895A2B1 +:10CAD000AFB746CD4C3A9723F4ABA54F41CD093BB8 +:10CAE00064D03D24A3EEB5F37B91D09B250EBD59B8 +:10CAF00024F46D91E3F9A8B8DE2FBF5B7039F9FD1E +:10CB00004D8BDF73591EC6A93E6593732F3392FC7C +:10CB100060E5E73BFD1C679CC2EA7F5CC23EBEA4A9 +:10CB2000C628DEEC0A311DF9727D8EA597EDEBFA71 +:10CB30005EBF231C8DA13FCE66331DE3E6A11951D4 +:10CB4000CA770D55B3B081F33ACCF7295A34FE9D1C +:10CB5000EC8949986FEE29E8BA18F9F0538F9FF8DD +:10CB6000F4662DF229D2336B06DF1FC9423DAD9C1E +:10CB700059FFC594A4FE5BE389FED57341520F1A99 +:10CB8000515DF6F7A3872DBDEBD4B3690E7DE95651 +:10CB9000A389D9465FB8615A46EA7ECDCA21427F51 +:10CBA00017703BB671A12AEEB1585D8507A356DF19 +:10CBB000B03394A3D330091DD61DABAF90E8FD84EC +:10CBC00096471B719DB1FA1A5EAFF2FE90D76F9235 +:10CBD000681D72B9780F15CAD772792CFCD5DC5A4A +:10CBE0005881F8E3FEE0CA82339F8768A8E579524E +:10CBF000563B450DF3FC6D21FF6E475C54F5DBE3BE +:10CC0000BEEA427E3ED1D20BEA42EEF7AF1E737B04 +:10CC100027CE03E3CB4847CD53C3505EDC6D77513D +:10CC20005EB4533F78847EF89638FF04FA21E845D5 +:10CC30007BA9DBE3CA967E08A28185F7232B6A9045 +:10CC4000C8B00EAF918DB2649CC6D2AF1E35C2C2C1 +:10CC5000F0DE555DC30C6C37839FA37357F3736D80 +:10CC6000B227BC17F9D393DD1526BDE7E0C7CBBCCF +:10CC700016FF999779817F26E1B817E0312A2BCEEC +:10CC80001696781C9BC705D6782257E2BC8D02BD4C +:10CC90005E62E7CE5FF4678288831522DC263B5311 +:10CCA0001CCCE2EB745CC717F7E5CFFB3533E332FE +:10CCB00080ABE157AE30E6290DB42EF9612DE8D3F3 +:10CCC000E149BB67D93BCBFE59EB9655DE427B7EF3 +:10CCD000B658BF103FC338AD6F8D8E532C5EF049F0 +:10CCE000EB5C56CDCF7F72FE748B35E7A921B37D07 +:10CCF0009A1FEFF350A83FEBBC8EC56FBE01F2BA8E +:10CD00002D3EB5DA5B7CEA6C77AEFCA979A2CD4505 +:10CD100068CFC5FEC7C8B6BBF679FBB15B56BF721C +:10CD20005FFE6CF19EC17EBDEF3157E1FBFBCBC3D3 +:10CD3000F3FABB7FE1DB3E6E4F372E5CE745BE7DED +:10CD400018F19522CFBE348E8753A39612BE7EE291 +:10CD5000E5FBA14F6CB2E32B74167C59EDFF07F095 +:10CD6000E51981FBD7025F039D633C03BE7E82F21F +:10CD70003310BE5645B63617613E40540E0F87FE3F +:10CD8000D745E4C4A5507F789EBC1DCF89AE8B6C7F +:10CD9000F50C473E5BBFAF200DDE3FE60BF0738224 +:10CDA0007AA213DBC54A64BA47AA45E579902BD726 +:10CDB000CB8FC652F8715B01CFE75D5930DB372767 +:10CDC000050FDBD6EFB39D17DDE638976895353E46 +:10CDD000C9B61FBB612E3FD7951765713C5F5725BC +:10CDE000CE5179B3797CC46BF2FA483F3F577560F6 +:10CDF0005CD314D4332D053CFC6FF917EB1DFE8575 +:10CE0000B56EF795F07BA5D647C1E4423BD7C5DCAC +:10CE1000FF4913FE37BCA773C9BE32BB9FAD083FA5 +:10CE2000C2BDC9F15CF81D2E877F61B557CEB28EA9 +:10CE3000CBA8EAA638D2075E1147C965C3D0BFD8D0 +:10CE40001091098E3C8003754FEB6D6D740F48DEB9 +:10CE500069C5E4F2DF16BA794CD2CFF8AB979F6B75 +:10CE60006E1571BF71079882571D0427EB14FFB42C +:10CE7000F07BDACBFDD956919776C16153099CA915 +:10CE80009D88534E7C3FA604FB69F7829037A62607 +:10CE90006622DD5AC6693AC63B5B25AE2763AFBA48 +:10CEA000041F334ED7F583B6601CEBE9CEA2D574D0 +:10CEB0009437CAFDECA78DA85CE41F586F267C7CD4 +:10CEC0003E23AAC326F3A7F6F7D276BE8F9A08DDD3 +:10CED00002F8F8A58FDB95A77DA01F084FD1FCD4E1 +:10CEE00038E2029F6CC3D3734674F518B45B300FFD +:10CEF000EC26B3A086C965C9F19E2EE0E33D7D44D2 +:10CF000026FF2C2FFCBBED6847ACFEACF19EF3F581 +:10CF1000AF8F165AE3097CBF60C4578F4D19CF5DA0 +:10CF20006D1FCF3D17C6837ADE5199F298071AEF2D +:10CF30008501C65B2CE861D1ED45A37BF5F9185F4F +:10CF4000C4F190FF713C7F3FE37DBE560AA4C8E761 +:10CF50002F701CE8E7450B8F6A34FFDA143D74919B +:10CF600090DB27407FCC817E5B863779918FB749F4 +:10CF700071D267B17132DDEFD3BAE96402F3AA9ED0 +:10CF800030319B04F8BD323605D7EDDFF5650ABDBB +:10CF90003B95BE93D436BA0F4659CFB87F85EBF395 +:10CFA00074D6CFBE561BF9154367806E6349FF2FB9 +:10CFB000B4BEE617782FA277B91CA676B08C562798 +:10CFC00024E31FEB5DA23FB12F65F90D79C29F3EAF +:10CFD00083FF1066D6BE13D5F93E95150F61E52681 +:10CFE000C535ACFD012BDE67ED0B58FB01E92C319B +:10CFF00025757FAA18CF0314E3B9621E1F29340DCB +:10D00000BA6762C4FAE854CAAF5EC6E81CBF5BF8F0 +:10D01000E369C53FCCE88D0F5E04EF7DD6398768A4 +:10D020003EAE870C9F750E82D7C73ADEAB516E7F3E +:10D03000D4B95CBFB1837DF298EEF15D80F771F2F7 +:10D04000B88A15EF3EE0E5FDAE8BACF5A23E7779F0 +:10D05000CDFBC9FE0A7F0DFCFF5A1F8E733DD00524 +:10D06000D7ED7E7E9F97E267F2DF42D7241D19D766 +:10D07000F7CBF9BAD149AF81E86AD1CFA2E7DF4A4D +:10D080004730958682EB1E3D22FCC3D819E33D054F +:10D090006A8F44EB1D16267A96B008D133DFA3CBF6 +:10D0A00048C7A22AA3CE8BF414767308D82BB49B5E +:10D0B0009B234B89884E7AAAA5823E111E8F615D03 +:10D0C000922DDE05F4790AF1ECA4CFAAC8542FDA28 +:10D0D000EF6D61B91DE5DB69B799DE568DF8DC5659 +:10D0E000504EFB07EB4BD77AD10F00BB4D7E406C07 +:10D0F0009E4CE76BCEC17ED3FAA8C6F71EAD8F5A01 +:10D1000033C4B9C4E15AFCF142B43F06F1C3E49E12 +:10D11000AE6978C7617A25B713ADAE44285C86ED59 +:10D12000133367A35EF821D70B4F449C7A21EE9905 +:10D1300003E5C5BE0CE2DB759BEAAFA075A01AA3A0 +:10D140007580357ED5AA8B57D0FACC9FA0F38BADD6 +:10D15000D72CA5FB132C3DE26C7762CFEB43301F3D +:10D16000E4EDDB3E098030B2DFAB3D019CCFD17BEB +:10D170007F1B30E1FDDBF72A74FEEF1BF8DD44C6B0 +:10D180006EADFDEF09781EBD5BE8B78BD2CC23C432 +:10D19000DFCB7388E9E6C7150CEE72BE82FFEE7C2A +:10D1A000320D85BEB7BEA83DCB56B7E2418BDC7CC5 +:10D1B0005FEBCEED7BB5C100F7FC2733281E74541E +:10D1C000DC137774D7902D18BFCE4D93C5B891A3BB +:10D1D000288F381FA4C3EF3BDC2C417AB8CBC5EDB8 +:10D1E0009F3903F71DA2823F9CF37AE9C534EAF721 +:10D1F000B60715F29B66012E9783CA8DCEBB93E2CC +:10D200002ACE79DFF676FB4BF930AFDB5AA430FA41 +:10D21000A1D8FE5E58EF4597AFA438A213AE59319E +:10D220007BBEC89CF6BB346266A56C7A2EF4F369AB +:10D23000B344F23EA7D9DEEE8E8ED5D4DFD39DD394 +:10D2400034E4E3DBDA1CEFE75DF59FE887DDE18896 +:10D250005B3AFD267F9AF09726B00BD15F3AD979D9 +:10D260002DC51F075A8F5B7ED251F0DFF120D51FED +:10D270006B3D541EABD5A93CE23378FED0EEBD2FFA +:10D28000918E50BB26207F3DDDF987B49BE1D5D23E +:10D2900010F7DB2FD9F249C3738CE23F0AD723265C +:10D2A000E9915B041D2E651EC30FF37C5CC4E3C6CD +:10D2B0007F0EF514F84EB649B47E032DA0639ECFC1 +:10D2C0002D888FB1D83FF7D76FC17B79CF00F7E8B2 +:10D2D00034FB7EDBDF0BF740DF2D52787EA6F3B9FF +:10D2E000251747845FD3B0E707D3916F8EAF91685E +:10D2F0003FEDB82BDE44F507A5709D41D33E8C7AF7 +:10D30000D7E253D0201ACAB3931F2DBEE8E5BB8ED7 +:10D31000FB082F163F801C85449E5348AEEC87FFC8 +:10D320001C7CE6E4ABE3AEEEA128F74EBE3A3EC06D +:10D33000BAE4D234BE9F3FD730A7637CE536166986 +:10D34000E2E701CDD7FE11F0587C54CE6356981712 +:10D3500066E27D854F9FE6EB9EFA5DC50FA0BF3C60 +:10D36000EE97AAB8173A46ED2FC17FC218E38A8D0F +:10D37000EB7E56C1DFC39B3EF8B9E4E5D30FCC305A +:10D38000CE8E27277E7AF55327DF5FBBE4B47DFD81 +:10D3900033BF63657012EAB3835C8F971F549DF9A6 +:10D3A000695CFFFD74C773A88717FCFBDA2083F262 +:10D3B00043B56D10D263C7632B8226EA63351644EA +:10D3C000FC7E1857FA3D8FFD429A24E242F6FC3962 +:10D3D000985F0CE3E2F3DF70C7EB607E4B9E74272F +:10D3E000D07E2E3EB080E80075B2A78B77F59F3FC8 +:10D3F000B7E0890707193C8FDE9E47F7988BF60B3D +:10D4000017C3FA0BD9F8AC7974EDCA2C2DBDBFFC4B +:10D41000BC1E0DF5C812B14E5C72E04AA2BF338F3C +:10D420006E9EB03F4E79FF9143DE013FB42E8CC11A +:10D43000BCE84E9A38B74B0D3F72C770DFE2C33776 +:10D4400073B7E07EF1B1C77E19C4F37596FC5B79C2 +:10D450006CC7DA8BCF781FDB71A127ACFA40F97566 +:10D460003B802F10EF0B01EFE8D72C3C24A79561F0 +:10D47000DC628B8BE6F5DC917D83C640FDCE9DAEF4 +:10D48000EC191C1C3FDA2B8B6EBD798E824E0B9EE5 +:10D49000F9B986F996BDF98E825E77EEDCAB21BFD5 +:10D4A00038F13AAD7DAFD6EDEF876EEDEF4EA7F3D5 +:10D4B000B43F3AA5A17FF2E18B12CB2DECFBFDBC72 +:10D4C000C77F19C47667A3DFB1C7B81D3DD621C594 +:10D4D000A5C2B3D3B105697541DF7DC0D854568A62 +:10D4E000F76D3668AC14D72F31D91746BFE96C7980 +:10D4F0000D37F80BADFBB9E8BCEA3DFB19DD3B4746 +:10D500002744A17EEA2546F77FBBB20D2595AEE103 +:10D510006932F91BBD79044775E20B26EE1B3F29E2 +:10D52000F44CBE9FFB1BE3BA4B7F80F7B2BA3A5D67 +:10D530002C6E24F7D54F1EE6723FA153A175C3731D +:10D5400098172AE1FEB9DC7BC70ADF3FF731238554 +:10D550006FD34A336DF5468413F733C4FEFC78FE6F +:10D560008A05C2F9B67EC68BFBDCD32B8B6CDFB38E +:10D5700083F67D758417E77761829FF39870D8BE34 +:10D580001FA4083C4E12F40A2762849FCAB7ECED30 +:10D5900026F9AB294E33E92C719AFBFD62FF279FD8 +:10D5A000E5A31C528E09D2312348FEAF4BAC13F0D9 +:10D5B0001E35CCE73BECE7F6319C267F62E03988EC +:10D5C000D6ACE9780E223C5EBEBB18EA97FA874DCE +:10D5D00057416EC317C9CF14417D8ADFE0F5F3E5EB +:10D5E000F12ED0A45B58E1F42A68AFCA122BC7FD14 +:10D5F000C37C8DE2C2AB35903B909BC62033338019 +:10D600006FD3DC2CE62DC7F10C1A2F0D162E5ECC35 +:10D610003313F16435C8BF6B74F1EFCEB53FAB9FE8 +:10D6200072D5A07B45DD25006B61729C7295C35F4E +:10D63000E6E7F71BAB53CD10AE73D44C2DDC40EDB9 +:10D64000B81C9C6B097A7228EAC9377D5C0E14E518 +:10D6500024E565F7FC731AC5D9DFF47179F87A7A95 +:10D66000ABEB3CA8977B86DE8DC2F5A6B4FD9B2470 +:10D67000648168C44FF681D1B9E99BBFA1D07D8494 +:10D68000CC5F13407A4826B7CF1210E316CC379DF3 +:10D690001DF6A8C5A8CAEC796FC9F1CB7B12347E00 +:10D6A000C0363E2C1B3D68FFBF8E67880CEC1FEA1E +:10D6B000C0CFAF57F2FACC785143B741F399E54761 +:10D6C000B972C787601EF5CD72FC9B3C2FD09E2798 +:10D6D00076DC27E442DC33862A14FB398EE301DF53 +:10D6E00056ECE6FE8425C74B3EE6FE00EBE276D61E +:10D6F000CACFC1E9207C4C393D08DB7D7A50A67B3E +:10D70000A1CA0FD8F9FD22911730F1208F034C7474 +:10D71000F0FD45BBAFA23CEF8BCEE27FDFEB17768F +:10D7200049C8C3B9E67DED93CC7AA4D30C9599A9E9 +:10D73000BF7FB0542C744F1E2C4AC7F8D43B69529B +:10D740006F7E22E64B6A20EEB81FBDCB619F2C7E18 +:10D750001C73589F83F31E7398DD2AF2EA6C794399 +:10D76000BDE3E81CBFE3D8D81FE011AD3EFAEE28B8 +:10D77000D777D67C2DBD9761DAF55D56B55DDFE5CF +:10D7800044ECFA2E77A65DAFE545EDFA6CF0BCF3FC +:10D790006CEF87D494DBEAC3964FB2B52F040392A3 +:10D7A0005A2F6EBED2D67E78DBB5B6FAC8F537DB17 +:10D7B000DA8F8ACFB6BD1FFDE402DB7BD0EB0AEA2D +:10D7C000AF81F4F498F6A5B6F6969E3E7FF7776C97 +:10D7D000FD5A7A3A067F912FCB51F5025EC322EFB4 +:10D7E000EA6C7AFAC2EC1872FA57D6D3BF76E8E937 +:10D7F0004FD98C4A46FBCC7C3F7B20BEB4CED32A8B +:10D8000069DC6E2AE972CD4E28AB841EBFCC2FE2B4 +:10D810006B3AE793137B46521C1BF3EDD08FB1ECB0 +:10D82000F80997BF19E35119C053A86706B2EB195D +:10D830001D2F53BCABCF3927D9A078E03A2542F948 +:10D84000ECB0162D948B93F77DDC2FCBB7A6C67D5D +:10D850004FF8B99C9C10767C23E873D4DF83D3C047 +:10D860002F2EA7EF6CBFF710C4DC5E3AB7FE9DA663 +:10D87000AA02BCD7ABBBD4C80091C2FA90A4FEB335 +:10D88000F41DE8D9F1B4CE0D44FF0BF519E8B12130 +:10D8900068FF6766D7B8248071B087C5304F19F02C +:10D8A000772BC6893358B6B4B40CE39DBD7AD5F84E +:10D8B000129868FF82D1940F7E72DE28BA27EAA4FC +:10D8C000BFF7FE18CA73614698F6E76E12FB6E2723 +:10D8D000E71653BB37BE01D20BFCF82B8400ECE3F8 +:10D8E0001B1AC7C3D9D6B3F3B63C10C07DE9374A7B +:10D8F000F9FE9FF5BC20C0D7110501BEEFB7646EDD +:10D900001AE5FB2E8EBB685F6809A207FDCF38972A +:10D910007BACE3FAADA5716D04E9619D2FF374D67C +:10D92000C4304EB0A4E31ACA9BF8FAEB7CBDFCF5F8 +:10D93000FFE2711E6BBCD1017EFFEBE800DF97BDFB +:10D94000110A3C3F7D23D02103CB97274F473982D3 +:10D95000E70909EA5777822B01F8BE265AE842E424 +:10D96000FD96855F7B16A63C2160D07CAF671117C2 +:10D97000F2F1EF58F4E3D70A53FAB3FA8149A11D43 +:10D980007F3D23E61A04FAADE76289EC178CE7C104 +:10D99000E7915B06AF4095698D67F5732D0B53BF1B +:10D9A0003730D325FC189BBE5C3A3F2D9105FD2DE9 +:10D9B000057F1FE3B227EA7AFEF55B30AFDF2FF871 +:10D9C000CBB378E53D8B760FC175F04DEB15660056 +:10D9D000BD7FED332F0DA0BC54669DDB395820630D +:10D9E0000CED2AE3E3BD2AE83DB3236BBCB0EF574F +:10D9F000617F6FBEB86308EA915F8C7A6238E55F39 +:10DA0000579C5BFF967CEEECB5B7DC1E8405BF81AE +:10DA1000BD20BFFC04F385D14F1E486E770ABB7C46 +:10DA20008F62923E392547C43900582642D9DEA17B +:10DA3000308C77B7835F84721C44A1B6E40F7C847A +:10DA40002026555ABFB702EB95D1423E6FBBEFC5BA +:10DA5000E98DB45F65F7032AC4FAC8B2F711F88BF1 +:10DA60007AF522E1878F5C6F5F6F4F4CC8B48EE907 +:10DA7000B5F34EFB8EEB9673B0EFCB035FD5BE478D +:10DA8000EB0280EFF652AED7DA133E9E978B3F152E +:10DA9000342669F79DDFAF0C703D761FAEC5E1FB04 +:10DAA000AB1166A8A7817E09F0731331A59CEACC5F +:10DAB0009F49F9D6660EAFC7D2A1FCBDCEDB6BD2B3 +:10DAC000F1524F06DEF3B0BFA9B900CF5372FC622A +:10DAD000BD01FF6D8C273DB3D4D23307CEE3F726CB +:10DAE0009E062811EF625DE49C5F05F035378642A3 +:10DAF0002EC4F78997BE08E23A7447A6F1EB8BD0A3 +:10DB00005F7C4561286F5EB55BCBE807CEE7506F61 +:10DB10008D04F90C707DEDD92DD1BD401E83AFE78A +:10DB2000BCBA3E8EEEF38CB2348CF77CBCB398D684 +:10DB3000775707B9DE8AA5459E4239F8A3746882F3 +:10DB40005E4CFED476AC5B786D4FF0FBD9C7A8ACC9 +:10DB500059CD4CE2D51A7FC9FAF1B4D9B1787D1606 +:10DB600095A3705D0F8F9624387CC7773764F617BE +:10DB70001F18D331FE0E5AEFE6F67CF6EF9867F4E5 +:10DB8000138DF675F1E8039E5FF9F1E7A3A9BF03D2 +:10DB900001BE5E85F1557C8E3FE486F7762D71736C +:10DBA000FD78FC7385DAF5F6BB7B8AA203ADCB1258 +:10DBB0006DFB703DE1ED701BF47B298FF1FB16BD11 +:10DBC0001D5E922355EFF900D7036A875B6F007CD7 +:10DBD000ECF0F5BC83FCD5B3C76D6C85F73BB43670 +:10DBE0006ADF339CC9581F05FC81F7A779F5369683 +:10DBF00099028FB7E30794D7047C41F72C79D53687 +:10DC000076710A9DAE0E0608CFFF11E0FCB4C397F3 +:10DC100090FDBC5FB695E6959C27CE0BB7C7F83C48 +:10DC200047511C648706F3CCA679E9C807A3189F5F +:10DC300027EB1869E03A5185F9D03AA984C9A81AA6 +:10DC40009CF35A3296C551DFDC5FCF6CBF1BB5C465 +:10DC500097AC7B40B676145976FDF326FCFDA464A0 +:10DC60001D145E65F2FBFFBAEF8BA6C6C929F2A3AD +:10DC700072796A0A703B66C911E201E37103CA9BBB +:10DC80009FB72BDDA27E82F0EF4CF8C374CFB8B8FB +:10DC90002FD98AEB2C93121F5C8A7E5762DF5803C0 +:10DCA000E6B4F0E51786E2D1C23BE58E87C6C0FB3D +:10DCB000FBB4A82B08E3FEF42D9905010F7FFC911E +:10DCC000373E03FA297D7ECB20DC8F71F6B7F24810 +:10DCD000FDDAC1E86F3D2F19185F3EE1EAA138EE89 +:10DCE000E28EFFD4306E78F9EE7735F42B3607A349 +:10DCF000E9D86FE5EEBA6988C789ACAD01E375A0D4 +:10DD00005FE95E96F61013F18C115BEB50BE7AA2C0 +:10DD1000C3902F2F147265D1A143C8E78BE85740F9 +:10DD2000F9ACF06B9EDD7B53B19192471063FB28F9 +:10DD3000DE54CF0E0C467CF7FA6371FEFB05A37F21 +:10DD4000E7B9D54CE1BB7141EE478E13E3ED0D46CB +:10DD5000870781BFEEDCFB9E1604B83E927AA6E3ED +:10DD60002B90E711C194F5513BF847A9FCDB479E86 +:10DD70001DF2B444EDD1284E7994DF830FF46E4C3C +:10DD800007FA3DF5BBDDE7D1FD2A3D917F423C7CA2 +:10DD9000F69A46BF0FF4ACF07BEB5EFB6C2CEAB15D +:10DDA000CFF6DC390CF1971BE47E0BF0FF541FCA51 +:10DDB000D94E467ACD92D3329453984A99CEF737BA +:10DDC000CB90FF0B91FFBBAE24B97C56665C0EB9BD +:10DDD0003C00FFEBA82FCA749007FA7E24C9F98E85 +:10DDE0002E99EF23829DC07DC81D32A016F8ACC2CB +:10DDF00095D887DF55C0B87506CA6B970FF334D82E +:10DE00002E391BE38B15787F740A5E9A02419A6F54 +:10DE100093F0EF1E1676240D377553E422C5FEF2FB +:10DE2000BAB0CF3FBCFFBC95EB30E9D914F641F84E +:10DE30003D2C3A9EF4FDDDC2562EFDF9A4ABF1DE79 +:10DE40009AA5AF2AF47E8259330D432195D56DFBF7 +:10DE5000B19C14699F86E156B417F87B7917406925 +:10DE6000825E9D3CB36B3F3F8B6B8E463F69D7BE56 +:10DE70002B46A39F70E20D37FDA6C5891D573E8531 +:10DE8000FBA627DEF03259EAD78FB1F199B33C21D6 +:10DE9000750731AEB42C38E97215D6D28B2772389B +:10DEA000EF0A56AE8CC1C43E0B9ACB90AF827A94E7 +:10DEB000CA1387BE1884BAFBD9C3EF05D1AEEFD21F +:10DEC000CCD13A95FCFE4967FFB383FC1EE40AB14E +:10DED0008F89F284FED2C7EBB3B6A03C7DBC4B3138 +:10DEE00007E1F9E7A0C80712EBC7DB38DAD8BC5D59 +:10DEF000DC9FBEDDE4F1DDDBD0AFC1FA3AFBEFFE23 +:10DF0000CD637C3D3522C628BEB4B85DA2733E23E6 +:10DF1000C5F99D25621D39CFE1BF2CB4E2B28EF860 +:10DF2000ED4211A75D789675E34341E1EF14B362CA +:10DF3000F477802F68DDDAF39A12DECAE89EA54EE8 +:10DF400037CCEB29713F27E845922BCBEF99A49B67 +:10DF5000BFD779DE0DB71B625DD7B3438A931C3CF4 +:10DF6000C9E8DCD9A4A3C616CA6B889974CFF83C5B +:10DF7000A1E726897D96491D852447F384DF5769EB +:10DF800072B86F07B8E3644E397C605EC90F9C7449 +:10DF9000B44D413C2DD824511CF4CE279DE7F839CF +:10DFA0005E16AE3FF412E64C2C6A77BC1F208EFD45 +:10DFB00034FEA39FFD889F59781ACA86A6FA85ACBD +:10DFC000B3FFDF9B48EE3FC4481E3F12E7737F2339 +:10DFD000FA873F7ECCCFFB83C0C3EB827F169B9C2E +:10DFE000FE0BE34A3C0EF39923F885B5727EB1CE61 +:10DFF000C5E0FE0AC1BF4B621BA4BEF0CDDBEE2222 +:10E000007F7881C083B55F376F939DEF16083C2CF6 +:10E0100070E0617154B2CDC3F2CFE708BE1E785EE6 +:10E02000ED37223D176C77F1DF6E524ED33C3FDD6A +:10E03000C5E9E49CA7353F6BBE7FEB3C9D74EAB11C +:10E04000E8741E3BCF46A7EA33DFBF90BC97C8EE0B +:10E05000E75A7EB2C517CEEFA70BFFF8F2F5DC9FAB +:10E06000DCD5B5AF19FDE1F23D8A8EFB8EBBBA4E11 +:10E0700006713F68FC1E9EB77EA263FC6ABC9FE3EC +:10E0800099CE92EB304FB7FC904CF231FED5F2387E +:10E09000A64497BF5A9E564CFB724616AE1B4E1CAA +:10E0A000E476F5C4C192DFE23ED389CEAA0A446B7E +:10E0B000DDC1F234B4FFCF30BECE975EFDF3AF705A +:10E0C000DCF1AFA81330EED7145248AE2E7F78D6CD +:10E0D000365CD779D2F93AFCA5AEA5D7233D161DFB +:10E0E00094757C7EFCA04CED16FE50A1BC53A6DCC2 +:10E0F0009BFD4F48AF0E97CEE7EBA2F197EC199E30 +:10E1000035C79FE483D9826FCB338C0766A09F9776 +:10E1100097467EF1E5435C64178FE5A73D8AFECD07 +:10E1200008730BED231F7BE16E19C73DB1436221DC +:10E1300000E0A5D0FE7FA5FB4A9E3B44FB5CD37666 +:10E140001DA27DADD9D6BA4FECD75A7C7507AEEF7C +:10E1500060FDFA71974FE483B46948974587AC7ABC +:10E16000B786F63B22FCA2C58FBD4BF505E8E72339 +:10E170003F3E2651DEECFE3D3F257E5CBC9DEF8F91 +:10E180002DD8BD653AB6BB93B5D33EA7538FCC17F8 +:10E19000FC79C77AC773C18FF3CFC28F53D3455C65 +:10E1A0006E141B45F7814CE1F78BB427660FDB013A +:10E1B000F33879C44D7C7106BE24FB7750C47D4E84 +:10E1C000266413F160B53B7EF0A486FEE3F48E3F37 +:10E1D00011FE6674ECAD42BC7C8D4517229C5FEB52 +:10E1E00048D371BD3CA39BEB952B3BDC6457BEC66B +:10E1F000DA1BC5EF3D931EBA43D0F30E81FF132FF8 +:10E20000BAF93ECF0B12F9277780E2CD0255B7500D +:10E21000C485D9263B7D40F2BEC1F70BDDE45F5DCE +:10E22000556AC7D7958CEB932BB74BA44F168B75BC +:10E23000FA55CCB81A9F5FD589811918372F6D26EA +:10E24000F2DBC2ED8EFD66B17E5FECB07FD7A773C7 +:10E250007FED6FFD5D866FA60B3D21E832A387C77A +:10E260006BAF447B0378E84CD497613CCAC293936C +:10E270002E9DC699F7937F25FCE9DEF515080EFA69 +:10E280006DED3AA7C32B5D3994F7B460A21243FF3A +:10E29000E1AD74AEFF17FEF5BAAB3141F698BCEFB5 +:10E2A0005BDBE1FD47B3DA47205E60FD705F3ABC9F +:10E2B0007FB9604EEB38F8FE8F3B5C61D42FCCDC2D +:10E2C0003202F5E5CAD00333707F6BC976FE7BA8B6 +:10E2D000C72B9518E953B5673A8EF7D11E49477D8C +:10E2E000BC64F7277CFD80FC0265A443BA0CF905E9 +:10E2F000FCF287B1FF8899E1423A2EAE027D0DED26 +:10E30000AFA9FA93867805FF7C437A8A7FFE4A4953 +:10E3100031ADB75F510DBA477220FF7CF1E7DC1FCA +:10E32000B49E2F0639457C2EEE90681D9AF4077333 +:10E3300025F207F7FCF44026E9898C71489E57D2F4 +:10E34000F9FA01FD06F44F6F17F687498D2417BBC4 +:10E35000F67D7823C2D7F3BC8B9FD984925D08FAEF +:10E36000F137FC77C18E3F27D1BED11D3ADF273A66 +:10E370003E9BD3F933F06F40E3B3DB851DC3F71841 +:10E38000EFBC1DFCBB4BCAF15737EBC53AA7914A0E +:10E39000A7FCCFDBFD68135FE6A73C077E5924F896 +:10E3A000DAA9471609FE5D7496F8D3E8177F5A84F8 +:10E3B000F479CBC19F00CF6AD4AB275E51748467D8 +:10E3C000D7BEBF6CCE473F0BFCE822D4DBC20FD9CF +:10E3D000B5CF4BEB8A1387FC71C4E71F051F1E13D3 +:10E3E000F1E2BA4A85F0234FE4258E87F43DB1E788 +:10E3F000D4D028E8E1A75EFCE97926C5E3E244CF62 +:10E400003B9FB4E7D72D6AB7E7CFC1BCB87FFA3BD3 +:10E41000BEDF04F31A81E7EDAC793DAB7607C3FDAF +:10E42000C88F24ED23FAC9927D1DB9E479C5767FA2 +:10E4300011C0732BEAB7E3161FA83D83D02E9E4C64 +:10E4400037687E751D9CDEF21E5EC2F837F2F888D2 +:10E450008BC6EFF37E6A6C21AD030BD3685FB713F5 +:10E46000D6FBE950EF3CE225FFF35BBF593032F5B4 +:10E47000F71C98C4D7BB4B5C3D83687D7988DFAFC0 +:10E480007425FB13E5795CD9E1CA064CB1978A7E05 +:10E49000A6D27EC658895D00FDC470DC5CC6FE2F26 +:10E4A000ED2D8E7D008000001F8B08000000000015 +:10E4B000000B8D566B6C5365187E4E7B4E2FEBDA3E +:10E4C0009DEE52C4112C63ECA2DB38BBC0C64D0FCD +:10E4D00043CD8253EA70824AA4A2C144D92A12755C +:10E4E00009269C328980FE20FAC71FC61C49349A2F +:10E4F000A0296EC3FDD8964E87B0E1CC1490B11818 +:10E5000033F66368C2DC349185C438DFF73B2DDD18 +:10E51000CD689BE6EDF77DEFFD79DEEF1C87D497A4 +:10E520008B3B80831976600D1059670B9925C0616C +:10E530001C16FBED3F6CF594660393DD39E5F62080 +:10E54000F0B7CF06E4003E35E45649765C1AF38511 +:10E55000D3019CCF04960233FCB96FA1040C611760 +:10E56000E9562057016DC34EB35E026E764FFFF839 +:10E5700014AD6FF6CB1AC87FB4DB696450BCC88891 +:10E58000DB74AE20B3707875C80BBCDAF37C21382D +:10E590008E4479D5907E4FFF5161774651D97B5398 +:10E5A000F7E50028EFA68E35EF1AA45F3958F15031 +:10E5B00090D66D5D8A0ED2AB18AC32DD14AFEDDBB8 +:10E5C000AAAC95A56CA179D86F53BF1C32D359560C +:10E5D0005DA8A7B84D83B555128719ACCA1A25FB9B +:10E5E0004A09A1189D4BFDF9629DAC27A85AFD9AD6 +:10E5F000EC75EFD6695F429EC8CB867C21937AFB8F +:10E60000DACF3A38EF7D9D76DD9C659FB4AB5265DD +:10E61000D1971A3528643426E9A8263FA72DB9AF2B +:10E62000B32DC075BCA8C4022AF9899E52ACF3CFA1 +:10E630002C099C1079181AE1B204B8C05B84C3801D +:10E64000643E074A7140C14ECE7FE06AF8AE4C96F8 +:10E650009BC3852CBB5449C44BE663A056E40DA96B +:10E6600041E03ED1AED4715FE6E3D891B0F365618D +:10E67000776891F34F559BC867AB03618E0BE8E950 +:10E680004BD702DFF15F2AF191BE17EA551F7040A8 +:10E69000B578741121052BE9AC46191B2D0242F403 +:10E6A0009DC9031A10CA8853A8C2F7E4B15117C410 +:10E6B00067867EDBE9D742548B1569391AF96FC436 +:10E6C000DBBFDBCB48F66DBD0E92DB1F5674C7EA8D +:10E6D0007FE7E1F63A658EBF46C822AE5813DF5A8F +:10E6E0007EFADEDF57943ADFAB7AB3C73DF4A7007A +:10E6F0000533D44FD8D33D12F1E4CFF38A6A677E55 +:10E70000C2CC0F952E8C337D68C8DFA700DF1CA21A +:10E71000B20B693C0EB984FC4AD2232AF5A75E8667 +:10E720001E5BA47F6F7A25D1BF68F195B251C6AB4D +:10E73000F7EAE77EE2EFD45537F298987F5116D486 +:10E74000CF263591E33CFB281A048E87F1D81C1E96 +:10E7500026F19C00EA62250BF13C96C0A3B9C8796A +:10E760008DFBD96C9F72302EC78EBE13621E295D41 +:10E770005183E33DE908CEE14D73E77E844B385F7A +:10E7800027407D997840329D92C87BB953E4ED448F +:10E790009EE8D3D0077E3A6F1C76E3389DF7165F6C +:10E7A00071F03C11F12E2140BCB0CA41537CC8A18C +:10E7B000D2FE36978533F385712D687FE60812FB0C +:10E7C000AF57D03E71F4DE8A59FD48F06B5BCD5CEB +:10E7D0007CA3C834C45C4AD9421662E8C15CCA63EF +:10E7E000872E6926E93FAACFE783C5A7869DE567FF +:10E7F00073B0085F123C9BCF9B5E357C8AEFC3C928 +:10E80000A13F1E2F25BF03C5D797735F9A1373A02F +:10E8100015063B4729AE76412D6F259B88C757A625 +:10E82000124FBF4CCC4BC4B3DC04CDC5FDDE7087AA +:10E83000F0638EEDA5CBE4B69F8DAA2AF40614737F +:10E8400019DF03C9F9D396A0727FFA6C3C2D1C3BEB +:10E85000981FA48F922C60DD7FDFCBD1E273658C93 +:10E86000C7406F7F9963166E375E0E1772BC48F70C +:10E87000D78160FA6C9ED9123C938594248B7736AD +:10E88000692EEF6E30EF4A585E0E6C607EB46FC931 +:10E890009182A9F348C745DFAA597E27BAEC421FE7 +:10E8A000F26841A377769E47449E1331CB1F816D5A +:10E8B00030DF9ACF94AF3D6EC160D8789DBFE763DB +:10E8C000E617D02AF4937C752B869E4BF52878C9E1 +:10E8D00060197340D81B3D4EF3235A4FD2ACF273EC +:10E8E00062F29AFAA121F8BA0CCCCB33095EDD4A68 +:10E8F000E0544D9712F3721D62769E8F6AC8D8C598 +:10E900006B197199E44698769E976A39DE2B958942 +:10E910007D43269E6EC2A8D8A75264B6DB8CA0CCDD +:10E92000EB2D305AE9E181AEF62FEC7CCDC403B279 +:10E930007F9CF8C657CD6278A5FA21633CC93F5247 +:10E94000D69CC4879254DE6B252BEF6A1DAE168AC7 +:10E950009FE7B7E67C0386441E9AC7AA77EA16CCDF +:10E960009312C4A36417E96D905167A73A36C97032 +:10E97000A5D1FA749F4DCC75CF68D0E4FB4ECB4A3D +:10E98000D8FD4A762B5275AE27FD8C4C5EE3A8224B +:10E99000FA135FB4DE1CFF0A910779789AFD6CE9DF +:10E9A00072E2386DD95C869D799EEBB7F0F250DF4C +:10E9B0007CE467FD0909C39487B6D2AA2FE97F3D9D +:10E9C000285E05EB5B75D11AC3B4EF7159763449F3 +:10E9D0002AF7478A076C339EFFDFC7C90044DEBEB3 +:10E9E00067A77E3BC875763BD5939492D6756E58D3 +:10E9F000A2F994741DDC4FCD951EB7FB1830F9C6F3 +:10EA0000EDFB819E5BABFD7B4AFDC41329A88A7E8A +:10EA1000228C20BF672CC1FBEAF83DFC7E407AD4F3 +:10EA2000C391345F19322CB87E21BC76247836929B +:10EA300066DD039F980D41E6F3CE6C97C67DAF70FF +:10EA40002DAF04F987375CEAA77A47A453AB843328 +:10EA5000D95CC3FEDFB0C7C07D9E765B7EE9ED4129 +:10EA6000F0B4C565AD5F4BF39D6439EDB6FCF30CB6 +:10EA7000326F3D746DBB28CFB7681E5CB4366A2D0B +:10EA80007C8D9FBD662BB576DA161264A4690ADA0E +:10EA9000C8BF5C8B7835E525DFE910E74EAECB9338 +:10EAA000AA2B193F59DFFCF85CEFC664BDB6543E93 +:10EAB000C9BA17C63794BBADFA0F8820DEF01389A8 +:10EAC000FA5F116B98ABB87E0FF41AF11E8138F81B +:10EAD00079A026FA99EC83CA78114FA1135E49BC3C +:10EAE000F3527D782BCDAA5F2164859F20E156BA31 +:10EAF000B0BE7F00ABD1094D300B0000000000001C +:10EB00001F8B080000000000000BBBC6CFC0F0A3A5 +:10EB10001E81F5B850F9E87835072AFF1D01F58404 +:10EB2000B00A0382FD929D81E13113042F84625764 +:10EB300020368462566608966741E8F1646360088F +:10EB400006E258204E67C36F572D0BA6D81539061D +:10EB5000860C25047FB72403C37F202E94A2CC5FAC +:10EB6000A37868E0F786A87C7F6D547EA22E0343CD +:10EB70009D11821FA04D9AF99F817ABF003100211B +:10EB8000F9ED9E6803000000000000000000000096 +:10EB90001F8B080000000000000BC57D0D7854D5C8 +:10EBA00099F0B933F7DEF9C9FCDC8449988421DE99 +:10EBB0008404220D38A401631BEB0523C696B523FC +:10EBC000756DB4964EC25F94BFA05B495BBBB990B4 +:10EBD0007F0C6494A8A068072C2E2A6E83EB5FBF7D +:10EBE000B57610AAB8F5EBA67DDCAD76D50DA89468 +:10EBF000AAA5C15AA17DDAF2BDEF7BCECDDC1926E4 +:10EC000060DBFD9E9D3EF670EE3DF79CF7BCFFE796 +:10EC10003DEF3971F94A59E802C6CEE0EF32C67AC3 +:10EC200014F6AC14644C61F3FA9A75A833F81533F2 +:10EC3000D68BE525F05FD221B3798C7919FF39C3E2 +:10EC40008E23AED98CAD57A171213C8814507BD94D +:10EC50001737790B591F75D33FCC33D332EAEC8C7D +:10EC6000F393D4FF3823B36EF271D837192B62ECCB +:10EC7000EBE21DFC0CAC37888A351FAB645195A5BF +:10EC8000AAD2FD34305ED71D123B23E1D3CCF7D698 +:10EC900038A73C81D90CF0D1EEE6E5066F603796D7 +:10ECA000A73CA549160068A57835B63317C027B527 +:10ECB00050BEE54F76527F6D17C5663106FF6E1A5E +:10ECC000F6E580876D626C2EBCEF18DEF64E65FAB5 +:10ECD000B933124D613FAC8E45F7004A998FC93860 +:10ECE000AFCD9235CD51D319026843D14F6F86F71E +:10ECF0009F05B871FCF56AECB31C2F068BF9F1FF88 +:10ED000075EAFF807FDE6B7168FF61AD1A75C12304 +:10ED100017D37F1E2F636CEB25FF1906C8994B6E26 +:10ED2000631AC0E7AA60C670357EFF6D86F4FD1DCC +:10ED3000E2554FC3F579E6A0FED2F067E2EB65FC41 +:10ED400007BCEFEE48A52A14C6B64CD507EB615CAC +:10ED5000F3FF3AA37BA8D548130BE1B8450E9C4BB3 +:10ED6000B7027881F1063B584286F9DFD1E1A6F27D +:10ED700032564EFD6CBD64FA6484EFC025D383A384 +:10ED800050DE31CBDB9424F86271EC674374F853A6 +:10ED90009B611E4AD16186F8387564FF67916C9754 +:10EDA0002151000F52919BE8B121C0922E9C6F1906 +:10EDB000A743C32C999E2B756C978B70BA9EE66BFC +:10EDC000F151A08E99D390FFEB4D03708FE331A4E6 +:10EDD0002360D4576CE37BB90EE866F1254DEF2A2A +:10EDE000EA47D138DEBCD1F8220405E845F4605585 +:10EDF0001C5F1AFCEF0C4C31EFF76F3319E93C95AF +:10EE0000B1A7902EBA0D9FF09F930D9C74CE4639FA +:10EE1000B43D877938DFB8EA57D8AF33EB79DE9F56 +:10EE2000FE2586F3DA5A778B7723CECB7963300EC3 +:10EE3000F0E7D571F9CC8B07120D9F4ED3CFF7C6F3 +:10EE4000FCD421DB789DCC1F3A9607FFB8985D4C27 +:10EE5000FC2FBECFE65BAB3CD561A40E29346F8797 +:10EE60005D0E276ADFD9C1586A46BADE556684014D +:10EE7000156C1BFBA22183BEE8528CB0148576E58D +:10EE80005F301A41CF3867A4C251187F201F3A2D36 +:10EE900061EC41734DCA84BAB3B38D9EF7E2D89F3B +:10EEA000B13DBF3C168E027F747B385F658FFF5F7C +:10EEB0008031E22BA52DCCA6A5F505810DF8776B49 +:10EEC0002FFE5E02BC6E95A2A747518E8B03247F56 +:10EED000F0BE4F2EA0B251ADC1C66ED27F1EC1078B +:10EEE00050EB926BA86C500B705E6DAF3523DF1743 +:10EEF000FB38DF7F60849BA1BFFEB945D1CD367959 +:10EF00007A9E49C4A75D0AE7CB2D4AA69EF831BE7A +:10EF10000778FF153800CB2E3F9F17D3B685AF99E2 +:10EF200095A39F7C8E8F7F376F36CD6A9C07C80074 +:10EF3000C251A926F794E16C13E1C5C4C7997A734D +:10EF4000227A65EB4B7705D4EDFC1EB6BD2FC7FFCB +:10EF50008F68C43FA2FDF388D44282C3CCB7C3A15B +:10EF6000DD195E8CF260C2380087274CCC6E6FCF03 +:10EF7000E79982F78867E00DA4979ABFE2704AC7C5 +:10EF8000EF5986FD59AFC69F27BD135C32D6AC73CF +:10EF9000B292BC99F3699E0AB37E5FCFB4179719FA +:10EFA000AF39515EE6A8FA26D42351352505F8ABD2 +:10EFB000B179A8DDE087CFEB7A4624901FD51730D2 +:10EFC000F302D89F90CB70A6BC9E4F5EDAB3E4EDFF +:10EFD0006496BCA92C164C217E128D244F0101A7EA +:10EFE0005AAB9A389ECA0646B01C97BBCF2E0EA2CB +:10EFF0007E5235F58813E052C349661FBF0FE5CD39 +:10F0000005CFA5D89FC9CE041FA4F7B26A865B506E +:10F01000EF94AA422F8F66F0D3CBA8E7810EDFC111 +:10F020005773F1FF12A28C86510F7677B4B3B741B4 +:10F030004F7B5FB889E9B3D0FE31F20BD4509B61AE +:10F04000107FD6723F0109817A56ABDA85FA5ED11C +:10F05000DDCD3AE24DD7AEC192B18DD4AF5235730A +:10F06000B944CF7B4ED23C42064310E40A46F896A0 +:10F07000B518C10D742E96100E7726FDC7E9AD8523 +:10F08000C8EF80BA1E9B95839FC7FD066B3E4995CE +:10F09000EBF5F13A9BF03BA0878CFF04FE92C31C7A +:10F0A0004E39EC25BAC811F9D8A85D2EC4389DF8A0 +:10F0B000CF629B5F3555F035FE428897E84368BFC5 +:10F0C0007A8A178697C2F33A49E5702CCA9C9FF555 +:10F0D0003DCCBF0EE72F6B71C28735EF9EE2E94151 +:10F0E000B493CC574078CF86BF07ECB16CF32F7A3E +:10F0F000140B8E24F73F4A587212F2FD1F3F5D85B4 +:10F1000072B956D033BB9FDF4C00FF6F7E7025C1B4 +:10F110001F93B81F720EF86352E1D9F0FFE6073370 +:10F1200038FCCF1666E0CB2AD7BA0FA6E44976FAA8 +:10F1300071BD5D2CE8511A19998FE2B0C377FAB509 +:10F1400038D4B7300E7FC2777CA102F56061FC6BCA +:10F1500088B735ED6D3AF255F132E6C0F1360B3C29 +:10F160005CE18C788E023C773694075BA0EC96B815 +:10F170003ECD86E37E9027E1A75079EA4D0EF73920 +:10F18000EC5D06DE3B57CB8D49E8BFD3F7C44F1784 +:10F1900002FEBA431535E466B64AE4DF79253E9FA0 +:10F1A0000D9224F891E307F0B601F1A68438DEEE63 +:10F1B0005F739DC01FC063C78311373480A7D870A9 +:10F1C00098AE00BA157113F57FB89D814349783028 +:10F1D000B19F3561B6005DF5B5F11109CBCDE3FC0A +:10F1E000A05D5501EDB7BF5C59B3D946B78312F79F +:10F1F000FB582DF7EB990C7AC03FB17CF5039EAA22 +:10F200002BB19E92B0DD77B0AEA4DB2D90E27722D9 +:10F210001C910A2E3F91B63115E773C2D2FB2C4CDC +:10F220007E54D7B87C275A7713BF15CD41B81E90AE +:10F23000B87E623BA589F8EC815C7212A988A33A7A +:10F24000645F94E3BBF0BD628E68C80FEEB6312AEE +:10F250007BADF14D3682FD968CFBDB9CDF03BABEA5 +:10F260001BF5D87E419F92FA9EF50EC07371AD4C8E +:10F27000F82E196D5EC4603E6EF4CF66D373F2BB98 +:10F2800022AD4913BBBA404FCE479B32438EEFC7E6 +:10F29000F103970E19928E2805B8408EB62B71F2A5 +:10F2A000C355F03B6382CECD36FE7A41CC5B093349 +:10F2B00023599DA6FF0EA7C0927197676535B6F3D7 +:10F2C000127CA5EC5AE287A92C66201FA8693E385B +:10F2D00080F8D7978D2CC4F1D78647366209FC4F4A +:10F2E000FEF676C52C4638B6AF51B9BF6DB2578918 +:10F2F0003F1D9CCFE03F9DFC1F51DF2C71FFC48B55 +:10F30000F8C0F983BF8CF6DA353B613840FFE7B7C8 +:10F31000B2287EE645FC04D2F851A249D381FCD93B +:10F32000C6A20643FD9F38A0EB849FFF40F802A0D1 +:10F33000975509ED41D240DD7BEACD8B1B910E1F25 +:10F34000FA1CCC5996E6C76C3E947D207776BB9C20 +:10F3500065BF2C7BE2F4198CF40E8B92DE776A2C5D +:10F36000817ADD2DF4DFA7A4D8BB08477F7E6BCA66 +:10F37000CE5F9D2A6B253ED1AFA576FD950B75A47A +:10F3800013744C76BB3FCBAFB2D6793D1D49B29BCF +:10F390004CE7764A0D47090E4BAEB3E172B63BF52A +:10F3A0007726D9C6ADE0F6DEE94E109F78127712C7 +:10F3B0007EE199B0E35176AD1FFD0407F9698F41F5 +:10F3C00089EB024BCFCB216F86FFE66C5733FAB740 +:10F3D000CAD35146EBA3DF26A5A409DF2F0DFF6A90 +:10F3E000A802D60D2DEDC57763B9B27DCE900CE5A0 +:10F3F000D1816901BBFE3BDAB79CEAC776565279E8 +:10F400004AD17F7209F4736C9733BA0907FDE39907 +:10F41000334EE09B16A1AF0EEC70915C1D7B40A2B9 +:10F42000F5D9CA3EC9CC43FF265F2F45FE3FD6BF64 +:10F43000B294E5D0AF2D6F802004F17D5929CBE146 +:10F440006FADECEB5D8FFEC4CAA4621839ECF20616 +:10F4500047342C39D18FA9BAEF1D605D27D21BE844 +:10F4600031D3A1D37B905103FD70E68E92BF3CFF58 +:10F47000ADABC2A35877C42F74A09F7DE4CA308E71 +:10F480007B307F6118FDFC5BDE744551AF6C50DB57 +:10F49000666836783604D438C98F6F28834F2B1CA2 +:10F4A0004A867DB1E03217B0262FFAC901A675024F +:10F4B0003E1A7C20AEC8EFA312F5DF29F8277BBEE9 +:10F4C0004AFBA7891EE3755F94E9D5E452D33C9CBF +:10F4D00055BCB4DE1B0EAE1F2E77F0F550A9237E6F +:10F4E00039CE0BD5487B01C6736A87B8BDF569C7AD +:10F4F0003E25F0E744F8B4D7709D6DD6A83AC237E0 +:10F5000030CBD2D729BE3E96530CF165C1D900E06D +:10F510003B6DF04F6427073B4E6F93315ED0C18641 +:10F52000D05E0EFA8719D27D931C253D080BCCC600 +:10F5300069D0CF40B4A006D74F9BDCFCF9262DD56F +:10F5400078393C77461D35BB75A4A79BBEDFA4A7C1 +:10F55000FAA6D99EF7766843D8FF2623D5676FDFD2 +:10F56000DF11E6CFCD5463596DFA795EFB3C9AFF0B +:10F570002676A071BEEDB905EF26F6425F59CEE7BB +:10F5800087FAB07D273E67F6E7870F9785D2CF7160 +:10F5900001837A42A86D361039E46EB1F1F9265F25 +:10F5A000B491FC6814127B3BFD8509DA1959ED26EC +:10F5B000EACFCC6C5701FDF972B583056546BB43B4 +:10F5C00013B57364B4ABCADDDF4055E6F756097C6A +:10F5D0007797C326073EC17703B0CE26BE3599FB89 +:10F5E0009BB0AE96EB5957F945E04738B8DD6DB79B +:10F5F000F83AC2E43A78EFAC60F2E70A6CF1339D76 +:10F60000B9E9791573673CD7C04FCFB00BD9FCCDA2 +:10F61000B67B90BF8B84FC85B8DD3C1FFF821E212A +:10F620003EEAED18DD86FCA7B04C79B3CA6187F0DD +:10F630005BB2C68579B26F16D0BC481FB2373CC9E1 +:10F640003D3055901DB9AE80CFF37335B6798461E6 +:10F650007E057C9E19CF2399F3B39E77A13CDAFCFB +:10F66000AFFF423D87F6205CE3D67D693F69FE5BD4 +:10F67000D78731CED68DFAADFA6CFD36D1FCEFE8E6 +:10F68000181DAAA844793A4E6567B4461B253F5712 +:10F690006629945F3946F2BC418D1968EF3700EC5A +:10F6A0002680E0AE36283EA15430B438609FC0AF0B +:10F6B000217B9860E8C778853EF258FAF88F1DC420 +:10F6C000BF9B7D5C343CED27862A72D82F6FF803F0 +:10F6D000B2571B022C9E8B0E071CAAD07BB1238E27 +:10F6E000B9E81755E7D67777B22A8CCF399937BA68 +:10F6F00091F431A7CF87401F8C1B3A7DA62BD77A78 +:10F700005F6E7F7F1BEAE33FA37F3417F17A09E145 +:10F7100075831A0DFF6388EC024A223B8871D9DA9F +:10F72000F3E357699F427617FC012AC7E91D8A3225 +:10F73000F20734112F0EB168A5CEFD88955CFFB39A +:10F74000DB6BF0FB52FE7D3C7237E26B22BC7C30FF +:10F750008E17C3E99C9B031F8FB3D7D03E9DF23316 +:10F760000DE38B07DFBC98C6BDE508970FC00FE11E +:10F77000EB43C017DA739FA09FD57F7FC718E78F31 +:10F780000EF7DD58FA059E3CBE0435F6D426C6FDBC +:10F79000994AD2E7A7872A48AEB4BBB1F4D72699D5 +:10F7A00084F4A86843DE4FB7D7A03DC3F7B114BEB9 +:10F7B00097F13DB3BD8F58EFE30CEBAEECF7BAF524 +:10F7C000DE642B511E7C009F5D4F38E2554E905BEE +:10F7D0007704E0B0F913BE30C767369E0E1D99114D +:10F7E0001C3D471C68B0431FE2EBC8D3A42F06CBD7 +:10F7F0008CA65835C56BE8798FB0635BD03E41B9B4 +:10F8000019ED1794CBD1E945BAC8DCFFEE63D64FAA +:10F81000636EA8F7332E1703B818263CC8C9DDE875 +:10F820003FB336F2C7FB64FEBCAF4A4F92FDF68889 +:10F8300076D58CDA597649F6F07E02B00C424459FE +:10F8400070F7699BC8AE0CE41B06C23B5066BACD8C +:10F8500010EED6805D936C7A5C351BA95FF1DCE716 +:10F860003563BC2ED7E41A271B3FEEFC4D1A8EE3FE +:10F870002B30C8CEFBCA4DCDB47D6FB51B50A1DF78 +:10F8800050FAF98037C1C7AD8071CBCE3F4EBF76FD +:10F89000179F4F81984F79C26DDABE1F6F2727DC03 +:10F8A000B79C639DEFD1816E36BE7085817E1976DF +:10F8B000264974CBABD2329E076AC319F5836FCE4B +:10F8C000983C6A1BE7D0E8B473F2D131C147E375C5 +:10F8D0004F7C09CB67ECF9CEE7E77745A0AEC44B88 +:10F8E00025A83F74D7DB1B1BA732B642E891D6F69A +:10F8F0005F6D437DB76260A98AFA7F65FB6F490E31 +:10F90000572425D2BF2B84BE68315904EDD2634EF3 +:10F910002FD92DCBEE822D27BBDB12CAB44B2D1A6B +:10F92000B74B2DE14CBBD4B253C98A8F817FEFC74F +:10F9300071DF1FB2EBB39503B7727818DF875A896E +:10F94000FAFDD3D83E5EDA04ED1F707A088E63FDAF +:10F95000334A51EF1E95F407DB314E7F9397E2F463 +:10F96000D9F8B1E28BB8B627BB2BECC78AAC7DAD1A +:10F97000EC7285B01F4C8E139C7FE9783B9D5CEF49 +:10F98000AFB0EC16CCB769567AFCA3218E8B41A799 +:10F990005BC833E02347DC711C7FA8B7ED78FA0B16 +:10F9A000F1760F8E5388F8E378F8A4DF5BEF7F21C0 +:10F9B000F06E8B935E8878F96BF9E9A8D36BF971D7 +:10F9C000DCDF69F592BFF3B7F395F9D7D1D9A10977 +:10F9D0003AC0BC66D9E896452FEBBB1F097C8EA2C6 +:10F9E000119A7B369DB2F174B4D5EB70C27AF5E80A +:10F9F000E12B68FD7E13E20BDADDA7EA4B50BFB5C1 +:10FA00000A7C1D03BBD85569A7CBD217EB80DF5A00 +:10FA1000FACAF225DBF850EF09034C2B76E6D72023 +:10FA20000837F5713CAFDCEEB9BBCBA64F00DF1554 +:10FA3000DFA47D29B725BF99F8AE10F8AECEF49FAC +:10FA40005BAAB8FFDC12CDC2773237BE5B04DFC0E1 +:10FA50003CBBEEA2795E1EF4F8D2785A1A2E263BF1 +:10FA6000795F400FA09E3D06760EE77914FD7CFC81 +:10FA70004E8E6EC5388139E09C6397ABA3EEE8D615 +:10FA8000EB733DF7457F92ABFDDB3BE7069A73E8EE +:10FA9000E96C3A2D1576DB5C103D9EA4FD7A57B4D7 +:10FAA000139AAC77C62B6568B731F09956DA5F06C2 +:10FAB00081473FEF6DDFEE5FD1BE53969DB7FA2BC6 +:10FAC00069938FDAFDEEC0B2CCBAA72AB3AE325B2F +:10FAD000BDCCC6B738C23CFB7E5552F011F866B6B5 +:10FAE000FD0765347F29C6D1E6EB26EDAF7CE873D0 +:10FAF000E8AEB289F91C1972DC3ED162CD9D18B70F +:10FB00003B4EF4D3CBCF19C7EEEA18BDC76E67647E +:10FB1000D960B8CF2A0BBACBEDC7EE41F93F04FD4F +:10FB20001CA175E1262BDE26F6CD9319F877B6CF0A +:10FB3000CE88577844FC85B136DAB7E9F398AFA19F +:10FB4000E9CE0FCCDC74153CEF13FBA2AC82C7519D +:10FB5000B03BA48F7FEA75DFDD2CE59A6F178D77B8 +:10FB6000416A9781F1186F155800C0935AC7D8247D +:10FB7000C0931B703942F1BA841BE53150C7E36E64 +:10FB8000AB645DD02146F1676BFFADBFEE430DDB8B +:10FB90009D021B3AE24B7FC7D049CC68E7600180E9 +:10FBA0002B38574EE2962CC3603AEE83C96DE17351 +:10FBB000ED47C9BA6AD27E92DE37C24B1E3756581D +:10FBC0009C61A879BD1A6F9711AE84947BDF4B8C32 +:10FBD0003331FDF938777524B7BDC3998BFCF40D2B +:10FBE000E0A723FE863AF652FE49116B93D04F945C +:10FBF0001BA329E4B5B7A4782FCAC324357AA4ABD4 +:10FC000016F72F5D14C793AE6E9F817E49C1647D48 +:10FC10008E04747A4961A918E0B6204FDF8F2BB9A2 +:10FC20009F74BFBBC007742AC045410963DBBA3E5D +:10FC3000DA84FBF305D3F4390E5AE98D2D78250CBF +:10FC4000F529FA49FCBEC7FDC182466C3F43DF8FF0 +:10FC5000EF2377BE4D75CBDFE801FE7B87FCE5E344 +:10FC600054DE27F3FD889D32976B55167173E04380 +:10FC70008C67E6C9C354CF6B3F4175166629C49B98 +:10FC800015A70816C677213ED7C446697FC8E9B3D1 +:10FC9000F68392DB715FD4F4F37DD12BE005C95775 +:10FCA00097BEDB2E5F3F95A50C7EEE023381EBFF06 +:10FCB0007EDC178272A023CC32E4C57DF58E77807E +:10FCC000DF1557ACED00AE377A79FFBD1DD1FB7063 +:10FCD0003E80339EDF23E4FB69D921F279E24F2392 +:10FCE000FEE548DC401FE6D49B5F263EFD70F456DF +:10FCF000EED388BC94B3E8DD5577DFB87C97535ECC +:10FD00004513D2E52DB9794108F8A40BFDE1CFE008 +:10FD1000DB750B303ED3E5E7741AED5AB609F306EE +:10FD2000144D4E29C87FB56FDC80FBE15B44FCCDF0 +:10FD30000CC922CE2CFF19F7E5BB31CF0590EABAEA +:10FD4000F89B6EDC9AF038DAFEFBDB38BF7FE3F914 +:10FD50003EBD206AED3513F3A51289EDB0FBBF79E6 +:10FD6000619815CC4F9785FD3D7E2BB3EF4B9F11CE +:10FD700074EFEA384C7C3CDE4F88E7B728F157B681 +:10FD8000219ECBA5F871C41B2E8B984D9F5A71F6FE +:10FD9000976561EF599B9BEB27AE77C7F77717B94C +:10FDA0004D67A6FCBD4CF2B78FD3295BFE7EC72200 +:10FDB0000E03402B7BE3CAC388AF9E8EB17B48CE37 +:10FDC000128BC87F2813F9404CEC5BEA621C3DC2E1 +:10FDD000529ED9F8CF01DA4FD6BBE48FEDF6353B12 +:10FDE0005FE094EC0F91FDC9CACFF1B44FDB618F96 +:10FDF000E33B2A120CE5D3CA1390143D835F3DED1B +:10FE0000D3A97D7F87BEE39D4A1BBC62BD54664D6E +:10FE10002FF105D26F5EE14759F33BF8E6BDE600EE +:10FE2000D07907B839681F775439484ECA36826688 +:10FE30002E4BCBAD9E80F905D2E366CFAF40E17C7F +:10FE40000EEBFB7B118E490803D5C3F7223C6540BE +:10FE500090FF037E09DBBE88E018C7A373A011E3FF +:10FE600048BFABE232EDAAE4F162BD5AE0336B1C4D +:10FE7000B6F33C74A8E2707E523A5429B9E9C0DA6C +:10FE8000E107705658F8FB23BCCDB13F69D1C5AA34 +:10FE9000C3BA2F685FF79D6D7FF57B51AFECE9A882 +:10FEA000BA17F54A17ACC3F97E114BBAC85E70FE9B +:10FEB0009713318A63433D2A13BFF3F70ABEC73253 +:10FEC00011FBFC8521AA475175560EF1F795E2FB0F +:10FED000BEED774965F07CFA76F13C616818CFAEEB +:10FEE0005CCDA8BFE9A25D7195E1C671D8ED3C6E0D +:10FEF000C270CBAF48E48BC06FAA262F401E9A5227 +:10FF0000157778B0DD766654EAE9760F08BC7B4257 +:10FF10004FCEC7767A552C86E3B06599FDDD6FB577 +:10FF2000ABE270B33E1E17B2DEEF10E34D1B0ACDFD +:10FF3000BF109E9757C5165F85EDEA79BBAE8E2838 +:10FF4000F1B7D5FE4ED1DFB4AAF8E60B71BC6A3E1C +:10FF50009EE2FE02C983D56E50B4ABD8FEAA89FDDD +:10FF6000E655F1B8A4F57E8B18B7A22A7E178D2727 +:10FF7000FAD9DD5147E37DB7C3A0D2922FEBBB3B4B +:10FF8000C477DD221F544EF07ED53E467AF81F8599 +:10FF90003C6497280761F4E3B12F186F9AC9E50C08 +:10FFA0007187F13D7D6002BE675007BE2D851FF74A +:10FFB000FB12B41F6FF19B156F3874E4E20CFE6303 +:10FFC000B703BFD9F3BAFEA12AB3BE3A9A595F5616 +:10FFD00097596F30EE1DF737B15EDF98F9BE369650 +:10FFE000F9BEBA29E3BD05C7F60E4671BF1D1DFA5D +:10FFF0005003E9A9518A07EE28D44B701DB1BB907C +:020000022000DC +:10000000E3F10E8C3B93FD0D53FBAD1837ACC47C74 +:100010000D1E674C88F821C6E71BC83EF338A4B70D +:10002000FD53430D40F787059E816F32F43BE8FD99 +:100030008715F42F96C54CCA0513FA7E8787DD8095 +:10004000EB36777898396C787B46E179235E6BFDE7 +:10005000086EA0DD7E3D23C6B1F4238B003561BC64 +:100060006EC16F689F70FDF2B422F23F74F05C8A3B +:10007000CEB65FE592F10CC2B5A310E0C03859745A +:10008000C4C07DB6296D3AAD07BDE05FE3BC027523 +:1000900063297CAE35F0E791D59971CD1DF9A6A401 +:1000A000C2FB6425A37DAC7C43CB78EF11EBF699C2 +:1000B000CEC52FE27879222ED0E95F511CAF4EE3F6 +:1000C000638114FF10DFCB6FB8783E94C6F3392EEE +:1000D00096632F2930DF4957F7D17EF64B42BF9701 +:1000E000A1F7827E26D3361F828A2EEC2DBBF12CFF +:1000F000FCFF277EAF9BDC3F2FEBE2F37F49B1D6BD +:10010000EBF162B4DFD749F137707C561576DBF737 +:10011000A342B136312E6F6FC15DA91A0497054F06 +:1001200058358EF0BAE51740BF7ECC9F889BB84506 +:100130005A8AF0813E3C29EC68369C4ABB41FE5805 +:10014000C1176E7463FF96FFC09A72E7414DB4DF2A +:10015000BF1EE182FE4F88F54EC1A444788E2DFE6D +:1001600057A872FFA75F49E761D1BAD0C92CBBC6B7 +:10017000F38FB10E721454F9FE6EB19B997941F46C +:10018000D76121807AAF53A5F5FFE4654040A0FF19 +:10019000FD1BD5DD68C795D545B4AE04D94C519E3D +:1001A000A3D9B31EEDBD153F76635C631ACE679885 +:1001B0004A1FC687A7619C788C4A8D69B47EF84D2A +:1001C000F3E86D48849DAE784805BCAE76C72F40F5 +:1001D000FFF0B6CF8FBC85FBEE211426806B8E6CB2 +:1001E00068EADC73B65F82CF7DCC28C476939951E0 +:1001F000A4127D32F34CADFD7BF8BDE2B7D19F7DFB +:10020000D791CD4F3AF68F7E1D361ACFFFF07DB2D3 +:10021000F513FCDEF1CD3B57FFBAC81F8865F47FAC +:10022000675E40457FECDEBCC08B88FFA31B5D147E +:100230005778CBC1F348AC710E6C7495A21E1EEDBD +:100240009F41790D07FB5D01FCAEA77D5AC01E07DB +:100250001EED9B16CC95F730FE1EFD05D06F86E097 +:10026000972B055CCDB2A6E2BABDD92CBBD7EE77F1 +:10027000379B3C7ED42CF37CCDE6F62F7FD72CB376 +:10028000CF9FAFA7B3BF4BC7B946A7A2BC649F7FA0 +:1002900038DFB989538E64A3342D8D37AF1237718F +:1002A000DDAC30C320ACFFE5FDF5FD0FF77718F9A5 +:1002B00075A2FECEF7FD44E74136572463A4FF64E0 +:1002C000E88FE456E80191EF63E511B9848DEC8C79 +:1002D0002C0EA27FCBAAA224BF2E688B7997CE8446 +:1002E00024CE6B88BC9F2A47467E4F76BE0F6B326A +:1002F000257BFEB395FF4301151B5F63FF388E130B +:10030000FC4B8A638873061483A4BCF96F659C97C1 +:10031000C07C2BF49F3757D564E41FCB8CE78BE36D +:100320001A8AC7B932BF9B58DEB2C6BB3613EE4F2E +:10033000FC9D4FD68FD9FC8C89BF93D9315B3C6C27 +:1003400037EA278A239FA1FC732236CD3B3505E986 +:1003500077B083E755FF4E4E7D05F5E7EFC654862F +:10036000097ECFE5B34398FA6C4A928EEB5F43BBAC +:100370002688FBDBC6ABCE90C35A5441FDB9938DA2 +:10038000DF45FA3DAC2AC28E8D38B15FE323ADC1A3 +:1003900000FCD5FF23F48B7AFA4355C27CF9F91F90 +:1003A000A59662FDD2B12605F5C64BFB0ED2B83735 +:1003B0008F2D94B1BE5FF4F3EB47F7CF63D0CF73CB +:1003C0008FFB598AE25B4915F9E6E6279D942FB821 +:1003D000EA7B7E92EF9B9F58F3D022E8577AC64F74 +:1003E000F0D43FB1F26117C1D749F3BEF9E92F0547 +:1003F0000711CEFF703237F0E7731BB9BD59037395 +:1004000076C3F76327D587ECFB63163EAC7A833659 +:10041000E710A662DFBCB76C8ED346AF9B65F6359E +:10042000F4570C2817E758EFFC5CE5FED107277955 +:10043000DEA1B4F7C0129AE7F09769DE1293E47771 +:10044000013FAF88F9423B9A8FF98894AC84F71F3B +:100450003C22F1F90DCFDAE529C3F177A92D18DB9C +:1004600010FB3200FFD7D06F6BD83BA7ABA416F7B9 +:10047000ABCBCA3015E2F2EF3D4EFA15CFF748404C +:10048000EFB5F84F78BE6EAF3385EB9DB54FAEA19B +:10049000BC45A8D3FA67D5F77EF0B4E9C7EF9D193C +:1004A000F9FF6B87EFA0F5E3AA7F714553D0FF7B7F +:1004B000AF3AA31EECE759E5A8DD2F7F6F644F002C +:1004C000E972D96939E3398E7BBA80C66956836788 +:1004D0007F0798A77CF575C3FD34CEBA27FFEE974A +:1004E0009847B92E2B9EFC1EFEA3F8EC75EB193530 +:1004F00073DDBADA29CE1BEC9D94D3FE8D9F3310A9 +:10050000F66FD5E3BF7BD084F13F78E2FD0771FE43 +:10051000ABFFFCDB07BF85EB9FE73D1AC6E1D73D8C +:10052000FAEE83DF8479FFFA599703F9E6E6477F0D +:10053000F5D6B7A0FEF1F76714A0FF59ECE2FEF183 +:1005400089FDBF2FC27303FFF0832B26231EFEE11C +:10055000A9CB279FCB9E9D00FE4ABAECF29A247A43 +:10056000EACFA21303D5E7449945BF834F1E2C451C +:10057000F87EFD1ACFAF5807CF301EB576780DE55F +:10058000E962FD76C0F7DA7DBD749EE36C7C9B5317 +:100590001C612EF79892BCF6C92F7DF1D25A2C150A +:1005A000CA675DC7C67A30CE98FDDD381D5F053A53 +:1005B0005E74F6FB75E29CC7BA7DFD7CDC61A063CE +:1005C000E06C3AFE1AFF71C9D974AC7365D2F1E3DD +:1005D00047AE0FA6F0E5939372E6C35A745CF3D46A +:1005E000DF9FF37CCA892C399E08CFAD12874B71EF +:1005F000198D2E94D727F2CC30E0E5C4EBAEE4227F +:100600007877A2FBB7A50CF8E3B832B604E571EC35 +:10061000072E0DF7E79B7FF07315F5DB89A77EAA00 +:10062000EA3CEEE69340AF9F60E3BF11D4F374FE63 +:1006300000F1F45D7F0AE3106B6F6F257AAD4D5EBC +:10064000D3A807E839C533D626B91CAC4D1EB85619 +:10065000CA413FD355C0F56BB250F887697A4A75E5 +:1006600048C7230B91EF26A2A3356F0DE77DB18D0F +:10067000AEA6724EF93CB1CB25E3F9D975E29CD018 +:10068000BADB1B89BE965FBF2E29FD3C17BDC7F79D +:100690004DFEC27344DF744D108F12F33E9F5C9F7A +:1006A0007F5E7F19DE6EC243A673CFC6DFC66E17AC +:1006B000E9E7B7E6B8287FEA88A2DFBB01E473EC7C +:1006C0006585E1FA7349CD2F153DC7B982FF06BE96 +:1006D000D46D7C196F3FD93D19BE8BDFCEED4BF643 +:1006E000FE52FC7627C6F4C6E1F9CD549828B45FD3 +:1006F000F7A087F2999DCFBFBE04F5C2BAE7FDA46B +:1007000017D6BAC61EA67DD1EFB8D81ECE7BE46F31 +:10071000ACD4781F079FDA40ED4FC07B6CFF9BEF96 +:10072000771CFB06CCE3A6EDBCF16F9E08CE6620DD +:10073000E7AB5036018F2B7FF8ADAB915FB18EFBED +:10074000AAC70ADB9EE679CE53E7E0F8079F3A4551 +:10075000E39DF85E1E43BB7BE287BFFC1CE2F3FD1A +:10076000A79F998DFA70E57645B7EF17DE643F0FC6 +:100770006DB3BBAB86B7D07ED12A7CCFDB4B678411 +:10078000ECA09F85E3A3DFB2EAD9A0E1999DD18EC9 +:10079000FA59E71ABB2D4A76CF2C71D4117D4B90B4 +:1007A000CEABF6668EFF4317B7CBEBD4B115BC7D4D +:1007B000A284F3C3087DF78A8BC72BACF7D9DF5B24 +:1007C000EDFFCD559ED50FFF7EAD8BB5E5CA47FB3E +:1007D000B9E877D5DE3FCDC8EC8FF3EDD9E3F0E78C +:1007E00027BC7C9DBBE6693FD17BCD0FC1EF998DC6 +:1007F000F597289F7CCD0F37107DD6B8524BD03F50 +:100800001BDBEF62E8CF7CB0FF657AFF81922A2D77 +:10081000C076CF798EA0FC66C3B566D8250E8D66EE +:100820008EDB29F6A9BAC43E9553ECB3E14960F4D6 +:10083000E3687F01EB6F4CA5F5F744EB8780BB8C39 +:10084000E66DAD23AC754337EE7B600CD06D32CDD9 +:100850007E1E8DF1BCCF3F64F187AAC4355CEFA941 +:10086000128B217E15394E79CB4A38340720663DEC +:10087000E1C594DF3A50AD911CF9DC7CBDE882FE05 +:10088000C9DF3D3444FB4BEE88FCA15DBE3DCB820D +:1008900064375985ED7939CFF7C378A4AF1A9EDB59 +:1008A000F7BB438733CF4967EDA3FFEBF8B91FD3FD +:1008B000897277BD75B01651087CFCBA755E53EE2F +:1008C000E2EFF3ADD75DFCBD90D3752D5C0E0F3616 +:1008D00007098F161EAE7FAE7704E318D73F57BCCB +:1008E00014E97EBD6FC6BB88D77F451D88FB5AF9CA +:1008F0002E3A977AD173B12FFD1DD4BFDA5A49E74A +:10090000B2AA87635F9805F51B5BA751FC6CB69B89 +:10091000F3E35776394C05FA3F24F2ECCC6F4844A8 +:10092000CFAFE102043E6C66BACA1753496ABF945E +:100930000DFB797DB810CFD7D9BE77FAF0FBF51251 +:10094000ED97DDF01FAF5E8138FCC5AB47BBB1FC56 +:10095000DA2B4CCD83719B9FD47B78B843F4F71C82 +:10096000F4E748F7378E3FD94DF848E3C74DF8B262 +:10097000F0032339E87D1ABFB4CEB4F0DBE901FE01 +:1009800003FC5D1F6CFA3CCBC1F7E3F8F44D7F9795 +:10099000CD4EC3938DDFD799F98351D243037C3C6D +:1009A000B1EF62F5FF5B7C05FEC3EBD006F34C5E56 +:1009B0000F4C3F44DF29BE3EB4E337B06105F9EF89 +:1009C000463642E5123646659C692A962D7830797E +:1009D0001A6E17C4A8DCE98A7FC54D71A3D17918B6 +:1009E000F7FAF5D4F8054588EF5772FB4369FFC65F +:1009F00014711D51BADD941B609D4F69193DD98159 +:100A000070B50059D19E789865A77515E31D2D6FB7 +:100A1000FCEA4FF6F76CFC3D8FF78FF7E3E6E776DD +:100A20006DED32F434B59372F503F58CBC8DEC3A70 +:100A30008723FB798B9B9F53CE0117E6B6033F5A62 +:100A40003FFEFD3BD2F04C3C77BFD97D79431FE898 +:100A5000E3C70A464ADC501F705FD9D555CFD8E3AB +:100A6000B07CC2FD61A8379811AC1B4B701DB75408 +:100A70000616B6E50D6D13F2B1CDCDE3A8F0DEC4D8 +:100A8000F783582FA4BC2EBA1A64299640F7B7F7FB +:100A900095FF64A63E317D5A06CEB8F41CFA1D2F90 +:100AA000B608CDE3EB7C8A9FBC18355D4ED483FC41 +:100AB000DCD95F1AAF2C60512A432C46A59507114B +:100AC00066092A4BD8309511364265291BA3526717 +:100AD0009A83C705B81C94B328D52B9941E5E365E3 +:100AE000A0FF439837E88DA27D395FBCE8476E6E62 +:100AF0001F277F5526BDF411D8093AE726F47F3623 +:100B00007E9CEE877674D9CF873DE2A675F3E31B12 +:100B100075A28FF5FC47822E3F12FAFDF18D51CA66 +:100B20003B3FFA883B8AE751DEF633351FE0787B9E +:100B3000CBCFCB9B7DE9768F15F0F8E4E923CFCCC2 +:100B4000C43CD97BDCC68B6E929714F1ADC5474B84 +:100B5000DD3E1EEF1E503EB0DB836677EC276EE86D +:100B6000E7F03F7BC9EFBBE54E89FC3EA64B24670F +:100B7000CB04FD1E2B187E0FCFE19B5B5D3AEAD1C3 +:100B80006503AE23A80758E20AC3DEDF5B621E2CB2 +:100B9000712FEDE72E3B4F3C6819A011F92FBB1FB9 +:100BA000C6A6E663FC986213B6F66EE02F2B5F1CB8 +:100BB000D7B301B1CE69DDFDFB30EECB9C74733F42 +:100BC000A8F52D9E3F7F5CC46F07C57EDE076E1EB5 +:100BD0006FB7DA9D744B16BF66DF577012F1A2260D +:100BE000AFA738BDB58F725C4D34219E06AFE7F7D5 +:100BF00011CCAABF6E15F2C5DD52ECA444710E8E65 +:100C00009F594DB791FF327FE6DE303E0FEE7351B4 +:100C1000BEFDACBD2E03F116F470FF61FAA2363CA6 +:100C200069C6DEBF345982EB81D6F1BCA76440DCD3 +:100C30006B42FA7F95C0CD7BFB2E3F675C19CD855B +:100C4000698B93E18CCC0C7D5490552FC96A5F9EC3 +:100C5000F17E0AF07831E881293E96F243F9F826D0 +:100C6000733EF2FD2028785C2F4E458305F49B02ED +:100C70007A04EFD5C0B09C17CA08D4DD05F49E39BC +:100C8000C5FB20940F39861B91A8D370FE80774D49 +:100C90001EBBAABB0CE5B84F6ACB98FF98DB3EFFA2 +:100CA000220113F4C3B0DFC1A61ACAF74AAAEC1690 +:100CB00084E79E4B393DAA9B3E5E82F4A8AE624912 +:100CC00085CA5439E2DB2BF68F77A9DA0DD8FEBD41 +:100CD000C75D827E0B6FC2F6557B7B6358CEDA37D9 +:100CE0006339D26DB35F6B21BF03FA457A96E1A2F7 +:100CF00002E878CF23AEE426A46F3DDF87013A9562 +:100D0000E2FEE1FB4F01E2C06EBEFFC8A926DC2770 +:100D1000AE6ABA6731B7BF3ED213EE90BE1BE3890D +:100D20008687CBC77BD81EE4D9BD97EFC701BF1913 +:100D30001EE4C3BD52C67E85AA1BC47F978FAE7FBB +:100D4000692A8CFFBECE683DE462C381529483BDA4 +:100D50004E8672F0F8540EDFFB493549F382AAA79C +:100D6000804AD38F652446FE42B1CCEB804703E531 +:100D70006ED61B37FD1AE7B144D0E331666AA81777 +:100D8000DFDB772BE5096DAD673528FFA7147E4FB4 +:100D9000C9AA7D5E9A7F513DA3F39DF3F749A9CB84 +:100DA000309E37A0D2F9D09B9BDA2EC076AE7D92D2 +:100DB0004ECAFF8FB7A64AA0BEFB069E3BD5D09475 +:100DC0002CC538DE7B73C6C278EEF9C7187C037C6D +:100DD0000CFEA92D8CFAB022A2A6F07CF247A373D8 +:100DE0006E7881E1BCCC528C570DF6837ED6391FCC +:100DF000B96B88BF58A006F793EBEEEBA2FDFB049E +:100E0000DD5762C941BF92A07CAA9BFB530D21F024 +:100E10002FFA3DC4EA6C6FFFD12ECC9F1A7C0AE6F4 +:100E200003F41AB4F6E9AAC6DCF67DE05B059DACD6 +:100E3000FAA0B8AF86558CB9B93D1F73E339CA53D0 +:100E4000CAB08AF1CAF9FB4E1E9E467870D3FD4D9A +:100E5000A7DEDC7001977B4947FB60E10BF0432C78 +:100E6000E1DAD72CE13A661C1F5B4ED379550B0FA4 +:100E700087045E66815A5A5093C6CBDDEA8803F533 +:100E80009FF934A3F5CAACEBFED084F477B57FEAC2 +:100E90003EE4EFFB3DF95C9FC963745FC8DD780EEB +:100EA000DA9786DFA5F17DED1D1E1E9F1DF2703BBA +:100EB0007297982FC094AD07EF42BE54DD31A31B4B +:100EC0009A6CCABB9AF6CBEEF7887D58F718DD33DB +:100ED00090E3BB1D1ED49FD7DE6074EBE9EF006F7B +:100EE000197996A794B1D796C27C5601DE36E98867 +:100EF000C7F5C47737D733C2A30D6F197C3511FE00 +:100F00000E4DC04F161E66C92C85F704315FB4FC28 +:100F10001A80FB590FD7FFD67BC6A2E57F6F83EF00 +:100F20005981A7BBBDE27D15FF2EFD5E7C1F10E73A +:100F3000CD2BB2DF733B03FCF03594CF22E40709DD +:100F4000E763C9CF3537EDC1FDA22739DFB8F6EE2B +:100F500057298F353FA922FCABF6AE277E6988C49E +:100F60008B71DFF19E2D7B69FDFB5ED6FCD0FEA36D +:100F7000FDF895B0730C93D2C12E46DCACCB9D230B +:100F8000BF6FFCDC455D88FC6F4B5F4FE87F87C11E +:100F900081B2DDA7A48AFDDC6061FC3F91CEAEA6E4 +:100FA0001115C3777AC5E8422CAF702EA27C159735 +:100FB000C83FCEEEF77807AC0C416EEFEE70E3DD84 +:100FC0004A20C71AD5B77584A94C76E8F4FC84C0CA +:100FD000AFD7C1EDF9E6AC7BDADE15FC6BB553702B +:100FE0002708F7EDAA783E805CD5C3F3752BF8FD92 +:100FF0003BD6394AE0CF1308372C5872E60BC20BA8 +:10100000C9CA9BC07645D7F27C81A2269E37B155CE +:10101000F0CB89ACFBA0FE20E0F883A0FB2806D92A +:10102000097F7CFFDA1531B91C84ADBC637E7EE597 +:101030001C781F9572E35DF1C2FB3589230B8B6130 +:10104000084F05CF8FB5F2613FAAE7F7A94DE42716 +:101050005878B7E8D0DF11A7FAB68E562A83D77230 +:10106000FC253BDAA8BE408A15E078C1FA73CF7F31 +:10107000B297CF3FE215FAE413CEF31E8FE05BFC8C +:1010800085705F94DF5B73CFF5D78597C2F3195EE8 +:1010900071EF4E5BA67DB4FA017ACEF0CE4DE76DCE +:1010A0005879B7A3EED8850837AC339E582EA5E102 +:1010B00039DF7AF328E66157A6D703EF60FEB572F1 +:1010C000AE7D64A3E665BE8F4CE714DE92E297E046 +:1010D000B8A7EEBA5945FBED1C986F62380EFCF3C9 +:1010E000CF209C2D41FD633A516B5E7D05E659B7DB +:1010F000B8F4A7B17EB2BEEC0ABC57AD65B27E1B98 +:10110000AEF7B66DAEBC02ED57CB058CF281FF6930 +:10111000F357BBD17E9DF118977B695F5FC9C7FD0F +:10112000D36C3FF9EC7965EE9FBE8008E4FC652244 +:101130003E2DFE02BE8AFD6D7C65F1935BC8B34611 +:10114000FC63BD0779BA91F848F0D7F9F8A959F0CE +:10115000D1CD82AF2C3EFA5BE7ED71E43E5F7B8B35 +:1011600018A75FE819D08B7D76FD69E9D322276B3C +:1011700043BD76E086476F40FFC7B5777A39E225F1 +:10118000E44CFE02ED147B4CADD963E3CF477FFF07 +:1011900050C9621FEAB164C91E7CFF28BCD7319FC9 +:1011A000BD2D8CFBACD5918F97E07D5BD5152C596F +:1011B0004965AABC0CF01312700E8976B322454B18 +:1011C000717FA545E0C53B9E17D9467678B35FC8C9 +:1011D00091DC16463BD42FFCCCFEA91F3789FB00BF +:1011E000580AF34B35EE8FE27BFDA2747FA02745B2 +:1011F0007ED8B89E6CF1E6F04B2D3D39E289DD4D8D +:10120000EF85BEFC5BE902FD7DC7CBE92CF1BCEFAD +:10121000BFAD3FA017D9355C37A8C26FC42BB858F3 +:10122000343AF37F02DEFFADEF832C6E868164419A +:10123000CCE7037E700D6C6428AF205F87512F7858 +:101240008676996887D7D50F53DE9B2557EA059C8C +:101250006FAD7E47BDDC7E8E5AFA1A7E3AD0793A5F +:10126000FD83D707A03E03FF017A6C8638D754C5AB +:1012700012143F99C986A9AC662354CE66635446BE +:1012800099E6C4B286459D22DF6C1E96ABDDF1EF78 +:10129000A069DCE98ABF8974FEF5D4F83F61FECE0F +:1012A000A6BCB59FA1F39B5E4DE0259511BF606282 +:1012B000BFE77CF18CC9CC38C6F56266FE19FE2604 +:1012C0003AB765E438B7F5579CC3398DE34E780ECD +:1012D000E722FD243F573348FADE3A47B3A5B0E38F +:1012E0000A3A577331A3F549C91D433F42FD2E2FDA +:1012F0008A9904D3AB2CA7BDB34A6532CF67ECCA39 +:10130000BF4EA3BC4637DFCF94457C71DC2E639083 +:101310007AEED9798DFFD3E364F7BF5E8D15E711BF +:101320009EC7FDAA625E8EE7A5D6E415A6F331AD91 +:10133000BCD489E0DA94B7A4CE7E0ECE993FAFF14B +:10134000004CCD917763D4BE1F6BCD77BC9D8FC30E +:10135000F597E67F82FE2B41F8B3F340B3ED945549 +:10136000D6E771793AEE352EC679D9F2263F9B57EA +:1013700098336FB21EFB07BEBD34AFF06CBE3DAEFE +:101380008E5CBF12F4F5BBF95E8A031E78E567C573 +:10139000B8AE54F3BD0ECA07127136EBFC475709BD +:1013A0008F4BDE917452FEF91D230BF48D50DF1329 +:1013B0005689FBF6542DC89B857E4A9F93F2E1F334 +:1013C00044FC4C2D3E44F37BD5EF24F9BBE374E79A +:1013D0003CFCCEAC836FA0C9823A43DF88EBF00BB4 +:1013E000F9BAAC75D2E9ED7950BFFFF59514E43543 +:1013F000FD3CAE76FF2E711F19FE703F756E6CCFEF +:10140000E6B2747D6568F11E94A3DBFC328DF3F5C2 +:10141000FE695B7109E2AAC2002FFE4C27DFB7B458 +:10142000CA9493EF7BF27A36BE8362DF2CFBF965B8 +:1014300001AECF82975E7B18EF135ADE4A77B1A0D8 +:10144000DC1F28867AA21E6C25D4837D3CEF2A21DE +:101450008F99B8644AD41B21135A0523A378E70255 +:10146000FB769E427006FA1E92701DE66DE5E7015E +:10147000B2C7FB761EC75B421E359DD40F8B9AD038 +:101480007F00FAC1F5DAF9BEFF7A1EF76F13E2BCEE +:10149000EDCAA166CAAB5AB97DB284F8B5DA6DC996 +:1014A000E3F3DA633832EE6D393A5E6FA3F5A33FAA +:1014B000147F10EFB3F58755E20BDF4EC9F319A87F +:1014C000FB925C1906EBE314C7EC86F7B81E5DC906 +:1014D000E2A5A8CF86E5E1D75720BE007EDC520802 +:1014E0000E49841FB9A0F5C16F201F5E92B804F1A8 +:1014F000F8F55D7F6217C238013F3F3F1CD44ED3E1 +:101500007D56C1DA313AD717A8CF3DCF0FFDC28F34 +:10151000137C1B107AD73FB49BF05352C7EFCDBB5F +:101520005F192E2EB27D7F89E04B8BBFB2FBFD6A27 +:101530001E5FA7F7143F4C7CEC95E3748FF5CA88C7 +:10154000CAF05E18C7CE9F52FE7DB0D611BD126D97 +:1015500041B48DEE951DA813DB806CB409DFF7DE76 +:10156000A4D21DDEC705BF9AF53C0F3B7B3C8F5FC5 +:10157000C4F16A1D8D08CFE04D2F1623BFECF48F08 +:101580008543D5F89EF3CDA0DF47F03A2F7BF86A6C +:101590008C0F391F5B5A24E9F67EF8BC2AC02FC491 +:1015A0007396FF9E37DA8DF74254602015FCFD33A9 +:1015B0005B7ED98DE7321FD8E514F4D5292FED8550 +:1015C000E4B42998127D6CB54A79CAC7E356DC3475 +:1015D000E5C1F7F7CF8F935C99373928EFEBBEDA87 +:1015E0009FB96740FDBE0A07E17B57B23380FCB06C +:1015F000CB08517CAF35B8F8DF51FFDCD7BAE0AE8D +:10160000E9C8BF890A89E405FE2DCFA35367F4DD3D +:10161000560FC78BB690D18589F9F5FC5C6C7E942A +:101620009F3BBAE3B493EFB7D6F17B84B5C46BDFCD +:1016300042226BF57CFDAD45EEB995139DDBE3A031 +:10164000500D9AD8C7D31AD48CBC1078EF6BA5FB79 +:101650009CF97D93161CC111476A05B60F7B8F2C30 +:101660000DF076453544DFD43C789E1FBEAE94F233 +:10167000EBAB1D4796CE4EEF033C20F1FC69F31215 +:101680007537C207CF29BFDEFC0CAFC3FBA627907E +:101690008F0F8FC5787C37568A71BE60DDB11B1104 +:1016A000BEE0D0CF693E41DC57C4D2C884B72960C0 +:1016B0007C9C67F32B2CFE0ED4F2FB3E699F0EC67A +:1016C0007FB799DFE712C0F39705342EE7B7E52C13 +:1016D00029F25B6A513EFCE27BFCE13D92E8F3A11A +:1016E0003F37F814DB8793F68B7DCB0F869DF4FD97 +:1016F000F6263D89F27C5CE5FDBD7B151FC75FDFEB +:10170000B31EDBF9EB6CFB90F0DF241FE7E307A4CB +:10171000F4FA9BEE2BC571CAD3F5ED8C8FBBFF504D +:10172000C117AA719C6505B4DFDE25F04A3FA00F02 +:101730005D82007A245FF31A17C2E44645FFFB4539 +:10174000BBAD87B51730EF6AFE8FDF70A35FF44B38 +:101750005F98DE6FA9FBD08D7C3BA871B84BDA385F +:101760007F9584C7DC18EF5CDE2769BBC57EAC695A +:101770009D0BC4FD75715F4EA44F4BA2DCEA7D92B8 +:101780008179CE98FBE198275282711FB0CD5C8F92 +:10179000C80ED47F2811FEC2820EAD1C3F83FA28EA +:1017A000DE6DC5EEEF93284FD8EAB7A40EFA05BE5A +:1017B000B81FE040BBFBEE9083ED2E4BCF97FC5162 +:1017C000C053CB6A07F155A48EED92E0FDD23646A8 +:1017D000F93C7B22C32FE377C7EE76E9183747063B +:1017E00046B84AC5774BEB002E6837688CF5A19F49 +:1017F000B967B583613E4C692B7FBE74E8990DB81B +:101800007FB1C7CDE159D9CAF152BA9D3F5F29E6F0 +:10181000B1BC0EE681703570FA026ACD330E1C9FA2 +:10182000F3F7B19BD82EDC1750A7C647A6A37E6F4F +:10183000631AC6D3CB0732F9D79A57E5387E39FCFD +:1018400081FA221DF1708199C93F169E5B44FB4AC3 +:101850009C37E2BF9DB793F1867078DED2CAF15F04 +:1018600059C7CBA5623FDC81EF715F1DE783EFEBCA +:101870009FA67220BC6C4422BBADEA989BDE3294DA +:10188000352E1E419EC7F359108F7B5E06B2A11202 +:1018900018E2F4DF58E0E5FEC7A52AED67FA5A79A9 +:1018A000BFFB1DB1FBD08E999B5DB46F82690ABAF4 +:1018B0006DFD70F44F3C3F79CBA5EA5EC4174C40F8 +:1018C00022BE16E3EC77707C9B355CBFD55CCCF315 +:1018D0009BB746D5BD68A7F3EB0A16A8A80FEBB9CE +:1018E0009ECB8F1EFB36570299FBFFBEC3FC5EDD0D +:1018F000F0B24CFCC37C0C5CAF8EEB5183D138450D +:10190000597902D82EBF06AFF12E5A807A75AEBD36 +:101910007F785FF00ABF9FC07738564EFAF7F0CE57 +:10192000C518272EC86A77D43F8DE4CF77B8CD414C +:10193000ED30CB6376FA9E5D74C5590D9587B00482 +:10194000DB6EE6F1BA2915205E64D680FB82F36374 +:10195000744F8A65D706E6A873E2D5823E0554A681 +:10196000588EF872BA7DD18568B77D87E3E51AC1D4 +:10197000ADEBBCD4A8B4E0B1DA276A18E1EF1ABF26 +:1019800023E73DD05AC39F33F212DE0B98B7FD1800 +:10199000F1F93995FCD94E656C3BFA479D4FF9300A +:1019A00012CE1ECD4F96E0FD51EF0BBB3E7ECF70A9 +:1019B000F5B5E41F638A15CE9789FBD267FAAB763B +:1019C000A13CCC324CF293675544A44E524A3C3F62 +:1019D000B49B193AEA4933E2203EEB0DF7DC467F2F +:1019E00057A34F2A40FDB0B5AEBC07F5DA701B73A4 +:1019F000A01E7DD5C7FDA2056DA3747FEE96030ED4 +:101A00003AB7BDE5FB86FE0BA87F0C30A03FB9A01E +:101A10002ED146E7C12A7DF4FEFEEFC7676836BCCB +:101A200060E63EF797992CFC6887C81B9472F9CF43 +:101A3000DEC2C52AFA6D170C359B18AFCF1FCA9F9F +:101A40004FE7B41B40C5625E6818D00375AF38BF5E +:101A5000AF1BF0FC623A8F4DEFF508AF7777A4F833 +:101A60007AB99AEF27CCDCF5A546BC4F73E6858E94 +:101A7000611CBD7BA46112FA1BC75A1DA4569E4C63 +:101A80003A33FC576B3DAEBC9AEC2F877673871CBC +:101A90003A2AF93DDB2F9F847C3491FD98EABB9074 +:101AA000FB933AD74324A7CEB43DD9AA093D3E249F +:101AB000EC496494EC496427D813A1C7D19E940BD8 +:101AC000F906FF6923B6AFDC9E4F7E60F94E89F4BC +:101AD00078F910D7C72BC2A37DA497D00E48697B95 +:101AE00005F689F218F139D6A7EC949212E98FD84D +:101AF000BF61FB96ED93497F2E0F1B93307F6D796D +:101B0000934CFB9996BED585FE1CAC77107F05766D +:101B10004ABBE8CC9CD0AF1788F7FA6A6E572EE81C +:101B2000DB487A54DFC94BCA752C4ADBBB993E9D12 +:101B3000DFAFD2364C764217FAD5A20F93A3E7BC9B +:101B40007FBF7BE7AEF9B48ED8794072407947E821 +:101B50001615CFD1AE16F261F9EF53C414223B8FA4 +:101B6000F075CE6AEEF71F2BEEB91AE7D1B36BA969 +:101B70008AEBD09228B743BEC88A87514FDE2AD657 +:101B80008B8CC5F87E6A5B2B9DE3F10BF803B56384 +:101B900006F6171C5AFCE50BC96F1F9E22E969382F +:101BA0003FE50FF0F55DEDA841EFEBB86BB8A73E50 +:101BB000D687EBB8E52107E1D4D7D74970C0BA473B +:101BC000936C71EB69FE3CBEAEABE3EBA02D437CA6 +:101BD0001DD4A3A418AE0B025107AD7F1C75F1ED07 +:101BE00078BFE672589FE2BAA1578ADD80EB47F0D2 +:101BF0001FB9FD08717D3038753AC553B7CE4DD247 +:101C0000BDDCFF9CC7E599D611E0C7FFCB1D5D0B7E +:101C100031AE63CDD325E6E98F64CDB32E739E7BC1 +:101C2000F2C43CEB46F83C6BF93CA17DC63C8FCB43 +:101C3000295ABF1E8F326DA38EEB29781FC275E023 +:101C40001379D85FBA1FF36AA44310F08174080EA9 +:101C5000BD6062BBE5F01DF693CD0F86C0D31E8C30 +:101C600049149EED9F9F2FFFEDB10226EC25B7632F +:101C700067D9418C1FA19ECFB24B8B0265E3F1392E +:101C800033C30F1EFE3CF1D13E079DAF7B2FC0F743 +:101C90000DFC219EB706CFCDC9E8E74249F66F5843 +:101CA0003667D8E253BEDA4CBBB0D7C772AF47C570 +:101CB0003A94C92306F243EF25F179F6BF0B13F1ED +:101CC000F3F57AC4CFE395BDD2A841FC33E1FA53D2 +:101CD00022BD100C399257C23F7B2FE578D93AD7F5 +:101CE00041E7F7FE19E355B8CF5EFC0EAD43075A46 +:101CF0005526F2CA28AEDF3AC94DED07E7F2F37E6A +:101D0000C3A9DD14C7DA9CFC98F6CFCD3A7E9FC2FA +:101D1000DE5D0FF79587F03E2563AED3066FA06AB0 +:101D200082B88358BF03A5256E27AC92DB0BAB9E10 +:101D3000FD9D0BE32EB6388FA269640FA3073E7A90 +:101D40000D7307BBB512CA57DE2DECF3F8FDED4954 +:101D50003F8FF3A5F8DFE7B0E26CCE377A4778FC27 +:101D60006FFCEF88ECF623FDEB33EF53B2E26F3DEF +:101D70004A5B0CF1D433973416F3631CC787F10B1D +:101D800096872A4EA95A3C77A36DFE2F89789352E5 +:101D9000AF125D07E764C6EFBEEFE7F7DD3DE3E7AF +:101DA000F13B278BD1FDA9002FAD5B013E8A77B2B5 +:101DB0004552F679E5A711CE9E919618E25BF6C5DD +:101DC000DCD57A9A3E9D823F0695B1B046F62E1E2E +:101DD000737239A5F8D31DB523E41CF5289C5F0266 +:101DE000432E86E33AEAC47D01225EF1EE1A7E4F6D +:101DF000F756713B93377C9D9BFE1E8232D684F151 +:101E0000734BEF64EB1BC40BF6DB9D74923DEA66EB +:101E1000F104C505A017D45FC332BFB7A3A5568B85 +:101E2000DAF1B547C4315B105F3ECED7F6FBAA9F0F +:101E300013719C87855E5046B8BC9124D9E3E9D5DF +:101E4000FC5E137988AF7F55BC0FB73C8D4F1BBD2F +:101E50004789DE8DB9E97D751ECF377972A43C8044 +:101E6000ED27F24F2D3F34DB8F4CFA74916F067ED5 +:101E7000634DDAAFB4EC61AF94FCC5E7508E1E51F0 +:101E800075D253723C8C7E9773BA8FF2961E9387ED +:101E9000BD35E4CC9AFC3EB0149FAF9319B16F40AE +:101EA0007BA5CF497565A7447E92C53736FECE9E89 +:101EB000EF7D14EFCDE2276BBEF759FAF6741933B4 +:101EC00026D9D6030DE3F10109FDA977E7F3BC2A72 +:101ED000ED7405B5CB11AF2943FF303B4E837F4FE7 +:101EE00008F5CAFF567CA6A7B848423CFC2FC46739 +:101EF00066060A793D577C8665C55DB2E335D971C2 +:101F00009789E23756BC057FF6B84D76FCA50813D5 +:101F10006DA761FCA6D383F7AF1F17713FDF806702 +:101F200021E6715BF92C4A8AFFFD1279B5F83B5224 +:101F3000428E2C3D6AE9D51C7A7465DE39F4E84A94 +:101F4000E4B3B9384F21372126A31D7D6CDF0B6E1A +:101F5000CC335E2AF4E1B89D45FB6AB3A77EB4AFEB +:101F6000B3CF6F5F130D8CE4A340CC237F8C970518 +:101F7000A332E9877CA6509990F9BDF2F98D997842 +:101F8000BAE8D96CBF63238F97BB8DD035C82F8D2E +:101F90000E3A9F71F16B99ED1ACB7E14FA12D0A50F +:101FA000E00A470D8FFF8BEF7CACF05AA45703BFBC +:101FB0002FEDB3C733BF4BFBC3A2BDC6E1BAECF4F0 +:101FC00079DA8578FC3E1BFECBDDAEDCF0878DC276 +:101FD000BF0FA5E1BF329CD9AEA9F947855FCE05F9 +:101FE0007F841535D5A6E1FF4295EBDC70E91CFE38 +:101FF0002FD69DA75D456EF8BFD43801FC55EC2A5D +:102000003CBFF4E5A6F3F42BE8FA95D673B7FB5A78 +:102010007BF638265F8F841C1EE46717F20FEA599F +:10202000A650E91AE3FCA3680AE9356B1C2592491E +:10203000A789F9C70C2DAEA5753AE59367F3C1A240 +:10204000390AF189ABD0C1FF0ED438FF08BA89FB39 +:10205000F6CECB17827FB2F96022FEC9863F9B2F56 +:10206000D2FC63165E174AC39FCD07E0C711FF2855 +:10207000918AE866FB7716FF8438DF9D972F04FF6F +:1020800064F3410EFE217EC8863F9B3FFEBFF18573 +:10209000A6905E7131CE0F8AFED7F2452AF4251B39 +:1020A0005F64D33736FF0AA2FFD97C21E821F8E22A +:1020B000BCF4167C914DDF4FCA1767D3DBE20B4EA1 +:1020C000770BFE6CFAC6377E5DE37972E3FCF0C9EC +:1020D000E8AB037D7D9F5CDE991DDEF2B3E97C7E7B +:1020E000FADE42F7E869167D754E5F4DE3F64289E8 +:1020F000F2B2D7A2AFF1C9E8DBEB06FD4FF1558E86 +:102100009F6C3A5D7B4D37D151CBA26FAF4FE055FD +:10211000D0F77C74EB15F43D9F7EEEB5E89B057F10 +:1021200036DDC6DBE3DA2C948E0F67D32DBE51F17A +:10213000D8E9DB1B696BFC2474EBFD84F2C88C4C82 +:10214000BA4E44BF56575B8AF2E126F3BF7FE58A59 +:102150006852B36D1DF1D520F72F9AD0F782B235B2 +:102160002FF739E316D12E89EDB0DF60661E935547 +:10217000AE14EDDE16FD5D10E4ED1FDF146B45FFC0 +:10218000E689037AF162DFD9F3B96BA375BE55977F +:10219000ECE7086E0FF278D7D10E8D19B6F3ED8902 +:1021A000BEB28518B7291898D383E5D2BE49CCC8EA +:1021B00081AFFCD3D3C82F4F8F97A4FEB42B34DA52 +:1021C000EFCE3F3D9DDE1FED7053FF383EAE93CF07 +:1021D000EE3F6F82FE8BCFD37F84AF0B18BF53D9F6 +:1021E000CA7F72069F7B0FD793DD1195F2D1AD7335 +:1021F00064D9F8047DC3CF79851A8C511BBDEF15C6 +:102200007851F0FC16FEFD92BD4EEE3F67B5EB74C3 +:102210005879F5F18CF319DF09F2B8803B298B3836 +:102220004B9CFE8E97F5FE6741BEBEEC94A2F47700 +:10223000B1CDA92AC969EFA599FB008F8A762F062F +:10224000C7E3891467507C2FBE86F14EC5CA130BB5 +:10225000C91979629D0E213FB7707FBDB7927DD7B6 +:102260007111E50B52BE670FAC43E8DCAFE4B6D6A4 +:102270005B749EDB8A77F61E007F16E39B7E079DCC +:10228000879922B3432E3CA7115653F8F706C7E3AC +:102290005E4BB87CF6DCC94CFCFB483D786A18E321 +:1022A00016CD7C9FB6E74F1C8E9EE53A9DDB61867E +:1022B000A1878AD2E726F1BB828B38FE905E0F841D +:1022C000D539F6FBB4ADF1B2CFCB61DE4CC6BDBAA9 +:1022D00013E081B128FDBD30C5A76AF477BACF837A +:1022E000B747835CAEBE13D409EFB31E52F97DF538 +:1022F0005354BADFC7A26379BF4C79731F316F148F +:10230000E7D999DFE6A23BC4997103E2A5F3A8449B +:10231000F1706B1E5D1DA994FD5EFDAE09F2AB7EF2 +:1023200056C0F9E6D1FCB62694E7C7A5F54DF6737D +:10233000945FCCE77CF9594DC49D6A63E2FEE0AE40 +:102340009F5D8678D61C3AE2AF2FB9CC8DFB13BBCC +:10235000C30E0DC1DA1D5EECBE99FC698746F78499 +:102360008637FD0CF37A4D688FF33AA4B5D0B9FCEB +:10237000AE3EC7A7494C99B1684E517A7DBCBB812E +:10238000C7FDCD2A96AC2CA3BFD3588279EBD3B529 +:1023900082F97C13ACCD4179ED03B0B687F787FAAB +:1023A000D528E6E126341F9DE7F20D8C18183381FD +:1023B00035A6A782E2CBDC2F5BE8F4792A60DCFF4C +:1023C0000740829ADC008000000000001F8B08009C +:1023D00000000000000BED7D7B7C54D5B5F03E671E +:1023E000CEBC9249324926C9E44566028180012764 +:1023F00021A480580F214008412721405094411EBC +:1024000006082460ABD8D2CB0001120C1A2420702D +:10241000A14E12B0F8BCA1171129F60E0F2D5AEDDE +:102420008D62B9689106F4DA88AF58ADD2FBB57AFF +:10243000D75A7B9FE4CC9008DE7EDF3FDFEFA63FDC +:102440007BD8EFBDD75EEFBDF69EB6D18AC7EC62F2 +:10245000EC784BC1AB4607635B559999DD8CC5742D +:10246000CE2B65D18C65D821318A31E5FC940FD90A +:1024700008C65A5B942983A05EF6D0418C41BB0309 +:102480002D89C93E1B63D1E3944B9D16467FDFC265 +:102490007FC7270E4E5902F59A5A4CCC0C695B7EC9 +:1024A0006879D36C578A3D87B10806F9D922DFCD08 +:1024B000BFC102C6B2F01FD0FFE98644A913EA29C2 +:1024C0004CD71EEAC5363309C765AACDF1C10D8CBC +:1024D000A5D825F6AD0CF39155D90AE3FA2F489EFD +:1024E000FD50BCCFE8377BA1FDB7F8770B63A6049E +:1024F00089D6B3790DF3BC6F8475B8656F00CA1FB8 +:102500009458653BCEC7C6D476E8F7B6585E2FFC24 +:102510009BD95014E3D3F517FE552C278375237BE5 +:10252000D37546E817FA8BC8EE90EDF98CD90FD920 +:10253000732361FE76D575A413E6D9366A40AE0DD5 +:10254000D6F9661C4C3E81B197B714BC5305F92BE4 +:102550009FB179086EE7CD170D00F7284BE3E7F838 +:102560006D3B3E9BB986437A95C333281ECA5D896D +:102570009E41309E313BC0101E11AB4C9EF7213D59 +:10258000E95F72923ABF639E8D6BEC9E4100E4E678 +:102590003516FA364A7C9E37FC4B69CCDDB6DE7ABE +:1025A0005E3B5F77CFFA563DD85417DF9B4E8805C8 +:1025B000F8D968D79C6551BDF916012FADDFF0F150 +:1025C000B57296AF264F84F5B66E31D937031CC667 +:1025D000970D22BCD95F6FB2E3FADB1A666E9E8359 +:1025E000FBF9868170A26DCBE09445BAFE5AFBE9F7 +:1025F000BF46CCFB40B27FB7E4C1F94597BCE68447 +:10260000B4D5BF9B61DA6FE469A8C6C662B9A544B8 +:1026100005781D009C60298C5537BD31C50FFD1E06 +:1026200088F5DF2EDB197BA8E1AF0DA792219DE590 +:102630007F4782F4DFE259B06834A4DDBCFEFBF1D1 +:1026400005F5547F384F7F186F2BC1742BAE07F6FA +:10265000DD017480F8DCDA5217C720BFB9AC22C59F +:1026600005E3EDCF0D3A19F43775EBFED316E8DF2D +:1026700021F1F6CCBFA958857AFB45FABEA68DC5D7 +:10268000FE1C82CFA3088FA60E23E1C77E236B9882 +:1026900003FDB7027CD662FFE99E146F1FF0D8BC21 +:1026A000C6E9690400D6E1D7D89B1F99EDF43CAD8B +:1026B000A34BA33D34DD2A7952707E2FC3F8CA188C +:1026C00080BFD143F03B6C9F5BACC07CDBA23C295C +:1026D000088FC7EDB3783A41CC9FDD46F36F4BE6E8 +:1026E000E9879A4A8A111EE1F36835BA523C39D714 +:1026F000310F51EF7FBA8EFEE070BDE3FF7FDCFE4D +:10270000768FEDDAEDA36243F9C055FDB8AFAF9F08 +:102710007F141FFFB7FDFFDBF62FDB33490E5D1B78 +:102720001F18D5B3C9CC87FC777B45A1759E8EEF6A +:102730007CEC90095FBC765E0F04B5E405DEB87FE3 +:10274000FB242BCACFAD4C79C53C10E46F4B9DA543 +:1027500004F8D7FE46D96E7041BA4CB66641BACE7F +:10276000815C17BE7F1B194169285F07E5CDDE3804 +:10277000AB1BF95D11AFBFD52117A3FCD9E088B31E +:10278000CED7C9BBAD8D908FE314E5A52CD2E5B7AC +:1027900009390F922C68063EBA695066EB66776F6E +:1027A000F97107C7F3E6E6BCDDD9386EBD4C7CFB9A +:1027B000D49649A76F81749B5D76A17E74CA9EF7FB +:1027C0002A9517CBC487078B746CB1E27111945CA6 +:1027D000254321AD386586726D086B5FC9203DD0F9 +:1027E0006E6341D45F8A7CD45F8C537619207DDC84 +:1027F0009B77C282FAD76846FA18B38170023D68A7 +:10280000A080F946FC3FA8EFCF66019209B005B958 +:10281000501E4F43A1BC4F7B251BE542914CFA96BD +:10282000A6AF3538DC04FF78D4E746A07E97B91907 +:10283000E7193143F660BBB8D250BD2C5C8F638A78 +:10284000B78C41BF8D3314B659BA5A5F0BD7CB7AC8 +:10285000F4022FE815D9BDFD4479EC21E9D697D8CB +:102860003E16C3D8538A6B37EA3B4D81488F1FF21F +:10287000BF7ED76C9D0AE92FEBF9FE2A8CB919E0CF +:10288000C943B80F30EF4D4D4A6008CCA34B16F04A +:10289000D828133C14CBD45DA8F7B4BDC48EB21BAA +:1028A000619D2F318F14C3A88338D4BBA2D302B843 +:1028B000CF079F31F17651964016A43F5AE3DD557C +:1028C000878A45D3A38C2532B6C4C2E16935345911 +:1028D00070DC41B2E7E1F150EFF4B3472F3F897A62 +:1028E000D91391B4DF6D46FBEC0590AE8AB7D0BC2E +:1028F000E1CF8DFA4F1DEA0FA44F303F83BE961AE9 +:10290000989087CC6F013CED8AF02F47F9296F5FD3 +:102910005D620179FA4C042FFFAB63ED66FF38D49A +:10292000A76FCE4679FB9B47E6375873191B6AD6CB +:10293000FA1BB2793CE0ED4159D2FA5719E81FED84 +:10294000A85760DABFFCD52250C9EDB256BF6A3332 +:10295000EA3355274D429F1817311E6071B0D03EA3 +:10296000D209FDCE692E28B1DC8CFD69F33B6129CB +:1029700084F91D34F1F6D31D278A713EB903DB2F8C +:10298000FC04D669BEDFE46965627CA49BFB4CADA8 +:10299000A07B5DA567DC2CE8BE3D9F15239DC1FC97 +:1029A0002A033AFADB1E6F207C6CC12FD60B0C97E2 +:1029B000510FCA5440EF46BAB4B0F852A4B386D609 +:1029C000B148375ABB3DB11154BFCACC6A91DF1C24 +:1029D000E9941FC479B436DA630D300FB9D1B3EE80 +:1029E00022E4DF1C1F47F50606F35224D4BF0E9CD9 +:1029F000C9CBC1FD3E6423FDF1F28191BB0D38FFCF +:102A00006613C376FBA36C958F23FF08DC50847894 +:102A1000A38D77AB98E7A6FABCDAC550FFB2CD66B6 +:102A2000975C88AF9E4AC49FA76C26BB9FE8D09E48 +:102A30008C7C6D901C203DE8C8D6B3F57500B7417D +:102A4000028ED98EF3A41736785D1112B46B4A93B7 +:102A500019B6DBE428B7A01EB877FC4AFA6E726498 +:102A6000A6DA609C06D5E46250DE349EEBB52D8A72 +:102A70005AEE86FC962687E4D7C1C31BCFE1DCEA79 +:102A80001174E0E07CE1C958C00B483F99C0DAD628 +:102A900003DE9AED2C0FD7654CAB55D53EF4C2B989 +:102AA000A21F06ECC656402440F89F5874F6A7C8EB +:102AB0002FBA4C1DB3EF4178C546785A21BFCDDA05 +:102AC000918CEB488C8B90711D49B81A00559DCCA8 +:102AD000A6E2B81BD2987D2DE6379BFC68AF243662 +:102AE0009BC87ED980F48BF6CE0216C0F525D5CBD7 +:102AF00017CD58DEF9F91A1CC7D928074D989E63DF +:102B0000622E1D9F709EFFF0EF68873A19E4EBF884 +:102B10004C65B4F7ED58D81F739A9DDB8158B70008 +:102B2000F953CF9F13F9A7492422EA65BF19FA790F +:102B3000662D87D7A6B52C80F8BBFF39F634C2C7FF +:102B40006469EC3044537BCBAA3C1D5C57035C6149 +:102B50003C53F3C615B80E53B66E1E48F48E44C2ED +:102B60009334D62921BFD82BEC11629D5094813823 +:102B70009289700C46DF8470FC999C8770241B043A +:102B8000E6872C0ACBB5FDF82FD4B312AEEEC725DD +:102B9000FAD1D28F8976074FC54DCD817E1FF3C7FD +:102BA000E521AB817DA8E2F28DF78FE62EEE4F8214 +:102BB0003D421D0AF33F1BCFFB3F18515BD5979D4C +:102BC000F087782EFF36BC021B0B7039B8CE75EF3C +:102BD0003C8457A1CC90FE8FAB9C0FEF2F6201334A +:102BE000C24FE5706A6A64013FC069E4EB4A830C36 +:102BF000F3491B2FC719843DEF87F946E13FA069D0 +:102C000093C7CB504F8C7230D53A02E9C15B89F340 +:102C1000608A5D2A1B4EF4CF649877A4A81F55E400 +:102C20005F81F8D164B15BD15FB035CD5582FE874D +:102C3000A6EDCCDE4AC0F0C86551BD70B109B844FC +:102C400036423BD84F5B331F07FB45E48EC672D834 +:102C5000A748C7E1FB252C57F937A62214EFA24657 +:102C600087EEF356018FB5711184C74DCB60FD6EB1 +:102C7000C12F715F97707C8AF484F693AAB0625377 +:102C80001EC2DB9EBC00E1B8C3C470FF33FCA1FDD3 +:102C9000A734271622FEA5315D7BE85F8D8BA5FD4D +:102CA0004A39BDA75C46FBBF8AC906409A54E6571D +:102CB000ABF2687FBE4079BE2951A67E531D718557 +:102CC000484720B78B514F4A4972E56D66BDFB6B93 +:102CD0007478595E0ED6B3170E867A4FC5093C4FED +:102CE000E4789E7ABAFB5E84774A75E83A989EFE4D +:102CF0000CD74E1B2DD1FE48E8C71846B737C67310 +:102D00007F92861728DE90DF004763C8472F47BBB6 +:102D100036A31EE3BF4FF1EC877CD4D1D2608EC6C0 +:102D2000A7657F12F467862FF20D63BBE21F124D79 +:102D3000E25D356179DA3766FD7C0F3C9743F675C5 +:102D4000AB91EB7B06A1A76A70F82ACE44F3F84A50 +:102D5000F85D807313BDDC27E65AF87CDA04E4C71B +:102D60006DE95C1FEB923DBB23715EEF98C926872E +:102D7000FED76379AC0A7A860EBE9B945A4B6C0ED2 +:102D80002D29203BBFFF7783D08B5A518F89E9CD06 +:102D90006F0BAE5B3E8FE17AFC054807B14159D31A +:102DA0002B9022F57A81DF02F267A8C1FF5515C882 +:102DB000A3C4F8AD53EC4351EE3351BE718A9A0669 +:102DC000727DBD24F4829F3560BA570F00B2B3F410 +:102DD000EA01CCFFC8942AD403D2B4F6ABA7A8006A +:102DE000F4768B565EFC0ACA953A637B01EA2D7530 +:102DF000B127EA51AFD960F556228F2B684E0CD11E +:102E000073863B5249CF196EE8186681FA3B9ACA1D +:102E10001A8AD2913E5D11B8FFD7824FABE28AB0D9 +:102E2000A35CC7F5C3F80D7153A6AC55AEBDDF8FDB +:102E300089FD9E17C7F9DB7003D723C2F9DF735AE8 +:102E4000799BA916F596C221364EEF0D33F721BFB7 +:102E50002B7CDEB62B12F9DFDBB38D48FFFF1AA700 +:102E6000087CF6EEC6FCD6B7CD0CF54CB4CB699E0B +:102E7000CFCD21A6640C98D4401F78F154DC506A61 +:102E80007FD53AB3F8B8079EB305400366CFAC03CD +:102E90007EDD873FEF9498EF863580089C9864D25A +:102EA0004712BC2A8E9BE9F4F919B433815EA6EA75 +:102EB000E8436BAF5C4965AACE9FD7625719D657D6 +:102EC000AE0CA0FC1506EFCB71D0FF7B835A173FE9 +:102ED00008ED760BF9521FA39EC6FCF5B2FA70B14D +:102EE000FBEA7969DFBA35C120EAD73D6963DFFEC5 +:102EF000BA4B315C2EFD0FEC0295F8AF2D2230C499 +:102F0000ADB30B1E51AE6917603DFBC6B800DA3594 +:102F10006817C4915D600B6449FDDB0506B9C98380 +:102F2000E336303513E5EAE96797348D47BBE07542 +:102F300003D9054F3D3BF6769CCFE5D628D22F61CD +:102F400004B213EC714E0FF2E1FEED8317EA8B73BE +:102F5000AE6D1F84D34D9ECA08AF148515211FDCAA +:102F600084FC1CF6C5780AF42BE48F2EAEF720FF04 +:102F7000C4AFC9E121F9A8F11725A0503DC379B329 +:102F80001FE58FA17E6307EA398ADD4BFEE4152633 +:102F90009F257E14B14705E1A0E957069BCA7C39FD +:102FA000FDF38DAC6D8553EA61BE86531117A9DF21 +:102FB000201FDF707E13F9B1D9A1D0FE601C473C01 +:102FC000ECBFE9883718E9EAED5FE353FFE71175D5 +:102FD0008A3F0DED8528EADFB9ED87AFF8077D4719 +:102FE000FFC1ABFA77E13AC2FBD7F8A26DDB2D0D3A +:102FF00064EF404B33C0B0EA616E57256EFB21F1A0 +:10300000977EC779EDAA7186F7B90EC13FAF3C3202 +:10301000A1C1AFA01E5A5BD9173D97C7717D3C5C1B +:103020000EE2D94C5A1E977F49BAFD34A31C1CD11D +:10303000BF1CBC03F101E65315C9F9DDB16E39F2CD +:103040001DB29B1263918EDA150FE1AB3D2D515AE3 +:103050000BF453E4E0F2D01EB893213F951DDE75CA +:103060009D689F6CF7A430DD7C5B851DE5073B2ADE +:103070008BECA8F379A887FA9FAB6659AE5E7BEA22 +:10308000F2817B2D8847FB624DD4EF1D71765A9FEC +:10309000F5649E0FF53BA2449D1E5015E39B81FBFA +:1030A000647670396F4E63928FF4596E67FDA3F6A4 +:1030B000CE71E1C76CB3BA4A26C37C130B653BF2F1 +:1030C00017CD5E01FBC03A08F5A92D32D9BB3D767C +:1030D0008AB06334BBA84EF099AD8D722BC26D3FA0 +:1030E000CCCB0AF4B4B53EEF4C29F4BBA15621FF7A +:1030F000CA55F68C03EC1CD8B7A666792AC27D2B7C +:10310000D84B680F391784D69B15E3BB0FF1C8560F +:103110002493FEDA96DD4A7662B8FD712DBD355CEA +:103120001F0DD73BD35685967F7FBD8FEB6DD7ABF9 +:10313000FFE15F5F7A1FE9A1C4478636A0DF82EC1A +:1031400034488F8C1F4A74A904393E284887F845B3 +:10315000FA433A603E264944777B894F554B0A0B28 +:10316000B10355E68DBADA0FA17D9B624D421F086F +:10317000E5ABAD0D335310EFF61BBDE4D7FEA5F064 +:10318000931E12DF6A71BEA4951F16FED423FD9410 +:103190001F15E5C7C437BCFCD7A25DB09FF6274416 +:1031A000BB53FDB47F59B43BDD4FF9ABA2FCB57EF8 +:1031B000FAFF9D68D7D14FFB3745BBB7FA697F56F9 +:1031C000B43B77553997F7EF88F2F361FD5F10F55F +:1031D0003B457E8DDDC5FD1AFD9C9B69762BE6A1E6 +:1031E0009D48AAFBC0DEFD34F4E8F340A305BDF61C +:1031F000A0C63762F35900FD139A9DA9D983EE3812 +:1032000017F7671781BD4899ED8437ADB8BE9CFEAE +:10321000E1730A1DB0A3E8DC8FF44EC49B853A3CF1 +:103220003B1D6FE4E5B91C0EBDEB1A2C6BEB92A1B4 +:103230007E87B0CB6B84BFFC406C6F7F7ABFF6217A +:10324000E197D2E6D51F5EB58B7969F5FADBFF60B1 +:103250003C0BE9AF3F3C3C1456AF3F7C381D366E0B +:103260007F74F174587FCF8A7AEDE2BB2F5E16F03F +:10327000F86E7C08C7AB56EDFCD6DED5E0CFE9EDA5 +:10328000BF3FFA3826E68B7F7AFF81AD9EF3DD04DF +:10329000D61D821FD1AC83FC291A7E18AFB8993A8B +:1032A00012D35C3ECD8CE7F3352A5E86FABFF1CAB5 +:1032B000202A1F78004C7B904B1B9E83D9C37760DC +:1032C000A35DF241FDA6E78041423AD631534679EB +:1032D00095A5DEA7A2BCAC3ED5A1BAA3757A732C86 +:1032E00087C7B5FCB1D5FBDEB95DD2B57B30B6473B +:1032F000AFE6FADEE69921F648383F7C2CCE42F55F +:103300006F895477A17E5F15C3FD7A6C02B3A37FEA +:1033100000F42F09F587B60446FE50D901FA03944C +:1033200067A599D864289F2CD61F64136CB9A86729 +:10333000D473BF94A63F0C35D8BF40BD81C55B5C3C +:1033400028BF51DF42FF087C4F99E17B9F3857FA35 +:103350001EFA565D6C1F7A5D5D2CFBBFAD072F76A4 +:103360005C971EDCB71FFD7BE8C13F76F4A907C759 +:10337000DEC062715D2336BBC65CDDBFA617FFD41D +:10338000F16FA7FDDFA5AF5EAD17AFEF6BBCEF7BB5 +:103390004ED09ACFF530BFC7427EA4788539E3F38B +:1033A0001040A51E3C7F536339DFBAD679D3B5CE22 +:1033B00097AE75AEB4C71145F140604379500F998F +:1033C000F42F398F14C3BC56BE61203FCE3EA32AD2 +:1033D0005B21BDEABCE459C7AEC67F2D7E478B8B0F +:1033E000D1EC552D5E66BBE22F273F77739C84722C +:1033F0004449E07479DC515E8C7EFAD60A7E1ED890 +:103400007A7A7B319E5B7EA9F273CCFAE6F292A1C6 +:10341000A8EF05140FD28D4D56A7E0F9D3F68ACC4C +:1034200008C257E04B7A3B7988C38794CDF657148E +:1034300092DE57F7B70916947B9BEC7911A8973762 +:1034400035F273CFB646D93A1FBE5B2B20DFD69B31 +:10345000DFA4F67DEE19BEDE81B1E21C81B1628A85 +:10346000FF3939BB0CE371B2EAE372AD04552FF9B1 +:1034700065A70AFEA3AC3278DE079E9950CFE92AF1 +:10348000CBAE323CDF5030EE08F3996E7FDC18375C +:10349000C5F90174E197E2884F7A06E9F5C47EE840 +:1034A00053A3478D4E35BAD4D1E31F881EE784EA73 +:1034B0007B1AFE6AE75E0F38FEAD782DD889CF48BB +:1034C000DC8EFCA3E3C57AC457A38BEB939A7E688A +:1034D000C4F146E8F44C8CBBC2F9387C349E6EDCF7 +:1034E000CB482FEC34EB53CFD4CEDF3A1CBFA678B9 +:1034F000971E7C09280CED040D4FB60A3CD97ADAE8 +:1035000048FCFB4BA01BE6E6E7E87DC59769F8E1C0 +:1035100015F2301C4F3251BE001F6B43F902DFCC55 +:103520007AAFEC8BEA952F598D3319EAD546942F53 +:103530003957CB9795627F57C6DAE9ABC991DB6201 +:10354000B9BDC6144F36AEEF80D14FF126275AEEE3 +:1035500073925DF8822FC3DEC77CB56F578C4BE842 +:10356000637E2BFAB5800159E5D1042F9B04F0ABA3 +:10357000EE81DF0AF2BFFE58E046B5883F9C68B096 +:1035800091DE16B14FA2F386A57E85F0A3DABF6E59 +:10359000854CFB1720F8B9F719C9EF06E5B48F5A27 +:1035A000FBA5ED6616D4F197E58720ADE3176EC64F +:1035B000E3EA160398823ABC75E3F979349687E614 +:1035C00033C39C18C4032B023DF9EAF5AE3A3F3EE3 +:1035D000784AD7FF8804E0477898F103F603B2975A +:1035E00044FBFEE0F5F51A3578CA88E73D6A7E02AD +:1035F000C20D0F3B80DF3F348C917D1A5E1FDD488A +:1036000008DFF9AB26B0F7806F1D36D9C72BC88706 +:103610007F2E91DF605DE40F2729784EDD0543435F +:103620007AFE03BFDD86FEB0E51D4D13A2510E37B5 +:103630004AB9E8E6DA7EA236D70EE9EE3B6D37A34B +:103640001EC16CAA0BCF03D1E78CFAD6C7465EEE3B +:10365000BFD3968B727B5E85FA36E2479261456EE8 +:1036600013DAE77F83D541FD8562379F6F2E33B92B +:10367000005FEE5182C72598F7BC39AED108CF79EB +:10368000ED5615BF4926A658413ECCB3302502BEA3 +:103690004911CC42698559305DB08ECD457E173DCC +:1036A000DA6B9A07FDCF3BF68BBF70653DC0FDB866 +:1036B000C75EF92BDAE10B55AF09F58A1B0E98F8B6 +:1036C000198F80FBF0F6D0F48D4742D3B9C1D0F406 +:1036D000C8D3A1E93711F6F0DFAFFE7EEF1F7F06FA +:1036E000F0EC7EDD40FAD65260473F043E76781813 +:1036F000D038AE5B090CC0F1C18C6511E8F77B32A4 +:103700008AE2493E5DE3DD5504803DD12593EF66B5 +:10371000E993512DE82F3EFCCD7B0FE13960F73363 +:1037200091749E3A61E9D3CF3E00E98F9E888C4523 +:103730007E7079D7F33F27FFE13343C8AEFD48F8E9 +:103740005B8FBF73F483DD90BFE4D9C85CACF7D165 +:1037500033CF0F46B82C79EAC501187773F9C9A79A +:103760000A28FDE41323F07BF9895F0CC6FC8F3433 +:103770007FE893E616DCB7A54F5B2FC603DC3EF867 +:10378000C466D39F776BDFEBED7729F68BF883FD6B +:1037900022DD3DBDA9231EE9ED40943F5EC757964B +:1037A0001C78F0737D3AFCBBE4009F4FFFE5BCDF63 +:1037B0002500E9D100F70F847F7FE90173C87E0DF2 +:1037C000D919BA7F4303A1E99A4F2B4B62619CEC54 +:1037D0004FE794C4427F9F321E9F103EDE7E111F32 +:1037E0005C7324B4FFA34ADFF59F12F23F1B4F9A8C +:1037F000757C22C5DCF7F9C2C1042E6F9F7CB2A78D +:10380000BE81FB5180CC402F5B2AE8ED573D714AC9 +:10381000EC47A940574BC5F9AF96BF94E9D607E3EB +:103820007D61896EB503DF9F2DFAFFDA08F483FB13 +:10383000B526B80DE39C3F58A3AA45BA38AF7BF62E +:10384000CCDB980CFB577D302B1787D7F287B51B45 +:1038500049EE563F71321AED91CB074EEE5888F87B +:10386000D86E64A81F427E22E67FDCFE52F41D90D3 +:103870007FCF4E772EF2959E7E774E548B74FCEF61 +:10388000FBD2A5C647AAED1C0ECF8FEE98940AF87E +:10389000BB74A7E4C16A4BDB674C9F8678B7C7E06F +:1038A000413F6381C2BC863C5CC7732FA7407ECD7D +:1038B0008BA30A703DD04505E66F96BD538723DF85 +:1038C000FAB991E2C121FFB40C787422FB11D3251F +:1038D00058C77F2670FB68F34C5B15EA4DD0DF2993 +:1038E00019DA45EF9354913E87F5BB0ADBA3D1EE7D +:1038F000FBD068ABC7F3830FA36ACFE03CFCCFF0EB +:103900007E5990CF7BB13827A83A66243DE2F03744 +:103910005FCC1C8BF4DE627023FFB86767285ED92A +:10392000D52613CA832AE8DB09E35E6E89A2FE2F3F +:10393000270406A05C3DFC4DDB05A4B3EE27CCB20A +:103940003EDEA6EAC06FFE8A7C757120B4BF70BCF3 +:1039500088489434FB365B8F5FE1F590932905BD71 +:10396000E5D5AB404EE8CE85AADF6F32A11EBAB8CE +:10397000D4F49DE37D71FEF9C12E99F0D44FFEE1A0 +:103980008306F2D37EF48989F8FED261ACC805EBD8 +:103990005CEE9CBEAB08FA5F5ACE8A310D7F920571 +:1039A000C6BF8CFF1AC8D374EE82784F7EE2E04324 +:1039B00037011E7CF44B03C5D3A5E0F91DFA3F582F +:1039C000305A46FED66E90719CCB5DA000025C3EE4 +:1039D000B607A3E3904EBA36939F706DFBC9688C0F +:1039E000875FDA1E4FE7ECFDF19BA3CF586519E026 +:1039F000FF71D7E391AC0FFA5DD2C5CFD7C3F98F72 +:103A000026872FE23F415EE726AA398928433058AE +:103A10001EF484A4F8DADCDA3EFAD3DACD9378BB6C +:103A200024C34AAA37C6E92DC0F651F97E37CAEF3A +:103A3000389FC583E749EF193CF7D907A29CF59950 +:103A4000C80F519740FDDFC3607F207FBEC2820A4E +:103A5000E0EB7C94CF23284DFC7FFE012980472991 +:103A6000518DE69073C045CD90D6AF638FAE1CF8F4 +:103A7000CD6294DFD174FE15447FEE927DA1F5975F +:103A800082F98EE3563FFDAD59DF2F689E02EF5459 +:103A900013EA8D7F117019E3546FC37549E5169AC7 +:103AA000D7BDDB63288E62A1F920F5E310F114DDA8 +:103AB00007A5402BCA15A13FD43C304F5D007ACBFF +:103AC00067ABE6AB0BE2859F06F9C04E89ECCDA54E +:103AD000452C980EF3BC5DE8414B8F49C1E1905EE7 +:103AE00008EB477D62ECD3923F0AE4DD420BF347DB +:103AF00023BEBDC5F7A55AAC0BEBC5E4211CFD04E4 +:103B0000D7C5AC83E633B68AFB57C61E91286E290B +:103B10001C5E557BC2E0A7874F26C22514DECB0F63 +:103B2000019C42F086C309F41F66857DDB2EF8FBFD +:103B300005B027F4FA256030D5DBBE56A2F2ED338E +:103B40004CCC09F3DA317B511BC6D93C8CFE0E11EB +:103B5000678871819B7BE20041FD85F12246B2DEE0 +:103B600073C7D1A45F517ADD0E75EA4EB08776181F +:103B70007DC9E8AFDA5106FA2ED76BACA8D7743AF4 +:103B80007D9B1261DCF906EFCB68682C90D5010AA9 +:103B9000E2DD2A0EBF47F36A87D6F6211735BCDE71 +:103BA0002175A806A4CF9FF1FB3891C70E0653617B +:103BB000DECB8A5DE4FF4C98753E1BEF9B3C26F8FC +:103BC00054CC092EB77649AC0EED4527E08304FBB3 +:103BD000927F686B32EA9F6C81290FCF9B1E8EE526 +:103BE00072A1FB0D76339DD344D6B660DC51D2DC96 +:103BF000EC3C3C0782F5CE2D877EF625BA681EC9BF +:103C000036BEBFCE757EF74AC84F029844C5E178EC +:103C1000DE152F613FC3797C1BE4D7A31EEA646BDA +:103C200025ACB73181C37BE33C56F9CB1C3A6753D3 +:103C300062E2F8F71C7CC1FAAC33C23749013D9609 +:103C4000E7D7E138DBA3F93A1264C3DC32DCAF3CDE +:103C50009E8E5B2DA9AD84BC5B695E4966568CEB7C +:103C6000C47CF4C7C1B4D483541EE07831A1369724 +:103C7000E63B907F5FEBB4F80D80C7AF3934FD337E +:103C80006823FD937965E4973F1272F333A39A3466 +:103C900012F9EF1B46867680634058FD41D9BCBEC1 +:103CA00090575F7A26C420511D31AAFFCE08AE0678 +:103CB000A9B58F73FD37C53ED55C4965019D7CA8CC +:103CC000A9FC8AF4F09A2B0342F23F5E032B19A25F +:103CD000932355272661BD65AC6323E2DBB27603EF +:103CE0000BE8E8E38895EBFD8CD5FEF16730FF4BE0 +:103CF000AF65E5E9E340353AA8B962607EC0E99B6B +:103D00000C32D5AFA934511C404DBDA105E9B4E634 +:103D10008A899767F0FE6AAEC4337F3CD697C84F56 +:103D2000D5DD60207F69EFBC13A9BC673D57A4D0E7 +:103D3000F491AF453D85F2D9E8CE68E46B8B31BE96 +:103D400000D2A520CF903F7D08FAE92F61BC4F3DFE +:103D500006E21B9F8AF97CBC06180FC0E192C2FDE7 +:103D60002C9702B23F4BA77F5F12FA28535CD1E534 +:103D7000C3AFCE4F3174464B88FFBFE2724E2BFF6C +:103D8000D4D54972AE276DEF8C46B87E5AA9D17151 +:103D900050C17DDDED39AEA0DFA8DA737C12D3E12E +:103DA00057EF3E44626C79CF3E24AEEF08CA187AD2 +:103DB000F668C3833956F89E10FCC3FFE0832AF0EF +:103DC0008B44831CC24F30F6458B4B4694DA2E1B36 +:103DD000447C51E38345E3746951BFA7BD7FCBD4D5 +:103DE000A234A0EF1CDE3EE3D1877EBB4ED1C90FCB +:103DF000A57B80374A97B684A56D901EAE4BDBC37A +:103E0000CA1D61E5CEB0741AAF7F574CE72803D8BE +:103E100076C31E7D642ADE73BA2BB5F3C7786FAC08 +:103E2000D1B07D6A5132CA61CF24E4633547243B67 +:103E300057D739FC967B18E989364FA709CF6922F5 +:103E4000F33D2FA33E520DF524C0DBC89C20437EDA +:103E500057D32E51DC4A4FBB76AE5F56B75FA47680 +:103E6000FDF69F2D135FD89C7D89EA2D5BF58909AE +:103E7000F5A1CDD5AD5E94532B4C9CBF29CCA7A604 +:103E800002BD2E3F52467EAA3F0C3FF67B0C178D9B +:103E9000FCD1E76B15A8F2EEB23F8DC2767FC0AEC3 +:103EA000C7205F0E0CC5F673AAEE1E8AF971391D84 +:103EB000BF9F09F52E183BF762FCC9DD49BF988A00 +:103EC000F7B92E4475A6635CF382470FF27442E79C +:103ED0005E84CB7F3CFA4B82D385F4CE7419D28BAF +:103EE0001FFD88A7B33AF762FAB1A40E9E1EDE99B1 +:103EF0006EB0A33BF68DA94590DE6FE77CF0E760DE +:103F0000D7223FFD43989C9B9DC4F5F107B2D48A0C +:103F1000243ACFE572662FD82E16E09377EDEE7C2B +:103F2000663FC0E9AE9F44A28461FB3F9E5EC2F93A +:103F300085DF8BFA6B1247612E0F89AF2BA44724C4 +:103F4000A30C8CEB856BD4800E17CE235C6E0C4BD0 +:103F500054CF2525F47E13DDF085FAE7925CC28FFD +:103F6000559BEB827EE7CCB179306E88299DA310FA +:103F70009F1EB6F275011DD07ED970DF90EF88F5D7 +:103F8000D424713B715AE244EAEFDE7727EFB27036 +:103F90007B8EDBE7CB8CA4C73497A9C9E847682E92 +:103FA0004BA4F8EAC3DF703ED2BDD54AEBB81DF989 +:103FB0004C3CF2033519F1854D37113FD0F850F3E1 +:103FC000E209C9C8A76E321426231E769799C86ED7 +:103FD000003EC8F9DE32630BA5353EB8CC487C50B4 +:103FE000E35B8CB527E8EF71DE61645EE45777B47C +:103FF00084F2AB3B24C827FED29EA0E757D7CADF86 +:104000009EA726231FD3E695B4BE9DE691F4A83B58 +:104010000EE14F8215F59AAD435A11BE9DCE7282C4 +:104020005773D9E3D6BB737AF1F7892C7527EECF96 +:10403000ED228E4FC313FC43FFD7FC6D492DE8875B +:104040003927E00E7ACB08D4E78E39B5FD648407B2 +:10405000E792B8BFF32E73D088F4F0BFFBF20FEFF6 +:10406000CB6FFF917D59B6EA4FD7C5DF34BADB215C +:10407000058D49B84F2F72FD12F3CB014E8D89BECD +:104080000B493A3FF95D3F5D964C7144623E91F7B2 +:104090003F5F3C0B92176EBFBCFF71687FE12756F4 +:1040A000D283C2F5D70BEF581AD14F1699D3B90C5A +:1040B000F73B6E55A41DF5ED0BC22F7741ACBBE06D +:1040C000274B5F43BB33DFC9CFB9008F9285BFC693 +:1040D0006FC1F99599BE1B8F5E3450FCB855E05105 +:1040E000736E60D722AC3723C7E37791BD4BFA0DCF +:1040F000FB6924D9D3CD5997089ECD63189D2F35E0 +:10410000BB7979F3ECC1013FE191EC273C9A1D4169 +:10411000FD6A78A8C53D7E56E9A4B847C03F3EFE7B +:104120006299F0B8A77C5026DD97027C24FDA91780 +:104130000FBBA3CB74F8F399F08B7D86FA4C8C2ED1 +:104140005F9C2781FC8E2E8FBAFEFCC4F52ADD2FE2 +:10415000D1F050C3BBF71F01BC9148BD188C74E06F +:104160007672FCD1F8ED31A72FDD99A0D79F395D8C +:10417000CD7F7838B5DB14C5F9F31E2BABB7E4F56A +:104180008EBB07EC0C942B60976662FBB9D0F008ED +:10419000A4E726F97EDD89E3ADD2F0D76B427C5BE4 +:1041A00028EC61B63AD4CEC3F8A79EB4E1EAF42273 +:1041B00095FB8DAFB2B7D937E6D0765C2F89CCE9C5 +:1041C00036229E3F6A657EAB4E6EED44A730AC6BE7 +:1041D000E7039101A44BADDE171F47C8783FE1F418 +:1041E0006B2363F05CE60BE68941FF510DF48D7E95 +:1041F000536651E761BB9A75512E84C7725C02E425 +:104200002F975DE4D7BAC9C0EFE7743F2711BE60AE +:104210003B9C6FCD20C6C6C591BD4EF8F54183814C +:10422000FCD837650416131F5B1CC1F83EF91663F2 +:10423000FF972A87D13DC19B0C9F3F4EFDBD60A6D5 +:10424000F24F133AC99F558390C17EFD7F5FC3FD36 +:10425000F9B06589BDE740E877D5DBCB9FC27F78B1 +:10426000CF41C3DF6A714FA7171F5DD1880FCB65A0 +:104270007EBE18AE5F13752492FF180F73AE47CF42 +:104280001E4C76E6AFAC797A3D3BFC8BF01B974732 +:10429000DF5306DA9FCE026F541FF5E44B8357F6C7 +:1042A000611FF794EFFC13DD6FC273293D5E54F775 +:1042B000E28FF4AD84F3D7E193BB973FD5087F0736 +:1042C000E9DF38EF2246F1CB51221D59DC11407E47 +:1042D0009570A27312D9415D608F63BD1C9687FEF5 +:1042E000D3B1C75A4EA27E1A57D4918EDB5823FC05 +:1042F0007E1ABE69F31C736CAB01ED068DDE74741F +:1043000046E32CAC4AA1738F4E64A26330731DB593 +:1043100047FB97DFEF519317C29C762CCEA4FB2866 +:10432000910A97070B9B86B4AE15748DFC40B39B26 +:1043300041632C407AEB7416FEB313FA7928B970F6 +:1043400007D227195F63FA87A70617AD1EDACDDFFC +:10435000E5775BF909D00DF0ADE257B292906E5659 +:104360004AAE24C4D30F0C3EF2B3F5FA8382F4AD07 +:1043700016F4BF48F89116697EA39DE690B849F4FB +:10438000CBEAD34B843F891D30F7C643A27FA88870 +:1043900005A3A0BF65E887C26F7B68BBE5AC9BDA6D +:1043A000D51CF93624AE9735F3F5CD15FBBFCBCA36 +:1043B000FD47B1AB5B0CDCBEE3EB8BC953DD1B905F +:1043C0004E5F31927FE33FB188F8995A807C7C8CB4 +:1043D000B33080F08D403B1AD6FD3EC835DC57D057 +:1043E0009FE796A31DB986A9838CB47F05E57DE080 +:1043F000F7E6A3D62AC487D7043FD6F2373A8D947E +:10440000263F13F2810633F195824CA1EF34985B7D +:1044100051DE2C30F3347B909F232D9F69F3617F15 +:1044200097841FEC9C93EBCFE79C3C4E534B6BEB7C +:10443000D3CE09D1DFA3BFCF76A1A71EF7B3007FEC +:10444000A2F8AC1DC6807521F14D2FF9DDFFFC31BE +:10445000DFFFD3A7E72FC679FEB93282E139F30235 +:10446000E18FFD3373111FEDE18F2D069293BDF2A5 +:10447000B496CE07BB5E8BA7F8FE1E79FAA14993CE +:10448000A77EE4935DED43B9BC05FD8EF4ACE7383F +:104490003C808F115FF5BF385CDCEBF6EDC2F39624 +:1044A000AEF6040FFA3D3EC07344006597127802E1 +:1044B000F514FF312BE9395D82BF7D76F1E208D436 +:1044C00097BA04FFFA8089FE0286D6FD347E2075F5 +:1044D000BA6EDF8E8A7B855D2CB888EAB55B43FCBB +:1044E0000929669ECFFE15F275FE9F5F1945FD8373 +:1044F00056499F7FD8147C9CF4E45FF2FC77CCBED5 +:10450000A8641DDFA88E0E0E8EB57D17FC80C1E15C +:104510007A8FA5737D2303F804C717C2D71EB9D3BA +:10452000626835737D84F7F38224E0D79D4DFEC524 +:104530000F07BB70FC751FF2FBDD475BB89CFACC24 +:104540006BA278EB2E2117BAC2FC2E1ADC76184526 +:10455000FC128C83F0386C5267D37A379BE3B1DF5F +:104560001AE4D3E887AEE77121FDF19F9AD6F9747A +:10457000CFBEDFF2AABFDD45FD849D2F7E5AF5E751 +:1045800001FC7E27BFF7BFDC2ECAC2DB0BF9C71CBC +:10459000DD897DC99B9E7A5D1B5760BDF071489F88 +:1045A0002AE07218F9594DD8B925D3A70D57A74B52 +:1045B000936343E225C732ED2FB4DEADC86312B07A +:1045C0003CB4FFF78DFE683A0FFB50A6FD5DD63C6C +:1045D000EF2E5CF78204DF8C64A87FF4914D050414 +:1045E00007A1878EFD2887EB7D4DFC9CE37DA37A98 +:1045F00017D2796C51D074B74EAE5627F373CFF9FA +:10460000667E2E8461857A7EA595171486F209ED63 +:10461000BB3499F38BA80E2EDFC08033A3DE701459 +:10462000FFE9D2D7E37CAE3AD945FD657471FF4FFF +:10463000C6EAC07A8CA7A86E9F3712C196B13A48D5 +:10464000FCE57D230BA2FEFFFEAE28CE0FD0DF01DE +:10465000FD2E1ACDFB5D6400FD13CF23C4B9E71214 +:1046600001CD4566D053819F3F7F60BC210AFA5D32 +:10467000B247F258A1FE58C1EF515FCA40F923CEAC +:10468000C5AB58C7C64EE87F5123B38CA6F88980C6 +:104690002195E04CB15D00974E3FD9A54F49B9E84F +:1046A0000F06B955170DED96A801F26B869F4B3298 +:1046B000FDB922EE079E77E9CE85963535D0B99AB9 +:1046C000260F516EB130BD36148FFC7DCA5B4D1E76 +:1046D000697217F4F06DC97C9F42CE8196B15A7E03 +:1046E000DE25E45ECFB8426E7E60E0727A91792B6F +:1046F0007D0F24BB697F96B04E2E77418E22FFBF7F +:10470000D6FE1E10FBABED6B3530CA9BA1FF27C454 +:104710007EF7E0D36A165C36827FA346103CB93E32 +:1047200060E1FA007E23AE432F08D707C2E57FB8C9 +:10473000DC4F327139AFE181FE9C00F59CB1AB03D7 +:1047400006DCCF97D704B6BD9FC5D8D7D6E81118D9 +:104750000FB6CAC2BFF74744B7E2F76BEB8000EA77 +:104760009DFE424E67FE0B51743EF8B5ECD9F9063A +:104770007C276DE274B4BE81CB8BF56BB93CBE98DF +:10478000CCFDFFAF88EFD7025E27703C23DE4F38A9 +:1047900040E34EB2E42A48C753ED9F0F50A08A0170 +:1047A000F4A5488C73B6713E6B381245E77E935280 +:1047B0006F0EE23E9F8C32D13B2848F736D897C91E +:1047C000ACF7CF0EE949F80F1872B26DF07F22FFF7 +:1047D0009C24F6BDDAE27B0C43D73E31FA7E818E13 +:1047E000D33D66DFBB883F1399AB0EF5FD09232649 +:1047F000D33C60D80B989FC4D43F26935E9066A7A5 +:10480000B82C819FDAFCB5796AF347D9857AAAE199 +:104810009899E2CFC2E76710EB59FF4254601D94AC +:104820009F4C7E7D23E253F8BC35B884CF1FE6FB56 +:1048300005CEEBABE437EE42BC2DB4C03A649AEF40 +:1048400097384F98EF5F92475D3D5F13F291811863 +:10485000AF1AE50F8B53FE86EAA7C92171BE5A7CB9 +:10486000A24687273F6199682FB27A20DB448417DC +:10487000A7838936F345A4AB13467604E9747D1407 +:10488000CBC6F59F64119E756EEA66103E7920894D +:10489000FA2719A753FFF928D25F240B8F4B003D4D +:1048A000C68576D449AB5925FEED7285C4F769FCFF +:1048B000FDE4BBA9A4179DB09A6D8897581FF9E530 +:1048C00009C912C8947AF1973974717C9957E33306 +:1048D0008A9BAEBC5EBCD6DEA5189DC2F9402A0BF1 +:1048E000D2FB0CE93055E483E93699F68B8938839D +:1048F00009623DE1F39C60B151DC29B3193FEED46C +:10490000F13FD6F4A8AA87DB0984674C2F5C3538C1 +:1049100086CFFB2A38EC04F817E8E06F817623E8AD +:104920005C91A5C6F5D19EA5C5627C33C5EC001F80 +:104930007A3FC9372E2501E37DB81EDA5D6621B9BD +:104940001A57DC4DF7E62EF4BE0741EB3C2986955D +:1049500023C7A5611CD78C142E17C3E7A5AD277CF0 +:104960009DE170D0E67BAD759ED2FA0B5FAFBD9F27 +:10497000F661EBCC317967E13A2FC89D51C4CFC5C0 +:10498000BDDC1A717E899889FDDE2DFABDBB53A26C +:104990007E77B3EE870693DE6CB0A3DCBBFB982179 +:1049A00088F14DAC7EA2DA19321EA703AD3DDBD9EA +:1049B0001D8DF242EBE7B3AAFF8AC6F8EAFEDA578A +:1049C000A7707E7862F6571467B2FB581B9D9FEF65 +:1049D0002863AC83EC5F4F34DA652B0CDE4F336019 +:1049E0001DEF55C984FFEF554550DC6F38BFFEAD54 +:1049F000E017D7CBB719ABBD11E73BE9B6795F3A02 +:104A0000E87DC3FF9AF61AE8189326CFFB11A6FF9C +:104A1000F8CF6F4CB381DC9C3441A273B88D29EF81 +:104A20003D84F1C99366CDFB5102946FDFB3EE561E +:104A30000796DF218973BA7FBF15E38527CD954897 +:104A4000C91B91CEEB47E6FB8C788E3853BCD7035D +:104A500059AA3ECEAD2985FB3F9B045E6D4D715139 +:104A60009A4085FA47258FD7007BCC584EE7703E99 +:104A700023CEFBCCCD60C5DC88FDFAD29B747ADDF9 +:104A8000D969E63B551BAFA7F77FEF4B9142FC7FFF +:104A9000E1FA5C9B185F3B87C1F63386EBCBF9BD2F +:104AA000FD7D627E361797F738AF8AE1FCABD7AF52 +:104AB000CFCE1EFF125E019AE171D7616F3926DFFA +:104AC0009329A390DF7F12C5F5D5CEE1B88E0BC632 +:104AD0004E1EF714CBFDD1C8578E021D4F2CF6EC9D +:104AE000BB1FFE7D2E258EC63B6BA43750D8C968F0 +:104AF000734B1D2CE5B4E0B7F8D7A8C917E8776B5E +:104B0000E443692B016E2569668A172FB17138FE5F +:104B1000364BD2F817BD7BA3C99952D6A1207D4C44 +:104B2000CE194272E656D64D692FB31BF15BCE3CCF +:104B3000F4FD6C7C6701F93334F999DE233F5FC2E1 +:104B40007515B300B59BCA7CC750AF7CBB677E416F +:104B5000A2EB1E7E19260FFAE59738BDC4DEF339A5 +:104B60008D5F4B0B84BCD8E827FE9CC47CBF4F09EB +:104B7000E1D71D12F98F467B2CFCDC36942FF49C78 +:104B8000D30C9548FE3C1A194DF6E2E9A152AB99B7 +:104B9000C3C780F700099ED06872B6348FDE4143E8 +:104BA000E10BEDA67A24D24326BB92E6235D4DC5E8 +:104BB000B1A0FD9BA3387CB5754F2E067842F9E471 +:104BC000059B3A90AF4FCE7EE3F6BEE0FB2BA3777A +:104BD0006202EEFF34BEFF155EC980EF8494674B1E +:104BE0001427F9D69AD3A467E49E72D1FB21533DD2 +:104BF000B1943FF2B5A08CEF8B4C1B1D4BF198C3C9 +:104C00000F75AEC3F46D2A2FBFF158F7094C97E525 +:104C1000C4E6613AA7DD3E1EFDE225156E8C3460C8 +:104C2000B173144E5F8324ED7DB810BC28FE7D5D0A +:104C30002982CF943A98F06F8C576293A0FD980A1E +:104C4000E9717429AF8B5C3E8ECE55FC4F1890AF46 +:104C5000CE12FB193B879F53CF9A5366C47B2680A5 +:104C600037F7E13A014F2252137AF1E7BE88372E27 +:104C7000483091C3222ED87FAB46E7DC1F31DD3BA5 +:104C800024B059CCAB422F6FD1419BD82B27CE4AB1 +:104C9000A2FD3CFE1ECDAB6F83410C7C6142A9BBE3 +:104CA00088915EC1E85C23C96BA673A809D9B34A91 +:104CB000705F2678377550B92D4C8EBCAF8BDF876F +:104CC000F49BB89FD09FB34222BF1BD3C7F71B30C2 +:104CD000FE87DF5B761673BC4CF29942EE0BA05D4B +:104CE00013529FA94353493F032D17E09D2DE26FB7 +:104CF000E09F418C2385AF8A71A8C6942E3AC738AD +:104D0000BD50A2776D6F0A78CB483F1076DF7441B3 +:104D100017CF2FE0FE8D12AF14B0C03F4BB2D7CEED +:104D2000C1F5469FB3917E8CF86ECAEF850F137262 +:104D3000FD4921076F70324B06E90D921FCF516E6E +:104D4000783E85DBCF4EFE86C0B0952EDA87925234 +:104D500089919FBB3182DEC183797CFBADEE3EED54 +:104D6000F452318FD5F9017AC7C2314DD6EFD3E174 +:104D70003C2D9EC86F442150E9F5B120D293937920 +:104D8000F0FCE9D50A59C5F70CFDCC42FE6839475D +:104D9000223C28F74AE49729BC12C9822371BF5DDF +:104DA0001B1C58EF6D13D14B42C5BC3B996E9F0A3B +:104DB000C1AE227F54258F5F47CD48D1F19174C099 +:104DC0001F2FDACF617C081D9608D7E49E347493B8 +:104DD000887C85D13900B37412DCA3343D4CD88370 +:104DE000DAFB673775C6CEC7FD29F0723A4FAAFCC9 +:104DF000CD39FC2E4FCD2420E19335E8F797104FA5 +:104E0000A0DED94F5801F289B3FDBC47FC93542D65 +:104E10002E9BEB69E53E7EFF6C964F22B937BE783C +:104E2000AD82F6F0D7B1FE53C83FCA7324B60EE682 +:104E300031B578AB11F588A205F3D251AF381BE537 +:104E40004D473B797BAA8BE631A8C21C9471FC6468 +:104E50001FE59F15F1F15FBF7BFF5CC49B7257ACF0 +:104E60001BF166BC6B4506E2C3D405B16E847F7D41 +:104E70002AB7DB2A8BF9F8537D6534CE8C05F368AD +:104E80003F8B2A5BD2703EDA38AFA607D2D04F07ED +:104E9000F298DEAF1B542AC6B5868E373307C68319 +:104EA000F2F1397CBC19A57CBC1D62BCF24A180F1A +:104EB000E03443AC6B76698B42EBCB5E41EBFB0F8E +:104EC00077ED9DD8EEEC141807DA0D2A867100EE06 +:104ED000832A3775E07827D6A8EC3DF44787C921A7 +:104EE000BC5A1495D7BFFCB909FD5E18D707F884E2 +:104EF000F17B0F993CF506B4B78A02C25F1E2A57B0 +:104F0000923E563760BF25CC53E4E0F1C8727D6213 +:104F1000AF1CD1E4C2A31ABFCA15F2677A0CE1F93B +:104F20009B287F60FE5BA7C7105F9E99CFEF2F691C +:104F3000F2677231C81BF8CE14F2E6CC189037280D +:104F4000874AB9DCD6E40CFEE9F9B826776EC3A728 +:104F50000F605E65CCF3561EF205A38BE8C46FE5C7 +:104F600072A78879492E4D61FE8A69A85FBCF567F2 +:104F7000B2C3971B821B11FFC1DE247E7D5F849B21 +:104F8000FA99CE7CE3FE02F99EA09DDEBD2AC9E11E +:104F90007227EFB4E724A64BF3793AA7BDA310E537 +:104FA000D0ADE3781AE4C0EBC8FF461CE1F2C95B60 +:104FB000A4D5E3E9921C37C92BE093BFE37C32749C +:104FC000DFDE1274DEB36FE1741CB68F3D7A839717 +:104FD000D31DDB584B7A8293B54BFC5E7687847089 +:104FE00048FB11A373CEFEF486DFF6EA5BA1F6DF81 +:104FF00075EA33DA3C88D3687C85776747BB3F4DD9 +:10500000B42F407F02CE3747D3736A353DE70B0E8E +:105010000F3E5F27CE17E0DF96984B78193EDF559D +:105020004EF52B94B7130D360FF2D93FBFC5DF1BDA +:105030009AAA361421DD9732FF06BB8EEF0C013B96 +:105040004BD1C9ADA1010B5374FEB91B0ED843D28D +:10505000C3DB9D21F56F3CE20A29CF05A1A72F1FD5 +:1050600079DA13921ED5313AA4FE0FCEA921E93187 +:105070009DC521F56FEAF286A487319F8C8BBDB95F +:10508000BB32A45DB1CB1D83F433F480C2DF53F295 +:10509000AB1DD989749F94FE6EB9E20BE967B8B86D +:1050A000F7379E2D0EE9871DE2F78A6BE17FB87F07 +:1050B000C3C2EE150F16EFE556EED3DD3F86FF06B1 +:1050C000E3FDC068FC86D60FBFE777439AB8E79741 +:1050D000CFF2512FB86A9F18BFE739E3000B0424C1 +:1050E0003C57A2BA6CD82EFE6E62F8BAB47B80CC64 +:1050F000F09A82F5FE02F2189F88303B43F7D5EA1A +:105100000ADDD7C8ECD07D8DF284EE6BCCE8D07D83 +:105110008D5543F735BE38745F13BCA1FB9A541903 +:10512000BAAFC9BED07D4DAD0ADDD7F4DAD0FDCC23 +:105130005815BA5F6E7F5548F9C0FADA50BC14FBB7 +:1051400099D5B42AA49DB69F7EF8DF77EDE78C8AC7 +:10515000F146F4834CF71A43EE995FEFBE2E0ADB5B +:10516000D7EBBDBF09FCAE3A6D54AF1E837F7ABB4F +:10517000EE37537EA070FB6EF9A137607F8B6DDC3C +:10518000BEC33F3DBF2FCA2953F098AC58C889739E +:10519000595C4E68FA1ABA01C8AEF171FBA444D842 +:1051A0007FE176C974D63D4019D83FFF073E5E8740 +:1051B000F37D39F2D734AF6216A4F66FF5CC3F78A1 +:1051C00095DD87E748D7CB277BF8F5ADB5C4A7AF0A +:1051D000C9AF5DE9BDFC0F98EB845513BC786FB582 +:1051E000C7CFF5BA91EE634E78603CE5AF7DD74C02 +:1051F000715685A5DC4F3B0195674C77C964DF1577 +:10520000DA787A821DF46AAE47AB7ED4A313B8DC99 +:105210003E53E649C7B8AC33D392B4B82CD25FBB87 +:10522000250B9D339E889AF56E2D8E27E2BCCFE428 +:10523000F2FD3833CF45F47B42D3039671BDFC4C6D +:10524000148FEB3AB382BF777BC60DEB84F1CEFCB3 +:10525000D8E5D2E2B3D00FD91D2587C5677592BFB7 +:10526000F9E8683BFD1EC64D19ED418C4FEDDE2E71 +:10527000D17AB5F3D2A34D43B4F82C7E4EB2859FBC +:105280002F7D6864DC1EDE3A94D61557CCE795D1A5 +:1052900025B760D589E25EFB51052435CED7C5EF31 +:1052A000091F15F15B67855C3CDA13A7E527FFC38F +:1052B000D1CAC174BE1D2E1F8F32FFA04770BCCA59 +:1052C00008117FE7CF7F13EB570DE3F559A8DD0FEA +:1052D000F5737E89F5BD16AA7F26D6938EF1EB1A5B +:1052E0009E9C9936391DE9B508EC399C675105BF7C +:1052F000F75F64DFAA60BE54C9E56838DD753A7DA2 +:10530000E7D312302EEE89152BA1AF2959FBAD48FA +:10531000A767FAF1ABFC661AD09FDC4B7F25487F6C +:105320002EFCBAC8BE7C13F428D4BFC3E951F303E2 +:1053300068FA55316B127E124E2FD358A78248DB84 +:10534000AB9F75D37D99ABE92E97E24DD1FF8F745A +:1053500057827E160E54F23B01FFF812D7A3C1E12B +:10536000ADD8F69378BE5804F3F2D3ACFC4CAFB78B +:10537000F4477F1AFCA6D82FD2F9F209EBD703F431 +:10538000FCEB70A2CF90AE3BD79A1217B0DAFBD0ED +:10539000877FDBAF7FEAD7E7113FCA857FAA5CC072 +:1053A000EF8C95DB37E1F09B50319EFBA7849E3B51 +:1053B00091F9859E1A20B895F6C3BFBEC35F959A32 +:1053C0009E80F077697A2CF9AB007E69E97DE89BD5 +:1053D000BF17EBB85E7D331C7F7BF85945A8DF4AC9 +:1053E000F357B1D19CCED76BFC2C0C8E3D7EBEB05A +:1053F000712517EF6F9278EFE0553BB717A0626900 +:105400007222E219FF7BB59ED333E001F19D622148 +:105410001F61F9240F3DF03F9CF75F98CD6701387D +:1054200095E684CABD42F1AE4151D83B2B85E21DC1 +:1054300084C2B07C6DBDE172513B5FE96FDDD3D2B8 +:10544000C53B2C2E36E45B28079948FA50C7EF0D70 +:10545000743EF152C2AC055B611D431E1B46EF0357 +:10546000BD9478C78FDEC0F4CF0793BD302965F1B6 +:105470009E15907E7C770E956B72751646A9C1BEFF +:1054800016C9D242F40B66E7BF7DBB1BE67DCACAD4 +:10549000EEC4B493553597C138CE9CCCBCF5D04FF3 +:1054A000918951BDA9372E1BA98F17B847F43355E1 +:1054B000C429A7E3937E79F455D05F93EE0C287648 +:1054C000E8D724EE75A52AAC0EDF8534399B6C76BF +:1054D000845F04EFB7283398762FDA3D876DF4AEFA +:1054E000F70D9EC88B03713E9244F3B9215B0AE22B +:1054F000BBDB4571A27E6170D036ACFFA4290FF9E9 +:10550000F90D9E691F62FD22F15E6DB4EA330E450E +:10551000BF8AF00BFD87C2F1636DBA85ECE7E7E760 +:105520008C37E2BB0A33BDDC2FE7F477D6C5E37ACC +:105530002BC7E7E37AB5F5F9D379FC55C5685EAFBB +:10554000C23BCFB840B7FE996A37BDF33AB3F2A277 +:1055500082FCE0F761F45D86FF20FE78D79D3F86F0 +:10556000FE2B8A387FACE8873F7AF11F802F13E645 +:1055700070BE5656CCE97B26AB25BAAC644DF4BD63 +:105580009DB5D3770EEBE0747DB187AE331C9921C6 +:1055900074BD03E97A065385DF9ABDD8E9BE9A9EA9 +:1055A000FBE37B40FF7BD213AEA6BF57FBD1C7B650 +:1055B000463EBB07F9D8EC34BE4E56B9F525A4B328 +:1055C00009C566B2CBAEE263C307D239407FF2A011 +:1055D0003F3ED6BF1ED6A2083DECB9749D1EA693D1 +:1055E0000787FBE26767FAE0677ABDAC5F7DAC5482 +:1055F000F0AF307D0CFD5AB8EEF45AC6CF17C2F4A6 +:10560000B0EF38777E9DE07D8D73E7F073EC6989AC +:105610006A817B54EF394ECD398BC585F1F6F95E41 +:105620009669C37B38E3E76642798D386F8AEC6010 +:105630006A0BE4EF1571D153335DD4AFD3C4E36883 +:10564000F0DDB55C1BC68F7470BD2981D9912EB574 +:10565000B88FBD51D02E0FDB49D4AEA7BD85D5453F +:10566000E8DA17DEC1F9F0575B4CE2DCDF9781FA2C +:1056700052E21FCC14DF7CE92113C53D0E3471BA10 +:105680007568F71DF0975AA0BFCFD2DD7CBDD20957 +:10569000273AA7FC6C337DB5B8D84BE21ED457B17E +:1056A000FCFDD5AFB6244AA8175E52D4972B61DC17 +:1056B00081DB62252E3F79FD3FA5F3795E72A99FBC +:1056C0009FC67595D9B83EC87CB918C76936E497A6 +:1056D000580C283F56779F86F6CBD26D76C4E3A24E +:1056E0008CF367F17DF80F0F19E9CDCDC5FBA7C786 +:1056F00004B199A23ABDC3AFD6A3160742E5C5D2FD +:1057000003A1E965EDA1E99A3079112E27A20708D6 +:10571000FBC9C53C2807AED77E1A20A98E0118BF49 +:1057200023F6DD6CAEED6A81759B1FCECE5B4B7CA4 +:10573000A7FB38BE0D9FB8CD4DF7437F27F8F97B07 +:10574000E9DE346C67CEC81981FA62614629C5BDAD +:105750007FB5CB4ABFDBF39595DB015FBDC8E5673D +:10576000F3005EDEBCDBEC9288CED5D25105184F3B +:10577000C5E9A766279797F067E1EF17A916DCC779 +:1057800066936A4AC676FFC43C389FAA9DF750DCF0 +:105790005F35EBA078FAF903F87ED5189E3659E00C +:1057A0009FCD71CE42B4279A9F95E85D58E5EF0AE8 +:1057B000FDEEE026EC720CBE9DACDAF11DE965470A +:1057C000F8F9CFE801DC5FBC795CE83D18D3A13281 +:1057D0003FFA9A6EF97B11BD7375CFAA5F51BCB6C3 +:1057E000C3D41D3F1EED892D32E1FB3D0FBC40F9B6 +:1057F00052797107FECED0075B6C2EC4E393BBCC0D +:10580000B4FE0F5EE4FAC5077B393CEE49B3D179AB +:1058100043F8FAEBA4A0889FEAA0F3F03FEDBD3F68 +:105820001AF7EF4F5A1CBDBD96EEC132576D483C7A +:105830007DDB1E03BD43F6A73D235FC5778C9BCB65 +:105840004B46A15CBF25369FDE29D3CAB53810254B +:105850006EF4E34857B7FCDD407451F4F0B808F437 +:105860003F2B2017311ED9D55848F1B94BBC11B187 +:105870002E89D645FBD6B6C542EBAA699C44FB549B +:10588000D55845FB30707A8A4CE54F4B0C7FC2925D +:1058900019C645AC85F6350F939B89B531A5B82F50 +:1058A0003FFD5FD30DFC5DCFF2084F10EA7F28FC6F +:1058B00037E333F87C2619C695A09DB96C8B4C71E3 +:1058C000C2CBB6BC9948EF62EC33D0BB5352F9E877 +:1058D00014F46387D39136BF707A3243BFD83E9CAD +:1058E000AEDAFC1E7AE73E9CBEF02FA88B7338DD43 +:1058F0009847F30AA7BBBB1B33E9BD0E56CFF5B0E3 +:105900007F1AC07F1FF37BD05F9D9EFE585A794857 +:10591000DCBD466F5A5AE3EFDA79BBC5C3D4FD3616 +:10592000BADFAEE2FDFD27062854FEC4001EC7AD57 +:10593000FC75E581D761FE370EF06D1B80F1764C6A +:10594000CDA57736BF64F8FC06C515F0F34C7E6F25 +:105950006A87D12B131E2ABE7F7D1DF28D8D5523A4 +:1059600091EE1F17FDBD97EEDB83FD2C58EDFBFC80 +:1059700038437C1B46F4BFE04A05FDBE10FE0E080E +:10598000BFA7EB2DC4DF07353ABCF9888F1ADFCEED +:1059900082F9B6F41147F09B015C8FCA7278A99F17 +:1059A0005F64F0FB82CDC8DBA19FDDAB78FC86A6EF +:1059B000AF458B3D74BB18BD536619CDE1B1D269BB +:1059C00070213DC23894EF1E2DFB27C3D7369ADFD6 +:1059D000EF8DCC0FD27BDB59980F78E4F6307A87C5 +:1059E000472B87FA17315F6616970DC668847F21AB +:1059F0003E6465F3F7F3DCCD3C5FDBFF3F374944A2 +:105A00009F600BDBF1F76C2C4CC8CF7C2E3F573AD4 +:105A10004D2EFDFB2E0F258F3F81FBCD54759043FE +:105A20007B3717FE6689F808E05A14E7383787F99C +:105A3000F07EA4B69EB1CD2AC5BB85C36D8198E723 +:105A4000169C27A0CA580FA4B3FB9FDF7EC12FB5B9 +:105A5000F6DAFC4CCB6D0AD2F35ED44F60FF4D29D1 +:105A60004E1BD2911627E388802FE80BE929D954E1 +:105A70000FD647F16AA08178F0DCB1BFF81947046E +:105A80007CA17EBACC14C44F93CC8AF0FED0FD0624 +:105A90002F293B5FCB4DC24F1F94503F4B35B4EC89 +:105AA0005A04FDA6CE4AF3A09EEDB3A85D042FE6EE +:105AB000A2FBE397FAF95D039F65FC2788975A9C40 +:105AC0009D46B789EB59C8BD3B2DCE283CAE68B783 +:105AD000DC6421FD2C43E81316EE1FDA3196D9D190 +:105AE000BFB27E0CB73FB57DAB11FB261D9368BFDF +:105AF00058585C9416371529E2CBB571EFCE518218 +:105B0000E63EC6C73FFDBCB5FA91BB3ADC38AFFEF6 +:105B1000DAED01FD0CE397D9468F0BEBF9DD3E3B47 +:105B2000C63DA5AE9FE712F2C48D702B65AE3DD287 +:105B300040F44BB8D2F05DC152CB6FCE61FFA516D9 +:105B4000D64EFAAC27DC1E0FD5E7970BBFA0C3C417 +:105B5000DF8BD0FC82CB855F502AB7905FB0C6CB7D +:105B6000F5B809C7B8BCABA9E37E41ED3DAD9A23BA +:105B7000E3938D90BFDC6B92500EBA849FEFF037A9 +:105B800013E8BEA6761FB1E73E6F6EE7CF7F8A723D +:105B90006D31BF9FF9A9E8A7796D6132124FBFF748 +:105BA0007C37C82DAD6EDD3DDF0D72ABF0DB89FBC0 +:105BB0006CF608FA1D24B19F1902EE2DE29E658B4A +:105BC000F0D349ABF9BDA116E65A4BEFFDAD66FC2B +:105BD0007D951C3E4E5C9DDC8AE7BE013CE08EC19B +:105BE0007A8CFB056D161197618F28E7BF9B44F7F0 +:105BF000EF12477318B7687E3F812742E4B0E6583A +:105C00003519FD7451395EB7CDC3D81B7B3FF95DA3 +:105C1000C4A8EFF30EC4E6A6EF7E07E29C17DF816F +:105C2000B060EC9A28477504E449CFEFDC60FCFBD8 +:105C3000A6A8DE7205F4304B9D48FBF77A278288D0 +:105C4000C1B3155E7EF8618C5F7BD8CA42C6D3CFE4 +:105C50004F09EBDFE8A2383091EEBA15FBDB9EA7C7 +:105C6000A5273E8CBF93F3B031B43F4279D11E13C8 +:105C7000DA787BDCF735358EEB956B20E76A11FF20 +:105C80005DDDF642FAF91121FF22EDD3F97BCC5705 +:105C90002A88FF1B1DDC5EC7580D7CFAB1263BB37A +:105CA00095CEBD146E774724F3DF73FA4906B75FCC +:105CB0005698B83C528E95A9F8E48191795A5F774D +:105CC000933CFCA70CDC9F8CD297517FD1E421E858 +:105CD000FD1B6F837E1BB633F22F5B9A453CBCD80D +:105CE0006F734F3C849FC954CF3B0AC77B3BC3575C +:105CF0009FA1E3CF59CD2E13F6D726F85EF3E24CE1 +:105D000059D2C9CFBD19FCBC3F2B9BCBAFACE640F1 +:105D10007D26F4A7C45690DCD5EA65DA07C9F43BC2 +:105D20003569420E829C453D38B3D947A118998AFE +:105D30006F36AE3BB3729109F5F5BD195C3FCBAF41 +:105D40000F5851DF655532FFBD890C178D67B42F91 +:105D500020BDD05869B121F2EEF63E6EC5FEB3B259 +:105D60005B697C6657E8DD38A6801E00F57E1EA7BD +:105D70008CD2BF2FB3D9AED0EF8616187C2B28EE6D +:105D8000247EAC8AF4921E5752EC8946397030F763 +:105D90005E1BDE3BEFFB3DDDAF5D7C5FEA24AFFFCA +:105DA00036A4B75C906DACB73C43BC17722883FF38 +:105DB0001E86CB6F27BB60DC975ED28F0F65F0B875 +:105DC000C45F2B9D91A8FF653175C5DDB84EAFCD81 +:105DD000857E7AC6F87980638D8BEE87591C9D0F7E +:105DE000DE88E51ED983EF786AFAF4A72F24517C68 +:105DF000D46097EF38E24181A1731BEE3B7B90FFAB +:105E00009EC8A72F98894F387E9A43F13D0D8ECEBC +:105E10006DE863DC6BE476B5C511B40C44385E9173 +:105E2000E9BDE248D8267C6FCA66E3EF60E5039DD2 +:105E3000D27D12A744F143364FF719ECBFC475C6A3 +:105E400083EB9820DEED0AD72748E869E7560CD7A0 +:105E5000E7671F58C8D554F76D7CAF9E3191A914E0 +:105E6000BFAFE91F3BF0FA2B34DD215BE87E7B7E80 +:105E7000078743C9EAE3345E94A79DEED52D40FF22 +:105E800028A433B3CBE95ECBC2264E4F770B3C64DC +:105E90008A2705ED988B1991E21E531D7D49BEE1BD +:105EA0007A1A4D746E9259EF36E9DF7FD3DE1DBA50 +:105EB000BB89BFD36412F70E33F345DC287B90CA4D +:105EC0003F1674A9D9EDBDEFD8F0717BDEC3CAE5EA +:105ED000FC7AEEA0727A7F2A2E7F581ECEDBA93084 +:105EE0000BC615C9028FC2DFC3D2E6935FDC948C68 +:105EF000BF27DFFB1E169703FDBF87D53D3113CBB0 +:105F0000A7B8E877E2CC2E0ED7FF06528A8D6A003A +:105F1000800000001F8B080000000000000BDD7DEA +:105F20000B7C54D5B5F73EF34E3209930079F04817 +:105F30006612120224611201411E0E096054A4C3AC +:105F40004B40294E2040200F106A1B7BB19998F0DE +:105F500050B1C68A885E2A135E6A051B10292AD8AA +:105F60000144697D45ABBD609526E8451190085513 +:105F7000B1D75BBFF55FFB9CCC390328FDEEBDBFFD +:105F8000FBFDBE58DDDDCFB3F7DA6BADBD5E7B4FF9 +:105F90009A53882E4542A4DE1DF42CC91322C52134 +:105FA000447C12951DF0DF7E6890101DF9B1DE8DE6 +:105FB0006E2E5F158376A25E41BB15DD95E92D48F7 +:105FC000CBC4F49D945AE87F5D92647A8452C522D2 +:105FD0001AAD94A6588425569637E23B0F2788DBE6 +:105FE000FCD4BEBBC97CDB444A1F2E92F924AFF01F +:105FF0006DA4B9A4BA13A992FAD945A99224CB43A6 +:10600000544FD3F2EDA0FA9492C5853CCF2C99DE83 +:106010009B16B6882C211E13A1755B68BEC15C9BC4 +:106020006B8B10627CEE2B4794024A1DA2C59C40EC +:10603000055EEBE9B65CC17FDF650AB13B79B2C7AB +:106040004DDFF97CC685633554F670FDC41973D1F4 +:106050003FDFE9DD42EB15C11DDEC9F168DD2BF143 +:10606000C40021CCE877AD10E74EC79A942E421CAD +:106070003E9CD5A58DE6B3114DD2A85CB8BBB868DF +:106080003EC3CD2621BA11DC0A2DA18D8A100B1C2E +:10609000373EFA71576A6359FCD7BB687CE71B5DD2 +:1060A000BDF7D2F8C333846C9768E37604A0A009E7 +:1060B000F53BFA85EEF5601C25CCF5CFD9B9FEA4E9 +:1060C000D5EF5330BF1DD9DE2DBC8AB06B623ECDFB +:1060D000BFCEFFE8986CEA67153E41F5625F7C68C9 +:1060E0000BB577369B82D934CF6E36F99DB3FB6200 +:1060F0004277A35C91DF11CFC785B6D0773E17B248 +:106100005FD06BD9B885E7E14B9D4CE37E873F5A62 +:106110006FA322789F9D4A781E8FBF23C684765A2C +:106120007D0F3B95D3F8E2592AF744CA5FB4CAF20F +:10613000E08E18455FBEDB16DECADFDB29CBDFB79A +:106140000726631FB4FAAA84704EA2F3FBE02882EC +:106150002877DEDF3B74AFA283E33D0AB7532639CD +:106160007CC89F28B46CB42B0CC7DBFC34DE47B969 +:10617000A6B0AD0070247C7546E0A77D97E0E7C728 +:106180003AE7ACFBE43F4541047E73FCB67673010D +:10619000C3CDDF827E96B06B527CA4DF9CA2F2F16D +:1061A0002221928F4EE7547C3B0BE3CD5965672447 +:1061B00066FCA37F1703C7060BF155CC681B90EB59 +:1061C000A7BF9A68031ECF138B39AD104D9CD29F89 +:1061D000C3948AC4E7300D1562A168E172F72A4BB7 +:1061E0003095E0E83E121772D33ADD41E116570BC5 +:1061F000E1118427B47E4F2F93378C6E8A4911D4D6 +:10620000CFDD48F52934FD7B8812A95FF32A25A448 +:1062100050BF958D26CE07572BA16CDA8F60A3C98E +:106220008771E87BA97E5A6793DBCCF4F8A4DBC6C0 +:10623000F3A56987301F2DD5C66FB40A8673BD30AC +:1062400085913729325DE9B294869C17C3451BAF0F +:10625000D1BAD8311AFBD7DBE4029F69B4061661C4 +:10626000FF1A8FC69982349FC6F8C5AB4A653DD3E5 +:10627000DA5731E152D47F5568124145C2338DE679 +:106280009F7934A619F8B0C26DE2F946C37B6E93CC +:10629000313F7F9D31BF2064CCCF1181DFA6D2D2A8 +:1062A0002B9F3496AF70BBE4F8C2CDFBD06875BFAE +:1062B000E3019F24B862FEF5BD24FC4CBD659A99AC +:1062C00038663AD34DA24D64D3FC565B24BEAE5E15 +:1062D000D5AD19F36F4C24FA72FED7E71B3DCF16EC +:1062E000770ECF93C6E7EF35127DA8F0627A9FB3A1 +:1062F000CDBE097C664EBC3B01EB38A574E49A81A7 +:1063000007F7C7BB990F085A67B210B35D72CC8FFD +:1063100014EFD630B5373DB0FD9E1CF4BFCF5C44C2 +:106320005F1425939D4C6F2F7CE60C81DE2A086656 +:1063300069C4B75FF0BEFB0AEAA3D7457F6ECB10F6 +:106340001A17FF8FB66A7637E18B21FA10FA769921 +:10635000F82FE187C6AF69CCF2EEFE23E0132F14CD +:106360000BC6D7171EB3871AE87B0F9B3EDAF12ABC +:10637000E0BF2386CFA99A651D5B05F51FD63DF0CA +:1063800057B43F7DE7FBE31437F30DEE77765FCA32 +:1063900046E0C9A0467B647CFC67B52E8FEFAFA2B8 +:1063A000450CA3748DB1BC627D543FF10FBB7E9E42 +:1063B00044318CD76B6D817E2EDAD7C7FC43866063 +:1063C0003E6BAD4DA5A0F3B6D4C01798D7C763FDFB +:1063D000AF983CBC1D397EE2432F7D3B27CB027E2C +:1063E00079C4E1055F7CC9D2169748FCE850869BCA +:1063F000C74B758820CE5194635CDBDD92DEA2E949 +:10640000EA5B30036AEFF4F89ECEA0EF886F69561E +:10641000046F33604B43399C3B7D66F0EBBD8A8B48 +:106420008E0D51E316EDF3897F39F72ABE4C82CFEA +:10643000A25C5348A1EFD7384DED575379B6D3241A +:10644000CF955C0BF3879A3522389FF6CBB2B72CE9 +:1064500088D953BBE0D594BFDDE6667CD3E651B363 +:1064600067A208D0FCE2BAF94D73E97BD60A13C3E0 +:10647000682D9D63186F2DB5057D0FA2FD0F313F6F +:106480000EF1BC936DFEE218AA4F4E0E7B83D837F7 +:10649000E137810F257B7C851EEAF3EF28A2F37696 +:1064A00058AA2F15F92F711E0FA4F3F8DDC97C1E11 +:1064B0007F29FC7C0E9F30077EEA22BC9E2F82CC77 +:1064C0005F178810A7624D57DED7791611B6103CBA +:1064D000E74DF11D859C00FA0A47D1973E5F255A8A +:1064E000253F263A0BEBF0A1CA12DEAF109CAA1D85 +:1064F000221C87B4C5D8AF467470BF457BBEB38736 +:106500000D7420F124C5BCA47031D6EFF3F5E94633 +:10651000FBE4944DC4B41E129E8A5784E3697EB78F +:10652000E5898023F3CADB9D7437259BCC7C1E3222 +:10653000DEAFDAA784EC04EF7166A7CF41F9EAFB7E +:106540004D4CAF34E0F8C14370DE48FC58E41E7790 +:1065500012E799263738769B43777BB8BD374CF9DD +:10656000EA7DF15E34AD70578CC7B9B620643DDE6C +:10657000A65BD742B1639C8BE1E5EF027E51F9A4A3 +:10658000B1BEBAC5985F242CC73BE5326A5FFBC138 +:10659000E8F0CB3AFABAD913DF0DF217CDCDF31DDF +:1065A000E06F9ED9257009BCD7D2AFEB7CE197ADE7 +:1065B00042A42BBE991E82EF428BF0E15C8F6EF7F6 +:1065C000666F4927079DE7BB0674F5C5797490523D +:1065D0007E48F1A5E96BA1476178C7B5AA72A925E4 +:1065E000281275FD2FD76FA9C724BF6793F50FC475 +:1065F000C7F900BF549B58E5288AB44B3589460734 +:10660000E1E5D10CFF1DC06F87DB6DC3FC365983FC +:10661000C204FED05DB0FCF76BAB08C650BB9E66F3 +:1066200013EF674FB36323F86155865CD70FE149D9 +:106630005C5E871570EC69DEC1F847C76B50D07897 +:1066400036139D0F18374E08C8FBEB634410F3A1B7 +:106650007AA1C87A218AD04F849522A92FC451F9F2 +:10666000033867585F70B21C9646E5E05742B4B6EF +:10667000416EBD6F88C30DBE9B6292F3BEDCFE917E +:10668000BE10744ABD81F510125982F1DFD35EE36A +:106690001B297639AF94B8C5CD8053CA6DB9450D65 +:1066A000844F9B3CFEC70147024801F88806971AB1 +:1066B00015DF3BE1B24709C72744E8278EE66C01A6 +:1066C000DF6BB233DF6394E57C1ACBD7C790273EEC +:1066D000B237D5FF34F04C68E7EA03F92C8788DA43 +:1066E000AECCA756C64BFD86E068D8678DFED72B8B +:1066F00072BF8714B7F239DA7117E9143AF93A43DD +:10670000C5B33D2ADE69E5DD3D729FBFF1F89EC746 +:10671000F74F1F753804C9AB830649BAADF13B99F1 +:106720008FD38963FB172ACBD8A3B8EE053FCA35B0 +:10673000F17803D30307019795EF3B8366EA776F00 +:10674000EEF1153DC1A7BB7987804D66A19CF8EAA3 +:1067500047BD03AF62FCF265812FF6837D4EEA5F91 +:10676000007C1CF25DC98A52395F17E4B26E76B1C3 +:10677000584F679F78A41CA6A51FABF33F4DDC7153 +:1067800034CD2BA39B6F06F042D0B9904D5B10E740 +:106790006E65FDA666971452781238A7FEA517C33A +:1067A000BB66D7E8C243C8B7C414A2FD90BF38196E +:1067B000DEA7EFEC1132537D8E3BF001D6133FA8DC +:1067C00043C1FC4EEFB8BE1069341D68F89F427497 +:1067D00083F1536E75B01CA1E1C15A2BED7F568435 +:1067E0003EDEF4B819CE19EA3995B1CC2FE63A233A +:1067F000796737B93F546EC2F79C9EB16F025E6FE6 +:106800007A2CDC6F49AAD90DBDC52D5C770BCFC59D +:10681000F8EB210A7712BFBB8F84A1EFB0F420E51B +:106820007572D0B926A514705D4202596D51643E4F +:106830005AFF25A9361E3FEE8294EB335D36DEF714 +:10684000F8552ABE2E138CBF233A5A4BBAD07AFB86 +:10685000AC098F30D31031F8561AE3C77D03A9BCB9 +:106860005B57CB08E8A58FD7161D7074839ED03A6E +:10687000125BE059234C31945AFED3E2C73AF98FA8 +:10688000EACBD7B8249E5B16E7421FCACA94F838F1 +:1068900030DD179749702C7ECFCADFFFEA7E2917BB +:1068A0007E9538FAE47EC8EDF7DB89D15C9E9E8345 +:1068B000E280037A43E6EA4C9BC8C33A1486AFE809 +:1068C000438841F3B5DCFF4150CEEFDDDE98CAC806 +:1068D0004C27EFDBECA0771CC086FEAC9F34B98A56 +:1068E00031EFF8D5934CEAE6A729549EBD6A8AC9D0 +:1068F0004DF9EC26396EF4F707A9EBF8FDB7E6522F +:10690000C8E5261AB40FCEBDDCA46633E889CE13E1 +:10691000ACBF7A40375E7F7EA6C46FCB1ABF487388 +:106920005F2C0755EF2A6339289AEF68FC46C3BBF2 +:10693000DFD3B858D7EF8583E5740DFF48AF627891 +:1069400007FFD3C47440EA2E9F67590F7C9BC6F89B +:106950002DEE96FC5EE58316AB7B05F4424B7DDBAA +:1069600028C079CEEA44534D1EC6F12EE171EE7770 +:106970000A1E6775E6815CF085552EA1B831DEFCF4 +:106980000CA6C7BFD805F0C572BFD38473C5F2A0EB +:106990000FA5C292985CCCF987294FEDBB645AF9D8 +:1069A0007BD64C39FF46A54361F94AF80A21CF7ED0 +:1069B000E309F833074B3ECA745C1B1BCA667C694B +:1069C00065BA7D7C486B6FC0EF719BA8C07A8A1F47 +:1069D000C89BC4F8728F45819C126F096424523E93 +:1069E000FE480ACB893355385F025F7A0ADAD7CC82 +:1069F0007D663FE8D16295786FB987F42BEAD73F7F +:106A000039701BE63122D85A02FC1875CFC771A322 +:106A1000DD577E0E085F90DB2DD2F8C75E85F9C783 +:106A2000B7E982D7FF754C4201F86EB7584A895FC3 +:106A3000D63A64FE67B1091B91BE7E46DA8BBE8EE4 +:106A4000490FB15C154B29F50FAA7A4CF0583CF36D +:106A50009F3B32255D7F6DEAA8B7507EB149E203C6 +:106A60002120DB69028E402DE8AAB6AD301578F101 +:106A700062427231E44E9A7C3ACEB5E356A947465B +:106A8000C327E0187D17FABDAEEA99988F87E6997B +:106A9000545BE207DFE8660B3D3A0F7C7CAA93F576 +:106AA000A7A43B4773B932A996ED553D5EB77A5915 +:106AB000CFAB104C773DFC3696235F54D4F9EF33BF +:106AC000335EF628F5A559299FE4B7290EAA37A702 +:106AD0004E7EB49CC659D32CF77F4D993B84FDD88C +:106AE000FD0FB3B4D7CC152C27AC29743F5A8EFABE +:106AF00005792CEFFF4A51F1BD5AF0BAD7C49B0477 +:106B0000EC196B6E2704477B8FFCEE9A1FCBF18646 +:106B10009B8F0BE84D1DC3E439A4B313497D6F7AF5 +:106B2000B2B4A76976A2198ED04649C76C473A3BE2 +:106B3000BDBF666F93F5D926D5DEA6AEEF8E4C9E0F +:106B400087C6F7CE56F4E0F682F8AB83F4E362B57D +:106B5000EAACAAD7072B249D9E0D49FB51719BD20D +:106B60008E7D3A2B5AC2B0BB054B85B42F0E957C57 +:106B7000A461AF79238FE718EBD3DB27CF0A512A23 +:106B8000ED4D1D097A7B93569EDCE04B03BD764CA0 +:106B9000B499F4F2829696674A797349B26F5FE6C8 +:106BA000E0081E6BF8FE62514A31F49ECBE1FD9F76 +:106BB000843C1FBECAF4BF82FE25375FDFC8931B2B +:106BC0002FF5A783AA5DD06693728FEDE69E1B1BFF +:106BD0003C7AF946F2A517D576037A0A07EC024407 +:106BE000AB41EC67FFDDFD997FBEABD235480BF6BC +:106BF00086FEEAD9D75F69599248E7F081E39E742F +:106C0000D80934FC7E31B627E3BD0EBF8FF2FAA25D +:106C1000E6252CFEFC49F917CFE7E34CDF5FF5EDE5 +:106C20002F2F5706795E365BCBED2CD756137DD0D0 +:106C3000FADE4515F5DB74B33D0CBBF259AB7315A9 +:106C4000E8FB48DCAC57BA13285D8EC0198C3F7D39 +:106C5000DAF52B90570E74752FA1799F2D6B1B02BF +:106C60003D70BD3DF005EAAB1C818C645AD74FCF17 +:106C7000B51E53C037FD5DD5F3D89FEFCFBFFC7C69 +:106C80004A14F9FD3C5BE0EFA0EB834A5BBC177A4A +:106C900091A58DFB0967771EE7980AAFFD56DF883F +:106CA0002F68FEFB1FCC286CA0F994241CBD751125 +:106CB000CEEF47520A2107687039A8AE6BAEC99F64 +:106CC0001C361BE66BCFA221AB5C651969993CDFD2 +:106CD00059CCE79DEA7C2DDE5EDF37DF068D9EEF27 +:106CE00052988ED6C712AA1745E829F081A919F83B +:106CF0006F37353433FD9539BCC0E7B7D4F9909E72 +:106D000023201F533F969FB7086F7FF0809E7649E0 +:106D10009F3D572A21E0DD6CE1653DBB5CF8D32146 +:106D200042F6C90A6460DE7F8DFBC7608F343D0C7C +:106D30007E97C6DF7D778A1772B01821E7FF43FB85 +:106D40002FC46A13EC2793543BD85C556E9A2C7C65 +:106D5000567C6FAA0858018F773EB7F9C0DFDF5124 +:106D6000F5A36922C8E5334488D35B4598DBFF5817 +:106D7000B471FEEDB882DEB504FF898FF4CD067ED6 +:106D8000EBE03D384BE2C76DDD801FBF785BE2C7AB +:106D90009AEE5784AF1355FC20BA1D89714A924A66 +:106DA0001A21778A31122F22F4D1D6D085E03731DB +:106DB000D95308785CFBADDC8F711FBB9ACD4A04B8 +:106DC0002F887138D368FDD7A95BD67A4E9E73871A +:106DD0007DF5DDBAD1BCC69A9DBC0FAD5E339F0B6D +:106DE000AF8EAE647BF8ABF5727F5E1DA6F0F9B690 +:106DF000F50B3A0FA9DF0DA90F8E81AA28CCCEF88A +:106E0000207DEF4B9F59E07BA5BDAC113B00FD7B86 +:106E1000431F637EC23A699718EF33B7DBF9DC6B27 +:106E2000B100EFC6E719ED0913C4EA2F60AF9F1058 +:106E30006557D88F35255D6C5F989DA5DA17FA8B5D +:106E4000FE6CBFBB72FB424596CEBE2060CD24FED9 +:106E5000F523089DB4AFAD230E0E3F4BEB3FBFD7DC +:106E6000C3D89EDF57EA3FFF9AE55F8C7E35B6B602 +:106E700059D8EFE37504E1BEC497EA1CC247387DD8 +:106E8000A2CEC5F94FEB5239FDACCECDE9E9BA5CE3 +:106E9000AEFFBCCECBF9C359BE5A8CB33246EE8797 +:106EA000F6FDA52A9EAE8C9172C6D2983B8E94D1E7 +:106EB0003C96F6964450D1D2348E547BB1704FCB71 +:106EC0002B48A9DC4C3A8C58FA20694634EFB92F8C +:106ED0000756E0D899FF7ADB04B093C1EF7D9C0C94 +:106EE00078545F50448048E6448E6F25BEFB49DDF0 +:106EF000509ECFC93A1FCFE7545D29A71F65F957A8 +:106F0000F3FA56292FF7A4F16EDAD66E413AD6A7D6 +:106F1000F07937CA274221DA8F75D64000F8B12EB2 +:106F2000CDE105FD8ECE9FF4EB9F08F0E7C05AD06F +:106F3000EDD4A43963BBC25E25DA1ABB52BB6B67C2 +:106F40002ADEB03B82C73F4CB7121ED52A6E9C7911 +:106F50004961389D792991E1F2A75D669ECFB923F9 +:106F6000B12C579CDB15C7F87F6E953D047A79D11B +:106F700016B4A753FEC5F4582FF8E68BE93DF8BCCC +:106F8000B4ABF4758AF64DD0FA273F979502FDE22F +:106F9000D4F69FA5EAED48A7925ABE7A1FFCEC43AF +:106FA00093977D84A2E5C46394FF5DAF54E63F9F51 +:106FB000ABFCB9C626E9441C336D047F3C152BE9B4 +:106FC000B0E368EC46F0C1E39AFC7F34B61972C5B1 +:106FD00090677A160BE3F9F73CE015BDBE25CF0D9F +:106FE0004881FE247A756378E52A1653ADCEFE807B +:106FF000F9BBFB46F2FD76CE3FFE73B7CE7FB7F30B +:10700000C73E9CB35BB73F7AEE05C05DD52F9E7A35 +:10701000E6D73DFE9572553B96C762BD9003871239 +:107020005DBDF8601CF3BF17ADDE63B598EFAF9D93 +:107030006CA77AE297771EDF83F4FEEAA23B29FD74 +:107040004B5612EF4FF9AF668C4BA3765B778B42B2 +:1070500090DD009A634F9A5FDEBA2F0E408F2A08A8 +:107060002596F4A072EF93850721A23CFD3B250CE9 +:107070003F41514BF34605A8FCEDA61E907BDBB3C8 +:10708000DC067D7840EFD2C3ECEF8D9227F2D67C00 +:10709000518CF1B6F7907205C9179FD513BC57F6FE +:1070A000FE7311EB67AA3D66F0BEA9AF0D175857E6 +:1070B000300DF26EB0CCC6F6782CDF4AF933BBB295 +:1070C000586ED96D0AF279159CEDF0625FCEF883A7 +:1070D0008F621FABA93DF4B7EAC260C235D0133F3F +:1070E000ECE3258C14BD1FBFAE14F0A9D9F5F0B8A0 +:1070F0001ED4EECC08E15568EA15CF9D1FC7FB4FA3 +:10710000DA2CF4A333BB1A926FA17EF7E5150FC6F4 +:10711000F9EC37B7F077C422F99D47D4F350B41592 +:10712000B07F8651DD0DFB8170A03C696FE2FE9E51 +:1071300022B25F8BF6D67B201F0F0A38BCD05FD7F8 +:10714000798269B0F769E72B9D93E63E20299B3A47 +:10715000AE6B32EB13577A3E6AF6406DBC476CD289 +:10716000BEA7D90BD7DBE479BF85F812F04F3BCF30 +:10717000E9BB5DFB0C8ED81B85EBD94217CDF3DF45 +:1071800049CE62BBC2157E5F93BF16A9FA57B17A8A +:107190003E4FEFDAB0AF8DD63B94E42CAC6FAEF03F +:1071A00049FBBDC5EBC6B991E1F0B9FBF039DB9104 +:1071B0008E35D0B9DB07ED6ACC249765E9E432C798 +:1071C000959DBB0DAA1E18CD871B54BD6FE9974531 +:1071D0004702E0B3A4CF60BFC4CBA6AA57E85C1DAA +:1071E000297B74C27D697C11D36D8310975CFF4B42 +:1071F00044B701E23B613A2F027DD1A8B501761D6B +:107200001FFD2F9EC61D75C1443C417E1BE75B746C +:107210007F827B31D6395AC419DAF94422DB998549 +:1072200033E98AD63B22F6D2E7CE0855BF1D716EF0 +:10723000E8BFB909AFF7BD6EE5725A3FF3C9CBADF0 +:107240006B9FBAAE9CBE81A97D747AFEC8BFB92C73 +:10725000A04F9AF70C948FB2984540EF7FD3F0F58A +:107260000AE77D07E21F404F5FD8584FDBABEA7952 +:107270007B17E4B1DD65B74DC66904DFB432FFDAD0 +:107280001B2FF5DEBD139359DF7C51E3C76566966E +:1072900067F7C6A8FDBBBBB8BE875DD68B5B3BC797 +:1072A000E77366EF8C1E3CFE8B4A78C06F31FE445C +:1072B00007EB816B26FAD262A1DF4E4C36F1F7FF65 +:1072C000610EB2BE516F673DB5538F2E5CFC5A3EC6 +:1072D000DAD50F607ED2C31C5A057F9DA833F338E0 +:1072E0007B07FB8EBA799E44806EE8B3C569269D04 +:1072F0007EA8E9C5A407B3BED651666E4639E9BD7E +:107300005A7EA3AAF7AAF111C1F88904D7A3EA7E8D +:107310001DB148BDF308F4DA8111FFC311E8A32CB5 +:107320004F06E3A16F0526C4594007D1E5DA3E6850 +:10733000E5EF5B497F051C697EFA789235894DDD62 +:10734000E1BFDBD027B016F43963EE9618C99F432E +:1073500031D0836F37FBD7010F1E8BF54EB8197CE8 +:10736000B95CEA71EFAB700E7E63E27D79A9FCD067 +:107370001CACEBA58E54A1B7BB6A78D0195F72978D +:1073800089E11C1DA7B3E1F5AE7C4E77DA0DE26D05 +:107390009D7603C075434B3F197F42F0C33A22717B +:1073A0003AEA3CF6E5F3FE97C2FF06B96299A919DD +:1073B000B243588DD7D9A0DA11832D569EEF06150A +:1073C000AEB7A9FC6B8308F7849E16DC1B23E37D14 +:1073D000547BC6863D03F8BB61E1EEC2F689C36605 +:1073E000C1E793C59B8A78A5B32A1F6A50A47C4144 +:1073F000E3C8389C96FFF6B89D3FF6D19DBB17C5F4 +:10740000ED5C0457C1769C0DB55D3BED316CBFB8AA +:107410003D5E83AB5C5F9547856BF33D3918679F95 +:1074200095ED5227AD1D6F5C8DEF3F9F25ED27C475 +:107430002AD661BC3DBD399E4AB3BF115C0BF6A094 +:10744000DD2E3BC34D83AB6677DBA0E25F679CD04C +:107450005DA68DD05B02361140F931575BBCDE9FD3 +:1074600077CC7F221E7CEB835A73D8F63D713E3376 +:10747000D5B8A1996ABCD065DBFD6236FB4D2F5BA8 +:10748000AFC60BCDAC32C64DF4C8F67DD5478FB72D +:10749000274DD171510CDF179C491A7C255D9F74D3 +:1074A0001AEC5D2F7CDA5F85EF8EB089F15651E1E1 +:1074B0002BE11F7CB46F48C67F84E2F4F1512F5852 +:1074C00024DC5E50ED5A9DE5AA3D2AA0DA81C4670E +:1074D000268E236B70791D7A3896770FB8B2095FC4 +:1074E000EE761639DAA8BCA24BF161C89735163A88 +:1074F000BF697F866407BA67439851E51ACDDE5AA3 +:107500009D179EC5E7E3B22B3B872B63F7D62899DF +:10751000348DBD5B7623A579319E899D925F074CA2 +:10752000E10435AF609E95F47F4725C16F4D6756E6 +:1075300092CC439E8D8EA761124C96F590232A5BC8 +:10754000CCBE9804E46D91761EE4432C67905EE80F +:10755000184AF24E65E29E5F0EA7F2854EA76319A8 +:10756000FB438D712D0B77AD6CCD2AB8B8FCE2EFE3 +:10757000CBF509A7CF0D7B44D95059774D6D89F8CC +:10758000E82A82936A7F9CBD5AE17388FEEA11E77C +:1075900051BE4611E06365C1693700AFCAA6949E2B +:1075A000841E53F640FD0AC847F3557BF6FC3DFBAD +:1075B000BFC17E687112652D4F7C09B96576549CF8 +:1075C0004CF9EAA879FD407CCCC2CDDFD98DF132EF +:1075D00052CEBE666FB3197435579DBF46BF223871 +:1075E0004A607DD7A830FF18FF1986788FC074E0F5 +:1075F0008F46C7D7AC91FDAB858CF3D0E22FE6D98F +:10760000E9BC26B81F8EB7313CCEAFEBC27689F30A +:1076100042C2E7FC7A099FEAAE325FBD49DA27AA87 +:1076200055FB6FF513D29E34CF22E3621117E2D3DC +:10763000CDBF4A850FE243F4E5A249CAAB5A3C08E4 +:10764000E2447C3A3F5E15AD0B71B1880FD1F7D3A0 +:10765000C787E8CB75762FD55E1662B86DB0869E6B +:10766000DA4AF334FF22568B8F89853CBBF4C3EB97 +:107670001E85DDB6D32EBFC0CA747C09F942F28FD5 +:107680000763982F583BE50B5F8E8BFAAD79B09F5F +:1076900097E518339DEF381F2A63E538DD4DCC2F71 +:1076A000D7CCB0A9767869CF5EF3B087E511F02525 +:1076B000E6E70FDA2FE24B98CF2D9DF19ABE1C071B +:1076C000B78BF1EAF9FE2DDDDDDA79CAF111113956 +:1076D00024D41D7CE87DFC5F82EF2D6A9CE62D6A38 +:1076E0007CA62687DCD2199F19EA0E3941835B7488 +:1076F000B9C62FB4F23589BEB4A43C8ECBDA9CADAA +:10770000933BD72486621067252AAECC4EBC455DDC +:107710008706D78F1519DF551EEBBFF75AD0E1DA70 +:10772000CC4CE0D52E287983E1EF97F0D6E0A0EDA0 +:107730007739ED21F4B5F25FF565BCD4E2498E15D9 +:107740004ABB5DDC20E96FDEA78EB32FDB644853B4 +:107750006365BCC6C763A5BD317E90DF06F989CEDF +:107760004C8E4328B7F9FF3852371FFAAE03707AB0 +:10777000355BDAA734B8959B141FE21FCA7F656793 +:107780007AA079307F1FB244E138938F553BA2B67F +:107790002F4290DC44E3DEF256F7A27B192FEB3543 +:1077A000FB7FD0C1F2AE4DFA732E878F84AFC09BA2 +:1077B000C44E7C94DF5B332387E5E61E66095FF1E8 +:1077C00040BC1C676C711AF424D882FF8E76633536 +:1077D0007F9089E17591BCBBC0DABCD1A3937717C8 +:1077E0005837221F8D679DF8118567D17873397CD2 +:1077F000BA023CFBE2FBF08CFA0FF6C75F1ECFAA81 +:107800007FB77D7790E6B9F0B70F27086A77D2D2B5 +:1078100094ECA571ABB62C4FF051FAA9259880F1E4 +:107820004E86CCA597F26F7B73944EBBAEA2F30746 +:107830007D6A093DF302C165C151BB17A6DB454F07 +:10784000DAC376B6572C607985F2ED32BF92EDAB94 +:107850008BF644C57D3DF170B29BE3E5833D65BC8D +:107860007298FDB2359BAD1C3756F3AED90BB458A8 +:10787000243A56607ED1FD318F0B84B78B5ACC658C +:10788000B62E17D7D38ED9C0E716EDBAEF0BD8773F +:1078900016EDBAFE139C4FD1F16315AA7D2EDACEF8 +:1078A0009B91A3DA79AF1657E37C25F878C3C04BD8 +:1078B0009A57B6DC7EC6E386A79E78E6059AEFC99E +:1078C000F7530AA1CA9DDEFC5A829217B1FB6A7671 +:1078D000F1D32D595D029780AF967EAEDA0723FB78 +:1078E00027F9B77B8FC2414D62AF4CABACE184E16D +:1078F000F4BDAA662BF3D1AAED9BB63E063CA77D4C +:10790000409C4BE5F6437FBE86F2953BACDDC6CB93 +:10791000E53895E4C8BE2D724BBB8AB64F0B9F3D30 +:107920006473E7CB72C81BDA7E55EED86F13F91774 +:10793000C3B5A465BFADCD79897D6B691FC7768856 +:10794000A7BEB6813E4FBEA48814CFC5FD2BB6BCE2 +:107950009680763FB47FA737C731FD9EDEAB707C43 +:10796000CA0FEDE377D814C6F7789148DFAF78DF18 +:107970001E1A8FFDFDE552C6FB4F2C8B25DEFF7ACC +:1079800079B28FE65F610D26BB3895E5158FDFA1D3 +:10799000E2A32FCDC4B252300DEB9ABB7E2AAFAB1F +:1079A000E2D773785DE251450CA6ADF892E4DB1D99 +:1079B00097D8CF2772245FFC64236D26ADEB133577 +:1079C0002E32F88E5995936F6779E50E75AD1CA927 +:1079D00043F92FD578DB65399DFE4D875EAE5DB4EA +:1079E00079652BF6E5B3DEBE14E8BBB4FEA00A2F22 +:1079F000057140E6B7C7A6C87D91F1D2DC8FCE866F +:107A00001294A37DAB95E3A675FD186EDAF77FA2FD +:107A10007E9FE61D0BF9FA93641967417FAD984785 +:107A20008D22FBD42CAB18EF26F8FF595D6727DDBC +:107A30006FBE47D2B94AF77F7B57F2939AD0C452B0 +:107A4000E607ADD6700ADA85F64F51981F44C7BDD8 +:107A5000AAF8B0D9AAE283B19EE66551F4F07C4958 +:107A6000FA0717A9FE9B796B7471B680D7B25215CD +:107A70004F6C91724F841E35BFCD7C95FEA3F731BC +:107A80009A1F3447F103ADBF587F69FF4284FE83DC +:107A90000CA72A923B60AFAC3A6AE7F3A9EA4133FC +:107AA000C7477DB4FA60F230C2F3532D1ABD1AF9FC +:107AB0006C27BD2E93F1B3153BB728C0D3687A3D30 +:107AC0005511522E49AF547E497AAD10FFBD7C56F8 +:107AD000DD8708DC8DF439FF327CF675C0352E0267 +:107AE000D72F455E17D8D385AB2C83ED7451F0D5D5 +:107AF000E01ACD2FE7E6B82FC92F055CF03A786A77 +:107B000070D4F095343CFE4E271E6BF8AA9D5F9D05 +:107B1000F81ABD6E233CA3EB1FC8113C1FFFF332C4 +:107B2000AEAD8AF8988C9F0EBED27310D3A78FD9B2 +:107B30008D687A057194917C282ADF12D5DE17951D +:107B4000F747B50F44E5171BDA57ED396893F16D28 +:107B500061433B7BED8DAC575D2C4784A45F60D7C0 +:107B600017B620F0A35707C7D9159BBD870B695FD0 +:107B70006F8C7FD6093ED3A0C59F08EF61D815C78B +:107B8000F5CA52E53AC93F4A54FE91DD57CA13255A +:107B90008E4ADE8706619276BF8BF8A289F58757F9 +:107BA0001D23B7C23E51D2EB7EE6FF637A99C3F63E +:107BB000024EDB918EF34AFC6FE875552FD85D1BA2 +:107BC0009C762FEE298DEB75E3C94BDDB32A71BC92 +:107BD000311DFAD618A791BFDC18C527AE771BEB6D +:107BE0004BC5CE6E906F4BF3AC2284F1D15EC7478C +:107BF000CD7DE53D9FEB4553A34BD21BE747AA70D4 +:107C0000ED6529B4800F8FB1BC7D107697D17F13BD +:107C10006E890F12BE257FF35A00DFD1CE440BDBF5 +:107C2000D5DDBD23F7087B0A31A165C7E790332670 +:107C30004C89633FD004D1F226FC45628AB4E7B692 +:107C40003F136F831FE7A6962F2CD8EF9B46285033 +:107C5000BB447B8C2BFD761AAFCC2CE36D87ABF04D +:107C60006F8891726CD98ADE3999547E13E2042FA1 +:107C7000E1C7AE52FDD00DA395F538CF321AA47EE0 +:107C8000A1B5C7381C6FDA579E5BE3FAAA71446A44 +:107C90003EA344B62F5F656FCF4A406A0DF7A5F447 +:107CA00064BFE21BFA52FDF84CF18AD4831437E426 +:107CB000EBF618D5CE77BF87E5FB000D09BB9DA875 +:107CC000CD12BCCED15E1BEE6FB53FE871C1CF1AAD +:107CD00097E7E3FEF39A1437FC55EDA385C1FE7ACE +:107CE000CC15EE03BE7BCC2BF5D40C2D6E2B3F9622 +:107CF000C7DF991B988579943595BD0E7C14DFD22A +:107D0000BA87C0DF2718F8F7DD122BC22CA77B1328 +:107D10004037B79BFD73FAD2FA3EAA35B37DECA388 +:107D20008A58F6FF6698A5FFEAD1BE6E5EF778F82E +:107D3000B38A10AFD83603E38C1F20F9D3F824D7C9 +:107D400010F8CF3B96C708CCAF2CC9350BF32F5B8F +:107D5000D197FD80E3EF967A574F8B7058A8FFB507 +:107D6000EA7833EBD794B23E539F6442BC652F87C9 +:107D7000B020CEFDA69642A6E7BEFD03E330AF4F8E +:107D8000EF12D7609FE6AC7E90F5B8B1E6BC2EC08E +:107D90003BEDBEE9E5E4CFAD753216F2C93A07A76F +:107DA000BFA973090BC954DBEA5239FF4C9D9BD321 +:107DB00096BA5C2EDF59E7E5FCAEBAA19CDF5DE721 +:107DC000E3FC9EBA524E5FA8F373791F2204D84594 +:107DD000683D417B91CCC7C8BCCF9624F35807AD12 +:107DE00087F5508450C2AED69BCA4D49DC8EEF1544 +:107DF000503B915CC456AF602CA5385A2F14713F8C +:107E0000D145ED378AF2BD2DEA3D071A1FF0D3F6B2 +:107E100083FA879375FB31D67CFA7ED887CF559845 +:107E2000385EF19C68DBFE3BCE3BD94E926E137BF5 +:107E30002007B5FDC2292077984DDE543BE27248F9 +:107E400061B0E8CEAF1F2F8E11161D9FB8AD36D191 +:107E500090EFF68B2387700C0D4F09FC067876ECBB +:107E6000CE33FFFE048DBFE1AE13F9A0739AC7961F +:107E700047F0DD65B15EBB1BF3102209F946AB6626 +:107E800097E3B841BEFFE646DC725C3BCEA3C76D0C +:107E9000AE3F3F01396885D905BA781FFB47F0FE30 +:107EA00040DDBFD98D924F66C4AA7EC6A647D84E84 +:107EB0005AA6F1D755637D9DE71501EF50DF4C19A8 +:107EC000B71E2BFD8FED15C7B7FF8EC66F5F66F32C +:107ED000AAACDBE71872F13CB4EF448F773C4DB0AD +:107EE0009D8AB467510B3BE65EF7B1F9C0DF7BEDCD +:107EF0007CAF40A1436226950756BDCAF7AE95DA1E +:107F0000C36C4F0C389C1C272782D6D3FAF1945AA5 +:107F1000793F5BB4F54A84BCA0DDAF8E1BE4B3218E +:107F20003E1B63027F66E71EE0FB9DA24971411F75 +:107F30002A57CBCBB5B8704BA0DF143AF02CB9F26E +:107F40009E6AD75C1977DFC9D706497D7F41A8EFC4 +:107F500046B3CEFFD1B77F711BE8AB939F4D5198CD +:107F60008F11DD3B40E727FBCD3E817A2ADF0F3EB4 +:107F700037BE38DC6709EF6F95F0C19F932ABCB01C +:107F80002B627F31FEB95516960335BAD0E3AD2D7D +:107F90002982D784EF3E93A40761463DA568F73F49 +:107FA00045AFB3DC928E347AD4E80DF33315F1F794 +:107FB0007D161D9FB3AE1A6D82BD5DA32BB6D70E85 +:107FC000C17D57F957BE5AE17B0FE54D85B679BAA9 +:107FD000F365B65A3E07F74B74E5BDB12F83711FA9 +:107FE00032549F0ABBA27AFF04F94C82E3DA85BEC1 +:107FF0006E4111699FA0EE5F438CBFFA39E8E7DB61 +:10800000E3F83C2C5BF1E39B0683AF3ED395F1F79D +:10801000B3093B385E6E76E38C3BDEA3F2C093314E +:108020005C9E9B1B1808BAFC4C71CF7A0E7279D0FB +:1080300073F360EAFF1714B21E165AC5DFBD77F45A +:10804000608E03146E1BE4456DDEB3738B56C0AFB8 +:108050003A7B356E2503D9020BB0BF0D336EB1C02C +:108060003EE9C1FC18CF84D403D47393E06483DD6C +:10807000E75378E2D91E26ED5F9FFDE6E91338E766 +:10808000BF7A2ADE05702E1C28CF6D91171A22DFC9 +:108090001730EA07639EFE3001FC5D936B17ED32EB +:1080A0004B39D62BFD14946739365A3E7DF999BF6A +:1080B000245C522FD825ED1C3FA41768717C8B9E41 +:1080C0009772ADB61F8B940BAC572FDAB73CF952B1 +:1080D0007171D04BC10FA2F5832BD523A2F587294F +:1080E000B946FDE14AE3F1B47C456D41D6C757215D +:1080F0003E2F302B17F179B543B26007ACA91DC5EF +:10810000A916AF57513B80DB2DACBD8ACB7FAACAE5 +:1081100051C22238DE7389AA3F9F0B657711DFF3C6 +:10812000FD45EB6892D4FF9CC5DD0576075DDC3626 +:10813000CB7395BFCF4A029E2DD8FB90CD44E54F1F +:10814000E6CAEF9C89D2776AB67DC476896AD1CABD +:10815000FB43FB261C7AFD779D8DBF73B9F9553E15 +:108160001DBF18F8BBA045F16DA1712AEDEE0720E7 +:10817000CF54BE36D91AD4ED67A38ABFD1F3BF332B +:10818000D76D88A3C27C058FD3F239E2D8C46FE3E0 +:10819000585E3BBB57DA6B3FD966DE04F96C41CBC6 +:1081A0008E1AB6A36C8B73C184FC9955CA8FDA38CA +:1081B0004DEAF79A72353B480BB73FB52D4EDCEBD5 +:1081C00091F3053FF84C31DE5F58ABF65B9B2BE536 +:1081D000D53C95DEB4F60B9C4D36E83B675E98DCEB +:1081E000ED6ECC6BCF9F12FA507948ED7776571C25 +:1081F000BF3BB060D77F4C7811FADAAE926E8A8EB0 +:10820000CF6CCFB5CAF984A4DFE6CC5E69DFA806DF +:108210009C092F4EA9768953CF746D96E776C800D6 +:108220009F53BB9E4D30E545F6719123B40A22B2AF +:1082300076FF27D61A084260B7EC9D18048F67FABC +:108240004EC33DBB901F7C4B6B6773F858D8D1EE83 +:108250004B0B2D6E518DA72179E28D00CD7FC90288 +:108260009B803C316BA07BDAAD380F5FB3F27E8828 +:108270005EEE47E0C79DF5565701FEB4C4E3657B4B +:10828000D2ACAB249F69F7C878FB8E3BE3D9FE5D87 +:10829000B54A113E5A9F7872BC8CDBE9D4CFBC6FD3 +:1082A000AD843DE3CD2C013DAF2A641601B41B1A09 +:1082B000CE99A8B347A713BEA0FFBFA9FB790CF7BF +:1082C000779C38370FE4B03F79478C82EF68ED4FE9 +:1082D0002BE11C8EF3D8618C33A89A14CE811FA099 +:1082E0006A671AFB014EABF780508EF95715C978B3 +:1082F00082CEF63F3F90037CAC9ADD92EBE275B9FB +:108300003E673DE3B978BE2F69FA5DBCEABF8B6179 +:108310007F3EFB1C29BF202199E3CBCFE64A3DE6F7 +:10832000F14EFA94F1123DEE7226E8E3257A284DDB +:10833000322E628B315EE2984D9607B71AD771DA0A +:10834000DAC4EFA204B718E3254EDB9A64BCC45626 +:1083500063F98284265E57BB55C8B891A7649C8F89 +:1083600070B6EEC6F80B9F8E61BA5858573B01FCA9 +:10837000F2B3B4D0BC3D54FED953FD38AE87F653AA +:10838000FA37820A9F030B894D20FE8ED252C4D148 +:108390002DFCCD23E96CB7BD4BCAB987E3D7B23EFC +:1083A000726EB35D015F3FD95DC68D9CFC43577E05 +:1083B0003FE3A4D2948EF92C24890F724A4034CD25 +:1083C00062FBF366BB40FCC4C2CD768E6738B9E56C +:1083D000EB7E7A7B37951BFCBCDABCB4FA2EFD240D +:1083E0009FEBD24FC2BD6B3FA94F57F67B6737E477 +:1083F0008B768FDC1FDA3FD6DB1EDB11C3F9CAEDAB +:10840000DD3742FF5AD812D36E66794CF5E710E398 +:1084100083DD6C8190F2CC67DBAC1C8F81E751C0AF +:108420000FAB547EA8FC62686A1BCB6923F83D80C1 +:1084300085A6C22EC3693D0B09AFA15FB65BBD3FE8 +:1084400062BC79C3CAFA1AFEA0BF9DDCDA93DF854D +:10845000189F246E9B847EB5FFC1711827939A0ADA +:10846000922EA1672DFC5D3CC7C72E5C79B589EDC6 +:10847000EE66A91F52EA53E4BDE721902BAA57C626 +:108480002DD6FB61163A4F709C4834FC6EEB27E505 +:108490009E6A357EAC72AB7CAFA38AE80D71D7952E +:1084A0002BA4FD5CFC46BED3B234269C80752DDD2A +:1084B0006266BF41A5AD25A73BCDFB867E92FF51ED +:1084C000FB00BEDBD9DFE67D84C77D732AEFFB0DA1 +:1084D000FDBAA97E8C8792B1AFD1ED97C6101F71FE +:1084E000EADB6D4AD0EFBFD6AE735D2DD27E735EF0 +:1084F000B4FEF42FD4E56FDB62785EC4EF393E2F13 +:108500007ABD345FC6CBCA67EC7CBFEF947A3FED8F +:1085100013E2A7C1BE98CF8D0FF07ADF99CC71B16D +:10852000F343C6FEE7DDAD43605738BFEB260BFAD9 +:10853000FFA89FBC8F58BD7238EFAF78CBCAFDA2A1 +:10854000F7AD486DD7497FDBE3E4FB4BA2E5198C1F +:10855000776A7B9C09F4D79E28F1F9D4689A27CED4 +:1085600081ED29457C97054215E1DB4297C4B7535D +:10857000892DE92EAEEF5B88FA76F51D1C11A696C3 +:10858000C04BF4413C48AD94E32A1DABD9EE8F3883 +:108590009221459C86ED978837011EC26E7048A5D2 +:1085A000233CC7027E5D89F1186F5B6CF05706545F +:1085B000F9B36A5B74BC88AC6FD4FAD36CBB69F155 +:1085C0002B447F954185FD07958DB72F009FA95CB2 +:1085D000FCE0ADC04B6DFE9516510A7ED0AE987989 +:1085E0001EED314417905BF5DFC994A92B39B2CE4B +:1085F0005FAADFFB553FB7261F8B261AA7AA515942 +:10860000CDE3AB7C82FDFEBA7E04061BCE99F6D18B +:108610006A7DD47ADBD5B8CB8EED4AB3FE7C895E19 +:10862000F7ABFDE4B9D4EE713F3002EDDF3073FCFF +:108630003DE5DFBA96E9DECCF1900DD8BC61724C15 +:10864000FCBB76412F8EEBAE300B4B1AC75BD822AA +:10865000F11B66A35D0571F3D0D390424F73DBA588 +:108660009E863CF434A4D0D3500E3D0D79E869C801 +:10867000434F431E7A1A52E86928FF44E5932F8836 +:10868000D0008B59E7BFC63DF5419138AE485C97A5 +:10869000C9E8CF3E698AF66773FCD609A575459A85 +:1086A000F2C3F15BE5DD03EFF6EBCEFB6C18EF8573 +:1086B000CCD000E8BDB5E0DF889756DF9FCA596F80 +:1086C00033C03D77B331DF7F9B319FB7CB982FD835 +:1086D0006BCC7B5F36E6FFB59F90DF2B8A71222E35 +:1086E000A86DF9272BA0560DEB1E38DA8FE3BE3BA1 +:1086F000B6CA78EE30F397B67ADA5FB9DFD20E47B2 +:10870000A3017FB5B8E01F7CEFE707DFF931E28313 +:1087100016C7B4C1DA91063EF9D1538ED598E74712 +:10872000AAFD544C77B07CA5C9E99A7EB5E47E8554 +:10873000DF25FBBA5F12F73F779876E37BEC78731F +:108740002E5CC5F279677EB562E238A9808FCF3D95 +:108750004D7E4B57487E03DFA3F5432EECBBCE6422 +:10876000987FBF50AC01BE039E4C32E4F35B7A1895 +:10877000DA0FDC9369A82F0CF737C6814DA9DF2FDC +:10878000EF59A8F350E5D5C9ABAF32F42BF70F374B +:10879000F45B7A9783F16BE97B66B6B356A002F17E +:1087A00026902B699D15E80B7FEF661977226A8D5D +:1087B000E77B8545045D4978A74D9E3F5A3C798506 +:1087C0004BF812699C33854D5BF1EECD823FFC691D +:1087D000880B7180CAE814D831A6E4043CFD096F07 +:1087E000D2ADBE09ECBFD9919D580FB9F3F021F677 +:1087F0005F6B78926E75C5623F9B9BA43E007B8E3B +:108800003929B2DFCD4D5D63FB3823EB8EEC6F1E53 +:10881000CBCFE70F9BA10E888AD14AD0363032FFEA +:1088200025EA79A1CDF763556F108D729C9FA8F54D +:108830005545AF3E9E445B77DA74E0AB9534BF5349 +:10884000852D39614A173ED69C7C0BC1C36A0F5CEB +:10885000D31FF6F8374A12E067FC729B95DFE3F905 +:10886000F7359B1E475CC8CAA64D36C83F0B2D2165 +:108870001BFBC19F6AB6212EE4BA279BB97CDE930D +:1088800065AC677E6A5D6C63F9F4D78A78CE13595C +:108890007F45B1B2DE85F8EEFE928F56C48A400B5A +:1088A000DB9D471CEA86F3F64985E322A64E196D47 +:1088B000ED0EF97D5B22DF239DA2B68FC6FB73AF61 +:1088C0009BA57D6C8ADCEFCBDD6F9D7CC1C3783EC0 +:1088D000E5C200D6BFA686FB497D37CFA8EF56D8A4 +:1088E000DC6F81AF8B3F9A593EEDB43F78AD2C0FD2 +:1088F000230E127197FE116603DE2D1A1367C0CB8B +:10890000E922C910B779B3E861C84F199F65683F7C +:108910006DCA80287E5014A9677E708D217E933E9B +:1089200060A08B6AB4E073A5D8D00EE5322EF406B1 +:10893000C3784BDFB82A45C6374E8AB487BEBC59C8 +:10894000FA3BAA77256E84FE5D619271CBD303B2A8 +:10895000BC668F2C270DB4F39E4417B3B427E8EF01 +:108960007B08D58F87EF03AED5AABDA93A57DA9910 +:10897000324A5A6D8E6E6A7C300D5DD3A4309C09EC +:10898000BE96AE4932BFAC88FB3BBA1645F0A46632 +:1089900097F1DE26C687BFB9E6B0B90CF4105D4F7B +:1089A000E7D48A1E98F778A5107A670DEC450988F8 +:1089B000BB8CF25BC37E043F2FEC47BA7DFA6B7F22 +:1089C000B7C43BD5CF331D15B475552D3B5EC1B82B +:1089D00053FD123FA3F148D30FE609C227F89B8845 +:1089E0006E43EECBC30577C7A07F68F0A9F149BC01 +:1089F0008BC6B31EC043C4D30A821F8D3B7F97E250 +:108A0000C53B58680F78F5001E46C187E1F9CFC213 +:108A10006D68941D48A3B33D0AD3D9E5E018BDBEE7 +:108A2000CBC1555BF7A40BD21EA2AD7B5E40E2C565 +:108A30003C5A17FCA637E3DD99AB802F929F741048 +:108A40003FD989EFFB25BCA68C37D25D27FEF825E0 +:108A5000DE6BF833F542328FF3CFE34F1BDB6FFF52 +:108A600059BCD1ECFE1A3F869DB18CFDD6771BEC2C +:108A70003C5A1A6DA73CD95F8D1F192C061BE24783 +:108A80002E730F293A7E443BBFA3CF8FB23FC8F36A +:108A9000A3F37C51CF852577E5323FD0F86B402D8D +:108AA0000FA8F63BED3B659477EBF22B1AB3D2DBC4 +:108AB00074F24560B93519E3A4D777E5B42CC6C57F +:108AC000F15265F5327EE5F83D29C943691F8F2FC4 +:108AD00097F12BC7EF1C948E3894E3CBC772FAD171 +:108AE00083F6E9FC0ED22F1C02F1E5D5BB53E47DE1 +:108AF00071B333793AEC713BBBF27DCEEE03A43C0B +:108B00005BB5FCB904845F552E97E7F157D981C452 +:108B1000016C9F6FDECA0671577301CE039DDD366F +:108B20006B00F438D86D291FA8CFE638BB4FF18D04 +:108B3000229C5BF2FCFF34C67533BEF7E95356BE88 +:108B40009F4BF53EF8517EA2844F5CCBF7F69464C0 +:108B5000D8A34EBF6766BBD802F3FE027CAFAA6EF5 +:108B60004F3AAE505414D1B94A7830CE4EF3198CE6 +:108B7000F96D4A67A7E3AA667E8F31DA4EDC094FAA +:108B8000D54EBC553DBFA10720851E20FA4A3D00A9 +:108B900079E80148A107A07CD13AA31CA7D9893361 +:108BA000CC5FF03BC69ADF48B8DA5E66FFF14376E9 +:108BB00037F4D05E16F5FD35D59FA4F96F34BF525A +:108BC000D943F3055EE829EB29BC8A6CCF7EA66801 +:108BD000FF52197C8668779F85DFF3E3BF21D20FB0 +:108BE0008B756B7E29F44F28D2F96B55FF9055B8E1 +:108BF000D2711F32A3C4F5D323D2DFCD7AD5F86268 +:108C0000A9A76AEB9AAFC60B68E93BAA5F69ADC931 +:108C10009B0ABE3CA1B11FDB9583C5227731CB15E2 +:108C2000CE5CC43B2F5562BD908B97629F91FF3005 +:108C30005EBE57DA7ABD9427547CD7DEDBD1DED90D +:108C400019D941B2A38E2EAFBDE010E53AFA1F2D1F +:108C5000120DF912479AA1FD5897C7507F5D6A3FE0 +:108C600043FDF5EE4243FEC6DC6186F63779471BCD +:108C7000F23F1A7ABDA1FD44DF44437E72E90C4302 +:108C8000FBA9FE3243FDB4E90B0CF53302B71BF22E +:108C9000B756DC6968FFE3C5F5867AEDDDA1BDD086 +:108CA00053EDB82FEAE0547B7FE86B93E0F7B247CF +:108CB00094C87B44C22EE3EE96BE91EDD4DB77964A +:108CC000ABF4FBC73CDFCCFCC1F23E2FE8AFB7F6FC +:108CD0003EA020A994F5F6D634D0CB88B803E7F1AE +:108CE00034EEDF077C38D542FC74C4D507AECA72B7 +:108CF000E13DC5AC9B393FFCC0B39994BF216FD611 +:108D0000CD16E28F23061E388FFA7D79B9323F598E +:108D1000B00875F3B63F4C0DD23C465C9BB9DA2BDC +:108D2000ED38DA7BD78CAF9D718B0E67384B170F00 +:108D300084759667E37E9D8BD3034487485F263A0C +:108D40002C27BEFB0AD121D2C3A48FA3FC8FA48FF2 +:108D5000237D9DF471A46F923E8EB495F471A4EFBF +:108D6000D44DE7F4DDBA00F7FB735D05A747EA16BB +:108D700073F9FB75B59C7E5017E472C01BF9ED03C7 +:108D8000547BCB1EE37BE39ADF5CF3938B97BC0EA3 +:108D9000C41F88364BE20947C4FF7D393D10069356 +:108DA000133AB93145F8F60C607F4A2F17FBCBD444 +:108DB000F28399817DE067EF7926675F45F969DF86 +:108DC000069683F4DF33493B7DF4B80F0D90727B38 +:108DD000739EEF00FA8D74C87B38231DF29ECD4838 +:108DE0004B6B03BF53F48D70836FEC57EFD534DCBE +:108DF00063E17B35CA0549AFA3BA09CE377CD36698 +:108E0000EE7C6C4FC75F46BABCA97CDEAAF5DABD22 +:108E10008D31175A4BC09746396D1C3FA5F1C1F5EE +:108E200056C9F7F6C79F28C13D13FABEC0F81ADF2E +:108E3000DBFC8D089B0A22FC6DA4A3CD0C3EA4E3B1 +:108E40007BCCB7940B6D66C8793ABEC87C4D9B4706 +:108E5000BC85C6298AF03D6D9E787FD256C4F53E0A +:108E600033E633DABB0EEFA5ACA779E0BCE9E4C387 +:108E70007611E4773055FE4CEDF9FB632E04384E45 +:108E800060941A27D0DB4607BF6CC7F10BF1D02BDB +:108E9000D1BF6BDB41ACAFE77FD0B8D48EC4278E97 +:108EA000A7D1F831DAC7C9F6618CFB10E28E10FF4A +:108EB000F2779A7702DEE17CDB03BB65CF9FC9774F +:108EC0003484CFC7709FACF24BE156F3AA9C21BA11 +:108ED0001573BE58ADBF262B60CE435CA3DDF56194 +:108EE0001CD373566FC8531355BDE27BF0C591D7A1 +:108EF000FDBF8E2F832C12AE762A877FE3FF75BCD1 +:108F0000E9192BE7DBF3EF120FFE7FC39FDB3AC4B7 +:108F1000B82ED4E4BBACC043E02F6517DCAF205FB4 +:108F20006E29B40165B47A479F4BD707FED661ED31 +:108F3000A2C3B391EAD9D4EF32EDB576DAFBD4DA35 +:108F4000F8D7A1FDE08BDBBFA69EFF4BC74A3C2AAA +:108F5000EDA7BD6BEE7316D23825428EF39A7ADEFA +:108F600095E4CD673D4638A55EE0A67FD8DEA7CA6A +:108F7000EBD75EB018F4851B543DA254487E5D1AB1 +:108F800015AF7043DE75AC4FDC10A54F44EB07D531 +:108F900079AA7EE0119E7FF25DA1A5A0474DFE4417 +:108FA000DC20F036CB6D768C288ABC23A4BD4B35F3 +:108FB00046A5E3B12260C121729D08727ABD087195 +:108FC000FA32DEA52A403C6C98CFFD9BE8C041F9FF +:108FD0008F20D251FE60DC8499883D2FB9AAA40F5E +:108FE000CA75EF61AC007DD798037F75E9DEC338A1 +:108FF00030C6CDFEE5030E79FF057485DFF9D0D6C6 +:109000007190CEC13E740E1EA2F3B80FADE7553A73 +:109010008F91FF039DC748B576E3DCC6B8BB1B72D2 +:10902000EB05C6BBD155420AE2E5E17463C1F3BD6D +:1090300000C7D712FB8EC1FEBE9678F518ACEFB50F +:10904000C414934CEDB6EFBB5FADE1FF8D79F2FE3A +:10905000C58DAE71FCBDEA38C9C7AAE3D2D5F77396 +:109060003E4C48253C39E7385860A6F424260A3D92 +:1090700031CA5EF7499D08629DA36A87F338D7D647 +:109080000EE3B4CA21D7212CC5267D1CF4265B60D3 +:1090900027E0FAC97A33C7EB9FD919E31D4FE37C68 +:1090A0001A7A3601EB22FD6737EAABCCEED55EC803 +:1090B00067AFC97860F1EDC174C41775BE37B57973 +:1090C000B2218E5EC38B2A875C8FA667A6F6F13D20 +:1090D00024E504F91E8E1667D4CB2EEFF969EFB3A1 +:1090E000409EE2F8F928B96548ACE427BDEC92AFA0 +:1090F0006AF0A37E9C178167F97DBC4D354E2FF435 +:1091000095DA54DF6B983FC9F5FC4EC2B95EF1CCDD +:10911000E70FA8718BA3C203D8FF5C0A7B0B4DF944 +:10912000D558F92ED801354E51E91BF833FABFEA6C +:109130003ED00BFAD9B9C3E7CDA0F3837D1481F7F4 +:10914000A07E888EA2E9F0589E1A4F54200ABE9342 +:10915000EF95713CD4B977CD5EA9670B837E314A18 +:10916000E43C027B50C9612B223E22F17DA992CFC3 +:1091700068743AF6B08CC3B2A79A845BC73F62DCCE +:10918000B1C2ADFB7E5C6E92211FEFED6168DF65C1 +:1091900068A6A13ED1D7DF50DFB5B4C890EFEEBFCF +:1091A000C6D03E657AB1219F16B8C1D0BE67C5242E +:1091B00043BEF7E25B0CED336A671BEA3DC185866F +:1091C0007AD2F418FE875C8A78CCA37BE726E86B1A +:1091D000CD4D967C127F59AB9618FA953AE7F13B44 +:1091E00070D94D3F378C2FDCD27E13A47F805F5F18 +:1091F000E26207A563538D761DB3AAC794B846BF34 +:109200008CADE9A9C69195B88CF69D9ECE52BE173D +:10921000D0F307E2CA32F2FF493C08F4BF341E54CF +:10922000098EE38DC603F85BF4EB84BF450F0FF89E +:109230005BF479F85BF4EDE16FD1D7C3DFA2AFBF88 +:10924000EAB0110F06B71AF1E0EA23463C3884F37E +:1092500020EBF2FB35ACCD8827DA7E0DFF74D225EA +:10926000F76B3AFD83FD221263BE3586E016169732 +:10927000DFB7C87EC9FDFBBFDDB79BF3D57354DDF7 +:10928000B72FC5EAC185FC0E259D533ABF6CF43952 +:109290007A8383F4D6EE17EBAD1AFF8AD65F35BB1F +:1092A00082165F1DFD8EAFA63F6BF1D4D1EFF77E26 +:1092B0006D6A8BC7F979CCD4C4EF209B530235F883 +:1092C000FE6D798B15F8DBBB57AE603C3FDBBBE333 +:1092D00018DE630FDE192FF97A9E1C6756430ADFEA +:1092E0007FD7D631ABA78CDFFA59BE7ADE7BDB069F +:1092F000C39FFBF37CA997C77B5D7C4FA02C4FA835 +:1093000071D0227D567EC4CF786E9994B7038E407B +:109310001DF4F706F57D78EDDEC015BC1BDC88F981 +:1093200077BE37B220FA3D97704C5FFACE636B92EE +:109330008CEFE4540BC37B238F2DCBD1EEF5CBFA0E +:10934000DBE5BBBF7DD709C3F9AFF9ADFB851C8653 +:10935000787BBCFB83B880014FBA0CE5F92DA98658 +:10936000FE8FA9EF130DDCE336B47B4C7DFFA530F7 +:109370009C6B687FD561AFB1BFFA2ECCE0D6A186D9 +:10938000FE6DDA7B3E0BE4BB26D01320EF5F7DC47D +:1093900067689751B96402E486DEAADC3DACADD4BF +:1093A000307EC6D95813E2DD0FE6CBB8FCE19FFA58 +:1093B0000DF5AC9B010F7E96CCF0D2F499CEDF79FF +:1093C00050F5179B90EFBCDB5659D83FAAC595477F +:1093D000DBFB3AED798E88FD501FEFADE91F9D71E3 +:1093E000DF16926BB22271DF9D788877FD65BC062F +:1093F000C3E1F19F2737EBF1F48FF9521F7C146F13 +:1094000091D1BAB638A43D10F16778675A58DAD2CC +:10941000F0FED3DB2A1EFBB37D6F011F1F55EF57F4 +:109420003D6EEB388A7375D640F99D992613FF2E51 +:109430001CE2F176EAF4CF0FF2A55D65D34099CE38 +:10944000EA22E723FE45BE2BA0AD23D5261AF9BD9F +:109450000C4B5B3FE0F78F57B7DC8FAA99B626AB72 +:109460008C670F59F9DDD06292830B092F9EFED9CC +:10947000C3CE6178F7DEC2F6A78FF2EDD3827D22EC +:10948000F7A132A818FB005B38F4ADC103CD977C7F +:10949000875CBBE7E3BEDDEAC7EFD88D378952E8CA +:1094A000755A7DE94049B7A13E26F62B6BBF0BA14B +:1094B000D5DF5A20EB730AE4FAC69ABF2DC3FAE649 +:1094C000C64BFD7694CFBF16FE81D96BACA219FABC +:1094D0004E90F49D648EFFE1BF32B7D457022A1F2D +:1094E000471EFEA6B2A091EFD279C0F2D67CFC3E18 +:1094F0008B027EEE5D01FBFF9C55C67673851C6F6B +:10950000BE53BEBB3A37FAFEA7E66FF9013D687C51 +:10951000817AEE0E1403BFD3BD177B4ED5FFCF0962 +:10952000B98FE76A6D7CAE6A78AFC36BD6BBFFA715 +:10953000EE4708F5DCEFA3C251A3330D9F34FAD1F7 +:10954000F009FB8BFDD3F617F7B1DA9D91FDFDDF36 +:10955000BA97D509B71FF0175CCE3F10CD57F84F1B +:109560006787B99C5F40E3339D7C4410FFC88AC085 +:109570004B8B7FA85071245AEE3A17CAE2F875DC7B +:109580000B33CB79723C9C768EBBE1DFD2F95F88DE +:109590007E62F1BB05C1460BBF8F100D5F8D7E2E25 +:1095A000179F711AF119E0B59A1F4DAD3F1D3CDFB1 +:1095B000CEF5BB62F81DDC3385AD05D03F34FF5AD4 +:1095C000B4BFEEDC328740DCDFB95DF1EC6F853F84 +:1095D000AB0BDE85AADF54003F57E739DA66F4CFDC +:1095E00045A75F65077E52D01D7E2EEBCD1C67E838 +:1095F00034B9E0BFBFC77980DF3548577C77A05EBC +:10960000D3FBC6D339877D23BE548AFDD6FC51D106 +:10961000EBE9A4B311F23EC7B9A08CDB3F572AFD9A +:10962000C3EF09E28234DFF18A8BED007AFCFC673C +:10963000FC5A932F14F2FE4CB9309CD71958358C34 +:10964000F339194113E2BBC5AD0ADBEFA76D16CBA9 +:1096500063DD88D39A3618FA5BB3BA4F39EAF91248 +:109660000D97BF17C87365AB49BE07B4F56E197F78 +:1096700038609BCF847789A6EF72A9EF972F2E824F +:109680007CE055E94F6B9F631187AD452A1E53FB64 +:1096900027AEF6F03BFB29EAF95138C0A5E2491B99 +:1096A000BF23DD199F552F7F276B8922B4782DE6C4 +:1096B0004B5AFE7C939A1F2BF34B97CB7C9BFA0E55 +:1096C000E956D5FE01F82105FC601FD8A6DA3F0057 +:1096D0003FA4801FCA41DFC883BE91077D230FFAD4 +:1096E000460AFA46F96CE14F876315FEAE313A3E01 +:1096F0000D7FD7181DBF85BF4B9F87BF4BDF1EFE59 +:109700002E7D3DFC5DFA7AF8BBF479F8BBF4EDE10F +:10971000EFD2E7C5D0EB2379D8D57C130DF9C9A4D6 +:10972000378CD19D0FF077E9C787BFCB305EE076ED +:1097300043FF5B45ADA17FD6E27A43FBDB6A15832D +:109740003FAC5C74303ECF59D795F1B04F96FF18BF +:10975000E8E7B6691DFC1EEC58F3DE05C08725D589 +:10976000B15EB9CF4DA572DF4D1C87BCC1EA4EE199 +:109770007708DF300BB9CF320E3A1A3FE1EF1963A9 +:10978000957E27A4F03B2185DF0929FC4E78E7115F +:109790007E27A4F03BA11C7E27A4F03B2185DF0996 +:1097A00029FC4E48E177420ABF13FAC1EF84147EC8 +:1097B0002794C3EF84147E27941F83DF89F2C3604C +:1097C000BB217CCE6F0A1E82AD6AC2FA632F23CD05 +:1097D000E952B6532154770C0C4E831F2E27AEACA2 +:1097E00028D14B7CBA7EF9B43144AA0135BEB040D1 +:1097F00074B0FCC77105B4FE4058CAE9F9DFA47122 +:109800007D845E243DE5BFEC6239B550BD07ADF502 +:109810002F842B2B2BD23E92BF74BBE8EF6BED98BD +:109820008FE9E6A1DDF3CE78D5CDE713D101DFD7FF +:10983000D37ED728101CCDEF258FB749B98AF8C23F +:1098400035D097060415FE5D616DDF3C2AFD0FD80B +:10985000266CA9E00B1B660DE27EB19DFDFE7E121B +:109860007118433DFCAEE4886DC2D74CFDFB0F94EC +:10987000FC684447CB01F0B5B2C689DC4F1BB76C1E +:109880007D3ADF5B2D138B7F8EDFDF1183148E4FCC +:10989000233EF432F890B6AECE738A500276D32BC4 +:1098A000BD17347250E258C4DF89BD82DF2BBA691C +:1098B000D0DB8675F3B60CE17199FFF70D2AFC1E1B +:1098C000DE8460FDDD501F6F0ADE7E08F17A81CDF7 +:1098D000C2EB7133EBE67B14DAFCFAFB7698E8F81E +:1098E0002075B4D584DF8682AAD255B7BF84E153F0 +:1098F000B01F855E2BDF4F99687159F95D84A8739D +:10990000313A6E253A2E72C95D17DA11A7BAE439D9 +:1099100079CE6AF241991A2777BED1CA712565CFEF +:10992000D9F99DB9C03A85E9588B6B39637A3D798D +:109930001AF5ABCE0AA59B1057DFA3B920C9CCE717 +:10994000E8CC81B8A7D028E34DDA1B9FE5FB8AE776 +:109950001B9FB3F1FB91AA7FA05C854FB91ADF541E +:10996000962FE560ED1D7E2D2E4C34497958B37B42 +:1099700094BD21E365A2E5E44A550E5ED068E5F8A2 +:10998000A405517272A51A7F54F90372F2D281AA0A +:109990009DC32BBCFFA4BFE0CE813A7F81D0DE63A4 +:1099A000567F87A0EC8D8353F9DC5F9C6DC2B9AF05 +:1099B000C90B33EBA53C207608FE5DA699F5257C06 +:1099C000AECE7CCEC7EF51BCA5CA01932EF464F88D +:1099D000FF493DF7A7223E93F6617C5B0C97DF7C45 +:1099E000218DD3691764BC26EECE004FDA9E171C7A +:1099F00067722E689772C85EA1C67F1AF1B450B81C +:109A0000C602EFFBFB948310B36E821C41E34D87CB +:109A10005CD115785FB6BC3BF03E2458DE8BC6FBAC +:109A2000F1D6C587503F7E8BF0064504EF0341CF4A +:109A300058AC6F42A9C2BF2F313DF0B605F44EFCC1 +:109A4000C0857E0155BFD3F03B9A1E66C5A97AAF8B +:109A500053DA5D3AF5614C128F53068F4D435CED3E +:109A60002CD8D67AF0B27C88738BCF93F5BFFFEDFC +:109A7000B1698D7DFEF7DF4BD0DE4988E8DB52BF50 +:109A8000879EEDE7F89B0FC6A6B09C9358A4B783BA +:109A90001E57E9B7BAB0D8E2A57E4BEEC94EF9BE63 +:109AA0007BB07368DF409FB3BAB4DDA1D0F9F2FE9A +:109AB00040E11B3314BF7F22B4C73CC3887BBC4545 +:109AC000CD1F1DF88F7F5B95C770E6FC9F079E9C9E +:109AD00086B88F7B976D8CE2837E1FC8212ECFC7FF +:109AE000FEA1CBE9F39E145FBC97F6714E9EF67B08 +:109AF000B2F21EC3F17B3E795A6FAFD0EC5D427477 +:109B0000B0BCBF76526AA1FAAE0DD3C3630BE53D7C +:109B100090AF557EFF3F75DF23D9E3FF6220FB65E1 +:109B20009A1CAC27E5763CBA85BE3FABCEC6F72F74 +:109B3000357D6AC3C2585EC7869FDB981F6A7AD597 +:109B40004C5BEB21FCCED6D181B2DD5F6A7F65052F +:109B50009FA37DE575CC5C28DF31AD2EF4FF03FCBF +:109B6000212ECFCBEF8704F2420A7EDFB4874BE28F +:109B7000FFFF01CAEF279700800000001F8B08003D +:109B800000000000000BDD597D7054D5153FEFBD7E +:109B9000DDB79BCD6EF276C9272161771320EA02EB +:109BA0006F3784519969D79450679AB18B4E31C100 +:109BB000105E48827C2490A44C0DAD369B2E600C28 +:109BC00050420DF2D14A37B1D08F099D808C322599 +:109BD000CEAC52BF5A2CA8D3A923362EC5224A3563 +:109BE0004B662AD2B1DA73EE7D2FBB2CC4FA57FF35 +:109BF0006866989B7BDFBDE79EF33BE7FCCEB9A18F +:109C0000C69BF08B0B00128FD82B8704802FE8E7C0 +:109C1000EB003325F83DB800EABDB0326407FCE93B +:109C2000075808D04CBFBA93FB4EAB782817E08C8E +:109C3000EA66E3F27E2118C5FDCDFD835BF3720079 +:109C400056F5FA174A78A4CDAF292A7E6F1AF5BCCB +:109C500054845B379C70CA9A0FA0211FDA477C247A +:109C6000345172AF2329B74C97FB9A1F3F55028C92 +:109C70009BA196EF8BF67A516E5D8EE2EF433945EC +:109C800026D86271D17E91ED2F3641580CF0310308 +:109C9000D765300501F7CB5D723482228B008232AA +:109CA0007E9F6185B015BF17A34409C7FD73B8FE39 +:109CB000327E17710EA6F82D21D4A75E565E02C221 +:109CC000C721BB099F46FBEC25F9386FEC175C02F6 +:109CD0001EA9966A5E22F99DBB3D5E8B076099AE18 +:109CE00037D45A45C80368B172BC3AF794CA85B4F0 +:109CF000EF3141A1798DCBCDE424760ACA10CEEBA9 +:109D0000517D0824ED6FDE7707B8A7E118C5B122B1 +:109D1000B99E3EBEB3FB64EE1D781E624199F46DA0 +:109D20005682B2CB97FCDEA4FB237DBE4495989E61 +:109D3000F5008B09AF159B3CF22A3BCD5F3177FADA +:109D4000C80E8E87710EF7C5685F8D17381EBB5120 +:109D50006F0FBF2F90227F15C94FB9BF86E207E76B +:109D600021D5C1E4ADEA77CA8217F15314A6E70DF5 +:109D700038E8F837C5A26695F431E1BD385FAE44E6 +:109D8000CD011687EE25058863F30E01FA70A6ED66 +:109D9000E0F769BD4E792EEDB7294BC81F89AD821A +:109DA00083F4AB7105653BCD777BC4D4F84EC7A96E +:109DB00051D7BB19F56BB96E7DB7D98DF33AD46B1A +:109DC00004E5AFDA72972C527C9BB8DDDDE46F8C32 +:109DD0004F4DC7F5EF1D197D908D7AB8FAAB37E37B +:109DE000BDF5AB9DCE08DAD5A1C76737E15A99C456 +:109DF000A54EE967764DE2BA077140912D4A88C9B0 +:109E0000C7B808531E360FE87935D028FB705C6D53 +:109E1000D2E419EC7E079357B78FEB99BC1F4040F3 +:109E200079F5072CD108E27071CFFD25CC8E81BD6C +:109E3000666076BC0ED2028E23C5A311170D153CA9 +:109E40001F0DFB7F424EC8A55164F718F98579179D +:109E5000B6A4E459F38E4608A2BD4D05A00A4232CD +:109E6000BF8C7C33F2CCC82F23DFEA205E07A5002D +:109E7000E61DE7D78298E483866C683F66BF31DED3 +:109E80004DBA1ECB757F203E8CA78CEF27F5FC3397 +:109E900078CB58277924F797BABFEAAB62B33A7CFC +:109EA000C9FDC6BD881B3B47FEB9D74EFBC5C9FDE2 +:109EB0009D6CBF785D7E37E9F95D2D0D6FCD433C1C +:109EC0003B8F0AAA05973A779E2A7E88F2FD48A61C +:109ED0004A517BB9F5D086422FF14AB42494C2731B +:109EE0002D9FFA599EAFFE7411CFF7D8CDF3BDBCAC +:109EF0005C3BA156A6C4EFE34766137FA2FD31E2A7 +:109F00008D778E9CFCF39D6EC68FE6D0DCA43DABB6 +:109F10007A07195FAED8E10C489C2F7B892F4D3A08 +:109F20000E4D5BB8DF00FD364B48FAB7718B10A4BD +:109F3000786CEA5A18953C493FA7F367BA3F0D3F42 +:109F40001BFEAC9BAC07BBAB53EBC1247E8A819F4D +:109F50006F5B01DE3731C2F19BD86106CAE38961CC +:109F60004714F0FECB9DCFFE6919EEFB50886E289A +:109F700094AEC70F2A387E343E88F8C1B49BE217EE +:109F80005753F8ECC19FEBF879473EFE1DF143872C +:109F9000451DC27B9BF0DFED68DFE5E1C7CD45B82D +:109FA000FE408BE0247D2FAB1E1E772383662FDAC5 +:109FB000D3D4EE57208BD6F5BA97168FC69C78E38C +:109FC00028DEB3A923230BE6D339A74B9987A6F93B +:109FD000C5EB78C0D0EB4247E38F01BF5FC8E0F12B +:109FE000D78AE78F313F074A4C8C272D01E207C8FB +:109FF00019394AFE69D8E80BF479D8BDAF08A8B77B +:10A00000CDCFFD5A56168F927EE86FC8C07519796C +:10A01000C48AE390C8EDF34A7CFCA96DE496F69BF4 +:10A02000E4D9641D6E8D5F217DCA00FD1FE0A3038E +:10A03000ED0BF8B9DD38873CBE1ECB0B4CCD0F7D48 +:10A04000E5AB2088FA9A31CE289ED2F9C19097CEFE +:10A0500013F5A2C8F2B12873E4D7140F451B6F0D96 +:10A06000501D976DD04BF6CC99C2DEA9F436F4BDE5 +:10A07000E0E1B84FE2814177BB2B6987A10F94A340 +:10A080001E786FC30FE60EF6E155177AD412C26B35 +:10A090002A3B2F7834964F894250876E6267BA7D8B +:10A0A00050DECFF2A221DFAD523F63E44533F10A27 +:10A0B000B0BCC88EA39E13FDA5D9C4DB1704AC07A2 +:10A0C000A47F4786C8E244B7E370376E461B7ED54F +:10A0D0006D65E36FBA31B1E6000C7717B0F96FBB6D +:10A0E000DD6C1CE92E67EBDFF6BB186E007107F51F +:10A0F0005DF536BDCF8B01CBBBB1AE5266AFB15E65 +:10A10000E3E2F158EF8A3BA8AE24364BAC9EBED7B3 +:10A11000CEEB4D2BCAA17C81AE523884575DB82B53 +:10A12000EEB8C3D897D22F8E297107D5DD4D667E44 +:10A130000F38E4E82181FA8FA57223AEAFE87AD315 +:10A140002CE0B85CF7EBCCD291607E0EEBBF587F71 +:10A150001071A805A44FC4A916A4D6EF4CFB32D9A0 +:10A160004DF87862650AEDF76730FCC7ECCB965086 +:10A17000DF35B6CF498C079B0475AC0BF582AD1665 +:10A18000F5100E3522F40A2C1E627211E9DB233021 +:10A190001E30D68F956B6BFDB9D40F1FFDE46DD6C5 +:10A1A0005764AAA4077C86F7623F7C2B099558FE6A +:10A1B00005218507A99F13707E50C6FA4604A205A3 +:10A1C00045EA9F3BF57A41EE67739DFF66CAEE3321 +:10A1D0008F92FC572518E27CF8179AB7BC6A064B99 +:10A1E0004A5CACD1E3A265F0BE3C8A87E67D12E30F +:10A1F000BD161CA96E1CA08F4881DB06BE9147715D +:10A20000D3BCBBFA8930D683120142C44725E6E0AD +:10A210003DC41B9706E7387B52FAA17351CBDDD4BE +:10A22000FF5C1A7CF6B58578EFC72772FD8CA7C353 +:10A2300022AB037DE5392C1EFAFCBCFE75C8DC4E52 +:10A24000D3A6C630B07E7E2968A4CFE0A32580F7D0 +:10A2500035B74566D3786930A396F87FB1B274B14B +:10A2600013E5AEFE99D34F75E85CABC4FCBFEEF5C9 +:10A270005943C40707FDBC0EB77E7EEAA082FD40AD +:10A280000BAE2978EF3F4732A361FCD4DA7DA244BC +:10A29000C2ABCD166DBF1FE362BD38BA8CFADE7556 +:10A2A00007064B80ED77E72B5FC26317313FDC1861 +:10A2B000FF6D3F7C8BC9F9483C7D4F1D9E6F6D7BC8 +:10A2C0003A8BE4ACDFF3E64205D73F99A51D22F9AE +:10A2D0001F0A8387150260DFE0BC10C32F7898E265 +:10A2E000609D0979DD77A3FCE1F93C5E6B5CA165BB +:10A2F000750B981FD5D4B84F1FD79C1098DF8CF9D9 +:10A300008A68B60CD4C7C64056C80F12C89467E115 +:10A3100088201EF224FB114D01D6B73EA7E7C7A542 +:10A32000ECFE12CA87B587F79650FC7FE0E0F3FA9F +:10A33000C3F7FF81F850FB8545A638D14C20AB7898 +:10A34000AE29CCFB5C5883C15998BCFF657F26C3FE +:10A350007FEDBE8AEBEA27F613EC9E0F4C7037D9DF +:10A360003D53BAE2A7BEE99C29D6427171AE3D4386 +:10A370000D33FFF17838D72F2DA1F5F02601A89FD6 +:10A3800038D7FFB4A38CF5EDC0E2778332C96BF9FF +:10A3900071D6E7B9F73E403CF04733E38D4CDFD947 +:10A3A000A084F3B6E31E167F861EDAF1E7597EAF6E +:10A3B000D3FBA456534C267FAF3B7E54A6BEB67546 +:10A3C00098F719EB879F978987369CD0FB0CFDDDAA +:10A3D000DA063CCF361CE7F6B71D3F2F37A5F6F956 +:10A3E000E5AE6D45D8A9BD7FD456BB07F735927F42 +:10A3F000EE449346266A7BB028E4AA0AE74B5382D0 +:10A40000F56F7DE56FB0F76BDB165D5EF91BDBBCAE +:10A410004C6FBF5948F1FB25BF99E1629C6F3BCE61 +:10A42000DFBD5733B2E6116F7659F9F8902D6B887E +:10A43000C6AB1925AC8E6956ED2AC55BB80AEF2468 +:10A440003CC71CECFD9ABBFE7BF3C1CB8C617AFC54 +:10A450008DDEC537897BCD7AD76714C7A37A7D8B0C +:10A46000B5D97AA9FF086EB09B688CB4D9593F1250 +:10A47000EC782383FAB4D18F6DA2904521913825D1 +:10A48000A23FA57C4D0EE0FDF980D98740CE80111A +:10A4900081F26CFCB9F72B48FFF1E2C418A049E641 +:10A4A0001E53DD628CA3AC80C2EBA52F5E41F992F6 +:10A4B000FB02AF1B4F9AA197EA2F9842702FAEC7AD +:10A4C00004DD9E6B6294E27A54883D45F243167B2C +:10A4D000AF07F5A90E701EB0978672E9FE90579AE5 +:10A4E000EBA77BCDF65E01F129D6DF43F2F4023B08 +:10A4F000E114D171148241E8C27B44E1C526E295A2 +:10A50000ED092BD07BBC78FADDAC4E46745C057748 +:10A510000E7B1BBDE013C316D4633B58A3B44F1688 +:10A520003382B44F187DF99A80639174E554367E76 +:10A530002F7A485023A872C3C445D6CF8E5D1BCE58 +:10A5400020FC17E56BB70510DFE9527CEE2E54793D +:10A55000BBA2BEA591BC9055ED71F318B762BC5774 +:10A56000F15F6174F3B52C179EAF4AD8CE13CEE3DA +:10A57000898B479E5D40A355A578A91A9562967967 +:10A5800074A83A182FE767BE607E86A07561520EE8 +:10A59000F4EF05CAA38D7A1D31E44D757EBCC06D04 +:10A5A00022BF812F91B50BEF8B8C4A0ABD9BAB4626 +:10A5B0004FBD45765659ED31298BCE99FF11B7A67F +:10A5C000DC7BB6D879F13656DAE00B6C5EF222DC31 +:10A5D0009F5FCBBEFE7D581BE0F5A056F79BE10FB9 +:10A5E000700721B5DE19F81B3CB071B20EBACF105E +:10A5F0006E6F63DD23BD2646B1CFB909BF1AE39B59 +:10A60000D4E760FFD25016AC0D5426E3223D0ED2A3 +:10A61000FD6DF815BE7FF6C56C0FF3E7DC5DC0EA93 +:10A62000F3936704E6CF668AB7039F0EF9C9CF118B +:10A63000C7128FE6FBFFF3A3C13B9A0DC7F95FC2B8 +:10A640003F361CE7DDC83F57C5906D8E87F1531F1D +:10A65000E1857CF122F14501B4339EF80ABCB48B4C +:10A66000CE2DA222CCFA3A314A7DE45AEBB7F6BF9E +:10A67000378D78023B0EB2AFAB384AEF9A4533DDE7 +:10A680003D26DAF708F0BECBC4F58974DDC6BF4BB2 +:10A690000297B3598A52BFF78119F901E7E19E3950 +:10A6A000ACAF643F388F848BA2D4BF50FF4D7D7B0D +:10A6B000C4C4D7C3ADC0F645A262785636FBCEFA05 +:10A6C00072CA7966773B309E9ABC77D36C26C7C82E +:10A6D000072DBBF31EC2491BE7FCF94CC0A9D78963 +:10A6E0007825F5D5DB7FE4008A4FC3FFD3418F7B0C +:10A6F000DDFF92EEFFE93EEEFFE9763166213FAEE7 +:10A70000591C4CF56382381471FBEE5FBFB9DF8AC8 +:10A71000F393068F3E2731FD0796060B6D3934E61D +:10A7200089D42F3DF3F953FB57132EDFB133DCA44B +:10A7300082FBF63723BE037E6EF740DD6CD6578D65 +:10A74000893A5ECB6D5C8E43647207D6DAA24073A1 +:10A750000FBF67609697ED47BFCDDE4772975A9956 +:10A76000DC14BFB17DE36B66E87EE3F724763A98AC +:10A770005F92DFBD0C3FF41BC30FFD557B8CF507CB +:10A7800089ACA573937132AEF71BE3BA5F26D7018C +:10A79000D769BF299195FAF7E2A9D63BF3B4772997 +:10A7A000DE8CEF03CE6021F54FE9F8EFE9F1F7CE4B +:10A7B000261C1CA242EF82A9FC66F829F37EF92030 +:10A7C000F52B93FE0AF338CC8C2C62F63F61F80728 +:10A7D000E392C54F9A3F61068F0FE3BD30337C7E15 +:10A7E0003FAFEBF15BA87E62DE95D33B738CF86DD7 +:10A7F0007E326E05A4D52E57328F8D7835786EAAAD +:10A800007C16BA90FFB26E96CF237A7D8778662940 +:10A81000CB6B7305EA23896A8185E5F3D942D2E7D8 +:10A820002BE4B58DCEE5E8BCF25EBE96C5E79C474D +:10A830000E88513FDD83F1B686FF1D1FA30BF17F0C +:10A8400057C77525F2D734DC575EA1FF7DEDE134A3 +:10A850001ED3FDD0A0EF7FF723CCB7F9493FAED48C +:10A86000DF510D0F5BCE131F363C6CE67EE9AA0E5E +:10A87000A6C9617C6EC801F7955CB2CB38B772EDA2 +:10A88000BF72A9CF9CF27C7C86F362A6CEA768B784 +:10A890004F0EDD5A514976C51D2AE277FADF12FBC9 +:10A8A0007F8AF3E81F77368D255137CAA9A8E0F5CE +:10A8B00071A7450B54307EA8BAEEFD77DAFFFE2C67 +:10A8C0007A3FC167A766903E3BF24295B4EFB1B2C2 +:10A8D0000999D65742FC4901E58FD57D584CFAAD10 +:10A8E000EC7A99F1FE4A83F7FF0B5EE93819F825F7 +:10A8F000ED9EC8A53EFA7F859B1137FF01F8EF3F1B +:10A90000E3801A00000000000000000000000000CA +:10A9100000000040000000000000000000000040B7 +:10A9200000000000000000000000002800000000FF +:10A930000000000000000010000000000000000007 +:10A9400000000040000000000000000000000010B7 +:10A9500000000000000000000000000800000000EF +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA70000000000000000000000090000010000036 +:10AA80000000000800009008001000000000000214 +:10AA90000000900000100000000000108000000086 +:10AAA0000000000000000000800000000000000026 +:10AAB0000000000080000000000000000000000016 +:10AAC000800000000000000000000000000093B8BB +:10AAD0000001000400000001000093C0000000001D +:10AAE00000000002000093C8000000000000000801 +:10AAF000000093CC0000000000000002000093D092 +:10AB00000000000000000008000097200040000046 +:10AB100000000040000093E00080000000000048BA +:10AB2000000094E00040000000000008000094F0E5 +:10AB300000400000000000180000A00000280000F5 +:10AB4000000000280000C0C0000800000000000154 +:10AB50000000C0C100080000000000010000C0C2E9 +:10AB600000080000000000010000200800100000A4 +:10AB7000000000100000200000000000000000089D +:10AB80008000000000000000000000000000000045 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40008000000000000000000000008000000004 +:10AC50000000000000000000800000000000000074 +:10AC60000000000080000000000000000000000064 +:10AC700080000000000000000000000080000000D4 +:10AC80000000000000000000800000000000000044 +:10AC90000000000080000000000000000000000034 +:10ACA00080000000000000000000000080000000A4 +:10ACB0000000000000000000800000000000000014 +:10ACC0000000000080000000000000000000000004 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD000000000000000000000000000080000000C3 +:10AD100000000000000000008000000000000000B3 +:10AD200000000000800000000000000000000000A3 +:10AD30000000000000000000000000008000000093 +:10AD40000000000000000000800000000000000083 +:10AD50000000000080000000000000000000000073 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA0000000000000000000800000000000000023 +:10ADB0000000000000000000000000000000000093 +:10ADC00000001EC80000000000000008000020086D +:10ADD0000010000000000010000020000000000033 +:10ADE00000000008800000000000000000000000DB +:10ADF00080000000000000000000000000000000D3 +:10AE00000000000000000000000000000000000042 +:10AE1000000000000000A080000800000000000109 +:10AE20000000A08100080000000000010000A082D6 +:10AE300000080000000000010000907000380000D1 +:10AE40000000003800001ED80000000000000002D2 +:10AE500000001EDA00000000000000028000000078 +:10AE60000000000000000000800000000000000062 +:10AE70000000000080000000000000000000000052 +:10AE800080000000000000000000000080000000C2 +:10AE90000000000000000000800000000000000032 +:10AEA0000000000080000000000000000000000022 +:10AEB0008000000000000000000000008000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF000000000000800000000000000000000000C1 +:10AF100080000000000000000000000000000000B1 +:10AF200000000000000000008000000000000000A1 +:10AF30000000000080000000000000000000000091 +:10AF40008000000000000000000000008000000001 +:10AF50000000000000000000800000000000000071 +:10AF60000000000080000000000000000000000061 +:10AF70000000C00000400000000000400000C800C9 +:10AF800000400000000000400000C82E004000000B +:10AF9000000000010000C8000040000200000001A5 +:10AFA0000000C80100400002000000000000800016 +:10AFB0000040000000000040800000000000000091 +:10AFC00000000000000080000008004000000004B5 +:10AFD0000000800400080040000000040000B000F1 +:10AFE00000280000000000280000B1400010000010 +:10AFF000000000100000B14A001000000000000135 +:10B000000000880000800000000000800000880030 +:10B01000000800800000000200008C0000400000DA +:10B020000000004000002008001000000000001098 +:10B030000000200000000000000000080000125086 +:10B04000000800000000000100001251000800008C +:10B050000000000100001252000800000000000182 +:10B0600000008E0000100004000000040000129098 +:10B070000030001800000010000012980030001886 +:10B08000000000028000000000000000000000003E +:10B0900080000000000000000000000080000000B0 +:10B0A0000000000000000000800000000000000020 +:10B0B0000000000080000000000000000000000010 +:10B0C0008000000000000000000000008000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B1000000000000000000008000000000000000BF +:10B1100000000000800000000000000000000000AF +:10B12000000000000000000000000000800000009F +:10B13000000000000000000080000000000000008F +:10B14000000000008000000000000000000000007F +:10B1500080000000000000000000000080000000EF +:10B1600000000000000000000000830800800000D4 +:10B17000000000800000000100000000000000004E +:10B180000000200800100000000000100000200057 +:10B19000000000000000000800008500000800001A +:10B1A000000000010000850100080000000000010F +:10B1B000000085020008000000000001000060009F +:10B1C000003800000000003880000000000000008F +:10B1D000000000000000845400080000000000028D +:10B1E0000000845600080000000000020000846493 +:10B1F00000100000000000048000000000000000BB +:10B2000000000000800000000000000000000000BE +:10B2100080000000000000000000000000000000AE +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B24000000000000000000000000000800000007E +:10B25000000000000000000080000000000000006E +:10B2600000000000000000000000000000000000DE +:10B2700080000000000000000000000080000000CE +:10B28000000000000000000080000000000000003E +:10B29000000000008000000000000000000000002E +:10B2A00080000000000000000000000000003000EE +:10B2B00000400000000000080000300800400000CE +:10B2C00000000020000032000020000000000020EC +:10B2D000000037A800000000000000088000000007 +:10B2E00000000000000000008000000000000000DE +:10B2F00000000000800000000000000000000000CE +:10B300000000A000000000000000200000003EC17E +:10B31000000000000000000100003EE0000000000E +:10B320000000000200001E0000E00008000000080D +:10B33000800000000000000000000000000040004D +:10B3400000080000000000010000400100080000AB +:10B35000000000010000404000080004000000025E +:10B3600000004060000800040000000480000000AD +:10B370000000000000000000000040000008000085 +:10B380000000000400004004000800000000000469 +:10B39000000040400000000000000008000040489D +:10B3A0000000000000000008000080000000000015 +:10B3B00000000010000050400001000400000001E7 +:10B3C00000005000000000000000002000005008B5 +:10B3D00000100000000000040000500C00100000ED +:10B3E00000000001000052C7000000000000000142 +:10B3F000000052C600000000000000010000300004 +:10B400000040002000000004000030040040002044 +:10B41000000000040000300800400020000000028E +:10B420000000300A00400020000000020000300C44 +:10B4300000400020000000010000300D004000200E +:10B44000000000010000300E00400020000000015C +:10B450000000301000400020000000040000301404 +:10B4600000400020000000040000301800400020D0 +:10B47000000000040000301C004000200000000418 +:10B48000000050000100008000080004000050048B +:10B4900001000080000800040000000A0000000015 +:10B4A0000000000000005068010000800000000162 +:10B4B0000000506901000080000000010000506C95 +:10B4C00001000080000000020000506E01000080BA +:10B4D0000000000200005070010000800000000425 +:10B4E000000050740100008000000004000050665D +:10B4F0000100008000000002000050640100008094 +:10B500000000000100005060010000800000000207 +:10B510000000506201000080000000020000505056 +:10B520000100008000000004000050540100008071 +:10B5300000000004000050580100008000000004DA +:10B540000000505C01000080000000040000507CFE +:10B5500001000080000000010000507D010000801B +:10B56000000000010000401800100000000000046E +:10B57000000040900010000000000004000040980F +:10B580000010000000000004000041100000000056 +:10B590000000000200004112000000000000000254 +:10B5A00000004114000000000000000200004116ED +:10B5B00000000000000000020000604000080000E1 +:10B5C00000000002000060420008000000000002CD +:10B5D0000000604400080000000000020000604617 +:10B5E0000008000000000002000060800008000069 +:10B5F00000000008000060000008000000000002D9 +:10B60000000060020008000000000001000060046B +:10B610000008000000000002000060C000080000F8 +:10B6200000000008000061000008000000000004A5 +:10B6300000006104000800000000000100006140FB +:10B640000008000000000002000061440008000043 +:10B65000000000020000614200080000000000023B +:10B66000000061800008000000000004000070007D +:10B670000008000000000002000070020008000046 +:10B68000000000010000700400080000000000023B +:10B69000000070400008000000000002000070443C +:10B6A00000080000000000020000704600080000D2 +:10B6B00000000002000076600008000000000008A2 +:10B6C000000070800008000000000002000070848C +:10B6D0000008000000000002000076A00008000042 +:10B6E0000000000800008040000800000000000189 +:10B6F00000008041000800000000000100008042BE +:10B700000008000000000001000080430008000065 +:10B71000000000010000800000080000000000029E +:10B72000000080020008000000000001000080040A +:10B730000008000000000002000080C000080000B7 +:10B7400000000002000080C20008000000000002AB +:10B75000000080C40008000000000002000080809B +:10B7600000080000000000010000808100080000C7 +:10B7700000000001000080820008000000000001BD +:10B7800000008083000800000000000100008084A9 +:10B790000008000000000001000080850008000093 +:10B7A0000000000100008086000800000000000189 +:10B7B00000006000000800000000000200006002BD +:10B7C0000008000000000001000060040008000004 +:10B7D000000000020000604200C0001800000002EB +:10B7E0000000604000C00018000000020000604C33 +:10B7F00000C00018000000080000604400C00018ED +:10B80000000000080000605700C0001800000001A0 +:10B810000000605400C000180000000200006056E4 +:10B8200000C0001800000001000066400008000091 +:10B83000000000080000668000080000000000080A +:10B84000000066C000080000000000088000000042 +:10B850000000000000000000800000000000000068 +:10B860000000000080000000000000000000000058 +:10B8700080000000000000000000000080000000C8 +:10B880000000000000000000800000000000000038 +:10B890000000000080000000000000000000000028 +:10B8A0008000000000000000000000008000000098 +:10B8B0000000000000000000800000000000000008 +:10B8C00000000000800000000000000000000000F8 +:10B8D0008000000000000000000000008000000068 +:10B8E00000000000000000008000000000000000D8 +:10B8F00000000000800000000000000000000000C8 +:10B900008000000000000000000000008000000037 +:10B9100000000000000000008000000000000000A7 +:10B920000000000080000000000000000000000097 +:10B930008000000000000000000000008000000007 +:10B940000000000000000000800000000000000077 +:10B950000000000080000000000000000000000067 +:10B9600080000000000000000000000080000000D7 +:10B970000000000000000000800000000000000047 +:10B980000000000080000000000000000000000037 +:10B9900080000000000000000000000080000000A7 +:10B9A0000000000000000000800000000000000017 +:10B9B0000000000080000000000000000000000007 +:10B9C0008000000000000000000000008000000077 +:10B9D00000000000000000008000000000000000E7 +:10B9E00000000000800000000000000000000000D7 +:10B9F0008000000000000000000000008000000047 +:10BA000000000000000000008000000000000000B6 +:10BA100000000000800000000000000000000000A6 +:10BA20008000000000000000000000008000000016 +:10BA30000000000000000000800000000000000086 +:10BA40000000000080000000000000000000000076 +:10BA500080000000000000000000000080000000E6 +:10BA60000000000000000000800000000000000056 +:10BA70000000000080000000000000000000000046 +:10BA800080000000000000000000000080000000B6 +:10BA90000000000000000000800000000000000026 +:10BAA0000000000080000000000000000000000016 +:10BAB0008000000000000000000000008000000086 +:10BAC00000000000000000008000000000000000F6 +:10BAD00000000000800000000000000000000000E6 +:10BAE0008000000000000000000000008000000056 +:10BAF00000000000000000008000000000000000C6 +:10BB00000000000000000000000000000000000035 +:10BB100080000000000000000000000000000000A5 +:08BB2000070C1E0000000000EC +:00000001FF --- linux-4.4.0.orig/firmware/bnx2x/bnx2x-e2-7.12.30.0.fw.ihex +++ linux-4.4.0/firmware/bnx2x/bnx2x-e2-7.12.30.0.fw.ihex @@ -0,0 +1,20088 @@ +:10000000000037E000000068000005D8000038500C +:100010000000556400003E300000009000009398FE +:100020000000F43000009430000000C40001886833 +:1000300000015EC800018930000000700002E80085 +:10004000000055CC0002E878000000AC00033E48F8 +:100050000001961400033EF80000120C0004D510B5 +:10006000000000040004E720021100B800000001B5 +:10007000020600DC000000010206005000000180C2 +:100080000306100001FF00000A0000010000000844 +:10009000020617FC003FE0010A000001000000100A +:1000A000030617FC020101FF0A000001000000081E +:1000B00003060200000304000A0000010000001013 +:1000C00003060200000304030A00000100002000F0 +:1000D0000406024C000000020A0000040000202078 +:1000E000030601E000040406030602440002040AB9 +:1000F000030602540002040C030602640002040E0C +:100100000A00000300002040030601E00004041080 +:1001100003060240000304140206026400000028E3 +:10012000020600DC000000000A00000100000008D8 +:10013000030601D8000204170A0000020000202074 +:10014000030601C000020419030601D00004041BC9 +:100150000A00000200002040030601C00002041F44 +:10016000030601D0000404210A0000020000204020 +:1001700003060220000204250306023000040427BF +:10018000020D004400000032030D004C0004042B5B +:10019000040D005C00000004030D008C0004042F1B +:1001A000030D00A000050433020D00B8000000029A +:1001B000030D00C000040438020D015C00000001C2 +:1001C000030D01640002043C020D02040000000162 +:1001D000030D020C0003043E030D02200002044143 +:1001E000040D028000000012030D030000180443F8 +:1001F000040D400000000A000A0000010000000891 +:10020000040D03600000000C030D0004000F045BEC +:10021000020D01140000000D020D01180000002D58 +:10022000020D01140000001D020D01180000003D28 +:10023000020D01140000004D020D01180000006DB8 +:10024000020D01140000005D020D01180000007D88 +:10025000031010000003046A021010500000000197 +:10026000071011000010046D081011400000000874 +:10027000071011600010047D081011A00000001884 +:10028000071018000200048D04104C00000001004B +:1002900002107004000000010A00000100000008C4 +:1002A000031040D40002068D021040280000001008 +:1002B000031040400002068F021040580028000042 +:1002C000021040840084924A02104058000000004E +:1002D0000210413800000001021041380000000106 +:1002E00002104138000000010210413800000001F6 +:1002F00002104138000000010210413800000001E6 +:1003000002104138000000010210413800000001D5 +:10031000030C200800030691030C201C0004069423 +:10032000030C203800040698040C20480000001D2F +:10033000020C20BC00000001040C20C00000003FA3 +:10034000030C21BC0003069C040C21C80000001C07 +:10035000030C22380004069F010C22480000000014 +:10036000010C224C00000000010C22500000000093 +:10037000010C225400000000010C22580000000073 +:10038000010C225C00000000010C22600000000053 +:10039000010C226400000000010C22680000000033 +:1003A000010C226C00000000010C22700000000013 +:1003B000010C227400000000010C227800000000F3 +:1003C000010C227C00000000030C22D8000406A3CC +:1003D0000A00000100000009020C2000000003E8F0 +:1003E0000A0000010000000A020C200000000003C7 +:1003F0000A0000010000000C020C200000000001B7 +:100400000A00000100001001020C2000000005DCC1 +:100410000A00000100001002020C2000000000048D +:100420000A00000100001004020C2000000000017E +:100430000A00000100002001020C2000000005DC81 +:100440000A00000100002002020C2000000000044D +:100450000A00000100002004020C2000000000013E +:10046000052004000070000006200780001006A789 +:1004700004220000000040000423240000001600B5 +:1004800003221170000806A9032211A8009006B1EA +:100490000422C000000000060322C0180004074127 +:1004A0000422C0280000000C0322C05800040745A5 +:1004B0000422C0680000000C0322C0980004074911 +:1004C0000422C0A80000000C0322C0D80004074D7D +:1004D0000422C0E80000000C0322C11800040751E8 +:1004E0000422C1280000000C0322C1580004075553 +:1004F0000422C1680000000C0322C19800040759BF +:100500000422C1A80000000C0322C1D80004075D2A +:100510000422C1E80000000C0322C2180004076195 +:100520000422C2280000000C0322C2580004076500 +:100530000422C2680000000C0322C298000407696C +:100540000422C2A80000000C0322C2D80004076DD8 +:100550000422C2E80000000C0322C3180004077143 +:100560000422C3280000000C0322C35800040775AE +:100570000422C3680000000C0322C398000407791A +:100580000422C3A80000000C0322C3D80004077D86 +:100590000422C3E80000000C0322C41800040781F1 +:1005A0000422C4280000000C0322C458000407855C +:1005B0000422C4680000000C0322C49800040789C8 +:1005C0000422C4A80000000C0322C4D80004078D34 +:1005D0000422C4E80000000C0322C518000407919F +:1005E0000422C5280000000C0322C558000407950A +:1005F0000422C5680000000C0322C5980004079976 +:100600000422C5A80000000C0322C5D80004079DE1 +:100610000422C5E80000000C0322C618000407A14C +:100620000422C6280000000C0322C658000407A5B7 +:100630000422C6680000000C0322C698000407A923 +:100640000422C6A80000000C0322C6D8000407AD8F +:100650000422C6E80000000C0322C718000407B1FA +:100660000422C7280000000C0322C758000407B565 +:100670000422C7680000000C0322C798000407B9D1 +:100680000422C7A80000000C0322C7D8000407BD3D +:100690000422C7E80000000C0322C818000407C1A8 +:1006A0000422C8280000000C0322C858000407C513 +:1006B0000422C8680000000C0322C898000407C97F +:1006C0000422C8A80000000C0322C8D8000407CDEB +:1006D0000422C8E80000000C0322C918000407D156 +:1006E0000422C9280000000C0322C958000407D5C1 +:1006F0000422C9680000000C0322C998000407D92D +:100700000422C9A80000000C0322C9D8000407DD98 +:100710000422C9E80000000C0322CA18000407E103 +:100720000422CA280000000C0322CA58000407E56E +:100730000422CA680000000C0322CA98000407E9DA +:100740000422CAA80000000C0322CAD8000407ED46 +:100750000422CAE80000000C0322CB18000407F1B1 +:100760000422CB280000000C0322CB58000407F51C +:100770000422CB680000000C0322CB98000407F988 +:100780000422CBA80000000C0322CBD8000407FDF4 +:100790000422CBE80000000C0322CC18000408015E +:1007A0000422CC280000000C0322CC5800040805C9 +:1007B0000422CC680000000C0322CC980004080935 +:1007C0000422CCA80000000C0322CCD80004080DA1 +:1007D0000422CCE80000000C0322CD18000408110C +:1007E0000422CD280000000C0322CD580004081577 +:1007F0000422CD680000000C0322CD9800040819E3 +:100800000422CDA80000000C0322CDD80004081D4E +:100810000422CDE80000000C0322CE1800040821B9 +:100820000422CE280000000C0322CE580004082524 +:100830000422CE680000000C0322CE980004082990 +:100840000422CEA80000000C0322CED80004082DFC +:100850000422CEE80000000C0322CF180004083167 +:100860000422CF280000000C0322CF5800040835D2 +:100870000422CF680000000C0322CF98000408393E +:100880000422CFA80000000C0322CFD80004083DAA +:100890000422CFE80000000C0322D0180004084115 +:1008A0000422D0280000000C0322D0580004084580 +:1008B0000422D0680000000C0322D09800040849EC +:1008C0000422D0A80000000C0322D0D80004084D58 +:1008D0000422D0E80000000C0322D11800040851C3 +:1008E0000422D1280000000C0322D158000408552E +:1008F0000422D1680000000C0322D198000408599A +:100900000422D1A80000000C0322D1D80004085D05 +:100910000422D1E80000000C0322D2180004086170 +:100920000422D2280000000C0322D25800040865DB +:100930000422D2680000000C0322D2980004086947 +:100940000422D2A80000000C0322D2D80004086DB3 +:100950000422D2E80000000C0322D318000408711E +:100960000422D3280000000C0322D3580004087589 +:100970000422D3680000000C0322D39800040879F5 +:100980000422D3A80000000C0322D3D80004087D61 +:100990000422D3E80000000C0322D41800040881CC +:1009A0000422D4280000000C0322D4580004088537 +:1009B0000422D4680000000C0322D49800040889A3 +:1009C0000422D4A80000000C0322D4D80004088D0F +:1009D0000422D4E80000000C0322D518000408917A +:1009E0000422D5280000000C0322D55800040895E5 +:1009F0000422D5680000000C0322D5980004089951 +:100A00000422D5A80000000C0322D5D80004089DBC +:100A10000422D5E80000000C0322D618000408A127 +:100A20000422D6280000000C0322D658000408A592 +:100A30000422D6680000000C0322D698000408A9FE +:100A40000422D6A80000000C0322D6D8000408AD6A +:100A50000422D6E80000000C0322D718000408B1D5 +:100A60000422D7280000000C0322D758000408B540 +:100A70000422D7680000000C0322D798000408B9AC +:100A80000422D7A80000000C0322D7D8000408BD18 +:100A90000422D7E80000000C0322D818000408C183 +:100AA0000422D8280000000C0322D858000408C5EE +:100AB0000422D8680000000C0322D898000408C95A +:100AC0000422D8A80000000C0322D8D8000408CDC6 +:100AD0000422D8E80000000C0322D918000408D131 +:100AE0000422D9280000000C0322D958000408D59C +:100AF0000422D9680000000C0322D998000408D908 +:100B00000422D9A80000000C0322D9D8000408DD73 +:100B10000422D9E80000000C0322DA18000408E1DE +:100B20000422DA280000000C0322DA58000408E549 +:100B30000422DA680000000C0322DA98000408E9B5 +:100B40000422DAA80000000C0322DAD8000408ED21 +:100B50000422DAE80000000C0322DB18000408F18C +:100B60000422DB280000000C0322DB58000408F5F7 +:100B70000422DB680000000C0322DB98000408F963 +:100B80000422DBA80000000C0322DBD8000408FDCF +:100B90000422DBE80000000C0322DC180004090139 +:100BA0000422DC280000000C0322DC5800040905A4 +:100BB0000422DC680000000C0322DC980004090910 +:100BC0000422DCA80000000C0322DCD80004090D7C +:100BD0000422DCE80000000C0322DD1800040911E7 +:100BE0000422DD280000000C0322DD580004091552 +:100BF0000422DD680000000C0322DD9800040919BE +:100C00000422DDA80000000C0322DDD80004091D29 +:100C10000422DDE80000000C0322DE180004092194 +:100C20000422DE280000000C0322DE5800040925FF +:100C30000422DE680000000C0322DE98000409296B +:100C40000422DEA80000000C0322DED80004092DD7 +:100C50000422DEE80000000C0322DF180004093142 +:100C60000422DF280000000C0322DF5800040935AD +:100C70000422DF680000000C0322DF980004093919 +:100C80000422DFA80000000C0322DFD80004093D85 +:100C90000422DFE80000000C0322E01800040941F0 +:100CA0000422E0280000000C0322E058000409455B +:100CB0000422E0680000000C0322E09800040949C7 +:100CC0000422E0A80000000C0322E0D80004094D33 +:100CD0000422E0E80000000C0322E118000409519E +:100CE0000422E1280000000C0322E1580004095509 +:100CF0000422E1680000000C0322E1980004095975 +:100D00000422E1A80000000C0322E1D80004095DE0 +:100D10000422E1E8000000060422F6400000002062 +:100D20000223800000000010022380400000001217 +:100D30000223808000000030022380C00000000EEB +:100D400002238BC0000000010A000002000000081E +:100D50000223838000086470022383C000000226FF +:100D60000A000002000000090223830000086470EA +:100D700002238340000002260A0000020000000A4D +:100D8000022383000000055F02238340000000016E +:100D90000A0000020000000C02238300000001573B +:100DA00002238340000000000A000002000010003F +:100DB00002238380000C96A8022383C0000003391D +:100DC0000A0000020000100102238300000C96A814 +:100DD00002238340000003390A00000200001002D1 +:100DE000022383000000080E02238340000000025B +:100DF0000A00000200001004022383000000020326 +:100E000002238340000000000A00000200002000CE +:100E100002238380000CF850022383C00000035299 +:100E20000A0000020000200102238300000CF85099 +:100E300002238340000003520A0000020000200247 +:100E4000022383000000084D0223834000000002BB +:100E50000A000002000020040223830000000213A5 +:100E600002238340000000000524000033580000E6 +:100E70000524800022710CD60624C670659809618D +:100E80000A0000010000000202231480000000009C +:100E90000A0000010000000402231480000000008A +:100EA0000A0000010000001102231480000000006D +:100EB0000A00000100000008022000BC000000320F +:100EC0000A00000400000010022000BC0000000224 +:100ED00002238840000000010120013800000000CA +:100EE00002238840000000000A00000100000011F9 +:100EF0000223148000000001012000000000000017 +:100F00000120000400000000012000080000000093 +:100F10000120000C00000000012000100000000073 +:100F2000012000140000000003200020001A0963C3 +:100F3000032000A40002097D02200224000000001A +:100F400002200234000000000220024C00000000D9 +:100F5000022002E40000FFFF08202000000008003B +:100F60000A000001000000100820400000000200FC +:100F700004221108000000020422340000000002D4 +:100F800004225900000000060422604000000030E6 +:100F90000422F300000000100422111000000002DF +:100FA0000422340800000002042259180000000640 +:100FB00004226100000000300422F3400000001011 +:100FC0000422111800000002042234100000000264 +:100FD0000422593000000006042261C000000030E5 +:100FE0000422F380000000100422112000000002FF +:100FF00004223418000000020422594800000006B0 +:1010000004226280000000300422F3C000000010BF +:1010100004221128000000020422342000000002F3 +:1010200004225960000000060422634000000030E2 +:101030000422F4000000001004221130000000021D +:10104000042234280000000204225978000000061F +:1010500004226400000000300422F440000000106C +:101060000422113800000002042234300000000283 +:101070000422599000000006042264C000000030E1 +:101080000422F4800000001004221140000000023D +:101090000422343800000002042259A8000000068F +:1010A00004226580000000300422F4C0000000101B +:1010B00004102400000000E00310201C0002097F3F +:1010C000021020C000000002031020040002098169 +:1010D00002170008000000020217002C00000003A5 +:1010E00002170038007C100403170044000609832F +:1010F000021700700000000C031700780002098935 +:10110000021701C408100000021703440000000188 +:10111000031704000008098B031704300008099323 +:10112000031704800004099B0A0000010000000866 +:101130000217003C000000040A000001000000103B +:101140000217003C00000008021700040000000F16 +:10115000021701EC00000002021701F40000000277 +:10116000021701EC00000002021701F40000000267 +:10117000021701EC00000002021701F40000000257 +:10118000021701EC00000002021701F40000000247 +:10119000021701EC00000002021701F40000000237 +:1011A000021701EC00000002021701F40000000227 +:1011B000021701EC00000002021701F40000000217 +:1011C000021701EC00000002021701F40000000207 +:1011D0000A0000010000000802130078000000323D +:1011E0000213003C000061A8041301080000000382 +:1011F000021301040000000002130134000000008B +:1012000004130108000000030213010400000000A1 +:101210000213013400000000041301080000000361 +:10122000021301040000000002130134000000005A +:101230000413010800000003021301040000000071 +:101240000213013400000000041301080000000331 +:10125000021301040000000002130134000000002A +:101260000413010800000003021301040000000041 +:101270000213013400000000041301080000000301 +:1012800002130104000000000213013400000000FA +:101290000413010800000003021301040000000011 +:1012A00002130134000000000A0000010000008861 +:1012B0000200A5F8000000000A000001000001087B +:1012C0000200A5F8000000010A00000100000090E3 +:1012D0000200AA84000000000A00000100000110C2 +:1012E0000200AA84000000010A0000010000009032 +:1012F0000200AA88000000000A000001000001109E +:101300000200AA88000000010200A2700000000094 +:101310000200A274000000000200A27000000000A1 +:101320000200A274000000000200A2700000000091 +:101330000200A274000000000200A2700000000081 +:101340000200A2740000000002016204000000001C +:101350000A000001000022000401602C00000007C8 +:10136000030100B40002099F030100CC000209A19F +:10137000020100DC0000000103010100000209A3DA +:101380000201007C003000000201008400000028FF +:101390000201008C00000000020101300000000486 +:1013A0000201032800000000020105540000003083 +:1013B000020160580000FFFF0201606000000000B1 +:1013C0000201607000000007020160B00000000030 +:1013D000020160C000000001020160C800000000BE +:1013E00002016208000000000401805400000003B4 +:1013F0000201807800000000020180E80000000780 +:10140000030180F8000209A50301810C000209A76D +:1014100002018124000000000A0000020000000810 +:10142000020180E400004688030180EC000209A963 +:101430000A00000100000080020180380000000660 +:101440000A000001000002000201803800000007CD +:101450000A000001000004000201803800000006BC +:101460000A00000100000800020180380000000EA0 +:101470000A00000400002000020180EC0000003897 +:1014800002018100000025E40201811400004BC824 +:1014900003018680000409AB020100C400000001C2 +:1014A000020100F800000001020100F0000000014C +:1014B00002010080003000000201008800000028C6 +:1014C000020100900000000002010134000000044D +:1014D0000201032C0000000002010564000000303E +:1014E0000201605C0000FFFF020160640000000078 +:1014F0000201607400000007020160B400000000F7 +:10150000020160C400000001020160CC0000000084 +:101510000201620C00000000040181A80000000428 +:10152000020181D0000000000201823400000007A7 +:1015300003018244000209AF03018258000209B18D +:101540000A00000200000008020182300000468804 +:1015500003018238000209B30A0000010000008084 +:101560000201818C000000060A0000010000020058 +:101570000201818C000000070A0000010000040045 +:101580000201818C000000060A0000010000080032 +:101590000201818C0000000E0A00000400002000FF +:1015A00002018238000000380201824C000025E46C +:1015B0000201826000004BC8030186E0000409B507 +:1015C000020100C800000001020100FC000000014F +:1015D000020100F4000000010401013800000011C4 +:1015E0000401017C00000011040101380000001119 +:1015F0000401017C00000011040101380000001109 +:101600000401017C000000110401013800000011F8 +:101610000401017C000000110215C0900000892621 +:101620000215C09C000000040A0000010000220016 +:101630000415C07000000007021400000000000143 +:101640000215C024000000000315C0EC000209B917 +:101650000315C100000209BB0A00000100002000C0 +:101660000315C1F4000809BD03140030000209C5C8 +:1016700002140040000000010900000200001008F0 +:1016800003140004000309C7021400440000FFFF14 +:101690000A0000040000200003140038000209CAF8 +:1016A00002140044000FFFFF0315C160000709CCBE +:1016B0000315C198000209D30900000100001008B9 +:1016C00004140004000000030A00000100002000D0 +:1016D0000415C160000000070214000000000000B3 +:1016E000020090C40000E000020090CC0000F30073 +:1016F000030090D4000209D5020090E000007300BE +:10170000030090E8000209D7020090F40000730083 +:10171000030090FC000209D9020091080000530068 +:10172000020091100000000403009128000709DB6B +:101730000300916C000609E2040091840000000699 +:101740000300919C000509E80300942C000309EDB7 +:101750000300942C000309F00300942C000309F308 +:101760000300942C000309F60300942C000309F9EC +:101770000300942C000309FC0300942C000309FFD0 +:101780000300942C00030A020304000400120A055B +:1017900002040054000000430204005C0000000644 +:1017A00002040070000000040304007800040A171B +:1017B00004040088000000050304009C00030A1BC9 +:1017C000040400A800000004030400B800110A1E6D +:1017D00001040124000000000104012800000000B1 +:1017E0000104012C00000000010401300000000091 +:1017F000020401340000000F030401D000020A2F8C +:101800000204022C000000040304025800040A3100 +:101810000A00000100002200040401AC00000007DF +:101820000312049400210A350212038800000064A8 +:1018300002120390000000080312039C00030A56E2 +:10184000031203BC00030A59021203D00000000077 +:101850000212036C00000001031201BC003C0A5C90 +:10186000031202B000020A980312032400020A9A2B +:10187000021205B400000001031205F800030A9CDF +:101880000212066C00000001021201B0000000010B +:10189000021207D800000000021207D80000000062 +:1018A000021207D800000000021207D80000000052 +:1018B000021207D800000000021207D80000000042 +:1018C000021207D800000000021207D80000000032 +:1018D000021030D8000000010710380000050A9FF0 +:1018E0000710392000050AA407103B0000050AA9CB +:1018F00007103C0000050AAE0316803000080AB34A +:1019000002168054000000020416807C00000005CE +:101910000316809000020ABB0316809C00020ABDD9 +:10192000021680AC00000054041680B800000005C8 +:10193000031680CC00080ABF021680F000000007E2 +:101940000316810000060AC70316812800030ACD8A +:101950000316814000060AD00316816800030AD6E8 +:10196000031681A800030AD9031681E800030ADCE4 +:10197000031681F800030ADF0316820800070AE253 +:101980000316823400020AE904168278000000047B +:101990000316828800060AEB021688102020010137 +:1019A000021688202020010102168838202001011B +:1019B00002168848202001010316E6BC00020AF145 +:1019C0000A000014000000080316806000070AF3F4 +:1019D000041680A400000002041680B0000000027B +:1019E000031680F400030AFA0316811800040AFDA6 +:1019F0000316813400030B010316815800040B0405 +:101A000003168174000D0B08031681B4000D0B152D +:101A1000021681F4000001FC02168204000000039B +:101A20000316823C000B0B2204168268000000049F +:101A30000216880C010101010316881400030B2D06 +:101A40000316882400050B300316883C00030B3571 +:101A50000316E6C400020B380316E6E800050B3A4D +:101A60000216E794000000010A00001C00001000AC +:101A70000316806000070B3F041680A400000002DC +:101A8000041680B000000002031680F400030B4629 +:101A90000316811800040B490316813400030B4D13 +:101AA0000316815800040B500216817800000001D3 +:101AB00002168184000000010216819000000001DE +:101AC000021681A400000004021681B80000000183 +:101AD000021681C400000001021681D0000000013E +:101AE000021681E400000004021681F4000001FCEB +:101AF00002168204000000030316823C00020B540D +:101B0000021682480092009202168250012401249B +:101B10000316825800040B56041682680000000465 +:101B20000216880C010101010316881400030B5AE8 +:101B30000316882400050B5D0316883C00030B6226 +:101B40000316E6E800020B650216E6F80000020440 +:101B50000A00000E00001020021681740000000030 +:101B60000316817C00020B670316818800020B6953 +:101B70000316819400040B6B021681B40000000070 +:101B8000031681BC00020B6F031681C800020B71A3 +:101B9000031681D400040B73021682440E490E49C9 +:101BA0000216824C009200920216825401240124F3 +:101BB0000316E6C400020B770316E6F000020B7969 +:101BC0000216E794000000010A00000E0000104019 +:101BD00002168174000000010316817C00020B7B59 +:101BE0000316818800020B7D0316819400040B7F8D +:101BF000021681B400000001031681BC00020B83B1 +:101C0000031681C800020B85031681D400040B87DC +:101C100002168244000000000216824C0FFF0FFFE4 +:101C200002168254000000000316E6C400020B8B6B +:101C30000316E6F000020B8D0216E7940000000088 +:101C40000A000007000020000316806000070B8FC9 +:101C5000031680A400020B96031680B000020B98B6 +:101C6000021681F4000001C0021682040000003F49 +:101C70000216823C0000007F0316E7BC00080B9AA6 +:101C80000A00000F00004020031680F400030BA29E +:101C90000316811800040BA50316813400030BA959 +:101CA0000316815800040BAC03168174000D0BB0B1 +:101CB000031681B4000D0BBD0316824000060BCA4B +:101CC00004168258000000060316827000020BD032 +:101CD0000216880C010101010316881400030BD2BF +:101CE0000316882400050BD50316883C00030BDA85 +:101CF0000316E6C400020BDD0216E79400000001A3 +:101D00000A00000D00004040031680F400030BDFC2 +:101D10000316811800040BE20316813400030BE65E +:101D20000316815800040BE903168174000D0BEDB6 +:101D3000031681B4000D0BFA03168240000E0C0747 +:101D40000216880C010101010316881400030C150A +:101D50000316882400050C180316883C00030C1D8C +:101D60000316E6C400020C200216E79400000000EF +:101D70000A00000D00008000031680F400030C220E +:101D80000316811800040C250316813400030C2966 +:101D90000316815800040C2C03168174000D0C30BE +:101DA000031681B4000D0C3D03168240000E0C4A50 +:101DB0000216880C010101200316881400030C5838 +:101DC0000316882400050C5B0316883C00030C6096 +:101DD0000316E6C400020C630216E794000000013B +:101DE000021680EC000000FF0304040800140C65D8 +:101DF000020404CC000000010305004400020C7939 +:101E00000305005000080C7B0305009000070C83BD +:101E1000030500B000020C8A030500C000020C8C10 +:101E2000030500D400020C8E02050114000000011D +:101E30000305011C00020C900205020400000001D1 +:101E40000305020C00020C920205021C0000002097 +:101E5000040502400000000A0405400000000D00D7 +:101E60000A000002000000080305022000020C9492 +:101E70000305028000200C960A00000200000010FA +:101E80000305022000020CB603050280001D0CB8F9 +:101E90000305000400100CD5020500E00000000E50 +:101EA000020500E40000002E020500E00000001E14 +:101EB000020500E40000003E020500E00000004EC4 +:101EC000020500E40000006E020500E00000005E74 +:101ED000020500E40000007E041640240000000219 +:101EE0000316403000030CE50216404400000020B9 +:101EF000021640700000001C02164208000000019B +:101F000002164210000000010216422000000001EB +:101F100002164228000000010216423000000001B3 +:101F20000216423800000001021642600000000262 +:101F30000A000001000000090216401C0003D090B6 +:101F40000A0000010000000A0216401C0000027195 +:101F50000A0000010000000C0216401C0000009C5A +:101F60000A000001000010010216401C0005B8D84C +:101F70000A000001000010020216401C000003A924 +:101F80000A000001000010040216401C000000EAD4 +:101F90000A000001000020010216401C0005B8D80C +:101FA0000A000001000020020216401C000003A9E4 +:101FB0000A000001000020040216401C000000EA94 +:101FC0000216400000000001021640D80000000187 +:101FD0000316400800030CE802164240000000000F +:101FE000021642480000000008164270000000027D +:101FF0000216425000000000021642580000000085 +:1020000008164280000000020304200800040CEBC4 +:102010000304201C00040CEF0304203800020CF31E +:10202000040420400000001E030420B800020CF548 +:10203000040420C00000005E0304223800040CF7F2 +:1020400001042248000000000104224C00000000AE +:10205000010422500000000001042254000000008E +:1020600001042258000000000104225C000000006E +:10207000010422600000000001042264000000004E +:1020800001042268000000000104226C000000002E +:10209000010422700000000001042274000000000E +:1020A00001042278000000000104227C00000000EE +:1020B000030422C000040CFB0A0000010000000918 +:1020C00002042000000000FA0A0000010000000ADB +:1020D00002042000000000010A0000010000000CC2 +:1020E00002042000000000000A00000100001001AE +:1020F00002042000000001770A0000010000100225 +:1021000002042000000000010A0000010000100489 +:1021100002042000000000000A000001000020016D +:1021200002042000000001770A00000100002002E4 +:1021300002042000000000010A0000010000200449 +:10214000020420000000000005180400008F0000B9 +:10215000061807B800090CFF041A00000000400030 +:10216000041B240000001600031A16C800020D010B +:10217000031A17E000900D03031A404000040D936A +:10218000041A405000000006031A406800020D9730 +:10219000031A52C000020D99031A800003F90D9B27 +:1021A000041A8FE400000007031B3D9000141194F3 +:1021B000021B800000000034021B80400000001859 +:1021C000021B80800000000C021B80C00000002069 +:1021D000021B8BC0000000010A0000030000000881 +:1021E000021A16D000000002021B838000086470EF +:1021F000021B83C0000002260A0000020000000942 +:10220000021B830000086470021B8340000002264A +:102210000A0000020000000A021B83000000055FA4 +:10222000021B8340000000010A0000020000000CB5 +:10223000021B830000000157021B834000000000C6 +:102240000A00000100000020021A16D4000000005D +:102250000A00000100000040021A16D4000000012C +:102260000A00000300001000021A16D0000000034C +:10227000021B8380000C96A8021B83C00000033958 +:102280000A00000200001001021B8300000C96A847 +:10229000021B8340000003390A0000020000100204 +:1022A000021B83000000080E021B83400000000296 +:1022B0000A00000200001004021B83000000020359 +:1022C000021B8340000000000A0000030000200001 +:1022D000021A16D000000004021B8380000CF85084 +:1022E000021B83C0000003520A000002000020010C +:1022F000021B8300000CF850021B834000000352B5 +:102300000A00000200002002021B83000000084DAA +:10231000021B8340000000020A00000200002004AB +:10232000021B830000000213021B83400000000018 +:102330000A00000100004000021A16D80000000048 +:102340000A00000100008000021A16D800000001F7 +:10235000041B944800000002051C000032C8000065 +:10236000051C8000373F0CB2051D000034501A8256 +:10237000051D8000356D2796051E0000206734F28C +:10238000061E4D00366011A80A0000010000000280 +:10239000021B1480000000000A000001000000047D +:1023A000021B1480000000000A0000010000001160 +:1023B000021B1480000000000A0000020000000858 +:1023C000021800BC00000032021B945C00000032C6 +:1023D0000A00000700000010021800BC0000000204 +:1023E000021B945C00000002021B884000000001F8 +:1023F000021B942C000000020118012800000000BC +:10240000021B884000000000021B942C000000000A +:10241000021B9440000000010A00000100000011AE +:10242000021B1480000000010118000000000000E1 +:10243000011800040000000001180008000000005E +:102440000118000C0000000001180010000000003E +:10245000011800140000000003180020001A11AA3F +:10246000031800A4000211C4021802240000000096 +:1024700002180234000000000218024C00000000A4 +:10248000021802E4000000FF081810000000040019 +:102490000A000001000000100818200000000600DB +:1024A000031A1A30000411C6041A3000000000128A +:1024B000041A309000000012041AD4C80000000270 +:1024C000041AD4D800000020041AD5D80000000255 +:1024D000031AD5F8000211CA041B440000000006CC +:1024E000031A1A40000411CC041A304800000012EC +:1024F000041A30D800000012041AD4D000000002E0 +:10250000041AD55800000020041AD5E0000000028B +:10251000031AD600000211D0041B44180000000664 +:10252000031A4000000211D2041A500000000002F9 +:10253000041A508000000012031A6140000211D4F6 +:10254000041AA00000000002041B44300000000236 +:10255000031A4008000211D6041A501000000002AD +:10256000041A50C800000012031A6148000211D872 +:10257000041AA00800000002041B443800000002F6 +:10258000031A4010000211DA041A50200000000261 +:10259000041A511000000012031A6150000211DCED +:1025A000041AA01000000002041B444000000002B6 +:1025B000031A4018000211DE041A50300000000215 +:1025C000041A515800000012031A6158000211E069 +:1025D000041AA01800000002041B44480000000276 +:1025E000031A4020000211E2041A504000000002C9 +:1025F000041A51A000000012031A6160000211E4E5 +:10260000041AA02000000002041B44500000000235 +:10261000031A4028000211E6041A5050000000027C +:10262000041A51E800000012031A6168000211E860 +:10263000041AA02800000002041B445800000002F5 +:10264000031A4030000211EA041A50600000000230 +:10265000041A523000000012031A6170000211ECDB +:10266000041AA03000000002041B446000000002B5 +:10267000031A4038000211EE041A507000000002E4 +:10268000041A527800000012031A6178000211F057 +:10269000041AA03800000002041B44680000000275 +:1026A000020E004C00000032030E0054000811F22C +:1026B000030E0094000711FA030E00B40002120189 +:1026C000020E00C400000000020E00CC0000000654 +:1026D000030E00D800021203020E014400000001A4 +:1026E000030E014C00021205020E0204000000015C +:1026F000030E020C00021207030E021C0004120952 +:10270000030E0280001B120D040E030000000012D5 +:10271000040E2000000008000A000001000000086C +:10272000040E02EC00000005030E00040011122844 +:10273000020E01100000000F020E01140000002F15 +:10274000020E01100000001F020E01140000003FE5 +:10275000020E01100000004F020E01140000006F75 +:10276000020E01100000005F020E01140000007F45 +:10277000020C100000000028030C4008000412396D +:10278000030C401C0004123D030C403800061241AB +:10279000040C40500000001F020C40CC000000015F +:1027A000040C40D00000003A030C41B80006124768 +:1027B000040C41D00000001A030C42380004124DF2 +:1027C000010C424800000000010C424C00000000D7 +:1027D000010C425000000000010C425400000000B7 +:1027E000010C425800000000010C425C0000000097 +:1027F000010C426000000000010C42640000000077 +:10280000010C426800000000010C426C0000000056 +:10281000010C427000000000010C42740000000036 +:10282000010C427800000000010C427C0000000016 +:10283000010C428000000000030C42D80004125139 +:102840000A00000100000009020C4000000003E83B +:102850000A0000010000000A020C40000000000312 +:102860000A0000010000000C020C40000000000102 +:102870000A00000100001001020C4000000005DC0D +:102880000A00000100001002020C400000000004D9 +:102890000A00000100001004020C400000000001CA +:1028A0000A00000100002001020C4000000005DCCD +:1028B0000A00000100002002020C40000000000499 +:1028C0000A00000100002004020C4000000000018A +:1028D0000530040000C30000063007E8000312556D +:1028E0000432000000004000043324000000160001 +:1028F00003322C7000901257033234C0000812E7E4 +:102900000432408000000010033240C0000212EF89 +:1029100003337400000412F1023380000000001A37 +:10292000023380400000004E02338080000000101F +:10293000023380C00000002002338BC00000000181 +:102940000A0000020000000802338380000864705F +:10295000023383C0000002260A00000200000009C2 +:1029600002338300000864700233834000000226B3 +:102970000A0000020000000A023383000000055F25 +:1029800002338340000000010A0000020000000C36 +:10299000023383000000015702338340000000002F +:1029A0000A0000020000100002338380000C96A889 +:1029B000023383C0000003390A0000020000100146 +:1029C00002338300000C96A80233834000000339D1 +:1029D0000A00000200001002023383000000080E0B +:1029E00002338340000000020A00000200001004CD +:1029F0000233830000000203023383400000000022 +:102A00000A0000020000200002338380000CF8500E +:102A1000023383C0000003520A00000200002001BC +:102A200002338300000CF85002338340000003524D +:102A30000A00000200002002023383000000084D5B +:102A400002338340000000020A000002000020045C +:102A500002338300000002130233834000000000B1 +:102A600005340000367E00000534800034390DA0A6 +:102A70000535000031581AAF05358000386127054B +:102A800005360000391A351E0536800034AC436522 +:102A9000053700001C8550900637416017D412F5A9 +:102AA0000A00000100000002023314800000000050 +:102AB0000A0000010000000402331480000000003E +:102AC0000A00000100000011023314800000000021 +:102AD0000A00000100000008023000BC00000032C3 +:102AE0000A00000400000010023000BC00000002D8 +:102AF000023388400000000101300138000000006E +:102B000002338840000000000A00000100000011AC +:102B100002331480000000010130000000000000BA +:102B20000130000400000000013000080000000037 +:102B30000130000C00000000013000100000000017 +:102B4000013000140000000003300020001A12F7CA +:102B5000033000A400021311023002240000000020 +:102B600002300234000000000230024C000000007D +:102B7000023002E40000FFFF0830200000000800DF +:102B80000A000001000000100830400000000200B0 +:102B900004322C400000000203322C5000041313B6 +:102BA000043293C0000000020432940000000010C0 +:102BB0000432C000000000200432C10000000020E8 +:102BC0000432C200000000200432C30000000020D4 +:102BD0000432C400000000200432C50000000020C0 +:102BE0000432C600000000200432C70000000020AC +:102BF0000432C800000000200432C9000000002098 +:102C00000432CA00000000200432CB000000002083 +:102C10000432CC00000000200432CD00000000206F +:102C20000432CE00000000200432CF00000000205B +:102C30000432DB800000000204322C480000000255 +:102C400003322C6000041317043293C80000000202 +:102C500004329440000000100432C08000000020C4 +:102C60000432C180000000200432C2800000002035 +:102C70000432C380000000200432C4800000002021 +:102C80000432C580000000200432C680000000200D +:102C90000432C780000000200432C88000000020F9 +:102CA0000432C980000000200432CA8000000020E5 +:102CB0000432CB80000000200432CC8000000020D1 +:102CC0000432CD80000000200432CE8000000020BD +:102CD0000432CF80000000200432DB8800000002B4 +:102CE000043210100000000204322C000000000228 +:102CF000043210200000000204322C080000000200 +:102D0000043210300000000204322C1000000002D7 +:102D1000043210400000000204322C1800000002AF +:102D2000043210500000000204322C200000000287 +:102D3000043210600000000204322C28000000025F +:102D4000043210700000000204322C300000000237 +:102D5000043210800000000204322C38000000020F +:102D60000202005800000032030200600008131B3A +:102D7000030200A0000B1323020200D00000000792 +:102D8000030200DC0003132E030200F000021331E3 +:102D9000020200FC0000000C020201200000000002 +:102DA0000202013400000002020201B00000000132 +:102DB0000202020C0000000103020214000213339D +:102DC00002020404000000010302040C0002133597 +:102DD0000302041C00041337030204800020133B89 +:102DE0000402050000000012040280000000200020 +:102DF000030200040014135B02020108000000C873 +:102E00000202011800000002020201C400000000DA +:102E1000020201CC00000000020201D40000000206 +:102E2000020201DC00000002020201E4000000FFD7 +:102E3000020201EC000000FF0202010C000000C8C9 +:102E40000202011C00000002020201C80000000092 +:102E5000020201D000000000020201D800000002BE +:102E6000020201E000000002020201E8000000FF8F +:102E7000020201F0000000FF02020108000000C889 +:102E80000202011800000002020201C4000000005A +:102E9000020201CC00000000020201D40000000286 +:102EA000020201DC00000002020201E4000000FF57 +:102EB000020201EC000000FF0202010C000000C849 +:102EC0000202011C00000002020201C80000000012 +:102ED000020201D000000000020201D8000000023E +:102EE000020201E000000002020201E8000000FF0F +:102EF000020201F0000000FF02020108000000C809 +:102F00000202011800000002020201C400000000D9 +:102F1000020201CC00000000020201D40000000205 +:102F2000020201DC00000002020201E4000000FFD6 +:102F3000020201EC000000FF0202010C000000C8C8 +:102F40000202011C00000002020201C80000000091 +:102F5000020201D000000000020201D800000002BD +:102F6000020201E000000002020201E8000000FF8E +:102F7000020201F0000000FF02020108000000C888 +:102F80000202011800000002020201C40000000059 +:102F9000020201CC00000000020201D40000000285 +:102FA000020201DC00000002020201E4000000FF56 +:102FB000020201EC000000FF0202010C000000C848 +:102FC0000202011C00000002020201C80000000011 +:102FD000020201D000000000020201D8000000023D +:102FE000020201E000000002020201E8000000FF0E +:102FF000020201F0000000FF02161000000000288D +:10300000031660080003136F0316601C000413729C +:103010000316603800121376041660800000000E5C +:10302000021660B800000001041660BC0000000831 +:10303000021660DC00000001041660E000000004DD +:10304000021660F000000001041660F40000003178 +:10305000031661B800021388041661C0000000075F +:10306000031661DC0006138A041661F400000011E7 +:103070000316623800041390011662480000000035 +:103080000116624C000000000116625000000000B2 +:103090000116625400000000011662580000000092 +:1030A0000116625C00000000011662600000000072 +:1030B0000116626400000000011662680000000052 +:1030C0000116626C00000000011662700000000032 +:1030D0000116627400000000011662780000000012 +:1030E0000116627C00000000011662D4000000009E +:1030F000031662D8000413940A00000100000009BE +:1031000002166000000003E80A0000010000000A47 +:1031100002166000000000030A0000010000000C1D +:1031200002166000000000010A000001000010010A +:1031300002166000000005DC0A0000010000100219 +:1031400002166000000000040A00000100001004E4 +:1031500002166000000000010A00000100002001CA +:1031600002166000000005DC0A00000100002002D9 +:1031700002166000000000040A00000100002004A4 +:1031800002166000000000010528040000AB0000EA +:10319000062807C800071398042A00000000400012 +:1031A000042B240000001600032A30000002139AAA +:1031B000032A40000010139C032A8408000813AC63 +:1031C000032A9348000413B4032A9668000813B82E +:1031D000032A98B8000213C0032A9950009013C222 +:1031E000032B4D9000141452022B800000000000AD +:1031F000022B804000000018022B80800000000C91 +:10320000022B80C000000066022B8BC00000000172 +:103210000A00000300000008022A9CA80000000227 +:10322000022B838000086470022B83C000000226FA +:103230000A00000200000009022B830000086470ED +:10324000022B8340000002260A0000020000000A50 +:10325000022B83000000055F022B83400000000169 +:103260000A0000020000000C022B8300000001573E +:10327000022B8340000000000A0000030000002031 +:10328000022A9CAC00000000032AC4E0000414667B +:10329000032AC5000002146A0A0000020000004070 +:1032A000022A9CAC00000001032AC4E0000A146C4E +:1032B0000A00000300001000022A9CA8000000037E +:1032C000022B8380000C96A8022B83C000000339D8 +:1032D0000A00000200001001022B8300000C96A8D7 +:1032E000022B8340000003390A0000020000100294 +:1032F000022B83000000080E022B83400000000216 +:103300000A00000200001004022B830000000203E8 +:10331000022B8340000000000A0000030000200090 +:10332000022A9CA800000004022B8380000CF850A5 +:10333000022B83C0000003520A000002000020019B +:10334000022B8300000CF850022B83400000035234 +:103350000A00000200002002022B83000000084D3A +:10336000022B8340000000020A000002000020043B +:10337000022B830000000213022B83400000000098 +:103380000A00000100004000022A9CB0000000007A +:103390000A00000100008000022A9CB00000000129 +:1033A000042B944800000002052C000035FF0000AB +:1033B000052C80003A950D80052D00002F111C264C +:1033C000052D80003C3927EB052E00003FEE36FA34 +:1033D000052E80003C5646F6052F000034DD560CC5 +:1033E000052F800009026344062F93900D8E1476FA +:1033F0000A00000100000002022B148000000000FF +:103400000A00000100000004022B148000000000EC +:103410000A00000100000011022B148000000000CF +:103420000A00000200000008022800BC0000003270 +:10343000022B945C000000320A000007000000101C +:10344000022800BC00000002022B945C0000000275 +:10345000022B884000000001022B942C0000000287 +:103460000128013800000000022B88400000000005 +:10347000022B942C00000000022B9440000000015D +:103480000A00000100000011022B1480000000015E +:1034900001280000000000000128000400000000D6 +:1034A00001280008000000000128000C00000000B6 +:1034B0000128001000000000012800140000000096 +:1034C00003280020001A1478032800A40002149294 +:1034D000022802240000000002280234000000003C +:1034E0000228024C00000000022802E40000FFFF56 +:1034F00008282000000008000A0000010000001059 +:103500000828400000000200042A500000000002C9 +:10351000042A501000000002042A5020000000027B +:10352000042A503000000002042A935800000020B2 +:10353000042A94580000000E032A94900002149468 +:10354000042A94D80000000E032A95100002149655 +:10355000042A95580000000E032A95900002149842 +:10356000042A95D80000000E032A96100002149A2F +:10357000032A96880002149C042ABC9800000002CA +:10358000042A500800000002042A5018000000021B +:10359000042A502800000002042A503800000002CB +:1035A000042A93D800000020042A94980000000EFA +:1035B000032A94D00002149E042A95180000000EDD +:1035C000032A9550000214A0042A95980000000ECA +:1035D000032A95D0000214A2042A96180000000EB7 +:1035E000032A9650000214A4032A9690000214A6FF +:1035F000042ABCA000000002042A50480000000E6B +:10360000032A9698001014A8042A98D000000002FB +:10361000042A991000000002042AC480000000025D +:10362000042A50800000000E032A96D8001014B817 +:10363000042A98D800000002042A99180000000209 +:10364000042AC48800000002042A50B80000000EBA +:10365000032A9718001014C8042A98E000000002FA +:10366000042A992000000002042AC49000000002ED +:10367000042A50F00000000E032A9758001014D8B6 +:10368000042A98E800000002042A99280000000299 +:10369000042AC49800000002042A51280000000EE9 +:1036A000032A9798001014E8042A98F000000002FA +:1036B000042A993000000002042AC4A0000000027D +:1036C000042A51600000000E032A97D8001014F855 +:1036D000042A98F800000002042A99380000000229 +:1036E000042AC4A800000002042A51980000000E19 +:1036F000032A981800101508042A990000000002F7 +:10370000042A994000000002042AC4B0000000020C +:10371000042A51D00000000E032A985800101518F2 +:10372000042A990800000002042A994800000002B7 +:10373000042AC4B8000000020400A0000000000C2D +:103740000400A050000000020300A0EC00081528AF +:103750000300A19C000415300200A45C00000C00D2 +:103760000400A6A8000000020200A6D0000000008D +:103770000200A61C000000030300A0700005153421 +:103780000400A084000000050200A0980FE00000E3 +:103790000400A09C000000070300A0B8000D15392C +:1037A0000400A22C000000040200A688000000FC17 +:1037B0000400A68C000000070200A6F40000000030 +:1037C0000300A10C000615460400A124000000051A +:1037D0000200A1380FE000000400A13C0000000737 +:1037E0000300A158000D154C0400A23C0000000489 +:1037F0000200A6B0000000FC0400A6B40000000710 +:103800000200A6F8000000000200A0300000000046 +:103810000200A034000000000200A03800000000F8 +:103820000200A03C000000000200A04000000000D8 +:103830000200A044000000000200A04800000000B8 +:103840000200A04C0000000000000000000000008A +:103850000000000100000000000000000000000067 +:103860000000000000000000000000000000000058 +:10387000000000000000000000000000000100182F +:1038800000180020002000230000000000000000BD +:103890000000000000000000000000000000000028 +:1038A00000000000000000000023003500000000C0 +:1038B00000000000003500360036003700370038C1 +:1038C000003800390039003A003A003B003B003C28 +:1038D000003C003D003D00440000000000000000EE +:1038E00000000000000000000000000000000000D8 +:1038F00000000000000000000000000000000000C8 +:103900000044004D0000000000000000004D004E8B +:10391000004E004F004F0050005000510051005227 +:103920000052005300530054005400550055007FCE +:103930000000000000000000000000000000000087 +:103940000000000000000000000000000000000077 +:103950000000000000000000007F01E10000000006 +:103960000000000001E101E601E601EB01EB01F0DE +:1039700001F001F501F501FA01FA01FF01FF02046E +:103980000204020900000000000000000000000026 +:103990000000000000000000000000000000000027 +:1039A0000000000000000000000000000000000017 +:1039B0000209020D000000000000000000000000ED +:1039C00000000000000000000000000000000000F7 +:1039D000000000000000000000000000020D021DB9 +:1039E0000000000000000000021D021F021F022153 +:1039F000022102230223022502250227022702298F +:103A00000229022B022B022D000000000000000002 +:103A100000000000000000000000000000000000A6 +:103A20000000000000000000000000000000000096 +:103A300000000000022D0230000000000000000025 +:103A40000230023302330236023602390239023CB6 +:103A5000023C023F023F0242024202450245024846 +:103A60000248024C024C02500250025402540255C9 +:103A7000025502560256025702570258025802597E +:103A80000259025A025A025B025B025C025C026348 +:103A900002630289028902AE02AE02AF02AF02B037 +:103AA00002B002B102B102B202B202B302B302B476 +:103AB00002B402B502B502B602B602CF00000000A1 +:103AC00000000000000000000000000000000000F6 +:103AD00000000000000000000000000000000000E6 +:103AE0000000000002CF02DC000000000000000027 +:103AF00002DC02DD02DD02DE02DE02DF02DF02E0C6 +:103B000002E002E102E102E202E202E302E302E495 +:103B100002E402F7000000000000000000000000C6 +:103B20000000000000000000000000000000000095 +:103B300000000000000000000000000002F7030584 +:103B40000000000000000000030503060306030751 +:103B500003070308030803090309030A030A030B05 +:103B6000030B030C030C030D030D031200000000F4 +:103B70000000000000000000000000000000000045 +:103B80000000000000000000000000000000000035 +:103B900000000000031203B000000000000000005D +:103BA0000000000000000000000000000000000015 +:103BB0000000000000000000000000000000000005 +:103BC00003B003B20000000000000000000000008D +:103BD00000000000000000000000000000000000E5 +:103BE00000000000000000000000000003B203C657 +:103BF000000000000000000003C603C703C703C89D +:103C000003C803C903C903CA03CA03CB03CB03CC4C +:103C100003CC03CD03CD03CE03CE03EE03EE03F1BD +:103C200003F103F4000000000000000000000000A9 +:103C30000000000000000000000000000000000084 +:103C40000000000003F4041C00000000000000005D +:103C50000000000000000000000000000000000064 +:103C60000000000000000000000000000000000054 +:103C7000041C04870487048F048F04970497049D11 +:103C8000049D04A304A304A904A904AF04AF04B5CC +:103C900004B504BB04BB04C104C104C704C704D9F0 +:103CA000000000000000000004D904DA04DA04DB9C +:103CB00004DB04DC04DC04DD04DD04DE04DE04DFFC +:103CC00004DF04E004E004E104E104E20000000099 +:103CD00000000000000000000000000000000000E4 +:103CE00000000000000000000000000000000000D4 +:103CF0000000000004E2050D0000000000000000CC +:103D000000000000000000000000000000000000B3 +:103D100000000000000000000000000000000000A3 +:103D2000050D05650565057A057A058F058F0591F1 +:103D300005910593059305950595059705970599B3 +:103D40000599059B059B059D059D059F059F05B252 +:103D5000000000000000000005B205BA05BA05C267 +:103D600005C205CA05CA05D205D205DA05DA05E29B +:103D700005E205EA05EA05F205F205F30000000098 +:103D80000000000000000000000000000000000033 +:103D90000000000000000000000000000000000023 +:103DA0000000000005F306240000000000000000F1 +:103DB0000000000000000000000000000000000003 +:103DC00000000000000000000000000000000000F3 +:103DD00006240694069406A306A306B206B206B706 +:103DE00006B706BC06BC06C106C106C606C606CB9B +:103DF00006CB06D006D006D506D506DA06DA06E2E8 +:103E000006E206EB06EB06F406F406F506F506F602 +:103E100006F606F706F706F806F806F906F906FAB2 +:103E200006FA06FB06FB06FC00000000000000008E +:103E30000000200000004000000060000000800042 +:103E40000000A0000000C0000000E0000001000031 +:103E5000000120000001400000016000000180001E +:103E60000001A0000001C0000001E000000200000D +:103E700000022000000240000002600000028000FA +:103E80000002A0000002C0000002E00000030000E9 +:103E900000032000000340000003600000038000D6 +:103EA0000003A0000003C0000003E00000040000C5 +:103EB00000042000000440000004600000048000B2 +:103EC0000004A0000004C0000004E00000050000A1 +:103ED000000520000005400000056000000580008E +:103EE0000005A0000005C0000005E000000600007D +:103EF000000620000006400000066000000680006A +:103F00000006A0000006C0000006E0000007000058 +:103F10000007200000074000000760000007800045 +:103F20000007A0000007C0000007E0000008000034 +:103F30000008200000084000000860000008800021 +:103F40000008A0000008C0000008E0000009000010 +:103F500000092000000940000009600000098000FD +:103F60000009A0000009C0000009E000000A0000EC +:103F7000000A2000000A4000000A6000000A8000D9 +:103F8000000AA000000AC000000AE000000B0000C8 +:103F9000000B2000000B4000000B6000000B8000B5 +:103FA000000BA000000BC000000BE000000C0000A4 +:103FB000000C2000000C4000000C6000000C800091 +:103FC000000CA000000CC000000CE000000D000080 +:103FD000000D2000000D4000000D6000000D80006D +:103FE000000DA000000DC000000DE000000E00005C +:103FF000000E2000000E4000000E6000000E800049 +:10400000000EA000000EC000000EE000000F000037 +:10401000000F2000000F4000000F6000000F800024 +:10402000000FA000000FC000000FE0000010000013 +:104030000010200000104000001060000010800000 +:104040000010A0000010C0000010E00000110000EF +:1040500000112000001140000011600000118000DC +:104060000011A0000011C0000011E00000120000CB +:1040700000122000001240000012600000128000B8 +:104080000012A0000012C0000012E00000130000A7 +:104090000013200000134000001360000013800094 +:1040A0000013A0000013C0000013E0000014000083 +:1040B0000014200000144000001460000014800070 +:1040C0000014A0000014C0000014E000001500005F +:1040D000001520000015400000156000001580004C +:1040E0000015A0000015C0000015E000001600003B +:1040F0000016200000164000001660000016800028 +:104100000016A0000016C0000016E0000017000016 +:104110000017200000174000001760000017800003 +:104120000017A0000017C0000017E00000180000F2 +:1041300000182000001840000018600000188000DF +:104140000018A0000018C0000018E00000190000CE +:1041500000192000001940000019600000198000BB +:104160000019A0000019C0000019E000001A0000AA +:10417000001A2000001A4000001A6000001A800097 +:10418000001AA000001AC000001AE000001B000086 +:10419000001B2000001B4000001B6000001B800073 +:1041A000001BA000001BC000001BE000001C000062 +:1041B000001C2000001C4000001C6000001C80004F +:1041C000001CA000001CC000001CE000001D00003E +:1041D000001D2000001D4000001D6000001D80002B +:1041E000001DA000001DC000001DE000001E00001A +:1041F000001E2000001E4000001E6000001E800007 +:10420000001EA000001EC000001EE000001F0000F5 +:10421000001F2000001F4000001F6000001F8000E2 +:10422000001FA000001FC000001FE00000200000D1 +:1042300000202000002040000020600000208000BE +:104240000020A0000020C0000020E00000210000AD +:10425000002120000021400000216000002180009A +:104260000021A0000021C0000021E0000022000089 +:104270000022200000224000002260000022800076 +:104280000022A0000022C0000022E0000023000065 +:104290000023200000234000002360000023800052 +:1042A0000023A0000023C0000023E0000024000041 +:1042B000002420000024400000246000002480002E +:1042C0000024A0000024C0000024E000002500001D +:1042D000002520000025400000256000002580000A +:1042E0000025A0000025C0000025E00000260000F9 +:1042F00000262000002640000026600000268000E6 +:104300000026A0000026C0000026E00000270000D4 +:1043100000272000002740000027600000278000C1 +:104320000027A0000027C0000027E00000280000B0 +:10433000002820000028400000286000002880009D +:104340000028A0000028C0000028E000002900008C +:104350000029200000294000002960000029800079 +:104360000029A0000029C0000029E000002A000068 +:10437000002A2000002A4000002A6000002A800055 +:10438000002AA000002AC000002AE000002B000044 +:10439000002B2000002B4000002B6000002B800031 +:1043A000002BA000002BC000002BE000002C000020 +:1043B000002C2000002C4000002C6000002C80000D +:1043C000002CA000002CC000002CE000002D0000FC +:1043D000002D2000002D4000002D6000002D8000E9 +:1043E000002DA000002DC000002DE000002E0000D8 +:1043F000002E2000002E4000002E6000002E8000C5 +:10440000002EA000002EC000002EE000002F0000B3 +:10441000002F2000002F4000002F6000002F8000A0 +:10442000002FA000002FC000002FE000003000008F +:10443000003020000030400000306000003080007C +:104440000030A0000030C0000030E000003100006B +:104450000031200000314000003160000031800058 +:104460000031A0000031C0000031E0000032000047 +:104470000032200000324000003260000032800034 +:104480000032A0000032C0000032E0000033000023 +:104490000033200000334000003360000033800010 +:1044A0000033A0000033C0000033E00000340000FF +:1044B00000342000003440000034600000348000EC +:1044C0000034A0000034C0000034E00000350000DB +:1044D00000352000003540000035600000358000C8 +:1044E0000035A0000035C0000035E00000360000B7 +:1044F00000362000003640000036600000368000A4 +:104500000036A0000036C0000036E0000037000092 +:10451000003720000037400000376000003780007F +:104520000037A0000037C0000037E000003800006E +:10453000003820000038400000386000003880005B +:104540000038A0000038C0000038E000003900004A +:104550000039200000394000003960000039800037 +:104560000039A0000039C0000039E000003A000026 +:10457000003A2000003A4000003A6000003A800013 +:10458000003AA000003AC000003AE000003B000002 +:10459000003B2000003B4000003B6000003B8000EF +:1045A000003BA000003BC000003BE000003C0000DE +:1045B000003C2000003C4000003C6000003C8000CB +:1045C000003CA000003CC000003CE000003D0000BA +:1045D000003D2000003D4000003D6000003D8000A7 +:1045E000003DA000003DC000003DE000003E000096 +:1045F000003E2000003E4000003E6000003E800083 +:10460000003EA000003EC000003EE000003F000071 +:10461000003F2000003F4000003F6000003F80005E +:10462000003FA000003FC000003FE000004000004D +:10463000004020000040400000406000004080003A +:104640000040A0000040C0000040E0000041000029 +:104650000041200000414000004160000041800016 +:104660000041A0000041C0000041E0000042000005 +:1046700000422000004240000042600000428000F2 +:104680000042A0000042C0000042E00000430000E1 +:1046900000432000004340000043600000438000CE +:1046A0000043A0000043C0000043E00000440000BD +:1046B00000442000004440000044600000448000AA +:1046C0000044A0000044C0000044E0000045000099 +:1046D0000045200000454000004560000045800086 +:1046E0000045A0000045C0000045E0000046000075 +:1046F0000046200000464000004660000046800062 +:104700000046A0000046C0000046E0000047000050 +:10471000004720000047400000476000004780003D +:104720000047A0000047C0000047E000004800002C +:104730000048200000484000004860000048800019 +:104740000048A0000048C0000048E0000049000008 +:1047500000492000004940000049600000498000F5 +:104760000049A0000049C0000049E000004A0000E4 +:10477000004A2000004A4000004A6000004A8000D1 +:10478000004AA000004AC000004AE000004B0000C0 +:10479000004B2000004B4000004B6000004B8000AD +:1047A000004BA000004BC000004BE000004C00009C +:1047B000004C2000004C4000004C6000004C800089 +:1047C000004CA000004CC000004CE000004D000078 +:1047D000004D2000004D4000004D6000004D800065 +:1047E000004DA000004DC000004DE000004E000054 +:1047F000004E2000004E4000004E6000004E800041 +:10480000004EA000004EC000004EE000004F00002F +:10481000004F2000004F4000004F6000004F80001C +:10482000004FA000004FC000004FE000005000000B +:1048300000502000005040000050600000508000F8 +:104840000050A0000050C0000050E00000510000E7 +:1048500000512000005140000051600000518000D4 +:104860000051A0000051C0000051E00000520000C3 +:1048700000522000005240000052600000528000B0 +:104880000052A0000052C0000052E000005300009F +:10489000005320000053400000536000005380008C +:1048A0000053A0000053C0000053E000005400007B +:1048B0000054200000544000005460000054800068 +:1048C0000054A0000054C0000054E0000055000057 +:1048D0000055200000554000005560000055800044 +:1048E0000055A0000055C0000055E0000056000033 +:1048F0000056200000564000005660000056800020 +:104900000056A0000056C0000056E000005700000E +:1049100000572000005740000057600000578000FB +:104920000057A0000057C0000057E00000580000EA +:1049300000582000005840000058600000588000D7 +:104940000058A0000058C0000058E00000590000C6 +:1049500000592000005940000059600000598000B3 +:104960000059A0000059C0000059E000005A0000A2 +:10497000005A2000005A4000005A6000005A80008F +:10498000005AA000005AC000005AE000005B00007E +:10499000005B2000005B4000005B6000005B80006B +:1049A000005BA000005BC000005BE000005C00005A +:1049B000005C2000005C4000005C6000005C800047 +:1049C000005CA000005CC000005CE000005D000036 +:1049D000005D2000005D4000005D6000005D800023 +:1049E000005DA000005DC000005DE000005E000012 +:1049F000005E2000005E4000005E6000005E8000FF +:104A0000005EA000005EC000005EE000005F0000ED +:104A1000005F2000005F4000005F6000005F8000DA +:104A2000005FA000005FC000005FE00000600000C9 +:104A300000602000006040000060600000608000B6 +:104A40000060A0000060C0000060E00000610000A5 +:104A50000061200000614000006160000061800092 +:104A60000061A0000061C0000061E0000062000081 +:104A7000006220000062400000626000006280006E +:104A80000062A0000062C0000062E000006300005D +:104A9000006320000063400000636000006380004A +:104AA0000063A0000063C0000063E0000064000039 +:104AB0000064200000644000006460000064800026 +:104AC0000064A0000064C0000064E0000065000015 +:104AD0000065200000654000006560000065800002 +:104AE0000065A0000065C0000065E00000660000F1 +:104AF00000662000006640000066600000668000DE +:104B00000066A0000066C0000066E00000670000CC +:104B100000672000006740000067600000678000B9 +:104B20000067A0000067C0000067E00000680000A8 +:104B30000068200000684000006860000068800095 +:104B40000068A0000068C0000068E0000069000084 +:104B50000069200000694000006960000069800071 +:104B60000069A0000069C0000069E000006A000060 +:104B7000006A2000006A4000006A6000006A80004D +:104B8000006AA000006AC000006AE000006B00003C +:104B9000006B2000006B4000006B6000006B800029 +:104BA000006BA000006BC000006BE000006C000018 +:104BB000006C2000006C4000006C6000006C800005 +:104BC000006CA000006CC000006CE000006D0000F4 +:104BD000006D2000006D4000006D6000006D8000E1 +:104BE000006DA000006DC000006DE000006E0000D0 +:104BF000006E2000006E4000006E6000006E8000BD +:104C0000006EA000006EC000006EE000006F0000AB +:104C1000006F2000006F4000006F6000006F800098 +:104C2000006FA000006FC000006FE0000070000087 +:104C30000070200000704000007060000070800074 +:104C40000070A0000070C0000070E0000071000063 +:104C50000071200000714000007160000071800050 +:104C60000071A0000071C0000071E000007200003F +:104C7000007220000072400000726000007280002C +:104C80000072A0000072C0000072E000007300001B +:104C90000073200000734000007360000073800008 +:104CA0000073A0000073C0000073E00000740000F7 +:104CB00000742000007440000074600000748000E4 +:104CC0000074A0000074C0000074E00000750000D3 +:104CD00000752000007540000075600000758000C0 +:104CE0000075A0000075C0000075E00000760000AF +:104CF000007620000076400000766000007680009C +:104D00000076A0000076C0000076E000007700008A +:104D10000077200000774000007760000077800077 +:104D20000077A0000077C0000077E0000078000066 +:104D30000078200000784000007860000078800053 +:104D40000078A0000078C0000078E0000079000042 +:104D5000007920000079400000796000007980002F +:104D60000079A0000079C0000079E000007A00001E +:104D7000007A2000007A4000007A6000007A80000B +:104D8000007AA000007AC000007AE000007B0000FA +:104D9000007B2000007B4000007B6000007B8000E7 +:104DA000007BA000007BC000007BE000007C0000D6 +:104DB000007C2000007C4000007C6000007C8000C3 +:104DC000007CA000007CC000007CE000007D0000B2 +:104DD000007D2000007D4000007D6000007D80009F +:104DE000007DA000007DC000007DE000007E00008E +:104DF000007E2000007E4000007E6000007E80007B +:104E0000007EA000007EC000007EE000007F000069 +:104E1000007F2000007F4000007F6000007F800056 +:104E2000007FA000007FC000007FE000007FE00165 +:104E300000000000000001FF000002000000000070 +:104E4000000003FF00000400000004010000040152 +:104E5000000002380000011C0000011C0000011CC1 +:104E60000000005000000050000000500000000151 +:104E700000000158000001A8000000C8000000A0C8 +:104E8000000000C800000000000000000000005A00 +:104E9000000000FA00000401000004010000000A04 +:104EA000000000320000040100000401000001586D +:104EB000000001A80000001800000068000000B811 +:104EC0000000010800000158000001A800000018BF +:104ED00000000068000000B80000010800000001A8 +:104EE0000000000200000000000000080215002081 +:104EF000021500200810000000000036000000002D +:104F00000000000400000004000000000000000099 +:104F10000000000100000004000000020000000288 +:104F2000000000010000000200000020000000401E +:104F300000000040000000030000001800002000F6 +:104F4000000040C000006180000082400000A3001B +:104F50000000C3C00000E4800001054000012600FD +:104F6000000146C000016780000188400001A900DF +:104F70000001C9C00001EA8000020B4000022C00C1 +:104F800000024CC000026D8000028E400002AF00A3 +:104F90000002CFC00002F0800000114000000001BC +:104FA00000000001000000010000000100000001FD +:104FB00000000001000000010000000100000001ED +:104FC00000000001000000010000000100000001DD +:104FD00000000001000000010003D0000000003DBF +:104FE00000000001000D0000000700D00002814019 +:104FF000000B81680002022000010240000F0250F5 +:1050000000010340000C0000000800C000028140C5 +:10501000000B8168000202200001024000070250DC +:10502000000202C0001000000008010000028180A0 +:10503000000B81A80002026000018280000E8298AD +:1050400000080380000F0000000100F00002810052 +:1050500000090128000201B8000101D8000E01E892 +:10506000000002C8FFFFFFF301AFFFFF00000000D8 +:105070000000000000000000000000000000000030 +:1050800000000000FFFFFFF100EFFFFF0000000045 +:10509000000000000000000000000000000100000F +:1050A00000000000FFFFFFF6005FFFFF00000000B0 +:1050B00000000000000000000000000000020000EE +:1050C00000000000FFFFF4061CBFFFFF000000050A +:1050D00000000000000000140000000000040000B8 +:1050E00000000000FFFFFFF2004FFFFF0000000084 +:1050F00000000000000000000000000000080000A8 +:1051000000000000FFFFFFFA002FFFFF000000007B +:10511000000000000000000000000000001000007F +:1051200000000000FFFFFFF701EFFFFF000000009D +:10513000000000000000000000000000002000004F +:1051400000000000FFFFFFF5002FFFFF0000000040 +:10515000000000000000000000000000004000000F +:1051600000000000FFFFFFF3018FFFFF00000000C1 +:10517000000000000000000000000000000000002F +:1051800000000000FFFFFFF1010FFFFF0000000023 +:10519000000000000000000000000000000100000E +:1051A00000000000FFFFFFF6005FFFFF00000000AF +:1051B00000000000000000000000000000020000ED +:1051C00000000000FFFFF4061CBFFFFF0000000509 +:1051D00000000000000000140000000000040000B7 +:1051E00000000000FFFFFFF2004FFFFF0000000083 +:1051F00000000000000000000000000000080000A7 +:1052000000000000FFFFFFFA002FFFFF000000007A +:10521000000000000000000000000000001000007E +:1052200000000000FFFFFFF700EFFFFF000000009D +:10523000000000000000000000000000002000004E +:1052400000000000FFFFFFF5004FFFFF000000001F +:10525000000000000000000000000000004000000E +:1052600000000000FFFFFFFF00CFFFFF0000000075 +:1052700000000000000000CC000000000000000062 +:1052800000000000FFFFFFFF00CFFFFF0000000055 +:1052900000000000000000CC000000000001000041 +:1052A00000000000FFFFFFFF00CFFFFF0000000035 +:1052B00000000000000000CC000000000002000020 +:1052C00000000000FFFFFFFF00CFFFFF0000000015 +:1052D00000000000000000CC0000000000040000FE +:1052E00000000000FFFFFFFF00CFFFFF00000000F5 +:1052F00000000000000000CC0000000000080000DA +:1053000000000000FFFFFFFF00CFFFFF00000000D4 +:1053100000000000000000CC0000000000100000B1 +:1053200000000000FFFFFFFF00CFFFFF00000000B4 +:1053300000000000000000CC000000000020000081 +:1053400000000000FFFFFFFF00CFFFFF0000000094 +:1053500000000000000000CC000000000040000041 +:1053600000000000FFFFFFF3020FFFFF000000003E +:10537000000000000000000000000000000000002D +:1053800000000000FFFFFFF1010FFFFF0000000021 +:10539000000000000000000000000000000100000C +:1053A00000000000FFFFFFF6005FFFFF00000000AD +:1053B00000000000000000000000000000020000EB +:1053C00000000000FFFFF4061CBFFFFF0000000507 +:1053D00000000000000000140000000000040000B5 +:1053E00000000000FFFFFFF2004FFFFF0000000081 +:1053F00000000000000000000000000000080000A5 +:1054000000000000FFFFFF8A042FFFFF00000000E4 +:10541000000000000000000000000000001000007C +:1054200000000000FFFFFF9705CFFFFF0000000016 +:10543000000000000000000000000000002000004C +:1054400000000000FFFFFFF5010FFFFF000000005C +:10545000000000000000000000000000004000000C +:1054600000000000FFFFFFF301EFFFFF000000005E +:10547000000000000000000000000000000000002C +:1054800000000000FFFFFFF1002FFFFF0000000001 +:10549000000000000000000000000000000100000B +:1054A00000000000FFFFFFF6005FFFFF00000000AC +:1054B00000000000000000000000000000020000EA +:1054C00000000000FFFFFF061CBFFFFF0000000000 +:1054D00000000000000000140000000000040000B4 +:1054E00000000000FFFFFFF2004FFFFF0000000080 +:1054F00000000000000000000000000000080000A4 +:1055000000000000FFFFFFFA002FFFFF0000000077 +:10551000000000000000000000000000001000007B +:1055200000000000FFFFFFF701CFFFFF00000000B9 +:10553000000000000000000000000000002000004B +:1055400000000000FFFFFFFF00CFFFFF0000000092 +:1055500000000000000000CC00000000004000003F +:1055600000000000FFFFFFFF00CFFFFF0000000072 +:1055700000000000000000CC00000000000000005F +:1055800000000000FFFFFFFF00CFFFFF0000000052 +:1055900000000000000000CC00000000000100003E +:1055A00000000000FFFFFFFF00CFFFFF0000000032 +:1055B00000000000000000CC00000000000200001D +:1055C00000000000FFFFFFFF00CFFFFF0000000012 +:1055D00000000000000000CC0000000000040000FB +:1055E00000000000FFFFFFFF00CFFFFF00000000F2 +:1055F00000000000000000CC0000000000080000D7 +:1056000000000000FFFFFFFF00CFFFFF00000000D1 +:1056100000000000000000CC0000000000100000AE +:1056200000000000FFFFFFFF00CFFFFF00000000B1 +:1056300000000000000000CC00000000002000007E +:1056400000000000FFFFFFFF00CFFFFF0000000091 +:1056500000000000000000CC00000000004000003E +:1056600000000000FFFFFFFF00CFFFFF0000000071 +:1056700000000000000000CC00000000000000005E +:1056800000000000FFFFFFFF00CFFFFF0000000051 +:1056900000000000000000CC00000000000100003D +:1056A00000000000FFFFFFFF00CFFFFF0000000031 +:1056B00000000000000000CC00000000000200001C +:1056C00000000000FFFFFFFF00CFFFFF0000000011 +:1056D00000000000000000CC0000000000040000FA +:1056E00000000000FFFFFFFF00CFFFFF00000000F1 +:1056F00000000000000000CC0000000000080000D6 +:1057000000000000FFFFFFFF00CFFFFF00000000D0 +:1057100000000000000000CC0000000000100000AD +:1057200000000000FFFFFFFF00CFFFFF00000000B0 +:1057300000000000000000CC00000000002000007D +:1057400000000000FFFFFFFF00CFFFFF0000000090 +:1057500000000000000000CC00000000004000003D +:1057600000000000FFFFFFFF00CFFFFF0000000070 +:1057700000000000000000CC00000000000000005D +:1057800000000000FFFFFFFF00CFFFFF0000000050 +:1057900000000000000000CC00000000000100003C +:1057A00000000000FFFFFFFF00CFFFFF0000000030 +:1057B00000000000000000CC00000000000200001B +:1057C00000000000FFFFFFFF00CFFFFF0000000010 +:1057D00000000000000000CC0000000000040000F9 +:1057E00000000000FFFFFFFF00CFFFFF00000000F0 +:1057F00000000000000000CC0000000000080000D5 +:1058000000000000FFFFFFFF00CFFFFF00000000CF +:1058100000000000000000CC0000000000100000AC +:1058200000000000FFFFFFFF00CFFFFF00000000AF +:1058300000000000000000CC00000000002000007C +:1058400000000000FFFFFFFF00CFFFFF000000008F +:1058500000000000000000CC00000000004000003C +:1058600000000000000000320000003200000200D2 +:1058700000003DFF000002110000020000000204D1 +:105880000000FFFF0000FFFF0000FFFF0000FFFF20 +:105890000000000000000037000000210000002090 +:1058A00000000001000000010000000107FFFFFFF1 +:1058B0000000007F07FFFFFF0000003F0000FFFF28 +:1058C0000000FFFF0000FFFF0000FFFF00007FF867 +:1058D00000007FF800000000000028AD000029183B +:1058E000000029190000000500000007000000006A +:1058F000000000000000FF00000000000000FF00AA +:10590000000000000000FF00000000000000FF0099 +:10591000000000000000FF00000000000000FF0089 +:10592000000000000000FF00000000000000FF0079 +:10593000000000000000FF00000000000000FF0069 +:10594000000000000000FF00000000000000FF0059 +:10595000000000000000FF00000000000000FF0049 +:10596000000000000000FF00000000000000FF0039 +:10597000000000000000FF00000000000000FF0029 +:10598000000000000000FF00000000000000FF0019 +:10599000000000000000FF00000000000000FF0009 +:1059A000000000000000FF00000000000000FF00F9 +:1059B000000000000000FF00000000000000FF00E9 +:1059C000000000000000FF00000000000000FF00D9 +:1059D000000000000000FF00000000000000FF00C9 +:1059E000000000000000FF00000000000000FF00B9 +:1059F000000000000000FF00000000000000FF00A9 +:105A0000000000000000FF00000000000000FF0098 +:105A1000000000000000FF00000000000000FF0088 +:105A2000000000000000FF00000000000000FF0078 +:105A3000000000000000FF00000000000000FF0068 +:105A4000000000000000FF00000000000000FF0058 +:105A5000000000000000FF00000000000000FF0048 +:105A6000000000000000FF00000000000000FF0038 +:105A7000000000000000FF00000000000000FF0028 +:105A8000000000000000FF00000000000000FF0018 +:105A9000000000000000FF00000000000000FF0008 +:105AA000000000000000FF00000000000000FF00F8 +:105AB000000000000000FF00000000000000FF00E8 +:105AC000000000000000FF00000000000000FF00D8 +:105AD000000000000000FF00000000000000FF00C8 +:105AE000000000000000FF00000000000000FF00B8 +:105AF000000000000000FF00000000000000FF00A8 +:105B0000000000000000FF00000000000000FF0097 +:105B1000000000000000FF00000000000000FF0087 +:105B2000000000000000FF00000000000000FF0077 +:105B3000000000000000FF1C0FFFFFFF0000FF1C23 +:105B40000FFFFFFF0000FF1C0FFFFFFF0000FF1C07 +:105B50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF7 +:105B60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE7 +:105B70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD7 +:105B80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC7 +:105B90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB7 +:105BA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA7 +:105BB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C97 +:105BC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C87 +:105BD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C77 +:105BE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C67 +:105BF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C57 +:105C00000FFFFFFF0000FF1C0FFFFFFF0000FF1C46 +:105C10000FFFFFFF0000FF1C0FFFFFFF0000FF1C36 +:105C20000FFFFFFF0000FF1C0FFFFFFF0000FF1C26 +:105C30000FFFFFFF0000FF1C0FFFFFFF0000FF1C16 +:105C40000FFFFFFF0000FF1C0FFFFFFF0000FF1C06 +:105C50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF6 +:105C60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE6 +:105C70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD6 +:105C80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC6 +:105C90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB6 +:105CA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA6 +:105CB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C96 +:105CC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C86 +:105CD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C76 +:105CE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C66 +:105CF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C56 +:105D00000FFFFFFF0000FF1C0FFFFFFF0000FF1C45 +:105D10000FFFFFFF0000FF1C0FFFFFFF0000FF1C35 +:105D20000FFFFFFF0000FF1C0FFFFFFF0000FF1C25 +:105D30000FFFFFFF0000FF1C0FFFFFFF0000FF1C15 +:105D40000FFFFFFF0000FF1C0FFFFFFF0000FF1C05 +:105D50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF5 +:105D60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE5 +:105D70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD5 +:105D80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC5 +:105D90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB5 +:105DA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA5 +:105DB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C95 +:105DC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C85 +:105DD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C75 +:105DE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C65 +:105DF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C55 +:105E00000FFFFFFF0000FF1C0FFFFFFF0000FF1C44 +:105E10000FFFFFFF0000FF1C0FFFFFFF0000FF1C34 +:105E20000FFFFFFF0000FF1C0FFFFFFF0000FF1C24 +:105E30000FFFFFFF0000FF1C0FFFFFFF0000FF1C14 +:105E40000FFFFFFF0000FF1C0FFFFFFF0000FF1C04 +:105E50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF4 +:105E60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE4 +:105E70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD4 +:105E80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC4 +:105E90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB4 +:105EA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA4 +:105EB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C94 +:105EC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C84 +:105ED0000FFFFFFF0000FF1C0FFFFFFF0000FF1C74 +:105EE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C64 +:105EF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C54 +:105F00000FFFFFFF0000FF1C0FFFFFFF0000FF1C43 +:105F10000FFFFFFF0000FF1C0FFFFFFF0000FF1C33 +:105F20000FFFFFFF0000FF1C0FFFFFFF0000FF1C23 +:105F30000FFFFFFF0000FF1C0FFFFFFF0000FF1C13 +:105F40000FFFFFFF0000FF1C0FFFFFFF0000FF1C03 +:105F50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF3 +:105F60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE3 +:105F70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD3 +:105F80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC3 +:105F90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB3 +:105FA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA3 +:105FB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C93 +:105FC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C83 +:105FD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C73 +:105FE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C63 +:105FF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C53 +:106000000FFFFFFF0000FF1C0FFFFFFF0000FF1C42 +:106010000FFFFFFF0000FF1C0FFFFFFF0000FF1C32 +:106020000FFFFFFF0000FF1C0FFFFFFF0000FF1C22 +:106030000FFFFFFF0000FF1C0FFFFFFF0000FF1C12 +:106040000FFFFFFF0000FF1C0FFFFFFF0000FF1C02 +:106050000FFFFFFF0000FF1C0FFFFFFF0000FF1CF2 +:106060000FFFFFFF0000FF1C0FFFFFFF0000FF1CE2 +:106070000FFFFFFF0000FF1C0FFFFFFF0000FF1CD2 +:106080000FFFFFFF0000FF1C0FFFFFFF0000FF1CC2 +:106090000FFFFFFF0000FF1C0FFFFFFF0000FF1CB2 +:1060A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA2 +:1060B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C92 +:1060C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C82 +:1060D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C72 +:1060E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C62 +:1060F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C52 +:106100000FFFFFFF0000FF1C0FFFFFFF0000FF1C41 +:106110000FFFFFFF0000FF1C0FFFFFFF0000FF1C31 +:106120000FFFFFFF0000FF1C0FFFFFFF0000FF1C21 +:106130000FFFFFFF0000FF1C0FFFFFFF0000FF1C11 +:106140000FFFFFFF0000FF1C0FFFFFFF0000FF1C01 +:106150000FFFFFFF0000FF1C0FFFFFFF0000FF1CF1 +:106160000FFFFFFF0000FF1C0FFFFFFF0000FF1CE1 +:106170000FFFFFFF0000FF1C0FFFFFFF0000FF1CD1 +:106180000FFFFFFF0000FF1C0FFFFFFF0000FF1CC1 +:106190000FFFFFFF0000FF1C0FFFFFFF0000FF1CB1 +:1061A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA1 +:1061B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C91 +:1061C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C81 +:1061D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C71 +:1061E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C61 +:1061F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C51 +:106200000FFFFFFF0000FF1C0FFFFFFF0000FF1C40 +:106210000FFFFFFF0000FF1C0FFFFFFF0000FF1C30 +:106220000FFFFFFF0000FF1C0FFFFFFF0000FF1C20 +:106230000FFFFFFF0000FF1C0FFFFFFF0000FF1C10 +:106240000FFFFFFF0000FF1C0FFFFFFF0000FF1C00 +:106250000FFFFFFF0000FF1C0FFFFFFF0000FF1CF0 +:106260000FFFFFFF0000FF1C0FFFFFFF0000FF1CE0 +:106270000FFFFFFF0000FF1C0FFFFFFF0000FF1CD0 +:106280000FFFFFFF0000FF1C0FFFFFFF0000FF1CC0 +:106290000FFFFFFF0000FF1C0FFFFFFF0000FF1CB0 +:1062A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA0 +:1062B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C90 +:1062C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C80 +:1062D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C70 +:1062E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C60 +:1062F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C50 +:106300000FFFFFFF0000FF1C0FFFFFFF0000FF1C3F +:106310000FFFFFFF0000FF1C0FFFFFFF0000FF1C2F +:106320000FFFFFFF0000FF1C0FFFFFFF0000FF1C1F +:106330000FFFFFFF0000FF1C0FFFFFFF0000FF1C0F +:106340000FFFFFFF0000FF1C0FFFFFFF0000FF1CFF +:106350000FFFFFFF0000FF1C0FFFFFFF0000FF1CEF +:106360000FFFFFFF0000FF1C0FFFFFFF0000FF1CDF +:106370000FFFFFFF0000FF1C0FFFFFFF0000FF1CCF +:106380000FFFFFFF0000FF1C0FFFFFFF0000FF1CBF +:106390000FFFFFFF0000FF1C0FFFFFFF0000FF1CAF +:1063A0000FFFFFFF0000FF1C0FFFFFFF0000FF1C9F +:1063B0000FFFFFFF000000020000150000000001B9 +:1063C00000000002000000030000000000000004C4 +:1063D00000000001000000000000000100000004B7 +:1063E00000000000000000010000000300000000A9 +:1063F0000000000100000004000000000000000197 +:106400000000000300000000000000010000000484 +:106410000000000000000004000000030000000075 +:106420000000000000007FFF000003FF00000000EC +:106430000000000100000001000000010000000059 +:10644000000000020000009000000090008000901A +:1064500008100000000009FF0000076C0000008A1F +:106460000000008000000081000000800000008A21 +:106470000000008000000081000000800000008A11 +:106480000000008000000081000000800000008A01 +:106490000000008000000081000000800000008AF1 +:1064A000000000800000008100000080000000016A +:1064B00000000001000000010000000100000001D8 +:1064C00000000001000025E4000025E400004BC8A6 +:1064D00000004BC8000000180000111A00543210D0 +:1064E000000000000021054300000000000025E43A +:1064F000000025E400004BC800004BC80000001855 +:106500000000111A00543210000000000021054361 +:106510000000000000000001000000010000000178 +:106520000000000000000000000000010000000268 +:10653000000000000000000600000003000000044E +:106540000000000500000001000000010000000143 +:106550000000000100000001000000010000000137 +:106560000000000100000001000000010000000127 +:106570000000000100000001000000010000000117 +:1065800000000001000000030000600000000003A4 +:106590000000600000000003000040000000030055 +:1065A00000000300000003000000030000000300DF +:1065B00000000300000003000003F00800000000DA +:1065C00000000000000000000000000100000001C9 +:1065D00000000001000000010000000100000001B7 +:1065E00000000001000000010000000100000001A7 +:1065F0000000000100000001000000010000000197 +:106600000000000100000001000000010000000186 +:106610000000000100000001000000010000000176 +:106620000000000100000001000000010000000166 +:106630000000000100000001000000010000000156 +:1066400000000001000000FF000000FF000000FF4C +:10665000000000FF0000007F000000FF000000FFBE +:10666000000000FF0000003E000000000000003FAE +:106670000000003F0000003F0000003F0000003F1E +:106680000000003F0000003F0000000F000000007D +:106690001217000022170000321700001215000028 +:1066A000221500003215000002100000001000004A +:1066B00010100000201000003010000040100000FA +:1066C00000000000000000000000000000100000BA +:1066D00012140000221400003214000042140000C2 +:1066E000000000000000000000000000000089061B +:1066F0000000892600000036000000360810000067 +:1067000008100000FFFFFFFFFFFFFFFFFFFFFFFF7D +:10671000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +:10672000FFFFFFFFF000C000FFFFFFFFFFFFFFFFC5 +:10673000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +:10674000FFFFFFFFF800C000FFFFFFFFFFFFFFFF9D +:10675000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +:10676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +:10677000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +:10678000FFFFFFFF00003C100000000800000008B1 +:1067900000000002000000040000000500000004EA +:1067A0000000004000001808000008030000080373 +:1067B0000000004000000003000008030000080380 +:1067C00000000803000100030000080300000803A4 +:1067D00000000003000000030000000300000003AD +:1067E000000000030000000300000003000000039D +:1067F000000000030000000300000003000000038D +:106800000000000300000003000000030000240358 +:106810000000002F000000090000001900000184A2 +:1068200000000183000003060000001900000006BC +:1068300000000306000003060000030600000C86AB +:10684000000003060000030600000006000000062A +:106850000000000600000006000000060000000620 +:106860000000000600000006000000060000000610 +:106870000000000600000006000000060000000600 +:1068800000000006000003060000001300000006E0 +:106890000000100400001004001064400010644068 +:1068A000000000400000001900000001000000008E +:1068B00000000000000000000000000000002000B8 +:1068C00000000000000000000000000000000000C8 +:1068D0000400200000000000000000000000000094 +:1068E0000000000041002000000000000000000047 +:1068F0000000000000000000000020000000007CFC +:106900000000003D0000003F0000009C0000000C63 +:10691000000000050000000A000000050000005310 +:10692000000025E3000000540000005400000004B3 +:106930000000000400000004000000040000000447 +:10694000000000040000000400000004000000003B +:106950000000000100000002000000000000000133 +:1069600000000002000000090000000B0000000A07 +:106970000000000000000001000000020000000014 +:106980000000000100000002000000090000000BF0 +:106990000000000A000000090000000B0000000ACF +:1069A000000000090000000B0000000A00000000C9 +:1069B00000000800000002000000040000000000C9 +:1069C000000000001FFF1FFF1FFF1FFF1FFF1FFF13 +:1069D0001FFF1FFF000025E40000800020002000B2 +:1069E00020002000800080008000800040004000E7 +:1069F000400040000000000000000002000001789C +:106A00000000017800000000000000000000017894 +:106A10000000000000000000000000000000000175 +:106A20000000000200000000000000000000000064 +:106A3000000000040000000000000001000000024F +:106A40000000000000000000000000000000000442 +:106A50000000000000000001000000020000000033 +:106A60000000000100000002000000000000000122 +:106A70000000000200000000000000000000000014 +:106A800000000004000000000000000100000002FF +:106A900000000000000000010000000200000000F3 +:106AA00000000001000000020000000000000000E3 +:106AB0000000000000000004000000130E490E4911 +:106AC0000E490E4900920092009200920124012486 +:106AD000012401240000000000000000100010004C +:106AE000100010002001012001011001010101012D +:106AF00020010120010110012001012001011001EC +:106B00000101010120010120010110010101010128 +:106B100000000004000000060200410402004104DD +:106B2000020041040200410400000204000002CE01 +:106B3000000002CE0000000000000000000002CCB7 +:106B40000000000000000000000000000000000144 +:106B50000000000200000000000000000000000033 +:106B6000000000040000000000000001000000021E +:106B70000000000000000000000000000000000411 +:106B8000000000130E490E49000000000000000044 +:106B90001000100010001000200101200101100160 +:106BA000010101012001012001011001200101204A +:106BB0000101100101010101200101200101100169 +:106BC0000101010102004104020041040000000231 +:106BD00000000000000000020000000000000002B1 +:106BE00000000000000000000000000000000002A3 +:106BF0000000000000000002000000000000000291 +:106C00000000000000000000000000000000000480 +:106C100000000006020041040200410400000001DF +:106C20000000000100000001000000010000000160 +:106C30000000000100000001000000010000000150 +:106C40000000000100000001000000010000000140 +:106C50000000000100000001000000010000000130 +:106C6000000000030255555502555555000002CE4F +:106C7000000002CE000002CE000002CE000002CED4 +:106C8000000002CE000002CC0000005400000054BE +:106C9000000000540000005400000000000000014B +:106CA00000000002000000000000000600000003D9 +:106CB00000000004000000050000000000000001CA +:106CC00000000002000000000000000000000000C2 +:106CD00000000006000000000000000100000002AB +:106CE000000000000000000000000000000000069E +:106CF0000000000000000001000000020000000091 +:106D0000000000010000000200000000000000017F +:106D10000000000200000000000000000000000071 +:106D2000000000060000000000000001000000025A +:106D30000000000000000001000000020000000050 +:106D40000000000100000002000000000000000040 +:106D500000000000000000060E490E490E490E49D1 +:106D60000092009200920092012401240124012447 +:106D7000100010001000100020010120010110017E +:106D80000101010120010120010110012001012068 +:106D90000101100101010101200101200101100187 +:106DA00001010101000000040000000600000000D5 +:106DB00000000001000000020000000000000000D0 +:106DC00000000000000000060000000000000001BC +:106DD00000000002000000000000000000000000B1 +:106DE0000000000600000003000000040000000591 +:106DF0000000000300000004000000050000000384 +:106E00000000000400000005000000030000000373 +:106E10000000000300000006000000030000000462 +:106E20000000000500000003000000040000000551 +:106E30000000000300000004000000050000000343 +:106E40000000000300000003000000060E490E4988 +:106E500000000000009200920000000001240124C4 +:106E600000000000000000000E490E490000000074 +:106E70000092009200000000012401241000100084 +:106E80001000100020010120010110010101010189 +:106E90002001012001011001200101200101100148 +:106EA0000101010120010120010110010101010185 +:106EB00000000001000000030000000400000003C7 +:106EC00000000004000000050000000300000006B0 +:106ED00000000005000000040000000300000004A2 +:106EE000000000050000000300000006000000058F +:106EF0000000000400000003000000040000000087 +:106F0000000000010000000200000000000000017D +:106F10000000000200000005000000030000000661 +:106F20000000000500000004000000030000000451 +:106F3000000000000000000100000002000000004E +:106F40000000000100000002000000050000000336 +:106F50000000000600000005004800480048004806 +:106F6000009000900090009001200120012001205D +:106F700004020402040204020005000500050005E5 +:106F80001200120012001200080008000800080099 +:106F90000120012001011020010101200120012018 +:106FA0000101102001200120010110200101012018 +:106FB0000120012001011020010101200000000436 +:106FC000000000060000012300000123000001234F +:106FD0000000012300000123000001230000012321 +:106FE0000000012300000123000001230000012311 +:106FF0000000012300000123000001230000012301 +:1070000000000123000001230000012300000123F0 +:1070100000000123000000200000003200000007F3 +:107020000000000700000000000000080000000150 +:107030000000000000000000000000000215002019 +:10704000021500200000003008100000000000368B +:1070500000000030000000310000000400000005C6 +:107060000000000000000004000000010000000615 +:10707000000000010000000200000040000000408D +:107080000000001C000000200001000000020700BA +:1070900000030E000004150000051C00000623007C +:1070A00000072A000008310000093800000A3F00EC +:1070B000000B4600000C4D00000D5400000E5B005C +:1070C000000F6200001069000011700000127700CC +:1070D00000137E000014850000158C00001693003C +:1070E00000179A000018A1000019A800001AAF00AC +:1070F000001BB600001CBD00001DC400001ECB001C +:10710000001FD2000000D9000000001E0000001D7A +:10711000000100000002078000030F000004168039 +:1071200000051E000006258000072D0000083480A1 +:1071300000093C00000A4380000B4B00000C528009 +:10714000000D5A00000E6180000F69000010708071 +:107150000011780000127F800013870000148E80D9 +:107160000015960000169D800017A5000018AC8041 +:107170000019B400001ABB80001BC300001CCA80A9 +:107180000000D2000000000100000001000000012A +:1071900000000001000000010000000100000001EB +:1071A00000000001000000010000000100000001DB +:1071B00000000001000000010000000100000001CB +:1071C00000000001000000280000002C000000303A +:1071D0000000000100000001000000010000021199 +:1071E0000000020000000204000002190000FFFF7E +:1071F0000000FFFF0000FFFF0000FFFF0000002075 +:1072000000000021000000010000000107FFFFFF57 +:107210000000007F07FFFFFF0000003F0000FFFFAE +:107220000000FFFF0000FFFF0000FFFF00007FF8ED +:1072300000007FF800000000000000010000FF00D7 +:10724000000000000000FF00000000000000FF0040 +:10725000000000000000FF00000000000000FF0030 +:10726000000000000000FF00000000000000FF0020 +:10727000000000000000FF00000000000000FF0010 +:10728000000000000000FF00000000000000FF0000 +:10729000000000000000FF00000000000000FF00F0 +:1072A000000000000000FF00000000000000FF00E0 +:1072B000000000000000FF00000000000000FF00D0 +:1072C000000000000000FF00000000000000FF00C0 +:1072D000000000000000FF00000000000000FF00B0 +:1072E000000000000000FF00000000000000FF00A0 +:1072F000000000000000FF00000000000000FF0090 +:10730000000000000000FF00000000000000FF007F +:10731000000000000000FF00000000000000FF006F +:10732000000000000000FF00000000000000FF005F +:10733000000000000000FF00000000000000FF004F +:10734000000000000000FF00000000000000FF003F +:10735000000000000000FF00000000000000FF002F +:10736000000000000000FF00000000000000FF001F +:10737000000000000000FF00000000000000FF000F +:10738000000000000000FF00000000000000FF00FF +:10739000000000000000FF00000000000000FF00EF +:1073A000000000000000FF00000000000000FF00DF +:1073B000000000000000FF00000000000000FF00CF +:1073C000000000000000FF00000000000000FF00BF +:1073D000000000000000FF00000000000000FF00AF +:1073E000000000000000FF00000000000000FF009F +:1073F000000000000000FF00000000000000FF008F +:10740000000000000000FF00000000000000FF007E +:10741000000000000000FF00000000000000FF006E +:10742000000000000000FF00000000000000FF005E +:10743000000000000000FF00000000000000FF004E +:10744000000000000000FF00000000000000FF003E +:10745000000000000000FF00000000000000FF002E +:10746000000000000000FF00000000000000FF001E +:10747000000000000000FF000000000000201001DC +:107480000000000001009000000001000000000169 +:107490000000000000000000140AFF00000090023D +:1074A0000000000000000000000000000000900448 +:1074B0000000000000000000000000000000900636 +:1074C0000000000000000000000000000000900824 +:1074D0000000000000000000000000000000900A12 +:1074E0000000000000000000000000000000900C00 +:1074F0000000000000000000000000000000900EEE +:1075000000000000000000000000000000009010DB +:1075100000000000000000000000000000009012C9 +:1075200000000000000000000000000000009014B7 +:1075300000000000000000000000000000009016A5 +:107540000000000000000000000000000000901893 +:107550000000000000000000000000000000901A81 +:107560000000000000000000000000000000901C6F +:107570000000000000000000000000000000901E5D +:10758000000000000000000000000000000090204B +:107590000000000000000000000000000000902239 +:1075A0000000000000000000000000000000902427 +:1075B0000000000000000000000000000000902615 +:1075C0000000000000000000000000000000902803 +:1075D0000000000000000000000000000000902AF1 +:1075E0000000000000000000000000000000902CDF +:1075F0000000000000000000000000000000902ECD +:1076000000000000000000000000000000009030BA +:1076100000000000000000000000000000009032A8 +:107620000000000000000000000000000000903496 +:107630000000000000000000000000000000903684 +:107640000000000000000000000000000000903872 +:107650000000000000000000000000000000903A60 +:107660000000000000000000000000000000903C4E +:107670000000000000000000000000000000903E3C +:10768000000000000000000000000000000090402A +:107690000000000000000000000000000000904218 +:1076A0000000000000000000000000000000904406 +:1076B00000000000000000000000000000009046F4 +:1076C00000000000000000000000000000009048E2 +:1076D0000000000000000000000000000000904AD0 +:1076E0000000000000000000000000000000904CBE +:1076F0000000000000000000000000000000904EAC +:107700000000000000000000000000000000905099 +:107710000000000000000000000000000000905287 +:107720000000000000000000000000000000905475 +:107730000000000000000000000000000000905663 +:107740000000000000000000000000000000905851 +:107750000000000000000000000000000000905A3F +:107760000000000000000000000000000000905C2D +:107770000000000000000000000000000000905E1B +:107780000000000000000000000000000000906009 +:1077900000000000000000000000000000009062F7 +:1077A00000000000000000000000000000009064E5 +:1077B00000000000000000000000000000009066D3 +:1077C00000000000000000000000000000009068C1 +:1077D0000000000000000000000000000000906AAF +:1077E0000000000000000000000000000000906C9D +:1077F0000000000000000000000000000000906E8B +:107800000000000000000000000000000000907078 +:107810000000000000000000000000000000907266 +:107820000000000000000000000000000000907454 +:107830000000000000000000000000000000907642 +:107840000000000000000000000000000000907830 +:107850000000000000000000000000000000907A1E +:107860000000000000000000000000000000907C0C +:107870000000000000000000000000000000907EFA +:1078800000000000000000000000000000009080E8 +:1078900000000000000000000000000000009082D6 +:1078A00000000000000000000000000000009084C4 +:1078B00000000000000000000000000000009086B2 +:1078C00000000000000000000000000000009088A0 +:1078D0000000000000000000000000000000908A8E +:1078E0000000000000000000000000000000908C7C +:1078F0000000000000000000000000000000908E6A +:107900000000000000000000000000000000909057 +:107910000000000000000000000000000000909245 +:107920000000000000000000000000000000909433 +:107930000000000000000000000000000000909621 +:10794000000000000000000000000000000090980F +:107950000000000000000000000000000000909AFD +:107960000000000000000000000000000000909CEB +:107970000000000000000000000000000000909ED9 +:10798000000000000000000000000000000090A0C7 +:10799000000000000000000000000000000090A2B5 +:1079A000000000000000000000000000000090A4A3 +:1079B000000000000000000000000000000090A691 +:1079C000000000000000000000000000000090A87F +:1079D000000000000000000000000000000090AA6D +:1079E000000000000000000000000000000090AC5B +:1079F000000000000000000000000000000090AE49 +:107A0000000000000000000000000000000090B036 +:107A1000000000000000000000000000000090B224 +:107A2000000000000000000000000000000090B412 +:107A3000000000000000000000000000000090B600 +:107A4000000000000000000000000000000090B8EE +:107A5000000000000000000000000000000090BADC +:107A6000000000000000000000000000000090BCCA +:107A7000000000000000000000000000000090BEB8 +:107A8000000000000000000000000000000090C0A6 +:107A9000000000000000000000000000000090C294 +:107AA000000000000000000000000000000090C482 +:107AB000000000000000000000000000000090C670 +:107AC000000000000000000000000000000090C85E +:107AD000000000000000000000000000000090CA4C +:107AE000000000000000000000000000000090CC3A +:107AF000000000000000000000000000000090CE28 +:107B0000000000000000000000000000000090D015 +:107B1000000000000000000000000000000090D203 +:107B2000000000000000000000000000000090D4F1 +:107B3000000000000000000000000000000090D6DF +:107B4000000000000000000000000000000090D8CD +:107B5000000000000000000000000000000090DABB +:107B6000000000000000000000000000000090DCA9 +:107B7000000000000000000000000000000090DE97 +:107B8000000000000000000000000000000090E085 +:107B9000000000000000000000000000000090E273 +:107BA000000000000000000000000000000090E461 +:107BB000000000000000000000000000000090E64F +:107BC000000000000000000000000000000090E83D +:107BD000000000000000000000000000000090EA2B +:107BE000000000000000000000000000000090EC19 +:107BF000000000000000000000000000000090EE07 +:107C0000000000000000000000000000000090F0F4 +:107C1000000000000000000000000000000090F2E2 +:107C2000000000000000000000000000000090F4D0 +:107C3000000000000000000000000000000090F6BE +:107C4000000000000000000000000000000090F8AC +:107C5000000000000000000000000000000090FA9A +:107C6000000000000000000000000000000090FC88 +:107C7000000000000000000000000000000090FE76 +:107C80000000000000000000000000000000910063 +:107C90000000000000000000000000000000910251 +:107CA000000000000000000000000000000091043F +:107CB000000000000000000000000000000091062D +:107CC000000000000000000000000000000091081B +:107CD0000000000000000000000000000000910A09 +:107CE0000000000000000000000000000000910CF7 +:107CF0000000000000000000000000000000910EE5 +:107D000000000000000000000000000000009110D2 +:107D100000000000000000000000000000009112C0 +:107D200000000000000000000000000000009114AE +:107D3000000000000000000000000000000091169C +:107D4000000000000000000000000000000091188A +:107D50000000000000000000000000000000911A78 +:107D60000000000000000000000000000000911C66 +:107D70000000000000000000000000000000911E54 +:107D80000000000000000000000000000000912042 +:107D90000000000000000000000000000000912230 +:107DA000000000000000000000000000000091241E +:107DB000000000000000000000000000000091260C +:107DC00000000000000000000000000000009128FA +:107DD0000000000000000000000000000000912AE8 +:107DE0000000000000000000000000000000912CD6 +:107DF0000000000000000000000000000000912EC4 +:107E000000000000000000000000000000009130B1 +:107E1000000000000000000000000000000091329F +:107E2000000000000000000000000000000091348D +:107E3000000000000000000000000000000091367B +:107E40000000000000000000000000000000913869 +:107E50000000000000000000000000000000913A57 +:107E60000000000000000000000000000000913C45 +:107E70000000000000000000000000000000913E33 +:107E80000000000000000000000000000000914021 +:107E9000000000000000000000000000000091420F +:107EA00000000000000000000000000000009144FD +:107EB00000000000000000000000000000009146EB +:107EC00000000000000000000000000000009148D9 +:107ED0000000000000000000000000000000914AC7 +:107EE0000000000000000000000000000000914CB5 +:107EF0000000000000000000000000000000914EA3 +:107F00000000000000000000000000000000915090 +:107F1000000000000000000000000000000091527E +:107F2000000000000000000000000000000091546C +:107F3000000000000000000000000000000091565A +:107F40000000000000000000000000000000915848 +:107F50000000000000000000000000000000915A36 +:107F60000000000000000000000000000000915C24 +:107F70000000000000000000000000000000915E12 +:107F80000000000000000000000000000000916000 +:107F900000000000000000000000000000009162EE +:107FA00000000000000000000000000000009164DC +:107FB00000000000000000000000000000009166CA +:107FC00000000000000000000000000000009168B8 +:107FD0000000000000000000000000000000916AA6 +:107FE0000000000000000000000000000000916C94 +:107FF0000000000000000000000000000000916E82 +:10800000000000000000000000000000000091706F +:10801000000000000000000000000000000091725D +:10802000000000000000000000000000000091744B +:108030000000000000000000000000000000917639 +:108040000000000000000000000000000000917827 +:108050000000000000000000000000000000917A15 +:108060000000000000000000000000000000917C03 +:108070000000000000000000000000000000917EF1 +:1080800000000000000000000000000000009180DF +:1080900000000000000000000000000000009182CD +:1080A00000000000000000000000000000009184BB +:1080B00000000000000000000000000000009186A9 +:1080C0000000000000000000000000000000918897 +:1080D0000000000000000000000000000000918A85 +:1080E0000000000000000000000000000000918C73 +:1080F0000000000000000000000000000000918E61 +:10810000000000000000000000000000000091904E +:10811000000000000000000000000000000091923C +:10812000000000000000000000000000000091942A +:108130000000000000000000000000000000919618 +:108140000000000000000000000000000000919806 +:108150000000000000000000000000000000919AF4 +:108160000000000000000000000000000000919CE2 +:108170000000000000000000000000000000919ED0 +:10818000000000000000000000000000000091A0BE +:10819000000000000000000000000000000091A2AC +:1081A000000000000000000000000000000091A49A +:1081B000000000000000000000000000000091A688 +:1081C000000000000000000000000000000091A876 +:1081D000000000000000000000000000000091AA64 +:1081E000000000000000000000000000000091AC52 +:1081F000000000000000000000000000000091AE40 +:10820000000000000000000000000000000091B02D +:10821000000000000000000000000000000091B21B +:10822000000000000000000000000000000091B409 +:10823000000000000000000000000000000091B6F7 +:10824000000000000000000000000000000091B8E5 +:10825000000000000000000000000000000091BAD3 +:10826000000000000000000000000000000091BCC1 +:10827000000000000000000000000000000091BEAF +:10828000000000000000000000000000000091C09D +:10829000000000000000000000000000000091C28B +:1082A000000000000000000000000000000091C479 +:1082B000000000000000000000000000000091C667 +:1082C000000000000000000000000000000091C855 +:1082D000000000000000000000000000000091CA43 +:1082E000000000000000000000000000000091CC31 +:1082F000000000000000000000000000000091CE1F +:10830000000000000000000000000000000091D00C +:10831000000000000000000000000000000091D2FA +:10832000000000000000000000000000000091D4E8 +:10833000000000000000000000000000000091D6D6 +:10834000000000000000000000000000000091D8C4 +:10835000000000000000000000000000000091DAB2 +:10836000000000000000000000000000000091DCA0 +:10837000000000000000000000000000000091DE8E +:10838000000000000000000000000000000091E07C +:10839000000000000000000000000000000091E26A +:1083A000000000000000000000000000000091E458 +:1083B000000000000000000000000000000091E646 +:1083C000000000000000000000000000000091E834 +:1083D000000000000000000000000000000091EA22 +:1083E000000000000000000000000000000091EC10 +:1083F000000000000000000000000000000091EEFE +:10840000000000000000000000000000000091F0EB +:10841000000000000000000000000000000091F2D9 +:10842000000000000000000000000000000091F4C7 +:10843000000000000000000000000000000091F6B5 +:10844000000000000000000000000000000091F8A3 +:10845000000000000000000000000000000091FA91 +:10846000000000000000000000000000000091FC7F +:10847000000000000000000000000000000091FE6D +:10848000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +:10849000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +:1084A0000000FFFF00000000FFFFFFFFFFFFFFFFD6 +:1084B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +:1084C000FFFFFFFFFFFFFFFF0000FFFF00000000B6 +:1084D0000000000200001500000000010000000282 +:1084E0000000000300000000000000040000000184 +:1084F0000000000000000001000000040000000077 +:108500000000000100000003000000000000000166 +:108510000000000400000000000000010000000353 +:108520000000000000000001000000040000000046 +:108530000000000400000003000000000000000034 +:1085400000007FFF000003FFFFFFFFFFFFFFFFFFB3 +:10855000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +:10856000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +:10857000FFFFFFFFFFFFFFFF0000000300BEBC2066 +:1085800000000000000000050000000300BEBC2049 +:1085900000000000000000050000000300BEBC2039 +:1085A00000000000000000050000000300BEBC2029 +:1085B00000000000000000050000000300BEBC2019 +:1085C00000000000000000050000000300BEBC2009 +:1085D00000000000000000050000000300BEBC20F9 +:1085E00000000000000000050000000300BEBC20E9 +:1085F00000000000000000050000000D0000000C5D +:1086000000000000000000100000000F000000004B +:1086100000000000000000000215002002150020EC +:10862000000000300810000000000036000000309C +:108630000000003100000003000000000000000105 +:1086400000000003000000010000000200000040E4 +:108650000000004000000004000000200000000FA7 +:108660000000001B00008000000103C000018780A3 +:1086700000020B4000028F00000312C0000396802E +:1086800000041A4000049E00000521C00005A580DA +:10869000000629400006AD00000730C00007B48086 +:1086A000000838400008BC0000093FC00009C38032 +:1086B000000A4740000ACB00000B4EC0000BD280DE +:1086C000000C5640000CDA00000D5DC00000618017 +:1086D0000000000100000001000000010000000196 +:1086E0000000000100000001000000010000000186 +:1086F0000000000100000001000000010000000176 +:108700000000000100000001000000010000000165 +:10871000000000010000050E000004FD000005013E +:108720000000051E0000FFFF0000FFFF0000FFFF2C +:108730000000FFFF000000460000000C00000000E9 +:10874000000000000000001C000000F40000000118 +:108750000000000000000000000000000000000118 +:108760000000000107FFFFFF0000007F07FFFFFF81 +:108770000000003F0000FFFF0000FFFF0000FFFFC0 +:108780000000FFFF00007FF800007FF80000FF00FE +:10879000000000000000FF00000000000000FF00DB +:1087A000000000000000FF00000000000000FF00CB +:1087B000000000000000FF00000000000000FF00BB +:1087C000000000000000FF00000000000000FF00AB +:1087D000000000000000FF00000000000000FF009B +:1087E000000000000000FF00000000000000FF008B +:1087F000000000000000FF00000000000000FF007B +:10880000000000000000FF00000000000000FF006A +:10881000000000000000FF00000000000000FF005A +:10882000000000000000FF00000000000000FF004A +:10883000000000000000FF00000000000000FF003A +:10884000000000000000FF00000000000000FF002A +:10885000000000000000FF00000000000000FF001A +:10886000000000000000FF00000000000000FF000A +:10887000000000000000FF00000000000000FF00FA +:10888000000000000000FF00000000000000FF00EA +:10889000000000000000FF00000000000000FF00DA +:1088A000000000000000FF00000000000000FF00CA +:1088B000000000000000FF00000000000000FF00BA +:1088C000000000000000FF00000000000000FF00AA +:1088D000000000000000FF00000000000000FF009A +:1088E000000000000000FF00000000000000FF008A +:1088F000000000000000FF00000000000000FF007A +:10890000000000000000FF00000000000000FF0069 +:10891000000000000000FF00000000000000FF0059 +:10892000000000000000FF00000000000000FF0049 +:10893000000000000000FF00000000000000FF0039 +:10894000000000000000FF00000000000000FF0029 +:10895000000000000000FF00000000000000FF0019 +:10896000000000000000FF00000000000000FF0009 +:10897000000000000000FF00000000000000FF00F9 +:10898000000000000000FF00000000000000FF00E9 +:10899000000000000000FF00000000000000FF00D9 +:1089A000000000000000FF00000000000000FF00C9 +:1089B000000000000000FF00000000000000FF00B9 +:1089C000000000000000FF0000000000FFFFFFFFAC +:1089D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +:1089E000FFFFFFFFFFFFFFFFFFFFFFFF000019007A +:1089F0000000000000000001000000000000000076 +:108A0000000000000000000200001500000000014E +:108A1000000000020000000300000000000000044D +:108A20000000000100000000000000010000000440 +:108A30000000000000000001000000030000000032 +:108A40000000000100000004000000000000000120 +:108A5000000000030000000000000001000000040E +:108A600000000000000000040000000300000000FF +:108A70000000000000007FFF000003FF0000000076 +:108A800003938700000000000000000000000000C9 +:108A90000393870000000000000000000000000FAA +:108AA00000000007000000000000000E0000000EA3 +:108AB000000000000000000000000000031500207E +:108AC00003150020010000300810000000000036EF +:108AD000000000300000003100000002000000052E +:108AE000000000020000000200000000000000057D +:108AF000000000030000000100000004000000016D +:108B000000000002000000400000004000000004DF +:108B10000000002000000002000000200000100003 +:108B20000000208000003100000041800000520061 +:108B30000000628000007300000083800000940049 +:108B40000000A4800000B5000000C5800000D60031 +:108B50000000E6800000F700000107800001180017 +:108B600000012880000139000001498000015A00FD +:108B700000016A8000017B0000018B8000019C00E5 +:108B80000001AC800001BD000001CD800001DE00CD +:108B90000001EE800001FF0000000F8000000001D6 +:108BA00000000001000000010000000100000001C1 +:108BB00000000001000000010000000100000001B1 +:108BC00000000001000000010000000100000001A1 +:108BD0000000000100000001000000010000000191 +:108BE000000000010000000100000001000012145C +:108BF00000001200000012040000FFFF0000FFFF51 +:108C00000000FFFF0000FFFF000000200000003810 +:108C1000000000000000000000000023000000240D +:108C20000000002500000026000000270000003999 +:108C30000000003A0000002B0000002C00000000A3 +:108C4000000000EC00000000000000290000002AE5 +:108C50000000000100000001000000010000000110 +:108C60000000000000000000000000000000000103 +:108C700007FFFFFF0000007F07FFFFFF0000003F2E +:108C80000000FFFF0000FFFF0000FFFF0000FFFFEC +:108C900000007FF800007FF80000000000000001E5 +:108CA000CCCC0201CCCCCCCCCCCC0201CCCCCCCC2E +:108CB000CCCC0201CCCCCCCCCCCC0201CCCCCCCC1E +:108CC000CCCC0201CCCCCCCCCCCC0201CCCCCCCC0E +:108CD000CCCC0201CCCCCCCCCCCC0201CCCCCCCCFE +:108CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +:108CF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +:108D00000000000000010001001E0C07CCCCCCC903 +:108D100010000000000028AD0000291800002919EB +:108D20000000000000000000000000050000000638 +:108D30007058103C000000000000FF000000000020 +:108D40000000FF00000000000000FF000000000025 +:108D50000000FF00000000000000FF000000000015 +:108D60000000FF00000000000000FF000000000005 +:108D70000000FF00000000000000FF0000000000F5 +:108D80000000FF00000000000000FF0000000000E5 +:108D90000000FF00000000000000FF0000000000D5 +:108DA0000000FF00000000000000FF0000000000C5 +:108DB0000000FF00000000000000FF0000000000B5 +:108DC0000000FF00000000000000FF0000000000A5 +:108DD0000000FF00000000000000FF000000000095 +:108DE0000000FF00000000000000FF000000000085 +:108DF0000000FF00000000000000FF000000000075 +:108E00000000FF00000000000000FF000000000064 +:108E10000000FF00000000000000FF000000000054 +:108E20000000FF00000000000000FF000000000044 +:108E30000000FF00000000000000FF000000000034 +:108E40000000FF00000000000000FF000000000024 +:108E50000000FF00000000000000FF000000000014 +:108E60000000FF00000000000000FF000000000004 +:108E70000000FF00000000000000FF0000000000F4 +:108E80000000FF00000000000000FF0000000000E4 +:108E90000000FF00000000000000FF0000000000D4 +:108EA0000000FF00000000000000FF0000000000C4 +:108EB0000000FF00000000000000FF0000000000B4 +:108EC0000000FF00000000000000FF0000000000A4 +:108ED0000000FF00000000000000FF000000000094 +:108EE0000000FF00000000000000FF000000000084 +:108EF0000000FF00000000000000FF000000000074 +:108F00000000FF00000000000000FF000000000063 +:108F10000000FF00000000000000FF000000000053 +:108F20000000FF00000000000000FF000000000043 +:108F30000000FF00000000000000FF000000000033 +:108F40000000FF00000000000000FF000000000023 +:108F50000000FF00000000000000FF000000000013 +:108F60000000FF00000000000000FF000000000003 +:108F70000000FF0000000000FFFFFFFFFFFFFFFFFA +:108F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +:108F9000FFFFFFFFFFFFFFFF0000FFFF00000000DB +:108FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +:108FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +:108FC0000000FFFF0000000003231303130323131B +:108FD00003030323A0B0904302000200060406042A +:108FE000032313031303231303030323A0B09043AA +:108FF000131313131313131313131313A0B090436A +:109000000301020000000000000000020000150043 +:10901000000000010000000200000003000000004A +:10902000000000040000000100000000000000013A +:109030000000000400000000000000010000000328 +:10904000000000000000000100000004000000001B +:10905000000000010000000300000000000000010B +:1090600000000004000000000000000400000003F5 +:10907000000000000000000000007FFF000003FF70 +:10908000002625A000000000002625A0000000000A +:10909000002625A000000000002625A000000000FA +:1090A000000E0000011600D6002625A000000000DA +:1090B000002625A000000000002625A000000000DA +:1090C000002625A00000000000720000012300F32C +:1090D0000000FFFF000000000000FFFF0000000094 +:1090E0000000FFFF000000000000FFFF0000000084 +:1090F0000000FFFF000000000000FFFF0000000074 +:1091000000000000000000000000FFFF0000000061 +:109110000000FFFF000000000000FFFF0000000053 +:109120000000FFFF000000000000FFFF0000000043 +:109130000000FFFF000000000000FFFF0000000033 +:1091400000000000000000000000FFFF0000000021 +:109150000000FFFF000000000000FFFF0000000013 +:109160000000FFFF000000000000FFFF0000000003 +:109170000000FFFF000000000000FFFF00000000F3 +:1091800000000000000000000000FFFF00000000E1 +:109190000000FFFF000000000000FFFF00000000D3 +:1091A0000000FFFF000000000000FFFF00000000C3 +:1091B0000000FFFF000000000000FFFF00000000B3 +:1091C00000000000000000000000FFFF00000000A1 +:1091D0000000FFFF000000000000FFFF0000000093 +:1091E0000000FFFF000000000000FFFF0000000083 +:1091F0000000FFFF000000000000FFFF0000000073 +:1092000000000000000000000000FFFF0000000060 +:109210000000FFFF000000000000FFFF0000000052 +:109220000000FFFF000000000000FFFF0000000042 +:109230000000FFFF000000000000FFFF0000000032 +:1092400000000000000000000000FFFF0000000020 +:109250000000FFFF000000000000FFFF0000000012 +:109260000000FFFF000000000000FFFF0000000002 +:109270000000FFFF000000000000FFFF00000000F2 +:1092800000000000000000000000FFFF00000000E0 +:109290000000FFFF000000000000FFFF00000000D2 +:1092A0000000FFFF000000000000FFFF00000000C2 +:1092B0000000FFFF000000000000FFFF00000000B2 +:1092C00000000000000000000000FFFF00000000A0 +:1092D000555400005555555500005555F0000000F7 +:1092E000555400005555555500005555F0000000E7 +:1092F0000000000000010000000050140000000009 +:10930000FFF55FFF0000FFFFF00003E0000000003A +:109310000000A000000004000000000000000000A9 +:10932000000000000000100000000000000000002D +:1093300000000000000040000000000000000000ED +:109340000000000000010000FF5C0000FFF55FFF6F +:109350000000FFFFF00003E0000000000000A0009C +:1093600000000800000000000000000000000000F5 +:1093700000002000000000000000000000000000CD +:10938000000080000000000000000000000000005D +:1093900000020000000000001F8B08000000000019 +:1093A000000BFB51CFC0F003099F9240E57FE145E0 +:1093B000E5A3E345FCF8E509611E06A01DDCE4EB2E +:1093C0008F011A9006C4F379D0DCCD08A10FB23317 +:1093D00030E4B33130F403E9ED2C08F9340608ED3C +:1093E0006788105BAEC7C0C0AC03619BE850E6AFB6 +:1093F000513C34B0B60D2A5FC50A42AFB486D03AAC +:1094000068F2AA50F95B66105AD706BBB9B7CD8887 +:10941000B37F82332A5FDC19BF7A260F080D002A3A +:1094200039881AB8030000000000000000000000A6 +:109430001F8B080000000000000BCD7D0D781CD5AF +:1094400075E89DBFDDD9DDD9DDB1B49257B224CF27 +:10945000CAB2BD0619C6B66C6462C248982012D161 +:109460002CC64D0575D3B5318E92989785B889680D +:109470000C1A593F9625FFC88606FFB3363F2529AB +:109480004D1742F2685E9AB7226E63FA68A3380EEF +:1094900031AD49D6409CA4CDF7AA902626EF23F5FE +:1094A000BBE7DC3BD2CC6A25630869D43AC39D9FF5 +:1094B0007BCF3DF7FC9F73EFFAB53AB2E07A422ECC +:1094C000C21FBD5AD97B3B488C9032229A43F4DAB2 +:1094D0005BF32B9B18846C27F46F25210370ADA2DE +:1094E000FFE265D8CE68F4E172426C61453E41DF2F +:1094F000D72C755C320991B41C49371262747DEE29 +:109500009102BDFF4B5B26434DF4BDD6CC5F42DBE1 +:10951000DEE6D77BE9F5E1D0038F14E8FD2E59D5BF +:10952000FD26749EB926B5988EDB4D487E21B6AFD8 +:1095300086B64C41CB354EC2E95CE71091900A7873 +:10954000AF463F1F22F8775182FFED2239DAAF7C18 +:109550005ACA0E2568F36CBA855452B8D82BF4DA7F +:109560009EFF9FF479FC0632EE5F39D99FA4FB4839 +:109570005EE5FDE08BEBA2696DEAB8CEB5EBECFAE7 +:10958000EC09D7FB8D241C43386422031CF4919909 +:10959000A7E3F84F4BE61099BE9F0BDDE9EC89F984 +:1095A00080AF3F8EC27CA77BCFC14B7FB74AF27E94 +:1095B0004286BA75BC2A3574E9289C0AC5D333148F +:1095C0004F4ACC26848E3B58537F3C2410E2030044 +:1095D000611D1A8CE343B4FD0122E0BA0DD6EC53B1 +:1095E000AD19E6471A283E927C7EF5D00FEB97D452 +:1095F00090ECE3D02F1DF7381DCF172F1E4FC5B6A7 +:1096000033DEDA77389E9FDC164D85E9322C2264F2 +:109610004C03BCD2715CDF1383AD976CB0F72F8520 +:109620003F591327FBA7FF7CB1A0A71D4A9679D706 +:10963000BF98AEE2242937019E8326CCEB7621BD6C +:1096400019E8CF38F1C7561FC5EF1B16191FAA001E +:10965000FCA709D00D017C217D120BE80FBBA2B045 +:10966000B6BC29E37A044D92857EC2A480C4192534 +:109670001451F30899450C8111AB29C0FC0959A577 +:109680009FBF927E1270E8FBDDF6B70EFB13ACBDF8 +:10969000E462E86DF427D3FEE6FD16FBBB047C0113 +:1096A0007218FBA3DC1DBB584EC80E4AEF9418E895 +:1096B000FF07185D3512E4EB5E4AFF707F7B771C75 +:1096C000AF44FE8A25821C327DC61095279AFE4C37 +:1096D0001EDED7BFE127D138F4CFE84B84F59C07D5 +:1096E000EB4DCE8957D1ABE9E57BB5C6E7A18B62DF +:1096F0003AE8AF58303B5D421E4DD0251500097544 +:10970000F2FDE9DE7BAFAF202F128A9BFEEB5128E2 +:109710004D372FA931CD904352C4CD47B248D22006 +:109720007F7BB50D2ACC9BBC75F1A2B4C2254FB589 +:109730005473297C9C2209E47BA7ADE803F7081148 +:109740007A8D6FB40A2E384EC37F2C87FB9BADC237 +:109750000C7897E454C77A903F4DC47C9CD2D5DEF8 +:10976000D047C9B946D0231FC5751EA8A84CF841DB +:10977000DE936DD81F5135A2AE98A4C3D18A8FC491 +:109780000BF4FDFEAA8FC4418EF42BA9788AB64F44 +:10979000567CD5827E07DE8A12D04303F1FA28CCAC +:1097A00067E0AD79B33325E61502894AE10F025C23 +:1097B000094657243909A74DD28309DA5FE8249571 +:1097C000FB08E7372C89B67D869C81FE7D1A1D97A4 +:1097D0008EDFD694B3D6537AF5A5B5B45F9FDA8FF2 +:1097E000330EFD132E52BE21F08EC35782E7794906 +:1097F000388ADBBE0611F9478E916C6F89F71535F3 +:109800006287AE02F936715F87711B5E5C8C7215E0 +:10981000DE3754185AB0807F26E93DEB5967A28B9A +:1098200093FDD60337D88302E841A266802F8BF1DF +:1098300039E0239D405F44B63A00BE3EA16C29D872 +:109840000BD3CAF1F8E0CFA5ABA67FEED77D79A008 +:10985000333996B101BF141EF32614113BC784ABF4 +:10986000F0FA732902EFC9FFE6A6C30681EBEF6B9E +:10987000C835808F5E8DD1C174E3F453FE220BA7EF +:109880007FAEF8CC740AF540E68C10033C5C85F39F +:10989000926BFEE14C82C2B15C607A518EF96C9899 +:1098A0000FD1E59F155C786B96ACE502E89320EB51 +:1098B000A7B8FF9BA5D69502FDFE25927A1FBC375F +:1098C0009858C1F58E976FF4B4C9F9DA8A08958C67 +:1098D0006ED95F362F823E4B6B16AC8BD2749C4890 +:1098E000144EBD5A62F23229BF0AF058F4FF001E2E +:1098F000C9FAC95942E18CACA2F75D7893AC20CA91 +:109900005185B0F71D7A9400CF57C1D57BFF56C063 +:10991000F3952E3C773F475E9BEFB2C3C0DE2B3101 +:109920005F22B5FE11CCB7787E7EE00D6AC7112D9F +:10993000330878A65A627C88F2CA01581FAA171EFB +:10994000EC4EE2F5E16E13D7EB507733B6FBBA2D50 +:109950006C0F77B761FB48770ADBBEAA3E15F0783B +:10996000A06AE4800076A97DDA7A91E2E34078E4A7 +:10997000658276EA29EB45DAC5012A5BC9B584DC44 +:10998000DBF34F964DE9E4C02CD6FE5CCF77597BD4 +:10999000FEC8ED22BEFF75F67D2D7BDED7F33DF6CA +:1099A0007C316B8FF4FC0B6B074807CC9BD4ACC5A8 +:1099B000F94C47578E7C0B0B06B32F6A6268974BA6 +:1099C000C60602B70E54D07E1A27FBA1E8546F0DCD +:1099D0004FDFCF97041DFB71ECC4377419F5EB8191 +:1099E000C4E5C11390472CC48FFD23EB34C54F0051 +:1099F00068A49A90AF09E72C5BE3FA82CEF784F073 +:109A00009ACDE7CFFAA7FAE60F5DFAE6AB8282FDC0 +:109A10001D58E29DC7A5C67F0EE880CE23DA5E0002 +:109A20005B985C27A41F01BE08AFCBE77D142FDB3A +:109A30006B9E41BFC4C1D7F4FDD9D8CFF3A03496F3 +:109A40004FBEAF99167EDF03F8A2F78F6C69453AD7 +:109A500079AAA80DF80679E9D8C10E3EA71D4F775F +:109A6000C9F1FAA9F44D64AA8FE9FAFD25D13DF0B8 +:109A7000FC05D13DEB1FD018DFBC5D7C0D177DFFD1 +:109A8000D9A2F6DD45E3553D2592E6A57449378A0E +:109A900033DA113D45FD9473FE74C6AFBC63451ABD +:109AA000D7A1BD09EFFFC55AD1023C6D7C7CE171A5 +:109AB000A9049EA04780E3A8687D9FF13F9327A259 +:109AC0002DA01DF7792175EB8DE05F5E47ED020259 +:109AD00076A557DE10775B9ADAFE3197C3A49DC155 +:109AE0007BFD5BD7AB80EF60584C815F1554B27A39 +:109AF00059E3245D54727BC8817F1519FFE6C518B0 +:109B0000DA57E8EF7CFE8E0FC6376853E177FA1F0D +:109B1000D6C4B62C7C5F24EF87E59CEA1E67BE9115 +:109B2000B94CFF3945409E7FF6C322DAD93BB9BF15 +:109B300038C4FDC541F017697B80DACB70EDB98E72 +:109B4000207D46CE86B2DBE8FB9158C1027957B141 +:109B50006D6E4B92CE2B12B7E271DAFE9BE552CFBF +:109B6000EA5A30A10A8897079BD7444909F9EC5C67 +:109B7000C3A658E457053DF675C0F0FA59FE78F5CE +:109B80008CF67684FA1F66235C197D4BD19FC5370E +:109B9000B9F4B24F94105F92746B06F4E46E81C90D +:109BA0000DE7F92DA288F81F12557C2F39B15E0CF4 +:109BB0004F5AB8D5CE839D2090CC7C7DEABA684AB6 +:109BC0001ED7FFBF6BFEBB679971B09FEC5E6AB496 +:109BD000BC9FEA598DDA0B60DF94AFB3EFA4F77B3B +:109BE000A95D09711745D5CEC17D85EBDD7F12D208 +:109BF0009F13993F2A00BF513B9D5DA525E3109718 +:109C000050DEE7338F93A9F8FA538E2F1FE00BEC49 +:109C100013C057D324BE8634862F4AA525F1B540FC +:109C200064FC3F2467558637F6FD6EF89EF2E34EDE +:109C30006DE98E79F0FD698950B54F76CA797CEF70 +:109C40007785CF6278C2610A0FF815DF63F08495DB +:109C500031FD7709CFB4EB5BD6F18ED6F7BF8B4ED3 +:109C6000A550AA03F86F12BF541E26181C22C489DF +:109C70004426677771F9B74B1EFB9DAEFB1B23FD96 +:109C8000036007FF5449D581DFD7F9D0C2D560CF33 +:109C90006EE0FAE9DFBA4FEA3225808D7BFB2B4B71 +:109CA000C5FD3E29910CCA7D69E707309E46ECA4AC +:109CB000B404DB0B3AE9FD6F89018F1F3421FFB338 +:109CC000CAF884BD5C3F356EF865D16B0FFF9234E6 +:109CD000466F37A6C78B03A713379C164E35E7038D +:109CE000383BB78E048696B0F98ED0F9FE33978351 +:109CF00064B002F5D1279F7C41975D78EB1C51CE73 +:109D0000F9AF9A0AF7443CCBF98EAA177FD9D4EF62 +:109D1000A7FB2EA3A54F89143F966C55DE0E71E666 +:109D20005504FDE3D053A3763599EC77126E2A43A0 +:109D3000964CAED3E5C2A9C633162C6D10FEC7658E +:109D4000EF7548E95745D73AF9EB9E8BBBFD3CD9F7 +:109D500047F53BD851C9B54C5F2FFE8CB19E3E4FA5 +:109D600050FD7CABCB4E75ECA8FEEE2CFA2FFE1A04 +:109D700016F7538D0CDA896A9764BCBE0CFA8921F8 +:109D80007D0D36327E54D51CD1E93534F2741EE295 +:109D9000559461309E0170AF5D0CAE08A3FBBFA26D +:109DA0005766BF64797CC41BAF54BB7CD8FF50B7E7 +:109DB00021B8FDA7E034FED3AF39FF39F8F92CD034 +:109DC000097DEFC20363F21A7ABD25FFB25C4FC76B +:109DD000AF91D87BA7BADFC4795D7880F9E7B7B4D3 +:109DE0007F47BEC185A7B9920FFBB9858F47C89839 +:109DF000ECF6331CBBE7FAB7A27958CF7F3A29A11A +:109E0000FE988EAED7C46FC8CAE593ED534D12B31A +:109E10009364E316F8FE9636492C654717C71FD69C +:109E2000C43F80FD5CB87F4C063E3FD5AD0AAF29EC +:109E30006C7E4618FAF98E0C71E84BC11D065BB1B9 +:109E400002ED27C4EF85FB7304E45B28FFB704FA37 +:109E50000925B39605F0411FE037258D6300DFF536 +:109E60006FFD8DBA66F1643F4EBFA1A2F90D27B90F +:109E70001D28E7DA303EDA28BEADF985F8FC1CBCB7 +:109E8000EEB9045EF3DD56562E21279CAB751DB549 +:109E900073291C964262A5E471F1F82DA4252BBB11 +:109EA000E4D73B856374159D3FC5DDA8AC6BEF64BB +:109EB0005C7F9DC0E29284F137FD3B21835DD766D4 +:109EC0003E0A785CCFE993CA9DF512D2BD95EF6941 +:109ED000C2E5C2385454CF11027986BA24C67988B3 +:109EE0005656D26FEAEF2ECC9695A970F52BDC3F33 +:109EF0007DEB8634C677C4E43D107718AA15D0AF41 +:109F00009D0EAE2D00D772846B8B84F901CBDE5091 +:109F100002AEA1450BDE2D5C9D6057F4898D08973C +:109F2000038F1227685F38DF0D70788BE11CA8F271 +:109F3000215DF72D311F059130CCE1262487FE28C5 +:109F4000857F18E077FA91F571947FFD159B6CC0C1 +:109F5000F31BF415B05BA683DFA79E9F0D74ECC8BE +:109F6000A33EF8CF95203F297C57533A6F647C3548 +:109F70005441B28D74FC40037DD604EDB1BF8636EA +:109F80007D8FE8AEB6D3EF504536AEB9E45FFFA2A1 +:109F900027CEF821FE1A23C642FA9E92BF1DF9571A +:109FA00089A5481AFC743967C1FA9146920039ECC8 +:109FB00053472CC01B69A06D7A19FA4D2FB6ED04DA +:109FC0007B4EF4A59EF93C25B13CE4E43AD83CEF45 +:109FD000C3E2E84A92D9730F48E907810E959A8146 +:109FE00031B4E3789E684D917FEC5CBF3BCDBA7C89 +:109FF000F716BF675DBE31755DBE516A5DBE7BCB36 +:10A0000042464F6D1525E31F6BD4D766CBCBDCF0F2 +:10A01000B33C4E0D411D45F670FAF1C5F5DB015F0D +:10A0200012AC2FA5ABC3B1FD49B0ABF6C59E044F32 +:10A030009A3E1F413BB4DB487F5B72F16F4D86E077 +:10A04000FD214E9F374AAB02AFD2EB83EDF551F0C5 +:10A0500097FF93EB9D62B876513F16E81CF29E7015 +:10A06000BDF0CAC219E3B2C7BB8947CE1C6F92517B +:10A07000CE1E1F3C95BA81C2DD1F6B580AA2DDEAD5 +:10A08000FC4E07D8D765A6B114EC90F37C7C8ABF50 +:10A09000F3920B9F4A6C9CC755291C2E7CC8549C7C +:10A0A00034C4301E3F9ED5011F39D4E7719D987985 +:10A0B00003E7FF1FB00ED58D4480F45455DA241009 +:10A0C0008772E64F88F9027CBFFF85F94BDDF9E125 +:10A0D0000FC83CAFBD8AF10D91CD78AA64FC8EAD5E +:10A0E000D3518A9FC6F9C8FF983F1B86B64B2E3CBA +:10A0F0002DA5890C70740531CE5CDD692A309F5323 +:10A10000DCEF13887AA20AE94B47FD75F4CF839CF4 +:10A11000BEF4638092A02C16D357505E3E95BEB617 +:10A12000CAE930DC0F366630D657D795C7FB0191A8 +:10A13000D95375F7B13CE070A7711CFAA5E09F02F6 +:10A14000FAAA15183E9B6401E7E3AF196BD90871B1 +:10A15000E8B46681FC30C643F8DD769E3F1CAE292C +:10A160007C27C1FD47E0C79AA6C7466F007EB5D4DD +:10A1700071885B0793F91668CFE1F50855A490F74D +:10A1800025189E20EE519319174AD14F9D2F83F920 +:10A19000A0DA9A4DED606F0A7F7EA605E4C6F61E32 +:10A1A00062FA0DC05B3E0F79A2DA66BF0E743F6C97 +:10A1B0001011E4D1F6BB89D903B2C862CF43969A95 +:10A1C000923035991D85D874ED1682F12DBD863CEF +:10A1D000EA8E6F6935E9BB619C4FCBE926C09B666F +:10A1E00032BB315893CF43B87EBF42ED44DA0EAD57 +:10A1F0002A5800D7AEE59F21EB5D72ED464E27FE53 +:10A200004662A11DC1E9F3304FCCED6B7B3EF031CE +:10A21000E03339C8FDF82D16F447CDBE3CF06F0889 +:10A22000E894209DAE06FAD033D95134951BCDBCAD +:10A2300068205F629E73BF625781BDBA7FB9AF036A +:10A24000F4355DB797C80A6A1F8964F20FEC971A54 +:10A25000EB31A09F5F4B2C7E1B5EFD44FE08F0C3DC +:10A26000FBFCBA4CD76547E518A9A378288F4BC4E7 +:10A27000A0EB126ECAE6FF8E3EAF76F015378692DF +:10A28000C08F31625A88EF6CFE15FA7C4E4788C049 +:10A290003AEA741D814428BEEE0078B5B6911601E5 +:10A2A000E4713DA3FBE372E687F7D3F78F9F944CED +:10A2B000DB70F10FA1FCE3B2DBE70D52F9E0F11323 +:10A2C000191FB540A5091DBF7A0BCB2F3BF26F0EAE +:10A2D0009F620D2908013AFE5C4244853E4FAC3531 +:10A2E000B6419C79DEBAECCB597AED0DBF54C5E48A +:10A2F000C46AFD7C12F2E1E5C2C52BA79753B022D8 +:10A30000E73D71490647F5666F7E45DFE88A57D21B +:10A310007F5AB3F779704ABC93F5338BFB3DC41871 +:10A3200049BAE5C7CE407E3F8BD3B7B5421E63A77F +:10A3300090EF8090ADEFC1D6D6368AAF9DE17C1C00 +:10A3400042DA81E10FB6B641DCBB8E5AC868A7D2AB +:10A3500051E9F50928B800795018C9435E33DCC2C9 +:10A36000E242BBAD3774783E5A7810E961A459CC0B +:10A3700002FD4FBC9F2681F7C3FB8B4502F276B8E6 +:10A3800099BD3FF1DC18B105F61CFBBBB0983DBF91 +:10A3900030DF193F87E3132341FAE0BD95EC3DA779 +:10A3A0009F60A160019D3AFD5199DB036DBF95B59A +:10A3B000257A2B68A5C93721DED92866B3022F1963 +:10A3C0000039D32467F320E79A33584B32FA8A3F97 +:10A3D0005070C9879146D63F591DE3F278C428557D +:10A3E00067E2E0DD1A6921A857B83D076404F1DA95 +:10A3F000902167C00EA3F2F319E077D994CFF92327 +:10A4000060F78D13549CBCFFE9E985F5EFC8C3C321 +:10A4100067059C7F455D2AB110E4DF4B4C1EDAAD29 +:10A42000A904E821FB07211DF3BC72E69ADB5CEB73 +:10A43000DFCFE5602CC5EC8FE271145F2ADD13835A +:10A440003885DFA41E2E392BA64F02BC4265D742A9 +:10A45000C04BC5DA147ED7452786FE6B8388F5404E +:10A4600038510AC78EC766235C72793BC651763471 +:10A47000D4CF582FB1BB9B980D2E7DBD9BD219AC6C +:10A48000DBEEE66D7A29F822719FD90075216DC641 +:10A490006CFD9DF5ABBAFB3D2AA65F972BA6F65F38 +:10A4A0009C67086AAB45B073A6F2DBCCF985FDEB7F +:10A4B0003F1F87F162B3AD25C057091FC9A7A83C4C +:10A4C0008C85ACA7810F0BFDE75A35BAEE31BF750D +:10A4D0000F844E97F8B6B6EEA47C17A38206F267F7 +:10A4E000C9816F893D749E3188115D4BC8E28178C6 +:10A4F0002FE4CFBAB8FFBAB7DBA87E5D81787FB210 +:10A50000FA753A5F49617A611697CB24E3C3F5097E +:10A510002806B32B64BD05E9E7469DC03A95ADA674 +:10A52000DFBBE54BD17744CE5BF8FE12F67ED84C0C +:10A530007ADE27719227AE7A10AA4F220AC8B18E0E +:10A5400091511852D28AED3E8DE5C5E2C67156AFE3 +:10A5500091AB5A43E97387E2B5FFF680DD379FE59B +:10A560002FC0EE837A1FB8EEEA8EE3F5CDC29DF9D7 +:10A570003B63937EC61E259D073EB31372E6711D95 +:10A58000E54595275E132F54CAAE38D148EB27987E +:10A590005D174F55BFEEBA7FF8EE4D1D70BF4F6F80 +:10A5A000D55B687FFBD2F54BD9DC8C1D60AF45F4E1 +:10A5B0007AB4D76EE5F01E12ECC0021877968CF9CB +:10A5C000A7FEEEB1CAD7D14EDD1E7D7F0CF5E81295 +:10A5D000F8BE576078B5A93FF3389DF71BED6BCEF9 +:10A5E000DC49F1534E52D9F550CFA410C4B37D0BC2 +:10A5F000390ECF0F098C9FEC95E4D8E32EBB41694F +:10A6000027EBC16E50B4F89DEC7AC55D84CA91D534 +:10A610000AABB7519ACD8FC17D29BACE9CA97E9144 +:10A62000CABE036E3DB84B60F4765BFFD75BED1995 +:10A63000F8AAF8BB3D81B138D0B1FAF0E3ADAB5721 +:10A64000C273FD80DB4F97634651DB2C392EB1BFBF +:10A65000DE9A77C1BB87D34B57211175DB3D5F5322 +:10A66000440F9DF4772797B8FDE07EC1C92BDBFE30 +:10A670003ACCF32CC0F5BAF0CA8533402F52E48AA5 +:10A68000A5A00F3EA1307BB3A5529543F4FEA19B3C +:10A6900009EA2BA0C73AB48F7CA8A7A4D800AB6363 +:10A6A000D0989D4BE5F727148F7FC5EC5C5FD35A9C +:10A6B0005C2FE09CB9140FCAD91DCCCF6B52CFC10F +:10A6C000F7BE1885D335EF370BF366F4637ABB29F1 +:10A6D0009EDD7511D43C692E83F978F13FB4D2A97F +:10A6E0008F3404827C66E816D0D17A4667438B0C9F +:10A6F000C107FC3BCB84881489DBBDC20AFADE7635 +:10A70000A592C5B7D6E7041FFDFE30AF1B100F188A +:10A71000BAAF09EC64F309773C67E89E1CF63F4743 +:10A720001FF4CA8BD505F09D27F273C5F338A9B77E +:10A73000EC56E87AED98BF1FE3AC137A23CDF5060B +:10A740009D17E0EDE07AF1983BFEB53F7D797A63A5 +:10A750008F3C12007D70C078E866E4C755A2399F2F +:10A76000AE9F9A60EDA1E68625B0EE13723EDC7ACC +:10A77000CCBD8ED166DA9F8B4EF75FA67ED923E7DC +:10A7800002A05F0E19CFBCB0A06972FC4168971E91 +:10A79000FF6905FD2AF233B0337D5C7EEE98BF0978 +:10A7A000EBEC8AE171BEDB20A7AFF5B9E8DF173724 +:10A7B0001DFF14E9586E73EC570BED6D6DD20EC989 +:10A7C000DFDFE4B143EE83F1E55504F34A8E1F77F2 +:10A7D00029BAECA7FAC64D978A9CC2FCAC2F46EF6B +:10A7E000BBE0BD347D7BF9B697F3ED04BDFF20904F +:10A7F000CEBADAFFCAF9F55FB97E03990AF508B255 +:10A8000046FB718DAB4CC4755349775CF74DB5E58C +:10A8100087B0DE7BC068073D1827D922BDF5A39914 +:10A82000F55663F455173C737D5E7DE5E8A901AEEE +:10A83000A78AE71BE2799981AA4D59B0AF0EAF5CA8 +:10A84000807A65A0FA13B951B0976F5E8072C9E93A +:10A85000B78B307D41790BF9A44F7DADF2756A97C6 +:10A86000C8817FAF84B8BFA3670ECDFA08D6771D25 +:10A8700052722F6F02BAABF0A11E1AA8FA0CFA435B +:10A88000CA2611F5CF9B854F8F813E3BA03798306C +:10A89000CE61217312EA14ED5922BE4FEDDA9B818D +:10A8A0006E4327E761BDFA6185EBABBB08E7D314C4 +:10A8B000C637AAAC3801FA39A4A46C90A7F6DFAB6E +:10A8C000E471C84F5A0BEE427DB491E99F98AF0CEA +:10A8D000E7B1EFE68F94D443732118E28E2314E995 +:10A8E0009543016F5EBAF8F95C9FC8EBE72E4FDF26 +:10A8F000EC51585D8B238F0E534349B81AE69BEEFB +:10A90000483532F9BFC645371FE5EBE17CB7FF6E2E +:10A9100066CF9D90D257FA28BDC81DE93CA06AB405 +:10A92000B103E32313FD87D97B6FAAA9AB7D6877B9 +:10A93000A5929EE7F30FE27350FB50071DBBADDD00 +:10A94000EAA7F8EFE7F68CD5C1F05FC6EB9D1D3D99 +:10A9500043F9768FE2C29B139F9A6A8F8F78F255E4 +:10A96000976B87175FA30249015FA989C754777D59 +:10A97000CB877C8C2F5FD0AC0FC13C8BE5D6E5DA62 +:10A98000E9D38D3B681CF78C7BC7E4B877941A77C2 +:10A990004A7E1AF271E590C7CB577D0CF2D3311184 +:10A9A000E9BCB779CDED77D1F62F63B209712849AB +:10A9B0004D931FC5B0DC363302718791F5E4EF513A +:10A9C0005F6968571E524C2227405E8B987FAE9875 +:10A9D000C8D399642D5DDF059CAE897B7F01D44F80 +:10A9E00042BEAE1CFC2EB6AE018364210EA6E66FFD +:10A9F0006F51E8F86A8C98F41EFDB3D10EA4DDE81F +:10AA00005F4CB03837B4D506C2F657C896C0D69951 +:10AA1000C5A72BF87325A63F2A025C6ABA07FA235A +:10AA2000352CAF58C99FFB6BD87388A3635CBD8A74 +:10AA3000C5D595188FAB57B138BABF86C7D5799BA6 +:10AA400010B6EF6158089A40874355DEF8FA5082F5 +:10AA5000C7A9DF7A34BED6C53743BFF9721C90B898 +:10AA6000A8F6A65EB00B9D7CC690928DEB25E441C6 +:10AA7000713E63CA739174E238722E0EFC194B65F5 +:10AA800031AE4F7166405CAD188FFD8B0626F0B875 +:10AA9000F03DC4636F111E7B8BF0E8B427F45C9526 +:10AAA000E9C15FEF04FE9679F0D71B7E02E5432FE4 +:10AAB000C7E3491FC5E3B540BFA63AD33E178DD3C0 +:10AAC000F9445BCD9F3440AE9F9620823099773613 +:10AAD00059BD1CA1EE9B7BDC18A7EB8540D714EE7B +:10AAE000CAB5DEBCB3C6E9F8A898FA47B04336CE7B +:10AAF0003AFC51827977AFBF3C9B9863608792663E +:10AB000086BF0871C5ADDE86DFFC1A97EFFBA4F4A3 +:10AB100019E0EF506AC40239EBD76C1B4C8158CA5C +:10AB20006EF9E718C6E7C625747659BC0E536E3821 +:10AB30009E4DCEABA81A4DD84752B1D66E013BB34D +:10AB4000868A5B78BFB2634C28552F3DCCF5C1B0E7 +:10AB500092E2FA80D385CEE2E3DB42DF38B301F242 +:10AB600008E56568CF9DF339FBD0A80B067E03B7D7 +:10AB7000BFA89C3EE773D9979A3E6E09205F785C28 +:10AB8000EE485BFA97F0FCD072B303EAAEE95FC619 +:10AB90001FA7E336991F9E68D7D176E3D292FBD0E8 +:10ABA00036B459BFF6A1FF49F53EE8E17302AEE7BE +:10ABB000412577B3380F3ECF05DCF2FFD0E6CBB5A9 +:10ABC000A7732AC8ED61E3D993F51E7B9AB54BD8DC +:10ABD000B321BF4B2F15CBE343976F4FF3F19FF199 +:10ABE0008C3FC8DB25C69FE3AF70E9C14611FD1F4E +:10ABF0008A07AC7F2E8667B8F1BDD1878BFDCC5E0E +:10AC0000A07A6931E063CAB8808719FCF277AA0F8D +:10AC1000574D8EBB0AC6251A8B274EE74738572754 +:10AC2000AE08BA10E832DA96BA11BEFF4513B1A5E4 +:10AC300028C567D38005710A95EFC3240DB6CAF6FF +:10AC400083D88857926471F641E3BD89F30D5E267F +:10AC5000BE9C7EA7CE33EBB1379DFEFB801FC10E9D +:10AC6000DECBFCE57D1C0F352427825DF6098ED7EF +:10AC7000567FAAD38F7C3E8676DE63C6891DF32875 +:10AC80005E828B9E0DC2BC9D7D52441E236EFBF1E5 +:10AC90009E89EFAD4FC1F70D89137BF97765F01DE4 +:10ACA00095A39FF6CF2047FB042A47591CE81DC9EE +:10ACB000D11E3EFE7FF8D23D308EBA779BBAD0804F +:10ACC0007D78D9B12B0417DC6D4B71DE0D7B4FCC39 +:10ACD000BA09745982C7BDE4DCA90F42BC3DD980D2 +:10ACE00079D2497CF6F07EAD21A4B7B6D279FE6266 +:10ACF0003AB35B39BECBC42CC4C402291BE57A65C8 +:10AD000007CB7F51BD89F9FF093B85E7FF417FBB39 +:10AD1000F3FF1376CABBCEFF7BF3FD3ED566F5008D +:10AD200006CBF70FFDE6D32CFF5FCBDAC5F3FA2B8A +:10AD30003F93FFEBFDD6DFC2FA7E52B29EF2BBE438 +:10AD40007EDF7F499DA5F62F3FCBD7A5CFC7F58CDA +:10AD5000CCE27F72D902D433026175FFCEFB503F43 +:10AD600000FD3AF50493FB4CBD7ACFFA098BAFC6D0 +:10AD70003B991E9A93CAB730FC3AFA8EEFD724AFAC +:10AD800011C84FCD5EC7F5DB843DBA4380F88F4ACA +:10AD9000ED9E00763F8D3D1A73ECA80CB3A3620CB8 +:10ADA0007F7183ADAF6327F9D49116E88FFADBA8E2 +:10ADB0009FAAF8F7BE387BAEB06FC930AC7382ADD6 +:10ADC0002BACF330AC2B7C1F67EBECB409B7471FFF +:10ADD000E4F6E87045CEB3DEC3604F013EDFFA72A1 +:10ADE0007CAD4BFF0DFF665915C42917D58EA33DC9 +:10ADF0003ABC98D9A3C34AEE5DDAA326FA8BB3D73F +:10AE0000E5CEF8191EB93DEAC563FFE2018C0F4E8D +:10AE1000B1477FCB7874F8C5C1A3C31F0E1E2FC5E1 +:10AE20002FD3DAF38BBE8AFEF210E091DAA3D52A93 +:10AE3000C56335D8A3D9CBB54707EB291CE5DC1E84 +:10AE40002D1F59322ACF608FCEE6F6E802EE675505 +:10AE5000A5BD75C08E3D4AEDC45A95F25368DD0814 +:10AE6000D659F8291F43DE7F594DDA5041EEAE33F3 +:10AE700005B8EFD3D8FDBB6FB6122AC6DFD8BEE344 +:10AE800087FFE409E4A7F264CE2650DF276731EF9D +:10AE90005EDE9E251B5CFCFB23A33509FD95CBA63E +:10AEA0000074536E948E7BD6ABCC7EA572E12A18CB +:10AEB000E749C3BA5A45FD9115FE00EC509B8C43FF +:10AEC0007D2B29CA3353BF06F333B516B515E9F305 +:10AED000BAB5E33D108F32D6E922C03F8F18ADBE20 +:10AEE000848B8F799E79DE4EB6FE8FAC24D9CDF45B +:10AEF000F9FC87C6AB5468DFFF92D64EDB573EC5E0 +:10AF00009E7F71397BDE98CB56C3F32F7E813D77D0 +:10AF1000E07EE40BBFAA3234F86EFCE58F81DDF5EC +:10AF200005A6771EE9498BCB281E16E4BF20CEA3C9 +:10AF3000F8F9B0CAEA8E16E472A211E6C0AF8075C5 +:10AF4000227CBF615E04BC5E01FF49E9A477707199 +:10AF50001FEC037B64F4E3F8FE23BCFE84D8793154 +:10AF600044F151B7D5C038FD15B9424F90B61BBB5F +:10AF70008C32E09BBAADE38208FD3C9515A13E758D +:10AF8000EE93397103DAE5594FFFC46E599DA7F767 +:10AF90001339F23CEC719CFB50611478ECCA9DECC7 +:10AFA0007C04A38B5D135BD9B5539510FE3BF93A36 +:10AFB00039EDF9B96C2BD8DF754DC44C1850C76208 +:10AFC0003E0FF0CCDF4A74480BCEDD6A8AC00742E0 +:10AFD0002EF77C10DEDB4A4CC825FF298513F2A32F +:10AFE000C2938551D03757E458DD88F0544E2C6811 +:10AFF00053F1F076E1BC5F65FB5BBA389C4E7B7E1B +:10B000002EBD0DE16C2E82F34906E7154F7AE19CC7 +:10B01000DBC5E1ECCA223CC2FEF11EB8BFA008CEDF +:10B0200005D39CB791511D3F87E9712565A37C2A03 +:10B03000B7585D0EBDB278A549B2F369FB3B84AE4B +:10B040001A6D87ADCC17414E97379902F079797B0D +:10B0500026087A4A85121E7CCEBED79BF236D413C0 +:10B06000400FCB4DD7F74DECFB967613F15BAE92CC +:10B07000169877C24248488B6558E06752D986F9DE +:10B080009BF0D99B4EC23E5FAD49FE95BB4EA29C44 +:10B09000B0766D9AD94D0968BBF2B80FB8DB58206D +:10B0A000E6FA9ED965F81CCC45B0CB14EEC71179F1 +:10B0B000D9736B56F0BCA904D76C16F22379ED4B0B +:10B0C000A771DF3679323B915FC4E7639685FED97D +:10B0D00048B5E7FEAA318CCFC37EE51B9AA7C25FB5 +:10B0E0003CBE1CCBA37D7010EACF41C14B2F629CAC +:10B0F00055EF4C45F3A4841C26F279E80FBF17A640 +:10B10000EE4338A16A9EFDCFE1AEBFCA62FD3A3F71 +:10B1100007854AD2E7D654021E09C62BC3EDACEE12 +:10B12000C819DFD98FF0BF389D567766D97A3711A5 +:10B130001DFCB4708CFB0FB1D368275E7865FBDC17 +:10B1400007E8F3DD2B9B97E1F3A6827EA706F31AAF +:10B1500023B7A17F318074E6E88FB0B4B30796A51A +:10B16000BCBD80766242360330FF9DED6BA2640663 +:10B17000BF23CEF5470DD71F11AB289EA11201FCAE +:10B180004C7D441066D2438E9E71F011067C2631B0 +:10B19000DF80FD168F5B8CDF71C0AFB3CF6321F40E +:10B1A000F760B5BB3F4D2ECD770E5E7FCCF1FA0533 +:10B1B000E8B302EA6C24E4B7A30DC12CE4D1FBC5CB +:10B1C0004200F2CDF63FB23A907EC2E833C8E3CBFC +:10B1D00084A47BC046903A09DAF17BBB3B308F33C5 +:10B1E000D09DAE063BE7787727B63F156071D56EE8 +:10B1F00023AD06589EC4729F9FA36B23A330E72103 +:10B2000025BB1FEA96EDF94186AF18F31F8AF32498 +:10B2100093F63FF3178AF3FACE73A9D1B2416D4486 +:10B2200083E305C8E3934D3EBE0ED432A6E3443417 +:10B2300056FFEAE4711DBAA90F303D64759AF96FA3 +:10B24000C626EB6E74CBCC3F4ADB1AEC9F62F9AE9C +:10B250007A988FA415B06E2964B17D559166163F1A +:10B260000FD6E46CE08D3DCA7807DBE77D70F5E929 +:10B2700038E4B709CAED4581A7516E4745D6BE6D82 +:10B28000C797FA204FBE7722DF4C50FF812D077EF3 +:10B290009C33AFCF04D8BA45791DA48327E7F9DDE5 +:10B2A000016F3E7BA2FEF6CD8B17FD2B26ED025DD6 +:10B2B000CE0B9067ABD9CCF442F4FA9F556D72E196 +:10B2C000D90A30BD10ED6679A6A3B563E857143FDF +:10B2D000FF5060225E85785534267F95B3D720FED7 +:10B2E000088F4329AB18FED4848C6DAB339507B916 +:10B2F0005B46F106F8A5F8FC10E053B372206E3CF3 +:10B3000075B2C43977037025E708D8EB4705621F8B +:10B31000A4EBD005C159CC87E470BCC33FD22CC884 +:10B32000278556FDDBFD9037BA5CB8281C7F12C01C +:10B33000F527C8BF6526DF57A4B1789B33DE5EA72B +:10B34000FEE23E1F8B0BC9FAED1B01AE7B16E0FB44 +:10B35000BF057CDC0D7014E3E3B301BE1F9A14AA91 +:10B36000C04E9EA0174E07C57443F542D59AC553EB +:10B37000F986C8F47BB4B3F278DDDD9DC5BA1FE76A +:10B380003D671F675741C079EE5CCEEA6C23D7FE5C +:10B39000E449E483A5ACEEE130E7EF78F3C9DC37AC +:10B3A0000D288BF939F21369F2995046BC5B241EC3 +:10B3B0007F753B7F7F674070EAA30FE3BA9BE4048D +:10B3C000F823D136EA3726405FB17D0B87815F00D5 +:10B3D0005EE967E837FED222E360C7460A3F27B03E +:10B3E000EF342E317C469BB39E3A82E9E4E6C301FA +:10B3F000EFB91CBB45AADF84E9E5BD232F2332ED5D +:10B40000AB0CC6DD8E7518D38DB7BB7B10F138A899 +:10B410005A8FC2FABD79EEA619F3D640263D2EBD4D +:10B420003DDD7BEFF515E4688F027A24A4839E3E10 +:10B4300042C6883D0FF6D38EE54F837F4CF16E43B5 +:10B440005C9CDB11F2064BB8E8924BCE7713EDF61D +:10B4500057D13FFE49E0B53E957E774060722E3D64 +:10B46000FC831B41EE1D91C7B0BEE188EA6B63F51A +:10B47000EBB1568C5734971D6372F95B787E48DFC9 +:10B48000AC18C665FF37976B8EFEA67FAACFA5477F +:10B4900076363F6F73FA40A3441F69211877E1FEA7 +:10B4A0002DC86FB00F3527BEAF31FEDDB194609D62 +:10B4B000B1937F6BE0790A8930BD2E6F60FAD8D1E5 +:10B4C000D7604F60BC523A6BE2FE8769CE752BD6CF +:10B4D000E7C574F82F21977D44F5F72262451F4098 +:10B4E0003F6C641BC487E8A728DF9CF6C28D04E587 +:10B4F000DAA278A185C9352FDD2C8A8FB790C87F55 +:10B500001FFDEC858982FE5EC2E29E7FCDE9090CBB +:10B510007338374983F5A7F41408B1755C3C38D605 +:10B5200003EB331F3EA1DF5DB533D51AA0D77959A0 +:10B5300062B6D0F5AE5599FDF26055F600BC5720C5 +:10B54000F7F8E5F7831F9AC3B66E67FC401F5F0FDD +:10B5500006519ED4FE52E0754B055CDB23FF39D1CA +:10B56000C63AA354738180BD1FE962CF0FDECDEAD6 +:10B57000CFC13646BFA08B1CC3FA7AFE5E5D90E950 +:10B5800035236820BC0F2ECFB7C27775CDB96D704B +:10B590000DB7FF43AB01FD91DC3613FC9C9C8EFE86 +:10B5A00057E4A1310C2738FE57A2895D173433FBCD +:10B5B0003619647EE11541915FD9BEB2C6A0EEECAA +:10B5C000A7443BF45AD5BA32B81CE3D901A0B379E9 +:10B5D00084E187EC67FEF382C3518F7DB794F7F760 +:10B5E000B920B35FAE55534DF0FD95D46FFE7F1477 +:10B5F000EF912D05E60F51BF0DF21EC5EBD7166476 +:10B6000075F6912D0C5EC0CF31DAFF7E99E1677F30 +:10B61000977ECC66F1B23EF047E53603F763B70597 +:10B62000993CD72DCB82FBF453BB1CED202B0FFB99 +:10B630002E42AFB37D1772E7F9FB813EA9BC6F0BB9 +:10B64000429DC3E65F75031D3B7542FBDB7D24EF26 +:10B650005A3F677DEA9B0B36C41522CD8620B8E0A1 +:10B660008E3C4BE513852F5C3366B1739158DD64D6 +:10B67000C2AE477BF4F88ECA56889F6545635B3936 +:10B6800045EDC7399CB5B2FE3CC0554BE1EAA1F788 +:10B69000EBB6E8DB36215EA204CE1F58FCACFE3CC4 +:10B6A000E4BF8C8B5102769E33DE27397E1DB82293 +:10B6B000EDE7717E25E01240BED5025C143E6BAB17 +:10B6C000DE0AF097AD62FB82EABA8808ED9069A0C5 +:10B6D000FEFC1C872BA3591F87F5DACAE9A0AE8BA5 +:10B6E000C557EBA6D97F7B747A7866110F3C590158 +:10B6F000F054CDF1742978B6061DBD6C7D2E88F40A +:10B700003826B0FCCCEF879E7A04E48A2B3F33F7CF +:10B71000D98205F125E3B931DB403F8AC90DB1F08B +:10B720007F91DECBBBF425EEFD5007395F47B8BFF4 +:10B7300059DCFF63C1897D9EC761FE96CDE8BF6C71 +:10B7400015B3E3421057A078EAE47261129FDC4E11 +:10B75000ECCAE371365F9AE06766A709ABFE03F5B2 +:10B76000465D33E32FA215AA6E73D9655F0A4A9E20 +:10B770007D7F75C0DFF09ECAED346AAF7DC4E53FC2 +:10B780001EBDEF25CC3F5753F905F652A4EBAB286D +:10B79000E722D416D2AEC6734E04904B73BAD83C8F +:10B7A000176F25429F8B8ECE717ED7395D54CBE3C8 +:10B7B000A3C02F739E3596DA2EFAF94550F4D89B24 +:10B7C00047B9BD1937BB44C06F1D31B6313D951126 +:10B7D000411ED76E345AD1FE0E31BA0E835D503EF3 +:10B7E000595F1EEF3CD30670D76DAEC7FA6FF853A2 +:10B7F00056E0BA61BEE1D0E65336C8116A2A9820F5 +:10B8000047C23CCE22884C8F12D3155771D91FCE18 +:10B810003813ED4E36EF5A794C70EF0776E0AA55A3 +:10B820007D2C7E404E109887AC313AB9F0CAF72D86 +:10B83000B7DDF16D3E7FEBA1428FDFE50F50FA08D7 +:10B84000852A26CFA775E4582D9FE7E2ADB6B0ADA7 +:10B85000D18D476E2773B940CD10C4B7AC3179B5DF +:10B86000F859CB86712581C92BE77DABCFB241DF7B +:10B870009571FD5FBBC5C27D2D1A45A8C4FC845FD0 +:10B8800004110E763FB495DD77E099B3B980F71FC8 +:10B89000EC91AC76940F850336ACE37DE7F1FE4185 +:10B8A000EA4795833FDC6C1E00B9B7FBCF7CA49DB3 +:10B8B0004CE58B232B5FC238EE11BEFE67FECC67D2 +:10B8C00031BD99F922E8CD7853A1E7C7F4BE1262E1 +:10B8D000FAB82EFF5301E2B24778DD5D1DA5C7D946 +:10B8E000F4AA517F53837D2A5D239F8673DE34B093 +:10B8F00067A00DF60B6DFF5D90FB3713FE49E1F776 +:10B900004AFE1C2C923F8BA99F08F2D5E12398E7B1 +:10B910002CD7BA27B9BD5367F94AC66334C71EEAA4 +:10B92000B4516F38F4616D196985F86BD92A4A975B +:10B93000943E161EB6C520CA691DE972494874F4C2 +:10B940008619427CB17D5993FC660BBD4CDFA33D4B +:10B95000B64BB67B06800EBAC871AEC73D7C57DDCC +:10B9600039867C570F7CA74FE5BB60A3377E584BC9 +:10B97000CCE7A1646E0ADFB58B28DF8AF9EEC30E2F +:10B98000DF3509BC9E565E1D689ADC275ACC77D7F6 +:10B990003B78EB9AA853FC70C8251F1DFA3E20E89F +:10B9A00002E6150482F574A3852F633DD2E1388B3E +:10B9B00043079379DC27E63F29A1AF30DDBA96AD86 +:10B9C000EEF0D41BFF5D2881F0061BD39EFBF3062F +:10B9D0003BABE5127E9FE3FF50BCF76C73E13D9EED +:10B9E0007EF3229C5F53B7C5E075D42751FE859B3B +:10B9F0004532E45A0727D451B785F95B35D4DF12B5 +:10BA0000319F9327B02E47E8BA809C2D8EE3168F86 +:10BA10003FD16E1651FE819FE55E876D21A6DF8FB7 +:10BA200034096DB00ED608FD07F285D7236926DBF1 +:10BA3000F728CFAAC475F854C8D9AF4B9A04577DDC +:10BA4000335D8F6D215C1FAF5F15D2C631267C4000 +:10BA5000617262A87BBF27AEB087D3AD9CCC5AF091 +:10BA6000D15EC1C4732341267DA5C4FA3CCCE9E66E +:10BA7000E190C1BE1B34D00E97769ADB709F9E9EDC +:10BA8000B50C8C9BE5F0DC56DA8FFE1563FA7EEA86 +:10BA90007503EDF6799AB90DED054EBF8E9DB30B8A +:10BAA000EAFEB5A9FC11CE907CE0AAA97C114A96C9 +:10BAB0005E8F297CB1B1345F3CC3D7E3EDF2C53171 +:10BAC0008EBF50326FFB991E7A26B47C2A5F8C168B +:10BAD0001EC57D87070BF3663CB7A998EEFDF1B74D +:10BAE00047EF128F374FB4A78937BF32111FFCFDC4 +:10BAF00090DFBDDC2FA5787B25C0E2967D90D776C0 +:10BB0000EAEC248DC99BCB8DA7FF90C7277A218EA5 +:10BB1000E63D7F94EF2B281D2F9A80CBC9FFF33889 +:10BB20005EDFE8CDA4BEE4BE501EBF8BF1FDC8941D +:10BB3000585F2B610F4DBE6F23FE7BBB73C887CE52 +:10BB40007ECF7ED8EF9980F3B09FC4FB7BBB9F6311 +:10BB5000FBFDEACC34EC8777F67FEEECCEE37DBAE2 +:10BB60007C4988877E56BA16CF2BEF154DC3D9175F +:10BB70000AF5E1CE3ED0E9F07E879660FBC98AF6F1 +:10BB8000833AFB40618073BF07F4A1C4B32D70B446 +:10BB9000515532359626701E38B5955DEBD96DA49A +:10BBA0000DCDA5879418DBD7F1FB023FACC339BAA2 +:10BBB0009EFBB8DFBE4F2359D0F73E839FEB5F93C8 +:10BBC000C983DDE78BEBCF082E3AF4C5D24474D19C +:10BBD000B7CFCC5B205FF71213E58F4DBF01B9BA29 +:10BBE00077F51A4FFDC26A8DC955255EDA9FBA51A5 +:10BBF00063FE141D0FE318B378BDE1AC1B9B3CFD45 +:10BC0000DCC2FB91A6E9E70F2803F27E66413FFB09 +:10BC100074760EC7543A6B403A2B5BFDDC643E945D +:10BC2000C03ED3BC87FFFA267E07C062CA5767F1C1 +:10BC30003A8A27A1D4B9A9766B06CFC7B4B7C9048D +:10BC4000ECAA87430FE0F9995DB65F073B9EC4D825 +:10BC5000F99AFB6455073BFDB392712B1E6AC27FB4 +:10BC6000D7E282386E8362D448CE42AEBC447F179E +:10BC7000027559B08B9DDFB1707EBF625F9CF60B81 +:10BC8000E7E7AB79D44B829CF39C0F96902D3CAFA9 +:10BC90004F556D15F85882BA18FA9E34B204F52340 +:10BCA00099381F8C201DA8BA857220484CF44FA3E8 +:10BCB0006DA2A71E26647AEB6364CD6679BFD3526A +:10BCC000168E6477CE0D83B2131857D6A89E44B84B +:10BCD000D9B9F74E7E795FDBBD24C7BF2B752EAB7C +:10BCE0007395093B3F1FF6B0837EF593997F87A13B +:10BCF000789CF8DA54B4D4F926D3BD4F05BB71DE75 +:10BD000095979FFE3BEFF90A4781662A609DFEA04A +:10BD100012E49941ED4F386FF152E7AA1E15D34F47 +:10BD200082FCF8A992B986E551D9BA52F3E903F831 +:10BD3000FB1E24620EE195D56562DDA60061D491FB +:10BD4000BC9580FD09DEF31A4250874AFBF914F7CF +:10BD50003B4349EFF3E2FACDAF69CCDE58450AB870 +:10BD60005E1155CBE379E1CDDE73379D79DF1BF7AB +:10BD7000D65B155F45A21A1AC478793E5CE06D6700 +:10BD8000FC3746048CEFDF4B39AC6BA9BB5F9EFFE1 +:10BD90002EE2B368228BE797911691805E1952C903 +:10BDA0000B207FF65A9B0C9063706687BB2EF4378E +:10BDB000DA3C760EA4E513A1CE7ED7C91B67033FFC +:10BDC0008F28FACDB89F62B9A81F2F416FFFAE31FF +:10BDD000BB24D815321F5B36FDFC823E56CFBAAB72 +:10BDE000E98D14F417B92E360BE87768B4EA053CF0 +:10BDF000AFC2AA4C402A2B10E6767293571FEFE58C +:10BE000072786F92C9E1605704C7BB147CDFE7F218 +:10BE100030D815301F9B01FFBF6DF81C3C9EE772A8 +:10BE20002BD8A5E1F80E5E212206E7E128FC5C7420 +:10BE300068C379A792A5625B295C93C7F34FE97346 +:10BE40007F33DA59FE30C4315EB708C89BE27CEA22 +:10BE5000298D9FEFAAEACCEED663AC6E3C2D633DF4 +:10BE60007524CDEAAA27F9D066EF275F4D813CDB28 +:10BE7000D5C8F6408492CCDF0973FA882AD993306A +:10BE8000FF68CB827A98D7EA30A3FB1125A7429EA0 +:10BE900076A8276A1C47389F1D5C47870C8ECDC744 +:10BEA000FDD9CEB85698E39F68581FEBE0E1A0603B +:10BEB0003CBC0EE4760BDBE7B8F0E4FAE7E10CA754 +:10BEC000F9634B5A6BE9F71FE4DFCD2A2C1985F68D +:10BED000FC303F8F73195906F47DEFE1CCB7E05C7D +:10BEE000907B5BB6DD04D74FEFB76E8294F2A33B35 +:10BEF000D778F24853F72F10DC8FBCCB1203706E4B +:10BF000080B37F8134355DA24E9ADB8B53D62D45AD +:10BF1000A05E46E2F50D72F31ACCA7EAF572264A46 +:10BF2000D7CD3A6B1218A7CC79BF89AD8BA3CF269A +:10BF3000F69FF0F817218FA13CA90D73BA99C01B89 +:10BF4000A377F2CD9FDAB0CF2244E90452D8A4D12E +:10BF50004B87B561162F75D69B0E68BF0A725A5073 +:10BF6000502E38F89C6E9EEFF47AA49BD8AF523CCA +:10BF70001FE3D7DD705530CE8CD7217EDF79FF4FA0 +:10BF8000C33C7FCCD793328FFD2AE8ABB94C7E39C6 +:10BF9000EB5BB785DD77E4A0B3DEF57DDEFBD1E6B4 +:10BFA00018CED3691B5BBDCF4349EF73875E1CFA84 +:10BFB00070E8E6DDD2471338BA2E3F32CFED0129C3 +:10BFC000CEEAC3A5F820E6BD1DF97BAE3A65873100 +:10BFD000EE98C6BAC0D1AA05D1828B7F8BC719E86B +:10BFE000CE2D71EFF376F64FF86492579682DF9973 +:10BFF000F39C673075FFA9953C46DB3B6295283F73 +:10C00000FCDAFF389327B03FC9F8A3FA19EC89DFAF +:10C01000C23EA4C36197BDFF6EF7A3BE837D484FA8 +:10C02000C1F87DBC1EA3787C4B6FC4BC777586E5D8 +:10C0300073BEC1E55C2D29F4282CBE9E525DF5C06F +:10C0400073D78D55FDBD01E72ABE94C07301481F0B +:10C050009E2F45B543D3C519F460B1FDE3ECF368F9 +:10C06000496FDC0FE79455671A97F2BA17361E8CA2 +:10C070004DDB635C1ED692FCAFC1A6AB23E3F83B5D +:10C080004D464A6F85F4707D87F93C5C293C8BDE18 +:10C09000CD7957D3EDD372DE7FAFF6679DE3F87E9F +:10C0A00041B3CE8597FFEEF6678D4F8E3B5E6ADC1F +:10C0B00062BB6AEF6D11B6DF94FAFD50DFF7F06DE9 +:10C0C0000FA03F103C1B30207E6FB75A02EC4FB5DB +:10C0D000AB89D94BD7AD2B99B2A04EFCAC98FE2FB3 +:10C0E000E8BFE5072FC781BF772DCACC05BF700217 +:10C0F000DF9AF7BCA6DEA2F39A7AB5F7661F57EF70 +:10C100006FEFBCA6EAC8F2A9FD17EF9B92C20FB170 +:10C11000F3072FF3BCA658B9B5047FF785FCE34DB0 +:10C120002FBACE695A1C19BC49837399A088BA9A50 +:10C130009025BB5FDC0EF1FFD81CEB6978FFD5C8FA +:10C14000FFB92906E738CD63CF57EE61CF25356BB0 +:10C150004190FEE1A8C1F46CDA87E7C10493ECF7E3 +:10C1600044489C14204EEB9CFFD16DA457442A26D2 +:10C17000CFA1F0C559BC62E2DC246AF7F967909F51 +:10C18000C7785D25FCFE0D5C8FF2F32886F9B9496E +:10C19000C13E15CF81DCD56D601D26FC0E0E5C0FF7 +:10C1A0007777E0F569297523E0379864E744EEE78F +:10C1B000E75F04B8DD7A8AC7895F8A30393179E56B +:10C1C00071622E67765F7B47D41D2FF8C388E0D15C +:10C1D0005703DDE6FB4EB8E2CCBE8DEC7790FC71E8 +:10C1E0007ADFC51755FCDC8C03F767C91A881FE78F +:10C1F000BF8071B6BBF9B87BBA33D7413CACFFAE58 +:10C20000CF5B1097DADBDD751DC4BF02F2B80D718C +:10C210006AEA382D01FF39A0921EA47F8BB609FC73 +:10C220005E8ACEDAABF973DDE8C1F7DB587BA0DBC1 +:10C23000BECE1D07D757D1715C70F99269B2BE119D +:10C24000E2165D9EFBFEB8ED69275E7CB20DEAE466 +:10C25000B693B00E7EE250CDBE97213FF0460395D7 +:10C26000B6E01FE60FBC1C05BB5FF31901DAEEBD9B +:10C27000DF7BEEC50EBA8EEEDF990A378CD90077D8 +:10C2800020995E06E4EBE89920FCBE976BDCC8FBC6 +:10C2900034762E759CD501F6727C39789E90CBF160 +:10C2A00091EB64975D27931CCA7BB9F1EB3D90A796 +:10C2B000A1F625D02839265878AE9D73DE87BCF1CB +:10C2C0006B985F5DB3000E26A2F4FAF1D5F96FD139 +:10C2D00076F6C500E63313036D79D8276DDC16C4F6 +:10C2E000BA8CAA3A277E63AAE09744DED79E87BC21 +:10C2F0004BF625F6FC8B1196BFA9DAD4963F4EBFBC +:10C300003B743B3BF771D12A13F7AF0F6C6EF0FC17 +:10C310008E666FBC7EC6BA6FD490AEF81E9E8CEE51 +:10C32000E1FBB2A27675D1FBF545CFAF287ABED43A +:10C33000D31EBD8BDA538D989FE5E7BB3E46A08E9A +:10C34000F3C05D4FC4810FBE1261F15443CF79CE6B +:10C35000AB99A33EE769DF174E7D85F11FDBDF1741 +:10C360009247D0E80FF5EDC7DF8B53E932829F1675 +:10C37000DAF879DCA7083F1F04F594A1C6116C8791 +:10C3800055964F0EC44C0BE251819865419E361074 +:10C390004BF1761AAFF795A5BF09E3041AD8797E59 +:10C3A0004A8CF905878B7E0FC4B99EE6FCEB9C3B5B +:10C3B000E3DC57F8EF0E250606B19EBF6F56E70A7D +:10C3C000B0870EDCF51184A7AF6CF30A40D7E908FB +:10C3D000AB97B0E0879A62E857A2DEA1FEE6E908D3 +:10C3E000FA3BEC7C59271FE29CDB396F8E7506E423 +:10C3F000E1F7224E9E999D871BA6FE10D0A9B2D1CF +:10C4000087E7175D3F37FD0AF4A3C4B2AC9E3BC972 +:10C41000FAF9F81CEB07D8BFFC18DAC71372586397 +:10C4200072585259DD39A571DB7D0E1395C33F86D5 +:10C4300071831DACDEBD3A497A406DBE5D393CCC9E +:10C44000E56F7F519DBB737D5A4AFF02FB6F549984 +:10C45000DF35216F47D2B0BF2EB4A7FF267925C89C +:10C46000DB9401EDB776F76F5F8D3F9490C579044B +:10C470001B191F076303634C9F307AB92F6CBD05EE +:10C48000F31D5DEC63706A3E84D3397FA8188E3E3D +:10C49000B0F35DF069A295473FBB551581CF9DFB79 +:10C4A000B25979A701797FC09F3B9EAE7BFD0067A3 +:10C4B0007D1CFF723A7C8F76886F0B8F01EBE9252C +:10C4C000F20CF1148AC79A28E0B141F3E291D73D0A +:10C4D00038FACA79BF29CAE22ACE95CAE741C523EC +:10C4E0009F3714C9E78F17C9E731FC3D477B3EC929 +:10C4F000819EC8F3F5E80339ED077A61EB12D0D9D4 +:10C50000BE6239969E07E7E99EAB4E2F8D32BE463E +:10C51000FF4B71FF4E22FDB73CEAD48933BA7FBB93 +:10C5200078A4749B265EFBE1FDD112745BACC71D41 +:10C530007CEC8932BE76AEB07FA330835C057DE4AF +:10C54000F60B030DB630D33983A31BAE403FD3198E +:10C550007F2AFD3DE7F1339DEBFA68C24B67BE349D +:10C56000B9957EBF3F50BA9F7494D91F8A2FCB7E56 +:10C5700077919F2B1788EBC7DCE7D86DE0F3840336 +:10C5800069591C7704AF718E17AAD3CAF4E8E4FB8B +:10C5900019FE7E3CE8C59B73FD94336ED03B6EB0B4 +:10C5A00046F79C67774F54E0EB9B216C5D19DD04E7 +:10C5B000E28C6FFDF10CBB26B316D2EFFA81C400FA +:10C5C000CAD324D6F9D1793179BAED4A11F4663754 +:10C5D00087CBFA19F1C853D739DDDD406F72D2FE2F +:10C5E000B9FB7C37671D14B296DCE39A4F3FEFCF5F +:10C5F000C1AF02A65CD9245EE8679EF787F97C1C70 +:10C60000BCD0F7578B54258E70F9E0D0B1A27BF5E2 +:10C61000DBDBA5EB87A32CBE44DB96558F57EAC026 +:10C6200050FE0C5BFBA3B87E368E3390DA9CBA8B3F +:10C6300076619DB66C888795A535E7BC3B1BE2F813 +:10C64000D4A5CA1C647557C7101FCE798D7147CF0A +:10C65000D89E73757B799EB5A22E75CE70E555DF99 +:10C66000837375BF0C7C3AEDB9BA19C72F667EDAB1 +:10C6700061F0D312937EDAE1CC7BE3A71D7E87E7DE +:10C680006D94F0D3BE1D7D1B7E5A403B51B5895C35 +:10C69000BE9F066802FA8A5D6DFD9CFDCEA6D68619 +:10C6A000FEDA42EB6968F76EF7B7C179D6B165D6A5 +:10C6B0003D605FD6E991B6B66BA79FD7049F9659A8 +:10C6C000AFC3BA4CF1979D732AC3DE732A2FD75F8D +:10C6D000DE235B184FEA335663BE6F329EC5DA2500 +:10C6E000E249BF72E3B1386E70B97EB533FEFF0721 +:10C6F0006350C6C7008000001F8B080000000000C8 +:10C70000000BCD7D0D7854D599F099DF4C2633C9B7 +:10C710009DC9249949267033804C30E0240C103593 +:10C72000E84D0892406C478A3576D9DDE1C78AFB2F +:10C73000D167A3628BBBD8B90921094990801182C6 +:10C74000603BFC8A6EED0EAC9FB55DBB9DE04F6318 +:10C750006BBF6F64ADABAEDD461679F6D9F5B15956 +:10C760003F6B691F5CBEF77DCFB9C9DC9B04B1EE9E +:10C770003E8F791E9EC37BCFB9E7BCE73DEFFF3903 +:10C78000F74CA7DCE0A8F031A6D699237364C67AEB +:10C7900004DC5B3BBBDA02F065FCBB99B17C7783C0 +:10C7A0005D2A62F8A7B062C6EC8CFF1DBAF7EB8E6B +:10C7B00078156305B52C32DBC19F5D6613EFADB70D +:10C7C000C6E7E27B1A6CF74758DCC55891049DC355 +:10C7D000738B2BA5DA2A182B599BA4E78A2BDE6EC4 +:10C7E0008BC2F32A16E96513CFF7CC548AB19FF3B5 +:10C7F0000512BD77283012C071B57ED469DEBBD575 +:10C80000A39C2FA0F7E0E122C66C803E9BC598EF69 +:10C810002B2DCA0E68BF83B1364B04C66D857A983E +:10C82000B7B78A257B011FAB94A6F7DB5C717A5FF3 +:10C83000C3DFE61BA3E75BE11533B4676DE6E4F104 +:10C840000A9C753AF736F744BB436DA112C44F8377 +:10C850008DE5C309A0D79CE9EB0B4C2C9682711C8B +:10C8600015C71CEB5D13CF6B2513CDF71597528BB6 +:10C87000F430D2FD50935C22B93EFFB83DF211DD99 +:10C88000B82B70DC4534EE0A69D1E471190B4A17F4 +:10C89000F2046C614C4AAB67907FAE7B9ED36B6FAA +:10C8A0001DAB355D0765D33907C28C25A9BFBD49CE +:10C8B000666605F8FC4309E9E56D4AB1A9E876C466 +:10C8C000936C8DC17BB3AA223F33C3BA3173F85442 +:10C8D000DE0C28ADF00FE0BEAAD0E15E13EF377B8F +:10C8E0001D8EF61F511DB04E9EF619A72D50B68411 +:10C8F00093EC1CF4EFEC4FB2F559781CAD62372184 +:10C900001E47FBCF491CBF017A5EBE4531233CFC6C +:10C91000F8E282D12BACA77BEBDF57372E8452395C +:10C9200055DD58387D3B6DBCFD4BFEA5ED05C0BB0C +:10C9300040724672E0698175548E5DA1FF3C16B964 +:10C94000E308CC2F6FB659CD5930B9BFF1765B2FC4 +:10C9500004EEBAC2F83BE72C2E895F813FDC5BFF17 +:10C9600095DE0789223EABFAA4E3CCB588A7C2E5E1 +:10C97000A2E0907DF81E80EFFF3FB9AAC38FCF7D64 +:10C98000EAB9F0041F541CF2BF720FD07937734B11 +:10C99000BD50FAB6DDFB760EB4977A988CEBB3A750 +:10C9A000CE4CEF7FF86AAECA22A84DB2DE0F311628 +:10C9B0004A3FF87601BC2735D9E55C186FEF43CCC8 +:10C9C0006485F6EA4E963A0EFCF454021A02C12A25 +:10C9D0004E5E74C4609D4327E5334EA89FF7BDF8B3 +:10C9E0002CB34CED5B5340C76B4F9A19CBC26B4FC6 +:10C9F0005DA880C1F38A67E0BDF993E7ADF5ABC1EF +:10CA00009FB5DFE9E869EC573AC98645BF0B2DD4DD +:10CA1000AF64EE47FD5BCFF5C8A4FE15E8FF0AEB57 +:10CA20003509EFEFC91DD8FFB52723D720DE46FE15 +:10CA300030F68FF5480F67A7F95D5B3E94B51F256B +:10CA40001896ACAE7D7C5D48BFC13A81BCFF3264B4 +:10CA500026F9D6F803F520EA8B4EC7BF169F07BE0E +:10CA6000B1E6FE47F1799083EDD82400CF6D4037D1 +:10CA7000922776E9E6C50CBB06D945E8B2250D70CC +:10CA800017C2C017EF491EC2139E5FBE0CCF3BF109 +:10CA900079C5F4F3EE34F1F5E8CC65ADA7A7A0FFB6 +:10CAA000BB425F75BA793BFA033A5BFDF291DEACAB +:10CAB0007EDF93CC340FC447C9B26B8847A298ABD2 +:10CAC00017067474B18CA282DDF8A1E9459606FAC6 +:10CAD000E6C55D6DBD608ADCEFFC348D7600F08DBF +:10CAE00014D642BBA8F5E3D16CBD68795EC5717FF1 +:10CAF0000B38584CD83FD487C5F88087AB0A0C4711 +:10CB0000FEE4F7F21C29867ADCCAF8F34F6D0FF6C3 +:10CB10000AE5244F616DAA07E99C554FEF6514D4CF +:10CB2000933097B6658129F014788518D7DF5BDFDD +:10CB300059977C31AB3EC7E3F6917E5FC296D0FA3F +:10CB40005BD616909E747919BB7E32FD7F9788273D +:10CB50005F9C33C1277D82FEEA2013F63266467C55 +:10CB6000420E36DC5B4D446E68047896E238D50B95 +:10CB70007A21E8E1EB67B9F4E70DF85ED2C1D2BDE6 +:10CB8000302FA7EA752A306E48F0AB2B2C99B3F5FD +:10CB900072856A762A00CF516B5EC6FA59AC95C68B +:10CBA000011E93860308C7CE5C86FE0AD305633D4B +:10CBB0004B016EBAE6CC2CBE7E63163FC2AD0DB300 +:10CBC000A28207082E35CF8E122B8E996B11AEEAFA +:10CBD000C07AE9BE7C9921DCF8D533CB00AEEE12E9 +:10CBE000ED1BFDE646E8EFFE06C79803EB07833A28 +:10CBF000FD1812F215EAD43F9F44A717353A49169B +:10CC0000C47F1ED2C943F2DA80FD47904EC07FF543 +:10CC10001EEE0F582ECD5C86EFED453A013D9D4D41 +:10CC20001D44877949A0D302A493AAA353B8299499 +:10CC30008BF5D54D4027A8DF5DE7A5719EC201E1C8 +:10CC4000FD9B2F152C5B06FD559B988AEBA1C9A572 +:10CC500097781AEC7AFD47CED9F0DF79B5671E34A4 +:10CC6000E54FE89979B5BE65484FE211A047759D3B +:10CC7000AF8184DECF46CD8BE955FA1B12FA212114 +:10CC8000C7BFE281F74A5B07866D32FA83CC84F630 +:10CC9000BFD726E4365E43ED965BAA0ACE4DA107C8 +:10CCA000196BE77E04E8412BF0DB40C241E58E843E +:10CCB000C4AC36C69E4DF8097E2A2153793211A69E +:10CCC000F2442242F58713B5547E37A1D0F3C7133F +:10CCD0004D543E9388D1F3D389568253893895DFDA +:10CCE0004F6CA2E7DF4BB411BC3DB195CA7F48A899 +:10CCF000543E9FE8A1F24789012A9F4B0C51F970DD +:10CD00002249EFF5274E52B93391A2D2EB940F6C22 +:10CD1000443FF26796C87128F6960E905F79744F7B +:10CD20003CD2214F9EEF81C4C0526B96FF367CD718 +:10CD30003557F44B609CEAECF6B94D0ED5B2004B7A +:10CD4000D587EB92DB3450CACBA497D1F3941FE183 +:10CD5000FD9E5944D7DCA6575BC91ECC867EB2F433 +:10CD6000C1510FD7EB7B3B4E0556678DBF5FC8EDBA +:10CD7000419389D66FEFBC48E96AD7E4FAA315DA84 +:10CD8000FBABA7AC3F6E3253BD713E4F7BCC543FE3 +:10CD9000AB29D58EFA6ED404C6EF26F0CBFB631D0B +:10CDA00056A4A36A633975A45FD276802DB2B50DFF +:10CDB000F9D736C8DB4B1D76AA9FD3A450BD6C6251 +:10CDC0006DAC14786730D281F50E13BC1F8475C921 +:10CDD00089285F47BD60666D1DF0BEA5A9358D7EB3 +:10CDE000A4639DAB2D07F83ACF35A698B2D607E2DB +:10CDF00084A7918FAD4D5DFF69C9C7F881BD58000B +:10CE0000FDB99A58D282F1048B107E07D582782F13 +:10CE1000E9B9D56609E8D33018738E4E31CFE39B5C +:10CE20006B9C2807124BE5A27D3EBAF9CA7E0059D9 +:10CE30002E4D9F8090FDDEAC3CEF01BDE0CD6B6BD5 +:10CE400043BFF24082A9E788EFA0047EB820E86CD7 +:10CE5000B58266047C0EF69BC9BFDB6B8BFDEC1ABA +:10CE6000C0B3FB5173E408F475BCFF8C05FDB10F32 +:10CE700037B26AB483C3CD6F2C43F8F826569D238E +:10CE8000E3FB69AA3F389BD5F4027C66F0EC329C48 +:10CE9000F7D130AB41BFB674A35DE76F1CDD7C4EAC +:10CEA000B544C9DF8EA0FFE39CADAF97586C25EA6F +:10CEB000B183836686F81CDDFC611ADB7F18066F80 +:10CEC00011DAE7440748879C196C207B761CF0CE6A +:10CED0003161B9DA89F6C85905FD65DBADD97AF853 +:10CEE000F8A7D0F1C67FD3B7BF7E540F5B594CACC7 +:10CEF00063BE82EB382773235FC7FEC894EB787458 +:10CF0000F36ADD3A1EDFBCFA8AFE22AE635ABF8E98 +:10CF1000BF45BEDA5BDE467601966EACA37A621D33 +:10CF2000E748DCFFEA13EBDBDD6227F99EAEFF9CEE +:10CF3000A6DE18CA794ED380C4CB24E981E9DACFC2 +:10CF4000F656109F7437A5A85D77F0B4635DD5C41D +:10CF5000B8C6F645DE1C6A3FC7C1EBBB83474064D9 +:10CF6000B2FBE3F62AAB5EBA5B579FC3EBD1F1BAD3 +:10CF700001E464AFB453C5F1FCD0BE0ADB9F99BA9B +:10CF8000BFF1FAD3D23DBAFA5C8E4F501BEF8C340E +:10CF9000D5FBB3BD3CAFD01DDC4BF90C28291EB529 +:10CFA0005A61DDDCB88E53CBE30BCD8B69DD8F6628 +:10CFB000563B910FA6E34B4902B942BE7FDDC27AD0 +:10CFC000A7E07B97816F0FCAA95CF4FF3C0AF0438E +:10CFD000D673BB2F8B3F483E57131E47E58813DBA4 +:10CFE000B3B8DE1F5BF2A6FEFD6B4FEA618D1FB585 +:10CFF000F18CEB5999D4B79F3B6478DF30BEF1FDDB +:10D0000050A71E5F799B01FF4F197FC6167DFB4518 +:10D0100099A9C79F8E7F178EE8DB57A7A79EFF5160 +:10D020001C7F0AB9BCEE397DFBF9A9A9DF9F6E7C94 +:10D03000AB4BDFFEE68B7A58F3FB76C4D6C6EE0226 +:10D04000BE505E57548C2FBC185FA0DFC5147514FA +:10D05000FD7A30318F45D0CEC85C6F8BFC94968FB3 +:10D060001A9A1F790BF322A3A81CC11E7E77FE28F3 +:10D07000C18AA580E083F3930427D138011C7EFE8A +:10D080002CC1B9AA9BA11EABBA749A7D1DCA7C7033 +:10D090008471DCBC967D0CED1F6BCA253F2E6FDBC7 +:10D0A0008534FA292F6BF0D67DCA51801B308E074C +:10D0B0003F373FFAA334BE7FFFC326867E6FFE6CE8 +:10D0C0007D5EC0B7ED948AFDE542BC857E6BEE3691 +:10D0D000FB9DA8D75777007E606F772F1AA0FE18A8 +:10D0E000F607F698CDE6F126BD0F4149DF035F5DF7 +:10D0F00089FA0A6328F407FB02A937D7C3FB3B9BD5 +:10D10000ED912332DAAD01CA0F6974FFBE97DB37A8 +:10D11000AD84BF463FFA03608F799E2892DEE0C35C +:10D12000B88E113E00B38D98E7E8E4B025DA93415C +:10D130003D6A893ADF4592595ABAEEA5F1E3FBEE12 +:10D14000473D68D97AE2012A373FFB2D2A37BDFCDB +:10D1500020D56F79E3AF11067FE0FB5E8C5FB65D93 +:10D1600078889EBB785E6B2B93CEECC4F8A20EE25F +:10D170007DC0E33BA6CCBFA1BD541FB2CBE8EFEF0F +:10D18000FAF66833D2C1CFCAA50E78FE9DBAB3FFB6 +:10D190009683F65781D00CEAFDE95CB2037E453AEE +:10D1A0009C8BF3107EB91FFF3F0BF36E810E5C4F1B +:10D1B000A92594C4FCC94ECC0FCC057E784835A176 +:10D1C000BFA3AE63A7D0CF94C2AC1EFD4C49892C3F +:10D1D000269FDCE523BD21C519B5CB0DC767619836 +:10D1E000FE98496AE8A3F738BECED9669D9EFA4EEE +:10D1F0000BE087F679136007E395A6DF22B8B451F8 +:10D200000AE1F81A7EA5881F0CE411F87B1AE5C321 +:10D210007AFC92ED84DF3D801FACA7272C117E9E07 +:10D22000468E9FB6AE9E4D527B367E074DDC8F9C60 +:10D2300084575CD06D3360056397215E00976DD293 +:10D24000E35526E8568A7821DE9B8C78A58609AFBF +:10D250006F70BA9586938457E9263D5EA59B93C36C +:10D26000D9783D6E92CCFDB8AEDF98866E9B057E78 +:10D270002AA79B2CE8266FD1E3270BBA950BBA950A +:10D280006F31E2C7CCE897AAED9C6EE5E10CE1575F +:10D29000BE458F5FB99A31613BE7ECC83566C22263 +:10D2A000A9CB0B19F1DB73C777CE60BED419E47636 +:10D2B000CCE98ABF86FB027DAFD95807D40FCFFFD8 +:10D2C000A61FE38EFD777CA7C304CF7BE7F376DD53 +:10D2D000956FF851A8DEB3675A37C07C7A17994921 +:10D2E0003E2D985841F90ED98F203D8C7AB2A4B0CA +:10D2F00082F4E0AEF935A44F993543795C8B53BC89 +:10D30000B758C4C3E2799FC464EB7550CAB8288487 +:10D31000B6827A88C6B9812B5607E89F47421AFC25 +:10D32000BDE64DE0F793ECDF20DAC338FDF6F1F708 +:10D33000559CFF230D5AFD096ADFEF34D49B4DA2A3 +:10D34000FE49AA77B394039C0216291C6A7680FCD6 +:10D35000FCBD3952E90078011BDAD9583E7DFD9FAA +:10D36000150EED6C9A3131FFC1B5D6A6E494F16D7E +:10D3700027AD93F362802517C2F8DEB64DA8E79C6F +:10D38000D624EE554CACDFC5A0AE7E10F843015755 +:10D390002AD6FC3AE5BB1B0BB91E94A26D2AAEDB64 +:10D3A000CC688ACA9C5852C1F57286538A0DF3B56F +:10D3B000B06698FE754763148777D99434F265D7C1 +:10D3C00022966C47572966664A169FB89B6AEFB645 +:10D3D000827E63517D1E57B36BCE8BB92C593819A1 +:10D3E000EF1B0A653DFF5D7451BBFFF9F69553D203 +:10D3F0007172FB2A6A373C6A5191BFBB7C2C99033E +:10D40000FC67F30CA515985DB525EEB809F578997C +:10D4100099A1DC4D5A379F756C54470FEB3984CD79 +:10D42000AA895D067D53C9629487CE15CFA95D0593 +:10D430008ED35042FC9FFDDC3219F6AFBD9BDD89D7 +:10D44000F271B190F0D4C6ED2A0CF3BC993542F9D3 +:10D4500043CBC562AADFCA841CB9B81CF9B7DCCDBE +:10D460005667E5C12D7E96CE453B25F280261313E7 +:10D47000795F0E63020DF19E6E5FAAAF707C7FA88C +:10D48000AFF02AF687C6F7CFAA78DEFBF40C8E5FE2 +:10D49000F77CF3E10E80BB3D1C56DD76AA6F5AFC8B +:10D4A0005C0FC6E743556613EA994CBCE14D5C97A7 +:10D4B0001CBF5D46B8AF8AEFB7F983C0D780D7DC11 +:10D4C00085225FCDCCECF25CCC27A59809F571B331 +:10D4D00095A1FE7929C4EB5FF2707CF2AA640FC6B5 +:10D4E000055DB9F12113C8E7D247955556F033AC25 +:10D4F000CB92438CF2936F348F807E719A853E502D +:10D5000037AC525C82AEA00FBAFC2DFDAA8BF2564E +:10D5100054BFD3FFF64E8487DFED0EA09C0DFDEACD +:10D52000413FFA69DD817800FD4CC9DAC66259FBDA +:10D530005439AD5D19CAA305F572B4CB047A0AE972 +:10D540001070901DD1F6EFF69A143FDAAD87C5FE44 +:10D55000D7C3EFD8922AD0A9C714A7E761C7680F2D +:10D56000E629F7C93EDA0F7DA738A4E3EF7CBF3D7B +:10D57000327B8A7DA25E11576AF982E1F06907E287 +:10D580003FBCF1744F08D7276EC6ED06D66B6F6BA4 +:10D59000C278A67B8199619EA0AFB563E71C803FEE +:10D5A0007AD546F972ADBF578B79BE6687ADAD357A +:10D5B000467CCDE97E3BE08DFCA4B55B53C4E3B073 +:10D5C00003762197173D4C05BEB53EC44CAB814E4A +:10D5D000AE62A1BFC28BEFB6623E6AC691B809D6F1 +:10D5E0006EC1BE0F9A1DA0679D4EA1B7D5DF342B2B +:10D5F000A0978B849E5FB0EF37143F1AF7994ABC0F +:10D600001C0F1BAE3FF0C75C8F80E7E9F11A48D4CE +:10D61000569F077AEC4F28D5E7616A8F269AA89C17 +:10D62000CEDFBFDA52A3F3B4F5F99C0E95757CFDFD +:10D63000EDCDD7E8F62D5E2ED2FC5A8E77A08CEF7A +:10D64000CB5CEDF856EFC543D7C17A6DA9B4CB9842 +:10D650009FEA3575BC52827C6672A48E4339F48E83 +:10D6600085E2D86ED9CEE551E17CA6B672793C9FB1 +:10D6700018918E21AF3BF8F342D94EF859BDB51E33 +:10D68000E473E3FC7A2F1DED0941BBBE2607E535A7 +:10D6900087AB8E10DCED7346308FD49B9FDC44E368 +:10D6A000FD855D3E4276BE6DA402F9F7B542E2DF2C +:10D6B000BB2C00A3BEF8BF36CA933E76CFD7DF8A15 +:10D6C00043FDFE225704D5A3ABE639FF3DB0CE4F54 +:10D6D000143B888F5C6616A77DA716D0C3597104CA +:10D6E00070A4742C4B8FE617F1FD9FDDD69403E5F3 +:10D6F000B24F7E6604F95C3B0FE1A8E0F014E7212D +:10D70000C23E3C4F6051EF0C205E961C761CF5D358 +:10D71000BA5BF25F0078DF9F5A255477DE3DDB87E6 +:10D72000EEC278AEC22EA35CF409791848A4AA3BD5 +:10D73000697F24E2473BF008C01B89BF9EABDE38FF +:10D7400007ED6ECA4176C7E4505578BFC4145B003C +:10D750002A9DDDBE2FB2CAB114FCAB505B00F5D2DE +:10D760004F7CC77AADD7A35F92FABB4ED05BCF0C8C +:10D77000CECDB3E7A2FFA5BCB21CEA4FFBEEECF5A1 +:10D7800055E2BC52D7320F87B1FD7ED413D0DF579C +:10D790001EBD7115C20336213F2CDA877ACDA5E96B +:10D7A00039F493807E5283A6F7DA56A2DF63B1C7BD +:10D7B000FC128CF7868FA94D75597E941A5E89FBF1 +:10D7C0000A9ADF74D6F7BF7A51FE2CCEF426F48382 +:10D7D000868AE7D3F85ABD5CD2D1A7D2FE6086F420 +:10D7E000A1BBD149F92B375BC3E551D845B6E976E2 +:10D7F0009DFCB66EBE5DBF7F62053AC2FB7126D945 +:10D8000099F0610E81FECEF96990E0EE5BC11D8258 +:10D81000F9EFF0795F5E07741D8D399945CAF24BB7 +:10D82000BFA6F997AA09E95ECCC22AC651DD926467 +:10D8300047BF9E9DB133C70D98173277E139930DDD +:10D8400077E6D1FB1B4D918C82F53B2C11F403E064 +:10D85000CFBE2E8A7E9593E26866655D1857E6BC5A +:10D860005E4A71E576133361FE50BD9551FB7850E9 +:10D87000B2631CFABB379CB49F047F31473163AB62 +:10D88000F8D430FEB10EA35F16362531F6FDC5C8BB +:10D89000595F3B3CFF72F347FDEBE0FD6B8A797EFD +:10D8A000EE5C26B4E069781E5FB8ED967C19F988C5 +:10D8B000EBEF015176D9F8F918F57A13C9CF70BD9D +:10D8C000DD8EF6F7FE7A1641BAC41BEDEB4C0B2643 +:10D8D000ECBBC6E73FF759483E5EF2713931DAF5E5 +:10D8E000AEC0B3FE38F9D140779CD72D4C3A0E7CB0 +:10D8F000B7CE920C9A664DF0F3BFC6D6DF822CB538 +:10D90000EF569002F0DBF705FC2F231DBA5F019F55 +:10D9100008E8521CF0BD8C74DBF212321BC94512B0 +:10D92000CFE774975F5381F2DF2FE2BCEEF2C5744C +:10D93000EE0746923BF0FDF262CA3B3F22F683BB04 +:10D94000CBED0CF31AEBAFCD3982F4EAA9E8B2E4DF +:10D9500043BB75072B6A507E1FF12A0B7F81EFF5C1 +:10D96000BA6BD06EED023F3909066D77C241E5937F +:10D970003E6E8762CD1F91FE2B06DE46BF4F6A5575 +:10D98000DBD1AF98D9CAFD677F3443F1434EEDA890 +:10D990008AFE739F2D568FFEB35A6DA275CD8F9A56 +:10D9A00071CF729C4E529D5307FFA3D03B8CAD9517 +:10D9B0002E5C0BDE9572BDE532949642E566D42B63 +:10D9C00037234F2D42BF480DA01D18F268F255DED7 +:10D9D0009B764DF6CBDDEFD7911F3EC90F35F8E5AD +:10D9E0005ABF9D6BE6AEC3F57207799EDD1DAC2173 +:10D9F000BB6A6C7FBD68FF8A2BF6535F11F7FB9003 +:10DA0000FE3B7D323D9F8E1F3AD7DC41FA3C07FC3E +:10DA1000058CB972E2353C4E30F83705263EAF979B +:10DA20007CCB56A29E90ECE956D4536F0C867B318A +:10DA30005E92BC9A1E5AD2970E82FCD832140F6B9B +:10DA40007AC2385F4D6F60B7974D9FAE37BE26E6FE +:10DA5000B7DC72297D19F9EF5633F9F9329B4D760F +:10DA60006D5798EF8B546CF9FBDCEC7323E01FB11E +:10DA700063B47FE8A0727F42A2F2F1849F1D9B8372 +:10DA80007C2F53F9DD44989E1F4D44A874D9933BD5 +:10DA900043C4DF223EEDD97BAF07E4A5D89FD7EF83 +:10DAA00080791F2E95FE02F57CB1BF7DA52380F401 +:10DAB00048BE728D87E0DE4ED0EB8F015FA19EF6EF +:10DAC000FBE7F7AA8062A8545E8FED6F1B2A6921DD +:10DAD0007A09BD0A70BF0ABCEB72CA47D09FBDCE9F +:10DAE000BF7525FAB3A15BC6F5743FEA69637B375E +:10DAF0008BD59B2C787E2EA31C8BE23910D6867A90 +:10DB0000CEBD668D5EDF6E5DA3A3AB3FDE46F9AD95 +:10DB10009CF09A89BC1DD197E7D535FDDC6753F29F +:10DB2000516ED572B38472E298A7CAE897F7557917 +:10DB3000BDE8BF764B6D3D28BFDDC19007E1F355D1 +:10DB4000668A8BBBD7B2A667C84EB43109F3766735 +:10DB5000EF3ACAF3785C7F7B6A2347699D7C76BE87 +:10DB60005F312A0DA37FA12A8EB1E348EF51D0D3B4 +:10DB7000D8AF12217FE2317C17EB2BB9DE2F0C1EC0 +:10DB8000A1731D2CEE6A039E66F78D540FA3FF51FF +:10DB90000CEFE3FC975BEA7E1AC4F7D7303AAFD5B7 +:10DBA0000DE6A41CC6CDBF8D455419ED8D9DE4DB5B +:10DBB00034504F7C2735DA75F2FEC0EBF7FE14DBEC +:10DBC000E76C64A487F259567D05D219E0AC387031 +:10DBD000AC84EBA1ADA3ED26F4A79614B97DA827DC +:10DBE000D842B610FD96FB5ADB56A0E9DA1A8FAC84 +:10DBF000401BF9DB60430ED94AC19F5A9C5021F863 +:10DC0000FB91442C897EECCD971214773E12340B95 +:10DC10007B7FB6390DBEF823D6C894F9F763181781 +:10DC2000679D7FF4B5403F59F31A1E7D84CE57F4AB +:10DC3000C5B9DCF48D6EC845BDB82F0E71EC15F278 +:10DC4000F239172DBAB83507E2211C3FE7A29D9E95 +:10DC50006F2C54D6141521BE3F217C6DF3CDB12419 +:10DC6000F49B427EC8CA7B7CAD88FB53FB45FC30ED +:10DC70009088917F9E499B0B5B60EE795146FEA593 +:10DC8000A4C43268EF7C41DC1386F56A041581FE7A +:10DC9000603043E766240C356594E356E1E7C775C9 +:10DCA0007EFE40FD371DD8EEFEF67CC542FCD95005 +:10DCB00010CF8A674C3378DC5018D3E7BDFD6B7DFD +:10DCC0003A7980782680FE4061DC4E7C087EF21036 +:10DCD000FA81431E1E1F39C3293A4F9413946AD008 +:10DCE000AF2D5EA37FFF8575CF32B43F79F1B809C0 +:10DCF000ED42715035B1F964E707D07FF45F3ACA5D +:10DD000062AE09BCE83DCCBB3632B5E03AA403971D +:10DD100097BE7296AC32D173E6C0F52BCF3C5D95C1 +:10DD20009597EB2B4FF95D5974DE31FF9B0ADABFF3 +:10DD3000BE87206E45394F3FC86437E209720FA590 +:10DD4000149486518EA5462984E7CEFA3EB1903DC3 +:10DD5000EEAB48F931BFD2377F71C97A289F16EBF5 +:10DD600034891F1C0B6FDC98C50F85C1C5DC5EB400 +:10DD7000E8EDC543A84BE05F44F04365A3888F3CC2 +:10DD8000C574FED3C817030995E2B747133DB49E87 +:10DD9000858D8AC9CA26E8639B619E72DD8C749F5B +:10DDA000D0FB033ABE28DDA86F67A4FB27855CFE85 +:10DDB0007A2B4FD03E8D33CC54CB75B4CEAD2AEAFE +:10DDC000C3E1075995A0E366843F399A46FF13F4EF +:10DDD00052D55479A585220EEE9B7F42453EF90827 +:10DDE000F5B36FA2BFA9E8DA593899AEC6718D7440 +:10DDF000760693ACC545EB48F6E1078F0656A19F22 +:10DE0000AEC5CDCBD1F68222F429917AA4E7A7F151 +:10DE1000BD919E93E9C4ED44655D5C4279DF25FCCC +:10DE20005690F8565CDFEDF3ED12AEEF70B4A664D9 +:10DE3000AA7D76ADD4E2A871783CAEF9C994714D53 +:10DE4000A116D7B033ABB2E39ADB4A0C710DFB7865 +:10DE500025BEAFC52D2BF79FA4B8458B6BBE56F2E0 +:10DE6000075D5C73CFFE67FBD09F19F757627F6435 +:10DE70005CC31AA50BE109FF70BA7963A071212B6D +:10DE8000AEED13E72E8DED569458887FB60B7F7A52 +:10DE9000E1AB8CFCF62F2952359EFBD2DAEDF47102 +:10DEA0003E33C611C5ADCC8EF6F94B0A8B607B882C +:10DEB000236E417D767FBD43CE8964BFCFE5F4807C +:10DEC000B34DB72FA795BF2E3489FCF0449E07D7DA +:10DED0007DFC9CE9420BC9A531DF337BBF9BE2DFB0 +:10DEE000897C4FFE2A253891EF99BD3FBF6FAA7CF0 +:10DEF0008F366ED811A7FD7C2DBFA53D1FDE78DAC9 +:10DF000041FA6DE37D0EB45BDDAD0DB40F71209F62 +:10DF1000AFA7B4EF37CDE81F7DE9D548C9D229E4D2 +:10DF2000320ECD8235E8970B7E51EFFA19F28BE66F +:10DF3000DF760DAEA73858C25C4D0D2FCBBC1378E1 +:10DF4000CE015FEEB219E9C284DEDA24F4561B95E5 +:10DF50009A9C8DEB2D91B71CCFFFCCE0F91FA31C31 +:10DF6000DA760C9C41BBC50256F273F627B6527F97 +:10DF7000B65C163BED9A2C9746B99D2CA73C6E8952 +:10DF8000B0E7E8FCB5D11E6BA5D6EE13E13F444CDB +:10DF9000F6183F071C976F9B3F45FC32CD3E82161B +:10DFA000AF687E46B7F033BA47FFCE81EBD3F7298F +:10DFB0007E86F3629ECECFD858185F57BC88E7FDA7 +:10DFC00025CA33E653BDD5EBE8CC8FF2FD61CC8793 +:10DFD000B5B9E25FC776058E34BB5E9ED8BFDD2F34 +:10DFE000F8EC2783415ACF815C885750FE7DF32996 +:10DFF0005EB1D8598589F2224BFA3A815FA4105F4D +:10E000007F6B494B9F1AC4597DBE3CC79D821E5AE7 +:10E010007EAD4BC8F170F808E567EF6F76907FEA48 +:10E020005D59FB4F6B01DE71B690F256D53E2FADB8 +:10E0300043AFBD2D80F67B40E8C96A21A79DE5EA84 +:10E040009D48DF4E668EE0BEB375DD57E930B0F215 +:10E05000514C1DF5D1B9CFB6C7605E05BE149DDF2A +:10E0600006FA1C2BCCB2E3DA79846385FAF5DA2759 +:10E07000F60FDF6B88E7DE8471F77A33C3FDC0A14A +:10E08000A07EDD3E16764D836D93D76D08D7C366AF +:10E090008DD1BAD9C4BA19E3418D9EF6ABA4E75726 +:10E0A00037EAE1356BF5F0EA35B71BE2193EBFC739 +:10E0B000B4BCBC881F9C9E4DEDB8BC45AFD69BCA76 +:10E0C000D9647F1FFD78F47F9CAC9FCE15B0B07EE5 +:10E0D0007FE84FFD7CFECF148B73D6C2CFDF129347 +:10E0E000BBF15CECB736AA397619FDFC9A15D97EDE +:10E0F000BE96879DEEBB9EBB2CAC6D2A3B70BB9F32 +:10E10000E7493F2D3F8A7955E47BCD6EE63F2AAD46 +:10E1100054691F83CBE9DD2BB8DFFB92C89FAFA802 +:10E12000E7EF3D53C8843F0E120F0CF918C4C9F134 +:10E13000B9C00F102763A9F961362BEFE78E7C3643 +:10E14000A5FE2ADBA48759AB719F51AF9F7608FDCE +:10E150007BB6F0A995286FA15827C5EDCDEBB8BFC8 +:10E16000A8C98D5616969884BE6D5BCAF3FC5B9762 +:10E1700072BDAB2E9D4AEF2E9FC6CFDF616B1BC6D3 +:10E18000FC5AF77246E726FD8D9FCDFFA92C993AE0 +:10E190009F6FF48B34BB3D49DF09F9B189FDD02C69 +:10E1A000B9B95C5C942D377C1FD476D164942F6B05 +:10E1B00089AE9DF58AF285EC7035F9953F56BED053 +:10E1C0003E61FC60B7C6736FCBCABBBC2BF2E7A93C +:10E1D000566E77607574F94AAD5E2B252699703FAF +:10E1E000EC7CB14C30B875269C4F318B5129397974 +:10E1F000BE09F533E55B0CFAFAD3EC757931E7F338 +:10E200009B2FED26BFC2867C06F8A4E266DD7EFE6B +:10E2100075251C1F659CDFB87D7F6C1AFB3E9D3DFC +:10E2200037CA43650BF0851BF975AB2E2EF9747F49 +:10E230009BD33922F0AD6C8C4BD9DFCD69F88EFBC6 +:10E24000631EB3EEBD89E7DC4FBB2CE2B2427BE438 +:10E25000DD4ECCFBCDB0931CF48B73FCDD1EEE07C2 +:10E26000BE2FF29EB789FE35783A3FF96AF3781FE0 +:10E270001571BCA6EBE77FCA1E68E3160A3EFA4694 +:10E28000C9D3C44785828F20E2D5E72D6357CE5B83 +:10E29000FE4FC99586E723C25FF9A8E80FC25F89E0 +:10E2A00090BFF2FEA327FB7AEA26F0FEDAFE67575C +:10E2B00021FF8FE745EFD5E7450F625ED48479D122 +:10E2C0007F7664EF63FF77E5450F89BCE8A9FD6FB2 +:10E2D000F665E7454FED3FBB0AF12EB4279B67512A +:10E2E000FDD9BECE4A90A3CD66C2FBEF200E53AD42 +:10E2F0001379D17F2F796F15AD8788CB0026B9D6DA +:10E30000F2A23FDBFF0AED7F8DE745D96FFB302F8F +:10E310006A6C9F9517A57DBECF9B17FDA8489F17D8 +:10E320003D51C2611C07F5D581F099E630E0FF014F +:10E33000C6A1389F92F62711DFE192DFF5611E77C3 +:10E3400008F1A5B8F67714D7168A38F583FDA384AB +:10E35000EF81A897E6F76B8C4B814E15E3F3FB58E2 +:10E3600037BFF7F7FFA62F3BEF3B63EBA7CC6F8BD5 +:10E370007E7E4F23DEA857D7F279BAD9403BF653B9 +:10E38000B486F7532ABEAF766FD4F713684D991C45 +:10E3900032FC675B165D30EF106F53F079D1D64CCD +:10E3A0001A4D79F996389D432ADDACA75FB1A13F9C +:10E3B000239E9F466F0DCF99DB389E65DA7C8D7862 +:10E3C000AE499AA89B7E3D9EBF2C91F9B92C9837F7 +:10E3D000FA65455B322AFADD3F17F4C0FE711D472E +:10E3E0000DF0997198AF3308138D6732D9F8B99E43 +:10E3F000D13DC3E5F2F4F1CC1F5B6AFECE6E513E17 +:10E400002E4A2DCF72D0B05F6FF3EBF3CDE379CE10 +:10E4100099DC7EE485F57648AAD3C35A7E7AC6167F +:10E42000BD1DCA8FEAE1E066FD7B5A3E7B227FCDAF +:10E43000D74DCB6F5B8AF4F43B10AE213969F4EB16 +:10E44000E5E41A7FA85F2F27A17E941349C849A34A +:10E45000BFB09FE46433C809BC7F8B7FBE5E4ED4DF +:10E460004ADE5EC8C957FCB3FAB3F500C8C995F7D0 +:10E47000470C72E22C9A564EA89F2F8A9C18F76B75 +:10E48000E6FAF57A294B6E08EFCF2A3737F8659E02 +:10E49000F731C84D647C1C2E272B0C30C4E78D1837 +:10E4A0006FD926E2F3AFF9F19CC7C029059679FC34 +:10E4B0001CBC319E3983FED9A22FAE9CDD67903300 +:10E4C0002DDEFBACF2F659E54C8B278DF1A331BE66 +:10E4D000BCCBC2E5E7767F7C5547D6BE8216F7698E +:10E4E00071DEC5D16557BCEFA22B11AE3E96E59FFC +:10E4F0007619E2982E33DB84707339F747F7F97990 +:10E500007EF0A0888BB5F299422E471A7F6AF87484 +:10E5100037EBF1D9E18927DB311EFB552E9D3FAE4C +:10E520002F0D7B30AF3ED46CA5F38376B39A3303C3 +:10E53000F3620B189D87187AF7948A47E07F676229 +:10E54000A791CFF2AA621E8CD77F2CF0E8D2F22DD1 +:10E55000A2A4BFC5E27B71E0337B7A8B521FA5A7D3 +:10E5600063057E80DFF916AB827E0E2D73D077C3F4 +:10E570004A2428D6C3C2CF3F8EAE535D51FC5EDB2A +:10E580009142B9B70783BAF5B207EB74EB159383E1 +:10E59000C21FBE9CC0F78DED8DE71D8DE71BEBAB59 +:10E5A000583DEDD355F273AC7DBFDA19A0EF4602AA +:10E5B0006D7ECA8305BB3226CA4BE8BFBBD0E839A3 +:10E5C000DD77DE5AA99DF7F58D4807908E491370C7 +:10E5D00017C4CA7B6E534C782E62E05D137DEFB793 +:10E5E000631D7B0BD761CF6B3619CF95EDA9E0FB8F +:10E5F00061EAAF72681D068BA4B78AA2F89D8AB53E +:10E60000DA7413C8EFF25B0277617BB79FF6F1DA39 +:10E61000EB3FAEC2FB0DBEB5DA6EC675DCB334EFB0 +:10E620004EEC6FB03D28E1FC40FE0EA07FA9625E7B +:10E630001FFBADB127216666B92C2DA31E71DDFC31 +:10E64000CF7EDAF763B27939D4BB4BF9FEBE63F5FE +:10E65000CBE18DD0BFCDFCC86005D0AC2570A2DF6A +:10E660009ACBD897FF811D407FF9DF87522DE8476D +:10E67000BECD523D8B61BD96973ED06205BF33EF54 +:10E680001E8BF0AB122DE9D99F9D2FA49138F1017B +:10E69000033EC8BB61329F7C5EBE9094189DC7DB71 +:10E6A0005DA8FC971FE426109F43FB7F0F5771FF67 +:10E6B000FDC7B5DE861F209D82E6E41CA0C3D2CB39 +:10E6C0004CC17DBCEDD5F6C31D585FD521D3FD1BD4 +:10E6D0008D7686F567DC763A0F3D00F548FF1F071B +:10E6E0001B32659807F39B65AC778C4901FC4E287B +:10E6F0005776305C2F164CFB317E5F6AD9E0C0F84C +:10E7000068EE6385BBD07FEF2F4A86D14EFFF8C0FD +:10E71000BFF45BCBF19C6DAC15CFB369F076D3D869 +:10E72000FD8CEAF7F5F750FC1419A2FB4280445621 +:10E73000A0E37677C46F92B2E0A2C89029BBBE3C3A +:10E74000E23703FCE300539A005E411FA36212F319 +:10E750005FC88E370A780BC2E0FF2ECFE17AEE2138 +:10E76000013788FA2ED17E99A8DF2D6045C043027B +:10E77000AE17ED0F0BF82651FF94E84FC69B24907F +:10E780004F6BF9F747CA6D66E24F369F25E7007C6D +:10E79000D3EF1B73F15C43378434B89F97F3C9FA06 +:10E7A000912FCB349D5C3CA79D6F4D31A43BCC3960 +:10E7B000B20BCFEBC5CEA5E9DC9AC2C6F2C0083BCE +:10E7C0002DA934F5B710F419D07940594FE315D578 +:10E7D000B3314B11F2DD4F1F44F9CEABD5DF3B60B7 +:10E7E00057F8FD0057CB6716E4B35993DB7F22F44B +:10E7F00033B3A665CC5301BFB50460DC73CB945B27 +:10E8000003459F5F5F1AE5E4F3CAC5277E6E473470 +:10E81000F908C497DF897CDF0D1E07DE5BF37630D5 +:10E82000C4CF9FD772B9A8D8B22A80E738FB64BE9C +:10E830006FCF1CEC4031D4F7B74BF4FDDCDBB50DEA +:10E84000078A514E40FFE23968E652486FF5BB8BAC +:10E85000A9FDDB555E5EAF9AD81C1F0966A60CE0C9 +:10E86000FE805746FD3320CEAFAD6D7B6D399EC324 +:10E87000F5C5E46A34BD7B4C12D78FF576FACE60CD +:10E88000C07D8B09F38CDBE708696003F43DCCDBCA +:10E8900066D58FF2A2C957174B93BCBC750060D0E8 +:10E8A0005BBD4E2582FEED5B07DE6FC1F3D23B6C94 +:10E8B000113F9D6B57DF6F1901FAFF694E84E4EF3A +:10E8C000AD032FB6F440FBB539206F1E845F6BE9B2 +:10E8D000BC1EE56DF401EC6F89FA7E7F13BCFFE787 +:10E8E00082DF6F7CEC7DC1DF5BD81DA8A7613DF1A5 +:10E8F000DCE39F2DBF4F5982F3AC778CCD894C5E02 +:10E900007F58C89D38CF41269F42FA39BC71E50E29 +:10E910002CCD6C4C95901F7272918E872C2C65AE0D +:10E920009BE00733E3F926E4EFD9C4DF603FA5CFCE +:10E93000CFBF4EE1E7AC3CF0ED16DCD781F9A4EF98 +:10E9400020FCF87CD6DD761F5B12BDE27C9AFDD9F7 +:10E95000F309C5891E5F94F938C53E407F11F7BBA6 +:10E96000FA03BCFC7721B79702BC3C2FCAFEF2AC7D +:10E970007B733E87DCDA47583BCAAD6466A9BCBAF4 +:10E98000FF4EB965A4FF8AAA1D872D6497BAE81CBB +:10E99000D9C06D763AAF3958DF25339A37C88184AC +:10E9A000F3037B8D76C7CD443CF8614B3ACBFFEC4B +:10E9B000F7F0F96AF08B18542CFAE2CEBFA83E8D1E +:10E9C00037A78DAFABD11FD3D6F50B8C7F1CF1775A +:10E9D000083FCD7103A3EF57F2585B532BA0DEB570 +:10E9E000F5818125F264BB97EF4AD1BA4B1116D954 +:10E9F0007DFD647B463BF1C2EEF52E9AB07BFFDDD8 +:10EA0000F2F405A6AB1FE92AB34E19FD8841F0C305 +:10EA1000D0BEC4D1DF407D7C3DF737D0AFF047E9B1 +:10EA2000BBF25368EF1605647E6E72EB0319A43BCC +:10EA30004CE397A4FFFC21B25FD61F9BE83C745FB8 +:10EA4000C49EEC203F4F0958353FCF84E39DA77308 +:10EA50007A7D2CB310FDAE5F97B6ED423FAED7CEB8 +:10EA6000EDCEC5C0256177C0AFF34CC0BD2136885F +:10EA700079DC753756EE6AACA4E9F4E37ADB6BF91E +:10EA80007D73964B7F99FE7274C2AEE45C3CCFBF3F +:10EA90001BEBCF4BE139CD9D8DEBD30FA13FDA9628 +:10EAA0002FE3B8AC96D345C1B32830E59C4B5CAF9F +:10EAB0004A0D0E6A3F795D4715BC0F8ABD503086FE +:10EAC0007E93F67E9CF1F8271F3765A03E7F8D353B +:10EAD000B9BD62F2FBCC3A9AC6F75D67AE1BA37B69 +:10EAE000ACC4FB31998F3F9D9FB40AF54B119E0337 +:10EAF0004DD1BE80AF54D0DFFF40A61AFEBBA2FCB2 +:10EB00002E3A676DF41B9BB475147EE38AF2E5B967 +:10EB1000DEE884DFA8AD638E6783E33699AF33FA0E +:10EB20008FC67E6E31F89F8D9EE53B3DBE29FA294A +:10EB3000DAD074A57E5618F0595EB4FC15CF54F89F +:10EB4000E46EE8895DA19F46433F0DB9CB73A7EC06 +:10EB5000C7BD61E44AFD2C37CC6B997B79F394F304 +:10EB6000326D705CA99F06033E8A69F94E692A7C62 +:10EB70006C1B9AAED4CF32033EF5B6E5AF4853E1F5 +:10EB8000F3FBF53DD9FEBE51BFE45CDC98FEB26FED +:10EB900042BF18FD07E0739203BC976C2A3E37EA28 +:10EBA00013D267D8DF1DFC5CD0D5FAF7AB0292CE4A +:10EBB000CF37E269BFB445CDC613F460FABA29F481 +:10EBC000A086B7D312674857B6CC913AFE47F83DB6 +:10EBD000CC2A99E83CB8594EA11E9B8CB787E4CC4F +:10EBE000D3C8FD7C4DEEE696EA4B37EAC429F21B0A +:10EBF000279C3C2FA5DD73A83D1F2BE5FB97FF51FC +:10EC0000CAE9226DE5F71EBE8FFD11CCEF43FC086B +:10EC1000E53AEB9CCC40FD35018CA7779B5C9437A3 +:10EC2000C57E893F9AF87775BBF11E45E8A700EFCE +:10EC300051CCDAC7DF9DCBFD93BD86BC597119C796 +:10EC4000A3B88CE3710DFA0355F8DDE9DC00DE971B +:10EC5000B6372007BCAE89FA82ADAFE9FA2D10F3C2 +:10EC600002854EE7929834C6305E2F28D3E35DD0FC +:10EC7000F4315D96B177294B23DFEED9C592981F09 +:10EC8000D86B8B3460BCBFD7638EA09F3BABF1E5E4 +:10EC900037D1DECE1A0ADFC5A814E778FBF5E736D0 +:10ECA000F63617D3B9764F1D53701F9F457DA66C5E +:10ECB000FADBCB7275E781B4FCD2F0BB3934FE00CD +:10ECC0008C8F7667E05701CA63ED8179E2F77B7B31 +:10ECD000978EF9E99ED8BA5B464CFC3C19DD173299 +:10ECE000ABEEEAF0D2C619CFBF1630DDF7A0BD8972 +:10ECF00081C07B36CCE70E51B92791A432993849AF +:10ED0000E591442AF05E567ED798B735E665BD8614 +:10ED1000732215AABEFDAC1EC3F917435E581BE74C +:10ED200048E23981579AC64F264608EE4D6408DE00 +:10ED300093789360ADBDB15F235E463C8CF330E2C7 +:10ED4000ADD16DBAFCA09B49BD2113DABBCC40A864 +:10ED5000826E9F2079F3A0FD03FAD678E26BCAE8B1 +:10ED6000BCC618C14E363AF250059D0BCDD0F9669F +:10ED7000712FF3E14BFFE4A0EF83A3A715FCBE596D +:10ED8000BB8776B8F32C7DA7BCABD3EB443E8DBCE0 +:10ED9000B84D875FD891A17DEA79CF6FD3CDE3706D +:10EDA000B481EE0FF232FE9CF0C57302AA97F8C64A +:10EDB0005965A4BFB82FF5A28FCEAD6AF336991668 +:10EDC00009FFCCC62E835385671FF0FDDF9B956F2F +:10EDD0009441FD7191FF7F52944F1BCE2169FB033B +:10EDE0004951FE8D78BE4794E191B50588FF1386A1 +:10EDF000FD05D6C3F3B2D70C9A75F70ACD3BE6D41E +:10EE0000DD9BB4E019AF0ECE0B97EAE0FC68480733 +:10EE100087DFE1E34DB79E15AA59D7BEEA7B4EDDE9 +:10EE2000F8DE46FD78DA7D23E143A5BA76525D48E7 +:10EE3000074F37DEC052D6B408D6FB61B0A3E87FD7 +:10EE4000E6D5F2EFE5F36A41AEF18C6E955E8E7316 +:10EE5000843E07FA3F8EF4D7E8CC825C1FE456D696 +:10EE6000C8E8278FCB757E7213FF3E7D40DB5F9035 +:10EE7000575F61FEC3E18E0EFA3EAC8A9F6FEC0DC8 +:10EE80009FA5EF997F1835D3F725BBAAF8F9E11DA7 +:10EE9000F37EA4205FF67E3B49DF4D38D34FD27717 +:10EEA000134712C03939786E3FC9E2F3F13E490782 +:10EEB000C17956B983FCDB1E5681F9F03C47A48327 +:10EEC000EEBBEE0758C67B07D3BC3E256029C3E1E5 +:10EED0006778FB6442A27EE688F9CB6166AE77A1D3 +:10EEE000698E98310EFEEDC13F507EA88A6574B0E0 +:10EEF0008C53A77DCF3FEC4A039EEA9A65193C9F4D +:10EF0000ABC9DD0F2F9598D15FD8057137DE3F670C +:10EF1000943F8D2E467901FAFF229BFE5ABB1F8635 +:10EF2000F9F928FA837E3D55D2611C47839D0A87F3 +:10EF30007F2DEC1BE88737CB683F90EB07F77BE72B +:10EF4000C8DF30CAB951BE8D72FDDB3226E26221C4 +:10EF5000C751B38276C0C9B64CF45341789F477D00 +:10EF6000F403218F6E718E2C25E6A18D7FFD3B2948 +:10EF70002ABF2F9E2F81B01CF96A9514FF00F12D36 +:10EF8000383FD680D35CF20EB3A09DAAF128BFC152 +:10EF9000E79117D7EAF09CF7FC5ABD5D601C1ED7BD +:10EFA0004783C28EF598999AD56E7ECAC9D4AC7E35 +:10EFB0002A406FA93AB953AFA89787A3C0C7D075A5 +:10EFC0006F153FDFB32B7AA409D7F5E408E763E0B8 +:10EFD0008C9FE3B96267C6C2300E9C338D9F744A22 +:10EFE000F0DDAE4B73F388CF47A6A56B4110F0A9B7 +:10EFF00059C6FD88DAEBCC49FADEBF4AE1DF258548 +:10F0000043E437FFADA0FBB382AE7D61EE47F74529 +:10F01000197D077DDDF3FCDECA856133C1CF68DF72 +:10F020008B887B93686B6016DA97512A6FBE947851 +:10F03000C1ED433F8645F07BE1D5523C8478B80F63 +:10F0400087CEE0956A302E9D4786F5991544FE5887 +:10F050009A22FE88BC6847191AA767DE08FF4E7619 +:10F06000DEF3F03CDBFE89F5A981FF6EADC1F5E36F +:10F07000F5DAFAD5E09641CD643DA5E945A84AE721 +:10F08000802AAF41BB5288F7D40ED179BE642249A1 +:10F09000656FE22495E1A46CE2F7D33313EA67E5E8 +:10F0A000CC810627FAFDE23B37F8AB473A16284CED +:10F0B0007AAA62E27B2FA9891DC933E13DF3AA999F +:10F0C000EE496DE2FAA252D4BBA3D25173059E77EA +:10F0D0006766FC1E0CF40FEDC7C9A23ED423EA5D9F +:10F0E0001049E3FB8DBCBE02EBA3E85F8B7A29A934 +:10F0F0000A7D45DF413B45FDAC7E5EEF6DE2FD3DA7 +:10F10000B1947F7FE68EF2EFCF9E58CABF3F0BF5DA +:10F11000D05CC661FC3ECDEF9B8067F5034E59F590 +:10F12000C7031786DA65EA8FF75B0D02583171FF66 +:10F13000F813EB38DFA873C4F7FD972CBC5DB94218 +:10F140007C66C3DB8CE87C4B9CD6FB09FCDE89BE6D +:10F150002BD9F0A5F415F6B3B5F22E49B907F96825 +:10F1600087F7AFE8FCAF54C7227365BCDF25338651 +:10F17000F77BC1D874AF9B3BBDD364877A771DAB57 +:10F1800006CF96CE9352FC3564A77B5D021BC7D891 +:10F19000BAACF10AA2630A9ED362D67869B61D3A68 +:10F1A00021F6099E7828C3F0DE5D77FA2D1602BCA1 +:10F1B0000F06F93E753EDE7B41EFF1F3E99D1E3F00 +:10F1C000DDCBB1E3F18FE9FBBD026B5A41B96311AD +:10F1D000568DEB53E018E0F06C01BBDA381C049854 +:10F1E000E17AC639ECE7F53B1EFF2A7DFF58E06364 +:10F1F000D5384FC403FD31C403ED9A3B9AA1EF010A +:10F2000081CF1AE8BD24E73318A701DF63C7B8DD53 +:10F210002A70315EAF0A589238DCC9DB3BA349DC67 +:10F22000B366E3DF4B1CE2F79ABA07EDEF62F96EC3 +:10F2300069FC319453776DD77FD2F368DC4CDF9D46 +:10F240004BCA417CFE84ADAD14F7B535797902BF68 +:10F250002FC2F33C6990972897175C871D8FDBC7F7 +:10F26000E565EE17585E4EA0BC544CC8CB09E4FFD0 +:10F270008A0979D1604D5E345893170D1EE7A3A516 +:10F28000F15257561C79621DBF6F995DDA50BA264C +:10F29000EBBCF58903DF2C45FA9DF844DBE7AE793A +:10F2A000F84A72519904BD95A5176795C55FC3F5D6 +:10F2B000A850418FE9FCCF93BA76C008E44F3D31A6 +:10F2C000C4F7E34F0C850AAE749E04FC67BAFFEEE8 +:10F2D0006FC06FC20B899E4C48044FD77EDEF64C40 +:10F2E0001BFF2E36F936CAE5C3957208E5DF997E15 +:10F2F00085517C5127D7203FFC21C8E3E41D4F3EB8 +:10F300004BF29267E5F1719E83DFCBCDEAB81CE446 +:10F31000B9DAD2B8DF300E4B71DA17D7603C8FA460 +:10F3200093E730C8338E6F1DF567CBF3C3429EE77A +:10F330007933F1ECEFE4343C66979B443CAAC90175 +:10F34000FFFD8F9565F13F10FF0B797047F9EFDDF9 +:10F35000CC8F8C9A713E8B5F67329E25BE36983E6D +:10F360008378465F0518F0AAF4C916D42B35234CD0 +:10F37000CD83D876F19B9CBF1EAEE4FCB5E875CE7C +:10F380005F0F57727E017126FED2E085AF72FED20A +:10F3900060E887F84B83C7E75539EACFE6AF1DD75A +:10F3A0005F7813FDC9BC309351CE343F58F37FF3DF +:10F3B000ACF1ED44DF3735BF37C6E1D705EC523845 +:10F3C0009CD1FCDE08875FE5F50F7F328B60F51579 +:10F3D0005E7FC2D546F7489F38E435A959785D531A +:10F3E000CEFDC927146BD354FB26FF18E4E7D1EFF9 +:10F3F0002953AE2D87F293B218D1F9894367E97783 +:10F400006B34FABB6B39DD8F95C52FF375D0F410D3 +:10F410005F87637B6E09E13790C797DA537988EF8E +:10F42000E009057FF704FEF8FDE1027654587530D7 +:10F43000680B1DECDFC0EF1B3FB67765CD2BA8A78F +:10F440006E72527F8FDCBAF8DD4E8497F0FE1FF9A2 +:10F45000D20DFFF922EAA5C5BCBEA7C2CEF5D4CF16 +:10F460006D49D46373D9681AF58933CCF5E45C6BC4 +:10F470009B19F5237E7F8EE7BEE6AAFCFEE4FC70B6 +:10F48000FC8C99FBFDC42FB05E435559727A7339D9 +:10F49000A7CF5C2697A05FA5F5339759E97DE6E2F3 +:10F4A000F7F543BF03B3B3F20D4DE5217E6EB36AAA +:10F4B0008CBE5B463E10FD0F544DE1AF0E579D1EB6 +:10F4C000C178AAB7C7CCEF87AAE2767CD7AB8CEC21 +:10F4D0007BD811D91E46BF155EC07B757685F7AE09 +:10F4E0009C07F51F3D47BB006CF89868DFC8F344E4 +:10F4F000BB8E9DA5EF3A7785F9776735F8DD69E131 +:10F50000845CD15DAA8077053CC7EF63BEFFDC5900 +:10F51000FA1DA08593FDD7BBCBB3E2192DAE3FA258 +:10F52000C5E9E1B6865CC0D73B249B9D32C5017F0F +:10F5300089EDC387C6C86D8F24C73AACF07CE173F0 +:10F54000E01FE74FD9FFFD57EA1FFCD607B1DE3BAE +:10F5500034DA81F45BF09C6C1671C55FE1F38A11BB +:10F560006E272B46520AE6BB8C71066D865C8FF5C2 +:10F570003D31963F39EEA8181950303F3629FE101C +:10F580007E6AC5C8A882EF55809F8A74FAE542EE6C +:10F59000CFDAF0DB61D0C3D689B8BB3F7B1ED3E99D +:10F5A000E5F1B85B5A43EFC138F41DA314F4D560FC +:10F5B000BC616CCFF0F651C0636F993284FDEF2DC2 +:10F5C0008B1F2C0778B77BA897DC692BFF8E78B749 +:10F5D00089F7A3CE3793DDB5805F749AC689D23898 +:10F5E000100FD0F72EBDE1FBA4F555D9FDB753FFA1 +:10F5F0005F29578E61BF74D908E68CEB52C4277916 +:10F60000C7C43D3993FC7875CA38CBD913D9391B97 +:10F61000D6C92EF8CBDB7C2C17D7ABA73C7EBA3CE7 +:10F620002BBFD93BEF4794C7D4EEBBC899CFCF418E +:10F6300032DCA4C3F159E4155C3ACB2D3EBAEF6835 +:10F64000C683AF37CFC53CA8329BEE89287FE0FC4C +:10F650004E8477D771589B473ECB2822BF96467A77 +:10F66000F56D3A92467972979F1F79085AD5977728 +:10F6700076F0B84BDCDF11DC9249609CD509DC8563 +:10F68000EB6E4D111D2D67F9BDE51859A98BE9DC0D +:10F6900033FFAB4BA6F15E67BC9F1AE530AFF308B2 +:10F6A000ED43DCFF7D9B8C790123FF395BF87923E7 +:10F6B00023DF39B79E5B3B15DF39379D7B88FF7EA3 +:10F6C00008E75B2DEF66DDA6FD6E115F8FC9793A05 +:10F6D000BE1E2E874A7E3780E45F69F747BB9BC614 +:10F6E0001494C30BE5FCBBD8D24DAC1387C86B6236 +:10F6F00087C5F9E20BB83E05F1B438DFC1D7DF8327 +:10F70000E728CD78AF88B51E7FE704C207BE1FC3C8 +:10F7100052698C9BBD00231D9E2A8F7F80EF87E25C +:10F7200063F5384E79D5287DEF68D1EEA573AD111C +:10F73000EB0A732916BF7784DD6D33913FE9AD93F2 +:10F74000AA39BD15DAFFCE8B00CC26F8BFCDA55C5B +:10F750002CA77399BEAB3A9799DF32A6E0795F4D3B +:10F760003E8F57C57F46F69301FEB52447D61994C0 +:10F770007F6DE379DAEB3BE9BE7B0D5FC08BE2097D +:10F780006F4412BFB396A27D02E70C6E0F001F27D5 +:10F79000BEAFE5C576D7727ECAFDE477C43F4FD6CB +:10F7A000995907CD678CEEA5D4F209CE633C4F6022 +:10F7B000C4BB50E8E77118DAB6C15215823F8671B2 +:10F7C000F2EE9B6EA07BC08CF98549FD44F7AE46F6 +:10F7D000BEFABD392E237E85EFFCE0AB982F2CAC12 +:10F7E0003D4FFCA6E9552DEF3A307896F237726717 +:10F7F000AC03BBFD8EA8F730B6A712F7670E7D28C5 +:10F80000CD63A487E7CD28C27B37FF29D600F30A52 +:10F810000DCA74DE1DF4F0B538CEA7E5778C7AC535 +:10F82000C8F7D3EB199E9F2C1479823C13BFD71BCA +:10F83000C49DEB39C1DFA59B3214B749C04798C7B7 +:10F840005921D6291F7F070AFAF9A43CDE80F80760 +:10F85000D408F1A5B3369526BD7195FCC4D8A88A05 +:10F86000BF7B24897DF9FCA879B8C147E719481EF8 +:10F870006435A3607D087F57892C72268DF67C261F +:10F88000CA4784E463358E3FA356A6F1216EA4389F +:10F89000CD281F93E501347C94E4E170F67D9859FE +:10F8A00072F127333E835C78965BF7605C3A20F018 +:10F8B000DCD3F8610FD2ADC0E410788F1E4039C997 +:10F8C000670EBA8FDF631DAB475DAEC99197BD4E22 +:10F8D000FA35E0C8DCB602D7A18ADB1BE7E651D2D5 +:10F8E000AF8F6FF17A904F67BAB87FA58D7FEF0C1D +:10F8F000EED7DF27D685F9E400EA33B747D987FC8E +:10F9000033E9FECCF0878EEC78A8377FE01E1ECF5F +:10F9100044E83E05CDAE7D5BF437DD7C8D79EB5D53 +:10F92000E1B3748F8296AF9E8E5EDA3D1DE3E33FB6 +:10F93000686FC57DBBDD75FADFF7D83383FBD72B46 +:10F94000CB947E5A07C1E7167B92CE3968FADB88E2 +:10F95000D76EABDAF4BFD17E55B1A40A78E5D5896C +:10F96000FBE20CFC8FFE11F6EB74A419E513367262 +:10F97000BDAED9D7D2386B477E4F8EEBA57812DB60 +:10F980002B3D87E9DE786F1DCFFFE5B134E505F348 +:10F99000AD4915DF55D8A882FABC5CE8EFFC5ACE19 +:10F9A000BF1EC117F119F127493F2A9C8FCB14CEF6 +:10F9B0001FEEE828CBD693CC3F8D5E5761FCABD2CF +:10F9C000EB627F5DD83BB04BC3962C3CA4BA8166FA +:10F9D000FA3D45C6ED0E78BC3D58EF453994C8DE7A +:10F9E000139D0B963F437A4CE3D3720C6E913FF11B +:10F9F000BE02CCAB59813FA13CE0624DBA736F337C +:10FA000078DCF992C69712F0A59BF8F2BD1953F86D +:10FA100073BD611E1765F973C4978A7A6A583F5F90 +:10FA2000BECFADC9ED6B1376E3356E37F83DC37DC0 +:10FA300050221F861D497E9E28DC70C5DFF798C4C2 +:10FA400097DF70125F3E0E2107FD2E8033B90EFD49 +:10FA5000CB51C19717C4FC2E087817F21DC9833803 +:10FA60007F169D5AEF02DFBD3C43B76FC0D49C7C2C +:10FA70008C0FE3FF41FCB8C54ABF13E10C67881F38 +:10FA800034BEFF34FDE36C6426E4574D6FFBE31195 +:10FA900053B69C3BC57D9C9A3E477AA29ECEABE274 +:10FAA000F4CC8F4AE4AF5866F2F93C3323FE5F880A +:10FAB0004F614B8661DE4AE3D3F268B2DDFA47E874 +:10FAC000F771BE8A86DAB3F5BB513E40BFAB213138 +:10FAD0001EB60779C99F09F804940C8D9B1F4DA68B +:10FAE000D10F9AA4DFD5EA61EB67D3EF25333F83CB +:10FAF0007ED7F83F2DC566E27B20E7B47EB09EF24C +:10FB0000CC2C3D3BDD7AF5DA2332D7B3EA947AD5B3 +:10FB1000CD32EDF89300057599744394F6D1E8BEA3 +:10FB2000406D3D8333630B705C77543267DB374540 +:10FB30009D64D7989235EF45623D61BE8BE8FD30FC +:10FB4000E737B7EAD4F20E3720FEEE2D2AFDDE9815 +:10FB50009677B85ABA38A391611E270C9851BE35D2 +:10FB60007CB576C199F11538AEB372B003D7FDA854 +:10FB700058E78A63F2DBC718CE2349FB9D6C9F9937 +:10FB8000DF7B0B7157F6FD01F70AFC214EBB15FB1D +:10FB900031B657B64D5A77DDFC6F9F98FFEDF87E72 +:10FBA000EE2739A4BF0E87F9B91367278F9FA7D80F +:10FBB0005FFA13A4CB77853F77607CFF6EE00CDAA9 +:10FBC000BBB91BE31DE8073F259E2BF822CA511540 +:10FBD0003FAFE5D97544DBBFFB3AD177CE470AC6C4 +:10FBE0003AD70DB1175085827F77F7CCABF0EFACE9 +:10FBF000DBA6F1EB3AA7B66BC38321CA4B1E6E623C +:10FC0000749FFD8E9DC52B2BA398573233CCB37BAD +:10FC1000D33BC96E7B3BCD49CC551CEFE4BF3F3590 +:10FC2000DD7A3F8CF9D11CFE7B889817755B4755B0 +:10FC3000BA07AA96E7F5DD8E31D59A95AF74BB5811 +:10FC40003BC18AA897240E37F2FA5ECCAF66FDCE90 +:10FC5000ACB3294574732ADE34DE0356506BD6FDEF +:10FC60009E555E3FFF7D4E2D6FE0412A66D1272FC6 +:10FC7000ECD5C136C17F3B5CF78D28884F555AC5FE +:10FC8000FC65428E0F21BDEDE6E430CA192BE5F983 +:10FC9000726923B7E3DAEF442EB7D415E0EF5CE0E6 +:10FCA0006F13A1DDC59FFD41613C3993FB596E592E +:10FCB000A6F9E42A2C9284E7B9B3D3C44FA5C0D3E4 +:10FCC000F8D323DB815E8D361C2F760CC773450677 +:10FCD00074BF4369A4EFD33335BF8DD39F59E3F28B +:10FCE00054BF2BACC9DB062996423E5E6E69A1DF8C +:10FCF00021F87F5BF87E5D37D3DB5FAD9C5556FF07 +:10FD0000CC4CB237B1919BA17D5735A3EF44765CC3 +:10FD10005AE6407BD6E5B68B73EC374AC3D6E9E5A5 +:10FD20005D2B87607E2DFCBC09953B5CEA9DF83D10 +:10FD30004754666A6310F0B0B63521FC8BEF96C568 +:10FD40007CB00EDDB836A530845C3A80E79D772024 +:10FD5000ACFD6E0AFC7F289789FD80D2D8D5BC0FF8 +:10FD6000F681F232A72CF1D7900EE571FE3B94E5B7 +:10FD70005B2236D45B67C77F2738437A6468FDDB34 +:10FD800001CC9F4765BD3FFBD752FCAD995970F937 +:10FD90009601D27BBBA21F529CBF93154868276770 +:10FDA0008ADF97D3FCEE99228F5F2673FB1F16E53F +:10FDB0001F66F232B0712C80EFE38F61E2FBDF153A +:10FDC000F868F7717A1BB9DDC51BF2D18F943672D2 +:10FDD000BDF591E003F0D34C785F6CA1B82F16E22B +:10FDE000AB0F70FDF29A92946700BF51F7BBE61A11 +:10FDF0003DCA6733CA27DF27C5A332D185EB776DAC +:10FE00005E124B99D03F05BBFE01E9E3301FA740CE +:10FE1000B3EBCA681AF3801FCC6484873FCE681E98 +:10FE200065380F8C6B6C1C7FEDBE71235FFC7F34DB +:10FE3000ED1E2C00800000001F8B08000000000059 +:10FE4000000BED7D0B7854D5B9E8DAB367269364DF +:10FE5000924CC2E409849D770249D8092180E5B11A +:10FE60004388C642754878040C748000510367F0DB +:10FE70005A0F5A2C130218A96254C4F414E80451FE +:10FE8000B9AD8F80E9F9B0B5DE8060F5D4B69104E4 +:10FE9000C54A353E78D4524F8E2D2DEDE5D4FBFF6B +:10FEA000FF5A3BB3F76442B0B5E7FBEEBD27FDEA6E +:10FEB00066EDF5FAD7FFFEFFB5F69AEFAEFF4BAA57 +:10FEC000B790B1FB19ABEE7432F639FECD622C5609 +:10FED000B13096C858143E27C353ED640CFE19DDAB +:10FEE00014F5811CCB58EE386F9402F5D18503CC04 +:10FEF0000BFD18EB649E18C6668DF33815681F332A +:10FF00006FA0DB0E6F3F1DE7A2FEF75BDB1C2E2709 +:10FF1000F6F3B8141A8FD7C3FB6AD530AFFEFC7462 +:10FF20001C9F376BB49648E3C1F84CC6F1BDA934A9 +:10FF3000EF26FB07727170FE5B476B9F8E9B8CFDFB +:10FF400018C19DDA30906A2F632C8DC532D9CDD877 +:10FF5000F76CAC0ED717951F68B6433966AAAB0489 +:10FF6000861B9C2F5BAC736A3A8C93181C6720DD50 +:10FF70004BE5D846D7518B82FD7B18E26BA479A262 +:10FF80000B037E0B94E3ABCDF39408BC9E196B9EE0 +:10FF9000E7719C6732CED3E3C7799C6A80D6B5DD22 +:10FFA000E64D41BC6D8F016C5DC7D85D813337373D +:10FFB0005B19BB3BC153467868E86176685F06FF12 +:10FFC00047F819EB913C458C1D92BD33116F63BD11 +:10FFD0000E3FE269EC9DAA0DC73B29E00BC577995E +:10FFE000802B651CF375C2FAB2596B09C2FF70769B +:10FFF000F9A81D1263EDD77FE690A1DF2D8A9DE65B +:020000021000EC +:10000000698F77DDB812EA774A31AEFDF07C68CEB1 +:1000100023A723000F9F6D6219F03F76FFBD6DA7E8 +:10002000E3A0EC9A9EAB6C81FEE3BA236112786A7E +:10003000AE8E48A8675760DE7228431DD275C7662A +:1000400078E641FBEE3F1FC5715C9B944391B0A6DF +:1000500087EE0578011E57216BB6E07B4D2D477C5E +:10006000DEA12804870EBF6B133B1A017044E7AB77 +:10007000B988BF6C362612E9F290DFAEED80F7ED5D +:10008000E9AED7B3A0DCF6BACCB640FF572AFE984B +:10009000DAEFC4750CA4BE8AEBA8B0B3FDD0AFED07 +:1000A0005EF60E8E13B9C995B9252308576477E417 +:1000B0003BB89E482D49899482F0D3BFB30CEBDB4B +:1000C000A4D0FADAEE6DD3107FFE1C76E8496832D0 +:1000D000AE7080E01FB789C3AFC33D2E7BA0C26264 +:1000E00080BB0CD79518AC8FCE07BAE433FAFB1C53 +:1000F000FE7F1FCA69E150FADD3ABAE21EA43773E7 +:10010000C360D386D6EB4F8088C6674C8B95921818 +:10011000928AFE2258BC251DBA5E4A91D90E10D98A +:100120002A2436C01BBD910522A091A2B92DD95019 +:1001300006A6D4E2A6C27BD00673A07D7A8563C0F2 +:10014000AFE2082EEA3F5AF457B6DA59B7230877D8 +:100150006A23940DEB18CD1EF80FE4CB7466780F6C +:10016000F38C3EF39B33204A506F7ECFE4FA38E4A1 +:10017000DF9DF822CCFA369E5911386E986FAF1277 +:10018000E33E3701FE31854DF95C0EF61F0E2F7FE1 +:10019000DAEC0D1CCF612C47D69E40B96253130098 +:1001A00068A07FC16EC51B06DF413C06A456C0CBCC +:1001B0005850153B4A187B49D00FFE3C8E245C07F3 +:1001C000FF4B0399B596327634BE3CAEFF2A70C819 +:1001D0001B7F5C326794A1ECEC96707EC6E6B8CECD +:1001E000013E24ED23F679F4D5E86B65E774BCC1D4 +:1001F000BA6D6EE68F8E437D82BCC1D8D6181628A4 +:10020000047C466633E628C372CFB3588E180314B5 +:100210003494ED29A00BDCC1328CC31443BD3EDF06 +:10022000D6182DC56958CFB6F8EB490FC80A53F256 +:10023000A09DA3FB7EA6805D70287EE685A76CED61 +:1002400066C8EF4C65192817B2A38D97B345D9E955 +:10025000E3E531500654CA2E2F2FA7F0FAADFF590F +:100260004B657F222F87AEFF39A1C774FA54B97C42 +:100270005B918FAB60792D409FE47ACF56C443B534 +:100280008BB9E478A21FD79B576AE7E0FB9B6F64AA +:10029000AE1DF1C1F20DF7000FC423785C9FB74D7E +:1002A00065EA0EA86ED36AAECA4F0F83DEE8CE436E +:1002B000FDE160DD1143EB1364D0B3D0FFE1B9EF92 +:1002C000B10F81BE31CE81941A285F512482E7E8B4 +:1002D0008CB752904F1E9FFBD7947EA87F70C6F6B6 +:1002E0001406E5D68C3F32E3BC208B5A200C1CDE72 +:1002F0000C89D69F7DF93E07DA8336C5521DAE1DA7 +:1003000063CD345F9B8345A29DF947AD2B59C0F364 +:10031000F7AEEB850C49C03BE0009BC01E9AFE6522 +:10032000C1BB93E07D7CEECE6EE497073372335110 +:10033000EF150BB8F5F64733B613DCAD93DF4A6122 +:1003400008FFE4EDCCA81F1C0877187D714687DBF9 +:10035000F55F03F7F562BEE1E17E8B85D36B31C3B8 +:10036000C06FCBE478684B19203FEE1F0DFFF22FD2 +:1003700019FE1D62BCF30AF747DB149DDF6161685B +:10038000F7BCCC27970C2F2F09732C267B169D1FAB +:10039000652A67667BE2B0DF70F8B880F888185984 +:1003A000BE7E27DAFD16F19687E3F6D8AF03BC5C74 +:1003B00042FB02A0376A167F44ECF0FD1B6DFE2461 +:1003C000D755C6BF35209BECF048F048199944F743 +:1003D000F55DB269BD4DCF449BCABABE7D68BA19FE +:1003E0009F3A9E87D0FF4BC2E7487C38223EA70346 +:1003F0003E8BBF3C7C8E04CF79E1B78E84CF50BE5C +:100400001C6EBCFF5FF9323943B926BE0CE5C77FCD +:10041000341EFF6FE3C7E2FFC6E39782C7EB33AE3C +:100420004DAE0FDA5923C66F797BEF3C7923E0B3E9 +:10043000B77AD224F095C16DD78A6A012FB766F2D8 +:10044000F83A4F629E7071FAADC20E9FACAE5C4737 +:10045000F4F04433195EF559D49F97C1FAFD35B2D3 +:100460001ACE2F3E29F0559D194FE3F779648A077C +:100470002E55E704B0FF70EB62D5063C64E27FA323 +:10048000826518E2245366933FDE27079E9410AEE0 +:100490004931E1ECB24ED73E4FEDDF47578FFCA517 +:1004A000EA9991E0999279ADF6AF4DE45F34929379 +:1004B00083DFE27103444D36CC8BD59C89A03CCCC4 +:1004C000297C958AF919CF864C685F535D62CACB47 +:1004D00040F8A661FF8FEE2FD88F7917B6A096DA75 +:1004E000DF9D69F68706E923ECEE410BF015FAD99A +:1004F000F57EDB0AC37A8E665A045CBEB108479764 +:100500005D9BF02C8C7FF2A608753FBC8DA89DF7F3 +:10051000ED18C06FDF927829C2C037BBC47CE5F507 +:10052000DC9FEA3AEDB5590C743D24F810FA2F0B14 +:1005300017CFB689FA455E89FC78E0EFB13531C155 +:10054000FA1F87D487F6EFC88CE57C2AF1FC4F6848 +:10055000FD1ED1BFAEEEEAFDD98251942F808033CB +:100560003D9CDED1F1579CE97D12E9F1B6E4FBF543 +:1005700037508EF646A84F925CFA726B8A8278608A +:10058000560FC59337CF551230DE8775C9482FBB3C +:10059000AC7C86651D2E7DDE04A8B742FB291AF3CC +:1005A0003543FD47362517F34561E6FF6166E2F006 +:1005B000F30FAEC3AA55E07C0DEB81BF4A86AE6B4C +:1005C000302F21DAF7FEB9722EB6EF3A69716DC994 +:1005D00018BEBDAE9772DBCDFCF396E01FB7F0D727 +:1005E000019EB175063AF6644652FF2FCA575B5119 +:1005F00097C0337797CFA6C0B88B81EFF5F18D7C8C +:1006000072AFC0E7EBA2BD5BF6478DC77CC0DB5C79 +:10061000CF1DDC7FCFD870FAE6A4D01FDFCACC375D +:10062000C94D6D75C9097719F2DDC32A8A57D7C933 +:10063000EBC6A2FC2DC2F991CFEDFEDB90BE279751 +:1006400047C4EF97AE7D1D5DA73D368C630B1770D9 +:100650007EECB078AA12512F1E663310CE0F10D543 +:1006600086BC55419624F0EE6D895419FBCFCC7BA6 +:100670001E6E75901C539E37FD896F3DEC477C6C58 +:100680001D45F2BF70C17CCA5BE456F3BC45971DA3 +:10069000F404C0756A464C00F3ABCCA15520DFAC26 +:1006A000FD3C8EED5083FA68A5C5B71EF3ABBA1EAC +:1006B0003A247BA5ACC9417D3444FF6CAD157CA6C2 +:1006C00010DF0D95972D34AECE2F07033571AB0C8F +:1006D000FC725D96DD142FF76EE671E05B2171E030 +:1006E000E2D33CBEEFB2F37CCCAF6E74C56FE1F2E7 +:1006F000D47C17CAD7E7E3245CC775599CFF2E0545 +:10070000EEF857DC7FD0F101EB2AFEBEC16E2D98CA +:1007100067D6EBFAFA17D6459BDF8BFEF9B2763B2C +:10072000CECBE646284F825CB8AB17935C7F3E97F2 +:10073000B9B0FEA0DDB32506DEE72EF88F3B695E7B +:1007400091275A1B21F06965941FCDFF766A6007D7 +:10075000B44B6CE9FF8607D6F307A7272EC1C08FDD +:1007600093B3CC7A5BB7C3D80EED548D55B185B336 +:1007700057B5D57258B857C67A7D46FD112AC79924 +:10078000D98CDBF53D1104D712E6B761FBC54C9B54 +:10079000814F30A33694FF33822E7AFF33AC3B6611 +:1007A0000AEA9D6A99F4CE195F6DDC4A5847BDADDF +:1007B00033A6149E370B7E7DF74E99E262DD9E8351 +:1007C0007D3E51CEEDF325B4CFF50199FCAEFA266E +:1007D000F903A39D5EE633AF276F6FD93AC4DFFB01 +:1007E0006098909F0FDA393EFD35D1E44700BF3E57 +:1007F0005806EB783F9050B203E0E9B5F0B27F0DB8 +:10080000870FFFAC498C79F93FD9A27AF541DC0317 +:10081000599D954170AEDEE5DD0E9A09FC91AC2341 +:10082000FD880FFF44D598770F7D7A3799ED7BEEE1 +:10083000AE2813BCE5686748FF778F5D6E908B7FAD +:10084000CD89E6766C811436EFF0C31C27D1BFF753 +:10085000AF7263387FEE67391CAF0B7785EFFFB35C +:100860009C185EDF1EBE7E34CE8F76CEDA3916E956 +:10087000BAB02E7CBB8AEC58BEEFB4EEFC32CD8908 +:10088000FE22975FBD7E52368723319BCB5BEFFE06 +:10089000DBAE4F457CAF975C3980D7B5A37CC5C82C +:1008A0003FB73495503E3A369BF3F519C5F3ED2C1E +:1008B000E8B7A67DFEF622A05F728FC585FEACAEBE +:1008C0001F42E178342BD49EE8F6AC2D12ED19FCD2 +:1008D000F3E3885202C51F978074E7FAD8BF3FCA76 +:1008E000857CD13B4FF8ADFE2293DFFABD10390B6A +:1008F000A5E79A5D663DF03EFAAD6541BFF5FD4D59 +:1009000093881FDF9917ED92697F6A52D17C831D0E +:10091000D2F9BDD7CEFDECDEB7B254FF55F869442D +:100920003F769EFCA5C627BDF3B81F0BEB8859196F +:10093000A6DF6B2817D7109FBCBFE9EAFEF0FB4289 +:100940006F9C15FA5CE723F4A3571AE8FD66083D8F +:10095000EA1ACCF02EAA37CFABCB479FA7250AFDCA +:100960000F90FF5CE467DDAF655B278DB0AFC5F32B +:10097000D83A3C1AEA0FC0776D5F5629EA0F8C4BC4 +:10098000102F1F86C015BA9E5ECBC0CFA720DFEF09 +:10099000B3929EC9D9B5624B2A1BCA779F868C73C6 +:1009A000AD7CA7C7BFBA3E0FED3FC867F3FECE3898 +:1009B000E91FC45FC3E33F704DFCA5CBFD2DD64EB0 +:1009C000DBB442AE4F6EC5BC6E9683FAB76629F4AF +:1009D000BC85717F0CCC43F9FC22D447514C427941 +:1009E000DD1713C80156EEABF966B1D1EF9B20F4C9 +:1009F000D72DBBE66F4B55900F026DE47FDD25339D +:100A0000F4BF7E7DFAF0362C47BD69714958EF5925 +:100A100045E54BA71515F5557E368F8B172E58617A +:100A200033AE33946F1786F0EDAE2C17F7B707E3AC +:100A300002E6223D26D6097A91F4E8C2A687A7E10C +:100A40003C6B761DB51500DC69D97CBDA3B315EAF6 +:100A50005F2FFC4FE680F582DE79176D20AEF76ED2 +:100A600089DB436BBFCDA88F96FBCE5785D3E34B75 +:100A7000051EAA841E3FA3787BB328FEF34838DE08 +:100A8000DA6F72F8162ED820E13A7BD12740B911DF +:100A900078D7D7619FCBF7C16E8E509E42BD3F88FD +:100AA000CFF51C9FEF9EAED99658363C3E6BB2C335 +:100AB000CBC748F8ECDBBF94E6F77F95B9724C7E64 +:100AC000EED800C62FBD591C5F067F57427ED7F96E +:100AD000E1DD0DE797794D719A2B1ED79BA978E23E +:100AE000908FD6E6F0FDC14F62CCE7207E25F4C0A2 +:100AF00070F9A9A5B7BD4E71C2AF6EFBD9D81585E7 +:100B0000C1F6C3C9C35291BF39784744E3FE30727E +:100B1000F303811F988FE2844BED928A7A0AFF8C4F +:100B20007E4D7FF4F2ED318AC14F1BCE6F5BC0E387 +:100B3000A1A0DF1688298579B78B797E857E5BA198 +:100B4000C96FDB56EE0EE3B73582DF66D01BA17EA0 +:100B5000DB29E6F9DA649C6F1E9FEF9D069E877A7B +:100B60007FDE040BEAC5530B1E253DBB4FCCDB2BB0 +:100B7000F4F7A90566FBF058B6795F6D88DE3C6D29 +:100B8000F6BF86B333FBB2BF989D01BF7E2CEABD92 +:100B9000531DF5CBBE81FCDC11A5E62843E9737734 +:100BA0008E2CFCA028E23F5DEFE8FCD765577FD78D +:100BB00005FD4FED1DAD6E21FD585981E31DBC3281 +:100BC0004E92019F076BA21BD14F3E28FAAFDD97D3 +:100BD000B71FF1A331885FA17C0BDA25E8F790F00D +:100BE000FF747D116A0774BBF423A12FD6ECFA8041 +:100BF000E2E5E57ABC8C7F30EFF9BDA91DE8EFBFD7 +:100C00006B117AE3A99800C635189F19F1753C0459 +:100C10005FA17A3ED45EBD13C81CCCEFE56404E747 +:100C20005BDD9EC1F353A25C7F279433901FB89D78 +:100C30003CBB7122AD7730EF57F36D8ADBDF03BF2A +:100C4000E96A7EF888762DF0E5E675113F57DDFFFD +:100C5000CAB936BFE9AC383FC7AED4DE340DD77958 +:100C6000CF28A2EFD95D9C5F3F13787FCFDE5F6412 +:100C700084EFAC90E73382CE67037CDF11F475EC30 +:100C80007C831EFA8DD0E7EF0939786FA3590E3EA9 +:100C90000F91A735BBCCF02EF399E175E6F07DD02E +:100CA000F736B644A1BEECD3F9660DF787FB3C9549 +:100CB0003193513F04324DF472E67C31795B2A69FD +:100CC0006477D8BD8C3D09FA3C339FFBF3970269EA +:100CD000AE1D06FFFDE7422F0FD1C7F95C1FA3BF72 +:100CE00060C49B0FEDA6018E5B1A43FC158B62C19D +:100CF000F378FEB7649283DE9BBEB91CF972EDBE39 +:100D000008CA97430DC1E17D22CAB52323CCBC2A72 +:100D10009F77A935609AB754F0C3B0F38EE027FDF2 +:100D2000775C626E7FCB35CAD797159734E498E528 +:100D30006424FE5D27F47D687CD28B7E8A3BE8A725 +:100D4000DC1CE1FBB40BF9CAE92BC73CDB7D424E4E +:100D500056EF9A4FFE64AFC5B32D06DB9FB4B83093 +:100D6000AEE89DB7AA05CB97766590BFA4C3D39B89 +:100D700065864FB73723D9C7530BF3B6A09ECE7FF6 +:100D80005B0E209F9C5AB8D8160E5F8B2E8F66DDA7 +:100D900086F3657ABE00E5ACD6A06F0E64F33CDE48 +:100DA0008110395B78399DFA0FFAB7BBB87F5BBF0A +:100DB000E0E16992611D4D39DC5EADCB51CCFEADF9 +:100DC00095FBB7C3E5CBBE1B429F5382AE7ABE6C88 +:100DD000A1D513365FB668811CA277B8FF85EB32C8 +:100DE000CACBFFCCB198D6A38FAFEB996B1DBF2FA9 +:100DF0008BEB4F3D1F975908FD6386E7CFC17944C0 +:100E0000BBD0799E16781A6EBEBB859F3E5C1EE9EC +:100E10005DC16FE5228FD47BD3577E8EF9B2BE9A27 +:100E200057A6237FBDBFE9F7A716BBD13E9F988E7B +:100E3000FAFC5DCC2B4DA6FC9B3D05F58D57227F22 +:100E40006EF1AE15143F417B8A837BC14FC1FEEF2B +:100E500008BA809E31D9AF50B95B8D7042BB7BF42C +:100E6000B88875D2BED348F8F955087EBEA8BE5FD3 +:100E70002DE881FA11E978AB5E66DD94178338E2DC +:100E8000EBC86F1B993697EC518FC582FAF59CE33E +:100E9000A3A48F27011F47FE36E963E0EB9528C323 +:100EA000D3E07D4CF873D209051CCFE0C7E51E07DF +:100EB000FCAC62B12A9E2FDE16EF5F83FA60A0239E +:100EC000D285FB06193B9BA9BC2A10E1C2F3C06581 +:100ED000BD0F9463FB2889A932CC5FDE33FB07B8D2 +:100EE000AFB03A10ADE021DC7D797C9F31E181E645 +:100EF0007332F58B5424787F61863F1DE13E7C7010 +:100F0000652CEE071C6F5F158BFB6DDFC7A55D477A +:100F1000CBF733E09373F8AF34FC4FC5A373A07ED7 +:100F20007C6297C50928D8925BF1A803C6D9D6EC94 +:100F30004971E139C6DCF8471D63194B4AD27A661C +:100F4000A9E047E68EAAC57249963E9EBB561B0392 +:100F5000F8FA1751F6A73E8AE51F5BBC1912B4DFF9 +:100F60009D3BB5D69A0A622CCD29B1C078ED4F6D64 +:100F70007FD43103ECC213F797DF03F3BDF8547D40 +:100F8000AD3583F6CB44FF15B5955658E774BDBC17 +:100F90007A1496DDD11EC50271595A6E4CAD15E614 +:100FA000EF4AD0363028F7E6C6107C53BDDE576CCA +:100FB000305EDA534DB5734164A7F6FBA5ABE9FF8C +:100FC000D48D95EC23A0DF85D9BE4A2BF48B787A9B +:100FD000FDA385918C4D79A0229A4139EEE96DB53A +:100FE0001125B44F55A2C033FEE9569AA7BCDE3F87 +:100FF0009EC1BAECEC8147AB693F4DECE38E517278 +:10100000910F07CBF93C1F35584EE1E5375FBFAD77 +:1010100081F8C9C15C96AF4039DE5B28A19E4F8D37 +:1010200056296E777897BF01E53725D7861DD8CE2C +:10103000EA7D0FDBBFF99DBC0CF47FE45CCED7C723 +:10104000BEB336FD0327BE4FA6F8B26B0BE7D7D071 +:10105000753E9BC7F5575754F8FABA5C2EA7FA7E2F +:1010600065DC69A63D03CF13510377223F5A58CF61 +:10107000BDCDB8BFE350729701FCB3739DA6F3B228 +:1010800083FB9C0E2DE132C0B9B294FBF5837A2923 +:1010900097F37F96CAF54CA26C217F7FA0447A0219 +:1010A000F93E5196BE3E1FDE274531EF21AC1FC5EC +:1010B000A83C0F44E6104C5595E53940E771935331 +:1010C0004B5A30552FCF4EB8CCFB77ECA7F82240C7 +:1010D000E307E1756D407813E59A920D8506FC17DC +:1010E00072FA7425703C74FD85C71D5D2733F7E3E4 +:1010F0007E982DD7AC2FCA7B6AECB83F975809630E +:10110000C2FC03F74706683E875735EAA5B5027F5C +:101110004D972359C060279BACDD76D4474D979DF2 +:10112000F43EB1253CFEF53C64D3E578E69F647C53 +:10113000CFD7151CC74DF5000FC587C3C173F72066 +:101140003C052C30291C3C85F4FE1F054F0132065E +:10115000E0F5CED4C280D15FD7C7DDC8781C7A67EE +:101160008C969C7015F96CBA2C0D03BF95DE678CBC +:1011700003954CFB01DD76561884AF60BA968C72ED +:1011800076E7A18A64E634D0DF2AE82FF43AD2D792 +:10119000783EE16981B7D583FBF6FC5CC5CAB442F1 +:1011A0008A5BBBFE5239613E8DC7F733BBAC3C7ED8 +:1011B0002BB76AB45F5EDE93E0F24BE8D7799EA16D +:1011C0007D42872BFEBE69413EEA4AF055109EBE25 +:1011D0002391BE0F5DEF73BA1C8A7D9BE47AAFBC8E +:1011E000C2009F2E67C3C925630F72B8C4F71E4C97 +:1011F00055728DFBE23ADC91B9DCDE02FD39DD523D +:101200009D9C8F047E86F2C1E811F8209DEACB7B7D +:101210008ED13A9B049CC9A7BB63278875DC0ECF8F +:10122000EFE4F1FDA4985C6EE7CB5EA88CFE8AC863 +:1012300007E2A8E583FAFE8DDED9D9D04F2F233FF0 +:1012400029846F61AFC0CD7104DB3FF0F41BB55B47 +:10125000B3113F5A09E11DFE72C29C374B14F84D81 +:10126000CB65C2CE87EA0DE6D3F169D4133ADEF539 +:1012700071FE24C6F9BDD06B41BD27D1FEE997A709 +:10128000E72AAE51CFCD177A8ED733B7A709EB93A4 +:101290002CE2BB04175FCFCAD76B7319B80C77A4C5 +:1012A000C80AFA2DAB25EF76F42356DAD5ED3106D0 +:1012B0007E5C030870829FB40166F81CDEAFEE8985 +:1012C000A27DFF55BB22E9BDEE3F7DD626119FDDF5 +:1012D00001336C2C1DCA1F77A4D8699E95F7E7C40B +:1012E000798DF059413E30CF1A2DE07384D84DAB43 +:1012F000B9BC32D7BB42920DF54E6E479B32B584D6 +:101300003CA0C347923887D09A68DA1F5172CD71DA +:10131000816EAF7E93A9A562BFD0F643F5A0B06FF2 +:101320003D35948F48DE04AFF07B904E46790FB682 +:1013300087E7F792EBBB2D4D06FE389857C4E54B77 +:10134000667E09F07276210037D190BF91387DFC1E +:1013500091CC85F98D13F19E3217944F24C6A82D98 +:10136000A83F64FF711B3CA7E589FDD568CE8727A0 +:10137000227D7B705E2B5312884F857EFA653A3F43 +:10138000F7A5EBB5E0F72972F72C43FD0969FE18C4 +:101390003E4F72698B64E0A7C171990BC7BDE1AF85 +:1013A000BFBF380BBF03CAE4E3B961FE1A831C4C0C +:1013B000A9E6E7306E10F0DD90C7F7B34F6478BA56 +:1013C000109E13F1CCD502EB7A15D82616CAAFE6DB +:1013D0004A6A8B12D44FC8FF482FE04F2FF24F922A +:1013E0009D97B7E57379FA493E1F5713E5A458DE78 +:1013F0002E943E8F897674D4029E8FCCCB9C8F71B5 +:1014000095CFC9ED789CA35B54F2EF4C7754C07A2A +:10141000C28C539BC7F34860C768BD43ED8A6EB763 +:10142000FA5BB350BFE4F37DBED03820B4DF395B44 +:10143000DB31CA279DE2F9A49D2E4FDC68D477A743 +:10144000B2981FFADBA3F97793A1F0DC2BF06A17AF +:10145000F1F256917F89BD1C4D71F44601AF35FF05 +:1014600063A2BF752AF03AFA2FCCE37719E86F73BD +:10147000594CF14EECE558EADF747992C94F19AA3C +:10148000CFCBA9BE2085C75597CE2C8E6361F012B5 +:101490000A77B780532F6BF9D639CC004F05736D9F +:1014A000C5F12B58E8B99BE92EFAEE0E7C6F3C1F74 +:1014B0000A7A9DDB0F787638B99D457DA9C75928F2 +:1014C0004FAE38C6F2F22A1EC94B34D81DD14F9701 +:1014D000EBAEBFFCDE1FC3FDBB04CCB7C7097D1D4F +:1014E00027EC9FAEDF43CF2DBD23F4862EFFBABF7E +:1014F000124A6FBDFD39A17F0E1DAF49417A1C769E +:10150000B8243CEFBC2DD293827AF992C81F5CCAF2 +:10151000E1F3563B2A3563FFBC3C85DEBFA6EB31C9 +:10152000E64947BB5D3EDD2B1721BF3D20310CF561 +:10153000A7CC317FDF7424CF49E31E11F2A7CBE79C +:10154000AA107BF5521EF7D75FCA8BBE26BB37A801 +:101550007793B8DEEDF8CFCA009E871968B632FCE3 +:101560006E774AB516E82F437E8185421C54B164DC +:101570008ED20C65DB1B363502E5FC4878BDEADC13 +:1015800028690DB0EE9FE5713A34B9399C4DEE6E85 +:101590007B368098D6C4D737A6F3A86435C03FA65B +:1015A00091B7EBCBB351BFB43A2BE9DF349F760050 +:1015B000EDD769F1FEAD3C36F87D25CA19F463B864 +:1015C0003F96A6F2719D6A405A05E3AC177CD46A37 +:1015D000995F88FAB035299AF4EEB202EF7B790868 +:1015E000D799EE6E44C394333D568C1F371568EF80 +:1015F000E37B7D5D8AEC4A433D137D86C3D59660CF +:10160000F6A319FBB6C0F37E0E8FD35382F026C526 +:101610002A167EFE9265227D9312841E4C62DEC3E2 +:1016200048778787FC97A4286867FCCE9079CA30F2 +:101630004F17482C2A453D9EF500F713E6B90B4A93 +:10164000312FFDA33DE1BFD3BB22F408C0FF272308 +:10165000FC23D93BBD9D6D987851D787D1C20E54DC +:101660002C712F45B89BB6FE6B74044C99D6D921CA +:101670004593DEDCC9F3B402DF0087231FE9D759A5 +:1016800041FC93E6B7328C7BAD51E901FC7ED79AE1 +:10169000303599EE051806CEA68DB2D6608C07B609 +:1016A000DA09FF1D21E786743F37239FEBC9C30585 +:1016B0009E947C78AE3FF2B09DBEFB3FF0813DDC56 +:1016C000F9CFC1FED78827A991DBF1261773619E58 +:1016D000A0624903D9D1DB21AE8F88C77CB444FA1C +:1016E00099D53902980A6BEA3CF46A1A944737692B +:1016F00093313F96043CD05318D4A7694DC0571678 +:10170000C4CFA16E8C37D336313A95A9E30FB46BB1 +:10171000FA71E46BF0EC317F74D1E66DC2F92EA65C +:1017200046AB7E90839F1E7A5BF926BCDF0AF5727A +:101730000AF2F7FE14FC5EB775BC5D457F725381FB +:10174000F72B8887042BD869781FEF8E519B616C2B +:10175000258295BAAE82F7D075EBF65F7F3F6513B1 +:10176000978375F9E2FC34F366E0BA15996DA273BC +:1017700003F9FC3CDAAB36E67724601E88AFE72736 +:10178000F9DA57911F180A612AAE2B70D49E317472 +:101790005E03FF78F213BF089C9D7605E0BA5DE812 +:1017A0008F8A2507A48F0C74FF7A3EDFAF4D7BA68E +:1017B0004352888F0F3457B9A93D433D96F60CF735 +:1017C000E36F87FAD526BDB1A21ED7D71AC5FD1C77 +:1017D000D01B6B701D272C1B5E417B73A294A92D1F +:1017E0000CF548CF7152A702DE1376EF1EB2D7C0B8 +:1017F0001FCD50BE239FEBFD57ED5ECA07BD9AC6B5 +:10180000BF376EB56CC9F73983721D2A877708BE5A +:101810004EAB3B2059C81FEBA175AEABB3125D8E2A +:101820002D5EDE80F3AC73A796E07791D7F96FBC9D +:101830001BF5E1DCAE7809F71737E7737BB4AE4DE3 +:10184000E2FBC16D6FDA171AECDFEE1FBE69578A33 +:10185000B03D3F97BCAEEB9015CFEB667C728CF839 +:101860006F1DF0576419D283C37FD1D69D8EFC13B0 +:1018700073F89FC720FF319785F82FBA9AEB33CCC6 +:1018800035E6C4737B4FFA6D4B2EE50574BDF91335 +:10189000B11ED093A4E792928A4A308E7A44C0A9AE +:1018A000CF5315A51E437EAE2A9508BF199F9C24D1 +:1018B000381FCBD7F3C65CCF2AB1FC9CBB3EFE5091 +:1018C0007D3F81FCDF97847F09F4DB8B7C15AAF7D1 +:1018D000F5F133F6D5D0F7E883F4403C1BF8E899EE +:1018E0007CFEFDCD33F9560187A6209E140BC82936 +:1018F000FAD5764F217E076F4D12721A7F5A6936DC +:10190000C9E94AD223AD69DC0E019F3F8BFC746CA0 +:10191000F173723BEA974229807A75D70BF3099FDE +:101920004D4833D42FDE06A2334B813802ED8A971F +:10193000DBC5A6BA4514870EDAABC312E1BDC9EF09 +:101940000CE0DD13733BE7F3FCA33B52157A89E807 +:101950001BBC9FC09B81F1952EE73AFE747C7C9660 +:10196000C7E5FC97F9DACBE87FE9F1A4B37E80E222 +:10197000F450798C13F1A40FE349CCF3AA8EABC6D3 +:1019800091BADD1BE4771147DEBEF167E477DD969F +:10199000F23A3D312E417F5E8F5306FD3741D763CA +:1019A000E2D98F7206CFDBCB3A49CFDEFEB18FE4AE +:1019B000C559CDF582F38C599FE9710A385E848F41 +:1019C000DBCB785CB316F4A514266FA33FD7E2FEF9 +:1019D000118C37EBCA2F638DFEE4BF0B3E3E7F10A8 +:1019E000FC5ED2F73EF257871FC7F70B3C0FC00EC5 +:1019F000F1F332FA7863BBE74C3B0B74FBEDC13873 +:101A0000BA4FE0E233B57763D97F208ECEA38CED59 +:101A10005E40FC70D13D4D45FABB5B387E2E76565C +:101A200012DF7C92AC58D02F6DEE7C74E687C8C76D +:101A3000051CAE4F5E9037E2FA3F79E1959D7F71CC +:101A4000E37989922424F996A7FF971DBF9FB604D6 +:101A50001EFE2BDAADC603712EFC9EA1E507DF9BAF +:101A600089E5DB0FC4919E6CE97C82D71FE4F59F6A +:101A70003CD13113F17CECE9E7E5F6B220FF7EF2D0 +:101A800042C7CB7FC1B22756453E69F2EEFA1696A1 +:101A9000D982585A27F31EB72F34E49F761F3A4A4B +:101AA000FCA6F3C3DC4ECEC7ACCE4E71B7CEB76743 +:101AB0005F8F6212C40367E3F9773FAB640BAD7BC2 +:101AC000952CD1F3BCD8E79A20F6618AC4BA2F6C62 +:101AD00056D33EB6A17FEFF9451DCF1BF53C598685 +:101AE000EF2BE83DBB3289BE7BB9B08B9F83C2EF41 +:101AF00060705FB0F131D983E5DFEC92F9399F076F +:101B0000223A708A5B1F93FD24570FF232389CE90A +:101B1000C67DC48F7E1D5917CE4FD3E11BF4BBED9C +:101B2000DE4EFC5E6095C5C2E3932BB5BF980AF00C +:101B30009DB52887D1EEEBFD2A0BB87F175C078F88 +:101B40005374F8F57641F83DC561E1DF156D86FF08 +:101B5000B168013F6FAF8F73F6BDC8C670F0EB7808 +:101B6000B5221ECB30AFC47A50EF9DDD65E3E7525E +:101B70001A789EE291EA390750EFAF7A80D3314E5E +:101B8000D50EE0BEF3D70A6CB40E9F53DF7FE3F1AE +:101B90007ACBAEDA5FA07FF8D903910ADAB15509A2 +:101BA000EA39826F27FFFEE29507A7A41BBF233BFC +:101BB000BB9969B61C03BEBF5392CB609C8F1E2B92 +:101BC000C9B5C1F34F47A7A5A31E5FB533E2EBDA52 +:101BD00055D6715EC46935B30BC7A21EF7CBA0A75B +:101BE000673276F2464EBFF5E2BB83F54BE33B30FE +:101BF000DF6B71B89806702EA88EEFC0F5DC5DC063 +:101C0000ED19E684709F94CD93C8FF6BB5FB0F92DE +:101C1000FD7775A6A3FD8F2EECB68F86F2E2FA4310 +:101C20003331BD5504FA17EF6181DE073E073FB738 +:101C3000B66DED326CBF47662E3915DB3553FF7438 +:101C4000877E0F89D5754EDFEF95AFE60F99EF7759 +:101C500031DC43C3CFCFDAB95F06FE0C8B8467F962 +:101C60009D22CF2CADA4F30627BED13D1DEDED8FF7 +:101C70002EDC11D55468D48FBC7F5A17F793D675D4 +:101C800075D03D595FCD2FA1FB8AD689FD35B79020 +:101C9000C3F57EA7C96E3E22F837C9E5A17B531C68 +:101CA0009A27F13EB457111E2BD9F1AF7B6CCDF4BE +:101CB0007DCF40FA4272A49E34D985DD366FEA6446 +:101CC0009CB755F83F0738DCD09FC6532A3537F606 +:101CD00087F1693C47BD66C5F1090150FEF79F2CAD +:101CE0003E60DCA70AB53B387E9913FD187F1DF1D5 +:101CF0009D625751EF7C824D691C7FB131EF1E9A76 +:101D0000CF423B8AF273B8A0E2D982C4E053CF7FBE +:101D100085D2E9DFB11EC6C91FAFD1931D1C754D19 +:101D2000F732E97EC2FA6AE127FCF803B273EBBD31 +:101D300056EEDF793F26FFEEB79B35F611F0F6EE53 +:101D4000173F20BD5A7384D36DB7D4BF1DFD43FF29 +:101D50008DD2A4270DF67BFDEC8BE946FEBFBDFAC4 +:101D600083358887CC23A92EB483EB67F6E7A27E60 +:101D7000FAF4452E17272C16C2EB89FD133AD08FA3 +:101D8000911AB9BFB7DEA7EC8FA07C238F1B214E21 +:101D90007AB80AFDC84646F982F55D1D64275821C8 +:101DA00097938C7D1F6E47B98887E806EFF33AB6A4 +:101DB000F8BDEB11BEF54D6C32DA97B439DA8B58B9 +:101DC00066472486A29AB4C45D6125BE5B3109F9D9 +:101DD0006EF7D8CEEDE827FAAB189D9BD96D6B9BBB +:101DE0008DDF53EEAE525C8031C04B5FFA71AEEFC7 +:101DF000D527F1E95D3006FDB3F5EEC52AEAA72A3D +:101E00003B8F8FAA9262286EDAFD6207C551EBF311 +:101E1000ED2AF94F475650DCC552A2891FD61F69DB +:101E2000CE57609CB9CA752A9D13B3822B83766402 +:101E30008B93E17873E7F40FCE9703EF3FB5F5D0BE +:101E4000B9B24F7F18C1FC863C6CFC1CDF9E6FA2B0 +:101E50009FEE2A556515E3B41E2FFAD320EA6A33A4 +:101E600094DB6C9E0815EA076E9402B89F102FFC55 +:101E700097AC6A4EC7CB429E2E0BFD73B9C06EB2B3 +:101E80002BCCE52F467BF63BC107F8A724015DE983 +:101E90001F408F866E92238C5B919EEE08ADE47F8F +:101EA00018F8D45DC9FD097D1F2311EC2CED672CBA +:101EB000B1129DD380CEA8FFC05F1E83F8F8AA3B65 +:101EC000AF14CF31A48CE77A352D5FA23C01F3DB50 +:101ED00019E22D7194F7618CB7060AA4F2FDCA507D +:101EE000FE1E335EE4654779CAD00E2426F3FC78E3 +:101EF000A25C618974D3BE888AFD12E51ACA870C78 +:101F000024A6AAFB0DF8D4F32617808E74EE34F0C5 +:101F10004B6B8DC19F08EEB744129D2F58BAAD91FF +:101F2000197C7DC8D7FAFA02CD517546BD9529D6E0 +:101F30001328E0FE067379881F922CEA28CCDB5424 +:101F40008D62DDB8CEAA276E7F82E7D95B681DB1AE +:101F5000E319F54BCCF250DE6D203186E04DCC62BA +:101F60002BB17F624B8A847004F1E9227B7258F8AE +:101F70002B83728EFE5406CA39F7E3D7831FCF2412 +:101F80002EEFC497E0E7D3390221F783FA4CC8FD5E +:101F9000DC239CBED1D55CEE41EE26A1FF88FA0C75 +:101FA000CF8F7E5A713117E59EB1E252947B5D6E00 +:101FB000D7DBFB73D5C291E5BE2A3A40F2523521F8 +:101FC000B7B42523D8FF539B42FB9F9F825C22DF3F +:101FD000FFF4C5B703C67C854E9757ED7E92A75791 +:101FE00033A3548E3FE0DB98A03E5CFFA3FB73C39A +:101FF0009DEB08DA353FF91B173219A7BB1817F705 +:102000000C634AE9E97796D23D75FC3BF36A8BF0A5 +:102010004FFA9EC5F6D1850AED5F3BA7F7CC407D10 +:10202000B2623CCFB3EAFE49FAC64EBA4728096C01 +:1020300025E17B7F34E5F7F53C5E285C0BC673B980 +:10204000D4F3657A5C8AFB1AD8FE5BE3397D3708E6 +:10205000BEBA6FBC64B2AFA1712D73F2F86C383B9D +:10206000A2F7FFB2F28BFA3CBA3D0BE2BBD9B43F08 +:1020700083EB9A5F387CBBB6A35C7FD01FD2E74767 +:10208000FCFCF927A87C80AEFB84DE5A56E0B979C7 +:102090003CB44FA8EEA67CDD73222F9EE95D12575B +:1020A00013665CBDFCD0E6AB7F5FE1FAAB4C70E23F +:1020B000B6198EE39A5DADE2F9D2EF097C85B6B729 +:1020C00032EB1FFA0DF709667AFFCCF4FB4C107F58 +:1020D00043F92F601AC735DDBCFF82F05FED1E9318 +:1020E000D690FD93D6AC9789CFA21DB1C437B3303B +:1020F0006884F9EF57C674209D70BCF9E4176D3100 +:10210000CD1B0A47A4628663247CB65A0E35227F13 +:102110003E27F099B9E7EA70FF50B4DBA99F0F6E34 +:10212000789DE179B54BA7199D676FB528CD687F7C +:10213000FDBF6225688F6366B2FFC0FAD8A96DF94A +:10214000745F6673671DD9158F19CEE43AF33D307D +:10215000A9DE04537974639AA9FD585FA6A97EDCB1 +:10216000C6F1A6FA0C7FA9A99CD57A9DA97D4EDB64 +:102170006C5339AFFDABA6F605811A5379C2C1A5E0 +:10218000A6F6459D2BCDF4DE736B259D5BEF63F1C9 +:1021900048AF8982FF98A3BFD4784EFF8FE3F93907 +:1021A000BEF23EF33D38715343EEC119867F42E9DA +:1021B0003DF14828DFDD487AEA5221A3BC50F44BB8 +:1021C00017B6201FA5AC62BE8869782FA799CF47A4 +:1021D0001A6F4B74B16537DAB73E99BE6B7C192B19 +:1021E000C2F8A9FA77EB7AB9AA3A8EEBDBCB3523A2 +:1021F000F8B59C9F6B22F8FE674DB4F93B974913E5 +:10220000B83E9D3081EB8B91F8F3FC66F37731CECD +:102210003D19B3117E86DFA74898EF902A52013FFF +:10222000095E27F95D8DD66E5662B0F7BB047FEF6D +:1022300016FCDDBED945E3FCCBE6147AEED9ACD072 +:10224000FB7D9BF3E919D8ACD2FBFD9BA7D2F30031 +:10225000F85BF87C6A73353D0F6EF650BBEF6FAEDE +:10226000A3E7339BBDFCFB2A2F04C26541FDC22EB0 +:102270002784CD730FF9CE5FFF8EDF3BCDD68DFA6D +:1022800049B1FAF01E84E1F031A4FF08F79C86DE24 +:10229000933A7BC2DF764FEA48FA4FE717766552EA +:1022A0004EB873BFC00774DE27E1078F3DE627FDF8 +:1022B00055C0BFD377F0EFE08AD1D6535CD69F6686 +:1022C0009C27745F7A368B0BFBBDFB8B13B81DD636 +:1022D00004DF69217CF7DD09DC4EDC23DAFDBFC2B7 +:1022E00077476D31E4DF1EB5B9C6241AD67BD41604 +:1022F0004DEF59BE8B617CC512B439C89798BAB7F7 +:1023000083FFF4D30936E16F65D33DB3FAFEFDF0E8 +:10231000726DCE4364EE4925BFEB928B69E8D768B6 +:10232000780817F091320F7C18A4A3D7C5F7CF6EA9 +:10233000137E8F15E88AF64E35E8C930F74B0DC786 +:1023400067BF9EA098CE03859E43C8F4A65AAF45AA +:102350007E869C5FF882F2F3FD7F90FCE87CCEAE37 +:102360008CCA0E273F9A909F15137E42F2A3F379F1 +:1023700005DA25C3FC6F0BFDFAB6D0AF4707FD8524 +:10238000D47AD24FD6BC0463DEE497A2FDC8F88DA0 +:10239000B49AF45B889C8ED41F7754507E34901F7F +:1023A0009C5F73C4FAA363BF087DAF8EBF21F31D8A +:1023B000715F53FEC5CDFCB7209FAE6116DA975D05 +:1023C000E370D27939D66EBBD86FE0D3E24CEDC260 +:1023D0000494178D29AE2492238ABB99B8F7B94487 +:1023E0002FFB37901C4C6112DD0F2DF527C9EB3107 +:1023F0000FF83F62294E9AD2BF8689BCA02AE3BE5D +:10240000F01C702992F4A39228373E1E97CC76F4E4 +:10241000637F07C6FF59204392DA2A23BFB9A5E399 +:1024200027A1BFFC0AA37DB85287DAE2B660178FF6 +:102430008CED24C6E3CFF28F79FD74D6D3E2867E8D +:1024400033D900D54F7574B65801CE71EC8AEB1CA8 +:10245000F254F253EB3E87D0CC3FDBF73DDCD7F7AD +:102460006FB1B216783E1EFDADA7513F6FF447B86D +:10247000F07E7466E5F5BFB1395C285FFB2C5E67C2 +:1024800021E0A3217ED3147E4ECB37919F97B77E58 +:1024900088FE880582C4CF61BED9CEB2BAD5B81C39 +:1024A000F19EF099116CA7CB7D68F9B16D3C3E6F40 +:1024B000B99FF36F4B332FE714727E1D5D28F6032F +:1024C0000AF5FBCE80324978AFB94E175FB71FE0EF +:1024D0008EF4C5AAF89D9B965F4471A15DE1F73922 +:1024E00047E1EF0B007C918BDA093EC6EAE91C93C9 +:1024F000D4EDA1FBB643C7D3F2EFA5F1EC623C8764 +:10250000A34D73005F44D707FCB6F0FD8F6700BE94 +:10251000ACD5DC6FF339BD930A094E4D5B8DF97371 +:1025200078857874BA008ECC203FFE0D749881E3D4 +:102530008E44073966CE69CCC3CC0E4428989708E0 +:10254000A5C705D4D938EF9FEDE23E9EABD3A75E79 +:10255000E07DF6C61B03B89F37EBCAE6589CB772FE +:10256000E3DC80F17CD4ECBD7CBF62B64D71278486 +:10257000B1DB83ED9C308EF17E3D6BFF681CEFE597 +:1025800061EE836B147CC0D818CEC7022EDB6CCFF3 +:102590006A7E8ED27B3DAED7CED224DCCF9063ABA9 +:1025A00069FDDB53533270FD8B04FC9A2793F822AC +:1025B000613A13DFE3F3FD0BA0D742C4ABBD5DA2CC +:1025C000DF9DB0A774D37DD587BE16FFAE1B4F76B7 +:1025D000F89F5BF406C8F3A18AF85BDCC00FE38BBD +:1025E000A62DB2823C1F7A9391304716DDFCB81FAE +:1025F000E03EB430FEBB89D0BEB9F8E26E1BDE030C +:10260000B84CA27A6B31D4C3784F8FF7DE85F34C88 +:102610007A431B8B767A29B3D2F742274F5C770235 +:102620007F1FC05DE97BFF5E282FEC95E99E35FD9D +:1026300077089EC07FCBBC3CAB1CF597F813F50721 +:10264000F0DF40F7ACF68CA378FF196B905C9836FE +:102650005CD3CEF76FB2F64CA1EF06B3DB4BFA7149 +:102660003EE68D50D0AF59D3CEF557365307709F05 +:10267000A213F38D36BC2F4C6971423F7F11A3F337 +:1026800093E31AF8F998737B233A303F7C6A33D38B +:10269000B6E6B061F5E314BD0CFC88F71DCC08A9C3 +:1026A000D7F5E739C9C5EEC27936C4AA4F02DEA60E +:1026B00078DF96EF32E84F88CCA97C839043B595BC +:1026C00055E2EF3E643630BA97C2CE7CDCDFD11CD7 +:1026D000FD2DA85F51F6CBE918833E1FE9DB2ABD2B +:1026E000ECF559F15E099600FA5F45372890E2A0B3 +:1026F0007BB332E89E22F90646DF0BA757771FB35C +:1027000041FB495A05E9D1C9CCFB4A0F3CA769876F +:10271000845E0DB4E011770BC6F930DEF42B5CFF5C +:102720006ACC65C5FAD94CB5F2FBB818D9D13929AC +:10273000FCBC79356BA3F75F659DF49CC77AE8799B +:10274000131BA0A787B9E83EAF990ED0FFA0278E34 +:10275000E165FC9371DF8A9FFF2FAD8EE8C0386E74 +:10276000E102B00B50AEEB6614D7D5562B746F80D8 +:102770002E2F3583F70728F47D1EB32A631719EC33 +:10278000E9C9BD8BE99E28C5623EAFFB5A21F723FC +:102790007A85BCED96849EB855A2BCD9EE2576828A +:1027A000A3EF5689F2C7504FF77AFB973878BDCD23 +:1027B000D39C84F5BF2B629807978B14939DEF9B56 +:1027C000BF967E8FA6635BAE0D9F355E71EF16F3ED +:1027D0000B38FD638D79D0732B004E91A732E63F05 +:1027E0007E2DEC818CBA6F32F2E5E265741ECDC1AC +:1027F000E14DBA299EF22E55ACCE8AE73A2F8A7562 +:102800000524CF1C82771DFF5E5D97A7469D3FACD8 +:102810007E7B1AD4D7AA19A41F74F89706781E765F +:1028200069E37C92AF798DEB18DE0351B164018DC1 +:1028300057E7E1E7CAA4462F7D37BCC4C1CBC173BB +:1028400063FC1C415D43C532B2F7ED110CE5AFCE20 +:10285000BBE23D3C77BCA4FE0605E9E8B0F2FDB062 +:10286000E4068011CF77D7AFA5F1B76A000BEA6C09 +:102870006B4F37F26F52A695E461DC3CF0F8C89ECE +:1028800004E8F71E3A0A781E3541EC6BC483D2C1C6 +:1028900073634BF63C5C8574496B62B49FAF30AF99 +:1028A0001DF13D9CFFB3F7BE2BF1E4F7A2BF300E44 +:1028B000E0DA282B789E36C3AA50FEF8EDE3DCAEB2 +:1028C000B6D6B7903EBD344FA21F1BA96DE3F72FBC +:1028D000C204E21EB76E0BEDE7B557907CB0D9DEAF +:1028E000EDDD65A42F7C087F09E3F98A3BC4F70B73 +:1028F000A1F141A8BE706CB4131CF24C2FD1B94F9A +:10290000622ADD2B1802BFE4F967AA07BFAB7F1468 +:10291000EA857C978CF777B03B6207E51EF5A956F0 +:102920005844EB515FE3EB99D4A3C9F8DE21FC2BAB +:10293000C636717B13F9948476BED2E55FEE86F1DC +:102940004F1E6FD88E47D76D6EC56A8C075E89990A +:102950007206ED4EEFEA08A2E73BA9DC9F9975E508 +:10296000F918631E492BE2F6A814ED29ACA764639D +:102970002DD95175E37C933D2DBD95DBD3129B6B17 +:1029800054387B5A85FC69C8FFA8C73D26BB3A5B13 +:10299000D8C7DE0ACF32E3B99BAA222E3FD78B27B6 +:1029A0007BC39F8EFC70E1E74CA1FC9F8D09BFC0EB +:1029B0008C7FDA6380FAF33F67742F25EA5FE26762 +:1029C00008101E05FE94F624BF72B7517F8FF7934F +:1029D000DD1A0EDF8B8B783EADAC7DBE8CFECC0B52 +:1029E0001D531EA56D8E11F833942E6C82B6BC0853 +:1029F000F789E479C46F9FB5F37D974327D610BF5D +:102A00009D96980FE3F6D0714A1128A85FD2C302B1 +:102A1000012968FF3E0310B15FD92959F5A30AF0D7 +:102A2000E019FE205E93EB1C783670B0AC36B01621 +:102A300094BFD4566E9752BD2E53FDE8C61453FF73 +:102A4000B13EC5543F6E63BEA93EC3AF9ACA59ADED +:102A5000534DED73DA345339AFBDDAD4BE20E031D3 +:102A600095271CAC33B5677EED64A1C14E17757A0E +:102A70004DEDF1DAC674A493F8BD9F89471ACDFDD8 +:102A8000CF807FE8C073623EC26319E365AA07BCCA +:102A9000034BBFB217FA2F9D1AE1EA86FE4B1B6C5F +:102AA000417F12E5EC0D2663FC5EEB75FA508FAAB0 +:102AB00021FE69681CBEF635FFAB286FA5AF7969AA +:102AC0009F616F11C4E54877119757C94EA2D76728 +:102AD0007DB28A3EFC5AF4E4DD41BA7EC638DF9608 +:102AE0001D6501DAC70D59BF1EB7370ABA2F8571A8 +:102AF000BAA12A22C54CF748C54CF7E87C339D6340 +:102B000054339DE3A69AE91CAF99E9AC9EB95BC624 +:102B1000DF55FA45AACCA4A98C8DAA36D35DC7F39C +:102B200054F85F383C87E25515BFBB34123E4F1452 +:102B300085E6359C0AFA5197ACDC9F80BF058EF282 +:102B4000A172DF378CDCEBF8933CC9A46787957FD3 +:102B5000E7BAED789F84DAC3E57FF2BC0C3CAEC2E5 +:102B60004EAF98321AE99AC65ED2BF2FF1E2B91A77 +:102B700090EB7750AEA337AAFD7E6E37E9FCDCA15F +:102B800013F6ADD9A8676F64CFCA61F6013F2CD2A6 +:102B9000F7013D1F162506F701CFCDF0D1399DD3A2 +:102BA0009245DDE246BF97119FAC7983FB6F2C34D1 +:102BB000BE0FF56FFD2B489F4C11F68B6EF2729392 +:102BC0007FAB529E2444BF947843EC5048FC2FD5F1 +:102BD000FFB3D9DF5D69C657CB546F869435546F08 +:102BE0000E1FFFF7D3FB59CCDF82F6F82BD5EABBDB +:102BF0007702DCBD5F7B7B34AE3F340F00F8B51548 +:102C00002706F757B56A3D3EEA9981FE4F74613752 +:102C10005B07FD9CC583F874161BF0793852A578C4 +:102C2000E2D4DE0805F7C7CBDE6CE0E7862545C5B4 +:102C3000F38B87E3399F9C9258FF61284FEEE37135 +:102C400045566306DD3B7438437D05CBA7D6491452 +:102C5000EF949FD6643CC794EDE3F7A6946EF154CD +:102C6000E23D0A0BEFE2E7077EFCBB3574CE29702C +:102C70000FAF3F5CE1A373DCA7EEE5F553CEF0EFB9 +:102C8000D80AFC627CA9AD3216EDD93689FB234304 +:102C9000E8C9E393593A3DF6FCE995BBCB82F45879 +:102CA00079417D3516DE370C78AE8F6343E9A3FB9F +:102CB000FF33ADDCBFD7FDFE39CC43CFEB998F9E00 +:102CC000D7EAF72F2ECEE7E7D9984A654DC401D150 +:102CD000D55AC573C8FFBE5886573B85FA016D09A2 +:102CE0009E75B82FE7AEF4D0BD2B8B8BB97F117CCE +:102CF000EAFBCCDA5815EAFBF4FBA01D1EBACF3E66 +:102D0000E93655E6793E9F15E52C30B66412AE677C +:102D10006E313F9792F5808FFCD09B9A60F9D0AED0 +:102D2000FB716B3C9E67A3BBA3C2C4F7C1BC5BC86D +:102D30007936AB9FCE6996CACA04FC62624371F1D0 +:102D4000E31847236FE0F7C2AB9E9BBAD88FDF0A28 +:102D500033EE8F8CD4AE4F9C8F392CEE035AE0C9E2 +:102D6000B0A01E395C62F6773614F378467F4EEEDB +:102D7000E3EBBC698CA4621C73839575639EFC6F46 +:102D80005D57E916FF72C4CFC2FD118C9F6B61695C +:102D9000C673C5BA5E59C8F43FCF09E4B33522AE55 +:102DA0003D5FE4237A9FEFC83B5E03EFCFCD9702F0 +:102DB000783FC82207786240FFB74FECA6A73EDEF7 +:102DC0009AF69F9E9662AFC13F7A7CBCFCF904FAEA +:102DD0008941D2EF6BAC3C3FA5C39338A8DFC12F2C +:102DE00087FA93E0276D51D1BF3924A5C843C70D99 +:102DF000D5FB204F0CED44BA2E3FD58B9BEF34EA28 +:102E0000B3FCCEE63BB1BDF0BBF5FC26FC51FCBAF1 +:102E1000633ED75B490EBF8863F8F9CCD446FE7E8B +:102E20002C1B90B0BDC25C5B12F11E1EDC50806793 +:102E3000F289E3CD08773CEA33B417F71F2B237DE3 +:102E4000C63C7ECC9F8156F4FD0BCC6773CCD39AE5 +:102E5000601E588B0F6DB9CFE97D0AF597368692C3 +:102E6000A82C41ECB33A5D039AA410DF115222362C +:102E70004627A35F1E9A9F8BB0FA9EC632F347B8CF +:102E8000F0FCF1E3D1DFA2FA8D56872B82BE00F26F +:102E90004D41FEFE657182C853F2FC9CEC70257FAB +:102EA0006CB0D336574AB2D14F2FE9564CF5935EEA +:102EB000CB37D54FEE514DE529A7A79ADA4FEBD77F +:102EC0004CE5AF5CA836B59F31E03195675DAE3318 +:102ED000B5AF602B4CF5958E5B4DF555AE0DA6F25A +:102EE0000D29779BDADFA8349BEA99575B8EFCC4E7 +:102EF0002CB1F45DC5903C50881E9ED196CC8C714F +:102F0000C3605E25C54E7C10817431DAC569AA4262 +:102F1000BF172B819E85E7FC09DEFEE2C9A46FC7BF +:102F2000207FACCAFFA005C7CDD42E1C44FA3CEFCD +:102F3000B732846367D4FAC615187F6E897549A0C5 +:102F40003F76E6EADFC9029783FE787EEA23C7D0A0 +:102F50009E3D7FC41A40E082DFD1F2FAED518CE74A +:102F600043C63B283E7A1C3735A01C3BC14AE73993 +:102F7000D7CA1AFDFEC3798B8F3F255542F8565AA2 +:102F8000BC2A3EF759BC7F2CA6FC6D7B3AF2FBF3C2 +:102F9000AEFE47F03BE5E78FB8E93BE3E75FFAB009 +:102FA00015EF6BFB036303084757CFC5834FC0730F +:102FB000E26B3C189E38F5C347E6223E7B6C2AA69E +:102FC000DF7E6B670F30C3F7FCBFBD8B9FDBF13A31 +:102FD000648F15FD276B201DE3CE032AB703FD5236 +:102FE000F87B8F7E9D53A14EC4FAD4F0DF118E9AE8 +:102FF00068317DB79A99AF26DF62CCC7E4DC44FD27 +:10300000F5B2ED723CF31AE2589B152C9C13DFBB12 +:10301000E93D2CCF8F717225DE4B07F6242E3EDF63 +:103020008AF15F85F30F16C44B227A85503F20F159 +:10303000F393CCCAEF4D61D3AD03837E6D26F6E7E3 +:10304000FE30E5BDA15D85C3EC0F4F64E672685E9E +:10305000BB6022B707B6907B3382F0F2FB3280C6AA +:103060005BD1EF6BB180DF0770B58C9F9A8FF9361B +:10307000CDF96FA725D4BF0CF4A401AE9DE3B547ED +:10308000D5C9C1EFFC575AC4BD54272D09C837D63E +:103090000407AD3F6E46029D1BD4E76D9A6831DD93 +:1030A0000B721EE885F74D84AEBBC25F5187F255A7 +:1030B000CF8A4B119E451325F37D2242BF2F13F279 +:1030C000B5CCF5EA9FD15E5C5425914F74253D0B3C +:1030D000F02CF7C7D2F99FAFD7B3584C25780BDC4B +:1030E000BFD0E0F9E1DEA2732FE2735FC11FEF866C +:1030F0006783453D4A79D69DC28FD27FAFD43F9A30 +:10310000ECCBB5DAC919792B66AA80EFA8D88082F2 +:10311000BF931835FE029D0F5C3D91111D2AC14CD5 +:10312000A1DC0CA1ABE08B50FAE204C81723D1B9A3 +:1031300041E43981C3738DE7DD66E455CC443AB58B +:10314000D9587702F2DB4F22F8FD2AAF0169A1FCC2 +:103150004F2F17501EF1B2EA9D8E70EBDF75B3E36F +:1031600003745FCB4A719E8EA568F49DD843D3DD6E +:1031700025FA3DBFC8BF958E783A37B743C88FBE92 +:103180008E2FCAC7EE2CAE7774791869BDB01E9326 +:103190001C4F57399FEB4F7D1DA1DF874E572DA246 +:1031A0001DBFFFE5B2EAA175FF53CDC07BF159F811 +:1031B000BD8B385F38C27AF7FE9DEBBD56BA16203C +:1031C000DF00FD56465D1B5C9DFF4570E1DD6B0435 +:1031D00057F1B5C175FCEF844B639C3E23C105F4E8 +:1031E0009C85F4647306F83D3309D706DF05A19783 +:1031F000FE1EF812AE0DBED368475837876F11C454 +:1032000041E88786F9DEA68AF6D557815B007141D1 +:10321000949DC7FF513512E5EB24966DE3F723FC2F +:103220006DDFDD0CD22F8975C7A3DE7B3982E743C2 +:10323000D5815C631EF7538197CBAAF6FB89897809 +:10324000FF8DD007D5E676BF0F69A7DF6FC2E659BD +:10325000683FE591EA6CBAF7C5E260E27B2B7E3EFF +:10326000FF7F0BFB14FABD956E8FB60B7BB47D7C94 +:1032700035DDEBB0FDDF6CF4BB475A0AB74BFF07F7 +:103280006AFCA102008000001F8B08000000000003 +:10329000000BED7D0B7854D5B5F03E73E695649246 +:1032A0009C249330E1E5998447C0104E92C90B02EB +:1032B0009C3CC060431D1E6A10D401290F790D6823 +:1032C000356DFD9B09091153AB51BC152BDA81AA51 +:1032D000A5ADB746457F44A0830AC55EA51111B1CF +:1032E000A21D9122CA232368D1BFDCCBBFD6DAE767 +:1032F00024732609F1D1FB7FBDFFD7F8E9769FBD86 +:10330000CF3E7BAFF75A7BED3D8C594E857318FD50 +:103310005DCC827FF16F12639F34EC938659BAEBD8 +:10332000B1E552F19962BFA3E7F36DA37D494A511C +:1033300054BF2DAF4AC3ECDAF8F0EF18163631114E +:103340006B11933711CB61D271FCFE006817FBFE45 +:103350001E6366765C9F27F4B3EDF36D7078180BEF +:103360000A56990D65AC7E7028F22CB4B50C81FF1D +:10337000C0F33B8BAC41D18DBD7D758293B1C4351B +:1033800049522B94E2C0DBFE320F9E360E5948CFD5 +:103390006F5FE3906C50B664DE7618EB771FB0C8B1 +:1033A000FC3DF82B66CC8A6516FEC7AF5660BBC0E5 +:1033B00022AD123C0FDDCA72E13B4CB547925DF481 +:1033C0009DD0FF82F6387F92DCAAC0636570E0284A +:1033D000AD5BA4F9427B00E76BAFB4B763BB75B0DC +:1033E000DECEE1621D5C1E389AD35DF7CABC5D601B +:1033F000171BF0FDD8FE309F8003BEE730B1F656B4 +:103400001837DE253EF4581A63F7A679F7B800FEA0 +:10341000B6C1DE141FE067C248EF44C447FCE8139E +:1034200023B0BE62FBAF655F2E63E94D3033783F5A +:1034300092181FDC0CEB6D1A5D9A2347E1739622FC +:103440003006EF59BE1059A0B0FBB9C5EC65920328 +:103450009F5B0DCF430D7616B075D7D513E66A0680 +:10346000FD2A98D42C5199C00251EBEB1AEF0B8135 +:1034700005D27A1BDF4CCF7F27B0E610CC3320304B +:10348000FFE3B04ED5F1C7C3421E8ED23BDD861A94 +:1034900042338E01DD363794CEC4F2A50675E6B10F +:1034A000E18C5D3BB2E25E8443BA77DF8C6351709E +:1034B0001C50D761A867FA0ECF381635CF418BC3A1 +:1034C00086F621FE1386F6CBEA2386BA3BF085A169 +:1034D0007FF63A3633BA3EBCCD3E33BAFF3A93BBA1 +:1034E000BA09F1203065339423374886768722372E +:1034F0009AE1B9C529E78BD4DFD4CCB0FF3CE6DF35 +:103500009CCFD8A8A0CB307E6BA36C7E858F97BF55 +:1035100019E075F916D9305EC57FCD54F17D96CA94 +:10352000521E07BC8F69CF31BC6F914A0DFDAF1D94 +:1035300039EF5E259DB12A7B85711CB6DBB06E33F9 +:1035400053597D2A94E6BB3E15F3B0CE58790196C7 +:10355000E6CFBAF0E4C6F1541A2F560E04EE2C4F03 +:10356000397E39E3726012D2A7A4201F47E218C344 +:1035700075B21C26633F1DCFBF44FA847196C5D037 +:10358000E73273C88AF4B3EC5BD2E79C916AEB48EC +:10359000183FBD8ADDE8ED45CEFD51FBFE496BEFDE +:1035A000EDED5DFC13C782BDD2B7839E9FACE4EF07 +:1035B0008F62EA801951EBDBA98D9F24327F3BF0AB +:1035C000EBAD89EA80D45EBED3CD47092CD82B9FC2 +:1035D00026D1F39359BD7FE78F5FFB3B621FEBB1B1 +:1035E000D273902BBDC2E35D1D5EA9BDB7BFADB563 +:1035F0005BBEC834C8837715993FEFFACE606AB7CF +:103600007C91D2875C72D273A09C00CAF32AF89F87 +:10361000D614C6925372CCCC0478767C6642796E0E +:103620004D00D28CD237ACDC1C89962755CC7C342B +:103630000C7C6102C17311A65661B71C0D47D1C73E +:103640005866AC33EC1FA59F468D6584FF2A269BE8 +:1036500059762FE369F3881D77D1003EAFFEC67718 +:10366000E6AB55638BE8B974DCDEFDFCABEACF78E2 +:103670009803CBA471847C184765CB16A39C9DCB83 +:103680009214D493F0E7B56730763DFE9F8CFC072B +:103690000FCBE0BDA48EB59BE07FE357272901D077 +:1036A00063379A22E938DF792CBC169415FBCBCE10 +:1036B000382BC2B973E71F86A0BE61AC9AF4BB1069 +:1036C00048102F267CF5F98144E0788FE7F4C2AAF0 +:1036D000237521900763C5BC02D4BFC9A60B2E94E5 +:1036E0000F4C920BC44CECDF48F0CE7BE3EAE410C5 +:1036F000E2C79E144848827E208806811C4A4614F0 +:10370000A7627937C9A7E41DE64FA2E19B84F08048 +:10371000F5D51F99177C254A1E7ED6712E1ED731EE +:10372000323FD1791CE6CF4A5809CEEF2C9B9B1C27 +:1037300042B8943A098E4FEDA84C46BD9AF742F52F +:10374000002C5F6A58279941FF9C6FF0055F19DED6 +:1037500073BD957DC80D4F3EE7835251F5205E2A1B +:10376000E37BEF5796CFE5CB54512DCB4FEF1E0F98 +:10377000FB4FCFED451EE59B685C1DAE807059CABE +:1037800040FB42C32FD0A519EA13B4BAD0F6B6F85D +:103790000358DAC65B921411ED1B9FCC10FEB0F0FB +:1037A000602BC8F116C1CF90AEEDAC8DCA5641D991 +:1037B0002042299A22695CAE07697E93998FE87945 +:1037C000A2DD3F18E93D50E9FF4518C609AC31B309 +:1037D00026281F4CF8F1AFC2F09DFA808DECB0F3B3 +:1037E0007143830CF0C62EF75D934FF3F59778C7BE +:1037F0005039164BEB4BEA0D388F8890A4A07E838E +:103800009146E0737D9D7335B81CBD5C9D8BF09B2C +:1038100094AF5E8FE581B8A12AD28B9CCF143688F5 +:10382000EA4106747060EA15C90CE0F5195393A5D6 +:103830005EE0A6973EBBE86D8E924BE11480772F39 +:10384000FDEBB5EF770EE9B0E2BA5B2B22437F8E3A +:10385000F3DD699336239C6B0FECFD11D4EF5746D3 +:103860002848C7CCDCD182EB4915643FDA856CABC4 +:10387000D1AEF99D460F7E874CE326DB81BA4DD849 +:10388000DACE501FCE1EADFE00D777C2CA16B703E0 +:10389000FE4FC46B65129430BF666D3E4BB5711E12 +:1038A000D2EA274CBCFD442AEFAFCF5FEFF7B0560A +:1038B0001E6BB07B9BA3FC00F9419B3F08FDD3B37B +:1038C000399D11E7C2FC57EC18B009E96241DB07EA +:1038D000D6F9D0FE487EC5529C17F643BA5C600EFE +:1038E0005B53A1FFDA51BEFBF0F90A99A9CFE0FBC7 +:1038F00072D83A13F0D729B03A9C47A7054A78DE28 +:1039000019C74B7D3E8FE44F5F8AF4D039216C4557 +:103910007AD3EB2B58E40651C4BA97BE07F5476338 +:10392000EAEF9BA1AE0EFECF8508E7BEE49BC9DEA1 +:10393000B1E761787E831FE81DF0E2DBF6E99E1FA8 +:10394000C1F3C5488BF07C718B100CB8BFBD3C8BAC +:10395000B573468D95383F9A7D0AF943FDF1E58EA2 +:10396000B75FFE51345FEE7A7510F255F9AED7D3DA +:10397000B0EC852F0FBFE8EE9F2F9DD99C9E57A4DA +:103980004FD980FC196C720AC244707DD41AAA7F88 +:103990006676A520BD7E897204DE6F0699D6817297 +:1039A000D91C94D08E5A11A7DE5B89FCF886C81EFC +:1039B00087C27D99DE1EB232F237D464D4C7913704 +:1039C0004401FD8D51E5EA00E4DB5B9FAE1880EF1A +:1039D000BFA7D1E57F973DB795B11AA4A715296672 +:1039E000E64CEE7E4F5FCF0A8179DB7BE167BDFD60 +:1039F000C5FF127BE5F7BA022E57FBB2133FD5E89D +:103A000077C517A30C76D30AE0079CE78A2F722F9D +:103A100069377DA9C16505DA3BBDBEEFA4E78F9A82 +:103A2000BC9717101DA9198D80878FC15F423A97E7 +:103A3000997719CABDC5A0295BC18E5E6CAFCD68F0 +:103A4000E4F4EFB795233918E58D59D383309E05FB +:103A5000C7FBD8E2730BA4DF652BD7F3463B86493F +:103A60005CFFDDE498457AFFA675166AD7E10E98EB +:103A7000B1225D7FAF2DF6B9D19ED1F903BE5B5A5D +:103A800050D4731DCBE36BF7A9D8CDD33114E966BD +:103A9000056B23390092780AF2C3CD8A95E469B3A5 +:103AA0007474CAC3F0DE52589F88F2749B717D4BC8 +:103AB000B4EFEAF35FBAC538AF65AC83C65DDEDE4E +:103AC000CF7C73B87FC2E281C7D03F61E512F17548 +:103AD0001C6F1F50C0E5F5E9A28E2742F01D31B1E1 +:103AE000DA8E76C4996D1F1F12319EE0E2F614CC77 +:103AF000FF67E351BE6C13A55699E0D0321EC6EDA8 +:103B0000CCE7EB596C7784D05E89C5930EAF93B741 +:103B1000F5AE87D235BADC52A84E40785AB2DAF701 +:103B20000E44FEFBBEA0901E626A3ECAB566331309 +:103B300070FEA5E1C82DB81E978B4922D49D097C43 +:103B40005CA6A876F41732EBABD8874067EF4995AF +:103B500076199E67A498BCA8079AA5F9293745D17C +:103B60006D8660F2A21CBF1E785346BD37DBFC3861 +:103B7000F2BBFBB6BF2F25783139D55686E3FBEE75 +:103B80009B8CED2922CDA762F667857698CFC00B76 +:103B90008E029BD03DDEA4AA48A19FE218BE3C5CE9 +:103BA000C790C3E1E302EA3F873A14E9EA371A5FB4 +:103BB000FF669FA966732F70B8BD80F3EFE874B3FA +:103BC0003708ED978798BAA9173ED3FB65A4325FF3 +:103BD000FB25F8706B65F806E4D3926AA6F6F6BD8D +:103BE0006505BCDF97481300FFADA9E18508C7ADA7 +:103BF0005782EC86F59DD93960F39AA8F55DD0E43B +:103C0000CB99A95CDF159BBD37EC71A27A9084003B +:103C1000C067C0DC90699EA35B0E8D1CA9A6221C08 +:103C20007479F360C2A326C2E31BC33747C34D9F19 +:103C30006FB3C0C7D5FDBA58B91C3BFF155F080666 +:103C400039F5653EA7E36E7963A6F6C962AED50A7B +:103C5000DFFD18506803FFEAC1371F4DC2797CFCB5 +:103C600084C86CA427D5242103E505D75B1F3F96A4 +:103C700036653BAC6761A6C850BFCEF7492D080F2B +:103C8000C9C7FCF782FC98DF1CEBEFB4E59D46BE8C +:103C9000089819F2FF82234A0B850BC56556FCCEA6 +:103CA000E7F05D11BEBBE06E239F7E7CE01E2BEA39 +:103CB0007961BEC32F505C2E40DFFDDE36AB84F64B +:103CC000D5C2078CDF59ACC933AABB917E59AF7EF0 +:103CD000C0AF0AC0FE47FE2E66C5C8DFDB1BB6B10B +:103CE0000F87E37CE626235F8F8305B793BFD361FD +:103CF0009E1EE55FEBF63F132B7F87789B66867EE3 +:103D0000B9088FEC01F3A3E8EC4F1E8E2FBDFE091E +:103D1000E8B761F0DEA90689CA970AD4E7511EBF49 +:103D200051E0DBCEE57C64E86958D7CA351C3E9D7E +:103D30006F6876731D97C73671D56284936D109343 +:103D40009A483EF9FD58CF30811E00B889E22D62B5 +:103D500012E1A98DD3FD5F3D2E94DFAD15EAD33F6F +:103D600084715B534CAC09F0E46C924623DF3A4516 +:103D7000E66F82F76EFECD5D344E3095CB89EC2731 +:103D80002B4C604EB3515B05013F5F1A0EE4A04A15 +:103D900070C8F18A084B4A0E87E9B96E77A42704E8 +:103DA0005D26182FFD72ABD2E4C6712BF291BF6570 +:103DB00016243A3E83FE3A8CFBF0B6EC64D4E767F7 +:103DC000778CA4925D00B8143334DD81887BD2ED0A +:103DD000A906783EB2BB3EBA7DBA3008F59CCFCA80 +:103DE000124A419E6F7DDAC4FD513E8F656B4219C8 +:103DF00073501EFEDAAC6C86A7CEDF4FCDC775BA06 +:103E0000CDB280F09B23485CBF68F6D76CA6FFB5A7 +:103E1000ED417D331FEC44A4A70F8520F9BD26B6E4 +:103E2000E3397CBFCEC5F5EC9C2A7806F5394D62A6 +:103E3000B009696AA92505ED41541DBDD98BFDD98D +:103E40008DB1FD3EB18417FED9D31D373C234446C6 +:103E500070FBCE1FC47974A6B054C4B3AD50B31F69 +:103E600046805C43793E0CF439DAEB267935B6B3FB +:103E700083601F20FD0812F5D7E1C3A4B6E7518F78 +:103E8000AE3449A487C03E0C24221DFC7EE4665C4F +:103E9000CF194B7828C903906F02B4CB85ADB3CD51 +:103EA00000B71503413E43FD3B850FCE36031FADE2 +:103EB000C80A2F34417DF5B34FF1FAE8F071ACDF59 +:103EC00051B89DF72F082F4479F060E13E5E074618 +:103ED0006203197BACF04FB30330FE279A9F75C67F +:103EE000C2E3D5675E18B5391085FFB642AEE73E2E +:103EF00089E3FD3E71B31B67209E73C223A2E35C7E +:103F0000B716EAFE2FA7F7252FC6859030F5F76084 +:103F10007C8A17C58E9FA7BDB7A44AD387E6C8B3CE +:103F200008AF575C722AE9FD13206B10DEF05E2BA0 +:103F3000C0C55998CAE539C02735B7E7F76E463B83 +:103F4000D341DFAB8BD633E3353CB15C3EFE8A8197 +:103F5000520AE2232395DB6F8090943B29CEB189EE +:103F6000E6E3CCE6F8718A523EF2E9A42AAE5F2677 +:103F7000A5A56D42BEEA6BBEFAF7A668DF5BD2A4C8 +:103F8000C10BC612912EB68FDAD4AAE1372517F1EC +:103F9000C2F54E5B21B763B13F8D3B18E03BA69B5A +:103FA0005EF471FB5B67DDFFA375320F7F0FE83CAA +:103FB000BF55EA5E871E27FAA4517BAF549F874CFA +:103FC000F4BFE4C51F6CA0F8B824A78A649FDDCFB6 +:103FD000E9C61E29C438FC2B17720BD0CF5DAED9B1 +:103FE0004382FA272BDAA3CBD77558D12E5ADE2E6F +:103FF000A8681775F3997A6B345F39B3F93A9DA2C3 +:10400000EA6C22FE837912FFA9244F62E9A50BDE38 +:10401000B17CDB633C39D5389E4CE3F58587BBFE2C +:10402000D17868EA1D9EFA3CA17F8051FFECCDD487 +:104030005FE73F7717FF85505EC6F2DF1D5D788B27 +:10404000E15BF737FC5E057F6FF90F007F1827965D +:104050008D74BC7CABDB343FB7BBFFFD5BB2A6A36A +:104060001EE88ABF6CDD1D401DB472C7D30CE37C13 +:1040700096352017518FEC14839B01A49DD0AD057C +:10408000E5C1936E8A17ACD5E4CBDA9448924071BF +:1040900020D184F67024DDDA8241C9481C3C87F7C0 +:1040A00003F0FCF1A875D7B3489205F1B04314F0C2 +:1040B00079B3FDC38C63406FE6B89319C7A2FCE0E7 +:1040C000E6442D5EE28A24A544E1D7F37B3109F76B +:1040D000F3C241B08F7BB167196B22BC86196F9F09 +:1040E0002C5EF81DFAF96703C34C18873B6B8FFCF5 +:1040F0000EE37267CD39A901A99B6F8E05AEC8A8E2 +:1041000087DA5F99F7D078D46B01D59A09FAF1264E +:104110004D3B2E7EB52909ED0831D1B3F745787FA7 +:10412000A10BEC3DA5A79D7633F32687DC3DED3151 +:10413000C08315E3D08B7C0E3FF93F1B8DED37EF2D +:1041400038F9678CDBDD1CED8FC1383E2D9E1D6B71 +:10415000B7BD5FA8D96DF92C1FF529A04741FBF029 +:10416000EC4151696564C7DE4BFA721FD8AD02DAC3 +:104170001B22E1EFEC934210ED0C1648277B50B761 +:10418000E356321E7F8AB5377AD823CFBD57FC233A +:10419000E8B2ECF977F31E86F2D4F3EF8C7811EBEA +:1041A000FFFBEDA1EFB29EFDAB767D7903E9E15D0A +:1041B000369A47E7AE3F0C453BA373BB4DC14977E9 +:1041C000AEB151FC32B02B31381CDB8770BC37EDFF +:1041D0003C9F17263DD34CF889F35809AF6777FC0D +:1041E000FD7DA4ABB33B6C32AE63E5AE0492F12B24 +:1041F000B7C705D15EE9DC79BED8174517DF763D34 +:104200002BACDC6FEA047A7C86CBE3A1F8FD15BB0E +:1042100026A491BCDCBADB8A7E62D5EFFF332F8CFB +:10422000FD9ED96D656348CF3CCA803E9C5BCF3F05 +:104230006401FC9D49E4FABF7D6BE97581DC9E70E9 +:104240008171CF60FC74E5EF13582B87CB62F4EBE0 +:10425000FA82C7E5FFA4F0E8B4744C198474F7B48B +:10426000501890A3E122109E97ED480CDA055CFFF0 +:104270000B49D42FCBEC074A00389CCF437BB8BF07 +:10428000755F89EB2EFAFF60DD26F6B5D6BDE49F9B +:1042900014DF3AFD7716723D12CB073DF9FF7FDF41 +:1042A00046F5DF252A34DFAFC8FF77FDCFC77B1E79 +:1042B000FA6D5F17EF5BFE49D7DD3FDE5FD5F09EFD +:1042C0002861DCA473E77F0EA5F57EC575FFE17F4D +:1042D000E8BA3D2C7203EA79A7B61FE3B40FA67DB6 +:1042E0002486F124B23B25667262D884B5935DE7DB +:1042F000359FEAB21F28FE2985500F34AD4AE2FBF4 +:10430000685A7E486C1C76FD4EAF05E1EB03300920 +:10431000E3C15E9B760DD5A739982AC0B8D398D74C +:1043200042F17000E7E3647F7B3B1640FD75CF7A76 +:1043300017EA178B203753FB5421F838C54B94DD0F +:104340000950BF7A4D662ACE3BAD96599C589FE1E5 +:104350005644E8BF9F450ECE443EAD1395C7F97451 +:1043600067ED2B666C26FF7F764DE2AD9313A0DFE1 +:10437000790FF713AF2E6AB2A0BDF4DD26AF1FE3AD +:1043800079570D8D0C4B898ACBFDDDE3E6FDCC5EC4 +:10439000CB2A787E35CE34B527BEAEC6C1E1F9D57D +:1043A00092D7E2A73887B64FA58EFE46FB5463AD81 +:1043B000DCBE5F5A6B0B62BC72A9A2BCB714E1569B +:1043C0006B93A007ABF4CC1B827438592C7FE4FBB1 +:1043D000B0DE034F82DC82E7271F7A7330FA418A0E +:1043E000E7F62948BF0B0549247F6A9AC09E83A53A +:1043F000CCAC9DB71FC79DF6A420609E9D45B3DB46 +:10440000B28A383CC42757EDCDF4205C53942BA0DE +:10441000A971828DF6DF4E3E2404913FAA6A7D7B0E +:10442000313EB5BED426D9085F6A12DA9F376BF0E9 +:10443000FD9345797518F6FF778BB246C62741EA9A +:10444000BF18EC50F4874ED6DE6FC5FDAEBC229986 +:10445000D699E699571C92715D8D3F23F20BA80700 +:10446000720DE3F9EE298B1AAF71C2AF68BC4399A4 +:10447000602F02DD9DDCD03405CC72B6902902DAC3 +:10448000858B36CE6BF93EF45F02F3C3B8C634A613 +:10449000DC872864E232E2BFD8FD063D7E98E63133 +:1044A0003E5FFC98B1BE10FA2414E0778C766FACB6 +:1044B000BD5B5EE4E8CE5318D93D3E43222DEB8927 +:1044C000FFAEF8A49E6FA1E1635BA9588372676C8D +:1044D000AAEA8BDE975A5AC4FD31BDDCB6E36F7F82 +:1044E0005E8AF4EEB129388CCA52AA31FE377B714C +:1044F0008507C9A9D29EFF0AD6E7F8A12E23BD5B86 +:10450000E8BDEBA50F26A740FD4697B017CB79B2C3 +:104510007B4A2A948B8BB8BCB829A7622F5004AB76 +:1045200055A65B7DDC3FA944797616D68EF1E66D03 +:10453000E10383A3E5995E5680B03347F90B55F646 +:1045400038668E82CF6429C550BFC29569E83F5551 +:10455000761BDABF9333CAD05EABE41BDA9F28E246 +:10456000FBB74F157D547B0BACF3A932514210EED3 +:1045700047B838BBE1B2BFEC7C25D2F1EBA3BC1647 +:104580008C5BEBF35D5564D6F67FB91FB5A48BEE5B +:104590003AE6E278EB37894477AF173DB87701D236 +:1045A0007126F7A7268B0E92EFEBBD9C2F1631DFFD +:1045B0005E15CAF5CCBF17E5CFAC0A7B04FDB65833 +:1045C0003A9A817E9780740CF3C5F761BEC8B70B29 +:1045D000371AFB3D5534720F7EEFA9329B84F1BC34 +:1045E000593171F21998479384A5F1792C3DDE5326 +:1045F000A4F95F5ADECC5302F7BF026F71F9D89766 +:104600005CD2E93296FE9E28E2F138BD04FF2D19F6 +:10461000E5D058ABB19F5EBE037ACE0CE3BCDB6045 +:10462000A7F2BD0689CABF34B8A8FCA041A6F2C350 +:10463000861C2A9F28E271AEB47AC073D43E485AD1 +:10464000ADD77A293EEA96A7014D7E468E207CD3CF +:10465000F6F3FD2D9DAFF438761AD6A3F2B5A6D5A4 +:10466000BFECAB06BF7E7F91169759B0690FEA4346 +:1046700098422011DE67CB76EFC1F85357FDD60F75 +:104680008CED77087B0DF566B7B17E77C5DEE8F770 +:10469000FB9A7F5AAD6CF1811E9DF1008F63C5B608 +:1046A000EBF37BBD51994DF117A72AE37E07737A8F +:1046B000687DFB35B9D0175C66639E218C3BAD529B +:1046C0009917BD6F795883FB610DAF3A9C99A2CAC7 +:1046D000D1F93DB1E3BDB368AC05E3303318DF5722 +:1046E00099B583A5CA63BBFB7DA48DFB4EB26F3227 +:1046F000E591311EAF3D342D63736B2FFB087AB902 +:104700007EF6BC2159305EA5375F40FA4A5B709552 +:1047100005F7CB0E4DFFC084E5D82C983F8C77DD94 +:104720004579C8F428387DAECDFFC04F8DF136BD38 +:104730001C54CCDBFF6CE279377F4EF20D996D781B +:10474000DF4EED8712F9FB63CDCC2C1644D10D2E34 +:1047500000F4CC0DB54C45F97CDD4575C88CA8F747 +:10476000C562BEDE836BB9BD88F09917D53EA198AE +:10477000E3478757ECFC261473FCEA7AF7D034162B +:10478000E4FB794A23EAF919A0D7D0DE02F9437C89 +:104790007CE8A0A8D808AA5C0F2FC2FF05FA3A044B +:1047A000FA10EDBB19F31C7ECC13043D3A04E1B5BD +:1047B000A86E512DC66F98266FECF00FDA73F921B1 +:1047C000738C9C32CA95B47EE44C56B151EF4DCBFC +:1047D000E2F4C572813EC774D3A78E9FBEE8E9009C +:1047E000EEEB59BAD777565B5F5FF0D2E59404F6EB +:1047F0008519F857D1E0CF4435B718F944CB671A7B +:104800006B6171D1769DA2D1C1D80ABE8F3ED6C24E +:10481000E5C5817DC30B6026EC40CDB9548C43EADD +:10482000F8ECE2CFFA26DFB0A8F8DFFAA9B63AA48E +:104830000399A989B8CE03DEC2B80A47379ED77B51 +:10484000CFA5B228B905CBB8243FED0F9B48EFEFB9 +:104850009FF839E9AB13399249C8EFCE0B995A9CAE +:1048600042FD4E947EE81072510F1F7520FFCD66F9 +:10487000410BCAB3392C6441FABC9E85A97E231E24 +:10488000A188CA1FB989A9143F4B96BC54EEC74FE3 +:104890000FC4CF17CE0945D1699EB69F3A1653DE95 +:1048A000A3ECDD7B34B85516A97508DFB1A91D4707 +:1048B00050DFA54DB43094B32AD01DEEFBBC5E543E +:1048C0001237BF177C8945F3E71547C9A7B45A9F2C +:1048D00015FB3DA5ED9353E23A8C67CE1866900F19 +:1048E000CB343C1CF1A88B8A697FCCC9E539F3BA7B +:1048F0002E05CFB1A95C4E609E3B8E9B96239B5AA2 +:10490000A3F47F4BB171DF77ACD56745BA5DA8F8EA +:1049100069BFBD72637E5CB817392216F97E589C58 +:104920006E5C07B793B83EEC4BAEE97AEDEBEA4527 +:104930005DFFFDB648BD13D76F36F1FD44736A9D28 +:104940000BE1C7A459441FF7C4D06B2C3CF24A3F7B +:10495000BCBB100DED5A93321CF095B74D7E0FFD88 +:10496000A9F581D912EEEFE9FDF7D71E7D6918F49C +:10497000DBBF8D4902F45B5F5312877277BD233032 +:1049800014E1734250E27E88F6D5E3A2C4FDACC8C0 +:104990005CA4D745B5195988B7AB261475A850FF44 +:1049A000A8D65D8076E86BDABC3E661CBF012FF7A7 +:1049B000E74E4CBD73288EF37AD18002FC0E132F84 +:1049C0003C702BB47FBE514CC5F70E79165D7D0B44 +:1049D000941F3D26D27B1FD5B8292E3C593CE2209E +:1049E0003F5CB3DBAED5E4DEEB4CDD83FEC20CCD29 +:1049F000FE6A9C70FB1EF4273F427F01E4E03573A2 +:104A000063F38A1401FDD6995EE3F3B48D1F1D4153 +:104A100026E82907B9DDD59F3CDC596CB4BB62E5BB +:104A2000D9C70E1EF79FB183FDDC970C76728DDB24 +:104A3000721CFD907A81E843976B336A95DD683785 +:104A4000CCA899576887F525074B04F4EFAA6AE5C7 +:104A5000C90930DEB41AA118C7D3F136AD6615F90D +:104A6000F7D336AEB2CA89C82FDEFD48A76693D702 +:104A70003B0EEDD48DF9AFE27B63027184EFABA600 +:104A80009D3521FCD76FB54A02C0677D706422E274 +:104A9000F9C063E79CD1F929DD7CD166C53CDDCA4C +:104AA000C73E1D887CA1CB8F45C5A31EC6FDE24035 +:104AB00025CBF1131FBC3694FC85C1E02F80FCFA96 +:104AC0006EE9EEA168CFDE047E3EDACFA7861C3702 +:104AD000EF87EF86AAEC7E56CAEB791E3AEA15619B +:104AE0002EA8677EB111F73F9A9A4020C018DBAC20 +:104AF000A1F7E779305FC9C436C3FB1322CCE017B6 +:104B00004CFAC26EF00B2A98D1CF58163EBA15C790 +:104B100093D6D8A4E4C1E89718FD8EC9923BC62F5E +:104B200031FA1DA75EBDD08CEF0F37DB259CDF541B +:104B300039DFD0FE9D9C32C3FBD359C44C7EB7CC29 +:104B4000F36BA62915C6F930C982F0B1A85224002A +:104B5000ED57954E358C57F85A88F26CD2E07DCCE3 +:104B6000F3986EF71ADFAFFF1BD1C9F8FA0BA4F761 +:104B7000F243ED86F6C27DDB0CE3291D52159A89BE +:104B800005879597B13C1FF75D17E6F7C902F3B3A8 +:104B900089C05A616F15E689149FF0BF8C65A0D259 +:104BA0004F79E10180179E8F7A30E1C794375E0F0D +:104BB000EB473EBA5D64947771DEE45B8C7A4432F5 +:104BC000C98FCC13305F50CDC0F251936F68493A12 +:104BD0006E0FB65561EEFFF80BC1262CB77694AF79 +:104BE0001B87F146C4338CBBCC61223B77B2B82320 +:104BF0000FEDC2B34F261446E751E9F975CCA5BABB +:104C0000E641FFB5CE61051817F25625AAB85FBE7A +:104C1000FCF9919B31CFE55C59451E7E4FCFF36384 +:104C20004EE379927365EA00CCFF395021925D150D +:104C3000986C21F9136F0A4A3C6F83511CD47A8512 +:104C400085F2A89F2DE1F2EAC0AB002298F881140A +:104C50006E0F16776459A2F9628666074E29D1EC69 +:104C6000664D7F4D4F3FF824EEE33F5B9248CF8B7C +:104C70006BE53D16A407C92CA13F9A76D82B8D81F0 +:104C8000F1B63A3DBBD14FD87AB86302CABF674B81 +:104C900064EA3FA0A6E2960A94D3396686FDB74A35 +:104CA000D509D83F6DAE628AC771F65982C3619E3D +:104CB000AB27F0B8F4EA0AFBBFA35C4C3BCC089EE0 +:104CC0005BF1E024F2F5343BC58F9859715F3F06E4 +:104CD000F3C901E797883B1E6B4B4F47F932BD4242 +:104CE0004A57B0FC3791DB07948903E363EE1FE674 +:104CF00088B067DFAD86F62D5D751662006FC9CA94 +:104D0000F4FE2C0EEAD385AEFE73AAD19EC8EA6AE1 +:104D10000F20DFAF17F4FA73D49E16335EF7F8CF87 +:104D2000BD7B82E4BD941E7D0E4D2F9F2D61A4C7D7 +:104D30001798FCC5488F1F99FC23A814642ADF1B11 +:104D4000EE5B5582768323B2FB22C0EB9337443A65 +:104D50004771D985AB280F1AF4F6131B90FEAA2DC4 +:104D6000249FB75AFD7F7BC789FBC4F1949F64F9E8 +:104D7000C5D2C843809AAD66FFFB3F407CD58E50BC +:104D80001AE1F90289F3A1AEF717895DEB53C1B4BB +:104D9000668BBAD7A3223F7E64EA6EC773B952D43A +:104DA0007AED509FAFD70307E71C0378C80BB6E432 +:104DB00060BCEE1C73501EEEB99C2BAF417C9F6B08 +:104DC000B3501ED656C6F11C70C5071F0758EEEF2C +:104DD00030A9C8470167FCA6E154DF2C65C138ED56 +:104DE00080771516961D507F8279E2E73A4C26DCD3 +:104DF0007F3D573EA08AC6BB83E11E2D5B10B632B5 +:104E000019D6539CB340CC8AF60FF17DA01B719C40 +:104E1000FA6009E5F1E8F1CD1F7EBDF8A6396225FB +:104E20003ECB667ECC135959DA988B7A7665B5F00D +:104E3000810DCBFACF489E596DC1E01AA4FF17E34C +:104E4000781CD7A10E9D1E65E7E594717E9B3052BC +:104E5000CD29C37CB2FA7384073D8FFF94965F021D +:104E600060A27312CBFE4BBC11FD44903BEB84025D +:104E70002C5FB2AE8E5A1F6BFFB44B7E8E35F56F32 +:104E8000C7C5FB6A699ED305E96A067686F4C2F057 +:104E9000B9985F353D4EBA1AE33547B6A5F0FA101A +:104EA000E96ACCB73A5FB2722EE6574DCF94FECD89 +:104EB00004F233B36C1D6F774B6F615D2A5DC7DB06 +:104EC000F3A5B7703FD65CB6666EF540B21BE8BC82 +:104ED000E8D99A38F203FB9ACFCCFA170DF1921E5B +:104EE000EDA2C0E5681D974FA7A766929CD3F35A21 +:104EF000969B24CA6B39A4C9BDEEBC1626615ECB55 +:104F0000E9BF762C3451BEB73219F35B96F91C1405 +:104F1000F79F59BF8BBE7BC0240F41399A58EE7B57 +:104F20000FF96CB929FC3EF2DD9BB56F66903C969B +:104F300022C3102F93C5B90192F35ADEAA25E56763 +:104F40001654FAD780DD86F1B3158A4C7ECB4C24FB +:104F50009CEC9E72FCB20B9D7BD7C3F76F7D41909A +:104F6000907EDB1B40EF012B3C037E2396EAB6DDEF +:104F700087316F64764C9EF9ACBA98385CEDA5F336 +:104F8000CB553DEF3BE69CF3B523D58D486FB399E8 +:104F90008FE6D9E33B8E61B49F10FBBD992C44FE94 +:104FA000577FDF3D93D87103F006B368F85C9EEA43 +:104FB0001EAEC1D55E8AFA4890C760DDE2ECC8E05B +:104FC000FEC69332C133C74EFB96F1A30FE7F97AC1 +:104FD000A1DB5838DD5EC6E5E50073D8AAC0382BE2 +:104FE00034BD31595C268EC1F1B6B959B45D9955BD +:104FF000CAFDA4E46D3C2EE5CC06BA71227D84EE98 +:10500000A0BCA75C4E2FCB4DA1C1484759A589D460 +:105010005FA74BC0BF961F06EDF9981F047404FDEF +:1050200027DDF49AD2144547EFA31C87756E8DE7F0 +:10503000722DF25C1C9D8F8F9D6769A9A0C51F8D85 +:10504000F32DD19E7FD579969472FDFC4DE7A9CBC7 +:105050001D1D4EBADC619A5C9E5DE7A6BC44BD3E58 +:10506000A3D64D7EAD3ECF9EF4F398DC1BFDF447F6 +:1050700037BF2C9178DC52937FFABC7439B655CB8C +:10508000D3EF9E57CA26E3BC52481E24D7BF4072B6 +:105090004D4C34D3F35939AE4DB84F94DC7196EC86 +:1050A000D16499AD423DB1B0348BC3B9FDCB9634D8 +:1050B0000F3EB70828B792EB77D0FBDF96FF7E89CB +:1050C0007650514FBD30010418C969D43902DAFD58 +:1050D0003E839D5B81274CA2C6ADB2AF8AD97FF8D3 +:1050E00081A1FF15AE4643FB54F9AE18BBFE3E430B +:1050F0007D9AF290A1FF55A59B0CEDD3ED5B0CF5CD +:10510000F27007D9D5FB1B6AC88F9F782242F675CB +:1051100048F3F75FD2FCFD57D0DF07BEDC8BFE3EC5 +:1051200094FB1A147AFEC786522A5F6B50A9EC686A +:10513000F05219CBCF9E8EB007F3954A9DC994DFEC +:105140005F59EC7B06E545D9C1C83094AFE38F04C5 +:105150009BD0EE5FBBBBCC64C538C86B62300EED34 +:10516000E6F292E4DECE21E865F2172253A3E25D77 +:10517000C9B511A63AE83C2FC587A63B8E5553BE4C +:1051800062BD2424834CB19915E681FA509FB42A5C +:105190005086FB583C0EE6551BC9DFB906BAE2FE45 +:1051A0004B9D1DEC3B986FDD6221D844F1CD00B5DD +:1051B000CFB1EBE779F8F9C0AB3512AD63DE3D94C2 +:1051C00023EB67CADD30EE33FB52ABF3918EBD4269 +:1051D00010EDFFBA3B03CBE7D138FAF9C03F9B2E65 +:1051E0005EFED5ED926D608B223DAF15148A5B0497 +:1051F00052CC6477C4DA01F7941AE3EB57A11D90FF +:1052000086FBC7DCAE89B8997F734A37FF4D97009C +:105210003E68AFD7CB2684CF32D62826A1FFD32134 +:105220002B4D40E265C7222D69D05E846A4FEAF6B5 +:10523000EBC69D884CC19069B16A8FA0BFACD33FCB +:10524000F8492FE3FB678F30C506EFC74FBC4B44CF +:10525000BFAAEC33EE5F4DBAD02EA2FCEFCF1FD425 +:10526000E7BFA3A18EE86757838FCA50C3628D2E14 +:10527000FD547FA5A19EEA7B1B0254EE6B58A7D17B +:10528000651BB5BFD6B081EAFB1B821A7D6EA1E714 +:10529000BFD4E4E35F4AB5F395F60A8A7B32332F35 +:1052A0004DF6402C3DB0687A58E6E2F2383E95F76C +:1052B0008B077D10F80A7401029CE8620ED005CAC3 +:1052C000B7D9ED4D63D04E670B0245FC1CF337A3F5 +:1052D0008FAFABEFC14E52900FC08EF1A39EF9AAD3 +:1052E000F2DB86C4ECC473230E82C3D7FDAED5A611 +:1052F00050FCB7FFEF71FC9812E652DEFD72133FCF +:10530000CF73BAC82B211FE97E740FB8C4D86303CA +:105310000A98A6C7BE367C2C888FFEE6F95E993ABD +:105320001CEDAD2EFDC68232CED77AB99DB5521C8A +:10533000F0C2EE8B681F77588268FFACD8FE4EAF84 +:10534000F68FCE8FB17273A5748EF8EA9460EAF589 +:105350001CDF4A13F3617E4D818DD98554C61E2D05 +:10536000AB2CC1F94C16CB3B54E443C9AC44DB49EC +:105370003DDEAFFF94C6EFB3DDC4F37856EE2C925A +:10538000A2CF23DD5EA6ED637CC3FB252644EA0C99 +:10539000FCFF4FA727D55F1BDA190B7B90EEAF738D +:1053A00072F97F956F2AE16B366B277A9ECB3AA80C +:1053B000BC8145A8F4317E3E683E53A85CC0F87EAF +:1053C000C6118F6F7919C63BAD5E8AEB5CF5FC495F +:1053D00007EA3F31E5E099F5ACA7BCFBAAF24D978F +:1053E0006BBA9C6BB16AE7FB53ACC43F96F454B202 +:1053F00093747C349419F5442CDF74E673FFA6F3A0 +:10540000B9F126BC47AAF3753128707BEC15CAABFD +:105410002AE0E74F0BE7F2FB97E0CF3F9CF26D8C61 +:10542000FEC8B9F26B49FF9EC3842D948F6625E7B1 +:10543000FA283FB949DBE7DC02E5D330DFA4B961E4 +:1054400073F43D530F697E74C5EC6A867ACE3C577F +:1054500065B85F9524F1B8D6643BF3C4D1FEE7B9D3 +:105460005C1CF7BB9A3DD06A6121E48701A5F90273 +:10547000DA0FE017FD1CF9A2EB7C3DF8B2172FEB19 +:10548000592F1079BE61642AB7EB63E9F837DA7CEB +:1054900096697CC17C7221C2B753900B34BB80E407 +:1054A000E3CA2B47911DFD52997E3E21A0F903E5E9 +:1054B0006B1FE6FEA51FF3834EC5F57E3EF7F9325E +:1054C000BE8F36D3FE99C17E5F51FFA5815F57E441 +:1054D00072381434C98598FF758BB60FF77981F748 +:1054E000055CEF92FF78D23A48C6EF6EBC0DCF83D1 +:1054F0009DDDE720BDCC5E4BA735EBF72AE8E3CD79 +:10550000B47FCAFD0CED5C87FEFCCD696F93DC4275 +:10551000FFFA450FFA798CF2EFF5F91D30751C7F13 +:10552000D8DD2DC7C04F7CFF476E945BEE9FE03DFA +:105530006891E72C14A75A86F34F437FD1BBBF8CE9 +:10554000FC0146F18303578E243F44B7673A3FEE90 +:105550007D7F5C9F9FFE1D7D5EA704C100C77735E0 +:105560003C959471B97C3A49B91EBF73FAF9412848 +:10557000FABB9EBF99D29187E722BEAABEFFBA7638 +:105580006085F3E5243CBF3D6B8140E709EA1605E1 +:10559000C64814CFFD667AFEABDECF02C674D00AD1 +:1055A000FD05C7A1977DCEEEFB204CC83C30BF72F5 +:1055B0009795EC0F1B8E27623A64D085A57E0F84E9 +:1055C0007EFF837EEEE50F42B889CE3BA88A0BFDB5 +:1055D000B7B5CE4AF2EB4F30871FE3DC57A7D44C68 +:1055E00080CFB3D90BA7FA901F663525D1FE8DD990 +:1055F000AA9877A3FD7D25DF4F7B66DF1AB243DFD4 +:1056000052F9BE810E3F3DFFD19C129842F6FA75C9 +:10561000809241B8CFA0503EE635004FECFFB6D99E +:105620009F9EEBC6FDA907F2F09CF7123198340655 +:10563000D6F1C981DF14BF0EAF9D6421AB03F34BDC +:105640005F09D37D032BBFE6BEF3F7301354C43C90 +:1056500085B64776C3B8EF64FCFCFBBB59371CEA40 +:10566000D45FFC7501D496A63417E3F8FA7ED2F91C +:10567000B8EF66EC8EDAAFE86F7FE251932F6F5C84 +:1056800011DE9FE02FE1F714F0FB6B805386E23EC2 +:10569000D278180AEFEDEB4CE77418F89411FC3A45 +:1056A0002D0AE9F5C0E732D9FF9E2A13E1935D94F4 +:1056B00029BE3A3EE6FE05CFE5267A9FFD5DA6F7B8 +:1056C00027448C79149EB1F78BF4BE28B3C7319E62 +:1056D000F085F992F6CEE9719CAF3C69267FB4BFA4 +:1056E000DEE4CAE0F13AAD6E9325F2DFBFA7F767BB +:1056F0009133B213EF6570F8715DF037CB5E4CEB10 +:10570000247A1DBFE324DD73B35104BA405F87B52B +:1057100057E138E58077CCCB14543FBF97AE9E312C +:10572000DCAF8ABDB741CF078E53593BF265ABD092 +:1057300021225C2782D988A5CA24D267954CA1B2C0 +:105740009A79A99CC2FC54D6B0362AAF64ED54D6DF +:10575000B20EDEDF9510C07367E3989DE2F1E57647 +:105760004529A0EFDD21513EC9D445268C2F7BAEC3 +:10577000E5794BFDC1E34E0D1E2E8487E79BC303E5 +:10578000D78BFBAE53B4FBCBFE51F0B8820588EF4C +:10579000A7B22095DF61211EE764F22B98E73CED6C +:1057A0000423B9C14687481E94867D66AE1762E021 +:1057B00051A5D315638FA790DEDBC0CF8F0D48B105 +:1057C00079901F92E83CF7D657D337A15DFCC238D9 +:1057D000AE278B59CE83E5D05EB4CF0296349EA31C +:1057E0005729DFE66CD4B92C90586CDC8260931D8D +:1057F000EA99EBF8FEBFCD65627214DDC6C9F14CC3 +:105800008EB2E71272520DF512166C2AC77804F8A0 +:10581000AF21500589CA40C3FBC9A55986FEDB5993 +:10582000BB48F250CBFFD5E56C8A3ADAF01E5862DD +:10583000E272C4B7964F9C5653606CFF8CF35729A5 +:10584000FC83781A77CAC86FA5613FDDA315E7030B +:10585000B90AF38A3B68369C6FB3398E1FC173FC5B +:10586000B67EF6F7E78CD7F6F707B3C15C6FB45195 +:105870009E758BC0F5962EF75B85362A3D0995E718 +:1058800064F8DE5BDBE75F8F717E4F61E52DD950F9 +:105890000F6F5FCEEBE32B9FCD82FAD1EDFEEB7164 +:1058A0005FC033B6B2D002EB6B6C5C757D35B4670C +:1058B000CB8A0BEF6338ABDDC7D0F4C68FE97E012E +:1058C000B0C12401DACF3A6E5324C4DF60878274FA +:1058D00063B7011F79683BD2DF5886268B9FFA0396 +:1058E0006348189749ADE1F7110C65FC1E81ED0D79 +:1058F0008CCE236C1A2F13FF140C08BD648171D257 +:105900004F0466E3FECC9D05DEC3E3707F558671D0 +:1059100060DC87257E8FC1A6F19A7FEFBCEF659F83 +:1059200007ED3B4678F9B0C0FB1ECADFCE447B00D2 +:105930000314FAB85B347BB4CCDC26DEE2C0E78C1F +:10594000E8B2AFD2315EFD2B7E37F63953253AAF40 +:10595000D0A4F3E76289CEFBB397383F769D4340EE +:10596000BB13F8AB6C812A0299B3E23AFFCB58AE75 +:1059700014230B112F9F8FF39DC3792EF79E199A35 +:105980008F76F95FADFCB23A3698F31BE37279E596 +:10599000AE2FCFE07D203B4D202FB83DEE6551F27C +:1059A00064E5AE3833D2D5CA4F5830C18DF2E5D751 +:1059B0004D68C797817C61FCFE8397D1AEDB710B8C +:1059C000BFDF6AE5EF77BE8CFB28E5DF89A37C8823 +:1059D000096F1EC9463F65D29130C5E93A77BE3D91 +:1059E00088F3BDBECF765EF82676CC64F18E7B5010 +:1059F0002EAC6E34333C57BA5AF0F3BAC52EF1735D +:105A0000A51D2D73D19E063EA5731C5A1EE1626D25 +:105A10005D30CEDE32E87F1AF90DDB83DC5F97E183 +:105A20001F9283E2053A2FFAB9C64F258763F55BCB +:105A3000642FE6E32CD3EEFF88BDD767653FF9F40A +:105A400023743E1BC2867CC37B3FC68C4FEFBEF7E0 +:105A500063B2E820B9B8FA91ECCDB89FB6FA915B81 +:105A6000886F560FC92D40BED1EF0161216934F610 +:105A70007B4AE0FB94EC81938C617EA536B725EBE5 +:105A80000426639C3C5B64A5E0076D7AE2FC7CCA5B +:105A900087429B10ECC0A6B5FF87EAC880B6717438 +:105AA0009E83ECE7A7522259346E8ACC0240B74D50 +:105AB00071912CD423819D7685CEB76C4C239ACDE1 +:105AC0000E281BD0BE59DDE81490DFAF1BCFE5B721 +:105AD000FB702997F360E7203E56278EA0FBBBFAA8 +:105AE000A20B0FCE33CABFD9FDC6350968FF3F6789 +:105AF000F626607EDBD98359978CFF168560419727 +:105B0000885F780EDEDD81F9509E0D66824737DDB5 +:105B100019F39DBAF5118FD314B361063D74165F66 +:105B200025F9C582E83F749F8B003D82F61AD2A703 +:105B300082F7071BF5D0803AA31ECAF419F5D0A04E +:105B4000C546BD33C46FD43B97D51BF58B3B60D4A2 +:105B500027D9EBC619FA0F6FAB34D4476EB8D2D041 +:105B60007F547086A17EF996EB0CFDC7B4CF37B495 +:105B70008FDD76B3A11DAFCD42386C0F33F673A421 +:105B800087187D981F5A6DEC2F1E217DF8B976CEAF +:105B9000BB70DF0F7BD58701F8A7377DD814F7637B +:105BA000D287E1790EBF308EF46308E5789C767E6B +:105BB000A6877EEC472F6E1CAFDDD3A9E9C5CFC108 +:105BC000B343B916AB0F63F9B42FFA32255CB86151 +:105BD00005CA2791DF3F02F2FA2394D72B4DE1A1AA +:105BE00085F06C4DC2FB561FE7EBB5B91E6D5F1912 +:105BF000E0E075B8F6A01D2F55DA23B652A4BFA178 +:105C0000E4E778B3991FF3D1CEC7E55990EFE446A6 +:105C1000214297DAC4F87B82A3FE57C8671B9B001A +:105C20000E83315E653CD732B3C678AEA5BF787BB4 +:105C30005147C850CF3FC84494F345C7E4A644F841 +:105C40005EE1119E2715EB677AC2BE26DC2F1A7F14 +:105C5000AAE3E500CCB744BB1FB134A2C7FBFDBF2C +:105C60004039311EE401DDB7E6EB24396595F8FBD8 +:105C7000C0773968C7D6B37805F9EE7691FBADE702 +:105C80004D3EF24763FDD3A60A2FD9A560B70F4654 +:105C9000BB7477BEEFF0F8743E19A41351BB7F7448 +:105CA00012FAAB042C7E0F66A710198A790F26F61C +:105CB000E9F53598DFE26452B818E374FCEFA8C048 +:105CC000E376672A06593D72377ECF8C573F1C0F0B +:105CD000F8FC50D3EB03E6B6D3BD0ED78E548F8DB0 +:105CE0004FEF3F0F23369EBBB521446542AE22A243 +:105CF0007E888D3F9DC4C994D1B849246FECACC354 +:105D000046F75618EFA30C9B3AD6E27E5A6075927E +:105D100082E7122B9CD9749FC5DC7A1E6758EA3A39 +:105D200045F18AF98242FE2C53B91E112FE3F793F5 +:105D300074C71F06895F476FF7B7DEA5AE8F0DF1F9 +:105D40002AF624D7177D8F1FE0F7D475AFFBD15B00 +:105D5000399F503EECD1A9832AD1DEEDF99D331451 +:105D600007BBDEFF8681AE6FAC7FC740C7F3021F63 +:105D700018DAC3CE886510D045F8F9CC2973008EA7 +:105D8000A79FB3D1B9BB33E37D7279543C343C75E2 +:105D900054357EB7FFF59EA4791C69E820BCEAEB78 +:105DA0007DBFE130D5C30D612A63D7ABC70DF4D2F7 +:105DB000FA12BFF736027610DED7D45FFCE0C5F2E8 +:105DC0002CA2C7DB45F57DEE9F858660FEEAF916BD +:105DD0002670FF3042F7E0CE159214F42F5B32F7B5 +:105DE000BE877185B74CC92487D9E2D07B98AFB8FC +:105DF000B295DBC34C0D3D82FE5D675212D59FC943 +:105E0000F75597235FE56AFDD24CDCBE728686D0DB +:105E10003D5CE9780718DE2FEBBD82FAE14D6D306D +:105E2000FEE254F04F53F0FED8401EF2DBCFCABF63 +:105E30007303FA0B27E20367300FE99E1D53781DA9 +:105E4000F3F028AF6CD2A321B423D530DD93F396C1 +:105E50004924FBBBCDC2F75F232F089B300ECB1C20 +:105E6000612BDEC3B276943A13BFD7D77DB0379497 +:105E700073FBE8C672BE3FA197CBED3C1E74FFC614 +:105E8000ACE9C80FFA7D2D092CA20EC2BC9E6DBBD9 +:105E900019D2C18FCB399F4F16EF1E41E7A56B6D0D +:105EA000745F1DCC4B253B68978DE228DDF7E03011 +:105EB00009EFC17166CBE7901F9D22A33C8C55E58D +:105EC0006E9E5FA2C5475998C7394F4FCD24FF1921 +:105ED000F3BE28EFFF20CFEB3C3D95C78B1112B8E6 +:105EE000FF3DE3797E5FEEAA721E2F58FEEAD1F7DE +:105EF00071FE89E5BEEF239DEA7936CB58C771293B +:105F0000BB1B6E36913563DCBB3FBAD5E3A87AFD87 +:105F1000CD6977D2EF3F14601E562FF6DA83E5DCA9 +:105F2000BE3B626131795AFABCF53C2D7EFFD0331D +:105F30001ADC1F2BE770DE63956F31717829E8EF6B +:105F400039B3FD418487338DDF3FD717DC4F7FAFF7 +:105F5000E36718EF3B93280F473AD7D70D70B8BDCA +:105F60003C2A3EAEC3411F479F27DED788FB0A0568 +:105F7000FFF19A65008CBBE4B73CDF5F5F973ECFD3 +:105F8000CF0BD447CBA3E2DD405FFC3E85A97184F3 +:105F9000EFE5BBDE791FCFBB2FF9D5984294FFFA0E +:105FA0007BB1F38579529ED9015388E28930CFDFE6 +:105FB00022BE9ED97780F2A1F4F97E53FCE8F74621 +:105FC000776EFA01BFC72D13FC6B80F7F21D7FA01F +:105FD000DFBD58AEE785C5DC131DAB6724E69B83A8 +:105FE0007E918D71F960D3DF1B6C36BC9797A5EE5F +:105FF0002EA7FD0B26A39EB699B5F88FA68F8A34DF +:10600000FD291CBEA669B927EADEE1D1A0BF795CF3 +:1060100093E669B7737FBC4B8F0B8A4CED3EF195CD +:10602000B330AEF826D7DB25E8A188A80A7CA4BF48 +:106030006DE22A859F57D7E24B77ED253F13F90490 +:10604000ED8821DAF71F4D38F37408CA2CAF528956 +:106050006278589DF7250BB5046992BF98F737779A +:106060000BD42A02FCDCDAE03BE20DEBD043756B8B +:106070001286BE847EF466CD0FCE4A5866425135F4 +:106080007241600D96A396290317C9DDE366AF2E12 +:106090001D3D0FC76DB399507E5954EEC7ADEBBA95 +:1060A000FFD86FA7FBC335FE19649FF82737EB1B9A +:1060B000EF7735B80E5547D99BF1E620FD6E81FE8E +:1060C000BDF8FAC187F01CE8A0FA11545AAAB97FAA +:1060D000B926E1C7FBDCB0AEC4D7D2F3F11CB5FEE4 +:1060E0007EE204E37936C0FCA10551FBB58CB90E04 +:1060F0002D88D2EFE08D19EACC93D3DD9FE28A8A16 +:10610000B19D95C68CA7C6D4831A91D4C4BCE7357B +:10611000D42D35C675585E4BCB8FE6536831EC579E +:10612000FEB421E75075945E4D32870D704AAACFB8 +:106130003D548DBF03515F4C25CD0CF09CA2E1393D +:10614000A556FD18FDC214B06F8E46F90B2CBA2E61 +:10615000F252CEA06B7CC90E8DEF6E5731BEDE17AA +:106160001EBF6AF9D306B071A2F09DC6A6137DFECC +:10617000C4C7FC8D201777E76EB6A39CF86983FA35 +:1061800026FE4E4D6B6E01F9C389E60E86F9EF4986 +:106190001E786EF0CF82063859D4591DB87E2BABCD +:1061A000B3237D6666CCB7A33F2E03D963BDC53943 +:1061B00083EECFD4CFEFC5CE6F2DCC2F14958F6F3C +:1061C000D1E319684C9675C3957E2F02FFBD7051BF +:1061D000443FC5A6E7EE69F0B3EAEDDA3D6109E5B3 +:1061E0004F046EE2712ABFCD85F52D01B473EC6EBC +:1061F00033D5AD0BB6857E099F7055D9FD266AE76C +:10620000E79AE27301FE467F8FEA343FC49FAB0BEF +:106210003F7F8AFEDD9FFFEEB205F17889DFC36A1A +:10622000B17A17A35E6DC92C16A2F3283227542E1B +:106230009F80FCA19D17ECEBFDAE7D3FE6CEE4F721 +:106240009870B853484C86B2660AD1B3C4A2E0D362 +:10625000073D635CF0BF8B9E5B63E070BF45CE443F +:10626000BEBCBF51E8753FF79609FABD9B7C7D9790 +:106270006F64740ED2D26C0ABA05F4A96513D27F8A +:10628000A635D086F1FEB57799D81A9975C51DC681 +:106290006AEB1FEB5CC8CF0D33F94AFC2912CB41E6 +:1062A00091EEFF1216BA06E2FB96E6E34778BB973B +:1062B000A1DE73E3FD7160E7E66D35B150947F8038 +:1062C000F7C247D74B0EA71AEA55F6412C64C83BD4 +:1062D000C936B44FFA62B4A17DB25468A84F888C15 +:1062E00033F4B7B1943539B0AECFB5F8665F7CC83A +:1062F0007658E93D502F2487DDC0D1A1283CE73EE8 +:1063000069358C6B8969D7E3917DE12D364EB27B7F +:1063100082F17C60D73D217DD069EC3D21A0D82B56 +:10632000374257ABD3447A3D336306C9ADAA1A2F1F +:10633000C37379B1F8C39D539447419437B66E380F +:106340005802AC12DFB33673BA70C378AA9BC74940 +:10635000911E5AD6318ADFE9722CD3EA75A1DDA7E6 +:10636000D383B0B0CE85F85F12140D78B0317705C5 +:10637000FA359FE37975857F1FE9C2A2D185C5658E +:10638000A2BCDE58F8EBE7D163E1EB5E67358C9F8A +:10639000FA2DE1FFE9B784BF5565BB9309FE4C4672 +:1063A000BB74F2C20D943F631DA6109C6A50F66246 +:1063B000FB3046F1CE58BA033C84A2ED10AB868781 +:1063C000C9E24695E0DECCD8001951D7C6F5C8B071 +:1063D0001964E7B0601B9D775E0BF8C0F9AE95DAE3 +:1063E000EAE6C377D61EB62901E87F97BBCD85F2D2 +:1063F000E0AE4D02F96BC2C20DF310AF77A567B8DE +:10640000F93D026CA089EEE50EC59968DF3310C72F +:10641000EB013BAF87CC581F19834F6837637BD69E +:106420008678031FE0B1267C9E5A6BE463DBC42CA4 +:10643000DD78A5F1A4EA8131E3F909D4D2417E0ED9 +:106440000BC07A2017E4E6088D5EA5610B2B917EC8 +:10645000F6678A4CA0793101FD6D9D7ED8064E2FDE +:106460007A5C53A7A71E741330F2ADCE17FA776487 +:10647000763FC147765AE5A01BE57B547FEE775502 +:10648000A25F2F69FB8DC2C27A9AF7DAB744C22B9A +:1064900074A9C07637D07948EA39CF16D52B91DD6B +:1064A0001433DF58FAEA6FDE3DE6F535E9FDAA89D7 +:1064B000DF8EDE9B125B6CD8BF5EB34F9AF03E540A +:1064C000DCFFC0FB50C1FEC1B4551CA7498B13D0E3 +:1064D0001FF107DF97678E59DA797DC984FB34F79E +:1064E0004EF85B18ED914D6B5D644FDF3B71E0E85A +:1064F00079F41EB743F5FB36647C94CD7ADCBF811A +:10650000E3209F40BB8AF1533788AF89E097BB17E0 +:10651000AC5B2546C5B3E461B2D006E3A65E18299C +:10652000A0DC4AAD61261F95CA25E1D7D6C0DAABFB +:106530002F616F48DAEFB5C53EFFC9443BCD5F6AB6 +:1065400066BDDEDF72DF44AE8F6DDA7D163A5C80A9 +:10655000745EB115F4669768F0C024C132DC0F8711 +:106560007945F151CFFE1C5F3ABCE2F011E03B6D82 +:10657000189F8F1C902AE81E1AA744707737FB18C3 +:10658000C23D45BB172676BCC7B5F5A434F33CB86D +:10659000D8F6DFF6B19E145C4F2FF7A4FDE3D7C306 +:1065A000045A8F4B5F8F97D6936A9605E4BB546667 +:1065B000E7F302FD13BD3F981AE81D3F2B27723FFA +:1065C000D266D6EC706D3D69B54AF2BC5ED61FBB93 +:1065D0001E8B0BD663EF7F3DFDF90BF6AFEB2FC89B +:1065E0009E7EEE45E27E419BE6E774D1F11DFC7D87 +:1065F000C9CC848C2878FC7DA2C8F1AE427F83BCD4 +:10660000E77631E1C18D65AC7F07636568BFDBCAA2 +:10661000B0ECD98EFE8A59E36373B73DFD0FB18F9D +:10662000BF6AD9DC60F40B7BB45B95C5DA39AEC1C7 +:1066300099C59467C085CD633C1F2CB59CCB35CBE9 +:106640002493F6FB605ECB2428131C21FA7D3029AD +:1066500060C40BFCF95C48BF42EC3832E565C60DFE +:10666000E3F2324191E93CBB8E2FBF433D34B10888 +:106670007F4724A511E3D50057FF7DB81FE16A537A +:10668000AB500F69FB5DF867D6E10AE3AF75A9ACC3 +:10669000CA4379C1113A4F9A735B00FB4B2646FB04 +:1066A0006196DCD446D4530CF45432D51F50B39DBC +:1066B0007CBF8CFF9EAEE6776A784C28BF8D656301 +:1066C0007F95EFA7B16AB5A38B6F419FC5973E1F1A +:1066D000C2DF936332F72F6DC36A3AA2F93ABE94D0 +:1066E000FB9BF60A3BF73FD9D3A197E17B2DDAFD5F +:1066F0004466A7D7D8DF05FE565E4F7F54A71F8B91 +:10670000467F172F72FA22BC619C03E43FFD3EAD29 +:10671000F31FEBA7C6D20B93B9DE6466F592F7CFF1 +:10672000801DBD06E3DAF7E498E8FCEE3D39058705 +:10673000717FF5A7B926C2DA4F3D9BD721DE3FCF47 +:1067400031910E6D4A3CBE2E0BF156CA7F9E35210B +:10675000460EE0FE77B41D85FBDFD176C23DA53342 +:106760002EA9D7327DC6F7072D36BE9F5CE3BB1638 +:10677000E97888DF68CF5D566FB4DF1EA951EBB0B2 +:10678000DF4F720B7AFDDEFC1A75EEA4225C1F9FB0 +:106790000FCBEDDDCE784093673F6BB053D9DFFC74 +:1067A0003768FD7FAEF5DFD82051F968838B4A1D2D +:1067B000EEC0BFC9F3017663FB90A309F5FFF16654 +:1067C0007554FC3741D75F3B747E5573A6F78A57E3 +:1067D000CE97E593BC4C253F6CDF9B5D747B89F3C2 +:1067E00019FF2AFF55FEABFC57195BFE5F5FF1B145 +:1067F00031008000000000001F8B08000000000036 +:10680000000BC57C0D7854D5B5E89A3367CECCE43F +:106810006F4E420293887A2609219040070C187B1C +:10682000839C4CFE2614BD0345A4DAF71C1069B402 +:10683000F635D77EF5C5D7F666F2FB420409142A71 +:1068400022DA49088A26DAD1AAD5EFA3BD03484B3C +:106850005BDAC6162D6DFDEE45F4F9F5DDEBFB9A1E +:10686000AB786B7BF1F2D65AFB9CCC99933FC4EF8B +:10687000BB77FAD5C33A7B9FBDD75EFF6BEDBD53A7 +:1068800076E19EE3CFE603EC4C4AF1FE0040D7B13F +:10689000F733A0129F2BDEFF5905BE4F9C710641B6 +:1068A00003B844BFD5939F0FB50324DDD82FB9DEBD +:1068B00017CD9ABE5F3FF55B9882FB16299BE2D805 +:1068C0001F2E22BC12DBF19F50926A9FA73B0056FD +:1068D00060BF25D8AF32D5EF41EAE74CCDB7003CD9 +:1068E0009991ECC9F365964B902C07FE5D82CBC75E +:1068F000CFEC97902153B5F4CFB8F41A4410CED60C +:10690000149DF181C4F8B5489F8C2A5523BAA5DEA1 +:106910004725A8C2F9ABF2E2FD8ED4F7892A294CAB +:10692000ED76BCBE77F4BC0E38CE87D56AAE13C701 +:10693000B95A9778DD39007A02FBBF9ABD2DF4046D +:10694000F1A12A6FD08DEDBEEAF4EFB752FF0280BD +:10695000B27B3FBBA904E7FDDE1927F4CFC02F00AF +:10696000FCDE637C4F743CBADE47FCBEDCFEB8E262 +:10697000D4FC0CE7D9E0225BFF625BFB625BFB723D +:106980001BFC595BFF900D5E63EBBFDE06DF66EB21 +:10699000BFC5D67E8FADFD3E1BFCBFD2FA97C9B7EF +:1069A000FBA6922FBBDC98FD32E438042B894AC841 +:1069B0003F8BFCD8F97EDFAADA569DF876B1DFBFAF +:1069C00005F99638ED0A920E741D13FC80A3C8F4E5 +:1069D000429890FB0CFA90F183B1AD167C8F05566E +:1069E000CE3B37835CA33C9EDD9AB6FE38CB174086 +:1069F000CB59EB3819069FF93B94B3BA583474104D +:106A00005150F2A538C95DE15C9433C4F3C3180E4C +:106A1000E020AE460C7CF49B0B113F167D0D40C66A +:106A200036B801E019832E6E58E78B2CC1715E18C1 +:106A30000B5127C7B64DB14C1CB7F715D471ECDA22 +:106A4000E8CCEADC8C704FB55B75AB388F12F16423 +:106A5000E33CBDDB65E874D090A7B9DD7F9513DC1E +:106A6000D5F84142613C3DF8BF4BC5004B5F50D269 +:106A7000E85A0C163840DF2B297E0688865F9CD1A9 +:106A80000EB4BDB939FEAA2735DE137A76FEBB995E +:106A9000F88FEBA0EA5249EA7B50057FECDFFFB9A3 +:106AA0003D1A7F7501766B06D64B258C4FA623C405 +:106AB000DDB89E866D6DFC69EE1927C3C81F5D4663 +:106AC000B8F8B4D0DB4667E5311FAE7FB71F346A34 +:106AD0000FFBA370AE3245676369106F87643DCECC +:106AE000B33BA2E5A9D8AEC4C0A4AFEE21FAF60824 +:106AF000FA02F289E8EFF2BFFB262C65FA4292E82F +:106B0000BB39ABB513E95DEEDFB6968C0DC40DBA9B +:106B100039C041740DC42C749B82AE2E1B6CD2C53F +:106B2000E4FF6C747DCDA4EB1CB8EE4AE8DA11509A +:106B300098AEBD0B045DDDB03BB699EDA85BED0FE3 +:106B4000229D9D592CAFBD9560D059CF299CCB7605 +:106B500095E5B4CF35A6CBD8DEE380F14EECDF0B64 +:106B600063CC87CC5ACF780CE9E285F7F4CD552970 +:106B7000B9CBAE4E97339F9E4E9F4C9B9C793F2541 +:106B80007D3E34E9733D5CCF7AFB09E9E331E6F9F8 +:106B9000AD1EBDA4A3BEE7C6A0C385EFE67D711CF4 +:106BA000681CA48F44F4DB592EF41BCD4A5F31AE30 +:106BB000D76BF80F88E9BFAE447A6519F256BBF17E +:106BC000ACC76A674CBBD7DBEE61FF9FA9473613A2 +:106BD000BD5DE58A16C77970F5B12D38BED3EF8457 +:106BE00024D2D7B1B13A49F3F51742D0AD91E98833 +:106BF000F8922447F941EEE746BE61A4014AB00687 +:106C000092D42F9AD5DAAF127E7B544622289F3F2A +:106C100087F454F17F249FF6F57B41B49BF456E64C +:106C2000236CA1A7D3D66EA777496D3ABD5D61816C +:106C3000DF7476C2A4F7BB35FAA2DA0292A9A9F9E9 +:106C400092B2C331E68B93F852C87C595E4B7C8973 +:106C5000438782F35C756F3A5F76774B2CB7F864A5 +:106C600039FFB014ED2EF69B4FB28074863A881F20 +:106C7000764C9EC7E44B9CF882CFDDED2AF3A7A7A4 +:106C8000DDCFF0AEE627489961FB556363C5C807C1 +:106C9000DF9AB3A742A4FEB1622FD98D1C8727E1EA +:106CA000C4E78EFAF75B37E3FB3D6B0E241D38DF3C +:106CB000AEFFF001F1A7BFF968B81CBF7BA8E08F59 +:106CC000D1416CCF6A7E3E124638CF09AD567FF770 +:106CD000F95A07AFF7F3B5223EC1DF68F65CD385FA +:106CE00001B466453F4F74D387855FC9AB018E976A +:106CF00032B3921472A03F2DF2923F2D6C34FCA15E +:106D0000E107E7D0C7642FAAC793A4AF08C7B2B5FD +:106D1000D4BCB91FA1BCCD999E0FBB8F2F72683810 +:106D2000EEEE9BB55AA26BC00FAA07E91A58AB3A10 +:106D30006288FFA81EBD8BF052EA41D211CE8B05AE +:106D40001D1E1C7FB05665BF39E8D0BE40F30F163C +:106D50008044F1615D4C2B24FBBCA779DBB5D119D4 +:106D6000E328DD21557FF2A7FD7BFBB86E68D55186 +:106D700025E0915AD0C3D8EE724682807CCAEF3F9C +:106D8000A90D1521DFE75DE320B9CA2DCDD129DE9C +:106D9000263C375BF8F45D833F26ACD5B00E8046C9 +:106DA00038A003D1AA8C67D0785F69C0E5027EB8AD +:106DB0005663BA68BAF1BE54BC9F8D1E9F741EFB09 +:106DC000F871E207CB955648FE0D7F0773D2E5EBCD +:106DD000BB33C917C8F81DCAC1A04B2D223E0E5E99 +:106DE0002DF42AD6A1B05E810C451B97A4F0DDD30B +:106DF000B171934E7C76C026AB9C7FA956C4EB370D +:106E00008584BC37382BBD2C0F1053695C933FB77A +:106E1000ACF96D348C7A5FBBAD2534447E2B26EC07 +:106E20006E6F6CF931F243BBC3C079D687F592839C +:106E3000F4F36F20EE2439BB0162FC5C013A3F138E +:106E4000867E9F32ECEE75A0F1FB851097E8D9A500 +:106E5000477F48766511C418D6C2411EAF65789D3C +:106E60001E15C67C830BE9D4C5A4B3D2471D24FAF2 +:106E70009C34E4A1352B7292E867D2AB301CF9093F +:106E80008D5B39FC9C5444F6B4593F45ED277C5F3B +:106E900065BBA518F28514548A707D7B06B5651C08 +:106EA000CFF8773712DC52AA2E7322FC8FC6F83F38 +:106EB0005915798DC66B9ABF5BA1EF3F32F4ABE9F0 +:106EC000D5A84CC3CC19054726F6FF9B17E25DF405 +:106ED000BC013AEAB007AC38AB9FC826131A8EFE45 +:106EE0009EBEBFCE133841EF2BE73FD7992BF0FA68 +:106EF00003BD3FE1F349247F1AE15529F8BD0EF99E +:106F0000197744FD4417938F8DF31D9C7FB9FCCAFC +:106F1000604940F07DBD25DEEF9D86EFBF31F8FE74 +:106F200027E3495F2AE9F2F727C2633AF92B1F1DCD +:106F3000005AD792F7CE75E6101FDE51658A4D567E +:106F40009E6975D2FA1E5A15FD37A26FE874B09B80 +:106F5000E851A9278ECB44CF646B3DC3A509298393 +:106F6000ECF02AFD2F344F58569B4B719E30E6EBC8 +:106F7000318D0C73FE947186372EA5C52D00038CC0 +:106F80007FB39699F61EE5541FC2F1E27E21A73821 +:106F9000647F00871C0C4B1C1FCC59AB35978B387A +:106FA00096D7BC27BCDC3B555CFDBC591F30E4D5F3 +:106FB0007C1F34F223FC9D73CE208FF34213F238F2 +:106FC0002F6491478BBC5F15B2C87B2EDA6DE2BB94 +:106FD00029EF2D71217F15096D39C9DFF253C113D6 +:106FE000449A96E15C96C7B290E01FCA63098D9FF0 +:106FF0005BAFB1BD44795F4A70E5E944679645BE31 +:107000000AC3FA429A0FE5AC9C9E8DF3C53CD79D0E +:10701000D6BA68DC26BF18D75CE702637CE4138F1E +:107020008FDF7D869E1A7970F2F34950699DDFAE3D +:107030007F3FE9A4FCEA05220DE635D5504FE3D4A5 +:1070400006A327247C5E5FAEC9B4EE268AA72C7106 +:10705000E8B264461ADF506E56115E75A55199F478 +:107060001E2927B37D9C461EECF109FEDECB599903 +:1070700026C7E1D04C76F432C7FDF3AAC8DFD23878 +:1070800073D68283F873B9DF99F1D29757EB1B69F6 +:107090005D180EB524F8FBAAB478EB7683CEFF4CCE +:1070A000F95601C56591FF46FDA15EE43F9F743E20 +:1070B000FCFE2EC21774FC3E9BE3B5161A2FF79CFC +:1070C000A3C315981C47EFA9918C3C43FB6909D9D0 +:1070D00013238E5640F34E553FD861C4650F515C63 +:1070E000E6A6385AE3E7F6F672B6EF03ED41861FDF +:1070F00069AF66F8C1F630C3545F8A519E82F311BE +:107100001F76B8226FD17C0ACED789AD0D1B3FE226 +:10711000387D57F87D8F48CA2187F24633EF01BF8B +:1071200045FF593E44DCAE8415AE632955E7635BE9 +:10713000C917A39CF9FC1487DD933C447982EE695E +:10714000A5BCAA60E5F3499AEF43DD330E1CD7B71F +:10715000840E50FB2AB1FEB25717F17A5D55986F35 +:10716000E64C9ECF0DEB38BEFF90E27BFCBEACF44C +:10717000F79EA9E803D5463E65E4A3DEF933E75B55 +:10718000F67CB4E046113796BDF7D729C7576DF5A1 +:10719000988235A27FEDC672F6DFF6FE85F5E9FD31 +:1071A000F75419E35FF8EC59AABBED24BB085C3730 +:1071B000F558EB69F679A025238D1E7BC233D725C0 +:1071C0007B0C7FBFAB46F4739976D38887B349E6CF +:1071D0009CA9FEDB8DFEBF0805843EDBEAAB051BE8 +:1071E000F7C366AA4F5501FBEB828D4718B68FF7A0 +:1071F0008B90A8BF7A27FA79EA17537E1856879C96 +:107200009C2F42B57BA5A12F5AAA3FDA8B5F909E97 +:10721000F820C9E338B31240FAEE92C74F119D5CD3 +:10722000867F9A6EBD19A5E9FE6936FA28F9E9FD4F +:1072300067ABD799F434FBB9E408509CE69245BD9E +:107240007501947B294EB08FFB27C3BE9481B69DF8 +:10725000FCEC2E5C07D1748FAC79E97BD4FF70DC39 +:1072600082A7BD6EFAAEF1FD7DABF43F915DF139C1 +:10727000A3A1C749CF564B1C6F2A176F7B8BE5C85C +:10728000CCBF0D7EB840F0C3841559F0D15757CE0E +:10729000FCD520C875DF5DE13DFC9DCB56C7DB8387 +:1072A0007203567931E460121D6D799362F09D2C62 +:1072B00028F15D0E6B43FDCCF768CC81FAEB534BA4 +:1072C00097D37C39750ED36F947AD2E39F9CBA82A0 +:1072D00014FF6535C9F6B260630B3F351863BD34E2 +:1072E000F5683AFB6CDA0F86D95EC578BE47725BEB +:1072F000BF7B2E9FE275190EE3F3E1CCBF7F92E0D6 +:107300008A985B75D3FB10B6533CAF78D4AE20B5EA +:10731000E7B0FF6A7B339BEDD49FA5D8A65E7C2E99 +:10732000AE0B305FBA1DBA4674A99071BDF87D5797 +:10733000330C75B23D8751C9B2AE2C186700D7B770 +:10734000B8CE923799EB3C487162A5D55F22DDC477 +:107350003809C9A22FCB0DBA615CB3BCCE12D73CA1 +:107360002E45AAEA109FADB907FFBBF0DFA26E2140 +:10737000C51C407532FFEDC1319DE4A602828781B4 +:10738000EAB6E9750DB0C2CEC9F0DFD68978AAB0E9 +:107390000C608CE3E238EFF7B83C37EE5A0CD3EBD5 +:1073A0004D6F7BF51BF52E4BDE29B7B2DEB8DB6ADD +:1073B000DEA8BF0EE395DAE85AC2DBD5D6C8306046 +:1073C0003BF9DD5B6ED46FA2F5FDC38DFACDD4FE23 +:1073D000668DFE003DFD77887A0112E365E29B1B16 +:1073E000F3837ECBFC77D6097D49E199C820391E0D +:1073F000195D3E8BBDD4D3F054E428E389F84509E8 +:107400000FA5ADFE8D7A94736FDBCDFCBC6195BE8C +:1074100099F0A9592DF0BBB90E983EFE5B113F9C27 +:10742000B733F3EFC19A2F7F6D1AFA3D7D6436BCF6 +:10743000826F50BDD68ED7CD751AAF5369AB62BA85 +:10744000B9DB6E64BCF05725A7C7618CDF747198F7 +:10745000FF8EE0398A0B6044091ED6C8CFEAC6C742 +:10746000AD22BF89406EFF328A4762ACFF5EDA0709 +:1074700070921F4D329C0DE718F691C745F8C13A3E +:10748000E13F724173B01D8720BF37E9E2C9C77180 +:10749000118FFC36D5D1790349B793E7715E27E2A6 +:1074A0007628078DEA333821E3E938F2E3BF38382C +:1074B00008F9A6CA75366FBDE352A6454F3B65E88D +:1074C000AA4AE9719BA1C7058A68EF727954AA5745 +:1074D000FF4F676C538F83F4247A80F8F967498FE4 +:1074E000125ED3E98B337B98EDCD27D5138CD387F0 +:1074F00089DEFB1DFAB293644F0A15D6373B5FFF56 +:10750000C19087FC2621CFBDCD224FECAD1576E092 +:10751000B93AE117BF6FE8FB8B46FF2D213D41E3F0 +:10752000FFA6463F4DEBD860C009923F7CFEBB8E64 +:1075300070410A4ED961E07D5A1FE8EA49E1878F20 +:10754000382C7262DA21949784D53E99F6D71C2F95 +:10755000BF4EF091E2DB75963AC7CF0D3CCDF550AA +:10756000FCBC2E7B8AF6CF19EDE1F4F684B1BE7730 +:107570006BC47A00BEA8BE5B81FC8F95382EE1F308 +:107580007FD32B9497C7C291D7A8FDC14AA137E6F4 +:10759000D34EDF2D61FD75EAD77775CC4F75E2DEEE +:1075A0005F388314E776659775517DBE2D92A139BA +:1075B000512E7AB3B7F9E9FBDEC2FBAFA56747E10D +:1075C000FD0B298E53DA7EFE1BB647F3F338AE5718 +:1075D00026F2CE31BF75DDA65F793873A9D480F36A +:1075E0008C0464F613238EC4EFEF21FE670BFE1F9D +:1075F000F0BC3DF71DD4CF22EFBFCC7D07C77DC8BF +:1076000058CF0107B0FCC75688FA516475E42B2F98 +:1076100022FCD09A8C60A746F8BEC4E3F42DC90BB7 +:1076200012AFCE370AFBD617E83D4BFEF46BFB14C6 +:107630008DE2AAC36F2DACBB1BD735BC4EAC6BEF34 +:10764000171B72898CFB22B7AC5BA189F56CC5F95D +:10765000BFB3F5AEDDF4FEE14D5F7F8DDEEFBFB76A +:107660002717C5001E89EE5BB712E10B6AF5AFA8BC +:10767000BEAB805E7437E9E19B6EC6BF63B7A04BBB +:1076800073408E58E3958F1B055F3F329E452D2238 +:107690008F9ECE9EC55D42CEE53AB82F621927ABCC +:1076A000DEC9EBEA6832F6A5FD3F3F43F47FB4FD47 +:1076B00094DA4DC18C1C5D4374D2F662BC8CEBCD68 +:1076C000D8271527114F39CF93477C9BEF1472B9F8 +:1076D000C0FF4BFECE1CD7D7E81571464C1E3F6746 +:1076E000899F8BEA8DBA7D1082A4B7725ED837135A +:1076F000DE261EE1957FACBD0BF1409AB4BA8362E1 +:107700003C1DFD3C9501A9CE7ECD86B38E9E2ADE22 +:10771000476975FB09FEBDE330C26AB1CCF0D8DE23 +:10772000F38EBB102EC53C86BEBFBA4D86F3D6BACB +:10773000CAC54B4E752ED9CFD44F9BCBF695C7CF2C +:1077400005D1DF8CD37CDA4B6B480EFC5D3E90A8F4 +:10775000365A3331DEAF689DFE81C44FCB28EEF23E +:107760004BC126A4D7F1D12D1EEA3FD22701C9690A +:107770004F6EA29FEA07F19B2418C2F146C2416FE7 +:107780001ED261A8E6D72AD5526BEBF3982FD9B950 +:1077900063EA72A4F3816C619F4622416F2EC52D6E +:1077A0005BE09E083EBFFD42F414C5B7BEBE3C156B +:1077B0003502865E567383D87FB521AF383FC785C3 +:1077C000BD9E604621F63FB4767DC6A24A6AF77038 +:1077D000FB61D5114E541A0B46FCAEB9377848C43C +:1077E0003FC1EDE538AE7B74B993E2C6AF3629DC14 +:1077F000BFC1793443A2F8B54D56A9CEB43BF33F8F +:107800003CF45DF1BD3210EC01B18FE318A8854B5B +:1078100073C89E971EA7F6AB77087D41BAA7EC36D2 +:10782000903EDD9F6CC1F60BC67ED25536BBEF860F +:107830001DFFEACCA1A7657FC8B2CF136F87319235 +:107840008F5ECC13CE5BE2882FA5E46C19F9950608 +:10785000E79BB7DC4A78B748414ACB77417CE74A97 +:10786000842FB4C841A2DBA32D2FBE467A78F09BAB +:107870002773AF47F8B1D6D7D75D8F709EEE846E71 +:107880005CC7E3DDFF6737BDBFF65B1F6CBF15DF6D +:10789000F73A9E3B45FB6FC368DF3AF0FD70B619BF +:1078A0005FE81CBF6BC679905E45F069C2DED60BFF +:1078B000FF623E9F683F75A69EF10F8F752FA0F562 +:1078C00044783D6A5BDD18CD7BF854E236DACF812F +:1078D000980F32AF499D1F78488A86A9049BA8DF7C +:1078E00034E44155538EDDE7596BC2489FF819695E +:1078F000FD4DC114EC5EF0FDDB8E58E01147644D88 +:1079000039F57FB5614B3883ECCFFE9843227D6C0F +:10791000594F7182F719098CBC31E2B1E84128EE68 +:1079200066BB991356D8AFF5B447CF6EA57DEDACC5 +:10793000ADBF5EAC515E363640F8BA50E7286F54A2 +:10794000F22DE719F8BFA8CF563F5E8AF6C18451E1 +:107950006F46CA65CECB163A2062ADDFDE65C8F34E +:1079600013F5C24E2D1C95626E948B85FB917ED6CD +:107970007CDDF45FC97F05F25F23A3F7654C655F8B +:10798000CCF1EDDF9BED3B1BCD3A71FA787D816D3B +:107990003AD9910FD00E91BD77475AF41EB2D79ABB +:1079A000B033EEC83D3AE5379E5A0FC3661E5746C0 +:1079B00043A11CBA935B81EC98BA25ABD5578D9F38 +:1079C000B5659E11FE2E1AF3E6733FDE1F33F7BF37 +:1079D00017B121C2F96599E3C8CCC7447C163FFEB4 +:1079E0000589F6C5E2072221E247E9A8D8173B1925 +:1079F00068ECF462BF053B402739AFD8310EB42F95 +:107A0000A6D48C277DA4A703A0919E8607B410F569 +:107A10002B39ED04EAB700A2C789DF0DCECA0CF2FC +:107A2000371D81FB3B49FF77D57AC6E99C87797E74 +:107A3000C1A44F099D5F60BF1C0979689C6EB45159 +:107A40001AEDD3078FDF89F0E11BDC2AEDD397C055 +:107A5000C110F9C789F320C3861E4F9C5B48DFF72E +:107A60005D68D3FF129BDE9F27BDAE8009FFA14159 +:107A70002283F29621CC33089F78FBCBF0B6C50E5B +:107A8000987A48E75B8820C9760F3F5F6A57415F65 +:107A90008876B9DDCFF086E6D07BF505A46FC1DB33 +:107AA000C84E9BFA76C2E7BB81FC5C9D73ACD38168 +:107AB000745872F23BC519A86FCFCE9736D4061909 +:107AC000667D4A26CFE7AD5553F04B67B67CFE2660 +:107AD0004BFBB1D2B7CBC184D1C9FC60A74247A749 +:107AE000709EEF0C254B53F8FEC0C8476BF74991C9 +:107AF000A12CF6B39CBF5F285507291795F3105F9B +:107B000084BD4BF2195ED220E4548EAC137553BB86 +:107B10007E9108AEE4388A7F4AD61D5CCF43790D4A +:107B200036F927EB9F8BECED52D25FF99FAD7CC904 +:107B30006D48F7DB17A086E39529EC03CBA9691FF5 +:107B40009CD9F95ED2BF9EF63EB5DB223F3D05CA09 +:107B500032AB5EBA72608B352E319FEB9AC4FA1E3F +:107B60000BEB5AC38A94FD9B2EFE34ED512A1E8DD9 +:107B700056D077D98511CE7F947C81E764BB94AED3 +:107B8000E75A0C24A2FBB051B71DAA799EF3C6A1F7 +:107B900081627E8E8C86FAA904F2016552A42705C3 +:107BA00098D57D66323EB3C99DD9CF94331336E55F +:107BB000ED1B277F98266F08A7C99B099BF266C219 +:107BC000A6BC314CF2B64AA1A37E286F3F9C5ADE78 +:107BD00076A3BC55CE2E6FDFF84F92B73BFE8BE4F9 +:107BE000ADBC7142DEFEC715CADB030D059F5CDE2E +:107BF00046D44406D517303E64FF679E871A3EA8D8 +:107C0000F239D261FA84E2DBA7D4C118C2CB1A845C +:107C10001FACDB2FCEFD95EC15FB7E7DFB8C737FBF +:107C20007DE2FC498373C72682476A143E9F669EA5 +:107C3000C31AEE00E31C1148649F17D1392C94A796 +:107C4000D17630F62D40A27367E546DDBF2491342E +:107C5000ECBD16A2F380252F087B3F025A865A9965 +:107C6000F2571506DF4BFA9E3F7E27F9B922B12F56 +:107C700001A3C2AE9BE7009724D2EDBEDDCE6B36EA +:107C800078B021DDEE4F67E7EDFC41BBFE24F151FA +:107C9000035DF88901515F9D2EDF18694F3FF75C46 +:107CA0009180D094F9498388DF0AC3FAF769FC4FC1 +:107CB00080CF2BD47F363FF3D7868FD3F41EE134A9 +:107CC000BD376153EF4DD8D47B86AD7E063EFE5462 +:107CD0007EE6AFFF497AFF8FFF457AAF360A7D42D5 +:107CE000BDFF7FA4BF57A0F71F5D89DE57F88F1D2A +:107CF000A79CB391E46C8A799E37E8FE90B18F8A95 +:107D000078659CA73C4E0ECEA37CD1DB28E4D0FE48 +:107D10009DD276E7D9ADD6FD01A37EA9B46DE3F778 +:107D2000BFACD3331A29BEADCEBBAC7370D7D6036C +:107D30003F5D0ADC3615FD7E6BD84D5706D2770ABB +:107D4000B96F7686FC34DFF2E64811CF0B8920ED5F +:107D50002720BDAF6ABC327A97355E01BDA7C3FF4D +:107D6000B6D9F10F1AF86FB5E27F0578AFBA12BC39 +:107D70008F053666D03C07439135F45DFC972EAEF7 +:107D80001B98796F1FCE3146F6590EA6DD0F50DADB +:107D9000369FDD7ADD5472B035EDFDAE7695EBF0B1 +:107DA000FBDAFDFC3C580C7CDE2E1E0289E6299095 +:107DB000230E92B75FD6456F21FCD51AEC6FC177C1 +:107DC000EE067F1A7CB97255EDD46F6F147467BFDD +:107DD000A47D16E2345F4EE5E9B3547FCEC9576205 +:107DE0006427A05A7ECF6A3F901F5B080F3B3F502D +:107DF0009E96133C22B772DDAA0CFD6107D5E928D7 +:107E0000AFACA4FB194FFC91CE4B1EEA2B2E267F64 +:107E1000B8903668919E0B0BB421F2AB270D7D1AFA +:107E2000DA2105C9FF5D30EED3B8202BE69C22DFB6 +:107E30009C584FFED933DD16FCECE7551F68CC4A41 +:107E4000B36B1F54AEF725617AFA98E755CDFAC0A7 +:107E500074FDCA5C118E1B0E976F58B388EAF2FB53 +:107E6000E5E00231EDA9ACB9A9FD2BFBFED653F537 +:107E700013FB594FD55BF6B39E223D5FC1748A1048 +:107E8000FD0E8F4A5CD719A9091691DE1CDA179AE4 +:107E9000D17FF6B4231D66C017F52F3A955FFC918C +:107EA000A17F23A3EB590E9ED430BF5E46FC493020 +:107EB0001F173E23F83852A315917E1EDA2EEE23AB +:107EC000F51C6B068DFC1112E16D0BFD9F6F14FB11 +:107ED000218A952FF8FF21C27F867AE365E0CFFEE5 +:107EE000F460E31D87621C0FC15876FABECFCB8DBC +:107EF00033ECFB5CEEF80037DF999C81CEB3D53DC7 +:107F0000E0843748FE97F6EFBDD49C8FF4B1D4617E +:107F100017EE9562EEA593C7B1CBEDD8A794DBF62B +:107F200046214FA8E767495FAF40CFFFC9D0F33480 +:107F3000BF51648C7BC01BFF1D9DD704D873E7AB7A +:107F40001867F4D06231CFF96363C7A1580D409729 +:107F500043D0D3F593470FC52AA9AEBF529CCB3768 +:107F6000EA321C4F3827AF4369FBF7D7ADF56CA554 +:107F700006F85CA2E2573F5749FB023F2DE6F36942 +:107F8000AE7C9DF9FCD6D73489EC9DD424ECC7781F +:107F90009D381F096A84DBB371DDFDB9976F17CD7A +:107FA0007EB4EF31E5791BA3DFB8B11F597C0ACA53 +:107FB0001DB898E2BE989FE29DBDEDC1A277165014 +:107FC0003DCD11577CA9F52EA058AC84EAC822CF2C +:107FD0001889C8CC8FD85E657001E9D706494F87EC +:107FE000E5981586AC4891751F665E93B023873F70 +:107FF000766E9A4AAFAF32DA6F2E81FB486F8FED03 +:10800000DB58749EEC5576AF5FAA24FC85DEEF74D6 +:10801000057F150D4C4F1FA56DDDD9FA39D6F5C773 +:10802000C53EEC843FDBC0ED267FA7A3AFAFED0FCD +:10803000AF533F77DBBF307F7DF2389FE38351B191 +:108040003FAFB4FD5F7EEF9E1F91681F798D517F1A +:1080500030E95761C88B7B549CB750FC09698B652C +:10806000DD3718EB35F95F313FE6D7991F7AD13B01 +:10807000A80F4A13A48D576A8CA70C88731A84C75B +:10808000026D32DE2B9A26CEE527ADE71B503193E9 +:1080900019F9740C16C6294FD387433AD5F5F274F3 +:1080A000CF38E573688FC6693FCE078924DD033377 +:1080B000F715C78D7D739F47E42915B6FB6FBD8605 +:1080C0001C9BFB4C7A93B11E7FE438A9D47471D405 +:1080D000EDC677A8EF1B9B585FCFF179BCD9F47C34 +:1080E00086B8EB8E26A1FF9B9B0A52FA8F7E7E4BB1 +:1080F000D395C58D5F69BA827A50E7DE4EDECF1C1C +:108100001E73F27D986179EC965B293E6A918243F9 +:10811000047BE23B57527B4B3EEF079871D9B03E50 +:10812000B86F23CEF36F5F91F81C95B95F71D55787 +:108130004EFCF456EC37FFEF7EE3A5FD04D430AFE0 +:1081400084BA79F5D7DF6EDE84D0350F887D86BF9F +:10815000ABD798FEFFF4CD0F72697D6507CA97B162 +:10816000FDBA4C3BD2F7F19DACEF4A2493E9AE4403 +:10817000768E511C63AF4B2B1BDC6F315F201A23B3 +:10818000F9C1F77AF61472683ECB4A23D200E2B105 +:10819000E0E20F2492838AD128EF3F568C0667D401 +:1081A000BFBDED90B0D691EDCF7CE35E0AE1E74430 +:1081B000FC76C98227F93541A999EC469387D755B2 +:1081C000E217FA977FA9C3BFCE22372F19F2576063 +:1081D000EC4B9AE30C1BE3140C683CCEB34D62FFEE +:1081E000ABD82FEC7A018D9335799C8AFDC6B9AA5C +:1081F000EAE5BC6F5C2127A4BC29E414A043F40782 +:108200008F2EF6D31212EDB3F77DEC647F345EF758 +:10821000B33B295ED89D99235F44397146C53DB76C +:1082200087336F4C921C3E9EAD686ECB7E0B9B7E5F +:1082300087C0D93197EA26C071DCB1EC32B6C75D90 +:108240007703EF63753D20EA398F17887A4F999C41 +:10825000C170975F9C3B70D379F1121ADFA80B9520 +:108260008B7ED7548EF1BDA26B882EF83EAB1AE2FE +:10827000B140EA3C4957BBA883A0FE7E81DA734136 +:108280000AF6D3B8B2AED1FD872E19E2148F755518 +:10829000AAB12F21FC686B4E500AD2ED6271EE0438 +:1082A00016EBC67995A0B8FF33718EE46DA07324E8 +:1082B0004807207B57FC4DC9A0C3D2E3344FD7F603 +:1082C00029E8407ED6F3EC2BE7F09FC7B697252828 +:1082D000AE19BA3B8BD73F94ADE874956BE8812C0F +:1082E0005ED7D002731F2EE8A138F56BD9EF0FB619 +:1082F000B07E69B7D1F88F3AC43A78D0B9C07B1F45 +:1083000082CEAAFC00B56F11F15A577BF88DADAE45 +:10831000D4F91B590E721D4D463AC4E8D9B6F60D74 +:10832000CA9F2034702C8AB003D74FF6D7D5B651E8 +:10833000BC270F65C685FC1F35D642FB6AD44FA506 +:10834000F32D091E370BC6F89943E7D44AF8BE1C33 +:10835000D3CF4E47F35E688A8E4E3E8FA31C17E73D +:108360006D9C9D32D03D9558A895CFE3C43ADD6A07 +:10837000573E9FCFE1F636D9A3D2BE7776B8D8F074 +:1083800023ADD78BF15A3F43CF979BF4AC7041CAD2 +:108390006EFCAE49CFB1C293F4DF382760C24FC83C +:1083A000E31EAA03EEAA1952ADF516D34F4FF85F9C +:1083B0003A2780FEF71035A13E7D661424BA571186 +:1083C00038A875D2FD88C509A18FC531A17781A3D1 +:1083D000E2B928EC643C8AC3C20F9A70D9B0265126 +:1083E00048599E10FDCCEFCA8E8A7116855DDC6FF0 +:1083F0005D58F8F17561599C0B1DF6B29EC4F70BE0 +:108400003DE908F4FA69BFEB7BAF8BFD30361C2BDE +:10841000411C5112F7A6B9BEB954B016CA34F92D91 +:108420008A9F9F34F5C4B8EF5971500D69F8AC8C30 +:10843000AB9DB42FA67583560BB4BE56BEEFABC52D +:1084400085BE2DEE86B84EF55A977AFCCB94CF1B9D +:10845000FB654B6373B9EEFAE368562BD07ED9CB3C +:10846000C67E98B15FB6F8607ADDB4CC56270DD8D9 +:10847000F6CF165EFC7688F8628FEB17A384D0FBEC +:10848000B5E1A9EFAD4E679FCDF8BEE220F0DF4D1C +:10849000D0FAA47880EA6FB1D800DD2F091CC57C22 +:1084A00011F9F8BDEE8838C7BA636A3F65DE374F09 +:1084B0001AF71E5F32CED71F37EE3DFE98CED7E3B8 +:1084C000F34774BE1EDFBF4AE7EB113E4AE7EBDD20 +:1084D00029B97CD090A3D9F2E4858EE87AE2373CC2 +:1084E0002203DF17AB14F6DCCC739F79B958223B1B +:1084F000F46C4DB2687DE554F995B0EFA32FCE9C96 +:108500003F1E9925BF2B9FC8EF3E379CC4719E7DAF +:10851000B9534ACF77CF897CF71591EF3E6BE4BB17 +:1085200043CF897CF7C8312F9F2B5B1C86412FD905 +:10853000C923E979EF4ED26FC473511CF1B0F07BBF +:10854000E84561FF2FD4C020D9498C0B770AFD86FE +:10855000F92E4B3C69E6A99F7E7DABB65AF357A82E +:108560001472305DFDC41EB798F6C1DE3E7B3D241B +:10857000CEF590A78D7ACFD347EECBD8CC7228F822 +:10858000FD8C610726E462129FC5FC4FCAC1B3513E +:10859000E4C3D3A75D1CB73D3D513FBA9FE5E8E971 +:1085A00083A512FB29D4178AFF8FB44738CEECBFBE +:1085B000712083E4E767E100CFF3D491CE10D33D7F +:1085C000AE719C59DEB691EBAF743386E258FBFC7A +:1085D000E5469D09E233D7934E843F5D5EFE07BAC0 +:1085E0007743F1B951272837EB04715B9DE0C8E56B +:1085F000D5095E277C2AAE1C9FE9F939C0FC7CCAEC +:10860000A0BFC947FC5D74AE9CBEBE45DB67C4A776 +:10861000CCA036C47D0CFD6DCD32F272C32EC9D212 +:10862000D4F5A8F1B0C3F093F385BFA5B538698A36 +:10863000E039F2FF391185EF1340E85C8CE887BD23 +:10864000F9FEBB3DAF218F4EE74564333E80A8C89D +:108650001F49CE9C539DEB9D2E0E30E328914F0178 +:10866000D4707E8203305E3DB4FF6489ABCD7B273E +:108670007DDF8A4AEB2D7A186816716D4FBBC741B2 +:10868000FDCB927773FD4CC9D724CA538B8DEF5C19 +:108690001AF0B9AD217F31D373F5C5AF66D03D4B2C +:1086A000F37B7C2FF6C3FB2EEF3E8CD9AF67BF2444 +:1086B000EA0B7D4A9CEA093D72C433553C5DDCAC53 +:1086C000A5E9A9FD7E0732BD88E296BE40D98CE7B8 +:1086D000075D9EB7E7C996BA418F375A44E7E39ED4 +:1086E00070A5DF0F359FCB9AC539B721C7D4EDA64A +:1086F0001C99F7D61E34EFB7F975AD03D7E51E2BDD +:10870000E17B16725E9B4A76A1A6397D7F66D2BE5A +:10871000D9FCF4F3918F85233736E3B81F64BD7419 +:108720000A2565A673B6A16696CFF4F3D3994EE3F6 +:10873000BE4109F0B9728F2D3E98ED1CF5FA6653D3 +:10874000EE6D79BB6ED8A549F29DAE1F71922BDA02 +:108750008FF8D638FFFD255FF22F40E7947C3195E6 +:10876000EFE7070CF9D2B2222021BD76750BF9B2E2 +:10877000D377B0268FE56BF5C56BD7505C61DEDF34 +:10878000994DCE06BB0D3933EEF74C275FCB49BE72 +:108790000AA6972FF3EF7120BEC7EFC27F0792BFE3 +:1087A000633DC98EC5755E47B7CA76BD2FBBAC9811 +:1087B000CE4D99E37C7975E8EBC49780ACF2DF1B72 +:1087C0000868A09BE72BD52A5A973AD86FE9FFD5BE +:1087D00066E18F06BB67BE8FD0DF1E19A3BC79A0F0 +:1087E0005D1F9B2A7FCE34F2DDDD753F02AAAF3DCF +:1087F0005CF723FEFB1D3B979415939F7AD8E0AB63 +:10880000D9FFD89297FC74CEEBC1156FF889CE3B97 +:108810008FBDC27C9A18CF58A7AF26C676754EB5C5 +:10882000C6F7C8D4BAF7FC5BB2268F37C13F9B7C32 +:1088300014AED21F267AF864F567848FAF5B02CA44 +:108840003307638E30E7F9F487042C7EFE1BCD924C +:108850004D5F6269F3FC7FFDD039E3004D000000FD +:1088600000000000000000001F8B08000000000056 +:10887000000BFB51CFC0F003092FE440E59F914569 +:10888000E5CF9346E5F3A2F14DD0F83B2550F966CC +:1088900068E615A3A92715E7B33230540271332BCC +:1088A000AA781303849684D2DC405A19498D283360 +:1088B00076F3224C20F45F6306067D203B1288A7E6 +:1088C00068333034EA32303C07D28BB529732F3A03 +:1088D0009EA1495DF3463169D8D31C951FE8C0C0FD +:1088E000D0E6084CF74E10BE0392FC13A05890033C +:1088F000846D66C5C09008E49B9B6337D71C289F96 +:108900000494FFEA84DFFE5A0F54FE5F7754BE667C +:10891000082A7F039AFCE22454BE722A2A3F270DBC +:10892000420300C47CA5ECE8030000000000000046 +:108930001F8B080000000000000BE57D0B7815D5AB +:10894000B5F09EC7792439E764124EC201923027F0 +:1089500009104A80138810103F27E121F8231E11C7 +:10896000687C5C7A788A081AABB5A1B5CD843C0CDA +:108970002160B0FC3658A507048B4ADBD457ED6D57 +:10898000ED3D28A568AD4645AB96FE3D0408A8E838 +:108990000D58ABF7BF78F9D75A7B26999924807D7B +:1089A0005CEFF7FDF1C3C99EBD673FD65EEFB5F63C +:1089B0008EC797C7D4CB193B873FF0D4E25FAF6433 +:1089C00041C65298186986A7D71B39B88431760FEB +:1089D000FC6353186BC4E710F817CAA4F22697CAB1 +:1089E000581663528E78C413604CF655B11854EB88 +:1089F0001591042B85E72416A983B224C6147609A1 +:108A0000633EA55D13B00F25CEA27E78EF8BE9AF54 +:108A1000D078AC5BCAC00AA6B16CC63CF81B742DFA +:108A20002B310DFB49D5A06D0963AE603B8B15C39F +:108A3000933DA8748D614C842ECF0D622C5006EDB1 +:108A4000A19FD41C169760004FE23F12127CE729C9 +:108A5000649114153BABD2B0DE9DC394C7C2F03E07 +:108A600087B7F714B19D69D0DE2D271302B467458F +:108A70002CBC1B1EE9580FE59442E56111DABBBD21 +:108A80004C904B694E91DDD09F627CEF55797D6AA9 +:108A9000112FB70C61F16201BF83BA522C77FC1819 +:108AA000CB5EFCC652C691B0BF4D426AA4398CEF72 +:108AB00013219FAF771F5AC242653B94D9D9174201 +:108AC0000BFC96F79FBF11620A638FE6E6E833005E +:108AD000FE2D2523D3111E2DAE4448B17C6F3E1BC5 +:108AE0006BAA8AE5117DDFF7D48B6C158D23778413 +:108AF000E6FB118E89B73DA50447550AF785634308 +:108B0000C95D3D701CF54F84E3468463B8178E1B26 +:108B1000116EE15E389A65731D1B87B4DBE0B711F7 +:108B2000E1578CF07B32B460ACE5FDD803A118B4FA +:108B3000DB88708C30760703380E652C2C27755C2B +:108B4000E7465867338CE1D1F484A4F68597BB5A85 +:108B5000528F0DB294BDB183F9305FFF2189E930A6 +:108B60009CBFF5354D0A227DC0FA689B63CCBA7F65 +:108B700040572CE1656C243CCF21FCD4549628A2AC +:108B800086EC1CC3FEDDD43FD0CB5D482FFEB24443 +:108B90004282F7A9DE76260B482FAA300FFACFD2F1 +:108BA000EDF432A8875ED472847736D20BD40F0EE0 +:108BB000EAB5B88E5FDF14D3B1BF21D3E2820CE5F2 +:108BC000CD539E213AF2231DA5111D15221D852B83 +:108BD000BFF9C324F4FF892EB366E8A7F6B2AA1F33 +:108BE0006159D63DCAFA20D275D50F9348D76EAFDA +:108BF0005207F0FB7E5A80F6B7FAB03FEE81F9B526 +:108C0000D4309618C558738D972580889B6A142A8E +:108C100037D684E809BBA77F03DA7F3A558C374300 +:108C20007B39C834DCA79E67217FBECBA012E6BB90 +:108C30009BA5D2F33758CE22B4F146613F37FBE60D +:108C4000A7B3E281F1DA1F116D704D2B4A25B89B55 +:108C5000E51435D356F68486DADA33964370A132BA +:108C60006C802C6B2C82F393617E803F52FADCD0B7 +:108C70004ACBF8F73389E62949E55551785F2F301B +:108C8000C23FB37EA820D2FC8B052F3D83ACFB8571 +:108C900073004F970FE00078E0F3CFD71348170227 +:108CA000AB1AA1200DC8A792E6FCF2A1DE955032C6 +:108CB0008BBFBCF59BEBBAFCECE5DEF9167AFABF8C +:108CC000C6BEA4FAC5681CE092EA025442FEE1CF97 +:108CD0008FEBE12F639E25DD084779903BB253ED82 +:108CE000BB0F2719DF87FB19DF0719F7A1B4771F1F +:108CF0009A7D7C1F8096FBDD876790F9C23E37CB5B +:108D0000716FA6010F94637E5C3FD213AE1FF90111 +:108D1000AE5FF812D65F575119F5E1BA22040797F2 +:108D200032724233C3F7F9ED0998575DD6C809EBA3 +:108D300019AE9FEF5B5DAD4872C69C8F73BD4EF858 +:108D40005D2B70BA2C473CBEA477FD1B7DE26C5CAA +:108D5000FF4699AF7FA3EFCB59BF399F169C0FAC4D +:108D6000AB45E6F8D8E2FB92F0314DABEC8F6E4CA0 +:108D7000F86F32E0B6C980DBA62F196E69061EA710 +:108D800019789CF625E1B1399F26033E4D067C9A61 +:108D9000BE24F884516703BDF78F42F46601F03EAC +:108DA000AF5ABD5E40BD87F9AAA448EFB82E378BF5 +:108DB00091DE51BF80DAEFDCB0485DE243FD424D09 +:108DC000BDC6A20730B69EE8677B4D9C1D1D817A0B +:108DD00054B7407A6DB08AE4725E7594A19EE2C980 +:108DE000490AF834DFBB0CFD83D50749FF6E6802E2 +:108DF0003860BD571551FFCB6F0DAF477D096065DA +:108E0000E81F51D23F86330E8FC70DBD83B1388D19 +:108E1000EFA9B6C3C565E81FDF945815F2854FBFAB +:108E2000ABB9E7C3B8CB1373DCF980BF3F34E8BFFD +:108E3000B3E6339AF7A7DF05FD11EB5BCADDD32D4F +:108E4000FBB1537053BBE58CCB73905CEE6BC65A91 +:108E5000D75F6BF08FF404EE6BE74189F8EF40FBCE +:108E6000B92CF4E43879626FF968934478C1E4C8A6 +:108E70003CA4EFA52D92D8DFF7E63A7BFB7986FA82 +:108E8000F9F43B9A1BF964678D5738EAE2EB53011A +:108E90004ECB9BCADD9AEFC2F36E457CC8C2FD8300 +:108EA000EF110EDFE916B0BFE189FF10B09FE1D5E9 +:108EB000C9720DBFF7D15EB033D5EA0E9CDFE5670E +:108EC000FF3D05F980D98FD9EF705C9F45AFFC61FC +:108ED000B568ACAF7B0E7E9F77B77851EB1B8EEBFE +:108EE0001BD40BD70D08576160B8DE53D33EEE7C20 +:108EF000F6816704E7071E5715E91F171ADF9B0362 +:108F0000FD59E8C89CC73D17D8DF26C73C36E4F0BA +:108F1000F56F905BBD17336E8A0ADF5BF1384F88BF +:108F200021FEA2ED49F62A63FB65D4630B230FE310 +:108F30003C8E1BF809DBACD5121DB3AA6605EDD932 +:108F4000D871A46F59D189DE50BD463EE4CA2E22A5 +:108F50003B8BF9B8DDEB9CCF76879D65CE6FBB8BE5 +:108F60001976C8B571B4AB5C62D1EDCD915E3B1A98 +:108F7000EC2A5D1A675977AE61F7318E371E05E628 +:108F80000BFBB761C4ACD032E8E72CCE1BF04E9B94 +:108F9000DBCAA216BC84799F15B2FACEFB9EDCFB1D +:108FA000B5F530EE19581FF229D36E77CE3FC57B49 +:108FB0005731D205693EA8CF19FC2EAD18E6371EF1 +:108FC000F829E7296C4B2EB7CB7C116E976DC9E55C +:108FD0007618B423BBCC2C9BFD6EC95586F82CFBB0 +:108FE000D73033FB1D84430AD897643F26D631A47B +:108FF000174F0EF03778A6C81DDC7E2C05FB51C537 +:10900000792512C867C156237B72CBE74F52591F8F +:10901000CBEB595129CDD3EC3F57146D7861AE0796 +:10902000964FF0F0CC7013BCFF5D88C922F2BFA24E +:10903000C60E2980E3B712BF2D34D6ED84CF63B9B5 +:10904000863DE9C023D8E70756D33E4D9A8876631C +:1090500044E4FBE3FC1EF62722F6B33F8F3DCAED46 +:1090600077D61AEC775F467BEF289607F5C5F7476A +:1090700077CFCAE7FD70FB8F501CC6F719F3F7E4F2 +:1090800044B7211C25DC77C0EB6DA13D2A037DEEA2 +:10909000FE50598588F22E471571BDFF392C365D7B +:1090A000B4CC77C87285DE9B783B53BA3BA513CA14 +:1090B000DFBF313F7D293C578942BFEBBB0FEC3E00 +:1090C000C4FF46B0FB64E0A79FFE6914AD6B207A35 +:1090D0007FBC861563BB9EF26C99F4B5C7F7E66F4B +:1090E0009901A06808164E40BB575B15DEB69CF090 +:1090F00045253DF67A91CB1F80E7F56296853E8344 +:10910000265C611E1678A468ADB523508F61AC3B18 +:10911000AE203CDA13229443201F138CD6BF0CF1EF +:10912000A0A058A97043FBFC5884C10EF6D22DAB09 +:109130007A11BF6F7B71048D6FCEF797069EB108D1 +:10914000DF379043A1A8BF3F3EA51B72026CBF1141 +:10915000586E17906E9B8DB2D92E5F8CDD89F318F7 +:10916000569DAA233E0E5B1317713D8F1AFAB7C0A6 +:10917000BCFB8710DE293B38DE251FFD11E15D7643 +:1091800009E25D8D280E847735623FFCCC5BDCAA5A +:10919000231EFC458ED5617DA610CD6005A8777095 +:1091A000FF5A338EEBA3E9BF8EF8952B70789A7C2B +:1091B0006968A9BA13F9D2A3C67E04D5D672EC2F7A +:1091C0005CF656F90AD4D3623E0DF95C5E6E32232A +:1091D0001FE9F94D8921BDE6CCDE553E13CB9AB788 +:1091E0003B3D04DF4513B5B8DF6950463C053640CA +:1091F000EB6E02F8A0FF60C8F204E94583AA40E2E2 +:109200008A1639E3D643286F73D5957319D0B39076 +:10921000FF76B907C76D6011F41D0E5DD5C196428A +:1092200039B7CCA360BF7961A5C28BF56B59A41681 +:10923000E6A1EABC7EA8E68D627DF04E9D9C204CA6 +:10924000D6D9B516BEEA57636B5900F91F87DF31CF +:1092500039F628C22BADB883CA99739EA2679BAB1F +:109260009D29A8374FEBD050DFBF6F4E235B62B113 +:10927000ABFED5D81F6F31D3E2163CDD26F1DFEF10 +:10928000AFBC2FE5A6626CC7FD1D2E56AFA13E8771 +:109290005E25C4D734C45795F0F51788F7E1E5117A +:1092A00051447C2D8E2470DA409F83F93CF421F8E0 +:1092B0005DDB1C77258DA3B3B7D82498A768DFBFE3 +:1092C0001455DB8578B45674D178298747D3BEBD51 +:1092D000B2C4A709B02FA9435B13CFC13E0D06F856 +:1092E000A80AD68F15F2A0FEADA112FAB640CEB7ED +:1092F0006A38AF6C1F8B68D8677EFB4B5F41782E56 +:10930000E7FEB3206B67A244F07A15E135E8C6F6B4 +:109310005AF43B797D1D3ABA8C1F97ABFEFC1D6851 +:10932000FFF84129A2AB163A62404716F817EF053D +:109330003E6191EB3DFC5CD75E2884755DC5CC9F9A +:109340000E19E737372431C43B56EA3A9634F59084 +:109350007C82766F19E6F5E1BA17F63F8476FE1443 +:109360008FB25BE95B3F17CBE6B800A7B3069E3F21 +:10937000FFF41F46A2FC7935E251D1DFF5B2D0D11E +:10938000457EEE7249DD1DE6F3F34EC2EF19122D54 +:10939000E718580698217DBDAA491AE27B47A91013 +:1093A000C77A0F3B527F29F607F88FFA47C7B4A355 +:1093B000F597427F5709AC1B5D0D73CF32B96C42F4 +:1093C0002F3CE63EE53982F26B2EAECF029779BF95 +:1093D000B2AC17B718F10AE7FBA7C157FD00FB674E +:1093E000E95194BB6CC69DEC19ECBF8CEB636B032D +:1093F000DD734BA13E3A4D428B84BD5AF646107543 +:10940000D6724D20BD6DDE3421EEE9675DF0DEA53C +:10941000C23ECDD54ED3FCE1A7DB53067CFF085FEF +:10942000CFCB22EBAE85F9CF7BF6635A0F501FD11D +:10943000BB933FF559C7347BB967BF67707FB9CC21 +:10944000B8BFDC2BC78649B0BEF0DE2BF4E9A85FBD +:1094500027587733F1B918C9F15EB9CFE52399726E +:109460008067E59FC93C4E1061A417FB5992846444 +:109470003AAE0AF62783A902239A8C08C827199BBB +:10948000467186600AC78BBFBFBF1BA93F41DBC2C5 +:10949000CEA55D447F7292F0E61FD6DF05E697D237 +:1094A0001B5709A23F7803C873548E3D18A101F8D9 +:1094B0007F52CC086FEA6A147A7F4F4D88076BE4BD +:1094C000A7891FF8226E15E9CFA73C41F11FE5D708 +:1094D0001E86FBCE40AAA2FD896CE85C01DAE3ECB3 +:1094E0008808789C1671DBEC4F6F8EFBBC76784356 +:1094F000D6C8C1E7D32B1043C2DEDEF603B5FB6747 +:109500003FEB407E852DFA8DEC0326E41D785D52FD +:10951000718C0307EC752BFF9345EE4FA8F32DF5E7 +:1095200092FC3E7BEE9C348931436C30C9172DEBA5 +:109530000F1EB518BCB1E88B2EA5F17601E4982B6F +:10954000B45CB3D2571D769485EFD768C9F3C05D7C +:1095500092A3954BB85E4E719B2D698BD99162F4A5 +:10956000FF2FA67D6ECCCA0E733EC1FD1AC0E889DE +:109570005F9878B82F6B512809ED1B862C0A217F44 +:109580006970454328270F663DA361BF8D67D39956 +:1095900007EDA2503EE98D8D670B0657F5B3AE344B +:1095A000D4CE60FEA98C197E0C37C69A7AE6095291 +:1095B000BA290CFDA5815C69A679FE5AC3B88E5BF9 +:1095C00095ABB07FB72F4A7AC3ECD2766D09C6B19E +:1095D00062BE9847E9DB8F390EFC08E7908F631B6A +:1095E00093AE045B7DBFF37096DD8522D10FD80E5C +:1095F000F1BA7EDABBBC013D6D1CCAFD9EF70A8E36 +:109600005BF8F2D8F4E858DE5EF5E2D08286F4D357 +:109610008BEF71BBBDA388BDFDE62335C4DBD00E47 +:10962000F0306F5573A42F3C1BDDDC7FC364AD129B +:10963000E7572F644EC0B8CF40782D879A4E5BED28 +:1096400055E7D3A3B813886772B04A47F8C27C22A3 +:1096500057108B68E910C6D1F334D95B8AFCBE156C +:109660000FDF90FC41C2B7C96C32C2A3CE977F5EB8 +:10967000FBA101E88B8D1AB8DEE58EC4A22407AAEF +:10968000DE46792DB371B42E39E7C0DB6198C7315E +:1096900089DB317290DB834C914F59F5855F0ADA93 +:1096A00031942FAE54DE8FB3FF97858A93127CDFFF +:1096B0002045DFC776CDA3271972C74E370AD813C6 +:1096C0009CAEB58090CDF196FFC41322FA030C3DF9 +:1096D000D955BA9361DC5001FD8AF86591DC89F3B4 +:1096E000D1E03F9C8FA49D3C8C7A6E601ABCB7C0C1 +:1096F0004DD252898FBA186F6FE2A384701E874FC4 +:10970000FB7B263BE05CF32CF9F1CC75498CC7B7A9 +:10971000FAF033A1C22D67F55D1FEA405C6FAB6ABA +:109720004238631C1FF5986DB83F2017BE5753444D +:10973000CFEFD74468BF7E505346E5FA1A8DCA1B57 +:109740006B6653F9A19A2895DD43EABD08C76D43BE +:109750005AB709A8C7B1E28A97E1936DFED6773070 +:109760005ECBF4D1152F037CB6016F6553D1AF3AB0 +:10977000A242073CD996C1CB5F91C7F0F288D6EBE5 +:10978000446A3F88B7CFE5F513E5B1153AF63F9641 +:10979000972F9727F0F62986BD93B3A05F3BBC9720 +:1097A000DE387FFB15065591CFE504C9D894D4A5C2 +:1097B0004C8057DBB20CBBD1E8070D9D6BFAB50BA3 +:1097C000793FFF222B84876873929F509149BE6E28 +:1097D0000B7FB1F9A4C8AD1AC1875D5671A80CFD05 +:1097E00026F0EB50C66EAE2FA3F5124B82F5DE517C +:1097F0003F75BDB17EC3CF14650B2DF266051AE52A +:10980000309F6D25F6755C68FC9B40CDC067FADC27 +:1098100024C3AD3925C5E6C918BFBE319140BBFA96 +:109820009E9C27B8FD69C06BE0FE741AFF76846FBA +:10983000566F7B1F5819F87D44E6F1B787EEAC20D0 +:109840003CB9C1809F59467823BF7423732EED85A0 +:10985000E780E329163E9EDF17BF991C257B79918F +:10986000A4D8E633C3514EF171BAB958784D757C1E +:109870003F52526CF894E3280FD92B32B403862E52 +:1098800017CFAB47441CFD7AEA6F6711F48F1F9224 +:10989000488FAF66EAAC10F2E52681EC7184B7021E +:1098A000721A737C504E8B4D19B3100F9732F675A8 +:1098B0000FD0D4525975A33DB9A4C9E3D0CBF83E1B +:1098C000ED4B0E5A8F76F4E17ADEFFE1FA17FC28B1 +:1098D000DF17AF7BC13F19FDFA87A40882B1D3C05F +:1098E0006FBD5A88A39DD4D974D4CFF74BCD43F81C +:1098F000FEB986E70DBC6BE40D2C34FC584C56F3D6 +:10990000302FE55D57FC5F38FD2F22FC7E3745CDBB +:10991000C372ADBEBCA27E2AF6D3D27885651DB1D6 +:109920007A41437F921665EE10FA8FD4C8C46666FA +:10993000FCA03CC8E17ED59DB2DBF027693B91BF1E +:10994000850AA3E956FDCBF93C62F825CCF2DD721D +:10995000EC71C4F358FD6917C6A3627A861BF1F453 +:1099600025034F991CCFC5F5751A7E9C50211FFF0A +:109970009355A37658FDF22FC9824D8E3BC7F95AF5 +:109980007DC62C5C075B2344C88DE48DE72EB6CCE6 +:10999000F3453940DFEBB7F371F421822D6EFB6F95 +:1099A0003297772FC9DC6FF537ACF325844FDF751D +:1099B00032C3CE4AFA39DD2568DF8F1CE2FAD78B35 +:1099C000477EEB4AE23E2FC8B2D145EC6EC9A6F7FE +:1099D000DFB02ACD56BEB1FEDAF4583F72A8878EAA +:1099E000AA3DBDEDF37BF1B11C243DD27DE6026EB4 +:1099F000A730477E4C90C50401DE0F667A2DAA0081 +:109A0000663E8CA9470D9BA1BE03BFB13AFFA221C0 +:109A1000863F519501AF304D89CB71594F9A7A21CC +:109A2000C027A798692901AC87F716393B748D6C5C +:109A3000B36383CBED65FF5CD966AF7B1DFE067318 +:109A40003DE67AB34D39ABC55584F3467F7B48007C +:109A5000146BDD7CF7FA39F07EA3CBE0E7955B79F8 +:109A6000BB24E37018BD68577FF11F90C05C6E2463 +:109A700023E548DF83E6EA3C4F0BC4F020D46FF3C4 +:109A800018EBC0FEE40E2FEE7730CAFD5F1946BE1C +:109A90009FB8574BC1796C8ACECFC0FA143DC69A95 +:109AA000E0FB4151311E0F731685FE36FF6C399E67 +:109AB000C03CAEB9BA862CFDF93FFDC19BB4E0A510 +:109AC000F93DAB0C1AF41E3FAF1F556B2D4F2CE523 +:109AD0007A06E9B3F02681F10D0FE8F7A877C8C53B +:109AE000F211CF38F27BE6B9FAF17B9AE35C48FEDB +:109AF00084CBDC048F86C302E1517A5E772C8C7CA8 +:109B0000F32DEEC7D42B226FC7D0EF33C11DA9535D +:109B1000316FAE5B45FB37EF709A8278C5E4AAC916 +:109B2000D7FAB99E9A38AF9E1A8D61FCA9FAB02770 +:109B300082FE971542EC12178C2F64578F4238A57E +:109B40004FE371E0C0185685F45C79690EFBF7208D +:109B5000E6ABC41E41DD2B041BD385F14A97C4ED4F +:109B6000B8C475144F7181C0C438A68B9568A8BF5E +:109B7000BABC117A7ED5C5E9FF6B2EEE8F5CEEE2A2 +:109B80007C07C093403A31EDCAFF1C169B85F02B31 +:109B9000D0D40A2471C9E78C0BF8B87C0DAA3B3DE0 +:109BA00016F9BAC8658F0FDC03EB4795E2B3640181 +:109BB000E9F3AE1CAE6FBB72F484D58E60C1EE319A +:109BC000B2859E9BF2AFE7FA74B07DFC318B5EDE0E +:109BD000B28EE7EFC1CF299CAFDB986F4BC94A6FBC +:109BE0007FF6C2BB726CADCB321F772842FD9689DF +:109BF000B1A5F83E45ABD2707D72618CF0E3AB2E1F +:109C0000CEB75BFC7C1C170006FD24814BE726EADF +:109C1000302E61C4D1B44A8D91BE9BC322CDAC1706 +:109C2000BF00EFBE6A1DCF8C4B38F3EC7AF2E8D65A +:109C3000CBACAE14EDE8EF529E5DB5EE51D08FCDBA +:109C400082559487B741F62A88D7DF945AA3B8394A +:109C500066BEEDA7A2AE338C9F314D63EA45F41783 +:109C6000FAC7F6F7694A5E1CFDE2008EC9DC3EAD1C +:109C70001A8FCF0D39BC5FAFB78AF8AD206BB6BC79 +:109C800085B01C23FDCCE58D929D2E61DE24B4931E +:109C90005A4BC88FD09BB700B042FB28A411FDA53A +:109CA00082B0C7EFBC85F6BC0E39C79E3F19AA8C9F +:109CB000513F9FC0DEA1FC31F319CCFD917D2C9169 +:109CC00042F3E67E262455B4A737147E9DB5076976 +:109CD0003E71E93CFAA2CCB8BF0AD320287F93DDBD +:109CE000705E39EA1C27B400E46E3FFC6DA0F6CC30 +:109CF00027AB5D16BA18F83B997559FC09BF442586 +:109D00001CE9FAEC39F23F935E84FD19FEF54E43EF +:109D1000BE7F224728DFFB139F9B615E4D5D86D28D +:109D2000887A86DE20A8B80F4B5AAE49473C5F724E +:109D3000480A8A61636382281F6753FCE0DF5CDCAA +:109D40005E607252C6752D290BCF42BE237D37420D +:109D5000FE0416700BA8EF959795C4C89FECAB74E2 +:109D600021BFF8EDDE8934EE6ADF2C19F9D84B2ECD +:109D70001E87F8F0B19F4D6230BFBA1FFB5982FCBD +:109D8000127137CA87D54F491437B9E5A77ECA077C +:109D90005FFDC4DA87E7423FC2CFFD341FE9899BEC +:109DA0001EE1FEA73A9ACFEA67AE7D55C779BE2974 +:109DB00051CE705D2DE75B6B3D3C6EDDED773FBCBA +:109DC000D3B2CF263CCCF2B2967023EAC9ABF7846B +:109DD0004B90279AEF57CBEC6BE8B75A02CFF9FDBF +:109DE000F09B6E83AF9EF2F3F88BB067DF625A6729 +:109DF000FB575DB84EA13EC37D1CE073DC801BB4F5 +:109E0000A3F5E88F0AF111507FEA5181AFAF7DECE5 +:109E10008E94308EBFC3BD94FCBC3C5F04E6FF351E +:109E2000E4E3CBF6841B8742BB654DE130C681A6D7 +:109E3000FFF4C78124B77FC8CF702BFE0AEF6FDB1A +:109E40007374D61F711F42DCAF70CB4F3F6F9C0AFB +:109E5000E55BA67BBBE746F07BC9463FB73C79C2D2 +:109E6000FD4B98EFFB315F550AD4DFF6ACCBE66FC4 +:109E700078BFE3B81BE7F73E2C5501FBA0F465BBA8 +:109E80003F824967A9FF4F346F02FD19CEEFE133DE +:109E900037E2DF6DED1BC80F74DB531FBE8B7CE414 +:109EA00036879FE27DFC6508CAC5D7C6EDB7D2B735 +:109EB000DB1F44FFB4E9BF582345D351BF607B0685 +:109EC000F56B777D5AD3316E3FD28221D73F7AF638 +:109ED000E3ED3A8C7FEA890FB6EB00D7839F7FBC16 +:109EE000FDDB08FFE75214C4F7DB1E3BBEFD5B50F1 +:109EF000FEF0598F8878B3FAB1F7FE0FD6FFF51749 +:109F0000A332517F99E0E6F2F2A3F0A7D92867EFD8 +:109F10007C6EE660C4CF3B9F9E3E989D475FFD08E8 +:109F2000F02BEEB1D26B9CFA519F15501965EC578E +:109F3000C6D3B17FECE56E37F2C1BF0AACBB19E006 +:109F40007D6BD5A76ED4330E68AC1BE1F3C25347CB +:109F50000F7C0BCA1FC27E79FAD92F58D93091FCD9 +:109F6000EF896118B7BBF5A96BAFBEAC149FAE0803 +:109F7000767F1BEB6E44FDCFF9DD6D878ED23E2BD5 +:109F800022EBCEB9B49F7AC6E17E9BE167BAADEA17 +:109F9000C4BBE89F72EEE387F8CB94BEFB788DDB01 +:109FA000EE87FAEBA3D7A527B0F2A941FDEA67E651 +:109FB0003EAE7D7AE179ED828F1C743C109C57197E +:109FC000FA749E5B5BE2BE04F1E1F1471E00387E4D +:109FD000F48E27321700F3D18F3FC903A1CD4EBABB +:109FE000BA17231CBA9FF3283BE19BD5CFFDC18D47 +:109FF000795D1F3DFD9A5B25B9C70202F0D78F58E6 +:10A00000CFCFEB186FBD55E085B56AF7AC77A1DF10 +:10A01000B5D0858EFBB3EB43F7374B7BFD7CB7C6E2 +:10A02000AF99ADA23C8A67D1BA6F8D73BAB835BE0D +:10A030006F01FA4B9D70DFE6160D7BAB775F8532C3 +:10A04000DCCF23B310FF06DA4F73FD0AAE7F32CEAA +:10A0500003F63738F0FEF6D069EFFEE6219EFD44A8 +:10A0600048578569B05E57B71BF98FFE3349D91D34 +:10A07000E9BBEF4CBA317D09E9DDEB6D76ADF974E2 +:10A08000E2C3F71C748DDF939E67C0E542747DE1E7 +:10A09000F57C3178D5A1D3EA92BE70AB9DE921FE63 +:10A0A000FC4AD843E71D5E73A9DFBF03F1E3451700 +:10A0B000C37CF379F92764B51F7DE055C04BD562A9 +:10A0C0000744CB4ED70F2AC5B82BC817B5174F7BFF +:10A0D000EAA749E4EF37E723292F68C7260E8CF754 +:10A0E000526036E589B2A8DC85EB0099209C137B91 +:10A0F000E183FA01DAB137E1AF2AEA173E36A394D9 +:10A10000FC24A45F2D639A1BF503D4855DF07E4586 +:10A110009B40F1C255AC95DEAF66EDF45CC33AE806 +:10A12000E9C951DDDCAE9AA17491BEB246C2F8E332 +:10A13000C5EA27E6BC32E72CD051BF3883E7BF40E1 +:10A140002FFDDD90E48394EF25CA559E90357F4F17 +:10A150001531FEFBCE8B2E9A2F9E336174AE84C7D1 +:10A16000219B8C38E49B08678C47EE79ECB1C7B231 +:10A170000D954744BD3DF61BB447F52AAED7BC50FC +:10A18000E3A57642D53EF24FFC4E48CCCCC2FADB7A +:10A190008509DC2F16D9AF40B9A04599807AE42B08 +:10A1A000463E4C8152222EB5C8FD1B5B122ED47741 +:10A1B0006EAC2A198A72E5E1CF259BDFC57C52B2CD +:10A1C00000ACB776D322CA47DFDE20F2B8BA2F79C7 +:10A1D000DD5D308EAA7918DA11FBCB3DB97742F9F3 +:10A1E000DD3512E5B1BC5BBFD38FF265DFBA473610 +:10A1F0004D82F7E143F05E1D18CE3B0D7B7397E176 +:10A20000477BC4387FB3C7387FF3588D4ACFBD35FD +:10A210004554FF939A0895DB6BCAA8FC448D46E52C +:10A22000A76A6653F9999A28959FADA9A4E7AF6AE2 +:10A2300056D1FB40B33786FACDAF6BAAE87D588F75 +:10A2400088280F1335D5547FC29D49F85CD0C228A9 +:10A250001FB900D8645AD042FF3A23FFDC4E57F2B0 +:10A260003A6B7CE584C1DF4679B89DFA3B21B23E6A +:10A270000BF9CC75B06FB0EE025F490596A72F08B9 +:10A28000AB88DEBDFB522E57145FFC7E7C648CB322 +:10A290006881C48A2C7436C307650B5F7AA7BC3506 +:10A2A00017F9C33BA8F00F65EC7EEFDA3AF49F3F55 +:10A2B000D20DB639E24BC815DF8D7EC49458F368D1 +:10A2C000DCD72118C9817249EBD0F99675DDE6E13A +:10A2D0007AC3A3197CBE935F90C87E8E378CDCB99D +:10A2E0009E64C57F9D3B07F89A87BF03D2BE6EB4BC +:10A2F0006745ADA956FB22BE0EF44AF2CB30FA7E7A +:10A30000C73A85E8212EF0731CF024BB49DF2DEEFF +:10A31000C4793155A0EF1FF5F1F96E5F2FEEC473CC +:10A32000103B0CB8C59556316299671EEBF16F4929 +:10A33000C4C755A6BA27E17BF8C9EFAD87E113E79B +:10A340000C1987794C540F4BCADBC5B49471B67E97 +:10A35000481E14C52D65F837668FC55F06FFC6B663 +:10A36000DBCBE39FB5974B12F6F2C483F6F2251DC3 +:10A37000F6F2E4B7EDE5FFF21872534DF2BC099D19 +:10A38000BD85F943C30D7E383C7944C054D2039A4D +:10A39000B71BF524008988EDF2EEB6FBEDD4C3EFD0 +:10A3A000511CCE992FA41E4EA338DC94A4B3FDDA21 +:10A3B000B5D85E75F8F7F2AB3B66939D5A2A62AE4C +:10A3C0001DBBDA979029F8B63576DF1CD8A7AB42CB +:10A3D00052448079BDFCD05F8BEF846FF2DA404F3E +:10A3E000B7E487CF5AC7F3B267859329B8DF5E35E4 +:10A3F00062B8427AE02C9E9B3CF0FE69C052701E0F +:10A400009B3EE7F4973987E7899CD1D59D68FFAAE1 +:10A410008747D3798B5704551480FF06BD1C1FAFA7 +:10A420009AE6B2C1756EC865DBD7CBBAED70BFFCDA +:10A43000337BD9323F430E7CB1F2BBABA4E79FE341 +:10A44000F64514FD30DB8DFC9414377BFE4FE8BFDE +:10A45000BC3E8DA19E95C74EEFC37CA7682B8BC4D5 +:10A4600019EE73B216CBA3B7F2BCCFD15A9A3D8E78 +:10A4700062E0C368031FFE7877AB9847F42D31CABA +:10A480000FDBC5F7CF6BC4639DFB5FB8D5B1EF7D24 +:10A49000FCB9F063D987FC26B0F3419EE72F4FEE5D +:10A4A0009B84EB89A6B6A25F06F68775DABEB394E5 +:10A4B000619C3FAE79F2F728076E58533209C133D9 +:10A4C000FC3389FAB92131BAC28DEF0F2D8BA7C0A9 +:10A4D00056DD7077B7D088F131BDDD35B118EB7F2F +:10A4E000E12A407CFE4C30C6E57E881BAA93425D83 +:10A4F0003FFAF4F0CFDCB67603C99BBCCF646A6741 +:10A500009631CFB5D37561BE3D148558565FFE3D7B +:10A51000EE395144E2FB899E4415858D5FA750B901 +:10A52000BDBE959E91DD20CD8BF15CC1F0412857D9 +:10A53000465733929B4F562BF47E6203A376EAAEC6 +:10A54000A4807ABAA2B78A28DFA11DBD57744544FA +:10A55000BFAA5A9F4C619C0F533E791CE4F17AE2EA +:10A56000A39D1B46E1BEFF466C273D20C8FFEDA81A +:10A5700056491F32F92CEB509A897F57A712FD22BA +:10A580003F4F457E5C2B1AFC9CF345E22F05C86FBC +:10A59000CF0845D8AFC0D4A72336FE28121FBD9BD5 +:10A5A000D3899735D5A2DEF68FE67F8B9DFC8F7120 +:10A5B0003A4EF50A5C4FBC003F2C67767EFECFE634 +:10A5C0008FB7A1F283FAA14BCD20FD501719CAAD68 +:10A5D000B83E9FDB05865FCB943B4EBCDC5563F7F2 +:10A5E000BB8FA8E6FA86B35D93C1D72436FEDE6939 +:10A5F00030CE688C5B419785BB18C9D770358BAB63 +:10A60000D0245CDF9DC0F3BA23778974BF0063C98F +:10A610007D983F1A2EF3281487D059A07C524FEA18 +:10A620000D8BEF5A4FFC233C4462988730A2D5EE45 +:10A63000B764716E2F79E13FE42723A03FE46B51AB +:10A64000E06B09681F6DB3FB55E27AE7BE3FA19F3F +:10A65000AE328D21DF0B3BECAD3CA7FDE5804F9E7C +:10A6600071EEFCBF70DDC23F9F8F9F992D8B8E785E +:10A67000D980FCFC215C9791A76DF273F5F018D19D +:10A68000F03F30D794BF9F9F8F4E0ACF23FC0E0020 +:10A69000FC109FFFC7F0F3BB410F40BE007A00EAF9 +:10A6A0006B263FCF5FDEFE7BEA678D3009F1F186D6 +:10A6B000C4B618C2E386C2550CFD823DFC7D8DA058 +:10A6C0004F4EEFE5EB37E86A851BDB1D9A18AF1597 +:10A6D0007AF9BE93CFFFDDFC1DE913F5D3CFCE9100 +:10A6E000DE4A702E20BA213A839F1968DF9AE71557 +:10A6F00002539B867F17D6599F11227B37EC35CEAC +:10A700004F18E772CCFE37B962616F56DFB81DE5AE +:10A710007492BD5878DE735878EE93D9F034CECF6A +:10A7200039E2B927CB7EA6A8436DEDDE9A26537E8B +:10A73000B1CE52232370BE83AAEEB2DA258B5379B1 +:10A740007C6D712A9FF7277367DC3B03BE0BD485B2 +:10A75000B7A01D7DD3EF243A6F1E1ACFE87C49675E +:10A7600053C10EDD12776D36F811DAAD3AE6D37EBD +:10A7700036069838BC2FCD0CA8304E67FD1DFC5C0A +:10A78000D3611EDF1F683F3E75E91EF43F6FAA4884 +:10A790005D15B7D8356B32F9FD03EB32383F1BE757 +:10A7A0006B9D87E8262B4CC5F92D9119C53560E8BE +:10A7B000A4508071AD8817F7EBE8B30B368FE1DB5F +:10A7C00065D8F131F645ECF8372A545AFF89B7605D +:10A7D000FDF02ED3AF3562BEE5191610D1FFBE1CB9 +:10A7E0000F4AC2F3ADEBC7ECC0F1EBA7B8A97C6C84 +:10A7F000E1981D68FFFADB04D26B8FB95AE74DC5AB +:10A80000F759F9917A15CB9157CAA0FC66A090E24E +:10A81000A2EFC90AE5ADE80A8F0FE1F9107E490CF5 +:10A82000237F8C6BD15892CF53732BFE88F8B36F74 +:10A83000522AF1EFAECB78FE7AD7BA6E99713FAA61 +:10A84000A29730F607372F9F083065279437B9BB9A +:10A85000F7A3FDBF29E0C531E0A77BFF5350BF52EE +:10A86000C9A4F304A7BC61035F6161E447D202623B +:10A8700019636F5F9946EB59D2C6C759629E1B9503 +:10A8800063EE4AB0BB1ED8FAB18CF5EFA34F06C6F3 +:10A89000797FF95FA8AC07D3BB47407FB7CC3DBDFC +:10A8A0001FF333E30B015187811DD0B6A53118C4C6 +:10A8B0007B2F80A8A741B9F296034194C3B8D81C56 +:10A8C000984FDBE97AF4ABA7374B0CF9E5D5B36FBA +:10A8D00069C47A6F6D3A13B1FDEC1D07F0FBB43A11 +:10A8E00010F8D3787B2A4FF4517B59E9A6F255A58D +:10A8F000BC7C7CEBC7543E50C6CBAFCFE6E5B997E6 +:10A90000F948CE5CC95AC92E99CDAAE8796AE17393 +:10A91000278172D869644200E79B77ED681C8AFD45 +:10A920008F73D379AD956D3F8B2CF5D9F8BCFB1C9B +:10A93000AC8B682F9B9BAD2817368AED11CCDF912D +:10A9400053993603E0B951685731C736BD79537D05 +:10A950003DD81BE946FD58AC2FA37A2A278B3EAE83 +:10A96000DF3FA5B7FC8CCBDFC0CB8CECF3FFD8303E +:10A970007C26DAE7E9535894EE13615C6EC12B9D97 +:10A98000F42CF87DFDA4DE7954A6BA8D7B20783BAB +:10A9900078F5336CF756E5B24D68577535490AE1DD +:10A9A000ED682D20E30263D100F2A37BF74D09A0EF +:10A9B0009F2F7DC3443A7F0CCC5BC1F8CDCDC9D667 +:10A9C00059E8175DAD0BED28773A6546719A0FEAA5 +:10A9D000CB551D9A4DCE184178B42419DB3C05E0C7 +:10A9E000B64AE776DE2A6F77079E63B8FA07FC3C23 +:10A9F000CC51B97D1EC2B5EB4149AD85EF925B9755 +:10AA0000BD3205E97897A4E0323A9B9605900F1E77 +:10AA1000655B886EF42689F2B229CE87F36992B815 +:10AA2000FD6FE4AFD0794E58DCF19CB886F1BDA340 +:10AA3000829A7F1FEEAFC12F525B7EFE4DF437F737 +:10AA4000E46915B3F86E8B9CC3BB7D70FFD39A2469 +:10AA50006D7400F02185FBB3528BBF985EB02AC99C +:10AA6000FB5FB24B88ABD0FFB1AAD6590198CFB2E9 +:10AA7000AD02BB4FEDDB7E59FD0E867CE016204813 +:10AA800035D2B79E62A3485FD01FEA87A784F8E655 +:10AA900032E4E3A36523BFCD311F3941F0B939AAB0 +:10AAA00018F9418E7A9D1D28B49C9F70D6A7ED2A77 +:10AAB000DF87FA0A037D4508F5AD7F63EE932C0F1F +:10AAC000FACF05BB11E907E063D32372AD7A06F92B +:10AAD00001B47DCF05B93D8BFAC28A7AFBF997AEF6 +:10AAE000B6E9A4F7CDBA8EEB7D41C7F75DA7B81FD5 +:10AAF000C1D41F82869FA00B9EE8EF7939E47A04C7 +:10AB0000F19775277C8B005F675D63FA0D349BDFDF +:10AB10002050C0E55D85B784FC9E571686899E67E8 +:10AB200028D7CCC880F2EC1C5EDEF479D5E268B19F +:10AB30006DDD363F038206F5A120B3FB19AECAE0F6 +:10AB4000F8F2C67A89F8D9895A97BA33D8570F8557 +:10AB50002F2EC1BCF1CE0D833351EF39817887EBB5 +:10AB60002BE779834E3D156A5CD9D0FEA60733C822 +:10AB70004F3BA7C85E7FD383820BE5C61AE31CEC6C +:10AB800015AABD3E738EDC508DF24A9529AF638DB8 +:10AB9000E6ECFF8BF927E857E82F4FE7F967070D39 +:10ABA0007D36431448CFCDBBD443F726CD66C2F3E0 +:10ABB000B8EFCB60DFE3643F687F407DF50ADE15C8 +:10ABC0009B03FC16F16805E011DA039BBF7554780E +:10ABD00004E120B22AF447AC6849B3EB3939FCFCF4 +:10ABE00097A9CF7E7A64CB8C4CF4F7CD5722B51C55 +:10ABF0008F6DFAED6C55207F4936DA1378FEB1D2AD +:10AC000081A7A55F2F2FA0CD544E533EFA8C63B57C +:10AC10000F4379B8E6FD3ACAC3CC3977523DE0ED2F +:10AC200019FCDEA91F9BDF2B1521FADEAB76D716A8 +:10AC30004239572B223F7FA6BFAABC80F40430EDD7 +:10AC400094BE76E4420FCF771A7CA73D4FCE79AF02 +:10AC5000C79F520CBB3614A578D50A1FCFFF625B85 +:10AC60005DDDD67CFE378D7BCECE1CBC96E252A637 +:10AC70003E332DC37E6E364515CF7F0F1473C81338 +:10AC800080ED7A8B5CB3C891B82147FCA80F9A720B +:10AC900064548A4AE31DD3A29B5D189C5035CAC7F1 +:10ACA000084CE7F4B7726EC94CC49FE44CB03A410B +:10ACB0006EA6617BD23B12A4AF1C98A108CD2528BB +:10ACC00067799EC0C6B12349AFEA332F8069E3A4F8 +:10ACD0007EE7A5E3FEE0BC04CBBCEA3340BE15E052 +:10ACE000FC8CFCE1D95CCEF5E93764979F967E5BDE +:10ACF0004DB92994F6BBDE00A6A8B19016FA22FD44 +:10AD00000273DA72DE7EA3D180BBA06FBFB08A5A15 +:10AD1000130E62FFF3EDD91F271C709E3D70A8042F +:10AD2000388CEDFD2E60C0AF8F1CAA2CD87C896AB0 +:10AD3000DF5F89824F03ACF702FB23A6F27D1F6819 +:10AD40009FCCF699667F03CCA75E80F59C675F0772 +:10AD5000FAFE32637C673F17BB0EB7515F709E757A +:10AD6000B82CF4947DB1708D01DD487DE10A43B7C4 +:10AD7000E3F723537AC6EB577FEBB5DB96E4A11CD0 +:10AD8000EB32FC8FA6DDD6D5C6ED36D35E433B4D08 +:10AD90001F64B1DB72AA3CE87F6A2ECDE7765B1BAD +:10ADA000BF8746997C635EA1AFD73EBB2E93E73346 +:10ADB0001D5FC2F3809CF6DA421FAF3F3488EB5F21 +:10ADC000D7FB62F3CA615E9DC1FBDCB41D153C8FED +:10ADD00059C8E1E736591EB7D75C4CD9BC4840BFCB +:10ADE000C9C4803DFEFA45ED36D03F510E67CB64B5 +:10ADF000B7D2CF24CA53A0E4B395651D8D98EFA8B0 +:10AE00004B6A15EAD52BDB5E737F17DABF955F4877 +:10AE1000723273CE5FCEA13FEC2FBA40FE30D3AE7C +:10AE2000EBDA12A6B8F85AC5E2E7807F5D2ECD8D29 +:10AE300072B84B50235B2378BF0ED41719F333F548 +:10AE40004CB413170DA3BCF82E974A7ADC9BD9F9A2 +:10AE500064FF75CA600FA2FCF38964FFA1DDA883BB +:10AE6000FD2C354CD7D01E999A3BFFC1548A73F7FD +:10AE7000D883E477D837E92BAF61BFC77FEFA2B3A0 +:10AE80004AE5938BB760FDD1D7A01CC6F28DDBD10C +:10AE90008FD4F98E87EA8FFE02442CB4BF2BDB4D92 +:10AEA000F74C75EE8332DA8D0F7848BF6C70A9DBF2 +:10AEB0007D08B777FC0CF341D00E8D79300E0D0C68 +:10AEC00085EE37D445B40B811D66733B511DCC9F75 +:10AED000EDF4FC1EFA4F28813F21F2F71DD9BC7D0D +:10AEE0006C307F76D3B32B85EB59E6FE950EE2727C +:10AEF000EA33C5CCFF6079C8971A5218E1C989AB0B +:10AF0000C4B8359FAD479E05B8BFA221C3D4DB228C +:10AF1000D791FE3D375B44381F8A2E4BBD04CA755E +:10AF20006DF922FA6546A6713DEDB51905B9E847F8 +:10AF3000FA79BD87EE013D126E9F877A9B2E78DBF2 +:10AF40007743FB7C6F6C3EF693DF26B33AF8448B75 +:10AF500065CC001A66F3CA76BCE20FE294BCEDE859 +:10AF60000728F471BBF9833DD37F7F25BC3FB557DC +:10AF7000A671165CFB1D09CF891FD18ADA119F1EAD +:10AF8000CFF2703D6F9387F2E07E93F5F3A1CB8013 +:10AF90009E76312D15E3AAFA2E89F6DDB9BED15978 +:10AFA0007CBEF9BB97113D7619F7BEDDBB6FDB2B7D +:10AFB0002AF47FB4B54246101D95397EADD953BEF3 +:10AFC000AB16A674D2A0CF859E4423DA1FEC0712DD +:10AFD000E5057421FE20DEEF1176A2BE79B46D592D +:10AFE000201FE0F6DEA3E5DB87C2BCD719F0A9433A +:10AFF000BAA7386CA409E9E8BD0D130759EF075942 +:10B000009766DE2F64D85FF81BFA190DFB2297991B +:10B010003F8EF3046D0FEBD81F7E371CF02377D7DC +:10B020006F6BD14EC4FB32306F25D5CA1F896E3A83 +:10B03000E85E866178EF81827CB9BD1CED2505EF65 +:10B040001300B8E6DC69D7ABDE982B91FD3214FD16 +:10B05000AD91BEE714C0FE233FB40E7A29EA99975A +:10B060009E941DE7F1D93ED41B57578E21BF88E22D +:10B07000D0FBC26942BFEBEEAA7FA116E735CCB880 +:10B08000D7C0B9EE63AEB88EF5CBE03BB44B9DEBC9 +:10B09000CC697A631FDAAD80FE4A7A59DF75759DF7 +:10B0A0004C503E8F733DAB4F451BF1FD8A76FBFD47 +:10B0B00008CE79EF6AE2F7CF4CF5F173BA535BC56E +:10B0C0001DE8F7BF94B5D761FCDF9515A47C978682 +:10B0D00030A7A3CC3933D2ADF77BB4A471BA2C68B6 +:10B0E0001261AB7AC719D19ACA34CBB8A3DA326DE0 +:10B0F000E5D1F1A1B6F663F6E4DBEAC7B67FC55643 +:10B100003FFED909B6724962AAADFDC48315B6F2F5 +:10B11000251D57DADA4F7E7BBEAD3C2579BDADFDEE +:10B12000A52797DAEA2FEB5E6DABBFFCB3AFDBCAA6 +:10B13000E5ECDBB6F6A6DE6EEADB267C1A0DBAF984 +:10B14000769A68F8634516B7F41348E3FA2FEAF7DE +:10B15000BACD4F2BB298A5DD370DFCCA98B9E0BC2B +:10B1600079807586FCBED7C883D964E4C134187968 +:10B1700030F71B79301B8D3C980D461E4CC6CCD247 +:10B180007730FFE9931BF95908B015B6D3FD2B456D +:10B19000DC1D306824E3F7A780DCC37CF95824A1C8 +:10B1A00063DC51F6D9ED06659AFD5EBD4069A6FDEA +:10B1B0009EDFE0505BFDE0CA7C5BD957FC155BFB72 +:10B1C000D4C209B67AA75D722A959F5BE864B1572D +:10B1D000D0AF52CDF47D78CF2EDB2A187E1CBD1C5B +:10B1E000F30E5D5B859DD6F390504EA4F0F3C37FC4 +:10B1F00045FA30F3DA9951466500F3D0AFC6B19005 +:10B20000AE2F6C67D139D36F6FFCD14C3C573B509C +:10B210009ECC09CC9351314F46CFB3E6C9BC6EECFE +:10B22000EF49479E4CD7A6513BD7D3BC789E8C6C38 +:10B23000F8A37E19E478B59C556D16C99EE27E0888 +:10B24000D263602E5D193C5FA64B10395FDFE4D9F5 +:10B2500081F3E8C23C192C3F64F8C9D425A4179F98 +:10B2600030F2648E3D20519ECC51433FEC52A26E91 +:10B270006B9E0CE82FA6DF82F264D61A65675E0C1F +:10B28000CD03E6B576AB4079316B7BBFFB1F9117E1 +:10B29000732268E8138EF82F53BB49AEE4F5C895C6 +:10B2A000642DCA25D5902BFF5D7931F0332305FD40 +:10B2B000D1A58282FE9D971F5AD93247EDDD87A026 +:10B2C000332F6600FFD6DFEAB71AEDE3F87895F181 +:10B2D0005E82D99FEBC70FF5DF152F6533E4E731A9 +:10B2E000EE3C1CE3CE4AAF7FC9E93F32FD4B371B32 +:10B2F000FEA539986F09E5D5D58CCEE3ADDE65F7AF +:10B300001F5D91E4FE20333EDA3965F5BC0280F31F +:10B31000F03915E56023B2CDDFAA9333512FB89EE3 +:10B32000DFFF9121D68E7E04F1E3DBFCFC9B576DA1 +:10B3300075535CBE8F1FEA35C29BEDA272BA36D23E +:10B34000173F9C7EA7C16D7718FA4EE80CFA8DF274 +:10B350009AFE4065A5A2E834DE2FE4C417B3BD22EF +:10B360002AD43E73CED659E837FFCB9D8CFC954E40 +:10B370003C75FA9316D26561587A6126E60D9AFCFF +:10B38000EBEA8DCF3520FF2A197FD5EFC7201FFDAF +:10B3900037918D80751E427B16E8E548F4320CA982 +:10B3A000B3FF353E7722DECBD893A700F8887643EB +:10B3B00057DBB5B63C851538443F790AF7D7D8F343 +:10B3C000D507039FB0DA89E6734726C7C33307273B +:10B3D000B26EF4BB015F47BD3C7BEBE904DE5F7DF1 +:10B3E000CB2E89F214CC3C843C66FE24898E871BCC +:10B3F000F7620DAE74FAB7BA491FCC36F0A96BD715 +:10B400001D02E249F60E81E190ACDA9EA7D0D5F696 +:10B41000F13E6BFED5AABDAE4E2B3CB399256F21F4 +:10B420008CF71A7793FF7A13E015FAF9863BEA8FC7 +:10B43000A771789A700A1A700A3AF21536462A48A5 +:10B44000BF3F96C366233F9E29F96E7F01FD87DAD1 +:10B45000B441B885E593D7E41D85F7BFF0F1788E48 +:10B4600022C5B6A7E1BEFDD1437EF1AE7DB15199B3 +:10B4700016FEBDDA279879F4647F291E7EDF2DEC55 +:10B48000868076996795C07C563DD267EAF3A65DC3 +:10B49000D721E077CE76181744F8930AAF52594275 +:10B4A0003FAEC7BC978C5531BC977B7CCC47E755EA +:10B4B0005907878779CF0793EE4E58F3210657DA5D +:10B4C000F340C61FBC83EE65532ABC51C4F7F10E8E +:10B4D0007866B3DB135C3F4F6348F71E473D1D3171 +:10B4E000417F79A98FF880330FBF458D533CAFA5BD +:10B4F00092511CEAA6076FA7BCF27B7C467E7E3188 +:10B500002B46BA05F847701D670EF13C65A520E192 +:10B510004579AAFC545210FF3F38FBDB00EA73A7C1 +:10B52000921EDA2F335FFF2780EF784F64BB714F95 +:10B53000E413A09761F929D0CBB0FC0CE865F87C46 +:10B5400016F4327CFE2BE86558FFAB9A322AFFBA1C +:10B5500046A372A266369577FAB83EA9A4697978AF +:10B560003FFFBE2D57E4AD83791D2FF7D1BC8EFF71 +:10B570002236BCBFBF8BD1EB17D15DC6B90017EE29 +:10B58000A7E9A7692ECDDF82F49C8C1788785EFC32 +:10B5900064FCDA74CCFBF6F9857ECF33BC5B63CFF9 +:10B5A000374AAEE2F6616AC9FE40A1859E7F6EF819 +:10B5B0007D4EAD7251FDC6C813FDD67FB0867FEFBC +:10B5C0001C67B15F26BC9D90135DEC877637ACFDA0 +:10B5D00006DD7B51CD629BD08E676D3C0E58E7FD3A +:10B5E000780C9E179052FE738CF5EF55D419E777BF +:10B5F000DF526201EBBDBAFB0D3957E737F49D50BE +:10B600002C5052DCAB97E7EFD503F32D791A7F3638 +:10B61000DAA7E339718A77B300DA5900AF00EAC3D9 +:10B62000AFA3FF06E673E2459E17D1E98BA65BE95F +:10B630006FAD5FB0F9DD9F37E087EDF01EC50A59A9 +:10B6400095FBDBB7E95EFB79B5CE26CE67F17BEBE8 +:10B650007D40156D0533703ED359A41EFB717ED716 +:10B6600020C7284EAE3337DB5D4AF327FD70E1601B +:10B670002FDD6BB9B2ED9AB1D8EFD4DC8AE3BEAC62 +:10B680005EBBC6399FCF0D3838ED1DF3F9A951DFE8 +:10B69000A38FEF15E23C2E6BE8E37B859DD6F3F993 +:10B6A00050A6F3A917D2C79926AB786F8760F01917 +:10B6B00017F015D433EB56B19897FCCEC6BD70A8E1 +:10B6C000E720DD5E406F37E5B2A8F3FEDF983B5D13 +:10B6D000C6F5CF70C41B9DF2DB5936E5E7872DDF39 +:10B6E0009EA55BE8E8C41E89211DBDBFE7FCF73AB3 +:10B6F00038E9E8C42AEE5F4D2D596EA313D5CFE982 +:10B70000A4AB878EF2FBADEF1C808EF2918E2E21C2 +:10B710003ACAF767F5D2D11643DFFF5E0EE02BE29F +:10B72000B591DFB412010D7079CA41FFDB1DF3CD75 +:10B730006BEB5F7E3718F8BE6548E4458C83E96F94 +:10B74000727F566A49F0BAE5E8A7D252290FC09431 +:10B750008394DA5280F3E928C2A7394E1CEDD951FF +:10B7600078CE4321BD619761CF3E62D8B37BD09E36 +:10B77000A5731E11AADF8BE73A46E17ADA9FC7FC70 +:10B78000D44F16B012E4EB4773E2EB53711E5156DF +:10B79000629CB70E9467A3B6C00BE967D3B93F7735 +:10B7A0004D09DD93B2D89F4DF3F718F7C89B72F996 +:10B7B0007B6D921BE5DB0D98E7487E9D44470D7C31 +:10B7C000E7D92AA9145FD75DB67BAC82209F507F52 +:10B7D0008D817CC3FB78B3A28EF3A36A5502F5D6A4 +:10B7E0002DE53C1E7E83437E65B1AA04EA13CB415E +:10B7F000BE25307F25F95B85CE3B44648676AE530B +:10B80000DE05F56B043A3E145286E03D4C7DFCECBF +:10B810000E3A0290C58055001D45490F39BA6AD0CD +:10B82000E645B82F3D7E764E4F03CB13BB9FBD063A +:10B830001D6000B7D72BAA6EA5FBE6158E573D7C81 +:10B8400074203E08ED906F5D341FF4F2F603CDAB2B +:10B85000A75FA39D933FFED9A7DAF0DAD9BF8997F6 +:10B860004B0DBC1CDED43F9E8FF373792C33F579DE +:10B87000BC27C07388DF33CA0657F5FBF7A94CBC59 +:10B88000CEBF1BF422D47B502FE27A4B57B2C8387C +:10B89000070FFFCB939382F5FBE1D50E3DD6382FF2 +:10B8A00038D0FA9D7ACE0EBF5D9FE9396F68D0FB24 +:10B8B000CDD4673FFCDCD063903F9C0FDE7DF8C2A7 +:10B8C0002E0E2F138E471CFD9B701B5E2F10FFDC6E +:10B8D000E8FF7EA35E88FC612BE9BDEFA1DE4BF69D +:10B8E0002BD72F7739E8F4FDBBF97D467FF573FD43 +:10B8F000F77B7BB8DF64782E8BE3B9FDC2E4EDA45F +:10B90000571E00BA63186768B5DF2F877AA755AF4F +:10B9100077D2A5AFE44ED22B8F1AF9024E3D1EE826 +:10B920009AF66F39EC1FEA9D47CF7AE81CD291193D +:10B930006ECAAB77D26516502FD6AF00BA4DC0BCD9 +:10B940008F24AF700FE1FC88F417E77E81FC9A85A5 +:10B95000F55B162A74AFD03B03ECDF40FB61EEDBF6 +:10B96000383FA74753CFB820BD18EDA6CB918BA386 +:10B9700043F922E950FEDBE8F0EFD5F3848011BFF4 +:10B980001850CF6301EBDFA9E9ABE769A4DFFDCE77 +:10B99000C7FD8DC774AEEFF5E4538A3C9FF26AA6EB +:10B9A00052FEB60462B67608C6993EA6FCCA4E3070 +:10B9B00096107F165CFB39E5571E55442A4F29D651 +:10B9C000EB5075D884DE1AB417EF1329FE364A4CB3 +:10B9D00048C86F72038434EC3296947A2EA981762B +:10B9E00097B70914E733F330971B79983D7FBFC3AE +:10B9F000CCC3F49DA1BCCB93808362063C310FB3D2 +:10BA0000B4370F7335E66106AD7998B7535EA52557 +:10BA10000F93F2320FE8E9948779755982F4C74E93 +:10BA2000232FF3EAD91B0FF03C4C8F285AF32EC773 +:10BA3000F33CCA9EBCCB082FD7F9CEF0BCCB524703 +:10BA4000DEE5145E06BB9CCA574EF391DDF8C1C219 +:10BA5000E7F6A09BA23C904F7048DB7E5AC5B4CA63 +:10BA6000956DB56ECABF1C3F92FC1D03E5915C2825 +:10BA70007FE462F335DF507AF231295FB3AD75F4BC +:10BA80003DF5537AF335958C9E7C4E2A6FDB7157CA +:10BA9000D3FE21BDF999C3B66C9D8D7A619AC4CB52 +:10BAA0004CAFBE12CFE998F5F919775D89F503E639 +:10BAB0006FA20D6D892BED54B85D9E0AF36D9D400C +:10BAC000EF357F263C61E2D999F45E4F4707565126 +:10BAD0009CF0A3FE2AA6E03D0A6F6119FDCA370259 +:10BAE0007E96205B0574437EB586A958CF8A383C84 +:10BAF00052991EA7F331B15623EFF366A2BF939A72 +:10BB00001CC1B862FAB63A9EFFB94550306F7C79D5 +:10BB100052233EB6BA9DE77F76C909B2A74F6C2D76 +:10BB20005751EF3A98CEF33F5724F579FC5E102930 +:10BB3000887AF16A6FEC2ABC37E3EAEF0B411DBA51 +:10BB40003BD15A1ED0B83F224071FA2D12F93F4F17 +:10BB50003281ECE91506FEB3D6FEF33CDFCB896BF0 +:10BB6000388F9398E709FBF4D5744EC7A9F19F7FEE +:10BB700013EF673D667C3F609E672BCFF36C30F818 +:10BB8000C5EA242378AD88F3BCCDBE799F3AE57130 +:10BB9000BEF733813D00A5155BAFA17BFBDF73B51D +:10BBA000E6215F7B2F6CFE3D05A77F530960FCFDFE +:10BBB000E6784618E5574B80FBA3576DDD41E7D388 +:10BBC0005763DE27CCFFE6F6259B71BEABB64A4C29 +:10BBD00043FF82C0E7A3EFE6F18DE3305FBAE77A77 +:10BBE000B7B08391DE69CFE3F4B1760DF370D14540 +:10BBF00081F49496E4799CA63C74E66982FD4379CD +:10BC000099B9863C74E66D9E1012EE6138FEBFF065 +:10BC10007CF4C10BE42F94B7F9725B5D1DA2FFBFEA +:10BC2000223DC3BEAC8A0B19782FFC941689E8B864 +:10BC30002123E6A7BF83B1A12013CFC09BE711DC6E +:10BC4000430E55E1225E2A2D1631EFC2EDAA5A4A63 +:10BC50007F8FF3A12234DDD803EED8D66B10DF1E20 +:10BC600010291F1F16FF0DC4D759DB0689189F6EB8 +:10BC700008C7026F9652FC2513EB2B63D76C47BEA7 +:10BC8000A5E9791998577EDDF292391A3CCBE7661F +:10BC90000AC817DE48E77AC971975A41F8B201D647 +:10BCA0008B7E7AE04F58865A65D314BAAF773DF64B +:10BCB00053B8219DE2CAF9532BC56C80FB4857D578 +:10BCC000503A847FF6E362A49F57D3C336F9967F38 +:10BCD000F88A83888FF3F3AB56E2FA86ADDD9F7165 +:10BCE00005F49BBFA190EEDDD9247778159F0D6FE9 +:10BCF0002ECA6F6FFAFB9DF2F7FAF41EBF1FF1EB2D +:10BD0000A8EE52F15EE037D64B2EA4D3F70456B519 +:10BD100093FC743C0FF5E40E9E87EACC5385762E97 +:10BD2000BC27460FCB948F39505EEAAA38CF4B65BB +:10BD30004596EFF3FBD2C19A78F8DE19EADF9F7FD0 +:10BD40006AC671CC38404F7C00F349613EAAE18756 +:10BD5000C4F800DA6137A11D46F10146F18295C6AB +:10BD6000F9B3950F3ACE5339FCFA7DFCF8854B04B4 +:10BD700064B34E7F3E282C145738037A238EEBF49D +:10BD8000DFBF1CB92313F984E4E5F75B34D7E81A65 +:10BD9000FAF7EA0C3BFCFE9A26CDFA77958618F85E +:10BDA000F8B45B0BA5A33FD6F8BB2BC75DD16839B0 +:10BDB000EE4783407A91A967AF61961FF3FE0BA10E +:10BDC000B74C76BD80E31FA0F1D3DA7724906FA63D +:10BDD00015313C49C406B72DD987E5C1952A9D5B2D +:10BDE0004A2B82F959F0607025CCCFB25E33CFC6B2 +:10BDF00089776F1AF336F3079CF58D46FDFFEFF94F +:10BE000003985781F870A1B84C4DC0C86794391F8A +:10BE100030F5810BC561081F2E260ED3DEBF7DFBDA +:10BE20000D85F38F9E38CC1E230EB387C761D6C411 +:10BE3000FF417198F81D02FD1DDF872E2E0E7353F2 +:10BE4000BBFDFE9A2F1A87F97340BDA8384C7E358A +:10BE50008F8F7F1272515EE223DDF6F3078FB42DD0 +:10BE60000D2EB7C0ED9F1D9FFD91B11F6FAC5F46BA +:10BE7000FCFCA471AE807EE0196DF1907DB0609005 +:10BE8000BB01E9F8A8A056E1BDA9173AFF7A5260B4 +:10BE9000BFA9B6F077677CD7E4EFCB5A387F77C677 +:10BEA0007B975D808FFFB3E2BD3761BC57413C6932 +:10BEB000257B276F2FE86342DFF8EE2D0FDAE3BF13 +:10BEC0009D531E708BB08EAED2335BE88A62839F27 +:10BED000A7FA385E6CFED6A030FE7D37FD5B3E9241 +:10BEE000FF6D4BDF1F8274557FD95FE8DCD231B024 +:10BEF0004751CF3AD63A7D1EEAB1CAFF1614E497ED +:10BF0000771978F58150B5985FC6A3513EF5217C2D +:10BF10007F49AFDCFFC19AE7534659E4FE57D2B9D7 +:10BF20007DB984A9998561B4B3D4CDA351FF6813B9 +:10BF30008D733D5A9EF5DCE83843AE5F285FB0CE86 +:10BF4000C0979E7C41E3EF48DEBB6F34CDFBB891D8 +:10BF50002F78DCC8175CB98BE70B4E54F87D7D0B4E +:10BF60003DF18D884766BE20935BDD682F77311EDB +:10BF7000973CB5BB7631E6091E37F206CF187AB783 +:10BF80009927CC6495CE7D9DDC6DCF17FC389D9FA5 +:10BF9000DF7C8FC53697717DFCEFCB1B8CFF96E263 +:10BFA000EE17CA1BFC7F8D10CFA700800000000099 +:10BFB0001F8B080000000000000BED7D0D7814D5EC +:10BFC000BDF799D9D98F249BCD24D9249B908FC9B3 +:10BFD0000712BE3721E14B6E9D8448510117448DF5 +:10BFE0008876415444BD77A154A9C5664202040C29 +:10BFF00061116C438BB8C46003177B534BEBC7C50F +:10C00000DB25A0B5B6FA868ADFD06E225082DCE747 +:10C01000467BB5DC7B6D79CFFF7FCE24339BCD078C +:10C020006A9FE7BDCFF3A6D5F1EC9973E69CFFF7C5 +:10C03000FF77CE9C19E5B190AD32214ED27E747A55 +:10C040001921B2EAE8DDEA25247BAD7426E220F866 +:10C050007799FEF3D63CCBD127DD84644DB7CB1660 +:10C060005A9FF580B9BE8790A32FD37A4D75F8F605 +:10C07000D3FEAE3E6FAEA77F474FD3FE57558F27F7 +:10C08000D0BF4C0CF5F98414CB0221E55854A4A977 +:10C0900084C4C37F151072AEF158C54CDAEF288105 +:10C0A000F4D246F44FD2783BE1B29D908BD6900A01 +:10C0B000F577D3768F7BA15D5F3DF69BDDFA564524 +:10C0C00026AD974522274D1F38AF73E7B53964C2B7 +:10C0D000C0F9ACBA18D804BFDF1BB29E8914F7FFB1 +:10C0E0001E3DEEEE86BB5CFE09386C976F2221ADDB +:10C0F0000D654D33800E8D16325A216466B385105E +:10C100003AEF9941719F42A7783569AF939DB41D6D +:10C11000349909FFFAF7CD2A6DBF91F645B2082987 +:10C120004D3AB6599B45C8F6A3F72D80799D0D8AE7 +:10C13000248E567537DFB400FAE96E176481DEFB92 +:10C1400052FB0E17B4A3749FDB4EFB3BDBBAD355F7 +:10C1500040CB97E1EF1A4254A0671A9D5FAB656E22 +:10C16000C809D79B5C85CEFEFA0AD982F56749B02B +:10C1700069863090EED17426F5E4D5225A9FC3A685 +:10C180004EE9FAB43AB38CB5CBF30CA47B4EE42859 +:10C19000F2ED552A4FC403BF8609013EAA24B435E7 +:10C1A0007F201F463552F902F99B69473E81BCBD8D +:10C1B0004CCB59549E2CF240FE9C0579023A5727ED +:10C1C0009058F216CDA7719C1ED1F3ECA1F2356305 +:10C1D00008F98ADFF556058C1BBAACCC1C38CF9E0B +:10C1E000F3E18A19749C0FD0792AF2C0791112B246 +:10C1F000815C0C942F0DE56B65BB75987113A617C8 +:10C200009728DFD2095906158584A4D70B6A08E55B +:10C210008E54A5D2E74B45F23EA0AB6B6643DEF7EA +:10C22000E978EB933D25162A7FF726895CAF02C497 +:10C2300097D8CFFF6D56FFBD49941E92AC1126BF13 +:10C240002AD6DF9B44904E47773C9F1BA1BF8FB1FE +:10C25000B5EF4DA7FDDFFB411C69A12414F656E79D +:10C260004640DE3EF1E7C906793A2DE773FA065DEE +:10C2700022F2BBD325523E2A991221D308B1593B51 +:10C280000340C70B654EA2D17E2E7CF1F07228DFF1 +:10C29000B7C74136D0F27D97BE7927D2396827FBE0 +:10C2A00069B935B8BC13E4BDA7CD225868F98F49E8 +:10C2B0000ACE437FDE85B6BB6418B704FC2806FBB4 +:10C2C00045B4CB20C7F4D91BA6C2EFF44FECAFB7EF +:10C2D00011B203EAEF76B17EDEA1F75969FFE7EA12 +:10C2E0002DA15A6CA77A60FEF194F6C152940F35D5 +:10C2F0003185903BE0FE34262FE9A558AF25D1DFEC +:10C3000053AC4AB240C7FB29D56F98CFB9E69B9290 +:10C31000FC7410E40B3A3EFAFC159C4FFA78F5EBEE +:10C320000F6AA826D8FBCB1941CA47E7C0FBFEC855 +:10C33000E5F5D3D7A6905EFA9CCF1A859085923802 +:10C34000BDF193F0E532A09B2504F68468C4554105 +:10C350009F974BF4BF88904BEFCF03BB4EED6146E8 +:10C36000B548C206FB45482FDAF1746AC7C1EE9F93 +:10C37000DBF36D01E89CFE844052C006AD93BA81A8 +:10C380005E0EFABFCB607F9BFF8C7AF819E821ED37 +:10C39000EFEE566BB7D11EA6137ABF415EB749BD0B +:10C3A000A897DBA85E6AB4FFBCA8FADD498C9E3A68 +:10C3B0009D50B52C70A5E3A4F7FD0DE62F8C9CAF26 +:10C3C000F43F83507F8F81AF92BB9FAFF599419728 +:10C3D00095F6BF4D96B13EE461F2A8EBD34A5D9F5E +:10C3E0004223D3A7C3F2A0FA74588EA14F8765A643 +:10C3F0004F03E643FBDA901E733E21A87F87D64B9E +:10C4000046F954A87C4E8479B27990EA20FA9B8D43 +:10C41000F9813B7DF479958E92E3321D6771AB8C87 +:10C42000E3AC92175625D3F2B843ACFC7CBC88E34E +:10C4300098E039D1914C9B4F523EA9A4624CBCC5A7 +:10C44000C9C7E05AEA2D999D4AAF65D3171E83EB01 +:10C450000BF18C4F53D5D5B399F923B9F0BC01F347 +:10C46000A0C3D9145BDFB0FE7399F185C8FE448187 +:10C47000CEA77EB74506BA129FECBA92FE44A8CF6B +:10C480008FD18F4AFB4934D0656E10CB7A3BFA6B63 +:10C49000ADDEAF18BB5FA4B73399D9D92B1D4F7A46 +:10C4A000B299BFE9FA3889C14F58FAE970AE3AD566 +:10C4B0006543FFCAEC8DDE2E457F5E54BBCC64D64F +:10C4C000AE5EF037950BFD749B1EC77FFF07099585 +:10C4D00028D26E0F115A1FD985CA4496B55A420206 +:10C4E0002DAF23DAD1EF809F6E104260573D6BED88 +:10C4F000188F2C772BA1AD02D81766B7AC0D423838 +:10C50000CE45AF44FA1CC6036DF93C3E67FA2E9047 +:10C51000CB544FE294687B922D9F4BE81F6F659C34 +:10C52000CCF45B228ACDE06787B397CBB91E0E6B44 +:10C530002F1B62DBCB8E14163FF6D9CB7A6A2F0500 +:10C54000F093D45ED2F25DBBA8BD84F97C557BB973 +:10C550008BDA4B286FA1F612F8318CBD5CDE68EDEA +:10C5600036FAF72BB5974D71CA88ECE5D6B2821D25 +:10C5700040DFF3872CC8BB8F0F31FA46D349BF7E0B +:10C5800000741DD35F3EBF92C689D48EC49714B980 +:10C590008A0CEDB6255B91AEDD2BAD58FF98B73414 +:10C5A00066FD470FB0F6D1CFD99E2C617D69B66F7D +:10C5B0007B329DC7ED0F7EC701E3DA21906A885B6D +:10C5C0007766FB9252C05E727B7CB7C0E4C099C2B2 +:10C5D000FC9FDECFDEA8F1E6EE62F63AFA79A79389 +:10C5E00059BB1D99DEDF14417CF8B6C5BB9FC0BCAA +:10C5F000DCB7ADA0E53FA9F15E54334E4F3B97BB8E +:10C600006D62D0355BE87F4EA8C681D7961A19E5D2 +:10C61000AFB5C683E5676A14BCB6D514E3F5608D83 +:10C6200017EB0FD54CC7F2CEECF68E78E0FF6252D6 +:10C63000A251D68D6B23C83477553ACAE39FB259BD +:10C64000BC4EFF5C15E9207D8CD776C2E44EE7E74F +:10C650009BC9361E4FF5A2FCDA9B2DA8AFD4EF8400 +:10C66000411E6FE7F2683F9560CB85B839CB42AC8D +:10C67000D4F7A52D0E8421CFBA83CA13C4CD3B9B1A +:10C68000670B10E7DCFE5DC12B42738DF96F95FEE1 +:10C690000FE4F58E75667FEE263BDEAC01FBD06ABB +:10C6A0005142F479B747C923517C28FF3B9E15C8F6 +:10C6B0008F687D4FE4D7B248EFD7BC12D99F0FF3F4 +:10C6C00030DFEF6E5878348BD28178E4CC85D4DEBD +:10C6D0004D720617A0595125459E0A5685A02F5C1C +:10C6E0002607D0A8923BBD0EA910EC90AF693CBDC7 +:10C6F00071D28B653CBFAA92CF815D227EE1F2F8B8 +:10C70000C1E51A0CCF397D3E544F5E83B194F7F3E7 +:10C71000DBCFF5274F8B6D477E9C2C723FA074D8E2 +:10C7200081EE272D98AF908C80478E71BF2E2F05FC +:10C73000EB03240C76C7EF0C801DA17438877614A8 +:10C74000C641FF952B450463FBBC755176C6B27498 +:10C75000487D5D77EAC4A4E386FBFF2B39D17D8E4B +:10C76000D281E61013609E7A7B5D8F068B3FFF526D +:10C77000D339E9B895E95DACF90CAA6F3C4ED5E91F +:10C78000D8C5E9184DB7BC7A01F3DA8F76BCD1A0D1 +:10C790001581DE2D7629902F80DCB3B808ED6F2B44 +:10C7A00097FBA42F92503F7AD67B9F06F9FE9714F1 +:10C7B0001BF6B3B395E5CD7939242452FA174556C3 +:10C7C000A3DCBF4AE59ED0BC820425931C13CBFAA0 +:10C7D000B0D1EEA6F92493DD7596AC45BD38CBF506 +:10C7E00022DACEBAC96AE4DF0ACABF106D7FF60B3F +:10C7F000AA91F4FE8FAA6C21C84FA2E53A8D84510C +:10C80000EEFD54EEC3B4FEA3C8376D99A0073EE217 +:10C81000DDAF0CE4178D5F6D1ED09B9B65EF565A04 +:10C820005F9242F997D0CFBF1D99C41B8E61AFBAFA +:10C8300087B1573A3F7708BEFF53943F3C3FBF2E26 +:10C84000BBD69D1DDA10CFE65BB29F0CB467698B37 +:10C8500055C1EA06FB523205C4F3CDE474E46BB46F +:10C860009DEBB36F8DB1EDDBBF41FC9336D0CEEDC8 +:10C870006CFC7618FCE6EDB72510518638C7BFADC5 +:10C880001C9C63B305E95FE7F8F3F83353A858C479 +:10C89000FDCFF833A9FD74A8B352BF43E5F01DD90D +:10C8A000EF4A31F88F153C7EA84B647EE99CC7EFB8 +:10C8B0002AA1F5AE84C0433E5A2E38E4752D9A68FD +:10C8C000C8CF9CECFE241A4874825C4BB20BF2F980 +:10C8D000DF3A591CDAD55888E5AF3AAE87B91F1C44 +:10C8E0007C5C41D3B81E4F891E57C805C1EC85D664 +:10C8F00042BCFEDEAA344D073FF81B8BB705F8E8B3 +:10C90000A4FED760073A797BBDDCC1E506EE932132 +:10C91000CF90142996DD98EDB098EC5977038B3FB2 +:10C92000A03D31D891CAE6C22A18C76CE2AD877E15 +:10C93000A2DB6D94FCAFBA410F6806B1BF0CCDB954 +:10C940000AF6E1E60C470BC8C73DCD0B2742BF33C3 +:10C95000732A9B53285D6EB69300DA154FC4B690C8 +:10C96000D2C19278267D19E0624ED1348F3EFFF01D +:10C9700082B5B74F8FA9DD101289095FD1ED667AB4 +:10C980007064F9E054A7C8FDF4807C70AAB37C60A1 +:10C990003E38D5C99EF755E5E2A561E555752D4AA6 +:10C9A0001C4A2E08CAC3F75358BC1E093279D5E970 +:10C9B000A0FBC974EE2787A3C392E441E9B02439F0 +:10C9C000061D96F07CEBF795817F84F176CB2C0EDB +:10C9D000D4DB7D23CD1CFFF5C9A1CCFCD688E5D0E6 +:10C9E00031B49FEBEB97DF172D9F8FA72826398A4D +:10C9F000EEBFAEF92EC469EB82221114C06D77BB75 +:10CA0000142A873D52C0E6A5F379694F3EE2B4DDB2 +:10CA100084F9BF9E8642134EFB19D7EF730D2C7E0F +:10CA20003ED7B0D35568A8FF3CC582CFEF214AD38B +:10CA30000C0C9CAE10A76D785A9B3E344E5B0BF5E8 +:10CA400023C669EBD93AC04871DA9E2BC469C7A6E0 +:10CA5000C6C669BBEB875E07886F1D1AA7ED3E1F30 +:10CA6000C6F62B00A78DB1BE41E5D60672193DFE74 +:10CA70007B2FFA10A7BD3B38344EDBDA2021CE1EC7 +:10CA80008DF7D791760B8C4BBB48C82F10D74C69CC +:10CA900002BCB8A7BE5004BDD1F93C3A81CDBB154C +:10CAA0003ACCA27478E2818D1A7D6E4B1CC3775A02 +:10CAB0004AE4DC4506397E3895E9735732D3FF697D +:10CAC000C7D8732FD68E69D98072F237D463B80D68 +:10CAD000F4F8929BDDFF71B16A03FB3636A4B852BD +:10CAE000A8CA5E9C6FAB86715F1444B4B35AAD7D27 +:10CAF0001FE004B44C44283F6B69D9CFF02ACCE73F +:10CB00001F84AE69BB8F699B245A7F66ABA505F273 +:10CB1000F908CFE7BA65D9E6358C730561F8068C5C +:10CB200002E8F4202FD3AC307C99C70A523AEF9731 +:10CB30008EEBC17A41051CE2C1FE766C7D2864E073 +:10CB400027FD677C9BA19EFE33B1DD5C9EFC82B914 +:10CB50005C123697A7BC662E97779ACBD3DE3397B5 +:10CB60008BD238EEA7917740BFF25042E19F5EC46E +:10CB70000F72FBD6D122B5E05F15BE8E96BBDE2CC0 +:10CB80004FCAA99E536412CEBA7F5DC902BF2774F3 +:10CB900089F4F71991E8FB1F7C10EE57A2E46DE3CE +:10CBA000587F2ED8CD7371CC3F0C87FFD5A7B2F13B +:10CBB0008F14FF9B56B5CC02EA54B08EF1F9338F37 +:10CBC00015E3B3677A3BE7829C696522E2F4CF34D0 +:10CBD0008B682FE69454203EADEEF23F7E1D2DCFA4 +:10CBE000F758BC027DAE9BEA439876F893275FCD59 +:10CBF00006FB3F67A1E8033B37275F8D83F8D9A188 +:10CC0000786D30A76D7F65726ED06BF1F2B47EB92E +:10CC100043D52E802BAB57A95D013A6CE7723D9F3F +:10CC2000FF6EA15483DFE779AC2679F9875E333F45 +:10CC3000AFB9642E47E36ED1E594EBEA51BF3E5D98 +:10CC400047308F1FEEFE6451C041E7D691501D1D45 +:10CC5000CF6B34EEC6E05D53DF05F9F926BB95CC0A +:10CC600025AB25886BEFA5F213A2F2731DD5A4673F +:10CC7000603D0902615A7E604F02804B7DE36C7A11 +:10CC8000C4D201EB641AB5BF604F49365B9F74F0A4 +:10CC90003CE82F5D4207D8E3BD951E5FAD3C50CE0A +:10CCA000DC45CB04E0B7BBDA2C6739656B2A0A9107 +:10CCB000C8F22749D40FE44E8FEF00BB2D2F194F38 +:10CCC000ECE017AAD65614423EA63A3E05398F9696 +:10CCD00047BDBD5CE9C1F60EA5B716F0971CB5B807 +:10CCE00017FC029102D89EDA894F63E945C65AC9FA +:10CCF000B4CEFA0218FEF27E5CAB9BE683B0EED9AE +:10CD0000D37A65B856771FAEE536E156E753AD687E +:10CD10006FBB06C1B5F4FAC170AD0BA912D6976608 +:10CD2000FB2EA4960F8F6BADE2B8D60AB739BE1EA4 +:10CD30009067B7C5C6B5CADD43E35A5D83E4893B56 +:10CD400084CE62B87EDDF95FD730F99F9ED75F78D9 +:10CD5000A004F3FAABDCB1F3BF9D6D16CCEB6ECF44 +:10CD6000B4601EE706C484965764935008F15A33A2 +:10CD70005EE5FCEBC3981F7E44F3C30D31F27CA249 +:10CD800004C2B00F614785C307721A8D5FA551B504 +:10CD900002B9BE9BC623612FE4EDC3E057C18515E0 +:10CDA0009950E0F8D512A77F41052D76BB1FB7E15A +:10CDB00054A3702C4AB208AC37D5A93EF4BB1FADC2 +:10CDC0004C6DBA4581CA2F875FD5801E18F05F1D54 +:10CDD00027CF6B882D279FA7FEEFC0AF16BACDF8DF +:10CDE00047347E750FF6F935E257CD3C9FE374EC7E +:10CDF000E1748CA65B1E005334FEBADAFD3F5BAED5 +:10CE000004BFFA13E05794CE9F2732DC76E71EB6B4 +:10CE10000EF375E3575D805F7907C7AFEE06FC8AB6 +:10CE2000CA7D17E05780AB0D835FDDC5F1AB9EC8AF +:10CE3000AD7386C6AFBCAF1AF1AB2D83F06F307EF9 +:10CE4000E87CFB3C95C9F370EB41FE41F83F603D47 +:10CE5000488BAD07B7F2FCB16F3D68175F3FDFF558 +:10CE6000775A3F3F30B2F5F3555F75FD3C5531E1E0 +:10CE7000D983AD074D7AF9D36330CFE57B8410C1F8 +:10CE80007C20B215F8977B48205B6969F2B3B53610 +:10CE9000C873DB433BF0EADDBFCF06794EC981A3FF +:10CEA00058FE79FB322C4FD95D81E5157B564F99A1 +:10CEB00005F2D26C57409EE5A0108675D8BB291D9F +:10CEC000EDC03F61D1AB1E909F670502F2231F1298 +:10CED00054E0EFF23D961656FFDC26ACDF6721E00A +:10CEE0002FFE44C79A48EBF7FEC812D2607C21CDD2 +:10CEF00005F9D9B9E305ED5B3927202FF847AEA72F +:10CF0000D38E7DB409F2A68F05A23C2E03BF0C710F +:10CF100022F0F105ABC6E8DE507B59BCF2F8FF63A6 +:10CF20004144BF3D5C1E703441C739D8F3E21D82D5 +:10CF300000CFAB209229DF3C0ABA513EFCFA6E5971 +:10CF4000D4FAB16B90F5637D7F03AC1F4B22AC0725 +:10CF5000079B2C85FD7C5ED12E8498138AC4C37EEA +:10CF6000B7DC5D94CFB4C9E4274A189F1B77203FF4 +:10CF7000BDFBF3B15CB285F17BDAB1298F65417CF1 +:10CF8000F5A44036005D9E647CBDBFCD8272D32D7A +:10CF90003C671B057CDB2828C0379DAF2BDB285F57 +:10CFA000B17EC31C902B6D07E3FB05E02BC49F5B98 +:10CFB000295F059413124FEBFD0DECFE69C7662344 +:10CFC0000E7EFE090B3E2F9ACF67777DB409F0885D +:10CFD0009F516F3AEAEFC0E7F323E4F33DA9FA3E2D +:10CFE0008FA1F97C0FB76747B78DC17D51636CCABC +:10CFF00088F64BDD9C963FA2FD526760BF14BDF5DD +:10D000000CEC972A33EE979A76279449A31DE39662 +:10D01000BEFD52418B0076EEFD78C514679E09B2C5 +:10D02000FD523A8E3B989D8EC67B674BDE91E16C3C +:10D03000D2087136E9CBE16C53D262EFDF59C6E515 +:10D0400066A4FBE1F6B807C529F7B863E0947BDC7A +:10D050004C8FEBE0A74C4C4155901FCF4C87DFE83D +:10D0600077EE4F63FDFE8D5F53AE2B4AC27E78FE96 +:10D070006A85F60503E9D248E902F878038DC321F1 +:10D0800078DC26753A64A749FF310FB61273DEDBF0 +:10D0900037EEBFFAAA0107E8F3A7F52902E8DDBEDB +:10D0A000FA454980833FA7E316DC5F289C5E7AFB44 +:10D0B00096A838A950238C8E9CBE1BA3EE7F9CCFD4 +:10D0C000AFC04D46446FFDFE18F47E3C2D06BDFBFF +:10D0D000FCB59BA0BF2E7033BC21AF4C24B07FA306 +:10D0E00090FA5F3B2D2B41E20DE364D8FA9175BDB8 +:10D0F00088F8446183D95F2B9A2F0CF97221DFB72E +:10D100004C880FF30385FA63F0EFBAFFBF8A20AFB4 +:10D11000C8BEF5CB45F0FF0ACF474833F3BFBA3F4F +:10D120002F0C9AE3324A67CC273EE3719912E5AFA0 +:10D13000AD44EAF7F7F9FD7C4079B0C0D5ECB7E72C +:10D14000CFB29AEC50348E418A0DF566FC37260E2C +:10D150003110C7E072395C3B8E538C613F91673967 +:10D160007E3126B26C1E38A989A46B4302F0A181DE +:10D170007843946E9348676502F0A191F1C5AAC502 +:10D180009B708BCD60BBC18FD412DC8744AA24C4B2 +:10D1900031F2A68F91810FF4D60EE08B552D46BE4D +:10D1A000FC475A32CA6DB2287440DC6BBD7D3CA985 +:10D1B000F302FEF1E7DA22E8A7D2D1BB1FF8B747A6 +:10D1C00032E11FD17887D5FF7A6521C3BF3F011CAB +:10D1D000E32F5D3FAB049C62A3287F524BDB1734E7 +:10D1E0009A7188F1651D78BF5C598C384634CE61E0 +:10D1F0009DFE525FBD7D3AE01C6171B913DA89DA98 +:10D2000018D83F15856B8C6F37972F812E9433BAC2 +:10D21000A6960E3FFEE8F1458F47E7E760763711A7 +:10D22000767D18E449B75BC4598AF62CE5BAB5BFD8 +:10D23000CE8138AC552905B6CF5EDE60877CFCA96F +:10D2400090526A57A05550F4D1F2C3EE8216CC2307 +:10D25000492D8EFF29B7180FF1434A6D4112743FD3 +:10D26000D8F375FBB6A94646F9D1EDDC8EBC3FCCB0 +:10D27000C5FC88EA35C4053FCCFBDB51285B4FC5B4 +:10D2800029102F56FCE1368C33425D8217B08C504A +:10D290005A208F0C810FEAF635DA4E0E671F6F4E5B +:10D2A000FF6AF6F129B8DF90A74CE5FD15AC2723FE +:10D2B0005A37D3EF8FB57E981E633FE908EC23E61B +:10D2C000378A5B0C85113F31DBB781F6D12F02BF66 +:10D2D0000B69BE63415C4FED007EECAB4FB93E1F66 +:10D2E0009EA3498A0589E223B0EF30DA1E5A01CFA6 +:10D2F000760DB48B56C0B35D31EC21E0D9AEFFCDD5 +:10D300007691E1FF23B58B130F4744906BB039A999 +:10D31000F903ED22C831F035DA0E0CB74E30C02ECD +:10D320000CB24EF0B24D7D341DF645CE5DFB4D087E +:10D33000098993662233E87CBFBBC10ED0D26076E8 +:10D3400062EFBA8221ED4AB45E0361709F46766F48 +:10D3500015CCF77A6A222DD48477245C96403EDF80 +:10D3600048222A94EF4EF3EF00B99E9F30710334A8 +:10D37000BB51085403BFE9B41539BD1F47A3CDB550 +:10D3800055600F1409D7550057B3C07D8AD78172F5 +:10D390004896CAB0FF49201102789A1E9FE9E3DB44 +:10D3A000CCD75B67D17C1ED6C1C5848B99CB69F97C +:10D3B000E97433FEAA5F69DE7ED1B82FC02EF4E295 +:10D3C000B8E1E59BFD74DC378AA14A1C275125583A +:10D3D00057C9F508A5905F5DEB6638FF3C4FFE3EF0 +:10D3E000D0C7ADE9FE9FA69773E100FCCD2BA0DE70 +:10D3F000DFE81C5785FCE4F41F8CAE3A1D293D2262 +:10D40000423AD707FA67779788B015469FE7FF8CAF +:10D41000F2BD08742CC8962B051887C5C9D6275AA3 +:10D4200009E6E383F5FF1B2AAFD26866D7E07A8C62 +:10D43000F20FAE3FA37659A20F1B5B14A759E83831 +:10D44000FFB946C1F2DE9A62AC7FB6C68BD7576A87 +:10D45000A6E3757F8D8AD7976BE6E27DBFAAF1615F +:10D460003954538DD702D1F7068C6F6C6B48043951 +:10D47000AAB39195C08F56BE9F411FCF3BE90CA721 +:10D48000D1AFEFA62BC89F0356463FEDDF6D2C5E54 +:10D4900090DA47011FE10AFC4F7A4DAD0376A5CA29 +:10D4A00025AF409836FE90FF43D83702B758C09E4C +:10D4B00035063E74D36BB9968465458B849F2EC325 +:10D4C0007DE95E88D35CBF3F77BE8E3EEAC5139F81 +:10D4D0002BDB689B44D187ED899884FB4EA6141DF5 +:10D4E0002509C886AE30E0EB76BF13EDA3EBBD6730 +:10D4F000EE7B90965F065980759275913094DDEBC6 +:10D5000092182EB73E429EA5E5B433EC7E2AB6E1D2 +:10D510005DB45CB63211F1242245C287A17C31078B +:10D52000E57A93C0E226ED3686BB4D7A2182B84873 +:10D5300046C085FDA52E38AF2DA3E379295914A146 +:10D54000BF1FD9BC5DF5B4FE97CB6DB87F67FBFC00 +:10D550006DABEFA2D7A4F2FA65DBE875F7C95D1FE2 +:10D560003C401F13F4762414D272664ECB6F00AF8A +:10D570002ECD60F966A3B7C301B668CF0329E87F53 +:10D58000CADF3E8EE5C381A21298527989E803BFB3 +:10D59000757896645AF7B067B0F7C592336CDC5F64 +:10D5A000A968D3289B7A611E52D962F5C1327CCF1B +:10D5B0002E00FB0224D9A7CEA765BBEAC0F51FEA5F +:10D5C000CF9233683BB575A10AF8429C42BC0CE788 +:10D5D000617E2D2D83EFDF27BE54585738922DCA18 +:10D5E00010CF1FC9EE48803CF148F622C01A89D5F9 +:10D5F0002BA25F2D3F114E984C9FBF39B0665A2D1C +:10D60000F6134EB895CA853B231EFBC9C920781D69 +:10D61000B4FD27B43D7DCEE607687BA5BF7D36B45B +:10D62000A7F31C0DEDD386689F7F94B50FAC353DF5 +:10D63000BF883F7FE230CF8FD6CB09FCB9477A9FB6 +:10D640004B067D3920784713CAFF053FFCF1631272 +:10D65000D5F754D1DB0565B2E95F6EA89E61DCC7E2 +:10D6600013C438EC2651C1F519F2B818023CE04059 +:10D67000B020890C918FE322BEC9CFC5F7DB7F2C88 +:10D68000A74495B3A2EE2F30D52FC928E0FC1B1775 +:10D69000755FA9A97CD3C9ABAAC04FDE742ABD129D +:10D6A000ECE160E37BEB7D9B0AF7BD050A8DEF495A +:10D6B00052C3381DE8C0CBDABFDC5045E79DEA62B3 +:10D6C000E56FFDF0178FD53AB1DE0FF6E525BE2FD9 +:10D6D0004AEFEF5B19CCBEDC9FA1EFABF6861BCB0C +:10D6E000701F4200E4D772660EEAB1432001C813EE +:10D6F0002CF3E6A2DECA05129625D9AB3DC8EC4054 +:10D7000000F492CAF3FD196900069484490C793E2D +:10D7100076F607A28FDEFF8B88188278EA5F055FB6 +:10D72000C224D0F3F745C4C93A16AC7A6C226D779F +:10D73000F0350BC6B786FD7A282F854413A1DF9FED +:10D740009F1271FDA6E090FFB189B4FD8B7325C4D3 +:10D75000DFA3FDEF351E46FF83BF5BF45BB82F757B +:10D760003EEEF6262F9DA9447F955C2E94A01F695E +:10D770000E6E8057FC6E782D5409AF62157DA16C3A +:10D780004777CAE3BBB2ECC5B3AF67F9522FE43FAA +:10D7900053DA2AEBB04CF518CA37587C96EBA03C0C +:10D7A0009BE55FD660E9EC7186FAF2CE52531CD14C +:10D7B0000E7241E964FDDD4CD3EF2FB53EFE1895A6 +:10D7C0001472295238649C71A0469D00FE452F1F9B +:10D7D000E47EBD63EAD5489FC3342F01FA1E762F3D +:10D7E0004A1201E7CC88EDDF0FF0758317B928A343 +:10D7F0003C51B97CB155E4E59309D716F5EFBFD19B +:10D80000EB5BDBCCF52F91D00DD77BE139EFDDB0B1 +:10D8100098AA8CD4BA581D67A097145CA48D03B93C +:10D82000A964F49064522F831D2C62FB062487A602 +:10D830000A0AC88FDA0EF6D057D4751CDCC484F6F9 +:10D84000801DFCDD2C85045229A7A6EC925F71286F +:10D8500020079D12BCD2E0CB95673BC13F950AB82B +:10D86000EE4B24A5CE0979D9E41294873713DB3B1C +:10D870000067FDA55540BFE02B087C0BE8F3976ED1 +:10D880004181F7C76A4FFF1AEDD5C3DD22CADB8994 +:10D890000C965F1F8B94BE358FB69BDA5880BFF70E +:10D8A000E531BF5B5107382E1D9317DE639EF2C62C +:10D8B0006272AF814FD62A2BE64153DEA847B9DE0C +:10D8C000E86E9D89615C235BBF8D934307416E4F7A +:10D8D00064D819BE5D65D5EC2ED49B13306F873BA1 +:10D8E00040800EBABECCB3100D379CFC5964FE7E4E +:10D8F0006E3861A1615FEB11C98AFBAB2AACAF94B2 +:10D90000BD05F9933C730AF8AFDF4EB44BC9A0C70D +:10D9100063BC4F037D237DFA3D209F8A64C4CAA760 +:10D92000E64A22BE77F005A9FC39F81D6E0F92BEBB +:10D9300048AA0CD0F20B8A84EBA13482489E44CBD7 +:10D94000F34F8ACA561CB7D97ECE712798E45B6C18 +:10D950004C319515102263BE13653FC9A9F1FDFD39 +:10D9600015C0B80E4BB8BF4F53715D7D110E81DAF3 +:10D9700013B9FD38E026F367D8650DE30BC50AF946 +:10D98000DB34BE5EB58FDB85BD3C2F39D2F0DC7158 +:10D99000C0557EA93A7C02AD7FF53DD11B2EC375E3 +:10D9A00061E4B77D5DFB71C057A6542710787F995D +:10D9B000CCB59AF2BB69EBDB2558571C47ED9E4A64 +:10D9C000EBC7FDCE9CE7CD8FCAE36E882A47AF2315 +:10D9D000CA1EBE6E388D4C8379373D62C1F168EF47 +:10D9E000B0FD0C4766047F8C72402DB3E51B606F61 +:10D9F0006F4FF827B083242F792BC8A323FC21C8AD +:10DA000057F239391FE2037D5DB1C0C370C68ED3B2 +:10DA1000F630E8D1C1F32C0EAE38137A7D4219AC42 +:10DA2000BF8A04F08CC91E05E5BEE8BC7603D8DFCA +:10DA3000B173D9FBF5635BB5B1B85F79E6EBA300D1 +:10DA400027D8E8B4210E51270408ECABD272985FB6 +:10DA50003D92E87B2D1FECCE2991AD5F505A786145 +:10DA60003CCBE3717FF2644F0A93BF702001EC70EE +:10DA7000F3F529B80EF322DF1742BED0C6421CEBE5 +:10DA80007ADA3F0AF63BFD721FFB5D9504EE4718FC +:10DA90004E203A50F788942D635E31CDC370026AF0 +:10DAA00037A679E8D5557814DB1FC91746D4FE1A76 +:10DAB0004E1FDAFE1A4F1A842234BF813C86DEB72D +:10DAC00015D6A048A416F870238DDF50DEA3F2A16E +:10DAD00039242C41FE43F39BEBA1BD9DD07CA810C3 +:10DAE000CDDEF17FC47E048C67AF20BFD1C8D4FEE9 +:10DAF000FC264F5EAD9AF31BFF2DF09C7CB7B7035D +:10DB0000E5345B11813FD75A26244586F01721C89A +:10DB10006B306F91F14AC727809E1F87FC6634BC2B +:10DB2000F7E3C0FC661FE44156CC5396033DF3D6A1 +:10DB3000EB798ABA04E2AC4D9ED9F3A419908744DC +:10DB40004AA0FC80677663D54C886E823BE6527AA9 +:10DB5000EE15235BC6805CAC12B93D0E890B0DF649 +:10DB6000C6D516FE2EC42F55108FD071E78B11B27B +:10DB70001AE43A4514C16F468F7B1F970F57DD2774 +:10DB8000AB81AF8F78981F7B84F35D2F77DAFC8FA2 +:10DB9000C07861C110D6CDF2B85DC85BEF27B87E02 +:10DBA0004E425930DF5984E5AF57CADF5C125093BB +:10DBB000591EDB00CFB9B18DC56B303F880FBEE772 +:10DBC000D1DFEFA4CF9938727EE712657B55FEC096 +:10DBD0003CBDCF9F5CA2F62F75F07EAC161200FA0A +:10DBE0006C4CBBA518F62D6CCE49172D867590028E +:10DBF000D1BF07E42537DB86FCCD5DC7F929D2BC50 +:10DC000093B62BB2B1B850BFBF8DD355BFBAEA1689 +:10DC1000060027D4E99A2B30BAE6AEF313C00D3ACA +:10DC20006D95CF40FF07F4F99300BEBF4BA400BE33 +:10DC300097FDE5E91D12418F28BD0F23BDB339BD06 +:10DC4000B9FF1A297D67E7069E8A807DDC2061FE88 +:10DC5000AA55B2B26673C8809B5B9D5DB5F00A722F +:10DC600074FB8769939768C836BB2030D98BF167FE +:10DC700060DA4D89F01EA6FFD71E431C557BFAE1E2 +:10DC80006F81BD7898C61360176F247E89E121618A +:10DC900009C65999AA9409B89EB26ADEEF68DC53A6 +:10DCA000094A0B719376DF3CD8FF5E99C0CA96CCC7 +:10DCB0008DDB605F7325E44718C76F60F585ACDEC8 +:10DCC0000EF5B0FF205D3DE94933D98B1031E021DD +:10DCD000D43E7C00E32B94F32B81DC56B7CCED8350 +:10DCE000B36F9FA63D7F283BC1709067B8BD88AEDB +:10DCF000A7F2740EFACF057BE132C8D32038C67F75 +:10DD000070FDD4AFBDE067D20C38C6133A8EE1CBBC +:10DD10006238860FF567383BDC9F177831CF8B96DA +:10DD2000A363BB7F80F87C4BBD88FEAEE0506FD50F +:10DD30007DB4BF56B0C78073FCADAE6B4B7EBFBC2D +:10DD4000D941DEE8F5F52C85E76BCAF5C5F0FCB9DD +:10DD500012EE0B793A98920CF9C7368F2A651AE8B9 +:10DD60007FA347B5659AF9E18FE287337304FCC856 +:10DD700075C699E8A9D3EF5DCE87B7B85D3EC1718E +:10DD8000A902514D837EEB6CCA8E2A90E7D7D9FB4E +:10DD90003283F175B0F5069D5FBA1D3892C5F2C1A8 +:10DDA000FE2BF38FEF5A991D2E984E66CA49FDFD42 +:10DDB0007A33195FDF8D33E795FA7572266BEFAA18 +:10DDC000F305701F331C1840C79BDF40FDB1018F66 +:10DDD0002BC914B8FD50448663CA78BDD5C6FC442F +:10DDE000E174324B9EDC7FFF35FCB9B7C6B3FAE86D +:10DDF000E77E437FAE65A1E9B9458D2C0ED0EF5388 +:10DE0000FB9EEB65783351F1B9F90DBD02F0A170BD +:10DE10003D417E28419F0A7C7BF78E87CF3E017172 +:10DE2000505A7129C3FF23B580A3495ABEB895FE45 +:10DE3000BE90F7F7239B5783DFEB05816CA0BFAB48 +:10DE4000D90B35589F8D531D28BF56A7F609D863A7 +:10DE5000AB9BC5DD340E5F9889EBBE01531CAED37E +:10DE6000DD25912A7B69FFB853B2CCEF71E9F3BC91 +:10DE70007569AD359D3E6FD2611971AB9BE6311C62 +:10DE8000769C9A8DF14E0FA7CBFE36794902CBCF07 +:10DE900010979A68EF5CF35B5A0E6DB379217E3B65 +:10DEA000D8D63276256D17A4FF0D79FD8F6CAA3573 +:10DEB0000DE64DA38016FA5B4655ED6DF7D3F94F8D +:10DEC000FAD7435B21AFF37C5B64FB0832199E46B3 +:10DED000DBE3EF3F0EB8F1F7836DCF252FA3F3D827 +:10DEE000BDEBF1EBAE02BD6F13BDA3E1395178DAA2 +:10DEF000EA4C86A77D2F53CF5754756C99014F9BE1 +:10DF0000B598AC8CC2D3A03F039EF63DD0C7C1F0FC +:10DF1000B49A4CDD4F05E3202F3CE86478DA416782 +:10DF20000BDA91834E8E47A922E671BB3B435B21FE +:10DF30008FAD0BE8785828FE56DACFF733192EB597 +:10DF40001936C1A619DB770B70CDD5DBF786900E9D +:10DF5000750FE8781C6BBF2993E161DBA17DF91097 +:10DF6000CF57F6B1F680A7199EDFC49FFFC301ED1E +:10DF7000CDCF07BADF6BD08F1FF076935E085502C6 +:10DF80005DC752BA02DDC6B4F931756B249D5EE3FC +:10DF9000BADD53FB9BFDAF2B80BB057E0FF8869649 +:10DFA00029A29D794A30DBF9362E57CF73BD3CB696 +:10DFB000671181FD3DD63D8B910F643D417E8F7988 +:10DFC000F23F05E378F25630DC6FCC936B5F1F3B7A +:10DFD00044BEFC7CA69DED1B5B21EAF9F2F3C0E791 +:10DFE000E87C39E5BA939520B79F52B906B95D34FC +:10DFF000F74407C8CB551C9F9A7858138DFB319571 +:10E000004B53689247C771A904E3ACDC4B5763D903 +:10E010007A690696DBC4DE5AA093261286EB344B4F +:10E020009A7D12C4CBA5A6F5AA9ECC141C9F759D03 +:10E0300019CF190EC7D90B38CE6803BD398E534896 +:10E04000985D6F7DAD10D753F4FA1E6E5FAE1288E7 +:10E050000FEEDB0B76DCB00EDBF1E855F19007B488 +:10E0600004170D8973EAFB80FBFA7B94E1DBF80768 +:10E07000F8B5ACB602DD9F5ABF1CDF5BB1265795E1 +:10E08000811EF764B2732D54C78E681CA127D380FC +:10E090005F880E15ED986EBFA9FDAA37DAAFDF7263 +:10E0A000BFD267BFB87FD0EDD7D8107B3F47B75FEF +:10E0B00063C07E09FDFE68DF3E6F16E2BA3430832E +:10E0C000FD06C576F29B38B05F02E9DD40E579B127 +:10E0D0006F1FDAAF74B05FB83E205F0BEB181BEF19 +:10E0E00024880335EFDBB41AE4FA277BD6A0DCE9F9 +:10E0F000B8FF3F652563FFFAEFD90F32FBB57B0F01 +:10E10000B55B6583DB2D47167B1F7141569FDD0A8A +:10E1100043FB2BB05B0BB286B05BBA7F85D4C99E44 +:10E12000629487283AEAFE8EF33158CDFC9D5ECE8C +:10E13000F0A7A3DF9DC7E9F8E9DC93222C2D792C09 +:10E14000E10DEE1871E170FAF1ACD82B8C37EA478B +:10E150007B6CFD9897F5F5EA07AC4B2F37C8F73C79 +:10E160001EAF4C88D28B421289037FDEF1A82D1E90 +:10E17000EC51681DD58B219FC7F4A2AFBF41F5A21A +:10E1800023E506835ECCCB1A542FE665C5D08B4EB3 +:10E190009BAF07FD94E4477C7951D608FDD21E66FB +:10E1A0002F07F34B0BB3985F599235885FD2DB0F83 +:10E1B000E2976ECB62FE6179D6207E496F3F885F21 +:10E1C0005AC69FBF6A98E747FBA5FBF87327B58639 +:10E1D0003A0077B2811F421C25EC30D2F3A9179B7D +:10E1E00043BFA5CFFBA9C0C6AFD5329C61DC81156A +:10E1F0000EA06BB45FFA1E8F93B6727E1ED3A85F1B +:10E200008279B42DC67D34BA5F1A7720B65F1A774B +:10E21000408A2F1EC22F6DCDE2386EBF5FDA6AE4EE +:10E2200077BF5FAA8FF24BB5E8972670BF541CEA00 +:10E23000BC22BF3452BD3BF235EBDD607EE9C82025 +:10E24000FAF765FD92DEDF53EDECFDE17EFDF33F75 +:10E2500063D6BF155341FF8E70FB1B43FF8EC4D2A4 +:10E26000BF94EB8EE3FBC77DEF2D4A34BF74E32AE6 +:10E270001DE2DCD1F964F5F21E01F813BD1FC40ED6 +:10E28000B8A681DE714A96A95EC72BB6A6AB71A36C +:10E29000D2FAF3152A2AF5463B7E64107F389C1D7E +:10E2A000B78ED2ED783DB7E3FE2F65C7471AE75822 +:10E2B00047FD7DEDB87554ECF8E6CBDA71BDBFA72C +:10E2C0009ACD7234E9309523A13FBE99F40B2A47C9 +:10E2D000383F2647A283AD4F497C7D8ACA91759409 +:10E2E00021DFB21FD634806E3A6D54BE10F7A3FF03 +:10E2F00037BC2F03F818C31D357CFEEE749F7314D2 +:10E30000DA7B8E5FF1DFF3A7DBD09E6C3A25E07AF3 +:10E3100066526E6F08F69791772CB81EAA55463054 +:10E320008FD41E215ED89791047814E2710C8FDA95 +:10E33000C8E75997788F27D67B46569BCF5FEB86E9 +:10E34000F5063BE675770BFE5C188790BE6E0CE811 +:10E3500063D22C1F8ED335C6EB019CAB2E99D9CF3F +:10E360007E7D63EF6FB9AEFE22520776509E8AE73C +:10E37000D68C1BC5E21CB53A88FECBA06FE346C520 +:10E3800088CBF13F0CB8C8A6CC5B1CB1E4E503C94F +:10E390005F3ACAA00756B717C79748F6E0797A548C +:10E3A000DA8B2EA7A2DCEC01FBBD46B0C8B02ED2A2 +:10E3B00021906238175213E2BDB01EA1E7FB377AF5 +:10E3C000F25BD8F9393496A3CF9FCFF14BC05515E6 +:10E3D0002AFFD5A3F2F57315D87EA56276BFD5EDD9 +:10E3E000AB86F60F470405F87F779AFF5AE0FF1BCC +:10E3F00009DFAFC675318E537408618663E5F0FDA1 +:10E40000BB24A0811DA9241CDFE4E3A874CBEC7D10 +:10E41000C36C6A570CFBF12AF97349366F1FB5DFDD +:10E420004B70ACD6A07D633E49B140AEA7045428E2 +:10E43000D7F9490AE262B388C2E86BDEF745E572B4 +:10E44000E928362F4932AC2758DD4C2EDF15FD7EEA +:10E45000A86F9A79E13D90AF7FFF459C02F8C03FDD +:10E46000299105B03FE6FFD5797D3AB78A1D32592B +:10E47000A96A208FD45E0500C795642627BADC6C94 +:10E48000AD2946BBF1C79AF7D433D4EE9CAA89A82C +:10E4900067ACF01EF4792C1765FBBE0FF38F2F0EBF +:10E4A000C01626E25FFFBE7AC660E76ECEF66F0446 +:10E4B0007EDF11E832FD7EFBCA1EF58CC1EEE9ED70 +:10E4C000757C5CE2F393644667CA8746A3DDF88BEC +:10E4D00055B3FBD0EEB909E0999F3AD8798C946096 +:10E4E0009A8D9667BB05DCAF3F870424887FE69250 +:10E4F000205EAFD4EF5C4FDAB1DD3CD289D7058026 +:10E50000A716A2FF93985DE27455D78997A95E5923 +:10E510001CC754386747AB24C50167FFF93A6A1135 +:10E52000CBBFE214A5C5E87FA46C05F5E427A304DE +:10E530007DFDED2730CF0295C9C59AD136940B8762 +:10E54000D38FFB8649DBC18307297DF0484CD1601E +:10E550002FA8FD52289FEA6B1C44A1A154E2F400AD +:10E56000C699F6EC4018DED374151305EC8D501CDB +:10E57000423C21BEB8DDA351BD7BECAF16539CA736 +:10E580005F7BF8786A27DE82FB201E4B64F82F2120 +:10E59000EDD5CB419FB36D88E71ECF79C811896156 +:10E5A0002F373BD738E0F9F9D31FC2F5CCBA931611 +:10E5B000CCC306F333CEA0858429DD36672F1AF24B +:10E5C0003D4F6703BB6FB0FACD5ED2204C86E73378 +:10E5D000BF36D6516E8A7B3797D0FA2458DF097838 +:10E5E000F0FC91D30932E8D5766EFF67973AF09C3C +:10E5F00092CDA7127F0278B2DE8FDE3EC9D68BF6AF +:10E600005BF703C23798FDB75F12F01C8A976DEA7B +:10E610001F817F47274E453A5B9476A2D0E7274C6F +:10E6200008103FBDDACB42F8FE5B22E587A80CCF8D +:10E630008717785CE22A1349B1414E6D65410F9C02 +:10E64000436C2BB211B037569A10171BE4768B200F +:10E65000607F36FE3E91DEDF41DEDFA5512C9E0756 +:10E6600099985E0A72FB2ACA2DA530CA33F6432B4D +:10E670007F6153FF6B54F9C0DFE13D65D83F3A96A7 +:10E68000EBA99DECC07DDE9FF1734A745C3EAF99AF +:10E69000AD9317D7EFAA2C069CC1EF54216FCFA3DF +:10E6A0001A32978EFFAA0A472FDB6710C4F645BCC3 +:10E6B0007D71AB0DF767EBF3296834978B4823E244 +:10E6C000BE5711C3EF940E457CBF7811FC6EDC0F72 +:10E6D000C1DF1F0EC10F31D6BBA2F7116466F3F381 +:10E6E0000FF93E8291BE7FDC26A879D9E02FB414C1 +:10E6F0005C87DCFBDD3959B1DAE971CBC6C4392A54 +:10E70000C84FDDA35E02F6CC129E81F26271523BCD +:10E710000CE7174BBDAFA0FD5F2FE4437E2639C841 +:10E72000AB58D678D9197E05F711077859EE64E50C +:10E73000B5B4AC205D591EEB0C592BE8382E757D15 +:10E7400073C8F8F20F34BEAC37C4977FE4E7FFBB61 +:10E75000BE1F7903F478D9BAC2D20DB4DF65E14C9B +:10E760005B01AE2FD462FFBA7FB0CE5CA782DCEB38 +:10E770007EC22EF55EEB41DC522881F1D81D640E7D +:10E7800096355E7686AF85F735E9F85959EE64E53A +:10E79000B5029EFBA0FB197D3CD1FE6549FD3E2BD9 +:10E7A000E0E1C3F9973B3D7326D4C3BB9444FA6FB1 +:10E7B0007E3E109E37DC00FF9186FBF2502E06F362 +:10E7C00073DF5ABF8CC7A12C0E533BE2F03D532997 +:10E7D0009B78D97B2CAACAE23C221FCCC77D59CC9E +:10E7E000BE7B480B1CBD64957AAD98277B08F2C9A7 +:10E7F0002F33FB6ECF969F86F79DAD8EB035A30C61 +:10E80000051BF3F0A5BC3EAE88D73B3BAFCD80F6F1 +:10E810004E567F07EFDFE2E4F5726823BC170AFB70 +:10E82000A9A07E096F6F75B37A9B87DDBF2D998490 +:10E83000686E499F4BE75C06E5CE67A11C5744888C +:10E840006C2883FA7ADCFD65386B5131D43F41E5A1 +:10E8500004E8B22D99F79BFF2ABECFBBB366EE0446 +:10E86000A0DBB665228B7B6E66FB5AE85FF81A5A0E +:10E87000DE59666B35AE576D1BC4EE7D90CD71864B +:10E8800072B6FEB8259BED73DC923D74BE52C7EDA7 +:10E89000F86370FEC818B0EBECFC914D70DE08BD5B +:10E8A000FE10CE1BA1FEF18753BE817E6D5D36F357 +:10E8B0006B1D153F70801EAE2341F457E4247B8FFF +:10E8C0007C976FF996D1E00FB20B701DA8CF8F48DF +:10E8D0004C2FF4BC41FFFDBFB399DFDC58FECE7B6B +:10E8E000B04E2539A95BCE07BD7EBF1AF955662308 +:10E8F00071C2D7A7DFBA5EEBF2B9ED5115ED8814FE +:10E90000A6F259C6E41370A08DE573302E04F91CED +:10E91000F355E47302DB47AECB67C284AF573EB713 +:10E92000807CE6F7CBE71690B77C780E934FBDACB2 +:10E93000CBA75ED6E5532FEBFCD8921CF4380DF232 +:10E94000B26599C8F2B22F767A161BE2822D7FDD6E +:10E9500059BD1CE4B5DC1673FDB7219BF94B69B1B9 +:10E9600066877D73D1766838FBD320F9CF825FA8A4 +:10E9700027BE0A18ABB68EEDB36CB06A9E35C0AF39 +:10E9800079DA37219E4B9D17B1C6B2CFB4FD45D67B +:10E990009EE5FB7ABB06BEAE4994C568BFD217534D +:10E9A000BD343CD73D6FAEA9DCEF7F36B0F579C5FD +:10E9B0008D7E2ADA2E0EEAAFE4350E38AF64F352BC +:10E9C00011717B6BE25A87F15C237B0E3BD768F3B6 +:10E9D0005286EB6FA27160CC7ABF18F3DCA3A7B2AA +:10E9E000257E7E6527EA0BA1FA02F1997DFE1A1FAA +:10E9F000E8E1CEC54C0FFFBFBC7F45791FFD8E07F8 +:10EA0000E46CCB5F2DB84FE683ECAA26D83773733E +:10EA1000B66F7A4E797FFE121DF789896B9B21CFE5 +:10EA20005D23B808D8374B62E834BC07F3A16023F4 +:10EA30001BCA06F2F3540D4D7D460FFCFD436BFBE4 +:10EA400093F8BE019CC044E3C1D38005D0D46BFED3 +:10EA5000936D388ED3427B0ED4D7E784173450B9E8 +:10EA60003E05FE998EF3AE277F8EF5A7F83EFD2773 +:10EA70009FEC6C82FD3C1F0804F360ED3B09FA3EFD +:10EA8000986A78AFE5F443399877DC616FCF015C21 +:10EA9000E6747CFBE98740FF1E4AF4B2F888F1E196 +:10EAA000ED25E35B8C7E69470EB3E37758D8F9AF69 +:10EAB000D1E35F9FA3BF57D93991EDD3F2951BF3F3 +:10EAC0000C8C340DF9EA1D01412D32E861DF7857D5 +:10EAD000DB997FE4E33DB53A13F75B2FB5B1F19EC7 +:10EAE0008AA3E3C5FBE2861CEFBA1C16D76FE6B813 +:10EAF0003DEDCF5F0B7CB9797C29AE7F49ED774046 +:10EB0000F9D46DE353A0ACDFFFA1C0E452BB3921BF +:10EB100064C47BDE5E320AF3CEA57C7F21F57239B8 +:10EB2000C6FD877770FA1042E78D71208B33079D01 +:10EB3000E777EC66BE7C87CDF30E9827EDFF741C5B +:10EB4000E7CB77E2BCFCBCAF98F3FCA9CE17FE1E66 +:10EB500006A57F8E711FB73EAE4773F4752036BE93 +:10EB6000E1E8727A09A50B1D4F35E7EB7074C17AA5 +:10EB70002AAF4B73FE0DE5B19F9F09667EAE61F231 +:10EB8000B7D4CEE6792A9EF3734DE290F37C3987B1 +:10EB9000C53F4BF9BE444AFF89B1E87FC5F3BC8D40 +:10EBA000CDF3B111F2FF43BDBF41E8BC1D0E821D84 +:10EBB00089DC2D6172D73672FAF2E7C69EF72178AA +:10EBC0002EBD7E36AF6A7B15417CD78BE7C46CB215 +:10EBD0002B75F4962EDEDE339920FED1555FB80FEB +:10EBE000DECBDECAE335FBA5F1444B65FBB9A84794 +:10EBF000079C04F1A7AD6505781E57773DFBAE99DC +:10EC00003C6D5E6ED1847EBCE94C1EF35F6796B1AD +:10EC1000734DB755C6AF34FAB1F50A5BBF1CA508F2 +:10EC20003CEF92175428709E5B0B3BCFAD52C279DC +:10EC30000AD9849D479EEB7500AE6325FEA65BE86E +:10EC4000BC3F587953F4F70808E04A83C5BB24EA6F +:10EC50003CB7B72AE50570BECDF97409D7E7F16F67 +:10EC60002A2E4D2068B86CBAB7B60EE86E51022055 +:10EC7000BFCBEA4B84EFD3F23B0545B87E9672DDFD +:10EC80007F5E86F32EFE5363785AFD0C1BCA67D74E +:10EC9000FE7C8C93536589741BE29C2E6B10F3A051 +:10ECA0002E41F1EEA2A2781F61F5383E03CEF5CEDB +:10ECB0002DA3709DA58B9F0FFE767A01E227DD9232 +:10ECC0006F019CBBA439D9FA636233552438A77A03 +:10ECD000F76C0DB610CECC5994908B7686307F7E33 +:10ECE000CB445CBF4949547640F9DB27AC787ECDF4 +:10ECF000D1A9D7E3F7C42AA6CDDB0BE7D29D7DDFF0 +:10ED00008EEFFD574C5BBA17F66775BF1F87E50698 +:10ED1000CA6FBF1DF2016AA1E1DC417AEDA6FEA92E +:10ED2000FBA87F329C47D3FD1BF94DC0BF1FB2909B +:10ED3000A006FE9D68229C9BB3D326BF09F9CBF9A0 +:10ED4000745169C17905D3D9B93A4A06BBB6F36B98 +:10ED500058E4E7EDA443BB9E7C1D17F767409990EC +:10ED60005EBC6EFCC282F9C371F722CC43CE060BA7 +:10ED7000F13D23AAC72EA047D3814211F4F44C3EA3 +:10ED8000B3033759424D707E157997BDC770A18D79 +:10ED90009DFFF6E7598E16C07F16DD5AB709F66556 +:10EDA0007CAC4D4A81FE3EF66DB365D1EBAEAAABAD +:10EDB0004A41CCF473065AE17C463BEC4B95F97919 +:10EDC0008C1E7E1E233B9FF1109CCF48EB7FCAF325 +:10EDD000A5769E2F3D57A362F970CD5C2CFFB2C67D +:10EDE00087E5176AAAF1FA528D9FAD37D6ACC4FAFF +:10EDF0007FAB0960395CB30ECB7FE0F398BDA56AA9 +:10EE00001BAC8FADDA63C1F725C61C38FA07781F33 +:10EE1000F51E227A61DCF7781EBF13DF93A56588A3 +:10EE2000F73679440278D93DD3A7A23C2EE854DFC7 +:10EE30004885FA7984C07AF33D8B2D9877DF35CBFE +:10EE4000B10FBE4B73D79E63B9DF837A55C2F78A81 +:10EE5000883778E723B4DCB47031FA9B16AB628153 +:10EE6000F79FDECABBE873D040718795D4A578A11F +:10EE70004CB4B9546EA7947DB2EA395AAE79AA67F8 +:10EE8000BB83D2555E58D6912A43F957582E4AACC7 +:10EE90004CC4B845FBD5F6E3B07F568C4889707FEB +:10EEA000DED4EDEEB1D47F8092CD84F277E53A09DD +:10EEB000C6CBFCC47F857EB55D93E07B7B273A9211 +:10EEC000697F6FF1FE27783EA9C4E7F3F22425F9A4 +:10EED000588AA1DE5B2CF07DCE3DDBD522181FEBDE +:10EEE000FF4CA807FB53FD1589A3E9FDEBF2A66FC4 +:10EEF0006F50063EFF6481F728E084E79BD87E1DB3 +:10EF000038E60BE8E5D2C684EA8481F6A46B06C134 +:10EF1000FDB37AB9C9AADD09FBD6BBE2D855FF7D9E +:10EF20007921F31FF7E7B16B531CEBF73CCDF75B8F +:10EF3000F207F6AB1430BBDF94CCFAA1727E1BDC77 +:10EF4000BF6C71BA0876E1A4EFAE7838AFBEAEB947 +:10EF500000CFADBE98CBECE789AAC21CC0F39FAF2F +:10EF6000B7E3BA4A57BEB200E24D4D70B4EFA7F70F +:10EF70001738FC8BA09F826689C07C547F7215EC89 +:10EF8000555A307DC79B205765C4D10EF1EA4D79A3 +:10EF90004C0FBB5B67BF713DD88743123E67F14D95 +:10EFA0008FCE86EF339E518BDBC1FEFD739A9DF9A8 +:10EFB000A5DDF6D068DADF2B69CF67DDE584F7F6EB +:10EFC000D4785CD7AD8FBD3FB83A8FC977C1C6A79B +:10EFD0005D0AB523179C22FA8FED4733DF5450BFEB +:10EFE0002B2520D15989D1E9BEE68AD65A3AA47A8E +:10EFF000EE4F6EB60737B9205FD86C51A0FF2E6E6A +:10F00000EFB466A105FCE3D9FA543CD7FDC2EE92F9 +:10F01000BD90AEA9FC7975F5ECFC582279E7825DCC +:10F02000BDB0654AAA116757F3F4F7A9A3CE75D707 +:10F03000C8AB45E9FDE7B81BCEA1C0F3CEB3EB9F4B +:10F04000568DE7BAE7B4FDBA02CBAAA357983EF0B3 +:10F05000FC736AEFF05CC351FDDF7B1580AE5FF699 +:10F060007BAFDDF0BD5798FF20DF7B9D799E7DEF64 +:10F0700035937F6F25FABCF43FE50A31CF79EF0A6B +:10F080001EC3F3E8073BE7FD236B08CFB31FF47BF8 +:10F09000AF0D6F55C03996837DEFB50B3EF050062E +:10F0A000FC15F0FCC7E879DD73B11DCF7BBFBF75E0 +:10F0B00084E7BDC3F71FCA067EDFD59AE6B6419C3A +:10F0C000D0946FD64BFD2AE7337D83F35854C37336 +:10F0D0004607E3896A88CFC734A798CA634359A60D +:10F0E000FBC7B71598EA27B68F33D54F7EA1D45406 +:10F0F0002E09CF34DD3FE5B54A53B9BCF37AD3FDD1 +:10F10000D3DE5B642ACF882C31DD7FF5F9E5A6FAE2 +:10F110007FE85D65AABFE6D21A53B9827CCF74FF3F +:10F12000CD76B6CF86BCC5F4F66DFEBE8E4EA7F981 +:10F1300079CCCE54E6317AD9A9BF0919FA7325687A +:10F14000F8BD0B5837D44CEB84340131DCF70DAEED +:10F150008FC9D72E1E729D40C727B7733FBC8DFB4A +:10F16000E18DDC0FFF80FBE1C7B81FDEC2FD30ED93 +:10F17000F77DF8CED6674BD99ACDB209642FC4B5C6 +:10F1800009C5EC38933438808796E334761EA7DFC0 +:10F190001BD640CE24A7F93C1E7956BC691DC55527 +:10F1A0009662AAB7B9B34CF519D505A6B273C238A1 +:10F1B000D3FDF145A5A6FAE8EFF5FD2C97E527DD8F +:10F1C000447E13E4B7EF7B81BB048E0B6B150F43BA +:10F1D0005CB74B6831BE4F40CBE1B849C37F2F309D +:10F1E0003D8F30FBE65105C87FDC4EA90BF6DB10E6 +:10F1F0009FD46B5C477F9BE30595798FDD08F95AB7 +:10F20000C9E4F96FC0BE2FF22B11BFA3BC3B5761FD +:10F2100071BDEFC15CC0E16E989C33E52E7ADFD101 +:10F22000DDCFF37317D9776A57F69DBBF85E00BF41 +:10F230008750EE14212EBEF84900BF37FBF9930E1C +:10F2400011E2519BD58FE7277ED43C06CBEF83FF9D +:10F25000413B6C3E8FB13558FA660DC4CF6D6C7F63 +:10F26000C4AA4B765CAFB3257A5DC9F4BA17C6550C +:10F27000DE7F6EE3478DEC9C455DEF873B97FFD1CA +:10F280005CE69F873B97FF513EFFE8F3F97F6433CD +:10F29000C70F8444F0BC938840D66CA571D45ADE65 +:10F2A000EE648186DF5971291102B8E4C98208E64B +:10F2B0005DE745126831DC57388FE4821DD6EFDBFD +:10F2C0007EF400E62BDDF01D6A7A4B5D5B217E87C4 +:10F2D000BAAE9E7F87BA3E19BF6F32204EE13868C2 +:10F2E00037F84583BE9DE0FA7C81FBC50BF585A60A +:10F2F000EF529FC8B3C5F40BD17E60C0774EA2FC1D +:10F3000061ACEF515FD1774E8257F69D936EFE7DD3 +:10F31000F3917EE7E4D53C21A6DF1FCEFFC553FF66 +:10F3200046D83C637EE7A4EB7C18DBAF1CF43B279C +:10F33000E198DFA37E00BE7342F9707768847E0F88 +:10F34000F29BB2A1BE7352D904DF07EF0A168AC638 +:10F3500075998FB9DFD7CF59A8CEBB713BE8FBCEEB +:10F360003C76FE0BB5434D3305944F0DDEF38C9682 +:10F37000CF8D5F4CE990848171B27E5EEA47FCFBE1 +:10F38000D21FF1EF4BAFE2E7A5AEBA742F3B2FB51A +:10F39000D97C5E6A57233B2F55D763FD7C515D8F27 +:10F3A000FBBED354CFF2BAE1BFD324BB8CDFD3FA78 +:10F3B0000F3D0EE4E791747964FE9D268D7FA7C909 +:10F3C00067FA7E573CC725FADFFBF3E3779ACEED69 +:10F3D000327FBFEBFC20DFEFBA61AC7045DFEFFAA4 +:10F3E000BFDE1509DC008000000000001F8B080054 +:10F3F00000000000000BED7D0B7855D595F03EF731 +:10F40000DC5792CBCDC9930B8470F280843CC80D3D +:10F410000409887812220D0CE24504636BE526A0EE +:10F4200006411B506BDA32E58424185EF182D8A1C4 +:10F430008AF486878D2DF54FAB33E3CC57DB1B4029 +:10F440004A67B4C6173AFDB5FF4D4004E49F89886A +:10F45000959962F9D75AFB9CE49E736F48A83AFFCE +:10F46000CCF74DF8F4649DBDCFDE6BADBDF67AED03 +:10F4700047AE5C819F1B199BEB1459289FD1CF1578 +:10F48000F8AFAF6D49A2DFC5D8E10D00E4C13BADD7 +:10F490005E654B4E152B82FACCDB22B9A2BF6BB551 +:10F4A0004AC752CB1853999D1D8427B33285A53284 +:10F4B000B674B473DF1681B1DA96C5C5D8EEACF177 +:10F4C00095923C1DDE3B584317B4F7B685D577B906 +:10F4D00006FBF9651E5486F213932C8CA5413B8ADA +:10F4E0005596AE634CC08E64C66CAC81B11CC69A96 +:10F4F000EB99DF99832FEF944E1752B9E50A3CB789 +:10F500009465EF10A0DFBE4E9109598C9DEBE4F499 +:10F51000E8ED9B9FBF073A431174F6D58BD541C0E8 +:10F520002BBE74A53BB768F07D896C23BC4ED7DB3E +:10F53000AA83D0DE56EFADEE5C5774F9076BF8F78F +:10F54000E67E4A652BD13335C3578AF47FE3FE87C5 +:10F550009D88D70E81D520FD8F67F81293E13B7609 +:10F5600009EAA7335687048B40F26481BED3DBD906 +:10F570006BC237B34D508231E8FB389FF371C71827 +:10F58000EF6F73811FEADBA2F72043BA52EF5809ED +:10F59000F0074ABC57007EB2CB501FF8EB4056E64E +:10F5A000203E3DF9F8D4FB096E70D273DF068985E1 +:10F5B000A0D2810D1E829FD920D3B373433E3D7FDD +:10F5C000B2C14BE587369413FC7846D7E178908337 +:10F5D0004F6F63A52AF4F3414670633CE2E163A5F3 +:10F5E00007B9D8B82B80CEB0C081C4CB890CE5A5B3 +:10F5F0006F4DE9FE2D306EF7CBE944B7835948CE05 +:10F60000FE8C7441DDC7DB447B26D4FBC6189159C0 +:10F6100024FC32D4B3016047409451CE986AEB0B7E +:10F62000437D05FE5DC9C626D7869E063CFCE50ED9 +:10F630002908F5D37CD6BEB073506E99DC107A09D8 +:10F64000BEDF51E1F46D81F26FB088F22C44A1214C +:10F65000F43E94AFA84960212F63A7C2BF912C4804 +:10F6600087D7CA0E66217EC6FAA9EAE26E0FF2D5E6 +:10F67000238D593C8AB1AFBBA4451500F7A5EEB365 +:10F6800013A926790696856D30CECD8A8FC6FB8369 +:10F69000FA15EDCBA8B52AE9743ED6F30B28D7436B +:10F6A000C92F4EB4D3FA3C84EFFF753CA371DFEA57 +:10F6B0009DEA96419E4E66B06A9C673789AEB54713 +:10F6C000800F1794D92938D6153332324FC2FB2D0B +:10F6D000F976E2B3244A7B13802EF6BF1DEC20207E +:10F6E000D7DBEDCF4B8E90E3ED329727A03CDD5278 +:10F6F0000EF571FEBA88FF82C50374D40BCC15C118 +:10F70000D7CE7C91CF5FA6B82B80DE328D5E80C5D0 +:10F710004C001C1E916DF122DCC0420097F85D0D7B +:10F72000C87FD6C3F9A98F1F13D7879E06BC3E8515 +:10F73000F113A17C748D71FC4A8E3F187A09BE9733 +:10F740002A9DBE44C0A3C4341EE930FEEF43F96ACB +:10F75000183F1C7FF3788DC65FA0FDFA3257300446 +:10F7600070E37BAF4F391AA1D7B6C95DC7C642F95E +:10F77000B61AE64539AE0FAE1570DEFE441E957A18 +:10F780003A012A14B122E43BF0D78B745C784BF435 +:10F79000227FA59C9013E5447A5E945468F7FCE5BB +:10F7A000BF71FB809F67C38E6AE4DB671B7AA61C70 +:10F7B0000595F11CCC33EB44C6BA609E5901FE0599 +:10F7C000CC33845F807986F0DFC13CC3E78B30CFD8 +:10F7D000F0F98F30CFB0FC9730CF10FED50685E022 +:10F7E000D0866A82B757C6D747EA9FA7353D707162 +:10F7F00012D723BA7E0CEFE1FAF1C33DD7A61FC39F +:10F80000A81F5DA8477619F4E39B9AFE3B3BA01F17 +:10F810000F1BF4A35E7E7E08FDF8F6A07E7C3B52B3 +:10F820003F8E60FEF89D387FEA879A3FDC2E5CEBC6 +:10F83000FCB9DB59618F27A165DE25998CADDCC54C +:10F84000F5ECC9382193F49890BED69139D8CE867C +:10F8500009DC5E85B73B6A90BE0FE37664C6933DD4 +:10F860004C2E1563D43BFB34603E96B19ABDBF7EEF +:10F870004C05D29FB47BBBADD0EE9976E6DD47F365 +:10F88000241CC24903FA71DD9652C61ECA94E9BB14 +:10F89000B7B2D5077C80875B0EB375D0CFEBEF2571 +:10F8A000DF5C86F8B4885E108301BB3AD81F1FF76F +:10F8B000B82CCD9E32EB29D48F1655605740CF8F90 +:10F8C0005F98B2A80C9A1EAFBDD7E7058B84C568B8 +:10F8D00038DB295B1A5C884F9826F7190B6BD80721 +:10F8E00078F6B6E46C44F8EFDB9857CC1AC43B6763 +:10F8F00021CB64D983783FD30F3A1FF1F6D882A881 +:10F900006FF6C5F9B74CC676C6D8CA90FE7DA50D70 +:10F9100099B746C8CFB22C4EC78749DC5ECE382295 +:10F9200052BF273BF2F66D2461F833D94DAB6637F1 +:10F930000F4EE272FF51BE57407BC6E42CB7AF18A2 +:10F94000EA27D96B681C050BF9276A87A303F538EA +:10F95000C08CF4FACFC47D880FC8966C07395B85DC +:10F960004D03DE1FB938BE8F6F11F701EBD819B404 +:10F97000DB40479FE4B37B23F89DC2ACAAC62711A6 +:10F98000F9B80A61274A190B5DD16C9D355D6B177B +:10F99000F05C057215E71EACA7F33F3F1801C37F6B +:10F9A000859D03ED125CDC65844B5E34C2A521238A +:10F9B0003CEDB8119EDE638467BC6B845F47FF0B30 +:10F9C000F5BDCA4EE4021F2668F38DC9FD02DADFD9 +:10F9D0004CD4DFA04F5D2CDC540EB0AC38FB519FF3 +:10F9E00067AE073989C05B7EEFEC7B6C4AB4FCC81C +:10F9F000EF25F45AE0FDCCB0B9FEFDF7637D9945E3 +:10FA0000BC077E6437F654E3787F5A666168E76F17 +:10FA10007185ACC83F65977FE77CE8FF668F48FE3D +:10FA2000CC2B4FFF714D163C5377837F9A32382E83 +:10FA3000F3165B7C382FE76529711668C7297BEDC3 +:10FA4000D8F6F6CFD5BB502FB341FE5BAECC181C19 +:10FA5000FF546DFC53B57285B16EC4E73B9A3EBD51 +:10FA600079B6CDC0B7851E9B61DC6EE837F2F5C66E +:10FA70004B4638A25F7D9E19E0E4F92D24E7171A62 +:10FA800059501486AF9F641108E9CC66166C063C89 +:10FA90008F835D21E74E55DEC171FC1AAFCAAAD92A +:10FAA0005A2BDAE17A1847B48BF341D33C534672B0 +:10FAB000D910027855108C5B041DEDDF150FA31FC4 +:10FAC000A5CE724807D14E67D8683C9D9A9DFEAC82 +:10FAD00057388C76786FA5C7D724458F776A6EAD77 +:10FAE000900CBFA7D618C77B7CD9BA8A1C62B2F427 +:10FAF00031DAEFCCF2F8C3E86F495F2F041F015EE3 +:10FB0000573D549103ED4E509C1750DECC72A17FAF +:10FB10002F557AE87BA7DCDF84FEEE7825BF1FFD3A +:10FB200085D6CB0FD2F72AB0F0600CF91CFD50043B +:10FB30009E8885A62FE9E73A9CCF281120022BBD8D +:10FB40001559287FBEF800E201F39CF519F525EB65 +:10FB50008B1887D6F5EA22B4B32A7337603C147F3A +:10FB600089CB636B6872A51DDED7BDB52218075D12 +:10FB7000D5E5FB9C4E2C6FAB4D41DD5517BAA31A52 +:10FB8000FBA93B30CD1B076D75071FFF9D08F52FA7 +:10FB9000740AB203CAAD97046A277B2523FBF06978 +:10FBA0004008A2BF5CD19965C7FEEE95D85C1CEEFB +:10FBB0007B03A0F0D16F85DFE392E0B96D871FE191 +:10FBC000BA5C274B10101F3BB5933C3FB7D20EEDEC +:10FBD0005C7C4B24F91ACA4E5A2F590DF3690BF865 +:10FBE000057D367CAA0AFA1F2D1BDAE859972F1FCC +:10FBF000C3F9155FC4640BCCC3847C288FE06F5DB0 +:10FC0000AA6C17A0DC26F1729B04DF458C47769B1B +:10FC10009D292964C7C83E32F5995B141E2742F01E +:10FC200008FEDC848EC7D422B23B2AD2A3DB9D5DC2 +:10FC30001A3E43D91B6685FADC9E4A5B92F87BB478 +:10FC40005F7A7D779B5D41BD832E270341DD04ED07 +:10FC500005F306CB59BE4CFC6C071EE1F730DC996E +:10FC60003EF0EFDFA855A64F87F71FB68A6C2354E6 +:10FC7000FD308B856EC4714FB3905DDB34A970AFDE +:10FC800084718D90BECE5136C8BF4D9BF332FBA020 +:10FC9000FFDE6D02F9E72079F665A306CBFF3DCBC9 +:10FCA0004EFA57877B6BB8DF84F5B05F6695EC182A +:10FCB0005FF48DE27668C9A34DDF56A0BD380BF323 +:10FCC000A37D5CA2D93FF333ADF19F9553C0DFD440 +:10FCD000C6DFD233EDB690DD0F76714DD7628F0A55 +:10FCE000EDB57E2ED644C6E3FAF366EDFBA1E4A3A0 +:10FCF000952DAECE42BADB20CE043EB4A6EE2479DA +:10FD00003B3DB13E5DA4F911B02F2B463C785CD051 +:10FD1000F7D7814DCDE447B106D427A7BB5765E29D +:10FD20003CA8DD5D9B1207F56B6F0BD8BF0FE56933 +:10FD3000F2CA0611E6ED3DA11FCEC379718F6F5651 +:10FD4000200E619F22AC003C574911F390217DBFEA +:10FD500023BACCF331275322FC531B5FA1F277EC7B +:10FD6000FD56CD6F91507E6E017144580443DD34D1 +:10FD700006E4CBF7C9D1341C37086A508FDCB6E4EF +:10FD8000F3A32F40F9079285E099456A338AE47618 +:10FD9000B422506FFB4E4B10FD823C4B48447FA376 +:10FDA0002C9B824776030B8B4CD4F409D4ABBD2C2F +:10FDB00005D17EBDBB609C3D0CF8D78249E9328DF0 +:10FDC0006B0D3C9F745DB062FDB3408305F03BBB9F +:10FDD000F222C16A6A62FF44A0E3BE851F1FC5F913 +:10FDE0001E5CCA826C1CE0DF52B12915E0830CE274 +:10FDF000E8D900D78CDB84F998632AC0190097777B +:10FE0000517EA60F8D01C2D54F1DC3FACE2687C5E0 +:10FE1000321BF3331FB7209C50E262C86FABD44F44 +:10FE2000F0CD5E0E37BB2E107CACCC45F4BF51FD3F +:10FE300009C10B677298315E7FC16C17C575E79772 +:10FE4000BED43916E4C091CFF990B0F3E330C2B517 +:10FE50002D3BE68DA57E264DE56C19B05FF62B4057 +:10FE600007D99C74F29748EF6EB5747919B4B772DC +:10FE70001253AA20EEDC2A74C90CFAFBFA33A53B14 +:10FE80005A66824FA695BF95A79773BDF1C0A40F80 +:10FE900096A8C0DF0451D323EC3F96A01E81EFA9A2 +:10FEA0007E7BE0DF1E3F3A73B0FEE91F7F4EF51305 +:10FEB00067321F8E8795713B0DAF54F2DBBCDC1EA1 +:10FEC000C46353A024964EE271733CE01B984AEF42 +:10FED0009551A037E201F1F4647AAF26A2C1CB0FAD +:10FEE000D2B8B7DCCCF5CE0984611C7AEF04394373 +:10FEF0003DA280D8007C7A0D93D1CF67F99C1FF189 +:10FF00004C0D5E4101F307DD28178F75AFDA4E7A8D +:10FF100046B1925D486C7D70113927DB056922E09E +:10FF2000B722EC3DE6C138F780D08528F65A031495 +:10FF3000B79E0954C82ACE8B491309DF95E186453F +:10FF40008CEA89A9027CB7DAE9DF3E0BEADDF2B878 +:10FF5000908AF1ED996DA56E85E2FAC0EFD0AF3BC6 +:10FF6000B35D94B600F42113286E5D894518176DB2 +:10FF7000033F99E63593ADC817818FD7B98C201B05 +:10FF800003E51F0A72F64E1827ABE627C5EFF9FB0B +:10FF90004704F0734F6ADF830E0F6ADF135F133479 +:10FFA000BF3D619BA84C063DFC4436FF6E7598CF63 +:10FFB0009B957B8420A620E28BCCFE53C33C37B4B8 +:10FFC000770E94ED9300AD0C54507C7ECE16CCC4CD +:10FFD0003CE5B92CAE1FA3FD26BFDB01EDDEB72744 +:10FFE000290BE7E39E6C1E1FDD1BE86055F07E3594 +:10FFF00008B40C637EDF81A476C4F7DE80C8148C5D +:020000022000DC +:10000000E3058E8FFAAC40F89F027C118E7F56E894 +:1000100060488FCA8EE582FC261067A0AAAF4B1DF0 +:100020000BDF8FC1148B17E5A98BA1DF95AAF9CF40 +:10003000408FC11F7973E1DC6EF4B3C66BF90E73A8 +:100040005C764650BAD1CF522B9C3EF46756AD3405 +:100050007EDFDB32B71BFDA7797724D0BC4D357D21 +:10006000FF4A4BF3119C0EFF949D4DFAF0DE3D428A +:1000700012D23B739748F3B13DC93FAA0ADA6FDF4A +:100080009C93DC0CF8BB53D46F63BC691FF356031D +:10009000D2F94F654516F413ECB6863A84ED4FE776 +:1000A000632809F1AB7FD7629497272DDE7D5C2C06 +:1000B0001E46799DD79A62D902EDB46749EEB779A9 +:1000C0007C978CE535FE8ABDA82F14353309FD9B3E +:1000D0003B562E9EAFC0B3E2B66401EDC50713F9DF +:1000E000789CB2C995242F9B9917F99D0D7A06FB30 +:1000F000855269FB4CD44BD91B51AFE56E4E24FEA3 +:1001000066CFAAB1A4437F936C0D63510F6FB7FA0A +:100110006A6AA17CFBEC42CADF9C9B98C5E31ADDAE +:10012000BFD7E436FBBDAF1D47F9BC355BBD07E962 +:10013000CD58FBC2EBF3A09FECCDA9C497A1E2047C +:10014000735CD03491DBC93737AE207D7BA6C926DE +:10015000EF4B1DD4FFBE3D8E0E94B7DB52ECAD636A +:1001600052699E3408DEE83802E2CB97BF8372966C +:100170006525FB688E2B30D1998EFEDE9EA4A9C822 +:100180005F961FF17D76B4BCAFD993F55815D45B5B +:10019000A398DBB97A3C11056BF1A01E470CC4177C +:1001A000ACC18A71A1ACE5F5AA9940F1C21A2DEF54 +:1001B0003A9FB1C39867BD4771FA308F7A4F17CC19 +:1001C00090C8796C8A27461A3FC8EFFD8CFCEC1367 +:1001D00016B717ED9A393EE8EE3CE29A86FEF31E1A +:1001E000ABD701F48BCE23CAA969E09FA4A567FA17 +:1001F000613C9BB5FCBBEEC7FE40F3639FCFE5E3DC +:10020000D87B03F7B36B41FF6C443FBBE5E7F630A7 +:100210007CB77ACF625F05EA8F16C11B27A39C06C5 +:1002200037A1BE550F0A5DE8FFAC0EFDF018E613CE +:10023000D6801F8CFA7A4D7E68930DFDE21A568A9D +:100240006C5C736783505714ED1F8FAE31FAC3EDAA +:1002500049207731FCB13FE7F0F9D19E15BBFC375F +:10026000B93C7ECF69B33025A2BD898178A644F41C +:1002700097B73BD9004F0E8E35D42FECCC36941760 +:10028000771518CA4B5E9C6A804B43B30CF5A71DCB +:10029000AF34C0D37B1618EACF78F756033C33FC53 +:1002A0007543FDEBCFD419CA6FE8BFCF507EE3A5ED +:1002B0007506B8827DCF503F797E55228EF370F15E +:1002C000C4BE383EBFF795AA86BCD333395C0ECE88 +:1002D00098F24E7DCF1AF34E299AFDCAD0ECDD87F5 +:1002E000F9013BC2F9C18005FBEFBBD94E79C13E94 +:1002F000CC3BA13E7BD6D181F1411FE69D107E5AB9 +:10030000CF3BF13CD5875ABEE92CE69BD0AE68FACC +:100310004A8F47CF09B21BFD06758720A15ED4F135 +:100320008DC82351FE49CF4799F34FD40EE8C794A7 +:1003300000CF3F45E4ADFE4BE49FAAFF8BE59FDA7B +:10034000274B9938CF7AE3B81CCCEEEF998BE3B307 +:1003500020378BECC39C4BFD4710AECEE070623E65 +:100360009783EC463E8E9F7A6CE4F73FD3CFF358E9 +:100370006A9985D6599ED96D09A15D9877434590B4 +:10038000C749AC2A0EFDEA324142BDAEE7B18EED5F +:10039000BEB8068BE72D5EF7FB55E87F953ABC1398 +:1003A000E52F2F9FB52C6F64F9ACF9F946F86BF285 +:1003B000B5D993AF3A9FB5DA94CFAAC77C16C84592 +:1003C000FD21A3BDF9EF9ACF0ADB1AE8FBB0C02EDE +:1003D000A823C867FD7526A379D4C7E4F6C9689F2A +:1003E0007683DCC958EACD443DA3EB8D999A9E3BB8 +:1003F000C09478CCC3ABBBF97AB1D9AEECD5EC6282 +:10040000F60FF7BB65F4AFDB785EE2B1EEC9ED3312 +:10041000E1BB53814A2BD9430CE000BE6F77C58105 +:1004200026A0EBCE5CBEFEB3D411DC8A7692FD54DE +:1004300094691DD8EAB7DF0A789C8321C47975F6E0 +:10044000876BF78EC1EF3BF7BBB3011E97CBE5B2CD +:10045000AF53CB7F58E5768C573EFCE1B4942D1119 +:10046000F865E4F2BCC269166C2F8F8C4B3479D7D7 +:10047000FDF2F14CFF199033E10A86C49DFBD5597A +:1004800065FCBB09C0F7F17B7ED34430E815A11CA5 +:10049000DB31E6E719EB213D346E400F755520FD49 +:1004A00092A687321E32FBF56237AE638E45BF1EC1 +:1004B000CAC7AE31969F867988FE910AFE11CAE3BB +:1004C000F5678CE5F0D38DEB98F53585D49F649274 +:1004D0009BC5DAB898E93EB7EB48D34CC45360FDEE +:1004E0004C8AA6FBAC2DA86239C47532C66B663A3D +:1004F0003376BF29603C27599894581E4DD7B9339D +:100500000DF3705F88999EFAF35D9B30785EBDC7EE +:1005100066CCAF9AF0EE6BDBEFF693BE92C9EE1DA0 +:1005200068BB8DC657DD2532D46FB33AB9BD9D1572 +:10053000B07460FC773DEB6AC6B8AE0F3F9985E3B7 +:100540002AECC478B53D8BC337EC5FB153CD40790D +:100550007CB61DE93A15B03094C7BECEB9142FF75A +:100560001D10245CF7FCC703B56EF4034E6B727765 +:100570006AF70A92B7013BAAC9DDB9DD7CBDF3DC9D +:10058000EEB9EE9C88759EFB50DE80DFA798BF7D9C +:10059000562C7933F199B580FC5D37287F19BBF76C +:1005A000AB3323E4CDCCF7F1E16E1AB763204F0CE7 +:1005B000F506B8A188FF388551BED73C0EE3768991 +:1005C00014374AA0CF709C50DE507F8D057942BD14 +:1005D000611E9F539A3CA935092C96BC99C769495D +:1005E000EE405EDC40E7E95D4704A46328F98A0F2A +:1005F000BC59C117FF41A58D89A6F3F49990807469 +:10060000AE023A65299A2EC090F262D1F2D540F23C +:1006100075EF01DB3078331AA7EEED8F6662BE2DE1 +:10062000CFAEEE4DC779F4FB38B60F4812F65667D9 +:10063000A23F7FEA63FF0429627C974CCCD2E80D8D +:10064000B82DC4FF1E37EE7B90C780629B81F16F8F +:100650000FC5C3E7CB5C98C364E72F3F42F1F0EAD4 +:100660003D4E8671C2EA4B33EE2263BBCD41FB4463 +:100670000E04EA7A900FA7BB4401ED9E335736E48F +:1006800053CF77AD90701EFCAD5D79213766DC519C +:100690004A7986D560CF1CA5D71E7F88CE6314F714 +:1006A0000C15874CCFE1F80C178F0CEFCFD4A5AE0B +:1006B0008CE0E357BD0EB77420DE6EA67CE6598C45 +:1006C000B7CBB44986F176DB40BC6DC33C4CDF1040 +:1006D000F1B6D9CF392BB0D6C6B2C1F8DBBC8EA7E4 +:1006E000C7DF756D3CFE36AFEBD529B6ABAEF37DFB +:1006F000D57ED04A931F748FB6AE774FE07FD6F584 +:10070000BED8BA5E7011C55D7FE9BADE9E69345FFE +:10071000BB3B1FE4EB7ADB8659D7DBC6D7F5EEC1CE +:10072000753D19C72F8BD629400FB038D40387F8F1 +:10073000BADE1A5CD7CBFAEAD6F5406F5C755D6F0E +:100740004D6AE84B59D7EBCCE5EB34410FD7B3C931 +:10075000363909E9BFD02632356B707FAABE6F11DA +:10076000D73731CE36D3F503A003F723EAF0E86D8F +:1007700082126BDFD11F35FD71E1F834D68F7A6DAF +:1007800097407158FAAE8F435770DE74894199E7EC +:1007900075691F5B26D37FC2E4FF4DD0F25DA36B6A +:1007A0002C86FDB08CF593BF970EFE1ECA555FD701 +:1007B00083028E5BFACF04968CF3BDD1DAC7E7993A +:1007C00093E6595FDB2764AF3F457B0DEDADDE6DF2 +:1007D00033EC734B37ED5BDB6EEDA73CEF76B0DFB0 +:1007E000AA84F1B1B1FCF79A7DD1F994AAF1291547 +:1007F000F7533A07F7530EF0B785F3B7B7C5C85F9D +:100800007D9FCAB0FC3D109BBF0E2D1F32C0DF0381 +:100810001A7F0F68FCDD23525EFF8BF2B7770FF073 +:1008200017E18ED8FCED6D31F2B77E18FEBEB9F13E +:1008300013E2EF993B12D83E6F347FCD7C65CC4FED +:10084000F6C7A7DAE42D647F94E9B518A73C3D3AD2 +:1008500019E31433DFCF807D41BF5A5FFF34DBA340 +:10086000E4F9D697BF83F641B6D2FAE717CFFF0A6D +:1008700016B49F5F55FEF76B61E1308EC731180FDC +:10088000568E76A883F2B26B98DB1B2CFBEAF2BF84 +:10089000DD9DE261F4632FC03C7078A3EDC8766BF8 +:1008A000C8350DCAB7EFB17A553698FF35E77B23C7 +:1008B000F2C1A48F9E3FB07307EAA35A2627E762CE +:1008C000FE2789BF87567728B3A3E38D5BB3C10F9B +:1008D00002FAEAAFB3905F79AD7ECC536B0EC7E5F9 +:1008E000A5E27A436E295F6F60A4279B267E7B87F3 +:1008F0000AFDE9FBC2EFD3E42DBD93EF47849FAA25 +:1009000014A0CF9A2B75A0BD70CF6A9B80EBE62D0B +:10091000499E5211E4A26EA2BEEFAF81F922F617F2 +:100920006CB7F9EB701DD92AA98CC75F0A95D7E17E +:10093000264278FF5836D7C360FE08EF81B846C319 +:10094000E31E1D8FDD23C3A37DA296CF8BC6A37D9F +:10095000625A341EED8807BC6FB9E162CF5C68E76C +:10096000640BCC0268E7E4B669141F4A3B0409F93A +:10097000B4295BE6FB4A05F52E3E0FBDB45E3AE5B1 +:10098000A50B4750BFDCBD4D08D2BA1C0B2FC0F9D8 +:1009900096794860381F4B7ED664C7F8A12BD84D96 +:1009A0004FEFCF77D8318E2D3DB8969ECFEFC9A2AD +:1009B000E7B4CD15F45CB96DEDB4D9D0EFDD6D0EB3 +:1009C000195D31292084D0DEDDB74D0C3AD02E09D7 +:1009D000FBE6E17A8E0AFA07FD6F29282828FFAB8B +:1009E000B789FB78F9465A8F557F2E52F94918FB83 +:1009F00051E8576D1169DF000B86DCD7637C7A34D0 +:100A0000BB8BE633E3795A5DBFCC3832B7A91CEA19 +:100A10007F24F0383D3352BEF07B1F879DACAD097B +:100A2000D78DAF351FFB9160A1BCE67079D92772D5 +:100A3000F471E4FA26DE2908D85F0533C6754FE461 +:100A4000F0F14BF5C9763FCA555B6D26EE2F716804 +:100A5000E375FAF315B4DF434DB3537CC42E2FF185 +:100A6000E07E167D9F068CC874CC0798D7D7EFD749 +:100A7000BE47794C9F3AB8CE1EB55E0F3EE3C6EB3B +:100A800006F711E8E5106CECC0F287B5764E403DF4 +:100A90008C877A778BC126FA4EF1A0FC8CB43DF896 +:100AA0003580E5DF8E680FF7F1EAEDB58C09BA7194 +:100AB0007F7F547B507D637ACCF682587E02CAAD2C +:100AC0009178C9805731F6A3F1A72648F992E1FC45 +:100AD000A3BB35F919D67EEF8A6DBF4F9BEDB7C921 +:100AE0003F5A15F872EC775F40B3DFCF82FD46794D +:100AF00018C63FBAEF003FE7A1B777ADFED1AA2CE9 +:100B000099EBC561FC235D8FACEA1AD423184766C4 +:100B100076821E81264A9EE5FAA12BC0F586F769EA +:100B2000AE374A3797D293F578FFD983F35AD33B40 +:100B3000D350EF14A17E68B28F43FD7400FC7F4652 +:100B4000EB4A211CC7F31D22C5FBE7855BE7613F2C +:100B5000EA0E4D9F04B83EB92FC8F5C979A192C7D6 +:100B6000FB4F833E81EFCF00CEF15C9FF0F5224D2D +:100B70007F609C80EB3C1FEE797E13EA8F9F83247D +:100B80008D93B0BFFD99186F47E991437C5EFFA537 +:100B90007AE41CEA91A2E1F5C84D5923D3233765C5 +:100BA000713DD2C8D4EE87D1AFEAE4FB2E3C0F39B9 +:100BB000787E3955A638C97C2E003D31E40FD4F239 +:100BC0003E29E1B931EB1FB11FDCF3A2C5757FE40B +:100BD000F8F07DF06C93B7CD4EE7C97C0CE795F942 +:100BE0005C996EF7D6687292DE3532BBB769D290E7 +:100BF000F677D3A418F677D324467CD1CF699C39F5 +:100C00002412CE1F1DBAB6731A6706CEB1A51ACE2E +:100C10006138F36C844F2F9ED3C0FD50DE6CC33916 +:100C20000EBDBC6F0DCF7B9AFB89CF1B38A7119FE0 +:100C30003782736CB502E7D7726D3D4C6F27EA1CA3 +:100C40005B4BEC736C5EEDBBFF6EE7D87AB5736CF3 +:100C50006F0F758EADC5788ECDC1822F93F09ACE71 +:100C6000AFB93E7F84CE3F9D023DB931C6F9353CD8 +:100C7000DF867EB51FF462D01B7D7E0DCFB7A11E2F +:100C8000DC0171CC9618E79FFA52931755D0145394 +:100C900018FA332B3A056F88E1393787E2443A99DD +:100CA00093EFD332CFAFFA9084F98066AF95F6E335 +:100CB0009FAE5FDA7E1DE2A3AE25236663BE6E0F94 +:100CC000D94D7E0EEE8B9EC7192E4E5DA98DFBB0C1 +:100CD000762E105BCE564F36D9B94ECDCE75723BBF +:100CE000B7BAEB4B8A53F53CC048E3D44357B773CC +:100CF000C9F32F76EBF18F18C3CE0D67DFBEEAF58F +:100D0000DEE160FA15EDA9CAD735F47832C9C2E33D +:100D1000C9CCEB1D52B3B69F08E57C35CA39E62134 +:100D20004D79CFF9B8FFA88C9F67C03C67FB774F20 +:100D300052DE53B5F0F8DABCFE1B9DE77C9DF2D87D +:100D40007BAF4B664D3C7E1BE1FEA3FFDBB41FF087 +:100D50003A51E95C873EA239EFC9AADED2F39C1F63 +:100D6000E3F88F1EC86BE653B9395E9D50AD955BB5 +:100D7000D8055CC709DB54DA1F127E984D55D9C8D7 +:100D8000D77BAB163EBF4900BA56BBACBD0E37434E +:100D9000BBDE3FF05D447CAD9F03ABBAC6F35F7A28 +:100DA000DEEEC433F13EDC371BE5DF02AD9B62FBB8 +:100DB000DF54FEC82499DB7FC93F0AF54E4BAB28B0 +:100DC000D1F95D9FDF1DD3FF1EA23D0B9667C5685D +:100DD00047F1BB0DFE7275D0D02EBC6DD2DBB5C411 +:100DE0006E97FCF01EB001A817AE159FDF9BBE4B9F +:100DF000D7F134C9BFCE87DE9A156E3B8D8B31FE9D +:100E000048D6FB337DF77E9ECCE363416A9F9E15F7 +:100E1000CDB7A1BEBB64C2CB3D045E7A3C8378599A +:100E20002DD84FB05D043971CFE5FB416B1796DECD +:100E3000844A257C1368C5718C2DD6EA83B6A57DBE +:100E4000F5C7AA2401F733D7825D47786BF1A40E6A +:100E5000D4A7D98DFE9624D4AF5DCC8BFEB0F91CFF +:100E6000E033BBDFA079386F7A25C3BCF554EFE2DD +:100E70002329F2E03A527146AF05E7E1BCC53BAB2E +:100E800092D11F7C89D13E985D72B02519DA7186A6 +:100E9000FC5EEEFF5D3DFF32ADACDB8A83758B4BB4 +:100EA000DD2809D1F998C9AE0E4B12B453989A7443 +:100EB00004FB2B2BAF1553019E5155BB6D3EC05FFC +:100EC000BBACB624CAB88ED53337B10CD7F34A7150 +:100ED00087389BDDCFF7EF2C28E3F989D7D20FBFF6 +:100EE000B74A1ECCE72CFB71EF0ECC17E97AB90E8E +:100EF0003F02BE4E688B1D7FA5E7713FD9CAE4C390 +:100F0000B85FD9F196C8FDDDD10D1E29861DD3FD30 +:100F10009DECF50D2C847CC673D55EB2FBA7C3DCBB +:100F2000FE32948B4C6B5888FC7E42A3C96E897745 +:100F30005ED5DF349F935E986F3C0FAD7F6FCE5BC5 +:100F400099DBD1CF41A3DF188B9E21FDC54ECE2F5B +:100F50009D8FA7353E9AF93661B7407CBF2E7FEB57 +:100F6000E378CE36BEF400DFB7A29D8BD7CFA71FA4 +:100F700030F96F1FADF792FFF6877C7E0EE7F143E5 +:100F8000643CD984F12C6881F7B9E1B5A1C87C270C +:100F90000B580D7E1B9E5B8FB4E366BFCD55FA10D8 +:100FA0009D4BFF6008BB0D7E1D8DDF0A183FB47797 +:100FB0001F5C76901D385D650FE2BE43B31F97C678 +:100FC000B83FB612FC313CC77E3A3C83CE03809FCB +:100FD0004AE771CCE3C53C8A1DF3553B964A5E8CCB +:100FE000635B70FC0AA3C76FA8F1D0C72D5DD32740 +:100FF0008DCC4FE713580BF7CF9B9D9F14629E55E6 +:101000008CFB53E1A988F5A5661BDF8F7F4292DC3C +:10101000C911ED3FA1F9F9CDA3781CD1EB91DCA565 +:1010200050CF9DC0F54DF6A106F7AD11F153BC763A +:101030001F4122D8BB1EDA1704AA0CEAFD7102D7A1 +:10104000F7E13D396E8AB313BC995E17AEFFCFF856 +:101050004323FAD1152EDA077CEA1F8CEBFDD17EF3 +:10106000A86AE3EBFE211BAEFB6FAF8C277BF76B0F +:10107000F9BB4B54DC53C002E9DABE0001CBCDF71B +:101080001F0C7BEF81B89EEE3DC0F949E767CCF7B6 +:101090001EB00692AF12CD6F34DF7BE078EF4F1BAE +:1010A0006797D1BD07FDB6FFC47B0F7E6B9293910E +:1010B000DE7B60969B2FFBDE83B36187B6AEB8E81C +:1010C000365C57348FD71795CFB3DA3D0A43CB2719 +:1010D00073DF5A7C35F9F41AE4F3A49A43B0AEBF37 +:1010E0006A753BD012DB0EDC205B34BBFD5FDB0E90 +:1010F0008C9A1C5B8FFCFFB2033ADF743BF059679C +:101100006680DB812ABA1FE55406DFFFF53F768053 +:10111000DB819B8618BFE1ECC00DA8E3803F6F54D4 +:10112000F2FB2998557663BCBEF49D1C0BFAE37A5A +:10113000FDEF98EE333AAC8D679FC4C7BDD22A5BF2 +:10114000638D7FD43D55CEABCBC940BB5ABDC1FBEF +:10115000AB245AA79D0B9108EAAD56AB340FF3B3FD +:10116000EA6D09C41F733FCCEA93D1EECC1A5F79C4 +:10117000EFE4E911FB17D81F9644EE5F4893573F01 +:10118000AE46C8B9BE2F217DDBC8F2842BF286CCD7 +:1011900013AEC88B91275C91C7B4F539F9776864B1 +:1011A00096BE23B2483E0FC90F17F003F960F58EC3 +:1011B0008CCFD611F2D9FAA5F179D748F82CBA1A02 +:1011C0007E1486F63C3099711F8D5AD9F06384D510 +:1011D0008D0E09CF15FF4DC2F77F142EC3F48A532D +:1011E000C275E14744BF1FC7E3338B5FC2AB447E88 +:1011F00034D5BF1FFBD9221DA8EF90F1BCF254DA01 +:101200007F7767E3F742556017A414B63CD6B99AC6 +:101210003BB5F3D5CF6972FC9E2D343E09BE7B6D84 +:101220006AE57393D362D46FFC3EB5374734DECBA7 +:10123000A23F5F9ECCEDC453DA3D68B7DFFF8BB3AE +:1012400098B748908BA60A80574251287509D0D389 +:10125000F65A0E9D2B7849ABCF3CAC0CE5607989F2 +:10126000FF9791FD3A65C94AFA9675CDC4F2397F68 +:101270002AFAF96BD05EDB5FB924943325C79BB89B +:10128000242B1A0F68E765E487F3D2968FC529836C +:10129000EDFC2A2EFC149D7D55E72D7D17FC8C5FFF +:1012A0002585C7E1FEB9579F9DB4347526C069E115 +:1012B00071587E54FD6CD7D13100DBF838A5FCE4C1 +:1012C000B35D384E73169CDFFF18DADD4976BA9F9E +:1012D00066B39627D6FB2D2BE0FB68CB0A383F750B +:1012E0003EBCBA06F8903A341FDE8FE6C3FB93A7E4 +:1012F00047F3E1DE69CA1F903F8024D1DDB68185C6 +:1013000056028ECAE8AEF9D3A0893172D7B38FA145 +:10131000A8E5AA1417423BA7B1BEF352DBC7A27BD4 +:10132000B09D17A72A1FE2FB57D71C263CE25EE1BF +:10133000F78DB05455417DABC0F83EE9A5EFFF9560 +:10134000F3D1F8BD3E1E37212FA19D6491DF9FB5DB +:10135000C51EF02C86E7A62C565107ED6EFDC02564 +:10136000EC93A2C7E76C01D70F49785E1CEAB74837 +:10137000BF70D645C8D3288D7F55A5CA65C43341F3 +:10138000E0E798B79603DF003FF72B2953C90FCD4D +:101390006565E8A7C8859C7F80AFB500EBCF0CA042 +:1013A000CE6771B91CDFAD9E5D0CE3A4B82278D284 +:1013B000FB30E99F38E69730F791F453FB132DE5A6 +:1013C0004847301FC7BFA8F0074F58411E3A92F94F +:1013D000BC9D0430EE5BD80B6613E37475AC3D78AE +:1013E0003086DCB90A39DEC525CA4D5EE48B23BCE4 +:1013F000FF31A8BFB9D8EE851161732C811AE40BB7 +:101400005BE022BD01EF6B22F3B78A46B752C0CF33 +:10141000176CFE77279DB3D2F90AF2545187FD9FCE +:10142000760998071C4EAEF20BA2E42ABF20B65CE8 +:101430004DC6F751729538A45C9516C4962BA25BE5 +:10144000970BFD892763F1DC2AE0447E9BF5D2757A +:10145000EAFFC23C83C01A70FFA4F552B9FA1AFA27 +:10146000D9D95682154FA57A14CAE3343F0FECC67A +:101470009B2487CE06F2F5449742E3F7E664CD6EEF +:101480005C63FB16A7A2201F9D18AFF0F6C7213D95 +:10149000D02F433B1F97C1F3397A3FE30A381D73BE +:1014A00016B8FC385E73506F46C8EB470556C2E36A +:1014B0001F35B9DE94D555E38BA11FC7175E5DEECE +:1014C000AD9A1C83DC7F03C76338B99FAEC91B8C00 +:1014D000C70AAA3FA4DCBF40CF84222EF70928F711 +:1014E000C8A742A6567B68BE929CAF2B78EC09CC6D +:1014F000E7E8F3A0B2B0C3300FAE0718CB87A22F36 +:1015000053A3CFADDD03B1B0D4A662FCF4092BDE4A +:1015100087F92F77B964457ABF53A0E3AD341690AD +:101520007C84C90FE860FDDD78AF88AA08343F6E7F +:10153000517B1427D2CB020CD75D9A3479DE8BF61F +:1015400013EDE324EDDCBD35C0901FE6F919971BC0 +:10155000F246FA7BC91ABF1616FADA0AA81D291E26 +:10156000FD6B7D3CCCF49CD1FAFB5329C8F5F4E12A +:10157000F5FF739AFE7F4EA32FF94FCE86C8F93B35 +:10158000E781789ABF0CE6EF4498BF4F3DF0A4077F +:10159000F133B77348EB77BFF6D4F57402EA69F21A +:1015A00073D510F235424FEF477A9C6BB618E6239D +:1015B000CCEB0331E7750ACCEBAC98F3FA50410C55 +:1015C0007D6F9ED75FC27C7E9CF487693E3F3E3034 +:1015D000CFAECEE74B1A9F2F7D413EFF8BF67D8F1E +:1015E000F61C019F7B08EF683EBF5E10CB2E0FCD2F +:1015F000E77F19427FFEBE607A0CBBEC89B2CBBD9F +:10160000B1C6DB89FD0BDCEED3BCCA5055E4A3B2F6 +:1016100082DF47A9D74B467F14DA4BFE969BF6E351 +:10162000E8E3AADBAD2F719CFF186B9CE768FEEF27 +:10163000AD05DF7C42757D29FD8462F513D2E46936 +:1016400038BB9DAEE95DA03FBE707AB43EECD0CE13 +:10165000551597F8930AB9BE9A8FFA67EF779305F5 +:101660003ABFA48404F49B75BE6D2A90E9A97F97C4 +:10167000A1F0FA198DC902EE8F8B686FDCD5DA33D1 +:10168000E301F865227E0B0B953348EF990293FF37 +:10169000A5F99B1DC95DF5A89F8B0A79DEB848A303 +:1016A0004F875F2A55F20AB9BF5480CF4FBCB68727 +:1016B0002C16AE9FB97FC7F5715221B7AF165F17D1 +:1016C000C3734509E58CF213837AFD9B0775BD7ED4 +:1016D000B70BEB5B75BD3E0DDB2D2C943439E2ED81 +:1016E0000D8567A566372A35FDACC380E76C0DCF45 +:1016F0001B914F43E169E6D348F17DA06000DFF91B +:10170000856943B7A78F175DDA0971C1AB2DBA9E02 +:10171000C8998AAF6E1BF03F7D4BB09D8A22F602BE +:10172000AEC780C4C6637B4FD981DE22DC17BBB352 +:1017300002CF5574AC974AF97D41C126849F6A96C1 +:101740004A315F7197D68E593E07BEB7774D9E5688 +:1017500044FCA843BEDC389BFB7B89AF88B45E5356 +:10176000C1D84501CFE338540FE689DB04D543FEE9 +:10177000E27C17E50999E736C27FA8F897B18DD4C6 +:10178000BF4E2FC364CB55EB37517D29416DF05DC2 +:101790004B7D875A83F507F998528A7C4C286274EE +:1017A000AF59051BDF81E3B4519303189FBF2E246B +:1017B0003F162ACF1CE46B74FB2AD5AFF03508C85E +:1017C000D7B87CBCDA179E3E95FC228B1C20B988CA +:1017D000CFE572C13C6F517B83784C9B66C4E38636 +:1017E000FD91E74D4032747C1E237919213E10CFC4 +:1017F00053FCAE6EB4B2E6328AE729BE6F541D12B6 +:10180000E63F3F8BCB0CA2D30471FC1E2E870D3319 +:10181000F8BEAD86127CBA9844E7E56EF4825F5A52 +:101820000A4FA74BC5B8965DB69E37AE83EBFBBC9F +:10183000C2C295846BEAF7A7C45F53BF23CD1FFCD8 +:101840009D26B711F983BF2B8C21C77AFEC0CDC26C +:10185000AA88F659E2793C5A8046FFD62B137D7A46 +:10186000FDC39ABE4A1CC23F3BACF5ABCBEBEDAD22 +:10187000952C9BF44203DDA7D751C3EFA982F972DF +:101880009CF466E9C3F4FE93462689D04F85C45E76 +:1018900048B50CD2A7D3ABB7FFB6693EDE69E77E89 +:1018A000FF7B3656F37317A7776A045EA7A756BC6B +:1018B0005D98164DAF19EFE31B1A4355E01FA43492 +:1018C000CE65275330EFE427D8E1E4E36CAFE1F7CE +:1018D000B65959CF5DEB0085772CFE5E6C37253FFE +:1018E000B07227F029E585388A277B9C39DBBC500C +:1018F000FF5B2F8AB40EE462FD228EDB97251FCD9D +:10190000A3BE4D79A96E9B53E2F7A219E5A3F9A6F0 +:10191000D29A54CAA7C8CB5E01BBDCFCAAF75D17FC +:10192000C0FFFE53799907EF337ADD5B9306DF152D +:101930001CBAF2C436841797EEC6FA49FFF0E7B432 +:101940009B10BE43E0F99543F2323C9FD0DCCD6260 +:10195000DED78737F2E13CFAD154DF8C629453AB87 +:101960005FA6FE2B8421EA733DD6882100FA919769 +:101970002C7C9D44E9FB678CEFBA673B64DC772ADB +:10198000BC98A6DE0EF0AFCB73E85C25CC034F11FC +:101990007C77E40607C5178105F1B41FBEBB3CE5A3 +:1019A0009512849564D2EACD37F37E6DA961B1D6E4 +:1019B00015DDEF8FA62ADFC5769ABF29D4C4CA9356 +:1019C00045D45B8AF438AC3EDA57900CBC69427D52 +:1019D00022AF2539D87407C86F29C9AF5C847A4112 +:1019E000E1EF95EFF1F720B9D6C87B0F74B9D2E5D6 +:1019F000E9B713DFA17320203FF9888F595EE64FC6 +:101A0000FA9749DC8E1AE5229A6FC9C4A7D7CAC5CE +:101A10000E3CDF27BCF8E936BC87E8D74AB68071B0 +:101A2000F26B97395F03E57932EE2B063E4E2F8A33 +:101A3000983747663A2687C96EF966201D60A7CA9F +:101A4000468923C2FBC66BC3DBFBAE1FF1BE6C270E +:101A5000BCF5F1FD9D36BEE2A88B2EC403E8884399 +:101A60007B00782E407CC4F1E10C9CFF3A9E23D58C +:101A70007B4B8BA2F4DED2A2ABE83D18C79A22EED4 +:101A8000C75CFC968C7970EEC70CA57FEE2EBA660B +:101A9000FD7377D135E89F18FCBE1FBF1F29BF9982 +:101AA000C264291DFC792C223DAE901E07DD41EB5E +:101AB00079C2A5069257084CA4BF42B95EEFE3F085 +:101AC000547EEFE8A6D252A75D8C6E77A4FC6F2DF2 +:101AD0008ACA5BB746D26FE6C34DE2F966DCDF72B5 +:101AE00061B640742997980DE33195C98988D71C50 +:101AF000C546EB0E5629DC8CEB5437E37935D05FC5 +:101B0000B8772DF27C6892E26491E74153AA2503ED +:101B10009CE6F330E3B973D9503EC69F6F281F5738 +:101B2000EF35C0E31BCA0DF527342A06384BAD3616 +:101B3000D4CF69F319E089811A43FDBCDD7E43F9F6 +:101B4000E460BDA1BCB0B3C1001777351AEA97BCF9 +:101B5000A81ACA4B436D86F269C70306787ACF6E1E +:101B600043FD19EF060DE533C39D86F2EBCF7419E3 +:101B7000E01BFA5F34D49FC306F6DB0BB40F4C6551 +:101B80006FE0FD274B98FE6391ADBA1C5A0CF5B57A +:101B9000FD7F5E1BEE6B9DA3EF5758C8F74BAAF075 +:101BA0000FEDA2CFB45F502933DEC300F27004D72B +:101BB000452BB47B0CE798F63956B0EC4419E46A2F +:101BC000CE71910501BE19E5CA122D570CE48FD6CE +:101BD000AF35B98AA64B7903F7810ED2255C95AE55 +:101BE0005B902EE87711EE138DA04B5FAF55CA7B4B +:101BF000451683BE39DA3D52663AE7B06D944F30F0 +:101C0000D3675E67ED2FD2F647813F1A6BDF848A78 +:101C100015911F0A3FF77D81C17C02D897656D50F1 +:101C2000A5683AF575D70AD5E945FE54403B412CE5 +:101C3000C0D83FC27F89938DF32E21DF38EF4679DC +:101C40003DC3C9CD5F242732FC8B2527B730908B4D +:101C500032BC8FD62121FF6FB1FE65FC1C5B6CE4AA +:101C6000E7A76C7622F206E3B9D418FBC0757E4173 +:101C70001C2217A70D6D3F8A8B8DEBD323B01FC598 +:101C8000C591F6E6DAEDC7F4E26BB01F23D5F39504 +:101C9000C5517ABEB2F82A7A7E20BE98CDF3C82C00 +:101CA0007731F7A7C067E27E5398F2C58B8A797CBB +:101CB00039547CB148EB7730BEB860C5F8A2DBF68A +:101CC00008C511CA37781C01767D9597C76D3CEE23 +:101CD00068E4FE59C5ECD2C425D0FF2A94A5E923B7 +:101CE000A7D71F4DAFFF6AF4FEAA89E7017EF5AAC8 +:101CF00048F795BE9C2A86D280FE9DAC98EE4BD0CC +:101D0000D72BAAFD8CFCDA0AEB8E4EC6F384F76162 +:101D1000BBD57285B0CA85EFD7D27328797AE4DA59 +:101D2000E5E9912F284F1B8AAFC1FF1B693CF328BF +:101D3000C6333026CDAD9C1FEAFBA3B4FB7B795C98 +:101D4000F3E866BE6FEAD1261E8F0435BA1F2BD684 +:101D5000D667A670B9A9709793BFD92A8C22BD0700 +:101D60001AC283FB202A3C763A4F07FCFD01F2F7AA +:101D7000E898EB12D1AFFCE49523A991EB11EF6940 +:101D8000749FD0E87EFFE101BAF712DD352B689F22 +:101D9000974EF737BFADD39D2191BE40FD01FAC2EA +:101DA0002E75515E799EE822BDDB92CB820E4A6091 +:101DB0002B8B6EBA4E3B9700DFB764A80CF55BC265 +:101DC0001891CE118236A4FD366DF08FEFEFD94316 +:101DD0007F5F4AFFFB44368FD5705E230EF5D91422 +:101DE0005C3F32EED389437BE2C6F288FA31F4DC01 +:101DF000DF176BFB71EC6C34E2DDB2E1457612D794 +:101E0000D8B57D39566DDD68287DF7B2360ECD82A6 +:101E1000F26BE44F9FF6774BCCF5F57A663E1D0DDD +:101E20009FDC5208F4AF1B6FD1C6CBEF898C9FF4B7 +:101E30006762797F41AEC1DFBB54906BF0F75861A8 +:101E4000249CE6731646D61F5D2319E0317E8FA1D0 +:101E5000FEB87AD9503EBE21DF503EA1D16B80B38F +:101E6000D47243FD9C36C5004F0C541BEAE7EDF6D7 +:101E700019E0C9C11A43FDC24EBFA1BCB8ABDE50C8 +:101E8000FE1C0B2FC0948CE339FBED55602C37F50D +:101E9000DEEEC1FD7DAD69CB9CFE18FCD69F47D31D +:101EA000B89C0F55AECFF3A1CAAB35FD6771FAE808 +:101EB000FE7DA7943D95F679A4F6D1B8C549B974CD +:101EC0003F84754AEC3CE9769BDF3A250DFDB5066B +:101ED000C3FEA26A10AC591073CC97BF13AA8AA094 +:101EE000BB29A36E37CE974761BEE27C79140BE81D +:101EF0001E36FBEDB84FE7513C103196B1F33F135E +:101F00006FC7F5FF4D42431BA68474FECC9E92A57D +:101F1000F1E76B1E8C278F2601FD31F4FA507AEE23 +:101F2000E886FA50D544C68E6D6820F8B8B63E559E +:101F30006D37AE2FCFD2F48DFE04BD9285742E7C0A +:101F400055BCE89711E911E701264FB98A3EBD6EED +:101F50000ACFD7B70A6A2EAE8B56DB82D568071C2C +:101F60006C01E9C94F25791FFA73AD69F3BC75A8F7 +:101F70006A8618072BEE938AD00F42D6D21AFCBE7F +:101F80003A0DF80C7035AE6BC7E053A146DF88C739 +:101F90008965DD8EF7E5E9E3244DC9BC9DCE239824 +:101FA000E63DFC1CC5FB8AACB93C2E05B908F9CB53 +:101FB000482FD2BA18C8CD5F215FCC72A3E76F1B40 +:101FC000F105FA132EBE7E440A15FDDDE33CAF3069 +:101FD000D4783FBA01027CE0FF0549A6FD648F0A70 +:101FE000FAFDED5E4FE4FEEFAFAA9E0E8305A371EE +:101FF00032D76FC45F311EF7B8882E3AFF3306FF21 +:10200000E7CFC7F5F6466D3CC67A95FBA7D0D3F768 +:102010002D7C32A73F9FEEB1F3FAD6122C0DC00FE4 +:102020004EA13C3DC098279424CA8F0FC51F9DBF69 +:10203000F0DD77A7F0BC9EDECE7A825DBC1D80BF4E +:102040004FFDA40EC02A9567F0FA23ED6780DE1ECF +:1020500091CEE75CB42A74BE7759E30AF24BEE687E +:102060005C45CFB60D52D229E0DF1F3628452D3012 +:102070003F97DD314DC2FD1377DCBD829E7ABBCB2D +:102080003539B66759E91E3831CBE23B40F699AF96 +:1020900073884250E3678BB64F254CE78C9C0AEB64 +:1020A000A7BC5E6345518B619F7D80CE6BC7C9D64F +:1020B000FF888C23DAACCAD344BF2BF52FA4132698 +:1020C00000C8EB45576E909FA7AF9462AD57E8F4F8 +:1020D0000ED5FEF221E6AD4EAFCE37FDFDE65CBE7D +:1020E0000F51973FFD7DDCC42A09F5CD7281CF23C6 +:1020F000364A3B97ABD5BB0BFAF905F2D1EAA57D81 +:10210000947769FB60446DFDED2E60E1FAA911FD45 +:102110005A7D47903F51FC1C21BFDE453D6C433F3B +:10212000BF2B8EDFBB220991FAB446D0FF8E06A3E7 +:102130007B12FF4F5E8105F5C8E6BABF755A00BF36 +:10214000F7A7707F636BD185E9782FC856D6FF302B +:10215000DE93AFAE1F45F71DD4D47E3ABD29A2BD94 +:10216000E5477E28C900D74C6C49C3F5EFE5CC7A2A +:1021700031D29F32E359D3F800C9A5DAC4F3CE4C6B +:102180001BDFE56A12E91F1D5ED19644FB7157798A +:10219000353BA1F963742E92F29FA9761C8F5AD514 +:1021A000785FD48A3623CC22FD3871307E5171B3EA +:1021B00000D2D5CAFF1ED053C027B413992C44CFE8 +:1021C00055DE64FDDE56AA377EBD40F8F899740CE2 +:1021D000FFDE84191F331E75CC6BC776468ACF2A63 +:1021E0002FB7570E275313A0EB54E07D0FC90DDF17 +:1021F00007B5CBA5C32A1D76F4E5F2F5BF3899974C +:10220000EBEBB9A3FD5D0CEF978B2F038260BC2C29 +:10221000580FE3A0841E05FF5E4D7EC9AEDB3D93E3 +:1022200071DDD0EFC1F3ED00BF63A575770E434FAD +:10223000EF1C9D8DF22315E07ED2ADADEDEF1C1F9E +:102240004FFBA0B4731CEDEFA09DEAD061BC00155C +:10225000E8E9881F8015A707E0EC01584578AFB67C +:102260004F02DB3F85F3C8D9B3301FF0541CFC3E4E +:10227000ED21E769899253720DEBA57ABDE1E6493C +:1022800087676500EFE954650BDF97C39861BDF779 +:1022900096127EAEE079AF7F3AF63F6A7D3FA56742 +:1022A000EC634EB950EE06C7A787C663707CBAF8D8 +:1022B000F894F5D0F88C2AEAA1F199205F60D94012 +:1022C000EF84D95A7A393799F0EC90D709385E1DE6 +:1022D000E5021FAF3246F7088E02344767E13E2021 +:1022E000BE5EBEA88CD17E75C9C1E3D9EA12BE9E7E +:1022F000787B89A83DF9BC4D9437D2FE3867B58507 +:10230000D68513F16958D769D1EA5BB5B882F3E392 +:10231000DE69FE252511EB8FAFB65848EE9D59B901 +:102320001D78CF45856C7D08E3B21F69FB819697C8 +:10233000F8A696C077AF96A5C4FBF97AC8D7699C72 +:102340004CE3AAD339DCB80D355E7A3C3954F9B286 +:102350003B445F90FC6CFF134B01DFFB5F4CA17DA6 +:10236000FB276AC4B21E801F786934ED4F58A7F16D +:10237000EB5B96FE74D48B9B5D3B7DF874BCD8A45C +:10238000E09F37DA6E930D787CEB9715E43F6D4C48 +:1023900070CF46FD6EC6E3C4E5DFB8701C5EB9E4DD +:1023A000E0E715659E8F233B606103F7B1DDA5E98A +:1023B000B41F9470FFF2AD0D353C4EB68629DF791F +:1023C000C203F12BED7830DECFBB9C590DF7ADB0D9 +:1023D000469E8FD3EF23F0B3A479385D41EF18F216 +:1023E000747733D99E06F597DEB6F818C6BF2BB4BE +:1023F000F817F490A99E31FF777B4DED809FFA0985 +:10240000FD3FA89D63506CB85FEB95C502E57D97D5 +:10241000FAEE085545C457EF7C2E2EC77D2F27F0C6 +:102420005BE0F7893BF3E8EF709AF9D13B40BF8F4F +:10243000E28401FE30A64D88ABD31FC5AFFF647E9A +:10244000CC1317121F56001F1C31F8A0E727747A0F +:10245000DED0E964DE13F8F79B4F6EE3797331F455 +:102460006F03796EFABBCA8DDC3EE0E66DBEAE2D21 +:10247000B7E27994BB557E8FD112D578CF04681618 +:102480003BE695EBB4BFCB1C655FC43B8F45E63D97 +:10249000EE36E531CC789BE9BC59B32351E791ACDA +:1024A000A10CF4234E9468798F293CBFFB8977698E +:1024B0006208CBCBD262EA5D3DDF3138DFB95C2DFB +:1024C0006F5C6C888B04E61F8025B09BEB3CA28C74 +:1024D000E7FFDEA899F8048AE11267D8CACFF33380 +:1024E000CACF2F7F4BA473514B985376019EDF8345 +:1024F00042B4C38BAAE3E4C8F39E17021FDBC8CE25 +:10250000FB5903DE47BB0E9A6F9C3A48E73A8F9D12 +:10251000FA31FB2D66FA3F2DD1F2DA53D8946BA134 +:10252000FBC112C6F709A5F07D21FDABF06F990C38 +:10253000E6235986C2FDDB741ECFFD3FDD0C35FB63 +:10254000008000001F8B080000000000000BED7DE4 +:10255000797C54D5D9F0B973EF6CC924B9D9030487 +:102560009809448340982413B21060C22656C001D3 +:102570005C820930615F02195C47C5322124028602 +:10258000EF8D4B2BB69877A0D0D2DA252AADB405C3 +:102590003B11A5D8BA846A15D1C208A820A8514415 +:1025A000C7A5E57B9EE7DC9BB97748006DDFF7F7B1 +:1025B000FDF1A5BF7A38E79EF5D9CF739E73C6EAC1 +:1025C0004C66AC98C19F8F791218AB31316FFB30DC +:1025D000C6DE36B2AA276C9886FA17427A1EFFC664 +:1025E00032F65E61A5D5591CCDD7F8BF1F9A50C4ED +:1025F000988D858DD87E8EC51612F3A13BBFF14C08 +:10260000388FD1DFF91CFC6F8DFCDE50C604E66507 +:10261000E7E3196BEEBBCCE9857E9BE312F359121D +:1026200063EBB14A19637D9D9E34673A960F08B2F9 +:102630004428B3A730D687312B0B3226429A277D08 +:10264000D5DD2F8BCE83B10063D08E3DB760E7D64A +:1026500034C6BC36896D84AC815902CC05F9BB8483 +:10266000E04601EBD99B3B203F1716BCD109A9DFFF +:10267000F8A9B63F6FC26013D57700400A709E5725 +:10268000515EAC645D0C40C5F2BC799EE19A710369 +:10269000D0DE125DA717D23E85F01F8B2503E1C166 +:1026A000D66BFACFE9693C29830D8BF6179BC6F6EA +:1026B0001FDB5FB3812D6907388A090B96E03C3F29 +:1026C000CDEA2B8B029FE77418BFD46920FCAAFDCA +:1026D000CDB3A4CA526A347FAC8FAD2A68BB705C9C +:1026E000B59D0AD714D19B659031EF3CF45C3663FD +:1026F0005B997C9500F0DBD43CE4D081D18C50C553 +:10270000FA62F52187DCC3F0BB92672CC460BE5B24 +:10271000E3BAF36E4B16E473BAF301CCB7C170ACF5 +:102720009CF77F02E6F3C53FAE7633C0E3A73E26B3 +:10273000231E2426BB717D03AA186B007A60927D4C +:1027400008C2579D6FAA7F3C3B0EEBB2F8FBE9D65F +:10275000B7D469A7F9A7DADDCC00FDC1A77619D6F1 +:10276000912A390527CCF34113C06F18D17F00C7D8 +:102770007BB0AF9CBC11F18CE3415EAA92858D05C4 +:10278000D88F81F7A38CD33D6E9E5390A1BD9CCA78 +:10279000E67A6CC80FF7103FA8DF6F770A3AF85F48 +:1027A000067FDD8EF41FCB5F2F0ABEA3F7C2FA03AC +:1027B0002F886C072C6976D65D547EA37F3EA5B327 +:1027C000FC4B295DA38CF786C1BB06F9B4B3EAD5EF +:1027D000D977C23AEA77999D6658D54755AF2E7A90 +:1027E000C48E70023AC0F6B31EBA61247CDF6093D7 +:1027F00064249BF5FD5915D15383E0C17483DD3406 +:102800007917A44DF995BFC479D927FB8FDE8B7852 +:10281000C9F31891BF9AF22750F9A77981AC79448E +:102820007F714E668FB66F8E03B8C07A9B4D3C6D3C +:10283000734A34BF3685BE7EA8C075BDD19BE78381 +:10284000EF9688404852D76F91024CB661B944E583 +:10285000A200FD627F71DEBCDB357053FBB54440E6 +:102860004814F5D4DE44E5B81E6A9FC2E7A3D6FB40 +:1028700099D2FE67CABC2C91781AAF3905E665D3A8 +:10288000F693C8CB15BE8BE59B24E7F8C711EE4D38 +:10289000F9EE5F3A897F14B99875E090907839F233 +:1028A000312CA07C7C394BB220BD07560BC15C0794 +:1028B000631BF33E6DE272C9E213516E3129A0C869 +:1028C00005E13CC935669746925C638CFAEB6A2A4F +:1028D00082FA6128FF91BE3E3B0FFD1D2D3DFB831B +:1028E00022CCAC63FB0743BB39BC0F64F7FD8333D9 +:1028F000183BA2646B6D83270144D97515EF180747 +:10290000407FF3B3442672B979A2BB3FAC17D0E73E +:102910006DCCDB5A0474B2304B9237023DCC5FAFC2 +:10292000FFBEB174E6FEC75C989A6506FD2D64D2C1 +:10293000896E7838A272A7C56F606EA89750260678 +:1029400005284F18127E612CE459B1D1BE83E45C96 +:1029500078CACC34FC5E44E36CC2A665549F21BCAB +:10296000588195E0F772E9ABF27C0DBE128A4F0CEC +:1029700041FDD3A6E011C452E2C40C0D1C006FB897 +:10298000DE8559830C1B49EE35105D3C77779C0141 +:10299000FB3DEA8A0B9AA1EE44D146E3CCDF2452F8 +:1029A0007E7EF1E14A33CC677E134A47C097CF93CE +:1029B000148279CD5D3DD314827AF23C9B2FA99489 +:1029C000E0772C067EBA3C631E82CF3C800F8E0FD0 +:1029D000F0D37D07781DD3C2CBFFF6C1FCE7347A74 +:1029E000E59FCE84B4F7808E58212B3C0FA07865EC +:1029F000CD6E76DCC8D859E70D4921C4272C98CB79 +:102A00003DBB69BA469F7DB1A633FF39A8D7288C54 +:102A1000930A60BDF324A887F071CD20B84E14CF7F +:102A2000BC3016F9DF959383EBFD305F203C6DF2EF +:102A30001FB600D2D9A66F44E22F268597A2FC9C30 +:102A4000727779EA46985FC7DD57651E87EF99056B +:102A500026AADF66B03F5201DF037F31923CEB4D87 +:102A6000FF59FC221B0CFC66F50B94AA7848F05B1E +:102A700099A4E1F304653DE9AE2E2147C3D7B9051A +:102A80007C7EC9AB991BF55CBA8BB9ED30EECAC13F +:102A900039DB04C4B56427FBC0EAB01722FDA8F5F2 +:102AA0003719654AA509BE403F281F08F3C0F1EC5D +:102AB000300FD42F0E7F3CE573FCA9940EF2275300 +:102AC0003AD8DF8FBEE7FA07517A85DF41E557FA3A +:102AD00087523ECF5F44E9107F01A557F947513A2D +:102AE00014F40AD61BE6AFA474B8FF5A2ACFF7CF66 +:102AF000A474847F3AA54E7F357D2FF0CFA7B4D044 +:102B00005F4BE545FEE59477F96FA57CB17F15A590 +:102B100023FDF7505AE26FA4B4D4DF40F5CAFCF7A6 +:102B200053BEDCFF10A5A3FC0F505AE1FF317D57C7 +:102B3000F9CF8630027D3B2DF94999A18E66A1C15E +:102B400068FFB4F522FF16147079FE9AD33DA520D4 +:102B50003D5A6F8A81EBBDD87ADE022E6F9319A79A +:102B6000338325641904F859B17B50A108706F03B1 +:102B7000FEB7037E56E6E66C43BBA65AC18FD51856 +:102B800070F773209EEC1CBF13DCCC0BFDAFDCBDDB +:102B90008A52E64C237AEDD5AE52D6776D819DEB05 +:102BA000232940F6419B8F390350641DDC29A07C0A +:102BB000D89A254D46BA31F5F9AC03F97A6AB1DBFA +:102BC00085F2D0D447325820FF724525E51F2A30C0 +:102BD000527F4F39DDCB916F06BAD2BF877269E061 +:102BE0003A830CDDB16497D180FC900CC3260B6452 +:102BF0001F4DC6F56E8DD3EBA116052E207F1EC688 +:102C0000F66DF983892E217F0DE7A71C86766C9BD4 +:102C1000292448A81F6E616C872AB3B07EF3BC9F3D +:102C200022BFE5AC773E8BF31B187016E1FC5A907F +:102C3000EF605E8E56FB382BF43768B3FB592B944C +:102C4000E706BDE3E2207FE5CEC0B3980E690F8EA4 +:102C50008B8774E8EED0B3283E8687C2E36C901F62 +:102C60007180ED433150D0691F9F00F9A243EE7D82 +:102C700068DE1687BDE313114FA6606322CCA7ED73 +:102C800008733640BEAC2BB08F6C42050FDD74006C +:102C9000F6CF13A8E7EDAD6E8477F66D728148EB41 +:102CA0006B55F010B62693FD08EBC5F501FE77C015 +:102CB0007AB2DD5D04FF6C172B0410B2ADEB0C0A89 +:102CC000FC1D85B8BEA70BB8DD03F0FF31C27F6BDA +:102CD0009C5C9907DFBB2632791BF43FAD8F44F033 +:102CE000896FCA0922DFABF406701D323D410B7FAC +:102CF0004E5F6DDD76E1C5E1FAB422CFFEB7E11A91 +:102D00000BCFAB153A8E85AB0ACF690A1F5F8A7F5E +:102D10000F44F9F7392DFFC6D6FB5081772C9CDB89 +:102D200024F92A82978D19020588B7908076D349B5 +:102D300085CF2F17AEC7FE1F81EB9F0AB87CE90D28 +:102D4000AEAC345DA16F398E0DEA5DCE607FBDC93A +:102D50003784C3CABD8E6D22C0E10B85FE36441E8A +:102D6000F0607FAA7C93F634B8510FA9F26DDFA50D +:102D7000E4160E8DFC33C11A44F960EAC67FE714ED +:102D8000C4D741A39082F6BBB190E371EE088F588F +:102D900088F62A589D481F2C8BF32D582C7168BF3C +:102DA000DA44B95282223694397740E2717FF25C7C +:102DB0002AE1CB4EFC077FB43F9B7277DC36C4A779 +:102DC00003EC0609F6C1F0CF10A649ACD32D62FB87 +:102DD00075AC10F53D936BB3B47CA7EAF5285FAAF8 +:102DE000F491B275A383D32DD6BFA690C32749AD66 +:102DF00087BB16A8D77C57DFAD1B357270ABB30FFE +:102E0000B5BBA690FB37A64FEAD3BFD6D63B3DDF76 +:102E1000A9C061EBBABF117C132AB8BD90B42E854E +:102E2000E83B69823703BBCF7673399CED9F670A15 +:102E300040C1785C7D71548EC3BE76EE74847F0A87 +:102E40004F61E34A7880F1B771B97D79F49F52F808 +:102E50003F4BFF29850AFDF4C207032BE40E11CA7C +:102E6000074E60B21DCAB756A00E437D68223B9C38 +:102E7000A16B05F24940DE3F1208AE2103D29B212F +:102E800081E86D8A29E846FDC44CC932E27BEE0830 +:102E9000EFF4C28BF0D141A3BD00F701B73C39621A +:102EA000960DE8B4D901FC04A89B5B5836AB05FD30 +:102EB000052961A6E41FC5EFDFDDBF50F6E6098DE9 +:102EC000BE95E3F9BE1DFED57F86C60E5EACD0D999 +:102ED000DE02F7429C37F0C72DC81F958CDD6618BF +:102EE00074A17F42F50BF4E6A788F54BF4E68F500A +:102EF000F9EE52768B2A4FA2FC2F17A8FC5F3B8C71 +:102F0000E4F76A9CB7DA5F6F76584E2197CB2D8530 +:102F10005CEEF76E87A510FF839C52F89DF3EB06DD +:102F2000F6A007FD72BDC9A97B543AEB454E255862 +:102F30005A376F87DE6EC912ED27C87FA3F7AF58E7 +:102F4000B39A3B71BF9C00946383FDCF6A203BDC46 +:102F5000EF58A7B077CC506E19CCCBF10FF73D9F4F +:102F6000B60AB4FF00B348F6A31F0EFD861AFFCBC6 +:102F70002D59261AA7752DA7DFC0CB6210ED8BB394 +:102F80006EC329B42FCEBA043B13489AD965D80F23 +:102F90004EC12EEC441F0CE59D19F085FB69F67DB2 +:102FA000A7C5047430E52B81B9A1BF17BF122995BD +:102FB0009887FCA8539D1DD90CE8A9A3E0CFD9613F +:102FC00098CF8BEF401ED6FB5C414952D886FE9CC1 +:102FD000D06B15C285F8BDC95BABF31F45F1AE5F81 +:102FE000C74DB3FF6E43F8FE581E6771E03AEC061A +:102FF000672E437C7039AFD6DBAFC891A79CDE103B +:10300000D26FC282AE752614C3F2316ACF06A71002 +:103010007DF4B13F69CD81F5F5A9E3F66A5F166CE1 +:10302000906D17D2DDE222EF5FB09F1F2BF6EB4BC6 +:10303000755C7F591C83B7A25D5559DFB7621C745C +:10304000F0E81A165A6024BEDF8BF5DDA9ED0548BD +:10305000273FFE6AF735B8BD38C75E5C40FB89A2E2 +:1030600037D3EC00A79AE2E7D3713E5305FDFCD5B8 +:1030700054F583C5EE730F17C23E7728FC239FE5F6 +:10308000E33EF71CAB489A891F5DE93DF291EA9F48 +:1030900053F7B9E87F937BD007B1F056C7AF0174FF +:1030A000E37A99512039F792026F900F6788DF2CED +:1030B000207F5C28278693BF798AC1993413E5A5C0 +:1030C0002BF5A2F3013196ABF567767F1798A7270A +:1030D0007D6528E2FAAAC6C8E597B0EAF90538AFD7 +:1030E0009A02AB80FB72897519519E7DAAC8B1B94D +:1030F000CE0D9F201FCD65D2675A3FD0A785B22243 +:103100004F428365C51FE9ECC11FDD1B3CDE940205 +:10311000B371DC37BD663900FD4DA92DC9BC983FA0 +:10312000FB30D20510EA6BB8E6620DBE06F72CF74D +:103130000EAD59129A608CE2EB82EFB556F25F57F2 +:10314000219C34E3E617F175D72B2933B7E6E1FA72 +:1031500036CCFBAD05F9F2FE619F160700DEF7B332 +:10316000AEDBB7A11F627502F921AA6ACF15370C31 +:10317000EF7DFE7301FDBB0B2F84636CBDFA222E25 +:103180000FE7EE7B5446FAAECA5D971E80F15F46AC +:103190003F4C2E8ECB68BDD3BAED1DBD1FA6511876 +:1031A000E72A4AD7F85F8671FF0BDB67350460BEFC +:1031B000D683B9DBAC30EE817C4E074C6CB9611C18 +:1031C000D0DD39AFD189F2D9DA0B1F55F957EAE4CE +:1031D0004B7C4460418DBC8D97DAC9CF191F91A8F3 +:1031E0003C96DFE422C5AFA4F0DBEBDF3C22A3DD9D +:1031F00063FDD2ECE17AC3FB831B607ED35C2905BF +:10320000388FD7AB44D28709C3E5ADB87F5F5DC4C3 +:10321000F58D2AEFC13C72A25F6CEE6BA213F7B979 +:103220007359A003E9549DFF3494FB30FE3D28F709 +:10323000A12CDEC5F3BDC9FB58391F8BA7D8F5CC2F +:103240008B598FEA1FEB8D1E553A54E9B2373A512C +:10325000E932B65CA5CB68BD47F3EC489771DC2E2C +:103260008CADDF58A43F3F787D8D5737EE1BFF14A0 +:1032700075FE03359DAC8C73D65B96897AA7CA140C +:10328000C8BD1C39A7D247EC38B1E94D8AFD115BA6 +:103290007EBB32DFB3DE47E95CE1D6624946FD9989 +:1032A000E0687D698DD66F6B0FF4FF21FA6D6B4B73 +:1032B00064EEDF50FCAF8ABEED04395167447EE115 +:1032C000F2020FC2908E8EDB990FCF67A6BB85D01E +:1032D000048DDEBFAED41A9AA0C12BEC388D03D07A +:1032E0003F9025323CE70BD5BE4F7EE2F965A28CBC +:1032F000E720096545199807C385E5DAD13F2C9287 +:103300001E4BF8414110F7612A1CE24AAE277A7839 +:1033100033AF86FCB7D65A9B0FED54EB3FCD54DF4D +:10332000BA41086E83F5C499BD64E7C75D99166C10 +:1033300040792F78BBE767073B61FCD08A1B913F40 +:103340008FB6189919C60BAFF18526C0BA16BE7D87 +:10335000EA6D3C3C53E97DEE6A91EC9A4BF987BFEC +:10336000AD3FF84F3174AECA2195DE7B93431A7F8F +:10337000F0FE22AD3F78F0F534DFF143F7B063B6ED +:10338000A81C52F9E2B0B2BE4343B66C7A16E074A0 +:103390006821B71A6F1EC6E9E0E6C1921D378700A3 +:1033A000474F4F746F51E888316F375E118EB3BC51 +:1033B0004BBBF348BED54B56E9F01EAB377AE7CF8F +:1033C0008BF3DDFD45DC5FA6EA15667613BE377C20 +:1033D0007FC436D4731BE619490EDFDF99BBCDE2FB +:1033E00088D2FDE5EA9558BD5055FB0327B6837496 +:1033F0006700CAAD57C6F982C37AD733EA78F111AC +:103400009105B5E78DA8778AB572DC44DFE12F0F0F +:10341000F7637E16E744BB645BBE9B4CA4A7F3DD59 +:1034200002A653F2DD0697460E341A5915AE5B34E8 +:10343000703F08ECF8B36668EC13878B8FDF54C9D4 +:10344000EB75A48FCC7A17D2C6770AB28C30EE9582 +:103450002E7E9EF65CC2C8A4F045EC81FF52E8E4E3 +:103460007E9437906E52F0A6EEEFC13A71E339695F +:1034700093D19385FBC4C4B2273BD14E6D940DB25A +:10348000004BB5B8B89C6B94A5C908AF753669F206 +:1034900076AACF881F9B12DC3B02B45F75B31B700A +:1034A0001F86F3C27D8A4DFA4ACB3F7E296046785B +:1034B000F92DFC1C21769EC395F59E57EC1675DD03 +:1034C000B1F51C2EAEDFF6E4BB87213C17E7BB1D30 +:1034D0002EF2E7DAE87C8FC60356088CF3FD7718E6 +:1034E000EDF6B5126B84F491F8EFFF2C0CEBF2C300 +:1034F00034701F22C9F01DED6AC922E379DB7F1702 +:103500007A4BB19FC6C43B4AF8F99E6F04FA6954DE +:10351000FB513D7F8E9D4F8D81CBE9F10A9CD0BE42 +:103520004338BE52386EBC2BBD87FA8A5D0776FBE6 +:10353000523CD7ADB4B3CF82389CE4B5E3786A9CF3 +:1035400006D8BBDFA375597C37A07FC46D16B81CA5 +:1035500057E2351EBC843F4C3D5780FDF57417F78C +:103560003FCDC4B4B214F6D7B83EC56FFCA021CC91 +:103570002ED64F601CA3F3D94BC193D9383C4D26AE +:103580000B9DA7013CE771BCF84AC8DFF52DE1B9F6 +:10359000E24278AEB8183CBFF84726F71738417BAF +:1035A00014F4CE0FEAB9BC9A5F9FAC9F477321CF4A +:1035B000DFA58CFFF508BE6FDFA4D0A7BA7F365B0E +:1035C00058C00AF690650A73235FA8710E6A3F9B84 +:1035D0005C0954BFB570DC26847BB343A073FFE65F +:1035E000649EAAF526B92A37E1BAEE53FADF843A87 +:1035F0003C9DFBB9D0EE50FD056AFDEB94FAD7B9BE +:10360000C66DE2F0B50F41B89A44B147783EE8E2A2 +:10361000F35FEAE47C3529E63C15BA9F367164D441 +:103620002E98BF979FCBCEEF23B200B651F4A40CD7 +:10363000FFC373F48578340FFC5E3BCC437AAD87CF +:1036400073555308F030CF6BF3F578AEFAF65D742E +:103650001EF8721993853E97D6ABBF7075EB55E790 +:10366000773C677DC2A5B5F359284F2B67CF2BE771 +:10367000ABE1987322353DA0D0418BB21F47B98989 +:10368000F23A45643E92DB12DFAF3E58C8FDA3DD3F +:103690007458250B88BC032E7D5C8B04E2312925F0 +:1036A000EAAF826C00F3BDF9ABC2A6705326C0AB83 +:1036B0006B3873A2FF3F79F5AA0E239E730D63E466 +:1036C0007D6976B0C452FC5E60E0DFAF979B8D9061 +:1036D0004FB6B314446F383093F6072D554C16810E +:1036E0002FFEE9E2FEDAB9AB3F61E84F4CAF80A5AF +:1036F000D829DE685216F27715F73FBFB46E2DD386 +:103700009EF3BEA3D067929DFB6D31EC0BDBBBCD6E +:10371000C9051B99B69E41F177BBC32EB22FB87F66 +:103720009B427E504E386DE40FF2B02E09E5CE413B +:10373000A193E2CEBE2E18FF1EE249E5A316035B5D +:10374000C2F5A2EFA271435DCA78BDC50D3DA8F8D0 +:10375000E50E623C10E18BC7F93CF8975401E72D68 +:1037600049BCBF6CE8AFA10CE1A3C7D7E5E229BE15 +:1037700086C325967E328A39DC84116E4331C2E3DA +:103780009BF3E7C591E8C6E0FC165FE35C82FC6250 +:1037900065894E0153BB4CF118CC22047305F4E744 +:1037A000FA885FADA5CE5411D7BFC0C024B0E3C71F +:1037B0002BEDDD554C782F8F40C8B8DC96D87B2A8E +:1037C000FF60A1DBF95C10FA9D786BA213ED74D851 +:1037D0003F7A71BD13B240EF011E3207737F7166ED +:1037E0005A12C5533CD88BFF5E8DCFEA8E530BFC2B +:1037F000E8B02E4ECDF4F0615D9C1A7BF8F0BF1559 +:10380000A706FDFF6FC6A9A9F21128D388E7E187B3 +:1038100044D685F4F5F1DE9B8C888FE64AD68EF08F +:103820000F7C05F0B644E16D1CE779FEC7F0DD784A +:103830004BA2B39120C8FD3547E2998CEDD5FD9F91 +:10384000C0F2888EAFAF129C48771F9BB8DCF87827 +:103850009140FB99154FFFEA7768972EFBCD0F1229 +:1038600031D8E294D49A81F3AADBD19488703C29B0 +:103870000512D17E3A1514C90E8BC5CF9A62D59E1A +:1038800077270A401F2B15FA600BBA9AEF86F97D4D +:103890002EC07A607E2B777D49F9FD6E4B17CBC227 +:1038A0007EC393EE81FC52D87735C0F7FADD7A7982 +:1038B000BDEC673FC8B027D0BAFA19B2088DFDB089 +:1038C000DDCAED4627D2EDCAD744842CAB675DCD67 +:1038D00038BFD8F6F5EDC74DB84ED9C0BAB2475D7E +:1038E000F81D38D884FAAB9EB590FFAC7ED7A9C33B +:1038F0000CD318BDB0048559D985FA6165B1A21FF2 +:103900004A5809D23BC087FC1D0198176D6B83E9AB +:10391000640735FEDCEC3641F9A9C3995BCDD0DFF5 +:1039200099ED7F4D148645F504636B097E67DA07D0 +:1039300025792F624F7FB48691933A6A2771FCDA1A +:1039400077C3043321BB87A775C650E2285877DDBB +:1039500056A33300C575BF12DD36947F6F9A89AFC9 +:10396000EB7E75D684745827B8BB04A21396288CB6 +:103970008CE26DF9AFDE9D8474B51CF4F014A0D315 +:10398000654F9DE3F5DDACCB0AF5973FF1CEA47B07 +:10399000300F7AD6D203DEC6B77798C2B61EF0D6FD +:1039A000FECE24F41F36FEFC0BC2CBA9670496E9B9 +:1039B000B8B0FD921DA7292EF70C20484E463C8A30 +:1039C000B5A6A40BEB9DD91E4FF2E9CC1E81CEAD5E +:1039D0002E85C769C59CCF80DE7FFD07187FC96132 +:1039E000B313CF0096FCFAD644F41BBE2FF938DD92 +:1039F0003FD694E186F92F310632644A79F992B6BE +:103A0000DB891E171FBC9DE27A81DEFB184A699D87 +:103A10007D707D0BB7DC40EB5BF2D87C5A1F7B548A +:103A200060C81AE72436F9891EF0FA99C23766B6DB +:103A30002AFFEE34F49732B611D6F33E3AF1717F95 +:103A4000F93791FCD066B6ED8880FEBFCE7401CF09 +:103A500013C583468A1FBC6D6F32D1D38162AE8796 +:103A6000C61F3C3709F9EB3687E433CBB4FE1EE3BF +:103A700008EBF15F39D8EFA7A6D950FF33258E5058 +:103A8000539FE0F5FE36739C3002D28CEE73CDBFAF +:103A900031A413E52CB67EE7FB44272C6B9021095B +:103AA000D63F68245F0F96FF282D1A0FF7D96BC7F2 +:103AB0004D7D912FD20C2C17E6B532F8098D3B4580 +:103AC000609F207DA8F0A8DF6D66212DFF6E7F37F7 +:103AD000867FF5DF413F13DCEAC132D8988670EB70 +:103AE0009AF4471C07C6DD01E32C7A18EA6BF83517 +:103AF0004A17A668B923CA7F4CAC49C273ABC50A42 +:103B0000BFC7E22B96FF3F2A56CE2714FE57DBB3E2 +:103B10002DE93DFA67A3FC1E207D50670CFE14E1E1 +:103B200054F7A699CECDEA7EC5F90C0476572ED06F +:103B3000FDE95FEE7BFD6658CFE976631A9D55C5BA +:103B4000C8D7254F029F427D6396C8AC245FBF3023 +:103B5000A15D94359E759961FEA7D33C0CE9FA02EC +:103B6000FE84F21EF9338DFB6BFF637275D7FD9FE8 +:103B70008889BDF3E3E25EE46A9F917AB97A8E0D9B +:103B80004B8261D807BF583E90CEB562E0ABC235DC +:103B9000563EFEB6D8DEA37C84BFD799068ECB1ED8 +:103BA000FF90E8F8739077A21CA55FE6E5F40B7927 +:103BB000535F5C6F8681617E65B0E37A21BFA77534 +:103BC000EBE119FBFD6DA43198BAD1E024D7C6CD45 +:103BD000E9DB13F09CAC51B1EF1B6D06E2EBCE6C50 +:103BE0003BC58BE0BD8D3B60DC1BEC836F41FD3939 +:103BF0006FA4AA67391F4EE35D43FB5B18C63D8285 +:103C0000DE51E405F03187A7C2F706D2F79D69A51A +:103C10003FC57DC20DDE5335B590CFEA273233C99B +:103C20002F2E17CC5415F635EE5B992B8D970FCCB4 +:103C3000D2F5C7E5A8FB9F127ECF1A6FE9C2F68DB9 +:103C4000EE99C65DE8B72935CB827C21DDBFDC105B +:103C5000CEF6F560D7A9E9B4B40355183F7D5DA948 +:103C60009EBF6F8EE1D39BAAF4DF6F64DBD2D1EFEE +:103C700075E312230BE2BA62EA178FE4E75F37318C +:103C80005F936C8BF2DD30D63507ED8744B07B5106 +:103C9000DE265AB299C4D7DB65A6381A99EC34717E +:103CA0001C6B27BBBF548A89E7964368B734AE8242 +:103CB000F6688F66333BF733E8EFC14C146D141789 +:103CC000F84A29EC771D9492BE7A65BB1044FFE850 +:103CD000B98AA79A31D4070DF200C07F99824F1696 +:103CE00008D7603B91199C28D798DB6D9747323AEB +:103CF000BA467A4D2A35E8E45AB23B4E0797D4C902 +:103D000029BA7CBAA7AFAE7E66558EEE7B1FEF5503 +:103D1000BAEFFD9614EAF2FD7DE5BAFA03FDE3740D +:103D20007947E07BBAFA83D6CFD0E5735B6FD6D5FF +:103D3000BF72F33CDDF721C165BAEF4377DEA2CB5A +:103D40000F6FBF5B577FC4EEB5BAEF05A18DBAEF19 +:103D500045071ED4E58B3B7FA4AB5F72689BEE7B6F +:103D600059F817BAEFA34E3EA9CB8FEEFA83AEFEF9 +:103D7000D8C8B3BA7C25FBABAEFE78CBABBAFC445B +:103D8000F92D5DFDABB38EC7E8313970AB0BB7874A +:103D90007C9F748DFDB4AE3EECA46B906E8C0A3D9E +:103DA0005C9B7756F77DAAF36B5D7F26901BB8BFAF +:103DB000B560DC25A471AC9D521BEBA474F038EF08 +:103DC000FE912847DA02CD48542F977D3100F5D671 +:103DD0002B15B7D23EE15C16DFAF4BB04F46BABEF3 +:103DE000CE620BA01C57F9353122B25011D061447C +:103DF000A0548EC4B3106C6A9223564A5322A9541D +:103E00009E1A49A6342DD28FCAD3237D28CD880C83 +:103E1000A23433E2A0342B3294D23E912194F68D19 +:103E20001451BB7E91024AB323A3A8BC7FA48CD2B9 +:103E30000191F1543E305249A93D722DA58EC835ED +:103E400094E6446652BD4191E9940E8E5453796EC6 +:103E50006416A55744E6537A65A496D2BCC8724A44 +:103E6000874496527A55E4566A3734B28AD26191C1 +:103E70007BA87C78E42E4AF3238D948E883450EA14 +:103E80008CDC4FF50A221B282D8C3C44E54591071C +:103E90002875457E4CE5C59147291D19F909A525C9 +:103EA00091AD9496461EA7B42CF2734ACB234F5182 +:103EB000BB51912728AD88FC91CA47477E4FE998AE +:103EC000C83E2A1F1BE9A0D41DF92B9557465EA0BA +:103ED000745CE4552A1F1F3948E984C85B543E319D +:103EE000F226A59322C729BD3AF20EA59323A7294E +:103EF000BD26728AD2EF45CE52BB6B239F503A2526 +:103F0000F235954F8D7C4969F7FEA3A2D77B808659 +:103F1000F3903E10DFC6F01C659A4F207FDF23F13F +:103F20001F3D47F2AFCC6CC77C1336E9C3DB633C63 +:103F3000CE6CFC879DB18E327EFEF6F2BDBC5D7309 +:103F4000E5F1B76F45FDB6CACCD03F142B57D5F974 +:103F5000BC52BA2F1DCF439B0BC375E84FDBE4085F +:103F6000D7607A5509F7A30D2EE1FA33AF84DBCB86 +:103F7000DF2FF5968D83F29A553B5EC7389B4F41F4 +:103F800045521CA32D7805EEEB7DA83F904FD278CB +:103F90001C0DB3750DE0725E267D01F64317EA87AE +:103FA000957B32C91FD582FB748AAB0C37A37E3157 +:103FB0002AF710D96E3D9CCCCC69B1001FF6A6370C +:103FC0002EE5EFFEC2CAEF4FCA25DEB1253DF8B996 +:103FD000A3FEF3CBEE67F27FA89FE925C5BDF7737B +:103FE0005FDA1D9E5ACC4A6ED354D067D50ABE996B +:103FF000F8E26CA48B7301B39DEE0104164F417B74 +:10400000D15C678CDA8B0CEBFB58A503F1BF6762C0 +:10401000098C1B7683FDE1BCB01EFC25227EAAB371 +:104020000D8CC797B63F8FF8F5427DD4D7D56887FA +:104030006AF6390DAB9EEE8FE758F3147BD45BF72D +:104040003E9DDB7A95FDA4F7127EE2FA12BDBDCA51 +:10405000903E713D75229D37EF4BBFE3C048C88746 +:104060005F12E97C98C9EDFD092EEBB91DABDAAF03 +:10407000B5204FDDC06F6FA5FFAEBF1DE6B36FC5A6 +:104080009D5968A7DFD7F48411FD32E1FEABE83219 +:104090004CECFE3FDC9F99F0BCB13AB04A42FBD8F1 +:1040A00068605B681F318091BFD310BFDA8EF25D0C +:1040B00034E8CFF5CF2A7CA0A647D1FF857CB69205 +:1040C000C73F190D3EBA77CA06C419F83D84401D92 +:1040D000E617B45C998376E4648959244D5C86C6FE +:1040E0004E8CA37D9504636BECCA583BF2B112FD74 +:1040F000FDE4E302BF9F887FB8CFA176C82792CFA7 +:10410000DD80E332D9FE238D7D696E9DBE1CF17486 +:10411000B4FB9E17AC11E90AE70A78A85E1DEF1EF2 +:1041200002DFB729FC6F54E2AD805E025ABB1CE986 +:104130000AEB4BA54A3C91B24E6F8BD98EF4735C5F +:10414000084CA078C24AC67614C4CCCFC0E75789C1 +:10415000F5717E408FC6FE1C8E273609C16D04079F +:104160001F856ACE7FAD2FC52BCCCD3499504E79AB +:10417000D7AD0A61B9179063877599252699009E76 +:10418000B58A3F9CB508E40FD7AD0BE4C789A627D5 +:104190009EC7EF61C19E23437F7F56D617C671B17C +:1041A0007C138F5B68BA37C1CDD7216C453DAFC258 +:1041B000ADBAA5611523BA6E37DE85747226C18E3D +:1041C000FBE56A65FCB922F35D0C4EE74ABAFD7D5A +:1041D00047DE80FEE707CC0CCF0761FC391E0D1EC1 +:1041E00034F009BD81EB57E0D3A4E0D9ACCCA329CE +:1041F000FD0E86F338FE61821DF75FE74B52F87AB9 +:104200001AEEA47DCB895ABB206ACED562E745322F +:1042100044432FB174663470B8A8FCA0F2814A37C9 +:104220001F29F4AFA6A7BBD7A7F18788513A8DED18 +:104230005F956F576BEB43F9D5D93C4EF6A8E25723 +:104240003EF9F4B96A8C07682EE1FB1266F7D17D5E +:1042500073753E0850E217857ECD368B7B08C0E72C +:104260002B653E4D82A70AF76D814D66A28BD87DE6 +:10427000D45BDDF3665E932A5F0D586EA7F2EA16F3 +:10428000B3DB0AFD55B73E7D27EE5F8F09FC9C1B13 +:10429000861D80E75778204F7054E8EC69A5BFA7CA +:1042A00095F68037867EA8C00366BECF54E8E52821 +:1042B0007601722CBDD42397E2F8923B9FE4DB6A2F +:1042C0001E175963E8C8C5FD5FCDDA50AE761FA84A +:1042D000C26D725F50BCB87EC999817CE1F09527B0 +:1042E000219CCFB61427A13FCD9BC8BF0B92B7042A +:1042F000F393FF35BFC484747B3881EE0FCD1EC4A9 +:10430000E6CEC0780AE5DC7976E33593717D579681 +:10431000F2F9BFB2065678256307D758981B88E490 +:10432000D53532E5FFBE268BF26FACB153FAE69A73 +:104330003C4A4F98385DCC4EED8E1F37E17C869716 +:1043400072FA185EAAC2F9B62CDCE74FFED7ABC5ED +:10435000782E31617766CD3563A2EB0B2B7116D7C2 +:10436000B901991A7D51757DBC7208C3F3B59E5190 +:10437000BAEF2CAF289ACFE17481F43B6FBD83CEA6 +:10438000F9664D49D5D5BF717D3F5D7E62A99DE03F +:104390003A7DF2205DF9CD354375F95AE5DEB483F7 +:1043A0006519D642FFB71E148328EF6E5D7575D26E +:1043B0009D3C4FBC150BFF3BE607E6E07CEEF88921 +:1043C000D989F724E66F16582095E0C6F5C7EB3C6F +:1043D000EE7AC1669179A1FF0F92DD9949D0D54956 +:1043E0002B5FC7C9BF8B5B1B517FFCAB91FA810D63 +:1043F0008A9DCB5581F8F48383B974CF64F6A0C04D +:10440000003C97EA4A67F66DF07D7E988FC3844240 +:10441000F2AF9CB2BE7DC59D30BF0FA7B62EC2B80D +:104420007DB023D251EF7DF8A4C850EF2E5DF5F793 +:104430009132C06FD9FEF6D71165275A4526A33FA2 +:104440006DA799E21501AC9948F7D1F505F391FEF6 +:104450007E52EC598A577F3E5814CC27BFC1EA746C +:104460006E17C4C001D6BB08E55AC09068DF81F260 +:10447000CDE82D413FFFFC37FBB306414BE78A7F78 +:1044800051E927C05C7D18F95D9E24FA39D1923B31 +:1044900089F4CB7A81A17F1EF8671AC9BDD654036F +:1044A000E27B5E8B48E7FCEA39B3AAF7D903A2178F +:1044B0006C0E6CE7E57E2DD910807EEE7BD9A8E0EE +:1044C000B184E203E7F4E2CFFC0878C5ABF1972DA5 +:1044D000DB2B7AE87CD5251B9AD16EEF9CB803C7FD +:1044E000FFF4C0A024B4A74EBD36D3C8E1B68EC633 +:1044F0005FDAD8918F715BA7A706DE93209D6BF2E0 +:104500003E80FC7FB24FFB0F4741BD8FF7FC64003C +:10451000C63D85957834751C6FEF71B18F90FCF0B6 +:1045200073BB483D375FF60B2BD1CDE7FDAFDA2AE1 +:104530003AB4706DE07050EAC35F16F7C787320473 +:1045400080ABD7CE26E1396C356B57FC3F1C6E76BD +:10455000245A809B5CC7FD81F30DCE39AF221DAE7E +:104560004D90118F6AFFC715FEFDA5C2EFAA9C3BB7 +:10457000A9E4E7AB7AE5196E2F01625FC7FBF64B42 +:104580006869741E61423E52FD6C7F2C4D51EC8B6C +:104590002E13BEDBB07CB789E2551629F79CEA766C +:1045A0009A834158DFE7A55CDE2E33FDEA8778D099 +:1045B000BE18110BFDACD82E044302D6DF4AF452CC +:1045C000070A295880DF83933AF1BB1D142DEE377B +:1045D00082FC3EBE050C30941F01166C4E81FE1706 +:1045E0002AF62FDB693CA1DD8FAC68D7DFDFAFBFD8 +:1045F000E0BEBEA719FDC20BA07F6CBF90C59C2B6F +:10460000B41A491F5A98A501FBF3C427901F73D908 +:10461000C37CFF169D8FC8CE03CC167983FBA7D130 +:104620007A0567905D389FC5385E5A743D979A5FEA +:10463000EC7C1639B91CA96B1582C11EE6A7C237DE +:10464000A982D9515E2C07B8225DC3B813F01ED4DD +:104650000A985708AA2C0A78126F82FC2220A820F8 +:10466000F9073DD350FFD53F2CF27D4580FD0DDF8E +:104670005350F1BD18F08A705AECB5D1BC97F8BE12 +:1046800020FCEF073C23BF2F7D226842BD7E9AB5F8 +:1046900026DA805FEA363F716319B6DB72D0847622 +:1046A000424D4A28D70026B1AD6CF5960963B07B20 +:1046B0000FE99D8596964EADFF454D9706F57059CD +:1046C000BE539FFFB670638A1F7821FE0BE36DB661 +:1046D0008B642F68EAE9EC9D25812E8AB75902EB9D +:1046E0006D94B1344074B9D0C9ECB82FFE77E7C7E8 +:1046F000C41AA2BB734007624F747799F38DDDAF84 +:10470000E59629FB35278FEBF9D4A7C485AFEEF9E1 +:104710001E47ECB9CDDB4699F46517E84BB4B33FBF +:1047200093B8DCFDECC5DC208A96DEE4EE22454F32 +:104730002E44BD08E97B9B9F4AC47DD9BB0F3F95A2 +:1047400041E74EA85F8669F56CA83FD2CF1D4F5B4D +:104750009D3032AB79CC1C427FF7995D66F21FC762 +:10476000CE7362B1B7B20CE58BA21F3F100E8E94D0 +:10477000512FFA7B3E8F8AB5C3BEEBBAE6E1BA8A07 +:10478000D00EE0EB3AB69EAFE7780B5FDF820BD638 +:10479000A5B71F4E5A43A4B74F3E21B246BECF9C89 +:1047A000437E480BD05101EE5F5BC80E38057600A2 +:1047B000EE03D4F5ADB8E58D2312E07DE9159DF942 +:1047C000218047CD0366D2EF4B7F9B40F0F940A894 +:1047D000CC447E3BD36A76DB106E3BAD541E9D4FBE +:1047E000B7BE5F5CA6D5F797092FB685FB81C0C61B +:1047F000263F90009BB89A427E2E83F78498CD4046 +:104800007A21B6FD63655C7FAC100D645FD699B804 +:104810009DF9B1B22F5AAD7C5F5DC6EDCDB565B2E5 +:10482000AA37DA106E07F79A65BA0F2BB11508A7E9 +:10483000838281CE31FA957B1BCAA0FEBA37CDB9EF +:1048400028BF66581267235FAC4B5E44E766735817 +:10485000A711E131AD74D54E8A13E9CB648AEBC15F +:1048600090288D3FE665E3DB136F437B04EA8A60A3 +:104870009B5797BEDF1FEB6FC13CE0FD88B57DE223 +:104880006DD8DE21318C3B09EC35931E358E831DAE +:1048900020FAA9E34097E3FB5A95FB9A10DEFBB39D +:1048A00052F364A83F578A7372FB814DF804FDDD13 +:1048B0004B04B253D8BA7031CAB9116C9D8CF12D2A +:1048C000B0EA5DE7532F067F7D9C51DD38A6DCFF03 +:1048D00004C494125C75F93A93F23DF066CD67D941 +:1048E000044709CFCBFEC6789C4D5D4E97E4463B0E +:1048F000B392B56F0378DC50EA330E7351FB4FAFC0 +:10490000033A0BBDA08F73BA4EB2D37D856C37F3DB +:10491000896477D827227C0E81798DFD092C8FF24E +:10492000D326B314CCCF600EF2ABCF703B9C8D007E +:10493000DFBAB5973BDFF794F9B61B71BF3F47F17C +:1049400037D6199EA4F1D5F9564B611A2FBB8209AF +:10495000889FFA14D8DFE07A9672FF83C1C2BFD76E +:104960002C6129C83F750681E86DB3F718957B1D4A +:10497000F614EDFEFAAF2A7DAAFB1F294CEF131D9A +:10498000AFE2717005304D2D9EEA4DDDFB243BF604 +:10499000B71CD42AD65BBEE7E95C8AFF13EC069C01 +:1049A000D71B65DC4FB15C7D27E9977ABFE897E8B4 +:1049B0003BBD085F7CAEB4FFBC8CC7831D2B53FD91 +:1049C00035EDA42797EFF9F321DCF7F5D6FF0A338D +:1049D0000BE1FCBAF69A092E82A16B30C569308AC8 +:1049E000E0C07E7231BF0836C238FFCFCAB8BDA65C +:1049F000D2F722453F1940689D277B21602A837E9C +:104A0000966CD1D82FF0FFA58CEBF965DBF5E54C62 +:104A1000ABDFC89FA0F7970BA62EBAE7278CB13A59 +:104A2000510E569BDA69BF2CC08600E96F512FEDFD +:104A30008CADDCDE31B608643F921FC485FE31B018 +:104A400017215F9BDD351CE5C0BC341F7F3F4AB199 +:104A50005317F1A9B045BE3B19EAD9FDA0C791FE95 +:104A6000CCBEF70F5330DD663E7F49B123E7B7C6B2 +:104A7000BC0BB55EBFBEA32630B160FE473318E95C +:104A80000B33AE57A3878F1AA607D05E08E44814ED +:104A90009F6164B1FADCC3C86F90C6CB25C55EB315 +:104AA000941B55BF9CEE7ED539F68D8444A8E63D17 +:104AB00013181B53D8BBDCB8CE1D1F42FAB8CE7DED +:104AC000F5019E6EE8A473670964670AC5F3B28AAC +:104AD000422A27BFAF67B21088C7EF6EE307DA75C7 +:104AE000BE82FFE8216EC159DE4B3C4845EA65C5F0 +:104AF00083A8F1EE3528A70745CF396A5EE0F1D2E9 +:104B00005F58FF35E035C8DB0500D400F2CB931FBA +:104B10003EB0D62C37A6A11DF3FC6398AF69900870 +:104B2000FF5F585F7ED7EB423A4F6202E07576D264 +:104B3000FEC7D08FFFBE64217BF4115C9C0BD79124 +:104B4000C0FB378469DCB92C7C1AEF555C9DD69983 +:104B500080E2B966552EC5A53557166DC6FB51378F +:104B6000970F9F6DE98F4E09A6BC0B58FA0F8C1357 +:104B7000BCFE1B5817E5CB66BB4700DF3EDF3507A1 +:104B80004662DF2F2F9F2D01BC3EFE41571BE67F63 +:104B9000583E81E737750DB052FE5A9E6F50FA634A +:104BA000D7CEC6F8AB8F1FE5F93AF81E20F912CA26 +:104BB000457D3BCD6775A2DE50FD4935866729C529 +:104BC0008D33CA25954F3ECFFD64CE2D44575D747D +:104BD0009E531F17326622FF3F2138B741E98ADB17 +:104BE0002A132B19D2213F2FAD53E4493D1AE590EA +:104BF0000A6E1FC9ED809DC9FF85B2690B8F0B60DE +:104C0000CFB2768AAF1C06F37145E733A7DCCEEF4F +:104C1000EDC6CC2B58EE99539E8EEF389E48407AC5 +:104C2000F8EF0AF79C723A7FF2DC89E5ECB5604652 +:104C30003AF4BBCCC03A518FABF7B5EE33E8E3FAA8 +:104C4000E794737B404DD78DF2503F2A7EA0BF86FC +:104C50007FA7BFD4517C9E6A7F2A3C172AF084FE2E +:104C600037FD3BFDAB724CEDEF1F17CEFFD17FA799 +:104C7000FF9915FAF9AB76AABA8EE1688B019EA767 +:104C80008F61BAF9A8E54D4228FDA6347A87D1890B +:104C9000F7BA1C9EEAAA5A18FF6CA9A300FDDB67AD +:104CA0007D254906E8F70FE58A3FF65EEE1F684A64 +:104CB000BF310BEDBDD3BF5A9C8AF6CDCA087F2FFA +:104CC000A03EC2DF0F38DDF1A609E306EB77BD3366 +:104CD000A91FEE4BDB0BAEA0E7B6143BB32EFA5E7A +:104CE0009184F7039AD2DF936A691CF59D4EEEE733 +:104CF000388271423DC4111E28EFF657D33AF3951E +:104D0000F5748E7677946BD6A996ABF7BF62FBB13C +:104D10008DE2FD6C45DB233DDADF0881E3AB268EB7 +:104D2000EBE3E2D79C8B5EA57D71BE01DF111979A3 +:104D3000C8679A07E53B4AC7BD82F057C753DB45B2 +:104D4000FDBB5D7AFFEE1EEEDF55C7712AF3AB495E +:104D5000E9BC0DE3AD6D7FAC7F0CE5CCB58FB0EE5B +:104D6000B86DF49B4E36ABF9E6D9132AD08F285292 +:104D7000FEE33FAC792C00FD1D88EBBCFD55E4F350 +:104D80000D096C1BC897B0E3ADDB71BEE1FF4A268D +:104D9000BBAAD29C7005BE1793505A691B45EB64A1 +:104DA000241F124A3D27115E6147BC018C51A0238C +:104DB000E3228AFF0E58C99FE8CD8FF7A21FEE802D +:104DC000814D602951B8BDA7E0C9368AC3ED807214 +:104DD0009F03FE063C897EBCB50305A46375DCF425 +:104DE000D2CAF851C5D171D34B3D91F2746DFD24F7 +:104DF0008A03ED6DFC58BC9D2BE7F650FC284ED77E +:104E00009E0AA03F8D9E9E31215E97BF7E4A2A73E7 +:104E10006BFDC7D7F7D3E5AB6A06E9EADFBC60A84C +:104E2000EEFB5473A74B6B97A878BBDC7D53678769 +:104E3000372D1DF71702EBFAAD0BE1D5EE7A0D53C6 +:104E400083EC413DB67CFD35E4974E8A54535AD7E6 +:104E50007A0D05CDAF88CCA4FC4AE5FDCE57C4CE73 +:104E60005D07B19F479264B42756489D9F61FCEB54 +:104E70000AD940F787000FC37761BF39A3C9EE5E37 +:104E8000B9ABE30A8C9764528213EF054F15FFE626 +:104E900042FD3775A06C68C438E38895FA9D4A8F47 +:104EA000F4009F14276C443AE88D5F8A147E3186A3 +:104EB000F97C2746A6EBDE372D1B95A3B3578CE96B +:104EC000DB25E413751DC6B040E9F7224329ADDFA9 +:104ED000355DC273DFBFE4FD240DF504D4B761EA8C +:104EE000F08CE2FC02F2875D248ECEACC89D6AE5B0 +:104EF0001C79EC68F734A4EF69ABC312BE3FC46CF5 +:104F00002619F7A3D34A0BB21669FA69EC98C55073 +:104F10003E99D39809F56E35A4E335DFBD31F7C06E +:104F2000D4F4FA51EA7B765C3E75DF33F69FA273C8 +:104F3000A43932A719952E2A471974F7D13B513E4F +:104F4000A3BCFD2D3F4FAA1AED5D8C7CD159C9AA97 +:104F50009E2479D13900DF85FA4FCD1F7A76D1BEF4 +:104F60004CE6FB934429CC5200DE75A35439CBE9BF +:104F7000F352EB98A5D47F45647EA48B57C68EED83 +:104F8000C4FD56C73D4545F4DE9DDCF50DD255FD0B +:104F900033A306E13E7DF5287EDFB8FE191EAF5E25 +:104FA000FF8C99E2D5A7A676BDC7F723563B9D1384 +:104FB000433BA4CF8FE123EA9B8431DED5A3A8DD58 +:104FC000A922D467EE3D5F1CC1B843B72D816E7B2B +:104FD00004CBDDF7921CE9659E97E2438767791A57 +:104FE000EAD9B330058C773DEB7BDAF51ACF7B68D5 +:104FF0005FB89EF39D57E1BF5A856EE729FC674471 +:105000007A2B42BAE3F4561749E6F524CE97731F7C +:105010004E9203C89711076FB75A207E046411FFA0 +:10502000CD53E83E960F574652A91F951F1F1AED04 +:105030007D9CCBE94E971FE6F53DE06F3C47F7AE10 +:10504000EDE342FEB8347D7C29617C84B14230229C +:105050007D98211DAFE1678F82EFDA057C1F555BDC +:10506000EAD8A63D2F6FFF9674FE98527F9E0DF4EE +:10507000641ADA97890CFD6A35E976F28FDEB2415F +:10508000A0C7D36E318672D19EBC659595FC608BAE +:105090000F792725D82FC4D7AC483EB3039C66466A +:1050A0000653BAA3D4FB0CE2BD3672A3828F7C7E7A +:1050B0008E67CF52FC75FCFCE7335F49E69D3C4FA1 +:1050C0007E9D6237F7BB198366E75607FADDBC227F +:1050D000E2F9647F263F44FE24FE5DF5BBA13F0F4D +:1050E000FD7AEA391ED04DB71F0EF9C79C66D09DD8 +:1050F000275EE08FABE4F6D499ED461EDFDEF1B714 +:105100009178FFF703879BFC723F29F6BE81785D9B +:105110003623F86B23FAC55B9F7A1D5DF32A1C6B5F +:10512000C6B16B69FFF3AC81FC82ED2D22BDD709BE +:105130007FF1D3357145AAFDF002E3F6462C5D2FD1 +:105140008B0C22F8A87A4595D74FAFA1E0E66EB94F +:105150007D297D73D6F706D1F559A06BDC07C5EA2A +:105160009B95BB9E20FE813F4FAE4BAB4FF4F41D91 +:105170002BA73BC7BD45726932FAD7E0FB3EB1FDB4 +:105180002134E9C63DFEF55387A1B3BA2767113F25 +:10519000560E1598D8833F51D5C3EAFA5578FC4589 +:1051A000C9FFABC29D54517C397C62253BD51C980C +:1051B000CE488E42AA95A3C6183B552D4FABF87624 +:1051C000FC61A8D0EF07D479769A54BB89CFFFAFA2 +:1051D0008CDB15EA3855A3670CAD48E77A01C77731 +:1051E00056F0FDDA7F6E5D3DEB0767F7FA2E4F3F15 +:1051F000F457EAABEB53D7A1AEEB4565BD97AB3F98 +:105200002656F077BEBEADFE205F2BCA5B6B129DAB +:10521000C78FF953D967F7D8518F9825B4233A47E8 +:105220008F9F58A1C1833A2F759E2F29F3063DF316 +:105230003D6D3DB5FC7F4AEFC4F26B2C9FC6F2A5D5 +:10524000CAAFD7DECFF50E437BB007FE8CDA83FD05 +:105250009D8D0CF9959FBBB23CFE0E7B2C9FC6EA40 +:1052600037953EF689DCCF7BACC2BB1AE971D4CF4F +:1052700007EDFA03C0B5F2A92F9F3A6CBF1C7AFC68 +:10528000BD91F4519D40F68A1952AD3EF2F6C267C7 +:105290000DDF92CFEA95FAAF204ED1CE4A32919DE2 +:1052A00075297A7BA8E2BBD92B97416F0F21BC7A75 +:1052B000B3A73757707B1AE86D73C5BF65D7FC91EC +:1052C000F613484FB88FBAF6AF4E8A67414060DC9C +:1052D000D45471ED2F711D5307C51734C23CAF3D37 +:1052E000CFF723A093683F122B8FAB1579ED55F6BE +:1052F000F37B467BFE88F33B10C7D77BC0D43F8847 +:10530000FD5CAE9D5A9DE663E82FF342AA9543E605 +:10531000EEF704F4780F7D4BBCFFBAE2DBD9A79D12 +:10532000DF51BE807D7AB822BD77FBD469940DEB46 +:10533000A0BEF3253188FEC44BED5FC4CD1CBEDD9D +:10534000F00A49AABE4F457D0F74F116C9FFEF4818 +:105350001753C7B77F66017C7E5D71F71CF437DE9B +:1053600088B122E447B8A7CD3D18E50753CF61C8FF +:10537000CF407C43F9D54726C0FAAE7D8845CF693A +:105380002C289793BAFD1202D3D6BFF7C819C4A32D +:10539000372C697F4F26763EEABBD8CC05F5123410 +:1053A000F9D298FC16DE0FEA231EC7A29477EB2BE6 +:1053B000C6F8FB045D93307E61DA2EFE5ECBCD1520 +:1053C0001F9BD0BF32757C787F3F8C2BD8BB768EED +:1053D0006D0894A3DC8379678FDED816A0376C0341 +:1053E000241FA6B5F3DFD131B7774C72F7C09FD930 +:1053F000A3F57A10FFF03D803A050DE6768161FC59 +:10540000535DA910CCE9E17CBAA7F678EE48ED73BC +:10541000A87D08E3C92FB7FD4D153DBF7B70955A98 +:105420000FFDD16AFF809B99ED82BB27FF49A152F6 +:10543000BFD36058818F45948F6E6B43BFD344C6F2 +:10544000E9A362F46373B8FF19101DB3DE8BCDD7E7 +:10545000DEC37AEDFAF6A18BC1EB8A0BDA2B785F0B +:10546000A2A78F8915E7294E766205E868E867A547 +:10547000C7DA828F854C1DAFD2F7CE39EE6C589FBC +:1054800095E9FC68517AFDF91CA4EF954CFDFE7876 +:105490001BE2DF63E8AECFE97D8FD0DD3E4FA2F7A0 +:1054A00048A8FD8DA37FD1867E37C0077DA7BC7439 +:1054B00011FA6E8FC95770FA8ED235CF137FA25C66 +:1054C0002EE5EF51C4C267D5682EE73E54E2583B43 +:1054D000C771FBB15379BFA67534D7277EA55E404F +:1054E000C5B3E61D08961DC53353DE89D0AC9BE0DD +:1054F000342B4D5DF7813953605D9D296CB8007484 +:10550000B271F4736DEB884E3C12EE0724B6BFED1A +:1055100045902BB314B8B48EFEF311840B2B05D336 +:10552000298DF892F665E65D077BE4AFD917D24B7B +:1055300000E5DC0A221C6C27B8F17D9515482F3D4B +:10554000C063FE68BD1F83E6AF6FCFF0FD96CB6FE3 +:10555000AFE0634A0CBE26C7E06B424CBE469F4F8D +:1055600094B89C4AC41821B09B662D7134F7433B14 +:10557000EF9702497090CB267C8760C7DE8373F07B +:10558000FDE75744BBB11F7CF9F9DE578F588066A1 +:10559000A7A3BCA2F3F0D7DADC00FF99C8D794FF29 +:1055A000FB1C7712D289AF290BEAFF66EFEB6D1671 +:1055B000A87AF3BA078C18CBFCD4DE436D128EE7C1 +:1055C000FACD7EEC4F6A387C648A7011BA6C8D59C2 +:1055D000C796987C20A6FEC39790DBEB62DAAF8E6D +:1055E000F9DE1293DF1C935F1FCB17F2A40C94EF2C +:1055F000EB04FAFDB34BF1C7F3A3553BA0DD85E700 +:105600006E2F8E7EBFAD09DA5CDBC8E9FBE5BDEF2E +:10561000CFD1D1671A23F95F9DE671F7449F1DBD75 +:10562000C9A3BC58FDC4BF8F8D1F9E84F33B51CCD2 +:10563000ECC82F27ACF6243C2FA0DFB9423C583AE7 +:105640009B2BF07B6529BD0F82F7DBA76AE2279FC2 +:105650007BC04CEB5BB88B9F7F4E887F6C529F3436 +:105660003ADFEBC2F70D96F81E99D4C7157D4F644B +:10567000D1DB1C1E8BF60841BB40F167FAFBD962F7 +:105680008B48FE8D2D024B053E5CBCF9C27BEB784E +:105690003E8DEF5A6CE47187177CC7B8CDC6DF9B8F +:1056A000E48DCE0BEFB31FC57FF4B9F05CF8EC6866 +:1056B0007DBC991A0FAB9E0F7B2FFD3EE357A311C4 +:1056C000DE4A7C5AF77B5252281DE3131B5F482D9C +:1056D000447AF893815930C4B43B2E56A97F660DA5 +:1056E0008C7025DE8F5F4269F9AE07447CC7FB638F +:1056F000E19DFF330ADA777D68A0F3D0336B7C64D9 +:10570000847E74C655817EE88FD6F8956002257E2A +:1057100059899F1DBDAB43EC07B98F761F8F27FFBB +:10572000341E16E0FEED8C44F473D6F7C5BEF39438 +:105730003750BC958345F69D87716E4D48527EA7C4 +:10574000CF998970FCD3CB46B22355B87D7017A38F +:10575000F87B75DE8B15BF53C7E3A97BCA71FF12B7 +:105760009F2423D83ED8C9DFF33C6949FAE914F4F1 +:10577000636D999981F7A2161ABB4C4E988F73EFFF +:10578000747AB7E65DA81722380545B483CA27B3F3 +:1057900099D8AE3C24313BB47B57720A480F1F9D09 +:1057A000004A86FCE9107F6770E1EFF93D6DD62174 +:1057B0006DC57DE1FB5B9E9A86F953DBD39371BC8B +:1057C0008FB6FF3D03FD5ACB98DC8171B99E319CA9 +:1057D000CF4EEEE4FBC96540AFF87EEFA99DDC9F9C +:1057E000B80CE8D1225C48DFE37736103D2DCB12B0 +:1057F00019D2F332377F7F6119BEBF60477073FAE9 +:10580000B3C0FF300E2259A1CFE54A7CE9F29D3D9D +:10581000D367DD6E4E9FB1F41B4BAFB1743A798CF8 +:10582000FE77A52E372EF2CC1A4674A596A7EE72F7 +:1058300008FD98564E78B2503ED0EF8E91DCEEEBDC +:1058400045FCECEBB63FB89EED1099124FD037FCFB +:10585000DC45F609513B9AFB291E54CE199F51CEC7 +:1058600087F19CF4891EDAA7BBB9BF68DFD71F3C5C +:10587000FE1B9443034DE487068AF9A60BE076AC41 +:10588000BFA918E9B15BDE0D34F9D1BEEC30AFC968 +:105890005AA89187FB06667C83E7C2FB32E9172A88 +:1058A000D8BE7B8AA87DA09EBFFBF3CC80F736E1F3 +:1058B000FDC467568AF89267D4CF54C7E3F88D6960 +:1058C000ED090B35F3DB575F44FCA6AEE79C729EF7 +:1058D000F656F61D32D26DC7C0DB3AF17E59205321 +:1058E000A2F99ABFAC91F1FDA0F1784F0BCF9FC701 +:1058F00070B97C24727327C68137D972E878B96988 +:105900000C5F6F53F68D167A7727CD40FB2963C263 +:105910006CD9A4598F3B4DE2F372E8DFD94E1CCB12 +:10592000E9FAF018EE0F78569469DD300FFEBB0FE0 +:105930005FD71CEA84718C0346DA310EE7CB3183E2 +:10594000947B847205C6538C17C3454CE34F9A650C +:10595000E0EB8ABD9F88EFAC215D373A2492BB9A79 +:10596000FB55168A0BBAC43DC29F8E71F0FB6206CE +:105970001EC7817F827A8F49C4FD39B707274B3E06 +:10598000E24FF97A1EEF654EB3B8AD89748F698224 +:1059900031257A3FD0D89FAD9C41F2B89D7EDFEF94 +:1059A000B70A1CD57ED57B55E1B57F9C5889F31687 +:1059B000983D95EEF5FD8EE2E9C25E26D835F1748C +:1059C000074CED13295EAF9609DB34E5D5CAB873F1 +:1059D000457EBF101F56C37B30B1F7DB1AEF4DA0D9 +:1059E000798707D8499EEE1FA39EF7EBEFD985076D +:1059F000F07B766103B33F29633C838FF605011882 +:105A00007787F6FE9CED777762DC5378ED3DF4BD49 +:105A100011BE63FC5F937A1EB742B9CF00A461CA7E +:105A200088DE3BAC4E33D17DCA6A68EFC8D7F4F745 +:105A30002DEFE35D704F2E26AFFA19557AB9117923 +:105A4000BD18F9206335F159A685F8E099AFEE3E0F +:105A500084F7E18E6658C8AFD1CDB7995915F8FED5 +:105A60006F477DEAEA2E0DDF3CF3D59E97F0DDEA25 +:105A7000408654847C3AE6EB6F86E3EF067664A6B4 +:105A800051FD316B4E9F7E3A0DE93A4E16A87EB914 +:105A90001DFD1AA2214CF2827D1547743F3EA92AB2 +:105AA000CBAEE1934F14FA9851E2FE780CA4620653 +:105AB000F0832D2AF7C48C1BBDC8BF8DFD892DD95D +:105AC0007D4A1C47A312D7A8F6F3A5A247BE54F1FE +:105AD0002BD9E9BEF9B3C843B88EFB04E21763FAC9 +:105AE000EE04AD1F256E2C1FBF233E89CBABFAD42D +:105AF0006F709DB5D95E9360D7D613F97B5396240A +:105B0000E2F70EF3582FF273ADED4623F98560BC32 +:105B10001BF07DE2B1FC1DDDC664BEAF3A6AF0D871 +:105B2000118F6B4ABC33C642F931239FB75BEE4CF1 +:105B3000C0FB10EEDB5293F1FC6A8C228F3A064ACE +:105B40007EED3E3B47995FCE582EA73A06DE417860 +:105B500053F1D861FE13E1C598713DBD6F3F06E575 +:105B600033E2614DBC13E7DF91C9ED8B8E4CFEFB38 +:105B7000341DF55C3F07922C64F70247135D8CC916 +:105B800094487E7F39C6AE3B6756F1FBACE83BC418 +:105B9000E59785EE4FBE5597FA0DE2C5684C9271B8 +:105BA000FD470D5DC5282FBE1CC3E33E4583278BF3 +:105BB00069FCF63747E5D766D4FBAAFC32E3FD8CD7 +:105BC0007C1D9D9B2EE7FEF3E8B10E45AEF07BA554 +:105BD000DF556EE19F5173DF13E50DAEAB0BE4D2E1 +:105BE000934E6CDF6ED4B657E5CEFF34FFDE1CC398 +:105BF000BF6AB9AADF54B87EAEE41B56FD99C7ADA3 +:105C0000D6F17B43C784F6E7E9BE699999E23BD8B0 +:105C1000BAACFDDAB855E3BD2BE87ECD7D603FE13F +:105C2000FEFBBEB44593F0775CEEDB62A23CFCB5B4 +:105C3000E0FD90F94AFD77419CE1FB01BF1DCBE3FC +:105C400032BC27E549F87B4947B267781AD23095CC +:105C500018D2DB9FFEC5DFB3ADE8EA1C9F847C143D +:105C600070146AE58BF78C44EFBCD53299DEC73AE5 +:105C70009AE89F8CED1B1F130876C704DF7E2FD296 +:105C800037E4515E8CEAEFAAC27BD2A31AB2098F25 +:105C90004758E754B40F020F1B890E1B8D3EAEDF31 +:105CA00037A552DEBDE5E04B8E34E42B91DEFCA936 +:105CB000B6D4D1B9311B260BF8AE5740D1CBD59213 +:105CC00097DEE10210CA8D80D7178C9DA47F5EA855 +:105CD000055816507C26F9930F1880120BD19FABF4 +:105CE000FC5EAFD29E89BCDFEA227B0EFAB955B9C1 +:105CF0002425BBC85FFCD1EE8523911F8DE9D77B9E +:105D0000717D1FEF593E12E1F000CA1180DF8696C7 +:105D100007E977CCCCBB1B02085FF57782EAD7DFB7 +:105D2000C7DFFDDA5349F79FCDCA3BEB97EA778B84 +:105D3000229F36B4F2DF1DBA64BF9BF5F1C88D8F88 +:105D40005A2DF85EDD828763CA95F386D8DFB1AD40 +:105D50006ED1E7995B850BDF97F56677C6DACDBF25 +:105D6000196B8B79FFE1E2EDBBE37E0141745EE1EB +:105D7000BC47C673F5B3407F7CFF74A705E9FE6C92 +:105D8000B681E204405327F4E4470EAFE1FBA515CA +:105D900063992ECEE8FFA7FF3FC5F4FF0299D441D7 +:105DA00038008000000000001F8B08000000000089 +:105DB000000BD57D7B7C54D5D5E83EE7CC2BC924A0 +:105DC0004C1EE004024E428C012778081183523D9C +:105DD0007912F280E1210D4A618251828F76A4F618 +:105DE00033B6D89C3C89091F8D088A7EA80382524D +:105DF0000B18107BA1B5ED109422BEA2558B564B0B +:105E0000A04A5FB68D583FE9BDB6DCB5D6DE273374 +:105E1000E79044ED77FFB9E1A73BFBECF7DAEBBD88 +:105E2000D7DE91984D3B93CBD87F4B8C9D9FCCD8A0 +:105E3000118535F6FA193B2DB1DA7D6EC67EE1F09B +:105E4000DDC9D2208D9F28E95087B1DED405898C29 +:105E50008DD164C6AEC072D680F51953672FCA8340 +:105E6000BC0C7937962B8C8D65ECA71FE5CF0E42C5 +:105E7000FEE7E7F267AF847AE7F1E75A1C67E0478D +:105E8000571630A68F91D94E68DDCA58C533EE68D3 +:105E9000B991DE780DEF4712F3DC88F354703CC8FB +:105EA000BB18BB5FCCBB2695AD08F82F6CEFD72491 +:105EB0006A3FD0D4C87E7749F47B90310DE739F33F +:105EC00044A02411D6E74CF3E52BBE68F93F6715D3 +:105ED000676BB03E0DEBE1FA8E2C6599B03EB6765D +:105EE0000663E9D8AF4CFD06D358B906FD306FC044 +:105EF000BB3031DA7EC7551C3EC6BC8D793216F0F8 +:105F000006A09FDFE2AF57C17FFAF8A0E627B8F3FB +:105F10003C0E09EB3A8CF9F1985DF8FE07C3ACCB67 +:105F20009A1AF0B84FC047638347CE037C995B0E43 +:105F3000EF846FCB6456CAF2A3F56BC4FE9527CAF3 +:105F40008130F45FF5606427C3FADF8ECBDF9909F7 +:105F50009BE1642B16C0BA96A5442E59E38F6D279A +:105F600051BBAA1FB010C2A5AA95A7D8CF3677B447 +:105F70007C59316F67E40D3818F3DB719587BEB338 +:105F8000B5A98CCD023014B3DC10B46F75841E1B20 +:105F900040BC68B1B19D69F83DF4E400A62D4E4FB8 +:105FA0002BA40F267C9FCA1B6D2E8F5365EC2EC52C +:105FB000F30274CEDED232A9BFCF649F5D825F1739 +:105FC000A50D9422BA2A25B226A7218239C3B8AEDC +:105FD00032C5ED427C3EAB256F73421EB6BC3D021E +:105FE000F93599697774C194D68B7D7D3061DA83F8 +:105FF000B3619CD617EDCC89BBC66CFA808BF64793 +:106000003A4F74E01B83F00A1C53585726EE9A9DB2 +:10601000CA7DCCD57C3E0B76435FDA8EEDED9A6B74 +:10602000300CF3747A65E6E3EDD979F82FCE17CF0B +:106030007CB9D1FC5B2C6867881FBAF646F64CC663 +:106040006A6908C61272534CF598B2FE8520F4FBBB +:10605000A957610AF49BA88E37F50BDD7CC0E7E1F8 +:1060600063380FC07C1BAE37305B620FC3BCAFAB75 +:1060700085F298FE026CED1684A7B7D5E971CE863D +:10608000F9CEFE98E0669FCDFB19AA9771E63D9682 +:10609000447088B6877537BEF7FAB4E763FAF3142D +:1060A00025A69D49805FA6B029B8CFADD819EEDFEF +:1060B0005846F0672CC4023174B249D0E7ED453E32 +:1060C000DA3F65864CF834606793A6235D31CF4490 +:1060D000ACBF2021E5531FEC4F38322F6803FA5B29 +:1060E0007075CA7726C3FA7FA85D17B401FE2C9895 +:1060F00091F26C16E47F1459C4F397A75C61877C16 +:10610000B3B424580AF57B35ED518DC6117827FAC2 +:1061100085EFDBF0FBCC2B823B31656CF066C487EE +:10612000BF49496A17E24DF6E034A457A3DDC0CF5A +:10613000264C64724C1EE6A9FA31CFC43A864FDF72 +:10614000D7B4BDC84FACDFA5E0891F23FCEF6CB608 +:10615000311C2F33F82EE53F05FCEE82F9AF79F6BE +:10616000FD241F8CB71AE108EBF8685E2427027043 +:106170003C96F9CB49C8577FDFC4D46CE06BCFD9CC +:10618000833FC3FE0DB8FE7E6B6BD255D0DF5FF64A +:106190002A6A3534BD4D013A45787EAE44AE85EF6E +:1061A0001559976E47BCFD68DFBA8C3A98FF0B8291 +:1061B0001F7C94C96A11FE1FED738A7A4B772830D1 +:1061C000F6AB4D074DFC739EE09F80698E0579D13B +:1061D000EFAD52F14B388F953651BEE33A9AF75CEA +:1061E000774823FE52EB4B5907FB73E34CBEEF4E4F +:1061F0005B80BE7B71AF66617F3D7C7F7CDFA6EFFD +:106200001DAB99A76B3AA15780015DCC1774A1A96A +:10621000E74BB17C5E88A90827D93568237AAC00A2 +:106220001C4A46F4DBEA413C84556D3D9F8A74BFAD +:106230007603C2750DC0D989F42E8578DEEEF2E8BA +:106240001EECB4BF63197CFF16D06B17E5B5A41A1A +:1062500018AF418C07187C7416D4FF0BD01D95879E +:10626000EDA74D74A67CEE40BCF934E80E29503EF3 +:10627000CF633B1D4B3F8057476741F96D071DB406 +:10628000AFB7F7DA4DE5DF62507F14BAFA4C03BAC4 +:10629000BA0C7E99CEA6235D19FBC1946563100FDD +:1062A00046DA8FCF9AFAA73D6FA77DF957ECBE006B +:1062B0001F94912ED73C32793BF2C1358F2CF2D905 +:1062C000101E6373F35966747FD8415942B8AF12F8 +:1062D00073655B53693F6B0E4E603EF875F54189FF +:1062E000F94024561F4CA57CD2B974CA0380681F9C +:1062F0006B9E5CE5CD877E3391F0A1DD1F9FF8CDCD +:106300009DDF8571ABBB61EA1E9A871A81F2B36F7C +:106310002AAA93401DD862EC13D2838DF9880F2FDF +:1063200039666761D887B38CEDC1F2B3BAD3A317CE +:1063300044D7C7B2A11DF23927A79B3185667E9B42 +:10634000AC99F96D6A8599AF8E0D98F9E845B55904 +:10635000A6F2F4E05453F984867C537E62E82A5313 +:10636000FD8B1B8B4DF94CBDD2547F72E74253FE1F +:10637000929EEB4DF52FDDB2D2543E257C8BA9FCCD +:10638000B25D6B4CF9BCDEEF9AEA5F7EB0C5543E5D +:106390003DD2652A9F716CA3297F45FFC3A6FA579A +:1063A0009ED86E2A9F35F094A9FCEA3FEC37E5BFF2 +:1063B00036F81353FD6BCFF599F245EC2553FD12DA +:1063C000D7AF4CF932CF6F4CF5E7787F672A9FEB58 +:1063D000FBB3A9BC2AF71353BE46FD3FA6FAFDAC9A +:1063E000ED12E4933366068345808772C247240723 +:1063F0004F7C4362A980DA678F2DF20451AF13F40A +:1064000033925E65A5C3068B7CFB94B997CB40FFA6 +:106410004E604F28BFADED87F01350F913C0D795EC +:10642000855218F9AEECF2391A915FA90E15E538CC +:10643000FC045CE3A2FC6DBECDD781FC2403E846DE +:10644000F1C2B74EFB4743FC210B876FF3A0BE6739 +:10645000F0B751F44276C668873AA53EB81CFB6D8A +:106460006520DF901F6FF5301BCA39990D7601DF6B +:106470009440C82E033D517AEE97FF90A661AB651C +:106480001EE43B120BCAE72F437AAD6612D25FAF10 +:1064900044F4FA37FB5AAEAFB5DA98720D80D3CD1B +:1064A000FBFB26303C05F8B63DCDC350FFBA3DC2DC +:1064B0007A912F8F298419C5C0335973315BCC3E33 +:1064C000A656784CF9B101AFA9FE45B53E53797A8D +:1064D00030D7543EA14135E527860A4DF52F6ED4BD +:1064E0004CF94CBDC2547F7267C094BFA4A7D65468 +:1064F000FFD22D4153F9947083A9FCB25D21533E24 +:10650000AFB7D154FFF283BAA97C7AA4D3543EE347 +:10651000588F297F45FF1653FD2B4F844DE5B30659 +:106520007699CAAFFE43AF29FFB5C183A6FAD79EBD +:106530008B98F245EC4553FD12D7EBA67C99E71DED +:1065400053FD39DE53A6F2B9BE3F9ACA6FFB33E85A +:10655000EB8857A04FEE2C403AFDD854FE59DCA4EE +:10656000C8F7E0BBB42649950A916EFF61EAEFC116 +:1065700084A45CC49F4616AF3A25D4EF4344577FAA +:1065800028CA12FA3D1B88837CAB0EF44676E020C5 +:10659000F342FD14F805F50489FD9DF4CD248DF535 +:1065A000223E835E407A8407F404A433832E52E4AF +:1065B000CC4CB43712A27494717EC697A7A3FF4641 +:1065C000FD0DE6935D1CFC33F2975B7AF7954F80E7 +:1065D0004F0DAE1E07CB423AF18F1900FEF26ADC76 +:1065E000F076E95C17C02D66BC17E37A32F247E11A +:1065F00043735D1F51FDA17EEDBC5F09161B6B9FB0 +:106600006D68829902BFE96902BA02FD60639387EF +:10661000F29B9ABC947FA0C947E996A65C4A1F6E7C +:1066200052A97C6B5321E51F6DD2281F6EAAA0745E +:106630007B5380BEEF68AAA5FC134D414A773535E0 +:1066400050FA545388CA77837D8DF9BD4D3AA5BD64 +:106650004D9DF47D7F530FE50F346DA1FC8F9BC2E0 +:10666000941E6CDA45E94F9A7AA9FC39D06730FF5D +:10667000F3A608E5234DC728DFD7D44FF9E79B4E93 +:1066800050FE68D300A5C79AFE40E9F1A6412A7FD3 +:10669000B9E91CE53F12FE87AC62A1BF286EDAFFA4 +:1066A00040F1A5DB518F35BE4FB82A90550CFBD673 +:1066B0009290743B962F64B2AA201FB4F03BEB3E3D +:1066C000FC49F46F2F66AC00EDBBF139DB5B819FB9 +:1066D00037839A8478D79CE2DB8E364F9E18675DAD +:1066E0003CD3E3F2096D487F5D85BFF940594B6BA0 +:1066F0003AFA3DA87F7308F83099128087B98487E9 +:106700002F7F257ECE741A676761707631A437BB00 +:10671000430E324F999A83F64D8D3332F6EB30CFDC +:10672000C1171575BB6FE47EBFD5331798EF28E509 +:106730003FFF6306CAC98A7F29415CFFABF6C45A92 +:10674000F41BCC13EB9C572C9BD2CB66056A10BE76 +:10675000AB7E7E37C9C765775C3206E52DC837B298 +:106760007317309F1DE97711D35EC844BB14ED5FEA +:10677000C87F9DE9942616069760FBA5A068637EF6 +:1067800040624F7C5BC2F570BCB7CE637931F733A2 +:106790002C2F964D69F9ACC072ECA7FEAA39CB65D7 +:1067A000F8B4F22A1F7D9FC7061FC5797C6B52F093 +:1067B000E484C951FF03C32D00782D3BA6909C06AD +:1067C000FD9451FE3B5218F95147D1B7B9BC6BE665 +:1067D000FE89BBE27F5B86E503AB016780019C0D10 +:1067E000BDF008EAA1CBA09CDADDC1F367C19E43EE +:1067F000FEF3591CD487BCB412FE4B1F8EDF0DB8BC +:10680000C7929D1CA17E3F9BCA18F2B5CBAECC248B +:10681000B82E43E710F6BB560A73DB3A62C7FEFE9A +:10682000768587EA7DBF30F8FD62B263C30FCC8006 +:10683000EFAFCAAC9FEC584F3807EDD87532C70799 +:10684000FDB8A2EE0450D83C014D423CDC9A3C1D00 +:10685000FD5F8837683F1C15FB68E0C5373B218D1D +:10686000E157806F5D08D7BF1EBA3217F1E25B3F78 +:106870009FE5C3FD6DC5FED3A2FD337445C178CA43 +:1068800018FFB62EBE7F34FFC15989E1ED99E4E7C8 +:106890006ADC370C7F7C5AE0D5AB5E7B4598FAE525 +:1068A000746794EF12FBBB4BEC7B4DDF8B13EF82D5 +:1068B0007EBF79CCAE3A71DC82017FAC9F61088FDC +:1068C0001B1F9F991DB38E6F1D3C45FE3B1BE3F3C1 +:1068D000B2174ED88EF3B4BBDC91D469D171589AFB +:1068E000EDA3217B2D0BE1C3F9BF81878A2331B84A +:1068F000CD1D3BFF213AD88BFBB12AA991E8E06C72 +:10690000E8C33B91C8070074111827F898C781782D +:10691000B892A994D6B300A5AB98EE40BC5FCDC2A7 +:1069200094DECA063A6640FD805E3709E5CBB7D8EB +:1069300060A917E0775D67F30BA81E2EEAB9AF2CAC +:106940001DD6BD646BA67D3CA40B76DCD18EEE43D8 +:10695000A0A35FE0F8D7EF2E6A9FE0233A3AA34363 +:10696000BB790AC72F7625EC25E08D92E4223F59AA +:10697000FD46CE278D751C15FB503E4B3B8AFBBD5B +:10698000AC8511BE0CFECC49FB37444F85B79E9CAD +:1069900020A33E08FB8DF8F8B329E166C263AE0F71 +:1069A000DE22E433E6711C3BCA67CA871E43FAB88D +:1069B00055E7F69ED5DFF7273BF707FE09ECF456BF +:1069C00015FBDF3D09E7AD031E2913887E68DF1A3A +:1069D000DF4B24FAFC4CE6FA029B14F4E64F46F82F +:1069E000E91D687CFE490ECF4C9A4CF2FA34AEE3B6 +:1069F000A817EC5D1C37CDA52A589E1C9EC4E97FC4 +:106A000088FFB3F309C8AC787F1B50CF4D8BEAB930 +:106A100077C54F62682F033C07A5AB49AFA1754905 +:106A2000C5AC17E95A2AFC8F20CE6B6B02F328B352 +:106A300086A3F3A077A682F3555DD83FC89308EAF2 +:106A4000D576D9C5E9DA320F20A35AD4DB9D426F3F +:106A50003FF6CF5482AB0EE3EF4C8E8EEF2B62BD30 +:106A60000CE02279FE83F4B0ADA087291958FEFD11 +:106A700030CE478A671E9C1FC07917C1713CF3B4A2 +:106A8000260F0747AE5F259570BF6A2B2E95FCD762 +:106A90009E5C0FDAE5B67815E9E4094730B1E40AFF +:106AA000F45B8D7F24D66E3F967911E5E73938DFA8 +:106AB000639FB76620FF71339F8EF8314F93D42EBA +:106AC000E20F036D68FF2F004420BF4AA1DD446739 +:106AD000CCE2F701342AC5F60BD1EF03F5B5D96343 +:106AE00068DEF3AAC1AE92D02E7ACF801BD9453F83 +:106AF000107C03E64D7E91BAC59113C964D7B4D01A +:106B0000BAEA5C6E5D81A5B336B37D65C855D09099 +:106B1000491E3CF9904CFDD34E809D96CC7F65C9B3 +:106B20005BCBFFA84CC3BC8D9D36E69DC9E5F450F8 +:106B30005E1195611DF46932A650CEC7D3CE4B23AA +:106B4000CBDD2F9BA2DE773AC63FF7A43DD83505B3 +:106B5000E7FD96A2EA00B7278BEA2AEDB8DF0FC956 +:106B60000CFDB017EA15328B98E61BCF22263D2389 +:106B7000C5921F6FA99F65299F6A29CFB7E4AFB25D +:106B8000D42FB6E42B2DF5175AF2D75BEAAFB494A5 +:106B9000DF62295F63C97FD752BFC552DE6529DF37 +:106BA00068CAE79464093FF2C39676DB2DED74C2A0 +:106BB000A3DD5318EB473CB481C941F2C64578F5D3 +:106BC000F40732E919BDCFF54DFD11E4F70624F2C3 +:106BD00006ECFDE074D765E84FECB5517E916BB9DA +:106BE000BDCCC7FB1D1847FE3E72AACDEB759D427A +:106BF000FC7B0EF63F7229EACF2E4AF780DE1F019A +:106C00001EB90FF47E4C9F01BD1FD3A741EFC7D41F +:106C1000FFE1C2316C9473A5AF0DCAD17531B41BBD +:106C2000E3A3EB82FFA61D483195E73F3FDE545EAC +:106C3000F0729629AF3E37D5547F77A2191E8B1775 +:106C4000CF3095E768FF8C47F9CDAAAF8E7ECF4253 +:106C500038E5D3BCADF8322F165F62F0FB38C04583 +:106C6000BB349A7FE96EA516F941DFFB77B11F03AC +:106C70007CF71E48D986FCEE697F425B0AB0921F02 +:106C80009570B9BDF7B98D34AF97927AAA701F2E5F +:106C9000FF40468EC18A9E6311DC37F520233EF902 +:106CA0006C898FEAAB07FB651FCC37EF40FFF820FC +:106CB000B50B31E493870ECAE116984F5FDE83DD92 +:106CC000D8CF1EE807F5934307F6FB91DF1F723B11 +:106CD0007C8CF805CC0FF8431E0A737E6E52CBFDF8 +:106CE000F5FDE3F1BC350AAF81789C570E7369A5B9 +:106CF000D0BE7736E77B7B23674BA741FF9F68AE0B +:106D00004146181394DF44BB27C2F16B6FA498C3AC +:106D1000CDC77C8E99483D0C49969D12F061BAF61C +:106D20006B3C77BA918390E0A6C3F713804F286B32 +:106D30005F067CC2F4A5BB8F5C4FE739871DBE9D03 +:106D4000C40F87CEC5E4F39763BF36710EC60EE35A +:106D50003E2C5E6CD763CF9B58B55D37F3775B34C1 +:106D60004FFB189387F6ED6D331CB7219CBC0A735B +:106D7000AA9C9E5C33A3F87FDC36507A2BC201E4D8 +:106D800007FAF16F8A143BFCA8D730CFC76310967F +:106D9000EBF979974BF8E9EB230BA9DC539C4BE516 +:106DA0009F9D2A72F8494FF69C6DA6FE63CEB76090 +:106DB0003ECDFBCAA97C6F91EB631CFF906DE0A3F5 +:106DC0007C3EDE9A66186F69D07C4ED69BABB4E3EE +:106DD0007CF6143A3DB2E7C2F3B23D11999F876D3C +:106DE00092B65F02F09B673967ABDF64CE9F2BE101 +:106DF000FA577229C7B35A5D2FF3F8D12EEA69F713 +:106E0000E079AB2DACB7407F79B0CFA8D7E5A9AF7B +:106E10001727E0FA0B24F5121FF612A1FDAA39E894 +:106E2000F1219E141DE4F6CDACE764C25F2BDDBFFB +:106E30001279231EF164D641C042E85FED7D40C166 +:106E4000BCF4016B1D18855FF486CDF8B9E720D03E +:106E50000FD43F24E875A4762704FE1DB785DD9E78 +:106E600051FC1F55B90AD34DE72961E2BF4B830995 +:106E70004C8FC1AF1A35D5946FDEE720781F3804E8 +:106E8000F44A74C6CF7566083CDF6D1F906F0778B3 +:106E9000EC9FE5F4B4E0392D9BDE8AF8F6A938E7DB +:106EA00031ECBF03114EEF07D8808C7A985AE72651 +:106EB0007CCB3F00649144E92927F0E1FC971D2633 +:106EC000BEE754CD799539A27C0BE633CD9237FCE1 +:106ED000D105485BB32E8483D51F7D55A93817BAD9 +:106EE000925D89F8BAC7722E94679C0BF517507F94 +:106EF000BBEFF1290BDD51BF7454FE37133CF7345F +:106F0000B9246C9F1FF9A3ECCB433E3F20637CC2A6 +:106F10003436D0928076E401A662BC86D19FCFED54 +:106F2000D1BF03DFF71FCCA2F3C4BDC7B21264E820 +:106F3000FFDACF2FEF26BA7973727E178BF6CFFA6E +:106F4000D3E8FC68C84E42B9057C65FFB18534DFE3 +:106F5000A70FCA64EF3D6D1B8C4F19066F8C7D37F0 +:106F6000F2EA736639D58ABF40FF19A5C1E5A55776 +:106F7000E0FAFB582ACCABA6E00E86F6E9103CDC22 +:106F80000BA95ED5B4B9329E236D9E94B20DED9ED1 +:106F9000968479F2A3904F55210FEDD27485F63F78 +:106FA000AD70D236AE9773BDB16AAA19DFF766BC71 +:106FB000116F4779AD2712BE552599CBABA61DAAF7 +:106FC000C7EF3F5AECF261BFD2B4A5E9484F0F8832 +:106FD000F5BF76604DFC70F475913D943C1A5D5C94 +:106FE0003460631140E6D473192C02FA6E553EC822 +:106FF000F551EA3BCF2954DFC8AF8B1BF0A23FC548 +:10700000E9FDAFDF7C10FB3D23250EE195A3DDE319 +:107010004239BC3763747DC15887917F7048CE3A3E +:107020007584DFFA5D192467D72D8B2739FB50292A +:1070300097B3EB016E8CF62344F2D8A9723D7B8F97 +:10704000DA427CE8C1A47E3900E5458087089F1DAF +:10705000C80701FED332220CF1D3AD06A607A91E44 +:1070600097B7EB3340DE42FBBE6FFCC71494AF7B97 +:10707000BC0E1F8ECB22916399901F3B43666877AD +:1070800074488CE6A5FFD01DE6728CCBDFB1689307 +:10709000C296AF3FC0C7CF61B7CB3ACAED0C2E47FF +:1070A00073D8A1FACB703D6F027F6017EEB3CFD3D8 +:1070B000CFF516770AD1C746A19719F033CE5DF701 +:1070C000427FCE183D6563E5535988FF061C37A201 +:1070D0001E07E983CBF6A7E0FAEE57F35FCC46BE76 +:1070E000B4CC4D52AA4CF1DF8BF9F53B6C740EF326 +:1070F000C0A4D0143566DF871B5786FAEB0EF271F9 +:107100005322BE22C4AB54A63663BA45D47F48E8A6 +:107110008FFF25F4C747507F84FC96605F05EA2FF8 +:10712000696F290CFD443E75E0DE4B11BE5B64B512 +:107130008B5D880F467FDBC53AC2D81FE4D3EB7561 +:1071400009D7F9A8E877DDC1AC1617AEAB1E58A376 +:107150000FE739BB0FF37B3B193F0FD65519D79F6C +:10716000D9C6289DD4E891797BDEEF0ED1CFDE031E +:107170001CEF776E5A998CE5698D6E0DE355B2EF71 +:107180002B6DC6F3FE076C368A97D9F94025E51FAB +:1071900074D9E8FC39AD515581B9819ECCE19ED6B8 +:1071A000A8A9D8EE51B1FE3DA2FF9CFEBF343B71B1 +:1071B0009E3D8CECD64907027D38BF690707A56064 +:1071C0000C5DEC11EB7E5AC031A77FE20D88679F02 +:1071D0001E70B3AE51EC3C83AF4D3B205BF466B305 +:1071E000DEDDC9B85C00FEF6BF4B817EFC95FDB2CA +:1071F0000BEC496769847C5843FCCDB790EA19F8D9 +:10720000D69ACDF5DC6C56589145F89B2A115F163D +:10721000F146DDCCF86931F1D756B19E3143FC4ED1 +:1072200075219CEF15F0B7E9AA6B32D22DD0039EE1 +:10723000CFB7243C4AFC0FCF2CF19CB5F89A06D668 +:10724000897499CDF58DF5D97D2EC4C736016FE9C6 +:107250009A2DDE01E8AFDD16708DC6E7EC5B389F36 +:1072600053CE4D223EA7B3A08EF4ADA4F1FD7066BF +:10727000A83AFA111C3E1BC55F282C462F45FAD6AA +:1072800099CF364E1C196599CA49EE8E013581E0B9 +:10729000349111FF60CA5A86EBFA14F469C49B0456 +:1072A000F7CDD58827CC6FB3C457A90CFD1A4E660D +:1072B000FB20B63F25FBCC7B58DFEEB599E2AD1441 +:1072C000B6FE63B4D7942F88A3BAA24C9C330BB9F3 +:1072D0006EC873E64B31C94F238D9E33EBC457A75D +:1072E000BA0AC94E59E763449F18669109EBD9AEB3 +:1072F000CB44BF619DCBDBF5425E5AFB33F6DDC864 +:107300002B065EA9F9541F7EE273A1BF9EB75249B6 +:10731000BE1FEE94C9CFBB4ECBA178921CD6D89994 +:107320000BF90E3D4B36C97F8B9F212792D8857C68 +:10733000799DCEF9329025F5DBF1A6A2B6209FCE3D +:1073400068710D27771E15F3DB25F0F02541AF9D01 +:10735000BE85A39EE71BEB32EA29605EABC3F46FE8 +:10736000739BF58A9C63DF18339C3FD948B70A7C2E +:1073700036EA65D82212F69B21E2478D7A1343E65E +:107380007EEF2CE3FEE5EC126D4DD9D8283E298D19 +:107390008E07501E2BF794CA8FA6E13E72FA713207 +:1073A0005F7C16870FC99F8BEFB9B313E1D7E9E66E +:1073B000FBFAD8DA3B5DB1F2DF0AEF8B27CA22CEA7 +:1073C000F485ACC336840323FED0E9E5F643AB97DE +:1073D000F3D156A0F3E1E8D1DA5F6786D15F64E5C7 +:1073E000E16C90BB9D2B89DE8DF9FA58C885FC664F +:1073F000BB6AA3FD052DA507F182C1FC518F1C9925 +:107400001F8EEE8FDA5166F85F46F74BE5F48FBEBC +:107410006F5F344E583F2B11FFC6780674FAA95C93 +:10742000AE4F815FD7A644FBB9B8D1BCAF063F9F32 +:107430001236F3EF6A7FAA296FD523B359EE41F4D0 +:107440009BEEE9E57C8DD50E54A2BEC1DEE6FBFDC8 +:1074500034361CC62ED823E8C0C8EF85FE46E3A705 +:10746000D3B6B8898FEEB5B38312E8634C03D56504 +:107470001CFA4D1919EF8F55048F223EFACF4D2378 +:10748000BE2B1D3C4AF120004FF2EF7FAAF2732978 +:10749000363BC0F9660DE4113EBD8BA8BCE33BCC86 +:1074A00043795B783CE2F36E411FC63C776746AE9A +:1074B00047BD6EEF4F7F2BC7C685FFBA8C9FE7E4B1 +:1074C000B992B4F030747942943B6D4C8FC773D548 +:1074D000E7383FF4328F03F7F90BFDB9B5915A9CA9 +:1074E0001F93651EFF6259F71E4CD371FD810FCBB0 +:1074F000306E59E5EB5E1F08E8A83F054161625711 +:10750000439D031C0FFC2C40EBAD53F9FA5F53175E +:1075100052DE0DF0704EC7F92C13718FCCE34CC7BF +:107520007E781C64F056E6413FFD85F3E478330431 +:107530005701C7D754995D8372D4EBE0766CAE5A8D +:107540004BFD8EB08E4D621D1F5404FE45EB70F353 +:1075500075FC00D094FC0F490E8AC7CD2809DACA01 +:10756000898E98A6403F3F58E2233B8EF90312FADA +:107570009D582065587C8BD28F806BAE362A5C5B21 +:1075800093C6B33A28FFC19A248AC388995F4A39BF +:10759000C6C1BABB02245FC578CC1D213F456B3BF9 +:1075A0008F97FAA27D8DEA2741572C1DB507B9FCAC +:1075B0006B95821528FFF4B738DFD928C687B969DB +:1075C000788ED3B1CF4BE35CC8172411B76FE60BAD +:1075D000DE58BE437E85FFB7FEF015E599E2FC61FB +:1075E00074BFB8E26041BA9F50C1EDD91C56EB8A16 +:1075F0008DFF8CAE87EB75513F22875347DA4A9255 +:10760000AF1D5E2E0F59C5F0FBBD4ED0AFA1F7B533 +:107610000A79DBE16D61B1FC71243C716598F55A22 +:1076200003CFE3B3E34D7CD30676536C3DB0D3D4A4 +:1076300008DF37EE77C01FC8D7AF4EDF4678CAD80D +:107640006D09806727059E19E319FAD0F2726E67FB +:107650001EAAD496239E75D8835E94CB8EFEDBE55E +:10766000F761DEF6B714D3BE8FA42FAC13FA7C6B90 +:107670005CA036300C5F5DB7DFD110CBAFF472EE9B +:10768000B7D3C5F830358A736DCFE0F692E20904BE +:10769000506E2B20075B7D238F6FD5435C19667876 +:1076A0007DD5F8C5C5E5667FD1D565811684CBEE5D +:1076B0007D3359ECFEF7483C0E7C247A475F89F015 +:1076C000B37423FFF017F7CB9386B343DC8BA99EEB +:1076D0006187DC9F9B42F72EEE17FBD81DF26C43AF +:1076E000BDA33B57E678D4E0D9C662FC2C137026C4 +:1076F000D0EF4578D209F3ED10FBF198D88FF50261 +:107700000FDBC439C786268DBE6F6BAAA0F491A685 +:1077100020A58F373550DAE13DADA1DDF05F60C8BF +:1077200060BC4F526456318E9B52CD3C71308FD429 +:10773000AD033AF241168AA7F885CEA610B54BA93B +:10774000E0F3DDDA10F738AE7D77B943E0557077B6 +:1077500039D1291BB0031EAE30709469E348EED9CD +:1077600079BB84526E5714F943CC03FD27BDA91091 +:107770001F4FF287F1501494DE5DEC56A8B701C696 +:1077800041B92F55F4EA03746EC9FD95E3047E37C1 +:10779000EF7BC21BEB27EA86E6FD48FF36358E9F5E +:1077A0008BA8F7A2DD9250C1F5E98D1529CDE82708 +:1077B0007014811D0376D191F57DE40FBEBF90FB5F +:1077C0004512726F6EBE11CA5F4D5718C6E3253061 +:1077D000FF61ACEF55D8A0B310E1229F42FF664A8B +:1077E000ADD98F39E94E87090F932D7ECC04E63051 +:1077F0009DC77C553C7DCB82A70CF107F123570E2A +:1078000013FCA3E721C4BF1C1AF7BB6DF47379B155 +:10781000A162BFADB880F08CCE430C7EE09822F31D +:107820007E0AE5303F77E92D5D09ED2A35179D3F4A +:1078300067B35D36D4AFBBC53D80E8B95D98F8E568 +:1078400009C1075B250E67439E38C279246F36FA5B +:107850003C44DFBBE7E6C74931FB84FEEB5878A127 +:10786000DFDAC40FD7C7F03D906B5DFED1FD6D5DD3 +:1078700016FBAC0BE6379ABE179EC3F5E5F82D0E46 +:10788000D2FB5CE7C6519A13F91AADA34BD813BBD0 +:10789000ED6A1CF2B7FB73B3E262ED88CCD966FEE9 +:1078A000BDB162743BAB53C0C9A8E7B2E96CB8F98B +:1078B000C5F9BE9A9D75AF58B7512FCED643FDC6B8 +:1078C000D9CC76567CB679BE97CEE17C58F17E72E3 +:1078D000E907C3C479669704B3E78C8DB177BD8F90 +:1078E000FEE603800FFBFC3CF90587CEEDD12E832D +:1078F000EFD903531E26FE95CB7C886FF1AE63EF64 +:10790000A29DB301E10874B77B16879FFDDA01865B +:10791000FE556B3F2C5736EDB78F855DC82F36E689 +:1079200072FBEB97DE2C09E93CA902083C11F943F4 +:10793000642EE94385CC83F89F54D1AB61DCD22F10 +:10794000ABB793BEB9D12DCBC84F5EAE4E213E7AB8 +:107950007F2EF7F375E466DD9B8D785A2FAB782C7C +:10796000E0621CDEB44EE4C3D5FB5D785E35A179E0 +:10797000CCCDC80F2BE7F0FB96DD2877FC51BCEF90 +:10798000F61A794E6F8BE678A8DE86EAED9DD8FF71 +:10799000849B64E24F32EB257F71879FFBF1E33ECE +:1079A000FF9B6B1CA4470BF7BBCE503B85F0306EA2 +:1079B0006D2FB5DB502F338C4F78A9302B0ED7BBF2 +:1079C000B17A7F328EE76089242F361672BFEBEED4 +:1079D000B90B497FEB6EE0E7E1DD856B221887F498 +:1079E00069909F76E2F5922294E718670453731624 +:1079F0002C267DD353EC0A61CCB9C3773BEB2840EE +:107A0000BAE2FDD933CC78B77B4A1FEDDFFD5E1BB0 +:107A1000ADE3FE42CE273FAD70F8501E39581CF141 +:107A200097FB3D8CDA3F54FD46C5649A8F4CE31FAB +:107A3000719F3D8CFEC1FB97318A3F73EBE6FE1DC3 +:107A4000B3B647B2859E24669C54338E583FFDC41E +:107A500057F7E9F538DFF10AC37349E3DC6A43BA43 +:107A6000716E65B6539DAC2E9225FC53B85E5B21BA +:107A7000F737D9D0BF94144307AA994F5F1C34F34A +:107A80007187856FDB2C7CDBD0931C5FA02719FEF0 +:107A90003C434F6AB3F7929E04F28BF0739DE299D8 +:107AA0004EF622D0693AF4674BC920FD2D3CC7D071 +:107AB0008F428528FFEE473E0CF071D4B4D0FA0116 +:107AC0005E21CF287AA5DDF305FA91476769334532 +:107AD0007C9F0F53DB19B41F3A31D6D524477A095E +:107AE000AF7D2CC87492C31C4FBA2BB613FE77150A +:107AF000727ECCDC69C3EAC71342C3DBFFE90DE643 +:107B0000F95C1434C74DDC27EEB3E6E93686F8F3AA +:107B100060C26FFB907E9F7916E473E617DF7F3DAE +:107B2000FC2CC7933DEFF3B82D58CDBBB741FEB346 +:107B3000FD0EE2E7AD89FDD723FF79CAAE4E980E60 +:107B4000E933AF3C31BE0ED6F3FC1CEE777A46C467 +:107B50001958D7736C0EB7B341BF393687EB371F4F +:107B60002931FA4DBD14BE84F858AD7A43ACDDF727 +:107B70005845F055AA6FB1FFA497B9FDE9501631E9 +:107B8000B4A3F3C08EDE4E4154218A07CB6B10F7AD +:107B9000FC5C01E25F79D53EF22F38857D3DE94EF0 +:107BA000E669063DF2F692E0BBD4BF6D8D86E7DC58 +:107BB000FEEF8EA1FB5E807D5391EFB85990F0B53A +:107BC000EE4D8EAF8EFE89748FA6D7882FB3D88FD7 +:107BD000C67AF70AB9B24FE0EFDECC7EF24FEC7F07 +:107BE000C9EC9FF8DB1CB37F025AC9686FEDFDC971 +:107BF000F1F8BA61E4F59F2BEAFE3627C69FEEEF57 +:107C000055953AC2B301D243F0CE3BF94966AB7405 +:107C10002FDCA8D7FBF2E8E778971F34E35BFEF38D +:107C200016BC1F8A1F0C4818C7FE5272C814B7FC36 +:107C30004578955061D89F8CF0EBAE5BE3B61BF1B5 +:107C40006F647FBD7F19C1F7506520A182D773C9CA +:107C500033A3F83114BF62D45F3D65BBB0D7DC32CB +:107C6000E291C4F122A54232ECB314ECE7C0AAE0E1 +:107C7000D80AB427A6BE3215FDF455D35E1C1F7B6F +:107C8000BE62D81556789455707CAEBC217CC04E2F +:107C9000F830AEFE65E0A3955F0FFFDD0EFB7E774B +:107CA00045727D1BD06DA553A67BF5A163B377E824 +:107CB000D0CF069C07E4E71C9B5A8FF9EB4BB5C964 +:107CC00038FE6FCBB4EC0AF28B94525CBE01C791C4 +:107CD000F6C31A975F8AF682E99C98DBDB78BE8C44 +:107CE000E7CD60D785F11CB8C33DFA3E7758FC7AE2 +:107CF0001DD0CF687A5E5C79F06B386FC79624F23E +:107D0000DBD9CEE5909E175D470FC5937ED975DC14 +:107D10005EA295713864D07D5AE37BC9B4B97218FC +:107D2000FD266EEEE7FDA27528E7AE369D3B2B42A1 +:107D30005F63A577DD75D74C716E1F737FEEBA0A4E +:107D4000A1AF9DBB86DAFD4FE1D86E81E30572C419 +:107D50001EF08C06D7CFCA820D889FF60103AED9DC +:107D600094FEBB7035F0A3B74CBB83D3CFBF8767FE +:107D700065D80FB743CB041DDEA6C4D061FD943D8A +:107D800097201D01BD0FBDABD04A72E6FB44FF8DAD +:107D9000BAD383E7A14957F3F8663FC6EB7A880E5A +:107DA0003B70DFEF522253715F767FADF17216C3E5 +:107DB0002FF398EA453D66FDB1793BF0BEBDE21870 +:107DC000506D942FDB5181E70136E0C740AC497319 +:107DD000067A8FA03D9DEA207BBA6D2EF72BB41555 +:107DE00071FEB059D0FF83159CAF3E24F67D5DB97E +:107DF000B609D703F8F708CE231DF3906E12EBFDFA +:107E0000EF52731ED6BF49ACBF538A9553B376D396 +:107E1000FAADF8CB1A857FD5E0BF8CE79D19C2AFCC +:107E20002DE4375E45BA2A855256960F2C2B574FB4 +:107E30004439E3AC5B342CBE59E3535C7E335FDEE4 +:107E40003CCEC0639DF48D6C6D35E9FD9DDED1EDBA +:107E5000BDE34DE6F80A639C2A5BAF0DF1B6EA9CE0 +:107E6000CD445FD6B4E88E675DA85F7787AE18759E +:107E70009C934DAEFE523BC505526A2D0FDAD938A0 +:107E8000F49FBDD7F9ECB0E772C1B571FDA5B1F1B2 +:107E900038FE3524E706D62AC427BA33D8ABF8EE25 +:107EA0004BF7EB0AC5537627727C609F3F7302ED58 +:107EB000F0A03F688A27C0F8448C43FC4D05B71BEF +:107EC0004AFCBD0CFD2209FAC7768CFF3855E1A3A8 +:107ED000FD5FB1567204211F6C4B7668BC3F265182 +:107EE0007FA05748D86ED08EEB5FA1EFA3B8910466 +:107EF000C863FD159D99BCBE787760659B628A1F3B +:107F000053F005188CCFC7176348EFD6298D43F877 +:107F10002BD17D006B9EDB75AC9F8D66BF3E1379C8 +:107F200091E2441920FFEF86F163372F89273CEC5B +:107F3000BA5B127AFF40FB4A3C2F28740A3D87FB4C +:107F400083EAF15758FA6647A81FE38EBA9AED0CF8 +:107F5000FD4BCB597507C2D13B4161E8BF613DFC88 +:107F60009D0117FCC3713275F3BB0441CBBB03CB3E +:107F7000594C39EA4FC2CFE79C2BFC31F92C1FE951 +:107F8000C7B78CDBABCE29422FF60EAF1727887808 +:107F9000232B5D74FB57C6C7FA0F7A34D98578F264 +:107FA0000918C268DF6E76E83AEA6D1D99B6500B83 +:107FB000EA6D224E61A55837FCAFA30EEAAF1071EF +:107FC0007A57FF41665ACCBABE3618CFB4987DBCFA +:107FD000F65C8A295FC42698EA97B8269BCACB3CF0 +:107FE0009799CAE7786798F2737D579BEABB80A0A0 +:107FF000051C79BC019328DE809AC8A672EE0FEBAF +:10800000E4719E1AFCC37D49D106ED18CFBB4CBC70 +:108010001763E0414726B7FF5658E2055299AEA3D1 +:108020007D7B03E04504EADF1032C78DBA841DE88A +:10803000B2C42518FB5934D7125F30C2FE45F90D82 +:10804000C7CF91F9178FF3CCF1FD27D9FFB05F6F40 +:108050006743DD72B15FE58B1B287EC2712E996983 +:10806000880FCF5DF9740E949708F8386C41F2E3ED +:1080700038CEA551F9E62C99DEE9F9C4CBC84FE713 +:1080800070ADEFC7F5389825AEC3C7E33A307C032F +:10809000F97C4C39AD17EC013A4FAF003CC47EE798 +:1080A0009C939806FA9063317FCF867939DC0CFA7D +:1080B0002811F05A553659C2F6737CE6F7721C2225 +:1080C0007EC361D98FFB1887EB6D56B8967EB9F3E6 +:1080D000B344795B3DDA1BEB972915B1E7086FCC08 +:1080E000E572F12E915EB80F9E24BE0F7149B8CE95 +:1080F00053FAA251F97BE5B9C9A40F0EC9952F888F +:10810000BBAD14FAE3E624F37839AC22B90CF6E7F8 +:10811000DDC512F1EB530D93C9FFF94935BFBF908F +:1081200083FE58C8BFAB717FECA906A5EC26A8FF5B +:1081300077C057F27F8C14870E0B8CC4DC6F182924 +:108140000EDD1AAFFE4571E86CB125EEFC2BC6A121 +:10815000BB985ADE0EEB9927F8CD4B773F9E8FF1F7 +:1081600086FAAC4495DE35B2C499B7B73D5E8DF85A +:10817000FB5E03F061E207E6B8F2F76C03A52F405F +:108180007FEF83298271E49F9D5AD031B380E2D082 +:108190003FC638746B5C797D4349C74CB4B335EF47 +:1081A000598A6B2FFDE0A3FC34BA17B506E5C2FB74 +:1081B000B98BA8FD6F35D7C7E891B2C69D1BED3DC1 +:1081C000B287B76783B6A990BF49CB1DA4F68D4788 +:1081D000288E4BDF2A53DCF817C5A5BF29F0B1560E +:1081E0000F57E33ED7E62A2C2C45E3D247D28BAC7F +:1081F00071DCD6F8EDF6B9DCAF6807FB604C0AC657 +:10820000B7075663FF756B251FBE3F57A7269723F9 +:10821000AB32E2DB8BD64AC42797B74974AEB47948 +:10822000C9537A0BF2515D2139B27C6DB2A310F2C1 +:10823000D7DFC92F615D1F92481FB9A15109A373F0 +:1082400042BA8DB70F1648DBD0B41F890E06C2069E +:10825000FE471251EF3B6EEB4FBC12DA1D5FAB20B5 +:1082600045B2938D33BE549CBB91FF77E3D973180D +:108270003FE7786931A7ABB75B027FC4FB08F7BE65 +:10828000AA30BCDF7D1D0BD07D60C6724F6D00BE75 +:108290005334FDEF47CEA7A1BEC3F589EB7217B6E5 +:1082A0005F81E5AECC7D898007FD382F27729580F0 +:1082B0001DEF87C5CFB6137E27F8B791FCADF4D973 +:1082C00042788F219E59F8AEE0EF43F7F25C9C0FA5 +:1082D000C70B7A5ECC7A6DA80F5506074BDBA19FC2 +:1082E0004540373E733F9C3FDBB5B2EFA03E18746C +:1082F0008774C0C3AAFAC1C338DF85B952189F0674 +:1083000063020F65F88774E5665AD966288F177E71 +:10831000C2EEDC6D1AF2952ABC6FA1D27D13139EBA +:1083200056698F333C7765D0FF2550BEB0DA5C1EAE +:108330006FA193A995FC9CC49093DDFE8514AF8139 +:10834000F11C78BEFDD202683206527BAFB707F04F +:10835000E0B5BCF2C3A89FB937CB743FC55F29F421 +:10836000243FF37F15B9EAFC46A4390EFDC9CC358C +:108370008076EDBB7730E29F4B75298CAE98927A70 +:1083800089F2198DFC1EFAC5217614FDBF4B415FA1 +:108390009803E3663444CAF8F91FD70F0D3D69E925 +:1083A0006D403FA827841C3E7C22AF79C954C72A60 +:1083B000C8BF930E7C09F5AA4EB37E087A84493F64 +:1083C0005C5EFF7B929317EA895CBFB0EA8BF10297 +:1083D0006E3595420E0EE98B3D89A42FDE34BA7CB2 +:1083E00032E2E84E5ADE1B5B619C2763F018C51F22 +:1083F000F6B2857948EF3F71C5FAE78C38C39757D5 +:10840000059757C69CE724F83D0E7AEF27F74BEA0D +:108410003943F28E25F2FB567F70A35ED35FC8ED21 +:10842000BE6839FCDF4DCDDE407A5828E06E433817 +:10843000CC8A9ED3E5B00619AF3E74E772BFF2E670 +:10844000A9DC5FD1B585F99C632E9C47BF6857A610 +:10845000BCF732EE73FF9B0ABD4368ADD7557EB5BE +:10846000DDE746B9C8E1B628326BA26F18FBE3E539 +:10847000F23FDB7CB0FE799143DCFEB1F57A63E339 +:108480001E5F15F3E89EF50CC373A5D7A771BC4911 +:108490002874FAF05CFC627F7F1BDA5D197E5FFB5B +:1084A000B7610BAA919E01EF261648A4B757F95958 +:1084B00098E3D74F886FBC027A3BF91199452F0E8C +:1084C000039F9889DF19E97D31E5228EA697ECA7F5 +:1084D00084028E779847FAAD01FA457AEFCFED4FD7 +:1084E000C3FB4FAC82D3712EFC8BF5E31A698D85EB +:1084F000AEAB5433DD2758F4E28B3FFF4527D2DF84 +:108500002B407F787FB91BF61DC7E92F78C685F60B +:1085100061206F651FEE032B720D5C0274F32B7BE1 +:10852000AF6B31D6CF93C735C37EBF328597F71770 +:10853000B9CE201FFA55D195137DB1E7F40FB16B79 +:1085400082A09774E7FDD87B7322B60FF621DFD0A7 +:10855000FF39C6B11363C7CA7F343133A6FEF4CAEC +:10856000A20388BF74A901F07DAA239C355C9CAA54 +:1085700081AFD7F7FD90FC61E8F78E1B458E9D1605 +:10858000787242F8B9EB3A93CBB561FBE574747D30 +:108590000EA3F70DEAEFB33B62FDDBEF54723FCD64 +:1085A000907C5CCB2AD08EAF3F1CE7C889C1BF3717 +:1085B0002AF9796230984CEF2C58C7395569D66B37 +:1085C000EB9B9903D7198CA43B104FEBEABF5CBB24 +:1085D000EBA78A791E4E776426C6D6E37EE1BAF50C +:1085E000C3F763C499683B8A1D88EF71E29D82FFDF +:1085F000B4FBA85F17D32217A1FED4C3EF0F45F534 +:108600006EEE8774A99ABC09F1228DBFB3DA9196F8 +:108610004F74ED8AAC96310ED601DF87DB8FF542C1 +:10862000EE76813E8B7A81DB1621FBC77DCE4176CB +:108630008A23374CF138F1E7C691BDD2B7E416F280 +:10864000DF18FD8FB4BF0F083DA35DF42B55713FBC +:10865000FE385B504AF647ED2C978BF3D38B6C2199 +:10866000FA0E3FEEB1317EB38B6ACDF6F4A14A0E1D +:108670000F475A8AE97B7D6678A74CEF1DB95BF0FE +:10868000FD013C5F453DA3CBBF527EB700E33514EF +:108690001167C12464DD8152AEB718FC714160706E +:1086A00031DA852F097EB779EAE8F2C11AF710EFBF +:1086B000DFA60DB7AFBE2ABEEF092A2F5F80CF8C91 +:1086C000C5C4EB665671BFE3021BC0221FF883903E +:1086D0002FD59678EDA9A21F233D54199C5AC5FDAC +:1086E0008C11CF30E76186BE159FCBF52D48CBEEC0 +:1086F000443E0AFC0BF528C0D6B24D0551FDC5EB32 +:108700000F13BF5C047A16F2D3AFAA675DA04F3196 +:10871000D0B7B07FE39D4A8BFE142835F3C1746057 +:10872000DBA83F2D147E840BF5236EEF5AF5A4B918 +:1087300055663B3787BD1220BF552E7F0F77F3D488 +:10874000B387F1FDE14F412EA09E7D3C7791498F8B +:108750003AEE0FDBC8EF26F85BBF655F2B3585CEA1 +:10876000D78E83BEE501B974DC1ECEB80FF6272D77 +:10877000F7EB956081B2E3539E74D711DE864D7E90 +:10878000A5D7728F784EC1F727B6ECD0111F751F91 +:10879000233B214EE82547B6F8B6229F67BA574AD1 +:1087A000BA0612B1AF39EC67E4C7D83C6D743FAC80 +:1087B00031CFB3155A03E2C1887A0ACC0BDF8306A6 +:1087C0007BC4B512F26B04BE0DC9E355C1355531FA +:1087D000F9F85CAE9F809C9884FA655F9EA3363C56 +:1087E0000C5E776FE9253905C8702A6952F4FB13CE +:1087F0005B6C7F41F9A3FB1D32C679B06CAE277567 +:10880000FF303703D7D397F87856AC3C32F8FB8D5E +:10881000955A7315C66354692D55C4EFC4B98C6855 +:10882000BFC4C69EB7A75C380FA3FD1D73C57BBA36 +:10883000D95CAFBA57622D78BEABD729145FEC5321 +:10884000431EB44B4FBE3999E2629CF7CC18230FFC +:10885000B32E432E3D2CE084F6512C9FA951134C8E +:10886000FEB6F985A9A6FC8DCC47EFE6C4F8A712A1 +:10887000853E2C23BDDD7B0F3F0F3EB196DB69713A +:1088800097AEB70747D9E713F7F0F389B823FFB0DE +:10889000A33C83B4DD8B766E67DD4C90116C4F1575 +:1088A000976B4BCF25107F36DA3D5BE5E3763108D9 +:1088B0004CEC7FE9B9242A8F6B1DB4A35C5B11B922 +:1088C00097FCD64BCFC5119F8F6BD55F401361C509 +:1088D0007A4905880E9547DBBBA9DE8D9DE6F83108 +:1088E000831FC34FC01D7BDE73C9EE9BF09DAB2180 +:1088F000FDB34AFB19EEAF2F97C7E538F3B8DE6931 +:10890000D09D75DDAEDC784B9CAE3E740E8CEF9E38 +:10891000E0710BE7E7FAF3886F73515ED2FB2EE745 +:10892000CFE3B993A1FF32D6D386FEA0398C851E42 +:108930000614A9C8B61BEF9D887EA11AF45786BFFE +:10894000C05CCB5CDF6E4B2BA0B8C3500AFAAD33D2 +:10895000ECF47ECAF9F3CC761ED6C3D286DABF1603 +:10896000EB2FF721CAC23C5EF3F3B89CD55A2FDD3A +:10897000035B0DFC34ECA177875EC1A5DEC25C838E +:1089800011C897C8EA9BF82E16DEA7C0F328C3CEFD +:108990006B4EFC7D466C5CE5CD9B14131C96DF99F9 +:1089A0006082FF7501F33D8E86AD134CF932CF64C2 +:1089B000537E8EF73253FBB93EF37B178B2AAE36CC +:1089C000D5BF406F66DC9F3C92DE9C549D2CF42109 +:1089D0007519C2A3CC9F43F7FD0DBF7985807985BA +:1089E0007F890DDFAD3B8AEF44A01F48F8370D3F6C +:1089F00074C9AE7D2457CA2CFA714221D7C74B7671 +:108A000058F5686E075AF5E9C46A73FCE6C5205844 +:108A1000697EC24E32E68378847A7019CA2BF5C219 +:108A2000F9007ADB0A507E629C937AE1BC6ED9B57C +:108A30004F477BA404E417DE2BF8B2F3FBB2767940 +:108A400051761DE9D547BCFCFCEA48F67DA5299086 +:108A5000EF4BE37ECE3E6F893B05FDD4805F0CF08B +:108A60004B4A6B76A35FEE857489E2C00C7BD8E835 +:108A7000B74FE87D6F80FE8D690E9BE246B9837625 +:108A80007B598CFDD837299481FCE297E9D3DBD060 +:108A9000E5F3ABC4E919C3E97D47E266F078C1C3E9 +:108AA000B36CC8374A6C211BDE039EE39B6C43BD4D +:108AB000E78F62BC392EEEE72AF171BDA46407F797 +:108AC00027AC7649611FFC3A373BB36D3C941FF9E4 +:108AD000A184CFBDB1D51146F5B13C0CF58FD8C3FB +:108AE000A41F1F85F28D905FE85D679B1E8B471565 +:108AF000DC6F10807FB86FB7ECB09F8EF59B17A727 +:108B000071FCA9B0F8118A857E516CF97E5DB5596A +:108B1000BFF0B110C1E9F90C6E7F8F64C7F709F996 +:108B2000FC6761DF7C28E2C3DF17F1E16FE23B38CD +:108B300097E2BBE9FC1D9CE79B54CA1F6D2AA4F475 +:108B400018C68FD3FE54506AE081D1FF0689395090 +:108B50000EE8F748741F61C84FE49AB13E00BFFEAB +:108B60004AD0E10AE197EC2BCCA5F88417AAB46FA0 +:108B7000568F1D19DFFEDDF47958EFE961CE698764 +:108B8000CA1DEC9B78AE90CDB40C8C3B3FE9BE3453 +:108B900025368EEF57D55CDE1EB9CE8823E771707F +:108BA000DD6B9FE1A93F7FD438DF84F022924F2311 +:108BB0009577CBE2EF83286EBA6FFF7E9E7FBB1264 +:108BC00033FE23D566BD2821B284FAFB46E76292C4 +:108BD0009B0F549BFD483DDA7EC2DB4F822C84EF15 +:108BE0000B8F382FD18F95EEFE2CE8EE43611F21BD +:108BF0005E608A7881DF112F308F788179C40B4CC9 +:108C0000112FF03BE205A6279B6A29DD20ABAF655B +:108C1000491C6F513E46CF27B97C237E0D7AC92D62 +:108C2000FA7D472F825FEB7A4687575DC7DD5E94FA +:108C3000FBEBA4CCA378BE7772413C9D0FAC8CBEFD +:108C40001736ECFB620996F7C490930CE947E2BD36 +:108C50002C2DA6FEC9C3DC0F146C541E888D87868C +:108C6000B1490F0D8AFBA7FF53FC3C69C1CF2FCB45 +:108C700077B3AB83BFAE263ADA175161BFE76AFC20 +:108C8000FE42825FB7213E8EA8777B0DFF20737076 +:108C9000FD3B3E69A53BB67FC33FE8E3F248CC27E6 +:108CA000A827D3BA7BB416BAC7F609BE070B5D7501 +:108CB000304EDFD678C6234BC6333C67BF3794A40B +:108CC000A29F2B1B4FB2D2F01E2E8F1FB9D7B79287 +:108CD000DF93D458081F8B738497103E4B9E255406 +:108CE000CF3551F46BC49DA82C8871282E8C9342EB +:108CF00006BC89C741C236EA148FD2A8537F785781 +:108D000008E5BA0BE3A24C715D9AFC55E28F98F727 +:108D1000CB9D4BB6897B4043EFE7F9BEDAFB798404 +:108D200072B80EB087D13FB2D9C1DF03ED98226D82 +:108D3000C777B10C7D20C09BB2CA5CA91DE5EBEBE7 +:108D4000D31D3E859F83B7231D1C4FE7EF3FBD2EEC +:108D5000F1FEF474FEF7441CB95CAE18FA2E7AAA40 +:108D6000E9DC02FD8568FF6A167D029920C6016A6A +:108D7000367AAFA7D2A21758CFD1ADE7BC06FE4CCA +:108D8000A9117CC9F0F38FA04F5BE169C4397CEA7B +:108D900065241752B420D9FFCB84BE9ACA7A4DE716 +:108DA0006718D710AB27625C43AC9E88710DB17910 +:108DB0008C6B88AD8F710D66BDD4AC87625C8359B6 +:108DC0002FBDDA121F6EF1473069D4F376639D39F7 +:108DD000BE57689F36A571BD7CF3C285DA4DC8B712 +:108DE000F1FC97E239D8DBA897260A7AD259BF86D8 +:108DF000E744E9437A20F7735C24C61987E7F780D4 +:108E0000EF69E2FCDE881F30FC20CE40408D403F01 +:108E10009BA49E6DF8AEEA26BB968E70DC2449A614 +:108E20007B6CE9CCAC575F649D7F81CD140F60F8FB +:108E30003D8C780067ADF93D07BB053F6EA8914DAD +:108E40007EC91CDF7F52BCD8E69533C4BB75B0FA2F +:108E5000183D5EA9E3F64A2DEC3FBE2765CC739919 +:108E60008857B801D71BC38763F47E1BCEBF36A3D8 +:108E700057E371F64C771AEF78209E4BBD6C1CFAC5 +:108E8000839927F36180E74335DC5F6BB4B7316FBB +:108E900033DF4F95E2FF826D0AF115925D3172ABBF +:108EA000D5BDB013EF85ACC06799A561FCF57AED2F +:108EB000D1D8B81C29B65CA1F73EE9DC3C41EC6B8B +:108EC0005DA7399E02FA35E51316F37B0C563AB4CA +:108ED000EAF136180CC7FF5F354CC01BE829E65C89 +:108EE00021BA7EE67B5835AD7B1BC7D3FFBFD73D8C +:108EF00064978B79AF10FBFE767CE0D1B130EEEF5A +:108F000024276B83F495C4C1171A611D67F02D7770 +:108F1000BC2FB0F9EB8F225DFEEE5E27E3F165BE5C +:108F2000E577433EB8C949FE99E518290FF33F5E3E +:108F300093497095136653FD152D8904870F377F6C +:108F40009687F2F7ED94E072C4BB0FEDEA248CB380 +:108F50003BD99227E3F9FCDBF103F4AEF0199979E0 +:108F600030BEFFEDDADFD9D10FF78ECAD4587D0DB0 +:108F7000D6AFC7AED33B8FEB81D7CBDC8F0FDBB93E +:108F800013CFA93FB869B2CCDF89E5F81D94F8FE8C +:108F90002E98C7FDFFC186D576922FA560438C22FF +:108FA000CF60BEDF1CEEDEEE4431EEDB1983DF481E +:108FB0004D43B8314F0BC14FFDED5DE84F0338D144 +:108FC0003BD6788104BE3B268CDFC6E3E07DB46EE1 +:108FD0004713CC0F40F5971ADECF49AC8BEDBCF1AF +:108FE000FC5D295B307749225FA714B34FB02FEDAA +:108FF00057209C24E6DB0F74BFA2E7F7746EFF2CAA +:10900000C00DE5C83B9EC1F6C390FF10808DE7E21E +:109010002BBC7FA277C3BF9D0F3B9E8E719666F8D7 +:10902000CD9A9742F0F870D3FD8974CEE96141C7BB +:1090300038FA3B77345E70FDFFBA0BEF5F0419E737 +:10904000772E111763C5DBA5B05F688F7BE259CF20 +:10905000181827A1E1C3B26ACC174B836366215E5F +:109060000F94215E1B71774B1BCDF8DAEA3E5B86CD +:109070007CBE5ED8E3F57E33BF849FF578FE17E4AF +:10908000BF5F80EF2B98BBE38A82E8FD532B9DBC2A +:10909000D3B0732CE7A31CFFDF4EE1FB72A6450A99 +:1090A0006FA77DD126C5C65F9E127C0F37CC1E03ED +:1090B000FF15629D00889EE274827F5935C21FD6DB +:1090C00049FAA005BE009732944FC6FDAC0BD7BD40 +:1090D0005F5F02E5F5424F75B3413BDAAB5FB4FE2B +:1090E000158B1D1D88E7AFE23BD28517C2E39D8635 +:1090F0004FEDA81F5C5FE70E61DC94151E1761A0A1 +:1091000014ECFBE9898335A905F4771B3DDBD1CE4F +:10911000DB54528EF9771013C85F1C70703F0390B8 +:10912000F7CC285EE085AF7428BF8979884F1A781C +:109130003304A74E6739DED7FADE8D6E26C3FC8274 +:10914000DEAB56513C80814F1638213FB219FE48A4 +:1091500085E2164DF2D58A6F32CE9FF62748F81F6A +:109160002C15F1D736D8C761DE31A0FD1E0FFBFAF2 +:109170004AD22A7D36EAE1F171E87A6E7D99FFFDE7 +:10918000A86CD0E848BF04BD1BF569E33D1BA3BD37 +:109190002D6CB60B2FBC97C0DF0332EE1D0CB58BC8 +:1091A00070BBCDDEB96058FBCDA6F0BF83D87E780A +:1091B00029CBCAC3795DE53A4D78CAF5459B53ED95 +:1091C000C4FB8BEC357E5F98A5B9D9EF0CB8009C39 +:1091D0006DA9B3BDC8575BE3CCF7EE9B049F6B133F +:1091E0007CCA36868F73A17EC9F57145F895A3DFD9 +:1091F000C3FC3BAC0BF52145F89315A1478D5CCF23 +:1092000046E58AC5BF7D613DEEDFF6956A05FB0A3E +:10921000F0DEB4D383F180FD71EC75BC4F69DC8F57 +:1092200036EEBF2E157861E40D79EB29D30EE0BE42 +:109230009DD69CA9F81EC05271DF91C645FF238BB5 +:1092400037E5978AF7378CFC4FE6E58838ECF1A6CE +:10925000EFA06F4FDC877698DF918AC31A71B50350 +:1092600075DC0FD66DD7DB313E4C2F720DE239FC29 +:10927000F3790EE682F20565373DCEE3F68264AF00 +:1092800024087CDAECE865F8779B4E8BF742E127FF +:10929000A9681CE91984FBC1D2B11D286F918121F5 +:1092A0009F708417939D56ACB3F2C5C837457C6F49 +:1092B000B0CD1C675382710ED06E39D82D780EB7A1 +:1092C0007CADB9BCD612679360C91BFC10F5F2D90E +:1092D0002917EE979137E6D3A371BF8E613759F105 +:1092E000E92BF875E83D19AB5FE7C4BCD1FD3AAF97 +:1092F000CF33C793FFBB7E1DA57391093F8D7B675D +:10930000479654CAE1343C2FCFDA1EFBCEED5FC442 +:10931000BC7E22FC3FCFA1FFC789EF6673FF4F449D +:10932000F87FFA84FFE779F4FF907F50137EA00A5C +:109330004A8D73F86BFFB998C5FAC73C73837F9960 +:1093400017036FFBB91C9ADF06035EC2FEECD1F86F +:109350003BC09FA899F4F716F007FD4755862E4AA3 +:109360003C02EC53BF4FDCBB6B36F45C7A479EEC9F +:109370009E4C9EF51971E6404755B3ABE93DFA2A7C +:10938000D57CDE92906B8FFA8B189EF3D82CE73148 +:10939000A3FB8BC6280B285E4811FEA2F6C3AB19AF +:1093A000C619295E95D6AF58FC455DC2EFF365ED51 +:1093B000E25FCCD352E6237FAB09A4CDC775BA7563 +:1093C0008A036A4B2E5F8A78F18024FE3E8FF55E19 +:1093D00069E00C7F9763320BA5A23FC5EDD1F13C4C +:1093E0005BF1D9483F19E9DE86715F038608CBB48B +:1093F0005E8DC68BDE9BE4F7B9DAC5DF0D6647E20A +:1094000048CE3840CEE0F99FF1CEAC232D40F10597 +:10941000CC2DDEC5B3A9EAC261DFDFE1FB573B2FEC +:10942000A0E2FA94C862C2E3AA1A6D3AAE7B085F62 +:1094300087EED38D1EE7D12EF0F25A7B90A1BFDFCD +:109440006EDCA75375163B7EC97C8EEF672A03D767 +:10945000E2388E73D9342EC0B92816CE17DC8F6A45 +:10946000FBE94F7F3A93DF7B4278D9411E221E9F52 +:10947000A90CCEC576463F381EB687FEAA46EB0F2E +:10948000DA05E6C7F0038757A7789A0DC2BF64AC28 +:10949000FF814016BD1FF84060219D13AF982F99A2 +:1094A000F85794AECC727B68FDCFFFF5AF7F05FC1B +:1094B00068C781E5187B633EB7CBED42AEFFDA119A +:1094C000BA1DF5A95B5F7B6E551AECDBAFD1874502 +:1094D0007F6FF9E74FE27EFE006DC898BFC7DC26BC +:1094E00089723DF264039E1FCB46FEF82ACD1FBD54 +:1094F000477ADF6BC757E9E83F75A9C77C80B78912 +:10950000B9FCFD2986FE8D027C0F52C46514C4F897 +:109510009DB22E8CAFB0C68BDBC57D05ABBFE146DF +:109520000C0C01B87E6FBEF9BCC4F87EA83278E39B +:109530007CAEFF7A2F19265EC5A81713D744EFC853 +:10954000C4C922AE69A14C7E36DC8FD1E222DAC5D5 +:10955000DF1718DADFA1FB1CD9246F3658DE13DAC7 +:109560002CF6D5480DFE68ED37797EF166C42BC028 +:10957000AF07691D23F18562467C4072737F132A11 +:10958000B26887D8C5DFD7C28700902F38045F182C +:10959000851F88BF7362E50741E2075D517E407217 +:1095A000CFB52C218CF191C639902B57E7FC40F8B0 +:1095B000A147E67B9C1F00FDEFC3F5D5CC0F3C43D4 +:1095C000EB53F97D952FEB27473ECBE73397E20628 +:1095D000168BF18DF930EF624A0F0B3EC002634DDE +:1095E000F7CE9E10FB7F64BEDB248F9F98EF31F98E +:1095F000C7D9A6D0A8EFCD3D26EEE1491947FF21F6 +:1096000025A19FBB23C0922E9CB74BE81B5D555AEA +:109610003FAEDB4AFFEFB4F1BF47FB4EDB22A2FFB8 +:1096200093F3CD7A8491D60A3FF950DEF87BC36D6F +:109630004F3DF514F0AD1338AF98B8D093F3B91D82 +:10964000582BFCE639E147427D30DE897AFE7768A7 +:1096500036AF1C3EEEEC9D7BF8FCF01C03CF07E31D +:109660008E3C44F1207F9BCFEF232E5D2BF1BFFF7B +:10967000EE2BF882FDE2FBFD19C2FB0A8AFBB02348 +:10968000DFAEC538477CB75097280EF3CBF663F0B2 +:10969000AF7FCE3FCFF957BCC1AFE21B703E063F54 +:1096A0003B3F3F6117DE6BBFAD46FB17E2D7C1F909 +:1096B000DA7992B32512D911FF17A17C379B00806C +:1096C000000000001F8B080000000000000BE57D7B +:1096D0000B7C54D599F8B9F34E66920C098F414131 +:1096E0006FC2C311079CF01210E586248A40CAE4B9 +:1096F0004198BCC80441431A746CB1655D2B373C7A +:10970000624CAC46572AB5AF01818288468B96BA27 +:10971000FDDB11D0B22DD4442D06151B7C06DA7565 +:10972000E3A35DB64BCB7EDF77CECDDC7B3321DA96 +:10973000F6DFDDFDFFA7BF7A39F79C7B1EDFF9DE80 +:10974000DF774E988BC5D974C61CD5176F6BCD6665 +:10975000EC3CFEE631961592189BC1D8A637587D91 +:109760004720F15E7BA669F5CFF17AE6837E8663BA +:109770003F576C37F663A17636A714C57636377F28 +:109780006AF517897EB4A7634CF45F9995B1A22559 +:10979000CA45A1118CED5AA29C5F02CFF34B600C1D +:1097A00078FE646184CAF02BF0CC64AC96F1DF4A99 +:1097B0002936818D63EC8905CAC521E827A5964520 +:1097C0003B3CF0FC318B3E9D64FEE3713CE827A5F9 +:1097D00094B733D74FC17943FDC1F2064B0BACEBC5 +:1097E000C4266BCC998DCF69192C497FDAD371D6F9 +:1097F000CD942C5DD916615E0FBE4FA7F7291616C2 +:10980000C1F1EEB318E11A15EBAF15F36A57A6666E +:109810004492CC4B7BBA63A54C9936787D9BE89FEC +:10982000593DB42F272707B65B75FBB2488CD3DFB1 +:109830005FBC9CFAAB6929A3791686D2867FE08645 +:10984000EFA7B2A9E7AD389FA719E2C9A71116B5CE +:10985000E65E605EA29F43E5A929E361DCEE4E6B04 +:10986000D009DD8C678FA485D206B67F6EBD97A91F +:109870009731F6D3F53EA642C3E7D7CBF48CAFF7CA +:10988000D3FB83EB83543EBC7E16955F5AAF50F9F1 +:10989000C8FA05F49CF7A74D4533615EA99D56664D +:1098A0009507F6DF10920DEB4C3D3B85A9303FD973 +:1098B000E34DC7F93837E75F703F7FBA9E8979B9C2 +:1098C000C4BCBCF43C28E67B18E74BF3E2F3DDB5FF +:1098D00020720BE2EDB567E35609E6E5969982F052 +:1098E0009A7BCD46C50B70F0DEA0DC1A22FCED9110 +:1098F000439319BBC7C2E9465DEE8EED842D29B4B2 +:109900007A0E5A116E2BC76D477CEB5E599A610136 +:109910003C50057E98E7D70AF38B5FA6DBF7C93783 +:109920006DB0C0B893E6B31E6B90B189FEBE3C9695 +:10993000CE58EEC2888AE34EF433C5994EEF153601 +:1099400005E6BBD5B62006FD9FD8AA7E2F05C665C5 +:10995000AA4F4ABF16EAD9D8F46280CF6E41BF5BE6 +:109960009A4B2F08A74E318F4F16286D487FBF594D +:109970007F80BD3B21510F74AA20DEC300AC04D60A +:10998000BDA5BCD5B502FADB62C2C3A33747B68416 +:10999000746597EC7544A0DDA96FB34B5806C0639E +:1099A000B3331C4B328F535BBDF7D1FC997C2AFD3E +:1099B00092C47B58DF9A5908DF4D4ECB04AC0E445D +:1099C00058318C7F6A4FCB58E6C1F565D2F8DDABD4 +:1099D0001ECD9103C4771EC5F933193E1A3DF87A9E +:1099E000711DC43F043DD30F3E49BFDA6FE07F478E +:1099F000C5FA347A871FD1C57DBF1A37B59525BE04 +:109A00005BECCFDEDE2A25DAE34F190974CA743F16 +:109A1000E077A9F8CCE64519EA5DF88F71F89F8EDA +:109A2000C387A01F772835DA0A88B6286867EFF859 +:109A300079BBF3F07FB71FCAAE44D9E5B719EA196D +:109A40002B618A56B6E27F2B99E24A9433AC4D6380 +:109A500083C8C7D659BFF51ED04FF70BDFB6CB0072 +:109A600047C7CA3A16A1F70E7AAFC7CB77EC8CDDA1 +:109A7000B8503986FB99B248F915C2F5070B94978F +:109A800009FFD7A935B8EE8DCC126C9D8E8B65B2CF +:109A900017D623D1C218BBED86C8EBD4EE212FFB1D +:109AA0001AD67F253DD80AF82C799B4388CFB6A2D9 +:109AB000D009DA278FCA908E19ABF67E70057EAF7B +:109AC00058CE03DF726047A3891E7F43E35BDA83CE +:109AD0004D12C2AB83A17C39BAC44B78CD7C30899E +:109AE000D989F6250B9E62886F20D7402831BED1D8 +:109AF0002E925BFD6517AC779EA3336001BACEED65 +:109B0000FAC16EDB358037E3447BF55BBB15F87E2D +:109B10005EA155B47F70B76263ECB843D7DF2CC643 +:109B20005EEEB389F27DF5F5E3617F9453055E98AF +:109B3000D2F950DB6E17ECAFB5C222EAEFE955A0BF +:109B40007E8E5FD9ED867A77F146FF3DC3707C65E6 +:109B5000771A8CFFDB3DDBEA8F8CC672DFC5AF4224 +:109B6000B9BDF848BD2B05E79B17F502BC9E2DDE5D +:109B700051EF82FA63397CFC5D5DBBEAD5B9B8FE72 +:109B800090548CF00DB507910FC17821A4AB39C06A +:109B90001FF4F495596C257C7417DB095EF3EC71A6 +:109BA0002BEEDBBC6CA6A8308F3C3FDB6481FD7ADA +:109BB00079EEA12C84DBB16246EDA0FF34EA3F0CC4 +:109BC000FDA70DFC2EB558A676E6EFE1BBE1C5B8C2 +:109BD0002F65FCBB39889373F8BA9B6C54EFA3FADA +:109BE00028AFFF922DB77D02C025B36BFD6E4F7677 +:109BF000A2BDA36B737DD3786A7F09B5EFE0ED87D3 +:109C000086B3F17B4DBF39CAD8027C3E344C0D87F8 +:109C1000E0A91673FDC0FC64AC2F0BC739EEE8F366 +:109C20002C81755EA1AEDB5D9042F3B892E071804D +:109C3000C35BC38FF15D5FAB57F9BAA6D13CEBF9BB +:109C40003C07E33B7FE953C3CFC95DB7D7AB1CCE1D +:109C500079345E359F8F861FB95D6B77AB63107F5C +:109C60003EB62AC84FAD4CDD0978B578DA9F2ED6BE +:109C7000EB23DBC47A8FE5A8F5088F547F1FEDAF87 +:109C800022CB4CAF1F3C5FCCE516D2B465A6E057A3 +:109C900032978B8867302F833EF89CE8F7A0781EB8 +:109CA00077F0FE01655DD6A91C4F56C03CAA44BDA5 +:109CB000F65D3F3DA9EF10BDCDCB7D97F6B9AEEB7C +:109CC000A0699F9FEFC57A6D9FEBBB0E68787223EA +:109CD000C163087AB813E901DADD86F440EBEF2BB3 +:109CE00045BDA8E5CF36B69D9817C773585FB03508 +:109CF00017E1029C0DEAF3026C9B5EFF9A17E828BD +:109D000047F9ABA397AFEAE9E58BF61B457A1A3121 +:109D1000B07FE8F7AE64F4745BF17E8D9E3650FD43 +:109D20007EBEEEC1F077303AF8BED807F353EB476A +:109D3000A3CF3BBB3A767BA4A4707F90D61DE1E312 +:109D40000FC5B7982FC2B01DC8E9ADC549F0AA44E8 +:109D5000E6FD83C6BB1BE959C3FBB2E253BB550FFB +:109D60008DD7A65F6F1BC27F44C23ED1F05983E3FB +:109D7000B3623D45028FE1FBDD34DF951C9E49F067 +:109D80007AA8F13BE87B4177F3988D299909FA1A73 +:109D90006AFD0F8B7DB6E5F3F9B231204FD0EEF2BC +:109DA000C9DB487F5812FA29F52FF8A336FEC1E225 +:109DB000C7EAC5F8713D9F292AE67210F0C926F856 +:109DC0006F999E4F9525F0F3E7F45EF0D12F4A5F2F +:109DD0009A9C1D4A9F72C48BC97E68662CA9FEE5B9 +:109DE000B0727B8DF9A6523DD819A43F75F9C69380 +:109DF000BE3C9EA5125DB4F965D2A76C99BE6339CD +:109E000050FFFA2BE32CA4D6B0265ACFB3A09F283C +:109E1000A0BF1F00BD1E9F688728C20E51841DA2CF +:109E2000083B4411768822EC1045D8218AB043F0D3 +:109E300069B53FA5640D273CF0D27EC4CB681D8E6A +:109E4000187FA69E9D4976872B1063A86732F9C8B4 +:109E5000612BE83B6E8137C7AEF4DA155857B1DC99 +:109E6000C1A2F03C158AFCBB1EBF438CFF8A83E372 +:109E70005E447909BF9FA68E4CD8BF3F59C8F18276 +:109E8000F93209CE9A3D9C802F3B68457BC46F898F +:109E9000215C9C973FADA640F9F70AEB6141ACEE1F +:109EA00050517F76DD09BA1BEA195B5595F432C033 +:109EB000A4741F632F943F47ED3B01079D415C074E +:109EC000182E3A7D72227315ED443B59B630D46B8F +:109ED0005B56DE68E9447B51B1C648A9B3852E9F25 +:109EE0000EE57B5EB1527D377EA8C38737713F2E6A +:109EF000E37604DA5563A2717B32FBB7EBE04FD611 +:109F0000EC477BAFDEE94D812557ADED6841789C8C +:109F10005CFB28E9A15D935495017E968F6B1F0B26 +:109F200018C9DA6C2A43BDD5B5F6470AC2F7F886D8 +:109F300076D23BDB2AD32CC8571376C2E18DBF46BD +:109F40003BC16BC999101C386E5D09D7CBDF7861B6 +:109F50004F0BC2A95372F5E073D263AE1AE2D3ABD2 +:109F60009C5EE4C3272E7F702C8E535E9556F3358E +:109F7000A86FCD83F730BFCE3D2EB25B3AF3EEF63D +:109F8000DDA4E32FE5E31C51B4BFBA726E2AC47E90 +:109F90005217041D29A81FF93BBF6981EF8FAF9DA0 +:109FA000968578DB92BDCB7723B6BBE9F5A2ABA053 +:109FB0009D2B6C9D096C19ECA37682D3A5B2AAF6F1 +:109FC00040BF078A22D79400DE54445F28447BCDEB +:109FD000D5F8D466B4732E3D773FCDFB0473F5B44A +:109FE000E2BCB237B8F07DCBCA8D2E9C6F287B8542 +:109FF00005E984E5B97A905FB7289B5D13E1FD44DC +:10A00000D9527773FA4078B47C9B5D1BB912E7D5BF +:10A01000ECBB290DD779B36505C2EF4F190EFCDEF5 +:10A02000DC3E2CE03769D24DCF60BB49390EAF041E +:10A0300070699154DF0A588F5A9116DCC9067EF771 +:10A040005409E7BB556BE376F423803D477CA5AE0E +:10A05000246B8F0A7CE5786607F1EB721B73D933AA +:10A0600013DFE52ECCAB2EA1F176915D577E45B383 +:10A070004FC6F566DF3403E1D52271BEF8D42B93C9 +:10A08000F6205FFC64416825B687757D13E104689E +:10A09000DCC3AE1DDC8E3D01F6A83723F1FE3B2567 +:10A0A0005C4E001E84C99E0E3C487CC76C8FB681F6 +:10A0B0003D8AFE0A7525D8A348C7C80B74FEB7139E +:10A0C0007B5A7C8CECD0E2DB711F5BF2B85DFABF8F +:10A0D00000EFEEFDEFC0BB89F21FD647D269BD8409 +:10A0E00017E192CBF6A03EAD809D17223FC373AE21 +:10A0F000647CE4E8CD91ED257AFF5780FB19705F11 +:10A10000D995897D347F77626BFB3707F3337CCE3B +:10A110007DEDD0EFEBED255CBEB248D6E7F237DC43 +:10A120006751A63F85E3AC707A915E42C26E950B93 +:10A13000A29D76947BCA3809C7FBA5A0376F216C16 +:10A1400031E2CD6B56EC81B173D01FC89308FEDBB2 +:10A150009A28931CD2C98B08E3FC9DCAD9589F6AE0 +:10A16000284758268BFBF5F51719CADD76752CE2C2 +:10A17000A1FA8C2BB813E101DFBAA03CF9A2E98F58 +:10A18000B6EAF8EE67250E5A7F9390E3DD9359CC3B +:10A1900009F5EEC8551BF3603DBF92589F340B275D +:10A1A000A7A4E7CD2490924CDCE208527D779EABC9 +:10A1B0006F8397EAAD38DE953E902FC0BFA775DA62 +:10A1C000DEE9D1C9A77C97DD5076B373169447BEFC +:10A1D0007C579F13FABF92E9DAD37A8CE50F4B8C48 +:10A1E000FED0C1F882CC7AD2D0BFD4B9AE3443828B +:10A1F000F21F4B2C49FD764F087F5907E81F71402D +:10A20000DDA741FFC0F27ED03FB09C5ACAF1A25BED +:10A210006261D4F30ED7DD5C487A4511939CC3701C +:10A22000B93368DFBB44FF8D45BCFDE7C07BA97433 +:10A23000C640BCC779A35E87F3BE909F6FA87933F1 +:10A2400065C4E7D2F3E69DCB203F18E065B0350941 +:10A25000DF4F8CD722C66BA7E7D3EBB78AF1623406 +:10A260009ED6EE19C54A7ECC82AC7FF66507F4E334 +:10A270006D20B8B4D9018E1ED417175A62386E609B +:10A28000EAA3A82FC233C30AED2F2F7518ECA77EBF +:10A29000F89CB51AFCF9CF96703DCB6DEB20BFBE94 +:10A2A000FBAC83EA9F127651A2FF9CED5AFF164F3A +:10A2B00042EFFC4BFB4FB7B61765717BDCBB73BA43 +:10A2C00050FA909EFCDE18D27B97D0A75CCCEB4076 +:10A2D000BA5E5C9A4DFD84596C02E8CCCCBA2ADF98 +:10A2E000938B7180FDB65C94BBFBD222BE10F47FD1 +:10A2F00070B4632CF2EFCE9F442EF55E20DE001B7F +:10A30000EBB3F868D491E239DC427419B760D9DC58 +:10A31000BE73FF6B2390BFED7BC64544AB8EB6C4C6 +:10A3200026640F6CD756CAF9D4E467F613BEB64557 +:10A33000BA48CE5487AD41641B9D6BB7D881158157 +:10A340007EB7A5D087FD344AC42E4FAE7D95E4EB91 +:10A3500089FD365C1EABB9FD4692633537441C124D +:10A36000D8C7F5A52309DECD8A95E0D4BC76DA2ED0 +:10A37000D4436B6E5F9586F8DEECE1FCB979AD14E1 +:10A38000433DF084F26A9AACC39BFA52AE77ECB3C9 +:10A3900073FA33CFFB5D517F1CF73D09DC0E14CD02 +:10A3A0006F443AAB913AD350BF6E2E3DB0DA361BB4 +:10A3B000E1D1EBC7F2F31FECDE538074CC3A2B7182 +:10A3C0001E93417EE13E76E6394FE27CF7AD72CADC +:10A3D0005618E2E0AA1FFB7A102EB83F17A0CB2F29 +:10A3E000BC3FCAAB2310DE079ABA2ADB601E296580 +:10A3F000EE06DBE50057984F1BF0D3E2D243ABD11A +:10A400008F789F85EB49F7976634A09E0404467CBD +:10A4100027DDA92C5E94643F13722A79DCF0923216 +:10A420000EB7A1E25B8E58F105E35BCDD87F92EFCA +:10A43000BF27F625A354F96E29CCE39E2F293FC0F0 +:10A440007D78B644F93E3EB5F2F11CAE37B282D209 +:10A4500021F815E71FA1B8B7196DFB7D92FAA23B51 +:10A46000C9BA3B051E00DE972C82FDAB999C3315C3 +:10A47000E94CABCF10EB6E16ED34FA8DACCBA67871 +:10A4800001306017FAF7499E03CC4B34FC4A8DEC3F +:10A49000237B658A43D90EED4201C7755896D0CE0D +:10A4A0008479875C1E07EA6BAE5C16748E463BD1DE +:10A4B000A60AB965390F8D4E970EA3FD68F67D4249 +:10A4C000785F29E21595175968FCDFACBC6C3B77C7 +:10A4D000BA83D9857A00FE3B8731BB98AFBB7EB586 +:10A4E0001DDBB102C6E6CFA676B27DA4B047A15D62 +:10A4F000C86771A03E0FB36F9F8FE3AF745EB7184C +:10A50000CACFCC97FA707E6EC5AEF6E8E20CB53EC7 +:10A51000CB759B01DFBD17595906E065AD6A7F4FCA +:10A520005FBFD1F3CEE672F8BE5A71F561FCCA8303 +:10A53000F20CE452F53A68A793DFF0BBD7A6B38BD1 +:10A54000DD658ECDD93A7DC1E5B719DAFFA6FE19D2 +:10A550001687FACA3A4F14E90FE665A82F29E57E57 +:10A56000108D0FC1EF9BD9E86F53AC5E944FF5A5EA +:10A5700032D57746A534D41B52057F723736A9CC25 +:10A5800033345C22876D04C75019D012C211E1A286 +:10A590008D9F33345C3CAC87E0E206B8A07EB3D13B +:10A5A000F3B4B20AE1340BF47CEFD0F031C3C3CD85 +:10A5B0003C9B717DA02E91FE6386C7298407E24DE6 +:10A5C000FDCE11A80FBC84EB27BF5E84D6E1067CCC +:10A5D0006845FE656B1F8BFB7352C83F56308DE894 +:10A5E000092035A238891F5B93838D45A1616523BE +:10A5F000C86E8BDB32137C65703AE47C65BEC28822 +:10A600006FCFF75A633140D17CA634E27CF2BD6E45 +:10A61000169706E75F4CFDF99EF805F88DF6043EA7 +:10A62000310EE735187FD8596A8C576AF39A18713A +:10A63000113DB5D64B248FF7FA417F86F2A76318F8 +:10A64000F93F0AADD52DE87F395D6F674E4E6F2D0E +:10A6500048EFE5627F5A6634BD9D8976A76409A2FA +:10A66000DDB9FCACC4FD60938BA95F06FA9DF56271 +:10A670008C5BB7A7133F186363A847877D9F5EF67F +:10A680001E804E9D1FE272F66BCCBB11F6A586C5EF +:10A69000EDA8CF57B1685A3ECC27C5B6760DEA056E +:10A6A000A9AEBB66AC80EEEEDE76F33375F0744E89 +:10A6B0009E9A81F8BBCCDAF7DA42C0AB8AF0F71A7F +:10A6C000BD2007D22D6AD17880A3651953D7C2D295 +:10A6D000EE93FACA0AA0FE97BF9EF8D826A8EF2EDE +:10A6E0007887E4D83FBE71E31A672ED6733817BD5A +:10A6F000F63EC9090DEE474FB99FC27218E3863086 +:10A700004FCDDED0E2966111070847242EA74FB047 +:10A71000ED1E0E1F8A7F66E1BF61FECF2FE570CF71 +:10A720009ABB6A638FF04B5DEAE3FD59A1BF7AA241 +:10A7300040FA8F84FA6F56B739BEC9E3A564E7A023 +:10A740007D513649BA683AE17F3413E5E4021BC50E +:10A7500047CF9F67B6F338F740FFF72F237D0E856D +:10A76000377FABE783EB79DC74D07A87BA06F1F2F6 +:10A77000C11B268EF6C2FC33C64DCC44FBDF86528D +:10A7800003E0D70B7A27E2C52101AF96A5A8831273 +:10A790009DA6E33EDF2DB5A7CF41BB6C8F95A15D94 +:10A7A0007626F08E82719E6699F531C09B25D7BCC6 +:10A7B000AF603FC3EA58D40A657739D723BD7BAC75 +:10A7C000F7A0986AF6FD8DF2525C1DC1121D7F182C +:10A7D000556E31F87F07FB5EF3FF9ADFEF28E3EB5E +:10A7E000D5F4EFE6DD56B223E149FEE0CFDE023AD2 +:10A7F000A4B8798F21BE8661D93BA73276D5D9001E +:10A80000F967CD7EDB7EBEB0FE6FEB2F7E707D984C +:10A81000DE4F3E5B47FAFD13EBEBA9DCB13E4ACFBE +:10A82000A7D7AFA3E7FEF52AB59F750723FA38B37C +:10A83000CA19DB00EB3893127F17F344D4D10E7999 +:10A8400027F957239333609D27A44964FF364BBCF7 +:10A85000BD5AE7A4BC92E6B49E8E43D4DE4F7E364A +:10A8600066537D19686F37F919FA798F3BD44BD24B +:10A87000D19E0663653BBC3FFD718CCA110B30D184 +:10A880006B89CFBD29C1FBF42CBF8CFC6D637A743E +:10A890000603BA3FF9FA771E47BDB665DB0FE31F23 +:10A8A000C1B8D34F94AEC178C009491D0B1A0A7BB9 +:10A8B000E0F5237B5D50BFFCBD7800F9C5D72BB711 +:10A8C00036BA01AF8E61EC640E27738C876B710E04 +:10A8D000A636ECAD1F03EBDBC9FD394CADFF32C62C +:10A8E000516CA9511FF9A9D59F341E81F6E59746F1 +:10A8F0006EC7F243DDB736E0F8E5A3787F996F8540 +:10A900009E447E73774AD4079C949DABBC6B0DD656 +:10A91000DF9DCBFB3FBEECAE35586FAD63A10E7A29 +:10A92000462CAFA05DED5FB14B85796F993435C38F +:10A9300001EF2361AB9687E1651ADF001475BBEE6A +:10A94000EDB44E01798B761BE04795E0D3FDF80F0F +:10A95000801572DB86FAD7EDA33BC8EFD836565D7B +:10A960001EE27A02E9592DF82F5CB3A4AA08D76237 +:10A97000E6CD7E04E6FB58A5889F795904E5B743E8 +:10A980006BC722EC0ED88FD0EFD264DC5F97CF6616 +:10A99000D0AB88F78D14EDADF8B4A97AFF0553C399 +:10A9A0002F8D9F89F6206FEB616A21EA1B0EF497C9 +:10A9B000789125EAFA437BF1B688B20AEABB40BF38 +:10A9C0005061BC42CFF6F848F86EF3ACB87D14EA9B +:10A9D0003193595095719C7B3F467898E9B1386224 +:10A9E000D45F0A4DFA456AC0A88FC07CA9BD0D2668 +:10A9F00087F3B539822F0E473E3F52E2F8CA8EC424 +:10AA0000305E92CAFA7F32C645968BF5A4940F2326 +:10AA1000BDE2D815DE02E48B35312917D9F82CD4E4 +:10AA200077318EDB1BDB980EF3AEF7B5CFD6E78917 +:10AA3000B9CA5D3CEF30D6D43D1CF10046C0BCAD78 +:10AA40004DCF291D18873B52BE92F0779E43C3D746 +:10AA5000F57B15C0CF9A7592287F632FE2E7B1F995 +:10AA60001AFEAEFB32D627F241BEB217F34106CD35 +:10AA7000FF50A35FC6FC8F79B9225F446DDC8BF178 +:10AA8000336B4D7002E2F7DC13698FA7607E0A0B0F +:10AA90008EC5F2AF8E7FA7A100DA152CB8AD600489 +:10AAA000ACA32C5447713B33FCAF59EA198EF930F3 +:10AAB0009ABFEAF87C1EAF6D05BE827E2B76E81E3B +:10AAC00007E6EFB896717C2B9DAFAEC27AB3DDA6D8 +:10AAD000D56BCF7A7F4CC5FCB23050630E8C3FD71C +:10AAE000C2ED88B9737CDB9A486E472C9DC827F667 +:10AAF00066513C326519F74F857DDF7913F3833258 +:10AB000095F88DC88FAB190BC660CBBA6DF1712E5D +:10AB1000D48BFA5C8ACAED20D9A1C77B95BD3E1EB5 +:10AB2000F6BD4EECF396C7B2484FFE14F016E1B1F5 +:10AB3000DAF7FD3749AF603ABBE7AA04FE2B8CBDBC +:10AB400080F87475AF915EAEE93396E79D3596F364 +:10AB500098D16EC97719CB855E63F97A9FB17C83F2 +:10AB60006C2CB34D1CFF417A90BECF04BE6BF446F3 +:10AB70006F34FA855F168B907E5F05F417877556E4 +:10AB8000458DF493976B23B8A76E92282FD5A1EF2C +:10AB90002F1BC1E6BDAE00E05401E21FF9C5E91D5F +:10ABA000590EF40F3F30D7CED05EE814F26CDEB908 +:10ABB0001F6C46BBC821DBA2D82E15752AE8777515 +:10ABC00080C52CD9F8BDD19E848E8F231F592CF6B9 +:10ABD000031624F7CF3B6720DF716FFA7901EE97F8 +:10ABE000EF622B433B8305F93A2CF03F0E870E654D +:10ABF0002BC6151417E5ADAD8EC469FC5A1F8BC961 +:10AC0000A8A76D32F211D74ACE9722001705E61B8E +:10AC1000B9D3586F8683C7DEF7C27968DF0AEB5174 +:10AC2000257C86481F70C0022C807F0EE5D1961CC3 +:10AC3000E433415B90F2033D119F5E2FF96DB9241F +:10AC4000F2805BC394FFCA2C4127EAE30F717D1B9E +:10AC500073D1C80E32E5AF497239ADE3BB97022D0F +:10AC6000835DE35C7771179A389297BF077B3D82CB +:10AC70007685D316A2B233C4543597F2DE9E593A84 +:10AC800003DB5F42ED9D2CD8E204FCD824FCC020FD +:10AC9000181CE85FAEF3BDD43D0CC6FEE9524E5F12 +:10ACA000752E8F6A4D273CFB5DFFFA09BEC6BC3886 +:10ACB0002D8FC39C877D6829A7EFFBCB252DAF5B2C +:10ACC000E3578A21FF4D7DBFA180F4482E7F7FF995 +:10ACD000EBF71F43FED87C0D13F27AF8DE17A0DFE6 +:10ACE000870FFEC76BA5C86F7748418CD33EBCEB7E +:10ACF000632ABB0A6CC105D06CD438F53AF2BFEDBB +:10AD000091BC08B4E6D1231F407DFCD30093911C75 +:10AD1000AE0F845663FDEA9853E6F692925E38527F +:10AD20005319F017B3A23CBC4AF8FB416F7EA5C093 +:10AD30008EA08F1ECA43FB08ED64CC0B8B473BB142 +:10AD4000EC526CC1988C7415EDC4FD762898780B84 +:10AD5000EF7764E7A15EDC54DE40FBD00276D628B4 +:10AD6000E443BDB677108E21F8DF79217FC9AE5854 +:10AD7000608C2B38E40FDE421CB8CA142FD0E4A23A +:10AD800083F17EB4F77D4BD3385FBE8A5DC5F3AAED +:10AD9000DF217DFB33987816F2438C2BE8F4FF30EB +:10ADA000C615025CFF5485FEA93AFFFABCE9678428 +:10ADB000BE3C54BCA05FAF117182A3372BCF94CDA2 +:10ADC000C0EF19E1C9CC6E95DE672FE5FE8239BD73 +:10ADD000118AC3973B8D795DDAF3EE328EAF9FDB3C +:10ADE0004EB019ED8407C5BC6B18E0FB948179EB7C +:10ADF00063CA8D719A66DF17CB5BEFB70B86B643DC +:10AE000008191F292B69C07CBA25D7ACF2A1DEB185 +:10AE10007AAE87A13DA6E1BB5BE0FBC307FFE16320 +:10AE2000949B0DB283213DB464EF22FCFFD4C7BCD8 +:10AE3000569DBD3B5360F7B0D17DAF95427D7DB748 +:10AE40002588F90DD7A3B303FB073B06F9BD86EFB1 +:10AE50003F76A74BA89766C62387B4FCDF18FAB7DE +:10AE600076E44A885799F06D50423E7F3F7DEF0669 +:10AE7000BEF708E2B7B09B57B3C4AF3F9F58CC674B +:10AE8000EECC843EB97A479382F91DED377A646B34 +:10AE900092F8FECCB78CF6B65BB119F28D41BE18B4 +:10AEA000EA33AC79DC9EC9B6C49AD09E413B15F515 +:10AEB000635B84E2C3328BB8D0BFDF1603FA96D14E +:10AEC000AEE57AC6E96EEE4F39BDE3465AEFA720EC +:10AED000B7703E675EA8584DF1B180434E41FAF31A +:10AEE000A964E722DDBB5912FED12DF29D3116690E +:10AEF00041BAAE4CE43F73FE7268854E3FAE1579A1 +:10AF0000CFCF0AFBBCA9FC8F76DCCFDE6F48B253F3 +:10AF1000C67A9EFF9C8C6F109F027985FD98F9C7B9 +:10AF200055CA4AF24B7A5778A219B392F11123FF0E +:10AF300038BDE35D4581F6EDC82F009FEFD0F05D91 +:10AF4000F093C1E292A777F038C8A75E1FE50B9E89 +:10AF5000DE919F5107EFBFB4C2189FB4B59719E3B4 +:10AF6000517F73BEC3F986261F5C26F9A0D1CBA8FA +:10AF70002B5592D3674633920F67F68C7A00F5F221 +:10AF80004F6312970F267A18281F400E109FE77202 +:10AF900040A317E7589B05BFF36EB3C6100E201FE2 +:10AFA000BC73C8AF6A61281FFAE966B7C482680F2C +:10AFB0003A620EC23B900B0F66E3BE3F967F07E2FC +:10AFC000E5682BE54199F77B807C087C31F9B0BFBF +:10AFD000FCC2F261B0FDFDBCFB84FC1EF9A9B65FAA +:10AFE000C8F7F11CC650FBE628CFE47C1BE400E662 +:10AFF000DF6AFB58B42472B45C9F8F381C34C4E9F8 +:10B00000897C44CD6EFAF3F17F6AC0BCE2A34B4267 +:10B0100057A17EC3023C8FF02AA07BE4E747974408 +:10B020007E8D7ED7F48BD74D467EC61EE7F987BF4F +:10B0300016E30CA8DFCDBFD7EA93E4A7D6A03D73F3 +:10B04000BC92E3B7F9394DC82B2D4F15E6F56E3993 +:10B05000CEAB3FBF91DB63278E7FBB41E4677F5858 +:10B06000AECB8BECB7E7D4AD8FA1BDA7D973A78EBC +:10B070006FA5F6CCD3E1437DBBB9298DFC2B3B9763 +:10B08000CA345E9B3DE66B07F8BD7CF9754DC85F21 +:10B090003C5B2C84475A3E1253B73C1647382EE08F +:10B0A000E30C267F8E2E51CEE27C343BF3FDE3DFB2 +:10B0B0006A1079DDE7689E0522AF5BD8A51F1FDF08 +:10B0C000F298803F5B86EB54F83A353BF68FC71F0A +:10B0D000A2795F778362C5FA5AB4D7747CE0377778 +:10B0E00066A5A09C37FB7953FD5CDED7FBF839C21F +:10B0F00070B53B9693243EF6621D877B8B943C9EF5 +:10B100009ABB707EE632B243E3E3F0E84DF8139762 +:10B1100057E43DDF48E76AAC2C887AF6DC0DDCBEEC +:10B120009C3BC9B20D7462F6C708D75B35FBD26C85 +:10B130003F662A6A117E5F0D7224467E10933D3968 +:10B1400029D3604FE6E54E97701DAE4689F4C07A6C +:10B15000B42FB15FF6FF967D69B62719E376559D4A +:10B16000905343D993BDB1CF674FBAD09E443D06AB +:10B17000ED49E9EF674FAE467B12C6AF477B72FAE7 +:10B18000E0F6E4EA95DCCEFEBCF6E4A5E75E0E311F +:10B19000D2E32C147F69D95D6CB22737BA2E644F85 +:10B1A000EEAEE5F615C547A09D3AC715DB992D36DD +:10B1B00005F1FCEA548A07B72B5CDFF93498BD1D12 +:10B1C000F5C39DC29F8FBFBFE45CD842712E8C89AE +:10B1D00078EADFFE7CD8533ECCB3AD13719EB61730 +:10B1E000F630F42FD5F9C16EA0F78E6FE9F98976A4 +:10B1F0003E6C27F27F8C8B8FE6F939CD931FA038F8 +:10B2000018933273ADBAFCBAC3826F9FCEE6FCA32B +:10B210007958C497ABB3573A457DB3C8D7607E0E13 +:10B220004F47F5D58FEACFE36D5BE610724B892D62 +:10B230002378AA04D7C622653B9635BB589327DAF4 +:10B24000773F14FEAF3DCB24F17D680FF1D1E1DCF7 +:10B250002E649E78CC32521F87E2FE49CD5F79EC96 +:10B26000D16D0EF4033688F324ECA1F660898EBF0D +:10B27000FF689924E4A0F223ECF7C012653FCE6783 +:10B28000AE6503F9DDE7E63864F4AFB5D8FB4AC92B +:10B29000AFFF271BDB2925F066BE4FE41188F2F5CE +:10B2A000323F4F08FCF310EA4D37C832F1CFB7EA0E +:10B2B000B269FE8BAE3C46E7490ECE9019C6794284 +:10B2C000CA0B56F4F7E7EFBF9261DC7D4A51E845BF +:10B2D0001CBF70415EC170588FA728F4735A2FD3DA +:10B2E000CEDB713CFAC30D915F623BD0DB5427DAB1 +:10B2F000638118C98381F86D8CBBFC41C8831797A3 +:10B30000285DF8FD6D3728AF10FC8B42AFD1389E19 +:10B31000E4E7FA407E75637DCA6FA39311BF7FB2E5 +:10B3200030F2169F176B1F9BE43CB8B6BF47853DB4 +:10B33000792C0DF4021DDEFCB68ACFE326A1075B53 +:10B34000EB620B30CFAA0D5444159EE78A23BDD87B +:10B350007F9B7F859DFC15A06F607ED149DFF6093C +:10B36000C89FEA03D20129039E480BE4FFF80FF2BD +:10B37000F79AFD279BDED0CAB7AFA90FE8FD295F7A +:10B380005B8379B036272FFF6BE5EDFB508ED7CB73 +:10B39000E2BCEC5B8AACC7134798E3DF9B21E53F37 +:10B3A0002B67905F774D28B93C3D87F03C8EF6AF18 +:10B3B00085F68985670CDC2780BF84EF01FE167C4B +:10B3C00002FC6DE11183C37F30FF913BCCE9E34C7C +:10B3D000A49F3E7E57A9A38F0BCC7358D838CF11AA +:10B3E000E124F804F31C29E6392ACCF164F485E65B +:10B3F000E99EFEC0DB143F505364E95A4C5F89DA82 +:10B40000D08E7507395EBA7D12F9034F4BDABEBD97 +:10B41000F224EE83DB33FD7D9467E5E1118FBB46BB +:10B4200024FCEEB397AE5DD3320BF597CE462CFFDE +:10B43000C33BDF6DB08D0532CEE6FB7ACB3BDF7DC3 +:10B440000CCFE794E6042748486795631E775D2391 +:10B45000E4D89C041EBCAA8DC76EDB570FE3956A27 +:10B46000710535E77105BF4F557D18572BEE9EF0DE +:10B47000B80DCFFFF4C70DEE8CA29EA98DF7618F9A +:10B48000FF711C0FCFAB227F2800D8A29C28E95562 +:10B490009BD3617EF3C32C8E47DF1D0B049EB1EC62 +:10B4A000C731AE509AC9C77BA3D2D748F335959917 +:10B4B0009FEB8DC0878208DF20068C46609C818FC1 +:10B4C000731D8E037328F31AD75526F3F25B91D1BF +:10B4D0008D2DB0AEA565BCFDF5625E4B19AC0BF3CE +:10B4E00032BA6F8DF27529A3515E7E18B9335A00B6 +:10B4F0007CDE9AB689CEDDBA02C6F376DA73B6265A +:10B50000FF6671BD15E6371BED88D9427EBC190A6E +:10B510005511FEBE047CC14A7C81FC54C8A8468DEE +:10B520001CC81734FBA5345D5D15D2C7016359DB18 +:10B53000548ADB852E9F837189635992046B3BAFDC +:10B54000C5E54CF1C0D3633B54D4777AB36DD1EDEC +:10B55000DE817141668AF799E3839F54897EFBE31C +:10B56000804CC638E07F77FC6FA36705E983859838 +:10B570005F847181C6A718865837CF0A7AD1FF1D1C +:10B580002AB4325567C79AF7EBAF8DFF6509BBD078 +:10B59000E6E0F96A804314AF3DD0D444769DA79A83 +:10B5A000C3ADB196E345C7724D3F529767C1BC4BDF +:10B5B000018278DEC0BAEDC72ECCEB6C0B3C7D046B +:10B5C000E5E0719F4346FC6D1E7D930FE199F27596 +:10B5D00027DD1B7172989C86F9956DDE8D97F0388A +:10B5E000F3D5FF76448BA3035EEFEEB63D897CF97D +:10B5F0001599D3DFECE50FFF1BE543CAB053BA7DC5 +:10B6000072B8E6529E962B8FE795EBF681F61B7F7C +:10B61000765D7B80B33A633AE90972168EEBE3ED0F +:10B620007DACA789F250000F1CFAF8B3D82797B069 +:10B630003BACB729F7CE4079E5B57A311EABED7357 +:10B6400089D867F3BE7A986CD87777F846CA53D210 +:10B65000FC4FEE05C67D4B5D6C2C839D62D8B7F91F +:10B66000E11B497F9E0F7822D339329E77E612E3A1 +:10B67000E73395D6970F86761CC63B8CFC02F59770 +:10B68000591ED20B0A862D2D1806E5C3AE61B9B836 +:10B690000F603798ED924D585F90362C17FD80DD86 +:10B6A00061635C533B47A7D935C72EEEA07378A0E2 +:10B6B0008779D13FD785F14E3B9ECF6B72603915AC +:10B6C000B308789CD170AE8E1D4AA17B381AC07E1B +:10B6D0004D817D3A1A7C344EFE3D3FA373340D05F7 +:10B6E0009ABCB63C89FEB7CF7B3F4055CDB34F18CF +:10B6F000EF07D8FB04CA99DE73DAF9FF5D4F60FCEF +:10B7000078F0FB01B6DF526F43BBE25401C6A3AD34 +:10B7100015C33A8CE72DBFF53BFDFD00132A360714 +:10B72000F4F70358AE3FF084FE7E80B335E76ED168 +:10B73000DF0F20BDFDCFB7E8CF99FEBEE667B78823 +:10B74000FB01EC15484F439C870E54F03C890915CA +:10B75000FC3CF450F703FCBDE2685AFC0CF450D5F5 +:10B76000897A68BA25C6F5E528E90B9B4C7E88B82E +:10B77000F023BC12D1F8C800BDF33282C720F719FC +:10B78000A457C883DD673085BE339DBFC67DE2E721 +:10B79000AF4D7EAD2346BF16E85133F17B8787EB73 +:10B7A000BB9A3E0BEF67D37B99CB3BEDFD33659A9C +:10B7B0005FAB5DC67ECA588CEB4140F9E8BF2FF302 +:10B7C000C628CF81A993A87C66CFC36F63F9EEA684 +:10B7D00014D94AED3AE87E94EB2B381C48AE637BD3 +:10B7E000B0DF799E11F71F9E299232F13E9684FEBA +:10B7F00094D1817A6FAB1DF41F98C2F2131BD6B897 +:10B80000C626F4A7FA0AA614F8601C3BD3F406A2D5 +:10B810001BE26B441733492F3E6337D2158A01DE92 +:10B82000FFB47D58AFE95FBF38F51DA3FE75E23B5D +:10B83000A47F0DD6FF9ACA3D8D2D81847E04F389A5 +:10B840002F407EB3E0B630EA252515FB1F770D3378 +:10B85000B6A73CA2FEFEF63C8EEB33D7C3FE36D035 +:10B86000FE0A7FE650EDD9E27EFD258ADFCD167E09 +:10B8700041733E8726EFCC72F5D54AAE5FCF28558F +:10B88000D6E1F78B0E6DBC3D94A45D5305C7E7452B +:10B89000F33A7C282FDBC672FBDADCCE53C9F719EA +:10B8A000FAB904DBF536256FB7AB426BF7289D1B61 +:10B8B000697D81B7C3FE8B75EDEFAFE076545B5ABF +:10B8C000723F9FBF52B373430F54A07E762F8707FA +:10B8D000D8BB0FE27AC0EEDC82EFFBE90B6819E916 +:10B8E0000BECCF8709CE3695EC89363BA777CAE5B6 +:10B8F000BA3A09DF0818F986995FF4F39D12A6E2B7 +:10B900007D0AB6A2C80E1C77E3BA283F1737885DB8 +:10B91000B1681E3F37D39CC6D76FF613348BF5172B +:10B920000A3B48BB3F0DEF2DD0FB819E17FBA3F1D7 +:10B93000E503156F35EAF9F23F9FF047F57C99A9C9 +:10B94000133BD03E2872F2F2A113EF68F8F734C12E +:10B95000E54E0EC7A72B38DF18EC7E80A225CACF94 +:10B96000B07DD120F1D9172BFAF7E745EA77ADE69C +:10B97000EFE6F69BF91E8E972B06DCC3B180FC1B0D +:10B980001D46FFC6CBFDFD2A2FD3FEE65A43C9F460 +:10B99000FC276A39FC58E048DCAA9D4B94899E1527 +:10B9A000833FE5CA98D19FD2D26E88139F4C8C7783 +:10B9B000B282DB010AEAC75ABCF3D80F9B0A510EC8 +:10B9C000334BCCA19FE703157CDF8EEDE5F5F31C2F +:10B9D0003C2FCA5C3F5DE8ED80B7A72BB8DC1B8726 +:10B9E000F8340F7015E5CF5CCBD44E85FC3652B0E1 +:10B9F00009E6BFD0FF02F9B1E7834985FE96FC4016 +:10BA00009E0DD3960AA7D76DC2E794A2C867D8CF78 +:10BA1000F5734F05512F9CBB213EAE3D4078FF870B +:10BA20000A9DDF45A377C4C362DDBCFE2CF0AE796E +:10BA30006C72BABBAA4A936BFD7E1B4B65127FC02A +:10BA400000BF8D87F3FFE6D96362FA739B7E212FD7 +:10BA5000C12E4FA9E476F98AAA1903E945CBDBD3B5 +:10BA6000FC62A58BBBE65E04FD15AE93642BDF572D +:10BA7000F293D5887AADFFDE22C987E770B53CBC6A +:10BA8000E76A4F3E4979A46B25C15FDF7C12EDD98F +:10BA900044DE5DDFAD441FFD7AD66FC99E1F5CAFEB +:10BAA000FAF0D67ABA27665AA71DFA5FD673EA4922 +:10BAB0001FEC4BA9765E80FDFEC90B9D17E815743F +:10BAC00066A67FED394EC07B30FABF56F82B35FAAB +:10BAD0009F5539668D9EFEAF7E63CB1A5C6F82FEEA +:10BAE000EFDFA75F5FFE1B396B04FD4F253F8BA087 +:10BAF000FFA995EC82F78300FDCFC3F6E67B77B410 +:10BB000067A1902FD06F21F53B04FD2FA934C68F7C +:10BB100007A3FF25FDFD2A4B2A470C4EFFA3AA8C45 +:10BB2000F4DFC0FA7F44FFFDF4BBB789E8BF7E872E +:10BB3000A4E0B94F33FDD724C6ABA91C91A07FCD9B +:10BB40002E39364E2DC4EF994575E8BFEBA7FF4758 +:10BB5000059EA9471A51DFD7E298BD158FEC13FA5D +:10BB6000F16AEA773A87FB507A09B4BF95DA073968 +:10BB70003CFF5A3D6780DE1837C64BB5F8DDC0780C +:10BB8000585F11E55F062C49E36159CC7BDD66C047 +:10BB9000972AB00FD15E6B0B6452DCCFFDFF491CBE +:10BBA000CC51C6E3F5E6B88F39EE89FEFFCA247A98 +:10BBB00039C3C434CDFEC57DF91FEED771A1FE395E +:10BBC0006370FF0EACF3255AA7D76867786F88FCBF +:10BBD00012DFF7E753645B289FC2996D494199F1E1 +:10BBE00079E3C7D0FF2BD4FF78231C1B8B94D72A73 +:10BBF00049DFB4125DDC7922FEB8885F77131D89B6 +:10BC0000FB9BCC71FCFCB0280B3FE640FF28D3E83F +:10BC10002E8EFFA9EF2FFB1A8F60DC3E70E1FBD761 +:10BC2000CC7ED165DA78E23BB3DF1BF48334F44B8E +:10BC30006AFA163BAAC87A7EF36668FEC7B41E95F8 +:10BC4000A9D24803BF530DFC4AE377E2BC147BCD75 +:10BC5000D8CF7F561AE30230EED9659C8FFF19CBFF +:10BC6000291F1AE17BAE389285FE536B9DFA25F4AD +:10BC70009761BCA3693ACFB7F200BC4ED6A7C424E3 +:10BC80009D1F4EB39B8655697EE55CB2F386BDD998 +:10BC9000B2CF356368BBA734331AC6F3452527A056 +:10BCA000FDECA4765456956EDF86EA6FB07C8F5C0F +:10BCB000A197999FA595463C616ABF1D968DE39A11 +:10BCC000E5AAA6F7B17546B9E2AFEA972B7EFC6EFE +:10BCD0006A25A71FF33D5EC772FAAC4817DD40E343 +:10BCE000DBF1ECC9A6F6A0FE3CE43CE14F96AB9834 +:10BCF000266FC792FE24F07A6C1587BB96A701E3E6 +:10BD0000F5A21EA8E91D5ABE3EC697F5FDAE14EB7E +:10BD1000FDA2F1E56AB12EFCFDCF8C2F37517C5985 +:10BD20003B47D822E2CB61BF4AF7D08407892FEB8B +:10BD3000F4DD4855127D17F4D7BA2A9DFE6A2B0A06 +:10BD4000A5223D368F6EA678C496742D2F31467984 +:10BD50008913D9D6859360BD2D3BA420FA2381DDBC +:10BD600053BC7FE16BFC5E2BCC432B9A49FC9EE8D5 +:10BD7000D659A3BAD0AFBC50B69CC271B5FB7A9964 +:10BD8000B53AE939BAD6F408DD57E5D8B1AD19EFBF +:10BD9000B1CADF2D897815CF73BB34D0DE8CF701A3 +:10BDA000B8D77516F0BCE5475E42FFD6995C898D21 +:10BDB00092315F2DA2627EDAE9D94EEF06CAE3180E +:10BDC0005378873E5FA280DF83E282FFA17C5C3CE8 +:10BDD000DD782FCAC221F20FD7BDD535E5B06EDFB1 +:10BDE0005AABD20CFE582D3F4D5B5F6DFFBDBF1DA2 +:10BDF000E2DE5F9E6FF6EFEB3BA71C86FD7948E81D +:10BE0000C9476F8E3C54A5B32313F792C47AE93E19 +:10BE1000371FF322DEB6043E39741ED6F7FB984472 +:10BE200079A08E788A8BF200574A31CCFB5C1D7B5F +:10BE30006033FAB31B645B14CF7F35D8781EB93BEF +:10BE4000E6A4F8F951843FD8D072B8FD17E8DF3D79 +:10BE500003FA11EE5BBE1C6DC7784F2AEC23E67324 +:10BE6000A6069BE2988FB8181806FAB59D156A7C4D +:10BE70001A945B15571F9E8742BD4A9FA7F225D98A +:10BE800042F7DF687031E7B998E5B676DF4DCB68E9 +:10BE900091BFA82AAFA01CD7E8CE213F6BC37DFC81 +:10BEA000D5682BA3F3ECACDD41F416E0FE786DFF12 +:10BEB00098F55E15F3647F2FCECBBB98CE7F8EF0C6 +:10BEC000985E47FEFDA288278AF92D45417BD2B8AE +:10BED000CB60FBFB5295319F7A8F8D0531DED5F615 +:10BEE0009A95CE7FB5EDD87F04C757775878BE0BAB +:10BEF0008B907F3782F7FAA2DF300E1AC84C3C874E +:10BF0000CCE9A1ADB863731DBC97BF7A4910F97B2A +:10BF1000DBE467ED586ECB1ECED07FCD2CCA0B78FC +:10BF20006EBEE6BB5689F31346706A5B372CC6F3C8 +:10BF300019620EFB703C1FEF61D8BF86474B049D12 +:10BF4000D4E37918F8E70A162478AD64217ADEC4C0 +:10BF5000A2F4945880F2132BA39C7EDB441E69CF7D +:10BF60000E0BE5C52A57DB877DE0E22EA064F25F69 +:10BF70007B62A4EA031DBFBABA4AC81757C487FC3C +:10BF8000E6CD50E4A32A837EAED07DDF89738F1F78 +:10BF9000D33931CDBE6B58F1F15E8ABFFE2FD31F6E +:10BFA0005BC2F205F547906BE9D5A87FDCCAF50FB7 +:10BFB000ABD0FF187BF65685E2793C6EF248387CB0 +:10BFC0002BEA77D65C5648FEE91B2446E7FE3C4741 +:10BFD000DEB31AF5A2F19867A3F90BBEBF3C87FB4D +:10BFE0003DCE6D4A47F3E4D8DE3A8AE32E0F58B6C9 +:10BFF00061BE59D8F3A01DE1B47956E834F2E98A5C +:10C0000063E21EAC41CE756AF0A81683A58A78AEAD +:10C010004BC473ABCBEA17A37D608EE3B276BE6FE1 +:10C02000E6389D8DF9B69DCF4EEC8376CF96EE7BAC +:10C03000DA07339C5994D3B91F7AC038A0760F46DB +:10C0400078A5917EDD68AF4C4976BFC3BD1F5BF913 +:10C050003CE9BD1657D5FC29BB9797913FC566D1E2 +:10C06000F0D14F71A97EFF8A7A39C5A5488EE9ECD7 +:10C07000549D3F45C1DCBE502FEBF7B7BBE8BE5324 +:10C08000F5BE6CE8DFB1F48A27165C8EE5C81AB4F9 +:10C0900063334E6E7A02E3019AFF25EFE4DDB7A821 +:10C0A000FCFED7F9D54837C3B9DE331F01CFF5A160 +:10C0B000027A2F73FDA720F13E8CF8A4E5E1F6FA91 +:10C0C0002C0B92F911580DF723CC85CD9E047A598B +:10C0D0006DB5C7C0C7EE1671412DEEE710713FC7B1 +:10C0E0001895FC7EE6FE56570BFF779172338E0F44 +:10C0F0007AFE6A9A5F90EBF9B287DFD78B713D9435 +:10C1000053DE6D22DF7E3C3F773E77EE3F29983F3E +:10C11000E9B5B01E8CB3AA8030983FE9F8A98DE844 +:10C12000ACB8A08EF208AEC5F30C00AF509FC5703E +:10C130001E615E81DB50D6D1B1218F52D33BCC79C9 +:10C140009478131CD2B5539C9732F381BCEFAD5554 +:10C15000301F3915E404E5B51798F32AA3CA86E120 +:10C1600089BCCAD49638ADAF42E4553AC71BF16FCB +:10C17000F5BD3CAF328C7995DE8178AB02DFC2F53C +:10C18000BA61BC64F9A6DE149E57D102F04079ABC7 +:10C19000A317B15EA3BC6C2AAFA4F31F67263BC4F0 +:10C1A0007931C9B0FE4CA5E330CA956A587F2CC9D5 +:10C1B000FADD78239E4EBE2AC27FE09657A8C85F5C +:10C1C000BD739C5E8A8F9BE46B96584715AC23D950 +:10C1D000394DF3BA424A9715F59AA7AA85DE14603D +:10C1E00001C4C783E57794505CD46F61A80FB4EEA7 +:10C1F000D841E712D5EFDA82749F206B5F8EF597F6 +:10C2000049995CAEAA12F931B4F5B7167714A0BEFD +:10C21000A008B9DA7A79F3C5785F56EBCE51328649 +:10C22000A6434A5E13AEDFE5B34A885F5A1C15E5A4 +:10C2300007CAD3563696E4E9E926C6ED86A592B03C +:10C240001B9430C2B506F427C4EB25BE28E5BBBA63 +:10C250008157139CD1661E89714646C197A505FB7F +:10C26000496FF1E6D858FAAC441C36DDD21344F8D5 +:10C2700016B11ECAC35AC2BC767C96B020DD53529A +:10C280000E0C8FEE0361EDF4AC641DF4AC663D76EC +:10C290006E67C804E75A3FBF5FA5AF3A9BE87BB122 +:10C2A0008B117F6F0D74A6D1BD9E43C48536493C6A +:10C2B000EEA3022FC27BCDFBE3CBD358C40AFC50C4 +:10C2C000F90F26E9E5BF145BC6E346C580B2A319A2 +:10C2D000FBA89ACB1BF6AD608B739C90D3D05FDD2F +:10C2E000187E0F9BC62F3EEF79CC39BD32BF277227 +:10C2F0008744FE9339E8CF0C50DEB4A2BF7FF28DA5 +:10C300006A1E677FA39AF3B5525B88EE03C40BDF06 +:10C310009A6663BE4B09954BEF04198D79F21F4F56 +:10C32000A7FBD0DE0E934C85EF64FAEEADCF0E8EF8 +:10C33000403157E569DAEC9507DACFDA7876C13F14 +:10C340009D35FDF120678DCEEF525D3DE0FC849B75 +:10C35000EA0F18FDC5663E7A8DE86F5EEE21CF3498 +:10C360008CBF8DB6107E9BDBCD10E3972CE07F5FFA +:10C37000E2B803F005D635BEE6A15B506E8598BCE9 +:10C38000391DF9C6A67B6F095F4EE35F5C83FBE254 +:10C39000E2F2C2D19B3C8F2CBBC6A1AD279BDA7BBE +:10C3A000F87C6B047CE6C2B0726622FE0274A7E5DC +:10C3B000C34DC4F6211651D10FA28D5B8C17199372 +:10C3C0003CDCFA04C6230E20CD68F167C0FFAE3412 +:10C3D00051AF7EFB16BCD7C2FC3DCC6312C14D8C65 +:10C3E0003309151B1867428D80AF8DAF47F377680F +:10C3F000F78769FBB56F39B7F7CDCFE1F8FD8CC48E +:10C40000FE687E79333C326AFAFDFD19040F71FE35 +:10C410002503E7C1E1741DCD4FBC1F3A0F85AF3F27 +:10C42000F5C4838D4DC9FF7E02CD7BB5D85FF33354 +:10C4300071FFBC06B73B1ED79FAF29387947A3D001 +:10C440001B2A6AF47A80C8A7597C729D565F43F311 +:10C45000FEBFFCF714969DFCBAE6BF2AD1D34789EC +:10C46000D847787F0BBD37FD9D85AA935FD3FC9994 +:10C470005FA175546BF7DF5FF8EF2EF409381DCB21 +:10C48000E1F4C5EAB99F29659C97B5EACEB77E432A +:10C49000B403BCFD068EAFDDEF8E3CD0A28BAB3873 +:10C4A00076737E83F7C5EBE3359BFBE95ED95CA32E +:10C4B0008B1721BCF5FEB0D644BB566C37589CE8B0 +:10C4C000819A017162B1BFBF20BAD1EE93DF5A7376 +:10C4D000E209978478B57DA305E9DBF6F247782772 +:10C4E0001EE60BE8F1F081047C1F21F899F294CC50 +:10C4F000FB154BD07D8CDA27F27192F2895D3536CF +:10C50000ADFF5DD4BEFFEF32C435BF5E10FD7AF3E0 +:10C51000EC3115EFDF9B6797822A43FFC645C505BF +:10C5200050764FCE998A32E4FF08FAD2FA7D6E41F6 +:10C53000249DE2DF7831E354F473F07BCED32B38C3 +:10C54000BD0D462FEF89FD343FCD7F67E1FB3547B9 +:10C550009FD0FF9D851D35AF4EC13CA3841F4B75F9 +:10C56000E17D6E9B9E8B58549483532C24E75B0291 +:10C570009FE493FE817B7C8173D277AFE7F7B4FFB2 +:10C5800042DC83A4BD7FA526C7B0BFAEC295E42F11 +:10C590005B64EF187EA17B4517F98D7AED46DF5776 +:10C5A000E81EABD3DAFD4D63DAEFC3F399CD5D56E8 +:10C5B000B641C6F1636FBE3721917F7168B4233EE7 +:10C5C0006F3A9E23ADDB857AD32F607E787EF1C3F0 +:10C5D0001A2E2F5D3B9E6232C0C735E600E5F33967 +:10C5E000625207DE5F5DEFDFC6D0AF9CEA8B115D64 +:10C5F000A457707EB9C80F84A7D3DF60FF0FD4E8BB +:10C60000FCB207045F64E76EF4613EE9EADD12F90B +:10C61000A5F2773731BC4775B0F14ED570F9521F8E +:10C6200080713D386E878DFEDE43E2EF4E18E4A543 +:10C6300024F8F85D09FE7C17CD43FCDD89BB12FCB4 +:10C64000F98FF4DEF4F73306CBEBD3FDFD8CBB6A38 +:10C650004624FA392FE63758DC18EC1EC7726EF7FD +:10C660007C88F10CCDEEF950C441D817CF839525C5 +:10C67000BD1FC394E7EA08FF4839887CF07769F268 +:10C680007CF45B9AF26207E6C1068FE0B9C1363FDF +:10C69000BF9768A83CD8C3E171640F1D067B400AB0 +:10C6A000927DAD621EAD765EF82FC88325FD743E87 +:10C6B000D801C9F360B93D942FEE73392CF2628131 +:10C6C00067F4EDF4621EAC9DF4EAC3B3C6C4D04770 +:10C6D00062CE833D8E7E168073E1F03ACA879DEF6D +:10C6E000E1F9B2408DC3315F0FC618CE74F6CEC9E2 +:10C6F000B1116E3F89BC741DFC1DE7B393C0DF16FA +:10C70000A1F5DB2C4C7EC43B10DEB0E19BCBA72710 +:10C71000E0833FBDBF03F302D14E72302FF7539930 +:10C72000E0EFF6C9851857463F34748AF757328CC4 +:10C7300037A51E4DA1F346DAFE6BF3718F6F646867 +:10C74000AFFCE3BFA5C9787FADDBE4D71A90F70C47 +:10C75000FFEFF78B25F1730DCC83FEDFBDDF8785FF +:10C760001E58306C956B8578E279FEF5826F140C5B +:10C77000923FF86571FE90FEBE0ACE673FCFEB9CFC +:10C780009CDA1345B85DE93A7510B7B7C33B2D7F06 +:10C79000988C798691BB97639CCB97D7968DE3DB7A +:10C7A0003A7330DE34F936EE37ADF673FB1F246C86 +:10C7B0007C24940B1A25F6888CE77565DB28789F16 +:10C7C000DF98B7781994EF5F6EF4BFFCBDF3B6ED58 +:10C7D0006F7FB511CF7301BFBC96FC91593C9E7D14 +:10C7E0002DFA95381F7D14F95BCABBFDE7477EB86B +:10C7F0009CC7C30263939C1F49E4E146946A3DDFF2 +:10C80000349D7F5712FD5FADD70FAF16FACB8C5218 +:10C81000E5291CA7FFEF036AEB93F8BFADF63A05D5 +:10C82000E3B3A968954C47BC9004BFE5F04BE4B373 +:10C83000C4C84FDCE0471713FDFD989F61BF000F90 +:10C84000825F718005D1BE7407643BCABBA1EF5FF4 +:10C850002E35DC03617E0E76FFB25F9CC73866DA48 +:10C86000EFBFE1DF3325BA31FF3DD3F7C5F98FFEC6 +:10C87000FE4CF7C2FC66B9314EF545FF9EE92BC56B +:10C88000A10F091F5C0AE555BFB358995C3BE34211 +:10C89000E700BEFE647D20217F2FADFD19F9B701B1 +:10C8A0000E0ACF7FBFF0B8D696729AF755DD964440 +:10C8B0001C14FE3FBB27D5A02F5DDD9B69285FD3ED +:10C8C0007791A1FDBCB33986FA3C7685A13EDF3570 +:10C8D000CD502EF45E6D687FBD2FDF50BE415E648B +:10C8E000683FF9EC4A9AE795071A0CED72E35F315D +:10C8F00094C35F8A64D6C2FE4C3B7287E1FB199DEC +:10C900001B0CED0E96CFC9C0F8A6969FEF11F75DF0 +:10C9100059DC632E41FEA6F9AD34388DADE5FE1825 +:10C92000A72D4AF7E56BFEA6817E9731DE0FDCA2CC +:10C930008CE7000B3EB38ABC7696319AE292DE64B5 +:10C94000F809FAFA47CB75FABBA6AF7FB49CD3358A +:10C95000E0C524C40366EBC78B2BB03CB9D688FF77 +:10C96000E39728BDCBB99E94544EB7A29C0E0E946B +:10C97000D3A065CB9CDF98E42DFC24BD7F57C85F16 +:10C9800017CA5F94F7E169A47F01B0FBE6E3197C65 +:10C99000933C3F1CFE1143BBE5302C464A267FBD2D +:10C9A000F52AFA83BFFA519A8C7E0CBC6FFA20F2FA +:10C9B00021D0C7F07CA4591E335BD08B71E8F42BD7 +:10C9C0002D4CDC677E41793C947EE616FA99761F01 +:10C9D000F61797CF87F83DD13E4D3E0D90CF24BF3F +:10C9E000F385DF76A07C5E4571AEC3B346D1FDDA38 +:10C9F0005F543E6BF75A3716296B101F6EADFD9FC3 +:10CA000021FF74F90C741FB0D90E3C8376E0F0BF9F +:10CA1000DC0EFC27418F7FBD1DB8DD857CA0DFDEED +:10CA20001B1325BBB039DB42F7DF36A7F1BC0BB5D2 +:10CA30008BDF63ACD9810DFEC82EB41B1BFC1D6CB3 +:10CA400022EC4303DA61A8E7C5EA9E453B4CB30FED +:10CA5000A32BACDC1EF33F407955AB851DF8D1F21A +:10CA600041EDC01CB27BC673F99DA3D93D9ED8256C +:10CA7000E83FD7EE79B915959D1998DFA9F27B5E4D +:10CA8000B2AF93F4F7BC0C66DFC76BB9DE667EBE4F +:10CA90005A61F4E3A13D8A7CD47CBFCBA9DAB47D92 +:10CAA000285F401F791EEB07D347B4F8DEB3B59E6D +:10CAB00035E25E9BFDB53ABD643F2A3A33069FE7F7 +:10CAC0006B625EE6A7363F6B0D137E9D2B3AF23C00 +:10CAD000897CEAF195BF7F52DC4FD359ABF3330E1B +:10CAE000967FAD6BFF2FFAF9FD8B981FBC3F51ABC2 +:10CAF000F3FFFDA579DEDA38BDFD71E9B47D98F765 +:10CB0000FD39EEDFE9AD9D91F003BE5E9BBE06FBF5 +:10CB10002963AA385F95CAF0EFB494793BBAF93922 +:10CB2000F4CB65FE775BDADFE6F7CC8EA1780BC637 +:10CB30005FD09FF699D0CBCBB473FFB608E5CBB4EA +:10CB40008A73566DDAFC544B8742718EE004E4DB45 +:10CB5000AE9ED428C6554F9BF289FBCF9DABD551D5 +:10CB6000D4435A07C937FE2FEE36CF2E008000007F +:10CB70001F8B080000000000000BE55B0D7454D50E +:10CB8000B5DEF767666E92497213020E18F426043A +:10CB9000186A0243083F02CA0502E40F99408080E8 +:10CBA000A037214050FB1C405A9ECF3E2E24867455 +:10CBB000821A2BF6476D1D28BEDA2EAD23DA56AD4C +:10CBC000AF6F00A52E126AEAA34AFD798D1411B544 +:10CBD000B55045F1952EDEDEE7DC9B993B9904FBD1 +:10CBE000DAAED5F55E5CE17AEE39779FB3F7FECE2B +:10CBF000FE3B2760AE883617039C167A6E8100C014 +:10CC0000F346EE17E56B00761700C008805C23F74B +:10CC100071732640F7A2E0A7374EC677459D816025 +:10CC200009C0A737E2FF0F05587C3A22810AE0EDE0 +:10CC3000BDF0076522B6817F07E6855B6348178AEA +:10CC4000717C26C045FA99D5FFD9BD48FF8CE87E96 +:10CC500046F4887E0D1F8FEF4FAFC0F6E915FCBD7F +:10CC60003DCFE506C4CA0389F36446752FC092DC44 +:10CC7000C0682107A010E76DBD16DFFBF93A93E706 +:10CC8000CB34F8BA919FAA1509FC54ADE87B5F64D8 +:10CC9000E013427C1DD7C9133B47E3BCC5BFDEFE92 +:10CCA00098176532DD8F7DD301D27FFDB55BB61756 +:10CCB00001FBD187015443C2CF14ECA767016F6A0F +:10CCC000D8AFD0FF8CA27FA22F1CCA03B87B717A89 +:10CCD000288C743FD20FCA20026440440609E9043C +:10CCE0005C70C2CFBFBB88BF197E6C2BF1B6E297D8 +:10CCF0001DFD2409DD6E4BF4EF4AD095783B5BDADD +:10CD00007E4500E553BF55FAFAC92128CF03DF72EB +:10CD10006BC86FFDBEED2E83BD77B3F7B67CC2DB6B +:10CD2000004EB8709E952AD787D7F0917C66B9CD12 +:10CD3000B541D2E7D6CEC0E2047D5619021B87FA70 +:10CD4000AA22B9ED5FA13139CE0219F45C54E7A4EF +:10CD50003F5F4EF380D9A7D745346EA187EBEFD064 +:10CD6000AF4FDC6262FFD1C2331294011C2F04D892 +:10CD70008B3882D6CE406DC23CFFB14264F35C6713 +:10CD8000703CB8CBEEFDAFBC3CA29BA609A8EF72ED +:10CD90000831F9B9111B80EFDD3E2162A2FCDF13DF +:10CDA000B8BE004AA33AAEDFED2D7B47C231BB7B54 +:10CDB000274595C971DC3F697C7C8B3C328EFBC773 +:10CDC0008D8F1F33F3191E6E3012707283859F256D +:10CDD000851C6F7B7AA74515DC2F4BDCD63CE635EE +:10CDE000511DF7CB9274F30A403EEEE9D5A3F270E1 +:10CDF000E4CF6DE3757988FAED79BED3BB204AFBA9 +:10CE00006B71450308C87FB90F402A88E3FD67C9E5 +:10CE100078871B2DBCF3F9361837B2EF93DB7541D9 +:10CE20004E6F3ED14319D4A9B61C402730D669BCF9 +:10CE3000FDF5DEC9A176A4B7B48E8F5F60CDBF14B7 +:10CE400070FD2AADBF3C245F7DE9F5A39C3AD8BEB6 +:10CE500029E37A3E2D407DB4B8FFFEFB962132F9DE +:10CE60004999AD6060BFE2033DE2ED3FEEF40A8117 +:10CE70008D9B7CBD85C369367E8237337D04B83E89 +:10CE80006EB6F471D46D7E91F0B9BBC05C1D4C9848 +:10CE9000F70983D3B9C71093EDCB3D067B6FD9B1AA +:10CEA0007EF2B7E50D31B045C7F45B167AC9FBB920 +:10CEB000ECDA065AE7060BAF7D7C58F33F6CA86CA2 +:10CEC0005E28E77CF4F55B6DE4F3478CCF3E795E3A +:10CED000D23EFFF9C604B9FCD9B2CF430C27DD47D7 +:10CEE000EDB6651F3BF5469DF6DD4768F1A4890365 +:10CEF000F373CD991171BB82BFB3CE17C6ED0EFE91 +:10CF0000CE86AB1CFD7395498EF63C758663FC029C +:10CF1000DF5C47DBDDBE0C74B443AD166EBCA0BA5B +:10CF20006B717D6246FE150D28EFD72DFD25AF0BE9 +:10CF30005A5DBFEBB5E914D2BFABD453570108A07B +:10CF40008B1733985C4AEB87C6E5525A0F96BD0A99 +:10CF5000BE9D88D7766BDE641CD5D673FC9CB7EC7F +:10CF60005C6D3DC76F028E6AEBD97B4E77A104A141 +:10CF700028E1A347D71627F89F3782733E64FA0447 +:10CF80006812A658FE00F7E0D1515044F62ABD18A9 +:10CF90002262017BB2FD00C7F1FB047CFD69259F85 +:10CFA000FF8DA0FEA79593A9CDF57B3A0947E3171E +:10CFB000EA7F62F398F04A11FA9D855C3470BF9B5A +:10CFC000DBC5F7C609911D486AE1BEEFC9E5A8F7C0 +:10CFD000C3BA720610F3F767E192695ED95480EC28 +:10CFE0007C99EB24C955C7FF48AEDB97A5B3EFDFAB +:10CFF0001F0E110F7E3F069ACDDBB11D9EE651C973 +:10D000008F55817CB2D7D637F2D1EE6F8418D23FDC +:10D010006778436447AE0FB9E2FDA46F1AEF8F8FB4 +:10D02000FFFEBEC51B887EF3A31E8DF61FF9A1D897 +:10D030005866AEB216A2BC6A2D7901A877DE8E744E +:10D04000AB7C1284C9D697BB4E105D05FFA37586D5 +:10D05000B3423D2EB2FF9A08DB918E3B2204681D3D +:10D060001B8E49810AC2E5BE3D7221F66720DF1E94 +:10D07000FCFECA62C3EC45BE33B6F69423E890CFFB +:10D080009B621E1C7F7AA20097B1D5194072AD2910 +:10D09000E3F3F4AD3FF2EE9B90C5F83E91C8B71BA9 +:10D0A000769D95C633FE4E24F2B7F5CD5F8E7F2177 +:10D0B00001EF131B32F308A7500AA5E4A77FB3EDD5 +:10D0C00019F8ED686C4BABB2C95FE2F6D5198E204A +:10D0D0000A84A3FB973DA734A25E3EDDD633FE054E +:10D0E000F4CF331A382EBBD71B331A86C671925130 +:10D0F000ACBAC9AE6A70E6D045E4E37D1F44C238DD +:10D10000BF6785D93E9DF4754C4268909C4C089051 +:10D11000FD8D7DD5AD21CE9A7D9D6EF22B1B64D801 +:10D12000E1C2EF322252643B4ED14D7A405FFDFDA9 +:10D13000E2903A1DDFDF84DF8BA887B98F62671921 +:10D14000B3DF110FD257028242ED1AC4B1865DCA15 +:10D15000CC1F992477D0E450F634F2D7DB6393B038 +:10D16000BD10E5AE231EAE43FDC412E31C049E2594 +:10D170002FF122F96C537FA5684A425CA521A56175 +:10D180002457FC294CC07301303CBBE9FB043D54DF +:10D19000EFDB69929E6D7C4331C7B38D13C473205E +:10D1A0004678FE9514F068713D2B4938763F8A7AAF +:10D1B000467D2E0C24E3B74FCF2707D3F33F25E955 +:10D1C000F9FB32303C76201E4D9CB763DFD32FD164 +:10D1D0003ACD7D626034FBCAAC27BE0C1003618A75 +:10D1E0006F6202C82887EB2DFC77D4465D8DF8BDB1 +:10D1F000B6F98A00F9A38E921FBB1A705C47411ED4 +:10D2000064908F17F5038DD85EFD9024D0BE643FE7 +:10D21000D4BF35271216187D37E9F7460CBA88BEF9 +:10D220008DA74511818DDBD02A307D3642C04DF16E +:10D230006A1304D9731D84D853806293F4BC3224DA +:10D2400004C26CFDFCBBDE7DE21EDAB7FA0C57CEE1 +:10D2500029941385A2A9FC489FDDC6F8F05442DC4E +:10D260003A0632B97D3104B6CEFB7FD032AF3C8F67 +:10D27000F9A51EB21FB327B6BA68DDCA4C17D0BED7 +:10D280009D75219BE1CD5DCCF1ADF8A20C6FCD88F1 +:10D290003711C7F7206E750FC3D1AB4509F1793F40 +:10D2A0009C294E5CE17E2BBF13E75D41F645ED8F77 +:10D2B0002BF498AE2F913D41BBC6EC8F852B11FF0F +:10D2C000235C351B9DAEAF937C7525A405C88F7577 +:10D2D000CE77D33A4D011EC0E12B0C278EAEBC7029 +:10D2E000ABBE96EC3FD9511C6FDCE18AE3097FBDF0 +:10D2F0002E0C00B1BF1DE73303FDF1D6EE0F32FF58 +:10D30000EDAEC135603CEAD65B9442DA770199E133 +:10D31000E9BD5A485727E0D315F5DD8BFBFD4003E7 +:10D32000F75F2F97CC3F4038F2DE2F32791E229CD8 +:10D3300066C4717AEB722B4E5030FE47D5542FD411 +:10D340000F37907F5B147CA981F953BE5FB296734F +:10D35000FFF3EA1CD31744FB71EB0AA73FBAE68C34 +:10D36000981437A427C50D431CEDB9CAE54971C30C +:10D370002847BF67A42C12BFEA1E2942785BE073DE +:10D38000C61D9E3D521AD9F11FD5015BFFAC319DE0 +:10D3900057901F7F6F34FA77B2F3E5B2795916B31D +:10D3A000A76A438AF8F4B98A86771A2627DAD398C7 +:10D3B0008BC6CD014326FC2F0093E5199528E0BCD0 +:10D3C00002F2B7C607248FF2F2DAD63CDC0FD5138F +:10D3D0004AF2C97E7B17067FCFE484D696E447766F +:10D3E0009C9E9F541A67E93DADC3339EE84780C6B3 +:10D3F000DF8D6A21BECCE94AE41186B35E477CD951 +:10D40000B39CDB7BFAF9C7CE37F75C417EC5CE37DC +:10D41000DF3FB001C8BFD4FBCC41F3CD1717E9B94A +:10D420008DC8DFC64A7D4823CA5F5E181C4A6DF06E +:10D43000DAF273C6753B05482B22791D95028F6081 +:10D44000EF320FC65D09FA1CD9C8E3C5D2462EB724 +:10D450008CC812D0270D6C8F3A4468A6EF41F23287 +:10D46000FBF65649F15EC297DD6FD3E9C3456C19EF +:10D47000A3B7BABD8EC5AD57353AF74FA7BE9FE9E2 +:10D48000F32363F0B8DAA663B7DDB1DA41D7E9B6C2 +:10D49000E2CB43CBAAC408D9755FE15EB2D71D3E8B +:10D4A0005127FBF9F19BDA5EC2C11B0D3C5EB471E2 +:10D4B00044F6ED8E5280A9E78BC14CA0FF63CB4EA2 +:10D4C0003EB34D61CFE7B6A9A063DCF5FC361F6B18 +:10D4D000FF6C9BC69EB16D7EF6FEE0B6006BBFB0E2 +:10D4E0006D1A6B1FDEA6B3F64BDB2AD8B32FDE6DA9 +:10D4F000D0789E1EAB63FCB823FCA9D33EB0E219E2 +:10D500002345DE87F1CCD246C7FEE3F1CC47FBE6EC +:10D510002E9AAE91D7C034ACB4FF777227D743228E +:10D520005FA6C59769F1655A7C99165FA6C597698C +:10D53000F1655A7C99165FA6C5173DEF5EC6EDC929 +:10D54000D1429E1F24CF7F62B968C5E7C689E588AE +:10D5500093ACCBB796D03E8347758DE47F6239306C +:10D56000FC2CAF571DF9035C58E3A3BC335D039556 +:10D57000FCDE5C2DE2EE45FA37F9A340759A9BF28A +:10D580009F8989792C8E8DA6E1F0BD3772B9361747 +:10D59000DFCBE3355F542639F6D1B5ECEEA12D058E +:10D5A000BB448A1344384371824CBE0EF3F88EC7D5 +:10D5B000B7B7133D90302EC2FCB123D3531F21DCEB +:10D5C000AB65AC7FF5B551DFE2147AC18889CDDB5C +:10D5D000E1E276D41E7FC8D5338FE6E928D04A5BD6 +:10D5E000D1FF7C30B2C745B83F748D26EE40DCAF2A +:10D5F0002EFEE4066D7CFCFB43D6F74BC704F26BB2 +:10D6000013E4F86023F74B8746F33CAC5D5BEC22F8 +:10D610003C878B5541CA21BCFC40A53CD01E17B7A6 +:10D62000D7C6838D09ED747F8CD9198008C3597AC8 +:10D630005DBA4971DAF16A2342E3D215E96DB2BBF2 +:10D64000E9FE804CB8FAA492CB13549C6C38CDBB45 +:10D6500057A1F7F3A43B1EEE453E8EA2B9F76057E3 +:10D66000961864F1095C07F0480ED1473F846D8F2E +:10D670005F62F1C751087DAF97D66B7A54B38CECDB +:10D68000DD4763C9CE310780F6789965AA3F4DBB67 +:10D6900081D111BE04AA80F2FB4646965FC6F656BB +:10D6A000480F505EF56529544276FB53B153A3E70A +:10D6B000EF1B0B18BFAF056EEBA4F024ECFF6E3B25 +:10D6C000F9F74E5DA6E8038E978B15911478FC59F7 +:10D6D000A3977DA756EA6789EFB38D1CBF77DB76EA +:10D6E0000EE36937FA8D362222B255BE4671D2DB7F +:10D6F000D63ACF5A72BECEF7E01BC447AEAECEA725 +:10D70000B86815C645119C7908F4D6909EAF0F48AD +:10D7100014A20E68AF6A7CDF79E3E424262F3B8EE7 +:10D72000122F4E8DC7553A862414C7CC38DD179773 +:10D73000313F73CD19677BD679677B36B81CEDB95D +:10D740008AB33D4F75B617F89CED4ACDD986561E63 +:10D75000972956BE0B897196C49F7D7122A4C86714 +:10D76000EB4EB17C30393EB3E53E909EE6572E3C01 +:10D770004BF6CE96F3DD42A86736F9B5E162E011CB +:10D7800084E62FA60D493312BE73ADE17EA8CFFE0D +:10D79000FB4516AF77F81767430AFAF653393F038C +:10D7A0006209F65191ADFC529E346912F2D54E0BCE +:10D7B0009612E7E1FA57CE5FCBBE9BB3E736B6458C +:10D7C0006A8E496C3E3B2F9F0F0C4B7DF9D8918D93 +:10D7D000BCBE50D369B46E62F5340934CA437C1EB2 +:10D7E0008825E4E91994854A94871D999786E3BAB8 +:10D7F0003231DF463A73553ECE96AB52FC93D86C2D +:10D80000A4FB8BD9CA19611A7DE78EF753DC4F79D7 +:10D8100058163D9DEFED3C7A207924E769A3D65850 +:10D82000FE7B2A4C257D9F83992FCF86785E6E7F65 +:10D8300067E7E514B794BBE2F953E99A1C2B3E8BDA +:10D8400098645F33342D108641FD5CE99A147E6E36 +:10D850006D8D31650DD269F3157A89CE1C01CE48E4 +:10D860002AD14977131D0CCF783E374D89604A1174 +:10D87000CF1F2318EF6B8C9D67D2A7B075B29F673F +:10D88000AB0C9DE8B55BFA59F93517AB8BE317B9CB +:10D89000545F6BCF324F535D11CCFFDCD8EDB3C674 +:10D8A000B162E7F736927FB1DB556BBACE529DBEBF +:10D8B0007D98D92CE0F89CA6599BF2C85E528D1435 +:10D8C0007F1F3C69EC37AD7A05F9B58C268DC75DB5 +:10D8D0009A687AB2E2712EF2574B7C1FD10E1E9DD0 +:10D8E0008D438CBA2F1C2339773D7E60D56594B764 +:10D8F000B4A012AFC0FDFD6D99D7F18B78BDA96BB7 +:10D90000E23780EC1EF2DC3B1AE74F0BF6B8483EDC +:10D91000130A30E2BA9AEA879CBF15F910D10A803F +:10D92000D538585EE4072BEF6D32634C2F722829EF +:10D93000AFB3EA0DF06A51629D29292F4CCE033D09 +:10D9400045C3E6913DF45D2E810771896060F6C0A4 +:10D95000CE03BD10D277D0FA310FA4BCCE53243BF6 +:10D96000EC4546DD4DFA5AE217F33E0FCA3D7D57AE +:10D9700014A692DFA0FA088EAF6F72DA978C629EBF +:10D9800007CEC53C504A91071EAFD66F27B98E759A +:10D99000F5AC22BEBB400C901FEADAF7747729C9B8 +:10D9A000EDA13E7C30398D7D47B5E422B2FAC254F8 +:10D9B0008BEFAEDAD0DCCD385EB7EA0B5D251E36D4 +:10D9C000BEEB3D3592C1F7FD814DD89EE1B3EA0B28 +:10D9D000182E52FEA1DB7243BF4BF5B79998CF5377 +:10D9E0007D6191DFD2C3C7BC4E1473834079BF5DA4 +:10D9F0001FB816E14D7EEE0E0B2F02F84D9A6F4ABE +:10DA00002FB0FD3376786417ADFF80EC0A7033DCFD +:10DA100097473DB02605BE3C2B8C792C6E58853C33 +:10DA2000E730BC3DCCF0AF48F3294F08FB0BF3685F +:10DA30009F6560D847DFFD4BA3F15D8BCEDB89F995 +:10DA4000580BA6477C1FACDDA4CB649739CE3F3D75 +:10DA5000B16323E15C839E79C457B786EBC4793CFC +:10DA6000133777527DA2AB4C6279D8B9E243770580 +:10DA700090A5EBEA9E7C11B709AC8CDCEBCAC176B1 +:10DA80007D5ECE9D143ECC552447FDEB96C7321CDF +:10DA9000766FDDEE218EFE1B6EBBDCD1BF3438CA43 +:10DAA000D16E7EE82A477B9E3AC9F1FD02DF0C4722 +:10DAB0007FA536D7D15E5251ED181FCC3F2BE76AB8 +:10DAC0004C7E3F275C55ED1398FCE64C3ED43A4221 +:10DAD000E37122C5C11D99511F9D2FDA71A11DFF50 +:10DAE0007514185376E4C4EDDBB93592237E4CB639 +:10DAF00087BF5DC3E3E7A5855123557CDD672743D9 +:10DB00008239763CCFDF1B53E6EF8D6F39ED6ACC5F +:10DB100045E3964EDB787818E9A1B996C59574E689 +:10DB20004D716579532D6D73985FBE91C230583435 +:10DB300073BB6C24DA318A1FB358FC789AE8669478 +:10DB400061FCC8F0C6E3C7AEE22583FA997730EFEF +:10DB5000A0FAE95B9877D0F318E61D54D77E17F347 +:10DB60008E18CB3702AC7D18F30E7ABE847907BDD0 +:10DB70007F05F30E7A8A4DC0E4F2F79E6735F232E4 +:10DB8000A294D505DC4310BF55FE27F547A81E48D3 +:10DB9000E7422AE35F6922FEF3656B9F70FEFBE4B8 +:10DBA00094B40F3FA9D4BD4DB8AF96C91073955E1C +:10DBB0007A3F21CEF2887E98FC02C4FD42DB965F5C +:10DBC000BE39228FF2182FF30B4787BB79BE62D97B +:10DBD000B1B47C6D2FC5DFB3BFBD1BC80FBA413BCD +:10DBE000C1EA834D3CFF75B777327BB4E27999C5C2 +:10DBF000212658F62820B0B8FD1FDD2FD4905FC82D +:10DC00001BD82FB8E1CD79943FFA4641C073752AED +:10DC1000BF106C607AB3F4D560E189714272C8E7D5 +:10DC2000F553B7B689C981EAF559542F0783C94D11 +:10DC300046B9B17542BFFA3CABAB5E6DA9C2968BDB +:10DC4000878D708C67EBB8BAAEC26CC0F90ED37911 +:10DC5000D034D257B9B99DE249948387FCC849D9D9 +:10DC6000514765C7AED85F6DADAFA63DC4E4320382 +:10DC7000E5427A947D4EB955EF0A31FF381DE9939C +:10DC80009CA6FFCED9EF49AAEB37345975792BDE24 +:10DC90001BEB8AAD26791CB5FCE6D17DC76A26FD53 +:10DCA000057EF3686D48FA7282DF3C3A99FBCDA39A +:10DCB00071BF397BF3A07ED370FA4D1FC769C6C709 +:10DCC0003CFE19C86FF6F397259176DA07B6BFECDC +:10DCD0006AB2EA027911768F63B52832BAABC7030C +:10DCE0003BDF39A83CC5F6B922F07DEE19F9748CFA +:10DCF000F20F19E36D8A3370DFEFA47D6CE367B533 +:10DD0000CCED44821FEE60F8EA1FE7DD4DEF0F6AAD +:10DD10004579B48FEDF835BCE549C77EEE1A67EF5B +:10DD2000E763770A3C6E2E0D4FC4F973EA36D0BA1A +:10DD3000324AC6944A281FAFB59F6D7B87EB62F6C7 +:10DD4000256EE7F9FABC846FE217D7F931CA37CDEF +:10DD5000525DF796278F27CEDB3171AA5285FC1DC5 +:10DD60003959BB5F2EE86F8F565FDB934FF5ECA3FD +:10DD70003901A50AE572A4A96EBF3CAEFFB89B6F3E +:10DD80008FB0BA777878C0A2B72CE5B876ED951742 +:10DD900049EE8B0A2040F54086A084F3D92A88B248 +:10DDA000FA720DF4B2E74FAB8D1F93FCD283DB8187 +:10DDB000F9DB2DE7BC03F8A59F32FD24D9E5EBABD9 +:10DDC00083FFDEC4F639AF835CCAFEE28F3F6398FF +:10DDD000236F384C74578AFAB0BD74CEA0FD3193CE +:10DDE000E85E928E8FE30CEA0D768E05A21808236A +:10DDF000DF0F5718BF247A08784D1D46B8E5B817CD +:10DE00007C873F1370DDAF8A1093288FC972B3FAF5 +:10DE100077B27FDB5859F92AE7477513FF0DFEC328 +:10DE2000C7E9BB06C5CBE430F03D80A070119F452B +:10DE3000BDEFBD44F8C23D7286EC99E27FE525B2A4 +:10DE40009B1F817286CE975AB2FE1B52F957CF792B +:10DE5000C95157F450FE67F91FAAC3E71023F47B9A +:10DE6000E1A2447CA5099CAF116B395E73A689AC15 +:10DE7000CE9F83803C91607F18FB769D5E209C3A0C +:10DE8000FB9599E64681F8D2FAEAEF2F135F03F982 +:10DE9000FFBFF57327D5E5470FD2EF0E3513EE8B95 +:10DEA00020E4A3BAC057FD6372C30975209BFFF03D +:10DEB00052FB5E4144A17399705169360C12C72818 +:10DEC0009DB50E79F7EB17C14875AFE84A6BBEEC0C +:10DED00099217354199DCFF0BCB9A84663EF3D65F5 +:10DEE0003CBEF7E49B2CBEFBC0AA77BF63D5BB2921 +:10DEF0006ED2D97D0393D98F313D5F61F5BF732613 +:10DF0000FA3FF20373787DCFDCE1515BF2A86EF744 +:10DF1000AFAC7FABACA81E56890B4D25DCB76FE3C9 +:10DF2000E7E5D89EC0DAAE503DC9C903ABB313EFE5 +:10DF3000B34D5E6BD557D47FB3EA636E167F537AC9 +:10DF4000CFEB4DF92AAB47586DC5AD9A5B08BF239F +:10DF50004596F7838A667F0AF707F4132E78EC9BC1 +:10DF6000749E670E4D67FE4A02F914F9BB7692253E +:10DF70008ED7BC0698F47D8DC8E31E99FB973BB302 +:10DF800046B0F64EFF1C76EF4383A042EBBE2F6FE8 +:10DF9000F07AD23DDBF8FD8C369463CCD3BF5F9D25 +:10DFA0002DA7D1F96D4B9EC8D6883E2C487A936632 +:10DFB000DFC6FC629BBF702FF9B536BF9826E2FB27 +:10DFC0002D96FEEEF48A15A9EE83D9FD1A8414DA93 +:10DFD000FF9DF98B07C55187A5873EFF1008E9CC47 +:10DFE0007E69080DE4BB45CF15781DC4F0D13D9B7B +:10DFF000C516FDB64C9E9F78035156770F8F9B3206 +:10E0000085D6AF1447E19497EE39C4E0B7F8BCF376 +:10E010000BEE66F25B6DAE4005D16BCB2C14CD04DC +:10E02000BB75BB4DAF20F53DB8C6B5A2CD2F5B8FFC +:10E03000A98B303A85DD5B66E1E43E6FA099C6DDD1 +:10E04000E773530D04DA864FF1138EDB4672FBBB88 +:10E0500066DD9EFDDB8B09B75F84B708B73E99E9A3 +:10E06000B545E7756A799C181152D0B7F17A17E96E +:10E0700011F5A9284627C50FCA31095A80EAE06F71 +:10E08000C6A8CE18B6E2B4E4EFD392EE71B4643D04 +:10E090000054AF53ACFD17864E55C5756595A53B2D +:10E0A000C6D9DFBFD564DCB736C18FA7158580DF41 +:10E0B0005FE17A768F1C1C87C9EB6F17D0C3E4E24F +:10E0C0003387EFBB96AC74765E1C1E99BB27F13C80 +:10E0D000EFA025FF4BD14FE66F203E1E4FAA1396AF +:10E0E0005875C2647A81755C9FE12D1B8F8F288BD8 +:10E0F000C7233B290E627147C4B738613DCFD9763B +:10E1000054E0B80C233EF7A758EFABD6B881E6DD54 +:10E1100062F11BC7AB0884D7B6028E9FD0DA27AD59 +:10E12000FA9DC9EC42362A90EA1A1F54183F27FD7F +:10E130006497713F963D3320190EB98AEC1CFEEFAF +:10E140002847166F044EBDB689D75D4CA0F3A69D37 +:10E15000547761F3EE6071FF39C427F971B9B3D711 +:10E16000FCAC8CF9E9D0038144BFBDAB87E2854BA1 +:10E17000ADC3035B383DFB7E07B9F684FB7ACA3733 +:10E18000B3CD8CF1097435B7E3FBBFB4EEFCC7B572 +:10E19000CEBA73C13499DD4BDA794C62F76B06A2C3 +:10E1A00063D79DE1CAC1EDE05D497630F99999D513 +:10E1B00023627002C3D6894FB5625E9669DDF3AD06 +:10E1C00038356633DD2B4DB6271A449454F7EA935D +:10E1D000F7A17BDC0E86A37384A99CFF3D2E6CFD0A +:10E1E0006F59FB9B4D263B9FCFE7F70A83C07047D3 +:10E1F0000125E5458229B2388F2554C3AC523C0B2A +:10E2000032F1CD3076B4C7F4972CFFCBC89A3227C1 +:10E21000AAB2F58EB885E79BF9D02B501C7E252538 +:10E220007AACA4673CFB19D21BA9366D5C83A3C7EB +:10E23000AD73EAED527AB7F595CCCFE3DB1481F0FC +:10E240001EFE0AC6E9D84E8FFD333BF7F53C1D0193 +:10E25000AABFA75BE709F034B07B0EB32E2C520A9D +:10E26000183E469526E2E389B5CEFB094F58FA6879 +:10E270005517B3753D91CFFD6A099CA9223EE179FE +:10E28000517C24C5B9DD136B0B1C7956E0797150B4 +:10E290007DFC54D02BD7511C437139763694B95339 +:10E2A000C6E399E9212398EA1C449853BB6E727F18 +:10E2B0009C01DD52413E4BFC3C5EF95BE12D6F9DC4 +:10E2C000C6E474693B7097BE87E8515D28108FD310 +:10E2D00092E95D2A6EC3B891C589E60E195ACA58EB +:10E2E000DCC8E2C8ADA647A57365EFC4DB1EA67601 +:10E2F0000DC691946F7F590A65CE45BDBC26862612 +:10E3000010FEFAF6A9784099847C7DF5DD999B5B37 +:10E3100071BE5D94DDB3FBF85F7B2A86B15C97101C +:10E32000CBA7F1EE49B085FD9D861CCB4F8C37BB4A +:10E33000267A56A7C2E7B7D7737F344FF232F97502 +:10E34000E55BE72D60885407F18C9358BC19BF1F1B +:10E350008CDE059F5DFE255CDE35F80EF3D9B1C07D +:10E36000CFC78FDC066A989D8F3BCFBD29DE3C333B +:10E370002C9E8F3F6EC58F03E929FCCC0B6C9E96BB +:10E38000C0535EBA0FD19D1FDD558AF4BB7F25C1F6 +:10E390008E04DC7767F2F8EAD0C49FC8A7F0F9983A +:10E3A000858B2BD7F37A737514A543F77703B335B1 +:10E3B000E25F1E207FF8781DF79F595480A2FD313F +:10E3C0005E6279A87D8EEF29D9CCCE65ED73F769B1 +:10E3D000EBF97E1BE85C77FFFA4CE7797BD2F97AA0 +:10E3E000435D738D8A327D7D9D1587F49DB3C7E6AD +:10E3F00051BC34040CE6A7AF2F962056007DE7F5FC +:10E4000076DD3179BE6A3A6767F70DFE7F9EB3DB32 +:10E4100072B0E568D79BDA7CB98EF373B79FD7A942 +:10E42000D6D61827C86EB9A96E42F47C1ACB0B1544 +:10E430003F8F73EE5F165653ED97E72A8CF7D6257C +:10E44000D84745E3F74DBAB7EC71D4B58E4CE4F735 +:10E450006A565F1BCD4F8CE76C9C7559F15CD700F9 +:10E46000F1DC3516BEFAECA257B4FC6F7415EDB3AF +:10E470006EFB7EB0AE6BEA94783D05EAD5189DCF71 +:10E48000C1A6AC00D9AD366B9FF9E46076AABF5740 +:10E49000693BC8EFE7812F218E29A47957A71CDF9C +:10E4A000F79D45B7DDB2BF2D81359FCBFE3E5C6148 +:10E4B0000C594FF9B8CF697FD3B474C779D4ABB4D2 +:10E4C0006F52C87F6365E565EB87B23A3AAB7B363E +:10E4D000F8D1DE503D6DA6DA4671538B003C6EBB21 +:10E4E000443DA83B2722D33DC5B9FE2765B22FD5B1 +:10E4F0004FA39DC874D809E6E7F6AEBB7D33C59D32 +:10E50000BB1E3AC8EC9BD92A44460B5477EA667A7C +:10E51000C06D56EAC9EF3FDF63EBB99E617790C9E2 +:10E520008530CBEC6292BE84C07246F7210C34A4D5 +:10E53000E1C49F3185E4035BB93D6D0980F600B30A +:10E54000A7A194F72007B9573293E4F4FA3AE0F917 +:10E5500086FF1517D5BFE2F5C7203B07ABC26FC3D7 +:10E5600029EA91D510B3EB900B88CE7568C0462090 +:10E57000FE5EBEED11184A38B3EEB52AF13A640DCD +:10E58000AD5BB1EA908AC6EB900797DD24B6135EC7 +:10E59000FD12F32B881A66C7B35E96A81637204E75 +:10E5A000A2549F415CFDD0AACF4C945549453D4CA7 +:10E5B0008C39EF0FFFB0C25845F38E977B45EA9F29 +:10E5C000F04CAEA3FFFAEAE00DEBF9BD0C5607FDE7 +:10E5D0003FB89FBE42FCFD15FB69FBDF623FDD3F9C +:10E5E000ACAFCEE7A53CD03D491777E3FA8313A43F +:10E5F00008D58F8FA01F63FC043C11265C19D87DC1 +:10E60000D5EE92CBD8798A0BD59D9D1B8F533CE7D5 +:10E610004739EE2B253F3DAE90AAA6E067FB3A674F +:10E62000FCEA393F86D139E2E2FB89F6B23483F85D +:10E63000E5ED867C0BFF497A6F5056F1FB7EB8FF03 +:10E640002E1B9E82FFDDAA49F79B6C5C7820D0EEE2 +:10E6500091FAEFCF67AB8CE87A7EDEF69890505F48 +:10E660006F4233C2EF673BE345B5527F9DFC8BBDE4 +:10E670006F4B20907D738A38BDCF9F299B8BCB1326 +:10E68000E4D4961662E7F1847792C34EFBBEA6DC13 +:10E69000232E43FCA9C4203BB4EB61FB3733763512 +:10E6A000CB37A4E2804E7F1F9B591680C473F519A7 +:10E6B000F3E6BC48F8C8947B80E49DA959F7C6F4FA +:10E6C0003246C71E175BEFFCFB3CBB8E9ABCDEDFFD +:10E6D00058F9CEDB774481F2818CD8B36CBF64DC0F +:10E6E00021B0FBAC6E5ADF703A0DB3E6F195B1B6CE +:10E6F000E6E5F5CF0E73143BEFED2D16B3A86E389B +:10E70000EB4276D6347A6FE543F63DD3E479ED7C7F +:10E71000A8D7E4E7E84F14F37CE809F94C7AEE2037 +:10E72000758BE4FCC7931EEAA554F1FDF5FFBD9976 +:10E73000FE2ED663E5CB7F78577D9AF2A1858B8C30 +:10E740000F49DF6F8BA0B3F38C11C0E2C8869D5FC9 +:10E7500029A12B99272BF4D1CD28179F7D8E31C06D +:10E76000F9C587EBC1F2FF992C0F3A67F27BA61D22 +:10E770002E83D96D7315C7713F7B056A8CFEFE270A +:10E780008B70A926DA2BC3CAAFACFA6F3D688979C2 +:10E790007CDBC14A86035C56DC6E7C0EBBD562D145 +:10E7A000DF69D9AD36BA5C9EF7B9EC561EC941F6A1 +:10E7B0003AE5ABE43BF33094D7501A3788FD1ADEC4 +:10E7C0003CF9AFB75FB84F3FE47E024C614A8A7DA7 +:10E7D0009AEF9457870B9E1126E0FB392ADB4742BC +:10E7E000F1E1CFD8794D1F5D0368FFFF0FA1ACAEFB +:10E7F0006460410000000000000000000000000014 +:10E800001F8B080000000000000B53E16360F8510B +:10E810008FC035BCA87C42F82989EAD1F17526065B +:10E82000066666CACC00610334779C636760D0E4F7 +:10E830006660B8C2C6C06009C45C40BC8B07212FAB +:10E84000C201A1BD041062FBF82877C7281EDA5860 +:10E850004D9881415104C19F27822AAF2E8C602F91 +:10E8600094A0CCAE4D40FD00C0E9C2CD80030000B5 +:10E8700000000000000000001F8B080000000000E6 +:10E88000000BDD7D0F7C54D599E8B977EECCDC998F +:10E89000CC2437C9244C4212EE840402049DD0805B +:10E8A000C1E27A13A3A6FEE83A5AEAC616BB03B23F +:10E8B000D66E591D2DAB54D1DC90FF21C08808C104 +:10E8C000BF03A8F55FDB68ABB55BDB37A03F97F60E +:10E8D000F9DAAC6B5975695F2CAEAFEEF60FAD4B44 +:10E8E00049DF6279DFF79D7333F7DE4C825BDBF73C +:10E8F0005E174B2FE79E73CFF9CE77BEFFE73B67DE +:10E90000FCA11A563B8FB133F8E742C68CCCCD9DA3 +:10E910002CC25880C9F16178AA6AFCC83AC6D800EE +:10E92000FC652B19EBC76705FC8D9650F9F680CE78 +:10E930005819639E2AF92D7F2163DE508A25E1D57F +:10E94000435F7CEFAD8166C6CC7DBEF82350FED21E +:10E950001D57BD897D1C7EE0D1BB2E817E1FDE52FE +:10E96000BBCC0FE5CB99C4D872C61E0DA7640DDED3 +:10E970009B7D72E61178F570EF956F32F8FEE1DD60 +:10E98000B2CE62F8AC2D6221C63EC27CD4BEEF810D +:10E990005BDEF443FDBC34D317427D5DF663B21EEB +:10E9A00066AC724261AC34379F47BAB2A7DEF6322A +:10E9B00096E93A72EAED7A68AF24E4007CC776B350 +:10E9C000A647E0314F4DF2F2A82887981C003898EE +:10E9D00029CA9AC6CBBD5086793CDE354EFD600310 +:10E9E0007505D4E33FE1FD82DD308ECAE8CF19F82A +:10E9F000BB289D96D7353216338F38DE2F7E18BE52 +:10EA00006FC895E731E5DF27AC32CC6302FF01F830 +:10EA10009C37CAE7B168D287939E365F6B5ED6BCDF +:10EA2000FFD4E677F84773BE87F4F1302B4AF891AC +:10EA30001E7AD7D37A3F32CA68BDFDC927399D985F +:10EA40004087F0C9A9B7F653F94B77C8F16E282F64 +:10EA50005013C145344F99E13C1684983106F02C8F +:10EA600050E00974D225E82A8B4F18EF21F1D459D0 +:10EA7000EA4D1CEFD12D4C1F9610AF570D2F82720F +:10EA8000DD6B1EB610E1CDFE56427C5AF4633DF5B7 +:10EA9000511FCB7E6466BAAA531287FD36BCD7A934 +:10EAA000495E1678AF0BB1C37E1BDEEB348D975DEC +:10EAB00078B7FA9F86EF2D80EFD0747CBBD7E983BF +:10EAC000E25F674630B114E691BEB28835221E2E51 +:10EAD000699B084D9F37D261B614F17E424A847219 +:10EAE000F3B6F0F4A73B7F4E07FB910E6244079705 +:10EAF00035349F9D0E2A27FEABD1C1EFC70F286783 +:10EB0000B3B3C8D93F153C607BC4837B7ED67347C3 +:10EB1000977EB20EE6E537830CF5E2B6975806E924 +:10EB20006587A2FF532D9477C465EC01BA31FE319D +:10EB30005ACE5084D1B84B99563A5FCAF553D40295 +:10EB4000FDD8E0B0DEEFEA029D0B8A706797CA8CB1 +:10EB500085B9F7696F268AFCD6DC70DD6A760E947B +:10EB60007FC7DEC2CE879B7CFA56E87769FC9D633F +:10EB7000F85EF38F6F5D0F708CB4AA89AD717C7FE6 +:10EB8000DDDF30D0C3A1CD9F2E7EDBB63E235ED627 +:10EB900089F291295E02B2F17A6D3FAEB7C4943723 +:10EBA00024FCBEAE3C86E5B9924C72938D2B3F9906 +:10EBB00000BC36C07F676A196B62BC6CE16D67D3BD +:10EBC00081561CB711E0611AC2C1DE2DB2C157DAFD +:10EBD000616BCF1F2CB2829B0E889FCA863DDDF3EE +:10EBE000E1FB5F4A2CAEB520BEA0BD6D5D8A6A32E6 +:10EBF000D2B5D0DF909857E598AD1EFE56D45DF59E +:10EC00007909E6C936D8C64138616C84FF7BAD3ED0 +:10EC10002301DF8F8CB18C5F9A3E9F1165F275A442 +:10EC2000B7C6453EDD8C4D9F9F1B5EF77C8A6AD23E +:10EC3000DDF3A1FF41899DD8AA4D87BFA2C1B74E80 +:10EC400046F8C69CF055E800F739D3E1B6E8F0BFC6 +:10EC50007569440787BA1A882EF6415987E7A1F7E4 +:10EC60003D9DA8D7746C0AE3DEF5927E00D76B8ACF +:10EC7000EE24DE574AE27AEEB097B7339F659947A4 +:10EC8000009E811A4EBFA3EB16ECF7C47274312AB2 +:10EC900031EAF7E68B777D0CDB8FAE952554951521 +:10ECA0005E6D2DB6DFDBBE80F0339ADC75A81ECA20 +:10ECB0004DADEAAF3D30DFD642E3A20DD85F858788 +:10ECC000E1FA54AC7D55BE0EF9B7658E5614857ABF +:10ECD000BFF633A487D18B393D544C96331DE4E6FF +:10ECE000D276DF5B8897A5494EA751179D8ECE48F7 +:10ECF000A7916312F6D7CEE9F426179D1AF01FE20A +:10ED0000F19BEB0FB46EB0D1A57B5DA7E06A05B8AF +:10ED1000A06C9C3E0B9D26F71CAA6F9E994E57CE69 +:10ED2000CB481BA07E0FD2A996874E3B675F6FEB47 +:10ED3000F93DAFDF48203E5DF43A35AF3BCD8F99CA +:10ED4000509F7E5A6188CFB3D1AB7B5E156B65D384 +:10ED50007F4E3EF8D304FFDE56D540F8A7D1EBDA5C +:10ED6000FC7C66C17D7757861DF7A29C8C12DD0E58 +:10ED700077E9F41C11F4BB0B9B564C97ABDB657623 +:10ED80003DAEF3F620BBFE195CEF8E6579DB594F83 +:10ED9000C6BA69BD77205D9F4F60180CD6A3683551 +:10EDA000FCAB92CAD9601D8CEF9D2A1BAC0AFA9766 +:10EDB000A6CAA018182B583DF5BD5900ED77047868 +:10EDC000F9C7DDD156B32A579EEC2E6A35574DAFA1 +:10EDD0001FF68E6595264093F4BAD11870F46F60D3 +:10EDE000FF76F8D455D3FB1B0EF0F621B980FA1B41 +:10EDF00092B251E6114FE0A36F48CC688F62BF50CA +:10EE000086F57861F49FCD9756DAC6317F6E6481BE +:10EE10005F07E4748F9D8FDDCF6592F1825486F099 +:10EE2000643A8158D82BD82F8C5FB08AF773587A00 +:10EE300087F5D8F075B4FBDF4D840FD114027982C9 +:10EE4000A480728075703F0FF076E8B3407F211484 +:10EE50003100A71C8732D04DB1A1A6FC50D6DA955F +:10EE600077EC746FA7EF7CFD15ADE6DFABD81F54D0 +:10EE7000829747FD9FB53FF1FDCC74C2DB2D931205 +:10EE80002F48402F03BE748F0C787A41E885B6F383 +:10EE90005B7EB00AC60D8C7BE3E87F06564F905C24 +:10EEA0002C02770BF1049651F642D41B31961A8648 +:10EEB000F2D392CEE58C928E26C2A8C72B59C606F5 +:10EEC00097D5EF1F1A6F00FF495C3F6B9DCF361F30 +:10EED00015E703A0AA389F66DB7C14980F8C3F24AB +:10EEE000E693B3479CF3180E989D09E0C3B6C52D71 +:10EEF0009733EAAF5E2639A464A8BF11AF2E0F176F +:10EF000083FE94B95F65E1455D9DA1FE0BC090C491 +:10EF1000F10A1A9CFD5AFD01BE993F86F8E6FD15DF +:10EF2000207CC5D47F7E7C33C0F7D2E9FDBD27E0CD +:10EF3000D9046098F83DE3E35BDF5BDF59FD58F3EC +:10EF40009DD6CF2BC7A7FAF1D8D6DD8D270908D3D8 +:10EF50006E1FBAF1763678ACEF7E5F78CE362F37FB +:10EF60003CC5938B9801FAF46E7C01F427DFA9125B +:10EF70007D0F7772BD327CE462F2F7EE92334790F8 +:10EF80006ECC57BD0CEDEDBB500E0391B2D5CBE866 +:10EF9000BB798599E8958D33CBE1BD60B79AC040C8 +:10EFA000697866E0392CEC88B4717337FAE97B989C +:10EFB000F62B4F9CE40BE973AD75137F6F44F9FB9F +:10EFC000007F7F57FB5667FB30EFA7F8E25E477B79 +:10EFD0006BFCE85AB0B7F3D8D1E53EB62E91C77FA7 +:10EFE000DD22CBB47EDF44FD04708E0AFD541E4C3E +:10EFF000AE43BC683541FD00E065CFD52B2AD7C3B1 +:10F00000F707B72F90D7035CBB646E47A5857E3B9F +:10F01000BCBD5C42FFB8D8609282FCBB16A535F43B +:10F02000EB4D7517C2FAA46466A400AEE29F9A572E +:10F03000A310E8925B243F7C5FD10E6568F9E5E19F +:10F040000BA5BF5F8E6546F276B77C792BCADF8150 +:10F05000EFDFDD83706CFA17680543AE54D29E145F +:10F06000AD43495E7D78F05FD4CE0CC0B772A47F0B +:10F07000FC1385446F0E7A38FF6DA0079BDEFFA658 +:10F0800098EFA898FF5F023AF2C9E5952A974BB02E +:10F09000F4A91E80B7B89DCBADF3414EA1BDA70D1D +:10F0A0003AE514C07D911DEE3F14BCCB501994E598 +:10F0B000FA03B9B7575E8EF0A43D38DEF98AC51F52 +:10F0C0004EF8B52D3ED35348CFB73CE7E48157CC3B +:10F0D0001BFADB9FAFBF3FD67CA0DF1789AF3F6431 +:10F0E000BFC5AE7E2FBAED7A19E1DD6FCA1994ABB8 +:10F0F0000FFAB46003C64F8F7A281E06261AC5770A +:10F10000DCE354A71739FC76F7B3ED966810E97C79 +:10F11000BFC9E3420FDE565999B4F1D57EC1CFFB8A +:10F1200005FFFEA3E0937F90BDF4FCA1283F5808A3 +:10F13000F65D1E7E646CAB25DFE9D93819A2784AEA +:10F14000AEEC7395799C21572EA4B2D9C6F9D0ACF8 +:10F1500064F11E1DD733C592008FBF8A999E7361DB +:10F160004D9187B8DECB34027E14201495E4FBF871 +:10F1700097B1EC45DEB7957D60734523B932F4C392 +:10F18000745BBD05FF502C1D0DD9E4625FFD9ED759 +:10F1900031AE11D4795C56CDEEEB5C8FFA738B2FC8 +:10F1A0008EA69EAA9B2C09764350893319FDA31085 +:10F1B0008BE1FA045583C9182CD0A00CF007430941 +:10F1C0005E8E887A2DC9DB477979E8FD2F50D9AC5E +:10F1D000E6ED5FACBF8ED67F48AF3D80EB3FA42FFE +:10F1E0002B9211DF423F0F4AC937E532F4774D15B4 +:10F1F000E900DACD4123E44DE403C2BFF2BF913F01 +:10F200003C484FF87F2CA4BDB344D09707EDF82CB1 +:10F21000C55F06453C6704E3315EC47B264B7E65D3 +:10F2200021C73B98DDB9F80BF57324176FA1F2B82D +:10F23000A35CA09906FA714A84C53DF07DA83DCD36 +:10F24000701DFD515EC6F5F317E5D66FAF6BFDF689 +:10F25000BAD66FAF6BFDF6BAD66FAF6BFDF6C6527E +:10F26000158EF5BBE696379CEBF7C537FEEA8FB0F7 +:10F270007E7B5DEBE7E68B1F287CDD1EAA5E4FEBF5 +:10F280006A5E2D93DFFEE21DFD541E5E2B93FE3E53 +:10F290007CC72DB44F72770B2F6F50E613BF0D77DD +:10F2A0001E38827EEA7B47BCE4FFD5B2F810C65711 +:10F2B000B6BFF2576C38CF784F60DC89FC35EEA7CB +:10F2C00059EF5F5CB4A068C2869F6DC24FDB26FC1D +:10F2D000B4B6737EAAA27CD8D17C25EDC7947838C9 +:10F2E000BF0F437F18A718EC52E98971AD24F47F52 +:10F2F0001F9493507EB84BA3E7B3A087F0FD035053 +:10F300009F85E7DD0D7207CABD47A11D961FEB0261 +:10F31000930AE86D7797FA9E427EA546E56F75459C +:10F32000A99CE9D2A90CFE253DBFDD15A7F7DFE8B2 +:10F330006AA1F2F9F295D778D02F5D2D13FD54DE36 +:10F34000D17000EDE7D2989CC800BCA51F5718D219 +:10F350009FF57E4A6ECB6DEB3D80FFFB1B1482E771 +:10F36000FE946CB0FCED3E8BEDAA620AF5577593E6 +:10F37000624891BCED36221C8F34C2FC306EBE5BFD +:10F380003667E8EF266C575F0FF0C1B8F5F728E64F +:10F390000CFDDD82E33ED7C8E17BEE7539CBF2B7D9 +:10F3A000BB1DFB5B51CFE15BF186929D61BE26F6F2 +:10F3B000B7B884DB4DB07AAD180F9BB3562BC1FDA7 +:10F3C00096C5A5EC26FE7EAC1BDF17B7F3F74BB056 +:10F3D0003DFAEBCCD88AFB4A251DE23DB6A7F7895A +:10F3E00017713FA974B5E847D865F75CC3C8BE2D4F +:10F3F000EFD40EA84032DB4579CE5A7D3F9617FBFD +:10F40000F9786597689204FC56DE9E9424E82F0CE8 +:10F410006519CA4B7CA9560579FE334C3E009FDE28 +:10F4200073992E4920D7CA3B78BBED5096A1BCC436 +:10F430009FEA4679A2FD25B403BA2FBB3C4EED8668 +:10F4400085FD13BE3C7908FB29EDD42555477AD5B7 +:10F45000E9FD9CD52909E567F9C3492908B2A60346 +:10F46000D40E860A866F6264AF3DD6F33AF9EBE5B7 +:10F47000095EF6294B0E9B603B2CAECC109DB12053 +:10F48000D31F013B62F1DC89518C5BB2277D14D71D +:10F490005E523991E9C1F213418A6B2F993BF1D841 +:10F4A000416CFF551F950B3FFAC262DC477BEF951D +:10F4B0008BE624F3D8DB4B1E03C3D2A6F7DD7EC355 +:10F4C0009CDE94A402BC1101EF20C27B3E63DFE905 +:10F4D000394EF0CE89F3F2CF3C7338BC35A613DE3B +:10F4E00079E39FBE316283B766FCDA9D111BBCF3E2 +:10F4F000C63FFFD5E61CBC179C12F02AC61CED03C4 +:10F50000C01BD09DF0FE5795EF7E3DC55A1B51CED6 +:10F510007B08DF3F50F6759B219A9F22813DB257B1 +:10F52000D84BEF2926C9814D01BD16FD450BCEBF35 +:10F53000F770F9BFB88625D16E5A7CCC67969E339A +:10F54000B39DB6781E4B61BB253599C3DB11AE3632 +:10F55000F5A64700874B8E05CDD2C299BF5B82DFEF +:10F560003562BBD05BF6FEBF8FCA77F9D9D76FC7BC +:10F57000223E9F1D01EEA7055536A895D8FC5CA13B +:10F580000F1657C23C1A911FC6FEF906073F8C1D85 +:10F59000DF61E387A771DC32E48BB17FFB8A8D2FBB +:10F5A0003EFA4B4E67C3027F961F09F8333E10FEAA +:10F5B000263F30FEB6EEB4E36FF203E26FF2F7C31C +:10F5C000DF1E9C0FD0FF9EF0D47C488E9F753E13AB +:10F5D0001F783EF20EFB7C263EE07C267EBFF9DCE7 +:10F5E0002DE8E16EAFA007E56CF470E275A77C3CF6 +:10F5F00031D193971E4EFCD42E278B2EE4F4B05DB0 +:10F600008CB75DE02F1882F196CD365E76EE8D8E4A +:10F61000F1B2F377E61D2FBBE4ABB6F156BDC7C719 +:10F620005BA8FF47454D33DA293E8C71B061683BDA +:10F630004EFB133AD9D387173D3A8AFB605FA80E79 +:10F64000523CF1D0A2A32ADA4FDB572F23FB68B03C +:10F650008B9DAC237B25FB9B8DDE1C9CC3AEFD3EAE +:10F66000F77358E6FED3B088CBB8EB2DBB6B30CE2A +:10F67000ED2777FD6185D73325558171CB709C9D32 +:10F680006CCC1337B1E0B2E0FCB0703D2FECD8C1C8 +:10F69000F856ED22D03D3B7B2FDDAAA27FD2BC2BBA +:10F6A00081E5EF98976E6D97FEDFC37540B9C20193 +:10F6B000D7E3EC8AFF2FE07AB6F7530EB8B6999FDE +:10F6C0009A15AEBD22EE36137DBCC5922568E70DB6 +:10F6D0009403DD8672745B82BE19DA938AE6A01306 +:10F6E000B549213B74A8D949575B141E47B39E778F +:10F6F000285C3E84EB15BEE97D8D2F531FE3FD5C36 +:10F7000009F6D641EC7779AEDFB4AB6CF99FE88EA1 +:10F710009E998F65A7FFA94E16D07E616832404F33 +:10F72000F7FC06855F32D2E4137EFE820338654F14 +:10F73000284BFE7871A35EEBA17D311EAFEC6B7A96 +:10F74000D498E0F289F28450BFA35DCCDA79BE414F +:10F7500041F66AF24B8350C694366B9CE206ADD5F7 +:10F7600020BC99D12B6D79108312973F961D53AC15 +:10F7700097EFC7F1ADFADF093C853C5C2E8FD4A62C +:10F78000A325367C0EDD9161682FF7D5EF21B802F5 +:10F7900002AE800BAE20C205FD07DC70D5CD0E9702 +:10F7A0001B5F161EACFD85F0E412A697227E17D1D2 +:10F7B0007326FA1D11F4BB7D39C773FA020BCFE330 +:10F7C000B47F5EDC0178966C785EFE0ECDA750E4C7 +:10F7D0006115E27C22B9F99488F914E27C6C7C55BD +:10F7E000DC02F321B97A227AA52D6EB553D0F71435 +:10F7F0009E57953BF6AF9778399EC31EAEC7B6D7D6 +:10F80000B20A3B9EFB5A7D64FF157670FBEF0F0D2D +:10F81000D7CC78CED03304BA7315E8A750F362A6DC +:10F82000DBF46889D8F72E42DC5580BF2CFA6318C8 +:10F8300094B7C507CFF3CA8E38E0D4FAE13F914EB2 +:10F84000127C7F1FFCB1EE1E80BF3CEED3873128B7 +:10F85000AA5CDC8DFAB3EC053F1B8E6388B4BDFB5C +:10F8600045687F97A126B0FC296FAD8013D674053B +:10F87000A51A32867CE8F959671DF6F3170AA378B2 +:10F880000C5B2921DE4F6EC6DC0E842F9277FFAD14 +:10F890009CF9585615FC0C738AACE1656BBE0CEBF9 +:10F8A000B9DC7A1BF9DBCFAE2E4AE4C92BFAC0FDD6 +:10F8B000ADB6956DFBD16E78A7F50BE26A6EC97F88 +:10F8C000BEFFCF7AC391770AA0701E3B8FE25A33F6 +:10F8D000E0C1BD4EB1490FC92F7D52A2E73C21D7EF +:10F8E0006A845CAB9E2C25FEAB9A2CA6E7DCC9B9DA +:10F8F000F4BE72B2829E1593F3E9199D8C0979B812 +:10F90000849E05C8B7F0F409FA094E7E84CA81C9FD +:10F9100026EAC78ADBB028A72775F2A354EF9F5CBD +:10F9200049F58C7139B96BA55E3B6CE7DFA61564B0 +:10F930008F86DB597C21AC7F58F04BD8C52F854290 +:10F940005E86DDFCD26CF18B5E61E7975D6E3E6E8C +:10F9500071CACB2F093ACFC9CB6C14EDC45D1F5BC4 +:10F96000D064DAE45EDFC716103F87139C9F67827E +:10F970002F22F87966F8261C727387909B16BE6654 +:10F980005E578EA791A6E788CE7C20163D60B76BA8 +:10F99000CB36460F426DE1B2771A5E84F1CFF52681 +:10F9A000BFE245FDC826E20701CEFB6EF8D768929C +:10F9B000F4D51E09F9B6D0C7F71D762CFB59FC20EB +:10F9C00051D938437E80EF9EF5DAF87DC75F05AFE9 +:10F9D0007E146AF55ED9213F6AB680036FB303AA2D +:10F9E000369538CA951B2B1DED9174510E91130D50 +:10F9F000741BDD50EB685F1077CAA740C33247BD68 +:10FA0000157FF7EBE73BDA55207D97227D4A429F31 +:10FA100014D0D3A2CB02A4737B1E9AD027169E19B2 +:10FA20001B233D3214E374E80969D2FAC6E9F8EE03 +:10FA30005B7A0BE915BF586FBF6BBD55418F7EF7E1 +:10FA40007A5759EB9D76C8EF21373DBAF4F76F85A9 +:10FA50005E29107A655BEDD8EB68E70FD5BBE851FE +:10FA6000C4FFE1AFBE509A19BEF059E1CBAFC73F1A +:10FA7000383DF633E497B4C452B85FBA6D697F1667 +:10FA8000E1F5D52A542E3877247B18632A6D7C3F04 +:10FA90000FE8CCE383F96D3B67387B00DEF7AF0BF3 +:10FAA000D1FB427D9C0B454127A4924A905E9CF479 +:10FAB00057100FBAE883CB3BB32DCEF70796F1FD75 +:10FAC0008160648CB6BD820D7C5F2614E7F8DE5E33 +:10FAD000C1E33E058D3CEEB3BD82C771A01DC57D5F +:10FAE000ACB2354F284743367DDBB7FC28E13D30CB +:10FAF00015D7196298A76AC573024A96C767E23C90 +:10FB00003E1350C778FCA691C773B6BF7F90C7E37A +:10FB100017F17A4F88AF57A8516B42BDC7B404ADF7 +:10FB200057A0416BC2F8F9421FA787CEA0711EE211 +:10FB30004D7F8DEFABF7AFE5F9A0DB2B5E8D627FDC +:10FB400027759F86F9EBDBABF93CCD1F49A49FA33A +:10FB500075498951A83EB5AE1B10D2DFC5E3DF7BE6 +:10FB600063B79CBB1ED1A7A4CEFB846DFD8F16246A +:10FB7000C3388ECF97CC74433F9B8FF9E35BA19939 +:10FB800054B979E104C559AB34D2478CDBCB161D8F +:10FB9000AB752C83741CC87E8CE613A86271B41BF1 +:10FBA00071671ED7C557C7B427B0BE8EB787BA03D3 +:10FBB0000512C633E306E147E7F851B01EE9B54A3E +:10FBC0003B88F9263E95E38345591CF1E515DFFB9B +:10FBD000A2BC1E63A9581E11F13C8CCFE1BA8ED88D +:10FBE000E2779AAD0C7F1A304EBB530AC691EF47AD +:10FBF0006259C7BEDA484CE2F6D0E917A36B6C78BD +:10FC00001979FF3DCA937ABCBAB1A77D25D2FD828E +:10FC10002292ABDE6C54CB638FF5773D56AC7867A0 +:10FC2000E69F7E4B1E09FBCEF21F008F3ADA996EDB +:10FC30003CF635ED99C2E3C23F221EB7211EA51C3A +:10FC40001EB721DEA41C1EADB2358F6DB13107FE8B +:10FC5000B621FE904E4E7F2DBAC626F7B62D7D39C1 +:10FC60008AFBB9DB108FC0EF77FB008FE7839DA283 +:10FC700070BEDD56C7E248EF8A66B27CF168FF6667 +:10FC80008FFEB6CD1FF3ABA92398075DF49A87A129 +:10FC90005C2C4AFF2AEBC1F901BE1E21BA4B31FB95 +:10FCA000F801102E68572D8427DA5D5E3DE8B0BB61 +:10FCB000FC9B7DD47FFAFD6B75DC9CD4E424E5C706 +:10FCC000750693A33EB40F425C9E04421943223A48 +:10FCD0004ACA08F7CE23DE0CD2D146AF711FB6BB9D +:10FCE0003976A203F178F3053233E1FD4E5DEEA0E3 +:10FCF000756629F99908B62FA3BC520BAE7B057F18 +:10FD00001FF11A07E9FB80FB7BD691CFAF3AE0E306 +:10FD1000764B1AF373A13EDD7A1DF1EB4075C332C9 +:10FD200094235ADBF5A3EBB05CD3B80CCDC6AFF986 +:10FD300024E10783BE5F4A72F86B3E9BBEF7574DC6 +:10FD400010DEBFE5D3091E9F92CA328A87C719AE5B +:10FD5000DBCE0B38BDCF44CFBECD4F152BA5240F26 +:10FD600048DE22FDE03C7696717AB2E2EC3BCB387D +:10FD7000FDA0DCD06C65AB9F9D65279CF2F682DF11 +:10FD80009C45DEA6B87CADE2741F70C5CF77BEFF80 +:10FD9000112A9B612E6FDD703F27F0E8966B9A2148 +:10FDA000F8AB01E41AEA876C05ED0305754BAE6507 +:10FDB000881FFD0D20D784FEC0F6C13AE0C718E9C0 +:10FDC000E36E82A38E8F5B2CEA559DF39B5FD5BBC0 +:10FDD000B13F8B5E4B44BDC5AF167F0F2DE2F8439C +:10FDE000FEA43C82451C5F885FCD56B6E4DA00CAAB +:10FDF000358CE32C4A3BF0383425D7EE76C8B5A1D4 +:10FE0000F7BF40FCF8F8FD5F24B9067606ADF39025 +:10FE1000379D57AE0D9F45AE0D4FC9B514D9159AF4 +:10FE200091E672AD11E49A84F10EC06333EE2709B6 +:10FE3000B956FF9C41786E04B926F432960B748E45 +:10FE4000C780C20ED9E55A7123976BC1068127C4BA +:10FE500023C733C9B512511FA873CAB5C1A51C8FDA +:10FE6000B84E88C7C1A51C6F8867CD569EB28396D1 +:10FE70009A0EB9363825D77A1C726D30B687E4DA17 +:10FE800020E211F443E300E0B112E51ACF13198C1C +:10FE900073B916EC183330747536B936A0F3FD6DAE +:10FEA000906F0CF1EF4F4B86901F24CF42428E2D66 +:10FEB00040398674D7985F8E81DC3A17F3C0A6E488 +:10FEC000960A720BFE71999FF3B7F5DE1BC9107F7E +:10FED0000F548B3880CEF1175D1B3FC8FD338EBFAA +:10FEE000F235BC7C999F9F831C88B1B6ED643FCBF3 +:10FEF000996EA4B7FA5BA2B5F0DDDE1F7A28B7834E +:10FF00004C8B72C66E15FF86FA73EDF93C03688759 +:10FF1000F867A623FFEFBE3081F28CFDD84FFC219D +:10FF2000D56C4E225CB7FE44D2FDB6753A5AD076F7 +:10FF3000997FF9743B6F40E831CBCE1B107ACBB27E +:10FF4000F3065C7A6C209672E6D754DFF2A1ECBC23 +:10FF500001979D67E98B0194FF36FB72999FCBFF58 +:10FF6000338A712DAED7CDB15407B6BBB91AE47F31 +:10FF70000CE94126F96FE90FF7F7EBC5F7FFA81871 +:10FF80009FA7EF03EEEF99D03F1C2F458646DF2356 +:10FF9000257B5680BD28AAFEDACFE5A0FE4A675130 +:10FFA000BEFC2DEBC904FD5972123774797CE50C47 +:10FFB00095F5E767FF7E08F32D60DDB77569648707 +:10FFC000EA1B3E356B7B8B4EFCECD3D4CEAF9B064D +:10FFD000D251B0216DC8242FF526416F062B473D25 +:10FFE0006FFDD99D45FB29082B746F1CDF3F658E83 +:10FFF00040397A113BE15F89727D2A2EC4FD08CF1A +:020000023000CC +:10000000DAA2641E79673D371F7BB7F4255BFB7B63 +:10001000FDCEB8CC49F614CB523C28931D41BA31E1 +:10002000D889E1E2E9FD9CEAFA69E94B982A73A4D0 +:1000300073D638941FFC5BCC47B3E62D57990CFD63 +:1000400050359E22E708ECC26CA070FA3CB6A30FB4 +:1000500045E7028E5D84F9FA675BCF9DC21FD82EFB +:10006000F260666A37D5AF79B427DB88703D49FA0C +:10007000EF24E017E35D45212621BEC197A37CAAAA +:100080007024E1B0E3DC705AF39A693C25E48C8B70 +:100090009DADBD2FE25A4F973ED7C7A2AF7BD04F41 +:1000A000D2F8794345493D341141F717147533951A +:1000B000BF3481FC6BFAB547D05E68837A7CFA5412 +:1000C0000DF3522D3AEC13F47BDCCFF39FF61614AC +:1000D00092BCDC7C2C4C7951A7E4B4BA0DAA3C4507 +:1000E000AB29EEE2F134A530BFE4C2D317AAF6384B +:1000F000C02FFCDC1E1B08F1FD8E0125A5A2EED24F +:1001000099A1225D0C693C0F72A6F9AA55B2033F72 +:10011000BE4870D6F9F70ABFBE3710A77C7BAB1F6D +:10012000490D101CC7FD92389779E2C533309FDE28 +:10013000904CFEE56068971A43390676361ECF1E4E +:10014000544CB5E40F08D785A72FA778568FC6C89B +:100150008EF687DBCC2CAE83C452F5184FD6949F15 +:100160004DE5D3027FF9BD8CF2D2FCC5B519D3267B +:1001700007FFD0F862496E4F298CDB53FE40B25224 +:1001800045FCB45C66F4C2F8BF46FE2E43BB36495C +:10019000FA3377EE84CB21EA0AF8A07552E1766152 +:1001A0009CCF2F8C2760A1FF229CE17C3C8AA04B36 +:1001B0005C61C625BE3FB58AF6A322014BBE7ED840 +:1001C000FED6527F9271173B53F001FA5326281E38 +:1001D000FF07EBEF2CF005D8FDD41F66CD9D29E578 +:1001E000FA8191BC0F105F9D6CE4718E1ED017F8E0 +:1001F0007EA02B4A4FA63C4BF23F84FB0E71DCC520 +:100200007B86FC48ED3B7E86E700ADB8BFB5CF07E7 +:10021000F6E65BF239183F72CA15B56A76B9D1575E +:10022000B6206F7E544E1F2A2C66D38733B5FB63EE +:100230003F7B403EC56C76B912AAA5434E33CDCB69 +:10024000D398E4C861096697AB8ACCF3177A42EB7E +:10025000D524D9BB67CEA09D60D9749E50A2251F1E +:100260003E4CDC3CB6F9935EADFF263CBFE78D6E9D +:1002700030ECE701B7E2BFCBF0FD46636216BC7B12 +:1002800094E4E83A9403CDDC3FBAABE033ECAD46FE +:1002900094B79FA175EE2F2B8FF9C98E1179DD6A66 +:1002A00088CE5F5B7478A8ECAA28C6ABFA2AAE8A1F +:1002B000A2BEECF326A228F78E943D6760BFFDA78F +:1002C0008B189E83EA8FD692BFD37F7AFE9C549E72 +:1002D0007915E0BD1F2AD911E2BCA30F939BA7E0BB +:1002E000046B703086FECC110FD9F977157CC7C02E +:1002F00038844F57E89C952F94A0F3D41DCD630606 +:10030000FAE3BE6428E9D7A6F7638D037F248C4FF8 +:10031000D001038BAF24477D5E38DC655F9D4CFCCC +:10032000033E66A6274F7BAF5A6816003F7873EFEF +:10033000351CB7EE95A5A467B13DC65D25E074E414 +:100340009F1CBD679CFB829A9CEBB716B9C11CA48D +:10035000F8255353B81FE8C667BF4FEC0F2946274F +:10036000C2D72B952C1B6E9EC50E880EFECA334B32 +:10037000FE5140F365F19CAB12499B442F9A1CBF80 +:10038000348AE38F8C23FDC193BE0F68CABFDAE9BC +:10039000ED55D569BFF5846A678D6F60DC94CD62D9 +:1003A0001FF97CF124CF5B4D75CAA437CEA1792902 +:1003B000552FBF1E83F18FAB5CBF2A519F89F0B8C8 +:1003C000F59A1C348EAB80575F90F7E3EEBF34D8BC +:1003D000F6BFB0BE574DBC8B7A6830B642E81D57A9 +:1003E000DC2219177C6D144AE59C6EF99F4C16E1CE +:1003F000F2264306CA4B6FF30186F69056E9E1F206 +:10040000B2819FCFB5CEFD7A8C9FD239FFC255CE37 +:10041000F3BC1E234872D4EB3ACFEB1178F6B8DE6A +:100420009F71E3B9EB7976DC76BF02BC32F2ED67FF +:100430007F2FD0E60DE489CBD0D9C095483F294124 +:1004400067A087353CAFCE482FDCDDD540CFBD5D02 +:10045000715AAFFBBA5AA8DCDB6550795B57079538 +:100460001FE84A50D957D1AB221EF755A4F7E139FE +:1004700049663ED9FE0AE0635F38FD063F69F538FC +:100480002F8BF3B5FAD0C3ED985FB9AF9897170DDE +:100490003DD16E02DDECAB4F5F2D53FBBB79FB6AA8 +:1004A0005EBF6CE8295EBF9497FF6CE8695E1679C1 +:1004B0008CAC6ACD59F673B97CFB160632101F5509 +:1004C00011DA97F1E8EB9904AFF69589FD1AD10F8F +:1004D0001EFFBD228F5F61F5B336C0F36E7CF80A54 +:1004E000ED184D21FDBA2FF69F8327A0A40DC28FD2 +:1004F000F942FB6BC86F4823E01F5C1F789EF043F6 +:1005000022E97CF447FFAE97F0B554F40FFAE69376 +:10051000367DB321C0CFEFEC6B72CEE36CE35F8727 +:100520008EDE723CCF3BC17069FE4D4D7E3C80F942 +:10053000096BB3590C610E543D43FE8785AF99FB9F +:100540003369FC14E2B72CD73E1437E8FB73033C45 +:100550007FE8814D6D44279F12F8B3CA886F949746 +:100560003E14CECD397CCE389E6693E3B5D3E99B5D +:100570002909DA8FFDA4AA39D6FB225573C01708C2 +:1005800071BEF9A0F85AE9EAAFDED5DF5C577DC548 +:1005900053326B59064BBA419ED58E38D7D58F0F43 +:1005A000E359A518FFE27E8C4F4D92FFE011717A5E +:1005B0004FBA89F4B7B50F8108443BCEA719642F11 +:1005C0000681A8109F2AE82FBB5DE6AD72C6B994DC +:1005D00090D9EDE5FD66304EEDC3B817E5171884E8 +:1005E0003F25C4FD63CB0E44B1817A6CA8EE66361C +:1005F00026BE9BED1CBB22F23430668672EC6CFE8C +:10060000A77B9CE89AC4ACFEBDBB3D0B29FA3B36E8 +:10061000BA98F93B85BD63D3E38F0B3E281072D1A6 +:100620005F9566F638862F9A7F3FA52998FC5AC0B9 +:10063000A6C7D5DA2351FB77FDD67D188D9CBE4623 +:100640009AFA75BA774BC93AE48B455FFD785E1527 +:100650001DC4464107517E2ECEA287A97EE33CBE33 +:10066000E953B314DF0CA50F318F831E926C4D3804 +:10067000B75FF3A488735A76875F77FA6DD6BADFCF +:100680002AF2374EDD7942C1F3C397677FABD4C2FC +:100690007ABD13E07EF62B5D9304DFA93BB9FD71B3 +:1006A00079F3AF948B6C787937E0233ABE9CF17C78 +:1006B00038F0F6952B96DAE7C9F7BB2F3C5D44710D +:1006C0008F578E7866E5F38F47AFA5FD10ABFC3FE3 +:1006D000E21EF2F39932BE1ABF5FDDEC91F37DEFBB +:1006E000B6AF3E1EBD8EFA3975C70905ED8257BA01 +:1006F0005409CF05E3FC301E7979FC570AE6E39DE7 +:100700000DEE7F1274D287DF231EEE48521EA02FFB +:10071000FB398A6BFA220983E7F5312EC7223AC5E5 +:10072000092F3CFD9714B7B0FAC9D195737EFD111E +:100730007EDE8829498A3F7AA3B26CDFE79A697E18 +:100740003E313F0BAF7D88D73CDF59CF9EAE64B1C1 +:10075000523F73BDA78C9FB7F278E35ABE38857BB2 +:100760007C2504FDD9E8C982A3E72C70F4221C364D +:100770007FAB2FC4E7DFA724F2C647DCE37A35E777 +:10078000B8A8871ACA855E467AEFDD742EC537A3EE +:1007900041C6E3B5CAAF27D49C3FEB57FF9C6DB170 +:1007A000E59FFBAAA0DED15F8AE4A05FE7E793990B +:1007B000BDDE96B7A6D648E4EF512E25E5C5B09725 +:1007C000705F4AA98B1FC471CF0FF278FFED81E4EF +:1007D000F9C1E55CBE125C2C44F6BDAA25E8D0AF99 +:1007E0005ADB40F6330B45F2EA23F77EB8858F29B2 +:1007F0003973FADA518C1FF64B0D37E5F31BACE772 +:1008000060757714CFB99AD5FC7EC7297BD005F7E0 +:100810001541CECF00F715C1323BDCCC01F7407556 +:100820003FDB8AF4CE78FECA4CF682AA7EA558F940 +:10083000480E6F0181AF69F925D5CE7D87EDD5CE04 +:100840007D07AB6CF50B65E7BE83C82F51AB445EEB +:100850004FF68BC49FFEAA14ED3BA84A96CED559FD +:10086000FB0EAA3A46716E5B7E0995A7F61DEA9AC1 +:100870001DF3B939283BEE95C8C5AD04BD34737A74 +:10088000690F26AFC6F5F6D7F58F63D95FE5D42398 +:100890001502EF56F9DE6AB13FE65A877B3FC7F390 +:1008A000777BABE30751DFF60A7AB2E20EB03EBDCA +:1008B000413B3F6A7C9C7B3FC7F721D986FCEB51CB +:1008C000A13EE9588F99E8A5B663FCF5A4CE38019E +:1008D000007F95701660BB42D1C3B81FB78DF17908 +:1008E000F8E58923B8DF7E4F61720FD24B50CB1AE7 +:1008F000928EE70C393C7D824E2FF69C567F82FB10 +:10090000E1AB6A8BF0DE8617829283AFADE710F819 +:100910002328A77ABA54BA52EAD48F16CEEA5F3E99 +:10092000D4A53AE4DA4375FCBCE5435B7625DA00EE +:10093000057D913ADAC71FAABF84E1B85F11E32AA7 +:100940001AEB2D6FC675E2F93780CFAF20FCDE08B9 +:1009500087DBC2334910DBFC6B0D9DEE11039172F6 +:1009600022A3A1C831893FB44116CFEA84876F60C2 +:100970003F215D935125A81D19520D161EE0B3238A +:1009800078CE37FDDDFA65F673BEE1024E5FAC91BD +:10099000DF37C09478349F1D64ADDB7D80A746BAF5 +:1009A000F7D390104E8CB337DAE4C4ADC1E41184B0 +:1009B00023B2314874194964249CD73E11CF9698CC +:1009C000FA5205D11BDFD7BAEF86A0A0378DF2B55A +:1009D0005F15F46EA3B757F3D19B574F6691A4F7F9 +:1009E000869247B13E208D6918AF9CBB91D70F58B6 +:1009F0007971267B15E9A8D2DA1B659CEF4B1BF4B5 +:100A00000338FE7F8875298EE8986EC5F4D71E6B73 +:100A1000BD16D70FFD6EC0F3DCEAB12BD01E663FCA +:100A2000F4D0FD271575CD87DA909F0DF504FAE116 +:100A3000C5EDE9565C6F15CA981757B1615C42BBAA +:100A4000ACAF8BEFD39474A469FEA10DBA84CA60D5 +:100A50004A9FF8789CA932C2EFED93CA1FEBF6A12A +:100A60003EFD22A3FB794A576728FE54D9E2D750AE +:100A7000CECD8D4DD0F9DABE2B18DD6B5ABD89D79E +:100A80009782D98EE3165F9FE0CA06FC117B7E58E1 +:100A90003092A4FBD38643C9FF08D2BE6B82EC4DD3 +:100AA0005F24837729B1B4D724BB4E5D9531109E66 +:100AB000A1FAABD83A1BDD870AF83EA35767462652 +:100AC00094A3CB5D48DCF0FD8E96DAC067D12E2C66 +:100AD00008D2BAD5B235069EF78CB104E5D5AA394D +:100AE000FA2C28C03C673D4360AA1D9C5F812F29DA +:100AF0005E9BF6B20A84235DEFEBA4714C7694AD55 +:100B0000C0FBAF98B8CC8EAF9B1A311EC6753B1494 +:100B1000E47EA87AECBB06E6337E7F5DC89030D4D5 +:100B20005C6866BFDD8CFBA66A4207BC8426BAB34C +:100B30003F82F2CB9D0568B3821ECF92FD5A98602A +:100B4000E031A25F9EC862FE32EA16A28B761EBF1B +:100B5000067CC50A105F2DD92CEE8F95449259045E +:100B6000E12125F53FEF80EF1F3AE2899BCCC637A4 +:100B70002C1EB5FB1BFA16759ABD40F71F87F83877 +:100B8000DE28CF53F189BC31DF549E4A92E7A94455 +:100B9000799E0AE67151DE57C4CA5389D3B96FEB07 +:100BA0007CA982F5CDB93C152FAF637D15CE3C9461 +:100BB000BE0AAEC7CC36D680F7C6F455249C793B26 +:100BC00092952FF10947BE499FB84FD02D0FBE5FB8 +:100BD000C0E3637D985700FD6FAB9033288FE149E8 +:100BE000E39F3C26919FB7AD3AD189746AFEA880F5 +:100BF000FC8543653E9ADFB663E183F6BC002BCFEC +:100C00007126793B537E63ADF939F2E7B7450FABF7 +:100C1000E8A78C80BF32DBBEF09018A75FEC0B4ECC +:100C20008D3FC3398DDB847CC47834D2A7279420D0 +:100C30007DEFABE2797F7E5C3F5C2F5C3F94B765D4 +:100C4000B7507E8CB78AE7C7587955B09E94F7E7BE +:100C500055E25CFF8BF3C08AA8B7D6CF5AEF91322A +:100C6000E7FA8DB8F2AE46CAB28EF51B995A3F57D5 +:100C70001E64D355E4278E88F3C6DFDFB6BFCF24CA +:100C80003ED6E5E771DCA84C76735F2C318A726E34 +:100C90007029BFA7745B637E3CAA3A97E7D67ADDDA +:100CA0001A347A914FF689739D3E999F43B5F09916 +:100CB00014F2E39902493C79795BE37A6B3F3A8518 +:100CC000F9ED73307B0E402CAF4B7423CB1F2D48B6 +:100CD000EEC27E4FFDF8F60A84C31F75C617226266 +:100CE0001C8082F2EFFA7F389FFC175C27B4E793F1 +:100CF000054E3DEF1BE4F7C558EB07EBA1E7E3BF5B +:100D0000BEB2EB0CEE0FF1BCCD29FEAB9A5A3F936D +:100D1000EC3991BFE6E63F6BBDFFD8EB571B4C7C2F +:100D20001DE529534CD2936EFAFC539D1F33F7F700 +:100D3000F17C856BFE53F19B69713996A6FDCA8AD9 +:100D4000637E8ADF4784FD7F6B30F1CF88B78A0DE1 +:100D5000C22E1174CB126BA8BE16910BF37924111D +:100D60003D90DFDFE7F1935361EB7C6F3288FBD876 +:100D70008FEE5E1F44F9F3E8E8ECF207E3DE287734 +:100D8000F60BF9731FE6D5D8E4D07D42DEDEEF3AEC +:100D90009FD711E272A824C4E5EEA36A2288EBCDA6 +:100DA0005EBCFA32710F33C99FB9778D15CF367E8D +:100DB000D546F943E5D17842E1089DBFB4CE379DD1 +:100DC000E57B2B7FE6C3E2E57E5CBF4AC0C3C86F0C +:100DD000FB301EEFC916111DD66EE2FBD61583C976 +:100DE00061C6F1803BD6ACE8F457E9FCCC8111F048 +:100DF0004DC81F370AD781DD42A62BD0ECA38357FD +:100E0000CA35D0BEBAC2C3681F6037DF3751E13F71 +:100E1000EE6F675B197765E85EBDF969D73DA9B8E4 +:100E20007F027655B5FB3EDF63EFD23E4C85EBDEAD +:100E3000D50F8BF76521D7B9B2FF4B78BF4F190B90 +:100E4000D8F34AE74A2C81F439F76FDE769CBFB9B4 +:100E500054D025DB1C62C76D71D1B952B602E5FAD8 +:100E6000FE8D22DE04A63EE66978EB26BE82EB36D6 +:100E7000BAEE965F7E1BED95B29FFE19DA599F0878 +:100E800015703F63E3CD0EFF15FC804F8496E7FCA1 +:100E9000A4FDBD578AFD347614EF35D6C5BADE778A +:100EA000DA43EB5A1FF530BCA7B67DB729A15D5DCB +:100EB000BB99DBD5CC74AE73F5DAB88C0669ED0658 +:100EC0002EE7EAD7B28C0EEB55BDD9793FEFFCEB9C +:100ED00053871E80FA3AB0C70DA097BADD4E7A98B4 +:100EE000E3A283BA346B23FA89831C2E9E3EEEA3C1 +:100EF000EA18DDA37C7223CFFBABD7535216E93738 +:100F0000194AA17F57D6E9BA1F98C5B7E23AB8E99E +:100F1000D03DEE87A5B3AE903B4FEEF4D58F01DE0A +:100F2000E6F53FF50F0B08C969D9EE1F5A7456C094 +:100F30008CBE10AE7F2222F6FB8C583EF99D3B7F83 +:100F400079C5ACF2BD34E1CCFB28EE70E67D04E35C +:100F5000CEB28FD9CAB1DC38612BDE944CE9F6F100 +:100F600006C3E6EBB81FF658E8F24B22C0E48362F2 +:100F70007FF0B191ABFA5105482C48FEF5709D42C7 +:100F8000F2853547847F9C7A08CF310C2C55D830B8 +:100F90008D7B80FC1DF4AB488F429FA5E46BF27300 +:100FA00070A138F7B7A6BE67A959FD6B23DD4AE3E8 +:100FB0000650EED0FEA48883E9BC0C7CF06CC81609 +:100FC0001FF3625E533CE7175BE3CC84576B1CEB6B +:100FD0005C522FD8E938BFE21A2D867911EC28F738 +:100FE00073A7EECDAB61F11E46F73AC568DFE7584F +:100FF0008146B147710EA9B76BF6BCE02702C9FF65 +:101000008EF02A3E43C7BCBD29FBBD04ECF7109A05 +:10101000C1296EF7B1043DB539ACE92584A394C765 +:101020000B7BC2FD319C576F99531FCE0973FBEEAA +:1010300058C843F3D10AF87E0253CD0A7B3C5D0EBB +:101040004B56FD4DB8DE75DBFFF6E5C1162817B12E +:1010500026BC427257BAFB920EA00F6DBEF8BE6A54 +:1010600086EFE7B3A7B17D65F8E69715C0AF368F79 +:10107000D38B1EDED58FFA485BC8CFFFB1667D7F6C +:101080002FC03F7A4D399D072BFDF3CD31FCFD81FB +:10109000A97E5077821EABC5EF70BC24CB325BBEFD +:1010A0000EF8C927105FA18E4C16E35D9E105FD726 +:1010B000FEA9785648EC5BEA07ECFE130B3BEDDD2E +:1010C0007E11CF9A9C984F712C2B8F41899A597B16 +:1010D0007E06D33A727E2AC6576B2EE374A41D890E +:1010E000BC6D7BDFB74E25BF26BADE4771ABA305CB +:1010F000C639E1E5047FC605BF1ACE037F2E1ED791 +:1011000058F4139B3C2A71C1DD8BF1B759F60BFAE9 +:10111000CA6F237F400EF37DCCFE752AF9F3165C6F +:10112000D1B0D8170D99151447D34CBA47C26A9F4E +:10113000BEE84E8ACF0C0793D508BFB7C3C8629CE0 +:10114000EC92689CD9DBF5C07C255BBFD67B16E5AD +:10115000FD4E953B78D90BFC88F127EDA2D5946F15 +:10116000D827E2D318EF439FDC8AF7B9E703FC2CBA +:101170008797E78BFF39EDD9A9FCD6AD0AC37B7001 +:10118000F616DCF925CC87DD6CFA358C0B9D0AD47C +:101190006418ED9FA6CEE3DFA7CEA5FB1CABD2095A +:1011A0005C1CEBF7975435457A5252B85CFAFC97C1 +:1011B0004F3E6842BB9F3DF36F0F9A30FF8DBF7B60 +:1011C000EFC1DBD13FFD4E4043FEBBF1897F79F09B +:1011D0003618EFE7CFFB65B4F5FFFA89777F7C3BE4 +:1011E000947FF3CD8525A8AF2F1774FD8BA77F5B68 +:1011F000AE433F9BBE7DF11CB487373D7B11DD1FA5 +:1012000032D33AFEA28BDF079C934B199ECFFEBCD4 +:10121000844A8D5F5C3D87E41CE5C5DC80FF44FDAE +:10122000933EE1C3BC98DF483C5FFB86B1F77D2865 +:10123000975E06398872EFC5AF1F7FF93628FF1C0D +:10124000F428E673DDF8BCD7756FBF3957A67CC3A9 +:10125000EC5C8C07DDF0F54F5C7E41333EBD71ECFC +:10126000FE4676A21FF5ACFBBB1B5F3BEEA37C45A5 +:10127000999DA8FA689E7A9628CA82DEB9F1A921BA +:10128000CAABB971ECE76FA21D78A34B3FFF9C710D +:101290007DE4D6BB37849D76F56F1EBFBA288B954B +:1012A0005F2FCD2BCF2DBDFB37CF7E7256FDFE0BB2 +:1012B000977C9E09CFA702779A485F603BA734BA14 +:1012C000979EE75BFB145543FD726BF0CE6C12CA20 +:1012D00013EB4229E97CCAA36EC07D83CDA089515E +:1012E0000E819C1F40BEBFD563BC9144BFF3C7B7FE +:1012F0009E8B76D56EC1F7BBC3CEF8CA2E4137D6CA +:101300007337EA5FA4EF4F32FA5D2FA62424FBBEA9 +:1013100035A93C909BF76C9FB8C46CE4F548DFD6C8 +:101320007B664E5C92B5E9076B5C6F849FD70DEAD4 +:10133000E2BC6E924D482BF0E763F89F47C33C1E1A +:101340000172EB21E44355CF125F58FA14E595FD85 +:101350009E4BF77340C8ABDEAE24ED1B3C8339B720 +:10136000B81F01FC4C6680908F8AA05F18E7A90F18 +:10137000378E464FD4E328AF6E0D269FA3FEAA58A2 +:101380001AE9CE8ACF787C3C2FD4D21B563F592104 +:101390006FADA7E5FF2A251D0DFB717FA035CAF1B2 +:1013A000C412A4070F89F5017C939CBB4762269D5C +:1013B000CF9354BE4E06D3B572EE87E3FC3CA02615 +:1013C00050DE7861E28CEEEF30E91940BAA3BCC977 +:1013D0002CC9C9E3617EAF88956F0C1D917E298A67 +:1013E0003309F97A77384EF7DF99EB98F64853AE20 +:1013F000BEFF0271BF48032F47131AC3F63F0A9777 +:101400000862304C7C3F27A969D8EE6841E20DC4E0 +:101410004F194B927DD10C4F9C47B91AE2FBAC9D02 +:10142000CEBCBE297A2D76E2ED27025FC7C3DC0F62 +:1014300047DAAF2C71E44333CC87B6ECAA3EB4ABA9 +:10144000626457ADA3FD8399ECAADAD4B971B403F1 +:10145000843D65ED1B14B727593EBE063E3B897C93 +:10146000E6F525928E7868398F8746193F3F1E2D05 +:10147000BC4AC298B6762EFB15CF73532E7DA58538 +:10148000EC94A7B1DCD32B5D4A76CF4704FF30EF55 +:10149000A559DB78DA79C21E6A71DA43A142CE2FF0 +:1014A0000AE20EF5EC2AAEFF142D457A15EC82F215 +:1014B00042C44FA1D08F06D7BF53E576D1DE2A377D +:1014C000F2FA0FA13FBD8579F7CF5C7996617E6F07 +:1014D000AAFB7BC646B8BE17E7207B4272056E6149 +:1014E0006A779437F173B92D477428CFFBEB8838AE +:1014F000B7C4E33F054CB3EEA7267FE89EEAE43E7F +:10150000B4170C39A04935C4275C9E5DE3A373FD75 +:101510007BA4CCF87CA2E75AD2ABA34999E72DACC7 +:10152000F5D17DABA318FFC4FA04BFCF7767C326FC +:1015300092BFA3E66E925FA0FF49DF9B5BFD1ADEC0 +:10154000DFB33B7933D59B209FF1DCC5F4732D9934 +:10155000EFE2EF4AED28ACE1F97A0DED47304CB6F9 +:1015600033AE901F1E5CD4AEDAF7796E29E47C6E40 +:10157000D5BBF1345218E6726D657E3C5ADF5BF5DF +:10158000C1450AF16F6FF2D52FE3BAED5C7558BB18 +:1015900008D735F2D22AC4E31AD19FB1B97510F732 +:1015A000D3ACBC50AB3FF77AA2FF4F74D522BF85B6 +:1015B000BF4F03F446F5A378EB20D17BF22FB07E2A +:1015C000378BAB31C0DFDE6B5634509E68C3C3DF50 +:1015D0009DCFC9A0CD218725832DA0F5086978FF6F +:1015E00021530D8217D6BC04E5C91E6BFD164DDDD7 +:1015F0009B4472A5B081D7EF95E2ACDEFEBD61E8F9 +:10160000DA8A9C1CC484706305A35C47FAB338492A +:10161000F49D938763540EB1717ADE5E584BF828BF +:1016200062998E0512BECF0C2D80F1CA5A2271FB31 +:101630007E6D9925B7D638E5965B0EED56CD211C0B +:10164000275A98F822E2A5E7332BD418F4D329F8C7 +:10165000CEC28B8A748CE3E0B9D762847F6D379EEB +:10166000E78958FEA76B1C9C17CE73AE989615B7EA +:1016700047BC7AE1BB8AEB793CAE8A8D931CAA61A8 +:1016800027E8A9A3E58447B08C6437EE0B05D83171 +:10169000E24FD994A53300F7AD859C9F00EE00B6CC +:1016A000EB410587F49D9405FE1901B53B293F8662 +:1016B00072B5B350E77CCBC47949D50874D2791799 +:1016C0006E2FD6884FFCEC2D09E34127A31E86F42C +:1016D00065F94FBE8DFC772EAAF5B725F4E741D802 +:1016E0001A452DE8CF8F4BB89F3BB7553D6192DC33 +:1016F0009CA0EF2BF0FB38C685668F435871C1B9AB +:10170000AE78442E2E688B6BE0BC447CC6CA8B71CD +:10171000F395DB4EFC5AE1EF177FFD65C0F86621BB +:10172000CA2B912FD357765D34DF77B9FB597E3FB3 +:101730007FA3A7B5E9F508E0A9EC9BD7927E39F421 +:10174000C9729273F78678FC0DEC9D37701DE732F5 +:10175000394E79842EFB61F27325EC3A78FF60AA4A +:1017600030CE7FB481F391754E84694637AEAFC5F4 +:10177000C76C5982F8C707EE3DD2A18A76868DAF35 +:101780000AC12DC0A7474B67F14A85C39BDB8A314D +:10179000EE50C0461CFC32E5576F62F43B090A5B11 +:1017A0005244E7AA37292C83C099C6ABD1153CD542 +:1017B0000BFF44939A6CD105EDBF1BF08D6D9D4AD4 +:1017C0003BC05EB3F9076560A7D8CB733AA38EF62A +:1017D000AC97FB093AFC877C76928D90FE76C79792 +:1017E000BDCCA438E4DC16BF96A57C0393E28655F5 +:1017F000E0EF509E40CA191F8CBABE77D3D3FB16B8 +:101800003D015B233D011EE2C8FFBF7ECD43F7943F +:101810002A137EC24B25E005F1F06BFC10CAD5EB14 +:10182000189DE773E3C5A237F85F1CE1AA817EB279 +:101830008CF6A31CF30DE84EFC143438F1138E3BE8 +:10184000F1139BE8A679BF0CF3A6DFF36AD11DED77 +:101850002DFC59BFDBE7C65BD5F563DD389FE9F8A2 +:10186000E1E720CE86A7DA22279E4EB2170E619DB1 +:10187000A464AE467AF658F40C0A4B2DCFFDBEDABE +:1018800083E17437FEDE9D09F4ECA9CCE1C74DF786 +:1018900055DA782B99D38DD526FE9E4A14DAD3FDDE +:1018A0007CCB922EBD9171D8D1B9F37A603843B90F +:1018B00012ED6FDB39B10294B344E7C7D919BA37D7 +:1018C0003361D2395A60583C67ED5557935F0764CE +:1018D0009CC235023DDB5A44F108F612C603AD7BCB +:1018E00082BC2CC5245B5C5552B2248F3DF7F33C7F +:1018F00006A52DB515D75B12F97AEC7ED01BF6BC88 +:10190000F95A83DF1BC8E2AFD3FEB8F8DD68406840 +:101910003689F258CCF76CF3F46827043EEEE7FA08 +:101920008371FE05ABB91BE5D55C9C17C90DE32897 +:10193000D2A5B5DF53B53941FC1A9DEB617EA09F5E +:101940009A143B4CFB01AE7D9F9ACD63446731CC2A +:10195000BBD1F03E3527BDCC1F74FD0EA0E705E2DC +:10196000BF93497E2FD65C171D557B7519FDA5CCFD +:1019700020A3FB61E66D1997F0F75716887CA1F953 +:10198000832CBEC14667D5C9C2F806B0C91FC317AC +:1019900015D3E9F00B45CEF8FC17AE585394857972 +:1019A00064CC0379F7FD1EE852E31B80DE9EEC8ACF +:1019B000C637D4D3FE0E95178C8D67830057632FDF +:1019C000C74FAC73623FFECE726C8B2F8E74988BB8 +:1019D000EB27B716C17ACFBBEDEFDA70DA8B7A93CB +:1019E000AD68177F43367AF03DCBF0DF2F6BDC5CC0 +:1019F00015DF00EBB064730D3DDDFAA4FA6F5FFBF9 +:101A000087AE08FE9E37BF5764DEA49FF29FEFC5E6 +:101A100026F0BD6E6A6D2ADAD99B75BA0FE79E2251 +:101A20006E4FAE2932D2488FEC7A9E6763E167260B +:101A3000BDF5A0C83B7860D3AB575C8AF16D8DDBF8 +:101A4000ED31C508623CE1B122EEBF4CCB734F5B78 +:101A500079EE868CF19FBA742BFF3D6C579E3B6EDE +:101A600016A15EBF55DC4BD45694FC12E1410B3AF3 +:101A7000EE81B4F2DCABFFB63D8876EAC3EA049DA2 +:101A80009BAE9658CA6CC27D1AE7BAD76E8CCB282B +:101A90009F74F304F9EFD63CD714259FC1FE6BD495 +:101AA000109563BD13E46759FB9FF346B9BD0574F8 +:101AB0007808F7FD4FA6B93B3D2F3D2661C8EF12D0 +:101AC000CFEA20BF07CCF8F3753639FD30EA2F682E +:101AD000BFA0C2C34CE417213F41BC093BCF90518A +:101AE0007E546D71EE43D50979B9C0B5BF5987F6FB +:101AF0004D21D6BBF7A380DE6CFC62CDCB9A8F9BC9 +:101B0000BE7F60C9D939AC02F7F54FB255732ED6F6 +:101B100073EB5F0382ABC5766FB845A7EEF896D539 +:101B20007F53D639BE84F7C24778FE03ED63C4CD38 +:101B3000AB291F47067944F688D38E97922FFF165C +:101B4000CF2BFA3A4C4947FF7A7592F223A21D2C0B +:101B5000AE43BDF15ACCE4F77A8D5F80FB41A5AB73 +:101B60004DC987FD578D5F8074FC6E5148E4351B6D +:101B7000EF221D97A29C267BD9B25B52F45471BF11 +:101B8000683E9EA71963A62767BF0C16257F8DEBBD +:101B90006FD9313AAC1BA60284588AD66721FA0362 +:101BA000783ED1256F0B5CF2D1AF24B3EBF5E9F3AE +:101BB000037074FB7ED440357B1EEF4D97AA60DE28 +:101BC00085C8470AED73FC1FE344020E0080000045 +:101BD0001F8B080000000000000BE57C7B7C54D5C7 +:101BE000BDEF6F3FE69584644F32498657DC490864 +:101BF0000408382480E1D1BA0988885407B48A8F50 +:101C00008F0E88CA2324315AE5686FD92134C5E084 +:101C100095F8AAB107BD0315D42BF13340C0D40603 +:101C2000CE801403853628025ADBC67AEA41053293 +:101C3000C42ADA728FF7F7FBADBDCDCC2408FD9C2A +:101C40007BFEBAC94757D6ECB5D7E3B7BEBFEFEFB7 +:101C5000B1D600A63ACB5001D6FE70AB3F5B03FA7B +:101C6000896AE558BF4602980C50AC0D59639660DE +:101C70007DAEA84FD07244FD16AC0F0228A7E769CD +:101C800000B25B93C33E00B74F0E2BF900E7B26B77 +:101C9000DD80ED7E36645E46089F7F433F57F62D1C +:101CA000EB57E280237ADBE5AB0103B09F9FE1DFD6 +:101CB0008D52DFF66A9A0CD1629E277C83FFAD1DA0 +:101CC00033D31881ED158098120070AE50F47FCF99 +:101CD000C2760FA81FBAD2011AB05F9A87D35D03EC +:101CE0001A96AEA6FBA212B6073F0436712F21B892 +:101CF0007100CE1B44BF0F62F90DCEBF22232469B1 +:101D000013B05F2D05A2EEDEF19C2B9CDCBF44B22C +:101D1000C2E725E3F18FF1D86F0002300E4B3D2A68 +:101D2000EB38F7921543028BB09D5B0D4200EB8EB2 +:101D30005935409FBBE6040D1ADF350B023A769108 +:101D40003507660CC5BA6318B42812C9D184E5D822 +:101D50006EA286FFCB0678C4634CA4799458E34DF9 +:101D6000D2342E0102527000953540E59A8CE01471 +:101D70006AA70FD1566137806F8384F31A91066189 +:101D80009223B65B15C53A6E754D23F5B55E3DD50C +:101D900065AFAB40943011E74125AEDF89FD4221AC +:101DA000C9A589CB14887099069D5C66401797A9D0 +:101DB000B05EFB3815E74DFDE07A1F771ADEAB7099 +:101DC0003D0DBF730436E202CD8A9AFFD585E39AB2 +:101DD000AB54A8C7F2D9D49FBCD485CF57982ECD89 +:101DE00085E5394F5E18709F36AE84C0A22280E729 +:101DF00057BA038B7012FFBA52E3F2D5957EFEFC00 +:101E0000612DDF5A77CD15C131D8EE015C09BEBF17 +:101E1000EE83D161290E27EB16C1AC4809E108F128 +:101E200088E3AD2D5EB8B991F03872618A133FFF37 +:101E3000174DE17E36375F1A2EED768A1A00AD9F78 +:101E4000F6C978541F904DD7D8BE3874BA431D05D3 +:101E500038DF11471530512E239AEEDBEB19DF17CF +:101E60008776BF725F3CFE0BED2FC4E3B1A0178FE6 +:101E7000EF65180FD3F3C74B438B83FDCCB3C92B4E +:101E8000339E9E7FE0698F8E72788EE494D62BA766 +:101E9000E6124B4E636A594E2F58727A69FDA5C9F6 +:101EA000C96EF7FF404EEEE1389F0C4B4E194D675F +:101EB000A3CA3F27A717BE4B4E8DC18D6B681FCCA1 +:101EC000901C28C2FE9F0ECAD12BB1FEDC62790B9A +:101ED000F1D6D3C18DEE22C255F3DE21A9F8FC0D57 +:101EE000EF0081172DD641EDCC61B2BE09F1F6A805 +:101EF0002AF4ABB159FEA599DF3B9FCDC5F2AC30BA +:101F0000CAAFB17861CA5D7172D8DCDCE38F97E348 +:101F10006609E6134E93E5B4D02BF178BF5824330D +:101F2000BE3D2108CBF8D18C61C0F5814320ECC2C5 +:101F3000FA4043D491FBC23AD6F77DAF619A8AF555 +:101F4000C64500B9F868A672C8A47536232F223793 +:101F5000E18F71DD02D4EF74FA13D7D51C8AF273C6 +:101F6000D73477CC443E48EF9A1B7D1EEBFBCB5D0C +:101F70001A20FFA795AB7FE98AE33D506E87283E84 +:101F8000FF229456A360FB81EB139FBB20AE8EF221 +:101F9000D08C60F479E21BEC8F78D941CF8B7B9F9A +:101FA000AFF8E093AC7D7178F0CE0800C9E7A836B1 +:101FB000C0477C828BB8EC1BE4979FAE6C838F8A02 +:101FC000787CC617528211E9075FE7569ECCDA8704 +:101FD0000FFF4A3827F905574906B65BB7A04922D3 +:101FE000FE1F785E3148DEA809FE5BC7F4BED783CA +:101FF00038A1F6EB1C623FC6ED03258DEC89A68D5A +:1020000053F4DE76314DECCB3A8F6837E1A8A10C62 +:10201000F8AE7603B01D8E3FE9DF4D25BD9F769D5E +:10202000D63C418DCDA77D7CF47B4E8DF46F9D24F5 +:10203000F8D33CECB0F02EF679F3DDDA06E2F16D80 +:102040001D056B4B080721BD94FADBA687E482B41B +:102050000BF3E7310B4FC367850C360ADFF617DD4C +:1020600022EC42CC7F3BCAE3436F1AB7DB9682FC7B +:10207000C1720A0D9A1B27A7DB2DFEB0E5B4530FE2 +:10208000AD1D83FDA4E03C249C47667118E492DEFC +:10209000F1B615E37858DF7642667B3E70EAB12DE3 +:1020A00010A727F6783B53FAE7AB3B2CF9D8F27E22 +:1020B000430FAF1D1B375ECAACC4F1521689F50D34 +:1020C0003C299B648F2F34DE1B17182F64AFCFDAA7 +:1020D000B7DD7AD7DACBB19F541A0FA5914AE3A5A1 +:1020E000F533DE574F4A03E2F4B8CB2BECF66E5BC8 +:1020F0008E6A68D0BC38BEBADC7AFFA5E0B68EBB6B +:10210000F0F1A3450D9E5009F141C43D9CF6FD7BC5 +:10211000326CC2F5AD5B5F01E427BC64006BAF3786 +:10212000CD9C4646F6496F26F7FFD2FA0A7E4F52FB +:102130009BEA549CA7828A4E7800089F2079E78109 +:102140001C68243FC730740DF55EB2F47EE01CCDF0 +:102150005C88EDB36AD291A891569B6B0E8EC4BA7F +:1021600067851CA0E7109540C5F603ADF66E306F8D +:10217000619EB1FA1B187A7015F1C07A056A14E4F1 +:10218000897EFC8800F91183E92FAA971A201592FD +:10219000DE86D8497381C9652A44D97F18407E8478 +:1021A00042FE44741A959711A52BF4C890E9791151 +:1021B00084EB68F2F9865EA1E27C8637872A683E66 +:1021C000990FE06BF9A45761EE4782C7D81F4A2DDB +:1021D0007CDEFBF168CB1F9982BCEFD5585EB40F53 +:1021E000E437F892EA054975E3D034A07DF0A062A7 +:1021F000909FF48827B4D89B4D7E9961905D721BA7 +:10220000EE18F19F4B0BF2FA7E1194D9FFFBFF8D74 +:10221000A71FF526F2B4CDCF365F5F889FD9BFC424 +:1022200038E2AF4F2C9F4571C35719C64F3494EF16 +:102230004FC827CD263F36F4732FF1E28D4D7B0832 +:10224000D7F91407A01C943490FBC3BBBF19F14EFF +:10225000F2477C52998C773720DE49FE8877F67BEF +:1022600093F0DDECA8613C232A6B94C96C1FA47B1E +:10227000B09F3CBBFD45F08D2E85AE205E55C283E0 +:1022800012EF3747B86EFBCBE910E372881A93A8B8 +:10229000D421C0381F0641C6F9208C9F08DF0533C2 +:1022A000F43A0FE1DCF22F86A2FF6EF2623420FFD7 +:1022B0003D2524FCF9A7837F61FD4FC6BBD139CDF5 +:1022C0002C189F80DF28C913F10BE4D724E3B73122 +:1022D00058E1A1CF374F9523C4AB9BB5F01A7A9F35 +:1022E000FC23B23FEBCE2BCC438FA29FB38AFD1EC3 +:1022F00083DB372E92032833F277A25752FBC57245 +:10230000B828FF92FC1E8E1B173E710BC791EBBCC9 +:10231000C0F6C12C728637E5933DD6190753639DED +:10232000D3337CE4370ABBB9CE11F307B87D6C3EDA +:10233000F197F9BCE0C99782C93C19615E1DE7F5C8 +:10234000723F4FAF5F75CD42E235D5647EB0C72F87 +:10235000F71EE0B815D2627ED2FB75736B5388CF3F +:102360006D5E4D6E77D0637C4C723C7401BFED3373 +:102370006FC5A7C4137FB0702CA951D67B650670BA +:102380003CAC5668758433C98EBF6624E14AC747A2 +:10239000C4D79976BC16601E77D83C0E5A3484EBAD +:1023A000765AB8B479D403E17EF95421BC31DF26E2 +:1023B000C667DDBB8E0F3571BD7FBCFBF301D8183E +:1023C000FEACC606905C4FFEF89D01E42FFDF1C700 +:1023D0000AFBAF77D01C2601DCB9F2FF4C5C88F514 +:1023E0008C4C89D7B52CD37065125FAEC866255A60 +:1023F00012C641E2F861D9CBA904FE6FEBCB235999 +:102400000975D6347C75B90B6AC8CE2EDBB2C739D4 +:1024100018D7B7E465EF38EC094E22EE498F4FB676 +:102420000EDD407EF5D599B2356E3097C6A5F91010 +:102430009EFEDCEE8228DBD74E87F06B8CEBA48906 +:10244000141D889FE479EDDF3DD82963BF774BC821 +:10245000B35EFEB861278EFB57BF028D81BEF3BE0F +:10246000FB8F9A53C6E7774F8398398EE629353C20 +:1024700084EF2F245E0DF45DD702D391C0B377456E +:10248000EE73B2D0959299B9C4C76B24E6ABBBD6B4 +:1024900024B64338ECFF35F6BB08FBA57DBDBB2950 +:1024A000F1794FC7FD0D3BF1F9B636A7467A7B6F40 +:1024B000127F27F3F3D44CE465E403E4A82B889758 +:1024C0007B3AE66544F50BC76F362F9FC4380EC1C3 +:1024D000029FAE7473796A25830C5C993AFB2BCB0F +:1024E000DAF6EC67CE533B2792BE6CEBF828F55634 +:1024F0007C54EB17F1DBF7377C5EBF131F9741303D +:10250000234A7887A883F4ED4A70EB6938BF4D14ED +:102510009F2184CABEC27AFCFA9AF6FCE6D71C8FC9 +:10252000A5D56C42B9D622D05794F6CEAFD62FE2BD +:10253000B6DB41FDDB77ADFBB64CCB1E5D81EB56C8 +:10254000FEEBEBBED07BCBD1EFE94FFF6DFD7065AD +:102550000ABFB57ED7B33307E1BACE3C21055C385C +:102560008F338E7003D79F9102753A4FFB18E4F4B6 +:10257000E21597CD78BB97781BF1195AFC08E362F6 +:102580003FCA85EC7CA87D283FF74F47FCA25EDE62 +:10259000BBF8B3F7859360FA653F9551BF5CDE0FDA +:1025A0000E93F0968CAF338EAE3CD2FF645C9DB937 +:1025B00000CF556716F0FA16E9C64CCAA7DD0DC163 +:1025C000064DE8DFF1FF8EF5EC6DBD1F34C27F874D +:1025D000CAFE54E9011117971E7686C9BF3F8DEFD9 +:1025E000A4D1F37D6961B24FDB1DFA5325641F0E40 +:1025F000A8C0F1D379E07860DCEFFD618AAF4E6767 +:102600009ACC2FDBBE82F0C67C6A5056A8617FE36D +:10261000FE5112E0E72B146306BD7F1EC214E78F44 +:102620007BEBB1EBA8FDEE0D0A507E2E59BEA5073F +:102630001EB88CFCB32BBF4E91E879B2BCCBC28ADA +:102640003A99FD12772C03D7551AFE68D914E67310 +:10265000A8A57AF27ED8ED3519B83DB917542F33B5 +:102660008A63C453C9FBB4A4DDA5D2FC9774402986 +:102670007DF6FDF389FE5EE9A124FFD0E6DFD75B9E +:1026800076921D58FA8727D301CB4FD4A61CC2419E +:10269000CB8B3F4D37C81EA8663AEDEB2761610F23 +:1026A0009271F0B585775C58BA84FB5EC553C5FF5F +:1026B000D6C41A1EC6F97C893C4BF3ADDAF777AE67 +:1026C000EFC7F5839FFAED9AF908AE67C982B49A0D +:1026D0003A7C5EDD96B8FEA52F3D93A3735ED31CB6 +:1026E0006CE16030BD57F5A22340F6B3EAA8C27989 +:1026F000D36A8831EE92DFAF8E7CE4247C90FC8636 +:102700004CE9FB1CE1E824FEAA86C7CE2A63B1DCB3 +:10271000F729E3AE3AC9EF5D6CD9BF649E3969F31E +:10272000ABC533289F00F96526CE8BD214101676E0 +:10273000B1FE1597E9C6797CF27EEE0617F677EAC8 +:10274000C5DFA64B25BDBC03B08AF5E854A43023F1 +:10275000D48F7CEDF28CC54F761DC8DE539EB74DED +:10276000120144BB285BD06EBA711E95EFB9D85FD9 +:10277000AC3CD2C3FA855E45AC08F56FE789BD393C +:1027800063F0F9B2AD0EDF1CB19C74B297F6BE2DAA +:10279000DDFED7995BE87DB4871EDAB7D6736C2F60 +:1027A0006DFD5CB6554AA5BC4365D81170EB7DE55F +:1027B0003A3DB2C7D995D6CFBE453E9C497980FAFD +:1027C00057CEF1BE7CB25B82DCFCBEEF2FDEF4990B +:1027D00093F4EC14A550BCB48FCA026746DF76A709 +:1027E0005E4C65FD3DD52E85A5FC8BEF630786CB42 +:1027F00002A7B13B689F1419FD27D247F4A7290E01 +:10280000AB279C8E23196840EB850A88105F49ED41 +:102810006F7D2D8DEDEB3F9915505C83EBAC77F61A +:10282000E6B537F938CFCD796D73954BABF7719E1F +:102830009B9FAF50DD1AC575FF9A65E7AF035192B4 +:10284000C3436F426923CFD260FFF5DC7EACA35C4B +:102850001D3E5D89C74360BACC7ED255CAD430F5DF +:10286000DF63E67A5DE3A9FF7499FA597D207B0363 +:10287000F1E29D59C2EE8CEB2A7E762A3E777438BF +:1028800030E0C4F63404D67B4E621CC17C17AAA784 +:10289000E713501FC9DFD849F61ADF77F965D0E38F +:1028A000E4ECD153408FC37D6A7166421D4CE36DE9 +:1028B000FF44B2F7E267406050C2FBA5105016E03B +:1028C000FC0288A728AE3FA3BC20F1FD43629F8A8B +:1028D000F197FCDF8947E3F60D480E6185F4FD0AA8 +:1028E000CBDF0A44C36F9A38EF722B4E2DFF20B115 +:1028F000FDE48BC4AD47B32CFF60100C22BDAD27A7 +:10290000FDA6FDF2A673DCE1B0CE3768C673917FF9 +:1029100006F9843C03A9F2E7080DF851D6CE6B54B2 +:10292000D4EB40997C7F21D6573FB547D4A7C8DB6D +:102930000BB0DEF0D4DE6B54D493C0E5729903E79C +:102940001736DFBC6606D65579EB6292BF2A8356EE +:102950008FB85A9D1EA9A1BAC30FDAAA81348E2E50 +:1029600070A16F0FD17C1A068246F8532BC4BEA902 +:10297000E9CE30CD5595A7CD8FEF67ADD338C9F1EE +:10298000AE0FF43AEC27D5150951DD89FD521DF43F +:10299000C2E9546F188A3119AEAF54D5A7733E19E6 +:1029A000974938F8765C30FC84BF7AAF93ED9F5A34 +:1029B00061E8846FF255486F2EB544FDCA235E5519 +:1029C000948D2D84FB589D0A1B7D146FBCD442B896 +:1029D0003DEE74F3BEDD9CF19863140E5DEACEBB50 +:1029E0009F94EA7D69CB8FA8BCDA177A268BFBC14E +:1029F000081DDFBFF50E6523C741693503683FC079 +:102A0000407DC5CFEB2D7F0242A8AF34F65ED4D710 +:102A1000714481A8A7A37BF534791E4AC6169EC7C8 +:102A2000CD2E318FF9E182FA2E9CC738577828F9DC +:102A3000AB38FE261AFF5657B888E2268CF93A685A +:102A40001EC7EFBC4CCC0386300F309E14D2C75348 +:102A5000AF517FD5D8BF8BEDB991BE2087B78CF928 +:102A6000F44CCA0B0A5524B44312271B8C7AF27318 +:102A7000A758F106740ABBACE32FC77FCAF91C6ADA +:102A8000FFC52199FD8CD27D89F89E74681BEB836C +:102A9000B630AD26A39C4C5322DEA7B4A1FF847CA4 +:102AA00035E522F14134490F2249F9F580955FC798 +:102AB000966A7CFED7B65B073D156F65216EE6A86A +:102AC000A29D0E86C1FC12D065DA979E430BA1949D +:102AD000EAA0D702D68766897C67B25D6B4DB26B80 +:102AE000361EC71CD5EE221E1F7314EEA4F55CA57E +:102AF000A4B17DED41FB8ACDE378CFC1FEE038186B +:102B0000FBEC54DF85F9AED7DE26F29ED748E4BB56 +:102B1000AC59897C971D4CE4BBDCF989FC363094B8 +:102B2000C86783178F4A783EB4A634A17ED98AC974 +:102B300009EDF3D190C4D70BD7CC4E685FD4342FB6 +:102B4000A13EA2F9D684F623C30B139E8F7E79692A +:102B500022BFA2DF4872D81905F805E13789AFC74F +:102B6000446A13DB2B539505843FC427E9C7E56D01 +:102B70000F27F46FF3B589BFFDF1B592F29A42FBCE +:102B8000D4857E9D341979DB672A04A33E3C9D766B +:102B9000F203DADF8BF175B62F11A75FC09C72CA02 +:102BA00057A5429079FA42F15CBD753EA1A40ABBDB +:102BB000A964C8355B295F9925F2088D5956BE571F +:102BC0001338E9DE3582CF55CE79F224E2171DFDA8 +:102BD000014AEE753B8648C42FE6748828E8473ED4 +:102BE0009492B787FCD6AEFBD203D2A0B8736DE443 +:102BF000B5FA00E392FB5BF1C100C6E53959E7BCC9 +:102C0000F5D34A50223EC12EF3659CF76A1916D3BC +:102C1000FC1E97E53BE3CF2126F8843F3DC127E624 +:102C2000393835B284702E6B82CF57CB2C0BFA31EA +:102C300028EF909E059C47057368E38CA9F8DCDBC0 +:102C400055ACA3BE4D7F7A68E3ACEFA37799FA1A2F +:102C5000F35DA9A9029F9F4298EBE390FF08FFB79D +:102C6000CAC87B38E47C5F8D43D289FF8C0A1F8DF4 +:102C7000EB0633BD94E578279D5F78C127D552FEDA +:102C8000A7975FF56FCAFACAFFCDA55364F29F7A82 +:102C90001629BCFE9EC5CF9DFEC217A78FB8D64E83 +:102CA0000284AA6750BEE63DA77EFD4492DF4185BF +:102CB000F378BFA37603FBF67BB1F87CF186A70619 +:102CC000D0BD8AF78AC579B6FDF93D963CEFF1890A +:102CD00073ECEA459F396F6539A03F8BFC5915FEAF +:102CE0009CFD4DAD006A32D04EC3EA1EAE3F6A086D +:102CF0007FF0114AC2E2FB1E8769A6917FD07E9FBA +:102D000049F98F9B8F8BF8FFE67F88FC953DDE436A +:102D10003E078FF390355E69476802EDDFF5A488C2 +:102D20009C6F0A4D207B12D440A7FEE78716FCE873 +:102D300010D6E73E86F0D0C4736A3F6F0862149FD6 +:102D4000BF03817777E01256FBC43C6E84A083708A +:102D50007F0C42A7DFC5F91CF78AF63109F48D71A3 +:102D6000FD5D6FF577FC8E653BC8AED378343ECD04 +:102D700087C69FAB4101D5ED7E92C7BD010C87F0A0 +:102D800083820EB2E7856432F0792DC615A427B58B +:102D90004B5281E29ADA5DAE30E1BB7BE9B9969F96 +:102DA000E314FFB420B6438AD3CB5B9A15D0112726 +:102DB000FFE935FEA78FFC8CF22C8EA72E14E7D8E6 +:102DC000712961DB449EBA99290CE0B0858BF9ED3D +:102DD0005965969FF01CF5F7FEEE96A1486D707050 +:102DE000E44B45E42FC3F84BEB1FF5FC55D25B1DBC +:102DF000ED36E4B17D617BD21D9519B7A8E7AF929E +:102E00009E7439DC1AF1D8C5F5DC6021D9FEA32205 +:102E100007FC2AD9D5762595E29E7472DE6CBD45F5 +:102E2000DCA52BB2D05BCA08607C34DAD66BF3EE3B +:102E3000D9FBF8DC35D18FC0FAF42DF17E83B25E78 +:102E4000A1FCC617863BAAD0E714FF50DEC4F227C8 +:102E500082F84BFC3CA23931EEEFE32F50BC7409F1 +:102E6000FEC27E9F15EF5A3C6CFB0917CBAB6D235E +:102E7000BF02CB48B1D0FF483485ED71A9C507101A +:102E80004D63BF3BD9CF40FFE21DE221DBBF48EEDF +:102E9000FF3D9FF027FE6CF99DAF648B52552326B2 +:102EA000ED63FA7CD04CF2BB21C2799F6C43F8D918 +:102EB000A9C86B1938F82C8A4DF17DA774A6D88D56 +:102EC0007AF091AFB2710DF2A77B98CDAF958D6F6F +:102ED0002234AE3C7FA55C8AFD8D3FA070DEA867E2 +:102EE000DF28BE4776A1758F47BC93718DEE9F2C6E +:102EF000B35DE9103CD892A9FF7E0AF9A10714A09E +:102F0000FB501EB5CBE9ED675D3B89E746A05DCE82 +:102F1000167187BB4D3228EFE2D6457CE8A1FB0352 +:102F200064C743C071F8E9AD851C2FBE922DE4F152 +:102F30006F99C17F905E7C2A1D99A815F6CADFEEB5 +:102F4000BF94FCBA927EE52D65C7F97391E8DB1555 +:102F5000CCD7B3745919D757EE76BDBAB98C0FBF19 +:102F6000AA9AB3B81C49F908FCA83A2AE470A6AD9D +:102F70003EB3BFBC46756EE75E9207FCDE0394EF7E +:102F8000ADFEB73FB2FEBD3A17A185FBF1BFBF1A38 +:102F9000CDFD0DCAF65AF14927CF67545097C8BFE7 +:102FA000AC7609FE3DF395C2EDEC7EC7B44D5334CB +:102FB000D4839268D35E8E73DA5D3AE1CDF3220852 +:102FC000F9B57B98AF542DF631D971B51DE37494E2 +:102FD0005F4B4AEC4FD47F6C974BDF48FBE56CE2CC +:102FE000F6B12290A93E12E5B62D8DE4DF04997169 +:102FF000EBF1B43FCB97EC103746989EAB4DF0BD4C +:10300000B87D7D255BDC1B9A922DF0D6921295D36C +:1030100044BFB091E7D53B4F9A9747B3E73992F356 +:10302000372D4E9CA78FE7A5116E46829827B48F47 +:10303000D0496F549C0FF1B93A0C64A298E47955C9 +:103040008F85301A6D787C157CCB37C43FD529BD70 +:103050007537EA664B818DFB5F36CE18125F47C22B +:103060002CEF7D7FEE339B1A57A39E9CB0EC11EAA8 +:103070009B11AF6F1ED510F7956E446AF592BE197D +:10308000FC3C07FBA89BC4F528DBDB1B45BC5ABCFA +:1030900041FD9C9E6F8DA605E87C2CE37C06BF5FFE +:1030A000D5E9603B53F99F37649450DE4CDEFBE07A +:1030B000162C3F5B10194EFECA9401A1DB08AFAF7E +:1030C0007FB090EF9F7CDAE208CCC12915FF4A82DD +:1030D00074EC7FE92B1E3E87FFD9899EE837A487D1 +:1030E000BF92C2947FEB76984F0E167574CC709C8D +:1030F000F6FF70529EF3EAB60F9D5D58FE3D3BB45D +:10310000281BD755DE56379DE437099AEA29BF8830 +:10311000FC1C62BDF05B7ECCD1E11BEB480F63A1D0 +:10312000CBE6A11E3D912DFC0C5BFEED961EEF261D +:103130007F05CB1D961FB563CF2D857A9CDE99B098 +:1031400097F363AB60DF6092B3FD7977589D457864 +:103150001A7DCC7DA71187B7B5162FACB5F47D4885 +:103160004EE86192C3B23D7F71A6E3FA3F936233AA +:10317000D3A57F4AEFCD04BD47BF2C1EDF7DF43DB4 +:1031800049DFAAD59893F3AF278179EAD5636D1CFF +:1031900007BEFAB0E625DE8058F036AA7FF9AE9376 +:1031A000F30F3B2CBFBCEEDD2FC7529EF0CB5DCBA7 +:1031B0002E233957663B587EA81F1529A4875B81AB +:1031C00079D2D6E312D26349DC7F25BC97907EE4A6 +:1031D000937E74CE66BDDD2183D053A12FA81F1A24 +:1031E000E5FD4B34D4177E7F04F3404BE7DBA3A807 +:1031F000BD89DB5244F3538D1BE879E46D95EF5D97 +:1032000095B41F4F213C95B47256E15BBD1E2F4112 +:1032100030FE1CE4842F9DE77BC2F22F3FB5EC50BB +:103220002A5D0288D39B383B2FEAB61F609E6FFC55 +:103230001BEA59A1512693FF5B7B58D897DADF4CE4 +:10324000BE7E8BA8B3DD9F68D44CA7A3D0F2594DA6 +:10325000648E607230329DC258B2333AEEC3042C91 +:103260000DE4D9A9F33BDF7408751E4DE76DAD7B06 +:10327000AF194D714CF77B2EF0907FD632FB553A4B +:1032800047EF7ECF03B2D4978F295F1B8FBFE4B285 +:103290005BEA4AA77C5767F6C9D9AA07F56692B5D3 +:1032A0002EF3E3D951F5C2EFD9E5DC1CA393F4AAC0 +:1032B0002A37C465F791BFE7200C61C7D1BFA4933B +:1032C0001FD1EA34466B5C625CD48F5D7C235BF873 +:1032D000D5E3ADF362D243CADB9E6ECEDAC07A6824 +:1032E000745E47F6E41E49DB43E7E467B345FC64DC +:1032F000C7BB770B570616B7DE3093FC286D9002DC +:1033000074AE72CFD38E84B874B869B2FF5F859003 +:103310000A233E2AAD73CCC549FED108883A290F4D +:10332000531D4AAB896A7DF3D395561EBAF222F13A +:10333000EDD96CCBAF2A8442F2AB101F9CE788BD5D +:10334000AB0436E2C7AFCA41D627F327206F623EEF +:1033500085D519997DFDAC5FE41AB3FCB8DE3FF961 +:103360002C3B63E50D632D5298F5E265E07E269FC8 +:10337000D437D07919CAE5983F87D6058CB3C9AA46 +:10338000C979FFC9FE423029AF8A344E7A714FBBEA +:10339000140E53FBB0589F8ABFE4577E015B1AC8D6 +:1033A000DD9C043196C3BD24073E3F4F9243F39109 +:1033B000FD94F65A1E493A9FB9409E7E1B40BFE7D6 +:1033C0002D3939969CF2202FDEFFE4C47E3FF16256 +:1033D0006FBEC7641C7CE610F7F9DEB6FAC79F74AF +:1033E000BA5FF591B5FED21C0B2F1060399C243FBB +:1033F0001BF7B5CA9243E5CB961C1E137871E32FD9 +:10340000C9A11AC2BCFEE5D6FA93D789E3EFA77823 +:10341000F35EF4D309978BD727E26DA92587A549D9 +:1034200072A80A4962DCB022C6B5E281BBC0FE11B7 +:10343000F35C6ACD33795ECB1CC0385A863832F5DE +:10344000FFBE7926EFD3B53956BE66148C4AD8A78D +:10345000595997B44F85A06750BC69FBD9361E9265 +:10346000DF9B69F9D957370B7FB3B573EF1AD2FFDA +:10347000D25D8A467E406B674F3A9D7395ED522828 +:10348000ED02DDED656B4DE4C5ED1DC36EA07BEF78 +:10349000A54764D687B2C3A5610FC523874B530BDD +:1034A000F9BC51CFA2F1BB0F09FBDB7D68D83B25EE +:1034B000ECC7CF184F345377A83495FC84ED20F235 +:1034C0000CD2E1BFFD8EC62D3BA04EA4BC6403EE22 +:1034D00007F57BF5730B3693BFB13047E401F67700 +:1034E000D6DE48FBB9FC90ACD1E7670E89FB82952C +:1034F000CF2B6199F657F9B1EF367CFE45BB4313EC +:10350000F375F0F8D5BB8AB2EE4AEBDDFF85365E87 +:10351000BDFA5373C80F1C98CAF7B3AE1EEA60BB5E +:10352000786A50EA2FE7607FC38DFC6FF111C6FD0A +:103530003EF5C6FD22BE6D91C08F0BD9EFBFDF49AE +:10354000F1C3A90A7794FA39B5F38893CE7FA7B768 +:103550001E11E777D6F9B58DA764F99FEE4CB1EE51 +:10356000DD3439699F961FB1EB5D4EB2E741CB9FC9 +:10357000AA7AF143AE2FA5B880E6F3A2C4F71FDF05 +:10358000DCF53A9F03566D11E7804BDB9E70125EAF +:1035900097223E75E21168629E5ED6E6D4FAE39504 +:1035A0007B9B13EB4B2E82CB176CFE1809230997DC +:1035B0005F4E13BC1E892EBCAC85F253275C8C93E6 +:1035C000EFC027DBC743561EAA272A1BCECB7BDBC7 +:1035D0009D39D4E3A47B5333DBCFB2FCE6B4EF993F +:1035E0004172F901842A699D3F684FD5C86F9DD308 +:1035F00025F86476BB2B1C96E87964B5B83721F8BA +:10360000E85E6B7FBB773FC4EB37D14E15A17E5789 +:1036100076DC3F93FDE652C8A73CD5294039D384D8 +:10362000D727EED3B5C58972990D67EFA0F7703C27 +:1036300008F3F94517CB799975CFE85AE8E271AEEE +:10364000253963BD7BE0E8EBD9DE609C4AF7F82AB8 +:10365000B724F6579564072339C22E5F2C1F90BC00 +:103660001F9D49FB312726F86AF6512540F9FB8E4C +:10367000E8AA12CAF3DAF249DE8F0EFDBBCFCB7F88 +:1036800067F9DF76FD7ACBFF8D68E19F97E17A0FCE +:103690008076C4640F0FF87B1F0F6C1DC8F9DFA97B +:1036A000B9C20E7C31ECCDB13AFE59F9D61B79CEB8 +:1036B000028E374EE6D0FD33B9FDE7E436BE354421 +:1036C000011FC51D186790BEFDCCFFD1E365E389DE +:1036D00067A193CE81AAD5A63974FE51BDC511A0AC +:1036E0003803D45803F1C467BB249DE2F5AB092726 +:1036F000389F60BB7415E104FDF8BFE5A01C83860C +:10370000D7C1FEC70C09E8C864EE8CB34E92EBA19A +:10371000247F7ECE85FDF9BFE7C4E54D0E0C2BCC92 +:103720005848A5AAE766A65DD89FAFFA4AF893F66F +:10373000E755A8C724F7AA7689FDDF5E7F32576276 +:103740007F72D7434E8A53BB25ED6C2A0A6464AE60 +:10375000F53D06F42BE8FECF3DB6999256B3DEB4A4 +:10376000EEFDE426CE53FECA010584432CE10AE4B3 +:10377000D3B797324F9D419CD3F9F8BD5AA881FA2F +:10378000D54250B30EEDC519223C8A1F76481C0F56 +:1037900027EB3D281F309EED7BCECB4A3634D051EF +:1037A0007F1DACB2E2AAD55C8EDE7D9CC719FD867A +:1037B000539335CE4B38395F188EEBAFA02FCF2CFB +:1037C000BFD83DBBDC441CD7BD9DB29678B8FB800A +:1037D000A251DEA775EFD72F0C223F0CFDF002E2BD +:1037E00079CB5F69DDEBE1B8B8FB485A98E4F9A9F9 +:1037F00085D753567EBBAE5C61F9C89344397AF7DE +:10380000EB058483EE5DE7F242B8DFAFEE7E7D9498 +:10381000C1FB1F16F7F25E4EBCE7B83C92788F11E1 +:10382000E7C5F766AA8F89F3339CD770A7AF775E99 +:103830003BD4AEF4403F7A26497B79FF6429313E80 +:10384000ADFE95128CBF0F84EBB993F8EF3A4B7F26 +:1038500010EF396447E7E5EA3CBFBA76B1DFF22EF4 +:1038600051E2F837897C8B83C7EFF3BCC2ACE47DAF +:10387000CF4FE573EA0E15CC0CAC779CF070DCF7FB +:10388000E0DB4B47C4E7E140127174B52396C3F106 +:10389000E81199E787FCC7F75D66B73B7C2829D814 +:1038A0005FF06B95F96DAC0413B01F93C6CDA53CCA +:1038B000E03E7EFF9865AFAB2789F75759386A7DA0 +:1038C0007B762AC585DDBBB2F91EF27CCB5FACCA24 +:1038D0000D2EC9CDEE8D632EE48FC6C559FC5E3525 +:1038E000AE93F469FB0957788E4471F0B963B7D190 +:1038F0007A0FA8FCFD8BBA5D2E93E2B5EAF73D9CEA +:10390000B78050E8728AEB1EDC7DEF08F1A5CE553A +:10391000BC1F5FEE3EB086DFDBE9E0D383E5BBDEB4 +:10392000CD617BBC63C253E4EFA07F732DF93BDB19 +:10393000DB1DECEF941E1ECF78DB7E687C562105E4 +:10394000601048A57E971F5083A4E7CB0F8CFFED36 +:103950001CF2530E57B0BF231D1E9F453C5546F128 +:103960002FF93B078671DD5E8F99ABF07ABAF77855 +:10397000384F214181C00B0C4BC04B65EB6FD80F0A +:10398000A86C538C78DCD8EF3D9DABB2DC9B6DBC52 +:10399000442483F1B05594956DDB73681DCB1C11E5 +:1039A000DEDFBA2D0EF1BC459440DF4FC5F7CC8069 +:1039B000CCFBF95BFA08F7E1A0145E4476F2A0E5CF +:1039C000FF1F7C2F7419F1E0C169A1115416F9137E +:1039D000F9D0840A9E3748F378DF4FB70A3F2C7935 +:1039E0001FF3FC22EE4FCF8284F33BBBF4FA053E7B +:1039F000663B45DE88FCB78139D6F996CE767806E7 +:103A0000F1D13C7F9644F9FC3F587AF38E75BE03A2 +:103A1000E5C2FFB6F3F8685F1DF1DFE748CEEBFFC4 +:103A200070DF64B61BAF49E29E41A438901DE86781 +:103A30005E37FCC091E0B7F4793E2B91FF7E7811A0 +:103A4000BFEA80CD7FC361B8F0F7D35289BFBFE82A +:103A5000403F96E396F0B0E098BEE3D8FCB21F7901 +:103A60004F47DEEB40DEA3F29FC85B1DCF9D70F198 +:103A7000F381BA91C739CF7470CF7BAF7999873D05 +:103A80006C7FAE3CFFE79CFEE65507F378FF57C11D +:103A90008D09F8B571701AC4F78A937170D6B67F24 +:103AA000D0D5504B7A6BB86BF8DEA3D2B4A6B85021 +:103AB0009C1F52DC5DDD3E97BF37639F2B7E6B6F93 +:103AC000DBEE03B2477523CFAD26BB70DABA9F8E0B +:103AD000F3CE73C5D98FD303CFF2F3072B2066E261 +:103AE000F33D235D6C1F97CF90F89C01017C8CBE49 +:103AF00097729D657E97471167A4CF1807505C3F6A +:103B0000BCF5C3D5B43F37A17D35BC2407916F5DAB +:103B10007EA3C4F9A7EBCB13F7BF0E324DC1FF3E16 +:103B20002E4740E74CBAA77FB321B19F36D7486CE8 +:103B30007FD3FCB98CD379D67DAD9B6F9F7B15E18C +:103B4000FC06EBDEFAC5F035CA1FF2511EA3BBB36B +:103B5000E7A6313A9DEBFD471EC9A5CAD2A3C0080E +:103B6000BD8DCEE502BFD5C6D5E33B2F877B765210 +:103B7000BDDBF44974BEADFBC53E3CE90BE5F98500 +:103B80001DDA49E776554EB746FB61F7B73E579CBD +:103B9000FF1F748487109FD87A1CC885B2FBD2E2BD +:103BA000F757E8659E755E04259776BE5837F2ADE7 +:103BB000B1C49307F71C18EB8CDBBF53B5A1116C94 +:103BC0009F76BD99A3A7C5E34EB670A7722949F3A6 +:103BD0002CBB9B88C35384C3122ADFCDA1FBC3A790 +:103BE0005BA7674B7A9C5DDEF14E7A515CBFA7DB29 +:103BF000C5BD5D8CCB86FF7040FC3C7FCAF33C1D8D +:103C000011FDA1E4F8DCAC6AE7B889E23E229894A1 +:103C100001AD1AB670B3B8F7546FFD3B04BA7D1E00 +:103C20006E0CCEA7F3CE1A93CA8813F87D73B78BA8 +:103C3000CFF3BAD11C4539DFA86D10DF5BAA5186DE +:103C400060BD1CB4B3747E7397DFCEB7D428067EF4 +:103C50003EC910F7B790C7F9BEDA9439E21C1A9F33 +:103C6000F37DB5A93510E0734FEBF9E459E2F9F7AC +:103C7000A08B03FC2B2935857A360D7495EAD3C1C8 +:103C8000ACA7F394F6D66D0AA523A239AAF7633739 +:103C90008818EF3BF294D4CDC7361EB1313A4B9C15 +:103CA000B797E0C70AD9EB89A0F758F3E27B35E56F +:103CB00086BE8DD6D368D99129D0C9F309D0A0B4D6 +:103CC000EF5F03E7DFA6A89DBC8E01BA9E49E724FB +:103CD0005BF7D5727D3746BB7CAF31CB6AFF89B8C5 +:103CE0008F7E851AE675E6D488F69320DAEF3AFFE0 +:103CF000873F9FC7B5D7DBED88B09DEF5E828A8B8B +:103D0000F3AAF78B7F276272930427904C03856296 +:103D10003DD8BFC2E73256FFA96E511F04FAB6273D +:103D2000E8DEB2B51E80191AC9438AE6C8DFA45E70 +:103D3000BADCBA7380E79B7E57ECCC23E37BCFAF32 +:103D400002EDB99CB77D4C92630ADD9B740F11F7AD +:103D50006DA310A1FBC548F309DF877AD63FEF19A1 +:103D60003FCD23043AF929C9F7FB5E0E6FE4FB2C23 +:103D7000F3EDFB2D43004EE6F4DE1B701488FB2EA2 +:103D80000E3AB7D7F8BE6119C59574CF90FA7D5F2A +:103D9000DA52C49DA9E109D4FF6A459CDF9FF3E490 +:103DA000F13CED7B400FA5E4F13CBBA641449AD227 +:103DB000F73E40AA2BB298BFB7E5068DCEB9FADE22 +:103DC0000F10DF0B442DD2E9FE8F5A01D12BB0BD6D +:103DD0003A48DCEB4CBE5F7CCE23EEEDD8F7131EE9 +:103DE0004A798DEF31DAF711689D53ED75CA9772F4 +:103DF0003FC1748CCAEFBD6F89EBDF43FC68DFBB4A +:103E0000443B5D24FE1D9128DB8354437CFF4CC35F +:103E1000FD51459C1C735122D7C0FD29EEDD1FBA10 +:103E200040453CB17ABAADBF9197F9FB6A2807AE1D +:103E30001704DC24CFE4F5FD5F7E40836A70460002 +:103E400000000000000000001F8B080000000000C0 +:103E5000000B93906760F8518FC04DC2A87C74EC42 +:103E60002A8ACADF2C825F3D213C9F05C1BE22C049 +:103E7000C0A0CA01C1CFD821782A103742B10707A4 +:103E800004877022F438F33330F80271383FAAB94E +:103E90001E4C10DA879181A18B01682610EF45D264 +:103EA000A7C80CA1EF3B32302C774388F75B313049 +:103EB0005C03E29BD694F96B140F0DEC1B8ECA9F2A +:103EC0001080CA5F14C4C0F00949CDC400D2CC6FC1 +:103ED0008800A6DD08DCF20F6250F9A969A8FC0889 +:103EE00034F96D05A8FCA5B1101A0022F46663C868 +:103EF00003000000000000001F8B0800000000000D +:103F0000000BC57D0D8014C59968F5744F4FCF6CBB +:103F1000CF4CEF320BB3EB823DCB02AB2ED2C08A3B +:103F20008BC1D82C3F21892F19D1E8E219AF010F9D +:103F300057451D09A79B4433CDFEB1BBEEC21038D7 +:103F40005C08EA80A06834593C4DF0DD253708F163 +:103F5000F0E2DDEDE5793EF30ECDE25FD433C9EA60 +:103F60000B81BCE0F9EAFBAA7AB7BB995DF4E25D8C +:103F700036E735D5555DF5D5F77DF5FDD5573521B6 +:103F8000750AA93997908FE0EF3242CCFCBA26929D +:103F900020442101A3A79E902099777425216423B2 +:103FA000FD8FCC27A4139E15F4BF64199657C675D0 +:103FB000422E2244AC0A1C0FC50891D48C4D746863 +:103FC000641608FDFE7C42323B1304FFDE9847482E +:103FD0002D19FD932612721EFC2340C824CD7E1697 +:103FE000DAB70B2433C92064B3330EC90556D2EFB8 +:103FF0002F38A2901E8D903A3218205309B9900C98 +:10400000E3D3209A08CF39C4C0673D49E3F3370BA7 +:1040100087EE8467A7669D4BCA0959AB5AE746E805 +:104020003877BE36F8AA40DF7749A60EEFC90236C8 +:104030000F67FEFE272136817635CAF5A640E138A6 +:1040400031408C1E78DB68E0FCECC788D146CB8A17 +:104050003A1010C8E8779D59420A33E81CB50CB1F4 +:10406000EA28DC497B50A4F8A91BB088A5122227B6 +:10407000892DCEA2DF01AE68BF6DA5245F972224F3 +:104080005445DFD54379F00928D3764473959DFED6 +:10409000DB4A8DA45A375AEE88CE7B3904F4D28895 +:1040A0003E83B6930A9F277A14C63789459F41C934 +:1040B0002602ADA7B449EDA36306950C2B57B17248 +:1040C000DB87ABB16C57D03239130F6B8148140FBB +:1040D000E7EF67F04A2AC98B74C262E1996723B49B +:1040E0002C26891146AA1A26E025A812ED31A857D8 +:1040F000597B51237B4A048023FF2C9489C6C6BD7B +:1041000080D7CB49EDA1400AE02A044AEAF19D019B +:1041100070D4413DF49760F592E6C517E0C78DAFC6 +:1041200060E2E3E1AB2D25340D40DFA7E726AF8A3F +:10413000BADE7F28B2F7F4EF6DE0570171867F2A6F +:104140002D9F27B07FB71201F1E1E2B30DB00ED67B +:1041500012CA67B47CE76383D7C37BBA0E489AF66A +:10416000BF5DB632D05E52655BBC10E6312C031FDA +:10417000FCBA94E0787E7C7F8BE3BB23BAD41CA28C +:1041800070B7DD6390741DE07B3ED255540D62CD57 +:10419000A4FD003E015FFB193E256580E1F77146F5 +:1041A000C75914D100579D5A082CA4E3AC94AD59BB +:1041B0005016002EFA7D5B746912F893AE8756781C +:1041C0001F225F8DC3FBB1D7834C0A741147804710 +:1041D00044C48AF6D6050C27506E50F38B041DE9B3 +:1041E000542BD5C3D28A18626A940F64E01B2853FB +:1041F000FE84F52426BC7C2301DFB8DA53BEDA53F3 +:10420000027497ECC338CF249BD77C5E3FC2174A19 +:10421000BE2DC6F8CA003C5CC2EB258DD5039F407D +:10422000794B94F28DC0F804F8664B94F289C0F88B +:104230004A739529D12B000F5BA25A85EAA2CF962B +:1042400011BE9950E1E69B2D1F4EADA0C28818BB50 +:10425000BF622FA6F264CB92E971AB6E6C3CB6657F +:10426000D33BA469AEB2C0F8A02D4C9A9EA44F7364 +:10427000AFB6E20680B14A9FD383FC67BC6CC17CB9 +:1042800012B44C4BCF00FF5D04F2D77C06F8A42D8E +:10429000A0AD4079B45426FB52205CF58AE514FEAB +:1042A0008621EDE7201728DE75B65E772C8AB9F0F7 +:1042B000DEB164DE08DE67FC17E2BDDB87F76E1F48 +:1042C000DE9DB2838FEE682EE9C67BF708DEB77AF3 +:1042D000D66BF7B48915B08EBA39FE7F6553FC5F93 +:1042E00042484AB2C518EDB78BCA25C09FF476DAAA +:1042F0008CE967D2416C11F53726B8CA8AA15453AC +:1043000018CB5E14894DDB97E5521B808F89CAE478 +:1043100011681CF7F8325DA705859019F4F911CCE6 +:104320002711C132AE0702FDCBD8FF67A8FC8D5123 +:104330007CDC255BEF03BD426F5836C043D434AEFE +:104340004314141341DF72DD282C43BC9556917C35 +:104350000FFD6E89789D0970505D634CA2389B08F3 +:104360004B98AEB7A058150651D146329AA6C2FA5C +:10437000FD33CFFA5512C40EC7E9D3D4058DF263CD +:10438000B04AF6C0175C460A612A8F44219A78AB7E +:1043900084BEB8985CCCD6B52E403F65928EF3179C +:1043A0006B02C61E260A0584A3690AF2A133CE0455 +:1043B00081C9AB50B455A14A9A6CA899A380DCEA94 +:1043C0005297C7C938EB403C259202C58F764AC048 +:1043D000A7A85AF3819EDB43D6336FC2B83AC171A6 +:1043E000A94CD1810F1555DFF339019E39D248FB15 +:1043F0003504B60E16D730F911A67C1C4A41BD4DC6 +:104400004C5A1FD60DD4BFA5AA7508BF27CCBE989D +:10441000A4DAA8BFBB53B21E12CE84EB50AA3389D4 +:10442000F04F9B9704F8DB0E85D9BAD0E57CB848ED +:10443000FB0675C834813F253BB9DCC51F5DB0AEB6 +:10444000E9F7139B0CB2CA858712D2680817217E40 +:1044500005A05B99494C68B745D2C2A5AE7612C794 +:10446000EB16932C1B2882C7FFC7F5C4A3E5E625EE +:104470004239A32BD859F3C8E81FE8AD8B0923DED6 +:1044800067C8F01489D2F7B650A13328A0DE5A04C9 +:1044900070FCEEE75C5F0D5933405F517DB018FA58 +:1044A000FBB8FA203CA20FAA34E4235EF6DB4917DE +:1044B00068854610AF33D5A100E889CED470A340FB +:1044C000E9F53F6473398C37220F0F7527753A6E03 +:1044D000D7A3F39A00AF5D071A9A4CD7FC57005E3A +:1044E00040FE094C0F7754AC41FB87CA31B47F1CA6 +:1044F0003D2949834C1F3E456633FD38C4CA0759E0 +:1045000079963A1C5849FBED0C5A49A043A72367FA +:10451000889DBCC235EF2B381D663EE5D763EFB4EE +:10452000967C223DC6E1E1F2F4C233E4E9F0B32522 +:104530002E793A8BDB3F7E79DAE993A79D3E79DAD3 +:10454000E993A79D51CB234F47E6797AB5479E76ED +:104550007ED8960493E1D005CFDA8BA9FDDD5931E1 +:10456000BE1EEBF5E9B1DE20E3F7CEC9ECE9BC7F76 +:1045700088AFD36D828CCFDE5256DF4BD7C79345C1 +:10458000FA77DA3BF2392559FD2BE9BC36D6327978 +:10459000DE5635C7063C9C005C81DD97BBC2143CEF +:1045A00072BA905C0D78AF310DB79C8A70795DCB93 +:1045B000E535A98920FF22BF568FCAEBDE80D5845E +:1045C0007C5BE9E853B6AE673E65313B7B449F7246 +:1045D000FA5751FAEBC08763E8D3848FFE092FFDA9 +:1045E00043551F8FFE41F62DB50B19FD1D7FA1C34D +:1045F00047FF0E1FFD3BA2690FFD3B46E87FA587E5 +:10460000FE1DE56B92207F3B381FFC9B40F9A0927A +:10461000C2F1B75A23C041FD3CE4FB994F19E45E57 +:104620005807BA94A1B63D091EA4FE9E4BBFFAF5E9 +:104630006A5BD5F87AC0D1A3D3812EA9227A5449D6 +:1046400013589F67D2D9AB8F1DFA513DFB2AC8136F +:10465000E5A98C0DE228A85805C0FF2BE5E62F4000 +:10466000DEDDB02E7D1C9E4F3CFD16EA07B2DF203A +:10467000432AEA9F269BAEFB4EC14A56D5B9D70BBB +:10468000E3D733D70B15729780B8F8D02C8C333F13 +:10469000E7B92E9C1E06B83A2BB6A31F3822771E08 +:1046A000A54A09ED7ABBC906F95BD1E9A157578A3A +:1046B000707AB525AF9AE97ECFE8D5057054023EF1 +:1046C0004ED80007FC0D4DF4FADBE8BF703DF09BBF +:1046D00095D46F1147FD954E2D2D06CA47FD162A1C +:1046E000FFA5C027F007D0F7457FC7EB0F4CB757A2 +:1046F000BD0C7C738228560FC8AD4B334A5A457E99 +:1047000040FB6063152D83BC48CA8A40FDE14E958D +:10471000EA39C0477255570AFD426B2EA89536EE0E +:104720004F2F4A5AE837D0F713422EFF0EDEBF0E46 +:104730007EB56625458A3F39D3A800DC1DDA72852F +:10474000B8F028AB5652A6EF37AA4C9F76063347EF +:1047500053202FABC8DC563A4E88FAEB73E9FB4383 +:10476000C94684AF435B57007EEBA42A12E6B1A88A +:104770008A32287D8612ABF260377426285FABF050 +:104780003E83E3FBF1E3C0ED94436A86C82E7CC20E +:1047900078A28B9F4252A620707F7A0FA513C9DDA5 +:1047A000672A6017723F34A0A76D8C4398D3E7F453 +:1047B0005096B934C0F4DF197449C81EB9D61936F9 +:1047C0009A00EF242D1065DED8FD51CB0DE5EED912 +:1047D000FA73E222D3AD750F0EC1F7B644205EB472 +:1047E000E1D2CC235096EC90D69A00FD9F797008C8 +:1047F000E4A8AC686DB4FFFB4A6228CF5A8E45111D +:104800007F9B003F21D0230A3E7BB21A3EBBB249B8 +:104810007C126291E9B4FDC9C640BE07ED6B662704 +:104820008D3C6BD8F3A100D317B70422F8BC87974F +:10483000A9F9887C903B8B1D1A6F088CCE8FFE17D0 +:1048400035BCF2A7A4B6CC530EEB959EF67EBB47C3 +:10485000924C62007C12850FE44AFCF2E41AD7F80D +:10486000D70544C49F285E9101BAB40B5E7DF95A06 +:1048700080D93727020A3E0D327CF823B013D400CA +:10488000FA03B1E872BB00BA40209969181391DEAF +:104890001B72E0A3F45103E9B7603DC782435A1984 +:1048A000C40DC4D9C305D05B1364B4A7DB372C4750 +:1048B0007E70C61B0C30FBE63A8E37316418B5A803 +:1048C00047647D4F0AC637791C46DF0D7468DB30BC +:1048D0006718C6B74B65D4534E3F416A78437CC3D3 +:1048E0000F8F7F7E7191F1ED87303FFABCECF4655C +:1048F0000AD89D7D6A60599EB6EB93E83A4B40B961 +:104900003A6F0BFFFDF43B035F3EF87FCCE9731D6C +:10491000A78F04F4A91FA54FAF4AE9538FAB04E951 +:10492000D32B31B9D10BF3498DCEC78FA7FFEA79CD +:1049300039788E4703E93CA57F3CC8E08A47BD70C3 +:10494000FD77E1D98147E5F0A81C1EF54F0D4FC05A +:10495000C2F5B389F3E32669488175F4A79227620B +:10496000491AD72BC0B7DCA53F9CF5EAC0BB19E0BC +:10497000A5ED364BC308EF5B944DA1DE995714F0BB +:104980004CDF47836C7D45A37F9AF5E5C0D3C3E137 +:10499000EDE1EBA347FDD3D09D8E5D2B817C2511EE +:1049A00003E45B42B2668810F77FE1ABA483BEFFED +:1049B000C00C0CF75C04F28FC5EF1DFD4778DC06D8 +:1049C000BBD20959784A42FB3C6210D45751324459 +:1049D000C0CE8A83A4A6F65129D1316E03910B98DB +:1049E0003F210BD05E4A841DFFF98FEDEF3AEC4F6B +:1049F00030B7908F4A3E467F12ED6FEAA7D8DF5955 +:104A0000E00B935DD81F65CBC447D44EEFA67A9FC9 +:104A10001A99F4FFC2A85F4ED4B178571BB503E0D2 +:104A2000FD466A07C093484F9B013A8E6AC83AD840 +:104A300029AAF624C615B41F87481C7C626E87021B +:104A4000BB831D5A524B8E07A81E2A31BCF12EA5DE +:104A50004A1E970F3ACAA74F1ACFDF05499F524601 +:104A6000DB8FD5EEBFFA0976652A385A96D46A0CE0 +:104A70006E8D352FB1CE62C8212CDE38F25D8058A4 +:104A8000A0D7DAD4550AFA41A73FFA489C4718C97B +:104A900008F823E98662F8E80327D0652706B5CE33 +:104AA0003B046ADA05933798432E38364347E5F0DE +:104AB0007EAD39349E7C93D24DE0DF539AA23DB156 +:104AC000A5E47A72BC0EECC5EB91CE9DE513536064 +:104AD000EFC3CE0B8C4B1415ED58870F0F955F8DE0 +:104AE000F1BA8E8AAB93608F7704D349F02B8E9600 +:104AF000FFC0847E3B4FC749C800BFA21AE3199D7F +:104B0000A7A74ECA14995709E523C023EE6FA4182E +:104B10005F394E14C6B388D505FE42C95111E31062 +:104B20005B4A7E6C8AF5CC0F86FE65958E4BC75F1F +:104B3000563F60C2BEA56CA956483BB31F671CFA1E +:104B400027601C02DA38EB4AF0D41785C35F966BF6 +:104B5000022C4E9020F9B622ED834ACC2EB910E4F7 +:104B6000DBC87B0DC6AD7961669CC59F65A22B3005 +:104B7000B460C2FA19E5F7BC87CE440B8CF65B0D26 +:104B8000ABC1EE02FF2844940CAC4B3F3E3B65D2D8 +:104B90008C7EB36436B1FDDDB239E0278CC5D752C7 +:104BA000B2EB7DB01FC7AA0F697201F84C4A64ECE2 +:104BB00095182709189F4311D13B285C88CFF761CE +:104BC0009F35A449EFBAF9F017A237BEDDA6568F7C +:104BD0001BD7EAA0EB8BCC18BB3E281B16FA53243C +:104BE000F332F84F12B910E725553DF7728AC231FA +:104BF000CCED5B29C1F6FB8846ED3C17DE04D91CE1 +:104C000016419F44583FFEFECBE4C6DF82FED92208 +:104C1000A67F07CFAED43CAE77BCEB46B30CBEAE9E +:104C2000CD983091F12DFBCB1702608F5AAA0974F1 +:104C300009D6EF811814D12A45262F6BA5D7001E5F +:104C400093FE0FE35EE6DBC7088533B680BE77C709 +:104C50005DCC08CAD12061ED1D7E1401CFB06FE09C +:104C60007BAF4A3E3C670F92D75DF141FACA2CB642 +:104C7000DFF97CB0B14C2A3F737EE023C2FE3C6575 +:104C80002FE433AA2586210F6007D087EA85ADD9A6 +:104C90005A7CDE9735905EDFC93660B93D6B62F9AC +:104CA000DEEC322CDF9F4D6359AE6857008F3B2AF4 +:104CB000723B04F477E734BE403FD911CDFD1CF6BA +:104CC0008F883DABF1058A9F1DB01173092133A573 +:104CD0000B1A6D685FCACAF3A4D98D36E59B1DD344 +:104CE000722B02D8BE82B59FCCEA2F93E6B2F63380 +:104CF00059F98B52036B1FE6F19BAAABCE926FC0A2 +:104D0000E4DB51516772AE2A817910A2BE8A08F4A1 +:104D1000D58E721E87E2FD50742A5744C7EEE726EF +:104D200089EDFFCAF00AEC184D42FDBA23F5C9E03F +:104D3000094B3913F1431635BE48F115061EA92457 +:104D4000E42FDB3F8BF3439144E79B6D375B71BEF0 +:104D50003379FF54DF7CC5A56FEE9082B82E76CCF8 +:104D6000F6CEE36CE37F8D9A19F08C5F3E847B6412 +:104D7000A744EB5A8996A3D7150AB20E71A42759F6 +:104D80001C8FE36BECFE6C1CFF1EC06FF9687BD5BB +:104D900030F1FB051C5FF7AF6F443EB911CAE5A3C4 +:104DA00065C037C84B198473FD283EC71C4F73C9B3 +:104DB000F1EA33F99B4869CC0F58256A1E7AA7455A +:104DC000CD035F5865EBE6E3E26BA9AFBF39BE7276 +:104DD000ADAFFF8AC703A4610E25E90D8171ED888F +:104DE00005BEEF60A399CB0B9BC5FF46CA5C4F9DE8 +:104DF000AD7C7A86B7CCE81322D7C699FDC9ECCD35 +:104E00003F27BC8D7FBE86CB9E13A11D2BEBD42FDD +:104E100042BD4ABCF54EFF2371A95689B4D5839D86 +:104E2000F12D8C5BB5D8212D449F27C353F22486E6 +:104E3000F1D947985CCA5CCCF4646616E64D08C5A7 +:104E4000F3361CFC77658DAD6FB8E49E52B581805A +:104E50003C260B58DCDAE4717DA5CA78A807E11C72 +:104E60002E807C9612C65CD8AF785A929DFDFDA725 +:104E700081CFFFA7C4F815F6255701DF2D900D301F +:104E80008BA3449FB40AE268F37F8771E0A834885B +:104E900071F2688D80FC02F15BB77C382C05BCFA9E +:104EA000DC879FC6205B671BB3E91D3514FECD93DD +:104EB000539B17409CE71F451E6F1F463DBE69FE72 +:104EC000C400C0BD31C8F040F56501F681DAB24AD0 +:104ED0000196F8335235F6B3693EB3A70FCD9F1E46 +:104EE000C73C9668A409FCCFD094160BFA39397BDD +:104EF000E00250959B53050276D4C9D70E7C660319 +:104F000081EF6338DF4DA93B703FC3FE57318FFB04 +:104F10003064A81FF675620D1AE6456C9ECCF068E9 +:104F20005F44F2FB683FE1068A7717FFC648CE84EC +:104F3000ADA4C55189E525359087981D69C62A5CC1 +:104F40007E0CA5EB46185FB2D40CE89760CD00C28A +:104F5000134E8A44A76561CA3202F19CBB56A91957 +:104F6000B0E7C4DFFF2F1BF721685F4FC3F775CC95 +:104F7000CFD0E8FFD83A370BF783FDD710D240FFE8 +:104F80002A355E3F443A760BD901FE4B63603838D0 +:104F90001FA8E0A203EC7F3458B702FF49C4F51DF7 +:104FA000E8DD0FE7A611FF0DEB221B806FC4EBE2DB +:104FB0004077B181E5DF8956ACB0D8B5EFA21E0BC2 +:104FC000FFE488DBEE0E52FD0CF1799F7E1EE9674F +:104FD0000CFD7C32ABFCE408A5EBD54166D73C1F49 +:104FE000349520A5EFBB416F5CCC795E1D64F1C4A4 +:104FF000AD92D908ED1CBE12671492868AFB7FA879 +:105000003F2A8203CF82BE14DBD249889776047D83 +:10501000EF17F1F7E1E2E3584111FBDD1C1C4C12E4 +:1050200097FF1CE274DD2C6408D889F61D31639F5C +:1050300001EF33C80765CB74C1AE80C60DA760DD34 +:105040002BC918DAF34E7DC50DACBE3D35D804FC36 +:105050006657A88CFFDF3393E04F74CD9FE8D95794 +:105060006C08B2384C3B5F0F9B825EF9B098E3ED61 +:10507000A26090B58B72FDA7B525DDEB73A41F6E02 +:105080006F2C0B3ED20A78D84C5F637E5E4A463E58 +:105090002726DB8F74E4E498FAC0271F43BACFFFBA +:1050A0004DFAE3FA5E79DF10D4197E056297BAC72C +:1050B000D73624210E45A5FE471F4D04FC118C2335 +:1050C000B8DA33FD5FA0F5D44F5340578830AF3581 +:1050D0000590BBD4AECB4C30202EBED65C4DCB1B46 +:1050E000E9BA03D5B2326E3500BF983CCF4FD158E4 +:1050F0005C414EA6D1FEADC9AD18773FCABFDFD225 +:105100009E32711F33D6D1DB28CD07FA9849B0FB08 +:10511000121D5D8DB0AFD97EA94992B09F5A41F260 +:10512000AD29C0E75FA0BF7882620EE400B9AC9001 +:1051300064763E957CF3385FC1BEAB7A1B01BE201E +:10514000BA84FE87CCED61D9975FE3ACABB1E06D7B +:10515000F1ADCFF5BEF55993560C903B7D2F327FC4 +:1051600073AC7E9CF5492E66FB5163B5DB9865FBFD +:105170002D5D41D3063C4B72E665F4BBE7C98E7CDE +:10518000F7F063235FC795D037EAC11CB32388913A +:10519000043A84E4B4057EB6C4ED74E7BB5DFCBBA1 +:1051A0005084D5FBE1A0FE4D0EC60FC5D2CC8F02B8 +:1051B000210FF6AC64EA5714A1AFB32F45E5C97DC2 +:1051C00041804373EC0F532FC60F8E9E4F120BE39B +:1051D0001D942ECC0F4B7AE3EDD40FDB1D1C1FCE9C +:1051E0007DFF1938B77379276BE902D32F06C241C7 +:1051F000757C0EE000D901F0CF93D34F42FFDDE57F +:10520000CB0AC4254FDA1CBFB97639B6EB9E76B50A +:10521000BE52853C889CC7DE77EC8DB66C9EC9F18A +:105220005A96CF2CAACC9E3D631FBE86F187A8E478 +:10523000D04E08E7B6988122FBE9CE7EFC77F97E56 +:10524000BC1307182BBFED2E916460BD9FFC565E0A +:105250005E4E9F37171E95ABE97CDFE4F2EC57D921 +:105260005308DFC96FB179DD7C70B7BCC8C5A76FC3 +:105270000799BD7333D73F743CD93BCF0D3C8E1D8E +:105280002F805C78F7A88872612C3E6F4E1E3E22FC +:10529000B9E6FDF67E11E3F844B2BF04DFDF9C17E8 +:1052A00003C5EC767FBCA339F91CF673F29EBC0CE7 +:1052B000FCF1ABAC22BC1E64F383FCA29B9FDA2DF5 +:1052C000832D7736B85FE2EB27CFBF3F79CF30E64B +:1052D000F3C60BBFC73CA5B83D6C427E13D006FD9C +:1052E000B405FA6E80EFB2D31F61BCDFBF2F1B86FF +:1052F000F9CD1D2D772F60717422E596E17E4E4D1C +:1053000020500C3FFEF985617E7347F1BA09F03AEF +:105310008E3FD39B2D1C918263D7ABF3D9FE821AAB +:105320002CE0BEE3D9C68F1AB43F173F3970F49E04 +:1053300085BE7D0087CBBEDE6478F769CE366EAC65 +:105340009E7EEF8947DAA47622C80B82361D695FFC +:105350003F0BE2CD155684F420FF4B1F80DC70E23A +:10536000CB15CA97C8DD7346FB4BDE40EB3DFDE530 +:1053700030DE5DD144E50EB5CB88BBDEB57FAE80B7 +:105380005C80BC0FBD13E356A21E413925D6486F81 +:105390000D295EF830CF97CB8D8DA504FB6D9F2C2A +:1053A000303B829023B07F21E98E3F41E53AEC67A4 +:1053B00068F3D09F5824CB45F304A8BE5D245F3426 +:1053C0007A4EC1C9576F2F65795F442D7E3E02FC2E +:1053D00003371F38F875FC01727AEEDB60AFB40555 +:1053E0006AEF003DDA3979653FDA61E54CCF80CD6F +:1053F0000FF3302F275CCF33B8AFE1703A71330A27 +:10540000DF35005F906488901A85CFC94B236AA26C +:10541000287CED63C0D73E0A5F12E113EAEE70C745 +:105420002D1DB846FA99BC10ED3D3BEAE84786E7EA +:1054300020E019E171F2B2199E3363E33983F34836 +:1054400038784E3BF9F76403F873F453D1187B3E78 +:105450009272F50E90430E1F04399CFE7324DDBE3C +:10546000BC3027AFDA394772B63CEB8E69DB8BE68E +:10547000518E9E376079B34477CE1B6458999F2331 +:10548000E9FE7035AE5FE71C0949D47BF0B945F6FB +:10549000FB9F36B72BB87EAC61EB65A56CB5C890A9 +:1054A0001F91E81CC4F5C0F5D96D3E3BC379FE667B +:1054B000B293B7E95F07C3AF7ED3B50EF68E4D9FAB +:1054C000BDC5D6C16F7E3483F1D9C1F2A271A5DB0F +:1054D000942B3D74199D17F34330258BE265674289 +:1054E00059B192FEB38F30F87B04EDF31B287EFF99 +:1054F000EE42EBAF61DCDBAE1A9401DCCA661280CF +:10550000F13673BF6A89D81B7E8DCEABDFAA8EAF12 +:10551000A2CF9FCB42D1FC9C7BA95D07FCDE9155BD +:10552000F079F29519E3C6B7F7646D8FFCDC532769 +:10553000A1FCDCD3F5E46023D8C3899A397C0FA899 +:105540007D22F083AEEF017CFED4373EC5DB4FDD1C +:105550007C7DEFCCAB799C9A9DEF72E62F99F98513 +:10556000350916BFCD1B80AA1CDA1D151A310A0495 +:10557000F1F022D0FBD61AD20AF1BCDB6E304C78A7 +:105580003A78A0F80D4FA7DFEF787EDA1CB71D7CC4 +:105590004188F113A92F63F6A044EDD2A2F1504641 +:1055A0009F07299EEA30C9BE80F2B91BCA2E3C6C07 +:1055B00097AD37018EAABB23C88755197E4E87E762 +:1055C0007F0844395281FCA5EDE6FCF5CE23C85F87 +:1055D0001367037F0DCB81B1F86B18FAF5F397527F +:1055E00093B141A7F484ADDF021E4B84410DFCA4AE +:1055F00073EF2E201EBB1D3FCA263F037E9AC2F3C7 +:10560000B6F08F8E7B8EC1E8521162FE65BC2A2FE8 +:1056100004687DCDFEF704383FB291C7FFCF9D3CB3 +:10562000FC2FB06F45FE5524B04E27D73DB5701105 +:10563000F82FA6320CFB01F105838780EE615A0634 +:10564000393479BD1680F11D7FA1B2795080726C1A +:105650007D5E20AE3C95909C41FF684AD59ACB6117 +:10566000FF4098F2F606889F6DDC42303E75CEDA38 +:105670004201E4E794869006FEDDB9293310067FE7 +:10568000EF0E62409C27D5CEEACF3195348C1B6F4C +:10569000C930252B65C8952EFB5AADB26E85FE57D5 +:1056A00087AD8A10E43B180C8F4A55C184E63B82D3 +:1056B000D49EA5E5F0828299463EBC93AC74C9B5F0 +:1056C000F343DC1FA92166DEC59F3B39936F59BCAC +:1056D000277C631DB48BF07C9EF5A686716D968F3A +:1056E00017063ED5914FCF0BD17EF4E6C1E780146B +:1056F000B7D51826E09BAE4F8C7351382A348CFFF7 +:10570000CB18E7A2747B0992F1D580976E4A95B9C0 +:1057100017E8F6AACCE2013DE5057203C54392D233 +:105720004B8778D1B1E7C914DAEE9F2A4422C0969C +:1057300046D22EFC88964B299EC037560DBBF00AE8 +:10574000F8D14D2570B68E906ABDA716F8A1999D27 +:105750004FA478FA2CE0294E86082C597571E11077 +:10576000C0BB47CAFCE21EDA6ECF51D1B075D7BAC2 +:10577000E1FE9C83AFA95DF619F61193D3A604ED63 +:10578000162B25B83E0E7379B65D4E7F11F0B258D8 +:105790007B1FD70B51277CAC38BCFFFD29C3880386 +:1057A000FE5627576EABA176E9AA962DDB6A68579D +:1057B000CD2D8F6E053BF5B5DED531B73FFD56D704 +:1057C0005FC6D87ACAC4AEA5F35AD5CFFCE49341DC +:1057D0002B76092DFFB25B345A619E7C5F7B0D27CF +:1057E000C1A1FB431837FCE56E01F3109BFB051BC1 +:1057F00052134F965A53807F7EB9E3AE29C5FCE819 +:1058000035C784009905F52BA714CB4F69EEDF88C7 +:10581000FBE0CDD4C1368BD86F77058CA400790618 +:10582000D9FDBB203EECD81BDF08E9582F3B7E8416 +:1058300062607C65E1AB9F4F425E723A647D1DF011 +:10584000DB7EFC73B8BF7DB8746912ECA975AF84B8 +:10585000709DDD256766682E78EF8AC916F29FBABB +:10586000CD4387F5A1A04F4FD93C1E4E9AE01CA70F +:105870001D231AEC1F2F560DD4E31F0C09D87F07E8 +:10588000F72FFDF3955ABEBBD5ED67490983E8AE06 +:1058900038A258EB8D27E6607D415C30C4F21F6F63 +:1058A0000B595B615EB00C5BCA20EFF5F1AD4C9F0C +:1058B0007AF388ED46ED65888FDBE7CB3AC0D733C6 +:1058C000D3D10B79B41B5A252A50619DD6923D90B5 +:1058D000AFB811E0A5535D5C9BB703AE798CC58F63 +:1058E0003DD996ADA00F5B816610F7AD0DECDE23C0 +:1058F00080BF93D90AFAB42F6B637D4FED9197C1A6 +:105900006EECA9D2E16C1269D57226C8BF563D7FF4 +:10591000B41AC70FCC81BCDDB66C17EBCFCC1F6DB2 +:1059200074BDEFC8E6D87B3BBF6CAAEB7DA8E57BD6 +:1059300038EF56B27BD922D77B07BE56AA99A71655 +:105940007DBFB70BDA77C37BE27EBFFFA85E7FE641 +:10595000FB1E75AF027684C0FD8E5635B70CFCCEAB +:105960001EAD1AE5528FAA637EFFE8FBC5C5DF278F +:105970005A09CBD7F2BF9784A2EF938140F1F70C7D +:105980001E3F3D285FBC1472D91911CE1754B66161 +:105990007EB8641870B68D14A6EA1F043F33DAEEA1 +:1059A0008D10B34F5A1CFED30D94DF54F8DEB1D1E5 +:1059B000B50EC4C5069150DEFADE6BD4EFF2C83DD9 +:1059C0003F1F92FE30F0E144BE4E12693C177E3616 +:1059D000FEA2FCB895D9674DF80C1196B7EC6F771D +:1059E000C2B1677CE3B6507A29CCEE1EDE371BECE1 +:1059F00062C366F3D2D66D44F99D99C1FC4836DF87 +:105A000033E695F0FA93CEFB76BE4E9CF26470249A +:105A100040FFE973141DE27A9A8D7A76E1AB2B5838 +:105A20007E0DC89FBA33E5CF58F3BE37DBB40DF611 +:105A300091BAB3163EDB8C391AC8B3365522058CA1 +:105A400057A4E1503F09D6E4D9B9516A42113A3F0F +:105A5000B9CEC47877B086ED3A4B89CC8DE8671C17 +:105A60000B936929B03773E44617FEC29CDE91D3CD +:105A7000D99A16EA97875BD6A0DE88246F403D72DC +:105A8000578C58C5F635828ACCE5507AAA42E7ADE4 +:105A9000B4EC2D2E7FB6B0F3CC2289181B503E32C9 +:105AA0003DFEC1B130EA0F51B543C5E2BC52CB6AED +:105AB000D45B0B01F7E580C7F988C7BB6423F9AD58 +:105AC00004CA6990C0E47074DECB56FDD9F1196C3C +:105AD000D98AF3125BBE89CF51FA1A183B12357678 +:105AE000DE0ECECF4FD3817E063B5F666686C55203 +:105AF000773FDB593FD6B671F173E1087ECCA54AFA +:105B00007911BC3C415E06BD71324A34D88F3AFCF3 +:105B1000CAC538FEBAE36C3D2C566DB64F4EE91A35 +:105B20002AC5F5539B718DD39BB5B7D504415E361D +:105B3000E3330CF802B80C3E9F1AA6872817E07CC6 +:105B40007AB2196CD791ED427E0AD79826E80555AE +:105B5000CDA03C1E695F4FDB13A8CFE3FA8C423D1A +:105B600071D573FC846B06701F2FE8FF3EE9D45B90 +:105B7000C8675183C2E95A3F541FDF02F890135D92 +:105B80009EF74A721BE2D58FA723C767C487C689D1 +:105B9000CBE7B2FDA8171C7D934B194D608774733A +:105BA000BDB491EB9F4DA03F82B0AEBAF0B94F4962 +:105BB00071BB4CC37C388C2B53B831E103F5456283 +:105BC0000FC429FA82AC2C56913CE847850CA0D230 +:105BD00055215F732A1D4762F5DD0BF47C1BA5631D +:105BE0005FD8403B9AEA096579117FAA5BFD36CA06 +:105BF000EDBE52D6AE2F9553EC049E139EB3C7153F +:105C00005F88CA2C1EE9BC8F4672695696B03C5616 +:105C1000FFE1E8B735E83F5A66A07E8D56E734DBF2 +:105C2000F59DD3AE4FA6FD2546DFF745F2CBB05C20 +:105C30001B18B7FF1E750F83BF8CC35F9D67F0D71E +:105C40007AE1EF91F2CABA71FCE8480DA58F27BF3F +:105C500094D2C9A33FF22C3FBBAECBF33EDE90F310 +:105C6000940FBF3263D2906B9C234353C7E597B721 +:105C7000805F5C72FBADB0753DA1EBEB64D7F58B3B +:105C8000DB17D072D09A22D0F214CD6E5F3699DA3B +:105C9000AD5C6EDCD8B212D7D79ADED532D869ABFC +:105CA0005A6E61E55D02FA456BB85C20C49241DF33 +:105CB000BC93CA9CECA1FDFC5261769BA357D768AC +:105CC000D67328677C7A754DD25A5A4CFFACE90AD4 +:105CD0007AF4AAF37E55CB6A943F23E5DEA90C2E15 +:105CE000AE1F57811C9F8BE34C69A276DEAB4A182E +:105CF000E1786DDF7D53402FBD23E4AEFF06E8E37E +:105D00009B229E7328CED3899BA7434CFE12C97A4F +:105D10000ECE69BCB6411CEE993D763F6BB8DEF005 +:105D2000F7F30A97E36B381E42A7E328DF56EDBB73 +:105D30006F3FC603A5DC941594DFFE59513C719268 +:105D400055D6368FBCFEA4F3FEDFBCBF57F9F81F53 +:105D5000F77BA77E4238ECDBBFCB9F07F6C27F966E +:105D60002F765653BEA0F89B148E78ECAD3F962F3D +:105D70001C7F64CDE92C013DEED0211DE2F94B12D0 +:105D8000857BA61BFFB326AE70ADEFFF50D879A27E +:105D900072388C5B04FFFEF9BFD31C0940FCF49DF4 +:105DA000A34BF0BC4133C7C34E39777DBA6E140F95 +:105DB0006F513DD5EE5A6F37F6AE7EAE81CEF3A66B +:105DC000BDA952C1C5CF37EDDDB2B43201782B9DEC +:105DD00003FAA4792FC3DF8DFD1BB6B57BFC410709 +:105DE0008FB9DF031E178415EFFAAAB596068AD875 +:105DF000AD6B0CEBB94011BB752C3CDEC4FBDB1961 +:105E0000CB6D7A987EF73A7970452BACEBA38BE299 +:105E1000E1BA517CAD4A323FFB756E5FBF45F58EEE +:105E20007BBEAF4BFAA6F91007EF1267BBEF077AFC +:105E30005DD137AD28F65ED5FFA958FBD7764D8BDF +:105E4000AD2C224FCFA017D7A376A3F1761EFA79F7 +:105E50003564B4D1260714EBDA30857743EC9266CB +:105E600090F377BD26E0FD0DAFAB7BDE81F88C5F54 +:105E7000EFEECDEA82DB6FAD1923BFE5BAB0C0D734 +:105E800007C3DB39196F1E6CBCD95B561BBC65851B +:105E9000B8CAA9D17E10A279A3F77A38FA00FEDE3B +:105EA0009B88F62EEAEBE050E96AC8F7595893C38D +:105EB000FC930FD480EE3EDF7AA65C238511BD8370 +:105EC000312CA530A24F3E467E737BB669BB3BFEAC +:105ED0003B725E91CB0FA9E5FAEDC0F747683FC76B +:105EE000D1CF6E75F6FDF97D25790FBDC49687710A +:105EF0009D684EBE2EC97BE249BDE1C2CB9087B101 +:105F0000BBFB687BB06234FFE791F0CBED90DFE242 +:105F1000DC1B40CC6DEC7BDA3DD0B764DAD57B8BF3 +:105F2000EFD3B6E3F84AE138C6E9620D19964F4758 +:105F300075DF04C843A6B81D44FF2287E77FE30B43 +:105F400058BCF0BB9CCFC2CA293C7FD4BDE0671AC5 +:105F5000D49F9CEC6DEFB42343BA09EBA5E45276D1 +:105F6000AECF697FE8956B4817D84B0D813CD0893F +:105F70003E21F79E44674A79DC3F34133C1E9D1B4B +:105F8000371E6DE61612C87FA1A4C4BC33880BB7B8 +:105F900081BDAE4B984F2F1912E675AD8C5B07C3D0 +:105FA00045E2C7CE3863F3091BE7DB591DF3116BDC +:105FB000F6AB88A7B66302CE675BB676EB1B41B43F +:105FC000CB591EDDB5ECFCC08429C6711DE4CF4B56 +:105FD0002C5E4CE99E02B933E95889C6F45CE6E2CE +:105FE0002BDDF7666559DE4DD932B64FE387439412 +:105FF0008D21B0AF5A8E850C3867FD78D0FA59984C +:10600000E25788B5CC00BB67C2E506C6BBCB26E924 +:10601000B3058A87EE1252482769B9443F001E60D3 +:10602000EEDEE796A8749E6521C63743DD133A215C +:10603000CFB86CAA3E9BE561972C853CEEB273F419 +:10604000F7E1FB8E1265E932CA47651426763EFFFA +:10605000C812D8A72FBB80952B7BD9F78EBCCDD18A +:10606000F50078D898B5B6039EDE0EB378B1261940 +:106070001857FE77E0078853D175F106DE534304C5 +:10608000986788D78B2D6BB6BF3117DE73FA24491A +:1060900081B8D6FDDF5D680D03FD6E4D0F2D8514B3 +:1060A000A960C2D9E7197E19E8EF9CA35D22D6C585 +:1060B0005F73C9A76F46985C1225B62EFBB249DC08 +:1060C000DFE9A7F8C67814DFEFE9CAEA84F90FB56B +:1060D000F894222C8E5042F4F8144AAF128BEDA79C +:1060E00096585D83EEF315A4AED03F2247AAF1BEC9 +:1060F0001AC4EF9448CD1258972D63C8CB0887ABCC +:10610000A4E5A7FD808F281C3CC0F2E1FE37E68E97 +:10611000CD8FF7AEFC81DE49E95516097780EBE2B9 +:106120001F4F2216FA23D2E5CD8556B423482644C4 +:10613000F940AA5B433A6959AB96B06C3E6E923512 +:106140001047E7F99A747D5445601F2A99C1BB082E +:106150009CF5E1F44F397F09DC8B10AE1F403FF016 +:1061600064B478FE6E47F614C66517454AD9FE7CBE +:10617000759301FA6AACF673222C8E7992CB2FDAE2 +:106180005E77EF3B2C8AB07894ABBE76B5A79E7D48 +:106190006F72FC9D2C67E328D5CDC5FB19AD4FFE72 +:1061A00085A79EC5754F568CD4D7BAF5ECC8F79322 +:1061B000193E1A7B521DC0FF8B22CCAEA27061FE2D +:1061C00030FDCE70C7312E8FE81E392F27287E3C38 +:1061D000768CA4A8AE7358444B24ABE6B1FB80E0A8 +:1061E000EFF0D0D77E710FA5DBE6A3A20121EE2050 +:1061F000D1032C4F536F7CAE1EDD54CFB9A170DD9F +:10620000C15D6EBF6833F583C63B071AD4A6EF02A3 +:10621000BD43FB8D7F763C7DD945EE1FE997F27932 +:106220007FD05E0172A5B367CE92049513FD61879E +:106230004F162D81B8647F94C989AE4803E2A94BFB +:106240004893A5E01F0864601F459932656818F3FC +:1062500007A2D353AD14B59B08CFCF4C06304F796E +:10626000D325D716202F40FEA1ACC3FECCA686E5D1 +:106270001A93DBD27F403E6407C87A8A874820831E +:10628000F821FFC0F2AB3B21045536CE7C9383FD51 +:106290006E7F73C79A6BD97E6BE2D477DE70CD2F99 +:1062A00064F2F809971BB646ECCFC27AA9D176BB47 +:1062B000F5E9F3117ECF607619EA01E7BD215B9B1A +:1062C0002310DF48068E8720AFD1BA7C2BACF30CAD +:1062D000E7176ABF2A3C3F1FED1BC78EA1EBB2D068 +:1062E0009E18D56790F7102992BFF150B619E52D89 +:1062F000E1FBE429CE2FD5E4AA784180B84706E532 +:106300007047D6C667F5B1490188BB52AD6F4C687E +:1063100080F675CF1E013B7851603844F542AA4B98 +:10632000FA9DDBFEF5E7553E18F1E65512B12EF069 +:106330009304DC7B11C0B8D8C62CC5DFB433E109A7 +:10634000E96623D0CDC9AF0CD7B0FD0451D5D8FE36 +:1063500038CFEF4CA9EC1EB514CF033D1B3C077C96 +:10636000F09C20758D26A55BACE521949FA196EF4E +:10637000A05C0D3410B48362ED04ED0C078E405523 +:10638000DA86FC745853F05FACE561FC0EF0047AD9 +:10639000DAC153A8E501ECC70F8FDC50C0B82BA5BC +:1063A0001CBE471F86CADD94C1E7E16BEFB43B72A8 +:1063B000C3446C77F72CF305E08F17406E41DE4F36 +:1063C000B6BFFF0D8C4FE5FB81AE0E7D0FBF32894E +:1063D000DDD75947304E2A5DFE3705D87FDCA7054B +:1063E00030BFB66DDB6B782EA26421DC088AFA869A +:1063F000F0F81CAEA3A049E189B9F8BF8EC2E1E272 +:10640000FF7FE3FCDB95ED423E39C6E568573687F2 +:106410006522FE2DEE0B9DD0496602F5B3BAAB06A0 +:106420004CA07B0DA53B71C54395C9E900AC97E035 +:1064300036369E7F1C872F1C7D1ECC0DD8D00FA119 +:10644000FD2CAA80F78CEEFEEFFC741FF6D1FDB296 +:10645000D37103EED1A8E1F9BDA485FEB9CEDFFA70 +:10646000D7BF437FA77CF89519F1A171E46347B6C4 +:106470007F3BD8070F67F3F8EC48ACC3734CD4FEEE +:10648000C8835D19E4F7F606550BEFDBA165038EB3 +:106490009AC849562FF37A59B57ACE4B6019EB83D7 +:1064A000E537B486719DB37C818EC4AA6721BFA0F5 +:1064B0009AE70F3CB26B15DE4BBAB19F98309760EC +:1064C000F9FA67A1BDCEDB7726D73D0BE3A9A6F38A +:1064D000FD3ABC172BB48BB50FE5ACDC42908B0DAD +:1064E0002C8EEB9CBBAD6ED1707F5B71EA3323F5D4 +:1064F0003DE7D1B26EB27A35677DFBF3409F052C44 +:106500008EEBD44F69D610CF31A887EF2DA73EF37D +:106510000F505FB58D7DAFE5323FC37AD55B5FC964 +:10652000FB8F43BD2B2E3D2D475191C0FE76C3FE00 +:106530008408E57AE49ADDD304E46B5636C86EC865 +:106540009F6F530EE3BA14C33FC575EBAC9F8EEC3F +:1065500000AE9F87B307F1B937BB1F9FCE79A39ACF +:106560007E96BF30356136829E5A52C2F8DFFF0CEC +:106570004F1E40BE8FC388E06B41BCB71ED7D3709F +:106580000F96D378DEA88AD6EFD48AF13B5BEF531F +:10659000E81FF0A9C367478E5F8C4F7FBC92745190 +:1065A0003E73E737DA796FB965BFB79C19D8EEB695 +:1065B0003B49F3416FBD55F0D69B47BD6563D0D3D2 +:1065C000DE816367B67FEB62B487D9BED3CE7252E9 +:1065D00001F1E31C3F37D907FB50B87F90C3FA7E27 +:1065E000BE9FF040B605CBBB603F621AC6D7F17DB7 +:1065F00077B669EB62946BCDF85E6E7968EB624AB0 +:10660000AFB525FCFEC1B8B5B6E422C8732147403A +:106610001E53DB1EEF459648C686BC8B9D61F35A20 +:10662000882345F4411270E1EBEB258277BF5FB21E +:10663000883B9FFCEB9C8E8EFD6D4EB609E415DB0E +:10664000299B403CBBA584D973866C7EBDA41CE607 +:1066500049C751C10F66E7C8AAD6EB187F92A95F58 +:106660000EF026E97291C19F36D8FBC919EF7EC69C +:10667000CED221CCDBD95B4E70BF58ADA3F377C926 +:106680002D67BFE856657917CC37CAE38BEDA56B4C +:106690002A985D93C3B8C076D93254F0AF8F853055 +:1066A0003F245CC3F2A7D685D3DDF0DDC957EE6386 +:1066B000794D6030821D41E58CCF4FFA2B6837A6AB +:1066C0009F148DA09DE4F79362AA77DFB72FCBF2DA +:1066D000E1BAB97FD4097ED334887B303FC9C98FF2 +:1066E000F3AFC33E9E1F7A6F96DA59B0EEA29D7843 +:1066F0003F72B73C60C3FEBBDDA81CD857E49CFBCF +:10670000939C1FC221CAD9D06F5D81E9B180F62F59 +:10671000259F8173D1943FCA609F2A5098E8F2BFA9 +:10672000C0E46E2EC3E751710E9CCB28EE67FC844B +:10673000F7DFC9FD08B9F2A8BD1BE8F9C3892990A4 +:106740009F321F570E150A2817458270B66BCF6A05 +:106750006E3FC2E9A79DB0FBCF1C7BB497DBA36360 +:10676000E911B58EE2C3C50F51D96BB78EF55D7BCC +:1067700056F3DC0FD9279BF622A06380BC0F76B4BA +:10678000F33E1A324D38D748162977B8F11BD4E8B2 +:10679000F72E3E3D45FD81F1E25AD42FBE1FE8267B +:1067A000A89C1EAB781E0CC90460FFA8EDAFAAF729 +:1067B000B8F3CA05CE37FBB68D1F2F83FBDCE1FC97 +:1067C000783BDC573203E4B5E6B91F6023CF0FBC3A +:1067D000EF9C7F22C75DF8FE035FC7EA9060021C52 +:1067E000C1AF99EBD245EAFF50E2C41F89549960CA +:1067F0007284E517A7D1CF95B83D1DACE9C27BE403 +:1068000083AA7C9CE747FF01D6BF3FAF789F6AE031 +:1068100039CD7DAA0C3E0B695B1940F8C2D3BB2A67 +:10682000DC7EE171CE0F3D821D07FFC07E5EC43865 +:1068300044E4FC65C62ACFFA4A79F2862A2C8A6794 +:10684000175DCE966F2A992C7FB9BB849D1F6E8BE6 +:10685000DD8C72E331393D41A5E5445AEB027F1FDF +:10686000EEAF00F939D22ECAE4CB3FC6CC6E98A762 +:106870002337BE1235932067FCEDDA785E9533AE90 +:10688000E89C9B863F3ABFEA76EB61A07FD9171759 +:106890001C073F654FFB9A79200FBB4B44272E7B8B +:1068A000240870E8ECDCD92C55F7DE73D29EB121B8 +:1068B00045A2EC8B9717DA69BB0E9EB76D36D9A44B +:1068C000589CCFA18BA4B1F36B4E1EF3CAB889F2CA +:1068D000F0D77CBD974DC82467BBF07715E7DF91F3 +:1068E0007C7AC2E3C5601CE97C3E2037A14CF5DF11 +:1068F0009754067FD9A4742BCA1D91649EA6CF49D4 +:10690000DB08DE93BA372AA3FD0DF91637C13AF832 +:10691000492D61F7FD99580F7EF84E8C3FA6D16F37 +:106920000D59AA0EFCA6C07EC954B85762009F2A12 +:1069300019C4678C0CE3538388EFD4D1FB243B3517 +:10694000EB4AA0CB5AC53A17AECCBDF30B83AF428E +:10695000BEDB952AA3DBDAB0F965A81FA7FDF5F029 +:10696000BE4B32AF02BED82A995F51912EDE738999 +:1069700063F159E9146D25D0B5D39631CED8A96A03 +:106980002B20AFD2BE9BE5EF379FD06EDA0B71871D +:10699000F532BBBF65C94B6CDD48D24EF0DF4BD73B +:1069A000D2B580F8D50E819F22733F455ECBFC2285 +:1069B00079B1CF2FAA77D94D940EF70B832B20CE28 +:1069C000BD41FDCC5289FA05F787077F0EE5FBD460 +:1069D000A54BE1FCE1FDA5832B203EF9847A0596C9 +:1069E0001F1486B17D41BD8E95C3C3D87E50BD8135 +:1069F000954B87B17D57682DC633F3F7307EC81F9E +:106A00000A57C2FED1E4F5D604F77DD4930B3F5F5D +:106A1000087A7CF27AE30710B274DE67381F4FAE53 +:106A20001DC4FAC87AEBAF21257572DD005954F701 +:106A300029F45B45FB057F14FA05FB42B73F9D7EB9 +:106A40000759BFF54EBF2FA6C54FA5DFA3ACDF3951 +:106A50004EBF2F189F4EBF7B59BFE739FDEECF07C2 +:106A60003E957E7B59BF539D7E7366D17E53EDDE8E +:106A70007E7F09DFD375942A54B442DC22556BCC57 +:106A80008350578AD21DE2909FE0FB67617DA4AAE4 +:106A9000E8F7F4558AD2F7137E1F8842FD20FF9E47 +:106AA000D2F1137EDFAA42FD51FE3DA5D727FCBEE1 +:106AB0003102F57BF9F7942E1FE77B9837BEEFE59F +:106AC000DF51BCC377951AD32B8736C8956E3BD45C +:106AD000C91378D0775FA4F394A34CAE8F8E5B116B +:106AE000983E13C6D5026B705F6D3BD6A7766502E4 +:106AF0004B81BE1FB27EF21B0685792AF0C9EF05D5 +:106B000068FF0755E4F6421EDB9F7B37B593A9FE6D +:106B1000D1F376C0C47909FC3BA112CEFD9CB3D65B +:106B200098B8C135AF730ACF08D3A3F07E40807107 +:106B3000CF510D02E3C1FBA9D1D17EA17E35D46B2B +:106B4000A66F3D73B8299C6B503F75B2F38D23F04F +:106B50006A018017E83E3DEA9A17856F4D11F8E407 +:106B6000A4173EB9701381EF640A17EB9FC103EFBE +:106B7000013E99C2E38EA33BCFC34322FAB91D5510 +:106B80002CDED431F4353CFFDFD12BE810EF6D9FC4 +:106B9000B8CE396F85E5B6E89D76733D9C2713091D +:106BA000E8F1F640861C027DF18048C00EDDD37D01 +:106BB00035BB0FDB77DFC797381D9D670FDF3718B1 +:106BC0006B9FE0CBD1526C17B9E06E7DBCFD8405A4 +:106BD00051EF7E42E4FC16DD6DAF7D392A78EA7B09 +:106BE000CEFF86EEC6C397A3CC0EF8429478F60B80 +:106BF0004A2E1CA31F5E7FEFCC3BF5BFF0F4C3CE43 +:106C00002538FB09F75EF88DE2DFF3FD84CBFB1E30 +:106C1000E984FD9B2F47993DD673DE9DBAE52A97FF +:106C2000CCBA1BCB9D15ECBD7FDE67DC3356A5EFE0 +:106C3000F2F8FBBEFDB407E0FF55A0BFF867D1A294 +:106C4000FB6A7C3F1992482AC05F54311EF2813A98 +:106C50007D37C451814F603FF2F12A7D0F949788B0 +:106C600077635CF27B5AF59C90EB1EE44DDC8FDC85 +:106C7000057EE4343837A573BF92EDB33D3EF47A18 +:106C800004FBAD923088BA13EC4F5ADFBCB0757B71 +:106C90000DE523E37166472E117B274EA3ED9E3849 +:106CA000C8E2B81DD9DA5DF07D2EABE3735FD6D8AC +:106CB00005FD2E810BE3E9770F2719FF2E11D7125F +:106CC000907B07E0773FC0CFABF2C66942A419FDC5 +:106CD000B6D0B11B0B1157DC977EF705BC3F97C2AE +:106CE00005FD546AF676189FF4B37B529688A72365 +:106CF000EEFC327FBF32C9101BEE953B9829A09F56 +:106D000047EDA045B4DF27948C06FB9DCD2B7F1665 +:106D10002866EF8ED94F7F06F1EBF47340E5FDDC7A +:106D200054267EA27E9EF2C2D3A7B1DF3DF17F3F03 +:106D3000563F7444138E588678DCEBBB51764F0D6A +:106D4000C51FF2477B9A1C1021FF403CFD05BC6724 +:106D5000FCDC049ED1F8B8FDFF04D61DC4E1C4F7E5 +:106D6000B6DF46E1FC5E81D19B9627DE0E747D9CEA +:106D7000D175E47BDAFCAB73C6996FC13BDFEF25BD +:106D80003FE97C5BD01F0C1DFBDC51B81FEFE12AF3 +:106D9000F63DE1F16C99AF27F9716EDF8EDC63E1AE +:106DA000EBE713DE63F18F516F9C9BF235DE63F1ED +:106DB000C18B22E6053BFAD3DF8F13DFEEC9B2FDAC +:106DC000ED8D7CDD3D45FD6D783EC9F7BF1FE5715A +:106DD0009C87601DD2F2312E8F1EC91A84DD43D4E8 +:106DE00080EF170E6D08C139AAEF3ECFC63D870C64 +:106DF0005442991C9131AFE1FBC24025F827441958 +:106E0000A884F336BD3C7EE0C0D33BFBB94A902753 +:106E10008F07AD4AC8EFB037C4F47D741E877E3447 +:106E2000F13B90A731F0B48CFB2F0776C8E7403ECA +:106E3000F7F70E318C9EE2F06C8032D07D36E38322 +:106E400043C7FFDEBC05D6A540F01EA1872F7A09F7 +:106E5000E34B472E7A4E1F2F8E7F8D6A9D0239A7F6 +:106E60001E647EBF6A68781EEFE3F7FF12E69DF7A7 +:106E7000450BBA36FE38C1D845678E73E87808FDF1 +:106E8000E73E3E8EFA143BA74BFBAF84FA234FBF7D +:106E900084E794FA2ACEDA7FE978FD3F319BAD8F03 +:106EA0000397365F7B0B9D57EF33324AE323CFBC0A +:106EB000742DACC73E8A7FB083FBCED3FE0CE6A90F +:106EC000CE8960FE7C9171A6C45CFA64749C49E72B +:106ED0006C84EF816E4829EB5AB8C745AD9731AE47 +:106EE0004FE960C2B80EFEFAA60D5D0BFB166A6B89 +:106EF0004C87F8D18167DEAA2CB61F4DC7AB8B1526 +:106F0000A18F1F6F0F43FFC037B47FD8173E72E8C1 +:106F1000A54AA0CB1333CF8AB78662FD7F3F385C8A +:106F200009EBF9FB4FC84DECFE87AE8970CE563E9B +:106F300062EE65F1230BE56E506BAC073FF64DAE8C +:106F4000D7672B6913F40A65792307F743267DFB7E +:106F5000835213EA95925A9F5C3A768D09BF4FE2AD +:106F6000E819FF77331562029EA653FD657BC6675D +:106F70007EB452E56D3F5D49DB701EF482B3C07193 +:106F8000D1E019701422E3C071018763D61870CC68 +:106F90003DEAEDAF524B17F07707697F4F6B67F60D +:106FA00047A4531857918F10BC0FE2FCBDDEFAAF17 +:106FB000C5CA987D4AF1A3BAF470909A055F2D7303 +:106FC000ED0FFAFAADE9F5C2716F8CE98FDBDEB92E +:106FD0001AF9667A9A0C407EE85878F17F4FC747D5 +:106FE0007C8E8517E2DBC72452339BD7E310033C2A +:106FF00013AFD44AF17C3FD63C24F58FD3175B63A3 +:10700000DE7B434F901730AEB5A7FB39BB8DC73F32 +:10701000F17E0452B0611F40E6F97172CD73F67EC5 +:1070200090E7968A79418EFEA0FE04C6DB0E0F4DD6 +:107030002801B97400F248C6812719B5F681BC2031 +:107040005A72977B5FC9B91712A6087256E6F75CA9 +:10705000CB35470B0017E1F94972B250C0DF1BE294 +:10706000BF8743FBFB1EAED7AE9EF7D97A1DE9471B +:10707000F1F6F30F64A3B71F7263BDA79F1FA2BCF5 +:10708000F4F57304FC1CB467995C115BE45D987FB4 +:10709000463B827B496E0B593F8EB9E2B5A2C5CE05 +:1070A000CF39F97F7D90FF27609EDFCAA9C0F74ED8 +:1070B0009E5F0BBBEF634275669681713196E7E781 +:1070C000E4F7F9CF093B4FC77EF7E7F939F97D4778 +:1070D00086E616E0F72B3E2888780EC8B193BBE011 +:1070E000D3F908EF8BE3C1EBE42BFAF312FD703A0E +:1070F000DFFBEF01F33FC7829348FC3E168ECF16AD +:1071000032F4D2ED305E15B39B910928926F7BE289 +:1071100073284F425A35CA13C7BE69E3F60DF527E7 +:10712000308FB703EE264EC1BD2DA6C76E13ABBC84 +:10713000790DA2E65D3F22DCCC0BF762274D8FFD77 +:10714000B744BC0ECFD3746A12F61B82DF452AA265 +:1071500037FCFD11B218ED4089DB819D8A89F6B7B5 +:10716000230F46EEFB4EF0DF0374EEF7F5F5E35F19 +:10717000B791F8F876DE58F8EFE4F65D1BDF9FD3A1 +:10718000A9BD0BF039EBB79DDB7B7215DBEF16F970 +:10719000D3F9FE8D18F3BB9DA704F5301F7DCE59A2 +:1071A000EE47657E5DA5CAF2A288FE334FFEEC1B5A +:1071B00031B1E8F9E82D253119E4C87D25313CDFEE +:1071C000F0DA8610E69D1FF7C5790E517313F86843 +:1071D000A87B069E1F3FDC1D8AC1779D774F8DB926 +:1071E000EDBBA1AEF1E5D12F78DEC6FC38DB1F5A2E +:1071F00008BFB34C9F96444507EDC7BA7BC776F7E7 +:107200007E9C7537DB5FB2F83968EBEE6BF6DA29F6 +:10721000F73CDA3DFEB5FFFBD17311C393810E67D6 +:10722000BB1F952432F8BB3F5D9282F75BDE25DA07 +:1072300069D807707E0FFA642063E3EFB211D3447C +:107240002C9EADBFE4A7DB9F737FABFFDED6AE2ADB +:10725000DAAFC8D60DFC0992F79EB49464E1FDBE86 +:107260006D49764F1AA9356C94D72AD38F624E6038 +:107270007CC3EF490BE901EFBD9EBEFBD1C063C0EB +:10728000FDA417D9BD5ACE7D69119E470FF12D1C63 +:10729000C7F73B5A21F2C502FBDD2CEAA7D2265DD7 +:1072A00094AF8B9E2FE5F783C21DA770EEC0FFFB46 +:1072B0009F67F2BF779CE455E9F1EF8FF4FFBE972B +:1072C0002AE96FB9E232637F2791B75CE711FAE2EE +:1072D00084F1D7E98FF03E482422DE17CCF4C9E1CF +:1072E0002CBB67E48464E0EF8F9F70F62D4BC911CF +:1072F000BCFF551074D8BF31B52BE2E007982F8A38 +:10730000898093A4978038DE32B477B7C483FC9C1D +:10731000D7A008FD9ABFD516433C54FC16DB0F25B9 +:10732000315980BCB285BF35F0FED94BD5A620AC13 +:10733000E3BF7F7C2E8E7BB3BA5482F2AE38B39318 +:107340007FF5D881796024B73D112505D40F7919CF +:10735000ECFF9B9F1271BDDDF2FD28CAF99B9FBC1B +:10736000F5A1CB69BFC20FA3EC9CE593373ECCEEF1 +:10737000996D43786EFEC195FF0CFAA6ED5F45BC92 +:10738000ABA96D03931BB786D83D4DC351F9A13D01 +:10739000AEF5EAE0C3292FD6661F812B0F6FDE9F63 +:1073A0009A2DBAE4EACD12F973C82F31E973791135 +:1073B0003DF06C9CC9C7F7A2EC3E1261FFA1EB71D6 +:1073C0009E03D7E0BC05BA02DEA4F8F9219F2F6D19 +:1073D00087F3B11F15F290B7F4DEA3029BDFC0CC98 +:1073E000DDE1148CBF5B5E151D95A314FE3F87FD88 +:1073F000ECC5FB67B757D6C379DF540AF627167D6D +:10740000FF09947BCEBDF4B7C13FE9FBDBF7BFBEFC +:10741000F4DF800E49760FFD2DDFFFB0F3125ABE68 +:107420006591327CB901DF8B9EFB496FF9EB5FCA36 +:107430007F43E17D97DA77615A7FFBC1A0E7DCCD1E +:10744000BB836FCA00DFBB14851AB52B2E3BE53D0D +:107450009743C4D3D8FF0953C1BC18FFF770630F1B +:10746000F0C9ED03DD78FFDAED4FFDEAFF80DCB80F +:10747000DD77AFFDBBF08F8A33F5DFBB71AFDDBACF +:10748000564CC70B40F7FD138AEAA1917B3AB95ECF +:10749000B9E589130FC0EF0DBEF7E4BF3F00BFFB96 +:1074A000B7F63FFEEF03705F15F9715803FBE6F680 +:1074B000C7DE7CE01B14FE5F1D0C05806F6E7EEC4A +:1074C0009D57BF49CBBF7B664619EC5B4B1A8B338C +:1074D000FCFAC0EF27C2EFA5AEFFD19249C09FEBE7 +:1074E0009F5E34693CFDF26BCA5F79CA5FFF1F562D +:1074F0005AAAC100800000001F8B08000000000095 +:10750000000BDD7D6B7854D5B9F0DA7B6E7B924948 +:1075100066274C864932849D9040B00177202AB678 +:10752000D14E225250D411B10D16ED10EE081A2C86 +:1075300047D3A3363B096008131935843B0E682CEA +:107540008AD4E8A796D3D6AF03528A9EB64FF07876 +:10755000A8F6501B526B6D1FABA3F5D6F3E8E17B89 +:10756000DF77AD9DEC994CC05ECE9F2F3F58ACBDF0 +:10757000D65E97F7B6DEDBDA73F62CFC7D95C15F3D +:107580009CB18B18D30E4B8C8D85EA8F45C942B9BF +:10759000929FB1DBF0BF1A63EF3CFD8953AE61EC03 +:1075A0006389256DD5F0BCEF73A7EC63EC78882573 +:1075B0005921632F3EFBBBE3FF0AF53F473C4D2EAD +:1075C0009DB1DB0F3B060714467F67E95FA3580EAA +:1075D0006099286650DEF6EC0DD75D5683A543878B +:1075E000E1D9ED2CB951F58C7CEFF6577FE764D0EB +:1075F0004F955932F8950CED2CEC4D9442F9E4A6D8 +:10760000F76D53A1ECFBF3AF1996CC3E385029FA35 +:1076100041FB9FF13F9732D67CDAFDD36395C3EFF0 +:107620004F50737C6F7D09FE7309BBE4AC0DF6F718 +:10763000F8026F021B9F1DC3705F67059CCCF2931D +:1076400016E5A7C71C8CAD79EE466FC433B2DD2CAE +:10765000DF6D819DBA86EBA3C17985C4D795F48689 +:10766000A6ABD0FECE33D94600F6FBEEEBAEF85C0F +:10767000687B77C35F4A580E636F3B92B7201C92BA +:107680002FB8D4FDF07CD10BBF728660FE779F3B94 +:10769000E9D4A6D07672A58BA1CE86FE5E6150BFDE +:1076A0004DE295DB1FCD49B872B1FCF3F1FB109EA2 +:1076B0004536E6453CC4AF9FADE5E2F20A68BFB788 +:1076C000C5018EB9581E992F4D1D09EF558008DC54 +:1076D00087159FD20CC4E39959CC333A1ECD7DABAC +:1076E000B8EF4BA0DDF8BD93F946C72BECD4199E3B +:1076F00082E345395EEF79BB04E9EBFB9257936A6D +:10770000619F8EA4B308F6613C6D537BF591F866DA +:10771000B685DE4555586BA3F5A6E3279D0E96A4C6 +:10772000D101BE8FF835E1321A1DC00A182BF8229C +:10773000FBF9DBE0355FD568DC74B8B56E70859019 +:107740000EDEA876C55DF0E88C43DB7617CC9B7C1B +:10775000C9C1F6C32BB74CFB8343CB19B9DEDF029B +:107760003D6A167A8C34BFBF612CBC17B9A7B4DA56 +:10777000C686E973A8FD1E1BD32CF0796F1C93708D +:107780007FB7EF75C40D80AFEDFFBA13BCEE8EBBB3 +:10779000A0BEEDFF9C7D0CEBEFED7531ACFFE1B9C8 +:1077A0001F10DFFE41624D2C8FB1E57BEFFAF847E9 +:1077B000D0BE6C37CC06F8BACDD547ED6C316BEA4C +:1077C0000579B23C3B49EF2F7FAA98B5C3FB2F3E0A +:1077D000F7AB5BEE86FABB3FC9D15DB0AFF7FEED0C +:1077E000F65B24A8AFDC0EBB96B0FD07B751FB5388 +:1077F000D90CB605FDFE7039B3F0E3F2ED0E6DC0A5 +:10780000B2FE95CCAE0DC117E9C35A8725DDDAD794 +:10781000D58F747F2B3EE7EF496705EF201FDD8A88 +:10782000E504280F7B43EEA929FD68BCDB5DC93B5D +:10783000750FE1B9489E41782E427CDF7A20751D94 +:107840004F08FEB9DD995CC6FBC78A385DF4D37B6F +:107850003F50A594F6F4F7CDFECFA96569E3F0F7A4 +:107860006F73B1A6BE0C72E9288E5B80E37D3E2962 +:10787000753C433C4F9F873F7F3717FE03705EF395 +:107880007C0EE17DCDF3BFFAF8BFA0FE0EC206F07C +:10789000F84E41FFC777031EDFD96363860AEDAE5A +:1078A00044C92E94534FBBD87EE8F28E2351925F89 +:1078B00035BC8E353F769F417E1EAAF701F6949126 +:1078C000F3B6B734F4BC59C1D8FA96089536D6F455 +:1078D000F0800F9BEDAC174A3B6BFA1EAF8F55B192 +:1078E0006ED4433BCA03A7A2B6C3BAB66503326BD4 +:1078F00090CF73884FFEAAE6D1B88C355D8872654B +:1079000043CBEC87DE44FE550CA6FA713C46E79C5F +:107910009DD9DF4238FCB7C0ABB94EA723A2EAB06D +:107920000FA7C4C2085F873DD2510AE33B02BE6A7B +:107930005831DB18981742FA8C56A9C44F9F209EE5 +:10794000613E178C8F74C38E75339C5709DA3FB034 +:10795000F2B987C542CFA3DC8073740BC819566E89 +:107960006907147BAAA06EC18BD307EB4EC1934766 +:1079700025B925E8F847921EF818E1D0EA527BA114 +:107980005CC0620EC41FB355BEBF05F6B16DF1D920 +:10799000890355F8BCFBCA109E0357043FD8327EBA +:1079A000789F0B7E7C5FBF948B65E1623C471778C4 +:1079B00026FE1E4B40B69205FD5F94585F27943318 +:1079C00095BFEC7A733AD41DAC01E1710CEB638680 +:1079D000C73986CF619E76C6663F0DE58F1CB10D17 +:1079E000880F63A954DD0BF8B8F0C7E11BAE8175B1 +:1079F000DDBCA2621AC2ABAA2F7CF514A82F5C31A1 +:107A0000619A0DF0302E8FD3EB31475FC105885F4F +:107A10009817F7730B4B3A109E11A63A09AE426EB7 +:107A200035325DD4E10FFA7F73CD847867E9C8F70A +:107A30001726E2375E035D6E3E16BF068FCD5B4EA6 +:107A4000247F8AEC13E953676533CB7887F5E3D954 +:107A50006CE47800DFED0399E0CB7C1F207C75A6F9 +:107A60005C61E0F3A505FB3BA5D1F58305DE86ABA4 +:107A7000D8D473B40FC19DAF271D2FB0023901F3C5 +:107A8000BEBEC411C779DAB22FDF8EFCF05ABB4BF1 +:107A9000B5C1FC7FC12EA057DCC4FA085EAFE7F683 +:107AA0008CC375D603034897921CB93981F060B92D +:107AB0007A27F0CBCD6CC0014CC6BE052486E522EA +:107AC000A651B9988508AE4B596223CADD8D6AE488 +:107AD000AA3CC0CB6DB6C8783FC23BD85F8274CD9C +:107AE0007E9E595F1AD67F385F9BF576411F4C0901 +:107AF0005D7C7D0EF2DE85751E90B3DB051FBAEB53 +:107B000039FF0412CA19D44396C61ED89542F7917C +:107B100099A121BE284330C9CC037C1C102833DF37 +:107B20004BEF67CE1F68BE82FD0EE877535EA8312B +:107B30002FC3BAD2D7BF268FCBED467CCF42E78D7D +:107B400011CDA941FFC6CFBC217CCF5DEFA07E8BBC +:107B500040DC7079133A8E74DF18614D9DD508F6BC +:107B60006D21DCA7B9CEF47D3576DF2745919E42A5 +:107B70008A5EA1FEFDFBFC6E9E9DE637D7CBFA8E9A +:107B8000D729179FFF3D1672B02FD2CF0D8484FBEB +:107B9000EC916301A48FC6E6769A470730D1B99E6F +:107BA000EB8CF766A0FF41A73615ED869E89FED2C5 +:107BB00036E027E0DA08C26D304B9B6AB73ECF173C +:107BC000CFF3B5A98AE5B939CE2689CB1D933F7A83 +:107BD00064B6E219ACDBF5C03CA4479FF6C62FE1C2 +:107BE000BD25720EEB847250C8A9CA772FB8E55F25 +:107BF000516E1B53353908E7839D11DEFEDC726040 +:107C0000379D072C34711ED0E31A159E43FF259D26 +:107C10005F9BC8A0BDB9E36B131B2DF399EBF8D1A3 +:107C20008385F5C897CD8CF71F545EDC8E72B1D179 +:107C3000FDEFDBADF2703087D3D527BFF99AFF0295 +:107C4000E24FF569E453B33D91C7E97D099E2FD01A +:107C5000EF8F2DEA8E9970EEFDA89E7D6B1EF28946 +:107C60003D3491F6D13AA50CE5EF92CEFBEA51FFF7 +:107C70001D94B4A7DDC0BF83BD9B79BD5A9364A892 +:107C8000573EFAF497100F39AA2AC985D88F3520A4 +:107C90007C2A1F3D19CA9B3A921F15A8A37DC78253 +:107CA0004CEFD5D098E0F2A3E0EB0702A8479F1471 +:107CB000EB2B982A135EB602BCB1EC1478F8459E03 +:107CC0008DDACD7E2785FC5EE48D9C44FE0A85C25C +:107CD0008B36F8F0FC637AA786E76C98CEC5AD4E7C +:107CE0001051F07CCB64A7D626215EFB8F2E4679FF +:107CF000FD9F590CF57AF7F8FEB646B48740BF6889 +:107D0000037EA8DB182892A09E55EBD4F15C7F2F50 +:107D1000AF94E659113FD9867AC844901E361DC7E4 +:107D20008BCD2A82719ED8C3743C4F0A8067FA09B2 +:107D30008E03B988CFC9CA0105E5D6BB95F55EAB00 +:107D4000DE38526EC9CC30E99E14E52C6628D67A0E +:107D50007E5ABD28AD7F594A7BB1AF9FF4683BF492 +:107D60006907F806EC7D47104F81854C6D079971C6 +:107D7000A8ADAF8EE0B18AB1FD79288C13545714A9 +:107D8000A6B6021EC7316887FE9E66A61AF0FE23BD +:107D900072DF6C94D3723E87836A4FCE413806D827 +:107DA000617A0FF838BFBDDABAFFA482FB9DACBC84 +:107DB0009D1B063ADF7278BA8AF5312E7D25F67F53 +:107DC00017F10043753B126D8DB88E175CAC4D47B3 +:107DD000FAEE27F8B230C74BB713F004F5CE396E80 +:107DE0006AF7390DDEBFD44EF54DC80740FF6EE48B +:107DF00003E08729B5C7EB15E85F2D2B7DB8289FD9 +:107E00002BDE908D786D85F1A1AC5A6FB4A13EFF49 +:107E10004EAF9DA11EDB29C51A703CA3D449F4D8EE +:107E200091932A974BF3397D95E6CB42CE7ED6903F +:107E30000DFD57182EE2F7D081D6E3484700FAA689 +:107E40004E95E8B0341FFA395888E86E457C2D8B82 +:107E5000C0782F0E7CFB67E3701F1A233BC35D12B3 +:107E6000572E47F9FB431BC3790F8D8B11BC3B1B6E +:107E700098DA568DF4F28A8CF5FB55A6A25D035074 +:107E800095116EB7417B27D6EDFD47510FBCAD7BF9 +:107E90001AC37375CAE97F233C9CFA3A181497A257 +:107EA0003F65606331C251F3D0BEDC654DBFBD1785 +:107EB000E1DE5BA6B7C263B465487EC6417E021EA2 +:107EC0000E32E3C0DD12CA8DBBBE85CFBD41ADCC45 +:107ED00006CF678BFDD705078EDBE0FD2CC3CB5C9F +:107EE000581E3E42EB7501BD3058EF27B0265ACFE1 +:107EF000935971A40BD76129F155EC1775C6F13C64 +:107F000067337C746ECFAC64F47CCBA62CD297B76D +:107F1000540F94A05DFAEEE74D8130B75348EE95CB +:107F2000079D0919E4C78703D38B4E30848FA05770 +:107F30003753F7C37C5B6F3C4EF5FD8D4C453F914D +:107F400089AF780BDBB39EE42B2B42F93CF4DC01C8 +:107F5000FC0F70BA31FFE2393E5847DC0D3DBECC14 +:107F6000D89EFC459B0C98B7F33958FF85509AFA78 +:107F700042655CB9DEF2FE2DF9528A3CEE748B7ECE +:107F8000E57105E91B465470BE4F1C0067F437D5F8 +:107F900032BD0DE0DE097844FD7702B0A70D6054D4 +:107FA00077781F1BF050BBCCBC08C7B5A89C03FC5E +:107FB000E22C0CE3B92A930CE5C6CCDAA600F6BB9A +:107FC000AFEB4000EBB17C8DF0D0F97992E0545EDC +:107FD0000BF081F36093B35FC673CE781EE429E0A3 +:107FE0006BCAC4271AD03E77351FDC8DFCD09E2F7C +:107FF000EC117B3C80FBD9E414F254ACDF25CE9F1E +:10800000B67CAE4F7C57D0F93D62BF40CFF7E4431A +:1080100019AA02C15D437295F440BB724BA88DE171 +:10802000F82AF7D328F100C201FAB721FD87AA6226 +:108030002BF65BE5B0E80F700AA03CEC9C7C27D1E6 +:10804000D9841F4A1AD259DDE1B504B7AC5ACE1F04 +:10805000E7874F3C3060E1D3CEAE4F03D86F0BD2F1 +:1080600051D530FD94CFBFDF5502EBF8A892AF6336 +:10807000CAF3CD814806BD6BC5A73696986EA90B8D +:10808000B8D40F9C2C2B41F971A8681AD9FF67F658 +:108090000524787E349FEB6947F219C10BF0508FAD +:1080A000F4685CCB18FA1998472FBBDEE21FF9BEC3 +:1080B00080A7097FD03CCA6E9C626D77F071B24494 +:1080C0007BE528EFE7423BF249797A3B5F8FC9BFF6 +:1080D000594146702D9FFFEE463C6F3F02BE4579E9 +:1080E000551704BC207F3FABE8B81FEF107C93040A +:1080F0005F130EAEDA01273E9F79781FD1E10A3572 +:10810000FE5A07CAAB5A27EB65086783E07ADFA1FE +:10811000AC6988D7E681BAA38B705E90DC782E9A22 +:10812000F0A91F58CBE97872DF0588B71E89D35DA7 +:10813000D09E684578C98A9687E74DA3F0276C855D +:108140003DF5937E15A2F37250D063C5F637AF5D4F +:108150008AFC0F9A06EEE3DD5A99E4D707CF4A71FD +:1081600006FBDC7A6FF8752FCAA34A7EAEFCB9E134 +:10817000D5DB705DAE849BFAB90E4871B744F281CD +:10818000845FE7BD5CFE19FB24D21F5D465308CF18 +:108190000D6D7D643A9EE348B176BF9093C84FF36E +:1081A0004F1DDF83FB8F7854179C2BA506CC9FE2D5 +:1081B000F749901D337861441E837E0E16BFE52873 +:1081C0008E1B1C7022BDC963B81EBBF1C6AFB7CDF4 +:1081D000C1F55F2693FCDB7AEFC01B137C282F418F +:1081E000EFC079120B5EF762BDD6A9B92D7AE8BB54 +:1081F00087277833D1AD45EED162B7DC4BAA01FCBD +:10820000FDEB4B094B7F97910C852CFAC747F97C06 +:108210003DAEF5F09CE831497C09E776C02A37B7D6 +:1082200008BD2B54A31D1E207E56AB918F1A37DF3D +:10823000BC00F161F7A9D508AFB3024F8BBCA1B365 +:10824000282FDE6E61C9F5A057BED3A250F9A7163C +:10825000954A93FE65A57F16E27FE56A5542B9B857 +:10826000C6CED6BBA631963726954FCC7E2B5684EC +:108270001DA2DF7C573EF64BE517B3DFEA2618AFA9 +:108280009AFA1DE3FD841F599C3F2BE35272BDC532 +:108290002FB2A6CF9D5C6FC1E3AD07F252EAA6FEF6 +:1082A0000ABA441CFD736EDE84FE191AEF275323AD +:1082B000E311DFAEDA7E6721C0412B1F9885EE9572 +:1082C0002B6D73BD289F5C8CEBFDE9F8DA0AF82270 +:1082D00078B42854C65B5486E7D6DB2D01AA3FD478 +:1082E000A251FD923142FF90C14E013CEC13F83097 +:1082F000C7992AF667F6430C3A6BD0EBC8E5346AA7 +:10830000C4C8B70ED44F802FEDEB3792FFD16E3833 +:10831000C93F06F2FA125CBF5D6D223D05FA33716A +:108320009E915FBCC719F9CA18187F55B96260FFE2 +:108330005507DE77A2BFFA7E279743EF3A52D773ED +:108340008558C71563383D1CC9D338FC033ED2F3AA +:108350005D4183CF23EACC1E290967F0235BE03E11 +:1083600080F106DF48B85F8BEB5A133B330BE1EE2D +:108370000B3319C7BDD2E621BEFEB09691BF78344B +:108380007E31E16EE221DE12A1F2ED96150477AFA7 +:10839000D8EF432D4D54EF7186BF89F3796B93E786 +:1083A000DC7F44D0EF52517ED17D0EE913D0732C87 +:1083B000DA8D9AFE4827F98FE3DB1B89CF2E9EDEEC +:1083C00009B5A631CE8C7106C06313E2D1E133F159 +:1083D00018263FE091BCF01DB86E85C59E6984F1FA +:1083E0007C4A9CF4525FF981C412E4E70D8013D0FB +:1083F000837DF31F4BA05DAC3E2831946FBE703C73 +:10840000618775ACEE9618CAF3ACB99159E80FAA1A +:10841000BF30722F8E9755A94B38CF98B97D4E2B10 +:108420003E47B76FF83E075B34F2870EF951DBEC3D +:10843000AC1DCA375B2A1F42FFEBB6ECEF92BFB50B +:10844000D970A92E423AF7C72EB32B2AD2EF938EBA +:108450004817EEF3AE87E61AE83BB045D75EF8382A +:108460009EA605E12DF87CDF868D25B89E46AFF6E9 +:1084700031EA7BB082393F9F41E70BE97BCCF8F9C9 +:108480001C94778DD9BC3EB13BD469607DAC76A796 +:1084900004FD3F1C736A8E0FF6D1389EB72BA27D68 +:1084A000F698D0CE31C45F8EBCB714F413C3C8198C +:1084B000F639BC5F3B7BCB629F393BD62602746C9E +:1084C000477A711C25F64008E544368B1B85402A07 +:1084D000B9682F403F7B47D619E4CF8935912738BB +:1084E0005F72BAD60C46F05EA68736FBE0F9661FCF +:1084F00013F405808573CA2BF803F8E2692B5F78C3 +:108500006BD3F8C26074EE8CB6EE74B9F490904BF5 +:10851000663BC88317705DDA7CCE1F9A716E7E3819 +:108520002AE4C1BF9BF249F0C1DF0BC70EB16FB7A0 +:108530009087E9FD5F31CF0F2127830AB76B65452F +:10854000CD473DC36F033D03E071E4A6276EFA2AD1 +:10855000C063CC81896528277CB6F8AF91FED941EC +:10856000E734D46FCCF19EF8EB2345F3609C2C39B3 +:108570005E84FE7FF604B46B6827E885E82FA99A2D +:10858000FBF12D1AC0A1AA9CC52BA0F4C9897AD4ED +:10859000C7D933AEB25E15ED5B384F3D6897FA1719 +:1085A00063BF17C5FA9A596801DA910CEC481C3779 +:1085B000DD8EED16EBDF547127E9ABF7A5D9A5E603 +:1085C000382F9AE71BDB4D76A97DC82EAD0B35A65B +:1085D000DAA52F225D385813934A87E57CE198F09D +:1085E000C79CAE93242FFE51BCC078CC87EBB1273B +:1085F000D93F03CF6FA7E983539C1C9FAC9EA9A4CE +:1086000067EBDC4FF14823E0246F78BC6EA1771450 +:10861000FB4A53E425BAFA9DF9380EF7FB15A08BF7 +:10862000217FB8BDD8C7EDA0295943ED76D44B863C +:10863000DBF9B9165498A1C07B0561254D5FF8C7D9 +:10864000F67B17BE88FF6F67A497823E7F21EAEF13 +:108650000F5DE3976DA5297C3815E1ACCD751A281F +:108660002F4C3E34F90FE0E52C84F7DEBA66623514 +:108670009E1BCE58F5EB2EA86FBA4C2D457AFF8E77 +:108680008FD38D37B1A06D0ED9FB721CF5CD4DE3A4 +:108690001E54504F7FE8F3D8EC32787EDF4B36BD66 +:1086A0008D8DBE0F53EFBCEF5E53BE96BE6CD53BB7 +:1086B000BD06D72FCDFA4CB14FEF7AAE8F02020B29 +:1086C000894EECC04F96F3F12161278CD43BAF71FA +:1086D000165AF4CE6B7D437AE7B5088F8AED1F2AD0 +:1086E000B8EF4DC24E78F3DEE4EC32D4A74FD81881 +:1086F000B707E6BC81FAB5AF1CF46B09CF39382F48 +:1087000061DE4DF7F2F9BA713F93082D8AFD62528E +:10871000FDB9FE1F6E0A396AF09C8C4C90A1AEC563 +:108720005C0477D0F723288F0BC2A9F6806670BD52 +:10873000FFCD34FA1D0D8E9B04BD0EED7F72723B92 +:10874000E23D8E945402F5CB66EDC0FA2689DB3DFE +:108750009BAEBF93FC02F739D2F5736D5A2A9C3455 +:108760008A737DDB67DAF3A16FFBB89E384CB7E400 +:108770003F5486F562AAAB69F57F8CAEFFD17333A7 +:10878000FDBC843F19E906F8600BEE473BED4A3922 +:108790008F4C3E708EE7F2DE1CFF31412F8FF98641 +:1087A000F465A6F9C99F2B90CD58D42F4800E31447 +:1087B000AC49463BB7F298C2508E4EC6C008ACEBEF +:1087C0004B2C21A31E35850D50FD42DC1AD4ABC1C4 +:1087D000ECC6FA74962C71DA307E95D888F6E946A4 +:1087E00035F228AEF3E31DFD6F48F0FCB1ECDBBEC3 +:1087F00027C1F8DFF371FF8987E9A46FAB58C2BEC8 +:10880000162B1EDA0F8B3ADEB1C6691FB2870E72C5 +:10881000FC05D5B7B2ADF881312E263D5FFCC5050C +:10882000DC81362C7167C740DE625036D883A8875A +:1088300001BD951FE07A41FB6989E28EDDA8879131 +:108840007EC6B87D7C138B639EC49812FD8C86B85F +:108850003CC5FD95C0B7A5488F634F67ABA4A7DAA9 +:108860009B2EB9C1C2BFEDC047090062FEEC10CB20 +:1088700064B7DA9CFA80817ADE6917C917D0EB4EAB +:10888000E0BEA4DCE64903A457EA0CF1987FA1F608 +:10889000BE4C7ADC9AAB7E8E4EE649DAD358B729C5 +:1088A000CBAF9A0D04917F09237BF794EFF697D114 +:1088B0008FF7AA4F23BCDA40CF75208AE7C7689CA0 +:1088C0009012921C3E0C4F733F90F9FCCE9AD07FD1 +:1088D000A2DC7016AD28E47A73131374F5077CEEEE +:1088E0001274E50A72BA32C73746192FFFEAB989FE +:1088F000F5001750AB9B506F0E35182C93DE6FEAC6 +:10890000E9702E9FC279EC6A98DEB77938BCD2F54F +:1089100028B37C5FC8ED43BED03B08AFF7160DDC33 +:1089200089F406F495C471562B91F12822EEBCAA65 +:10893000FF167CDE610FBD8FFD806E3EC84437435D +:108940007CA778281EB778887EA639D1EFB5E433A6 +:108950002FF997173327D314F2EF88BC96D0F1176D +:108960006AA87F18F962F1E939C77F03F078A3D8C4 +:10897000C630EFC8ECCF447F838566A17EB278AE67 +:108980008BF868B132F7F81EF427D629E44F61312D +:10899000D7701E5059CAFB29F931B4BED291E333C6 +:1089A0006BDD96A9CEF92BFDF96225D7C89E9A6991 +:1089B0003C5833F0CD9221B9C0DF1F94FA2E403BD2 +:1089C000A1BC20765507ACFB607E7F9102F589053E +:1089D000DD9DEB6B012FAD9C1EA17E9511C4BA7677 +:1089E0000BFAD596D8D93187458F9852C0E5F194C6 +:1089F00002CEFFD06E60FB64AC039E30A610843ABA +:108A0000DA6841D033DE7C72DA2F2FD046979B8B09 +:108A100063675D5A26BF4588693E809B64EEE3B874 +:108A20006EB86CC3713127D03B960AFADD27207EE1 +:108A3000FBA8F4B07E2A73412FC45265AA84653E18 +:108A4000D3A9F4B130957ED6446580C5A82C627D4B +:108A50005406593F95252C49A586196B963C8A32B8 +:108A60008CE042BD8285A83C54CAEDC1C1563B434F +:108A7000BF31D88764071A6D2EB5DD477621B5372B +:108A8000831D88799FAB0BCA687F636FB693BEF472 +:108A9000E1E971711BE18DE7DD8C9037CA84DDEB74 +:108AA0002DFEDDF6C7958678D5307ECCE7AB055E2A +:108AB0005617083E6BD55F8BE0BA1E5774CC333A1D +:108AC00098CFFD4DC3FD79BF55E2BDF2F997BF8147 +:108AD000EBF9C8C8D550FF180D5FA3FB9BAB4BF05B +:108AE000BC1914FEE6C133752512EA115D3FB800CA +:108AF000FDCEA04F382530F6DE7CE0576524AF125E +:108B00004E867E4A13BF36661FB0239C35386F2BC6 +:108B1000C5795BFCC5CF5BBD20745701C0F5C4F7B8 +:108B2000B328FE744797447E14D0CF36621E48A304 +:108B3000B027D2CFA50F7DA1EFE27B267CCAE7E765 +:108B4000328C9F7EF464514A7E4AB4809FBF87CAAC +:108B5000B4DBACFEE629CF2B84C7DF758DDD8F78C3 +:108B60003C1F3C7EF70087C787BEC89602B22B35F4 +:108B7000E2CF13DFBF602CFA9BCFB78E3DFFE475C9 +:108B8000203BA0FC34E5C5C1CBF5128CD32C89BAAF +:108B9000785E43ECCA90155E4B62DB58733EF13D44 +:108BA00073E48F6CC7CC2494D3A6BEE41271720018 +:108BB0003FC5933F0C0EB25C2E970299E87D9BD087 +:108BC00027D70B3F6C7AFB86C6CE3FA23DE0D698F6 +:108BD0003609F6E9B61B931F833A0B3875B47F95B7 +:108BE000C48E2B72513ECF60D5D087B915EEC7FC2D +:108BF000F2DB036C91E55CCAD506B8FF58E4430C80 +:108C0000F197B05F378E4BB55B4F1570BDABBF8032 +:108C1000FBB102ED7A13C2C9AEEAACD1D22F9BD51B +:108C20009F40BC066CD5D4EEF08D68FF7901BE6F15 +:108C3000E37183B10B75B6D2636D9FD35FC0F59FAF +:108C4000BF49CFBDCFD3A4A8A8576BAED9E48F0B33 +:108C5000D6A4F8B50E0ABA19E61F2E6701CE3AE57A +:108C60000F0AFF243CA77858475E049544E60CE8B9 +:108C70000D0694EDA517073C967DB4E709BFDF67A5 +:108C8000D303F3ADFAD3E7D35F8BF886E3D2C77390 +:108C90004ED5631CFBC319DA3497C03BDA4BB97E5F +:108CA00029653D1B5B545DF86FF44C78DFF85DD0AF +:108CB0006F004E1B8A5685904F9C222FC5A90CB47D +:108CC000E1F80CF08DF87725FE7A14EB4EC43FB333 +:108CD000E03B30C0EDB651F0DD71E4F1583DBEE748 +:108CE000299B8674E3C4B31DF6E1ACD4F667C35286 +:108CF000DD7E2E27ED817802F5497B4849A23E971B +:108D0000C560BD29E7AFAA5BF1D2E130021827EEBA +:108D1000F8DC96316F6A40E0C5010AF49B16FFFE4D +:108D2000E4EAC8183FEA77CF1A069C34CCFEE3B0D9 +:108D300041EA8FE78BF92B0BBEDE70550E74BD5FD9 +:108D40006671CCA3F1B9FA67E740D9B3295BC7389C +:108D5000DA91EE79A5948F39234B46397948EA5751 +:108D600026A0DE7CA54C7A7296A087FB670D523E4A +:108D7000C49C809BC675C77E3007C7DDCC947ECC73 +:108D8000B3B97F75FE9C722863B5DC6B19AB920991 +:108D90006EC642395E01638CB9EEB342AB1E3D092B +:108DA000081FE178FFA77F59B014E76B66345F7D39 +:108DB000B34EEBDD2329A790BFB7DE7B6A07EA5DE0 +:108DC000BB5F5F4E7AD3CA20CF9FD9BDCFD910F7F2 +:108DD0007038E13C7BD6847B3BA5E17A49E5BC5EFB +:108DE000D4EBCB033CBF2B169AF7AB4A78AE553188 +:108DF00095C7C742369E4F3C54BAADF57478568835 +:108E00007CA3F4E7AE20A7DF1DCCA89B03F3757607 +:108E1000CF97114E15CDFD1497CC89CA215CE70E72 +:108E20007B7F02E7DF5113F219307F4E5558B6C3EE +:108E3000F39BFC3C0E54112DA37865A3E89F3E8F55 +:108E4000D96F873D5CEFAEC171980E186615300E74 +:108E5000DAD1E77B7F9EDF2ED6C9482EEC710C4815 +:108E60001867D9F31D55A2F5D4C415CCDB5A25E8F3 +:108E70003BB6446609E2938884E33E32541F907007 +:108E8000BE87FFE56303F1F3F065FCBCD8B1F09950 +:108E900056B427B6ADE6F5871D1C0F0FFF8B93F276 +:108EA000A181C22594F37DF644E172789ED3CD284A +:108EB0008FA3A28685508FF9971B4F2D585E83CFC5 +:108EC00063974AB89EB9A7D96498EF81B10AAD27D4 +:108ED000A7A69F21FF98FDD3F777AA98AF1BE8526A +:108EE000423A847E98AB82F350FFDD8E44A1DF02CC +:108EF0009717C672FA33E9287DBCAFF8B91FAD7871 +:108F000075BF8847F4913CC4A465F2EB7F9BE7ED05 +:108F1000C11E0DF49746D73A0F20FD6D167E9F6D4A +:108F2000F80AD2B5EEDC87790DF7055F0961FEC955 +:108F3000604D19E5F10EE91363F9BAEFAB9167E300 +:108F40003A1E76241720DC2A9A67D95BA149EED60F +:108F5000DBDEF4603F8EFFBD5DE122C4476F1E2B58 +:108F60004478C4D61E2F447CECAE3E4EFE94688EF0 +:108F700087F442DBF43B67635CD636BE11316A99F5 +:108F80008FF34FB71C2F423BE0A99EEB36AF0FA2E9 +:108F9000139191DEFFC9AE6F6C463BB4E016C0374B +:108FA0009D8B861BE73BBA70DE741DC68B879C1AAF +:108FB0009EE53149CA9A88FBDB6453916F076BA623 +:108FC00065613F7F54362681BEB02D62FA8DFAE985 +:108FD000FD87A28D472AE0FD8742810F48429434E5 +:108FE0003E85722DFFE657664F8271F2E7E413DD8E +:108FF000F81B98D428F81AF54254D5F039C05D42D0 +:109000007AC30477F29B32D68AF63B746946BF690D +:109010006F4E44429B03B4F42603C6DFEC881C4128 +:1090200079D75BA724311F6E77EDC0EBB6321A8774 +:10903000FC2930B0847EEBBD1FDD4FF6E1FD9FDAE9 +:10904000E87D23A434F5920463752B11AFBFF7902C +:10905000BDA70EBCDF82F123B5C162670971837EB3 +:109060000B337E817E68BADFC2D87F601EABDAFC2C +:1090700031D181B2884DB0811C55677E1C42F9AA5E +:10908000CA91FF7059E48CF755165F3615D797349F +:10909000B09D5DA1DC89FE77E0B71D28AFF7B676FD +:1090A000B9511FF7097D81D99306F24BF48549B474 +:1090B000FE0299FB7BA19DEEBDB0E9CEFD489FF875 +:1090C0001CF319BDFA5B0BD16F020A37E95BD5D8E7 +:1090D000CF37DC6F681DFAA9BBB19FF7F41F3FA71C +:1090E00032E44CB9DF7273A15BF86564E267F57432 +:1090F00036E5A9A8A7D7CC25F83CABDF4CE569F746 +:1091000019CABFB6BE0FF07F3F187E07F1FEF0BD53 +:109110004E8A07F94C7FF115DC5F8C7F7A0A3C059B +:109120001D605B196673F3FEFE191E8A0FDFFF5C7C +:1091300092E01992C05003FA7DFA58632BEAF93194 +:10914000AD9CFC17A01E850E407BEE1595143F3E8E +:1091500024455A09CF8B3C11C4B3BF36757F2568AF +:10916000F7C19A2E0E169AFE27F2D3F9B205DD004A +:10917000CE12B0BE658CAF07EBB25FD8F5F0DE154E +:10918000C152F19EEA46FA5BD231219FCE25B59FAE +:10919000F41D134F40D2CAF66954CE9E026520C01A +:1091A000CF11CDC30C6F3EC5A7E8FE4CAE8D51DE8E +:1091B0001CBB81789ED6437947AB35AD334F000851 +:1091C000D6B35CE2F3FF612C1FE78160D3C617E1E1 +:1091D000BD1E18EA1975B89FD75C37D0CF0C1C8715 +:1091E000A9DA4E6CDFEE22BA0631609C95D11E776B +:1091F000A5C065F7CC0F12985FDC18F130941BDA2C +:109200006E571A1F244398E7E879274743387B3382 +:10921000F823ECFEE1F91F0826E9FE5E97C4B407C7 +:10922000617E6FCDF1D978EEDF6D53FA31DF18F33F +:1092300074B4147B22D5EF31AE39950F1D6A2A1E06 +:109240005566A9C3FC4F8B7C6BE30E2EB7A307ECCE +:1092500042BE313ADF88334CF890BD9864184FDB3A +:109260002D19E19DB09F8BE4F88357215F4D93C981 +:10927000BEF0366D5C8BF4EDED7EFE2E2C4DB96F9D +:10928000F2515790EB49BF18CBED6B4FEDFFB8ACE7 +:10929000EBF5E58617FC3BE2B58DE723B53BD8AF90 +:1092A000919FDB9FF3303C179FC88B17DD01E3CD07 +:1092B0000EF2F3C11C9F55CE17FA39CFA7BC204F31 +:1092C00093793E65F8F563680F4D0C4A182F19F332 +:1092D000E22B32C6BF373FAB56D37EC4FDBE4ED65F +:1092E0007702CF5FA3465671DEAE9A7974DEF475CD +:1092F000B37CB417BBECE1A3B88EBEA826A35ED0A6 +:109300002CE8A93EAAAF453D6DF0329E53545FABA9 +:10931000ED45FDBAEB7517D9766E57FF76D4D3DCE1 +:10932000FFE5C63B2499F4D1347D2B218BD295499E +:10933000DFCA9E2C4B785F607CA8CFC0F84731E82D +:10934000D95F033CE4860642882F6D06B0CE2570B7 +:10935000BEAFEE37F0DCD36A781DDEE1E53DBCBC84 +:10936000E0E6FDF92C83BE30740E54FA2484E78CB9 +:109370009B07499F7D986D7F9D65F07B80E64EF051 +:10938000EB6A09F1FB50955CFFDEBBD0D48B1294E5 +:10939000D7D755F38A722D3475AE9335EB3D19CF7F +:1093A0009BC94D188FBA7486AC21D3DFBFAE6D4C0C +:1093B000A46A781C668F6999ECE0A1FC8A666D56F8 +:1093C000A67D04039C3ECCFD148BFC7AB37D27EA7A +:1093D0004FF07E5980DB1725AB073A701DC12A4E2E +:1093E0008BC1AA18FB0EEA5D06A33C3428495FDA5C +:1093F00073EF9D73905F1EBEB9D189CF1B6BF97956 +:10940000E1AD5AF6183A6BCA84FE8E79A314FF6A4E +:109410005A71F6ECC5343FC9A19CD5E17AD24B43D1 +:10942000F3C6923EB6BAAF58D286D7D5E6CFA5F7E7 +:109430002B40BF2AF791BEA6225C2A42FB4F204850 +:10944000FC9532D3A0BECD9E24BD795B2D53912FC8 +:1094500072447B4EE533D938DEF0384DB4DE8A8570 +:10946000B28AEBAB087D90A844FD00DED3B49170C6 +:109470007B726C36C1A30D6412F919C5FA49544EBA +:10948000407A13EB37C26331AFAEA2E3E962AB1EA1 +:1094900065E0BC05F45C526A86D7AF75C74FD0BC97 +:1094A000A3ADBFA64FBA15C66D15EB3E3696CFEFEE +:1094B000A94DD72BCEED0F3E982FE4D93446F9CFE6 +:1094C00023DAED0903FD8F076167311D4D91547952 +:1094D0007CC1D039C5FDC414EAD6881F298EEECBD5 +:1094E000EDA77B7AAC9EE978EE789E3CCAAE46F951 +:1094F000C7D40FF03E74CE93B2E102B9E7A9F99F49 +:1095000014BFEDD5B89F8B50BE333AA77BA22CBEBB +:109510005FC8FF7FEAF923E4BBC28C043F5FFEFF14 +:109520003E7F2E78FC9882F222FDDCB908C7C57C0C +:109530004963D6B5F51E3A27A83E67DB5BA4C7236F +:109540000DA29EA18ED5F8BD7A958550DF30F50C21 +:1095500077EC5784EF62B4AB488EF51D41BB70F3D6 +:1095600045918B3B2D7CD33B96FBBB7AC772FFFEAC +:1095700066A93FE12C45FED1C4F91457C8D9C7FAF2 +:10958000295E7497AD9FE0C9009EA8677F52C6F31D +:10959000CAA3D513ABF15C39C46D27664C19D2FB55 +:1095A00062DBFCA4CF131D062E6D9B836EE0CF8A79 +:1095B00003347EF6F465EE72785E6A8F2B99E4A42C +:1095C000BF2141F1277FB34D7BD3E297EEA99CE702 +:1095D000CD2437CD3200EA5402F0380F4AC453B6D6 +:1095E0009E45F5213EAC89B4D2BD139DEEF0304FBF +:1095F000EC0843BD8E35F0FB3F8C45A4F9B09EFCD2 +:10960000F1912ABFC58FE56F76D23AAAFC9C1F0E56 +:10961000D54516A09F563F623710AFD1CAFC7D7862 +:10962000DE1EBDF154E00CAC7B829FCBE77DB9E63A +:10963000FD131E6FF765F76FF7E07CFFE56204A787 +:10964000195C0E77D64CA47867D735DCDE1B1F700B +:1096500027D75BEE51B509BF078E9476DEDAC4BD1D +:109660006B39D3B9EB9592FD57E07C5B65B13F8ECA +:10967000277F48DD87FBD78FBCDA8079B33DA122F5 +:1096800009FD28F704E4D4BC8FAF727964E27B70E3 +:10969000D324C2B7BF211942FD2180714575184FEF +:1096A0006AE203A3199F4FB037515EB25DA3FB3648 +:1096B0003D1D37D0FEFD8AE6542DE75963AC742377 +:1096C000A6EA99F037F1779DC01FDD91C6F11AD84F +:1096D000A3B85EC0CB3D01CCD708A5E2D5C44F9757 +:1096E00023317B32CA816A99E13A019E63F010D836 +:1096F00018A89AEB00FB2D3A53A6BC90DE4064AE4E +:1097000051CE307A14CE14D7DC970E870B45FE8BE2 +:109710008043D7459CEE41B30A21FCFC220E915DAB +:10972000B34CAAF2A17DE8A1FDFB1BD47ABA8FD677 +:109730002C533CC88413530C89E0D27C6E7A665655 +:1097400078D8707CD8B7452EF915EE47C9899D2485 +:109750007F44063ADE17B868241D031C6667F2933F +:109760002484DD7297AD4FF03BEC9BF83D992823A4 +:10977000F9AA25F1BEFB27BF71115CBAA6A871F446 +:1097800031FB13C716A05DCB8C2CDD0BF2367BEEC4 +:109790006A09FD150CF43CCCE72CB5F7913C8F6AB7 +:1097A0007682534E43525DCE2CF00818647FFA95B2 +:1097B000889BECE9576DA82931352649F60CFB1A30 +:1097C000A26F019FEB05BDC07E1381820C7012FB5E +:1097D00046BBDC0942F9815AE1CFAB3C8A3A26F319 +:1097E000DC2367F443790A5D4407517CEF4228D1BA +:1097F000DFE641FFA94C7E4DAF143889F88D1BDCA4 +:109800003FBAA54A2539F0B6D0CFEEB271FCB3BB52 +:10981000E414FA31E566BA9C64357D146B0D443C62 +:1098200064DF8E2A07D79D9B6EBCE791837E25C19E +:1098300030AE700EF9F7762083FC33F5D2C19FB2BB +:1098400005682F68C66E37E6030D6EFA465B16EEA6 +:10985000BFF561B29327F8B99E6AAE7B080E8B4DB7 +:109860003824436E949BA5E54D9C9E96BBD1FF1476 +:10987000FDCF318CFCB93392146B0E841482835764 +:10988000DF48DF4331F519737FB78AFD79E276034C +:10989000BFF3C2740BDECBBED03E1D8519F8E38149 +:1098A00099CFCC417AF632A51FF96A1B4BBE7E0CCC +:1098B000FD13AB1F64DFF1913F9CF46BF28B7F19BA +:1098C000FDDFFECDAD76D4E35489F48255FCDE8D08 +:1098D0002F3FB412F54F73FC9F09FDFE7CF1C0F1E0 +:1098E00085663C30B212CF192FC603C70CC703A33D +:1098F000D57E8A077A551E2F397AE66781EF223F97 +:109900008A7860D7995F05301E18BDE8798A07DE2E +:1099100027F7BD8CF76F8D67EC64EF9EF87E16F924 +:1099200095EE1897B5CF9A977E4D21977B01BCAFE6 +:1099300005F3ED6831D8EF2AA0AE66BE37707D2101 +:1099400097170765710F88251A306E176D9D2A7558 +:10995000927E19A3FB95202F4BF17C3B28EE51EC16 +:1099600058F632C3FBB55DD54C562F1C39EEC1FC01 +:109970004400F165C8B9E4D733FBA7F783F7EDF8E6 +:109980007EB49A6559C7E9AA5EB6206489276C0C33 +:1099900006E9BCC3B828DE23F74A9CDFAE2914F8D9 +:1099A000B89CDB4D9D8532DD1764E1F70DBC7FEB84 +:1099B000BA42A1EF04B0DAD47BE05E8C9782DEE598 +:1099C000C578E9B491ED0FE79C3E51AA21BE351A46 +:1099D000DF36FE9E0E3CCE5C2DCB664FD0ACF0E267 +:1099E000EB8B5E34713FC2678723B688D1F9C5EF30 +:1099F0007D9BF0EA5A9A68403D6EA01DCC96CB61E3 +:109A0000BA422D858EA24BFBA9DD904BA8FDF9CB68 +:109A1000816E383EB6A39C5259E5B44E923BCE9926 +:109A2000F8FD9B58A946F4B35CE0CFCCBF58E48D59 +:109A30002C2FB4F0BD1AE279413E5778D106C4E725 +:109A4000361EFF4BC7C3ABC57C1C9F57F833814FF5 +:109A5000ADF993663B00B614F9496D46DF056352D4 +:109A6000333BF2828F447118FD0177FD36E7C86FF2 +:109A700050CF28B431D42B54DD08E3BDC2F3F92113 +:109A800093E3C2F7E2BA4D3F24FE75A4FA1D9B98FA +:109A900045CEC6D2FC8C7EE5B3D0011FE5FFD0B920 +:109AA0008DF201E54F61C413E9CCE057AC71B19D73 +:109AB000281FFC36A6637E48DBF359214EE7EA7E79 +:109AC000F49F1C697592DEB2678687F2DBF7281C6B +:109AD000CF8F6C97E2E84F598A291213505FE1CF7C +:109AE000BB2E53E3EB4B87EB39EBD438E27FC83F17 +:109AF000CCB8BD5328FCA64C55AFAE82F1739797F6 +:109B00004D43381E12F1CEBA9A7E05E3A88FD41CBD +:109B1000A5BCD9AB8BDD665E3ED92324FA6436E45E +:109B2000E7A4ADDA2CFE5090AAC877E3D0CF09F3B2 +:109B300047438CE4D360B77F3FC62F9E14F28174F5 +:109B4000AA8BF15EB6580F0B17852DFE502FFA43E6 +:109B5000F3A99C3D05CA5F88788E17ED14E41BF4C9 +:109B600087E6A23F34C9EFFD0A7FA8CA447DB5A6A7 +:109B7000BD78294D43FED49704FDA8C2CE51677825 +:109B8000E8FDA8B04BFD68970A7F33F94FCD7DDA29 +:109B9000F9F79B26845546DFA130381E4DBB7479FA +:109BA000878DDAD96AA6D517023CD6A5DA8187F265 +:109BB0009B8EA33FA0A7D1C3F6EB23FDE751FD8EFB +:109BC000591857C8013B15FDD3CBD3ECC4E7C4BE2D +:109BD000A302FF81758CF01F08868B887E60811838 +:109BE000B765F6C40984F3B81ABFD629F45EF962E2 +:109BF0005C16876FAF949885F112639187F1784670 +:109C00006216EA532B857DBC8235D17DBFBEE27CD6 +:109C1000C167890E8A9BEA32233C2ABCEE5D077A33 +:109C20007129C733FA03D46EDEEE0DF66F42B8FB2E +:109C3000238C71FB3EDC497A6B87447612256CA23B +:109C40005ED6AC929F3E10E4EBF51B4E6DBFA9A70C +:109C5000FBF1DEA1A0077BCC897A5B4E2448F1960C +:109C600046134F2181277BF8659CBFA416F62B0D68 +:109C7000BFBF42E02D1A3436E27E7B40F9D9AFF205 +:109C8000F156E07ADF1947FB35E1338467512F1134 +:109C9000F347034DB3285E04EFA37EB1273820A11C +:109CA000FFF411801FC68F7A8306DD938FFF39473B +:109CB0006BD387E75F25F8C1AC9BFCB13CFA96B447 +:109CC00002DEBFFBBD1C0DEDACA8965050EF667DCB +:109CD000DCCF014B48203DAD3C90EA475F1E4FADC5 +:109CE00007D2FC0C51FD1592AFCF0BFE3DF246168C +:109CF000C179B036F638CA8D6850CB4538C7B63E04 +:109D0000E8C673E9F162AE57F5EA7216D8FC2CAEDC +:109D1000CB57A13C8D3673B9561204BCA6E0318DE9 +:109D20001F188F27E5D4B27D1C8F4DCE4A6EBF68B9 +:109D3000CFE8C37498B34ED0A1CAE16ACA8DE5B525 +:109D4000AC1EE11A58EC21E044D52627CAC928D018 +:109D500021C2991C6E261E27E0FEE47A8A030BFEC0 +:109D6000785AE6E31B773A35D4034DB9D9BBD57899 +:109D70001CF59023AF5C908BF26B501970A3DEB68C +:109D80005797DDA89FF73AC2728367243CEBBA93DA +:109D90000AE6E7C66AA765A1BC7B449FC6E111E15C +:109DA000F0080439DDFA6B52E583C56F457EC51CAA +:109DB000E1B73A942FF4AD9AF04D68A707DAED12A7 +:109DC000C3315832847EF695487FD04F4B3B0FB657 +:109DD00016737D6D88CF613EE4B3213E59077C62E6 +:109DE000E1A39C785E7C343EC7F55BF91CE75D8E91 +:109DF0007CAE8EE4EBD8D0BCE2792495BFBD1D3695 +:109E0000E2DF92A0C1F9DB00BA203868F7D33ABA92 +:109E1000590A7F7BA39CBF355C37F1ABE06FBBF683 +:109E20004BACE73473BAA8081A2F51BBB9AF91FCF9 +:109E30007F9CEC00C1FF19F8FB387DDFC6E46F168C +:109E4000732EC1F9853C63766323EEDB2BE0FD4581 +:109E5000F93D26F83D161CA078715CF0FB79F97B82 +:109E60001DF0B7EF9FCFDF8C71BFD9B8F52C8EFAFC +:109E70005797CAE9A117EC0CC453AFCEEF4F3C5231 +:109E8000CBE212F27B94D7917E9864A1DFDD520A77 +:109E9000FD9AF402FC7A1CE9771CD2AFCE691EF75A +:109EA00075EB10BFC3B901F32F8EF0B837D409AEEC +:109EB000E3049C1FD107299EBF571D70233E1B0D35 +:109EC0004E3F8DC101B2E3FCB01E8E7F46F2DADB5D +:109ED000CDF11F0FEA9DE40F8E087A32E9DA50E3E4 +:109EE00056B9B14AACF3D69A387DAFC3941BB77656 +:109EF0007F4C794B776FCED6E55ADC67B203CF0B38 +:109F00007FB74CDFF9DC3B83CBA9EDEBD83EC3B286 +:109F10006F55EC6B7BF7E04B24A7803E114E394127 +:109F2000FD65E2B30E97A05783DA359DAF5705F371 +:109F30007D89CF425F827E4C7A55BB1FA4F3158D7D +:109F4000ED7A589F6AC436921F0BE881CD40787332 +:109F5000BCDA910E24D44B275E4BEB17FEE5554F30 +:109F6000A6FAB7F1CF6EEA9B32FABBDBE64C46B9F4 +:109F700004E7AF84387A3495AEA21D8B25CAD3820C +:109F8000255FA48FF437EF0926085E8F48CAAB6DB2 +:109F9000304EDD6F571FC1F3682FECC70540393CC9 +:109FA00070B46312EAF53532CBC6F11B52F5E358B3 +:109FB0006DF2C5B3D0AE45385DA5FBBFBB0C46F610 +:109FC0006E10035C502EDD9E4AD76A5382F28B2AB4 +:109FD000D6310DF3FDD2FDE35D35F24B87A07D79DF +:109FE000AB4CF95815EB0C8ABF357664EB482785E6 +:109FF00069FB3924E21D3D8F49144F386270BAEF76 +:10A000005AC2EF49AB1D2715F4074C6892293ED977 +:10A010001835C6601C6EEF12BB8E34DE5E5C3A747F +:10A020005F06E9622996F0686FF351F21F2DEE7515 +:10A03000101CD2F5B1A5697104D33E49CFB75F9921 +:10A04000564F5F3FA08DF6874730F2F5A569FD0FAB +:10A05000E527D814DC5FBD92DC9F215ED3FAE52CA6 +:10A060006EF7D53191CF0C5831BF3F06F8BA1BF7C8 +:10A07000877AE3C99703984F33781129D96CF0F3A5 +:10A08000D63AF4AB6DD9A02550AE0DD9BBB5CE23D1 +:10A09000E45FDB00860B3CEFFA2993B0AEF5DA43C0 +:10A0A000183F1861374B89C41A1F7D1FB0A997CB81 +:10A0B000055ACF383B53494FC6F827CA159FAA61A6 +:10A0C000FDFE4F5F4CE07E8D6E2F9D4BA0C7D6A14D +:10A0D000FE7429CA5258B4E735A30EE5CCA4662F06 +:10A0E000D5D716DBCC38F7118A0B5CCA54D4EF03F2 +:10A0F000EC18D723C1ACE8B814FDE87C9E9E1C2662 +:10A10000EDB77C37C7834BCB1FB96EB3043BB61A90 +:10A11000F526328DF2A94CB073F6DF3819FD689E32 +:10A12000D31159CDC5520BA918EF3AAD5269C6E308 +:10A1300063D39861FD4EE7378AE594FB9A6A2473EE +:10A140007C0CF77CD49F6A5F0DE11340B1EC17F3F0 +:10A1500073A74063CDC9F9FEA13C19BA9FF8DC355D +:10A16000098B1FD6B4C3CCFAA3857C7C35E24C9313 +:10A170002FE78927A23C06B81FD499C8D74B6DF7A3 +:10A18000887B26E974897F99E287149FA4B8D47BE1 +:10A190009B31BFDABC573275F77B9B0D90DF284FA0 +:10A1A00031F66ADA834F0AFF0403BD04CF91DCCD98 +:10A1B0003615F58ADEC2D8F55512C19BEEC9E2B755 +:10A1C000BCD04FE6410E98760E7A1078BBA2988FDD +:10A1D0009B8EBF11F47D726007F9AF25A6A33F6483 +:10A1E0006FF5C545A81F96E2FB684746FDF5785F09 +:10A1F000527D2D562F67783F9DDFD3E5C1F9E44AA4 +:10A20000BA3C7117733C6E2CE2F39BE78F551F919C +:10A210002DF402C0BF05538255C3CEBFE367E68B62 +:10A2200008BD650B769930FC5E4CC0FD90A057537D +:10A230000F1DD7CDF13FCED443A35C9F83763A5F09 +:10A24000A3DD70BE5AE4A0DA6DACC53C3135FAFC32 +:10A250005D784F20DDDEBD1F6900D6AF1769437EF4 +:10A26000009CDFD4F73561873E56ACA6ECD32BF6C5 +:10A270009565BE77DEFD837D8CFB07B240F9DAFB86 +:10A2800005F77F324D0F9FD0C1FD2D134C7DB69940 +:10A29000EBAB43FBEF9068FFA61DA676B4F2FD374B +:10A2A000C3FE33E4CB8D2912FCA8F138EC0F0B056B +:10A2B0003D8938ACE99FF0623B94CF083E403F2D8A +:10A2C000FA414CFFC7F151E0D354289EAB091177F6 +:10A2D000E5FB60DFCC1C7F3A24E92FA3FD66ACE4EC +:10A2E000794C45DF096755C1F38A6B56AF5C0AA507 +:10A2F0001CE4F15616EC6FC0F320D0B05B477F51E1 +:10A30000A9BD5FC9740FD0DFA0D13DE111F1869ADC +:10A3100079E7BC2F5C84FEF84A74E3C80CF5A3C649 +:10A32000EEF438158FFBA5C7FB2C7EF83B33C55BDD +:10A33000EF14F156F5D352161AC3D8B68565B4BEDC +:10A34000A7449C5A5D2853FEB2FA6939B507226CBE +:10A35000BD0FC6071D85E26D8BBCA9715C7B55D80E +:10A360007068C3715C68A7794373F7B5A27E33F454 +:10A370007DB08670C8AD0DCF3F8487C5A9F1D0618F +:10A380003CF0766329C7939F196EFC8EFD8E3B7A55 +:10A39000AA916C2B041E7A6E5CB668B1361C171D30 +:10A3A00009FFB89409FE7E25B2093F199423E262A1 +:10A3B000A3C5FBCCFEE971D4A225A9F800785FE91A +:10A3C0002F1886B3198FBC72182ED41EAA6D959CB7 +:10A3D000BE54B880C63DD4EF502B8F83A7EFE3B7B0 +:10A3E000224FCE979B08A1DC31F34E729E7C25252F +:10A3F000EFC4837927B9A3E79DF86CFA7FCCC57DBC +:10A40000DE6DE7FB14E7AC355F73E81E26E0A83B82 +:10A410009847EF8D3BF9AA9B3E873AE4D7CC9CBF87 +:10A42000993596CB8BACB19AE03BEED7A47B5332F7 +:10A430007F0FED92AE4DFCFC3A981FFFF5E5786E6C +:10A440003DE1D4284FC79EA4FB0EEE891EF267A7FC +:10A45000C7731604C5BD3D11C71911BF11711D1376 +:10A460006EFFAC780EFD211F14E7939F675190EFAC +:10A47000D38CE798796A0F07F7BF9660781EF3EFE1 +:10A480007A1BE3B81C718DFFF155F8BEED29399F99 +:10A49000EE1089EF20BABEB4EC04DE45DF7AEF633C +:10A4A000648FF44A4A3FC9D1C42BDCAE8F7FFDA62E +:10A4B00095384E87A45700480FEC3BAEA0BEEAD1BA +:10A4C0004317A15D60EEB3516719EF35940714533C +:10A4D000AF17790D6699705AEBE9EF158F12C7FF28 +:10A4E000A5B8CFF1B0A3EF7AE49787610FC8AF3971 +:10A4F000953CDEDB6767D918AF0FEAF32E4295C6AD +:10A500007CEF4890E75B04BB9DD40F7494947CD09F +:10A51000E78259048F9D229F737590DF9BED7584B0 +:10A520008B50CEB57EF94F644FED9140BFC7F23BE3 +:10A530001F2418D9FDFCFB949E6E79913377647EBD +:10A540008FA94799F43744978ABAC9AA4775153233 +:10A55000D2A3EEB2F5D33CE97939669EC6905CAAE7 +:10A56000E6722B7051C48DE783FF9AE89C4950FE38 +:10A5700050C825CFE69FAD586AD97F5124D68A723C +:10A58000D29443A576C36DC6E7D12E2B413904ED95 +:10A5900025B133AD64379B7248F82BCC7C8DD1CE7E +:10A5A00007903F3F09629EDC92CC791CDE1A919F96 +:10A5B000B850267B75282FC91157F0DCBFBF86C75E +:10A5C000EF43735B25ABDC06B945E3FA1BF8FD7579 +:10A5D000A03B3AD7370BFCF4258E52DE15E6AB6173 +:10A5E0001EEAB65A1E87CAA9DCAFA03F15FEEFC609 +:10A5F000FC46A386111FF4D9C372B585AE5AFD9CE3 +:10A600009F2B3A24A20B66EF0BD077BC591FDD3F7E +:10A610006B13F76DCC3CC4A1736339CB18FF1FC219 +:10A62000CF4AF3DC88B9E7029E76F63C46E7C63BA4 +:10A63000C3E74629C93845A5EF3A060C399EE93BE0 +:10A64000EBFE86C468E7871B59DE23F0365A3C7C54 +:10A6500058FFE5F832CF0FC0570BC235B822735EF2 +:10A66000454B70E8DCA07EA1DA07EAD2CE0D03CF1D +:10A670000DB39F3FF1A142791DF81330E86F492EC9 +:10A6800091AEC5F58414AA6F017B385C43F737920D +:10A69000689FA6DFD3B8F070BA3DD44AE36E51424A +:10A6A000BEEB119E0D3CDFE992D752FBCD2EFDA9EA +:10A6B000EF06D403EBE469FCDE9878CFC30AE6D357 +:10A6C0007CFC9CF9CADBA9EF997019EAAFF27B57C1 +:10A6D0005FFDF43CFD7C3C5F247DFD5728E9FE22B4 +:10A6E000D13F102AB8B16678FD5F0BA4F66B58F421 +:10A6F000D3826F645A7F1050EF1B5EFFD595AE7307 +:10A70000AF4BE3EBBF6EC679FA95675EFF0DB347BB +:10A71000597F657236FE5EC4371ACE33AE9DCFFFC9 +:10A72000CD15E7EEF7ADE6F4790C71FFAF5142BD00 +:10A7300000EC8024C589D952E9BA34FA213AF89B51 +:10A74000E9C7F0CDB3D04F3A1DCCAD7614CCCF488D +:10A750003F026F02FEE7A50B413FE974F045E92790 +:10A760009D2E86E9C728F8BA857ED2E900CE51A28F +:10A770001FB5A19CF87224FDF0F7CE4B17827ED254 +:10A78000E96024FD707A485F7F3A7DFCAFD185BADD +:10A7900094E488952EE6FD5D749120B961C2351D63 +:10A7A000BFE1BA2B0B6ECC4817021F822ECE8B6FE7 +:10A7B0004117E9F8FDA2743112DF265D00DE2D7429 +:10A7C000918EDF48EBD23CFADDA7617AF862F8D5CA +:10A7D00000BF9E2FCEEFE97EE9743CFFCDF8D59601 +:10A7E000129F5BF17BC3DF756E30E26B133EE9783D +:10A7F0009A7FFD8682AF67C4AF80ABC0EF79F12648 +:10A80000F07B5EF93C0A7ED3F1368C5FC6F3D11B38 +:10A81000B89E978E37C0AF3B15BF7F1BDECEC78F6C +:10A82000E9781D0D7F5B47F98ED047E3B87DF2BE16 +:10A83000D00FB6BA33F7FB6FD1EFD271A25FDA77E0 +:10A8400008874AD1EF1EEC07E561D1FF505BDF0AB4 +:10A85000B4C32EB2B5D3F712D3F7B15D92C5774F1B +:10A860000DC99ABFE42BE176C49E1630D0260D3F69 +:10A870008FADEBAF43FF43A079A015CB9275F940A4 +:10A880008A23E1E4FF74020B4DB7CE17E7FE8B0578 +:10A89000FC3EB6FFD389D4BEA745A1F1717ED4B7E3 +:10A8A000478E9F35CAF885E7193F98DA6E9B4BDFD4 +:10A8B0006FC6CF5F64FAEEC0F69678CCFA9DCDF401 +:10A8C00032F0C1E245619197A4F8E91E3AFD1DBC42 +:10A8D0005C4FE27DCD9D4BF3ABF1FBD1EA788E87E7 +:10A8E000402EF71304B2B8DFCD9F9BB51FFD90ED4E +:10A8F00039DB5B9741BDBD2EA053706FC9CC94EF7F +:10A900008EDC27F3DF2130E699F7256347D04EB57B +:10A91000C92C4971BCB4FEAF94F0F9DA457E5DA054 +:10A92000D946DF9DAFDCB744C2EF843C23DA95B84B +:10A930009DFBDF9130619D531E718AFA822D2BCAD7 +:10A94000F1BB76067A8E59B464D675B333C44F46DC +:10A95000C24B977E67815720EDDE9659464BFEB677 +:10A96000FCCAA325DC9E30F3057B96AEA2FCD2B8D0 +:10A970004DBD837D85E041F9953B57A6E757AEA2D3 +:10A98000FDEE5CC064D53B72DC83F9911DF8FDC01F +:10A99000E1FC4ADE3FBD1FBC6FC7F77B16A4E6573C +:10A9A0008EEC175910CAB0FEA858BF997749571DA9 +:10A9B00035A413A6239DF49CE4DF7374B1ADADE818 +:10A9C00047F928A4E89D19E880CD8E499877DBD314 +:10A9D0006A4FE2FDC89E9C1EA28B9DD73326E5657B +:10A9E000E8FFD959BAFF45F157FA2E14D0B322D651 +:10A9F00085FE1114F6B018DB2A27D95FB69BF87DC7 +:10AA000039FC4B9A7E68B49795DB5A97E1F9A2CA54 +:10AA1000FAD7309F9F45FBD12FEE8F3853EF950823 +:10AA2000F9B6D311791D386EE8FB233D97A5CAA767 +:10AA30006D021ECF95D8CC7C488AAF381A8EBF865F +:10AA4000E33ACCEFECF9EC29DF336A17F7A48D3B3E +:10AA5000B89DD85391A07B2C0937CB7714C3BC1277 +:10AA60000B61BCC09094A17BD7F8FB6EC5822F7B95 +:10AA70008EF0DFABD8792F93F0F73C0EE687DA70D3 +:10AA80005F86CCC218CFDBF940BCD04DF69876BDBE +:10AA900003932A4221CD67F98ED3CE0D4F16DA38B3 +:10AAA0009D55A3DFAABD997F676BE7E78CCE9D9D7F +:10AAB0008B34CA57DC83DFDD82AD95AFE0BF779082 +:10AAC000FEDDA074FAE8C979AC10FD78ED92FE1AAB +:10AAD000E6073DB8F7EAEB1A800FDB2F4BD870BDC5 +:10AAE000ED052CDE5A3A0C97F4F7D3E134044F0FFE +:10AAF000C0337774786EC33D1658F37023C4573B48 +:10AB000025ED0E8C779A79B83B17F84B31EFCAE4F4 +:10AB1000AB9D4B393F01FF2CA07CDBB66C097F0F4E +:10AB20000D9E2BC4274B8195CFC9278CE4CCED20FB +:10AB300057F0F7D2CCFC5DA6F65D306FCAB03C157D +:10AB4000DF94646F097A718DFFF19F10FE3B5638D8 +:10AB5000E97714D2DF33C72F5CE13C83FB4EE787F4 +:10AB600042F15DA7C200BFE737825FC6F3792E2BA3 +:10AB7000E17E12F3BB5587CA42F5BF8775F69CB2DA +:10AB8000519CDEF45FF62CE0FECBA1F50A3A718D04 +:10AB9000DF4D7A4620CDAF1918F26B2E2FFC2EC256 +:10ABA0004BF835779EF95E21FA357B563E7F81540E +:10ABB00065954F7D7FA2FCEF55C2CFAAC6E89C38B1 +:10ABC000585FA96792FBE7DBDF9B25663EFDB9F77F +:10ABD00033E29CFB3BF771598996123736E1699E47 +:10ABE000AB1305FD99E76FA9335C301ECF85488410 +:10ABF000FC379A78DF9453CCAE57D2BD5CDB3D0C6A +:10AC0000ED990F5FB5D1BD9B7439972EBF8C7AA398 +:10AC100095BE6B2EB3A687D49172D0CFEAB7CC463F +:10AC2000F8564624FC5DBCF6523BC9DF74F9B6C940 +:10AC3000D1E4C2EFD3AE6F09EFC0EF383D0A7BC05D +:10AC4000EFA4347B14CA975F2FF2968D9C2CD23FD1 +:10AC5000D3E1B8B88CC3FF89BCD802D41B0E490F0E +:10AC6000A4C40D7A354E7F5B84BEC06A226EFEBDE1 +:10AC7000E6F5AFE0EFF36CAC95298FA723BEE404B3 +:10AC8000E677EC0AC8F409895D8146F72A9C779D2E +:10AC9000AC56509DDFC3315446DF29DA18687B0576 +:10ACA000BFABBD6BC934E29B634B641DF7B943F581 +:10ACB000D0EF8DEC5A27FA0779FF59B6D37330DFFE +:10ACC00062F76AE774FE5DABD0B5D5963CF2636B74 +:10ACD0006625F077371E99E1A2EFFE75455FE947DB +:10ACE0003577E292FA04E6B14F0829614DC7EFB516 +:10ACF00026197E9F2D1000FA81FA2E493FAA703F37 +:10AD00002CF9158FECDB48719547AA18AD63F7C293 +:10AD10005002F3DEB7376433FCDEC9EDE3F9EFE44C +:10AD2000ECDAB7FE25F4DB558E2BA7F90FECBBB898 +:10AD300008E963D7BE8DF4DD989C5A7BCAEFE71E05 +:10AD4000E97ABE10E92C5B4F7DBE6B41A210F3295E +:10AD50005DCCF25CF02FE6851709FE3DB1F6943428 +:10AD600040C1F8D47EE356E832D90F510FFD5EF0B2 +:10AD70002A9017C85707E4908CE786F18644FB7A3F +:10AD8000D461B8AC78BD722AC7ABF93DB2CA5239AA +:10AD90008C7ED30DE27CB47B383F99F84F2FCB36B5 +:10ADA000CD3CE7EF8C142A37ECB07E477187B02F8B +:10ADB000EC6ABFAC023C8B9F55ABF13B5FC5ABF976 +:10ADC000F788775F5982EEDC217ADC7DE4A542CCFE +:10ADD0004FF53FE9D131DE777CED3209E3C477E40A +:10ADE000F1DFFDB9CBA6B622BDB0C51ECA9331BFF7 +:10ADF0007F0DF222E5FBD779CD3EBD7C3AD96BF4CD +:10AE00003B16AAE6D7CB416ED89B9D3AEA79B39E12 +:10AE1000AA1A3B708E7DC45A54BDDC817052A88C36 +:10AE20008978F7979E9AEB6DB4E8658F8E9752BE3E +:10AE3000AFE66ACE8E59F7EF18C7E10B7F85D6DFF4 +:10AE40008B5A28E0199332DB4B663BAB0905EA606D +:10AE5000FFBBD63A55F40FD5E53D5BB80AE317AB17 +:10AE60009D2AC263F79A539B16A23C396963C86F47 +:10AE7000BBD73E5FB8CCB2BE5D5266BBED4571BE7E +:10AE80001C2834764A94D77AE006FC1D84036E634E +:10AE9000277D3FC87882D72526F4F04337E0FD9D13 +:10AEA000032857803813E3AFBD01E32307F28C9BDF +:10AEB00064157FB76DF743C7402E1EA8307E8DF90D +:10AEC0004E759358622608BD03A5BCFFE449035B99 +:10AED000A8FF145E9F3AE9E91BF0771376E17E60E4 +:10AEE0007FF67D4E0212F0573EF2D1FABC470B318D +:10AEF000CF786735485B584F5C0BF72B30BE5D8AC7 +:10AF000017A25DB2285E1D9EF9658447F936DCFF05 +:10AF10009E7E07D1C74E47FFA685082F80472BD4BA +:10AF2000778DEB2FCC140F8DB604F42800AC53941E +:10AF3000E6F31C3DA03F69E1D3ECCAD4FA2EA99FE9 +:10AF4000D65314D7C3F64BF13B5FFD3BB09EA5B97A +:10AF5000793DA7BF10F7FFDFE3A5B0BD10BF23D930 +:10AF6000BF03E1FBC7F17FBD6E26EC7B97A3AF501B +:10AF70003F07DDFDDDEB12E3FEBDEF8F36BF39EE9F +:10AF8000FFD6FBFF0F9C21913D00800000000000D8 +:10AF90001F8B080000000000000BED7D0B7854D5DE +:10AFA000B9F6DA7BEE6132B3139338930C30937BAE +:10AFB000C2244C22A5811F7588FC16909E0E089A0B +:10AFC000684F9FE122241A74D028D8A36527041063 +:10AFD0001B61C090E6DA0E097082800EFE8A97DA55 +:10AFE0007326882D5ADAA6E8B1470B16ACF51CFB80 +:10AFF0001F7BA2F5F67BD49EEF5B6BEDB9ECCC2406 +:10B0000020B61E9FE7CFF3F06CD65E97BD2EDFFA19 +:10B01000BEF7BBAC358410F217FC877F5712D2BE47 +:10B02000D1E6692F22E47EFEECD585ED1E3721E9BD +:10B030001E9BE79091D03F2C3FA93431FD57AC5F68 +:10B04000EF314F5C7FB95320247B9C765CE7D74E71 +:10B05000AAFACAFBFF5FFFCBAD9FEBCC27E46BE7FF +:10B06000430F84969344E20F03FD6DCEAA352E77ED +:10B07000C7DA71578A347FEF54568E102FF1A5131B +:10B08000D2D378B5D10F74D277CF88C95B4048E965 +:10B090009EBD264C97661C33B96610D21D10250242 +:10B0A0006D777FB2C9E8CA8267BB28B542BA4D3A0C +:10B0B000B5A018F27BEB444903ADF5D555A72D8417 +:10B0C000B4DC2C4AD07DD25977CCB4D21CFB7E5F45 +:10B0D000B3383F04FDE90B9CB2AF8E7BDF2F90BAF3 +:10B0E000B019FBA38D18A0FDEDFEFC81FB5DB1FC4A +:10B0F000536E81F6B7ADE1D42BF8BD1D4D221B3444 +:10B10000193D7125A40D734427963F7EE7D1DB09D5 +:10B11000A4FB1D6662802AC7E79C5A5002EDED9899 +:10B120002F7A0CD0DF629E76CCD77A9C90EE6DB8E9 +:10B130005DC4F25B9A61CEA0BE23E0A7ED596DA27B +:10B140005303E9C9CD81483F944FAF31481A0F21CD +:10B15000C35266449E41C7113240FE161288FC0459 +:10B16000F265AFD1B74FA21DB256E5107209FE0FBE +:10B17000DABFFA111814941F74135ABEAFF9F6C847 +:10B18000992C9CA74984407BBD6E171D576F53B502 +:10B190003005CA6DB6698806DAE96B7F54225035EE +:10B1A0007391F6F5B371EB9B3E27314DB43E1FB65C +:10B1B0001FCCD692FB61BC93485C3E346D50A59584 +:10B1C000F9D449464F6169AC9D0CAF949056CA2999 +:10B1D000CFB68D4F92DFEB62692D104ED83DB65C35 +:10B1E00011A72F42C2765F05211B48E077F7C2788E +:10B1F000C988C6B30FE9C5F86CD71B97417DD3CF7B +:10B20000BBDE8049B26F98D487E9B68C99FFBE1A2D +:10B21000CA75A4A779908EDA368E74B50101BDF790 +:10B22000ED198DAB217D18FA8EE3ECFEA6181AC03D +:10B23000FF9320B91BD29993C510AEBBE6DA9D4EA1 +:10B240000215B3A582BE3668D7A4099412A0E35DA7 +:10B25000C45B86CF9FF1FD93413C3BE6C23C9D78A9 +:10B26000B8FCD2B330BFD946565EE9FFEE03C6BA8A +:10B270009079ECB87A2A44CA670F6A23F566E867C2 +:10B2800027314848079DE1C7EACDF0EC215AA700D5 +:10B29000CFAC3B66BE83FDDDDE00E5719FD4E943A4 +:10B2A0002502611B0DF749BD7E00D7290B0789F3E5 +:10B2B000728B3EB40FF3B59E1BB09DDE960CE97EFB +:10B2C000781E397CDDF2CDB88FF6A5798A68F5F065 +:10B2D0001F1F82F2BD8B6D9EFB611E0F0B9E1BB06C +:10B2E000BEBC4C4F58FD90BD2E3DD6DFDEC6EB5C9C +:10B2F0005E184707AC19C9A50DC804E840AB89A57D +:10B300008D909F35C9BB0EE9B0E3B0E97AE32C68B4 +:10B31000378DE55F52F942A73C8790A165334B0911 +:10B32000D0635DBE7BA7A90AC62B046FC7744759BB +:10B3300049A70DCA1F11E1E3B3F9F86AA0977BF49E +:10B340002C2D9F7C691E1049366E539A3FDCE10517 +:10B350007AA98A7D9F88D09F874C4A7E786983032B +:10B36000E67F58CFF26543F65CA87FA496E7CBAFA3 +:10B370002DF53AF07B89F58FE895FC8FAF6D80FE57 +:10B38000565DA5A43705B1BC3BFA7D56BEAA40C99F +:10B39000FFE74EFC9E325EA5FF590625FD93CE06C3 +:10B3A00037D263285F82F1BE56665B36FF0AA4D3AC +:10B3B000EB5CC817AB0A82EB7C945FF95C4BD2C79D +:10B3C000D2CB4319CA771F3F85EB707089918FEB01 +:10B3D000BBBBBC8574DEAED1409945FB7EB8CB6C5F +:10B3E0008F9B37F2D829AF16D797D5CFDD73E9B544 +:10B3F000AD669AA6FC51FD9DE9C5264AD730AF5EE1 +:10B400004D3C3D39C93537215DAE95A5FB2199A746 +:10B4100065FBB5A7517FC92228B773AD385B0374AC +:10B42000448C11FB0DB04FCB5C6994BE77EBD877A1 +:10B430009E3C2B7E1FE9AB37206568A03D3110692B +:10B440003907EF371767D2EF3922C7EC02A47B1D0B +:10B4500003F522D261839E1441B99E75AB4DCF4155 +:10B46000BAC724D0FDDA937EBADA8DF98F379122EC +:10B47000F8DE56C7EB54CE28FDFF41B186B6B7BD06 +:10B48000A93A8CFB7FABD92C61F737E9C20BB1FE2F +:10B49000A6C3226981171D622857003ABDDAD51F5D +:10B4A0006C8375EED0B375FA59C96050C67E484EAC +:10B4B000930ECA77D58844067ED055B7644F01EE07 +:10B4C000CF76262706EB965CE681F677D5E89D4495 +:10B4D000887D7FBB20D0F166EA3CDB8A203FF39B6E +:10B4E00099821CC7FFEEC957F81921E69984A4B1C7 +:10B4F000FF92ECEB86BCAB504E8924807221CB10BE +:10B5000022FB903FBD6F210390EE4BF7B904C84F6B +:10B510009B9D26CA945F9DAD43BE31091AC7FDBDF0 +:10B52000FDEF9E9671BC7D8404705C84449E47B997 +:10B53000666E1609AE575AC3D108A6A55AE3A8A14C +:10B5400006DF0F10940FE4132BC822EC7784CA2572 +:10B55000F96EAB847227CDAD27CE38FE6D26908E66 +:10B56000E3FB7DF9997C1C308F28CF86F41EE443E1 +:10B5700061A03527B46BF39210CEB3747A5244AC09 +:10B58000C4E7DA45049F8F79FE9E3E4F9BCEE19340 +:10B5900078E3BE032CF51D87EF1617D08DCD4F0431 +:10B5A000BF9BBD7782FCB3F2792262A87E127C2F0A +:10B5B00007240E8EDBDAB4A22582E3706A035618E4 +:10B5C00087B5EDE6169C076985D98FE3CC9993384A +:10B5D0008E289FBC9284F6B9D87B2DB68F444297B3 +:10B5E00056BA06E9CB72A5587D3F4D124A77963B75 +:10B5F0009C542EF47A585A5EC5EAABF74F73899E75 +:10B60000CE8BB2BF880D5602D67905CC0BC96769BF +:10B610003107BB0BFF87BEAC2E61FB2D6B1209847B +:10B62000E978C3260DB45FD0949F89DF2352C88E7A +:10B63000FCA0319FE1F26CD1B77C33F6FF2E3D9533 +:10B640007FEAEFDFC6CBD13FF8EE14C2BE63D19CD8 +:10B650009DBB6606FDBFF3711883E57F9DB6C7EFFE +:10B660009B3BF385285D623D847328E7A636EBBDDE +:10B67000A6CAD83C4D266C1C939B44FA7E72C3D15B +:10B68000F58205DEDD67A0F30CA397FF02F3E86CFB +:10B690008FA317F837E59EC47598ACA2277B20B11D +:10B6A000BC4E4A2C6F55953F92C6D6B1BB968406C8 +:10B6B000983C9C8BFBC1EA07DC02E393B4E43E2B8D +:10B6C00090E8932E361F5F43FC9A84DF3971FEB3F6 +:10B6D000C7D22189FF9E666CFA6026A783D984F1C0 +:10B6E0004755BEC5689127C1BC58485CBBD0EF55D3 +:10B6F00085AEE8FAC8F1744DCE52DC9C6519F5A20E +:10B70000DC27B5C4B30FF8B9E5D0EBE49A1994106F +:10B71000DFB5DA687EA43C8BD2EA28EE53CB9CCF0F +:10B720000CCE2438EBB602B69E438F3F6377BA51F6 +:10B73000FF037A84A749350F95F98C5E2BF3191E08 +:10B74000D9793CB3EC39A0ABDA279E2132F2DD5730 +:10B75000341467F63CE5DC8478E283B9C42343BE45 +:10B76000F5E45902DD85F61D73F1BDC32F10418A42 +:10B770009B57600CA26DE267E773618A77FC807F5C +:10B78000842B92E4EBC2AFE07EDEBDD8EC9149ECB5 +:10B790007D38F2A809F983232246F1026EDF38FCD6 +:10B7A000201B81AF9745F1C1C225E3E20579D6128E +:10B7B0008A17D672BC406EC94CC40B372EF1CE1915 +:10B7C000072F90BF5B928017101F8D8B17B63D38E7 +:10B7D0003E5EB8E7C106C45BE94AF97BAF45B95F95 +:10B7E0002E0ADF27809BF206D63C689E8578CCEB3C +:10B7F00041BC65D8B32988784BC15FC5F9B3AF8B1D +:10B80000C75FCDEE4B7622FE0A1B47AA31BF7DA74C +:10B8100061E7F398DFCAF2E70F942D66F9CAF70CD7 +:10B820003B87917F19C326C4DDEA7D73BEEBDCAB99 +:10B830000D9B2494A77C9DACF996C52D80570EECEA +:10B840007FDACE708FD7B61CD6D77EBDD13340A756 +:10B850002111FFE89A5EBE41A88CE19F9B8BB60642 +:10B860005B601D2B34C02F93ECE7799CFF550CEAED +:10B8700003A817D69698299FE85F7BDD5EA4E3DADC +:10B88000274E77A3FCE87DA55E87FA5C6DBE969691 +:10B89000EF7DCA3F55A2F88BE919686FA1FD7EFCC8 +:10B8A000A440DC63C7E508E9BD88EBD5EF67E73363 +:10B8B0007EDE5BC4BE3BF4B839445C38CFC1465F22 +:10B8C00012FDE65ADEDFB68D400025F87DBF807C94 +:10B8D000E041C9EBC5EFE664F964D4DB74A0807B7A +:10B8E00093E8F7DA8FF288374EDFC8CCF012ACA7B6 +:10B8F000FD680A7D7FC4E85B960FEDFF7EFE40E3A6 +:10B90000F7A15E8FC8F956B19EC93F6DD0B618C673 +:10B91000EB9CE2ADCF877E6F12BD3BE627916B318A +:10B92000BDCDD7DD16674768D325C7919EA95CBFFB +:10B93000E67A1EE823A5382E147B8CBEAFF3E17E99 +:10B94000DCC4F74759E5751477658B619316F9DB0D +:10B95000ADA244F92AF0942D33A928A2F2B97FD9D7 +:10B96000901D9FBB5C0C47815C0B3F8BFC713DC8FD +:10B9700043C218841827F794FE74BBC428DF4D26F1 +:10B98000C7422E27CBE7F515F9A7C8372F91E9BA9B +:10B9900090297E19E7D35627CA86CA184EE958F26D +:10B9A0002AA567FC9B00D779D7FC0FC675CB5D191C +:10B9B0007C9E12711DF0A54032FD7C4B095BE72C8B +:10B9C0002BDB8F543FCB42FCE71CC0F1087E328C4E +:10B9D000F68C02E25CF20D29563EBC543F7C0671A7 +:10B9E000A24D43E586D42EFBC4F3C087A3937D8F7D +:10B9F000209DC6E3C39A3839EAD58C8F0F67184665 +:10BA0000BD43C86FAE320606E0BB390D5BD6692C6C +:10BA10006371E28F4A18BD94A60597E3BE25819015 +:10BA200069491C1FFC5109DBB751DCE687FCF48B2C +:10BA3000C0979B18BEA47A1AAED7BD0C5714118FAD +:10BA400088746CCB3A2B08409B8F73BC12FD2EC7B9 +:10BA50009737717A56F0E50A4EBFC74A14BC1132C7 +:10BA6000A13EB732A0E0CA113B8E279BDBF5A0A810 +:10BA7000B1AB9A3EE757C0F3B77C7C056622238EB4 +:10BA80002A586AA4FBC4A281FEE0F8AE2504F1099D +:10BA9000ED1FA69B9CCE6767619AD5FF0DAF5FC473 +:10BAA000EB17D598BD260B5F24E8EF6ADEDF1E8713 +:10BAB0005F5F02E30795D5F928A56F1FB59F397C15 +:10BAC00040FFC8F3B53EDABEA34972D2748781D273 +:10BAD000AB823357B41B12D66D86C1AF37607B2B58 +:10BAE000CD747F157424E2CAD5CDB09F2BF1FB89AC +:10BAF00074AFACB3B2BE23258CBF8C9428B838B4D5 +:10BB00000DFB35B90EFA05E5731CC1B9A8AF030EDC +:10BB1000A57698EEBBC81E8A438D8C7FACE4E35BB0 +:10BB2000D9EC5F908EFB414306100F105BE879C49F +:10BB30007783CDC54EDC573D46CFD5C80F7AFE235F +:10BB4000DD29437F330BF87A61DFE2D671F8D4AB9D +:10BB500026D4978FA01C81E7709D48904FF6B78B35 +:10BB60007B508EF5371C3339D1DEDA7ECA84FCBFB8 +:10BB7000C7C1E86A701D09B5227E6B5E21A01CC991 +:10BB8000718C6C437E616F10C90089AD07B509895E +:10BB900074BE6B713D1C4472F648383EF6BDA280FF +:10BBA000BC0EC02C296A67F357AA4F9CAF937CBD8B +:10BBB000956774BE026CBE1C7CBE8876444079A337 +:10BBC000CC93C2D70B9AA1FD4AECF7889DEE373E85 +:10BBD000FE557CFC304FB56BB262F3A4EC2BBBD2AC +:10BBE0006F12A6E3CA6912A97D424D173D8EE0305F +:10BBF000E6F708C4B90BC655143424D045CEC90E97 +:10BC0000A637FE29DD897CA2605522DD4C9513D331 +:10BC1000B60D89E994FAC91584DA1773547A8075D8 +:10BC2000443C67B024A9A767F3ADCCEB370B181DD4 +:10BC30003EEC6274D832FB214A4FBD020919A85E5E +:10BC400010EE2E46BD07D613ED78C021654C5BDAA9 +:10BC50004804F5A0DE5F7FEC4579D2F79485DA875A +:10BC6000FB3E3D47D3832D5AD20AF3603D7E36D248 +:10BC700000ED7C6B2B407018774FFB0734BFF30F40 +:10BC80005ACA972D759D4B902F5B54FC7122FD482D +:10BC9000D167CE572FC2BF64FA10D5B3A89DEB8DE4 +:10BCA00020E2DFC32D2CDDB0F78DA0EC18ABCF2840 +:10BCB000CF17393E80FA0DC8DF0A975A08EEBBF756 +:10BCC0000FE5527BA952AE85CFEFE17C86CF6C1F8A +:10BCD0006948047053C551235DBFDEB5390368B7A9 +:10BCE000B749CCDE75ECDC13F6EF211D1ECEAD4658 +:10BCF000A8DE73EE1FED02EA578D47CBD17EB55516 +:10BD00000CBF508EF8EA512DC523271E4EA3FCE12F +:10BD1000F6C9697B0C71B8EA11FE5DDB86837D682C +:10BD2000B7EEDE2893DF17C5BEA31ECFC3956CFD0B +:10BD30000F8A301E8653EBF753FB6EA5703FA58329 +:10BD40006023F6B7A7B1D885FBEDA09E8DBB7BF530 +:10BD5000D302FA6B7AD612519A3EB6DD8399E15737 +:10BD6000F4D85FD122ECCB8A95579783FA5AACDF8F +:10BD7000BB96A4C5B7D3B3B6B3DECB710F7E7F8BB2 +:10BD8000C3B107E797F880DDE0FE64BA398C97F716 +:10BD9000FF0A6667DF6E17295F22BE9D2D2B216D7E +:10BDA000B8CAE8417A25ABE679A3FE05E09FF6E044 +:10BDB0000FC806A0013B00475DE6D8FCF0D2BB4EA1 +:10BDC000A0FF28AF41F4084EB44B7A46A9BCF73324 +:10BDD0003CD8693BF6CA30BCDF6AAB1E1D86F43F17 +:10BDE000179453FEE419D6CAD47EDEBCFF21B447B3 +:10BDF0001A56AEBEAF9824B15736707B65C348CB98 +:10BE0000399897FF3B8DD9BD26474E517B65671307 +:10BE1000F33FA9E7EBCD693AA64F1785A81ED1736A +:10BE2000E77E3BF2DFBE467D1D96EF6C3AD6BD7ACB +:10BE300006DA27176531FB24B3D76F6AF16A5B66B0 +:10BE4000C4EAE3DF85D809FB114FCE88E1C9492454 +:10BE500042F9A78223FB1147C2BEEE6F7A34827C7F +:10BE6000A2CF6B1C45BE90D6F053827C1FD48C11A0 +:10BE700003608841214471A4FCA995ECF38CC58D25 +:10BE8000803A22FD909FBEC12ADD2F8DC591EF948F +:10BE900033FCF405D803DF2EF80AD9030BC8A840F9 +:10BEA00018FF13508F7CAB7CAC3D3041DEAAEC8395 +:10BEB000BF29E7F628C54E88E50A26B60F66177231 +:10BEC000BBB24A5FC2F288137AD6825C74C5F0DED8 +:10BED00014C47B99F439BF029E2F9633B93D05F106 +:10BEE0001AE0B72988F72C54BF12707C0ADE9B4AEF +:10BEF000789AE3BDA91CEFFD8CD79FCAF1DED43838 +:10BF0000BC97A86FBD2BD0F9067C573B0BF5AB0F48 +:10BF100068FA1F6E234E11F1E37D8972F97F8A1D45 +:10BF2000717E61A21DB165765A0BE5B77707ED8684 +:10BF30002AE4BB4717A423BE20C10388B3E7171A1E +:10BF400013E22862FC728509F980B54E5CAE47F9B0 +:10BF50007F7C6431E22AABF7C2E4EBE7B53FFEBC7D +:10BF6000DC15B5F39E8FFDF1E0A1475F407BE38ECA +:10BF70001A919ACE0E1E7ADDB82209BF539E6A7BB3 +:10BF8000E48B48A3D928B783F5C9EC1FCF73BD3C18 +:10BF9000CB72D68BFAA6F25DEBA17713EC9E96439B +:10BFA0004CDF56B79F853446F1C15B412FB36FD24A +:10BFB000F41D836F056548AFD730FF2AD944289F09 +:10BFC000FC303FF0BB7B91EFAF2DAE423BE6610111 +:10BFD000F807CE638B99E68364684D43BC2E5BC93A +:10BFE000FD4817EB3ADF590DE53ADCA574DEBA6F70 +:10BFF000EE3C6784B44B2B67625C42AF7F17F59FC2 +:10C00000AAC7655F15A1FCCABE41E3447F74F4BDB5 +:10C010003148F5F79C97344486AFE50497B7E8B00C +:10C020007FAB08B5E7831C1796C6E9990ED8C411F3 +:10C03000F8F42DF0A438C99F46D374FCB09F32A702 +:10C04000FA77157E0DBFA3A7DF2135CC4EA1F83DB1 +:10C050005FDEFBA90FA01E9A0C2386CCD4EB16B58D +:10C060008BCA9F48B5E6985DF48EBD9FF81067AD0A +:10C07000D748B71CC27EAE49A3FD1C3B8F6412F5A6 +:10C08000CBDD2452B90BB8A916E9D3BE5E3C80F8CB +:10C0900089B865A11EFAF574A591CE636C9ECE0A8F +:10C0A000683749324F0B501EE5E13C41FB79C12313 +:10C0B000C3885352CD5325CE13347D19CE9340E718 +:10C0C00045403BC19467D2E87B855E947912F219B2 +:10C0D0005D46C775E304E3AA4F1C57CE0E1817EE52 +:10C0E000BBC2B3AD287F6C4DC15948077F2861E3BF +:10C0F000538FA7BB7D899524C1A9CA338FF7BF820F +:10C10000F7DF6E0C0B923BF5B8617CA70AA1FF39F3 +:10C11000CFC4D143DCF8A2766A9964D4BA6376EAD4 +:10C12000BEBD6431AE6778A9E257FF742402F4D132 +:10C130001959D178C889F3C1EC3849E681CAAFDE14 +:10C14000B56FD2F1E6DC416621C9B8B4A3C770FF70 +:10C1500074E1F8219D51CAF8DE98F1FB61FC28BF1B +:10C160009C8C3ED5E357E8DCC3C79FD3A45AB7895C +:10C17000E7E3CF8571FC363A0FDC7EFFC4DECFA843 +:10C18000BE10E517E43E5F246E3D26D213F4455FF2 +:10C190008E9E30A388F1C7F3D5137E5CFED5D613EF +:10C1A00066143139ABE809BDA827D0723B8711C7A7 +:10C1B0007D5E3DA137FDD0F3C8863453EFB90F9FA4 +:10C1C00086DB18DEBFD0B889CEE7C8D304C675C9F0 +:10C1D0008DFBA95F2097FB01D4F35099CFF6812DF9 +:10C1E000C73BAF287B623FDCC22286135FE17A7EC9 +:10C1F0008566A4DC0858AE53B2EF9C7739DD97947E +:10C200000F912BC5147C8AF131F9F2B4043E65DD3F +:10C21000C1F9AF83F1DFB74B12F7A7750EC3D5286D +:10C22000974AB3CE9FDF4A7CBFDEC8E512ECBF550C +:10C2300045545F89E3479AD83E8479AD4BA627E5FC +:10C24000B8F4CC5FA31A6F872855A19EB2CBBD3539 +:10C25000A885F4CE2566BE2E0B3A31DE85E2762522 +:10C260004EC8887E4B91EFEB05D73540BE746234E3 +:10C2700062063AB9ABE8C7BB8CD03FCB88527EABE5 +:10C280002F02F9441BB6FBE2EDB577F038178EF7B5 +:10C290007B1A32AB919F5B7FD1D642E75D20A345ED +:10C2A000E8371F096D43BD89CCCBF41439393DCF34 +:10C2B000A4A62A6E3FF3B750BD6AAE2D4CE994F8A0 +:10C2C00087B13E746D94DA63D6E959DCD903FA502C +:10C2D0003EF5BFC82D8B209DEBB58DA21EB5E3E4C6 +:10C2E0008A615C5739607116A15DFCC4484B1AAE77 +:10C2F000833C9514C1D3EB75C8AFD3F985F983BEE0 +:10C30000E736C3F851AF7B40BF075D9F397EC88FCA +:10C31000E39B3E1F2B2F6079500A7A1F60FB505D14 +:10C320000E5688EA2B39FE39BC7DFE1EC683DFCF50 +:10C330008315473C049345EBFD0BAE3B7C3FAF2E92 +:10C340006447DCD57367673DD2D173192CFFFA7946 +:10C350002CBFD468D4523BA4D749E32FFF9EEB09EE +:10C36000A9E4E017FDECDD48E4D7815F6EC727A89C +:10C37000D4C34DAD268CD3EB6A3A467178AF5E6E6E +:10C38000C5B8BBEE1522C5FFC335C74CB87EBD2767 +:10C390007504F9766FCDA3B45C537926F313B6D741 +:10C3A0005E8AE91E81ED63653E84498CDEA3745D7F +:10C3B000CCF505CD65B9282F06795C90BA7FBF2AE8 +:10C3C00065FC7DBB45912B192444833D2302DAE7AC +:10C3D0005F2F1212F0926D4AEB7201EDE0F2DB4B2F +:10C3E0004E803CB3A5C5ED03D06F771245BE111941 +:10C3F0004571D7E6342EE797EC9E0774BF9D977F73 +:10C40000BDA87637FA7BE3F391DFA9F31DF778C96E +:10C4100006D0EF1C5A222FCA443FFFCC355A94A1B4 +:10C4200081AC189DE4C7EA0180DF1D817AC3E70C67 +:10C43000C397E03CD6B338D5DE338D73D1EFD2F756 +:10C440000B938C768B3EBB4CED22ED2F4528DDE91E +:10C4500016B2F6740054914E1DFE2D236867CE0966 +:10C460006425D0E9F0B935765CBFCE334F517F5BA0 +:10C4700030EB4837CAEB9C263D898FEFCD6962F5DA +:10C48000CF974E14FA4899CFD78768897D711C7E63 +:10C49000D9C8ED1C39246E3EC6F19F7E51CFF3ED15 +:10C4A000AFFABDD25F253E3A2832F9AFE43B4A19D4 +:10C4B000CEB9BE94D15D0FF244E4478BD3A87D433F +:10C4C000890357CABB399D4B65ACDDC2A5DFB18E70 +:10C4D000172FA0E0A6683A8A977E93FF3DD49F1756 +:10C4E000DBAA31AE5AC14B3D8FCF77215ECA00FA2D +:10C4F000D367C6E21EDF2FBCCF2703BDEE015A1C57 +:10C50000A1EBE2A5F8FAD8B2EBEAB1BF5D77EA6930 +:10C51000BC76D624B99BEA7FBF35D0B8D6EDF3E51B +:10C52000056B704C35E412E4BBDB9BF2A9FED6151B +:10C5300011691CA35C27D2F8D82936D3681BC8AD73 +:10C540009EC831D322E4A3C55A456F36A29F1FD59A +:10C5500029F6247AB1866E371DA6FBEF84EF233EC1 +:10C560006E00ACE1A24F2FCABD2EFFA3A6AB91FE79 +:10C570009B32A979C826101FCE7F38728AF6B7A7DA +:10C58000B958C4F2FD77AE36A17EBD8DDB7B3B236F +:10C59000C9ED8B9717EB68BE6778158DABEF2464F8 +:10C5A0003ECEE36E1D934F93DB9DD53289956FACE4 +:10C5B000E4FEBCE6187F4071D51B50E466C9F5283F +:10C5C00037B73729E9A197514E02FF13D0AF94B77F +:10C5D000414C8A738C1506E6FF4D118FF1368FB3EF +:10C5E000AFD224F71FE7BA12F5A5BEE798BC738255 +:10C5F000FE8DC629C03D02FA7D60D202E8BF766991 +:10C600003D37A0FEB15D365379F4613E998BF1FD63 +:10C61000BDAEC2800CF91F9EF9C1B6024CFFCB25FE +:10C6200044C3E4F37003DA73BCC600CA5FBB910C69 +:10C63000A3DD35D76FA6E525EF28413D1EE4F72899 +:10C64000C6C9E706F7B4E8E3F4F11C95FE0D788956 +:10C65000E2056915D94BF53F6F9C9EC2F4F15C571A +:10C66000127D3C97DB41769BD8BE7B6654BCE626A8 +:10C67000EC675D4E06F633ACF553BAB1B4E7082D5E +:10C6800050F6F76EB69F2C4B7F4AE75F0C9C95CF18 +:10C69000A21C9915B123EEBCD838D96A8EBB4CCFF9 +:10C6A000EEF2236E99C88ED2BB76BF1DE57B8F2E2E +:10C6B00044CFFF3C8AE74980041FE3CF088FF7503F +:10C6C000F28FF2F3264FA6C87F9AE73FC39FEAFC9A +:10C6D0007F52EAA5A87F8CD73B9EA2FE4F79BD135F +:10C6E00029F25FE0F92753B4FF4B5E6F2445FD53F9 +:10C6F000BCDE4B29EABFCCEBFDEB987CB6FEAFF27B +:10C70000FCD3AAF65FE3E5CFF2F7CF4E75B278A27D +:10C710008CC7EC37C37A6A513FC17DBBA72D13F993 +:10C720005D1C0E96912EE2E2F3292E8EC69B415A95 +:10C730006B4B48D3F8B8F229A17C340EFDE7FEF527 +:10C740000F3A317E4CE3AD471BF2FBC5C43B3FA122 +:10C75000BCD0E98D8B0FCB1B30ECC438ACB0D15BB7 +:10C7600085FE034C6FA6F168D26522D4170F7DF7C2 +:10C7700041E3E5C9CA27A62FFC7BAAFA5669527C79 +:10C780009C8FFA596526B219E4C6BF15B3FD57351B +:10C7900034B210E379D4EDC0F454A1DC8AC5DBE9EE +:10C7A00077A27DE0C333DFB0FADD31FE46CCD2B3F1 +:10C7B000B8BFB2AE9132301E41F94ED74689C64558 +:10C7C000D9F35D09F8B6CB9F39295E4FEE3C2E4672 +:10C7D00074D618BFAEF29348761C4E711C27B982EE +:10C7E00015E31A9F129CD09FAE5B838DB81F0FD7A5 +:10C7F00026CA7389C725D879DC6E957FC48B786784 +:10C80000ECFC26E7CB3A37F71798250D1D8F06F479 +:10C8100093AAD87C558549445789CF915A6C371AC9 +:10C82000A728EB16E33908254EF1A3FDBA9DC81FD2 +:10C830005A66BF90E097EE5D2752FBF8E006585D20 +:10C8400068D7DA3EBEBDFB69CE1F7B71FFB853EFE0 +:10C85000BF9FF0751CAA60F81BF9D24D71F332CC62 +:10C86000E5E25015B75745F74DB1A8EC1B11CA3F8B +:10C870005FCCDA7B762A6F2F23D6DECAB8F60EF3AA +:10C88000F3044ABF52F1AD03C589FD4FC55F9EC297 +:10C890007271EDA5E223C3AA72A9F8E16155B954FA +:10C8A0007CEF7155B954FC799F6A1C0FF37261FEDD +:10C8B000EC2F66726922BEA4E66FBD9C2F457EB444 +:10C8C000EA4199F22DCF8B8BA8DECDEC5FE8EF3AF1 +:10C8D000A6C4BB70BF18EAD55484034FF85D09D3D2 +:10C8E000BFBA4776657C93A230425A73627EAE0728 +:10C8F0005C4E1E3713DE86FE31CB6DCCDFD5631F59 +:10C90000F5B9A95F6FA27885443F953A3F1AEFAE1B +:10C91000F21FA9CB4DE46F7A98D37936F7DFA05F89 +:10C9200034314E8EF8304EEE22E2E31E2CF91BC459 +:10C93000C7FD98C7AD2AF141C3A7662F64FE2F69D2 +:10C9400000F7FF70BB280B14D7E60FA0FE37CCF919 +:10C95000D4118C37CE8AC5C58094A2F3D05FE3A0F2 +:10C96000FED4A83D6693E2D752F96325E91A37AEA3 +:10C97000EF95F9D5ECDC1A491A2F374592E70A9062 +:10C98000FFCB7C1BD3771A06685C5494EE3625D215 +:10C990005D7CFC1CD29D12773554C9E221A7FEFABA +:10C9A0003D13862DC5FCB0C9E3E97EC3E3E87F9360 +:10C9B000CFE991FB63957830ACA7C5F1AE63F499EC +:10C9C000F6918B782F8BC58FB6F07A69DA1041FD1E +:10C9D00038EDA3429A5F59C0F69B1237A5C4458132 +:10C9E0000620D2381BFE5EE937CC831E9F47A27A11 +:10C9F000F99BD7A23C2DE57E80FC8237AF457B3882 +:10CA000062438CFBFB433E6BBF08F431F4E72A71B1 +:10CA10007B053CFF0CEF5701CF57E20227F24B3F5B +:10CA2000C0FD7B8D3876687FB9D5FF16D2A7F7B1E8 +:10CA3000B3ADE837303A08D5BFB475BEC824E7C4F3 +:10CA40007E0BA8FF0EADDFF44E04E73F5A1F1DCA50 +:10CA50000513DB6F2FDADFE366FD56FC3D97A6F288 +:10CA6000779CA7BFE7B2F3F7F7FC97731C7FCF7FE4 +:10CA700039A3F39B5D8AF3134931BF2A7F0894A73A +:10CA8000ED7A4F262FAFB40B9C2582FAB285DB31AD +:10CA90008DE49CB710F988D71846BBA565E43D52D4 +:10CAA00081FDF61A47D15FEB7526DA29E1EF93BFD6 +:10CAB000CC64DB8B9E473ABD662EFA7BFB2E0102CF +:10CAC0009E857EDD447BA44DEB1FA671C41EE2D97A +:10CAD0005435D65EA92E2F2FFD3341FC666D9BBDCC +:10CAE000468B7C710EB31B7D1DF623F2C5F3B5ABEF +:10CAF0005CE8F3BCED46244CED46F8C47DB180DB28 +:10CB000057B6B7A5CD47BD1AEDD11817A9B4576AC6 +:10CB10006CA0E72ED01E89F6AEBE1A16D7D95F5785 +:10CB20003B2E5DE57C9441E438FBCA76BDBF1EB068 +:10CB300010393C346D699B31CE4E277FBB03ED74B9 +:10CB4000442BD1788E8E9B79BCADE4758D67BF89FF +:10CB5000C6E3A11DFD02FC67B7967E39FEB3BED2C7 +:10CB60000BF39FED29FD6AFBCFFA4A13FD673D7178 +:10CB7000717668F7F8A2FD670A3D507B9C3B7EDE2C +:10CB8000583F7B1B8BA9DDBF5B175C4EED126B73AF +:10CB90005CAD71F3D67353B81EE7E5ECA63C815C3F +:10CBA00041C8F74B999C51E8A9F7A6503D9BB7297E +:10CBB000343F2787C4F45DE05F39B1F353B2CAFE56 +:10CBC000EDC5101C057712795AC73C66EFA4E9BC85 +:10CBD000FDD396CA49D2EAFD13F577E46BA85DBA96 +:10CBE00073735AD2F3FC17CB3FB2CA38EEAF693534 +:10CBF000A19DA7ABA63A0DF77BA9F13E13CAF74159 +:10CC00003FDBF7DBB99DE629D8CF32DDBFBECB3C99 +:10CC1000303FC17A3DBDAFA253D0503D66F8DC37FE +:10CC2000E6237FEDBDDC39807650DFF38FBD82E7F0 +:10CC30004072DA8BA97D757A19A393416E87B7A2EA +:10CC4000BDDD12E39BCABA2BE3CFBE42A4E357FA81 +:10CC5000DDB5911C784387FE15E38137A87F45A297 +:10CC6000699B7F94F913EF49B4DBDB893CAC17D0A7 +:10CC7000AE9F95E05F7AB4EEAC8CB8C1D1443C086D +:10CC8000F6AD4D89F5FECFC977093D571318F5A2CA +:10CC90005DCE0E2B99EE8CF58B964BA2FF77DFF4D1 +:10CCA000D3057ABA6F2D5E6CFFBD40F5F578E6A02E +:10CCB0003B23588F78B58BFB8594F23FDC4886DAAE +:10CCC000989F28B40AC6D1B5E2E361B42B76AE23AF +:10CCD000D5689FEB4A3BDB82B8B6FB76528571F391 +:10CCE0009D3AD68E52BFB08CF13727B783ABDB5756 +:10CCF0003FBBD2E44602FCD67CE0CADD6827E917D8 +:10CD000014BAB6D07B0DD474D9D5F6AA1DB1A463DC +:10CD100008CA578DCD7717B37D13144884D9EB8D8E +:10CD20000C3F033F47B9F3F9F7CDAA8E7949FA339F +:10CD3000B67F6949EDD422A7B367D71E15508EE59B +:10CD4000F901AF42B98240C48E0748FBB81FCDC27B +:10CD5000EFFFB0E213CA55F0F9549E4A3B6299C402 +:10CD600070B596B8705FF46EB451BAEBDAE8A4749B +:10CD700098D734CAF51E461F3AE019D49F1408D339 +:10CD800038A3ED1B4B6939253E2BEF9E447A54D3D3 +:10CD9000E7F0B97F931167F6DE443C2887ACAB120D +:10CDA000F37BCF3C3F1FED1E7DB34808E5579F3D09 +:10CDB00012B122DD5D0E7A9D30964E2D4D1F788783 +:10CDC0001067A11FAC06714C627B5F145FF9BC7CDD +:10CDD0002865BE65C48E761C4A7FF6B1EBFF79E309 +:10CDE000EC7230CE0EFD35EBB6D038BBA3652CCE41 +:10CDF000AEEBE62D34CEAE740FF36FA8F1B5CDCF08 +:10CE0000D62FA74EA2F83CCF2F86109F47E38C6AFF +:10CE1000C68F338AC6D33525C6D39D070E97CB92CE +:10CE2000C41929F176D687BE4BE3EDD66B7C5E1A2A +:10CE30003770957114E3A7B54E5FA49C8E9B507C10 +:10CE4000AC9E1F54841742790DE067C4D3BA2C4FAF +:10CE500084C6BB1016E70D383D5886B8FEDB730953 +:10CE6000F2756316E074A8A5317B09CE432C7EEFE2 +:10CE70006E09F526257ECF7FE06E9F4CCF414B7F1C +:10CE8000A6F7797CCBEC443F1EC603EAABE9F3B8C6 +:10CE9000019E6F611F109F09026FE7AE20E2431BE6 +:10CEA000099A30AE60BD46CEC4FE91350C6FA5D454 +:10CEB0009B96B3F894DEB55BCA70DD5CDAE05CCAC1 +:10CEC00087EF61FA5279790A7DA989ADDB44F33F96 +:10CED00095AF5F75EA78C8C7CAE2FD2F0E4607CA4C +:10CEE000BD31AD07D6539CA27C17E6F5C7745E0F23 +:10CEF000B508FA447D52D6B992ADEB85E98F954FCE +:10CF0000B2F3EB8EBA3E7A0FD1F467C24223CCCB98 +:10CF1000B754F39053270B6CBEFC54DE77D78DAF1C +:10CF20003F2A74ACC40BDA9A12F5425218A4F65791 +:10CF30005B13A1F7388D43CFAF26A3E7981E7E2F52 +:10CF40008D0755F4F0F7FFF15E4A4F5F94DFE1BDC6 +:10CF5000B28F3BE2FD0E9F1ED8E443FEA2944F7BAE +:10CF6000E8B30E1AB777B1F9DC4F90CA1EAED8BD40 +:10CF70003B787C96F2DEC0E3B1F43CAEAE2D236785 +:10CF800013F2ADECA3A213F765AAF551DFE7A33EB8 +:10CF9000BFAEE4ABEB7DCAF143AA73F1EA766271EE +:10CFA0009CDFBDA8384EE2043E4AE965D701C49132 +:10CFB000D75FE43E55C773029D95967F6D9C78556B +:10CFC0006E97F8C9817F50EC129558DE7B02F88786 +:10CFD000CACE833852BD9FB334FC5EB017D9BD6052 +:10CFE000A9FC3451FCC5FD3506D7F8FE9A3EEEAFDC +:10CFF000E94BE1AF998CFE9AE9781EE829C1999E28 +:10D00000DA5F73358F7B52E809E84883F3963D93E6 +:10D010005C141DC13C5D5B7E5EF6B4E4FB18EADF88 +:10D02000589E3DB1BD485997BF36FE509EEA380F15 +:10D0300005473D61216A3D84F84BA81E42FC06C4A9 +:10D04000F1127D46F9990ACF399A12D36443727D61 +:10D0500087A63518FF32C271F7B95D789F861AF737 +:10D0600028387422FC3E3C87C79DCD6171678A5E7B +:10D07000D7E767F16418EF950CAF28F1604A3AAA38 +:10D080008FCED324CC83121776B47CE132E3648C48 +:10D090000B934CC85F27CB8B96CD9F75FE715CCAF6 +:10D0A000FD17A9D6276697AA4EC3F10CD6B0F1F4A6 +:10D0B000D5C138DC685F0ADB51AFB9EFA125CBDA07 +:10D0C0006AA83F90CFCB3B4B22DCCE85742FB5A610 +:10D0D0003911F7B5AC3DFA0AB503FE5AE344BB4D2E +:10D0E0004560F5DBA80C8CFD7EE2BD13EAA7C5C048 +:10D0F000FDB30075D08E36A13E857ABC9BF527FE28 +:10D100005C7F4F39D337BACB09B3435CA43DA3004E +:10D110000DECE3D833D08D46CFDD173AE977A7720F +:10D12000FBBA728E4A393763C9225A47353B7F832F +:10D13000FCA9BE90C989EFF07A5916164F1C3DAF75 +:10D1400033279F42C229D83EB49357C8FA3105DB32 +:10D15000CF8C9DF39AC8EFE6F84587A9C28971592B +:10D160007D19DF74C6C97D79DDB2481C7F53FC0090 +:10D170004A3ABD9044CFB1C7FBE9B2797F53FBE98E +:10D18000D47EB8117A6E1BFAE7ECF1C4FC3B65BCA7 +:10D190001DA7EABC5D96C147EF3954EE0351D3C9D0 +:10D1A000C7D3181F56EEAB202424C4AFBF920FFC88 +:10D1B000760FA5D37642CF550BED64F82733E8F40C +:10D1C000F8BE01FDF8F0B549D43FD76767F76B4A61 +:10D1D0007ED9275AA83C9E4BFD038B0CCC6F97DA67 +:10D1E0004F679C96FDF9FD74139D6B9C61607243C3 +:10D1F0007DAFC16FA731BAF9AD320F934026A1DCE4 +:10D20000BC4564E71FFF4AF758ACC47B1DE2FC55E0 +:10D21000BF9AC6EEC999E8FE8A54FEB61E2FA17ABF +:10D22000505F73CE00C64BCD989678FE31E66F1BEB +:10D23000A1FC2CD53D173F9FC6E4F1E7BDE7E267AF +:10D24000BCFE57F59E8B08A7874894EEFF36F75C27 +:10D25000DC36CD15F5677E95EEB97886AFB7F2EC82 +:10D2600031B2EFE70498BD27C7C1C66D6FD63B0743 +:10D27000E8B8597C7E4F80EC91E3E62D7AEF05FF0C +:10D280009EFABE8B82667EAF1EF972EFB938EFF35D +:10D29000B31779CFC5439C0EBF5E2824DC73D189B8 +:10D2A000F144B8EF88BF1BC795EA9E8B4EBCE7627E +:10D2B000C6D87B2EFAF19E0B0FBDE7C28B71A4D1AD +:10D2C0007B2E9A3FA0E507957B2EDA93DF73B19012 +:10D2D000CBB1EF4F7346E5D9E7F3BFBFB60CE3A67A +:10D2E00014FFFBC669AF2D43FCADF8DF6B79FBA9DA +:10D2F000FCEFB379BEDAFF3E51FC82F317EF51F930 +:10D30000DDBFF8131A3713D3DB3F1B577EBBA79142 +:10D310000B8AEFC89DA6C477B0F2C43B6242BB73D0 +:10D320002EF6FB6BB17695388C175DECFD412DB375 +:10D33000971C2C347B5A705DB5A157AF80764D0F8A +:10D34000317F462C5EF651D3F2387A79977F6F772A +:10D350003AD3D78F4B1A33DEC7DADBC4700FC8E17C +:10D360006BE8B9984622A149AB5F179A8BF7D7F6BD +:10D370003F4024D483C5F6500BFA59FA1B47683C4A +:10D380006D278F7B7EB6E0CFCBD0CEF371B9C4E5ED +:10D390004988E20A05C728FC6E061F173186B6A128 +:10D3A0005CB2DC01FB11BF833846481D6718C51D00 +:10D3B00051BFAB5354FCAE28772FE5F7E7287851DF +:10D3C0008D5FD4F9A9FCAD0E1E3FFCB7F6B72E74E5 +:10D3D0005F98BF758B5B50E1ECAF96BF75A1D2FF34 +:10D3E000BF92BFF5D212B6EFD57ED7F7B27C3E37EB +:10D3F0008DCB70EAF93D39E3D2C377BE607A782FDE +:10D40000CBBFDC9D1DFBBE72FFF944FDB8CDFDC551 +:10D41000C6011C3C54DD8574E84ED74B68FF57FAB3 +:10D42000516660FBAEE340F308DA87728722D4FFCF +:10D43000E0C54B3841EFCA6DF0DC80E9C9B285D058 +:10D440006760BF807A626E7BE75CB4C31ED85B7D89 +:10D4500003CA8FF7E4B27CD45306D3FDC21237DE81 +:10D46000ABC9F8CE20E73B5D1B9FEC6B03BDF8AA70 +:10D47000BA10F56FD9FCCC5E95D7E4BF0CF9500912 +:10D480008F9B52C69FDB1416D0EF75B17AE52CB78F +:10D4900033E17E23B55EB9BE484AB8371FFE8EE73A +:10D4A00066A11F8284E2D763B995DF1FB02A40FDD1 +:10D4B0000836BF8FFA5B7771B9D73B83E13ED9CB92 +:10D4C000FD899A3973B1BF86CBFCC59A38BBDA6E39 +:10D4D000A786969FE8F70526FA3D81897E47E011E9 +:10D4E000777AD69B9350EC120FDA67AE7EC4BD6B91 +:10D4F0003EF2A15F6BE8EF31ECD5794513A4379C80 +:10D50000163C186AA8DEEF76E3B5DD78AEA76D238A +:10D510007C4787F3CDCF416D94681A36EE7C7ABE96 +:10D52000E386CC0C5C8F739C5E87EB5AE97DDE3D15 +:10D53000EDA244E9F0C44DDBF03CE67B592245F313 +:10D54000A53A3FCB6F123D32E6D7B5DE87F824F619 +:10D550003B172B697EB724D27EF534BC3E1FF34BBC +:10D56000EF1425F42F0FF2DFB1E86FAE4E5B49EDFB +:10D5700029A728CE55DE0FB6B3DFB7C0DFF1407A5A +:10D5800053CE6F95B8FDAD62DC38D73B597F7BD168 +:10D590005E09F9BAEC97A85E316893045CAF69CF75 +:10D5A0009A28BDE565497B4C30BE102F6FD8A0F19D +:10D5B00020BFD6B533BC96E70810DC37860D7AFA63 +:10D5C0007E9F93D19B8EC0BC25C4BF4AB1B406CB0D +:10D5D00071BAE3F77D827CBE86D2CF2C22A11E19C0 +:10D5E0005EFAA617CFBD74AE23F45E7631A09C7BA5 +:10D5F000D1936F40FEF662F69D08B9CA5C45E579A5 +:10D600006635EE23E5DC8B93BC44ED6647F8BC1C25 +:10D61000399E49FD313BE6E456D1F33E59B280B81C +:10D6200063158F538EDAC1CFAC9F2E523B780E3DDF +:10D6300067153DFFDCB4E51D4D259EEB617E44A9D9 +:10D6400049A47E5CB59D5B995FB5BD5B39075DA75D +:10D65000F8A3627E157D05E58FC9CF432BFEBA8600 +:10D66000E207A45637EE638607E49B610EAB6018B1 +:10D6700099DE461267DFF3F378F589F86B5EC5979C +:10D6800023F717548817749FD9AD15C2573ACE6A3D +:10D6900081D2FF2FF83EB3DEF4392F603371F2FEF2 +:10D6A00004924FCCEE76D775F1F7582BF4A3D0F354 +:10D6B0007A95DDC6A50D4CC77362830D7A11C7F14B +:10D6C000E1990FBDF4771C04298076ABEEF61502C4 +:10D6D000C643BF0F0A15A19C6C5446DC2239B50124 +:10D6E000F443DB8DFE61E453B95EE328EAEDB94112 +:10D6F000A1A580AE0FA17EEDDC0622207EB7FBCD7A +:10D70000D44FAD9C975BAAEC0733EB8F6D15D97B9B +:10D710003FF30335E2BEB07A93DFCB123B6F585B29 +:10D7200085B69CB7DD6D2FEB3292EC978B949F35CD +:10D7300015CE71E5E798F340C4B60CE7BD5C64FE16 +:10D740007183EB3F3BB81F34A93FF105BE0F2FF8A3 +:10D750007C4DCADF0D19BF1F5A8DF708AEDF250FAC +:10D76000DF1ED4DAB1FEC843345DF942E7BC2B6258 +:10D77000F76DABFBF907E4EB71F844B96F5BB13BB4 +:10D78000EF5EB63F3F7EFFFCCC2926DCE7A4D653F4 +:10D790008EF0713F5221F0F3C0FF548FBFA3F1BE52 +:10D7A0006C71E2794DF5F79567EA73C1C9F953CF0A +:10D7B0005AC69F0697113DFADF061F78391FF1CB35 +:10D7C00097F57B3AC01769F9DBD7EAA99DEAB0C0A3 +:10D7D0007E5F475E6CA4726250C7DADFDDA81F92DD +:10D7E000E3F8A6FA777582876FA7F7604FA4276ED4 +:10D7F000AA489407EAF954E7A79217E7BE2479618B +:10D80000ADBC303D7156E5575B4FB42AFDFF82F544 +:10D81000C44D9C8F29F202DA2377233ECF1329CE01 +:10D820002F180A533F82A2F714B48FD0742EEA3D0A +:10D83000F86CE27A4F33E83D6ED47B4ED1FDA2E81E +:10D840003DFDE91101AF5EE9E0F4D49FCE7067546D +:10D85000EF0924D77B76573893EA3D9BF8FAA9E77E +:10D86000F710C7A1CFEBBCE595A81F3A599CDF1F65 +:10D870000F3C41F9D666ADBC04E7B733A4A5BFDFC2 +:10D8800083766176AF883184FB6D5085C73BEB6A48 +:10D890008DC9F89D829FF74E4DEC9F82A32F56AE07 +:10D8A0007C36815C19D2C9B978AEEED89E2D761A35 +:10D8B000E7CB7F7720155F9CC9CFD9410B267EEF40 +:10D8C0008009EF1B50E43DDEFC4E71AB9FAD77B796 +:10D8D0005FA4F65F459E031E68C13459690EB0DF30 +:10D8E00093F353796FC5731C54BE07282ECE6DD6A3 +:10D8F0008B32C5076B04B48BF7CFB5B1F3F00DA332 +:10D90000142FD8791C5A6EF01D6A47453F14B6A7EC +:10D91000C87B1F8FF320DC1E1E27EFD7E07AA6926C +:10D92000F7CA7D03BEC3150FA2DD4D19974B4BF807 +:10D93000FA12EA4FEA6E17E938DE079C81B8208AAE +:10D94000736E54CE89B178276B03F35B28712FFD7A +:10D9500077B2B8979CC0BB54EF904442FD67A9CE04 +:10D96000F97F2B8AE347E938EDCE79F4DE0075FFC5 +:10D97000615C2D95D9717166461667D613A916514B +:10D9800035DFAD1BA17AC3F9DEB77063F1D0CB32BE +:10D990008D2F63EB43340C5FE17AE17A58795C6058 +:10D9A0002C5E8CAD9B0D701DF2E70FCF5C4AE9A099 +:10D9B000A73E93E92F75EFD275033AA0F33516D73A +:10D9C00011FA7B4080EBE83D08EAF9803F8EEB16C8 +:10D9D000D1F1DBF87925657E92CCC760B2F988DD9C +:10D9E0006FA127CAFD16F4BE8A081BF7B7F64FB918 +:10D9F00016D75D6D5F8D9E9F4B615FBDD87DFAC36D +:10DA000002E7B87EF9E556767FE0987351AB585C33 +:10DA10008C727F2094B008D0EF26DE150319D64F04 +:10DA2000413C6DD3109CE7FFAD31533AB6EE15285B +:10DA30009FBA453EAE2FC5FDE8377BA91F9784F5F9 +:10DA400068BF689CCBF0358665627D17AF7F4BD889 +:10DA50009030CFB73E6648889F729176AABF361243 +:10DA60007DEC3DE2FED36F9D46BF924BF59E68BEB6 +:10DA70006DC5F9C76B227053ABF9CD86D3A6E78E7F +:10DA8000C7B57FA6323DEB4DF4057C9D7C9D9EE3A2 +:10DA9000E2F553F1AB0F371A9F3B0EFCF54F3AEF0F +:10DAA000EF71DF133C24360BF4F3CBDF2CF5279119 +:10DAB000AB183E88F368F68E12933375BBD2E5DA65 +:10DAC000E7D1DDD2EE79D7C8FCE521CA17DB3DA44A +:10DAD00006F15FBB87DD6F91312F42C6EB1F94BF0C +:10DAE00002991F949792958B6B37A4A3ED6666B04D +:10DAF000EFB17E6E059A1EA1B8CC3B6E7CA6C1C963 +:10DB0000EE8F51EAA52A176BCF43E36752F67BA34A +:10DB100034BA4A771EED592EAC3DF5B8CD0E66FFEE +:10DB200049F7407E1CDDA9EBBB3F693D360D96D61B +:10DB300054CAEC8926C7FE08C62BDEF14B936CB4A1 +:10DB4000E1FBC4731C5BEF3D7B6239D0B989A44B08 +:10DB5000AD582F72F7BF629C7CDA1CBD1369B148C7 +:10DB6000DE2B233FDB564AC2B8CF76DCCBECABDBF7 +:10DB70000BF3E93C17B5771893C525F56CA49B2EDC +:10DB80009A4E6B0845701FE736F90BC4B876F21051 +:10DB9000EFC7D1B5D26EAAF919D36E5348C676F342 +:10DBA0001A3CC5A233365F4ABEBA7D6B785D04D994 +:10DBB000FC1F274BAF629CC2594D3ABDCFA6F4194A +:10DBC00091A64DB039511F0A0941F9BBC877169883 +:10DBD000E83DDB3B2607238390F6FFCA24237F74AE +:10DBE0007FF2EEBFA3BFCD3024505C6B68D3BF8003 +:10DBF000F94BC4748980DEB7E37B81C820B4D37845 +:10DC0000B24C463FA7A13031BEEDE648BD88FCE5E9 +:10DC100066476608E779C7678C5FEED927ECC17B5A +:10DC200015438E812D68177E77483882764AF2092F +:10DC30008C67269447FE001BAE31527F8CF2A750B2 +:10DC400001ADBF87CFE7369C9F92D8F81B4B835717 +:10DC5000A39DA1716FD54C4D1CBD340EEDA4ED9B61 +:10DC60004AFD78E33DD9C1ED966918BF14471FA15D +:10DC7000D09FE938A11F2EFC3DC59B23FF8FA66FC7 +:10DC8000DE9B914F79D5987E313B66E35E17B56395 +:10DC90002AFDD9736F684B2ECEE701E108EA1F1306 +:10DCA000F52BADD0C32E8650ADA7BA7F1BF8B99423 +:10DCB000CDF87BB36827C5DF9BBD8C1E77A07C7435 +:10DCC000738ADFD3DC399DE1FECD3CAE18C6A1C11D +:10DCD00078171A331337AECD3CBD7BBA90D00FE521 +:10DCE000B9D9A4DC37C7D64F57EA4CD0E3764FE713 +:10DCF000F12FD0BE3727765F3CB6BF3107EDB6ECCB +:10DD0000CF48825E19E6EF29B18D44A01D33E0298A +:10DD100094EFA6D35B09E2FD36423C97805C321655 +:10DD20006A3F48F85D60CD497A5FFEFB1E76AF55CD +:10DD30001A81FC52FE7D481B3D004C2D63EB996D12 +:10DD4000328DDF307B4940AEC27EA8EB05697C0492 +:10DD5000D05EE02A7B92EFF2F2286E51FEA8E5D366 +:10DD600091E9DC1FA0924F048D2CB352CB27858FF5 +:10DD7000A2A519F98A39209E437B8CB9E6BD8D286E +:10DD800037CD644E4BFC7D6EB1738022BF2F42A90C +:10DD90002FD3DFC93337333E689E734A409C05401A +:10DDA000D383E73CCCF35E12B630DC4926E1EF3397 +:10DDB000D59C12F643BA6F2B71229E37D7BC24FC38 +:10DDC00014ED225719F9E168764E9AB218F4DFCFB4 +:10DDD00038357715B6779CE54F9E5743E33627CB0A +:10DDE00089E79FCD5EF57D8E72829C2844F809FDFF +:10DDF0000E7A6B6BE7417BFBBCC630E2FB1D735AAE +:10DE00006BAF82EFEF850A1A4FECFB65FCFB0A7DD6 +:10DE100052A805F5A5B91DB568FFC33BA75879B64B +:10DE20006F0A6B8EDD8D76A3423E7F63E421D23A8A +:10DE3000ACC79FD2186E53F69392FFCE74660FF85C +:10DE40000FBE5FAC1BD8FE7A1B64304BB37DF7FE70 +:10DE50007467C2FED871F9EA57906EB709666ACF47 +:10DE6000DCC0ED38A48ED96DB6F1FD6AE2FB55A990 +:10DE7000B78DEFA74E2131DEFF520FEBC7A51ED69F +:10DE80008F5BF9BD6578EFE0EB58DEEEB7679A631C +:10DE9000F9691B0ED0DF9BFE6FF1D576C0008000C4 +:10DEA000000000001F8B080000000000000BED7D4B +:10DEB0007B7C54D5B5F03EF39EC94C721212924051 +:10DEC000126620C084063809939040C09310300A2F +:10DED000DE3B2862783A11842841068B1A5A349323 +:10DEE000109EF2088A08147112C522ADDEE093225A +:10DEF000DE3B04A568BD365A04B5A8812A2A524CD7 +:10DF0000B516FA7D58BFB5D63E2773CE9000DE7B9E +:10DF1000FBFBDD3FBEF4670FEBEC7DF65E7BBDD710 +:10DF2000DAFB9CF9E107F8BB8631076372AB9331EA +:10DF3000660B33BF0BAE62984D1E0A17C9CD580150 +:10DF4000633FA8FD2A9F622C97B12D6358C4E863F4 +:10DF50006CF30A166EF0006C160DB727C335D1208E +:10DF60008524C63CFEC3EF0BF170DD97733BA3EB3A +:10DF7000C8F926B8B2C6E4D0291BA3BF1FFA43FFD5 +:10DF800069138400CC9BEC657218C66519C9022B15 +:10DF90008ECE6795EC8CA54461C642041F3C698D0A +:10DFA0001861BE8D30BF5580EB47D7A507E0F9CD8E +:10DFB000E98174D189F885D3FC007BBC138E201EC7 +:10DFC000302E63E9085F1D5EEA3CEABCEBEA9A7218 +:10DFD0003E3333B6A16E2B5DB7D685E9BABD6E3739 +:10DFE0005D77D6B5E67C36508B271F4F48807B0384 +:10DFF000187349007B95F1E1BF84223D9C1ED0C37C +:10E000007DABF570BF5A3DDC357E3F808DD1797791 +:10E01000D6ED53F08C103EDBEB8E10BCAEAE9DE027 +:10E02000AD75EF13ACF68F1D3716AF583C62D711A4 +:10E030008BB74AB778D6CE18E06502DE203FB77BB3 +:10E0400093046660EC0FC303932568175927634850 +:10E05000979C5347EE0711F33EB92C4A7FF82F7B6C +:10E06000B31E76B265340FE10DF266BA3FFC461D71 +:10E07000B0D4E133B8D702CCC684E501208FCEB747 +:10E08000ECA1B5207F4E5FFE7CD3309093EA776D94 +:10E090001D200FEBAB5BEC3008F3DADEB7F941AED5 +:10E0A000B7FBCA12508E99C8E5C22125EBE6630C76 +:10E0B000F400FA392E24B3D088E8BA04A180D39DA5 +:10E0C00099D90F71D1F5CDB4CB77E2BA76D4B1D06E +:10E0D00029A06F58B93E89D781487F7EDDA0DCDF5B +:10E0E000AE5C5B94FB5B956BCE912909A87F3B15D9 +:10E0F000B849E9A7E2991934B08886DE9E90834535 +:10E1000034780F6C4AD2C12EA98FAE7F42517F5D09 +:10E110007BCE093E9F2A0FB1D7BED5FAF906ACD601 +:10E12000CF971ED0CF8774437BD1AF563F6FA2AC41 +:10E130009FB7A7F9368D611505A8D7C5605780B67A +:10E14000F1252BDB85617805BD852BD3CA27E869CE +:10E1500002D23F9DE8BF1DE9BF5EA5574932F18558 +:10E1600031C9AD5DDFFAF8F66AB40B4059C2939934 +:10E1700024F78D9759FF41A9A12104436DF019C8D7 +:10E18000CEAC934ED950CE9E2F3230A31BEF7339B5 +:10E190005A91FFA1DC01D7750F44188EEF8CBCC1DA +:10E1A000DC30EE2FEA4072AC004B111600797AAAEF +:10E1B000CE46B0CBD42AA0FD6235CCB30BF9648B2C +:10E1C00008684F59106018D7E50C18A87DAB028B72 +:10E1D000410EEFE0FDB7D589348E2A7FE952935086 +:10E1E0000AF2DD974504502ED629D56EB5C1FD4102 +:10E1F0000C044603A7E3D2FBE0FFD56E8D009EA181 +:10E2000029E3DAADA8373E16463D7AFEE22F050631 +:10E21000F00699451AF2E07ED1BB215CEF4FDFB6E4 +:10E22000876C6951BA387D7ABD07FABF89F457E522 +:10E230005CEDF7BC64A8083B793F968C722036935E +:10E24000BE2A704211874F4806E207D887F7701C34 +:10E2500006F603F9F6FC5BEF8AE81F7EAC7DE80466 +:10E260001B40FC6511D263679141467BE0644BA281 +:10E27000CF7908EF9338DF5E456E762BF8AB7AEBFB +:10E2800062A2D101FD125907D9AB2F8605BE24FB2E +:10E29000F5647B7B2EF025EF35D980F8FD61B87CE5 +:10E2A000462A403C67EAE892BD590F3BD94C9A5F39 +:10E2B000C553D5EB8C1A030B69D63378AB83853401 +:10E2C000CFF5999BA46BEFF2835E2E9FEB503E61DE +:10E2D000BCB5DEB6D5FD017E02D86EA47E91EB06FC +:10E2E000A09D6C37B2B52C2A2FB172FE0B94A7C13A +:10E2F000F0DCC5DFDA517E1D414E2FC7A5F4B2E632 +:10E30000C1BC19E318F9DF9C9186700BAE23572628 +:10E310007EAE97FA87D70A28E79C9EEB91AF203F05 +:10E32000EB8B58D808F7AFB99840F295201948DE22 +:10E33000543AC373A9689F133783DF00BD6E55EE4F +:10E34000FF6558202D0FF97811F02C44BFC1880FBC +:10E350004FACE37201744F477CBC4F5A985B4777D0 +:10E360003DEC64006BE93E2642F2E50C723FD1C5FC +:10E3700007D48C7CBACAD67C341FB1714198E40AA8 +:10E38000DA23D624B8A27FE885F65B7AFA5333DA2B +:10E39000EB22BA3E5827D3352DD0C9024EFE1CCAF7 +:10E3A000A1DCB6ADD482FCC8609295460DCB480F77 +:10E3B000BB97897B803E0E2FD70B47096B89033CA7 +:10E3C000EDA650BD01ED4209D7FB746C07D89A2128 +:10E3D0003E61C0761B134CD8EE6712B68B4A7BB2F7 +:10E3E0005F69778AA526B41B45D00EF29AA88C1FC8 +:10E3F0005FA4B48BAD111ABF92B7C729CFF7AEE4B3 +:10E40000ED0925BCFFCE812C9C2BE0BC1022FA101C +:10E410006E7F06E1643FCCA981E38B60CDC951B822 +:10E420007725636E4DFB639E63690D8CC6E3E3CE77 +:10E430008A8419CCB31C4901F4DF59C5E52574332E +:10E440000BEF4259BD68E4FD6E9049AE9258BB9BFC +:10E450000B7688F8B7F37B004621FC496544436797 +:10E4600047AD25648C477A0619C685AA9C7F3F4C28 +:10E47000BE15E56545D6876571308F03E83218D63D +:10E48000ED3005BF403BC8B2991BE7B547BE6C886D +:10E490008379ED452C0F2250E6B071BAB00C0BE138 +:10E4A00035FC4007AB7246C78DCFEE90659CDF14FC +:10E4B0004CD3FA935502AB6C257FD3F1018EEFC894 +:10E4C00070F7C77558235F6E9B8F7CF40ECAB7C375 +:10E4D000FC0FE509A4CF2E030B60FF154BB7C8183E +:10E4E000B7D84DC18302F26F26CB43FED86DFE83B1 +:10E4F00002E231056086FC9578FB240516DD1CAE32 +:10E50000E0FD6D1961793EC036392D681471DCD398 +:10E5100084873D83B9077B108FA7E539D06E0D380E +:10E52000837689E815C1E7EFCA60ADE8DF40FEF801 +:10E5300078012E7F765B139F7F2EF74B7627E3EDD6 +:10E54000B2028B2287CB79FF53C3FD1B507FE3328E +:10E550005A59696E943F19C3030FE1FD583EED34DB +:10E560007750FCAEEACDCEFBC3E44F1D11456FB230 +:10E57000196604B08EA7486FACA037B88E58BDB1ED +:10E58000A2DE245FAA37F66C2ED756D49BE49EF504 +:10E59000C68A7AE3EB596FACA837C957D69B553971 +:10E5A000A037A867D95C6F56E5801E78A27AA3C20F +:10E5B000AADEA8B0AA372ADC254F39C134A746EE17 +:10E5C0005655192A296FBBF8D3B4294335F7334F71 +:10E5D000A723FD56A17E90BF7F666BC4D9739C9321 +:10E5E0001E00FBA5F5AF52E008F22751067BA6B549 +:10E5F000A3B9B20E063D24FFB33383DBF35519FDF7 +:10E6000013B4FA167B6D867888819F791CE220BC52 +:10E61000AE01BFC3AC3DF7772C0F07FD5CAFDF4702 +:10E62000B95D3F14F407E6898B2C3D680638AEC807 +:10E630009D8FF2700EF507F05D917398F4C66982B4 +:10E640007C16E3309BBFD4CCF948FAE1047D51EC51 +:10E6500021874577BD49D36E73C7E8752EE835CA63 +:10E66000ADA95DA7D7EB15BD762485037E4D7F153B +:10E670008FB47C7E9D28F9CFA1BDD959DB6243BA06 +:10E680007866BADBCC30BF54C9DC06909B7E9358C9 +:10E690001BE2939CCB61BBBB89A11D017909C541DC +:10E6A000EE086123F7AB8A1CA15CA01CAD8F9123FF +:10E6B000158ECBE572A4C228776E4D7B17FE39ED1F +:10E6C0003A395A51708CE8EBF4825D403F14799AE4 +:10E6D000E25787374C712BD07339F98908D727A7B0 +:10E6E0002D50AFC83FE9BDD32973D8AFB48BAD214E +:10E6F000827379FBFAEF1F0EE1F3A181BC7D95B324 +:10E70000E33AD28FDA2421A4C1AB4FBE81ECE04EB4 +:10E71000D954D1DA8DBCBE99C7E3C47992DC2F1FDE +:10E72000FA5D40FA1644E9EBA83584AC684F7C9654 +:10E730009368579AA5C0B7646796ACFC8B11E31930 +:10E740006F84ECCACA740BD1F5B137CC61B417969B +:10E750003EAB65B4C72B05168C033BB8B2CF5A82CB +:10E760002DFD4DC13810514BDF75BCBDCC46ED2B96 +:10E770005256F2F6394E82CDBD6D34DE8AA52C1C80 +:10E7800007F45BD1FBC3696877CD5916290ED66FA4 +:10E790004E3D41F08A2C1BC1ABEEBD37381FE8D08F +:10E7A00098B892219DCC239904E9245B5DC77667D4 +:10E7B00043DC9065EA10D00E6685DA19D1DD0D7E56 +:10E7C00089F42D28239C952DBAD792BCB0DDB91AB7 +:10E7D000BDCD57E8674D76A7621CD5350E33913E07 +:10E7E00030673EF9D9C63A16CED6C4E925F9FD956B +:10E7F000E7020CEDB759E4F208D7706E37F9FDC1A6 +:10E80000A253AB312F581734501CB3AE88FBED0D1B +:10E810001146FEDC6BB31907635C0A0FAC05FA6D99 +:10E8200090F2DFF442FB5F771B24580B3BB84EE9B4 +:10E830000F7907C6AD7B769F3AE285FEAE621EB7C2 +:10E840006E90CA281E1C7E2191E22B5B4CDC9A053F +:10E85000F7C3BDA2B074699C3A33BF209A8F372B9F +:10E86000F1E4E30A0C71FC6DD89EDD28D6E36389E0 +:10E87000E54C40F99176F3B8B79BF1E65D6EBCBF0D +:10E880000CF32F4079ECBF5A1494B8B406FB671D03 +:10E8900000FF360CAFAD32E6AFB1F90173F3B83318 +:10E8A000EBC06A3FD6A362F385AC034D321BD64D55 +:10E8B000DEA0C4A159073A647C2E0BE250A4C77BAA +:10E8C00023785E6686DCED07ABAE3EF100E2A3E6A0 +:10E8D000C73DD9DBAEFC589CA2E4CFED15983F2490 +:10E8E0006624E7A3BCC5F667AC81F0D828C96BF3F2 +:10E8F000E91A588FD72657D1F503B0D9240A18A79B +:10E900003509300EEA7FB181FCAD11E29CE7681E4B +:10E910001FCD73CDC53A7132F45BEFBB5BBC2D5795 +:10E920003B7E3D8D7F6DBEBC05E9ABC6E9ACA483E3 +:10E93000E2BFF875F9BC7E17531788ADDFC55E9D41 +:10E940004B5A1D83A09745A91FA4551D7520FF7F15 +:10E95000961FD895AFADFBE59FE983FCBCE6E227A7 +:10E960005437B21618FC94CFA6F99464BAF5CD21A9 +:10E9700080927102A74FFAED4F52FED52467E7A3AC +:10E980001C3B724C64173616B95B8C9EE87A20CF1C +:10E990007D0EE7D970E2B88C7A6ACD3CAAE4B93F23 +:10E9A000327F848C285448F55BFA2BCD7C32B4003E +:10E9B000ED3D180AAB44F5AE23A53C3FA4FC6FBD6A +:10E9C000D412B91FF5F0D766370839B37EFFCB08EC +:10E9D000E2BF43B6B5366072551296072563BE6C2A +:10E9E00065A8B78E17DAD860E8FFF1EFED21F09156 +:10E9F000DCB9146BEA622639827EC33884D70F1CD7 +:10EA00004A3E75693D8DF343B435C9065EF7E07241 +:10EA1000A0D0DFB5A413C300763C9FDBF7AA84C067 +:10EA20007194237975733DC67D36C89790BE267064 +:10EA30003098FFC13F4C485731C0E7ED53CD4A51A4 +:10EA4000BE32655BA711D625CAEDF238CEA24E8C38 +:10EA50007B77E4073A90DEAE12C349F40F2E5F983D +:10EA6000FC00CA21C54FCE290A3F61E8DE601F15B0 +:10EA70007ACACBF61EB4F8707E318FE617FDAC2A49 +:10EA8000372AF75509FE332497100053DDDC99DC53 +:10EA90006D7E1D95674E877839546A6251FD7CC240 +:10EAA00077DBF5E318E9CF77B8EE4416740CC0B8FD +:10EAB000B0B891E4D268E0FAC39E3250BC292FABC3 +:10EAC00017B4781102009B92793DE57BC50F542560 +:10EAD000C8DFE378077D0D0D211FCA21AF13ACBF3E +:10EAE000789EF47A4F898135B8F17E5902BB5C7CFF +:10EAF000A8D8E12E18260C42FE9B0E7116E6C15BCB +:10EB00006FDB9E7EB9B82FDDFBD08D68A740330E3A +:10EB1000A2FC3940FEB04E9B1E6E09A1FCBD2D30FB +:10EB200092AF6EEA0D29230A2EB5B740EA37BC40F2 +:10EB3000BB7E21B62907FA3E16AD17648E80756F2D +:10EB4000DC71EAC8FD68D797B5FB87B8C91E678D29 +:10EB500048F9AFD76758895247DAADD40B2EA90BC5 +:10EB6000F07A62BA520F50E53AA1A495FC81536045 +:10EB70007E94B384928E10D64D1265310FF32B889C +:10EB80002B4B292FF4011F011C3582F3EDEB7C7F09 +:10EB900001AE3B23C8E395AB952BC8334328F75808 +:10EBA000F243FAC6FB0C02C106D69990C6D85ADFCA +:10EBB00093E20037E94319D223B3A6A91EED9428A6 +:10EBC0008784EEF42156FE49F3347216EB0740DEDB +:10EBD0002622DE578B6FE278D326AC7B36A19E626D +:10EBE000CDCED4B91AE14466E3F8B3CE7AB4D156A7 +:10EBF000454F76E6AC156420511F1B9777F88FF2CE +:10EC0000F10D275227433AC1FA3979DCAFCE337B75 +:10EC1000048FC36F55E8CA9243E9C8C7FF182E2F67 +:10EC2000473C63EB95EBA46F6C5A395E171F56EAAD +:10EC3000C5921BF7C35806F7570B461874FB62B111 +:10EC4000EB3A28BD6BC37AF07AB8627DD86B3B6231 +:10EC500043FBB05EBABC9E3950CF4644E1B54B2D64 +:10EC600095B82FB6B1A4C5A6CD4B1E50D633519240 +:10EC70009712BD95FD2DA3254CFB2EAA7D8EC56B4D +:10EC8000A32954F122FA23898531EE769628FE33A2 +:10EC9000469E41EF02281F0E9B521FAAE679AEA5A1 +:10ECA0004BAE5923BA82BE6ED68C7E6DFD08D5DE82 +:10ECB00004D6E373D61AB0D386A85D8C37852316A5 +:10ECC0000F421D32DA1DB4D3E85FE28BB89D4E547B +:10ECD000F8EF1F117804D7E392543BDDC1B8FD5320 +:10ECE000E432AD073B1DBA929D76F37AB0E2BFBA2B +:10ECF000F02A0F33B4C3EABA329784EDA88F7D416E +:10ED0000FED06FA4B1A344CFA622C326B4CF1976F8 +:10ED1000C6EB40C5207758170679ED0FCF9EFFE868 +:10ED2000731BEACF7627ABD0CADFB38AFCFD9B2AE0 +:10ED30007F22C89F8BE4EFF723BAA997AF03790925 +:10ED4000382F95BFD8F5C5DAFB57BAE82FBF82F444 +:10ED500053F72DD679957D0B5F9B0DE56E9D97EF53 +:10ED6000575CB5FC2D7490FCED607C5D0E07CF7791 +:10ED7000DF54E66B57D6D7AEE8C37A942F8C3F505A +:10ED8000BE84E83E5C37F2D58A7842FEF62ED26128 +:10ED9000BD8FE76F2A7FAE64371C417610F393A8CE +:10EDA0009D6D12B47AEB50ECAD6A5F5D25DCBE8AD6 +:10EDB0007213D5915CF780FD05F88C82B7E8150FCA +:10EDC000A23D0E8F087C364213FFB97C111AF7C79B +:10EDD000DADF34B4BF28DFBE86FAB2E4A8FD8D9531 +:10EDE00077885342182FF691B9BC81FC7F8774C98C +:10EDF0000C84658BBB1BF957ED726853E98FB4CB5C +:10EE0000FFC0755DED3AD4B8E4E5E17E8BAF80F4E8 +:10EE100096FC1FD6FF7D1AB955FD63EC38EB2C929A +:10EE20009BD76D42DDC6E1F19011A0DD10E50EA289 +:10EE3000475F851E2A3F8D3E7F0ACE135FC4E9AF30 +:10EE4000AEBF1B3D60B266DD19BE2E3DC840BCE3BF +:10EE50002546F580F81A875A0FF0D0FDB921AA0788 +:10EE6000C0F83FCABF3A8B9A0413CD1B34203D54DF +:10EE70007CD57E465F60188EEFCC5B62C0753DA18D +:10EE8000AC2B63877BFA530CD711A1FD43B69DC70A +:10EE900071981F4DD6D4EDA6FA0C6A3EE5C371BA3F +:10EEA000E2BEED6ADC7709DF75EB2FF1A9F1B35C07 +:10EEB00082F47BEAA295EC55B3C4F7539D8D90DFA5 +:10EEC000C677BB0F5686F3A9F1D536751F55912B22 +:10EED0005711A3FABBBB5A7CC7EB8EEE93411E3D84 +:10EEE00011E7C99EDBDE9403F7DD219E4743BC3565 +:10EEF000C97715F1966919DFE78B8DBB5C8D8ADDCB +:10EF0000F0E9F3BA835BFB7F68055635973337DA50 +:10EF1000B5156B7AAFCD01FCE2B71A18D6F1132301 +:10EF20006BC8EE25361AC276DC876AEC4FFEB62730 +:10EF3000FE6E54EA915BB11E69453FD529537DB001 +:10EF400084D7CFE36D8CD781655E1F8C7786381CA4 +:10EF500050DAC5260ECFE5EDEB62EA99CEF276A245 +:10EF6000BF534E8A1821271721DE66DAF314EB0C03 +:10EF700027CD14178779FC18804C4EB77F9FA48348 +:10EF8000AD5EFF1137CC6B56E46EB573AE1BF3C7A5 +:10EF9000FF1816B81FF967CF6661ACCFDF15626145 +:10EFA000D4AF8519610C97D84633AF578E37962466 +:10EFB0009C223BCBFDA74BE063AFF7713B6E75B76F +:10EFC000CB189F5A434C0AE37C1961CA5F17C233BE +:10EFD000BDA0CB72A057B919E7F3AF41FEC6E576E5 +:10EFE0005890DFEAF8B1F47DC8A7C65D8ADF350521 +:10EFF000DCFEA13DEBD7C561FECDB80EC413EBB866 +:10F00000AB99DE9FAAD76CA974AB8FF677FD47AE9C +:10F01000C1BADC50E646F95C71719C0DFDE54A977A +:10F0200045D9177AAECFC1EC9EF55ABDAE81754D6C +:10F03000E2E72DD82458DF0A675325E6C7FD0A58B2 +:10F04000A8BC04F000BF86F05EDFA6E9C9B08ED58B +:10F05000C8933E8C0D7A71E3F610E0B902E1515C81 +:10F060001D915F6BECBC9D85364EBF9AE719E3F5A9 +:10F070008C2D96C08B649FB26DB42F125FD4694102 +:10F08000FB740EE9ABF4437BB166D099348C07FB7B +:10F0900015E8E350D3F0C0AB3E8DBD8D2FE2FB2AC7 +:10F0A000CEBC27CB308E5BC512448CAF87D8F879A5 +:10F0B000AF214ABC3CC4C4616301DF87EA55C0E5A7 +:10F0C000E1131F871DDEF074AA3B82E5C6E7F798BF +:10F0D000F9BE622847D93F9119C989AB466C469B56 +:10F0E000D8283E44797EDFF13CCF795FB14B626D29 +:10F0F00024847EFBEBFCC0BB5A3CFBD6F07C3C2A54 +:10F100000F4A7D2703EC37DAE9E1817E05E80FB28B +:10F11000B91D57D7D597B53313D5B95B054F7234A1 +:10F12000FF073F4EE327FA583DCA7FDF1AEE47DE5E +:10F13000455D4DC1FE9D95885F3F5C0FC6C366BEB1 +:10F14000DFA3AE27563E1E7F604F1F7C7E558C3C52 +:10F150007EABACEB6B45CE9DB97CFFDAB50CF01CF9 +:10F1600086FE3BF035F253F5E3B0A47AA4CF209F9E +:10F17000FF2FC4672F3B6875235E228DB3CA14B47A +:10F1800061BD169EFB1BE22F2E6B97D1DFC4E5728B +:10F190003F05ED155237F9C3BB0A1ED992FC7F7D9E +:10F1A0001487A8F92AAF833B253EFF205F40203A11 +:10F1B00016713BADD2799E24BF8BF8A8F4B994DFC9 +:10F1C0007CBF2C748FCA6FCE7F5790C751F6EC8EE0 +:10F1D0007AB4CB09459CDF09059C1E3F19E1E77C09 +:10F1E00028E7F8ABE31F57F8E39223A5B8BEF8DA97 +:10F1F0004ED9E08EB68B329F3F333A3FC97F62399A +:10F20000AF1F6554F379E37299807A90A1E8C1DB6E +:10F21000F9FA753476CDD34976D0911B217AAE3484 +:10F2200007D290CEAA9D98FBE2BF4CAF073B518618 +:10F230007206CF2FF0B6537F88FF48FFFA1530359E +:10F24000BE53F5740897C7EEF534963FAA9EDAFBD5 +:10F25000B120CACF40D624E13A9A320A7BA1DD52CE +:10F26000FB5D5760A179D6247654A21D5B5376F7D7 +:10F27000FB48D70DBB998741BF55F7B337AA606DDF +:10F28000096CA8D8807A1CB1937F19522236A3BF8B +:10F290001BB2BBC3960DFD871CE9C5703F2121B28F +:10F2A000F4FD04EC5F34C86DA7FDF41FE81CC51025 +:10F2B000FC371070C3FD1CDF358A1F54F148F0760F +:10F2C000129D134AA442A473A0C0AD8BE3127677BB +:10F2D000861CC9B81F2B0D423AAD4964D721BF36F1 +:10F2E000D45BE416B8BF26CB6FC0B86463B181CEDF +:10F2F000871E1AF3541FCC87F70CBC9886F9475326 +:10F30000D137B4DFF44D06AC8BF6A1FF4EEBB4EE73 +:10F3100016FB239E1BBFE7F664E3D3AC199F57F19E +:10F32000B62A78ABF80E892C8DA0BF1B92E1DE8B3C +:10F33000FBE81BEFE77E6888375C86F80FD9CDF1D4 +:10F3400057F11E92116E133478F7C37569ECA72339 +:10F35000DBA0F3B73DF99F7952697581C6AF5D298E +:10F360006E9C533B8EFD09F2AA972C9D877E403BF5 +:10F37000B345A0FCF1E5CD7913508F6EFF02640315 +:10F380007ACF593AF1E14F7BC1909F72FD9AB32336 +:10F390005142FCEF6A0F4E407AB0209306827D4BBB +:10F3A000357AF675C038A94FBC232D87253CD2C6C7 +:10F3B0006E4579396B0EE661481E9AE5CCA3F313CE +:10F3C0004ED9ED04BA55212A6E7C2E7102EE87A625 +:10F3D000DE64911AA59EF1AE9AE92EC27A5D55EBD4 +:10F3E000D22A9A57849405E28D2A93B812619BDB46 +:10F3F0009D580F706143B019E1CE4496D49247FBFB +:10F40000E3877F0EE3DF5E9D29523D47896BAA0E9D +:10F41000BCF177DCC7B85DF65B90FF3FD96DD1D109 +:10F420007968AB1E1EBE4F0FE745F4F088237A18AB +:10F43000D788F3D4B2E027F723BE6F19C94EBDF2C7 +:10F44000FDF316B4EF9D552C88F8BD34047255DADF +:10F45000CF0D67D1F94F3FF01CDACFEC71B560FCEE +:10F460007CAEAE7D6B39C4016D5F1818EED32ED81B +:10F47000E36AC67AE94BFFF8D386D138CE337152AE +:10F480000BD071DC825F3FBB14E0AF9E8E4BC4BAE1 +:10F49000F5996D2FEF443A9C7966301380EE5F1931 +:10F4A000021FBF8D7C30B8D82EA0C7C10FF79FDEDA +:10F4B0000EF09DCFC6E561FFAF9E797910D627EE9D +:10F4C000FCD5AB5968BFCEECF95521C17B9E1E8699 +:10F4D000D7334FFF7210DEFF0A8514E5658FB5192B +:10F4E000F9B9E0D7F693BD86F5CCB7AB1D7781812E +:10F4F000EB17C3713D38EEAAF65EC0EF05BB5D2188 +:10F50000BCAAE3DDB9FBC1BF68E1D8EB9DBB2F8F7F +:10F51000CF9DBBF9B8A7CD610BAD43608B7741F2AE +:10F52000BBE85CE5F589C3703EAB8E8F83B7EAF923 +:10F530009A13D6C3FB21ED781BC7D9DCDFB30BE4EC +:10F54000EB1CEB3CBD01E164A1FFAE6EE4F91325B9 +:10F550008E59B44F3FCF7E53F77AFD9962A7BDCC49 +:10F56000128DD3717FC10A76BB1BBBFE95E2E7F615 +:10F57000ECE9EA6FFC811FBC636E88AF17287AF74D +:10F580004AD73920B6A42FC8EA02D4CDFED1FB0B4E +:10F5900098669D30DFB7B6F8163101EC9982CF79C5 +:10F5A00033D7EF3375F2C39F827C9EAE93E572CD65 +:10F5B0003EDEFC1D552BD3819F357B07E669ED5D53 +:10F5C000CDD34F1866C0FDB3101719803E67761F64 +:10F5D000DA82E7F4CFB49A19EE43D73C7DA8379E80 +:10F5E0003738DBFA7A3CF69BBFD543FEBB6BDCAD0C +:10F5F000E3E5724DBEF263F5F6E5226EEF16B49ABE +:10F60000C3B887BBA0F5BD097D51EEB60AD24098BC +:10F61000A7D01430527EE993CD21DA07FC8FC37D49 +:10F62000A07DD1AB058598DFAE35F86FBA01F568DE +:10F6300027D7E7178FDE6644B99D3F94198C204782 +:10F640006DDE872CA7D03F17723EAF9DEAACC6FD9A +:10F65000B9F827ABC6917C437C30302FBA9E421359 +:10F660007BDF002915939B6647A0FD0B43BCB416B6 +:10F67000E6FFD2C5F521F48C91ECF2C88FFE6ABC8E +:10F6800088FABFCB48E716E76FD5CB4FF50133C5F6 +:10F69000A52FFDE3DBA9A3D02E341B3D2D8CEA4B17 +:10F6A000166D1C5B6DC4B32040EF66D76A7C17E013 +:10F6B0004C4A384BCCC5E79EF898ECE6D356438BC2 +:10F6C000C6FF57EFFEEDDF719FF88EB07EBE58F992 +:10F6D00018AFAC17FEBC5A398BED8796CE54186D17 +:10F6E000AFA905FFA2A9EFD57CDA64C1FCF88E4969 +:10F6F00096CBCEF7ED899707B90D24AFB47F11DA19 +:10F700006BA4BAFB577F7EE929DACF33B152A52E1D +:10F710002BD860BE33F8AF01E0B7D2FEB0B5BC174E +:10F7200002AD83D09E7E6561656BF3783F0678DF1E +:10F73000897A80F57C6384EC2B7BDEC830AFDECF2A +:10F7400022F1745EA4D56820BBF7C5BABF609C7572 +:10F75000560C6F7816EE9F85C584C4E83AEA5B0FB5 +:10F76000C5637CB1A0B55799F132F66AFF33768351 +:10F7700001F870F68BA7E2BAABC3DFF9455299A541 +:10F780001BBBA4FAF193F84F90D38585727521FACB +:10F79000FFC65E9487A7F60AE605BB194F7D2EC902 +:10F7A000F6F02F90EE554A5DED21F0D36EEEA7A551 +:10F7B0005D9E4B9F5B52C8EDCA8345FEFB701E9752 +:10F7C0002FE4C17820296093501EFF6494EE1581C8 +:10F7D000BEB7B380850E4C34A6101EF319F09336D5 +:10F7E000DEA509A857774E029D003D9933A589E211 +:10F7F00087CD8B99642C02D814263F3E07228A8736 +:10F8000045AC435899ACD1F3799B01D6AE7F87A61E +:10F810001DECD69D4FEADB17B008CD5BF3EB1FACB8 +:10F82000DA71BACED933D98271F3770AFD1E2C92E0 +:10F830009B0AE1BE70A38DFCDB4F9F11685F32D93C +:10F84000D24A7876029E2D80D774256EFACCE8A72E +:10F85000F52E5A5A25CF05F8EBDA39F2DC5E8C4AE0 +:10F860003BA4E7AD3C9E5A50DE7A98EC0B139F9B6D +:10F870009106F8D8FC3C6E7233F15A9877D4AF27D2 +:10F88000D3BA59351327F605B87A32D16954902284 +:10F890001C365DE1133BCAF9FA21D6C0500EB7F110 +:10F8A000F1E7B310D1FB0ED64EEB7DA63089F8748C +:10F8B000E4203F4FF4EDBE44AAB7AB7CFC96490967 +:10F8C000A8EFA90E88EF92BA892363E85CBD23866E +:10F8D000EE5A3AF747FAEAF974D70B40EF6EE4F4C0 +:10F8E00011C5AF7CCC645D7D523D7FF048BD40EDDD +:10F8F0008FDC6CA192FB9669F39EC07AD146A00181 +:10F900003F2FC8F763D7629CC0EB1A111BCCE318DA +:10F91000D105537B618302876E9F712103DF03E36F +:10F92000EF5FA9F36D996C61111E6FD931DE6A2901 +:10F930000EBC83F23CC7E83F6C003ACD35C859266F +:10F9400094DF5A4EEF47F38339C16EFCB2BAAE2D45 +:10F9500042BB8CF960E87E81FC41DC81BD11E4F79B +:10F96000C20AB04E6037526E59574AE7CDF3DD06F2 +:10F97000ACB77DA9D8C904253EDE266C4AC7F66D12 +:10F98000E96E6139ACD5F78240EF9D6D4C6C9FD02C +:10F9900017EE77BEC3C6A01D4F8D0B36A35D4BBDC2 +:10F9A000D59BBF1CE3C24237CF8B47341DC4E73B16 +:10F9B00017BB458C27D31A429EBB7371FC603DC9AF +:10F9C000ED6446F7536E59568FFD1EECC392108FAF +:10F9D00034562F60BF95299CEE2BAB58259E7F3166 +:10F9E00061E504FA65548A423DC867AA492639B2DE +:10F9F00031712F60CA1E89E770E75296D802F8A6C7 +:10FA0000188CB74E46BEE5F3F5242D13E41652824A +:10FA10004D845FAA95550849FC3EAE0B5826EFA5CC +:10FA2000F630D121755C300FF1481DC0AF39B623D7 +:10FA30004E8C9F96082C887EF0AD64353E8E3891B2 +:10FA40005F5F9BE5D41168A7DE31935D4ECED2B7E0 +:10FA5000F7CFAE48C03AC35FA5715467DD67967FA4 +:10FA60004FF479C728B47463D7FA8CE4F5A445172A +:10FA7000FAEACE6F2DAAFC1BE5058B2E64E9EE9FFA +:10FA8000853C2FACC94B6BAADB2660BF85AC7D25BE +:10FA9000CAD9C256230B6BF4619F1DE842EBE5798E +:10FAA000C0A9B706EACE2DA9F2BFE88291F6B96ADD +:10FAB00095F71EA3F35B74FB5F8B2EF4D29D7B88BE +:10FAC000F6EBADBF7F41D0C3FBCE2BFD4C749F1531 +:10FAD00075C4A3FDFBD276682BE67777D87FB71580 +:10FAE000EDCC68A381F01DDD8FEFE775AE31366395 +:10FAF0003C30DA28A8700BC25F9A415E685DEE78F0 +:10FB00003C273509FC2ADAC15318C762DD411A10B7 +:10FB10003FC487F1307B0EE5E52CBE6704743BA53E +:10FB2000E4AFCCE48EBF51537755EFF73176C4D3B1 +:10FB300079ED57B89F55DBCFB93BE293347A784ED5 +:10FB4000EC88477A9FAB54F53962427E6F970E9AE4 +:10FB5000DC00D7480727308D9C45F913A77B8FA57C +:10FB6000F7F2F68801E43830F2DF7E919B03A2D0F1 +:10FB7000A6DA93BDBF904BA0DD68D0D9173CA3AFE8 +:10FB8000D655D1CC3D6250CF333FF78BF20C2DCC04 +:10FB9000FB479F7F7E06D65D7DB9FCF93B47BEF0F3 +:10FBA000C70693C61F993AB3E8BC8E0ADB6260278A +:10FBB000C04335B018D39E1CD39E160367F0FEB326 +:10FBC000133A0A300FBE67E4BE1926D0EFD97D3B49 +:10FBD000EE11005EB77CFF8CF262F4EBD204B467E6 +:10FBE0008BF609224F1B38FDEE92988C71AC53EACC +:10FBF000B0CCC9453A4887311EAA817E829BD70383 +:10FC0000D1EE2D6A85E7DC9AE75A057AAEA6F5248F +:10FC10003DD7E3F85E03D987B5DE53D46F61ED9F1E +:10FC20002D1887ADAE69F0A37F53F7CB4D2C28F785 +:10FC300005B9B86BDF64AADFFD71E881F7F0B84B56 +:10FC4000DC92BFD4631DEDA3859F17E0737FC4A131 +:10FC50008BD13E8773F0F999D5B7E5E0FDA4DCF6CA +:10FC6000F7A642BF8FCD1D8F61FDFBD997DF9A614B +:10FC700002BBF6B1AB235300FFDEFAF2710EA7749C +:10FC80003C8674C9D9F73E87333B32315F79F1E561 +:10FC9000E49948B78F07763C86F0B997CFF3F6A181 +:10FCA0001D99B85F3A2274614639C0BB446E0F7724 +:10FCB0001A5835DAD53FC6F8BD2715BBF3C4F5F29F +:10FCC000E323316EABE1FE66F6F6F669A82FB30DBD +:10FCD0004C0C815CEE3AFBA767305FDF551BC75ABF +:10FCE000B858F9317E4EE5220C7EA289EC7AA7073E +:10FCF000EC3CF477813DA4FC659889EA5C2A7DD5CB +:10FD00007963FDC8BC427948514AF43A723CBF0E4F +:10FD100029722BF545880B61BC99339D12D6059944 +:10FD2000A9A300E56AA39DAF0FF481F8E644FE01A4 +:10FD30003F5E19C9FDDB2B23799EB8A1703C8DF77E +:10FD4000D38FAEDD66E3F9258F5F169A297ED93C05 +:10FD5000594EC77AC7E6C9BD0DB83FFFD23FF8FB81 +:10FD6000359D9BECF41ED774B42BBDD02EC8E9F49E +:10FD70003EE24D169D5DD87CC7B874B46BB54C4E51 +:10FD8000A773217EDE7E45BBB6D0ACB76B0BCD3101 +:10FD900076AD3565B2E67CFD0C33DFBF9FD16C08D4 +:10FDA0000D1CAEB98FFBFA647F5A53B4F6EC4AF7D8 +:10FDB0001FC997D305F2CF16CAB75297B7121EA91B +:10FDC0008F7A92902F780804E3EB2D9B06B720DD05 +:10FDD0005B8A6F1C525480747ACA7E5B6E54BE8FED +:10FDE0005F2F7F8EF233DDC8EB01AA1CE11FEE1FEF +:10FDF000CC793895F6618714F1F81DE29B611827DC +:10FE00003E50ACF299119F861489D43EDB1A31A37F +:10FE1000BEFC7F7EFDD3F89559F4DFE0D7C2DACF80 +:10FE2000AFCA2EAA7ABA45889853917FAFF2F814D8 +:10FE3000EFE37B23C70A035291C62ECCFEF9423A68 +:10FE40002FA9E21377DFCB15B700F8F1F433BB9E8F +:10FE500082E73FFE999DF2F5D8F8372EB7E399F582 +:10FE6000980732978879F8C7968EA112C6F986C08E +:10FE7000132FE3BC7D8C22D84288FB99B2DFDA4194 +:10FE8000EBFCA438D01BE3A05545461A07E42D5DD2 +:10FE9000A93F85F07D92D064CBE5E5ED556318F977 +:10FEA0006057E46D735E78DB3CEC7773AE1472A33D +:10FEB000FC81DC601C3183BF1FB779A02144F9E6C7 +:10FEC000344718F72D367BB85C6F9EE6A57367B58F +:10FED000881FE561069AB71B79E4F30E34D0BC5D48 +:10FEE00072F92AC4471E8D5CBE0AF191472B979D7B +:10FEF000F1DAF3145F2B75BEAFC32097099AFB8C20 +:10FF0000C74D1007C46BDFEBB9D2FDDECB412E7DB0 +:10FF100051B954E5F0D387408E682F5D1E847AB1C5 +:10FF2000A488DB63D55E3F501C588CF2148DC7F952 +:10FF30007AE66C1C4ACFAD7271FBBE43886CC3FB82 +:10FF4000069B9884F575C893EF41B969888BB720F3 +:10FF50003D3E0739EE057E671E63F70A9ABC292EDF +:10FF6000374079ECEC20E4F7E027E783FB1B8BEFCD +:10FF7000AF86F4F9236396286CBC14C63A973E7F8B +:10FF8000FF8755DF3FA4F829EEE7B60A8BB7215E5D +:10FF90005BD39988F9D4ECDCCE4C94ABDB308F0684 +:10FFA000D4BE3DEB3008600F4E29FB6247DE1A419C +:10FFB000FBFA6A5EFCB042A723070B13B07EA3DEF8 +:10FFC0005F64EBA0F502953A57C1FA16C5770C426B +:10FFD000BD043BC6F723422E7A4F53AD1F9C5E6390 +:10FFE000A4BC9B21897D18770A742EBCC67691EF3C +:10FFF0005754B1A015BF4331A87302DAC1ED652C87 +:020000024000BC +:1000000088FE9E5E28C63A143EE9A17DBD1C6DFEA9 +:10001000BAC8D19145716F4A27D5AFCF55C1D458D1 +:10002000BF0E7D5FC7BAA933619D594BBF7328E2EC +:10003000F93DDB5BD0CF4138EEA93491EA3420E7BB +:10004000DC0E5F21FEEF8AE395F8FF54586F77AF1F +:1000500022EE1F2452DC6FCFD7FA8BD8EB5D0CDF7A +:100060000DA2EB6B46AC9BB28EC2EEBE177197E150 +:10007000D4A0BBBBC9DBBBDAB77EFE3DD2EBAE176B +:1000800062EA1B31F2571385851F04E48BA6DD134A +:1000900095BF454A5D88F2035C47390B0F1430DE8B +:1000A000E5705C453B9D7F4969EB9880F45CF40505 +:1000B0003FD702BE301FEBCEA30E341FC2F839A9C2 +:1000C000BC3D13C5669152178D8DDF8A0F6C32F2DD +:1000D000BCA6F527E88FCA2CCC8D7C2A4BE2EFE931 +:1000E000963A72723F836BDB294FAE19FAFD9F225D +:1000F000133D3FC12A9F457DEF693FF882E26FCAF9 +:100100003EB607308E2B73D8C94E6F7C68708B95C6 +:10011000D6D94AF674EE164F12CAF185221EBFB622 +:1001200014FB2F1491FE4985E86F3E2FE2E706CAC3 +:100130002CEE6C94D3571C8F96A3DC78C00E18D28B +:10014000905CA5D9C920DF65694CF96B6A0C42FB4C +:100150006498603BD8896D65ED69189F6E2BB44833 +:10016000CB618A1B9994897A36510837A2DD36B162 +:100170001D4B70BC8A6C978478BC232466629D9367 +:10018000DD614E3C6DA3AD5876B9733538C2695503 +:100190001FA0F316477B1A8EB7C502A8611D58E24F +:1001A000701BCCC5EBC21C9E64E370DBB40FD39014 +:1001B0000E6D407301E36D036FA75A7D3AF6BBAF36 +:1001C00019E17502138DE9D176210DDF35C2F626CE +:1001D000B24F2C9189A8FF4C329FEDD0D431531DE2 +:1001E000ED6E6C37C07C587F592FB08840729E915D +:1001F00078FA27D1F5C52975DB078BFCDE62A03FB5 +:100200006E53D9492F0263A993E924D99979F7311B +:1002100011E5235A270CF3FA6C6E32AFCFC6D8D74C +:1002200073580483A673CF09618C6BB0EEAFB7BF70 +:1002300011B2EB0B819F789E94ED8EB5E7ED34EF14 +:1002400022481CB68B68F7F4CF2FDAD77D3DF61520 +:10025000ACEBE547FD93C62F113EB757F7A1FDD094 +:100260000E0C42E8BC343F478AF5276EB7E4F4DB56 +:10027000918F77F4CFC773B571261E4FDDDE34B88A +:10028000A55EF183E83F1F89E77E4D95D796E2B2E0 +:100290009B917E334795F98B314FC6E2C8D59CAB15 +:1002A00055FA61DDEA7275F6514AFDF6EE3F83DFDD +:1002B000017FBF5F399756F1C6C054F43B770BEE10 +:1002C00054F42FB715AB7E6790EEFE696380EACCDD +:1002D00051FE4538FF143EDC897CA07DEDC04AE22A +:1002E0004B35E7774D39F7BF2CC8C489C59CCFDAA9 +:1002F000EF4F205FB530F2D1DD0D1FEF423E4A9C3B +:100300008F6E3DDF488E1789305F1EE7ABAE7D33C1 +:10031000A74F15DA454D1D2AB1B1D948FBDC0A7D3E +:1003200012F265CF0AF42B6F98691FFB336CA27829 +:10033000582EC4B8E9C1A2B2E9C81F07FA2778EE5F +:1003400053C8A7512E3626B25B6F443F58C7647C12 +:100350003F15F85FD8DD7773D6EEB757A33C6D280D +:1003600036E8CE8BC8C56682A95E8C71DD1A2BC5B6 +:100370007585FDD5BA9795E2B8B956E5BD8E07F9F2 +:10038000BEF45D539D011CEF9452CFDE5ECCEDE0D8 +:10039000F6620BF14F85D5F5C1F8249F8E11FCAAAA +:1003A000CE1FEEEAC7EBA4CC14A0F740B698C3F674 +:1003B000DB3D183FF969DF4E959F2D16F7EF9FC57E +:1003C000FCA221C18DE74955393A726400C52F73EB +:1003D000157BF0EBE224C2E31BE6A6B805E489DA5C +:1003E00055B82BCEFDC210EE3EEFBA9BEA949DFFAE +:1003F0006994A8DE80352A58FFFE2FFAD0795B88F1 +:1004000007E83DEACEBDF6B0126FCA187FEE7F61F5 +:1004100030C537D138D815E67170601BEA6568EFD2 +:10042000409E7FB0F0D34F21FE07D225D4D3D3789E +:10043000BEC14CFBDFDC86EE8BA3F8BBB6A3390E46 +:10044000DFC3FA5A60CFA19F54E9B65F897B4F336F +:100450001EDF87BE30B4D0B91253F8273769F8BF12 +:100460001FE404FBED67917994BFB6DA7579681FD4 +:100470002BDC473A3C0FF73575E157CCFC7E68AF73 +:100480005DD0DE7FC912798AC6798EDF7F5D0CBCB4 +:100490005FAC91A79AF8C8A044E7D5D0F79B78A4A1 +:1004A00047A7C0DA713F09E92B103D3215FA821DCA +:1004B000E3F248FA00F124ADF3F49786162BCF7FD0 +:1004C000B9BCFE4608F338AC73E552C46BE97071F1 +:1004D00017D9814E2FD20BF845DF216B38E3E0FCB2 +:1004E0007B4AA07874BFA9E9F063D85FB6499897B2 +:1004F000ED57F21062756F8AE3E94FA5F316339753 +:10050000FF10CC8FEB7EC922537D2AB4D6DA4B4B39 +:100510009F45ABAD272FB7CFB9E8CC6D93BA8B4FC2 +:10052000BBDAAB2FCEC6F338B1E722CE557F938529 +:10053000F13BEE3B318D9FBCE479DB590BBE4F683C +:100540003BC83AAD683F923B7B5FEE3B628BBE5847 +:10055000BB18F18D9D8FF2A742F25FE46C17C59C2A +:10056000BB605AD878299C314A50F617F5F7B3B0DA +:10057000065C80F4D58FF7A9D93F01CF4974BE2816 +:1005800010BF4F9BC32396C2FDED058181A352147A +:1005900066407BF5570E9ECF819C63FCCC9AF8FE9B +:1005A000EAA7667936DA95C4F28845FB9EF2E851EF +:1005B000DC9FCCB1F2F37DE02F2C5AFBA8B6179646 +:1005C000E9ED927A1D358ADB27573BF7C7F7B0274D +:1005D0008CDA3C76D4286E4F478F72F3EFAB7DC137 +:1005E000EBC3FD96F9AD920FEBBD55B47FD76F19F4 +:1005F0003FAFF8A93940F9D3A78221F81CC655EBC3 +:10060000F8398C79BF1248EE5FDE5D6A7441FB9D5C +:100610003B0409CFCD8D52E2E979E0FFB4F927AE72 +:1006200083E8817E0FC619D5EAD9D701F0A817044F +:100630007A8FBFC6D46ED9067046C01934A621BDC4 +:100640000387B19E0089D5DDABD2A3F6788EB523A2 +:1006500044F5A95F09746E7E9E8935C683E9BC5353 +:100660000ED33E49ECF90AA63DFF80F2B85B2F8F0E +:10067000E81FF5FBF3FFB0EAE5247455F180EAFFCB +:100680006E1FC5EDB81A07C4C6059087CF1BC5F904 +:10069000C7EDC15E817FF72A363E53FCB0EACFE753 +:1006A0002BFEFCB491C713F3AC9BE8FAB3511EC206 +:1006B000EF4ED6A1ECD7775AD01FF5C4FF9F29F291 +:1006C000F373E47F4A94FF35CB222BE389DE81E785 +:1006D00069BF7B198BB886217D835588571F881782 +:1006E000908FA9E302844FEA4F214F073ECEC3BD4E +:1006F000DCFC1F1FA7C4C625B1714897BC2AF214A1 +:100700009B4F8D5A16A678E4709DFB61FC3E56A85F +:100710002CF8389E630C3598D872B83E1AF7C02F63 +:1007200051BE6A435611CF839EB76785D18EDD6770 +:1007300094B6BE03723B6115E3EFDF7DC2FDD6F2D6 +:10074000353CBF5A5ECFF9FA92620F1E53AE6F2B43 +:10075000746BC3F90642125BE7A579CB6C79211C57 +:100760006702F0A717E61B629E09ED1EFA148C6360 +:100770008D07ACBC9E00F6C90976FA5AC5344CE820 +:100780003B2682743CE4B2B8F9FBFC20E9BD691C4D +:100790003CD1C2AE75CE6BC4F61B0D2C985804F13B +:1007A0008B35B212EFFF2DFD9DD9C8F77B1D934D00 +:1007B000C8EF9562E03994A7329B6CC2FAE25B798C +:1007C00023B3516F579BE4E7D10E3D6C925F184500 +:1007D000762D433C1D17956B751D104F13FEE3508E +:1007E000BE92116F7723E6F3C634817F572C066FD4 +:1007F000A3B2AEE5AF5A699F42A5C384BEF7BF1648 +:10080000C0F55C6757CE6BEAD703715223CE73975E +:1008100091CB718D2DF078A281F07F13F1FBB3396C +:10082000F04BDC5832D8DC2605FFDF29F8BFD51D98 +:10083000FEF0F79AC7876509FE3E11BED1D5EEA33B +:10084000576682A83F550981F7F0397C7F937F373F +:100850004D79AF5ED1E747E3E2BD586FAB650E0956 +:10086000F9932D3EF038CACBEB2113C3FDEBFB1CF3 +:10087000F12D2C212A371706AAFBD501DAAF3E9CB1 +:10088000CCEB99874FB8E83B25F885DB1278EE7CF6 +:100890006F2BBD3FF27A69F7F9FA578A7D7EFDA08A +:1008A0007A8E2FB08EF2D63E0304EDF9ED0BAABC82 +:1008B00019FC1BF33C3DFBC347EBC07268F6B54720 +:1008C000DF6A09D277254CC10F305E693B974B79BF +:1008D000554FCF8F9EB9DAEF89C77978DC953DE522 +:1008E000AE13F1B0AEEF42FDFBAFD5C46FD6D11C55 +:1008F000EFD146CF128CE7AFBD6064113051DEB34B +:10090000ED62223C7FADC8DFFF28EBA8CAC8827920 +:100910000FD953F3517E0E9DF46408306E5BFA607C +:10092000BA76CD6B4B9D83DFCFCD3E72C309B43B0E +:10093000DF85806E283FE626FAAE1F70A9BDD76816 +:10094000621BD51D88C560B258A31809629C7677D2 +:100950003CE54FBF55D68F67FE911FDFCDE4F2F027 +:100960005B81C3A12AFE7EADD46623F8B5856E3ABD +:1009700087C7F681D9D7C8752D0B9A16E3B8185FCB +:10098000A1FC6658A3DF1DA5BC4A3E81CF6700A32A +:10099000513EDA94F8B04C890F59513BE1BD7C09C6 +:1009A0007F7FA8CDC5F99FBDBAC68975F0434CDCE1 +:1009B0008BEB3BEFBA2941003A158DE67EF870CCFF +:1009C000B970753DAF94B96BFC9AFBC346733B3469 +:1009D00062B472AE34632F9D77C473C771E9381E59 +:1009E000B7E7DE8C83F41D176FC63B32D2F7B759D9 +:1009F0000B4C0ED4EF90DD8D7E7382D3D3882F8F76 +:100A00009499DCE5E84FB11F9E9F8DCAB7DB8975CD +:100A1000AA6C71AC13FD489B730EC9BB7068448609 +:100A200036DE38D4837C5FABE079E80AF23D455D81 +:100A30007FDA4D09816EC651AF6D0A3D80F9B988E4 +:100A4000CFE838AB22DFEE1DC1AB916FDB9A18F90E +:100A50001EDBAD7CCF51F0BEB27CE7917CB7A573B5 +:100A6000F96E3B5945727DD8355F2FDF6920DF4035 +:100A7000D7D75C0137DAD3B674ABDCC28578C762EE +:100A800078FE35C1C5707EC87F33B4FEF935FBE012 +:100A900099788ED68BE779A07D9CE4CEC7BA802169 +:100AA0002E97F4E450FDE0FE9827AC57F08DD51F4B +:100AB000751CE6D4D7A7D4FBAF233DADA82F7E3A53 +:100AC0006FF3BA920F4B6DDE0C8C4359D3A332EA0D +:100AD000C57845DFC6DBAC27E97BB9C9D6E87777AF +:100AE000FBE3BCB312BA7BFFEECAF354F079B682D3 +:100AF000FE156AE611BB9F27B67E565814D8343AC5 +:100B000005CF31073FC1EF7F744EB651FC9D54D1E4 +:100B100049EF217D2270B9F432B9E104D2EF682F98 +:100B2000DA9733C44D52E897EA41FABD305AFFBE16 +:100B30005B4F743BF467D61FF71D7A5E4F51C66D4D +:100B4000CE6EE8E684F5C4FFEFA1DBC004FF4B489E +:100B5000B79342A78BBEEBA09E4F448B07E3DDA665 +:100B60008CB7D6DCC4F07D84D0ABFC5CEED7D5DF8F +:100B7000C4E3B91CC7391EF74A6DBBDDDAEF47DCA9 +:100B8000E6B5D13A1DE7861CC673B71D46D669C0C7 +:100B90009C69F578B943870FB7B7EA3C5DF36FED11 +:100BA0008CC775AE35776EC0FD4A9857C47AC37648 +:100BB000C606AC433CBC368AF363E7BBED803182AA +:100BC000EF63C7CE7354D18BB6697FA373BCDB0FC1 +:100BD0003C41E705B74C06FB4676438A47FBB6D750 +:100BE000E6FF661CD0E34FD5068A03FF54ED203F95 +:100BF000DE533CF916C639037B8E2B21EC18C9CF86 +:100C0000ED0487E375C2BF56FD3599E2A09B6E7D6A +:100C10000BE2E909D7562D4178D3D801B73AC15E26 +:100C20004F1827D079A373AFCC0FE37B9B136EA92A +:100C30005A9202EDE5D7B000BED7396186A09C4735 +:100C40009A12407B30E15681CE1FE544A07F2ED61C +:100C50005B0366E4CB54F5FB84CAF9B3AEF861B428 +:100C600091E87041B1B37F47FF50A0A43AE8372A1A +:100C7000F939548867CC9497B28019F13E3E06A2A8 +:100C8000C8041C3790D9A4F13FC7665967C9DC9ED8 +:100C90009BB5FB46CE121E17A8F5DF58798E2BE1C7 +:100CA0007AA69E33C1E76F1EAA6DE7FB1CCE12EE3B +:100CB000BF9C6E9E8F205EF81D4ABC6AEB01C7A7E1 +:100CC0004D36E331B8329BB4E31D37CA7520A90411 +:100CD0009EFB8489B3311EBEC15765467FF2895998 +:100CE000A2EF3A853C2CF822E429E545FE462C5536 +:100CF0007D72FF7DB3C8AEC6C7C91877CB0A7E9B8D +:100D0000E29E9D897499C60C12F215FFD6A9F101D5 +:100D1000C8D59B398FBE8ECFFDF60EABDBC8F7076B +:100D2000595A6134BE3DF40E048E40F2EB58AB8943 +:100D3000E761C1C67BA1FFA40ABB88F1E80DAC83C3 +:100D4000DAFF953133B64F666E3AAF7113EBCC32A2 +:100D5000E1F97623C4F71E8AEF3FC6FD58888B87DA +:100D60009614609CDF4CE335C4DD5542DFFF61AD76 +:100D70003379BC6EA0F70D62E3A371B61D1487C072 +:100D80005F7B6AFAA5F68CD0ED1D3D8784F1D4DD3A +:100D9000D85F89A71E3605C6E0BC69AC5540FC3259 +:100DA000B14F327E2F9EBFF7CF8A241B9773BD7D34 +:100DB0007945901B3E417D798FBFF700F135C9D948 +:100DC000070BF979EC4D71F1E4CF26D6082DCAFE58 +:100DD000AAB1B150A12F0C7244F1F3139DC1D77A7F +:100DE000C373474B6D0CBF2376EDDC55C4AF3C831A +:100DF00041C2E0AB02E2B47B105FA0EB2EF1523EA9 +:100E000000DD4DF7621EE63629F5753EDE0D2F58E2 +:100E1000E83B64FFC23A899E7E26121F6697F0FC6B +:100E200039A572AF90E4263ABB305E3A6CD4D72F26 +:100E30008F2975B56B6D1027E662BD51796F79B258 +:100E400040DF539022E238FC34C0F5B989F4DE4B20 +:100E5000FE11E910C2937C1CCE6D6D2FC3EF00FF15 +:100E60004B098787EDEB6C43D85FCEE1E1072206A3 +:100E700084277A3DF908F765FC7D151013FE7D0780 +:100E800026115ED709E273E8E7DFAFAB207BF4877A +:100E900049374D1C0AF0759E01F47E5FE24C13D772 +:100EA000EF6CCE879BA76C32E2FA6FFC94D1B9BD90 +:100EB0009429402B806FF20B4FA11CFFBC84D7BF3D +:100EC00047857E43FA9F58C3CFFD8D0A5D67BE09F3 +:100ED000E0AF4B3BEE55F2CC3AD433356FBBD7C1C4 +:100EE000E5F425E5FDAFD074D59EF0FAEED46A5E48 +:100EF00057260BD69BF24B92CFE378582F392A27EF +:100F0000EF7D2035A6A0DC38B87D6336A9FC1E68CD +:100F1000FFF091FE8CF34F9A85EB49437947BDADC5 +:100F20005E25A424D3771C5B312F66CE18BFF7A9AA +:100F300025266E0F1D5C82F58A603CAFAB304D3BC1 +:100F4000E09F6A8B0FC581FF4C0D5874BF338075CD +:100F5000206D3FC8431FC3F59BFBD80C328CF7BBF9 +:100F60006613C9F5EFCC8111FE6EECDEE87088F8EF +:100F70009502781A4A805F4A9C7FFEA3F966CC07E7 +:100F8000BE09E5F4C7785CEDDF5E22E8E291DEB5EC +:100F9000AFEC30817F4CA9FDCD0E1318BCA962C007 +:100FA0002C103DE6CE3E01EB9EAABCF7FF5CC99C2F +:100FB000D9E83FA6E2BE2CD0EF3725B7CF46FF30A9 +:100FC000D5C6FD42EF193599F335F8BD5D62D5CD33 +:100FD00033D5C4C779ADA46AA7320EF99194A9D5C7 +:100FE000997738B5CFE97F3F656A86FEFB58EAF509 +:100FF0003F9575FCAE84EF276F99363513EDD6DB40 +:101000000ADC7B7A35C15DEDD3A7EBE0476EE6FDE8 +:101010001F99CAEFB72BF7474F79792AFAFD945BEE +:101020006AE8FEE84A0EF71447BD22F0F34AA11B16 +:101030000411F5E79A8BFF5AF619D07DDA5123AFE8 +:101040005B4EDADB80F5FB8941966FCBA3E31B7225 +:1010500022C07B7E9DC1EBB5692C84EDCFEC49A30A +:10106000736113E7EE7D2D09F5B18849543651DEE1 +:1010700023A652EF00FA1E3DC9F5C4401EC9BD9A11 +:101080003FBC94DF553730631C02F935BD77F65D00 +:101090002E7F9FE677530C7C3FA4C24AE70EA6FA48 +:1010A00079DDFEE680D08CE7A68E0BFCBDB610D0B5 +:1010B0006017E0699822D079A8E915D666B4A3D75D +:1010C0008AB219F5874DE1DFD52ABB10C72223303C +:1010D0004F695ED11BFA1DFFA0B784DF05387EB2D1 +:1010E000F4238C7FDFAC072B87F6F5E45ED2AB37B9 +:1010F00085FE12D55399603269FCC29B938F0B38E1 +:10110000CF9BF56298E561BE18FE88F74B60BB92F5 +:101110002FF53B98C8B042650B906040B3377D8F88 +:1011200087CEC3140616D7A31E3E936711F17CF534 +:10113000682F1F3F0FE863C087026204FD659AA213 +:10114000A7197E6908EE9F5AD8D9E5D8CFE2338433 +:10115000F15C41FA98FE4A9D9ED7ABFB4DE3DF6DF3 +:10116000648D015A1F6B3078B479D03121300B99DE +:101170003BE8D575B3F1FCEF317B60169AA0B16303 +:10118000B671383DF011C20FC6ED9A5D518CFA79F7 +:10119000DFAD4897CA4A81EA72E7132533D2714618 +:1011A00028813568C62DADDC64C6F872DAA452E237 +:1011B000EB941A0F5DCB2B1667E2FDC01837E1796F +:1011C0003C3DF811E27F2CC78AB108CBF65A238642 +:1011D0006197CE535A9967463B3D0DE6C1F863DAF5 +:1011E000A4C5FD707F6E4A8DE04622F7387E6630DA +:1011F00053F8678EEF09CEC27EFFB4F17382248765 +:101200003D8E3F49197FD2261A7F0A8E8FD7B9307B +:101210003EF2A5828F3FA302E2241CDF5B9589F595 +:101220007675FC63F66026D6DDB367FECF8C7B6CEB +:10123000208C87D73CB90DE3906302F3E3FB83D99D +:1012400095ABDA0D58CF12B3A80E78DCCFEB809AAD +:10125000BAA10B83F4A3A581FF2C407D9EC6DF4F6E +:101260008CB55B8BC670FB79345A3F594FE756A655 +:101270000F10B4DFE35A3686C7F5581F2C107AB624 +:10128000836A5CD5E59706A8F5935006C67D57ACF2 +:101290009FB863EB27FFFE5177F59307C7A8F513B7 +:1012A000E19ECBD74FF66662FDE4F875A9F9DC2E16 +:1012B0007932B11EF6EEC2C199BAFA4905AF9F9CC8 +:1012C00037BB0D18677DE03752FCF9817F39C5B710 +:1012D000DF4100C7F27AC6BB2D66DD654A7E349ACF +:1012E000854AE97BAFB5EEA410FFEE6E3DF27BC3FD +:1012F000DDEE7CDC97DAA3ACE3432148E7F34379E6 +:101300004C44BB9B9ADC4EF62A096282E5B80F6218 +:101310006AA2F7C3D244FC121FFEEE4E90BE5BEEF3 +:1013200072B37C3CBF08D104BDC765B3F17D934C5B +:10133000D64430E437D4FF1994CF141CA79DFC4643 +:101340007AAE5B56F011310E4B33B58EC3F1B364F8 +:10135000C668FFCCD4E1C5FB57AA1FC4AEBB4DE89D +:10136000BE4E37662CCFDBA438760FD6F554BD9829 +:1013700036C9D31FE3C2D249CDE3D1EE4D090D37B3 +:10138000A05EBCA1D0654A35D78F4A45AFEB3F5A26 +:10139000F53AEACF1FAE13E8BBBBE515CD19A8DFC0 +:1013A0006D37FC3203FDC57BB3AC0CE3A4F7ECC195 +:1013B0008F1290CED3AD6EF46B63C6F2F567578291 +:1013C0005EC647F547EAC566F949CE662768F73D28 +:1013D000557CBBF87941203FD7EA60BFC2F741DEB8 +:1013E0007BF5AFB3D3804EAD7DD85768CFDD638D2D +:1013F000B7E2FB1DADBD795CF4D5AB598F635CD40E +:10140000AAC831C661559AF8A553591FBE86CEBFEA +:10141000B794F57824574B17C1CDE9523A1ED73B04 +:101420005DB173D3FD7A7A54D6549951CFCB2B3D0D +:10143000642FF08AEDEFE5703A948CE576E9BDCC47 +:10144000F009A407E4D5440FD53E0D1CCBCFF32300 +:101450007E18E79499789D0BF2F56EBF27F47F15FF +:101460003B30D5145A817131DA5FFC9E4BE9DC2A9E +:1014700033DADF195EC18DF3CE0870FB7BA37731C1 +:10148000B7C333B93D53F139E6F2939D3C962E979D +:1014900061FCADDAB5F3E670238E7BA3E2FF4A2B45 +:1014A000605CB8DE02761FE38F5BBC9369BD378357 +:1014B000FDA7754F6A26FBAE8EFB614E98DBF7C920 +:1014C0008A7DF7F375C6AEEBBC5926FC6F09F513A0 +:1014D000689E997C9E9BAB133DF43EEF589EA7DF20 +:1014E000ECCF23FC6FAADEC4E79B5B4FEB783FB1E8 +:1014F00095ECB23AEF1FBF0F64A21D52E5EBBC5949 +:101500005A8171D2CD2A7DA670FA4C0FF0754C9F8E +:10151000C4C79B16A8E2F4A9DCABF06FEF63E4BF8D +:10152000AFE3FC9394F1DFFD7B3883C6F776BF9E73 +:10153000583EE58F55F9D444784C57F1A8E67854D5 +:101540002AF4AC9CBB97F09851B998AF6FA687E886 +:1015500009D759488FA32847D0EFA8476EB85BE357 +:101560007F4AC6F238F918AE1BE5DBDC4AF4AC540E +:10157000F916E0727AE34C2E0F37D670BF76FD4C29 +:101580001EBF94FBF368BD7FC89366A11D3B76B375 +:1015900095915C4ED1EB675B9DCCFE84E7B68A22C9 +:1015A00094672E77F2730065E552237E0761149DE0 +:1015B0005C63DDD41DF4F582D4B3A1151827665FF2 +:1015C00070F17D9B4A41D9C76386D5BDA37501568D +:1015D000BE89D76B947AC7A342C449EF91BACC4471 +:1015E000E747E72450FC7C741AAF2BA8FE6ED39C0F +:1015F0003ACA2B6F926DCC0AF8DCE4E475830F5F76 +:10160000B7B10689EA08549FE9A98E60B005CBB14D +:10161000BDCC6D92F87E6690F4A05CA9238C67ED3A +:10162000544788AD27548FF5101F26B1562109C69F +:10163000797F4E9D0BF3BDD87AC271251F8CD613CE +:1016400094EF5378CCFFAC7A02D50998DBA8D41379 +:10165000DC84D71B9042225DDFADE0FB99D7DDE053 +:10166000A1FD31C8FB0B91FE9A7DDAD058DCA7CDE5 +:10167000E4FBB4F487F2946DA67C09F2E3FAB15866 +:10168000BF63E1995A7EFDE8FA54A318BA1BF154DE +:10169000EA51A9288546E5F7E8B0AE16B3CF162B78 +:1016A00057220BCCFA6FCDCFF879AABE4CFD13446C +:1016B000DCC7CE509E172AE7533EB26334138D78B1 +:1016C0003E636590F07AD81478722C25833C4E489E +:1016D00043FC40149EE89DB7DA68BC14CFE345F2A2 +:1016E0002F919EE38D4E2902F87C73D448FBED9335 +:1016F000E4A7C7A31DBB8135ADD0BE3F30782BE03A +:10170000A5A94FE4846DCCA439B7F293DDA20E1ED7 +:10171000DA9AA6EB3F7C9F5BD79E17F1EADA471C6B +:10172000917470417B91AEFFC8F7651D5CDC51A1DF +:10173000EB3FFA0BBF0E1EC4C2F4031C633A2B75B9 +:10174000CF7DC3026D788E6D48B155C4DF776521BA +:10175000F95D2FE8DD5085DAD75C08C48C73C28050 +:10176000F1625A5F23B342DE58CAEED08DC75E30B5 +:101770009D42FE05E17FC8BF210C60CD39FF69D5D0 +:10178000E6531DBAF1F4EDB527ECAFBFA669FFE350 +:101790005857329D33F0311FD67D2EE10F3393DD44 +:1017A0009BB19B85C31E5C0FE3DF4DDBC6BF831D72 +:1017B000BB9EF375B6D75F33233F41A5515F609C55 +:1017C00008C891354DCF4FBB5BCFCF38AF9E9F2E12 +:1017D00049CFCF84223D3F13653D3F7B55E8F999C2 +:1017E000E2D7F333B552CFCFF4809E9F7DABF5FCAB +:1017F000CC0CEAF9D8AF56CF274FA85AD73E607520 +:1018000050070F3AF181210BD6FF76BA910945F8BE +:10181000FBA2B5BAE7553E86E07FDDF1F1C69A58E6 +:101820003EF2EFB85C899F29D7E8F9C98C332FBB0A +:10183000DFACF20BEC59DF6B789D6196AEDECEF437 +:10184000FB029BE266CF42BF72538695EA2C87D299 +:101850006F30F572F37E5A7F72832F8FF60FC65763 +:101860005BF9791FA57E84C7C0F8B970EE8F2A7026 +:10187000BF40C27D8430ED174CEC61DF20D63EAB1B +:101880007619ECB4EF9A1494D3C0810E01F717DAED +:10189000E979276BD2AF03EC229E97BC6ABB38492B +:1018A00094EFFD3176D99D19B5777DA379F1D129D2 +:1018B00056B28BD1BC58A2BCF8BD52C985BFD7DA8D +:1018C000535E7CE3353C3E7FEFA0FAFDD2EEF3E2BF +:1018D0005BAFB9BABCF87FFEDCCCB3DD9E2BB8EBB6 +:1018E0009AABCD8B9BE95CC1D1593C2F3E7A7231CA +:1018F000E5C5C773EED3E7C533795E5CFFD1B50D9F +:1019000027A07FD951FEBEDA38DB628A3FCBDE32B8 +:10191000F37ADF9A701C7F9FA49AF83E5EE1FB2168 +:10192000657F795CED383FEEBF8E3FF128F92BD112 +:10193000C0F97E5DB210B00109CBC791CE30FF1C5B +:10194000C6CF8BB39023D147DFB37F0EF97F5EF90B +:101950009E4D67223FBF386E69298DD7F5DEF16253 +:10196000FE7B0A65CEC599F8BDA67133AD82CDC3A5 +:101970002EF1C7C79BC510E61BC7170F93308E7D8E +:10198000E91F7F207C3AEF616E9CB7CD75CB474154 +:10199000E83A4EF94EC5F13CFEDDA8E3AEFE646FB9 +:1019A000DBB0CE9B4CEFE8D0BEF171D7F3F43B0334 +:1019B000C71FE1E74A8F431F8CAF8F6F1AAC7F5F61 +:1019C000749DEBF2EF8B2AEF453313FF5DB7FDCB30 +:1019D000443AF73EBA5FD34C8C4F3AA759E8DC0142 +:1019E0003335CD7D08DB2B87F076E3A625EF62FB50 +:1019F0001D0E6AFFD2DC54F31CD263B2573D471F61 +:101A00003759710EDA7D38F53B72EAB96E95DFFB16 +:101A1000BBDE230DC769F3E12BDD3F9E18CCD47EDE +:101A200077E3F8AC6B330314E7AF6A47BB593EC5A5 +:101A30004ADF1B2D17EB4D97B3872DC5817F477B61 +:101A4000B2D9F374DEDD305D8567979D9FA78BD992 +:101A500087BCC42EFEFB09CC4F2AD12E323C1FB8C6 +:101A6000FE75EC7F6861F7FBA7EAF945DCAFC3FDC3 +:101A7000BBF1CABE69056BA2F8FA7A16213BF65F84 +:101A8000D8473D86F8DFEBD84BCFA9FBA860DF8FA6 +:101A9000A37D1F7D56A6BC00E27CFA5DCBA3892105 +:101AA00092DF729740BF3B006E9BF29A73023F57E2 +:101AB000186B17DBECE7B370BC2BD1938D0C7C7EDD +:101AC0008DA67E519114B68B54DFD3C7853DF1E1CD +:101AD0007FFBF5FF01CB627F220080000000000049 +:101AE0001F8B080000000000000BDDBD0B7854D5F3 +:101AF000B937BEF69E3DB76492EC84900B04B213E6 +:101B00006E0183EE048C80A893AB51020C880A5EB0 +:101B100070128206484284D6C616CB84C410103494 +:101B2000D48840512751F052B5034645C57640440C +:101B3000CEE7A5B1B6FDACB59E44BC211747506AAF +:101B40003FEDF1BF7EEFDA3B991982D8EFF23CE727 +:101B5000F9E71CBB597BADBD2EEF7AEFEFBBD66C1E +:101B60008A7DF04696CCD80C26EB76FEC4DF861430 +:101B7000C62EC73FB219FBEBE2E70FA0FEB51BED87 +:101B80009A254BD4A7153056867F488C1539F49288 +:101B9000A1BC5D09F3286C145E361CF8E964C6CA62 +:101BA000CB9DEA7A9DB12B985F6116C62A580FD556 +:101BB000CF62217A7A986AC5732ED3E9F945616FAD +:101BC00001DAD53ABC0F25CA8CB5AADE14F7858C8C +:101BD0001D1FE17D54E5EF0FC6FE4EC17CEE55DCC6 +:101BE000A9EEA18CB998E746C6C729E6F35ECF9F58 +:101BF000CCCD4627A7D09418D3F87BC77609F5FC3F +:101C0000AF27359DFFAFCB7AAC3747CCFFFB6CF1EC +:101C10009478FB5466FCB5A86ECC9BAD88D731EFA9 +:101C2000341690301FFEB984F567FC8469EBD1F956 +:101C300014DDE19988F719899F9CC7A8C9F79771A6 +:101C400078585C0CE3BDA34A7E3BC1C93D2BBD0067 +:101C5000EB17F379A7AD5D19C9FB2949B7301FEF21 +:101C60009F8DB67ED8EB604CE7FF87F914314F4269 +:101C7000907F375317EF699EFCBFA2F7C7D33ADFB7 +:101C800092645D9A0E382B1FF6AF230BDF8975A681 +:101C900059C43A8BA2EAA3E1D2F8BEF3D5033903C3 +:101CA000FDF375FB7E923CB0EE54E6A3750F6741E1 +:101CB00089F6734A0FF5DF6CACBFDC1D97FC492C2D +:101CC000F535EE7B5EBF7FF51E76780C2F5B6E4898 +:101CD000F0BA303E7307F8F37BFC5D36F0FCC76A60 +:101CE000C7AB07AC8C5DEFE69DF0FDFB0FABDB8374 +:101CF000FDFD5C62F3D15E65BA32378E3139767A9A +:101D000046956BA05D743FD1FBC8F16101F0217A6B +:101D10003FF858377A783FAF0EBDB67A135FDFB819 +:101D20008726E4A3EED594EB7FF236CA0F8ECDB7AB +:101D300070785419E3EC1CB664F7ADBC5C224B8B95 +:101D4000F1DD01A7AFE85EDEAEE7595B76970A7C6E +:101D5000A8E9980338E766E737A39D8D51BB1917AB +:101D6000D44DAACA1D98DF0AF4C7D735C3C21AB02A +:101D7000AEE18A80DFC81C55F2F1FD19C19862C935 +:101D8000E7CF34BFA29ECF984D614A4C127FA6B5D3 +:101D9000BBD478DE6F8CE8B7243B98B1928FEF7993 +:101DA000CE95DFC5C73B20ED929FC17C0A1D2B302D +:101DB0001F73BC92A4C09A24DEBF4766F9BBF9FE2C +:101DC0009514054763DE9E276CF95D0CEB09C8EF9F +:101DD000607FE7C6ACD8C1BFBBECBB2F98C2CBD7E6 +:101DE000CFDF94BE9EF7FB7C6DA1753C87FB06B7E9 +:101DF00083E0708D4772FBF9F869BEDE962158EFDB +:101E0000FCC2C958AF39DE5D6E2BB59B3745B49B1C +:101E1000E7A9B45687ADFF1A7788315EBE667E9F0C +:101E2000027CD814BB90F8CB3CF097C903FC650E3C +:101E3000FEC1E9FCCF575FFE2AE0F37625E72FD2FB +:101E4000007FF1E01F59C45F0E0C9507F804C7141A +:101E5000EB6DBCBF6B0CFE722D6BA7F7D7B1003DCD +:101E60006F603D829FF4F5F393CCE4EC013EC2F940 +:101E70004A27F0EE6AE6A676F3197BB9370BFC44E5 +:101E8000573C71E01B2E9F257E503CDB39189E6D20 +:101E90008ABD94D677DD59F8E76B332F6AC1FCAF62 +:101EA00073055D9378FDEB71567D0D1B8C8FBA1514 +:101EB000C003FC73056F578AF5F1FD2A67EDC42F47 +:101EC000AF3C2BFF0C8D54F864EA2DC156C0EB7467 +:101ED000FADB1F48BC7C5B4C9E9589F5FE1EEBAD82 +:101EE00060DEBDBD04DF8002FEC5D713147CB48163 +:101EF000E61FCE4795827F838F56A8C170BE19CD4D +:101F00003F4670FE097C66DA8801B80DA7CF0F64E2 +:101F1000F1EF148DF989AF32B7AF8797ED1C0058F8 +:101F2000776582F72F989FA27A18F00813C3FE30C6 +:101F3000E623FCBB94339AF0E7DD05EE85A5FC199A +:101F40003B99B9FDB978865A37F2FEACEC7C59E280 +:101F5000EB7BC0C9DA9C9CEE6E2E28DC5CC6DB2DC8 +:101F600057389FE2EDD6946944AFB13DCCDDC9C787 +:101F7000B12ABE4AACD7EA50139B12192B28EA09A2 +:101F8000CAFCFBD050A6820EE37A44FF0FC4311F77 +:101F9000FA5B5326E87D4D994A4FFE7D13E069CDEB +:101FA000E1DFE7F17DBD5EC885D3EBEC7E3BD6A9D2 +:101FB000783313797DCADFEC0CEB3EBCDE5E033A6E +:101FC000AAB2312FF845B2C137F8CED1BABE716787 +:101FD00051BF3E5694CE9910DF98F569F4646BE8D2 +:101FE0007D5522BBC9C3E7733A515B88714FAF4B34 +:101FF00095F80EB02AABBB6C2A1FF7F0A644698D8A +:1020000036D03EE416EBADCA727FD9C8EB43735CA1 +:102010007A176D87376F0EC70BBB65F42C8705F2F7 +:102020006C55600FAFAF1BE152EDE07799EF6F9EFB +:10203000C2CB47BAADD823B664C75509417CA6B810 +:10204000D3804FD17C7A893F528E2D7B2CB25C1786 +:10205000882C2F8F925BD1722AB590CB9DF30827E5 +:1020600075C89D8F2077382B32E54E3513FBC99804 +:10207000DF3627EE4CB9F31FD6A291857CDD4B8D60 +:102080007DB7DB1B3EEBE4F0B2DF353EBF89E013EA +:10209000DA07FA4DB9372B1F7CF15D838F1F737BF5 +:1020A000C616F27DB0674E3F9FE45B6605E1C7E967 +:1020B000AD4E0D72FEB45312FBFBB2E4F7F172C7E2 +:1020C000C8EF5AB7F27E3AA6D9554927BC9D75216B +:1020D000E70735063D25DBDC4BD0FE933931EA1AA4 +:1020E000C1EF1C32ED2767C0FC59DDDED47A3BAF6F +:1020F000CFE402DDC251AA96F5C48368EA0AC5BEE0 +:10210000314BC5F826DEFFF2AB62889696B5F86DC6 +:1021100000A3F22FC503BC5C8BAEA672D6EA70ABEF +:1021200085BC5DDD9EC43CB42B2A94099FDAA6AF22 +:10213000F1E0C3CA04D19FBD7B8E6F38FFE765FF16 +:102140002A615EFEFD2D8D17DFFBD124CC3334A434 +:1021500010F8B1CE42787FCBED53E9BD34B7BCE780 +:1021600032CC7F5DAC067C7E65AB9DD6FF095F3FC0 +:10217000CA9F3C20E0714B86CBEF90CE5C7F8B14E6 +:10218000B4093EDE130FBCF9F4819FC503AE9F7204 +:102190005647FBA736C4139D6B0DF173C3F0EAC31A +:1021A000ED9672D0C9A7DB47DD3D05F09D7BE58547 +:1021B00090DF97258E8ED75C03F54C6134BE923448 +:1021C0006527E8EBB27F59883E0EAC3F2FBE97D70C +:1021D0002B32F3EEE24FADAD7809E865A927265121 +:1021E00093685DB4AF1FAE73D2BA96B7AD6DDDC262 +:1021F000EBDFE2FA9A3485BF9F3B4CA6FA2725A66F +:1022000042AFB27C5780797FA8E6C4333C99523EF6 +:1022100098DE23175A08EE07E6C6E841DEDF913F55 +:102220005974D04F61E6AAD03EF4B7C142F4546667 +:10223000C99DE500BDADE365F0055FCF66ACF33049 +:10224000A7371FC87EEE96B269BCFC61A12364D794 +:10225000FF7DFA3AB4E1542BE8FDF014BB6A57CF86 +:10226000A437FC0539DFAF32F6299AFEAA368CB2C4 +:1022700041AEB33641876D8512FB5EFEDFA2C37BA4 +:10228000404F261DB28CB984AF663B93EEFAF53D04 +:1022900083DFBB7264D2371C3A73EFE0CF543B73D9 +:1022A0004B9CFF76172A54DF5D68A3EF947FAE78CE +:1022B000EC4D3EFFA985DE07314E2673E701DFB204 +:1022C000BE62720283BCE38204F26AB4CDBF83AF04 +:1022D0007BB3956B4EC047C5FBCC9BE0FB6D4B269B +:1022E00081FE7719FD1D737B1F453FD5ABBC5FEEAB +:1022F00063C0BB69C407AABF99276B7CFEAE0E46BC +:10230000F372E99E2227F87EB26732F0D2E4E363EB +:10231000F87C3B73CFC48B3F165AA9FF31C91EEA24 +:10232000E7A96295D6D1011D83F7B3AD31C60F7908 +:102330007ED97799B2CCE775372745C845C794B998 +:10234000B245E819A131BCBC22CDA27D34848F3FB7 +:102350002569FFF778EF4BF86A0CC941CFFEEFF91A +:10236000772E5E968652BDF8CEEDA0EFC6E488F6D5 +:10237000EAFE84AF122E812AE6D05C1C5F36F07F25 +:10238000011FB23A44D9DCFF93ED12D1A7836976DD +:10239000431FF86A479E90B7909B2BD26C340F7303 +:1023A0007D374C2B7C03FC96B9DDA3930B08EEF430 +:1023B000F7DCC51AAD93DB1DCC827E6416D8C6F15E +:1023C0003936B7D70AFE63AE675A87BB1578180D42 +:1023D000B76A639E1B314F8E2AD3745ECE39739ECB +:1023E0002BF8D21A397E040CBED9AF9F1BF3E4F24E +:1023F000AEF7201FFF0196C0D6139FF6FAC157878C +:102400002B710C70B638EEFD35F85DECE486877AFA +:1024100009AE0A1BC3DB8F1856DED9CB9FFB9B3955 +:10242000DE65F0B2ECD5B05F4A32D7EF391E0FB798 +:10243000DCFA28DA0F6F4E559B613759F9F7FCE942 +:10244000E30A05F46F5F91BB13F53E9B436DE6E332 +:10245000DE1F1B4FFCAAF1FD38E29FFF903DA42434 +:10246000398BB269DEE9AC81F4A8A1CB0E4A127FA8 +:10247000A58F12F2FE0CBBA848D8311FAD6EFFF538 +:1024800047D681F7EB12BDB313793FD57CBA97726B +:10249000782C6EDFF4EB8FC2E0A5178BFED64A3A9C +:1024A000AD8313BFDC44EB984BF31A6ED14EDE9B29 +:1024B00088F988FE4128FD7C83CFF301CE9E9C499C +:1024C000678E1BFD5C6C8C93D321F9C7C40FBC4F86 +:1024D00034FA7D22D19D54C49FA3D54BE707F9B8A8 +:1024E0002B25AE4FF2F9341AFC9CB5D9FD3B24C024 +:1024F00053BF16F4E07BD32AA16CF6D31CA7A762C6 +:10250000FED1EF573AF5D4C441E0D5AFA7B45998FE +:1025100097EFF39276F13C5BBB8B1FB53708F9124E +:1025200058B40D7C58D2B2812747763C3F09F6EA71 +:10253000875661C7467FB73DB1706211877F9A8128 +:102540004F1CE2EF3ECDE7BFCD97A041DFDE621525 +:10255000EBF32D89A1F5E9FB1D44FFCD6392FCE46B +:102560006FD9C3692E65802FA7346B07BD90CB85CB +:102570000EBD0B78DB56EAEEE7F3D0C71DBD4CE18C +:10258000F59BA731753D2FDE529448F06D9EEA13FE +:10259000F6BC418FCB0D7A94F64AC1B8F3617F88BF +:1025A000F939DB6FE9C5FC629BC4FCF69BF3FBA920 +:1025B000C398DFA1AD989F2D46552D89D485DB1199 +:1025C0002637588BD60A3A82E106BAAACAADA6FEC9 +:1025D000385FD212A60F325F16B93E731EB15B3957 +:1025E0003E5A307EA07D27F675A2A2EED0047CD2A2 +:1025F000307E7D86800FEBC982BE5095E6E893E27F +:10260000A99383457C3C9BCCF9E520F079BCD47D33 +:102610005311D9435A8605FE8B051332A03F543817 +:102620005E7B573A1F4F1620FB4F8FF61745DA7D1A +:10263000F58DC51EA12735FCE71DB00FDEB4921E37 +:102640005D7F7BA147E8490E1FE4F9728F8DE8BAE0 +:10265000786F960CBB7BF91B16610718FB60AEFB0D +:102660002549F5A501CE120B3CCBE7BD7C4F61BAE5 +:102670009597EB3D36097A5455DA3B5BAA79BF1D35 +:102680009D423E74AC1B43FAE673FF75D5073EE0EE +:10269000036FD385F7795A13C6E9B843D37DBCDFFE +:1026A000131267D980DF827892771DEB0E3FF80B0B +:1026B000D42F71E918B7234BEC6F475C8E1F76431C +:1026C000230B90BDC30D4F7D077F1C71BCB205FC71 +:1026D0007289F3F52D58D7C516F926D87317670AEE +:1026E000391A5A67EDEC92F05E32CB5D281FE1F4A7 +:1026F000B09B98BE9612AE07545999077452D529CB +:10270000FBC65C10F65EE2EFA10F285A4AB8DE77EE +:10271000AEF71D89EDEC7682479698BFA1579C5283 +:10272000F4841FA2FBEA6F2CCC1D26AFAA15E1B7DB +:10273000BA275E2F9813F6DDCC6299F8F022439EFB +:102740003BDB1FFDDBD37CBCA2A6CCACF5C903F8F8 +:10275000FFA1414F6F1589F629C063DE7FD189DC67 +:10276000F781FFFEE6044DBE14FA0623FAF46DB2BB +:1027700047D0FB8B9BD2FDF07FC42A627F176F8806 +:10278000F337F1BDA9FACCD607BC7CF1F884560F1B +:10279000FFAED7C242F2B473D391393EDBA22543D8 +:1027A000CFDE6CF0273E1EEDD38B0B52887E4C782B +:1027B00099E35439AC417BFC20FD276B93D1CFF1D9 +:1027C000D58F6D079FE7834C86BFAE4E15702B8A61 +:1027D0001D3F19FA61A363FC64F0C3AEA9DE8FA7A5 +:1027E00084F9EF5E8A195104FA7CC9C6087F9CED12 +:1027F000E33E025CCE064777B1B0574C7E60F6B33D +:102800001FEBC8C53A72465786F1DB2A8793E8BFAB +:10281000E8048753F28F8793D9BF09A773F57F36F2 +:10282000F81C2C757F0EF9C5EDBB4EECDF7EA7536F +:102830005BC3E1BBCF79B9518E237B518A7112BD45 +:1028400015C5C4929F588A9DB8BD1DF814EB243B52 +:102850006091DD9D25815FC6DA35E0C77EE70B79A3 +:10286000F05F14D5737A95E01FBCA212FD15C5D890 +:10287000C94ED9E77C2D1DF4BEFF569B8EFEF63B5C +:10288000277E44FDF3FED03E39C9BDAD1D7C5C62A0 +:1028900073D6A8A2FE2D7CDF1C9F857EC61567130C +:1028A0009C4B62E308EF8A62859FA268B8C0C3A20E +:1028B000BBEC9D82AEDC5D3D629F3C3B74C8E97819 +:1028C00037E6B5D21947FE9B73E285E25B8B753222 +:1028D000475C3EF8F8CA315A35ECA195D2481DFC48 +:1028E000ABC816F80DFC3F8C6B7DE8BF289ECB7300 +:1028F00094DFE2F23CEBBF953C1F57CCE1B528B624 +:10290000278DF425BE69D083374A3D1AE60BF900BE +:102910003FEF4629701EEDA3C2B2A017E630DE7E5F +:1029200032C917B63EACBDA288F6158EF7A91E7D3A +:10293000DAE9FBF6AD28DB54A6A23E5A1E3DE29C26 +:10294000D1D5407AB83AC79AC6589C2CFA973344E6 +:102950007F5B8B7CE3555EDE5A15A3376781EE0201 +:10296000E735B8CE94638BECFA07E0678CF3A71DCC +:10297000B0371305FE9BEB2D33E87046B1B0CB1694 +:10298000C5723E987B663B934FCE34DA8D99EA2E22 +:10299000849C2D847F8E3FE3723D591C83D97BEE4E +:1029A00015BD31BCBF140B6F3F8D96E36353C88ECA +:1029B00030CBF044B3FB643EC36128FEBAAB647A0B +:1029C0007859B4EFFFDEF755554906D985FDF51066 +:1029D000AFDC5E34CB6E27C7B7B57103F50A8797B6 +:1029E000A34D32C6DB5D553A9AB18F25637CDF0B70 +:1029F0009D6EC801278B182F7C7E4A54FF56DEBF80 +:102A00004B33DAFB6ABDE8EFBE7CB3FC3FFC6E3EA5 +:102A1000FF7BAC91FD11EB30BE47C11CEF9D57D73A +:102A2000766DC818B05BB91DFB33E09B16528B6006 +:102A3000BF9AF66DAC7A151955D66FE631D88FD698 +:102A400064E18FB7F23D1C0D3D43CBEE22FD48D132 +:102A50007CC00BC7082D1FFA6093B13F9509C25F78 +:102A6000A9EC9DE3861A6765DACE37B3C8DEBDB33D +:102A700018F22BB3E220F8D180BDABB8819B63B8CC +:102A8000DD2CF1768E0E2E7701930CD93F4612CBBA +:102A900082DEB0EE3ECF8518E7EFC5DEBB8BC3EC20 +:102AA000AE311D6E1BECBBC3067FED58922D4B6102 +:102AB000F8F3B0813F6360E7E7A2BDBF2D1B7655F9 +:102AC000E23CB2A7CD76D9EA6819EBCECE10ED6222 +:102AD000B9FD0C3F5776873705B3C856BC0BB0DE3F +:102AE000ECF937DBA01F3D5C2CFC2F93DBFC4EF890 +:102AF000B3588DCCC6F0FEEE2AD684BF56AD16FE76 +:102B0000DEF90E17ECED6D9E9D4EF43F26A78BC6A9 +:102B100067AAA2A33D53B87DCFDB3D98A45CB83E25 +:102B20006C3EEB55A51CF328B0786F257E30649A77 +:102B30001BFC6AB8E5EDAC4ED84F43F22DCD1CD44A +:102B40009BA5487A319FC34BC57EB4481EDF6CE815 +:102B5000059C3740EF32EB3375E15F78B158F823CD +:102B6000349F5AE4E0E34CFFCA43FEAF178B85FF66 +:102B7000E3774A6FAC8A7933F7AD5558A7C7A5817B +:102B8000CF32439F4B5EADE998B723B9F7AE0B50F8 +:102B9000AFCB3AC276A6BFECC40BA95DE0E3134A03 +:102BA000BCAF01DF0A2CBDF7CEC67AEE5274F473C7 +:102BB000E2053BE90DC9BFC8253DC59ADC43705EFF +:102BC00097C6C80EB874DD47B1302F1CC91E067DEC +:102BD0003A966F13F474974BF2430E4DD6F512E20A +:102BE0006F0D4C1FA3C35FC20504AFBFD2F1B6D0B7 +:102BF000E3A3FC0463383E7DE2A01051CBF7D06321 +:102C000074E12F2863C25F70E8BB79142F911D5EB9 +:102C1000F2E395CC8F619857BF7FA1B5F75519E3C3 +:102C2000F6F8955A0EF7383D40F26A31E89E37A91A +:102C3000CAA9B261B09B3B24C2A36A03EF98A28FDA +:102C4000843DF17171AC61EFB610DCAB998013DBA0 +:102C500060273DBAAABD90FC61E63E71CA12ED3A0A +:102C6000041DDAD6083DA7CA884770400AFFBB4159 +:102C70007FA63F9EB176F134C6DD2CF5B82D020F4C +:102C800048FF5E387AEEADAFF279274D9E908F798E +:102C9000A729CC61E1F6B6B544D8CD09FB855DBD69 +:102CA00055DA948EF96D4DD7A466BE1F93CB05DE21 +:102CB000DC93C8ED01E8E56FB34B609FA4C63674A2 +:102CC000021F526FCAC9875C882911F08A99D4BE45 +:102CD0008FF4F75B35B58BE360DA9ADE52E07FDA8A +:102CE000951A43FC2F617F03C535427318D50FBD7C +:102CF000765513DADF358C2559D09E35492BF83CB3 +:102D00005A874A84E7AD955CFFCF057AA9843719C5 +:102D1000F355097E8554CE46D08F83A9BBF88CD954 +:102D20007DF1A21CBA9D2576C154952D3741FFE651 +:102D3000FC93D695C4F1BF0B71D492448253AA9DE3 +:102D4000954B49E2BD9FFC51CC0D7F6E6A71431ECD +:102D5000C64F1D259EEBF3821427DBC6FC5B760075 +:102D60009E393615F07CE9F8C116D0C7177936DDE3 +:102D7000C2F128E5BA432D18FF84A434C0DF7E8653 +:102D8000DD7751F198120E9FFB9AE62C588C7E2627 +:102D9000BA881E986F977E15C5A322E5A962E8DD63 +:102DA000278FC5C81267D82D861E71E8D0A804F8F1 +:102DB0009F29D6C2D73DA92489D6739269092A9F33 +:102DC000EFA17D63A9DE2C37A21DE84F57C84E380E +:102DD000D30E5B61D89D1611BF31E8D89598E25F9C +:102DE0009F45F6998FE256BB9CFE2E8A3BB120D5BB +:102DF0003F3B4ED45BE6103D847671BB550BB7D795 +:102E0000822AE2402756F76C291983709FE12F7DB3 +:102E1000398EE6916C0BAA13F8775F486CF71AC0ED +:102E20006D42682C16EF92845D77C2F0AFFA74A5FC +:102E30006B078DEB4EBB2ACC6E6B31F8A04B0ADED4 +:102E40004CFDEE72CAE1FE9A6176FE1EEB7E86BFF5 +:102E50000FD3FB5EB28AF7BE5DCE087DF0395B70A2 +:102E6000278DB75BBC7F55F5DE581226776AE38362 +:102E700063135D3F069EF97703DFB91DDD83F83AE2 +:102E800087970FED5D1B47907ECBE129F0749D4441 +:102E9000F0E4F63DC9C34FF2942EBBB07F89DE8FBC +:102EA00058758ADFF86EBF40DD417E45DDB618FDFE +:102EB00014A635C01F61CECB6515F6AB0B767042FC +:102EC000D87B038E4C09AA73C3ECE645F9D5152CC3 +:102ED000FEECFAECA29AEF16326EBF2D6AB31BCA53 +:102EE00085F0EF99F5265EF6EF8381979CFF44F815 +:102EF000E9D7950839EC8FF2E72DF1B17DE45F79E0 +:102F0000C40E65B69F3E369630938FD9603F2D79BB +:102F1000DF49766474BBD34ECE2F1197FED51C8A41 +:102F2000FFDCCC1AE859C3BF13F1A0813898CCF567 +:102F3000A3A52C40EFB53685FC22DABBB17EC4696F +:102F4000B836A3B18B901AE021FCCDCA90F5203E93 +:102F50009338B7E7DF692DBC3E95AF779D42F4D03B +:102F6000D926F925FEDDDA1659F8B13648FE311CAE +:102F70004F7C2DB21BFDF0F1D2C0779F2A117AC28F +:102F8000AB25869CE520C07CCCA7D93F871BED7381 +:102F900013938328CB9278AE851E3088BD60F6D718 +:102FA000626D70404F098D90299ED662F52E07FE06 +:102FB000B4FC3556869ED212D7D0562EEA89479C4D +:102FC0007606CB299E9B270B85166C037ACD5F9DD9 +:102FD0009DC0C7874B845E1EBDDF8BDB23CBB76CE8 +:102FE000892C2FF147961731EF6FD32C881F45BEE0 +:102FF0007FB844C42316318DF6A1C5AAFD318BFCE0 +:103000003B0AC3FC9B3204FCE411E2999D58329FB9 +:10301000E839D1C6A00F6E30FC181BDA92C97E6C5D +:103020004914F8F67F3ADFE879BE593256C0375175 +:103030008CD7C2E9D38017F1A1454FDA1F06BFD361 +:103040000CFC3F2A093EE95B672139CE5CFE7563C3 +:10305000F9778BD65928EEEBB786721027F16D8C75 +:1030600023FBFBB0A4EF445E96C4B414E0C95183C3 +:103070006FCBF75C52007EFD46149D54E9D2DB16FF +:103080008EFFC5576D28C07CA60D61BA9DCFED455A +:103090009B3F16A23F7AFDFC4F534C3F20DFD2CC22 +:1030A000555A19ECC63AFE7E08F850787BF25FD884 +:1030B00006E88AEFDBB60B3DDF423E4D2B16EB9A5E +:1030C000F66BBBBF5982BD7478D76B9389FF137FB2 +:1030D000AF5F15DA897C94BA0BBD32F2248EDDFE27 +:1030E0005E99A4B17EB9F1C5CB42FF9BDC1246B715 +:1030F000F89F0D9174CCDA92285EC73A22DFD76C24 +:103100008FFA8EFD973D7C9EA69EB3D9E61D0F3D9E +:10311000759BA7A000F3D96C6D2F075FE89AEA4D65 +:103120002EE5F51F957A0ECAE4D7758F053FF9DDB8 +:1031300077CDA467F87298BA83F2317A67A05CF011 +:10314000BF6409EB7C1D7A7C989FC9D4834DFD2B0D +:103150009A1EB552A1374D2C75EF829E7BD977BF51 +:103160007763BF9BF74A2AE9C7AEFDC1E19013BC64 +:103170000CFDB85EEB3D88389ABA7FF9A984115CE2 +:103180002F7565935C60198CF4E7FA0E51CF7CBC07 +:10319000FE9281B8BAB2B7A93C9BAFCFBAA7C98398 +:1031A00075C24E811CB0D650920FE28E849F9BF95F +:1031B0001C40FF939385BEC63150F80F6DC2DE48A8 +:1031C0004909921F17195EC0BF8B4ADDF3B17F1FFB +:1031D000E315D723EE9AE29E8AB2D7F0637D0DBD48 +:1031E000E302C67A0D3BEBD09FAE22BDE26BE62137 +:1031F000BDA2B054F0F743FBAE49E8CD1D78FF897E +:10320000C57B9BCAE9FC16E6233EBD84F9E9C93AB1 +:103210008688FD66DE32CCB7B682EB5689A20CFFFB +:10322000749DC7467E7ED06D308A6EC3CB8CD36DC5 +:10323000300C5F6A959E56D20BB94530640AE2D5D0 +:1032400091EDEB5988F8CEF23DDFDB23FA31F0281F +:10325000D5B2228FFC19FF667CF1DF6D7F446B4F86 +:1032600081EB81CB7BA293FD469E4399C5E536E277 +:10327000F5C29F7F469E47A8B581EF77D134BBBA90 +:1032800086F40011CF3FDE6D65C03366D9D00A7F6A +:10329000D8F2E1166619249EBF94ED424611AB3573 +:1032A000F242FF4FF3675697F6E7CF64FD6FE6CF24 +:1032B000B49686E5CF44D3D5FF34E2F6AFB84E0DD1 +:1032C000F186D517E5FAC83F515034383D7618F4E9 +:1032D000186BE45539141F0BF7EF9DEDBBED061E7F +:1032E000BF620BBD1B986CC43F90B72B8BFC2DD9D4 +:1032F000A12635A5C30FE17910F4E1D04CFF03B747 +:103300005B93C947A6C26FE7D002791AECFF5A97C0 +:103310000E3B3436972B20BC7E21CB21FFC9CA62DD +:1033200031BF7E3C89C21F4967143F83BD8F7E87B2 +:1033300073B311F6974D0EEC425982FF8ED3CF76C0 +:10334000674F16CD8B6FAA88AF7AC9FF071F0BEAAC +:10335000EF4934ECAB3C615F713CA73237AA554171 +:103360006F3DBD900B771538280FD78443AA2CE208 +:10337000AF67D30B53B91EEB4AA2278B4BA27C67D6 +:103380005FDC0FB437F94FEA8406F267A4CADCFEAB +:10339000CB23BB91ECAAE1965B0B699D8B18BD1FFB +:1033A0009114B815EB1891C4545A774C7081880F5A +:1033B0008A72BAD25048FE279DA94D5307FA8FFB57 +:1033C000F0993CBC8F1B69C0CBD693053FB6ED3658 +:1033D000870EBEFEB752CF9F4BC9FE769F4FF94076 +:1033E00006DCEB0DFA0AA35B1FF1EB28BA85BF0ED2 +:1033F000762F6BB793BE47A442E574D2FF3F409946 +:10340000CFE797533D874B497F35F4857B26927EE6 +:10341000C51A87107F5D1B27ECD0ED52706B385EAC +:103420000DC0CB47F32828EA217B207407C7C3B01F +:10343000FDC934F03A64F879FAF1DA28EB65EE2F39 +:1034400031FEE4C9C10791AF58CF957CEC737DE0A4 +:10345000678FBD994CEB6DA032FC8D58A7C745FE18 +:10346000B6A985DE6FC5BC7B5BB1FECC645600BFE0 +:10347000DBFA9CB96C918BFC78DF037E5C9FD8896A +:103480007E387D3740CE1D9EBB94F2580ABE2F6E0B +:103490002D17F355A16F26DB855FD79CDFC832411E +:1034A0005FE673B891E7788C73E9C22C8CE75E40D5 +:1034B000FE6DC39F16ABF5B8699EDD42F92A80EC1C +:1034C000C07C7F9141F0AEEF2ECC831F83059C79A9 +:1034D000685FF03717C1FBD8EDC3C89F34A1C49B08 +:1034E0005C06BC981C92B07FC7765D913718BF4EC2 +:1034F000B52431AC23D5C202F7AA03789062F32E2B +:1035000080BC5898CB45219FB2CDC8EBCC34E46A3F +:10351000E62A0F5BEC1A28BB92C5BEF0F732C699BB +:10352000585A6A435EA8AD4CA1EFCC3C148DA96BF0 +:1035300058D6997492C544DEC95D461E0AF385E5E6 +:10354000CB649F998762CEC7FCDECC4389FD46D809 +:1035500029D9AAF0ABC6B51978BA8A11DE4E0FF593 +:103560001427F0F58EEE084E87BF0FE986C04BBEDC +:10357000EF775DC0DF270F51A6439E3CD898BF1F51 +:103580007C4B59D77309409FD5C164B894CDBC40DA +:10359000FA4B86BF2B51E0B7D29003FBF2FA32C14F +:1035A000DFA616BA8B00FFA23F5B453EE346119FA4 +:1035B0003A9D5878641FEC908D7194877636BEE101 +:1035C00063FB292F351B79622EAC43F8D5D8688E62 +:1035D000107CBECAC6BF513C5C59F7A71198CA4FB0 +:1035E000CA5C342EBE83BD17B7C12263FE8BDB24B9 +:1035F0008A4B834323EF6E715B7211BE5BDC2EE955 +:1036000098F6E22D8532F2ACF887A47F8DE95065FB +:103610006F987C5866ACE7F7DF59281F4F76087F14 +:10362000789D96D469117E10A2D3BA51C99DB00B72 +:10363000161BF8AD74CCF1A56B03FA9BD95F5DF74F +:10364000AD2C1C0FA3F9CFEF15C17F7ECF31BB5D31 +:103650001FC0BF16AB80B7EF5F32E17FA6215F0FBF +:10366000DFFD6D3AF5D7EFFF13FC50B16AADB073D3 +:1036700095A6DE4B01E7EAF644B93E17FDE8F5A44E +:10368000FF6E8C65B05732378CDA8F3CDCCC3695C8 +:10369000491AFAABCB841DEC7BCFCE802FCAC6581B +:1036A00082A3B2C90D2C624A620AC14FB98F9779C1 +:1036B000FBB232917736DDC0C71629649C7371E77F +:1036C00041DFD6CBBC6B810714EF009C1B63847F6A +:1036D0005FE9217A7DB0A06704F0E7411BABC17AB6 +:1036E000F6DF7DDE5C9177AC48C09738E43783AF76 +:1036F000BF9B4A7AEDBD067C07C197E1842F2F5B03 +:103700003CA047C5C83351D6717B310B79DA5ECA0C +:10371000D39EEEEB290659C1BF5CA8FDFB72A03F0A +:10372000BEEBF645E4BDECB7AAA4E79BF916D1F3CE +:10373000DB69CC5B97455E36DF2727E8C58C67DD04 +:103740000FBB6F0CF2B98CFCAE350A43BED7FDB18E +:10375000BFA4FCAF469F5D453EF13F9C23FDF0DBDF +:10376000A419F659E8EF71FE2EB26F7CB20DF5B2D6 +:103770006377B85FE819037F1B158DF245D81BC22C +:103780004E3DA5083FEEA9552AD903C9316F515EB8 +:1037900081D6C4117624D6EFA6BC346673D0B901A5 +:1037A000B3BF24E43984C541930CFDEDA52456A292 +:1037B000E60FBC7FC558EF5183CF232F80F8BB4B5A +:1037C000E4FD0CC477F577DFE2EF2D6BCED710B7B1 +:1037D00037E3BC96F8020D74DFE82AD0103F7D2253 +:1037E000D1FB5659D8BEBF149F5604BFD0FF0FF36C +:1037F000BB8E609D6F18FE8D378EC7C859DCFE4AA0 +:10380000427ED010D801FEAD3743CE5EED223B3C68 +:1038100009F94143604F34FEE71D7C9DC3DEB05281 +:103820003E70710D9720BCDD30E40B65211F48C050 +:10383000C5F7B285E032ACDC4DF94049C807E2F586 +:1038400016E4030D413E5090F2283A9A2ED07CC9DE +:10385000C8071A2593BFFF4D0BE159479EB6B53AED +:1038600019F1B65CC29B5F49065FAA64221F284E0D +:10387000F8C53A16338AD3F4E703D569945F04BFD9 +:1038800029E141033B8BDF54E825A11B99C06B451F +:10389000E49F7D3145257BBADF6FBAC066FAA1850A +:1038A000BF617E8EF0AB5A248A4F8616C4F88DBC59 +:1038B00021B1EE31D9C23F63C8AD2F7E92447E6BF9 +:1038C000939EBF30FC4BBE9A18A35D281E7EE96D07 +:1038D0008CED46DE5AF3146D1FE23F5F20AF9CF67D +:1038E00035141FEE4F3DD7FBFD56773AF1D53936EB +:1038F000F24F733C1DB50170D09D79E4FF37F2F2B1 +:103900008A8C2972FA54EE057DBAD3743ADFE7281F +:103910007587C711A2F16666145DCE34E8323AFFAE +:1039200068F6E591F94766FE8C593FEF7241AFE6C4 +:103930007391A1C799F868B6BBEC72E12FEC6F17D1 +:103940003B78BB92FE76C6B8768E5FE043467E40FB +:103950004592E08766FB2B8D769551FD46B79BDD42 +:10396000DFCEC88F6A3E8B5D67F0A1970ADC4D976A +:10397000F3796CCCEAA1BCD48D92B013CCBC09E035 +:1039800011ECA68D52FB02C3AE5245D9C8AB70985C +:103990007910222F626B8AF93D67F9F9F40C228EB7 +:1039A000B4D1D993063FC240FEE345C4578BFBF325 +:1039B0001F755ABFAF49AC5FDFBFE73C9CCB7BE5CF +:1039C0004E55A3789191B764E2410ED30E202FA3F8 +:1039D000C22DF21FD916ED00F2B65E918C7CC42880 +:1039E000BC30E552743E92D4B6AF05F931A0BC1993 +:1039F00053C2F392A68CAE34F4B970FC2B7219F951 +:103A00004F2E7BD07EFE20E39C239FD19C47B45C4D +:103A10007D293F95E42A27B140D29401FDE61DB4EB +:103A2000E3F0FDF872CFFACBA1375E3BB585F4B673 +:103A30000AE12FDA2F73FD007E389BB0AB6CD70CF8 +:103A4000EF6A0ED3A34DFDE725231EC4D202BB416E +:103A50006F1392B47CD8BB489506DF79A27B18E936 +:103A6000ABF71B7833410AAC481CF5EFC827B7DC2D +:103A70004772D46AF009BD17F9B31FC639C80FD30E +:103A8000A8F85EF38A7EF2111F5C394637E493C8CA +:103A90004B6AB6068EE2E9BB9369C8DFFE6F2C87DE +:103AA0005E04BD34FB659F95CB9F66838FFDE3EF7E +:103AB000D72A80C349DFC46CD84D66FB4306BD9648 +:103AC0001AF2FB95D57BB62B617EEC6257A1027B87 +:103AD000A9D4A52BA0D362D71C057EC452354F6153 +:103AE0005C4FBC383EAF8CE24151FBCD14CFC4F0EB +:103AF0003C4D739FDFB9DCFD16E667B63FDBFA4D40 +:103B00007BDA66D397E25C21D74E1B108FFB13AA9A +:103B1000E037B18716822E865BE2F566FE7C37764B +:103B2000E1C1A17C1FBF55BDEFA3FFF9D75ED18ACC +:103B3000B2B47F88B682CFE78BCADE02D885ADAA41 +:103B4000B717F5380F9AC251E9B6933D744E927982 +:103B50008618F69467E260E7D8CCF91C30F07D4C0B +:103B600082F708F07DBF1C8AD3E9DC883A92CE83C5 +:103B7000AB625DFF69D0E93EABFE5D88CF7FDFA61B +:103B8000CC3CC4CF8B62FF7EFD72D8E1F7A7E6C1C3 +:103B90008E33E15264D8738B654F4AD01231DFD334 +:103BA00018A7D65599992EE6BB9088D53154F8635D +:103BB000152DD71377F6F9364BC1C799D06FC9CFFA +:103BC00075130207E23C3BF1CBE71997CFFCBD5DD3 +:103BD0006EA6FCC450A54387FCFD830167C6C4F7ED +:103BE0003B1C2C09F4E8297A81FC3C0FD7BB74D824 +:103BF0005195880B59101F72939FF6E3C26F5FEEC9 +:103C0000E5EB4A2AF7C695F3F16F1A228FFC13D120 +:103C10009BF73CF813D97401E773ED7B0E94483E93 +:103C2000EEDC9912E9078B0DF8CC631E3AEF7A0DA2 +:103C30006B30CE016BC7EB93E9FCAE717E439B8882 +:103C4000F92D6022BF2EFA3CF042A6BE8CF3AF7F66 +:103C50006C4AFDE9EDBCCD5C3934D216766E96C364 +:103C60007B743987F7E952717E96ADAA1C47FBDA5F +:103C700031F447E1EB1C49C08DF3C35CF453346469 +:103C8000520B1DA24570263D9C3E7A9B13F83CE7E3 +:103C9000A464E5C15F73D9776A06D65BC654C9923E +:103CA0003780179C21C7A79BE788F9DFFDA7E2595A +:103CB000326FD7936D21FDB0BC709F0BEB2AB5D44A +:103CC0000EFB82F7D7037B832CBE868C6EDE6E568E +:103CD0009A85CEB1BCD6E46D813DF6DA7849E73CF1 +:103CE000815D913C87CE6DF6B0CF5A96E0BB2976C8 +:103CF000D547722CA84CE6DFCD703BE89C51798605 +:103D000075C09FCCFFBB727464B92237D2FFCC5808 +:103D1000AF02BA9CEA75519C7BD639FCD173CA8D2F +:103D20007B0426B009880FBD12E58F2E3EB73F7A7F +:103D30003EF0ACFF1C99CA2D3F3EFECE4B8674412F +:103D40004FEC99FECAC580CBA9BD59C8C46337548E +:103D5000087E7757B9C78BFDA9B7F52E04FC3E5CEA +:103D6000CD071A077FB883B9B922FEC96A95CA9FE1 +:103D7000AD4EA3E7E7AB357A1E5B9D43F52756EBC7 +:103D800054FEB8DC5D83F135D6B005F6DECA268573 +:103D9000415F5819B74294AD0E15426CED8883729D +:103DA0002C2FAFF50BBFC6926E7F2B96BD6CAFDB91 +:103DB000869CC19523928A5D687F9F382D7AF3A1F6 +:103DC00086834093FA3F7F340BE867AEBBEE1B89D6 +:103DD0007939090DA970FF0CE37EBA7A0ACDE7C8DC +:103DE0006A37CDE7E8EA727ACA577856A1BEBE4D67 +:103DF0003A80739D339FEC53F02C754BE4F7B8D4A5 +:103E0000CDFCFE2C9C3BF17A412F5BD21D941F5AB6 +:103E10003871EE033F61E0D3DE56C0E7EAA445A562 +:103E200043B28097E21E80CB6E90F4A03680CFE73D +:103E3000A2078DF59C80DE70DC27E0F24EF73B5444 +:103E40003EA970B8F0959EEC8E25BDE0E4BB3164D0 +:103E500077B064FDEA8B79D9FEBA888F8C567FF9EA +:103E6000D95B04D77892E35CEF25BEF0D27A11DFFC +:103E70003CCAF70DCE7373DCA34FFD2C2D3CEE70C6 +:103E8000342970FA3DF0B5BFCBE6F9E6C32FF2F264 +:103E9000F32D2AF18B13D6C02790AFBE110ECAB3F3 +:103EA000AA47FFA09F0FE42EE8094763C478A1BF8B +:103EB000C6D079867E3BF5DD98CE487DA34187BC90 +:103EC00033ED607BE6CF7523DFF9B54EE81D192E83 +:103ED00043AF68A809CF775E6B0B1C855FCDD72AEF +:103EE000F48AB546BEB3EF2DA157D80D7EF2DF4060 +:103EF000AF7815F8D088FDC4FAF97E420F3EFEBBBC +:103F0000A624789824998BE84B185BF1EC79A97476 +:103F10003E34237950FCC07E69E306CAE377DFF2C2 +:103F2000E1CFB581B27DD7B3E7FD2D9960AEC54E27 +:103F3000C3FAC5FEB0AD36DA9FF1BFFDF5E7EFF18C +:103F4000E7E3BBD6C55CCF9F1F950B3FC93FFE9EE5 +:103F50002A4D001EF99C1AE27789EAE0F1A97BA0BC +:103F6000DF8C1928274C67D262DE2ED11562A4DFC0 +:103F70004C5725E83789B8BF82F39B8B2FD5CB28C8 +:103F80008FC5C0E7C31B9F1F8EFD19C7ED30F0E939 +:103F90004577BF30FC053EBF47B96C46FCEE25AB0C +:103FA0007E620FF6F30107E5873DBAB12E1F72A6B8 +:103FB000FA570BCAD2C1979E63740EFBDB72A1C77E +:103FC000DEBC65D7AFA0BFE6EA4C477F176CEF9326 +:103FD00087F1EFF21E919AF19CF4649685AE494800 +:103FE0000BFC1C743341663AFC5AECBB878785CBCB +:103FF0007D768516E15F3B6F44F9219C5FCAEDF841 +:10400000B268180BD7A363489E9E97DA9904BE370F +:1040100031F3B9CF9B40CF463CF5C297AF7EFD62EE +:10402000067DDC97EE20FF00873BE4B75FE4141FBA +:10403000EF1E457AF873B28FF4055F155F27E8C06D +:10404000E3A3B8481D6F8FBC8BBABC9E3E9CC7A92A +:104050004BCCA67B6E3EF3AF247DE322AE87609D02 +:10406000F5DDF7950DE3E5E3D3992EF1F16B9E3D78 +:104070004571655C8C023FE3F1EEE694EBF8F7776F +:10408000E516517EABC712A0F1D87231DEF2BDBB8E +:10409000E83C13520091779AB8B7F095E1B40EBF9F +:1040A000C8CBE8BD3B0BFE87A15E6E7FF1F65BB22D +:1040B0007CE9B0EF4CBD26A9DC937505F450F55EA4 +:1040C0003A47F1B164C4D77EA47E62931B28DF9483 +:1040D000A5097BD3EC77841CA473FD9C4D50BEFED8 +:1040E0000E55C41931D23D34AE37EF0AC4512C9568 +:1040F00064CF0EB70B7B94A95751DEE78F1DFFFEEF +:10410000D8FF22FD77B91C4FF7A998FAE3FC21CD1F +:10411000748FC9B844EF251867B1A1973145D7A06E +:10412000C7D812DD975E41FA2FD77B64D2778A50C9 +:10413000AEB7707D7854983EECF871FA8EC6F42DC7 +:10414000F037F6CBBDAFF323E41E5327BD0BBBEA1C +:10415000E3389941CF6107E4DA83DCBEBC04FF9603 +:10416000C3ECA6B87CE21BD04D065BFFEF38DFF056 +:10417000725805B97CF68E43A39E66C443DCFCFFEF +:10418000E3F8BE5FFA8DCC0DD201BD22FA7B0E772B +:104190002FD659C86223DAB95922C583992BE9472A +:1041A000AE37F870A49CDFFF70F87AA79F7C3716B3 +:1041B000AA2B87432A9E675BCFCBC67AAEAEF0AE02 +:1041C000B8228C6E2FF94AA5FB72F87C6FC3FB4BAB +:1041D00015CECFC3F3694C3CF991F3FDA924F23F0E +:1041E000D99736B28FF71A7EB5BD4B72293FEA399F +:1041F0009C5B14F286F8EBDE38E17FDC3B2785FC24 +:104200007E2F99F18B4AE17FDEEB14F8BC375D55C8 +:1042100091A33ECCCE3EE906DD5A12481EF4F73F8C +:104220005415DF9BFECB0562FC8E39EEF498643C9E +:1042300053641AFFBF2CEE70BF5FBF3F332F78DE91 +:104240006FA95D0EF92B8759441E266BB61BFECA5B +:1042500015AF4F9C0C7F672CE94B1D59FEB66C9433 +:10426000EF1845ED1B59F0D794C711B251BCE49C2F +:10427000E7172B2D91E7172B2D51E7177D71D03FB5 +:10428000FF6AECE7BB8AB0ABDFF5479E5F7CD7BC2B +:10429000BF42F1C585DBBFE77AFF5E949FD1ACEFEB +:1042A000486C1F8ABC9CE015DEE7810F0B16EF708F +:1042B0007AC3E210BB1C9E1780D7DB62F459D7800B +:1042C0004F570BFBF33DAB886FF9FE2913BC7E57AC +:1042D000FDEA22ACEB77A134161EC734F1A43F2FC0 +:1042E000769568FF63F38C1F720D9E675C3E579C4A +:1042F0002F3CB94A36F362459EF1B376D3BF2BE625 +:10430000F7F244C20B66C4DD1F0A0C25F91434F21F +:104310008E1F5282C397037FF63A093F790F4EC82A +:10432000F91332DB0D7DF02683EF3DC4B404C2B334 +:104330004316DAEFFB63E3A9FF2FEEE0E3F372B07D +:104340001FFE7ADA556172B3D9B877EC2166E415AD +:1043500007FEAFE7219F08A7EF33F290CF0A6F99CE +:10436000FCEDA1DB2D863F9DEB58BCFD430D230CDE +:10437000788B384F88F3219CF7658AB84FE0212568 +:1043800087E23E17C33807BCEB2403DEFE756331BA +:10439000AF97C7101CCD3CA64FEE903B019F13ABCF +:1043A0000E176CD1F03D3B1FF7FDF8BAEDD4EEA12E +:1043B00028FC7EC880A3D7F0E7B15F0A3DF903B5BA +:1043C000372E5C3FFDC0F3491CF8DFFB8D96A0ED56 +:1043D00007F2956FD8F2E9BF90AF7C83C7D6877C90 +:1043E000C9B3B6FB655505FBA17A23EFF986DAE878 +:1043F000BCCAC83CC9E22BDD23AFBC300CFE9FC950 +:10440000678D6710FCE364335E41F8F4E267C3CC68 +:104410003C7011AF38E232F6271044BCEAC5EE2CEE +:104420001D72AE1FFE5BED543FC047FCB173C2E886 +:10443000FF4545C0F3457F64FEF78B86DFAE1FCE98 +:104440009FCB9447DFACEA8E70386FBBD03BED4A10 +:104450004EBF6B5CF90EE4F1D524141D823FCE7B78 +:10446000A5F752BC977B4F94C18FB99C89385B5D8F +:104470006E7021DD2FB6EAC7C9F765317BEB71DFBE +:10448000C4E77B773C87279F8F8803ED16F2C02B0C +:1044900007E38D32D92BCBF83F2F4DC2D36FA379D1 +:1044A000BB59C3DAA967E6EB120B4911ED851F274B +:1044B00060BB3819F96E4CDBA6E2BD6DA03DF98FEB +:1044C000FCA41FF2F62BA0A72D4BDC73F7C5FCFD57 +:1044D0005297CBB12AE9CC7D5EDABDB667D4F967D5 +:1044E000BE3F731E629D4A7C4F19F6ABEF2E898149 +:1044F000BEA63516B3C39306FC5AEA948683B07BF6 +:1045000016F389AA5CE254FA7ED68AF28E86781D6A +:10451000F1EB35B123CBEEE4E51A4F8C8E7840E514 +:104520003D9BE8BB697B051E4C7B4CF20F963F52CE +:104530001978F46BC485ABA2F26DAB3744CDF31C94 +:1045400079B64B1FF9DE1E99772BD6B5D85887C59B +:10455000378BF8C534C30EFF084DA6226FD4B306BF +:10456000F430ADA350D42B428FA963220FB4CEE117 +:10457000BD8DF6D1C1D4CB79FB4371365ACFA92D6D +:1045800009E47F3A65D0D1A9EDE2DE2B338FBF6E0F +:1045900088785FF78CE4875FA1CE5249FB57B7520A +:1045A000E483214FD41D365FE489869759BBE98F98 +:1045B0000DD2774B1B9888A3F0FD7347E441076D3C +:1045C0009FF171EA7D52605BA2C81F8DE8C7F0734E +:1045D0002E6742BF471E6964BD9FEC8587ACC2CF82 +:1045E000C9C95E1567EF428FEFE4F35EF9F7CBB709 +:1045F0003AB2C3F49825D6B3E93182DE373989DE81 +:10460000ADFD7A8C7B2CCEDF766C1AAF033EC32CCB +:10461000863D305CF8633B86EE7F9CE2ACDCFE605E +:10462000791477F521AFA563C904E31E0683FEE77D +:10463000DBCEC2A7768B7BE9EE93FAE532E4C47554 +:104640009B524DB92CE6B5D1C83750DC631D543FA1 +:104650005E37E2AEA27E288BE65343C1A7606B6350 +:104660001FAE33CEA95C17754EE5BAFE732AFEA1C4 +:10467000E1F1D373BDEF4874A727E552BEF71FAF32 +:104680000C938F1D897E27F2B659CD8F8B0FEC309E +:10469000F41013EE1F49226FBC3AC6B3FE32BEAE11 +:1046A000EACDD9D9C0BF0FAF147EBF8222B11FBCE3 +:1046B000BD4EF0708BFDF808F61F877F75B67B2C1A +:1046C000F21BCD7CD30FF2841FDFBC4FF0A8D1CFFB +:1046D000D12BE588272B11F6F0474E81678B2707F2 +:1046E000ADE0B33B349137586DF3FC8F4BC2E6F32A +:1046F00000F00DFBCA34CA23FCDAE8B75A96DCB0E6 +:104700005BAB7F6527BAE1F3A0FD2F582175C1DFB0 +:10471000F591112733F7853171EFC8757F184AE796 +:1047200016CCF3871C5F29CF8AEB93425F3E1BBEFA +:10473000727C867C4BECC757315EC782B1847FC3E5 +:104740002C02BEEC9E38D14F69513AEC34E407FCA0 +:104750002FB42BEDCF0F20BFD739F5EC25D64EC0A7 +:10476000BD5FCF5E62ED1A0CEFFAF1E5FF1DDE656D +:10477000CD187A76BCE3DF5FF8437195BAE79F7A8C +:10478000CEC7E7B9F4B7F7C5C34F7444694FD179C1 +:10479000BFB53BEE8C77F3E7678A2F1EFD1DF15BFB +:1047A000E85C70743FDE199271AED41D8FFB87CD2B +:1047B00078EBE74F7CDBFA73BE2FA72516821CA986 +:1047C000EFFE67EBCF399C0EBA1D21C899CF94DE5E +:1047D000B25FF0F2924A574313DD0F13952FFEE8B4 +:1047E0007D299AB81F73B8384715A4FCAAFA47ACBC +:1047F00074EF5CFD9F2C3AD064390BB5627ED1DF3B +:104800002F0F1CB6012F549985322E3EB31E06156C +:10481000FC08CBBBEFFA12FEA5E5DD47DE83DE1513 +:104820009D775E63F82DA3FDFDB36718FEFE8BD860 +:104830004590C71C3E3AF4131F9FD718B1FD84D78B +:10484000CD8F3FFA34FCB447DE4BCD435ECCB1474D +:104850005E8FC73971D3EF6FC6478E05462578073F +:1048600081AFF93C11E51F36F9BDB64712973EEF0F +:1048700015CF5A6B301EFA476DA755E73BCC6A9FA0 +:104880007A78E736E0FD5FED74EEBBF6A95336F0BB +:10489000D95AC91D92283EC3E2A5B038F9B2A73E45 +:1048A0002EFB35F493740BABE0FBB6F499AF457B6C +:1048B00037375878FB65BBFACA70DF4EADD7D5E005 +:1048C0001864DF8A03FB6CBDAE41F62DD057467EDF +:1048D00091C7FF41FB72E477124BCD3AF3FB9A1D6F +:1048E0004749DF3AC63748859C0B582A6D0967B699 +:1048F0003BF6482CD1F3B1BD12E5999E6B1F2F9862 +:10490000C10C7C8F63B8AFB4E63DBBBF02FB7BF745 +:104910004AC2FB4F950681F70FDC9982FB126AAC05 +:10492000BE14959EE27DCD833F35F0D19D8EFC4E29 +:10493000CAC6E0EB5ABCFD6A5A57CD038B685D6C62 +:10494000ABC42EE45BF135D787770DB29F7F32E899 +:10495000C5CE6E3D1FF4F135FF047ACCA7463CC0AE +:10496000F747911F65675D1F401FFDBA67A804F9EF +:104970006779DBEAC07A7FF27222D9398FCD10FCD9 +:10498000BAF8EDAFCB40573FC9521A8C7B107D0669 +:104990009CA4EF853D4AE7B1284F301BFD9EB4DD56 +:1049A000C8DB7F05FD548F684F70FAB4CB1E83F3CC +:1049B000369FA6887C48FEF74706FC107DB1E58F40 +:1049C0007D7A702DF0296D949C9086EB3B05BFE7B6 +:1049D000EFCBE0DF56AB5C0D091C3E5FFDE9B00D8F +:1049E0007E515FB2CC703F5FBDFF4B1A9737FF120D +:1049F0007861C263F99EC87332CB1FF9388A6EA3FF +:104A0000CEDDB00682DB72964071944F6D211BF8AB +:104A1000818F8F8BB8C3CD1D61E772D0DFAACF0C19 +:104A20007CB00DBCCF1AA03B333E778B41E7D1FB66 +:104A3000154DF76F45D1BDF93DDB3E781C6980CE41 +:104A40007DB4EFB556E653413F7FB5935CAADD24B4 +:104A5000E891713E3986E3FBE10DAFA4E09EDBA354 +:104A6000016B72058D1AC9576B767F7C702D6F3F75 +:104A70002CCDC29CC457FF6183BD9656CC42763E76 +:104A8000FFA3357E09F90C67D0257F3F285DD6B09E +:104A9000FFBBFC946DF812F6EF00DC23E9F096B34F +:104AA000F0D37FCE30CEF31870FD9AE526C07FCFCD +:104AB000D4CA4CF21346C1D7846B345FBC6F8626D0 +:104AC000FC9B517C91FFFD8585C191B15EC2E3D312 +:104AD0009CCF411F37F1977905FEF2B26D18D69B36 +:104AE000223394EBFDFBE6217E72E6BA23E1195DE9 +:104AF000BFD7E03B9E17441E7AED5EC9385FE523C1 +:104B00003B6C39FCBED4BAFDE0F0E4F0B23FAA1C25 +:104B1000886AEF8E2A7BA2DA7BA3CA0D11ED6BF7B0 +:104B2000BC621387108211EDEC8D33C8CE3A535F0F +:104B3000F00B3AEFFED2E6037E6484E8BE88228B57 +:104B40007E288FEFEB8CB8675CE02F669E4EB34BF0 +:104B5000E451BE9696D565FCCE02F19162838FCC6E +:104B6000AB107CB099E5B7E0BC938FE333E8D78E08 +:104B700093A9E07B19163AE7CA14AFB292978B1645 +:104B8000D5521CBE2463D1815DD8A7297615FB526E +:104B90009C31F3405E32F0DF11B2F37273C62487AA +:104BA0003648DCEF95263DA36190F7E6B3D8F1E6F1 +:104BB0007CF81B4A5C91FC664614DFB8428BAC2F34 +:104BC00067BB93A1E796E75A19A73C5686F661FCA6 +:104BD00054AF10F7D25CC1DA5B54417FB4EE4B0C9A +:104BE000386728790AFC1D25CADBAFC0DE29FC8A9C +:104BF00069023F04BC8BBFD215C0BBD095A8883CCE +:104C0000FBD042E81916395EDC6FCECD2DE4553766 +:104C1000231F2F0FF7A07BAB2B282F49654580530F +:104C2000110B408F97F6BEF64F11FF6B9041A7E333 +:104C3000B61CA4FB01C7395C41BA1F70BB722CE2E1 +:104C40005EB1A8FBCD6705769D801E336B5E2CC5DB +:104C5000B966B1C05BB8BF97CDB3507CB0EFE9384F +:104C60001BE27B33035F2AC0B399D3250A83F7394C +:104C7000D591B7F279575A441EE5CF0C79D1EC148F +:104C80007A7265EB88B1D9FCFDCCB3FCCEC2630669 +:104C90009E6436EB69C81709494EB56BF2407BF448 +:104CA000837E9FAE10799E6B2A845C34CB99C5C2FB +:104CB000FEA96EB3F78D8AC7D31A1CC79F936617D8 +:104CC000B5024E15D9ECA0B0BB240DFA7B9F53F86A +:104CD00085421BB3C89EF0F22DC5BDC9AC7114A3AB +:104CE0007516EA369C5BEFDB94A5220F2A36D74D6A +:104CF000DFDFDC2ED1EF89F41532618FC4D9C88E85 +:104D0000FB405547A2FD0769A3282F25D3B26F3476 +:104D1000D96D79C26E3B39D3BBAD0272E83BBEDEC2 +:104D200002E40332017416C801DFBBEBBA18162483 +:104D30003B40A77B9977393C0FA1FDE1460BC5119C +:104D40000ED7887B75FF5221F85EA625389AE27649 +:104D5000AAC8177DD0D6BB00FDFDD223EA2B92D482 +:104D600002E46784EE74328C5F99A42E44FBCAD6A9 +:104D70007114EFAC5823ECBC754A80CEB9F9DD9ABA +:104D8000ECE3F8F30BF4CFC7BDA149F1E07EDC0CF6 +:104D9000075370EEAE76B6770DE63333D0F401CE1E +:104DA000072CF2093B7CD1864D36C8C5524B2E9D4F +:104DB000CB35EF01391BFDED5C2DCE4C3CB6DA4115 +:104DC000CF275673BCE68AF493ABD3A8FCF46A8D64 +:104DD0009E81D539F47EF76A9DCADDABA750F9B93B +:104DE000D56E2AEF595D4ECF17577BE8FD6826D662 +:104DF00031B2519C5334CBB66A5E4E473948E71204 +:104E0000531C4C4539DBF87D1495D3FCDA74DC9FD8 +:104E1000EBA67BB2152FD3F0BD0DBFE4C0EB6380D2 +:104E200032E9808346793A195ED680FA11801B2FC9 +:104E3000DB4AC478E6BE30A39F07EB9846F159A53C +:104E4000773CF6B7D4726CE345FCFDC91A99F2E6DB +:104E50004FB2DEA79EA7B28BE23F236DEC04CEBD1E +:104E600073AEA1594682EEF5343BDFCFCC5F966737 +:104E7000811F5CCF0D14254C8EDED8E0A45C61B39D +:104E80007C53636244B9F522EFA7C0FB1B57F53D85 +:104E9000F03F79FF1FFCF2938F1FD5681E3BEEC7D2 +:104EA000B8AB6274DC8F7F12628BAFE3648B95ECDE +:104EB00062FC85DF335879C7041BF203FADC0E5D10 +:104EC0005281675A19CE03FBB87E807B42DEC37ED7 +:104ED00072F8BF6FECA7B3FD1FE497EB33FC76D1FC +:104EE000F70D4A33B3094E1FFCFC5BE1FFB73A54A0 +:104EF000E421F4D524C56B420F8DB897B5CA172BA2 +:104F0000EE776CB188FCE0E87B1175C1173F045F58 +:104F10004C147C12F7A87A83821F7E78478A0F7A16 +:104F2000D487B7C6EBC854F2B6A5FA6EE1E50DB862 +:104F30004707F27C2F6BA57C6559FC7E03F3592350 +:104F4000F9636F4622F44033DF3876B29FF4738EF4 +:104F5000562AECAAAA9CFD74BF056B9754D85DB87D +:104F60006FC99104FE639C2353BCE3E7E1FCCD4C85 +:104F70000BD1D5EC99E29C5EA691473E73B2F02B23 +:104F80002CF18FEBB284C5716A67178D9819CED753 +:104F9000E67D99477687AAC909B877AFC85D867D4F +:104FA000AB28D256E09E2ECEE746CD445EAC652FB0 +:104FB000E1E5494E07B8BFE124EB11E534E127B440 +:104FC000B16E81B7D5228E9FE1307E2748177432AB +:104FD0001C9C909795D1A2FCFF8A5E176A821ED313 +:104FE000383DAE15F444BFD7115322F81933E6917A +:104FF0003D5EF8B94CFAB2B615CAF05399FCCEC969 +:1050000074D247AB3788FBABAADBF36C3787C99701 +:105010002AE3FDA21C710FBBF97E81B11F9B6DFEBF +:10502000A634F8398D7BB450C67D3A9B97BA937DF0 +:105030006CA0FD95C6BE353B3D75CF824E9F8A253F +:105040007958D97AE3CC0BC1579F1E42E7FC3E9FAB +:10505000B58BF260AB5A16FCF4CFC0C3C79CF4BE4C +:105060007AA67719E8F173495BF82CEC015FD63525 +:1050700017F2EFD3B0C9E45711F7C66D5E5F48F77A +:10508000D071E4B7816F98F3AECAC96F45BCB86AF6 +:105090004361B220522FE56D342FB84E815FF44644 +:1050A000637EB36732617F187213F7DBC0AFF41908 +:1050B000320F08AEC2DFF6F913BFF90472FEF4E353 +:1050C00071F87919B6F40221B759AEBF40DC0F155B +:1050D000698F94FCE638E9D1C7B9FE46F667F761F7 +:1050E0001BC5AB393F043E2EEFB6F4E17ED168BD5F +:1050F000F8C0D37F8B1FD41EE9167E9473D923A5E5 +:10510000C6EF532D7F41E8D3FDF6A4F40DD9EDCBC6 +:105110005FBE33C53B883E013BB83169B0DF0BF859 +:1051200071F64BB4DDD23E33D26E31EDC1B3C93925 +:10513000D36E31CB358DE78F827F716963C128F8DB +:105140001BEB1B2F1D157EAFD171238FD42CD79D48 +:10515000258FF43FAC457ED0B9993F5AD3789ED184 +:10516000EF24EA6FB7A177698A9600FC39E91F93AB +:10517000C07E609ECBB7F0C5E0DE2FDE1EFE8FB096 +:10518000F345A4F72DFBFDA824E0E392BDF7DA6414 +:10519000FEFEB399424F3B1E658FD53F7998FC23A5 +:1051A00075AC87F691EF2F7384DBE75B6C344EF4BC +:1051B000BC96FD268EF2FB960424F70EFEFD32BB54 +:1051C000760FE87ED9EB57597D61FB7DC0C0EFE8D3 +:1051D00079BF30538B788F7932EA2770027994EC5B +:1051E000B7B1A4CF7DB157F88F3F7DD2F230F4B77D +:1051F00025815DF5C44F9F8C5591BFF5B935F29E61 +:10520000C31E63BC9E9986BF9C05A8FDD127632958 +:10521000DE86F9825F98BF03667EF717E3BBBFCCDB +:1052200014FB5063D0A3D97E89ABDD46F9A52F5E70 +:1052300095BC06F3DAF34EFC68FEBED7F8EE8BEEB3 +:1052400058BA8F6949F7B7B35E821DD95D9C2C852A +:10525000F1A1E333C53958E617F1A6E37B85BFB664 +:105260000EF0E57870D4F02F1D7D7A48A790E7FE08 +:1052700008F81CED7E265ECE1DD8BFE50E5FDBB8BC +:10528000EC81F3C30E6B830F0ABDB2778E0F7A3EAB +:10529000D13F1FA72DC7E7015FEBFFFD15879BF2ED +:1052A000A1EAF7CC6142FF73917EB4E2592BC5D9D4 +:1052B000165EA05D7B3DF8C3EB5682FF8AF12C0899 +:1052C000BBE754631CDDABF4816B6C2AFC21DBDE95 +:1052D000B4D27DBF0B2709FED388BC3FD2C3E33ACB +:1052E000E1BFAF6D93E8BC595F967B0D7EF7C03C84 +:1052F0001FC805FF1F20D76BDF1A4579B7B57E9110 +:1053000047CAA604C786D3CBC82DE2BC5ACA2CB163 +:105310008F1FD8443E7BA665FF5823FF43EA0A8BC4 +:10532000731E93826329AF655764FE44EDDCE05839 +:10533000C4236A77A7533CE298718E18EFA1EFD689 +:10534000E68B3C89FEF63FDF3F1678585B15C84177 +:105350007D5F967A82EC8F67E3E89E05F979716F3D +:1053600071DDA3CE2EF1BB7BFEB7A1FF35376548BB +:10537000F0775D60CCF741A85A90378F38C539A0D7 +:10538000B3E4830C93DA45DEC78EC87C900F6CE2E1 +:10539000BD6F67E47A8E59DBE91E3BDF8EC87C90D7 +:1053A00063B676910FB233F2FD92F8765A5F9F950D +:1053B00089BC98C7459E0073F59CA678E76F9C440E +:1053C000179FA7FB4F635F3E7F6014E551F665B5FD +:1053D000DB709F66A8D011C23D274B5B7F43F74B24 +:1053E0002D8514E7FAC7D2271E2DC0F747ACA2DCE3 +:1053F0007C878BE1FEC143719BC95E39F9885D02F0 +:10540000DF3FC9DA174A4619F03F22F9857F7989CB +:105410004A768BD78CE7ECD83A12703FB2E3D132A0 +:10542000F80F1F2A723458063927BDF491C87874D2 +:105430005F56E4B93ECF2CC1E73CB38C7385B3848F +:105440007DBF6CFC1F9F03DEF765093AE3FB49F65D +:10545000E3B65D4E2A2F7B6A6817ECB44C4B970D70 +:10546000FE75BE6E3A0724FD728B0D79C7B0DFED75 +:1054700079A097EDE4FF3EC5E527F4348D1DA2DF4A +:105480000F3A1578F82DE4919EC2510795EE834F9F +:105490005507E1DF7D56FF5895F6C199DF65E8EDC8 +:1054A000B0F78EEC1C4EF7615524B19BE6021E4905 +:1054B000EDE7237EB4B4F1DB853F948FB2F4F93885 +:1054C000B7F81D02FF6DF8BD9DBA7B12E81C46DDE2 +:1054D0005AB15FE0B5F05B2EE5E424FDC03D2C4BF6 +:1054E0005D9F507E4C347CA3F31A76CE12F7BFD664 +:1054F000D9051C97ED14F79FD5727AC5798165ADF2 +:10550000C2EFCF9E10F7DEAD7406E39167BF7287DE +:1055100045F7F1D7CB6C81B143F9FA36CD127C93C4 +:10552000B7F7820FF67F6FD3EFA77EDFBA9AEEA1AF +:10553000DB342B99C63B16B83705F654747BE4ABC5 +:10554000ABAEF0760FC787C769CC76FDEB0C707DEC +:10555000E77CEC53CF6DC8FFFEEA4927CD8BCB0922 +:10556000CA778C5E3F9F2FE1F3B2A7ED74BFC051A5 +:10557000E3FCEAA79C0FFBC6613E33EEA1F5FEF10A +:105580002ACA27BEC51FF9FD29ADA700F87FAA7B4F +:10559000A682EF37CF1272A06EEDC5B3E9BB3F58BC +:1055A000E9BBE8FDB87D96F8DDC37EBA7D2A56E4F6 +:1055B00007B1C0D3E8EFE853B132E8B62FD16F435B +:1055C0007E7F681F0BE13ED3A3D6C048D855479FC6 +:1055D0001A978738EED2460BDD1F7F343130520DDB +:1055E0007BDF67DC2B888435FC2E602DFA1E35307E +:1055F000FE32C7861EE859C89B29C8A767D09E748B +:10560000665E0BF015FE8884D9426E522E2EF26D26 +:10561000D01FE177C08638AB49E7B54F46E7C5886C +:10562000FAD76719DF73924A36F37540AFD6800D0B +:10563000F7548424A6E1F72697B5DCBA04792CCB7D +:105640001A365D0F7C5DA6B0721B9F579F247E7734 +:10565000ABCFC9E907FA57F838D9E2A9A60CACF3E1 +:10566000CFC6787F9D25E422D7BB593BFC252DD2A0 +:1056700006F46BF215CA3F0CFB0E792090537D8522 +:10568000467DD47AFB8C3CD6D0535267B87C8A5E78 +:1056900077E26C2127FAB2B47BA6270FE43BF2F243 +:1056A0001F2E13F252C67E3743899F2AFAC47F9B6E +:1056B0009764505E7C8D8529E9F9823EFBF3542C7A +:1056C00091FE1A9C7F80FD8727EC3FCD2EEC3F9406 +:1056D00061FFE109FB0FEF61FFA10CFB0F65D87FB4 +:1056E00028C3FEC313F61FDEE7CD9623F3387F20D1 +:1056F000AF8DEE05E8CF5B3B23AF4DC4EBCDF8FC9F +:1057000011393A3E4FF96B9F483DADE9D2B9F3D715 +:10571000B65DE81D397B28ED7F447FD346F927210C +:10572000CFE2F7861CA835EEF91CBBDD16B11F3998 +:105730008F4496273C1959CEED8E2C9FBF37B2ACC3 +:105740001F882C7F388B89FDBDF3B5B138A7DF2BBF +:10575000C5D17D6F75177A47619EF55BBE5C087F8A +:10576000FC316B6827E6D3DBC4F75DE081F0FBF129 +:10577000DE80D766FEF539EF493CE7FD8891786217 +:105780009EC378C81A4A57490F9CFE20FC3E2BA4A2 +:1057900038BA47E4B093ADB913FAC77F8878E7C940 +:1057A0004356DAEF931BA4AEF0FCB2CB6647DEB7EC +:1057B000B2E89B492473FACB1B24995D007FB61C89 +:1057C000319FF1FE9808789DF758524479626058ED +:1057D00044FB0BF66447D48FF6BACB861A72187165 +:1057E00087BCE08448BEBBAA4DC869BCE07CF1AA76 +:1057F0000D9322BFC74928BE9E959D920E3E5AED3D +:10580000B938E2FB9577B4519EDE4A272740FE7DEA +:10581000F516F1FB2D2325B686E2ABBB445EA299BB +:1058200077BFC890334CF1D9282E9C2CFC8847A414 +:105830009E91F8DD9F2513DA374F97909FD6391246 +:10584000F96E2D33BC37CF167919B3286EBCCB9ABD +:1058500008BA3876E8E33918F758C09A44FCD3D828 +:10586000FF9156E117ED9CC2E8CEF6CE76613F740B +:10587000B60F89191D16B7E0EB4A811FFE24D743E6 +:10588000B09FA5965CD2B74F1D12BFFBA73596D32C +:105890007DEE2BDEB6121D9AF3AFCD7FEDC124193C +:1058A000E71219D917C7E4FDA7D7F2FAA37981B196 +:1058B00041C8916D9D29D7F1F98412BCAB66F3FD07 +:1058C0005EF166713CE2A05F3F69A5BCF88F3B1EAC +:1058D0007E10792A6BDB1FB6C19FBC54F1DB282EEA +:1058E000FF78A70D792A973FD649EF6F7EAC92ECEF +:1058F000CDCFAC0DB43FBE0724F66CD83A4B2D1B70 +:10590000C626D3BEA527020FDF37F84D4D8CB8DF72 +:10591000E1AA8A422BFC674B9F4CA473CD57CF93CF +:10592000D6201FB2F6D010BA6FE93E031F4FBE61FA +:10593000213DE4E43C8B5FC8A1C1CF5B5FF54D1610 +:10594000E1EBBC6FCE233BECEAE07861EFE6864802 +:105950004F3DC9847FF2E41BA76C57A13FE4C77099 +:1059600056A2CD17799C2B258E7FBC7EE59BEFD070 +:105970007A5666B106E04B8DAD47E41B14B110EECC +:1059800011F54CB744E0D7F292D8087C9CCF922214 +:10599000F250AFC18F338495E7558C8A687FEDBC98 +:1059A000F3A2E83B7FA09EE87B5A84DE463737446B +:1059B00094AF8C685FC7E60ED4C34E7E44C409EA38 +:1059C000BA13293E58837B89F8BECDF78AF7F57B59 +:1059D000128DB8614CFFB991048BF01F849F7B61DD +:1059E000465CB10EFFD2E017ED217F5428DD42F76F +:1059F00027D6B7BFDD2A1BFE289C5BAAF3F5DA7019 +:105A00007EADCECD42B8EFAF4EE921B8BA74357B4A +:105A10004DFA001ED477479E0FAE3F24E06FC6BFFD +:105A2000A3EBB93C6945BCB8BE42CA83DDB9ECC939 +:105A30003E1BFC58F3BC19740FFB2D5B22FD57B5C0 +:105A4000813E9AE7D57B52C8CF5D0F3F53D87E6425 +:105A500078843C31E34238172ECE47BBF6633D9C39 +:105A6000DEC89E3EF9C6C39289472CEF4C78D4AD70 +:105A7000FACC06397910F57CFDC3F43FB7C2BE55A8 +:105A8000AB847F2E1A6F001F250C3EC3804761F543 +:105A9000373301AF9BB938F7E7FDFB70D2903B83FA +:105AA000F9EE11E7E14FBE7198F2374E7A5D0D388D +:105AB000477B0BE2F2BC7CCB1E9B1AD4CF845BF4F9 +:105AC000FAA2E1F6FF01116C07D30080000000008C +:105AD0001F8B080000000000000BED7D0B7854D5F3 +:105AE000B5FF3E671E992493E42424904008272F95 +:105AF0000812C2040282501C928051A27708AF049F +:105B00004298404040E086686BB4D84C48801840CA +:105B1000C34BD14B25E0A3D6521A1F556AB51D10B1 +:105B2000110BB6687D560A017AADDAF69A62A9F1D0 +:105B3000DEB6FED76FED7392394380F6FE1FF77E17 +:105B4000F7FBC7AFDDECB3F7D98FB5D77BAD7D667B +:105B5000A9FFE4D18D05422C4DB689768F1065DD05 +:105B60004E21C60871AB38B9414DA4D22F6A83F1DA +:105B700042CCE9B6F3F32145279D2E7ADEF543C5E5 +:105B8000B34F1162B5EFE43441EF0B8F48BF3F458F +:105B90008859A5D142B804FF7D25B8DD29A8BFE604 +:105BA0001119F74F106276777F1E67F5738E739D1C +:105BB0003921FD8EFDD28971345574A54EBCB45D7A +:105BC000884EA72F869E8BCD7FB4C5D2BA76517BE7 +:105BD000E83C6B3FFE958845BBBDF7793AD62B165E +:105BE000FADC4234E101AD4FD82AE3AA73515927B8 +:105BF000C458EA83BFEB7BCBFA5391AF1E09997768 +:105C0000A82F26F123DA12F51DFB954DBEEFA7F163 +:105C1000843B41880997BEFF4583EBD5230EBC1D0D +:105C200010224988A9B652D549FBAA7EDDD61E416D +:105C3000EBD1CB737EB191E0E17FDD265A752AD797 +:105C40004F55B16FFFEB8E7641ED75F7E40C10EE1A +:105C5000DEF1FCBB68D27EBDF5B4C67EFDD15E4DE3 +:105C6000CFF590E71B9A33D33A737BEBD5915A7FEC +:105C70000FD5AB1B6DBE762ACFDD3BA0FF789AE730 +:105C8000DC7A476229ADEEDC5D05696224EA53B92E +:105C90003CBF35A2BC9DC61DF22D97B0D1FA563D32 +:105CA0003F60AF4DC17EDDFDCBA9FE8767FAE5639E +:105CB000FB8D3E95F7B572FD0F63C753FDB6F5BF7B +:105CC0001CA765109CA6FB4B7D04CF4F95BD4F686C +:105CD000E8A8EDCDF3D1B8CBEAF3327F43E7BDAA14 +:105CE0007E1C97FEC6EC383FADA7B3E1A0389F1DE0 +:105CF000B24F21BC1D80AB6877CE88E97DFEBAA388 +:105D00007036C65D61A7F65C8C3782C731DB0F97B2 +:105D10002ABC9E271AE8D508219E6C7071F954831D +:105D200026C43021F6372473FD4083CE6547430EE9 +:105D30003FFFE75D632C70FD4C8812CC3FC4F6C773 +:105D4000FC3AE087D63105785BFD4D215A09FF6F9B +:105D50007107B9FE9B48A1ADCB1762B09D564CF0C0 +:105D600074E608AD91F0AA7AFB0B5350AFBE55080C +:105D700085DA53ED2715F44F259A42BB533CA770A3 +:105D80007F4D684DD45E1D1794FD17D378F112DF57 +:105D9000C43821B250123C078B0E7E3FAA983009BE +:105DA000780B08513D235BAEC721B434C506FCD641 +:105DB000BEF13EE8717DA4671FF52A2D247C0FC13A +:105DC00083474B55C673B38CBB5967783DA07A9215 +:105DD0004526EDAB79B853004FD6AF4FC37A561076 +:105DE000386DF98CBF5598EF8E48A163BE8F23455F +:105DF000F07AAA7FFC74647B13F0C2D5C8FD7F9F44 +:105E00002434B4FB097735AA5F7C2CA63D40EDBF56 +:105E1000570FFD792395BFCB0F0CB5D13CF91AE193 +:105E200007CD7B9BFAD21CE0CD8AD6BD6982D61FF6 +:105E3000281439B56E49270FD1FBB7131D804E6E5C +:105E4000576AF774D27CB737DA45A000FD6ABF8382 +:105E50007A605D84D644E583D1DFDAD349CFEBEDB8 +:105E60002E2DC283F5D65E0B7CFB5A97103521F49C +:105E70007B7DB74BD484F0892922DE522F72A5583E +:105E8000FA4FD5D22DED37240FB7B4DFA8E75BEA80 +:105E9000D3732658FADFEC9962A9FFD3F81B2DFDC6 +:105EA00067786758EA334B2A2CFD67FBAA2DED7300 +:105EB000CB975BDA2BFC6B2CF5F9CBEEB2F45F5091 +:105EC000DB6869FF4215769CF34B441F3AE1FF4FB4 +:105ED000883E501E3E9164176A2F9E4C2A526B3B9F +:105EE000DC97F2B3A306BD47977977978DC5A827AE +:105EF000D371EE83E85FADF9BDF5547B4F3D05E707 +:105F00003029FAF0E73A91E0756FDEB3CC4E7C723F +:105F1000D2B587C76452FD5B330EC9FAC4C3CF66DE +:105F2000507DC38CAF647DD4E1CFD1FED59BAFCA89 +:105F3000FA4C1AEA3A8C77ECC920ADEBB06BCC0086 +:105F4000F0DD49D7D33A095FDD240FCA689ED52E0C +:105F500077303356EEAB86682348748FF230D13DEC +:105F6000CA2344F735C48F8F12DDA33CD6E0E1E7A6 +:105F70003F6B18CFE589062F973F6F28E1F26483C6 +:105F80008FCBB71ACAB97CBBC1CFEFBDDBB08CCB0E +:105F9000F71B6AF9F9AF1AEAB93CD510E0E7802F90 +:105FA000EA7FF0497E240E3A7EDF23BF32809E9A3C +:105FB000B017B01CEA02BD8897345148782C0E8B7C +:105FC0000E865BA73DFE233A37B0CE50F887978206 +:105FD0008EF323735CEABCDDEEFDD2C7E792AAB173 +:105FE0009C329E6FBCC1FF37D0DB3BE933B3C75057 +:105FF0007DEE5FFCEBE3A8ED1D552CEBEB9CDFF198 +:1060000049FE706686D73683CAAFB94E5780FEF513 +:1060100014A18989A8FF84F99F7237FD8FF8D1D721 +:10602000EC279B506FFA52E8EB885E0FC51CE5FE2B +:106030004DC41F23683F4A7707F3B7C935C476F3C9 +:10604000D1AF83F9DF64E27F225FAE3394DF7D4D11 +:1060500093FC12BC11FCB0A73FF13FF42FEE3E5968 +:10606000C475B7538F5030DF47456A01CF2FC02F1B +:106070001EFB52F253512B34C704AC578E37996034 +:10608000B58ED773D2CBF55C733DB2FF643FAD27BD +:106090001EF3D772BDA9DA9C9FFAA31D63C6837F46 +:1060A00077AC413D8AC449238D3FC02EDB9D1E59EC +:1060B000A7F555737F971CDF6C17E37BF87FBE4213 +:1060C000F33B57BA3DE09F93734FA6F07A92851643 +:1060D00008E9EF9E24C7CBFA773FF37B0008FBC9A2 +:1060E000507C0274FC8E4FE773DA3DE5643AC6DB00 +:1060F000FD75178F37C8F6743EF8A8DDEB15D0DBB9 +:1061000066DE6C6B6FA5E7C34BFCDE198407F644B3 +:1061100095C76FF2C6B4B712BCDE52FAFD3A9AC602 +:106120009BA10A7F47EE15F1612ADEFFFFF8F0DF41 +:10613000131F0AEC1D7BF13C62A5CB03B97B35FC38 +:1061400058D825A6C55197C137FADF01DFA8EED68A +:106150008FA25E63CF27D5A4B77D28DA932E6DF783 +:10616000FFA9CB81BAF9FC06639CC562CA34B4DBD3 +:1061700013DF8A06FF37C731FB2DB9A4DF6817F498 +:10618000F9DBA776EC865C2F819CC7FE8437369FAF +:106190004C8422FC53C7FFC9F69B48CEB7E245DBCF +:1061A000A42375D033C85EB141EEBBA51DA0D37F3B +:1061B000E0B3D777DB2D76C14D62B31D70A4EE5DE1 +:1061C0001104F712D80726FF243CB929F7B76C371A +:1061D000DC14663784DB01DF994176C008FA47BAE0 +:1061E00048077F7D05FA2BF47CC31E2812523F0D11 +:1061F000D75F4D7B80F4D8033342F45853BF7CA261 +:106200005A53591E088F3A9AEA53BD7A1DEA95D01F +:106210006BA97F0E947D7A5E9CA2303DDF200276D2 +:1062200008891B453B97D34590E53B4DFFFBD5B413 +:10623000CF9B2197094EB7882E7EEE139E973A6921 +:106240003F472E8E2B1843F02956831B60677C56E0 +:10625000DD390EED1B34FF2BA0EF3FC7BC791AFAD6 +:10626000A4E8F20FC3F91D2E96EBAB9B4D3A573EB7 +:10627000E46F26EBEDE17CE215927B5924F75E2575 +:10628000F99B45FB7C8DE42FEAAF93FCCD0AD1EF5F +:10629000A7E98AB087C0F3A69C4681F1A66B45C2E8 +:1062A000DEEFF2F26E7ADE8F5201DFE3F1C38A7124 +:1062B0004EC7E3AF2D16792807A8B28C70A2BCDCBC +:1062C000FB263D4CCFDD78D29687F9A6F17C875D21 +:1062D000BF7C1EFAE3058093CAACE6935CBFC32182 +:1062E000F16CD50B3717EAD8FF3BB676D8419F60E3 +:1062F000E1843F93EB27F2FBD7D74FE0F2B70D22B3 +:10630000807DAF74C97DFC217028CF4670BC2FCE34 +:10631000FF19CEFBB7BB6D9E20DB4F919E525ACA30 +:10632000C7EDCFC6623F26FEACB4E99B3DC0FBE3A0 +:1063300036CFE33AE351F07AF0898E887D8F2B9740 +:10634000E213E1D117163C72FB07CEA0F3128FCDFA +:10635000E4F59978B3D235CD0257D31E1D77A397B4 +:10636000E95A1341E65FABE99FD03F56BB4E2C671D +:10637000FE42F5880997EA2FE3A2A83FF8958BEC37 +:106380009D09BD701D14115CCEFA60B4B46B847F9E +:10639000CC35A0EBF7C67BDD656CFFE6EE37E11C84 +:1063A00001FE161C1187FE25C76CA29D96FA5A5451 +:1063B000DE7ED07727C15D217DEF8611B5EE0CC260 +:1063C000CBBC52FF00D6376D7FB161DE13D98AE8AE +:1063D00047FD2F1C1BE366FBDBA0BBCB9D7B38FD81 +:1063E0000E2933E8374FE4817EA7DADC9E20D6F50C +:1063F000B6CD43EA30D913B12ACB1BC3FE982C8605 +:106400003E3889DA8B8E39443BB55FC040E89FAC9B +:10641000B07D63D2F5F5C2D73C09F4E975750589FD +:106420001F4524AB420FE13F917A94D043D6119D92 +:106430009360A9C778065AFAC78DCFB0B4C77BAFAF +:10644000B1B4F72B196DA927F9AEB3F41F505E68EC +:10645000A9A7F86FB2F41FB4ACCC521F5C3BCFD2EB +:106460007F48FD224B7B7A6085A5FD55E18B0BA60D +:10647000039DBC6FE58C033F957F992D75967ED467 +:10648000E1889FE03288182FE829BBED6ECBB84237 +:1064900097FE9D00FD07FC9A9A6CF5F70C1293DAB3 +:1064A0008137C94D115A04C9C0226DCA11B0FF22EB +:1064B000CDEAF719E4FEF814F8C2A030BE1E7EFE45 +:1064C0000BCB0C3FCEDF7BFEFE6BFA3EFF95A23D71 +:1064D000901EEAE791E73F8DCEBF95CE7FD82EEB99 +:1064E000F90F6FB79EFF8827ADE73FB2C37AFEA3CF +:1064F0000E5ACF3F3F683DFF31C7ACE73FF6A4F5EA +:10650000FCAF7DBF30EC1CBA987E5ED514F1701FD5 +:10651000E736A1D38A1FC2B699CFCD94AF133F2ED1 +:10652000EBF3DCCAE9BFFF17E7F640D8B95D149B6F +:10653000C7E6D3BCDFB8D095E6B45DDEFF363E9E3D +:10654000EC55D86161F6AAC9B72E67B77E11F9B7C5 +:10655000BDE0473AE923224D883BA3A85ED0CB9FFC +:106560000285B5EC7708385D5A9387F186F1A2FE73 +:10657000544C3BF4D02FD4CE18C8E5D36A9B82F29A +:10658000966BFD3F001F5B985BABC0DE4EBA6D8320 +:1065900002FDF6B3C15DA7BF8971EE8A61BE0F1F10 +:1065A0000CC6A96A1AC072DEDC4FD520C1F6EEC156 +:1065B00032C9D785A7732CF8FD8FCBA47E1EE3D1FB +:1065C0009CEC0FCC155EF8F9C83C4CABA2F6A7E2E8 +:1065D000FD41C97F27EDDA9208FC8D151105217860 +:1065E000BCD6CE789CA54DF6433EDDAEC47A5A1398 +:1065F000E14F91EDA225A21DF2C7E6F4CC853D2125 +:106600007EEE501E4FEF5D972DD63380FB853DBF4C +:106610003DD23320BE0F3DC12C97B7D8484450D946 +:1066200026CBCBF59BF89D885AF82385BD63F1C333 +:1066300034FF3945CF001FF9E4F117C62CA2E7E774 +:106640001CA2BC2F3B7677FC940FB1EF7AEC13EBD6 +:106650005EA6B6637D9FB85ED9F51B9287CB238F6C +:10666000EF82FF70A2ED2DB607BAA86D1FCE1FFEF8 +:106670003ADACFC3591AFBD7260E09460E43FB4E12 +:1066800095FD6AC280CBC32B75B69F26DA9400EACB +:106690005DF738DBE1071FB64B58F49B4F1CB27F08 +:1066A000E0EB43198EC3DB5DC21E4A47C6FA529720 +:1066B000A97B71DE239ED42CED233B922DE33D6C10 +:1066C00097FEC95107754BBF87DBD540F628F08987 +:1066D0001C4BFF31C73CD6F7E1DFCC05BF186F7903 +:1066E000BFD321D80E0A2C5759DFB8F67DAF759D60 +:1066F0007AD7D343A9BD6A4F3FE6E3133A4B2CE365 +:10670000A6CECC60BD62C8672FB2BDD4F94DA1A89A +:1067100029E01B3E4BBF41F693AC4FA6C0BE61FBC8 +:10672000E74823DB4BB5526F1824A47D66EFF19741 +:10673000061B518F74C9FED4CEE3C7E784F94387A3 +:106740004BFDE55D2857B40E87DDAB42AF7DC4D964 +:106750005901FAAB8A10ECD7A2F3E37D3E7277FFC2 +:10676000BDA1F4953153FAB7DE85539CE8E97197E2 +:10677000F49FD242DE7F0DFD817789BDFDAF99295F +:10678000E9F09B377973668EC57B1ABFFF88B3EB40 +:1067900003E80555A3E47C95AABA70068D43B65765 +:1067A000F93321F43076A6F40FFDC72CC59857AE07 +:1067B000BB2A4EAE4F7CD3C9F82AEC01B61F1F8905 +:1067C00012F1C0C7059B3BB60CA3AE95CE36073B76 +:1067D0008944BB03FCAAB4B0D30E7B78B1AFFF935E +:1067E0006ED2CB1E0101C36F16787679906CC552BC +:1067F000D1C57073D7D2A3096C1F78FBA29BFB672E +:10680000D9785FA5EBE4FEF5350EDF3EEA57AA8A9C +:106810001265746FBF7DB324BCDAB3D412F09B8DC4 +:1068200031567FF3B333255FFA96B1CFA9B654271B +:10683000ECF2250AD95FB48F257775F3BE96C4387C +:1068400075C08BE4516CFE383E4DFEF3BBFB3BC183 +:106850006F8E7A4517EBDB5ECF2EF0E34581086D36 +:106860002FBD571DB0CA915BA18F28AC87719C6961 +:106870003191E421C0A325AC9FFB2396374BC2E4A2 +:10688000CDAD663CE92AF6DFA3330DFD71941825E2 +:10689000F58797189F2F10A3C1BE2E005FC157091F +:1068A0009F03F1ECBF67B847D548B80B039F1D2E77 +:1068B00089AF74947CDE59F54EE6F7885FD81D32B7 +:1068C0007E8112F10B7BB68C5FA08EF8054AC42F37 +:1068D000F0FC99060FD79F6B18CFF5E71BBC5C3F08 +:1068E000D850C2E58B0D3E7E6EE2A7B0770E875E74 +:1068F0008E73C5B94DB59DC8E2F5266AAA5CBF1E68 +:1069000017EFEE3DDF70FCF8BFB5BE4176E9774981 +:1069100033E83C3CAE62B6A700AE137AE3226EAD1C +:10692000878F70BBD34F7CE43F1147E9E11B82F8AE +:1069300045662F9C84CDBD0E71BA8BED64FFA58793 +:106940009CB7C738EFF667657DAD607F50B8FE61D4 +:10695000D675C4EF42E41CD14D540EE442B3DD932E +:10696000AD5F0A67936E68FDEBD6B3DD24FD7864F6 +:106970004771DCF0F7643745D07BBF0F7C7E96EB28 +:10698000CF457A804C7FC83F9907BD7C956D6F9A43 +:1069900096D91B37CCF28B401CC6793292C7B9B05E +:1069A00096008D753F19DD2EA8DE1978B67F5F76CB +:1069B00094BFD31A770C2F874EF71F07FFF3373A90 +:1069C000E6000EBF73AB1AE074AFFB707FAFFB1F26 +:1069D0008AEFBD3933C49E2DB577315C63EED05557 +:1069E0009C37E9E9EBD663BD81CC7DD0AFCC781F75 +:1069F000C185CFF1C22485E3A665C2C77AD73BAA79 +:106A0000E690FE906022F8E33F1A179CD99DCFE7ED +:106A100035AB7B22EFDFDF3281EB438704D428F0F4 +:106A2000E7F98AE7712AE63E26D647D1AB9D8D73FA +:106A3000C7027EFF61C885A186BC0987D7EC599241 +:106A40002F3EA12A1C8F7E82F86C19ED77C47EAF91 +:106A50001A49E3963FA7E5DB74ACBB7634E0D36A12 +:106A6000D0A1D99F565288FD7E67A16EF88B04EFA6 +:106A7000FF9682F47D38D7BA5972FEC53E29C70801 +:106A80006E4C47758D0ADB3375E0B5A86F5158EF32 +:106A900033EB9FB719F5A9B27EFB7A59A7BF2AD865 +:106AA000478B04E98505128EF0E7008E280147F830 +:106AB0003DF61B7E1EC01125E088E7A07FD441FF74 +:106AC000A883FE5107FDA304FDE3798DF0A521B055 +:106AD0008CB85D7108BF46DCAE3884FF226E175A51 +:106AE00047DC2EB43FE276A1ED88DB85B6236E1736 +:106AF0005A47DC2EB43FE276A17531FEC6DE3AE29B +:106B000037DE1996FA4CB27F8A43E405E276A1E3B8 +:106B1000236E6719CFBFC6F2FE7CD25043DFCFACE5 +:106B20006DB4F45F58AF58E27A24D658DE2FDED524 +:106B30008FF131A1C4376116E1C7C2B95D2F774A21 +:106B4000FEC4FE9BBA55511E79DE6D25F2FC5581BF +:106B5000F3DCE3D0595FDFF3864DC8F3F60CD0FACF +:106B6000C053C4B18A1D329E8612F1349488A7A105 +:106B7000443CAD385BC6D350229E86E788A7A1442B +:106B80003C0D25E26928114F4389781A4AC4D3F095 +:106B90001EE26928114FC373C4D350229E86E7A713 +:106BA000691D88ABB5CD94F83CB22DF02A7C70B746 +:106BB000EC3E7D04E5D0B8EA671422E5C56F8F5C32 +:106BC0006127BE3E34BA7A743CF16687326645313D +:106BD000D5FDDD32BE9F27BA581FF46B12BFFD41B1 +:106BE000C1FAFAC82F53B87DB1CF908F063D8D3CC6 +:106BF000A2319F5C0C3B31A9F7FD7C84E6327BFB24 +:106C0000F7D6FBEE173EBFD9CFEFB2AE63089C8B31 +:106C100034EF90D7F4F6A674A6032FEC9E495D27B7 +:106C20008BE2E8B93F30652CF842A9D3D04B45ED53 +:106C300075B0FF460414EFBE90F35B6BE89323F648 +:106C40000B6732F8C49EAA027E2FAAE7BD7FFF849D +:106C50009E578F4FF720EF64D27EE1DD4BEFAF37C9 +:106C6000F8CCA4AE8EC3E06FD5CD33F83D73DCEA2B +:106C7000DD694EDDDDBBFE6A517B7732ECBE02453D +:106C8000800F0E055FA2FA804A5D817C5D8DA9A808 +:106C90006CC909F8B0EF6A38FFE9FC225C5E01FBC1 +:106CA00077F5C11902FCF26B05F1531331CE4BC2DB +:106CB000930DFA2B78D3B25F3E8E71185FB0B2E4B9 +:106CC0000FAC51B1AF5B6823FDE89C6FA63AE0E6DC +:106CD000F78BDA7402FA9CF26AE68F39954241FE2C +:106CE000C2F0CABD6A22BD37C27F48851E30B2AD30 +:106CF000934B731F9E49F136D467D883B3B0FE1906 +:106D00001E07D305C94B96FB179A1D6CE7212F81EF +:106D1000F9E431E917BAB076FC3F9517703BAFAB99 +:106D2000EE9EEEB3C89FAAFBA1550EAF5CF3CE3822 +:106D300035037258617A35F3753E4D6F7F229EE0C0 +:106D4000F269C6D3B1E31596A3CF828ECF364B3905 +:106D50005CBDFED558F8C53F6FFEA113F032E321AC +:106D600035061C44AEF728D6579D22FD6AC2F6921E +:106D7000137CFAA2DF5D6BA3FA39A21BEF30E607A2 +:106D8000DCEFF3834E991FD126F561D36F53FD8657 +:106D9000CC230AD79397373BAA9D644F2E0FD393EA +:106DA0006FBB8A7E7C7C96A11F7B8407FAF1B9B009 +:106DB000F8C8A2ABC747DE021C4C3D4017C1D90C36 +:106DC000F7DA6C15E750FD8621EF3BF47D90F7A6CE +:106DD0001E50D958C4F253FC50E25165A3EC57F948 +:106DE000236FBB425D7E61C8FFB2EE417C0EBF34B3 +:106DF000E4FDECEE114C9FA59D91FC7C4E770A972B +:106E000073BB87F3F332B7A4D3CE9745FB3AE84D73 +:106E10008108E937392258DF08C7CF19F67635518E +:106E2000015E35AE4BA2FACDD01F68BC72E813FDEF +:106E300080EF8766B17D477896AD5C8AEF732BD380 +:106E4000A7A27D788922A0475D09DF95F8107E22F0 +:106E5000028EFE1877BF60BD64A85D1C7190BD56A0 +:106E6000156DD8BD6EE92FEAF127D15AA47DD8BAA5 +:106E7000C29BCB76A71003793B5EE4EDC5E4CAF66E +:106E800001EFB4AE68CE821E2AED98B47A230E6963 +:106E9000D49D35D24ECF32EC9AFE2EA9AF6718762C +:106EA000BC46B8B191F5772FD30FA9F53ADE770A32 +:106EB0001F9F4F1409B4ADD49EEAD2795FA9B42FB5 +:106EC000B40FB6CBB893B3D89C4F04FB8F0EB5B3B9 +:106ED000A55D0FFB1A7AD1823B141E7F714BF65EC3 +:106EE000A9A7E70E384BCF8FCE299C3F9BFAD7DD61 +:106EF0009B6DC9A70B2F17D339812EABE23ABFAEDA +:106F0000109CF3670B6F31A98615C28013CD2F68D3 +:106F10002FF38CBAE79DEF7EDAE266F81A707CE018 +:106F2000A920C1AC65ED3AE677112E9F17E7199DB0 +:106F3000EBE5F85635E09B7479FB7DE5B5DE1AACE0 +:106F40007371AEE4FB7C0E05C8D7FBEDF742FD1470 +:106F5000A6BF8BC0C67AFF0365C9F9AD7AAFDC7AEC +:106F600078452AFB356E99ADF6E4C3E9C3A4BE8625 +:106F700012FA1AF27EA0AFA10E7D0D25F4353C87E2 +:106F8000BE863AF435D4A1AFA10E7D0D25F4353C73 +:106F9000BF76AAAF6436FB4FDB387E2B72BA1E7AFF +:106FA0001CFEA10627E7339AF6D49E1551BC8F3DEF +:106FB000773BD9CE30EDAA4AE7C9575D744E9ED9CA +:106FC000B2DF87F5DB1CE073749E926E57282C07A6 +:106FD0008FCEF1CDC63CD1B91E27F8873FB75DD122 +:106FE000099E03356947946674E5ABEC7F738FDDCA +:106FF0001702A72136714424D038196D3C5ED7564C +:10700000A53DB4BDC7EF3347F28FEC39523ECD6B8F +:107010005318FE91A27D3DE869514BFE38ECE7E83C +:107020001CFFAD7C3E2FA51F1DA4437EC53B71AE4A +:107030005503A45F9666482B0BE16777CF967AF8E5 +:10704000357305979FE1DCB89FA49B8A7A4D69CD83 +:10705000EFF567A5E4680AEC9CBB674BFBC029DE33 +:1070600096F89F2CEDD954236F4135FC62267C5B4A +:107070007316F1FE1C4420B6F810BA706A47D92F77 +:1070800019E3D4B1EF6AF7D06903E03769531214FA +:107090007AB5C62DD89EAAD991B90F791ADF33D601 +:1070A0004B74E34C811CBB57D1100F294DD0E74ED8 +:1070B000C038AF3BC43E7A6FD11D87B299CE84CC25 +:1070C0006F0C8767CDAE094C4735ED545EC1AF7B81 +:1070D0006AEB8F9326006F835ECEE7ADD1BCCE8482 +:1070E00010FFD162E31CC2EBFF32DB26F9BD38E6AC +:1070F000C03A2AB374057EC3EFCD96E7B7E08E742D +:1071000027FCC29534B23A1AF821241CB62ADABEFA +:107110007439CFE890711761DC9079A93FEB498F02 +:10712000CF8EE17916B5C53B15C8494DE3F5D1FEC3 +:107130001DEC5FCA92FB2F4DF038DD187F398D4F63 +:10714000209CA705997FCFCBD54523DB67FA34F088 +:10715000EF9ACD8A68A59A7FB39CCFDF12EF1C8986 +:10716000754669D3183FD72B31585F6982D7E966D6 +:107170007C4D5743F1351C3ED5C6BA6B687D4B2C10 +:10718000CFB73A401F15869DBDA87946DA83B4BEB5 +:107190009AC0C804CC536397FB7FD7386FBF01D721 +:1071A000CA84B6A97781EE96C6C737E9BDE3BD6646 +:1071B000E0E3BB067C4DF854686D8ED1EE10F8EE1E +:1071C00094FB5FA205B331CF1297DC7FCFFA77C86B +:1071D000796A76543B73A95C6AF7A53D48FD96062B +:1071E000DE4845BEC7BB80F7585EC7FA145E87A26B +:1071F000611D42F3A7013F3EDA39378DF7B5E34110 +:1072000087E07DBDC9F17AC01572D7C48FAA3192CB +:107210001ECD793F9DEDE673FCD4D8872957A2EAAD +:10722000A51FA866F39B5C5F4C74A6C487F8A35D9A +:10723000567F748AC7F4DFF999DE2AB264BCC8A409 +:10724000C3471C9DCB41778B374BBDD6E40B2457EE +:107250006B9FE943EECC37D633CF38A74A55F22B94 +:10726000B33DDEE04B9519326FBD476EC719FB9BEE +:107270006DB41706B3D7E4F6F637E7AD4C90EFE1FF +:10728000BCA0C37C65C803F4AFE3FEAAE197957E7A +:1072900095BA2D368E5BD56D7994F95EDDD30AEB08 +:1072A000B1BFAB7BE1E7608D9F3ADA57A764F6AEDA +:1072B0006309E933A0F3A586DCAC09F64DEF353759 +:1072C000FB63E784E4D7D76CFFFE50F0CDDF1D38B9 +:1072D000CE7CE4548CE45BF344C73BD7A5F7AE7F88 +:1072E00051CBDE968C44C8CBF8D190A366DC202D20 +:1072F0004757716EF30DFC5DDC2CCF4FD0F965C79D +:10730000C36EA9165EF0A7648F077AC020432F4989 +:1073100071997E43797EEE2C79FE973BBF8A1E39A8 +:10732000D03635540EF4F8A1363B185E1736676F29 +:1073300048667D54C2EB365B47DE9D34EFEF563E28 +:10734000BE3A2583E57B1AE4FB12C39FB4D4D00771 +:107350006F2578F5E55723781584C2EBD63D125E8C +:1073600095191DFFF622F8C29A088E43FD6EFF188C +:10737000F673CF57442DEC9C791D5B1D83C0776A53 +:10738000D2E32166BD73D22DFEDBC5B5F91AFCDE52 +:107390005E53CE85E19D59AF10DE01A04B1148151B +:1073A00090E7BDEFC727687942AC9AA35AF880D915 +:1073B0007E7E4DF57DC8BF391F29F16D258D8778FB +:1073C00047A53A3A0DF9AE5D5B2246833F88C4205B +:1073D0009F7BD5105D65F917EDD7B18F41D17A024A +:1073E000E86DB181C75959FA35781EAB929E8B3C36 +:1073F000373A9BF1A381077426A32F2F57FE25AAA6 +:107400006378ED15F4BCAC959D7FC43A71FC180708 +:10741000650CED7FD31CDDF4B78AFEA37BF5CD7040 +:107420007E71A95C967E65B546EAA9E638E178D614 +:107430009A53C67865EAABB4EF76992F23F74DEBF4 +:10744000E63CC97F4990F5C01C89DFE7D3BD85AC18 +:10745000DF4C7069FB48F5DDA7EA751C6F257B00E2 +:107460007AB5C8F11E7642EFFA66AE86BC0391E5A6 +:10747000653DBA6A90C6F9F8E71BA5DE7DBE42F20B +:10748000B3BF779FE7D325BD75A5080D71D1ABF1CB +:10749000C58A9A6A8B1E22723AC7222FBB875EDA90 +:1074A000E4BD970B6D63F8BEC005D89058DF9A48CD +:1074B000CEDF3A9F6EFA27BCB19057A70323E311A2 +:1074C0006FFB47FDB6DF31F0B3324AF23FD2DA79D3 +:1074D0005DA7EB33592F369F9726483CAD4CE88C7F +:1074E0005100DFBB6C2C6F4DBC3DDD71360672E682 +:1074F000FC94CE9809667B885C3CAD75C6401EDF67 +:10750000E190E38B1827C77717DC31C3897B450BE4 +:10751000EA7FE950A87CC6C0E721991DDE0189AC4D +:107520008F6918A729C693CCF791E23DC9A1723D96 +:10753000DA3D87FD2CE7D38359F0CF77E5477AA072 +:10754000179C76CF9906B9787A57BC07647487E29E +:10755000395D0F3C581FC1F6DECA8E43596C1726A1 +:107560000B15FCE07C7AC79F7F8575AF8FF660BEF8 +:107570000B37FB0F81AF0CB1C97E74AE2AC7BBFFBE +:1075800042F392FD7A0D06B5F5F243619772FC1154 +:10759000878C8FF4D413647D88D3CBF799BA5EB708 +:1075A000B15E6DC629EAF6DA0C7F898C532C795DC1 +:1075B000C62996ECCD7C4FD63959A6E71E56AFDECC +:1075C00028E3234BE01F0991231B7614F5C77DA602 +:1075D0009AAD531F08103EA529C2073E95E6F0DE7E +:1075E000023CFA78EFB0F8C6103DE9C3F6088E47C2 +:1075F0007EBCF78537C6D17CFF763089EF2B89803A +:10760000CA76488B9EC87870CE907FA65FCA7EC728 +:107610009A00BA997EA99ABD1BF93E54CDAAA6A19B +:10762000283FDE1BC9F7A28AB519C5F1D05B76C722 +:10763000B39FFEC395D2CFB0E2CDEC7D90377F36BD +:10764000CE7BE5DF5E7904F19725E9C67D988E68EB +:10765000CE175BD97030CD465377C5F9FF3827492F +:10766000DE83811EBCE2E1BD6982FBEB7DFA63CD66 +:10767000F2A306797F63D5B7DEE771FEA09EB8A5B9 +:1076800082DE5FB9EAD9588C73DBCE5F8ED354F6B5 +:1076900027FD15E7DD730F6B97BC87F569583C66CE +:1076A000C5E5E331B6B9217E98F075D80DF95B9A3E +:1076B000E09B5321F1C0134A1FE1E5B2838A25FE06 +:1076C000B5A03D8EEF1BF983C2A9E1BC6CC2093A9B +:1076D0000C34292AE2DEA6DEE2D704EBBD03E74A3A +:1076E000B87E1CD79606BA59FEC48369A0934F6230 +:1076F00064DDFFD86B4BEEA6F7FD3B5464920BBFE5 +:107700005D3871EF6D7140EAC9E1F7F4B2E646F316 +:10771000FA9787DDFF12C8F2A2E79FD8659E04EEB4 +:107720008141BFFAD01E5C02FCF9B036D213E0737F +:1077300036ECD6361BDF7B0CDCA1B03FE7C3B66767 +:1077400063B2DCCCF7980FD7FD48FA0BABE2F40735 +:10775000E7834F1C7708E4F944E79EF4F2FDBAE7AB +:10776000D2193FCDF9FDCF1D62FA5F61E8552BEDCF +:107770004127F061C5734F3BA1FFAEDCBF55E6E585 +:107780003CA7B467C31FB7FF9013727FF5C1FC71AC +:10779000A1E3AC7E4EEE3B52743A67869C6B754E0D +:1077A000C28641C4B3A7CE7D7EC54E5A4735CE852D +:1077B000FD1BCF5F7308B92DF62ED6B7C3CF6FE58B +:1077C0006C69C7B6E6BCC576EFAA6639FEAA9CB757 +:1077D0003664F03EF21D4AC8F94F9BEB90F9A7B30F +:1077E000A5BF66D573D25EEEC99B5A67174D057C5F +:1077F0007F8BEF73D5072234E4853EBCFC1B7CDF16 +:107800002B29C2A521EFECA978FF9CB9EC9797F73B +:10781000BAA81C85324B9B5C0E7FE7E5F2959A1C5B +:107820009EB9909B81371CCAE321FC81F8EE00CE03 +:1078300073097BFEDF205F690DF6195CF5B3118CCF +:107840004F36D27B4855F4AE9EF4FE511A27D8E449 +:107850004632AAD85D7BF87707A8DDDB18A7033E80 +:10786000DF1632BFEC7A23AFEC966BFD6B314E32F4 +:10787000E2DDCCF8820ACEF3B3977F3B06F047BE39 +:1078800019E8C3D1F8D3DB8A891E9AE76A329F2CA4 +:10789000B7730CE09A74D8909BF693AC8F3892F53E +:1078A00004F0FBA011270C7C29F3A85E52828FF212 +:1078B000F89AEDEBC81B3BA9E68DC639FC78AEE41F +:1078C0000BFF71836F339F9B6ECBC6B89F394EA55C +:1078D00033DC89EC6C83488F18389EF339A634D199 +:1078E000C14D22FD49491276AA6F122AE7870C364C +:1078F000DA7F437880BB12939C9A28A4F9271D163F +:107900001D9C879EBB486FE3FE24FEE1FFAED7823D +:10791000C8A31375840F1EDC73F8E32B88770FBAA6 +:1079200053F140D6545DF86839E073FACBFD91F01D +:10793000F76FB8D6BF6F2EAD73A0CD7B1677163715 +:1079400069C1CCFBA9FFA6FA684FA3CE224AB8FAB8 +:107950000B5128FF295EBAEBCBD824E4EB750DB5AB +:10796000FF80FA7DE67579E0273C7DF7882313B127 +:107970002E5574C1EF2E5C53BD96FB5E7454AE71F0 +:10798000BDE344B60DEB799FF5B55CFDC8C444E397 +:107990003E98E7D2F70B45572CEE4D7ED6D51D0B02 +:1079A000BE50F8D22BEF2BA42F15BADC41E4AB0864 +:1079B00097E3F73DFE78CC7772703CFCEFCC0B0878 +:1079C000CEFD9BE4794E8EB3DAC527E64A3DE984C5 +:1079D000715E765DE6D7203F1BE7A80BAA639DE6A4 +:1079E0007D0BA1FFC24FF55FE1BE32D52EBC9419CD +:1079F00027AE402FBF84DE46FAD8376FF49E001EB4 +:107A00007CE698C4E305E8BC6D93711F288DCF5BBD +:107A100051D52EE8F7747E7CBEE63DB8EBFF22CF51 +:107A200073416DAC0770A5F31B79BF60FFD6B77FBC +:107A3000A1F0F97D80F37BB89BB41815743D2DDD62 +:107A40009FFB3FE7DCBE888C7D02F0EACD3FA57A44 +:107A5000E23F927FEA8B1A96CEFCF36F80538AE85E +:107A60007A554D075FA865BEF03F907FA6948F0DB5 +:107A7000C9F774ABBC8FBF37DFB309F99EF9C8F7FC +:107A8000244D11ED77C5B05E4B84D1C8F735D7EAE8 +:107A90001EE0FD44234EDB755734B7F7E477DE95DF +:107AA000D92EEF6908CE076D0AC8FCDD4E55F2618C +:107AB000B039865BAD90797DC2E3BA86EADF56C401 +:107AC00033C8ABE881AF71FF9CE8D62BFDB7EA3E27 +:107AD000E8FFC24EF614F1717F5CDD2DB097A694DD +:107AE000C7B35C8D6C8BF8F301E06160940E386D68 +:107AF0005A172394B85EFCE5900EF1B381B9516733 +:107B0000154291816E351801FC5B56EC0DC5BF7BAB +:107B1000CA058F77FBAF6F78C845F51F9BFCFE65E4 +:107B20001BEF6BC70C6F0AE2C23B66F457A1C73E5E +:107B3000FFB7471F5A0A38CC76B3DE674BFEE5AE77 +:107B40001A82F38E7CB9CF1D154359DF3DAD123C2F +:107B5000B0EF7951729C1895C7DDB13C8AE3013BC7 +:107B6000D2E53C3BB233B83F9DDFD05D383F9F8BC1 +:107B7000F3A12F3D3F191FE85AEE36CE47BEFFD97D +:107B8000E6C10C6F3A3FA35D6D07DCE8BC241C5FC7 +:107B9000B6311CE9BCCA9F91F193D8D078D86786DA +:107BA000BEF719F268E3429E1BE7417A516CA87F49 +:107BB000FF72CF7F3CCEBFB23CA9B77D47BC370533 +:107BC000FA6B64DB0B39EF4B7EA1E3BC7736E6B78B +:107BD000209F3610A36A8F8B4BCF6BE7EC270EEDFF +:107BE000A3F6E82217F33F11D87B08F790A26D1E89 +:107BF000E6370F28FEEF3E8EF36994F65FF879764C +:107C00001AF9E72255E28DB93ED3BE1B1238FB901C +:107C1000603ED7391CF2D9BC7F7FDA718AE92390A4 +:107C200029E5F417069FD615D185E4F9C142F2E99A +:107C3000C820C9E109E04B69813BA9DEB926D6A37A +:107C40000CFC7BF892A487547A05F74E893F6D03AC +:107C5000DDDA544F7204EB2B32FF3E4BCBABB81244 +:107C60007FDA7619FEB4EDBF2F7FFA3EF6396EBC8F +:107C7000FF99728E9B79F93EC1C026296FCDFAC358 +:107C80004E296FCDF7CE2872BC1CD1E5807DB69011 +:107C9000E4473FDC772B97F6AB581B26470C3CAAF2 +:107CA00032F028B2ED8B5F833F2C247D11F354AD6D +:107CB0008D380B3954B5D621F940FD546FD8FB2CC3 +:107CC0003FCDF785EFECAB77E2FD2952EE2D5CFE60 +:107CD000EF499067977DBF33351EF734CCFBEBD966 +:107CE00071BE37400F6795AE180F3D3CF1571BC76B +:107CF000C1B2EC098F60BF758D592AD675227F00FD +:107D0000D7AB9C3909C0F777CAA5BD77A7E67D1B1D +:107D1000EF8BBFBC920A3DF6DD71BEF700BF7BB3AF +:107D20002E703C70A1E81C0C397BBAE2D3C158D745 +:107D3000C2FAD758CE2E34E5ECD5E193C4F7549768 +:107D40005FE88193F25F00A7A2A184F9B9CC4FD874 +:107D5000EF945DFE1337D6752677661CD7C541773D +:107D60005F76D999068F08929EB52E3A56C2C3DE29 +:107D7000E580BDB8B07B9C0812DF2C8AB58EEBEF96 +:107D80002E10C131BDE35E0ECFCF90FE8671C39F32 +:107D90009BF6B1595FD8B0AA007A57EFFAFD2E8C46 +:107DA0006BD77CEBFE95CE332551E5BCD914AFBF24 +:107DB000241D78FEB68DF3852E376F7383C6F33E90 +:107DC000DCA073995221F5D475D1B7709EB483703D +:107DD00083BF4763ACC3DEDD9FF7E9E84EE432A51D +:107DE00058FA2BD645E729D521F4EEA930E8859439 +:107DF000C5A0790ECC6FA2443027B49E60A927108D +:107E000047467F4CF915CF9B11D6FF9AB0F14687B4 +:107E1000D5DB8D7B46D785BD5768A9A79498EB3EE7 +:107E2000C07ED741CB34C5A684C27D9D318E1C6FE8 +:107E300060F750DEEFA0EE2C2EF1B7B93FEE01F364 +:107E400012C52B3137B0DC3DAE88DA7E54C61B79C3 +:107E50006F768FC27C187F6DE370DF59F0FD71BBC8 +:107E6000BBBD19EDCDD47F9B16F29D24D161AFA689 +:107E7000E7379744B27FB9F73EB1CCAF2D43220B21 +:107E800095B3848FCB39A296CBCF1A3BC701B937B4 +:107E900068FE5B2AE00770F9F724D0117C23CAB88A +:107EA0005F7C99EF26F5EE37D067FE399F7D8A5CBF +:107EB0007FA07FEFFAF1E71E67EC5FF0FCDF30EEAA +:107EC0003557552459E6AF9276B15D37E831F05514 +:107ED000A6A52ECF0741D8097D3CBFA4FE9761D649 +:107EE000BA5C7776FD3F09F8B35AB204E7D9D935C1 +:107EF000AFC8A07A2BE17F685E5D78D914467736EB +:107F0000C33F1769C8BF7BDD43F7220F29BB74B29B +:107F10000B725D8846032FAC787DAFBBEC8AF47D95 +:107F2000C93C768F80BFCCEE567BF192FE973DAB7D +:107F30002AAE2FBE73B571CC755F32DE91CA38C8D8 +:107F4000B19D157DDF2FB81A7D1ECA2953112FDE72 +:107F500098A5B25F6DA8A86F015C9B7495EDD29651 +:107F6000AC752ED8A52D7AD915EF05DF6FAC7B73D4 +:107F7000834B042384580FBE1311B28F29F6F8E205 +:107F8000029E87EF856E043C69DC36EF1DCCDFB4C2 +:107F9000C1AAE1377B3FF75016C15B6F7385FA6D5D +:107FA000C3F771D1EE8B0B6DBF37553594BDB75705 +:107FB000C2EFD6A2AB6C875CC445CD78B9CF16E0D2 +:107FC0000BD931117DE4AD6893AC708DF144F5CEE1 +:107FD00047FF73262658DA5B0D7C200690DCD779A4 +:107FE000F6F2A92BC35F898D64FDFA070F09838F11 +:107FF000F80FDF46F5E1E323586F996A5BCBFEEE9D +:108000001FBC6D33DA65DEA2C7A0CB1F64796AB0EE +:10801000CFE14FCB7B3F3FD82F6CB741AF4BB689F9 +:10802000B8649CA7BC879363D0B9B9BE51FBC5D9CE +:108030000892C7A3824ECB3EA76A1196FA7011D25E +:10804000CEF861ADFFA3F7C5FFB5C2B8777AADB87A +:1080500016FB7F222C9F71A899CFD85EC0EB2DFA1A +:108060005650453E7FF8FD0F934E9F687029783F2C +:10807000377897AA8FC47DC15A15F7248689DAC349 +:108080009CBFB84BC87BA0C678BADB2F6027ECDF5B +:108090009DB10F7195EF741C8E52DDF08FFC226A3A +:1080A000043DFFCEDB99A35B45081F684FB4F0D5B4 +:1080B000EF02CF91EFD521E9E1BBBBE57DADEFDA72 +:1080C000DBA242E34EE17860D6AF794CB5C077B31E +:1080D00090E7F26A85CF350FF234D0A1029F7AE0A3 +:1080E000E029B39C5BCC3CE95F8AAE1366BE4121BC +:1080F000ECEB66B7A4DF6683AE2E771EEB0D3A6D10 +:1081000032E8D455E14FC6BCF6127FA3928EEB390C +:108110003E85FD3EC67D66FEF411C1AFC829985F5D +:1081200036258976E4374D89FD5110F7999B09CFA3 +:10813000E02F34F1B829DBC0635B25B75F243C86B0 +:10814000FEE908940BF8359BFCEE5AF67FE5CABCB5 +:10815000570417A0BF35BB494A5E018F22C3F266A0 +:1081600093CAED96FBD18EABDC772E9867C5BB9E8C +:10817000EF0D7AAEFCBDC19948581C7B757DF22687 +:10818000ECB98F71CE347819CEE1FAE41F57F86F4D +:1081900000DC17764F63FDD1DF5DCC7AC7C618F9D6 +:1081A0003D9EE3F0A770BE938C874FF7C8FC9841C3 +:1081B00022C0F558AFCCBF18047F35F5D796C9FA61 +:1081C00074977C3F7996CC139D6EE4C725FB35AE42 +:1081D0001FBDCD3F771EE3F5B33CCEA3DF92E34E48 +:1081E000CF55787D9027BE91973F87B306FE9F318C +:1081F000F0E76C7A4725E2CC9D4D3FB52F0AC1BB15 +:108200005B0D3C9DEE8A95F1A29CB157D14F0C7A43 +:10821000CB49627CC7FD7177425FFD028CF7A63EB9 +:108220004574F3CFBC1FF18C856EC2DFD3EB0A6FB0 +:1082300047BFADD13F51BC80E74AE1019E3E18FDEA +:10824000932380CF9991113AE8E7CC3DF27B837973 +:108250006364DC5D17328E9F3E5EC6690F8D7CE1E4 +:10826000541DFC862F3B598EF5E2054967825FA7B6 +:10827000F1FE01383A09AE875E9CC77A7BF93D3240 +:108280005E7F7CEDF9A7BE07BAF0DB4C16CEF7EAAD +:1082900074292A445E600DE7BBE57911CBA6F10E87 +:1082A00006787E7F1111CA20926B0D390C77E1722E +:1082B000B9EC2179D2BF0834B15FE638FD1BFB72FF +:1082C00075E7315EAD8B7E84DF8F24FCB0C9FB4D3A +:1082D000AAE8CF79C242FA2B247E5CB358EE2FB2C3 +:1082E0003B97DF1B31C873CD844CC697DDC0D3F4F8 +:1082F00091B69F8DD6E14C128C2745B11358EE4CA8 +:108300005FABE8D021A7AC558E26C05E0BC4F1F759 +:10831000488A12BA1CC9B21D9AB658987BF630EF3B +:10832000E320BE682A44716006EB1DC70DB8247BAC +:108330003A39BE97ACC97D1F1F2EEB9D83E9C4E37C +:1083400043ED2E09E7E36B8BD4FA4496EF3E0843E6 +:10835000930F9E09483999EC95E7965C22BF759575 +:108360006A37E86099CCF7DC6EE0710BF07818BFE3 +:10837000C7FCEB628BCA7E348C877C3873BCE337D6 +:108380009F48C8D0A1FF07347C5F2EF0B29DFD440A +:108390003B0C7EBABD679C99531C18C7274534C651 +:1083A000B187ACAB5FA9CEDF114BAA95F71F933114 +:1083B00019D67587CCCF7D226C5D2F1A7AD499C0DF +:1083C000762FDEBB582E382FEABA8F05AFB7DFDA2B +:1083D000088E933FB1EB7054A81C6E31C679D1A0C2 +:1083E000D30E639CBC8FBBBE1D4BEFD91B69E2490A +:1083F000D84F5BED61EC6781FC5EC2BDD91B54F8C0 +:10840000819E52440730F4C54F64FD7BB88043F52C +:10841000BC1F6FE67A7D81E078D9DCB5DF7144510D +:108420003D7F5DA44E9BA13F39FE99465D613F9320 +:10843000687F3509FA883B523C4EFDEF35FC8F9141 +:1084400086FF71C4A7079F3A40CDF73ABA7E0DBFA9 +:1084500057604D0CC3F58CA3AD7C11D52B7F9AECE6 +:10846000218A174F0D7D6A11F02865BED4738F2BBA +:108470007DFB8594F9D2CF719DCDC8D3171D6EC0F9 +:10848000EDB808FC08EB319FCFCBB59D75C4727B6E +:108490006A7988FE769DAD2315FB134D91C343F396 +:1084A000B5E6E5BEF74DF82FD01FEDC795D6C856F7 +:1084B0004BFB6B77211FEC3D1016E9B1D1F337AFC1 +:1084C0000AA40A91B5EC25961307F2665E512E9B1D +:1084D000E765D6EFCDDA9704396C8E479AC2AA20A9 +:1084E0009DD717BFFEC201BFF1E781481DF1EE85A0 +:1084F000EEAE57D93F1F5074F8E78A027F74745A62 +:10850000F0E0E0EEE290FC0497DEC678343D77EFD1 +:10851000B5A176D342E2FFC8CB98177893F7396FAD +:10852000D994D1F06F037F1DD8EF5A89BFA3623B66 +:108530004E5C8BF9DEB571DC3D6F98952E75F1DCE4 +:1085400021BE2F345B7EBF345C6E5C82D70DC95C6C +:10855000CF3E92FB08D3F3634E8E0B0CDFF4EDA7F6 +:108560000EA26C5DBE6211CD336CE8DA79F08B9FA0 +:1085700033C6891C9A7C1A79C24337C5F0BD8EC8B0 +:1085800040F5C045D43FCB7D9FBE0EFED35D2E1E71 +:10859000E778A0C903FCFE7CB79BE971718BCDA283 +:1085A000C71F78B135077EE18BBB077A008F856BDB +:1085B000E5F7B3B05EDCF73943EB4439677E86C537 +:1085C000BE3A73CF9DD9A0B7730D2777414F782F4F +:1085D000AA93F9FAF17765DE469E786633F85F9ED6 +:1085E00048EEC077558FE7DE2EF398A70AC526F32D +:1085F0007FF8FEC8B906EDA123743EBEB0F1735AF0 +:10860000DEF4E21CB0547F02E0DA9C7025BB31A797 +:108610004509029F735A0E7911CFA816FEC054E087 +:10862000718D83FDBBB5F375C35FD371047953A717 +:10863000D6A5F1F717A6E71E1A09B95DDD738F48B5 +:108640009CE67655E3F679818D87517FF985A119EE +:108650002AD1F73283BE463985BF2FFA5B325FCA13 +:10866000FDF7A23A56422FC811B5BC6F51AC299BF9 +:10867000A17F8B235F07BFCB59335881FE6DBE4767 +:1086800072C2A98C92EBE1BC3E5BF022BFD7A0087E +:10869000C4770A498E202FEF83A5317B212F444DCB +:1086A0001BE7C3D51AEBA98C30EE0DF8DBC6C21E52 +:1086B000566EF3AE994FEB3810E6AF3B56375FCAB4 +:1086C0001D831F9F093C7B02DF87FBBCC6C67CD590 +:1086D000F4A37C50F8F4097C2F6CFE2A1B7FFFEF7B +:1086E00083B40E3BF436F8F1BCD07B088F5176068C +:1086F0006C49324EDACEFBB6E5A6DF371E72AED439 +:10870000E1B941C7FD8AAE3FBC40E3BCB73CD213E0 +:10871000A0FA36E31C1067677F88EE63FB71BD2209 +:10872000F87B6681776C1E237EE18A1E27FD99F80F +:10873000F33E26E33CAE548DF3AD700D19F0B12736 +:108740006AFC3D69535FDD3ADFCCC3F26EC5FED7EC +:108750003B7CC9F01F5C4DAFDB1066176C88F4944E +:10876000FBFA38DFA66B229785E6F7FFC038EF1FCC +:10877000CC37EE596882BFFFE474AB9C2780EF765C +:1087800085D25BF87876B7D5CEFE47EDC90DF38D6F +:10879000FB71865EBFA2C2F7F4FC24E80B37321DE2 +:1087A00037197242E48EB6E89FCF1B7032ED28571E +:1087B00085EF20E0258ABDB8F14E7ABF717F35374D +:1087C00081F5CC107DF3658C2F3A9F5601CFCBE914 +:1087D0009BD1758587E6CB715FC1B8766F3B1FA6CD +:1087E000A9A76C1B2FEDB5ECD2BC7B33A97EFFDBB8 +:1087F000320FE06AE763F2CF4D865F779BC13F8B14 +:108800009C7A24CE6BDBA42BFBA99AC3E48CDDAE4F +:1088100029C8178B7769531097252D53DACB765FCC +:10882000E08B027C2F64F413C0B77ED777E4CCA131 +:1088300071CB2AE57D1147B1D58E2D2A2C2B849E34 +:10884000BBF56D1BEB4FFDAE170AE7BD18F9909C09 +:10885000A568EB9D774BD83A62EC2705E82BB6C0AC +:108860003AAE2E4EBA42F9DED60269DFBE967CE100 +:1088700095AF086EF10582E1A81577D12042DC376B +:10888000C97F127C5C0B7E1984DEA591F2003F400B +:10889000F4F51D2EB8FCB402A1C03F009515F4B448 +:1088A0006512C9297A3FAEB8CD8BE7AF959CE3FB43 +:1088B000DD5B93ED2AC6DD5090706316F4921C9533 +:1088C000BF2BE130FC39BC1E6A3F51B2A8259DDAAE +:1088D000B725AA1EE4654655F663F86C2BB970AC53 +:1088E000AD007941714B6D217AC2FDC9761194F9C1 +:1088F00040EC57BB1FF4C1F54EAEF7AB94F943F70C +:1089000095BC559245EF3986F365559AB593E1B01C +:1089100061BCF437D8D77A835FD1F86DE31739C1DA +:108920009F8E8E7FCBF511BF2FCF674BF13EF6ABFD +:108930001DF7264422DF736B499986F17BF5683D6C +:1089400012ED0EE1623D7BAB57E53CD36DC5850270 +:10895000F8781F2972D060EFF31606B1FF8B5E170F +:10896000D71DFE72B119F85AAC727CB828A5E03751 +:10897000E8BFC56D47DAB0682DAE0B22DE735F9697 +:10898000D47F1DB956FA8FD2ACF4EE4AB5FAD56C45 +:1089900053F679330BA4DFCE7072F1776C7AFD1049 +:1089A000EDDCDE36C5D5B58EFD0E3F1235A0A71421 +:1089B000E98708F7B74508995F703159F07A710374 +:1089C00014EBB51BDF95B397C8EFD7D80D3F5954BB +:1089D000AED51FE6CAB2D69DF07F85F819EC61FED0 +:1089E000B0ABF15993FE36187CB699F45C234F9BDB +:1089F000E3311B6C5ABECC0F16C16CAC3321752F02 +:108A0000CEA5AC52F257C0F86048BEFE8EDBFC65C6 +:108A100095A047CD0AE788642B9C67567867A2DF4C +:108A2000DF1B27B85A5EE1179169ED805BAFFEA7A7 +:108A3000C702BFCE197EF5CF4FC9EFD59BF985E1AF +:108A4000F354D567EE2E0E890B9F5E20F381C3FB96 +:108A5000BD7D5BE10AACDBFC2ED223F5F612F4DB24 +:108A6000E193E5370CB8849743FE1217053EEB6F90 +:108A700051BC88172C0A28D3BC7DF0E9B5958AE152 +:108A8000A7154F3AFAF7CADBEA38FFDACAB1A17282 +:108A900057E28FDDED633BFDC1E8476E1E073D9356 +:108AA000E435E85EB8DC3988832E35DEFFA066B198 +:108AB00013FAEC85BFC409F8BFB646E755F1F709CC +:108AC00004F18944F493781465E0CD0735B6A38C9E +:108AD000A781085DC6E3A4DF67A92EEDF2A5811783 +:108AE000B87E7A22E1FC048C771FFB79FC5EF91DCD +:108AF000E8A5617849E3B9D8FFBD4B613BD3EFF6F8 +:108B00006F805CEE4CB7D7AE633A714AE5D2A09362 +:108B1000A58107A5DFE836A1392758C65310A7BBA2 +:108B2000586393F7E6F16E7F639FE9F27D6F7FC430 +:108B30008DE59FDFDEB51E78938AFBD5E3FB5A9760 +:108B4000F43B5DF41ABF8790A308C0ED5683BE8541 +:108B500057E8B8FFAD98F597B400E7E51B79882290 +:108B6000745D9996BAE15FB7D61706222C74716AC4 +:108B700072DB1BD71BE7063FE6AD011997BE940ECB +:108B8000ACE3A8BAEF8A742D7687F8CD337AFB8BE5 +:108B9000B607BD886B9BFB0B9F2FFCBD3FAEF01E45 +:108BA00003BE1FBDCD77BC92F152DEB7F2FB850745 +:108BB0007EBAEC23A5CCAF2F362BCCAFAB5DEE004D +:108BC000C7E59BADDF9535C73F6FE80DA70DBDE14C +:108BD0007CBAA8F2B11E1BE70CF5D77D58A918DFA7 +:108BE000D190FEBAF3F7453B43E3BD93574EF910DE +:108BF000EB5A8C1B2009B8E767B5A3C2E3EF66BE4A +:108C0000F6E9B5D2BF4325D3D145B7BCE77F35FEE2 +:108C100042E8C379CB76235FB2C8659D6FAA166D13 +:108C2000E16F3724F7B3D46FD40759FA4FCFC9B4E3 +:108C3000B467B5497FF545E253AD9C47E3E3C53BD7 +:108C4000452DC73F5DA28DCBC306FC8E18FC3A4A6A +:108C500074F073B738C9E505F727EC478B03CA668C +:108C6000E20A8ECEF938FD8497EB36D7CC87EC63D9 +:108C7000005ABFCC5BA369D9DFB840B437C2DF6804 +:108C8000E6BB55CB3CB6147CBDD7C6F7ECF8FDC1AE +:108C9000A293EB43C0756C20399DCB4C21BFC7A775 +:108CA000D72DD516203E8A0C7D7A7E3AF2FBA7B0EE +:108CB0009EC2F9FA730ED04B60EBEA1344878573BA +:108CC000F53F21D6BF2762D3EA23A4C71646C8784A +:108CD000DBE85F3F7C2040E7BC729E77C002C6B7EE +:108CE000AE05584F35F129E455895A6D03BE0BDEA8 +:108CF000E4714AFA0BA3CF6A576AF04EEE17EB897C +:108D0000187F291E6EB7FB26627DE225B274881E8D +:108D1000BACA691EAA0F582018DFAEE657BF1CBD9D +:108D20009D6918DFA75F7DC0029DF9F9C2EEC98673 +:108D30005F7D12FBD5AF9BE71D83FD0D5820F5AB82 +:108D40009F39DA5335F60F898F6DE32C7C9FE170E4 +:108D500039BE0FFD1DFACD995CC37E34D669E2BBE6 +:108D6000F93C7CBD57C35F118ABFEC971D68D16386 +:108D7000AE068F703C3D6AD807C70CFBE06746FE25 +:108D8000470FDFF94FFE2E46F8FE4FCFEE7A03F67F +:108D9000F3E9776CA25107FEF5ED97BBDAFAC657F7 +:108DA0004CBB55E29FF5F7367AE83459F23BF33B7A +:108DB000EDC458EDA17641F8F8E1F3DF143BFC1760 +:108DC0006DFAE5F769D2A9596F8AF4267BDC40E792 +:108DD000BEF7135D37ED9E05D2CE3CFC5CE2DF1F93 +:108DE0007FDB00FF7DC839387BEE0B910248E31C26 +:108DF0004DC9DC1BEA17092F8F2AFA1D7642E1873D +:108E00007E7DEC00BECF5488040DFE5EC61BAB61B8 +:108E1000BF141631EA88077FFDF3030137C7F776E1 +:108E200002AEF45CFA478A05FF5E8A5DD3D98F40B3 +:108E30007AE10368DF6EF73E8AFDBC385FD61F30EB +:108E4000E8B329ACEE9867AD4382A956BDE9812B02 +:108E5000D14FF8F96E6BD0B7FF269BCEF949B78C8E +:108E60002F9E92E76CE64F9AFBEE97E639AB87F8B8 +:108E70001DFB65D48EF230DFA8BD36F43E8E993FDF +:108E8000915022BF1372C9393B3D9DF0FFD49F8A98 +:108E9000F0C09FBCDFE13F887D2BB1F5C36027F5B3 +:108EA0002BF5F07DB584220FFB4D9A22E57726C283 +:108EB000C7F9E9029BBCEFB4C0FB13E66F86DE9CEA +:108EC00030BD34D84CFB584F1C11FE716F7940F403 +:108ED000E5B77324D61ADF31F11FC3FB76CDC7F394 +:108EE000DADC72DDE678F883FEE032F8ADF0A50B4F +:108EF000F89FD7BF2DEF05AED7B6097C67A02555E3 +:108F0000E5EFF29C9ADC510E7A59AFA81EF84109A0 +:108F1000ABF4C4FEBDFC7A94530B2E32F4A9C709FE +:108F20008F0A635BBCC847DAE47579D87ED29D614D +:108F30007C48E6F799F36F7467F1FC2D343FE6DB6C +:108F4000E4B607A313E1CF72B1DD9FE7EE3886FBED +:108F50004B796E3BFB7F4ED57D6F38F2385D894E85 +:108F6000D67B2E19BF4AEADFD9818F9F398E7D7556 +:108F70002AECB73DF062EB6CD8D55FBC6163DCB224 +:108F800095919C603BB996EDE48DEE82D8507EB809 +:108F9000CDF0CB99F5A75DFE8BC043DB4D9E93C012 +:108FA000F78452B9FE7E252A6DA897EF6E1AAE3966 +:108FB00031C1A698631C2FDA1229BF5B505DF03CCB +:108FC000EBA99B97D018C88F223908FD99F624E3A6 +:108FD000D761722E5CFFB9BEEBB3678E27F6EEC782 +:108FE000D6DFB4F3E5FAB303078F617FEBC96E8672 +:108FF0007D529E74EEA9EFB1DD247F75EBD2FD1E8C +:1090000019093FE2F96551DC7E857D2756FD17EE93 +:10901000DBE694BF7B4374A6877E17647895D42FD4 +:109020005F5FE0CDAA025EE3326ECAE5F99C89FF7C +:109030003F1B2CEF0F6CBA2B9AF30E36C1364EE461 +:10904000EF7BB73FDE879C2DA8927EBD27FFD99B83 +:109050000F384CACD20D3AD2F8BB28D5F5C7DF4754 +:109060005C635352DF74ED35DE5F5AEB9D50D5C71C +:109070007B97D3B7C3F9DA076FB5A7E23B068FFA40 +:109080009C3AEE378EDA72C1067FD5C65249A71BCD +:109090003BEA8E217F33906AE7EF6BEDEF38C7FA3A +:1090A0004344A487EDA21D8DFE07700F343058FE97 +:1090B0007E45C4CD657C5F798BAE7854AA3FBA7982 +:1090C000DBB481C02F8FC2DF7398B230C1FCFE7A4F +:1090D00009FC1B6FA466719EDCA1820C05F1A0E562 +:1090E00025F23BE6CB1F93DF752A4D1DFD04ECCC2A +:1090F000D3A9876DF85ED69FB2FCE3048F23F95A9B +:10910000B6BF9BFD6B7B0A04F399F7D796CDC57C60 +:109110009F973835F43B94B86D1AE2A33B370B1D8B +:10912000F6EFA105736F1C083E3256651FC5A4CD2E +:10913000278B705F6C922E3C605BF66E9BF0921EEC +:1091400066EB56B8B4DB651CB41FF111C0079F83F2 +:109150000BC5CF05A51D47A88BD816D3F13EE6D980 +:109160007E8F53E0FCB7943EC0FC6ECB66D5FC5EB0 +:1091700018F327BBC19FB6E827F9BBFC1BFF443699 +:1091800032B56F07E3031C47CAFBE48FA6AA1C276E +:109190006FCE75EE93FCB2733AF6F5E897AA0679AE +:1091A000B067E41359C8B7DA393CD2CBE3FBB6DA7F +:1091B00031DE1EDC4BA27359BE634A7019D54B8851 +:1091C0005FB27F4ABB845F32BF36D7B367D650E603 +:1091D00097CD06BF34F36A6E33DA0F386B8FE2FB3C +:1091E000407B9E563CEB0028D171F4561A7F157EC9 +:1091F000DF01FEA9CDEF6EB896DAB54257972DF98B +:10920000D2F9BED6A58A4008DCAEEF8E1281103DA1 +:10921000730A5922A1F522D7204BFFA95AA6A5FD12 +:1092200086E41196F61BF53196FA829C89963A09E6 +:1092300050CEE3F1D27F584FE38B510CEF9DDF9678 +:1092400079B1ABC2BE6FB7AC7DCDB425F06B1879E8 +:10925000414B3BACBF73B0FDE66FF077F7B6E1BBB7 +:109260007B9E4BBF1FFDFD2AABBF3F2249EA193B46 +:10927000939D8C0FEF2DB87301F244370C74735C1F +:10928000B06299FF39F081E6D4E21CE81F3B359FBC +:10929000E691FA5672D6B89E1466FEB3F7EFBD2F6C +:1092A0002244FB21DC274AC3B97328C029BC217E94 +:1092B0008CED377FD488F60D8AE8B2197E09E02F4D +:1092C000441CD63570FFA78D4F25F2B9D546705C8A +:1092D000BCE3FDAF53BDFF5AF93DAF4F5267B9B084 +:1092E000CE474B550D795703EB43C6A7FFD952170D +:1092F000376E829C2638C4915DB57DF3E8C06C2939 +:10930000A7A55FB45CF6A7295D807B4476470BFC7C +:10931000B49189765EBE6D4784859EF0500FA1138F +:1093200073BFBC7F560E7C47A7D0FA120282E310AF +:10933000D86F2064BF7BEEF9F343AA15AE67C01F58 +:109340009B37172E83BD99A0070222B717AE307343 +:10935000F13CD2808B398E37C3CF7EF77EE6EFF5B6 +:1093600019EDE30CB86D50FCEF436E0566CB384445 +:10937000385CECB344209A806C2F775AF6670B5810 +:10938000FB5DAC8AB7E84F1C7F48EF9D4F18F3395F +:10939000FD4FFAB09E4767A9027AAA236CBDF80B6D +:1093A00098F44CED07EEBB70087EF74D25324F2444 +:1093B0007CBC5772E57DAA665DC625C2DB09CEF787 +:1093C000E29C1CC9765D7E67CEDAEEB2FB02F07BD2 +:1093D00098FEB3DC94DFCCE33828F13FDC8777E8F4 +:1093E000D67DEE8991792EDB6F94BFBFB680F843AE +:1093F000287DE6953E207FAF6D19C9777C077C619B +:1094000006F3F70C677009DECBA88B14F043ECA4CD +:10941000FDE37CA3D644CADFA7159E87A2A99EA11F +:10942000C608F801B63BF49436A29B5FDCF8D1BACB +:109430001AF483BF9DF0B0FE60ED1EE87F42213C30 +:10944000BF4EEA7BA17A779EB32B0576F69E057F09 +:10945000FD007C2DF02317CBBB51463EA178D1B542 +:10946000177C7963EA5BAE6AD68BEA39CEB1A53D4B +:10947000F00EE4E3F91336680297D513FAD07F0AA9 +:1094800016D2FE125C278F21FE03FD07EF87EB3F0C +:10949000BAF0F27DEC1E3F47989E5CED3A21BF8307 +:1094A000E4121A7EDF2C5CDE2BBEE7D95FBAFB56D6 +:1094B000A92735D58ACE689C6F983EF49B65528F5C +:1094C000B0AD768820DB2BED1C97A9887319751F2A +:1094D000D74D3C0DD7F321378097CD89563D7F94EA +:1094E00033F807C84591E0E4BC8FC2D88F597F5844 +:1094F0002FA43FF8545D7410E7F7B09AC3BFB3E5EB +:10950000D29C7C5FF1AAFA7D4E8645BF5F9F738E29 +:10951000F5D8D64EFC5A01F4F2BB8784FA0D2F37EA +:109520006EF839B538C441C4F71B16A64BBA0C8384 +:10953000B7A21FFD12E364075AF8FCCBD347B3BFB1 +:10954000235C0F6E4D1D7D35BDFF8E8580F74DED83 +:10955000C7AEA4FF361BFA6FB3A1FFB642FFCDC75B +:10956000F71CE4B9FE9FD7FB0372FDBAD4F35BA1ED +:10957000E7EB38A7F99C97FE7086CAE7F4BFB1EF16 +:10958000EDFF95FBCE50838F231F47FC2A82F335D6 +:10959000EC38D80988C3FCD4853C9721D592EFB428 +:1095A000E696454E91F12E4525FE1635F21917FC2B +:1095B000163B73558EE7E48E2C7B1DF6E3A6DCB2DA +:1095C0004445EFDDDFA659CFB05DB9735659810828 +:1095D00079BED3F8FD96707CCBAA9676E58BCBFC52 +:1095E000CF032E9BB2A45D4AE825F32B74C9373311 +:1095F0006EF272FE6BE5CFFC43AEF49D1873BD9B1B +:109600001249DF8DC3FA162585F2B97969FE9DB33B +:1096100069BC1D2385A75147E94D5942F088488D03 +:10962000F094503D3B38FE0F90F73B7D52FEBF76E5 +:10963000E8C60AC4F7A289BF45523DDAB8CF1CD1AB +:109640002DFDC27306CB7A529768C73DF31B66495E +:109650007E99982AE5CA6F1B647E12EE038C1DD793 +:10966000FBBB8E89BBCF36213FEB56D213747CDB1C +:10967000F2C5BB05F4F29D7B153100F4EB0C1641ED +:10968000FFDA3821425BE7C1A722261DA9A67AF29C +:1096900020E2E7F0DFBAADDF335EB6DBAA9F4D0E06 +:1096A000D3C72685E55D9F5D68E867E3C438C833A6 +:1096B000F3FB38A2ED41DF5FC7E1774204238DF968 +:1096C0009D9C70388FAC2BFC18FCFB74FD982BE62E +:1096D0008198DF4537BFABFEB36F4F49415C6347AD +:1096E000A3B4EBFED1EFAC2FAD9F2E108F5C5E7F4D +:1096F000A32826E56449FD4CAE972C92F1C40FDEF9 +:10970000EAB241EEEF98A5B2BD326A46616436F422 +:10971000804495BF1FB5A943E2A769CFFD2F7DD92E +:1097200057250080000000001F8B0800000000008B +:10973000000BDD7D0B5C14579AEFA9EAEEEA6E6828 +:10974000A07806086A21302113C456D1681EA6C02D +:1097500047D03099D6A083B91A9B87808A064D32AC +:109760006BB2B816823C1412A28D41AFABAD4876F5 +:109770003633E3258FC9FB664167DD3C1DF2B81324 +:109780009D710D4A2471EECC0EC6987176DD5FEEA8 +:10979000F77DA70ABA0B50636666F70EF925955355 +:1097A000E7D4797EE7FBFEDFE39CFE49E71991C52C +:1097B000306677BA99651263B9BE754D4B18A41718 +:1097C000E5385517632B3DA2EA87A7C2BA2C115979 +:1097D0008CF952BDD3B642FE29CF07B330FDA5E2C6 +:1097E0009D0649965B64612C96B1BB2E2FFF4122EA +:1097F000D4179B21C9586E657EE771AC3F26435252 +:109800004481B13B3C9DC78B207D47BCE45614C6C8 +:10981000D2BCC72D0CEBFD92B1DDC98C6D135AE69D +:1098200026405A4B1658077C7FDC73205586F2176A +:10983000D29D2A83EFDF3808FF81F41BA916BF00F1 +:10984000FFFB35FEDD35F44CBC64616A346371970F +:1098500004A64E81B4D523C8D0FFB87C91A9E98C69 +:10986000FEBE867FEFC9EF996383F6B7C81EA71BBC +:10987000F25B0F2E70327C662C76B20CC66C8B9E1F +:109880008B67E319AB816AB07FDA04E94007F44FD4 +:1098900054DC9E34485F74A50A38BE6DCBEE4EC0D2 +:1098A000EF66799369FCBE05737789D0BFBA4C899E +:1098B00059A07FDB26BC189F0CE5A56851B028D4C1 +:1098C000BCEA80194BC4FF83F4C9992DEC51C8DF61 +:1098D000B640F46F862A7CF9079C0AD4C73C0B9CDF +:1098E0009EB011C697219D16C221BF5C625D0E7DA0 +:1098F0003CE3F9D3113754AFA8781ABBA11F17CB9B +:10990000455A07733D57ABEFCE019169461AFEBD2C +:10991000EB5208D302E62F9B4507A567396E0C2A48 +:109920003F474E09CABF3BFE96A07CA6A91FA4C311 +:109930003CACD6FB3B4F9912947F48AA3C8A74D02A +:10994000FAACE0DE0CF9CBD26F0FFE9E75CE5D0156 +:10995000E35B136F615BDD90FC89ED4C2FE4ABF0B2 +:109960000FF6BFFAD55FD5DD0AF9DBB21D0376C865 +:109970002FF5AF93703DD7302B95A37A60BECB32D5 +:10998000FA4FB24CC8EF84EF03FA5BC69ACE5BC2C3 +:10999000F1195CBEDC1B16D31F0A895BD9AD5F5B76 +:1099A000F06D0CCD7B0C2FC24E94CCAADE8FF4CA86 +:1099B00058A545A6E5AE7E07F7C3E508EA67ECC102 +:1099C00059D5B82E728EA332623A96BFAFBA1BC673 +:1099D000F9059687FC987C29884EEB046A82690B0E +:1099E000981FE9EFD715B3B2B371DF31D643E55F06 +:1099F000EFFF4F168E45E0BB807E02C53166D483F3 +:109A0000FD3C681FCA877970A406B7437FB01E5417 +:109A100044E44905C6E5D4B39C31B51A8E0B2AA19E +:109A20007E3B1C4D3D96CCABD493C2AB8931EA81D1 +:109A3000769D07ABD517B3F8FB85F1588E7F0F5392 +:109A4000D5F5358E35958F03B28E623FC717C2CBE1 +:109A5000A9BC5A396EA85E47BCA43A3387BE1F1C06 +:109A600037CEB9514E18CAB7EAF54F7CE365E685A3 +:109A7000FD7D535B70BF435D4CED84F7A15678BA12 +:109A800086F6C7BD45BCFD654522EDEF8F43D4CDBD +:109A900047A1FFF50B45FF01C83AB4706104F28B92 +:109AA000D1F657FF2668F8A6A17459B94DB343BF44 +:109AB0006FDE13B01EF0EF0B5E81EA4FDF2305BDB2 +:109AC00087BFF8D4693A7DE9FBDC1AA74FAD82FF66 +:109AD000711FFE2E64A6313680F465A60375BC673F +:109AE00033E6C7EAF94CCFCF34E8425FE7B1FAD2A8 +:109AF000A5FCE4FECDCF6471FAB4C7E31B6F810D02 +:109B0000D2E332987B2BB497E20BEE5F5CD285EA0E +:109B10006DD839AF8BE8A24EE8ED16915F0AACF232 +:109B200067D0DED8AAE0798E2BB09DB603BDC6F90A +:109B3000EC41EF7FE98DA44EE29F2360FD58E07871 +:109B4000A0BF92F7F3FB71327C1912DB2AF0F79A6F +:109B5000415FC9B81EB04EC837CA991FBF3F92FFB8 +:109B600045F7D7906EF4887EBB309C5EB6018FA51A +:109B7000F24B18F15F737B21367F36B6B7AD92B9E1 +:109B800035F7F0FC6D9EA2EA5EC89760BC5123E4F5 +:109B90006724BC40DFB379B04630C4B8F2E0F95B6B +:109BA00006F41EC82733F37766637F58399385041C +:109BB000C6A61471B9325EEA5A81F58C5FEF64D59E +:109BC000D8EF8C0332D271A6D4198FF26DDBB2FFBD +:109BD0004D72557BC5E1065A40B9C5F9C62B8EFDBD +:109BE0001DB42FA0D219A3D329704CA2F334ADC059 +:109BF00083FCC59721BA516E4C94B4D834ECFF3134 +:109C00000BEB80F5B745F63E87FCCC765A706B0CB3 +:109C1000FB71E6991F63FA5F6F7023399D5CFFE368 +:109C20009BB15FDB81EE553BBC5FE00E9721FDAC45 +:109C3000C31B5508F547593D3D56A83F2A0FFA0664 +:109C4000E5A373C5A0F948659505D8EF4206EDE395 +:109C50003CA82AF10F41A7F742C7BB7C3E1D4CB67A +:109C6000C3FCB05ADB6F07F936EC0F21E94501F36D +:109C7000F794316681FC9A4AD61B8A1DEB4D8A44C3 +:109C8000BE8DFF8BE37D63B942F3DA1AC3147B0404 +:109C90003CF38B62B1DF6D5E59E7371A43F96B9184 +:109CA0009817F902B37652BB35F36461EB244CC3C9 +:109CB0007A64E17A24446E85F97D7639E70FE1A272 +:109CC000DA68C1FE89ACB703E9D473E0AC00CFC554 +:109CD0008BA404C4033ECF42B109F150D2F67FB445 +:109CE00024633F1CBC1F0B1486FB26F4238B3F17F9 +:109CF000CAB576CFF81DE288588FC49CD055DF983E +:109D000085D4FE850CE070F0DDE2099007E5EDF901 +:109D1000A25F84F4DD499C8E633298DF0EE9131F45 +:109D2000F48A98AE87EA35A0BBCF703D800FD52767 +:109D30001DF8F92CA8670BF003944F317BF6D7621E +:109D4000B9B2E94C56A05CA89FE3AB7217F3AB50D5 +:109D5000CFC4315FBC9982F47F50700BD08F6D9D62 +:109D60000BC53AA4AB24D19F06F9C793167E9C92EB +:109D700085FD9248DA3D11F3C57B2877EB93403A95 +:109D800041F9B02CC07F90EF00FC47784800FC8779 +:109D9000FC21417223BE1B8ED75401E925CE134C02 +:109DA00017F7787A6C88D7EA6595F09A2FE3870ED3 +:109DB000C45DB631390928AFCA7A394E2BF348074A +:109DC000FCB48F83715639534F3C82E302BED105F8 +:109DD000AF9C2D2FB5E1FCFAE25D0CD76FDB84B9A7 +:109DE0006F214EAB5B25CA88D30E495DBFB3E03E01 +:109DF000182329C81786E1A6A4EBC361807B7E994E +:109E00001EA7B33A24414F691E32E3ABD69BCF71F4 +:109E10008803FEE1F8E6B1F8DE0CC445C1B8C5928E +:109E2000047806BE2FDF637A8F7826139FD6A1F7BA +:109E300030AECD857F2578C6FDFF079E995B240C4B +:109E4000CAB93F0D9E291046C233B13A9E8935E109 +:109E500019AF8E6776229E99FAE7C333C70AAF0D12 +:109E6000CF0C5FE72BE31B03CFC4605AE674F10D00 +:109E7000F14CBC0D3E1E973F0A9EA91A8667B26D33 +:109E8000D782674CEB3650F80DF14CD29F06CFD4F9 +:109E90005F239EA91F05CFD4FF99F1CC83A3E0993E +:109EA000FAA4859E6C48872C102723FF4DD33E2FA4 +:109EB000A271E0BC407EC1A2F5C70B910FBDEC20A2 +:109EC000B952BF6C998C725503024FA371725C92A8 +:109ED000792692D675A2D4FBCC8FB1DD537637E2CA +:109EE00016038F9C5C7F8F13F1CCEE38EB246C272C +:109EF000CAAA907D00F0C9778A6211AF707CD287C0 +:109F0000F84419099F747E3B7C92716DF88429EAAC +:109F1000AE50A87FA918C6A81DA62E21BCB15852C4 +:109F2000713E7EB1A83F6705A443122C0CF5DBD12E +:109F3000F6EBF5E243B190E399217CA851FAB9C25E +:109F4000607C34EE01751ECE1B43234DC295F0A5F7 +:109F5000A6EF07EFDC5528A7413EE0FE2DF37BE797 +:109F6000E2F8E4F1D6CAD0789E7E06AA4A82FDCAFB +:109F7000A6F3F4DB901E53E4AA14215D3A488FDF68 +:109F800069447A575889E4012C545A6E3B6D837D9D +:109F900058BA2758AF78C1CBA8BF37FBA511DFFF50 +:109FA000A5FB73AC90B7BB74BC321E999C81978D96 +:109FB00079F2BD02A806F0A8CFE64968710D5F6787 +:109FC0005B6CBED880B804701FE2295BA447C6F55D +:109FD0002D58343902F150A6C4F741BD8ECFEB970E +:109FE0006DA47D63AC3B101AE1F5CC5337E8FB045C +:109FF000F0AD6B687F003E950B5D41FBA2F1BFD3D6 +:10A00000BE30AFA3319FDDDA1747902FAA031CFFA4 +:10A01000C29F15ED9333AD8282E394AD02F1C5B9D1 +:10A0200090AF24237E4A1430DD152BB01B203DD782 +:10A03000F2AEA512DAEF9E6E97ED1CE7DC3B09E469 +:10A04000D42CBDFF8724F95D17E477FDD1CA36A370 +:10A050001D93DD61C5F2F137C2BA001D3017B73F5D +:10A06000C9F00F8E674E7C30FE9A69B223DD61C263 +:10A07000613FC7FF8171BF50A4E3B1C92C0BF9ED5B +:10A080006F36BDCCFA70E15A9EF2FC27F467059654 +:10A0900083F7AB58B05C379E13D6E7BC86EB35EE42 +:10A0A000F23FD17C77E732B615F874B2CD32DF0DCE +:10A0B000E37DEE5D5111157AD27C689576C2F14C44 +:10A0C0008EA6FDFFDCBB873FC880EF9E7B73721CB2 +:10A0D000AEDD0B7BEE7B67099657946D1958BE4138 +:10A0E000227EFAA2FFA1D0FBE1F9F2C11DF7E093B5 +:10A0F0008178C27528DD65233DE6F906A91DE9B31F +:10A10000BF2D25D4EB1AD2A31EC04A6760DAAD4C2E +:10A1100086F71FEA782867B9CCF9C386589A87B7BB +:10A12000C7300DF1F9F20DA17E9CEFE5F2804D40B4 +:10A1300079A4AD5B7712F6E572C7C01C013E09DF5A +:10A14000B266D251A86F39CAF6DB40CF39F3F0B30B +:10A150001AB4D3F4A07AB288F6B72C219F2ADCF087 +:10A16000CE71C4D5850E9786763D33FDC10E9769B5 +:10A17000DE199773F64AF81EBA72B288D3D793A63F +:10A180007496290D7F5DCE699C4EF1AF30C24BF9BC +:10A19000EA413ECF8E24E647F96E7579088F1E108E +:10A1A000BAFEDE85F379C2CE3AE0FD27FAFA1BEB60 +:10A1B000F87449B289FFB208E437F78F6D0947BADE +:10A1C0003E2BB0DE6A78161F2C5E741BCCFFD9E6DE +:10A1D00005A457966A5C7F3CDB3DE3A709905E01CE +:10A1E0003819B1C4B9EAFBE692FED804B306F98B7C +:10A1F0009BF97E28F5097EB4CBDFDDC6F53EEF2561 +:10A2000063FFA8E15303E8DFD01FAB5F0DA1EFFAB6 +:10A21000CE33C21FDE3DA76B50DF2B531D038A1BBD +:10A22000F7894742FB7FEF7E816D874FEF68BAD594 +:10A23000BA01CA1F03FE2504EC9302F807E7DDAC60 +:10A24000A70CDF275C6F31EF9784627D9F4C63D34F +:10A25000AE739F28C5B12807DD4FDC3A827E673C8C +:10A26000DFDE349DCDB631F63A8C1F9F6F8F697952 +:10A27000C003F475CE06FA26F2D530693FAEDF1B77 +:10A280009B1C94DFB549A6E7E14DF1F4FCF9268566 +:10A29000CD867E1DDD944ECF3737B9E9FDAA0DB3CB +:10A2A000D86CD872A51BEE61B341EFFD698985DBDF +:10A2B0005FBC8EBDA1506F1F2841C8477B05EDBD17 +:10A2C000E94827EF59C81F32FFE5CAB9A81F0DE2B8 +:10A2D000F9029B7613CC4F89AE47CFD771CFFCCD17 +:10A2E000B6C9B550BE18F56A785F62F54AA8571727 +:10A2F000B75982F8E79CD545B38AD1BED9F66C6DC3 +:10A3000002ACB3579B241565E0BCB4CC8EC2F16D92 +:10A310001168BFCF17ABAD5158EF56C15DABE844E4 +:10A320008EEB9C1A4D741D5AC2F1C2850D478E6288 +:10A330003D66FBFE20DDFC4CD0E9ABA7EED62C4EF3 +:10A340003788EB4BD367B0D901FD42FBFF06A8BFAE +:10A350007F865DDE2C23DC84790BB4DBB3D7EB1E68 +:10A360000DE4BF26FBBFD9CE5FEE2F94900F0DB743 +:10A37000F307972B290ED68727862B75F128B7C6AA +:10A38000F37998575BB8F71DDC4F2553BE3F0DD2CC +:10A39000D9251CE7831E1B81727CA9BD6BEAC728E7 +:10A3A000FF9EB0937DA34F600581F45757C2F95DBE +:10A3B000BE3E5F4C7579D14E51A4CFD3B983297578 +:10A3C000E80FFA02F46BD2B72B2325B4431443EE03 +:10A3D000EE49588ECBBF78BDBFC5BABE5C3C5C8F22 +:10A3E00052516FA47A49FF0DD69F8B747DD7A86F09 +:10A3F0002914C0EF26BE112FE13AADCCB374A13FB2 +:10A40000B0D0ACCFF642DB71D41FDA5F46BBA08F71 +:10A41000AA81FA2AB59B3254BFD12FB39EBAD2C5B6 +:10A42000F7E74A2BD7578D797A5E9FA7AF4B82F516 +:10A43000D4DE9D16FF01D48B76DEF727D153DB8B5C +:10A44000AFACA7D238C78F34BFC3F4CE8338EE5237 +:10A4500036F4877A68A1BEAE303175E8CF8279A92B +:10A46000DC0DF47ECB8F82E7E1AECB13EB50EF2C0B +:10A4700006BD13F7436143703F332577DD22F8FEB5 +:10A480005CB663409387F76796231867CE9183D3B2 +:10A4900077C707A7E729F661760E87B1AEC9C3EB88 +:10A4A00097BC97BABF46BED466F107EAA9B4CE6896 +:10A4B00037787CC7038FA15C42FD8C0DCD8F416F37 +:10A4C000477C96F9C82FCE34C17E1D412F3DB7EC95 +:10A4D000CEC767209FDB6853D294E1F98C75921E3A +:10A4E000999923139EC9D8F8B3203DD45C7E19CC2A +:10A4F0005FA0BF70972E4F4FDA14D2B74F364AB2D3 +:10A5000006AFFA9A2C21C8176AF47DCAAAA65C4540 +:10A510008FE176F28952CB03D4BE28BA3BC88E14A1 +:10A520008C7773C23F27BF7A1F2CBC1DF65119B61A +:10A530008F38E175597D0CCBAF0F77E33AF736DDF5 +:10A540004778BEF7A0E5007EBCE1E5AA7D3F66A89E +:10A55000176C5B741BBCDF7DCCC2504FB52C048ED6 +:10A5600089FDB37AC211E7F7FAA68407D2BF81DF6B +:10A570008D34E0765602EDC1AC1F33ECEDD82F33AD +:10A580006EEFBF5996709FF687BD49F3DBEB043D34 +:10A590001DF7BDF612E1E3A6151C8FB34AB9AE0B49 +:10A5A000D235BA9E340C3F9970BA65AD8D7591DD88 +:10A5B0009C517F974438F4B49BD206BD9518FBC3D9 +:10A5C000934CB8B1FF23A02F98AAFEA623BF433B0C +:10A5D000FAA73EBB2224A3BDF6B3669417E7DEB507 +:10A5E000B8753B6A907C31FCC5FDE82F865725BEC7 +:10A5F00097483EC889307FC82C5BEC663B2DD987D5 +:10A600008DF6CF69290CF1E6A71FF1B882ABC9AB73 +:10A6100072FFBAA3886B4A415F403E5DC6F2E69284 +:10A620003C9AE570933C32B5B70CE55BC0BC9BE54A +:10A63000D9D5E4D7D5E4D6ED2520B76E61D72CB7B0 +:10A64000561547113D1A728BCD76955C510EB54566 +:10A65000D6A1DDCC2C879034502E5C410ECD66D334 +:10A66000AE5D0E95EA72683332A2A957EF97B91F13 +:10A67000AC2552C27E16613F812F1461BF3287CB59 +:10A6800021A35F067F37F7AB18FB15309E12EC97BE +:10A6900030D4AFBB067E4F7A765FAF40F46879DC8A +:10A6A000C2BA687FB6F0FD79B08FF4ECDE9376B273 +:10A6B000579D5CFF3F689FEF7EDAE247BF4F41C77F +:10A6C00014925FD7B1AFFFF6BF725F5F0DAF98F125 +:10A6D00009D32225EBB5AD07E1956B5D0FAF894E30 +:10A6E00000C7136ED6AAC318F2E33EC0D8B89FCFF6 +:10A6F000AEB3FB6BB97D3007F7E7815691E1383F88 +:10A70000D3E9FF17ADF6905EE2FBD157F18F6A24D3 +:10A710003F7615A9FF80F37FF22DEF387904FCF125 +:10A72000559142F59AF5B6F78AD44325B1D7DE8E16 +:10A73000D92E557A708314827A64B6A313EDD8A506 +:10A74000071F934290BFAD7710FE2D3D5845E9F8A5 +:10A75000BF7128F611ED5256C2EBA50D02F1D7D20A +:10A76000F2B4BA6D68E72A72919DCB6CA762DF1CC8 +:10A77000FF98F04E301E1A8E77C6111E2A463C24D2 +:10A78000FF77C43B2F13BEE85319237F2F33E39D7C +:10A790000B8487CE021E6223E099233E8E87CE0073 +:10A7A0001EB2B3E1F9574B9F5B164678496BB690E2 +:10A7B0007DDB8C674EDAB83FFA24E01F0DFA770094 +:10A7C000E81DF7F581571CFBD19EDED736E5D8741E +:10A7D000B49F548B6E64BB191B6DE494DCF5E9C027 +:10A7E000B39A75B81DED3AD6FBAF1CEFFE75AFFFFF +:10A7F00021E0A53D84C7A0D50CF4AF5D22BF524334 +:10A800008648F8BE5639F3FE78485F8C116935F7F3 +:10A8100066703B966D09237BD1A98CDE551417A376 +:10A82000488A4678E9378D3741FE27D556B75DE12E +:10A83000720BF5AF0C5B25B916A2015755A3FD4B62 +:10A84000B7FF8D7D342684E244C25B18FAF39D790C +:10A850009E5CF4BF17E532772E7CEFCC756B2C0C29 +:10A860009E5DF31C0A3C6BADBADF3F66A15345FB0E +:10A8700044A39DDB2F17307F1AD499119B938B71C2 +:10A8800099B57254143671243FA77B3CF46F9CCA6F +:10A89000E3FF6A5DAA2319E7D325925EBE25C6CAE7 +:10A8A000842C4AB7E3F7B6D885F23D906ECE2AB233 +:10A8B00008CA103F6E8EF9C09112A0BF37BBC45CAE +:10A8C0003FB43FAEAB2717E31E9C2E711A4D10F319 +:10A8D00066A37D382C09643CB6EFFAA0EB6F20BD6F +:10A8E0007DC89E1C3E298E5463DA1FA1B94502FA29 +:10A8F0006358BC854500FF0D63AF6BA959841F07E2 +:10A90000907F871648AC2B805EEDA901F1008CFB8F +:10A910004D07F393F1FB807C486F5CA1E3C1EBB77B +:10A920008FD5AE003976626CCB04B453C664490C43 +:10A93000F5258B871D46B91ADD60F1DF0DF3169DF5 +:10A94000CEE96E5B9AE8473AD8BE605D3CD6DB3C08 +:10A950007527C5B5367BB89F223AABB719E971C7E1 +:10A960001291E27EEA975CD9CF3CF612E02910956D +:10A9700053567B9F5A11204FF76EE0713A174ADA0F +:10A98000852EC209FEEA77A09DB1188F20633C6B2B +:10A990007F7749164D03F97B4F1CF67797A0DE9918 +:10A9A000EDA8443E92B821980F9D69F807C188AB85 +:10A9B0008B9F36E4373E51D25E8D76B72FF4B88444 +:10A9C0005F57B477AF867ABEDC1021633AD1845FDB +:10A9D0004E49CAA9BBA0FCA9C744A55AD78F991153 +:10A9E0007F22F2385BC4B9665C93A8E35F73BF82D1 +:10A9F000BE071C9758124AF10146BB83F6182FEF89 +:10AA0000F760B9A1F880207B8C39DFE8F757159EF5 +:10AA1000C32B62D1EEF3238A23286403362CA76468 +:10AA2000C875DFCD22BBB41E37C8E5C3387D3CE313 +:10AA3000CCE3AF8AAE433FFB19D551896DD6375E63 +:10AA4000B0215D5C84EF59807E1E88175CD3A8FB23 +:10AA5000F4B7FC65C751F4EBC37620FADFABF30F14 +:10AA6000DA2E01F100DE9F3C537D530CF9F3A95C13 +:10AA7000E206E647BBCEB8AA5EC1CBF5CA121CEF10 +:10AA800038A37C6D30DF4FA9625A68263E83DF8F82 +:10AA900034FF83713C029F372D60BCBB56AB9F23B4 +:10AAA0005DD6DB9413486FF5F3245983F6EAC7CCDF +:10AAB0009D877C21C5C3E388525CDB894FB05491EC +:10AAC00071FF1BD73BB7E96DF83C8749CFDD961F77 +:10AAD000978C7AC1132BB8BDABC6359EF06B18F0BE +:10AAE0004DDC3F06FD87E6F3F8A041BC983172FCCF +:10AAF00051A83E7E51517621FD5FC4783E65F4FD3C +:10AB000066D46BAE6FEC6AD5564AF60EF79B77911A +:10AB10003E292AE82F3EAC7C614179B13357DC8F66 +:10AB20007E80C682ED148F155ECAFBDF00FA08D75F +:10AB3000F77B48BE3466F1FC9B57AB11A5406F0D07 +:10AB40001E43FE54523EE835B1D88E61FF684C3A40 +:10AB50003CE125D4BFCB4388FA6A629E233D660B55 +:10AB6000EAD6404F5B3AADC487B774D61EC738B833 +:10AB70002D2CD78AFCBC21B92EBE64029497D74FE6 +:10AB8000A0383368214D1E926FBE5C793FE2DF8FA3 +:10AB9000611BA2FC8A76B1FD1827B1B0743CE1EECE +:10ABA000EFE7815C43BE2E4BC9A8F757BF7A7F2ED3 +:10ABB000AE43FB962892E34372D34DE7047678A226 +:10ABC000B6A27E73315F47BD3A9F8FD2D7D7D2F4FA +:10ABD0001D01FDAF86FFC388C3AA47FA860AED6C44 +:10ABE0004104FA8BCDEB511FDE4372312C9FF733BA +:10ABF0002E89F97311F714546A688728D2E5DAB8F8 +:10AC000086F35B507F296AE954B13F2C97CB05232B +:10AC10004E6CB9AF45C379776604CB0FBB495E581C +:10AC20004CF2644E69B07F45616E07F6F3948BF386 +:10AC30006DFCBB1C2047CCFDEFD4F7AF21778CF720 +:10AC40005790370B892E6C5D846B00EBC896DBD96F +:10AC500030BB9AA08CE627B646F63B86F4D4D1F5F5 +:10AC60002B2BEB0FE0BFD71AB730C752714A423CCB +:10AC7000CA24D94E4F4672EF540523B9571FD6AB9D +:10AC8000A19DFEDC9DCC7D00FA79A3B593F46C9771 +:10AC90005B1134A8BF411143D2A1A9E42DA993B0FF +:10ACA000D9782FB7672EAF62A22512ED3595EFCF79 +:10ACB000C1FD759B48F61A2DA785C6A989AC670703 +:10ACC000E24FB987EA4B7A982988CFB67A0EC873D3 +:10ACD000E0F584326ED73CA059E7E3F6BF01239537 +:10ACE000A081CC9B0C3AE5F688735677C448FAAA43 +:10ACF000F12CDC90B207FD5046FAF43267817F8474 +:10AD000075FA68754E3DAE134B6F217DFB94C86498 +:10AD1000F453F50BBD89E88F3D58F6FCF38E3B519B +:10AD20004EFB4E31DAB9FFEBF937E1999C96E39C83 +:10AD300003CFEE7F9AF7FCEC64E47B56F2D70282F5 +:10AD40007D5EB562BE48E92FCB1A1F427CFAFB221A +:10AD50004F2BF203D8670AD25D72B5E8C1FD8E7E33 +:10AD6000E3A880712C291388DFFCBE48DD8DFDBA75 +:10AD70008672FBB0DC232B2670FB00DAFBA03F675A +:10AD80004BDEA378CFB307ED8A200CF1D1E5FA3E74 +:10AD9000CE5EB3281CF94CBFCFC290DF9D2D5973F6 +:10ADA0006C317CFF491BEC6B85EC93146F7B165662 +:10ADB0000AF5858952178F7B0A617207AEDFEB9C1B +:10ADC0001E5061227DA272600EEA0735AA83ECC094 +:10ADD0000CE4D1E0FE0BB04F1AED9F6DE3F6C94FC6 +:10ADE000F4FEF6BB3D647FEE67E3DD5ACCF07D7286 +:10ADF00072FD8D2AE2AFDDEBC3DD6897C97CEDF211 +:10AE00001CB43B6F80F610BFA4699F939FF0DC4990 +:10AE10003BD9AFFA07B445B7A1BEF3AE85F099B9F7 +:10AE20003F663A18C12E750CD72BCAE53D86FC70DB +:10AE3000B4F8EE24F4C74FB8821FDE6C6FB2F2385C +:10AE4000668BC8E775EF72EF89526EEF9139285023 +:10AE5000892F6D4D0779E01ABEEE779671FFCEDE31 +:10AE6000E5EA29FCEE1ACAF59506C4ED19F36FD888 +:10AE7000A7CFE9F6E973F261A2974FDA38BDC0FABD +:10AE80001F263BDBCBCC8DF9E6F53F67E3EBAF95B7 +:10AE900040DB37223D0C6CC1F56139D7B6FEBDAE43 +:10AEA000D4A0F54F0306698FC1F75C5F2BA83E4223 +:10AEB000F2F202CA4B65383D2C6FBB41457A939143 +:10AEC0001EE287B7D7EFAAAD47FBF0A1576F93718A +:10AED0005C7F08B3D2F935639DFBDBA6F0B8209701 +:10AEE00022E8F1FCAE32B4439E775F312EE89BAE90 +:10AEF000B7A874111EBA08FB10E711F41535701DC0 +:10AF0000961FB43F80F3288BA2DB9284509ACB8BA0 +:10AF1000429017E817328F4B54E4BAAE18C2A164BE +:10AF200067601E8105CEEBF2832F119F954B757BD9 +:10AF3000A869DE86AD8BB9FFAFCB0CFDD4863F8709 +:10AF4000557239691ED72181C75D69EF5948FF1CC9 +:10AF50008D0FF76EEA69C3F800588708C4B36735E8 +:10AF6000C16F9B084F5F7B6C609C58EF2679D7ECD4 +:10AF700000B99AAEBDAF227EFBDB5285FB3335A113 +:10AF8000AB35139FDD2A4800F6D6327526AED75F63 +:10AF9000EBFCE62C57EF2F9B3A7C3E61BF935CF9AC +:10AFA000A894CB95BB56A8CBCBBE455CD03795AB10 +:10AFB00056935CAD1D5DAEAEC77EA5FDBCA27511FE +:10AFC000CEA78FFBB9341BDF3FE6F2359B82FDDB5A +:10AFD000C6F3E10AEFC6B280B8216B6409D14DAF68 +:10AFE000AD4BB812AEBA917555637E82CA646D06D8 +:10AFF000D25B3443FFD6E2755C7E7C5B9C6593AD8F +:10B00000E47F3FF4EAFDB27784F99AB3DAEB0B5CA4 +:10B010003F5B8C9BE23566567876E2FB9AF0104AED +:10B02000E754A84F95C55EFBFA19F56DD9D4F0CA5F +:10B03000A701FB05437510A44B31F03EC8EF1FBCC0 +:10B04000DE5356AB1DD8DEDB63BC14F773D7C0BE2E +:10B05000096188030E460BC8772776ECB817FDB454 +:10B060006763A22609308F93CB795CC7D9CE85F769 +:10B07000923F3BC94A71973FE95C2F1743FF3F2D31 +:10B08000F73E1B384EFBAE8764D575FDF408F2F031 +:10B0900035E2C3929BEC2EB58CCBC5D1E4DC6DE5DB +:10B0A0001C07819CEBC2715D43B97F2EBB823C1CA7 +:10B0B000F4D71AF2F0E0B5C9C3FEE1F290F0D05F28 +:10B0C0004C1E1EBC417BF40AF2F0DC55E4E1B9836E +:10B0D000C3E4E1BFFD39E421E0E03F10BFB2F6D2A6 +:10B0E0007C5A5EE5F3391ACEBDB39CE318C0B9971C +:10B0F000F1BB6B282794FF15E0E134AD3C1CE5DA89 +:10B10000D9368B48E7055A83D7DFB02BF40FF0769A +:10B11000FAA01D6D8476CED9D8CB42C4D03A9BE933 +:10B12000A63F4FE926BB412EA397B0EE19387FC248 +:10B13000C17FF9A390F9EDD7BBDFE91DEBCEC0FDD0 +:10B14000C10A3A47E093331E9C7B2BB6F77C99A249 +:10B15000FB0983F906C8F9DBCBF9BA93F1CAD0A78A +:10B16000403ECEC4EFFE5AE5BFC07CDF9B06E562E1 +:10B170008DF810E8089EEF1AF7A98B9F538BFF7785 +:10B180002199F4246E378C7DF9329D5B031E4A7140 +:10B19000FD83E7D654079D5B8BAD0A8E078B650355 +:10B1A0004272329E07F264E33915D0B27B3A64B43E +:10B1B0000BDF1764178E1DE6D7369D5B0B3C3FA453 +:10B1C000DBEBD0CE4B4B19704ECDB05F8E8BC9AF41 +:10B1D000DE9FC586CEA999CEA7C5EAF663737F83A5 +:10B1E000EA0D38B73668BF951766BF18C3DFE3B9F5 +:10B1F000B558B35DB96AD08F4FE7D69ED6E50151F9 +:10B200005CDC50BDB1FAB9B561E3D6EDCE544E1851 +:10B21000CA1F3AB7365D1CE9DC5A8A7E6E2DC574AA +:10B220006EED473ABF7AA93C381EB076B1C8E3014B +:10B23000172FA4F30FA3E1916B8D0734E2BB86C7F0 +:10B24000036AD47E63B91EA70EF485FBEE2F7D7EC4 +:10B25000C4E8C770FF2D7F9F7DF39747D02F694BC0 +:10B26000E271DC36FD5CB0B380D13961672EB76F17 +:10B270008626490A9E83986B71517EA3C2E3B98DDD +:10B28000730F861FA4F1DDDE6EB45FC6255818FA71 +:10B290004FD8061E876D9C7330E2A4B62CE0DF3BCE +:10B2A000F2D46C2CEF986E975519CFFD5A83E29625 +:10B2B000E24C714B31BA3D34C614DF2D615F805FC3 +:10B2C000FCB25CF7635DFF79887F45BEC730180A22 +:10B2D00070EDE45D5376E07986ACBFBFEF437C4E02 +:10B2E000DBFF5074E0F985E91D3BEEE3E9AE345C29 +:10B2F000DFB7ABCF2778A0DE7DD53C3ED0A2F7CB21 +:10B30000A8FFE82A4E97B7AE557F83EDBC5D9D9DA3 +:10B310008038D1573D32FFAE5AC5F751AD6DA01AF6 +:10B32000CF77B5B208561D83E7DCAC7AFC905F207E +:10B330007BADB2CE817EA93CE617300E1BE718ED3F +:10B34000820DA90F1D47B1949BA5F5A0D8DCBE8A3C +:10B35000DBFF6AD38E58A3A1CC5B558CE49D7DAAFC +:10B360006615F13CD0AB0514EFF88005F839F243CF +:10B37000C6ED29782091E4B0991FBF2EAB2B315F29 +:10B38000E7B7892BA3A8FE4C99FB9B337315A166E5 +:10B39000129E231C207B7A33E02DF40B36BBB69330 +:10B3A0007C975682E8C0F8CC84543ABFC71A1D3245 +:10B3B000FAAF0FD9F879F9DDEB9CC83B5973D68108 +:10B3C00013980E795452D0EFF1FEAA489A97CC0DFB +:10B3D0005257E07968F333537227E2B9A4F66577E0 +:10B3E000FEAA3C26E85CD3F805B06F92D0EE0AEFD7 +:10B3F00045C095D5B0DE43F2E2FAF4960B25B37E54 +:10B4000081171C7DBCECB330C4BB3B22390E6C668B +:10B41000BD0958598DA024F0431F6A02B67364C158 +:10B420005763D01E7F28D2733FD2C12713D4043C68 +:10B43000BF75B6954D7228B8EE953D283F12ABA268 +:10B44000DDD5909EBA92EB0B69E54CF58F402FB796 +:10B45000EBF4027441F56FC13D08DF77A4333FFA86 +:10B46000F93BAADABBF0FC453BC835B4B79E0DD317 +:10B47000F31318ADCB76C1ABA1FF473BEB621D9038 +:10B48000BFA3B5B40BFD55FB04907B900EA92A55C4 +:10B4900057227D2956F297EE8BF56AE84FDDFA9F29 +:10B4A0001319E2A376D74E92ABED6FF2F3FCCD4DBC +:10B4B0001F901FE7ACE06FA3F3841BA5C968CF38CA +:10B4C0006BF3244E86FEEFDD58DA5506EFF7667310 +:10B4D0003FA0946EE6A39E5F119DF8A4F15B89DF07 +:10B4E00079BBD2B13F4CE941FE69DD58D4B51AD2DF +:10B4F00017374C94B17FD255CE81EF5DC9E7E77124 +:10B50000DD9FC2ACAA07C73F4EB6D2B9D188E9C108 +:10B510007C12FB89F556AFFCC5C356D8C71D36CF84 +:10B520006E4C57AC7CEDE1D9B7617F06E8DE25EBC8 +:10B53000462E4F9823B83EF3FA18ED1A69737BE351 +:10B54000AC8CF6DB381FDF27D6565EAFD5A6D2B956 +:10B55000BD3F577D67374A6467B85A7DC6FC8D93F7 +:10B56000AFAF5EA39CB95EF3777FA9F2A38DB35A08 +:10B57000DF67F4370DD51036789F0EE22D49CF0ADC +:10B58000C92B257A9445EE87AE11FC1AC6476AC9C5 +:10B59000D64AC47B21F123E32CFA9EFBB5899F1A7E +:10B5A000F54B253FEE427F1DD3719641CF83382B5B +:10B5B0003DF87E8039C67E671C6719F5D68495767E +:10B5C00079897F33255A1E615FE8788BCA270FE59A +:10B5D00007DC1340F61333DE5AA19FBF58613A7F50 +:10B5E0007146976B9FAC0AC65B1D7F67E1F704FC51 +:10B5F000DD9FE6FCC5873AFD99F1563DCE0DCEFBA9 +:10B60000CDFC9E0890CF5A580CFAB70067450EAD96 +:10B610005B84BE0437FCE88016CAF1ECBA08E0FB94 +:10B62000BB8DEFB3E17BAEBF52FC822B60DDF19EA0 +:10B630008148630D15968AFAE4137765EE47FB811E +:10B64000CB34BF913F595FFD0CD71F0887B340BE75 +:10B6500006F5C94A54F73301389DB181EE3E282FD3 +:10B660009533D2472297068FCFA558AB3FC6FAF441 +:10B670007B0698F5BC86FE45C9A250BC1C73746B52 +:10B6800018FF26CD8AA7F88B1AA145C5FE69331885 +:10B69000F90723D4E0757499E89DE9F2D49EC6EFCA +:10B6A00045712649FE91EE1FD8AE9F7B68B0AA4B2C +:10B6B00090CF3578E20494CFC6BADDBD8AEF1B5F28 +:10B6C00024DFF748575AC0BC18E5BEBBD21674DF5A +:10B6D000412C9FD3413BD1CE8FF8B9919D1B8E92C7 +:10B6E000FED99A27915D61A2D4C2302E973D26D211 +:10B6F0003A1F8E5C2C3640DA57653980F8B56063A6 +:10B70000DF73288F2EF4264FC62A0FBD7A3FC5F36C +:10B71000FC213B9DEC922C7F58FC03D9098CF6F759 +:10B72000668DA7F65BF5B8FE93EB7FEDC038B1DD13 +:10B73000D3C6732C60A2DBD83C3D0EC254AF57DF9A +:10B740000F31FA79BADA05C171DBCF3ABC13564131 +:10B750007EB3EF4307DE17D1E7E1EDC75CB252F9E4 +:10B76000346D3AE19082B0C957DC37B1FA39BEC1C5 +:10B77000B4BC58C0F2B197247ACF5C31D7143FFCE7 +:10B7800048AC95E8BF669E44E3AE09F3D0FD0A35A8 +:10B790001B2DEE037C584417BBE74907B606ACF7F0 +:10B7A000B4950A7DBF63DE34BAD7D03E363D01F989 +:10B7B000C64B2BB9DE330E237652303ED2C131E96F +:10B7C0007446F6BFE1729AC74B121F44FCB753246C +:10B7D0005CB2CFCD468E97AC3A43E729B7022AB187 +:10B7E000CBC3F3CD699FAD4BEB85F67D80635AE407 +:10B7F000E1F4BF2C3DF81E8A06ABE6407901744C9B +:10B8000076919055AD0F57A7A23D7739C5E56FAF3B +:10B81000E2F4593B4FD471B887E23B0A367E487157 +:10B820008517B2B8726E5E77C3AED4EC3B1214AF1C +:10B8300062D08931AF401F95ABA6623C9C4AF8FEAE +:10B84000DBD2C5B4557C9DCCF471B99CDFCF90E7B9 +:10B850003E4FF15CB536E5F189B8DF1A2C72B5328E +:10B860005CCF78A345A0752CC9E5E7E27395F3A4F6 +:10B87000973881B3D23D56A87F40BA1E3121A4A289 +:10B880009A9ECC9B0CEF8B15D1AD2AA89F0C7463AC +:10B890003C044BE2E7C273B30666A13955D5AA4909 +:10B8A0003FB9A3E5744DBC82FDE2F135C54DD90524 +:10B8B00093A1FC9DA9FC5C937D6A17E92DB9550AFB +:10B8C000CD5B9AD74138E4933C91E8EA78557BD038 +:10B8D000FD9FB6E427AD4827B9465CD928E780CE5E +:10B8E000EAE7808C7933D623D6DA3917EDBE51F1E9 +:10B8F0005C9F8DC90DBE17F4541EA7D30B2F08C42F +:10B900002F8D7B24DBF57B24CB98574A44FAB55620 +:10B910001E2D877AECB7D965E4CF785F66207FC7A4 +:10B92000FB3203EBC5FB3203D3785F666079BC2F33 +:10B9300033387EF996A07CBC1F33301D957E7B305A +:10B94000BFFF86E787A2722B25C435CB40FE58DCAB +:10B95000C3CF1345E5765A71DF3FB62AF83C6CCF6A +:10B96000A5F175110A15B35AA7E1796D3EEFDF63B2 +:10B970005F5A23E0BB7BBF542594C9B7AEF51E4385 +:10B980007E58FCA57C14D3B078843F02F463DA8738 +:10B9900055BFF99B17F0BC3E530676A1FC1EBAEFCB +:10B9A0006480E4D137BFEF84EB8789C8C7A68EAE29 +:10B9B000279AED271FAE64FF25F79318EDFE4F4140 +:10B9C00073929D4EE6713F7B186BC1F332C0DD2848 +:10B9D0005D53C9EDAF6388B9C07329BFDF279E717E +:10B9E0007D372A9529CD09686FE67675DCB398BE58 +:10B9F000116098258A9EAA9582D2FC342FF83E5574 +:10BA00007F9F09923535FF8111E3D08C67B11E8F7E +:10BA10003B9896395ECC79EDDD9FE239A877D6DD8B +:10BA200038D9AE0CD5FFCE2BAF2709907F32F35F0C +:10BA300026E0D3B0176C91B97EB1457E8EEC09B586 +:10BA4000B091456014B59D3E1EF755CE643CCFB90C +:10BA500054528A30BD74AB83CE696E8911498E878A +:10BA6000AC73EE271B0CDBACE3644F1BD2CDF8416B +:10BA7000BAE1ED6FB1A9F1747F4A64BF581840373D +:10BA8000DDAFDE4FFC7E5B12BF3F695BD2E42BDA99 +:10BA90000DED26BE6BD46FCFAA64C877ED3ADF4DAB +:10BAA000D33638506F2C1873B5FAF83D77C3EA4B8C +:10BAB0005DAFD767A5FCC54B3AE8DEC0E507ED32C0 +:10BAC0008EF75CC70F3271FF9CDBF8641D0BB81753 +:10BAD000F8C3A7CF8FC1F6D2BADAC2B1FD4FF47363 +:10BAE00065670FEF929480722BAD2D12FA158C7B47 +:10BAF0001C16779CB7A1DFF1EEAA27A5DE8CA17EEC +:10BB0000ACDCC3E541599540F260B9BFBA8E9F0FD6 +:10BB100028081FE93EE2ECE6D870FCFE74531A9D3B +:10BB20005B3BE39B724539765A6FBF57F7C77E87F9 +:10BB3000C58707D25D5F03AFA7A6E13EAAF74C9287 +:10BB4000E75E8C1B3FF3BE05577C483F09E3F635A3 +:10BB50007639652FFA070A1B0A29BEB50FEAD740C6 +:10BB60000F2C5E6DA17D35AB2159A2F8C8DA48498A +:10BB700081768AB484B9680A2CAA153A9D507EF55C +:10BB80006A85CA1536454A78AEA0B06112F129A877 +:10BB90005712A85E4146FE73B57A0A5BE07B1796A2 +:10BBA000CF96E83C256BA1F92C69B2049DDB486374 +:10BBB000E923DEEB9CBDE023078EB7D99345B8E3BC +:10BBC0003B6C7A239E07687ED7C2AE14B76B8EC3D8 +:10BBD000323F7D79BCBE9ABCF14EAC7F4792320FAA +:10BBE000EF73DC619ACF1D83F339E504E2EBA83CE7 +:10BBF0002FE92D18A7AAC17A6D33E633CF2DE03C8B +:10BC000044E7F630A4AF27F5F90BCB720B5E48473B +:10BC1000275532F2675F9E2208540FF02D01BFEBCB +:10BC200061F85D58AE5BC0EFA2218DE5C3148D971E +:10BC3000D7E7CB912406E13696A1B1E971A4C7926A +:10BC40009CB1326B3FCAB106DC93C407346E9F943B +:10BC5000FC09B26B888E772FFBE9AED211F8BE8D4E +:10BC600055EAFE10BF6E87EDA4F4890F7AD7901DB8 +:10BC70007B4328F19B7A5B2F9DDF86DA65F24F9B31 +:10BC8000ECA4861DF8FC2ACF8F57A3DC785DEE422A +:10BC90003E63D84D4FCE54C83F59FF7F2C747F8DE3 +:10BCA000E167B3F1A1311BDEF31860E7643192C99B +:10BCB000AFE6217E6CF8D3AEF5BBEB8E83BD46BDFF +:10BCC000022682E665793C9747A9A80F403A3C9D39 +:10BCD000C9686F4DD5CFE9C79530D69880F797A83A +:10BCE00022EE4FEDD10819ED27CCAA8A6DF8FDF4AC +:10BCF0001B647E7F1F5F8754ED1DE1387CF7B7A181 +:10BD0000822C829CCDAC9A44F79C0CC5DBB889AFE1 +:10BD10008C26A7CE6C8ADF83F150BD9BD2F760FCE6 +:10BD2000D4A09CD204499888B8B37B02EEEBABC98F +:10BD3000B13E5D8EF5BD72C758925F8F73F9659401 +:10BD40007F73FDEDE148C77D97A71CC3F321BF2E8C +:10BD5000B1B86B189E0B1B38433698DF7EF5482D23 +:10BD6000F4FF0778480AF0CD1F57B31F6AE847D59C +:10BD7000FEC1D606E57F7A315CC1F119F76E7D1CF4 +:10BD800032B0C613503FABE07A26ABD0ED55157CF0 +:10BD90007FA5B3CA3974DFC06CC69A1290047FFEC7 +:10BDA00008CE73FABA30C6E32BB4CD3F44FA7B51C8 +:10BDB00052D0CE7B7FF9FB0FA11EFB83F2C8BD7171 +:10BDC000F0DDFBD5E1080ED8E92DFF3215E7E1B42F +:10BDD000AD6B6AA40BE38ED958F2AF3EE024FCCEE3 +:10BDE0007ABB2E92DEB82599FCE839B593C69E2120 +:10BDF0007EC6FD624B2DEE7809CBD75B18EAEB7D52 +:10BE0000CD7686E913A5615C2E97C8C7306E68C9E8 +:10BE10008369A42F44E8E3596A6795C45FBC2D5336 +:10BE20001784E1B92299EEA331D6DF523BA90EF96E +:10BE3000537146E5187CEFB70ED0F9BAE654DDBF72 +:10BE400090CAF182351BF606D09DF5D917783C8152 +:10BE50007EFF83F95E87E62C8E17FC9576135EE8ED +:10BE60006943FDE64075305E68B6B570BC90D69FFC +:10BE700083E706FC3E91A11E7A087004F6A7364CB3 +:10BE80008D473FD016C6F77D7485E7E60AF457C89C +:10BE90005217D269D86ADD2F181345FBA8D1C6FD09 +:10BEA0002CA3F10FF4B3D0F92F9D5F18FEAE4CA96F +:10BEB000F7009E8B6C7C34CC0DDF423BDEE9D84E24 +:10BEC000E3B2BF2FA0F30C267E66F8B546F37B984D +:10BED000F7AFB7CB49B8806961AC2FC86EC2F32FFA +:10BEE00094A4D0FD00CCE14A47BE13ADF7F7C4E5FA +:10BEF0002974EFEB979723588D1BDD4795C464A2F7 +:10BF000075BF2EEAF95CEFE77C2F5A8F0B8A7EBD56 +:10BF10008EF4FA530F31B7103F549EE9E53556A918 +:10BF2000E17D93D1FA3951B37DFFE44C7735C617E3 +:10BF3000D4265B2B37BB83BE1788FFEB764FEAA76F +:10BF400030BCFE093A1E87ACECAF47B07F99D37680 +:10BF5000C564DF4DE7FC3786197F01F62F0B9EFB8A +:10BF60005205E4FBA7721CEE6AEC8B67143EAEF33D +:10BF70007FA39E18D9C4C74DDF19EBE15862233C5B +:10BF8000D6BF5120BC9A61F3EE45FDB5B82AD48DD9 +:10BF90002A54F10B8C2A2DD204F2EFE63470FC56B1 +:10BFA000DAC4CB977EEEA578C2A2AA30372E6BF109 +:10BFB0006FE5C50590BFB6CA49FAFB69BC0D19F912 +:10BFC0003394273BA9C67E89FAF41A7DDD8B5FFF87 +:10BFD000651DAEBB717EA546A7FFA72AB8DFB1B726 +:10BFE000C0B6B600DF594ED2FD62C553D8783CCFFB +:10BFF0003038AE17B85E0A729B9F47D182F5D0B534 +:10C000000DC1E962931F786745F0BD16FB2B58D030 +:10C01000BD68D8CFE8A86FDF0E73F17D3BC1DA238E +:10C020008EE49731D6C3F077B74E35FCE53D2AFE56 +:10C030000E45F474BB2ECFF8BD6986FFFC90E4AECC +:10C0400046FB416BB66300EFB10A63BFCDC6F28316 +:10C05000F756E9FEF4D1EE438B36E9E561A6B4C1AB +:10C06000375EAB083EEF796AC3148A1F36F88379CE +:10C070003CC67D66DFF4DE32E33E34E3DE32635EEF +:10C0800090B6705E4EEBF70B9CAAEDA338830B5570 +:10C09000204DC98EF218D9654EEF12F87968DD6E21 +:10C0A000E3D5E7C95B75D35C944347611E51AFFE8E +:10C0B0004BDB53EE31DB539842F691423C9F8EEBC3 +:10C0C000AAD393615F29DC60398DFE8C42F33D6316 +:10C0D0006DB6A134435C109C6FEC9FF315A67BB743 +:10C0E00075FABB1AFE4AD4E363CC7E9C7FECD85928 +:10C0F000B415E6AF7F5702DD6BEB5C23EAF2AE923C +:10C10000E2C3CAFC8CEC0F7FAE789444EBC8F11705 +:10C11000F21AE18AF12A865FA9EE313D8EE7B13F3E +:10C12000CDFDD3578BE33931B6E57BD3A0DD1BDEE4 +:10C13000B5B835982FCBD2CEF7D0CF1DD76371DFEE +:10C14000CD86D6E994C2E9DA1AE9A0735EADAC27D0 +:10C150009EEB0FDE6EBA3F7E09BF9F18E659F7FFD0 +:10C160002F4E441C7328B27709E2850EF4FF43B9C1 +:10C17000DDCD4290FF3FCA17E5AE86F49C351CE743 +:10C1800015E772FFFF23B1F9F4FB0BFDAD3C9EB840 +:10C190003FAC326141C65039BB68FC1E81222C9CE9 +:10C1A0008071C90AE5CFD4F307F542A7AECF314578 +:10C1B00020F9A3977F0AF905F2FB663BF95BA272AF +:10C1C000B91FC0FAB8FD00E2A4B96B14C37942E309 +:10C1D000D9D95C467E00F83E01E9C8883FE86BE2A9 +:10C1E000F1078094288E636C9B9DEEAFEEF34DCEED +:10C1F000B919F54B3D1E61E7AECF04BCA7B2EF2CD9 +:10C20000540269ABD85B8D763C26B24AC4A97DCD79 +:10C210009F55A3FFA71DE43BDA21FB627B0967B4AE +:10C2200063FC818C717953DEC2F9FB224F247B3190 +:10C23000489C6EB4BB16AB0E8A376CCDFBE038DA87 +:10C24000F75AB3246242639BCC74D64BE31F9B27FF +:10C250007649402763F57B8AC65E25AE6037E05A93 +:10C260003AFCABBDFCC3AE54680FFDEE31747F22C7 +:10C27000F78FEFE2FECFD1FCF89F98E8D45B154C26 +:10C280009F43F53FF722D64F331E706F39FD059C53 +:10C290001F1F9B77A01AE761C8BFC8F309F7003DCD +:10C2A00076C072204ED2142BCDABF93C73B47E7E97 +:10C2B000DCC04786FF798BBE3FEB06D79DFBAF07FF +:10C2C000CFADFB44FA0EFD00B8FE4F19F7A4950759 +:10C2D000C707E21FFAABA391BE60FE1E5FC3FDBAA3 +:10C2E0004FACE1B8387AA9A4D7E3A67ACC386D343C +:10C2F0001C67F8AFBFAAF03CB566EAD03975E8CF45 +:10C3000049B42F2436D9E93C64BDE0AF46FF30EC98 +:10C31000D14A8C6BEA73FAABD12E0898665D35BFB3 +:10C32000BF83FCBF34BFD0DF0EA7BE0F5A05DA07AC +:10C33000C3E8A13C384EB304E4018EAB100905E616 +:10C34000FBD09A141AD772FCBD12C2914A2DFA2959 +:10C35000C6FA846968AF2971254B91F02C8C11EADB +:10C36000F07977D2791BD9BFC7680EBC97A2A3D149 +:10C3700042BF6BD511D6FB33BC2F526B0C23FDCBC8 +:10C380004C476FE87CDCF0D3220588308E34619016 +:10C390004ABC22CCDB0E3DD1B386FB7DA3F33C39F6 +:10C3A0004E68E774FDB8C9D8BDB71128C5D2B80B1F +:10C3B00046E2D3EF0E6F87EE77E9A7A101DF6F8B1F +:10C3C0009C599881F50B069D682CE09C7354AE3CFB +:10C3D00013C7F7FE1A598F573A3D09F75D4724AF47 +:10C3E0004F15E5990B02EC5EEF1BF2C9C1CB3D2561 +:10C3F000542EB984EB01F800E3894A4CBF0F54D89E +:10C400002668A1E1C3EF8959AE05A7FF55A73B33C5 +:10C41000AEB71A7C93F1752FAA4D3E60DC6388E9B4 +:10C42000C43C85D2E25A637C9CBEA29A789C749FDD +:10C43000CE4F87F30D8570EFD80661327EFF6F46D1 +:10C44000FBD6D3A49F1681DE83F8A1F005FF2BBD98 +:10C450004A00FF66DC3F4AFB05719C77BA13F9F38B +:10C460001FF4F935E6E9D0BDE3C97E772477B2132E +:10C47000ED0ECB1E4EA67B0ECCF37035BDC6CC0F99 +:10C48000A2F282FDA3D6B58CFA3DD6E4DF1F8A0B5B +:10C4900090286ECF880330FCFAFB3E9A75D09847FF +:10C4A000D46FEC7A0CF377D7D8A8BE7D593BC9BFBF +:10C4B0005F0F7ABC40760AFEBB2A6C9AA4A0BE71BC +:10C4C00038F22BBA47C0D766D98FFE7E63DCF62CD4 +:10C4D000DD0F9F34B27FDFAED3A5A8B4907FF662A4 +:10C4E00012FF7D9556CF42E748F861B4FA52D772F1 +:10C4F0003AACDD65DCDFE6A5EF5B0B16D2EF01A6FB +:10C50000699F53FCC16EBCE70DDA2B58C97FEFE879 +:10C5100002DEEBC602FDC195FCF7039706DF5B6008 +:10C52000B46F1BEE0F9EBC36167F7FC84341293681 +:10C53000DD1F7CAD38B07BEA5374BFCACE4522C53F +:10C54000F9EE9CFA03D2FFDBC788E4B76C9FB1AE6B +:10C550000771C457B156C237CE96CFB64D84744AD0 +:10C56000968DC6C1F4FBEF0C7D34AFA9CB12818947 +:10C570003CA6DB1734BB4872469344FADD0CCD86EB +:10C58000CF3CB7A045A3BC4D2A7FDA128067ED8B64 +:10C590003E9845DFCFE3DF875DD2487E3899AAE336 +:10C5A000A55E8A9F0CD5E3E85AF38B1AD12F6D5BF9 +:10C5B0003099EEC9786F2A3F17678BCD8FF406F05C +:10C5C000A74E7D3FD6DBD495146FB091D3A1FDEF7C +:10C5D000BE3A518674B43084DAEB68FD617CE0B910 +:10C5E00032E14189F3BB657CDF9E1259796750BE09 +:10C5F0009DD65D7890EFD7EFADE47C601CE01A0526 +:10C60000E93C3F6B339E27D20AF87656ACEABC3938 +:10C61000D05EBB478C413A8B9DBA681EE2B8EF2DC5 +:10C62000CAA129B4361F9E8DE90E37700D184F87A9 +:10C63000278FFA7BD11362C5F53825F1DFB53A357E +:10C6400076AEB53A80CEA507D382F67B5C95187C92 +:10C65000CF8F5D5D478BB489D1BD1BB3AB783A05F5 +:10C66000C025AE7B4AFE6C4AC7F924E684B4A3A079 +:10C6700045C3F81347AA770ACEEB914889EC5029B5 +:10C68000059C4E7C5831CA1B8F8BF4FD14DFDC16E1 +:10C69000FC3D8C948F2C0CFD18B5364F22D24D6D7D +:10C6A000A495CE6FA764F07909CDB2EDC771BC2116 +:10C6B000F52CC5EFDF789CC709ED59CBFDFA4E4547 +:10C6C0000CBAAFC881F67C58F7EEE669BF42BCD61B +:10C6D00031D54E7ADF1DAA87D277144830D1A0E732 +:10C6E00031EF2EA4A73B8FDB5957F215E97E447A30 +:10C6F0001CADFCCE821C27D203E0F5FCFB701D2F85 +:10C70000F17B15EE18E8213A8DCE55E877467C731B +:10C710003D89782E2A4BA783D6984F6BF07E752DD6 +:10C720000BE818D7B175F13C9C1F5F9C752A967F6A +:10C730006491A8A15CD8D7BCB803E36A16ACB5D2A3 +:10C74000F8F78579E6211FDAB7C8CAE36B62DC899E +:10C750000B02EC6FEDAD736FC67D0E74AEE3BEEFF2 +:10C76000BE84B86FE67F84D0FCB6AF6414A7D3EE66 +:10C7700074737FF5546E8F457B03DEBFB42FC1DA2F +:10C780008EF6869F373FDD8D742FCD28E3F74ADD87 +:10C7900068D8C739DF32EC0F0B74FE687BF7722D57 +:10C7A000D265BBFE7B3987A4815A5CDF7DBA3D62CE +:10C7B0006753D43F63BCEECE780BE1F3EFCF0EB6F8 +:10C7C0003F20EE433D3845D783EF1CB006E9B7CC98 +:10C7D000E5DE8CE3FE5ECE748A534B31E9BB89A65D +:10C7E00074CFDA6F7D2FD5C76B39FE20BA7E6F23E9 +:10C7F0003FEFB7CFE17D0BEF1F6BF78974EE6E67EC +:10C80000D3C2F9A887B47F6409E2C3E6E7311DA764 +:10C8100077F81692BD44917B6B911E3B36F0DF0793 +:10C82000FAFE1D85F3B09EC42AAE7FD4C3FE40BC81 +:10C830001FD316CABAA640BA75F12F70BA3C1E5162 +:10C84000C3DF01F2A88542201F7A7F138F4B6D6FE3 +:10C85000E2F58FD60FA3BE7D55BC9CCF33396CA4B7 +:10C8600073B21FE9F50D96930612D03E6DE687E68A +:10C870007A8DF4D2B52944E73E4F11D5BF336B8E84 +:10C8800053C918923B77E4F5D4A0AFED3DD63B2BCE +:10C89000F0DE2143EE0CF2A327747ED4C4D3E36010 +:10C8A0003F237D8EF32C8C447A48CBB7CA08B11D48 +:10C8B000BE16D519C08F76867977A1FEB76F818BAA +:10C8C000F6C94E9DAFEF5C9028A05E7524F287C438 +:10C8D00027C725C509589FF22097CF503FE7633EF1 +:10C8E000D1EF14302E98C7E95C043E86F86967647E +:10C8F000D661942FD6099CEECDF366E64F4E1C4FC1 +:10C900000AF223E067313A3F827ABB979452FF0CD8 +:10C910007ED501FA3DEDCFA9366AA77DC6E9D5D807 +:10C920008FAFFE184272E84ED653338ABDF0BAF884 +:10C9300095C11F3AFFEDBB2FE1B93D635D1E89BD77 +:10C940002D117F17B83D6C604990BF485F973CC67A +:10C95000ED42E6F3298B1EE47681BDABD5990F62DB +:10C960005C186BD1D0FF8191B3784F6A3DD37227A9 +:10C97000C3B89CA92AC565D5A7F1B8AC7C7DDEDF1C +:10C980001ED3427E8F461DFFA6791D642F684C8AF8 +:10C99000A77B94E68BFB539F84FCE57A3BC753AFA0 +:10C9A0001CC7E6C2780AA0C7101D0FB9AC2D0CE752 +:10C9B0002F24D5F4FBCCA93D73F0E6C1B72AD435BA +:10C9C000D8EF131FB43890CE1B53173A709E26A68B +:10C9D0006D7720DD36766ECFC57B0A8D73D6770DE9 +:10C9E000FC22E49618EC9F750ACAE95BD77A673E89 +:10C9F00018205FED69EBE9BC756398A1E7F84B700F +:10CA00003C85E909D981719065FAF81FAEF0E4E33D +:10CA1000F7F3E300C84CC6796186FE532906FFDEB2 +:10CA2000473EF673B4DFFBC8339DBB31CFCBC3FAAF +:10CA3000FCDD52A16EC4F636623BE45F6AA1FD9054 +:10CA4000C944770DE9FFC17EA4617E1F935FE98130 +:10CA5000D7A63BECDFC22F3C6E8DBA05C73576B545 +:10CA6000A71EFB551BF94BFAFDDC6BF517BF3D46C6 +:10CA70008D477A357062ADAE7F1ECA560B02E978DB +:10CA8000BF3EDFFB75396C2DB0E9F705CC9747E267 +:10CA90009B73567B7763BF8CB455E6F705CC97F84C +:10CAA0003C0B30D69A84A1FDF316AB6C5A928CE7FE +:10CAB0006715BE5F7EF4BE0BED00F3257F6A4BC6A3 +:10CAC000D5DB5B3BAC3D95F4302583FB576A64FEB8 +:10CAD0007BA9AAADF73D05D28580A7E85E68D37E25 +:10CAE000349E68DF0EE44768DF0EC47D68DF0E4CBD +:10CAF000A37D3BB03CDAB703F3D1BE1D98FF708530 +:10CB0000B70BFB8B76EEC0F768E70EFC6ECA6ACFF8 +:10CB1000612C77F79815744FC4D315EA115CE7EBD5 +:10CB200090CB6F633DA5333DB4DE5B62F5757E75DA +:10CB300015CD8F2D366A5260BCF5459DDE615E3F96 +:10CB40000CDC9FB6183EAFB5B248F74C2E0E13E979 +:10CB5000BE6CE3DEB1D1E8ED0EDDAF7F27F0157CD2 +:10CB6000CEBC144ACFBB2E39E9A95E8AA667F6A5CA +:10CB7000487AE65CBA919EB32E25D073F6A514923E +:10CB800093732E25D373EEA55BE879F7A59BE999FE +:10CB90007B690A959B7769123DE75FBA9D9EF75CBA +:10CBA0009A41CFBDAB3DFF97C6BFEB1117CEE3B89F +:10CBB000359EDF61BA5E006D3A85F6CFEF1F24BB6C +:10CBC000400F237BECEB6A01F10391FF5ED6F95530 +:10CBD000DEAF701E86DD77261FFD23EAAD39152AEC +:10CBE0007D7F74B5F7DFA99CC3E1B006C685C4306C +:10CBF000A2FFD40AF53FA89D6BDCEFFF0F9076747F +:10CC0000D0008000000000001F8B08000000000022 +:10CC1000000BB5587B4C1CE7119F7DDCDD5E728FED +:10CC200085C33604701703C6AE215E6CC010616701 +:10CC3000C158B622FEB8D22A3A2A5B5E886D55707A +:10CC4000B50E14B554757CEBE0D4801F1C21ADFDEE +:10CC50004F95935BBBB594BAB46A555CA5D2963A2E +:10CC600029F48F0A5556AB4A5173562895822D41A7 +:10CC7000AB287195C89DF976973BEE78B8A97A965E +:10CC80003D3BDF63BE99DF3CBEF90C20C2FC0E6069 +:10CC9000BFC702FEE32B0068C26FFA3D9F4B010C39 +:10CCA000804D00B7CB168F857D007FA7A12280CA5B +:10CCB000C8596F871F60738CB3E6B703CC56E39CEB +:10CCC000B8E8075CF7FED18E20517823B4AA7CE146 +:10CCD0001301CC509AFF41AF02508FE3A20AB28FEA +:10CCE000E6DD6CFE70E98D13500730BDC3AB0965FE +:10CCF000B972F6F6EAA5B1FA34FF8202DA33F90026 +:10CD000033516D2B8DBF1C0D2B44C125BBC3A8EF28 +:10CD1000FBAE144FF2D02A59280658EAD1ABD8BC42 +:10CD2000A629059B0138B20F5581B765F39B080D05 +:10CD3000F407D41115E0DD5E7D175B079224E1BA9C +:10CD4000E3168470FC0CE7D6C9CE9498372FA1DE89 +:10CD500084EB2A38A6F15C897F6B5466F839380970 +:10CD60009C852FEABD8FCE3345D4BB066050F9A514 +:10CD700086668177D1D082C0EC6EA679CF27619389 +:10CD8000F817CB0E024A829B516D7F0CE57D189FF0 +:10CD9000840F2A71207135FC5903C0493A10CFEB3A +:10CDA000414B277CB97AD5F4B7B6D1BE5307660B91 +:10CDB000C9CF97FDB3852A51174468FD1F4A6723E1 +:10CDC000E18C7D9198C0FC158EF18CCEF85EBD8B08 +:10CDD0005FD05C312B109D89EA619277A064F120CD +:10CDE0009924CA20EA181FB75B500E5231E232AACA +:10CDF00002C8FFFA05B9BB3A579F43BDDD11DAEF10 +:10CE0000F0A2ACBA69DDAEA8D6C9FCF0B9F1D6BAC9 +:10CE100048EE93C67D863F7A689F211ABE3DB8B51D +:10CE20004BE6D511E6877094F499565EDA44F62104 +:10CE3000FE5FFF9CF8BF6CE1AF16123E8365887BF6 +:10CE400035852D6F6C61387D55EE5A65DFE9DEAEB4 +:10CE50005732E3DF55A0715D94876F6B118A73E0E1 +:10CE600051CF3A16E783CCEEAC38E7E4771F710177 +:10CE700016DF1718AE18DE22EAEBB2E3DB55002C02 +:10CE8000BE2BA2DAD0FF86BB1DE736EE4E3DF91B66 +:10CE90002D684AD79324D593FA75EAC94088F923B7 +:10CEA000B79E7060EE5DAF9E886C1EFD789DECD0E5 +:10CEB000C435EBC1AD27AC073F6178FEBFEA816D99 +:10CEC00067E5DD336FA6F0DC8F0C11C88F466BEC85 +:10CED00047C41BAF7AE441A4579F3EFB660AC707CD +:10CEE0004449F6A82425B68FEAC5781C6B8787F1DC +:10CEF000BB19EF824EC2DB03C7825FF2A7CF9FA6AA +:10CF0000FCC5F342F2953B73215A8F7517F50990D2 +:10CF10003EE5C497C8F34FA7F57BA3579B217C42FE +:10CF20006E1DB6E3F9633BF9A4817559F1C99D27DC +:10CF3000508F0B1512CB8BD0E117C120BC827CB275 +:10CF4000B28C7627A7CB707E78270F23CCEC844257 +:10CF50007A0C97E2F73334C03D32ABE9748907921B +:10CF60005BC2274770DF6009FA7D95FAE0D0D7C829 +:10CF7000CEAAB5E785A21389169497F0892AC191A4 +:10CF800068EB1E6A413DBC453CB3C94DF439FAFA21 +:10CF90006CC014C9D58B12E1E5DD6FC5DB5A72CFC9 +:10CFA000DBF82ED7A70268A1FC0750651ECFBBE8AF +:10CFB000AFE046B8F4FCC77D565C5FF4DB795DA05A +:10CFC0000187EB2E943634508C48B206F3789E5489 +:10CFD00010860F905EA89422495C7748684E90BEF8 +:10CFE000634A7E9E87E210B4403DE6E777ED785BCA +:10CFF000EAB3EAEF787CE8CE1C26EDE5788251D4DE +:10D00000E31CE1E86B079570F457B8EF0BE8D482A6 +:10D01000765CE7C41BFE0DD4E17A29CD0FFB97F3B4 +:10D020004E22FB87940E30F07C7F239FA45A38DA7F +:10D03000F84F36AE404AA2FC196D5CDF3F576C9C3E +:10D040005E8F4B2BF05A9EDF9A2A5471FF95FAD4CB +:10D05000B59750DF6089A41EA1BA6336FE5540FE25 +:10D060004AB31B4698DD2A47E785DAF8FB1EB4630E +:10D07000B409F5A8CED5C333F50814E483E22290B1 +:10D08000DCA0F227D050DFEFD97A1CAE8B818CF672 +:10D0900004EF09490FDA138CA068E437D7415241F5 +:10D0A000FE5CE59F4DAC79307A0C600BE1E1B2EEAD +:10D0B000435FF3FC7BF02C5238DA427A16160BE011 +:10D0C00069C4055FC17C41FC22F8E7F136DC13B18D +:10D0D0007807CF1064F065B4DFCA2F8707E1685086 +:10D0E0005F27CE06DEF3BE7337C35FCFF5F90BE6DD +:10D0F00077E1470334B0FE6D83FD1FC7A577EE626D +:10D100003C8C6DE0A74BF14686CF585C6374347E4F +:10D1100084E5D54DBAC75CE975DBE9FE4239C3AF9A +:10D12000CC420752BFF92DD886F9A2F7597DE0CD40 +:10D13000B8C465AEF75C038EF0C7AAC689741F5DDC +:10D1400003F506FAF3F94F7F3AB48DF2FC5EF91E4F +:10D15000AA07CE7A478EC3DFB2FD36B2A383D97950 +:10D16000AB8D3F4279714B4C3C95BF8E3D5FFC21AE +:10D17000BFC20FCE78769E8C73A0013656E37956E7 +:10D180007DBC6C0EB7503CC8F7CAAF7B33F2B7D743 +:10D19000CEDF105D15D48869197E45BF8FD6A28970 +:10D1A000BB37CE2F47DED87ED80AD8B88D1E72B3D3 +:10D1B0003C0F1E908B3A32FC38659F379667D58BB3 +:10D1C0004BA550D4519D3B9FC8B3FAB38417223F5F +:10D1D0005F058FA93E81E17989B3D639FE4BCF4BEC +:10D1E0004CCE945D47428AC6915F429AB438A89269 +:10D1F000BD0F8C39C28387D896C65CFBC4440CC271 +:10D200005467309FA8DE65DBEB834BB3D45FD0EF70 +:10D2100053AC5B7E56EA911EF92398743FE8BED862 +:10D220006194EBAB5B9937FF6D5E7C9FF282EE29D8 +:10D230002F78ADBC68E75F43BD3FAAC3BAC5EE1FF8 +:10D240009D0FFBD7CE0FD8B77EBD1FDDE09E090630 +:10D250001675A805F8C5D25F06CE97309CD9BDF6E5 +:10D260009BA5B90103E5726E6DA20FFD2081D5CF9C +:10D270007735BB0D01EB099C773D483976601C057D +:10D280009F82AEF02A7ECC77B74EF6515F22A21D68 +:10D2900035B97E74E88C9D3F4E9C3BE318B726EC75 +:10D2A000C9F59F47E10DAAA7C395DF9057C3FB744B +:10D2B000AFFEB02FA3BFF494681CEB6F84763009E7 +:10D2C000DF30307C8D298E5BEE778A293F50D50682 +:10D2D000AB95217F6F0183A3C96CBF1541928D1758 +:10D2E00083C901F61BA59062FC17B073255A060A84 +:10D2F000A3E5A0F1345F897E24BE0A0C46774292F2 +:10D30000D15D60B2F91A48319E90A23CDE6D02EB0D +:10D31000236A4111687C2F6802ADAB079DF1FBC009 +:10D3200060B409F43B7374BFED3F554BF7F83F9C75 +:10D330003ABB1C4F4F566797FA8019BD967FFEDDAA +:10D3400067F55B826B2242F7B350E32664E0629993 +:10D35000959FD9EB17EDF795D79590591FBBDCAF8B +:10D36000F44F9A156BEBE3D061973A4DE70CFB79DC +:10D37000A03E2DDD6FF54CFE36433FEA0B59DF43EF +:10D380007DE0DE5C391BF585E3A2E6EBAFCF1DBF88 +:10D39000491F4DD4576B72FF26F2335A8BFA481A45 +:10D3A000C84613F1098EFCE4FB1AF2452C0E58DF37 +:10D3B00012D041A579ECB38BFB59104DB07D831889 +:10D3C0005723B5695ED76DFE5AFEAAEF82B4FE867A +:10D3D000158CEDB14EDAE7BC8B02FDFA76A6B706E6 +:10D3E0008A98F92E3A8AEFA267995D55342F3B79D6 +:10D3F0002BF90CEAA3B2F31694D23C8A1727FE3F0E +:10D40000A47B10DF7FB7CF9A6ECAE7A839E3A6BE28 +:10D4100024FAE39FB9E93E3C6EBF2B7BED388133A4 +:10D42000F58C77EBFC14E9B730517E9DE2766142D2 +:10D4300060FDC9C2F9B2EBA4DCC25BFFFADD637A1E +:10D440000FE03C7B9BC239161F6481D440416FE9D9 +:10D450000FED9AD6C4DE7FB048EF15E71E5D78EB7E +:10D46000CBD63D3A21D8F7A8F950A823BE4AA13817 +:10D470003CF9F8207C9BF61D94D41BB8EFE4D587CB +:10D4800035DD1971997DAFF28AFC9D5F913EAA5BF3 +:10D490001D91D3F8E4E02FAFBC2FE947EF26475F9B +:10D4A0005E099FBE4372E85DADACED4771C2739FEC +:10D4B000FCF2C005935C7015B9597ECCF653A03FC1 +:10D4C000DC4DFEE4267ECFFC9BEDB78B76BCA260E4 +:10D4D0008EFC9D6736B17E526854350DF1CA6BD310 +:10D4E00020138F9ECED65E8ACF3C51E6283FF314A0 +:10D4F000DB9FD57B56FCFFC2A97E7E455FE3C4E37C +:10D500007F00F33D945E90130000000000000000D7 +:10D51000000000400000000000000000000000408B +:10D5200000000000000000000000002800000000D3 +:10D5300000000000000000100000000000000000DB +:10D54000000000400000000000000000000000108B +:10D5500000000000000000000000000800000000C3 +:10D5600000000000000000000000000000000000BB +:10D570000000003D00000000000000000000003C32 +:10D58000000000000000000000000000000000009B +:10D590000000000000000008000000000000000083 +:10D5A0000000000000000000000000000000000C6F +:10D5B00000000000000000000000000E000000005D +:10D5C0000000000000000004000000000000000057 +:10D5D0000000001800000000000000000000001C17 +:10D5E00000000000000000000000001C000000001F +:10D5F0000000000000000013000000000000000018 +:10D600000000003E000000000000000000000001DB +:10D610000000000000000000000000020000000008 +:10D6200000000000000000010000000000000000F9 +:10D63000000000100000000000000000000000508A +:10D6400000000000000000000000000000000000DA +:10D6500000000000000000030000000000000000C7 +:10D66000000000AB00000000000000000000000807 +:10D6700000000000000000000000C00000100000DA +:10D68000000000080000C0080010000000000002B8 +:10D690000000C000001000000000001000009C0806 +:10D6A00000040000000000040000C0800010000022 +:10D6B000000000040000C08800100000000000020C +:10D6C0000000C0800010000000000010000093382F +:10D6D0000001000400000001000093400000000071 +:10D6E0000000000200009348000000000000000855 +:10D6F0000000934C00000000000000020000935066 +:10D7000000000000000000080000969800400000A3 +:10D710000000004000009358008000000000004816 +:10D7200000009458004000000000000800009468C9 +:10D730000040000000000018000630100028000023 +:10D7400000000028000099500008000000000001BF +:10D7500000009951000800000000000100009952EB +:10D760000008000000000001000020080010000078 +:10D770000000001000002000000000000000000871 +:10D7800000009BB80000000000000008000000013D +:10D790000000000000000000000000020000000087 +:10D7A0000000000000000003000000000000000076 +:10D7B0000000000400000000000000000000000560 +:10D7C0000000000000000000000000060000000053 +:10D7D0000000000000000007000000000000000042 +:10D7E0000000000800000000000000000000000928 +:10D7F00000000000000000000000000A000000001F +:10D80000000000000000000B00000000000000000D +:10D810000000000C000000000000000000000001FB +:10D8200000000000000000000000000900000000EF +:10D8300000000000000000020000000000000000E6 +:10D840000000C4C000000000000000200000C4E68A +:10D850000000000000000001000060000020000047 +:10D860000000002000007300000800000000000815 +:10D8700000009BF0000000000000000100009B90F1 +:10D88000000000000000000800009B930000000062 +:10D890000000000100009B9100000000000000015A +:10D8A00000009B96000000000000000100009B9714 +:10D8B00000000000000000008000000000000000E8 +:10D8C00000000000800000000000000000000000D8 +:10D8D0000000000000000000000000000000000048 +:10D8E0000000000000000000000000000000000038 +:10D8F0000000000000000000000000000000000028 +:10D900000000000000000000000000000006000011 +:10D91000000000000000002000009B9800000000B4 +:10D920000000000100009BD800000000000000087B +:10D9300000000053000000000000000000009BE019 +:10D94000000000000000000200009BE40000000056 +:10D950000000000100009BE5000000000000000145 +:10D9600000000009000000000000000000000001AD +:10D970000000000000000000000000440000000063 +:10D980000000000000000001000000000000000096 +:10D9900000000050000000000000000000000089AE +:10D9A00000000000000000008000000000000000F7 +:10D9B0000000000000000000000000000000000067 +:10D9C000000016C800000000000000080000200849 +:10D9D0000010000000000010000020000000000007 +:10D9E0000000000800001AA800000000000000105D +:10D9F00000001AB800000000000000100000000144 +:10DA00000000000000000000000000020000000014 +:10DA100000000000000017E0000800000000000106 +:10DA2000000017E10008000000000001000017E2FC +:10DA30000008000000000001000620780038000007 +:10DA400000000038000016F0000000000000000296 +:10DA5000000016F200000000000000020000A040DC +:10DA60000000000000000020800000000000000016 +:10DA7000000000000000E000002000000000002086 +:10DA80000000F30000080000000000080000170874 +:10DA900000000000000000D80000174F0000000048 +:10DAA0000000000100001727000000000000000136 +:10DAB0008000000000000000000000008000000066 +:10DAC0000000000000000000000000000000000056 +:10DAD0000000000000000000000000000000000046 +:10DAE0000000000000000000000000000000000036 +:10DAF0000000000000000000000000000000000026 +:10DB00000000000000001788000000000000000175 +:10DB1000000017C8000000000000000800000051CD +:10DB20000000000000000000000017B0000000002E +:10DB300000000004000017B4000000000000000412 +:10DB4000000017B80000000000000004000017BC2F +:10DB50000000000000000008000017A800000000FE +:10DB600000000008000017D80000000000000002BC +:10DB70000006000000400000000000400000C0005F +:10DB800000400000000000400000C02E00400000E7 +:10DB9000000000010000C000004000020000000181 +:10DBA0000000C00100400002000000000000E20090 +:10DBB00000200000000000200000E2040002000835 +:10DBC00000200002800000000000000000000000B3 +:10DBD0000000E20000080020000000040000F50042 +:10DBE00000280000000000280000F640001000009F +:10DBF000000000100000F64A0010000000000001C4 +:10DC00000000F6C000200000000000200000F6C068 +:10DC100000020020000000020000F30000400000AD +:10DC2000000000400000200800100000000000106C +:10DC3000000020000000000000000008000011A803 +:10DC40000008000000000001000011A90008000009 +:10DC500000000001000011AA0008000000000001FF +:10DC600000004000002000040000001000005900E7 +:10DC700000300018000000100000590800300018A3 +:10DC80000000000200005700000800000000000132 +:10DC900000005701000800000000000100001158BA +:10DCA0000000000000000001000011600000000002 +:10DCB00000000010000011AC00080000000000048B +:10DCC0000000400000200000000000200000530081 +:10DCD0000010000000000010000000000000000024 +:10DCE0000000000000000000000000000000000034 +:10DCF0000000000000000000000000000000000024 +:10DD0000000000000000000000001470000000008F +:10DD100000000001000014B0000000000000000836 +:10DD20000000005000000000000000000000147817 +:10DD300000000000000000040000147C000000004F +:10DD40000000000400001480000000000000000437 +:10DD5000000014840000000000000004000014888B +:10DD6000000000000000000800002AF00080000011 +:10DD70000000008000000001000000000000000022 +:10DD8000000020080010000000000010000020002B +:10DD9000000000000000000800002C7000080000D7 +:10DDA0000000000100002C710008000000000001CC +:10DDB00000002C7200080000000000010000415823 +:10DDC0000038000000000038800000000000000063 +:10DDD0000000000000002C440008000000000002C9 +:10DDE00000002C46000800000000000200002C5437 +:10DDF000001000000000000400002EB00000000031 +:10DE00000000002000006000002000000000002052 +:10DE1000000073000008000000000008000000007F +:10DE200000000000000000000000000000000000F2 +:10DE300000000000000000000000000000000000E2 +:10DE400000000000000000000000000000002F584B +:10DE5000000000000000000100002F9800000000FA +:10DE6000000000080000005000000000000000005A +:10DE700000002F80000000000000000400002F843C +:10DE8000000000000000000400002F8800000000D7 +:10DE90000000000400002F8C0000000000000008BB +:10DEA00000002FA800000000000000028000000019 +:10DEB00000000000000000008000000000000000E2 +:10DEC00000000000800000000000000000000000D2 +:10DED0008000000000000000000000000000312869 +:10DEE00000080000000000010000312900080000C7 +:10DEF0000000000100062A20260000400000000863 +:10DF00000000A0000000000000002000000040C150 +:10DF10000000000000000001000040F000000000D0 +:10DF2000000000028000000000000000000000006F +:10DF30000000600000200000000000080000400019 +:10DF4000000800000000000100004001000800007F +:10DF50000000000100004040000800040000000232 +:10DF60000000406000080004000000040000408041 +:10DF7000000800000000000400004000000800004D +:10DF8000000000040000400400080000000000043D +:10DF90000000404000000000000000080000404871 +:10DFA00000000000000000080000800000000000E9 +:10DFB00000000010000050400001000400000001BB +:10DFC0000000500000000000000000200000500889 +:10DFD00000100000000000040000500C00100000C1 +:10DFE00000000001000052C7000000000000000116 +:10DFF000000052C6000000000000000100003000D8 +:10E000000040002000000004000030040040002018 +:10E010000000000400003008004000200000000262 +:10E020000000300A00400020000000020000300C18 +:10E0300000400020000000010000300D00400020E2 +:10E04000000000010000300E004000200000000130 +:10E0500000003010004000200000000400003014D8 +:10E0600000400020000000040000301800400020A4 +:10E07000000000040000301C0040002000000004EC +:10E080000000C00001000080000800040000C0047F +:10E0900001000080000800040000000A00000000E9 +:10E0A000000000000000C0680100008000000001C6 +:10E0B0000000C06901000080000000010000C06C89 +:10E0C00001000080000000020000C06E010000801E +:10E0D000000000020000C070010000800000000489 +:10E0E0000000C07401000080000000040000C06651 +:10E0F00001000080000000020000C06401000080F8 +:10E10000000000010000C06001000080000000026B +:10E110000000C06201000080000000020000C0504A +:10E1200001000080000000040000C05401000080D5 +:10E13000000000040000C05801000080000000043E +:10E140000000C05C01000080000000040000C07CF2 +:10E1500001000080000000010000C07D010000807F +:10E160000000000100001018001000000000000472 +:10E170000000109000100000000000040000109843 +:10E18000001000000000000400001110000000005A +:10E190000000000200001112000000000000000258 +:10E1A0000000111400000000000000020000111621 +:10E1B00000000000000000020000604000080000B5 +:10E1C00000000002000060420008000000000002A1 +:10E1D00000006044000800000000000200006046EB +:10E1E000000800000000000200006080000800003D +:10E1F00000000008000060000008000000000002AD +:10E20000000060020008000000000001000060043F +:10E210000008000000000002000060C000080000CC +:10E220000000000800006100000800000000000479 +:10E2300000006104000800000000000100006140CF +:10E240000008000000000002000061440008000017 +:10E25000000000020000614200080000000000020F +:10E260000000618000080000000000040000300091 +:10E27000000800000000000200003002000800005A +:10E28000000000010000300400080000000000024F +:10E290000000304000080000000000020000304490 +:10E2A00000080000000000020000304600080000E6 +:10E2B00000000002000036600008000000000008B6 +:10E2C00000003080000800000000000200003084E0 +:10E2D0000008000000000002000036A00008000056 +:10E2E000000000080000804000080000000000015D +:10E2F0000000804100080000000000010000804292 +:10E300000008000000000001000080430008000039 +:10E310000000000100008000000800000000000272 +:10E3200000008002000800000000000100008004DE +:10E330000008000000000002000080C0000800008B +:10E3400000000002000080C200080000000000027F +:10E35000000080C40008000000000002000080806F +:10E36000000800000000000100008081000800009B +:10E370000000000100008082000800000000000191 +:10E38000000080830008000000000001000080847D +:10E390000008000000000001000080850008000067 +:10E3A000000000010000808600080000000000015D +:10E3B0000000600000080000000000020000600291 +:10E3C00000080000000000010000600400080000D8 +:10E3D000000000020000604200C0001800000002BF +:10E3E0000000604000C00018000000020000604C07 +:10E3F00000C00018000000080000604400C00018C1 +:10E40000000000080000605700C000180000000174 +:10E410000000605400C000180000000200006056B8 +:10E4200000C0001800000001000066400008000065 +:10E4300000000008000066800008000000000008DE +:10E44000000066C000080000000000080000DA823A +:10E4500000180000000000020000DBA00000000027 +:10E46000000000000000E0000000000000000004C8 +:10E470000000D10000000000000000040000D104F2 +:10E4800000000000000000040000D10800000000AF +:10E49000000000040000D10C000000000000000497 +:10E4A0000000D11000000000000000040000D114A2 +:10E4B00000000000000000040000D118000000006F +:10E4C000000000040000D100000000000000002057 +:10E4D0000000928000000000000000040000928014 +:10E4E00000000000000000280000805000A800008C +:10E4F000000000010000805400A80000000000019E +:10E50000000080000000000000000050000080506B +:10E510000000000000000010000096000000000055 +:10E52000000000040000940000000000000000044F +:10E5300000009404000000000000000400009408A3 +:10E5400000000000000000040000940C0000000027 +:10E55000000000040000941000000000000000040F +:10E560000000941400000000000000040000941853 +:10E570000000000000000004000094000000000003 +:10E580000000004000009420000000000000000493 +:10E590000000942400000000000000040000942803 +:10E5A00000000000000000040000941C00000000B7 +:10E5B000000000040000943000000000000000048F +:10E5C0000000942C000000000000000400009434BF +:10E5D0000000000000000004000092840000000021 +:10E5E0000000000400009280000000000000000411 +:10E5F000000092900000000000000004000092A4BF +:10E60000000000000000000400009438000000003A +:10E61000000000040000943C000000000000000422 +:10E620000000B98800000000000000000000D000D9 +:10E6300000000000000000040000B1000000000025 +:10E64000000000040000B10400000000000000040D +:10E650000000B10800000000000000040000B1004C +:10E6600000000000000000100000BCB0000000002E +:10E67000000000040000BCB4000000000000000422 +:10E680000000BCB000000000000000480000D86896 +:10E6900000000000000000040000D860000000003E +:10E6A000000000040000D864000000000000000426 +:10E6B0000000D86C00000000000000040000D860DA +:10E6C00000000000000000100000D8500000000012 +:10E6D000000000040000D854000000000000000406 +:10E6E0000000D85000000000000000080000D4C85E +:10E6F00000000000000000080000D4D80000000066 +:10E700000000008000000010000000000000000079 +:10E710000000D4D800000000000000080000000045 +:08E72000070C1E0000000000C0 +:00000001FF --- linux-4.4.0.orig/fs/Kconfig +++ linux-4.4.0/fs/Kconfig @@ -221,6 +221,7 @@ source "fs/sysv/Kconfig" source "fs/ufs/Kconfig" source "fs/exofs/Kconfig" +source "fs/aufs/Kconfig" endif # MISC_FILESYSTEMS --- linux-4.4.0.orig/fs/Makefile +++ linux-4.4.0/fs/Makefile @@ -126,3 +126,4 @@ obj-$(CONFIG_CEPH_FS) += ceph/ obj-$(CONFIG_PSTORE) += pstore/ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +obj-$(CONFIG_AUFS_FS) += aufs/ --- linux-4.4.0.orig/fs/attr.c +++ linux-4.4.0/fs/attr.c @@ -42,6 +42,17 @@ return error; } + /* + * Verify that uid/gid changes are valid in the target namespace + * of the superblock. This cannot be overriden using ATTR_FORCE. + */ + if (ia_valid & ATTR_UID && + from_kuid(inode->i_sb->s_user_ns, attr->ia_uid) == (uid_t)-1) + return -EOVERFLOW; + if (ia_valid & ATTR_GID && + from_kgid(inode->i_sb->s_user_ns, attr->ia_gid) == (gid_t)-1) + return -EOVERFLOW; + /* If force is set do it anyway. */ if (ia_valid & ATTR_FORCE) return 0; --- linux-4.4.0.orig/fs/aufs/Kconfig +++ linux-4.4.0/fs/aufs/Kconfig @@ -0,0 +1,185 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single + directory. + In the early days, aufs was entirely re-designed and + re-implemented Unionfs Version 1.x series. Introducing many + original ideas, approaches and improvements, it becomes totally + different from Unionfs while keeping the basic features. + +if AUFS_FS +choice + prompt "Maximum number of branches" + default AUFS_BRANCH_MAX_127 + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_127 + bool "127" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_511 + bool "511" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_1023 + bool "1023" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_32767 + bool "32767" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +endchoice + +config AUFS_SBILIST + bool + depends on AUFS_MAGIC_SYSRQ || PROC_FS + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq or /proc, enabled automatically. + +config AUFS_HNOTIFY + bool "Detect direct branch access (bypassing aufs)" + help + If you want to modify files on branches directly, eg. bypassing aufs, + and want aufs to detect the changes of them fully, then enable this + option and use 'udba=notify' mount option. + Currently there is only one available configuration, "fsnotify". + It will have a negative impact to the performance. + See detail in aufs.5. + +choice + prompt "method" if AUFS_HNOTIFY + default AUFS_HFSNOTIFY +config AUFS_HFSNOTIFY + bool "fsnotify" + select FSNOTIFY +endchoice + +config AUFS_EXPORT + bool "NFS-exportable aufs" + depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. + See detail in aufs.5. + +config AUFS_INO_T_64 + bool + depends on AUFS_EXPORT + depends on 64BIT && !(ALPHA || S390) + default y + help + Automatic configuration for internal use. + /* typedef unsigned long/int __kernel_ino_t */ + /* alpha and s390x are int */ + +config AUFS_XATTR + bool "support for XATTR/EA (including Security Labels)" + help + If your branch fs supports XATTR/EA and you want to make them + available in aufs too, then enable this opsion and specify the + branch attributes for EA. + See detail in aufs.5. + +config AUFS_FHSM + bool "File-based Hierarchical Storage Management" + help + Hierarchical Storage Management (or HSM) is a well-known feature + in the storage world. Aufs provides this feature as file-based. + with multiple branches. + These multiple branches are prioritized, ie. the topmost one + should be the fastest drive and be used heavily. + +config AUFS_RDU + bool "Readdir in userspace" + help + Aufs has two methods to provide a merged view for a directory, + by a user-space library and by kernel-space natively. The latter + is always enabled but sometimes large and slow. + If you enable this option, install the library in aufs2-util + package, and set some environment variables for your readdir(3), + then the work will be handled in user-space which generally + shows better performance in most cases. + See detail in aufs.5. + +config AUFS_SHWH + bool "Show whiteouts" + help + If you want to make the whiteouts in aufs visible, then enable + this option and specify 'shwh' mount option. Although it may + sounds like philosophy or something, but in technically it + simply shows the name of whiteout with keeping its behaviour. + +config AUFS_BR_RAMFS + bool "Ramfs (initramfs/rootfs) as an aufs branch" + help + If you want to use ramfs as an aufs branch fs, then enable this + option. Generally tmpfs is recommended. + Aufs prohibited them to be a branch fs by default, because + initramfs becomes unusable after switch_root or something + generally. If you sets initramfs as an aufs branch and boot your + system by switch_root, you will meet a problem easily since the + files in initramfs may be inaccessible. + Unless you are going to use ramfs as an aufs branch fs without + switch_root or something, leave it N. + +config AUFS_BR_FUSE + bool "Fuse fs as an aufs branch" + depends on FUSE_FS + select AUFS_POLL + help + If you want to use fuse-based userspace filesystem as an aufs + branch fs, then enable this option. + It implements the internal poll(2) operation which is + implemented by fuse only (curretnly). + +config AUFS_POLL + bool + help + Automatic configuration for internal use. + +config AUFS_BR_HFSPLUS + bool "Hfsplus as an aufs branch" + depends on HFSPLUS_FS + default y + help + If you want to use hfsplus fs as an aufs branch fs, then enable + this option. This option introduces a small overhead at + copying-up a file on hfsplus. + +config AUFS_BDEV_LOOP + bool + depends on BLK_DEV_LOOP + default y + help + Automatic configuration for internal use. + Convert =[ym] into =y. + +config AUFS_DEBUG + bool "Debug aufs" + help + Enable this to compile aufs internal debug code. + It will have a negative impact to the performance. + +config AUFS_MAGIC_SYSRQ + bool + depends on AUFS_DEBUG && MAGIC_SYSRQ + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif --- linux-4.4.0.orig/fs/aufs/Makefile +++ linux-4.4.0/fs/aufs/Makefile @@ -0,0 +1,44 @@ + +include ${src}/magic.mk +ifeq (${CONFIG_AUFS_FS},m) +include ${src}/conf.mk +endif +-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname +ifdef M +ccflags-y += -include ${M}/../../include/uapi/linux/aufs_type.h +else +ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h +endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ + wkq.o vfsub.o dcsub.o \ + cpup.o whout.o wbr_policy.o \ + dinfo.o dentry.o \ + dynop.o \ + finfo.o file.o f_op.o \ + dir.o vdir.o \ + iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ + mvdown.o ioctl.o + +# all are boolean +aufs-$(CONFIG_PROC_FS) += procfs.o plink.o +aufs-$(CONFIG_SYSFS) += sysfs.o +aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o +aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o +aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o +aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o +aufs-$(CONFIG_AUFS_EXPORT) += export.o +aufs-$(CONFIG_AUFS_XATTR) += xattr.o +aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o +aufs-$(CONFIG_AUFS_FHSM) += fhsm.o +aufs-$(CONFIG_AUFS_POLL) += poll.o +aufs-$(CONFIG_AUFS_RDU) += rdu.o +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o --- linux-4.4.0.orig/fs/aufs/aufs.h +++ linux-4.4.0/fs/aufs/aufs.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * all header files + */ + +#ifndef __AUFS_H__ +#define __AUFS_H__ + +#ifdef __KERNEL__ + +#define AuStub(type, name, body, ...) \ + static inline type name(__VA_ARGS__) { body; } + +#define AuStubVoid(name, ...) \ + AuStub(void, name, , __VA_ARGS__) +#define AuStubInt0(name, ...) \ + AuStub(int, name, return 0, __VA_ARGS__) + +#include "debug.h" + +#include "branch.h" +#include "cpup.h" +#include "dcsub.h" +#include "dbgaufs.h" +#include "dentry.h" +#include "dir.h" +#include "dynop.h" +#include "file.h" +#include "fstype.h" +#include "inode.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "spl.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- linux-4.4.0.orig/fs/aufs/branch.c +++ linux-4.4.0/fs/aufs/branch.c @@ -0,0 +1,1407 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch management + */ + +#include +#include +#include "aufs.h" + +/* + * free a single branch + */ +static void au_br_do_free(struct au_branch *br) +{ + int i; + struct au_wbr *wbr; + struct au_dykey **key; + + au_hnotify_fin_br(br); + + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + mutex_destroy(&br->br_xino.xi_nondir_mtx); + + AuDebugOn(atomic_read(&br->br_count)); + + wbr = br->br_wbr; + if (wbr) { + for (i = 0; i < AuBrWh_Last; i++) + dput(wbr->wbr_wh[i]); + AuDebugOn(atomic_read(&wbr->wbr_wh_running)); + AuRwDestroy(&wbr->wbr_wh_rwsem); + } + + if (br->br_fhsm) { + au_br_fhsm_fin(br->br_fhsm); + kfree(br->br_fhsm); + } + + key = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++, key++) + if (*key) + au_dy_put(*key); + else + break; + + /* recursive lock, s_umount of branch's */ + lockdep_off(); + path_put(&br->br_path); + lockdep_on(); + kfree(wbr); + kfree(br); +} + +/* + * frees all branches + */ +void au_br_free(struct au_sbinfo *sbinfo) +{ + aufs_bindex_t bmax; + struct au_branch **br; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + bmax = sbinfo->si_bend + 1; + br = sbinfo->si_branch; + while (bmax--) + au_br_do_free(*br++); +} + +/* + * find the index of a branch which is specified by @br_id. + */ +int au_br_index(struct super_block *sb, aufs_bindex_t br_id) +{ + aufs_bindex_t bindex, bend; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) + if (au_sbr_id(sb, bindex) == br_id) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * add a branch + */ + +static int test_overlap(struct super_block *sb, struct dentry *h_adding, + struct dentry *h_root) +{ + if (unlikely(h_adding == h_root + || au_test_loopback_overlap(sb, h_adding))) + return 1; + if (h_adding->d_sb != h_root->d_sb) + return 0; + return au_test_subdir(h_adding, h_root) + || au_test_subdir(h_root, h_adding); +} + +/* + * returns a newly allocated branch. @new_nbranch is a number of branches + * after adding a branch. + */ +static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, + int perm) +{ + struct au_branch *add_branch; + struct dentry *root; + struct inode *inode; + int err; + + err = -ENOMEM; + root = sb->s_root; + add_branch = kzalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_br; + + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kzalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + if (au_br_fhsm(perm)) { + err = au_fhsm_br_alloc(add_branch); + if (unlikely(err)) + goto out_wbr; + } + + err = au_sbr_realloc(au_sbi(sb), new_nbranch); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch); + if (!err) { + inode = d_inode(root); + err = au_ii_realloc(au_ii(inode), new_nbranch); + } + if (!err) + return add_branch; /* success */ + +out_wbr: + kfree(add_branch->br_wbr); +out_hnotify: + au_hnotify_fin_br(add_branch); +out_br: + kfree(add_branch); +out: + return ERR_PTR(err); +} + +/* + * test if the branch permission is legal or not. + */ +static int test_br(struct inode *inode, int brperm, char *path) +{ + int err; + + err = (au_br_writable(brperm) && IS_RDONLY(inode)); + if (!err) + goto out; + + err = -EINVAL; + pr_err("write permission for readonly mount or inode, %s\n", path); + +out: + return err; +} + +/* + * returns: + * 0: success, the caller will add it + * plus: success, it is already unified, the caller should ignore it + * minus: error + */ +static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root, *h_dentry; + struct inode *inode, *h_inode; + + root = sb->s_root; + bend = au_sbend(sb); + if (unlikely(bend >= 0 + && au_find_dbindex(root, add->path.dentry) >= 0)) { + err = 1; + if (!remount) { + err = -EINVAL; + pr_err("%s duplicated\n", add->pathname); + } + goto out; + } + + err = -ENOSPC; /* -E2BIG; */ + if (unlikely(AUFS_BRANCH_MAX <= add->bindex + || AUFS_BRANCH_MAX - 1 <= bend)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bend + 1 < add->bindex)) { + pr_err("bad index %d\n", add->bindex); + goto out; + } + + inode = d_inode(add->path.dentry); + err = -ENOENT; + if (unlikely(!inode->i_nlink)) { + pr_err("no existence %s\n", add->pathname); + goto out; + } + + err = -EINVAL; + if (unlikely(inode->i_sb == sb)) { + pr_err("%s must be outside\n", add->pathname); + goto out; + } + + if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { + pr_err("unsupported filesystem, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + if (unlikely(inode->i_sb->s_stack_depth)) { + pr_err("already stacked, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + err = test_br(d_inode(add->path.dentry), add->perm, add->pathname); + if (unlikely(err)) + goto out; + + if (bend < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bend; bindex++) + if (unlikely(test_overlap(sb, add->path.dentry, + au_h_dptr(root, bindex)))) { + pr_err("%s is overlapped\n", add->pathname); + goto out; + } + + err = 0; + if (au_opt_test(au_mntflags(sb), WARN_PERM)) { + h_dentry = au_h_dptr(root, 0); + h_inode = d_inode(h_dentry); + if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) + || !uid_eq(h_inode->i_uid, inode->i_uid) + || !gid_eq(h_inode->i_gid, inode->i_gid)) + pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", + add->pathname, + i_uid_read(inode), i_gid_read(inode), + (inode->i_mode & S_IALLUGO), + i_uid_read(h_inode), i_gid_read(h_inode), + (h_inode->i_mode & S_IALLUGO)); + } + +out: + return err; +} + +/* + * initialize or clean the whiteouts for an adding branch + */ +static int au_br_init_wh(struct super_block *sb, struct au_branch *br, + int new_perm) +{ + int err, old_perm; + aufs_bindex_t bindex; + struct mutex *h_mtx; + struct au_wbr *wbr; + struct au_hinode *hdir; + struct dentry *h_dentry; + + err = vfsub_mnt_want_write(au_br_mnt(br)); + if (unlikely(err)) + goto out; + + wbr = br->br_wbr; + old_perm = br->br_perm; + br->br_perm = new_perm; + hdir = NULL; + h_mtx = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_dentry = au_br_dentry(br); + h_mtx = &d_inode(h_dentry)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_PARENT); + } + if (!wbr) + err = au_wh_init(br, sb); + else { + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + wbr_wh_write_unlock(wbr); + } + if (hdir) + au_hn_imtx_unlock(hdir); + else + mutex_unlock(h_mtx); + vfsub_mnt_drop_write(au_br_mnt(br)); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + kfree(wbr); + br->br_wbr = NULL; + } + +out: + return err; +} + +static int au_wbr_init(struct au_branch *br, struct super_block *sb, + int perm) +{ + int err; + struct kstatfs kst; + struct au_wbr *wbr; + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); + atomic_set(&wbr->wbr_wh_running, 0); + + /* + * a limit for rmdir/rename a dir + * cf. AUFS_MAX_NAMELEN in include/uapi/linux/aufs_type.h + */ + err = vfs_statfs(&br->br_path, &kst); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (kst.f_namelen >= NAME_MAX) + err = au_br_init_wh(sb, br, perm); + else + pr_err("%pd(%s), unsupported namelen %ld\n", + au_br_dentry(br), + au_sbtype(au_br_dentry(br)->d_sb), kst.f_namelen); + +out: + return err; +} + +/* initialize a new branch */ +static int au_br_init(struct au_branch *br, struct super_block *sb, + struct au_opt_add *add) +{ + int err; + struct inode *h_inode; + + err = 0; + mutex_init(&br->br_xino.xi_nondir_mtx); + br->br_perm = add->perm; + br->br_path = add->path; /* set first, path_get() later */ + spin_lock_init(&br->br_dykey_lock); + atomic_set(&br->br_count, 0); + atomic_set(&br->br_xino_running, 0); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + if (au_br_writable(add->perm)) { + err = au_wbr_init(br, sb, add->perm); + if (unlikely(err)) + goto out_err; + } + + if (au_opt_test(au_mntflags(sb), XINO)) { + h_inode = d_inode(add->path.dentry); + err = au_xino_br(sb, br, h_inode->i_ino, + au_sbr(sb, 0)->br_xino.xi_file, /*do_test*/1); + if (unlikely(err)) { + AuDebugOn(br->br_xino.xi_file); + goto out_err; + } + } + + sysaufs_br_init(br); + path_get(&br->br_path); + goto out; /* success */ + +out_err: + memset(&br->br_path, 0, sizeof(br->br_path)); +out: + return err; +} + +static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, + struct au_branch *br, aufs_bindex_t bend, + aufs_bindex_t amount) +{ + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + memmove(brp + 1, brp, sizeof(*brp) * amount); + *brp = br; + sbinfo->si_bend++; + if (unlikely(bend < 0)) + sbinfo->si_bend = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry + bindex; + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bend++; + if (unlikely(bend < 0)) + dinfo->di_bstart = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + memmove(hip + 1, hip, sizeof(*hip) * amount); + hip->hi_inode = NULL; + au_hn_init(hip); + iinfo->ii_bend++; + if (unlikely(bend < 0)) + iinfo->ii_bstart = 0; +} + +static void au_br_do_add(struct super_block *sb, struct au_branch *br, + aufs_bindex_t bindex) +{ + struct dentry *root, *h_dentry; + struct inode *root_inode, *h_inode; + aufs_bindex_t bend, amount; + + root = sb->s_root; + root_inode = d_inode(root); + bend = au_sbend(sb); + amount = bend + 1 - bindex; + h_dentry = au_br_dentry(br); + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bend, amount); + au_br_do_add_hdp(au_di(root), bindex, bend, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bend, amount); + au_set_h_dptr(root, bindex, dget(h_dentry)); + h_inode = d_inode(h_dentry); + au_set_h_iptr(root_inode, bindex, au_igrab(h_inode), /*flags*/0); + au_sbilist_unlock(); +} + +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, add_bindex; + struct dentry *root, *h_dentry; + struct inode *root_inode; + struct au_branch *add_branch; + + root = sb->s_root; + root_inode = d_inode(root); + IMustLock(root_inode); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bend = au_sbend(sb); + add_branch = au_br_alloc(sb, bend + 2, add->perm); + err = PTR_ERR(add_branch); + if (IS_ERR(add_branch)) + goto out; + + err = au_br_init(add_branch, sb, add); + if (unlikely(err)) { + au_br_do_free(add_branch); + goto out; + } + + add_bindex = add->bindex; + if (!remount) + au_br_do_add(sb, add_branch, add_bindex); + else { + sysaufs_brs_del(sb, add_bindex); + au_br_do_add(sb, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); + } + + h_dentry = add->path.dentry; + if (!add_bindex) { + au_cpup_attr_all(root_inode, /*force*/1); + sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; + } else + au_add_nlink(root_inode, d_inode(h_dentry)); + + /* + * this test/set prevents aufs from handling unnecesary notify events + * of xino files, in case of re-adding a writable branch which was + * once detached from aufs. + */ + if (au_xino_brid(sb) < 0 + && au_br_writable(add_branch->br_perm) + && !au_test_fs_bad_xino(h_dentry->d_sb) + && add_branch->br_xino.xi_file + && add_branch->br_xino.xi_file->f_path.dentry->d_parent == h_dentry) + au_xino_brid_set(sb, add_branch->br_id); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static unsigned long long au_farray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct au_sphlhead *files; + struct au_finfo *finfo; + + n = 0; + p = a; + files = &au_sbi(sb)->si_files; + spin_lock(&files->spin); + hlist_for_each_entry(finfo, &files->head, fi_hlist) { + f = finfo->fi_file; + if (file_count(f) + && !special_file(file_inode(f)->i_mode)) { + get_file(f); + *p++ = f; + n++; + AuDebugOn(n > max); + } + } + spin_unlock(&files->spin); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_nfiles); + return au_array_alloc(max, au_farray_cb, sb, /*arg*/NULL); +} + +static void au_farray_free(struct file **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * delete a branch + */ + +/* to show the line number, do not make it inlined function */ +#define AuVerbose(do_info, fmt, ...) do { \ + if (do_info) \ + pr_info(fmt, ##__VA_ARGS__); \ +} while (0) + +static int au_test_ibusy(struct inode *inode, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return (inode && !S_ISDIR(inode->i_mode)) || bstart == bend; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return au_test_ibusy(d_inode(dentry), bstart, bend); +} + +/* + * test if the branch is deletable or not. + */ +static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err, i, j, ndentry; + aufs_bindex_t bstart, bend; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; !err && i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; !err && j < ndentry; j++) { + d = dpage->dentries[j]; + AuDebugOn(au_dcount(d) <= 0); + if (!au_digen_test(d, sigen)) { + di_read_lock_child(d, AuLock_IR); + if (unlikely(au_dbrange_test(d))) { + di_read_unlock(d, AuLock_IR); + continue; + } + } else { + di_write_lock_child(d); + if (unlikely(au_dbrange_test(d))) { + di_write_unlock(d); + continue; + } + err = au_reval_dpath(d, sigen); + if (!err) + di_downgrade_lock(d, AuLock_IR); + else { + di_write_unlock(d); + break; + } + } + + /* AuDbgDentry(d); */ + bstart = au_dbstart(d); + bend = au_dbend(d); + if (bstart <= bindex + && bindex <= bend + && au_h_dptr(d, bindex) + && au_test_dbusy(d, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy %pd\n", d); + AuDbgDentry(d); + } + di_read_unlock(d, AuLock_IR); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err; + unsigned long long max, ull; + struct inode *i, **array; + aufs_bindex_t bstart, bend; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + AuDbg("b%d\n", bindex); + for (ull = 0; !err && ull < max; ull++) { + i = array[ull]; + if (unlikely(!i)) + break; + if (i->i_ino == AUFS_ROOT_INO) + continue; + + /* AuDbgInode(i); */ + if (au_iigen(i, NULL) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); + err = au_refresh_hinode_self(i); + au_iigen_dec(i); + if (!err) + ii_downgrade_lock(i); + else { + ii_write_unlock(i); + break; + } + } + + bstart = au_ibstart(i); + bend = au_ibend(i); + if (bstart <= bindex + && bindex <= bend + && au_h_iptr(i, bindex) + && au_test_ibusy(i, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy i%lu\n", i->i_ino); + AuDbgInode(i); + } + ii_read_unlock(i); + } + au_iarray_free(array, max); + +out: + return err; +} + +static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, + const unsigned int verbose) +{ + int err; + unsigned int sigen; + + sigen = au_sigen(root->d_sb); + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = test_dentry_busy(root, bindex, sigen, verbose); + if (!err) + err = test_inode_busy(root->d_sb, bindex, sigen, verbose); + di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ + + return err; +} + +static int test_dir_busy(struct file *file, aufs_bindex_t br_id, + struct file **to_free, int *idx) +{ + int err; + unsigned char matched, root; + aufs_bindex_t bindex, bend; + struct au_fidir *fidir; + struct au_hfile *hfile; + + err = 0; + root = IS_ROOT(file->f_path.dentry); + if (root) { + get_file(file); + to_free[*idx] = file; + (*idx)++; + goto out; + } + + matched = 0; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + matched = 1; + break; + } + } + if (matched) + err = -EBUSY; + +out: + return err; +} + +static int test_file_busy(struct super_block *sb, aufs_bindex_t br_id, + struct file **to_free, int opened) +{ + int err, idx; + unsigned long long ull, max; + aufs_bindex_t bstart; + struct file *file, **array; + struct dentry *root; + struct au_hfile *hfile; + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + idx = 0; + root = sb->s_root; + di_write_unlock(root); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + bstart = au_fbstart(file); + if (!d_is_dir(file->f_path.dentry)) { + hfile = &au_fi(file)->fi_htop; + if (hfile->hf_br->br_id == br_id) + err = -EBUSY; + } else + err = test_dir_busy(file, br_id, to_free, &idx); + fi_read_unlock(file); + if (unlikely(err)) + break; + } + di_write_lock_child(root); + au_farray_free(array, max); + AuDebugOn(idx > opened); + +out: + return err; +} + +static void br_del_file(struct file **to_free, unsigned long long opened, + aufs_bindex_t br_id) +{ + unsigned long long ull; + aufs_bindex_t bindex, bstart, bend, bfound; + struct file *file; + struct au_fidir *fidir; + struct au_hfile *hfile; + + for (ull = 0; ull < opened; ull++) { + file = to_free[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + AuDebugOn(!d_is_dir(file->f_path.dentry)); + bfound = -1; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + fi_write_lock(file); + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; bindex <= bend; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + bfound = bindex; + break; + } + } + AuDebugOn(bfound < 0); + au_set_h_fptr(file, bfound, NULL); + if (bfound == bstart) { + for (bstart++; bstart <= bend; bstart++) + if (au_hf_dir(file, bstart)) { + au_set_fbstart(file, bstart); + break; + } + } + fi_write_unlock(file); + } +} + +static void au_br_do_del_brp(struct au_sbinfo *sbinfo, + const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bend) + memmove(brp, brp + 1, sizeof(*brp) * (bend - bindex)); + sbinfo->si_branch[0 + bend] = NULL; + sbinfo->si_bend--; + + p = krealloc(sbinfo->si_branch, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + sbinfo->si_branch = p; + /* harmless error */ +} + +static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry; + if (bindex < bend) + memmove(hdp + bindex, hdp + bindex + 1, + sizeof(*hdp) * (bend - bindex)); + hdp[0 + bend].hd_dentry = NULL; + dinfo->di_bend--; + + p = krealloc(hdp, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + dinfo->di_hdentry = p; + /* harmless error */ +} + +static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + if (bindex < bend) + memmove(hip, hip + 1, sizeof(*hip) * (bend - bindex)); + iinfo->ii_hinode[0 + bend].hi_inode = NULL; + au_hn_init(iinfo->ii_hinode + bend); + iinfo->ii_bend--; + + p = krealloc(iinfo->ii_hinode, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + iinfo->ii_hinode = p; + /* harmless error */ +} + +static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br) +{ + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct dentry *root, *h_root; + struct inode *inode, *h_inode; + struct au_hinode *hinode; + + SiMustWriteLock(sb); + + root = sb->s_root; + inode = d_inode(root); + sbinfo = au_sbi(sb); + bend = sbinfo->si_bend; + + h_root = au_h_dptr(root, bindex); + hinode = au_hi(inode, bindex); + h_inode = au_igrab(hinode->hi_inode); + au_hiput(hinode); + + au_sbilist_lock(); + au_br_do_del_brp(sbinfo, bindex, bend); + au_br_do_del_hdp(au_di(root), bindex, bend); + au_br_do_del_hip(au_ii(inode), bindex, bend); + au_sbilist_unlock(); + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +static unsigned long long empty_cb(struct super_block *sb, void *array, + unsigned long long max, void *arg) +{ + return max; +} + +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) +{ + int err, rerr, i; + unsigned long long opened; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, br_id; + unsigned char do_wh, verbose; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + struct file **to_free; + + err = 0; + opened = 0; + to_free = NULL; + root = sb->s_root; + bindex = au_find_dbindex(root, del->h_path.dentry); + if (bindex < 0) { + if (remount) + goto out; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", del->pathname); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = -EBUSY; + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + bend = au_sbend(sb); + if (unlikely(!bend)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + br = au_sbr(sb, bindex); + AuDebugOn(!path_equal(&br->br_path, &del->h_path)); + + br_id = br->br_id; + opened = atomic_read(&br->br_count); + if (unlikely(opened)) { + to_free = au_array_alloc(&opened, empty_cb, sb, NULL); + err = PTR_ERR(to_free); + if (IS_ERR(to_free)) + goto out; + + err = test_file_busy(sb, br_id, to_free, opened); + if (unlikely(err)) { + AuVerbose(verbose, "%llu file(s) opened\n", opened); + goto out; + } + } + + wbr = br->br_wbr; + do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); + if (do_wh) { + /* instead of WbrWhMustWriteLock(wbr) */ + SiMustWriteLock(sb); + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + } + + err = test_children_busy(root, bindex, verbose); + if (unlikely(err)) { + if (do_wh) + goto out_wh; + goto out; + } + + err = 0; + if (to_free) { + /* + * now we confirmed the branch is deletable. + * let's free the remaining opened dirs on the branch. + */ + di_write_unlock(root); + br_del_file(to_free, opened, br_id); + di_write_lock_child(root); + } + + if (!remount) + au_br_do_del(sb, bindex, br); + else { + sysaufs_brs_del(sb, bindex); + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); + } + + if (!bindex) { + au_cpup_attr_all(d_inode(root), /*force*/1); + sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; + } else + au_sub_nlink(d_inode(root), d_inode(del->h_path.dentry)); + if (au_opt_test(mnt_flags, PLINK)) + au_plink_half_refresh(sb, br_id); + + if (au_xino_brid(sb) == br_id) + au_xino_brid_set(sb, -1); + goto out; /* success */ + +out_wh: + /* revert */ + rerr = au_br_init_wh(sb, br, br->br_perm); + if (rerr) + pr_warn("failed re-creating base whiteout, %s. (%d)\n", + del->pathname, rerr); +out: + if (to_free) + au_farray_free(to_free, opened); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) +{ + int err; + aufs_bindex_t bstart, bend; + struct aufs_ibusy ibusy; + struct inode *inode, *h_inode; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = copy_from_user(&ibusy, arg, sizeof(ibusy)); + if (!err) + err = !access_ok(VERIFY_WRITE, &arg->h_ino, sizeof(arg->h_ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + + err = -EINVAL; + si_read_lock(sb, AuLock_FLUSH); + if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbend(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart <= ibusy.bindex && ibusy.bindex <= bend) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, bstart, bend)) + ibusy.h_ino = h_inode->i_ino; + } + ii_read_unlock(inode); + iput(inode); + +out_unlock: + si_read_unlock(sb); + if (!err) { + err = __put_user(ibusy.h_ino, &arg->h_ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + } + } +out: + return err; +} + +long au_ibusy_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* + * change a branch permission + */ + +static void au_warn_ima(void) +{ +#ifdef CONFIG_IMA + /* since it doesn't support mark_files_ro() */ + AuWarn1("RW -> RO makes IMA to produce wrong message\n"); +#endif +} + +static int do_need_sigen_inc(int a, int b) +{ + return au_br_whable(a) && !au_br_whable(b); +} + +static int need_sigen_inc(int old, int new) +{ + return do_need_sigen_inc(old, new) + || do_need_sigen_inc(new, old); +} + +static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, do_warn; + unsigned int mnt_flags; + unsigned long long ull, max; + aufs_bindex_t br_id; + unsigned char verbose, writer; + struct file *file, *hf, **array; + struct au_hfile *hfile; + + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + do_warn = 0; + br_id = au_sbr_id(sb, bindex); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + if (unlikely(au_test_mmapped(file))) { + err = -EBUSY; + AuVerbose(verbose, "mmapped %pD\n", file); + AuDbgFile(file); + FiMustNoWaiters(file); + fi_read_unlock(file); + goto out_array; + } + + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + if (!d_is_reg(file->f_path.dentry) + || !(file->f_mode & FMODE_WRITE) + || hfile->hf_br->br_id != br_id + || !(hf->f_mode & FMODE_WRITE)) + array[ull] = NULL; + else { + do_warn = 1; + get_file(file); + } + + FiMustNoWaiters(file); + fi_read_unlock(file); + fput(file); + } + + err = 0; + if (do_warn) + au_warn_ima(); + + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (!file) + continue; + + /* todo: already flushed? */ + /* + * fs/super.c:mark_files_ro() is gone, but aufs keeps its + * approach which resets f_mode and calls mnt_drop_write() and + * file_release_write() for each file, because the branch + * attribute in aufs world is totally different from the native + * fs rw/ro mode. + */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + /* fi_read_unlock(file); */ + spin_lock(&hf->f_lock); + writer = !!(hf->f_mode & FMODE_WRITER); + hf->f_mode &= ~(FMODE_WRITE | FMODE_WRITER); + spin_unlock(&hf->f_lock); + if (writer) { + put_write_access(file_inode(hf)); + __mnt_drop_write(hf->f_path.mnt); + } + } + +out_array: + au_farray_free(array, max); +out: + AuTraceErr(err); + return err; +} + +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh) +{ + int err, rerr; + aufs_bindex_t bindex; + struct dentry *root; + struct au_branch *br; + struct au_br_fhsm *bf; + + root = sb->s_root; + bindex = au_find_dbindex(root, mod->h_root); + if (bindex < 0) { + if (remount) + return 0; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", mod->path); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = test_br(d_inode(mod->h_root), mod->perm, mod->path); + if (unlikely(err)) + goto out; + + br = au_sbr(sb, bindex); + AuDebugOn(mod->h_root != au_br_dentry(br)); + if (br->br_perm == mod->perm) + return 0; /* success */ + + /* pre-allocate for non-fhsm --> fhsm */ + bf = NULL; + if (!au_br_fhsm(br->br_perm) && au_br_fhsm(mod->perm)) { + err = au_fhsm_br_alloc(br); + if (unlikely(err)) + goto out; + bf = br->br_fhsm; + br->br_fhsm = NULL; + } + + if (au_br_writable(br->br_perm)) { + /* remove whiteout base */ + err = au_br_init_wh(sb, br, mod->perm); + if (unlikely(err)) + goto out_bf; + + if (!au_br_writable(mod->perm)) { + /* rw --> ro, file might be mmapped */ + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = au_br_mod_files_ro(sb, bindex); + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + if (unlikely(err)) { + rerr = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) + rerr = au_wbr_init(br, sb, br->br_perm); + if (unlikely(rerr)) { + AuIOErr("nested error %d (%d)\n", + rerr, err); + br->br_perm = mod->perm; + } + } + } + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + err = au_wbr_init(br, sb, mod->perm); + if (unlikely(err)) { + kfree(br->br_wbr); + br->br_wbr = NULL; + } + } + } + if (unlikely(err)) + goto out_bf; + + if (au_br_fhsm(br->br_perm)) { + if (!au_br_fhsm(mod->perm)) { + /* fhsm --> non-fhsm */ + au_br_fhsm_fin(br->br_fhsm); + kfree(br->br_fhsm); + br->br_fhsm = NULL; + } + } else if (au_br_fhsm(mod->perm)) + /* non-fhsm --> fhsm */ + br->br_fhsm = bf; + + *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); + br->br_perm = mod->perm; + goto out; /* success */ + +out_bf: + kfree(bf); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs) +{ + int err; + struct kstatfs kstfs; + + err = vfs_statfs(&br->br_path, &kstfs); + if (!err) { + stfs->f_blocks = kstfs.f_blocks; + stfs->f_bavail = kstfs.f_bavail; + stfs->f_files = kstfs.f_files; + stfs->f_ffree = kstfs.f_ffree; + } + + return err; +} --- linux-4.4.0.orig/fs/aufs/branch.h +++ linux-4.4.0/fs/aufs/branch.h @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch filesystems and xino for them + */ + +#ifndef __AUFS_BRANCH_H__ +#define __AUFS_BRANCH_H__ + +#ifdef __KERNEL__ + +#include +#include "dynop.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino_file { + struct file *xi_file; + struct mutex xi_nondir_mtx; + + /* todo: make xino files an array to support huge inode number */ + +#ifdef CONFIG_DEBUG_FS + struct dentry *xi_dbgaufs; +#endif +}; + +/* File-based Hierarchical Storage Management */ +struct au_br_fhsm { +#ifdef CONFIG_AUFS_FHSM + struct mutex bf_lock; + unsigned long bf_jiffy; + struct aufs_stfs bf_stfs; + int bf_readable; +#endif +}; + +/* members for writable branch only */ +enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; +struct au_wbr { + struct au_rwsem wbr_wh_rwsem; + struct dentry *wbr_wh[AuBrWh_Last]; + atomic_t wbr_wh_running; +#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ +#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ +#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ + + /* mfs mode */ + unsigned long long wbr_bytes; +}; + +/* ext2 has 3 types of operations at least, ext3 has 4 */ +#define AuBrDynOp (AuDyLast * 4) + +#ifdef CONFIG_AUFS_HFSNOTIFY +/* support for asynchronous destruction */ +struct au_br_hfsnotify { + struct fsnotify_group *hfsn_group; +}; +#endif + +/* sysfs entries */ +struct au_brsysfs { + char name[16]; + struct attribute attr; +}; + +enum { + AuBrSysfs_BR, + AuBrSysfs_BRID, + AuBrSysfs_Last +}; + +/* protected by superblock rwsem */ +struct au_branch { + struct au_xino_file br_xino; + + aufs_bindex_t br_id; + + int br_perm; + struct path br_path; + spinlock_t br_dykey_lock; + struct au_dykey *br_dykey[AuBrDynOp]; + atomic_t br_count; + + struct au_wbr *br_wbr; + struct au_br_fhsm *br_fhsm; + + /* xino truncation */ + atomic_t br_xino_running; + +#ifdef CONFIG_AUFS_HFSNOTIFY + struct au_br_hfsnotify *br_hfsn; +#endif + +#ifdef CONFIG_SYSFS + /* entries under sysfs per mount-point */ + struct au_brsysfs br_sysfs[AuBrSysfs_Last]; +#endif +}; + +/* ---------------------------------------------------------------------- */ + +static inline struct vfsmount *au_br_mnt(struct au_branch *br) +{ + return br->br_path.mnt; +} + +static inline struct dentry *au_br_dentry(struct au_branch *br) +{ + return br->br_path.dentry; +} + +static inline struct super_block *au_br_sb(struct au_branch *br) +{ + return au_br_mnt(br)->mnt_sb; +} + +static inline int au_br_rdonly(struct au_branch *br) +{ + return ((au_br_sb(br)->s_flags & MS_RDONLY) + || !au_br_writable(br->br_perm)) + ? -EROFS : 0; +} + +static inline int au_br_hnotifyable(int brperm __maybe_unused) +{ +#ifdef CONFIG_AUFS_HNOTIFY + return !(brperm & AuBrPerm_RR); +#else + return 0; +#endif +} + +static inline int au_br_test_oflag(int oflag, struct au_branch *br) +{ + int err, exec_flag; + + err = 0; + exec_flag = oflag & __FMODE_EXEC; + if (unlikely(exec_flag && path_noexec(&br->br_path))) + err = -EACCES; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* branch.c */ +struct au_sbinfo; +void au_br_free(struct au_sbinfo *sinfo); +int au_br_index(struct super_block *sb, aufs_bindex_t br_id); +struct au_opt_add; +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); +struct au_opt_del; +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); +long au_ibusy_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); +#endif +struct au_opt_mod; +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh); +struct aufs_stfs; +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs); + +/* xino.c */ +static const loff_t au_loff_max = LLONG_MAX; + +int au_xib_trunc(struct super_block *sb); +ssize_t xino_fread(vfs_readf_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos); +struct file *au_xino_create2(struct file *base_file, struct file *copy_src); +struct file *au_xino_create(struct super_block *sb, char *fname, int silent); +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct file *base_file, int do_test); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex); + +struct au_opt_xino; +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount); +void au_xino_clr(struct super_block *sb); +struct file *au_xino_def(struct super_block *sb); +int au_xino_path(struct seq_file *seq, struct file *file); + +/* ---------------------------------------------------------------------- */ + +/* Superblock to branch */ +static inline +aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_id; +} + +static inline +struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_mnt(au_sbr(sb, bindex)); +} + +static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_sb(au_sbr(sb, bindex)); +} + +static inline void au_sbr_put(struct super_block *sb, aufs_bindex_t bindex) +{ + atomic_dec(&au_sbr(sb, bindex)->br_count); +} + +static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_perm; +} + +static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_whable(au_sbr_perm(sb, bindex)); +} + +/* ---------------------------------------------------------------------- */ + +/* + * wbr_wh_read_lock, wbr_wh_write_lock + * wbr_wh_read_unlock, wbr_wh_write_unlock, wbr_wh_downgrade_lock + */ +AuSimpleRwsemFuncs(wbr_wh, struct au_wbr *wbr, &wbr->wbr_wh_rwsem); + +#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&wbr->wbr_wh_rwsem) +#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&wbr->wbr_wh_rwsem) +#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&wbr->wbr_wh_rwsem) + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_FHSM +static inline void au_br_fhsm_init(struct au_br_fhsm *brfhsm) +{ + mutex_init(&brfhsm->bf_lock); + brfhsm->bf_jiffy = 0; + brfhsm->bf_readable = 0; +} + +static inline void au_br_fhsm_fin(struct au_br_fhsm *brfhsm) +{ + mutex_destroy(&brfhsm->bf_lock); +} +#else +AuStubVoid(au_br_fhsm_init, struct au_br_fhsm *brfhsm) +AuStubVoid(au_br_fhsm_fin, struct au_br_fhsm *brfhsm) +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ --- linux-4.4.0.orig/fs/aufs/conf.mk +++ linux-4.4.0/fs/aufs/conf.mk @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} + +define AuConf +ifdef ${1} +AuConfStr += ${1}=${${1}} +endif +endef + +AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ + SBILIST \ + HNOTIFY HFSNOTIFY \ + EXPORT INO_T_64 \ + XATTR \ + FHSM \ + RDU \ + SHWH \ + BR_RAMFS \ + BR_FUSE POLL \ + BR_HFSPLUS \ + BDEV_LOOP \ + DEBUG MAGIC_SYSRQ +$(foreach i, ${AuConfAll}, \ + $(eval $(call AuConf,CONFIG_AUFS_${i}))) + +AuConfName = ${obj}/conf.str +${AuConfName}.tmp: FORCE + @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ +${AuConfName}: ${AuConfName}.tmp + @diff -q $< $@ > /dev/null 2>&1 || { \ + echo ' GEN ' $@; \ + cp -p $< $@; \ + } +FORCE: +clean-files += ${AuConfName} ${AuConfName}.tmp +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk --- linux-4.4.0.orig/fs/aufs/cpup.c +++ linux-4.4.0/fs/aufs/cpup.c @@ -0,0 +1,1319 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up functions, see wbr_policy.c for copy-down + */ + +#include +#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags) +{ + const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE + | S_NOATIME | S_NOCMTIME | S_AUTOMOUNT; + + BUILD_BUG_ON(sizeof(iflags) != sizeof(dst->i_flags)); + + dst->i_flags |= iflags & ~mask; + if (au_test_fs_notime(dst->i_sb)) + dst->i_flags |= S_NOATIME | S_NOCMTIME; +} + +void au_cpup_attr_timesizes(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + fsstack_copy_attr_times(inode, h_inode); + fsstack_copy_inode_size(inode, h_inode); +} + +void au_cpup_attr_nlink(struct inode *inode, int force) +{ + struct inode *h_inode; + struct super_block *sb; + aufs_bindex_t bindex, bend; + + sb = inode->i_sb; + bindex = au_ibstart(inode); + h_inode = au_h_iptr(inode, bindex); + if (!force + && !S_ISDIR(h_inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode)) + return; + + /* + * 0 can happen in revalidating. + * h_inode->i_mutex may not be held here, but it is harmless since once + * i_nlink reaches 0, it will never become positive except O_TMPFILE + * case. + * todo: O_TMPFILE+linkat(AT_SYMLINK_FOLLOW) bypassing aufs may cause + * the incorrect link count. + */ + set_nlink(inode, h_inode->i_nlink); + + /* + * fewer nlink makes find(1) noisy, but larger nlink doesn't. + * it may includes whplink directory. + */ + if (S_ISDIR(h_inode->i_mode)) { + bend = au_ibend(inode); + for (bindex++; bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) + au_add_nlink(inode, h_inode); + } + } +} + +void au_cpup_attr_changeable(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + inode->i_mode = h_inode->i_mode; + inode->i_uid = h_inode->i_uid; + inode->i_gid = h_inode->i_gid; + au_cpup_attr_timesizes(inode); + au_cpup_attr_flags(inode, h_inode->i_flags); +} + +void au_cpup_igen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + iinfo->ii_higen = h_inode->i_generation; + iinfo->ii_hsb1 = h_inode->i_sb; +} + +void au_cpup_attr_all(struct inode *inode, int force) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + au_cpup_attr_changeable(inode); + if (inode->i_nlink > 0) + au_cpup_attr_nlink(inode, force); + inode->i_rdev = h_inode->i_rdev; + inode->i_blkbits = h_inode->i_blkbits; + au_cpup_igen(inode, h_inode); +} + +/* ---------------------------------------------------------------------- */ + +/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ + +/* keep the timestamps of the parent dir when cpup */ +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path) +{ + struct inode *h_inode; + + dt->dt_dentry = dentry; + dt->dt_h_path = *h_path; + h_inode = d_inode(h_path->dentry); + dt->dt_atime = h_inode->i_atime; + dt->dt_mtime = h_inode->i_mtime; + /* smp_mb(); */ +} + +void au_dtime_revert(struct au_dtime *dt) +{ + struct iattr attr; + int err; + + attr.ia_atime = dt->dt_atime; + attr.ia_mtime = dt->dt_mtime; + attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET + | ATTR_ATIME | ATTR_ATIME_SET; + + /* no delegation since this is a directory */ + err = vfsub_notify_change(&dt->dt_h_path, &attr, /*delegated*/NULL); + if (unlikely(err)) + pr_warn("restoring timestamps failed(%d). ignored\n", err); +} + +/* ---------------------------------------------------------------------- */ + +/* internal use only */ +struct au_cpup_reg_attr { + int valid; + struct kstat st; + unsigned int iflags; /* inode->i_flags */ +}; + +static noinline_for_stack +int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, sbits, icex; + unsigned int mnt_flags; + unsigned char verbose; + struct iattr ia; + struct path h_path; + struct inode *h_isrc, *h_idst; + struct kstat *h_st; + struct au_branch *br; + + h_path.dentry = au_h_dptr(dst, bindex); + h_idst = d_inode(h_path.dentry); + br = au_sbr(dst->d_sb, bindex); + h_path.mnt = au_br_mnt(br); + h_isrc = d_inode(h_src); + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; + if (h_src_attr && h_src_attr->valid) { + h_st = &h_src_attr->st; + ia.ia_uid = h_st->uid; + ia.ia_gid = h_st->gid; + ia.ia_atime = h_st->atime; + ia.ia_mtime = h_st->mtime; + if (h_idst->i_mode != h_st->mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_st->mode; + } + sbits = !!(h_st->mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_src_attr->iflags); + } else { + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + ia.ia_atime = h_isrc->i_atime; + ia.ia_mtime = h_isrc->i_mtime; + if (h_idst->i_mode != h_isrc->i_mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + } + sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_isrc->i_flags); + } + /* no delegation since it is just created */ + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + } + + icex = br->br_perm & AuBrAttr_ICEX; + if (!err) { + mnt_flags = au_mntflags(dst->d_sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + err = au_cpup_xattr(h_path.dentry, h_src, icex, verbose); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, + char *buf, unsigned long blksize) +{ + int err; + size_t sz, rbytes, wbytes; + unsigned char all_zero; + char *p, *zp; + struct mutex *h_mtx; + /* reduce stack usage */ + struct iattr *ia; + + zp = page_address(ZERO_PAGE(0)); + if (unlikely(!zp)) + return -ENOMEM; /* possible? */ + + err = 0; + all_zero = 0; + while (len) { + AuDbg("len %lld\n", len); + sz = blksize; + if (len < blksize) + sz = len; + + rbytes = 0; + /* todo: signal_pending? */ + while (!rbytes || err == -EAGAIN || err == -EINTR) { + rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); + err = rbytes; + } + if (unlikely(err < 0)) + break; + + all_zero = 0; + if (len >= rbytes && rbytes == blksize) + all_zero = !memcmp(buf, zp, rbytes); + if (!all_zero) { + wbytes = rbytes; + p = buf; + while (wbytes) { + size_t b; + + b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); + err = b; + /* todo: signal_pending? */ + if (unlikely(err == -EAGAIN || err == -EINTR)) + continue; + if (unlikely(err < 0)) + break; + wbytes -= b; + p += b; + } + if (unlikely(err < 0)) + break; + } else { + loff_t res; + + AuLabel(hole); + res = vfsub_llseek(dst, rbytes, SEEK_CUR); + err = res; + if (unlikely(res < 0)) + break; + } + len -= rbytes; + err = 0; + } + + /* the last block may be a hole */ + if (!err && all_zero) { + AuLabel(last hole); + + err = 1; + if (au_test_nfs(dst->f_path.dentry->d_sb)) { + /* nfs requires this step to make last hole */ + /* is this only nfs? */ + do { + /* todo: signal_pending? */ + err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); + } while (err == -EAGAIN || err == -EINTR); + if (err == 1) + dst->f_pos--; + } + + if (err == 1) { + ia = (void *)buf; + ia->ia_size = dst->f_pos; + ia->ia_valid = ATTR_SIZE | ATTR_FILE; + ia->ia_file = dst; + h_mtx = &file_inode(dst)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + /* no delegation since it is just created */ + err = vfsub_notify_change(&dst->f_path, ia, + /*delegated*/NULL); + mutex_unlock(h_mtx); + } + } + + return err; +} + +int au_copy_file(struct file *dst, struct file *src, loff_t len) +{ + int err; + unsigned long blksize; + unsigned char do_kfree; + char *buf; + + err = -ENOMEM; + blksize = dst->f_path.dentry->d_sb->s_blocksize; + if (!blksize || PAGE_SIZE < blksize) + blksize = PAGE_SIZE; + AuDbg("blksize %lu\n", blksize); + do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); + if (do_kfree) + buf = kmalloc(blksize, GFP_NOFS); + else + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + if (len > (1 << 22)) + AuDbg("copying a large file %lld\n", (long long)len); + + src->f_pos = 0; + dst->f_pos = 0; + err = au_do_copy_file(dst, src, len, buf, blksize); + if (do_kfree) + kfree(buf); + else + free_page((unsigned long)buf); + +out: + return err; +} + +/* + * to support a sparse file which is opened with O_APPEND, + * we need to close the file. + */ +static int au_cp_regular(struct au_cp_generic *cpg) +{ + int err, i; + enum { SRC, DST }; + struct { + aufs_bindex_t bindex; + unsigned int flags; + struct dentry *dentry; + int force_wr; + struct file *file; + void *label; + } *f, file[] = { + { + .bindex = cpg->bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + .label = &&out + }, + { + .bindex = cpg->bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .force_wr = !!au_ftest_cpup(cpg->flags, RWDST), + .label = &&out_src + } + }; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + sb = cpg->dentry->d_sb; + f = file; + for (i = 0; i < 2; i++, f++) { + f->dentry = au_h_dptr(cpg->dentry, f->bindex); + f->file = au_h_open(cpg->dentry, f->bindex, f->flags, + /*file*/NULL, f->force_wr); + err = PTR_ERR(f->file); + if (IS_ERR(f->file)) + goto *f->label; + } + + /* try stopping to update while we copyup */ + IMustLock(d_inode(file[SRC].dentry)); + err = au_copy_file(file[DST].file, file[SRC].file, cpg->len); + + fput(file[DST].file); + au_sbr_put(sb, file[DST].bindex); + +out_src: + fput(file[SRC].file); + au_sbr_put(sb, file[SRC].bindex); +out: + return err; +} + +static int au_do_cpup_regular(struct au_cp_generic *cpg, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, rerr; + loff_t l; + struct path h_path; + struct inode *h_src_inode, *h_dst_inode; + + err = 0; + h_src_inode = au_h_iptr(d_inode(cpg->dentry), cpg->bsrc); + l = i_size_read(h_src_inode); + if (cpg->len == -1 || l < cpg->len) + cpg->len = l; + if (cpg->len) { + /* try stopping to update while we are referencing */ + mutex_lock_nested(&h_src_inode->i_mutex, AuLsc_I_CHILD); + au_pin_hdir_unlock(cpg->pin); + + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + h_path.mnt = au_sbr_mnt(cpg->dentry->d_sb, cpg->bsrc); + h_src_attr->iflags = h_src_inode->i_flags; + if (!au_test_nfs(h_src_inode->i_sb)) + err = vfs_getattr(&h_path, &h_src_attr->st); + else { + mutex_unlock(&h_src_inode->i_mutex); + err = vfs_getattr(&h_path, &h_src_attr->st); + mutex_lock_nested(&h_src_inode->i_mutex, AuLsc_I_CHILD); + } + if (unlikely(err)) { + mutex_unlock(&h_src_inode->i_mutex); + goto out; + } + h_src_attr->valid = 1; + err = au_cp_regular(cpg); + mutex_unlock(&h_src_inode->i_mutex); + rerr = au_pin_hdir_relock(cpg->pin); + if (!err && rerr) + err = rerr; + } + if (!err && (h_src_inode->i_state & I_LINKABLE)) { + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bdst); + h_dst_inode = d_inode(h_path.dentry); + spin_lock(&h_dst_inode->i_lock); + h_dst_inode->i_state |= I_LINKABLE; + spin_unlock(&h_dst_inode->i_lock); + } + +out: + return err; +} + +static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, + struct inode *h_dir) +{ + int err, symlen; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } sym; + struct inode *h_inode = d_inode(h_src); + const struct inode_operations *h_iop = h_inode->i_op; + + err = -ENOSYS; + if (unlikely(!h_iop->readlink)) + goto out; + + err = -ENOMEM; + sym.k = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!sym.k)) + goto out; + + /* unnecessary to support mmap_sem since symlink is not mmap-able */ + old_fs = get_fs(); + set_fs(KERNEL_DS); + symlen = h_iop->readlink(h_src, sym.u, PATH_MAX); + err = symlen; + set_fs(old_fs); + + if (symlen > 0) { + sym.k[symlen] = 0; + err = vfsub_symlink(h_dir, h_path, sym.k); + } + free_page((unsigned long)sym.k); + +out: + return err; +} + +static noinline_for_stack +int cpup_entry(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct au_cpup_reg_attr *h_src_attr) +{ + int err; + umode_t mode; + unsigned int mnt_flags; + unsigned char isdir, isreg, force; + const unsigned char do_dt = !!au_ftest_cpup(cpg->flags, DTIME); + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *h_inode, *h_dir, *dir, *inode; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + h_inode = d_inode(h_src); + AuDebugOn(h_inode != au_h_iptr(d_inode(cpg->dentry), cpg->bsrc)); + + /* try stopping to be referenced while we are creating */ + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + if (au_ftest_cpup(cpg->flags, RENAME)) + AuDebugOn(strncmp(h_dst->d_name.name, AUFS_WH_PFX, + AUFS_WH_PFX_LEN)); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDebugOn(h_parent != h_dst->d_parent); + + sb = cpg->dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, cpg->bdst); + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + + isreg = 0; + isdir = 0; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + isreg = 1; + err = vfsub_create(h_dir, &h_path, mode | S_IWUSR, + /*want_excl*/true); + if (!err) + err = au_do_cpup_regular(cpg, h_src_attr); + break; + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); + if (!err) { + /* + * strange behaviour from the users view, + * particularry setattr case + */ + dir = d_inode(dst_parent); + if (au_ibstart(dir) == cpg->bdst) + au_cpup_attr_nlink(dir, /*force*/1); + inode = d_inode(cpg->dentry); + au_cpup_attr_nlink(inode, /*force*/1); + } + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); + break; + case S_IFCHR: + case S_IFBLK: + AuDebugOn(!capable(CAP_MKNOD)); + /*FALLTHROUGH*/ + case S_IFIFO: + case S_IFSOCK: + err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) + && !isdir + && au_opt_test(mnt_flags, XINO) + && (h_inode->i_nlink == 1 + || (h_inode->i_state & I_LINKABLE)) + /* todo: unnecessary? */ + /* && d_inode(cpg->dentry)->i_nlink == 1 */ + && cpg->bdst < cpg->bsrc + && !au_ftest_cpup(cpg->flags, KEEPLINO)) + au_xino_write(sb, cpg->bsrc, h_inode->i_ino, /*ino*/0); + /* ignore this error */ + + if (!err) { + force = 0; + if (isreg) { + force = !!cpg->len; + if (cpg->len == -1) + force = !!i_size_read(h_inode); + } + au_fhsm_wrote(sb, cpg->bdst, force); + } + + if (do_dt) + au_dtime_revert(&dt); + return err; +} + +static int au_do_ren_after_cpup(struct au_cp_generic *cpg, struct path *h_path) +{ + int err; + struct dentry *dentry, *h_dentry, *h_parent, *parent; + struct inode *h_dir; + aufs_bindex_t bdst; + + dentry = cpg->dentry; + bdst = cpg->bdst; + h_dentry = au_h_dptr(dentry, bdst); + if (!au_ftest_cpup(cpg->flags, OVERWRITE)) { + dget(h_dentry); + au_set_h_dptr(dentry, bdst, NULL); + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (!err) + h_path->dentry = dget(au_h_dptr(dentry, bdst)); + au_set_h_dptr(dentry, bdst, h_dentry); + } else { + err = 0; + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + dput(parent); + h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent); + if (IS_ERR(h_path->dentry)) + err = PTR_ERR(h_path->dentry); + } + if (unlikely(err)) + goto out; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDbg("%pd %pd\n", h_dentry, h_path->dentry); + /* no delegation since it is just created */ + err = vfsub_rename(h_dir, h_dentry, h_dir, h_path, /*delegated*/NULL); + dput(h_path->dentry); + +out: + return err; +} + +/* + * copyup the @dentry from @bsrc to @bdst. + * the caller must set the both of lower dentries. + * @len is for truncating when it is -1 copyup the entire file. + * in link/rename cases, @dst_parent may be different from the real one. + * basic->bsrc can be larger than basic->bdst. + */ +static int au_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibstart; + unsigned char isdir, plink; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode; + struct super_block *sb; + struct au_branch *br; + /* to reuduce stack size */ + struct { + struct au_dtime dt; + struct path h_path; + struct au_cpup_reg_attr h_src_attr; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->h_src_attr.valid = 0; + + sb = cpg->dentry->d_sb; + br = au_sbr(sb, cpg->bdst); + a->h_path.mnt = au_br_mnt(br); + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + inode = d_inode(cpg->dentry); + + if (!dst_parent) + dst_parent = dget_parent(cpg->dentry); + else + dget(dst_parent); + + plink = !!au_opt_test(au_mntflags(sb), PLINK); + dst_inode = au_h_iptr(inode, cpg->bdst); + if (dst_inode) { + if (unlikely(!plink)) { + err = -EIO; + AuIOErr("hi%lu(i%lu) exists on b%d " + "but plink is disabled\n", + dst_inode->i_ino, inode->i_ino, cpg->bdst); + goto out_parent; + } + + if (dst_inode->i_nlink) { + const int do_dt = au_ftest_cpup(cpg->flags, DTIME); + + h_src = au_plink_lkup(inode, cpg->bdst); + err = PTR_ERR(h_src); + if (IS_ERR(h_src)) + goto out_parent; + if (unlikely(d_is_negative(h_src))) { + err = -EIO; + AuIOErr("i%lu exists on b%d " + "but not pseudo-linked\n", + inode->i_ino, cpg->bdst); + dput(h_src); + goto out_parent; + } + + if (do_dt) { + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + } + + a->h_path.dentry = h_dst; + delegated = NULL; + err = vfsub_link(h_src, h_dir, &a->h_path, &delegated); + if (!err && au_ftest_cpup(cpg->flags, RENAME)) + err = au_do_ren_after_cpup(cpg, &a->h_path); + if (do_dt) + au_dtime_revert(&a->dt); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src); + goto out_parent; + } else + /* todo: cpup_wh_file? */ + /* udba work */ + au_update_ibrange(inode, /*do_put_zero*/1); + } + + isdir = S_ISDIR(inode->i_mode); + old_ibstart = au_ibstart(inode); + err = cpup_entry(cpg, dst_parent, &a->h_src_attr); + if (unlikely(err)) + goto out_rev; + dst_inode = d_inode(h_dst); + mutex_lock_nested(&dst_inode->i_mutex, AuLsc_I_CHILD2); + /* todo: necessary? */ + /* au_pin_hdir_unlock(cpg->pin); */ + + err = cpup_iattr(cpg->dentry, cpg->bdst, h_src, &a->h_src_attr); + if (unlikely(err)) { + /* todo: necessary? */ + /* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */ + mutex_unlock(&dst_inode->i_mutex); + goto out_rev; + } + + if (cpg->bdst < old_ibstart) { + if (S_ISREG(inode->i_mode)) { + err = au_dy_iaop(inode, cpg->bdst, dst_inode); + if (unlikely(err)) { + /* ignore an error */ + /* au_pin_hdir_relock(cpg->pin); */ + mutex_unlock(&dst_inode->i_mutex); + goto out_rev; + } + } + au_set_ibstart(inode, cpg->bdst); + } else + au_set_ibend(inode, cpg->bdst); + au_set_h_iptr(inode, cpg->bdst, au_igrab(dst_inode), + au_hi_flags(inode, isdir)); + + /* todo: necessary? */ + /* err = au_pin_hdir_relock(cpg->pin); */ + mutex_unlock(&dst_inode->i_mutex); + if (unlikely(err)) + goto out_rev; + + src_inode = d_inode(h_src); + if (!isdir + && (src_inode->i_nlink > 1 + || src_inode->i_state & I_LINKABLE) + && plink) + au_plink_append(inode, cpg->bdst, h_dst); + + if (au_ftest_cpup(cpg->flags, RENAME)) { + a->h_path.dentry = h_dst; + err = au_do_ren_after_cpup(cpg, &a->h_path); + } + if (!err) + goto out_parent; /* success */ + + /* revert */ +out_rev: + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + a->h_path.dentry = h_dst; + rerr = 0; + if (d_is_positive(h_dst)) { + if (!isdir) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, + /*delegated*/NULL, /*force*/0); + } else + rerr = vfsub_rmdir(h_dir, &a->h_path); + } + au_dtime_revert(&a->dt); + if (rerr) { + AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); + err = -EIO; + } +out_parent: + dput(dst_parent); + kfree(a); +out: + return err; +} + +#if 0 /* reserved */ +struct au_cpup_single_args { + int *errp; + struct au_cp_generic *cpg; + struct dentry *dst_parent; +}; + +static void au_call_cpup_single(void *args) +{ + struct au_cpup_single_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_single(a->cpg, a->dst_parent); + au_pin_hdir_release(a->cpg->pin); +} +#endif + +/* + * prevent SIGXFSZ in copy-up. + * testing CAP_MKNOD is for generic fs, + * but CAP_FSETID is for xfs only, currently. + */ +static int au_cpup_sio_test(struct au_pin *pin, umode_t mode) +{ + int do_sio; + struct super_block *sb; + struct inode *h_dir; + + do_sio = 0; + sb = au_pinned_parent(pin)->d_sb; + if (!au_wkq_test() + && (!au_sbi(sb)->si_plink_maint_pid + || au_plink_maint(sb, AuLock_NOPLM))) { + switch (mode & S_IFMT) { + case S_IFREG: + /* no condition about RLIMIT_FSIZE and the file size */ + do_sio = 1; + break; + case S_IFCHR: + case S_IFBLK: + do_sio = !capable(CAP_MKNOD); + break; + } + if (!do_sio) + do_sio = ((mode & (S_ISUID | S_ISGID)) + && !capable(CAP_FSETID)); + /* this workaround may be removed in the future */ + if (!do_sio) { + h_dir = au_pinned_h_dir(pin); + do_sio = h_dir->i_mode & S_ISVTX; + } + } + + return do_sio; +} + +#if 0 /* reserved */ +int au_sio_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, wkq_err; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + if (!au_cpup_sio_test(pin, d_inode(h_dentry)->i_mode)) + err = au_cpup_single(cpg, dst_parent); + else { + struct au_cpup_single_args args = { + .errp = &err, + .cpg = cpg, + .dst_parent = dst_parent + }; + wkq_err = au_wkq_wait(au_call_cpup_single, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} +#endif + +/* + * copyup the @dentry from the first active lower branch to @bdst, + * using au_cpup_single(). + */ +static int au_cpup_simple(struct au_cp_generic *cpg) +{ + int err; + unsigned int flags_orig; + struct dentry *dentry; + + AuDebugOn(cpg->bsrc < 0); + + dentry = cpg->dentry; + DiMustWriteLock(dentry); + + err = au_lkup_neg(dentry, cpg->bdst, /*wh*/1); + if (!err) { + flags_orig = cpg->flags; + au_fset_cpup(cpg->flags, RENAME); + err = au_cpup_single(cpg, NULL); + cpg->flags = flags_orig; + if (!err) + return 0; /* success */ + + /* revert */ + au_set_h_dptr(dentry, cpg->bdst, NULL); + au_set_dbstart(dentry, cpg->bsrc); + } + + return err; +} + +struct au_cpup_simple_args { + int *errp; + struct au_cp_generic *cpg; +}; + +static void au_call_cpup_simple(void *args) +{ + struct au_cpup_simple_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_simple(a->cpg); + au_pin_hdir_release(a->cpg->pin); +} + +static int au_do_sio_cpup_simple(struct au_cp_generic *cpg) +{ + int err, wkq_err; + struct dentry *dentry, *parent; + struct file *h_file; + struct inode *h_dir; + + dentry = cpg->dentry; + h_file = NULL; + if (au_ftest_cpup(cpg->flags, HOPEN)) { + AuDebugOn(cpg->bsrc < 0); + h_file = au_h_open_pre(dentry, cpg->bsrc, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + } + + parent = dget_parent(dentry); + h_dir = au_h_iptr(d_inode(parent), cpg->bdst); + if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_simple(cpg); + else { + struct au_cpup_simple_args args = { + .errp = &err, + .cpg = cpg + }; + wkq_err = au_wkq_wait(au_call_cpup_simple, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + dput(parent); + if (h_file) + au_h_open_post(dentry, cpg->bsrc, h_file); + +out: + return err; +} + +int au_sio_cpup_simple(struct au_cp_generic *cpg) +{ + aufs_bindex_t bsrc, bend; + struct dentry *dentry, *h_dentry; + + if (cpg->bsrc < 0) { + dentry = cpg->dentry; + bend = au_dbend(dentry); + for (bsrc = cpg->bdst + 1; bsrc <= bend; bsrc++) { + h_dentry = au_h_dptr(dentry, bsrc); + if (h_dentry) { + AuDebugOn(d_is_negative(h_dentry)); + break; + } + } + AuDebugOn(bsrc > bend); + cpg->bsrc = bsrc; + } + AuDebugOn(cpg->bsrc <= cpg->bdst); + return au_do_sio_cpup_simple(cpg); +} + +int au_sio_cpdown_simple(struct au_cp_generic *cpg) +{ + AuDebugOn(cpg->bdst <= cpg->bsrc); + return au_do_sio_cpup_simple(cpg); +} + +/* ---------------------------------------------------------------------- */ + +/* + * copyup the deleted file for writing. + */ +static int au_do_cpup_wh(struct au_cp_generic *cpg, struct dentry *wh_dentry, + struct file *file) +{ + int err; + unsigned int flags_orig; + aufs_bindex_t bsrc_orig; + struct dentry *h_d_dst, *h_d_start; + struct au_dinfo *dinfo; + struct au_hdentry *hdp; + + dinfo = au_di(cpg->dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bsrc_orig = cpg->bsrc; + cpg->bsrc = dinfo->di_bstart; + hdp = dinfo->di_hdentry; + h_d_dst = hdp[0 + cpg->bdst].hd_dentry; + dinfo->di_bstart = cpg->bdst; + hdp[0 + cpg->bdst].hd_dentry = wh_dentry; + h_d_start = NULL; + if (file) { + h_d_start = hdp[0 + cpg->bsrc].hd_dentry; + hdp[0 + cpg->bsrc].hd_dentry = au_hf_top(file)->f_path.dentry; + } + flags_orig = cpg->flags; + cpg->flags = !AuCpup_DTIME; + err = au_cpup_single(cpg, /*h_parent*/NULL); + cpg->flags = flags_orig; + if (file) { + if (!err) + err = au_reopen_nondir(file); + hdp[0 + cpg->bsrc].hd_dentry = h_d_start; + } + hdp[0 + cpg->bdst].hd_dentry = h_d_dst; + dinfo->di_bstart = cpg->bsrc; + cpg->bsrc = bsrc_orig; + + return err; +} + +static int au_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err; + aufs_bindex_t bdst; + struct au_dtime dt; + struct dentry *dentry, *parent, *h_parent, *wh_dentry; + struct au_branch *br; + struct path h_path; + + dentry = cpg->dentry; + bdst = cpg->bdst; + br = au_sbr(dentry->d_sb, bdst); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + h_path.dentry = h_parent; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, parent, &h_path); + err = au_do_cpup_wh(cpg, wh_dentry, file); + if (unlikely(err)) + goto out_wh; + + dget(wh_dentry); + h_path.dentry = wh_dentry; + if (!d_is_dir(wh_dentry)) { + /* no delegation since it is just created */ + err = vfsub_unlink(d_inode(h_parent), &h_path, + /*delegated*/NULL, /*force*/0); + } else + err = vfsub_rmdir(d_inode(h_parent), &h_path); + if (unlikely(err)) { + AuIOErr("failed remove copied-up tmp file %pd(%d)\n", + wh_dentry, err); + err = -EIO; + } + au_dtime_revert(&dt); + au_set_hi_wh(d_inode(dentry), bdst, wh_dentry); + +out_wh: + dput(wh_dentry); +out: + dput(parent); + return err; +} + +struct au_cpup_wh_args { + int *errp; + struct au_cp_generic *cpg; + struct file *file; +}; + +static void au_call_cpup_wh(void *args) +{ + struct au_cpup_wh_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_wh(a->cpg, a->file); + au_pin_hdir_release(a->cpg->pin); +} + +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err, wkq_err; + aufs_bindex_t bdst; + struct dentry *dentry, *parent, *h_orph, *h_parent; + struct inode *dir, *h_dir, *h_tmpdir; + struct au_wbr *wbr; + struct au_pin wh_pin, *pin_orig; + + dentry = cpg->dentry; + bdst = cpg->bdst; + parent = dget_parent(dentry); + dir = d_inode(parent); + h_orph = NULL; + h_parent = NULL; + h_dir = au_igrab(au_h_iptr(dir, bdst)); + h_tmpdir = h_dir; + pin_orig = NULL; + if (!h_dir->i_nlink) { + wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; + h_orph = wbr->wbr_orph; + + h_parent = dget(au_h_dptr(parent, bdst)); + au_set_h_dptr(parent, bdst, dget(h_orph)); + h_tmpdir = d_inode(h_orph); + au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); + + mutex_lock_nested(&h_tmpdir->i_mutex, AuLsc_I_PARENT3); + /* todo: au_h_open_pre()? */ + + pin_orig = cpg->pin; + au_pin_init(&wh_pin, dentry, bdst, AuLsc_DI_PARENT, + AuLsc_I_PARENT3, cpg->pin->udba, AuPin_DI_LOCKED); + cpg->pin = &wh_pin; + } + + if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_wh(cpg, file); + else { + struct au_cpup_wh_args args = { + .errp = &err, + .cpg = cpg, + .file = file + }; + wkq_err = au_wkq_wait(au_call_cpup_wh, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + if (h_orph) { + mutex_unlock(&h_tmpdir->i_mutex); + /* todo: au_h_open_post()? */ + au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); + au_set_h_dptr(parent, bdst, h_parent); + AuDebugOn(!pin_orig); + cpg->pin = pin_orig; + } + iput(h_dir); + dput(parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generic routine for both of copy-up and copy-down. + */ +/* cf. revalidate function in file.c */ +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg) +{ + int err; + struct au_pin pin; + struct dentry *d, *parent, *h_parent, *real_parent, *h_dentry; + + err = 0; + parent = dget_parent(dentry); + if (IS_ROOT(parent)) + goto out; + + au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, + au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); + + /* do not use au_dpage */ + real_parent = parent; + while (1) { + dput(parent); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + if (h_parent) + goto out; /* success */ + + /* find top dir which is necessary to cpup */ + do { + d = parent; + dput(parent); + parent = dget_parent(d); + di_read_lock_parent3(parent, !AuLock_IR); + h_parent = au_h_dptr(parent, bdst); + di_read_unlock(parent, !AuLock_IR); + } while (!h_parent); + + if (d != real_parent) + di_write_lock_child3(d); + + /* somebody else might create while we were sleeping */ + h_dentry = au_h_dptr(d, bdst); + if (!h_dentry || d_is_negative(h_dentry)) { + if (h_dentry) + au_update_dbstart(d); + + au_pin_set_dentry(&pin, d); + err = au_do_pin(&pin); + if (!err) { + err = cp(d, bdst, &pin, h_parent, arg); + au_unpin(&pin); + } + } + + if (d != real_parent) + di_write_unlock(d); + if (unlikely(err)) + break; + } + +out: + dput(parent); + return err; +} + +static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent __maybe_unused, + void *arg __maybe_unused) +{ + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = bdst, + .bsrc = -1, + .len = 0, + .pin = pin, + .flags = AuCpup_DTIME + }; + return au_sio_cpup_simple(&cpg); +} + +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); +} + +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = d_inode(parent); + err = 0; + if (au_h_iptr(dir, bdst)) + goto out; + + di_read_unlock(parent, AuLock_IR); + di_write_lock_parent(parent); + /* someone else might change our inode while we were sleeping */ + if (!au_h_iptr(dir, bdst)) + err = au_cpup_dirs(dentry, bdst); + di_downgrade_lock(parent, AuLock_IR); + +out: + dput(parent); + return err; +} --- linux-4.4.0.orig/fs/aufs/cpup.h +++ linux-4.4.0/fs/aufs/cpup.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up/down functions + */ + +#ifndef __AUFS_CPUP_H__ +#define __AUFS_CPUP_H__ + +#ifdef __KERNEL__ + +#include + +struct inode; +struct file; +struct au_pin; + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags); +void au_cpup_attr_timesizes(struct inode *inode); +void au_cpup_attr_nlink(struct inode *inode, int force); +void au_cpup_attr_changeable(struct inode *inode); +void au_cpup_igen(struct inode *inode, struct inode *h_inode); +void au_cpup_attr_all(struct inode *inode, int force); + +/* ---------------------------------------------------------------------- */ + +struct au_cp_generic { + struct dentry *dentry; + aufs_bindex_t bdst, bsrc; + loff_t len; + struct au_pin *pin; + unsigned int flags; +}; + +/* cpup flags */ +#define AuCpup_DTIME 1 /* do dtime_store/revert */ +#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, + for link(2) */ +#define AuCpup_RENAME (1 << 2) /* rename after cpup */ +#define AuCpup_HOPEN (1 << 3) /* call h_open_pre/post() in + cpup */ +#define AuCpup_OVERWRITE (1 << 4) /* allow overwriting the + existing entry */ +#define AuCpup_RWDST (1 << 5) /* force write target even if + the branch is marked as RO */ + +#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) +#define au_fset_cpup(flags, name) \ + do { (flags) |= AuCpup_##name; } while (0) +#define au_fclr_cpup(flags, name) \ + do { (flags) &= ~AuCpup_##name; } while (0) + +int au_copy_file(struct file *dst, struct file *src, loff_t len); +int au_sio_cpup_simple(struct au_cp_generic *cpg); +int au_sio_cpdown_simple(struct au_cp_generic *cpg); +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file); + +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg); +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +/* keep timestamps when copyup */ +struct au_dtime { + struct dentry *dt_dentry; + struct path dt_h_path; + struct timespec dt_atime, dt_mtime; +}; +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path); +void au_dtime_revert(struct au_dtime *dt); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ --- linux-4.4.0.orig/fs/aufs/dbgaufs.c +++ linux-4.4.0/fs/aufs/dbgaufs.c @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#include +#include "aufs.h" + +#ifndef CONFIG_SYSFS +#error DEBUG_FS depends upon SYSFS +#endif + +static struct dentry *dbgaufs; +static const mode_t dbgaufs_mode = S_IRUSR | S_IRGRP | S_IROTH; + +/* 20 is max digits length of ulong 64 */ +struct dbgaufs_arg { + int n; + char a[20 * 4]; +}; + +/* + * common function for all XINO files + */ +static int dbgaufs_xi_release(struct inode *inode __maybe_unused, + struct file *file) +{ + kfree(file->private_data); + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt) +{ + int err; + struct kstat st; + struct dbgaufs_arg *p; + + err = -ENOMEM; + p = kmalloc(sizeof(*p), GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + p->n = 0; + file->private_data = p; + if (!xf) + goto out; + + err = vfs_getattr(&xf->f_path, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%ld, %llux%lu %lld\n", + (long)file_count(xf), st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%lu %lld\n", + st.blocks, st.blksize, + (long long)st.size); + AuDebugOn(p->n >= sizeof(p->a)); + } else { + p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); + err = 0; + } + +out: + return err; + +} + +static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +/* ---------------------------------------------------------------------- */ + +struct dbgaufs_plink_arg { + int n; + char a[]; +}; + +static int dbgaufs_plink_release(struct inode *inode __maybe_unused, + struct file *file) +{ + free_page((unsigned long)file->private_data); + return 0; +} + +static int dbgaufs_plink_open(struct inode *inode, struct file *file) +{ + int err, i, limit; + unsigned long n, sum; + struct dbgaufs_plink_arg *p; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct au_sphlhead *sphl; + + err = -ENOMEM; + p = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = -EFBIG; + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (au_opt_test(au_mntflags(sb), PLINK)) { + limit = PAGE_SIZE - sizeof(p->n); + + /* the number of buckets */ + n = snprintf(p->a + p->n, limit, "%d\n", AuPlink_NHASH); + p->n += n; + limit -= n; + + sum = 0; + for (i = 0, sphl = sbinfo->si_plink; + i < AuPlink_NHASH; + i++, sphl++) { + n = au_sphl_count(sphl); + sum += n; + + n = snprintf(p->a + p->n, limit, "%lu ", n); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } + p->a[p->n - 1] = '\n'; + + /* the sum of plinks */ + n = snprintf(p->a + p->n, limit, "%lu\n", sum); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } else { +#define str "1\n0\n0\n" + p->n = sizeof(str) - 1; + strcpy(p->a, str); +#undef str + } + si_read_unlock(sb); + + err = 0; + file->private_data = p; + goto out; /* success */ + +out_free: + free_page((unsigned long)p); +out: + return err; +} + +static ssize_t dbgaufs_plink_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_plink_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +static const struct file_operations dbgaufs_plink_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_plink_open, + .release = dbgaufs_plink_release, + .read = dbgaufs_plink_read +}; + +/* ---------------------------------------------------------------------- */ + +static int dbgaufs_xib_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xib_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xib_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +/* ---------------------------------------------------------------------- */ + +#define DbgaufsXi_PREFIX "xi" + +static int dbgaufs_xino_open(struct inode *inode, struct file *file) +{ + int err; + long l; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct file *xf; + struct qstr *name; + + err = -ENOENT; + xf = NULL; + name = &file->f_path.dentry->d_name; + if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) + || memcmp(name->name, DbgaufsXi_PREFIX, + sizeof(DbgaufsXi_PREFIX) - 1))) + goto out; + err = kstrtol(name->name + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (l <= au_sbend(sb)) { + xf = au_sbr(sb, (aufs_bindex_t)l)->br_xino.xi_file; + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1); + } else + err = -ENOENT; + si_read_unlock(sb); + +out: + return err; +} + +static const struct file_operations dbgaufs_xino_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xino_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bend; + struct au_branch *br; + struct au_xino_file *xi; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + xi = &br->br_xino; + debugfs_remove(xi->xi_dbgaufs); + xi->xi_dbgaufs = NULL; + } +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + struct au_branch *br; + struct au_xino_file *xi; + aufs_bindex_t bend; + char name[sizeof(DbgaufsXi_PREFIX) + 5]; /* "xi" bindex NULL */ + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + br = au_sbr(sb, bindex); + xi = &br->br_xino; + AuDebugOn(xi->xi_dbgaufs); + xi->xi_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + /* ignore an error */ + if (unlikely(!xi->xi_dbgaufs)) + AuWarn1("failed %s under debugfs\n", name); + } +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +static int dbgaufs_xigen_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xigen_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xigen_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + int err; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -EIO; + sbinfo->si_dbgaufs_xigen = debugfs_create_file + ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xigen_fop); + if (sbinfo->si_dbgaufs_xigen) + err = 0; + + return err; +} +#else +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + return 0; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_si_fin(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__fin' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + debugfs_remove_recursive(sbinfo->si_dbgaufs); + sbinfo->si_dbgaufs = NULL; + kobject_put(&sbinfo->si_kobj); +} + +int dbgaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + char name[SysaufsSiNameLen]; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -ENOENT; + if (!dbgaufs) { + AuErr1("/debug/aufs is uninitialized\n"); + goto out; + } + + err = -EIO; + sysaufs_name(sbinfo, name); + sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); + if (unlikely(!sbinfo->si_dbgaufs)) + goto out; + kobject_get(&sbinfo->si_kobj); + + sbinfo->si_dbgaufs_xib = debugfs_create_file + ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xib_fop); + if (unlikely(!sbinfo->si_dbgaufs_xib)) + goto out_dir; + + sbinfo->si_dbgaufs_plink = debugfs_create_file + ("plink", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_plink_fop); + if (unlikely(!sbinfo->si_dbgaufs_plink)) + goto out_dir; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_fin(void) +{ + debugfs_remove(dbgaufs); +} + +int __init dbgaufs_init(void) +{ + int err; + + err = -EIO; + dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); + if (dbgaufs) + err = 0; + return err; +} --- linux-4.4.0.orig/fs/aufs/dbgaufs.h +++ linux-4.4.0/fs/aufs/dbgaufs.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#ifndef __DBGAUFS_H__ +#define __DBGAUFS_H__ + +#ifdef __KERNEL__ + +struct super_block; +struct au_sbinfo; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_si_fin(struct au_sbinfo *sbinfo); +int dbgaufs_si_init(struct au_sbinfo *sbinfo); +void dbgaufs_fin(void); +int __init dbgaufs_init(void); +#else +AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) +AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) +AuStubVoid(dbgaufs_fin, void) +AuStubInt0(__init dbgaufs_init, void) +#endif /* CONFIG_DEBUG_FS */ + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ --- linux-4.4.0.orig/fs/aufs/dcsub.c +++ linux-4.4.0/fs/aufs/dcsub.c @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#include "aufs.h" + +static void au_dpage_free(struct au_dpage *dpage) +{ + int i; + struct dentry **p; + + p = dpage->dentries; + for (i = 0; i < dpage->ndentry; i++) + dput(*p++); + free_page((unsigned long)dpage->dentries); +} + +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) +{ + int err; + void *p; + + err = -ENOMEM; + dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); + if (unlikely(!dpages->dpages)) + goto out; + + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out_dpages; + + dpages->dpages[0].ndentry = 0; + dpages->dpages[0].dentries = p; + dpages->ndpage = 1; + return 0; /* success */ + +out_dpages: + kfree(dpages->dpages); +out: + return err; +} + +void au_dpages_free(struct au_dcsub_pages *dpages) +{ + int i; + struct au_dpage *p; + + p = dpages->dpages; + for (i = 0; i < dpages->ndpage; i++) + au_dpage_free(p++); + kfree(dpages->dpages); +} + +static int au_dpages_append(struct au_dcsub_pages *dpages, + struct dentry *dentry, gfp_t gfp) +{ + int err, sz; + struct au_dpage *dpage; + void *p; + + dpage = dpages->dpages + dpages->ndpage - 1; + sz = PAGE_SIZE / sizeof(dentry); + if (unlikely(dpage->ndentry >= sz)) { + AuLabel(new dpage); + err = -ENOMEM; + sz = dpages->ndpage * sizeof(*dpages->dpages); + p = au_kzrealloc(dpages->dpages, sz, + sz + sizeof(*dpages->dpages), gfp); + if (unlikely(!p)) + goto out; + + dpages->dpages = p; + dpage = dpages->dpages + dpages->ndpage; + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out; + + dpage->ndentry = 0; + dpage->dentries = p; + dpages->ndpage++; + } + + AuDebugOn(au_dcount(dentry) <= 0); + dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); + return 0; /* success */ + +out: + return err; +} + +/* todo: BAD approach */ +/* copied from linux/fs/dcache.c */ +enum d_walk_ret { + D_WALK_CONTINUE, + D_WALK_QUIT, + D_WALK_NORETRY, + D_WALK_SKIP, +}; + +extern void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *), + void (*finish)(void *)); + +struct ac_dpages_arg { + int err; + struct au_dcsub_pages *dpages; + struct super_block *sb; + au_dpages_test test; + void *arg; +}; + +static enum d_walk_ret au_call_dpages_append(void *_arg, struct dentry *dentry) +{ + enum d_walk_ret ret; + struct ac_dpages_arg *arg = _arg; + + ret = D_WALK_CONTINUE; + if (dentry->d_sb == arg->sb + && !IS_ROOT(dentry) + && au_dcount(dentry) > 0 + && au_di(dentry) + && (!arg->test || arg->test(dentry, arg->arg))) { + arg->err = au_dpages_append(arg->dpages, dentry, GFP_ATOMIC); + if (unlikely(arg->err)) + ret = D_WALK_QUIT; + } + + return ret; +} + +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg) +{ + struct ac_dpages_arg args = { + .err = 0, + .dpages = dpages, + .sb = root->d_sb, + .test = test, + .arg = arg + }; + + d_walk(root, &args, au_call_dpages_append, NULL); + + return args.err; +} + +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg) +{ + int err; + + err = 0; + write_seqlock(&rename_lock); + spin_lock(&dentry->d_lock); + if (do_include + && au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + + /* + * RCU for vfsmount is unnecessary since this is a traverse in a single + * mount + */ + while (!IS_ROOT(dentry)) { + dentry = dentry->d_parent; /* rename_lock is locked */ + spin_lock(&dentry->d_lock); + if (au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + break; + } + +out: + write_sequnlock(&rename_lock); + return err; +} + +static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) +{ + return au_di(dentry) && dentry->d_sb == arg; +} + +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include) +{ + return au_dcsub_pages_rev(dpages, dentry, do_include, + au_dcsub_dpages_aufs, dentry->d_sb); +} + +int au_test_subdir(struct dentry *d1, struct dentry *d2) +{ + struct path path[2] = { + { + .dentry = d1 + }, + { + .dentry = d2 + } + }; + + return path_is_under(path + 0, path + 1); +} --- linux-4.4.0.orig/fs/aufs/dcsub.h +++ linux-4.4.0/fs/aufs/dcsub.h @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#ifndef __AUFS_DCSUB_H__ +#define __AUFS_DCSUB_H__ + +#ifdef __KERNEL__ + +#include +#include + +struct au_dpage { + int ndentry; + struct dentry **dentries; +}; + +struct au_dcsub_pages { + int ndpage; + struct au_dpage *dpages; +}; + +/* ---------------------------------------------------------------------- */ + +/* dcsub.c */ +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); +void au_dpages_free(struct au_dcsub_pages *dpages); +typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg); +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg); +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include); +int au_test_subdir(struct dentry *d1, struct dentry *d2); + +/* ---------------------------------------------------------------------- */ + +/* + * todo: in linux-3.13, several similar (but faster) helpers are added to + * include/linux/dcache.h. Try them (in the future). + */ + +static inline int au_d_hashed_positive(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = 0; + if (unlikely(d_unhashed(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + return err; +} + +static inline int au_d_linkable(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = au_d_hashed_positive(d); + if (err + && d_is_positive(d) + && (inode->i_state & I_LINKABLE)) + err = 0; + return err; +} + +static inline int au_d_alive(struct dentry *d) +{ + int err; + struct inode *inode; + + err = 0; + if (!IS_ROOT(d)) + err = au_d_hashed_positive(d); + else { + inode = d_inode(d); + if (unlikely(d_unlinked(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + } + return err; +} + +static inline int au_alive_dir(struct dentry *d) +{ + int err; + + err = au_d_alive(d); + if (unlikely(err || IS_DEADDIR(d_inode(d)))) + err = -ENOENT; + return err; +} + +static inline int au_qstreq(struct qstr *a, struct qstr *b) +{ + return a->len == b->len + && !memcmp(a->name, b->name, a->len); +} + +/* + * by the commit + * 360f547 2015-01-25 dcache: let the dentry count go down to zero without + * taking d_lock + * the type of d_lockref.count became int, but the inlined function d_count() + * still returns unsigned int. + * I don't know why. Maybe it is for every d_count() users? + * Anyway au_dcount() lives on. + */ +static inline int au_dcount(struct dentry *d) +{ + return (int)d_count(d); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ --- linux-4.4.0.orig/fs/aufs/debug.c +++ linux-4.4.0/fs/aufs/debug.c @@ -0,0 +1,438 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#include "aufs.h" + +/* Returns 0, or -errno. arg is in kp->arg. */ +static int param_atomic_t_set(const char *val, const struct kernel_param *kp) +{ + int err, n; + + err = kstrtoint(val, 0, &n); + if (!err) { + if (n > 0) + au_debug_on(); + else + au_debug_off(); + } + return err; +} + +/* Returns length written or -errno. Buffer is 4k (ie. be short!) */ +static int param_atomic_t_get(char *buffer, const struct kernel_param *kp) +{ + atomic_t *a; + + a = kp->arg; + return sprintf(buffer, "%d", atomic_read(a)); +} + +static struct kernel_param_ops param_ops_atomic_t = { + .set = param_atomic_t_set, + .get = param_atomic_t_get + /* void (*free)(void *arg) */ +}; + +atomic_t aufs_debug = ATOMIC_INIT(0); +MODULE_PARM_DESC(debug, "debug print"); +module_param_named(debug, aufs_debug, atomic_t, S_IRUGO | S_IWUSR | S_IWGRP); + +DEFINE_MUTEX(au_dbg_mtx); /* just to serialize the dbg msgs */ +char *au_plevel = KERN_DEBUG; +#define dpri(fmt, ...) do { \ + if ((au_plevel \ + && strcmp(au_plevel, KERN_DEBUG)) \ + || au_debug_test()) \ + printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +void au_dpri_whlist(struct au_nhash *whlist) +{ + unsigned long ul, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; ul < n; ul++) { + hlist_for_each_entry(pos, head, wh_hash) + dpri("b%d, %.*s, %d\n", + pos->wh_bindex, + pos->wh_str.len, pos->wh_str.name, + pos->wh_str.len); + head++; + } +} + +void au_dpri_vdir(struct au_vdir *vdir) +{ + unsigned long ul; + union au_vdir_deblk_p p; + unsigned char *o; + + if (!vdir || IS_ERR(vdir)) { + dpri("err %ld\n", PTR_ERR(vdir)); + return; + } + + dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %lu\n", + vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, + vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); + for (ul = 0; ul < vdir->vd_nblk; ul++) { + p.deblk = vdir->vd_deblk[ul]; + o = p.deblk; + dpri("[%lu]: %p\n", ul, o); + } +} + +static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, + struct dentry *wh) +{ + char *n = NULL; + int l = 0; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); + return -1; + } + + /* the type of i_blocks depends upon CONFIG_LBDAF */ + BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) + && sizeof(inode->i_blocks) != sizeof(u64)); + if (wh) { + n = (void *)wh->d_name.name; + l = wh->d_name.len; + } + + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, + hn, (long long)timespec_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode->i_version, + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb)) + return; + + iinfo = au_ii(inode); + if (!iinfo) + return; + dpri("i-1: bstart %d, bend %d, gen %d\n", + iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode, NULL)); + if (iinfo->ii_bstart < 0) + return; + hn = 0; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; bindex++) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + do_pri_inode(bindex, iinfo->ii_hinode[0 + bindex].hi_inode, hn, + iinfo->ii_hinode[0 + bindex].hi_whdentry); + } +} + +void au_dpri_dalias(struct inode *inode) +{ + struct dentry *d; + + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) + au_dpri_dentry(d); + spin_unlock(&inode->i_lock); +} + +static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) +{ + struct dentry *wh = NULL; + int hn; + struct au_iinfo *iinfo; + + if (!dentry || IS_ERR(dentry)) { + dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); + return -1; + } + /* do not call dget_parent() here */ + /* note: access d_xxx without d_lock */ + dpri("d%d: %p, %pd2?, %s, cnt %d, flags 0x%x, %shashed\n", + bindex, dentry, dentry, + dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", + au_dcount(dentry), dentry->d_flags, + d_unhashed(dentry) ? "un" : ""); + hn = -1; + if (bindex >= 0 + && d_is_positive(dentry) + && au_test_aufs(dentry->d_sb)) { + iinfo = au_ii(d_inode(dentry)); + if (iinfo) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + wh = iinfo->ii_hinode[0 + bindex].hi_whdentry; + } + } + do_pri_inode(bindex, d_inode(dentry), hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + struct au_hdentry *hdp; + + err = do_pri_dentry(-1, dentry); + if (err || !au_test_aufs(dentry->d_sb)) + return; + + dinfo = au_di(dentry); + if (!dinfo) + return; + dpri("d-1: bstart %d, bend %d, bwh %d, bdiropq %d, gen %d, tmp %d\n", + dinfo->di_bstart, dinfo->di_bend, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry), + dinfo->di_tmpfile); + if (dinfo->di_bstart < 0) + return; + hdp = dinfo->di_hdentry; + for (bindex = dinfo->di_bstart; bindex <= dinfo->di_bend; bindex++) + do_pri_dentry(bindex, hdp[0 + bindex].hd_dentry); +} + +static int do_pri_file(aufs_bindex_t bindex, struct file *file) +{ + char a[32]; + + if (!file || IS_ERR(file)) { + dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); + return -1; + } + a[0] = 0; + if (bindex < 0 + && !IS_ERR_OR_NULL(file->f_path.dentry) + && au_test_aufs(file->f_path.dentry->d_sb) + && au_fi(file)) + snprintf(a, sizeof(a), ", gen %d, mmapped %d", + au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); + dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", + bindex, file->f_mode, file->f_flags, (long)file_count(file), + file->f_version, file->f_pos, a); + if (!IS_ERR_OR_NULL(file->f_path.dentry)) + do_pri_dentry(bindex, file->f_path.dentry); + return 0; +} + +void au_dpri_file(struct file *file) +{ + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hfile; + aufs_bindex_t bindex; + int err; + + err = do_pri_file(-1, file); + if (err + || IS_ERR_OR_NULL(file->f_path.dentry) + || !au_test_aufs(file->f_path.dentry->d_sb)) + return; + + finfo = au_fi(file); + if (!finfo) + return; + if (finfo->fi_btop < 0) + return; + fidir = finfo->fi_hdir; + if (!fidir) + do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); + else + for (bindex = finfo->fi_btop; + bindex >= 0 && bindex <= fidir->fd_bbot; + bindex++) { + hfile = fidir->fd_hfile + bindex; + do_pri_file(bindex, hfile ? hfile->hf_file : NULL); + } +} + +static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) +{ + struct vfsmount *mnt; + struct super_block *sb; + + if (!br || IS_ERR(br)) + goto out; + mnt = au_br_mnt(br); + if (!mnt || IS_ERR(mnt)) + goto out; + sb = mnt->mnt_sb; + if (!sb || IS_ERR(sb)) + goto out; + + dpri("s%d: {perm 0x%x, id %d, cnt %d, wbr %p}, " + "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " + "xino %d\n", + bindex, br->br_perm, br->br_id, atomic_read(&br->br_count), + br->br_wbr, au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), + sb->s_flags, sb->s_count, + atomic_read(&sb->s_active), !!br->br_xino.xi_file); + return 0; + +out: + dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); + return -1; +} + +void au_dpri_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + aufs_bindex_t bindex; + int err; + /* to reuduce stack size */ + struct { + struct vfsmount mnt; + struct au_branch fake; + } *a; + + /* this function can be called from magic sysrq */ + a = kzalloc(sizeof(*a), GFP_ATOMIC); + if (unlikely(!a)) { + dpri("no memory\n"); + return; + } + + a->mnt.mnt_sb = sb; + a->fake.br_path.mnt = &a->mnt; + atomic_set(&a->fake.br_count, 0); + smp_mb(); /* atomic_set */ + err = do_pri_br(-1, &a->fake); + kfree(a); + dpri("dev 0x%x\n", sb->s_dev); + if (err || !au_test_aufs(sb)) + return; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + dpri("nw %d, gen %u, kobj %d\n", + atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, + atomic_read(&sbinfo->si_kobj.kref.refcount)); + for (bindex = 0; bindex <= sbinfo->si_bend; bindex++) + do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); +} + +/* ---------------------------------------------------------------------- */ + +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) +{ + struct inode *h_inode, *inode = d_inode(dentry); + struct dentry *h_dentry; + aufs_bindex_t bindex, bend, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bend = au_dbend(dentry); + bi = au_ibend(inode); + if (bi < bend) + bend = bi; + bindex = au_dbstart(dentry); + bi = au_ibstart(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_inode = au_h_iptr(inode, bindex); + if (unlikely(h_inode != d_inode(h_dentry))) { + au_debug_on(); + AuDbg("b%d, %s:%d\n", bindex, func, line); + AuDbgDentry(dentry); + AuDbgInode(inode); + au_debug_off(); + BUG(); + } + } +} + +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) +{ + int err, i, j; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + AuDebugOn(err); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); + AuDebugOn(err); + for (i = dpages.ndpage - 1; !err && i >= 0; i--) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + for (j = dpage->ndentry - 1; !err && j >= 0; j--) + AuDebugOn(au_digen_test(dentries[j], sigen)); + } + au_dpages_free(&dpages); +} + +void au_dbg_verify_kthread(void) +{ + if (au_wkq_test()) { + au_dbg_blocked(); + /* + * It may be recursive, but udba=notify between two aufs mounts, + * where a single ro branch is shared, is not a problem. + */ + /* WARN_ON(1); */ + } +} + +/* ---------------------------------------------------------------------- */ + +int __init au_debug_init(void) +{ + aufs_bindex_t bindex; + struct au_vdir_destr destr; + + bindex = -1; + AuDebugOn(bindex >= 0); + + destr.len = -1; + AuDebugOn(destr.len < NAME_MAX); + +#ifdef CONFIG_4KSTACKS + pr_warn("CONFIG_4KSTACKS is defined.\n"); +#endif + + return 0; +} --- linux-4.4.0.orig/fs/aufs/debug.h +++ linux-4.4.0/fs/aufs/debug.h @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#ifndef __AUFS_DEBUG_H__ +#define __AUFS_DEBUG_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +#ifdef CONFIG_AUFS_DEBUG +#define AuDebugOn(a) BUG_ON(a) + +/* module parameter */ +extern atomic_t aufs_debug; +static inline void au_debug_on(void) +{ + atomic_inc(&aufs_debug); +} +static inline void au_debug_off(void) +{ + atomic_dec_if_positive(&aufs_debug); +} + +static inline int au_debug_test(void) +{ + return atomic_read(&aufs_debug) > 0; +} +#else +#define AuDebugOn(a) do {} while (0) +AuStubVoid(au_debug_on, void) +AuStubVoid(au_debug_off, void) +AuStubInt0(au_debug_test, void) +#endif /* CONFIG_AUFS_DEBUG */ + +#define param_check_atomic_t(name, p) __param_check(name, p, atomic_t) + +/* ---------------------------------------------------------------------- */ + +/* debug print */ + +#define AuDbg(fmt, ...) do { \ + if (au_debug_test()) \ + pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ +} while (0) +#define AuLabel(l) AuDbg(#l "\n") +#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) +#define AuWarn1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_warn(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_err(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuIOErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + AuIOErr(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuUnsupportMsg "This operation is not supported." \ + " Please report this application to aufs-users ML." +#define AuUnsupport(fmt, ...) do { \ + pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ + dump_stack(); \ +} while (0) + +#define AuTraceErr(e) do { \ + if (unlikely((e) < 0)) \ + AuDbg("err %d\n", (int)(e)); \ +} while (0) + +#define AuTraceErrPtr(p) do { \ + if (IS_ERR(p)) \ + AuDbg("err %ld\n", PTR_ERR(p)); \ +} while (0) + +/* dirty macros for debug print, use with "%.*s" and caution */ +#define AuLNPair(qstr) (qstr)->len, (qstr)->name + +/* ---------------------------------------------------------------------- */ + +struct dentry; +#ifdef CONFIG_AUFS_DEBUG +extern struct mutex au_dbg_mtx; +extern char *au_plevel; +struct au_nhash; +void au_dpri_whlist(struct au_nhash *whlist); +struct au_vdir; +void au_dpri_vdir(struct au_vdir *vdir); +struct inode; +void au_dpri_inode(struct inode *inode); +void au_dpri_dalias(struct inode *inode); +void au_dpri_dentry(struct dentry *dentry); +struct file; +void au_dpri_file(struct file *filp); +struct super_block; +void au_dpri_sb(struct super_block *sb); + +#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); +void au_dbg_verify_kthread(void); + +int __init au_debug_init(void); + +#define AuDbgWhlist(w) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#w "\n"); \ + au_dpri_whlist(w); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgVdir(v) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#v "\n"); \ + au_dpri_vdir(v); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgInode(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_inode(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDAlias(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_dalias(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDentry(d) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#d "\n"); \ + au_dpri_dentry(d); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgFile(f) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#f "\n"); \ + au_dpri_file(f); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSb(sb) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#sb "\n"); \ + au_dpri_sb(sb); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuDbg("%s\n", sym); \ +} while (0) +#else +AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) +AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) +AuStubVoid(au_dbg_verify_kthread, void) +AuStubInt0(__init au_debug_init, void) + +#define AuDbgWhlist(w) do {} while (0) +#define AuDbgVdir(v) do {} while (0) +#define AuDbgInode(i) do {} while (0) +#define AuDbgDAlias(i) do {} while (0) +#define AuDbgDentry(d) do {} while (0) +#define AuDbgFile(f) do {} while (0) +#define AuDbgSb(sb) do {} while (0) +#define AuDbgSym(addr) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +int __init au_sysrq_init(void); +void au_sysrq_fin(void); + +#ifdef CONFIG_HW_CONSOLE +#define au_dbg_blocked() do { \ + WARN_ON(1); \ + handle_sysrq('w'); \ +} while (0) +#else +AuStubVoid(au_dbg_blocked, void) +#endif + +#else +AuStubInt0(__init au_sysrq_init, void) +AuStubVoid(au_sysrq_fin, void) +AuStubVoid(au_dbg_blocked, void) +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ --- linux-4.4.0.orig/fs/aufs/dentry.c +++ linux-4.4.0/fs/aufs/dentry.c @@ -0,0 +1,1136 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#include +#include "aufs.h" + +#define AuLkup_ALLOW_NEG 1 +#define AuLkup_IGNORE_PERM (1 << 1) +#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) +#define au_fset_lkup(flags, name) \ + do { (flags) |= AuLkup_##name; } while (0) +#define au_fclr_lkup(flags, name) \ + do { (flags) &= ~AuLkup_##name; } while (0) + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; +}; + +/* + * returns positive/negative dentry, NULL or an error. + * NULL means whiteout-ed or not-found. + */ +static struct dentry* +au_do_lookup(struct dentry *h_parent, struct dentry *dentry, + aufs_bindex_t bindex, struct qstr *wh_name, + struct au_do_lookup_args *args) +{ + struct dentry *h_dentry; + struct inode *h_inode; + struct au_branch *br; + int wh_found, opq; + unsigned char wh_able; + const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); + const unsigned char ignore_perm = !!au_ftest_lkup(args->flags, + IGNORE_PERM); + + wh_found = 0; + br = au_sbr(dentry->d_sb, bindex); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) + wh_found = au_wh_test(h_parent, wh_name, /*try_sio*/0); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; + if (unlikely(wh_found < 0)) + goto out; + + /* We found a whiteout */ + /* au_set_dbend(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + if (!ignore_perm) + h_dentry = vfsub_lkup_one(&dentry->d_name, h_parent); + else + h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent); + if (IS_ERR(h_dentry)) { + if (PTR_ERR(h_dentry) == -ENAMETOOLONG + && !allow_neg) + h_dentry = NULL; + goto out; + } + + h_inode = d_inode(h_dentry); + if (d_is_negative(h_dentry)) { + if (!allow_neg) + goto out_neg; + } else if (wh_found + || (args->type && args->type != (h_inode->i_mode & S_IFMT))) + goto out_neg; + + if (au_dbend(dentry) <= bindex) + au_set_dbend(dentry, bindex); + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + + if (!d_is_dir(h_dentry) + || !wh_able + || (d_really_is_positive(dentry) && !d_is_dir(dentry))) + goto out; /* success */ + + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + opq = au_diropq_test(h_dentry); + mutex_unlock(&h_inode->i_mutex); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); + else if (unlikely(opq < 0)) { + au_set_h_dptr(dentry, bindex, NULL); + h_dentry = ERR_PTR(opq); + } + goto out; + +out_neg: + dput(h_dentry); + h_dentry = NULL; +out: + return h_dentry; +} + +static int au_test_shwh(struct super_block *sb, const struct qstr *name) +{ + if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) + && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) + return -EPERM; + return 0; +} + +/* + * returns the number of lower positive dentries, + * otherwise an error. + * can be called at unlinking with @type is zero. + */ +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir, dirperm1; + struct qstr whname; + struct au_do_lookup_args args = { + .flags = 0, + .type = type + }; + const struct qstr *name = &dentry->d_name; + struct dentry *parent; + struct super_block *sb; + + sb = dentry->d_sb; + err = au_test_shwh(sb, name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&whname, name); + if (unlikely(err)) + goto out; + + isdir = !!d_is_dir(dentry); + if (!type) + au_fset_lkup(args.flags, ALLOW_NEG); + dirperm1 = !!au_opt_test(au_mntflags(sb), DIRPERM1); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = bstart; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (d_is_positive(h_dentry)) + npositive++; + if (type != S_IFDIR) + break; + continue; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !d_is_dir(h_parent)) + continue; + + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &whname, + &args); + mutex_unlock(&h_dir->i_mutex); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out_parent; + if (h_dentry) + au_fclr_lkup(args.flags, ALLOW_NEG); + if (dirperm1) + au_fset_lkup(args.flags, IGNORE_PERM); + + if (au_dbwh(dentry) == bindex) + break; + if (!h_dentry) + continue; + if (d_is_negative(h_dentry)) + continue; + h_inode = d_inode(h_dentry); + npositive++; + if (!args.type) + args.type = h_inode->i_mode & S_IFMT; + if (args.type != S_IFDIR) + break; + else if (isdir) { + /* the type of lower may be different */ + bdiropq = au_dbdiropq(dentry); + if (bdiropq >= 0 && bdiropq <= bindex) + break; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbstart(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(sb), UDBA_NONE) + && au_dbstart(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %pd, err %d\n", + dentry, err); + } + +out_parent: + dput(parent); + kfree(whname.name); +out: + return err; +} + +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent) +{ + struct dentry *dentry; + int wkq_err; + + if (!au_test_h_perm_sio(d_inode(parent), MAY_EXEC)) + dentry = vfsub_lkup_one(name, parent); + else { + struct vfsub_lkup_one_args args = { + .errp = &dentry, + .name = name, + .parent = parent + }; + + wkq_err = au_wkq_wait(vfsub_call_lkup_one, &args); + if (unlikely(wkq_err)) + dentry = ERR_PTR(wkq_err); + } + + return dentry; +} + +/* + * lookup @dentry on @bindex which should be negative. + */ +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh) +{ + int err; + struct dentry *parent, *h_parent, *h_dentry; + struct au_branch *br; + + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bindex); + br = au_sbr(dentry->d_sb, bindex); + if (wh) + h_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + else + h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; + if (unlikely(d_is_positive(h_dentry))) { + err = -EIO; + AuIOErr("%pd should be negative on b%d.\n", h_dentry, bindex); + dput(h_dentry); + goto out; + } + + err = 0; + if (bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + if (au_dbend(dentry) < bindex) + au_set_dbend(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* subset of struct inode */ +struct au_iattr { + unsigned long i_ino; + /* unsigned int i_nlink; */ + kuid_t i_uid; + kgid_t i_gid; + u64 i_version; +/* + loff_t i_size; + blkcnt_t i_blocks; +*/ + umode_t i_mode; +}; + +static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) +{ + ia->i_ino = h_inode->i_ino; + /* ia->i_nlink = h_inode->i_nlink; */ + ia->i_uid = h_inode->i_uid; + ia->i_gid = h_inode->i_gid; + ia->i_version = h_inode->i_version; +/* + ia->i_size = h_inode->i_size; + ia->i_blocks = h_inode->i_blocks; +*/ + ia->i_mode = (h_inode->i_mode & S_IFMT); +} + +static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) +{ + return ia->i_ino != h_inode->i_ino + /* || ia->i_nlink != h_inode->i_nlink */ + || !uid_eq(ia->i_uid, h_inode->i_uid) + || !gid_eq(ia->i_gid, h_inode->i_gid) + || ia->i_version != h_inode->i_version +/* + || ia->i_size != h_inode->i_size + || ia->i_blocks != h_inode->i_blocks +*/ + || ia->i_mode != (h_inode->i_mode & S_IFMT); +} + +static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, + struct au_branch *br) +{ + int err; + struct au_iattr ia; + struct inode *h_inode; + struct dentry *h_d; + struct super_block *h_sb; + + err = 0; + memset(&ia, -1, sizeof(ia)); + h_sb = h_dentry->d_sb; + h_inode = NULL; + if (d_is_positive(h_dentry)) { + h_inode = d_inode(h_dentry); + au_iattr_save(&ia, h_inode); + } else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) + /* nfs d_revalidate may return 0 for negative dentry */ + /* fuse d_revalidate always return 0 for negative dentry */ + goto out; + + /* main purpose is namei.c:cached_lookup() and d_revalidate */ + h_d = vfsub_lkup_one(&h_dentry->d_name, h_parent); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out; + + err = 0; + if (unlikely(h_d != h_dentry + || d_inode(h_d) != h_inode + || (h_inode && au_iattr_test(&ia, h_inode)))) + err = au_busy_or_stale(); + dput(h_d); + +out: + AuTraceErr(err); + return err; +} + +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br) +{ + int err; + + err = 0; + if (udba == AuOpt_UDBA_REVAL + && !au_test_fs_remote(h_dentry->d_sb)) { + IMustLock(h_dir); + err = (d_inode(h_dentry->d_parent) != h_dir); + } else if (udba != AuOpt_UDBA_NONE) + err = au_h_verify_dentry(h_dentry, h_parent, br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) +{ + int err; + aufs_bindex_t new_bindex, bindex, bend, bwh, bdiropq; + struct au_hdentry tmp, *p, *q; + struct au_dinfo *dinfo; + struct super_block *sb; + + DiMustWriteLock(dentry); + + sb = dentry->d_sb; + dinfo = au_di(dentry); + bend = dinfo->di_bend; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + p = dinfo->di_hdentry + dinfo->di_bstart; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++, p++) { + if (!p->hd_dentry) + continue; + + new_bindex = au_br_index(sb, p->hd_id); + if (new_bindex == bindex) + continue; + + if (dinfo->di_bwh == bindex) + bwh = new_bindex; + if (dinfo->di_bdiropq == bindex) + bdiropq = new_bindex; + if (new_bindex < 0) { + au_hdput(p); + p->hd_dentry = NULL; + continue; + } + + /* swap two lower dentries, and loop again */ + q = dinfo->di_hdentry + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbend(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbend(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + bend = au_dbend(parent); + p = dinfo->di_hdentry; + for (bindex = 0; bindex <= bend; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_bstart = bindex; + break; + } + + if (dinfo->di_bstart >= 0) { + p = dinfo->di_hdentry + bend; + for (bindex = bend; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bend = bindex; + err = 0; + break; + } + } + + return err; +} + +static void au_do_hide(struct dentry *dentry) +{ + struct inode *inode; + + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + if (!d_is_dir(dentry)) { + if (inode->i_nlink && !d_unhashed(dentry)) + drop_nlink(inode); + } else { + clear_nlink(inode); + /* stop next lookup */ + inode->i_flags |= S_DEAD; + } + smp_mb(); /* necessary? */ + } + d_drop(dentry); +} + +static int au_hide_children(struct dentry *parent) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *dentry; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, parent, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + /* in reverse order */ + for (i = dpages.ndpage - 1; i >= 0; i--) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = ndentry - 1; j >= 0; j--) { + dentry = dpage->dentries[j]; + if (dentry != parent) + au_do_hide(dentry); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static void au_hide(struct dentry *dentry) +{ + int err; + + AuDbgDentry(dentry); + if (d_is_dir(dentry)) { + /* shrink_dcache_parent(dentry); */ + err = au_hide_children(dentry); + if (unlikely(err)) + AuIOErr("%pd, failed hiding children, ignored %d\n", + dentry, err); + } + au_do_hide(dentry); +} + +/* + * By adding a dirty branch, a cached dentry may be affected in various ways. + * + * a dirty branch is added + * - on the top of layers + * - in the middle of layers + * - to the bottom of layers + * + * on the added branch there exists + * - a whiteout + * - a diropq + * - a same named entry + * + exist + * * negative --> positive + * * positive --> positive + * - type is unchanged + * - type is changed + * + doesn't exist + * * negative --> negative + * * positive --> negative (rejected by au_br_del() for non-dir case) + * - none + */ +static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, + struct au_dinfo *tmp) +{ + int err; + aufs_bindex_t bindex, bend; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h = { + .dentry = NULL + }; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_bstart < 0); + orig_h.mode = 0; + orig_h.dentry = dinfo->di_hdentry[dinfo->di_bstart].hd_dentry; + orig_h.inode = NULL; + if (d_is_positive(orig_h.dentry)) { + orig_h.inode = d_inode(orig_h.dentry); + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + } + if (tmp->di_bstart >= 0) { + tmp_h.dentry = tmp->di_hdentry[tmp->di_bstart].hd_dentry; + if (d_is_positive(tmp_h.dentry)) { + tmp_h.inode = d_inode(tmp_h.dentry); + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; + } + } + + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (!orig_h.inode) { + AuDbg("nagative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_bstart >= 0 + && tmp->di_bstart < dinfo->di_bstart) { + AuDebugOn(tmp->di_bstart != tmp->di_bend); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + au_set_h_dptr(dentry, dinfo->di_bstart, NULL); + au_di_cp(dinfo, tmp); + hd = tmp->di_hdentry + tmp->di_bstart; + au_set_h_dptr(dentry, tmp->di_bstart, + dget(hd->hd_dentry)); + } + au_dbg_verify_dinode(dentry); + } else { + AuDbg("negative --> positive\n"); + /* + * similar to the behaviour of creating with bypassing + * aufs. + * unhash it in order to force an error in the + * succeeding create operation. + * we should not set S_DEAD here. + */ + d_drop(dentry); + /* au_di_swap(tmp, dinfo); */ + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive originally\n"); + /* inode may be NULL */ + AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); + if (!tmp_h.inode) { + AuDbg("positive --> negative\n"); + /* or bypassing aufs */ + au_hide(dentry); + if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_bstart) + dinfo->di_bwh = tmp->di_bwh; + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else if (orig_h.mode == tmp_h.mode) { + AuDbg("positive --> positive, same type\n"); + if (!S_ISDIR(orig_h.mode) + && dinfo->di_bstart > tmp->di_bstart) { + /* + * similar to the behaviour of removing and + * creating. + */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else { + /* fill empty slots */ + if (dinfo->di_bstart > tmp->di_bstart) + dinfo->di_bstart = tmp->di_bstart; + if (dinfo->di_bend < tmp->di_bend) + dinfo->di_bend = tmp->di_bend; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + hd = tmp->di_hdentry; + bend = dinfo->di_bend; + for (bindex = tmp->di_bstart; bindex <= bend; + bindex++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd[bindex].hd_dentry; + if (!h_dentry) + continue; + AuDebugOn(d_is_negative(h_dentry)); + h_inode = d_inode(h_dentry); + AuDebugOn(orig_h.mode + != (h_inode->i_mode + & S_IFMT)); + au_set_h_dptr(dentry, bindex, + dget(h_dentry)); + } + err = au_refresh_hinode(inode, dentry); + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive --> positive, different type\n"); + /* similar to the behaviour of removing and creating */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } + } + +out: + return err; +} + +void au_refresh_dop(struct dentry *dentry, int force_reval) +{ + const struct dentry_operations *dop + = force_reval ? &aufs_dop : dentry->d_sb->s_d_op; + static const unsigned int mask + = DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE; + + BUILD_BUG_ON(sizeof(mask) != sizeof(dentry->d_flags)); + + if (dentry->d_op == dop) + return; + + AuDbg("%pd\n", dentry); + spin_lock(&dentry->d_lock); + if (dop == &aufs_dop) + dentry->d_flags |= mask; + else + dentry->d_flags &= ~mask; + dentry->d_op = dop; + spin_unlock(&dentry->d_lock); +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange; + unsigned int sigen; + struct au_dinfo *dinfo, *tmp; + struct super_block *sb; + struct inode *inode; + + DiMustWriteLock(dentry); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(d_really_is_negative(parent)); + + sb = dentry->d_sb; + sigen = au_sigen(sb); + err = au_digen_test(parent, sigen); + if (unlikely(err)) + goto out; + + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + ebrange = au_dbrange_test(dentry); + if (!ebrange) + ebrange = au_do_refresh_hdentry(dentry, parent); + + if (d_unhashed(dentry) || ebrange /* || dinfo->di_tmpfile */) { + AuDebugOn(au_dbstart(dentry) < 0 && au_dbend(dentry) >= 0); + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + err = au_refresh_hinode_self(inode); + } + au_dbg_verify_dinode(dentry); + if (!err) + goto out_dgen; /* success */ + goto out; + } + + /* temporary dinfo */ + AuDbgDentry(dentry); + err = -ENOMEM; + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + /* + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ + err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) + err = 0; + if (err >= 0) { + /* compare/refresh by dinfo */ + AuDbgDentry(dentry); + err = au_refresh_by_dinfo(dentry, dinfo, tmp); + au_dbg_verify_dinode(dentry); + AuTraceErr(err); + } + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err)) + goto out; + +out_dgen: + au_update_digen(dentry); +out: + if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { + AuIOErr("failed refreshing %pd, %d\n", dentry, err); + AuDbgDentry(dentry); + } + AuTraceErr(err); + return err; +} + +static int au_do_h_d_reval(struct dentry *h_dentry, unsigned int flags, + struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, valid; + + err = 0; + if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) + goto out; + + AuDbg("b%d\n", bindex); + /* + * gave up supporting LOOKUP_CREATE/OPEN for lower fs, + * due to whiteout and branch permission. + */ + flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE + | LOOKUP_FOLLOW | LOOKUP_EXCL); + /* it may return tri-state */ + valid = h_dentry->d_op->d_revalidate(h_dentry, flags); + + if (unlikely(valid < 0)) + err = valid; + else if (!valid) + err = -EINVAL; + +out: + AuTraceErr(err); + return err; +} + +/* todo: remove this */ +static int h_d_revalidate(struct dentry *dentry, struct inode *inode, + unsigned int flags, int do_udba) +{ + int err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, bstart, ibs, ibe; + unsigned char plus, unhashed, is_root, h_plus, h_nfs, tmpfile; + struct inode *h_inode, *h_cached_inode; + struct dentry *h_dentry; + struct qstr *name, *h_name; + + err = 0; + plus = 0; + mode = 0; + ibs = -1; + ibe = -1; + unhashed = !!d_unhashed(dentry); + is_root = !!IS_ROOT(dentry); + name = &dentry->d_name; + tmpfile = au_di(dentry)->di_tmpfile; + + /* + * Theoretically, REVAL test should be unnecessary in case of + * {FS,I}NOTIFY. + * But {fs,i}notify doesn't fire some necessary events, + * IN_ATTRIB for atime/nlink/pageio + * Let's do REVAL test too. + */ + if (do_udba && inode) { + mode = (inode->i_mode & S_IFMT); + plus = (inode->i_nlink > 0); + ibs = au_ibstart(inode); + ibe = au_ibend(inode); + } + + bstart = au_dbstart(dentry); + btail = bstart; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + AuDbg("b%d, %pd\n", bindex, h_dentry); + h_nfs = !!au_test_nfs(h_dentry->d_sb); + spin_lock(&h_dentry->d_lock); + h_name = &h_dentry->d_name; + if (unlikely(do_udba + && !is_root + && ((!h_nfs + && (unhashed != !!d_unhashed(h_dentry) + || (!tmpfile + && !au_qstreq(name, h_name)) + )) + || (h_nfs + && !(flags & LOOKUP_OPEN) + && (h_dentry->d_flags + & DCACHE_NFSFS_RENAMED))) + )) { + int h_unhashed; + + h_unhashed = d_unhashed(h_dentry); + spin_unlock(&h_dentry->d_lock); + AuDbg("unhash 0x%x 0x%x, %pd %pd\n", + unhashed, h_unhashed, dentry, h_dentry); + goto err; + } + spin_unlock(&h_dentry->d_lock); + + err = au_do_h_d_reval(h_dentry, flags, dentry, bindex); + if (unlikely(err)) + /* do not goto err, to keep the errno */ + break; + + /* todo: plink too? */ + if (!do_udba) + continue; + + /* UDBA tests */ + if (unlikely(!!inode != d_is_positive(h_dentry))) + goto err; + + h_inode = NULL; + if (d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + h_plus = plus; + h_mode = mode; + h_cached_inode = h_inode; + if (h_inode) { + h_mode = (h_inode->i_mode & S_IFMT); + h_plus = (h_inode->i_nlink > 0); + } + if (inode && ibs <= bindex && bindex <= ibe) + h_cached_inode = au_h_iptr(inode, bindex); + + if (!h_nfs) { + if (unlikely(plus != h_plus && !tmpfile)) + goto err; + } else { + if (unlikely(!(h_dentry->d_flags & DCACHE_NFSFS_RENAMED) + && !is_root + && !IS_ROOT(h_dentry) + && unhashed != d_unhashed(h_dentry))) + goto err; + } + if (unlikely(mode != h_mode + || h_cached_inode != h_inode)) + goto err; + continue; + +err: + err = -EINVAL; + break; + } + + AuTraceErr(err); + return err; +} + +/* todo: consolidate with do_refresh() and au_reval_for_attr() */ +static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + if (!au_digen_test(dentry, sigen)) + return 0; + + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + AuDebugOn(au_digen_test(parent, sigen)); + au_dbg_verify_gen(parent, sigen); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + AuTraceErr(err); + return err; +} + +int au_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *d, *parent; + + if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) + return simple_reval_dpath(dentry, sigen); + + /* slow loop, keep it simple and stupid */ + /* cf: au_cpup_dirs() */ + err = 0; + parent = NULL; + while (au_digen_test(dentry, sigen)) { + d = dentry; + while (1) { + dput(parent); + parent = dget_parent(d); + if (!au_digen_test(parent, sigen)) + break; + d = parent; + } + + if (d != dentry) + di_write_lock_child2(d); + + /* someone might update our dentry while we were sleeping */ + if (au_digen_test(d, sigen)) { + /* + * todo: consolidate with simple_reval_dpath(), + * do_refresh() and au_reval_for_attr(). + */ + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(d, parent); + di_read_unlock(parent, AuLock_IR); + } + + if (d != dentry) + di_write_unlock(d); + dput(parent); + if (unlikely(err)) + break; + } + + return err; +} + +/* + * if valid returns 1, otherwise 0. + */ +static int aufs_d_revalidate(struct dentry *dentry, unsigned int flags) +{ + int valid, err; + unsigned int sigen; + unsigned char do_udba; + struct super_block *sb; + struct inode *inode; + + /* todo: support rcu-walk? */ + if (flags & LOOKUP_RCU) + return -ECHILD; + + valid = 0; + if (unlikely(!au_di(dentry))) + goto out; + + valid = 1; + sb = dentry->d_sb; + /* + * todo: very ugly + * i_mutex of parent dir may be held, + * but we should not return 'invalid' due to busy. + */ + err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); + if (unlikely(err)) { + valid = err; + AuTraceErr(err); + goto out; + } + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (unlikely(inode && is_bad_inode(inode))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + if (unlikely(au_dbrange_test(dentry))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + + sigen = au_sigen(sb); + if (au_digen_test(dentry, sigen)) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_dpath(dentry, sigen); + if (unlikely(err)) { + AuTraceErr(err); + goto out_dgrade; + } + } + di_downgrade_lock(dentry, AuLock_IR); + + err = -EINVAL; + if (!(flags & (LOOKUP_OPEN | LOOKUP_EMPTY)) + && inode + && !(inode->i_state && I_LINKABLE) + && (IS_DEADDIR(inode) || !inode->i_nlink)) { + AuTraceErr(err); + goto out_inval; + } + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t bstart = au_ibstart(inode); + struct inode *h_inode; + + if (bstart >= 0) { + h_inode = au_h_iptr(inode, bstart); + if (h_inode && au_test_higen(inode, h_inode)) { + AuTraceErr(err); + goto out_inval; + } + } + } + + err = h_d_revalidate(dentry, inode, flags, do_udba); + if (unlikely(!err && do_udba && au_dbstart(dentry) < 0)) { + err = -EIO; + AuDbg("both of real entry and whiteout found, %p, err %d\n", + dentry, err); + } + goto out_inval; + +out_dgrade: + di_downgrade_lock(dentry, AuLock_IR); +out_inval: + aufs_read_unlock(dentry, AuLock_IR); + AuTraceErr(err); + valid = !err; +out: + if (!valid) { + AuDbg("%pd invalid, %d\n", dentry, valid); + d_drop(dentry); + } + return valid; +} + +static void aufs_d_release(struct dentry *dentry) +{ + if (au_di(dentry)) { + au_di_fin(dentry); + au_hn_di_reinit(dentry); + } +} + +const struct dentry_operations aufs_dop = { + .d_revalidate = aufs_d_revalidate, + .d_weak_revalidate = aufs_d_revalidate, + .d_release = aufs_d_release +}; + +/* aufs_dop without d_revalidate */ +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; --- linux-4.4.0.orig/fs/aufs/dentry.h +++ linux-4.4.0/fs/aufs/dentry.h @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#ifndef __AUFS_DENTRY_H__ +#define __AUFS_DENTRY_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct au_hdentry { + struct dentry *hd_dentry; + aufs_bindex_t hd_id; +}; + +struct au_dinfo { + atomic_t di_generation; + + struct au_rwsem di_rwsem; + aufs_bindex_t di_bstart, di_bend, di_bwh, di_bdiropq; + unsigned char di_tmpfile; /* to allow the different name */ + struct au_hdentry *di_hdentry; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop, aufs_dop_noreval; +struct au_branch; +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); +void au_refresh_dop(struct dentry *dentry, int force_reval); + +/* dinfo.c */ +void au_di_init_once(void *_di); +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); +void au_di_free(struct au_dinfo *dinfo); +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); +int au_di_init(struct dentry *dentry); +void au_di_fin(struct dentry *dentry); +int au_di_realloc(struct au_dinfo *dinfo, int nbr); + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc); +void di_read_unlock(struct dentry *d, int flags); +void di_downgrade_lock(struct dentry *d, int flags); +void di_write_lock(struct dentry *d, unsigned int lsc); +void di_write_unlock(struct dentry *d); +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_unlock2(struct dentry *d1, struct dentry *d2); + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); +aufs_bindex_t au_dbtail(struct dentry *dentry); +aufs_bindex_t au_dbtaildir(struct dentry *dentry); + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry); +int au_digen_test(struct dentry *dentry, unsigned int sigen); +int au_dbrange_test(struct dentry *dentry); +void au_update_digen(struct dentry *dentry); +void au_update_dbrange(struct dentry *dentry, int do_put_zero); +void au_update_dbstart(struct dentry *dentry); +void au_update_dbend(struct dentry *dentry); +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_dinfo *au_di(struct dentry *dentry) +{ + return dentry->d_fsdata; +} + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for dinfo */ +enum { + AuLsc_DI_CHILD, /* child first */ + AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_DI_CHILD3, /* copyup dirs */ + AuLsc_DI_PARENT, + AuLsc_DI_PARENT2, + AuLsc_DI_PARENT3, + AuLsc_DI_TMP /* temp for replacing dinfo */ +}; + +/* + * di_read_lock_child, di_write_lock_child, + * di_read_lock_child2, di_write_lock_child2, + * di_read_lock_child3, di_write_lock_child3, + * di_read_lock_parent, di_write_lock_parent, + * di_read_lock_parent2, di_write_lock_parent2, + * di_read_lock_parent3, di_write_lock_parent3, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void di_read_lock_##name(struct dentry *d, int flags) \ +{ di_read_lock(d, flags, AuLsc_DI_##lsc); } + +#define AuWriteLockFunc(name, lsc) \ +static inline void di_write_lock_##name(struct dentry *d) \ +{ di_write_lock(d, AuLsc_DI_##lsc); } + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) +#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) +#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: memory barrier? */ +static inline unsigned int au_digen(struct dentry *d) +{ + return atomic_read(&au_di(d)->di_generation); +} + +static inline void au_h_dentry_init(struct au_hdentry *hdentry) +{ + hdentry->hd_dentry = NULL; +} + +static inline void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbstart(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bstart; +} + +static inline aufs_bindex_t au_dbend(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bend; +} + +static inline aufs_bindex_t au_dbwh(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bwh; +} + +static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bdiropq; +} + +/* todo: hard/soft set? */ +static inline void au_set_dbstart(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bstart = bindex; +} + +static inline void au_set_dbend(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bend = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of bstart - bend range */ + au_di(dentry)->di_bwh = bindex; +} + +static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bdiropq = bindex; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_HNOTIFY +static inline void au_digen_dec(struct dentry *d) +{ + atomic_dec(&au_di(d)->di_generation); +} + +static inline void au_hn_di_reinit(struct dentry *dentry) +{ + dentry->d_fsdata = NULL; +} +#else +AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ --- linux-4.4.0.orig/fs/aufs/dinfo.c +++ linux-4.4.0/fs/aufs/dinfo.c @@ -0,0 +1,550 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dentry private data + */ + +#include "aufs.h" + +void au_di_init_once(void *_dinfo) +{ + struct au_dinfo *dinfo = _dinfo; + static struct lock_class_key aufs_di; + + au_rw_init(&dinfo->di_rwsem); + au_rw_class(&dinfo->di_rwsem, &aufs_di); +} + +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) +{ + struct au_dinfo *dinfo; + int nbr, i; + + dinfo = au_cache_alloc_dinfo(); + if (unlikely(!dinfo)) + goto out; + + nbr = au_sbend(sb) + 1; + if (nbr <= 0) + nbr = 1; + dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); + if (dinfo->di_hdentry) { + au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + dinfo->di_bwh = -1; + dinfo->di_bdiropq = -1; + dinfo->di_tmpfile = 0; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; + goto out; + } + + au_cache_free_dinfo(dinfo); + dinfo = NULL; + +out: + return dinfo; +} + +void au_di_free(struct au_dinfo *dinfo) +{ + struct au_hdentry *p; + aufs_bindex_t bend, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_bstart; + if (bindex >= 0) { + bend = dinfo->di_bend; + p = dinfo->di_hdentry + bindex; + while (bindex++ <= bend) + au_hdput(p++); + } + kfree(dinfo->di_hdentry); + au_cache_free_dinfo(dinfo); +} + +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) +{ + struct au_hdentry *p; + aufs_bindex_t bi; + + AuRwMustWriteLock(&a->di_rwsem); + AuRwMustWriteLock(&b->di_rwsem); + +#define DiSwap(v, name) \ + do { \ + v = a->di_##name; \ + a->di_##name = b->di_##name; \ + b->di_##name = v; \ + } while (0) + + DiSwap(p, hdentry); + DiSwap(bi, bstart); + DiSwap(bi, bend); + DiSwap(bi, bwh); + DiSwap(bi, bdiropq); + /* smp_mb(); */ + +#undef DiSwap +} + +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) +{ + AuRwMustWriteLock(&dst->di_rwsem); + AuRwMustWriteLock(&src->di_rwsem); + + dst->di_bstart = src->di_bstart; + dst->di_bend = src->di_bend; + dst->di_bwh = src->di_bwh; + dst->di_bdiropq = src->di_bdiropq; + /* smp_mb(); */ +} + +int au_di_init(struct dentry *dentry) +{ + int err; + struct super_block *sb; + struct au_dinfo *dinfo; + + err = 0; + sb = dentry->d_sb; + dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); + if (dinfo) { + atomic_set(&dinfo->di_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + dentry->d_fsdata = dinfo; + } else + err = -ENOMEM; + + return err; +} + +void au_di_fin(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + + dinfo = au_di(dentry); + AuRwDestroy(&dinfo->di_rwsem); + au_di_free(dinfo); +} + +int au_di_realloc(struct au_dinfo *dinfo, int nbr) +{ + int err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bend + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS); + if (hdp) { + dinfo->di_hdentry = hdp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void do_ii_write_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_write_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_write_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_write_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_write_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_write_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_write_lock_parent3(inode); + break; + default: + BUG(); + } +} + +static void do_ii_read_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_read_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_read_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_read_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_read_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_read_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_read_lock_parent3(inode); + break; + default: + BUG(); + } +} + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc) +{ + struct inode *inode; + + au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) + do_ii_write_lock(inode, lsc); + else if (au_ftest_lock(flags, IR)) + do_ii_read_lock(inode, lsc); + } +} + +void di_read_unlock(struct dentry *d, int flags) +{ + struct inode *inode; + + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) { + au_dbg_verify_dinode(d); + ii_write_unlock(inode); + } else if (au_ftest_lock(flags, IR)) { + au_dbg_verify_dinode(d); + ii_read_unlock(inode); + } + } + au_rw_read_unlock(&au_di(d)->di_rwsem); +} + +void di_downgrade_lock(struct dentry *d, int flags) +{ + if (d_really_is_positive(d) && au_ftest_lock(flags, IR)) + ii_downgrade_lock(d_inode(d)); + au_rw_dgrade_lock(&au_di(d)->di_rwsem); +} + +void di_write_lock(struct dentry *d, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) + do_ii_write_lock(d_inode(d), lsc); +} + +void di_write_unlock(struct dentry *d) +{ + au_dbg_verify_dinode(d); + if (d_really_is_positive(d)) + ii_write_unlock(d_inode(d)); + au_rw_write_unlock(&au_di(d)->di_rwsem); +} + +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + /* there should be no races */ + di_write_lock_child(d2); + di_write_lock_child2(d1); + } +} + +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + /* there should be no races */ + di_write_lock_parent(d2); + di_write_lock_parent2(d1); + } +} + +void di_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock(d1); + if (d_inode(d1) == d_inode(d2)) + au_rw_write_unlock(&au_di(d2)->di_rwsem); + else + di_write_unlock(d2); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *d; + + DiMustAnyLock(dentry); + + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_di(dentry)->di_hdentry[0 + bindex].hd_dentry; + AuDebugOn(d && au_dcount(d) <= 0); + return d; +} + +/* + * extended version of au_h_dptr(). + * returns a hashed and positive (or linkable) h_dentry in bindex, NULL, or + * error. + */ +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + AuDebugOn(d_really_is_negative(dentry)); + + h_dentry = NULL; + if (au_dbstart(dentry) <= bindex + && bindex <= au_dbend(dentry)) + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && !au_d_linkable(h_dentry)) { + dget(h_dentry); + goto out; /* success */ + } + + inode = d_inode(dentry); + AuDebugOn(bindex < au_ibstart(inode)); + AuDebugOn(au_ibend(inode) < bindex); + h_inode = au_h_iptr(inode, bindex); + h_dentry = d_find_alias(h_inode); + if (h_dentry) { + if (!IS_ERR(h_dentry)) { + if (!au_d_linkable(h_dentry)) + goto out; /* success */ + dput(h_dentry); + } else + goto out; + } + + if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { + h_dentry = au_plink_lkup(inode, bindex); + AuDebugOn(!h_dentry); + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + h_dentry = NULL; + } + } + +out: + AuDbgDentry(h_dentry); + return h_dentry; +} + +aufs_bindex_t au_dbtail(struct dentry *dentry) +{ + aufs_bindex_t bend, bwh; + + bend = au_dbend(dentry); + if (0 <= bend) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bend) + return bwh - 1; + } + return bend; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bend, bopq; + + bend = au_dbtail(dentry); + if (0 <= bend) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bend) + bend = bopq; + } + return bend; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_hdentry *hd = au_di(dentry)->di_hdentry + bindex; + struct au_branch *br; + + DiMustWriteLock(dentry); + + au_hdput(hd); + hd->hd_dentry = h_dentry; + if (h_dentry) { + br = au_sbr(dentry->d_sb, bindex); + hd->hd_id = br->br_id; + } +} + +int au_dbrange_test(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart, bend; + + err = 0; + bstart = au_dbstart(dentry); + bend = au_dbend(dentry); + if (bstart >= 0) + AuDebugOn(bend < 0 && bstart > bend); + else { + err = -EIO; + AuDebugOn(bend >= 0); + } + + return err; +} + +int au_digen_test(struct dentry *dentry, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(au_digen(dentry) != sigen + || au_iigen_test(d_inode(dentry), sigen))) + err = -EIO; + + return err; +} + +void au_update_digen(struct dentry *dentry) +{ + atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +void au_update_dbrange(struct dentry *dentry, int do_put_zero) +{ + struct au_dinfo *dinfo; + struct dentry *h_d; + struct au_hdentry *hdp; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_bstart < 0) + return; + + hdp = dinfo->di_hdentry; + if (do_put_zero) { + aufs_bindex_t bindex, bend; + + bend = dinfo->di_bend; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++) { + h_d = hdp[0 + bindex].hd_dentry; + if (h_d && d_is_negative(h_d)) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_bstart = -1; + while (++dinfo->di_bstart <= dinfo->di_bend) + if (hdp[0 + dinfo->di_bstart].hd_dentry) + break; + if (dinfo->di_bstart > dinfo->di_bend) { + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + return; + } + + dinfo->di_bend++; + while (0 <= --dinfo->di_bend) + if (hdp[0 + dinfo->di_bend].hd_dentry) + break; + AuDebugOn(dinfo->di_bstart > dinfo->di_bend || dinfo->di_bend < 0); +} + +void au_update_dbstart(struct dentry *dentry) +{ + aufs_bindex_t bindex, bend; + struct dentry *h_dentry; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbstart(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbend(struct dentry *dentry) +{ + aufs_bindex_t bindex, bstart; + struct dentry *h_dentry; + + bstart = au_dbstart(dentry); + for (bindex = au_dbend(dentry); bindex >= bstart; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbend(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) +{ + aufs_bindex_t bindex, bend; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} --- linux-4.4.0.orig/fs/aufs/dir.c +++ linux-4.4.0/fs/aufs/dir.c @@ -0,0 +1,753 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#include +#include "aufs.h" + +void au_add_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink += h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink += 2; + smp_mb(); /* for i_nlink */ + /* 0 can happen in revaliding */ + set_nlink(dir, nlink); +} + +void au_sub_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink -= h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink -= 2; + smp_mb(); /* for i_nlink */ + /* nlink == 0 means the branch-fs is broken */ + set_nlink(dir, nlink); +} + +loff_t au_dir_size(struct file *file, struct dentry *dentry) +{ + loff_t sz; + aufs_bindex_t bindex, bend; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!d_is_dir(file->f_path.dentry)); + + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file && file_inode(h_file)) + sz += vfsub_f_size_read(h_file); + } + } else { + AuDebugOn(!dentry); + AuDebugOn(!d_is_dir(dentry)); + + bend = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) + sz += i_size_read(d_inode(h_dentry)); + } + } + if (sz < KMALLOC_MAX_SIZE) + sz = roundup_pow_of_two(sz); + if (sz > KMALLOC_MAX_SIZE) + sz = KMALLOC_MAX_SIZE; + else if (sz < NAME_MAX) { + BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); + sz = AUFS_RDBLK_DEF; + } + return sz; +} + +struct au_dir_ts_arg { + struct dentry *dentry; + aufs_bindex_t brid; +}; + +static void au_do_dir_ts(void *arg) +{ + struct au_dir_ts_arg *a = arg; + struct au_dtime dt; + struct path h_path; + struct inode *dir, *h_dir; + struct super_block *sb; + struct au_branch *br; + struct au_hinode *hdir; + int err; + aufs_bindex_t bstart, bindex; + + sb = a->dentry->d_sb; + if (d_really_is_negative(a->dentry)) + goto out; + /* no dir->i_mutex lock */ + aufs_read_lock(a->dentry, AuLock_DW); /* noflush */ + + dir = d_inode(a->dentry); + bstart = au_ibstart(dir); + bindex = au_br_index(sb, a->brid); + if (bindex < bstart) + goto out_unlock; + + br = au_sbr(sb, bindex); + h_path.dentry = au_h_dptr(a->dentry, bindex); + if (!h_path.dentry) + goto out_unlock; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, a->dentry, &h_path); + + br = au_sbr(sb, bstart); + if (!au_br_writable(br->br_perm)) + goto out_unlock; + h_path.dentry = au_h_dptr(a->dentry, bstart); + h_path.mnt = au_br_mnt(br); + err = vfsub_mnt_want_write(h_path.mnt); + if (err) + goto out_unlock; + hdir = au_hi(dir, bstart); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + h_dir = au_h_iptr(dir, bstart); + if (h_dir->i_nlink + && timespec_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) { + dt.dt_h_path = h_path; + au_dtime_revert(&dt); + } + au_hn_imtx_unlock(hdir); + vfsub_mnt_drop_write(h_path.mnt); + au_cpup_attr_timesizes(dir); + +out_unlock: + aufs_read_unlock(a->dentry, AuLock_DW); +out: + dput(a->dentry); + au_nwt_done(&au_sbi(sb)->si_nowait); + kfree(arg); +} + +void au_dir_ts(struct inode *dir, aufs_bindex_t bindex) +{ + int perm, wkq_err; + aufs_bindex_t bstart; + struct au_dir_ts_arg *arg; + struct dentry *dentry; + struct super_block *sb; + + IMustLock(dir); + + dentry = d_find_any_alias(dir); + AuDebugOn(!dentry); + sb = dentry->d_sb; + bstart = au_ibstart(dir); + if (bstart == bindex) { + au_cpup_attr_timesizes(dir); + goto out; + } + + perm = au_sbr_perm(sb, bstart); + if (!au_br_writable(perm)) + goto out; + + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (!arg) + goto out; + + arg->dentry = dget(dentry); /* will be dput-ted by au_do_dir_ts() */ + arg->brid = au_sbr_id(sb, bindex); + wkq_err = au_wkq_nowait(au_do_dir_ts, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_err("wkq %d\n", wkq_err); + dput(dentry); + kfree(arg); + } + +out: + dput(dentry); +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, bstart; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_path.dentry; + bstart = au_dbstart(dentry); + for (bindex = au_fbstart(file); bindex < bstart; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, bstart); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbend_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbend_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_file = au_hf_dir(file, bindex); + if (h_file) + continue; + + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* close all? */ + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + err = 0; + +out: + return err; +} + +static int do_open_dir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; + + FiMustWriteLock(file); + AuDebugOn(h_file); + + err = 0; + dentry = file->f_path.dentry; + file->f_version = d_inode(dentry)->i_version; + bindex = au_dbstart(dentry); + au_set_fbstart(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbend_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + break; + } + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + if (!err) + return 0; /* success */ + + /* close all */ + for (bindex = au_fbstart(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, -1); + au_set_fbend_dir(file, -1); + + return err; +} + +static int aufs_open_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_fidir *fidir; + + err = -ENOMEM; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fidir = au_fidir_alloc(sb); + if (fidir) { + struct au_do_open_args args = { + .open = do_open_dir, + .fidir = fidir + }; + err = au_do_open(file, &args); + if (unlikely(err)) + kfree(fidir); + } + si_read_unlock(sb); + return err; +} + +static int aufs_release_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + struct au_vdir *vdir_cache; + struct au_finfo *finfo; + struct au_fidir *fidir; + aufs_bindex_t bindex, bend; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + au_sphl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + vdir_cache = fidir->fd_vdir_cache; /* lock-free */ + if (vdir_cache) + au_vdir_free(vdir_cache); + + bindex = finfo->fi_btop; + if (bindex >= 0) { + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bend = fidir->fd_bbot; + for (; bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + kfree(fidir); + finfo->fi_hdir = NULL; + } + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_dir(struct file *file, fl_owner_t id) +{ + int err; + aufs_bindex_t bindex, bend; + struct file *h_file; + + err = 0; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file) + err = vfsub_flush(h_file, id); + } + return err; +} + +static int aufs_flush_dir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_dir); +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = d_inode(dentry); + IMustLock(inode); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= bend; bindex++) { + struct path h_path; + + if (au_test_ro(sb, bindex, inode)) + continue; + h_path.dentry = au_h_dptr(dentry, bindex); + if (!h_path.dentry) + continue; + + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_fsync(NULL, &h_path, datasync); + } + + return err; +} + +static int au_do_fsync_dir(struct file *file, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + + inode = file_inode(file); + sb = inode->i_sb; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (!h_file || au_test_ro(sb, bindex, inode)) + continue; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + } + +out: + return err; +} + +/* + * @file may be NULL + */ +static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct dentry *dentry; + struct inode *inode; + struct super_block *sb; + struct mutex *mtx; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + mtx = &inode->i_mutex; + mutex_lock(mtx); + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (file) + err = au_do_fsync_dir(file, datasync); + else { + di_write_lock_child(dentry); + err = au_do_fsync_dir_no_file(dentry, datasync); + } + au_cpup_attr_timesizes(inode); + di_write_unlock(dentry); + if (file) + fi_write_unlock(file); + + si_read_unlock(sb); + mutex_unlock(mtx); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_iterate(struct file *file, struct dir_context *ctx) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + AuDbg("%pD, ctx{%pf, %llu}\n", file, ctx->actor, ctx->pos); + + dentry = file->f_path.dentry; + inode = d_inode(dentry); + IMustLock(inode); + + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (!err) + err = au_vdir_init(file); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (!au_test_nfsd()) { + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + } else { + /* + * nfsd filldir may call lookup_one_len(), vfs_getattr(), + * encode_fh() and others. + */ + atomic_inc(&h_inode->i_count); + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + fi_write_unlock(file); + iput(h_inode); + + AuTraceErr(err); + return err; + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuTestEmpty_WHONLY 1 +#define AuTestEmpty_CALLED (1 << 1) +#define AuTestEmpty_SHWH (1 << 2) +#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) +#define au_fset_testempty(flags, name) \ + do { (flags) |= AuTestEmpty_##name; } while (0) +#define au_fclr_testempty(flags, name) \ + do { (flags) &= ~AuTestEmpty_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuTestEmpty_SHWH +#define AuTestEmpty_SHWH 0 +#endif + +struct test_empty_arg { + struct dir_context ctx; + struct au_nhash *whlist; + unsigned int flags; + int err; + aufs_bindex_t bindex; +}; + +static int test_empty_cb(struct dir_context *ctx, const char *__name, + int namelen, loff_t offset __maybe_unused, u64 ino, + unsigned int d_type) +{ + struct test_empty_arg *arg = container_of(ctx, struct test_empty_arg, + ctx); + char *name = (void *)__name; + + arg->err = 0; + au_fset_testempty(arg->flags, CALLED); + /* smp_mb(); */ + if (name[0] == '.' + && (namelen == 1 || (name[1] == '.' && namelen == 2))) + goto out; /* success */ + + if (namelen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (au_ftest_testempty(arg->flags, WHONLY) + && !au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = -ENOTEMPTY; + goto out; + } + + name += AUFS_WH_PFX_LEN; + namelen -= AUFS_WH_PFX_LEN; + if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = au_nhash_append_wh + (arg->whlist, name, namelen, ino, d_type, arg->bindex, + au_ftest_testempty(arg->flags, SHWH)); + +out: + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err; + struct file *h_file; + + h_file = au_h_open(dentry, arg->bindex, + O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, + /*file*/NULL, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && !file_inode(h_file)->i_nlink) + goto out_put; + + do { + arg->err = 0; + au_fclr_testempty(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_testempty(arg->flags, CALLED)); + +out_put: + fput(h_file); + au_sbr_put(dentry->d_sb, arg->bindex); +out: + return err; +} + +struct do_test_empty_args { + int *errp; + struct dentry *dentry; + struct test_empty_arg *arg; +}; + +static void call_do_test_empty(void *args) +{ + struct do_test_empty_args *a = args; + *a->errp = do_test_empty(a->dentry, a->arg); +} + +static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = d_inode(h_dentry); + /* todo: i_mode changes anytime? */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); + mutex_unlock(&h_inode->i_mutex); + if (!err) + err = do_test_empty(dentry, arg); + else { + struct do_test_empty_args args = { + .errp = &err, + .dentry = dentry, + .arg = arg + }; + unsigned int flags = arg->flags; + + wkq_err = au_wkq_wait(call_do_test_empty, &args); + if (unlikely(wkq_err)) + err = wkq_err; + arg->flags = flags; + } + + return err; +} + +int au_test_empty_lower(struct dentry *dentry) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bindex, bstart, btail; + struct au_nhash whlist; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + int (*test_empty)(struct dentry *dentry, struct test_empty_arg *arg); + + SiMustAnyLock(dentry->d_sb); + + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + arg.flags = 0; + arg.whlist = &whlist; + bstart = au_dbstart(dentry); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + test_empty = do_test_empty; + if (au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1)) + test_empty = sio_test_empty; + arg.bindex = bstart; + err = test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = bstart + 1; !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = test_empty(dentry, &arg); + } + } + +out_whlist: + au_nhash_wh_free(&whlist); +out: + return err; +} + +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) +{ + int err; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + aufs_bindex_t bindex, btail; + + err = 0; + arg.whlist = whlist; + arg.flags = AuTestEmpty_WHONLY; + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + btail = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = sio_test_empty(dentry, &arg); + } + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_dir_fop = { + .owner = THIS_MODULE, + .llseek = default_llseek, + .read = generic_read_dir, + .iterate = aufs_iterate, + .unlocked_ioctl = aufs_ioctl_dir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_dir, +#endif + .open = aufs_open_dir, + .release = aufs_release_dir, + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; --- linux-4.4.0.orig/fs/aufs/dir.h +++ linux-4.4.0/fs/aufs/dir.h @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#ifndef __AUFS_DIR_H__ +#define __AUFS_DIR_H__ + +#ifdef __KERNEL__ + +#include + +/* ---------------------------------------------------------------------- */ + +/* need to be faster and smaller */ + +struct au_nhash { + unsigned int nh_num; + struct hlist_head *nh_head; +}; + +struct au_vdir_destr { + unsigned char len; + unsigned char name[0]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; +} ____cacheline_aligned_in_smp; + +struct au_vdir_de { + ino_t de_ino; + unsigned char de_type; + /* caution: packed */ + struct au_vdir_destr de_str; +} __packed; + +struct au_vdir_wh { + struct hlist_node wh_hash; +#ifdef CONFIG_AUFS_SHWH + ino_t wh_ino; + aufs_bindex_t wh_bindex; + unsigned char wh_type; +#else + aufs_bindex_t wh_bindex; +#endif + /* caution: packed */ + struct au_vdir_destr wh_str; +} __packed; + +union au_vdir_deblk_p { + unsigned char *deblk; + struct au_vdir_de *de; +}; + +struct au_vdir { + unsigned char **vd_deblk; + unsigned long vd_nblk; + struct { + unsigned long ul; + union au_vdir_deblk_p p; + } vd_last; + + unsigned long vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dir.c */ +extern const struct file_operations aufs_dir_fop; +void au_add_nlink(struct inode *dir, struct inode *h_dir); +void au_sub_nlink(struct inode *dir, struct inode *h_dir); +loff_t au_dir_size(struct file *file, struct dentry *dentry); +void au_dir_ts(struct inode *dir, aufs_bindex_t bsrc); +int au_test_empty_lower(struct dentry *dentry); +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); + +/* vdir.c */ +unsigned int au_rdhash_est(loff_t sz); +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); +void au_nhash_wh_free(struct au_nhash *whlist); +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit); +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh); +void au_vdir_free(struct au_vdir *vdir); +int au_vdir_init(struct file *file); +int au_vdir_fill_de(struct file *file, struct dir_context *ctx); + +/* ioctl.c */ +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); + +#ifdef CONFIG_AUFS_RDU +/* rdu.c */ +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg); +#endif +#else +AuStub(long, au_rdu_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#ifdef CONFIG_COMPAT +AuStub(long, au_rdu_compat_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#endif +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ --- linux-4.4.0.orig/fs/aufs/dynop.c +++ linux-4.4.0/fs/aufs/dynop.c @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations for regular files + */ + +#include "aufs.h" + +#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) + +/* + * How large will these lists be? + * Usually just a few elements, 20-30 at most for each, I guess. + */ +static struct au_splhead dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct au_splhead *spl, const void *h_op) +{ + struct au_dykey *key, *tmp; + struct list_head *head; + + key = NULL; + head = &spl->head; + rcu_read_lock(); + list_for_each_entry_rcu(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + key = tmp; + kref_get(&key->dk_kref); + break; + } + rcu_read_unlock(); + + return key; +} + +static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) +{ + struct au_dykey **k, *found; + const void *h_op = key->dk_op.dy_hop; + int i; + + found = NULL; + k = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else + break; + if (!found) { + spin_lock(&br->br_dykey_lock); + for (; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else { + k[i] = key; + break; + } + spin_unlock(&br->br_dykey_lock); + BUG_ON(i == AuBrDynOp); /* expand the array */ + } + + return found; +} + +/* kref_get() if @key is already added */ +static struct au_dykey *dy_gadd(struct au_splhead *spl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct list_head *head; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + kref_get(&tmp->dk_kref); + found = tmp; + break; + } + if (!found) + list_add_rcu(&key->dk_list, head); + spin_unlock(&spl->spin); + + if (!found) + DyPrSym(key); + return found; +} + +static void dy_free_rcu(struct rcu_head *rcu) +{ + struct au_dykey *key; + + key = container_of(rcu, struct au_dykey, dk_rcu); + DyPrSym(key); + kfree(key); +} + +static void dy_free(struct kref *kref) +{ + struct au_dykey *key; + struct au_splhead *spl; + + key = container_of(kref, struct au_dykey, dk_kref); + spl = dynop + key->dk_op.dy_type; + au_spl_del_rcu(&key->dk_list, spl); + call_rcu(&key->dk_rcu, dy_free_rcu); +} + +void au_dy_put(struct au_dykey *key) +{ + kref_put(&key->dk_kref, dy_free); +} + +/* ---------------------------------------------------------------------- */ + +#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) + +#ifdef CONFIG_AUFS_DEBUG +#define DyDbgDeclare(cnt) unsigned int cnt = 0 +#define DyDbgInc(cnt) do { cnt++; } while (0) +#else +#define DyDbgDeclare(cnt) do {} while (0) +#define DyDbgInc(cnt) do {} while (0) +#endif + +#define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ + if (src.func) \ + dst.func = src.func; \ + else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ +} while (0) + +#define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ + dst.func = src.func; \ +} while (0) + +#define DySetAop(func) \ + DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) +#define DySetAopForce(func) \ + DySetForce(func, dyaop->da_op, aufs_aop) + +static void dy_aop(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused) +{ + struct au_dyaop *dyaop = (void *)key; + const struct address_space_operations *h_aop = h_op; + DyDbgDeclare(cnt); + + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); + DySetAopForce(readpage); /* force */ + DySetAop(writepages); + DySetAop(set_page_dirty); + DySetAop(readpages); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); + DySetAop(invalidatepage); + DySetAop(releasepage); + DySetAop(freepage); + /* this one will be changed according to an aufs mount option */ + DySetAop(direct_IO); + DySetAop(migratepage); + DySetAop(launder_page); + DySetAop(is_partially_uptodate); + DySetAop(is_dirty_writeback); + DySetAop(error_remove_page); + DySetAop(swap_activate); + DySetAop(swap_deactivate); + + DyDbgSize(cnt, *h_aop); +} + +/* ---------------------------------------------------------------------- */ + +static void dy_bug(struct kref *kref) +{ + BUG(); +} + +static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) +{ + struct au_dykey *key, *old; + struct au_splhead *spl; + struct op { + unsigned int sz; + void (*set)(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused); + }; + static const struct op a[] = { + [AuDy_AOP] = { + .sz = sizeof(struct au_dyaop), + .set = dy_aop + } + }; + const struct op *p; + + spl = dynop + op->dy_type; + key = dy_gfind_get(spl, op->dy_hop); + if (key) + goto out_add; /* success */ + + p = a + op->dy_type; + key = kzalloc(p->sz, GFP_NOFS); + if (unlikely(!key)) { + key = ERR_PTR(-ENOMEM); + goto out; + } + + key->dk_op.dy_hop = op->dy_hop; + kref_init(&key->dk_kref); + p->set(key, op->dy_hop, au_br_sb(br)); + old = dy_gadd(spl, key); + if (old) { + kfree(key); + key = old; + } + +out_add: + old = dy_bradd(br, key); + if (old) + /* its ref-count should never be zero here */ + kref_put(&key->dk_kref, dy_bug); +out: + return key; +} + +/* ---------------------------------------------------------------------- */ +/* + * Aufs prohibits O_DIRECT by defaut even if the branch supports it. + * This behaviour is necessary to return an error from open(O_DIRECT) instead + * of the succeeding I/O. The dio mount option enables O_DIRECT and makes + * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. + * See the aufs manual in detail. + */ +static void dy_adx(struct au_dyaop *dyaop, int do_dx) +{ + if (!do_dx) + dyaop->da_op.direct_IO = NULL; + else + dyaop->da_op.direct_IO = aufs_aop.direct_IO; +} + +static struct au_dyaop *dy_aget(struct au_branch *br, + const struct address_space_operations *h_aop, + int do_dx) +{ + struct au_dyaop *dyaop; + struct au_dynop op; + + op.dy_type = AuDy_AOP; + op.dy_haop = h_aop; + dyaop = (void *)dy_get(&op, br); + if (IS_ERR(dyaop)) + goto out; + dy_adx(dyaop, do_dx); + +out: + return dyaop; +} + +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode) +{ + int err, do_dx; + struct super_block *sb; + struct au_branch *br; + struct au_dyaop *dyaop; + + AuDebugOn(!S_ISREG(h_inode->i_mode)); + IiMustWriteLock(inode); + + sb = inode->i_sb; + br = au_sbr(sb, bindex); + do_dx = !!au_opt_test(au_mntflags(sb), DIO); + dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); + err = PTR_ERR(dyaop); + if (IS_ERR(dyaop)) + /* unnecessary to call dy_fput() */ + goto out; + + err = 0; + inode->i_mapping->a_ops = &dyaop->da_op; + +out: + return err; +} + +/* + * Is it safe to replace a_ops during the inode/file is in operation? + * Yes, I hope so. + */ +int au_dy_irefresh(struct inode *inode) +{ + int err; + aufs_bindex_t bstart; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + bstart = au_ibstart(inode); + h_inode = au_h_iptr(inode, bstart); + err = au_dy_iaop(inode, bstart, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct au_splhead *spl; + struct list_head *head; + struct au_dykey *key; + + spl = dynop + AuDy_AOP; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(key, head, dk_list) + dy_adx((void *)key, do_dx); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + /* make sure that 'struct au_dykey *' can be any type */ + BUILD_BUG_ON(offsetof(struct au_dyaop, da_key)); + + for (i = 0; i < AuDyLast; i++) + au_spl_init(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!list_empty(&dynop[i].head)); +} --- linux-4.4.0.orig/fs/aufs/dynop.h +++ linux-4.4.0/fs/aufs/dynop.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations (for regular files only) + */ + +#ifndef __AUFS_DYNOP_H__ +#define __AUFS_DYNOP_H__ + +#ifdef __KERNEL__ + +#include +#include + +enum {AuDy_AOP, AuDyLast}; + +struct au_dynop { + int dy_type; + union { + const void *dy_hop; + const struct address_space_operations *dy_haop; + }; +}; + +struct au_dykey { + union { + struct list_head dk_list; + struct rcu_head dk_rcu; + }; + struct au_dynop dk_op; + + /* + * during I am in the branch local array, kref is gotten. when the + * branch is removed, kref is put. + */ + struct kref dk_kref; +}; + +/* stop unioning since their sizes are very different from each other */ +struct au_dyaop { + struct au_dykey da_key; + struct address_space_operations da_op; /* not const */ +}; + +/* ---------------------------------------------------------------------- */ + +/* dynop.c */ +struct au_branch; +void au_dy_put(struct au_dykey *key); +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode); +int au_dy_irefresh(struct inode *inode); +void au_dy_arefresh(int do_dio); + +void __init au_dy_init(void); +void au_dy_fin(void); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ --- linux-4.4.0.orig/fs/aufs/export.c +++ linux-4.4.0/fs/aufs/export.c @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * export via nfs + */ + +#include +#include +#include +#include +#include +#include +#include "../fs/mount.h" +#include "aufs.h" + +union conv { +#ifdef CONFIG_AUFS_INO_T_64 + __u32 a[2]; +#else + __u32 a[1]; +#endif + ino_t ino; +}; + +static ino_t decode_ino(__u32 *a) +{ + union conv u; + + BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); + u.a[0] = a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + u.a[1] = a[1]; +#endif + return u.ino; +} + +static void encode_ino(__u32 *a, ino_t ino) +{ + union conv u; + + u.ino = ino; + a[0] = u.a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + a[1] = u.a[1]; +#endif +} + +/* NFS file handle */ +enum { + Fh_br_id, + Fh_sigen, +#ifdef CONFIG_AUFS_INO_T_64 + /* support 64bit inode number */ + Fh_ino1, + Fh_ino2, + Fh_dir_ino1, + Fh_dir_ino2, +#else + Fh_ino1, + Fh_dir_ino1, +#endif + Fh_igen, + Fh_h_type, + Fh_tail, + + Fh_ino = Fh_ino1, + Fh_dir_ino = Fh_dir_ino1 +}; + +static int au_test_anon(struct dentry *dentry) +{ + /* note: read d_flags without d_lock */ + return !!(dentry->d_flags & DCACHE_DISCONNECTED); +} + +int au_test_nfsd(void) +{ + int ret; + struct task_struct *tsk = current; + char comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + ret = !strcmp(comm, "nfsd"); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ +/* inode generation external table */ + +void au_xigen_inc(struct inode *inode) +{ + loff_t pos; + ssize_t sz; + __u32 igen; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + sb = inode->i_sb; + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + + sbinfo = au_sbi(sb); + pos = inode->i_ino; + pos *= sizeof(igen); + igen = inode->i_generation + 1; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xigen, &igen, + sizeof(igen), &pos); + if (sz == sizeof(igen)) + return; /* success */ + + if (unlikely(sz >= 0)) + AuIOErr("xigen error (%zd)\n", sz); +} + +int au_xigen_new(struct inode *inode) +{ + int err; + loff_t pos; + ssize_t sz; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct file *file; + + err = 0; + /* todo: dirty, at mount time */ + if (inode->i_ino == AUFS_ROOT_INO) + goto out; + sb = inode->i_sb; + SiMustAnyLock(sb); + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + goto out; + + err = -EFBIG; + pos = inode->i_ino; + if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { + AuIOErr1("too large i%lld\n", pos); + goto out; + } + pos *= sizeof(inode->i_generation); + + err = 0; + sbinfo = au_sbi(sb); + file = sbinfo->si_xigen; + BUG_ON(!file); + + if (vfsub_f_size_read(file) + < pos + sizeof(inode->i_generation)) { + inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); + sz = xino_fwrite(sbinfo->si_xwrite, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + } else + sz = xino_fread(sbinfo->si_xread, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + if (sz == sizeof(inode->i_generation)) + goto out; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xigen error (%zd)\n", sz); + } + +out: + return err; +} + +int au_xigen_set(struct super_block *sb, struct file *base) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xigen); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + err = 0; + if (sbinfo->si_xigen) + fput(sbinfo->si_xigen); + sbinfo->si_xigen = file; + +out: + return err; +} + +void au_xigen_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xigen) { + fput(sbinfo->si_xigen); + sbinfo->si_xigen = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino) +{ + struct dentry *dentry, *d; + struct inode *inode; + unsigned int sigen; + + dentry = NULL; + inode = ilookup(sb, ino); + if (!inode) + goto out; + + dentry = ERR_PTR(-ESTALE); + sigen = au_sigen(sb); + if (unlikely(is_bad_inode(inode) + || IS_DEADDIR(inode) + || sigen != au_iigen(inode, NULL))) + goto out_iput; + + dentry = NULL; + if (!dir_ino || S_ISDIR(inode->i_mode)) + dentry = d_find_alias(inode); + else { + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + if (!au_test_anon(d) + && d_inode(d->d_parent)->i_ino == dir_ino) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&d->d_lock); + } + spin_unlock(&inode->i_lock); + } + if (unlikely(dentry && au_digen_test(dentry, sigen))) { + /* need to refresh */ + dput(dentry); + dentry = NULL; + } + +out_iput: + iput(inode); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: dirty? */ +/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ + +struct au_compare_mnt_args { + /* input */ + struct super_block *sb; + + /* output */ + struct vfsmount *mnt; +}; + +static int au_compare_mnt(struct vfsmount *mnt, void *arg) +{ + struct au_compare_mnt_args *a = arg; + + if (mnt->mnt_sb != a->sb) + return 0; + a->mnt = mntget(mnt); + return 1; +} + +static struct vfsmount *au_mnt_get(struct super_block *sb) +{ + int err; + struct path root; + struct au_compare_mnt_args args = { + .sb = sb + }; + + get_fs_root(current->fs, &root); + rcu_read_lock(); + err = iterate_mounts(au_compare_mnt, &args, root.mnt); + rcu_read_unlock(); + path_put(&root); + AuDebugOn(!err); + AuDebugOn(!args.mnt); + return args.mnt; +} + +struct au_nfsd_si_lock { + unsigned int sigen; + aufs_bindex_t bindex, br_id; + unsigned char force_lock; +}; + +static int si_nfsd_read_lock(struct super_block *sb, + struct au_nfsd_si_lock *nsi_lock) +{ + int err; + aufs_bindex_t bindex; + + si_read_lock(sb, AuLock_FLUSH); + + /* branch id may be wrapped around */ + err = 0; + bindex = au_br_index(sb, nsi_lock->br_id); + if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) + goto out; /* success */ + + err = -ESTALE; + bindex = -1; + if (!nsi_lock->force_lock) + si_read_unlock(sb); + +out: + nsi_lock->bindex = bindex; + return err; +} + +struct find_name_by_ino { + struct dir_context ctx; + int called, found; + ino_t ino; + char *name; + int namelen; +}; + +static int +find_name_by_ino(struct dir_context *ctx, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct find_name_by_ino *a = container_of(ctx, struct find_name_by_ino, + ctx); + + a->called++; + if (a->ino != ino) + return 0; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; + return 1; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *parent; + struct file *file; + struct inode *dir; + struct find_name_by_ino arg = { + .ctx = { + .actor = find_name_by_ino + } + }; + int err; + + parent = path->dentry; + if (nsi_lock) + si_read_unlock(parent->d_sb); + file = vfsub_dentry_open(path, au_dir_roflags); + dentry = (void *)file; + if (IS_ERR(file)) + goto out; + + dentry = ERR_PTR(-ENOMEM); + arg.name = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; + arg.found = 0; + do { + arg.called = 0; + /* smp_mb(); */ + err = vfsub_iterate_dir(file, &arg.ctx); + } while (!err && !arg.found && arg.called); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; + /* instead of ENOENT */ + dentry = ERR_PTR(-ESTALE); + if (!arg.found) + goto out_name; + + /* do not call vfsub_lkup_one() */ + dir = d_inode(parent); + mutex_lock(&dir->i_mutex); + dentry = vfsub_lookup_one_len(arg.name, parent, arg.namelen); + mutex_unlock(&dir->i_mutex); + AuTraceErrPtr(dentry); + if (IS_ERR(dentry)) + goto out_name; + AuDebugOn(au_test_anon(dentry)); + if (unlikely(d_really_is_negative(dentry))) { + dput(dentry); + dentry = ERR_PTR(-ENOENT); + } + +out_name: + free_page((unsigned long)arg.name); +out_file: + fput(file); +out: + if (unlikely(nsi_lock + && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } + AuTraceErrPtr(dentry); + return dentry; +} + +static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry; + struct path path; + + if (dir_ino != AUFS_ROOT_INO) { + path.dentry = decode_by_ino(sb, dir_ino, 0); + dentry = path.dentry; + if (!path.dentry || IS_ERR(path.dentry)) + goto out; + AuDebugOn(au_test_anon(path.dentry)); + } else + path.dentry = dget(sb->s_root); + + path.mnt = au_mnt_get(sb); + dentry = au_lkup_by_ino(&path, ino, nsi_lock); + path_put(&path); + +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static int h_acceptable(void *expv, struct dentry *dentry) +{ + return 1; +} + +static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, + char *buf, int len, struct super_block *sb) +{ + char *p; + int n; + struct path path; + + p = d_path(h_rootpath, buf, len); + if (IS_ERR(p)) + goto out; + n = strlen(p); + + path.mnt = h_rootpath->mnt; + path.dentry = h_parent; + p = d_path(&path, buf, len); + if (IS_ERR(p)) + goto out; + if (n != 1) + p += n; + + path.mnt = au_mnt_get(sb); + path.dentry = sb->s_root; + p = d_path(&path, buf, len - strlen(p)); + mntput(path.mnt); + if (IS_ERR(p)) + goto out; + if (n != 1) + p[strlen(p)] = '/'; + +out: + AuTraceErrPtr(p); + return p; +} + +static +struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, + int fh_len, struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *h_parent, *root; + struct super_block *h_sb; + char *pathname, *p; + struct vfsmount *h_mnt; + struct au_branch *br; + int err; + struct path path; + + br = au_sbr(sb, nsi_lock->bindex); + h_mnt = au_br_mnt(br); + h_sb = h_mnt->mnt_sb; + /* todo: call lower fh_to_dentry()? fh_to_parent()? */ + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + dentry = h_parent; + if (unlikely(!h_parent || IS_ERR(h_parent))) { + AuWarn1("%s decode_fh failed, %ld\n", + au_sbtype(h_sb), PTR_ERR(h_parent)); + goto out; + } + dentry = NULL; + if (unlikely(au_test_anon(h_parent))) { + AuWarn1("%s decode_fh returned a disconnected dentry\n", + au_sbtype(h_sb)); + goto out_h_parent; + } + + dentry = ERR_PTR(-ENOMEM); + pathname = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!pathname)) + goto out_h_parent; + + root = sb->s_root; + path.mnt = h_mnt; + di_read_lock_parent(root, !AuLock_IR); + path.dentry = au_h_dptr(root, nsi_lock->bindex); + di_read_unlock(root, !AuLock_IR); + p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); + dentry = (void *)p; + if (IS_ERR(p)) + goto out_pathname; + + si_read_unlock(sb); + err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_relock; + + dentry = ERR_PTR(-ENOENT); + AuDebugOn(au_test_anon(path.dentry)); + if (unlikely(d_really_is_negative(path.dentry))) + goto out_path; + + if (ino != d_inode(path.dentry)->i_ino) + dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); + else + dentry = dget(path.dentry); + +out_path: + path_put(&path); +out_relock: + if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } +out_pathname: + free_page((unsigned long)pathname); +out_h_parent: + dput(h_parent); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry * +aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, + int fh_type) +{ + struct dentry *dentry; + __u32 *fh = fid->raw; + struct au_branch *br; + ino_t ino, dir_ino; + struct au_nfsd_si_lock nsi_lock = { + .force_lock = 0 + }; + + dentry = ERR_PTR(-ESTALE); + /* it should never happen, but the file handle is unreliable */ + if (unlikely(fh_len < Fh_tail)) + goto out; + nsi_lock.sigen = fh[Fh_sigen]; + nsi_lock.br_id = fh[Fh_br_id]; + + /* branch id may be wrapped around */ + br = NULL; + if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) + goto out; + nsi_lock.force_lock = 1; + + /* is this inode still cached? */ + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) + goto out; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* is the parent dir cached? */ + br = au_sbr(sb, nsi_lock.bindex); + atomic_inc(&br->br_count); + dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* lookup path */ + dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (unlikely(!dentry)) + /* todo?: make it ESTALE */ + goto out_unlock; + +accept: + if (!au_digen_test(dentry, au_sigen(sb)) + && d_inode(dentry)->i_generation == fh[Fh_igen]) + goto out_unlock; /* success */ + + dput(dentry); + dentry = ERR_PTR(-ESTALE); +out_unlock: + if (br) + atomic_dec(&br->br_count); + si_read_unlock(sb); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +#if 0 /* reserved for future use */ +/* support subtreecheck option */ +static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, + int fh_len, int fh_type) +{ + struct dentry *parent; + __u32 *fh = fid->raw; + ino_t dir_ino; + + dir_ino = decode_ino(fh + Fh_dir_ino); + parent = decode_by_ino(sb, dir_ino, 0); + if (IS_ERR(parent)) + goto out; + if (!parent) + parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), + dir_ino, fh, fh_len); + +out: + AuTraceErrPtr(parent); + return parent; +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *dir) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct dentry *dentry, *parent, *h_parent; + struct inode *h_dir; + struct au_branch *br; + + err = -ENOSPC; + if (unlikely(*max_len <= Fh_tail)) { + AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); + goto out; + } + + err = FILEID_ROOT; + if (inode->i_ino == AUFS_ROOT_INO) { + AuDebugOn(inode->i_ino != AUFS_ROOT_INO); + goto out; + } + + h_parent = NULL; + sb = inode->i_sb; + err = si_read_lock(sb, AuLock_FLUSH); + if (unlikely(err)) + goto out; + +#ifdef CONFIG_AUFS_DEBUG + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + AuWarn1("NFS-exporting requires xino\n"); +#endif + err = -EIO; + parent = NULL; + ii_read_lock_child(inode); + bindex = au_ibstart(inode); + if (!dir) { + dentry = d_find_any_alias(inode); + if (unlikely(!dentry)) + goto out_unlock; + AuDebugOn(au_test_anon(dentry)); + parent = dget_parent(dentry); + dput(dentry); + if (unlikely(!parent)) + goto out_unlock; + if (d_really_is_positive(parent)) + dir = d_inode(parent); + } + + ii_read_lock_parent(dir); + h_dir = au_h_iptr(dir, bindex); + ii_read_unlock(dir); + if (unlikely(!h_dir)) + goto out_parent; + h_parent = d_find_any_alias(h_dir); + if (unlikely(!h_parent)) + goto out_hparent; + + err = -EPERM; + br = au_sbr(sb, bindex); + h_sb = au_br_sb(br); + if (unlikely(!h_sb->s_export_op)) { + AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); + goto out_hparent; + } + + fh[Fh_br_id] = br->br_id; + fh[Fh_sigen] = au_sigen(sb); + encode_ino(fh + Fh_ino, inode->i_ino); + encode_ino(fh + Fh_dir_ino, dir->i_ino); + fh[Fh_igen] = inode->i_generation; + + *max_len -= Fh_tail; + fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), + max_len, + /*connectable or subtreecheck*/0); + err = fh[Fh_h_type]; + *max_len += Fh_tail; + /* todo: macros? */ + if (err != FILEID_INVALID) + err = 99; + else + AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); + +out_hparent: + dput(h_parent); +out_parent: + dput(parent); +out_unlock: + ii_read_unlock(inode); + si_read_unlock(sb); +out: + if (unlikely(err < 0)) + err = FILEID_INVALID; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_commit_metadata(struct inode *inode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + int (*f)(struct inode *inode); + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + ii_write_lock_child(inode); + bindex = au_ibstart(inode); + AuDebugOn(bindex < 0); + h_inode = au_h_iptr(inode, bindex); + + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); + else { + struct writeback_control wbc = { + .sync_mode = WB_SYNC_ALL, + .nr_to_write = 0 /* metadata only */ + }; + + err = sync_inode(h_inode, &wbc); + } + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct export_operations aufs_export_op = { + .fh_to_dentry = aufs_fh_to_dentry, + /* .fh_to_parent = aufs_fh_to_parent, */ + .encode_fh = aufs_encode_fh, + .commit_metadata = aufs_commit_metadata +}; + +void au_export_init(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + __u32 u; + + sb->s_export_op = &aufs_export_op; + sbinfo = au_sbi(sb); + sbinfo->si_xigen = NULL; + get_random_bytes(&u, sizeof(u)); + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} --- linux-4.4.0.orig/fs/aufs/f_op.c +++ linux-4.4.0/fs/aufs/f_op.c @@ -0,0 +1,738 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file and vm operations + */ + +#include +#include +#include +#include +#include "aufs.h" + +int au_do_open_nondir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex; + struct dentry *dentry; + struct au_finfo *finfo; + struct inode *h_inode; + + FiMustWriteLock(file); + + err = 0; + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + finfo = au_fi(file); + memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); + atomic_set(&finfo->fi_mmapped, 0); + bindex = au_dbstart(dentry); + if (!h_file) + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + else + get_file(h_file); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + if ((flags & __O_TMPFILE) + && !(flags & O_EXCL)) { + h_inode = file_inode(h_file); + spin_lock(&h_inode->i_lock); + h_inode->i_state |= I_LINKABLE; + spin_unlock(&h_inode->i_lock); + } + au_set_fbstart(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + } + + return err; +} + +static int aufs_open_nondir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_do_open_args args = { + .open = au_do_open_nondir + }; + + AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", + file, vfsub_file_flags(file), file->f_mode); + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, &args); + si_read_unlock(sb); + return err; +} + +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) +{ + struct au_finfo *finfo; + aufs_bindex_t bindex; + + finfo = au_fi(file); + au_sphl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + bindex = finfo->fi_btop; + if (bindex >= 0) + au_set_h_fptr(file, bindex, NULL); + + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_nondir(struct file *file, fl_owner_t id) +{ + int err; + struct file *h_file; + + err = 0; + h_file = au_hf_top(file); + if (h_file) + err = vfsub_flush(h_file, id); + return err; +} + +static int aufs_flush_nondir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_nondir); +} + +/* ---------------------------------------------------------------------- */ +/* + * read and write functions acquire [fdi]_rwsem once, but release before + * mmap_sem. This is because to stop a race condition between mmap(2). + * Releasing these aufs-rwsem should be safe, no branch-mamagement (by keeping + * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in + * read functions after [fdi]_rwsem are released, but it should be harmless. + */ + +/* Callers should call au_read_post() or fput() in the end */ +struct file *au_read_pre(struct file *file, int keep_fi) +{ + struct file *h_file; + int err; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (!err) { + di_read_unlock(file->f_path.dentry, AuLock_IR); + h_file = au_hf_top(file); + get_file(h_file); + if (!keep_fi) + fi_read_unlock(file); + } else + h_file = ERR_PTR(err); + + return h_file; +} + +static void au_read_post(struct inode *inode, struct file *h_file) +{ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(inode, file_inode(h_file)); + fput(h_file); +} + +struct au_write_pre { + blkcnt_t blks; + aufs_bindex_t bstart; +}; + +/* + * return with iinfo is write-locked + * callers should call au_write_post() or iinfo_write_unlock() + fput() in the + * end + */ +static struct file *au_write_pre(struct file *file, int do_ready, + struct au_write_pre *wpre) +{ + struct file *h_file; + struct dentry *dentry; + int err; + struct au_pin pin; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + if (do_ready) { + err = au_ready_to_write(file, -1, &pin); + if (unlikely(err)) { + h_file = ERR_PTR(err); + di_write_unlock(dentry); + goto out_fi; + } + } + + di_downgrade_lock(dentry, /*flags*/0); + if (wpre) + wpre->bstart = au_fbstart(file); + h_file = au_hf_top(file); + get_file(h_file); + if (wpre) + wpre->blks = file_inode(h_file)->i_blocks; + if (do_ready) + au_unpin(&pin); + di_read_unlock(dentry, /*flags*/0); + +out_fi: + fi_write_unlock(file); +out: + return h_file; +} + +static void au_write_post(struct inode *inode, struct file *h_file, + struct au_write_pre *wpre, ssize_t written) +{ + struct inode *h_inode; + + au_cpup_attr_timesizes(inode); + AuDebugOn(au_ibstart(inode) != wpre->bstart); + h_inode = file_inode(h_file); + inode->i_mode = h_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + + /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ + if (written > 0) + au_fhsm_wrote(inode->i_sb, wpre->bstart, + /*force*/h_inode->i_blocks > wpre->blks); +} + +static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, + loff_t *ppos) +{ + ssize_t err; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* filedata may be obsoleted by concurrent copyup, but no problem */ + err = vfsub_read_u(h_file, buf, count, ppos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +/* + * todo: very ugly + * it locks both of i_mutex and si_rwsem for read in safe. + * if the plink maintenance mode continues forever (that is the problem), + * may loop forever. + */ +static void au_mtx_and_read_lock(struct inode *inode) +{ + int err; + struct super_block *sb = inode->i_sb; + + while (1) { + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + mutex_unlock(&inode->i_mutex); + si_read_lock(sb, AuLock_NOPLMW); + si_read_unlock(sb); + } +} + +static ssize_t aufs_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + char __user *buf = (char __user *)ubuf; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_write_u(h_file, buf, count, ppos); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, + struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file; + ssize_t (*iter)(struct kiocb *, struct iov_iter *); + + err = security_file_permission(h_file, rw); + if (unlikely(err)) + goto out; + + err = -ENOSYS; + iter = NULL; + if (rw == MAY_READ) + iter = h_file->f_op->read_iter; + else if (rw == MAY_WRITE) + iter = h_file->f_op->write_iter; + + file = kio->ki_filp; + kio->ki_filp = h_file; + if (iter) { + lockdep_off(); + err = iter(kio, iov_iter); + lockdep_on(); + } else + /* currently there is no such fs */ + WARN_ON_ONCE(1); + kio->ki_filp = file; + +out: + return err; +} + +static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file, *h_file; + struct inode *inode; + struct super_block *sb; + + file = kio->ki_filp; + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = au_do_iter(h_file, MAY_READ, kio, iov_iter); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *file, *h_file; + + file = kio->ki_filp; + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + ssize_t err; + struct file *h_file; + struct inode *inode; + struct super_block *sb; + + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/1); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (0 && au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_path.dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; + smp_mb(); /* unnecessary? */ + } + } + fi_read_unlock(file); + + err = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessasry? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t +aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_splice_from(pipe, h_file, ppos, len, flags); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static long aufs_fallocate(struct file *file, int mode, loff_t offset, + loff_t len) +{ + long err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + lockdep_off(); + err = vfs_fallocate(h_file, mode, offset, len); + lockdep_on(); + au_write_post(inode, h_file, &wpre, /*written*/1); + +out: + si_read_unlock(inode->i_sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * The locking order around current->mmap_sem. + * - in most and regular cases + * file I/O syscall -- aufs_read() or something + * -- si_rwsem for read -- mmap_sem + * (Note that [fdi]i_rwsem are released before mmap_sem). + * - in mmap case + * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem + * This AB-BA order is definitly bad, but is not a problem since "si_rwsem for + * read" allows muliple processes to acquire it and [fdi]i_rwsem are not held in + * file I/O. Aufs needs to stop lockdep in aufs_mmap() though. + * It means that when aufs acquires si_rwsem for write, the process should never + * acquire mmap_sem. + * + * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a + * problem either since any directory is not able to be mmap-ed. + * The similar scenario is applied to aufs_readlink() too. + */ + +#if 0 /* stop calling security_file_mmap() */ +/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ +#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) + +static unsigned long au_arch_prot_conv(unsigned long flags) +{ + /* currently ppc64 only */ +#ifdef CONFIG_PPC64 + /* cf. linux/arch/powerpc/include/asm/mman.h */ + AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); + return AuConv_VM_PROT(flags, SAO); +#else + AuDebugOn(arch_calc_vm_prot_bits(-1)); + return 0; +#endif +} + +static unsigned long au_prot_conv(unsigned long flags) +{ + return AuConv_VM_PROT(flags, READ) + | AuConv_VM_PROT(flags, WRITE) + | AuConv_VM_PROT(flags, EXEC) + | au_arch_prot_conv(flags); +} + +/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ +#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) + +static unsigned long au_flag_conv(unsigned long flags) +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) + | AuConv_VM_MAP(flags, LOCKED); +} +#endif + +static int aufs_mmap(struct file *file, struct vm_area_struct *vma) +{ + int err; + const unsigned char wlock + = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); + struct super_block *sb; + struct file *h_file; + struct inode *inode; + + AuDbgVmRegion(file, vma); + + inode = file_inode(file); + sb = inode->i_sb; + lockdep_off(); + si_read_lock(sb, AuLock_NOPLMW); + + h_file = au_write_pre(file, wlock, /*wpre*/NULL); + lockdep_on(); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + au_set_mmapped(file); + au_vm_file_reset(vma, h_file); + /* + * we cannot call security_mmap_file() here since it may acquire + * mmap_sem or i_mutex. + * + * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), + * au_flag_conv(vma->vm_flags)); + */ + if (!err) + err = h_file->f_op->mmap(h_file, vma); + if (!err) { + au_vm_prfile_set(vma, file); + fsstack_copy_attr_atime(inode, file_inode(h_file)); + goto out_fput; /* success */ + } + au_unset_mmapped(file); + au_vm_file_reset(vma, file); + +out_fput: + lockdep_off(); + ii_write_unlock(inode); + lockdep_on(); + fput(h_file); +out: + lockdep_off(); + si_read_unlock(sb); + lockdep_on(); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_unlock; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + au_write_post(inode, h_file, &wpre, /*written*/0); + +out_unlock: + si_read_unlock(inode->i_sb); + mutex_unlock(&inode->i_mutex); +out: + return err; +} + +/* no one supports this operation, currently */ +#if 0 +static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) +{ + int err; + struct au_write_pre wpre; + struct inode *inode; + struct file *file, *h_file; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + + file = kio->ki_filp; + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_unlock; + + err = -ENOSYS; + h_file = au_hf_top(file); + if (h_file->f_op->aio_fsync) { + struct mutex *h_mtx; + + h_mtx = &file_inode(h_file)->i_mutex; + if (!is_sync_kiocb(kio)) { + get_file(h_file); + fput(file); + } + kio->ki_filp = h_file; + err = h_file->f_op->aio_fsync(kio, datasync); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + if (!err) + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); + /*ignore*/ + mutex_unlock(h_mtx); + } + au_write_post(inode, h_file, &wpre, /*written*/0); + +out_unlock: + si_read_unlock(inode->sb); + mutex_unlock(&inode->i_mutex); +out: + return err; +} +#endif + +static int aufs_fasync(int fd, struct file *file, int flag) +{ + int err; + struct file *h_file; + struct super_block *sb; + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (h_file->f_op->fasync) + err = h_file->f_op->fasync(fd, h_file, flag); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 +static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, + size_t len, loff_t *pos, int more) +{ +} +#endif + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + + .llseek = default_llseek, + + .read = aufs_read, + .write = aufs_write, + .read_iter = aufs_read_iter, + .write_iter = aufs_write_iter, + +#ifdef CONFIG_AUFS_POLL + .poll = aufs_poll, +#endif + .unlocked_ioctl = aufs_ioctl_nondir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_nondir, +#endif + .mmap = aufs_mmap, + .open = aufs_open_nondir, + .flush = aufs_flush_nondir, + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + /* .aio_fsync = aufs_aio_fsync_nondir, */ + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read, +#endif + .fallocate = aufs_fallocate +}; --- linux-4.4.0.orig/fs/aufs/fhsm.c +++ linux-4.4.0/fs/aufs/fhsm.c @@ -0,0 +1,426 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * File-based Hierarchy Storage Management + */ + +#include +#include +#include +#include +#include "aufs.h" + +static aufs_bindex_t au_fhsm_bottom(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + return fhsm->fhsm_bottom; +} + +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + fhsm->fhsm_bottom = bindex; +} + +/* ---------------------------------------------------------------------- */ + +static int au_fhsm_test_jiffy(struct au_sbinfo *sbinfo, struct au_branch *br) +{ + struct au_br_fhsm *bf; + + bf = br->br_fhsm; + MtxMustLock(&bf->bf_lock); + + return !bf->bf_readable + || time_after(jiffies, + bf->bf_jiffy + sbinfo->si_fhsm.fhsm_expire); +} + +/* ---------------------------------------------------------------------- */ + +static void au_fhsm_notify(struct super_block *sb, int val) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (au_fhsm_pid(fhsm) + && atomic_read(&fhsm->fhsm_readable) != -1) { + atomic_set(&fhsm->fhsm_readable, val); + if (val) + wake_up(&fhsm->fhsm_wqh); + } +} + +static int au_fhsm_stfs(struct super_block *sb, aufs_bindex_t bindex, + struct aufs_stfs *rstfs, int do_lock, int do_notify) +{ + int err; + struct au_branch *br; + struct au_br_fhsm *bf; + + br = au_sbr(sb, bindex); + AuDebugOn(au_br_rdonly(br)); + bf = br->br_fhsm; + AuDebugOn(!bf); + + if (do_lock) + mutex_lock(&bf->bf_lock); + else + MtxMustLock(&bf->bf_lock); + + /* sb->s_root for NFS is unreliable */ + err = au_br_stfs(br, &bf->bf_stfs); + if (unlikely(err)) { + AuErr1("FHSM failed (%d), b%d, ignored.\n", bindex, err); + goto out; + } + + bf->bf_jiffy = jiffies; + bf->bf_readable = 1; + if (do_notify) + au_fhsm_notify(sb, /*val*/1); + if (rstfs) + *rstfs = bf->bf_stfs; + +out: + if (do_lock) + mutex_unlock(&bf->bf_lock); + au_fhsm_notify(sb, /*val*/1); + + return err; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force) +{ + int err; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct au_br_fhsm *bf; + + AuDbg("b%d, force %d\n", bindex, force); + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (!au_ftest_si(sbinfo, FHSM) + || fhsm->fhsm_bottom == bindex) + return; + + br = au_sbr(sb, bindex); + bf = br->br_fhsm; + AuDebugOn(!bf); + mutex_lock(&bf->bf_lock); + if (force + || au_fhsm_pid(fhsm) + || au_fhsm_test_jiffy(sbinfo, br)) + err = au_fhsm_stfs(sb, bindex, /*rstfs*/NULL, /*do_lock*/0, + /*do_notify*/1); + mutex_unlock(&bf->bf_lock); +} + +void au_fhsm_wrote_all(struct super_block *sb, int force) +{ + aufs_bindex_t bindex, bend; + struct au_branch *br; + + /* exclude the bottom */ + bend = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + au_fhsm_wrote(sb, bindex, force); + } +} + +/* ---------------------------------------------------------------------- */ + +static unsigned int au_fhsm_poll(struct file *file, + struct poll_table_struct *wait) +{ + unsigned int mask; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + mask = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + poll_wait(file, &fhsm->fhsm_wqh, wait); + if (atomic_read(&fhsm->fhsm_readable)) + mask = POLLIN /* | POLLRDNORM */; + + AuTraceErr((int)mask); + return mask; +} + +static int au_fhsm_do_read_one(struct aufs_stbr __user *stbr, + struct aufs_stfs *stfs, __s16 brid) +{ + int err; + + err = copy_to_user(&stbr->stfs, stfs, sizeof(*stfs)); + if (!err) + err = __put_user(brid, &stbr->brid); + if (unlikely(err)) + err = -EFAULT; + + return err; +} + +static ssize_t au_fhsm_do_read(struct super_block *sb, + struct aufs_stbr __user *stbr, size_t count) +{ + ssize_t err; + int nstbr; + aufs_bindex_t bindex, bend; + struct au_branch *br; + struct au_br_fhsm *bf; + + /* except the bottom branch */ + err = 0; + nstbr = 0; + bend = au_fhsm_bottom(sb); + for (bindex = 0; !err && bindex < bend; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_fhsm(br->br_perm)) + continue; + + bf = br->br_fhsm; + mutex_lock(&bf->bf_lock); + if (bf->bf_readable) { + err = -EFAULT; + if (count >= sizeof(*stbr)) + err = au_fhsm_do_read_one(stbr++, &bf->bf_stfs, + br->br_id); + if (!err) { + bf->bf_readable = 0; + count -= sizeof(*stbr); + nstbr++; + } + } + mutex_unlock(&bf->bf_lock); + } + if (!err) + err = sizeof(*stbr) * nstbr; + + return err; +} + +static ssize_t au_fhsm_read(struct file *file, char __user *buf, size_t count, + loff_t *pos) +{ + ssize_t err; + int readable; + aufs_bindex_t nfhsm, bindex, bend; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct super_block *sb; + + err = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; +need_data: + spin_lock_irq(&fhsm->fhsm_wqh.lock); + if (!atomic_read(&fhsm->fhsm_readable)) { + if (vfsub_file_flags(file) & O_NONBLOCK) + err = -EAGAIN; + else + err = wait_event_interruptible_locked_irq + (fhsm->fhsm_wqh, + atomic_read(&fhsm->fhsm_readable)); + } + spin_unlock_irq(&fhsm->fhsm_wqh.lock); + if (unlikely(err)) + goto out; + + /* sb may already be dead */ + au_rw_read_lock(&sbinfo->si_rwsem); + readable = atomic_read(&fhsm->fhsm_readable); + if (readable > 0) { + sb = sbinfo->si_sb; + AuDebugOn(!sb); + /* exclude the bottom branch */ + nfhsm = 0; + bend = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + nfhsm++; + } + err = -EMSGSIZE; + if (nfhsm * sizeof(struct aufs_stbr) <= count) { + atomic_set(&fhsm->fhsm_readable, 0); + err = au_fhsm_do_read(sbinfo->si_sb, (void __user *)buf, + count); + } + } + au_rw_read_unlock(&sbinfo->si_rwsem); + if (!readable) + goto need_data; + +out: + return err; +} + +static int au_fhsm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + /* sb may already be dead */ + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); + kobject_put(&sbinfo->si_kobj); + + return 0; +} + +static const struct file_operations au_fhsm_fops = { + .owner = THIS_MODULE, + .llseek = noop_llseek, + .read = au_fhsm_read, + .poll = au_fhsm_poll, + .release = au_fhsm_release +}; + +int au_fhsm_fd(struct super_block *sb, int oflags) +{ + int err, fd; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(oflags & ~(O_CLOEXEC | O_NONBLOCK))) + goto out; + + err = 0; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + if (!fhsm->fhsm_pid) + fhsm->fhsm_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&fhsm->fhsm_spin); + if (unlikely(err)) + goto out; + + oflags |= O_RDONLY; + /* oflags |= FMODE_NONOTIFY; */ + fd = anon_inode_getfd("[aufs_fhsm]", &au_fhsm_fops, sbinfo, oflags); + err = fd; + if (unlikely(fd < 0)) + goto out_pid; + + /* succeed reglardless 'fhsm' status */ + kobject_get(&sbinfo->si_kobj); + si_noflush_read_lock(sb); + if (au_ftest_si(sbinfo, FHSM)) + au_fhsm_wrote_all(sb, /*force*/0); + si_read_unlock(sb); + goto out; /* success */ + +out_pid: + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_fhsm_br_alloc(struct au_branch *br) +{ + int err; + + err = 0; + br->br_fhsm = kmalloc(sizeof(*br->br_fhsm), GFP_NOFS); + if (br->br_fhsm) + au_br_fhsm_init(br->br_fhsm); + else + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_fhsm_fin(struct super_block *sb) +{ + au_fhsm_notify(sb, /*val*/-1); +} + +void au_fhsm_init(struct au_sbinfo *sbinfo) +{ + struct au_fhsm *fhsm; + + fhsm = &sbinfo->si_fhsm; + spin_lock_init(&fhsm->fhsm_spin); + init_waitqueue_head(&fhsm->fhsm_wqh); + atomic_set(&fhsm->fhsm_readable, 0); + fhsm->fhsm_expire + = msecs_to_jiffies(AUFS_FHSM_CACHE_DEF_SEC * MSEC_PER_SEC); + fhsm->fhsm_bottom = -1; +} + +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec) +{ + sbinfo->si_fhsm.fhsm_expire + = msecs_to_jiffies(sec * MSEC_PER_SEC); +} + +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo) +{ + unsigned int u; + + if (!au_ftest_si(sbinfo, FHSM)) + return; + + u = jiffies_to_msecs(sbinfo->si_fhsm.fhsm_expire) / MSEC_PER_SEC; + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} --- linux-4.4.0.orig/fs/aufs/file.c +++ linux-4.4.0/fs/aufs/file.c @@ -0,0 +1,844 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling file/dir, and address_space operation + */ + +#ifdef CONFIG_AUFS_DEBUG +#include +#endif +#include +#include "aufs.h" + +/* drop flags for writing */ +unsigned int au_file_roflags(unsigned int flags) +{ + flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); + flags |= O_RDONLY | O_NOATIME; + return flags; +} + +/* common functions to regular file and dir */ +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_path; + int err; + + /* a race condition can happen between open and unlink/rmdir */ + h_file = ERR_PTR(-ENOENT); + h_dentry = au_h_dptr(dentry, bindex); + if (au_test_nfsd() && (!h_dentry || d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + spin_lock(&h_dentry->d_lock); + err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) + /* || !d_inode(dentry)->i_nlink */ + ; + spin_unlock(&h_dentry->d_lock); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + err = au_br_test_oflag(flags, br); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + /* drop flags for writing */ + if (au_test_ro(sb, bindex, d_inode(dentry))) { + if (force_wr && !(flags & O_WRONLY)) + force_wr = 0; + flags = au_file_roflags(flags); + if (force_wr) { + h_file = ERR_PTR(-EROFS); + flags = au_file_roflags(flags); + if (unlikely(vfsub_native_ro(h_inode) + || IS_APPEND(h_inode))) + goto out; + flags &= ~O_ACCMODE; + flags |= O_WRONLY; + } + } + flags &= ~O_CREAT; + atomic_inc(&br->br_count); + h_path.dentry = h_dentry; + h_path.mnt = au_br_mnt(br); + h_file = vfsub_dentry_open(&h_path, flags); + if (IS_ERR(h_file)) + goto out_br; + + if (flags & __FMODE_EXEC) { + err = deny_write_access(h_file); + if (unlikely(err)) { + fput(h_file); + h_file = ERR_PTR(err); + goto out_br; + } + } + fsnotify_open(h_file); + goto out; /* success */ + +out_br: + atomic_dec(&br->br_count); +out: + return h_file; +} + +static int au_cmoo(struct dentry *dentry) +{ + int err, cmoo; + unsigned int udba; + struct path h_path; + struct au_pin pin; + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + struct inode *delegated; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + pid_t pid; + struct au_branch *br; + struct dentry *parent; + struct au_hinode *hdir; + + DiMustWriteLock(dentry); + IiMustWriteLock(d_inode(dentry)); + + err = 0; + if (IS_ROOT(dentry)) + goto out; + cpg.bsrc = au_dbstart(dentry); + if (!cpg.bsrc) + goto out; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + pid = au_fhsm_pid(fhsm); + if (pid + && (current->pid == pid + || current->real_parent->pid == pid)) + goto out; + + br = au_sbr(sb, cpg.bsrc); + cmoo = au_br_cmoo(br->br_perm); + if (!cmoo) + goto out; + if (!d_is_reg(dentry)) + cmoo &= AuBrAttr_COO_ALL; + if (!cmoo) + goto out; + + parent = dget_parent(dentry); + di_write_lock_parent(parent); + err = au_wbr_do_copyup_bu(dentry, cpg.bsrc - 1); + cpg.bdst = err; + if (unlikely(err < 0)) { + err = 0; /* there is no upper writable branch */ + goto out_dgrade; + } + AuDbg("bsrc %d, bdst %d\n", cpg.bsrc, cpg.bdst); + + /* do not respect the coo attrib for the target branch */ + err = au_cpup_dirs(dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + + di_downgrade_lock(parent, AuLock_IR); + udba = au_opt_udba(sb); + err = au_pin(&pin, dentry, cpg.bdst, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + if (unlikely(err)) + goto out_parent; + if (!(cmoo & AuBrWAttr_MOO)) + goto out_parent; /* success */ + + err = au_pin(&pin, dentry, cpg.bsrc, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + h_path.mnt = au_br_mnt(br); + h_path.dentry = au_h_dptr(dentry, cpg.bsrc); + hdir = au_hi(d_inode(parent), cpg.bsrc); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, /*force*/1); + au_unpin(&pin); + /* todo: keep h_dentry or not? */ + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("unlink %pd after coo failed (%d), ignored\n", + dentry, err); + err = 0; + } + goto out_parent; /* success */ + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_parent: + di_read_unlock(parent, AuLock_IR); + dput(parent); +out: + AuTraceErr(err); + return err; +} + +int au_do_open(struct file *file, struct au_do_open_args *args) +{ + int err, no_lock = args->no_lock; + struct dentry *dentry; + struct au_finfo *finfo; + + if (!no_lock) + err = au_finfo_init(file, args->fidir); + else { + lockdep_off(); + err = au_finfo_init(file, args->fidir); + lockdep_on(); + } + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + if (!no_lock) { + di_write_lock_child(dentry); + err = au_cmoo(dentry); + di_downgrade_lock(dentry, AuLock_IR); + if (!err) + err = args->open(file, vfsub_file_flags(file), NULL); + di_read_unlock(dentry, AuLock_IR); + } else { + err = au_cmoo(dentry); + if (!err) + err = args->open(file, vfsub_file_flags(file), + args->h_file); + if (!err && au_fbstart(file) != au_dbstart(dentry)) + /* + * cmoo happens after h_file was opened. + * need to refresh file later. + */ + atomic_dec(&au_fi(file)->fi_generation); + } + + finfo = au_fi(file); + if (!err) { + finfo->fi_file = file; + au_sphl_add(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + } + if (!no_lock) + fi_write_unlock(file); + else { + lockdep_off(); + fi_write_unlock(file); + lockdep_on(); + } + if (unlikely(err)) { + finfo->fi_hdir = NULL; + au_finfo_fin(file); + } + +out: + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t bstart; + struct dentry *dentry; + struct file *h_file, *h_file_tmp; + + dentry = file->f_path.dentry; + bstart = au_dbstart(dentry); + h_file_tmp = NULL; + if (au_fbstart(file) == bstart) { + h_file = au_hf_top(file); + if (file->f_mode == h_file->f_mode) + return 0; /* success */ + h_file_tmp = h_file; + get_file(h_file_tmp); + au_set_h_fptr(file, bstart, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + /* + * it can happen + * file exists on both of rw and ro + * open --> dbstart and fbstart are both 0 + * prepend a branch as rw, "rw" become ro + * remove rw/file + * delete the top branch, "rw" becomes rw again + * --> dbstart is 1, fbstart is still 0 + * write --> fbstart is 0 but dbstart is 1 + */ + /* AuDebugOn(au_fbstart(file) < bstart); */ + + h_file = au_h_open(dentry, bstart, vfsub_file_flags(file) & ~O_TRUNC, + file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) { + if (h_file_tmp) { + atomic_inc(&au_sbr(dentry->d_sb, bstart)->br_count); + au_set_h_fptr(file, bstart, h_file_tmp); + h_file_tmp = NULL; + } + goto out; /* todo: close all? */ + } + + err = 0; + au_set_fbstart(file, bstart); + au_set_h_fptr(file, bstart, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) + fput(h_file_tmp); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_path.dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + dinfo->di_bstart = btgt; + hdp = dinfo->di_hdentry; + h_dentry = hdp[0 + btgt].hd_dentry; + hdp[0 + btgt].hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp[0 + btgt].hd_dentry = h_dentry; + dinfo->di_bstart = bstart; + + return err; +} + +static int au_ready_to_write_wh(struct file *file, loff_t len, + aufs_bindex_t bcpup, struct au_pin *pin) +{ + int err; + struct inode *inode, *h_inode; + struct dentry *h_dentry, *hi_wh; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = bcpup, + .bsrc = -1, + .len = len, + .pin = pin + }; + + au_update_dbstart(cpg.dentry); + inode = d_inode(cpg.dentry); + h_inode = NULL; + if (au_dbstart(cpg.dentry) <= bcpup + && au_dbend(cpg.dentry) >= bcpup) { + h_dentry = au_h_dptr(cpg.dentry, bcpup); + if (h_dentry && d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + } + hi_wh = au_hi_wh(inode, bcpup); + if (!hi_wh && !h_inode) + err = au_sio_cpup_wh(&cpg, file); + else + /* already copied-up after unlink */ + err = au_reopen_wh(file, bcpup, hi_wh); + + if (!err + && (inode->i_nlink > 1 + || (inode->i_state & I_LINKABLE)) + && au_opt_test(au_mntflags(cpg.dentry->d_sb), PLINK)) + au_plink_append(inode, bcpup, au_h_dptr(cpg.dentry, bcpup)); + + return err; +} + +/* + * prepare the @file for writing. + */ +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) +{ + int err; + aufs_bindex_t dbstart; + struct dentry *parent; + struct inode *inode; + struct super_block *sb; + struct file *h_file; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = len, + .pin = pin, + .flags = AuCpup_DTIME + }; + + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bsrc = au_fbstart(file); + err = au_test_ro(sb, cpg.bsrc, inode); + if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { + err = au_pin(pin, cpg.dentry, cpg.bsrc, AuOpt_UDBA_NONE, + /*flags*/0); + goto out; + } + + /* need to cpup or reopen */ + parent = dget_parent(cpg.dentry); + di_write_lock_parent(parent); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + if (unlikely(err < 0)) + goto out_dgrade; + err = 0; + + if (!d_unhashed(cpg.dentry) && !au_h_dptr(parent, cpg.bdst)) { + err = au_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + } + + err = au_pin(pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_dgrade; + + dbstart = au_dbstart(cpg.dentry); + if (dbstart <= cpg.bdst) + cpg.bsrc = cpg.bdst; + + if (dbstart <= cpg.bdst /* just reopen */ + || !d_unhashed(cpg.dentry) /* copyup and reopen */ + ) { + h_file = au_h_open_pre(cpg.dentry, cpg.bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + di_downgrade_lock(parent, AuLock_IR); + if (dbstart > cpg.bdst) + err = au_sio_cpup_simple(&cpg); + if (!err) + err = au_reopen_nondir(file); + au_h_open_post(cpg.dentry, cpg.bsrc, h_file); + } + } else { /* copyup as wh and reopen */ + /* + * since writable hfsplus branch is not supported, + * h_open_pre/post() are unnecessary. + */ + err = au_ready_to_write_wh(file, len, cpg.bdst, pin); + di_downgrade_lock(parent, AuLock_IR); + } + + if (!err) { + au_pin_set_parent_lflag(pin, /*lflag*/0); + goto out_dput; /* success */ + } + au_unpin(pin); + goto out_unlock; + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_dput: + dput(parent); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)) +{ + int err; + struct super_block *sb; + struct inode *inode; + + inode = file_inode(file); + sb = inode->i_sb; + si_noflush_read_lock(sb); + fi_read_lock(file); + ii_read_lock_child(inode); + + err = flush(file, id); + au_cpup_attr_timesizes(inode); + + ii_read_unlock(inode); + fi_read_unlock(file); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_file_refresh_by_inode(struct file *file, int *need_reopen) +{ + int err; + struct au_pin pin; + struct au_finfo *finfo; + struct dentry *parent, *hi_wh; + struct inode *inode; + struct super_block *sb; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME + }; + + FiMustWriteLock(file); + + err = 0; + finfo = au_fi(file); + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bdst = au_ibstart(inode); + if (cpg.bdst == finfo->fi_btop || IS_ROOT(cpg.dentry)) + goto out; + + parent = dget_parent(cpg.dentry); + if (au_test_ro(sb, cpg.bdst, inode)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + di_read_unlock(parent, !AuLock_IR); + if (unlikely(err < 0)) + goto out_parent; + err = 0; + } + + di_read_lock_parent(parent, AuLock_IR); + hi_wh = au_hi_wh(inode, cpg.bdst); + if (!S_ISDIR(inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode) + && !d_unhashed(cpg.dentry) + && cpg.bdst < au_dbstart(cpg.dentry)) { + err = au_test_and_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_unlock; + + /* always superio. */ + err = au_pin(&pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + } else if (hi_wh) { + /* already copied-up after unlink */ + err = au_reopen_wh(file, cpg.bdst, hi_wh); + *need_reopen = 0; + } + +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_parent: + dput(parent); +out: + return err; +} + +static void au_do_refresh_dir(struct file *file) +{ + aufs_bindex_t bindex, bend, new_bindex, brid; + struct au_hfile *p, tmp, *q; + struct au_finfo *finfo; + struct super_block *sb; + struct au_fidir *fidir; + + FiMustWriteLock(file); + + sb = file->f_path.dentry->d_sb; + finfo = au_fi(file); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + p = fidir->fd_hfile + finfo->fi_btop; + brid = p->hf_br->br_id; + bend = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bend; bindex++, p++) { + if (!p->hf_file) + continue; + + new_bindex = au_br_index(sb, p->hf_br->br_id); + if (new_bindex == bindex) + continue; + if (new_bindex < 0) { + au_set_h_fptr(file, bindex, NULL); + continue; + } + + /* swap two lower inode, and loop again */ + q = fidir->fd_hfile + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hf_file) { + bindex--; + p--; + } + } + + p = fidir->fd_hfile; + if (!au_test_mmapped(file) && !d_unlinked(file->f_path.dentry)) { + bend = au_sbend(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bend; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, file); + } + } else { + bend = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bend; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, file); + bend = au_sbend(sb); + } + + p = fidir->fd_hfile + bend; + for (fidir->fd_bbot = bend; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, file); + } + AuDebugOn(fidir->fd_bbot < finfo->fi_btop); +} + +/* + * after branch manipulating, refresh the file. + */ +static int refresh_file(struct file *file, int (*reopen)(struct file *file)) +{ + int err, need_reopen; + aufs_bindex_t bend, bindex; + struct dentry *dentry; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_path.dentry; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(dentry->d_sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbstart(file, bindex); + } else { + err = au_fidir_realloc(finfo, au_sbend(dentry->d_sb) + 1); + if (unlikely(err)) + goto out; + au_do_refresh_dir(file); + } + + err = 0; + need_reopen = 1; + if (!au_test_mmapped(file)) + err = au_file_refresh_by_inode(file, &need_reopen); + if (!err && need_reopen && !d_unlinked(dentry)) + err = reopen(file); + if (!err) { + au_update_figen(file); + goto out; /* success */ + } + + /* error, close all lower files */ + if (finfo->fi_hdir) { + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + +out: + return err; +} + +/* common function to regular file and dir */ +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t bstart; + unsigned char pseudo_link; + struct dentry *dentry; + struct inode *inode; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + sigen = au_sigen(dentry->d_sb); + fi_write_lock(file); + figen = au_figen(file); + di_write_lock_child(dentry); + bstart = au_dbstart(dentry); + pseudo_link = (bstart != au_ibstart(inode)); + if (sigen == figen && !pseudo_link && au_fbstart(file) == bstart) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + goto out; /* success */ + } + + AuDbg("sigen %d, figen %d\n", sigen, figen); + if (au_digen_test(dentry, sigen)) { + err = au_reval_dpath(dentry, sigen); + AuDebugOn(!err && au_digen_test(dentry, sigen)); + } + + if (!err) + err = refresh_file(file, reopen); + if (!err) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + } else { + di_write_unlock(dentry); + fi_write_unlock(file); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* cf. aufs_nopage() */ +/* for madvise(2) */ +static int aufs_readpage(struct file *file __maybe_unused, struct page *page) +{ + unlock_page(page); + return 0; +} + +/* it will never be called, but necessary to support O_DIRECT */ +static ssize_t aufs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, + loff_t offset) +{ BUG(); return 0; } + +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ AuUnsupport(); return 0; } +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + +static int aufs_set_page_dirty(struct page *page) +{ AuUnsupport(); return 0; } +static void aufs_invalidatepage(struct page *page, unsigned int offset, + unsigned int length) +{ AuUnsupport(); } +static int aufs_releasepage(struct page *page, gfp_t gfp) +{ AuUnsupport(); return 0; } +#if 0 /* called by memory compaction regardless file */ +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +#endif +static int aufs_launder_page(struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_is_partially_uptodate(struct page *page, + unsigned long from, + unsigned long count) +{ AuUnsupport(); return 0; } +static void aufs_is_dirty_writeback(struct page *page, bool *dirty, + bool *writeback) +{ AuUnsupport(); } +static int aufs_error_remove_page(struct address_space *mapping, + struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_swap_activate(struct swap_info_struct *sis, struct file *file, + sector_t *span) +{ AuUnsupport(); return 0; } +static void aufs_swap_deactivate(struct file *file) +{ AuUnsupport(); } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { + .readpage = aufs_readpage, + .direct_IO = aufs_direct_IO, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ + .set_page_dirty = aufs_set_page_dirty, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ + .invalidatepage = aufs_invalidatepage, + .releasepage = aufs_releasepage, + /* is fallback_migrate_page ok? */ + /* .migratepage = aufs_migratepage, */ + .launder_page = aufs_launder_page, + .is_partially_uptodate = aufs_is_partially_uptodate, + .is_dirty_writeback = aufs_is_dirty_writeback, + .error_remove_page = aufs_error_remove_page, + .swap_activate = aufs_swap_activate, + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; --- linux-4.4.0.orig/fs/aufs/file.h +++ linux-4.4.0/fs/aufs/file.h @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file operations + */ + +#ifndef __AUFS_FILE_H__ +#define __AUFS_FILE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "rwsem.h" + +struct au_branch; +struct au_hfile { + struct file *hf_file; + struct au_branch *hf_br; +}; + +struct au_vdir; +struct au_fidir { + aufs_bindex_t fd_bbot; + aufs_bindex_t fd_nent; + struct au_vdir *fd_vdir_cache; + struct au_hfile fd_hfile[]; +}; + +static inline int au_fidir_sz(int nent) +{ + AuDebugOn(nent < 0); + return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; +} + +struct au_finfo { + atomic_t fi_generation; + + struct au_rwsem fi_rwsem; + aufs_bindex_t fi_btop; + + /* do not union them */ + struct { /* for non-dir */ + struct au_hfile fi_htop; + atomic_t fi_mmapped; + }; + struct au_fidir *fi_hdir; /* for dir only */ + + struct hlist_node fi_hlist; + struct file *fi_file; /* very ugly */ +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* file.c */ +extern const struct address_space_operations aufs_aop; +unsigned int au_file_roflags(unsigned int flags); +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr); +struct au_do_open_args { + int no_lock; + int (*open)(struct file *file, int flags, + struct file *h_file); + struct au_fidir *fidir; + struct file *h_file; +}; +int au_do_open(struct file *file, struct au_do_open_args *args); +int au_reopen_nondir(struct file *file); +struct au_pin; +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock); +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)); + +/* poll.c */ +#ifdef CONFIG_AUFS_POLL +unsigned int aufs_poll(struct file *file, poll_table *wait); +#endif + +#ifdef CONFIG_AUFS_BR_HFSPLUS +/* hfsplus.c */ +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr); +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#else +AuStub(struct file *, au_h_open_pre, return NULL, struct dentry *dentry, + aufs_bindex_t bindex, int force_wr) +AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#endif + +/* f_op.c */ +extern const struct file_operations aufs_file_fop; +int au_do_open_nondir(struct file *file, int flags, struct file *h_file); +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); +struct file *au_read_pre(struct file *file, int keep_fi); + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, struct file *file); +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, + struct file *h_file); + +void au_update_figen(struct file *file); +struct au_fidir *au_fidir_alloc(struct super_block *sb); +int au_fidir_realloc(struct au_finfo *finfo, int nbr); + +void au_fi_init_once(void *_fi); +void au_finfo_fin(struct file *file); +int au_finfo_init(struct file *file, struct au_fidir *fidir); + +/* ioctl.c */ +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg); +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg); +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_finfo *au_fi(struct file *file) +{ + return file->private_data; +} + +/* ---------------------------------------------------------------------- */ + +/* + * fi_read_lock, fi_write_lock, + * fi_read_unlock, fi_write_unlock, fi_downgrade_lock + */ +AuSimpleRwsemFuncs(fi, struct file *f, &au_fi(f)->fi_rwsem); + +#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) +#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) +#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: hard/soft set? */ +static inline aufs_bindex_t au_fbstart(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbend_dir(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_bbot; +} + +static inline struct au_vdir *au_fvdir_cache(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_vdir_cache; +} + +static inline void au_set_fbstart(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbend_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_bbot = bindex; +} + +static inline void au_set_fvdir_cache(struct file *file, + struct au_vdir *vdir_cache) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; +} + +static inline struct file *au_hf_top(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(au_fi(file)->fi_hdir); + return au_fi(file)->fi_htop.hf_file; +} + +static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; +} + +/* todo: memory barrier? */ +static inline unsigned int au_figen(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_generation); +} + +static inline void au_set_mmapped(struct file *f) +{ + if (atomic_inc_return(&au_fi(f)->fi_mmapped)) + return; + pr_warn("fi_mmapped wrapped around\n"); + while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) + ; +} + +static inline void au_unset_mmapped(struct file *f) +{ + atomic_dec(&au_fi(f)->fi_mmapped); +} + +static inline int au_test_mmapped(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_mmapped); +} + +/* customize vma->vm_file */ + +static inline void au_do_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + f = vma->vm_file; + get_file(file); + vma->vm_file = file; + fput(f); +} + +#ifdef CONFIG_MMU +#define AuDbgVmRegion(file, vma) do {} while (0) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + au_do_vm_file_reset(vma, file); +} +#else +#define AuDbgVmRegion(file, vma) \ + AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + au_do_vm_file_reset(vma, file); + f = vma->vm_region->vm_file; + get_file(file); + vma->vm_region->vm_file = file; + fput(f); +} +#endif /* CONFIG_MMU */ + +/* handle vma->vm_prfile */ +static inline void au_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ --- linux-4.4.0.orig/fs/aufs/finfo.c +++ linux-4.4.0/fs/aufs/finfo.c @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file private data + */ + +#include "aufs.h" + +void au_hfput(struct au_hfile *hf, struct file *file) +{ + /* todo: direct access f_flags */ + if (vfsub_file_flags(file) & __FMODE_EXEC) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + atomic_dec(&hf->hf_br->br_count); + hf->hf_br = NULL; +} + +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) +{ + struct au_finfo *finfo = au_fi(file); + struct au_hfile *hf; + struct au_fidir *fidir; + + fidir = finfo->fi_hdir; + if (!fidir) { + AuDebugOn(finfo->fi_btop != bindex); + hf = &finfo->fi_htop; + } else + hf = fidir->fd_hfile + bindex; + + if (hf && hf->hf_file) + au_hfput(hf, file); + if (val) { + FiMustWriteLock(file); + AuDebugOn(IS_ERR_OR_NULL(file->f_path.dentry)); + hf->hf_file = val; + hf->hf_br = au_sbr(file->f_path.dentry->d_sb, bindex); + } +} + +void au_update_figen(struct file *file) +{ + atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_path.dentry)); + /* smp_mb(); */ /* atomic_set */ +} + +/* ---------------------------------------------------------------------- */ + +struct au_fidir *au_fidir_alloc(struct super_block *sb) +{ + struct au_fidir *fidir; + int nbr; + + nbr = au_sbend(sb) + 1; + if (nbr < 2) + nbr = 2; /* initial allocate for 2 branches */ + fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr) +{ + int err; + struct au_fidir *fidir, *p; + + AuRwMustWriteLock(&finfo->fi_rwsem); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + + err = -ENOMEM; + p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), + GFP_NOFS); + if (p) { + p->fd_nent = nbr; + finfo->fi_hdir = p; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_finfo_fin(struct file *file) +{ + struct au_finfo *finfo; + + au_nfiles_dec(file->f_path.dentry->d_sb); + + finfo = au_fi(file); + AuDebugOn(finfo->fi_hdir); + AuRwDestroy(&finfo->fi_rwsem); + au_cache_free_finfo(finfo); +} + +void au_fi_init_once(void *_finfo) +{ + struct au_finfo *finfo = _finfo; + static struct lock_class_key aufs_fi; + + au_rw_init(&finfo->fi_rwsem); + au_rw_class(&finfo->fi_rwsem, &aufs_fi); +} + +int au_finfo_init(struct file *file, struct au_fidir *fidir) +{ + int err; + struct au_finfo *finfo; + struct dentry *dentry; + + err = -ENOMEM; + dentry = file->f_path.dentry; + finfo = au_cache_alloc_finfo(); + if (unlikely(!finfo)) + goto out; + + err = 0; + au_nfiles_inc(dentry->d_sb); + /* verbose coding for lock class name */ + if (!fidir) + au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcNonDir_FIINFO); + else + au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcDir_FIINFO); + au_rw_write_lock(&finfo->fi_rwsem); + finfo->fi_btop = -1; + finfo->fi_hdir = fidir; + atomic_set(&finfo->fi_generation, au_digen(dentry)); + /* smp_mb(); */ /* atomic_set */ + + file->private_data = finfo; + +out: + return err; +} --- linux-4.4.0.orig/fs/aufs/fstype.h +++ linux-4.4.0/fs/aufs/fstype.h @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * judging filesystem type + */ + +#ifndef __AUFS_FSTYPE_H__ +#define __AUFS_FSTYPE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +static inline int au_test_aufs(struct super_block *sb) +{ + return sb->s_magic == AUFS_SUPER_MAGIC; +} + +static inline const char *au_sbtype(struct super_block *sb) +{ + return sb->s_type->name; +} + +static inline int au_test_iso9660(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ISO9660_FS) || defined(CONFIG_ISO9660_FS_MODULE) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ROMFS_FS) || defined(CONFIG_ROMFS_FS_MODULE) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CRAMFS) || defined(CONFIG_CRAMFS_MODULE) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NFS_FS) || defined(CONFIG_NFS_FS_MODULE) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FUSE_FS) || defined(CONFIG_FUSE_FS_MODULE) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XFS_FS) || defined(CONFIG_XFS_FS_MODULE) + return sb->s_magic == XFS_SB_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_TMPFS + return sb->s_magic == TMPFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ECRYPT_FS) || defined(CONFIG_ECRYPT_FS_MODULE) + return !strcmp(au_sbtype(sb), "ecryptfs"); +#else + return 0; +#endif +} + +static inline int au_test_ramfs(struct super_block *sb) +{ + return sb->s_magic == RAMFS_MAGIC; +} + +static inline int au_test_ubifs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_UBIFS_FS) || defined(CONFIG_UBIFS_FS_MODULE) + return sb->s_magic == UBIFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_procfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_PROC_FS + return sb->s_magic == PROC_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SYSFS + return sb->s_magic == SYSFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_configfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CONFIGFS_FS) || defined(CONFIG_CONFIGFS_FS_MODULE) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_MINIX_FS) || defined(CONFIG_MINIX_FS_MODULE) + return sb->s_magic == MINIX3_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC2 + || sb->s_magic == MINIX_SUPER_MAGIC + || sb->s_magic == MINIX_SUPER_MAGIC2; +#else + return 0; +#endif +} + +static inline int au_test_fat(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FAT_FS) || defined(CONFIG_FAT_FS_MODULE) + return sb->s_magic == MSDOS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_msdos(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_vfat(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_securityfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SECURITYFS + return sb->s_magic == SECURITYFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_squashfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SQUASHFS) || defined(CONFIG_SQUASHFS_MODULE) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XENFS) || defined(CONFIG_XENFS_MODULE) + return sb->s_magic == XENFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_debugfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_DEBUG_FS + return sb->s_magic == DEBUGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_nilfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NILFS) || defined(CONFIG_NILFS_MODULE) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_HFSPLUS_FS) || defined(CONFIG_HFSPLUS_FS_MODULE) + return sb->s_magic == HFSPLUS_SUPER_MAGIC; +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ +/* + * they can't be an aufs branch. + */ +static inline int au_test_fs_unsuppoted(struct super_block *sb) +{ + return +#ifndef CONFIG_AUFS_BR_RAMFS + au_test_ramfs(sb) || +#endif + au_test_procfs(sb) + || au_test_sysfs(sb) + || au_test_configfs(sb) + || au_test_debugfs(sb) + || au_test_securityfs(sb) + || au_test_xenfs(sb) + || au_test_ecryptfs(sb) + /* || !strcmp(au_sbtype(sb), "unionfs") */ + || au_test_aufs(sb); /* will be supported in next version */ +} + +static inline int au_test_fs_remote(struct super_block *sb) +{ + return !au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + && !au_test_ramfs(sb) +#endif + && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); +} + +/* ---------------------------------------------------------------------- */ + +/* + * Note: these functions (below) are created after reading ->getattr() in all + * filesystems under linux/fs. it means we have to do so in every update... + */ + +/* + * some filesystems require getattr to refresh the inode attributes before + * referencing. + * in most cases, we can rely on the inode attribute in NFS (or every remote fs) + * and leave the work for d_revalidate() + */ +static inline int au_test_fs_refresh_iattr(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + /* || au_test_btrfs(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't maintain i_size or i_blocks. + */ +static inline int au_test_fs_bad_iattr_size(struct super_block *sb) +{ + return au_test_xfs(sb) + || au_test_btrfs(sb) + || au_test_ubifs(sb) + || au_test_hfsplus(sb) /* maintained, but incorrect */ + /* || au_test_minix(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't store the correct value in some of their inode + * attributes. + */ +static inline int au_test_fs_bad_iattr(struct super_block *sb) +{ + return au_test_fs_bad_iattr_size(sb) + || au_test_fat(sb) + || au_test_msdos(sb) + || au_test_vfat(sb); +} + +/* they don't check i_nlink in link(2) */ +static inline int au_test_fs_no_limit_nlink(struct super_block *sb) +{ + return au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || au_test_ramfs(sb) +#endif + || au_test_ubifs(sb) + || au_test_hfsplus(sb); +} + +/* + * filesystems which sets S_NOATIME and S_NOCMTIME. + */ +static inline int au_test_fs_notime(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + || au_test_ubifs(sb) + ; +} + +/* temporary support for i#1 in cramfs */ +static inline int au_test_fs_unique_ino(struct inode *inode) +{ + if (au_test_cramfs(inode->i_sb)) + return inode->i_ino != 1; + return 1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * the filesystem where the xino files placed must support i/o after unlink and + * maintain i_size and i_blocks. + */ +static inline int au_test_fs_bad_xino(struct super_block *sb) +{ + return au_test_fs_remote(sb) + || au_test_fs_bad_iattr_size(sb) + /* don't want unnecessary work for xino */ + || au_test_aufs(sb) + || au_test_ecryptfs(sb) + || au_test_nilfs(sb); +} + +static inline int au_test_fs_trunc_xino(struct super_block *sb) +{ + return au_test_tmpfs(sb) + || au_test_ramfs(sb); +} + +/* + * test if the @sb is real-readonly. + */ +static inline int au_test_fs_rr(struct super_block *sb) +{ + return au_test_squashfs(sb) + || au_test_iso9660(sb) + || au_test_cramfs(sb) + || au_test_romfs(sb); +} + +/* + * test if the @inode is nfs with 'noacl' option + * NFS always sets MS_POSIXACL regardless its mount option 'noacl.' + */ +static inline int au_test_nfs_noacl(struct inode *inode) +{ + return au_test_nfs(inode->i_sb) + /* && IS_POSIXACL(inode) */ + && !nfs_server_capable(inode, NFS_CAP_ACLS); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ --- linux-4.4.0.orig/fs/aufs/hfsnotify.c +++ linux-4.4.0/fs/aufs/hfsnotify.c @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * fsnotify for the lower directories + */ + +#include "aufs.h" + +/* FS_IN_IGNORED is unnecessary */ +static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE + | FS_CREATE | FS_EVENT_ON_CHILD); +static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); +static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); + +static void au_hfsn_free_mark(struct fsnotify_mark *mark) +{ + struct au_hnotify *hn = container_of(mark, struct au_hnotify, + hn_mark); + AuDbg("here\n"); + au_cache_free_hnotify(hn); + smp_mb__before_atomic(); + if (atomic64_dec_and_test(&au_hfsn_ifree)) + wake_up(&au_hfsn_wq); +} + +static int au_hfsn_alloc(struct au_hinode *hinode) +{ + int err; + struct au_hnotify *hn; + struct super_block *sb; + struct au_branch *br; + struct fsnotify_mark *mark; + aufs_bindex_t bindex; + + hn = hinode->hi_notify; + sb = hn->hn_aufs_inode->i_sb; + bindex = au_br_index(sb, hinode->hi_id); + br = au_sbr(sb, bindex); + AuDebugOn(!br->br_hfsn); + + mark = &hn->hn_mark; + fsnotify_init_mark(mark, au_hfsn_free_mark); + mark->mask = AuHfsnMask; + /* + * by udba rename or rmdir, aufs assign a new inode to the known + * h_inode, so specify 1 to allow dups. + */ + lockdep_off(); + err = fsnotify_add_mark(mark, br->br_hfsn->hfsn_group, hinode->hi_inode, + /*mnt*/NULL, /*allow_dups*/1); + /* even if err */ + fsnotify_put_mark(mark); + lockdep_on(); + + return err; +} + +static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) +{ + struct fsnotify_mark *mark; + unsigned long long ull; + struct fsnotify_group *group; + + ull = atomic64_inc_return(&au_hfsn_ifree); + BUG_ON(!ull); + + mark = &hn->hn_mark; + spin_lock(&mark->lock); + group = mark->group; + fsnotify_get_group(group); + spin_unlock(&mark->lock); + lockdep_off(); + fsnotify_destroy_mark(mark, group); + fsnotify_put_group(group); + lockdep_on(); + + /* free hn by myself */ + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) +{ + struct fsnotify_mark *mark; + + mark = &hinode->hi_notify->hn_mark; + spin_lock(&mark->lock); + if (do_set) { + AuDebugOn(mark->mask & AuHfsnMask); + mark->mask |= AuHfsnMask; + } else { + AuDebugOn(!(mark->mask & AuHfsnMask)); + mark->mask &= ~AuHfsnMask; + } + spin_unlock(&mark->lock); + /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ +} + +/* ---------------------------------------------------------------------- */ + +/* #define AuDbgHnotify */ +#ifdef AuDbgHnotify +static char *au_hfsn_name(u32 mask) +{ +#ifdef CONFIG_AUFS_DEBUG +#define test_ret(flag) \ + do { \ + if (mask & flag) \ + return #flag; \ + } while (0) + test_ret(FS_ACCESS); + test_ret(FS_MODIFY); + test_ret(FS_ATTRIB); + test_ret(FS_CLOSE_WRITE); + test_ret(FS_CLOSE_NOWRITE); + test_ret(FS_OPEN); + test_ret(FS_MOVED_FROM); + test_ret(FS_MOVED_TO); + test_ret(FS_CREATE); + test_ret(FS_DELETE); + test_ret(FS_DELETE_SELF); + test_ret(FS_MOVE_SELF); + test_ret(FS_UNMOUNT); + test_ret(FS_Q_OVERFLOW); + test_ret(FS_IN_IGNORED); + test_ret(FS_ISDIR); + test_ret(FS_IN_ONESHOT); + test_ret(FS_EVENT_ON_CHILD); + return ""; +#undef test_ret +#else + return "??"; +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_free_group(struct fsnotify_group *group) +{ + struct au_br_hfsnotify *hfsn = group->private; + + AuDbg("here\n"); + kfree(hfsn); +} + +static int au_hfsn_handle_event(struct fsnotify_group *group, + struct inode *inode, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + u32 mask, void *data, int data_type, + const unsigned char *file_name, u32 cookie) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + struct qstr h_child_qstr = QSTR_INIT(file_name, strlen(file_name)); + + AuDebugOn(data_type != FSNOTIFY_EVENT_INODE); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ + AuDebugOn(mask & FS_UNMOUNT); + if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) + goto out; + + h_dir = inode; + h_inode = NULL; +#ifdef AuDbgHnotify + au_debug_on(); + if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 + || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), + AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug_off(); +#endif + + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, &h_child_qstr, h_inode); + +out: + return err; +} + +static struct fsnotify_ops au_hfsn_ops = { + .handle_event = au_hfsn_handle_event, + .free_group_priv = au_hfsn_free_group +}; + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin_br(struct au_branch *br) +{ + struct au_br_hfsnotify *hfsn; + + hfsn = br->br_hfsn; + if (hfsn) { + lockdep_off(); + fsnotify_put_group(hfsn->hfsn_group); + lockdep_on(); + } +} + +static int au_hfsn_init_br(struct au_branch *br, int perm) +{ + int err; + struct fsnotify_group *group; + struct au_br_hfsnotify *hfsn; + + err = 0; + br->br_hfsn = NULL; + if (!au_br_hnotifyable(perm)) + goto out; + + err = -ENOMEM; + hfsn = kmalloc(sizeof(*hfsn), GFP_NOFS); + if (unlikely(!hfsn)) + goto out; + + err = 0; + group = fsnotify_alloc_group(&au_hfsn_ops); + if (IS_ERR(group)) { + err = PTR_ERR(group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); + goto out_hfsn; + } + + group->private = hfsn; + hfsn->hfsn_group = group; + br->br_hfsn = hfsn; + goto out; /* success */ + +out_hfsn: + kfree(hfsn); +out: + return err; +} + +static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (!br->br_hfsn) + err = au_hfsn_init_br(br, perm); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin(void) +{ + AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); + wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); +} + +const struct au_hnotify_op au_hnotify_op = { + .ctl = au_hfsn_ctl, + .alloc = au_hfsn_alloc, + .free = au_hfsn_free, + + .fin = au_hfsn_fin, + + .reset_br = au_hfsn_reset_br, + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; --- linux-4.4.0.orig/fs/aufs/hfsplus.c +++ linux-4.4.0/fs/aufs/hfsplus.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * special support for filesystems which aqucires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * neceeary open to tell hfsplus that this is not the final closing. + * The caller should call au_h_open_pre() after acquiring the inode mutex, + * and au_h_open_post() after releasing it. + */ + +#include "aufs.h" + +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + AuDebugOn(!h_dentry); + AuDebugOn(d_is_negative(h_dentry)); + + h_file = NULL; + if (au_test_hfsplus(h_dentry->d_sb) + && d_is_reg(h_dentry)) + h_file = au_h_open(dentry, bindex, + O_RDONLY | O_NOATIME | O_LARGEFILE, + /*file*/NULL, force_wr); + return h_file; +} + +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file) +{ + if (h_file) { + fput(h_file); + au_sbr_put(dentry->d_sb, bindex); + } +} --- linux-4.4.0.orig/fs/aufs/hnotify.c +++ linux-4.4.0/fs/aufs/hnotify.c @@ -0,0 +1,710 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * abstraction to notify the direct changes on lower directories + */ + +#include "aufs.h" + +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) +{ + int err; + struct au_hnotify *hn; + + err = -ENOMEM; + hn = au_cache_alloc_hnotify(); + if (hn) { + hn->hn_aufs_inode = inode; + hinode->hi_notify = hn; + err = au_hnotify_op.alloc(hinode); + AuTraceErr(err); + if (unlikely(err)) { + hinode->hi_notify = NULL; + au_cache_free_hnotify(hn); + /* + * The upper dir was removed by udba, but the same named + * dir left. In this case, aufs assignes a new inode + * number and set the monitor again. + * For the lower dir, the old monitnor is still left. + */ + if (err == -EEXIST) + err = 0; + } + } + + AuTraceErr(err); + return err; +} + +void au_hn_free(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + + hn = hinode->hi_notify; + if (hn) { + hinode->hi_notify = NULL; + if (au_hnotify_op.free(hinode, hn)) + au_cache_free_hnotify(hn); + } +} + +/* ---------------------------------------------------------------------- */ + +void au_hn_ctl(struct au_hinode *hinode, int do_set) +{ + if (hinode->hi_notify) + au_hnotify_op.ctl(hinode, do_set); +} + +void au_hn_reset(struct inode *inode, unsigned int flags) +{ + aufs_bindex_t bindex, bend; + struct inode *hi; + struct dentry *iwhdentry; + + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* mutex_lock_nested(&hi->i_mutex, AuLsc_I_CHILD); */ + iwhdentry = au_hi_wh(inode, bindex); + if (iwhdentry) + dget(iwhdentry); + au_igrab(hi); + au_set_h_iptr(inode, bindex, NULL, 0); + au_set_h_iptr(inode, bindex, au_igrab(hi), + flags & ~AuHi_XINO); + iput(hi); + dput(iwhdentry); + /* mutex_unlock(&hi->i_mutex); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bend, bfound, bstart; + struct inode *h_i; + + err = 0; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + goto out; + } + + bfound = -1; + bend = au_ibend(inode); + bstart = au_ibstart(inode); +#if 0 /* reserved for future use */ + if (bindex == bend) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = bstart; bindex <= bend; bindex++) { + h_i = au_h_iptr(inode, bindex); + if (!h_i) + continue; + + err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + /* bad action? */ + } + + /* children inode number will be broken */ + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_tree(struct dentry *dentry) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, dentry, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + struct dentry *d; + + d = dentries[j]; + if (IS_ROOT(d)) + continue; + + au_digen_dec(d); + if (d_really_is_positive(d)) + /* todo: reset children xino? + cached children only? */ + au_iigen_dec(d_inode(d)); + } + } + +out_dpages: + au_dpages_free(&dpages); + +#if 0 + /* discard children */ + dentry_unhash(dentry); + dput(dentry); +#endif +out: + return err; +} + +/* + * return 0 if processed. + */ +static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, + const unsigned int isdir) +{ + int err; + struct dentry *d; + struct qstr *dname; + + err = 1; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + err = 0; + goto out; + } + + if (!isdir) { + AuDebugOn(!name); + au_iigen_dec(inode); + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len != nlen + && memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + continue; + } + err = 0; + au_digen_dec(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&inode->i_lock); + } else { + au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); + d = d_find_any_alias(inode); + if (!d) { + au_iigen_dec(inode); + goto out; + } + + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + err = hn_gen_tree(d); + spin_lock(&d->d_lock); + } + spin_unlock(&d->d_lock); + dput(d); + } + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) +{ + int err; + + if (IS_ROOT(dentry)) { + pr_warn("branch root dir was changed\n"); + return 0; + } + + err = 0; + if (!isdir) { + au_digen_dec(dentry); + if (d_really_is_positive(dentry)) + au_iigen_dec(d_inode(dentry)); + } else { + au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); + if (d_really_is_positive(dentry)) + err = hn_gen_tree(dentry); + } + + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* hnotify job flags */ +#define AuHnJob_XINO0 1 +#define AuHnJob_GEN (1 << 1) +#define AuHnJob_DIRENT (1 << 2) +#define AuHnJob_ISDIR (1 << 3) +#define AuHnJob_TRYXINO0 (1 << 4) +#define AuHnJob_MNTPNT (1 << 5) +#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) +#define au_fset_hnjob(flags, name) \ + do { (flags) |= AuHnJob_##name; } while (0) +#define au_fclr_hnjob(flags, name) \ + do { (flags) &= ~AuHnJob_##name; } while (0) + +enum { + AuHn_CHILD, + AuHn_PARENT, + AuHnLast +}; + +struct au_hnotify_args { + struct inode *h_dir, *dir, *h_child_inode; + u32 mask; + unsigned int flags[AuHnLast]; + unsigned int h_child_nlen; + char h_child_name[]; +}; + +struct hn_job_args { + unsigned int flags; + struct inode *inode, *h_inode, *dir, *h_dir; + struct dentry *dentry; + char *h_name; + int h_nlen; +}; + +static int hn_job(struct hn_job_args *a) +{ + const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); + int e; + + /* reset xino */ + if (au_ftest_hnjob(a->flags, XINO0) && a->inode) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + + if (au_ftest_hnjob(a->flags, TRYXINO0) + && a->inode + && a->h_inode) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + if (!a->h_inode->i_nlink + && !(a->h_inode->i_state & I_LINKABLE)) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + mutex_unlock(&a->h_inode->i_mutex); + } + + /* make the generation obsolete */ + if (au_ftest_hnjob(a->flags, GEN)) { + e = -1; + if (a->inode) + e = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, + isdir); + if (e && a->dentry) + hn_gen_by_name(a->dentry, isdir); + /* ignore this error */ + } + + /* make dir entries obsolete */ + if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { + struct au_vdir *vdir; + + vdir = au_ivdir(a->inode); + if (vdir) + vdir->vd_jiffy = 0; + /* IMustLock(a->inode); */ + /* a->inode->i_version++; */ + } + + /* can do nothing but warn */ + if (au_ftest_hnjob(a->flags, MNTPNT) + && a->dentry + && d_mountpoint(a->dentry)) + pr_warn("mount-point %pd is removed or renamed\n", a->dentry); + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, + struct inode *dir) +{ + struct dentry *dentry, *d, *parent; + struct qstr *dname; + + parent = d_find_any_alias(dir); + if (!parent) + return NULL; + + dentry = NULL; + spin_lock(&parent->d_lock); + list_for_each_entry(d, &parent->d_subdirs, d_child) { + /* AuDbg("%pd\n", d); */ + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + dname = &d->d_name; + if (dname->len != nlen || memcmp(dname->name, name, nlen)) + goto cont_unlock; + if (au_di(d)) + au_digen_dec(d); + else + goto cont_unlock; + if (au_dcount(d) > 0) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + +cont_unlock: + spin_unlock(&d->d_lock); + } + spin_unlock(&parent->d_lock); + dput(parent); + + if (dentry) + di_write_lock_child(dentry); + + return dentry; +} + +static struct inode *lookup_wlock_by_ino(struct super_block *sb, + aufs_bindex_t bindex, ino_t h_ino) +{ + struct inode *inode; + ino_t ino; + int err; + + inode = NULL; + err = au_xino_read(sb, bindex, h_ino, &ino); + if (!err && ino) + inode = ilookup(sb, ino); + if (!inode) + goto out; + + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("wrong root branch\n"); + iput(inode); + inode = NULL; + goto out; + } + + ii_write_lock_child(inode); + +out: + return inode; +} + +static void au_hn_bh(void *_args) +{ + struct au_hnotify_args *a = _args; + struct super_block *sb; + aufs_bindex_t bindex, bend, bfound; + unsigned char xino, try_iput; + int err; + struct inode *inode; + ino_t h_ino; + struct hn_job_args args; + struct dentry *dentry; + struct au_sbinfo *sbinfo; + + AuDebugOn(!_args); + AuDebugOn(!a->h_dir); + AuDebugOn(!a->dir); + AuDebugOn(!a->mask); + AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", + a->mask, a->dir->i_ino, a->h_dir->i_ino, + a->h_child_inode ? a->h_child_inode->i_ino : 0); + + inode = NULL; + dentry = NULL; + /* + * do not lock a->dir->i_mutex here + * because of d_revalidate() may cause a deadlock. + */ + sb = a->dir->i_sb; + AuDebugOn(!sb); + sbinfo = au_sbi(sb); + AuDebugOn(!sbinfo); + si_write_lock(sb, AuLock_NOPLMW); + + ii_read_lock_parent(a->dir); + bfound = -1; + bend = au_ibend(a->dir); + for (bindex = au_ibstart(a->dir); bindex <= bend; bindex++) + if (au_h_iptr(a->dir, bindex) == a->h_dir) { + bfound = bindex; + break; + } + ii_read_unlock(a->dir); + if (unlikely(bfound < 0)) + goto out; + + xino = !!au_opt_test(au_mntflags(sb), XINO); + h_ino = 0; + if (a->h_child_inode) + h_ino = a->h_child_inode->i_ino; + + if (a->h_child_nlen + && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) + || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) + dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, + a->dir); + try_iput = 0; + if (dentry && d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (xino && !inode && h_ino + && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { + inode = lookup_wlock_by_ino(sb, bfound, h_ino); + try_iput = 1; + } + + args.flags = a->flags[AuHn_CHILD]; + args.dentry = dentry; + args.inode = inode; + args.h_inode = a->h_child_inode; + args.dir = a->dir; + args.h_dir = a->h_dir; + args.h_name = a->h_child_name; + args.h_nlen = a->h_child_nlen; + err = hn_job(&args); + if (dentry) { + if (au_di(dentry)) + di_write_unlock(dentry); + dput(dentry); + } + if (inode && try_iput) { + ii_write_unlock(inode); + iput(inode); + } + + ii_write_lock_parent(a->dir); + args.flags = a->flags[AuHn_PARENT]; + args.dentry = NULL; + args.inode = a->dir; + args.h_inode = a->h_dir; + args.dir = NULL; + args.h_dir = NULL; + args.h_name = NULL; + args.h_nlen = 0; + err = hn_job(&args); + ii_write_unlock(a->dir); + +out: + iput(a->h_child_inode); + iput(a->h_dir); + iput(a->dir); + si_write_unlock(sb); + au_nwt_done(&sbinfo->si_nowait); + kfree(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode) +{ + int err, len; + unsigned int flags[AuHnLast], f; + unsigned char isdir, isroot, wh; + struct inode *dir; + struct au_hnotify_args *args; + char *p, *h_child_name; + + err = 0; + AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); + dir = igrab(hnotify->hn_aufs_inode); + if (!dir) + goto out; + + isroot = (dir->i_ino == AUFS_ROOT_INO); + wh = 0; + h_child_name = (void *)h_child_qstr->name; + len = h_child_qstr->len; + if (h_child_name) { + if (len > AUFS_WH_PFX_LEN + && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + h_child_name += AUFS_WH_PFX_LEN; + len -= AUFS_WH_PFX_LEN; + wh = 1; + } + } + + isdir = 0; + if (h_child_inode) + isdir = !!S_ISDIR(h_child_inode->i_mode); + flags[AuHn_PARENT] = AuHnJob_ISDIR; + flags[AuHn_CHILD] = 0; + if (isdir) + flags[AuHn_CHILD] = AuHnJob_ISDIR; + au_fset_hnjob(flags[AuHn_PARENT], DIRENT); + au_fset_hnjob(flags[AuHn_CHILD], GEN); + switch (mask & FS_EVENTS_POSS_ON_CHILD) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + au_fset_hnjob(flags[AuHn_CHILD], XINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + /*FALLTHROUGH*/ + case FS_CREATE: + AuDebugOn(!h_child_name); + break; + + case FS_DELETE: + /* + * aufs never be able to get this child inode. + * revalidation should be in d_revalidate() + * by checking i_nlink, i_generation or d_unhashed(). + */ + AuDebugOn(!h_child_name); + au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + break; + + default: + AuDebugOn(1); + } + + if (wh) + h_child_inode = NULL; + + err = -ENOMEM; + /* iput() and kfree() will be called in au_hnotify() */ + args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + iput(dir); + goto out; + } + args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; + args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; + args->mask = mask; + args->dir = dir; + args->h_dir = igrab(h_dir); + if (h_child_inode) + h_child_inode = igrab(h_child_inode); /* can be NULL */ + args->h_child_inode = h_child_inode; + args->h_child_nlen = len; + if (len) { + p = (void *)args; + p += sizeof(*args); + memcpy(p, h_child_name, len); + p[len] = 0; + } + + /* NFS fires the event for silly-renamed one from kworker */ + f = 0; + if (!dir->i_nlink + || (au_test_nfs(h_dir->i_sb) && (mask & FS_DELETE))) + f = AuWkq_NEST; + err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + iput(args->h_child_inode); + iput(args->h_dir); + iput(args->dir); + kfree(args); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + AuDebugOn(!(udba & AuOptMask_UDBA)); + + err = 0; + if (au_hnotify_op.reset_br) + err = au_hnotify_op.reset_br(udba, br, perm); + + return err; +} + +int au_hnotify_init_br(struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (au_hnotify_op.init_br) + err = au_hnotify_op.init_br(br, perm); + + return err; +} + +void au_hnotify_fin_br(struct au_branch *br) +{ + if (au_hnotify_op.fin_br) + au_hnotify_op.fin_br(br); +} + +static void au_hn_destroy_cache(void) +{ + kmem_cache_destroy(au_cachep[AuCache_HNOTIFY]); + au_cachep[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cachep[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cachep[AuCache_HNOTIFY]) { + err = 0; + if (au_hnotify_op.init) + err = au_hnotify_op.init(); + if (unlikely(err)) + au_hn_destroy_cache(); + } + AuTraceErr(err); + return err; +} + +void au_hnotify_fin(void) +{ + if (au_hnotify_op.fin) + au_hnotify_op.fin(); + /* cf. au_cache_fin() */ + if (au_cachep[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} --- linux-4.4.0.orig/fs/aufs/i_op.c +++ linux-4.4.0/fs/aufs/i_op.c @@ -0,0 +1,1484 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (except add/del/rename) + */ + +#include +#include +#include +#include +#include "aufs.h" + +static int h_permission(struct inode *h_inode, int mask, + struct path *h_path, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + + err = -EACCES; + if ((write_mask && IS_IMMUTABLE(h_inode)) + || ((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && (path_noexec(h_path) + || !(h_inode->i_mode & S_IXUGO)))) + goto out; + + /* + * - skip the lower fs test in the case of write to ro branch. + * - nfs dir permission write check is optimized, but a policy for + * link/rename requires a real check. + * - nfs always sets MS_POSIXACL regardless its mount option 'noacl.' + * in this case, generic_permission() returns -EOPNOTSUPP. + */ + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + /* AuDbg("get_acl %pf\n", h_inode->i_op->get_acl); */ + err = generic_permission(h_inode, mask); + if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } else { + /* AuLabel(h_inode->permission); */ + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } + + if (!err) + err = devcgroup_inode_permission(h_inode, mask); + if (!err) + err = security_inode_permission(h_inode, mask); + +#if 0 + if (!err) { + /* todo: do we need to call ima_path_check()? */ + struct path h_path = { + .dentry = + .mnt = h_mnt + }; + err = ima_path_check(&h_path, + mask & (MAY_READ | MAY_WRITE | MAY_EXEC), + IMA_COUNT_LEAVE); + } +#endif + +out: + return err; +} + +static int aufs_permission(struct inode *inode, int mask) +{ + int err; + aufs_bindex_t bindex, bend; + const unsigned char isdir = !!S_ISDIR(inode->i_mode), + write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + + /* todo: support rcu-walk? */ + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); +#if 0 + err = au_iigen_test(inode, au_sigen(sb)); + if (unlikely(err)) + goto out; +#endif + + if (!isdir + || write_mask + || au_opt_test(au_mntflags(sb), DIRPERM1)) { + err = au_busy_or_stale(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibstart(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, br->br_perm); + if (write_mask + && !err + && !special_file(h_inode->i_mode)) { + /* test whether the upper writable branch exists */ + err = -EROFS; + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = 0; + break; + } + } + goto out; + } + + /* non-write to dir */ + err = 0; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); !err && bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) { + err = au_busy_or_stale(); + if (unlikely(!S_ISDIR(h_inode->i_mode))) + break; + + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, + br->br_perm); + } + } + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, + unsigned int flags) +{ + struct dentry *ret, *parent; + struct inode *inode; + struct super_block *sb; + int err, npositive; + + IMustLock(dir); + + /* todo: support rcu-walk? */ + ret = ERR_PTR(-ECHILD); + if (flags & LOOKUP_RCU) + goto out; + + ret = ERR_PTR(-ENAMETOOLONG); + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out_si; + + inode = NULL; + npositive = 0; /* suppress a warning */ + parent = dentry->d_parent; /* dir inode is locked */ + di_read_lock_parent(parent, AuLock_IR); + err = au_alive_dir(parent); + if (!err) + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + npositive = au_lkup_dentry(dentry, au_dbstart(parent), + /*type*/0); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); + ret = ERR_PTR(err); + if (unlikely(err < 0)) + goto out_unlock; + + if (npositive) { + inode = au_new_inode(dentry, /*must_new*/0); + if (IS_ERR(inode)) { + ret = (void *)inode; + inode = NULL; + goto out_unlock; + } + } + + if (inode) + atomic_inc(&inode->i_count); + ret = d_splice_alias(inode, dentry); +#if 0 + if (unlikely(d_need_lookup(dentry))) { + spin_lock(&dentry->d_lock); + dentry->d_flags &= ~DCACHE_NEED_LOOKUP; + spin_unlock(&dentry->d_lock); + } else +#endif + if (inode) { + if (!IS_ERR(ret)) { + iput(inode); + if (ret && ret != dentry) + ii_write_unlock(inode); + } else { + ii_write_unlock(inode); + iput(inode); + inode = NULL; + } + } + +out_unlock: + di_write_unlock(dentry); + if (inode) { + /* verbose coding for lock class name */ + if (unlikely(S_ISLNK(inode->i_mode))) + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcSymlink_DIINFO); + else if (unlikely(S_ISDIR(inode->i_mode))) + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcDir_DIINFO); + else /* likely */ + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcNonDir_DIINFO); + } +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +struct aopen_node { + struct hlist_node hlist; + struct file *file, *h_file; +}; + +static int au_do_aopen(struct inode *inode, struct file *file) +{ + struct au_sphlhead *aopen; + struct aopen_node *node; + struct au_do_open_args args = { + .no_lock = 1, + .open = au_do_open_nondir + }; + + aopen = &au_sbi(inode->i_sb)->si_aopen; + spin_lock(&aopen->spin); + hlist_for_each_entry(node, &aopen->head, hlist) + if (node->file == file) { + args.h_file = node->h_file; + break; + } + spin_unlock(&aopen->spin); + /* AuDebugOn(!args.h_file); */ + + return au_do_open(file, &args); +} + +static int aufs_atomic_open(struct inode *dir, struct dentry *dentry, + struct file *file, unsigned int open_flag, + umode_t create_mode, int *opened) +{ + int err, h_opened = *opened; + struct dentry *parent; + struct dentry *d; + struct au_sphlhead *aopen; + struct vfsub_aopen_args args = { + .open_flag = open_flag, + .create_mode = create_mode, + .opened = &h_opened + }; + struct aopen_node aopen_node = { + .file = file + }; + + IMustLock(dir); + AuDbg("open_flag 0x%x\n", open_flag); + AuDbgDentry(dentry); + + err = 0; + if (!au_di(dentry)) { + d = aufs_lookup(dir, dentry, /*flags*/0); + if (IS_ERR(d)) { + err = PTR_ERR(d); + goto out; + } else if (d) { + /* + * obsoleted dentry found. + * another error will be returned later. + */ + d_drop(d); + dput(d); + AuDbgDentry(d); + } + AuDbgDentry(dentry); + } + + if (d_is_positive(dentry) + || d_unhashed(dentry) + || d_unlinked(dentry) + || !(open_flag & O_CREAT)) + goto out_no_open; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + + parent = dentry->d_parent; /* dir is locked */ + di_write_lock_parent(parent); + err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0); + if (unlikely(err)) + goto out_unlock; + + AuDbgDentry(dentry); + if (d_is_positive(dentry)) + goto out_unlock; + + args.file = get_empty_filp(); + err = PTR_ERR(args.file); + if (IS_ERR(args.file)) + goto out_unlock; + + args.file->f_flags = file->f_flags; + err = au_aopen_or_create(dir, dentry, &args); + AuTraceErr(err); + AuDbgFile(args.file); + if (unlikely(err < 0)) { + if (h_opened & FILE_OPENED) + fput(args.file); + else + put_filp(args.file); + goto out_unlock; + } + + /* some filesystems don't set FILE_CREATED while succeeded? */ + *opened |= FILE_CREATED; + if (h_opened & FILE_OPENED) + aopen_node.h_file = args.file; + else { + put_filp(args.file); + args.file = NULL; + } + aopen = &au_sbi(dir->i_sb)->si_aopen; + au_sphl_add(&aopen_node.hlist, aopen); + err = finish_open(file, dentry, au_do_aopen, opened); + au_sphl_del(&aopen_node.hlist, aopen); + AuTraceErr(err); + AuDbgFile(file); + if (aopen_node.h_file) + fput(aopen_node.h_file); + +out_unlock: + di_write_unlock(parent); + aufs_read_unlock(dentry, AuLock_DW); + AuDbgDentry(dentry); + if (unlikely(err)) + goto out; +out_no_open: + if (!err && !(*opened & FILE_CREATED)) { + AuLabel(out_no_open); + dget(dentry); + err = finish_no_open(file, dentry); + } +out: + AuDbg("%pd%s%s\n", dentry, + (*opened & FILE_CREATED) ? " created" : "", + (*opened & FILE_OPENED) ? " opened" : ""); + AuTraceErr(err); + return err; +} + + +/* ---------------------------------------------------------------------- */ + +static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, + const unsigned char add_entry, aufs_bindex_t bcpup, + aufs_bindex_t bstart) +{ + int err; + struct dentry *h_parent; + struct inode *h_dir; + + if (add_entry) + IMustLock(d_inode(parent)); + else + di_write_lock_parent(parent); + + err = 0; + if (!au_h_dptr(parent, bcpup)) { + if (bstart > bcpup) + err = au_cpup_dirs(dentry, bcpup); + else if (bstart < bcpup) + err = au_cpdown_dirs(dentry, bcpup); + else + BUG(); + } + if (!err && add_entry && !au_ftest_wrdir(add_entry, TMPFILE)) { + h_parent = au_h_dptr(parent, bcpup); + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup, /*wh*/0); + /* todo: no unlock here */ + mutex_unlock(&h_dir->i_mutex); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (d_really_is_negative(dentry)) + au_set_h_dptr(dentry, bstart, NULL); + au_update_dbrange(dentry, /*do_put_zero*/0); + } + } + + if (!add_entry) + di_write_unlock(parent); + if (!err) + err = bcpup; /* success */ + + AuTraceErr(err); + return err; +} + +/* + * decide the branch and the parent dir where we will create a new entry. + * returns new bindex or an error. + * copyup the parent dir if needed. + */ +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args) +{ + int err; + unsigned int flags; + aufs_bindex_t bcpup, bstart, src_bstart; + const unsigned char add_entry + = au_ftest_wrdir(args->flags, ADD_ENTRY) + | au_ftest_wrdir(args->flags, TMPFILE); + struct super_block *sb; + struct dentry *parent; + struct au_sbinfo *sbinfo; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + parent = dget_parent(dentry); + bstart = au_dbstart(dentry); + bcpup = bstart; + if (args->force_btgt < 0) { + if (src_dentry) { + src_bstart = au_dbstart(src_dentry); + if (src_bstart < bstart) + bcpup = src_bstart; + } else if (add_entry) { + flags = 0; + if (au_ftest_wrdir(args->flags, ISDIR)) + au_fset_wbr(flags, DIR); + err = AuWbrCreate(sbinfo, dentry, flags); + bcpup = err; + } + + if (bcpup < 0 || au_test_ro(sb, bcpup, d_inode(dentry))) { + if (add_entry) + err = AuWbrCopyup(sbinfo, dentry); + else { + if (!IS_ROOT(dentry)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(sbinfo, dentry); + di_read_unlock(parent, !AuLock_IR); + } else + err = AuWbrCopyup(sbinfo, dentry); + } + bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else { + bcpup = args->force_btgt; + AuDebugOn(au_test_ro(sb, bcpup, d_inode(dentry))); + } + + AuDbg("bstart %d, bcpup %d\n", bstart, bcpup); + err = bcpup; + if (bcpup == bstart) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, bstart); + if (err >= 0) { + if (d_really_is_negative(dentry)) { + au_set_h_dptr(dentry, bstart, NULL); + au_set_dbstart(dentry, bcpup); + au_set_dbend(dentry, bcpup); + } + AuDebugOn(add_entry + && !au_ftest_wrdir(args->flags, TMPFILE) + && !au_h_dptr(dentry, bcpup)); + } + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_pin_hdir_unlock(struct au_pin *p) +{ + if (p->hdir) + au_hn_imtx_unlock(p->hdir); +} + +int au_pin_hdir_lock(struct au_pin *p) +{ + int err; + + err = 0; + if (!p->hdir) + goto out; + + /* even if an error happens later, keep this lock */ + au_hn_imtx_lock_nested(p->hdir, p->lsc_hi); + + err = -EBUSY; + if (unlikely(p->hdir->hi_inode != d_inode(p->h_parent))) + goto out; + + err = 0; + if (p->h_dentry) + err = au_h_verify(p->h_dentry, p->udba, p->hdir->hi_inode, + p->h_parent, p->br); + +out: + return err; +} + +int au_pin_hdir_relock(struct au_pin *p) +{ + int err, i; + struct inode *h_i; + struct dentry *h_d[] = { + p->h_dentry, + p->h_parent + }; + + err = au_pin_hdir_lock(p); + if (unlikely(err)) + goto out; + + for (i = 0; !err && i < sizeof(h_d)/sizeof(*h_d); i++) { + if (!h_d[i]) + continue; + if (d_is_positive(h_d[i])) { + h_i = d_inode(h_d[i]); + err = !h_i->i_nlink; + } + } + +out: + return err; +} + +void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task) +{ +#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP) + p->hdir->hi_inode->i_mutex.owner = task; +#endif +} + +void au_pin_hdir_acquire_nest(struct au_pin *p) +{ + if (p->hdir) { + mutex_acquire_nest(&p->hdir->hi_inode->i_mutex.dep_map, + p->lsc_hi, 0, NULL, _RET_IP_); + au_pin_hdir_set_owner(p, current); + } +} + +void au_pin_hdir_release(struct au_pin *p) +{ + if (p->hdir) { + au_pin_hdir_set_owner(p, p->task); + mutex_release(&p->hdir->hi_inode->i_mutex.dep_map, 1, _RET_IP_); + } +} + +struct dentry *au_pinned_h_parent(struct au_pin *pin) +{ + if (pin && pin->parent) + return au_h_dptr(pin->parent, pin->bindex); + return NULL; +} + +void au_unpin(struct au_pin *p) +{ + if (p->hdir) + au_pin_hdir_unlock(p); + if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) + vfsub_mnt_drop_write(p->h_mnt); + if (!p->hdir) + return; + + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + iput(p->hdir->hi_inode); + dput(p->parent); + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + /* do not clear p->task */ +} + +int au_do_pin(struct au_pin *p) +{ + int err; + struct super_block *sb; + struct inode *h_dir; + + err = 0; + sb = p->dentry->d_sb; + p->br = au_sbr(sb, p->bindex); + if (IS_ROOT(p->dentry)) { + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_err; + } + } + goto out; + } + + p->h_dentry = NULL; + if (p->bindex <= au_dbend(p->dentry)) + p->h_dentry = au_h_dptr(p->dentry, p->bindex); + + p->parent = dget_parent(p->dentry); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_lock(p->parent, AuLock_IR, p->lsc_di); + + h_dir = NULL; + p->h_parent = au_h_dptr(p->parent, p->bindex); + p->hdir = au_hi(d_inode(p->parent), p->bindex); + if (p->hdir) + h_dir = p->hdir->hi_inode; + + /* + * udba case, or + * if DI_LOCKED is not set, then p->parent may be different + * and h_parent can be NULL. + */ + if (unlikely(!p->hdir || !h_dir || !p->h_parent)) { + err = -EBUSY; + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + } + + au_igrab(h_dir); + err = au_pin_hdir_lock(p); + if (!err) + goto out; /* success */ + + au_unpin(p); + +out_err: + pr_err("err %d\n", err); + err = au_busy_or_stale(); +out: + return err; +} + +void au_pin_init(struct au_pin *p, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags) +{ + p->dentry = dentry; + p->udba = udba; + p->lsc_di = lsc_di; + p->lsc_hi = lsc_hi; + p->flags = flags; + p->bindex = bindex; + + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + + p->h_dentry = NULL; + p->h_parent = NULL; + p->br = NULL; + p->task = current; +} + +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) +{ + au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, + udba, flags); + return au_do_pin(pin); +} + +/* ---------------------------------------------------------------------- */ + +/* + * ->setattr() and ->getattr() are called in various cases. + * chmod, stat: dentry is revalidated. + * fchmod, fstat: file and dentry are not revalidated, additionally they may be + * unhashed. + * for ->setattr(), ia->ia_file is passed from ftruncate only. + */ +/* todo: consolidate with do_refresh() and simple_reval_dpath() */ +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + err = 0; + if (au_digen_test(dentry, sigen)) { + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + } + + AuTraceErr(err); + return err; +} + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a) +{ + int err; + loff_t sz; + aufs_bindex_t bstart, ibstart; + struct dentry *hi_wh, *parent; + struct inode *inode; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + if (d_is_dir(dentry)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + /* plink or hi_wh() case */ + bstart = au_dbstart(dentry); + inode = d_inode(dentry); + ibstart = au_ibstart(inode); + if (bstart != ibstart && !au_test_ro(inode->i_sb, ibstart, inode)) + wr_dir_args.force_btgt = ibstart; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != bstart) + au_fset_icpup(a->flags, DID_CPUP); + + err = 0; + a->pin_flags = AuPin_MNT_WRITE; + parent = NULL; + if (!IS_ROOT(dentry)) { + au_fset_pin(a->pin_flags, DI_LOCKED); + parent = dget_parent(dentry); + di_write_lock_parent(parent); + } + + err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); + if (unlikely(err)) + goto out_parent; + + a->h_path.dentry = au_h_dptr(dentry, bstart); + sz = -1; + a->h_inode = d_inode(a->h_path.dentry); + if (ia && (ia->ia_valid & ATTR_SIZE)) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + if (ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + mutex_unlock(&a->h_inode->i_mutex); + } + + hi_wh = NULL; + if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { + hi_wh = au_hi_wh(inode, a->btgt); + if (!hi_wh) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = -1, + .len = sz, + .pin = &a->pin + }; + err = au_sio_cpup_wh(&cpg, /*file*/NULL); + if (unlikely(err)) + goto out_unlock; + hi_wh = au_hi_wh(inode, a->btgt); + /* todo: revalidate hi_wh? */ + } + } + + if (parent) { + au_pin_set_parent_lflag(&a->pin, /*lflag*/0); + di_downgrade_lock(parent, AuLock_IR); + dput(parent); + parent = NULL; + } + if (!au_ftest_icpup(a->flags, DID_CPUP)) + goto out; /* success */ + + if (!d_unhashed(dentry)) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = bstart, + .len = sz, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + err = au_sio_cpup_simple(&cpg); + if (!err) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + } else if (!hi_wh) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + else + a->h_path.dentry = hi_wh; /* do not dget here */ + +out_unlock: + a->h_inode = d_inode(a->h_path.dentry); + if (!err) + goto out; /* success */ + au_unpin(&a->pin); +out_parent: + if (parent) { + di_write_unlock(parent); + dput(parent); + } +out: + if (!err) + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + return err; +} + +static int aufs_setattr(struct dentry *dentry, struct iattr *ia) +{ + int err; + struct inode *inode, *delegated; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; + + inode = d_inode(dentry); + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + + file = NULL; + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + if (ia->ia_valid & ATTR_FILE) { + /* currently ftruncate(2) only */ + AuDebugOn(!d_is_reg(dentry)); + file = ia->ia_file; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out_si; + ia->ia_file = au_hf_top(file); + a->udba = AuOpt_UDBA_NONE; + } else { + /* fchmod() doesn't pass ia_file */ + a->udba = au_opt_udba(sb); + di_write_lock_child(dentry); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out_dentry; + } + } + + err = au_pin_and_icpup(dentry, ia, a); + if (unlikely(err < 0)) + goto out_dentry; + if (au_ftest_icpup(a->flags, DID_CPUP)) { + ia->ia_file = NULL; + ia->ia_valid &= ~ATTR_FILE; + } + + a->h_path.mnt = au_sbr_mnt(sb, a->btgt); + if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) + == (ATTR_MODE | ATTR_CTIME)) { + err = security_path_chmod(&a->h_path, ia->ia_mode); + if (unlikely(err)) + goto out_unlock; + } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) + && (ia->ia_valid & ATTR_CTIME)) { + err = security_path_chown(&a->h_path, ia->ia_uid, ia->ia_gid); + if (unlikely(err)) + goto out_unlock; + } + + if (ia->ia_valid & ATTR_SIZE) { + struct file *f; + + if (ia->ia_size < i_size_read(inode)) + /* unmap only */ + truncate_setsize(inode, ia->ia_size); + + f = NULL; + if (ia->ia_valid & ATTR_FILE) + f = ia->ia_file; + mutex_unlock(&a->h_inode->i_mutex); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + } else { + delegated = NULL; + while (1) { + err = vfsub_notify_change(&a->h_path, ia, &delegated); + if (delegated) { + err = break_deleg_wait(&delegated); + if (!err) + continue; + } + break; + } + } + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbstart(dentry); +out_dentry: + di_write_unlock(dentry); + if (file) { + fi_write_unlock(file); + ia->ia_file = file; + ia->ia_valid |= ATTR_FILE; + } +out_si: + si_read_unlock(sb); +out_kfree: + kfree(a); +out: + AuTraceErr(err); + return err; +} + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +static int au_h_path_to_set_attr(struct dentry *dentry, + struct au_icpup_args *a, struct path *h_path) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + a->udba = au_opt_udba(sb); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out; + } + err = au_pin_and_icpup(dentry, /*ia*/NULL, a); + if (unlikely(err < 0)) + goto out; + + h_path->dentry = a->h_path.dentry; + h_path->mnt = au_sbr_mnt(sb, a->btgt); + +out: + return err; +} + +ssize_t au_srxattr(struct dentry *dentry, struct au_srxattr *arg) +{ + int err; + struct path h_path; + struct super_block *sb; + struct au_icpup_args *a; + struct inode *inode, *h_inode; + + inode = d_inode(dentry); + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + h_path.dentry = NULL; /* silence gcc */ + di_write_lock_child(dentry); + err = au_h_path_to_set_attr(dentry, a, &h_path); + if (unlikely(err)) + goto out_di; + + mutex_unlock(&a->h_inode->i_mutex); + switch (arg->type) { + case AU_XATTR_SET: + err = vfsub_setxattr(h_path.dentry, + arg->u.set.name, arg->u.set.value, + arg->u.set.size, arg->u.set.flags); + break; + case AU_XATTR_REMOVE: + err = vfsub_removexattr(h_path.dentry, arg->u.remove.name); + break; + case AU_ACL_SET: + err = -EOPNOTSUPP; + h_inode = d_inode(h_path.dentry); + if (h_inode->i_op->set_acl) + err = h_inode->i_op->set_acl(h_inode, + arg->u.acl_set.acl, + arg->u.acl_set.type); + break; + } + if (!err) + au_cpup_attr_timesizes(inode); + + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbstart(dentry); + +out_di: + di_write_unlock(dentry); + si_read_unlock(sb); +out_kfree: + kfree(a); +out: + AuTraceErr(err); + return err; +} +#endif + +static void au_refresh_iattr(struct inode *inode, struct kstat *st, + unsigned int nlink) +{ + unsigned int n; + + inode->i_mode = st->mode; + /* don't i_[ug]id_write() here */ + inode->i_uid = st->uid; + inode->i_gid = st->gid; + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; + inode->i_ctime = st->ctime; + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { + n = inode->i_nlink; + n -= nlink; + n += st->nlink; + smp_mb(); /* for i_nlink */ + /* 0 can happen */ + set_nlink(inode, n); + } + + spin_lock(&inode->i_lock); + inode->i_blocks = st->blocks; + i_size_write(inode, st->size); + spin_unlock(&inode->i_lock); +} + +/* + * common routine for aufs_getattr() and aufs_getxattr(). + * returns zero or negative (an error). + * @dentry will be read-locked in success. + */ +int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path) +{ + int err; + unsigned int mnt_flags, sigen; + unsigned char udba_none; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct inode *inode; + + h_path->mnt = NULL; + h_path->dentry = NULL; + + err = 0; + sb = dentry->d_sb; + mnt_flags = au_mntflags(sb); + udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); + + /* support fstat(2) */ + if (!d_unlinked(dentry) && !udba_none) { + sigen = au_sigen(sb); + err = au_digen_test(dentry, sigen); + if (!err) { + di_read_lock_child(dentry, AuLock_IR); + err = au_dbrange_test(dentry); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + goto out; + } + } else { + AuDebugOn(IS_ROOT(dentry)); + di_write_lock_child(dentry); + err = au_dbrange_test(dentry); + if (!err) + err = au_reval_for_attr(dentry, sigen); + if (!err) + di_downgrade_lock(dentry, AuLock_IR); + else { + di_write_unlock(dentry); + goto out; + } + } + } else + di_read_lock_child(dentry, AuLock_IR); + + inode = d_inode(dentry); + bindex = au_ibstart(inode); + h_path->mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path->mnt->mnt_sb; + if (!force + && !au_test_fs_bad_iattr(h_sb) + && udba_none) + goto out; /* success */ + + if (au_dbstart(dentry) == bindex) + h_path->dentry = au_h_dptr(dentry, bindex); + else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { + h_path->dentry = au_plink_lkup(inode, bindex); + if (IS_ERR(h_path->dentry)) + /* pretending success */ + h_path->dentry = NULL; + else + dput(h_path->dentry); + } + +out: + return err; +} + +static int aufs_getattr(struct vfsmount *mnt __maybe_unused, + struct dentry *dentry, struct kstat *st) +{ + int err; + unsigned char positive; + struct path h_path; + struct inode *inode; + struct super_block *sb; + + inode = d_inode(dentry); + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + err = au_h_path_getattr(dentry, /*force*/0, &h_path); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_fill; /* pretending success */ + + positive = d_is_positive(h_path.dentry); + if (positive) + err = vfs_getattr(&h_path, st); + if (!err) { + if (positive) + au_refresh_iattr(inode, st, + d_inode(h_path.dentry)->i_nlink); + goto out_fill; /* success */ + } + AuTraceErr(err); + goto out_di; + +out_fill: + generic_fillattr(inode, st); +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * Assumption: + * - the number of symlinks is not so many. + * + * Structure: + * - sbinfo (instead of iinfo) contains an hlist of struct au_symlink. + * If iinfo contained the hlist, then it would be rather large waste of memory + * I am afraid. + * - struct au_symlink contains the necessary info for h_inode follow_link() and + * put_link(). + */ + +struct au_symlink { + union { + struct hlist_node hlist; + struct rcu_head rcu; + }; + + struct inode *h_inode; + void *h_cookie; +}; + +static void au_symlink_add(struct super_block *sb, struct au_symlink *slink, + struct inode *h_inode, void *cookie) +{ + struct au_sbinfo *sbinfo; + + ihold(h_inode); + slink->h_inode = h_inode; + slink->h_cookie = cookie; + sbinfo = au_sbi(sb); + au_sphl_add(&slink->hlist, &sbinfo->si_symlink); +} + +static void au_symlink_del(struct super_block *sb, struct au_symlink *slink) +{ + struct au_sbinfo *sbinfo; + + /* do not iput() within rcu */ + iput(slink->h_inode); + slink->h_inode = NULL; + sbinfo = au_sbi(sb); + au_sphl_del_rcu(&slink->hlist, &sbinfo->si_symlink); + kfree_rcu(slink, rcu); +} + +static const char *aufs_follow_link(struct dentry *dentry, void **cookie) +{ + const char *ret; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct au_symlink *slink; + int err; + aufs_bindex_t bindex; + + ret = NULL; /* suppress a warning */ + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + + err = -EINVAL; + inode = d_inode(dentry); + bindex = au_ibstart(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode->i_op->follow_link)) + goto out_unlock; + + err = -ENOMEM; + slink = kmalloc(sizeof(*slink), GFP_NOFS); + if (unlikely(!slink)) + goto out_unlock; + + err = -EBUSY; + h_dentry = NULL; + if (au_dbstart(dentry) <= bindex) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + dget(h_dentry); + } + if (!h_dentry) { + h_dentry = d_find_any_alias(h_inode); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_free; + } + } + if (unlikely(!h_dentry)) + goto out_free; + + err = 0; + AuDbg("%pf\n", h_inode->i_op->follow_link); + AuDbgDentry(h_dentry); + ret = h_inode->i_op->follow_link(h_dentry, cookie); + dput(h_dentry); + + if (!IS_ERR_OR_NULL(ret)) { + au_symlink_add(inode->i_sb, slink, h_inode, *cookie); + *cookie = slink; + AuDbg("slink %p\n", slink); + goto out_unlock; /* success */ + } + +out_free: + slink->h_inode = NULL; + kfree_rcu(slink, rcu); +out_unlock: + aufs_read_unlock(dentry, AuLock_IR); +out: + if (unlikely(err)) + ret = ERR_PTR(err); + AuTraceErrPtr(ret); + return ret; +} + +static void aufs_put_link(struct inode *inode, void *cookie) +{ + struct au_symlink *slink; + struct inode *h_inode; + + slink = cookie; + AuDbg("slink %p\n", slink); + h_inode = slink->h_inode; + AuDbg("%pf\n", h_inode->i_op->put_link); + AuDbgInode(h_inode); + if (h_inode->i_op->put_link) + h_inode->i_op->put_link(h_inode, slink->h_cookie); + au_symlink_del(inode->i_sb, slink); +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_update_time(struct inode *inode, struct timespec *ts, int flags) +{ + int err; + struct super_block *sb; + struct inode *h_inode; + + sb = inode->i_sb; + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + lockdep_on(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + err = vfsub_update_time(h_inode, ts, flags); + lockdep_off(); + if (!err) + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + lockdep_on(); + + if (!err && (flags & S_VERSION)) + inode_inc_iversion(inode); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no getattr version will be set by module.c:aufs_init() */ +struct inode_operations aufs_iop_nogetattr[AuIop_Last], + aufs_iop[] = { + [AuIop_SYMLINK] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, /* unsupport for symlink? */ +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .readlink = generic_readlink, + .follow_link = aufs_follow_link, + .put_link = aufs_put_link, + + /* .update_time = aufs_update_time */ + }, + [AuIop_DIR] = { + .create = aufs_create, + .lookup = aufs_lookup, + .link = aufs_link, + .unlink = aufs_unlink, + .symlink = aufs_symlink, + .mkdir = aufs_mkdir, + .rmdir = aufs_rmdir, + .mknod = aufs_mknod, + .rename = aufs_rename, + + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .update_time = aufs_update_time, + .atomic_open = aufs_atomic_open, + .tmpfile = aufs_tmpfile + }, + [AuIop_OTHER] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .update_time = aufs_update_time + } +}; --- linux-4.4.0.orig/fs/aufs/i_op_add.c +++ linux-4.4.0/fs/aufs/i_op_add.c @@ -0,0 +1,932 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (add entry) + */ + +#include "aufs.h" + +/* + * final procedure of adding a new entry, except link(2). + * remove whiteout, instantiate, copyup the parent dir's times and size + * and update version. + * if it failed, re-create the removed whiteout. + */ +static int epilog(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct dentry *dentry) +{ + int err, rerr; + aufs_bindex_t bwh; + struct path h_path; + struct super_block *sb; + struct inode *inode, *h_dir; + struct dentry *wh; + + bwh = -1; + sb = dir->i_sb; + if (wh_dentry) { + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + AuDebugOn(au_h_iptr(dir, bindex) != h_dir); + bwh = au_dbwh(dentry); + h_path.dentry = wh_dentry; + h_path.mnt = au_sbr_mnt(sb, bindex); + err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, + dentry); + if (unlikely(err)) + goto out; + } + + inode = au_new_inode(dentry, /*must_new*/1); + if (!IS_ERR(inode)) { + d_instantiate(dentry, inode); + dir = d_inode(dentry->d_parent); /* dir inode is locked */ + IMustLock(dir); + au_dir_ts(dir, bindex); + dir->i_version++; + au_fhsm_wrote(sb, bindex, /*force*/0); + return 0; /* success */ + } + + err = PTR_ERR(inode); + if (!wh_dentry) + goto out; + + /* revert */ + /* dir inode is locked */ + wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); + rerr = PTR_ERR(wh); + if (IS_ERR(wh)) { + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } else + dput(wh); + +out: + return err; +} + +static int au_d_may_add(struct dentry *dentry) +{ + int err; + + err = 0; + if (unlikely(d_unhashed(dentry))) + err = -ENOENT; + if (unlikely(d_really_is_positive(dentry))) + err = -EEXIST; + return err; +} + +/* + * simple tests for the adding inode operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry; + struct inode *h_inode; + + err = -ENAMETOOLONG; + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_negative(dentry)) { + err = -EEXIST; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } + + err = 0; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + err = -EIO; + +out: + AuTraceErr(err); + return err; +} + +/* + * initial procedure of adding a new entry. + * prepare writable branch and the parent dir, lock it, + * and lookup whiteout for the new entry. + */ +static struct dentry* +lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, + struct dentry *src_dentry, struct au_pin *pin, + struct au_wr_dir_args *wr_dir_args) +{ + struct dentry *wh_dentry, *h_parent; + struct super_block *sb; + struct au_branch *br; + int err; + unsigned int udba; + aufs_bindex_t bcpup; + + AuDbg("%pd\n", dentry); + + err = au_wr_dir(dentry, src_dentry, wr_dir_args); + bcpup = err; + wh_dentry = ERR_PTR(err); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_parent = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) + err = au_may_add(dentry, bcpup, h_parent, + au_ftest_wrdir(wr_dir_args->flags, ISDIR)); + else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + + br = au_sbr(sb, bcpup); + if (dt) { + struct path tmp = { + .dentry = h_parent, + .mnt = au_br_mnt(br) + }; + au_dtime_store(dt, au_pinned_parent(pin), &tmp); + } + + wh_dentry = NULL; + if (bcpup != au_dbwh(dentry)) + goto out; /* success */ + + /* + * ENAMETOOLONG here means that if we allowed create such name, then it + * would not be able to removed in the future. So we don't allow such + * name here and we don't handle ENAMETOOLONG differently here. + */ + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + +out_unpin: + if (IS_ERR(wh_dentry)) + au_unpin(pin); +out: + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +enum { Mknod, Symlink, Creat }; +struct simple_arg { + int type; + union { + struct { + umode_t mode; + bool want_excl; + bool try_aopen; + struct vfsub_aopen_args *aopen; + } c; + struct { + const char *symname; + } s; + struct { + umode_t mode; + dev_t dev; + } m; + } u; +}; + +static int add_simple(struct inode *dir, struct dentry *dentry, + struct simple_arg *arg) +{ + int err, rerr; + aufs_bindex_t bstart; + unsigned char created; + const unsigned char try_aopen + = (arg->type == Creat && arg->u.c.try_aopen); + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct super_block *sb; + struct au_branch *br; + /* to reuduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct au_wr_dir_args wr_dir_args; + } *a; + + AuDbg("%pd\n", dentry); + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->wr_dir_args.force_btgt = -1; + a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; + + parent = dentry->d_parent; /* dir inode is locked */ + if (!try_aopen) { + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + } + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + if (!try_aopen) + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &a->wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + bstart = au_dbstart(dentry); + sb = dentry->d_sb; + br = au_sbr(sb, bstart); + a->h_path.dentry = au_h_dptr(dentry, bstart); + a->h_path.mnt = au_br_mnt(br); + h_dir = au_pinned_h_dir(&a->pin); + switch (arg->type) { + case Creat: + err = 0; + if (!try_aopen || !h_dir->i_op->atomic_open) + err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, + arg->u.c.want_excl); + else + err = vfsub_atomic_open(h_dir, a->h_path.dentry, + arg->u.c.aopen, br); + break; + case Symlink: + err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); + break; + case Mknod: + err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, + arg->u.m.dev); + break; + default: + BUG(); + } + created = !err; + if (!err) + err = epilog(dir, bstart, wh_dentry, dentry); + + /* revert */ + if (unlikely(created && err && d_is_positive(a->h_path.dentry))) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, + /*force*/0); + if (rerr) { + AuIOErr("%pd revert failure(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); + } + + if (!err && try_aopen && !h_dir->i_op->atomic_open) + *arg->u.c.aopen->opened |= FILE_CREATED; + + au_unpin(&a->pin); + dput(wh_dentry); + +out_parent: + if (!try_aopen) + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + if (!try_aopen) + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} + +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, + .u.m = { + .mode = mode, + .dev = dev + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, + .u.s.symname = symname + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + bool want_excl) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = mode, + .want_excl = want_excl + } + }; + return add_simple(dir, dentry, &arg); +} + +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *aopen_args) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = aopen_args->create_mode, + .want_excl = aopen_args->open_flag & O_EXCL, + .try_aopen = true, + .aopen = aopen_args + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct dentry *parent, *h_parent, *h_dentry; + struct inode *h_dir, *inode; + struct vfsmount *h_mnt; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_TMPFILE + }; + + /* copy-up may happen */ + mutex_lock(&dir->i_mutex); + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + if (unlikely(err)) + goto out_si; + + err = -EBUSY; + parent = d_find_any_alias(dir); + AuDebugOn(!parent); + di_write_lock_parent(parent); + if (unlikely(d_inode(parent) != dir)) + goto out_parent; + + err = au_digen_test(parent, au_sigen(sb)); + if (unlikely(err)) + goto out_parent; + + bindex = au_dbstart(parent); + au_set_dbstart(dentry, bindex); + au_set_dbend(dentry, bindex); + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + bindex = err; + if (unlikely(err < 0)) + goto out_parent; + + err = -EOPNOTSUPP; + h_dir = au_h_iptr(dir, bindex); + if (unlikely(!h_dir->i_op->tmpfile)) + goto out_parent; + + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (unlikely(err)) + goto out_parent; + + h_parent = au_h_dptr(parent, bindex); + err = inode_permission(d_inode(h_parent), MAY_WRITE | MAY_EXEC); + if (unlikely(err)) + goto out_mnt; + + err = -ENOMEM; + h_dentry = d_alloc(h_parent, &dentry->d_name); + if (unlikely(!h_dentry)) + goto out_mnt; + + err = h_dir->i_op->tmpfile(h_dir, h_dentry, mode); + if (unlikely(err)) + goto out_dentry; + + au_set_dbstart(dentry, bindex); + au_set_dbend(dentry, bindex); + au_set_h_dptr(dentry, bindex, dget(h_dentry)); + inode = au_new_inode(dentry, /*must_new*/1); + if (IS_ERR(inode)) { + err = PTR_ERR(inode); + au_set_h_dptr(dentry, bindex, NULL); + au_set_dbstart(dentry, -1); + au_set_dbend(dentry, -1); + } else { + if (!inode->i_nlink) + set_nlink(inode, 1); + d_tmpfile(dentry, inode); + au_di(dentry)->di_tmpfile = 1; + + /* update without i_mutex */ + if (au_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + } + +out_dentry: + dput(h_dentry); +out_mnt: + vfsub_mnt_drop_write(h_mnt); +out_parent: + di_write_unlock(parent); + dput(parent); + di_write_unlock(dentry); + if (!err) +#if 0 + /* verbose coding for lock class name */ + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcNonDir_DIINFO); +#else + ; +#endif + else { + au_di_fin(dentry); + dentry->d_fsdata = NULL; + } +out_si: + si_read_unlock(sb); +out: + mutex_unlock(&dir->i_mutex); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_link_args { + aufs_bindex_t bdst, bsrc; + struct au_pin pin; + struct path h_path; + struct dentry *src_parent, *parent; +}; + +static int au_cpup_before_link(struct dentry *src_dentry, + struct au_link_args *a) +{ + int err; + struct dentry *h_src_dentry; + struct au_cp_generic cpg = { + .dentry = src_dentry, + .bdst = a->bdst, + .bsrc = a->bsrc, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ + }; + + di_read_lock_parent(a->src_parent, AuLock_IR); + err = au_test_and_cpup_dirs(src_dentry, a->bdst); + if (unlikely(err)) + goto out; + + h_src_dentry = au_h_dptr(src_dentry, a->bsrc); + err = au_pin(&a->pin, src_dentry, a->bdst, + au_opt_udba(src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&a->pin); + +out: + di_read_unlock(a->src_parent, AuLock_IR); + return err; +} + +static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, + struct au_link_args *a) +{ + int err; + unsigned char plink; + aufs_bindex_t bend; + struct dentry *h_src_dentry; + struct inode *h_inode, *inode, *delegated; + struct super_block *sb; + struct file *h_file; + + plink = 0; + h_inode = NULL; + sb = src_dentry->d_sb; + inode = d_inode(src_dentry); + if (au_ibstart(inode) <= a->bdst) + h_inode = au_h_iptr(inode, a->bdst); + if (!h_inode || !h_inode->i_nlink) { + /* copyup src_dentry as the name of dentry. */ + bend = au_dbend(dentry); + if (bend < a->bsrc) + au_set_dbend(dentry, a->bsrc); + au_set_h_dptr(dentry, a->bsrc, + dget(au_h_dptr(src_dentry, a->bsrc))); + dget(a->h_path.dentry); + au_set_h_dptr(dentry, a->bdst, NULL); + AuDbg("temporary d_inode...\n"); + spin_lock(&dentry->d_lock); + dentry->d_inode = d_inode(src_dentry); /* tmp */ + spin_unlock(&dentry->d_lock); + h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->bdst, + .bsrc = -1, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_KEEPLINO + }; + err = au_sio_cpup_simple(&cpg); + au_h_open_post(dentry, a->bsrc, h_file); + if (!err) { + dput(a->h_path.dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + } else + au_set_h_dptr(dentry, a->bdst, + a->h_path.dentry); + } + spin_lock(&dentry->d_lock); + dentry->d_inode = NULL; /* restore */ + spin_unlock(&dentry->d_lock); + AuDbg("temporary d_inode...done\n"); + au_set_h_dptr(dentry, a->bsrc, NULL); + au_set_dbend(dentry, bend); + } else { + /* the inode of src_dentry already exists on a.bdst branch */ + h_src_dentry = d_find_alias(h_inode); + if (!h_src_dentry && au_plink_test(inode)) { + plink = 1; + h_src_dentry = au_plink_lkup(inode, a->bdst); + err = PTR_ERR(h_src_dentry); + if (IS_ERR(h_src_dentry)) + goto out; + + if (unlikely(d_is_negative(h_src_dentry))) { + dput(h_src_dentry); + h_src_dentry = NULL; + } + + } + if (h_src_dentry) { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src_dentry); + } else { + AuIOErr("no dentry found for hi%lu on b%d\n", + h_inode->i_ino, a->bdst); + err = -EIO; + } + } + + if (!err && !plink) + au_plink_append(inode, a->bdst, a->h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry) +{ + int err, rerr; + struct au_dtime dt; + struct au_link_args *a; + struct dentry *wh_dentry, *h_src_dentry; + struct inode *inode, *delegated; + struct super_block *sb; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + IMustLock(dir); + inode = d_inode(src_dentry); + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_and_write_lock2(dentry, src_dentry, + AuLock_NOPLM | AuLock_GEN); + if (unlikely(err)) + goto out_kfree; + err = au_d_linkable(src_dentry); + if (unlikely(err)) + goto out_unlock; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + a->src_parent = dget_parent(src_dentry); + wr_dir_args.force_btgt = au_ibstart(inode); + + di_write_lock_parent(a->parent); + wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + err = 0; + sb = dentry->d_sb; + a->bdst = au_dbstart(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibstart(inode); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) + h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); + if (!h_src_dentry) { + a->bsrc = au_dbstart(src_dentry); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + AuDebugOn(!h_src_dentry); + } else if (IS_ERR(h_src_dentry)) { + err = PTR_ERR(h_src_dentry); + goto out_parent; + } + + if (au_opt_test(au_mntflags(sb), PLINK)) { + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) + err = au_cpup_or_link(src_dentry, dentry, a); + else { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_src_dentry); + } else { + /* + * copyup src_dentry to the branch we process, + * and then link(2) to it. + */ + dput(h_src_dentry); + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { + au_unpin(&a->pin); + di_write_unlock(a->parent); + err = au_cpup_before_link(src_dentry, a); + di_write_lock_parent(a->parent); + if (!err) + err = au_pin(&a->pin, dentry, a->bdst, + au_opt_udba(sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_wh; + } + if (!err) { + h_src_dentry = au_h_dptr(src_dentry, a->bdst); + err = -ENOENT; + if (h_src_dentry && d_is_positive(h_src_dentry)) { + delegated = NULL; + err = vfsub_link(h_src_dentry, + au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry" + " for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + } + } + if (unlikely(err)) + goto out_unpin; + + if (wh_dentry) { + a->h_path.dentry = wh_dentry; + err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, + dentry); + if (unlikely(err)) + goto out_revert; + } + + au_dir_ts(dir, a->bdst); + dir->i_version++; + inc_nlink(inode); + inode->i_ctime = dir->i_ctime; + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ + d_drop(dentry); + /* some filesystems consume an inode even hardlink */ + au_fhsm_wrote(sb, a->bdst, /*force*/0); + goto out_unpin; /* success */ + +out_revert: + /* no delegation since it is just created */ + rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, + /*delegated*/NULL, /*force*/0); + if (unlikely(rerr)) { + AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); +out_unpin: + au_unpin(&a->pin); +out_wh: + dput(wh_dentry); +out_parent: + di_write_unlock(a->parent); + dput(a->src_parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + kfree(a); +out: + AuTraceErr(err); + return err; +} + +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; + unsigned char diropq; + struct path h_path; + struct dentry *wh_dentry, *parent, *opq_dentry; + struct mutex *h_mtx; + struct super_block *sb; + struct { + struct au_pin pin; + struct au_dtime dt; + } *a; /* reduce the stack usage */ + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR + }; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + sb = dentry->d_sb; + bindex = au_dbstart(dentry); + h_path.dentry = au_h_dptr(dentry, bindex); + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); + if (unlikely(err)) + goto out_unpin; + + /* make the dir opaque */ + diropq = 0; + h_mtx = &d_inode(h_path.dentry)->i_mutex; + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + mutex_unlock(h_mtx); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out_dir; + dput(opq_dentry); + diropq = 1; + } + + err = epilog(dir, bindex, wh_dentry, dentry); + if (!err) { + inc_nlink(dir); + goto out_unpin; /* success */ + } + + /* revert */ + if (diropq) { + AuLabel(revert opq); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + mutex_unlock(h_mtx); + if (rerr) { + AuIOErr("%pd reverting diropq failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + } + +out_dir: + AuLabel(revert dir); + rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); + if (rerr) { + AuIOErr("%pd reverting dir failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} --- linux-4.4.0.orig/fs/aufs/i_op_del.c +++ linux-4.4.0/fs/aufs/i_op_del.c @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (del entry) + */ + +#include "aufs.h" + +/* + * decide if a new whiteout for @dentry is necessary or not. + * when it is necessary, prepare the parent dir for the upper branch whose + * branch index is @bcpup for creation. the actual creation of the whiteout will + * be done by caller. + * return value: + * 0: wh is unnecessary + * plus: wh is necessary + * minus: error + */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) +{ + int need_wh, err; + aufs_bindex_t bstart; + struct super_block *sb; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + if (*bcpup < 0) { + *bcpup = bstart; + if (au_test_ro(sb, bstart, d_inode(dentry))) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(bstart < *bcpup + || au_test_ro(sb, *bcpup, d_inode(dentry))); + AuDbg("bcpup %d, bstart %d\n", *bcpup, bstart); + + if (*bcpup != bstart) { + err = au_cpup_dirs(dentry, *bcpup); + if (unlikely(err)) + goto out; + need_wh = 1; + } else { + struct au_dinfo *dinfo, *tmp; + + need_wh = -ENOMEM; + dinfo = au_di(dentry); + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (tmp) { + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + } + } + AuDbg("need_wh %d\n", need_wh); + err = need_wh; + +out: + return err; +} + +/* + * simple tests for the del-entry operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry, *h_latest; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_positive(dentry)) { + err = -ENOENT; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } + + err = -ENOENT; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + goto out; + err = 0; + + /* + * rmdir a dir may break the consistency on some filesystem. + * let's try heavy test. + */ + err = -EACCES; + if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1) + && au_test_h_perm(d_inode(h_parent), + MAY_EXEC | MAY_WRITE))) + goto out; + + h_latest = au_sio_lkup_one(&dentry->d_name, h_parent); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; + if (h_latest == h_dentry) + err = 0; + dput(h_latest); + +out: + return err; +} + +/* + * decide the branch where we operate for @dentry. the branch index will be set + * @rbcpup. after diciding it, 'pin' it and store the timestamps of the parent + * dir for reverting. + * when a new whiteout is necessary, create it. + */ +static struct dentry* +lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, + struct au_dtime *dt, struct au_pin *pin) +{ + struct dentry *wh_dentry; + struct super_block *sb; + struct path h_path; + int err, need_wh; + unsigned int udba; + aufs_bindex_t bcpup; + + need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); + wh_dentry = ERR_PTR(need_wh); + if (unlikely(need_wh < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + bcpup = *rbcpup; + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_path.dentry = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) { + err = au_may_del(dentry, bcpup, h_path.dentry, isdir); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + } + + h_path.mnt = au_sbr_mnt(sb, bcpup); + au_dtime_store(dt, au_pinned_parent(pin), &h_path); + wh_dentry = NULL; + if (!need_wh) + goto out; /* success, no need to create whiteout */ + + wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); + if (IS_ERR(wh_dentry)) + goto out_unpin; + + /* returns with the parent is locked and wh_dentry is dget-ed */ + goto out; /* success */ + +out_unpin: + au_unpin(pin); +out: + return wh_dentry; +} + +/* + * when removing a dir, rename it to a unique temporary whiteout-ed name first + * in order to be revertible and save time for removing many child whiteouts + * under the dir. + * returns 1 when there are too many child whiteout and caller should remove + * them asynchronously. returns 0 when the number of children is enough small to + * remove now or the branch fs is a remote fs. + * otherwise return an error. + */ +static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, + struct au_nhash *whlist, struct inode *dir) +{ + int rmdir_later, err, dirwh; + struct dentry *h_dentry; + struct super_block *sb; + struct inode *inode; + + sb = dentry->d_sb; + SiMustAnyLock(sb); + h_dentry = au_h_dptr(dentry, bindex); + err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); + if (unlikely(err)) + goto out; + + /* stop monitoring */ + inode = d_inode(dentry); + au_hn_free(au_hi(inode, bindex)); + + if (!au_test_fs_remote(h_dentry->d_sb)) { + dirwh = au_sbi(sb)->si_dirwh; + rmdir_later = (dirwh <= 1); + if (!rmdir_later) + rmdir_later = au_nhash_test_longer_wh(whlist, bindex, + dirwh); + if (rmdir_later) + return rmdir_later; + } + + err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); + if (unlikely(err)) { + AuIOErr("rmdir %pd, b%d failed, %d. ignored\n", + h_dentry, bindex, err); + err = 0; + } + +out: + AuTraceErr(err); + return err; +} + +/* + * final procedure for deleting a entry. + * maintain dentry and iattr. + */ +static void epilog(struct inode *dir, struct dentry *dentry, + aufs_bindex_t bindex) +{ + struct inode *inode; + + inode = d_inode(dentry); + d_drop(dentry); + inode->i_ctime = dir->i_ctime; + + au_dir_ts(dir, bindex); + dir->i_version++; +} + +/* + * when an error happened, remove the created whiteout and revert everything. + */ +static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, + aufs_bindex_t bwh, struct dentry *wh_dentry, + struct dentry *dentry, struct au_dtime *dt) +{ + int rerr; + struct path h_path = { + .dentry = wh_dentry, + .mnt = au_sbr_mnt(dir->i_sb, bindex) + }; + + rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); + if (!rerr) { + au_set_dbwh(dentry, bwh); + au_dtime_revert(dt); + return 0; + } + + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", dentry, err, rerr); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +int aufs_unlink(struct inode *dir, struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bindex, bstart; + struct inode *inode, *h_dir, *delegated; + struct dentry *parent, *wh_dentry; + /* to reuduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -EISDIR; + if (unlikely(d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + a->h_path.mnt = au_sbr_mnt(dentry->d_sb, bstart); + a->h_path.dentry = au_h_dptr(dentry, bstart); + dget(a->h_path.dentry); + if (bindex == bstart) { + h_dir = au_pinned_h_dir(&a->pin); + delegated = NULL; + err = vfsub_unlink(h_dir, &a->h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + /* dir inode is locked */ + h_dir = d_inode(wh_dentry->d_parent); + IMustLock(h_dir); + err = 0; + } + + if (!err) { + vfsub_drop_nlink(inode); + epilog(dir, dentry, bindex); + + /* update target timestamps */ + if (bindex == bstart) { + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); + /*ignore*/ + inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + } else + /* todo: this timestamp may be reverted later */ + inode->i_ctime = h_dir->i_ctime; + goto out_unpin; /* success */ + } + + /* revert */ + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(a->h_path.dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, bstart; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + /* to reuduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -ENOTDIR; + if (unlikely(!d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + err = -ENOMEM; + args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); + if (unlikely(!args)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + err = au_test_empty(dentry, &args->whlist); + if (unlikely(err)) + goto out_parent; + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_dentry = au_h_dptr(dentry, bstart); + dget(h_dentry); + rmdir_later = 0; + if (bindex == bstart) { + err = renwh_and_rmdir(dentry, bstart, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, bstart)); + + /* dir inode is locked */ + IMustLock(d_inode(wh_dentry->d_parent)); + err = 0; + } + + if (!err) { + vfsub_dead_dir(inode); + au_set_dbdiropq(dentry, -1); + epilog(dir, dentry, bindex); + + if (rmdir_later) { + au_whtmp_kick_rmdir(dir, bstart, h_dentry, args); + args = NULL; + } + + goto out_unpin; /* success */ + } + + /* revert */ + AuLabel(revert); + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(h_dentry); +out_parent: + di_write_unlock(parent); + if (args) + au_whtmp_rmdir_free(args); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-4.4.0.orig/fs/aufs/i_op_ren.c +++ linux-4.4.0/fs/aufs/i_op_ren.c @@ -0,0 +1,1015 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operation (rename entry) + * todo: this is crazy monster + */ + +#include "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR 1 +#define AuRen_ISSAMEDIR (1 << 1) +#define AuRen_WHSRC (1 << 2) +#define AuRen_WHDST (1 << 3) +#define AuRen_MNT_WRITE (1 << 4) +#define AuRen_DT_DSTDIR (1 << 5) +#define AuRen_DIROPQ (1 << 6) +#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) +#define au_fset_ren(flags, name) \ + do { (flags) |= AuRen_##name; } while (0) +#define au_fclr_ren(flags, name) \ + do { (flags) &= ~AuRen_##name; } while (0) + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t bstart; + } sd[AuSrcDst]; + +#define src_dentry sd[AuSRC].dentry +#define src_dir sd[AuSRC].dir +#define src_inode sd[AuSRC].inode +#define src_h_dentry sd[AuSRC].h_dentry +#define src_parent sd[AuSRC].parent +#define src_h_parent sd[AuSRC].h_parent +#define src_wh_dentry sd[AuSRC].wh_dentry +#define src_hdir sd[AuSRC].hdir +#define src_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_bstart sd[AuSRC].bstart + +#define dst_dentry sd[AuDST].dentry +#define dst_dir sd[AuDST].dir +#define dst_inode sd[AuDST].inode +#define dst_h_dentry sd[AuDST].h_dentry +#define dst_parent sd[AuDST].parent +#define dst_h_parent sd[AuDST].h_parent +#define dst_wh_dentry sd[AuDST].wh_dentry +#define dst_hdir sd[AuDST].hdir +#define dst_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_bstart sd[AuDST].bstart + + struct dentry *h_trap; + struct au_branch *br; + struct au_hinode *src_hinode; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh, src_bdiropq; + + unsigned int flags; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happened. + * we don't need to revert the copied-up/down the parent dir since they are + * harmless. + */ + +#define RevertFailure(fmt, ...) do { \ + AuIOErr("revert failure: " fmt " (%d, %d)\n", \ + ##__VA_ARGS__, err, rerr); \ + err = -EIO; \ +} while (0) + +static void au_ren_rev_diropq(int err, struct au_ren_args *a) +{ + int rerr; + + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + rerr = au_diropq_remove(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + au_set_dbdiropq(a->src_dentry, a->src_bdiropq); + if (rerr) + RevertFailure("remove diropq %pd", a->src_dentry); +} + +static void au_ren_rev_rename(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name, + a->src_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->src_dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, + au_h_dptr(a->src_dentry, a->btgt), + a->src_h_dir, &a->h_path, &delegated); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ + if (rerr) + RevertFailure("rename %pd", a->src_dentry); +} + +static void au_ren_rev_whtmp(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name, + a->dst_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->dst_dentry); + return; + } + if (d_is_positive(a->h_path.dentry)) { + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path, + &delegated); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + if (!rerr) + au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); + else + RevertFailure("rename %pd", a->h_dst); +} + +static void au_ren_rev_whsrc(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->src_wh_dentry; + rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); + au_set_dbwh(a->src_dentry, a->src_bwh); + if (rerr) + RevertFailure("unlink %pd", a->src_wh_dentry); +} +#undef RevertFailure + +/* ---------------------------------------------------------------------- */ + +/* + * when we have to copyup the renaming entry, do it with the rename-target name + * in order to minimize the cost (the later actual rename is unnecessary). + * otherwise rename it on the target branch. + */ +static int au_ren_or_cpup(struct au_ren_args *a) +{ + int err; + struct dentry *d; + struct inode *delegated; + + d = a->src_dentry; + if (au_dbstart(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + if (au_ftest_ren(a->flags, DIROPQ) + && au_dbdiropq(d) == a->btgt) + au_fclr_ren(a->flags, DIROPQ); + AuDebugOn(au_dbstart(d) != a->btgt); + delegated = NULL; + err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), + a->dst_h_dir, &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + } else + BUG(); + + if (!err && a->h_dst) + /* it will be set to dinfo later */ + dget(a->h_dst); + + return err; +} + +/* cf. aufs_rmdir() */ +static int au_ren_del_whtmp(struct au_ren_args *a) +{ + int err; + struct inode *dir; + + dir = a->dst_dir; + SiMustAnyLock(dir->i_sb); + if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, + au_sbi(dir->i_sb)->si_dirwh) + || au_test_fs_remote(a->h_dst->d_sb)) { + err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); + if (unlikely(err)) + pr_warn("failed removing whtmp dir %pd (%d), " + "ignored.\n", a->h_dst, err); + } else { + au_nhash_wh_free(&a->thargs->whlist); + a->thargs->whlist = a->whlist; + a->whlist.nh_num = 0; + au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); + dput(a->h_dst); + a->thargs = NULL; + } + + return 0; +} + +/* make it 'opaque' dir. */ +static int au_ren_diropq(struct au_ren_args *a) +{ + int err; + struct dentry *diropq; + + err = 0; + a->src_bdiropq = au_dbdiropq(a->src_dentry); + a->src_hinode = au_hi(a->src_inode, a->btgt); + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + diropq = au_diropq_create(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + else + dput(diropq); + + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->flags, ISDIR) && d_is_positive(h_d)) { + err = -ENOMEM; + a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, GFP_NOFS); + if (unlikely(!a->thargs)) + goto out; + a->h_dst = dget(h_d); + } + + /* create whiteout for src_dentry */ + if (au_ftest_ren(a->flags, WHSRC)) { + a->src_bwh = au_dbwh(a->src_dentry); + AuDebugOn(a->src_bwh >= 0); + a->src_wh_dentry + = au_wh_create(a->src_dentry, a->btgt, a->src_h_parent); + err = PTR_ERR(a->src_wh_dentry); + if (IS_ERR(a->src_wh_dentry)) + goto out_thargs; + } + + /* lookup whiteout for dentry */ + if (au_ftest_ren(a->flags, WHDST)) { + h_d = au_wh_lkup(a->dst_h_parent, &a->dst_dentry->d_name, + a->br); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out_whsrc; + if (d_is_negative(h_d)) + dput(h_d); + else + a->dst_wh_dentry = h_d; + } + + /* rename dentry to tmpwh */ + if (a->thargs) { + err = au_whtmp_ren(a->dst_h_dentry, a->br); + if (unlikely(err)) + goto out_whdst; + + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + err = au_lkup_neg(d, a->btgt, /*wh*/0); + if (unlikely(err)) + goto out_whtmp; + a->dst_h_dentry = au_h_dptr(d, a->btgt); + } + + BUG_ON(d_is_positive(a->dst_h_dentry) && a->src_bstart != a->btgt); + + /* rename by vfs_rename or cpup */ + d = a->dst_dentry; + if (au_ftest_ren(a->flags, ISDIR) + && (a->dst_wh_dentry + || au_dbdiropq(d) == a->btgt + /* hide the lower to keep xino */ + || a->btgt < au_dbend(d) + || au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ))) + au_fset_ren(a->flags, DIROPQ); + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + if (au_ftest_ren(a->flags, DIROPQ)) { + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + } + + /* update target timestamps */ + AuDebugOn(au_dbstart(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + + /* remove whiteout for dentry */ + if (a->dst_wh_dentry) { + a->h_path.dentry = a->dst_wh_dentry; + err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, + a->dst_dentry); + if (unlikely(err)) + goto out_diropq; + } + + /* remove whtmp */ + if (a->thargs) + au_ren_del_whtmp(a); /* ignore this error */ + + au_fhsm_wrote(a->src_dentry->d_sb, a->btgt, /*force*/0); + err = 0; + goto out_success; + +out_diropq: + if (au_ftest_ren(a->flags, DIROPQ)) + au_ren_rev_diropq(err, a); +out_rename: + au_ren_rev_rename(err, a); + dput(a->h_dst); +out_whtmp: + if (a->thargs) + au_ren_rev_whtmp(err, a); +out_whdst: + dput(a->dst_wh_dentry); + a->dst_wh_dentry = NULL; +out_whsrc: + if (a->src_wh_dentry) + au_ren_rev_whsrc(err, a); +out_success: + dput(a->src_wh_dentry); + dput(a->dst_wh_dentry); +out_thargs: + if (a->thargs) { + dput(a->h_dst); + au_whtmp_rmdir_free(a->thargs); + a->thargs = NULL; + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if @dentry dir can be rename destination or not. + * success means, it is a logically empty dir. + */ +static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) +{ + return au_test_empty(dentry, whlist); +} + +/* + * test if @dentry dir can be rename source or not. + * if it can, return 0 and @children is filled. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch. + */ +static int may_rename_srcdir(struct dentry *dentry, aufs_bindex_t btgt) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + if (bstart != btgt) { + struct au_nhash whlist; + + SiMustAnyLock(dentry->d_sb); + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, + dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (bstart == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + AuWarn1("renaming dir who has child(ren) on multiple branches," + " is not supported\n"); + err = -EXDEV; + } + return err; +} + +/* side effect: sets whlist and h_dentry */ +static int au_ren_may_dir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + struct dentry *d; + + d = a->dst_dentry; + SiMustAnyLock(d->d_sb); + + err = 0; + if (au_ftest_ren(a->flags, ISDIR) && a->dst_inode) { + rdhash = au_sbi(d->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); + err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + au_set_dbstart(d, a->dst_bstart); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbstart(d, a->btgt); + } + a->dst_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (au_ftest_ren(a->flags, ISDIR)) { + err = may_rename_srcdir(d, a->btgt); + if (unlikely(err)) { + au_nhash_wh_free(&a->whlist); + a->whlist.nh_num = 0; + } + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * simple tests for rename. + * following the checks in vfs, plus the parent-child relationship. + */ +static int au_may_ren(struct au_ren_args *a) +{ + int err, isdir; + struct inode *h_inode; + + if (a->src_bstart == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->flags, ISDIR)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_bstart != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + isdir = !!au_ftest_ren(a->flags, ISDIR); + if (d_really_is_negative(a->dst_dentry)) { + if (d_is_negative(a->dst_h_dentry)) + err = au_may_add(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } else { + if (unlikely(d_is_negative(a->dst_h_dentry))) + goto out; + h_inode = d_inode(a->dst_h_dentry); + if (h_inode->i_nlink) + err = au_may_del(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } + +out: + if (unlikely(err == -ENOENT || err == -EEXIST)) + err = -EIO; + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * locking order + * (VFS) + * - src_dir and dir by lock_rename() + * - inode if exitsts + * (aufs) + * - lock all + * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, + * + si_read_lock + * + di_write_lock2_child() + * + di_write_lock_child() + * + ii_write_lock_child() + * + di_write_lock_child2() + * + ii_write_lock_child2() + * + src_parent and parent + * + di_write_lock_parent() + * + ii_write_lock_parent() + * + di_write_lock_parent2() + * + ii_write_lock_parent2() + * + lower src_dir and dir by vfsub_lock_rename() + * + verify the every relationships between child and parent. if any + * of them failed, unlock all and return -EBUSY. + */ +static void au_ren_unlock(struct au_ren_args *a) +{ + vfsub_unlock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + if (au_ftest_ren(a->flags, MNT_WRITE)) + vfsub_mnt_drop_write(au_br_mnt(a->br)); +} + +static int au_ren_lock(struct au_ren_args *a) +{ + int err; + unsigned int udba; + + err = 0; + a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); + a->src_hdir = au_hi(a->src_dir, a->btgt); + a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); + a->dst_hdir = au_hi(a->dst_dir, a->btgt); + + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out; + au_fset_ren(a->flags, MNT_WRITE); + a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + udba = au_opt_udba(a->src_dentry->d_sb); + if (unlikely(a->src_hdir->hi_inode != d_inode(a->src_h_parent) + || a->dst_hdir->hi_inode != d_inode(a->dst_h_parent))) + err = au_busy_or_stale(); + if (!err && au_dbstart(a->src_dentry) == a->btgt) + err = au_h_verify(a->src_h_dentry, udba, + d_inode(a->src_h_parent), a->src_h_parent, + a->br); + if (!err && au_dbstart(a->dst_dentry) == a->btgt) + err = au_h_verify(a->dst_h_dentry, udba, + d_inode(a->dst_h_parent), a->dst_h_parent, + a->br); + if (!err) + goto out; /* success */ + + err = au_busy_or_stale(); + au_ren_unlock(a); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_ren_refresh_dir(struct au_ren_args *a) +{ + struct inode *dir; + + dir = a->dst_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->src_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + + au_dir_ts(dir, a->btgt); + + if (au_ftest_ren(a->flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) + au_cpup_attr_nlink(dir, /*force*/1); + au_dir_ts(dir, a->btgt); +} + +static void au_ren_refresh(struct au_ren_args *a) +{ + aufs_bindex_t bend, bindex; + struct dentry *d, *h_d; + struct inode *i, *h_i; + struct super_block *sb; + + d = a->dst_dentry; + d_drop(d); + if (a->h_dst) + /* already dget-ed by au_ren_or_cpup() */ + au_set_h_dptr(d, a->btgt, a->h_dst); + + i = a->dst_inode; + if (i) { + if (!au_ftest_ren(a->flags, ISDIR)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else { + bend = a->btgt; + for (bindex = au_dbstart(d); bindex < bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbend(d, a->btgt); + + sb = d->d_sb; + i = a->src_inode; + if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) + return; /* success */ + + bend = au_ibend(i); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_i = au_h_iptr(i, bindex); + if (h_i) { + au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + au_set_h_iptr(i, bindex, NULL, 0); + } + } + au_set_ibend(i, a->btgt); +} + +/* ---------------------------------------------------------------------- */ + +/* mainly for link(2) and rename(2) */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) +{ + aufs_bindex_t bdiropq, bwh; + struct dentry *parent; + struct au_branch *br; + + parent = dentry->d_parent; + IMustLock(d_inode(parent)); /* dir is locked */ + + bdiropq = au_dbdiropq(parent); + bwh = au_dbwh(dentry); + br = au_sbr(dentry->d_sb, btgt); + if (au_br_rdonly(br) + || (0 <= bdiropq && bdiropq < btgt) + || (0 <= bwh && bwh < btgt)) + btgt = -1; + + AuDbg("btgt %d\n", btgt); + return btgt; +} + +/* sets src_bstart, dst_bstart and btgt */ +static int au_ren_wbr(struct au_ren_args *a) +{ + int err; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + a->src_bstart = au_dbstart(a->src_dentry); + a->dst_bstart = au_dbstart(a->dst_dentry); + if (au_ftest_ren(a->flags, ISDIR)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_bstart; + if (a->dst_inode && a->dst_bstart < a->src_bstart) + wr_dir_args.force_btgt = a->dst_bstart; + wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); + err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); + a->btgt = err; + + return err; +} + +static void au_ren_dt(struct au_ren_args *a) +{ + a->h_path.dentry = a->src_h_parent; + au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) { + a->h_path.dentry = a->dst_h_parent; + au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); + } + + au_fclr_ren(a->flags, DT_DSTDIR); + if (!au_ftest_ren(a->flags, ISDIR)) + return; + + a->h_path.dentry = a->src_h_dentry; + au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); + if (d_is_positive(a->dst_h_dentry)) { + au_fset_ren(a->flags, DT_DSTDIR); + a->h_path.dentry = a->dst_h_dentry; + au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); + } +} + +static void au_ren_rev_dt(int err, struct au_ren_args *a) +{ + struct dentry *h_d; + struct mutex *h_mtx; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->flags, ISDIR) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &d_inode(h_d)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + mutex_unlock(h_mtx); + + if (au_ftest_ren(a->flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &d_inode(h_d)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + mutex_unlock(h_mtx); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry) +{ + int err, flags; + /* reduce stack space */ + struct au_ren_args *a; + + AuDbg("%pd, %pd\n", _src_dentry, _dst_dentry); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->src_dir = _src_dir; + a->src_dentry = _src_dentry; + a->src_inode = NULL; + if (d_really_is_positive(a->src_dentry)) + a->src_inode = d_inode(a->src_dentry); + a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ + a->dst_dir = _dst_dir; + a->dst_dentry = _dst_dentry; + a->dst_inode = NULL; + if (d_really_is_positive(a->dst_dentry)) + a->dst_inode = d_inode(a->dst_dentry); + a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ + if (a->dst_inode) { + IMustLock(a->dst_inode); + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (d_is_dir(a->src_dentry)) { + au_fset_ren(a->flags, ISDIR); + if (unlikely(d_really_is_positive(a->dst_dentry) + && !d_is_dir(a->dst_dentry))) + goto out_free; + flags |= AuLock_DIRS; + } + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, flags); + if (unlikely(err)) + goto out_free; + + err = au_d_hashed_positive(a->src_dentry); + if (unlikely(err)) + goto out_unlock; + err = -ENOENT; + if (a->dst_inode) { + /* + * If it is a dir, VFS unhash dst_dentry before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!S_ISDIR(a->dst_inode->i_mode)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err)) + goto out_unlock; + } else if (unlikely(IS_DEADDIR(a->dst_inode))) + goto out_unlock; + } else if (unlikely(d_unhashed(a->dst_dentry))) + goto out_unlock; + + /* + * is it possible? + * yes, it happened (in linux-3.3-rcN) but I don't know why. + * there may exist a problem somewhere else. + */ + err = -EINVAL; + if (unlikely(d_inode(a->dst_parent) == d_inode(a->src_dentry))) + goto out_unlock; + + au_fset_ren(a->flags, ISSAMEDIR); /* temporary */ + di_write_lock_parent(a->dst_parent); + + /* which branch we process */ + err = au_ren_wbr(a); + if (unlikely(err < 0)) + goto out_parent; + a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); + a->h_path.mnt = au_br_mnt(a->br); + + /* are they available to be renamed */ + err = au_ren_may_dir(a); + if (unlikely(err)) + goto out_children; + + /* prepare the writable parent dir on the same branch */ + if (a->dst_bstart == a->btgt) { + au_fset_ren(a->flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + if (a->src_dir != a->dst_dir) { + /* + * this temporary unlock is safe, + * because both dir->i_mutex are locked. + */ + di_write_unlock(a->dst_parent); + di_write_lock_parent(a->src_parent); + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, /*isdir*/1); + au_fclr_ren(a->flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->flags, WHSRC); + + /* cpup src */ + if (a->src_bstart != a->btgt) { + struct au_pin pin; + + err = au_pin(&pin, a->src_dentry, a->btgt, + au_opt_udba(a->src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + struct au_cp_generic cpg = { + .dentry = a->src_dentry, + .bdst = a->btgt, + .bsrc = a->src_bstart, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + AuDebugOn(au_dbstart(a->src_dentry) != a->src_bstart); + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->src_bstart = a->btgt; + a->src_h_dentry = au_h_dptr(a->src_dentry, a->btgt); + au_fset_ren(a->flags, WHSRC); + } + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_children; + + if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) + err = au_may_ren(a); + else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + if (unlikely(err)) + goto out_hdir; + + /* store timestamps to be revertible */ + au_ren_dt(a); + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dt; + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +out_dt: + au_ren_rev_dt(err, a); +out_hdir: + au_ren_unlock(a); +out_children: + au_nhash_wh_free(&a->whlist); + if (err && a->dst_inode && a->dst_bstart != a->btgt) { + AuDbg("bstart %d, btgt %d\n", a->dst_bstart, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbstart(a->dst_dentry, a->dst_bstart); + } +out_parent: + if (!err) + d_move(a->src_dentry, a->dst_dentry); + else { + au_update_dbstart(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->flags, ISSAMEDIR)) + di_write_unlock(a->dst_parent); + else + di_write_unlock2(a->src_parent, a->dst_parent); +out_unlock: + aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); +out_free: + iput(a->dst_inode); + if (a->thargs) + au_whtmp_rmdir_free(a->thargs); + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-4.4.0.orig/fs/aufs/iinfo.c +++ linux-4.4.0/fs/aufs/iinfo.c @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode private data + */ + +#include "aufs.h" + +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) +{ + struct inode *h_inode; + + IiMustAnyLock(inode); + + h_inode = au_ii(inode)->ii_hinode[0 + bindex].hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + return h_inode; +} + +/* todo: hard/soft set? */ +void au_hiput(struct au_hinode *hinode) +{ + au_hn_free(hinode); + dput(hinode->hi_whdentry); + iput(hinode->hi_inode); +} + +unsigned int au_hi_flags(struct inode *inode, int isdir) +{ + unsigned int flags; + const unsigned int mnt_flags = au_mntflags(inode->i_sb); + + flags = 0; + if (au_opt_test(mnt_flags, XINO)) + au_fset_hi(flags, XINO); + if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) + au_fset_hi(flags, HNOTIFY); + return flags; +} + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags) +{ + struct au_hinode *hinode; + struct inode *hi; + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + hinode = iinfo->ii_hinode + bindex; + hi = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + + if (hi) + au_hiput(hinode); + hinode->hi_inode = h_inode; + if (h_inode) { + int err; + struct super_block *sb = inode->i_sb; + struct au_branch *br; + + AuDebugOn(inode->i_mode + && (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)); + if (bindex == iinfo->ii_bstart) + au_cpup_igen(inode, h_inode); + br = au_sbr(sb, bindex); + hinode->hi_id = br->br_id; + if (au_ftest_hi(flags, XINO)) { + err = au_xino_write(sb, bindex, h_inode->i_ino, + inode->i_ino); + if (unlikely(err)) + AuIOErr1("failed au_xino_write() %d\n", err); + } + + if (au_ftest_hi(flags, HNOTIFY) + && au_br_hnotifyable(br->br_perm)) { + err = au_hn_alloc(hinode, inode); + if (unlikely(err)) + AuIOErr1("au_hn_alloc() %d\n", err); + } + } +} + +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh) +{ + struct au_hinode *hinode; + + IiMustWriteLock(inode); + + hinode = au_ii(inode)->ii_hinode + bindex; + AuDebugOn(hinode->hi_whdentry); + hinode->hi_whdentry = h_wh; +} + +void au_update_iigen(struct inode *inode, int half) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + unsigned int sigen; + + sigen = au_sigen(inode->i_sb); + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation = sigen; + if (half) + au_ig_fset(iigen->ig_flags, HALF_REFRESHED); + else + au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); + spin_unlock(&iigen->ig_spin); +} + +/* it may be called at remount time, too */ +void au_update_ibrange(struct inode *inode, int do_put_zero) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex, bend; + + iinfo = au_ii(inode); + if (!iinfo) + return; + + IiMustWriteLock(inode); + + if (do_put_zero && iinfo->ii_bstart >= 0) { + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++) { + struct inode *h_i; + + h_i = iinfo->ii_hinode[0 + bindex].hi_inode; + if (h_i + && !h_i->i_nlink + && !(h_i->i_state & I_LINKABLE)) + au_set_h_iptr(inode, bindex, NULL, 0); + } + } + + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + bend = au_sbend(inode->i_sb); + for (bindex = 0; bindex <= bend; bindex++) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bstart = bindex; + break; + } + if (iinfo->ii_bstart >= 0) + for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bend = bindex; + break; + } + AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + + spin_lock_init(&iinfo->ii_generation.ig_spin); + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbend(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (iinfo->ii_hinode) { + au_ninodes_inc(sb); + for (i = 0; i < nbr; i++) + iinfo->ii_hinode[i].hi_id = -1; + + iinfo->ii_generation.ig_generation = au_sigen(sb); + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_ii_realloc(struct au_iinfo *iinfo, int nbr) +{ + int err, sz; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + sz = sizeof(*hip) * (iinfo->ii_bend + 1); + if (!sz) + sz = sizeof(*hip); + hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); + if (hip) { + iinfo->ii_hinode = hip; + err = 0; + } + + return err; +} + +void au_iinfo_fin(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + struct super_block *sb; + aufs_bindex_t bindex, bend; + const unsigned char unlinked = !inode->i_nlink; + + iinfo = au_ii(inode); + /* bad_inode case */ + if (!iinfo) + return; + + sb = inode->i_sb; + au_ninodes_dec(sb); + if (si_pid_test(sb)) + au_xino_delete_inode(inode, unlinked); + else { + /* + * it is safe to hide the dependency between sbinfo and + * sb->s_umount. + */ + lockdep_off(); + si_noflush_read_lock(sb); + au_xino_delete_inode(inode, unlinked); + si_read_unlock(sb); + lockdep_on(); + } + + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_bstart; + if (bindex >= 0) { + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + while (bindex++ <= bend) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + kfree(iinfo->ii_hinode); + iinfo->ii_hinode = NULL; + AuRwDestroy(&iinfo->ii_rwsem); +} --- linux-4.4.0.orig/fs/aufs/inode.c +++ linux-4.4.0/fs/aufs/inode.c @@ -0,0 +1,528 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode functions + */ + +#include "aufs.h" + +struct inode *au_igrab(struct inode *inode) +{ + if (inode) { + AuDebugOn(!atomic_read(&inode->i_count)); + ihold(inode); + } + return inode; +} + +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); + au_update_iigen(inode, /*half*/1); + if (do_version) + inode->i_version++; +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_ii_realloc(iinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_bstart < 0); + p = iinfo->ii_hinode + iinfo->ii_bstart; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++, p++) { + if (!p->hi_inode) + continue; + + AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); + new_bindex = au_br_index(sb, p->hi_id); + if (new_bindex == bindex) + continue; + + if (new_bindex < 0) { + *update = 1; + au_hiput(p); + p->hi_inode = NULL; + continue; + } + + if (new_bindex < iinfo->ii_bstart) + iinfo->ii_bstart = new_bindex; + if (iinfo->ii_bend < new_bindex) + iinfo->ii_bend = new_bindex; + /* swap two lower inode, and loop again */ + q = iinfo->ii_hinode + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +void au_refresh_iop(struct inode *inode, int force_getattr) +{ + int type; + struct au_sbinfo *sbi = au_sbi(inode->i_sb); + const struct inode_operations *iop + = force_getattr ? aufs_iop : sbi->si_iop_array; + + if (inode->i_op == iop) + return; + + switch (inode->i_mode & S_IFMT) { + case S_IFDIR: + type = AuIop_DIR; + break; + case S_IFLNK: + type = AuIop_SYMLINK; + break; + default: + type = AuIop_OTHER; + break; + } + + inode->i_op = iop + type; + /* unnecessary smp_wmb() */ +} + +int au_refresh_hinode_self(struct inode *inode) +{ + int err, update; + + err = au_ii_refresh(inode, &update); + if (!err) + au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); + + AuTraceErr(err); + return err; +} + +int au_refresh_hinode(struct inode *inode, struct dentry *dentry) +{ + int err, e, update; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bend; + unsigned char isdir; + struct au_hinode *p; + struct au_iinfo *iinfo; + + err = au_ii_refresh(inode, &update); + if (unlikely(err)) + goto out; + + update = 0; + iinfo = au_ii(inode); + p = iinfo->ii_hinode + iinfo->ii_bstart; + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + struct inode *h_i, *h_inode; + struct dentry *h_d; + + h_d = au_h_dptr(dentry, bindex); + if (!h_d || d_is_negative(h_d)) + continue; + + h_inode = d_inode(h_d); + AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); + if (iinfo->ii_bstart <= bindex && bindex <= iinfo->ii_bend) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_bstart) + iinfo->ii_bstart = bindex; + if (iinfo->ii_bend < bindex) + iinfo->ii_bend = bindex; + au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); + update = 1; + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + if (!err) + au_refresh_hinode_attr(inode, update && isdir); + +out: + AuTraceErr(err); + return err; +} + +static int set_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bstart, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + struct inode_operations *iop; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + iop = au_sbi(inode->i_sb)->si_iop_array; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + h_inode = d_inode(h_dentry); + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, bstart, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = iop + AuIop_DIR; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_SYMLINK; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + init_special_inode(inode, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown file type 0%o\n", mode); + err = -EIO; + goto out; + } + + /* do not set hnotify for whiteouted dirs (SHWH mode) */ + flags = au_hi_flags(inode, isdir); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) + && au_ftest_hi(flags, HNOTIFY) + && dentry->d_name.len > AUFS_WH_PFX_LEN + && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) + au_fclr_hi(flags, HNOTIFY); + iinfo = au_ii(inode); + iinfo->ii_bstart = bstart; + iinfo->ii_bend = btail; + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + au_set_h_iptr(inode, bindex, + au_igrab(d_inode(h_dentry)), flags); + } + au_cpup_attr_all(inode, /*force*/1); + /* + * to force calling aufs_get_acl() every time, + * do not call cache_no_acl() for aufs inode. + */ + +out: + return err; +} + +/* + * successful returns with iinfo write_locked + * minus: errno + * zero: success, matched + * plus: no error, but unmatched + */ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int gen; + struct au_iigen iigen; + aufs_bindex_t bindex, bend; + struct inode *h_inode, *h_dinode; + struct dentry *h_dentry; + + /* + * before this function, if aufs got any iinfo lock, it must be only + * one, the parent dir. + * it can happen by UDBA and the obsoleted inode number. + */ + err = -EIO; + if (unlikely(inode->i_ino == parent_ino(dentry))) + goto out; + + err = 1; + ii_write_lock_new_child(inode); + h_dentry = au_h_dptr(dentry, au_dbstart(dentry)); + h_dinode = d_inode(h_dentry); + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (!h_inode || h_inode != h_dinode) + continue; + + err = 0; + gen = au_iigen(inode, &iigen); + if (gen == au_digen(dentry) + && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED)) + break; + + /* fully refresh inode using dentry */ + err = au_refresh_hinode(inode, dentry); + if (!err) + au_update_iigen(inode, /*half*/0); + break; + } + + if (unlikely(err)) + ii_write_unlock(inode); +out: + return err; +} + +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino) +{ + int err; + struct mutex *mtx; + + /* prevent hardlinked inode number from race condition */ + mtx = NULL; + if (d_type != DT_DIR) { + mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; + mutex_lock(mtx); + } + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out; + } + +out: + if (mtx) + mutex_unlock(mtx); + return err; +} + +/* successful returns with iinfo write_locked */ +/* todo: return with unlocked? */ +struct inode *au_new_inode(struct dentry *dentry, int must_new) +{ + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct super_block *sb; + struct mutex *mtx; + ino_t h_ino, ino; + int err; + aufs_bindex_t bstart; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + h_inode = d_inode(h_dentry); + h_ino = h_inode->i_ino; + + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + mtx = NULL; + if (!d_is_dir(h_dentry)) + mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; + +new_ino: + if (mtx) + mutex_lock(mtx); + err = au_xino_read(sb, bstart, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + /* verbose coding for lock class name */ + if (unlikely(d_is_symlink(h_dentry))) + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcSymlink_IIINFO); + else if (unlikely(d_is_dir(h_dentry))) + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcDir_IIINFO); + else /* likely */ + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcNonDir_IIINFO); + + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out; /* success */ + } + + /* + * iget_failed() calls iput(), but we need to call + * ii_write_unlock() after iget_failed(). so dirty hack for + * i_count. + */ + atomic_inc(&inode->i_count); + iget_failed(inode); + ii_write_unlock(inode); + au_xino_write(sb, bstart, h_ino, /*ino*/0); + /* ignore this error */ + goto out_iput; + } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { + /* + * horrible race condition between lookup, readdir and copyup + * (or something). + */ + if (mtx) + mutex_unlock(mtx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + mtx = NULL; + goto out_iput; + } + + if (!err) { + mtx = NULL; + goto out; /* success */ + } else if (mtx) + mutex_lock(mtx); + } + + if (unlikely(au_test_fs_unique_ino(h_inode))) + AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," + " b%d, %s, %pd, hi%lu, i%lu.\n", + bstart, au_sbtype(h_dentry->d_sb), dentry, + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, bstart, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (mtx) + mutex_unlock(mtx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out: + if (mtx) + mutex_unlock(mtx); + return inode; +} + +/* ---------------------------------------------------------------------- */ + +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode) +{ + int err; + struct inode *hi; + + err = au_br_rdonly(au_sbr(sb, bindex)); + + /* pseudo-link after flushed may happen out of bounds */ + if (!err + && inode + && au_ibstart(inode) <= bindex + && bindex <= au_ibend(inode)) { + /* + * permission check is unnecessary since vfsub routine + * will be called later + */ + hi = au_h_iptr(inode, bindex); + if (hi) + err = IS_IMMUTABLE(hi) ? -EROFS : 0; + } + + return err; +} + +int au_test_h_perm(struct inode *h_inode, int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; + return inode_permission(h_inode, mask); +} + +int au_test_h_perm_sio(struct inode *h_inode, int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_inode, mask); +} --- linux-4.4.0.orig/fs/aufs/inode.h +++ linux-4.4.0/fs/aufs/inode.h @@ -0,0 +1,685 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations + */ + +#ifndef __AUFS_INODE_H__ +#define __AUFS_INODE_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct vfsmount; + +struct au_hnotify { +#ifdef CONFIG_AUFS_HNOTIFY +#ifdef CONFIG_AUFS_HFSNOTIFY + /* never use fsnotify_add_vfsmount_mark() */ + struct fsnotify_mark hn_mark; +#endif + struct inode *hn_aufs_inode; /* no get/put */ +#endif +} ____cacheline_aligned_in_smp; + +struct au_hinode { + struct inode *hi_inode; + aufs_bindex_t hi_id; +#ifdef CONFIG_AUFS_HNOTIFY + struct au_hnotify *hi_notify; +#endif + + /* reference to the copied-up whiteout with get/put */ + struct dentry *hi_whdentry; +}; + +/* ig_flags */ +#define AuIG_HALF_REFRESHED 1 +#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) +#define au_ig_fset(flags, name) \ + do { (flags) |= AuIG_##name; } while (0) +#define au_ig_fclr(flags, name) \ + do { (flags) &= ~AuIG_##name; } while (0) + +struct au_iigen { + spinlock_t ig_spin; + __u32 ig_generation, ig_flags; +}; + +struct au_vdir; +struct au_iinfo { + struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_bstart, ii_bend; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; +} ____cacheline_aligned_in_smp; + +/* au_pin flags */ +#define AuPin_DI_LOCKED 1 +#define AuPin_MNT_WRITE (1 << 1) +#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) +#define au_fset_pin(flags, name) \ + do { (flags) |= AuPin_##name; } while (0) +#define au_fclr_pin(flags, name) \ + do { (flags) &= ~AuPin_##name; } while (0) + +struct au_pin { + /* input */ + struct dentry *dentry; + unsigned int udba; + unsigned char lsc_di, lsc_hi, flags; + aufs_bindex_t bindex; + + /* output */ + struct dentry *parent; + struct au_hinode *hdir; + struct vfsmount *h_mnt; + + /* temporary unlock/relock for copyup */ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct task_struct *task; +}; + +void au_pin_hdir_unlock(struct au_pin *p); +int au_pin_hdir_lock(struct au_pin *p); +int au_pin_hdir_relock(struct au_pin *p); +void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task); +void au_pin_hdir_acquire_nest(struct au_pin *p); +void au_pin_hdir_release(struct au_pin *p); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_iinfo *au_ii(struct inode *inode) +{ + struct au_iinfo *iinfo; + + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + if (iinfo->ii_hinode) + return iinfo; + return NULL; /* debugging bad_inode case */ +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +void au_refresh_iop(struct inode *inode, int force_getattr); +int au_refresh_hinode_self(struct inode *inode); +int au_refresh_hinode(struct inode *inode, struct dentry *dentry); +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino); +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); +int au_test_h_perm(struct inode *h_inode, int mask); +int au_test_h_perm_sio(struct inode *h_inode, int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) +{ +#ifdef CONFIG_AUFS_SHWH + return au_ino(sb, bindex, h_ino, d_type, ino); +#else + return 0; +#endif +} + +/* i_op.c */ +enum { + AuIop_SYMLINK, + AuIop_DIR, + AuIop_OTHER, + AuIop_Last +}; +extern struct inode_operations aufs_iop[AuIop_Last], + aufs_iop_nogetattr[AuIop_Last]; + +/* au_wr_dir flags */ +#define AuWrDir_ADD_ENTRY 1 +#define AuWrDir_ISDIR (1 << 1) +#define AuWrDir_TMPFILE (1 << 2) +#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) +#define au_fset_wrdir(flags, name) \ + do { (flags) |= AuWrDir_##name; } while (0) +#define au_fclr_wrdir(flags, name) \ + do { (flags) &= ~AuWrDir_##name; } while (0) + +struct au_wr_dir_args { + aufs_bindex_t force_btgt; + unsigned char flags; +}; +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args); + +struct dentry *au_pinned_h_parent(struct au_pin *pin); +void au_pin_init(struct au_pin *pin, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags); +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) __must_check; +int au_do_pin(struct au_pin *pin) __must_check; +void au_unpin(struct au_pin *pin); +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); + +#define AuIcpup_DID_CPUP 1 +#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) +#define au_fset_icpup(flags, name) \ + do { (flags) |= AuIcpup_##name; } while (0) +#define au_fclr_icpup(flags, name) \ + do { (flags) &= ~AuIcpup_##name; } while (0) + +struct au_icpup_args { + unsigned char flags; + unsigned char pin_flags; + aufs_bindex_t btgt; + unsigned int udba; + struct au_pin pin; + struct path h_path; + struct inode *h_inode; +}; + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a); + +int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path); + +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev); +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + bool want_excl); +struct vfsub_aopen_args; +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); +int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_unlink(struct inode *dir, struct dentry *dentry); +int aufs_rmdir(struct inode *dir, struct dentry *dentry); + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); +int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct dentry *dentry); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); +void au_hiput(struct au_hinode *hinode); +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh); +unsigned int au_hi_flags(struct inode *inode, int isdir); + +/* hinode flags */ +#define AuHi_XINO 1 +#define AuHi_HNOTIFY (1 << 1) +#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) +#define au_fset_hi(flags, name) \ + do { (flags) |= AuHi_##name; } while (0) +#define au_fclr_hi(flags, name) \ + do { (flags) &= ~AuHi_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuHi_HNOTIFY +#define AuHi_HNOTIFY 0 +#endif + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + +void au_update_iigen(struct inode *inode, int half); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_ii_realloc(struct au_iinfo *iinfo, int nbr); + +#ifdef CONFIG_PROC_FS +/* plink.c */ +int au_plink_maint(struct super_block *sb, int flags); +struct au_sbinfo; +void au_plink_maint_leave(struct au_sbinfo *sbinfo); +int au_plink_maint_enter(struct super_block *sb); +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb); +#else +AuStubVoid(au_plink_list, struct super_block *sb) +#endif +int au_plink_test(struct inode *inode); +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +void au_plink_put(struct super_block *sb, int verbose); +void au_plink_clean(struct super_block *sb, int verbose); +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); +#else +AuStubInt0(au_plink_maint, struct super_block *sb, int flags); +AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); +AuStubInt0(au_plink_maint_enter, struct super_block *sb); +AuStubVoid(au_plink_list, struct super_block *sb); +AuStubInt0(au_plink_test, struct inode *inode); +AuStub(struct dentry *, au_plink_lkup, return NULL, + struct inode *inode, aufs_bindex_t bindex); +AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +AuStubVoid(au_plink_put, struct super_block *sb, int verbose); +AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); +AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); +#endif /* CONFIG_PROC_FS */ + +#ifdef CONFIG_AUFS_XATTR +/* xattr.c */ +int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, + unsigned int verbose); +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); +ssize_t aufs_getxattr(struct dentry *dentry, const char *name, void *value, + size_t size); +int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, + size_t size, int flags); +int aufs_removexattr(struct dentry *dentry, const char *name); + +/* void au_xattr_init(struct super_block *sb); */ +#else +AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src, + int ignore_flags, unsigned int verbose); +/* AuStubVoid(au_xattr_init, struct super_block *sb); */ +#endif + +#ifdef CONFIG_FS_POSIX_ACL +struct posix_acl *aufs_get_acl(struct inode *inode, int type); +int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type); +#endif + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +enum { + AU_XATTR_SET, + AU_XATTR_REMOVE, + AU_ACL_SET +}; + +struct au_srxattr { + int type; + union { + struct { + const char *name; + const void *value; + size_t size; + int flags; + } set; + struct { + const char *name; + } remove; + struct { + struct posix_acl *acl; + int type; + } acl_set; + } u; +}; +ssize_t au_srxattr(struct dentry *dentry, struct au_srxattr *arg); +#endif + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for iinfo */ +enum { + AuLsc_II_CHILD, /* child first */ + AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_II_CHILD3, /* copyup dirs */ + AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ + AuLsc_II_PARENT2, + AuLsc_II_PARENT3, /* copyup dirs */ + AuLsc_II_NEW_CHILD +}; + +/* + * ii_read_lock_child, ii_write_lock_child, + * ii_read_lock_child2, ii_write_lock_child2, + * ii_read_lock_child3, ii_write_lock_child3, + * ii_read_lock_parent, ii_write_lock_parent, + * ii_read_lock_parent2, ii_write_lock_parent2, + * ii_read_lock_parent3, ii_write_lock_parent3, + * ii_read_lock_new_child, ii_write_lock_new_child, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void ii_read_lock_##name(struct inode *i) \ +{ \ + au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuWriteLockFunc(name, lsc) \ +static inline void ii_write_lock_##name(struct inode *i) \ +{ \ + au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); +AuRWLockFuncs(new_child, NEW_CHILD); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +/* + * ii_read_unlock, ii_write_unlock, ii_downgrade_lock + */ +AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &au_ii(i)->ii_rwsem); + +#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) +#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) +#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) + +/* ---------------------------------------------------------------------- */ + +static inline void au_icntnr_init(struct au_icntnr *c) +{ +#ifdef CONFIG_AUFS_DEBUG + c->vfs_inode.i_mode = 0; +#endif +} + +static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen_arg) +{ + unsigned int gen; + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + if (iigen_arg) + *iigen_arg = *iigen; + gen = iigen->ig_generation; + spin_unlock(&iigen->ig_spin); + + return gen; +} + +/* tiny test for inode number */ +/* tmpfs generation is too rough */ +static inline int au_test_higen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + AuRwMustAnyLock(&iinfo->ii_rwsem); + return !(iinfo->ii_hsb1 == h_inode->i_sb + && iinfo->ii_higen == h_inode->i_generation); +} + +static inline void au_iigen_dec(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation--; + spin_unlock(&iigen->ig_spin); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(inode && au_iigen(inode, NULL) != sigen)) + err = -EIO; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_id; +} + +static inline aufs_bindex_t au_ibstart(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bstart; +} + +static inline aufs_bindex_t au_ibend(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bend; +} + +static inline struct au_vdir *au_ivdir(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_vdir; +} + +static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; +} + +static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bstart = bindex; +} + +static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bend = bindex; +} + +static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_vdir = vdir; +} + +static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode + bindex; +} + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_pinned_parent(struct au_pin *pin) +{ + if (pin) + return pin->parent; + return NULL; +} + +static inline struct inode *au_pinned_h_dir(struct au_pin *pin) +{ + if (pin && pin->hdir) + return pin->hdir->hi_inode; + return NULL; +} + +static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) +{ + if (pin) + return pin->hdir; + return NULL; +} + +static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) +{ + if (pin) + pin->dentry = dentry; +} + +static inline void au_pin_set_parent_lflag(struct au_pin *pin, + unsigned char lflag) +{ + if (pin) { + if (lflag) + au_fset_pin(pin->flags, DI_LOCKED); + else + au_fclr_pin(pin->flags, DI_LOCKED); + } +} + +#if 0 /* reserved */ +static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) +{ + if (pin) { + dput(pin->parent); + pin->parent = dget(parent); + } +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +#ifdef CONFIG_AUFS_HNOTIFY +struct au_hnotify_op { + void (*ctl)(struct au_hinode *hinode, int do_set); + int (*alloc)(struct au_hinode *hinode); + + /* + * if it returns true, the the caller should free hinode->hi_notify, + * otherwise ->free() frees it. + */ + int (*free)(struct au_hinode *hinode, + struct au_hnotify *hn) __must_check; + + void (*fin)(void); + int (*init)(void); + + int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); + void (*fin_br)(struct au_branch *br); + int (*init_br)(struct au_branch *br, int perm); +}; + +/* hnotify.c */ +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); +void au_hn_free(struct au_hinode *hinode); +void au_hn_ctl(struct au_hinode *hinode, int do_set); +void au_hn_reset(struct inode *inode, unsigned int flags); +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode); +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); +int au_hnotify_init_br(struct au_branch *br, int perm); +void au_hnotify_fin_br(struct au_branch *br); +int __init au_hnotify_init(void); +void au_hnotify_fin(void); + +/* hfsnotify.c */ +extern const struct au_hnotify_op au_hnotify_op; + +static inline +void au_hn_init(struct au_hinode *hinode) +{ + hinode->hi_notify = NULL; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return hinode->hi_notify; +} + +#else +AuStub(int, au_hn_alloc, return -EOPNOTSUPP, + struct au_hinode *hinode __maybe_unused, + struct inode *inode __maybe_unused) +AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) +AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) +AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, + int do_set __maybe_unused) +AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, + unsigned int flags __maybe_unused) +AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, + struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) +AuStubInt0(__init au_hnotify_init, void) +AuStubVoid(au_hnotify_fin, void) +AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +static inline void au_hn_suspend(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/0); +} + +static inline void au_hn_resume(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/1); +} + +static inline void au_hn_imtx_lock(struct au_hinode *hdir) +{ + mutex_lock(&hdir->hi_inode->i_mutex); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + mutex_unlock(&hdir->hi_inode->i_mutex); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- linux-4.4.0.orig/fs/aufs/ioctl.c +++ linux-4.4.0/fs/aufs/ioctl.c @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * ioctl + * plink-management and readdir in userspace. + * assist the pathconf(3) wrapper library. + * move-down + * File-based Hierarchical Storage Management. + */ + +#include +#include +#include "aufs.h" + +static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) +{ + int err, fd; + aufs_bindex_t wbi, bindex, bend; + struct file *h_file; + struct super_block *sb; + struct dentry *root; + struct au_branch *br; + struct aufs_wbr_fd wbrfd = { + .oflags = au_dir_roflags, + .brid = -1 + }; + const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY + | O_NOATIME | O_CLOEXEC; + + AuDebugOn(wbrfd.oflags & ~valid); + + if (arg) { + err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + + err = -EINVAL; + AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); + wbrfd.oflags |= au_dir_roflags; + AuDbg("0%o\n", wbrfd.oflags); + if (unlikely(wbrfd.oflags & ~valid)) + goto out; + } + + fd = get_unused_fd_flags(0); + err = fd; + if (unlikely(fd < 0)) + goto out; + + h_file = ERR_PTR(-EINVAL); + wbi = 0; + br = NULL; + sb = path->dentry->d_sb; + root = sb->s_root; + aufs_read_lock(root, AuLock_IR); + bend = au_sbend(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bend)) + goto out_unlock; + } + + h_file = ERR_PTR(-ENOENT); + br = au_sbr(sb, wbi); + if (!au_br_writable(br->br_perm)) { + if (arg) + goto out_unlock; + + bindex = wbi + 1; + wbi = -1; + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) { + wbi = bindex; + br = au_sbr(sb, wbi); + break; + } + } + } + AuDbg("wbi %d\n", wbi); + if (wbi >= 0) + h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, + /*force_wr*/0); + +out_unlock: + aufs_read_unlock(root, AuLock_IR); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_fd; + + atomic_dec(&br->br_count); /* cf. au_h_open() */ + fd_install(fd, h_file); + err = fd; + goto out; /* success */ + +out_fd: + put_unused_fd(fd); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + struct dentry *dentry; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_ioctl(file, arg); + break; + + case AUFS_CTL_FHSM_FD: + dentry = file->f_path.dentry; + if (IS_ROOT(dentry)) + err = au_fhsm_fd(dentry->d_sb, arg); + else + err = -ENOTTY; + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_MVDOWN: + err = au_mvdown(file->f_path.dentry, (void __user *)arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_compat_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_compat_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_compat_ioctl(file, arg); + break; + + default: + err = aufs_ioctl_dir(file, cmd, arg); + } + + AuTraceErr(err); + return err; +} + +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif --- linux-4.4.0.orig/fs/aufs/loop.c +++ linux-4.4.0/fs/aufs/loop.c @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback block device as a branch + */ + +#include "aufs.h" + +/* added into drivers/block/loop.c */ +static struct file *(*backing_file_func)(struct super_block *sb); + +/* + * test if two lower dentries have overlapping branches. + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ + struct super_block *h_sb; + struct file *backing_file; + + if (unlikely(!backing_file_func)) { + /* don't load "loop" module here */ + backing_file_func = symbol_get(loop_backing_file); + if (unlikely(!backing_file_func)) + /* "loop" module is not loaded */ + return 0; + } + + h_sb = h_adding->d_sb; + backing_file = backing_file_func(h_sb); + if (!backing_file) + return 0; + + h_adding = backing_file->f_path.dentry; + /* + * h_adding can be local NFS. + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) + return 1; + return !!au_test_subdir(h_adding, sb->s_root); +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ +int au_test_loopback_kthread(void) +{ + int ret; + struct task_struct *tsk = current; + char c, comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + c = comm[4]; + ret = ('0' <= c && c <= '9' + && !strncmp(comm, "loop", 4)); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +#define au_warn_loopback_step 16 +static int au_warn_loopback_nelem = au_warn_loopback_step; +static unsigned long *au_warn_loopback_array; + +void au_warn_loopback(struct super_block *h_sb) +{ + int i, new_nelem; + unsigned long *a, magic; + static DEFINE_SPINLOCK(spin); + + magic = h_sb->s_magic; + spin_lock(&spin); + a = au_warn_loopback_array; + for (i = 0; i < au_warn_loopback_nelem && *a; i++) + if (a[i] == magic) { + spin_unlock(&spin); + return; + } + + /* h_sb is new to us, print it */ + if (i < au_warn_loopback_nelem) { + a[i] = magic; + goto pr; + } + + /* expand the array */ + new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; + a = au_kzrealloc(au_warn_loopback_array, + au_warn_loopback_nelem * sizeof(unsigned long), + new_nelem * sizeof(unsigned long), GFP_ATOMIC); + if (a) { + au_warn_loopback_nelem = new_nelem; + au_warn_loopback_array = a; + a[i] = magic; + goto pr; + } + + spin_unlock(&spin); + AuWarn1("realloc failed, ignored\n"); + return; + +pr: + spin_unlock(&spin); + pr_warn("you may want to try another patch for loopback file " + "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); +} + +int au_loopback_init(void) +{ + int err; + struct super_block *sb __maybe_unused; + + BUILD_BUG_ON(sizeof(sb->s_magic) != sizeof(unsigned long)); + + err = 0; + au_warn_loopback_array = kcalloc(au_warn_loopback_step, + sizeof(unsigned long), GFP_NOFS); + if (unlikely(!au_warn_loopback_array)) + err = -ENOMEM; + + return err; +} + +void au_loopback_fin(void) +{ + if (backing_file_func) + symbol_put(loop_backing_file); + kfree(au_warn_loopback_array); +} + +/* ---------------------------------------------------------------------- */ + +/* support the loopback block device insude aufs */ + +struct file *aufs_real_loop(struct file *file) +{ + struct file *f; + + BUG_ON(!au_test_aufs(file->f_path.dentry->d_sb)); + fi_read_lock(file); + f = au_hf_top(file); + fi_read_unlock(file); + AuDebugOn(!f); + return f; +} --- linux-4.4.0.orig/fs/aufs/loop.h +++ linux-4.4.0/fs/aufs/loop.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback mount as a branch + */ + +#ifndef __AUFS_LOOP_H__ +#define __AUFS_LOOP_H__ + +#ifdef __KERNEL__ + +struct dentry; +struct super_block; + +#ifdef CONFIG_AUFS_BDEV_LOOP +/* drivers/block/loop.c */ +struct file *loop_backing_file(struct super_block *sb); + +/* loop.c */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); +int au_test_loopback_kthread(void); +void au_warn_loopback(struct super_block *h_sb); + +int au_loopback_init(void); +void au_loopback_fin(void); + +struct file *aufs_real_loop(struct file *file); +#else +AuStub(struct file *, loop_backing_file, return NULL) + +AuStubInt0(au_test_loopback_overlap, struct super_block *sb, + struct dentry *h_adding) +AuStubInt0(au_test_loopback_kthread, void) +AuStubVoid(au_warn_loopback, struct super_block *h_sb) + +AuStubInt0(au_loopback_init, void) +AuStubVoid(au_loopback_fin, void) + +AuStub(struct file *, aufs_real_loop, return NULL, struct file *file) +#endif /* BLK_DEV_LOOP */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ --- linux-4.4.0.orig/fs/aufs/magic.mk +++ linux-4.4.0/fs/aufs/magic.mk @@ -0,0 +1,30 @@ + +# defined in ${srctree}/fs/fuse/inode.c +# tristate +ifdef CONFIG_FUSE_FS +ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 +endif + +# defined in ${srctree}/fs/xfs/xfs_sb.h +# tristate +ifdef CONFIG_XFS_FS +ccflags-y += -DXFS_SB_MAGIC=0x58465342 +endif + +# defined in ${srctree}/fs/configfs/mount.c +# tristate +ifdef CONFIG_CONFIGFS_FS +ccflags-y += -DCONFIGFS_MAGIC=0x62656570 +endif + +# defined in ${srctree}/fs/ubifs/ubifs.h +# tristate +ifdef CONFIG_UBIFS_FS +ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 +endif + +# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h +# tristate +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif --- linux-4.4.0.orig/fs/aufs/module.c +++ linux-4.4.0/fs/aufs/module.c @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module global variables and operations + */ + +#include +#include +#include "aufs.h" + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp) +{ + if (new_sz <= nused) + return p; + + p = krealloc(p, new_sz, gfp); + if (p) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ + +/* + * aufs caches + */ +struct kmem_cache *au_cachep[AuCache_Last]; +static int __init au_cache_init(void) +{ + au_cachep[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cachep[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cachep[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cachep[AuCache_ICNTNR]) + au_cachep[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cachep[AuCache_FINFO]) + au_cachep[AuCache_VDIR] = AuCache(au_vdir); + if (au_cachep[AuCache_VDIR]) + au_cachep[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cachep[AuCache_DEHSTR]) + return 0; + + return -ENOMEM; +} + +static void au_cache_fin(void) +{ + int i; + + /* + * Make sure all delayed rcu free inodes are flushed before we + * destroy cache. + */ + rcu_barrier(); + + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) { + kmem_cache_destroy(au_cachep[i]); + au_cachep[i] = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct au_splhead au_sbilist; +#endif + +struct lock_class_key au_lc_key[AuLcKey_Last]; + +/* + * functions for module interface. + */ +MODULE_LICENSE("GPL"); +/* MODULE_LICENSE("GPL v2"); */ +MODULE_AUTHOR("Junjiro R. Okajima "); +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); +MODULE_ALIAS_FS(AUFS_NAME); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; +MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); +module_param_named(brs, sysaufs_brs, int, S_IRUGO); + +/* this module parameter has no meaning when USER_NS is disabled */ +static bool au_userns; +MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); +module_param_named(allow_userns, au_userns, bool, S_IRUGO); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + int err; + + err = seq_path(seq, path, au_esc_chars); + if (err > 0) + err = 0; + else if (err < 0) + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int __init aufs_init(void) +{ + int err, i; + char *p; + + p = au_esc_chars; + for (i = 1; i <= ' '; i++) + *p++ = i; + *p++ = '\\'; + *p++ = '\x7f'; + *p = 0; + + au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); + + memcpy(aufs_iop_nogetattr, aufs_iop, sizeof(aufs_iop)); + for (i = 0; i < AuIop_Last; i++) + aufs_iop_nogetattr[i].getattr = NULL; + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = au_procfs_init(); + if (unlikely(err)) + goto out_sysaufs; + err = au_wkq_init(); + if (unlikely(err)) + goto out_procfs; + err = au_loopback_init(); + if (unlikely(err)) + goto out_wkq; + err = au_hnotify_init(); + if (unlikely(err)) + goto out_loopback; + err = au_sysrq_init(); + if (unlikely(err)) + goto out_hin; + err = au_cache_init(); + if (unlikely(err)) + goto out_sysrq; + + aufs_fs_type.fs_flags |= au_userns ? FS_USERNS_MOUNT : 0; + err = register_filesystem(&aufs_fs_type); + if (unlikely(err)) + goto out_cache; + + /* since we define pr_fmt, call printk directly */ + printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); + goto out; /* success */ + +out_cache: + au_cache_fin(); +out_sysrq: + au_sysrq_fin(); +out_hin: + au_hnotify_fin(); +out_loopback: + au_loopback_fin(); +out_wkq: + au_wkq_fin(); +out_procfs: + au_procfs_fin(); +out_sysaufs: + sysaufs_fin(); + au_dy_fin(); +out: + return err; +} + +static void __exit aufs_exit(void) +{ + unregister_filesystem(&aufs_fs_type); + au_cache_fin(); + au_sysrq_fin(); + au_hnotify_fin(); + au_loopback_fin(); + au_wkq_fin(); + au_procfs_fin(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); --- linux-4.4.0.orig/fs/aufs/module.h +++ linux-4.4.0/fs/aufs/module.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module initialization and module-global + */ + +#ifndef __AUFS_MODULE_H__ +#define __AUFS_MODULE_H__ + +#ifdef __KERNEL__ + +#include + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +enum { + AuLcNonDir_FIINFO, + AuLcNonDir_DIINFO, + AuLcNonDir_IIINFO, + + AuLcDir_FIINFO, + AuLcDir_DIINFO, + AuLcDir_IIINFO, + + AuLcSymlink_DIINFO, + AuLcSymlink_IIINFO, + + AuLcKey_Last +}; +extern struct lock_class_key au_lc_key[AuLcKey_Last]; + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp); +int au_seq_path(struct seq_file *seq, struct path *path); + +#ifdef CONFIG_PROC_FS +/* procfs.c */ +int __init au_procfs_init(void); +void au_procfs_fin(void); +#else +AuStubInt0(au_procfs_init, void); +AuStubVoid(au_procfs_fin, void); +#endif + +/* ---------------------------------------------------------------------- */ + +/* kmem cache */ +enum { + AuCache_DINFO, + AuCache_ICNTNR, + AuCache_FINFO, + AuCache_VDIR, + AuCache_DEHSTR, + AuCache_HNOTIFY, /* must be last */ + AuCache_Last +}; + +#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) +#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) +#define AuCacheCtor(type, ctor) \ + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + +extern struct kmem_cache *au_cachep[]; + +#define AuCacheFuncs(name, index) \ +static inline struct au_##name *au_cache_alloc_##name(void) \ +{ return kmem_cache_alloc(au_cachep[AuCache_##index], GFP_NOFS); } \ +static inline void au_cache_free_##name(struct au_##name *p) \ +{ kmem_cache_free(au_cachep[AuCache_##index], p); } + +AuCacheFuncs(dinfo, DINFO); +AuCacheFuncs(icntnr, ICNTNR); +AuCacheFuncs(finfo, FINFO); +AuCacheFuncs(vdir, VDIR); +AuCacheFuncs(vdir_dehstr, DEHSTR); +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ --- linux-4.4.0.orig/fs/aufs/mvdown.c +++ linux-4.4.0/fs/aufs/mvdown.c @@ -0,0 +1,703 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * move-down, opposite of copy-up + */ + +#include "aufs.h" + +struct au_mvd_args { + struct { + struct super_block *h_sb; + struct dentry *h_parent; + struct au_hinode *hdir; + struct inode *h_dir, *h_inode; + struct au_pin pin; + } info[AUFS_MVDOWN_NARRAY]; + + struct aufs_mvdown mvdown; + struct dentry *dentry, *parent; + struct inode *inode, *dir; + struct super_block *sb; + aufs_bindex_t bopq, bwh, bfound; + unsigned char rename_lock; +}; + +#define mvd_errno mvdown.au_errno +#define mvd_bsrc mvdown.stbr[AUFS_MVDOWN_UPPER].bindex +#define mvd_src_brid mvdown.stbr[AUFS_MVDOWN_UPPER].brid +#define mvd_bdst mvdown.stbr[AUFS_MVDOWN_LOWER].bindex +#define mvd_dst_brid mvdown.stbr[AUFS_MVDOWN_LOWER].brid + +#define mvd_h_src_sb info[AUFS_MVDOWN_UPPER].h_sb +#define mvd_h_src_parent info[AUFS_MVDOWN_UPPER].h_parent +#define mvd_hdir_src info[AUFS_MVDOWN_UPPER].hdir +#define mvd_h_src_dir info[AUFS_MVDOWN_UPPER].h_dir +#define mvd_h_src_inode info[AUFS_MVDOWN_UPPER].h_inode +#define mvd_pin_src info[AUFS_MVDOWN_UPPER].pin + +#define mvd_h_dst_sb info[AUFS_MVDOWN_LOWER].h_sb +#define mvd_h_dst_parent info[AUFS_MVDOWN_LOWER].h_parent +#define mvd_hdir_dst info[AUFS_MVDOWN_LOWER].hdir +#define mvd_h_dst_dir info[AUFS_MVDOWN_LOWER].h_dir +#define mvd_h_dst_inode info[AUFS_MVDOWN_LOWER].h_inode +#define mvd_pin_dst info[AUFS_MVDOWN_LOWER].pin + +#define AU_MVD_PR(flag, ...) do { \ + if (flag) \ + pr_err(__VA_ARGS__); \ + } while (0) + +static int find_lower_writable(struct au_mvd_args *a) +{ + struct super_block *sb; + aufs_bindex_t bindex, bend; + struct au_branch *br; + + sb = a->sb; + bindex = a->mvd_bsrc; + bend = au_sbend(sb); + if (a->mvdown.flags & AUFS_MVDOWN_FHSM_LOWER) + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm) + && (!(au_br_sb(br)->s_flags & MS_RDONLY))) + return bindex; + } + else if (!(a->mvdown.flags & AUFS_MVDOWN_ROLOWER)) + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br)) + return bindex; + } + else + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!(au_br_sb(br)->s_flags & MS_RDONLY)) { + if (au_br_rdonly(br)) + a->mvdown.flags + |= AUFS_MVDOWN_ROLOWER_R; + return bindex; + } + } + + return -1; +} + +/* make the parent dir on bdst */ +static int au_do_mkdir(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + a->mvd_hdir_src = au_hi(a->dir, a->mvd_bsrc); + a->mvd_hdir_dst = au_hi(a->dir, a->mvd_bdst); + a->mvd_h_src_parent = au_h_dptr(a->parent, a->mvd_bsrc); + a->mvd_h_dst_parent = NULL; + if (au_dbend(a->parent) >= a->mvd_bdst) + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + if (!a->mvd_h_dst_parent) { + err = au_cpdown_dirs(a->dentry, a->mvd_bdst); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "cpdown_dirs failed\n"); + goto out; + } + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +/* lock them all */ +static int au_do_lock(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct dentry *h_trap; + + a->mvd_h_src_sb = au_sbr_sb(a->sb, a->mvd_bsrc); + a->mvd_h_dst_sb = au_sbr_sb(a->sb, a->mvd_bdst); + err = au_pin(&a->mvd_pin_dst, a->dentry, a->mvd_bdst, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_dst failed\n"); + goto out; + } + + if (a->mvd_h_src_sb != a->mvd_h_dst_sb) { + a->rename_lock = 0; + au_pin_init(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + AuLsc_DI_PARENT, AuLsc_I_PARENT3, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + err = au_do_pin(&a->mvd_pin_src); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + goto out_dst; + } + goto out; /* success */ + } + + a->rename_lock = 1; + au_pin_hdir_unlock(&a->mvd_pin_dst); + err = au_pin(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + au_pin_hdir_unlock(&a->mvd_pin_src); + h_trap = vfsub_lock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + if (h_trap) { + err = (h_trap != a->mvd_h_src_parent); + if (err) + err = (h_trap != a->mvd_h_dst_parent); + } + BUG_ON(err); /* it should never happen */ + if (unlikely(a->mvd_h_src_dir != au_pinned_h_dir(&a->mvd_pin_src))) { + err = -EBUSY; + AuTraceErr(err); + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + goto out; /* success */ + +out_dst: + au_unpin(&a->mvd_pin_dst); +out: + AuTraceErr(err); + return err; +} + +static void au_do_unlock(const unsigned char dmsg, struct au_mvd_args *a) +{ + if (!a->rename_lock) + au_unpin(&a->mvd_pin_src); + else { + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + } + au_unpin(&a->mvd_pin_dst); +} + +/* copy-down the file */ +static int au_do_cpdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_cp_generic cpg = { + .dentry = a->dentry, + .bdst = a->mvd_bdst, + .bsrc = a->mvd_bsrc, + .len = -1, + .pin = &a->mvd_pin_dst, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + + AuDbg("b%d, b%d\n", cpg.bsrc, cpg.bdst); + if (a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + au_fset_cpup(cpg.flags, OVERWRITE); + if (a->mvdown.flags & AUFS_MVDOWN_ROLOWER) + au_fset_cpup(cpg.flags, RWDST); + err = au_sio_cpdown_simple(&cpg); + if (unlikely(err)) + AU_MVD_PR(dmsg, "cpdown failed\n"); + + AuTraceErr(err); + return err; +} + +/* + * unlink the whiteout on bdst if exist which may be created by UDBA while we + * were sleeping + */ +static int au_do_unlink_wh(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct au_branch *br; + struct inode *delegated; + + br = au_sbr(a->sb, a->mvd_bdst); + h_path.dentry = au_wh_lkup(a->mvd_h_dst_parent, &a->dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) { + AU_MVD_PR(dmsg, "wh_lkup failed\n"); + goto out; + } + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + delegated = NULL; + err = vfsub_unlink(d_inode(a->mvd_h_dst_parent), &h_path, + &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "wh_unlink failed\n"); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* + * unlink the topmost h_dentry + */ +static int au_do_unlink(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct inode *delegated; + + h_path.mnt = au_sbr_mnt(a->sb, a->mvd_bsrc); + h_path.dentry = au_h_dptr(a->dentry, a->mvd_bsrc); + delegated = NULL; + err = vfsub_unlink(a->mvd_h_src_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "unlink failed\n"); + + AuTraceErr(err); + return err; +} + +/* Since mvdown succeeded, we ignore an error of this function */ +static void au_do_stfs(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + a->mvdown.flags |= AUFS_MVDOWN_STFS_FAILED; + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_UPPER].stfs); + if (!err) { + br = au_sbr(a->sb, a->mvd_bdst); + a->mvdown.stbr[AUFS_MVDOWN_LOWER].brid = br->br_id; + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_LOWER].stfs); + } + if (!err) + a->mvdown.flags &= ~AUFS_MVDOWN_STFS_FAILED; + else + AU_MVD_PR(dmsg, "statfs failed (%d), ignored\n", err); +} + +/* + * copy-down the file and unlink the bsrc file. + * - unlink the bdst whout if exist + * - copy-down the file (with whtmp name and rename) + * - unlink the bsrc file + */ +static int au_do_mvdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = au_do_mkdir(dmsg, a); + if (!err) + err = au_do_lock(dmsg, a); + if (unlikely(err)) + goto out; + + /* + * do not revert the activities we made on bdst since they should be + * harmless in aufs. + */ + + err = au_do_cpdown(dmsg, a); + if (!err) + err = au_do_unlink_wh(dmsg, a); + if (!err && !(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) + err = au_do_unlink(dmsg, a); + if (unlikely(err)) + goto out_unlock; + + AuDbg("%pd2, 0x%x, %d --> %d\n", + a->dentry, a->mvdown.flags, a->mvd_bsrc, a->mvd_bdst); + if (find_lower_writable(a) < 0) + a->mvdown.flags |= AUFS_MVDOWN_BOTTOM; + + if (a->mvdown.flags & AUFS_MVDOWN_STFS) + au_do_stfs(dmsg, a); + + /* maintain internal array */ + if (!(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) { + au_set_h_dptr(a->dentry, a->mvd_bsrc, NULL); + au_set_dbstart(a->dentry, a->mvd_bdst); + au_set_h_iptr(a->inode, a->mvd_bsrc, NULL, /*flags*/0); + au_set_ibstart(a->inode, a->mvd_bdst); + } else { + /* hide the lower */ + au_set_h_dptr(a->dentry, a->mvd_bdst, NULL); + au_set_dbend(a->dentry, a->mvd_bsrc); + au_set_h_iptr(a->inode, a->mvd_bdst, NULL, /*flags*/0); + au_set_ibend(a->inode, a->mvd_bsrc); + } + if (au_dbend(a->dentry) < a->mvd_bdst) + au_set_dbend(a->dentry, a->mvd_bdst); + if (au_ibend(a->inode) < a->mvd_bdst) + au_set_ibend(a->inode, a->mvd_bdst); + +out_unlock: + au_do_unlock(dmsg, a); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* make sure the file is idle */ +static int au_mvd_args_busy(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err, plinked; + + err = 0; + plinked = !!au_opt_test(au_mntflags(a->sb), PLINK); + if (au_dbstart(a->dentry) == a->mvd_bsrc + && au_dcount(a->dentry) == 1 + && atomic_read(&a->inode->i_count) == 1 + /* && a->mvd_h_src_inode->i_nlink == 1 */ + && (!plinked || !au_plink_test(a->inode)) + && a->inode->i_nlink == 1) + goto out; + + err = -EBUSY; + AU_MVD_PR(dmsg, + "b%d, d{b%d, c%d?}, i{c%d?, l%u}, hi{l%u}, p{%d, %d}\n", + a->mvd_bsrc, au_dbstart(a->dentry), au_dcount(a->dentry), + atomic_read(&a->inode->i_count), a->inode->i_nlink, + a->mvd_h_src_inode->i_nlink, + plinked, plinked ? au_plink_test(a->inode) : 0); + +out: + AuTraceErr(err); + return err; +} + +/* make sure the parent dir is fine */ +static int au_mvd_args_parent(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + aufs_bindex_t bindex; + + err = 0; + if (unlikely(au_alive_dir(a->parent))) { + err = -ENOENT; + AU_MVD_PR(dmsg, "parent dir is dead\n"); + goto out; + } + + a->bopq = au_dbdiropq(a->parent); + bindex = au_wbr_nonopq(a->dentry, a->mvd_bdst); + AuDbg("b%d\n", bindex); + if (unlikely((bindex >= 0 && bindex < a->mvd_bdst) + || (a->bopq != -1 && a->bopq < a->mvd_bdst))) { + err = -EINVAL; + a->mvd_errno = EAU_MVDOWN_OPAQUE; + AU_MVD_PR(dmsg, "ancestor is opaque b%d, b%d\n", + a->bopq, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_intermediate(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + struct au_dinfo *dinfo, *tmp; + + /* lookup the next lower positive entry */ + err = -ENOMEM; + tmp = au_di_alloc(a->sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + + a->bfound = -1; + a->bwh = -1; + dinfo = au_di(a->dentry); + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + + /* returns the number of positive dentries */ + err = au_lkup_dentry(a->dentry, a->mvd_bsrc + 1, /*type*/0); + if (!err) + a->bwh = au_dbwh(a->dentry); + else if (err > 0) + a->bfound = au_dbstart(a->dentry); + + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err < 0)) + AU_MVD_PR(dmsg, "failed look-up lower\n"); + + /* + * here, we have these cases. + * bfound == -1 + * no positive dentry under bsrc. there are more sub-cases. + * bwh < 0 + * there no whiteout, we can safely move-down. + * bwh <= bsrc + * impossible + * bsrc < bwh && bwh < bdst + * there is a whiteout on RO branch. cannot proceed. + * bwh == bdst + * there is a whiteout on the RW target branch. it should + * be removed. + * bdst < bwh + * there is a whiteout somewhere unrelated branch. + * -1 < bfound && bfound <= bsrc + * impossible. + * bfound < bdst + * found, but it is on RO branch between bsrc and bdst. cannot + * proceed. + * bfound == bdst + * found, replace it if AUFS_MVDOWN_FORCE is set. otherwise return + * error. + * bdst < bfound + * found, after we create the file on bdst, it will be hidden. + */ + + AuDebugOn(a->bfound == -1 + && a->bwh != -1 + && a->bwh <= a->mvd_bsrc); + AuDebugOn(-1 < a->bfound + && a->bfound <= a->mvd_bsrc); + + err = -EINVAL; + if (a->bfound == -1 + && a->mvd_bsrc < a->bwh + && a->bwh != -1 + && a->bwh < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_WHITEOUT; + AU_MVD_PR(dmsg, "bsrc %d, bdst %d, bfound %d, bwh %d\n", + a->mvd_bsrc, a->mvd_bdst, a->bfound, a->bwh); + goto out; + } else if (a->bfound != -1 && a->bfound < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_UPPER; + AU_MVD_PR(dmsg, "bdst %d, bfound %d\n", + a->mvd_bdst, a->bfound); + goto out; + } + + err = 0; /* success */ + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_exist(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + if (!(a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + && a->bfound == a->mvd_bdst) + err = -EEXIST; + AuTraceErr(err); + return err; +} + +static int au_mvd_args(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + err = -EISDIR; + if (unlikely(S_ISDIR(a->inode->i_mode))) + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_UPPER)) + a->mvd_bsrc = au_ibstart(a->inode); + else { + a->mvd_bsrc = au_br_index(a->sb, a->mvd_src_brid); + if (unlikely(a->mvd_bsrc < 0 + || (a->mvd_bsrc < au_dbstart(a->dentry) + || au_dbend(a->dentry) < a->mvd_bsrc + || !au_h_dptr(a->dentry, a->mvd_bsrc)) + || (a->mvd_bsrc < au_ibstart(a->inode) + || au_ibend(a->inode) < a->mvd_bsrc + || !au_h_iptr(a->inode, a->mvd_bsrc)))) { + a->mvd_errno = EAU_MVDOWN_NOUPPER; + AU_MVD_PR(dmsg, "no upper\n"); + goto out; + } + } + if (unlikely(a->mvd_bsrc == au_sbend(a->sb))) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "on the bottom\n"); + goto out; + } + a->mvd_h_src_inode = au_h_iptr(a->inode, a->mvd_bsrc); + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_rdonly(br); + if (!(a->mvdown.flags & AUFS_MVDOWN_ROUPPER)) { + if (unlikely(err)) + goto out; + } else if (!(vfsub_native_ro(a->mvd_h_src_inode) + || IS_APPEND(a->mvd_h_src_inode))) { + if (err) + a->mvdown.flags |= AUFS_MVDOWN_ROUPPER_R; + /* go on */ + } else + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_LOWER)) { + a->mvd_bdst = find_lower_writable(a); + if (unlikely(a->mvd_bdst < 0)) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "no writable lower branch\n"); + goto out; + } + } else { + a->mvd_bdst = au_br_index(a->sb, a->mvd_dst_brid); + if (unlikely(a->mvd_bdst < 0 + || au_sbend(a->sb) < a->mvd_bdst)) { + a->mvd_errno = EAU_MVDOWN_NOLOWERBR; + AU_MVD_PR(dmsg, "no lower brid\n"); + goto out; + } + } + + err = au_mvd_args_busy(dmsg, a); + if (!err) + err = au_mvd_args_parent(dmsg, a); + if (!err) + err = au_mvd_args_intermediate(dmsg, a); + if (!err) + err = au_mvd_args_exist(dmsg, a); + if (!err) + AuDbg("b%d, b%d\n", a->mvd_bsrc, a->mvd_bdst); + +out: + AuTraceErr(err); + return err; +} + +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *uarg) +{ + int err, e; + unsigned char dmsg; + struct au_mvd_args *args; + struct inode *inode; + + inode = d_inode(dentry); + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -ENOMEM; + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) + goto out; + + err = copy_from_user(&args->mvdown, uarg, sizeof(args->mvdown)); + if (!err) + err = !access_ok(VERIFY_WRITE, uarg, sizeof(*uarg)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out_free; + } + AuDbg("flags 0x%x\n", args->mvdown.flags); + args->mvdown.flags &= ~(AUFS_MVDOWN_ROLOWER_R | AUFS_MVDOWN_ROUPPER_R); + args->mvdown.au_errno = 0; + args->dentry = dentry; + args->inode = inode; + args->sb = dentry->d_sb; + + err = -ENOENT; + dmsg = !!(args->mvdown.flags & AUFS_MVDOWN_DMSG); + args->parent = dget_parent(dentry); + args->dir = d_inode(args->parent); + mutex_lock_nested(&args->dir->i_mutex, I_MUTEX_PARENT); + dput(args->parent); + if (unlikely(args->parent != dentry->d_parent)) { + AU_MVD_PR(dmsg, "parent dir is moved\n"); + goto out_dir; + } + + mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD); + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_NOPLMW); + if (unlikely(err)) + goto out_inode; + + di_write_lock_parent(args->parent); + err = au_mvd_args(dmsg, args); + if (unlikely(err)) + goto out_parent; + + err = au_do_mvdown(dmsg, args); + if (unlikely(err)) + goto out_parent; + + au_cpup_attr_timesizes(args->dir); + au_cpup_attr_timesizes(inode); + if (!(args->mvdown.flags & AUFS_MVDOWN_KUPPER)) + au_cpup_igen(inode, au_h_iptr(inode, args->mvd_bdst)); + /* au_digen_dec(dentry); */ + +out_parent: + di_write_unlock(args->parent); + aufs_read_unlock(dentry, AuLock_DW); +out_inode: + mutex_unlock(&inode->i_mutex); +out_dir: + mutex_unlock(&args->dir->i_mutex); +out_free: + e = copy_to_user(uarg, &args->mvdown, sizeof(args->mvdown)); + if (unlikely(e)) + err = -EFAULT; + kfree(args); +out: + AuTraceErr(err); + return err; +} --- linux-4.4.0.orig/fs/aufs/opts.c +++ linux-4.4.0/fs/aufs/opts.c @@ -0,0 +1,1859 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#include +#include /* a distribution requires */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +enum { + Opt_br, + Opt_add, Opt_del, Opt_mod, Opt_append, Opt_prepend, + Opt_idel, Opt_imod, + Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, + Opt_rdblk_def, Opt_rdhash_def, + Opt_xino, Opt_noxino, + Opt_trunc_xino, Opt_trunc_xino_v, Opt_notrunc_xino, + Opt_trunc_xino_path, Opt_itrunc_xino, + Opt_trunc_xib, Opt_notrunc_xib, + Opt_shwh, Opt_noshwh, + Opt_plink, Opt_noplink, Opt_list_plink, + Opt_udba, + Opt_dio, Opt_nodio, + Opt_diropq_a, Opt_diropq_w, + Opt_warn_perm, Opt_nowarn_perm, + Opt_wbr_copyup, Opt_wbr_create, + Opt_fhsm_sec, + Opt_verbose, Opt_noverbose, + Opt_sum, Opt_nosum, Opt_wsum, + Opt_dirperm1, Opt_nodirperm1, + Opt_acl, Opt_noacl, + Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err +}; + +static match_table_t options = { + {Opt_br, "br=%s"}, + {Opt_br, "br:%s"}, + + {Opt_add, "add=%d:%s"}, + {Opt_add, "add:%d:%s"}, + {Opt_add, "ins=%d:%s"}, + {Opt_add, "ins:%d:%s"}, + {Opt_append, "append=%s"}, + {Opt_append, "append:%s"}, + {Opt_prepend, "prepend=%s"}, + {Opt_prepend, "prepend:%s"}, + + {Opt_del, "del=%s"}, + {Opt_del, "del:%s"}, + /* {Opt_idel, "idel:%d"}, */ + {Opt_mod, "mod=%s"}, + {Opt_mod, "mod:%s"}, + /* {Opt_imod, "imod:%d:%s"}, */ + + {Opt_dirwh, "dirwh=%d"}, + + {Opt_xino, "xino=%s"}, + {Opt_noxino, "noxino"}, + {Opt_trunc_xino, "trunc_xino"}, + {Opt_trunc_xino_v, "trunc_xino_v=%d:%d"}, + {Opt_notrunc_xino, "notrunc_xino"}, + {Opt_trunc_xino_path, "trunc_xino=%s"}, + {Opt_itrunc_xino, "itrunc_xino=%d"}, + /* {Opt_zxino, "zxino=%s"}, */ + {Opt_trunc_xib, "trunc_xib"}, + {Opt_notrunc_xib, "notrunc_xib"}, + +#ifdef CONFIG_PROC_FS + {Opt_plink, "plink"}, +#else + {Opt_ignore_silent, "plink"}, +#endif + + {Opt_noplink, "noplink"}, + +#ifdef CONFIG_AUFS_DEBUG + {Opt_list_plink, "list_plink"}, +#endif + + {Opt_udba, "udba=%s"}, + + {Opt_dio, "dio"}, + {Opt_nodio, "nodio"}, + +#ifdef CONFIG_AUFS_FHSM + {Opt_fhsm_sec, "fhsm_sec=%d"}, +#else + {Opt_ignore_silent, "fhsm_sec=%d"}, +#endif + + {Opt_diropq_a, "diropq=always"}, + {Opt_diropq_a, "diropq=a"}, + {Opt_diropq_w, "diropq=whiteouted"}, + {Opt_diropq_w, "diropq=w"}, + + {Opt_warn_perm, "warn_perm"}, + {Opt_nowarn_perm, "nowarn_perm"}, + + /* keep them temporary */ + {Opt_ignore_silent, "nodlgt"}, + {Opt_ignore_silent, "clean_plink"}, + +#ifdef CONFIG_AUFS_SHWH + {Opt_shwh, "shwh"}, +#endif + {Opt_noshwh, "noshwh"}, + + {Opt_dirperm1, "dirperm1"}, + {Opt_nodirperm1, "nodirperm1"}, + + {Opt_verbose, "verbose"}, + {Opt_verbose, "v"}, + {Opt_noverbose, "noverbose"}, + {Opt_noverbose, "quiet"}, + {Opt_noverbose, "q"}, + {Opt_noverbose, "silent"}, + + {Opt_sum, "sum"}, + {Opt_nosum, "nosum"}, + {Opt_wsum, "wsum"}, + + {Opt_rdcache, "rdcache=%d"}, + {Opt_rdblk, "rdblk=%d"}, + {Opt_rdblk_def, "rdblk=def"}, + {Opt_rdhash, "rdhash=%d"}, + {Opt_rdhash_def, "rdhash=def"}, + + {Opt_wbr_create, "create=%s"}, + {Opt_wbr_create, "create_policy=%s"}, + {Opt_wbr_copyup, "cpup=%s"}, + {Opt_wbr_copyup, "copyup=%s"}, + {Opt_wbr_copyup, "copyup_policy=%s"}, + + /* generic VFS flag */ +#ifdef CONFIG_FS_POSIX_ACL + {Opt_acl, "acl"}, + {Opt_noacl, "noacl"}, +#else + {Opt_ignore_silent, "acl"}, + {Opt_ignore_silent, "noacl"}, +#endif + + /* internal use for the scripts */ + {Opt_ignore_silent, "si=%s"}, + + {Opt_br, "dirs=%s"}, + {Opt_ignore, "debug=%d"}, + {Opt_ignore, "delete=whiteout"}, + {Opt_ignore, "delete=all"}, + {Opt_ignore, "imap=%s"}, + + /* temporary workaround, due to old mount(8)? */ + {Opt_ignore_silent, "relatime"}, + + {Opt_err, NULL} +}; + +/* ---------------------------------------------------------------------- */ + +static const char *au_parser_pattern(int val, match_table_t tbl) +{ + struct match_token *p; + + p = tbl; + while (p->pattern) { + if (p->token == val) + return p->pattern; + p++; + } + BUG(); + return "??"; +} + +static const char *au_optstr(int *val, match_table_t tbl) +{ + struct match_token *p; + int v; + + v = *val; + if (!v) + goto out; + p = tbl; + while (p->pattern) { + if (p->token + && (v & p->token) == p->token) { + *val &= ~p->token; + return p->pattern; + } + p++; + } + +out: + return NULL; +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t brperm = { + {AuBrPerm_RO, AUFS_BRPERM_RO}, + {AuBrPerm_RR, AUFS_BRPERM_RR}, + {AuBrPerm_RW, AUFS_BRPERM_RW}, + {0, NULL} +}; + +static match_table_t brattr = { + /* general */ + {AuBrAttr_COO_REG, AUFS_BRATTR_COO_REG}, + {AuBrAttr_COO_ALL, AUFS_BRATTR_COO_ALL}, + /* 'unpin' attrib is meaningless since linux-3.18-rc1 */ + {AuBrAttr_UNPIN, AUFS_BRATTR_UNPIN}, +#ifdef CONFIG_AUFS_FHSM + {AuBrAttr_FHSM, AUFS_BRATTR_FHSM}, +#endif +#ifdef CONFIG_AUFS_XATTR + {AuBrAttr_ICEX, AUFS_BRATTR_ICEX}, + {AuBrAttr_ICEX_SEC, AUFS_BRATTR_ICEX_SEC}, + {AuBrAttr_ICEX_SYS, AUFS_BRATTR_ICEX_SYS}, + {AuBrAttr_ICEX_TR, AUFS_BRATTR_ICEX_TR}, + {AuBrAttr_ICEX_USR, AUFS_BRATTR_ICEX_USR}, + {AuBrAttr_ICEX_OTH, AUFS_BRATTR_ICEX_OTH}, +#endif + + /* ro/rr branch */ + {AuBrRAttr_WH, AUFS_BRRATTR_WH}, + + /* rw branch */ + {AuBrWAttr_MOO, AUFS_BRWATTR_MOO}, + {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, + + {0, NULL} +}; + +static int br_attr_val(char *str, match_table_t table, substring_t args[]) +{ + int attr, v; + char *p; + + attr = 0; + do { + p = strchr(str, '+'); + if (p) + *p = 0; + v = match_token(str, table, args); + if (v) { + if (v & AuBrAttr_CMOO_Mask) + attr &= ~AuBrAttr_CMOO_Mask; + attr |= v; + } else { + if (p) + *p = '+'; + pr_warn("ignored branch attribute %s\n", str); + break; + } + if (p) + str = p + 1; + } while (p); + + return attr; +} + +static int au_do_optstr_br_attr(au_br_perm_str_t *str, int perm) +{ + int sz; + const char *p; + char *q; + + q = str->a; + *q = 0; + p = au_optstr(&perm, brattr); + if (p) { + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } else + goto out; + + do { + p = au_optstr(&perm, brattr); + if (p) { + *q++ = '+'; + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } + } while (p); + +out: + return q - str->a; +} + +static int noinline_for_stack br_perm_val(char *perm) +{ + int val, bad, sz; + char *p; + substring_t args[MAX_OPT_ARGS]; + au_br_perm_str_t attr; + + p = strchr(perm, '+'); + if (p) + *p = 0; + val = match_token(perm, brperm, args); + if (!val) { + if (p) + *p = '+'; + pr_warn("ignored branch permission %s\n", perm); + val = AuBrPerm_RO; + goto out; + } + if (!p) + goto out; + + val |= br_attr_val(p + 1, brattr, args); + + bad = 0; + switch (val & AuBrPerm_Mask) { + case AuBrPerm_RO: + case AuBrPerm_RR: + bad = val & AuBrWAttr_Mask; + val &= ~AuBrWAttr_Mask; + break; + case AuBrPerm_RW: + bad = val & AuBrRAttr_Mask; + val &= ~AuBrRAttr_Mask; + break; + } + + /* + * 'unpin' attrib becomes meaningless since linux-3.18-rc1, but aufs + * does not treat it as an error, just warning. + * this is a tiny guard for the user operation. + */ + if (val & AuBrAttr_UNPIN) { + bad |= AuBrAttr_UNPIN; + val &= ~AuBrAttr_UNPIN; + } + + if (unlikely(bad)) { + sz = au_do_optstr_br_attr(&attr, bad); + AuDebugOn(!sz); + pr_warn("ignored branch attribute %s\n", attr.a); + } + +out: + return val; +} + +void au_optstr_br_perm(au_br_perm_str_t *str, int perm) +{ + au_br_perm_str_t attr; + const char *p; + char *q; + int sz; + + q = str->a; + p = au_optstr(&perm, brperm); + AuDebugOn(!p || !*p); + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + + sz = au_do_optstr_br_attr(&attr, perm); + if (sz) { + *q++ = '+'; + memcpy(q, attr.a, sz + 1); + } + + AuDebugOn(strlen(str->a) >= sizeof(str->a)); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t udbalevel = { + {AuOpt_UDBA_REVAL, "reval"}, + {AuOpt_UDBA_NONE, "none"}, +#ifdef CONFIG_AUFS_HNOTIFY + {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ +#ifdef CONFIG_AUFS_HFSNOTIFY + {AuOpt_UDBA_HNOTIFY, "fsnotify"}, +#endif +#endif + {-1, NULL} +}; + +static int noinline_for_stack udba_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, udbalevel, args); +} + +const char *au_optstr_udba(int udba) +{ + return au_parser_pattern(udba, udbalevel); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t au_wbr_create_policy = { + {AuWbrCreate_TDP, "tdp"}, + {AuWbrCreate_TDP, "top-down-parent"}, + {AuWbrCreate_RR, "rr"}, + {AuWbrCreate_RR, "round-robin"}, + {AuWbrCreate_MFS, "mfs"}, + {AuWbrCreate_MFS, "most-free-space"}, + {AuWbrCreate_MFSV, "mfs:%d"}, + {AuWbrCreate_MFSV, "most-free-space:%d"}, + + {AuWbrCreate_MFSRR, "mfsrr:%d"}, + {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, + {AuWbrCreate_PMFS, "pmfs"}, + {AuWbrCreate_PMFSV, "pmfs:%d"}, + {AuWbrCreate_PMFSRR, "pmfsrr:%d"}, + {AuWbrCreate_PMFSRRV, "pmfsrr:%d:%d"}, + + {-1, NULL} +}; + +/* + * cf. linux/lib/parser.c and cmdline.c + * gave up calling memparse() since it uses simple_strtoull() instead of + * kstrto...(). + */ +static int noinline_for_stack +au_match_ull(substring_t *s, unsigned long long *result) +{ + int err; + unsigned int len; + char a[32]; + + err = -ERANGE; + len = s->to - s->from; + if (len + 1 <= sizeof(a)) { + memcpy(a, s->from, len); + a[len] = '\0'; + err = kstrtoull(a, 0, result); + } + return err; +} + +static int au_wbr_mfs_wmark(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int err; + unsigned long long ull; + + err = 0; + if (!au_match_ull(arg, &ull)) + create->mfsrr_watermark = ull; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int au_wbr_mfs_sec(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int n, err; + + err = 0; + if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) + create->mfs_second = n; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int noinline_for_stack +au_wbr_create_val(char *str, struct au_opt_wbr_create *create) +{ + int err, e; + substring_t args[MAX_OPT_ARGS]; + + err = match_token(str, au_wbr_create_policy, args); + create->wbr_create = err; + switch (err) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_PMFSRRV: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (!e) + e = au_wbr_mfs_sec(&args[1], str, create); + if (unlikely(e)) + err = e; + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_PMFSRR: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (unlikely(e)) { + err = e; + break; + } + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + create->mfs_second = AUFS_MFS_DEF_SEC; + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + e = au_wbr_mfs_sec(&args[0], str, create); + if (unlikely(e)) + err = e; + break; + } + + return err; +} + +const char *au_optstr_wbr_create(int wbr_create) +{ + return au_parser_pattern(wbr_create, au_wbr_create_policy); +} + +static match_table_t au_wbr_copyup_policy = { + {AuWbrCopyup_TDP, "tdp"}, + {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_BUP, "bup"}, + {AuWbrCopyup_BUP, "bottom-up-parent"}, + {AuWbrCopyup_BU, "bu"}, + {AuWbrCopyup_BU, "bottom-up"}, + {-1, NULL} +}; + +static int noinline_for_stack au_wbr_copyup_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, au_wbr_copyup_policy, args); +} + +const char *au_optstr_wbr_copyup(int wbr_copyup) +{ + return au_parser_pattern(wbr_copyup, au_wbr_copyup_policy); +} + +/* ---------------------------------------------------------------------- */ + +static const int lkup_dirflags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; + +static void dump_opts(struct au_opts *opts) +{ +#ifdef CONFIG_AUFS_DEBUG + /* reduce stack space */ + union { + struct au_opt_add *add; + struct au_opt_del *del; + struct au_opt_mod *mod; + struct au_opt_xino *xino; + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + u.add = &opt->add; + AuDbg("add {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_del: + case Opt_idel: + u.del = &opt->del; + AuDbg("del {%s, %p}\n", + u.del->pathname, u.del->h_path.dentry); + break; + case Opt_mod: + case Opt_imod: + u.mod = &opt->mod; + AuDbg("mod {%s, 0x%x, %p}\n", + u.mod->path, u.mod->perm, u.mod->h_root); + break; + case Opt_append: + u.add = &opt->add; + AuDbg("append {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_prepend: + u.add = &opt->add; + AuDbg("prepend {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_dirwh: + AuDbg("dirwh %d\n", opt->dirwh); + break; + case Opt_rdcache: + AuDbg("rdcache %d\n", opt->rdcache); + break; + case Opt_rdblk: + AuDbg("rdblk %u\n", opt->rdblk); + break; + case Opt_rdblk_def: + AuDbg("rdblk_def\n"); + break; + case Opt_rdhash: + AuDbg("rdhash %u\n", opt->rdhash); + break; + case Opt_rdhash_def: + AuDbg("rdhash_def\n"); + break; + case Opt_xino: + u.xino = &opt->xino; + AuDbg("xino {%s %pD}\n", u.xino->path, u.xino->file); + break; + case Opt_trunc_xino: + AuLabel(trunc_xino); + break; + case Opt_notrunc_xino: + AuLabel(notrunc_xino); + break; + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); + break; + case Opt_noxino: + AuLabel(noxino); + break; + case Opt_trunc_xib: + AuLabel(trunc_xib); + break; + case Opt_notrunc_xib: + AuLabel(notrunc_xib); + break; + case Opt_shwh: + AuLabel(shwh); + break; + case Opt_noshwh: + AuLabel(noshwh); + break; + case Opt_dirperm1: + AuLabel(dirperm1); + break; + case Opt_nodirperm1: + AuLabel(nodirperm1); + break; + case Opt_plink: + AuLabel(plink); + break; + case Opt_noplink: + AuLabel(noplink); + break; + case Opt_list_plink: + AuLabel(list_plink); + break; + case Opt_udba: + AuDbg("udba %d, %s\n", + opt->udba, au_optstr_udba(opt->udba)); + break; + case Opt_dio: + AuLabel(dio); + break; + case Opt_nodio: + AuLabel(nodio); + break; + case Opt_diropq_a: + AuLabel(diropq_a); + break; + case Opt_diropq_w: + AuLabel(diropq_w); + break; + case Opt_warn_perm: + AuLabel(warn_perm); + break; + case Opt_nowarn_perm: + AuLabel(nowarn_perm); + break; + case Opt_verbose: + AuLabel(verbose); + break; + case Opt_noverbose: + AuLabel(noverbose); + break; + case Opt_sum: + AuLabel(sum); + break; + case Opt_nosum: + AuLabel(nosum); + break; + case Opt_wsum: + AuLabel(wsum); + break; + case Opt_wbr_create: + u.create = &opt->wbr_create; + AuDbg("create %d, %s\n", u.create->wbr_create, + au_optstr_wbr_create(u.create->wbr_create)); + switch (u.create->wbr_create) { + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + AuDbg("%d sec\n", u.create->mfs_second); + break; + case AuWbrCreate_MFSRR: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + case AuWbrCreate_PMFSRRV: + AuDbg("%llu watermark, %d sec\n", + u.create->mfsrr_watermark, + u.create->mfs_second); + break; + } + break; + case Opt_wbr_copyup: + AuDbg("copyup %d, %s\n", opt->wbr_copyup, + au_optstr_wbr_copyup(opt->wbr_copyup)); + break; + case Opt_fhsm_sec: + AuDbg("fhsm_sec %u\n", opt->fhsm_second); + break; + case Opt_acl: + AuLabel(acl); + break; + case Opt_noacl: + AuLabel(noacl); + break; + default: + BUG(); + } + opt++; + } +#endif +} + +void au_opts_free(struct au_opts *opts) +{ + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + case Opt_append: + case Opt_prepend: + path_put(&opt->add.path); + break; + case Opt_del: + case Opt_idel: + path_put(&opt->del.h_path); + break; + case Opt_mod: + case Opt_imod: + dput(opt->mod.h_root); + break; + case Opt_xino: + fput(opt->xino.file); + break; + } + opt++; + } +} + +static int opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, + aufs_bindex_t bindex) +{ + int err; + struct au_opt_add *add = &opt->add; + char *p; + + add->bindex = bindex; + add->perm = AuBrPerm_RO; + add->pathname = opt_str; + p = strchr(opt_str, '='); + if (p) { + *p++ = 0; + if (*p) + add->perm = br_perm_val(p); + } + + err = vfsub_kern_path(add->pathname, lkup_dirflags, &add->path); + if (!err) { + if (!p) { + add->perm = AuBrPerm_RO; + if (au_test_fs_rr(add->path.dentry->d_sb)) + add->perm = AuBrPerm_RR; + else if (!bindex && !(sb_flags & MS_RDONLY)) + add->perm = AuBrPerm_RW; + } + opt->type = Opt_add; + goto out; + } + pr_err("lookup failed %s (%d)\n", add->pathname, err); + err = -EINVAL; + +out: + return err; +} + +static int au_opts_parse_del(struct au_opt_del *del, substring_t args[]) +{ + int err; + + del->pathname = args[0].from; + AuDbg("del path %s\n", del->pathname); + + err = vfsub_kern_path(del->pathname, lkup_dirflags, &del->h_path); + if (unlikely(err)) + pr_err("lookup failed %s (%d)\n", del->pathname, err); + + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_idel(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_del *del, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + del->h_path.dentry = dget(au_h_dptr(root, bindex)); + del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int noinline_for_stack +au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct path path; + char *p; + + err = -EINVAL; + mod->path = args[0].from; + p = strchr(mod->path, '='); + if (unlikely(!p)) { + pr_err("no permssion %s\n", args[0].from); + goto out; + } + + *p++ = 0; + err = vfsub_kern_path(mod->path, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", mod->path, err); + goto out; + } + + mod->perm = br_perm_val(p); + AuDbg("mod path %s, perm 0x%x, %s\n", mod->path, mod->perm, p); + mod->h_root = dget(path.dentry); + path_put(&path); + +out: + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_imod(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + mod->perm = br_perm_val(args[1].from); + AuDbg("mod path %s, perm 0x%x, %s\n", + mod->path, mod->perm, args[1].from); + mod->h_root = dget(au_h_dptr(root, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino, + substring_t args[]) +{ + int err; + struct file *file; + + file = au_xino_create(sb, args[0].from, /*silent*/0); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + + err = -EINVAL; + if (unlikely(file->f_path.dentry->d_sb == sb)) { + fput(file); + pr_err("%s must be outside\n", args[0].from); + goto out; + } + + err = 0; + xino->file = file; + xino->path = args[0].from; + +out: + return err; +} + +static int noinline_for_stack +au_opts_parse_xino_itrunc_path(struct super_block *sb, + struct au_opt_xino_itrunc *xino_itrunc, + substring_t args[]) +{ + int err; + aufs_bindex_t bend, bindex; + struct path path; + struct dentry *root; + + err = vfsub_kern_path(args[0].from, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", args[0].from, err); + goto out; + } + + xino_itrunc->bindex = -1; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + if (au_h_dptr(root, bindex) == path.dentry) { + xino_itrunc->bindex = bindex; + break; + } + } + aufs_read_unlock(root, !AuLock_IR); + path_put(&path); + + if (unlikely(xino_itrunc->bindex < 0)) { + pr_err("no such branch %s\n", args[0].from); + err = -EINVAL; + } + +out: + return err; +} + +/* called without aufs lock */ +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts) +{ + int err, n, token; + aufs_bindex_t bindex; + unsigned char skipped; + struct dentry *root; + struct au_opt *opt, *opt_tail; + char *opt_str; + /* reduce the stack space */ + union { + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct { + substring_t args[MAX_OPT_ARGS]; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + root = sb->s_root; + err = 0; + bindex = 0; + opt = opts->opt; + opt_tail = opt + opts->max_opt - 1; + opt->type = Opt_tail; + while (!err && (opt_str = strsep(&str, ",")) && *opt_str) { + err = -EINVAL; + skipped = 0; + token = match_token(opt_str, options, a->args); + switch (token) { + case Opt_br: + err = 0; + while (!err && (opt_str = strsep(&a->args[0].from, ":")) + && *opt_str) { + err = opt_add(opt, opt_str, opts->sb_flags, + bindex++); + if (unlikely(!err && ++opt > opt_tail)) { + err = -E2BIG; + break; + } + opt->type = Opt_tail; + skipped = 1; + } + break; + case Opt_add: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + bindex = n; + err = opt_add(opt, a->args[1].from, opts->sb_flags, + bindex); + if (!err) + opt->type = token; + break; + case Opt_append: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*dummy bindex*/1); + if (!err) + opt->type = token; + break; + case Opt_prepend: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*bindex*/0); + if (!err) + opt->type = token; + break; + case Opt_del: + err = au_opts_parse_del(&opt->del, a->args); + if (!err) + opt->type = token; + break; +#if 0 /* reserved for future use */ + case Opt_idel: + del->pathname = "(indexed)"; + if (unlikely(match_int(&args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_idel(sb, n, &opt->del, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_mod: + err = au_opts_parse_mod(&opt->mod, a->args); + if (!err) + opt->type = token; + break; +#ifdef IMOD /* reserved for future use */ + case Opt_imod: + u.mod->path = "(indexed)"; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_imod(sb, n, &opt->mod, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_xino: + err = au_opts_parse_xino(sb, &opt->xino, a->args); + if (!err) + opt->type = token; + break; + + case Opt_trunc_xino_path: + err = au_opts_parse_xino_itrunc_path + (sb, &opt->xino_itrunc, a->args); + if (!err) + opt->type = token; + break; + + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + u.xino_itrunc->bindex = n; + aufs_read_lock(root, AuLock_FLUSH); + if (n < 0 || au_sbend(sb) < n) { + pr_err("out of bounds, %d\n", n); + aufs_read_unlock(root, !AuLock_IR); + break; + } + aufs_read_unlock(root, !AuLock_IR); + err = 0; + opt->type = token; + break; + + case Opt_dirwh: + if (unlikely(match_int(&a->args[0], &opt->dirwh))) + break; + err = 0; + opt->type = token; + break; + + case Opt_rdcache: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n > AUFS_RDCACHE_MAX)) { + pr_err("rdcache must be smaller than %d\n", + AUFS_RDCACHE_MAX); + break; + } + opt->rdcache = n; + err = 0; + opt->type = token; + break; + case Opt_rdblk: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n && n < NAME_MAX)) { + pr_err("rdblk must be larger than %d\n", + NAME_MAX); + break; + } + opt->rdblk = n; + err = 0; + opt->type = token; + break; + case Opt_rdhash: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n * sizeof(struct hlist_head) + > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + opt->rdhash = n; + err = 0; + opt->type = token; + break; + + case Opt_trunc_xino: + case Opt_notrunc_xino: + case Opt_noxino: + case Opt_trunc_xib: + case Opt_notrunc_xib: + case Opt_shwh: + case Opt_noshwh: + case Opt_dirperm1: + case Opt_nodirperm1: + case Opt_plink: + case Opt_noplink: + case Opt_list_plink: + case Opt_dio: + case Opt_nodio: + case Opt_diropq_a: + case Opt_diropq_w: + case Opt_warn_perm: + case Opt_nowarn_perm: + case Opt_verbose: + case Opt_noverbose: + case Opt_sum: + case Opt_nosum: + case Opt_wsum: + case Opt_rdblk_def: + case Opt_rdhash_def: + case Opt_acl: + case Opt_noacl: + err = 0; + opt->type = token; + break; + + case Opt_udba: + opt->udba = udba_val(a->args[0].from); + if (opt->udba >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_wbr_create: + u.create = &opt->wbr_create; + u.create->wbr_create + = au_wbr_create_val(a->args[0].from, u.create); + if (u.create->wbr_create >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + case Opt_wbr_copyup: + opt->wbr_copyup = au_wbr_copyup_val(a->args[0].from); + if (opt->wbr_copyup >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_fhsm_sec: + if (unlikely(match_int(&a->args[0], &n) + || n < 0)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (sysaufs_brs) { + opt->fhsm_second = n; + opt->type = token; + } else + pr_warn("ignored %s\n", opt_str); + err = 0; + break; + + case Opt_ignore: + pr_warn("ignored %s\n", opt_str); + /*FALLTHROUGH*/ + case Opt_ignore_silent: + skipped = 1; + err = 0; + break; + case Opt_err: + pr_err("unknown option %s\n", opt_str); + break; + } + + if (!err && !skipped) { + if (unlikely(++opt > opt_tail)) { + err = -E2BIG; + opt--; + opt->type = Opt_tail; + break; + } + opt->type = Opt_tail; + } + } + + kfree(a); + dump_opts(opts); + if (unlikely(err)) + au_opts_free(opts); + +out: + return err; +} + +static int au_opt_wbr_create(struct super_block *sb, + struct au_opt_wbr_create *create) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + if (sbinfo->si_wbr_create_ops->fin) { + err = sbinfo->si_wbr_create_ops->fin(sb); + if (!err) + err = 1; + } + + sbinfo->si_wbr_create = create->wbr_create; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; + switch (create->wbr_create) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_MFSRR: + case AuWbrCreate_PMFSRR: + case AuWbrCreate_PMFSRRV: + sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFS: + case AuWbrCreate_PMFSV: + sbinfo->si_wbr_mfs.mfs_expire + = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); + break; + } + + if (sbinfo->si_wbr_create_ops->init) + sbinfo->si_wbr_create_ops->init(sb); /* ignore */ + + return err; +} + +/* + * returns, + * plus: processed without an error + * zero: unprocessed + */ +static int au_opt_simple(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + switch (opt->type) { + case Opt_udba: + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= opt->udba; + opts->given_udba |= opt->udba; + break; + + case Opt_plink: + au_opt_set(sbinfo->si_mntflags, PLINK); + break; + case Opt_noplink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_opt_clr(sbinfo->si_mntflags, PLINK); + break; + case Opt_list_plink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_list(sb); + break; + + case Opt_dio: + au_opt_set(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + case Opt_nodio: + au_opt_clr(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + + case Opt_fhsm_sec: + au_fhsm_set(sbinfo, opt->fhsm_second); + break; + + case Opt_diropq_a: + au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + case Opt_diropq_w: + au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + + case Opt_warn_perm: + au_opt_set(sbinfo->si_mntflags, WARN_PERM); + break; + case Opt_nowarn_perm: + au_opt_clr(sbinfo->si_mntflags, WARN_PERM); + break; + + case Opt_verbose: + au_opt_set(sbinfo->si_mntflags, VERBOSE); + break; + case Opt_noverbose: + au_opt_clr(sbinfo->si_mntflags, VERBOSE); + break; + + case Opt_sum: + au_opt_set(sbinfo->si_mntflags, SUM); + break; + case Opt_wsum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_set(sbinfo->si_mntflags, SUM_W); + case Opt_nosum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_clr(sbinfo->si_mntflags, SUM_W); + break; + + case Opt_wbr_create: + err = au_opt_wbr_create(sb, &opt->wbr_create); + break; + case Opt_wbr_copyup: + sbinfo->si_wbr_copyup = opt->wbr_copyup; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; + break; + + case Opt_dirwh: + sbinfo->si_dirwh = opt->dirwh; + break; + + case Opt_rdcache: + sbinfo->si_rdcache + = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); + break; + case Opt_rdblk: + sbinfo->si_rdblk = opt->rdblk; + break; + case Opt_rdblk_def: + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + break; + case Opt_rdhash: + sbinfo->si_rdhash = opt->rdhash; + break; + case Opt_rdhash_def: + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + break; + + case Opt_shwh: + au_opt_set(sbinfo->si_mntflags, SHWH); + break; + case Opt_noshwh: + au_opt_clr(sbinfo->si_mntflags, SHWH); + break; + + case Opt_dirperm1: + au_opt_set(sbinfo->si_mntflags, DIRPERM1); + break; + case Opt_nodirperm1: + au_opt_clr(sbinfo->si_mntflags, DIRPERM1); + break; + + case Opt_trunc_xino: + au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); + break; + case Opt_notrunc_xino: + au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); + break; + + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + err = au_xino_trunc(sb, opt->xino_itrunc.bindex); + if (!err) + err = 1; + break; + + case Opt_trunc_xib: + au_fset_opts(opts->flags, TRUNC_XIB); + break; + case Opt_notrunc_xib: + au_fclr_opts(opts->flags, TRUNC_XIB); + break; + + case Opt_acl: + sb->s_flags |= MS_POSIXACL; + break; + case Opt_noacl: + sb->s_flags &= ~MS_POSIXACL; + break; + + default: + err = 0; + break; + } + + return err; +} + +/* + * returns tri-state. + * plus: processed without an error + * zero: unprocessed + * minus: error + */ +static int au_opt_br(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err, do_refresh; + + err = 0; + switch (opt->type) { + case Opt_append: + opt->add.bindex = au_sbend(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + case Opt_prepend: + opt->add.bindex = 0; + add: /* indented label */ + case Opt_add: + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_del: + case Opt_idel: + err = au_br_del(sb, &opt->del, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, TRUNC_XIB); + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_mod: + case Opt_imod: + err = au_br_mod(sb, &opt->mod, + au_ftest_opts(opts->flags, REMOUNT), + &do_refresh); + if (!err) { + err = 1; + if (do_refresh) + au_fset_opts(opts->flags, REFRESH); + } + break; + } + + return err; +} + +static int au_opt_xino(struct super_block *sb, struct au_opt *opt, + struct au_opt_xino **opt_xino, + struct au_opts *opts) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root, *parent, *h_root; + + err = 0; + switch (opt->type) { + case Opt_xino: + err = au_xino_set(sb, &opt->xino, + !!au_ftest_opts(opts->flags, REMOUNT)); + if (unlikely(err)) + break; + + *opt_xino = &opt->xino; + au_xino_brid_set(sb, -1); + + /* safe d_parent access */ + parent = opt->xino.file->f_path.dentry->d_parent; + root = sb->s_root; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_root = au_h_dptr(root, bindex); + if (h_root == parent) { + au_xino_brid_set(sb, au_sbr_id(sb, bindex)); + break; + } + } + break; + + case Opt_noxino: + au_xino_clr(sb); + au_xino_brid_set(sb, -1); + *opt_xino = (void *)-1; + break; + } + + return err; +} + +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending) +{ + int err, fhsm; + aufs_bindex_t bindex, bend; + unsigned char do_plink, skip, do_free, can_no_dreval; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root, *dentry; + struct inode *dir, *h_dir; + struct au_sbinfo *sbinfo; + struct au_hinode *hdir; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); + + if (!(sb_flags & MS_RDONLY)) { + if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) + pr_warn("first branch should be rw\n"); + if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) + pr_warn("shwh should be used with ro\n"); + } + + if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) + && !au_opt_test(sbinfo->si_mntflags, XINO)) + pr_warn("udba=*notify requires xino\n"); + + if (au_opt_test(sbinfo->si_mntflags, DIRPERM1)) + pr_warn("dirperm1 breaks the protection" + " by the permission bits on the lower branch\n"); + + err = 0; + fhsm = 0; + root = sb->s_root; + dir = d_inode(root); + do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); + can_no_dreval = !!au_opt_test((sbinfo->si_mntflags | pending), + UDBA_NONE); + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) { + skip = 0; + h_dir = au_h_iptr(dir, bindex); + br = au_sbr(sb, bindex); + + if ((br->br_perm & AuBrAttr_ICEX) + && !h_dir->i_op->listxattr) + br->br_perm &= ~AuBrAttr_ICEX; +#if 0 + if ((br->br_perm & AuBrAttr_ICEX_SEC) + && (au_br_sb(br)->s_flags & MS_NOSEC)) + br->br_perm &= ~AuBrAttr_ICEX_SEC; +#endif + + do_free = 0; + wbr = br->br_wbr; + if (wbr) + wbr_wh_read_lock(wbr); + + if (!au_br_writable(br->br_perm)) { + do_free = !!wbr; + skip = (!wbr + || (!wbr->wbr_whbase + && !wbr->wbr_plink + && !wbr->wbr_orph)); + } else if (!au_br_wh_linkable(br->br_perm)) { + /* skip = (!br->br_whbase && !br->br_orph); */ + skip = (!wbr || !wbr->wbr_whbase); + if (skip && wbr) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } else { + /* skip = (br->br_whbase && br->br_ohph); */ + skip = (wbr && wbr->wbr_whbase); + if (skip) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } + if (wbr) + wbr_wh_read_unlock(wbr); + + if (can_no_dreval) { + dentry = br->br_path.dentry; + spin_lock(&dentry->d_lock); + if (dentry->d_flags & + (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)) + can_no_dreval = 0; + spin_unlock(&dentry->d_lock); + } + + if (au_br_fhsm(br->br_perm)) { + fhsm++; + AuDebugOn(!br->br_fhsm); + } + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + if (wbr) + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + if (wbr) + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + + if (!err && do_free) { + kfree(wbr); + br->br_wbr = NULL; + } + } + + if (can_no_dreval) + au_fset_si(sbinfo, NO_DREVAL); + else + au_fclr_si(sbinfo, NO_DREVAL); + + if (fhsm >= 2) { + au_fset_si(sbinfo, FHSM); + for (bindex = bend; bindex >= 0; bindex--) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) { + au_fhsm_set_bottom(sb, bindex); + break; + } + } + } else { + au_fclr_si(sbinfo, FHSM); + au_fhsm_set_bottom(sb, -1); + } + + return err; +} + +int au_opts_mount(struct super_block *sb, struct au_opts *opts) +{ + int err; + unsigned int tmp; + aufs_bindex_t bindex, bend; + struct au_opt *opt; + struct au_opt_xino *opt_xino, xino; + struct au_sbinfo *sbinfo; + struct au_branch *br; + struct inode *dir; + + SiMustWriteLock(sb); + + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_simple(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + /* disable xino and udba temporary */ + sbinfo = au_sbi(sb); + tmp = sbinfo->si_mntflags; + au_opt_clr(sbinfo->si_mntflags, XINO); + au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); + + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_br(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + bend = au_sbend(sb); + if (unlikely(bend < 0)) { + err = -EINVAL; + pr_err("no branches\n"); + goto out; + } + + if (au_opt_test(tmp, XINO)) + au_opt_set(sbinfo->si_mntflags, XINO); + opt = opts->opt; + while (!err && opt->type != Opt_tail) + err = au_opt_xino(sb, opt++, &opt_xino, opts); + if (unlikely(err)) + goto out; + + err = au_opts_verify(sb, sb->s_flags, tmp); + if (unlikely(err)) + goto out; + + /* restore xino */ + if (au_opt_test(tmp, XINO) && !opt_xino) { + xino.file = au_xino_def(sb); + err = PTR_ERR(xino.file); + if (IS_ERR(xino.file)) + goto out; + + err = au_xino_set(sb, &xino, /*remount*/0); + fput(xino.file); + if (unlikely(err)) + goto out; + } + + /* restore udba */ + tmp &= AuOptMask_UDBA; + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= tmp; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(tmp, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + if (au_opt_test(tmp, UDBA_HNOTIFY)) { + dir = d_inode(sb->s_root); + au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); + } + +out: + return err; +} + +int au_opts_remount(struct super_block *sb, struct au_opts *opts) +{ + int err, rerr; + unsigned char no_dreval; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 0; + dir = d_inode(sb->s_root); + sbinfo = au_sbi(sb); + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) { + err = au_opt_simple(sb, opt, opts); + if (!err) + err = au_opt_br(sb, opt, opts); + if (!err) + err = au_opt_xino(sb, opt, &opt_xino, opts); + opt++; + } + if (err > 0) + err = 0; + AuTraceErr(err); + /* go on even err */ + + no_dreval = !!au_ftest_si(sbinfo, NO_DREVAL); + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + if (no_dreval != !!au_ftest_si(sbinfo, NO_DREVAL)) + au_fset_opts(opts->flags, REFRESH_IDOP); + + if (au_ftest_opts(opts->flags, TRUNC_XIB)) { + rerr = au_xib_trunc(sb); + if (unlikely(rerr && !err)) + err = rerr; + } + + /* will be handled by the caller */ + if (!au_ftest_opts(opts->flags, REFRESH) + && (opts->given_udba + || au_opt_test(sbinfo->si_mntflags, XINO) + || au_ftest_opts(opts->flags, REFRESH_IDOP) + )) + au_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- linux-4.4.0.orig/fs/aufs/opts.h +++ linux-4.4.0/fs/aufs/opts.h @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#ifndef __AUFS_OPTS_H__ +#define __AUFS_OPTS_H__ + +#ifdef __KERNEL__ + +#include + +struct file; +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* mount flags */ +#define AuOpt_XINO 1 /* external inode number bitmap + and translation table */ +#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ +#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ +#define AuOpt_UDBA_REVAL (1 << 3) +#define AuOpt_UDBA_HNOTIFY (1 << 4) +#define AuOpt_SHWH (1 << 5) /* show whiteout */ +#define AuOpt_PLINK (1 << 6) /* pseudo-link */ +#define AuOpt_DIRPERM1 (1 << 7) /* ignore the lower dir's perm + bits */ +#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ +#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ +#define AuOpt_SUM_W (1 << 11) /* unimplemented */ +#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ +#define AuOpt_VERBOSE (1 << 13) /* busy inode when del-branch */ +#define AuOpt_DIO (1 << 14) /* direct io */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 0 +#endif +#ifndef CONFIG_AUFS_SHWH +#undef AuOpt_SHWH +#define AuOpt_SHWH 0 +#endif + +#define AuOpt_Def (AuOpt_XINO \ + | AuOpt_UDBA_REVAL \ + | AuOpt_PLINK \ + /* | AuOpt_DIRPERM1 */ \ + | AuOpt_WARN_PERM) +#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ + | AuOpt_UDBA_REVAL \ + | AuOpt_UDBA_HNOTIFY) + +#define au_opt_test(flags, name) (flags & AuOpt_##name) +#define au_opt_set(flags, name) do { \ + BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_set_udba(flags, name) do { \ + (flags) &= ~AuOptMask_UDBA; \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_clr(flags, name) do { \ + ((flags) &= ~AuOpt_##name); \ +} while (0) + +static inline unsigned int au_opts_plink(unsigned int mntflags) +{ +#ifdef CONFIG_PROC_FS + return mntflags; +#else + return mntflags & ~AuOpt_PLINK; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* policies to select one among multiple writable branches */ +enum { + AuWbrCreate_TDP, /* top down parent */ + AuWbrCreate_RR, /* round robin */ + AuWbrCreate_MFS, /* most free space */ + AuWbrCreate_MFSV, /* mfs with seconds */ + AuWbrCreate_MFSRR, /* mfs then rr */ + AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ + AuWbrCreate_PMFS, /* parent and mfs */ + AuWbrCreate_PMFSV, /* parent and mfs with seconds */ + AuWbrCreate_PMFSRR, /* parent, mfs and round-robin */ + AuWbrCreate_PMFSRRV, /* plus seconds */ + + AuWbrCreate_Def = AuWbrCreate_TDP +}; + +enum { + AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_BUP, /* bottom up parent */ + AuWbrCopyup_BU, /* bottom up */ + + AuWbrCopyup_Def = AuWbrCopyup_TDP +}; + +/* ---------------------------------------------------------------------- */ + +struct au_opt_add { + aufs_bindex_t bindex; + char *pathname; + int perm; + struct path path; +}; + +struct au_opt_del { + char *pathname; + struct path h_path; +}; + +struct au_opt_mod { + char *path; + int perm; + struct dentry *h_root; +}; + +struct au_opt_xino { + char *path; + struct file *file; +}; + +struct au_opt_xino_itrunc { + aufs_bindex_t bindex; +}; + +struct au_opt_wbr_create { + int wbr_create; + int mfs_second; + unsigned long long mfsrr_watermark; +}; + +struct au_opt { + int type; + union { + struct au_opt_xino xino; + struct au_opt_xino_itrunc xino_itrunc; + struct au_opt_add add; + struct au_opt_del del; + struct au_opt_mod mod; + int dirwh; + int rdcache; + unsigned int rdblk; + unsigned int rdhash; + int udba; + struct au_opt_wbr_create wbr_create; + int wbr_copyup; + unsigned int fhsm_second; + }; +}; + +/* opts flags */ +#define AuOpts_REMOUNT 1 +#define AuOpts_REFRESH (1 << 1) +#define AuOpts_TRUNC_XIB (1 << 2) +#define AuOpts_REFRESH_DYAOP (1 << 3) +#define AuOpts_REFRESH_IDOP (1 << 4) +#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) +#define au_fset_opts(flags, name) \ + do { (flags) |= AuOpts_##name; } while (0) +#define au_fclr_opts(flags, name) \ + do { (flags) &= ~AuOpts_##name; } while (0) + +struct au_opts { + struct au_opt *opt; + int max_opt; + + unsigned int given_udba; + unsigned int flags; + unsigned long sb_flags; +}; + +/* ---------------------------------------------------------------------- */ + +/* opts.c */ +void au_optstr_br_perm(au_br_perm_str_t *str, int perm); +const char *au_optstr_udba(int udba); +const char *au_optstr_wbr_copyup(int wbr_copyup); +const char *au_optstr_wbr_create(int wbr_create); + +void au_opts_free(struct au_opts *opts); +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts); +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending); +int au_opts_mount(struct super_block *sb, struct au_opts *opts); +int au_opts_remount(struct super_block *sb, struct au_opts *opts); + +unsigned int au_opt_udba(struct super_block *sb); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ --- linux-4.4.0.orig/fs/aufs/plink.c +++ linux-4.4.0/fs/aufs/plink.c @@ -0,0 +1,528 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * pseudo-link + */ + +#include "aufs.h" + +/* + * the pseudo-link maintenance mode. + * during a user process maintains the pseudo-links, + * prohibit adding a new plink and branch manipulation. + * + * Flags + * NOPLM: + * For entry functions which will handle plink, and i_mutex is already held + * in VFS. + * They cannot wait and should return an error at once. + * Callers has to check the error. + * NOPLMW: + * For entry functions which will handle plink, but i_mutex is not held + * in VFS. + * They can wait the plink maintenance mode to finish. + * + * They behave like F_SETLK and F_SETLKW. + * If the caller never handle plink, then both flags are unnecessary. + */ + +int au_plink_maint(struct super_block *sb, int flags) +{ + int err; + pid_t pid, ppid; + struct au_sbinfo *sbi; + + SiMustAnyLock(sb); + + err = 0; + if (!au_opt_test(au_mntflags(sb), PLINK)) + goto out; + + sbi = au_sbi(sb); + pid = sbi->si_plink_maint_pid; + if (!pid || pid == current->pid) + goto out; + + /* todo: it highly depends upon /sbin/mount.aufs */ + rcu_read_lock(); + ppid = task_pid_vnr(rcu_dereference(current->real_parent)); + rcu_read_unlock(); + if (pid == ppid) + goto out; + + if (au_ftest_lock(flags, NOPLMW)) { + /* if there is no i_mutex lock in VFS, we don't need to wait */ + /* AuDebugOn(!lockdep_depth(current)); */ + while (sbi->si_plink_maint_pid) { + si_read_unlock(sb); + /* gave up wake_up_bit() */ + wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&sbi->si_nowait); + si_noflush_read_lock(sb); + } + } else if (au_ftest_lock(flags, NOPLM)) { + AuDbg("ppid %d, pid %d\n", ppid, pid); + err = -EAGAIN; + } + +out: + return err; +} + +void au_plink_maint_leave(struct au_sbinfo *sbinfo) +{ + spin_lock(&sbinfo->si_plink_maint_lock); + sbinfo->si_plink_maint_pid = 0; + spin_unlock(&sbinfo->si_plink_maint_lock); + wake_up_all(&sbinfo->si_plink_wq); +} + +int au_plink_maint_enter(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + err = 0; + sbinfo = au_sbi(sb); + /* make sure i am the only one in this fs */ + si_write_lock(sb, AuLock_FLUSH); + if (au_opt_test(au_mntflags(sb), PLINK)) { + spin_lock(&sbinfo->si_plink_maint_lock); + if (!sbinfo->si_plink_maint_pid) + sbinfo->si_plink_maint_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&sbinfo->si_plink_maint_lock); + } + si_write_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb) +{ + int i; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct pseudo_link *plink; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + for (i = 0; i < AuPlink_NHASH; i++) { + plink_hlist = &sbinfo->si_plink[i].head; + rcu_read_lock(); + hlist_for_each_entry_rcu(plink, plink_hlist, hlist) + AuDbg("%lu\n", plink->inode->i_ino); + rcu_read_unlock(); + } +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found, i; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct pseudo_link *plink; + + sbinfo = au_sbi(inode->i_sb); + AuRwMustAnyLock(&sbinfo->si_rwsem); + AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + found = 0; + i = au_plink_hash(inode->i_ino); + plink_hlist = &sbinfo->si_plink[i].head; + rcu_read_lock(); + hlist_for_each_entry_rcu(plink, plink_hlist, hlist) + if (plink->inode == inode) { + found = 1; + break; + } + rcu_read_unlock(); + return found; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generate a name for plink. + * the file will be stored under AUFS_WH_PLINKDIR. + */ +/* 20 is max digits length of ulong 64 */ +#define PLINK_NAME_LEN ((20 + 1) * 2) + +static int plink_name(char *name, int len, struct inode *inode, + aufs_bindex_t bindex) +{ + int rlen; + struct inode *h_inode; + + h_inode = au_h_iptr(inode, bindex); + rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); + return rlen; +} + +struct au_do_plink_lkup_args { + struct dentry **errp; + struct qstr *tgtname; + struct dentry *h_parent; + struct au_branch *br; +}; + +static struct dentry *au_do_plink_lkup(struct qstr *tgtname, + struct dentry *h_parent, + struct au_branch *br) +{ + struct dentry *h_dentry; + struct mutex *h_mtx; + + h_mtx = &d_inode(h_parent)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + h_dentry = vfsub_lkup_one(tgtname, h_parent); + mutex_unlock(h_mtx); + return h_dentry; +} + +static void au_call_do_plink_lkup(void *args) +{ + struct au_do_plink_lkup_args *a = args; + *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br); +} + +/* lookup the plink-ed @inode under the branch at @bindex */ +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) +{ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + int wkq_err; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + br = au_sbr(inode->i_sb, bindex); + h_parent = br->br_wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct au_do_plink_lkup_args args = { + .errp = &h_dentry, + .tgtname = &tgtname, + .h_parent = h_parent, + .br = br + }; + + wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); + if (unlikely(wkq_err)) + h_dentry = ERR_PTR(wkq_err); + } else + h_dentry = au_do_plink_lkup(&tgtname, h_parent, br); + + return h_dentry; +} + +/* create a pseudo-link */ +static int do_whplink(struct qstr *tgt, struct dentry *h_parent, + struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_CHILD2); +again: + h_path.dentry = vfsub_lkup_one(tgt, h_parent); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + /* wh.plink dir is not monitored */ + /* todo: is it really safe? */ + if (d_is_positive(h_path.dentry) + && d_inode(h_path.dentry) != d_inode(h_dentry)) { + delegated = NULL; + err = vfsub_unlink(h_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + dput(h_path.dentry); + h_path.dentry = NULL; + if (!err) + goto again; + } + if (!err && d_is_negative(h_path.dentry)) { + delegated = NULL; + err = vfsub_link(h_dentry, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_path.dentry); + +out: + mutex_unlock(&h_dir->i_mutex); + return err; +} + +struct do_whplink_args { + int *errp; + struct qstr *tgt; + struct dentry *h_parent; + struct dentry *h_dentry; + struct au_branch *br; +}; + +static void call_do_whplink(void *args) +{ + struct do_whplink_args *a = args; + *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br); +} + +static int whplink(struct dentry *h_dentry, struct inode *inode, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err, wkq_err; + struct au_wbr *wbr; + struct dentry *h_parent; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + wbr = au_sbr(inode->i_sb, bindex)->br_wbr; + h_parent = wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + /* always superio. */ + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct do_whplink_args args = { + .errp = &err, + .tgt = &tgtname, + .h_parent = h_parent, + .h_dentry = h_dentry, + .br = br + }; + wkq_err = au_wkq_wait(call_do_whplink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } else + err = do_whplink(&tgtname, h_parent, h_dentry, br); + + return err; +} + +/* free a single plink */ +static void do_put_plink(struct pseudo_link *plink, int do_del) +{ + if (do_del) + hlist_del(&plink->hlist); + iput(plink->inode); + kfree(plink); +} + +static void do_put_plink_rcu(struct rcu_head *rcu) +{ + struct pseudo_link *plink; + + plink = container_of(rcu, struct pseudo_link, rcu); + iput(plink->inode); + kfree(plink); +} + +/* + * create a new pseudo-link for @h_dentry on @bindex. + * the linked inode is held in aufs @inode. + */ +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct pseudo_link *plink, *tmp; + struct au_sphlhead *sphl; + int found, err, cnt, i; + + sb = inode->i_sb; + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + found = au_plink_test(inode); + if (found) + return; + + i = au_plink_hash(inode->i_ino); + sphl = sbinfo->si_plink + i; + plink_hlist = &sphl->head; + tmp = kmalloc(sizeof(*plink), GFP_NOFS); + if (tmp) + tmp->inode = au_igrab(inode); + else { + err = -ENOMEM; + goto out; + } + + spin_lock(&sphl->spin); + hlist_for_each_entry(plink, plink_hlist, hlist) { + if (plink->inode == inode) { + found = 1; + break; + } + } + if (!found) + hlist_add_head_rcu(&tmp->hlist, plink_hlist); + spin_unlock(&sphl->spin); + if (!found) { + cnt = au_sphl_count(sphl); +#define msg "unexpectedly unblanced or too many pseudo-links" + if (cnt > AUFS_PLINK_WARN) + AuWarn1(msg ", %d\n", cnt); +#undef msg + err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex)); + } else { + do_put_plink(tmp, 0); + return; + } + +out: + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + if (tmp) { + au_sphl_del_rcu(&tmp->hlist, sphl); + call_rcu(&tmp->rcu, do_put_plink_rcu); + } + } +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + int i, warned; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct hlist_node *tmp; + struct pseudo_link *plink; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no spin_lock since sbinfo is write-locked */ + warned = 0; + for (i = 0; i < AuPlink_NHASH; i++) { + plink_hlist = &sbinfo->si_plink[i].head; + if (!warned && verbose && !hlist_empty(plink_hlist)) { + pr_warn("pseudo-link is not flushed"); + warned = 1; + } + hlist_for_each_entry_safe(plink, tmp, plink_hlist, hlist) + do_put_plink(plink, 0); + INIT_HLIST_HEAD(plink_hlist); + } +} + +void au_plink_clean(struct super_block *sb, int verbose) +{ + struct dentry *root; + + root = sb->s_root; + aufs_write_lock(root); + if (au_opt_test(au_mntflags(sb), PLINK)) + au_plink_put(sb, verbose); + aufs_write_unlock(root); +} + +static int au_plink_do_half_refresh(struct inode *inode, aufs_bindex_t br_id) +{ + int do_put; + aufs_bindex_t bstart, bend, bindex; + + do_put = 0; + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart >= 0) { + for (bindex = bstart; bindex <= bend; bindex++) { + if (!au_h_iptr(inode, bindex) + || au_ii_br_id(inode, bindex) != br_id) + continue; + au_set_h_iptr(inode, bindex, NULL, 0); + do_put = 1; + break; + } + if (do_put) + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex)) { + do_put = 0; + break; + } + } else + do_put = 1; + + return do_put; +} + +/* free the plinks on a branch specified by @br_id */ +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) +{ + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct hlist_node *tmp; + struct pseudo_link *plink; + struct inode *inode; + int i, do_put; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no spin_lock since sbinfo is write-locked */ + for (i = 0; i < AuPlink_NHASH; i++) { + plink_hlist = &sbinfo->si_plink[i].head; + hlist_for_each_entry_safe(plink, tmp, plink_hlist, hlist) { + inode = au_igrab(plink->inode); + ii_write_lock_child(inode); + do_put = au_plink_do_half_refresh(inode, br_id); + if (do_put) + do_put_plink(plink, 1); + ii_write_unlock(inode); + iput(inode); + } + } +} --- linux-4.4.0.orig/fs/aufs/poll.c +++ linux-4.4.0/fs/aufs/poll.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * poll operation + * There is only one filesystem which implements ->poll operation, currently. + */ + +#include "aufs.h" + +unsigned int aufs_poll(struct file *file, poll_table *wait) +{ + unsigned int mask; + int err; + struct file *h_file; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = POLLERR /* | POLLIN | POLLOUT */; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* it is not an error if h_file has no operation */ + mask = DEFAULT_POLLMASK; + if (h_file->f_op->poll) + mask = h_file->f_op->poll(h_file, wait); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + AuTraceErr((int)mask); + return mask; +} --- linux-4.4.0.orig/fs/aufs/posix_acl.c +++ linux-4.4.0/fs/aufs/posix_acl.c @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * posix acl operations + */ + +#include +#include +#include "aufs.h" + +struct posix_acl *aufs_get_acl(struct inode *inode, int type) +{ + struct posix_acl *acl; + int err; + aufs_bindex_t bindex; + struct inode *h_inode; + struct super_block *sb; + + acl = NULL; + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); + if (!(sb->s_flags & MS_POSIXACL)) + goto out; + + bindex = au_ibstart(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode + || ((h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)))) { + err = au_busy_or_stale(); + acl = ERR_PTR(err); + goto out; + } + + /* always topmost only */ + acl = get_acl(h_inode, type); + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + + AuTraceErrPtr(acl); + return acl; +} + +int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type) +{ + int err; + ssize_t ssz; + struct dentry *dentry; + struct au_srxattr arg = { + .type = AU_ACL_SET, + .u.acl_set = { + .acl = acl, + .type = type + }, + }; + + mutex_lock(&inode->i_mutex); + if (inode->i_ino == AUFS_ROOT_INO) + dentry = dget(inode->i_sb->s_root); + else { + dentry = d_find_alias(inode); + if (!dentry) + dentry = d_find_any_alias(inode); + if (!dentry) { + pr_warn("cannot handle this inode, " + "please report to aufs-users ML\n"); + err = -ENOENT; + goto out; + } + } + + ssz = au_srxattr(dentry, &arg); + dput(dentry); + err = ssz; + if (ssz >= 0) + err = 0; + +out: + mutex_unlock(&inode->i_mutex); + return err; +} --- linux-4.4.0.orig/fs/aufs/procfs.c +++ linux-4.4.0/fs/aufs/procfs.c @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * procfs interfaces + */ + +#include +#include "aufs.h" + +static int au_procfs_plm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) { + au_plink_maint_leave(sbinfo); + kobject_put(&sbinfo->si_kobj); + } + + return 0; +} + +static void au_procfs_plm_write_clean(struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) + au_plink_clean(sbinfo->si_sb, /*verbose*/0); +} + +static int au_procfs_plm_write_si(struct file *file, unsigned long id) +{ + int err; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + spin_lock(&au_sbilist.spin); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + if (id == sysaufs_si_id(sbinfo)) { + kobject_get(&sbinfo->si_kobj); + sb = sbinfo->si_sb; + break; + } + spin_unlock(&au_sbilist.spin); + + err = -EINVAL; + if (unlikely(!sb)) + goto out; + + err = au_plink_maint_enter(sb); + if (!err) + /* keep kobject_get() */ + file->private_data = sbinfo; + else + kobject_put(&sbinfo->si_kobj); +out: + return err; +} + +/* + * Accept a valid "si=xxxx" only. + * Once it is accepted successfully, accept "clean" too. + */ +static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + unsigned long id; + /* last newline is allowed */ + char buf[3 + sizeof(unsigned long) * 2 + 1]; + + err = -EACCES; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(count > sizeof(buf))) + goto out; + + err = copy_from_user(buf, ubuf, count); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + buf[count] = 0; + + err = -EINVAL; + if (!strcmp("clean", buf)) { + au_procfs_plm_write_clean(file); + goto out_success; + } else if (unlikely(strncmp("si=", buf, 3))) + goto out; + + err = kstrtoul(buf + 3, 16, &id); + if (unlikely(err)) + goto out; + + err = au_procfs_plm_write_si(file, id); + if (unlikely(err)) + goto out; + +out_success: + err = count; /* success */ +out: + return err; +} + +static const struct file_operations au_procfs_plm_fop = { + .write = au_procfs_plm_write, + .release = au_procfs_plm_release, + .owner = THIS_MODULE +}; + +/* ---------------------------------------------------------------------- */ + +static struct proc_dir_entry *au_procfs_dir; + +void au_procfs_fin(void) +{ + remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +} + +int __init au_procfs_init(void) +{ + int err; + struct proc_dir_entry *entry; + + err = -ENOMEM; + au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); + if (unlikely(!au_procfs_dir)) + goto out; + + entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | S_IWUSR, + au_procfs_dir, &au_procfs_plm_fop); + if (unlikely(!entry)) + goto out_dir; + + err = 0; + goto out; /* success */ + + +out_dir: + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +out: + return err; +} --- linux-4.4.0.orig/fs/aufs/rdu.c +++ linux-4.4.0/fs/aufs/rdu.c @@ -0,0 +1,388 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * readdir in userspace. + */ + +#include +#include +#include +#include "aufs.h" + +/* bits for struct aufs_rdu.flags */ +#define AuRdu_CALLED 1 +#define AuRdu_CONT (1 << 1) +#define AuRdu_FULL (1 << 2) +#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) +#define au_fset_rdu(flags, name) \ + do { (flags) |= AuRdu_##name; } while (0) +#define au_fclr_rdu(flags, name) \ + do { (flags) &= ~AuRdu_##name; } while (0) + +struct au_rdu_arg { + struct dir_context ctx; + struct aufs_rdu *rdu; + union au_rdu_ent_ul ent; + unsigned long end; + + struct super_block *sb; + int err; +}; + +static int au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, + loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = container_of(ctx, struct au_rdu_arg, ctx); + struct aufs_rdu *rdu = arg->rdu; + struct au_rdu_ent ent; + + err = 0; + arg->err = 0; + au_fset_rdu(rdu->cookie.flags, CALLED); + len = au_rdu_len(nlen); + if (arg->ent.ul + len < arg->end) { + ent.ino = h_ino; + ent.bindex = rdu->cookie.bindex; + ent.type = d_type; + ent.nlen = nlen; + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + ent.type = DT_UNKNOWN; + + /* unnecessary to support mmap_sem since this is a dir */ + err = -EFAULT; + if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) + goto out; + if (copy_to_user(arg->ent.e->name, name, nlen)) + goto out; + /* the terminating NULL */ + if (__put_user(0, arg->ent.e->name + nlen)) + goto out; + err = 0; + /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ + arg->ent.ul += len; + rdu->rent++; + } else { + err = -EFAULT; + au_fset_rdu(rdu->cookie.flags, FULL); + rdu->full = 1; + rdu->tail = arg->ent; + } + +out: + /* AuTraceErr(err); */ + return err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) +{ + int err; + loff_t offset; + struct au_rdu_cookie *cookie = &arg->rdu->cookie; + + /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ + offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); + err = offset; + if (unlikely(offset != cookie->h_pos)) + goto out; + + err = 0; + do { + arg->err = 0; + au_fclr_rdu(cookie->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err + && au_ftest_rdu(cookie->flags, CALLED) + && !au_ftest_rdu(cookie->flags, FULL)); + cookie->h_pos = h_file->f_pos; + +out: + AuTraceErr(err); + return err; +} + +static int au_rdu(struct file *file, struct aufs_rdu *rdu) +{ + int err; + aufs_bindex_t bend; + struct au_rdu_arg arg = { + .ctx = { + .actor = au_rdu_fill + } + }; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct au_rdu_cookie *cookie = &rdu->cookie; + + err = !access_ok(VERIFY_WRITE, rdu->ent.e, rdu->sz); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu->rent = 0; + rdu->tail = rdu->ent; + rdu->full = 0; + arg.rdu = rdu; + arg.ent = rdu->ent; + arg.end = arg.ent.ul; + arg.end += rdu->sz; + + err = -ENOTDIR; + if (unlikely(!file->f_op->iterate)) + goto out; + + err = security_file_permission(file, MAY_READ); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + inode = d_inode(dentry); +#if 1 + mutex_lock(&inode->i_mutex); +#else + err = mutex_lock_killable(&inode->i_mutex); + AuTraceErr(err); + if (unlikely(err)) + goto out; +#endif + + arg.sb = inode->i_sb; + err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_si; + /* todo: reval? */ + fi_read_lock(file); + + err = -EAGAIN; + if (unlikely(au_ftest_rdu(cookie->flags, CONT) + && cookie->generation != au_figen(file))) + goto out_unlock; + + err = 0; + if (!rdu->blk) { + rdu->blk = au_sbi(arg.sb)->si_rdblk; + if (!rdu->blk) + rdu->blk = au_dir_size(file, /*dentry*/NULL); + } + bend = au_fbstart(file); + if (cookie->bindex < bend) + cookie->bindex = bend; + bend = au_fbend_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bend); */ + for (; !err && cookie->bindex <= bend; + cookie->bindex++, cookie->h_pos = 0) { + h_file = au_hf_dir(file, cookie->bindex); + if (!h_file) + continue; + + au_fclr_rdu(cookie->flags, FULL); + err = au_rdu_do(h_file, &arg); + AuTraceErr(err); + if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) + break; + } + AuDbg("rent %llu\n", rdu->rent); + + if (!err && !au_ftest_rdu(cookie->flags, CONT)) { + rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); + au_fset_rdu(cookie->flags, CONT); + cookie->generation = au_figen(file); + } + + ii_read_lock_child(inode); + fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibstart(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + mutex_unlock(&inode->i_mutex); +out: + AuTraceErr(err); + return err; +} + +static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) +{ + int err; + ino_t ino; + unsigned long long nent; + union au_rdu_ent_ul *u; + struct au_rdu_ent ent; + struct super_block *sb; + + err = 0; + nent = rdu->nent; + u = &rdu->ent; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + while (nent-- > 0) { + /* unnecessary to support mmap_sem since this is a dir */ + err = copy_from_user(&ent, u->e, sizeof(ent)); + if (!err) + err = !access_ok(VERIFY_WRITE, &u->e->ino, sizeof(ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + + /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ + if (!ent.wh) + err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); + else + err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, + &ino); + if (unlikely(err)) { + AuTraceErr(err); + break; + } + + err = __put_user(ino, &u->e->ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + u->ul += au_rdu_len(ent.nlen); + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_rdu_verify(struct aufs_rdu *rdu) +{ + AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " + "%llu, b%d, 0x%x, g%u}\n", + rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], + rdu->blk, + rdu->rent, rdu->shwh, rdu->full, + rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, + rdu->cookie.generation); + + if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) + return 0; + + AuDbg("%u:%u\n", + rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); + return -EINVAL; +} + +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = (void __user *)arg; + + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = compat_ptr(arg); + + /* todo: get_user()? */ + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu.ent.e = compat_ptr(rdu.ent.ul); + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + rdu.ent.ul = ptr_to_compat(rdu.ent.e); + rdu.tail.ul = ptr_to_compat(rdu.tail.e); + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} +#endif --- linux-4.4.0.orig/fs/aufs/rwsem.h +++ linux-4.4.0/fs/aufs/rwsem.h @@ -0,0 +1,191 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple read-write semaphore wrappers + */ + +#ifndef __AUFS_RWSEM_H__ +#define __AUFS_RWSEM_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +struct au_rwsem { + struct rw_semaphore rwsem; +#ifdef CONFIG_AUFS_DEBUG + /* just for debugging, not almighty counter */ + atomic_t rcnt, wcnt; +#endif +}; + +#ifdef CONFIG_AUFS_DEBUG +#define AuDbgCntInit(rw) do { \ + atomic_set(&(rw)->rcnt, 0); \ + atomic_set(&(rw)->wcnt, 0); \ + smp_mb(); /* atomic set */ \ +} while (0) + +#define AuDbgRcntInc(rw) atomic_inc(&(rw)->rcnt) +#define AuDbgRcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->rcnt) < 0) +#define AuDbgWcntInc(rw) atomic_inc(&(rw)->wcnt) +#define AuDbgWcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->wcnt) < 0) +#else +#define AuDbgCntInit(rw) do {} while (0) +#define AuDbgRcntInc(rw) do {} while (0) +#define AuDbgRcntDec(rw) do {} while (0) +#define AuDbgWcntInc(rw) do {} while (0) +#define AuDbgWcntDec(rw) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(!list_empty(&(rw)->rwsem.wait_list)) +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0) +#define AuRwMustWriteLock(rw) AuDebugOn(atomic_read(&(rw)->wcnt) <= 0) +#define AuRwMustAnyLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0 \ + && atomic_read(&(rw)->wcnt) <= 0) +#define AuRwDestroy(rw) AuDebugOn(atomic_read(&(rw)->rcnt) \ + || atomic_read(&(rw)->wcnt)) + +#define au_rw_class(rw, key) lockdep_set_class(&(rw)->rwsem, key) + +static inline void au_rw_init(struct au_rwsem *rw) +{ + AuDbgCntInit(rw); + init_rwsem(&rw->rwsem); +} + +static inline void au_rw_init_wlock(struct au_rwsem *rw) +{ + au_rw_init(rw); + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_init_wlock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + au_rw_init(rw); + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_read_lock(struct au_rwsem *rw) +{ + down_read(&rw->rwsem); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_lock_nested(struct au_rwsem *rw, unsigned int lsc) +{ + down_read_nested(&rw->rwsem, lsc); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_unlock(struct au_rwsem *rw) +{ + AuRwMustReadLock(rw); + AuDbgRcntDec(rw); + up_read(&rw->rwsem); +} + +static inline void au_rw_dgrade_lock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgRcntInc(rw); + AuDbgWcntDec(rw); + downgrade_write(&rw->rwsem); +} + +static inline void au_rw_write_lock(struct au_rwsem *rw) +{ + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_lock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_unlock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgWcntDec(rw); + up_write(&rw->rwsem); +} + +/* why is not _nested version defined */ +static inline int au_rw_read_trylock(struct au_rwsem *rw) +{ + int ret; + + ret = down_read_trylock(&rw->rwsem); + if (ret) + AuDbgRcntInc(rw); + return ret; +} + +static inline int au_rw_write_trylock(struct au_rwsem *rw) +{ + int ret; + + ret = down_write_trylock(&rw->rwsem); + if (ret) + AuDbgWcntInc(rw); + return ret; +} + +#undef AuDbgCntInit +#undef AuDbgRcntInc +#undef AuDbgRcntDec +#undef AuDbgWcntInc +#undef AuDbgWcntDec + +#define AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_lock(param) \ +{ au_rw_read_lock(rwsem); } \ +static inline void prefix##_write_lock(param) \ +{ au_rw_write_lock(rwsem); } \ +static inline int prefix##_read_trylock(param) \ +{ return au_rw_read_trylock(rwsem); } \ +static inline int prefix##_write_trylock(param) \ +{ return au_rw_write_trylock(rwsem); } +/* why is not _nested version defined */ +/* static inline void prefix##_read_trylock_nested(param, lsc) +{ au_rw_read_trylock_nested(rwsem, lsc)); } +static inline void prefix##_write_trylock_nestd(param, lsc) +{ au_rw_write_trylock_nested(rwsem, lsc); } */ + +#define AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_unlock(param) \ +{ au_rw_read_unlock(rwsem); } \ +static inline void prefix##_write_unlock(param) \ +{ au_rw_write_unlock(rwsem); } \ +static inline void prefix##_downgrade_lock(param) \ +{ au_rw_dgrade_lock(rwsem); } + +#define AuSimpleRwsemFuncs(prefix, param, rwsem) \ + AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ + AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- linux-4.4.0.orig/fs/aufs/sbinfo.c +++ linux-4.4.0/fs/aufs/sbinfo.c @@ -0,0 +1,366 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * superblock private data + */ + +#include "aufs.h" + +/* + * they are necessary regardless sysfs is disabled. + */ +void au_si_free(struct kobject *kobj) +{ + int i; + struct au_sbinfo *sbinfo; + char *locked __maybe_unused; /* debug only */ + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + for (i = 0; i < AuPlink_NHASH; i++) + AuDebugOn(!hlist_empty(&sbinfo->si_plink[i].head)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + AuDebugOn(!hlist_empty(&sbinfo->si_symlink.head)); + + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + AuDebugOn(radix_tree_gang_lookup + (&sbinfo->au_si_pid.tree, (void **)&locked, + /*first_index*/PID_MAX_DEFAULT - 1, + /*max_items*/sizeof(locked)/sizeof(*locked))); + + kfree(sbinfo->si_branch); + kfree(sbinfo->au_si_pid.bitmap); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + kfree(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err, i; + struct au_sbinfo *sbinfo; + static struct lock_class_key aufs_si; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + BUILD_BUG_ON(sizeof(unsigned long) != + sizeof(*sbinfo->au_si_pid.bitmap)); + sbinfo->au_si_pid.bitmap = kcalloc(BITS_TO_LONGS(PID_MAX_DEFAULT), + sizeof(*sbinfo->au_si_pid.bitmap), + GFP_NOFS); + if (unlikely(!sbinfo->au_si_pid.bitmap)) + goto out_sbinfo; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_pidmap; + + err = sysaufs_si_init(sbinfo); + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + au_rw_class(&sbinfo->si_rwsem, &aufs_si); + spin_lock_init(&sbinfo->au_si_pid.tree_lock); + INIT_RADIX_TREE(&sbinfo->au_si_pid.tree, GFP_ATOMIC | __GFP_NOFAIL); + + atomic_long_set(&sbinfo->si_ninodes, 0); + atomic_long_set(&sbinfo->si_nfiles, 0); + + sbinfo->si_bend = -1; + sbinfo->si_last_br_id = AUFS_BRANCH_MAX / 2; + + sbinfo->si_wbr_copyup = AuWbrCopyup_Def; + sbinfo->si_wbr_create = AuWbrCreate_Def; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; + + au_fhsm_init(sbinfo); + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + + au_sphl_init(&sbinfo->si_symlink); + + sbinfo->si_xino_jiffy = jiffies; + sbinfo->si_xino_expire + = msecs_to_jiffies(AUFS_XINO_DEF_SEC * MSEC_PER_SEC); + mutex_init(&sbinfo->si_xib_mtx); + sbinfo->si_xino_brid = -1; + /* leave si_xib_last_pindex and si_xib_next_bit */ + + au_sphl_init(&sbinfo->si_aopen); + + sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + sbinfo->si_dirwh = AUFS_DIRWH_DEF; + + for (i = 0; i < AuPlink_NHASH; i++) + au_sphl_init(sbinfo->si_plink + i); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + au_sphl_init(&sbinfo->si_files); + + /* with getattr by default */ + sbinfo->si_iop_array = aufs_iop; + + /* leave other members for sysaufs and si_mnt. */ + sbinfo->si_sb = sb; + sb->s_fs_info = sbinfo; + si_pid_set(sb); + return 0; /* success */ + +out_br: + kfree(sbinfo->si_branch); +out_pidmap: + kfree(sbinfo->au_si_pid.bitmap); +out_sbinfo: + kfree(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bend + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS); + if (brp) { + sbinfo->si_branch = brp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_sigen_inc(struct super_block *sb) +{ + unsigned int gen; + struct inode *inode; + + SiMustWriteLock(sb); + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); + inode = d_inode(sb->s_root); + au_update_iigen(inode, /*half*/0); + inode->i_version++; + return gen; +} + +aufs_bindex_t au_new_br_id(struct super_block *sb) +{ + aufs_bindex_t br_id; + int i; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + for (i = 0; i <= AUFS_BRANCH_MAX; i++) { + br_id = ++sbinfo->si_last_br_id; + AuDebugOn(br_id < 0); + if (br_id && au_br_index(sb, br_id) < 0) + return br_id; + } + + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* it is ok that new 'nwt' tasks are appended while we are sleeping */ +int si_read_lock(struct super_block *sb, int flags) +{ + int err; + + err = 0; + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_read_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_read_unlock(sb); + + return err; +} + +int si_write_lock(struct super_block *sb, int flags) +{ + int err; + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_write_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_write_unlock(sb); + + return err; +} + +/* dentry and super_block lock. call at entry point */ +int aufs_read_lock(struct dentry *dentry, int flags) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + if (au_ftest_lock(flags, DW)) + di_write_lock_child(dentry); + else + di_read_lock_child(dentry, flags); + + if (au_ftest_lock(flags, GEN)) { + err = au_digen_test(dentry, au_sigen(sb)); + if (!au_opt_test(au_mntflags(sb), UDBA_NONE)) + AuDebugOn(!err && au_dbrange_test(dentry)); + else if (!err) + err = au_dbrange_test(dentry); + if (unlikely(err)) + aufs_read_unlock(dentry, flags); + } + +out: + return err; +} + +void aufs_read_unlock(struct dentry *dentry, int flags) +{ + if (au_ftest_lock(flags, DW)) + di_write_unlock(dentry); + else + di_read_unlock(dentry, flags); + si_read_unlock(dentry->d_sb); +} + +void aufs_write_lock(struct dentry *dentry) +{ + si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); + di_write_lock_child(dentry); +} + +void aufs_write_unlock(struct dentry *dentry) +{ + di_write_unlock(dentry); + si_write_unlock(dentry->d_sb); +} + +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) +{ + int err; + unsigned int sigen; + struct super_block *sb; + + sb = d1->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIRS)); + + if (au_ftest_lock(flags, GEN)) { + sigen = au_sigen(sb); + err = au_digen_test(d1, sigen); + AuDebugOn(!err && au_dbrange_test(d1)); + if (!err) { + err = au_digen_test(d2, sigen); + AuDebugOn(!err && au_dbrange_test(d2)); + } + if (unlikely(err)) + aufs_read_and_write_unlock2(d1, d2); + } + +out: + return err; +} + +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} + +/* ---------------------------------------------------------------------- */ + +int si_pid_test_slow(struct super_block *sb) +{ + void *p; + + rcu_read_lock(); + p = radix_tree_lookup(&au_sbi(sb)->au_si_pid.tree, current->pid); + rcu_read_unlock(); + + return (long)!!p; +} + +void si_pid_set_slow(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + AuDebugOn(si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + err = radix_tree_preload(GFP_NOFS | __GFP_NOFAIL); + AuDebugOn(err); + spin_lock(&sbinfo->au_si_pid.tree_lock); + err = radix_tree_insert(&sbinfo->au_si_pid.tree, current->pid, + /*any valid ptr*/sb); + spin_unlock(&sbinfo->au_si_pid.tree_lock); + AuDebugOn(err); + radix_tree_preload_end(); +} + +void si_pid_clr_slow(struct super_block *sb) +{ + void *p; + struct au_sbinfo *sbinfo; + + AuDebugOn(!si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + spin_lock(&sbinfo->au_si_pid.tree_lock); + p = radix_tree_delete(&sbinfo->au_si_pid.tree, current->pid); + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} --- linux-4.4.0.orig/fs/aufs/spl.h +++ linux-4.4.0/fs/aufs/spl.h @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple list protected by a spinlock + */ + +#ifndef __AUFS_SPL_H__ +#define __AUFS_SPL_H__ + +#ifdef __KERNEL__ + +struct au_splhead { + spinlock_t spin; + struct list_head head; +}; + +static inline void au_spl_init(struct au_splhead *spl) +{ + spin_lock_init(&spl->spin); + INIT_LIST_HEAD(&spl->head); +} + +static inline void au_spl_add(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_add(list, &spl->head); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del(list); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del_rcu(struct list_head *list, + struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del_rcu(list); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +struct au_sphlhead { + spinlock_t spin; + struct hlist_head head; +}; + +static inline void au_sphl_init(struct au_sphlhead *sphl) +{ + spin_lock_init(&sphl->spin); + INIT_HLIST_HEAD(&sphl->head); +} + +static inline void au_sphl_add(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_add_head(hlist, &sphl->head); + spin_unlock(&sphl->spin); +} + +static inline void au_sphl_del(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_del(hlist); + spin_unlock(&sphl->spin); +} + +static inline void au_sphl_del_rcu(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_del_rcu(hlist); + spin_unlock(&sphl->spin); +} + +static inline unsigned long au_sphl_count(struct au_sphlhead *sphl) +{ + unsigned long cnt; + struct hlist_node *pos; + + cnt = 0; + spin_lock(&sphl->spin); + hlist_for_each(pos, &sphl->head) + cnt++; + spin_unlock(&sphl->spin); + return cnt; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ --- linux-4.4.0.orig/fs/aufs/super.c +++ linux-4.4.0/fs/aufs/super.c @@ -0,0 +1,1042 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount and super_block operations + */ + +#include +#include +#include +#include +#include "aufs.h" + +/* + * super_operations + */ +static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) +{ + struct au_icntnr *c; + + c = au_cache_alloc_icntnr(); + if (c) { + au_icntnr_init(c); + c->vfs_inode.i_version = 1; /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode_cb(struct rcu_head *head) +{ + struct inode *inode = container_of(head, struct inode, i_rcu); + + INIT_HLIST_HEAD(&inode->i_dentry); + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +static void aufs_destroy_inode(struct inode *inode) +{ + au_iinfo_fin(inode); + call_rcu(&inode->i_rcu, aufs_destroy_inode_cb); +} + +struct inode *au_iget_locked(struct super_block *sb, ino_t ino) +{ + struct inode *inode; + int err; + + inode = iget_locked(sb, ino); + if (unlikely(!inode)) { + inode = ERR_PTR(-ENOMEM); + goto out; + } + if (!(inode->i_state & I_NEW)) + goto out; + + err = au_xigen_new(inode); + if (!err) + err = au_iinfo_init(inode); + if (!err) + inode->i_version++; + else { + iget_failed(inode); + inode = ERR_PTR(err); + } + +out: + /* never return NULL */ + AuDebugOn(!inode); + AuTraceErrPtr(inode); + return inode; +} + +/* lock free root dinfo */ +static int au_show_brs(struct seq_file *seq, struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + au_br_perm_str_t perm; + + err = 0; + bend = au_sbend(sb); + hdp = au_di(sb->s_root)->di_hdentry; + for (bindex = 0; !err && bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + path.mnt = au_br_mnt(br); + path.dentry = hdp[bindex].hd_dentry; + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s", perm.a); + if (bindex != bend) + seq_putc(seq, ':'); + } + } + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_puts(m, ",create="); + pat = au_optstr_wbr_create(v); + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_puts(m, pat); + break; + case AuWbrCreate_MFSV: + seq_printf(m, /*pat*/"mfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSV: + seq_printf(m, /*pat*/"pmfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRR: + seq_printf(m, /*pat*/"mfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + seq_printf(m, /*pat*/"mfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSRR: + seq_printf(m, /*pat*/"pmfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_PMFSRRV: + seq_printf(m, /*pat*/"pmfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + } +} + +static int au_show_xino(struct seq_file *seq, struct super_block *sb) +{ +#ifdef CONFIG_SYSFS + return 0; +#else + int err; + const int len = sizeof(AUFS_XINO_FNAME) - 1; + aufs_bindex_t bindex, brid; + struct qstr *name; + struct file *f; + struct dentry *d, *h_root; + struct au_hdentry *hdp; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + err = 0; + f = au_sbi(sb)->si_xib; + if (!f) + goto out; + + /* stop printing the default xino path on the first writable branch */ + h_root = NULL; + brid = au_xino_brid(sb); + if (brid >= 0) { + bindex = au_br_index(sb, brid); + hdp = au_di(sb->s_root)->di_hdentry; + h_root = hdp[0 + bindex].hd_dentry; + } + d = f->f_path.dentry; + name = &d->d_name; + /* safe ->d_parent because the file is unlinked */ + if (d->d_parent == h_root + && name->len == len + && !memcmp(name->name, AUFS_XINO_FNAME, len)) + goto out; + + seq_puts(seq, ",xino="); + err = au_xino_path(seq, f); + +out: + return err; +#endif +} + +/* seq_file will re-call me in case of too long string */ +static int aufs_show_options(struct seq_file *m, struct dentry *dentry) +{ + int err; + unsigned int mnt_flags, v; + struct super_block *sb; + struct au_sbinfo *sbinfo; + +#define AuBool(name, str) do { \ + v = au_opt_test(mnt_flags, name); \ + if (v != au_opt_test(AuOpt_Def, name)) \ + seq_printf(m, ",%s" #str, v ? "" : "no"); \ +} while (0) + +#define AuStr(name, str) do { \ + v = mnt_flags & AuOptMask_##name; \ + if (v != (AuOpt_Def & AuOptMask_##name)) \ + seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ +} while (0) + +#define AuUInt(name, str, val) do { \ + if (val != AUFS_##name##_DEF) \ + seq_printf(m, "," #str "=%u", val); \ +} while (0) + + sb = dentry->d_sb; + if (sb->s_flags & MS_POSIXACL) + seq_puts(m, ",acl"); + + /* lock free root dinfo */ + si_noflush_read_lock(sb); + sbinfo = au_sbi(sb); + seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); + + mnt_flags = au_mntflags(sb); + if (au_opt_test(mnt_flags, XINO)) { + err = au_show_xino(m, sb); + if (unlikely(err)) + goto out; + } else + seq_puts(m, ",noxino"); + + AuBool(TRUNC_XINO, trunc_xino); + AuStr(UDBA, udba); + AuBool(SHWH, shwh); + AuBool(PLINK, plink); + AuBool(DIO, dio); + AuBool(DIRPERM1, dirperm1); + + v = sbinfo->si_wbr_create; + if (v != AuWbrCreate_Def) + au_show_wbr_create(m, v, sbinfo); + + v = sbinfo->si_wbr_copyup; + if (v != AuWbrCopyup_Def) + seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); + + v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); + if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) + seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); + + AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); + + v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; + AuUInt(RDCACHE, rdcache, v); + + AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); + AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); + + au_fhsm_show(m, sbinfo); + + AuBool(SUM, sum); + /* AuBool(SUM_W, wsum); */ + AuBool(WARN_PERM, warn_perm); + AuBool(VERBOSE, verbose); + +out: + /* be sure to print "br:" last */ + if (!sysaufs_brs) { + seq_puts(m, ",br:"); + au_show_brs(m, sb); + } + si_read_unlock(sb); + return 0; + +#undef AuBool +#undef AuStr +#undef AuUInt +} + +/* ---------------------------------------------------------------------- */ + +/* sum mode which returns the summation for statfs(2) */ + +static u64 au_add_till_max(u64 a, u64 b) +{ + u64 old; + + old = a; + a += b; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static u64 au_mul_till_max(u64 a, long mul) +{ + u64 old; + + old = a; + a *= mul; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) +{ + int err; + long bsize, factor; + u64 blocks, bfree, bavail, files, ffree; + aufs_bindex_t bend, bindex, i; + unsigned char shared; + struct path h_path; + struct super_block *h_sb; + + err = 0; + bsize = LONG_MAX; + files = 0; + ffree = 0; + blocks = 0; + bfree = 0; + bavail = 0; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_path.mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path.mnt->mnt_sb; + shared = 0; + for (i = 0; !shared && i < bindex; i++) + shared = (au_sbr_sb(sb, i) == h_sb); + if (shared) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + if (unlikely(err)) + goto out; + + if (bsize > buf->f_bsize) { + /* + * we will reduce bsize, so we have to expand blocks + * etc. to match them again + */ + factor = (bsize / buf->f_bsize); + blocks = au_mul_till_max(blocks, factor); + bfree = au_mul_till_max(bfree, factor); + bavail = au_mul_till_max(bavail, factor); + bsize = buf->f_bsize; + } + + factor = (buf->f_bsize / bsize); + blocks = au_add_till_max(blocks, + au_mul_till_max(buf->f_blocks, factor)); + bfree = au_add_till_max(bfree, + au_mul_till_max(buf->f_bfree, factor)); + bavail = au_add_till_max(bavail, + au_mul_till_max(buf->f_bavail, factor)); + files = au_add_till_max(files, buf->f_files); + ffree = au_add_till_max(ffree, buf->f_ffree); + } + + buf->f_bsize = bsize; + buf->f_blocks = blocks; + buf->f_bfree = bfree; + buf->f_bavail = bavail; + buf->f_files = files; + buf->f_ffree = ffree; + buf->f_frsize = 0; + +out: + return err; +} + +static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + int err; + struct path h_path; + struct super_block *sb; + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (!au_opt_test(au_mntflags(sb), SUM)) { + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_sbr_mnt(sb, 0); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + } else + err = au_statfs_sum(sb, buf); + si_read_unlock(sb); + + if (!err) { + buf->f_type = AUFS_SUPER_MAGIC; + buf->f_namelen = AUFS_MAX_NAMELEN; + memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); + } + /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_sync_fs(struct super_block *sb, int wait) +{ + int err, e; + aufs_bindex_t bend, bindex; + struct au_branch *br; + struct super_block *h_sb; + + err = 0; + si_noflush_read_lock(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_writable(br->br_perm)) + continue; + + h_sb = au_sbr_sb(sb, bindex); + if (h_sb->s_op->sync_fs) { + e = h_sb->s_op->sync_fs(h_sb, wait); + if (unlikely(e && !err)) + err = e; + /* go on even if an error happens */ + } + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + + dbgaufs_si_fin(sbinfo); + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg) +{ + void *array; + unsigned long long n, sz; + + array = NULL; + n = 0; + if (!*hint) + goto out; + + if (*hint > ULLONG_MAX / sizeof(array)) { + array = ERR_PTR(-EMFILE); + pr_err("hint %llu\n", *hint); + goto out; + } + + sz = sizeof(array) * *hint; + array = kzalloc(sz, GFP_NOFS); + if (unlikely(!array)) + array = vzalloc(sz); + if (unlikely(!array)) { + array = ERR_PTR(-ENOMEM); + goto out; + } + + n = cb(sb, array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct inode **p, *inode; + struct list_head *head; + + n = 0; + p = a; + head = arg; + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!is_bad_inode(inode) + && au_ii(inode)->ii_bstart >= 0) { + spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + au_igrab(inode); + *p++ = inode; + n++; + AuDebugOn(n > max); + } + spin_unlock(&inode->i_lock); + } + } + spin_unlock(&sb->s_inode_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_ninodes); + return au_array_alloc(max, au_iarray_cb, sb, &sb->s_inodes); +} + +void au_iarray_free(struct inode **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + iput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * refresh dentry and inode at remount time. + */ +/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ +static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, + struct dentry *parent) +{ + int err; + + di_write_lock_child(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + if (!err && dir_flags) + au_hn_reset(d_inode(dentry), dir_flags); + di_read_unlock(parent, AuLock_IR); + di_write_unlock(dentry); + + return err; +} + +static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, + struct au_sbinfo *sbinfo, + const unsigned int dir_flags, unsigned int do_idop) +{ + int err; + struct dentry *parent; + + err = 0; + parent = dget_parent(dentry); + if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { + if (d_really_is_positive(dentry)) { + if (!d_is_dir(dentry)) + err = au_do_refresh(dentry, /*dir_flags*/0, + parent); + else { + err = au_do_refresh(dentry, dir_flags, parent); + if (unlikely(err)) + au_fset_si(sbinfo, FAILED_REFRESH_DIR); + } + } else + err = au_do_refresh(dentry, /*dir_flags*/0, parent); + AuDbgDentry(dentry); + } + dput(parent); + + if (!err) { + if (do_idop) + au_refresh_dop(dentry, /*force_reval*/0); + } else + au_refresh_dop(dentry, /*force_reval*/1); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb, unsigned int do_idop) +{ + int err, i, j, ndentry, e; + unsigned int sigen; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *d; + struct au_sbinfo *sbinfo; + struct dentry *root = sb->s_root; + const unsigned int dir_flags = au_hi_flags(d_inode(root), /*isdir*/1); + + if (do_idop) + au_refresh_dop(root, /*force_reval*/0); + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + sigen = au_sigen(sb); + sbinfo = au_sbi(sb); + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + e = au_do_refresh_d(d, sigen, sbinfo, dir_flags, + do_idop); + if (unlikely(e && !err)) + err = e; + /* go on even err */ + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int au_refresh_i(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int sigen; + unsigned long long max, ull; + struct inode *inode, **array; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; + if (unlikely(!inode)) + break; + + e = 0; + ii_write_lock_child(inode); + if (au_iigen(inode, NULL) != sigen) { + e = au_refresh_hinode_self(inode); + if (unlikely(e)) { + au_refresh_iop(inode, /*force_getattr*/1); + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + if (!e && do_idop) + au_refresh_iop(inode, /*force_getattr*/0); + ii_write_unlock(inode); + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bend; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + struct au_sbinfo *sbi; + + au_sigen_inc(sb); + sbi = au_sbi(sb); + au_fclr_si(sbi, FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = d_inode(root); + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(udba, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); + + if (do_idop) { + if (au_ftest_si(sbi, NO_DREVAL)) { + AuDebugOn(sb->s_d_op == &aufs_dop_noreval); + sb->s_d_op = &aufs_dop_noreval; + AuDebugOn(sbi->si_iop_array == aufs_iop_nogetattr); + sbi->si_iop_array = aufs_iop_nogetattr; + } else { + AuDebugOn(sb->s_d_op == &aufs_dop); + sb->s_d_op = &aufs_dop; + AuDebugOn(sbi->si_iop_array == aufs_iop); + sbi->si_iop_array = aufs_iop; + } + pr_info("reset to %pf and %pf\n", + sb->s_d_op, sbi->si_iop_array); + } + + di_write_unlock(root); + err = au_refresh_d(sb, do_idop); + e = au_refresh_i(sb, do_idop); + if (unlikely(e && !err)) + err = e; + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + au_cpup_attr_all(inode, /*force*/1); + + if (unlikely(err)) + AuIOErr("refresh failed, ignored, %d\n", err); +} + +/* stop extra interpretation of errno in mount(8), and strange error messages */ +static int cvt_err(int err) +{ + AuTraceErr(err); + + switch (err) { + case -ENOENT: + case -ENOTDIR: + case -EEXIST: + case -EIO: + err = -EINVAL; + } + return err; +} + +static int aufs_remount_fs(struct super_block *sb, int *flags, char *data) +{ + int err, do_dx; + unsigned int mntflags; + struct au_opts opts = { + .opt = NULL + }; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; + + err = 0; + root = sb->s_root; + if (!data || !*data) { + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) { + di_write_lock_child(root); + err = au_opts_verify(sb, *flags, /*pending*/0); + aufs_write_unlock(root); + } + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.flags = AuOpts_REMOUNT; + opts.sb_flags = *flags; + + /* parse it before aufs lock */ + err = au_opts_parse(sb, data, &opts); + if (unlikely(err)) + goto out_opts; + + sbinfo = au_sbi(sb); + inode = d_inode(root); + mutex_lock(&inode->i_mutex); + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + di_write_lock_child(root); + + /* au_opts_remount() may return an error */ + err = au_opts_remount(sb, &opts); + au_opts_free(&opts); + + if (au_ftest_opts(opts.flags, REFRESH)) + au_remount_refresh(sb, au_ftest_opts(opts.flags, REFRESH_IDOP)); + + if (au_ftest_opts(opts.flags, REFRESH_DYAOP)) { + mntflags = au_mntflags(sb); + do_dx = !!au_opt_test(mntflags, DIO); + au_dy_arefresh(do_dx); + } + + au_fhsm_wrote_all(sb, /*force*/1); /* ?? */ + aufs_write_unlock(root); + +out_mtx: + mutex_unlock(&inode->i_mutex); +out_opts: + free_page((unsigned long)opts.opt); +out: + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +static const struct super_operations aufs_sop = { + .alloc_inode = aufs_alloc_inode, + .destroy_inode = aufs_destroy_inode, + /* always deleting, no clearing */ + .drop_inode = generic_delete_inode, + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, + .sync_fs = aufs_sync_fs, + .remount_fs = aufs_remount_fs, +#ifdef CONFIG_AUFS_BDEV_LOOP + .real_loop = aufs_real_loop +#endif +}; + +/* ---------------------------------------------------------------------- */ + +static int alloc_root(struct super_block *sb) +{ + int err; + struct inode *inode; + struct dentry *root; + + err = -ENOMEM; + inode = au_iget_locked(sb, AUFS_ROOT_INO); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + inode->i_op = aufs_iop + AuIop_DIR; /* with getattr by default */ + inode->i_fop = &aufs_dir_fop; + inode->i_mode = S_IFDIR; + set_nlink(inode, 2); + unlock_new_inode(inode); + + root = d_make_root(inode); + if (unlikely(!root)) + goto out; + err = PTR_ERR(root); + if (IS_ERR(root)) + goto out; + + err = au_di_init(root); + if (!err) { + sb->s_root = root; + return 0; /* success */ + } + dput(root); + +out: + return err; +} + +static int aufs_fill_super(struct super_block *sb, void *raw_data, + int silent __maybe_unused) +{ + int err; + struct au_opts opts = { + .opt = NULL + }; + struct au_sbinfo *sbinfo; + struct dentry *root; + struct inode *inode; + char *arg = raw_data; + + if (unlikely(!arg || !*arg)) { + err = -EINVAL; + pr_err("no arg\n"); + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.sb_flags = sb->s_flags; + + err = au_si_alloc(sb); + if (unlikely(err)) + goto out_opts; + sbinfo = au_sbi(sb); + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= MS_NOATIME | MS_NODIRATIME; + sb->s_op = &aufs_sop; + sb->s_d_op = &aufs_dop; + sb->s_magic = AUFS_SUPER_MAGIC; + sb->s_maxbytes = 0; + sb->s_stack_depth = 1; + au_export_init(sb); + /* au_xattr_init(sb); */ + + err = alloc_root(sb); + if (unlikely(err)) { + si_write_unlock(sb); + goto out_info; + } + root = sb->s_root; + inode = d_inode(root); + + /* + * actually we can parse options regardless aufs lock here. + * but at remount time, parsing must be done before aufs lock. + * so we follow the same rule. + */ + ii_write_lock_parent(inode); + aufs_write_unlock(root); + err = au_opts_parse(sb, arg, &opts); + if (unlikely(err)) + goto out_root; + + /* lock vfs_inode first, then aufs. */ + mutex_lock(&inode->i_mutex); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + if (!err && au_ftest_si(sbinfo, NO_DREVAL)) { + sb->s_d_op = &aufs_dop_noreval; + pr_info("%pf\n", sb->s_d_op); + au_refresh_dop(root, /*force_reval*/0); + sbinfo->si_iop_array = aufs_iop_nogetattr; + au_refresh_iop(inode, /*force_getattr*/0); + } + aufs_write_unlock(root); + mutex_unlock(&inode->i_mutex); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + dbgaufs_si_fin(sbinfo); + kobject_put(&sbinfo->si_kobj); + sb->s_fs_info = NULL; +out_opts: + free_page((unsigned long)opts.opt); +out: + AuTraceErr(err); + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_mount(struct file_system_type *fs_type, int flags, + const char *dev_name __maybe_unused, + void *raw_data) +{ + struct dentry *root; + struct super_block *sb; + + /* all timestamps always follow the ones on the branch */ + /* mnt->mnt_flags |= MNT_NOATIME | MNT_NODIRATIME; */ + root = mount_nodev(fs_type, flags, raw_data, aufs_fill_super); + if (IS_ERR(root)) + goto out; + + sb = root->d_sb; + si_write_lock(sb, !AuLock_FLUSH); + sysaufs_brs_add(sb, 0); + si_write_unlock(sb); + au_sbilist_add(sb); + +out: + return root; +} + +static void aufs_kill_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) { + au_sbilist_del(sb); + aufs_write_lock(sb->s_root); + au_fhsm_fin(sb); + if (sbinfo->si_wbr_create_ops->fin) + sbinfo->si_wbr_create_ops->fin(sb); + if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { + au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); + au_remount_refresh(sb, /*do_idop*/0); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(sb); + sbinfo->si_sb = NULL; + aufs_write_unlock(sb->s_root); + au_nwt_flush(&sbinfo->si_nowait); + } + kill_anon_super(sb); +} + +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + /* a race between rename and others */ + .fs_flags = FS_RENAME_DOES_D_MOVE, + .mount = aufs_mount, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; --- linux-4.4.0.orig/fs/aufs/super.h +++ linux-4.4.0/fs/aufs/super.h @@ -0,0 +1,641 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * super_block operations + */ + +#ifndef __AUFS_SUPER_H__ +#define __AUFS_SUPER_H__ + +#ifdef __KERNEL__ + +#include +#include +#include "rwsem.h" +#include "spl.h" +#include "wkq.h" + +/* policies to select one among multiple writable branches */ +struct au_wbr_copyup_operations { + int (*copyup)(struct dentry *dentry); +}; + +#define AuWbr_DIR 1 /* target is a dir */ +#define AuWbr_PARENT (1 << 1) /* always require a parent */ + +#define au_ftest_wbr(flags, name) ((flags) & AuWbr_##name) +#define au_fset_wbr(flags, name) { (flags) |= AuWbr_##name; } +#define au_fclr_wbr(flags, name) { (flags) &= ~AuWbr_##name; } + +struct au_wbr_create_operations { + int (*create)(struct dentry *dentry, unsigned int flags); + int (*init)(struct super_block *sb); + int (*fin)(struct super_block *sb); +}; + +struct au_wbr_mfs { + struct mutex mfs_lock; /* protect this structure */ + unsigned long mfs_jiffy; + unsigned long mfs_expire; + aufs_bindex_t mfs_bindex; + + unsigned long long mfsrr_bytes; + unsigned long long mfsrr_watermark; +}; + +struct pseudo_link { + union { + struct hlist_node hlist; + struct rcu_head rcu; + }; + struct inode *inode; +}; + +#define AuPlink_NHASH 100 +static inline int au_plink_hash(ino_t ino) +{ + return ino % AuPlink_NHASH; +} + +/* File-based Hierarchical Storage Management */ +struct au_fhsm { +#ifdef CONFIG_AUFS_FHSM + /* allow only one process who can receive the notification */ + spinlock_t fhsm_spin; + pid_t fhsm_pid; + wait_queue_head_t fhsm_wqh; + atomic_t fhsm_readable; + + /* these are protected by si_rwsem */ + unsigned long fhsm_expire; + aufs_bindex_t fhsm_bottom; +#endif +}; + +struct au_branch; +struct au_sbinfo { + /* nowait tasks in the system-wide workqueue */ + struct au_nowait_tasks si_nowait; + + /* + * tried sb->s_umount, but failed due to the dependecy between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* prevent recursive locking in deleting inode */ + struct { + unsigned long *bitmap; + spinlock_t tree_lock; + struct radix_tree_root tree; + } au_si_pid; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files (gone) from + * remount. + */ + atomic_long_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see AuSi_ flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bend; + + /* dirty trick to keep br_id plus */ + unsigned int si_last_br_id : + sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; + struct au_branch **si_branch; + + /* policy to select a writable branch */ + unsigned char si_wbr_copyup; + unsigned char si_wbr_create; + struct au_wbr_copyup_operations *si_wbr_copyup_ops; + struct au_wbr_create_operations *si_wbr_create_ops; + + /* round robin */ + atomic_t si_wbr_rr_next; + + /* most free space */ + struct au_wbr_mfs si_wbr_mfs; + + /* File-based Hierarchical Storage Management */ + struct au_fhsm si_fhsm; + + /* mount flags */ + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + + /* symlink to follow_link() and put_link() */ + struct au_sphlhead si_symlink; + + /* external inode number (bitmap and translation table) */ + vfs_readf_t si_xread; + vfs_writef_t si_xwrite; + struct file *si_xib; + struct mutex si_xib_mtx; /* protect xib members */ + unsigned long *si_xib_buf; + unsigned long si_xib_last_pindex; + int si_xib_next_bit; + aufs_bindex_t si_xino_brid; + unsigned long si_xino_jiffy; + unsigned long si_xino_expire; + /* reserved for future use */ + /* unsigned long long si_xib_limit; */ /* Max xib file size */ + +#ifdef CONFIG_AUFS_EXPORT + /* i_generation */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* dirty trick to suppoer atomic_open */ + struct au_sphlhead si_aopen; + + /* vdir parameters */ + unsigned long si_rdcache; /* max cache time in jiffies */ + unsigned int si_rdblk; /* deblk size */ + unsigned int si_rdhash; /* hash size */ + + /* + * If the number of whiteouts are larger than si_dirwh, leave all of + * them after au_whtmp_ren to reduce the cost of rmdir(2). + * future fsck.aufs or kernel thread will remove them later. + * Otherwise, remove all whiteouts and the dir in rmdir(2). + */ + unsigned int si_dirwh; + + /* pseudo_link list */ + struct au_sphlhead si_plink[AuPlink_NHASH]; + wait_queue_head_t si_plink_wq; + spinlock_t si_plink_maint_lock; + pid_t si_plink_maint_pid; + + /* file list */ + struct au_sphlhead si_files; + + /* with/without getattr, brother of sb->s_d_op */ + struct inode_operations *si_iop_array; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particulary when many aufs-es are mounted. + * but using sysfs is majority. + */ + struct kobject si_kobj; +#ifdef CONFIG_DEBUG_FS + struct dentry *si_dbgaufs; + struct dentry *si_dbgaufs_plink; + struct dentry *si_dbgaufs_xib; +#ifdef CONFIG_AUFS_EXPORT + struct dentry *si_dbgaufs_xigen; +#endif +#endif + +#ifdef CONFIG_AUFS_SBILIST + struct list_head si_list; +#endif + + /* dirty, necessary for unmounting, sysfs and sysrq */ + struct super_block *si_sb; +}; + +/* sbinfo status flags */ +/* + * set true when refresh_dirs() failed at remount time. + * then try refreshing dirs at access time again. + * if it is false, refreshing dirs at access time is unnecesary + */ +#define AuSi_FAILED_REFRESH_DIR 1 +#define AuSi_FHSM (1 << 1) /* fhsm is active now */ +#define AuSi_NO_DREVAL (1 << 2) /* disable all d_revalidate */ + +#ifndef CONFIG_AUFS_FHSM +#undef AuSi_FHSM +#define AuSi_FHSM 0 +#endif + +static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, + unsigned int flag) +{ + AuRwMustAnyLock(&sbi->si_rwsem); + return sbi->au_si_status & flag; +} +#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) +#define au_fset_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status |= AuSi_##name; \ +} while (0) +#define au_fclr_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status &= ~AuSi_##name; \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +/* policy to select one among writable branches */ +#define AuWbrCopyup(sbinfo, ...) \ + ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) +#define AuWbrCreate(sbinfo, ...) \ + ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) + +/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ +#define AuLock_DW 1 /* write-lock dentry */ +#define AuLock_IR (1 << 1) /* read-lock inode */ +#define AuLock_IW (1 << 2) /* write-lock inode */ +#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ +#define AuLock_DIRS (1 << 4) /* target is a pair of dirs */ +#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ +#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ +#define AuLock_GEN (1 << 7) /* test digen/iigen */ +#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) +#define au_fset_lock(flags, name) \ + do { (flags) |= AuLock_##name; } while (0) +#define au_fclr_lock(flags, name) \ + do { (flags) &= ~AuLock_##name; } while (0) + +/* ---------------------------------------------------------------------- */ + +/* super.c */ +extern struct file_system_type aufs_fs_type; +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(struct super_block *sb, void *array, + unsigned long long max, void *arg); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); + +/* sbinfo.c */ +void au_si_free(struct kobject *kobj); +int au_si_alloc(struct super_block *sb); +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr); + +unsigned int au_sigen_inc(struct super_block *sb); +aufs_bindex_t au_new_br_id(struct super_block *sb); + +int si_read_lock(struct super_block *sb, int flags); +int si_write_lock(struct super_block *sb, int flags); +int aufs_read_lock(struct dentry *dentry, int flags); +void aufs_read_unlock(struct dentry *dentry, int flags); +void aufs_write_lock(struct dentry *dentry); +void aufs_write_unlock(struct dentry *dentry); +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); + +int si_pid_test_slow(struct super_block *sb); +void si_pid_set_slow(struct super_block *sb); +void si_pid_clr_slow(struct super_block *sb); + +/* wbr_policy.c */ +extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; +extern struct au_wbr_create_operations au_wbr_create_ops[]; +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex); +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t bstart); + +/* mvdown.c */ +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *arg); + +#ifdef CONFIG_AUFS_FHSM +/* fhsm.c */ + +static inline pid_t au_fhsm_pid(struct au_fhsm *fhsm) +{ + pid_t pid; + + spin_lock(&fhsm->fhsm_spin); + pid = fhsm->fhsm_pid; + spin_unlock(&fhsm->fhsm_spin); + + return pid; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force); +void au_fhsm_wrote_all(struct super_block *sb, int force); +int au_fhsm_fd(struct super_block *sb, int oflags); +int au_fhsm_br_alloc(struct au_branch *br); +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex); +void au_fhsm_fin(struct super_block *sb); +void au_fhsm_init(struct au_sbinfo *sbinfo); +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec); +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo); +#else +AuStubVoid(au_fhsm_wrote, struct super_block *sb, aufs_bindex_t bindex, + int force) +AuStubVoid(au_fhsm_wrote_all, struct super_block *sb, int force) +AuStub(int, au_fhsm_fd, return -EOPNOTSUPP, struct super_block *sb, int oflags) +AuStub(pid_t, au_fhsm_pid, return 0, struct au_fhsm *fhsm) +AuStubInt0(au_fhsm_br_alloc, struct au_branch *br) +AuStubVoid(au_fhsm_set_bottom, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(au_fhsm_fin, struct super_block *sb) +AuStubVoid(au_fhsm_init, struct au_sbinfo *sbinfo) +AuStubVoid(au_fhsm_set, struct au_sbinfo *sbinfo, unsigned int sec) +AuStubVoid(au_fhsm_show, struct seq_file *seq, struct au_sbinfo *sbinfo) +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_sbinfo *au_sbi(struct super_block *sb) +{ + return sb->s_fs_info; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +int au_test_nfsd(void); +void au_export_init(struct super_block *sb); +void au_xigen_inc(struct inode *inode); +int au_xigen_new(struct inode *inode); +int au_xigen_set(struct super_block *sb, struct file *base); +void au_xigen_clr(struct super_block *sb); + +static inline int au_busy_or_stale(void) +{ + if (!au_test_nfsd()) + return -EBUSY; + return -ESTALE; +} +#else +AuStubInt0(au_test_nfsd, void) +AuStubVoid(au_export_init, struct super_block *sb) +AuStubVoid(au_xigen_inc, struct inode *inode) +AuStubInt0(au_xigen_new, struct inode *inode) +AuStubInt0(au_xigen_set, struct super_block *sb, struct file *base) +AuStubVoid(au_xigen_clr, struct super_block *sb) +AuStub(int, au_busy_or_stale, return -EBUSY, void) +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_SBILIST +/* module.c */ +extern struct au_splhead au_sbilist; + +static inline void au_sbilist_init(void) +{ + au_spl_init(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_spl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_spl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + spin_lock(&au_sbilist.spin); +} + +static inline void au_sbilist_unlock(void) +{ + spin_unlock(&au_sbilist.spin); +} +#define AuGFP_SBILIST GFP_ATOMIC +#else +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ +#else +AuStubVoid(au_sbilist_init, void) +AuStubVoid(au_sbilist_add, struct super_block *sb) +AuStubVoid(au_sbilist_del, struct super_block *sb) +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif + +/* ---------------------------------------------------------------------- */ + +static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ +#ifdef CONFIG_DEBUG_FS + sbinfo->si_dbgaufs = NULL; + sbinfo->si_dbgaufs_plink = NULL; + sbinfo->si_dbgaufs_xib = NULL; +#ifdef CONFIG_AUFS_EXPORT + sbinfo->si_dbgaufs_xigen = NULL; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +static inline pid_t si_pid_bit(void) +{ + /* the origin of pid is 1, but the bitmap's is 0 */ + return current->pid - 1; +} + +static inline int si_pid_test(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) + return test_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + return si_pid_test_slow(sb); +} + +static inline void si_pid_set(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + set_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_set_slow(sb); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(!test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + clear_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_clr_slow(sb); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +/* + * __si_read_lock, __si_write_lock, + * __si_read_unlock, __si_write_unlock, __si_downgrade_lock + */ +AuSimpleRwsemFuncs(__si, struct super_block *sb, &au_sbi(sb)->si_rwsem); + +#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) +#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) +#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) + +static inline void si_noflush_read_lock(struct super_block *sb) +{ + __si_read_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_read_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_read_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +static inline void si_noflush_write_lock(struct super_block *sb) +{ + __si_write_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_write_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_write_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +#if 0 /* reserved */ +static inline int si_read_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_read_trylock(sb); +} +#endif + +static inline void si_read_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_read_unlock(sb); +} + +#if 0 /* reserved */ +static inline int si_write_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_write_trylock(sb); +} +#endif + +static inline void si_write_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_write_unlock(sb); +} + +#if 0 /* reserved */ +static inline void si_downgrade_lock(struct super_block *sb) +{ + __si_downgrade_lock(sb); +} +#endif + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_sbend(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bend; +} + +static inline unsigned int au_mntflags(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_mntflags; +} + +static inline unsigned int au_sigen(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_generation; +} + +static inline void au_ninodes_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_ninodes); +} + +static inline void au_ninodes_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_ninodes)); + atomic_long_dec(&au_sbi(sb)->si_ninodes); +} + +static inline void au_nfiles_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_nfiles); +} + +static inline void au_nfiles_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_nfiles)); + atomic_long_dec(&au_sbi(sb)->si_nfiles); +} + +static inline struct au_branch *au_sbr(struct super_block *sb, + aufs_bindex_t bindex) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_branch[0 + bindex]; +} + +static inline void au_xino_brid_set(struct super_block *sb, aufs_bindex_t brid) +{ + SiMustWriteLock(sb); + au_sbi(sb)->si_xino_brid = brid; +} + +static inline aufs_bindex_t au_xino_brid(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_xino_brid; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- linux-4.4.0.orig/fs/aufs/sysaufs.c +++ linux-4.4.0/fs/aufs/sysaufs.c @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and lifetime management + * they are necessary regardless sysfs is disabled. + */ + +#include +#include "aufs.h" + +unsigned long sysaufs_si_mask; +struct kset *sysaufs_kset; + +#define AuSiAttr(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = sysaufs_si_##_name, \ +} + +static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); +struct attribute *sysaufs_si_attrs[] = { + &sysaufs_si_attr_xi_path.attr, + NULL, +}; + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + +static struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, + .default_attrs = sysaufs_si_attrs +}; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + + sbinfo->si_kobj.kset = sysaufs_kset; + /* cf. sysaufs_name() */ + err = kobject_init_and_add + (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, + SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); + + dbgaufs_si_null(sbinfo); + if (!err) { + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + return err; +} + +void sysaufs_fin(void) +{ + dbgaufs_fin(); + sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); + kset_unregister(sysaufs_kset); +} + +int __init sysaufs_init(void) +{ + int err; + + do { + get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); + } while (!sysaufs_si_mask); + + err = -EINVAL; + sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); + if (unlikely(!sysaufs_kset)) + goto out; + err = PTR_ERR(sysaufs_kset); + if (IS_ERR(sysaufs_kset)) + goto out; + err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); + if (unlikely(err)) { + kset_unregister(sysaufs_kset); + goto out; + } + + err = dbgaufs_init(); + if (unlikely(err)) + sysaufs_fin(); +out: + return err; +} --- linux-4.4.0.orig/fs/aufs/sysaufs.h +++ linux-4.4.0/fs/aufs/sysaufs.h @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and mount lifetime management + */ + +#ifndef __SYSAUFS_H__ +#define __SYSAUFS_H__ + +#ifdef __KERNEL__ + +#include +#include "module.h" + +struct super_block; +struct au_sbinfo; + +struct sysaufs_si_attr { + struct attribute attr; + int (*show)(struct seq_file *seq, struct super_block *sb); +}; + +/* ---------------------------------------------------------------------- */ + +/* sysaufs.c */ +extern unsigned long sysaufs_si_mask; +extern struct kset *sysaufs_kset; +extern struct attribute *sysaufs_si_attrs[]; +int sysaufs_si_init(struct au_sbinfo *sbinfo); +int __init sysaufs_init(void); +void sysaufs_fin(void); + +/* ---------------------------------------------------------------------- */ + +/* some people doesn't like to show a pointer in kernel */ +static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) +{ + return sysaufs_si_mask ^ (unsigned long)sbinfo; +} + +#define SysaufsSiNamePrefix "si_" +#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) +static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) +{ + snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", + sysaufs_si_id(sbinfo)); +} + +struct au_branch; +#ifdef CONFIG_SYSFS +/* sysfs.c */ +extern struct attribute_group *sysaufs_attr_group; + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf); +long au_brinfo_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg); +#endif + +void sysaufs_br_init(struct au_branch *br); +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); + +#define sysaufs_brs_init() do {} while (0) + +#else +#define sysaufs_attr_group NULL + +AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) +AuStub(ssize_t, sysaufs_si_show, return 0, struct kobject *kobj, + struct attribute *attr, char *buf) +AuStubVoid(sysaufs_br_init, struct au_branch *br) +AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) + +static inline void sysaufs_brs_init(void) +{ + sysaufs_brs = 0; +} + +#endif /* CONFIG_SYSFS */ + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ --- linux-4.4.0.orig/fs/aufs/sysfs.c +++ linux-4.4.0/fs/aufs/sysfs.c @@ -0,0 +1,376 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface + */ + +#include +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_FS_MODULE +/* this entry violates the "one line per file" policy of sysfs */ +static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + ssize_t err; + static char *conf = +/* this file is generated at compiling */ +#include "conf.str" + ; + + err = snprintf(buf, PAGE_SIZE, conf); + if (unlikely(err >= PAGE_SIZE)) + err = -EFBIG; + return err; +} + +static struct kobj_attribute au_config_attr = __ATTR_RO(config); +#endif + +static struct attribute *au_attr[] = { +#ifdef CONFIG_AUFS_FS_MODULE + &au_config_attr.attr, +#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + +static struct attribute_group sysaufs_attr_group_body = { + .attrs = au_attr +}; + +struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) +{ + int err; + + SiMustAnyLock(sb); + + err = 0; + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_path(seq, au_sbi(sb)->si_xib); + seq_putc(seq, '\n'); + } + return err; +} + +/* + * the lifetime of branch is independent from the entry under sysfs. + * sysfs handles the lifetime of the entry, and never call ->show() after it is + * unlinked. + */ +static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, + aufs_bindex_t bindex, int idx) +{ + int err; + struct path path; + struct dentry *root; + struct au_branch *br; + au_br_perm_str_t perm; + + AuDbg("b%d\n", bindex); + + err = 0; + root = sb->s_root; + di_read_lock_parent(root, !AuLock_IR); + br = au_sbr(sb, bindex); + + switch (idx) { + case AuBrSysfs_BR: + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(root, bindex); + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s\n", perm.a); + } + break; + case AuBrSysfs_BRID: + seq_printf(seq, "%d\n", br->br_id); + break; + } + di_read_unlock(root, !AuLock_IR); + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct seq_file *au_seq(char *p, ssize_t len) +{ + struct seq_file *seq; + + seq = kzalloc(sizeof(*seq), GFP_NOFS); + if (seq) { + /* mutex_init(&seq.lock); */ + seq->buf = p; + seq->size = len; + return seq; /* success */ + } + + seq = ERR_PTR(-ENOMEM); + return seq; +} + +#define SysaufsBr_PREFIX "br" +#define SysaufsBrid_PREFIX "brid" + +/* todo: file size may exceed PAGE_SIZE */ +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + ssize_t err; + int idx; + long l; + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct seq_file *seq; + char *name; + struct attribute **cattr; + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + sb = sbinfo->si_sb; + + /* + * prevent a race condition between sysfs and aufs. + * for instance, sysfs_file_read() calls sysfs_get_active_two() which + * prohibits maintaining the sysfs entries. + * hew we acquire read lock after sysfs_get_active_two(). + * on the other hand, the remount process may maintain the sysfs/aufs + * entries after acquiring write lock. + * it can cause a deadlock. + * simply we gave up processing read here. + */ + err = -EBUSY; + if (unlikely(!si_noflush_read_trylock(sb))) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_unlock; + + name = (void *)attr->name; + cattr = sysaufs_si_attrs; + while (*cattr) { + if (!strcmp(name, (*cattr)->name)) { + err = container_of(*cattr, struct sysaufs_si_attr, attr) + ->show(seq, sb); + goto out_seq; + } + cattr++; + } + + if (!strncmp(name, SysaufsBrid_PREFIX, + sizeof(SysaufsBrid_PREFIX) - 1)) { + idx = AuBrSysfs_BRID; + name += sizeof(SysaufsBrid_PREFIX) - 1; + } else if (!strncmp(name, SysaufsBr_PREFIX, + sizeof(SysaufsBr_PREFIX) - 1)) { + idx = AuBrSysfs_BR; + name += sizeof(SysaufsBr_PREFIX) - 1; + } else + BUG(); + + err = kstrtol(name, 10, &l); + if (!err) { + bend = au_sbend(sb); + if (l <= bend) + err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l, idx); + else + err = -ENOENT; + } + +out_seq: + if (!err) { + err = seq->count; + /* sysfs limit */ + if (unlikely(err == PAGE_SIZE)) + err = -EFBIG; + } + kfree(seq); +out_unlock: + si_read_unlock(sb); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_brinfo(struct super_block *sb, union aufs_brinfo __user *arg) +{ + int err; + int16_t brid; + aufs_bindex_t bindex, bend; + size_t sz; + char *buf; + struct seq_file *seq; + struct au_branch *br; + + si_read_lock(sb, AuLock_FLUSH); + bend = au_sbend(sb); + err = bend + 1; + if (!arg) + goto out; + + err = -ENOMEM; + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_buf; + + sz = sizeof(*arg) - offsetof(union aufs_brinfo, path); + for (bindex = 0; bindex <= bend; bindex++, arg++) { + err = !access_ok(VERIFY_WRITE, arg, sizeof(*arg)); + if (unlikely(err)) + break; + + br = au_sbr(sb, bindex); + brid = br->br_id; + BUILD_BUG_ON(sizeof(brid) != sizeof(arg->id)); + err = __put_user(brid, &arg->id); + if (unlikely(err)) + break; + + BUILD_BUG_ON(sizeof(br->br_perm) != sizeof(arg->perm)); + err = __put_user(br->br_perm, &arg->perm); + if (unlikely(err)) + break; + + err = au_seq_path(seq, &br->br_path); + if (unlikely(err)) + break; + seq_putc(seq, '\0'); + if (!seq_has_overflowed(seq)) { + err = copy_to_user(arg->path, seq->buf, seq->count); + seq->count = 0; + if (unlikely(err)) + break; + } else { + err = -E2BIG; + goto out_seq; + } + } + if (unlikely(err)) + err = -EFAULT; + +out_seq: + kfree(seq); +out_buf: + free_page((unsigned long)buf); +out: + si_read_unlock(sb); + return err; +} + +long au_brinfo_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +void sysaufs_br_init(struct au_branch *br) +{ + int i; + struct au_brsysfs *br_sysfs; + struct attribute *attr; + + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + attr = &br_sysfs->attr; + sysfs_attr_init(attr); + attr->name = br_sysfs->name; + attr->mode = S_IRUGO; + br_sysfs++; + } +} + +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_branch *br; + struct kobject *kobj; + struct au_brsysfs *br_sysfs; + int i; + aufs_bindex_t bend; + + dbgaufs_brs_del(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + sysfs_remove_file(kobj, &br_sysfs->attr); + br_sysfs++; + } + } +} + +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, i; + aufs_bindex_t bend; + struct kobject *kobj; + struct au_branch *br; + struct au_brsysfs *br_sysfs; + + dbgaufs_brs_add(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + snprintf(br_sysfs[AuBrSysfs_BR].name, sizeof(br_sysfs->name), + SysaufsBr_PREFIX "%d", bindex); + snprintf(br_sysfs[AuBrSysfs_BRID].name, sizeof(br_sysfs->name), + SysaufsBrid_PREFIX "%d", bindex); + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + err = sysfs_create_file(kobj, &br_sysfs->attr); + if (unlikely(err)) + pr_warn("failed %s under sysfs(%d)\n", + br_sysfs->name, err); + br_sysfs++; + } + } +} --- linux-4.4.0.orig/fs/aufs/sysrq.c +++ linux-4.4.0/fs/aufs/sysrq.c @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * magic sysrq hanlder + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + struct au_sphlhead *files; + struct au_finfo *finfo; + + plevel = au_plevel; + au_plevel = KERN_WARNING; + + /* since we define pr_fmt, call printk directly */ +#define pr(str) printk(KERN_WARNING AUFS_NAME ": " str) + + sbinfo = au_sbi(sb); + printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); + pr("superblock\n"); + au_dpri_sb(sb); + +#if 0 + pr("root dentry\n"); + au_dpri_dentry(sb->s_root); + pr("root inode\n"); + au_dpri_inode(d_inode(sb->s_root)); +#endif + +#if 0 + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + + err = au_dpages_init(&dpages, GFP_ATOMIC); + if (unlikely(err)) + break; + err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); + if (!err) + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) + au_dpri_dentry(dpage->dentries[j]); + } + au_dpages_free(&dpages); + } while (0); +#endif + +#if 1 + { + struct inode *i; + + pr("isolated inode\n"); + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (1 || hlist_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&sb->s_inode_list_lock); + } +#endif + pr("files\n"); + files = &au_sbi(sb)->si_files; + spin_lock(&files->spin); + hlist_for_each_entry(finfo, &files->head, fi_hlist) { + umode_t mode; + + file = finfo->fi_file; + mode = file_inode(file)->i_mode; + if (!special_file(mode)) + au_dpri_file(file); + } + spin_unlock(&files->spin); + pr("done\n"); + +#undef pr + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, S_IRUGO); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + + lockdep_off(); + au_sbilist_lock(); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + sysrq_sb(sbinfo->si_sb); + au_sbilist_unlock(); + lockdep_on(); +} + +static struct sysrq_key_op au_sysrq_op = { + .handler = au_sysrq, + .help_msg = "Aufs", + .action_msg = "Aufs", + .enable_mask = SYSRQ_ENABLE_DUMP +}; + +/* ---------------------------------------------------------------------- */ + +int __init au_sysrq_init(void) +{ + int err; + char key; + + err = -1; + key = *aufs_sysrq_key; + if ('a' <= key && key <= 'z') + err = register_sysrq_key(key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d, sysrq=%c\n", err, key); + return err; +} + +void au_sysrq_fin(void) +{ + int err; + + err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} --- linux-4.4.0.orig/fs/aufs/vdir.c +++ linux-4.4.0/fs/aufs/vdir.c @@ -0,0 +1,888 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * virtual or vertical directory + */ + +#include "aufs.h" + +static unsigned int calc_size(int nlen) +{ + return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); +} + +static int set_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) { + p->de->de_str.len = 0; + /* smp_mb(); */ + return 0; + } + return -1; /* error */ +} + +/* returns true or false */ +static int is_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) + return !p->de->de_str.len; + return 1; +} + +static unsigned char *last_deblk(struct au_vdir *vdir) +{ + return vdir->vd_deblk[vdir->vd_nblk - 1]; +} + +/* ---------------------------------------------------------------------- */ + +/* estimate the appropriate size for name hash table */ +unsigned int au_rdhash_est(loff_t sz) +{ + unsigned int n; + + n = UINT_MAX; + sz >>= 10; + if (sz < n) + n = sz; + if (sz < AUFS_RDHASH_DEF) + n = AUFS_RDHASH_DEF; + /* pr_info("n %u\n", n); */ + return n; +} + +/* + * the allocated memory has to be freed by + * au_nhash_wh_free() or au_nhash_de_free(). + */ +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) +{ + struct hlist_head *head; + unsigned int u; + size_t sz; + + sz = sizeof(*nhash->nh_head) * num_hash; + head = kmalloc(sz, gfp); + if (head) { + nhash->nh_num = num_hash; + nhash->nh_head = head; + for (u = 0; u < num_hash; u++) + INIT_HLIST_HEAD(head++); + return 0; /* success */ + } + + return -ENOMEM; +} + +static void nhash_count(struct hlist_head *head) +{ +#if 0 + unsigned long n; + struct hlist_node *pos; + + n = 0; + hlist_for_each(pos, head) + n++; + pr_info("%lu\n", n); +#endif +} + +static void au_nhash_wh_do_free(struct hlist_head *head) +{ + struct au_vdir_wh *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, wh_hash) + kfree(pos); +} + +static void au_nhash_de_do_free(struct hlist_head *head) +{ + struct au_vdir_dehstr *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, hash) + au_cache_free_vdir_dehstr(pos); +} + +static void au_nhash_do_free(struct au_nhash *nhash, + void (*free)(struct hlist_head *head)) +{ + unsigned int n; + struct hlist_head *head; + + n = nhash->nh_num; + if (!n) + return; + + head = nhash->nh_head; + while (n-- > 0) { + nhash_count(head); + free(head++); + } + kfree(nhash->nh_head); +} + +void au_nhash_wh_free(struct au_nhash *whlist) +{ + au_nhash_do_free(whlist, au_nhash_wh_do_free); +} + +static void au_nhash_de_free(struct au_nhash *delist) +{ + au_nhash_do_free(delist, au_nhash_de_do_free); +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit) +{ + int num; + unsigned int u, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + num = 0; + n = whlist->nh_num; + head = whlist->nh_head; + for (u = 0; u < n; u++, head++) + hlist_for_each_entry(pos, head, wh_hash) + if (pos->wh_bindex == btgt && ++num > limit) + return 1; + return 0; +} + +static struct hlist_head *au_name_hash(struct au_nhash *nhash, + unsigned char *name, + unsigned int len) +{ + unsigned int v; + /* const unsigned int magic_bit = 12; */ + + AuDebugOn(!nhash->nh_num || !nhash->nh_head); + + v = 0; + while (len--) + v += *name++; + /* v = hash_long(v, magic_bit); */ + v %= nhash->nh_num; + return nhash->nh_head + v; +} + +static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, + int nlen) +{ + return str->len == nlen && !memcmp(str->name, name, nlen); +} + +/* returns found or not */ +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + head = au_name_hash(whlist, name, nlen); + hlist_for_each_entry(pos, head, wh_hash) { + str = &pos->wh_str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +/* returns found(true) or not */ +static int test_known(struct au_nhash *delist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_dehstr *pos; + struct au_vdir_destr *str; + + head = au_name_hash(delist, name, nlen); + hlist_for_each_entry(pos, head, hash) { + str = pos->str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, + unsigned char d_type) +{ +#ifdef CONFIG_AUFS_SHWH + wh->wh_ino = ino; + wh->wh_type = d_type; +#endif +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh) +{ + int err; + struct au_vdir_destr *str; + struct au_vdir_wh *wh; + + AuDbg("%.*s\n", nlen, name); + AuDebugOn(!whlist->nh_num || !whlist->nh_head); + + err = -ENOMEM; + wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); + if (unlikely(!wh)) + goto out; + + err = 0; + wh->wh_bindex = bindex; + if (shwh) + au_shwh_init_wh(wh, ino, d_type); + str = &wh->wh_str; + str->len = nlen; + memcpy(str->name, name, nlen); + hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); + /* smp_mb(); */ + +out: + return err; +} + +static int append_deblk(struct au_vdir *vdir) +{ + int err; + unsigned long ul; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, deblk_end; + unsigned char **o; + + err = -ENOMEM; + o = krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS); + if (unlikely(!o)) + goto out; + + vdir->vd_deblk = o; + p.deblk = kmalloc(deblk_sz, GFP_NOFS); + if (p.deblk) { + ul = vdir->vd_nblk++; + vdir->vd_deblk[ul] = p.deblk; + vdir->vd_last.ul = ul; + vdir->vd_last.p.deblk = p.deblk; + deblk_end.deblk = p.deblk + deblk_sz; + err = set_deblk_end(&p, &deblk_end); + } + +out: + return err; +} + +static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, + unsigned int d_type, struct au_nhash *delist) +{ + int err; + unsigned int sz; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, *room, deblk_end; + struct au_vdir_dehstr *dehstr; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + room = &vdir->vd_last.p; + AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk + || !is_deblk_end(room, &deblk_end)); + + sz = calc_size(nlen); + if (unlikely(sz > deblk_end.deblk - room->deblk)) { + err = append_deblk(vdir); + if (unlikely(err)) + goto out; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + /* smp_mb(); */ + AuDebugOn(room->deblk != p.deblk); + } + + err = -ENOMEM; + dehstr = au_cache_alloc_vdir_dehstr(); + if (unlikely(!dehstr)) + goto out; + + dehstr->str = &room->de->de_str; + hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); + room->de->de_ino = ino; + room->de->de_type = d_type; + room->de->de_str.len = nlen; + memcpy(room->de->de_str.name, name, nlen); + + err = 0; + room->deblk += sz; + if (unlikely(set_deblk_end(room, &deblk_end))) + err = append_deblk(vdir); + /* smp_mb(); */ + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_vdir_free(struct au_vdir *vdir) +{ + unsigned char **deblk; + + deblk = vdir->vd_deblk; + while (vdir->vd_nblk--) + kfree(*deblk++); + kfree(vdir->vd_deblk); + au_cache_free_vdir(vdir); +} + +static struct au_vdir *alloc_vdir(struct file *file) +{ + struct au_vdir *vdir; + struct super_block *sb; + int err; + + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + err = -ENOMEM; + vdir = au_cache_alloc_vdir(); + if (unlikely(!vdir)) + goto out; + + vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); + if (unlikely(!vdir->vd_deblk)) + goto out_free; + + vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; + if (!vdir->vd_deblk_sz) { + /* estimate the appropriate size for deblk */ + vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); + /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ + } + vdir->vd_nblk = 0; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + err = append_deblk(vdir); + if (!err) + return vdir; /* success */ + + kfree(vdir->vd_deblk); + +out_free: + au_cache_free_vdir(vdir); +out: + vdir = ERR_PTR(err); + return vdir; +} + +static int reinit_vdir(struct au_vdir *vdir) +{ + int err; + union au_vdir_deblk_p p, deblk_end; + + while (vdir->vd_nblk > 1) { + kfree(vdir->vd_deblk[vdir->vd_nblk - 1]); + /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ + vdir->vd_nblk--; + } + p.deblk = vdir->vd_deblk[0]; + deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; + err = set_deblk_end(&p, &deblk_end); + /* keep vd_dblk_sz */ + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + /* smp_mb(); */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuFillVdir_CALLED 1 +#define AuFillVdir_WHABLE (1 << 1) +#define AuFillVdir_SHWH (1 << 2) +#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) +#define au_fset_fillvdir(flags, name) \ + do { (flags) |= AuFillVdir_##name; } while (0) +#define au_fclr_fillvdir(flags, name) \ + do { (flags) &= ~AuFillVdir_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuFillVdir_SHWH +#define AuFillVdir_SHWH 0 +#endif + +struct fillvdir_arg { + struct dir_context ctx; + struct file *file; + struct au_vdir *vdir; + struct au_nhash delist; + struct au_nhash whlist; + aufs_bindex_t bindex; + unsigned int flags; + int err; +}; + +static int fillvdir(struct dir_context *ctx, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ + struct fillvdir_arg *arg = container_of(ctx, struct fillvdir_arg, ctx); + char *name = (void *)__name; + struct super_block *sb; + ino_t ino; + const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); + + arg->err = 0; + sb = arg->file->f_path.dentry->d_sb; + au_fset_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + if (nlen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (test_known(&arg->delist, name, nlen) + || au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already exists or whiteouted */ + + arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); + if (!arg->err) { + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + d_type = DT_UNKNOWN; + arg->err = append_de(arg->vdir, name, nlen, ino, + d_type, &arg->delist); + } + } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { + name += AUFS_WH_PFX_LEN; + nlen -= AUFS_WH_PFX_LEN; + if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already whiteouted */ + + if (shwh) + arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, + &ino); + if (!arg->err) { + if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) + d_type = DT_UNKNOWN; + arg->err = au_nhash_append_wh + (&arg->whlist, name, nlen, ino, d_type, + arg->bindex, shwh); + } + } + +out: + if (!arg->err) + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, + struct au_nhash *whlist, struct au_nhash *delist) +{ +#ifdef CONFIG_AUFS_SHWH + int err; + unsigned int nh, u; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct hlist_node *n; + char *p, *o; + struct au_vdir_destr *destr; + + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; + o = p = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + nh = whlist->nh_num; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + for (u = 0; u < nh; u++) { + head = whlist->nh_head + u; + hlist_for_each_entry_safe(pos, n, head, wh_hash) { + destr = &pos->wh_str; + memcpy(p, destr->name, destr->len); + err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, + pos->wh_ino, pos->wh_type, delist); + if (unlikely(err)) + break; + } + } + + free_page((unsigned long)o); + +out: + AuTraceErr(err); + return err; +#else + return 0; +#endif +} + +static int au_do_read_vdir(struct fillvdir_arg *arg) +{ + int err; + unsigned int rdhash; + loff_t offset; + aufs_bindex_t bend, bindex, bstart; + unsigned char shwh; + struct file *hf, *file; + struct super_block *sb; + + file = arg->file; + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); + err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out_delist; + + err = 0; + arg->flags = 0; + shwh = 0; + if (au_opt_test(au_mntflags(sb), SHWH)) { + shwh = 1; + au_fset_fillvdir(arg->flags, SHWH); + } + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; !err && bindex <= bend; bindex++) { + hf = au_hf_dir(file, bindex); + if (!hf) + continue; + + offset = vfsub_llseek(hf, 0, SEEK_SET); + err = offset; + if (unlikely(offset)) + break; + + arg->bindex = bindex; + au_fclr_fillvdir(arg->flags, WHABLE); + if (shwh + || (bindex != bend + && au_br_whable(au_sbr_perm(sb, bindex)))) + au_fset_fillvdir(arg->flags, WHABLE); + do { + arg->err = 0; + au_fclr_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(hf, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); + + /* + * dir_relax() may be good for concurrency, but aufs should not + * use it since it will cause a lockdep problem. + */ + } + + if (!err && shwh) + err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); + + au_nhash_wh_free(&arg->whlist); + +out_delist: + au_nhash_de_free(&arg->delist); +out: + return err; +} + +static int read_vdir(struct file *file, int may_read) +{ + int err; + unsigned long expire; + unsigned char do_read; + struct fillvdir_arg arg = { + .ctx = { + .actor = fillvdir + } + }; + struct inode *inode; + struct au_vdir *vdir, *allocated; + + err = 0; + inode = file_inode(file); + IMustLock(inode); + SiMustAnyLock(inode->i_sb); + + allocated = NULL; + do_read = 0; + expire = au_sbi(inode->i_sb)->si_rdcache; + vdir = au_ivdir(inode); + if (!vdir) { + do_read = 1; + vdir = alloc_vdir(file); + err = PTR_ERR(vdir); + if (IS_ERR(vdir)) + goto out; + err = 0; + allocated = vdir; + } else if (may_read + && (inode->i_version != vdir->vd_version + || time_after(jiffies, vdir->vd_jiffy + expire))) { + do_read = 1; + err = reinit_vdir(vdir); + if (unlikely(err)) + goto out; + } + + if (!do_read) + return 0; /* success */ + + arg.file = file; + arg.vdir = vdir; + err = au_do_read_vdir(&arg); + if (!err) { + /* file->f_pos = 0; */ /* todo: ctx->pos? */ + vdir->vd_version = inode->i_version; + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + if (allocated) + au_set_ivdir(inode, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) +{ + int err, rerr; + unsigned long ul, n; + const unsigned int deblk_sz = src->vd_deblk_sz; + + AuDebugOn(tgt->vd_nblk != 1); + + err = -ENOMEM; + if (tgt->vd_nblk < src->vd_nblk) { + unsigned char **p; + + p = krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk = p; + } + + if (tgt->vd_deblk_sz != deblk_sz) { + unsigned char *p; + + tgt->vd_deblk_sz = deblk_sz; + p = krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk[0] = p; + } + memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); + tgt->vd_version = src->vd_version; + tgt->vd_jiffy = src->vd_jiffy; + + n = src->vd_nblk; + for (ul = 1; ul < n; ul++) { + tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, + GFP_NOFS); + if (unlikely(!tgt->vd_deblk[ul])) + goto out; + tgt->vd_nblk++; + } + tgt->vd_nblk = n; + tgt->vd_last.ul = tgt->vd_last.ul; + tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; + tgt->vd_last.p.deblk += src->vd_last.p.deblk + - src->vd_deblk[src->vd_last.ul]; + /* smp_mb(); */ + return 0; /* success */ + +out: + rerr = reinit_vdir(tgt); + BUG_ON(rerr); + return err; +} + +int au_vdir_init(struct file *file) +{ + int err; + struct inode *inode; + struct au_vdir *vdir_cache, *allocated; + + /* test file->f_pos here instead of ctx->pos */ + err = read_vdir(file, !file->f_pos); + if (unlikely(err)) + goto out; + + allocated = NULL; + vdir_cache = au_fvdir_cache(file); + if (!vdir_cache) { + vdir_cache = alloc_vdir(file); + err = PTR_ERR(vdir_cache); + if (IS_ERR(vdir_cache)) + goto out; + allocated = vdir_cache; + } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { + /* test file->f_pos here instead of ctx->pos */ + err = reinit_vdir(vdir_cache); + if (unlikely(err)) + goto out; + } else + return 0; /* success */ + + inode = file_inode(file); + err = copy_vdir(vdir_cache, au_ivdir(inode)); + if (!err) { + file->f_version = inode->i_version; + if (allocated) + au_set_fvdir_cache(file, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static loff_t calc_offset(struct au_vdir *vdir) +{ + loff_t offset; + union au_vdir_deblk_p p; + + p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; + offset = vdir->vd_last.p.deblk - p.deblk; + offset += vdir->vd_deblk_sz * vdir->vd_last.ul; + return offset; +} + +/* returns true or false */ +static int seek_vdir(struct file *file, struct dir_context *ctx) +{ + int valid; + unsigned int deblk_sz; + unsigned long ul, n; + loff_t offset; + union au_vdir_deblk_p p, deblk_end; + struct au_vdir *vdir_cache; + + valid = 1; + vdir_cache = au_fvdir_cache(file); + offset = calc_offset(vdir_cache); + AuDbg("offset %lld\n", offset); + if (ctx->pos == offset) + goto out; + + vdir_cache->vd_last.ul = 0; + vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; + if (!ctx->pos) + goto out; + + valid = 0; + deblk_sz = vdir_cache->vd_deblk_sz; + ul = div64_u64(ctx->pos, deblk_sz); + AuDbg("ul %lu\n", ul); + if (ul >= vdir_cache->vd_nblk) + goto out; + + n = vdir_cache->vd_nblk; + for (; ul < n; ul++) { + p.deblk = vdir_cache->vd_deblk[ul]; + deblk_end.deblk = p.deblk + deblk_sz; + offset = ul; + offset *= deblk_sz; + while (!is_deblk_end(&p, &deblk_end) && offset < ctx->pos) { + unsigned int l; + + l = calc_size(p.de->de_str.len); + offset += l; + p.deblk += l; + } + if (!is_deblk_end(&p, &deblk_end)) { + valid = 1; + vdir_cache->vd_last.ul = ul; + vdir_cache->vd_last.p = p; + break; + } + } + +out: + /* smp_mb(); */ + AuTraceErr(!valid); + return valid; +} + +int au_vdir_fill_de(struct file *file, struct dir_context *ctx) +{ + unsigned int l, deblk_sz; + union au_vdir_deblk_p deblk_end; + struct au_vdir *vdir_cache; + struct au_vdir_de *de; + + vdir_cache = au_fvdir_cache(file); + if (!seek_vdir(file, ctx)) + return 0; + + deblk_sz = vdir_cache->vd_deblk_sz; + while (1) { + deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + deblk_end.deblk += deblk_sz; + while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { + de = vdir_cache->vd_last.p.de; + AuDbg("%.*s, off%lld, i%lu, dt%d\n", + de->de_str.len, de->de_str.name, ctx->pos, + (unsigned long)de->de_ino, de->de_type); + if (unlikely(!dir_emit(ctx, de->de_str.name, + de->de_str.len, de->de_ino, + de->de_type))) { + /* todo: ignore the error caused by udba? */ + /* return err; */ + return 0; + } + + l = calc_size(de->de_str.len); + vdir_cache->vd_last.p.deblk += l; + ctx->pos += l; + } + if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { + vdir_cache->vd_last.ul++; + vdir_cache->vd_last.p.deblk + = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + ctx->pos = deblk_sz * vdir_cache->vd_last.ul; + continue; + } + break; + } + + /* smp_mb(); */ + return 0; +} --- linux-4.4.0.orig/fs/aufs/vfsub.c +++ linux-4.4.0/fs/aufs/vfsub.c @@ -0,0 +1,848 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#include +#include +#include +#include "aufs.h" + +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; + struct kstat st; + struct super_block *h_sb; + + /* for remote fs, leave work for its getattr or d_revalidate */ + /* for bad i_attr fs, handle them in aufs_getattr() */ + /* still some fs may acquire i_mutex. we need to skip them */ + err = 0; + if (!did) + did = &err; + h_sb = h_path->dentry->d_sb; + *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); + if (*did) + err = vfs_getattr(h_path, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + struct file *file; + + file = dentry_open(path, flags /* | __FMODE_NONOTIFY */, + current_cred()); + if (!IS_ERR_OR_NULL(file) + && (file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(d_inode(path->dentry)); + + return file; +} + +struct file *vfsub_filp_open(const char *path, int oflags, int mode) +{ + struct file *file; + + lockdep_off(); + file = filp_open(path, + oflags /* | __FMODE_NONOTIFY */, + mode); + lockdep_on(); + if (IS_ERR(file)) + goto out; + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + +out: + return file; +} + +/* + * Ideally this function should call VFS:do_last() in order to keep all its + * checkings. But it is very hard for aufs to regenerate several VFS internal + * structure such as nameidata. This is a second (or third) best approach. + * cf. linux/fs/namei.c:do_last(), lookup_open() and atomic_open(). + */ +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args, struct au_branch *br) +{ + int err; + struct file *file = args->file; + /* copied from linux/fs/namei.c:atomic_open() */ + struct dentry *const DENTRY_NOT_SET = (void *)-1UL; + + IMustLock(dir); + AuDebugOn(!dir->i_op->atomic_open); + + err = au_br_test_oflag(args->open_flag, br); + if (unlikely(err)) + goto out; + + args->file->f_path.dentry = DENTRY_NOT_SET; + args->file->f_path.mnt = au_br_mnt(br); + err = dir->i_op->atomic_open(dir, dentry, file, args->open_flag, + args->create_mode, args->opened); + if (err >= 0) { + /* some filesystems don't set FILE_CREATED while succeeded? */ + if (*args->opened & FILE_CREATED) + fsnotify_create(dir, dentry); + } else + goto out; + + + if (!err) { + /* todo: call VFS:may_open() here */ + err = open_check_o_direct(file); + /* todo: ima_file_check() too? */ + if (!err && (args->open_flag & __FMODE_EXEC)) + err = deny_write_access(file); + if (unlikely(err)) + /* note that the file is created and still opened */ + goto out; + } + + atomic_inc(&br->br_count); + fsnotify_open(file); + +out: + return err; +} + +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) +{ + int err; + + err = kern_path(name, flags, path); + if (!err && d_is_positive(path->dentry)) + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + return err; +} + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len) +{ + struct path path = { + .mnt = NULL + }; + + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(d_inode(parent)); + + path.dentry = lookup_one_len(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (d_is_positive(path.dentry)) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +void vfsub_call_lkup_one(void *args) +{ + struct vfsub_lkup_one_args *a = args; + *a->errp = vfsub_lkup_one(a->name, a->parent); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + struct dentry *d; + + lockdep_off(); + d = lock_rename(d1, d2); + lockdep_on(); + au_hn_suspend(hdir1); + if (hdir1 != hdir2) + au_hn_suspend(hdir2); + + return d; +} + +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + au_hn_resume(hdir1); + if (hdir1 != hdir2) + au_hn_resume(hdir2); + lockdep_off(); + unlock_rename(d1, d2); + lockdep_on(); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_create(struct inode *dir, struct path *path, int mode, bool want_excl) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, 0); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_create(dir, path->dentry, mode, want_excl); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_symlink(path, d, symname); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_symlink(dir, path->dentry, symname); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, new_encode_dev(dev)); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_mknod(dir, path->dentry, mode, dev); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +static int au_test_nlink(struct inode *inode) +{ + const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ + + if (!au_test_fs_no_limit_nlink(inode->i_sb) + || inode->i_nlink < link_max) + return 0; + return -EMLINK; +} + +int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path, + struct inode **delegated_inode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + err = au_test_nlink(d_inode(src_dentry)); + if (unlikely(err)) + return err; + + /* we don't call may_linkat() */ + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_link(src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_link(src_dentry, dir, path->dentry, delegated_inode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + /* fuse has different memory inode for the same inumber */ + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct path *path, + struct inode **delegated_inode) +{ + int err; + struct path tmp = { + .mnt = path->mnt + }; + struct dentry *d; + + IMustLock(dir); + IMustLock(src_dir); + + d = path->dentry; + path->dentry = d->d_parent; + tmp.dentry = src_dentry->d_parent; + err = security_path_rename(&tmp, src_dentry, path, d, /*flags*/0); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rename(src_dir, src_dentry, dir, path->dentry, + delegated_inode, /*flags*/0); + lockdep_on(); + if (!err) { + int did; + + tmp.dentry = d->d_parent; + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mkdir(path, d, mode); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_mkdir(dir, path->dentry, mode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rmdir(struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_rmdir(path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rmdir(dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { + .dentry = path->dentry->d_parent, + .mnt = path->mnt + }; + + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: support mmap_sem? */ +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_read(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +/* todo: kernel_read()? */ +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_read_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_write(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_write_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +int vfsub_flush(struct file *file, fl_owner_t id) +{ + int err; + + err = 0; + if (file->f_op->flush) { + if (!au_test_nfs(file->f_path.dentry->d_sb)) + err = file->f_op->flush(file, id); + else { + lockdep_off(); + err = file->f_op->flush(file, id); + lockdep_on(); + } + if (!err) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); + /*ignore*/ + } + return err; +} + +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx) +{ + int err; + + AuDbg("%pD, ctx{%pf, %llu}\n", file, ctx->actor, ctx->pos); + + lockdep_off(); + err = iterate_dir(file, ctx); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_to(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) + vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_from(pipe, out, ppos, len, flags); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_fsync(struct file *file, struct path *path, int datasync) +{ + int err; + + /* file can be NULL */ + lockdep_off(); + err = vfs_fsync(file, datasync); + lockdep_on(); + if (!err) { + if (!path) { + AuDebugOn(!file); + path = &file->f_path; + } + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + } + return err; +} + +/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file) +{ + int err; + struct inode *h_inode; + struct super_block *h_sb; + + if (!h_file) { + err = vfsub_truncate(h_path, length); + goto out; + } + + h_inode = d_inode(h_path->dentry); + h_sb = h_inode->i_sb; + lockdep_off(); + sb_start_write(h_sb); + lockdep_on(); + err = locks_verify_truncate(h_inode, h_file, length); + if (!err) + err = security_path_truncate(h_path); + if (!err) { + lockdep_off(); + err = do_truncate(h_path->dentry, length, attr, h_file); + lockdep_on(); + } + lockdep_off(); + sb_end_write(h_sb); + lockdep_on(); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_vfsub_mkdir_args { + int *errp; + struct inode *dir; + struct path *path; + int mode; +}; + +static void au_call_vfsub_mkdir(void *args) +{ + struct au_vfsub_mkdir_args *a = args; + *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); +} + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_mkdir(dir, path, mode); + lockdep_on(); + } else { + struct au_vfsub_mkdir_args args = { + .errp = &err, + .dir = dir, + .path = path, + .mode = mode + }; + wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +struct au_vfsub_rmdir_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void au_call_vfsub_rmdir(void *args) +{ + struct au_vfsub_rmdir_args *a = args; + *a->errp = vfsub_rmdir(a->dir, a->path); +} + +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_rmdir(dir, path); + lockdep_on(); + } else { + struct au_vfsub_rmdir_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct notify_change_args { + int *errp; + struct path *path; + struct iattr *ia; + struct inode **delegated_inode; +}; + +static void call_notify_change(void *args) +{ + struct notify_change_args *a = args; + struct inode *h_inode; + + h_inode = d_inode(a->path->dentry); + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { + lockdep_off(); + *a->errp = notify_change(a->path->dentry, a->ia, + a->delegated_inode); + lockdep_on(); + if (!*a->errp) + vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ + } + AuTraceErr(*a->errp); +} + +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + call_notify_change(&args); + + return err; +} + +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err, wkq_err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + wkq_err = au_wkq_wait(call_notify_change, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct unlink_args { + int *errp; + struct inode *dir; + struct path *path; + struct inode **delegated_inode; +}; + +static void call_unlink(void *args) +{ + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && au_dcount(d) == 1); + + IMustLock(a->dir); + + a->path->dentry = d->d_parent; + *a->errp = security_path_unlink(a->path, d); + a->path->dentry = d; + if (unlikely(*a->errp)) + return; + + if (!stop_sillyrename) + dget(d); + h_inode = NULL; + if (d_is_positive(d)) { + h_inode = d_inode(d); + ihold(h_inode); + } + + lockdep_off(); + *a->errp = vfs_unlink(a->dir, d, a->delegated_inode); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { + .dentry = d->d_parent, + .mnt = a->path->mnt + }; + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + + if (!stop_sillyrename) + dput(d); + if (h_inode) + iput(h_inode); + + AuTraceErr(*a->errp); +} + +/* + * @dir: must be locked. + * @dentry: target dentry. + */ +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force) +{ + int err; + struct unlink_args args = { + .errp = &err, + .dir = dir, + .path = path, + .delegated_inode = delegated_inode + }; + + if (!force) + call_unlink(&args); + else { + int wkq_err; + + wkq_err = au_wkq_wait(call_unlink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} --- linux-4.4.0.orig/fs/aufs/vfsub.h +++ linux-4.4.0/fs/aufs/vfsub.h @@ -0,0 +1,287 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#ifndef __AUFS_VFSUB_H__ +#define __AUFS_VFSUB_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern void __mnt_drop_write(struct vfsmount *); +extern int open_check_o_direct(struct file *f); + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for lower inode */ +/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ +/* reduce? gave up. */ +enum { + AuLsc_I_Begin = I_MUTEX_PARENT2, /* 5 */ + AuLsc_I_PARENT, /* lower inode, parent first */ + AuLsc_I_PARENT2, /* copyup dirs */ + AuLsc_I_PARENT3, /* copyup wh */ + AuLsc_I_CHILD, + AuLsc_I_CHILD2, + AuLsc_I_End +}; + +/* to debug easier, do not make them inlined functions */ +#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) +#define IMustLock(i) MtxMustLock(&(i)->i_mutex) + +/* ---------------------------------------------------------------------- */ + +static inline void vfsub_drop_nlink(struct inode *inode) +{ + AuDebugOn(!inode->i_nlink); + drop_nlink(inode); +} + +static inline void vfsub_dead_dir(struct inode *inode) +{ + AuDebugOn(!S_ISDIR(inode->i_mode)); + inode->i_flags |= S_DEAD; + clear_nlink(inode); +} + +static inline int vfsub_native_ro(struct inode *inode) +{ + return (inode->i_sb->s_flags & MS_RDONLY) + || IS_RDONLY(inode) + /* || IS_APPEND(inode) */ + || IS_IMMUTABLE(inode); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); +struct file *vfsub_dentry_open(struct path *path, int flags); +struct file *vfsub_filp_open(const char *path, int oflags, int mode); +struct vfsub_aopen_args { + struct file *file; + unsigned int open_flag; + umode_t create_mode; + int *opened; +}; +struct au_branch; +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args, struct au_branch *br); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len); + +struct vfsub_lkup_one_args { + struct dentry **errp; + struct qstr *name; + struct dentry *parent; +}; + +static inline struct dentry *vfsub_lkup_one(struct qstr *name, + struct dentry *parent) +{ + return vfsub_lookup_one_len(name->name, parent, name->len); +} + +void vfsub_call_lkup_one(void *args); + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_mnt_want_write(struct vfsmount *mnt) +{ + int err; + + lockdep_off(); + err = mnt_want_write(mnt); + lockdep_on(); + return err; +} + +static inline void vfsub_mnt_drop_write(struct vfsmount *mnt) +{ + lockdep_off(); + mnt_drop_write(mnt); + lockdep_on(); +} + +#if 0 /* reserved */ +static inline void vfsub_mnt_drop_write_file(struct file *file) +{ + lockdep_off(); + mnt_drop_write_file(file); + lockdep_on(); +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_hinode; +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); + +int vfsub_create(struct inode *dir, struct path *path, int mode, + bool want_excl); +int vfsub_symlink(struct inode *dir, struct path *path, + const char *symname); +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); +int vfsub_link(struct dentry *src_dentry, struct inode *dir, + struct path *path, struct inode **delegated_inode); +int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, + struct inode *hdir, struct path *path, + struct inode **delegated_inode); +int vfsub_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_rmdir(struct inode *dir, struct path *path); + +/* ---------------------------------------------------------------------- */ + +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +int vfsub_flush(struct file *file, fl_owner_t id); +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx); + +static inline loff_t vfsub_f_size_read(struct file *file) +{ + return i_size_read(file_inode(file)); +} + +static inline unsigned int vfsub_file_flags(struct file *file) +{ + unsigned int flags; + + spin_lock(&file->f_lock); + flags = file->f_flags; + spin_unlock(&file->f_lock); + + return flags; +} + +#if 0 /* reserved */ +static inline void vfsub_file_accessed(struct file *h_file) +{ + file_accessed(h_file); + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ +} +#endif + +#if 0 /* reserved */ +static inline void vfsub_touch_atime(struct vfsmount *h_mnt, + struct dentry *h_dentry) +{ + struct path h_path = { + .dentry = h_dentry, + .mnt = h_mnt + }; + touch_atime(&h_path); + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ +} +#endif + +static inline int vfsub_update_time(struct inode *h_inode, struct timespec *ts, + int flags) +{ + return generic_update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); + +static inline long vfsub_truncate(struct path *path, loff_t length) +{ + long err; + + lockdep_off(); + err = vfs_truncate(path, length); + lockdep_on(); + return err; +} + +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file); +int vfsub_fsync(struct file *file, struct path *path, int datasync); + +/* ---------------------------------------------------------------------- */ + +static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t err; + + lockdep_off(); + err = vfs_llseek(file, offset, origin); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_sio_rmdir(struct inode *dir, struct path *path); +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force); + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + + lockdep_off(); + err = vfs_setxattr(dentry, name, value, size, flags); + lockdep_on(); + + return err; +} + +static inline int vfsub_removexattr(struct dentry *dentry, const char *name) +{ + int err; + + lockdep_off(); + err = vfs_removexattr(dentry, name); + lockdep_on(); + + return err; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ --- linux-4.4.0.orig/fs/aufs/wbr_policy.c +++ linux-4.4.0/fs/aufs/wbr_policy.c @@ -0,0 +1,765 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * policies for selecting one among multiple writable branches + */ + +#include +#include "aufs.h" + +/* subset of cpup_attr() */ +static noinline_for_stack +int au_cpdown_attr(struct path *h_path, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct inode *h_isrc; + + h_isrc = d_inode(h_src); + ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; + ia.ia_mode = h_isrc->i_mode; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(d_inode(h_path->dentry), h_isrc->i_flags); + /* no delegation since it is just created */ + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + } + + return err; +} + +#define AuCpdown_PARENT_OPQ 1 +#define AuCpdown_WHED (1 << 1) +#define AuCpdown_MADE_DIR (1 << 2) +#define AuCpdown_DIROPQ (1 << 3) +#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) +#define au_fset_cpdown(flags, name) \ + do { (flags) |= AuCpdown_##name; } while (0) +#define au_fclr_cpdown(flags, name) \ + do { (flags) &= ~AuCpdown_##name; } while (0) + +static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, + unsigned int *flags) +{ + int err; + struct dentry *opq_dentry; + + opq_dentry = au_diropq_create(dentry, bdst); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out; + dput(opq_dentry); + au_fset_cpdown(*flags, DIROPQ); + +out: + return err; +} + +static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, + struct inode *dir, aufs_bindex_t bdst) +{ + int err; + struct path h_path; + struct au_branch *br; + + br = au_sbr(dentry->d_sb, bdst); + h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, + dentry); + } + dput(h_path.dentry); + +out: + return err; +} + +static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg) +{ + int err, rerr; + aufs_bindex_t bopq, bstart; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + unsigned int *flags = arg; + + bstart = au_dbstart(dentry); + /* dentry is di-locked */ + parent = dget_parent(dentry); + dir = d_inode(parent); + h_dir = d_inode(h_parent); + AuDebugOn(h_dir != au_h_iptr(dir, bdst)); + IMustLock(h_dir); + + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (unlikely(err < 0)) + goto out; + h_path.dentry = au_h_dptr(dentry, bdst); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); + err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, + S_IRWXU | S_IRUGO | S_IXUGO); + if (unlikely(err)) + goto out_put; + au_fset_cpdown(*flags, MADE_DIR); + + bopq = au_dbdiropq(dentry); + au_fclr_cpdown(*flags, WHED); + au_fclr_cpdown(*flags, DIROPQ); + if (au_dbwh(dentry) == bdst) + au_fset_cpdown(*flags, WHED); + if (!au_ftest_cpdown(*flags, PARENT_OPQ) && bopq <= bdst) + au_fset_cpdown(*flags, PARENT_OPQ); + h_inode = d_inode(h_path.dentry); + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, flags); + if (unlikely(err)) { + mutex_unlock(&h_inode->i_mutex); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, bstart)); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(err)) + goto out_opq; + + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); + if (unlikely(err)) + goto out_opq; + } + + inode = d_inode(dentry); + if (au_ibend(inode) < bdst) + au_set_ibend(inode, bdst); + au_set_h_iptr(inode, bdst, au_igrab(h_inode), + au_hi_flags(inode, /*isdir*/1)); + au_fhsm_wrote(dentry->d_sb, bdst, /*force*/0); + goto out; /* success */ + + /* revert */ +out_opq: + if (au_ftest_cpdown(*flags, DIROPQ)) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(rerr)) { + AuIOErr("failed removing diropq for %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + goto out; + } + } +out_dir: + if (au_ftest_cpdown(*flags, MADE_DIR)) { + rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); + if (unlikely(rerr)) { + AuIOErr("failed removing %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + } + } +out_put: + au_set_h_dptr(dentry, bdst, NULL); + if (au_dbend(dentry) == bdst) + au_update_dbend(dentry); +out: + dput(parent); + return err; +} + +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + unsigned int flags; + + flags = 0; + err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &flags); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for create */ + +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, i, j, ndentry; + aufs_bindex_t bopq; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *parent, *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + parent = dget_parent(dentry); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); + if (unlikely(err)) + goto out_free; + + err = bindex; + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + di_read_lock_parent2(d, !AuLock_IR); + bopq = au_dbdiropq(d); + di_read_unlock(d, !AuLock_IR); + if (bopq >= 0 && bopq < err) + err = bopq; + } + } + +out_free: + dput(parent); + au_dpages_free(&dpages); +out: + return err; +} + +static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) +{ + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) + return bindex; + return -EROFS; +} + +/* top down parent */ +static int au_wbr_create_tdp(struct dentry *dentry, + unsigned int flags __maybe_unused) +{ + int err; + aufs_bindex_t bstart, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + err = bstart; + if (!au_br_rdonly(au_sbr(sb, bstart))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbstart(parent); bindex < bstart; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) { + err = au_wbr_bu(sb, bstart - 1); + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + } + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* an exception for the policy other than tdp */ +static int au_wbr_create_exp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bdiropq; + struct dentry *parent; + + err = -1; + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + bdiropq = au_dbdiropq(parent); + if (bwh >= 0) { + if (bdiropq >= 0) + err = min(bdiropq, bwh); + else + err = bwh; + AuDbg("%d\n", err); + } else if (bdiropq >= 0) { + err = bdiropq; + AuDbg("%d\n", err); + } + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + + if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) + err = -1; + + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* round robin */ +static int au_wbr_create_init_rr(struct super_block *sb) +{ + int err; + + err = au_wbr_bu(sb, au_sbend(sb)); + atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ + /* smp_mb(); */ + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_rr(struct dentry *dentry, unsigned int flags) +{ + int err, nbr; + unsigned int u; + aufs_bindex_t bindex, bend; + struct super_block *sb; + atomic_t *next; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + next = &au_sbi(sb)->si_wbr_rr_next; + bend = au_sbend(sb); + nbr = bend + 1; + for (bindex = 0; bindex <= bend; bindex++) { + if (!au_ftest_wbr(flags, DIR)) { + err = atomic_dec_return(next) + 1; + /* modulo for 0 is meaningless */ + if (unlikely(!err)) + err = atomic_dec_return(next) + 1; + } else + err = atomic_read(next); + AuDbg("%d\n", err); + u = err; + err = u % nbr; + AuDbg("%d\n", err); + if (!au_br_rdonly(au_sbr(sb, err))) + break; + err = -EROFS; + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space */ +static void au_mfs(struct dentry *dentry, struct dentry *parent) +{ + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + struct dentry *h_parent; + aufs_bindex_t bindex, bend; + int err; + unsigned long long b, bavail; + struct path h_path; + /* reduce the stack usage */ + struct kstatfs *st; + + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) { + AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); + return; + } + + bavail = 0; + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + MtxMustLock(&mfs->mfs_lock); + mfs->mfs_bindex = -EROFS; + mfs->mfsrr_bytes = 0; + if (!parent) { + bindex = 0; + bend = au_sbend(sb); + } else { + bindex = au_dbstart(parent); + bend = au_dbtaildir(parent); + } + + for (; bindex <= bend; bindex++) { + if (parent) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + } + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_br_mnt(br); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, st); + if (unlikely(err)) { + AuWarn1("failed statfs, b%d, %d\n", bindex, err); + continue; + } + + /* when the available size is equal, select the lower one */ + BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) + || sizeof(b) < sizeof(st->f_bsize)); + b = st->f_bavail * st->f_bsize; + br->br_wbr->wbr_bytes = b; + if (b >= bavail) { + bavail = b; + mfs->mfs_bindex = bindex; + mfs->mfs_jiffy = jiffies; + } + } + + mfs->mfsrr_bytes = bavail; + AuDbg("b%d\n", mfs->mfs_bindex); + kfree(st); +} + +static int au_wbr_create_mfs(struct dentry *dentry, unsigned int flags) +{ + int err; + struct dentry *parent; + struct super_block *sb; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + parent = NULL; + if (au_ftest_wbr(flags, PARENT)) + parent = dget_parent(dentry); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0 + || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) + au_mfs(dentry, parent); + mutex_unlock(&mfs->mfs_lock); + err = mfs->mfs_bindex; + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfs(struct super_block *sb) +{ + struct au_wbr_mfs *mfs; + + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_init(&mfs->mfs_lock); + mfs->mfs_jiffy = 0; + mfs->mfs_bindex = -EROFS; + + return 0; +} + +static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) +{ + mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space and then round robin */ +static int au_wbr_create_mfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_mfs(dentry, flags); + if (err >= 0) { + mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) + err = au_wbr_create_rr(dentry, flags); + mutex_unlock(&mfs->mfs_lock); + } + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfsrr(struct super_block *sb) +{ + int err; + + au_wbr_create_init_mfs(sb); /* ignore */ + err = au_wbr_create_init_rr(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* top down parent and most free space */ +static int au_wbr_create_pmfs(struct dentry *dentry, unsigned int flags) +{ + int err, e2; + unsigned long long b; + aufs_bindex_t bindex, bstart, bend; + struct super_block *sb; + struct dentry *parent, *h_parent; + struct au_branch *br; + + err = au_wbr_create_tdp(dentry, flags); + if (unlikely(err < 0)) + goto out; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + bend = au_dbtaildir(parent); + if (bstart == bend) + goto out_parent; /* success */ + + e2 = au_wbr_create_mfs(dentry, flags); + if (e2 < 0) + goto out_parent; /* success */ + + /* when the available size is equal, select upper one */ + sb = dentry->d_sb; + br = au_sbr(sb, err); + b = br->br_wbr->wbr_bytes; + AuDbg("b%d, %llu\n", err, b); + + for (bindex = bstart; bindex <= bend; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { + b = br->br_wbr->wbr_bytes; + err = bindex; + AuDbg("b%d, %llu\n", err, b); + } + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out_parent: + dput(parent); +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * - top down parent + * - most free space with parent + * - most free space round-robin regardless parent + */ +static int au_wbr_create_pmfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + unsigned long long watermark; + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_pmfs(dentry, flags | AuWbr_PARENT); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, err); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + watermark = mfs->mfsrr_watermark; + mutex_unlock(&mfs->mfs_lock); + if (br->br_wbr->wbr_bytes < watermark) + /* regardless the parent dir */ + err = au_wbr_create_mfsrr(dentry, flags); + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for copyup */ + +/* top down parent */ +static int au_wbr_copyup_tdp(struct dentry *dentry) +{ + return au_wbr_create_tdp(dentry, /*flags, anything is ok*/0); +} + +/* bottom up parent */ +static int au_wbr_copyup_bup(struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, bstart; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + for (bindex = au_dbstart(dentry); bindex >= bstart; bindex--) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) + err = au_wbr_bu(sb, bstart - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t bstart) +{ + int err; + + err = au_wbr_bu(dentry->d_sb, bstart); + AuDbg("b%d\n", err); + if (err > bstart) + err = au_wbr_nonopq(dentry, err); + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_copyup_bu(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + err = au_wbr_do_copyup_bu(dentry, bstart); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { + [AuWbrCopyup_TDP] = { + .copyup = au_wbr_copyup_tdp + }, + [AuWbrCopyup_BUP] = { + .copyup = au_wbr_copyup_bup + }, + [AuWbrCopyup_BU] = { + .copyup = au_wbr_copyup_bu + } +}; + +struct au_wbr_create_operations au_wbr_create_ops[] = { + [AuWbrCreate_TDP] = { + .create = au_wbr_create_tdp + }, + [AuWbrCreate_RR] = { + .create = au_wbr_create_rr, + .init = au_wbr_create_init_rr + }, + [AuWbrCreate_MFS] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSV] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRR] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRRV] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFS] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSV] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRR] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRRV] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + } +}; --- linux-4.4.0.orig/fs/aufs/whout.c +++ linux-4.4.0/fs/aufs/whout.c @@ -0,0 +1,1060 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#include "aufs.h" + +#define WH_MASK S_IRUGO + +/* + * If a directory contains this file, then it is opaque. We start with the + * .wh. flag so that it is blocked by lookup. + */ +static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, + sizeof(AUFS_WH_DIROPQ) - 1); + +/* + * generate whiteout name, which is NOT terminated by NULL. + * @name: original d_name.name + * @len: original d_name.len + * @wh: whiteout qstr + * returns zero when succeeds, otherwise error. + * succeeded value as wh->name should be freed by kfree(). + */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) +{ + char *p; + + if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) + return -ENAMETOOLONG; + + wh->len = name->len + AUFS_WH_PFX_LEN; + p = kmalloc(wh->len, GFP_NOFS); + wh->name = p; + if (p) { + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); + /* smp_mb(); */ + return 0; + } + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if the @wh_name exists under @h_parent. + * @try_sio specifies the necessary of super-io. + */ +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, int try_sio) +{ + int err; + struct dentry *wh_dentry; + + if (!try_sio) + wh_dentry = vfsub_lkup_one(wh_name, h_parent); + else + wh_dentry = au_sio_lkup_one(wh_name, h_parent); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) { + if (err == -ENAMETOOLONG) + err = 0; + goto out; + } + + err = 0; + if (d_is_negative(wh_dentry)) + goto out_wh; /* success */ + + err = 1; + if (d_is_reg(wh_dentry)) + goto out_wh; /* success */ + + err = -EIO; + AuIOErr("%pd Invalid whiteout entry type 0%o.\n", + wh_dentry, d_inode(wh_dentry)->i_mode); + +out_wh: + dput(wh_dentry); +out: + return err; +} + +/* + * test if the @h_dentry sets opaque or not. + */ +int au_diropq_test(struct dentry *h_dentry) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_dentry); + err = au_wh_test(h_dentry, &diropq_name, + au_test_h_perm_sio(h_dir, MAY_EXEC)); + return err; +} + +/* + * returns a negative dentry whose name is unique and temporary. + */ +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix) +{ + struct dentry *dentry; + int i; + char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], + *name, *p; + /* strict atomic_t is unnecessary here */ + static unsigned short cnt; + struct qstr qs; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + + name = defname; + qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; + if (unlikely(prefix->len > DNAME_INLINE_LEN)) { + dentry = ERR_PTR(-ENAMETOOLONG); + if (unlikely(qs.len > NAME_MAX)) + goto out; + dentry = ERR_PTR(-ENOMEM); + name = kmalloc(qs.len + 1, GFP_NOFS); + if (unlikely(!name)) + goto out; + } + + /* doubly whiteout-ed */ + memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); + p = name + AUFS_WH_PFX_LEN * 2; + memcpy(p, prefix->name, prefix->len); + p += prefix->len; + *p++ = '.'; + AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); + + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); + dentry = au_sio_lkup_one(&qs, h_parent); + if (IS_ERR(dentry) || d_is_negative(dentry)) + goto out_name; + dput(dentry); + } + /* pr_warn("could not get random name\n"); */ + dentry = ERR_PTR(-EEXIST); + AuDbg("%.*s\n", AuLNPair(&qs)); + BUG(); + +out_name: + if (name != defname) + kfree(name); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* + * rename the @h_dentry on @br to the whiteouted temporary name. + */ +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + struct dentry *h_parent; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + /* under the same dir, no need to lock_rename() */ + delegated = NULL; + err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path, &delegated); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * functions for removing a whiteout + */ + +static int do_unlink_wh(struct inode *h_dir, struct path *h_path) +{ + int err, force; + struct inode *delegated; + + /* + * forces superio when the dir has a sticky bit. + * this may be a violation of unix fs semantics. + */ + force = (h_dir->i_mode & S_ISVTX) + && !uid_eq(current_fsuid(), d_inode(h_path->dentry)->i_uid); + delegated = NULL; + err = vfsub_unlink(h_dir, h_path, &delegated, force); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + return err; +} + +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry) +{ + int err; + + err = do_unlink_wh(h_dir, h_path); + if (!err && dentry) + au_set_dbwh(dentry, -1); + + return err; +} + +static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh, + struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + + err = 0; + h_path.dentry = vfsub_lkup_one(wh, h_parent); + if (IS_ERR(h_path.dentry)) + err = PTR_ERR(h_path.dentry); + else { + if (d_is_reg(h_path.dentry)) + err = do_unlink_wh(d_inode(h_parent), &h_path); + dput(h_path.dentry); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * initialize/clean whiteout for a branch + */ + +static void au_wh_clean(struct inode *h_dir, struct path *whpath, + const int isdir) +{ + int err; + struct inode *delegated; + + if (d_is_negative(whpath->dentry)) + return; + + if (isdir) + err = vfsub_rmdir(h_dir, whpath); + else { + delegated = NULL; + err = vfsub_unlink(h_dir, whpath, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } + if (unlikely(err)) + pr_warn("failed removing %pd (%d), ignored.\n", + whpath->dentry, err); +} + +static int test_linkable(struct dentry *h_root) +{ + struct inode *h_dir = d_inode(h_root); + + if (h_dir->i_op->link) + return 0; + + pr_err("%pd (%s) doesn't support link(2), use noplink and rw+nolwh\n", + h_root, au_sbtype(h_root->d_sb)); + return -ENOSYS; +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ +static int au_whdir(struct inode *h_dir, struct path *path) +{ + int err; + + err = -EEXIST; + if (d_is_negative(path->dentry)) { + int mode = S_IRWXU; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= S_IXUGO; + err = vfsub_mkdir(h_dir, path, mode); + } else if (d_is_dir(path->dentry)) + err = 0; + else + pr_err("unknown %pd exists\n", path->dentry); + + return err; +} + +struct au_wh_base { + const struct qstr *name; + struct dentry *dentry; +}; + +static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], + struct path *h_path) +{ + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); +} + +/* + * returns tri-state, + * minus: error, caller should print the message + * zero: succuess + * plus: error, caller should NOT print the message + */ +static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_root); + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * for the moment, aufs supports the branch filesystem which does not support + * link(2). testing on FAT which does not support i_op->setattr() fully either, + * copyup failed. finally, such filesystem will not be used as the writable + * branch. + * + * returns tri-state, see above. + */ +static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + WbrWhMustWriteLock(wbr); + + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + /* + * todo: should this create be done in /sbin/mount.aufs helper? + */ + err = -EEXIST; + h_dir = d_inode(h_root); + if (d_is_negative(base[AuBrWh_BASE].dentry)) { + h_path->dentry = base[AuBrWh_BASE].dentry; + err = vfsub_create(h_dir, h_path, WH_MASK, /*want_excl*/true); + } else if (d_is_reg(base[AuBrWh_BASE].dentry)) + err = 0; + else + pr_err("unknown %pd2 exists\n", base[AuBrWh_BASE].dentry); + if (unlikely(err)) + goto out; + + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); + + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * initialize the whiteout base file/dir for @br. + */ +int au_wh_init(struct au_branch *br, struct super_block *sb) +{ + int err, i; + const unsigned char do_plink + = !!au_opt_test(au_mntflags(sb), PLINK); + struct inode *h_dir; + struct path path = br->br_path; + struct dentry *h_root = path.dentry; + struct au_wbr *wbr = br->br_wbr; + static const struct qstr base_name[] = { + [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, + sizeof(AUFS_BASE_NAME) - 1), + [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, + sizeof(AUFS_PLINKDIR_NAME) - 1), + [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, + sizeof(AUFS_ORPHDIR_NAME) - 1) + }; + struct au_wh_base base[] = { + [AuBrWh_BASE] = { + .name = base_name + AuBrWh_BASE, + .dentry = NULL + }, + [AuBrWh_PLINK] = { + .name = base_name + AuBrWh_PLINK, + .dentry = NULL + }, + [AuBrWh_ORPH] = { + .name = base_name + AuBrWh_ORPH, + .dentry = NULL + } + }; + + if (wbr) + WbrWhMustWriteLock(wbr); + + for (i = 0; i < AuBrWh_Last; i++) { + /* doubly whiteouted */ + struct dentry *d; + + d = au_wh_lkup(h_root, (void *)base[i].name, br); + err = PTR_ERR(d); + if (IS_ERR(d)) + goto out; + + base[i].dentry = d; + AuDebugOn(wbr + && wbr->wbr_wh[i] + && wbr->wbr_wh[i] != base[i].dentry); + } + + if (wbr) + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + + err = 0; + if (!au_br_writable(br->br_perm)) { + h_dir = d_inode(h_root); + au_wh_init_ro(h_dir, base, &path); + } else if (!au_br_wh_linkable(br->br_perm)) { + err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } else { + err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } + goto out; /* success */ + +out_err: + pr_err("an error(%d) on the writable branch %pd(%s)\n", + err, h_root, au_sbtype(h_root->d_sb)); +out: + for (i = 0; i < AuBrWh_Last; i++) + dput(base[i].dentry); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * whiteouts are all hard-linked usually. + * when its link count reaches a ceiling, we create a new whiteout base + * asynchronously. + */ + +struct reinit_br_wh { + struct super_block *sb; + struct au_branch *br; +}; + +static void reinit_br_wh(void *arg) +{ + int err; + aufs_bindex_t bindex; + struct path h_path; + struct reinit_br_wh *a = arg; + struct au_wbr *wbr; + struct inode *dir, *delegated; + struct dentry *h_root; + struct au_hinode *hdir; + + err = 0; + wbr = a->br->br_wbr; + /* big aufs lock */ + si_noflush_write_lock(a->sb); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(a->sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + di_read_lock_parent(a->sb->s_root, AuLock_IR); + dir = d_inode(a->sb->s_root); + hdir = au_hi(dir, bindex); + h_root = au_h_dptr(a->sb->s_root, bindex); + AuDebugOn(h_root != au_br_dentry(a->br)); + + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + wbr_wh_write_lock(wbr); + err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, + h_root, a->br); + if (!err) { + h_path.dentry = wbr->wbr_whbase; + h_path.mnt = au_br_mnt(a->br); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, + /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + pr_warn("%pd is moved, ignored\n", wbr->wbr_whbase); + err = 0; + } + dput(wbr->wbr_whbase); + wbr->wbr_whbase = NULL; + if (!err) + err = au_wh_init(a->br, a->sb); + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + di_read_unlock(a->sb->s_root, AuLock_IR); + if (!err) + au_fhsm_wrote(a->sb, bindex, /*force*/0); + +out: + if (wbr) + atomic_dec(&wbr->wbr_wh_running); + atomic_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + kfree(arg); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) +{ + int do_dec, wkq_err; + struct reinit_br_wh *arg; + + do_dec = 1; + if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) + goto out; + + /* ignore ENOMEM */ + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (arg) { + /* + * dec(wh_running), kfree(arg) and dec(br_count) + * in reinit function + */ + arg->sb = sb; + arg->br = br; + atomic_inc(&br->br_count); + wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + atomic_dec(&br->br_wbr->wbr_wh_running); + atomic_dec(&br->br_count); + kfree(arg); + } + do_dec = 0; + } + +out: + if (do_dec) + atomic_dec(&br->br_wbr->wbr_wh_running); +} + +/* ---------------------------------------------------------------------- */ + +/* + * create the whiteout @wh. + */ +static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *wh) +{ + int err; + struct path h_path = { + .dentry = wh + }; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir, *delegated; + + h_parent = wh->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + br = au_sbr(sb, bindex); + h_path.mnt = au_br_mnt(br); + wbr = br->br_wbr; + wbr_wh_read_lock(wbr); + if (wbr->wbr_whbase) { + delegated = NULL; + err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + if (!err || err != -EMLINK) + goto out; + + /* link count full. re-initialize br_whbase. */ + kick_reinit_br_wh(sb, br); + } + + /* return this error in this context */ + err = vfsub_create(h_dir, &h_path, WH_MASK, /*want_excl*/true); + if (!err) + au_fhsm_wrote(sb, bindex, /*force*/0); + +out: + wbr_wh_read_unlock(wbr); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create or remove the diropq. + */ +static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *opq_dentry, *h_dentry; + struct super_block *sb; + struct au_branch *br; + int err; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + opq_dentry = vfsub_lkup_one(&diropq_name, h_dentry); + if (IS_ERR(opq_dentry)) + goto out; + + if (au_ftest_diropq(flags, CREATE)) { + err = link_or_create_wh(sb, bindex, opq_dentry); + if (!err) { + au_set_dbdiropq(dentry, bindex); + goto out; /* success */ + } + } else { + struct path tmp = { + .dentry = opq_dentry, + .mnt = au_br_mnt(br) + }; + err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &tmp); + if (!err) + au_set_dbdiropq(dentry, -1); + } + dput(opq_dentry); + opq_dentry = ERR_PTR(err); + +out: + return opq_dentry; +} + +struct do_diropq_args { + struct dentry **errp; + struct dentry *dentry; + aufs_bindex_t bindex; + unsigned int flags; +}; + +static void call_do_diropq(void *args) +{ + struct do_diropq_args *a = args; + *a->errp = do_diropq(a->dentry, a->bindex, a->flags); +} + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (!au_test_h_perm_sio(d_inode(h_dentry), MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; + struct do_diropq_args args = { + .errp = &diropq, + .dentry = dentry, + .bindex = bindex, + .flags = flags + }; + + wkq_err = au_wkq_wait(call_do_diropq, &args); + if (unlikely(wkq_err)) + diropq = ERR_PTR(wkq_err); + } + + return diropq; +} + +/* ---------------------------------------------------------------------- */ + +/* + * lookup whiteout dentry. + * @h_parent: lower parent dentry which must exist and be locked + * @base_name: name of dentry which will be whiteouted + * returns dentry for whiteout. + */ +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br) +{ + int err; + struct qstr wh_name; + struct dentry *wh_dentry; + + err = au_wh_name_alloc(&wh_name, base_name); + wh_dentry = ERR_PTR(err); + if (!err) { + wh_dentry = vfsub_lkup_one(&wh_name, h_parent); + kfree(wh_name.name); + } + return wh_dentry; +} + +/* + * link/create a whiteout for @dentry on @bindex. + */ +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent) +{ + struct dentry *wh_dentry; + struct super_block *sb; + int err; + + sb = dentry->d_sb; + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); + if (!IS_ERR(wh_dentry) && d_is_negative(wh_dentry)) { + err = link_or_create_wh(sb, bindex, wh_dentry); + if (!err) { + au_set_dbwh(dentry, bindex); + au_fhsm_wrote(sb, bindex, /*force*/0); + } else { + dput(wh_dentry); + wh_dentry = ERR_PTR(err); + } + } + + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* Delete all whiteouts in this directory on branch bindex. */ +static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err; + unsigned long ul, n; + struct qstr wh_name; + char *p; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + err = -ENOMEM; + p = (void *)__get_free_page(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; + + err = 0; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; !err && ul < n; ul++, head++) { + hlist_for_each_entry(pos, head, wh_hash) { + if (pos->wh_bindex != bindex) + continue; + + str = &pos->wh_str; + if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { + memcpy(p, str->name, str->len); + wh_name.len = AUFS_WH_PFX_LEN + str->len; + err = unlink_wh_name(h_dentry, &wh_name, br); + if (!err) + continue; + break; + } + AuIOErr("whiteout name too long %.*s\n", + str->len, str->name); + err = -EIO; + break; + } + } + free_page((unsigned long)wh_name.name); + +out: + return err; +} + +struct del_wh_children_args { + int *errp; + struct dentry *h_dentry; + struct au_nhash *whlist; + aufs_bindex_t bindex; + struct au_branch *br; +}; + +static void call_del_wh_children(void *args) +{ + struct del_wh_children_args *a = args; + *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br); +} + +/* ---------------------------------------------------------------------- */ + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) +{ + struct au_whtmp_rmdir *whtmp; + int err; + unsigned int rdhash; + + SiMustAnyLock(sb); + + whtmp = kzalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = AUFS_RDHASH_DEF; + err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); + if (unlikely(err)) { + kfree(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + atomic_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + kfree(whtmp); +} + +/* + * rmdir the whiteouted temporary named dir @h_dentry. + * @whlist: whiteouted children. + */ +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist) +{ + int err; + unsigned int h_nlink; + struct path h_tmp; + struct inode *wh_inode, *h_dir; + struct au_branch *br; + + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + + br = au_sbr(dir->i_sb, bindex); + wh_inode = d_inode(wh_dentry); + mutex_lock_nested(&wh_inode->i_mutex, AuLsc_I_CHILD); + + /* + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ + if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(wh_dentry, whlist, bindex, br); + else { + int wkq_err; + struct del_wh_children_args args = { + .errp = &err, + .h_dentry = wh_dentry, + .whlist = whlist, + .bindex = bindex, + .br = br + }; + + wkq_err = au_wkq_wait(call_del_wh_children, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + mutex_unlock(&wh_inode->i_mutex); + + if (!err) { + h_tmp.dentry = wh_dentry; + h_tmp.mnt = au_br_mnt(br); + h_nlink = h_dir->i_nlink; + err = vfsub_rmdir(h_dir, &h_tmp); + /* some fs doesn't change the parent nlink in some cases */ + h_nlink -= h_dir->i_nlink; + } + + if (!err) { + if (au_ibstart(dir) == bindex) { + /* todo: dir->i_mutex is necessary */ + au_cpup_attr_timesizes(dir); + if (h_nlink) + vfsub_drop_nlink(dir); + } + return 0; /* success */ + } + + pr_warn("failed removing %pd(%d), ignored\n", wh_dentry, err); + return err; +} + +static void call_rmdir_whtmp(void *args) +{ + int err; + aufs_bindex_t bindex; + struct au_whtmp_rmdir *a = args; + struct super_block *sb; + struct dentry *h_parent; + struct inode *h_dir; + struct au_hinode *hdir; + + /* rmdir by nfsd may cause deadlock with this i_mutex */ + /* mutex_lock(&a->dir->i_mutex); */ + err = -EROFS; + sb = a->dir->i_sb; + si_read_lock(sb, !AuLock_FLUSH); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + err = -EIO; + ii_write_lock_parent(a->dir); + h_parent = dget_parent(a->wh_dentry); + h_dir = d_inode(h_parent); + hdir = au_hi(a->dir, bindex); + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out_mnt; + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, + a->br); + if (!err) + err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, &a->whlist); + au_hn_imtx_unlock(hdir); + vfsub_mnt_drop_write(au_br_mnt(a->br)); + +out_mnt: + dput(h_parent); + ii_write_unlock(a->dir); +out: + /* mutex_unlock(&a->dir->i_mutex); */ + au_whtmp_rmdir_free(a); + si_read_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args) +{ + int wkq_err; + struct super_block *sb; + + IMustLock(dir); + + /* all post-process will be done in do_rmdir_whtmp(). */ + sb = dir->i_sb; + args->dir = au_igrab(dir); + args->br = au_sbr(sb, bindex); + atomic_inc(&args->br->br_count); + args->wh_dentry = dget(wh_dentry); + wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_warn("rmdir error %pd (%d), ignored\n", wh_dentry, wkq_err); + au_whtmp_rmdir_free(args); + } +} --- linux-4.4.0.orig/fs/aufs/whout.h +++ linux-4.4.0/fs/aufs/whout.h @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#ifndef __AUFS_WHOUT_H__ +#define __AUFS_WHOUT_H__ + +#ifdef __KERNEL__ + +#include "dir.h" + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, int try_sio); +int au_diropq_test(struct dentry *h_dentry); +struct au_branch; +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry); +int au_wh_init(struct au_branch *br, struct super_block *sb); + +/* diropq flags */ +#define AuDiropq_CREATE 1 +#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) +#define au_fset_diropq(flags, name) \ + do { (flags) |= AuDiropq_##name; } while (0) +#define au_fclr_diropq(flags, name) \ + do { (flags) &= ~AuDiropq_##name; } while (0) + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags); +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br); +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent); + +/* real rmdir for the whiteout-ed dir */ +struct au_whtmp_rmdir { + struct inode *dir; + struct au_branch *br; + struct dentry *wh_dentry; + struct au_nhash whlist; +}; + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist); +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args); + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_diropq_create(struct dentry *dentry, + aufs_bindex_t bindex) +{ + return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); +} + +static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) +{ + return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ --- linux-4.4.0.orig/fs/aufs/wkq.c +++ linux-4.4.0/fs/aufs/wkq.c @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new dredential scheme + */ + +#include +#include "aufs.h" + +/* internal workqueue named AUFS_WKQ_NAME */ + +static struct workqueue_struct *au_wkq; + +struct au_wkinfo { + struct work_struct wk; + struct kobject *kobj; + + unsigned int flags; /* see wkq.h */ + + au_wkq_func_t func; + void *args; + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ + +static void wkq_func(struct work_struct *wk) +{ + struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); + + AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); + AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); + + wkinfo->func(wkinfo->args); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + kfree(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#if 1 /* defined(CONFIG_4KSTACKS) || defined(AuTest4KSTACKS) */ +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + *comp = kmalloc(sizeof(**comp), GFP_NOFS); + if (*comp) { + init_completion(*comp); + wkinfo->comp = *comp; + return 0; + } + return -ENOMEM; +} + +static void au_wkq_comp_free(struct completion *comp) +{ + kfree(comp); +} + +#else + +/* no braces */ +#define AuWkqCompDeclare(name) \ + DECLARE_COMPLETION_ONSTACK(_ ## name); \ + struct completion *comp = &_ ## name + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + wkinfo->comp = *comp; + return 0; +} + +static void au_wkq_comp_free(struct completion *comp __maybe_unused) +{ + /* empty */ +} +#endif /* 4KSTACKS */ + +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { + if (au_wkq_test()) { + AuWarn1("wkq from wkq, unless silly-rename on NFS," + " due to a dead dir by UDBA?\n"); + AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); + } + } else + au_dbg_verify_kthread(); + + if (au_ftest_wkq(wkinfo->flags, WAIT)) { + INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); + queue_work(au_wkq, &wkinfo->wk); + } else { + INIT_WORK(&wkinfo->wk, wkq_func); + schedule_work(&wkinfo->wk); + } +} + +/* + * Be careful. It is easy to make deadlock happen. + * processA: lock, wkq and wait + * processB: wkq and wait, lock in wkq + * --> deadlock + */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) +{ + int err; + AuWkqCompDeclare(comp); + struct au_wkinfo wkinfo = { + .flags = flags, + .func = func, + .args = args + }; + + err = au_wkq_comp_alloc(&wkinfo, &comp); + if (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + au_wkq_comp_free(comp); + destroy_work_on_stack(&wkinfo.wk); + } + + return err; + +} + +/* + * Note: dget/dput() in func for aufs dentries are not supported. It will be a + * problem in a concurrent umounting. + */ +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags) +{ + int err; + struct au_wkinfo *wkinfo; + + atomic_inc(&au_sbi(sb)->si_nowait.nw_len); + + /* + * wkq_func() must free this wkinfo. + * it highly depends upon the implementation of workqueue. + */ + err = 0; + wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); + if (wkinfo) { + wkinfo->kobj = &au_sbi(sb)->si_kobj; + wkinfo->flags = flags & ~AuWkq_WAIT; + wkinfo->func = func; + wkinfo->args = args; + wkinfo->comp = NULL; + kobject_get(wkinfo->kobj); + __module_get(THIS_MODULE); /* todo: ?? */ + + au_wkq_run(wkinfo); + } else { + err = -ENOMEM; + au_nwt_done(&au_sbi(sb)->si_nowait); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_nwt_init(struct au_nowait_tasks *nwt) +{ + atomic_set(&nwt->nw_len, 0); + /* smp_mb(); */ /* atomic_set */ + init_waitqueue_head(&nwt->nw_wq); +} + +void au_wkq_fin(void) +{ + destroy_workqueue(au_wkq); +} + +int __init au_wkq_init(void) +{ + int err; + + err = 0; + au_wkq = alloc_workqueue(AUFS_WKQ_NAME, 0, WQ_DFL_ACTIVE); + if (IS_ERR(au_wkq)) + err = PTR_ERR(au_wkq); + else if (!au_wkq) + err = -ENOMEM; + + return err; +} --- linux-4.4.0.orig/fs/aufs/wkq.h +++ linux-4.4.0/fs/aufs/wkq.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credentials management scheme + */ + +#ifndef __AUFS_WKQ_H__ +#define __AUFS_WKQ_H__ + +#ifdef __KERNEL__ + +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* + * in the next operation, wait for the 'nowait' tasks in system-wide workqueue + */ +struct au_nowait_tasks { + atomic_t nw_len; + wait_queue_head_t nw_wq; +}; + +/* ---------------------------------------------------------------------- */ + +typedef void (*au_wkq_func_t)(void *args); + +/* wkq flags */ +#define AuWkq_WAIT 1 +#define AuWkq_NEST (1 << 1) +#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) +#define au_fset_wkq(flags, name) \ + do { (flags) |= AuWkq_##name; } while (0) +#define au_fclr_wkq(flags, name) \ + do { (flags) &= ~AuWkq_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuWkq_NEST +#define AuWkq_NEST 0 +#endif + +/* wkq.c */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags); +void au_nwt_init(struct au_nowait_tasks *nwt); +int __init au_wkq_init(void); +void au_wkq_fin(void); + +/* ---------------------------------------------------------------------- */ + +static inline int au_wkq_test(void) +{ + return current->flags & PF_WQ_WORKER; +} + +static inline int au_wkq_wait(au_wkq_func_t func, void *args) +{ + return au_wkq_do_wait(AuWkq_WAIT, func, args); +} + +static inline void au_nwt_done(struct au_nowait_tasks *nwt) +{ + if (atomic_dec_and_test(&nwt->nw_len)) + wake_up_all(&nwt->nw_wq); +} + +static inline int au_nwt_flush(struct au_nowait_tasks *nwt) +{ + wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); + return 0; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ --- linux-4.4.0.orig/fs/aufs/xattr.c +++ linux-4.4.0/fs/aufs/xattr.c @@ -0,0 +1,344 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling xattr functions + */ + +#include +#include "aufs.h" + +static int au_xattr_ignore(int err, char *name, unsigned int ignore_flags) +{ + if (!ignore_flags) + goto out; + switch (err) { + case -ENOMEM: + case -EDQUOT: + goto out; + } + + if ((ignore_flags & AuBrAttr_ICEX) == AuBrAttr_ICEX) { + err = 0; + goto out; + } + +#define cmp(brattr, prefix) do { \ + if (!strncmp(name, XATTR_##prefix##_PREFIX, \ + XATTR_##prefix##_PREFIX_LEN)) { \ + if (ignore_flags & AuBrAttr_ICEX_##brattr) \ + err = 0; \ + goto out; \ + } \ + } while (0) + + cmp(SEC, SECURITY); + cmp(SYS, SYSTEM); + cmp(TR, TRUSTED); + cmp(USR, USER); +#undef cmp + + if (ignore_flags & AuBrAttr_ICEX_OTH) + err = 0; + +out: + return err; +} + +static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1; + +static int au_do_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, + char *name, char **buf, unsigned int ignore_flags, + unsigned int verbose) +{ + int err; + ssize_t ssz; + struct inode *h_idst; + + ssz = vfs_getxattr_alloc(h_src, name, buf, 0, GFP_NOFS); + err = ssz; + if (unlikely(err <= 0)) { + if (err == -ENODATA + || (err == -EOPNOTSUPP + && ((ignore_flags & au_xattr_out_of_list) + || (au_test_nfs_noacl(d_inode(h_src)) + && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) + || !strcmp(name, + XATTR_NAME_POSIX_ACL_DEFAULT)))) + )) + err = 0; + if (err && (verbose || au_debug_test())) + pr_err("%s, err %d\n", name, err); + goto out; + } + + /* unlock it temporary */ + h_idst = d_inode(h_dst); + mutex_unlock(&h_idst->i_mutex); + err = vfsub_setxattr(h_dst, name, *buf, ssz, /*flags*/0); + mutex_lock_nested(&h_idst->i_mutex, AuLsc_I_CHILD2); + if (unlikely(err)) { + if (verbose || au_debug_test()) + pr_err("%s, err %d\n", name, err); + err = au_xattr_ignore(err, name, ignore_flags); + } + +out: + return err; +} + +int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, + unsigned int verbose) +{ + int err, unlocked, acl_access, acl_default; + ssize_t ssz; + struct inode *h_isrc, *h_idst; + char *value, *p, *o, *e; + + /* try stopping to update the source inode while we are referencing */ + /* there should not be the parent-child relationship between them */ + h_isrc = d_inode(h_src); + h_idst = d_inode(h_dst); + mutex_unlock(&h_idst->i_mutex); + mutex_lock_nested(&h_isrc->i_mutex, AuLsc_I_CHILD); + mutex_lock_nested(&h_idst->i_mutex, AuLsc_I_CHILD2); + unlocked = 0; + + /* some filesystems don't list POSIX ACL, for example tmpfs */ + ssz = vfs_listxattr(h_src, NULL, 0); + err = ssz; + if (unlikely(err < 0)) { + AuTraceErr(err); + if (err == -ENODATA + || err == -EOPNOTSUPP) + err = 0; /* ignore */ + goto out; + } + + err = 0; + p = NULL; + o = NULL; + if (ssz) { + err = -ENOMEM; + p = kmalloc(ssz, GFP_NOFS); + o = p; + if (unlikely(!p)) + goto out; + err = vfs_listxattr(h_src, p, ssz); + } + mutex_unlock(&h_isrc->i_mutex); + unlocked = 1; + AuDbg("err %d, ssz %zd\n", err, ssz); + if (unlikely(err < 0)) + goto out_free; + + err = 0; + e = p + ssz; + value = NULL; + acl_access = 0; + acl_default = 0; + while (!err && p < e) { + acl_access |= !strncmp(p, XATTR_NAME_POSIX_ACL_ACCESS, + sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1); + acl_default |= !strncmp(p, XATTR_NAME_POSIX_ACL_DEFAULT, + sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) + - 1); + err = au_do_cpup_xattr(h_dst, h_src, p, &value, ignore_flags, + verbose); + p += strlen(p) + 1; + } + AuTraceErr(err); + ignore_flags |= au_xattr_out_of_list; + if (!err && !acl_access) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_ACCESS, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + if (!err && !acl_default) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_DEFAULT, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + + kfree(value); + +out_free: + kfree(o); +out: + if (!unlocked) + mutex_unlock(&h_isrc->i_mutex); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +enum { + AU_XATTR_LIST, + AU_XATTR_GET +}; + +struct au_lgxattr { + int type; + union { + struct { + char *list; + size_t size; + } list; + struct { + const char *name; + void *value; + size_t size; + } get; + } u; +}; + +static ssize_t au_lgxattr(struct dentry *dentry, struct au_lgxattr *arg) +{ + ssize_t err; + struct path h_path; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + err = au_h_path_getattr(dentry, /*force*/1, &h_path); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_di; /* pretending success */ + + /* always topmost entry only */ + switch (arg->type) { + case AU_XATTR_LIST: + err = vfs_listxattr(h_path.dentry, + arg->u.list.list, arg->u.list.size); + break; + case AU_XATTR_GET: + err = vfs_getxattr(h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; + } + +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_LIST, + .u.list = { + .list = list, + .size = size + }, + }; + + return au_lgxattr(dentry, &arg); +} + +ssize_t aufs_getxattr(struct dentry *dentry, const char *name, void *value, + size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_GET, + .u.get = { + .name = name, + .value = value, + .size = size + }, + }; + + return au_lgxattr(dentry, &arg); +} + +int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, + size_t size, int flags) +{ + struct au_srxattr arg = { + .type = AU_XATTR_SET, + .u.set = { + .name = name, + .value = value, + .size = size, + .flags = flags + }, + }; + + return au_srxattr(dentry, &arg); +} + +int aufs_removexattr(struct dentry *dentry, const char *name) +{ + struct au_srxattr arg = { + .type = AU_XATTR_REMOVE, + .u.remove = { + .name = name + }, + }; + + return au_srxattr(dentry, &arg); +} + +/* ---------------------------------------------------------------------- */ + +#if 0 +static size_t au_xattr_list(struct dentry *dentry, char *list, size_t list_size, + const char *name, size_t name_len, int type) +{ + return aufs_listxattr(dentry, list, list_size); +} + +static int au_xattr_get(struct dentry *dentry, const char *name, void *buffer, + size_t size, int type) +{ + return aufs_getxattr(dentry, name, buffer, size); +} + +static int au_xattr_set(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags, int type) +{ + return aufs_setxattr(dentry, name, value, size, flags); +} + +static const struct xattr_handler au_xattr_handler = { + /* no prefix, no flags */ + .list = au_xattr_list, + .get = au_xattr_get, + .set = au_xattr_set + /* why no remove? */ +}; + +static const struct xattr_handler *au_xattr_handlers[] = { + &au_xattr_handler +}; + +void au_xattr_init(struct super_block *sb) +{ + /* sb->s_xattr = au_xattr_handlers; */ +} +#endif --- linux-4.4.0.orig/fs/aufs/xino.c +++ linux-4.4.0/fs/aufs/xino.c @@ -0,0 +1,1318 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * external inode number translation table and bitmap + */ + +#include +#include +#include "aufs.h" + +/* todo: unnecessary to support mmap_sem since kernel-space? */ +ssize_t xino_fread(vfs_readf_t func, struct file *file, void *kbuf, size_t size, + loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (err == -EAGAIN || err == -EINTR); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_access(file->f_path.dentry); +#endif + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos); + +static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + int i; + const int prevent_endless = 10; + + i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + err = func(file, buf.u, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + set_fs(oldfs); + err = xino_fwrite_wkq(func, file, kbuf, size, pos); + BUG_ON(err == -EINTR); + oldfs = get_fs(); + set_fs(KERNEL_DS); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_path.dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + vfs_writef_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else + err = xino_fwrite_wkq(func, file, buf, size, pos); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a new xinofile at the same place/path as @base_file. + */ +struct file *au_xino_create2(struct file *base_file, struct file *copy_src) +{ + struct file *file; + struct dentry *base, *parent; + struct inode *dir, *delegated; + struct qstr *name; + struct path path; + int err; + + base = base_file->f_path.dentry; + parent = base->d_parent; /* dir inode is locked */ + dir = d_inode(parent); + IMustLock(dir); + + file = ERR_PTR(-EINVAL); + name = &base->d_name; + path.dentry = vfsub_lookup_one_len(name->name, parent, name->len); + if (IS_ERR(path.dentry)) { + file = (void *)path.dentry; + pr_err("%pd lookup err %ld\n", + base, PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(dir, path.dentry, S_IRUGO | S_IWUGO, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", base, err); + goto out_dput; + } + + path.mnt = base_file->f_path.mnt; + file = vfsub_dentry_open(&path, + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */); + if (IS_ERR(file)) { + pr_err("%pd open err %ld\n", base, PTR_ERR(file)); + goto out_dput; + } + + delegated = NULL; + err = vfsub_unlink(dir, &file->f_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("%pd unlink err %d\n", base, err); + goto out_fput; + } + + if (copy_src) { + /* no one can touch copy_src xino */ + err = au_copy_file(file, copy_src, vfsub_f_size_read(copy_src)); + if (unlikely(err)) { + pr_err("%pd copy err %d\n", base, err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + return file; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct mutex *mtx; +}; + +static void au_xino_lock_dir(struct super_block *sb, struct file *xino, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t brid, bindex; + + ldir->hdir = NULL; + bindex = -1; + brid = au_xino_brid(sb); + if (brid >= 0) + bindex = au_br_index(sb, brid); + if (bindex >= 0) { + ldir->hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_imtx_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + ldir->parent = dget_parent(xino->f_path.dentry); + ldir->mtx = &d_inode(ldir->parent)->i_mutex; + mutex_lock_nested(ldir->mtx, AuLsc_I_PARENT); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_imtx_unlock(ldir->hdir); + else { + mutex_unlock(ldir->mtx); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* trucate xino files asynchronously */ + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + unsigned long jiffy; + blkcnt_t blocks; + aufs_bindex_t bi, bend; + struct kstatfs *st; + struct au_branch *br; + struct file *new_xino, *file; + struct super_block *h_sb; + struct au_xino_lock_dir ldir; + + err = -ENOMEM; + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) + goto out; + + err = -EINVAL; + bend = au_sbend(sb); + if (unlikely(bindex < 0 || bend < bindex)) + goto out_st; + br = au_sbr(sb, bindex); + file = br->br_xino.xi_file; + if (!file) + goto out_st; + + err = vfs_statfs(&file->f_path, st); + if (unlikely(err)) + AuErr1("statfs err %d, ignored\n", err); + jiffy = jiffies; + blocks = file_inode(file)->i_blocks; + pr_info("begin truncating xino(b%d), ib%llu, %llu/%llu free blks\n", + bindex, (u64)blocks, st->f_bfree, st->f_blocks); + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + new_xino = au_xino_create2(file, file); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(new_xino); + if (IS_ERR(new_xino)) { + pr_err("err %d, ignored\n", err); + goto out_st; + } + err = 0; + fput(file); + br->br_xino.xi_file = new_xino; + + h_sb = au_br_sb(br); + for (bi = 0; bi <= bend; bi++) { + if (unlikely(bi == bindex)) + continue; + br = au_sbr(sb, bi); + if (au_br_sb(br) != h_sb) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = new_xino; + get_file(new_xino); + } + + err = vfs_statfs(&new_xino->f_path, st); + if (!err) { + pr_info("end truncating xino(b%d), ib%llu, %llu/%llu free blks\n", + bindex, (u64)file_inode(new_xino)->i_blocks, + st->f_bfree, st->f_blocks); + if (file_inode(new_xino)->i_blocks < blocks) + au_sbi(sb)->si_xino_jiffy = jiffy; + } else + AuErr1("statfs err %d, ignored\n", err); + +out_st: + kfree(st); +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; +}; + +static void xino_do_trunc(void *_args) +{ + struct xino_do_trunc_args *args = _args; + struct super_block *sb; + struct au_branch *br; + struct inode *dir; + int err; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = d_inode(sb->s_root); + br = args->br; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex); + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino_running); + atomic_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + kfree(args); +} + +static int xino_trunc_test(struct super_block *sb, struct au_branch *br) +{ + int err; + struct kstatfs st; + struct au_sbinfo *sbinfo; + + /* todo: si_xino_expire and the ratio should be customizable */ + sbinfo = au_sbi(sb); + if (time_before(jiffies, + sbinfo->si_xino_jiffy + sbinfo->si_xino_expire)) + return 0; + + /* truncation border */ + err = vfs_statfs(&br->br_xino.xi_file->f_path, &st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + return 0; + } + if (div64_u64(st.f_bfree * 100, st.f_blocks) >= AUFS_XINO_DEF_TRUNC) + return 0; + + return 1; +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + struct xino_do_trunc_args *args; + int wkq_err; + + if (!xino_trunc_test(sb, br)) + return; + + if (atomic_inc_return(&br->br_xino_running) > 1) + goto out; + + /* lock and kfree() will be called in trunc_xino() */ + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + goto out_args; + } + + atomic_inc(&br->br_count); + args->sb = sb; + args->br = br; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + atomic_dec(&br->br_count); + +out_args: + kfree(args); +out: + atomic_dec(&br->br_xino_running); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xino_do_write(vfs_writef_t write, struct file *file, + ino_t h_ino, ino_t ino) +{ + loff_t pos; + ssize_t sz; + + pos = h_ino; + if (unlikely(au_loff_max / sizeof(ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(ino); + sz = xino_fwrite(write, file, &ino, sizeof(ino), &pos); + if (sz == sizeof(ino)) + return 0; /* success */ + + AuIOErr("write failed (%zd)\n", sz); + return -EIO; +} + +/* + * write @ino to the xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * even if @ino is zero, it is written to the xinofile and means no entry. + * if the size of the xino file on a specific filesystem exceeds the watermark, + * try truncating it. + */ +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino) +{ + int err; + unsigned int mnt_flags; + struct au_branch *br; + + BUILD_BUG_ON(sizeof(long long) != sizeof(au_loff_max) + || ((loff_t)-1) > 0); + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + br = au_sbr(sb, bindex); + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (!err) { + if (au_opt_test(mnt_flags, TRUNC_XINO) + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + return 0; /* success */ + } + + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +/* aufs inode number bitmap */ + +static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; +static ino_t xib_calc_ino(unsigned long pindex, int bit) +{ + ino_t ino; + + AuDebugOn(bit < 0 || page_bits <= bit); + ino = AUFS_FIRST_INO + pindex * page_bits + bit; + return ino; +} + +static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) +{ + AuDebugOn(ino < AUFS_FIRST_INO); + ino -= AUFS_FIRST_INO; + *pindex = ino / page_bits; + *bit = ino % page_bits; +} + +static int xib_pindex(struct super_block *sb, unsigned long pindex) +{ + int err; + loff_t pos; + ssize_t sz; + struct au_sbinfo *sbinfo; + struct file *xib; + unsigned long *p; + + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE + || !au_opt_test(sbinfo->si_mntflags, XINO)); + + if (pindex == sbinfo->si_xib_last_pindex) + return 0; + + xib = sbinfo->si_xib; + p = sbinfo->si_xib_buf; + pos = sbinfo->si_xib_last_pindex; + pos *= PAGE_SIZE; + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) + goto out; + + pos = pindex; + pos *= PAGE_SIZE; + if (vfsub_f_size_read(xib) >= pos + PAGE_SIZE) + sz = xino_fread(sbinfo->si_xread, xib, p, PAGE_SIZE, &pos); + else { + memset(p, 0, PAGE_SIZE); + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + } + if (sz == PAGE_SIZE) { + sbinfo->si_xib_last_pindex = pindex; + return 0; /* success */ + } + +out: + AuIOErr1("write failed (%zd)\n", sz); + err = sz; + if (sz >= 0) + err = -EIO; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_xib_clear_bit(struct inode *inode) +{ + int err, bit; + unsigned long pindex; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + AuDebugOn(inode->i_nlink); + + sb = inode->i_sb; + xib_calc_bit(inode->i_ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + err = xib_pindex(sb, pindex); + if (!err) { + clear_bit(bit, sbinfo->si_xib_buf); + sbinfo->si_xib_next_bit = bit; + } + mutex_unlock(&sbinfo->si_xib_mtx); +} + +/* for s_op->delete_inode() */ +void au_xino_delete_inode(struct inode *inode, const int unlinked) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, bi; + unsigned char try_trunc; + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + struct inode *h_inode; + struct au_branch *br; + vfs_writef_t xwrite; + + sb = inode->i_sb; + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO) + || inode->i_ino == AUFS_ROOT_INO) + return; + + if (unlinked) { + au_xigen_inc(inode); + au_xib_clear_bit(inode); + } + + iinfo = au_ii(inode); + if (!iinfo) + return; + + bindex = iinfo->ii_bstart; + if (bindex < 0) + return; + + xwrite = au_sbi(sb)->si_xwrite; + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + for (; bindex <= bend; bindex++, hi++) { + h_inode = hi->hi_inode; + if (!h_inode + || (!unlinked && h_inode->i_nlink)) + continue; + + /* inode may not be revalidated */ + bi = au_br_index(sb, hi->hi_id); + if (bi < 0) + continue; + + br = au_sbr(sb, bi); + err = au_xino_do_write(xwrite, br->br_xino.xi_file, + h_inode->i_ino, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + } +} + +/* get an unused inode number from bitmap */ +ino_t au_xino_new_ino(struct super_block *sb) +{ + ino_t ino; + unsigned long *p, pindex, ul, pend; + struct au_sbinfo *sbinfo; + struct file *file; + int free_bit, err; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return iunique(sb, AUFS_FIRST_INO); + + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + free_bit = sbinfo->si_xib_next_bit; + if (free_bit < page_bits && !test_bit(free_bit, p)) + goto out; /* success */ + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + + pindex = sbinfo->si_xib_last_pindex; + for (ul = pindex - 1; ul < ULONG_MAX; ul--) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + + file = sbinfo->si_xib; + pend = vfsub_f_size_read(file) / PAGE_SIZE; + for (ul = pindex + 1; ul <= pend; ul++) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + BUG(); + +out: + set_bit(free_bit, p); + sbinfo->si_xib_next_bit = free_bit + 1; + pindex = sbinfo->si_xib_last_pindex; + mutex_unlock(&sbinfo->si_xib_mtx); + ino = xib_calc_ino(pindex, free_bit); + AuDbg("i%lu\n", (unsigned long)ino); + return ino; +out_err: + mutex_unlock(&sbinfo->si_xib_mtx); + AuDbg("i0\n"); + return 0; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * if @ino does not exist and @do_new is true, get new one. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + loff_t pos; + struct file *file; + struct au_sbinfo *sbinfo; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + sbinfo = au_sbi(sb); + pos = h_ino; + if (unlikely(au_loff_max / sizeof(*ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(*ino); + + file = au_sbr(sb, bindex)->br_xino.xi_file; + if (vfsub_f_size_read(file) < pos + sizeof(*ino)) + return 0; /* no ino */ + + sz = xino_fread(sbinfo->si_xread, file, ino, sizeof(*ino), &pos); + if (sz == sizeof(*ino)) + return 0; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xino read error (%zd)\n", sz); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* create and set a new xino file */ + +struct file *au_xino_create(struct super_block *sb, char *fname, int silent) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir, *inode; + int err; + + /* + * at mount-time, and the xino file is the default path, + * hnotify is disabled so we have no notify events to ignore. + * when a user specified the xino, we cannot get au_hdir to be ignored. + */ + file = vfsub_filp_open(fname, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + S_IRUGO | S_IWUGO); + if (IS_ERR(file)) { + if (!silent) + pr_err("open %s(%ld)\n", fname, PTR_ERR(file)); + return file; + } + + /* keep file count */ + err = 0; + inode = file_inode(file); + h_parent = dget_parent(file->f_path.dentry); + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + /* no delegation since it is just created */ + if (inode->i_nlink) + err = vfsub_unlink(h_dir, &file->f_path, /*delegated*/NULL, + /*force*/0); + mutex_unlock(&h_dir->i_mutex); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fname, err); + goto out; + } + + err = -EINVAL; + d = file->f_path.dentry; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fname); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fname, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bend. + */ +static int is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bend) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb = au_sbr_sb(sb, btgt); + + for (bindex = 0; bindex < btgt; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + for (bindex++; bindex <= bend; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * initialize the xinofile for the specified branch @br + * at the place/path where @base_file indicates. + * test whether another branch is on the same filesystem or not, + * if @do_test is true. + */ +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct file *base_file, int do_test) +{ + int err; + ino_t ino; + aufs_bindex_t bend, bindex; + struct au_branch *shared_br, *b; + struct file *file; + struct super_block *tgt_sb; + + shared_br = NULL; + bend = au_sbend(sb); + if (do_test) { + tgt_sb = au_br_sb(br); + for (bindex = 0; bindex <= bend; bindex++) { + b = au_sbr(sb, bindex); + if (tgt_sb == au_br_sb(b)) { + shared_br = b; + break; + } + } + } + + if (!shared_br || !shared_br->br_xino.xi_file) { + struct au_xino_lock_dir ldir; + + au_xino_lock_dir(sb, base_file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(base_file, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + br->br_xino.xi_file = file; + } else { + br->br_xino.xi_file = shared_br->br_xino.xi_file; + get_file(br->br_xino.xi_file); + } + + ino = AUFS_ROOT_INO; + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (unlikely(err)) { + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* trucate a xino bitmap file */ + +/* todo: slow */ +static int do_xib_restore(struct super_block *sb, struct file *file, void *page) +{ + int err, bit; + ssize_t sz; + unsigned long pindex; + loff_t pos, pend; + struct au_sbinfo *sbinfo; + vfs_readf_t func; + ino_t *ino; + unsigned long *p; + + err = 0; + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + func = sbinfo->si_xread; + pend = vfsub_f_size_read(file); + pos = 0; + while (pos < pend) { + sz = xino_fread(func, file, page, PAGE_SIZE, &pos); + err = sz; + if (unlikely(sz <= 0)) + goto out; + + err = 0; + for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { + if (unlikely(*ino < AUFS_FIRST_INO)) + continue; + + xib_calc_bit(*ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + err = xib_pindex(sb, pindex); + if (!err) + set_bit(bit, p); + else + goto out; + } + } + +out: + return err; +} + +static int xib_restore(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + void *page; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) + err = do_xib_restore + (sb, au_sbr(sb, bindex)->br_xino.xi_file, page); + else + AuDbg("b%d\n", bindex); + free_page((unsigned long)page); + +out: + return err; +} + +int au_xib_trunc(struct super_block *sb) +{ + int err; + ssize_t sz; + loff_t pos; + struct au_xino_lock_dir ldir; + struct au_sbinfo *sbinfo; + unsigned long *p; + struct file *file; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + if (!au_opt_test(sbinfo->si_mntflags, XINO)) + goto out; + + file = sbinfo->si_xib; + if (vfsub_f_size_read(file) <= PAGE_SIZE) + goto out; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(sbinfo->si_xib, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + + p = sbinfo->si_xib_buf; + memset(p, 0, PAGE_SIZE); + pos = 0; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) { + err = sz; + AuIOErr("err %d\n", err); + if (sz >= 0) + err = -EIO; + goto out; + } + + mutex_lock(&sbinfo->si_xib_mtx); + /* mnt_want_write() is unnecessary here */ + err = xib_restore(sb); + mutex_unlock(&sbinfo->si_xib_mtx); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * xino mount option handlers + */ + +/* xino bitmap */ +static void xino_clear_xib(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct file *base) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xib); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + sbinfo->si_xread = vfs_readf(file); + sbinfo->si_xwrite = vfs_writef(file); + + err = -ENOMEM; + if (!sbinfo->si_xib_buf) + sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!sbinfo->si_xib_buf)) + goto out_unset; + + sbinfo->si_xib_last_pindex = 0; + sbinfo->si_xib_next_bit = 0; + if (vfsub_f_size_read(file) < PAGE_SIZE) { + pos = 0; + err = xino_fwrite(sbinfo->si_xwrite, file, sbinfo->si_xib_buf, + PAGE_SIZE, &pos); + if (unlikely(err != PAGE_SIZE)) + goto out_free; + } + err = 0; + goto out; /* success */ + +out_free: + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; + if (err >= 0) + err = -EIO; +out_unset: + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; +out: + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bend; + struct au_branch *br; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!br || !br->br_xino.xi_file) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } +} + +static int au_xino_set_br(struct super_block *sb, struct file *base) +{ + int err; + ino_t ino; + aufs_bindex_t bindex, bend, bshared; + struct { + struct file *old, *new; + } *fpair, *p; + struct au_branch *br; + struct inode *inode; + vfs_writef_t writef; + + SiMustWriteLock(sb); + + err = -ENOMEM; + bend = au_sbend(sb); + fpair = kcalloc(bend + 1, sizeof(*fpair), GFP_NOFS); + if (unlikely(!fpair)) + goto out; + + inode = d_inode(sb->s_root); + ino = AUFS_ROOT_INO; + writef = au_sbi(sb)->si_xwrite; + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + bshared = is_sb_shared(sb, bindex, bindex - 1); + if (bshared >= 0) { + /* shared xino */ + *p = fpair[bshared]; + get_file(p->new); + } + + if (!p->new) { + /* new xino */ + p->old = br->br_xino.xi_file; + p->new = au_xino_create2(base, br->br_xino.xi_file); + err = PTR_ERR(p->new); + if (IS_ERR(p->new)) { + p->new = NULL; + goto out_pair; + } + } + + err = au_xino_do_write(writef, p->new, + au_h_iptr(inode, bindex)->i_ino, ino); + if (unlikely(err)) + goto out_pair; + } + + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + get_file(p->new); + br->br_xino.xi_file = p->new; + } + +out_pair: + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) + if (p->new) + fput(p->new); + else + break; + kfree(fpair); +out: + return err; +} + +void au_xino_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + au_xigen_clr(sb); + xino_clear_xib(sb); + xino_clear_br(sb); + sbinfo = au_sbi(sb); + /* lvalue, do not call au_mntflags() */ + au_opt_clr(sbinfo->si_mntflags, XINO); +} + +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount) +{ + int err, skip; + struct dentry *parent, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct inode *dir; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + parent = dget_parent(xino->file->f_path.dentry); + if (remount) { + skip = 0; + dname = &xino->file->f_path.dentry->d_name; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_parent = dget_parent(cur_xino->f_path.dentry); + cur_name = &cur_xino->f_path.dentry->d_name; + skip = (cur_parent == parent + && au_qstreq(dname, cur_name)); + dput(cur_parent); + } + if (skip) + goto out; + } + + au_opt_set(sbinfo->si_mntflags, XINO); + dir = d_inode(parent); + mutex_lock_nested(&dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = au_xino_set_xib(sb, xino->file); + if (!err) + err = au_xigen_set(sb, xino->file); + if (!err) + err = au_xino_set_br(sb, xino->file); + mutex_unlock(&dir->i_mutex); + if (!err) + goto out; /* success */ + + /* reset all */ + AuIOErr("failed creating xino(%d).\n", err); + au_xigen_clr(sb); + xino_clear_xib(sb); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a xinofile at the default place/path. + */ +struct file *au_xino_def(struct super_block *sb) +{ + struct file *file; + char *page, *p; + struct au_branch *br; + struct super_block *h_sb; + struct path path; + aufs_bindex_t bend, bindex, bwr; + + br = NULL; + bend = au_sbend(sb); + bwr = -1; + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm) + && !au_test_fs_bad_xino(au_br_sb(br))) { + bwr = bindex; + break; + } + } + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(sb->s_root, bwr); + p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); + file = (void *)p; + if (!IS_ERR(p)) { + strcat(p, "/" AUFS_XINO_FNAME); + AuDbg("%s\n", p); + file = au_xino_create(sb, p, /*silent*/0); + if (!IS_ERR(file)) + au_xino_brid_set(sb, br->br_id); + } + free_page((unsigned long)page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0); + if (IS_ERR(file)) + goto out; + h_sb = file->f_path.dentry->d_sb; + if (unlikely(au_test_fs_bad_xino(h_sb))) { + pr_err("xino doesn't support %s(%s)\n", + AUFS_XINO_DEFPATH, au_sbtype(h_sb)); + fput(file); + file = ERR_PTR(-EINVAL); + } + if (!IS_ERR(file)) + au_xino_brid_set(sb, -1); + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err)) + goto out; + +#define Deleted "\\040(deleted)" + seq->count -= sizeof(Deleted) - 1; + AuDebugOn(memcmp(seq->buf + seq->count, Deleted, + sizeof(Deleted) - 1)); +#undef Deleted + +out: + return err; +} --- linux-4.4.0.orig/fs/block_dev.c +++ linux-4.4.0/fs/block_dev.c @@ -395,7 +395,7 @@ if (!ops->rw_page || bdev_get_integrity(bdev)) return result; - result = blk_queue_enter(bdev->bd_queue, GFP_KERNEL); + result = blk_queue_enter(bdev->bd_queue, false); if (result) return result; result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, READ); @@ -432,7 +432,7 @@ if (!ops->rw_page || bdev_get_integrity(bdev)) return -EOPNOTSUPP; - result = blk_queue_enter(bdev->bd_queue, GFP_KERNEL); + result = blk_queue_enter(bdev->bd_queue, false); if (result) return result; @@ -1424,9 +1424,14 @@ void *holder) { struct block_device *bdev; + int perm = 0; int err; - bdev = lookup_bdev(path); + if (mode & FMODE_READ) + perm |= MAY_READ; + if (mode & FMODE_WRITE) + perm |= MAY_WRITE; + bdev = lookup_bdev(path, perm); if (IS_ERR(bdev)) return bdev; @@ -1505,6 +1510,20 @@ if (bdev == NULL) return -ENOMEM; + /* + * A negative i_writecount for bdev->bd_inode means that the bdev + * or one of its paritions is mounted in a user namespace. Deny + * writing for non-root in this case, otherwise an unprivileged + * user can attack the kernel by modifying the backing store of a + * mounted filesystem. + */ + if ((filp->f_mode & FMODE_WRITE) && + !file_ns_capable(filp, &init_user_ns, CAP_SYS_ADMIN) && + !atomic_inc_unless_negative(&bdev->bd_inode->i_writecount)) { + bdput(bdev); + return -EBUSY; + } + filp->f_mapping = bdev->bd_inode->i_mapping; return blkdev_get(bdev, filp->f_mode, filp); @@ -1606,6 +1625,9 @@ static int blkdev_close(struct inode * inode, struct file * filp) { struct block_device *bdev = I_BDEV(filp->f_mapping->host); + if (filp->f_mode & FMODE_WRITE && + !file_ns_capable(filp, &init_user_ns, CAP_SYS_ADMIN)) + atomic_dec(&bdev->bd_inode->i_writecount); blkdev_put(bdev, filp->f_mode); return 0; } @@ -1739,12 +1761,14 @@ /** * lookup_bdev - lookup a struct block_device by name * @pathname: special file representing the block device + * @mask: rights to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC) * * Get a reference to the blockdevice at @pathname in the current * namespace if possible and return it. Return ERR_PTR(error) - * otherwise. + * otherwise. If @mask is non-zero, check for access rights to the + * inode at @pathname. */ -struct block_device *lookup_bdev(const char *pathname) +struct block_device *lookup_bdev(const char *pathname, int mask) { struct block_device *bdev; struct inode *inode; @@ -1759,6 +1783,11 @@ return ERR_PTR(error); inode = d_backing_inode(path.dentry); + if (mask != 0 && !capable(CAP_SYS_ADMIN)) { + error = __inode_permission(inode, mask); + if (error) + goto fail; + } error = -ENOTBLK; if (!S_ISBLK(inode->i_mode)) goto fail; --- linux-4.4.0.orig/fs/dcache.c +++ linux-4.4.0/fs/dcache.c @@ -1167,7 +1167,7 @@ * * The @enter() and @finish() callbacks are called with d_lock held. */ -static void d_walk(struct dentry *parent, void *data, +void d_walk(struct dentry *parent, void *data, enum d_walk_ret (*enter)(void *, struct dentry *), void (*finish)(void *)) { @@ -1272,6 +1272,7 @@ seq = 1; goto again; } +EXPORT_SYMBOL(d_walk); /* * Search for at least 1 mount point in the dentry's subdirs. --- linux-4.4.0.orig/fs/exec.c +++ linux-4.4.0/fs/exec.c @@ -57,6 +57,8 @@ #include #include +#include + #include #include #include @@ -103,6 +105,7 @@ return (path->mnt->mnt_flags & MNT_NOEXEC) || (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); } +EXPORT_SYMBOL(path_noexec); #ifdef CONFIG_USELIB /* @@ -793,6 +796,8 @@ if (name->name[0] != '\0') fsnotify_open(file); + trace_open_exec(name->name); + out: return file; @@ -1295,7 +1300,7 @@ bprm->cred->euid = current_euid(); bprm->cred->egid = current_egid(); - if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) + if (!mnt_may_suid(bprm->file->f_path.mnt)) return; if (task_no_new_privs(current)) --- linux-4.4.0.orig/fs/ext4/acl.c +++ linux-4.4.0/fs/ext4/acl.c @@ -13,7 +13,7 @@ * Convert from filesystem to in-memory representation. */ static struct posix_acl * -ext4_acl_from_disk(const void *value, size_t size) +ext4_acl_from_disk(struct super_block *sb, const void *value, size_t size) { const char *end = (char *)value + size; int n, count; @@ -57,16 +57,20 @@ if ((char *)value > end) goto fail; acl->a_entries[n].e_uid = - make_kuid(&init_user_ns, + make_kuid(sb->s_user_ns, le32_to_cpu(entry->e_id)); + if (!uid_valid(acl->a_entries[n].e_uid)) + goto fail; break; case ACL_GROUP: value = (char *)value + sizeof(ext4_acl_entry); if ((char *)value > end) goto fail; acl->a_entries[n].e_gid = - make_kgid(&init_user_ns, + make_kgid(sb->s_user_ns, le32_to_cpu(entry->e_id)); + if (!gid_valid(acl->a_entries[n].e_gid)) + goto fail; break; default: @@ -86,11 +90,14 @@ * Convert from in-memory to filesystem representation. */ static void * -ext4_acl_to_disk(const struct posix_acl *acl, size_t *size) +ext4_acl_to_disk(struct super_block *sb, const struct posix_acl *acl, + size_t *size) { ext4_acl_header *ext_acl; char *e; size_t n; + uid_t uid; + gid_t gid; *size = ext4_acl_size(acl->a_count); ext_acl = kmalloc(sizeof(ext4_acl_header) + acl->a_count * @@ -106,13 +113,17 @@ entry->e_perm = cpu_to_le16(acl_e->e_perm); switch (acl_e->e_tag) { case ACL_USER: - entry->e_id = cpu_to_le32( - from_kuid(&init_user_ns, acl_e->e_uid)); + uid = from_kuid(sb->s_user_ns, acl_e->e_uid); + if (uid == (uid_t)-1) + goto fail; + entry->e_id = cpu_to_le32(uid); e += sizeof(ext4_acl_entry); break; case ACL_GROUP: - entry->e_id = cpu_to_le32( - from_kgid(&init_user_ns, acl_e->e_gid)); + gid = from_kgid(sb->s_user_ns, acl_e->e_gid); + if (gid == (gid_t)-1) + goto fail; + entry->e_id = cpu_to_le32(gid); e += sizeof(ext4_acl_entry); break; @@ -165,7 +176,7 @@ retval = ext4_xattr_get(inode, name_index, "", value, retval); } if (retval > 0) - acl = ext4_acl_from_disk(value, retval); + acl = ext4_acl_from_disk(inode->i_sb, value, retval); else if (retval == -ENODATA || retval == -ENOSYS) acl = NULL; else @@ -218,7 +229,7 @@ return -EINVAL; } if (acl) { - value = ext4_acl_to_disk(acl, &size); + value = ext4_acl_to_disk(inode->i_sb, acl, &size); if (IS_ERR(value)) return (int)PTR_ERR(value); } --- linux-4.4.0.orig/fs/ext4/balloc.c +++ linux-4.4.0/fs/ext4/balloc.c @@ -561,8 +561,8 @@ /* Hm, nope. Are (enough) root reserved clusters available? */ if (uid_eq(sbi->s_resuid, current_fsuid()) || - (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || - capable(CAP_SYS_RESOURCE) || + (!gid_eq(sbi->s_resgid, make_kgid(sbi->s_sb->s_user_ns, 0)) && in_group_p(sbi->s_resgid)) || + ns_capable(sbi->s_sb->s_user_ns, CAP_SYS_RESOURCE) || (flags & EXT4_MB_USE_ROOT_BLOCKS)) { if (free_clusters >= (nclusters + dirty_clusters + --- linux-4.4.0.orig/fs/ext4/ialloc.c +++ linux-4.4.0/fs/ext4/ialloc.c @@ -762,6 +762,10 @@ if (!dir || !dir->i_nlink) return ERR_PTR(-EPERM); + /* Supplied owner must be valid */ + if (owner && (owner[0] == (uid_t)-1 || owner[1] == (uid_t)-1)) + return ERR_PTR(-EOVERFLOW); + if ((ext4_encrypted_inode(dir) || DUMMY_ENCRYPTION_ENABLED(EXT4_SB(dir->i_sb))) && (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) { @@ -774,7 +778,6 @@ nblocks += EXT4_DATA_TRANS_BLOCKS(dir->i_sb); encrypt = 1; } - sb = dir->i_sb; ngroups = ext4_get_groups_count(sb); trace_ext4_request_inode(dir, mode); --- linux-4.4.0.orig/fs/ext4/ioctl.c +++ linux-4.4.0/fs/ext4/ioctl.c @@ -253,7 +253,7 @@ * This test looks nicer. Thanks to Pauline Middelink */ if ((flags ^ oldflags) & (EXT4_APPEND_FL | EXT4_IMMUTABLE_FL)) { - if (!capable(CAP_LINUX_IMMUTABLE)) + if (!ns_capable(sb->s_user_ns, CAP_LINUX_IMMUTABLE)) goto flags_out; } @@ -262,7 +262,7 @@ * the relevant capability. */ if ((jflag ^ oldflags) & (EXT4_JOURNAL_DATA_FL)) { - if (!capable(CAP_SYS_RESOURCE)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_RESOURCE)) goto flags_out; } if ((flags ^ oldflags) & EXT4_EXTENTS_FL) @@ -593,7 +593,7 @@ struct fstrim_range range; int ret = 0; - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; if (!blk_queue_discard(q)) --- linux-4.4.0.orig/fs/ext4/resize.c +++ linux-4.4.0/fs/ext4/resize.c @@ -20,7 +20,7 @@ { int ret = 0; - if (!capable(CAP_SYS_RESOURCE)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_RESOURCE)) return -EPERM; /* --- linux-4.4.0.orig/fs/ext4/super.c +++ linux-4.4.0/fs/ext4/super.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -80,13 +81,17 @@ static void ext4_unregister_li_request(struct super_block *sb); static void ext4_clear_request_list(void); +static bool userns_mounts = false; +module_param(userns_mounts, bool, 0644); +MODULE_PARM_DESC(userns_mounts, "Allow mounts from unprivileged user namespaces"); + #if !defined(CONFIG_EXT2_FS) && !defined(CONFIG_EXT2_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT2) static struct file_system_type ext2_fs_type = { .owner = THIS_MODULE, .name = "ext2", .mount = ext4_mount, .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV, + .fs_flags = FS_REQUIRES_DEV | FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("ext2"); MODULE_ALIAS("ext2"); @@ -101,7 +106,7 @@ .name = "ext3", .mount = ext4_mount, .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV, + .fs_flags = FS_REQUIRES_DEV | FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("ext3"); MODULE_ALIAS("ext3"); @@ -1512,6 +1517,13 @@ return -1; } + if (token == Opt_err_panic && !capable(CAP_SYS_ADMIN)) { + ext4_msg(sb, KERN_ERR, + "Mount option \"%s\" not allowed for unprivileged mounts", + opt); + return -1; + } + if (args->from && !(m->flags & MOPT_STRING) && match_int(args, &arg)) return -1; if (args->from && (m->flags & MOPT_GTE0) && (arg < 0)) @@ -1560,14 +1572,14 @@ } else if (token == Opt_stripe) { sbi->s_stripe = arg; } else if (token == Opt_resuid) { - uid = make_kuid(current_user_ns(), arg); + uid = make_kuid(sb->s_user_ns, arg); if (!uid_valid(uid)) { ext4_msg(sb, KERN_ERR, "Invalid uid value %d", arg); return -1; } sbi->s_resuid = uid; } else if (token == Opt_resgid) { - gid = make_kgid(current_user_ns(), arg); + gid = make_kgid(sb->s_user_ns, arg); if (!gid_valid(gid)) { ext4_msg(sb, KERN_ERR, "Invalid gid value %d", arg); return -1; @@ -1606,6 +1618,19 @@ return -1; } + /* + * Refuse access for unprivileged mounts if the user does + * not have rw access to the journal device via the supplied + * path. + */ + if (!capable(CAP_SYS_ADMIN) && + inode_permission(d_inode(path.dentry), MAY_READ|MAY_WRITE)) { + ext4_msg(sb, KERN_ERR, + "error: Insufficient access to journal path %s", + journal_path); + return -1; + } + journal_inode = d_inode(path.dentry); if (!S_ISBLK(journal_inode->i_mode)) { ext4_msg(sb, KERN_ERR, "error: journal path %s " @@ -1839,14 +1864,14 @@ SEQ_OPTS_PRINT("%s", token2str(m->token)); } - if (nodefs || !uid_eq(sbi->s_resuid, make_kuid(&init_user_ns, EXT4_DEF_RESUID)) || + if (nodefs || !uid_eq(sbi->s_resuid, make_kuid(sb->s_user_ns, EXT4_DEF_RESUID)) || le16_to_cpu(es->s_def_resuid) != EXT4_DEF_RESUID) SEQ_OPTS_PRINT("resuid=%u", - from_kuid_munged(&init_user_ns, sbi->s_resuid)); - if (nodefs || !gid_eq(sbi->s_resgid, make_kgid(&init_user_ns, EXT4_DEF_RESGID)) || + from_kuid_munged(sb->s_user_ns, sbi->s_resuid)); + if (nodefs || !gid_eq(sbi->s_resgid, make_kgid(sb->s_user_ns, EXT4_DEF_RESGID)) || le16_to_cpu(es->s_def_resgid) != EXT4_DEF_RESGID) SEQ_OPTS_PRINT("resgid=%u", - from_kgid_munged(&init_user_ns, sbi->s_resgid)); + from_kgid_munged(sb->s_user_ns, sbi->s_resgid)); def_errors = nodefs ? -1 : le16_to_cpu(es->s_errors); if (test_opt(sb, ERRORS_RO) && def_errors != EXT4_ERRORS_RO) SEQ_OPTS_PUTS("errors=remount-ro"); @@ -3122,6 +3147,9 @@ unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO; ext4_group_t first_not_zeroed; + if (!userns_mounts && !capable(CAP_SYS_ADMIN)) + return -EPERM; + sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); if (!sbi) goto out_free_orig; @@ -3243,19 +3271,26 @@ else if ((def_mount_opts & EXT4_DEFM_JMODE) == EXT4_DEFM_JMODE_WBACK) set_opt(sb, WRITEBACK_DATA); - if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_PANIC) + if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_PANIC) { + if (!capable(CAP_SYS_ADMIN)) + goto failed_mount; set_opt(sb, ERRORS_PANIC); - else if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_CONTINUE) + } else if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_CONTINUE) { set_opt(sb, ERRORS_CONT); - else + } else { set_opt(sb, ERRORS_RO); + } /* block_validity enabled by default; disable with noblock_validity */ set_opt(sb, BLOCK_VALIDITY); if (def_mount_opts & EXT4_DEFM_DISCARD) set_opt(sb, DISCARD); - sbi->s_resuid = make_kuid(&init_user_ns, le16_to_cpu(es->s_def_resuid)); - sbi->s_resgid = make_kgid(&init_user_ns, le16_to_cpu(es->s_def_resgid)); + sbi->s_resuid = make_kuid(sb->s_user_ns, le16_to_cpu(es->s_def_resuid)); + if (!uid_valid(sbi->s_resuid)) + sbi->s_resuid = make_kuid(sb->s_user_ns, EXT4_DEF_RESUID); + sbi->s_resgid = make_kgid(sb->s_user_ns, le16_to_cpu(es->s_def_resgid)); + if (!gid_valid(sbi->s_resgid)) + sbi->s_resgid = make_kgid(sb->s_user_ns, EXT4_DEF_RESGID); sbi->s_commit_interval = JBD2_DEFAULT_MAX_COMMIT_AGE * HZ; sbi->s_min_batch_time = EXT4_DEF_MIN_BATCH_TIME; sbi->s_max_batch_time = EXT4_DEF_MAX_BATCH_TIME; @@ -4013,6 +4048,7 @@ ext4_blkdev_remove(sbi); brelse(bh); out_fail: + /* sb->s_user_ns will be put when sb is destroyed */ sb->s_fs_info = NULL; kfree(sbi->s_blockgroup_lock); kfree(sbi); @@ -5228,7 +5264,7 @@ .name = "ext4", .mount = ext4_mount, .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV, + .fs_flags = FS_REQUIRES_DEV | FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("ext4"); --- linux-4.4.0.orig/fs/file_table.c +++ linux-4.4.0/fs/file_table.c @@ -147,6 +147,7 @@ } return ERR_PTR(-ENFILE); } +EXPORT_SYMBOL(get_empty_filp); /** * alloc_file - allocate and initialize a 'struct file' @@ -308,6 +309,7 @@ file_free(file); } } +EXPORT_SYMBOL(put_filp); void __init files_init(void) { --- linux-4.4.0.orig/fs/fuse/cuse.c +++ linux-4.4.0/fs/fuse/cuse.c @@ -48,6 +48,7 @@ #include #include #include +#include #include "fuse_i.h" @@ -498,7 +499,7 @@ if (!cc) return -ENOMEM; - fuse_conn_init(&cc->fc); + fuse_conn_init(&cc->fc, current_user_ns()); fud = fuse_dev_alloc(&cc->fc); if (!fud) { --- linux-4.4.0.orig/fs/fuse/dev.c +++ linux-4.4.0/fs/fuse/dev.c @@ -19,6 +19,7 @@ #include #include #include +#include MODULE_ALIAS_MISCDEV(FUSE_MINOR); MODULE_ALIAS("devname:fuse"); @@ -124,11 +125,11 @@ atomic_dec(&req->count); } -static void fuse_req_init_context(struct fuse_req *req) +static void fuse_req_init_context(struct fuse_conn *fc, struct fuse_req *req) { - req->in.h.uid = from_kuid_munged(&init_user_ns, current_fsuid()); - req->in.h.gid = from_kgid_munged(&init_user_ns, current_fsgid()); - req->in.h.pid = current->pid; + req->in.h.uid = from_kuid(fc->user_ns, current_fsuid()); + req->in.h.gid = from_kgid(fc->user_ns, current_fsgid()); + req->in.h.pid = pid_nr_ns(task_pid(current), fc->pid_ns); } void fuse_set_initialized(struct fuse_conn *fc) @@ -181,10 +182,15 @@ goto out; } - fuse_req_init_context(req); + fuse_req_init_context(fc, req); __set_bit(FR_WAITING, &req->flags); if (for_background) __set_bit(FR_BACKGROUND, &req->flags); + if (req->in.h.pid == 0 || req->in.h.uid == (uid_t)-1 || + req->in.h.gid == (gid_t)-1) { + fuse_put_request(fc, req); + return ERR_PTR(-EOVERFLOW); + } return req; @@ -274,7 +280,7 @@ if (!req) req = get_reserved_req(fc, file); - fuse_req_init_context(req); + fuse_req_init_context(fc, req); __set_bit(FR_WAITING, &req->flags); __clear_bit(FR_BACKGROUND, &req->flags); return req; @@ -1243,6 +1249,10 @@ struct fuse_in *in; unsigned reqsize; + if (task_active_pid_ns(current) != fc->pid_ns || + current_user_ns() != fc->user_ns) + return -EIO; + restart: spin_lock(&fiq->waitq.lock); err = -EAGAIN; @@ -1872,6 +1882,10 @@ struct fuse_req *req; struct fuse_out_header oh; + if (task_active_pid_ns(current) != fc->pid_ns || + current_user_ns() != fc->user_ns) + return -EIO; + if (nbytes < sizeof(struct fuse_out_header)) return -EINVAL; --- linux-4.4.0.orig/fs/fuse/dir.c +++ linux-4.4.0/fs/fuse/dir.c @@ -841,8 +841,8 @@ stat->ino = attr->ino; stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); stat->nlink = attr->nlink; - stat->uid = make_kuid(&init_user_ns, attr->uid); - stat->gid = make_kgid(&init_user_ns, attr->gid); + stat->uid = inode->i_uid; + stat->gid = inode->i_gid; stat->rdev = inode->i_rdev; stat->atime.tv_sec = attr->atime; stat->atime.tv_nsec = attr->atimensec; @@ -1015,7 +1015,7 @@ const struct cred *cred; if (fc->flags & FUSE_ALLOW_OTHER) - return 1; + return current_in_userns(fc->user_ns); cred = current_cred(); if (uid_eq(cred->euid, fc->user_id) && @@ -1455,17 +1455,17 @@ return true; } -static void iattr_to_fattr(struct iattr *iattr, struct fuse_setattr_in *arg, - bool trust_local_cmtime) +static void iattr_to_fattr(struct fuse_conn *fc, struct iattr *iattr, + struct fuse_setattr_in *arg, bool trust_local_cmtime) { unsigned ivalid = iattr->ia_valid; if (ivalid & ATTR_MODE) arg->valid |= FATTR_MODE, arg->mode = iattr->ia_mode; if (ivalid & ATTR_UID) - arg->valid |= FATTR_UID, arg->uid = from_kuid(&init_user_ns, iattr->ia_uid); + arg->valid |= FATTR_UID, arg->uid = from_kuid(fc->user_ns, iattr->ia_uid); if (ivalid & ATTR_GID) - arg->valid |= FATTR_GID, arg->gid = from_kgid(&init_user_ns, iattr->ia_gid); + arg->valid |= FATTR_GID, arg->gid = from_kgid(fc->user_ns, iattr->ia_gid); if (ivalid & ATTR_SIZE) arg->valid |= FATTR_SIZE, arg->size = iattr->ia_size; if (ivalid & ATTR_ATIME) { @@ -1625,7 +1625,7 @@ memset(&inarg, 0, sizeof(inarg)); memset(&outarg, 0, sizeof(outarg)); - iattr_to_fattr(attr, &inarg, trust_local_cmtime); + iattr_to_fattr(fc, attr, &inarg, trust_local_cmtime); if (file) { struct fuse_file *ff = file->private_data; inarg.valid |= FATTR_FH; --- linux-4.4.0.orig/fs/fuse/file.c +++ linux-4.4.0/fs/fuse/file.c @@ -2061,7 +2061,8 @@ return generic_file_mmap(file, vma); } -static int convert_fuse_file_lock(const struct fuse_file_lock *ffl, +static int convert_fuse_file_lock(struct fuse_conn *fc, + const struct fuse_file_lock *ffl, struct file_lock *fl) { switch (ffl->type) { @@ -2076,7 +2077,14 @@ fl->fl_start = ffl->start; fl->fl_end = ffl->end; - fl->fl_pid = ffl->pid; + + /* + * Convert pid into the caller's pid namespace. If the pid + * does not map into the namespace fl_pid will get set to 0. + */ + rcu_read_lock(); + fl->fl_pid = pid_vnr(find_pid_ns(ffl->pid, fc->pid_ns)); + rcu_read_unlock(); break; default: @@ -2125,7 +2133,7 @@ args.out.args[0].value = &outarg; err = fuse_simple_request(fc, &args); if (!err) - err = convert_fuse_file_lock(&outarg.lk, fl); + err = convert_fuse_file_lock(fc, &outarg.lk, fl); return err; } @@ -2137,7 +2145,8 @@ FUSE_ARGS(args); struct fuse_lk_in inarg; int opcode = (fl->fl_flags & FL_SLEEP) ? FUSE_SETLKW : FUSE_SETLK; - pid_t pid = fl->fl_type != F_UNLCK ? current->tgid : 0; + struct pid *pid = fl->fl_type != F_UNLCK ? task_tgid(current) : NULL; + pid_t pid_nr = pid_nr_ns(pid, fc->pid_ns); int err; if (fl->fl_lmops && fl->fl_lmops->lm_grant) { @@ -2149,7 +2158,10 @@ if (fl->fl_flags & FL_CLOSE) return 0; - fuse_lk_fill(&args, file, fl, opcode, pid, flock, &inarg); + if (pid && pid_nr == 0) + return -EOVERFLOW; + + fuse_lk_fill(&args, file, fl, opcode, pid_nr, flock, &inarg); err = fuse_simple_request(fc, &args); /* locking is restartable */ --- linux-4.4.0.orig/fs/fuse/fuse_i.h +++ linux-4.4.0/fs/fuse/fuse_i.h @@ -22,6 +22,8 @@ #include #include #include +#include +#include /** Max number of pages that can be used in a single read request */ #define FUSE_MAX_PAGES_PER_REQ 32 @@ -456,6 +458,12 @@ /** The group id for this mount */ kgid_t group_id; + /** The pid namespace for this mount */ + struct pid_namespace *pid_ns; + + /** The user namespace for this mount */ + struct user_namespace *user_ns; + /** The fuse mount flags for this mount */ unsigned flags; @@ -851,7 +859,7 @@ /** * Initialize fuse_conn */ -void fuse_conn_init(struct fuse_conn *fc); +void fuse_conn_init(struct fuse_conn *fc, struct user_namespace *user_ns); /** * Release reference to fuse_conn --- linux-4.4.0.orig/fs/fuse/inode.c +++ linux-4.4.0/fs/fuse/inode.c @@ -20,6 +20,7 @@ #include #include #include +#include MODULE_AUTHOR("Miklos Szeredi "); MODULE_DESCRIPTION("Filesystem in Userspace"); @@ -47,6 +48,10 @@ "Global limit for the maximum congestion threshold an " "unprivileged user can set"); +static bool userns_mounts; +module_param(userns_mounts, bool, 0644); +MODULE_PARM_DESC(userns_mounts, "Allow mounts from unprivileged user namespaces"); + #define FUSE_SUPER_MAGIC 0x65735546 #define FUSE_DEFAULT_BLKSIZE 512 @@ -166,8 +171,8 @@ inode->i_ino = fuse_squash_ino(attr->ino); inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); set_nlink(inode, attr->nlink); - inode->i_uid = make_kuid(&init_user_ns, attr->uid); - inode->i_gid = make_kgid(&init_user_ns, attr->gid); + inode->i_uid = make_kuid(fc->user_ns, attr->uid); + inode->i_gid = make_kgid(fc->user_ns, attr->gid); inode->i_blocks = attr->blocks; inode->i_atime.tv_sec = attr->atime; inode->i_atime.tv_nsec = attr->atimensec; @@ -466,12 +471,15 @@ return err; } -static int parse_fuse_opt(char *opt, struct fuse_mount_data *d, int is_bdev) +static int parse_fuse_opt(char *opt, struct fuse_mount_data *d, int is_bdev, + struct user_namespace *user_ns) { char *p; memset(d, 0, sizeof(struct fuse_mount_data)); d->max_read = ~0; d->blksize = FUSE_DEFAULT_BLKSIZE; + d->user_id = make_kuid(user_ns, 0); + d->group_id = make_kgid(user_ns, 0); while ((p = strsep(&opt, ",")) != NULL) { int token; @@ -502,7 +510,7 @@ case OPT_USER_ID: if (fuse_match_uint(&args[0], &uv)) return 0; - d->user_id = make_kuid(current_user_ns(), uv); + d->user_id = make_kuid(user_ns, uv); if (!uid_valid(d->user_id)) return 0; d->user_id_present = 1; @@ -511,7 +519,7 @@ case OPT_GROUP_ID: if (fuse_match_uint(&args[0], &uv)) return 0; - d->group_id = make_kgid(current_user_ns(), uv); + d->group_id = make_kgid(user_ns, uv); if (!gid_valid(d->group_id)) return 0; d->group_id_present = 1; @@ -554,8 +562,10 @@ struct super_block *sb = root->d_sb; struct fuse_conn *fc = get_fuse_conn_super(sb); - seq_printf(m, ",user_id=%u", from_kuid_munged(&init_user_ns, fc->user_id)); - seq_printf(m, ",group_id=%u", from_kgid_munged(&init_user_ns, fc->group_id)); + seq_printf(m, ",user_id=%u", + from_kuid_munged(fc->user_ns, fc->user_id)); + seq_printf(m, ",group_id=%u", + from_kgid_munged(fc->user_ns, fc->group_id)); if (fc->flags & FUSE_DEFAULT_PERMISSIONS) seq_puts(m, ",default_permissions"); if (fc->flags & FUSE_ALLOW_OTHER) @@ -586,7 +596,7 @@ fpq->connected = 1; } -void fuse_conn_init(struct fuse_conn *fc) +void fuse_conn_init(struct fuse_conn *fc, struct user_namespace *user_ns) { memset(fc, 0, sizeof(*fc)); spin_lock_init(&fc->lock); @@ -609,6 +619,8 @@ fc->connected = 1; fc->attr_version = 1; get_random_bytes(&fc->scramble_key, sizeof(fc->scramble_key)); + fc->pid_ns = get_pid_ns(task_active_pid_ns(current)); + fc->user_ns = get_user_ns(user_ns); } EXPORT_SYMBOL_GPL(fuse_conn_init); @@ -617,6 +629,8 @@ if (atomic_dec_and_test(&fc->count)) { if (fc->destroy_req) fuse_request_free(fc->destroy_req); + put_pid_ns(fc->pid_ns); + put_user_ns(fc->user_ns); fc->release(fc); } } @@ -1037,13 +1051,16 @@ int err; int is_bdev = sb->s_bdev != NULL; + if (!userns_mounts && !capable(CAP_SYS_ADMIN)) + return -EPERM; + err = -EINVAL; if (sb->s_flags & MS_MANDLOCK) goto err; sb->s_flags &= ~(MS_NOSEC | MS_I_VERSION); - if (!parse_fuse_opt(data, &d, is_bdev)) + if (!parse_fuse_opt(data, &d, is_bdev, sb->s_user_ns)) goto err; if (is_bdev) { @@ -1067,8 +1084,12 @@ if (!file) goto err; - if ((file->f_op != &fuse_dev_operations) || - (file->f_cred->user_ns != &init_user_ns)) + /* + * Require mount to happen from the same user namespace which + * opened /dev/fuse to prevent potential attacks. + */ + if (file->f_op != &fuse_dev_operations || + file->f_cred->user_ns != sb->s_user_ns) goto err_fput; fc = kmalloc(sizeof(*fc), GFP_KERNEL); @@ -1076,7 +1097,7 @@ if (!fc) goto err_fput; - fuse_conn_init(fc); + fuse_conn_init(fc, sb->s_user_ns); fc->release = fuse_free_conn; fud = fuse_dev_alloc(fc); @@ -1187,7 +1208,7 @@ static struct file_system_type fuse_fs_type = { .owner = THIS_MODULE, .name = "fuse", - .fs_flags = FS_HAS_SUBTYPE, + .fs_flags = FS_HAS_SUBTYPE | FS_USERNS_MOUNT, .mount = fuse_mount, .kill_sb = fuse_kill_sb_anon, }; @@ -1219,7 +1240,7 @@ .name = "fuseblk", .mount = fuse_mount_blk, .kill_sb = fuse_kill_sb_blk, - .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE, + .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE | FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("fuseblk"); --- linux-4.4.0.orig/fs/inode.c +++ linux-4.4.0/fs/inode.c @@ -1684,7 +1684,8 @@ if (unlikely((mode & S_ISGID) && (mode & S_IXGRP))) kill |= ATTR_KILL_SGID; - if (unlikely(kill && !capable(CAP_FSETID) && S_ISREG(mode))) + if (unlikely(kill && !ns_capable(dentry->d_sb->s_user_ns, CAP_FSETID) && + S_ISREG(mode))) return kill; return 0; @@ -1962,6 +1963,9 @@ ns = current_user_ns(); if (ns_capable(ns, CAP_FOWNER) && kuid_has_mapping(ns, inode->i_uid)) return true; + + if (ns_capable(inode->i_sb->s_user_ns, CAP_FOWNER)) + return true; return false; } EXPORT_SYMBOL(inode_owner_or_capable); --- linux-4.4.0.orig/fs/ioctl.c +++ linux-4.4.0/fs/ioctl.c @@ -519,7 +519,7 @@ { struct super_block *sb = file_inode(filp)->i_sb; - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; /* If filesystem doesn't support freeze feature, return. */ @@ -536,7 +536,7 @@ { struct super_block *sb = file_inode(filp)->i_sb; - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; /* Thaw */ --- linux-4.4.0.orig/fs/namei.c +++ linux-4.4.0/fs/namei.c @@ -865,8 +865,8 @@ path_put(&last->link); } -int sysctl_protected_symlinks __read_mostly = 0; -int sysctl_protected_hardlinks __read_mostly = 0; +int sysctl_protected_symlinks __read_mostly = 1; +int sysctl_protected_hardlinks __read_mostly = 1; /** * may_follow_link - Check symlink following for unsafe situations @@ -902,7 +902,7 @@ return 0; /* Allowed if parent directory and link owner match. */ - if (uid_eq(parent->i_uid, inode->i_uid)) + if (uid_valid_eq(parent->i_uid, inode->i_uid)) return 0; if (nd->flags & LOOKUP_RCU) --- linux-4.4.0.orig/fs/namespace.c +++ linux-4.4.0/fs/namespace.c @@ -463,6 +463,7 @@ mnt_dec_writers(real_mount(mnt)); preempt_enable(); } +EXPORT_SYMBOL_GPL(__mnt_drop_write); /** * mnt_drop_write - give up write access to a mount @@ -1510,7 +1511,7 @@ * Special case for "unmounting" root ... * we just try to remount it readonly. */ - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; down_write(&sb->s_umount); if (!(sb->s_flags & MS_RDONLY)) @@ -1803,6 +1804,7 @@ } return 0; } +EXPORT_SYMBOL(iterate_mounts); static void cleanup_group_ids(struct mount *mnt, struct mount *end) { @@ -2205,7 +2207,7 @@ down_write(&sb->s_umount); if (flags & MS_BIND) err = change_mount_flags(path->mnt, flags); - else if (!capable(CAP_SYS_ADMIN)) + else if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) err = -EPERM; else err = do_remount_sb(sb, flags, data, 0); @@ -2381,6 +2383,9 @@ struct vfsmount *mnt; int err; + if (!ns_capable(current_user_ns(), CAP_SYS_ADMIN)) + return -EPERM; + if (!fstype) return -EINVAL; @@ -3283,6 +3288,19 @@ return visible; } +bool mnt_may_suid(struct vfsmount *mnt) +{ + /* + * Foreign mounts (accessed via fchdir or through /proc + * symlinks) are always treated as if they are nosuid. This + * prevents namespaces from trusting potentially unsafe + * suid/sgid bits, file caps, or security labels that originate + * in other namespaces. + */ + return !(mnt->mnt_flags & MNT_NOSUID) && check_mnt(real_mount(mnt)) && + current_in_userns(mnt->mnt_sb->s_user_ns); +} + static struct ns_common *mntns_get(struct task_struct *task) { struct ns_common *ns = NULL; --- linux-4.4.0.orig/fs/notify/group.c +++ linux-4.4.0/fs/notify/group.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "fsnotify.h" @@ -72,6 +73,7 @@ { atomic_inc(&group->refcnt); } +EXPORT_SYMBOL(fsnotify_get_group); /* * Drop a reference to a group. Free it if it's through. @@ -81,6 +83,7 @@ if (atomic_dec_and_test(&group->refcnt)) fsnotify_final_destroy_group(group); } +EXPORT_SYMBOL(fsnotify_put_group); /* * Create a new fsnotify_group and hold a reference for the group returned. @@ -109,6 +112,7 @@ return group; } +EXPORT_SYMBOL(fsnotify_alloc_group); int fsnotify_fasync(int fd, struct file *file, int on) { --- linux-4.4.0.orig/fs/notify/mark.c +++ linux-4.4.0/fs/notify/mark.c @@ -109,6 +109,7 @@ mark->free_mark(mark); } } +EXPORT_SYMBOL(fsnotify_put_mark); /* Calculate mask of events for a list of marks */ u32 fsnotify_recalc_mask(struct hlist_head *head) @@ -208,6 +209,7 @@ mutex_unlock(&group->mark_mutex); fsnotify_free_mark(mark); } +EXPORT_SYMBOL(fsnotify_destroy_mark); void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock) { @@ -392,6 +394,7 @@ return ret; } +EXPORT_SYMBOL(fsnotify_add_mark); int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, int allow_dups) @@ -492,6 +495,7 @@ atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } +EXPORT_SYMBOL(fsnotify_init_mark); static int fsnotify_mark_destroy(void *ignored) { --- linux-4.4.0.orig/fs/ocfs2/quota_global.c +++ linux-4.4.0/fs/ocfs2/quota_global.c @@ -66,7 +66,7 @@ static void qsync_work_fn(struct work_struct *work); -static void ocfs2_global_disk2memdqb(struct dquot *dquot, void *dp) +static int ocfs2_global_disk2memdqb(struct dquot *dquot, void *dp) { struct ocfs2_global_disk_dqblk *d = dp; struct mem_dqblk *m = &dquot->dq_dqb; @@ -89,9 +89,10 @@ if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags)) m->dqb_itime = le64_to_cpu(d->dqb_itime); OCFS2_DQUOT(dquot)->dq_use_count = le32_to_cpu(d->dqb_use_count); + return 0; } -static void ocfs2_global_mem2diskdqb(void *dp, struct dquot *dquot) +static int ocfs2_global_mem2diskdqb(void *dp, struct dquot *dquot) { struct ocfs2_global_disk_dqblk *d = dp; struct mem_dqblk *m = &dquot->dq_dqb; @@ -107,6 +108,7 @@ d->dqb_btime = cpu_to_le64(m->dqb_btime); d->dqb_itime = cpu_to_le64(m->dqb_itime); d->dqb_pad1 = d->dqb_pad2 = 0; + return 0; } static int ocfs2_global_is_id(void *dp, struct dquot *dquot) --- linux-4.4.0.orig/fs/open.c +++ linux-4.4.0/fs/open.c @@ -34,6 +34,9 @@ #include "internal.h" +#define CREATE_TRACE_POINTS +#include + int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, struct file *filp) { @@ -64,6 +67,7 @@ mutex_unlock(&dentry->d_inode->i_mutex); return ret; } +EXPORT_SYMBOL(do_truncate); long vfs_truncate(struct path *path, loff_t length) { @@ -678,6 +682,7 @@ } return 0; } +EXPORT_SYMBOL(open_check_o_direct); static int do_dentry_open(struct file *f, struct inode *inode, @@ -1029,6 +1034,7 @@ } else { fsnotify_open(f); fd_install(fd, f); + trace_do_sys_open(tmp->name, flags, mode); } } putname(tmp); --- linux-4.4.0.orig/fs/overlayfs/Kconfig +++ linux-4.4.0/fs/overlayfs/Kconfig @@ -8,3 +8,10 @@ merged with the 'upper' object. For more information see Documentation/filesystems/overlayfs.txt + +config OVERLAY_FS_V1 + bool "Overlayfs filesystem (V1) format support" + help + Support the older whiteout format overlayfs filesystems via + the overlay module. This is needed to support legacy kernels + built using the original overlayfs patch set. --- linux-4.4.0.orig/fs/overlayfs/copy_up.c +++ linux-4.4.0/fs/overlayfs/copy_up.c @@ -298,9 +298,17 @@ if (WARN_ON(!workdir)) return -EROFS; + err = ovl_dentry_root_may(dentry, lowerpath, MAY_READ); + if (err) + return err; + ovl_path_upper(parent, &parentpath); upperdir = parentpath.dentry; + err = ovl_dentry_root_may(dentry, &parentpath, MAY_WRITE); + if (err) + return err; + err = vfs_getattr(&parentpath, &pstat); if (err) return err; --- linux-4.4.0.orig/fs/overlayfs/dir.c +++ linux-4.4.0/fs/overlayfs/dir.c @@ -48,6 +48,34 @@ return temp; } +#ifdef CONFIG_OVERLAY_FS_V1 +static const char *ovl_whiteout_symlink = "(overlay-whiteout)"; +int ovl_do_whiteout_v1(struct inode *workdir, + struct dentry *dentry) +{ + int err; + + err = vfs_symlink(workdir, dentry, ovl_whiteout_symlink); + if (err) + return err; + + err = vfs_setxattr(dentry, ovl_whiteout_xattr, "y", 1, 0); + if (err) + vfs_unlink(workdir, dentry, NULL); + + if (err) { + /* + * There's no way to recover from failure to whiteout. + * What should we do? Log a big fat error and... ? + */ + pr_err("overlayfs: ERROR - failed to whiteout '%s'\n", + dentry->d_name.name); + } + + return err; +} +#endif + /* caller holds i_mutex on workdir */ static struct dentry *ovl_whiteout(struct dentry *workdir, struct dentry *dentry) @@ -60,7 +88,7 @@ if (IS_ERR(whiteout)) return whiteout; - err = ovl_do_whiteout(wdir, whiteout); + err = ovl_do_whiteout(wdir, whiteout, dentry); if (err) { dput(whiteout); whiteout = ERR_PTR(err); @@ -699,6 +727,51 @@ return ovl_do_remove(dentry, true); } +/* + * ovl_downgrade_whiteout -- build a symlink whiteout and install it + * over the existing chardev whiteout. + */ +static void ovl_downgrade_whiteout(struct dentry *old_upperdir, + struct dentry *old) +{ + struct dentry *workdir = ovl_workdir(old); + struct dentry *legacy_whiteout = NULL; + struct dentry *whtdentry; + int err; + + err = ovl_lock_rename_workdir(workdir, old_upperdir); + if (err) + goto out; + + whtdentry = lookup_one_len(old->d_name.name, old_upperdir, + old->d_name.len); + if (IS_ERR(whtdentry)) { + err = PTR_ERR(whtdentry); + goto out_unlock_workdir; + } + + legacy_whiteout = ovl_whiteout(workdir, old); + if (IS_ERR(legacy_whiteout)) { + err = PTR_ERR(legacy_whiteout); + goto out_dput; + } + + err = ovl_do_rename(workdir->d_inode, legacy_whiteout, + old_upperdir->d_inode, whtdentry, 0); + if (err) + ovl_cleanup(workdir->d_inode, legacy_whiteout); + +out_dput: + dput(whtdentry); + dput(legacy_whiteout); +out_unlock_workdir: + unlock_rename(workdir, old_upperdir); +out: + if (err) + pr_err("overlayfs: dowgrade of '%pd2' whiteout failed (%i)\n", + old, err); +} + static int ovl_rename2(struct inode *olddir, struct dentry *old, struct inode *newdir, struct dentry *new, unsigned int flags) @@ -919,6 +992,9 @@ dput(newdentry); out_unlock: unlock_rename(new_upperdir, old_upperdir); + + if (!err && ovl_config_legacy(old) && flags & RENAME_WHITEOUT) + ovl_downgrade_whiteout(old_upperdir, old); out_revert_creds: if (old_opaque || new_opaque) { revert_creds(old_cred); --- linux-4.4.0.orig/fs/overlayfs/overlayfs.h +++ linux-4.4.0/fs/overlayfs/overlayfs.h @@ -27,6 +27,8 @@ #define OVL_XATTR_PRE_LEN 16 #define OVL_XATTR_OPAQUE OVL_XATTR_PRE_NAME"opaque" +extern const char *ovl_whiteout_xattr; /* XXX: should be ^^ */ + static inline int ovl_do_rmdir(struct inode *dir, struct dentry *dentry) { int err = vfs_rmdir(dir, dentry); @@ -124,12 +126,28 @@ return err; } -static inline int ovl_do_whiteout(struct inode *dir, struct dentry *dentry) +#ifdef CONFIG_OVERLAY_FS_V1 +extern int ovl_config_legacy(struct dentry *dentry); +#else +#define ovl_config_legacy(x) (0) +#endif + +int ovl_do_whiteout_v1(struct inode *dir, struct dentry *dentry); + +static inline int ovl_do_whiteout_v2(struct inode *dir, struct dentry *dentry) { int err = vfs_whiteout(dir, dentry); pr_debug("whiteout(%pd2) = %i\n", dentry, err); return err; } +static inline int ovl_do_whiteout(struct inode *dir, struct dentry *dentry, + struct dentry *ovlentry) +{ + if (ovl_config_legacy(ovlentry)) + return ovl_do_whiteout_v1(dir, dentry); + + return ovl_do_whiteout_v2(dir, dentry); +} enum ovl_path_type ovl_path_type(struct dentry *dentry); u64 ovl_dentry_version_get(struct dentry *dentry); @@ -149,7 +167,7 @@ void ovl_drop_write(struct dentry *dentry); bool ovl_dentry_is_opaque(struct dentry *dentry); void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque); -bool ovl_is_whiteout(struct dentry *dentry); +bool ovl_is_whiteout(struct dentry *dentry, int is_legacy); void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry); struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags); @@ -157,6 +175,7 @@ struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, struct kstat *stat, const char *link); +int ovl_dentry_root_may(struct dentry *dentry, struct path *realpath, int mode); /* readdir.c */ extern const struct file_operations ovl_dir_operations; --- linux-4.4.0.orig/fs/overlayfs/readdir.c +++ linux-4.4.0/fs/overlayfs/readdir.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "overlayfs.h" @@ -43,6 +44,7 @@ struct ovl_cache_entry *first_maybe_whiteout; int count; int err; + int is_legacy; }; struct ovl_dir_file { @@ -98,7 +100,7 @@ p->ino = ino; p->is_whiteout = false; - if (d_type == DT_CHR) { + if ((d_type == DT_CHR && !rdd->is_legacy) || (d_type == DT_LNK && rdd->is_legacy)) { p->next_maybe_whiteout = rdd->first_maybe_whiteout; rdd->first_maybe_whiteout = p; } @@ -224,7 +226,7 @@ rdd->first_maybe_whiteout = p->next_maybe_whiteout; dentry = lookup_one_len(p->name, dir, p->len); if (!IS_ERR(dentry)) { - p->is_whiteout = ovl_is_whiteout(dentry); + p->is_whiteout = ovl_is_whiteout(dentry, rdd->is_legacy); dput(dentry); } } @@ -290,12 +292,17 @@ .list = list, .root = RB_ROOT, .is_merge = false, + .is_legacy = ovl_config_legacy(dentry), }; int idx, next; for (idx = 0; idx != -1; idx = next) { next = ovl_path_next(idx, dentry, &realpath); + err = ovl_dentry_root_may(dentry, &realpath, MAY_READ); + if (err) + break; + if (next != -1) { err = ovl_dir_read(&realpath, &rdd); if (err) @@ -369,8 +376,13 @@ if (!ctx->pos) ovl_dir_reset(file); - if (od->is_real) + if (od->is_real) { + int res = ovl_dentry_root_may(dentry, &(od->realfile->f_path), MAY_READ); + if (res) + return res; + return iterate_dir(od->realfile, ctx); + } if (!od->cache) { struct ovl_dir_cache *cache; --- linux-4.4.0.orig/fs/overlayfs/super.c +++ linux-4.4.0/fs/overlayfs/super.c @@ -39,8 +39,10 @@ struct vfsmount **lower_mnt; struct dentry *workdir; long lower_namelen; + int legacy; /* pathnames of lower and upper dirs, for show_options */ struct ovl_config config; + struct cred *mounter_creds; }; struct ovl_dir_cache; @@ -236,13 +238,72 @@ return oe->version; } -bool ovl_is_whiteout(struct dentry *dentry) +int ovl_dentry_root_may(struct dentry *dentry, struct path *realpath, int mode) +{ + const struct cred *old_cred; + int err = 0; + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + + old_cred = override_creds(ofs->mounter_creds); + + if (inode_permission(realpath->dentry->d_inode, mode)) + err = -EACCES; + + revert_creds(old_cred); + + return err; +} + +#ifdef CONFIG_OVERLAY_FS_V1 +int ovl_config_legacy(struct dentry *dentry) +{ + struct super_block *sb = dentry->d_sb; + struct ovl_fs *ufs = sb->s_fs_info; + + return ufs->legacy; +} + +const char *ovl_whiteout_xattr = "trusted.overlay.whiteout"; + +bool ovl_is_whiteout_v1(struct dentry *dentry) +{ + int res; + char val; + + if (!dentry) + return false; + if (!dentry->d_inode) + return false; + if (!S_ISLNK(dentry->d_inode->i_mode)) + return false; + if (!dentry->d_inode->i_op->getxattr) + return false; + + res = dentry->d_inode->i_op->getxattr(dentry, ovl_whiteout_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} +#else +#define ovl_is_whiteout_v1(x) (0) +#endif + +bool ovl_is_whiteout_v2(struct dentry *dentry) { struct inode *inode = dentry->d_inode; return inode && IS_WHITEOUT(inode); } +bool ovl_is_whiteout(struct dentry *dentry, int is_legacy) +{ + if (is_legacy) + return ovl_is_whiteout_v2(dentry) || ovl_is_whiteout_v1(dentry); + + return ovl_is_whiteout_v2(dentry); +} + static bool ovl_is_opaquedir(struct dentry *dentry) { int res; @@ -407,6 +468,7 @@ struct dentry *this, *prev = NULL; unsigned int i; int err; + int is_legacy = ovl_config_legacy(dentry); upperdir = ovl_upperdentry_dereference(poe); if (upperdir) { @@ -421,7 +483,7 @@ err = -EREMOTE; goto out; } - if (ovl_is_whiteout(this)) { + if (ovl_is_whiteout(this, is_legacy)) { dput(this); this = NULL; upperopaque = true; @@ -455,7 +517,7 @@ } if (!this) continue; - if (ovl_is_whiteout(this)) { + if (ovl_is_whiteout(this, is_legacy)) { dput(this); break; } @@ -540,6 +602,7 @@ struct ovl_fs *ufs = sb->s_fs_info; unsigned i; + put_cred(ufs->mounter_creds); dput(ufs->workdir); mntput(ufs->upper_mnt); for (i = 0; i < ufs->numlower; i++) @@ -1038,6 +1101,11 @@ if (!root_dentry) goto out_free_oe; + /* Record the mounter. */ + ufs->mounter_creds = prepare_creds(); + if (!ufs->mounter_creds) + goto out_put_root; + mntput(upperpath.mnt); for (i = 0; i < numlower; i++) mntput(stack[i].mnt); @@ -1060,6 +1128,8 @@ return 0; +out_put_root: + dput(root_dentry); out_free_oe: kfree(oe); out_put_lower_mnt: @@ -1099,17 +1169,63 @@ .name = "overlay", .mount = ovl_mount, .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("overlay"); +#ifdef CONFIG_OVERLAY_FS_V1 +static int ovl_v1_fill_super(struct super_block *sb, void *data, int silent) +{ + int ret; + struct ovl_fs *ufs; + + ret = ovl_fill_super(sb, data, silent); + if (ret) + return ret; + + /* Mark this as a overlayfs format. */ + ufs = sb->s_fs_info; + ufs->legacy = 1; + + return ret; +} + +static struct dentry *ovl_mount_v1(struct file_system_type *fs_type, int flags, + const char *dev_name, void *raw_data) +{ + return mount_nodev(fs_type, flags, raw_data, ovl_v1_fill_super); +} + +static struct file_system_type ovl_v1_fs_type = { + .owner = THIS_MODULE, + .name = "overlayfs", + .mount = ovl_mount_v1, + .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, /* XXX */ +}; +MODULE_ALIAS_FS("overlayfs"); +MODULE_ALIAS("overlayfs"); +#endif + static int __init ovl_init(void) { + int ret; + + if (IS_ENABLED(CONFIG_OVERLAY_FS_V1)) { + ret = register_filesystem(&ovl_v1_fs_type); + if (ret) + return ret; + } + return register_filesystem(&ovl_fs_type); } static void __exit ovl_exit(void) { unregister_filesystem(&ovl_fs_type); + + if (IS_ENABLED(CONFIG_OVERLAY_FS_V1)) + unregister_filesystem(&ovl_v1_fs_type); } module_init(ovl_init); --- linux-4.4.0.orig/fs/posix_acl.c +++ linux-4.4.0/fs/posix_acl.c @@ -595,59 +595,77 @@ /* * Fix up the uids and gids in posix acl extended attributes in place. */ -static void posix_acl_fix_xattr_userns( +static int posix_acl_fix_xattr_userns( struct user_namespace *to, struct user_namespace *from, void *value, size_t size) { posix_acl_xattr_header *header = (posix_acl_xattr_header *)value; posix_acl_xattr_entry *entry = (posix_acl_xattr_entry *)(header+1), *end; int count; - kuid_t uid; - kgid_t gid; + kuid_t kuid; + uid_t uid; + kgid_t kgid; + gid_t gid; if (!value) - return; + return 0; if (size < sizeof(posix_acl_xattr_header)) - return; + return 0; if (header->a_version != cpu_to_le32(POSIX_ACL_XATTR_VERSION)) - return; + return 0; count = posix_acl_xattr_count(size); if (count < 0) - return; + return 0; if (count == 0) - return; + return 0; for (end = entry + count; entry != end; entry++) { switch(le16_to_cpu(entry->e_tag)) { case ACL_USER: - uid = make_kuid(from, le32_to_cpu(entry->e_id)); - entry->e_id = cpu_to_le32(from_kuid(to, uid)); + kuid = make_kuid(from, le32_to_cpu(entry->e_id)); + if (!uid_valid(kuid)) + return -EOVERFLOW; + uid = from_kuid(to, kuid); + if (uid == (uid_t)-1) + return -EOVERFLOW; + entry->e_id = cpu_to_le32(uid); break; case ACL_GROUP: - gid = make_kgid(from, le32_to_cpu(entry->e_id)); - entry->e_id = cpu_to_le32(from_kgid(to, gid)); + kgid = make_kgid(from, le32_to_cpu(entry->e_id)); + if (!gid_valid(kgid)) + return -EOVERFLOW; + gid = from_kgid(to, kgid); + if (gid == (gid_t)-1) + return -EOVERFLOW; + entry->e_id = cpu_to_le32(gid); break; default: break; } } + + return 0; } -void posix_acl_fix_xattr_from_user(void *value, size_t size) +int +posix_acl_fix_xattr_from_user(struct user_namespace *target_ns, void *value, + size_t size) { - struct user_namespace *user_ns = current_user_ns(); - if (user_ns == &init_user_ns) - return; - posix_acl_fix_xattr_userns(&init_user_ns, user_ns, value, size); + struct user_namespace *source_ns = current_user_ns(); + if (source_ns == target_ns) + return 0; + return posix_acl_fix_xattr_userns(target_ns, source_ns, value, size); } -void posix_acl_fix_xattr_to_user(void *value, size_t size) +int +posix_acl_fix_xattr_to_user(struct user_namespace *source_ns, void *value, + size_t size) { - struct user_namespace *user_ns = current_user_ns(); - if (user_ns == &init_user_ns) - return; - posix_acl_fix_xattr_userns(user_ns, &init_user_ns, value, size); + struct user_namespace *target_ns = current_user_ns(); + if (target_ns == source_ns) + return 0; + return posix_acl_fix_xattr_userns(target_ns, source_ns, value, size); } /* @@ -782,7 +800,7 @@ if (acl == NULL) return -ENODATA; - error = posix_acl_to_xattr(&init_user_ns, acl, value, size); + error = posix_acl_to_xattr(dentry->d_sb->s_user_ns, acl, value, size); posix_acl_release(acl); return error; @@ -810,7 +828,8 @@ return -EPERM; if (value) { - acl = posix_acl_from_xattr(&init_user_ns, value, size); + acl = posix_acl_from_xattr(dentry->d_sb->s_user_ns, value, + size); if (IS_ERR(acl)) return PTR_ERR(acl); --- linux-4.4.0.orig/fs/proc/Makefile +++ linux-4.4.0/fs/proc/Makefile @@ -30,3 +30,4 @@ proc-$(CONFIG_PROC_VMCORE) += vmcore.o proc-$(CONFIG_PRINTK) += kmsg.o proc-$(CONFIG_PROC_PAGE_MONITOR) += page.o +proc-y += version_signature.o --- linux-4.4.0.orig/fs/proc/base.c +++ linux-4.4.0/fs/proc/base.c @@ -1921,7 +1921,7 @@ down_read(&mm->mmap_sem); vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { - *path = vma->vm_file->f_path; + *path = vma_pr_or_file(vma)->f_path; path_get(path); rc = 0; } --- linux-4.4.0.orig/fs/proc/nommu.c +++ linux-4.4.0/fs/proc/nommu.c @@ -45,7 +45,10 @@ file = region->vm_file; if (file) { - struct inode *inode = file_inode(region->vm_file); + struct inode *inode; + + file = vmr_pr_or_file(region); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; } --- linux-4.4.0.orig/fs/proc/root.c +++ linux-4.4.0/fs/proc/root.c @@ -117,7 +117,8 @@ return ERR_PTR(-EPERM); } - sb = sget(fs_type, proc_test_super, proc_set_super, flags, ns); + sb = sget_userns(fs_type, proc_test_super, proc_set_super, flags, + ns->user_ns, ns); if (IS_ERR(sb)) return ERR_CAST(sb); --- linux-4.4.0.orig/fs/proc/task_mmu.c +++ linux-4.4.0/fs/proc/task_mmu.c @@ -281,7 +281,10 @@ const char *name = NULL; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; @@ -1505,7 +1508,7 @@ struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; - struct file *file = vma->vm_file; + struct file *file = vma_pr_or_file(vma); struct mm_struct *mm = vma->vm_mm; struct mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, --- linux-4.4.0.orig/fs/proc/task_nommu.c +++ linux-4.4.0/fs/proc/task_nommu.c @@ -160,7 +160,10 @@ file = vma->vm_file; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; --- linux-4.4.0.orig/fs/proc/version_signature.c +++ linux-4.4.0/fs/proc/version_signature.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include +#include +#include + +static int version_signature_proc_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%s\n", CONFIG_VERSION_SIGNATURE); + return 0; +} + +static int version_signature_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, version_signature_proc_show, NULL); +} + +static const struct file_operations version_signature_proc_fops = { + .open = version_signature_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init proc_version_signature_init(void) +{ + proc_create("version_signature", 0, NULL, &version_signature_proc_fops); + return 0; +} +module_init(proc_version_signature_init); --- linux-4.4.0.orig/fs/quota/dquot.c +++ linux-4.4.0/fs/quota/dquot.c @@ -741,7 +741,7 @@ if (!atomic_read(&dquot->dq_count)) { quota_error(dquot->dq_sb, "trying to free free dquot of %s %d", quotatypes[dquot->dq_id.type], - from_kqid(&init_user_ns, dquot->dq_id)); + from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id)); BUG(); } #endif --- linux-4.4.0.orig/fs/quota/quota.c +++ linux-4.4.0/fs/quota/quota.c @@ -38,7 +38,7 @@ break; /*FALLTHROUGH*/ default: - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; } @@ -733,7 +733,7 @@ if (IS_ERR(tmp)) return ERR_CAST(tmp); - bdev = lookup_bdev(tmp->name); + bdev = lookup_bdev(tmp->name, 0); putname(tmp); if (IS_ERR(bdev)) return ERR_CAST(bdev); --- linux-4.4.0.orig/fs/quota/quota_tree.c +++ linux-4.4.0/fs/quota/quota_tree.c @@ -25,8 +25,10 @@ static int get_index(struct qtree_mem_dqinfo *info, struct kqid qid, int depth) { unsigned int epb = info->dqi_usable_bs >> 2; - qid_t id = from_kqid(&init_user_ns, qid); + qid_t id = from_kqid(info->dqi_sb->s_user_ns, qid); + if (id == (qid_t)-1) + return -EOVERFLOW; depth = info->dqi_qtree_depth - depth - 1; while (depth--) id /= epb; @@ -292,7 +294,7 @@ uint *treeblk, int depth) { char *buf = getdqbuf(info->dqi_usable_bs); - int ret = 0, newson = 0, newact = 0; + int ret = 0, newson = 0, newact = 0, index; __le32 *ref; uint newblk; @@ -314,7 +316,12 @@ } } ref = (__le32 *)buf; - newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); + index = get_index(info, dquot->dq_id, depth); + if (index < 0) { + ret = index; + goto out_buf; + } + newblk = le32_to_cpu(ref[index]); if (!newblk) newson = 1; if (depth == info->dqi_qtree_depth - 1) { @@ -322,8 +329,7 @@ if (newblk) { quota_error(dquot->dq_sb, "Inserting already present " "quota entry (block %u)", - le32_to_cpu(ref[get_index(info, - dquot->dq_id, depth)])); + le32_to_cpu(ref[index])); ret = -EIO; goto out_buf; } @@ -333,8 +339,7 @@ ret = do_insert_tree(info, dquot, &newblk, depth+1); } if (newson && ret >= 0) { - ref[get_index(info, dquot->dq_id, depth)] = - cpu_to_le32(newblk); + ref[index] = cpu_to_le32(newblk); ret = write_blk(info, *treeblk, buf); } else if (newact && ret < 0) { put_free_dqblk(info, buf, *treeblk); @@ -384,8 +389,10 @@ } } spin_lock(&dq_data_lock); - info->dqi_ops->mem2disk_dqblk(ddquot, dquot); + ret = info->dqi_ops->mem2disk_dqblk(ddquot, dquot); spin_unlock(&dq_data_lock); + if (ret) + goto out_free; ret = sb->s_op->quota_write(sb, type, ddquot, info->dqi_entry_size, dquot->dq_off); if (ret != info->dqi_entry_size) { @@ -396,8 +403,9 @@ ret = 0; } dqstats_inc(DQST_WRITES); - kfree(ddquot); +out_free: + kfree(ddquot); return ret; } EXPORT_SYMBOL(qtree_write_dquot); @@ -468,7 +476,7 @@ uint *blk, int depth) { char *buf = getdqbuf(info->dqi_usable_bs); - int ret = 0; + int ret = 0, index; uint newblk; __le32 *ref = (__le32 *)buf; @@ -480,7 +488,12 @@ *blk); goto out_buf; } - newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); + index = get_index(info, dquot->dq_id, depth); + if (index < 0) { + ret = index; + goto out_buf; + } + newblk = le32_to_cpu(ref[index]); if (depth == info->dqi_qtree_depth - 1) { ret = free_dqentry(info, dquot, newblk); newblk = 0; @@ -489,7 +502,7 @@ } if (ret >= 0 && !newblk) { int i; - ref[get_index(info, dquot->dq_id, depth)] = cpu_to_le32(0); + ref[index] = cpu_to_le32(0); /* Block got empty? */ for (i = 0; i < (info->dqi_usable_bs >> 2) && !ref[i]; i++) ; @@ -548,7 +561,7 @@ if (i == qtree_dqstr_in_blk(info)) { quota_error(dquot->dq_sb, "Quota for id %u referenced but not present", - from_kqid(&init_user_ns, dquot->dq_id)); + from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id)); ret = -EIO; goto out_buf; } else { @@ -565,7 +578,7 @@ struct dquot *dquot, uint blk, int depth) { char *buf = getdqbuf(info->dqi_usable_bs); - loff_t ret = 0; + loff_t ret = 0, index; __le32 *ref = (__le32 *)buf; if (!buf) @@ -577,7 +590,12 @@ goto out_buf; } ret = 0; - blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); + index = get_index(info, dquot->dq_id, depth); + if (index < 0) { + ret = index; + goto out_buf; + } + blk = le32_to_cpu(ref[index]); if (!blk) /* No reference? */ goto out_buf; if (depth < info->dqi_qtree_depth - 1) @@ -602,7 +620,7 @@ struct super_block *sb = dquot->dq_sb; loff_t offset; char *ddquot; - int ret = 0; + int ret = 0, err; #ifdef __QUOTA_QT_PARANOIA /* Invalidated quota? */ @@ -618,7 +636,7 @@ if (offset < 0) quota_error(sb,"Can't read quota structure " "for id %u", - from_kqid(&init_user_ns, + from_kqid(sb->s_user_ns, dquot->dq_id)); dquot->dq_off = 0; set_bit(DQ_FAKE_B, &dquot->dq_flags); @@ -637,18 +655,20 @@ if (ret >= 0) ret = -EIO; quota_error(sb, "Error while reading quota structure for id %u", - from_kqid(&init_user_ns, dquot->dq_id)); + from_kqid(sb->s_user_ns, dquot->dq_id)); set_bit(DQ_FAKE_B, &dquot->dq_flags); memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); kfree(ddquot); goto out; } spin_lock(&dq_data_lock); - info->dqi_ops->disk2mem_dqblk(dquot, ddquot); - if (!dquot->dq_dqb.dqb_bhardlimit && - !dquot->dq_dqb.dqb_bsoftlimit && - !dquot->dq_dqb.dqb_ihardlimit && - !dquot->dq_dqb.dqb_isoftlimit) + err = info->dqi_ops->disk2mem_dqblk(dquot, ddquot); + if (err) + ret = err; + else if (!dquot->dq_dqb.dqb_bhardlimit && + !dquot->dq_dqb.dqb_bsoftlimit && + !dquot->dq_dqb.dqb_ihardlimit && + !dquot->dq_dqb.dqb_isoftlimit) set_bit(DQ_FAKE_B, &dquot->dq_flags); spin_unlock(&dq_data_lock); kfree(ddquot); --- linux-4.4.0.orig/fs/quota/quota_v1.c +++ linux-4.4.0/fs/quota/quota_v1.c @@ -56,15 +56,20 @@ { int type = dquot->dq_id.type; struct v1_disk_dqblk dqblk; + qid_t qid; if (!sb_dqopt(dquot->dq_sb)->files[type]) return -EINVAL; + qid = from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id); + if (qid == (qid_t)-1) + return -EOVERFLOW; + /* Set structure to 0s in case read fails/is after end of file */ memset(&dqblk, 0, sizeof(struct v1_disk_dqblk)); dquot->dq_sb->s_op->quota_read(dquot->dq_sb, type, (char *)&dqblk, sizeof(struct v1_disk_dqblk), - v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id))); + v1_dqoff(qid)); v1_disk2mem_dqblk(&dquot->dq_dqb, &dqblk); if (dquot->dq_dqb.dqb_bhardlimit == 0 && @@ -82,6 +87,10 @@ short type = dquot->dq_id.type; ssize_t ret; struct v1_disk_dqblk dqblk; + qid_t qid = from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id); + + if (qid == (qid_t)-1) + return -EOVERFLOW; v1_mem2disk_dqblk(&dqblk, &dquot->dq_dqb); if (((type == USRQUOTA) && uid_eq(dquot->dq_id.uid, GLOBAL_ROOT_UID)) || @@ -95,7 +104,7 @@ if (sb_dqopt(dquot->dq_sb)->files[type]) ret = dquot->dq_sb->s_op->quota_write(dquot->dq_sb, type, (char *)&dqblk, sizeof(struct v1_disk_dqblk), - v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id))); + v1_dqoff(qid)); if (ret != sizeof(struct v1_disk_dqblk)) { quota_error(dquot->dq_sb, "dquota write failed"); if (ret >= 0) --- linux-4.4.0.orig/fs/quota/quota_v2.c +++ linux-4.4.0/fs/quota/quota_v2.c @@ -23,11 +23,11 @@ #define __QUOTA_V2_PARANOIA -static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot); -static void v2r0_disk2memdqb(struct dquot *dquot, void *dp); +static int v2r0_mem2diskdqb(void *dp, struct dquot *dquot); +static int v2r0_disk2memdqb(struct dquot *dquot, void *dp); static int v2r0_is_id(void *dp, struct dquot *dquot); -static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot); -static void v2r1_disk2memdqb(struct dquot *dquot, void *dp); +static int v2r1_mem2diskdqb(void *dp, struct dquot *dquot); +static int v2r1_disk2memdqb(struct dquot *dquot, void *dp); static int v2r1_is_id(void *dp, struct dquot *dquot); static struct qtree_fmt_operations v2r0_qtree_ops = { @@ -177,7 +177,7 @@ return 0; } -static void v2r0_disk2memdqb(struct dquot *dquot, void *dp) +static int v2r0_disk2memdqb(struct dquot *dquot, void *dp) { struct v2r0_disk_dqblk *d = dp, empty; struct mem_dqblk *m = &dquot->dq_dqb; @@ -195,14 +195,19 @@ empty.dqb_itime = cpu_to_le64(1); if (!memcmp(&empty, dp, sizeof(struct v2r0_disk_dqblk))) m->dqb_itime = 0; + return 0; } -static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot) +static int v2r0_mem2diskdqb(void *dp, struct dquot *dquot) { struct v2r0_disk_dqblk *d = dp; struct mem_dqblk *m = &dquot->dq_dqb; struct qtree_mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv; + qid_t qid = from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id); + + if (qid == (qid_t)-1) + return -EOVERFLOW; d->dqb_ihardlimit = cpu_to_le32(m->dqb_ihardlimit); d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); @@ -212,9 +217,10 @@ d->dqb_bsoftlimit = cpu_to_le32(v2_stoqb(m->dqb_bsoftlimit)); d->dqb_curspace = cpu_to_le64(m->dqb_curspace); d->dqb_btime = cpu_to_le64(m->dqb_btime); - d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id)); + d->dqb_id = cpu_to_le32(qid); if (qtree_entry_unused(info, dp)) d->dqb_itime = cpu_to_le64(1); + return 0; } static int v2r0_is_id(void *dp, struct dquot *dquot) @@ -222,15 +228,18 @@ struct v2r0_disk_dqblk *d = dp; struct qtree_mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv; + struct kqid qid; if (qtree_entry_unused(info, dp)) return 0; - return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type, - le32_to_cpu(d->dqb_id)), - dquot->dq_id); + qid = make_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id.type, + le32_to_cpu(d->dqb_id)); + if (!qid_valid(qid)) + return 0; + return qid_eq(qid, dquot->dq_id); } -static void v2r1_disk2memdqb(struct dquot *dquot, void *dp) +static int v2r1_disk2memdqb(struct dquot *dquot, void *dp) { struct v2r1_disk_dqblk *d = dp, empty; struct mem_dqblk *m = &dquot->dq_dqb; @@ -248,14 +257,19 @@ empty.dqb_itime = cpu_to_le64(1); if (!memcmp(&empty, dp, sizeof(struct v2r1_disk_dqblk))) m->dqb_itime = 0; + return 0; } -static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot) +static int v2r1_mem2diskdqb(void *dp, struct dquot *dquot) { struct v2r1_disk_dqblk *d = dp; struct mem_dqblk *m = &dquot->dq_dqb; struct qtree_mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv; + qid_t qid = from_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id); + + if (qid == (qid_t)-1) + return -EOVERFLOW; d->dqb_ihardlimit = cpu_to_le64(m->dqb_ihardlimit); d->dqb_isoftlimit = cpu_to_le64(m->dqb_isoftlimit); @@ -265,9 +279,10 @@ d->dqb_bsoftlimit = cpu_to_le64(v2_stoqb(m->dqb_bsoftlimit)); d->dqb_curspace = cpu_to_le64(m->dqb_curspace); d->dqb_btime = cpu_to_le64(m->dqb_btime); - d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id)); + d->dqb_id = cpu_to_le32(qid); if (qtree_entry_unused(info, dp)) d->dqb_itime = cpu_to_le64(1); + return 0; } static int v2r1_is_id(void *dp, struct dquot *dquot) @@ -278,7 +293,7 @@ if (qtree_entry_unused(info, dp)) return 0; - return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type, + return qid_eq(make_kqid(dquot->dq_sb->s_user_ns, dquot->dq_id.type, le32_to_cpu(d->dqb_id)), dquot->dq_id); } --- linux-4.4.0.orig/fs/read_write.c +++ linux-4.4.0/fs/read_write.c @@ -494,6 +494,30 @@ } EXPORT_SYMBOL(__vfs_write); +vfs_readf_t vfs_readf(struct file *file) +{ + const struct file_operations *fop = file->f_op; + + if (fop->read) + return fop->read; + if (fop->read_iter) + return new_sync_read; + return ERR_PTR(-ENOSYS); +} +EXPORT_SYMBOL(vfs_readf); + +vfs_writef_t vfs_writef(struct file *file) +{ + const struct file_operations *fop = file->f_op; + + if (fop->write) + return fop->write; + if (fop->write_iter) + return new_sync_write; + return ERR_PTR(-ENOSYS); +} +EXPORT_SYMBOL(vfs_writef); + ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos) { mm_segment_t old_fs; --- linux-4.4.0.orig/fs/splice.c +++ linux-4.4.0/fs/splice.c @@ -1110,8 +1110,8 @@ /* * Attempt to initiate a splice from pipe to file. */ -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, - loff_t *ppos, size_t len, unsigned int flags) +long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); @@ -1123,13 +1123,14 @@ return splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL(do_splice_from); /* * Attempt to initiate a splice from a file to a pipe. */ -static long do_splice_to(struct file *in, loff_t *ppos, - struct pipe_inode_info *pipe, size_t len, - unsigned int flags) +long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -1149,6 +1150,7 @@ return splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes --- linux-4.4.0.orig/fs/super.c +++ linux-4.4.0/fs/super.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "internal.h" @@ -165,6 +166,7 @@ list_lru_destroy(&s->s_inode_lru); security_sb_free(s); WARN_ON(!list_empty(&s->s_mounts)); + put_user_ns(s->s_user_ns); kfree(s->s_subtype); kfree(s->s_options); call_rcu(&s->rcu, destroy_super_rcu); @@ -174,11 +176,13 @@ * alloc_super - create new superblock * @type: filesystem type superblock should belong to * @flags: the mount flags + * @user_ns: User namespace for the super_block * * Allocates and initializes a new &struct super_block. alloc_super() * returns a pointer new superblock or %NULL if allocation had failed. */ -static struct super_block *alloc_super(struct file_system_type *type, int flags) +static struct super_block *alloc_super(struct file_system_type *type, int flags, + struct user_namespace *user_ns) { struct super_block *s = kzalloc(sizeof(struct super_block), GFP_USER); static const struct super_operations default_op; @@ -188,6 +192,7 @@ return NULL; INIT_LIST_HEAD(&s->s_mounts); + s->s_user_ns = get_user_ns(user_ns); if (security_sb_alloc(s)) goto fail; @@ -442,17 +447,18 @@ EXPORT_SYMBOL(generic_shutdown_super); /** - * sget - find or create a superblock + * sget_userns - find or create a superblock * @type: filesystem type superblock should belong to * @test: comparison callback * @set: setup callback * @flags: mount flags + * @user_ns: User namespace for the super_block * @data: argument to each of them */ -struct super_block *sget(struct file_system_type *type, +struct super_block *sget_userns(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), - int flags, + int flags, struct user_namespace *user_ns, void *data) { struct super_block *s = NULL; @@ -465,6 +471,10 @@ hlist_for_each_entry(old, &type->fs_supers, s_instances) { if (!test(old, data)) continue; + if (user_ns != old->s_user_ns) { + spin_unlock(&sb_lock); + return ERR_PTR(-EBUSY); + } if (!grab_super(old)) goto retry; if (s) { @@ -477,7 +487,7 @@ } if (!s) { spin_unlock(&sb_lock); - s = alloc_super(type, flags); + s = alloc_super(type, flags, user_ns); if (!s) return ERR_PTR(-ENOMEM); goto retry; @@ -500,6 +510,25 @@ return s; } +EXPORT_SYMBOL(sget_userns); + +/** + * sget - find or create a superblock + * @type: filesystem type superblock should belong to + * @test: comparison callback + * @set: setup callback + * @flags: mount flags + * @data: argument to each of them + */ +struct super_block *sget(struct file_system_type *type, + int (*test)(struct super_block *,void *), + int (*set)(struct super_block *,void *), + int flags, + void *data) +{ + return sget_userns(type, test, set, flags, current_user_ns(), data); +} + EXPORT_SYMBOL(sget); void drop_super(struct super_block *sb) @@ -977,6 +1006,23 @@ if (IS_ERR(bdev)) return ERR_CAST(bdev); + if (current_user_ns() != &init_user_ns) { + /* + * For userns mounts, disallow mounting if bdev is open for + * writing + */ + if (!atomic_dec_unless_positive(&bdev->bd_inode->i_writecount)) { + error = -EBUSY; + goto error_bdev; + } + if (bdev->bd_contains != bdev && + !atomic_dec_unless_positive(&bdev->bd_contains->bd_inode->i_writecount)) { + atomic_inc(&bdev->bd_inode->i_writecount); + error = -EBUSY; + goto error_bdev; + } + } + /* * once the super is inserted into the list by sget, s_umount * will protect the lockfs code from trying to start a snapshot @@ -986,7 +1032,7 @@ if (bdev->bd_fsfreeze_count > 0) { mutex_unlock(&bdev->bd_fsfreeze_mutex); error = -EBUSY; - goto error_bdev; + goto error_inc; } s = sget(fs_type, test_bdev_super, set_bdev_super, flags | MS_NOSEC, bdev); @@ -998,7 +1044,7 @@ if ((flags ^ s->s_flags) & MS_RDONLY) { deactivate_locked_super(s); error = -EBUSY; - goto error_bdev; + goto error_inc; } /* @@ -1031,6 +1077,12 @@ error_s: error = PTR_ERR(s); +error_inc: + if (current_user_ns() != &init_user_ns) { + atomic_inc(&bdev->bd_inode->i_writecount); + if (bdev->bd_contains != bdev) + atomic_inc(&bdev->bd_contains->bd_inode->i_writecount); + } error_bdev: blkdev_put(bdev, mode); error: @@ -1047,6 +1099,11 @@ generic_shutdown_super(sb); sync_blockdev(bdev); WARN_ON_ONCE(!(mode & FMODE_EXCL)); + if (sb->s_user_ns != &init_user_ns) { + atomic_inc(&bdev->bd_inode->i_writecount); + if (bdev->bd_contains != bdev) + atomic_inc(&bdev->bd_contains->bd_inode->i_writecount); + } blkdev_put(bdev, mode | FMODE_EXCL); } --- linux-4.4.0.orig/fs/xattr.c +++ linux-4.4.0/fs/xattr.c @@ -207,6 +207,7 @@ *xattr_value = value; return error; } +EXPORT_SYMBOL(vfs_getxattr_alloc); /* Compare an extended attribute value with the given value */ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name, @@ -351,8 +352,12 @@ goto out; } if ((strcmp(kname, XATTR_NAME_POSIX_ACL_ACCESS) == 0) || - (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) - posix_acl_fix_xattr_from_user(kvalue, size); + (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) { + error = posix_acl_fix_xattr_from_user(d->d_sb->s_user_ns, + kvalue, size); + if (error) + goto out; + } } error = vfs_setxattr(d, kname, kvalue, size, flags); @@ -452,9 +457,14 @@ error = vfs_getxattr(d, kname, kvalue, size); if (error > 0) { if ((strcmp(kname, XATTR_NAME_POSIX_ACL_ACCESS) == 0) || - (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) - posix_acl_fix_xattr_to_user(kvalue, size); - if (size && copy_to_user(value, kvalue, error)) + (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) { + int ret; + ret = posix_acl_fix_xattr_to_user(d->d_sb->s_user_ns, + kvalue, size); + if (ret) + error = ret; + } + if (error > 0 && size && copy_to_user(value, kvalue, error)) error = -EFAULT; } else if (error == -ERANGE && size >= XATTR_SIZE_MAX) { /* The file system tried to returned a value bigger --- linux-4.4.0.orig/include/crypto/hash_info.h +++ linux-4.4.0/include/crypto/hash_info.h @@ -34,6 +34,9 @@ #define TGR160_DIGEST_SIZE 20 #define TGR192_DIGEST_SIZE 24 +/* not defined in include/crypto/ */ +#define SM3256_DIGEST_SIZE 32 + extern const char *const hash_algo_name[HASH_ALGO__LAST]; extern const int hash_digest_size[HASH_ALGO__LAST]; --- linux-4.4.0.orig/include/drm/i915_pciids.h +++ linux-4.4.0/include/drm/i915_pciids.h @@ -279,12 +279,19 @@ #define INTEL_SKL_GT3_IDS(info) \ INTEL_VGA_DEVICE(0x1926, info), /* ULT GT3 */ \ INTEL_VGA_DEVICE(0x192B, info), /* Halo GT3 */ \ - INTEL_VGA_DEVICE(0x192A, info) /* SRV GT3 */ \ + INTEL_VGA_DEVICE(0x192A, info) /* SRV GT3 */ -#define INTEL_SKL_IDS(info) \ +#define INTEL_SKL_GT4_IDS(info) \ + INTEL_VGA_DEVICE(0x1932, info), /* DT GT4 */ \ + INTEL_VGA_DEVICE(0x193B, info), /* Halo GT4 */ \ + INTEL_VGA_DEVICE(0x193D, info), /* WKS GT4 */ \ + INTEL_VGA_DEVICE(0x193A, info) /* SRV GT4 */ + +#define INTEL_SKL_IDS(info) \ INTEL_SKL_GT1_IDS(info), \ INTEL_SKL_GT2_IDS(info), \ - INTEL_SKL_GT3_IDS(info) + INTEL_SKL_GT3_IDS(info), \ + INTEL_SKL_GT4_IDS(info) #define INTEL_BXT_IDS(info) \ INTEL_VGA_DEVICE(0x0A84, info), \ --- linux-4.4.0.orig/include/keys/trusted-type.h +++ linux-4.4.0/include/keys/trusted-type.h @@ -18,6 +18,7 @@ #define MAX_KEY_SIZE 128 #define MAX_BLOB_SIZE 512 #define MAX_PCRINFO_SIZE 64 +#define MAX_DIGEST_SIZE 64 struct trusted_key_payload { struct rcu_head rcu; @@ -36,6 +37,10 @@ uint32_t pcrinfo_len; unsigned char pcrinfo[MAX_PCRINFO_SIZE]; int pcrlock; + uint32_t hash; + uint32_t digest_len; + unsigned char policydigest[MAX_DIGEST_SIZE]; + uint32_t policyhandle; }; extern struct key_type key_type_trusted; --- linux-4.4.0.orig/include/linux/bio.h +++ linux-4.4.0/include/linux/bio.h @@ -318,16 +318,6 @@ BIP_IP_CHECKSUM = 1 << 4, /* IP checksum */ }; -#if defined(CONFIG_BLK_DEV_INTEGRITY) - -static inline struct bio_integrity_payload *bio_integrity(struct bio *bio) -{ - if (bio->bi_rw & REQ_INTEGRITY) - return bio->bi_integrity; - - return NULL; -} - /* * bio integrity payload */ @@ -349,6 +339,16 @@ struct bio_vec bip_inline_vecs[0];/* embedded bvec array */ }; +#if defined(CONFIG_BLK_DEV_INTEGRITY) + +static inline struct bio_integrity_payload *bio_integrity(struct bio *bio) +{ + if (bio->bi_rw & REQ_INTEGRITY) + return bio->bi_integrity; + + return NULL; +} + static inline bool bio_integrity_flagged(struct bio *bio, enum bip_flags flag) { struct bio_integrity_payload *bip = bio_integrity(bio); @@ -795,6 +795,18 @@ return false; } +static inline void *bio_integrity_alloc(struct bio * bio, gfp_t gfp, + unsigned int nr) +{ + return ERR_PTR(-EINVAL); +} + +static inline int bio_integrity_add_page(struct bio *bio, struct page *page, + unsigned int len, unsigned int offset) +{ + return 0; +} + #endif /* CONFIG_BLK_DEV_INTEGRITY */ #endif /* CONFIG_BLOCK */ --- linux-4.4.0.orig/include/linux/blk-mq.h +++ linux-4.4.0/include/linux/blk-mq.h @@ -188,8 +188,14 @@ void blk_mq_free_request(struct request *rq); void blk_mq_free_hctx_request(struct blk_mq_hw_ctx *, struct request *rq); bool blk_mq_can_queue(struct blk_mq_hw_ctx *); + +enum { + BLK_MQ_REQ_NOWAIT = (1 << 0), /* return when out of requests */ + BLK_MQ_REQ_RESERVED = (1 << 1), /* allocate from reserved pool */ +}; + struct request *blk_mq_alloc_request(struct request_queue *q, int rw, - gfp_t gfp, bool reserved); + unsigned int flags); struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag); struct cpumask *blk_mq_tags_cpumask(struct blk_mq_tags *tags); --- linux-4.4.0.orig/include/linux/blkdev.h +++ linux-4.4.0/include/linux/blkdev.h @@ -794,7 +794,7 @@ extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, struct scsi_ioctl_command __user *); -extern int blk_queue_enter(struct request_queue *q, gfp_t gfp); +extern int blk_queue_enter(struct request_queue *q, bool nowait); extern void blk_queue_exit(struct request_queue *q); extern void blk_start_queue(struct request_queue *q); extern void blk_start_queue_async(struct request_queue *q); --- linux-4.4.0.orig/include/linux/dqblk_qtree.h +++ linux-4.4.0/include/linux/dqblk_qtree.h @@ -18,8 +18,8 @@ /* Operations */ struct qtree_fmt_operations { - void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory format to disk one */ - void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format to in memory one */ + int (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory format to disk one */ + int (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format to in memory one */ int (*is_id)(void *disk, struct dquot *dquot); /* Is this structure for given id? */ }; --- linux-4.4.0.orig/include/linux/edac.h +++ linux-4.4.0/include/linux/edac.h @@ -237,8 +237,10 @@ #define MEM_FLAG_FB_DDR2 BIT(MEM_FB_DDR2) #define MEM_FLAG_RDDR2 BIT(MEM_RDDR2) #define MEM_FLAG_XDR BIT(MEM_XDR) -#define MEM_FLAG_DDR3 BIT(MEM_DDR3) -#define MEM_FLAG_RDDR3 BIT(MEM_RDDR3) +#define MEM_FLAG_DDR3 BIT(MEM_DDR3) +#define MEM_FLAG_RDDR3 BIT(MEM_RDDR3) +#define MEM_FLAG_DDR4 BIT(MEM_DDR4) +#define MEM_FLAG_RDDR4 BIT(MEM_RDDR4) /** * enum edac-type - Error Detection and Correction capabilities and mode --- linux-4.4.0.orig/include/linux/file.h +++ linux-4.4.0/include/linux/file.h @@ -19,6 +19,7 @@ struct path; extern struct file *alloc_file(struct path *, fmode_t mode, const struct file_operations *fop); +extern struct file *get_empty_filp(void); static inline void fput_light(struct file *file, int fput_needed) { --- linux-4.4.0.orig/include/linux/fs.h +++ linux-4.4.0/include/linux/fs.h @@ -768,31 +768,6 @@ #endif } -/* Helper functions so that in most cases filesystems will - * not need to deal directly with kuid_t and kgid_t and can - * instead deal with the raw numeric values that are stored - * in the filesystem. - */ -static inline uid_t i_uid_read(const struct inode *inode) -{ - return from_kuid(&init_user_ns, inode->i_uid); -} - -static inline gid_t i_gid_read(const struct inode *inode) -{ - return from_kgid(&init_user_ns, inode->i_gid); -} - -static inline void i_uid_write(struct inode *inode, uid_t uid) -{ - inode->i_uid = make_kuid(&init_user_ns, uid); -} - -static inline void i_gid_write(struct inode *inode, gid_t gid) -{ - inode->i_gid = make_kgid(&init_user_ns, gid); -} - static inline unsigned iminor(const struct inode *inode) { return MINOR(inode->i_rdev); @@ -1355,6 +1330,13 @@ struct hlist_head s_pins; /* + * Context in which to interpret filesystem uids, gids, + * quotas, device nodes, extended attributes and security + * labels. + */ + struct user_namespace *s_user_ns; + + /* * Keep the lru lists last in the structure so they always sit on their * own individual cachelines. */ @@ -1375,6 +1357,31 @@ struct list_head s_inodes; /* all inodes */ }; +/* Helper functions so that in most cases filesystems will + * not need to deal directly with kuid_t and kgid_t and can + * instead deal with the raw numeric values that are stored + * in the filesystem. + */ +static inline uid_t i_uid_read(const struct inode *inode) +{ + return from_kuid_munged(inode->i_sb->s_user_ns, inode->i_uid); +} + +static inline gid_t i_gid_read(const struct inode *inode) +{ + return from_kgid_munged(inode->i_sb->s_user_ns, inode->i_gid); +} + +static inline void i_uid_write(struct inode *inode, uid_t uid) +{ + inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid); +} + +static inline void i_gid_write(struct inode *inode, gid_t gid) +{ + inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid); +} + extern struct timespec current_fs_time(struct super_block *sb); /* @@ -1672,6 +1679,12 @@ struct iovec *fast_pointer, struct iovec **ret_pointer); +typedef ssize_t (*vfs_readf_t)(struct file *, char __user *, size_t, loff_t *); +typedef ssize_t (*vfs_writef_t)(struct file *, const char __user *, size_t, + loff_t *); +vfs_readf_t vfs_readf(struct file *file); +vfs_writef_t vfs_writef(struct file *file); + extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *); extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); @@ -1713,6 +1726,10 @@ struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); +#if defined(CONFIG_BLK_DEV_LOOP) || defined(CONFIG_BLK_DEV_LOOP_MODULE) + /* and aufs */ + struct file *(*real_loop)(struct file *); +#endif }; /* @@ -1969,6 +1986,11 @@ int set_anon_super(struct super_block *s, void *data); int get_anon_bdev(dev_t *); void free_anon_bdev(dev_t); +struct super_block *sget_userns(struct file_system_type *type, + int (*test)(struct super_block *,void *), + int (*set)(struct super_block *,void *), + int flags, struct user_namespace *user_ns, + void *data); struct super_block *sget(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), @@ -2360,7 +2382,7 @@ #define BLKDEV_MAJOR_HASH_SIZE 255 extern const char *__bdevname(dev_t, char *buffer); extern const char *bdevname(struct block_device *bdev, char *buffer); -extern struct block_device *lookup_bdev(const char *); +extern struct block_device *lookup_bdev(const char *, int mask); extern void blkdev_show(struct seq_file *,off_t); #else --- linux-4.4.0.orig/include/linux/gfp.h +++ linux-4.4.0/include/linux/gfp.h @@ -322,22 +322,29 @@ * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) * - * ZONES_SHIFT must be <= 2 on 32 bit platforms. + * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms. */ -#if 16 * ZONES_SHIFT > BITS_PER_LONG -#error ZONES_SHIFT too large to create GFP_ZONE_TABLE integer +#if defined(CONFIG_ZONE_DEVICE) && (MAX_NR_ZONES-1) <= 4 +/* ZONE_DEVICE is not a valid GFP zone specifier */ +#define GFP_ZONES_SHIFT 2 +#else +#define GFP_ZONES_SHIFT ZONES_SHIFT +#endif + +#if 16 * GFP_ZONES_SHIFT > BITS_PER_LONG +#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer #endif #define GFP_ZONE_TABLE ( \ - (ZONE_NORMAL << 0 * ZONES_SHIFT) \ - | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \ - | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * ZONES_SHIFT) \ - | (OPT_ZONE_DMA32 << ___GFP_DMA32 * ZONES_SHIFT) \ - | (ZONE_NORMAL << ___GFP_MOVABLE * ZONES_SHIFT) \ - | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * ZONES_SHIFT) \ - | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * ZONES_SHIFT) \ - | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * ZONES_SHIFT) \ + (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \ + | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \ + | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \ + | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \ + | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \ + | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \ + | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT) \ + | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT) \ ) /* @@ -362,8 +369,8 @@ enum zone_type z; int bit = (__force int) (flags & GFP_ZONEMASK); - z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & - ((1 << ZONES_SHIFT) - 1); + z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) & + ((1 << GFP_ZONES_SHIFT) - 1); VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1); return z; } --- linux-4.4.0.orig/include/linux/hyperv.h +++ linux-4.4.0/include/linux/hyperv.h @@ -141,8 +141,6 @@ { u32 read_loc, write_loc, dsize; - smp_read_barrier_depends(); - /* Capture the read/write indices before they changed */ read_loc = rbi->ring_buffer->read_index; write_loc = rbi->ring_buffer->write_index; @@ -630,6 +628,11 @@ struct hv_input_signal_event event; }; +enum hv_signal_policy { + HV_SIGNAL_POLICY_DEFAULT = 0, + HV_SIGNAL_POLICY_EXPLICIT, +}; + struct vmbus_channel { /* Unique channel id */ int id; @@ -757,8 +760,21 @@ * link up channels based on their CPU affinity. */ struct list_head percpu_list; + /* + * Host signaling policy: The default policy will be + * based on the ring buffer state. We will also support + * a policy where the client driver can have explicit + * signaling control. + */ + enum hv_signal_policy signal_policy; }; +static inline void set_channel_signal_state(struct vmbus_channel *c, + enum hv_signal_policy policy) +{ + c->signal_policy = policy; +} + static inline void set_channel_read_state(struct vmbus_channel *c, bool state) { c->batched_reading = state; @@ -983,16 +999,8 @@ resource_size_t size, resource_size_t align, bool fb_overlap_ok); -/** - * VMBUS_DEVICE - macro used to describe a specific hyperv vmbus device - * - * This macro is used to create a struct hv_vmbus_device_id that matches a - * specific device. - */ -#define VMBUS_DEVICE(g0, g1, g2, g3, g4, g5, g6, g7, \ - g8, g9, ga, gb, gc, gd, ge, gf) \ - .guid = { g0, g1, g2, g3, g4, g5, g6, g7, \ - g8, g9, ga, gb, gc, gd, ge, gf }, +int vmbus_cpu_number_to_vp_number(int cpu_number); +u64 hv_do_hypercall(u64 control, void *input, void *output); /* * GUID definitions of various offer types - services offered to the guest. @@ -1003,118 +1011,102 @@ * {f8615163-df3e-46c5-913f-f2d2f965ed0e} */ #define HV_NIC_GUID \ - .guid = { \ - 0x63, 0x51, 0x61, 0xf8, 0x3e, 0xdf, 0xc5, 0x46, \ - 0x91, 0x3f, 0xf2, 0xd2, 0xf9, 0x65, 0xed, 0x0e \ - } + .guid = UUID_LE(0xf8615163, 0xdf3e, 0x46c5, 0x91, 0x3f, \ + 0xf2, 0xd2, 0xf9, 0x65, 0xed, 0x0e) /* * IDE GUID * {32412632-86cb-44a2-9b5c-50d1417354f5} */ #define HV_IDE_GUID \ - .guid = { \ - 0x32, 0x26, 0x41, 0x32, 0xcb, 0x86, 0xa2, 0x44, \ - 0x9b, 0x5c, 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5 \ - } + .guid = UUID_LE(0x32412632, 0x86cb, 0x44a2, 0x9b, 0x5c, \ + 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5) /* * SCSI GUID * {ba6163d9-04a1-4d29-b605-72e2ffb1dc7f} */ #define HV_SCSI_GUID \ - .guid = { \ - 0xd9, 0x63, 0x61, 0xba, 0xa1, 0x04, 0x29, 0x4d, \ - 0xb6, 0x05, 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f \ - } + .guid = UUID_LE(0xba6163d9, 0x04a1, 0x4d29, 0xb6, 0x05, \ + 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f) /* * Shutdown GUID * {0e0b6031-5213-4934-818b-38d90ced39db} */ #define HV_SHUTDOWN_GUID \ - .guid = { \ - 0x31, 0x60, 0x0b, 0x0e, 0x13, 0x52, 0x34, 0x49, \ - 0x81, 0x8b, 0x38, 0xd9, 0x0c, 0xed, 0x39, 0xdb \ - } + .guid = UUID_LE(0x0e0b6031, 0x5213, 0x4934, 0x81, 0x8b, \ + 0x38, 0xd9, 0x0c, 0xed, 0x39, 0xdb) /* * Time Synch GUID * {9527E630-D0AE-497b-ADCE-E80AB0175CAF} */ #define HV_TS_GUID \ - .guid = { \ - 0x30, 0xe6, 0x27, 0x95, 0xae, 0xd0, 0x7b, 0x49, \ - 0xad, 0xce, 0xe8, 0x0a, 0xb0, 0x17, 0x5c, 0xaf \ - } + .guid = UUID_LE(0x9527e630, 0xd0ae, 0x497b, 0xad, 0xce, \ + 0xe8, 0x0a, 0xb0, 0x17, 0x5c, 0xaf) /* * Heartbeat GUID * {57164f39-9115-4e78-ab55-382f3bd5422d} */ #define HV_HEART_BEAT_GUID \ - .guid = { \ - 0x39, 0x4f, 0x16, 0x57, 0x15, 0x91, 0x78, 0x4e, \ - 0xab, 0x55, 0x38, 0x2f, 0x3b, 0xd5, 0x42, 0x2d \ - } + .guid = UUID_LE(0x57164f39, 0x9115, 0x4e78, 0xab, 0x55, \ + 0x38, 0x2f, 0x3b, 0xd5, 0x42, 0x2d) /* * KVP GUID * {a9a0f4e7-5a45-4d96-b827-8a841e8c03e6} */ #define HV_KVP_GUID \ - .guid = { \ - 0xe7, 0xf4, 0xa0, 0xa9, 0x45, 0x5a, 0x96, 0x4d, \ - 0xb8, 0x27, 0x8a, 0x84, 0x1e, 0x8c, 0x3, 0xe6 \ - } + .guid = UUID_LE(0xa9a0f4e7, 0x5a45, 0x4d96, 0xb8, 0x27, \ + 0x8a, 0x84, 0x1e, 0x8c, 0x03, 0xe6) /* * Dynamic memory GUID * {525074dc-8985-46e2-8057-a307dc18a502} */ #define HV_DM_GUID \ - .guid = { \ - 0xdc, 0x74, 0x50, 0X52, 0x85, 0x89, 0xe2, 0x46, \ - 0x80, 0x57, 0xa3, 0x07, 0xdc, 0x18, 0xa5, 0x02 \ - } + .guid = UUID_LE(0x525074dc, 0x8985, 0x46e2, 0x80, 0x57, \ + 0xa3, 0x07, 0xdc, 0x18, 0xa5, 0x02) /* * Mouse GUID * {cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a} */ #define HV_MOUSE_GUID \ - .guid = { \ - 0x9e, 0xb6, 0xa8, 0xcf, 0x4a, 0x5b, 0xc0, 0x4c, \ - 0xb9, 0x8b, 0x8b, 0xa1, 0xa1, 0xf3, 0xf9, 0x5a \ - } + .guid = UUID_LE(0xcfa8b69e, 0x5b4a, 0x4cc0, 0xb9, 0x8b, \ + 0x8b, 0xa1, 0xa1, 0xf3, 0xf9, 0x5a) + +/* + * Keyboard GUID + * {f912ad6d-2b17-48ea-bd65-f927a61c7684} + */ +#define HV_KBD_GUID \ + .guid = UUID_LE(0xf912ad6d, 0x2b17, 0x48ea, 0xbd, 0x65, \ + 0xf9, 0x27, 0xa6, 0x1c, 0x76, 0x84) /* * VSS (Backup/Restore) GUID */ #define HV_VSS_GUID \ - .guid = { \ - 0x29, 0x2e, 0xfa, 0x35, 0x23, 0xea, 0x36, 0x42, \ - 0x96, 0xae, 0x3a, 0x6e, 0xba, 0xcb, 0xa4, 0x40 \ - } + .guid = UUID_LE(0x35fa2e29, 0xea23, 0x4236, 0x96, 0xae, \ + 0x3a, 0x6e, 0xba, 0xcb, 0xa4, 0x40) /* * Synthetic Video GUID * {DA0A7802-E377-4aac-8E77-0558EB1073F8} */ #define HV_SYNTHVID_GUID \ - .guid = { \ - 0x02, 0x78, 0x0a, 0xda, 0x77, 0xe3, 0xac, 0x4a, \ - 0x8e, 0x77, 0x05, 0x58, 0xeb, 0x10, 0x73, 0xf8 \ - } + .guid = UUID_LE(0xda0a7802, 0xe377, 0x4aac, 0x8e, 0x77, \ + 0x05, 0x58, 0xeb, 0x10, 0x73, 0xf8) /* * Synthetic FC GUID * {2f9bcc4a-0069-4af3-b76b-6fd0be528cda} */ #define HV_SYNTHFC_GUID \ - .guid = { \ - 0x4A, 0xCC, 0x9B, 0x2F, 0x69, 0x00, 0xF3, 0x4A, \ - 0xB7, 0x6B, 0x6F, 0xD0, 0xBE, 0x52, 0x8C, 0xDA \ - } + .guid = UUID_LE(0x2f9bcc4a, 0x0069, 0x4af3, 0xb7, 0x6b, \ + 0x6f, 0xd0, 0xbe, 0x52, 0x8c, 0xda) /* * Guest File Copy Service @@ -1122,20 +1114,25 @@ */ #define HV_FCOPY_GUID \ - .guid = { \ - 0xE3, 0x4B, 0xD1, 0x34, 0xE4, 0xDE, 0xC8, 0x41, \ - 0x9A, 0xE7, 0x6B, 0x17, 0x49, 0x77, 0xC1, 0x92 \ - } + .guid = UUID_LE(0x34d14be3, 0xdee4, 0x41c8, 0x9a, 0xe7, \ + 0x6b, 0x17, 0x49, 0x77, 0xc1, 0x92) /* * NetworkDirect. This is the guest RDMA service. * {8c2eaf3d-32a7-4b09-ab99-bd1f1c86b501} */ #define HV_ND_GUID \ - .guid = { \ - 0x3d, 0xaf, 0x2e, 0x8c, 0xa7, 0x32, 0x09, 0x4b, \ - 0xab, 0x99, 0xbd, 0x1f, 0x1c, 0x86, 0xb5, 0x01 \ - } + .guid = UUID_LE(0x8c2eaf3d, 0x32a7, 0x4b09, 0xab, 0x99, \ + 0xbd, 0x1f, 0x1c, 0x86, 0xb5, 0x01) + +/* + * PCI Express Pass Through + * {44C4F61D-4444-4400-9D52-802E27EDE19F} + */ + +#define HV_PCIE_GUID \ + .guid = UUID_LE(0x44c4f61d, 0x4444, 0x4400, 0x9d, 0x52, \ + 0x80, 0x2e, 0x27, 0xed, 0xe1, 0x9f) /* * Common header for Hyper-V ICs --- linux-4.4.0.orig/include/linux/irqchip/arm-gic.h +++ linux-4.4.0/include/linux/irqchip/arm-gic.h @@ -106,7 +106,8 @@ void gic_init(unsigned int nr, int start, void __iomem *dist , void __iomem *cpu); -int gicv2m_of_init(struct device_node *node, struct irq_domain *parent); +int gicv2m_init(struct fwnode_handle *parent_handle, + struct irq_domain *parent); void gic_send_sgi(unsigned int cpu_id, unsigned int irq); int gic_get_cpu_id(unsigned int cpu); --- linux-4.4.0.orig/include/linux/irqdomain.h +++ linux-4.4.0/include/linux/irqdomain.h @@ -211,6 +211,11 @@ return node ? &node->fwnode : NULL; } +static inline bool is_fwnode_irqchip(struct fwnode_handle *fwnode) +{ + return fwnode && fwnode->type == FWNODE_IRQCHIP; +} + static inline struct irq_domain *irq_find_matching_host(struct device_node *node, enum irq_domain_bus_token bus_token) { @@ -410,6 +415,11 @@ static inline void irq_dispose_mapping(unsigned int virq) { } static inline void irq_domain_activate_irq(struct irq_data *data) { } static inline void irq_domain_deactivate_irq(struct irq_data *data) { } +static inline struct irq_domain *irq_find_matching_fwnode( + struct fwnode_handle *fwnode, enum irq_domain_bus_token bus_token) +{ + return NULL; +} #endif /* !CONFIG_IRQ_DOMAIN */ #endif /* _LINUX_IRQDOMAIN_H */ --- linux-4.4.0.orig/include/linux/lightnvm.h +++ linux-4.4.0/include/linux/lightnvm.h @@ -1,6 +1,8 @@ #ifndef NVM_H #define NVM_H +#include + enum { NVM_IO_OK = 0, NVM_IO_REQUEUE = 1, @@ -11,12 +13,74 @@ NVM_IOTYPE_GC = 1, }; +#define NVM_BLK_BITS (16) +#define NVM_PG_BITS (16) +#define NVM_SEC_BITS (8) +#define NVM_PL_BITS (8) +#define NVM_LUN_BITS (8) +#define NVM_CH_BITS (8) + +struct ppa_addr { + /* Generic structure for all addresses */ + union { + struct { + u64 blk : NVM_BLK_BITS; + u64 pg : NVM_PG_BITS; + u64 sec : NVM_SEC_BITS; + u64 pl : NVM_PL_BITS; + u64 lun : NVM_LUN_BITS; + u64 ch : NVM_CH_BITS; + } g; + + u64 ppa; + }; +}; + +struct nvm_rq; +struct nvm_id; +struct nvm_dev; + +typedef int (nvm_l2p_update_fn)(u64, u32, __le64 *, void *); +typedef int (nvm_bb_update_fn)(struct ppa_addr, int, u8 *, void *); +typedef int (nvm_id_fn)(struct nvm_dev *, struct nvm_id *); +typedef int (nvm_get_l2p_tbl_fn)(struct nvm_dev *, u64, u32, + nvm_l2p_update_fn *, void *); +typedef int (nvm_op_bb_tbl_fn)(struct nvm_dev *, struct ppa_addr, int, + nvm_bb_update_fn *, void *); +typedef int (nvm_op_set_bb_fn)(struct nvm_dev *, struct nvm_rq *, int); +typedef int (nvm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *); +typedef int (nvm_erase_blk_fn)(struct nvm_dev *, struct nvm_rq *); +typedef void *(nvm_create_dma_pool_fn)(struct nvm_dev *, char *); +typedef void (nvm_destroy_dma_pool_fn)(void *); +typedef void *(nvm_dev_dma_alloc_fn)(struct nvm_dev *, void *, gfp_t, + dma_addr_t *); +typedef void (nvm_dev_dma_free_fn)(void *, void*, dma_addr_t); + +struct nvm_dev_ops { + nvm_id_fn *identity; + nvm_get_l2p_tbl_fn *get_l2p_tbl; + nvm_op_bb_tbl_fn *get_bb_tbl; + nvm_op_set_bb_fn *set_bb_tbl; + + nvm_submit_io_fn *submit_io; + nvm_erase_blk_fn *erase_block; + + nvm_create_dma_pool_fn *create_dma_pool; + nvm_destroy_dma_pool_fn *destroy_dma_pool; + nvm_dev_dma_alloc_fn *dev_dma_alloc; + nvm_dev_dma_free_fn *dev_dma_free; + + unsigned int max_phys_sect; +}; + + + #ifdef CONFIG_NVM #include -#include #include #include +#include enum { /* HW Responsibilities */ @@ -58,8 +122,29 @@ /* Block Types */ NVM_BLK_T_FREE = 0x0, NVM_BLK_T_BAD = 0x1, - NVM_BLK_T_DEV = 0x2, - NVM_BLK_T_HOST = 0x4, + NVM_BLK_T_GRWN_BAD = 0x2, + NVM_BLK_T_DEV = 0x4, + NVM_BLK_T_HOST = 0x8, + + /* Memory capabilities */ + NVM_ID_CAP_SLC = 0x1, + NVM_ID_CAP_CMD_SUSPEND = 0x2, + NVM_ID_CAP_SCRAMBLE = 0x4, + NVM_ID_CAP_ENCRYPT = 0x8, + + /* Memory types */ + NVM_ID_FMTYPE_SLC = 0, + NVM_ID_FMTYPE_MLC = 1, +}; + +struct nvm_id_lp_mlc { + u16 num_pairs; + u8 pairs[886]; +}; + +struct nvm_id_lp_tbl { + __u8 id[8]; + struct nvm_id_lp_mlc mlc; }; struct nvm_id_group { @@ -82,6 +167,8 @@ u32 mpos; u32 mccap; u16 cpar; + + struct nvm_id_lp_tbl lptbl; }; struct nvm_addr_format { @@ -125,28 +212,8 @@ #define NVM_VERSION_MINOR 0 #define NVM_VERSION_PATCH 0 -#define NVM_BLK_BITS (16) -#define NVM_PG_BITS (16) -#define NVM_SEC_BITS (8) -#define NVM_PL_BITS (8) -#define NVM_LUN_BITS (8) -#define NVM_CH_BITS (8) - -struct ppa_addr { - /* Generic structure for all addresses */ - union { - struct { - u64 blk : NVM_BLK_BITS; - u64 pg : NVM_PG_BITS; - u64 sec : NVM_SEC_BITS; - u64 pl : NVM_PL_BITS; - u64 lun : NVM_LUN_BITS; - u64 ch : NVM_CH_BITS; - } g; - - u64 ppa; - }; -}; +struct nvm_rq; +typedef void (nvm_end_io_fn)(struct nvm_rq *); struct nvm_rq { struct nvm_tgt_instance *ins; @@ -164,9 +231,14 @@ void *metadata; dma_addr_t dma_metadata; + struct completion *wait; + nvm_end_io_fn *end_io; + uint8_t opcode; uint16_t nr_pages; uint16_t flags; + + int error; }; static inline struct nvm_rq *nvm_rq_from_pdu(void *pdu) @@ -181,51 +253,31 @@ struct nvm_block; -typedef int (nvm_l2p_update_fn)(u64, u32, __le64 *, void *); -typedef int (nvm_bb_update_fn)(struct ppa_addr, int, u8 *, void *); -typedef int (nvm_id_fn)(struct nvm_dev *, struct nvm_id *); -typedef int (nvm_get_l2p_tbl_fn)(struct nvm_dev *, u64, u32, - nvm_l2p_update_fn *, void *); -typedef int (nvm_op_bb_tbl_fn)(struct nvm_dev *, struct ppa_addr, int, - nvm_bb_update_fn *, void *); -typedef int (nvm_op_set_bb_fn)(struct nvm_dev *, struct nvm_rq *, int); -typedef int (nvm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *); -typedef int (nvm_erase_blk_fn)(struct nvm_dev *, struct nvm_rq *); -typedef void *(nvm_create_dma_pool_fn)(struct nvm_dev *, char *); -typedef void (nvm_destroy_dma_pool_fn)(void *); -typedef void *(nvm_dev_dma_alloc_fn)(struct nvm_dev *, void *, gfp_t, - dma_addr_t *); -typedef void (nvm_dev_dma_free_fn)(void *, void*, dma_addr_t); - -struct nvm_dev_ops { - nvm_id_fn *identity; - nvm_get_l2p_tbl_fn *get_l2p_tbl; - nvm_op_bb_tbl_fn *get_bb_tbl; - nvm_op_set_bb_fn *set_bb_tbl; - - nvm_submit_io_fn *submit_io; - nvm_erase_blk_fn *erase_block; - - nvm_create_dma_pool_fn *create_dma_pool; - nvm_destroy_dma_pool_fn *destroy_dma_pool; - nvm_dev_dma_alloc_fn *dev_dma_alloc; - nvm_dev_dma_free_fn *dev_dma_free; - - unsigned int max_phys_sect; -}; - struct nvm_lun { int id; int lun_id; int chnl_id; - unsigned int nr_inuse_blocks; /* Number of used blocks */ + /* It is up to the target to mark blocks as closed. If the target does + * not do it, all blocks are marked as open, and nr_open_blocks + * represents the number of blocks in use + */ + unsigned int nr_open_blocks; /* Number of used, writable blocks */ + unsigned int nr_closed_blocks; /* Number of used, read-only blocks */ unsigned int nr_free_blocks; /* Number of unused blocks */ unsigned int nr_bad_blocks; /* Number of bad blocks */ - struct nvm_block *blocks; spinlock_t lock; + + struct nvm_block *blocks; +}; + +enum { + NVM_BLK_ST_FREE = 0x1, /* Free block */ + NVM_BLK_ST_OPEN = 0x2, /* Open block - read-write */ + NVM_BLK_ST_CLOSED = 0x4, /* Closed block - read-only */ + NVM_BLK_ST_BAD = 0x8, /* Bad block */ }; struct nvm_block { @@ -234,7 +286,16 @@ unsigned long id; void *priv; - int type; + int state; +}; + +/* system block cpu representation */ +struct nvm_sb_info { + unsigned long seqnr; + unsigned long erase_cnt; + unsigned int version; + char mmtype[NVM_MMTYPE_LEN]; + struct ppa_addr fs_ppa; }; struct nvm_dev { @@ -247,6 +308,9 @@ struct nvmm_type *mt; void *mp; + /* System blocks */ + struct nvm_sb_info sb; + /* Device information */ int nr_chnls; int nr_planes; @@ -256,6 +320,7 @@ int blks_per_lun; int sec_size; int oob_size; + int mccap; struct nvm_addr_format ppaf; /* Calculated/Cached values. These do not reflect the actual usable @@ -268,6 +333,10 @@ int sec_per_blk; int sec_per_lun; + /* lower page table */ + int lps_per_blk; + int *lptbl; + unsigned long total_pages; unsigned long total_blocks; int nr_luns; @@ -280,6 +349,8 @@ /* Backend device */ struct request_queue *q; char name[DISK_NAME_LEN]; + + struct mutex mlock; }; static inline struct ppa_addr generic_to_dev_addr(struct nvm_dev *dev, @@ -345,9 +416,13 @@ return ppa; } +static inline int ppa_to_slc(struct nvm_dev *dev, int slc_pg) +{ + return dev->lptbl[slc_pg]; +} + typedef blk_qc_t (nvm_tgt_make_rq_fn)(struct request_queue *, struct bio *); typedef sector_t (nvm_tgt_capacity_fn)(void *); -typedef int (nvm_tgt_end_io_fn)(struct nvm_rq *, int); typedef void *(nvm_tgt_init_fn)(struct nvm_dev *, struct gendisk *, int, int); typedef void (nvm_tgt_exit_fn)(void *); @@ -358,7 +433,7 @@ /* target entry points */ nvm_tgt_make_rq_fn *make_rq; nvm_tgt_capacity_fn *capacity; - nvm_tgt_end_io_fn *end_io; + nvm_end_io_fn *end_io; /* module-specific init/teardown */ nvm_tgt_init_fn *init; @@ -383,7 +458,6 @@ typedef int (nvmm_close_blk_fn)(struct nvm_dev *, struct nvm_block *); typedef void (nvmm_flush_blk_fn)(struct nvm_dev *, struct nvm_block *); typedef int (nvmm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *); -typedef int (nvmm_end_io_fn)(struct nvm_rq *, int); typedef int (nvmm_erase_blk_fn)(struct nvm_dev *, struct nvm_block *, unsigned long); typedef struct nvm_lun *(nvmm_get_lun_fn)(struct nvm_dev *, int); @@ -397,6 +471,8 @@ nvmm_unregister_fn *unregister_mgr; /* Block administration callbacks */ + nvmm_get_blk_fn *get_blk_unlocked; + nvmm_put_blk_fn *put_blk_unlocked; nvmm_get_blk_fn *get_blk; nvmm_put_blk_fn *put_blk; nvmm_open_blk_fn *open_blk; @@ -404,7 +480,6 @@ nvmm_flush_blk_fn *flush_blk; nvmm_submit_io_fn *submit_io; - nvmm_end_io_fn *end_io; nvmm_erase_blk_fn *erase_blk; /* Configuration management */ @@ -418,6 +493,10 @@ extern int nvm_register_mgr(struct nvmm_type *); extern void nvm_unregister_mgr(struct nvmm_type *); +extern struct nvm_block *nvm_get_blk_unlocked(struct nvm_dev *, + struct nvm_lun *, unsigned long); +extern void nvm_put_blk_unlocked(struct nvm_dev *, struct nvm_block *); + extern struct nvm_block *nvm_get_blk(struct nvm_dev *, struct nvm_lun *, unsigned long); extern void nvm_put_blk(struct nvm_dev *, struct nvm_block *); @@ -427,7 +506,36 @@ extern void nvm_unregister(char *); extern int nvm_submit_io(struct nvm_dev *, struct nvm_rq *); +extern void nvm_generic_to_addr_mode(struct nvm_dev *, struct nvm_rq *); +extern void nvm_addr_to_generic_mode(struct nvm_dev *, struct nvm_rq *); +extern int nvm_set_rqd_ppalist(struct nvm_dev *, struct nvm_rq *, + struct ppa_addr *, int); +extern void nvm_free_rqd_ppalist(struct nvm_dev *, struct nvm_rq *); +extern int nvm_erase_ppa(struct nvm_dev *, struct ppa_addr *, int); extern int nvm_erase_blk(struct nvm_dev *, struct nvm_block *); +extern void nvm_end_io(struct nvm_rq *, int); +extern int nvm_submit_ppa(struct nvm_dev *, struct ppa_addr *, int, int, int, + void *, int); + +/* sysblk.c */ +#define NVM_SYSBLK_MAGIC 0x4E564D53 /* "NVMS" */ + +/* system block on disk representation */ +struct nvm_system_block { + __be32 magic; /* magic signature */ + __be32 seqnr; /* sequence number */ + __be32 erase_cnt; /* erase count */ + __be16 version; /* version number */ + u8 mmtype[NVM_MMTYPE_LEN]; /* media manager name */ + __be64 fs_ppa; /* PPA for media manager + * superblock */ +}; + +extern int nvm_get_sysblock(struct nvm_dev *, struct nvm_sb_info *); +extern int nvm_update_sysblock(struct nvm_dev *, struct nvm_sb_info *); +extern int nvm_init_sysblock(struct nvm_dev *, struct nvm_sb_info *); + +extern int nvm_dev_factory(struct nvm_dev *, int flags); #else /* CONFIG_NVM */ struct nvm_dev_ops; --- linux-4.4.0.orig/include/linux/mfd/core.h +++ linux-4.4.0/include/linux/mfd/core.h @@ -17,6 +17,7 @@ #include struct irq_domain; +struct property_set; /* Matches ACPI PNP id, either _HID or _CID, or ACPI _ADR */ struct mfd_cell_acpi_match { @@ -44,6 +45,10 @@ /* platform data passed to the sub devices drivers */ void *platform_data; size_t pdata_size; + + /* device properties passed to the sub devices drivers */ + const struct property_set *pset; + /* * Device Tree compatible string * See: Documentation/devicetree/usage-model.txt Chapter 2.2 for details --- linux-4.4.0.orig/include/linux/mlx5/cq.h +++ linux-4.4.0/include/linux/mlx5/cq.h @@ -45,7 +45,7 @@ atomic_t refcount; struct completion free; unsigned vector; - int irqn; + unsigned int irqn; void (*comp) (struct mlx5_core_cq *); void (*event) (struct mlx5_core_cq *, enum mlx5_event); struct mlx5_uar *uar; --- linux-4.4.0.orig/include/linux/mlx5/device.h +++ linux-4.4.0/include/linux/mlx5/device.h @@ -251,6 +251,7 @@ MLX5_EVENT_TYPE_PAGE_REQUEST = 0xb, MLX5_EVENT_TYPE_PAGE_FAULT = 0xc, + MLX5_EVENT_TYPE_NIC_VPORT_CHANGE = 0xd, }; enum { @@ -520,6 +521,12 @@ __be32 flags_qpn; } __packed; +struct mlx5_eqe_vport_change { + u8 rsvd0[2]; + __be16 vport_num; + __be32 rsvd1[6]; +} __packed; + union ev_data { __be32 raw[7]; struct mlx5_eqe_cmd cmd; @@ -532,6 +539,7 @@ struct mlx5_eqe_stall_vl stall_vl; struct mlx5_eqe_page_req req_pages; struct mlx5_eqe_page_fault page_fault; + struct mlx5_eqe_vport_change vport_change; } __packed; struct mlx5_eqe { @@ -1067,6 +1075,12 @@ }; enum { + MLX5_ESW_VPORT_ADMIN_STATE_DOWN = 0x0, + MLX5_ESW_VPORT_ADMIN_STATE_UP = 0x1, + MLX5_ESW_VPORT_ADMIN_STATE_AUTO = 0x2, +}; + +enum { MLX5_L3_PROT_TYPE_IPV4 = 0, MLX5_L3_PROT_TYPE_IPV6 = 1, }; @@ -1102,6 +1116,12 @@ MLX5_FLOW_CONTEXT_DEST_TYPE_TIR = 2, }; +enum mlx5_list_type { + MLX5_NVPRT_LIST_TYPE_UC = 0x0, + MLX5_NVPRT_LIST_TYPE_MC = 0x1, + MLX5_NVPRT_LIST_TYPE_VLAN = 0x2, +}; + enum { MLX5_RQC_RQ_TYPE_MEMORY_RQ_INLINE = 0x0, MLX5_RQC_RQ_TYPE_MEMORY_RQ_RPM = 0x1, @@ -1124,6 +1144,8 @@ MLX5_CAP_IPOIB_OFFLOADS, MLX5_CAP_EOIB_OFFLOADS, MLX5_CAP_FLOW_TABLE, + MLX5_CAP_ESWITCH_FLOW_TABLE, + MLX5_CAP_ESWITCH, /* NUM OF CAP Types */ MLX5_CAP_NUM }; @@ -1161,6 +1183,28 @@ #define MLX5_CAP_FLOWTABLE_MAX(mdev, cap) \ MLX5_GET(flow_table_nic_cap, mdev->hca_caps_max[MLX5_CAP_FLOW_TABLE], cap) +#define MLX5_CAP_ESW_FLOWTABLE(mdev, cap) \ + MLX5_GET(flow_table_eswitch_cap, \ + mdev->hca_caps_cur[MLX5_CAP_ESWITCH_FLOW_TABLE], cap) + +#define MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, cap) \ + MLX5_GET(flow_table_eswitch_cap, \ + mdev->hca_caps_max[MLX5_CAP_ESWITCH_FLOW_TABLE], cap) + +#define MLX5_CAP_ESW_FLOWTABLE_FDB(mdev, cap) \ + MLX5_CAP_ESW_FLOWTABLE(mdev, flow_table_properties_nic_esw_fdb.cap) + +#define MLX5_CAP_ESW_FLOWTABLE_FDB_MAX(mdev, cap) \ + MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, flow_table_properties_nic_esw_fdb.cap) + +#define MLX5_CAP_ESW(mdev, cap) \ + MLX5_GET(e_switch_cap, \ + mdev->hca_caps_cur[MLX5_CAP_ESWITCH], cap) + +#define MLX5_CAP_ESW_MAX(mdev, cap) \ + MLX5_GET(e_switch_cap, \ + mdev->hca_caps_max[MLX5_CAP_ESWITCH], cap) + #define MLX5_CAP_ODP(mdev, cap)\ MLX5_GET(odp_cap, mdev->hca_caps_cur[MLX5_CAP_ODP], cap) --- linux-4.4.0.orig/include/linux/mlx5/driver.h +++ linux-4.4.0/include/linux/mlx5/driver.h @@ -303,7 +303,7 @@ u32 cons_index; struct mlx5_buf buf; int size; - u8 irqn; + unsigned int irqn; u8 eqn; int nent; u64 mask; @@ -426,11 +426,23 @@ struct radix_tree_root tree; }; +struct mlx5_vf_context { + int enabled; +}; + +struct mlx5_core_sriov { + struct mlx5_vf_context *vfs_ctx; + int num_vfs; + int enabled_vfs; +}; + struct mlx5_irq_info { cpumask_var_t mask; char name[MLX5_MAX_IRQ_NAME]; }; +struct mlx5_eswitch; + struct mlx5_priv { char name[MLX5_MAX_NAME_LEN]; struct mlx5_eq_table eq_table; @@ -447,6 +459,7 @@ int fw_pages; atomic_t reg_pages; struct list_head free_list; + int vfs_pages; struct mlx5_core_health health; @@ -485,6 +498,10 @@ struct list_head dev_list; struct list_head ctx_list; spinlock_t ctx_lock; + + struct mlx5_eswitch *eswitch; + struct mlx5_core_sriov sriov; + unsigned long pci_dev_data; }; enum mlx5_device_state { @@ -739,6 +756,8 @@ void mlx5_pagealloc_cleanup(struct mlx5_core_dev *dev); int mlx5_pagealloc_start(struct mlx5_core_dev *dev); void mlx5_pagealloc_stop(struct mlx5_core_dev *dev); +int mlx5_sriov_init(struct mlx5_core_dev *dev); +int mlx5_sriov_cleanup(struct mlx5_core_dev *dev); void mlx5_core_req_pages_handler(struct mlx5_core_dev *dev, u16 func_id, s32 npages); int mlx5_satisfy_startup_pages(struct mlx5_core_dev *dev, int boot); @@ -762,7 +781,8 @@ int mlx5_destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq); int mlx5_start_eqs(struct mlx5_core_dev *dev); int mlx5_stop_eqs(struct mlx5_core_dev *dev); -int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, int *irqn); +int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, + unsigned int *irqn); int mlx5_core_attach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); int mlx5_core_detach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); @@ -884,6 +904,15 @@ } mr_cache[MAX_MR_CACHE_ENTRIES]; }; +enum { + MLX5_PCI_DEV_IS_VF = 1 << 0, +}; + +static inline int mlx5_core_is_pf(struct mlx5_core_dev *dev) +{ + return !(dev->priv.pci_dev_data & MLX5_PCI_DEV_IS_VF); +} + static inline int mlx5_get_gid_table_len(u16 param) { if (param > 4) { --- linux-4.4.0.orig/include/linux/mlx5/flow_table.h +++ linux-4.4.0/include/linux/mlx5/flow_table.h @@ -41,6 +41,15 @@ u32 match_criteria[MLX5_ST_SZ_DW(fte_match_param)]; }; +struct mlx5_flow_destination { + enum mlx5_flow_destination_type type; + union { + u32 tir_num; + void *ft; + u32 vport_num; + }; +}; + void *mlx5_create_flow_table(struct mlx5_core_dev *dev, u8 level, u8 table_type, u16 num_groups, struct mlx5_flow_table_group *group); --- linux-4.4.0.orig/include/linux/mlx5/mlx5_ifc.h +++ linux-4.4.0/include/linux/mlx5/mlx5_ifc.h @@ -447,6 +447,29 @@ u8 reserved_3[0x7200]; }; +struct mlx5_ifc_flow_table_eswitch_cap_bits { + u8 reserved_0[0x200]; + + struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_esw_fdb; + + struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_esw_acl_ingress; + + struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_esw_acl_egress; + + u8 reserved_1[0x7800]; +}; + +struct mlx5_ifc_e_switch_cap_bits { + u8 vport_svlan_strip[0x1]; + u8 vport_cvlan_strip[0x1]; + u8 vport_svlan_insert[0x1]; + u8 vport_cvlan_insert_if_not_exist[0x1]; + u8 vport_cvlan_insert_overwrite[0x1]; + u8 reserved_0[0x1b]; + + u8 reserved_1[0x7e0]; +}; + struct mlx5_ifc_per_protocol_networking_offload_caps_bits { u8 csum_cap[0x1]; u8 vlan_cap[0x1]; @@ -665,7 +688,9 @@ u8 reserved_17[0x1]; u8 ets[0x1]; u8 nic_flow_table[0x1]; - u8 reserved_18[0x4]; + u8 eswitch_flow_table[0x1]; + u8 early_vf_enable; + u8 reserved_18[0x2]; u8 local_ca_ack_delay[0x5]; u8 reserved_19[0x6]; u8 port_type[0x2]; @@ -787,27 +812,36 @@ u8 reserved_60[0x1b]; u8 log_max_wq_sz[0x5]; - u8 reserved_61[0xa0]; - + u8 nic_vport_change_event[0x1]; + u8 reserved_61[0xa]; + u8 log_max_vlan_list[0x5]; u8 reserved_62[0x3]; + u8 log_max_current_mc_list[0x5]; + u8 reserved_63[0x3]; + u8 log_max_current_uc_list[0x5]; + + u8 reserved_64[0x80]; + + u8 reserved_65[0x3]; u8 log_max_l2_table[0x5]; - u8 reserved_63[0x8]; + u8 reserved_66[0x8]; u8 log_uar_page_sz[0x10]; - u8 reserved_64[0x100]; + u8 reserved_67[0xe0]; - u8 reserved_65[0x1f]; + u8 reserved_68[0x1f]; u8 cqe_zip[0x1]; u8 cqe_zip_timeout[0x10]; u8 cqe_zip_max_num[0x10]; - u8 reserved_66[0x220]; + u8 reserved_69[0x220]; }; -enum { - MLX5_DEST_FORMAT_STRUCT_DESTINATION_TYPE_FLOW_TABLE_ = 0x1, - MLX5_DEST_FORMAT_STRUCT_DESTINATION_TYPE_TIR = 0x2, +enum mlx5_flow_destination_type { + MLX5_FLOW_DESTINATION_TYPE_VPORT = 0x0, + MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE = 0x1, + MLX5_FLOW_DESTINATION_TYPE_TIR = 0x2, }; struct mlx5_ifc_dest_format_struct_bits { @@ -900,6 +934,13 @@ u8 mac_addr_31_0[0x20]; }; +struct mlx5_ifc_vlan_layout_bits { + u8 reserved_0[0x14]; + u8 vlan[0x0c]; + + u8 reserved_1[0x20]; +}; + struct mlx5_ifc_cong_control_r_roce_ecn_np_bits { u8 reserved_0[0xa0]; @@ -1829,6 +1870,8 @@ struct mlx5_ifc_roce_cap_bits roce_cap; struct mlx5_ifc_per_protocol_networking_offload_caps_bits per_protocol_networking_offload_caps; struct mlx5_ifc_flow_table_nic_cap_bits flow_table_nic_cap; + struct mlx5_ifc_flow_table_eswitch_cap_bits flow_table_eswitch_cap; + struct mlx5_ifc_e_switch_cap_bits e_switch_cap; u8 reserved_0[0x8000]; }; @@ -2133,24 +2176,35 @@ struct mlx5_ifc_wq_bits wq; }; -enum { - MLX5_NIC_VPORT_CONTEXT_ALLOWED_LIST_TYPE_CURRENT_UC_MAC_ADDRESS = 0x0, -}; - struct mlx5_ifc_nic_vport_context_bits { u8 reserved_0[0x1f]; u8 roce_en[0x1]; - u8 reserved_1[0x760]; - - u8 reserved_2[0x5]; + u8 arm_change_event[0x1]; + u8 reserved_1[0x1a]; + u8 event_on_mtu[0x1]; + u8 event_on_promisc_change[0x1]; + u8 event_on_vlan_change[0x1]; + u8 event_on_mc_address_change[0x1]; + u8 event_on_uc_address_change[0x1]; + + u8 reserved_2[0xf0]; + + u8 mtu[0x10]; + + u8 reserved_3[0x640]; + + u8 promisc_uc[0x1]; + u8 promisc_mc[0x1]; + u8 promisc_all[0x1]; + u8 reserved_4[0x2]; u8 allowed_list_type[0x3]; - u8 reserved_3[0xc]; + u8 reserved_5[0xc]; u8 allowed_list_size[0xc]; struct mlx5_ifc_mac_address_layout_bits permanent_address; - u8 reserved_4[0x20]; + u8 reserved_6[0x20]; u8 current_uc_mac_address[0][0x40]; }; @@ -2263,6 +2317,26 @@ u8 reserved_6[0xca0]; }; +struct mlx5_ifc_esw_vport_context_bits { + u8 reserved_0[0x3]; + u8 vport_svlan_strip[0x1]; + u8 vport_cvlan_strip[0x1]; + u8 vport_svlan_insert[0x1]; + u8 vport_cvlan_insert[0x2]; + u8 reserved_1[0x18]; + + u8 reserved_2[0x20]; + + u8 svlan_cfi[0x1]; + u8 svlan_pcp[0x3]; + u8 svlan_id[0xc]; + u8 cvlan_cfi[0x1]; + u8 cvlan_pcp[0x3]; + u8 cvlan_id[0xc]; + + u8 reserved_3[0x7a0]; +}; + enum { MLX5_EQC_STATUS_OK = 0x0, MLX5_EQC_STATUS_EQ_WRITE_FAILURE = 0xa, @@ -2940,6 +3014,7 @@ enum { MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT = 0x0, + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT = 0x1, }; struct mlx5_ifc_query_vport_state_in_bits { @@ -3700,6 +3775,64 @@ u8 reserved_5[0x120]; }; +struct mlx5_ifc_query_esw_vport_context_out_bits { + u8 status[0x8]; + u8 reserved_0[0x18]; + + u8 syndrome[0x20]; + + u8 reserved_1[0x40]; + + struct mlx5_ifc_esw_vport_context_bits esw_vport_context; +}; + +struct mlx5_ifc_query_esw_vport_context_in_bits { + u8 opcode[0x10]; + u8 reserved_0[0x10]; + + u8 reserved_1[0x10]; + u8 op_mod[0x10]; + + u8 other_vport[0x1]; + u8 reserved_2[0xf]; + u8 vport_number[0x10]; + + u8 reserved_3[0x20]; +}; + +struct mlx5_ifc_modify_esw_vport_context_out_bits { + u8 status[0x8]; + u8 reserved_0[0x18]; + + u8 syndrome[0x20]; + + u8 reserved_1[0x40]; +}; + +struct mlx5_ifc_esw_vport_context_fields_select_bits { + u8 reserved[0x1c]; + u8 vport_cvlan_insert[0x1]; + u8 vport_svlan_insert[0x1]; + u8 vport_cvlan_strip[0x1]; + u8 vport_svlan_strip[0x1]; +}; + +struct mlx5_ifc_modify_esw_vport_context_in_bits { + u8 opcode[0x10]; + u8 reserved_0[0x10]; + + u8 reserved_1[0x10]; + u8 op_mod[0x10]; + + u8 other_vport[0x1]; + u8 reserved_2[0xf]; + u8 vport_number[0x10]; + + struct mlx5_ifc_esw_vport_context_fields_select_bits field_select; + + struct mlx5_ifc_esw_vport_context_bits esw_vport_context; +}; + struct mlx5_ifc_query_eq_out_bits { u8 status[0x8]; u8 reserved_0[0x18]; @@ -4228,7 +4361,10 @@ }; struct mlx5_ifc_modify_nic_vport_field_select_bits { - u8 reserved_0[0x1c]; + u8 reserved_0[0x19]; + u8 mtu[0x1]; + u8 change_event[0x1]; + u8 promisc[0x1]; u8 permanent_address[0x1]; u8 addresses_list[0x1]; u8 roce_en[0x1]; --- linux-4.4.0.orig/include/linux/mlx5/vport.h +++ linux-4.4.0/include/linux/mlx5/vport.h @@ -34,9 +34,17 @@ #define __MLX5_VPORT_H__ #include +#include -u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod); -void mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, u8 *addr); +u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport); +u8 mlx5_query_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, + u16 vport); +int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, + u16 vport, u8 state); +int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, + u16 vport, u8 *addr); +int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev, + u16 vport, u8 *addr); int mlx5_query_hca_vport_gid(struct mlx5_core_dev *dev, u8 other_vport, u8 port_num, u16 vf_num, u16 gid_index, union ib_gid *gid); @@ -51,5 +59,30 @@ u64 *sys_image_guid); int mlx5_query_hca_vport_node_guid(struct mlx5_core_dev *dev, u64 *node_guid); +int mlx5_query_nic_vport_mac_list(struct mlx5_core_dev *dev, + u32 vport, + enum mlx5_list_type list_type, + u8 addr_list[][ETH_ALEN], + int *list_size); +int mlx5_modify_nic_vport_mac_list(struct mlx5_core_dev *dev, + enum mlx5_list_type list_type, + u8 addr_list[][ETH_ALEN], + int list_size); +int mlx5_query_nic_vport_promisc(struct mlx5_core_dev *mdev, + u32 vport, + int *promisc_uc, + int *promisc_mc, + int *promisc_all); +int mlx5_modify_nic_vport_promisc(struct mlx5_core_dev *mdev, + int promisc_uc, + int promisc_mc, + int promisc_all); +int mlx5_query_nic_vport_vlans(struct mlx5_core_dev *dev, + u32 vport, + u16 vlans[], + int *size); +int mlx5_modify_nic_vport_vlans(struct mlx5_core_dev *dev, + u16 vlans[], + int list_size); #endif /* __MLX5_VPORT_H__ */ --- linux-4.4.0.orig/include/linux/mm.h +++ linux-4.4.0/include/linux/mm.h @@ -1183,6 +1183,28 @@ } #endif +extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); +extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], + int); +extern void vma_do_get_file(struct vm_area_struct *, const char[], int); +extern void vma_do_fput(struct vm_area_struct *, const char[], int); + +#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ + __LINE__) +#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ + __LINE__) +#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) +#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) + +#ifndef CONFIG_MMU +extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); +extern void vmr_do_fput(struct vm_region *, const char[], int); + +#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ + __LINE__) +#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) +#endif /* !CONFIG_MMU */ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); --- linux-4.4.0.orig/include/linux/mm_types.h +++ linux-4.4.0/include/linux/mm_types.h @@ -272,6 +272,7 @@ unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ + struct file *vm_prfile; /* the virtual backing file or NULL */ int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for @@ -346,6 +347,7 @@ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units, *not* PAGE_CACHE_SIZE */ struct file * vm_file; /* File we map to (can be NULL). */ + struct file *vm_prfile; /* shadow of vm_file */ void * vm_private_data; /* was vm_pte (shared mem) */ #ifndef CONFIG_MMU --- linux-4.4.0.orig/include/linux/mod_devicetable.h +++ linux-4.4.0/include/linux/mod_devicetable.h @@ -404,7 +404,7 @@ * For Hyper-V devices we use the device guid as the id. */ struct hv_vmbus_device_id { - __u8 guid[16]; + uuid_le guid; kernel_ulong_t driver_data; /* Data private to the driver */ }; --- linux-4.4.0.orig/include/linux/mount.h +++ linux-4.4.0/include/linux/mount.h @@ -81,6 +81,7 @@ extern struct vfsmount *mntget(struct vfsmount *mnt); extern struct vfsmount *mnt_clone_internal(struct path *path); extern int __mnt_is_readonly(struct vfsmount *mnt); +extern bool mnt_may_suid(struct vfsmount *mnt); struct path; extern struct vfsmount *clone_private_mount(struct path *path); --- linux-4.4.0.orig/include/linux/netdevice.h +++ linux-4.4.0/include/linux/netdevice.h @@ -1011,6 +1011,19 @@ * a new port starts listening. The operation is protected by the * vxlan_net->sock_lock. * + * void (*ndo_add_geneve_port)(struct net_device *dev, + * sa_family_t sa_family, __be16 port); + * Called by geneve to notify a driver about the UDP port and socket + * address family that geneve is listnening to. It is called only when + * a new port starts listening. The operation is protected by the + * geneve_net->sock_lock. + * + * void (*ndo_del_geneve_port)(struct net_device *dev, + * sa_family_t sa_family, __be16 port); + * Called by geneve to notify the driver about a UDP port and socket + * address family that geneve is not listening to anymore. The operation + * is protected by the geneve_net->sock_lock. + * * void (*ndo_del_vxlan_port)(struct net_device *dev, * sa_family_t sa_family, __be16 port); * Called by vxlan to notify the driver about a UDP port and socket @@ -1215,7 +1228,12 @@ void (*ndo_del_vxlan_port)(struct net_device *dev, sa_family_t sa_family, __be16 port); - + void (*ndo_add_geneve_port)(struct net_device *dev, + sa_family_t sa_family, + __be16 port); + void (*ndo_del_geneve_port)(struct net_device *dev, + sa_family_t sa_family, + __be16 port); void* (*ndo_dfwd_add_station)(struct net_device *pdev, struct net_device *dev); void (*ndo_dfwd_del_station)(struct net_device *pdev, --- linux-4.4.0.orig/include/linux/nvme.h +++ linux-4.4.0/include/linux/nvme.h @@ -17,20 +17,19 @@ #include -struct nvme_bar { - __u64 cap; /* Controller Capabilities */ - __u32 vs; /* Version */ - __u32 intms; /* Interrupt Mask Set */ - __u32 intmc; /* Interrupt Mask Clear */ - __u32 cc; /* Controller Configuration */ - __u32 rsvd1; /* Reserved */ - __u32 csts; /* Controller Status */ - __u32 nssr; /* Subsystem Reset */ - __u32 aqa; /* Admin Queue Attributes */ - __u64 asq; /* Admin SQ Base Address */ - __u64 acq; /* Admin CQ Base Address */ - __u32 cmbloc; /* Controller Memory Buffer Location */ - __u32 cmbsz; /* Controller Memory Buffer Size */ +enum { + NVME_REG_CAP = 0x0000, /* Controller Capabilities */ + NVME_REG_VS = 0x0008, /* Version */ + NVME_REG_INTMS = 0x000c, /* Interrupt Mask Set */ + NVME_REG_INTMC = 0x0010, /* Interrupt Mask Set */ + NVME_REG_CC = 0x0014, /* Controller Configuration */ + NVME_REG_CSTS = 0x001c, /* Controller Status */ + NVME_REG_NSSR = 0x0020, /* NVM Subsystem Reset */ + NVME_REG_AQA = 0x0024, /* Admin Queue Attributes */ + NVME_REG_ASQ = 0x0028, /* Admin SQ Base Address */ + NVME_REG_ACQ = 0x0030, /* Admin SQ Base Address */ + NVME_REG_CMBLOC = 0x0038, /* Controller Memory Buffer Location */ + NVME_REG_CMBSZ = 0x003c, /* Controller Memory Buffer Size */ }; #define NVME_CAP_MQES(cap) ((cap) & 0xffff) --- linux-4.4.0.orig/include/linux/page-flags-layout.h +++ linux-4.4.0/include/linux/page-flags-layout.h @@ -17,6 +17,8 @@ #define ZONES_SHIFT 1 #elif MAX_NR_ZONES <= 4 #define ZONES_SHIFT 2 +#elif MAX_NR_ZONES <= 8 +#define ZONES_SHIFT 3 #else #error ZONES_SHIFT -- too many zones configured adjust calculation #endif --- linux-4.4.0.orig/include/linux/pci.h +++ linux-4.4.0/include/linux/pci.h @@ -1946,6 +1946,16 @@ pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; } #endif /* CONFIG_OF */ +#ifdef CONFIG_ACPI +struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus); + +void +pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *)); +#else +static inline struct irq_domain * +pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) { return NULL; } +#endif + #ifdef CONFIG_EEH static inline struct eeh_dev *pci_dev_to_eeh_dev(struct pci_dev *pdev) { --- linux-4.4.0.orig/include/linux/platform_device.h +++ linux-4.4.0/include/linux/platform_device.h @@ -18,6 +18,7 @@ #define PLATFORM_DEVID_AUTO (-2) struct mfd_cell; +struct property_set; struct platform_device { const char *name; @@ -70,6 +71,8 @@ const void *data; size_t size_data; u64 dma_mask; + + const struct property_set *pset; }; extern struct platform_device *platform_device_register_full( const struct platform_device_info *pdevinfo); @@ -167,6 +170,8 @@ unsigned int num); extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size); +extern int platform_device_add_properties(struct platform_device *pdev, + const struct property_set *pset); extern int platform_device_add(struct platform_device *pdev); extern void platform_device_del(struct platform_device *pdev); extern void platform_device_put(struct platform_device *pdev); --- linux-4.4.0.orig/include/linux/posix_acl_xattr.h +++ linux-4.4.0/include/linux/posix_acl_xattr.h @@ -53,14 +53,23 @@ } #ifdef CONFIG_FS_POSIX_ACL -void posix_acl_fix_xattr_from_user(void *value, size_t size); -void posix_acl_fix_xattr_to_user(void *value, size_t size); +int posix_acl_fix_xattr_from_user(struct user_namespace *target_ns, + void *value, size_t size); +int posix_acl_fix_xattr_to_user(struct user_namespace *source_ns, void *value, + size_t size); #else -static inline void posix_acl_fix_xattr_from_user(void *value, size_t size) +static inline int +posix_acl_fix_xattr_from_user(struct user_namespace *target_ns, void *value, + size_t size) { + return 0; } -static inline void posix_acl_fix_xattr_to_user(void *value, size_t size) + +static inline int +posix_acl_fix_xattr_to_user(struct user_namespace *source_ns, void *value, + size_t size) { + return 0; } #endif --- linux-4.4.0.orig/include/linux/property.h +++ linux-4.4.0/include/linux/property.h @@ -73,8 +73,8 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, struct fwnode_handle *child); -#define device_for_each_child_node(dev, child) \ - for (child = device_get_next_child_node(dev, NULL); child; \ +#define device_for_each_child_node(dev, child) \ + for (child = device_get_next_child_node(dev, NULL); child; \ child = device_get_next_child_node(dev, child)) void fwnode_handle_put(struct fwnode_handle *fwnode); @@ -144,24 +144,92 @@ /** * struct property_entry - "Built-in" device property representation. * @name: Name of the property. - * @type: Type of the property. - * @nval: Number of items of type @type making up the value. - * @value: Value of the property (an array of @nval items of type @type). + * @length: Length of data making up the value. + * @is_array: True when the property is an array. + * @is_string: True when property is a string. + * @pointer: Pointer to the property (an array of items of the given type). + * @value: Value of the property (when it is a single item of the given type). */ struct property_entry { const char *name; - enum dev_prop_type type; - size_t nval; + size_t length; + bool is_array; + bool is_string; union { - void *raw_data; - u8 *u8_data; - u16 *u16_data; - u32 *u32_data; - u64 *u64_data; - const char **str; - } value; + union { + void *raw_data; + u8 *u8_data; + u16 *u16_data; + u32 *u32_data; + u64 *u64_data; + const char **str; + } pointer; + union { + unsigned long long raw_data; + u8 u8_data; + u16 u16_data; + u32 u32_data; + u64 u64_data; + const char *str; + } value; + }; }; +#define PROPERTY_ENTRY_INTEGER_ARRAY(_name_, _type_, _val_) \ +{ \ + .name = _name_, \ + .length = ARRAY_SIZE(_val_) * sizeof(_type_), \ + .is_array = true, \ + .pointer._type_##_data = _val_, \ +} + +#define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER_ARRAY(_name_, u8, _val_) +#define PROPERTY_ENTRY_U16_ARRAY(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER_ARRAY(_name_, u16, _val_) +#define PROPERTY_ENTRY_U32_ARRAY(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER_ARRAY(_name_, u32, _val_) +#define PROPERTY_ENTRY_U64_ARRAY(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER_ARRAY(_name_, u64, _val_) + +#define PROPERTY_ENTRY_STRING_ARRAY(_name_, _val_) \ +{ \ + .name = _name_, \ + .length = ARRAY_SIZE(_val_) * sizeof(const char *), \ + .is_array = true, \ + .is_string = true, \ + .pointer.str = _val_, \ +} + +#define PROPERTY_ENTRY_INTEGER(_name_, _type_, _val_) \ +{ \ + .name = _name_, \ + .length = sizeof(_type_), \ + .value._type_##_data = _val_, \ +} + +#define PROPERTY_ENTRY_U8(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER(_name_, u8, _val_) +#define PROPERTY_ENTRY_U16(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER(_name_, u16, _val_) +#define PROPERTY_ENTRY_U32(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER(_name_, u32, _val_) +#define PROPERTY_ENTRY_U64(_name_, _val_) \ + PROPERTY_ENTRY_INTEGER(_name_, u64, _val_) + +#define PROPERTY_ENTRY_STRING(_name_, _val_) \ +{ \ + .name = _name_, \ + .length = sizeof(_val_), \ + .is_string = true, \ + .value.str = _val_, \ +} + +#define PROPERTY_ENTRY_BOOL(_name_) \ +{ \ + .name = _name_, \ +} + /** * struct property_set - Collection of "built-in" device properties. * @fwnode: Handle to be pointed to by the fwnode field of struct device. @@ -172,7 +240,8 @@ struct property_entry *properties; }; -void device_add_property_set(struct device *dev, struct property_set *pset); +int device_add_property_set(struct device *dev, const struct property_set *pset); +void device_remove_property_set(struct device *dev); bool device_dma_supported(struct device *dev); --- linux-4.4.0.orig/include/linux/sched.h +++ linux-4.4.0/include/linux/sched.h @@ -830,6 +830,7 @@ unsigned long mq_bytes; /* How many bytes can be allocated to mqueue? */ #endif unsigned long locked_shm; /* How many pages of mlocked shm ? */ + unsigned long unix_inflight; /* How many files in flight in unix sockets */ #ifdef CONFIG_KEYS struct key *uid_keyring; /* UID specific keyring */ --- linux-4.4.0.orig/include/linux/shmem_fs.h +++ linux-4.4.0/include/linux/shmem_fs.h @@ -26,10 +26,13 @@ }; struct shmem_sb_info { + struct mutex idr_lock; + bool idr_nouse; + struct idr idr; /* manages inode-number */ unsigned long max_blocks; /* How many blocks are allowed */ struct percpu_counter used_blocks; /* How many are allocated */ - unsigned long max_inodes; /* How many inodes are allowed */ - unsigned long free_inodes; /* How many are left for allocation */ + int max_inodes; /* How many inodes are allowed */ + int free_inodes; /* How many are left for allocation */ spinlock_t stat_lock; /* Serialize shmem_sb_info changes */ kuid_t uid; /* Mount uid for root directory */ kgid_t gid; /* Mount gid for root directory */ --- linux-4.4.0.orig/include/linux/skbuff.h +++ linux-4.4.0/include/linux/skbuff.h @@ -3446,7 +3446,8 @@ int encap_level; __u16 csum_start; }; -#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)(skb)->cb) +#define SKB_SGO_CB_OFFSET 32 +#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)((skb)->cb + SKB_SGO_CB_OFFSET)) static inline int skb_tnl_header_len(const struct sk_buff *inner_skb) { --- linux-4.4.0.orig/include/linux/splice.h +++ linux-4.4.0/include/linux/splice.h @@ -83,4 +83,10 @@ extern void spd_release_page(struct splice_pipe_desc *, unsigned int); extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +extern long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif --- linux-4.4.0.orig/include/linux/uidgid.h +++ linux-4.4.0/include/linux/uidgid.h @@ -117,6 +117,16 @@ return __kgid_val(gid) != (gid_t) -1; } +static inline bool uid_valid_eq(kuid_t left, kuid_t right) +{ + return uid_eq(left, right) && uid_valid(left); +} + +static inline bool gid_valid_eq(kgid_t left, kgid_t right) +{ + return gid_eq(left, right) && gid_valid(left); +} + #ifdef CONFIG_USER_NS extern kuid_t make_kuid(struct user_namespace *from, uid_t uid); --- linux-4.4.0.orig/include/linux/usb.h +++ linux-4.4.0/include/linux/usb.h @@ -511,6 +511,8 @@ * @usb2_hw_lpm_enabled: USB2 hardware LPM is enabled * @usb2_hw_lpm_allowed: Userspace allows USB 2.0 LPM to be enabled * @usb3_lpm_enabled: USB3 hardware LPM enabled + * @usb3_lpm_u1_enabled: USB3 hardware U1 LPM enabled + * @usb3_lpm_u2_enabled: USB3 hardware U2 LPM enabled * @string_langid: language ID for strings * @product: iProduct string, if present (static) * @manufacturer: iManufacturer string, if present (static) @@ -584,6 +586,8 @@ unsigned usb2_hw_lpm_enabled:1; unsigned usb2_hw_lpm_allowed:1; unsigned usb3_lpm_enabled:1; + unsigned usb3_lpm_u1_enabled:1; + unsigned usb3_lpm_u2_enabled:1; int string_langid; /* static strings from the device */ --- linux-4.4.0.orig/include/linux/user_namespace.h +++ linux-4.4.0/include/linux/user_namespace.h @@ -72,6 +72,7 @@ extern ssize_t proc_setgroups_write(struct file *, const char __user *, size_t, loff_t *); extern int proc_setgroups_show(struct seq_file *m, void *v); extern bool userns_may_setgroups(const struct user_namespace *ns); +extern bool current_in_userns(const struct user_namespace *target_ns); #else static inline struct user_namespace *get_user_ns(struct user_namespace *ns) @@ -100,6 +101,11 @@ { return true; } + +static inline bool current_in_userns(const struct user_namespace *target_ns) +{ + return true; +} #endif #endif /* _LINUX_USER_H */ --- linux-4.4.0.orig/include/linux/vt_kern.h +++ linux-4.4.0/include/linux/vt_kern.h @@ -130,7 +130,8 @@ void vt_event_post(unsigned int event, unsigned int old, unsigned int new); int vt_waitactive(int n); void change_console(struct vc_data *new_vc); -void reset_vc(struct vc_data *vc); +void reset_vc(struct vc_data *vc, int mode); + extern int do_unbind_con_driver(const struct consw *csw, int first, int last, int deflt); int vty_init(const struct file_operations *console_fops); --- linux-4.4.0.orig/include/net/geneve.h +++ linux-4.4.0/include/net/geneve.h @@ -62,6 +62,14 @@ struct geneve_opt options[]; }; +#if IS_ENABLED(CONFIG_GENEVE) +void geneve_get_rx_port(struct net_device *netdev); +#else +static inline void geneve_get_rx_port(struct net_device *netdev) +{ +} +#endif + #ifdef CONFIG_INET struct net_device *geneve_dev_create_fb(struct net *net, const char *name, u8 name_assign_type, u16 dst_port); --- linux-4.4.0.orig/include/net/inet_ecn.h +++ linux-4.4.0/include/net/inet_ecn.h @@ -111,11 +111,24 @@ struct ipv6hdr; -static inline int IP6_ECN_set_ce(struct ipv6hdr *iph) +/* Note: + * IP_ECN_set_ce() has to tweak IPV4 checksum when setting CE, + * meaning both changes have no effect on skb->csum if/when CHECKSUM_COMPLETE + * In IPv6 case, no checksum compensates the change in IPv6 header, + * so we have to update skb->csum. + */ +static inline int IP6_ECN_set_ce(struct sk_buff *skb, struct ipv6hdr *iph) { + __be32 from, to; + if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) return 0; - *(__be32*)iph |= htonl(INET_ECN_CE << 20); + + from = *(__be32 *)iph; + to = from | htonl(INET_ECN_CE << 20); + *(__be32 *)iph = to; + if (skb->ip_summed == CHECKSUM_COMPLETE) + skb->csum = csum_add(csum_sub(skb->csum, from), to); return 1; } @@ -142,7 +155,7 @@ case cpu_to_be16(ETH_P_IPV6): if (skb_network_header(skb) + sizeof(struct ipv6hdr) <= skb_tail_pointer(skb)) - return IP6_ECN_set_ce(ipv6_hdr(skb)); + return IP6_ECN_set_ce(skb, ipv6_hdr(skb)); break; } --- linux-4.4.0.orig/include/net/ip_tunnels.h +++ linux-4.4.0/include/net/ip_tunnels.h @@ -91,6 +91,28 @@ }; struct metadata_dst; +/* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 + * underlay (10.88.0.0/16, for example). Multiple local addresses within + * the /16 may be used, but a particular overlay may not span + * multiple underlay subnets. + * + * We store one underlay, indexed by the overlay's high order octet. + */ +#define FAN_OVERLAY_CNT 256 + +struct ip_fan_map { + __be32 underlay; + __be32 overlay; + u16 underlay_prefix; + u16 overlay_prefix; + u32 overlay_mask; + struct list_head list; + struct rcu_head rcu; +}; + +struct ip_tunnel_fan { + struct list_head fan_maps; +}; struct ip_tunnel { struct ip_tunnel __rcu *next; @@ -123,6 +145,7 @@ #endif struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ unsigned int prl_count; /* # of entries in PRL */ + struct ip_tunnel_fan fan; int ip_tnl_net_id; struct gro_cells gro_cells; bool collect_md; @@ -144,6 +167,11 @@ #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) +static inline int fan_has_map(const struct ip_tunnel_fan *fan) +{ + return !list_empty(&fan->fan_maps); +} + struct tnl_ptk_info { __be16 flags; __be16 proto; --- linux-4.4.0.orig/include/net/vxlan.h +++ linux-4.4.0/include/net/vxlan.h @@ -161,6 +161,8 @@ struct vxlan_rdst default_dst; /* default destination */ u32 flags; /* VXLAN_F_* in vxlan.h */ + struct ip_tunnel_fan fan; + struct timer_list age_timer; spinlock_t hash_lock; unsigned int addrcnt; --- linux-4.4.0.orig/include/scsi/libiscsi.h +++ linux-4.4.0/include/scsi/libiscsi.h @@ -331,19 +331,12 @@ struct iscsi_transport *tt; struct Scsi_Host *host; struct iscsi_conn *leadconn; /* leading connection */ - /* Between the forward and the backward locks exists a strict locking - * hierarchy. The mutual exclusion zone protected by the forward lock - * can enclose the mutual exclusion zone protected by the backward lock - * but not vice versa. - */ - spinlock_t frwd_lock; /* protects session state, * - * cmdsn, queued_cmdsn * + spinlock_t lock; /* protects session state, * + * sequence numbers, * * session resources: * - * - cmdpool kfifo_out , * - * - mgmtpool, */ - spinlock_t back_lock; /* protects cmdsn_exp * - * cmdsn_max, * - * cmdpool kfifo_in */ + * - cmdpool, * + * - mgmtpool, * + * - r2tpool */ int state; /* session state */ int age; /* counts session re-opens */ --- linux-4.4.0.orig/include/scsi/libiscsi_tcp.h +++ linux-4.4.0/include/scsi/libiscsi_tcp.h @@ -83,8 +83,6 @@ struct iscsi_pool r2tpool; struct kfifo r2tqueue; void *dd_data; - spinlock_t pool2queue; - spinlock_t queue2pool; }; enum { --- linux-4.4.0.orig/include/target/target_core_base.h +++ linux-4.4.0/include/target/target_core_base.h @@ -526,6 +526,7 @@ unsigned int t_prot_nents; sense_reason_t pi_err; sector_t bad_sector; + int cpuid; }; struct se_ua { --- linux-4.4.0.orig/include/trace/events/fs.h +++ linux-4.4.0/include/trace/events/fs.h @@ -0,0 +1,53 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fs + +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_FS_H + +#include +#include + +TRACE_EVENT(do_sys_open, + + TP_PROTO(const char *filename, int flags, int mode), + + TP_ARGS(filename, flags, mode), + + TP_STRUCT__entry( + __string( filename, filename ) + __field( int, flags ) + __field( int, mode ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + __entry->flags = flags; + __entry->mode = mode; + ), + + TP_printk("\"%s\" %x %o", + __get_str(filename), __entry->flags, __entry->mode) +); + +TRACE_EVENT(open_exec, + + TP_PROTO(const char *filename), + + TP_ARGS(filename), + + TP_STRUCT__entry( + __string( filename, filename ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + ), + + TP_printk("\"%s\"", + __get_str(filename)) +); + +#endif /* _TRACE_FS_H */ + +/* This part must be outside protection */ +#include --- linux-4.4.0.orig/include/uapi/linux/Kbuild +++ linux-4.4.0/include/uapi/linux/Kbuild @@ -59,6 +59,7 @@ header-y += atm_tcp.h header-y += atm_zatm.h header-y += audit.h +header-y += aufs_type.h header-y += auto_fs4.h header-y += auto_fs.h header-y += auxvec.h --- linux-4.4.0.orig/include/uapi/linux/aufs_type.h +++ linux-4.4.0/include/uapi/linux/aufs_type.h @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __AUFS_TYPE_H__ +#define __AUFS_TYPE_H__ + +#define AUFS_NAME "aufs" + +#ifdef __KERNEL__ +/* + * define it before including all other headers. + * sched.h may use pr_* macros before defining "current", so define the + * no-current version first, and re-define later. + */ +#define pr_fmt(fmt) AUFS_NAME " %s:%d: " fmt, __func__, __LINE__ +#include +#undef pr_fmt +#define pr_fmt(fmt) \ + AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \ + (int)sizeof(current->comm), current->comm, current->pid +#else +#include +#include +#endif /* __KERNEL__ */ + +#include + +#define AUFS_VERSION "4.x-rcN-20160111" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_BRANCH_MAX_127 +typedef int8_t aufs_bindex_t; +#define AUFS_BRANCH_MAX 127 +#else +typedef int16_t aufs_bindex_t; +#ifdef CONFIG_AUFS_BRANCH_MAX_511 +#define AUFS_BRANCH_MAX 511 +#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) +#define AUFS_BRANCH_MAX 1023 +#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) +#define AUFS_BRANCH_MAX 32767 +#endif +#endif + +#ifdef __KERNEL__ +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif +#endif /* __KERNEL__ */ + +/* ---------------------------------------------------------------------- */ + +#define AUFS_FSTYPE AUFS_NAME + +#define AUFS_ROOT_INO 2 +#define AUFS_FIRST_INO 11 + +#define AUFS_WH_PFX ".wh." +#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) +#define AUFS_WH_TMP_LEN 4 +/* a limit for rmdir/rename a dir and copyup */ +#define AUFS_MAX_NAMELEN (NAME_MAX \ + - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ + - 1 /* dot */\ + - AUFS_WH_TMP_LEN) /* hex */ +#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" +#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME +#define AUFS_XINO_DEF_SEC 30 /* seconds */ +#define AUFS_XINO_DEF_TRUNC 45 /* percentage */ +#define AUFS_DIRWH_DEF 3 +#define AUFS_RDCACHE_DEF 10 /* seconds */ +#define AUFS_RDCACHE_MAX 3600 /* seconds */ +#define AUFS_RDBLK_DEF 512 /* bytes */ +#define AUFS_RDHASH_DEF 32 +#define AUFS_WKQ_NAME AUFS_NAME "d" +#define AUFS_MFS_DEF_SEC 30 /* seconds */ +#define AUFS_MFS_MAX_SEC 3600 /* seconds */ +#define AUFS_FHSM_CACHE_DEF_SEC 30 /* seconds */ +#define AUFS_PLINK_WARN 50 /* number of plinks in a single bucket */ + +/* pseudo-link maintenace under /proc */ +#define AUFS_PLINK_MAINT_NAME "plink_maint" +#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME +#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME + +#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ +#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME + +#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME +#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" +#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" + +/* doubly whiteouted */ +#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME +#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME +#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME + +/* branch permissions and attributes */ +#define AUFS_BRPERM_RW "rw" +#define AUFS_BRPERM_RO "ro" +#define AUFS_BRPERM_RR "rr" +#define AUFS_BRATTR_COO_REG "coo_reg" +#define AUFS_BRATTR_COO_ALL "coo_all" +#define AUFS_BRATTR_FHSM "fhsm" +#define AUFS_BRATTR_UNPIN "unpin" +#define AUFS_BRATTR_ICEX "icex" +#define AUFS_BRATTR_ICEX_SEC "icexsec" +#define AUFS_BRATTR_ICEX_SYS "icexsys" +#define AUFS_BRATTR_ICEX_TR "icextr" +#define AUFS_BRATTR_ICEX_USR "icexusr" +#define AUFS_BRATTR_ICEX_OTH "icexoth" +#define AUFS_BRRATTR_WH "wh" +#define AUFS_BRWATTR_NLWH "nolwh" +#define AUFS_BRWATTR_MOO "moo" + +#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ +#define AuBrPerm_RO (1 << 1) /* readonly */ +#define AuBrPerm_RR (1 << 2) /* natively readonly */ +#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) + +#define AuBrAttr_COO_REG (1 << 3) /* copy-up on open */ +#define AuBrAttr_COO_ALL (1 << 4) +#define AuBrAttr_COO_Mask (AuBrAttr_COO_REG | AuBrAttr_COO_ALL) + +#define AuBrAttr_FHSM (1 << 5) /* file-based hsm */ +#define AuBrAttr_UNPIN (1 << 6) /* rename-able top dir of + branch. meaningless since + linux-3.18-rc1 */ + +/* ignore error in copying XATTR */ +#define AuBrAttr_ICEX_SEC (1 << 7) +#define AuBrAttr_ICEX_SYS (1 << 8) +#define AuBrAttr_ICEX_TR (1 << 9) +#define AuBrAttr_ICEX_USR (1 << 10) +#define AuBrAttr_ICEX_OTH (1 << 11) +#define AuBrAttr_ICEX (AuBrAttr_ICEX_SEC \ + | AuBrAttr_ICEX_SYS \ + | AuBrAttr_ICEX_TR \ + | AuBrAttr_ICEX_USR \ + | AuBrAttr_ICEX_OTH) + +#define AuBrRAttr_WH (1 << 12) /* whiteout-able */ +#define AuBrRAttr_Mask AuBrRAttr_WH + +#define AuBrWAttr_NoLinkWH (1 << 13) /* un-hardlinkable whiteouts */ +#define AuBrWAttr_MOO (1 << 14) /* move-up on open */ +#define AuBrWAttr_Mask (AuBrWAttr_NoLinkWH | AuBrWAttr_MOO) + +#define AuBrAttr_CMOO_Mask (AuBrAttr_COO_Mask | AuBrWAttr_MOO) + +/* #warning test userspace */ +#ifdef __KERNEL__ +#ifndef CONFIG_AUFS_FHSM +#undef AuBrAttr_FHSM +#define AuBrAttr_FHSM 0 +#endif +#ifndef CONFIG_AUFS_XATTR +#undef AuBrAttr_ICEX +#define AuBrAttr_ICEX 0 +#undef AuBrAttr_ICEX_SEC +#define AuBrAttr_ICEX_SEC 0 +#undef AuBrAttr_ICEX_SYS +#define AuBrAttr_ICEX_SYS 0 +#undef AuBrAttr_ICEX_TR +#define AuBrAttr_ICEX_TR 0 +#undef AuBrAttr_ICEX_USR +#define AuBrAttr_ICEX_USR 0 +#undef AuBrAttr_ICEX_OTH +#define AuBrAttr_ICEX_OTH 0 +#endif +#endif + +/* the longest combination */ +/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */ +#define AuBrPermStrSz sizeof(AUFS_BRPERM_RW \ + "+" AUFS_BRATTR_COO_REG \ + "+" AUFS_BRATTR_FHSM \ + "+" AUFS_BRATTR_UNPIN \ + "+" AUFS_BRATTR_ICEX_SEC \ + "+" AUFS_BRATTR_ICEX_SYS \ + "+" AUFS_BRATTR_ICEX_USR \ + "+" AUFS_BRATTR_ICEX_OTH \ + "+" AUFS_BRWATTR_NLWH) + +typedef struct { + char a[AuBrPermStrSz]; +} au_br_perm_str_t; + +static inline int au_br_writable(int brperm) +{ + return brperm & AuBrPerm_RW; +} + +static inline int au_br_whable(int brperm) +{ + return brperm & (AuBrPerm_RW | AuBrRAttr_WH); +} + +static inline int au_br_wh_linkable(int brperm) +{ + return !(brperm & AuBrWAttr_NoLinkWH); +} + +static inline int au_br_cmoo(int brperm) +{ + return brperm & AuBrAttr_CMOO_Mask; +} + +static inline int au_br_fhsm(int brperm) +{ + return brperm & AuBrAttr_FHSM; +} + +/* ---------------------------------------------------------------------- */ + +/* ioctl */ +enum { + /* readdir in userspace */ + AuCtl_RDU, + AuCtl_RDU_INO, + + AuCtl_WBR_FD, /* pathconf wrapper */ + AuCtl_IBUSY, /* busy inode */ + AuCtl_MVDOWN, /* move-down */ + AuCtl_BR, /* info about branches */ + AuCtl_FHSM_FD /* connection for fhsm */ +}; + +/* borrowed from linux/include/linux/kernel.h */ +#ifndef ALIGN +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#endif + +/* borrowed from linux/include/linux/compiler-gcc3.h */ +#ifndef __aligned +#define __aligned(x) __attribute__((aligned(x))) +#endif + +#ifdef __KERNEL__ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif +#endif + +struct au_rdu_cookie { + uint64_t h_pos; + int16_t bindex; + uint8_t flags; + uint8_t pad; + uint32_t generation; +} __aligned(8); + +struct au_rdu_ent { + uint64_t ino; + int16_t bindex; + uint8_t type; + uint8_t nlen; + uint8_t wh; + char name[0]; +} __aligned(8); + +static inline int au_rdu_len(int nlen) +{ + /* include the terminating NULL */ + return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, + sizeof(uint64_t)); +} + +union au_rdu_ent_ul { + struct au_rdu_ent __user *e; + uint64_t ul; +}; + +enum { + AufsCtlRduV_SZ, + AufsCtlRduV_End +}; + +struct aufs_rdu { + /* input */ + union { + uint64_t sz; /* AuCtl_RDU */ + uint64_t nent; /* AuCtl_RDU_INO */ + }; + union au_rdu_ent_ul ent; + uint16_t verify[AufsCtlRduV_End]; + + /* input/output */ + uint32_t blk; + + /* output */ + union au_rdu_ent_ul tail; + /* number of entries which were added in a single call */ + uint64_t rent; + uint8_t full; + uint8_t shwh; + + struct au_rdu_cookie cookie; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_wbr_fd { + uint32_t oflags; + int16_t brid; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_ibusy { + uint64_t ino, h_ino; + int16_t bindex; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +/* error code for move-down */ +/* the actual message strings are implemented in aufs-util.git */ +enum { + EAU_MVDOWN_OPAQUE = 1, + EAU_MVDOWN_WHITEOUT, + EAU_MVDOWN_UPPER, + EAU_MVDOWN_BOTTOM, + EAU_MVDOWN_NOUPPER, + EAU_MVDOWN_NOLOWERBR, + EAU_Last +}; + +/* flags for move-down */ +#define AUFS_MVDOWN_DMSG 1 +#define AUFS_MVDOWN_OWLOWER (1 << 1) /* overwrite lower */ +#define AUFS_MVDOWN_KUPPER (1 << 2) /* keep upper */ +#define AUFS_MVDOWN_ROLOWER (1 << 3) /* do even if lower is RO */ +#define AUFS_MVDOWN_ROLOWER_R (1 << 4) /* did on lower RO */ +#define AUFS_MVDOWN_ROUPPER (1 << 5) /* do even if upper is RO */ +#define AUFS_MVDOWN_ROUPPER_R (1 << 6) /* did on upper RO */ +#define AUFS_MVDOWN_BRID_UPPER (1 << 7) /* upper brid */ +#define AUFS_MVDOWN_BRID_LOWER (1 << 8) /* lower brid */ +#define AUFS_MVDOWN_FHSM_LOWER (1 << 9) /* find fhsm attr for lower */ +#define AUFS_MVDOWN_STFS (1 << 10) /* req. stfs */ +#define AUFS_MVDOWN_STFS_FAILED (1 << 11) /* output: stfs is unusable */ +#define AUFS_MVDOWN_BOTTOM (1 << 12) /* output: no more lowers */ + +/* index for move-down */ +enum { + AUFS_MVDOWN_UPPER, + AUFS_MVDOWN_LOWER, + AUFS_MVDOWN_NARRAY +}; + +/* + * additional info of move-down + * number of free blocks and inodes. + * subset of struct kstatfs, but smaller and always 64bit. + */ +struct aufs_stfs { + uint64_t f_blocks; + uint64_t f_bavail; + uint64_t f_files; + uint64_t f_ffree; +}; + +struct aufs_stbr { + int16_t brid; /* optional input */ + int16_t bindex; /* output */ + struct aufs_stfs stfs; /* output when AUFS_MVDOWN_STFS set */ +} __aligned(8); + +struct aufs_mvdown { + uint32_t flags; /* input/output */ + struct aufs_stbr stbr[AUFS_MVDOWN_NARRAY]; /* input/output */ + int8_t au_errno; /* output */ +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +union aufs_brinfo { + /* PATH_MAX may differ between kernel-space and user-space */ + char _spacer[4096]; + struct { + int16_t id; + int perm; + char path[0]; + }; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +#define AuCtlType 'A' +#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) +#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) +#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ + struct aufs_wbr_fd) +#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) +#define AUFS_CTL_MVDOWN _IOWR(AuCtlType, AuCtl_MVDOWN, \ + struct aufs_mvdown) +#define AUFS_CTL_BRINFO _IOW(AuCtlType, AuCtl_BR, union aufs_brinfo) +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ --- linux-4.4.0.orig/include/uapi/linux/hash_info.h +++ linux-4.4.0/include/uapi/linux/hash_info.h @@ -31,6 +31,7 @@ HASH_ALGO_TGR_128, HASH_ALGO_TGR_160, HASH_ALGO_TGR_192, + HASH_ALGO_SM3_256, HASH_ALGO__LAST }; --- linux-4.4.0.orig/include/uapi/linux/hyperv.h +++ linux-4.4.0/include/uapi/linux/hyperv.h @@ -313,6 +313,7 @@ #define HV_INVALIDARG 0x80070057 #define HV_GUID_NOTFOUND 0x80041002 #define HV_ERROR_ALREADY_EXISTS 0x80070050 +#define HV_ERROR_DISK_FULL 0x80070070 #define ADDR_FAMILY_NONE 0x00 #define ADDR_FAMILY_IPV4 0x01 --- linux-4.4.0.orig/include/uapi/linux/if_link.h +++ linux-4.4.0/include/uapi/linux/if_link.h @@ -443,6 +443,7 @@ IFLA_VXLAN_GBP, IFLA_VXLAN_REMCSUM_NOPARTIAL, IFLA_VXLAN_COLLECT_METADATA, + IFLA_VXLAN_FAN_MAP = 33, __IFLA_VXLAN_MAX }; #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) @@ -462,6 +463,9 @@ IFLA_GENEVE_PORT, /* destination port */ IFLA_GENEVE_COLLECT_METADATA, IFLA_GENEVE_REMOTE6, + IFLA_GENEVE_UDP_CSUM, + IFLA_GENEVE_UDP_ZERO_CSUM6_TX, + IFLA_GENEVE_UDP_ZERO_CSUM6_RX, __IFLA_GENEVE_MAX }; #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1) --- linux-4.4.0.orig/include/uapi/linux/if_tunnel.h +++ linux-4.4.0/include/uapi/linux/if_tunnel.h @@ -57,6 +57,10 @@ IFLA_IPTUN_ENCAP_FLAGS, IFLA_IPTUN_ENCAP_SPORT, IFLA_IPTUN_ENCAP_DPORT, + + __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ + IFLA_IPTUN_FAN_MAP = 33, + __IFLA_IPTUN_MAX, }; #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) @@ -132,4 +136,20 @@ }; #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) + +enum { + IFLA_FAN_UNSPEC, + IFLA_FAN_MAPPING, + __IFLA_FAN_MAX, +}; + +#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) + +struct ifla_fan_map { + __be32 underlay; + __be32 overlay; + __u16 underlay_prefix; + __u16 overlay_prefix; +}; + #endif /* _UAPI_IF_TUNNEL_H_ */ --- linux-4.4.0.orig/include/uapi/linux/kd.h +++ linux-4.4.0/include/uapi/linux/kd.h @@ -45,6 +45,8 @@ #define KD_GRAPHICS 0x01 #define KD_TEXT0 0x02 /* obsolete */ #define KD_TEXT1 0x03 /* obsolete */ +#define KD_TRANSPARENT 0x04 + #define KDGETMODE 0x4B3B /* get current mode */ #define KDMAPDISP 0x4B3C /* map display into address space */ --- linux-4.4.0.orig/include/uapi/linux/lightnvm.h +++ linux-4.4.0/include/uapi/linux/lightnvm.h @@ -33,6 +33,7 @@ #define NVM_TTYPE_NAME_MAX 48 #define NVM_TTYPE_MAX 63 +#define NVM_MMTYPE_LEN 8 #define NVM_CTRL_FILE "/dev/lightnvm/control" @@ -100,6 +101,26 @@ __u32 flags; }; +struct nvm_ioctl_dev_init { + char dev[DISK_NAME_LEN]; /* open-channel SSD device */ + char mmtype[NVM_MMTYPE_LEN]; /* register to media manager */ + + __u32 flags; +}; + +enum { + NVM_FACTORY_ERASE_ONLY_USER = 1 << 0, /* erase only blocks used as + * host blks or grown blks */ + NVM_FACTORY_RESET_HOST_BLKS = 1 << 1, /* remove host blk marks */ + NVM_FACTORY_RESET_GRWN_BBLKS = 1 << 2, /* remove grown blk marks */ + NVM_FACTORY_NR_BITS = 1 << 3, /* stops here */ +}; + +struct nvm_ioctl_dev_factory { + char dev[DISK_NAME_LEN]; + + __u32 flags; +}; /* The ioctl type, 'L', 0x20 - 0x2F documented in ioctl-number.txt */ enum { @@ -110,6 +131,12 @@ /* device level cmds */ NVM_DEV_CREATE_CMD, NVM_DEV_REMOVE_CMD, + + /* Init a device to support LightNVM media managers */ + NVM_DEV_INIT_CMD, + + /* Factory reset device */ + NVM_DEV_FACTORY_CMD, }; #define NVM_IOCTL 'L' /* 0x4c */ @@ -122,6 +149,10 @@ struct nvm_ioctl_create) #define NVM_DEV_REMOVE _IOW(NVM_IOCTL, NVM_DEV_REMOVE_CMD, \ struct nvm_ioctl_remove) +#define NVM_DEV_INIT _IOW(NVM_IOCTL, NVM_DEV_INIT_CMD, \ + struct nvm_ioctl_dev_init) +#define NVM_DEV_FACTORY _IOW(NVM_IOCTL, NVM_DEV_FACTORY_CMD, \ + struct nvm_ioctl_dev_factory) #define NVM_VERSION_MAJOR 1 #define NVM_VERSION_MINOR 0 --- linux-4.4.0.orig/include/uapi/scsi/cxlflash_ioctl.h +++ linux-4.4.0/include/uapi/scsi/cxlflash_ioctl.h @@ -31,6 +31,16 @@ }; /* + * Return flag definitions available to all ioctls + * + * Similar to the input flags, these are grown from the bottom-up with the + * intention that ioctl-specific return flag definitions would grow from the + * top-down, allowing the two sets to co-exist. While not required/enforced + * at this time, this provides future flexibility. + */ +#define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL + +/* * Notes: * ----- * The 'context_id' field of all ioctl structures contains the context --- linux-4.4.0.orig/init/Kconfig +++ linux-4.4.0/init/Kconfig @@ -208,6 +208,15 @@ but you may wish to use a different default here to make a minimal system more usable with less configuration. +config VERSION_SIGNATURE + string "Arbitrary version signature" + help + This string will be created in a file, /proc/version_signature. It + is useful in determining arbitrary data about your kernel. For instance, + if you have several kernels of the same version, but need to keep track + of a revision of the same kernel, but not affect it's ability to load + compatible modules, this is the easiest way to do that. + config SWAP bool "Support for paging of anonymous memory (swap)" depends on MMU && BLOCK --- linux-4.4.0.orig/init/noinitramfs.c +++ linux-4.4.0/init/noinitramfs.c @@ -22,6 +22,8 @@ #include #include +LIST_HEAD(populate_rootfs_domain); + /* * Create a simple rootfs that is similar to the default initramfs */ --- linux-4.4.0.orig/init/version.c +++ linux-4.4.0/init/version.c @@ -45,7 +45,11 @@ /* FIXED STRINGS! Don't touch! */ const char linux_banner[] = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" - LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION +#ifdef CONFIG_VERSION_SIGNATURE + " (" CONFIG_VERSION_SIGNATURE ")" +#endif + "\n"; const char linux_proc_banner[] = "%s version %s" --- linux-4.4.0.orig/ipc/sem.c +++ linux-4.4.0/ipc/sem.c @@ -1984,6 +1984,14 @@ error = get_queue_result(&queue); /* + * wake_up_sem_queue_do operates on queue without locking, so we + * need a barrier here to order our read of queue.status and the + * subsequent reuse of queue (queue is on the stack so will be + * most likely reused in the next function call). + */ + smp_mb(); + + /* * Array removed? If yes, leave without sem_unlock(). */ if (IS_ERR(sma)) { --- linux-4.4.0.orig/kernel/bpf/verifier.c +++ linux-4.4.0/kernel/bpf/verifier.c @@ -1121,6 +1121,16 @@ return -EINVAL; } + if ((opcode == BPF_LSH || opcode == BPF_RSH || + opcode == BPF_ARSH) && BPF_SRC(insn->code) == BPF_K) { + int size = BPF_CLASS(insn->code) == BPF_ALU64 ? 64 : 32; + + if (insn->imm < 0 || insn->imm >= size) { + verbose("invalid shift %d\n", insn->imm); + return -EINVAL; + } + } + /* pattern match 'bpf_add Rx, imm' instruction */ if (opcode == BPF_ADD && BPF_CLASS(insn->code) == BPF_ALU64 && regs[insn->dst_reg].type == FRAME_PTR && --- linux-4.4.0.orig/kernel/capability.c +++ linux-4.4.0/kernel/capability.c @@ -437,13 +437,18 @@ * * Return true if the current task has the given capability targeted at * its own user namespace and that the given inode's uid and gid are - * mapped into the current user namespace. + * mapped into the current user namespace, or if the current task has + * the capability towards the user namespace of the inode's superblock. */ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap) { - struct user_namespace *ns = current_user_ns(); + struct user_namespace *ns; - return ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid) && - kgid_has_mapping(ns, inode->i_gid); + ns = current_user_ns(); + if (ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid) && + kgid_has_mapping(ns, inode->i_gid)) + return true; + + return ns_capable(inode->i_sb->s_user_ns, cap); } EXPORT_SYMBOL(capable_wrt_inode_uidgid); --- linux-4.4.0.orig/kernel/cred.c +++ linux-4.4.0/kernel/cred.c @@ -689,6 +689,8 @@ */ int set_create_files_as(struct cred *new, struct inode *inode) { + if (!uid_valid(inode->i_uid) || !gid_valid(inode->i_gid)) + return -EINVAL; new->fsuid = inode->i_uid; new->fsgid = inode->i_gid; return security_kernel_create_files_as(new, inode); --- linux-4.4.0.orig/kernel/fork.c +++ linux-4.4.0/kernel/fork.c @@ -87,6 +87,11 @@ #define CREATE_TRACE_POINTS #include +#ifdef CONFIG_USER_NS +extern int unprivileged_userns_clone; +#else +#define unprivileged_userns_clone 0 +#endif /* * Minimum number of threads to boot the kernel @@ -465,7 +470,7 @@ struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; - get_file(file); + vma_get_file(tmp); if (tmp->vm_flags & VM_DENYWRITE) atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); @@ -1258,6 +1263,10 @@ if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) return ERR_PTR(-EINVAL); + if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) + if (!capable(CAP_SYS_ADMIN)) + return ERR_PTR(-EPERM); + /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. @@ -1984,6 +1993,12 @@ if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; + if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) { + err = -EPERM; + if (!capable(CAP_SYS_ADMIN)) + goto bad_unshare_out; + } + err = check_unshare_flags(unshare_flags); if (err) goto bad_unshare_out; --- linux-4.4.0.orig/kernel/irq/Kconfig +++ linux-4.4.0/kernel/irq/Kconfig @@ -91,6 +91,10 @@ config IRQ_FORCED_THREADING bool +config IRQ_FORCED_THREADING_DEFAULT + bool "Use IRQ threading by default" + depends on IRQ_FORCED_THREADING + config SPARSE_IRQ bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ ---help--- --- linux-4.4.0.orig/kernel/irq/chip.c +++ linux-4.4.0/kernel/irq/chip.c @@ -950,6 +950,7 @@ data = data->parent_data; data->chip->irq_ack(data); } +EXPORT_SYMBOL_GPL(irq_chip_ack_parent); /** * irq_chip_mask_parent - Mask the parent interrupt --- linux-4.4.0.orig/kernel/irq/irqdomain.c +++ linux-4.4.0/kernel/irq/irqdomain.c @@ -60,6 +60,7 @@ fwid->fwnode.type = FWNODE_IRQCHIP; return &fwid->fwnode; } +EXPORT_SYMBOL_GPL(irq_domain_alloc_fwnode); /** * irq_domain_free_fwnode - Free a non-OF-backed fwnode_handle @@ -70,13 +71,14 @@ { struct irqchip_fwid *fwid; - if (WARN_ON(fwnode->type != FWNODE_IRQCHIP)) + if (WARN_ON(!is_fwnode_irqchip(fwnode))) return; fwid = container_of(fwnode, struct irqchip_fwid, fwnode); kfree(fwid->name); kfree(fwid); } +EXPORT_SYMBOL_GPL(irq_domain_free_fwnode); /** * __irq_domain_add() - Allocate a new irq_domain data structure @@ -1013,6 +1015,7 @@ return NULL; } +EXPORT_SYMBOL_GPL(irq_domain_get_irq_data); /** * irq_domain_set_hwirq_and_chip - Set hwirq and irqchip of @virq at @domain @@ -1343,6 +1346,7 @@ return (irq_data && irq_data->domain == domain) ? irq_data : NULL; } +EXPORT_SYMBOL_GPL(irq_domain_get_irq_data); /** * irq_domain_set_info - Set the complete data for a @virq in @domain --- linux-4.4.0.orig/kernel/irq/manage.c +++ linux-4.4.0/kernel/irq/manage.c @@ -22,14 +22,20 @@ #include "internals.h" #ifdef CONFIG_IRQ_FORCED_THREADING -__read_mostly bool force_irqthreads; +__read_mostly bool force_irqthreads = IS_ENABLED(CONFIG_IRQ_FORCED_THREADING_DEFAULT); static int __init setup_forced_irqthreads(char *arg) { force_irqthreads = true; return 0; } +static int __init setup_no_irqthreads(char *arg) +{ + force_irqthreads = false; + return 0; +} early_param("threadirqs", setup_forced_irqthreads); +early_param("nothreadirqs", setup_no_irqthreads); #endif static void __synchronize_hardirq(struct irq_desc *desc) --- linux-4.4.0.orig/kernel/kthread.c +++ linux-4.4.0/kernel/kthread.c @@ -295,6 +295,17 @@ * new kernel thread. */ if (unlikely(wait_for_completion_killable(&done))) { + int i = 0; + + /* + * I got SIGKILL, but wait for 10 more seconds for completion + * unless chosen by the OOM killer. This delay is there as a + * workaround for boot failure caused by SIGKILL upon device + * driver initialization timeout. + */ + while (i++ < 10 && !test_tsk_thread_flag(current, TIF_MEMDIE)) + if (wait_for_completion_timeout(&done, HZ)) + goto ready; /* * If I was SIGKILLed before kthreadd (or new kernel thread) * calls complete(), leave the cleanup of this structure to @@ -308,6 +319,7 @@ */ wait_for_completion(&done); } +ready: task = create->result; if (!IS_ERR(task)) { static const struct sched_param param = { .sched_priority = 0 }; --- linux-4.4.0.orig/kernel/ptrace.c +++ linux-4.4.0/kernel/ptrace.c @@ -207,12 +207,32 @@ return ret; } -static int ptrace_has_cap(struct user_namespace *ns, unsigned int mode) +static bool ptrace_has_cap(const struct cred *tcred, unsigned int mode) { + struct user_namespace *tns = tcred->user_ns; + struct user_namespace *curns = current_cred()->user_ns; + + /* When a root-owned process enters a user namespace created by a + * malicious user, the user shouldn't be able to execute code under + * uid 0 by attaching to the root-owned process via ptrace. + * Therefore, similar to the capable_wrt_inode_uidgid() check, + * verify that all the uids and gids of the target process are + * mapped into the current namespace. + * No fsuid/fsgid check because __ptrace_may_access doesn't do it + * either. + */ + if (!kuid_has_mapping(curns, tcred->euid) || + !kuid_has_mapping(curns, tcred->suid) || + !kuid_has_mapping(curns, tcred->uid) || + !kgid_has_mapping(curns, tcred->egid) || + !kgid_has_mapping(curns, tcred->sgid) || + !kgid_has_mapping(curns, tcred->gid)) + return false; + if (mode & PTRACE_MODE_NOAUDIT) - return has_ns_capability_noaudit(current, ns, CAP_SYS_PTRACE); + return has_ns_capability_noaudit(current, tns, CAP_SYS_PTRACE); else - return has_ns_capability(current, ns, CAP_SYS_PTRACE); + return has_ns_capability(current, tns, CAP_SYS_PTRACE); } /* Returns 0 on success, -errno on denial. */ @@ -241,7 +261,7 @@ gid_eq(cred->gid, tcred->sgid) && gid_eq(cred->gid, tcred->gid)) goto ok; - if (ptrace_has_cap(tcred->user_ns, mode)) + if (ptrace_has_cap(tcred, mode)) goto ok; rcu_read_unlock(); return -EPERM; @@ -252,7 +272,7 @@ dumpable = get_dumpable(task->mm); rcu_read_lock(); if (dumpable != SUID_DUMP_USER && - !ptrace_has_cap(__task_cred(task)->user_ns, mode)) { + !ptrace_has_cap(__task_cred(task), mode)) { rcu_read_unlock(); return -EPERM; } --- linux-4.4.0.orig/kernel/sys.c +++ linux-4.4.0/kernel/sys.c @@ -1099,6 +1099,21 @@ DECLARE_RWSEM(uts_sem); #ifdef COMPAT_UTS_MACHINE +static char compat_uts_machine[__OLD_UTS_LEN+1] = COMPAT_UTS_MACHINE; + +static int __init parse_compat_uts_machine(char *arg) +{ + strncpy(compat_uts_machine, arg, __OLD_UTS_LEN); + compat_uts_machine[__OLD_UTS_LEN] = 0; + return 0; +} +early_param("compat_uts_machine", parse_compat_uts_machine); + +#undef COMPAT_UTS_MACHINE +#define COMPAT_UTS_MACHINE compat_uts_machine +#endif + +#ifdef COMPAT_UTS_MACHINE #define override_architecture(name) \ (personality(current->personality) == PER_LINUX32 && \ copy_to_user(name->machine, COMPAT_UTS_MACHINE, \ --- linux-4.4.0.orig/kernel/sysctl.c +++ linux-4.4.0/kernel/sysctl.c @@ -103,6 +103,9 @@ extern char core_pattern[]; extern unsigned int core_pipe_limit; #endif +#ifdef CONFIG_USER_NS +extern int unprivileged_userns_clone; +#endif extern int pid_max; extern int pid_max_min, pid_max_max; extern int percpu_pagelist_fraction; @@ -481,6 +484,15 @@ .mode = 0644, .proc_handler = proc_dointvec, }, +#endif +#ifdef CONFIG_USER_NS + { + .procname = "unprivileged_userns_clone", + .data = &unprivileged_userns_clone, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, #endif #ifdef CONFIG_PROC_SYSCTL { --- linux-4.4.0.orig/kernel/user_namespace.c +++ linux-4.4.0/kernel/user_namespace.c @@ -23,6 +23,12 @@ #include #include +/* + * sysctl determining whether unprivileged users may unshare a new + * userns. Allowed by default + */ +int unprivileged_userns_clone = 1; + static struct kmem_cache *user_ns_cachep __read_mostly; static DEFINE_MUTEX(userns_state_mutex); @@ -945,6 +951,20 @@ return allowed; } +/* + * Returns true if @ns is the same namespace as or a descendant of + * @target_ns. + */ +bool current_in_userns(const struct user_namespace *target_ns) +{ + struct user_namespace *ns; + for (ns = current_user_ns(); ns; ns = ns->parent) { + if (ns == target_ns) + return true; + } + return false; +} + static inline struct user_namespace *to_user_ns(struct ns_common *ns) { return container_of(ns, struct user_namespace, ns); --- linux-4.4.0.orig/lib/842/842.h +++ linux-4.4.0/lib/842/842.h @@ -76,7 +76,6 @@ #include #include #include -#include #include #include @@ -99,7 +98,6 @@ #define I2_BITS (8) #define I4_BITS (9) #define I8_BITS (8) -#define CRC_BITS (32) #define REPEAT_BITS_MAX (0x3f) #define SHORT_DATA_BITS_MAX (0x7) --- linux-4.4.0.orig/lib/842/842_compress.c +++ linux-4.4.0/lib/842/842_compress.c @@ -490,7 +490,6 @@ int ret; u64 last, next, pad, total; u8 repeat_count = 0; - u32 crc; BUILD_BUG_ON(sizeof(*p) > SW842_MEM_COMPRESS); @@ -581,18 +580,6 @@ if (ret) return ret; - /* - * crc(0:31) is appended to target data starting with the next - * bit after End of stream template. - * nx842 calculates CRC for data in big-endian format. So doing - * same here so that sw842 decompression can be used for both - * compressed data. - */ - crc = crc32_be(0, in, ilen); - ret = add_bits(p, crc, CRC_BITS); - if (ret) - return ret; - if (p->bit) { p->out++; p->olen--; --- linux-4.4.0.orig/lib/842/842_decompress.c +++ linux-4.4.0/lib/842/842_decompress.c @@ -285,7 +285,6 @@ struct sw842_param p; int ret; u64 op, rep, tmp, bytes, total; - u64 crc; p.in = (u8 *)in; p.bit = 0; @@ -376,22 +375,6 @@ } } while (op != OP_END); - /* - * crc(0:31) is saved in compressed data starting with the - * next bit after End of stream template. - */ - ret = next_bits(&p, &crc, CRC_BITS); - if (ret) - return ret; - - /* - * Validate CRC saved in compressed data. - */ - if (crc != (u64)crc32_be(0, out, total - p.olen)) { - pr_debug("CRC mismatch for decompression\n"); - return -EINVAL; - } - if (unlikely((total - p.olen) > UINT_MAX)) return -ENOSPC; --- linux-4.4.0.orig/mm/Kconfig +++ linux-4.4.0/mm/Kconfig @@ -651,8 +651,6 @@ config ZONE_DEVICE bool "Device memory (pmem, etc...) hotplug support" if EXPERT - default !ZONE_DMA - depends on !ZONE_DMA depends on MEMORY_HOTPLUG depends on MEMORY_HOTREMOVE depends on X86_64 #arch_add_memory() comprehends device memory @@ -666,5 +664,10 @@ If FS_DAX is enabled, then say Y. +config NR_ZONES_EXTENDED + bool + default n if !64BIT + default y if ZONE_DEVICE && ZONE_DMA && ZONE_DMA32 + config FRAME_VECTOR bool --- linux-4.4.0.orig/mm/Makefile +++ linux-4.4.0/mm/Makefile @@ -21,7 +21,7 @@ mm_init.o mmu_context.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ - debug.o $(mmu-y) + prfile.o debug.o $(mmu-y) obj-y += init-mm.o --- linux-4.4.0.orig/mm/filemap.c +++ linux-4.4.0/mm/filemap.c @@ -2128,7 +2128,7 @@ int ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); - file_update_time(vma->vm_file); + vma_file_update_time(vma); lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); --- linux-4.4.0.orig/mm/memory.c +++ linux-4.4.0/mm/memory.c @@ -2035,7 +2035,7 @@ } if (!page_mkwrite) - file_update_time(vma->vm_file); + vma_file_update_time(vma); } return VM_FAULT_WRITE; --- linux-4.4.0.orig/mm/mmap.c +++ linux-4.4.0/mm/mmap.c @@ -275,7 +275,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); mpol_put(vma_policy(vma)); kmem_cache_free(vm_area_cachep, vma); return next; @@ -887,7 +887,7 @@ if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); - fput(file); + vma_fput(vma); } if (next->anon_vma) anon_vma_merge(vma, next); @@ -1681,8 +1681,8 @@ return addr; unmap_and_free_vma: + vma_fput(vma); vma->vm_file = NULL; - fput(file); /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); @@ -2488,7 +2488,7 @@ goto out_free_mpol; if (new->vm_file) - get_file(new->vm_file); + vma_get_file(new); if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); @@ -2507,7 +2507,7 @@ if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) - fput(new->vm_file); + vma_fput(new); unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); @@ -2649,7 +2649,6 @@ struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; - struct file *file; pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. " "See Documentation/vm/remap_file_pages.txt.\n", @@ -2693,10 +2692,10 @@ munlock_vma_pages_range(vma, start, start + size); } - file = get_file(vma->vm_file); + vma_get_file(vma); ret = do_mmap_pgoff(vma->vm_file, start, size, prot, flags, pgoff, &populate); - fput(file); + vma_fput(vma); out: up_write(&mm->mmap_sem); if (populate) @@ -2966,7 +2965,7 @@ if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) - get_file(new_vma->vm_file); + vma_get_file(new_vma); if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); --- linux-4.4.0.orig/mm/nommu.c +++ linux-4.4.0/mm/nommu.c @@ -671,7 +671,7 @@ up_write(&nommu_region_sem); if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ @@ -829,7 +829,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); put_nommu_region(vma->vm_region); kmem_cache_free(vm_area_cachep, vma); } @@ -1355,7 +1355,7 @@ goto error_just_free; } } - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); region = pregion; result = start; @@ -1430,10 +1430,10 @@ up_write(&nommu_region_sem); error: if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); kmem_cache_free(vm_area_cachep, vma); return ret; --- linux-4.4.0.orig/mm/prfile.c +++ linux-4.4.0/mm/prfile.c @@ -0,0 +1,86 @@ +/* + * Mainly for aufs which mmap(2) diffrent file and wants to print different path + * in /proc/PID/maps. + * Call these functions via macros defined in linux/mm.h. + * + * See Documentation/filesystems/aufs/design/06mmap.txt + * + * Copyright (c) 2014 Junjro R. Okajima + * Copyright (c) 2014 Ian Campbell + */ + +#include +#include +#include + +/* #define PRFILE_TRACE */ +static inline void prfile_trace(struct file *f, struct file *pr, + const char func[], int line, const char func2[]) +{ +#ifdef PRFILE_TRACE + if (pr) + pr_info("%s:%d: %s, %s\n", func, line, func2, + f ? (char *)f->f_path.dentry->d_name.name : "(null)"); +#endif +} + +void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + file_update_time(f); + if (f && pr) + file_update_time(pr); +} + +struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + get_file(f); + if (f && pr) + get_file(pr); +} + +void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} + +#ifndef CONFIG_MMU +struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], + int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vmr_do_fput(struct vm_region *region, const char func[], int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} +#endif /* !CONFIG_MMU */ --- linux-4.4.0.orig/mm/shmem.c +++ linux-4.4.0/mm/shmem.c @@ -112,9 +112,13 @@ return totalram_pages / 2; } -static unsigned long shmem_default_max_inodes(void) +static int shmem_default_max_inodes(void) { - return min(totalram_pages - totalhigh_pages, totalram_pages / 2); + unsigned long ul; + + ul = INT_MAX; + ul = min3(ul, totalram_pages - totalhigh_pages, totalram_pages / 2); + return ul; } #endif @@ -610,6 +614,7 @@ static void shmem_evict_inode(struct inode *inode) { struct shmem_inode_info *info = SHMEM_I(inode); + struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb); if (inode->i_mapping->a_ops == &shmem_aops) { shmem_unacct_size(info->flags, inode->i_size); @@ -625,6 +630,11 @@ simple_xattrs_free(&info->xattrs); WARN_ON(inode->i_blocks); + if (!sbinfo->idr_nouse && inode->i_ino) { + mutex_lock(&sbinfo->idr_lock); + idr_remove(&sbinfo->idr, inode->i_ino); + mutex_unlock(&sbinfo->idr_lock); + } shmem_free_inode(inode->i_sb); clear_inode(inode); } @@ -1418,13 +1428,13 @@ struct inode *inode; struct shmem_inode_info *info; struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + int ino; if (shmem_reserve_inode(sb)) return NULL; inode = new_inode(sb); if (inode) { - inode->i_ino = get_next_ino(); inode_init_owner(inode, dir, mode); inode->i_blocks = 0; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; @@ -1465,6 +1475,25 @@ mpol_shared_policy_init(&info->policy, NULL); break; } + + if (!sbinfo->idr_nouse) { + /* inum 0 and 1 are unused */ + mutex_lock(&sbinfo->idr_lock); + ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX, + GFP_NOFS); + if (ino > 0) { + inode->i_ino = ino; + mutex_unlock(&sbinfo->idr_lock); + __insert_inode_hash(inode, inode->i_ino); + } else { + inode->i_ino = 0; + mutex_unlock(&sbinfo->idr_lock); + iput(inode); + /* shmem_free_inode() will be called */ + inode = NULL; + } + } else + inode->i_ino = get_next_ino(); } else shmem_free_inode(sb); return inode; @@ -2682,8 +2711,7 @@ static int shmem_match(struct inode *ino, void *vfh) { __u32 *fh = vfh; - __u64 inum = fh[2]; - inum = (inum << 32) | fh[1]; + __u64 inum = fh[1]; return ino->i_ino == inum && fh[0] == ino->i_generation; } @@ -2694,14 +2722,11 @@ struct dentry *dentry = NULL; u64 inum; - if (fh_len < 3) + if (fh_len < 2) return NULL; - inum = fid->raw[2]; - inum = (inum << 32) | fid->raw[1]; - - inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), - shmem_match, fid->raw); + inum = fid->raw[1]; + inode = ilookup5(sb, inum, shmem_match, fid->raw); if (inode) { dentry = d_find_alias(inode); iput(inode); @@ -2713,30 +2738,15 @@ static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, struct inode *parent) { - if (*len < 3) { - *len = 3; + if (*len < 2) { + *len = 2; return FILEID_INVALID; } - if (inode_unhashed(inode)) { - /* Unfortunately insert_inode_hash is not idempotent, - * so as we hash inodes here rather than at creation - * time, we need a lock to ensure we only try - * to do it once - */ - static DEFINE_SPINLOCK(lock); - spin_lock(&lock); - if (inode_unhashed(inode)) - __insert_inode_hash(inode, - inode->i_ino + inode->i_generation); - spin_unlock(&lock); - } - fh[0] = inode->i_generation; fh[1] = inode->i_ino; - fh[2] = ((__u64)inode->i_ino) >> 32; - *len = 3; + *len = 2; return 1; } @@ -2801,7 +2811,7 @@ goto bad_val; } else if (!strcmp(this_char,"nr_inodes")) { sbinfo->max_inodes = memparse(value, &rest); - if (*rest) + if (*rest || sbinfo->max_inodes < 2) goto bad_val; } else if (!strcmp(this_char,"mode")) { if (remount) @@ -2854,7 +2864,7 @@ { struct shmem_sb_info *sbinfo = SHMEM_SB(sb); struct shmem_sb_info config = *sbinfo; - unsigned long inodes; + int inodes; int error = -EINVAL; config.mpol = NULL; @@ -2902,7 +2912,7 @@ seq_printf(seq, ",size=%luk", sbinfo->max_blocks << (PAGE_CACHE_SHIFT - 10)); if (sbinfo->max_inodes != shmem_default_max_inodes()) - seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes); + seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes); if (sbinfo->mode != (S_IRWXUGO | S_ISVTX)) seq_printf(seq, ",mode=%03ho", sbinfo->mode); if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) @@ -2991,6 +3001,8 @@ { struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + if (!sbinfo->idr_nouse) + idr_destroy(&sbinfo->idr); percpu_counter_destroy(&sbinfo->used_blocks); mpol_put(sbinfo->mpol); kfree(sbinfo); @@ -3009,6 +3021,8 @@ if (!sbinfo) return -ENOMEM; + mutex_init(&sbinfo->idr_lock); + idr_init(&sbinfo->idr); sbinfo->mode = S_IRWXUGO | S_ISVTX; sbinfo->uid = current_fsuid(); sbinfo->gid = current_fsgid(); @@ -3112,6 +3126,15 @@ kmem_cache_destroy(shmem_inode_cachep); } +static __init void shmem_no_idr(struct super_block *sb) +{ + struct shmem_sb_info *sbinfo; + + sbinfo = SHMEM_SB(sb); + sbinfo->idr_nouse = true; + idr_destroy(&sbinfo->idr); +} + static const struct address_space_operations shmem_aops = { .writepage = shmem_writepage, .set_page_dirty = __set_page_dirty_no_writeback, @@ -3248,6 +3271,7 @@ printk(KERN_ERR "Could not kern_mount tmpfs\n"); goto out1; } + shmem_no_idr(shm_mnt->mnt_sb); return 0; out1: --- linux-4.4.0.orig/net/batman-adv/bridge_loop_avoidance.c +++ linux-4.4.0/net/batman-adv/bridge_loop_avoidance.c @@ -127,21 +127,17 @@ } /* finally deinitialize the claim */ -static void batadv_claim_free_rcu(struct rcu_head *rcu) +static void batadv_claim_release(struct batadv_bla_claim *claim) { - struct batadv_bla_claim *claim; - - claim = container_of(rcu, struct batadv_bla_claim, rcu); - batadv_backbone_gw_free_ref(claim->backbone_gw); - kfree(claim); + kfree_rcu(claim, rcu); } /* free a claim, call claim_free_rcu if its the last reference */ static void batadv_claim_free_ref(struct batadv_bla_claim *claim) { if (atomic_dec_and_test(&claim->refcount)) - call_rcu(&claim->rcu, batadv_claim_free_rcu); + batadv_claim_release(claim); } /** --- linux-4.4.0.orig/net/batman-adv/hard-interface.h +++ linux-4.4.0/net/batman-adv/hard-interface.h @@ -75,18 +75,6 @@ call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu); } -/** - * batadv_hardif_free_ref_now - decrement the hard interface refcounter and - * possibly free it (without rcu callback) - * @hard_iface: the hard interface to free - */ -static inline void -batadv_hardif_free_ref_now(struct batadv_hard_iface *hard_iface) -{ - if (atomic_dec_and_test(&hard_iface->refcount)) - batadv_hardif_free_rcu(&hard_iface->rcu); -} - static inline struct batadv_hard_iface * batadv_primary_if_get_selected(struct batadv_priv *bat_priv) { --- linux-4.4.0.orig/net/batman-adv/network-coding.c +++ linux-4.4.0/net/batman-adv/network-coding.c @@ -203,28 +203,25 @@ } /** - * batadv_nc_node_free_rcu - rcu callback to free an nc node and remove - * its refcount on the orig_node - * @rcu: rcu pointer of the nc node + * batadv_nc_node_release - release nc_node from lists and queue for free after + * rcu grace period + * @nc_node: the nc node to free */ -static void batadv_nc_node_free_rcu(struct rcu_head *rcu) +static void batadv_nc_node_release(struct batadv_nc_node *nc_node) { - struct batadv_nc_node *nc_node; - - nc_node = container_of(rcu, struct batadv_nc_node, rcu); batadv_orig_node_free_ref(nc_node->orig_node); - kfree(nc_node); + kfree_rcu(nc_node, rcu); } /** - * batadv_nc_node_free_ref - decrements the nc node refcounter and possibly - * frees it + * batadv_nc_node_free_ref - decrement the nc node refcounter and possibly + * release it * @nc_node: the nc node to free */ static void batadv_nc_node_free_ref(struct batadv_nc_node *nc_node) { if (atomic_dec_and_test(&nc_node->refcount)) - call_rcu(&nc_node->rcu, batadv_nc_node_free_rcu); + batadv_nc_node_release(nc_node); } /** --- linux-4.4.0.orig/net/batman-adv/originator.c +++ linux-4.4.0/net/batman-adv/originator.c @@ -163,92 +163,66 @@ } /** - * batadv_neigh_ifinfo_free_rcu - free the neigh_ifinfo object - * @rcu: rcu pointer of the neigh_ifinfo object - */ -static void batadv_neigh_ifinfo_free_rcu(struct rcu_head *rcu) -{ - struct batadv_neigh_ifinfo *neigh_ifinfo; - - neigh_ifinfo = container_of(rcu, struct batadv_neigh_ifinfo, rcu); - - if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) - batadv_hardif_free_ref_now(neigh_ifinfo->if_outgoing); - - kfree(neigh_ifinfo); -} - -/** - * batadv_neigh_ifinfo_free_now - decrement the refcounter and possibly free - * the neigh_ifinfo (without rcu callback) + * batadv_neigh_ifinfo_release - release neigh_ifinfo from lists and queue for + * free after rcu grace period * @neigh_ifinfo: the neigh_ifinfo object to release */ static void -batadv_neigh_ifinfo_free_ref_now(struct batadv_neigh_ifinfo *neigh_ifinfo) +batadv_neigh_ifinfo_release(struct batadv_neigh_ifinfo *neigh_ifinfo) { - if (atomic_dec_and_test(&neigh_ifinfo->refcount)) - batadv_neigh_ifinfo_free_rcu(&neigh_ifinfo->rcu); + if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) + batadv_hardif_free_ref(neigh_ifinfo->if_outgoing); + + kfree_rcu(neigh_ifinfo, rcu); } /** - * batadv_neigh_ifinfo_free_ref - decrement the refcounter and possibly free + * batadv_neigh_ifinfo_free_ref - decrement the refcounter and possibly release * the neigh_ifinfo * @neigh_ifinfo: the neigh_ifinfo object to release */ void batadv_neigh_ifinfo_free_ref(struct batadv_neigh_ifinfo *neigh_ifinfo) { if (atomic_dec_and_test(&neigh_ifinfo->refcount)) - call_rcu(&neigh_ifinfo->rcu, batadv_neigh_ifinfo_free_rcu); + batadv_neigh_ifinfo_release(neigh_ifinfo); } /** * batadv_neigh_node_free_rcu - free the neigh_node - * @rcu: rcu pointer of the neigh_node + * batadv_neigh_node_release - release neigh_node from lists and queue for + * free after rcu grace period + * @neigh_node: neigh neighbor to free */ -static void batadv_neigh_node_free_rcu(struct rcu_head *rcu) +static void batadv_neigh_node_release(struct batadv_neigh_node *neigh_node) { struct hlist_node *node_tmp; - struct batadv_neigh_node *neigh_node; struct batadv_neigh_ifinfo *neigh_ifinfo; struct batadv_algo_ops *bao; - neigh_node = container_of(rcu, struct batadv_neigh_node, rcu); bao = neigh_node->orig_node->bat_priv->bat_algo_ops; hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, &neigh_node->ifinfo_list, list) { - batadv_neigh_ifinfo_free_ref_now(neigh_ifinfo); + batadv_neigh_ifinfo_free_ref(neigh_ifinfo); } if (bao->bat_neigh_free) bao->bat_neigh_free(neigh_node); - batadv_hardif_free_ref_now(neigh_node->if_incoming); - - kfree(neigh_node); -} + batadv_hardif_free_ref(neigh_node->if_incoming); -/** - * batadv_neigh_node_free_ref_now - decrement the neighbors refcounter - * and possibly free it (without rcu callback) - * @neigh_node: neigh neighbor to free - */ -static void -batadv_neigh_node_free_ref_now(struct batadv_neigh_node *neigh_node) -{ - if (atomic_dec_and_test(&neigh_node->refcount)) - batadv_neigh_node_free_rcu(&neigh_node->rcu); + kfree_rcu(neigh_node, rcu); } /** * batadv_neigh_node_free_ref - decrement the neighbors refcounter - * and possibly free it + * and possibly release it * @neigh_node: neigh neighbor to free */ void batadv_neigh_node_free_ref(struct batadv_neigh_node *neigh_node) { if (atomic_dec_and_test(&neigh_node->refcount)) - call_rcu(&neigh_node->rcu, batadv_neigh_node_free_rcu); + batadv_neigh_node_release(neigh_node); } /** @@ -532,108 +506,99 @@ } /** - * batadv_orig_ifinfo_free_rcu - free the orig_ifinfo object - * @rcu: rcu pointer of the orig_ifinfo object + * batadv_orig_ifinfo_release - release orig_ifinfo from lists and queue for + * free after rcu grace period + * @orig_ifinfo: the orig_ifinfo object to release */ -static void batadv_orig_ifinfo_free_rcu(struct rcu_head *rcu) +static void batadv_orig_ifinfo_release(struct batadv_orig_ifinfo *orig_ifinfo) { - struct batadv_orig_ifinfo *orig_ifinfo; struct batadv_neigh_node *router; - orig_ifinfo = container_of(rcu, struct batadv_orig_ifinfo, rcu); - if (orig_ifinfo->if_outgoing != BATADV_IF_DEFAULT) - batadv_hardif_free_ref_now(orig_ifinfo->if_outgoing); + batadv_hardif_free_ref(orig_ifinfo->if_outgoing); /* this is the last reference to this object */ router = rcu_dereference_protected(orig_ifinfo->router, true); if (router) - batadv_neigh_node_free_ref_now(router); - kfree(orig_ifinfo); + batadv_neigh_node_free_ref(router); + + kfree_rcu(orig_ifinfo, rcu); } /** - * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly free - * the orig_ifinfo (without rcu callback) + * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly release + * the orig_ifinfo * @orig_ifinfo: the orig_ifinfo object to release */ -static void -batadv_orig_ifinfo_free_ref_now(struct batadv_orig_ifinfo *orig_ifinfo) +void batadv_orig_ifinfo_free_ref(struct batadv_orig_ifinfo *orig_ifinfo) { if (atomic_dec_and_test(&orig_ifinfo->refcount)) - batadv_orig_ifinfo_free_rcu(&orig_ifinfo->rcu); + batadv_orig_ifinfo_release(orig_ifinfo); } /** - * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly free - * the orig_ifinfo - * @orig_ifinfo: the orig_ifinfo object to release + * batadv_orig_node_free_rcu - free the orig_node + * @rcu: rcu pointer of the orig_node */ -void batadv_orig_ifinfo_free_ref(struct batadv_orig_ifinfo *orig_ifinfo) +static void batadv_orig_node_free_rcu(struct rcu_head *rcu) { - if (atomic_dec_and_test(&orig_ifinfo->refcount)) - call_rcu(&orig_ifinfo->rcu, batadv_orig_ifinfo_free_rcu); + struct batadv_orig_node *orig_node; + + orig_node = container_of(rcu, struct batadv_orig_node, rcu); + + batadv_mcast_purge_orig(orig_node); + + batadv_frag_purge_orig(orig_node, NULL); + + if (orig_node->bat_priv->bat_algo_ops->bat_orig_free) + orig_node->bat_priv->bat_algo_ops->bat_orig_free(orig_node); + + kfree(orig_node->tt_buff); + kfree(orig_node); } -static void batadv_orig_node_free_rcu(struct rcu_head *rcu) +/** + * batadv_orig_node_release - release orig_node from lists and queue for + * free after rcu grace period + * @orig_node: the orig node to free + */ +static void batadv_orig_node_release(struct batadv_orig_node *orig_node) { struct hlist_node *node_tmp; struct batadv_neigh_node *neigh_node; - struct batadv_orig_node *orig_node; struct batadv_orig_ifinfo *orig_ifinfo; - orig_node = container_of(rcu, struct batadv_orig_node, rcu); - spin_lock_bh(&orig_node->neigh_list_lock); /* for all neighbors towards this originator ... */ hlist_for_each_entry_safe(neigh_node, node_tmp, &orig_node->neigh_list, list) { hlist_del_rcu(&neigh_node->list); - batadv_neigh_node_free_ref_now(neigh_node); + batadv_neigh_node_free_ref(neigh_node); } hlist_for_each_entry_safe(orig_ifinfo, node_tmp, &orig_node->ifinfo_list, list) { hlist_del_rcu(&orig_ifinfo->list); - batadv_orig_ifinfo_free_ref_now(orig_ifinfo); + batadv_orig_ifinfo_free_ref(orig_ifinfo); } spin_unlock_bh(&orig_node->neigh_list_lock); - batadv_mcast_purge_orig(orig_node); - /* Free nc_nodes */ batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); - batadv_frag_purge_orig(orig_node, NULL); - - if (orig_node->bat_priv->bat_algo_ops->bat_orig_free) - orig_node->bat_priv->bat_algo_ops->bat_orig_free(orig_node); - - kfree(orig_node->tt_buff); - kfree(orig_node); + call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); } /** * batadv_orig_node_free_ref - decrement the orig node refcounter and possibly - * schedule an rcu callback for freeing it + * release it * @orig_node: the orig node to free */ void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node) { if (atomic_dec_and_test(&orig_node->refcount)) - call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); -} - -/** - * batadv_orig_node_free_ref_now - decrement the orig node refcounter and - * possibly free it (without rcu callback) - * @orig_node: the orig node to free - */ -void batadv_orig_node_free_ref_now(struct batadv_orig_node *orig_node) -{ - if (atomic_dec_and_test(&orig_node->refcount)) - batadv_orig_node_free_rcu(&orig_node->rcu); + batadv_orig_node_release(orig_node); } void batadv_originator_free(struct batadv_priv *bat_priv) --- linux-4.4.0.orig/net/batman-adv/originator.h +++ linux-4.4.0/net/batman-adv/originator.h @@ -38,7 +38,6 @@ void batadv_originator_free(struct batadv_priv *bat_priv); void batadv_purge_orig_ref(struct batadv_priv *bat_priv); void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node); -void batadv_orig_node_free_ref_now(struct batadv_orig_node *orig_node); struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, const u8 *addr); struct batadv_neigh_node * --- linux-4.4.0.orig/net/batman-adv/translation-table.c +++ linux-4.4.0/net/batman-adv/translation-table.c @@ -240,20 +240,6 @@ return count; } -static void batadv_tt_orig_list_entry_free_rcu(struct rcu_head *rcu) -{ - struct batadv_tt_orig_list_entry *orig_entry; - - orig_entry = container_of(rcu, struct batadv_tt_orig_list_entry, rcu); - - /* We are in an rcu callback here, therefore we cannot use - * batadv_orig_node_free_ref() and its call_rcu(): - * An rcu_barrier() wouldn't wait for that to finish - */ - batadv_orig_node_free_ref_now(orig_entry->orig_node); - kfree(orig_entry); -} - /** * batadv_tt_local_size_mod - change the size by v of the local table identified * by vid @@ -349,13 +335,25 @@ batadv_tt_global_size_mod(orig_node, vid, -1); } +/** + * batadv_tt_orig_list_entry_release - release tt orig entry from lists and + * queue for free after rcu grace period + * @orig_entry: tt orig entry to be free'd + */ +static void +batadv_tt_orig_list_entry_release(struct batadv_tt_orig_list_entry *orig_entry) +{ + batadv_orig_node_free_ref(orig_entry->orig_node); + kfree_rcu(orig_entry, rcu); +} + static void batadv_tt_orig_list_entry_free_ref(struct batadv_tt_orig_list_entry *orig_entry) { if (!atomic_dec_and_test(&orig_entry->refcount)) return; - call_rcu(&orig_entry->rcu, batadv_tt_orig_list_entry_free_rcu); + batadv_tt_orig_list_entry_release(orig_entry); } /** --- linux-4.4.0.orig/net/bridge/br_device.c +++ linux-4.4.0/net/bridge/br_device.c @@ -28,6 +28,8 @@ const struct nf_br_ops __rcu *nf_br_ops __read_mostly; EXPORT_SYMBOL_GPL(nf_br_ops); +static struct lock_class_key bridge_netdev_addr_lock_key; + /* net device transmit always called with BH disabled */ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) { @@ -87,6 +89,11 @@ return NETDEV_TX_OK; } +static void br_set_lockdep_class(struct net_device *dev) +{ + lockdep_set_class(&dev->addr_list_lock, &bridge_netdev_addr_lock_key); +} + static int br_dev_init(struct net_device *dev) { struct net_bridge *br = netdev_priv(dev); @@ -99,6 +106,7 @@ err = br_vlan_init(br); if (err) free_percpu(br->stats); + br_set_lockdep_class(dev); return err; } --- linux-4.4.0.orig/net/core/dev.c +++ linux-4.4.0/net/core/dev.c @@ -2542,6 +2542,8 @@ * * It may return NULL if the skb requires no segmentation. This is * only possible when GSO is used for verifying header integrity. + * + * Segmentation preserves SKB_SGO_CB_OFFSET bytes of previous skb cb. */ struct sk_buff *__skb_gso_segment(struct sk_buff *skb, netdev_features_t features, bool tx_path) @@ -2556,6 +2558,9 @@ return ERR_PTR(err); } + BUILD_BUG_ON(SKB_SGO_CB_OFFSET + + sizeof(*SKB_GSO_CB(skb)) > sizeof(skb->cb)); + SKB_GSO_CB(skb)->mac_offset = skb_headroom(skb); SKB_GSO_CB(skb)->encap_level = 0; --- linux-4.4.0.orig/net/core/filter.c +++ linux-4.4.0/net/core/filter.c @@ -777,6 +777,11 @@ if (ftest->k == 0) return -EINVAL; break; + case BPF_ALU | BPF_LSH | BPF_K: + case BPF_ALU | BPF_RSH | BPF_K: + if (ftest->k >= 32) + return -EINVAL; + break; case BPF_LD | BPF_MEM: case BPF_LDX | BPF_MEM: case BPF_ST: --- linux-4.4.0.orig/net/core/pktgen.c +++ linux-4.4.0/net/core/pktgen.c @@ -2787,7 +2787,9 @@ } else { skb = __netdev_alloc_skb(dev, size, GFP_NOWAIT); } - skb_reserve(skb, LL_RESERVED_SPACE(dev)); + + if (likely(skb)) + skb_reserve(skb, LL_RESERVED_SPACE(dev)); return skb; } --- linux-4.4.0.orig/net/ipv4/ip_output.c +++ linux-4.4.0/net/ipv4/ip_output.c @@ -240,6 +240,7 @@ * from host network stack. */ features = netif_skb_features(skb); + BUILD_BUG_ON(sizeof(*IPCB(skb)) > SKB_SGO_CB_OFFSET); segs = skb_gso_segment(skb, features & ~NETIF_F_GSO_MASK); if (IS_ERR_OR_NULL(segs)) { kfree_skb(skb); @@ -921,7 +922,7 @@ if (((length > mtu) || (skb && skb_is_gso(skb))) && (sk->sk_protocol == IPPROTO_UDP) && (rt->dst.dev->features & NETIF_F_UFO) && !rt->dst.header_len && - (sk->sk_type == SOCK_DGRAM)) { + (sk->sk_type == SOCK_DGRAM) && !sk->sk_no_check_tx) { err = ip_ufo_append_data(sk, queue, getfrag, from, length, hh_len, fragheaderlen, transhdrlen, maxfraglen, flags); --- linux-4.4.0.orig/net/ipv4/ip_tunnel.c +++ linux-4.4.0/net/ipv4/ip_tunnel.c @@ -1119,7 +1119,7 @@ struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); if (dev == itn->fb_tunnel_dev) - return -EINVAL; + return fan_has_map(&tunnel->fan) ? 0 : -EINVAL; t = ip_tunnel_find(itn, p, dev->type); --- linux-4.4.0.orig/net/ipv4/ipip.c +++ linux-4.4.0/net/ipv4/ipip.c @@ -107,6 +107,8 @@ #include #include #include +#include +#include #include #include @@ -208,6 +210,147 @@ return 0; } +static struct ip_fan_map *ipip_fan_find_map(struct ip_tunnel *t, __be32 daddr) +{ + struct ip_fan_map *fan_map; + + rcu_read_lock(); + list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { + if (fan_map->overlay == + (daddr & inet_make_mask(fan_map->overlay_prefix))) { + rcu_read_unlock(); + return fan_map; + } + } + rcu_read_unlock(); + + return NULL; +} + +/* Determine fan tunnel endpoint to send packet to, based on the inner IP + * address. + * + * Given a /8 overlay and /16 underlay, for an overlay (inner) address + * Y.A.B.C, the transformation is F.G.A.B, where "F" and "G" are the first + * two octets of the underlay network (the network portion of a /16), "A" + * and "B" are the low order two octets of the underlay network host (the + * host portion of a /16), and "Y" is a configured first octet of the + * overlay network. + * + * E.g., underlay host 10.88.3.4/16 with an overlay of 99.0.0.0/8 would + * host overlay subnet 99.3.4.0/24. An overlay network datagram from + * 99.3.4.5 to 99.6.7.8, would be directed to underlay host 10.88.6.7, + * which hosts overlay network subnet 99.6.7.0/24. This transformation is + * described in detail further below. + * + * Using netmasks for the overlay and underlay other than /8 and /16, as + * shown above, can yield larger (or smaller) overlay subnets, with the + * trade-off of allowing fewer (or more) underlay hosts to participate. + * + * The size of each overlay network subnet is defined by the total of the + * network mask of the overlay plus the size of host portion of the + * underlay network. In the above example, /8 + /16 = /24. + * + * E.g., consider underlay host 10.99.238.5/20 and overlay 99.0.0.0/8. In + * this case, the network portion of the underlay is 10.99.224.0/20, and + * the host portion is 0.0.14.5 (12 bits). To determine the overlay + * network subnet, the 12 bits of host portion are left shifted 12 bits + * (/20 - /8) and ORed with the overlay subnet prefix. This yields an + * overlay subnet of 99.224.80/20, composed of 8 bits overlay, followed by + * 12 bits underlay. This yields 12 bits in the overlay network portion, + * allowing for 4094 addresses in each overlay network subnet. The + * trade-off is that fewer hosts may participate in the underlay network, + * as its host address size has shrunk from 16 bits (65534 addresses) in + * the first example to 12 bits (4094 addresses) here. + * + * For fewer hosts per overlay subnet (permitting a larger number of + * underlay hosts to participate), the underlay netmask may be made + * smaller. + * + * E.g., underlay host 10.111.1.2/12 (network 10.96.0.0/12, host portion + * is 0.15.1.2, 20 bits) with an overlay of 33.0.0.0/8 would left shift + * the 20 bits of host by 4 (so that it's highest order bit is adjacent to + * the lowest order bit of the /8 overlay). This yields an overlay subnet + * of 33.240.16.32/28 (8 bits overlay, 20 bits from the host portion of + * the underlay). This provides more addresses for the underlay network + * (approximately 2^20), but each host's segment of the overlay provides + * only 4 bits of addresses (14 usable). + * + * It is also possible to adjust the overlay subnet. + * + * For an overlay of 240.0.0.0/5 and underlay of 10.88.0.0/20, consider + * underlay host 10.88.129.2; the 12 bits of host, 0.0.1.2, are left + * shifted 15 bits (/20 - /5), yielding an overlay network of + * 240.129.0.0/17. An underlay host of 10.88.244.215 would yield an + * overlay network of 242.107.128.0/17. + * + * For an overlay of 100.64.0.0/10 and underlay of 10.224.220.0/24, for + * underlay host 10.224.220.10, the underlay host portion (.10) is left + * shifted 14 bits, yielding an overlay network subnet of 100.66.128.0/18. + * This would permit 254 addresses on the underlay, with each overlay + * segment providing approximately 2^14 - 2 addresses (16382). + * + * For packets being encapsulated, the overlay network destination IP + * address is deconstructed into its overlay and underlay-derived + * portions. The underlay portion (determined by the overlay mask and + * overlay subnet mask) is right shifted according to the size of the + * underlay network mask. This value is then ORed with the network + * portion of the underlay network to produce the underlay network + * destination for the encapsulated datagram. + * + * For example, using the initial example of underlay 10.88.3.4/16 and + * overlay 99.0.0.0/8, with underlay host 10.88.3.4/16 providing overlay + * subnet 99.3.4.0/24 with specfic host 99.3.4.5. A datagram from + * 99.3.4.5 to 99.6.7.8 would first have the underlay host derived portion + * of the address extracted. This is a number of bits equal to underlay + * network host portion. In the destination address, the highest order of + * these bits is one bit lower than the lowest order bit from the overlay + * network mask. + * + * Using the sample value, 99.6.7.8, the overlay mask is /8, and the + * underlay mask is /16 (leaving 16 bits for the host portion). The bits + * to be shifted are the middle two octets, 0.6.7.0, as this is 99.6.7.8 + * ANDed with the mask 0x00ffff00 (which is 16 bits, the highest order of + * which is 1 bit lower than the lowest order overlay address bit). + * + * These octets, 0.6.7.0, are then right shifted 8 bits, yielding 0.0.6.7. + * This value is then ORed with the underlay network portion, + * 10.88.0.0/16, providing 10.88.6.7 as the final underlay destination for + * the encapuslated datagram. + * + * Another transform using the final example: overlay 100.64.0.0/10 and + * underlay 10.224.220.0/24. Consider overlay address 100.66.128.1 + * sending a datagram to 100.66.200.5. In this case, 8 bits (the host + * portion size of 10.224.220.0/24) beginning after the 100.64/10 overlay + * prefix are masked off, yielding 0.2.192.0. This is right shifted 14 + * (32 - 10 - (32 - 24), i.e., the number of bits between the overlay + * network portion and the underlay host portion) bits, yielding 0.0.0.11. + * This is ORed with the underlay network portion, 10.224.220.0/24, giving + * the underlay destination of 10.224.220.11 for overlay destination + * 100.66.200.5. + */ +static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) +{ + struct ip_fan_map *f_map; + u32 daddr, underlay; + + f_map = ipip_fan_find_map(tunnel, ip_hdr(skb)->daddr); + if (!f_map) + return -ENOENT; + + daddr = ntohl(ip_hdr(skb)->daddr); + underlay = ntohl(f_map->underlay); + if (!underlay) + return -EINVAL; + + *iph = tunnel->parms.iph; + iph->daddr = htonl(underlay | + ((daddr & ~f_map->overlay_mask) >> + (32 - f_map->overlay_prefix - + (32 - f_map->underlay_prefix)))); + return 0; +} + /* * This function assumes it is being called from dev_queue_xmit() * and that skb is filled properly by that function. @@ -215,7 +358,8 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) { struct ip_tunnel *tunnel = netdev_priv(dev); - const struct iphdr *tiph = &tunnel->parms.iph; + const struct iphdr *tiph; + struct iphdr fiph; if (unlikely(skb->protocol != htons(ETH_P_IP))) goto tx_error; @@ -224,6 +368,14 @@ if (IS_ERR(skb)) goto out; + if (fan_has_map(&tunnel->fan)) { + if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) + goto tx_error; + tiph = &fiph; + } else { + tiph = &tunnel->parms.iph; + } + skb_set_inner_ipproto(skb, IPPROTO_IPIP); ip_tunnel_xmit(skb, dev, tiph, tiph->protocol); @@ -281,6 +433,8 @@ static void ipip_tunnel_setup(struct net_device *dev) { + struct ip_tunnel *t = netdev_priv(dev); + dev->netdev_ops = &ipip_netdev_ops; dev->type = ARPHRD_TUNNEL; @@ -292,6 +446,7 @@ dev->features |= IPIP_FEATURES; dev->hw_features |= IPIP_FEATURES; ip_tunnel_setup(dev, ipip_net_id); + INIT_LIST_HEAD(&t->fan.fan_maps); } static int ipip_tunnel_init(struct net_device *dev) @@ -375,21 +530,112 @@ return ret; } +static void ipip_fan_flush_map(struct ip_tunnel *t) +{ + struct ip_fan_map *fan_map; + + list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + } +} + +static int ipip_fan_del_map(struct ip_tunnel *t, __be32 overlay) +{ + struct ip_fan_map *fan_map; + + fan_map = ipip_fan_find_map(t, overlay); + if (!fan_map) + return -ENOENT; + + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + + return 0; +} + +static int ipip_fan_add_map(struct ip_tunnel *t, struct ifla_fan_map *map) +{ + __be32 overlay_mask, underlay_mask; + struct ip_fan_map *fan_map; + + overlay_mask = inet_make_mask(map->overlay_prefix); + underlay_mask = inet_make_mask(map->underlay_prefix); + + if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) + return -EINVAL; + + if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) + return -EINVAL; + + /* Special case: overlay 0 and underlay 0: flush all mappings */ + if (!map->overlay && !map->underlay) { + ipip_fan_flush_map(t); + return 0; + } + + /* Special case: overlay set and underlay 0: clear map for overlay */ + if (!map->underlay) + return ipip_fan_del_map(t, map->overlay); + + if (ipip_fan_find_map(t, map->overlay)) + return -EEXIST; + + fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); + fan_map->underlay = map->underlay; + fan_map->overlay = map->overlay; + fan_map->underlay_prefix = map->underlay_prefix; + fan_map->overlay_mask = ntohl(overlay_mask); + fan_map->overlay_prefix = map->overlay_prefix; + + list_add_tail_rcu(&fan_map->list, &t->fan.fan_maps); + + return 0; +} + + +static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, + struct ip_tunnel_parm *parms) +{ + struct ifla_fan_map *map; + struct nlattr *attr; + int rem, rv; + + if (!data[IFLA_IPTUN_FAN_MAP]) + return 0; + + if (parms->iph.daddr) + return -EINVAL; + + nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { + map = nla_data(attr); + rv = ipip_fan_add_map(t, map); + if (rv) + return rv; + } + + return 0; +} + static int ipip_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[]) { struct ip_tunnel_parm p; struct ip_tunnel_encap ipencap; + struct ip_tunnel *t = netdev_priv(dev); + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - struct ip_tunnel *t = netdev_priv(dev); - int err = ip_tunnel_encap_setup(t, &ipencap); + err = ip_tunnel_encap_setup(t, &ipencap); if (err < 0) return err; } ipip_netlink_parms(data, &p); + err = ipip_netlink_fan(data, t, &p); + if (err < 0) + return err; return ip_tunnel_newlink(dev, tb, &p); } @@ -398,16 +644,20 @@ { struct ip_tunnel_parm p; struct ip_tunnel_encap ipencap; + struct ip_tunnel *t = netdev_priv(dev); + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - struct ip_tunnel *t = netdev_priv(dev); - int err = ip_tunnel_encap_setup(t, &ipencap); + err = ip_tunnel_encap_setup(t, &ipencap); if (err < 0) return err; } ipip_netlink_parms(data, &p); + err = ipip_netlink_fan(data, t, &p); + if (err < 0) + return err; if (((dev->flags & IFF_POINTOPOINT) && !p.iph.daddr) || (!(dev->flags & IFF_POINTOPOINT) && p.iph.daddr)) @@ -439,6 +689,8 @@ nla_total_size(2) + /* IFLA_IPTUN_ENCAP_DPORT */ nla_total_size(2) + + /* IFLA_IPTUN_FAN_MAP */ + nla_total_size(sizeof(struct ifla_fan_map)) * 256 + 0; } @@ -466,6 +718,26 @@ tunnel->encap.flags)) goto nla_put_failure; + if (fan_has_map(&tunnel->fan)) { + struct nlattr *fan_nest; + struct ip_fan_map *fan_map; + + fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; + list_for_each_entry_rcu(fan_map, &tunnel->fan.fan_maps, list) { + struct ifla_fan_map map; + + map.underlay = fan_map->underlay; + map.underlay_prefix = fan_map->underlay_prefix; + map.overlay = fan_map->overlay; + map.overlay_prefix = fan_map->overlay_prefix; + if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) + goto nla_put_failure; + } + nla_nest_end(skb, fan_nest); + } + return 0; nla_put_failure: @@ -483,6 +755,9 @@ [IFLA_IPTUN_ENCAP_FLAGS] = { .type = NLA_U16 }, [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, + + [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, + [IFLA_IPTUN_FAN_MAP] = { .type = NLA_NESTED }, }; static struct rtnl_link_ops ipip_link_ops __read_mostly = { @@ -523,6 +798,23 @@ .size = sizeof(struct ip_tunnel_net), }; +#ifdef CONFIG_SYSCTL +static struct ctl_table_header *ipip_fan_header; +static unsigned int ipip_fan_version = 3; + +static struct ctl_table ipip_fan_sysctls[] = { + { + .procname = "version", + .data = &ipip_fan_version, + .maxlen = sizeof(ipip_fan_version), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + {}, +}; + +#endif /* CONFIG_SYSCTL */ + static int __init ipip_init(void) { int err; @@ -541,9 +833,22 @@ if (err < 0) goto rtnl_link_failed; +#ifdef CONFIG_SYSCTL + ipip_fan_header = register_net_sysctl(&init_net, "net/fan", + ipip_fan_sysctls); + if (!ipip_fan_header) { + err = -ENOMEM; + goto sysctl_failed; + } +#endif /* CONFIG_SYSCTL */ + out: return err; +#ifdef CONFIG_SYSCTL +sysctl_failed: + rtnl_link_unregister(&ipip_link_ops); +#endif /* CONFIG_SYSCTL */ rtnl_link_failed: xfrm4_tunnel_deregister(&ipip_handler, AF_INET); xfrm_tunnel_failed: @@ -553,6 +858,9 @@ static void __exit ipip_fini(void) { +#ifdef CONFIG_SYSCTL + unregister_net_sysctl_table(ipip_fan_header); +#endif /* CONFIG_SYSCTL */ rtnl_link_unregister(&ipip_link_ops); if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET)) pr_info("%s: can't deregister tunnel\n", __func__); --- linux-4.4.0.orig/net/ipv4/tcp_yeah.c +++ linux-4.4.0/net/ipv4/tcp_yeah.c @@ -219,7 +219,7 @@ yeah->fast_count = 0; yeah->reno_count = max(yeah->reno_count>>1, 2U); - return tp->snd_cwnd - reduction; + return max_t(int, tp->snd_cwnd - reduction, 2); } static struct tcp_congestion_ops tcp_yeah __read_mostly = { --- linux-4.4.0.orig/net/ipv4/udp.c +++ linux-4.4.0/net/ipv4/udp.c @@ -1273,6 +1273,7 @@ int peeked, off = 0; int err; int is_udplite = IS_UDPLITE(sk); + bool checksum_valid = false; bool slow; if (flags & MSG_ERRQUEUE) @@ -1298,11 +1299,12 @@ */ if (copied < ulen || UDP_SKB_CB(skb)->partial_cov) { - if (udp_lib_checksum_complete(skb)) + checksum_valid = !udp_lib_checksum_complete(skb); + if (!checksum_valid) goto csum_copy_err; } - if (skb_csum_unnecessary(skb)) + if (checksum_valid || skb_csum_unnecessary(skb)) err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), msg, copied); else { --- linux-4.4.0.orig/net/ipv6/ip6_output.c +++ linux-4.4.0/net/ipv6/ip6_output.c @@ -1353,7 +1353,7 @@ (skb && skb_is_gso(skb))) && (sk->sk_protocol == IPPROTO_UDP) && (rt->dst.dev->features & NETIF_F_UFO) && - (sk->sk_type == SOCK_DGRAM)) { + (sk->sk_type == SOCK_DGRAM) && !udp_get_no_check6_tx(sk)) { err = ip6_ufo_append_data(sk, queue, getfrag, from, length, hh_len, fragheaderlen, transhdrlen, mtu, flags, fl6); --- linux-4.4.0.orig/net/ipv6/tcp_ipv6.c +++ linux-4.4.0/net/ipv6/tcp_ipv6.c @@ -462,8 +462,10 @@ if (np->repflow && ireq->pktopts) fl6->flowlabel = ip6_flowlabel(ipv6_hdr(ireq->pktopts)); + rcu_read_lock(); err = ip6_xmit(sk, skb, fl6, rcu_dereference(np->opt), np->tclass); + rcu_read_unlock(); err = net_xmit_eval(err); } --- linux-4.4.0.orig/net/ipv6/udp.c +++ linux-4.4.0/net/ipv6/udp.c @@ -402,6 +402,7 @@ int peeked, off = 0; int err; int is_udplite = IS_UDPLITE(sk); + bool checksum_valid = false; int is_udp4; bool slow; @@ -433,11 +434,12 @@ */ if (copied < ulen || UDP_SKB_CB(skb)->partial_cov) { - if (udp_lib_checksum_complete(skb)) + checksum_valid = !udp_lib_checksum_complete(skb); + if (!checksum_valid) goto csum_copy_err; } - if (skb_csum_unnecessary(skb)) + if (checksum_valid || skb_csum_unnecessary(skb)) err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), msg, copied); else { --- linux-4.4.0.orig/net/ipv6/xfrm6_mode_tunnel.c +++ linux-4.4.0/net/ipv6/xfrm6_mode_tunnel.c @@ -23,7 +23,7 @@ struct ipv6hdr *inner_iph = ipipv6_hdr(skb); if (INET_ECN_is_ce(XFRM_MODE_SKB_CB(skb)->tos)) - IP6_ECN_set_ce(inner_iph); + IP6_ECN_set_ce(skb, inner_iph); } /* Add encapsulation header. --- linux-4.4.0.orig/net/openvswitch/datapath.c +++ linux-4.4.0/net/openvswitch/datapath.c @@ -336,12 +336,10 @@ unsigned short gso_type = skb_shinfo(skb)->gso_type; struct sw_flow_key later_key; struct sk_buff *segs, *nskb; - struct ovs_skb_cb ovs_cb; int err; - ovs_cb = *OVS_CB(skb); + BUILD_BUG_ON(sizeof(*OVS_CB(skb)) > SKB_SGO_CB_OFFSET); segs = __skb_gso_segment(skb, NETIF_F_SG, false); - *OVS_CB(skb) = ovs_cb; if (IS_ERR(segs)) return PTR_ERR(segs); if (segs == NULL) @@ -359,7 +357,6 @@ /* Queue all of the segments. */ skb = segs; do { - *OVS_CB(skb) = ovs_cb; if (gso_type & SKB_GSO_UDP && skb != segs) key = &later_key; --- linux-4.4.0.orig/net/phonet/af_phonet.c +++ linux-4.4.0/net/phonet/af_phonet.c @@ -377,6 +377,10 @@ struct sockaddr_pn sa; u16 len; + skb = skb_share_check(skb, GFP_ATOMIC); + if (!skb) + return NET_RX_DROP; + /* check we have at least a full Phonet header */ if (!pskb_pull(skb, sizeof(struct phonethdr))) goto out; --- linux-4.4.0.orig/net/rds/ib_send.c +++ linux-4.4.0/net/rds/ib_send.c @@ -502,7 +502,7 @@ int flow_controlled = 0; int nr_sig = 0; - BUG_ON(off % RDS_FRAG_SIZE); + BUG_ON(!conn->c_loopback && off % RDS_FRAG_SIZE); BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); /* Do not send cong updates to IB loopback */ --- linux-4.4.0.orig/net/sched/cls_flower.c +++ linux-4.4.0/net/sched/cls_flower.c @@ -252,23 +252,28 @@ fl_set_key_val(tb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC, mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK, sizeof(key->eth.src)); + fl_set_key_val(tb, &key->basic.n_proto, TCA_FLOWER_KEY_ETH_TYPE, &mask->basic.n_proto, TCA_FLOWER_UNSPEC, sizeof(key->basic.n_proto)); + if (key->basic.n_proto == htons(ETH_P_IP) || key->basic.n_proto == htons(ETH_P_IPV6)) { fl_set_key_val(tb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO, &mask->basic.ip_proto, TCA_FLOWER_UNSPEC, sizeof(key->basic.ip_proto)); } - if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { + + if (tb[TCA_FLOWER_KEY_IPV4_SRC] || tb[TCA_FLOWER_KEY_IPV4_DST]) { + key->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; fl_set_key_val(tb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC, &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK, sizeof(key->ipv4.src)); fl_set_key_val(tb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST, &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK, sizeof(key->ipv4.dst)); - } else if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS) { + } else if (tb[TCA_FLOWER_KEY_IPV6_SRC] || tb[TCA_FLOWER_KEY_IPV6_DST]) { + key->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; fl_set_key_val(tb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC, &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK, sizeof(key->ipv6.src)); @@ -276,6 +281,7 @@ &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK, sizeof(key->ipv6.dst)); } + if (key->basic.ip_proto == IPPROTO_TCP) { fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC, &mask->tp.src, TCA_FLOWER_UNSPEC, --- linux-4.4.0.orig/net/sctp/sysctl.c +++ linux-4.4.0/net/sctp/sysctl.c @@ -320,7 +320,7 @@ struct ctl_table tbl; bool changed = false; char *none = "none"; - char tmp[8]; + char tmp[8] = {0}; int ret; memset(&tbl, 0, sizeof(struct ctl_table)); --- linux-4.4.0.orig/net/unix/af_unix.c +++ linux-4.4.0/net/unix/af_unix.c @@ -1513,6 +1513,21 @@ sock_wfree(skb); } +/* + * The "user->unix_inflight" variable is protected by the garbage + * collection lock, and we just read it locklessly here. If you go + * over the limit, there might be a tiny race in actually noticing + * it across threads. Tough. + */ +static inline bool too_many_unix_fds(struct task_struct *p) +{ + struct user_struct *user = current_user(); + + if (unlikely(user->unix_inflight > task_rlimit(p, RLIMIT_NOFILE))) + return !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN); + return false; +} + #define MAX_RECURSION_LEVEL 4 static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) @@ -1521,6 +1536,9 @@ unsigned char max_level = 0; int unix_sock_count = 0; + if (too_many_unix_fds(current)) + return -ETOOMANYREFS; + for (i = scm->fp->count - 1; i >= 0; i--) { struct sock *sk = unix_get_socket(scm->fp->fp[i]); @@ -1542,10 +1560,8 @@ if (!UNIXCB(skb).fp) return -ENOMEM; - if (unix_sock_count) { - for (i = scm->fp->count - 1; i >= 0; i--) - unix_inflight(scm->fp->fp[i]); - } + for (i = scm->fp->count - 1; i >= 0; i--) + unix_inflight(scm->fp->fp[i]); return max_level; } @@ -2270,7 +2286,14 @@ /* Lock the socket to prevent queue disordering * while sleeps in memcpy_tomsg */ - mutex_lock(&u->readlock); + err = mutex_lock_interruptible(&u->readlock); + if (unlikely(err)) { + /* recvmsg() in non blocking mode is supposed to return -EAGAIN + * sk_rcvtimeo is not honored by mutex_lock_interruptible() + */ + err = noblock ? -EAGAIN : -ERESTARTSYS; + goto out; + } if (flags & MSG_PEEK) skip = sk_peek_offset(sk, flags); @@ -2314,12 +2337,12 @@ timeo = unix_stream_data_wait(sk, timeo, last, last_len); - if (signal_pending(current)) { + if (signal_pending(current) || + mutex_lock_interruptible(&u->readlock)) { err = sock_intr_errno(timeo); goto out; } - mutex_lock(&u->readlock); continue; unlock: unix_state_unlock(sk); --- linux-4.4.0.orig/net/unix/garbage.c +++ linux-4.4.0/net/unix/garbage.c @@ -120,11 +120,11 @@ { struct sock *s = unix_get_socket(fp); + spin_lock(&unix_gc_lock); + if (s) { struct unix_sock *u = unix_sk(s); - spin_lock(&unix_gc_lock); - if (atomic_long_inc_return(&u->inflight) == 1) { BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); @@ -132,25 +132,28 @@ BUG_ON(list_empty(&u->link)); } unix_tot_inflight++; - spin_unlock(&unix_gc_lock); } + fp->f_cred->user->unix_inflight++; + spin_unlock(&unix_gc_lock); } void unix_notinflight(struct file *fp) { struct sock *s = unix_get_socket(fp); + spin_lock(&unix_gc_lock); + if (s) { struct unix_sock *u = unix_sk(s); - spin_lock(&unix_gc_lock); BUG_ON(list_empty(&u->link)); if (atomic_long_dec_and_test(&u->inflight)) list_del_init(&u->link); unix_tot_inflight--; - spin_unlock(&unix_gc_lock); } + fp->f_cred->user->unix_inflight--; + spin_unlock(&unix_gc_lock); } static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), --- linux-4.4.0.orig/net/xfrm/xfrm_output.c +++ linux-4.4.0/net/xfrm/xfrm_output.c @@ -167,6 +167,8 @@ { struct sk_buff *segs; + BUILD_BUG_ON(sizeof(*IPCB(skb)) > SKB_SGO_CB_OFFSET); + BUILD_BUG_ON(sizeof(*IP6CB(skb)) > SKB_SGO_CB_OFFSET); segs = skb_gso_segment(skb, 0); kfree_skb(skb); if (IS_ERR(segs)) --- linux-4.4.0.orig/scripts/kconfig/lkc.h +++ linux-4.4.0/scripts/kconfig/lkc.h @@ -88,7 +88,9 @@ /* confdata.c and expr.c */ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) { - assert(len != 0); + //assert(len != 0); + if (len == 0) + return; if (fwrite(str, len, count, out) != count) fprintf(stderr, "Error in writing or end of file.\n"); --- linux-4.4.0.orig/scripts/mod/file2alias.c +++ linux-4.4.0/scripts/mod/file2alias.c @@ -917,7 +917,7 @@ char guid_name[(sizeof(*guid) + 1) * 2]; for (i = 0; i < (sizeof(*guid) * 2); i += 2) - sprintf(&guid_name[i], "%02x", TO_NATIVE((*guid)[i/2])); + sprintf(&guid_name[i], "%02x", TO_NATIVE((guid->b)[i/2])); strcpy(alias, "vmbus:"); strcat(alias, guid_name); --- linux-4.4.0.orig/scripts/recordmcount.pl +++ linux-4.4.0/scripts/recordmcount.pl @@ -263,7 +263,8 @@ } elsif ($arch eq "powerpc") { $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)"; - $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?.*?)>:"; + # See comment in the sparc64 section for why we use '\w'. + $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?\\w*?)>:"; $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s\\.?_mcount\$"; if ($bits == 64) { --- linux-4.4.0.orig/security/apparmor/Kconfig +++ linux-4.4.0/security/apparmor/Kconfig @@ -30,14 +30,62 @@ If you are unsure how to answer this question, answer 1. +config SECURITY_APPARMOR_STATS + bool "enable debug statistics" + depends on SECURITY_APPARMOR + select APPARMOR_LABEL_STATS + default n + help + This enables keeping statistics on various internal structures + and functions in apparmor. + + If you are unsure how to answer this question, answer N. + +config SECURITY_APPARMOR_UNCONFINED_INIT + bool "Set init to unconfined on boot" + depends on SECURITY_APPARMOR + default y + help + This option determines policy behavior during early boot by + placing the init process in the unconfined state, or the + 'default' profile. + + This option determines policy behavior during early boot by + placing the init process in the unconfined state, or the + 'default' profile. + + 'Y' means init and its children are not confined, unless the + init process is re-execed after a policy load; loaded policy + will only apply to processes started after the load. + + 'N' means init and its children are confined in a profile + named 'default', which can be replaced later and thus + provide for confinement for processes started early at boot, + though not confined during early boot. + + If you are unsure how to answer this question, answer Y. + config SECURITY_APPARMOR_HASH - bool "SHA1 hash of loaded profiles" + bool "enable introspection of sha1 hashes for loaded profiles" depends on SECURITY_APPARMOR select CRYPTO select CRYPTO_SHA1 default y help - This option selects whether sha1 hashing is done against loaded - profiles and exported for inspection to user space via the apparmor - filesystem. + This option selects whether introspection of loaded policy + is available to userspace via the apparmor filesystem. + +config SECURITY_APPARMOR_HASH_DEFAULT + bool "Enable policy hash introspection by default" + depends on SECURITY_APPARMOR_HASH + default y + + help + This option selects whether sha1 hashing of loaded policy + is enabled by default. The generation of sha1 hashes for + loaded policy provide system administrators a quick way + to verify that policy in the kernel matches what is expected, + however it can slow down policy load on some devices. In + these cases policy hashing can be disabled by default and + enabled only if needed. --- linux-4.4.0.orig/security/apparmor/Makefile +++ linux-4.4.0/security/apparmor/Makefile @@ -4,11 +4,44 @@ apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o \ path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \ - resource.o sid.o file.o + resource.o sid.o file.o label.o mount.o net.o af_unix.o apparmor-$(CONFIG_SECURITY_APPARMOR_HASH) += crypto.o -clean-files := capability_names.h rlim_names.h +clean-files := capability_names.h rlim_names.h net_names.h +# Build a lower case string table of address family names +# Transform lines from +# define AF_LOCAL 1 /* POSIX name for AF_UNIX */ +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# [1] = "local", +# [2] = "inet", +# +# and build the securityfs entries for the mapping. +# Transforms lines from +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# #define AA_FS_AF_MASK "local inet" +quiet_cmd_make-af = GEN $@ +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ;\ + sed $< >>$@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e "/AF_ROUTE/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ ;\ + echo -n '\#define AA_FS_AF_MASK "' >> $@ ;\ + sed -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e "/AF_ROUTE/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/\L\1/p'\ + $< | tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ + +# Build a lower case string table of sock type names +# Transform lines from +# SOCK_STREAM = 1, +# to +# [1] = "stream", +quiet_cmd_make-sock = GEN $@ +cmd_make-sock = echo "static const char *sock_type_names[] = {" >> $@ ;\ + sed $^ >>$@ -r -n \ + -e 's/^\tSOCK_([A-Z0-9_]+)[\t]+=[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ # Build a lower case string table of capability names # Transforms lines from @@ -61,6 +94,7 @@ tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ $(obj)/capability.o : $(obj)/capability_names.h +$(obj)/net.o : $(obj)/net_names.h $(obj)/resource.o : $(obj)/rlim_names.h $(obj)/capability_names.h : $(srctree)/include/uapi/linux/capability.h \ $(src)/Makefile @@ -68,3 +102,8 @@ $(obj)/rlim_names.h : $(srctree)/include/uapi/asm-generic/resource.h \ $(src)/Makefile $(call cmd,make-rlim) +$(obj)/net_names.h : $(srctree)/include/linux/socket.h \ + $(srctree)/include/linux/net.h \ + $(src)/Makefile + $(call cmd,make-af) + $(call cmd,make-sock) --- linux-4.4.0.orig/security/apparmor/af_unix.c +++ linux-4.4.0/security/apparmor/af_unix.c @@ -0,0 +1,640 @@ +/* + * AppArmor security module + * + * This file contains AppArmor af_unix fine grained mediation + * + * Copyright 2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include + +#include "include/af_unix.h" +#include "include/apparmor.h" +#include "include/context.h" +#include "include/file.h" +#include "include/label.h" +#include "include/path.h" +#include "include/policy.h" + +static inline struct sock *aa_sock(struct unix_sock *u) +{ + return &u->sk; +} + +static inline int unix_fs_perm(int op, u32 mask, struct aa_label *label, + struct unix_sock *u, int flags) +{ + AA_BUG(!label); + AA_BUG(!u); + AA_BUG(!UNIX_FS(aa_sock(u))); + + if (unconfined(label) || !LABEL_MEDIATES(label, AA_CLASS_FILE)) + return 0; + + mask &= NET_FS_PERMS; + if (!u->path.dentry) { + struct path_cond cond = { }; + struct file_perms perms = { }; + struct aa_profile *profile; + + /* socket path has been cleared because it is being shutdown + * can only fall back to original sun_path request + */ + struct aa_sk_cxt *cxt = SK_CXT(&u->sk); + if (cxt->path.dentry) + return aa_path_perm(op, label, &cxt->path, flags, mask, + &cond); + return fn_for_each_confined(label, profile, + ((flags | profile->path_flags) & PATH_MEDIATE_DELETED) ? + __aa_path_perm(op, profile, + u->addr->name->sun_path, mask, + &cond, flags, &perms) : + aa_audit_file(profile, &nullperms, op, mask, + u->addr->name->sun_path, NULL, + cond.uid, "Failed name lookup - " + "deleted entry", -EACCES)); + } else { + /* the sunpath may not be valid for this ns so use the path */ + struct path_cond cond = { u->path.dentry->d_inode->i_uid, + u->path.dentry->d_inode->i_mode + }; + + return aa_path_perm(op, label, &u->path, flags, mask, &cond); + } + + return 0; +} + +/* passing in state returned by PROFILE_MEDIATES_AF */ +static unsigned int match_to_prot(struct aa_profile *profile, + unsigned int state, int type, int protocol, + const char **info) +{ + u16 buffer[2]; + buffer[0] = cpu_to_be16(type); + buffer[1] = cpu_to_be16(protocol); + state = aa_dfa_match_len(profile->policy.dfa, state, (char *) &buffer, + 4); + if (!state) + *info = "failed type and protocol match"; + return state; +} + +static unsigned int match_addr(struct aa_profile *profile, unsigned int state, + struct sockaddr_un *addr, int addrlen) +{ + if (addr) + /* include leading \0 */ + state = aa_dfa_match_len(profile->policy.dfa, state, + addr->sun_path, + unix_addr_len(addrlen)); + else + /* anonymous end point */ + state = aa_dfa_match_len(profile->policy.dfa, state, "\x01", + 1); + /* todo change to out of band */ + state = aa_dfa_null_transition(profile->policy.dfa, state); + return state; +} + +static unsigned int match_to_local(struct aa_profile *profile, + unsigned int state, int type, int protocol, + struct sockaddr_un *addr, int addrlen, + const char **info) +{ + state = match_to_prot(profile, state, type, protocol, info); + if (state) { + state = match_addr(profile, state, addr, addrlen); + if (state) { + /* todo: local label matching */ + state = aa_dfa_null_transition(profile->policy.dfa, + state); + if (!state) + *info = "failed local label match"; + } else + *info = "failed local address match"; + } + + return state; +} + +static unsigned int match_to_sk(struct aa_profile *profile, + unsigned int state, struct unix_sock *u, + const char **info) +{ + struct sockaddr_un *addr = NULL; + int addrlen = 0; + + if (u->addr) { + addr = u->addr->name; + addrlen = u->addr->len; + } + + return match_to_local(profile, state, u->sk.sk_type, u->sk.sk_protocol, + addr, addrlen, info); +} + +#define CMD_ADDR 1 +#define CMD_LISTEN 2 +#define CMD_OPT 4 + +static inline unsigned int match_to_cmd(struct aa_profile *profile, + unsigned int state, struct unix_sock *u, + char cmd, const char **info) +{ + state = match_to_sk(profile, state, u, info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, &cmd, 1); + if (!state) + *info = "failed cmd selection match"; + } + + return state; +} + +static inline unsigned int match_to_peer(struct aa_profile *profile, + unsigned int state, + struct unix_sock *u, + struct sockaddr_un *peer_addr, + int peer_addrlen, + const char **info) +{ + state = match_to_cmd(profile, state, u, CMD_ADDR, info); + if (state) { + state = match_addr(profile, state, peer_addr, peer_addrlen); + if (!state) + *info = "failed peer address match"; + } + return state; +} + +static int do_perms(struct aa_profile *profile, unsigned int state, u32 request, + struct common_audit_data *sa) +{ + struct aa_perms perms; + + AA_BUG(!profile); + + aa_compute_perms(profile->policy.dfa, state, &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, + audit_net_cb); +} + +static int match_label(struct aa_profile *profile, struct aa_profile *peer, + unsigned int state, u32 request, + struct common_audit_data *sa) +{ + AA_BUG(!profile); + AA_BUG(!peer); + + aad(sa)->target = aa_peer_name(peer); + + if (state) { + state = aa_dfa_match(profile->policy.dfa, state, aa_peer_name(peer)); + if (!state) + aad(sa)->info = "failed peer label match"; + } + return do_perms(profile, state, request, sa); +} + + +/* unix sock creation comes before we know if the socket will be an fs + * socket + * v6 - semantics are handled by mapping in profile load + * v7 - semantics require sock create for tasks creating an fs socket. + */ +static int profile_create_perm(struct aa_profile *profile, int family, + int type, int protocol) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(profile_unconfined(profile)); + + if ((state = PROFILE_MEDIATES_AF(profile, AF_UNIX))) { + DEFINE_AUDIT_UNIX(sa, OP_CREATE, NULL, type, protocol); + + state = match_to_prot(profile, state, type, protocol, + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_CREATE, &sa); + } + + return aa_profile_af_perm(profile, OP_CREATE, family, type, protocol, + NULL); +} + +int aa_unix_create_perm(struct aa_label *label, int family, int type, + int protocol) +{ + struct aa_profile *profile; + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + profile_create_perm(profile, family, type, protocol)); +} + + +static inline int profile_sk_perm(struct aa_profile *profile, int op, + u32 request, struct sock *sk) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + + state = match_to_sk(profile, state, unix_sk(sk), + &aad(&sa)->info); + return do_perms(profile, state, request, &sa); + } + + return aa_profile_af_perm(profile, op, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +int aa_unix_label_sk_perm(struct aa_label *label, int op, u32 request, + struct sock *sk) +{ + struct aa_profile *profile; + + return fn_for_each_confined(label, profile, + profile_sk_perm(profile, op, request, sk)); +} + +static int unix_label_sock_perm(struct aa_label *label, int op, u32 request, + struct socket *sock) +{ + if (unconfined(label)) + return 0; + if (UNIX_FS(sock->sk)) + return unix_fs_perm(op, request, label, unix_sk(sock->sk), 0); + + return aa_unix_label_sk_perm(label, op, request, sock->sk); +} + +/* revaliation, get/set attr */ +int aa_unix_sock_perm(int op, u32 request, struct socket *sock) +{ + return unix_label_sock_perm(aa_current_label(), op, request, sock); +} + +static int profile_bind_perm(struct aa_profile *profile, struct sock *sk, + struct sockaddr *addr, int addrlen) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(addr->sa_family != AF_UNIX); + AA_BUG(profile_unconfined(profile)); + AA_BUG(unix_addr_fs(addr, addrlen)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + /* bind for abstract socket */ + DEFINE_AUDIT_UNIX(sa, OP_BIND, sk, sk->sk_type, + sk->sk_protocol); + aad(&sa)->net.addr = unix_addr(addr); + aad(&sa)->net.addrlen = addrlen; + + state = match_to_local(profile, state, + sk->sk_type, sk->sk_protocol, + unix_addr(addr), addrlen, + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_BIND, &sa); + } + + return aa_profile_af_perm(profile, OP_BIND, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +int aa_unix_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + /* fs bind is handled by mknod */ + if (unconfined(label) || unix_addr_fs(address, addrlen)) + return 0; + + return fn_for_each_confined(label, profile, + profile_bind_perm(profile, sock->sk, address, addrlen)); +} + +int aa_unix_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + /* unix connections are covered by the + * - unix_stream_connect (stream) and unix_may_send hooks (dgram) + * - fs connect is handled by open + */ + return 0; +} + +static int profile_listen_perm(struct aa_profile *profile, struct sock *sk, + int backlog) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + u16 b = cpu_to_be16(backlog); + DEFINE_AUDIT_UNIX(sa, OP_LISTEN, sk, sk->sk_type, + sk->sk_protocol); + + state = match_to_cmd(profile, state, unix_sk(sk), CMD_LISTEN, + &aad(&sa)->info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, + (char *) &b, 2); + if (!state) + aad(&sa)->info = "failed listen backlog match"; + } + return do_perms(profile, state, AA_MAY_LISTEN, &sa); + } + + return aa_profile_af_perm(profile, OP_LISTEN, sk->sk_family, + sk->sk_type, sk->sk_protocol, sk); +} + +int aa_unix_listen_perm(struct socket *sock, int backlog) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_listen_perm(profile, sock->sk, backlog)); +} + + +static inline int profile_accept_perm(struct aa_profile *profile, + struct sock *sk, + struct sock *newsk) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + DEFINE_AUDIT_UNIX(sa, OP_ACCEPT, sk, sk->sk_type, + sk->sk_protocol); + + state = match_to_sk(profile, state, unix_sk(sk), + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_ACCEPT, &sa); + } + + return aa_profile_af_perm(profile, OP_ACCEPT, sk->sk_family, + sk->sk_type, sk->sk_protocol, sk); +} + +/* ability of sock to connect, not peer address binding */ +int aa_unix_accept_perm(struct socket *sock, struct socket *newsock) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_accept_perm(profile, sock->sk, newsock->sk)); +} + + +/* dgram handled by unix_may_sendmsg, right to send on stream done at connect + * could do per msg unix_stream here + */ +/* sendmsg, recvmsg */ +int aa_unix_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size) +{ + return 0; +} + + +static int profile_opt_perm(struct aa_profile *profile, int op, u32 request, + struct sock *sk, int level, int optname) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + u16 b = cpu_to_be16(optname); + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + + state = match_to_cmd(profile, state, unix_sk(sk), CMD_OPT, + &aad(&sa)->info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, + (char *) &b, 2); + if (!state) + aad(&sa)->info = "failed sockopt match"; + } + return do_perms(profile, state, request, &sa); + } + + return aa_profile_af_perm(profile, op, sk->sk_family, + sk->sk_type, sk->sk_protocol, sk); +} + +int aa_unix_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_opt_perm(profile, op, request, sock->sk, + level, optname)); +} + +/* null peer_label is allowed, in which case the peer_sk label is used */ +static int profile_peer_perm(struct aa_profile *profile, int op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label, + struct common_audit_data *sa) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(profile_unconfined(profile)); + AA_BUG(!sk); + AA_BUG(!peer_sk); + AA_BUG(UNIX_FS(peer_sk)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + struct aa_sk_cxt *peer_cxt = SK_CXT(peer_sk); + struct aa_profile *peerp; + struct sockaddr_un *addr = NULL; + int len = 0; + if (unix_sk(peer_sk)->addr) { + addr = unix_sk(peer_sk)->addr->name; + len = unix_sk(peer_sk)->addr->len; + } + state = match_to_peer(profile, state, unix_sk(sk), + addr, len, &aad(sa)->info); + if (!peer_label) + peer_label = peer_cxt->label; + return fn_for_each(peer_label, peerp, + match_label(profile, peerp, state, request, + sa)); + } + + return aa_profile_af_perm(profile, op, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +/** + * + * Requires: lock held on both @sk and @peer_sk + */ +int aa_unix_peer_perm(struct aa_label *label, int op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label) +{ + struct unix_sock *peeru = unix_sk(peer_sk); + struct unix_sock *u = unix_sk(sk); + + AA_BUG(!label); + AA_BUG(!sk); + AA_BUG(!peer_sk); + + if (UNIX_FS(aa_sock(peeru))) + return unix_fs_perm(op, request, label, peeru, 0); + else if (UNIX_FS(aa_sock(u))) + return unix_fs_perm(op, request, label, u, 0); + else { + struct aa_profile *profile; + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + aad(&sa)->net.peer_sk = peer_sk; + + /* TODO: ns!!! */ + if (!net_eq(sock_net(sk), sock_net(peer_sk))) { + ; + } + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + profile_peer_perm(profile, op, request, sk, + peer_sk, peer_label, &sa)); + } +} + + +/* from net/unix/af_unix.c */ +static void unix_state_double_lock(struct sock *sk1, struct sock *sk2) +{ + if (unlikely(sk1 == sk2) || !sk2) { + unix_state_lock(sk1); + return; + } + if (sk1 < sk2) { + unix_state_lock(sk1); + unix_state_lock_nested(sk2); + } else { + unix_state_lock(sk2); + unix_state_lock_nested(sk1); + } +} + +static void unix_state_double_unlock(struct sock *sk1, struct sock *sk2) +{ + if (unlikely(sk1 == sk2) || !sk2) { + unix_state_unlock(sk1); + return; + } + unix_state_unlock(sk1); + unix_state_unlock(sk2); +} + +int aa_unix_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock) +{ + struct sock *peer_sk = NULL; + u32 sk_req = request & ~NET_PEER_MASK; + int error = 0; + + AA_BUG(!label); + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(sock->sk->sk_family != AF_UNIX); + + /* TODO: update sock label with new task label */ + unix_state_lock(sock->sk); + peer_sk = unix_peer(sock->sk); + if (peer_sk) + sock_hold(peer_sk); + if (!unix_connected(sock) && sk_req) { + error = unix_label_sock_perm(label, op, sk_req, sock); + if (!error) { + // update label + } + } + unix_state_unlock(sock->sk); + if (!peer_sk) + return error; + + unix_state_double_lock(sock->sk, peer_sk); + if (UNIX_FS(sock->sk)) { + error = unix_fs_perm(op, request, label, unix_sk(sock->sk), + PATH_SOCK_COND); + } else if (UNIX_FS(peer_sk)) { + error = unix_fs_perm(op, request, label, unix_sk(peer_sk), + PATH_SOCK_COND); + } else { + struct aa_sk_cxt *pcxt = SK_CXT(peer_sk); + if (sk_req) + error = aa_unix_label_sk_perm(label, op, sk_req, + sock->sk); + last_error(error, + xcheck(aa_unix_peer_perm(label, op, + MAY_READ | MAY_WRITE, + sock->sk, peer_sk, NULL), + aa_unix_peer_perm(pcxt->label, op, + MAY_READ | MAY_WRITE, + peer_sk, sock->sk, label))); + } + + unix_state_double_unlock(sock->sk, peer_sk); + sock_put(peer_sk); + + return error; +} --- linux-4.4.0.orig/security/apparmor/apparmorfs.c +++ linux-4.4.0/security/apparmor/apparmorfs.c @@ -18,15 +18,18 @@ #include #include #include +#include #include #include #include +#include #include "include/apparmor.h" #include "include/apparmorfs.h" #include "include/audit.h" #include "include/context.h" #include "include/crypto.h" +#include "include/ipc.h" #include "include/policy.h" #include "include/resource.h" @@ -37,7 +40,7 @@ * * Returns: length of mangled name */ -static int mangle_name(char *name, char *target) +static int mangle_name(const char *name, char *target) { char *t = target; @@ -186,6 +189,147 @@ .llseek = default_llseek, }; +/** + * query_label - queries a label and writes permissions to buf + * @buf: the resulting permissions string is stored here (NOT NULL) + * @buf_len: size of buf + * @query: binary query string to match against the dfa + * @query_len: size of query + * + * The buffers pointed to by buf and query may overlap. The query buffer is + * parsed before buf is written to. + * + * The query should look like "LABEL_NAME\0DFA_STRING" where LABEL_NAME is + * the name of the label, in the current namespace, that is to be queried and + * DFA_STRING is a binary string to match against the label(s)'s DFA. + * + * LABEL_NAME must be NUL terminated. DFA_STRING may contain NUL characters + * but must *not* be NUL terminated. + * + * Returns: number of characters written to buf or -errno on failure + */ +static ssize_t query_label(char *buf, size_t buf_len, + char *query, size_t query_len) +{ + struct aa_profile *profile; + struct aa_label *label; + char *label_name, *match_str; + size_t label_name_len, match_len; + struct aa_perms perms; + unsigned int state = 0; + struct label_it i; + + if (!query_len) + return -EINVAL; + + label_name = query; + label_name_len = strnlen(query, query_len); + if (!label_name_len || label_name_len == query_len) + return -EINVAL; + + /** + * The extra byte is to account for the null byte between the + * profile name and dfa string. profile_name_len is greater + * than zero and less than query_len, so a byte can be safely + * added or subtracted. + */ + match_str = label_name + label_name_len + 1; + match_len = query_len - label_name_len - 1; + + label = aa_label_parse(aa_current_label(), label_name, GFP_KERNEL, + false); + if (IS_ERR(label)) + return PTR_ERR(label); + + aa_perms_all(&perms); + label_for_each_confined(i, label, profile) { + struct aa_perms tmp; + struct aa_dfa *dfa; + if (profile->file.dfa && *match_str == AA_CLASS_FILE) { + dfa = profile->file.dfa; + state = aa_dfa_match_len(dfa, profile->file.start, + match_str + 1, match_len - 1); + } else if (profile->policy.dfa) { + if (!PROFILE_MEDIATES_SAFE(profile, *match_str)) + continue; /* no change to current perms */ + dfa = profile->policy.dfa; + state = aa_dfa_match_len(dfa, profile->policy.start[0], + match_str, match_len); + } + if (state) + aa_compute_perms(dfa, state, &tmp); + else + aa_perms_clear(&tmp); + aa_apply_modes_to_perms(profile, &tmp); + aa_perms_accum_raw(&perms, &tmp); + } + aa_put_label(label); + + return scnprintf(buf, buf_len, + "allow 0x%08x\ndeny 0x%08x\naudit 0x%08x\nquiet 0x%08x\n", + perms.allow, perms.deny, perms.audit, perms.quiet); +} + +#define QUERY_CMD_LABEL "label\0" +#define QUERY_CMD_LABEL_LEN 6 +#define QUERY_CMD_PROFILE "profile\0" +#define QUERY_CMD_PROFILE_LEN 8 + +/** + * aa_write_access - generic permissions query + * @file: pointer to open apparmorfs/access file + * @ubuf: user buffer containing the complete query string (NOT NULL) + * @count: size of ubuf + * @ppos: position in the file (MUST BE ZERO) + * + * Allows for one permission query per open(), write(), and read() sequence. + * The only query currently supported is a label-based query. For this query + * ubuf must begin with "label\0", followed by the profile query specific + * format described in the query_label() function documentation. + * + * Returns: number of bytes written or -errno on failure + */ +static ssize_t aa_write_access(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + char *buf; + ssize_t len; + + if (*ppos) + return -ESPIPE; + + buf = simple_transaction_get(file, ubuf, count); + if (IS_ERR(buf)) + return PTR_ERR(buf); + + if (count > QUERY_CMD_PROFILE_LEN && + !memcmp(buf, QUERY_CMD_PROFILE, QUERY_CMD_PROFILE_LEN)) { + len = query_label(buf, SIMPLE_TRANSACTION_LIMIT, + buf + QUERY_CMD_PROFILE_LEN, + count - QUERY_CMD_PROFILE_LEN); + } else if (count > QUERY_CMD_LABEL_LEN && + !memcmp(buf, QUERY_CMD_LABEL, QUERY_CMD_LABEL_LEN)) { + len = query_label(buf, SIMPLE_TRANSACTION_LIMIT, + buf + QUERY_CMD_LABEL_LEN, + count - QUERY_CMD_LABEL_LEN); + } else + len = -EINVAL; + + if (len < 0) + return len; + + simple_transaction_set(file, len); + + return count; +} + +static const struct file_operations aa_fs_access = { + .write = aa_write_access, + .read = simple_transaction_read, + .release = simple_transaction_release, + .llseek = generic_file_llseek, +}; + static int aa_fs_seq_show(struct seq_file *seq, void *v) { struct aa_fs_entry *fs_file = seq->private; @@ -249,9 +393,10 @@ static int aa_fs_seq_profname_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); seq_printf(seq, "%s\n", profile->base.name); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -272,9 +417,10 @@ static int aa_fs_seq_profmode_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); seq_printf(seq, "%s\n", aa_profile_mode_names[profile->mode]); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -295,14 +441,15 @@ static int aa_fs_seq_profattach_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); if (profile->attach) seq_printf(seq, "%s\n", profile->attach); else if (profile->xmatch) seq_puts(seq, "\n"); else seq_printf(seq, "%s\n", profile->base.name); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -323,7 +470,8 @@ static int aa_fs_seq_hash_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); unsigned int i, size = aa_hash_size(); if (profile->hash) { @@ -349,6 +497,11 @@ }; /** fns to setup dynamic per profile/namespace files **/ + +/** + * + * Requires: @profile->ns->lock held + */ void __aa_fs_profile_rmdir(struct aa_profile *profile) { struct aa_profile *child; @@ -356,6 +509,7 @@ if (!profile) return; + AA_BUG(!mutex_is_locked(&profiles_ns(profile)->lock)); list_for_each_entry(child, &profile->base.profiles, base.list) __aa_fs_profile_rmdir(child); @@ -372,13 +526,23 @@ } } +/** + * + * Requires: @old->ns->lock held + */ void __aa_fs_profile_migrate_dents(struct aa_profile *old, struct aa_profile *new) { int i; + AA_BUG(!old); + AA_BUG(!new); + AA_BUG(!mutex_is_locked(&profiles_ns(old)->lock)); + for (i = 0; i < AAFS_PROF_SIZEOF; i++) { new->dents[i] = old->dents[i]; + if (new->dents[i]) + new->dents[i]->d_inode->i_mtime = CURRENT_TIME; old->dents[i] = NULL; } } @@ -387,7 +551,7 @@ struct aa_profile *profile, const struct file_operations *fops) { - struct aa_replacedby *r = aa_get_replacedby(profile->replacedby); + struct aa_replacedby *r = aa_get_replacedby(profile->label.replacedby); struct dentry *dent; dent = securityfs_create_file(name, S_IFREG | 0444, dir, r, fops); @@ -397,13 +561,19 @@ return dent; } -/* requires lock be held */ +/** + * + * Requires: @profile->ns->lock held + */ int __aa_fs_profile_mkdir(struct aa_profile *profile, struct dentry *parent) { struct aa_profile *child; struct dentry *dent = NULL, *dir; int error; + AA_BUG(!profile); + AA_BUG(!mutex_is_locked(&profiles_ns(profile)->lock)); + if (!parent) { struct aa_profile *p; p = aa_deref_parent(profile); @@ -474,6 +644,10 @@ return error; } +/** + * + * Requires: @ns->lock held + */ void __aa_fs_namespace_rmdir(struct aa_namespace *ns) { struct aa_namespace *sub; @@ -482,6 +656,7 @@ if (!ns) return; + AA_BUG(!mutex_is_locked(&ns->lock)); list_for_each_entry(child, &ns->base.profiles, base.list) __aa_fs_profile_rmdir(child); @@ -498,6 +673,10 @@ } } +/** + * + * Requires: @ns->lock held + */ int __aa_fs_namespace_mkdir(struct aa_namespace *ns, struct dentry *parent, const char *name) { @@ -506,6 +685,10 @@ struct dentry *dent, *dir; int error; + AA_BUG(!ns); + AA_BUG(!parent); + AA_BUG(!mutex_is_locked(&ns->lock)); + if (!name) name = ns->base.name; @@ -571,6 +754,10 @@ { struct aa_namespace *parent, *next; + AA_BUG(!root); + AA_BUG(!ns); + AA_BUG(ns != root && !mutex_is_locked(&ns->parent->lock)); + /* is next namespace a child */ if (!list_empty(&ns->sub_ns)) { next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list); @@ -597,14 +784,17 @@ /** * __first_profile - find the first profile in a namespace * @root: namespace that is root of profiles being displayed (NOT NULL) - * @ns: namespace to start in (NOT NULL) + * @ns: namespace to start in (MAY BE NULL) * * Returns: unrefcounted profile or NULL if no profile - * Requires: profile->ns.lock to be held + * Requires: ns.lock to be held */ static struct aa_profile *__first_profile(struct aa_namespace *root, struct aa_namespace *ns) { + AA_BUG(!root); + AA_BUG(ns && !mutex_is_locked(&ns->lock)); + for (; ns; ns = __next_namespace(root, ns)) { if (!list_empty(&ns->base.profiles)) return list_first_entry(&ns->base.profiles, @@ -627,6 +817,8 @@ struct aa_profile *parent; struct aa_namespace *ns = p->ns; + AA_BUG(!mutex_is_locked(&profiles_ns(p)->lock)); + /* is next profile a child */ if (!list_empty(&p->base.profiles)) return list_first_entry(&p->base.profiles, typeof(*p), @@ -682,7 +874,7 @@ static void *p_start(struct seq_file *f, loff_t *pos) { struct aa_profile *profile = NULL; - struct aa_namespace *root = aa_current_profile()->ns; + struct aa_namespace *root = labels_ns(aa_current_label()); loff_t l = *pos; f->private = aa_get_namespace(root); @@ -789,6 +981,16 @@ { } }; +static struct aa_fs_entry aa_fs_entry_ptrace[] = { + AA_FS_FILE_STRING("mask", "read trace"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_signal[] = { + AA_FS_FILE_STRING("mask", AA_FS_SIG_MASK), + { } +}; + static struct aa_fs_entry aa_fs_entry_domain[] = { AA_FS_FILE_BOOLEAN("change_hat", 1), AA_FS_FILE_BOOLEAN("change_hatv", 1), @@ -797,18 +999,48 @@ { } }; +static struct aa_fs_entry aa_fs_entry_versions[] = { + AA_FS_FILE_BOOLEAN("v5", 1), + AA_FS_FILE_BOOLEAN("v6", 1), + AA_FS_FILE_BOOLEAN("v7", 1), + { } +}; + static struct aa_fs_entry aa_fs_entry_policy[] = { - AA_FS_FILE_BOOLEAN("set_load", 1), - {} + AA_FS_DIR("versions", aa_fs_entry_versions), + AA_FS_FILE_BOOLEAN("set_load", 1), + { } +}; + +static struct aa_fs_entry aa_fs_entry_mount[] = { + AA_FS_FILE_STRING("mask", "mount umount"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_namespaces[] = { + AA_FS_FILE_BOOLEAN("profile", 1), + AA_FS_FILE_BOOLEAN("pivot_root", 1), + { } +}; + +static struct aa_fs_entry aa_fs_entry_dbus[] = { + AA_FS_FILE_STRING("mask", "acquire send receive"), + { } }; static struct aa_fs_entry aa_fs_entry_features[] = { AA_FS_DIR("policy", aa_fs_entry_policy), AA_FS_DIR("domain", aa_fs_entry_domain), AA_FS_DIR("file", aa_fs_entry_file), + AA_FS_DIR("network", aa_fs_entry_network), + AA_FS_DIR("mount", aa_fs_entry_mount), + AA_FS_DIR("namespaces", aa_fs_entry_namespaces), AA_FS_FILE_U64("capability", VFS_CAP_FLAGS_MASK), AA_FS_DIR("rlimit", aa_fs_entry_rlimit), AA_FS_DIR("caps", aa_fs_entry_caps), + AA_FS_DIR("ptrace", aa_fs_entry_ptrace), + AA_FS_DIR("signal", aa_fs_entry_signal), + AA_FS_DIR("dbus", aa_fs_entry_dbus), { } }; @@ -816,6 +1048,7 @@ AA_FS_FILE_FOPS(".load", 0640, &aa_fs_profile_load), AA_FS_FILE_FOPS(".replace", 0640, &aa_fs_profile_replace), AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove), + AA_FS_FILE_FOPS(".access", 0666, &aa_fs_access), AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops), AA_FS_DIR("features", aa_fs_entry_features), { } @@ -925,6 +1158,51 @@ aafs_remove_dir(&aa_fs_entry); } + +#define NULL_FILE_NAME ".null" +struct path aa_null; + +static int aa_mk_null_file(struct dentry *parent) +{ + struct vfsmount *mount = NULL; + struct dentry *dentry; + struct inode *inode; + int count = 0; + int error = simple_pin_fs(parent->d_sb->s_type, &mount, &count); + if (error) + return error; + + mutex_lock(&parent->d_inode->i_mutex); + dentry = lookup_one_len(NULL_FILE_NAME, parent, strlen(NULL_FILE_NAME)); + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto out; + } + inode = new_inode(parent->d_inode->i_sb); + if (!inode) { + error = -ENOMEM; + goto out1; + } + + inode->i_ino = get_next_ino(); + inode->i_mode = S_IFCHR | S_IRUGO | S_IWUGO; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + init_special_inode(inode, S_IFCHR | S_IRUGO | S_IWUGO, + MKDEV(MEM_MAJOR, 3)); + d_instantiate(dentry, inode); + aa_null.dentry = dget(dentry); + aa_null.mnt = mntget(mount); + + error = 0; + +out1: + dput(dentry); +out: + mutex_unlock(&parent->d_inode->i_mutex); + simple_release_fs(&mount, &count); + return error; +} + /** * aa_create_aafs - create the apparmor security filesystem * @@ -949,12 +1227,21 @@ if (error) goto error; + mutex_lock(&root_ns->lock); error = __aa_fs_namespace_mkdir(root_ns, aa_fs_entry.dentry, "policy"); + mutex_unlock(&root_ns->lock); + if (error) goto error; - /* TODO: add support for apparmorfs_null and apparmorfs_mnt */ + error = aa_mk_null_file(aa_fs_entry.dentry); + if (error) + goto error; + + if (!aa_g_unconfined_init) { + /* TODO: add default profile to apparmorfs */ + } /* Report that AppArmor fs is enabled */ aa_info_message("AppArmor Filesystem Enabled"); --- linux-4.4.0.orig/security/apparmor/audit.c +++ linux-4.4.0/security/apparmor/audit.c @@ -39,10 +39,16 @@ "getattr", "open", + "file_receive", "file_perm", "file_lock", "file_mmap", "file_mprotect", + "file_inherit", + + "pivotroot", + "mount", + "umount", "create", "post_create", @@ -59,6 +65,7 @@ "socket_shutdown", "ptrace", + "signal", "exec", "change_hat", @@ -114,34 +121,41 @@ if (aa_g_audit_header) { audit_log_format(ab, "apparmor="); - audit_log_string(ab, aa_audit_type[sa->aad->type]); + audit_log_string(ab, aa_audit_type[aad(sa)->type]); } - if (sa->aad->op) { + if (aad(sa)->op) { audit_log_format(ab, " operation="); - audit_log_string(ab, op_table[sa->aad->op]); + audit_log_string(ab, op_table[aad(sa)->op]); } - if (sa->aad->info) { + if (aad(sa)->info) { audit_log_format(ab, " info="); - audit_log_string(ab, sa->aad->info); - if (sa->aad->error) - audit_log_format(ab, " error=%d", sa->aad->error); - } - - if (sa->aad->profile) { - struct aa_profile *profile = sa->aad->profile; - if (profile->ns != root_ns) { - audit_log_format(ab, " namespace="); - audit_log_untrustedstring(ab, profile->ns->base.hname); + audit_log_string(ab, aad(sa)->info); + if (aad(sa)->error) + audit_log_format(ab, " error=%d", aad(sa)->error); + } + + if (aad(sa)->label) { + struct aa_label *label = aad(sa)->label; + if (label_isprofile(label)) { + struct aa_profile *profile = labels_profile(label); + if (profile->ns != root_ns) { + audit_log_format(ab, " namespace="); + audit_log_untrustedstring(ab, + profile->ns->base.hname); + } + audit_log_format(ab, " profile="); + audit_log_untrustedstring(ab, profile->base.hname); + } else { + audit_log_format(ab, " label="); + aa_label_audit(ab, root_ns, label, false, GFP_ATOMIC); } - audit_log_format(ab, " profile="); - audit_log_untrustedstring(ab, profile->base.hname); } - if (sa->aad->name) { + if (aad(sa)->name) { audit_log_format(ab, " name="); - audit_log_untrustedstring(ab, sa->aad->name); + audit_log_untrustedstring(ab, aad(sa)->name); } } @@ -153,7 +167,12 @@ void aa_audit_msg(int type, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)) { - sa->aad->type = type; + /* TODO: redirect messages for profile to the correct ns + * rejects from subns should goto the audit associated + * with it, and audits from parent ns should got ns + * associated with it + */ + aad(sa)->type = type; common_lsm_audit(sa, audit_pre, cb); } @@ -161,7 +180,6 @@ * aa_audit - Log a profile based audit event to the audit subsystem * @type: audit type for the message * @profile: profile to check against (NOT NULL) - * @gfp: allocation flags to use * @sa: audit event (NOT NULL) * @cb: optional callback fn for type specific fields (MAYBE NULL) * @@ -169,14 +187,13 @@ * * Returns: error on failure */ -int aa_audit(int type, struct aa_profile *profile, gfp_t gfp, - struct common_audit_data *sa, +int aa_audit(int type, struct aa_profile *profile, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)) { BUG_ON(!profile); if (type == AUDIT_APPARMOR_AUTO) { - if (likely(!sa->aad->error)) { + if (likely(!aad(sa)->error)) { if (AUDIT_MODE(profile) != AUDIT_ALL) return 0; type = AUDIT_APPARMOR_AUDIT; @@ -188,22 +205,22 @@ if (AUDIT_MODE(profile) == AUDIT_QUIET || (type == AUDIT_APPARMOR_DENIED && AUDIT_MODE(profile) == AUDIT_QUIET)) - return sa->aad->error; + return aad(sa)->error; if (KILL_MODE(profile) && type == AUDIT_APPARMOR_DENIED) type = AUDIT_APPARMOR_KILL; - if (!unconfined(profile)) - sa->aad->profile = profile; + aad(sa)->label = &profile->label; aa_audit_msg(type, sa, cb); - if (sa->aad->type == AUDIT_APPARMOR_KILL) + if (aad(sa)->type == AUDIT_APPARMOR_KILL) (void)send_sig_info(SIGKILL, NULL, - sa->u.tsk ? sa->u.tsk : current); + sa->type == LSM_AUDIT_DATA_TASK && sa->u.tsk ? + sa->u.tsk : current); - if (sa->aad->type == AUDIT_APPARMOR_ALLOWED) - return complain_error(sa->aad->error); + if (aad(sa)->type == AUDIT_APPARMOR_ALLOWED) + return complain_error(aad(sa)->error); - return sa->aad->error; + return aad(sa)->error; } --- linux-4.4.0.orig/security/apparmor/capability.c +++ linux-4.4.0/security/apparmor/capability.c @@ -53,6 +53,7 @@ /** * audit_caps - audit a capability + * @sa: audit data * @profile: profile being tested for confinement (NOT NULL) * @cap: capability tested * @error: error code returned by test @@ -62,17 +63,12 @@ * * Returns: 0 or sa->error on success, error code on failure */ -static int audit_caps(struct aa_profile *profile, int cap, int error) +static int audit_caps(struct common_audit_data *sa, struct aa_profile *profile, + int cap, int error) { struct audit_cache *ent; int type = AUDIT_APPARMOR_AUTO; - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_CAP; - sa.aad = &aad; - sa.u.cap = cap; - sa.aad->op = OP_CAPABLE; - sa.aad->error = error; + aad(sa)->error = error; if (likely(!error)) { /* test if auditing is being forced */ @@ -104,24 +100,40 @@ } put_cpu_var(audit_cache); - return aa_audit(type, profile, GFP_ATOMIC, &sa, audit_cb); + return aa_audit(type, profile, sa, audit_cb); } /** * profile_capable - test if profile allows use of capability @cap * @profile: profile being enforced (NOT NULL, NOT unconfined) * @cap: capability to test if allowed + * @sa: audit data (MAY BE NULL indicating no auditing) * * Returns: 0 if allowed else -EPERM */ -static int profile_capable(struct aa_profile *profile, int cap) +static int profile_capable(struct aa_profile *profile, int cap, + struct common_audit_data *sa) { - return cap_raised(profile->caps.allow, cap) ? 0 : -EPERM; + int error; + + if (cap_raised(profile->caps.allow, cap) && + !cap_raised(profile->caps.denied, cap)) + error = 0; + else + error = -EPERM; + + if (!sa) { + if (COMPLAIN_MODE(profile)) + return complain_error(error); + return error; + } + + return audit_caps(sa, profile, cap, error); } /** * aa_capable - test permission to use capability - * @profile: profile being tested against (NOT NULL) + * @label: label being tested for capability (NOT NULL) * @cap: capability to be tested * @audit: whether an audit record should be generated * @@ -129,15 +141,15 @@ * * Returns: 0 on success, or else an error code. */ -int aa_capable(struct aa_profile *profile, int cap, int audit) +int aa_capable(struct aa_label *label, int cap, int audit) { - int error = profile_capable(profile, cap); + struct aa_profile *profile; + int error = 0; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_CAP, OP_CAPABLE); + sa.u.cap = cap; - if (!audit) { - if (COMPLAIN_MODE(profile)) - return complain_error(error); - return error; - } + error = fn_for_each_confined(label, profile, + profile_capable(profile, cap, audit ? &sa : NULL)); - return audit_caps(profile, cap, error); + return error; } --- linux-4.4.0.orig/security/apparmor/context.c +++ linux-4.4.0/security/apparmor/context.c @@ -14,9 +14,9 @@ * * * AppArmor sets confinement on every task, via the the aa_task_cxt and - * the aa_task_cxt.profile, both of which are required and are not allowed + * the aa_task_cxt.label, both of which are required and are not allowed * to be NULL. The aa_task_cxt is not reference counted and is unique - * to each cred (which is reference count). The profile pointed to by + * to each cred (which is reference count). The label pointed to by * the task_cxt is reference counted. * * TODO @@ -47,9 +47,9 @@ void aa_free_task_context(struct aa_task_cxt *cxt) { if (cxt) { - aa_put_profile(cxt->profile); - aa_put_profile(cxt->previous); - aa_put_profile(cxt->onexec); + aa_put_label(cxt->label); + aa_put_label(cxt->previous); + aa_put_label(cxt->onexec); kzfree(cxt); } @@ -63,41 +63,41 @@ void aa_dup_task_context(struct aa_task_cxt *new, const struct aa_task_cxt *old) { *new = *old; - aa_get_profile(new->profile); - aa_get_profile(new->previous); - aa_get_profile(new->onexec); + aa_get_label(new->label); + aa_get_label(new->previous); + aa_get_label(new->onexec); } /** - * aa_get_task_profile - Get another task's profile + * aa_get_task_label - Get another task's label * @task: task to query (NOT NULL) * - * Returns: counted reference to @task's profile + * Returns: counted reference to @task's label */ -struct aa_profile *aa_get_task_profile(struct task_struct *task) +struct aa_label *aa_get_task_label(struct task_struct *task) { - struct aa_profile *p; + struct aa_label *p; rcu_read_lock(); - p = aa_get_profile(__aa_task_profile(task)); + p = aa_get_newest_label(__aa_task_raw_label(task)); rcu_read_unlock(); return p; } /** - * aa_replace_current_profile - replace the current tasks profiles - * @profile: new profile (NOT NULL) + * aa_replace_current_label - replace the current tasks label + * @label: new label (NOT NULL) * * Returns: 0 or error on failure */ -int aa_replace_current_profile(struct aa_profile *profile) +int aa_replace_current_label(struct aa_label *label) { struct aa_task_cxt *cxt = current_cxt(); struct cred *new; - BUG_ON(!profile); + BUG_ON(!label); - if (cxt->profile == profile) + if (cxt->label == label) return 0; new = prepare_creds(); @@ -105,19 +105,15 @@ return -ENOMEM; cxt = cred_cxt(new); - if (unconfined(profile) || (cxt->profile->ns != profile->ns)) - /* if switching to unconfined or a different profile namespace + if (unconfined(label) || (labels_ns(cxt->label) != labels_ns(label))) + /* if switching to unconfined or a different label namespace * clear out context state */ aa_clear_task_cxt_trans(cxt); - /* be careful switching cxt->profile, when racing replacement it - * is possible that cxt->profile->replacedby->profile is the reference - * keeping @profile valid, so make sure to get its reference before - * dropping the reference on cxt->profile */ - aa_get_profile(profile); - aa_put_profile(cxt->profile); - cxt->profile = profile; + aa_get_label(label); + aa_put_label(cxt->label); + cxt->label = label; commit_creds(new); return 0; @@ -125,11 +121,11 @@ /** * aa_set_current_onexec - set the tasks change_profile to happen onexec - * @profile: system profile to set at exec (MAYBE NULL to clear value) + * @label: system label to set at exec (MAYBE NULL to clear value) * * Returns: 0 or error on failure */ -int aa_set_current_onexec(struct aa_profile *profile) +int aa_set_current_onexec(struct aa_label *label) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); @@ -137,9 +133,9 @@ return -ENOMEM; cxt = cred_cxt(new); - aa_get_profile(profile); - aa_put_profile(cxt->onexec); - cxt->onexec = profile; + aa_get_label(label); + aa_put_label(cxt->onexec); + cxt->onexec = label; commit_creds(new); return 0; @@ -147,7 +143,7 @@ /** * aa_set_current_hat - set the current tasks hat - * @profile: profile to set as the current hat (NOT NULL) + * @label: label to set as the current hat (NOT NULL) * @token: token value that must be specified to change from the hat * * Do switch of tasks hat. If the task is currently in a hat @@ -155,29 +151,29 @@ * * Returns: 0 or error on failure */ -int aa_set_current_hat(struct aa_profile *profile, u64 token) +int aa_set_current_hat(struct aa_label *label, u64 token) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); if (!new) return -ENOMEM; - BUG_ON(!profile); + BUG_ON(!label); cxt = cred_cxt(new); if (!cxt->previous) { /* transfer refcount */ - cxt->previous = cxt->profile; + cxt->previous = cxt->label; cxt->token = token; } else if (cxt->token == token) { - aa_put_profile(cxt->profile); + aa_put_label(cxt->label); } else { /* previous_profile && cxt->token != token */ abort_creds(new); return -EACCES; } - cxt->profile = aa_get_newest_profile(profile); + cxt->label = aa_get_newest_label(label); /* clear exec on switching context */ - aa_put_profile(cxt->onexec); + aa_put_label(cxt->onexec); cxt->onexec = NULL; commit_creds(new); @@ -185,15 +181,15 @@ } /** - * aa_restore_previous_profile - exit from hat context restoring the profile + * aa_restore_previous_label - exit from hat context restoring previous label * @token: the token that must be matched to exit hat context * - * Attempt to return out of a hat to the previous profile. The token + * Attempt to return out of a hat to the previous label. The token * must match the stored token value. * * Returns: 0 or error of failure */ -int aa_restore_previous_profile(u64 token) +int aa_restore_previous_label(u64 token) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); @@ -205,15 +201,15 @@ abort_creds(new); return -EACCES; } - /* ignore restores when there is no saved profile */ + /* ignore restores when there is no saved label */ if (!cxt->previous) { abort_creds(new); return 0; } - aa_put_profile(cxt->profile); - cxt->profile = aa_get_newest_profile(cxt->previous); - BUG_ON(!cxt->profile); + aa_put_label(cxt->label); + cxt->label = aa_get_newest_label(cxt->previous); + BUG_ON(!cxt->label); /* clear exec && prev information when restoring to previous context */ aa_clear_task_cxt_trans(cxt); --- linux-4.4.0.orig/security/apparmor/domain.c +++ linux-4.4.0/security/apparmor/domain.c @@ -51,34 +51,38 @@ /** * may_change_ptraced_domain - check if can change profile on ptraced task * @to_profile: profile to change to (NOT NULL) + * @info: message if there is an error * * Check if current is ptraced and if so if the tracing task is allowed * to trace the new domain * * Returns: %0 or error if change not allowed */ -static int may_change_ptraced_domain(struct aa_profile *to_profile) +static int may_change_ptraced_domain(struct aa_profile *to_profile, + const char **info) { struct task_struct *tracer; - struct aa_profile *tracerp = NULL; + struct aa_label *tracerl = NULL; int error = 0; rcu_read_lock(); tracer = ptrace_parent(current); if (tracer) /* released below */ - tracerp = aa_get_task_profile(tracer); + tracerl = aa_get_task_label(tracer); /* not ptraced */ - if (!tracer || unconfined(tracerp)) + if (!tracer || unconfined(tracerl)) goto out; - error = aa_may_ptrace(tracerp, to_profile, PTRACE_MODE_ATTACH); + error = aa_may_ptrace(tracerl, &to_profile->label, PTRACE_MODE_ATTACH); out: rcu_read_unlock(); - aa_put_profile(tracerp); + aa_put_label(tracerl); + if (error) + *info = "ptrace prevents transition"; return error; } @@ -101,7 +105,7 @@ struct path_cond cond = { }; unsigned int state; - if (unconfined(profile)) { + if (profile_unconfined(profile)) { perms.allow = AA_MAY_CHANGE_PROFILE | AA_MAY_ONEXEC; perms.audit = perms.quiet = perms.kill = 0; return perms; @@ -143,7 +147,7 @@ struct aa_profile *profile, *candidate = NULL; list_for_each_entry_rcu(profile, head, base.list) { - if (profile->flags & PFLAG_NULL) + if (profile->label.flags & FLAG_NULL) continue; if (profile->xmatch && profile->xmatch_len > len) { unsigned int state = aa_dfa_match(profile->xmatch, @@ -236,7 +240,7 @@ * * Returns: refcounted profile, or NULL on failure (MAYBE NULL) */ -static struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) { struct aa_profile *new_profile = NULL; struct aa_namespace *ns = profile->ns; @@ -337,6 +341,7 @@ int apparmor_bprm_set_creds(struct linux_binprm *bprm) { struct aa_task_cxt *cxt; + struct aa_label *label; struct aa_profile *profile, *new_profile = NULL; struct aa_namespace *ns; char *buffer = NULL; @@ -355,7 +360,8 @@ cxt = cred_cxt(bprm->cred); BUG_ON(!cxt); - profile = aa_get_newest_profile(cxt->profile); + label = aa_get_newest_label(cxt->label); + profile = labels_profile(label); /* * get the namespace from the replacement profile as replacement * can change the namespace @@ -364,11 +370,12 @@ state = profile->file.start; /* buffer freed below, name is pointer into buffer */ - error = aa_path_name(&bprm->file->f_path, profile->path_flags, &buffer, - &name, &info); + get_buffers(buffer); + error = aa_path_name(&bprm->file->f_path, profile->path_flags, buffer, + &name, &info, profile->disconnected); if (error) { - if (unconfined(profile) || - (profile->flags & PFLAG_IX_ON_NAME_ERROR)) + if (profile_unconfined(profile) || + (profile->label.flags & FLAG_IX_ON_NAME_ERROR)) error = 0; name = bprm->filename; goto audit; @@ -377,11 +384,11 @@ /* Test for onexec first as onexec directives override other * x transitions. */ - if (unconfined(profile)) { + if (profile_unconfined(profile)) { /* unconfined task */ if (cxt->onexec) /* change_profile on exec already been granted */ - new_profile = aa_get_profile(cxt->onexec); + new_profile = labels_profile(aa_get_label(cxt->onexec)); else new_profile = find_attach(ns, &ns->base.profiles, name); if (!new_profile) @@ -407,13 +414,13 @@ * exec\0change_profile */ state = aa_dfa_null_transition(profile->file.dfa, state); - cp = change_profile_perms(profile, cxt->onexec->ns, - cxt->onexec->base.name, + cp = change_profile_perms(profile, labels_profile(cxt->onexec)->ns, + labels_profile(cxt->onexec)->base.name, AA_MAY_ONEXEC, state); if (!(cp.allow & AA_MAY_ONEXEC)) goto audit; - new_profile = aa_get_newest_profile(cxt->onexec); + new_profile = labels_profile(aa_get_newest_label(cxt->onexec)); goto apply; } @@ -430,17 +437,19 @@ new_profile = aa_get_profile(profile); goto x_clear; } else if (perms.xindex & AA_X_UNCONFINED) { - new_profile = aa_get_newest_profile(ns->unconfined); + new_profile = labels_profile(aa_get_newest_label(&ns->unconfined->label)); info = "ux fallback"; } else { - error = -ENOENT; + error = -EACCES; info = "profile not found"; /* remove MAY_EXEC to audit as failure */ perms.allow &= ~MAY_EXEC; } } } else if (COMPLAIN_MODE(profile)) { - /* no exec permission - are we in learning mode */ + /* no exec permission - learning mode. break rcu lock */ + put_buffers(buffer); + name = NULL; new_profile = aa_new_null_profile(profile, 0); if (!new_profile) { error = -ENOMEM; @@ -450,6 +459,12 @@ target = new_profile->base.hname; } perms.xindex |= AA_X_UNSAFE; + /* re-aquire buffer and rcu readlock and re-get name */ + get_buffers(buffer); + if (!error) + error = aa_path_name(&bprm->file->f_path, + profile->path_flags, buffer, + &name, &info, profile->disconnected); } else /* fail exec */ error = -EACCES; @@ -473,7 +488,7 @@ } if (bprm->unsafe & (LSM_UNSAFE_PTRACE | LSM_UNSAFE_PTRACE_CAP)) { - error = may_change_ptraced_domain(new_profile); + error = may_change_ptraced_domain(new_profile, &info); if (error) { aa_put_profile(new_profile); goto audit; @@ -503,20 +518,20 @@ bprm->per_clear |= PER_CLEAR_ON_SETID; x_clear: - aa_put_profile(cxt->profile); + aa_put_label(cxt->label); /* transfer new profile reference will be released when cxt is freed */ - cxt->profile = new_profile; + cxt->label = &new_profile->label; /* clear out all temporary/transitional state from the context */ aa_clear_task_cxt_trans(cxt); audit: - error = aa_audit_file(profile, &perms, GFP_KERNEL, OP_EXEC, MAY_EXEC, - name, target, cond.uid, info, error); + error = aa_audit_file(profile, &perms, OP_EXEC, MAY_EXEC, name, target, + cond.uid, info, error); cleanup: - aa_put_profile(profile); - kfree(buffer); + aa_put_label(label); + put_buffers(buffer); return error; } @@ -538,36 +553,6 @@ return 0; } -/** - * apparmor_bprm_committing_creds - do task cleanup on committing new creds - * @bprm: binprm for the exec (NOT NULL) - */ -void apparmor_bprm_committing_creds(struct linux_binprm *bprm) -{ - struct aa_profile *profile = __aa_current_profile(); - struct aa_task_cxt *new_cxt = cred_cxt(bprm->cred); - - /* bail out if unconfined or not changing profile */ - if ((new_cxt->profile == profile) || - (unconfined(new_cxt->profile))) - return; - - current->pdeath_signal = 0; - - /* reset soft limits and set hard limits for the new profile */ - __aa_transition_rlimits(profile, new_cxt->profile); -} - -/** - * apparmor_bprm_commited_cred - do cleanup after new creds committed - * @bprm: binprm for the exec (NOT NULL) - */ -void apparmor_bprm_committed_creds(struct linux_binprm *bprm) -{ - /* TODO: cleanup signals - ipc mediation */ - return; -} - /* * Functions for self directed profile change */ @@ -605,7 +590,8 @@ { const struct cred *cred; struct aa_task_cxt *cxt; - struct aa_profile *profile, *previous_profile, *hat = NULL; + struct aa_label *label, *previous; + struct aa_profile *profile, *hat = NULL; char *name = NULL; int i; struct file_perms perms = {}; @@ -623,10 +609,12 @@ /* released below */ cred = get_current_cred(); cxt = cred_cxt(cred); - profile = aa_cred_profile(cred); - previous_profile = cxt->previous; + label = aa_get_newest_cred_label(cred); + previous = cxt->previous; + + profile = labels_profile(label); - if (unconfined(profile)) { + if (unconfined(label)) { info = "unconfined"; error = -EPERM; goto audit; @@ -638,7 +626,7 @@ if (PROFILE_IS_HAT(profile)) root = aa_get_profile_rcu(&profile->parent); else - root = aa_get_profile(profile); + root = aa_get_profile(labels_profile(label)); /* find first matching hat */ for (i = 0; i < count && !hat; i++) @@ -684,15 +672,14 @@ } } - error = may_change_ptraced_domain(hat); + error = may_change_ptraced_domain(hat, &info); if (error) { - info = "ptraced"; error = -EPERM; goto audit; } if (!permtest) { - error = aa_set_current_hat(hat, token); + error = aa_set_current_hat(&hat->label, token); if (error == -EACCES) /* kill task in case of brute force attacks */ perms.kill = AA_MAY_CHANGEHAT; @@ -700,12 +687,12 @@ /* reset error for learning of new hats */ error = -ENOENT; } - } else if (previous_profile) { - /* Return to saved profile. Kill task if restore fails + } else if (previous) { + /* Return to saved label. Kill task if restore fails * to avoid brute force attacks */ - target = previous_profile->base.hname; - error = aa_restore_previous_profile(token); + target = previous->hname; + error = aa_restore_previous_label(token); perms.kill = AA_MAY_CHANGEHAT; } else /* ignore restores when there is no saved profile */ @@ -713,12 +700,13 @@ audit: if (!permtest) - error = aa_audit_file(profile, &perms, GFP_KERNEL, - OP_CHANGE_HAT, AA_MAY_CHANGEHAT, NULL, - target, GLOBAL_ROOT_UID, info, error); + error = aa_audit_file(profile, &perms, OP_CHANGE_HAT, + AA_MAY_CHANGEHAT, NULL, target, + GLOBAL_ROOT_UID, info, error); out: aa_put_profile(hat); + aa_put_label(label); kfree(name); put_cred(cred); @@ -744,6 +732,7 @@ bool permtest) { const struct cred *cred; + struct aa_label *label; struct aa_profile *profile, *target = NULL; struct aa_namespace *ns = NULL; struct file_perms perms = {}; @@ -763,7 +752,8 @@ } cred = get_current_cred(); - profile = aa_cred_profile(cred); + label = aa_get_newest_cred_label(cred); + profile = labels_profile(label); /* * Fail explicitly requested domain transitions if no_new_privs @@ -772,7 +762,8 @@ * no_new_privs is set because this aways results in a reduction * of permissions. */ - if (task_no_new_privs(current) && !unconfined(profile)) { + if (task_no_new_privs(current) && !unconfined(label)) { + aa_put_label(label); put_cred(cred); return -EPERM; } @@ -793,7 +784,7 @@ /* if the name was not specified, use the name of the current profile */ if (!hname) { - if (unconfined(profile)) + if (profile_unconfined(profile)) hname = ns->unconfined->base.hname; else hname = profile->base.hname; @@ -823,27 +814,26 @@ } /* check if tracing task is allowed to trace target domain */ - error = may_change_ptraced_domain(target); - if (error) { - info = "ptrace prevents transition"; + error = may_change_ptraced_domain(target, &info); + if (error) goto audit; - } if (permtest) goto audit; if (onexec) - error = aa_set_current_onexec(target); + error = aa_set_current_onexec(&target->label); else - error = aa_replace_current_profile(target); + error = aa_replace_current_label(&target->label); audit: if (!permtest) - error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request, - name, hname, GLOBAL_ROOT_UID, info, error); + error = aa_audit_file(profile, &perms, op, request, name, + hname, GLOBAL_ROOT_UID, info, error); aa_put_namespace(ns); aa_put_profile(target); + aa_put_label(label); put_cred(cred); return error; --- linux-4.4.0.orig/security/apparmor/file.c +++ linux-4.4.0/security/apparmor/file.c @@ -12,8 +12,14 @@ * License. */ +#include +#include +#include + +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/audit.h" +#include "include/context.h" #include "include/file.h" #include "include/match.h" #include "include/path.h" @@ -22,6 +28,17 @@ struct file_perms nullperms; +static u32 map_mask_to_chr_mask(u32 mask) +{ + u32 m = mask & PERMS_CHRS_MASK; + if (mask & AA_MAY_GETATTR) + m |= MAY_READ; + if (mask & (AA_MAY_SETATTR | AA_MAY_CHMOD | AA_MAY_CHOWN)) + m |= MAY_WRITE; + + return m; +} + /** * audit_file_mask - convert mask to permission string * @buffer: buffer to write string to (NOT NULL) @@ -31,29 +48,7 @@ { char str[10]; - char *m = str; - - if (mask & AA_EXEC_MMAP) - *m++ = 'm'; - if (mask & (MAY_READ | AA_MAY_META_READ)) - *m++ = 'r'; - if (mask & (MAY_WRITE | AA_MAY_META_WRITE | AA_MAY_CHMOD | - AA_MAY_CHOWN)) - *m++ = 'w'; - else if (mask & MAY_APPEND) - *m++ = 'a'; - if (mask & AA_MAY_CREATE) - *m++ = 'c'; - if (mask & AA_MAY_DELETE) - *m++ = 'd'; - if (mask & AA_MAY_LINK) - *m++ = 'l'; - if (mask & AA_MAY_LOCK) - *m++ = 'k'; - if (mask & MAY_EXEC) - *m++ = 'x'; - *m = '\0'; - + aa_perm_mask_to_str(str, aa_file_perm_chrs, map_mask_to_chr_mask(mask)); audit_log_string(ab, str); } @@ -67,24 +62,24 @@ struct common_audit_data *sa = va; kuid_t fsuid = current_fsuid(); - if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { + if (aad(sa)->request & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " requested_mask="); - audit_file_mask(ab, sa->aad->fs.request); + audit_file_mask(ab, aad(sa)->request); } - if (sa->aad->fs.denied & AA_AUDIT_FILE_MASK) { + if (aad(sa)->denied & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " denied_mask="); - audit_file_mask(ab, sa->aad->fs.denied); + audit_file_mask(ab, aad(sa)->denied); } - if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { + if (aad(sa)->request & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " fsuid=%d", from_kuid(&init_user_ns, fsuid)); audit_log_format(ab, " ouid=%d", - from_kuid(&init_user_ns, sa->aad->fs.ouid)); + from_kuid(&init_user_ns, aad(sa)->fs.ouid)); } - if (sa->aad->fs.target) { + if (aad(sa)->target) { audit_log_format(ab, " target="); - audit_log_untrustedstring(ab, sa->aad->fs.target); + audit_log_untrustedstring(ab, aad(sa)->target); } } @@ -92,7 +87,6 @@ * aa_audit_file - handle the auditing of file operations * @profile: the profile being enforced (NOT NULL) * @perms: the permissions computed for the request (NOT NULL) - * @gfp: allocation flags * @op: operation being mediated * @request: permissions requested * @name: name of object being mediated (MAYBE NULL) @@ -104,53 +98,85 @@ * Returns: %0 or error on failure */ int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, - gfp_t gfp, int op, u32 request, const char *name, - const char *target, kuid_t ouid, const char *info, int error) + int op, u32 request, const char *name, const char *target, + kuid_t ouid, const char *info, int error) { int type = AUDIT_APPARMOR_AUTO; - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = op, - aad.fs.request = request; - aad.name = name; - aad.fs.target = target; - aad.fs.ouid = ouid; - aad.info = info; - aad.error = error; - if (likely(!sa.aad->error)) { + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + aad(&sa)->request = request; + aad(&sa)->name = name; + aad(&sa)->target = target; + aad(&sa)->fs.ouid = ouid; + aad(&sa)->info = info; + aad(&sa)->error = error; + sa.u.tsk = NULL; + + if (likely(!aad(&sa)->error)) { u32 mask = perms->audit; if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) mask = 0xffff; /* mask off perms that are not being force audited */ - sa.aad->fs.request &= mask; + aad(&sa)->request &= mask; - if (likely(!sa.aad->fs.request)) + if (likely(!aad(&sa)->request)) return 0; type = AUDIT_APPARMOR_AUDIT; } else { /* only report permissions that were denied */ - sa.aad->fs.request = sa.aad->fs.request & ~perms->allow; + aad(&sa)->request = aad(&sa)->request & ~perms->allow; - if (sa.aad->fs.request & perms->kill) + if (aad(&sa)->request & perms->kill) type = AUDIT_APPARMOR_KILL; /* quiet known rejects, assumes quiet and kill do not overlap */ - if ((sa.aad->fs.request & perms->quiet) && + if ((aad(&sa)->request & perms->quiet) && AUDIT_MODE(profile) != AUDIT_NOQUIET && AUDIT_MODE(profile) != AUDIT_ALL) - sa.aad->fs.request &= ~perms->quiet; + aad(&sa)->request &= ~perms->quiet; - if (!sa.aad->fs.request) - return COMPLAIN_MODE(profile) ? 0 : sa.aad->error; + if (!aad(&sa)->request) + return COMPLAIN_MODE(profile) ? 0 : aad(&sa)->error; } - sa.aad->fs.denied = sa.aad->fs.request & ~perms->allow; - return aa_audit(type, profile, gfp, &sa, file_audit_cb); + aad(&sa)->denied = aad(&sa)->request & ~perms->allow; + return aa_audit(type, profile, &sa, file_audit_cb); +} + +/** + * is_deleted - test if a file has been completely unlinked + * @dentry: dentry of file to test for deletion (NOT NULL) + * + * Returns: %1 if deleted else %0 + */ +static inline bool is_deleted(struct dentry *dentry) +{ + if (d_unlinked(dentry) && d_backing_inode(dentry)->i_nlink == 0) + return 1; + return 0; +} + +static int path_name(int op, struct aa_label *label, struct path *path, + int flags, char *buffer, const char**name, + struct path_cond *cond, u32 request, bool delegate_deleted) +{ + struct aa_profile *profile; + const char *info = NULL; + int error = aa_path_name(path, flags, buffer, name, &info, + labels_profile(label)->disconnected); + if (error) { + if (error == -ENOENT && is_deleted(path->dentry) && + delegate_deleted) + return 0; + fn_for_each_confined(label, profile, + aa_audit_file(profile, &nullperms, op, request, *name, + NULL, cond->uid, info, error)); + return error; + } + + return 0; } /** @@ -163,10 +189,11 @@ { u32 new = old & 0xf; if (old & MAY_READ) - new |= AA_MAY_META_READ; + new |= AA_MAY_GETATTR | AA_MAY_OPEN; if (old & MAY_WRITE) - new |= AA_MAY_META_WRITE | AA_MAY_CREATE | AA_MAY_DELETE | - AA_MAY_CHMOD | AA_MAY_CHOWN; + new |= AA_MAY_SETATTR | AA_MAY_CREATE | AA_MAY_DELETE | + AA_MAY_CHMOD | AA_MAY_CHOWN | AA_MAY_OPEN | + AA_MAY_DELETE; if (old & 0x10) new |= AA_MAY_LINK; /* the old mapping lock and link_subset flags where overlaid @@ -214,7 +241,7 @@ perms.quiet = map_old_perms(dfa_other_quiet(dfa, state)); perms.xindex = dfa_other_xindex(dfa, state); } - perms.allow |= AA_MAY_META_READ; + perms.allow |= AA_MAY_GETATTR; /* change_profile wasn't determined by ownership in old mapping */ if (ACCEPT_TABLE(dfa)[state] & 0x80000000) @@ -251,23 +278,25 @@ return state; } -/** - * is_deleted - test if a file has been completely unlinked - * @dentry: dentry of file to test for deletion (NOT NULL) - * - * Returns: %1 if deleted else %0 - */ -static inline bool is_deleted(struct dentry *dentry) -{ - if (d_unlinked(dentry) && d_backing_inode(dentry)->i_nlink == 0) - return 1; - return 0; +int __aa_path_perm(int op, struct aa_profile *profile, const char *name, + u32 request, struct path_cond *cond, int flags, + struct file_perms *perms) +{ + int e = 0; + if (profile_unconfined(profile) || + ((flags & PATH_SOCK_COND) && !PROFILE_MEDIATES_AF(profile, AF_UNIX))) + return 0; + aa_str_perms(profile->file.dfa, profile->file.start, name, cond, perms); + if (request & ~perms->allow) + e = -EACCES; + return aa_audit_file(profile, perms, op, request, name, NULL, + cond->uid, NULL, e); } /** * aa_path_perm - do permissions check & audit for @path * @op: operation being checked - * @profile: profile being enforced (NOT NULL) + * @label: profile being enforced (NOT NULL) * @path: path to check permissions of (NOT NULL) * @flags: any additional path flags beyond what the profile specifies * @request: requested permissions @@ -275,35 +304,28 @@ * * Returns: %0 else error if access denied or other error */ -int aa_path_perm(int op, struct aa_profile *profile, struct path *path, +int aa_path_perm(int op, struct aa_label *label, struct path *path, int flags, u32 request, struct path_cond *cond) { - char *buffer = NULL; struct file_perms perms = {}; - const char *name, *info = NULL; + char *buffer = NULL; + const char *name; + struct aa_profile *profile; int error; - flags |= profile->path_flags | (S_ISDIR(cond->mode) ? PATH_IS_DIR : 0); - error = aa_path_name(path, flags, &buffer, &name, &info); - if (error) { - if (error == -ENOENT && is_deleted(path->dentry)) { - /* Access to open files that are deleted are - * give a pass (implicit delegation) - */ - error = 0; - info = NULL; - perms.allow = request; - } - } else { - aa_str_perms(profile->file.dfa, profile->file.start, name, cond, - &perms); - if (request & ~perms.allow) - error = -EACCES; - } - error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request, name, - NULL, cond->uid, info, error); - kfree(buffer); + /* TODO: fix path lookup flags */ + flags |= labels_profile(label)->path_flags | + (S_ISDIR(cond->mode) ? PATH_IS_DIR : 0); + get_buffers(buffer); + + error = path_name(op, label, path, flags, buffer, &name, cond, + request, true); + if (!error) + error = fn_for_each_confined(label, profile, + __aa_path_perm(op, profile, name, request, cond, + flags, &perms)); + put_buffers(buffer); return error; } @@ -327,65 +349,25 @@ return 1; } -/** - * aa_path_link - Handle hard link permission check - * @profile: the profile being enforced (NOT NULL) - * @old_dentry: the target dentry (NOT NULL) - * @new_dir: directory the new link will be created in (NOT NULL) - * @new_dentry: the link being created (NOT NULL) - * - * Handle the permission test for a link & target pair. Permission - * is encoded as a pair where the link permission is determined - * first, and if allowed, the target is tested. The target test - * is done from the point of the link match (not start of DFA) - * making the target permission dependent on the link permission match. - * - * The subset test if required forces that permissions granted - * on link are a subset of the permission granted to target. - * - * Returns: %0 if allowed else error - */ -int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry, - struct path *new_dir, struct dentry *new_dentry) +static int profile_path_link(struct aa_profile *profile, const char *lname, + const char *tname, struct path_cond *cond) { - struct path link = { new_dir->mnt, new_dentry }; - struct path target = { new_dir->mnt, old_dentry }; - struct path_cond cond = { - d_backing_inode(old_dentry)->i_uid, - d_backing_inode(old_dentry)->i_mode - }; - char *buffer = NULL, *buffer2 = NULL; - const char *lname, *tname = NULL, *info = NULL; struct file_perms lperms, perms; + const char *info = NULL; u32 request = AA_MAY_LINK; unsigned int state; - int error; - - lperms = nullperms; - - /* buffer freed below, lname is pointer in buffer */ - error = aa_path_name(&link, profile->path_flags, &buffer, &lname, - &info); - if (error) - goto audit; + int e = -EACCES; - /* buffer2 freed below, tname is pointer in buffer2 */ - error = aa_path_name(&target, profile->path_flags, &buffer2, &tname, - &info); - if (error) - goto audit; - - error = -EACCES; /* aa_str_perms - handles the case of the dfa being NULL */ state = aa_str_perms(profile->file.dfa, profile->file.start, lname, - &cond, &lperms); + cond, &lperms); if (!(lperms.allow & AA_MAY_LINK)) goto audit; /* test to see if target can be paired with link */ state = aa_dfa_null_transition(profile->file.dfa, state); - aa_str_perms(profile->file.dfa, state, tname, &cond, &perms); + aa_str_perms(profile->file.dfa, state, tname, cond, &perms); /* force audit/quiet masks for link are stored in the second entry * in the link pair. @@ -403,10 +385,10 @@ if (!(perms.allow & AA_LINK_SUBSET)) goto done_tests; - /* Do link perm subset test requiring allowed permission on link are a - * subset of the allowed permissions on target. + /* Do link perm subset test requiring allowed permission on link are + * a subset of the allowed permissions on target. */ - aa_str_perms(profile->file.dfa, profile->file.start, tname, &cond, + aa_str_perms(profile->file.dfa, profile->file.start, tname, cond, &perms); /* AA_MAY_LINK is not considered in the subset test */ @@ -425,13 +407,175 @@ } done_tests: - error = 0; + e = 0; audit: - error = aa_audit_file(profile, &lperms, GFP_KERNEL, OP_LINK, request, - lname, tname, cond.uid, info, error); - kfree(buffer); - kfree(buffer2); + return aa_audit_file(profile, &lperms, OP_LINK, request, lname, tname, + cond->uid, info, e); +} + +/** + * aa_path_link - Handle hard link permission check + * @label: the label being enforced (NOT NULL) + * @old_dentry: the target dentry (NOT NULL) + * @new_dir: directory the new link will be created in (NOT NULL) + * @new_dentry: the link being created (NOT NULL) + * + * Handle the permission test for a link & target pair. Permission + * is encoded as a pair where the link permission is determined + * first, and if allowed, the target is tested. The target test + * is done from the point of the link match (not start of DFA) + * making the target permission dependent on the link permission match. + * + * The subset test if required forces that permissions granted + * on link are a subset of the permission granted to target. + * + * Returns: %0 if allowed else error + */ +int aa_path_link(struct aa_label *label, struct dentry *old_dentry, + struct path *new_dir, struct dentry *new_dentry) +{ + struct path link = { new_dir->mnt, new_dentry }; + struct path target = { new_dir->mnt, old_dentry }; + struct path_cond cond = { + d_backing_inode(old_dentry)->i_uid, + d_backing_inode(old_dentry)->i_mode + }; + char *buffer = NULL, *buffer2 = NULL; + const char *lname, *tname = NULL; + struct aa_profile *profile; + int error; + + /* TODO: fix path lookup flags, auditing of failed path for profile */ + profile = labels_profile(label); + /* buffer freed below, lname is pointer in buffer */ + get_buffers(buffer, buffer2); + error = path_name(OP_LINK, label, &link, + labels_profile(label)->path_flags, buffer, + &lname, &cond, AA_MAY_LINK, false); + if (error) + goto out; + + /* buffer2 freed below, tname is pointer in buffer2 */ + error = path_name(OP_LINK, label, &target, + labels_profile(label)->path_flags, buffer2, &tname, + &cond, AA_MAY_LINK, false); + if (error) + goto out; + + error = fn_for_each_confined(label, profile, + profile_path_link(profile, lname, tname, &cond)); + +out: + put_buffers(buffer, buffer2); + + return error; +} + +static void update_file_cxt(struct aa_file_cxt *fcxt, struct aa_label *label, + u32 request) +{ + struct aa_label *l, *old; + + /* update caching of label on file_cxt */ + spin_lock(&fcxt->lock); + old = rcu_dereference_protected(fcxt->label, + spin_is_locked(&fcxt->lock)); + l = aa_label_merge(old, label, GFP_ATOMIC); + if (l) { + if (l != old) { + rcu_assign_pointer(fcxt->label, l); + aa_put_label(old); + } else + aa_put_label(l); + fcxt->allow |= request; + } + spin_unlock(&fcxt->lock); +} + +static int __file_path_perm(int op, struct aa_label *label, + struct aa_label *flabel, struct file *file, + u32 request, u32 denied) +{ + struct aa_profile *profile; + struct file_perms perms = {}; + struct path_cond cond = { + .uid = file_inode(file)->i_uid, + .mode = file_inode(file)->i_mode + }; + const char *name; + char *buffer; + int flags, error; + + /* revalidation due to label out of date. No revocation at this time */ + if (!denied && aa_label_is_subset(flabel, label)) + /* TODO: check for revocation on stale profiles */ + return 0; + + /* TODO: fix path lookup flags */ + flags = PATH_DELEGATE_DELETED | labels_profile(label)->path_flags | + (S_ISDIR(cond.mode) ? PATH_IS_DIR : 0); + get_buffers(buffer); + + error = path_name(op, label, &file->f_path, flags, buffer, &name, &cond, + request, true); + if (error) { + if (error == 1) + /* Access to open files that are deleted are + * given a pass (implicit delegation) + */ + /* TODO not needed when full perms cached */ + error = 0; + goto out; + } + + /* check every profile in task label not in current cache */ + error = fn_for_each_not_in_set(flabel, label, profile, + __aa_path_perm(op, profile, name, request, &cond, 0, + &perms)); + if (denied) { + /* check every profile in file label that was not tested + * in the initial check above. + */ + /* TODO: cache full perms so this only happens because of + * conditionals */ + /* TODO: don't audit here */ + last_error(error, + fn_for_each_not_in_set(label, flabel, profile, + __aa_path_perm(op, profile, name, request, + &cond, 0, &perms))); + } + if (!error) + update_file_cxt(file_cxt(file), label, request); + +out: + put_buffers(buffer); + + return error; +} + +static int __file_sock_perm(int op, struct aa_label *label, + struct aa_label *flabel, struct file *file, + u32 request, u32 denied) +{ + struct socket *sock = (struct socket *) file->private_data; + int error; + + AA_BUG(!sock); + + /* revalidation due to label out of date. No revocation at this time */ + if (!denied && aa_label_is_subset(flabel, label)) + return 0; + + /* TODO: improve to skip profiles cached in flabel */ + error = aa_sock_file_perm(label, op, request, sock); + if (denied) { + /* TODO: improve to skip profiles checked above */ + /* check every profile in file label to is cached */ + last_error(error, aa_sock_file_perm(flabel, op, request, sock)); + } + if (!error) + update_file_cxt(file_cxt(file), label, request); return error; } @@ -439,20 +583,117 @@ /** * aa_file_perm - do permission revalidation check & audit for @file * @op: operation being checked - * @profile: profile being enforced (NOT NULL) + * @label: label being enforced (NOT NULL) * @file: file to revalidate access permissions on (NOT NULL) * @request: requested permissions * * Returns: %0 if access allowed else error */ -int aa_file_perm(int op, struct aa_profile *profile, struct file *file, +int aa_file_perm(int op, struct aa_label *label, struct file *file, u32 request) { - struct path_cond cond = { - .uid = file_inode(file)->i_uid, - .mode = file_inode(file)->i_mode - }; + struct aa_file_cxt *fcxt; + struct aa_label *flabel; + u32 denied; + int error = 0; + + AA_BUG(!label); + AA_BUG(!file); + + fcxt = file_cxt(file); + + rcu_read_lock(); + flabel = rcu_dereference(fcxt->label); + AA_BUG(!flabel); + + /* revalidate access, if task is unconfined, or the cached cred + * doesn't match or if the request is for more permissions than + * was granted. + * + * Note: the test for !unconfined(flabel) is to handle file + * delegation from unconfined tasks + */ + denied = request & ~fcxt->allow; + if (unconfined(label) || unconfined(flabel) || + (!denied && aa_label_is_subset(flabel, label))) + goto done; + + /* TODO: label cross check */ + + if (file->f_path.mnt && path_mediated_fs(file->f_path.dentry)) { + error = __file_path_perm(op, label, flabel, file, request, + denied); + + } else if (S_ISSOCK(file_inode(file)->i_mode)) { + error = __file_sock_perm(op, label, flabel, file, request, + denied); + } +done: + rcu_read_unlock(); + + return error; +} + +static void revalidate_tty(struct aa_label *label) +{ + struct tty_struct *tty; + int drop_tty = 0; - return aa_path_perm(op, profile, &file->f_path, PATH_DELEGATE_DELETED, - request, &cond); + tty = get_current_tty(); + if (!tty) + return; + + spin_lock(&tty_files_lock); + if (!list_empty(&tty->tty_files)) { + struct tty_file_private *file_priv; + struct file *file; + /* TODO: Revalidate access to controlling tty. */ + file_priv = list_first_entry(&tty->tty_files, + struct tty_file_private, list); + file = file_priv->file; + + if (aa_file_perm(OP_INHERIT, label, file, MAY_READ | MAY_WRITE)) + drop_tty = 1; + } + spin_unlock(&tty_files_lock); + tty_kref_put(tty); + + if (drop_tty) + no_tty(); +} + +static int match_file(const void *p, struct file *file, unsigned fd) +{ + struct aa_label *label = (struct aa_label *)p; + if (aa_file_perm(OP_INHERIT, label, file, aa_map_file_to_perms(file))) + return fd + 1; + return 0; +} + + +/* based on selinux's flush_unauthorized_files */ +void aa_inherit_files(const struct cred *cred, struct files_struct *files) +{ + struct aa_label *label = aa_get_newest_cred_label(cred); + struct file *devnull = NULL; + unsigned n; + + revalidate_tty(label); + + /* Revalidate access to inherited open files. */ + n = iterate_fd(files, 0, match_file, label); + if (!n) /* none found? */ + goto out; + + devnull = dentry_open(&aa_null, O_RDWR, cred); + if (IS_ERR(devnull)) + devnull = NULL; + /* replace all the matching ones with this */ + do { + replace_fd(n - 1, devnull, 0); + } while ((n = iterate_fd(files, n, match_file, label)) != 0); + if (devnull) + fput(devnull); +out: + aa_put_label(label); } --- linux-4.4.0.orig/security/apparmor/include/af_unix.h +++ linux-4.4.0/security/apparmor/include/af_unix.h @@ -0,0 +1,121 @@ +/* + * AppArmor security module + * + * This file contains AppArmor af_unix fine grained mediation + * + * Copyright 2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ +#ifndef __AA_AF_UNIX_H + +#include + +#include "label.h" +//#include "include/net.h" + +#define unix_addr_len(L) ((L) - sizeof(sa_family_t)) +#define unix_abstract_name_len(L) (unix_addr_len(L) - 1) +#define unix_abstract_len(U) (unix_abstract_name_len((U)->addr->len)) +#define addr_unix_abstract_name(B) ((B)[0] == 0) +#define addr_unix_anonymous(U) (addr_unix_len(U) <= 0) +#define addr_unix_abstract(U) (!addr_unix_anonymous(U) && addr_unix_abstract_name((U)->addr)) +//#define unix_addr_fs(U) (!unix_addr_anonymous(U) && !unix_addr_abstract_name((U)->addr)) + +#define unix_addr(A) ((struct sockaddr_un *)(A)) +#define unix_addr_anon(A, L) ((A) && unix_addr_len(L) <= 0) +#define unix_addr_fs(A, L) (!unix_addr_anon(A, L) && !addr_unix_abstract_name(unix_addr(A)->sun_path)) + +#define UNIX_ANONYMOUS(U) (!unix_sk(U)->addr) +/* from net/unix/af_unix.c */ +#define UNIX_ABSTRACT(U) (!UNIX_ANONYMOUS(U) && \ + unix_sk(U)->addr->hash < UNIX_HASH_SIZE) +#define UNIX_FS(U) (!UNIX_ANONYMOUS(U) && unix_sk(U)->addr->name->sun_path[0]) +#define unix_peer(sk) (unix_sk(sk)->peer) +#define unix_connected(S) ((S)->state == SS_CONNECTED) + +static inline void print_unix_addr(struct sockaddr_un *A, int L) +{ + char *buf = (A) ? (char *) &(A)->sun_path : NULL; + int len = unix_addr_len(L); + if (!buf || len <= 0) + printk(" "); + else if (buf[0]) + printk(" %s", buf); + else + /* abstract name len includes leading \0 */ + printk(" %d @%.*s", len - 1, len - 1, buf+1); +}; + +/* + printk("%s: %s: f %d, t %d, p %d", __FUNCTION__, \ + #SK , \ +*/ +#define print_unix_sk(SK) \ +do { \ + struct unix_sock *u = unix_sk(SK); \ + printk("%s: f %d, t %d, p %d", #SK , \ + (SK)->sk_family, (SK)->sk_type, (SK)->sk_protocol); \ + if (u->addr) \ + print_unix_addr(u->addr->name, u->addr->len); \ + else \ + print_unix_addr(NULL, sizeof(sa_family_t)); \ + /* printk("\n");*/ \ +} while (0) + +#define print_sk(SK) \ +do { \ + if (!(SK)) { \ + printk("%s: %s is null\n", __FUNCTION__, #SK); \ + } else if ((SK)->sk_family == PF_UNIX) { \ + print_unix_sk(SK); \ + printk("\n"); \ + } else { \ + printk("%s: %s: family %d\n", __FUNCTION__, #SK , \ + (SK)->sk_family); \ + } \ +} while (0) + +#define print_sock_addr(U) \ +do { \ + printk("%s:\n", __FUNCTION__); \ + printk(" sock %s:", sock_cxt && sock_cxt->label && sock_cxt->label->hname ? sock_cxt->label->hname : ""); print_sk(sock); \ + printk(" other %s:", other_cxt && other_cxt->label && other_cxt->label->hname ? other_cxt->label->hname : ""); print_sk(other); \ + printk(" new %s", new_cxt && new_cxt->label && new_cxt->label->hname ? new_cxt->label->hname : ""); print_sk(newsk); \ +} while (0) + + +#define DEFINE_AUDIT_UNIX(NAME, OP, SK, T, P) \ + struct lsm_network_audit NAME ## _net = { .sk = (SK), \ + .family = (AF_UNIX)}; \ + DEFINE_AUDIT_DATA(NAME, LSM_AUDIT_DATA_NONE, OP); \ + NAME.u.net = &(NAME ## _net); \ + aad(&NAME)->net.type = (T); \ + aad(&NAME)->net.protocol = (P) + + +int aa_unix_peer_perm(struct aa_label *label, int op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label); +int aa_unix_label_sk_perm(struct aa_label *label, int op, u32 request, + struct sock *sk); +int aa_unix_sock_perm(int op, u32 request, struct socket *sock); +int aa_unix_create_perm(struct aa_label *label, int family, int type, + int protocol); +int aa_unix_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_unix_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_unix_listen_perm(struct socket *sock, int backlog); +int aa_unix_accept_perm(struct socket *sock, struct socket *newsock); +int aa_unix_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size); +int aa_unix_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname); +int aa_unix_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock); + +#endif /* __AA_AF_UNIX_H */ --- linux-4.4.0.orig/security/apparmor/include/apparmor.h +++ linux-4.4.0/security/apparmor/include/apparmor.h @@ -4,7 +4,7 @@ * This file contains AppArmor basic global and lib definitions * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -20,6 +20,17 @@ #include "match.h" +/* Provide our own test for whether a write lock is held for asserts + * this is because on none SMP systems write_can_lock will always + * resolve to true, which is what you want for code making decisions + * based on it, but wrong for asserts checking that the lock is held + */ +#ifdef CONFIG_SMP +#define write_is_locked(X) !write_can_lock(X) +#else +#define write_is_locked(X) (1) +#endif /* CONFIG_SMP */ + /* * Class of mediation types in the AppArmor policy db */ @@ -30,17 +41,23 @@ #define AA_CLASS_NET 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 +#define AA_CLASS_MOUNT 7 +#define AA_CLASS_PTRACE 9 +#define AA_CLASS_SIGNAL 10 +#define AA_CLASS_LABEL 16 -#define AA_CLASS_LAST AA_CLASS_DOMAIN +#define AA_CLASS_LAST AA_CLASS_LABEL /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; extern bool aa_g_audit_header; extern bool aa_g_debug; +extern bool aa_g_hash_policy; extern bool aa_g_lock_policy; extern bool aa_g_logsyscall; extern bool aa_g_paranoid_load; extern unsigned int aa_g_path_max; +extern bool aa_g_unconfined_init; /* * DEBUG remains global (no per profile flag) since it is mostly used in sysctl @@ -53,6 +70,12 @@ printk(KERN_DEBUG "AppArmor: " fmt, ##args); \ } while (0) +#define AA_WARN(X) WARN((X), "APPARMOR WARN %s: %s\n", __FUNCTION__, #X) + +#define AA_BUG(X, args...) AA_BUG_FMT((X), "" args ) +#define AA_BUG_FMT(X, fmt, args...) \ + WARN((X), "AppArmor WARN %s: (" #X "): " fmt, __FUNCTION__ , ##args ) + #define AA_ERROR(fmt, args...) \ do { \ if (printk_ratelimit()) \ @@ -64,6 +87,7 @@ /* fn's in lib */ char *aa_split_fqname(char *args, char **ns_name); +char *aa_splitn_fqname(char *fqname, size_t n, char **ns_name, size_t *ns_len); void aa_info_message(const char *str); void *__aa_kvmalloc(size_t size, gfp_t flags); @@ -112,9 +136,40 @@ return aa_dfa_next(dfa, start, 0); } -static inline bool mediated_filesystem(struct dentry *dentry) +static inline bool path_mediated_fs(struct dentry *dentry) { return !(dentry->d_sb->s_flags & MS_NOUSER); } + +struct counted_str { + struct kref count; + char name[]; +}; + +#define str_to_counted(str) \ + ((struct counted_str *)(str - offsetof(struct counted_str,name))) + +#define __counted /* atm just a notation */ + +void aa_str_kref(struct kref *kref); +char *aa_str_alloc(int size, gfp_t gfp); + + +static inline __counted char *aa_get_str(__counted char *str) +{ + if (str) + kref_get(&(str_to_counted(str)->count)); + + return str; +} + +static inline void aa_put_str(__counted char *str) +{ + if (str) + kref_put(&str_to_counted(str)->count, aa_str_kref); +} + +const char *aa_imode_name(umode_t mode); + #endif /* __APPARMOR_H */ --- linux-4.4.0.orig/security/apparmor/include/apparmorfs.h +++ linux-4.4.0/security/apparmor/include/apparmorfs.h @@ -15,6 +15,8 @@ #ifndef __AA_APPARMORFS_H #define __AA_APPARMORFS_H +extern struct path aa_null; + enum aa_fs_type { AA_FS_TYPE_BOOLEAN, AA_FS_TYPE_STRING, --- linux-4.4.0.orig/security/apparmor/include/audit.h +++ linux-4.4.0/security/apparmor/include/audit.h @@ -22,8 +22,7 @@ #include #include "file.h" - -struct aa_profile; +#include "label.h" extern const char *const audit_mode_names[]; #define AUDIT_MAX_INDEX 5 @@ -67,10 +66,16 @@ OP_GETATTR, OP_OPEN, + OP_FRECEIVE, OP_FPERM, OP_FLOCK, OP_FMMAP, OP_FMPROT, + OP_INHERIT, + + OP_PIVOTROOT, + OP_MOUNT, + OP_UMOUNT, OP_CREATE, OP_POST_CREATE, @@ -84,9 +89,10 @@ OP_GETPEERNAME, OP_GETSOCKOPT, OP_SETSOCKOPT, - OP_SOCK_SHUTDOWN, + OP_SHUTDOWN, OP_PTRACE, + OP_SIGNAL, OP_EXEC, OP_CHANGE_HAT, @@ -106,37 +112,69 @@ int error; int op; int type; - void *profile; + struct aa_label *label; const char *name; const char *info; + u32 request; + u32 denied; union { - void *target; struct { - long pos; - void *target; - } iface; + const void *target; + union { + struct { + long pos; + } iface; + struct { + kuid_t ouid; + } fs; + struct { + int type, protocol; + struct sock *peer_sk; + void *addr; + int addrlen; + } net; + int signal; + }; + }; struct { int rlim; unsigned long max; } rlim; struct { - const char *target; - u32 request; - u32 denied; - kuid_t ouid; - } fs; + const char *src_name; + const char *type; + const char *trans; + const char *data; + unsigned long flags; + } mnt; }; }; -/* define a short hand for apparmor_audit_data structure */ -#define aad apparmor_audit_data +/* macros for dealing with apparmor_audit_data structure */ +#define aad(SA) (SA)->apparmor_audit_data +#define DEFINE_AUDIT_DATA(NAME, T, X) \ + /* TODO: cleanup audit init so we don't need _aad = {0,} */ \ + struct apparmor_audit_data NAME ## _aad = { .op = (X), }; \ + struct common_audit_data NAME = \ + { \ + .type = (T), \ + .u.tsk = NULL, \ + }; \ + NAME.apparmor_audit_data = &(NAME ## _aad) void aa_audit_msg(int type, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)); -int aa_audit(int type, struct aa_profile *profile, gfp_t gfp, - struct common_audit_data *sa, +int aa_audit(int type, struct aa_profile *profile, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)); +#define aa_audit_error(ERROR, SA, CB) \ +({ \ + aad((SA))->error = (ERROR); \ + aa_audit_msg(AUDIT_APPARMOR_ERROR, (SA), (CB)); \ + aad((SA))->error; \ +}) + + static inline int complain_error(int error) { if (error == -EPERM || error == -EACCES) --- linux-4.4.0.orig/security/apparmor/include/capability.h +++ linux-4.4.0/security/apparmor/include/capability.h @@ -19,11 +19,12 @@ #include "apparmorfs.h" -struct aa_profile; +struct aa_label; /* aa_caps - confinement data for capabilities * @allowed: capabilities mask * @audit: caps that are to be audited + * @denied: caps that are explicitly denied * @quiet: caps that should not be audited * @kill: caps that when requested will result in the task being killed * @extended: caps that are subject finer grained mediation @@ -31,6 +32,7 @@ struct aa_caps { kernel_cap_t allow; kernel_cap_t audit; + kernel_cap_t denied; kernel_cap_t quiet; kernel_cap_t kill; kernel_cap_t extended; @@ -38,7 +40,7 @@ extern struct aa_fs_entry aa_fs_entry_caps[]; -int aa_capable(struct aa_profile *profile, int cap, int audit); +int aa_capable(struct aa_label *label, int cap, int audit); static inline void aa_free_cap_rules(struct aa_caps *caps) { --- linux-4.4.0.orig/security/apparmor/include/context.h +++ linux-4.4.0/security/apparmor/include/context.h @@ -19,59 +19,29 @@ #include #include +#include "label.h" #include "policy.h" #define cred_cxt(X) (X)->security #define current_cxt() cred_cxt(current_cred()) - -/* struct aa_file_cxt - the AppArmor context the file was opened in - * @perms: the permission the file was opened with - * - * The file_cxt could currently be directly stored in file->f_security - * as the profile reference is now stored in the f_cred. However the - * cxt struct will expand in the future so we keep the struct. - */ -struct aa_file_cxt { - u16 allow; -}; - -/** - * aa_alloc_file_context - allocate file_cxt - * @gfp: gfp flags for allocation - * - * Returns: file_cxt or NULL on failure - */ -static inline struct aa_file_cxt *aa_alloc_file_context(gfp_t gfp) -{ - return kzalloc(sizeof(struct aa_file_cxt), gfp); -} - -/** - * aa_free_file_context - free a file_cxt - * @cxt: file_cxt to free (MAYBE_NULL) - */ -static inline void aa_free_file_context(struct aa_file_cxt *cxt) -{ - if (cxt) - kzfree(cxt); -} +#define current_ns() labels_ns(aa_current_raw_label()) /** * struct aa_task_cxt - primary label for confined tasks - * @profile: the current profile (NOT NULL) - * @exec: profile to transition to on next exec (MAYBE NULL) - * @previous: profile the task may return to (MAYBE NULL) - * @token: magic value the task must know for returning to @previous_profile + * @label: the current label (NOT NULL) + * @exec: label to transition to on next exec (MAYBE NULL) + * @previous: label the task may return to (MAYBE NULL) + * @token: magic value the task must know for returning to @previous * - * Contains the task's current profile (which could change due to + * Contains the task's current label (which could change due to * change_hat). Plus the hat_magic needed during change_hat. * * TODO: make so a task can be confined by a stack of contexts */ struct aa_task_cxt { - struct aa_profile *profile; - struct aa_profile *onexec; - struct aa_profile *previous; + struct aa_label *label; + struct aa_label *onexec; + struct aa_label *previous; u64 token; }; @@ -79,39 +49,50 @@ void aa_free_task_context(struct aa_task_cxt *cxt); void aa_dup_task_context(struct aa_task_cxt *new, const struct aa_task_cxt *old); -int aa_replace_current_profile(struct aa_profile *profile); -int aa_set_current_onexec(struct aa_profile *profile); -int aa_set_current_hat(struct aa_profile *profile, u64 token); -int aa_restore_previous_profile(u64 cookie); -struct aa_profile *aa_get_task_profile(struct task_struct *task); +int aa_replace_current_label(struct aa_label *label); +int aa_set_current_onexec(struct aa_label *label); +int aa_set_current_hat(struct aa_label *label, u64 token); +int aa_restore_previous_label(u64 cookie); +struct aa_label *aa_get_task_label(struct task_struct *task); /** - * aa_cred_profile - obtain cred's profiles - * @cred: cred to obtain profiles from (NOT NULL) + * aa_cred_raw_label - obtain cred's label + * @cred: cred to obtain label from (NOT NULL) * - * Returns: confining profile + * Returns: confining label * * does NOT increment reference count */ -static inline struct aa_profile *aa_cred_profile(const struct cred *cred) +static inline struct aa_label *aa_cred_raw_label(const struct cred *cred) { struct aa_task_cxt *cxt = cred_cxt(cred); - BUG_ON(!cxt || !cxt->profile); - return cxt->profile; + BUG_ON(!cxt || !cxt->label); + return cxt->label; } /** - * __aa_task_profile - retrieve another task's profile + * aa_get_newest_cred_label - obtain the newest version of the label on a cred + * @cred: cred to obtain label from (NOT NULL) + * + * Returns: newest version of confining label + */ +static inline struct aa_label *aa_get_newest_cred_label(const struct cred *cred) +{ + return aa_get_newest_label(aa_cred_raw_label(cred)); +} + +/** + * __aa_task_raw_label - retrieve another task's label * @task: task to query (NOT NULL) * - * Returns: @task's profile without incrementing its ref count + * Returns: @task's label without incrementing its ref count * * If @task != current needs to be called in RCU safe critical section */ -static inline struct aa_profile *__aa_task_profile(struct task_struct *task) +static inline struct aa_label *__aa_task_raw_label(struct task_struct *task) { - return aa_cred_profile(__task_cred(task)); + return aa_cred_raw_label(__task_cred(task)); } /** @@ -122,44 +103,93 @@ */ static inline bool __aa_task_is_confined(struct task_struct *task) { - return !unconfined(__aa_task_profile(task)); + return !unconfined(__aa_task_raw_label(task)); } /** - * __aa_current_profile - find the current tasks confining profile + * aa_current_raw_label - find the current tasks confining label * - * Returns: up to date confining profile or the ns unconfined profile (NOT NULL) + * Returns: up to date confining label or the ns unconfined label (NOT NULL) * * This fn will not update the tasks cred to the most up to date version - * of the profile so it is safe to call when inside of locks. + * of the label so it is safe to call when inside of locks. + */ +static inline struct aa_label *aa_current_raw_label(void) +{ + return aa_cred_raw_label(current_cred()); +} + +/** + * aa_get_current_label - get the newest version of the current tasks label + * + * Returns: newest version of confining label (NOT NULL) + * + * This fn will not update the tasks cred, so it is safe inside of locks + * + * The returned reference must be put with aa_put_label() + */ +static inline struct aa_label *aa_get_current_label(void) +{ + struct aa_label *l = aa_current_raw_label(); + + if (label_invalid(l)) + return aa_get_newest_label(l); + return aa_get_label(l); +} + +/** + * aa_begin_current_label - find newest version of the current tasks label + * + * Returns: newest version of confining label (NOT NULL) + * + * This fn will not update the tasks cred, so it is safe inside of locks + * + * The returned reference must be put with aa_end_current_label() + */ +static inline struct aa_label *aa_begin_current_label(void) +{ + struct aa_label *l = aa_current_raw_label(); + + if (label_invalid(l)) + l = aa_get_newest_label(l); + return l; +} + +/** + * aa_end_current_label - put a reference found with aa_begin_current_label + * @label: label reference to put + * + * Should only be used with a reference obtained with aa_begin_current_label + * and never used in situations where the task cred may be updated */ -static inline struct aa_profile *__aa_current_profile(void) +static inline void aa_end_current_label(struct aa_label *label) { - return aa_cred_profile(current_cred()); + if (label != aa_current_raw_label()) + aa_put_label(label); } /** - * aa_current_profile - find the current tasks confining profile and do updates + * aa_current_label - find the current tasks confining label and update it * - * Returns: up to date confining profile or the ns unconfined profile (NOT NULL) + * Returns: up to date confining label or the ns unconfined label (NOT NULL) * - * This fn will update the tasks cred structure if the profile has been + * This fn will update the tasks cred structure if the label has been * replaced. Not safe to call inside locks */ -static inline struct aa_profile *aa_current_profile(void) +static inline struct aa_label *aa_current_label(void) { const struct aa_task_cxt *cxt = current_cxt(); - struct aa_profile *profile; - BUG_ON(!cxt || !cxt->profile); + struct aa_label *label; + BUG_ON(!cxt || !cxt->label); - if (PROFILE_INVALID(cxt->profile)) { - profile = aa_get_newest_profile(cxt->profile); - aa_replace_current_profile(profile); - aa_put_profile(profile); + if (label_invalid(cxt->label)) { + label = aa_get_newest_label(cxt->label); + aa_replace_current_label(label); + aa_put_label(label); cxt = current_cxt(); } - return cxt->profile; + return cxt->label; } /** @@ -168,8 +198,8 @@ */ static inline void aa_clear_task_cxt_trans(struct aa_task_cxt *cxt) { - aa_put_profile(cxt->previous); - aa_put_profile(cxt->onexec); + aa_put_label(cxt->previous); + aa_put_label(cxt->onexec); cxt->previous = NULL; cxt->onexec = NULL; cxt->token = 0; --- linux-4.4.0.orig/security/apparmor/include/domain.h +++ linux-4.4.0/security/apparmor/include/domain.h @@ -23,6 +23,8 @@ char **table; }; +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex); + int apparmor_bprm_set_creds(struct linux_binprm *bprm); int apparmor_bprm_secureexec(struct linux_binprm *bprm); void apparmor_bprm_committing_creds(struct linux_binprm *bprm); --- linux-4.4.0.orig/security/apparmor/include/file.h +++ linux-4.4.0/security/apparmor/include/file.h @@ -15,38 +15,75 @@ #ifndef __AA_FILE_H #define __AA_FILE_H +#include + #include "domain.h" #include "match.h" +#include "label.h" +#include "perms.h" struct aa_profile; struct path; -/* - * We use MAY_EXEC, MAY_WRITE, MAY_READ, MAY_APPEND and the following flags - * for profile permissions - */ -#define AA_MAY_CREATE 0x0010 -#define AA_MAY_DELETE 0x0020 -#define AA_MAY_META_WRITE 0x0040 -#define AA_MAY_META_READ 0x0080 - -#define AA_MAY_CHMOD 0x0100 -#define AA_MAY_CHOWN 0x0200 -#define AA_MAY_LOCK 0x0400 -#define AA_EXEC_MMAP 0x0800 - -#define AA_MAY_LINK 0x1000 -#define AA_LINK_SUBSET AA_MAY_LOCK /* overlaid */ -#define AA_MAY_ONEXEC 0x40000000 /* exec allows onexec */ -#define AA_MAY_CHANGE_PROFILE 0x80000000 -#define AA_MAY_CHANGEHAT 0x80000000 /* ctrl auditing only */ +#define mask_mode_t(X) (X & (MAY_EXEC | MAY_WRITE | MAY_READ | MAY_APPEND)) #define AA_AUDIT_FILE_MASK (MAY_READ | MAY_WRITE | MAY_EXEC | MAY_APPEND |\ AA_MAY_CREATE | AA_MAY_DELETE | \ - AA_MAY_META_READ | AA_MAY_META_WRITE | \ + AA_MAY_GETATTR | AA_MAY_SETATTR | \ AA_MAY_CHMOD | AA_MAY_CHOWN | AA_MAY_LOCK | \ AA_EXEC_MMAP | AA_MAY_LINK) +#define file_cxt(X) ((struct aa_file_cxt *)(X)->f_security) + +/* struct aa_file_cxt - the AppArmor context the file was opened in + * @lock: lock to update the cxt + * @label: label currently cached on the cxt + * @perms: the permission the file was opened with + */ +struct aa_file_cxt { + spinlock_t lock; + struct aa_label __rcu *label; + u32 allow; +}; + +/** + * aa_alloc_file_cxt - allocate file_cxt + * @label: initial label of task creating the file + * @gfp: gfp flags for allocation + * + * Returns: file_cxt or NULL on failure + */ +static inline struct aa_file_cxt *aa_alloc_file_cxt(struct aa_label *label, gfp_t gfp) +{ + struct aa_file_cxt *cxt; + + cxt = kzalloc(sizeof(struct aa_file_cxt), gfp); + if (cxt) { + spin_lock_init(&cxt->lock); + rcu_assign_pointer(cxt->label, aa_get_label(label)); + } + return cxt; +} + +/** + * aa_free_file_cxt - free a file_cxt + * @cxt: file_cxt to free (MAYBE_NULL) + */ +static inline void aa_free_file_cxt(struct aa_file_cxt *cxt) +{ + if (cxt) { + aa_put_label(rcu_access_pointer(cxt->label)); + kzfree(cxt); + } +} + +static inline struct aa_label *aa_get_file_label(struct aa_file_cxt *cxt) +{ + return aa_get_label_rcu(&cxt->label); +} + +#define inode_cxt(X) (X)->i_security + /* * The xindex is broken into 3 parts * - index - an index into either the exec name table or the variable table @@ -145,8 +182,8 @@ dfa_map_xindex((ACCEPT_TABLE(dfa)[state] >> 14) & 0x3fff) int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, - gfp_t gfp, int op, u32 request, const char *name, - const char *target, kuid_t ouid, const char *info, int error); + int op, u32 request, const char *name, const char *target, + kuid_t ouid, const char *info, int error); /** * struct aa_file_rules - components used for file rule permissions @@ -171,15 +208,20 @@ const char *name, struct path_cond *cond, struct file_perms *perms); -int aa_path_perm(int op, struct aa_profile *profile, struct path *path, +int __aa_path_perm(int op, struct aa_profile *profile, const char *name, + u32 request, struct path_cond *cond, int flags, + struct file_perms *perms); +int aa_path_perm(int op, struct aa_label *label, struct path *path, int flags, u32 request, struct path_cond *cond); -int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry, +int aa_path_link(struct aa_label *label, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); -int aa_file_perm(int op, struct aa_profile *profile, struct file *file, +int aa_file_perm(int op, struct aa_label *label, struct file *file, u32 request); +void aa_inherit_files(const struct cred *cred, struct files_struct *files); + static inline void aa_free_file_rules(struct aa_file_rules *rules) { aa_put_dfa(rules->dfa); --- linux-4.4.0.orig/security/apparmor/include/ipc.h +++ linux-4.4.0/security/apparmor/include/ipc.h @@ -4,7 +4,7 @@ * This file contains AppArmor ipc mediation function definitions. * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -19,10 +19,22 @@ struct aa_profile; -int aa_may_ptrace(struct aa_profile *tracer, struct aa_profile *tracee, - unsigned int mode); - -int aa_ptrace(struct task_struct *tracer, struct task_struct *tracee, - unsigned int mode); +#define AA_PTRACE_TRACE MAY_WRITE +#define AA_PTRACE_READ MAY_READ +#define AA_MAY_BE_TRACED AA_MAY_APPEND +#define AA_MAY_BE_READ AA_MAY_CREATE +#define PTRACE_PERM_SHIFT 2 + +#define AA_PTRACE_PERM_MASK (AA_PTRACE_READ | AA_PTRACE_TRACE | \ + AA_MAY_BE_READ | AA_MAY_BE_TRACED) +#define AA_SIGNAL_PERM_MASK (MAY_READ | MAY_WRITE) + +#define AA_FS_SIG_MASK "hup int quit ill trap abrt bus fpe kill usr1 " \ + "segv usr2 pipe alrm term stkflt chld cont stop stp ttin ttou urg " \ + "xcpu xfsz vtalrm prof winch io pwr sys emt lost" + +int aa_may_ptrace(struct aa_label *tracer, struct aa_label *tracee, + u32 request); +int aa_may_signal(struct aa_label *sender, struct aa_label *target, int sig); #endif /* __AA_IPC_H */ --- linux-4.4.0.orig/security/apparmor/include/label.h +++ linux-4.4.0/security/apparmor/include/label.h @@ -0,0 +1,419 @@ +/* + * AppArmor security module + * + * This file contains AppArmor label definitions + * + * Copyright 2013 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_LABEL_H +#define __AA_LABEL_H + +#include +#include +#include +#include + +#include "apparmor.h" + +struct aa_namespace; + +struct labelset_stats { + atomic_t sread; + atomic_t fread; + atomic_t msread; + atomic_t mfread; + + atomic_t insert; + atomic_t existing; + atomic_t minsert; + atomic_t mexisting; + + atomic_t invalid; /* outstanding invalid */ +}; + +struct label_stats { + struct labelset_stats set_stats; + + atomic_t allocated; + atomic_t failed; + atomic_t freed; + + atomic_t printk_name_alloc; + atomic_t printk_name_fail; + atomic_t seq_print_name_alloc; + atomic_t seq_print_name_fail; + atomic_t audit_name_alloc; + atomic_t audit_name_fail; +}; + + +#ifdef AA_LABEL_STATS +#define labelstats_inc(X) atomic_inc(stats.(X)) +#define labelstats_dec(X) atomic_dec(stats.(X)) +#define labelsetstats_inc(LS, X) \ + do { \ + labelstats_inc(set_stats.##X); \ + atomic_inc((LS)->stats.(X)); \ + } while (0) +#define labelsetstats_dec(LS, X) \ + do { \ + labelstats_dec(set_stats.##X); \ + atomic_dec((LS)->stats.(X)); \ + } while (0) +#else +#define labelstats_inc(X) +#define labelstats_dec(X) +#define labelsetstats_inc(LS, X) +#define labelsetstats_dec(LS, X) +#endif +#define labelstats_init(X) + +/* struct aa_labelset - set of labels for a namespace + * + * Labels are reference counted; aa_labelset does not contribute to label + * reference counts. Once a label's last refcount is put it is removed from + * the set. + */ +struct aa_labelset { + rwlock_t lock; + + struct rb_root root; + + /* stats */ +#ifdef APPARMOR_LABEL_STATS + struct labelset_stats stats; +#endif + +}; + +#define __labelset_for_each(LS, N) \ + for((N) = rb_first(&(LS)->root); (N); (N) = rb_next(N)) + +void aa_labelset_destroy(struct aa_labelset *ls); +void aa_labelset_init(struct aa_labelset *ls); + + +enum label_flags { + FLAG_HAT = 1, /* profile is a hat */ + FLAG_UNCONFINED = 2, /* label unconfined only if all + * constituant profiles unconfined */ + FLAG_NULL = 4, /* profile is null learning profile */ + FLAG_IX_ON_NAME_ERROR = 8, /* fallback to ix on name lookup fail */ + FLAG_IMMUTIBLE = 0x10, /* don't allow changes/replacement */ + FLAG_USER_DEFINED = 0x20, /* user based profile - lower privs */ + FLAG_NO_LIST_REF = 0x40, /* list doesn't keep profile ref */ + FLAG_NS_COUNT = 0x80, /* carries NS ref count */ + FLAG_IN_TREE = 0x100, /* label is in tree */ + FLAG_PROFILE = 0x200, /* label is a profile */ + FALG_EXPLICIT = 0x400, /* explict static label */ + FLAG_INVALID = 0x800, /* replaced/removed */ + FLAG_RENAMED = 0x1000, /* label has renaming in it */ + FLAG_REVOKED = 0x2000, /* label has revocation in it */ + + /* These flags must correspond with PATH_flags */ + /* TODO: add new path flags */ +}; + +struct aa_label; +struct aa_replacedby { + struct kref count; + struct aa_label __rcu *label; +}; + +struct label_it { + int i, j; +}; + +/* struct aa_label - lazy labeling struct + * @count: ref count of active users + * @node: rbtree position + * @rcu: rcu callback struct + * @replacedby: is set to the label that replaced this label + * @hname: text representation of the label (MAYBE_NULL) + * @flags: invalid and other flags - values may change under label set lock + * @sid: sid that references this label + * @size: number of entries in @ent[] + * @ent: set of profiles for label, actual size determined by @size + */ +struct aa_label { + struct kref count; + struct rb_node node; + struct rcu_head rcu; + struct aa_replacedby *replacedby; + __counted char *hname; + long flags; + u32 sid; + int size; + struct aa_profile *ent[2]; +}; + +#define last_error(E, FN) \ +do { \ + int __subE = (FN); \ + if (__subE) \ + (E) = __subE; \ +} while (0) + +#define label_isprofile(X) ((X)->flags & FLAG_PROFILE) +#define label_unconfined(X) ((X)->flags & FLAG_UNCONFINED) +#define unconfined(X) label_unconfined(X) +#define label_invalid(X) ((X)->flags & FLAG_INVALID) +#define __label_invalidate(X) do { \ + labelsetstats_inc(labels_set(X), invalid); \ + ((X)->flags |= FLAG_INVALID); \ +} while (0) +#define labels_last(X) ((X)->ent[(X)->size - 1]) +#define labels_ns(X) (labels_last(X)->ns) +#define labels_set(X) (&labels_ns(X)->labels) +#define labels_profile(X) ({ \ + AA_BUG(!label_isprofile(X)); \ + container_of((X), struct aa_profile, label); \ +}) + +int aa_label_next_confined(struct aa_label *l, int i); + +/* for each profile in a label */ +#define label_for_each(I, L, P) \ + for ((I).i = 0; ((P) = (L)->ent[(I).i]); ++((I).i)) + +#define label_for_each_at(I, L, P) \ + for (; ((P) = (L)->ent[(I).i]); ++((I).i)) + +#define next_comb(I, L1, L2) \ +do { \ + (I).j++; \ + if ((I).j >= (L2)->size) { \ + (I).i++; \ + (I).j = 0; \ + } \ +} while (0) + +/* TODO: label_for_each_ns_comb */ + +/* for each combination of P1 in L1, and P2 in L2 */ +#define label_for_each_comb(I, L1, L2, P1, P2) \ +for ((I).i = (I).j = 0; \ + ((P1) = (L1)->ent[(I).i]) && ((P2) = (L2)->ent[(I).j]); \ + (I) = next_comb(I, L1, L2)) + +#define fn_for_each_comb(L1, L2, P1, P2, FN) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each_comb(i, (L1), (L2), (P1), (P2)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +/* internal cross check */ +//fn_for_each_comb(L1, L2, P1, P2, xcheck(...)); + +/* external cross check */ +// xcheck(fn_for_each_comb(L1, L2, ...), +// fn_for_each_comb(L2, L1, ...)); + +/* for each profile that is enforcing confinement in a label */ +#define label_for_each_confined(I, L, P) \ + for ((I).i = aa_label_next_confined((L), 0); \ + ((P) = (L)->ent[(I).i]); \ + (I).i = aa_label_next_confined((L), (I).i + 1)) + +#define label_for_each_in_merge(I, A, B, P) \ + for ((I).i = (I).j = 0; \ + ((P) = aa_label_next_in_merge(&(I), (A), (B))); \ + ) + +#define label_for_each_not_in_set(I, SET, SUB, P) \ + for ((I).i = (I).j = 0; \ + ((P) = aa_label_next_not_in_set(&(I), (SET), (SUB))); \ + ) + +#define fn_for_each_XXX(L, P, FN, ...) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each ## __VA_ARGS__ (i, (L), (P)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +#define fn_for_each(L, P, FN) fn_for_each_XXX(L, P, FN) +#define fn_for_each_confined(L, P, FN) fn_for_each_XXX(L, P, FN, _confined) + +#define fn_for_each2_XXX(L1, L2, P, FN, ...) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each ## __VA_ARGS__(i, (L1), (L2), (P)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +#define fn_for_each_in_merge(L1, L2, P, FN) \ + fn_for_each2_XXX((L1), (L2), P, FN, _in_merge) +#define fn_for_each_not_in_set(L1, L2, P, FN) \ + fn_for_each2_XXX((L1), (L2), P, FN, _not_in_set) + +#define LABEL_MEDIATES(L, C) \ +({ \ + struct aa_profile *profile; \ + struct label_it i; \ + int ret = 0; \ + label_for_each(i, (L), profile) { \ + if (PROFILE_MEDIATES(profile, (C))) { \ + ret = 1; \ + break; \ + } \ + } \ + ret; \ +}) + +void aa_labelset_destroy(struct aa_labelset *ls); +void aa_labelset_init(struct aa_labelset *ls); +void __aa_labelset_update_all(struct aa_namespace *ns); + +void aa_label_destroy(struct aa_label *label); +void aa_label_free(struct aa_label *label); +void aa_label_kref(struct kref *kref); +bool aa_label_init(struct aa_label *label, int size); +struct aa_label *aa_label_alloc(int size, gfp_t gfp); + +bool aa_label_is_subset(struct aa_label *set, struct aa_label *sub); +struct aa_profile * aa_label_next_not_in_set(struct label_it *I, + struct aa_label *set, + struct aa_label *sub); +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *label); +struct aa_label *aa_label_insert(struct aa_labelset *ls, struct aa_label *l); +struct aa_label *aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert); +bool aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new); +bool aa_label_make_newest(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new); + +struct aa_label *aa_label_find(struct aa_labelset *ls, struct aa_label *l); +struct aa_label *aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, + int n); +struct aa_label *aa_label_vec_merge(struct aa_profile **vec, int len, + gfp_t gfp); + +struct aa_profile *aa_label_next_in_merge(struct label_it *I, + struct aa_label *a, + struct aa_label *b); +struct aa_label *aa_label_find_merge(struct aa_label *a, struct aa_label *b); +struct aa_label *aa_label_merge(struct aa_label *a, struct aa_label *b, + gfp_t gfp); + +bool aa_update_label_name(struct aa_namespace *ns, struct aa_label *label, + gfp_t gfp); + +int aa_profile_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_profile *profile, bool mode); +int aa_label_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, bool mode); +int aa_label_asprint(char **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +int aa_label_acntsprint(char __counted **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_audit(struct audit_buffer *ab, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_seq_print(struct seq_file *f, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_printk(struct aa_namespace *ns, struct aa_label *label, + bool mode, gfp_t gfp); +struct aa_label *aa_label_parse(struct aa_label *base, char *str, + gfp_t gfp, bool create); + +static inline struct aa_label *aa_get_label(struct aa_label *l) +{ + if (l) + kref_get(&(l->count)); + + return l; +} + +static inline struct aa_label *aa_get_label_not0(struct aa_label *l) +{ + if (l && kref_get_not0(&l->count)) + return l; + + return NULL; +} + +/** + * aa_get_label_rcu - increment refcount on a label that can be replaced + * @l: pointer to label that can be replaced (NOT NULL) + * + * Returns: pointer to a refcounted label. + * else NULL if no label + */ +static inline struct aa_label *aa_get_label_rcu(struct aa_label __rcu **l) +{ + struct aa_label *c; + + rcu_read_lock(); + do { + c = rcu_dereference(*l); + } while (c && !kref_get_not0(&c->count)); + rcu_read_unlock(); + + return c; +} + +/** + * aa_get_newest_label - find the newest version of @l + * @l: the label to check for newer versions of + * + * Returns: refcounted newest version of @l taking into account + * replacement, renames and removals + * return @l. + */ +static inline struct aa_label *aa_get_newest_label(struct aa_label *l) +{ + if (!l) + return NULL; + + if (label_invalid(l)) + return aa_get_label_rcu(&l->replacedby->label); + + return aa_get_label(l); +} + +static inline void aa_put_label(struct aa_label *l) +{ + if (l) + kref_put(&l->count, aa_label_kref); +} + + +struct aa_replacedby *aa_alloc_replacedby(struct aa_label *l); +void aa_free_replacedby_kref(struct kref *kref); + +static inline struct aa_replacedby *aa_get_replacedby(struct aa_replacedby *r) +{ + if (r) + kref_get(&(r->count)); + + return r; +} + +static inline void aa_put_replacedby(struct aa_replacedby *r) +{ + if (r) + kref_put(&r->count, aa_free_replacedby_kref); +} + +void __aa_update_replacedby(struct aa_label *orig, struct aa_label *new); + +#endif /* __AA_LABEL_H */ --- linux-4.4.0.orig/security/apparmor/include/match.h +++ linux-4.4.0/security/apparmor/include/match.h @@ -127,6 +127,21 @@ void aa_dfa_free_kref(struct kref *kref); /** + * aa_get_dfa - increment refcount on dfa @p + * @dfa: dfa (MAYBE NULL) + * + * Returns: pointer to @dfa if @dfa is NULL will return NULL + * Requires: @dfa must be held with valid refcount when called + */ +static inline struct aa_dfa *aa_get_dfa(struct aa_dfa *dfa) +{ + if (dfa) + kref_get(&(dfa->count)); + + return dfa; +} + +/** * aa_put_dfa - put a dfa refcount * @dfa: dfa to put refcount (MAYBE NULL) * --- linux-4.4.0.orig/security/apparmor/include/mount.h +++ linux-4.4.0/security/apparmor/include/mount.h @@ -0,0 +1,54 @@ +/* + * AppArmor security module + * + * This file contains AppArmor file mediation function definitions. + * + * Copyright 2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_MOUNT_H +#define __AA_MOUNT_H + +#include +#include + +#include "domain.h" +#include "policy.h" + +/* mount perms */ +#define AA_MAY_PIVOTROOT 0x01 +#define AA_MAY_MOUNT 0x02 +#define AA_MAY_UMOUNT 0x04 +#define AA_AUDIT_DATA 0x40 +#define AA_MNT_CONT_MATCH 0x40 + +#define AA_MS_IGNORE_MASK (MS_KERNMOUNT | MS_NOSEC | MS_ACTIVE | MS_BORN) + +int aa_remount(struct aa_label *label, struct path *path, unsigned long flags, + void *data); + +int aa_bind_mount(struct aa_label *label, struct path *path, + const char *old_name, unsigned long flags); + + +int aa_mount_change_type(struct aa_label *label, struct path *path, + unsigned long flags); + +int aa_move_mount(struct aa_label *label, struct path *path, + const char *old_name); + +int aa_new_mount(struct aa_label *label, const char *dev_name, + struct path *path, const char *type, unsigned long flags, + void *data); + +int aa_umount(struct aa_label *label, struct vfsmount *mnt, int flags); + +int aa_pivotroot(struct aa_label *label, struct path *old_path, + struct path *new_path); + +#endif /* __AA_MOUNT_H */ --- linux-4.4.0.orig/security/apparmor/include/net.h +++ linux-4.4.0/security/apparmor/include/net.h @@ -0,0 +1,112 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation definitions. + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_NET_H +#define __AA_NET_H + +#include +#include + +#include "apparmorfs.h" +#include "label.h" +#include "perms.h" +#include "policy.h" + +#define AA_MAY_SEND AA_MAY_WRITE +#define AA_MAY_RECEIVE AA_MAY_READ + +#define AA_MAY_SHUTDOWN AA_MAY_DELETE + +#define AA_MAY_CONNECT AA_MAY_OPEN +#define AA_MAY_ACCEPT 0x00100000 + +#define AA_MAY_BIND 0x00200000 +#define AA_MAY_LISTEN 0x00400000 + +#define AA_MAY_SETOPT 0x01000000 +#define AA_MAY_GETOPT 0x02000000 + +#define NET_PERMS_MASK (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CREATE | \ + AA_MAY_SHUTDOWN | AA_MAY_BIND | AA_MAY_LISTEN | \ + AA_MAY_CONNECT | AA_MAY_ACCEPT | AA_MAY_SETATTR | \ + AA_MAY_GETATTR | AA_MAY_SETOPT | AA_MAY_GETOPT) + +#define NET_FS_PERMS (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CREATE | \ + AA_MAY_SHUTDOWN | AA_MAY_CONNECT | AA_MAY_RENAME |\ + AA_MAY_SETATTR | AA_MAY_GETATTR | AA_MAY_CHMOD | \ + AA_MAY_CHOWN | AA_MAY_CHGRP | AA_MAY_LOCK | \ + AA_MAY_MPROT) + +#define NET_PEER_MASK (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CONNECT | \ + AA_MAY_ACCEPT) +struct aa_sk_cxt { + struct aa_label *label; + struct aa_label *peer; + struct path path; +}; + +#define SK_CXT(X) (X)->sk_security +#define SOCK_CXT(X) SOCK_INODE(X)->i_security +#define DEFINE_AUDIT_NET(NAME, OP, SK, F, T, P) \ + struct lsm_network_audit NAME ## _net = { .sk = (SK), \ + .family = (F)}; \ + DEFINE_AUDIT_DATA(NAME, \ + (SK) ? LSM_AUDIT_DATA_NET : LSM_AUDIT_DATA_NONE,\ + OP); \ + NAME.u.net = &(NAME ## _net); \ + aad(&NAME)->net.type = (T); \ + aad(&NAME)->net.protocol = (P) + +/* struct aa_net - network confinement data + * @allowed: basic network families permissions + * @audit_network: which network permissions to force audit + * @quiet_network: which network permissions to quiet rejects + */ +struct aa_net { + u16 allow[AF_MAX]; + u16 audit[AF_MAX]; + u16 quiet[AF_MAX]; +}; + + +extern struct aa_fs_entry aa_fs_entry_network[]; + +void audit_net_cb(struct audit_buffer *ab, void *va); +int aa_profile_af_perm(struct aa_profile *profile, int op, u16 family, + int type, int protocol, struct sock *sk); +int aa_af_perm(struct aa_label *label, int op, u32 request, u16 family, + int type, int protocol, struct sock *sk); +int aa_sock_perm(int op, u32 request, struct socket *sock); +int aa_sock_create_perm(struct aa_label *label, int family, int type, + int protocol); +int aa_sock_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_sock_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_sock_listen_perm(struct socket *sock, int backlog); +int aa_sock_accept_perm(struct socket *sock, struct socket *newsock); +int aa_sock_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size); +int aa_sock_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname); +int aa_sock_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock); + + +static inline void aa_free_net_rules(struct aa_net *new) +{ + /* NOP */ +} + +#endif /* __AA_NET_H */ --- linux-4.4.0.orig/security/apparmor/include/path.h +++ linux-4.4.0/security/apparmor/include/path.h @@ -18,15 +18,72 @@ enum path_flags { PATH_IS_DIR = 0x1, /* path is a directory */ + PATH_SOCK_COND = 0x2, PATH_CONNECT_PATH = 0x4, /* connect disconnected paths to / */ PATH_CHROOT_REL = 0x8, /* do path lookup relative to chroot */ PATH_CHROOT_NSCONNECT = 0x10, /* connect paths that are at ns root */ PATH_DELEGATE_DELETED = 0x08000, /* delegate deleted files */ - PATH_MEDIATE_DELETED = 0x10000, /* mediate deleted paths */ + PATH_MEDIATE_DELETED = 0x10000, /* mediate deleted paths */ }; -int aa_path_name(struct path *path, int flags, char **buffer, - const char **name, const char **info); +int aa_path_name(struct path *path, int flags, char *buffer, + const char **name, const char **info, const char *disconnect); + +#define MAX_PATH_BUFFERS 2 + +/* Per cpu buffers used during mediation */ +/* preallocated buffers to use during path lookups */ +struct aa_buffers { + char *buf[MAX_PATH_BUFFERS]; +}; + +#include +#include + +DECLARE_PER_CPU(struct aa_buffers, aa_buffers); + +#define COUNT_ARGS(X...) COUNT_ARGS_HELPER ( , ##X ,9,8,7,6,5,4,3,2,1,0) +#define COUNT_ARGS_HELPER(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,n,X...) n +#define CONCAT(X, Y) X ## Y +#define CONCAT_AFTER(X, Y) CONCAT(X, Y) + +#define ASSIGN(FN, X, N) do { (X) = FN(N); } while (0) +#define EVAL1(FN, X) ASSIGN(FN, X, 0) /*X = FN(0)*/ +#define EVAL2(FN, X, Y...) ASSIGN(FN, X, 1); /*X = FN(1);*/ EVAL1(FN, Y) +#define EVAL(FN, X...) CONCAT_AFTER(EVAL, COUNT_ARGS(X))(FN, X) + +#define for_each_cpu_buffer(I) for ((I) = 0; (I) < MAX_PATH_BUFFERS; (I)++) + +#ifdef CONFIG_DEBUG_PREEMPT +#define AA_BUG_PREEMPT_ENABLED(X) AA_BUG(preempt_count() <= 0, X) +#else +#define AA_BUG_PREEMPT_ENABLED(X) /* nop */ +#endif + +#define __get_buffer(N) ({ \ + struct aa_buffers *__cpu_var; \ + AA_BUG_PREEMPT_ENABLED("__get_buffer without preempt disabled"); \ + __cpu_var = this_cpu_ptr(&aa_buffers); \ + __cpu_var->buf[(N)]; }) + +#define __get_buffers(X...) \ +do { \ + EVAL(__get_buffer, X); \ +} while (0) + +#define __put_buffers(X, Y...) (void)&(X) + +#define get_buffers(X...) \ +do { \ + preempt_disable(); \ + __get_buffers(X); \ +} while (0) + +#define put_buffers(X, Y...) \ +do { \ + __put_buffers(X, Y); \ + preempt_enable(); \ +} while (0) #endif /* __AA_PATH_H */ --- linux-4.4.0.orig/security/apparmor/include/perms.h +++ linux-4.4.0/security/apparmor/include/perms.h @@ -0,0 +1,174 @@ +/* + * AppArmor security module + * + * This file contains AppArmor basic permission sets definitions. + * + * Copyright 2013 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_PERM_H +#define __AA_PERM_H + +#include +#include "label.h" + +#define AA_MAY_EXEC MAY_EXEC +#define AA_MAY_WRITE MAY_WRITE +#define AA_MAY_READ MAY_READ +#define AA_MAY_APPEND MAY_APPEND + +#define AA_MAY_CREATE 0x0010 +#define AA_MAY_DELETE 0x0020 +#define AA_MAY_OPEN 0x0040 +#define AA_MAY_RENAME 0x0080 /* pair */ + +#define AA_MAY_SETATTR 0x0100 /* meta write */ +#define AA_MAY_GETATTR 0x0200 /* meta read */ +#define AA_MAY_SETCRED 0x0400 /* security cred/attr */ +#define AA_MAY_GETCRED 0x0800 + +#define AA_MAY_CHMOD 0x1000 /* pair */ +#define AA_MAY_CHOWN 0x2000 /* pair */ +#define AA_MAY_CHGRP 0x4000 /* pair */ +#define AA_MAY_LOCK 0x8000 /* LINK_SUBSET overlaid */ + +#define AA_EXEC_MMAP 0x00010000 +#define AA_MAY_MPROT 0x00020000 /* extend conditions */ +#define AA_MAY_LINK 0x00040000 /* pair */ +#define AA_MAY_SNAPSHOT 0x00080000 /* pair */ + +#define AA_MAY_DELEGATE +#define AA_CONT_MATCH 0x08000000 + +#define AA_MAY_STACK 0x10000000 +#define AA_MAY_ONEXEC 0x20000000 /* either stack or change_profile */ +#define AA_MAY_CHANGE_PROFILE 0x40000000 +#define AA_MAY_CHANGEHAT 0x80000000 + +#define AA_LINK_SUBSET AA_MAY_LOCK /* overlaid */ + + +#define PERMS_CHRS_MASK (MAY_READ | MAY_WRITE | AA_MAY_CREATE | \ + AA_MAY_DELETE | AA_MAY_LINK | AA_MAY_LOCK | \ + AA_MAY_EXEC | AA_EXEC_MMAP | AA_MAY_APPEND) + +#define PERMS_NAMES_MASK (PERMS_CHRS_MASK | AA_MAY_OPEN | AA_MAY_RENAME | \ + AA_MAY_SETATTR | AA_MAY_GETATTR | AA_MAY_SETCRED | \ + AA_MAY_GETCRED | AA_MAY_CHMOD | AA_MAY_CHOWN | \ + AA_MAY_CHGRP | AA_MAY_MPROT | AA_MAY_SNAPSHOT | \ + AA_MAY_STACK | AA_MAY_ONEXEC | \ + AA_MAY_CHANGE_PROFILE | AA_MAY_CHANGEHAT) + +extern const char aa_file_perm_chrs[]; +extern const char *aa_file_perm_names[]; + + +struct aa_perms { + u32 allow; + u32 audit; /* set only when allow is set */ + + u32 deny; /* explicit deny, or conflict if allow also set */ + u32 quiet; /* set only when ~allow | deny */ + u32 kill; /* set only when ~allow | deny */ + u32 stop; /* set only when ~allow | deny */ + + u32 complain; /* accumulates only used when ~allow & ~deny */ + u32 cond; /* set only when ~allow and ~deny */ + + u32 hide; /* set only when ~allow | deny */ + u32 prompt; /* accumulates only used when ~allow & ~deny */ + + /* Reserved: + * u32 subtree; / * set only when allow is set * / + */ +}; + +#define ALL_PERMS_MASK 0xffffffff + +#define aa_perms_clear(X) memset((X), 0, sizeof(*(X))); +#define aa_perms_all(X) \ + do { \ + aa_perms_clear(X); \ + (X)->allow = ALL_PERMS_MASK; \ + /* the following are only used for denials */ \ + (X)->quiet = ALL_PERMS_MASK; \ + (X)->hide = ALL_PERMS_MASK; \ + } while (0) + +#define xcheck(FN1, FN2) \ +({ \ + int e, error = FN1; \ + e = FN2; \ + if (e) \ + error = e; \ + error; \ +}) + + +/* TODO: update for labels pointing to labels instead of profiles +* Note: this only works for profiles from a single namespace +*/ + +#define xcheck_profile_label(P, L, FN, args...) \ +({ \ + struct aa_profile *__p2; \ + fn_for_each((L), __p2, FN((P), __p2, args)); \ +}) + +#define xcheck_ns_labels(L1, L2, FN, args...) \ +({ \ + struct aa_profile *__p1; \ + fn_for_each((L1), __p1, FN(__p1, (L2), args)); \ +}) + +/* todo: fix to handle multiple namespaces */ +#define xcheck_labels(L1, L2, FN, args...) \ + xcheck_ns_labels((L1), (L2), FN, args) + +/* Do the cross check but applying FN at the profiles level */ +#define xcheck_labels_profiles(L1, L2, FN, args...) \ + xcheck_ns_labels((L1), (L2), xcheck_profile_label, (FN), args) + + +#define FINAL_CHECK true + +void aa_perm_mask_to_str(char *str, const char *chrs, u32 mask); +void aa_audit_perm_names(struct audit_buffer *ab, const char **names, u32 mask); +void aa_audit_perm_mask(struct audit_buffer *ab, u32 mask, const char *chrs, + u32 chrsmask, const char **names, u32 namesmask); +void aa_apply_modes_to_perms(struct aa_profile *profile, + struct aa_perms *perms); +void aa_compute_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms); +void aa_perms_accum(struct aa_perms *accum, struct aa_perms *addend); +void aa_perms_accum_raw(struct aa_perms *accum, struct aa_perms *addend); +void aa_profile_match_label(struct aa_profile *profile, const char *label, + int type, struct aa_perms *perms); +int aa_profile_label_perm(struct aa_profile *profile, struct aa_profile *target, + u32 request, int type, u32 *deny, + struct common_audit_data *sa); +int aa_check_perms(struct aa_profile *profile, struct aa_perms *perms, + u32 request, struct common_audit_data *sa, + void (*cb) (struct audit_buffer *, void *)); +const char *aa_peer_name(struct aa_profile *peer); + + +static inline int aa_xlabel_perm(struct aa_profile *profile, + struct aa_profile *target, + int type, u32 request, u32 reverse, + u32 * deny, struct common_audit_data *sa) +{ + /* TODO: ??? 2nd aa_profile_label_perm needs to reverse perms */ + return xcheck(aa_profile_label_perm(profile, target, request, type, + deny, sa), + aa_profile_label_perm(target, profile, request /*??*/, type, + deny, sa)); +} + + +#endif /* __AA_PERM_H */ --- linux-4.4.0.orig/security/apparmor/include/policy.h +++ linux-4.4.0/security/apparmor/include/policy.h @@ -27,8 +27,11 @@ #include "capability.h" #include "domain.h" #include "file.h" +#include "label.h" +#include "net.h" #include "resource.h" +extern const char *aa_hidden_ns_name; extern const char *const aa_profile_mode_names[]; #define APPARMOR_MODE_NAMES_MAX_INDEX 4 @@ -40,9 +43,9 @@ #define KILL_MODE(_profile) PROFILE_MODE((_profile), APPARMOR_KILL) -#define PROFILE_IS_HAT(_profile) ((_profile)->flags & PFLAG_HAT) +#define PROFILE_IS_HAT(_profile) ((_profile)->label.flags & FLAG_HAT) -#define PROFILE_INVALID(_profile) ((_profile)->flags & PFLAG_INVALID) +#define PROFILE_INVALID(_profile) ((_profile)->label.flags & FLAG_INVALID) #define on_list_rcu(X) (!list_empty(X) && (X)->prev != LIST_POISON2) @@ -59,32 +62,18 @@ APPARMOR_UNCONFINED, /* profile set to unconfined */ }; -enum profile_flags { - PFLAG_HAT = 1, /* profile is a hat */ - PFLAG_NULL = 4, /* profile is null learning profile */ - PFLAG_IX_ON_NAME_ERROR = 8, /* fallback to ix on name lookup fail */ - PFLAG_IMMUTABLE = 0x10, /* don't allow changes/replacement */ - PFLAG_USER_DEFINED = 0x20, /* user based profile - lower privs */ - PFLAG_NO_LIST_REF = 0x40, /* list doesn't keep profile ref */ - PFLAG_OLD_NULL_TRANS = 0x100, /* use // as the null transition */ - PFLAG_INVALID = 0x200, /* profile replaced/removed */ - PFLAG_NS_COUNT = 0x400, /* carries NS ref count */ - - /* These flags must correspond with PATH_flags */ - PFLAG_MEDIATE_DELETED = 0x10000, /* mediate instead delegate deleted */ -}; struct aa_profile; /* struct aa_policy - common part of both namespaces and profiles * @name: name of the object - * @hname - The hierarchical name + * @hname - The hierarchical name, NOTE: is .name of struct counted_str * @list: list policy object is on * @profiles: head of the profiles list contained in the object */ struct aa_policy { - char *name; - char *hname; + const char *name; + __counted char *hname; struct list_head list; struct list_head profiles; }; @@ -136,6 +125,8 @@ struct list_head sub_ns; atomic_t uniq_null; long uniq_id; + int level; + struct aa_labelset labels; struct dentry *dents[AAFS_NS_SIZEOF]; }; @@ -151,31 +142,24 @@ }; -struct aa_replacedby { - struct kref count; - struct aa_profile __rcu *profile; -}; - - /* struct aa_profile - basic confinement data * @base - base components of the profile (name, refcount, lists, lock ...) - * @count: reference count of the obj - * @rcu: rcu head used when removing from @list + * @label - label this profile is an extension of * @parent: parent of profile * @ns: namespace the profile is in - * @replacedby: is set to the profile that replaced this profile * @rename: optional profile name that this profile renamed * @attach: human readable attachment string * @xmatch: optional extended matching for unconfined executables names * @xmatch_len: xmatch prefix len, used to determine xmatch priority * @audit: the auditing mode of the profile * @mode: the enforcement mode of the profile - * @flags: flags controlling profile behavior * @path_flags: flags controlling path generation behavior + * @disconnected: what to prepend if attach_disconnected is specified * @size: the memory consumed by this profiles rules * @policy: general match rules governing policy * @file: The set of rules governing basic file access and domain transitions * @caps: capabilities for the profile + * @net: network controls for the profile * @rlimits: rlimits for the profile * * @dents: dentries for the profiles file entries in apparmorfs @@ -197,12 +181,10 @@ */ struct aa_profile { struct aa_policy base; - struct kref count; - struct rcu_head rcu; + struct aa_label label; struct aa_profile __rcu *parent; struct aa_namespace *ns; - struct aa_replacedby *replacedby; const char *rename; const char *attach; @@ -210,13 +192,14 @@ int xmatch_len; enum audit_mode audit; long mode; - long flags; u32 path_flags; + const char *disconnected; int size; struct aa_policydb policy; struct aa_file_rules file; struct aa_caps caps; + struct aa_net net; struct aa_rlimit rlimits; unsigned char *hash; @@ -227,25 +210,33 @@ extern struct aa_namespace *root_ns; extern enum profile_mode aa_g_profile_mode; +#define profiles_ns(P) ((P)->ns) void aa_add_profile(struct aa_policy *common, struct aa_profile *profile); bool aa_ns_visible(struct aa_namespace *curr, struct aa_namespace *view); const char *aa_ns_name(struct aa_namespace *parent, struct aa_namespace *child); +void aa_free_namespace(struct aa_namespace *ns); int aa_alloc_root_ns(void); void aa_free_root_ns(void); void aa_free_namespace_kref(struct kref *kref); struct aa_namespace *aa_find_namespace(struct aa_namespace *root, const char *name); +struct aa_namespace *aa_findn_namespace(struct aa_namespace *root, + const char *name, size_t n); +struct aa_label *aa_setup_default_label(void); -void aa_free_replacedby_kref(struct kref *kref); struct aa_profile *aa_alloc_profile(const char *name); struct aa_profile *aa_new_null_profile(struct aa_profile *parent, int hat); void aa_free_profile(struct aa_profile *profile); void aa_free_profile_kref(struct kref *kref); struct aa_profile *aa_find_child(struct aa_profile *parent, const char *name); +struct aa_profile *aa_lookupn_profile(struct aa_namespace *ns, + const char *hname, size_t n); struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *name); +struct aa_profile *aa_fqlookupn_profile(struct aa_label *base, char *fqname, + size_t n); struct aa_profile *aa_match_profile(struct aa_namespace *ns, const char *name); ssize_t aa_replace_profiles(void *udata, size_t size, bool noreplace); @@ -254,7 +245,40 @@ #define PROF_ADD 1 #define PROF_REPLACE 0 -#define unconfined(X) ((X)->mode == APPARMOR_UNCONFINED) +#define profile_unconfined(X) ((X)->mode == APPARMOR_UNCONFINED) + +/** + * aa_get_newest_profile - simple wrapper fn to wrap the label version + * @p: profile (NOT NULL) + * + * Returns refcount to newest version of the profile (maybe @p) + * + * Requires: @p must be held with a valid refcount + */ +static inline struct aa_profile *aa_get_newest_profile(struct aa_profile *p) +{ + return labels_profile(aa_get_newest_label(&p->label)); +} + +#define PROFILE_MEDIATES(P, T) ((P)->policy.start[(T)]) +/* safe version of POLICY_MEDIATES for full range input */ +static inline unsigned int PROFILE_MEDIATES_SAFE(struct aa_profile *profile, + unsigned char class) +{ + if (profile->policy.dfa) + return aa_dfa_match_len(profile->policy.dfa, + profile->policy.start[0], &class, 1); + return 0; +} + +static inline unsigned int PROFILE_MEDIATES_AF(struct aa_profile *profile, + u16 AF) { + unsigned int state = PROFILE_MEDIATES(profile, AA_CLASS_NET); + u16 be_af = cpu_to_be16(AF); + if (!state) + return 0; + return aa_dfa_match_len(profile->policy.dfa, state, (char *) &be_af, 2); +} static inline struct aa_profile *aa_deref_parent(struct aa_profile *p) @@ -273,7 +297,7 @@ static inline struct aa_profile *aa_get_profile(struct aa_profile *p) { if (p) - kref_get(&(p->count)); + kref_get(&(p->label.count)); return p; } @@ -287,7 +311,7 @@ */ static inline struct aa_profile *aa_get_profile_not0(struct aa_profile *p) { - if (p && kref_get_not0(&p->count)) + if (p && kref_get_not0(&p->label.count)) return p; return NULL; @@ -307,65 +331,20 @@ rcu_read_lock(); do { c = rcu_dereference(*p); - } while (c && !kref_get_not0(&c->count)); + } while (c && !kref_get_not0(&c->label.count)); rcu_read_unlock(); return c; } /** - * aa_get_newest_profile - find the newest version of @profile - * @profile: the profile to check for newer versions of - * - * Returns: refcounted newest version of @profile taking into account - * replacement, renames and removals - * return @profile. - */ -static inline struct aa_profile *aa_get_newest_profile(struct aa_profile *p) -{ - if (!p) - return NULL; - - if (PROFILE_INVALID(p)) - return aa_get_profile_rcu(&p->replacedby->profile); - - return aa_get_profile(p); -} - -/** * aa_put_profile - decrement refcount on profile @p * @p: profile (MAYBE NULL) */ static inline void aa_put_profile(struct aa_profile *p) { if (p) - kref_put(&p->count, aa_free_profile_kref); -} - -static inline struct aa_replacedby *aa_get_replacedby(struct aa_replacedby *p) -{ - if (p) - kref_get(&(p->count)); - - return p; -} - -static inline void aa_put_replacedby(struct aa_replacedby *p) -{ - if (p) - kref_put(&p->count, aa_free_replacedby_kref); -} - -/* requires profile list write lock held */ -static inline void __aa_update_replacedby(struct aa_profile *orig, - struct aa_profile *new) -{ - struct aa_profile *tmp; - tmp = rcu_dereference_protected(orig->replacedby->profile, - mutex_is_locked(&orig->ns->lock)); - rcu_assign_pointer(orig->replacedby->profile, aa_get_profile(new)); - orig->flags |= PFLAG_INVALID; - aa_put_profile(tmp); + kref_put(&p->label.count, aa_label_kref); } /** @@ -405,4 +384,30 @@ bool aa_may_manage_policy(int op); + +#define LOCAL_VEC_ENTRIES 8 +#define DEFINE_PROFILE_VEC(V, T) \ + struct aa_profile *(T)[LOCAL_VEC_ENTRIES]; \ + struct aa_profile **(V) + +#define aa_setup_profile_vec(V, T, L) \ +({ \ + if ((L) > LOCAL_VEC_ENTRIES) \ + (V) = kmalloc(sizeof(struct aa_profile *) * (L), GFP_KERNEL);\ + else \ + (V) = (T); \ + (V) ? 0 : -ENOMEM; \ +}) + +static inline void aa_cleanup_profile_vec(struct aa_profile **vec, \ + struct aa_profile **tmp, int len) \ +{ \ + int i; \ + for (i = 0; i < len; i++) \ + aa_put_profile(vec[i]); \ + if (vec != tmp) \ + kfree(vec); \ +} + + #endif /* __AA_POLICY_H */ --- linux-4.4.0.orig/security/apparmor/include/procattr.h +++ linux-4.4.0/security/apparmor/include/procattr.h @@ -18,7 +18,7 @@ #define AA_DO_TEST 1 #define AA_ONEXEC 1 -int aa_getprocattr(struct aa_profile *profile, char **string); +int aa_getprocattr(struct aa_label *label, char **string); int aa_setprocattr_changehat(char *args, size_t size, int test); int aa_setprocattr_changeprofile(char *fqname, bool onexec, int test); --- linux-4.4.0.orig/security/apparmor/include/resource.h +++ linux-4.4.0/security/apparmor/include/resource.h @@ -37,10 +37,10 @@ extern struct aa_fs_entry aa_fs_entry_rlimit[]; int aa_map_resource(int resource); -int aa_task_setrlimit(struct aa_profile *profile, struct task_struct *, +int aa_task_setrlimit(struct aa_label *label, struct task_struct *, unsigned int resource, struct rlimit *new_rlim); -void __aa_transition_rlimits(struct aa_profile *old, struct aa_profile *new); +void __aa_transition_rlimits(struct aa_label *old, struct aa_label *new); static inline void aa_free_rlimit_rules(struct aa_rlimit *rlims) { --- linux-4.4.0.orig/security/apparmor/include/sig_names.h +++ linux-4.4.0/security/apparmor/include/sig_names.h @@ -0,0 +1,95 @@ +#include + +#define SIGUNKNOWN 0 +#define MAXMAPPED_SIG 35 +/* provide a mapping of arch signal to internal signal # for mediation + * those that are always an alias SIGCLD for SIGCLHD and SIGPOLL for SIGIO + * map to the same entry those that may/or may not get a separate entry + */ +static const int sig_map[MAXMAPPED_SIG] = { + [0] = MAXMAPPED_SIG, /* existance test */ + [SIGHUP] = 1, + [SIGINT] = 2, + [SIGQUIT] = 3, + [SIGILL] = 4, + [SIGTRAP] = 5, /* -, 5, - */ + [SIGABRT] = 6, /* SIGIOT: -, 6, - */ + [SIGBUS] = 7, /* 10, 7, 10 */ + [SIGFPE] = 8, + [SIGKILL] = 9, + [SIGUSR1] = 10, /* 30, 10, 16 */ + [SIGSEGV] = 11, + [SIGUSR2] = 12, /* 31, 12, 17 */ + [SIGPIPE] = 13, + [SIGALRM] = 14, + [SIGTERM] = 15, + [SIGSTKFLT] = 16, /* -, 16, - */ + [SIGCHLD] = 17, /* 20, 17, 18. SIGCHLD -, -, 18 */ + [SIGCONT] = 18, /* 19, 18, 25 */ + [SIGSTOP] = 19, /* 17, 19, 23 */ + [SIGTSTP] = 20, /* 18, 20, 24 */ + [SIGTTIN] = 21, /* 21, 21, 26 */ + [SIGTTOU] = 22, /* 22, 22, 27 */ + [SIGURG] = 23, /* 16, 23, 21 */ + [SIGXCPU] = 24, /* 24, 24, 30 */ + [SIGXFSZ] = 25, /* 25, 25, 31 */ + [SIGVTALRM] = 26, /* 26, 26, 28 */ + [SIGPROF] = 27, /* 27, 27, 29 */ + [SIGWINCH] = 28, /* 28, 28, 20 */ + [SIGIO] = 29, /* SIGPOLL: 23, 29, 22 */ + [SIGPWR] = 30, /* 29, 30, 19. SIGINFO 29, -, - */ +#ifdef SIGSYS + [SIGSYS] = 31, /* 12, 31, 12. often SIG LOST/UNUSED */ +#endif +#ifdef SIGEMT + [SIGEMT] = 32, /* 7, - , 7 */ +#endif +#if defined(SIGLOST) && SIGPWR != SIGLOST /* sparc */ + [SIGLOST] = 33, /* unused on Linux */ +#endif +#if defined(SIGLOST) && defined(SIGSYS) && SIGLOST != SIGSYS + [SIGUNUSED] = 34, /* -, 31, - */ +#endif +}; + +/* this table is ordered post sig_map[sig] mapping */ +static const char *const sig_names[MAXMAPPED_SIG + 1] = { + "unknown", + "hup", + "int", + "quit", + "ill", + "trap", + "abrt", + "bus", + "fpe", + "kill", + "usr1", + "segv", + "usr2", + "pipe", + "alrm", + "term", + "stkflt", + "chld", + "cont", + "stop", + "stp", + "ttin", + "ttou", + "urg", + "xcpu", + "xfsz", + "vtalrm", + "prof", + "winch", + "io", + "pwr", + "sys", + "emt", + "lost", + "unused", + + "exists", /* always last existance test mapped to MAXMAPPED_SIG */ +}; + --- linux-4.4.0.orig/security/apparmor/ipc.c +++ linux-4.4.0/security/apparmor/ipc.c @@ -4,7 +4,7 @@ * This file contains AppArmor ipc mediation * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -20,92 +20,201 @@ #include "include/context.h" #include "include/policy.h" #include "include/ipc.h" +#include "include/sig_names.h" + +/** + * audit_ptrace_mask - convert mask to permission string + * @buffer: buffer to write string to (NOT NULL) + * @mask: permission mask to convert + */ +static void audit_ptrace_mask(struct audit_buffer *ab, u32 mask) +{ + switch (mask) { + case MAY_READ: + audit_log_string(ab, "read"); + break; + case MAY_WRITE: + audit_log_string(ab, "trace"); + break; + case AA_MAY_BE_READ: + audit_log_string(ab, "readby"); + break; + case AA_MAY_BE_TRACED: + audit_log_string(ab, "tracedby"); + break; + } +} /* call back to audit ptrace fields */ -static void audit_cb(struct audit_buffer *ab, void *va) +static void audit_ptrace_cb(struct audit_buffer *ab, void *va) { struct common_audit_data *sa = va; - audit_log_format(ab, " target="); - audit_log_untrustedstring(ab, sa->aad->target); + + if (aad(sa)->request & AA_PTRACE_PERM_MASK) { + audit_log_format(ab, " requested_mask="); + audit_ptrace_mask(ab, aad(sa)->request); + + if (aad(sa)->denied & AA_PTRACE_PERM_MASK) { + audit_log_format(ab, " denied_mask="); + audit_ptrace_mask(ab, aad(sa)->denied); + } + } + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); } -/** - * aa_audit_ptrace - do auditing for ptrace - * @profile: profile being enforced (NOT NULL) - * @target: profile being traced (NOT NULL) - * @error: error condition - * - * Returns: %0 or error code - */ -static int aa_audit_ptrace(struct aa_profile *profile, - struct aa_profile *target, int error) +/* TODO: conditionals */ +static int profile_ptrace_perm(struct aa_profile *profile, + struct aa_profile *peer, u32 request, + struct common_audit_data *sa) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = OP_PTRACE; - aad.target = target; - aad.error = error; + struct aa_perms perms; - return aa_audit(AUDIT_APPARMOR_AUTO, profile, GFP_ATOMIC, &sa, - audit_cb); + /* need because of peer in cross check */ + if (profile_unconfined(profile) || + !PROFILE_MEDIATES(profile, AA_CLASS_PTRACE)) + return 0; + + aad(sa)->target = peer->base.hname; + aa_profile_match_label(profile, aa_peer_name(peer), AA_CLASS_PTRACE, + &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, audit_ptrace_cb); +} + +static int cross_ptrace_perm(struct aa_profile *tracer, + struct aa_profile *tracee, u32 request, + struct common_audit_data *sa) +{ + if (PROFILE_MEDIATES(tracer, AA_CLASS_PTRACE)) + return xcheck(profile_ptrace_perm(tracer, tracee, request, sa), + profile_ptrace_perm(tracee, tracer, + request << PTRACE_PERM_SHIFT, + sa)); + /* policy uses the old style capability check for ptrace */ + if (profile_unconfined(tracer) || tracer == tracee) + return 0; + + aad(sa)->label = &tracer->label; + aad(sa)->target = tracee->base.hname; + aad(sa)->request = 0; + aad(sa)->error = aa_capable(&tracer->label, CAP_SYS_PTRACE, 1); + return aa_audit(AUDIT_APPARMOR_AUTO, tracer, sa, audit_ptrace_cb); } /** * aa_may_ptrace - test if tracer task can trace the tracee - * @tracer: profile of the task doing the tracing (NOT NULL) - * @tracee: task to be traced - * @mode: whether PTRACE_MODE_READ || PTRACE_MODE_ATTACH + * @tracer: label of the task doing the tracing (NOT NULL) + * @tracee: task label to be traced + * @request: permission request * * Returns: %0 else error code if permission denied or error */ -int aa_may_ptrace(struct aa_profile *tracer, struct aa_profile *tracee, - unsigned int mode) +int aa_may_ptrace(struct aa_label *tracer, struct aa_label *tracee, + u32 request) { - /* TODO: currently only based on capability, not extended ptrace - * rules, - * Test mode for PTRACE_MODE_READ || PTRACE_MODE_ATTACH - */ + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_PTRACE); - if (unconfined(tracer) || tracer == tracee) - return 0; - /* log this capability request */ - return aa_capable(tracer, CAP_SYS_PTRACE, 1); + return xcheck_labels_profiles(tracer, tracee, cross_ptrace_perm, + request, &sa); +} + + +static inline int map_signal_num(int sig) +{ + if (sig > SIGRTMAX) + return SIGUNKNOWN; + else if (sig >= SIGRTMIN) + return sig - SIGRTMIN + 128; /* rt sigs mapped to 128 */ + else if (sig <= MAXMAPPED_SIG) + return sig_map[sig]; + return SIGUNKNOWN; } /** - * aa_ptrace - do ptrace permission check and auditing - * @tracer: task doing the tracing (NOT NULL) - * @tracee: task being traced (NOT NULL) - * @mode: ptrace mode either PTRACE_MODE_READ || PTRACE_MODE_ATTACH - * - * Returns: %0 else error code if permission denied or error + * audit_file_mask - convert mask to permission string + * @buffer: buffer to write string to (NOT NULL) + * @mask: permission mask to convert */ -int aa_ptrace(struct task_struct *tracer, struct task_struct *tracee, - unsigned int mode) +static void audit_signal_mask(struct audit_buffer *ab, u32 mask) { - /* - * tracer can ptrace tracee when - * - tracer is unconfined || - * - tracer is in complain mode - * - tracer has rules allowing it to trace tracee currently this is: - * - confined by the same profile || - * - tracer profile has CAP_SYS_PTRACE - */ - - struct aa_profile *tracer_p = aa_get_task_profile(tracer); - int error = 0; - - if (!unconfined(tracer_p)) { - struct aa_profile *tracee_p = aa_get_task_profile(tracee); + if (mask & MAY_READ) + audit_log_string(ab, "receive"); + if (mask & MAY_WRITE) + audit_log_string(ab, "send"); +} - error = aa_may_ptrace(tracer_p, tracee_p, mode); - error = aa_audit_ptrace(tracer_p, tracee_p, error); +/** + * audit_cb - call back for signal specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_signal_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; - aa_put_profile(tracee_p); + if (aad(sa)->request & AA_SIGNAL_PERM_MASK) { + audit_log_format(ab, " requested_mask="); + audit_signal_mask(ab, aad(sa)->request); + if (aad(sa)->denied & AA_SIGNAL_PERM_MASK) { + audit_log_format(ab, " denied_mask="); + audit_signal_mask(ab, aad(sa)->denied); + } } - aa_put_profile(tracer_p); + if (aad(sa)->signal <= MAXMAPPED_SIG) + audit_log_format(ab, " signal=%s", sig_names[aad(sa)->signal]); + else + audit_log_format(ab, " signal=rtmin+%d", + aad(sa)->signal - 128); + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); +} + +/* TODO: update to handle compound name&name2, conditionals */ +static void profile_match_signal(struct aa_profile *profile, const char *label, + int signal, struct aa_perms *perms) +{ + unsigned int state; + if (profile->policy.dfa) { + /* TODO: secondary cache check */ + state = aa_dfa_next(profile->policy.dfa, + profile->policy.start[AA_CLASS_SIGNAL], + signal); + state = aa_dfa_match(profile->policy.dfa, state, label); + aa_compute_perms(profile->policy.dfa, state, perms); + } else + memset(perms, 0, sizeof(*perms)); +} - return error; +static int profile_signal_perm(struct aa_profile *profile, + struct aa_profile *peer, u32 request, + struct common_audit_data *sa) +{ + struct aa_perms perms; + + if (profile_unconfined(profile) || + !PROFILE_MEDIATES(profile, AA_CLASS_SIGNAL)) + return 0; + + aad(sa)->target = peer->base.hname; + profile_match_signal(profile, aa_peer_name(peer), aad(sa)->signal, + &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, audit_signal_cb); +} + +static int aa_signal_cross_perm(struct aa_profile *sender, + struct aa_profile *target, + struct common_audit_data *sa) +{ + return xcheck(profile_signal_perm(sender, target, MAY_WRITE, sa), + profile_signal_perm(target, sender, MAY_READ, sa)); +} + +int aa_may_signal(struct aa_label *sender, struct aa_label *target, int sig) +{ + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SIGNAL); + aad(&sa)->signal = map_signal_num(sig); + return xcheck_labels_profiles(sender, target, aa_signal_cross_perm, + &sa); } --- linux-4.4.0.orig/security/apparmor/label.c +++ linux-4.4.0/security/apparmor/label.c @@ -0,0 +1,1844 @@ +/* + * AppArmor security module + * + * This file contains AppArmor label definitions + * + * Copyright 2013 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include +#include + +#include "include/apparmor.h" +#include "include/label.h" +#include "include/policy.h" +#include "include/sid.h" + + +/* + * the aa_label represents the set of profiles confining an object + * + * Labels maintain a reference count to the set of pointers they reference + * Labels are ref counted by + * tasks and object via the security field/security context off the field + * code - will take a ref count on a label if it needs the label + * beyond what is possible with an rcu_read_lock. + * profiles - each profile is a label + * sids - a pinned sid will keep a refcount of the label it is + * referencing + * objects - inode, files, sockets, ... + * + * Labels are not ref counted by the label set, so they maybe removed and + * freed when no longer in use. + * + */ + +static void free_replacedby(struct aa_replacedby *r) +{ + if (r) { + /* r->label will not updated any more as r is dead */ + aa_put_label(rcu_dereference_protected(r->label, true)); + kzfree(r); + } +} + +void aa_free_replacedby_kref(struct kref *kref) +{ + struct aa_replacedby *r = container_of(kref, struct aa_replacedby, + count); + free_replacedby(r); +} + +struct aa_replacedby *aa_alloc_replacedby(struct aa_label *l) +{ + struct aa_replacedby *r; + + r = kzalloc(sizeof(struct aa_replacedby), GFP_KERNEL); + if (r) { + kref_init(&r->count); + rcu_assign_pointer(r->label, aa_get_label(l)); + } + return r; +} + +/* requires profile list write lock held */ +void __aa_update_replacedby(struct aa_label *orig, struct aa_label *new) +{ + struct aa_label *tmp; + + AA_BUG(!orig); + AA_BUG(!new); + AA_BUG(!mutex_is_locked(&labels_ns(orig)->lock)); + + tmp = rcu_dereference_protected(orig->replacedby->label, + &labels_ns(orig)->lock); + rcu_assign_pointer(orig->replacedby->label, aa_get_label(new)); + orig->flags |= FLAG_INVALID; + aa_put_label(tmp); +} + +/* helper fn for label_for_each_confined */ +int aa_label_next_confined(struct aa_label *l, int i) +{ + AA_BUG(!l); + AA_BUG(i < 0); + + for (; i < l->size; i++) { + if (!profile_unconfined(l->ent[i])) + return i; + } + + return i; +} + +#if 0 +static int label_profile_pos(struct aa_label *l, struct aa_profile *profile) +{ + struct aa_profile *p; + struct label_it i; + + AA_BUG(!profile); + AA_BUG(!l); + + label_for_each(i, l, p) { + if (p == profile) + return i.i; + } + + return -1; +} +#endif + +#if 0 +static bool profile_in_label(struct aa_profile *profile, struct aa_label *l) +{ + return label_profile_pos(l, profile) != -1; +} +#endif + +static bool label_profiles_unconfined(struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + + AA_BUG(!label); + + label_for_each(i, label, profile) { + if (!profile_unconfined(profile)) + return false; + } + + return true; +} + +static int profile_cmp(struct aa_profile *a, struct aa_profile *b); +/** + * aa_label_next_not_in_set - return the next profile of @sub not in @set + * @I: label iterator + * @set: label to test against + * @sub: label to if is subset of @set + * + * Returns: profile in @sub that is not in @set, with iterator set pos after + * else NULL if @sub is a subset of @set + */ +struct aa_profile * aa_label_next_not_in_set(struct label_it *I, + struct aa_label *set, + struct aa_label *sub) +{ + AA_BUG(!set); + AA_BUG(!I); + AA_BUG(I->i < 0); + AA_BUG(I->i > set->size); + AA_BUG(!sub); + AA_BUG(I->j < 0); + AA_BUG(I->j > sub->size); + + while (I->j < sub->size && I->i < set->size) { + int res = profile_cmp(sub->ent[I->j], set->ent[I->i]); + if (res == 0) { + (I->j)++; + (I->i)++; + } else if (res > 0) + (I->i)++; + else + return sub->ent[(I->j)++]; + } + + if (I->j < sub->size) + return sub->ent[(I->j)++]; + + return NULL; +} + +/** + * aa_label_is_subset - test if @sub is a subset of @set + * @set: label to test against + * @sub: label to test if is subset of @set + * + * Returns: true if @sub is subset of @set + * else false + */ +bool aa_label_is_subset(struct aa_label *set, struct aa_label *sub) +{ + struct label_it i = { }; + + AA_BUG(!set); + AA_BUG(!sub); + + if (sub == set) + return true; + + return aa_label_next_not_in_set(&i, set, sub) == NULL; +} + +void aa_label_destroy(struct aa_label *label) +{ + AA_BUG(!label); + + if (label_invalid(label)) + labelsetstats_dec(labels_set(label), invalid); + + if (!label_isprofile(label)) { + struct aa_profile *profile; + struct label_it i; + + aa_put_str(label->hname); + + label_for_each(i, label, profile) + aa_put_profile(profile); + } + + aa_free_sid(label->sid); + aa_put_replacedby(label->replacedby); +} + +void aa_label_free(struct aa_label *label) +{ + if (!label) + return; + + aa_label_destroy(label); + labelstats_inc(freed); + kzfree(label); +} + +static void label_free_rcu(struct rcu_head *head) +{ + struct aa_label *l = container_of(head, struct aa_label, rcu); + + if (l->flags & FLAG_NS_COUNT) + aa_free_namespace(labels_ns(l)); + else if (label_isprofile(l)) + aa_free_profile(labels_profile(l)); + else + aa_label_free(l); +} + +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *label); +void aa_label_kref(struct kref *kref) +{ + struct aa_label *l = container_of(kref, struct aa_label, count); + struct aa_namespace *ns = labels_ns(l); + + if (!ns) { + /* never live, no rcu callback needed, just using the fn */ + label_free_rcu(&l->rcu); + return; + } + + (void) aa_label_remove(&ns->labels, l); + + /* TODO: if compound label and not invalid add to reclaim cache */ + call_rcu(&l->rcu, label_free_rcu); +} + +bool aa_label_init(struct aa_label *label, int size) +{ + AA_BUG(!label); + AA_BUG(size < 1); + + label->sid = aa_alloc_sid(); + if (label->sid == AA_SID_INVALID) + return false; + + label->size = size; /* doesn't include null */ + label->ent[size] = NULL; /* null terminate */ + kref_init(&label->count); + RB_CLEAR_NODE(&label->node); + + return true; +} + +/** + * aa_label_alloc - allocate a label with a profile vector of @size length + * @size: size of profile vector in the label + * @gfp: memory allocation type + * + * Returns: new label + * else NULL if failed + */ +struct aa_label *aa_label_alloc(int size, gfp_t gfp) +{ + struct aa_label *label; + + AA_BUG(size < 1); + + /* vector: size - 2 (size of array in label struct) + 1 for null */ + label = kzalloc(sizeof(*label) + sizeof(struct aa_label *) * (size - 1), + gfp); + AA_DEBUG("%s (%p)\n", __func__, label); + if (!label) + goto fail; + + if (!aa_label_init(label, size)) + goto fail; + + labelstats_inc(allocated); + + return label; + +fail: + kfree(label); + labelstats_inc(failed); + + return NULL; +} + +static bool __aa_label_remove(struct aa_labelset *ls, struct aa_label *label) +{ + AA_BUG(!ls); + AA_BUG(!label); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(label) != ls); + + if (label_invalid(label)) + labelstats_dec(invalid_intree); + else + __label_invalidate(label); + + if (label->flags & FLAG_IN_TREE) { + labelsetstats_dec(ls, intree); + rb_erase(&label->node, &ls->root); + label->flags &= ~FLAG_IN_TREE; + return true; + } + + return false; +} + +/** + * aa_label_remove - remove a label from the labelset + * @ls: set to remove the label from + * @l: label to remove + * + * Returns: true if @l was removed from the tree + * else @l was not in tree so it could not be removed + */ +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *l) +{ + unsigned long flags; + bool res; + + write_lock_irqsave(&ls->lock, flags); + res = __aa_label_remove(ls, l); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +#if 0 +/* don't use when using ptr comparisons because nodes should never be + * the same + */ +static bool __aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new) +{ + AA_BUG(!ls); + AA_BUG(!old); + AA_BUG(!new); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(old) != ls); + AA_BUG(new->flags & FLAG_IN_TREE); + + if (label_invalid(old)) + labelstats_dec(invalid_intree); + else + __label_invalidate(old); + + if (old->flags & FLAG_IN_TREE) { + rb_replace_node(&old->node, &new->node, &ls->root); + old->flags &= ~FLAG_IN_TREE; + new->flags |= FLAG_IN_TREE; + return true; + } + + return false; +} +#endif + +static struct aa_label *__aa_label_insert(struct aa_labelset *ls, + struct aa_label *l); + +static struct aa_label *__aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert) +{ + AA_BUG(!ls); + AA_BUG(!remove); + AA_BUG(!insert); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(remove) != ls); + AA_BUG(insert->flags & FLAG_IN_TREE); + + __aa_label_remove(ls, remove); + return __aa_label_insert(ls, insert); +} + +struct aa_label *aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert) +{ + unsigned long flags; + struct aa_label *l; + + write_lock_irqsave(&ls->lock, flags); + l = aa_get_label(__aa_label_remove_and_insert(ls, remove, insert)); + write_unlock_irqrestore(&ls->lock, flags); + + return l; +} + +/** + * aa_label_replace - replace a label @old with a new version @new + * @ls: labelset being manipulated + * @old: label to replace + * @new: label replacing @old + * + * Returns: true if @old was in tree and replaced + * else @old was not in tree, and @new was not inserted + */ +bool aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new) +{ + struct aa_label *l; + unsigned long flags; + bool res; + + write_lock_irqsave(&ls->lock, flags); + if (!(old->flags & FLAG_IN_TREE)) + l = __aa_label_insert(ls, new); + else + l = __aa_label_remove_and_insert(ls, old, new); + res = (l == new); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +static int ns_cmp(struct aa_namespace *a, struct aa_namespace *b) +{ + int res; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!a->base.name); + AA_BUG(!b->base.name); + + if (a == b) + return 0; + + res = a->level - b->level; + if (res) + return res; + + return strcmp(a->base.name, b->base.name); +} + +/** + * profile_cmp - profile comparision for set ordering + * @a: profile to compare (NOT NULL) + * @b: profile to compare (NOT NULL) + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int profile_cmp(struct aa_profile *a, struct aa_profile *b) +{ + int res; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!a->ns); + AA_BUG(!b->ns); + AA_BUG(!a->base.hname); + AA_BUG(!b->base.hname); + + if (a == b || a->base.hname == b->base.hname) + return 0; + res = ns_cmp(a->ns, b->ns); + if (res) + return res; + + return strcmp(a->base.hname, b->base.hname); +} + +/** + * label_vec_cmp - label comparision for set ordering + * @a: label to compare (NOT NULL) + * @vec: vector of profiles to compare (NOT NULL) + * @n: length of @vec + * + * Returns: <0 if a < vec + * ==0 if a == vec + * >0 if a > vec + */ +static int label_vec_cmp(struct aa_label *a, struct aa_profile **vec, int n) +{ + int i; + + AA_BUG(!a); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + for (i = 0; i < a->size && i < n; i++) { + int res = profile_cmp(a->ent[i], vec[i]); + if (res != 0) + return res; + } + + return a->size - n; +} + +/** + * label_cmp - label comparision for set ordering + * @a: label to compare (NOT NULL) + * @b: label to compare (NOT NULL) + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int label_cmp(struct aa_label *a, struct aa_label *b) +{ + AA_BUG(!b); + + if (a == b) + return 0; + + return label_vec_cmp(a, b->ent, b->size); +} + +/** + * __aa_label_vec_find - find label that matches @vec in label set + * @ls: set of labels to search (NOT NULL) + * @vec: vec of profiles to find matching label for (NOT NULL) + * @n: length of @vec + * + * Requires: @ls lock held + * caller to hold a valid ref on l + * + * Returns: unref counted @label if matching label is in tree + * else NULL if @vec equiv is not in tree + */ +static struct aa_label *__aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, int n) +{ + struct rb_node *node; + + AA_BUG(!ls); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + node = ls->root.rb_node; + while (node) { + struct aa_label *this = rb_entry(node, struct aa_label, node); + int result = label_vec_cmp(this, vec, n); + + if (result > 0) + node = node->rb_left; + else if (result < 0) + node = node->rb_right; + else + return this; + } + + return NULL; +} + +/** + * __aa_label_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @l: label to find (NOT NULL) + * + * Requires: @ls lock held + * caller to hold a valid ref on l + * + * Returns: unref counted @l if @l is in tree + * unref counted label that is equiv to @l in tree + * else NULL if @l or equiv is not in tree + */ +static struct aa_label *__aa_label_find(struct aa_labelset *ls, + struct aa_label *l) +{ + AA_BUG(!l); + + return __aa_label_vec_find(ls, l->ent, l->size); +} + +/** + * aa_label_vec_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @vec: array of profiles to find equiv label for (NOT NULL) + * @n: length of @vec + * + * Returns: refcounted label if @vec equiv is in tree + * else NULL if @vec equiv is not in tree + */ +struct aa_label *aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, + int n) +{ + struct aa_label *label; + unsigned long flags; + + AA_BUG(!ls); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + read_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_vec_find(ls, vec, n)); + labelstats_inc(sread); + read_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * aa_label_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @l: label to find (NOT NULL) + * + * Requires: caller to hold a valid ref on l + * + * Returns: refcounted @l if @l is in tree + * refcounted label that is equiv to @l in tree + * else NULL if @l or equiv is not in tree + */ +struct aa_label *aa_label_find(struct aa_labelset *ls, struct aa_label *l) +{ + AA_BUG(!l); + + return aa_label_vec_find(ls, l->ent, l->size); +} + +/** + * __aa_label_insert - attempt to insert @l into a label set + * @ls: set of labels to insert @l into (NOT NULL) + * @l: new label to insert (NOT NULL) + * + * Requires: @ls->lock + * caller to hold a valid ref on l + * + * Returns: @l if successful in inserting @l + * else ref counted equivalent label that is already in the set. + */ +static struct aa_label *__aa_label_insert(struct aa_labelset *ls, + struct aa_label *l) +{ + struct rb_node **new, *parent = NULL; + + AA_BUG(!ls); + AA_BUG(!l); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(l->flags & FLAG_IN_TREE); + + /* Figure out where to put new node */ + new = &ls->root.rb_node; + while (*new) { + struct aa_label *this = rb_entry(*new, struct aa_label, node); + int result = label_cmp(l, this); + + parent = *new; + if (result == 0) { + labelsetstats_inc(ls, existing); + return this; + } else if (result < 0) + new = &((*new)->rb_left); + else /* (result > 0) */ + new = &((*new)->rb_right); + } + + /* Add new node and rebalance tree. */ + rb_link_node(&l->node, parent, new); + rb_insert_color(&l->node, &ls->root); + l->flags |= FLAG_IN_TREE; + labelsetstats_inc(ls, insert); + labelsetstats_inc(ls, intree); + + return l; +} + +/** + * aa_label_insert - insert label @l into @ls or return existing label + * @ls - labelset to insert @l into + * @l - label to insert + * + * Requires: caller to hold a valid ref on l + * + * Returns: ref counted @l if successful in inserting @l + * else ref counted equivalent label that is already in the set + */ +struct aa_label *aa_label_insert(struct aa_labelset *ls, struct aa_label *l) +{ + struct aa_label *label; + unsigned long flags; + + AA_BUG(!ls); + AA_BUG(!l); + + /* check if label exists before taking lock */ + if (!label_invalid(l)) { + read_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_find(ls, l)); + read_unlock_irqrestore(&ls->lock, flags); + labelstats_inc(fread); + if (label) + return label; + } + + write_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_insert(ls, l)); + write_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +struct aa_label *aa_label_vec_find_or_create(struct aa_labelset *ls, + struct aa_profile **vec, int len) +{ + struct aa_label *label = aa_label_vec_find(ls, vec, len); + if (label) + return label; + + return aa_label_vec_merge(vec, len, GFP_KERNEL); +} + +/** + * aa_label_next_in_merge - find the next profile when merging @a and @b + * @I: label iterator + * @a: label to merge + * @b: label to merge + * + * Returns: next profile + * else null if no more profiles + */ +struct aa_profile *aa_label_next_in_merge(struct label_it *I, + struct aa_label *a, + struct aa_label *b) +{ + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!I); + AA_BUG(I->i < 0); + AA_BUG(I->i > a->size); + AA_BUG(I->j < 0); + AA_BUG(I->j > b->size); + + if (I->i < a->size) { + if (I->j < b->size) { + int res = profile_cmp(a->ent[I->i], b->ent[I->j]); + if (res > 0) + return b->ent[(I->j)++]; + if (res == 0) + (I->j)++; + } + + return a->ent[(I->i)++]; + } + + if (I->j < b->size) + return b->ent[(I->j)++]; + + return NULL; +} + +/** + * label_merge_cmp - cmp of @a merging with @b against @z for set ordering + * @a: label to merge then compare (NOT NULL) + * @b: label to merge then compare (NOT NULL) + * @z: label to compare merge against (NOT NULL) + * + * Assumes: using the most recent versions of @a, @b, and @z + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int label_merge_cmp(struct aa_label *a, struct aa_label *b, + struct aa_label *z) +{ + struct aa_profile *p = NULL; + struct label_it i = { }; + int k; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!z); + + for (k = 0; + k < z->size && (p = aa_label_next_in_merge(&i, a, b)); + k++) { + int res = profile_cmp(p, z->ent[k]); + + if (res != 0) + return res; + } + + if (p) + return 1; + else if (k < z->size) + return -1; + return 0; +} + +#if 0 +/** + * label_merge_len - find the length of the merge of @a and @b + * @a: label to merge (NOT NULL) + * @b: label to merge (NOT NULL) + * + * Assumes: using newest versions of labels @a and @b + * + * Returns: length of a label vector for merge of @a and @b + */ +static int label_merge_len(struct aa_label *a, struct aa_label *b) +{ + int len = a->size + b->size; + int i, j; + + AA_BUG(!a); + AA_BUG(!b); + + /* find entries in common and remove from count */ + for (i = j = 0; i < a->size && j < b->size; ) { + int res = profile_cmp(a->ent[i], b->ent[j]); + if (res == 0) { + len--; + i++; + j++; + } else if (res < 0) + i++; + else + j++; + } + + return len; +} +#endif + +/** + * aa_sort_and_merge_profiles - canonical sort and merge a list of profiles + * @n: number of refcounted profiles in the list (@n > 0) + * @ps: list of profiles to sort and merge + * + * Returns: the number of duplicates eliminated == references put + */ +static int aa_sort_and_merge_profiles(int n, struct aa_profile **ps) +{ + int i, dups = 0; + + AA_BUG(n < 1); + AA_BUG(!ps); + + /* label lists are usually small so just use insertion sort */ + for (i = 1; i < n; i++) { + struct aa_profile *tmp = ps[i]; + int pos, j; + + for (pos = i - 1 - dups; pos >= 0; pos--) { + int res = profile_cmp(ps[pos], tmp); + if (res == 0) { + aa_put_profile(tmp); + dups++; + goto continue_outer; + } else if (res < 0) + break; + } + pos++; + + for (j = i - dups; j > pos; j--) + ps[j] = ps[j - 1]; + ps[pos] = tmp; + continue_outer: + ; /* sigh empty statement required after the label */ + } + + return dups; +} + +/** + * __label_merge - create a new label by merging @a and @b + * @l: preallocated label to merge into (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Returns: ref counted label either l if merge is unique + * a if b is a subset of a + * b if a is a subset of b + * + * NOTE: will not use l if the merge results in l == a or b + * + * Must be used within labelset write lock to avoid racing with + * label invalidation. + */ +static struct aa_label *__label_merge(struct aa_label *l, struct aa_label *a, + struct aa_label *b) +{ + struct aa_profile *next; + struct label_it i; + int k = 0, invcount = 0; + + AA_BUG(!a); + AA_BUG(a->size < 0); + AA_BUG(!b); + AA_BUG(b->size < 0); + AA_BUG(!l); + AA_BUG(l->size < a->size + b->size); + + if (a == b) + return aa_get_label(a); + + label_for_each_in_merge(i, a, b, next) { + if (PROFILE_INVALID(next)) { + l->ent[k] = aa_get_newest_profile(next); + if (next->label.replacedby != + l->ent[k]->label.replacedby) + invcount++; + k++; + } else + l->ent[k++] = aa_get_profile(next); + } + /* set to actual size which is <= allocated len */ + l->size = k; + l->ent[k] = NULL; + + if (invcount) { + l->size -= aa_sort_and_merge_profiles(l->size, &l->ent[0]); + if (label_profiles_unconfined(l)) + l->flags |= FLAG_UNCONFINED; + } else { + /* merge is same as at least one of the labels */ + if (k == a->size) + return aa_get_label(a); + else if (k == b->size) + return aa_get_label(b); + + l->flags |= a->flags & b->flags & FLAG_UNCONFINED; + } + + return aa_get_label(l); +} + +/** + * labelset_of_merge - find into which labelset a merged label should be inserted + * @a: label to merge and insert + * @b: label to merge and insert + * + * Returns: labelset that the merged label should be inserted into + */ +static struct aa_labelset *labelset_of_merge(struct aa_label *a, struct aa_label *b) +{ + struct aa_namespace *nsa = labels_ns(a); + struct aa_namespace *nsb = labels_ns(b); + + if (ns_cmp(nsa, nsb) <= 0) + return &nsa->labels; + return &nsb->labels; +} + +/** + * __aa_label_find_merge - find label that is equiv to merge of @a and @b + * @ls: set of labels to search (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Requires: read_lock held + * + * Returns: unref counted label that is equiv to merge of @a and @b + * else NULL if merge of @a and @b is not in set + */ +static struct aa_label *__aa_label_find_merge(struct aa_labelset *ls, + struct aa_label *a, + struct aa_label *b) +{ + struct rb_node *node; + + AA_BUG(!ls); + AA_BUG(!a); + AA_BUG(!b); + + if (a == b) + return __aa_label_find(ls, a); + + node = ls->root.rb_node; + while (node) { + struct aa_label *this = container_of(node, struct aa_label, + node); + int result = label_merge_cmp(a, b, this); + + if (result < 0) + node = node->rb_left; + else if (result > 0) + node = node->rb_right; + else + return this; + } + + return NULL; +} + + +/** + * __aa_label_find_merge - find label that is equiv to merge of @a and @b + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Requires: labels be fully constructed with a valid ns + * + * Returns: ref counted label that is equiv to merge of @a and @b + * else NULL if merge of @a and @b is not in set + */ +struct aa_label *aa_label_find_merge(struct aa_label *a, struct aa_label *b) +{ + struct aa_labelset *ls; + struct aa_label *label, *ar = NULL, *br = NULL; + unsigned long flags; + + AA_BUG(!a); + AA_BUG(!b); + + ls = labelset_of_merge(a, b); + read_lock_irqsave(&ls->lock, flags); + if (label_invalid(a)) + a = ar = aa_get_newest_label(a); + if (label_invalid(b)) + b = br = aa_get_newest_label(b); + label = aa_get_label(__aa_label_find_merge(ls, a, b)); + read_unlock_irqrestore(&ls->lock, flags); + aa_put_label(ar); + aa_put_label(br); + labelsetstats_inc(ls, msread); + + return label; +} + +/** + * aa_label_merge - attempt to insert new merged label of @a and @b + * @ls: set of labels to insert label into (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * @gfp: memory allocation type + * + * Requires: caller to hold valid refs on @a and @b + * labels be fully constructed with a valid ns + * + * Returns: ref counted new label if successful in inserting merge of a & b + * else ref counted equivalent label that is already in the set. + * else NULL if could not create label (-ENOMEM) + */ +struct aa_label *aa_label_merge(struct aa_label *a, struct aa_label *b, + gfp_t gfp) +{ + struct aa_label *label = NULL; + struct aa_labelset *ls; + unsigned long flags; + + AA_BUG(!a); + AA_BUG(!b); + + if (a == b) + return aa_get_newest_label(a); + + ls = labelset_of_merge(a, b); + + /* TODO: enable when read side is lockless + * check if label exists before taking locks + if (!label_invalid(a) && !label_invalid(b)) + label = aa_label_find_merge(a, b); + */ + + if (!label) { + struct aa_label *new, *l; + + a = aa_get_newest_label(a); + b = aa_get_newest_label(b); + + /* could use label_merge_len(a, b), but requires double + * comparison for small savings + */ + new = aa_label_alloc(a->size + b->size, gfp); + if (!new) + return NULL; + + write_lock_irqsave(&ls->lock, flags); + l = __label_merge(new, a, b); + if (l != new) { + /* new may not be fully setup so no put_label */ + aa_label_free(new); + new = NULL; + } + if (!(l->flags & FLAG_IN_TREE)) + label = aa_get_label(__aa_label_insert(ls, l)); + write_unlock_irqrestore(&ls->lock, flags); + aa_put_label(new); + aa_put_label(l); + aa_put_label(a); + aa_put_label(b); + } + + return label; +} + +/* requires sort and merge done first */ +struct aa_label *aa_label_vec_merge(struct aa_profile **vec, int len, + gfp_t gfp) +{ + struct aa_label *label = NULL; + struct aa_labelset *ls; + unsigned long flags; + struct aa_label *new; + int i; + + AA_BUG(!vec); + + if (len == 1) + return aa_get_label(&vec[0]->label); + + ls = labels_set(&vec[len - 1]->label); + + /* TODO: enable when read side is lockless + * check if label exists before taking locks + */ + new = aa_label_alloc(len, gfp); + if (!new) + return NULL; + + write_lock_irqsave(&ls->lock, flags); + for (i = 0; i < len; i++) { + new->ent[i] = aa_get_profile(vec[i]); + label = __aa_label_insert(ls, new); + if (label != new) { + aa_get_label(label); + /* not fully constructed don't put */ + aa_label_free(new); + } + } + write_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * aa_update_label_name - update a label to have a stored name + * @ns: ns being viewed from (NOT NULL) + * @label: label to update (NOT NULL) + * @gfp: type of memory allocation + * + * Requires: labels_set(label) not locked in caller + * + * note: only updates the label name if it does not have a name already + * and if it is in the labelset + */ +bool aa_update_label_name(struct aa_namespace *ns, struct aa_label *label, + gfp_t gfp) +{ + struct aa_labelset *ls; + unsigned long flags; + char __counted *name; + bool res = false; + + AA_BUG(!ns); + AA_BUG(!label); + + if (label->hname || labels_ns(label) != ns) + return res; + + if (aa_label_acntsprint(&name, ns, label, false, gfp) == -1) + return res; + + ls = labels_set(label); + write_lock_irqsave(&ls->lock, flags); + if (!label->hname && label->flags & FLAG_IN_TREE) { + label->hname = name; + res = true; + } else + aa_put_str(name); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +/* cached label name is present and visible + * @label->hname only exists if label is namespace hierachical */ +static inline bool label_name_visible(struct aa_namespace *ns, + struct aa_label *label) +{ + if (label->hname && labels_ns(label) == ns) + return true; + + return false; +} + +/* helper macro for snprint routines */ +#define update_for_len(total, len, size, str) \ +do { \ + AA_BUG(len < 0); \ + total += len; \ + len = min(len, size); \ + size -= len; \ + str += len; \ +} while (0) + +/** + * aa_modename_snprint - print the mode name of a profile or label to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode of (NOT NULL) + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: will print every mode name visible (mode1)(mode2)(mode3) + * this is likely not what is desired for most interfaces + * use aa_mode_snprint to get the standard mode format + */ +static int aa_modename_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + int total = 0; + size_t len; + + label_for_each(i, label, profile) { + const char *modestr; + if (!aa_ns_visible(ns, profile->ns)) + continue; + /* no mode for 'unconfined' */ + if (profile_unconfined(profile) && + profile == profile->ns->unconfined) + break; + modestr = aa_profile_mode_names[profile->mode]; + len = snprintf(str, size, "(%s)", modestr); + update_for_len(total, len, size, str); + } + + return total; +} + +/** + * aa_modechr_snprint - print the mode chr of a profile or labels to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode chr of (NOT NULL) + * + * Returns: size of mode string written or would be written if larger than + * available buffer + * + * Note: will print the chr of every visible profile (123) + * this is likely not what is desired for most interfaces + * use aa_mode_snprint to get the standard mode format + */ +static int aa_modechr_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + int total = 0; + size_t len; + + len = snprintf(str, size, "("); + update_for_len(total, len, size, str); + label_for_each(i, label, profile) { + const char *modestr; + if (!aa_ns_visible(ns, profile->ns)) + continue; + modestr = aa_profile_mode_names[profile->mode]; + /* just the first char of the modestr */ + len = snprintf(str, size, "%c", *modestr); + update_for_len(total, len, size, str); + } + len = snprintf(str, size, ")"); + update_for_len(total, len, size, str); + + return total; +} + +/** + * aa_mode_snprint - print the mode of a profile or label to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode of (NOT NULL) + * @count: number of label entries to be printed (<= 0 if unknown) + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: dynamically switches between mode name, and mode char format as + * appropriate + * will not print anything if the label is not visible + */ +static int aa_mode_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, int count) +{ + struct aa_profile *profile; + struct label_it i; + + if (count <= 0) { + count = 0; + label_for_each(i, label, profile) { + if (aa_ns_visible(ns, profile->ns)) + count++; + } + } + + if (count == 0) + return 0; + + if (count == 1) + return aa_modename_snprint(str, size, ns, label); + + return aa_modechr_snprint(str, size, ns, label); +} + +/** + * aa_snprint_profile - print a profile name to a buffer + * @str: buffer to write to. (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @profile: profile to view (NOT NULL) + * @mode: whether to include the mode string + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: will not print anything if the profile is not visible + */ +int aa_profile_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_profile *profile, bool mode) +{ + const char *ns_name = aa_ns_name(ns, profile->ns); + + AA_BUG(!str && size != 0); + AA_BUG(!ns); + AA_BUG(!profile); + + if (!ns_name) + return 0; + + if (mode && profile != profile->ns->unconfined) { + const char *modestr = aa_profile_mode_names[profile->mode]; + if (strlen(ns_name)) + return snprintf(str, size, ":%s://%s (%s)", ns_name, + profile->base.hname, modestr); + return snprintf(str, size, "%s (%s)", profile->base.hname, + modestr); + } + + if (strlen(ns_name)) + return snprintf(str, size, ":%s://%s", ns_name, + profile->base.hname); + return snprintf(str, size, "%s", profile->base.hname); +} + +/** + * aa_label_snprint - print a label name to a string buffer + * @str: buffer to write to. (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: labels do not have to be strictly hierarchical to the ns as + * objects may be shared across different namespaces and thus + * pickup labeling from each ns. If a particular part of the + * label is not visible it will just be excluded. And if none + * of the label is visible "---" will be used. + */ +int aa_label_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, bool mode) +{ + struct aa_profile *profile; + struct label_it i; + int count = 0, total = 0; + size_t len; + + AA_BUG(!str && size != 0); + AA_BUG(!ns); + AA_BUG(!label); + + label_for_each(i, label, profile) { + if (aa_ns_visible(ns, profile->ns)) { + if (count > 0) { + len = snprintf(str, size, "//&"); + update_for_len(total, len, size, str); + } + len = aa_profile_snprint(str, size, ns, profile, false); + update_for_len(total, len, size, str); + count++; + } + } + + if (count == 0) + return snprintf(str, size, aa_hidden_ns_name); + + /* count == 1 && ... is for backwards compat where the mode + * is not displayed for 'unconfined' in the current ns + */ + if (mode && + !(count == 1 && labels_ns(label) == ns && + labels_profile(label) == ns->unconfined)) { + len = snprintf(str, size, " "); + update_for_len(total, len, size, str); + len = aa_mode_snprint(str, size, ns, label, count); + update_for_len(total, len, size, str); + } + + return total; +} +#undef update_for_len + +/** + * aa_label_asprint - allocate a string buffer and print label into it + * @strp: Returns - the allocated buffer with the label name. (NOT NULL) + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * @gfp: kernel memory allocation type + * + * Returns: size of name written or would be written if larger than + * available buffer + */ +int aa_label_asprint(char **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + int size; + + AA_BUG(!strp); + AA_BUG(!ns); + AA_BUG(!label); + + size = aa_label_snprint(NULL, 0, ns, label, mode); + if (size < 0) + return size; + + *strp = kmalloc(size + 1, gfp); + if (!*strp) + return -ENOMEM; + return aa_label_snprint(*strp, size + 1, ns, label, mode); +} + +/** + * aa_label_acntsprint - allocate a __counted string buffer and print label + * @strp: buffer to write to. (MAY BE NULL if @size == 0) + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * @gfp: kernel memory allocation type + * + * Returns: size of name written or would be written if larger than + * available buffer + */ +int aa_label_acntsprint(char __counted **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + int size; + + AA_BUG(!strp); + AA_BUG(!ns); + AA_BUG(!label); + + size = aa_label_snprint(NULL, 0, ns, label, mode); + if (size < 0) + return size; + + *strp = aa_str_alloc(size + 1, gfp); + if (!*strp) + return -ENOMEM; + return aa_label_snprint(*strp, size + 1, ns, label, mode); +} + + +void aa_label_audit(struct audit_buffer *ab, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + const char *str; + char *name = NULL; + int len; + + AA_BUG(!ab); + AA_BUG(!ns); + AA_BUG(!label); + + if (label_name_visible(ns, label)) { + str = (char *) label->hname; + len = strlen(str); + } else { + labelstats_inc(audit_name_alloc); + len = aa_label_asprint(&name, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(audit_name_fail); + AA_DEBUG("label print error"); + return; + } + str = name; + } + + if (audit_string_contains_control(str, len)) + audit_log_n_hex(ab, str, len); + else + audit_log_n_string(ab, str, len); + + kfree(name); +} + +void aa_label_seq_print(struct seq_file *f, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + AA_BUG(!f); + AA_BUG(!ns); + AA_BUG(!label); + + if (!label_name_visible(ns, label)) { + char *str; + int len; + + labelstats_inc(seq_print_name_alloc); + len = aa_label_asprint(&str, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(seq_print_name_fail); + AA_DEBUG("label print error"); + return; + } + seq_printf(f, "%s", str); + kfree(str); + } else + seq_printf(f, "%s", label->hname); +} + +void aa_label_printk(struct aa_namespace *ns, struct aa_label *label, bool mode, + gfp_t gfp) +{ + char *str; + int len; + + AA_BUG(!ns); + AA_BUG(!label); + + if (!label_name_visible(ns, label)) { + labelstats_inc(printk_name_alloc); + len = aa_label_asprint(&str, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(printk_name_fail); + AA_DEBUG("label print error"); + return; + } + printk("%s", str); + kfree(str); + } else + printk("%s", label->hname); +} + +static int label_count_str_entries(const char *str) +{ + const char *split; + int count = 1; + + AA_BUG(!str); + + for (split = strstr(str, "//&"); split; split = strstr(str, "//&")) { + count++; + str = split + 3; + } + + return count; +} + +/** + * aa_label_parse - parse, validate and convert a text string to a label + * @base: base label to use for lookups (NOT NULL) + * @str: null terminated text string (NOT NULL) + * @gfp: allocation type + * @create: true if should create compound labels if they don't exist + * + * Returns: the matching refcounted label if present + * else ERRPTR + */ +struct aa_label *aa_label_parse(struct aa_label *base, char *str, gfp_t gfp, + bool create) +{ + DEFINE_PROFILE_VEC(vec, tmp); + struct aa_label *l; + int i, len, error; + char *split; + + AA_BUG(!base); + AA_BUG(!str); + + len = label_count_str_entries(str); + error = aa_setup_profile_vec(vec, tmp, len); + if (error) + return ERR_PTR(error); + + for (split = strstr(str, "//&"), i = 0; split && i < len; i++) { + vec[i] = aa_fqlookupn_profile(base, str, split - str); + if (!vec[i]) + goto fail; + str = split + 3; + split = strstr(str, "//&"); + } + vec[i] = aa_fqlookupn_profile(base, str, strlen(str)); + if (!vec[i]) + goto fail; + if (len == 1) + /* no need to free vec as len < LOCAL_VEC_ENTRIES */ + return &vec[0]->label; + + i = aa_sort_and_merge_profiles(len, vec); + len -= i; + + if (create) + l = aa_label_vec_find_or_create(labels_set(base), vec, len); + else + l = aa_label_vec_find(labels_set(base), vec, len); + if (!l) + l = ERR_PTR(-ENOENT); + +out: + /* use adjusted len from after sort_and_merge, not original */ + aa_cleanup_profile_vec(vec, tmp, len); + return l; + +fail: + l = ERR_PTR(-ENOENT); + goto out; +} + + +/** + * aa_labelset_destroy - remove all labels from the label set + * @ls: label set to cleanup (NOT NULL) + * + * Labels that are removed from the set may still exist beyond the set + * being destroyed depending on their reference counting + */ +void aa_labelset_destroy(struct aa_labelset *ls) +{ + struct rb_node *node; + unsigned long flags; + + AA_BUG(!ls); + + write_lock_irqsave(&ls->lock, flags); + for (node = rb_first(&ls->root); node; node = rb_first(&ls->root)) { + struct aa_label *this = rb_entry(node, struct aa_label, node); + __aa_label_remove(ls, this); + } + write_unlock_irqrestore(&ls->lock, flags); +} + +/* + * @ls: labelset to init (NOT NULL) + */ +void aa_labelset_init(struct aa_labelset *ls) +{ + AA_BUG(!ls); + + rwlock_init(&ls->lock); + ls->root = RB_ROOT; + labelstats_init(&ls); +} + +static struct aa_label *labelset_next_invalid(struct aa_labelset *ls) +{ + struct aa_label *label; + struct rb_node *node; + unsigned long flags; + + AA_BUG(!ls); + + read_lock_irqsave(&ls->lock, flags); + + __labelset_for_each(ls, node) { + struct aa_profile *p; + struct label_it i; + + label = rb_entry(node, struct aa_label, node); + if (label_invalid(label)) + goto out; + + label_for_each(i, label, p) { + if (PROFILE_INVALID(p)) + goto out; + } + } + label = NULL; + +out: + aa_get_label(label); + read_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * __label_update - insert updated version of @label into labelset + * @label - the label to update/repace + * + * Returns: new label that is up to date + * else NULL on failure + * + * Requires: @ns lock be held + * + * Note: worst case is the stale @label does not get updated and has + * to be updated at a later time. + */ +static struct aa_label *__label_update(struct aa_label *label) +{ + struct aa_label *l, *tmp; + struct aa_labelset *ls; + struct aa_profile *p; + struct label_it i; + unsigned long flags; + int invcount = 0; + + AA_BUG(!label); + AA_BUG(!mutex_is_locked(&labels_ns(label)->lock)); + + l = aa_label_alloc(label->size, GFP_KERNEL); + if (!l) + return NULL; + + if (!label->replacedby) { + struct aa_replacedby *r = aa_alloc_replacedby(l); + if (!r) { + aa_put_label(l); + return NULL; + } + /* only label update will set replacedby so ns lock is enough */ + label->replacedby = r; + } + + /* while holding the ns_lock will stop profile replacement, removal, + * and label updates, label merging and removal can be occuring + */ + + ls = labels_set(label); + write_lock_irqsave(&ls->lock, flags); + /* circular ref only broken by replace or remove */ + l->replacedby = aa_get_replacedby(label->replacedby); + __aa_update_replacedby(label, l); + + label_for_each(i, label, p) { + l->ent[i.i] = aa_get_newest_profile(p); + if (&l->ent[i.i]->label.replacedby != &p->label.replacedby) + invcount++; + } + + /* updated label invalidated by being removed/renamed from labelset */ + if (invcount) { + l->size -= aa_sort_and_merge_profiles(l->size, &l->ent[0]); + if (labels_set(label) == labels_set(l)) { + AA_BUG(__aa_label_remove_and_insert(labels_set(label), label, l) != l); + } else { + aa_label_remove(labels_set(label), label); + goto other_ls_insert; + } + } else { + AA_BUG(labels_ns(label) != labels_ns(l)); + AA_BUG(__aa_label_remove_and_insert(labels_set(label), label, l) != l); + } + write_unlock_irqrestore(&ls->lock, flags); + + return l; + +other_ls_insert: + write_unlock_irqrestore(&ls->lock, flags); + tmp = aa_label_insert(labels_set(l), l); + if (tmp != l) { + aa_put_label(l); + l = tmp; + } + + return l; +} + +/** + * __labelset_update - invalidate and update labels in @ns + * @ns: namespace to update and invalidate labels in (NOT NULL) + * + * Requires: @ns lock be held + * + * Walk the labelset ensuring that all labels are up to date and valid + * Any label that is outdated is replaced and by an updated version + * invalidated and removed from the tree. + * + * If failures happen due to memory pressures then stale labels will + * be left in place until the next pass. + */ +static void __labelset_update(struct aa_namespace *ns) +{ + struct aa_label *label; + + AA_BUG(!ns); + AA_BUG(!mutex_is_locked(&ns->lock)); + + do { + label = labelset_next_invalid(&ns->labels); + if (label) { + struct aa_label *l; + l = __label_update(label); + aa_put_label(l); + aa_put_label(label); + } + } while (label); +} + +/** + * __aa_labelset_invalidate_all - invalidate labels in @ns and below + * @ns: ns to start invalidation at (NOT NULL) + * + * Requires: @ns lock be held + * + * Invalidates labels based on @p in @ns and any children namespaces. +*/ +void __aa_labelset_update_all(struct aa_namespace *ns) +{ + struct aa_namespace *child; + + AA_BUG(!ns); + AA_BUG(!mutex_is_locked(&ns->lock)); + + __labelset_update(ns); + + list_for_each_entry(child, &ns->sub_ns, base.list) { + mutex_lock(&child->lock); + __aa_labelset_update_all(child); + mutex_unlock(&child->lock); + } +} --- linux-4.4.0.orig/security/apparmor/lib.c +++ linux-4.4.0/security/apparmor/lib.c @@ -4,7 +4,7 @@ * This file contains basic common functions used in AppArmor * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -12,14 +12,17 @@ * License. */ +#include #include #include #include #include -#include "include/audit.h" #include "include/apparmor.h" - +#include "include/audit.h" +#include "include/label.h" +#include "include/perms.h" +#include "include/policy.h" /** * aa_split_fqname - split a fqname into a profile and namespace name @@ -60,17 +63,64 @@ } /** + * skipn_spaces - Removes leading whitespace from @str. + * @str: The string to be stripped. + * + * Returns a pointer to the first non-whitespace character in @str. + * if all whitespace will return NULL + */ + +static char *skipn_spaces(const char *str, size_t n) +{ + for (;n && isspace(*str); --n) + ++str; + if (n) + return (char *)str; + return NULL; +} + +char *aa_splitn_fqname(char *fqname, size_t n, char **ns_name, size_t *ns_len) +{ + char *end = fqname + n; + char *name = skipn_spaces(fqname, n); + if (!name) + return NULL; + *ns_name = NULL; + *ns_len = 0; + if (name[0] == ':') { + char *split = strnchr(name + 1, end - name - 1, ':'); + *ns_name = skipn_spaces(&name[1], end - &name[1]); + if (!*ns_name) + return NULL; + if (split) { + *ns_len = split - *ns_name - 1; + if (*ns_len == 0) + *ns_name = NULL; + split++; + if (end - split > 1 && strncmp(split, "//", 2) == 0) + split += 2; + name = skipn_spaces(split, end - split); + } else { + /* a ns name without a following profile is allowed */ + name = NULL; + *ns_len = end - *ns_name; + } + } + if (name && *name == 0) + name = NULL; + + return name; +} + +/** * aa_info_message - log a none profile related status message * @str: message to log */ void aa_info_message(const char *str) { if (audit_enabled) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.info = str; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, 0); + aad(&sa)->info = str; aa_audit_msg(AUDIT_APPARMOR_STATUS, &sa, NULL); } printk(KERN_INFO "AppArmor: %s\n", str); @@ -104,3 +154,371 @@ } return buffer; } + + +__counted char *aa_str_alloc(int size, gfp_t gfp) +{ + struct counted_str *str; + str = kmalloc(sizeof(struct counted_str) + size, gfp); + if (!str) + return NULL; + + kref_init(&str->count); + return str->name; +} + +void aa_str_kref(struct kref *kref) +{ + kfree(container_of(kref, struct counted_str, count)); +} + + +const char aa_file_perm_chrs[] = "xwracd km l "; +const char *aa_file_perm_names[] = { + "exec", + "write", + "read", + "append", + + "create", + "delete", + "open", + "rename", + + "setattr", + "getattr", + "setcred", + "getcred", + + "chmod", + "chown", + "chgrp", + "lock", + + "mmap", + "mprot", + "link", + "snapshot", + + "unknown", + "unknown", + "unknown", + "unknown", + + "unknown", + "unknown", + "unknown", + "unknown", + + "stack", + "change_onexec", + "change_profile", + "change_hat", +}; + +/** + * aa_perm_mask_to_str - convert a perm mask to its short string + * @str: character buffer to store string in (at least 10 characters) + * @mask: permission mask to convert + */ +void aa_perm_mask_to_str(char *str, const char *chrs, u32 mask) +{ + unsigned int i, perm = 1; + for (i = 0; i < 32; perm <<= 1, i++) { + if (mask & perm) + *str++ = chrs[i]; + } + *str = '\0'; +} + +void aa_audit_perm_names(struct audit_buffer *ab, const char **names, u32 mask) +{ + const char *fmt = "%s"; + unsigned int i, perm = 1; + bool prev = false; + for (i = 0; i < 32; perm <<= 1, i++) { + if (mask & perm) { + audit_log_format(ab, fmt, names[i]); + if (!prev) { + prev = true; + fmt = " %s"; + } + } + } +} + +void aa_audit_perm_mask(struct audit_buffer *ab, u32 mask, const char *chrs, + u32 chrsmask, const char **names, u32 namesmask) +{ + char str[33]; + + audit_log_format(ab, "\""); + if ((mask & chrsmask) && chrs) { + aa_perm_mask_to_str(str, chrs, mask & chrsmask); + mask &= ~chrsmask; + audit_log_format(ab, "%s", str); + if (mask & namesmask) + audit_log_format(ab, " "); + } + if ((mask & namesmask) && names) + aa_audit_perm_names(ab, names, mask & namesmask); + audit_log_format(ab, "\""); +} + +/** + * aa_audit_perms_cb - generic callback fn for auditing perms + * @ab: audit buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void aa_audit_perms_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (aad(sa)->request) { + audit_log_format(ab, " requested_mask="); + aa_audit_perm_mask(ab, aad(sa)->request, aa_file_perm_chrs, + PERMS_CHRS_MASK, aa_file_perm_names, + PERMS_NAMES_MASK); + } + if (aad(sa)->denied) { + audit_log_format(ab, "denied_mask="); + aa_audit_perm_mask(ab, aad(sa)->denied, aa_file_perm_chrs, + PERMS_CHRS_MASK, aa_file_perm_names, + PERMS_NAMES_MASK); + } + audit_log_format(ab, " target="); + audit_log_untrustedstring(ab, aad(sa)->target); +} + +void map_old_policy_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms) +{ + +} + +/** + * aa_apply_modes_to_perms - apply namespace and profile flags to perms + * @profile: that perms where computed from + * @perms: perms to apply mode modifiers to + * + * TODO: split into profile and ns based flags for when accumulating perms + */ +void aa_apply_modes_to_perms(struct aa_profile *profile, struct aa_perms *perms) +{ + switch (AUDIT_MODE(profile)) { + case AUDIT_ALL: + perms->audit = ALL_PERMS_MASK; + /* fall through */ + case AUDIT_NOQUIET: + perms->quiet = 0; + break; + case AUDIT_QUIET: + perms->audit = 0; + /* fall through */ + case AUDIT_QUIET_DENIED: + perms->quiet = ALL_PERMS_MASK; + break; + } + + if (KILL_MODE(profile)) + perms->kill = ALL_PERMS_MASK; + else if (COMPLAIN_MODE(profile)) + perms->complain = ALL_PERMS_MASK; +/* TODO: + else if (PROMPT_MODE(profile)) + perms->prompt = ALL_PERMS_MASK; +*/ +} + +static u32 map_other(u32 x) +{ + return ((x & 0x3) << 8) | /* SETATTR/GETATTR */ + ((x & 0x1c) << 18) | /* ACCEPT/BIND/LISTEN */ + ((x & 0x60) << 19); /* SETOPT/GETOPT */ +} + +void aa_compute_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms) +{ + perms->deny = 0; + perms->kill = perms->stop = 0; + perms->complain = perms->cond = 0; + perms->hide = 0; + perms->prompt = 0; + perms->allow = dfa_user_allow(dfa, state); + perms->audit = dfa_user_audit(dfa, state); + perms->quiet = dfa_user_quiet(dfa, state); + + /* for v5 perm mapping in the policydb, the other set is used + * to extend the general perm set + */ + perms->allow |= map_other(dfa_other_allow(dfa, state)); + perms->audit |= map_other(dfa_other_audit(dfa, state)); + perms->quiet |= map_other(dfa_other_quiet(dfa, state)); +// perms->xindex = dfa_user_xindex(dfa, state); +} + +/** + * aa_perms_accum_raw - accumulate perms with out masking off overlapping perms + * @accum - perms struct to accumulate into + * @addend - perms struct to add to @accum + */ +void aa_perms_accum_raw(struct aa_perms *accum, struct aa_perms *addend) +{ + accum->deny |= addend->deny; + accum->allow &= addend->allow & ~addend->deny; + accum->audit |= addend->audit & addend->allow; + accum->quiet &= addend->quiet & ~addend->allow; + accum->kill |= addend->kill & ~addend->allow; + accum->stop |= addend->stop & ~addend->allow; + accum->complain |= addend->complain & ~addend->allow & ~addend->deny; + accum->cond |= addend->cond & ~addend->allow & ~addend->deny; + accum->hide &= addend->hide & ~addend->allow; + accum->prompt |= addend->prompt & ~addend->allow & ~addend->deny; +} + +/** + * aa_perms_accum - accumulate perms, masking off overlapping perms + * @accum - perms struct to accumulate into + * @addend - perms struct to add to @accum + */ +void aa_perms_accum(struct aa_perms *accum, struct aa_perms *addend) +{ + accum->deny |= addend->deny; + accum->allow &= addend->allow & ~accum->deny; + accum->audit |= addend->audit & accum->allow; + accum->quiet &= addend->quiet & ~accum->allow; + accum->kill |= addend->kill & ~accum->allow; + accum->stop |= addend->stop & ~accum->allow; + accum->complain |= addend->complain & ~accum->allow & ~accum->deny; + accum->cond |= addend->cond & ~accum->allow & ~accum->deny; + accum->hide &= addend->hide & ~accum->allow; + accum->prompt |= addend->prompt & ~accum->allow & ~accum->deny; +} + +void aa_profile_match_label(struct aa_profile *profile, const char *label, + int type, struct aa_perms *perms) +{ + /* TODO: doesn't yet handle extended types */ + unsigned int state; + if (profile->policy.dfa) { + state = aa_dfa_next(profile->policy.dfa, + profile->policy.start[AA_CLASS_LABEL], + type); + state = aa_dfa_match(profile->policy.dfa, state, label); + aa_compute_perms(profile->policy.dfa, state, perms); + } else + memset(perms, 0, sizeof(*perms)); +} + + +int aa_profile_label_perm(struct aa_profile *profile, struct aa_profile *target, + u32 request, int type, u32 *deny, + struct common_audit_data *sa) +{ + struct aa_perms perms; + aad(sa)->label = &profile->label; + aad(sa)->target = target; + aad(sa)->request = request; + + aa_profile_match_label(profile, target->base.hname, type, &perms); + aa_apply_modes_to_perms(profile, &perms); + *deny |= request & perms.deny; + return aa_check_perms(profile, &perms, request, sa, aa_audit_perms_cb); +} + +/** + * aa_check_perms - do audit mode selection based on perms set + * @profile: profile being checked + * @perms: perms computed for the request + * @request: requested perms + * @deny: Returns: explicit deny set + * @sa: initialized audit structure (MAY BE NULL if not auditing) + * @cb: callback fn for tpye specific fields (MAY BE NULL) + * + * Returns: 0 if permission else error code + * + * Note: profile audit modes need to be set before calling by setting the + * perm masks appropriately. + * + * If not auditing then complain mode is not enabled and the + * error code will indicate whether there was an explicit deny + * with a positive value. + */ +int aa_check_perms(struct aa_profile *profile, struct aa_perms *perms, + u32 request, struct common_audit_data *sa, + void (*cb) (struct audit_buffer *, void *)) +{ + int type, error; + bool stop = false; + u32 denied = request & (~perms->allow | perms->deny); + if (likely(!denied)) { + /* mask off perms that are not being force audited */ + request &= perms->audit; + if (!request || !sa) + return 0; + + type = AUDIT_APPARMOR_AUDIT; + error = 0; + } else { + error = -EACCES; + + if (denied & perms->kill) + type = AUDIT_APPARMOR_KILL; + else if (denied == (denied & perms->complain)) + type = AUDIT_APPARMOR_ALLOWED; + else + type = AUDIT_APPARMOR_DENIED; + + if (denied & perms->stop) + stop = true; + if (denied == (denied & perms->hide)) + error = -ENOENT; + + denied &= ~perms->quiet; + if (type != AUDIT_APPARMOR_ALLOWED && (!sa || !denied)) + return error; + } + + if (sa) { + aad(sa)->label = &profile->label; + aad(sa)->request = request; + aad(sa)->denied = denied; + aad(sa)->error = error; + aa_audit_msg(type, sa, cb); + } + + if (type == AUDIT_APPARMOR_ALLOWED) + error = 0; + + return error; +} + +const char *aa_imode_name(umode_t mode) +{ + switch(mode & S_IFMT) { + case S_IFSOCK: + return "sock"; + case S_IFLNK: + return "link"; + case S_IFREG: + return "reg"; + case S_IFBLK: + return "blkdev"; + case S_IFDIR: + return "dir"; + case S_IFCHR: + return "chrdev"; + case S_IFIFO: + return "fifo"; + } + return "unknown"; +} + +const char *aa_peer_name(struct aa_profile *peer) +{ + if (profile_unconfined(peer)) + return "unconfined"; + + return peer->base.hname; +} --- linux-4.4.0.orig/security/apparmor/lsm.c +++ linux-4.4.0/security/apparmor/lsm.c @@ -25,6 +25,7 @@ #include #include +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/apparmorfs.h" #include "include/audit.h" @@ -32,19 +33,24 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/net.h" #include "include/path.h" #include "include/policy.h" #include "include/procattr.h" +#include "include/mount.h" /* Flag indicating whether initialization completed */ int apparmor_initialized __initdata; +DEFINE_PER_CPU(struct aa_buffers, aa_buffers); + + /* * LSM hook functions */ /* - * free the associated aa_task_cxt and put its profiles + * free the associated aa_task_cxt and put its labels */ static void apparmor_cred_free(struct cred *cred) { @@ -96,34 +102,58 @@ static int apparmor_ptrace_access_check(struct task_struct *child, unsigned int mode) { - return aa_ptrace(current, child, mode); + struct aa_label *tracer, *tracee; + int error; + + tracer = aa_current_label(); + tracee = aa_get_task_label(child); + error = aa_may_ptrace(tracer, tracee, + mode == PTRACE_MODE_READ ? AA_PTRACE_READ : AA_PTRACE_TRACE); + aa_put_label(tracee); + return error; } static int apparmor_ptrace_traceme(struct task_struct *parent) { - return aa_ptrace(parent, current, PTRACE_MODE_ATTACH); + struct aa_label *tracer, *tracee; + int error; + + tracee = aa_current_label(); + tracer = aa_get_task_label(parent); + error = aa_may_ptrace(tracer, tracee, AA_PTRACE_TRACE); + aa_put_label(tracer); + return error; } /* Derived from security/commoncap.c:cap_capget */ static int apparmor_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted) { - struct aa_profile *profile; + struct aa_label *label; const struct cred *cred; rcu_read_lock(); cred = __task_cred(target); - profile = aa_cred_profile(cred); + label = aa_get_newest_cred_label(cred); /* * cap_capget is stacked ahead of this and will * initialize effective and permitted. */ - if (!unconfined(profile) && !COMPLAIN_MODE(profile)) { - *effective = cap_intersect(*effective, profile->caps.allow); - *permitted = cap_intersect(*permitted, profile->caps.allow); + if (!unconfined(label)) { + struct aa_profile *profile; + struct label_it i; + label_for_each_confined(i, label, profile) { + if (COMPLAIN_MODE(profile)) + continue; + *effective = cap_intersect(*effective, + profile->caps.allow); + *permitted = cap_intersect(*permitted, + profile->caps.allow); + } } rcu_read_unlock(); + aa_put_label(label); return 0; } @@ -131,12 +161,14 @@ static int apparmor_capable(const struct cred *cred, struct user_namespace *ns, int cap, int audit) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - profile = aa_cred_profile(cred); - if (!unconfined(profile)) - error = aa_capable(profile, cap, audit); + label = aa_get_newest_cred_label(cred); + if (!unconfined(label)) + error = aa_capable(label, cap, audit); + aa_put_label(label); + return error; } @@ -152,16 +184,36 @@ static int common_perm(int op, struct path *path, u32 mask, struct path_cond *cond) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - profile = __aa_current_profile(); - if (!unconfined(profile)) - error = aa_path_perm(op, profile, path, 0, mask, cond); + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_path_perm(op, label, path, 0, mask, cond); + aa_end_current_label(label); return error; } +static int common_perm_cond(int op, struct path *path, u32 mask) +{ + struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, + d_backing_inode(path->dentry)->i_mode + }; + + return common_perm(op, path, mask, &cond); +} + +static void apparmor_inode_free_security(struct inode *inode) +{ + struct aa_label *cxt = inode_cxt(inode); + + if (cxt) { + inode_cxt(inode) = NULL; + aa_put_label(cxt); + } +} + /** * common_perm_dir_dentry - common permission wrapper when path is dir, dentry * @op: operation being checked @@ -194,11 +246,8 @@ struct dentry *dentry, u32 mask) { struct path path = { mnt, dentry }; - struct path_cond cond = { d_backing_inode(dentry)->i_uid, - d_backing_inode(dentry)->i_mode - }; - return common_perm(op, &path, mask, &cond); + return common_perm_cond(op, &path, mask); } /** @@ -216,7 +265,7 @@ struct inode *inode = d_backing_inode(dentry); struct path_cond cond = { }; - if (!inode || !dir->mnt || !mediated_filesystem(dentry)) + if (!inode || !dir->mnt || !path_mediated_fs(dentry)) return 0; cond.uid = inode->i_uid; @@ -240,7 +289,7 @@ { struct path_cond cond = { current_fsuid(), mode }; - if (!dir->mnt || !mediated_filesystem(dir->dentry)) + if (!dir->mnt || !path_mediated_fs(dir->dentry)) return 0; return common_perm_dir_dentry(op, dir, dentry, mask, &cond); @@ -271,15 +320,10 @@ static int apparmor_path_truncate(struct path *path) { - struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, - d_backing_inode(path->dentry)->i_mode - }; - - if (!path->mnt || !mediated_filesystem(path->dentry)) + if (!path->mnt || !path_mediated_fs(path->dentry)) return 0; - return common_perm(OP_TRUNC, path, MAY_WRITE | AA_MAY_META_WRITE, - &cond); + return common_perm_cond(OP_TRUNC, path, MAY_WRITE | AA_MAY_SETATTR); } static int apparmor_path_symlink(struct path *dir, struct dentry *dentry, @@ -292,42 +336,42 @@ static int apparmor_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - if (!mediated_filesystem(old_dentry)) + if (!path_mediated_fs(old_dentry)) return 0; - profile = aa_current_profile(); - if (!unconfined(profile)) - error = aa_path_link(profile, old_dentry, new_dir, new_dentry); + label = aa_current_label(); + if (!unconfined(label)) + error = aa_path_link(label, old_dentry, new_dir, new_dentry); return error; } static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - if (!mediated_filesystem(old_dentry)) + if (!path_mediated_fs(old_dentry)) return 0; - profile = aa_current_profile(); - if (!unconfined(profile)) { + label = aa_current_label(); + if (!unconfined(label)) { struct path old_path = { old_dir->mnt, old_dentry }; struct path new_path = { new_dir->mnt, new_dentry }; struct path_cond cond = { d_backing_inode(old_dentry)->i_uid, d_backing_inode(old_dentry)->i_mode }; - error = aa_path_perm(OP_RENAME_SRC, profile, &old_path, 0, - MAY_READ | AA_MAY_META_READ | MAY_WRITE | - AA_MAY_META_WRITE | AA_MAY_DELETE, + error = aa_path_perm(OP_RENAME_SRC, label, &old_path, 0, + MAY_READ | AA_MAY_GETATTR | MAY_WRITE | + AA_MAY_SETATTR | AA_MAY_DELETE, &cond); if (!error) - error = aa_path_perm(OP_RENAME_DEST, profile, &new_path, - 0, MAY_WRITE | AA_MAY_META_WRITE | + error = aa_path_perm(OP_RENAME_DEST, label, &new_path, + 0, MAY_WRITE | AA_MAY_SETATTR | AA_MAY_CREATE, &cond); } @@ -336,40 +380,36 @@ static int apparmor_path_chmod(struct path *path, umode_t mode) { - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; - return common_perm_mnt_dentry(OP_CHMOD, path->mnt, path->dentry, AA_MAY_CHMOD); + return common_perm_cond(OP_CHMOD, path, AA_MAY_CHMOD); } static int apparmor_path_chown(struct path *path, kuid_t uid, kgid_t gid) { - struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, - d_backing_inode(path->dentry)->i_mode - }; - - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; - return common_perm(OP_CHOWN, path, AA_MAY_CHOWN, &cond); + return common_perm_cond(OP_CHOWN, path, AA_MAY_CHOWN); } static int apparmor_inode_getattr(const struct path *path) { - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; return common_perm_mnt_dentry(OP_GETATTR, path->mnt, path->dentry, - AA_MAY_META_READ); + AA_MAY_GETATTR); } static int apparmor_file_open(struct file *file, const struct cred *cred) { - struct aa_file_cxt *fcxt = file->f_security; - struct aa_profile *profile; + struct aa_file_cxt *fcxt = file_cxt(file); + struct aa_label *label; int error = 0; - if (!mediated_filesystem(file->f_path.dentry)) + if (!path_mediated_fs(file->f_path.dentry)) return 0; /* If in exec, permission is handled by bprm hooks. @@ -382,16 +422,17 @@ return 0; } - profile = aa_cred_profile(cred); - if (!unconfined(profile)) { + label = aa_get_newest_cred_label(cred); + if (!unconfined(label)) { struct inode *inode = file_inode(file); struct path_cond cond = { inode->i_uid, inode->i_mode }; - error = aa_path_perm(OP_OPEN, profile, &file->f_path, 0, + error = aa_path_perm(OP_OPEN, label, &file->f_path, 0, aa_map_file_to_perms(file), &cond); /* todo cache full allowed permissions set and state */ fcxt->allow = aa_map_file_to_perms(file); } + aa_put_label(label); return error; } @@ -399,8 +440,8 @@ static int apparmor_file_alloc_security(struct file *file) { /* freed by apparmor_file_free_security */ - file->f_security = aa_alloc_file_context(GFP_KERNEL); - if (!file->f_security) + file->f_security = aa_alloc_file_cxt(aa_current_label(), GFP_KERNEL); + if (!file_cxt(file)) return -ENOMEM; return 0; @@ -408,39 +449,26 @@ static void apparmor_file_free_security(struct file *file) { - struct aa_file_cxt *cxt = file->f_security; - - aa_free_file_context(cxt); + aa_free_file_cxt(file_cxt(file)); } static int common_file_perm(int op, struct file *file, u32 mask) { - struct aa_file_cxt *fcxt = file->f_security; - struct aa_profile *profile, *fprofile = aa_cred_profile(file->f_cred); + struct aa_label *label; int error = 0; - BUG_ON(!fprofile); - - if (!file->f_path.mnt || - !mediated_filesystem(file->f_path.dentry)) - return 0; - - profile = __aa_current_profile(); - - /* revalidate access, if task is unconfined, or the cached cred - * doesn't match or if the request is for more permissions than - * was granted. - * - * Note: the test for !unconfined(fprofile) is to handle file - * delegation from unconfined tasks - */ - if (!unconfined(profile) && !unconfined(fprofile) && - ((fprofile != profile) || (mask & ~fcxt->allow))) - error = aa_file_perm(op, profile, file, mask); + label = aa_begin_current_label(); + error = aa_file_perm(op, label, file, mask); + aa_end_current_label(label); return error; } +static int apparmor_file_receive(struct file *file) +{ + return common_file_perm(OP_FRECEIVE, file, aa_map_file_to_perms(file)); +} + static int apparmor_file_permission(struct file *file, int mask) { return common_file_perm(OP_FPERM, file, mask); @@ -461,7 +489,7 @@ { int mask = 0; - if (!file || !file->f_security) + if (!file || !file_cxt(file)) return 0; if (prot & PROT_READ) @@ -491,6 +519,64 @@ !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0); } +static int apparmor_sb_mount(const char *dev_name, struct path *path, + const char *type, unsigned long flags, void *data) +{ + struct aa_label *label; + int error = 0; + + /* Discard magic */ + if ((flags & MS_MGC_MSK) == MS_MGC_VAL) + flags &= ~MS_MGC_MSK; + + flags &= ~AA_MS_IGNORE_MASK; + + label = aa_begin_current_label(); + if (!unconfined(label)) { + if (flags & MS_REMOUNT) + error = aa_remount(label, path, flags, data); + else if (flags & MS_BIND) + error = aa_bind_mount(label, path, dev_name, flags); + else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE)) + error = aa_mount_change_type(label, path, flags); + else if (flags & MS_MOVE) + error = aa_move_mount(label, path, dev_name); + else + error = aa_new_mount(label, dev_name, path, type, + flags, data); + } + aa_end_current_label(label); + + return error; +} + +static int apparmor_sb_umount(struct vfsmount *mnt, int flags) +{ + struct aa_label *label; + int error = 0; + + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_umount(label, mnt, flags); + aa_end_current_label(label); + + return error; +} + +static int apparmor_sb_pivotroot(struct path *old_path, struct path *new_path) +{ + struct aa_label *label; + int error = 0; + + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_pivotroot(label, old_path, new_path); + aa_end_current_label(label); + + return error; +} + static int apparmor_getprocattr(struct task_struct *task, char *name, char **value) { @@ -498,21 +584,21 @@ /* released below */ const struct cred *cred = get_task_cred(task); struct aa_task_cxt *cxt = cred_cxt(cred); - struct aa_profile *profile = NULL; + struct aa_label *label = NULL; if (strcmp(name, "current") == 0) - profile = aa_get_newest_profile(cxt->profile); + label = aa_get_newest_label(cxt->label); else if (strcmp(name, "prev") == 0 && cxt->previous) - profile = aa_get_newest_profile(cxt->previous); + label = aa_get_newest_label(cxt->previous); else if (strcmp(name, "exec") == 0 && cxt->onexec) - profile = aa_get_newest_profile(cxt->onexec); + label = aa_get_newest_label(cxt->onexec); else error = -EINVAL; - if (profile) - error = aa_getprocattr(profile, value); + if (label) + error = aa_getprocattr(label, value); - aa_put_profile(profile); + aa_put_label(label); put_cred(cred); return error; @@ -521,11 +607,10 @@ static int apparmor_setprocattr(struct task_struct *task, char *name, void *value, size_t size) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; char *command, *args = value; size_t arg_size; int error; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SETPROCATTR); if (size == 0) return -EINVAL; @@ -583,34 +668,492 @@ return error; fail: - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.profile = aa_current_profile(); - aad.op = OP_SETPROCATTR; - aad.info = name; - aad.error = -EINVAL; + aad(&sa)->label = aa_current_label(); + aad(&sa)->info = name; + aad(&sa)->error = -EINVAL; aa_audit_msg(AUDIT_APPARMOR_DENIED, &sa, NULL); return -EINVAL; } +/** + * apparmor_bprm_committing_creds - do task cleanup on committing new creds + * @bprm: binprm for the exec (NOT NULL) + */ +void apparmor_bprm_committing_creds(struct linux_binprm *bprm) +{ + struct aa_label *label = aa_current_raw_label(); + struct aa_task_cxt *new_cxt = cred_cxt(bprm->cred); + + /* bail out if unconfined or not changing profile */ + if ((new_cxt->label->replacedby == label->replacedby) || + (unconfined(new_cxt->label))) + return; + + aa_inherit_files(bprm->cred, current->files); + + current->pdeath_signal = 0; + + /* reset soft limits and set hard limits for the new label */ + __aa_transition_rlimits(label, new_cxt->label); +} + +/** + * apparmor_bprm_commited_cred - do cleanup after new creds committed + * @bprm: binprm for the exec (NOT NULL) + */ +void apparmor_bprm_committed_creds(struct linux_binprm *bprm) +{ + /* TODO: cleanup signals - ipc mediation */ + return; +} + static int apparmor_task_setrlimit(struct task_struct *task, unsigned int resource, struct rlimit *new_rlim) { - struct aa_profile *profile = __aa_current_profile(); + struct aa_label *label = aa_begin_current_label(); int error = 0; - if (!unconfined(profile)) - error = aa_task_setrlimit(profile, task, resource, new_rlim); + if (!unconfined(label)) + error = aa_task_setrlimit(label, task, resource, new_rlim); + aa_end_current_label(label); return error; } +/** + * apparmor_sk_alloc_security - allocate and attach the sk_security field + */ +static int apparmor_sk_alloc_security(struct sock *sk, int family, gfp_t flags) +{ + struct aa_sk_cxt *cxt; + + cxt = kzalloc(sizeof(*cxt), flags); + if (!cxt) + return -ENOMEM; + + SK_CXT(sk) = cxt; + //??? set local too current??? + + return 0; +} + +/** + * apparmor_sk_free_security - free the sk_security field + */ +static void apparmor_sk_free_security(struct sock *sk) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + + SK_CXT(sk) = NULL; + aa_put_label(cxt->label); + aa_put_label(cxt->peer); + path_put(&cxt->path); + kfree(cxt); +} + +/** + * apparmor_clone_security - clone the sk_security field + */ +static void apparmor_sk_clone_security(const struct sock *sk, + struct sock *newsk) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + struct aa_sk_cxt *new = SK_CXT(newsk); + + new->label = aa_get_label(cxt->label); + new->peer = aa_get_label(cxt->peer); + new->path = cxt->path; + path_get(&new->path); +} + +static struct path *UNIX_FS_CONN_PATH(struct sock *sk, struct sock *newsk) +{ + if (sk->sk_family == PF_UNIX && UNIX_FS(sk)) + return &unix_sk(sk)->path; + else if (newsk->sk_family == PF_UNIX && UNIX_FS(newsk)) + return &unix_sk(newsk)->path; + return NULL; +} + +/** + * apparmor_unix_stream_connect - check perms before making unix domain conn + * + * peer is locked when this hook is called + */ +static int apparmor_unix_stream_connect(struct sock *sk, struct sock *peer_sk, + struct sock *newsk) +{ + struct aa_sk_cxt *sk_cxt = SK_CXT(sk); + struct aa_sk_cxt *peer_cxt = SK_CXT(peer_sk); + struct aa_sk_cxt *new_cxt = SK_CXT(newsk); + struct aa_label *label; + struct path *path; + int error; + + label = aa_begin_current_label(); + error = aa_unix_peer_perm(label, OP_CONNECT, + (AA_MAY_CONNECT | AA_MAY_SEND | AA_MAY_RECEIVE), + sk, peer_sk, NULL); + if (!UNIX_FS(peer_sk)) { + last_error(error, + aa_unix_peer_perm(peer_cxt->label, OP_CONNECT, + (AA_MAY_ACCEPT | AA_MAY_SEND | AA_MAY_RECEIVE), + peer_sk, sk, label)); + } + aa_end_current_label(label); + + if (error) + return error; + + /* label newsk if it wasn't labeled in post_create. Normally this + * would be done in sock_graft, but because we are directly looking + * at the peer_sk to obtain peer_labeling for unix socks this + * does not work + */ + if (!new_cxt->label) + new_cxt->label = aa_get_label(peer_cxt->label); + + /* Cross reference the peer labels for SO_PEERSEC */ + if (new_cxt->peer) + aa_put_label(new_cxt->peer); + + if (sk_cxt->peer) + aa_put_label(sk_cxt->peer); + + new_cxt->peer = aa_get_label(sk_cxt->label); + sk_cxt->peer = aa_get_label(peer_cxt->label); + + path = UNIX_FS_CONN_PATH(sk, peer_sk); + if (path) { + new_cxt->path = *path; + sk_cxt->path = *path; + path_get(path); + path_get(path); + } + return 0; +} + +/** + * apparmor_unix_may_send - check perms before conn or sending unix dgrams + * + * other is locked when this hook is called + * + * dgram connect calls may_send, peer setup but path not copied????? + */ +static int apparmor_unix_may_send(struct socket *sock, struct socket *peer) +{ + struct aa_sk_cxt *peer_cxt = SK_CXT(peer->sk); + struct aa_label *label = aa_begin_current_label(); + int error; + + error = xcheck(aa_unix_peer_perm(label, OP_SENDMSG, AA_MAY_SEND, + sock->sk, peer->sk, NULL), + aa_unix_peer_perm(peer_cxt->label, OP_SENDMSG, AA_MAY_RECEIVE, + peer->sk, sock->sk, label)); + aa_end_current_label(label); + + return error; +} + +/** + * apparmor_socket_create - check perms before creating a new socket + */ +static int apparmor_socket_create(int family, int type, int protocol, int kern) +{ + struct aa_label *label; + + label = aa_current_label(); + if (kern || unconfined(label)) + return 0; + + return aa_sock_create_perm(label, family, type, protocol); +} + +/** + * apparmor_socket_post_create - setup the per-socket security struct + * + * Note: + * - kernel sockets currently labeled unconfined but we may want to + * move to a special kernel label + * - socket may not have sk here if created with sock_create_lite or + * sock_alloc. These should be accept cases which will be handled in + * sock_graft. + */ +static int apparmor_socket_post_create(struct socket *sock, int family, + int type, int protocol, int kern) +{ + struct aa_label *label; + + if (kern) + label = aa_get_label(¤t_ns()->unconfined->label); + else + label = aa_get_label(aa_current_label()); + + if (sock->sk) { + struct aa_sk_cxt *cxt = SK_CXT(sock->sk); + aa_put_label(cxt->label); + cxt->label = aa_get_label(label); + } + aa_put_label(label); + + return 0; +} + +/** + * apparmor_socket_bind - check perms before bind addr to socket + */ +static int apparmor_socket_bind(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + return aa_sock_bind_perm(sock, address, addrlen); +} + +/** + * apparmor_socket_connect - check perms before connecting @sock to @address + */ +static int apparmor_socket_connect(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + return aa_sock_connect_perm(sock, address, addrlen); +} + +/** + * apparmor_socket_list - check perms before allowing listen + */ +static int apparmor_socket_listen(struct socket *sock, int backlog) +{ + return aa_sock_listen_perm(sock, backlog); +} + +/** + * apparmor_socket_accept - check perms before accepting a new connection. + * + * Note: while @newsock is created and has some information, the accept + * has not been done. + */ +static int apparmor_socket_accept(struct socket *sock, struct socket *newsock) +{ + return aa_sock_accept_perm(sock, newsock); +} + +/** + * apparmor_socket_sendmsg - check perms before sending msg to another socket + */ +static int apparmor_socket_sendmsg(struct socket *sock, + struct msghdr *msg, int size) +{ + int error = aa_sock_msg_perm(OP_SENDMSG, AA_MAY_SEND, sock, msg, size); + if (!error) { + /* TODO: setup delegation on scm rights + see smack for AF_INET, AF_INET6 */ + ; + } + + return error; +} + +/** + * apparmor_socket_recvmsg - check perms before receiving a message + */ +static int apparmor_socket_recvmsg(struct socket *sock, + struct msghdr *msg, int size, int flags) +{ + return aa_sock_msg_perm(OP_RECVMSG, AA_MAY_RECEIVE, sock, msg, size); +} + +/** + * apparmor_socket_getsockname - check perms before getting the local address + */ +static int apparmor_socket_getsockname(struct socket *sock) +{ + return aa_sock_perm(OP_GETSOCKNAME, AA_MAY_GETATTR, sock); +} + +/** + * apparmor_socket_getpeername - check perms before getting remote address + */ +static int apparmor_socket_getpeername(struct socket *sock) +{ + return aa_sock_perm(OP_GETPEERNAME, AA_MAY_GETATTR, sock); +} + +/** + * apparmor_getsockopt - check perms before getting socket options + */ +static int apparmor_socket_getsockopt(struct socket *sock, int level, + int optname) +{ + return aa_sock_opt_perm(OP_GETSOCKOPT, AA_MAY_GETOPT, sock, + level, optname); +} + +/** + * apparmor_setsockopt - check perms before setting socket options + */ +static int apparmor_socket_setsockopt(struct socket *sock, int level, + int optname) +{ + return aa_sock_opt_perm(OP_SETSOCKOPT, AA_MAY_SETOPT, sock, + level, optname); +} + +/** + * apparmor_socket_shutdown - check perms before shutting down @sock conn + */ +static int apparmor_socket_shutdown(struct socket *sock, int how) +{ + return aa_sock_perm(OP_SHUTDOWN, AA_MAY_SHUTDOWN, sock); +} + +/** + * apparmor_socket_sock_recv_skb - check perms before associating skb to sk + * + * Note: can not sleep maybe called with locks held + +dont want protocol specific in __skb_recv_datagram() +to deny an incoming connection socket_sock_rcv_skb() + + */ +static int apparmor_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) +{ + /* TODO: */ + return 0; +} + + +static struct aa_label *sk_peer_label(struct sock *sk) +{ + struct sock *peer_sk; + struct aa_sk_cxt *cxt = SK_CXT(sk); + + if (cxt->peer) + return cxt->peer; + + if (sk->sk_family != PF_UNIX) + return ERR_PTR(-ENOPROTOOPT); + + /* check for sockpair peering which does not go through + * security_unix_stream_connect + */ + peer_sk = unix_peer(sk); + if (peer_sk) { + cxt = SK_CXT(peer_sk); + if (cxt->label) + return cxt->label; + } + + return ERR_PTR(-ENOPROTOOPT); +} + +/** + * apparmor_socket_getpeersec_stream - get security context of peer + * + * Note: for tcp only valid if using ipsec or cipso on lan + */ +static int apparmor_socket_getpeersec_stream(struct socket *sock, + char __user *optval, + int __user *optlen, unsigned len) +{ + char *name; + int slen, error = 0; + struct aa_label *label = aa_current_label(); + struct aa_label *peer = sk_peer_label(sock->sk); + + if (IS_ERR(peer)) + return PTR_ERR(peer); + + slen = aa_label_asprint(&name, labels_ns(label), peer, true, GFP_KERNEL); + /* don't include terminating \0 in slen, it breaks some apps */ + if (slen < 0) { + error = -ENOMEM; + } else { + if (slen > len) { + error = -ERANGE; + } else if (copy_to_user(optval, name, slen)) { + error = -EFAULT; + goto out; + } + if (put_user(slen, optlen)) + error = -EFAULT; + out: + kfree(name); + + } + + return error; +} + +/** + * apparmor_socket_getpeersec_dgram - get security label of packet + * @sock: the peer socket + * @skb: packet data + * @secid: pointer to where to put the secid of the packet + * + * Sets the netlabel socket state on sk from parent + */ +static int apparmor_socket_getpeersec_dgram(struct socket *sock, + struct sk_buff *skb, u32 *secid) + +{ + /* TODO: requires secid support, and netlabel */ + return -ENOPROTOOPT; +} + +/** + * apparmor_sock_graft - Initialize newly created socket + * @sk: child sock + * @parent: parent socket + * + * Note: could set off of SOCK_CXT(parent) but need to track inode and we can + * just set sk security information off of current creating process label + * Labeling of sk for accept case - probably should be sock based + * instead of task, because of the case where an implicitly labeled + * socket is shared by different tasks. + */ +static void apparmor_sock_graft(struct sock *sk, struct socket *parent) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + if (!cxt->label) + cxt->label = aa_get_current_label(); +} + +static int apparmor_task_kill(struct task_struct *target, struct siginfo *info, + int sig, u32 secid) +{ + struct aa_label *cl, *tl; + int error; + + if (secid) + /* TODO: after secid to label mapping is done. + * Dealing with USB IO specific behavior + */ + return 0; + cl = aa_begin_current_label(); + tl = aa_get_task_label(target); + error = aa_may_signal(cl, tl, sig); + aa_put_label(tl); + aa_end_current_label(cl); + + return error; +} + +#ifndef LSM_HOOKS_NAME +#define LSM_HOOKS_NAME(X) //.name = (X), +#endif static struct security_hook_list apparmor_hooks[] = { + LSM_HOOKS_NAME("apparmor") + LSM_HOOK_INIT(ptrace_access_check, apparmor_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, apparmor_ptrace_traceme), LSM_HOOK_INIT(capget, apparmor_capget), LSM_HOOK_INIT(capable, apparmor_capable), + LSM_HOOK_INIT(inode_free_security, apparmor_inode_free_security), + + LSM_HOOK_INIT(sb_mount, apparmor_sb_mount), + LSM_HOOK_INIT(sb_umount, apparmor_sb_umount), + LSM_HOOK_INIT(sb_pivotroot, apparmor_sb_pivotroot), + LSM_HOOK_INIT(path_link, apparmor_path_link), LSM_HOOK_INIT(path_unlink, apparmor_path_unlink), LSM_HOOK_INIT(path_symlink, apparmor_path_symlink), @@ -624,16 +1167,43 @@ LSM_HOOK_INIT(inode_getattr, apparmor_inode_getattr), LSM_HOOK_INIT(file_open, apparmor_file_open), + LSM_HOOK_INIT(file_receive, apparmor_file_receive), LSM_HOOK_INIT(file_permission, apparmor_file_permission), LSM_HOOK_INIT(file_alloc_security, apparmor_file_alloc_security), LSM_HOOK_INIT(file_free_security, apparmor_file_free_security), LSM_HOOK_INIT(mmap_file, apparmor_mmap_file), + LSM_HOOK_INIT(mmap_addr, cap_mmap_addr), LSM_HOOK_INIT(file_mprotect, apparmor_file_mprotect), LSM_HOOK_INIT(file_lock, apparmor_file_lock), LSM_HOOK_INIT(getprocattr, apparmor_getprocattr), LSM_HOOK_INIT(setprocattr, apparmor_setprocattr), + LSM_HOOK_INIT(sk_alloc_security, apparmor_sk_alloc_security), + LSM_HOOK_INIT(sk_free_security, apparmor_sk_free_security), + LSM_HOOK_INIT(sk_clone_security, apparmor_sk_clone_security), + + LSM_HOOK_INIT(unix_stream_connect, apparmor_unix_stream_connect), + LSM_HOOK_INIT(unix_may_send, apparmor_unix_may_send), + + LSM_HOOK_INIT(socket_create, apparmor_socket_create), + LSM_HOOK_INIT(socket_post_create, apparmor_socket_post_create), + LSM_HOOK_INIT(socket_bind, apparmor_socket_bind), + LSM_HOOK_INIT(socket_connect, apparmor_socket_connect), + LSM_HOOK_INIT(socket_listen, apparmor_socket_listen), + LSM_HOOK_INIT(socket_accept, apparmor_socket_accept), + LSM_HOOK_INIT(socket_sendmsg, apparmor_socket_sendmsg), + LSM_HOOK_INIT(socket_recvmsg, apparmor_socket_recvmsg), + LSM_HOOK_INIT(socket_getsockname, apparmor_socket_getsockname), + LSM_HOOK_INIT(socket_getpeername, apparmor_socket_getpeername), + LSM_HOOK_INIT(socket_getsockopt, apparmor_socket_getsockopt), + LSM_HOOK_INIT(socket_setsockopt, apparmor_socket_setsockopt), + LSM_HOOK_INIT(socket_shutdown, apparmor_socket_shutdown), + LSM_HOOK_INIT(socket_sock_rcv_skb, apparmor_socket_sock_rcv_skb), + LSM_HOOK_INIT(socket_getpeersec_stream, apparmor_socket_getpeersec_stream), + LSM_HOOK_INIT(socket_getpeersec_dgram, apparmor_socket_getpeersec_dgram), + LSM_HOOK_INIT(sock_graft, apparmor_sock_graft), + LSM_HOOK_INIT(cred_alloc_blank, apparmor_cred_alloc_blank), LSM_HOOK_INIT(cred_free, apparmor_cred_free), LSM_HOOK_INIT(cred_prepare, apparmor_cred_prepare), @@ -645,6 +1215,7 @@ LSM_HOOK_INIT(bprm_secureexec, apparmor_bprm_secureexec), LSM_HOOK_INIT(task_setrlimit, apparmor_task_setrlimit), + LSM_HOOK_INIT(task_kill, apparmor_task_kill), }; /* @@ -692,6 +1263,10 @@ module_param_call(mode, param_set_mode, param_get_mode, &aa_g_profile_mode, S_IRUSR | S_IWUSR); +/* whether policy verification hashing is enabled */ +bool aa_g_hash_policy = CONFIG_SECURITY_APPARMOR_HASH_DEFAULT; +module_param_named(hash_policy, aa_g_hash_policy, aabool, S_IRUSR | S_IWUSR); + /* Debug mode */ bool aa_g_debug; module_param_named(debug, aa_g_debug, aabool, S_IRUSR | S_IWUSR); @@ -735,6 +1310,11 @@ static bool apparmor_enabled = CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE; module_param_named(enabled, apparmor_enabled, bool, S_IRUGO); +/* Boot time to set use of default or unconfined as initial profile */ +bool aa_g_unconfined_init = CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT; +module_param_named(unconfined, aa_g_unconfined_init, bool, S_IRUSR); + + static int __init apparmor_enabled_setup(char *str) { unsigned long enabled; @@ -863,8 +1443,6 @@ /** * set_init_cxt - set a task context and profile on the first task. - * - * TODO: allow setting an alternate profile than unconfined */ static int __init set_init_cxt(void) { @@ -875,12 +1453,56 @@ if (!cxt) return -ENOMEM; - cxt->profile = aa_get_profile(root_ns->unconfined); + if (!aa_g_unconfined_init) { + cxt->label = aa_setup_default_label(); + if (!cxt->label) { + aa_free_task_context(cxt); + return -ENOMEM; + } + /* fs setup of default is done in aa_create_aafs() */ + } else + cxt->label = aa_get_label(&root_ns->unconfined->label); cred_cxt(cred) = cxt; return 0; } +static void destroy_buffers(void) +{ + u32 i, j; + + for_each_possible_cpu(i) { + for_each_cpu_buffer(j) { + kfree(per_cpu(aa_buffers, i).buf[j]); + per_cpu(aa_buffers, i).buf[j] = NULL; + } + } +} + +static int __init alloc_buffers(void) +{ + u32 i, j; + + for_each_possible_cpu(i) { + for_each_cpu_buffer(j) { + char *buffer; + if (cpu_to_node(i) > num_online_nodes()) + /* fallback to kmalloc for offline nodes */ + buffer = kmalloc(aa_g_path_max, GFP_KERNEL); + else + buffer = kmalloc_node(aa_g_path_max, GFP_KERNEL, + cpu_to_node(i)); + if (!buffer) { + destroy_buffers(); + return -ENOMEM; + } + per_cpu(aa_buffers, i).buf[j] = buffer; + } + } + + return 0; +} + static int __init apparmor_init(void) { int error; @@ -897,11 +1519,17 @@ goto alloc_out; } + error = alloc_buffers(); + if (error) { + AA_ERROR("Unable to allocate work buffers\n"); + goto buffers_out; + } + error = set_init_cxt(); if (error) { AA_ERROR("Failed to set context on init task\n"); aa_free_root_ns(); - goto alloc_out; + goto buffers_out; } security_add_hooks(apparmor_hooks, ARRAY_SIZE(apparmor_hooks)); @@ -916,6 +1544,9 @@ return error; +buffers_out: + destroy_buffers(); + alloc_out: aa_destroy_aafs(); --- linux-4.4.0.orig/security/apparmor/mount.c +++ linux-4.4.0/security/apparmor/mount.c @@ -0,0 +1,701 @@ +/* + * AppArmor security module + * + * This file contains AppArmor mediation of files + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include +#include +#include + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/domain.h" +#include "include/file.h" +#include "include/match.h" +#include "include/mount.h" +#include "include/path.h" +#include "include/policy.h" + + +static void audit_mnt_flags(struct audit_buffer *ab, unsigned long flags) +{ + if (flags & MS_RDONLY) + audit_log_format(ab, "ro"); + else + audit_log_format(ab, "rw"); + if (flags & MS_NOSUID) + audit_log_format(ab, ", nosuid"); + if (flags & MS_NODEV) + audit_log_format(ab, ", nodev"); + if (flags & MS_NOEXEC) + audit_log_format(ab, ", noexec"); + if (flags & MS_SYNCHRONOUS) + audit_log_format(ab, ", sync"); + if (flags & MS_REMOUNT) + audit_log_format(ab, ", remount"); + if (flags & MS_MANDLOCK) + audit_log_format(ab, ", mand"); + if (flags & MS_DIRSYNC) + audit_log_format(ab, ", dirsync"); + if (flags & MS_NOATIME) + audit_log_format(ab, ", noatime"); + if (flags & MS_NODIRATIME) + audit_log_format(ab, ", nodiratime"); + if (flags & MS_BIND) + audit_log_format(ab, flags & MS_REC ? ", rbind" : ", bind"); + if (flags & MS_MOVE) + audit_log_format(ab, ", move"); + if (flags & MS_SILENT) + audit_log_format(ab, ", silent"); + if (flags & MS_POSIXACL) + audit_log_format(ab, ", acl"); + if (flags & MS_UNBINDABLE) + audit_log_format(ab, flags & MS_REC ? ", runbindable" : + ", unbindable"); + if (flags & MS_PRIVATE) + audit_log_format(ab, flags & MS_REC ? ", rprivate" : + ", private"); + if (flags & MS_SLAVE) + audit_log_format(ab, flags & MS_REC ? ", rslave" : + ", slave"); + if (flags & MS_SHARED) + audit_log_format(ab, flags & MS_REC ? ", rshared" : + ", shared"); + if (flags & MS_RELATIME) + audit_log_format(ab, ", relatime"); + if (flags & MS_I_VERSION) + audit_log_format(ab, ", iversion"); + if (flags & MS_STRICTATIME) + audit_log_format(ab, ", strictatime"); + if (flags & MS_NOUSER) + audit_log_format(ab, ", nouser"); +} + +/** + * audit_cb - call back for mount specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (aad(sa)->mnt.type) { + audit_log_format(ab, " fstype="); + audit_log_untrustedstring(ab, aad(sa)->mnt.type); + } + if (aad(sa)->mnt.src_name) { + audit_log_format(ab, " srcname="); + audit_log_untrustedstring(ab, aad(sa)->mnt.src_name); + } + if (aad(sa)->mnt.trans) { + audit_log_format(ab, " trans="); + audit_log_untrustedstring(ab, aad(sa)->mnt.trans); + } + if (aad(sa)->mnt.flags || aad(sa)->op == OP_MOUNT) { + audit_log_format(ab, " flags=\""); + audit_mnt_flags(ab, aad(sa)->mnt.flags); + audit_log_format(ab, "\""); + } + if (aad(sa)->mnt.data) { + audit_log_format(ab, " options="); + audit_log_untrustedstring(ab, aad(sa)->mnt.data); + } +} + +/** + * audit_mount - handle the auditing of mount operations + * @profile: the profile being enforced (NOT NULL) + * @op: operation being mediated (NOT NULL) + * @name: name of object being mediated (MAYBE NULL) + * @src_name: src_name of object being mediated (MAYBE_NULL) + * @type: type of filesystem (MAYBE_NULL) + * @trans: name of trans (MAYBE NULL) + * @flags: filesystem idependent mount flags + * @data: filesystem mount flags + * @request: permissions requested + * @perms: the permissions computed for the request (NOT NULL) + * @info: extra information message (MAYBE NULL) + * @error: 0 if operation allowed else failure error code + * + * Returns: %0 or error on failure + */ +static int audit_mount(struct aa_profile *profile, int op, const char *name, + const char *src_name, const char *type, + const char *trans, unsigned long flags, + const void *data, u32 request, struct file_perms *perms, + const char *info, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + + if (likely(!error)) { + u32 mask = perms->audit; + + if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) + mask = 0xffff; + + /* mask off perms that are not being force audited */ + request &= mask; + + if (likely(!request)) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + /* only report permissions that were denied */ + request = request & ~perms->allow; + + if (request & perms->kill) + audit_type = AUDIT_APPARMOR_KILL; + + /* quiet known rejects, assumes quiet and kill do not overlap */ + if ((request & perms->quiet) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + request &= ~perms->quiet; + + if (!request) + return COMPLAIN_MODE(profile) ? + complain_error(error) : error; + } + + aad(&sa)->name = name; + aad(&sa)->mnt.src_name = src_name; + aad(&sa)->mnt.type = type; + aad(&sa)->mnt.trans = trans; + aad(&sa)->mnt.flags = flags; + if (data && (perms->audit & AA_AUDIT_DATA)) + aad(&sa)->mnt.data = data; + aad(&sa)->info = info; + aad(&sa)->error = error; + + return aa_audit(audit_type, profile, &sa, audit_cb); +} + +/** + * match_mnt_flags - Do an ordered match on mount flags + * @dfa: dfa to match against + * @state: state to start in + * @flags: mount flags to match against + * + * Mount flags are encoded as an ordered match. This is done instead of + * checking against a simple bitmask, to allow for logical operations + * on the flags. + * + * Returns: next state after flags match + */ +static unsigned int match_mnt_flags(struct aa_dfa *dfa, unsigned int state, + unsigned long flags) +{ + unsigned int i; + + for (i = 0; i <= 31 ; ++i) { + if ((1 << i) & flags) + state = aa_dfa_next(dfa, state, i + 1); + } + + return state; +} + +/** + * compute_mnt_perms - compute mount permission associated with @state + * @dfa: dfa to match against (NOT NULL) + * @state: state match finished in + * + * Returns: mount permissions + */ +static struct file_perms compute_mnt_perms(struct aa_dfa *dfa, + unsigned int state) +{ + struct file_perms perms; + + perms.kill = 0; + perms.allow = dfa_user_allow(dfa, state); + perms.audit = dfa_user_audit(dfa, state); + perms.quiet = dfa_user_quiet(dfa, state); + perms.xindex = dfa_user_xindex(dfa, state); + + return perms; +} + +static const char *mnt_info_table[] = { + "match succeeded", + "failed mntpnt match", + "failed srcname match", + "failed type match", + "failed flags match", + "failed data match" +}; + +/* + * Returns 0 on success else element that match failed in, this is the + * index into the mnt_info_table above + */ +static int do_match_mnt(struct aa_dfa *dfa, unsigned int start, + const char *mntpnt, const char *devname, + const char *type, unsigned long flags, + void *data, bool binary, struct file_perms *perms) +{ + unsigned int state; + + state = aa_dfa_match(dfa, start, mntpnt); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 1; + + if (devname) + state = aa_dfa_match(dfa, state, devname); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 2; + + if (type) + state = aa_dfa_match(dfa, state, type); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 3; + + state = match_mnt_flags(dfa, state, flags); + if (!state) + return 4; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + + /* only match data if not binary and the DFA flags data is expected */ + if (data && !binary && (perms->allow & AA_MNT_CONT_MATCH)) { + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 4; + + state = aa_dfa_match(dfa, state, data); + if (!state) + return 5; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + } + + /* failed at end of flags match */ + return 4; +} + +/** + * match_mnt - handle path matching for mount + * @profile: the confining profile + * @mntpnt: string for the mntpnt (NOT NULL) + * @devname: string for the devname/src_name (MAYBE NULL) + * @type: string for the dev type (MAYBE NULL) + * @flags: mount flags to match + * @data: fs mount data (MAYBE NULL) + * @binary: whether @data is binary + * @perms: Returns: permission found by the match + * @info: Returns: infomation string about the match for logging + * + * Returns: 0 on success else error + */ +static int match_mnt(struct aa_profile *profile, const char *mntpnt, + const char *devname, const char *type, + unsigned long flags, void *data, bool binary) +{ + struct file_perms perms = { }; + const char *info = NULL; + int pos, error = -EACCES; + + if (!profile->policy.dfa) + goto audit; + + pos = do_match_mnt(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + mntpnt, devname, type, flags, data, binary, &perms); + if (pos) { + info = mnt_info_table[pos]; + goto audit; + } + error = 0; + +audit: + return audit_mount(profile, OP_MOUNT, mntpnt, devname, type, NULL, + flags, data, AA_MAY_MOUNT, &perms, info, error); +} + +static int path_flags(struct aa_profile *profile, struct path *path) +{ + return profile->path_flags | + (S_ISDIR(path->dentry->d_inode->i_mode) ? PATH_IS_DIR : 0); +} + +int aa_remount(struct aa_label *label, struct path *path, unsigned long flags, + void *data) +{ + struct aa_profile *profile; + const char *name, *info = NULL; + char *buffer = NULL; + bool binary; + int error; + + binary = path->dentry->d_sb->s_type->fs_flags & FS_BINARY_MOUNTDATA; + + get_buffers(buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = audit_mount(labels_profile(label), OP_MOUNT, name, NULL, + NULL, NULL, flags, data, AA_MAY_MOUNT, + &nullperms, info, error); + goto out; + } + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, NULL, NULL, flags, data, + binary)); + +out: + put_buffers(buffer); + + return error; +} + +int aa_bind_mount(struct aa_label *label, struct path *path, + const char *dev_name, unsigned long flags) +{ + struct aa_profile *profile; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!dev_name || !*dev_name) + return -EINVAL; + + flags &= MS_REC | MS_BIND; + + error = kern_path(dev_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path); + if (error) + return error; + + get_buffers(buffer, old_buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), buffer, &name, + &info, labels_profile(label)->disconnected); + if (error) + goto error; + + error = aa_path_name(&old_path, path_flags(labels_profile(label), + &old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + path_put(&old_path); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, old_name, NULL, flags, NULL, + false)); + +out: + put_buffers(buffer, old_buffer); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, old_name, NULL, + NULL, flags, NULL, AA_MAY_MOUNT, &nullperms, + info, error)); + goto out; +} + +int aa_mount_change_type(struct aa_label *label, struct path *path, + unsigned long flags) +{ + struct aa_profile *profile; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + /* These are the flags allowed by do_change_type() */ + flags &= (MS_REC | MS_SILENT | MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE); + + get_buffers(buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, NULL, + NULL, NULL, flags, NULL, + AA_MAY_MOUNT, &nullperms, info, + error)); + goto out; + } + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, NULL, NULL, flags, NULL, + false)); + +out: + put_buffers(buffer); + + return error; +} + +int aa_move_mount(struct aa_label *label, struct path *path, + const char *orig_name) +{ + struct aa_profile *profile; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!orig_name || !*orig_name) + return -EINVAL; + + error = kern_path(orig_name, LOOKUP_FOLLOW, &old_path); + if (error) + return error; + + get_buffers(buffer, old_buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = aa_path_name(&old_path, path_flags(labels_profile(label), + &old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + path_put(&old_path); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, old_name, NULL, MS_MOVE, NULL, + false)); + +out: + put_buffers(buffer, old_buffer); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, old_name, NULL, + NULL, MS_MOVE, NULL, AA_MAY_MOUNT, + &nullperms, info, error)); + goto out; +} + +int aa_new_mount(struct aa_label *label, const char *orig_dev_name, + struct path *path, const char *type, unsigned long flags, + void *data) +{ + struct aa_profile *profile; + char *buffer = NULL, *dev_buffer = NULL; + const char *name = NULL, *dev_name = NULL, *info = NULL; + bool binary = true; + int error; + int requires_dev = 0; + struct path dev_path; + + dev_name = orig_dev_name; + if (type) { + struct file_system_type *fstype; + fstype = get_fs_type(type); + if (!fstype) + return -ENODEV; + binary = fstype->fs_flags & FS_BINARY_MOUNTDATA; + requires_dev = fstype->fs_flags & FS_REQUIRES_DEV; + put_filesystem(fstype); + + if (requires_dev) { + if (!dev_name || !*dev_name) + return -ENOENT; + + error = kern_path(dev_name, LOOKUP_FOLLOW, &dev_path); + if (error) + return error; + } + } + + get_buffers(buffer, dev_buffer); + if (type && requires_dev) { + error = aa_path_name(&dev_path, + path_flags(labels_profile(label), + &dev_path), + dev_buffer, &dev_name, &info, + labels_profile(label)->disconnected); + path_put(&dev_path); + if (error) + goto error; + } + + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, dev_name, type, flags, data, + binary)); + +cleanup: + put_buffers(buffer, dev_buffer); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(labels_profile(label), OP_MOUNT, name, + dev_name, type, NULL, flags, data, + AA_MAY_MOUNT, &nullperms, info, error)); + goto cleanup; +} + +static int profile_umount(struct aa_profile *profile, const char *name) +{ + struct file_perms perms = { }; + const char *info = NULL; + int e = 0; + + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + name); + perms = compute_mnt_perms(profile->policy.dfa, state); + if (AA_MAY_UMOUNT & ~perms.allow) + e = -EACCES; + } else + e = -EACCES; + return audit_mount(profile, OP_UMOUNT, name, NULL, NULL, NULL, 0, NULL, + AA_MAY_UMOUNT, &perms, info, e); +} + +int aa_umount(struct aa_label *label, struct vfsmount *mnt, int flags) +{ + struct aa_profile *profile; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + struct path path = { mnt, mnt->mnt_root }; + get_buffers(buffer); + error = aa_path_name(&path, path_flags(labels_profile(label), &path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = fn_for_each(label, profile, + audit_mount(profile, OP_UMOUNT, name, NULL, + NULL, NULL, 0, NULL, AA_MAY_UMOUNT, + &nullperms, info, error)); + goto out; + } + + error = fn_for_each_confined(label, profile, + profile_umount(profile, name)); + +out: + put_buffers(buffer); + + return error; +} + +static int profile_pivotroot(struct aa_profile *profile, const char *new_name, + const char *old_name, struct aa_profile **trans) +{ + struct aa_profile *target = NULL; + struct file_perms perms = { }; + const char *info = NULL; + int error = -EACCES; + + /* TODO: actual domain transition computation for multiple + * profiles + */ + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + new_name); + state = aa_dfa_null_transition(profile->policy.dfa, state); + state = aa_dfa_match(profile->policy.dfa, state, old_name); + perms = compute_mnt_perms(profile->policy.dfa, state); + + if (AA_MAY_PIVOTROOT & perms.allow) { + if ((perms.xindex & AA_X_TYPE_MASK) == AA_X_TABLE) { + target = x_table_lookup(profile, perms.xindex); + if (!target) + error = -ENOENT; + else + *trans = target; + } else + error = 0; + } + } + + error = audit_mount(profile, OP_PIVOTROOT, new_name, old_name, + NULL, target ? target->base.name : NULL, + 0, NULL, AA_MAY_PIVOTROOT, &perms, info, + error); + if (!*trans) + aa_put_profile(target); + + return error; +} + +int aa_pivotroot(struct aa_label *label, struct path *old_path, + struct path *new_path) +{ + struct aa_profile *profile, *target = NULL; + char *old_buffer = NULL, *new_buffer = NULL; + const char *old_name, *new_name = NULL, *info = NULL; + int error; + + get_buffers(old_buffer, new_buffer); + error = aa_path_name(old_path, path_flags(labels_profile(label), + old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = aa_path_name(new_path, path_flags(labels_profile(label), + new_path), + new_buffer, &new_name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = fn_for_each(label, profile, + profile_pivotroot(profile, new_name, old_name, + &target)); +out: + put_buffers(old_buffer, new_buffer); + + if (target) + error = aa_replace_current_label(&target->label); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_PIVOTROOT, new_name, old_name, + NULL, NULL, + 0, NULL, AA_MAY_PIVOTROOT, &nullperms, info, + error)); + goto out; +} --- linux-4.4.0.orig/security/apparmor/net.c +++ linux-4.4.0/security/apparmor/net.c @@ -0,0 +1,397 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include "include/af_unix.h" +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/label.h" +#include "include/net.h" +#include "include/policy.h" + +#include "net_names.h" + + +struct aa_fs_entry aa_fs_entry_network[] = { + AA_FS_FILE_STRING("af_mask", AA_FS_AF_MASK), + AA_FS_FILE_BOOLEAN("af_unix", 1), + { } +}; + +static const char *net_mask_names[] = { + "unknown", + "send", + "receive", + "unknown", + + "create", + "shutdown", + "connect", + "unknown", + + "setattr", + "getattr", + "setcred", + "getcred", + + "chmod", + "chown", + "chgrp", + "lock", + + "mmap", + "mprot", + "unknown", + "unknown", + + "accept", + "bind", + "listen", + "unknown", + + "setopt", + "getopt", + "unknown", + "unknown", + + "unknown", + "unknown", + "unknown", + "unknown", +}; + +static void audit_unix_addr(struct audit_buffer *ab, const char *str, + struct sockaddr_un *addr, int addrlen) +{ + int len = unix_addr_len(addrlen); + + if (!addr || len <= 0) { + audit_log_format(ab, " %s=none", str); + } else if (addr->sun_path[0]) { + audit_log_format(ab, " %s=", str); + audit_log_untrustedstring(ab, addr->sun_path); + } else { + audit_log_format(ab, " %s=\"@", str); + if (audit_string_contains_control(&addr->sun_path[1], len - 1)) + audit_log_n_hex(ab, &addr->sun_path[1], len - 1); + else + audit_log_format(ab, "%.*s", len - 1, + &addr->sun_path[1]); + audit_log_format(ab, "\""); + } +} + +static void audit_unix_sk_addr(struct audit_buffer *ab, const char *str, + struct sock *sk) +{ + struct unix_sock *u = unix_sk(sk); + if (u && u->addr) + audit_unix_addr(ab, str, u->addr->name, u->addr->len); + else + audit_unix_addr(ab, str, NULL, 0); +} + +/* audit callback for net specific fields */ +void audit_net_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + audit_log_format(ab, " family="); + if (address_family_names[sa->u.net->family]) { + audit_log_string(ab, address_family_names[sa->u.net->family]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->u.net->family); + } + audit_log_format(ab, " sock_type="); + if (sock_type_names[aad(sa)->net.type]) { + audit_log_string(ab, sock_type_names[aad(sa)->net.type]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", aad(sa)->net.type); + } + audit_log_format(ab, " protocol=%d", aad(sa)->net.protocol); + + if (aad(sa)->request & NET_PERMS_MASK) { + audit_log_format(ab, " requested_mask="); + aa_audit_perm_mask(ab, aad(sa)->request, NULL, 0, + net_mask_names, NET_PERMS_MASK); + + if (aad(sa)->denied & NET_PERMS_MASK) { + audit_log_format(ab, " denied_mask="); + aa_audit_perm_mask(ab, aad(sa)->denied, NULL, 0, + net_mask_names, NET_PERMS_MASK); + } + } + if (sa->u.net->family == AF_UNIX) { + if ((aad(sa)->request & ~NET_PEER_MASK) && aad(sa)->net.addr) + audit_unix_addr(ab, "addr", + unix_addr(aad(sa)->net.addr), + aad(sa)->net.addrlen); + else + audit_unix_sk_addr(ab, "addr", sa->u.net->sk); + if (aad(sa)->request & NET_PEER_MASK) { + if (aad(sa)->net.addr) + audit_unix_addr(ab, "peer_addr", + unix_addr(aad(sa)->net.addr), + aad(sa)->net.addrlen); + else + audit_unix_sk_addr(ab, "peer_addr", + aad(sa)->net.peer_sk); + } + } + if (aad(sa)->target) { + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); + } +} + +/** + * audit_net - audit network access + * @profile: profile being enforced (NOT NULL) + * @op: operation being checked + * @family: network family + * @type: network type + * @protocol: network protocol + * @sk: socket auditing is being applied to + * @error: error code for failure else 0 + * + * Returns: %0 or sa->error else other errorcode on failure + */ +static int audit_net(struct aa_profile *profile, int op, u16 family, int type, + int protocol, struct sock *sk, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + DEFINE_AUDIT_NET(sa, op, sk, family, type, protocol); + aad(&sa)->error = error; + + if (likely(!aad(&sa)->error)) { + u16 audit_mask = profile->net.audit[sa.u.net->family]; + if (likely((AUDIT_MODE(profile) != AUDIT_ALL) && + !(1 << aad(&sa)->net.type & audit_mask))) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + u16 quiet_mask = profile->net.quiet[sa.u.net->family]; + u16 kill_mask = 0; + u16 denied = (1 << aad(&sa)->net.type); + + if (denied & kill_mask) + audit_type = AUDIT_APPARMOR_KILL; + + if ((denied & quiet_mask) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + return COMPLAIN_MODE(profile) ? 0 : aad(&sa)->error; + } + + return aa_audit(audit_type, profile, &sa, audit_net_cb); +} + +static inline int aa_af_mask_perm(struct aa_profile *profile, u16 family, + int type) +{ + u16 family_mask; + + AA_BUG(family >= AF_MAX); + AA_BUG(type < 0 && type >= SOCK_MAX); + + if (profile_unconfined(profile)) + return 0; + + family_mask = profile->net.allow[family]; + return (family_mask & (1 << type)) ? 0 : -EACCES; + +} + +/* Generic af perm */ +int aa_profile_af_perm(struct aa_profile *profile, int op, u16 family, + int type, int protocol, struct sock *sk) +{ + int error = aa_af_mask_perm(profile, family, type); + + return audit_net(profile, op, family, type, protocol, sk, error); +} + +int aa_af_perm(struct aa_label *label, int op, u32 request, u16 family, + int type, int protocol, struct sock *sk) +{ + struct aa_profile *profile; + + return fn_for_each_confined(label, profile, + aa_profile_af_perm(profile, op, family, type, protocol, + sk)); +} + +static int aa_label_sk_perm(struct aa_label *label, int op, u32 request, + struct sock *sk) +{ + struct aa_profile *profile; + + AA_BUG(!label); + AA_BUG(!sk); + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + aa_profile_af_perm(profile, op, sk->sk_family, + sk->sk_type, sk->sk_protocol, + sk)); + +} + +static int aa_sk_perm(int op, u32 request, struct sock *sk) +{ + struct aa_label *label; + + AA_BUG(!sk); + AA_BUG(in_interrupt()); + + /* TODO: switch to begin_current_label ???? */ + label = aa_current_label(); + return aa_label_sk_perm(label, op, request, sk); +} + +#define af_select(FAMILY, FN, DEF_FN) \ +({ \ + int __e; \ + switch ((FAMILY)) { \ + case AF_UNIX: \ + __e = aa_unix_ ## FN; \ + break; \ + default: \ + __e = DEF_FN; \ + } \ + __e; \ +}) + +/* TODO: push into lsm.c ???? */ + +/* revaliation, get/set attr, shutdown */ +int aa_sock_perm(int op, u32 request, struct socket *sock) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + sock_perm(op, request, sock), + aa_sk_perm(op, request, sock->sk)); +} + +int aa_sock_create_perm(struct aa_label *label, int family, int type, + int protocol) +{ + AA_BUG(!label); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(family, + create_perm(label, family, type, protocol), + aa_af_perm(label, OP_CREATE, AA_MAY_CREATE, family, + type, protocol, NULL)); +} + +int aa_sock_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!address); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + bind_perm(sock, address, addrlen), + aa_sk_perm(OP_BIND, AA_MAY_BIND, sock->sk)); +} + +int aa_sock_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!address); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + connect_perm(sock, address, addrlen), + aa_sk_perm(OP_CONNECT, AA_MAY_CONNECT, sock->sk)); +} + +int aa_sock_listen_perm(struct socket *sock, int backlog) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + listen_perm(sock, backlog), + aa_sk_perm(OP_LISTEN, AA_MAY_LISTEN, sock->sk)); +} + +/* ability of sock to connect, not peer address binding */ +int aa_sock_accept_perm(struct socket *sock, struct socket *newsock) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!newsock); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + accept_perm(sock, newsock), + aa_sk_perm(OP_ACCEPT, AA_MAY_ACCEPT, sock->sk)); +} + +/* sendmsg, recvmsg */ +int aa_sock_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!msg); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + msg_perm(op, request, sock, msg, size), + aa_sk_perm(op, request, sock->sk)); +} + +/* revaliation, get/set attr, opt */ +int aa_sock_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + opt_perm(op, request, sock, level, optname), + aa_sk_perm(op, request, sock->sk)); +} + +int aa_sock_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock) +{ + AA_BUG(!label); + AA_BUG(!sock); + AA_BUG(!sock->sk); + + return af_select(sock->sk->sk_family, + file_perm(label, op, request, sock), + aa_label_sk_perm(label, op, request, sock->sk)); +} --- linux-4.4.0.orig/security/apparmor/path.c +++ linux-4.4.0/security/apparmor/path.c @@ -25,7 +25,6 @@ #include "include/path.h" #include "include/policy.h" - /* modified from dcache.c */ static int prepend(char **buffer, int buflen, const char *str, int namelen) { @@ -39,13 +38,50 @@ #define CHROOT_NSCONNECT (PATH_CHROOT_REL | PATH_CHROOT_NSCONNECT) +/* If the path is not connected to the expected root, + * check if it is a sysctl and handle specially else remove any + * leading / that __d_path may have returned. + * Unless + * specifically directed to connect the path, + * OR + * if in a chroot and doing chroot relative paths and the path + * resolves to the namespace root (would be connected outside + * of chroot) and specifically directed to connect paths to + * namespace root. + */ +static int disconnect(struct path *path, char *buf, char **name, int flags, + const char *disconnected) +{ + int error = 0; + + if (!(flags & PATH_CONNECT_PATH) && + !(((flags & CHROOT_NSCONNECT) == CHROOT_NSCONNECT) && + our_mnt(path->mnt))) { + /* disconnected path, don't return pathname starting + * with '/' + */ + error = -EACCES; + if (**name == '/') + *name = *name + 1; + } else { + if (**name != '/') + /* CONNECT_PATH with missing root */ + error = prepend(name, *name - buf, "/", 1); + if (!error && disconnected) + error = prepend(name, *name - buf, disconnected, + strlen(disconnected)); + } + + return error; +} + /** * d_namespace_path - lookup a name associated with a given path * @path: path to lookup (NOT NULL) * @buf: buffer to store path to (NOT NULL) - * @buflen: length of @buf * @name: Returns - pointer for start of path name with in @buf (NOT NULL) * @flags: flags controlling path lookup + * @disconnected: string to prefix to disconnected paths * * Handle path name lookup. * @@ -53,12 +89,14 @@ * When no error the path name is returned in @name which points to * to a position in @buf */ -static int d_namespace_path(struct path *path, char *buf, int buflen, - char **name, int flags) +static int d_namespace_path(struct path *path, char *buf, char **name, + int flags, const char *disconnected) { char *res; int error = 0; int connected = 1; + int isdir = (flags & PATH_IS_DIR) ? 1 : 0; + int buflen = aa_g_path_max - isdir; if (path->mnt->mnt_flags & MNT_INTERNAL) { /* it's not mounted anywhere */ @@ -73,9 +111,12 @@ /* TODO: convert over to using a per namespace * control instead of hard coded /proc */ - return prepend(name, *name - buf, "/proc", 5); - } - return 0; + error = prepend(name, *name - buf, "/proc", 5); + goto out; + } else + error = disconnect(path, buf, name, flags, + disconnected); + goto out; } /* resolve paths relative to chroot?*/ @@ -94,8 +135,11 @@ * be returned. */ if (!res || IS_ERR(res)) { - if (PTR_ERR(res) == -ENAMETOOLONG) - return -ENAMETOOLONG; + if (PTR_ERR(res) == -ENAMETOOLONG) { + error = -ENAMETOOLONG; + *name = buf; + goto out; + } connected = 0; res = dentry_path_raw(path->dentry, buf, buflen); if (IS_ERR(res)) { @@ -120,78 +164,28 @@ goto out; } - /* If the path is not connected to the expected root, - * check if it is a sysctl and handle specially else remove any - * leading / that __d_path may have returned. - * Unless - * specifically directed to connect the path, - * OR - * if in a chroot and doing chroot relative paths and the path - * resolves to the namespace root (would be connected outside - * of chroot) and specifically directed to connect paths to - * namespace root. - */ - if (!connected) { - if (!(flags & PATH_CONNECT_PATH) && - !(((flags & CHROOT_NSCONNECT) == CHROOT_NSCONNECT) && - our_mnt(path->mnt))) { - /* disconnected path, don't return pathname starting - * with '/' - */ - error = -EACCES; - if (*res == '/') - *name = res + 1; - } - } + if (!connected) + error = disconnect(path, buf, name, flags, disconnected); out: - return error; -} - -/** - * get_name_to_buffer - get the pathname to a buffer ensure dir / is appended - * @path: path to get name for (NOT NULL) - * @flags: flags controlling path lookup - * @buffer: buffer to put name in (NOT NULL) - * @size: size of buffer - * @name: Returns - contains position of path name in @buffer (NOT NULL) - * - * Returns: %0 else error on failure - */ -static int get_name_to_buffer(struct path *path, int flags, char *buffer, - int size, char **name, const char **info) -{ - int adjust = (flags & PATH_IS_DIR) ? 1 : 0; - int error = d_namespace_path(path, buffer, size - adjust, name, flags); - - if (!error && (flags & PATH_IS_DIR) && (*name)[1] != '\0') - /* - * Append "/" to the pathname. The root directory is a special - * case; it already ends in slash. - */ - strcpy(&buffer[size - 2], "/"); - - if (info && error) { - if (error == -ENOENT) - *info = "Failed name lookup - deleted entry"; - else if (error == -EACCES) - *info = "Failed name lookup - disconnected path"; - else if (error == -ENAMETOOLONG) - *info = "Failed name lookup - name too long"; - else - *info = "Failed name lookup"; - } + /* + * Append "/" to the pathname. The root directory is a special + * case; it already ends in slash. + */ + if (!error && isdir && ((*name)[1] != '\0' || (*name)[0] != '/')) + strcpy(&buf[aa_g_path_max - 2], "/"); return error; } /** - * aa_path_name - compute the pathname of a file + * aa_path_name - get the pathname to a buffer ensure dir / is appended * @path: path the file (NOT NULL) * @flags: flags controlling path name generation - * @buffer: buffer that aa_get_name() allocated (NOT NULL) + * @buffer: buffer to put name in (NOT NULL) * @name: Returns - the generated path name if !error (NOT NULL) * @info: Returns - information on why the path lookup failed (MAYBE NULL) + * @disconnected: string to prepend to disconnected paths * * @name is a pointer to the beginning of the pathname (which usually differs * from the beginning of the buffer), or NULL. If there is an error @name @@ -204,33 +198,24 @@ * * Returns: %0 else error code if could retrieve name */ -int aa_path_name(struct path *path, int flags, char **buffer, const char **name, - const char **info) +int aa_path_name(struct path *path, int flags, char *buffer, const char **name, + const char **info, const char *disconnected) { - char *buf, *str = NULL; - int size = 256; - int error; - - *name = NULL; - *buffer = NULL; - for (;;) { - /* freed by caller */ - buf = kmalloc(size, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - error = get_name_to_buffer(path, flags, buf, size, &str, info); - if (error != -ENAMETOOLONG) - break; - - kfree(buf); - size <<= 1; - if (size > aa_g_path_max) - return -ENAMETOOLONG; - *info = NULL; + char *str = NULL; + int error = d_namespace_path(path, buffer, &str, flags, disconnected); + + + if (info && error) { + if (error == -ENOENT) + *info = "Failed name lookup - deleted entry"; + else if (error == -EACCES) + *info = "Failed name lookup - disconnected path"; + else if (error == -ENAMETOOLONG) + *info = "Failed name lookup - name too long"; + else + *info = "Failed name lookup"; } - *buffer = buf; - *name = str; + *name = str; return error; } --- linux-4.4.0.orig/security/apparmor/policy.c +++ linux-4.4.0/security/apparmor/policy.c @@ -82,6 +82,7 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/label.h" #include "include/match.h" #include "include/path.h" #include "include/policy.h" @@ -92,6 +93,9 @@ /* root profile namespace */ struct aa_namespace *root_ns; +/* Note: mode names must be unique in the first character because of + * modechrs used to print modes on compound labels on some interfaces + */ const char *const aa_profile_mode_names[] = { "enforce", "complain", @@ -128,16 +132,22 @@ static bool policy_init(struct aa_policy *policy, const char *prefix, const char *name) { + char *hname; + /* freed by policy_free */ if (prefix) { - policy->hname = kmalloc(strlen(prefix) + strlen(name) + 3, - GFP_KERNEL); - if (policy->hname) - sprintf(policy->hname, "%s//%s", prefix, name); - } else - policy->hname = kstrdup(name, GFP_KERNEL); - if (!policy->hname) + hname = aa_str_alloc(strlen(prefix) + strlen(name) + 3, + GFP_KERNEL); + if (hname) + sprintf(hname, "%s//%s", prefix, name); + } else { + hname = aa_str_alloc(strlen(name) + 1, GFP_KERNEL); + if (hname) + strcpy(hname, name); + } + if (!hname) return 0; + policy->hname = hname; /* base.name is a substring of fqname */ policy->name = (char *)hname_tail(policy->hname); INIT_LIST_HEAD(&policy->list); @@ -166,7 +176,7 @@ } /* don't free name as its a subset of hname */ - kzfree(policy->hname); + aa_put_str(policy->hname); } /** @@ -219,7 +229,7 @@ * Routines for AppArmor namespaces */ -static const char *hidden_ns_name = "---"; +const char *aa_hidden_ns_name = "---"; /** * aa_ns_visible - test if @view is visible from @curr * @curr: namespace to treat as the parent (NOT NULL) @@ -261,7 +271,7 @@ */ return view->base.hname + strlen(curr->base.hname) + 2; } else - return hidden_ns_name; + return aa_hidden_ns_name; } /** @@ -290,9 +300,12 @@ ns->unconfined = aa_alloc_profile("unconfined"); if (!ns->unconfined) goto fail_unconfined; + ns->unconfined->label.replacedby = aa_alloc_replacedby(NULL); + if (!ns->unconfined->label.replacedby) + goto fail_replacedby; - ns->unconfined->flags = PFLAG_IX_ON_NAME_ERROR | - PFLAG_IMMUTABLE | PFLAG_NS_COUNT; + ns->unconfined->label.flags |= FLAG_IX_ON_NAME_ERROR | + FLAG_IMMUTIBLE | FLAG_NS_COUNT | FLAG_UNCONFINED; ns->unconfined->mode = APPARMOR_UNCONFINED; /* ns and ns->unconfined share ns->unconfined refcount */ @@ -300,8 +313,13 @@ atomic_set(&ns->uniq_null, 0); + aa_labelset_init(&ns->labels); + return ns; +fail_replacedby: + aa_free_profile(ns->unconfined); + fail_unconfined: kzfree(ns->base.hname); fail_ns: @@ -310,18 +328,19 @@ } /** - * free_namespace - free a profile namespace + * aa_free_namespace - free a profile namespace * @ns: the namespace to free (MAYBE NULL) * * Requires: All references to the namespace must have been put, if the * namespace was referenced by a profile confining a task, */ -static void free_namespace(struct aa_namespace *ns) +void aa_free_namespace(struct aa_namespace *ns) { if (!ns) return; policy_destroy(&ns->base); + aa_labelset_destroy(&ns->labels); aa_put_namespace(ns->parent); ns->unconfined->ns = NULL; @@ -330,43 +349,60 @@ } /** - * __aa_find_namespace - find a namespace on a list by @name + * __aa_findn_namespace - find a namespace on a list by @name * @head: list to search for namespace on (NOT NULL) * @name: name of namespace to look for (NOT NULL) - * + * @n: length of @name * Returns: unrefcounted namespace * * Requires: rcu_read_lock be held */ -static struct aa_namespace *__aa_find_namespace(struct list_head *head, - const char *name) +static struct aa_namespace *__aa_findn_namespace(struct list_head *head, + const char *name, size_t n) { - return (struct aa_namespace *)__policy_find(head, name); + return (struct aa_namespace *)__policy_strn_find(head, name, n); } /** * aa_find_namespace - look up a profile namespace on the namespace list * @root: namespace to search in (NOT NULL) * @name: name of namespace to find (NOT NULL) + * @n: length of @name * * Returns: a refcounted namespace on the list, or NULL if no namespace * called @name exists. * * refcount released by caller */ -struct aa_namespace *aa_find_namespace(struct aa_namespace *root, - const char *name) +struct aa_namespace *aa_findn_namespace(struct aa_namespace *root, + const char *name, size_t n) { struct aa_namespace *ns = NULL; rcu_read_lock(); - ns = aa_get_namespace(__aa_find_namespace(&root->sub_ns, name)); + ns = aa_get_namespace(__aa_findn_namespace(&root->sub_ns, name, n)); rcu_read_unlock(); return ns; } /** + * aa_find_namespace - look up a profile namespace on the namespace list + * @root: namespace to search in (NOT NULL) + * @name: name of namespace to find (NOT NULL) + * + * Returns: a refcounted namespace on the list, or NULL if no namespace + * called @name exists. + * + * refcount released by caller + */ +struct aa_namespace *aa_find_namespace(struct aa_namespace *root, + const char *name) +{ + return aa_findn_namespace(root, name, strlen(name)); +} + +/** * aa_prepare_namespace - find an existing or create a new namespace of @name * @name: the namespace to find or add (MAYBE NULL) * @@ -376,7 +412,7 @@ { struct aa_namespace *ns, *root; - root = aa_current_profile()->ns; + root = labels_ns(aa_current_label()); mutex_lock(&root->lock); @@ -389,7 +425,8 @@ /* try and find the specified ns and if it doesn't exist create it */ /* released by caller */ - ns = aa_get_namespace(__aa_find_namespace(&root->sub_ns, name)); + ns = aa_get_namespace(__aa_findn_namespace(&root->sub_ns, name, + strlen(name))); if (!ns) { ns = alloc_namespace(root->base.hname, name); if (!ns) @@ -397,11 +434,12 @@ if (__aa_fs_namespace_mkdir(ns, ns_subns_dir(root), name)) { AA_ERROR("Failed to create interface for ns %s\n", ns->base.name); - free_namespace(ns); + aa_free_namespace(ns); ns = NULL; goto out; } ns->parent = aa_get_namespace(root); + ns->level = root->level + 1; list_add_rcu(&ns->base.list, &root->sub_ns); /* add list ref */ aa_get_namespace(ns); @@ -414,7 +452,7 @@ } /** - * __list_add_profile - add a profile to a list + * __add_profile - add a profiles to list and label tree * @list: list to add it to (NOT NULL) * @profile: the profile to add (NOT NULL) * @@ -422,12 +460,21 @@ * * Requires: namespace lock be held, or list not be shared */ -static void __list_add_profile(struct list_head *list, - struct aa_profile *profile) +static void __add_profile(struct list_head *list, struct aa_profile *profile) { + struct aa_label *l; + + AA_BUG(!list); + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + list_add_rcu(&profile->base.list, list); /* get list reference */ aa_get_profile(profile); + l = aa_label_insert(&profile->ns->labels, &profile->label); + AA_BUG(l != &profile->label); + aa_put_label(l); } /** @@ -444,6 +491,10 @@ */ static void __list_remove_profile(struct aa_profile *profile) { + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + list_del_rcu(&profile->base.list); aa_put_profile(profile); } @@ -458,10 +509,16 @@ */ static void __remove_profile(struct aa_profile *profile) { + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + /* release any children lists first */ __profile_list_release(&profile->base.profiles); /* released by free_profile */ - __aa_update_replacedby(profile, profile->ns->unconfined); + aa_label_remove(&profile->ns->labels, &profile->label); + __aa_update_replacedby(&profile->label, + &profile->ns->unconfined->label); __aa_fs_profile_rmdir(profile); __list_remove_profile(profile); } @@ -498,7 +555,8 @@ __ns_list_release(&ns->sub_ns); if (ns->parent) - __aa_update_replacedby(ns->unconfined, ns->parent->unconfined); + __aa_update_replacedby(&ns->unconfined->label, + &ns->parent->unconfined->label); __aa_fs_namespace_rmdir(ns); mutex_unlock(&ns->lock); } @@ -560,23 +618,6 @@ } -static void free_replacedby(struct aa_replacedby *r) -{ - if (r) { - /* r->profile will not be updated any more as r is dead */ - aa_put_profile(rcu_dereference_protected(r->profile, true)); - kzfree(r); - } -} - - -void aa_free_replacedby_kref(struct kref *kref) -{ - struct aa_replacedby *r = container_of(kref, struct aa_replacedby, - count); - free_replacedby(r); -} - /** * aa_free_profile - free a profile * @profile: the profile to free (MAYBE NULL) @@ -603,41 +644,18 @@ aa_free_file_rules(&profile->file); aa_free_cap_rules(&profile->caps); + aa_free_net_rules(&profile->net); aa_free_rlimit_rules(&profile->rlimits); kzfree(profile->dirname); aa_put_dfa(profile->xmatch); aa_put_dfa(profile->policy.dfa); - aa_put_replacedby(profile->replacedby); kzfree(profile->hash); kzfree(profile); } /** - * aa_free_profile_rcu - free aa_profile by rcu (called by aa_free_profile_kref) - * @head: rcu_head callback for freeing of a profile (NOT NULL) - */ -static void aa_free_profile_rcu(struct rcu_head *head) -{ - struct aa_profile *p = container_of(head, struct aa_profile, rcu); - if (p->flags & PFLAG_NS_COUNT) - free_namespace(p->ns); - else - aa_free_profile(p); -} - -/** - * aa_free_profile_kref - free aa_profile by kref (called by aa_put_profile) - * @kr: kref callback for freeing of a profile (NOT NULL) - */ -void aa_free_profile_kref(struct kref *kref) -{ - struct aa_profile *p = container_of(kref, struct aa_profile, count); - call_rcu(&p->rcu, aa_free_profile_rcu); -} - -/** * aa_alloc_profile - allocate, initialize and return a new profile * @hname: name of the profile (NOT NULL) * @@ -652,20 +670,18 @@ if (!profile) return NULL; - profile->replacedby = kzalloc(sizeof(struct aa_replacedby), GFP_KERNEL); - if (!profile->replacedby) - goto fail; - kref_init(&profile->replacedby->count); - if (!policy_init(&profile->base, NULL, hname)) goto fail; - kref_init(&profile->count); + if (!aa_label_init(&profile->label, 1)) + goto fail; + profile->label.hname = profile->base.hname; + profile->label.flags |= FLAG_PROFILE; + profile->label.ent[0] = profile; /* refcount released by caller */ return profile; fail: - kzfree(profile->replacedby); kzfree(profile); return NULL; @@ -702,26 +718,57 @@ if (!profile) goto fail; + profile->label.replacedby = aa_alloc_replacedby(NULL); + if (!profile->label.replacedby) + goto fail; + profile->mode = APPARMOR_COMPLAIN; - profile->flags = PFLAG_NULL; + profile->label.flags |= FLAG_NULL; if (hat) - profile->flags |= PFLAG_HAT; + profile->label.flags |= FLAG_HAT; /* released on free_profile */ rcu_assign_pointer(profile->parent, aa_get_profile(parent)); profile->ns = aa_get_namespace(parent->ns); mutex_lock(&profile->ns->lock); - __list_add_profile(&parent->base.profiles, profile); + __add_profile(&parent->base.profiles, profile); mutex_unlock(&profile->ns->lock); /* refcount released by caller */ return profile; fail: + aa_free_profile(profile); return NULL; } +/** + * aa_setup_default_label - create the initial default label + */ +struct aa_label *aa_setup_default_label(void) +{ + struct aa_profile *profile = aa_alloc_profile("default"); + if (!profile) + return NULL; + + /* the default profile pretends to be unconfined until it is replaced */ + profile->label.flags |= FLAG_IX_ON_NAME_ERROR | FLAG_UNCONFINED; + profile->mode = APPARMOR_UNCONFINED; + + profile->ns = aa_get_namespace(root_ns); + + /* replacedby being set needed by fs interface */ + profile->label.replacedby = aa_alloc_replacedby(&profile->label); + if (!profile->label.replacedby) { + aa_free_profile(profile); + return NULL; + } + __add_profile(&root_ns->base.profiles, profile); + + return &profile->label; +} + /* TODO: profile accounting - setup in remove */ /** @@ -810,9 +857,10 @@ } /** - * __lookup_profile - lookup the profile matching @hname + * __lookupn_profile - lookup the profile matching @hname * @base: base list to start looking up profile name from (NOT NULL) * @hname: hierarchical profile name (NOT NULL) + * @n: length of @hname * * Requires: rcu_read_lock be held * @@ -820,53 +868,88 @@ * * Do a relative name lookup, recursing through profile tree. */ -static struct aa_profile *__lookup_profile(struct aa_policy *base, - const char *hname) +static struct aa_profile *__lookupn_profile(struct aa_policy *base, + const char *hname, size_t n) { struct aa_profile *profile = NULL; - char *split; + const char *split, *name = hname; - for (split = strstr(hname, "//"); split;) { - profile = __strn_find_child(&base->profiles, hname, - split - hname); + for (split = strstr(hname, "//"); split && (split - hname <= n);) { + profile = __strn_find_child(&base->profiles, name, + split - name); if (!profile) return NULL; base = &profile->base; - hname = split + 2; - split = strstr(hname, "//"); + name = split + 2; + split = strstr(name, "//"); } - profile = __find_child(&base->profiles, hname); + if (name - hname <= n) + return __strn_find_child(&base->profiles, name, + n - (name - hname)); + return NULL; +} - return profile; +static struct aa_profile *__lookup_profile(struct aa_policy *base, + const char *hname) +{ + return __lookupn_profile(base, hname, strlen(hname)); } /** * aa_lookup_profile - find a profile by its full or partial name * @ns: the namespace to start from (NOT NULL) * @hname: name to do lookup on. Does not contain namespace prefix (NOT NULL) + * @n: size of @hname * * Returns: refcounted profile or NULL if not found */ -struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *hname) +struct aa_profile *aa_lookupn_profile(struct aa_namespace *ns, + const char *hname, size_t n) { struct aa_profile *profile; rcu_read_lock(); do { - profile = __lookup_profile(&ns->base, hname); + profile = __lookupn_profile(&ns->base, hname, n); } while (profile && !aa_get_profile_not0(profile)); rcu_read_unlock(); /* the unconfined profile is not in the regular profile list */ - if (!profile && strcmp(hname, "unconfined") == 0) + if (!profile && strncmp(hname, "unconfined", n) == 0) profile = aa_get_newest_profile(ns->unconfined); /* refcount released by caller */ return profile; } +struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *hname) +{ + return aa_lookupn_profile(ns, hname, strlen(hname)); +} + +struct aa_profile *aa_fqlookupn_profile(struct aa_label *base, char *fqname, + size_t n) +{ + struct aa_profile *profile; + struct aa_namespace *ns; + char *name, *ns_name; + size_t ns_len; + + name = aa_splitn_fqname(fqname, n, &ns_name, &ns_len); + if (ns_name) { + ns = aa_findn_namespace(labels_ns(base), ns_name, ns_len); + if (!ns) + return NULL; + } else + ns = aa_get_namespace(labels_ns(base)); + profile = aa_lookupn_profile(ns, name, n - (name - fqname)); + aa_put_namespace(ns); + + return profile; +} + /** * replacement_allowed - test to see if replacement is allowed * @profile: profile to test if it can be replaced (MAYBE NULL) @@ -879,7 +962,7 @@ const char **info) { if (profile) { - if (profile->flags & PFLAG_IMMUTABLE) { + if (profile->label.flags & FLAG_IMMUTIBLE) { *info = "cannot replace immutible profile"; return -EPERM; } else if (noreplace) { @@ -893,27 +976,23 @@ /** * aa_audit_policy - Do auditing of policy changes * @op: policy operation being performed - * @gfp: memory allocation flags * @name: name of profile being manipulated (NOT NULL) * @info: any extra information to be audited (MAYBE NULL) * @error: error code * * Returns: the error to be returned after audit is done */ -static int audit_policy(int op, gfp_t gfp, const char *name, const char *info, +static int audit_policy(int op, const char *name, const char *info, int error) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = op; - aad.name = name; - aad.info = info; - aad.error = error; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + // aad(&sa)->op = op; + aad(&sa)->name = name; + aad(&sa)->info = info; + aad(&sa)->error = error; - return aa_audit(AUDIT_APPARMOR_STATUS, __aa_current_profile(), gfp, - &sa, NULL); + return aa_audit(AUDIT_APPARMOR_STATUS, + labels_profile(aa_current_raw_label()), &sa, NULL); } /** @@ -926,12 +1005,12 @@ { /* check if loading policy is locked out */ if (aa_g_lock_policy) { - audit_policy(op, GFP_KERNEL, NULL, "policy_locked", -EACCES); + audit_policy(op, NULL, "policy_locked", -EACCES); return 0; } if (!capable(CAP_MAC_ADMIN)) { - audit_policy(op, GFP_KERNEL, NULL, "not policy admin", -EACCES); + audit_policy(op, NULL, "not policy admin", -EACCES); return 0; } @@ -1008,14 +1087,13 @@ struct aa_profile *parent = aa_deref_parent(old); rcu_assign_pointer(new->parent, aa_get_profile(parent)); } - __aa_update_replacedby(old, new); - if (share_replacedby) { - aa_put_replacedby(new->replacedby); - new->replacedby = aa_get_replacedby(old->replacedby); - } else if (!rcu_access_pointer(new->replacedby->profile)) + __aa_update_replacedby(&old->label, &new->label); + if (share_replacedby) + new->label.replacedby = aa_get_replacedby(old->label.replacedby); + else if (!rcu_access_pointer(new->label.replacedby->label)) /* aafs interface uses replacedby */ - rcu_assign_pointer(new->replacedby->profile, - aa_get_profile(new)); + rcu_assign_pointer(new->label.replacedby->label, + aa_get_label(&new->label)); __aa_fs_profile_migrate_dents(old, new); if (list_empty(&new->base.list)) { @@ -1053,6 +1131,35 @@ return 0; } +static void share_name(struct aa_profile *old, struct aa_profile *new) +{ + aa_put_str(new->base.hname); + aa_get_str(old->base.hname); + new->base.hname = old->base.hname; + new->base.name = old->base.name; + new->label.hname = old->label.hname; +} + +/* Update to newest version of parent after previous replacements + * Returns: unrefcount newest version of parent + */ +static struct aa_profile *update_to_newest_parent(struct aa_profile *new) +{ + struct aa_profile *parent, *newest; + parent = rcu_dereference_protected(new->parent, + mutex_is_locked(&new->ns->lock)); + newest = aa_get_newest_profile(parent); + + /* parent replaced in this atomic set? */ + if (newest != parent) { + aa_put_profile(parent); + rcu_assign_pointer(new->parent, newest); + } else + aa_put_profile(newest); + + return newest; +} + /** * aa_replace_profiles - replace profile(s) on the profile list * @udata: serialized data stream (NOT NULL) @@ -1134,6 +1241,7 @@ /* create new fs entries for introspection if needed */ list_for_each_entry(ent, &lh, list) { + struct aa_replacedby *r; if (ent->old) { /* inherit old interface files */ @@ -1143,6 +1251,14 @@ TODO: support rename */ } else { struct dentry *parent; + r = aa_alloc_replacedby(NULL); + if (!r) { + info = "failed to create"; + error = -ENOMEM; + goto fail_lock; + } + ent->new->label.replacedby = r; + if (rcu_access_pointer(ent->new->parent)) { struct aa_profile *p; p = aa_deref_parent(ent->new); @@ -1153,7 +1269,7 @@ } if (error) { - info = "failed to create "; + info = "failed to create"; goto fail_lock; } } @@ -1163,46 +1279,40 @@ list_del_init(&ent->list); op = (!ent->old && !ent->rename) ? OP_PROF_LOAD : OP_PROF_REPL; - audit_policy(op, GFP_ATOMIC, ent->new->base.name, NULL, error); + audit_policy(op, ent->new->base.name, NULL, error); if (ent->old) { + share_name(ent->old, ent->new); __replace_profile(ent->old, ent->new, 1); + aa_label_replace(&ns->labels, &ent->old->label, + &ent->new->label); if (ent->rename) { /* aafs interface uses replacedby */ - struct aa_replacedby *r = ent->new->replacedby; - rcu_assign_pointer(r->profile, - aa_get_profile(ent->new)); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); __replace_profile(ent->rename, ent->new, 0); } } else if (ent->rename) { /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __replace_profile(ent->rename, ent->new, 0); - } else if (ent->new->parent) { - struct aa_profile *parent, *newest; - parent = aa_deref_parent(ent->new); - newest = aa_get_newest_profile(parent); - - /* parent replaced in this atomic set? */ - if (newest != parent) { - aa_get_profile(newest); - aa_put_profile(parent); - rcu_assign_pointer(ent->new->parent, newest); - } else - aa_put_profile(newest); - /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __list_add_profile(&parent->base.profiles, ent->new); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); } else { + struct list_head *lh; + if (rcu_access_pointer(ent->new->parent)) { + struct aa_profile *parent; + parent = update_to_newest_parent(ent->new); + lh = &parent->base.profiles; + } else + lh = &ns->base.profiles; + /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __list_add_profile(&ns->base.profiles, ent->new); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); + __add_profile(lh, ent->new); } aa_load_ent_free(ent); } + __aa_labelset_update_all(ns); mutex_unlock(&ns->lock); out: @@ -1215,7 +1325,7 @@ fail_lock: mutex_unlock(&ns->lock); fail: - error = audit_policy(op, GFP_KERNEL, name, info, error); + error = audit_policy(op, name, info, error); list_for_each_entry_safe(ent, tmp, &lh, list) { list_del_init(&ent->list); @@ -1250,7 +1360,7 @@ goto fail; } - root = aa_current_profile()->ns; + root = labels_ns(aa_current_label()); if (fqname[0] == ':') { char *ns_name; @@ -1282,11 +1392,12 @@ } name = profile->base.hname; __remove_profile(profile); + __aa_labelset_update_all(ns); mutex_unlock(&ns->lock); } /* don't fail removal if audit fails */ - (void) audit_policy(OP_PROF_RM, GFP_KERNEL, name, info, error); + (void) audit_policy(OP_PROF_RM, name, info, error); aa_put_namespace(ns); aa_put_profile(profile); return size; @@ -1296,6 +1407,6 @@ aa_put_namespace(ns); fail: - (void) audit_policy(OP_PROF_RM, GFP_KERNEL, name, info, error); + (void) audit_policy(OP_PROF_RM, name, info, error); return error; } --- linux-4.4.0.orig/security/apparmor/policy_unpack.c +++ linux-4.4.0/security/apparmor/policy_unpack.c @@ -26,9 +26,18 @@ #include "include/context.h" #include "include/crypto.h" #include "include/match.h" +#include "include/path.h" #include "include/policy.h" #include "include/policy_unpack.h" +#define K_ABI_MASK 0x3ff +#define FORCE_COMPLAIN_FLAG 0x800 +#define VERSION_CMP(OP, X, Y) (((X) & K_ABI_MASK) OP ((Y) & K_ABI_MASK)) + +#define v5 5 /* base version */ +#define v6 6 /* per entry policydb mediation check */ +#define v7 7 /* full network masking */ + /* * The AppArmor interface treats data as a type byte followed by the * actual data. The interface has the notion of a a named entry @@ -70,13 +79,13 @@ static void audit_cb(struct audit_buffer *ab, void *va) { struct common_audit_data *sa = va; - if (sa->aad->iface.target) { - struct aa_profile *name = sa->aad->iface.target; + if (aad(sa)->target) { + const struct aa_profile *name = aad(sa)->target; audit_log_format(ab, " name="); audit_log_untrustedstring(ab, name->base.hname); } - if (sa->aad->iface.pos) - audit_log_format(ab, " offset=%ld", sa->aad->iface.pos); + if (aad(sa)->iface.pos) + audit_log_format(ab, " offset=%ld", aad(sa)->iface.pos); } /** @@ -92,20 +101,16 @@ static int audit_iface(struct aa_profile *new, const char *name, const char *info, struct aa_ext *e, int error) { - struct aa_profile *profile = __aa_current_profile(); - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; + struct aa_profile *profile = labels_profile(aa_current_raw_label()); + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, 0); if (e) - aad.iface.pos = e->pos - e->start; - aad.iface.target = new; - aad.name = name; - aad.info = info; - aad.error = error; + aad(&sa)->iface.pos = e->pos - e->start; + aad(&sa)->target = new; + aad(&sa)->name = name; + aad(&sa)->info = info; + aad(&sa)->error = error; - return aa_audit(AUDIT_APPARMOR_STATUS, profile, GFP_KERNEL, &sa, - audit_cb); + return aa_audit(AUDIT_APPARMOR_STATUS, profile, &sa, audit_cb); } /* test if read will be in packed data bounds */ @@ -193,6 +198,19 @@ return 0; } +static bool unpack_u16(struct aa_ext *e, u16 *data, const char *name) +{ + if (unpack_nameX(e, AA_U16, name)) { + if (!inbounds(e, sizeof(u16))) + return 0; + if (data) + *data = le16_to_cpu(get_unaligned((u16 *) e->pos)); + e->pos += sizeof(u16); + return 1; + } + return 0; +} + static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name) { if (unpack_nameX(e, AA_U32, name)) { @@ -476,6 +494,7 @@ { struct aa_profile *profile = NULL; const char *name = NULL; + size_t size = 0; int i, error = -EPROTO; kernel_cap_t tmpcap; u32 tmp; @@ -510,16 +529,19 @@ profile->xmatch_len = tmp; } + /* disconnected attachment string is optional */ + (void) unpack_str(e, &profile->disconnected, "disconnected"); + /* per profile debug flags (complain, audit) */ if (!unpack_nameX(e, AA_STRUCT, "flags")) goto fail; if (!unpack_u32(e, &tmp, NULL)) goto fail; if (tmp & PACKED_FLAG_HAT) - profile->flags |= PFLAG_HAT; + profile->label.flags |= FLAG_HAT; if (!unpack_u32(e, &tmp, NULL)) goto fail; - if (tmp == PACKED_MODE_COMPLAIN) + if (tmp == PACKED_MODE_COMPLAIN || (e->version & FORCE_COMPLAIN_FLAG)) profile->mode = APPARMOR_COMPLAIN; else if (tmp == PACKED_MODE_KILL) profile->mode = APPARMOR_KILL; @@ -534,11 +556,9 @@ goto fail; /* path_flags is optional */ - if (unpack_u32(e, &profile->path_flags, "path_flags")) - profile->path_flags |= profile->flags & PFLAG_MEDIATE_DELETED; - else + if (!unpack_u32(e, &profile->path_flags, "path_flags")) /* set a default value if path_flags field is not present */ - profile->path_flags = PFLAG_MEDIATE_DELETED; + profile->path_flags = PATH_MEDIATE_DELETED; if (!unpack_u32(e, &(profile->caps.allow.cap[0]), NULL)) goto fail; @@ -576,6 +596,37 @@ if (!unpack_rlimits(e, profile)) goto fail; + size = unpack_array(e, "net_allowed_af"); + if (size) { + + for (i = 0; i < size; i++) { + /* discard extraneous rules that this kernel will + * never request + */ + if (i >= AF_MAX) { + u16 tmp; + if (!unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL)) + goto fail; + continue; + } + if (!unpack_u16(e, &profile->net.allow[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.audit[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.quiet[i], NULL)) + goto fail; + } + if (!unpack_nameX(e, AA_ARRAYEND, NULL)) + goto fail; + } + if (VERSION_CMP(<, e->version, v7)) { + /* old policy always allowed these too */ + profile->net.allow[AF_UNIX] = 0xffff; + profile->net.allow[AF_NETLINK] = 0xffff; + } + if (unpack_nameX(e, AA_STRUCT, "policydb")) { /* generic policy dfa - optional and may be NULL */ profile->policy.dfa = unpack_dfa(e); @@ -604,12 +655,16 @@ error = PTR_ERR(profile->file.dfa); profile->file.dfa = NULL; goto fail; + } else if (profile->file.dfa) { + if (!unpack_u32(e, &profile->file.start, "dfa_start")) + /* default start state */ + profile->file.start = DFA_START; + } else if (profile->policy.dfa && + profile->policy.start[AA_CLASS_FILE]) { + profile->file.dfa = aa_get_dfa(profile->policy.dfa); + profile->file.start = profile->policy.start[AA_CLASS_FILE]; } - if (!unpack_u32(e, &profile->file.start, "dfa_start")) - /* default start state */ - profile->file.start = DFA_START; - if (!unpack_trans_table(e, profile)) goto fail; @@ -650,15 +705,17 @@ error); return error; } - - /* check that the interface version is currently supported */ - if (e->version != 5) { - audit_iface(NULL, NULL, "unsupported interface version", - e, error); - return error; - } } + /* Check that the interface version is currently supported. + * if not specified use previous version + * Mask off everything that is not kernel abi version + */ + if (VERSION_CMP(<, e->version, v5) && VERSION_CMP(>, e->version, v7)) { + audit_iface(NULL, NULL, "unsupported interface version", + e, error); + return error; + } /* read the namespace if present */ if (unpack_str(e, &name, "namespace")) { @@ -775,8 +832,9 @@ if (error) goto fail_profile; - error = aa_calc_profile_hash(profile, e.version, start, - e.pos - start); + if (aa_g_hash_policy) + error = aa_calc_profile_hash(profile, e.version, start, + e.pos - start); if (error) goto fail_profile; --- linux-4.4.0.orig/security/apparmor/procattr.c +++ linux-4.4.0/security/apparmor/procattr.c @@ -33,50 +33,29 @@ * * Returns: size of string placed in @string else error code on failure */ -int aa_getprocattr(struct aa_profile *profile, char **string) +int aa_getprocattr(struct aa_label *label, char **string) { - char *str; - int len = 0, mode_len = 0, ns_len = 0, name_len; - const char *mode_str = aa_profile_mode_names[profile->mode]; - const char *ns_name = NULL; - struct aa_namespace *ns = profile->ns; - struct aa_namespace *current_ns = __aa_current_profile()->ns; - char *s; + struct aa_namespace *ns = labels_ns(label); + struct aa_namespace *current_ns = labels_ns(aa_current_label()); + int len; if (!aa_ns_visible(current_ns, ns)) return -EACCES; - ns_name = aa_ns_name(current_ns, ns); - ns_len = strlen(ns_name); + len = aa_label_snprint(NULL, 0, current_ns, label, true); + AA_BUG(len < 0); - /* if the visible ns_name is > 0 increase size for : :// seperator */ - if (ns_len) - ns_len += 4; - - /* unconfined profiles don't have a mode string appended */ - if (!unconfined(profile)) - mode_len = strlen(mode_str) + 3; /* + 3 for _() */ - - name_len = strlen(profile->base.hname); - len = mode_len + ns_len + name_len + 1; /* + 1 for \n */ - s = str = kmalloc(len + 1, GFP_KERNEL); /* + 1 \0 */ - if (!str) + *string = kmalloc(len + 2, GFP_KERNEL); + if (!*string) return -ENOMEM; - if (ns_len) { - /* skip over prefix current_ns->base.hname and separating // */ - sprintf(s, ":%s://", ns_name); - s += ns_len; - } - if (unconfined(profile)) - /* mode string not being appended */ - sprintf(s, "%s\n", profile->base.hname); - else - sprintf(s, "%s (%s)\n", profile->base.hname, mode_str); - *string = str; + len = aa_label_snprint(*string, len + 2, current_ns, label, true); + if (len < 0) + return len; + (*string)[len] = '\n'; + (*string)[len + 1] = 0; - /* NOTE: len does not include \0 of string, not saved as part of file */ - return len; + return len + 1; } /** @@ -138,12 +117,13 @@ for (count = 0; (hat < end) && count < 16; ++count) { char *next = hat + strlen(hat) + 1; hats[count] = hat; + AA_DEBUG("%s: (pid %d) Magic 0x%llx count %d hat '%s'\n" + , __func__, current->pid, token, count, hat); hat = next; } - } - - AA_DEBUG("%s: Magic 0x%llx Hat '%s'\n", - __func__, token, hat ? hat : NULL); + } else + AA_DEBUG("%s: (pid %d) Magic 0x%llx count %d Hat '%s'\n", + __func__, current->pid, token, count, ""); return aa_change_hat(hats, count, token, test); } --- linux-4.4.0.orig/security/apparmor/resource.c +++ linux-4.4.0/security/apparmor/resource.c @@ -35,7 +35,7 @@ struct common_audit_data *sa = va; audit_log_format(ab, " rlimit=%s value=%lu", - rlim_names[sa->aad->rlim.rlim], sa->aad->rlim.max); + rlim_names[aad(sa)->rlim.rlim], aad(sa)->rlim.max); } /** @@ -50,17 +50,11 @@ static int audit_resource(struct aa_profile *profile, unsigned int resource, unsigned long value, int error) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = OP_SETRLIMIT, - aad.rlim.rlim = resource; - aad.rlim.max = value; - aad.error = error; - return aa_audit(AUDIT_APPARMOR_AUTO, profile, GFP_KERNEL, &sa, - audit_cb); + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SETRLIMIT); + aad(&sa)->rlim.rlim = resource; + aad(&sa)->rlim.max = value; + aad(&sa)->error = error; + return aa_audit(AUDIT_APPARMOR_AUTO, profile, &sa, audit_cb); } /** @@ -77,9 +71,19 @@ return rlim_map[resource]; } +static int profile_setrlimit(struct aa_profile *profile, unsigned int resource, + struct rlimit *new_rlim) +{ + int e = 0; + if (profile->rlimits.mask & (1 << resource) && new_rlim->rlim_max > + profile->rlimits.limits[resource].rlim_max) + e = -EACCES; + return audit_resource(profile, resource, new_rlim->rlim_max, e); +} + /** * aa_task_setrlimit - test permission to set an rlimit - * @profile - profile confining the task (NOT NULL) + * @label - label confining the task (NOT NULL) * @task - task the resource is being set on * @resource - the resource being set * @new_rlim - the new resource limit (NOT NULL) @@ -88,14 +92,15 @@ * * Returns: 0 or error code if setting resource failed */ -int aa_task_setrlimit(struct aa_profile *profile, struct task_struct *task, +int aa_task_setrlimit(struct aa_label *label, struct task_struct *task, unsigned int resource, struct rlimit *new_rlim) { - struct aa_profile *task_profile; + struct aa_profile *profile; + struct aa_label *task_label; int error = 0; rcu_read_lock(); - task_profile = aa_get_profile(aa_cred_profile(__task_cred(task))); + task_label = aa_get_newest_cred_label(__task_cred(task)); rcu_read_unlock(); /* TODO: extend resource control to handle other (non current) @@ -103,52 +108,65 @@ * that the task is setting the resource of a task confined with * the same profile. */ - if (profile != task_profile || - (profile->rlimits.mask & (1 << resource) && - new_rlim->rlim_max > profile->rlimits.limits[resource].rlim_max)) - error = -EACCES; + if (label != task_label) + error = fn_for_each(label, profile, + audit_resource(profile, resource, + new_rlim->rlim_max, EACCES)); + else + error = fn_for_each_confined(label, profile, + profile_setrlimit(profile, resource, new_rlim)); + aa_put_label(task_label); - aa_put_profile(task_profile); - - return audit_resource(profile, resource, new_rlim->rlim_max, error); + return error; } /** * __aa_transition_rlimits - apply new profile rlimits - * @old: old profile on task (NOT NULL) - * @new: new profile with rlimits to apply (NOT NULL) + * @old_l: old label on task (NOT NULL) + * @new_l: new label with rlimits to apply (NOT NULL) */ -void __aa_transition_rlimits(struct aa_profile *old, struct aa_profile *new) +void __aa_transition_rlimits(struct aa_label *old_l, struct aa_label *new_l) { unsigned int mask = 0; struct rlimit *rlim, *initrlim; - int i; + struct aa_profile *old, *new; + struct label_it i; + + old = labels_profile(old_l); + new = labels_profile(new_l); - /* for any rlimits the profile controlled reset the soft limit - * to the less of the tasks hard limit and the init tasks soft limit + /* for any rlimits the profile controlled, reset the soft limit + * to the lesser of the tasks hard limit and the init tasks soft limit */ - if (old->rlimits.mask) { - for (i = 0, mask = 1; i < RLIM_NLIMITS; i++, mask <<= 1) { - if (old->rlimits.mask & mask) { - rlim = current->signal->rlim + i; - initrlim = init_task.signal->rlim + i; - rlim->rlim_cur = min(rlim->rlim_max, - initrlim->rlim_cur); + label_for_each_confined(i, old_l, old) { + if (old->rlimits.mask) { + int j; + for (j = 0, mask = 1; j < RLIM_NLIMITS; j++, + mask <<= 1) { + if (old->rlimits.mask & mask) { + rlim = current->signal->rlim + j; + initrlim = init_task.signal->rlim + j; + rlim->rlim_cur = min(rlim->rlim_max, + initrlim->rlim_cur); + } } } } /* set any new hard limits as dictated by the new profile */ - if (!new->rlimits.mask) - return; - for (i = 0, mask = 1; i < RLIM_NLIMITS; i++, mask <<= 1) { - if (!(new->rlimits.mask & mask)) + label_for_each_confined(i, new_l, new) { + int j; + if (!new->rlimits.mask) continue; - - rlim = current->signal->rlim + i; - rlim->rlim_max = min(rlim->rlim_max, - new->rlimits.limits[i].rlim_max); - /* soft limit should not exceed hard limit */ - rlim->rlim_cur = min(rlim->rlim_cur, rlim->rlim_max); + for (j = 0, mask = 1; j < RLIM_NLIMITS; j++, mask <<= 1) { + if (!(new->rlimits.mask & mask)) + continue; + + rlim = current->signal->rlim + j; + rlim->rlim_max = min(rlim->rlim_max, + new->rlimits.limits[j].rlim_max); + /* soft limit should not exceed hard limit */ + rlim->rlim_cur = min(rlim->rlim_cur, rlim->rlim_max); + } } } --- linux-4.4.0.orig/security/commoncap.c +++ linux-4.4.0/security/commoncap.c @@ -448,7 +448,9 @@ if (!file_caps_enabled) return 0; - if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) + if (!mnt_may_suid(bprm->file->f_path.mnt)) + return 0; + if (!current_in_userns(bprm->file->f_path.mnt->mnt_sb->s_user_ns)) return 0; rc = get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps); @@ -651,15 +653,17 @@ int cap_inode_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) { + struct user_namespace *user_ns = dentry->d_sb->s_user_ns; + if (!strcmp(name, XATTR_NAME_CAPS)) { - if (!capable(CAP_SETFCAP)) + if (!ns_capable(user_ns, CAP_SETFCAP)) return -EPERM; return 0; } if (!strncmp(name, XATTR_SECURITY_PREFIX, sizeof(XATTR_SECURITY_PREFIX) - 1) && - !capable(CAP_SYS_ADMIN)) + !ns_capable(user_ns, CAP_SYS_ADMIN)) return -EPERM; return 0; } @@ -677,15 +681,17 @@ */ int cap_inode_removexattr(struct dentry *dentry, const char *name) { + struct user_namespace *user_ns = dentry->d_sb->s_user_ns; + if (!strcmp(name, XATTR_NAME_CAPS)) { - if (!capable(CAP_SETFCAP)) + if (!ns_capable(user_ns, CAP_SETFCAP)) return -EPERM; return 0; } if (!strncmp(name, XATTR_SECURITY_PREFIX, sizeof(XATTR_SECURITY_PREFIX) - 1) && - !capable(CAP_SYS_ADMIN)) + !ns_capable(user_ns, CAP_SYS_ADMIN)) return -EPERM; return 0; } @@ -1053,12 +1059,14 @@ } return ret; } +EXPORT_SYMBOL(cap_mmap_addr); int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) { return 0; } +EXPORT_SYMBOL(cap_mmap_file); #ifdef CONFIG_SECURITY --- linux-4.4.0.orig/security/device_cgroup.c +++ linux-4.4.0/security/device_cgroup.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -849,6 +850,7 @@ return __devcgroup_check_permission(type, imajor(inode), iminor(inode), access); } +EXPORT_SYMBOL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { --- linux-4.4.0.orig/security/integrity/evm/evm_crypto.c +++ linux-4.4.0/security/integrity/evm/evm_crypto.c @@ -108,8 +108,8 @@ memset(&hmac_misc, 0, sizeof(hmac_misc)); hmac_misc.ino = inode->i_ino; hmac_misc.generation = inode->i_generation; - hmac_misc.uid = from_kuid(&init_user_ns, inode->i_uid); - hmac_misc.gid = from_kgid(&init_user_ns, inode->i_gid); + hmac_misc.uid = from_kuid(inode->i_sb->s_user_ns, inode->i_uid); + hmac_misc.gid = from_kgid(inode->i_sb->s_user_ns, inode->i_gid); hmac_misc.mode = inode->i_mode; crypto_shash_update(desc, (const u8 *)&hmac_misc, sizeof(hmac_misc)); if (evm_hmac_attrs & EVM_ATTR_FSUUID) --- linux-4.4.0.orig/security/integrity/evm/evm_main.c +++ linux-4.4.0/security/integrity/evm/evm_main.c @@ -278,7 +278,7 @@ enum integrity_status evm_status; if (strcmp(xattr_name, XATTR_NAME_EVM) == 0) { - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(dentry->d_sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; } else if (!evm_protected_xattr(xattr_name)) { if (!posix_xattr_acl(xattr_name)) --- linux-4.4.0.orig/security/integrity/ima/ima_appraise.c +++ linux-4.4.0/security/integrity/ima/ima_appraise.c @@ -345,7 +345,7 @@ const void *xattr_value, size_t xattr_value_len) { if (strcmp(xattr_name, XATTR_NAME_IMA) == 0) { - if (!capable(CAP_SYS_ADMIN)) + if (!ns_capable(dentry->d_sb->s_user_ns, CAP_SYS_ADMIN)) return -EPERM; return 1; } --- linux-4.4.0.orig/security/keys/Kconfig +++ linux-4.4.0/security/keys/Kconfig @@ -54,6 +54,7 @@ select CRYPTO select CRYPTO_HMAC select CRYPTO_SHA1 + select CRYPTO_HASH_INFO help This option provides support for creating, sealing, and unsealing keys in the kernel. Trusted keys are random number symmetric keys, --- linux-4.4.0.orig/security/keys/process_keys.c +++ linux-4.4.0/security/keys/process_keys.c @@ -794,6 +794,7 @@ ret = PTR_ERR(keyring); goto error2; } else if (keyring == new->session_keyring) { + key_put(keyring); ret = 0; goto error2; } --- linux-4.4.0.orig/security/keys/trusted.c +++ linux-4.4.0/security/keys/trusted.c @@ -11,6 +11,7 @@ * See Documentation/security/keys-trusted-encrypted.txt */ +#include #include #include #include @@ -710,7 +711,10 @@ Opt_err = -1, Opt_new, Opt_load, Opt_update, Opt_keyhandle, Opt_keyauth, Opt_blobauth, - Opt_pcrinfo, Opt_pcrlock, Opt_migratable + Opt_pcrinfo, Opt_pcrlock, Opt_migratable, + Opt_hash, + Opt_policydigest, + Opt_policyhandle, }; static const match_table_t key_tokens = { @@ -723,6 +727,9 @@ {Opt_pcrinfo, "pcrinfo=%s"}, {Opt_pcrlock, "pcrlock=%s"}, {Opt_migratable, "migratable=%s"}, + {Opt_hash, "hash=%s"}, + {Opt_policydigest, "policydigest=%s"}, + {Opt_policyhandle, "policyhandle=%s"}, {Opt_err, NULL} }; @@ -736,11 +743,23 @@ int res; unsigned long handle; unsigned long lock; + unsigned long token_mask = 0; + int i; + int tpm2; + + tpm2 = tpm_is_tpm2(TPM_ANY_NUM); + if (tpm2 < 0) + return tpm2; + + opt->hash = tpm2 ? HASH_ALGO_SHA256 : HASH_ALGO_SHA1; + opt->digest_len = hash_digest_size[opt->hash]; while ((p = strsep(&c, " \t"))) { if (*p == '\0' || *p == ' ' || *p == '\t') continue; token = match_token(p, key_tokens, args); + if (test_and_set_bit(token, &token_mask)) + return -EINVAL; switch (token) { case Opt_pcrinfo: @@ -787,6 +806,41 @@ return -EINVAL; opt->pcrlock = lock; break; + case Opt_hash: + if (test_bit(Opt_policydigest, &token_mask)) + return -EINVAL; + for (i = 0; i < HASH_ALGO__LAST; i++) { + if (!strcmp(args[0].from, hash_algo_name[i])) { + opt->hash = i; + opt->digest_len = + hash_digest_size[opt->hash]; + break; + } + } + if (i == HASH_ALGO__LAST) + return -EINVAL; + if (!tpm2 && i != HASH_ALGO_SHA1) { + pr_info("trusted_key: TPM 1.x only supports SHA-1.\n"); + return -EINVAL; + } + break; + case Opt_policydigest: + if (!tpm2 || + strlen(args[0].from) != (2 * opt->digest_len)) + return -EINVAL; + res = hex2bin(opt->policydigest, args[0].from, + opt->digest_len); + if (res < 0) + return -EINVAL; + break; + case Opt_policyhandle: + if (!tpm2) + return -EINVAL; + res = kstrtoul(args[0].from, 16, &handle); + if (res < 0) + return -EINVAL; + opt->policyhandle = handle; + break; default: return -EINVAL; } --- linux-4.4.0.orig/security/security.c +++ linux-4.4.0/security/security.c @@ -433,6 +433,7 @@ return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { @@ -449,6 +450,7 @@ return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) @@ -457,6 +459,7 @@ return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry, @@ -484,6 +487,7 @@ return 0; return call_int_hook(path_truncate, 0, path); } +EXPORT_SYMBOL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { @@ -491,6 +495,7 @@ return 0; return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { @@ -498,6 +503,7 @@ return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(struct path *path) { @@ -583,6 +589,7 @@ return 0; return call_int_hook(inode_readlink, 0, dentry); } +EXPORT_SYMBOL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct inode *inode, bool rcu) @@ -598,6 +605,7 @@ return 0; return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -736,6 +744,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL(security_file_permission); int security_file_alloc(struct file *file) { @@ -795,6 +804,7 @@ return ret; return ima_file_mmap(file, prot); } +EXPORT_SYMBOL(security_mmap_file); int security_mmap_addr(unsigned long addr) { --- linux-4.4.0.orig/security/selinux/hooks.c +++ linux-4.4.0/security/selinux/hooks.c @@ -756,6 +756,28 @@ goto out; } } + + /* + * If this is a user namespace mount, no contexts are allowed + * on the command line and security labels must be ignored. + */ + if (sb->s_user_ns != &init_user_ns) { + if (context_sid || fscontext_sid || rootcontext_sid || + defcontext_sid) { + rc = -EACCES; + goto out; + } + if (sbsec->behavior == SECURITY_FS_USE_XATTR) { + sbsec->behavior = SECURITY_FS_USE_MNTPOINT; + rc = security_transition_sid(current_sid(), current_sid(), + SECCLASS_FILE, NULL, + &sbsec->mntpoint_sid); + if (rc) + goto out; + } + goto out_set_opts; + } + /* sets the context of the superblock for the fs being mounted. */ if (fscontext_sid) { rc = may_context_mount_sb_relabel(fscontext_sid, sbsec, cred); @@ -824,6 +846,7 @@ sbsec->def_sid = defcontext_sid; } +out_set_opts: rc = sb_finish_set_opts(sb); out: mutex_unlock(&sbsec->lock); @@ -2171,7 +2194,7 @@ const struct task_security_struct *new_tsec) { int nnp = (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS); - int nosuid = (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID); + int nosuid = !mnt_may_suid(bprm->file->f_path.mnt); int rc; if (!nnp && !nosuid) --- linux-4.4.0.orig/security/smack/smack.h +++ linux-4.4.0/security/smack/smack.h @@ -90,9 +90,15 @@ struct smack_known *smk_floor; struct smack_known *smk_hat; struct smack_known *smk_default; - int smk_initialized; + int smk_flags; }; +/* + * Superblock flags + */ +#define SMK_SB_INITIALIZED 0x01 +#define SMK_SB_UNTRUSTED 0x02 + struct socket_smack { struct smack_known *smk_out; /* outbound label */ struct smack_known *smk_in; /* inbound label */ --- linux-4.4.0.orig/security/smack/smack_lsm.c +++ linux-4.4.0/security/smack/smack_lsm.c @@ -551,7 +551,7 @@ sbsp->smk_floor = &smack_known_floor; sbsp->smk_hat = &smack_known_hat; /* - * smk_initialized will be zero from kzalloc. + * SMK_SB_INITIALIZED will be zero from kzalloc. */ sb->s_security = sbsp; @@ -768,10 +768,10 @@ int num_opts = opts->num_mnt_opts; int transmute = 0; - if (sp->smk_initialized) + if (sp->smk_flags & SMK_SB_INITIALIZED) return 0; - sp->smk_initialized = 1; + sp->smk_flags |= SMK_SB_INITIALIZED; for (i = 0; i < num_opts; i++) { switch (opts->mnt_opts_flags[i]) { @@ -823,6 +823,17 @@ skp = smk_of_current(); sp->smk_root = skp; sp->smk_default = skp; + /* + * For a handful of fs types with no user-controlled + * backing store it's okay to trust security labels + * in the filesystem. The rest are untrusted. + */ + if (sb->s_user_ns != &init_user_ns && + sb->s_magic != SYSFS_MAGIC && sb->s_magic != TMPFS_MAGIC && + sb->s_magic != RAMFS_MAGIC) { + transmute = 1; + sp->smk_flags |= SMK_SB_UNTRUSTED; + } } /* @@ -910,6 +921,7 @@ struct inode *inode = file_inode(bprm->file); struct task_smack *bsp = bprm->cred->security; struct inode_smack *isp; + struct superblock_smack *sbsp; int rc; if (bprm->cred_prepared) @@ -919,6 +931,11 @@ if (isp->smk_task == NULL || isp->smk_task == bsp->smk_task) return 0; + sbsp = inode->i_sb->s_security; + if ((sbsp->smk_flags & SMK_SB_UNTRUSTED) && + isp->smk_task != sbsp->smk_root) + return 0; + if (bprm->unsafe & (LSM_UNSAFE_PTRACE | LSM_UNSAFE_PTRACE_CAP)) { struct task_struct *tracer; rc = 0; @@ -1205,6 +1222,7 @@ */ static int smack_inode_permission(struct inode *inode, int mask) { + struct superblock_smack *sbsp = inode->i_sb->s_security; struct smk_audit_info ad; int no_block = mask & MAY_NOT_BLOCK; int rc; @@ -1216,6 +1234,11 @@ if (mask == 0) return 0; + if (sbsp->smk_flags & SMK_SB_UNTRUSTED) { + if (smk_of_inode(inode) != sbsp->smk_root) + return -EACCES; + } + /* May be droppable after audit */ if (no_block) return -ECHILD; @@ -1716,6 +1739,7 @@ struct task_smack *tsp; struct smack_known *okp; struct inode_smack *isp; + struct superblock_smack *sbsp; int may; int mmay; int tmay; @@ -1727,6 +1751,10 @@ isp = file_inode(file)->i_security; if (isp->smk_mmap == NULL) return 0; + sbsp = file_inode(file)->i_sb->s_security; + if (sbsp->smk_flags & SMK_SB_UNTRUSTED && + isp->smk_mmap != sbsp->smk_root) + return -EACCES; mkp = isp->smk_mmap; tsp = current_security(); --- linux-4.4.0.orig/sound/core/control.c +++ linux-4.4.0/sound/core/control.c @@ -1405,6 +1405,8 @@ return -EFAULT; if (tlv.length < sizeof(unsigned int) * 2) return -EINVAL; + if (!tlv.numid) + return -EINVAL; down_read(&card->controls_rwsem); kctl = snd_ctl_find_numid(card, tlv.numid); if (kctl == NULL) { --- linux-4.4.0.orig/sound/core/hrtimer.c +++ linux-4.4.0/sound/core/hrtimer.c @@ -90,7 +90,7 @@ struct snd_hrtimer *stime = t->private_data; atomic_set(&stime->running, 0); - hrtimer_cancel(&stime->hrt); + hrtimer_try_to_cancel(&stime->hrt); hrtimer_start(&stime->hrt, ns_to_ktime(t->sticks * resolution), HRTIMER_MODE_REL); atomic_set(&stime->running, 1); @@ -101,6 +101,7 @@ { struct snd_hrtimer *stime = t->private_data; atomic_set(&stime->running, 0); + hrtimer_try_to_cancel(&stime->hrt); return 0; } --- linux-4.4.0.orig/sound/core/pcm_compat.c +++ linux-4.4.0/sound/core/pcm_compat.c @@ -255,10 +255,15 @@ if (! (runtime = substream->runtime)) return -ENOTTY; - /* only fifo_size is different, so just copy all */ - data = memdup_user(data32, sizeof(*data32)); - if (IS_ERR(data)) - return PTR_ERR(data); + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + /* only fifo_size (RO from userspace) is different, so just copy all */ + if (copy_from_user(data, data32, sizeof(*data32))) { + err = -EFAULT; + goto error; + } if (refine) err = snd_pcm_hw_refine(substream, data); --- linux-4.4.0.orig/sound/core/seq/seq_clientmgr.c +++ linux-4.4.0/sound/core/seq/seq_clientmgr.c @@ -1962,7 +1962,7 @@ * No restrictions so for a user client we can clear * the whole fifo */ - if (client->type == USER_CLIENT) + if (client->type == USER_CLIENT && client->data.user.fifo) snd_seq_fifo_clear(client->data.user.fifo); } --- linux-4.4.0.orig/sound/core/seq/seq_compat.c +++ linux-4.4.0/sound/core/seq/seq_compat.c @@ -49,11 +49,12 @@ struct snd_seq_port_info *data; mm_segment_t fs; - data = memdup_user(data32, sizeof(*data32)); - if (IS_ERR(data)) - return PTR_ERR(data); + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; - if (get_user(data->flags, &data32->flags) || + if (copy_from_user(data, data32, sizeof(*data32)) || + get_user(data->flags, &data32->flags) || get_user(data->time_queue, &data32->time_queue)) goto error; data->kernel = NULL; --- linux-4.4.0.orig/sound/core/seq/seq_queue.c +++ linux-4.4.0/sound/core/seq/seq_queue.c @@ -142,8 +142,10 @@ static void queue_delete(struct snd_seq_queue *q) { /* stop and release the timer */ + mutex_lock(&q->timer_mutex); snd_seq_timer_stop(q->timer); snd_seq_timer_close(q); + mutex_unlock(&q->timer_mutex); /* wait until access free */ snd_use_lock_sync(&q->use_lock); /* release resources... */ --- linux-4.4.0.orig/sound/core/timer.c +++ linux-4.4.0/sound/core/timer.c @@ -65,6 +65,7 @@ int qtail; int qused; int queue_size; + bool disconnected; struct snd_timer_read *queue; struct snd_timer_tread *tqueue; spinlock_t qlock; @@ -73,7 +74,7 @@ struct timespec tstamp; /* trigger tstamp */ wait_queue_head_t qchange_sleep; struct fasync_struct *fasync; - struct mutex tread_sem; + struct mutex ioctl_lock; }; /* list of timers */ @@ -215,11 +216,13 @@ slave->slave_id == master->slave_id) { list_move_tail(&slave->open_list, &master->slave_list_head); spin_lock_irq(&slave_active_lock); + spin_lock(&master->timer->lock); slave->master = master; slave->timer = master->timer; if (slave->flags & SNDRV_TIMER_IFLG_RUNNING) list_add_tail(&slave->active_list, &master->slave_active_head); + spin_unlock(&master->timer->lock); spin_unlock_irq(&slave_active_lock); } } @@ -288,6 +291,9 @@ mutex_unlock(®ister_mutex); return -ENOMEM; } + /* take a card refcount for safe disconnection */ + if (timer->card) + get_device(&timer->card->card_dev); timeri->slave_class = tid->dev_sclass; timeri->slave_id = slave_id; if (list_empty(&timer->open_list_head) && timer->hw.open) @@ -346,15 +352,21 @@ timer->hw.close) timer->hw.close(timer); /* remove slave links */ + spin_lock_irq(&slave_active_lock); + spin_lock(&timer->lock); list_for_each_entry_safe(slave, tmp, &timeri->slave_list_head, open_list) { - spin_lock_irq(&slave_active_lock); - _snd_timer_stop(slave, 1, SNDRV_TIMER_EVENT_RESOLUTION); list_move_tail(&slave->open_list, &snd_timer_slave_list); slave->master = NULL; slave->timer = NULL; - spin_unlock_irq(&slave_active_lock); + list_del_init(&slave->ack_list); + list_del_init(&slave->active_list); } + spin_unlock(&timer->lock); + spin_unlock_irq(&slave_active_lock); + /* release a card refcount for safe disconnection */ + if (timer->card) + put_device(&timer->card->card_dev); mutex_unlock(®ister_mutex); } out: @@ -441,9 +453,12 @@ spin_lock_irqsave(&slave_active_lock, flags); timeri->flags |= SNDRV_TIMER_IFLG_RUNNING; - if (timeri->master) + if (timeri->master && timeri->timer) { + spin_lock(&timeri->timer->lock); list_add_tail(&timeri->active_list, &timeri->master->slave_active_head); + spin_unlock(&timeri->timer->lock); + } spin_unlock_irqrestore(&slave_active_lock, flags); return 1; /* delayed start */ } @@ -467,6 +482,8 @@ timer = timeri->timer; if (timer == NULL) return -EINVAL; + if (timer->card && timer->card->shutdown) + return -ENODEV; spin_lock_irqsave(&timer->lock, flags); timeri->ticks = timeri->cticks = ticks; timeri->pticks = 0; @@ -489,6 +506,8 @@ if (!keep_flag) { spin_lock_irqsave(&slave_active_lock, flags); timeri->flags &= ~SNDRV_TIMER_IFLG_RUNNING; + list_del_init(&timeri->ack_list); + list_del_init(&timeri->active_list); spin_unlock_irqrestore(&slave_active_lock, flags); } goto __end; @@ -499,6 +518,10 @@ spin_lock_irqsave(&timer->lock, flags); list_del_init(&timeri->ack_list); list_del_init(&timeri->active_list); + if (timer->card && timer->card->shutdown) { + spin_unlock_irqrestore(&timer->lock, flags); + return 0; + } if ((timeri->flags & SNDRV_TIMER_IFLG_RUNNING) && !(--timer->running)) { timer->hw.stop(timer); @@ -561,6 +584,8 @@ timer = timeri->timer; if (! timer) return -EINVAL; + if (timer->card && timer->card->shutdown) + return -ENODEV; spin_lock_irqsave(&timer->lock, flags); if (!timeri->cticks) timeri->cticks = 1; @@ -624,6 +649,9 @@ unsigned long resolution, ticks; unsigned long flags; + if (timer->card && timer->card->shutdown) + return; + spin_lock_irqsave(&timer->lock, flags); /* now process all callbacks */ while (!list_empty(&timer->sack_list_head)) { @@ -664,6 +692,9 @@ if (timer == NULL) return; + if (timer->card && timer->card->shutdown) + return; + spin_lock_irqsave(&timer->lock, flags); /* remember the current resolution */ @@ -694,7 +725,7 @@ } else { ti->flags &= ~SNDRV_TIMER_IFLG_RUNNING; if (--timer->running) - list_del(&ti->active_list); + list_del_init(&ti->active_list); } if ((timer->hw.flags & SNDRV_TIMER_HW_TASKLET) || (ti->flags & SNDRV_TIMER_IFLG_FAST)) @@ -874,11 +905,28 @@ return 0; } +/* just for reference in snd_timer_dev_disconnect() below */ +static void snd_timer_user_ccallback(struct snd_timer_instance *timeri, + int event, struct timespec *tstamp, + unsigned long resolution); + static int snd_timer_dev_disconnect(struct snd_device *device) { struct snd_timer *timer = device->device_data; + struct snd_timer_instance *ti; + mutex_lock(®ister_mutex); list_del_init(&timer->device_list); + /* wake up pending sleepers */ + list_for_each_entry(ti, &timer->open_list_head, open_list) { + /* FIXME: better to have a ti.disconnect() op */ + if (ti->ccallback == snd_timer_user_ccallback) { + struct snd_timer_user *tu = ti->callback_data; + + tu->disconnected = true; + wake_up(&tu->qchange_sleep); + } + } mutex_unlock(®ister_mutex); return 0; } @@ -889,6 +937,8 @@ unsigned long resolution = 0; struct snd_timer_instance *ti, *ts; + if (timer->card && timer->card->shutdown) + return; if (! (timer->hw.flags & SNDRV_TIMER_HW_SLAVE)) return; if (snd_BUG_ON(event < SNDRV_TIMER_EVENT_MSTART || @@ -1047,6 +1097,8 @@ mutex_lock(®ister_mutex); list_for_each_entry(timer, &snd_timer_list, device_list) { + if (timer->card && timer->card->shutdown) + continue; switch (timer->tmr_class) { case SNDRV_TIMER_CLASS_GLOBAL: snd_iprintf(buffer, "G%i: ", timer->tmr_device); @@ -1253,7 +1305,7 @@ return -ENOMEM; spin_lock_init(&tu->qlock); init_waitqueue_head(&tu->qchange_sleep); - mutex_init(&tu->tread_sem); + mutex_init(&tu->ioctl_lock); tu->ticks = 1; tu->queue_size = 128; tu->queue = kmalloc(tu->queue_size * sizeof(struct snd_timer_read), @@ -1273,8 +1325,10 @@ if (file->private_data) { tu = file->private_data; file->private_data = NULL; + mutex_lock(&tu->ioctl_lock); if (tu->timeri) snd_timer_close(tu->timeri); + mutex_unlock(&tu->ioctl_lock); kfree(tu->queue); kfree(tu->tqueue); kfree(tu); @@ -1512,7 +1566,6 @@ int err = 0; tu = file->private_data; - mutex_lock(&tu->tread_sem); if (tu->timeri) { snd_timer_close(tu->timeri); tu->timeri = NULL; @@ -1556,7 +1609,6 @@ } __err: - mutex_unlock(&tu->tread_sem); return err; } @@ -1769,7 +1821,7 @@ SNDRV_TIMER_IOCTL_PAUSE_OLD = _IO('T', 0x23), }; -static long snd_timer_user_ioctl(struct file *file, unsigned int cmd, +static long __snd_timer_user_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct snd_timer_user *tu; @@ -1786,17 +1838,11 @@ { int xarg; - mutex_lock(&tu->tread_sem); - if (tu->timeri) { /* too late */ - mutex_unlock(&tu->tread_sem); + if (tu->timeri) /* too late */ return -EBUSY; - } - if (get_user(xarg, p)) { - mutex_unlock(&tu->tread_sem); + if (get_user(xarg, p)) return -EFAULT; - } tu->tread = xarg ? 1 : 0; - mutex_unlock(&tu->tread_sem); return 0; } case SNDRV_TIMER_IOCTL_GINFO: @@ -1829,6 +1875,18 @@ return -ENOTTY; } +static long snd_timer_user_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct snd_timer_user *tu = file->private_data; + long ret; + + mutex_lock(&tu->ioctl_lock); + ret = __snd_timer_user_ioctl(file, cmd, arg); + mutex_unlock(&tu->ioctl_lock); + return ret; +} + static int snd_timer_user_fasync(int fd, struct file * file, int on) { struct snd_timer_user *tu; @@ -1866,6 +1924,10 @@ remove_wait_queue(&tu->qchange_sleep, &wait); + if (tu->disconnected) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -1915,6 +1977,8 @@ mask = 0; if (tu->qused) mask |= POLLIN | POLLRDNORM; + if (tu->disconnected) + mask |= POLLERR; return mask; } --- linux-4.4.0.orig/sound/pci/hda/hda_bind.c +++ linux-4.4.0/sound/pci/hda/hda_bind.c @@ -174,14 +174,40 @@ return device_attach(hda_codec_dev(codec)) > 0 && codec->preset; } -/* try to auto-load and bind the codec module */ -static void codec_bind_module(struct hda_codec *codec) +/* try to auto-load codec module */ +static void request_codec_module(struct hda_codec *codec) { #ifdef MODULE char modalias[32]; + const char *mod = NULL; + + switch (codec->probe_id) { + case HDA_CODEC_ID_GENERIC_HDMI: +#if IS_MODULE(CONFIG_SND_HDA_CODEC_HDMI) + mod = "snd-hda-codec-hdmi"; +#endif + break; + case HDA_CODEC_ID_GENERIC: +#if IS_MODULE(CONFIG_SND_HDA_GENERIC) + mod = "snd-hda-codec-generic"; +#endif + break; + default: + snd_hdac_codec_modalias(&codec->core, modalias, sizeof(modalias)); + mod = modalias; + break; + } + + if (mod) + request_module(mod); +#endif /* MODULE */ +} - snd_hdac_codec_modalias(&codec->core, modalias, sizeof(modalias)); - request_module(modalias); +/* try to auto-load and bind the codec module */ +static void codec_bind_module(struct hda_codec *codec) +{ +#ifdef MODULE + request_codec_module(codec); if (codec_probed(codec)) return; #endif @@ -218,17 +244,13 @@ if (is_likely_hdmi_codec(codec)) { codec->probe_id = HDA_CODEC_ID_GENERIC_HDMI; -#if IS_MODULE(CONFIG_SND_HDA_CODEC_HDMI) - request_module("snd-hda-codec-hdmi"); -#endif + request_codec_module(codec); if (codec_probed(codec)) return 0; } codec->probe_id = HDA_CODEC_ID_GENERIC; -#if IS_MODULE(CONFIG_SND_HDA_GENERIC) - request_module("snd-hda-codec-generic"); -#endif + request_codec_module(codec); if (codec_probed(codec)) return 0; return -ENODEV; --- linux-4.4.0.orig/sound/pci/hda/hda_intel.c +++ linux-4.4.0/sound/pci/hda/hda_intel.c @@ -2126,9 +2126,17 @@ static void azx_remove(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); + struct azx *chip; + struct hda_intel *hda; + + if (card) { + /* flush the pending probing work */ + chip = card->private_data; + hda = container_of(chip, struct hda_intel, chip); + flush_work(&hda->probe_work); - if (card) snd_card_free(card); + } } static void azx_shutdown(struct pci_dev *pci) --- linux-4.4.0.orig/sound/pci/hda/patch_realtek.c +++ linux-4.4.0/sound/pci/hda/patch_realtek.c @@ -4666,6 +4666,7 @@ ALC290_FIXUP_SUBWOOFER, ALC290_FIXUP_SUBWOOFER_HSJACK, ALC269_FIXUP_THINKPAD_ACPI, + ALC269_FIXUP_DMIC_THINKPAD_ACPI, ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, ALC255_FIXUP_HEADSET_MODE, @@ -5103,6 +5104,12 @@ .type = HDA_FIXUP_FUNC, .v.func = hda_fixup_thinkpad_acpi, }, + [ALC269_FIXUP_DMIC_THINKPAD_ACPI] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_inv_dmic, + .chained = true, + .chain_id = ALC269_FIXUP_THINKPAD_ACPI, + }, [ALC255_FIXUP_DELL1_MIC_NO_PRESENCE] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { @@ -5324,6 +5331,7 @@ SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS), SND_PCI_QUIRK(0x1028, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X), + SND_PCI_QUIRK(0x1028, 0x05be, "Dell Latitude E6540", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x05ca, "Dell Latitude E7240", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x05cb, "Dell Latitude E7440", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_FIXUP_SUBWOOFER), @@ -5332,6 +5340,7 @@ SND_PCI_QUIRK(0x1028, 0x05f6, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0615, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK), SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK), + SND_PCI_QUIRK(0x1028, 0x062c, "Dell Latitude E5550", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x062e, "Dell Latitude E7450", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS_HSJACK), SND_PCI_QUIRK(0x1028, 0x064a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), @@ -5457,6 +5466,7 @@ SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), + SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP), SND_PCI_QUIRK(0x17aa, 0x5013, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), @@ -5617,6 +5627,10 @@ {0x21, 0x02211040}), SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, {0x12, 0x90a60170}, + {0x14, 0x90171130}, + {0x21, 0x02211040}), + SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, + {0x12, 0x90a60170}, {0x14, 0x90170140}, {0x21, 0x02211050}), SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell Inspiron 5548", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, @@ -6552,6 +6566,7 @@ SND_PCI_QUIRK(0x1028, 0x069f, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A), + SND_PCI_QUIRK(0x1043, 0x13df, "Asus N550JX", ALC662_FIXUP_BASS_1A), SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_BASS_MODE4_CHMAP), SND_PCI_QUIRK(0x1043, 0x15a7, "ASUS UX51VZH", ALC662_FIXUP_BASS_16), SND_PCI_QUIRK(0x1043, 0x1b73, "ASUS N55SF", ALC662_FIXUP_BASS_16), --- linux-4.4.0.orig/sound/soc/codecs/wm5110.c +++ linux-4.4.0/sound/soc/codecs/wm5110.c @@ -360,15 +360,13 @@ static int wm5110_clear_pga_volume(struct arizona *arizona, int output) { - struct reg_sequence clear_pga = { - ARIZONA_OUTPUT_PATH_CONFIG_1L + output * 4, 0x80 - }; + unsigned int reg = ARIZONA_OUTPUT_PATH_CONFIG_1L + output * 4; int ret; - ret = regmap_multi_reg_write_bypassed(arizona->regmap, &clear_pga, 1); + ret = regmap_write(arizona->regmap, reg, 0x80); if (ret) dev_err(arizona->dev, "Failed to clear PGA (0x%x): %d\n", - clear_pga.reg, ret); + reg, ret); return ret; } --- linux-4.4.0.orig/sound/soc/soc-compress.c +++ linux-4.4.0/sound/soc/soc-compress.c @@ -630,6 +630,7 @@ struct snd_pcm *be_pcm; char new_name[64]; int ret = 0, direction = 0; + int playback = 0, capture = 0; if (rtd->num_codecs > 1) { dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n"); @@ -641,11 +642,27 @@ rtd->dai_link->stream_name, codec_dai->name, num); if (codec_dai->driver->playback.channels_min) + playback = 1; + if (codec_dai->driver->capture.channels_min) + capture = 1; + + capture = capture && cpu_dai->driver->capture.channels_min; + playback = playback && cpu_dai->driver->playback.channels_min; + + /* + * Compress devices are unidirectional so only one of the directions + * should be set, check for that (xor) + */ + if (playback + capture != 1) { + dev_err(rtd->card->dev, "Invalid direction for compress P %d, C %d\n", + playback, capture); + return -EINVAL; + } + + if(playback) direction = SND_COMPRESS_PLAYBACK; - else if (codec_dai->driver->capture.channels_min) - direction = SND_COMPRESS_CAPTURE; else - return -EINVAL; + direction = SND_COMPRESS_CAPTURE; compr = kzalloc(sizeof(*compr), GFP_KERNEL); if (compr == NULL) { --- linux-4.4.0.orig/sound/usb/card.c +++ linux-4.4.0/sound/usb/card.c @@ -675,6 +675,8 @@ void snd_usb_autosuspend(struct snd_usb_audio *chip) { + if (atomic_read(&chip->shutdown)) + return; if (atomic_dec_and_test(&chip->active)) usb_autopm_put_interface(chip->pm_intf); } --- linux-4.4.0.orig/sound/usb/mixer_quirks.c +++ linux-4.4.0/sound/usb/mixer_quirks.c @@ -793,7 +793,7 @@ return 0; kcontrol->private_value &= ~(0xff << 24); - kcontrol->private_value |= newval; + kcontrol->private_value |= (unsigned int)newval << 24; err = snd_ni_update_cur_val(list); return err < 0 ? err : 1; } --- linux-4.4.0.orig/sound/usb/quirks.c +++ linux-4.4.0/sound/usb/quirks.c @@ -1269,6 +1269,7 @@ case USB_ID(0x20b1, 0x3008): /* iFi Audio micro/nano iDSD */ case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */ case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */ + case USB_ID(0x22d8, 0x0416): /* OPPO HA-1*/ if (fp->altsetting == 2) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break; --- linux-4.4.0.orig/spl/AUTHORS +++ linux-4.4.0/spl/AUTHORS @@ -0,0 +1,25 @@ +Original author and maintainer. + + Brian Behlendorf + +Additionally the following individuals have all made contributions +to the project and deserve to be acknowledged. + + Alex Zhuravlev + Brian J. Murrell + Chris Dunlap + Chris Dunlop + Darik Horn + Etienne Dechamps + Gunnar Beutner + Jorgen Lundman + Lars Johannsen + Li Wei + Massimo Maggi + Ned Bass + Neependra Khare + Prakash Surya + Ricardo Correia + Richard Yao + Steven Johnson + Yuxuan Shui --- linux-4.4.0.orig/spl/COPYING +++ linux-4.4.0/spl/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. --- linux-4.4.0.orig/spl/DISCLAIMER +++ linux-4.4.0/spl/DISCLAIMER @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". --- linux-4.4.0.orig/spl/META +++ linux-4.4.0/spl/META @@ -0,0 +1,8 @@ +Meta: 1 +Name: spl +Branch: 1.0 +Version: 0.6.5.4 +Release: 0ubuntu2 +Release-Tags: relext +License: GPL +Author: OpenZFS on Linux --- linux-4.4.0.orig/spl/Makefile.am +++ linux-4.4.0/spl/Makefile.am @@ -0,0 +1,54 @@ + +ACLOCAL_AMFLAGS = -I config + +include config/rpm.am +include config/deb.am +include config/tgz.am + +SUBDIRS = include rpm +if CONFIG_USER +SUBDIRS += lib cmd man scripts +endif +if CONFIG_KERNEL +SUBDIRS += module + +extradir = @prefix@/src/spl-$(VERSION) +extra_HEADERS = spl.release.in spl_config.h.in + +kerneldir = @prefix@/src/spl-$(VERSION)/$(LINUX_VERSION) +nodist_kernel_HEADERS = spl.release spl_config.h module/$(LINUX_SYMBOLS) +endif + +AUTOMAKE_OPTIONS = foreign +EXTRA_DIST = autogen.sh META DISCLAIMER copy-builtin COPYING +EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am + +distclean-local:: + -$(RM) -R autom4te*.cache + -find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ + -o -name .pc -o -name .hg -o -name .git \) -prune -o \ + \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ + -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ + -o -name '.*.rej' -o -name 'aclocal.m4' -o -size 0 \ + -o -name '*%' -o -name '.*.cmd' -o -name 'core' \ + -o -name 'Makefile' -o -name '$(LINUX_SYMBOLS)' \ + -o -name '*.order' -o -name '*.markers' \) \ + -type f -print | xargs $(RM) + +dist-hook: + sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ + $(distdir)/META + +ctags: + $(RM) tags + find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags + +etags: + $(RM) TAGS + find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a + +tags: ctags etags + +pkg: @DEFAULT_PACKAGE@ +pkg-kmod: @DEFAULT_PACKAGE@-kmod +pkg-utils: @DEFAULT_PACKAGE@-utils --- linux-4.4.0.orig/spl/Makefile.in +++ linux-4.4.0/spl/Makefile.in @@ -0,0 +1,1182 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +############################################################################### +# Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for RPM packages. +############################################################################### + +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for DEB packages. +# +# Long term native distro specific Debian style packaging should be added. +# In the short term RPM packages are built and converted to DEB packages +# using alien. If someone familiar with Debian style packaging were to +# update the build system to correctly build Debian style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for TGZ packages. +# +# Long term native distro specific Slackware style packaging should be added. +# In the short term RPM packages are built and converted to TGZ packages +# using alien. If someone familiar with Slackware style packaging were to +# update the build system to correctly build Slackware style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@CONFIG_USER_TRUE@am__append_1 = lib cmd man scripts +@CONFIG_KERNEL_TRUE@am__append_2 = module +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__extra_HEADERS_DIST) \ + $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = spl_config.h +CONFIG_CLEAN_FILES = module/Makefile module/spl/Makefile \ + module/splat/Makefile spl.release +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_HEADERS_DIST = spl.release.in spl_config.h.in +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(extradir)" "$(DESTDIR)$(kerneldir)" +HEADERS = $(extra_HEADERS) $(nodist_kernel_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)spl_config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = include rpm lib cmd man scripts module +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config/deb.am \ + $(srcdir)/config/rpm.am $(srcdir)/config/tgz.am \ + $(srcdir)/spl.release.in $(srcdir)/spl_config.h.in \ + $(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \ + $(top_srcdir)/config/config.sub \ + $(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \ + $(top_srcdir)/config/missing $(top_srcdir)/module/Makefile.in \ + $(top_srcdir)/module/spl/Makefile.in \ + $(top_srcdir)/module/splat/Makefile.in AUTHORS COPYING \ + config/compile config/config.guess config/config.sub \ + config/depcomp config/install-sh config/ltmain.sh \ + config/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I config +SUBDIRS = include rpm $(am__append_1) $(am__append_2) +@CONFIG_KERNEL_TRUE@extradir = @prefix@/src/spl-$(VERSION) +@CONFIG_KERNEL_TRUE@extra_HEADERS = spl.release.in spl_config.h.in +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/$(LINUX_VERSION) +@CONFIG_KERNEL_TRUE@nodist_kernel_HEADERS = spl.release spl_config.h module/$(LINUX_SYMBOLS) +AUTOMAKE_OPTIONS = foreign +EXTRA_DIST = autogen.sh META DISCLAIMER copy-builtin COPYING \ + config/config.awk config/rpm.am config/deb.am config/tgz.am +all: spl_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/config/rpm.am $(srcdir)/config/deb.am $(srcdir)/config/tgz.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/config/rpm.am $(srcdir)/config/deb.am $(srcdir)/config/tgz.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +spl_config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/spl_config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status spl_config.h +$(srcdir)/spl_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f spl_config.h stamp-h1 +module/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/spl/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/spl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/splat/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/splat/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +spl.release: $(top_builddir)/config.status $(srcdir)/spl.release.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-extraHEADERS: $(extra_HEADERS) + @$(NORMAL_INSTALL) + @list='$(extra_HEADERS)'; test -n "$(extradir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(extradir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(extradir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(extradir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(extradir)" || exit $$?; \ + done + +uninstall-extraHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(extra_HEADERS)'; test -n "$(extradir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(extradir)'; $(am__uninstall_files_from_dir) +install-nodist_kernelHEADERS: $(nodist_kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-nodist_kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) spl_config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(extradir)" "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-extraHEADERS install-nodist_kernelHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-extraHEADERS uninstall-nodist_kernelHEADERS + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-local distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am \ + install-extraHEADERS install-html install-html-am install-info \ + install-info-am install-man install-nodist_kernelHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-extraHEADERS uninstall-nodist_kernelHEADERS + +.PRECIOUS: Makefile + + +srpm-kmod: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common + +srpm-dkms: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common + +srpm-utils: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common + +srpm: srpm-kmod srpm-dkms srpm-utils +srpms: srpm-kmod srpm-dkms srpm-utils + +rpm-kmod: srpm-kmod + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common + +rpm-dkms: srpm-dkms + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common + +rpm-utils: srpm-utils + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common + +rpm: rpm-kmod rpm-dkms rpm-utils +rpms: rpm-kmod rpm-dkms rpm-utils + +rpm-local: + @(if test "${HAVE_RPMBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${RPMBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${RPMBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + mkdir -p $(rpmbuild)/TMP && \ + mkdir -p $(rpmbuild)/BUILD && \ + mkdir -p $(rpmbuild)/RPMS && \ + mkdir -p $(rpmbuild)/SRPMS && \ + mkdir -p $(rpmbuild)/SPECS && \ + cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \ + mkdir -p $(rpmbuild)/SOURCES && \ + cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ + cp $(distdir).tar.gz $(rpmbuild)/SOURCES) + +srpm-common: dist + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C $(RPMBUILD) \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ + cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ + rm -R $$rpmbuild) + +rpm-common: + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C ${RPMBUILD} \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) --rebuild $$rpmpkg || exit 1; \ + cp $$rpmbuild/RPMS/*/* . || exit 1; \ + rm -R $$rpmbuild) + +deb-local: + @(if test "${HAVE_DPKGBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${DPKGBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${DPKGBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +deb-kmod: deb-local rpm-kmod +@CONFIG_KERNEL_TRUE@ name=${PACKAGE}; \ +@CONFIG_KERNEL_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_KERNEL_TRUE@ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_KERNEL_TRUE@ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ +@CONFIG_KERNEL_TRUE@ fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ +@CONFIG_KERNEL_TRUE@ $(RM) $$pkg1 + +deb-utils: deb-local rpm-utils +@CONFIG_USER_TRUE@ name=${PACKAGE}; \ +@CONFIG_USER_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_USER_TRUE@ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_USER_TRUE@ pkg1=$${name}-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ +@CONFIG_USER_TRUE@ $(RM) $$pkg1 + +deb: deb-kmod deb-utils + +tgz-local: + @(if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +tgz-kmod: tgz-local rpm-kmod +@CONFIG_KERNEL_TRUE@ name=${PACKAGE}; \ +@CONFIG_KERNEL_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_KERNEL_TRUE@ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_KERNEL_TRUE@ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ +@CONFIG_KERNEL_TRUE@ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ +@CONFIG_KERNEL_TRUE@ $(RM) $$pkg1 + +tgz-utils: tgz-local rpm-utils +@CONFIG_USER_TRUE@ name=${PACKAGE}; \ +@CONFIG_USER_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_USER_TRUE@ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_USER_TRUE@ pkg1=$${name}-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ +@CONFIG_USER_TRUE@ $(RM) $$pkg1 + +tgz: tgz-kmod tgz-utils + +distclean-local:: + -$(RM) -R autom4te*.cache + -find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ + -o -name .pc -o -name .hg -o -name .git \) -prune -o \ + \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ + -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ + -o -name '.*.rej' -o -name 'aclocal.m4' -o -size 0 \ + -o -name '*%' -o -name '.*.cmd' -o -name 'core' \ + -o -name 'Makefile' -o -name '$(LINUX_SYMBOLS)' \ + -o -name '*.order' -o -name '*.markers' \) \ + -type f -print | xargs $(RM) + +dist-hook: + sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ + $(distdir)/META + +ctags: + $(RM) tags + find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags + +etags: + $(RM) TAGS + find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a + +tags: ctags etags + +pkg: @DEFAULT_PACKAGE@ +pkg-kmod: @DEFAULT_PACKAGE@-kmod +pkg-utils: @DEFAULT_PACKAGE@-utils + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/aclocal.m4 +++ linux-4.4.0/spl/aclocal.m4 @@ -0,0 +1,1195 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([config/libtool.m4]) +m4_include([config/ltoptions.m4]) +m4_include([config/ltsugar.m4]) +m4_include([config/ltversion.m4]) +m4_include([config/lt~obsolete.m4]) +m4_include([config/spl-build.m4]) +m4_include([config/spl-meta.m4]) --- linux-4.4.0.orig/spl/autogen.sh +++ linux-4.4.0/spl/autogen.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +autoreconf -fiv +rm -Rf autom4te.cache --- linux-4.4.0.orig/spl/cmd/Makefile.am +++ linux-4.4.0/spl/cmd/Makefile.am @@ -0,0 +1,11 @@ +include $(top_srcdir)/config/Rules.am + +DEFAULT_INCLUDES += \ + -I$(top_srcdir)/lib + +sbin_PROGRAMS = splat + +splat_SOURCES = splat.c +splat_LDFLAGS = $(top_builddir)/lib/libcommon.la + +EXTRA_DIST = splat.h --- linux-4.4.0.orig/spl/cmd/Makefile.in +++ linux-4.4.0/spl/cmd/Makefile.in @@ -0,0 +1,702 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Common rules for user space components. +############################################################################### + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = splat$(EXEEXT) +subdir = cmd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" +PROGRAMS = $(sbin_PROGRAMS) +am_splat_OBJECTS = splat.$(OBJEXT) +splat_OBJECTS = $(am_splat_OBJECTS) +splat_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +splat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(splat_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(splat_SOURCES) +DIST_SOURCES = $(splat_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am \ + $(top_srcdir)/config/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h \ + -I$(top_srcdir)/lib +AM_LIBTOOLFLAGS = --silent +AM_CPPFLAGS = -D__USE_LARGEFILE64 +AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing \ + ${DEBUG_CFLAGS} +splat_SOURCES = splat.c +splat_LDFLAGS = $(top_builddir)/lib/libcommon.la +EXTRA_DIST = splat.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cmd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cmd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/config/Rules.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +splat$(EXEEXT): $(splat_OBJECTS) $(splat_DEPENDENCIES) $(EXTRA_splat_DEPENDENCIES) + @rm -f splat$(EXEEXT) + $(AM_V_CCLD)$(splat_LINK) $(splat_OBJECTS) $(splat_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splat.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(sbindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-sbinPROGRAMS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/cmd/splat.c +++ linux-4.4.0/spl/cmd/splat.c @@ -0,0 +1,836 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) User Space Interface. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "splat.h" + +#undef ioctl + +static const char shortOpts[] = "hvlat:xc"; +static const struct option longOpts[] = { + { "help", no_argument, 0, 'h' }, + { "verbose", no_argument, 0, 'v' }, + { "list", no_argument, 0, 'l' }, + { "all", no_argument, 0, 'a' }, + { "test", required_argument, 0, 't' }, + { "exit", no_argument, 0, 'x' }, + { "nocolor", no_argument, 0, 'c' }, + { 0, 0, 0, 0 } +}; + +#define VERSION_SIZE 64 + +static List subsystems; /* Subsystem/tests */ +static int splatctl_fd; /* Control file descriptor */ +static char splat_version[VERSION_SIZE]; /* Kernel version string */ +static char *splat_buffer = NULL; /* Scratch space area */ +static int splat_buffer_size = 0; /* Scratch space size */ + + +static void test_list(List, int); +static int dev_clear(void); +static void subsystem_fini(subsystem_t *); +static void test_fini(test_t *); + + +static int usage(void) { + fprintf(stderr, "usage: splat [hvla] [-t >]\n"); + fprintf(stderr, + " --help -h This help\n" + " --verbose -v Increase verbosity\n" + " --list -l List all tests in all subsystems\n" + " --all -a Run all tests in all subsystems\n" + " --test -t Run 'test' in subsystem 'sub'\n" + " --exit -x Exit on first test error\n" + " --nocolor -c Do not colorize output\n"); + fprintf(stderr, "\n" + "Examples:\n" + " splat -t kmem:all # Runs all kmem tests\n" + " splat -t taskq:0x201 # Run taskq test 0x201\n"); + + return 0; +} + +static subsystem_t *subsystem_init(splat_user_t *desc) +{ + subsystem_t *sub; + + sub = (subsystem_t *)malloc(sizeof(*sub)); + if (sub == NULL) + return NULL; + + memcpy(&sub->sub_desc, desc, sizeof(*desc)); + + sub->sub_tests = list_create((ListDelF)test_fini); + if (sub->sub_tests == NULL) { + free(sub); + return NULL; + } + + return sub; +} + +static void subsystem_fini(subsystem_t *sub) +{ + assert(sub != NULL); + free(sub); +} + +static int subsystem_setup(void) +{ + splat_cfg_t *cfg; + int i, rc, size, cfg_size; + subsystem_t *sub; + splat_user_t *desc; + + /* Aquire the number of registered subsystems */ + cfg_size = sizeof(*cfg); + cfg = (splat_cfg_t *)malloc(cfg_size); + if (cfg == NULL) + return -ENOMEM; + + memset(cfg, 0, cfg_size); + cfg->cfg_magic = SPLAT_CFG_MAGIC; + cfg->cfg_cmd = SPLAT_CFG_SUBSYSTEM_COUNT; + + rc = ioctl(splatctl_fd, SPLAT_CFG, cfg); + if (rc) { + fprintf(stderr, "Ioctl() error 0x%lx / %d: %d\n", + (unsigned long)SPLAT_CFG, cfg->cfg_cmd, errno); + free(cfg); + return rc; + } + + size = cfg->cfg_rc1; + free(cfg); + + /* Based on the newly acquired number of subsystems allocate + * memory to get the descriptive information for them all. */ + cfg_size = sizeof(*cfg) + size * sizeof(splat_user_t); + cfg = (splat_cfg_t *)malloc(cfg_size); + if (cfg == NULL) + return -ENOMEM; + + memset(cfg, 0, cfg_size); + cfg->cfg_magic = SPLAT_CFG_MAGIC; + cfg->cfg_cmd = SPLAT_CFG_SUBSYSTEM_LIST; + cfg->cfg_data.splat_subsystems.size = size; + + rc = ioctl(splatctl_fd, SPLAT_CFG, cfg); + if (rc) { + fprintf(stderr, "Ioctl() error %lu / %d: %d\n", + (unsigned long) SPLAT_CFG, cfg->cfg_cmd, errno); + free(cfg); + return rc; + } + + /* Add the new subsystems in to the global list */ + size = cfg->cfg_rc1; + for (i = 0; i < size; i++) { + desc = &(cfg->cfg_data.splat_subsystems.descs[i]); + + sub = subsystem_init(desc); + if (sub == NULL) { + fprintf(stderr, "Error initializing subsystem: %s\n", + desc->name); + free(cfg); + return -ENOMEM; + } + + list_append(subsystems, sub); + } + + free(cfg); + return 0; +} + +static void subsystem_list(List l, int indent) +{ + ListIterator i; + subsystem_t *sub; + + fprintf(stdout, + "------------------------------ " + "Available SPLAT Tests " + "------------------------------\n"); + + i = list_iterator_create(l); + + while ((sub = list_next(i))) { + fprintf(stdout, "%*s0x%0*x %-*s ---- %s ----\n", + indent, "", + 4, sub->sub_desc.id, + SPLAT_NAME_SIZE + 7, sub->sub_desc.name, + sub->sub_desc.desc); + test_list(sub->sub_tests, indent + 7); + } + + list_iterator_destroy(i); +} + +static test_t *test_init(subsystem_t *sub, splat_user_t *desc) +{ + test_t *test; + + test = (test_t *)malloc(sizeof(*test)); + if (test == NULL) + return NULL; + + test->test_sub = sub; + memcpy(&test->test_desc, desc, sizeof(*desc)); + + return test; +} + +static void test_fini(test_t *test) +{ + assert(test != NULL); + free(test); +} + +static int test_setup(subsystem_t *sub) +{ + splat_cfg_t *cfg; + int i, rc, size; + test_t *test; + splat_user_t *desc; + + /* Aquire the number of registered tests for the give subsystem */ + cfg = (splat_cfg_t *)malloc(sizeof(*cfg)); + if (cfg == NULL) + return -ENOMEM; + + memset(cfg, 0, sizeof(*cfg)); + cfg->cfg_magic = SPLAT_CFG_MAGIC; + cfg->cfg_cmd = SPLAT_CFG_TEST_COUNT; + cfg->cfg_arg1 = sub->sub_desc.id; /* Subsystem of interest */ + + rc = ioctl(splatctl_fd, SPLAT_CFG, cfg); + if (rc) { + fprintf(stderr, "Ioctl() error %lu / %d: %d\n", + (unsigned long) SPLAT_CFG, cfg->cfg_cmd, errno); + free(cfg); + return rc; + } + + size = cfg->cfg_rc1; + free(cfg); + + /* Based on the newly aquired number of tests allocate enough + * memory to get the descriptive information for them all. */ + cfg = (splat_cfg_t *)malloc(sizeof(*cfg) + size*sizeof(splat_user_t)); + if (cfg == NULL) + return -ENOMEM; + + memset(cfg, 0, sizeof(*cfg) + size * sizeof(splat_user_t)); + cfg->cfg_magic = SPLAT_CFG_MAGIC; + cfg->cfg_cmd = SPLAT_CFG_TEST_LIST; + cfg->cfg_arg1 = sub->sub_desc.id; /* Subsystem of interest */ + cfg->cfg_data.splat_tests.size = size; + + rc = ioctl(splatctl_fd, SPLAT_CFG, cfg); + if (rc) { + fprintf(stderr, "Ioctl() error %lu / %d: %d\n", + (unsigned long) SPLAT_CFG, cfg->cfg_cmd, errno); + free(cfg); + return rc; + } + + /* Add the new tests in to the relevant subsystems */ + size = cfg->cfg_rc1; + for (i = 0; i < size; i++) { + desc = &(cfg->cfg_data.splat_tests.descs[i]); + + test = test_init(sub, desc); + if (test == NULL) { + fprintf(stderr, "Error initializing test: %s\n", + desc->name); + free(cfg); + return -ENOMEM; + } + + list_append(sub->sub_tests, test); + } + + free(cfg); + return 0; +} + +static test_t *test_copy(test_t *test) +{ + return test_init(test->test_sub, &test->test_desc); +} + +static void test_list(List l, int indent) +{ + ListIterator i; + test_t *test; + + i = list_iterator_create(l); + + while ((test = list_next(i))) + fprintf(stdout, "%*s0x%0*x %-*s %s\n", + indent, "", 04, test->test_desc.id, + SPLAT_NAME_SIZE, test->test_desc.name, + test->test_desc.desc); + + list_iterator_destroy(i); +} + +static test_t *test_find(char *sub_str, char *test_str) +{ + ListIterator si, ti; + subsystem_t *sub; + test_t *test; + __u32 sub_num, test_num; + + /* + * No error checking here because it may not be a number, it's + * perfectly OK for it to be a string. Since we're just using + * it for comparison purposes this is all very safe. + */ + sub_num = strtoul(sub_str, NULL, 0); + test_num = strtoul(test_str, NULL, 0); + + si = list_iterator_create(subsystems); + + while ((sub = list_next(si))) { + + if (strncmp(sub->sub_desc.name, sub_str, SPLAT_NAME_SIZE) && + sub->sub_desc.id != sub_num) + continue; + + ti = list_iterator_create(sub->sub_tests); + + while ((test = list_next(ti))) { + + if (!strncmp(test->test_desc.name, test_str, + SPLAT_NAME_SIZE) || test->test_desc.id==test_num) { + list_iterator_destroy(ti); + list_iterator_destroy(si); + return test; + } + } + + list_iterator_destroy(ti); + } + + list_iterator_destroy(si); + + return NULL; +} + +static int test_add(cmd_args_t *args, test_t *test) +{ + test_t *tmp; + + tmp = test_copy(test); + if (tmp == NULL) + return -ENOMEM; + + list_append(args->args_tests, tmp); + return 0; +} + +static int test_add_all(cmd_args_t *args) +{ + ListIterator si, ti; + subsystem_t *sub; + test_t *test; + int rc; + + si = list_iterator_create(subsystems); + + while ((sub = list_next(si))) { + ti = list_iterator_create(sub->sub_tests); + + while ((test = list_next(ti))) { + if ((rc = test_add(args, test))) { + list_iterator_destroy(ti); + list_iterator_destroy(si); + return rc; + } + } + + list_iterator_destroy(ti); + } + + list_iterator_destroy(si); + + return 0; +} + +static int test_run(cmd_args_t *args, test_t *test) +{ + subsystem_t *sub = test->test_sub; + splat_cmd_t *cmd; + int rc, cmd_size; + + dev_clear(); + + cmd_size = sizeof(*cmd); + cmd = (splat_cmd_t *)malloc(cmd_size); + if (cmd == NULL) + return -ENOMEM; + + memset(cmd, 0, cmd_size); + cmd->cmd_magic = SPLAT_CMD_MAGIC; + cmd->cmd_subsystem = sub->sub_desc.id; + cmd->cmd_test = test->test_desc.id; + cmd->cmd_data_size = 0; /* Unused feature */ + + fprintf(stdout, "%*s:%-*s ", + SPLAT_NAME_SIZE, sub->sub_desc.name, + SPLAT_NAME_SIZE, test->test_desc.name); + fflush(stdout); + rc = ioctl(splatctl_fd, SPLAT_CMD, cmd); + if (args->args_do_color) { + fprintf(stdout, "%s %s\n", rc ? + COLOR_RED "Fail" COLOR_RESET : + COLOR_GREEN "Pass" COLOR_RESET, + rc ? strerror(errno) : ""); + } else { + fprintf(stdout, "%s %s\n", rc ? + "Fail" : "Pass", + rc ? strerror(errno) : ""); + } + fflush(stdout); + free(cmd); + + if ((args->args_verbose == 1 && rc) || + (args->args_verbose >= 2)) { + if ((rc = read(splatctl_fd, splat_buffer, + splat_buffer_size - 1)) < 0) { + fprintf(stdout, "Error reading results: %d\n", rc); + } else { + fprintf(stdout, "\n%s\n", splat_buffer); + fflush(stdout); + } + } + + return rc; +} + +static int tests_run(cmd_args_t *args) +{ + ListIterator i; + test_t *test; + int rc; + + fprintf(stdout, + "------------------------------ " + "Running SPLAT Tests " + "------------------------------\n"); + + i = list_iterator_create(args->args_tests); + + while ((test = list_next(i))) { + rc = test_run(args, test); + if (rc && args->args_exit_on_error) { + list_iterator_destroy(i); + return rc; + } + } + + list_iterator_destroy(i); + return 0; +} + +static int args_parse_test(cmd_args_t *args, char *str) +{ + ListIterator si, ti; + subsystem_t *s; + test_t *t; + char *sub_str, *test_str; + int sub_num, test_num; + int sub_all = 0, test_all = 0; + int rc, flag = 0; + + test_str = strchr(str, ':'); + if (test_str == NULL) { + fprintf(stderr, "Test must be of the " + "form \n"); + return -EINVAL; + } + + sub_str = str; + test_str[0] = '\0'; + test_str = test_str + 1; + + sub_num = strtol(sub_str, NULL, 0); + test_num = strtol(test_str, NULL, 0); + + if (!strncasecmp(sub_str, "all", strlen(sub_str)) || (sub_num == -1)) + sub_all = 1; + + if (!strncasecmp(test_str,"all",strlen(test_str)) || (test_num == -1)) + test_all = 1; + + si = list_iterator_create(subsystems); + + if (sub_all) { + if (test_all) { + /* Add all tests from all subsystems */ + while ((s = list_next(si))) { + ti = list_iterator_create(s->sub_tests); + while ((t = list_next(ti))) { + if ((rc = test_add(args, t))) { + list_iterator_destroy(ti); + goto error_run; + } + } + list_iterator_destroy(ti); + } + } else { + /* Add a specific test from all subsystems */ + while ((s = list_next(si))) { + if ((t=test_find(s->sub_desc.name,test_str))) { + if ((rc = test_add(args, t))) + goto error_run; + + flag = 1; + } + } + + if (!flag) + fprintf(stderr, "No tests '%s:%s' could be " + "found\n", sub_str, test_str); + } + } else { + if (test_all) { + /* Add all tests from a specific subsystem */ + while ((s = list_next(si))) { + if (strncasecmp(sub_str, s->sub_desc.name, + strlen(sub_str))) + continue; + + ti = list_iterator_create(s->sub_tests); + while ((t = list_next(ti))) { + if ((rc = test_add(args, t))) { + list_iterator_destroy(ti); + goto error_run; + } + } + list_iterator_destroy(ti); + } + } else { + /* Add a specific test from a specific subsystem */ + if ((t = test_find(sub_str, test_str))) { + if ((rc = test_add(args, t))) + goto error_run; + } else { + fprintf(stderr, "Test '%s:%s' could not be " + "found\n", sub_str, test_str); + return -EINVAL; + } + } + } + + list_iterator_destroy(si); + + return 0; + +error_run: + list_iterator_destroy(si); + + fprintf(stderr, "Test '%s:%s' not added to run list: %d\n", + sub_str, test_str, rc); + + return rc; +} + +static void args_fini(cmd_args_t *args) +{ + assert(args != NULL); + + if (args->args_tests != NULL) + list_destroy(args->args_tests); + + free(args); +} + +static cmd_args_t * +args_init(int argc, char **argv) +{ + cmd_args_t *args; + int c, rc; + + if (argc == 1) { + usage(); + return (cmd_args_t *) NULL; + } + + /* Configure and populate the args structures */ + args = malloc(sizeof(*args)); + if (args == NULL) + return NULL; + + memset(args, 0, sizeof(*args)); + args->args_verbose = 0; + args->args_do_list = 0; + args->args_do_all = 0; + args->args_do_color = 1; + args->args_exit_on_error = 0; + args->args_tests = list_create((ListDelF)test_fini); + if (args->args_tests == NULL) { + args_fini(args); + return NULL; + } + + while ((c = getopt_long(argc, argv, shortOpts, longOpts, NULL)) != -1){ + switch (c) { + case 'v': args->args_verbose++; break; + case 'l': args->args_do_list = 1; break; + case 'a': args->args_do_all = 1; break; + case 'c': args->args_do_color = 0; break; + case 'x': args->args_exit_on_error = 1; break; + case 't': + if (args->args_do_all) { + fprintf(stderr, "Option -t is " + "useless when used with -a\n"); + args_fini(args); + return NULL; + } + + rc = args_parse_test(args, argv[optind - 1]); + if (rc) { + args_fini(args); + return NULL; + } + break; + case 'h': + case '?': + usage(); + args_fini(args); + return NULL; + default: + fprintf(stderr, "Unknown option '%s'\n", + argv[optind - 1]); + break; + } + } + + return args; +} + +static int +dev_clear(void) +{ + splat_cfg_t cfg; + int rc; + + memset(&cfg, 0, sizeof(cfg)); + cfg.cfg_magic = SPLAT_CFG_MAGIC; + cfg.cfg_cmd = SPLAT_CFG_BUFFER_CLEAR; + cfg.cfg_arg1 = 0; + + rc = ioctl(splatctl_fd, SPLAT_CFG, &cfg); + if (rc) + fprintf(stderr, "Ioctl() error %lu / %d: %d\n", + (unsigned long) SPLAT_CFG, cfg.cfg_cmd, errno); + + lseek(splatctl_fd, 0, SEEK_SET); + + return rc; +} + +static int +dev_size(int size) +{ + splat_cfg_t cfg; + int rc; + + memset(&cfg, 0, sizeof(cfg)); + cfg.cfg_magic = SPLAT_CFG_MAGIC; + cfg.cfg_cmd = SPLAT_CFG_BUFFER_SIZE; + cfg.cfg_arg1 = size; + + rc = ioctl(splatctl_fd, SPLAT_CFG, &cfg); + if (rc) { + fprintf(stderr, "Ioctl() error %lu / %d: %d\n", + (unsigned long) SPLAT_CFG, cfg.cfg_cmd, errno); + return rc; + } + + return cfg.cfg_rc1; +} + +static void +dev_fini(void) +{ + if (splat_buffer) + free(splat_buffer); + + if (splatctl_fd != -1) { + if (close(splatctl_fd) == -1) { + fprintf(stderr, "Unable to close %s: %d\n", + SPLAT_DEV, errno); + } + } +} + +static int +dev_init(void) +{ + ListIterator i; + subsystem_t *sub; + int rc; + + splatctl_fd = open(SPLAT_DEV, O_RDONLY); + if (splatctl_fd == -1) { + fprintf(stderr, "Unable to open %s: %d\n" + "Is the splat module loaded?\n", SPLAT_DEV, errno); + rc = errno; + goto error; + } + + /* Determine kernel module version string */ + memset(splat_version, 0, VERSION_SIZE); + if ((rc = read(splatctl_fd, splat_version, VERSION_SIZE - 1)) == -1) + goto error; + + if ((rc = dev_clear())) + goto error; + + if ((rc = dev_size(0)) < 0) + goto error; + + splat_buffer_size = rc; + splat_buffer = (char *)malloc(splat_buffer_size); + if (splat_buffer == NULL) { + rc = -ENOMEM; + goto error; + } + + memset(splat_buffer, 0, splat_buffer_size); + + /* Determine available subsystems */ + if ((rc = subsystem_setup()) != 0) + goto error; + + /* Determine available tests for all subsystems */ + i = list_iterator_create(subsystems); + + while ((sub = list_next(i))) { + if ((rc = test_setup(sub)) != 0) { + list_iterator_destroy(i); + goto error; + } + } + + list_iterator_destroy(i); + return 0; + +error: + if (splatctl_fd != -1) { + if (close(splatctl_fd) == -1) { + fprintf(stderr, "Unable to close %s: %d\n", + SPLAT_DEV, errno); + } + } + + return rc; +} + +int +init(void) +{ + int rc = 0; + + /* Allocate the subsystem list */ + subsystems = list_create((ListDelF)subsystem_fini); + if (subsystems == NULL) + rc = ENOMEM; + + return rc; +} + +void +fini(void) +{ + list_destroy(subsystems); +} + + +int +main(int argc, char **argv) +{ + cmd_args_t *args = NULL; + int rc = 0; + + /* General init */ + if ((rc = init())) + return rc; + + /* Device specific init */ + if ((rc = dev_init())) + goto out; + + /* Argument init and parsing */ + if ((args = args_init(argc, argv)) == NULL) { + rc = -1; + goto out; + } + + /* Generic kernel version string */ + if (args->args_verbose) + fprintf(stdout, "%s", splat_version); + + /* Print the available test list and exit */ + if (args->args_do_list) { + subsystem_list(subsystems, 0); + goto out; + } + + /* Add all available test to the list of tests to run */ + if (args->args_do_all) { + if ((rc = test_add_all(args))) + goto out; + } + + /* Run all the requested tests */ + if ((rc = tests_run(args))) + goto out; + +out: + if (args != NULL) + args_fini(args); + + dev_fini(); + fini(); + return rc; +} --- linux-4.4.0.orig/spl/cmd/splat.h +++ linux-4.4.0/spl/cmd/splat.h @@ -0,0 +1,70 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPLAT_H +#define _SPLAT_H + +#include "list.h" +#include "../include/splat-ctl.h" + +#define DEV_NAME "/dev/splatctl" +#define COLOR_BLACK "\033[0;30m" +#define COLOR_DK_GRAY "\033[1;30m" +#define COLOR_BLUE "\033[0;34m" +#define COLOR_LT_BLUE "\033[1;34m" +#define COLOR_GREEN "\033[0;32m" +#define COLOR_LT_GREEN "\033[1;32m" +#define COLOR_CYAN "\033[0;36m" +#define COLOR_LT_CYAN "\033[1;36m" +#define COLOR_RED "\033[0;31m" +#define COLOR_LT_RED "\033[1;31m" +#define COLOR_PURPLE "\033[0;35m" +#define COLOR_LT_PURPLE "\033[1;35m" +#define COLOR_BROWN "\033[0;33m" +#define COLOR_YELLOW "\033[1;33m" +#define COLOR_LT_GRAY "\033[0;37m" +#define COLOR_WHITE "\033[1;37m" +#define COLOR_RESET "\033[0m" + +typedef struct subsystem { + splat_user_t sub_desc; /* Subsystem description */ + List sub_tests; /* Assocated subsystem tests list */ +} subsystem_t; + +typedef struct test { + splat_user_t test_desc; /* Test description */ + subsystem_t *test_sub; /* Parent subsystem */ +} test_t; + +typedef struct cmd_args { + int args_verbose; /* Verbose flag */ + int args_do_list; /* Display all tests flag */ + int args_do_all; /* Run all tests flag */ + int args_do_color; /* Colorize output */ + int args_exit_on_error; /* Exit on first error flag */ + List args_tests; /* Requested subsystems/tests */ +} cmd_args_t; + +#endif /* _SPLAT_H */ + --- linux-4.4.0.orig/spl/config/Rules.am +++ linux-4.4.0/spl/config/Rules.am @@ -0,0 +1,14 @@ +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Common rules for user space components. +############################################################################### + +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h + +AM_LIBTOOLFLAGS = --silent +AM_CPPFLAGS = -D__USE_LARGEFILE64 +AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing +AM_CFLAGS += ${DEBUG_CFLAGS} --- linux-4.4.0.orig/spl/config/compile +++ linux-4.4.0/spl/config/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/spl/config/config.awk +++ linux-4.4.0/spl/config/config.awk @@ -0,0 +1,15 @@ +# Remove default preprocessor define's from config.h +# PACKAGE +# PACKAGE_BUGREPORT +# PACKAGE_NAME +# PACKAGE_STRING +# PACKAGE_TARNAME +# PACKAGE_VERSION +# STDC_HEADERS +# VERSION + +BEGIN { RS = "" ; FS = "\n" } \ + !/.#define PACKAGE./ && \ + !/.#define VERSION./ && \ + !/.#define STDC_HEADERS./ \ + { print $0"\n" } --- linux-4.4.0.orig/spl/config/config.guess +++ linux-4.4.0/spl/config/config.guess @@ -0,0 +1,1441 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: --- linux-4.4.0.orig/spl/config/config.sub +++ linux-4.4.0/spl/config/config.sub @@ -0,0 +1,1813 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: --- linux-4.4.0.orig/spl/config/deb.am +++ linux-4.4.0/spl/config/deb.am @@ -0,0 +1,51 @@ +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for DEB packages. +# +# Long term native distro specific Debian style packaging should be added. +# In the short term RPM packages are built and converted to DEB packages +# using alien. If someone familiar with Debian style packaging were to +# update the build system to correctly build Debian style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + +deb-local: + @(if test "${HAVE_DPKGBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${DPKGBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${DPKGBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +deb-kmod: deb-local rpm-kmod +if CONFIG_KERNEL + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ + $(RM) $$pkg1 +endif + +deb-utils: deb-local rpm-utils +if CONFIG_USER + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ + $(RM) $$pkg1 +endif + +deb: deb-kmod deb-utils --- linux-4.4.0.orig/spl/config/depcomp +++ linux-4.4.0/spl/config/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/spl/config/install-sh +++ linux-4.4.0/spl/config/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2013-12-25.23; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/spl/config/libtool.m4 +++ linux-4.4.0/spl/config/libtool.m4 @@ -0,0 +1,7997 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS --- linux-4.4.0.orig/spl/config/ltmain.sh +++ linux-4.4.0/spl/config/ltmain.sh @@ -0,0 +1,9661 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.2 Debian-2.4.2-1.11" +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + --- linux-4.4.0.orig/spl/config/ltoptions.m4 +++ linux-4.4.0/spl/config/ltoptions.m4 @@ -0,0 +1,384 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) --- linux-4.4.0.orig/spl/config/ltsugar.m4 +++ linux-4.4.0/spl/config/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) --- linux-4.4.0.orig/spl/config/ltversion.m4 +++ linux-4.4.0/spl/config/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) --- linux-4.4.0.orig/spl/config/lt~obsolete.m4 +++ linux-4.4.0/spl/config/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) --- linux-4.4.0.orig/spl/config/missing +++ linux-4.4.0/spl/config/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/spl/config/rpm.am +++ linux-4.4.0/spl/config/rpm.am @@ -0,0 +1,87 @@ +############################################################################### +# Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for RPM packages. +############################################################################### + +srpm-kmod: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common + +srpm-dkms: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common + +srpm-utils: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common + +srpm: srpm-kmod srpm-dkms srpm-utils +srpms: srpm-kmod srpm-dkms srpm-utils + +rpm-kmod: srpm-kmod + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common + +rpm-dkms: srpm-dkms + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common + +rpm-utils: srpm-utils + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common + +rpm: rpm-kmod rpm-dkms rpm-utils +rpms: rpm-kmod rpm-dkms rpm-utils + +rpm-local: + @(if test "${HAVE_RPMBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${RPMBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${RPMBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + mkdir -p $(rpmbuild)/TMP && \ + mkdir -p $(rpmbuild)/BUILD && \ + mkdir -p $(rpmbuild)/RPMS && \ + mkdir -p $(rpmbuild)/SRPMS && \ + mkdir -p $(rpmbuild)/SPECS && \ + cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \ + mkdir -p $(rpmbuild)/SOURCES && \ + cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ + cp $(distdir).tar.gz $(rpmbuild)/SOURCES) + +srpm-common: dist + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C $(RPMBUILD) \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ + cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ + rm -R $$rpmbuild) + +rpm-common: + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C ${RPMBUILD} \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) --rebuild $$rpmpkg || exit 1; \ + cp $$rpmbuild/RPMS/*/* . || exit 1; \ + rm -R $$rpmbuild) --- linux-4.4.0.orig/spl/config/spl-build.m4 +++ linux-4.4.0/spl/config/spl-build.m4 @@ -0,0 +1,1449 @@ +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# SPL_AC_CONFIG_KERNEL: Default SPL kernel configuration. +############################################################################### + +AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ + SPL_AC_KERNEL + + if test "${LINUX_OBJ}" != "${LINUX}"; then + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + fi + AC_SUBST(KERNELMAKE_PARAMS) + + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" + AC_SUBST(KERNELCPPFLAGS) + + SPL_AC_DEBUG + SPL_AC_DEBUG_KMEM + SPL_AC_DEBUG_KMEM_TRACKING + SPL_AC_TEST_MODULE + SPL_AC_ATOMIC_SPINLOCK + SPL_AC_SHRINKER_CALLBACK + SPL_AC_CTL_NAME + SPL_AC_PDE_DATA + SPL_AC_SET_FS_PWD_WITH_CONST + SPL_AC_2ARGS_VFS_UNLINK + SPL_AC_4ARGS_VFS_RENAME + SPL_AC_2ARGS_VFS_FSYNC + SPL_AC_INODE_TRUNCATE_RANGE + SPL_AC_FS_STRUCT_SPINLOCK + SPL_AC_KUIDGID_T + SPL_AC_PUT_TASK_STRUCT + SPL_AC_KERNEL_FALLOCATE + SPL_AC_CONFIG_ZLIB_INFLATE + SPL_AC_CONFIG_ZLIB_DEFLATE + SPL_AC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE + SPL_AC_SHRINK_CONTROL_STRUCT + SPL_AC_RWSEM_SPINLOCK_IS_RAW + SPL_AC_SCHED_RT_HEADER + SPL_AC_2ARGS_VFS_GETATTR + SPL_AC_USLEEP_RANGE + SPL_AC_KMEM_CACHE_ALLOCFLAGS + SPL_AC_WAIT_ON_BIT +]) + +AC_DEFUN([SPL_AC_MODULE_SYMVERS], [ + modpost=$LINUX/scripts/Makefile.modpost + AC_MSG_CHECKING([kernel file name for module symbols]) + if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then + if grep -q Modules.symvers $modpost; then + LINUX_SYMBOLS=Modules.symvers + else + LINUX_SYMBOLS=Module.symvers + fi + + if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then + AC_MSG_ERROR([ + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source.]) + fi + else + LINUX_SYMBOLS=NONE + fi + AC_MSG_RESULT($LINUX_SYMBOLS) + AC_SUBST(LINUX_SYMBOLS) +]) + +AC_DEFUN([SPL_AC_KERNEL], [ + AC_ARG_WITH([linux], + AS_HELP_STRING([--with-linux=PATH], + [Path to kernel source]), + [kernelsrc="$withval"]) + + AC_ARG_WITH([linux-obj], + AS_HELP_STRING([--with-linux-obj=PATH], + [Path to kernel build objects]), + [kernelbuild="$withval"]) + + AC_MSG_CHECKING([kernel source directory]) + if test -z "$kernelsrc"; then + if test -e "/lib/modules/$(uname -r)/source"; then + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + elif test -e "/lib/modules/$(uname -r)/build"; then + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + else + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + fi + + if test -n "$sourcelink" && test -e ${sourcelink}; then + kernelsrc=`readlink -f ${sourcelink}` + else + kernelsrc="[Not found]" + fi + else + if test "$kernelsrc" = "NONE"; then + kernsrcver=NONE + fi + fi + + AC_MSG_RESULT([$kernelsrc]) + if test ! -d "$kernelsrc"; then + AC_MSG_ERROR([ + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option.]) + fi + + AC_MSG_CHECKING([kernel build directory]) + if test -z "$kernelbuild"; then + if test -e "/lib/modules/$(uname -r)/build"; then + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + elif test -d ${kernelsrc}-obj/${target_cpu}/default; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + else + kernelbuild=${kernelsrc} + fi + fi + AC_MSG_RESULT([$kernelbuild]) + + AC_MSG_CHECKING([kernel source version]) + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then + utsrelease=linux/version.h + elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then + utsrelease=linux/utsrelease.h + elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then + utsrelease=generated/utsrelease.h + fi + + if test "$utsrelease"; then + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + if test -z "$kernsrcver"; then + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([*** Cannot determine kernel version.]) + fi + else + AC_MSG_RESULT([Not found]) + if test "x$enable_linux_builtin" != xyes; then + AC_MSG_ERROR([*** Cannot find UTS_RELEASE definition.]) + else + AC_MSG_ERROR([ + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree.]) + fi + fi + + AC_MSG_RESULT([$kernsrcver]) + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + AC_SUBST(LINUX) + AC_SUBST(LINUX_OBJ) + AC_SUBST(LINUX_VERSION) + + SPL_AC_MODULE_SYMVERS +]) + +dnl # +dnl # Default SPL user configuration +dnl # +AC_DEFUN([SPL_AC_CONFIG_USER], []) + +dnl # +dnl # Check for rpm+rpmbuild to build RPM packages. If these tools +dnl # are missing, it is non-fatal, but you will not be able to build +dnl # RPM packages and will be warned if you try too. +dnl # +dnl # By default, the generic spec file will be used because it requires +dnl # minimal dependencies. Distribution specific spec files can be +dnl # placed under the 'rpm/' directory and enabled using +dnl # the --with-spec= configure option. +dnl # +AC_DEFUN([SPL_AC_RPM], [ + RPM=rpm + RPMBUILD=rpmbuild + + AC_MSG_CHECKING([whether $RPM is available]) + AS_IF([tmp=$($RPM --version 2>/dev/null)], [ + RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') + HAVE_RPM=yes + AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)]) + ],[ + HAVE_RPM=no + AC_MSG_RESULT([$HAVE_RPM]) + ]) + + AC_MSG_CHECKING([whether $RPMBUILD is available]) + AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [ + RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') + HAVE_RPMBUILD=yes + AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)]) + ],[ + HAVE_RPMBUILD=no + AC_MSG_RESULT([$HAVE_RPMBUILD]) + ]) + + RPM_DEFINE_COMMON='--define "$(DEBUG_SPL) 1" --define "$(DEBUG_KMEM) 1" --define "$(DEBUG_KMEM_TRACKING) 1"' + RPM_DEFINE_UTIL= + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' + RPM_DEFINE_DKMS= + + SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' + SRPM_DEFINE_UTIL= + SRPM_DEFINE_KMOD= + SRPM_DEFINE_DKMS= + + RPM_SPEC_DIR="rpm/generic" + AC_ARG_WITH([spec], + AS_HELP_STRING([--with-spec=SPEC], + [Spec files 'generic|redhat']), + [RPM_SPEC_DIR="rpm/$withval"]) + + AC_MSG_CHECKING([whether spec files are available]) + AC_MSG_RESULT([yes ($RPM_SPEC_DIR/*.spec.in)]) + + AC_SUBST(HAVE_RPM) + AC_SUBST(RPM) + AC_SUBST(RPM_VERSION) + + AC_SUBST(HAVE_RPMBUILD) + AC_SUBST(RPMBUILD) + AC_SUBST(RPMBUILD_VERSION) + + AC_SUBST(RPM_SPEC_DIR) + AC_SUBST(RPM_DEFINE_UTIL) + AC_SUBST(RPM_DEFINE_KMOD) + AC_SUBST(RPM_DEFINE_DKMS) + AC_SUBST(RPM_DEFINE_COMMON) + AC_SUBST(SRPM_DEFINE_UTIL) + AC_SUBST(SRPM_DEFINE_KMOD) + AC_SUBST(SRPM_DEFINE_DKMS) + AC_SUBST(SRPM_DEFINE_COMMON) +]) + +dnl # +dnl # Check for dpkg+dpkg-buildpackage to build DEB packages. If these +dnl # tools are missing it is non-fatal but you will not be able to build +dnl # DEB packages and will be warned if you try too. +dnl # +AC_DEFUN([SPL_AC_DPKG], [ + DPKG=dpkg + DPKGBUILD=dpkg-buildpackage + + AC_MSG_CHECKING([whether $DPKG is available]) + AS_IF([tmp=$($DPKG --version 2>/dev/null)], [ + DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }') + HAVE_DPKG=yes + AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)]) + ],[ + HAVE_DPKG=no + AC_MSG_RESULT([$HAVE_DPKG]) + ]) + + AC_MSG_CHECKING([whether $DPKGBUILD is available]) + AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [ + DPKGBUILD_VERSION=$(echo $tmp | \ + $AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.') + HAVE_DPKGBUILD=yes + AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)]) + ],[ + HAVE_DPKGBUILD=no + AC_MSG_RESULT([$HAVE_DPKGBUILD]) + ]) + + AC_SUBST(HAVE_DPKG) + AC_SUBST(DPKG) + AC_SUBST(DPKG_VERSION) + + AC_SUBST(HAVE_DPKGBUILD) + AC_SUBST(DPKGBUILD) + AC_SUBST(DPKGBUILD_VERSION) +]) + +dnl # +dnl # Until native packaging for various different packing systems +dnl # can be added the least we can do is attempt to use alien to +dnl # convert the RPM packages to the needed package type. This is +dnl # a hack but so far it has worked reasonable well. +dnl # +AC_DEFUN([SPL_AC_ALIEN], [ + ALIEN=alien + + AC_MSG_CHECKING([whether $ALIEN is available]) + AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [ + ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }') + HAVE_ALIEN=yes + AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)]) + ],[ + HAVE_ALIEN=no + AC_MSG_RESULT([$HAVE_ALIEN]) + ]) + + AC_SUBST(HAVE_ALIEN) + AC_SUBST(ALIEN) + AC_SUBST(ALIEN_VERSION) +]) + +dnl # +dnl # Using the VENDOR tag from config.guess set the default +dnl # package type for 'make pkg': (rpm | deb | tgz) +dnl # +AC_DEFUN([SPL_AC_DEFAULT_PACKAGE], [ + AC_MSG_CHECKING([linux distribution]) + if test -f /etc/toss-release ; then + VENDOR=toss ; + elif test -f /etc/fedora-release ; then + VENDOR=fedora ; + elif test -f /etc/redhat-release ; then + VENDOR=redhat ; + elif test -f /etc/gentoo-release ; then + VENDOR=gentoo ; + elif test -f /etc/arch-release ; then + VENDOR=arch ; + elif test -f /etc/SuSE-release ; then + VENDOR=sles ; + elif test -f /etc/slackware-version ; then + VENDOR=slackware ; + elif test -f /etc/lunar.release ; then + VENDOR=lunar ; + elif test -f /etc/lsb-release ; then + VENDOR=ubuntu ; + elif test -f /etc/debian_version ; then + VENDOR=debian ; + else + VENDOR= ; + fi + AC_MSG_RESULT([$VENDOR]) + AC_SUBST(VENDOR) + + AC_MSG_CHECKING([default package type]) + case "$VENDOR" in + toss) DEFAULT_PACKAGE=rpm ;; + redhat) DEFAULT_PACKAGE=rpm ;; + fedora) DEFAULT_PACKAGE=rpm ;; + gentoo) DEFAULT_PACKAGE=tgz ;; + arch) DEFAULT_PACKAGE=tgz ;; + sles) DEFAULT_PACKAGE=rpm ;; + slackware) DEFAULT_PACKAGE=tgz ;; + lunar) DEFAULT_PACKAGE=tgz ;; + ubuntu) DEFAULT_PACKAGE=deb ;; + debian) DEFAULT_PACKAGE=deb ;; + *) DEFAULT_PACKAGE=rpm ;; + esac + + AC_MSG_RESULT([$DEFAULT_PACKAGE]) + AC_SUBST(DEFAULT_PACKAGE) +]) + +dnl # +dnl # Default SPL user configuration +dnl # +AC_DEFUN([SPL_AC_PACKAGE], [ + SPL_AC_DEFAULT_PACKAGE + SPL_AC_RPM + SPL_AC_DPKG + SPL_AC_ALIEN +]) + +AC_DEFUN([SPL_AC_LICENSE], [ + AC_MSG_CHECKING([spl author]) + AC_MSG_RESULT([$SPL_META_AUTHOR]) + + AC_MSG_CHECKING([spl license]) + AC_MSG_RESULT([$SPL_META_LICENSE]) +]) + +AC_DEFUN([SPL_AC_CONFIG], [ + SPL_CONFIG=all + AC_ARG_WITH([config], + AS_HELP_STRING([--with-config=CONFIG], + [Config file 'kernel|user|all|srpm']), + [SPL_CONFIG="$withval"]) + AC_ARG_ENABLE([linux-builtin], + [AC_HELP_STRING([--enable-linux-builtin], + [Configure for builtin in-tree kernel modules @<:@default=no@:>@])], + [], + [enable_linux_builtin=no]) + + AC_MSG_CHECKING([spl config]) + AC_MSG_RESULT([$SPL_CONFIG]); + AC_SUBST(SPL_CONFIG) + + case "$SPL_CONFIG" in + kernel) SPL_AC_CONFIG_KERNEL ;; + user) SPL_AC_CONFIG_USER ;; + all) SPL_AC_CONFIG_KERNEL + SPL_AC_CONFIG_USER ;; + srpm) ;; + *) + AC_MSG_RESULT([Error!]) + AC_MSG_ERROR([Bad value "$SPL_CONFIG" for --with-config, + user kernel|user|all|srpm]) ;; + esac + + AM_CONDITIONAL([CONFIG_USER], + [test "$SPL_CONFIG" = user -o "$SPL_CONFIG" = all]) + AM_CONDITIONAL([CONFIG_KERNEL], + [test "$SPL_CONFIG" = kernel -o "$SPL_CONFIG" = all] && + [test "x$enable_linux_builtin" != xyes ]) +]) + +dnl # +dnl # Enable if the SPL should be compiled with internal debugging enabled. +dnl # By default this support is disabled. +dnl # +AC_DEFUN([SPL_AC_DEBUG], [ + AC_MSG_CHECKING([whether debugging is enabled]) + AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [Enable generic debug support @<:@default=no@:>@])], + [], + [enable_debug=no]) + + AS_IF([test "x$enable_debug" = xyes], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" + DEBUG_CFLAGS="-DDEBUG -Werror" + DEBUG_SPL="_with_debug" + ], [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG" + DEBUG_CFLAGS="-DNDEBUG" + DEBUG_SPL="_without_debug" + ]) + + AC_SUBST(DEBUG_CFLAGS) + AC_SUBST(DEBUG_SPL) + AC_MSG_RESULT([$enable_debug]) +]) + +dnl # +dnl # Enabled by default it provides a minimal level of memory tracking. +dnl # A total count of bytes allocated is kept for each alloc and free. +dnl # Then at module unload time a report to the console will be printed +dnl # if memory was leaked. +dnl # +AC_DEFUN([SPL_AC_DEBUG_KMEM], [ + AC_ARG_ENABLE([debug-kmem], + [AS_HELP_STRING([--enable-debug-kmem], + [Enable basic kmem accounting @<:@default=no@:>@])], + [], + [enable_debug_kmem=no]) + + AS_IF([test "x$enable_debug_kmem" = xyes], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM" + DEBUG_KMEM="_with_debug_kmem" + AC_DEFINE([DEBUG_KMEM], [1], + [Define to 1 to enable basic kmem accounting]) + ], [ + DEBUG_KMEM="_without_debug_kmem" + ]) + + AC_SUBST(DEBUG_KMEM) + AC_MSG_CHECKING([whether basic kmem accounting is enabled]) + AC_MSG_RESULT([$enable_debug_kmem]) +]) + +dnl # +dnl # Disabled by default it provides detailed memory tracking. This +dnl # feature also requires --enable-debug-kmem to be set. When enabled +dnl # not only will total bytes be tracked but also the location of every +dnl # alloc and free. When the SPL module is unloaded a list of all leaked +dnl # addresses and where they were allocated will be dumped to the console. +dnl # Enabling this feature has a significant impact on performance but it +dnl # makes finding memory leaks pretty straight forward. +dnl # +AC_DEFUN([SPL_AC_DEBUG_KMEM_TRACKING], [ + AC_ARG_ENABLE([debug-kmem-tracking], + [AS_HELP_STRING([--enable-debug-kmem-tracking], + [Enable detailed kmem tracking @<:@default=no@:>@])], + [], + [enable_debug_kmem_tracking=no]) + + AS_IF([test "x$enable_debug_kmem_tracking" = xyes], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM_TRACKING" + DEBUG_KMEM_TRACKING="_with_debug_kmem_tracking" + AC_DEFINE([DEBUG_KMEM_TRACKING], [1], + [Define to 1 to enable detailed kmem tracking]) + ], [ + DEBUG_KMEM_TRACKING="_without_debug_kmem_tracking" + ]) + + AC_SUBST(DEBUG_KMEM_TRACKING) + AC_MSG_CHECKING([whether detailed kmem tracking is enabled]) + AC_MSG_RESULT([$enable_debug_kmem_tracking]) +]) + +dnl # +dnl # SPL_LINUX_CONFTEST +dnl # +AC_DEFUN([SPL_LINUX_CONFTEST], [ +cat confdefs.h - <<_ACEOF >conftest.c +$1 +_ACEOF +]) + +dnl # +dnl # SPL_LANG_PROGRAM(C)([PROLOGUE], [BODY]) +dnl # +m4_define([SPL_LANG_PROGRAM], [ +$1 +int +main (void) +{ +dnl Do *not* indent the following line: there may be CPP directives. +dnl Don't move the `;' right after for the same reason. +$2 + ; + return 0; +} +]) + +dnl # +dnl # SPL_LINUX_COMPILE_IFELSE / like AC_COMPILE_IFELSE +dnl # +AC_DEFUN([SPL_LINUX_COMPILE_IFELSE], [ + m4_ifvaln([$1], [SPL_LINUX_CONFTEST([$1])]) + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + AS_IF( + [AC_TRY_COMMAND(cp conftest.c build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])], + [$4], + [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])] + ) + rm -Rf build +]) + +dnl # +dnl # SPL_LINUX_TRY_COMPILE like AC_TRY_COMPILE +dnl # +AC_DEFUN([SPL_LINUX_TRY_COMPILE], + [SPL_LINUX_COMPILE_IFELSE( + [AC_LANG_SOURCE([SPL_LANG_PROGRAM([[$1]], [[$2]])])], + [modules], + [test -s build/conftest.o], + [$3], [$4]) +]) + +dnl # +dnl # SPL_CHECK_SYMBOL_EXPORT +dnl # check symbol exported or not +dnl # +AC_DEFUN([SPL_CHECK_SYMBOL_EXPORT], [ + grep -q -E '[[[:space:]]]$1[[[:space:]]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in $2; do + grep -q -E "EXPORT_SYMBOL.*($1)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + $4 + else : + $3 + fi + else : + $3 + fi +]) + +dnl # +dnl # SPL_LINUX_TRY_COMPILE_SYMBOL +dnl # like SPL_LINUX_TRY_COMPILE, except SPL_CHECK_SYMBOL_EXPORT +dnl # is called if not compiling for builtin +dnl # +AC_DEFUN([SPL_LINUX_TRY_COMPILE_SYMBOL], [ + SPL_LINUX_TRY_COMPILE([$1], [$2], [rc=0], [rc=1]) + if test $rc -ne 0; then : + $6 + else + if test "x$enable_linux_builtin" != xyes; then + SPL_CHECK_SYMBOL_EXPORT([$3], [$4], [rc=0], [rc=1]) + fi + if test $rc -ne 0; then : + $6 + else : + $5 + fi + fi +]) + +dnl # +dnl # SPL_CHECK_SYMBOL_HEADER +dnl # check if a symbol prototype is defined in listed headers. +dnl # +AC_DEFUN([SPL_CHECK_SYMBOL_HEADER], [ + AC_MSG_CHECKING([whether symbol $1 exists in header]) + header=0 + for file in $3; do + grep -q "$2" "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + header=1 + break; + fi + done + if test $header -eq 0; then + AC_MSG_RESULT([no]) + $5 + else + AC_MSG_RESULT([yes]) + $4 + fi +]) + +dnl # +dnl # SPL_CHECK_HEADER +dnl # check whether header exists and define HAVE_$2_HEADER +dnl # +AC_DEFUN([SPL_CHECK_HEADER], + [AC_MSG_CHECKING([whether header $1 exists]) + SPL_LINUX_TRY_COMPILE([ + #include <$1> + ],[ + return 0; + ],[ + AC_DEFINE(HAVE_$2_HEADER, 1, [$1 exists]) + AC_MSG_RESULT(yes) + $3 + ],[ + AC_MSG_RESULT(no) + $4 + ]) +]) + +dnl # +dnl # Basic toolchain sanity check. Verify that kernel modules can +dnl # be built and which symbols can be used. +dnl # +AC_DEFUN([SPL_AC_TEST_MODULE], + [AC_MSG_CHECKING([whether modules can be built]) + SPL_LINUX_TRY_COMPILE([],[],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + if test "x$enable_linux_builtin" != xyes; then + AC_MSG_ERROR([*** Unable to build an empty module.]) + else + AC_MSG_ERROR([ + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree.]) + fi + ]) + + AS_IF([test "x$cross_compiling" != xyes], [ + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([ + #include "$LINUX/include/linux/license.h" + ], [ + return !license_is_gpl_compatible( + "$SPL_META_LICENSE"); + ]) + ], [ + AC_DEFINE([SPL_IS_GPL_COMPATIBLE], [1], + [Define to 1 if GPL-only symbols can be used]) + ], [ + ]) + ]) +]) + +dnl # +dnl # Use the atomic implemenation based on global spinlocks. This +dnl # should only be needed by 32-bit kernels which do not provide +dnl # the atomic64_* API. It may be optionally enabled as a fallback +dnl # if problems are observed with the direct mapping to the native +dnl # Linux atomic operations. You may not disable atomic spinlocks +dnl # if you kernel does not an atomic64_* API. +dnl # +AC_DEFUN([SPL_AC_ATOMIC_SPINLOCK], [ + AC_ARG_ENABLE([atomic-spinlocks], + [AS_HELP_STRING([--enable-atomic-spinlocks], + [Atomic types use spinlocks @<:@default=check@:>@])], + [], + [enable_atomic_spinlocks=check]) + + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + atomic64_t *ptr __attribute__ ((unused)); + ],[ + have_atomic64_t=yes + AC_DEFINE(HAVE_ATOMIC64_T, 1, + [kernel defines atomic64_t]) + ],[ + have_atomic64_t=no + ]) + + AS_IF([test "x$enable_atomic_spinlocks" = xcheck], [ + AS_IF([test "x$have_atomic64_t" = xyes], [ + enable_atomic_spinlocks=no + ],[ + enable_atomic_spinlocks=yes + ]) + ]) + + AS_IF([test "x$enable_atomic_spinlocks" = xyes], [ + AC_DEFINE([ATOMIC_SPINLOCK], [1], + [Atomic types use spinlocks]) + ],[ + AS_IF([test "x$have_atomic64_t" = xno], [ + AC_MSG_FAILURE( + [--disable-atomic-spinlocks given but required atomic64 support is unavailable]) + ]) + ]) + + AC_MSG_CHECKING([whether atomic types use spinlocks]) + AC_MSG_RESULT([$enable_atomic_spinlocks]) + + AC_MSG_CHECKING([whether kernel defines atomic64_t]) + AC_MSG_RESULT([$have_atomic64_t]) +]) + +AC_DEFUN([SPL_AC_SHRINKER_CALLBACK],[ + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + dnl # + dnl # 2.6.23 to 2.6.34 API change + dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask) + dnl # + AC_MSG_CHECKING([whether old 2-argument shrinker exists]) + SPL_LINUX_TRY_COMPILE([ + #include + + int shrinker_cb(int nr_to_scan, gfp_t gfp_mask); + ],[ + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1, + [old shrinker callback wants 2 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # 2.6.35 - 2.6.39 API change + dnl # ->shrink(struct shrinker *, + dnl # int nr_to_scan, gfp_t gfp_mask) + dnl # + AC_MSG_CHECKING([whether old 3-argument shrinker exists]) + SPL_LINUX_TRY_COMPILE([ + #include + + int shrinker_cb(struct shrinker *, int nr_to_scan, + gfp_t gfp_mask); + ],[ + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1, + [old shrinker callback wants 3 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # 3.0 - 3.11 API change + dnl # ->shrink(struct shrinker *, + dnl # struct shrink_control *sc) + dnl # + AC_MSG_CHECKING( + [whether new 2-argument shrinker exists]) + SPL_LINUX_TRY_COMPILE([ + #include + + int shrinker_cb(struct shrinker *, + struct shrink_control *sc); + ],[ + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1, + [new shrinker callback wants 2 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # 3.12 API change, + dnl # ->shrink() is logically split in to + dnl # ->count_objects() and ->scan_objects() + dnl # + AC_MSG_CHECKING( + [whether ->count_objects callback exists]) + SPL_LINUX_TRY_COMPILE([ + #include + + unsigned long shrinker_cb( + struct shrinker *, + struct shrink_control *sc); + ],[ + struct shrinker cache_shrinker = { + .count_objects = shrinker_cb, + .scan_objects = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK, + 1, [->count_objects exists]) + ],[ + AC_MSG_ERROR(error) + ]) + ]) + ]) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) + +dnl # +dnl # 2.6.33 API change, +dnl # Removed .ctl_name from struct ctl_table. +dnl # +AC_DEFUN([SPL_AC_CTL_NAME], [ + AC_MSG_CHECKING([whether struct ctl_table has ctl_name]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct ctl_table ctl __attribute__ ((unused)); + ctl.ctl_name = 0; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CTL_NAME, 1, [struct ctl_table has ctl_name]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.10 API change, +dnl # PDE is replaced by PDE_DATA +dnl # +AC_DEFUN([SPL_AC_PDE_DATA], [ + AC_MSG_CHECKING([whether PDE_DATA() is available]) + SPL_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + PDE_DATA(NULL); + ], [PDE_DATA], [], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PDE_DATA, 1, [yes]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.9 API change +dnl # set_fs_pwd takes const struct path * +dnl # +AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST], + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + [AC_MSG_CHECKING([whether set_fs_pwd() requires const struct path *]) + SPL_LINUX_TRY_COMPILE([ + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, const struct path *) + = set_fs_pwd; + ],[ + return 0; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SET_FS_PWD_WITH_CONST, 1, + [set_fs_pwd() needs const path *]) + ],[ + SPL_LINUX_TRY_COMPILE([ + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, struct path *) + = set_fs_pwd; + ],[ + return 0; + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_ERROR(unknown) + ]) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) + +dnl # +dnl # 3.13 API change +dnl # vfs_unlink() updated to take a third delegated_inode argument. +dnl # +AC_DEFUN([SPL_AC_2ARGS_VFS_UNLINK], + [AC_MSG_CHECKING([whether vfs_unlink() wants 2 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_unlink((struct inode *) NULL, (struct dentry *) NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_VFS_UNLINK, 1, + [vfs_unlink() wants 2 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # Linux 3.13 API change + dnl # Added delegated inode + dnl # + AC_MSG_CHECKING([whether vfs_unlink() wants 3 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_unlink((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_3ARGS_VFS_UNLINK, 1, + [vfs_unlink() wants 3 args]) + ],[ + AC_MSG_ERROR(no) + ]) + + ]) +]) + +dnl # +dnl # 3.13 and 3.15 API changes +dnl # Added delegated inode and flags argument. +dnl # +AC_DEFUN([SPL_AC_4ARGS_VFS_RENAME], + [AC_MSG_CHECKING([whether vfs_rename() wants 4 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_rename((struct inode *) NULL, (struct dentry *) NULL, + (struct inode *) NULL, (struct dentry *) NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_4ARGS_VFS_RENAME, 1, + [vfs_rename() wants 4 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # Linux 3.13 API change + dnl # Added delegated inode + dnl # + AC_MSG_CHECKING([whether vfs_rename() wants 5 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_5ARGS_VFS_RENAME, 1, + [vfs_rename() wants 5 args]) + ],[ + AC_MSG_RESULT(no) + dnl # + dnl # Linux 3.15 API change + dnl # Added flags + dnl # + AC_MSG_CHECKING([whether vfs_rename() wants 6 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL, + (unsigned int) 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_6ARGS_VFS_RENAME, 1, + [vfs_rename() wants 6 args]) + ],[ + AC_MSG_ERROR(no) + ]) + ]) + ]) +]) + +dnl # +dnl # 2.6.36 API change, +dnl # The 'struct fs_struct->lock' was changed from a rwlock_t to +dnl # a spinlock_t to improve the fastpath performance. +dnl # +AC_DEFUN([SPL_AC_FS_STRUCT_SPINLOCK], [ + AC_MSG_CHECKING([whether struct fs_struct uses spinlock_t]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + SPL_LINUX_TRY_COMPILE([ + #include + #include + ],[ + static struct fs_struct fs; + spin_lock_init(&fs.lock); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FS_STRUCT_SPINLOCK, 1, + [struct fs_struct uses spinlock_t]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) + +dnl # +dnl # User namespaces, use kuid_t in place of uid_t +dnl # where available. Not strictly a user namespaces thing +dnl # but it should prevent surprises +dnl # +AC_DEFUN([SPL_AC_KUIDGID_T], [ + AC_MSG_CHECKING([whether kuid_t/kgid_t is available]) + SPL_LINUX_TRY_COMPILE([ + #include + ], [ + kuid_t userid = KUIDT_INIT(0); + kgid_t groupid = KGIDT_INIT(0); + ],[ + SPL_LINUX_TRY_COMPILE([ + #include + ], [ + kuid_t userid = 0; + kgid_t groupid = 0; + ],[ + AC_MSG_RESULT(yes; optional) + ],[ + AC_MSG_RESULT(yes; mandatory) + AC_DEFINE(HAVE_KUIDGID_T, 1, [kuid_t/kgid_t in use]) + ]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.39 API change, +dnl # __put_task_struct() was exported by the mainline kernel. +dnl # +AC_DEFUN([SPL_AC_PUT_TASK_STRUCT], + [AC_MSG_CHECKING([whether __put_task_struct() is available]) + SPL_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + __put_task_struct(NULL); + ], [__put_task_struct], [], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PUT_TASK_STRUCT, 1, + [__put_task_struct() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.35 API change, +dnl # Unused 'struct dentry *' removed from vfs_fsync() prototype. +dnl # +AC_DEFUN([SPL_AC_2ARGS_VFS_FSYNC], [ + AC_MSG_CHECKING([whether vfs_fsync() wants 2 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_fsync(NULL, 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_VFS_FSYNC, 1, [vfs_fsync() wants 2 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.5 API change, +dnl # inode_operations.truncate_range removed +dnl # +AC_DEFUN([SPL_AC_INODE_TRUNCATE_RANGE], [ + AC_MSG_CHECKING([whether truncate_range() inode operation is available]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode_operations ops; + ops.truncate_range = NULL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_TRUNCATE_RANGE, 1, + [truncate_range() inode operation is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # Linux 2.6.38 - 3.x API +dnl # +AC_DEFUN([SPL_AC_KERNEL_FILE_FALLOCATE], [ + AC_MSG_CHECKING([whether fops->fallocate() exists]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # Linux 2.6.x - 2.6.37 API +dnl # +AC_DEFUN([SPL_AC_KERNEL_INODE_FALLOCATE], [ + AC_MSG_CHECKING([whether iops->fallocate() exists]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL; + struct inode_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # PaX Linux 2.6.38 - 3.x API +dnl # +AC_DEFUN([SPL_AC_PAX_KERNEL_FILE_FALLOCATE], [ + AC_MSG_CHECKING([whether fops->fallocate() exists]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations_no_const fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # The fallocate callback was moved from the inode_operations +dnl # structure to the file_operations structure. +dnl # +AC_DEFUN([SPL_AC_KERNEL_FALLOCATE], [ + SPL_AC_KERNEL_FILE_FALLOCATE + SPL_AC_KERNEL_INODE_FALLOCATE + SPL_AC_PAX_KERNEL_FILE_FALLOCATE +]) + +dnl # +dnl # zlib inflate compat, +dnl # Verify the kernel has CONFIG_ZLIB_INFLATE support enabled. +dnl # +AC_DEFUN([SPL_AC_CONFIG_ZLIB_INFLATE], [ + AC_MSG_CHECKING([whether CONFIG_ZLIB_INFLATE is defined]) + SPL_LINUX_TRY_COMPILE([ + #if !defined(CONFIG_ZLIB_INFLATE) && \ + !defined(CONFIG_ZLIB_INFLATE_MODULE) + #error CONFIG_ZLIB_INFLATE not defined + #endif + ],[ ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + *** This kernel does not include the required zlib inflate support. + *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set.]) + ]) +]) + +dnl # +dnl # zlib deflate compat, +dnl # Verify the kernel has CONFIG_ZLIB_DEFLATE support enabled. +dnl # +AC_DEFUN([SPL_AC_CONFIG_ZLIB_DEFLATE], [ + AC_MSG_CHECKING([whether CONFIG_ZLIB_DEFLATE is defined]) + SPL_LINUX_TRY_COMPILE([ + #if !defined(CONFIG_ZLIB_DEFLATE) && \ + !defined(CONFIG_ZLIB_DEFLATE_MODULE) + #error CONFIG_ZLIB_DEFLATE not defined + #endif + ],[ ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + *** This kernel does not include the required zlib deflate support. + *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set.]) + ]) +]) + +dnl # +dnl # 2.6.39 API compat, +dnl # The function zlib_deflate_workspacesize() now take 2 arguments. +dnl # This was done to avoid always having to allocate the maximum size +dnl # workspace (268K). The caller can now specific the windowBits and +dnl # memLevel compression parameters to get a smaller workspace. +dnl # +AC_DEFUN([SPL_AC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE], + [AC_MSG_CHECKING([whether zlib_deflate_workspacesize() wants 2 args]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE, 1, + [zlib_deflate_workspacesize() wants 2 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.39 API change, +dnl # Shrinker adjust to use common shrink_control structure. +dnl # +AC_DEFUN([SPL_AC_SHRINK_CONTROL_STRUCT], [ + AC_MSG_CHECKING([whether struct shrink_control exists]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct shrink_control sc __attribute__ ((unused)); + + sc.nr_to_scan = 0; + sc.gfp_mask = GFP_KERNEL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1, + [struct shrink_control exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.1 API Change +dnl # +dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to +dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1. +dnl # +AC_DEFUN([SPL_AC_RWSEM_SPINLOCK_IS_RAW], [ + AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct rw_semaphore dummy_semaphore __attribute__ ((unused)); + raw_spinlock_t dummy_lock __attribute__ ((unused)); + dummy_semaphore.wait_lock = dummy_lock; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(RWSEM_SPINLOCK_IS_RAW, 1, + [struct rw_semaphore member wait_lock is raw_spinlock_t]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) + +dnl # +dnl # 3.9 API change, +dnl # Moved things from linux/sched.h to linux/sched/rt.h +dnl # +AC_DEFUN([SPL_AC_SCHED_RT_HEADER], + [AC_MSG_CHECKING([whether header linux/sched/rt.h exists]) + SPL_LINUX_TRY_COMPILE([ + #include + #include + ],[ + return 0; + ],[ + AC_DEFINE(HAVE_SCHED_RT_HEADER, 1, [linux/sched/rt.h exists]) + AC_MSG_RESULT(yes) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.9 API change, +dnl # vfs_getattr() uses 2 args +dnl # It takes struct path * instead of struct vfsmount * and struct dentry * +dnl # +AC_DEFUN([SPL_AC_2ARGS_VFS_GETATTR], [ + AC_MSG_CHECKING([whether vfs_getattr() wants]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_getattr((struct path *) NULL, + (struct kstat *)NULL); + ],[ + AC_MSG_RESULT(2 args) + AC_DEFINE(HAVE_2ARGS_VFS_GETATTR, 1, + [vfs_getattr wants 2 args]) + ],[ + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + vfs_getattr((struct vfsmount *)NULL, + (struct dentry *)NULL, + (struct kstat *)NULL); + ],[ + AC_MSG_RESULT(3 args) + ],[ + AC_MSG_ERROR(unknown) + ]) + ]) +]) + +dnl # +dnl # 2.6.36 API compatibility. +dnl # Added usleep_range timer. +dnl # usleep_range is a finer precision implementation of msleep +dnl # designed to be a drop-in replacement for udelay where a precise +dnl # sleep / busy-wait is unnecessary. +dnl # +AC_DEFUN([SPL_AC_USLEEP_RANGE], [ + AC_MSG_CHECKING([whether usleep_range() is available]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + usleep_range(0, 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_USLEEP_RANGE, 1, + [usleep_range is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.35 API change, +dnl # The cachep->gfpflags member was renamed cachep->allocflags. These are +dnl # private allocation flags which are applied when allocating a new slab +dnl # in kmem_getpages(). Unfortunately there is no public API for setting +dnl # non-default flags. +dnl # +AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [ + AC_MSG_CHECKING([whether struct kmem_cache has allocflags]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct kmem_cache cachep __attribute__ ((unused)); + cachep.allocflags = GFP_KERNEL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_KMEM_CACHE_ALLOCFLAGS, 1, + [struct kmem_cache has allocflags]) + ],[ + AC_MSG_RESULT(no) + + AC_MSG_CHECKING([whether struct kmem_cache has gfpflags]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + struct kmem_cache cachep __attribute__ ((unused)); + cachep.gfpflags = GFP_KERNEL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_KMEM_CACHE_GFPFLAGS, 1, + [struct kmem_cache has gfpflags]) + ],[ + AC_MSG_RESULT(no) + ]) + ]) +]) + +dnl # +dnl # 3.17 API change, +dnl # wait_on_bit() no longer requires an action argument. The former +dnl # "wait_on_bit" interface required an 'action' function to be provided +dnl # which does the actual waiting. There were over 20 such functions in the +dnl # kernel, many of them identical, though most cases can be satisfied by one +dnl # of just two functions: one which uses io_schedule() and one which just +dnl # uses schedule(). This API change was made to consolidate all of those +dnl # redundant wait functions. +dnl # +AC_DEFUN([SPL_AC_WAIT_ON_BIT], [ + AC_MSG_CHECKING([whether wait_on_bit() takes an action]) + SPL_LINUX_TRY_COMPILE([ + #include + ],[ + int (*action)(void *) = NULL; + wait_on_bit(NULL, 0, action, 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_WAIT_ON_BIT_ACTION, 1, [yes]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/spl/config/spl-meta.m4 +++ linux-4.4.0/spl/config/spl-meta.m4 @@ -0,0 +1,162 @@ +dnl # +dnl # DESCRIPTION: +dnl # Read meta data from the META file. When building from a git repository +dnl # the SPL_META_RELEASE field will be overwritten if there is an annotated +dnl # tag matching the form SPL_META_NAME-SPL_META_VERSION-*. This allows +dnl # for working builds to be uniquely identified using the git commit hash. +dnl # +dnl # The META file format is as follows: +dnl # ^[ ]*KEY:[ \t]+VALUE$ +dnl # +dnl # In other words: +dnl # - KEY is separated from VALUE by a colon and one or more spaces/tabs. +dnl # - KEY and VALUE are case sensitive. +dnl # - Leading spaces are ignored. +dnl # - First match wins for duplicate keys. +dnl # +dnl # A line can be commented out by preceding it with a '#' (or technically +dnl # any non-space character since that will prevent the regex from +dnl # matching). +dnl # +dnl # WARNING: +dnl # Placing a colon followed by a space or tab (ie, ":[ \t]+") within the +dnl # VALUE will prematurely terminate the string since that sequence is +dnl # used as the awk field separator. +dnl # +dnl # KEYS: +dnl # The following META keys are recognized: +dnl # Name, Version, Release, Date, Author, LT_Current, LT_Revision, LT_Age +dnl # +dnl # Written by Chris Dunlap . +dnl # Modified by Brian Behlendorf . +dnl # +AC_DEFUN([SPL_AC_META], [ + AC_PROG_AWK + AC_MSG_CHECKING([metadata]) + + META="$srcdir/META" + _spl_ac_meta_type="none" + if test -f "$META"; then + _spl_ac_meta_type="META file" + + SPL_META_NAME=_SPL_AC_META_GETVAL([(Name|Project|Package)]); + if test -n "$SPL_META_NAME"; then + AC_DEFINE_UNQUOTED([SPL_META_NAME], ["$SPL_META_NAME"], + [Define the project name.] + ) + AC_SUBST([SPL_META_NAME]) + fi + + SPL_META_VERSION=_SPL_AC_META_GETVAL([Version]); + if test -n "$SPL_META_VERSION"; then + AC_DEFINE_UNQUOTED([SPL_META_VERSION], ["$SPL_META_VERSION"], + [Define the project version.] + ) + AC_SUBST([SPL_META_VERSION]) + fi + + SPL_META_RELEASE=_SPL_AC_META_GETVAL([Release]); + if test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then + _match="${SPL_META_NAME}-${SPL_META_VERSION}" + _alias=$(git describe --match=${_match} 2>/dev/null) + _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') + if test -n "${_release}"; then + SPL_META_RELEASE=${_release} + _spl_ac_meta_type="git describe" + fi + fi + + if test -n "$SPL_META_RELEASE"; then + AC_DEFINE_UNQUOTED([SPL_META_RELEASE], ["$SPL_META_RELEASE"], + [Define the project release.] + ) + AC_SUBST([SPL_META_RELEASE]) + + RELEASE="$SPL_META_RELEASE" + AC_SUBST([RELEASE]) + fi + + SPL_META_LICENSE=_SPL_AC_META_GETVAL([License]); + if test -n "$SPL_META_LICENSE"; then + AC_DEFINE_UNQUOTED([SPL_META_LICENSE], ["$SPL_META_LICENSE"], + [Define the project license.] + ) + AC_SUBST([SPL_META_LICENSE]) + fi + + if test -n "$SPL_META_NAME" -a -n "$SPL_META_VERSION"; then + SPL_META_ALIAS="$SPL_META_NAME-$SPL_META_VERSION" + test -n "$SPL_META_RELEASE" && + SPL_META_ALIAS="$SPL_META_ALIAS-$SPL_META_RELEASE" + AC_DEFINE_UNQUOTED([SPL_META_ALIAS], + ["$SPL_META_ALIAS"], + [Define the project alias string.] + ) + AC_SUBST([SPL_META_ALIAS]) + fi + + SPL_META_DATA=_SPL_AC_META_GETVAL([Date]); + if test -n "$SPL_META_DATA"; then + AC_DEFINE_UNQUOTED([SPL_META_DATA], ["$SPL_META_DATA"], + [Define the project release date.] + ) + AC_SUBST([SPL_META_DATA]) + fi + + SPL_META_AUTHOR=_SPL_AC_META_GETVAL([Author]); + if test -n "$SPL_META_AUTHOR"; then + AC_DEFINE_UNQUOTED([SPL_META_AUTHOR], ["$SPL_META_AUTHOR"], + [Define the project author.] + ) + AC_SUBST([SPL_META_AUTHOR]) + fi + + m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$]) + SPL_META_LT_CURRENT=_SPL_AC_META_GETVAL([LT_Current]); + SPL_META_LT_REVISION=_SPL_AC_META_GETVAL([LT_Revision]); + SPL_META_LT_AGE=_SPL_AC_META_GETVAL([LT_Age]); + if test -n "$SPL_META_LT_CURRENT" \ + -o -n "$SPL_META_LT_REVISION" \ + -o -n "$SPL_META_LT_AGE"; then + test -n "$SPL_META_LT_CURRENT" || SPL_META_LT_CURRENT="0" + test -n "$SPL_META_LT_REVISION" || SPL_META_LT_REVISION="0" + test -n "$SPL_META_LT_AGE" || SPL_META_LT_AGE="0" + AC_DEFINE_UNQUOTED([SPL_META_LT_CURRENT], + ["$SPL_META_LT_CURRENT"], + [Define the libtool library 'current' + version information.] + ) + AC_DEFINE_UNQUOTED([SPL_META_LT_REVISION], + ["$SPL_META_LT_REVISION"], + [Define the libtool library 'revision' + version information.] + ) + AC_DEFINE_UNQUOTED([SPL_META_LT_AGE], ["$SPL_META_LT_AGE"], + [Define the libtool library 'age' + version information.] + ) + AC_SUBST([SPL_META_LT_CURRENT]) + AC_SUBST([SPL_META_LT_REVISION]) + AC_SUBST([SPL_META_LT_AGE]) + fi + fi + + AC_MSG_RESULT([$_spl_ac_meta_type]) + ] +) + +dnl # _SPL_AC_META_GETVAL (KEY_NAME_OR_REGEX) +dnl # +dnl # Returns the META VALUE associated with the given KEY_NAME_OR_REGEX expr. +dnl # +dnl # Despite their resemblance to line noise, +dnl # the "@<:@" and "@:>@" constructs are quadrigraphs for "[" and "]". +dnl # +dnl # +dnl # The "$[]1" and "$[]2" constructs prevent M4 parameter expansion +dnl # so a literal $1 and $2 will be passed to the resulting awk script, +dnl # whereas the "$1" will undergo M4 parameter expansion for the META key. +dnl # +AC_DEFUN([_SPL_AC_META_GETVAL], + [`$AWK -F ':@<:@ \t@:>@+' '$[]1 ~ /^ *$1$/ { print $[]2; exit }' $META`]dnl +) --- linux-4.4.0.orig/spl/config/tgz.am +++ linux-4.4.0/spl/config/tgz.am @@ -0,0 +1,44 @@ +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for TGZ packages. +# +# Long term native distro specific Slackware style packaging should be added. +# In the short term RPM packages are built and converted to TGZ packages +# using alien. If someone familiar with Slackware style packaging were to +# update the build system to correctly build Slackware style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + +tgz-local: + @(if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +tgz-kmod: tgz-local rpm-kmod +if CONFIG_KERNEL + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ + $(RM) $$pkg1 +endif + +tgz-utils: tgz-local rpm-utils +if CONFIG_USER + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ + $(RM) $$pkg1 +endif + +tgz: tgz-kmod tgz-utils --- linux-4.4.0.orig/spl/configure +++ linux-4.4.0/spl/configure @@ -0,0 +1,19478 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for spl 0.6.5.4. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='spl' +PACKAGE_TARNAME='spl' +PACKAGE_VERSION='0.6.5.4' +PACKAGE_STRING='spl 0.6.5.4' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +CONFIG_KERNEL_FALSE +CONFIG_KERNEL_TRUE +CONFIG_USER_FALSE +CONFIG_USER_TRUE +DEBUG_KMEM_TRACKING +DEBUG_KMEM +DEBUG_SPL +DEBUG_CFLAGS +KERNELCPPFLAGS +KERNELMAKE_PARAMS +LINUX_SYMBOLS +LINUX_VERSION +LINUX_OBJ +LINUX +SPL_CONFIG +ALIEN_VERSION +ALIEN +HAVE_ALIEN +DPKGBUILD_VERSION +DPKGBUILD +HAVE_DPKGBUILD +DPKG_VERSION +DPKG +HAVE_DPKG +SRPM_DEFINE_COMMON +SRPM_DEFINE_DKMS +SRPM_DEFINE_KMOD +SRPM_DEFINE_UTIL +RPM_DEFINE_COMMON +RPM_DEFINE_DKMS +RPM_DEFINE_KMOD +RPM_DEFINE_UTIL +RPM_SPEC_DIR +RPMBUILD_VERSION +RPMBUILD +HAVE_RPMBUILD +RPM_VERSION +RPM +HAVE_RPM +DEFAULT_PACKAGE +VENDOR +CPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +SPL_META_LT_AGE +SPL_META_LT_REVISION +SPL_META_LT_CURRENT +SPL_META_AUTHOR +SPL_META_DATA +SPL_META_ALIAS +SPL_META_LICENSE +RELEASE +SPL_META_RELEASE +SPL_META_VERSION +SPL_META_NAME +AWK +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +with_spec +with_config +enable_linux_builtin +with_linux +with_linux_obj +enable_debug +enable_debug_kmem +enable_debug_kmem_tracking +enable_atomic_spinlocks +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures spl 0.6.5.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/spl] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of spl 0.6.5.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-linux-builtin Configure for builtin in-tree kernel modules + [default=no] + --enable-debug Enable generic debug support [default=no] + --enable-debug-kmem Enable basic kmem accounting [default=no] + --enable-debug-kmem-tracking + Enable detailed kmem tracking [default=no] + --enable-atomic-spinlocks + Atomic types use spinlocks [default=check] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-spec=SPEC Spec files 'generic|redhat' + --with-config=CONFIG Config file 'kernel|user|all|srpm' + --with-linux=PATH Path to kernel source + --with-linux-obj=PATH Path to kernel build objects + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +spl configure 0.6.5.4 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by spl $as_me 0.6.5.4, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking metadata" >&5 +$as_echo_n "checking metadata... " >&6; } + + META="$srcdir/META" + _spl_ac_meta_type="none" + if test -f "$META"; then + _spl_ac_meta_type="META file" + + SPL_META_NAME=`$AWK -F ':[ \t]+' '$1 ~ /^ *(Name|Project|Package)$/ { print $2; exit }' $META`; + if test -n "$SPL_META_NAME"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_NAME "$SPL_META_NAME" +_ACEOF + + + fi + + SPL_META_VERSION=`$AWK -F ':[ \t]+' '$1 ~ /^ *Version$/ { print $2; exit }' $META`; + if test -n "$SPL_META_VERSION"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_VERSION "$SPL_META_VERSION" +_ACEOF + + + fi + + SPL_META_RELEASE=`$AWK -F ':[ \t]+' '$1 ~ /^ *Release$/ { print $2; exit }' $META`; + if test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then + _match="${SPL_META_NAME}-${SPL_META_VERSION}" + _alias=$(git describe --match=${_match} 2>/dev/null) + _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') + if test -n "${_release}"; then + SPL_META_RELEASE=${_release} + _spl_ac_meta_type="git describe" + fi + fi + + if test -n "$SPL_META_RELEASE"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_RELEASE "$SPL_META_RELEASE" +_ACEOF + + + + RELEASE="$SPL_META_RELEASE" + + fi + + SPL_META_LICENSE=`$AWK -F ':[ \t]+' '$1 ~ /^ *License$/ { print $2; exit }' $META`; + if test -n "$SPL_META_LICENSE"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_LICENSE "$SPL_META_LICENSE" +_ACEOF + + + fi + + if test -n "$SPL_META_NAME" -a -n "$SPL_META_VERSION"; then + SPL_META_ALIAS="$SPL_META_NAME-$SPL_META_VERSION" + test -n "$SPL_META_RELEASE" && + SPL_META_ALIAS="$SPL_META_ALIAS-$SPL_META_RELEASE" + +cat >>confdefs.h <<_ACEOF +#define SPL_META_ALIAS "$SPL_META_ALIAS" +_ACEOF + + + fi + + SPL_META_DATA=`$AWK -F ':[ \t]+' '$1 ~ /^ *Date$/ { print $2; exit }' $META`; + if test -n "$SPL_META_DATA"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_DATA "$SPL_META_DATA" +_ACEOF + + + fi + + SPL_META_AUTHOR=`$AWK -F ':[ \t]+' '$1 ~ /^ *Author$/ { print $2; exit }' $META`; + if test -n "$SPL_META_AUTHOR"; then + +cat >>confdefs.h <<_ACEOF +#define SPL_META_AUTHOR "$SPL_META_AUTHOR" +_ACEOF + + + fi + + + SPL_META_LT_CURRENT=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Current$/ { print $2; exit }' $META`; + SPL_META_LT_REVISION=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Revision$/ { print $2; exit }' $META`; + SPL_META_LT_AGE=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Age$/ { print $2; exit }' $META`; + if test -n "$SPL_META_LT_CURRENT" \ + -o -n "$SPL_META_LT_REVISION" \ + -o -n "$SPL_META_LT_AGE"; then + test -n "$SPL_META_LT_CURRENT" || SPL_META_LT_CURRENT="0" + test -n "$SPL_META_LT_REVISION" || SPL_META_LT_REVISION="0" + test -n "$SPL_META_LT_AGE" || SPL_META_LT_AGE="0" + +cat >>confdefs.h <<_ACEOF +#define SPL_META_LT_CURRENT "$SPL_META_LT_CURRENT" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SPL_META_LT_REVISION "$SPL_META_LT_REVISION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SPL_META_LT_AGE "$SPL_META_LT_AGE" +_ACEOF + + + + + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_spl_ac_meta_type" >&5 +$as_echo "$_spl_ac_meta_type" >&6; } + + +ac_aux_dir= +for ac_dir in config "$srcdir"/config; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +am__api_version='1.15' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='spl' + VERSION='0.6.5.4' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +ac_config_headers="$ac_config_headers spl_config.h" + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl author" >&5 +$as_echo_n "checking spl author... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPL_META_AUTHOR" >&5 +$as_echo "$SPL_META_AUTHOR" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl license" >&5 +$as_echo_n "checking spl license... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPL_META_LICENSE" >&5 +$as_echo "$SPL_META_LICENSE" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking linux distribution" >&5 +$as_echo_n "checking linux distribution... " >&6; } + if test -f /etc/toss-release ; then + VENDOR=toss ; + elif test -f /etc/fedora-release ; then + VENDOR=fedora ; + elif test -f /etc/redhat-release ; then + VENDOR=redhat ; + elif test -f /etc/gentoo-release ; then + VENDOR=gentoo ; + elif test -f /etc/arch-release ; then + VENDOR=arch ; + elif test -f /etc/SuSE-release ; then + VENDOR=sles ; + elif test -f /etc/slackware-version ; then + VENDOR=slackware ; + elif test -f /etc/lunar.release ; then + VENDOR=lunar ; + elif test -f /etc/lsb-release ; then + VENDOR=ubuntu ; + elif test -f /etc/debian_version ; then + VENDOR=debian ; + else + VENDOR= ; + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VENDOR" >&5 +$as_echo "$VENDOR" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default package type" >&5 +$as_echo_n "checking default package type... " >&6; } + case "$VENDOR" in + toss) DEFAULT_PACKAGE=rpm ;; + redhat) DEFAULT_PACKAGE=rpm ;; + fedora) DEFAULT_PACKAGE=rpm ;; + gentoo) DEFAULT_PACKAGE=tgz ;; + arch) DEFAULT_PACKAGE=tgz ;; + sles) DEFAULT_PACKAGE=rpm ;; + slackware) DEFAULT_PACKAGE=tgz ;; + lunar) DEFAULT_PACKAGE=tgz ;; + ubuntu) DEFAULT_PACKAGE=deb ;; + debian) DEFAULT_PACKAGE=deb ;; + *) DEFAULT_PACKAGE=rpm ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_PACKAGE" >&5 +$as_echo "$DEFAULT_PACKAGE" >&6; } + + + + RPM=rpm + RPMBUILD=rpmbuild + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $RPM is available" >&5 +$as_echo_n "checking whether $RPM is available... " >&6; } + if tmp=$($RPM --version 2>/dev/null); then : + + RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') + HAVE_RPM=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPM ($RPM_VERSION)" >&5 +$as_echo "$HAVE_RPM ($RPM_VERSION)" >&6; } + +else + + HAVE_RPM=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPM" >&5 +$as_echo "$HAVE_RPM" >&6; } + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $RPMBUILD is available" >&5 +$as_echo_n "checking whether $RPMBUILD is available... " >&6; } + if tmp=$($RPMBUILD --version 2>/dev/null); then : + + RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') + HAVE_RPMBUILD=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&5 +$as_echo "$HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&6; } + +else + + HAVE_RPMBUILD=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPMBUILD" >&5 +$as_echo "$HAVE_RPMBUILD" >&6; } + +fi + + RPM_DEFINE_COMMON='--define "$(DEBUG_SPL) 1" --define "$(DEBUG_KMEM) 1" --define "$(DEBUG_KMEM_TRACKING) 1"' + RPM_DEFINE_UTIL= + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' + RPM_DEFINE_DKMS= + + SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' + SRPM_DEFINE_UTIL= + SRPM_DEFINE_KMOD= + SRPM_DEFINE_DKMS= + + RPM_SPEC_DIR="rpm/generic" + +# Check whether --with-spec was given. +if test "${with_spec+set}" = set; then : + withval=$with_spec; RPM_SPEC_DIR="rpm/$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether spec files are available" >&5 +$as_echo_n "checking whether spec files are available... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($RPM_SPEC_DIR/*.spec.in)" >&5 +$as_echo "yes ($RPM_SPEC_DIR/*.spec.in)" >&6; } + + + + + + + + + + + + + + + + + + + + + DPKG=dpkg + DPKGBUILD=dpkg-buildpackage + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $DPKG is available" >&5 +$as_echo_n "checking whether $DPKG is available... " >&6; } + if tmp=$($DPKG --version 2>/dev/null); then : + + DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $7 }') + HAVE_DPKG=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKG ($DPKG_VERSION)" >&5 +$as_echo "$HAVE_DPKG ($DPKG_VERSION)" >&6; } + +else + + HAVE_DPKG=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKG" >&5 +$as_echo "$HAVE_DPKG" >&6; } + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $DPKGBUILD is available" >&5 +$as_echo_n "checking whether $DPKGBUILD is available... " >&6; } + if tmp=$($DPKGBUILD --version 2>/dev/null); then : + + DPKGBUILD_VERSION=$(echo $tmp | \ + $AWK '/Debian/ { print $4 }' | cut -f-4 -d'.') + HAVE_DPKGBUILD=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&5 +$as_echo "$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&6; } + +else + + HAVE_DPKGBUILD=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKGBUILD" >&5 +$as_echo "$HAVE_DPKGBUILD" >&6; } + +fi + + + + + + + + + + + ALIEN=alien + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ALIEN is available" >&5 +$as_echo_n "checking whether $ALIEN is available... " >&6; } + if tmp=$($ALIEN --version 2>/dev/null); then : + + ALIEN_VERSION=$(echo $tmp | $AWK '{ print $3 }') + HAVE_ALIEN=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_ALIEN ($ALIEN_VERSION)" >&5 +$as_echo "$HAVE_ALIEN ($ALIEN_VERSION)" >&6; } + +else + + HAVE_ALIEN=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_ALIEN" >&5 +$as_echo "$HAVE_ALIEN" >&6; } + +fi + + + + + + + + SPL_CONFIG=all + +# Check whether --with-config was given. +if test "${with_config+set}" = set; then : + withval=$with_config; SPL_CONFIG="$withval" +fi + + # Check whether --enable-linux-builtin was given. +if test "${enable_linux_builtin+set}" = set; then : + enableval=$enable_linux_builtin; +else + enable_linux_builtin=no +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl config" >&5 +$as_echo_n "checking spl config... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPL_CONFIG" >&5 +$as_echo "$SPL_CONFIG" >&6; }; + + + case "$SPL_CONFIG" in + kernel) + + +# Check whether --with-linux was given. +if test "${with_linux+set}" = set; then : + withval=$with_linux; kernelsrc="$withval" +fi + + + +# Check whether --with-linux-obj was given. +if test "${with_linux_obj+set}" = set; then : + withval=$with_linux_obj; kernelbuild="$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source directory" >&5 +$as_echo_n "checking kernel source directory... " >&6; } + if test -z "$kernelsrc"; then + if test -e "/lib/modules/$(uname -r)/source"; then + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + elif test -e "/lib/modules/$(uname -r)/build"; then + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + else + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + fi + + if test -n "$sourcelink" && test -e ${sourcelink}; then + kernelsrc=`readlink -f ${sourcelink}` + else + kernelsrc="Not found" + fi + else + if test "$kernelsrc" = "NONE"; then + kernsrcver=NONE + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelsrc" >&5 +$as_echo "$kernelsrc" >&6; } + if test ! -d "$kernelsrc"; then + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option." "$LINENO" 5 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel build directory" >&5 +$as_echo_n "checking kernel build directory... " >&6; } + if test -z "$kernelbuild"; then + if test -e "/lib/modules/$(uname -r)/build"; then + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + elif test -d ${kernelsrc}-obj/${target_cpu}/default; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + else + kernelbuild=${kernelsrc} + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelbuild" >&5 +$as_echo "$kernelbuild" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source version" >&5 +$as_echo_n "checking kernel source version... " >&6; } + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then + utsrelease=linux/version.h + elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then + utsrelease=linux/utsrelease.h + elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then + utsrelease=generated/utsrelease.h + fi + + if test "$utsrelease"; then + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + if test -z "$kernsrcver"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? "*** Cannot determine kernel version." "$LINENO" 5 + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Cannot find UTS_RELEASE definition." "$LINENO" 5 + else + as_fn_error $? " + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree." "$LINENO" 5 + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernsrcver" >&5 +$as_echo "$kernsrcver" >&6; } + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + + + + + + modpost=$LINUX/scripts/Makefile.modpost + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel file name for module symbols" >&5 +$as_echo_n "checking kernel file name for module symbols... " >&6; } + if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then + if grep -q Modules.symvers $modpost; then + LINUX_SYMBOLS=Modules.symvers + else + LINUX_SYMBOLS=Module.symvers + fi + + if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source." "$LINENO" 5 + fi + else + LINUX_SYMBOLS=NONE + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_SYMBOLS" >&5 +$as_echo "$LINUX_SYMBOLS" >&6; } + + + + + if test "${LINUX_OBJ}" != "${LINUX}"; then + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + fi + + + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether debugging is enabled" >&5 +$as_echo_n "checking whether debugging is enabled... " >&6; } + # Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enable_debug=no +fi + + + if test "x$enable_debug" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" + DEBUG_CFLAGS="-DDEBUG -Werror" + DEBUG_SPL="_with_debug" + +else + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG" + DEBUG_CFLAGS="-DNDEBUG" + DEBUG_SPL="_without_debug" + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 +$as_echo "$enable_debug" >&6; } + + + # Check whether --enable-debug-kmem was given. +if test "${enable_debug_kmem+set}" = set; then : + enableval=$enable_debug_kmem; +else + enable_debug_kmem=no +fi + + + if test "x$enable_debug_kmem" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM" + DEBUG_KMEM="_with_debug_kmem" + +$as_echo "#define DEBUG_KMEM 1" >>confdefs.h + + +else + + DEBUG_KMEM="_without_debug_kmem" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether basic kmem accounting is enabled" >&5 +$as_echo_n "checking whether basic kmem accounting is enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_kmem" >&5 +$as_echo "$enable_debug_kmem" >&6; } + + + # Check whether --enable-debug-kmem-tracking was given. +if test "${enable_debug_kmem_tracking+set}" = set; then : + enableval=$enable_debug_kmem_tracking; +else + enable_debug_kmem_tracking=no +fi + + + if test "x$enable_debug_kmem_tracking" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM_TRACKING" + DEBUG_KMEM_TRACKING="_with_debug_kmem_tracking" + +$as_echo "#define DEBUG_KMEM_TRACKING 1" >>confdefs.h + + +else + + DEBUG_KMEM_TRACKING="_without_debug_kmem_tracking" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether detailed kmem tracking is enabled" >&5 +$as_echo_n "checking whether detailed kmem tracking is enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_kmem_tracking" >&5 +$as_echo "$enable_debug_kmem_tracking" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether modules can be built" >&5 +$as_echo_n "checking whether modules can be built... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Unable to build an empty module." "$LINENO" 5 + else + as_fn_error $? " + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree." "$LINENO" 5 + fi + + + +fi + rm -Rf build + + + + if test "x$cross_compiling" != xyes; then : + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include "$LINUX/include/linux/license.h" + +int +main () +{ + + return !license_is_gpl_compatible( + "$SPL_META_LICENSE"); + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + +$as_echo "#define SPL_IS_GPL_COMPATIBLE 1" >>confdefs.h + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + + + # Check whether --enable-atomic-spinlocks was given. +if test "${enable_atomic_spinlocks+set}" = set; then : + enableval=$enable_atomic_spinlocks; +else + enable_atomic_spinlocks=check +fi + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + atomic64_t *ptr __attribute__ ((unused)); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + have_atomic64_t=yes + +$as_echo "#define HAVE_ATOMIC64_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + have_atomic64_t=no + + + +fi + rm -Rf build + + + + if test "x$enable_atomic_spinlocks" = xcheck; then : + + if test "x$have_atomic64_t" = xyes; then : + + enable_atomic_spinlocks=no + +else + + enable_atomic_spinlocks=yes + +fi + +fi + + if test "x$enable_atomic_spinlocks" = xyes; then : + + +$as_echo "#define ATOMIC_SPINLOCK 1" >>confdefs.h + + +else + + if test "x$have_atomic64_t" = xno; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--disable-atomic-spinlocks given but required atomic64 support is unavailable +See \`config.log' for more details" "$LINENO" 5; } + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether atomic types use spinlocks" >&5 +$as_echo_n "checking whether atomic types use spinlocks... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_atomic_spinlocks" >&5 +$as_echo "$enable_atomic_spinlocks" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines atomic64_t" >&5 +$as_echo_n "checking whether kernel defines atomic64_t... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_atomic64_t" >&5 +$as_echo "$have_atomic64_t" >&6; } + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether old 2-argument shrinker exists" >&5 +$as_echo_n "checking whether old 2-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(int nr_to_scan, gfp_t gfp_mask); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_OLD_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether old 3-argument shrinker exists" >&5 +$as_echo_n "checking whether old 3-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(struct shrinker *, int nr_to_scan, + gfp_t gfp_mask); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether new 2-argument shrinker exists" >&5 +$as_echo_n "checking whether new 2-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(struct shrinker *, + struct shrink_control *sc); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_NEW_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ->count_objects callback exists" >&5 +$as_echo_n "checking whether ->count_objects callback exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + unsigned long shrinker_cb( + struct shrinker *, + struct shrink_control *sc); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .count_objects = shrinker_cb, + .scan_objects = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SPLIT_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "error" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct ctl_table has ctl_name" >&5 +$as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct ctl_table ctl __attribute__ ((unused)); + ctl.ctl_name = 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CTL_NAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether PDE_DATA() is available" >&5 +$as_echo_n "checking whether PDE_DATA() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + PDE_DATA(NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]PDE_DATA[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(PDE_DATA)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PDE_DATA 1" >>confdefs.h + + + fi + fi + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether set_fs_pwd() requires const struct path *" >&5 +$as_echo_n "checking whether set_fs_pwd() requires const struct path *... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, const struct path *) + = set_fs_pwd; + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SET_FS_PWD_WITH_CONST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, struct path *) + = set_fs_pwd; + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "unknown" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_unlink() wants 2 args" >&5 +$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_unlink((struct inode *) NULL, (struct dentry *) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_UNLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_unlink() wants 3 args" >&5 +$as_echo_n "checking whether vfs_unlink() wants 3 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_unlink((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_VFS_UNLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 4 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, (struct dentry *) NULL, + (struct inode *) NULL, (struct dentry *) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_4ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 5 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 5 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_5ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 6 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 6 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL, + (unsigned int) 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_6ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_fsync() wants 2 args" >&5 +$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_fsync(NULL, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_FSYNC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether truncate_range() inode operation is available" >&5 +$as_echo_n "checking whether truncate_range() inode operation is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode_operations ops; + ops.truncate_range = NULL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_TRUNCATE_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct fs_struct uses spinlock_t" >&5 +$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + static struct fs_struct fs; + spin_lock_init(&fs.lock); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FS_STRUCT_SPINLOCK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kuid_t/kgid_t is available" >&5 +$as_echo_n "checking whether kuid_t/kgid_t is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + kuid_t userid = KUIDT_INIT(0); + kgid_t groupid = KGIDT_INIT(0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + kuid_t userid = 0; + kgid_t groupid = 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; optional" >&5 +$as_echo "yes; optional" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; mandatory" >&5 +$as_echo "yes; mandatory" >&6; } + +$as_echo "#define HAVE_KUIDGID_T 1" >>confdefs.h + + + + +fi + rm -Rf build + + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __put_task_struct() is available" >&5 +$as_echo_n "checking whether __put_task_struct() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + __put_task_struct(NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PUT_TASK_STRUCT 1" >>confdefs.h + + + fi + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->fallocate() exists" >&5 +$as_echo_n "checking whether iops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL; + struct inode_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations_no_const fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CONFIG_ZLIB_INFLATE is defined" >&5 +$as_echo_n "checking whether CONFIG_ZLIB_INFLATE is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #if !defined(CONFIG_ZLIB_INFLATE) && \ + !defined(CONFIG_ZLIB_INFLATE_MODULE) + #error CONFIG_ZLIB_INFLATE not defined + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + *** This kernel does not include the required zlib inflate support. + *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." "$LINENO" 5 + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CONFIG_ZLIB_DEFLATE is defined" >&5 +$as_echo_n "checking whether CONFIG_ZLIB_DEFLATE is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #if !defined(CONFIG_ZLIB_DEFLATE) && \ + !defined(CONFIG_ZLIB_DEFLATE_MODULE) + #error CONFIG_ZLIB_DEFLATE not defined + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + *** This kernel does not include the required zlib deflate support. + *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." "$LINENO" 5 + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether zlib_deflate_workspacesize() wants 2 args" >&5 +$as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct shrink_control exists" >&5 +$as_echo_n "checking whether struct shrink_control exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct shrink_control sc __attribute__ ((unused)); + + sc.nr_to_scan = 0; + sc.gfp_mask = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHRINK_CONTROL_STRUCT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct rw_semaphore member wait_lock is raw" >&5 +$as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct rw_semaphore dummy_semaphore __attribute__ ((unused)); + raw_spinlock_t dummy_lock __attribute__ ((unused)); + dummy_semaphore.wait_lock = dummy_lock; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define RWSEM_SPINLOCK_IS_RAW 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether header linux/sched/rt.h exists" >&5 +$as_echo_n "checking whether header linux/sched/rt.h exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + +$as_echo "#define HAVE_SCHED_RT_HEADER 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_getattr() wants" >&5 +$as_echo_n "checking whether vfs_getattr() wants... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_getattr((struct path *) NULL, + (struct kstat *)NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2 args" >&5 +$as_echo "2 args" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_GETATTR 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_getattr((struct vfsmount *)NULL, + (struct dentry *)NULL, + (struct kstat *)NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 3 args" >&5 +$as_echo "3 args" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "unknown" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether usleep_range() is available" >&5 +$as_echo_n "checking whether usleep_range() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + usleep_range(0, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_USLEEP_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct kmem_cache has allocflags" >&5 +$as_echo_n "checking whether struct kmem_cache has allocflags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct kmem_cache cachep __attribute__ ((unused)); + cachep.allocflags = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KMEM_CACHE_ALLOCFLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct kmem_cache has gfpflags" >&5 +$as_echo_n "checking whether struct kmem_cache has gfpflags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct kmem_cache cachep __attribute__ ((unused)); + cachep.gfpflags = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KMEM_CACHE_GFPFLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wait_on_bit() takes an action" >&5 +$as_echo_n "checking whether wait_on_bit() takes an action... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int (*action)(void *) = NULL; + wait_on_bit(NULL, 0, action, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_WAIT_ON_BIT_ACTION 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + ;; + user) ;; + all) + + +# Check whether --with-linux was given. +if test "${with_linux+set}" = set; then : + withval=$with_linux; kernelsrc="$withval" +fi + + + +# Check whether --with-linux-obj was given. +if test "${with_linux_obj+set}" = set; then : + withval=$with_linux_obj; kernelbuild="$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source directory" >&5 +$as_echo_n "checking kernel source directory... " >&6; } + if test -z "$kernelsrc"; then + if test -e "/lib/modules/$(uname -r)/source"; then + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + elif test -e "/lib/modules/$(uname -r)/build"; then + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + else + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + fi + + if test -n "$sourcelink" && test -e ${sourcelink}; then + kernelsrc=`readlink -f ${sourcelink}` + else + kernelsrc="Not found" + fi + else + if test "$kernelsrc" = "NONE"; then + kernsrcver=NONE + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelsrc" >&5 +$as_echo "$kernelsrc" >&6; } + if test ! -d "$kernelsrc"; then + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option." "$LINENO" 5 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel build directory" >&5 +$as_echo_n "checking kernel build directory... " >&6; } + if test -z "$kernelbuild"; then + if test -e "/lib/modules/$(uname -r)/build"; then + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + elif test -d ${kernelsrc}-obj/${target_cpu}/default; then + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + else + kernelbuild=${kernelsrc} + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelbuild" >&5 +$as_echo "$kernelbuild" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source version" >&5 +$as_echo_n "checking kernel source version... " >&6; } + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then + utsrelease=linux/version.h + elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then + utsrelease=linux/utsrelease.h + elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then + utsrelease=generated/utsrelease.h + fi + + if test "$utsrelease"; then + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + if test -z "$kernsrcver"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? "*** Cannot determine kernel version." "$LINENO" 5 + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Cannot find UTS_RELEASE definition." "$LINENO" 5 + else + as_fn_error $? " + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree." "$LINENO" 5 + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernsrcver" >&5 +$as_echo "$kernsrcver" >&6; } + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + + + + + + modpost=$LINUX/scripts/Makefile.modpost + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel file name for module symbols" >&5 +$as_echo_n "checking kernel file name for module symbols... " >&6; } + if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then + if grep -q Modules.symvers $modpost; then + LINUX_SYMBOLS=Modules.symvers + else + LINUX_SYMBOLS=Module.symvers + fi + + if ! test -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source." "$LINENO" 5 + fi + else + LINUX_SYMBOLS=NONE + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_SYMBOLS" >&5 +$as_echo "$LINUX_SYMBOLS" >&6; } + + + + + if test "${LINUX_OBJ}" != "${LINUX}"; then + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + fi + + + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether debugging is enabled" >&5 +$as_echo_n "checking whether debugging is enabled... " >&6; } + # Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enable_debug=no +fi + + + if test "x$enable_debug" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" + DEBUG_CFLAGS="-DDEBUG -Werror" + DEBUG_SPL="_with_debug" + +else + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG" + DEBUG_CFLAGS="-DNDEBUG" + DEBUG_SPL="_without_debug" + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 +$as_echo "$enable_debug" >&6; } + + + # Check whether --enable-debug-kmem was given. +if test "${enable_debug_kmem+set}" = set; then : + enableval=$enable_debug_kmem; +else + enable_debug_kmem=no +fi + + + if test "x$enable_debug_kmem" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM" + DEBUG_KMEM="_with_debug_kmem" + +$as_echo "#define DEBUG_KMEM 1" >>confdefs.h + + +else + + DEBUG_KMEM="_without_debug_kmem" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether basic kmem accounting is enabled" >&5 +$as_echo_n "checking whether basic kmem accounting is enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_kmem" >&5 +$as_echo "$enable_debug_kmem" >&6; } + + + # Check whether --enable-debug-kmem-tracking was given. +if test "${enable_debug_kmem_tracking+set}" = set; then : + enableval=$enable_debug_kmem_tracking; +else + enable_debug_kmem_tracking=no +fi + + + if test "x$enable_debug_kmem_tracking" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM_TRACKING" + DEBUG_KMEM_TRACKING="_with_debug_kmem_tracking" + +$as_echo "#define DEBUG_KMEM_TRACKING 1" >>confdefs.h + + +else + + DEBUG_KMEM_TRACKING="_without_debug_kmem_tracking" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether detailed kmem tracking is enabled" >&5 +$as_echo_n "checking whether detailed kmem tracking is enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_kmem_tracking" >&5 +$as_echo "$enable_debug_kmem_tracking" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether modules can be built" >&5 +$as_echo_n "checking whether modules can be built... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Unable to build an empty module." "$LINENO" 5 + else + as_fn_error $? " + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree." "$LINENO" 5 + fi + + + +fi + rm -Rf build + + + + if test "x$cross_compiling" != xyes; then : + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include "$LINUX/include/linux/license.h" + +int +main () +{ + + return !license_is_gpl_compatible( + "$SPL_META_LICENSE"); + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + +$as_echo "#define SPL_IS_GPL_COMPATIBLE 1" >>confdefs.h + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + + + # Check whether --enable-atomic-spinlocks was given. +if test "${enable_atomic_spinlocks+set}" = set; then : + enableval=$enable_atomic_spinlocks; +else + enable_atomic_spinlocks=check +fi + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + atomic64_t *ptr __attribute__ ((unused)); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + have_atomic64_t=yes + +$as_echo "#define HAVE_ATOMIC64_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + have_atomic64_t=no + + + +fi + rm -Rf build + + + + if test "x$enable_atomic_spinlocks" = xcheck; then : + + if test "x$have_atomic64_t" = xyes; then : + + enable_atomic_spinlocks=no + +else + + enable_atomic_spinlocks=yes + +fi + +fi + + if test "x$enable_atomic_spinlocks" = xyes; then : + + +$as_echo "#define ATOMIC_SPINLOCK 1" >>confdefs.h + + +else + + if test "x$have_atomic64_t" = xno; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--disable-atomic-spinlocks given but required atomic64 support is unavailable +See \`config.log' for more details" "$LINENO" 5; } + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether atomic types use spinlocks" >&5 +$as_echo_n "checking whether atomic types use spinlocks... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_atomic_spinlocks" >&5 +$as_echo "$enable_atomic_spinlocks" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines atomic64_t" >&5 +$as_echo_n "checking whether kernel defines atomic64_t... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_atomic64_t" >&5 +$as_echo "$have_atomic64_t" >&6; } + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether old 2-argument shrinker exists" >&5 +$as_echo_n "checking whether old 2-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(int nr_to_scan, gfp_t gfp_mask); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_OLD_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether old 3-argument shrinker exists" >&5 +$as_echo_n "checking whether old 3-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(struct shrinker *, int nr_to_scan, + gfp_t gfp_mask); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether new 2-argument shrinker exists" >&5 +$as_echo_n "checking whether new 2-argument shrinker exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrinker_cb(struct shrinker *, + struct shrink_control *sc); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .shrink = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_NEW_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ->count_objects callback exists" >&5 +$as_echo_n "checking whether ->count_objects callback exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + unsigned long shrinker_cb( + struct shrinker *, + struct shrink_control *sc); + +int +main (void) +{ + + struct shrinker cache_shrinker = { + .count_objects = shrinker_cb, + .scan_objects = shrinker_cb, + .seeks = DEFAULT_SEEKS, + }; + register_shrinker(&cache_shrinker); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SPLIT_SHRINKER_CALLBACK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "error" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct ctl_table has ctl_name" >&5 +$as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct ctl_table ctl __attribute__ ((unused)); + ctl.ctl_name = 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CTL_NAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether PDE_DATA() is available" >&5 +$as_echo_n "checking whether PDE_DATA() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + PDE_DATA(NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]PDE_DATA[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(PDE_DATA)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PDE_DATA 1" >>confdefs.h + + + fi + fi + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether set_fs_pwd() requires const struct path *" >&5 +$as_echo_n "checking whether set_fs_pwd() requires const struct path *... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, const struct path *) + = set_fs_pwd; + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SET_FS_PWD_WITH_CONST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + void (*const set_fs_pwd_func) + (struct fs_struct *, struct path *) + = set_fs_pwd; + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "unknown" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_unlink() wants 2 args" >&5 +$as_echo_n "checking whether vfs_unlink() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_unlink((struct inode *) NULL, (struct dentry *) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_UNLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_unlink() wants 3 args" >&5 +$as_echo_n "checking whether vfs_unlink() wants 3 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_unlink((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_VFS_UNLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 4 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 4 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, (struct dentry *) NULL, + (struct inode *) NULL, (struct dentry *) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_4ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 5 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 5 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_5ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_rename() wants 6 args" >&5 +$as_echo_n "checking whether vfs_rename() wants 6 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_rename((struct inode *) NULL, + (struct dentry *) NULL, + (struct inode *) NULL, + (struct dentry *) NULL, + (struct inode **) NULL, + (unsigned int) 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_6ARGS_VFS_RENAME 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_fsync() wants 2 args" >&5 +$as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_fsync(NULL, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_FSYNC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether truncate_range() inode operation is available" >&5 +$as_echo_n "checking whether truncate_range() inode operation is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode_operations ops; + ops.truncate_range = NULL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_TRUNCATE_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct fs_struct uses spinlock_t" >&5 +$as_echo_n "checking whether struct fs_struct uses spinlock_t... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + static struct fs_struct fs; + spin_lock_init(&fs.lock); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FS_STRUCT_SPINLOCK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kuid_t/kgid_t is available" >&5 +$as_echo_n "checking whether kuid_t/kgid_t is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + kuid_t userid = KUIDT_INIT(0); + kgid_t groupid = KGIDT_INIT(0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + kuid_t userid = 0; + kgid_t groupid = 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; optional" >&5 +$as_echo "yes; optional" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; mandatory" >&5 +$as_echo "yes; mandatory" >&6; } + +$as_echo "#define HAVE_KUIDGID_T 1" >>confdefs.h + + + + +fi + rm -Rf build + + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __put_task_struct() is available" >&5 +$as_echo_n "checking whether __put_task_struct() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + __put_task_struct(NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]__put_task_struct[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(__put_task_struct)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PUT_TASK_STRUCT 1" >>confdefs.h + + + fi + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->fallocate() exists" >&5 +$as_echo_n "checking whether iops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct inode *, int, loff_t, loff_t) = NULL; + struct inode_operations fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + long (*fallocate) (struct file *, int, loff_t, loff_t) = NULL; + struct file_operations_no_const fops __attribute__ ((unused)) = { + .fallocate = fallocate, + }; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CONFIG_ZLIB_INFLATE is defined" >&5 +$as_echo_n "checking whether CONFIG_ZLIB_INFLATE is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #if !defined(CONFIG_ZLIB_INFLATE) && \ + !defined(CONFIG_ZLIB_INFLATE_MODULE) + #error CONFIG_ZLIB_INFLATE not defined + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + *** This kernel does not include the required zlib inflate support. + *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." "$LINENO" 5 + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CONFIG_ZLIB_DEFLATE is defined" >&5 +$as_echo_n "checking whether CONFIG_ZLIB_DEFLATE is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #if !defined(CONFIG_ZLIB_DEFLATE) && \ + !defined(CONFIG_ZLIB_DEFLATE_MODULE) + #error CONFIG_ZLIB_DEFLATE not defined + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + *** This kernel does not include the required zlib deflate support. + *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." "$LINENO" 5 + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether zlib_deflate_workspacesize() wants 2 args" >&5 +$as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct shrink_control exists" >&5 +$as_echo_n "checking whether struct shrink_control exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct shrink_control sc __attribute__ ((unused)); + + sc.nr_to_scan = 0; + sc.gfp_mask = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHRINK_CONTROL_STRUCT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct rw_semaphore member wait_lock is raw" >&5 +$as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-Werror" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct rw_semaphore dummy_semaphore __attribute__ ((unused)); + raw_spinlock_t dummy_lock __attribute__ ((unused)); + dummy_semaphore.wait_lock = dummy_lock; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define RWSEM_SPINLOCK_IS_RAW 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether header linux/sched/rt.h exists" >&5 +$as_echo_n "checking whether header linux/sched/rt.h exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + return 0; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + +$as_echo "#define HAVE_SCHED_RT_HEADER 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vfs_getattr() wants" >&5 +$as_echo_n "checking whether vfs_getattr() wants... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_getattr((struct path *) NULL, + (struct kstat *)NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2 args" >&5 +$as_echo "2 args" >&6; } + +$as_echo "#define HAVE_2ARGS_VFS_GETATTR 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + vfs_getattr((struct vfsmount *)NULL, + (struct dentry *)NULL, + (struct kstat *)NULL); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 3 args" >&5 +$as_echo "3 args" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "unknown" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether usleep_range() is available" >&5 +$as_echo_n "checking whether usleep_range() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + usleep_range(0, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_USLEEP_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct kmem_cache has allocflags" >&5 +$as_echo_n "checking whether struct kmem_cache has allocflags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct kmem_cache cachep __attribute__ ((unused)); + cachep.allocflags = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KMEM_CACHE_ALLOCFLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct kmem_cache has gfpflags" >&5 +$as_echo_n "checking whether struct kmem_cache has gfpflags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct kmem_cache cachep __attribute__ ((unused)); + cachep.gfpflags = GFP_KERNEL; + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KMEM_CACHE_GFPFLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wait_on_bit() takes an action" >&5 +$as_echo_n "checking whether wait_on_bit() takes an action... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int (*action)(void *) = NULL; + wait_on_bit(NULL, 0, action, 0); + + ; + return 0; +} + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_WAIT_ON_BIT_ACTION 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + ;; + srpm) ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Error!" >&5 +$as_echo "Error!" >&6; } + as_fn_error $? "Bad value \"$SPL_CONFIG\" for --with-config, + user kernel|user|all|srpm" "$LINENO" 5 ;; + esac + + if test "$SPL_CONFIG" = user -o "$SPL_CONFIG" = all; then + CONFIG_USER_TRUE= + CONFIG_USER_FALSE='#' +else + CONFIG_USER_TRUE='#' + CONFIG_USER_FALSE= +fi + + if test "$SPL_CONFIG" = kernel -o "$SPL_CONFIG" = all && + test "x$enable_linux_builtin" != xyes ; then + CONFIG_KERNEL_TRUE= + CONFIG_KERNEL_FALSE='#' +else + CONFIG_KERNEL_TRUE='#' + CONFIG_KERNEL_FALSE= +fi + + + +ac_config_files="$ac_config_files Makefile man/Makefile man/man1/Makefile man/man5/Makefile lib/Makefile cmd/Makefile module/Makefile module/spl/Makefile module/splat/Makefile include/Makefile include/fs/Makefile include/linux/Makefile include/rpc/Makefile include/sharefs/Makefile include/sys/Makefile include/sys/fm/Makefile include/sys/fs/Makefile include/sys/sysevent/Makefile include/util/Makefile include/vm/Makefile scripts/Makefile rpm/Makefile rpm/redhat/Makefile rpm/redhat/spl.spec rpm/redhat/spl-kmod.spec rpm/redhat/spl-dkms.spec rpm/generic/Makefile rpm/generic/spl.spec rpm/generic/spl-kmod.spec rpm/generic/spl-dkms.spec spl.release" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CONFIG_USER_TRUE}" && test -z "${CONFIG_USER_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_USER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CONFIG_KERNEL_TRUE}" && test -z "${CONFIG_KERNEL_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_KERNEL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by spl $as_me 0.6.5.4, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +spl config.status 0.6.5.4 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "spl_config.h") CONFIG_HEADERS="$CONFIG_HEADERS spl_config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "man/man1/Makefile") CONFIG_FILES="$CONFIG_FILES man/man1/Makefile" ;; + "man/man5/Makefile") CONFIG_FILES="$CONFIG_FILES man/man5/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "cmd/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/Makefile" ;; + "module/Makefile") CONFIG_FILES="$CONFIG_FILES module/Makefile" ;; + "module/spl/Makefile") CONFIG_FILES="$CONFIG_FILES module/spl/Makefile" ;; + "module/splat/Makefile") CONFIG_FILES="$CONFIG_FILES module/splat/Makefile" ;; + "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/fs/Makefile" ;; + "include/linux/Makefile") CONFIG_FILES="$CONFIG_FILES include/linux/Makefile" ;; + "include/rpc/Makefile") CONFIG_FILES="$CONFIG_FILES include/rpc/Makefile" ;; + "include/sharefs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sharefs/Makefile" ;; + "include/sys/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/Makefile" ;; + "include/sys/fm/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fm/Makefile" ;; + "include/sys/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fs/Makefile" ;; + "include/sys/sysevent/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/sysevent/Makefile" ;; + "include/util/Makefile") CONFIG_FILES="$CONFIG_FILES include/util/Makefile" ;; + "include/vm/Makefile") CONFIG_FILES="$CONFIG_FILES include/vm/Makefile" ;; + "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; + "rpm/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/Makefile" ;; + "rpm/redhat/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/redhat/Makefile" ;; + "rpm/redhat/spl.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/spl.spec" ;; + "rpm/redhat/spl-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/spl-kmod.spec" ;; + "rpm/redhat/spl-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/spl-dkms.spec" ;; + "rpm/generic/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/generic/Makefile" ;; + "rpm/generic/spl.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/spl.spec" ;; + "rpm/generic/spl-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/spl-kmod.spec" ;; + "rpm/generic/spl-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/spl-dkms.spec" ;; + "spl.release") CONFIG_FILES="$CONFIG_FILES spl.release" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "spl_config.h":H) + (mv spl_config.h spl_config.h.tmp && + awk -f ${ac_srcdir}/config/config.awk spl_config.h.tmp >spl_config.h && + rm spl_config.h.tmp) || exit 1 ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + --- linux-4.4.0.orig/spl/configure.ac +++ linux-4.4.0/spl/configure.ac @@ -0,0 +1,84 @@ +############################################################################### +# SPL AutoConf Configuration +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). +# Written by Brian Behlendorf . +# UCRL-CODE-235197 +# +# This file is part of the SPL, Solaris Porting Layer. +# For details, see . +# +# The SPL is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# The SPL is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with the SPL. If not, see . +############################################################################### + +AC_INIT(m4_esyscmd(grep Name META | cut -d ':' -f 2 | tr -d ' \n'), + m4_esyscmd(grep Version META | cut -d ':' -f 2 | tr -d ' \n')) +AC_LANG(C) +SPL_AC_META +AC_CONFIG_AUX_DIR([config]) +AC_CONFIG_MACRO_DIR([config]) +AC_CANONICAL_SYSTEM +AM_MAINTAINER_MODE +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AM_INIT_AUTOMAKE +AC_CONFIG_HEADERS([spl_config.h], [ + (mv spl_config.h spl_config.h.tmp && + awk -f ${ac_srcdir}/config/config.awk spl_config.h.tmp >spl_config.h && + rm spl_config.h.tmp) || exit 1]) + +AC_PROG_INSTALL +AC_PROG_CC +AC_PROG_LIBTOOL + +SPL_AC_LICENSE +SPL_AC_PACKAGE +SPL_AC_CONFIG + +AC_CONFIG_FILES([ + Makefile + man/Makefile + man/man1/Makefile + man/man5/Makefile + lib/Makefile + cmd/Makefile + module/Makefile + module/spl/Makefile + module/splat/Makefile + include/Makefile + include/fs/Makefile + include/linux/Makefile + include/rpc/Makefile + include/sharefs/Makefile + include/sys/Makefile + include/sys/fm/Makefile + include/sys/fs/Makefile + include/sys/sysevent/Makefile + include/util/Makefile + include/vm/Makefile + scripts/Makefile + rpm/Makefile + rpm/redhat/Makefile + rpm/redhat/spl.spec + rpm/redhat/spl-kmod.spec + rpm/redhat/spl-dkms.spec + rpm/generic/Makefile + rpm/generic/spl.spec + rpm/generic/spl-kmod.spec + rpm/generic/spl-dkms.spec + spl.release +]) + +AC_OUTPUT --- linux-4.4.0.orig/spl/copy-builtin +++ linux-4.4.0/spl/copy-builtin @@ -0,0 +1,126 @@ +#!/bin/bash + +set -e + +usage() +{ + echo "usage: $0 " >&2 + exit 1 +} + +[ "$#" -eq 1 ] || usage +KERNEL_DIR="$(readlink --canonicalize-existing "$1")" + +MODULES=() +for MODULE_DIR in module/* +do + [ -d "$MODULE_DIR" ] || continue + MODULES+=("${MODULE_DIR##*/}") +done + +if ! [ -e 'spl_config.h' ] +then + echo >&2 + echo " $0: you did not run configure, or you're not in the SPL source directory." >&2 + echo " $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2 + echo >&2 + exit 1 +fi + +make clean || true + +rm -rf "$KERNEL_DIR/include/spl" "$KERNEL_DIR/spl" +cp --recursive include "$KERNEL_DIR/include/spl" +cp --recursive module "$KERNEL_DIR/spl" +cp spl_config.h "$KERNEL_DIR/" +cp spl.release.in "$KERNEL_DIR/" + +adjust_obj_paths() +{ + local FILE="$1" + local LINE OBJPATH + + while IFS='' read -r LINE + do + OBJPATH="${LINE#\$(MODULE)-objs += }" + if [ "$OBJPATH" = "$LINE" ] + then + echo "$LINE" + else + echo "\$(MODULE)-objs += ${OBJPATH##*/}" + fi + done < "$FILE" > "$FILE.new" + mv "$FILE.new" "$FILE" +} + +for MODULE in "${MODULES[@]}" +do + adjust_obj_paths "$KERNEL_DIR/spl/$MODULE/Makefile" + sed -i.bak '/obj =/d' "$KERNEL_DIR/spl/$MODULE/Makefile" + sed -i.bak '/src =/d' "$KERNEL_DIR/spl/$MODULE/Makefile" +done + +cat > "$KERNEL_DIR/spl/Kconfig" <<"EOF" +config SPL + tristate "Solaris Porting Layer (SPL)" + help + This is the SPL library from the ZFS On Linux project. + + See http://zfsonlinux.org/ + + To compile this library as a module, choose M here. + + If unsure, say N. +EOF + +{ + cat <<-"EOF" + SPL_MODULE_CFLAGS = -I$(srctree)/include/spl + SPL_MODULE_CFLAGS += -include $(srctree)/spl_config.h + export SPL_MODULE_CFLAGS + + obj-$(CONFIG_SPL) := + EOF + + for MODULE in "${MODULES[@]}" + do + echo 'obj-$(CONFIG_SPL) += ' "$MODULE/" + done +} > "$KERNEL_DIR/spl/Kbuild" + +add_after() +{ + local FILE="$1" + local MARKER="$2" + local NEW="$3" + local LINE + + while IFS='' read -r LINE + do + echo "$LINE" + + if [ -n "$MARKER" -a "$LINE" = "$MARKER" ] + then + echo "$NEW" + MARKER='' + if IFS='' read -r LINE + then + [ "$LINE" != "$NEW" ] && echo "$LINE" + fi + fi + done < "$FILE" > "$FILE.new" + + mv "$FILE.new" "$FILE" +} + +add_after "$KERNEL_DIR/Kconfig" 'source "arch/$SRCARCH/Kconfig"' 'source "spl/Kconfig"' +# We must take care to build SPL before ZFS, otherwise the symbols required +# to link ZFS will not be available. +sed -i 's#+= kernel/#+= kernel/ spl/#' "$KERNEL_DIR/Makefile" + +echo >&2 +echo " $0: done." >&2 +echo " $0: now you can build the kernel with SPL support." >&2 +echo " $0: make sure you enable SPL support (CONFIG_SPL) before building." >&2 +echo >&2 + --- linux-4.4.0.orig/spl/cp +++ linux-4.4.0/spl/cp @@ -0,0 +1,2 @@ +#!/bin/sh +cp "$@" --- linux-4.4.0.orig/spl/dkms.conf +++ linux-4.4.0/spl/dkms.conf @@ -0,0 +1,35 @@ +AUTOINSTALL="yes" +PACKAGE_NAME="spl" +PACKAGE_VERSION="0.6.5.4" +PRE_BUILD="configure + --prefix=/usr + --with-config=kernel + --with-linux=$(case `lsb_release -is` in + (Debian) + if [ -e ${kernel_source_dir/%build/source} ] + then + echo ${kernel_source_dir/%build/source} + else + # This is a kpkg exception for Proxmox 2.0 + echo ${kernel_source_dir} + fi + ;; + (*) + echo ${kernel_source_dir} + ;; + esac) + --with-linux-obj=${kernel_source_dir} +" +POST_INSTALL="cp + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/spl_config.h + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/module/Module.symvers + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/${kernelver}/${arch}/ +" +REMAKE_INITRD="no" +MAKE[0]="make" +BUILT_MODULE_NAME[0]="spl" +BUILT_MODULE_LOCATION[0]="module/spl/" +DEST_MODULE_LOCATION[0]="/extra/spl/spl" +BUILT_MODULE_NAME[1]="splat" +BUILT_MODULE_LOCATION[1]="module/splat/" +DEST_MODULE_LOCATION[1]="/extra/splat/splat" --- linux-4.4.0.orig/spl/include/Makefile.am +++ linux-4.4.0/spl/include/Makefile.am @@ -0,0 +1,18 @@ +SUBDIRS = fs linux rpc sharefs sys util vm + +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/splat-ctl.h \ + $(top_srcdir)/include/spl-ctl.h \ + $(top_srcdir)/include/strings.h \ + $(top_srcdir)/include/unistd.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/Makefile.in +++ linux-4.4.0/spl/include/Makefile.in @@ -0,0 +1,742 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/splat-ctl.h \ + $(top_srcdir)/include/spl-ctl.h \ + $(top_srcdir)/include/strings.h $(top_srcdir)/include/unistd.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = fs linux rpc sharefs sys util vm +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/splat-ctl.h \ + $(top_srcdir)/include/spl-ctl.h \ + $(top_srcdir)/include/strings.h \ + $(top_srcdir)/include/unistd.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-kernelHEADERS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/fs/Makefile.am +++ linux-4.4.0/spl/include/fs/Makefile.am @@ -0,0 +1,13 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/fs/fs_subr.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/fs +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/fs/Makefile.in +++ linux-4.4.0/spl/include/fs/Makefile.in @@ -0,0 +1,620 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/fs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/fs/fs_subr.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/fs/fs_subr.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/fs +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/fs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/fs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/fs/fs_subr.h +++ linux-4.4.0/spl/include/fs/fs_subr.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FS_FS_SUBR_H +#define _SPL_FS_FS_SUBR_H + +#endif /* SPL_FS_FS_SUBR_H */ --- linux-4.4.0.orig/spl/include/linux/Makefile.am +++ linux-4.4.0/spl/include/linux/Makefile.am @@ -0,0 +1,23 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/linux/bitops_compat.h \ + $(top_srcdir)/include/linux/compiler_compat.h \ + $(top_srcdir)/include/linux/delay_compat.h \ + $(top_srcdir)/include/linux/file_compat.h \ + $(top_srcdir)/include/linux/list_compat.h \ + $(top_srcdir)/include/linux/math64_compat.h \ + $(top_srcdir)/include/linux/mm_compat.h \ + $(top_srcdir)/include/linux/proc_compat.h \ + $(top_srcdir)/include/linux/rwsem_compat.h \ + $(top_srcdir)/include/linux/wait_compat.h \ + $(top_srcdir)/include/linux/zlib_compat.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/linux +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/linux/Makefile.in +++ linux-4.4.0/spl/include/linux/Makefile.in @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/linux +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/linux/bitops_compat.h \ + $(top_srcdir)/include/linux/compiler_compat.h \ + $(top_srcdir)/include/linux/delay_compat.h \ + $(top_srcdir)/include/linux/file_compat.h \ + $(top_srcdir)/include/linux/list_compat.h \ + $(top_srcdir)/include/linux/math64_compat.h \ + $(top_srcdir)/include/linux/mm_compat.h \ + $(top_srcdir)/include/linux/proc_compat.h \ + $(top_srcdir)/include/linux/rwsem_compat.h \ + $(top_srcdir)/include/linux/wait_compat.h \ + $(top_srcdir)/include/linux/zlib_compat.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/linux/bitops_compat.h \ + $(top_srcdir)/include/linux/compiler_compat.h \ + $(top_srcdir)/include/linux/delay_compat.h \ + $(top_srcdir)/include/linux/file_compat.h \ + $(top_srcdir)/include/linux/list_compat.h \ + $(top_srcdir)/include/linux/math64_compat.h \ + $(top_srcdir)/include/linux/mm_compat.h \ + $(top_srcdir)/include/linux/proc_compat.h \ + $(top_srcdir)/include/linux/rwsem_compat.h \ + $(top_srcdir)/include/linux/wait_compat.h \ + $(top_srcdir)/include/linux/zlib_compat.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/linux +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/linux/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/linux/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/linux/bitops_compat.h +++ linux-4.4.0/spl/include/linux/bitops_compat.h @@ -0,0 +1,31 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BITOPS_COMPAT_H +#define _SPL_BITOPS_COMPAT_H + +#include + +#endif /* _SPL_BITOPS_COMPAT_H */ + --- linux-4.4.0.orig/spl/include/linux/compiler_compat.h +++ linux-4.4.0/spl/include/linux/compiler_compat.h @@ -0,0 +1,47 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_COMPILER_COMPAT_H +#define _SPL_COMPILER_COMPAT_H + +#include + +#ifndef ACCESS_ONCE +/* + * Prevent the compiler from merging or refetching accesses. The compiler + * is also forbidden from reordering successive instances of ACCESS_ONCE(), + * but only when the compiler is aware of some particular ordering. One way + * to make the compiler aware of ordering is to put the two invocations of + * ACCESS_ONCE() in different C statements. + * + * This macro does absolutely -nothing- to prevent the CPU from reordering, + * merging, or refetching absolutely anything at any time. Its main intended + * use is to mediate communication between process-level code and irq/NMI + * handlers, all running on the same CPU. + */ +/* Taken from 2.6.33.2 */ +# define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) +#endif + +#endif /* _SPL_COMPILER_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/delay_compat.h +++ linux-4.4.0/spl/include/linux/delay_compat.h @@ -0,0 +1,47 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DELAY_COMPAT_H +#define _SPL_DELAY_COMPAT_H + +#include +#include + +/* usleep_range() introduced in 2.6.36 */ +#ifndef HAVE_USLEEP_RANGE + +static inline void +usleep_range(unsigned long min, unsigned long max) +{ + unsigned int min_ms = min / USEC_PER_MSEC; + + if (min >= MAX_UDELAY_MS) + msleep(min_ms); + else + udelay(min); +} + +#endif /* HAVE_USLEEP_RANGE */ + +#endif /* _SPL_DELAY_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/file_compat.h +++ linux-4.4.0/spl/include/linux/file_compat.h @@ -0,0 +1,83 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FILE_COMPAT_H +#define _SPL_FILE_COMPAT_H + +#include +#ifdef HAVE_FDTABLE_HEADER +#include +#endif + +static inline struct file * +spl_filp_open(const char *name, int flags, int mode, int *err) +{ + struct file *filp = NULL; + int rc; + + filp = filp_open(name, flags, mode); + if (IS_ERR(filp)) { + rc = PTR_ERR(filp); + if (err) + *err = rc; + filp = NULL; + } + return filp; +} + +#define spl_filp_close(f) filp_close(f, NULL) +#define spl_filp_poff(f) (&(f)->f_pos) +#define spl_filp_write(fp, b, s, p) (fp)->f_op->write((fp), (b), (s), p) + +static inline int +spl_filp_fallocate(struct file *fp, int mode, loff_t offset, loff_t len) +{ + int error = -EOPNOTSUPP; + +#ifdef HAVE_FILE_FALLOCATE + if (fp->f_op->fallocate) + error = fp->f_op->fallocate(fp, mode, offset, len); +#else +#ifdef HAVE_INODE_FALLOCATE + if (fp->f_dentry && fp->f_dentry->d_inode && + fp->f_dentry->d_inode->i_op->fallocate) + error = fp->f_dentry->d_inode->i_op->fallocate( + fp->f_dentry->d_inode, mode, offset, len); +#endif /* HAVE_INODE_FALLOCATE */ +#endif /*HAVE_FILE_FALLOCATE */ + + return (error); +} + +#ifdef HAVE_2ARGS_VFS_FSYNC +#define spl_filp_fsync(fp, sync) vfs_fsync(fp, sync) +#else +#define spl_filp_fsync(fp, sync) vfs_fsync(fp, (fp)->f_dentry, sync) +#endif /* HAVE_2ARGS_VFS_FSYNC */ + +#define spl_inode_lock(ip) mutex_lock(&(ip)->i_mutex) +#define spl_inode_unlock(ip) mutex_unlock(&(ip)->i_mutex) + +#endif /* SPL_FILE_COMPAT_H */ + --- linux-4.4.0.orig/spl/include/linux/list_compat.h +++ linux-4.4.0/spl/include/linux/list_compat.h @@ -0,0 +1,51 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_LIST_COMPAT_H +#define _SPL_LIST_COMPAT_H + +#include + +#ifndef list_for_each_entry_safe_reverse + +/** + * list_for_each_entry_safe_reverse + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + * + * Iterate backwards over list of given type, safe against removal + * of list entry. + */ +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member), \ + n = list_entry(pos->member.prev, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.prev, typeof(*n), member)) + +#endif /* list_for_each_entry_safe_reverse */ + +#endif /* SPL_LIST_COMPAT_H */ + --- linux-4.4.0.orig/spl/include/linux/math64_compat.h +++ linux-4.4.0/spl/include/linux/math64_compat.h @@ -0,0 +1,32 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MATH64_COMPAT_H +#define _SPL_MATH64_COMPAT_H + +#ifndef abs64 +#define abs64(x) ({ uint64_t t = (x) >> 63; ((x) ^ t) - t; }) +#endif + +#endif /* _SPL_MATH64_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/mm_compat.h +++ linux-4.4.0/spl/include/linux/mm_compat.h @@ -0,0 +1,209 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MM_COMPAT_H +#define _SPL_MM_COMPAT_H + +#include +#include + +#if !defined(HAVE_SHRINK_CONTROL_STRUCT) +struct shrink_control { + gfp_t gfp_mask; + unsigned long nr_to_scan; +}; +#endif /* HAVE_SHRINK_CONTROL_STRUCT */ + +/* + * Due to frequent changes in the shrinker API the following + * compatibility wrappers should be used. They are as follows: + * + * SPL_SHRINKER_DECLARE is used to declare the shrinker which is + * passed to spl_register_shrinker()/spl_unregister_shrinker(). Use + * shrinker_name to set the shrinker variable name, shrinker_callback + * to set the callback function, and seek_cost to define the cost of + * reclaiming an object. + * + * SPL_SHRINKER_DECLARE(shrinker_name, shrinker_callback, seek_cost); + * + * SPL_SHRINKER_CALLBACK_FWD_DECLARE is used when a forward declaration + * of the shrinker callback function is required. Only the callback + * function needs to be passed. + * + * SPL_SHRINKER_CALLBACK_FWD_DECLARE(shrinker_callback); + * + * SPL_SHRINKER_CALLBACK_WRAPPER is used to declare the callback function + * which is registered with the shrinker. This function will call your + * custom shrinker which must use the following prototype. Notice the + * leading __'s, these must be appended to the callback_function name. + * + * int __shrinker_callback(struct shrinker *, struct shrink_control *) + * SPL_SHRINKER_CALLBACK_WRAPPER(shrinker_callback);a + * + * + * Example: + * + * SPL_SHRINKER_CALLBACK_FWD_DECLARE(my_shrinker_fn); + * SPL_SHRINKER_DECLARE(my_shrinker, my_shrinker_fn, 1); + * + * static int + * __my_shrinker_fn(struct shrinker *shrink, struct shrink_control *sc) + * { + * if (sc->nr_to_scan) { + * ...scan objects in the cache and reclaim them... + * } + * + * ...calculate number of objects in the cache... + * + * return (number of objects in the cache); + * } + * SPL_SHRINKER_CALLBACK_WRAPPER(my_shrinker_fn); + */ + +#define spl_register_shrinker(x) register_shrinker(x) +#define spl_unregister_shrinker(x) unregister_shrinker(x) + +/* + * Linux 2.6.23 - 2.6.34 Shrinker API Compatibility. + */ +#if defined(HAVE_2ARGS_OLD_SHRINKER_CALLBACK) +#define SPL_SHRINKER_DECLARE(s, x, y) \ +static struct shrinker s = { \ + .shrink = x, \ + .seeks = y \ +} + +#define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ +static int fn(int nr_to_scan, unsigned int gfp_mask) + +#define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ +static int \ +fn(int nr_to_scan, unsigned int gfp_mask) \ +{ \ + struct shrink_control sc; \ + \ + sc.nr_to_scan = nr_to_scan; \ + sc.gfp_mask = gfp_mask; \ + \ + return (__ ## fn(NULL, &sc)); \ +} + +/* + * Linux 2.6.35 to 2.6.39 Shrinker API Compatibility. + */ +#elif defined(HAVE_3ARGS_SHRINKER_CALLBACK) +#define SPL_SHRINKER_DECLARE(s, x, y) \ +static struct shrinker s = { \ + .shrink = x, \ + .seeks = y \ +} + +#define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ +static int fn(struct shrinker *, int, unsigned int) + +#define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ +static int \ +fn(struct shrinker *shrink, int nr_to_scan, unsigned int gfp_mask) \ +{ \ + struct shrink_control sc; \ + \ + sc.nr_to_scan = nr_to_scan; \ + sc.gfp_mask = gfp_mask; \ + \ + return (__ ## fn(shrink, &sc)); \ +} + +/* + * Linux 3.0 to 3.11 Shrinker API Compatibility. + */ +#elif defined(HAVE_2ARGS_NEW_SHRINKER_CALLBACK) +#define SPL_SHRINKER_DECLARE(s, x, y) \ +static struct shrinker s = { \ + .shrink = x, \ + .seeks = y \ +} + +#define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ +static int fn(struct shrinker *, struct shrink_control *) + +#define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ +static int \ +fn(struct shrinker *shrink, struct shrink_control *sc) \ +{ \ + return (__ ## fn(shrink, sc)); \ +} + +/* + * Linux 3.12 and later Shrinker API Compatibility. + */ +#elif defined(HAVE_SPLIT_SHRINKER_CALLBACK) +#define SPL_SHRINKER_DECLARE(s, x, y) \ +static struct shrinker s = { \ + .count_objects = x ## _count_objects, \ + .scan_objects = x ## _scan_objects, \ + .seeks = y \ +} + +#define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ +static unsigned long fn ## _count_objects(struct shrinker *, \ + struct shrink_control *); \ +static unsigned long fn ## _scan_objects(struct shrinker *, \ + struct shrink_control *) + +#define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ +static unsigned long \ +fn ## _count_objects(struct shrinker *shrink, struct shrink_control *sc)\ +{ \ + int __ret__; \ + \ + sc->nr_to_scan = 0; \ + __ret__ = __ ## fn(NULL, sc); \ + \ + /* Errors may not be returned and must be converted to zeros */ \ + return ((__ret__ < 0) ? 0 : __ret__); \ +} \ + \ +static unsigned long \ +fn ## _scan_objects(struct shrinker *shrink, struct shrink_control *sc) \ +{ \ + int __ret__; \ + \ + __ret__ = __ ## fn(NULL, sc); \ + return ((__ret__ < 0) ? SHRINK_STOP : __ret__); \ +} +#else +/* + * Linux 2.x to 2.6.22, or a newer shrinker API has been introduced. + */ +#error "Unknown shrinker callback" +#endif + +#if defined(HAVE_SPLIT_SHRINKER_CALLBACK) +typedef unsigned long spl_shrinker_t; +#else +typedef int spl_shrinker_t; +#define SHRINK_STOP (-1) +#endif + +#endif /* SPL_MM_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/proc_compat.h +++ linux-4.4.0/spl/include/linux/proc_compat.h @@ -0,0 +1,35 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PROC_COMPAT_H +#define _SPL_PROC_COMPAT_H + +#include + +extern struct proc_dir_entry *proc_spl_kstat; + +int spl_proc_init(void); +void spl_proc_fini(void); + +#endif /* SPL_PROC_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/rwsem_compat.h +++ linux-4.4.0/spl/include/linux/rwsem_compat.h @@ -0,0 +1,42 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RWSEM_COMPAT_H +#define _SPL_RWSEM_COMPAT_H + +#include + +#if defined(RWSEM_SPINLOCK_IS_RAW) +#define spl_rwsem_lock_irqsave(lk, fl) raw_spin_lock_irqsave(lk, fl) +#define spl_rwsem_unlock_irqrestore(lk, fl) raw_spin_unlock_irqrestore(lk, fl) +#define spl_rwsem_trylock_irqsave(lk, fl) raw_spin_trylock_irqsave(lk, fl) +#else +#define spl_rwsem_lock_irqsave(lk, fl) spin_lock_irqsave(lk, fl) +#define spl_rwsem_unlock_irqrestore(lk, fl) spin_unlock_irqrestore(lk, fl) +#define spl_rwsem_trylock_irqsave(lk, fl) spin_trylock_irqsave(lk, fl) +#endif /* RWSEM_SPINLOCK_IS_RAW */ + +#define spl_rwsem_is_locked(rwsem) rwsem_is_locked(rwsem) + +#endif /* _SPL_RWSEM_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/wait_compat.h +++ linux-4.4.0/spl/include/linux/wait_compat.h @@ -0,0 +1,46 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2014 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_WAIT_COMPAT_H +#define _SPL_WAIT_COMPAT_H + +#include + +#ifndef HAVE_WAIT_ON_BIT_ACTION +# define spl_wait_on_bit(word, bit, mode) wait_on_bit(word, bit, mode) +#else + +static inline int +spl_bit_wait(void *word) +{ + schedule(); + return 0; +} + +#define spl_wait_on_bit(word, bit, mode) \ + wait_on_bit(word, bit, spl_bit_wait, mode) + +#endif /* HAVE_WAIT_ON_BIT_ACTION */ + +#endif /* SPL_WAIT_COMPAT_H */ --- linux-4.4.0.orig/spl/include/linux/zlib_compat.h +++ linux-4.4.0/spl/include/linux/zlib_compat.h @@ -0,0 +1,37 @@ +/*****************************************************************************\ + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ZLIB_COMPAT_H +#define _SPL_ZLIB_COMPAT_H + +#include + +#ifdef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE +#define spl_zlib_deflate_workspacesize(wb, ml) \ + zlib_deflate_workspacesize(wb, ml) +#else +#define spl_zlib_deflate_workspacesize(wb, ml) \ + zlib_deflate_workspacesize() +#endif /* HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE */ + +#endif /* SPL_ZLIB_COMPAT_H */ --- linux-4.4.0.orig/spl/include/rpc/Makefile.am +++ linux-4.4.0/spl/include/rpc/Makefile.am @@ -0,0 +1,14 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/rpc/types.h \ + $(top_srcdir)/include/rpc/xdr.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/rpc +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/rpc/Makefile.in +++ linux-4.4.0/spl/include/rpc/Makefile.in @@ -0,0 +1,622 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/rpc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/rpc/types.h \ + $(top_srcdir)/include/rpc/xdr.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/rpc/types.h \ + $(top_srcdir)/include/rpc/xdr.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/rpc +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/rpc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/rpc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/rpc/types.h +++ linux-4.4.0/spl/include/rpc/types.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RPC_TYPES_H +#define _SPL_RPC_TYPES_H + +typedef int bool_t; + +#endif /* SPL_RPC_TYPES_H */ --- linux-4.4.0.orig/spl/include/rpc/xdr.h +++ linux-4.4.0/spl/include/rpc/xdr.h @@ -0,0 +1,155 @@ +/*****************************************************************************\ + * Copyright (c) 2008 Sun Microsystems, Inc. + * Written by Ricardo Correia + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RPC_XDR_H +#define _SPL_RPC_XDR_H + +#include +#include + +/* + * XDR enums and types. + */ +enum xdr_op { + XDR_ENCODE, + XDR_DECODE +}; + +struct xdr_ops; + +typedef struct { + struct xdr_ops *x_ops; /* Also used to let caller know if + xdrmem_create() succeeds (sigh..) */ + caddr_t x_addr; /* Current buffer addr */ + caddr_t x_addr_end; /* End of the buffer */ + enum xdr_op x_op; /* Stream direction */ +} XDR; + +typedef bool_t (*xdrproc_t)(XDR *xdrs, void *ptr); + +struct xdr_ops { + bool_t (*xdr_control)(XDR *, int, void *); + + bool_t (*xdr_char)(XDR *, char *); + bool_t (*xdr_u_short)(XDR *, unsigned short *); + bool_t (*xdr_u_int)(XDR *, unsigned *); + bool_t (*xdr_u_longlong_t)(XDR *, u_longlong_t *); + + bool_t (*xdr_opaque)(XDR *, caddr_t, const uint_t); + bool_t (*xdr_string)(XDR *, char **, const uint_t); + bool_t (*xdr_array)(XDR *, caddr_t *, uint_t *, const uint_t, + const uint_t, const xdrproc_t); +}; + +/* + * XDR control operator. + */ +#define XDR_GET_BYTES_AVAIL 1 + +struct xdr_bytesrec { + bool_t xc_is_last_record; + size_t xc_num_avail; +}; + +/* + * XDR functions. + */ +void xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size, + const enum xdr_op op); +#define xdr_destroy(xdrs) ((void) 0) /* Currently not needed. If needed later, + we'll add it to struct xdr_ops */ + +#define xdr_control(xdrs, req, info) (xdrs)->x_ops->xdr_control((xdrs), \ + (req), (info)) + +/* + * For precaution, the following are defined as static inlines instead of macros + * to get some amount of type safety. + * + * Also, macros wouldn't work in the case where typecasting is done, because it + * must be possible to reference the functions' addresses by these names. + */ +static inline bool_t xdr_char(XDR *xdrs, char *cp) +{ + return xdrs->x_ops->xdr_char(xdrs, cp); +} + +static inline bool_t xdr_u_short(XDR *xdrs, unsigned short *usp) +{ + return xdrs->x_ops->xdr_u_short(xdrs, usp); +} + +static inline bool_t xdr_short(XDR *xdrs, short *sp) +{ + BUILD_BUG_ON(sizeof(short) != 2); + return xdrs->x_ops->xdr_u_short(xdrs, (unsigned short *) sp); +} + +static inline bool_t xdr_u_int(XDR *xdrs, unsigned *up) +{ + return xdrs->x_ops->xdr_u_int(xdrs, up); +} + +static inline bool_t xdr_int(XDR *xdrs, int *ip) +{ + BUILD_BUG_ON(sizeof(int) != 4); + return xdrs->x_ops->xdr_u_int(xdrs, (unsigned *) ip); +} + +static inline bool_t xdr_u_longlong_t(XDR *xdrs, u_longlong_t *ullp) +{ + return xdrs->x_ops->xdr_u_longlong_t(xdrs, ullp); +} + +static inline bool_t xdr_longlong_t(XDR *xdrs, longlong_t *llp) +{ + BUILD_BUG_ON(sizeof(longlong_t) != 8); + return xdrs->x_ops->xdr_u_longlong_t(xdrs, (u_longlong_t *) llp); +} + +/* + * Fixed-length opaque data. + */ +static inline bool_t xdr_opaque(XDR *xdrs, caddr_t cp, const uint_t cnt) +{ + return xdrs->x_ops->xdr_opaque(xdrs, cp, cnt); +} + +/* + * Variable-length string. + * The *sp buffer must have (maxsize + 1) bytes. + */ +static inline bool_t xdr_string(XDR *xdrs, char **sp, const uint_t maxsize) +{ + return xdrs->x_ops->xdr_string(xdrs, sp, maxsize); +} + +/* + * Variable-length arrays. + */ +static inline bool_t xdr_array(XDR *xdrs, caddr_t *arrp, uint_t *sizep, + const uint_t maxsize, const uint_t elsize, const xdrproc_t elproc) +{ + return xdrs->x_ops->xdr_array(xdrs, arrp, sizep, maxsize, elsize, + elproc); +} + +#endif /* SPL_RPC_XDR_H */ --- linux-4.4.0.orig/spl/include/sharefs/Makefile.am +++ linux-4.4.0/spl/include/sharefs/Makefile.am @@ -0,0 +1,13 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/sharefs/share.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/sharefs +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/sharefs/Makefile.in +++ linux-4.4.0/spl/include/sharefs/Makefile.in @@ -0,0 +1,620 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sharefs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sharefs/share.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/sharefs/share.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/sharefs +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sharefs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sharefs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/sharefs/share.h +++ linux-4.4.0/spl/include/sharefs/share.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SHARE_H +#define _SPL_SHARE_H + +#endif /* SPL_SHARE_H */ --- linux-4.4.0.orig/spl/include/spl-ctl.h +++ linux-4.4.0/spl/include/spl-ctl.h @@ -0,0 +1,45 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _DEBUG_CTL_H +#define _DEBUG_CTL_H + +/* + * Contains shared definitions which both the user space + * and kernel space portions of splat must agree on. + */ +typedef struct spl_debug_header { + int ph_len; + int ph_flags; + int ph_subsys; + int ph_mask; + int ph_cpu_id; + int ph_sec; + long ph_usec; + int ph_stack; + int ph_pid; + int ph_line_num; +} spl_debug_header_t; + +#endif /* _DEBUG_CTL_H */ --- linux-4.4.0.orig/spl/include/splat-ctl.h +++ linux-4.4.0/spl/include/splat-ctl.h @@ -0,0 +1,109 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPLAT_CTL_H +#define _SPLAT_CTL_H + +#include + +/* + * Contains shared definitions for both user space and kernel space. To + * ensure 32-bit/64-bit interoperability over ioctl()'s only types with + * fixed sizes can be used. + */ +#define SPLAT_NAME "splatctl" +#define SPLAT_DEV "/dev/splatctl" + +#define SPLAT_NAME_SIZE 20 +#define SPLAT_DESC_SIZE 60 + +typedef struct splat_user { + char name[SPLAT_NAME_SIZE]; /* Short name */ + char desc[SPLAT_DESC_SIZE]; /* Short description */ + __u32 id; /* Unique numeric id */ +} splat_user_t; + +#define SPLAT_CFG_MAGIC 0x15263748U +typedef struct splat_cfg { + __u32 cfg_magic; /* Unique magic */ + __u32 cfg_cmd; /* Configure command */ + __s32 cfg_arg1; /* Configure command arg 1 */ + __s32 cfg_rc1; /* Configure response 1 */ + union { + struct { + __u32 size; + splat_user_t descs[0]; + } splat_subsystems; + struct { + __u32 size; + splat_user_t descs[0]; + } splat_tests; + } cfg_data; +} splat_cfg_t; + +#define SPLAT_CMD_MAGIC 0x9daebfc0U +typedef struct splat_cmd { + __u32 cmd_magic; /* Unique magic */ + __u32 cmd_subsystem; /* Target subsystem */ + __u32 cmd_test; /* Subsystem test */ + __u32 cmd_data_size; /* Opaque data size */ + char cmd_data_str[0]; /* Opaque data region */ +} splat_cmd_t; + +/* Valid ioctls */ +#define SPLAT_CFG _IOWR('f', 101, splat_cfg_t) +#define SPLAT_CMD _IOWR('f', 102, splat_cmd_t) + +/* Valid configuration commands */ +#define SPLAT_CFG_BUFFER_CLEAR 0x001 /* Clear text buffer */ +#define SPLAT_CFG_BUFFER_SIZE 0x002 /* Resize text buffer */ +#define SPLAT_CFG_SUBSYSTEM_COUNT 0x101 /* Number of subsystem */ +#define SPLAT_CFG_SUBSYSTEM_LIST 0x102 /* List of N subsystems */ +#define SPLAT_CFG_TEST_COUNT 0x201 /* Number of tests */ +#define SPLAT_CFG_TEST_LIST 0x202 /* List of N tests */ + +/* + * Valid subsystem and test commands are defined in each subsystem as + * SPLAT_SUBSYSTEM_*. We do need to be careful to avoid collisions, the + * currently defined subsystems are as follows: + */ +#define SPLAT_SUBSYSTEM_KMEM 0x0100 +#define SPLAT_SUBSYSTEM_TASKQ 0x0200 +#define SPLAT_SUBSYSTEM_KRNG 0x0300 +#define SPLAT_SUBSYSTEM_MUTEX 0x0400 +#define SPLAT_SUBSYSTEM_CONDVAR 0x0500 +#define SPLAT_SUBSYSTEM_THREAD 0x0600 +#define SPLAT_SUBSYSTEM_RWLOCK 0x0700 +#define SPLAT_SUBSYSTEM_TIME 0x0800 +#define SPLAT_SUBSYSTEM_VNODE 0x0900 +#define SPLAT_SUBSYSTEM_KOBJ 0x0a00 +#define SPLAT_SUBSYSTEM_ATOMIC 0x0b00 +#define SPLAT_SUBSYSTEM_LIST 0x0c00 +#define SPLAT_SUBSYSTEM_GENERIC 0x0d00 +#define SPLAT_SUBSYSTEM_CRED 0x0e00 +#define SPLAT_SUBSYSTEM_ZLIB 0x0f00 +#define SPLAT_SUBSYSTEM_LINUX 0x1000 +#define SPLAT_SUBSYSTEM_UNKNOWN 0xff00 + +#endif /* _SPLAT_CTL_H */ --- linux-4.4.0.orig/spl/include/strings.h +++ linux-4.4.0/spl/include/strings.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_STRINGS_H +#define _SPL_STRINGS_H + +#endif /* SPL_STRINGS_H */ --- linux-4.4.0.orig/spl/include/sys/Makefile.am +++ linux-4.4.0/spl/include/sys/Makefile.am @@ -0,0 +1,113 @@ +SUBDIRS = fm fs sysevent + +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/sys/acl.h \ + $(top_srcdir)/include/sys/acl_impl.h \ + $(top_srcdir)/include/sys/atomic.h \ + $(top_srcdir)/include/sys/attr.h \ + $(top_srcdir)/include/sys/bitmap.h \ + $(top_srcdir)/include/sys/bootconf.h \ + $(top_srcdir)/include/sys/bootprops.h \ + $(top_srcdir)/include/sys/buf.h \ + $(top_srcdir)/include/sys/byteorder.h \ + $(top_srcdir)/include/sys/callb.h \ + $(top_srcdir)/include/sys/callo.h \ + $(top_srcdir)/include/sys/cmn_err.h \ + $(top_srcdir)/include/sys/compress.h \ + $(top_srcdir)/include/sys/condvar.h \ + $(top_srcdir)/include/sys/conf.h \ + $(top_srcdir)/include/sys/console.h \ + $(top_srcdir)/include/sys/cpupart.h \ + $(top_srcdir)/include/sys/cpuvar.h \ + $(top_srcdir)/include/sys/crc32.h \ + $(top_srcdir)/include/sys/cred.h \ + $(top_srcdir)/include/sys/ctype.h \ + $(top_srcdir)/include/sys/ddi.h \ + $(top_srcdir)/include/sys/debug.h \ + $(top_srcdir)/include/sys/dirent.h \ + $(top_srcdir)/include/sys/disp.h \ + $(top_srcdir)/include/sys/dkio.h \ + $(top_srcdir)/include/sys/dklabel.h \ + $(top_srcdir)/include/sys/dnlc.h \ + $(top_srcdir)/include/sys/dumphdr.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/errno.h \ + $(top_srcdir)/include/sys/extdirent.h \ + $(top_srcdir)/include/sys/fcntl.h \ + $(top_srcdir)/include/sys/file.h \ + $(top_srcdir)/include/sys/idmap.h \ + $(top_srcdir)/include/sys/int_limits.h \ + $(top_srcdir)/include/sys/int_types.h \ + $(top_srcdir)/include/sys/inttypes.h \ + $(top_srcdir)/include/sys/isa_defs.h \ + $(top_srcdir)/include/sys/kidmap.h \ + $(top_srcdir)/include/sys/kmem.h \ + $(top_srcdir)/include/sys/kmem_cache.h \ + $(top_srcdir)/include/sys/kobj.h \ + $(top_srcdir)/include/sys/kstat.h \ + $(top_srcdir)/include/sys/list.h \ + $(top_srcdir)/include/sys/mkdev.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/modctl.h \ + $(top_srcdir)/include/sys/mode.h \ + $(top_srcdir)/include/sys/mount.h \ + $(top_srcdir)/include/sys/mutex.h \ + $(top_srcdir)/include/sys/note.h \ + $(top_srcdir)/include/sys/open.h \ + $(top_srcdir)/include/sys/param.h \ + $(top_srcdir)/include/sys/pathname.h \ + $(top_srcdir)/include/sys/policy.h \ + $(top_srcdir)/include/sys/pool.h \ + $(top_srcdir)/include/sys/priv_impl.h \ + $(top_srcdir)/include/sys/processor.h \ + $(top_srcdir)/include/sys/proc.h \ + $(top_srcdir)/include/sys/pset.h \ + $(top_srcdir)/include/sys/random.h \ + $(top_srcdir)/include/sys/refstr.h \ + $(top_srcdir)/include/sys/resource.h \ + $(top_srcdir)/include/sys/rwlock.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/sid.h \ + $(top_srcdir)/include/sys/signal.h \ + $(top_srcdir)/include/sys/stat.h \ + $(top_srcdir)/include/sys/stropts.h \ + $(top_srcdir)/include/sys/sunddi.h \ + $(top_srcdir)/include/sys/sunldi.h \ + $(top_srcdir)/include/sys/sysdc.h \ + $(top_srcdir)/include/sys/sysevent.h \ + $(top_srcdir)/include/sys/sysmacros.h \ + $(top_srcdir)/include/sys/systeminfo.h \ + $(top_srcdir)/include/sys/systm.h \ + $(top_srcdir)/include/sys/taskq.h \ + $(top_srcdir)/include/sys/thread.h \ + $(top_srcdir)/include/sys/time.h \ + $(top_srcdir)/include/sys/timer.h \ + $(top_srcdir)/include/sys/t_lock.h \ + $(top_srcdir)/include/sys/tsd.h \ + $(top_srcdir)/include/sys/types32.h \ + $(top_srcdir)/include/sys/types.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uio.h \ + $(top_srcdir)/include/sys/unistd.h \ + $(top_srcdir)/include/sys/user.h \ + $(top_srcdir)/include/sys/va_list.h \ + $(top_srcdir)/include/sys/varargs.h \ + $(top_srcdir)/include/sys/vfs.h \ + $(top_srcdir)/include/sys/vfs_opreg.h \ + $(top_srcdir)/include/sys/vmem.h \ + $(top_srcdir)/include/sys/vmsystm.h \ + $(top_srcdir)/include/sys/vnode.h \ + $(top_srcdir)/include/sys/zmod.h \ + $(top_srcdir)/include/sys/zone.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/sys +kernel_HEADERS = $(KERNEL_H) +endif + --- linux-4.4.0.orig/spl/include/sys/Makefile.in +++ linux-4.4.0/spl/include/sys/Makefile.in @@ -0,0 +1,931 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/acl.h \ + $(top_srcdir)/include/sys/acl_impl.h \ + $(top_srcdir)/include/sys/atomic.h \ + $(top_srcdir)/include/sys/attr.h \ + $(top_srcdir)/include/sys/bitmap.h \ + $(top_srcdir)/include/sys/bootconf.h \ + $(top_srcdir)/include/sys/bootprops.h \ + $(top_srcdir)/include/sys/buf.h \ + $(top_srcdir)/include/sys/byteorder.h \ + $(top_srcdir)/include/sys/callb.h \ + $(top_srcdir)/include/sys/callo.h \ + $(top_srcdir)/include/sys/cmn_err.h \ + $(top_srcdir)/include/sys/compress.h \ + $(top_srcdir)/include/sys/condvar.h \ + $(top_srcdir)/include/sys/conf.h \ + $(top_srcdir)/include/sys/console.h \ + $(top_srcdir)/include/sys/cpupart.h \ + $(top_srcdir)/include/sys/cpuvar.h \ + $(top_srcdir)/include/sys/crc32.h \ + $(top_srcdir)/include/sys/cred.h \ + $(top_srcdir)/include/sys/ctype.h \ + $(top_srcdir)/include/sys/ddi.h \ + $(top_srcdir)/include/sys/debug.h \ + $(top_srcdir)/include/sys/dirent.h \ + $(top_srcdir)/include/sys/disp.h \ + $(top_srcdir)/include/sys/dkio.h \ + $(top_srcdir)/include/sys/dklabel.h \ + $(top_srcdir)/include/sys/dnlc.h \ + $(top_srcdir)/include/sys/dumphdr.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/errno.h \ + $(top_srcdir)/include/sys/extdirent.h \ + $(top_srcdir)/include/sys/fcntl.h \ + $(top_srcdir)/include/sys/file.h \ + $(top_srcdir)/include/sys/idmap.h \ + $(top_srcdir)/include/sys/int_limits.h \ + $(top_srcdir)/include/sys/int_types.h \ + $(top_srcdir)/include/sys/inttypes.h \ + $(top_srcdir)/include/sys/isa_defs.h \ + $(top_srcdir)/include/sys/kidmap.h \ + $(top_srcdir)/include/sys/kmem.h \ + $(top_srcdir)/include/sys/kmem_cache.h \ + $(top_srcdir)/include/sys/kobj.h \ + $(top_srcdir)/include/sys/kstat.h \ + $(top_srcdir)/include/sys/list.h \ + $(top_srcdir)/include/sys/mkdev.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/modctl.h \ + $(top_srcdir)/include/sys/mode.h \ + $(top_srcdir)/include/sys/mount.h \ + $(top_srcdir)/include/sys/mutex.h \ + $(top_srcdir)/include/sys/note.h \ + $(top_srcdir)/include/sys/open.h \ + $(top_srcdir)/include/sys/param.h \ + $(top_srcdir)/include/sys/pathname.h \ + $(top_srcdir)/include/sys/policy.h \ + $(top_srcdir)/include/sys/pool.h \ + $(top_srcdir)/include/sys/priv_impl.h \ + $(top_srcdir)/include/sys/processor.h \ + $(top_srcdir)/include/sys/proc.h \ + $(top_srcdir)/include/sys/pset.h \ + $(top_srcdir)/include/sys/random.h \ + $(top_srcdir)/include/sys/refstr.h \ + $(top_srcdir)/include/sys/resource.h \ + $(top_srcdir)/include/sys/rwlock.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/sid.h \ + $(top_srcdir)/include/sys/signal.h \ + $(top_srcdir)/include/sys/stat.h \ + $(top_srcdir)/include/sys/stropts.h \ + $(top_srcdir)/include/sys/sunddi.h \ + $(top_srcdir)/include/sys/sunldi.h \ + $(top_srcdir)/include/sys/sysdc.h \ + $(top_srcdir)/include/sys/sysevent.h \ + $(top_srcdir)/include/sys/sysmacros.h \ + $(top_srcdir)/include/sys/systeminfo.h \ + $(top_srcdir)/include/sys/systm.h \ + $(top_srcdir)/include/sys/taskq.h \ + $(top_srcdir)/include/sys/thread.h \ + $(top_srcdir)/include/sys/time.h \ + $(top_srcdir)/include/sys/timer.h \ + $(top_srcdir)/include/sys/t_lock.h \ + $(top_srcdir)/include/sys/tsd.h \ + $(top_srcdir)/include/sys/types32.h \ + $(top_srcdir)/include/sys/types.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uio.h \ + $(top_srcdir)/include/sys/unistd.h \ + $(top_srcdir)/include/sys/user.h \ + $(top_srcdir)/include/sys/va_list.h \ + $(top_srcdir)/include/sys/varargs.h \ + $(top_srcdir)/include/sys/vfs.h \ + $(top_srcdir)/include/sys/vfs_opreg.h \ + $(top_srcdir)/include/sys/vmem.h \ + $(top_srcdir)/include/sys/vmsystm.h \ + $(top_srcdir)/include/sys/vnode.h \ + $(top_srcdir)/include/sys/zmod.h \ + $(top_srcdir)/include/sys/zone.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = fm fs sysevent +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/sys/acl.h \ + $(top_srcdir)/include/sys/acl_impl.h \ + $(top_srcdir)/include/sys/atomic.h \ + $(top_srcdir)/include/sys/attr.h \ + $(top_srcdir)/include/sys/bitmap.h \ + $(top_srcdir)/include/sys/bootconf.h \ + $(top_srcdir)/include/sys/bootprops.h \ + $(top_srcdir)/include/sys/buf.h \ + $(top_srcdir)/include/sys/byteorder.h \ + $(top_srcdir)/include/sys/callb.h \ + $(top_srcdir)/include/sys/callo.h \ + $(top_srcdir)/include/sys/cmn_err.h \ + $(top_srcdir)/include/sys/compress.h \ + $(top_srcdir)/include/sys/condvar.h \ + $(top_srcdir)/include/sys/conf.h \ + $(top_srcdir)/include/sys/console.h \ + $(top_srcdir)/include/sys/cpupart.h \ + $(top_srcdir)/include/sys/cpuvar.h \ + $(top_srcdir)/include/sys/crc32.h \ + $(top_srcdir)/include/sys/cred.h \ + $(top_srcdir)/include/sys/ctype.h \ + $(top_srcdir)/include/sys/ddi.h \ + $(top_srcdir)/include/sys/debug.h \ + $(top_srcdir)/include/sys/dirent.h \ + $(top_srcdir)/include/sys/disp.h \ + $(top_srcdir)/include/sys/dkio.h \ + $(top_srcdir)/include/sys/dklabel.h \ + $(top_srcdir)/include/sys/dnlc.h \ + $(top_srcdir)/include/sys/dumphdr.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/errno.h \ + $(top_srcdir)/include/sys/extdirent.h \ + $(top_srcdir)/include/sys/fcntl.h \ + $(top_srcdir)/include/sys/file.h \ + $(top_srcdir)/include/sys/idmap.h \ + $(top_srcdir)/include/sys/int_limits.h \ + $(top_srcdir)/include/sys/int_types.h \ + $(top_srcdir)/include/sys/inttypes.h \ + $(top_srcdir)/include/sys/isa_defs.h \ + $(top_srcdir)/include/sys/kidmap.h \ + $(top_srcdir)/include/sys/kmem.h \ + $(top_srcdir)/include/sys/kmem_cache.h \ + $(top_srcdir)/include/sys/kobj.h \ + $(top_srcdir)/include/sys/kstat.h \ + $(top_srcdir)/include/sys/list.h \ + $(top_srcdir)/include/sys/mkdev.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/modctl.h \ + $(top_srcdir)/include/sys/mode.h \ + $(top_srcdir)/include/sys/mount.h \ + $(top_srcdir)/include/sys/mutex.h \ + $(top_srcdir)/include/sys/note.h \ + $(top_srcdir)/include/sys/open.h \ + $(top_srcdir)/include/sys/param.h \ + $(top_srcdir)/include/sys/pathname.h \ + $(top_srcdir)/include/sys/policy.h \ + $(top_srcdir)/include/sys/pool.h \ + $(top_srcdir)/include/sys/priv_impl.h \ + $(top_srcdir)/include/sys/processor.h \ + $(top_srcdir)/include/sys/proc.h \ + $(top_srcdir)/include/sys/pset.h \ + $(top_srcdir)/include/sys/random.h \ + $(top_srcdir)/include/sys/refstr.h \ + $(top_srcdir)/include/sys/resource.h \ + $(top_srcdir)/include/sys/rwlock.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/sid.h \ + $(top_srcdir)/include/sys/signal.h \ + $(top_srcdir)/include/sys/stat.h \ + $(top_srcdir)/include/sys/stropts.h \ + $(top_srcdir)/include/sys/sunddi.h \ + $(top_srcdir)/include/sys/sunldi.h \ + $(top_srcdir)/include/sys/sysdc.h \ + $(top_srcdir)/include/sys/sysevent.h \ + $(top_srcdir)/include/sys/sysmacros.h \ + $(top_srcdir)/include/sys/systeminfo.h \ + $(top_srcdir)/include/sys/systm.h \ + $(top_srcdir)/include/sys/taskq.h \ + $(top_srcdir)/include/sys/thread.h \ + $(top_srcdir)/include/sys/time.h \ + $(top_srcdir)/include/sys/timer.h \ + $(top_srcdir)/include/sys/t_lock.h \ + $(top_srcdir)/include/sys/tsd.h \ + $(top_srcdir)/include/sys/types32.h \ + $(top_srcdir)/include/sys/types.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uio.h \ + $(top_srcdir)/include/sys/unistd.h \ + $(top_srcdir)/include/sys/user.h \ + $(top_srcdir)/include/sys/va_list.h \ + $(top_srcdir)/include/sys/varargs.h \ + $(top_srcdir)/include/sys/vfs.h \ + $(top_srcdir)/include/sys/vfs_opreg.h \ + $(top_srcdir)/include/sys/vmem.h \ + $(top_srcdir)/include/sys/vmsystm.h \ + $(top_srcdir)/include/sys/vnode.h \ + $(top_srcdir)/include/sys/zmod.h \ + $(top_srcdir)/include/sys/zone.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/sys +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-kernelHEADERS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/sys/acl.h +++ linux-4.4.0/spl/include/sys/acl.h @@ -0,0 +1,117 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ACL_H +#define _SPL_ACL_H + +#include + +typedef struct ace { + uid_t a_who; + uint32_t a_access_mask; + uint16_t a_flags; + uint16_t a_type; +} ace_t; + +typedef struct ace_object { + uid_t a_who; /* uid or gid */ + uint32_t a_access_mask; /* read,write,... */ + uint16_t a_flags; /* see below */ + uint16_t a_type; /* allow or deny */ + uint8_t a_obj_type[16]; /* obj type */ + uint8_t a_inherit_obj_type[16]; /* inherit obj */ +} ace_object_t; + +#define MAX_ACL_ENTRIES 1024 + +#define ACE_READ_DATA 0x00000001 +#define ACE_LIST_DIRECTORY 0x00000001 +#define ACE_WRITE_DATA 0x00000002 +#define ACE_ADD_FILE 0x00000002 +#define ACE_APPEND_DATA 0x00000004 +#define ACE_ADD_SUBDIRECTORY 0x00000004 +#define ACE_READ_NAMED_ATTRS 0x00000008 +#define ACE_WRITE_NAMED_ATTRS 0x00000010 +#define ACE_EXECUTE 0x00000020 +#define ACE_DELETE_CHILD 0x00000040 +#define ACE_READ_ATTRIBUTES 0x00000080 +#define ACE_WRITE_ATTRIBUTES 0x00000100 +#define ACE_DELETE 0x00010000 +#define ACE_READ_ACL 0x00020000 +#define ACE_WRITE_ACL 0x00040000 +#define ACE_WRITE_OWNER 0x00080000 +#define ACE_SYNCHRONIZE 0x00100000 + +#define ACE_FILE_INHERIT_ACE 0x0001 +#define ACE_DIRECTORY_INHERIT_ACE 0x0002 +#define ACE_NO_PROPAGATE_INHERIT_ACE 0x0004 +#define ACE_INHERIT_ONLY_ACE 0x0008 +#define ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x0010 +#define ACE_FAILED_ACCESS_ACE_FLAG 0x0020 +#define ACE_IDENTIFIER_GROUP 0x0040 +#define ACE_INHERITED_ACE 0x0080 +#define ACE_OWNER 0x1000 +#define ACE_GROUP 0x2000 +#define ACE_EVERYONE 0x4000 + +#define ACE_ACCESS_ALLOWED_ACE_TYPE 0x0000 +#define ACE_ACCESS_DENIED_ACE_TYPE 0x0001 +#define ACE_SYSTEM_AUDIT_ACE_TYPE 0x0002 +#define ACE_SYSTEM_ALARM_ACE_TYPE 0x0003 + +#define ACL_AUTO_INHERIT 0x0001 +#define ACL_PROTECTED 0x0002 +#define ACL_DEFAULTED 0x0004 +#define ACL_FLAGS_ALL (ACL_AUTO_INHERIT|ACL_PROTECTED|ACL_DEFAULTED) + +#define ACE_ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x04 +#define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05 +#define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06 +#define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07 +#define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08 +#define ACE_ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x09 +#define ACE_ACCESS_DENIED_CALLBACK_ACE_TYPE 0x0A +#define ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0x0B +#define ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0x0C +#define ACE_SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0x0D +#define ACE_SYSTEM_ALARM_CALLBACK_ACE_TYPE 0x0E +#define ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0x0F +#define ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10 + +#define ACE_ALL_TYPES 0x001F + +#define ACE_TYPE_FLAGS (ACE_OWNER|ACE_GROUP|ACE_EVERYONE|ACE_IDENTIFIER_GROUP) + +#define ACE_ALL_PERMS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \ + ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_READ_NAMED_ATTRS| \ + ACE_WRITE_NAMED_ATTRS|ACE_EXECUTE|ACE_DELETE_CHILD|ACE_READ_ATTRIBUTES| \ + ACE_WRITE_ATTRIBUTES|ACE_DELETE|ACE_READ_ACL|ACE_WRITE_ACL| \ + ACE_WRITE_OWNER|ACE_SYNCHRONIZE) + +#define VSA_ACE 0x0010 +#define VSA_ACECNT 0x0020 +#define VSA_ACE_ALLTYPES 0x0040 +#define VSA_ACE_ACLFLAGS 0x0080 + +#endif /* _SPL_ACL_H */ --- linux-4.4.0.orig/spl/include/sys/acl_impl.h +++ linux-4.4.0/spl/include/sys/acl_impl.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ACL_IMPL_H +#define _SPL_ACL_IMPL_H + +#endif /* _SPL_ACL_IMPL_H */ --- linux-4.4.0.orig/spl/include/sys/atomic.h +++ linux-4.4.0/spl/include/sys/atomic.h @@ -0,0 +1,315 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ATOMIC_H +#define _SPL_ATOMIC_H + +#include +#include +#include + +/* + * Two approaches to atomic operations are implemented each with its + * own benefits are drawbacks imposed by the Solaris API. Neither + * approach handles the issue of word breaking when using a 64-bit + * atomic variable on a 32-bit arch. The Solaris API would need to + * add an atomic read call to correctly support this. + * + * When ATOMIC_SPINLOCK is defined all atomic operations will be + * serialized through global spin locks. This is bad for performance + * but it does allow a simple generic implementation. + * + * When ATOMIC_SPINLOCK is not defined the Linux atomic operations + * are used. This is safe as long as the core Linux implementation + * doesn't change because we are relying on the fact that an atomic + * type is really just a uint32 or uint64. If this changes at some + * point in the future we need to fall-back to the spin approach. + */ +#ifdef ATOMIC_SPINLOCK +extern spinlock_t atomic32_lock; +extern spinlock_t atomic64_lock; + +static __inline__ void +atomic_inc_32(volatile uint32_t *target) +{ + spin_lock(&atomic32_lock); + (*target)++; + spin_unlock(&atomic32_lock); +} + +static __inline__ void +atomic_dec_32(volatile uint32_t *target) +{ + spin_lock(&atomic32_lock); + (*target)--; + spin_unlock(&atomic32_lock); +} + +static __inline__ void +atomic_add_32(volatile uint32_t *target, int32_t delta) +{ + spin_lock(&atomic32_lock); + *target += delta; + spin_unlock(&atomic32_lock); +} + +static __inline__ void +atomic_sub_32(volatile uint32_t *target, int32_t delta) +{ + spin_lock(&atomic32_lock); + *target -= delta; + spin_unlock(&atomic32_lock); +} + +static __inline__ uint32_t +atomic_inc_32_nv(volatile uint32_t *target) +{ + uint32_t nv; + + spin_lock(&atomic32_lock); + nv = ++(*target); + spin_unlock(&atomic32_lock); + + return nv; +} + +static __inline__ uint32_t +atomic_dec_32_nv(volatile uint32_t *target) +{ + uint32_t nv; + + spin_lock(&atomic32_lock); + nv = --(*target); + spin_unlock(&atomic32_lock); + + return nv; +} + +static __inline__ uint32_t +atomic_add_32_nv(volatile uint32_t *target, uint32_t delta) +{ + uint32_t nv; + + spin_lock(&atomic32_lock); + *target += delta; + nv = *target; + spin_unlock(&atomic32_lock); + + return nv; +} + +static __inline__ uint32_t +atomic_sub_32_nv(volatile uint32_t *target, uint32_t delta) +{ + uint32_t nv; + + spin_lock(&atomic32_lock); + *target -= delta; + nv = *target; + spin_unlock(&atomic32_lock); + + return nv; +} + +static __inline__ uint32_t +atomic_cas_32(volatile uint32_t *target, uint32_t cmp, + uint32_t newval) +{ + uint32_t rc; + + spin_lock(&atomic32_lock); + rc = *target; + if (*target == cmp) + *target = newval; + + spin_unlock(&atomic32_lock); + + return rc; +} + +static __inline__ uint32_t +atomic_swap_32(volatile uint32_t *target, uint32_t newval) +{ + uint32_t rc; + + spin_lock(&atomic32_lock); + rc = *target; + *target = newval; + spin_unlock(&atomic32_lock); + + return rc; +} + +static __inline__ void +atomic_inc_64(volatile uint64_t *target) +{ + spin_lock(&atomic64_lock); + (*target)++; + spin_unlock(&atomic64_lock); +} + +static __inline__ void +atomic_dec_64(volatile uint64_t *target) +{ + spin_lock(&atomic64_lock); + (*target)--; + spin_unlock(&atomic64_lock); +} + +static __inline__ void +atomic_add_64(volatile uint64_t *target, uint64_t delta) +{ + spin_lock(&atomic64_lock); + *target += delta; + spin_unlock(&atomic64_lock); +} + +static __inline__ void +atomic_sub_64(volatile uint64_t *target, uint64_t delta) +{ + spin_lock(&atomic64_lock); + *target -= delta; + spin_unlock(&atomic64_lock); +} + +static __inline__ uint64_t +atomic_inc_64_nv(volatile uint64_t *target) +{ + uint64_t nv; + + spin_lock(&atomic64_lock); + nv = ++(*target); + spin_unlock(&atomic64_lock); + + return nv; +} + +static __inline__ uint64_t +atomic_dec_64_nv(volatile uint64_t *target) +{ + uint64_t nv; + + spin_lock(&atomic64_lock); + nv = --(*target); + spin_unlock(&atomic64_lock); + + return nv; +} + +static __inline__ uint64_t +atomic_add_64_nv(volatile uint64_t *target, uint64_t delta) +{ + uint64_t nv; + + spin_lock(&atomic64_lock); + *target += delta; + nv = *target; + spin_unlock(&atomic64_lock); + + return nv; +} + +static __inline__ uint64_t +atomic_sub_64_nv(volatile uint64_t *target, uint64_t delta) +{ + uint64_t nv; + + spin_lock(&atomic64_lock); + *target -= delta; + nv = *target; + spin_unlock(&atomic64_lock); + + return nv; +} + +static __inline__ uint64_t +atomic_cas_64(volatile uint64_t *target, uint64_t cmp, + uint64_t newval) +{ + uint64_t rc; + + spin_lock(&atomic64_lock); + rc = *target; + if (*target == cmp) + *target = newval; + spin_unlock(&atomic64_lock); + + return rc; +} + +static __inline__ uint64_t +atomic_swap_64(volatile uint64_t *target, uint64_t newval) +{ + uint64_t rc; + + spin_lock(&atomic64_lock); + rc = *target; + *target = newval; + spin_unlock(&atomic64_lock); + + return rc; +} + +#else /* ATOMIC_SPINLOCK */ + +#define atomic_inc_32(v) atomic_inc((atomic_t *)(v)) +#define atomic_dec_32(v) atomic_dec((atomic_t *)(v)) +#define atomic_add_32(v, i) atomic_add((i), (atomic_t *)(v)) +#define atomic_sub_32(v, i) atomic_sub((i), (atomic_t *)(v)) +#define atomic_inc_32_nv(v) atomic_inc_return((atomic_t *)(v)) +#define atomic_dec_32_nv(v) atomic_dec_return((atomic_t *)(v)) +#define atomic_add_32_nv(v, i) atomic_add_return((i), (atomic_t *)(v)) +#define atomic_sub_32_nv(v, i) atomic_sub_return((i), (atomic_t *)(v)) +#define atomic_cas_32(v, x, y) atomic_cmpxchg((atomic_t *)(v), x, y) +#define atomic_swap_32(v, x) atomic_xchg((atomic_t *)(v), x) +#define atomic_inc_64(v) atomic64_inc((atomic64_t *)(v)) +#define atomic_dec_64(v) atomic64_dec((atomic64_t *)(v)) +#define atomic_add_64(v, i) atomic64_add((i), (atomic64_t *)(v)) +#define atomic_sub_64(v, i) atomic64_sub((i), (atomic64_t *)(v)) +#define atomic_inc_64_nv(v) atomic64_inc_return((atomic64_t *)(v)) +#define atomic_dec_64_nv(v) atomic64_dec_return((atomic64_t *)(v)) +#define atomic_add_64_nv(v, i) atomic64_add_return((i), (atomic64_t *)(v)) +#define atomic_sub_64_nv(v, i) atomic64_sub_return((i), (atomic64_t *)(v)) +#define atomic_cas_64(v, x, y) atomic64_cmpxchg((atomic64_t *)(v), x, y) +#define atomic_swap_64(v, x) atomic64_xchg((atomic64_t *)(v), x) + +#endif /* ATOMIC_SPINLOCK */ + +#ifdef _LP64 +static __inline__ void * +atomic_cas_ptr(volatile void *target, void *cmp, void *newval) +{ + return (void *)atomic_cas_64((volatile uint64_t *)target, + (uint64_t)cmp, (uint64_t)newval); +} +#else /* _LP64 */ +static __inline__ void * +atomic_cas_ptr(volatile void *target, void *cmp, void *newval) +{ + return (void *)atomic_cas_32((volatile uint32_t *)target, + (uint32_t)cmp, (uint32_t)newval); +} +#endif /* _LP64 */ + +#endif /* _SPL_ATOMIC_H */ --- linux-4.4.0.orig/spl/include/sys/attr.h +++ linux-4.4.0/spl/include/sys/attr.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ATTR_H +#define _SPL_ATTR_H + +#endif /* SPL_ATTR_H */ --- linux-4.4.0.orig/spl/include/sys/bitmap.h +++ linux-4.4.0/spl/include/sys/bitmap.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BITMAP_H +#define _SPL_BITMAP_H + +#endif /* SPL_BITMAP_H */ --- linux-4.4.0.orig/spl/include/sys/bootconf.h +++ linux-4.4.0/spl/include/sys/bootconf.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BOOTCONF_H +#define _SPL_BOOTCONF_H + +#endif /* SPL_BOOTCONF_H */ --- linux-4.4.0.orig/spl/include/sys/bootprops.h +++ linux-4.4.0/spl/include/sys/bootprops.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BOOTPROPS_H +#define _SPL_BOOTPROPS_H + +#endif /* SPL_BOOTPROPS_H */ --- linux-4.4.0.orig/spl/include/sys/buf.h +++ linux-4.4.0/spl/include/sys/buf.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BUF_H +#define _SPL_BUF_H + +#endif /* SPL_BUF_H */ --- linux-4.4.0.orig/spl/include/sys/byteorder.h +++ linux-4.4.0/spl/include/sys/byteorder.h @@ -0,0 +1,46 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_BYTEORDER_H +#define _SPL_BYTEORDER_H + +#include + +#define LE_16(x) cpu_to_le16(x) +#define LE_32(x) cpu_to_le32(x) +#define LE_64(x) cpu_to_le64(x) +#define BE_16(x) cpu_to_be16(x) +#define BE_32(x) cpu_to_be32(x) +#define BE_64(x) cpu_to_be64(x) + +#define BE_IN8(xa) \ + *((uint8_t *)(xa)) + +#define BE_IN16(xa) \ + (((uint16_t)BE_IN8(xa) << 8) | BE_IN8((uint8_t *)(xa)+1)) + +#define BE_IN32(xa) \ + (((uint32_t)BE_IN16(xa) << 16) | BE_IN16((uint8_t *)(xa)+2)) + +#endif /* SPL_BYTEORDER_H */ --- linux-4.4.0.orig/spl/include/sys/callb.h +++ linux-4.4.0/spl/include/sys/callb.h @@ -0,0 +1,55 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CALLB_H +#define _SPL_CALLB_H + +#include +#include + +#define CALLB_CPR_ASSERT(cp) ASSERT(MUTEX_HELD((cp)->cc_lockp)); + +typedef struct callb_cpr { + kmutex_t *cc_lockp; +} callb_cpr_t; + +#define CALLB_CPR_INIT(cp, lockp, func, name) { \ + (cp)->cc_lockp = lockp; \ +} + +#define CALLB_CPR_SAFE_BEGIN(cp) { \ + CALLB_CPR_ASSERT(cp); \ +} + +#define CALLB_CPR_SAFE_END(cp, lockp) { \ + CALLB_CPR_ASSERT(cp); \ +} + +#define CALLB_CPR_EXIT(cp) { \ + ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ + mutex_exit((cp)->cc_lockp); \ +} + +#endif /* _SPL_CALLB_H */ + --- linux-4.4.0.orig/spl/include/sys/callo.h +++ linux-4.4.0/spl/include/sys/callo.h @@ -0,0 +1,52 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CALLO_H +#define _SPL_CALLO_H + +/* + * Callout flags: + * + * CALLOUT_FLAG_ROUNDUP + * Roundup the expiration time to the next resolution boundary. + * If this flag is not specified, the expiration time is rounded down. + * CALLOUT_FLAG_ABSOLUTE + * Normally, the expiration passed to the timeout API functions is an + * expiration interval. If this flag is specified, then it is + * interpreted as the expiration time itself. + * CALLOUT_FLAG_HRESTIME + * Normally, callouts are not affected by changes to system time + * (hrestime). This flag is used to create a callout that is affected + * by system time. If system time changes, these timers must be + * handled in a special way (see callout.c). These are used by condition + * variables and LWP timers that need this behavior. + * CALLOUT_FLAG_32BIT + * Legacy interfaces timeout() and realtime_timeout() pass this flag + * to timeout_generic() to indicate that a 32-bit ID should be allocated. + */ +#define CALLOUT_FLAG_ROUNDUP 0x1 +#define CALLOUT_FLAG_ABSOLUTE 0x2 +#define CALLOUT_FLAG_HRESTIME 0x4 +#define CALLOUT_FLAG_32BIT 0x8 + +#endif /* _SPL_CALLB_H */ --- linux-4.4.0.orig/spl/include/sys/cmn_err.h +++ linux-4.4.0/spl/include/sys/cmn_err.h @@ -0,0 +1,42 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CMN_ERR_H +#define _SPL_CMN_ERR_H + +#include + +#define CE_CONT 0 /* continuation */ +#define CE_NOTE 1 /* notice */ +#define CE_WARN 2 /* warning */ +#define CE_PANIC 3 /* panic */ +#define CE_IGNORE 4 /* print nothing */ + +extern void cmn_err(int, const char *, ...); +extern void vcmn_err(int, const char *, __va_list); +extern void vpanic(const char *, __va_list); + +#define fm_panic panic + +#endif /* SPL_CMN_ERR_H */ --- linux-4.4.0.orig/spl/include/sys/compress.h +++ linux-4.4.0/spl/include/sys/compress.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_COMPRESS_H +#define _SPL_COMPRESS_H + +#endif /* SPL_COMPRESS_H */ --- linux-4.4.0.orig/spl/include/sys/condvar.h +++ linux-4.4.0/spl/include/sys/condvar.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#ifndef _SPL_CONDVAR_H +#define _SPL_CONDVAR_H + +#include +#include +#include +#include +#include +#include + +/* + * The kcondvar_t struct is protected by mutex taken externally before + * calling any of the wait/signal funs, and passed into the wait funs. + */ +#define CV_MAGIC 0x346545f4 +#define CV_DESTROY 0x346545f5 + +typedef struct { + int cv_magic; + wait_queue_head_t cv_event; + wait_queue_head_t cv_destroy; + atomic_t cv_refs; + atomic_t cv_waiters; + kmutex_t *cv_mutex; +} kcondvar_t; + +typedef enum { CV_DEFAULT = 0, CV_DRIVER } kcv_type_t; + +extern void __cv_init(kcondvar_t *, char *, kcv_type_t, void *); +extern void __cv_destroy(kcondvar_t *); +extern void __cv_wait(kcondvar_t *, kmutex_t *); +extern void __cv_wait_io(kcondvar_t *, kmutex_t *); +extern void __cv_wait_sig(kcondvar_t *, kmutex_t *); +extern clock_t __cv_timedwait(kcondvar_t *, kmutex_t *, clock_t); +extern clock_t __cv_timedwait_sig(kcondvar_t *, kmutex_t *, clock_t); +extern clock_t cv_timedwait_hires(kcondvar_t *, kmutex_t *, hrtime_t, + hrtime_t res, int flag); +extern void __cv_signal(kcondvar_t *); +extern void __cv_broadcast(kcondvar_t *c); + +#define cv_init(cvp, name, type, arg) __cv_init(cvp, name, type, arg) +#define cv_destroy(cvp) __cv_destroy(cvp) +#define cv_wait(cvp, mp) __cv_wait(cvp, mp) +#define cv_wait_io(cvp, mp) __cv_wait_io(cvp, mp) +#define cv_wait_sig(cvp, mp) __cv_wait_sig(cvp, mp) +#define cv_wait_interruptible(cvp, mp) cv_wait_sig(cvp, mp) +#define cv_timedwait(cvp, mp, t) __cv_timedwait(cvp, mp, t) +#define cv_timedwait_sig(cvp, mp, t) __cv_timedwait_sig(cvp, mp, t) +#define cv_timedwait_interruptible(cvp, mp, t) cv_timedwait_sig(cvp, mp, t) +#define cv_signal(cvp) __cv_signal(cvp) +#define cv_broadcast(cvp) __cv_broadcast(cvp) + +#endif /* _SPL_CONDVAR_H */ --- linux-4.4.0.orig/spl/include/sys/conf.h +++ linux-4.4.0/spl/include/sys/conf.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CONF_H +#define _SPL_CONF_H + +#endif /* SPL_CONF_H */ --- linux-4.4.0.orig/spl/include/sys/console.h +++ linux-4.4.0/spl/include/sys/console.h @@ -0,0 +1,44 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CONSOLE_H +#define _SPL_CONSOLE_H + +void +console_vprintf(const char *fmt, va_list args) +{ + vprintk(fmt, args); +} + +void +console_printf(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + console_vprintf(fmt, args); + va_end(args); +} + +#endif /* _SPL_CONSOLE_H */ --- linux-4.4.0.orig/spl/include/sys/cpupart.h +++ linux-4.4.0/spl/include/sys/cpupart.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CPUPART_H +#define _SPL_CPUPART_H + +#endif /* SPL_CPUPART_H */ --- linux-4.4.0.orig/spl/include/sys/cpuvar.h +++ linux-4.4.0/spl/include/sys/cpuvar.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CPUVAR_H +#define _SPL_CPUVAR_H + +#endif /* SPL_CPUVAR_H */ --- linux-4.4.0.orig/spl/include/sys/crc32.h +++ linux-4.4.0/spl/include/sys/crc32.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CRC32_H +#define _SPL_CRC32_H + +#endif /* SPL_CRC32_H */ --- linux-4.4.0.orig/spl/include/sys/cred.h +++ linux-4.4.0/spl/include/sys/cred.h @@ -0,0 +1,81 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CRED_H +#define _SPL_CRED_H + +#include +#include +#include + +typedef struct cred cred_t; + +#define kcred ((cred_t *)(init_task.cred)) +#define CRED() ((cred_t *)current_cred()) + +#ifdef HAVE_KUIDGID_T + +/* + * Linux 3.8+ uses typedefs to redefine uid_t and gid_t. We have to rename the + * typedefs to recover the original types. We then can use them provided that + * we are careful about translating from k{g,u}id_t to the original versions + * and vice versa. + */ +#define uid_t xuid_t +#define gid_t xgid_t +#include +#undef uid_t +#undef gid_t + +#define KUID_TO_SUID(x) (__kuid_val(x)) +#define KGID_TO_SGID(x) (__kgid_val(x)) +#define SUID_TO_KUID(x) (KUIDT_INIT(x)) +#define SGID_TO_KGID(x) (KGIDT_INIT(x)) +#define KGIDP_TO_SGIDP(x) (&(x)->val) + +#else /* HAVE_KUIDGID_T */ + +#define KUID_TO_SUID(x) (x) +#define KGID_TO_SGID(x) (x) +#define SUID_TO_KUID(x) (x) +#define SGID_TO_KGID(x) (x) +#define KGIDP_TO_SGIDP(x) (x) + +#endif /* HAVE_KUIDGID_T */ + +extern void crhold(cred_t *cr); +extern void crfree(cred_t *cr); +extern uid_t crgetuid(const cred_t *cr); +extern uid_t crgetruid(const cred_t *cr); +extern uid_t crgetsuid(const cred_t *cr); +extern uid_t crgetfsuid(const cred_t *cr); +extern gid_t crgetgid(const cred_t *cr); +extern gid_t crgetrgid(const cred_t *cr); +extern gid_t crgetsgid(const cred_t *cr); +extern gid_t crgetfsgid(const cred_t *cr); +extern int crgetngroups(const cred_t *cr); +extern gid_t * crgetgroups(const cred_t *cr); +extern int groupmember(gid_t gid, const cred_t *cr); + +#endif /* _SPL_CRED_H */ --- linux-4.4.0.orig/spl/include/sys/ctype.h +++ linux-4.4.0/spl/include/sys/ctype.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_CTYPE_H +#define _SPL_CTYPE_H + +#include + +#endif /* SPL_CTYPE_H */ --- linux-4.4.0.orig/spl/include/sys/ddi.h +++ linux-4.4.0/spl/include/sys/ddi.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DDI_H +#define _SPL_DDI_H + +#endif /* SPL_DDI_H */ --- linux-4.4.0.orig/spl/include/sys/debug.h +++ linux-4.4.0/spl/include/sys/debug.h @@ -0,0 +1,121 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +/* + * Available Solaris debug functions. All of the ASSERT() macros will be + * compiled out when NDEBUG is defined, this is the default behavior for + * the SPL. To enable assertions use the --enable-debug with configure. + * The VERIFY() functions are never compiled out and cannot be disabled. + * + * PANIC() - Panic the node and print message. + * ASSERT() - Assert X is true, if not panic. + * ASSERTV() - Wraps a variable declaration which is only used by ASSERT(). + * ASSERT3S() - Assert signed X OP Y is true, if not panic. + * ASSERT3U() - Assert unsigned X OP Y is true, if not panic. + * ASSERT3P() - Assert pointer X OP Y is true, if not panic. + * ASSERT0() - Assert value is zero, if not panic. + * VERIFY() - Verify X is true, if not panic. + * VERIFY3S() - Verify signed X OP Y is true, if not panic. + * VERIFY3U() - Verify unsigned X OP Y is true, if not panic. + * VERIFY3P() - Verify pointer X OP Y is true, if not panic. + * VERIFY0() - Verify value is zero, if not panic. + */ + +#ifndef _SPL_DEBUG_H +#define _SPL_DEBUG_H + +/* + * Common DEBUG functionality. + */ +int spl_panic(const char *file, const char *func, int line, + const char *fmt, ...); +void spl_dumpstack(void); + +#define PANIC(fmt, a...) \ + spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a) + +#define VERIFY(cond) \ + (void)(unlikely(!(cond)) && \ + spl_panic(__FILE__, __FUNCTION__, __LINE__, \ + "%s", "VERIFY(" #cond ") failed\n")) + +#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST) \ + (void)((!((TYPE)(LEFT) OP (TYPE)(RIGHT))) && \ + spl_panic(__FILE__, __FUNCTION__, __LINE__, \ + "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \ + "failed (" FMT " " #OP " " FMT ")\n", \ + CAST (LEFT), CAST (RIGHT))) + +#define VERIFY3S(x,y,z) VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long)) +#define VERIFY3U(x,y,z) VERIFY3_IMPL(x, y, z, uint64_t, "%llu", \ + (unsigned long long)) +#define VERIFY3P(x,y,z) VERIFY3_IMPL(x, y, z, uintptr_t, "%p", (void *)) +#define VERIFY0(x) VERIFY3_IMPL(0, ==, x, int64_t, "%lld", (long long)) + +#define CTASSERT_GLOBAL(x) _CTASSERT(x, __LINE__) +#define CTASSERT(x) { _CTASSERT(x, __LINE__); } +#define _CTASSERT(x, y) __CTASSERT(x, y) +#define __CTASSERT(x, y) \ + typedef char __attribute__ ((unused)) \ + __compile_time_assertion__ ## y[(x) ? 1 : -1] + +/* + * Debugging disabled (--disable-debug) + */ +#ifdef NDEBUG + +#define SPL_DEBUG_STR "" +#define ASSERT(x) ((void)0) +#define ASSERTV(x) +#define ASSERT3S(x,y,z) ((void)0) +#define ASSERT3U(x,y,z) ((void)0) +#define ASSERT3P(x,y,z) ((void)0) +#define ASSERT0(x) ((void)0) +#define IMPLY(A, B) ((void)0) +#define EQUIV(A, B) ((void)0) + +/* + * Debugging enabled (--enable-debug) + */ +#else + +#define SPL_DEBUG_STR " (DEBUG mode)" +#define ASSERT(cond) VERIFY(cond) +#define ASSERTV(x) x +#define ASSERT3S(x,y,z) VERIFY3S(x, y, z) +#define ASSERT3U(x,y,z) VERIFY3U(x, y, z) +#define ASSERT3P(x,y,z) VERIFY3P(x, y, z) +#define ASSERT0(x) VERIFY0(x) +#define IMPLY(A, B) \ + ((void)(((!(A)) || (B)) || \ + spl_panic(__FILE__, __FUNCTION__, __LINE__, \ + "(" #A ") implies (" #B ")"))) +#define EQUIV(A, B) \ + ((void)((!!(A) == !!(B)) || \ + spl_panic(__FILE__, __FUNCTION__, __LINE__, \ + "(" #A ") is equivalent to (" #B ")"))) + +#endif /* NDEBUG */ + +#endif /* SPL_DEBUG_H */ --- linux-4.4.0.orig/spl/include/sys/dirent.h +++ linux-4.4.0/spl/include/sys/dirent.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DIRENT_H +#define _SPL_DIRENT_H + +#endif /* SPL_DIRENT_H */ --- linux-4.4.0.orig/spl/include/sys/disp.h +++ linux-4.4.0/spl/include/sys/disp.h @@ -0,0 +1,34 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DISP_H +#define _SPL_DISP_H + +#include + +#define kpreempt(unused) schedule() +#define kpreempt_disable() preempt_disable() +#define kpreempt_enable() preempt_enable() + +#endif /* SPL_DISP_H */ --- linux-4.4.0.orig/spl/include/sys/dkio.h +++ linux-4.4.0/spl/include/sys/dkio.h @@ -0,0 +1,38 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DKIO_H +#define _SPL_DKIO_H + +struct dk_callback { + void (*dkc_callback)(void *dkc_cookie, int error); + void *dkc_cookie; + int dkc_flag; +}; + +#define DKIOC (0x04 << 8) +#define DKIOCFLUSHWRITECACHE (DKIOC | 34) +#define DKIOCTRIM (DKIOC | 35) + +#endif /* _SPL_DKIO_H */ --- linux-4.4.0.orig/spl/include/sys/dklabel.h +++ linux-4.4.0/spl/include/sys/dklabel.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DKLABEL_H +#define _SPL_DKLABEL_H + +#endif /* _SPL_DKLABEL_H */ --- linux-4.4.0.orig/spl/include/sys/dnlc.h +++ linux-4.4.0/spl/include/sys/dnlc.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DNLC_H +#define _SPL_DNLC_H + +#endif /* SPL_DNLC_H */ --- linux-4.4.0.orig/spl/include/sys/dumphdr.h +++ linux-4.4.0/spl/include/sys/dumphdr.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_DUMPHDR_H +#define _SPL_DUMPHDR_H + +#endif /* SPL_DUMPHDR_H */ --- linux-4.4.0.orig/spl/include/sys/efi_partition.h +++ linux-4.4.0/spl/include/sys/efi_partition.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_EFI_PARTITION_H +#define _SPL_EFI_PARTITION_H + +#endif /* SPL_EFI_PARTITION_H */ --- linux-4.4.0.orig/spl/include/sys/errno.h +++ linux-4.4.0/spl/include/sys/errno.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ERRNO_H +#define _SPL_ERRNO_H + +#endif /* SPL_ERRNO_H */ --- linux-4.4.0.orig/spl/include/sys/extdirent.h +++ linux-4.4.0/spl/include/sys/extdirent.h @@ -0,0 +1,29 @@ +/*****************************************************************************\ + * Copyright (C) 2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_EXTDIRENT_H +#define _SPL_EXTDIRENT_H + +#define ED_CASE_CONFLICT 0x10 + +#endif /* _SPL_EXTDIRENT_H */ --- linux-4.4.0.orig/spl/include/sys/fcntl.h +++ linux-4.4.0/spl/include/sys/fcntl.h @@ -0,0 +1,37 @@ +/*****************************************************************************\ + * Copyright (C) 2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FCNTL_H +#define _SPL_FCNTL_H + +#include + +#define F_FREESP 11 + +#ifdef CONFIG_64BIT +typedef struct flock flock64_t; +#else +typedef struct flock64 flock64_t; +#endif /* CONFIG_64BIT */ + +#endif /* _SPL_FCNTL_H */ --- linux-4.4.0.orig/spl/include/sys/file.h +++ linux-4.4.0/spl/include/sys/file.h @@ -0,0 +1,31 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FILE_H +#define _SPL_FILE_H + +#define FIGNORECASE 0x00080000 +#define FKIOCTL 0x80000000 + +#endif /* SPL_FILE_H */ --- linux-4.4.0.orig/spl/include/sys/fm/Makefile.am +++ linux-4.4.0/spl/include/sys/fm/Makefile.am @@ -0,0 +1,14 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fm +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/sys/fm/Makefile.in +++ linux-4.4.0/spl/include/sys/fm/Makefile.in @@ -0,0 +1,622 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/fm +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fm +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/fm/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/sys/fm/protocol.h +++ linux-4.4.0/spl/include/sys/fm/protocol.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FM_PROTOCOL_H +#define _SPL_FM_PROTOCOL_H + +#endif /* _SPL_FM_PROTOCOL_H */ --- linux-4.4.0.orig/spl/include/sys/fm/util.h +++ linux-4.4.0/spl/include/sys/fm/util.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_FM_UTIL_H +#define _SPL_FM_UTIL_H + +#endif /* _SPL_FM_UTIL_H */ --- linux-4.4.0.orig/spl/include/sys/fs/Makefile.am +++ linux-4.4.0/spl/include/sys/fs/Makefile.am @@ -0,0 +1,13 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/sys/fs/swapnode.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fs +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/sys/fs/Makefile.in +++ linux-4.4.0/spl/include/sys/fs/Makefile.in @@ -0,0 +1,620 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/fs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fs/swapnode.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/sys/fs/swapnode.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fs +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/fs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/sys/fs/swapnode.h +++ linux-4.4.0/spl/include/sys/fs/swapnode.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SWAPNODE_H +#define _SPL_SWAPNODE_H + +#endif /* SPL_SWAPNODE_H */ --- linux-4.4.0.orig/spl/include/sys/idmap.h +++ linux-4.4.0/spl/include/sys/idmap.h @@ -0,0 +1,29 @@ +/*****************************************************************************\ + * Copyright (C) 2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_IDMAP_H +#define _SPL_IDMAP_H + +#define IDMAP_WK_CREATOR_OWNER_UID 2147483648U + +#endif /* SPL_IDMAP_H */ --- linux-4.4.0.orig/spl/include/sys/int_limits.h +++ linux-4.4.0/spl/include/sys/int_limits.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_INT_LIMITS_H +#define _SPL_INT_LIMITS_H + +#endif /* SPL_INT_LIMITS_H */ --- linux-4.4.0.orig/spl/include/sys/int_types.h +++ linux-4.4.0/spl/include/sys/int_types.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_INT_TYPES_H +#define _SPL_INT_TYPES_H + +#include + +#endif /* SPL_INT_TYPES_H */ --- linux-4.4.0.orig/spl/include/sys/inttypes.h +++ linux-4.4.0/spl/include/sys/inttypes.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_INTTYPES_H +#define _SPL_INTTYPES_H + +#endif /* SPL_INTTYPES_H */ --- linux-4.4.0.orig/spl/include/sys/isa_defs.h +++ linux-4.4.0/spl/include/sys/isa_defs.h @@ -0,0 +1,164 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ISA_DEFS_H +#define _SPL_ISA_DEFS_H + +/* x86_64 arch specific defines */ +#if defined(__x86_64) || defined(__x86_64__) + +#if !defined(__x86_64) +#define __x86_64 +#endif + +#if !defined(__amd64) +#define __amd64 +#endif + +#if !defined(__x86) +#define __x86 +#endif + +#if !defined(_LP64) +#define _LP64 +#endif + +/* i386 arch specific defines */ +#elif defined(__i386) || defined(__i386__) + +#if !defined(__i386) +#define __i386 +#endif + +#if !defined(__x86) +#define __x86 +#endif + +#if !defined(_ILP32) +#define _ILP32 +#endif + +/* powerpc (ppc64) arch specific defines */ +#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) + +#if !defined(__powerpc) +#define __powerpc +#endif + +#if !defined(__powerpc__) +#define __powerpc__ +#endif + +#if defined(__powerpc64__) +#if !defined(_LP64) +#define _LP64 +#endif +#else +#if !defined(_ILP32) +#define _ILP32 +#endif +#endif + +/* arm arch specific defines */ +#elif defined(__arm) || defined(__arm__) || defined(__aarch64__) + +#if !defined(__arm) +#define __arm +#endif + +#if !defined(__arm__) +#define __arm__ +#endif + +#if defined(__aarch64__) +#if !defined(_LP64) +#define _LP64 +#endif +#else +#if !defined(_ILP32) +#define _ILP32 +#endif +#endif + +#if defined(__ARMEL__) || defined(__AARCH64EL__) +#define _LITTLE_ENDIAN +#else +#define _BIG_ENDIAN +#endif + +/* sparc arch specific defines */ +#elif defined(__sparc) || defined(__sparc__) + +#if !defined(__sparc) +#define __sparc +#endif + +#if !defined(__sparc__) +#define __sparc__ +#endif + +#if defined(__arch64__) +#if !defined(_LP64) +#define _LP64 +#endif +#else +#if !defined(_ILP32) +#define _ILP32 +#endif +#endif + +#define _BIG_ENDIAN +#define _SUNOS_VTOC_16 + +#else /* Currently x86_64, i386, arm, powerpc, and sparc are supported */ +#error "Unsupported ISA type" +#endif + +#if defined(_ILP32) && defined(_LP64) +#error "Both _ILP32 and _LP64 are defined" +#endif + +#if !defined(_ILP32) && !defined(_LP64) +#error "Neither _ILP32 or _LP64 are defined" +#endif + +#include + +#if defined(__LITTLE_ENDIAN) && !defined(_LITTLE_ENDIAN) +#define _LITTLE_ENDIAN __LITTLE_ENDIAN +#endif + +#if defined(__BIG_ENDIAN) && !defined(_BIG_ENDIAN) +#define _BIG_ENDIAN __BIG_ENDIAN +#endif + +#if defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN) +#error "Both _LITTLE_ENDIAN and _BIG_ENDIAN are defined" +#endif + +#if !defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) +#error "Neither _LITTLE_ENDIAN or _BIG_ENDIAN are defined" +#endif + +#endif /* _SPL_ISA_DEFS_H */ --- linux-4.4.0.orig/spl/include/sys/kidmap.h +++ linux-4.4.0/spl/include/sys/kidmap.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_KIDMAP_H +#define _SPL_KIDMAP_H + +#include + +#endif /* SPL_KIDMAP_H */ --- linux-4.4.0.orig/spl/include/sys/kmem.h +++ linux-4.4.0/spl/include/sys/kmem.h @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#ifndef _SPL_KMEM_H +#define _SPL_KMEM_H + +#include +#include +#include + +extern int kmem_debugging(void); +extern char *kmem_vasprintf(const char *fmt, va_list ap); +extern char *kmem_asprintf(const char *fmt, ...); +extern char *strdup(const char *str); +extern void strfree(char *str); + +/* + * Memory allocation interfaces + */ +#define KM_SLEEP 0x0000 /* can block for memory; success guaranteed */ +#define KM_NOSLEEP 0x0001 /* cannot block for memory; may fail */ +#define KM_PUSHPAGE 0x0004 /* can block for memory; may use reserve */ +#define KM_ZERO 0x1000 /* zero the allocation */ +#define KM_VMEM 0x2000 /* caller is vmem_* wrapper */ + +#define KM_PUBLIC_MASK (KM_SLEEP | KM_NOSLEEP | KM_PUSHPAGE) + +/* + * Convert a KM_* flags mask to its Linux GFP_* counterpart. The conversion + * function is context aware which means that KM_SLEEP allocations can be + * safely used in syncing contexts which have set PF_FSTRANS. + */ +static inline gfp_t +kmem_flags_convert(int flags) +{ + gfp_t lflags = __GFP_NOWARN | __GFP_COMP; + + if (flags & KM_NOSLEEP) { + lflags |= GFP_ATOMIC | __GFP_NORETRY; + } else { + lflags |= GFP_KERNEL; + if ((current->flags & PF_FSTRANS)) + lflags &= ~(__GFP_IO|__GFP_FS); + } + + if (flags & KM_PUSHPAGE) + lflags |= __GFP_HIGH; + + if (flags & KM_ZERO) + lflags |= __GFP_ZERO; + + return (lflags); +} + +typedef struct { + struct task_struct *fstrans_thread; + unsigned int saved_flags; +} fstrans_cookie_t; + +static inline fstrans_cookie_t +spl_fstrans_mark(void) +{ + fstrans_cookie_t cookie; + + cookie.fstrans_thread = current; + cookie.saved_flags = current->flags & PF_FSTRANS; + current->flags |= PF_FSTRANS; + + return (cookie); +} + +static inline void +spl_fstrans_unmark(fstrans_cookie_t cookie) +{ + ASSERT3P(cookie.fstrans_thread, ==, current); + ASSERT(current->flags & PF_FSTRANS); + + current->flags &= ~(PF_FSTRANS); + current->flags |= cookie.saved_flags; +} + +static inline int +spl_fstrans_check(void) +{ + return (current->flags & PF_FSTRANS); +} + +#ifdef HAVE_ATOMIC64_T +#define kmem_alloc_used_add(size) atomic64_add(size, &kmem_alloc_used) +#define kmem_alloc_used_sub(size) atomic64_sub(size, &kmem_alloc_used) +#define kmem_alloc_used_read() atomic64_read(&kmem_alloc_used) +#define kmem_alloc_used_set(size) atomic64_set(&kmem_alloc_used, size) +extern atomic64_t kmem_alloc_used; +extern unsigned long long kmem_alloc_max; +#else /* HAVE_ATOMIC64_T */ +#define kmem_alloc_used_add(size) atomic_add(size, &kmem_alloc_used) +#define kmem_alloc_used_sub(size) atomic_sub(size, &kmem_alloc_used) +#define kmem_alloc_used_read() atomic_read(&kmem_alloc_used) +#define kmem_alloc_used_set(size) atomic_set(&kmem_alloc_used, size) +extern atomic_t kmem_alloc_used; +extern unsigned long long kmem_alloc_max; +#endif /* HAVE_ATOMIC64_T */ + +extern unsigned int spl_kmem_alloc_warn; +extern unsigned int spl_kmem_alloc_max; + +#define kmem_alloc(sz, fl) spl_kmem_alloc((sz), (fl), __func__, __LINE__) +#define kmem_zalloc(sz, fl) spl_kmem_zalloc((sz), (fl), __func__, __LINE__) +#define kmem_free(ptr, sz) spl_kmem_free((ptr), (sz)) + +extern void *spl_kmem_alloc(size_t sz, int fl, const char *func, int line); +extern void *spl_kmem_zalloc(size_t sz, int fl, const char *func, int line); +extern void spl_kmem_free(const void *ptr, size_t sz); + +/* + * The following functions are only available for internal use. + */ +extern void *spl_kmem_alloc_impl(size_t size, int flags, int node); +extern void *spl_kmem_alloc_debug(size_t size, int flags, int node); +extern void *spl_kmem_alloc_track(size_t size, int flags, + const char *func, int line, int node); +extern void spl_kmem_free_impl(const void *buf, size_t size); +extern void spl_kmem_free_debug(const void *buf, size_t size); +extern void spl_kmem_free_track(const void *buf, size_t size); + +extern int spl_kmem_init(void); +extern void spl_kmem_fini(void); + +#endif /* _SPL_KMEM_H */ --- linux-4.4.0.orig/spl/include/sys/kmem_cache.h +++ linux-4.4.0/spl/include/sys/kmem_cache.h @@ -0,0 +1,240 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#ifndef _SPL_KMEM_CACHE_H +#define _SPL_KMEM_CACHE_H + +#include + +/* + * Slab allocation interfaces. The SPL slab differs from the standard + * Linux SLAB or SLUB primarily in that each cache may be backed by slabs + * allocated from the physical or virtal memory address space. The virtual + * slabs allow for good behavior when allocation large objects of identical + * size. This slab implementation also supports both constructors and + * destructors which the Linux slab does not. + */ +enum { + KMC_BIT_NOTOUCH = 0, /* Don't update ages */ + KMC_BIT_NODEBUG = 1, /* Default behavior */ + KMC_BIT_NOMAGAZINE = 2, /* XXX: Unsupported */ + KMC_BIT_NOHASH = 3, /* XXX: Unsupported */ + KMC_BIT_QCACHE = 4, /* XXX: Unsupported */ + KMC_BIT_KMEM = 5, /* Use kmem cache */ + KMC_BIT_VMEM = 6, /* Use vmem cache */ + KMC_BIT_SLAB = 7, /* Use Linux slab cache */ + KMC_BIT_OFFSLAB = 8, /* Objects not on slab */ + KMC_BIT_NOEMERGENCY = 9, /* Disable emergency objects */ + KMC_BIT_DEADLOCKED = 14, /* Deadlock detected */ + KMC_BIT_GROWING = 15, /* Growing in progress */ + KMC_BIT_REAPING = 16, /* Reaping in progress */ + KMC_BIT_DESTROY = 17, /* Destroy in progress */ + KMC_BIT_TOTAL = 18, /* Proc handler helper bit */ + KMC_BIT_ALLOC = 19, /* Proc handler helper bit */ + KMC_BIT_MAX = 20, /* Proc handler helper bit */ +}; + +/* kmem move callback return values */ +typedef enum kmem_cbrc { + KMEM_CBRC_YES = 0, /* Object moved */ + KMEM_CBRC_NO = 1, /* Object not moved */ + KMEM_CBRC_LATER = 2, /* Object not moved, try again later */ + KMEM_CBRC_DONT_NEED = 3, /* Neither object is needed */ + KMEM_CBRC_DONT_KNOW = 4, /* Object unknown */ +} kmem_cbrc_t; + +#define KMC_NOTOUCH (1 << KMC_BIT_NOTOUCH) +#define KMC_NODEBUG (1 << KMC_BIT_NODEBUG) +#define KMC_NOMAGAZINE (1 << KMC_BIT_NOMAGAZINE) +#define KMC_NOHASH (1 << KMC_BIT_NOHASH) +#define KMC_QCACHE (1 << KMC_BIT_QCACHE) +#define KMC_KMEM (1 << KMC_BIT_KMEM) +#define KMC_VMEM (1 << KMC_BIT_VMEM) +#define KMC_SLAB (1 << KMC_BIT_SLAB) +#define KMC_OFFSLAB (1 << KMC_BIT_OFFSLAB) +#define KMC_NOEMERGENCY (1 << KMC_BIT_NOEMERGENCY) +#define KMC_DEADLOCKED (1 << KMC_BIT_DEADLOCKED) +#define KMC_GROWING (1 << KMC_BIT_GROWING) +#define KMC_REAPING (1 << KMC_BIT_REAPING) +#define KMC_DESTROY (1 << KMC_BIT_DESTROY) +#define KMC_TOTAL (1 << KMC_BIT_TOTAL) +#define KMC_ALLOC (1 << KMC_BIT_ALLOC) +#define KMC_MAX (1 << KMC_BIT_MAX) + +#define KMC_REAP_CHUNK INT_MAX +#define KMC_DEFAULT_SEEKS 1 + +#define KMC_EXPIRE_AGE 0x1 /* Due to age */ +#define KMC_EXPIRE_MEM 0x2 /* Due to low memory */ + +#define KMC_RECLAIM_ONCE 0x1 /* Force a single shrinker pass */ + +extern unsigned int spl_kmem_cache_expire; +extern struct list_head spl_kmem_cache_list; +extern struct rw_semaphore spl_kmem_cache_sem; + +#define SKM_MAGIC 0x2e2e2e2e +#define SKO_MAGIC 0x20202020 +#define SKS_MAGIC 0x22222222 +#define SKC_MAGIC 0x2c2c2c2c + +#define SPL_KMEM_CACHE_DELAY 15 /* Minimum slab release age */ +#define SPL_KMEM_CACHE_REAP 0 /* Default reap everything */ +#define SPL_KMEM_CACHE_OBJ_PER_SLAB 8 /* Target objects per slab */ +#define SPL_KMEM_CACHE_OBJ_PER_SLAB_MIN 1 /* Minimum objects per slab */ +#define SPL_KMEM_CACHE_ALIGN 8 /* Default object alignment */ +#ifdef _LP64 +#define SPL_KMEM_CACHE_MAX_SIZE 32 /* Max slab size in MB */ +#else +#define SPL_KMEM_CACHE_MAX_SIZE 4 /* Max slab size in MB */ +#endif + +#define SPL_MAX_ORDER (MAX_ORDER - 3) +#define SPL_MAX_ORDER_NR_PAGES (1 << (SPL_MAX_ORDER - 1)) + +#ifdef CONFIG_SLUB +#define SPL_MAX_KMEM_CACHE_ORDER PAGE_ALLOC_COSTLY_ORDER +#define SPL_MAX_KMEM_ORDER_NR_PAGES (1 << (SPL_MAX_KMEM_CACHE_ORDER - 1)) +#else +#define SPL_MAX_KMEM_ORDER_NR_PAGES (KMALLOC_MAX_SIZE >> PAGE_SHIFT) +#endif + +#define POINTER_IS_VALID(p) 0 /* Unimplemented */ +#define POINTER_INVALIDATE(pp) /* Unimplemented */ + +typedef int (*spl_kmem_ctor_t)(void *, void *, int); +typedef void (*spl_kmem_dtor_t)(void *, void *); +typedef void (*spl_kmem_reclaim_t)(void *); + +typedef struct spl_kmem_magazine { + uint32_t skm_magic; /* Sanity magic */ + uint32_t skm_avail; /* Available objects */ + uint32_t skm_size; /* Magazine size */ + uint32_t skm_refill; /* Batch refill size */ + struct spl_kmem_cache *skm_cache; /* Owned by cache */ + unsigned long skm_age; /* Last cache access */ + unsigned int skm_cpu; /* Owned by cpu */ + void *skm_objs[0]; /* Object pointers */ +} spl_kmem_magazine_t; + +typedef struct spl_kmem_obj { + uint32_t sko_magic; /* Sanity magic */ + void *sko_addr; /* Buffer address */ + struct spl_kmem_slab *sko_slab; /* Owned by slab */ + struct list_head sko_list; /* Free object list linkage */ +} spl_kmem_obj_t; + +typedef struct spl_kmem_slab { + uint32_t sks_magic; /* Sanity magic */ + uint32_t sks_objs; /* Objects per slab */ + struct spl_kmem_cache *sks_cache; /* Owned by cache */ + struct list_head sks_list; /* Slab list linkage */ + struct list_head sks_free_list; /* Free object list */ + unsigned long sks_age; /* Last modify jiffie */ + uint32_t sks_ref; /* Ref count used objects */ +} spl_kmem_slab_t; + +typedef struct spl_kmem_alloc { + struct spl_kmem_cache *ska_cache; /* Owned by cache */ + int ska_flags; /* Allocation flags */ + taskq_ent_t ska_tqe; /* Task queue entry */ +} spl_kmem_alloc_t; + +typedef struct spl_kmem_emergency { + struct rb_node ske_node; /* Emergency tree linkage */ + unsigned long ske_obj; /* Buffer address */ +} spl_kmem_emergency_t; + +typedef struct spl_kmem_cache { + uint32_t skc_magic; /* Sanity magic */ + uint32_t skc_name_size; /* Name length */ + char *skc_name; /* Name string */ + spl_kmem_magazine_t **skc_mag; /* Per-CPU warm cache */ + uint32_t skc_mag_size; /* Magazine size */ + uint32_t skc_mag_refill; /* Magazine refill count */ + spl_kmem_ctor_t skc_ctor; /* Constructor */ + spl_kmem_dtor_t skc_dtor; /* Destructor */ + spl_kmem_reclaim_t skc_reclaim; /* Reclaimator */ + void *skc_private; /* Private data */ + void *skc_vmp; /* Unused */ + struct kmem_cache *skc_linux_cache; /* Linux slab cache if used */ + unsigned long skc_flags; /* Flags */ + uint32_t skc_obj_size; /* Object size */ + uint32_t skc_obj_align; /* Object alignment */ + uint32_t skc_slab_objs; /* Objects per slab */ + uint32_t skc_slab_size; /* Slab size */ + uint32_t skc_delay; /* Slab reclaim interval */ + uint32_t skc_reap; /* Slab reclaim count */ + atomic_t skc_ref; /* Ref count callers */ + taskqid_t skc_taskqid; /* Slab reclaim task */ + struct list_head skc_list; /* List of caches linkage */ + struct list_head skc_complete_list; /* Completely alloc'ed */ + struct list_head skc_partial_list; /* Partially alloc'ed */ + struct rb_root skc_emergency_tree; /* Min sized objects */ + spinlock_t skc_lock; /* Cache lock */ + wait_queue_head_t skc_waitq; /* Allocation waiters */ + uint64_t skc_slab_fail; /* Slab alloc failures */ + uint64_t skc_slab_create; /* Slab creates */ + uint64_t skc_slab_destroy; /* Slab destroys */ + uint64_t skc_slab_total; /* Slab total current */ + uint64_t skc_slab_alloc; /* Slab alloc current */ + uint64_t skc_slab_max; /* Slab max historic */ + uint64_t skc_obj_total; /* Obj total current */ + uint64_t skc_obj_alloc; /* Obj alloc current */ + uint64_t skc_obj_max; /* Obj max historic */ + uint64_t skc_obj_deadlock; /* Obj emergency deadlocks */ + uint64_t skc_obj_emergency; /* Obj emergency current */ + uint64_t skc_obj_emergency_max; /* Obj emergency max */ +} spl_kmem_cache_t; +#define kmem_cache_t spl_kmem_cache_t + +extern spl_kmem_cache_t *spl_kmem_cache_create(char *name, size_t size, + size_t align, spl_kmem_ctor_t ctor, spl_kmem_dtor_t dtor, + spl_kmem_reclaim_t reclaim, void *priv, void *vmp, int flags); +extern void spl_kmem_cache_set_move(spl_kmem_cache_t *, + kmem_cbrc_t (*)(void *, void *, size_t, void *)); +extern void spl_kmem_cache_destroy(spl_kmem_cache_t *skc); +extern void *spl_kmem_cache_alloc(spl_kmem_cache_t *skc, int flags); +extern void spl_kmem_cache_free(spl_kmem_cache_t *skc, void *obj); +extern void spl_kmem_cache_set_allocflags(spl_kmem_cache_t *skc, gfp_t flags); +extern void spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count); +extern void spl_kmem_reap(void); + +#define kmem_cache_create(name, size, align, ctor, dtor, rclm, priv, vmp, fl) \ + spl_kmem_cache_create(name, size, align, ctor, dtor, rclm, priv, vmp, fl) +#define kmem_cache_set_move(skc, move) spl_kmem_cache_set_move(skc, move) +#define kmem_cache_destroy(skc) spl_kmem_cache_destroy(skc) +#define kmem_cache_alloc(skc, flags) spl_kmem_cache_alloc(skc, flags) +#define kmem_cache_free(skc, obj) spl_kmem_cache_free(skc, obj) +#define kmem_cache_reap_now(skc) \ + spl_kmem_cache_reap_now(skc, skc->skc_reap) +#define kmem_reap() spl_kmem_reap() + +/* + * The following functions are only available for internal use. + */ +extern int spl_kmem_cache_init(void); +extern void spl_kmem_cache_fini(void); + +#endif /* _SPL_KMEM_CACHE_H */ --- linux-4.4.0.orig/spl/include/sys/kobj.h +++ linux-4.4.0/spl/include/sys/kobj.h @@ -0,0 +1,42 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_KOBJ_H +#define _SPL_KOBJ_H + +#include + +typedef struct _buf { + vnode_t *vp; +} _buf_t; + +typedef struct _buf buf_t; + +extern struct _buf *kobj_open_file(const char *name); +extern void kobj_close_file(struct _buf *file); +extern int kobj_read_file(struct _buf *file, char *buf, + ssize_t size, offset_t off); +extern int kobj_get_filesize(struct _buf *file, uint64_t *size); + +#endif /* SPL_KOBJ_H */ --- linux-4.4.0.orig/spl/include/sys/kstat.h +++ linux-4.4.0/spl/include/sys/kstat.h @@ -0,0 +1,202 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_KSTAT_H +#define _SPL_KSTAT_H + +#include +#include +#include +#include +#include +#include + +#define KSTAT_STRLEN 31 +#define KSTAT_RAW_MAX (128*1024) + +/* For reference valid classes are: + * disk, tape, net, controller, vm, kvm, hat, streams, kstat, misc + */ + +#define KSTAT_TYPE_RAW 0 /* can be anything; ks_ndata >= 1 */ +#define KSTAT_TYPE_NAMED 1 /* name/value pair; ks_ndata >= 1 */ +#define KSTAT_TYPE_INTR 2 /* interrupt stats; ks_ndata == 1 */ +#define KSTAT_TYPE_IO 3 /* I/O stats; ks_ndata == 1 */ +#define KSTAT_TYPE_TIMER 4 /* event timer; ks_ndata >= 1 */ +#define KSTAT_NUM_TYPES 5 + +#define KSTAT_DATA_CHAR 0 +#define KSTAT_DATA_INT32 1 +#define KSTAT_DATA_UINT32 2 +#define KSTAT_DATA_INT64 3 +#define KSTAT_DATA_UINT64 4 +#define KSTAT_DATA_LONG 5 +#define KSTAT_DATA_ULONG 6 +#define KSTAT_DATA_STRING 7 +#define KSTAT_NUM_DATAS 8 + +#define KSTAT_INTR_HARD 0 +#define KSTAT_INTR_SOFT 1 +#define KSTAT_INTR_WATCHDOG 2 +#define KSTAT_INTR_SPURIOUS 3 +#define KSTAT_INTR_MULTSVC 4 +#define KSTAT_NUM_INTRS 5 + +#define KSTAT_FLAG_VIRTUAL 0x01 +#define KSTAT_FLAG_VAR_SIZE 0x02 +#define KSTAT_FLAG_WRITABLE 0x04 +#define KSTAT_FLAG_PERSISTENT 0x08 +#define KSTAT_FLAG_DORMANT 0x10 +#define KSTAT_FLAG_UNSUPPORTED (KSTAT_FLAG_VAR_SIZE | KSTAT_FLAG_WRITABLE | \ + KSTAT_FLAG_PERSISTENT | KSTAT_FLAG_DORMANT) + + +#define KS_MAGIC 0x9d9d9d9d + +/* Dynamic updates */ +#define KSTAT_READ 0 +#define KSTAT_WRITE 1 + +struct kstat_s; +typedef struct kstat_s kstat_t; + +typedef int kid_t; /* unique kstat id */ +typedef int kstat_update_t(struct kstat_s *, int); /* dynamic update cb */ + +typedef struct kstat_module { + char ksm_name[KSTAT_STRLEN+1]; /* module name */ + struct list_head ksm_module_list; /* module linkage */ + struct list_head ksm_kstat_list; /* list of kstat entries */ + struct proc_dir_entry *ksm_proc; /* proc entry */ +} kstat_module_t; + +typedef struct kstat_raw_ops { + int (*headers)(char *buf, size_t size); + int (*data)(char *buf, size_t size, void *data); + void *(*addr)(kstat_t *ksp, loff_t index); +} kstat_raw_ops_t; + +struct kstat_s { + int ks_magic; /* magic value */ + kid_t ks_kid; /* unique kstat ID */ + hrtime_t ks_crtime; /* creation time */ + hrtime_t ks_snaptime; /* last access time */ + char ks_module[KSTAT_STRLEN+1]; /* provider module name */ + int ks_instance; /* provider module instance */ + char ks_name[KSTAT_STRLEN+1]; /* kstat name */ + char ks_class[KSTAT_STRLEN+1]; /* kstat class */ + uchar_t ks_type; /* kstat data type */ + uchar_t ks_flags; /* kstat flags */ + void *ks_data; /* kstat type-specific data */ + uint_t ks_ndata; /* # of type-specific data records */ + size_t ks_data_size; /* size of kstat data section */ + struct proc_dir_entry *ks_proc; /* proc linkage */ + kstat_update_t *ks_update; /* dynamic updates */ + void *ks_private; /* private data */ + kmutex_t ks_private_lock; /* kstat private data lock */ + kmutex_t *ks_lock; /* kstat data lock */ + struct list_head ks_list; /* kstat linkage */ + kstat_module_t *ks_owner; /* kstat module linkage */ + kstat_raw_ops_t ks_raw_ops; /* ops table for raw type */ + char *ks_raw_buf; /* buf used for raw ops */ + size_t ks_raw_bufsize; /* size of raw ops buffer */ +}; + +typedef struct kstat_named_s { + char name[KSTAT_STRLEN]; /* name of counter */ + uchar_t data_type; /* data type */ + union { + char c[16]; /* 128-bit int */ + int32_t i32; /* 32-bit signed int */ + uint32_t ui32; /* 32-bit unsigned int */ + int64_t i64; /* 64-bit signed int */ + uint64_t ui64; /* 64-bit unsigned int */ + long l; /* native signed long */ + ulong_t ul; /* native unsigned long */ + struct { + union { + char *ptr; /* NULL-term string */ + char __pad[8]; /* 64-bit padding */ + } addr; + uint32_t len; /* # bytes for strlen + '\0' */ + } string; + } value; +} kstat_named_t; + +#define KSTAT_NAMED_STR_PTR(knptr) ((knptr)->value.string.addr.ptr) +#define KSTAT_NAMED_STR_BUFLEN(knptr) ((knptr)->value.string.len) + +typedef struct kstat_intr { + uint_t intrs[KSTAT_NUM_INTRS]; +} kstat_intr_t; + +typedef struct kstat_io { + u_longlong_t nread; /* number of bytes read */ + u_longlong_t nwritten; /* number of bytes written */ + uint_t reads; /* number of read operations */ + uint_t writes; /* number of write operations */ + hrtime_t wtime; /* cumulative wait (pre-service) time */ + hrtime_t wlentime; /* cumulative wait length*time product*/ + hrtime_t wlastupdate; /* last time wait queue changed */ + hrtime_t rtime; /* cumulative run (service) time */ + hrtime_t rlentime; /* cumulative run length*time product */ + hrtime_t rlastupdate; /* last time run queue changed */ + uint_t wcnt; /* count of elements in wait state */ + uint_t rcnt; /* count of elements in run state */ +} kstat_io_t; + +typedef struct kstat_timer { + char name[KSTAT_STRLEN+1]; /* event name */ + u_longlong_t num_events; /* number of events */ + hrtime_t elapsed_time; /* cumulative elapsed time */ + hrtime_t min_time; /* shortest event duration */ + hrtime_t max_time; /* longest event duration */ + hrtime_t start_time; /* previous event start time */ + hrtime_t stop_time; /* previous event stop time */ +} kstat_timer_t; + +int spl_kstat_init(void); +void spl_kstat_fini(void); + +extern void __kstat_set_raw_ops(kstat_t *ksp, + int (*headers)(char *buf, size_t size), + int (*data)(char *buf, size_t size, void *data), + void* (*addr)(kstat_t *ksp, loff_t index)); +extern kstat_t *__kstat_create(const char *ks_module, int ks_instance, + const char *ks_name, const char *ks_class, + uchar_t ks_type, uint_t ks_ndata, + uchar_t ks_flags); +extern void __kstat_install(kstat_t *ksp); +extern void __kstat_delete(kstat_t *ksp); +extern void kstat_waitq_enter(kstat_io_t *); +extern void kstat_waitq_exit(kstat_io_t *); +extern void kstat_runq_enter(kstat_io_t *); +extern void kstat_runq_exit(kstat_io_t *); + +#define kstat_set_raw_ops(k,h,d,a) __kstat_set_raw_ops(k,h,d,a) +#define kstat_create(m,i,n,c,t,s,f) __kstat_create(m,i,n,c,t,s,f) +#define kstat_install(k) __kstat_install(k) +#define kstat_delete(k) __kstat_delete(k) + +#endif /* _SPL_KSTAT_H */ --- linux-4.4.0.orig/spl/include/sys/list.h +++ linux-4.4.0/spl/include/sys/list.h @@ -0,0 +1,219 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_LIST_H +#define _SPL_LIST_H + +#include +#include + +/* + * NOTE: I have implemented the Solaris list API in terms of the native + * linux API. This has certain advantages in terms of leveraging the linux + * list debugging infrastructure, but it also means that the internals of a + * list differ slightly than on Solaris. This is not a problem as long as + * all callers stick to the published API. The two major differences are: + * + * 1) A list_node_t is mapped to a linux list_head struct which changes + * the name of the list_next/list_prev pointers to next/prev respectively. + * + * 2) A list_node_t which is not attached to a list on Solaris is denoted + * by having its list_next/list_prev pointers set to NULL. Under linux + * the next/prev pointers are set to LIST_POISON1 and LIST_POISON2 + * respectively. At this moment this only impacts the implementation + * of the list_link_init() and list_link_active() functions. + */ + +typedef struct list_head list_node_t; + +typedef struct list { + size_t list_size; + size_t list_offset; + list_node_t list_head; +} list_t; + +#define list_d2l(a, obj) ((list_node_t *)(((char *)obj) + (a)->list_offset)) +#define list_object(a, node) ((void *)(((char *)node) - (a)->list_offset)) + +static inline int +list_is_empty(list_t *list) +{ + return list_empty(&list->list_head); +} + +static inline void +list_link_init(list_node_t *node) +{ + node->next = LIST_POISON1; + node->prev = LIST_POISON2; +} + +static inline void +list_create(list_t *list, size_t size, size_t offset) +{ + ASSERT(list); + ASSERT(size > 0); + ASSERT(size >= offset + sizeof(list_node_t)); + + list->list_size = size; + list->list_offset = offset; + INIT_LIST_HEAD(&list->list_head); +} + +static inline void +list_destroy(list_t *list) +{ + ASSERT(list); + ASSERT(list_is_empty(list)); + + list_del(&list->list_head); +} + +static inline void +list_insert_head(list_t *list, void *object) +{ + list_add(list_d2l(list, object), &list->list_head); +} + +static inline void +list_insert_tail(list_t *list, void *object) +{ + list_add_tail(list_d2l(list, object), &list->list_head); +} + +static inline void +list_insert_after(list_t *list, void *object, void *nobject) +{ + if (object == NULL) + list_insert_head(list, nobject); + else + list_add(list_d2l(list, nobject), list_d2l(list, object)); +} + +static inline void +list_insert_before(list_t *list, void *object, void *nobject) +{ + if (object == NULL) + list_insert_tail(list, nobject); + else + list_add_tail(list_d2l(list, nobject), list_d2l(list, object)); +} + +static inline void +list_remove(list_t *list, void *object) +{ + ASSERT(!list_is_empty(list)); + list_del(list_d2l(list, object)); +} + +static inline void * +list_remove_head(list_t *list) +{ + list_node_t *head = list->list_head.next; + if (head == &list->list_head) + return NULL; + + list_del(head); + return list_object(list, head); +} + +static inline void * +list_remove_tail(list_t *list) +{ + list_node_t *tail = list->list_head.prev; + if (tail == &list->list_head) + return NULL; + + list_del(tail); + return list_object(list, tail); +} + +static inline void * +list_head(list_t *list) +{ + if (list_is_empty(list)) + return NULL; + + return list_object(list, list->list_head.next); +} + +static inline void * +list_tail(list_t *list) +{ + if (list_is_empty(list)) + return NULL; + + return list_object(list, list->list_head.prev); +} + +static inline void * +list_next(list_t *list, void *object) +{ + list_node_t *node = list_d2l(list, object); + + if (node->next != &list->list_head) + return list_object(list, node->next); + + return NULL; +} + +static inline void * +list_prev(list_t *list, void *object) +{ + list_node_t *node = list_d2l(list, object); + + if (node->prev != &list->list_head) + return list_object(list, node->prev); + + return NULL; +} + +static inline int +list_link_active(list_node_t *node) +{ + return (node->next != LIST_POISON1) && (node->prev != LIST_POISON2); +} + +static inline void +spl_list_move_tail(list_t *dst, list_t *src) +{ + list_splice_init(&src->list_head, dst->list_head.prev); +} + +#define list_move_tail(dst, src) spl_list_move_tail(dst, src) + +static inline void +list_link_replace(list_node_t *old_node, list_node_t *new_node) +{ + ASSERT(list_link_active(old_node)); + ASSERT(!list_link_active(new_node)); + + new_node->next = old_node->next; + new_node->prev = old_node->prev; + old_node->prev->next = new_node; + old_node->next->prev = new_node; + list_link_init(old_node); +} + +#endif /* SPL_LIST_H */ --- linux-4.4.0.orig/spl/include/sys/mkdev.h +++ linux-4.4.0/spl/include/sys/mkdev.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MKDEV_H +#define _SPL_MKDEV_H + +#endif /* SPL_MKDEV_H */ --- linux-4.4.0.orig/spl/include/sys/mntent.h +++ linux-4.4.0/spl/include/sys/mntent.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MNTENT_H +#define _SPL_MNTENT_H + +#endif /* SPL_MNTENT_H */ --- linux-4.4.0.orig/spl/include/sys/modctl.h +++ linux-4.4.0/spl/include/sys/modctl.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MODCTL_H +#define _SPL_MODCTL_H + +#endif /* SPL_MODCTL_H */ --- linux-4.4.0.orig/spl/include/sys/mode.h +++ linux-4.4.0/spl/include/sys/mode.h @@ -0,0 +1,32 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MODE_H +#define _SPL_MODE_H + +#define IFTOVT(mode) vn_mode_to_vtype(mode) +#define VTTOIF(vtype) vn_vtype_to_mode(vtype) +#define MAKEIMODE(T, M) (VTTOIF(T) | ((M) & ~S_IFMT)) + +#endif /* SPL_MODE_H */ --- linux-4.4.0.orig/spl/include/sys/mount.h +++ linux-4.4.0/spl/include/sys/mount.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_MOUNT_H +#define _SPL_MOUNT_H + +#endif /* SPL_MOUNT_H */ --- linux-4.4.0.orig/spl/include/sys/mutex.h +++ linux-4.4.0/spl/include/sys/mutex.h @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#ifndef _SPL_MUTEX_H +#define _SPL_MUTEX_H + +#include +#include +#include + +typedef enum { + MUTEX_DEFAULT = 0, + MUTEX_SPIN = 1, + MUTEX_ADAPTIVE = 2 +} kmutex_type_t; + +typedef struct { + struct mutex m_mutex; + spinlock_t m_lock; /* used for serializing mutex_exit */ + kthread_t *m_owner; +} kmutex_t; + +#define MUTEX(mp) (&((mp)->m_mutex)) + +static inline void +spl_mutex_set_owner(kmutex_t *mp) +{ + mp->m_owner = current; +} + +static inline void +spl_mutex_clear_owner(kmutex_t *mp) +{ + mp->m_owner = NULL; +} + +#define mutex_owner(mp) (ACCESS_ONCE((mp)->m_owner)) +#define mutex_owned(mp) (mutex_owner(mp) == current) +#define MUTEX_HELD(mp) mutex_owned(mp) +#define MUTEX_NOT_HELD(mp) (!MUTEX_HELD(mp)) + +/* + * The following functions must be a #define and not static inline. + * This ensures that the native linux mutex functions (lock/unlock) + * will be correctly located in the users code which is important + * for the built in kernel lock analysis tools + */ +#undef mutex_init +#define mutex_init(mp, name, type, ibc) \ +{ \ + static struct lock_class_key __key; \ + ASSERT(type == MUTEX_DEFAULT); \ + \ + __mutex_init(MUTEX(mp), (name) ? (#name) : (#mp), &__key); \ + spin_lock_init(&(mp)->m_lock); \ + spl_mutex_clear_owner(mp); \ +} + +#undef mutex_destroy +#define mutex_destroy(mp) \ +{ \ + VERIFY3P(mutex_owner(mp), ==, NULL); \ +} + +#define mutex_tryenter(mp) \ +({ \ + int _rc_; \ + \ + if ((_rc_ = mutex_trylock(MUTEX(mp))) == 1) \ + spl_mutex_set_owner(mp); \ + \ + _rc_; \ +}) + +#ifdef CONFIG_DEBUG_LOCK_ALLOC +#define mutex_enter_nested(mp, subclass) \ +{ \ + ASSERT3P(mutex_owner(mp), !=, current); \ + mutex_lock_nested(MUTEX(mp), (subclass)); \ + spl_mutex_set_owner(mp); \ +} +#else /* CONFIG_DEBUG_LOCK_ALLOC */ +#define mutex_enter_nested(mp, subclass) \ +{ \ + ASSERT3P(mutex_owner(mp), !=, current); \ + mutex_lock(MUTEX(mp)); \ + spl_mutex_set_owner(mp); \ +} +#endif /* CONFIG_DEBUG_LOCK_ALLOC */ + +#define mutex_enter(mp) mutex_enter_nested((mp), 0) + +/* + * The reason for the spinlock: + * + * The Linux mutex is designed with a fast-path/slow-path design such that it + * does not guarantee serialization upon itself, allowing a race where latter + * acquirers finish mutex_unlock before former ones. + * + * The race renders it unsafe to be used for serializing the freeing of an + * object in which the mutex is embedded, where the latter acquirer could go + * on to free the object while the former one is still doing mutex_unlock and + * causing memory corruption. + * + * However, there are many places in ZFS where the mutex is used for + * serializing object freeing, and the code is shared among other OSes without + * this issue. Thus, we need the spinlock to force the serialization on + * mutex_exit(). + * + * See http://lwn.net/Articles/575477/ for the information about the race. + */ +#define mutex_exit(mp) \ +{ \ + spin_lock(&(mp)->m_lock); \ + spl_mutex_clear_owner(mp); \ + mutex_unlock(MUTEX(mp)); \ + spin_unlock(&(mp)->m_lock); \ +} + +int spl_mutex_init(void); +void spl_mutex_fini(void); + +#endif /* _SPL_MUTEX_H */ --- linux-4.4.0.orig/spl/include/sys/note.h +++ linux-4.4.0/spl/include/sys/note.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_NOTE_H +#define _SPL_NOTE_H + +#endif /* SPL_NOTE_H */ --- linux-4.4.0.orig/spl/include/sys/open.h +++ linux-4.4.0/spl/include/sys/open.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_OPEN_H +#define _SPL_OPEN_H + +#endif /* SPL_OPEN_H */ --- linux-4.4.0.orig/spl/include/sys/param.h +++ linux-4.4.0/spl/include/sys/param.h @@ -0,0 +1,36 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PARAM_H +#define _SPL_PARAM_H + +#include + +/* Pages to bytes and back */ +#define ptob(pages) (pages << PAGE_SHIFT) +#define btop(bytes) (bytes >> PAGE_SHIFT) + +#define MAXUID UINT32_MAX + +#endif /* SPL_PARAM_H */ --- linux-4.4.0.orig/spl/include/sys/pathname.h +++ linux-4.4.0/spl/include/sys/pathname.h @@ -0,0 +1,35 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PATHNAME_H +#define _SPL_PATHNAME_H + +typedef struct pathname { + char *pn_buf; /* underlying storage */ + char *pn_path; /* remaining pathname */ + size_t pn_pathlen; /* remaining length */ + size_t pn_bufsize; /* total size of pn_buf */ +} pathname_t; + +#endif /* SPL_PATHNAME_H */ --- linux-4.4.0.orig/spl/include/sys/policy.h +++ linux-4.4.0/spl/include/sys/policy.h @@ -0,0 +1,47 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_POLICY_H +#define _SPL_POLICY_H + +#define secpolicy_fs_unmount(c,vfs) (0) +#define secpolicy_nfs(c) (0) +#define secpolicy_sys_config(c,co) (0) +#define secpolicy_zfs(c) (0) +#define secpolicy_zinject(c) (0) +#define secpolicy_vnode_setids_setgids(c,id) (0) +#define secpolicy_vnode_setid_retain(c, sr) (0) +#define secpolicy_setid_clear(v, c) (0) +#define secpolicy_vnode_any_access(c,vp,o) (0) +#define secpolicy_vnode_access2(c,cp,o,m1,m2) (0) +#define secpolicy_vnode_chown(c,o) (0) +#define secpolicy_vnode_setdac(c,o) (0) +#define secpolicy_vnode_remove(c) (0) +#define secpolicy_vnode_setattr(c,v,a,o,f,func,n) (0) +#define secpolicy_xvattr(x, o, c, t) (0) +#define secpolicy_vnode_stky_modify(c) (0) +#define secpolicy_setid_setsticky_clear(v,a,o,c) (0) +#define secpolicy_basic_link(c) (0) + +#endif /* SPL_POLICY_H */ --- linux-4.4.0.orig/spl/include/sys/pool.h +++ linux-4.4.0/spl/include/sys/pool.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_POOL_H +#define _SPL_POOL_H + +#include + +#endif /* SPL_POOL_H */ --- linux-4.4.0.orig/spl/include/sys/priv_impl.h +++ linux-4.4.0/spl/include/sys/priv_impl.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PRIV_IMPL_H +#define _SPL_PRIV_IMPL_H + +#endif /* _SPL_PRIV_IMPL_H */ --- linux-4.4.0.orig/spl/include/sys/proc.h +++ linux-4.4.0/spl/include/sys/proc.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PROC_H +#define _SPL_PROC_H + +#endif /* SPL_PROC_H */ --- linux-4.4.0.orig/spl/include/sys/processor.h +++ linux-4.4.0/spl/include/sys/processor.h @@ -0,0 +1,32 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PROCESSOR_H +#define _SPL_PROCESSOR_H + +#define getcpuid() smp_processor_id() + +typedef int processorid_t; + +#endif /* _SPL_PROCESSOR_H */ --- linux-4.4.0.orig/spl/include/sys/pset.h +++ linux-4.4.0/spl/include/sys/pset.h @@ -0,0 +1,38 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PSET_H +#define _SPL_PSET_H + +typedef int psetid_t; + +/* special processor set id's */ +#define PS_NONE -1 +#define PS_QUERY -2 +#define PS_MYID -3 +#define PS_SOFT -4 +#define PS_HARD -5 +#define PS_QUERY_TYPE -6 + +#endif /* SPL_PSET_H */ --- linux-4.4.0.orig/spl/include/sys/random.h +++ linux-4.4.0/spl/include/sys/random.h @@ -0,0 +1,45 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RANDOM_H +#define _SPL_RANDOM_H + +#include +#include + +static __inline__ int +random_get_bytes(uint8_t *ptr, size_t len) +{ + get_random_bytes((void *)ptr,(int)len); + return 0; +} + +static __inline__ int +random_get_pseudo_bytes(uint8_t *ptr, size_t len) +{ + get_random_bytes((void *)ptr,(int)len); + return 0; +} + +#endif /* _SPL_RANDOM_H */ --- linux-4.4.0.orig/spl/include/sys/refstr.h +++ linux-4.4.0/spl/include/sys/refstr.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_REFSTR_H +#define _SPL_REFSTR_H + +#endif /* SPL_REFSTR_H */ --- linux-4.4.0.orig/spl/include/sys/resource.h +++ linux-4.4.0/spl/include/sys/resource.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RESOURCE_H +#define _SPL_RESOURCE_H + +#include + +#endif /* SPL_RESOURCE_H */ --- linux-4.4.0.orig/spl/include/sys/rwlock.h +++ linux-4.4.0/spl/include/sys/rwlock.h @@ -0,0 +1,212 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_RWLOCK_H +#define _SPL_RWLOCK_H + +#include +#include +#include + +typedef enum { + RW_DRIVER = 2, + RW_DEFAULT = 4 +} krw_type_t; + +typedef enum { + RW_NONE = 0, + RW_WRITER = 1, + RW_READER = 2 +} krw_t; + +typedef struct { + struct rw_semaphore rw_rwlock; + kthread_t *rw_owner; +} krwlock_t; + +#define SEM(rwp) ((struct rw_semaphore *)(rwp)) + +static inline void +spl_rw_set_owner(krwlock_t *rwp) +{ + unsigned long flags; + + spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); + rwp->rw_owner = current; + spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); +} + +static inline void +spl_rw_clear_owner(krwlock_t *rwp) +{ + unsigned long flags; + + spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); + rwp->rw_owner = NULL; + spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); +} + +static inline kthread_t * +rw_owner(krwlock_t *rwp) +{ + unsigned long flags; + kthread_t *owner; + + spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); + owner = rwp->rw_owner; + spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); + + return owner; +} + +static inline int +RW_READ_HELD(krwlock_t *rwp) +{ + return (spl_rwsem_is_locked(SEM(rwp)) && rw_owner(rwp) == NULL); +} + +static inline int +RW_WRITE_HELD(krwlock_t *rwp) +{ + return (spl_rwsem_is_locked(SEM(rwp)) && rw_owner(rwp) == current); +} + +static inline int +RW_LOCK_HELD(krwlock_t *rwp) +{ + return spl_rwsem_is_locked(SEM(rwp)); +} + +/* + * The following functions must be a #define and not static inline. + * This ensures that the native linux semaphore functions (down/up) + * will be correctly located in the users code which is important + * for the built in kernel lock analysis tools + */ +#define rw_init(rwp, name, type, arg) \ +({ \ + static struct lock_class_key __key; \ + \ + __init_rwsem(SEM(rwp), #rwp, &__key); \ + spl_rw_clear_owner(rwp); \ +}) + +#define rw_destroy(rwp) \ +({ \ + VERIFY(!RW_LOCK_HELD(rwp)); \ +}) + +#define rw_tryenter(rwp, rw) \ +({ \ + int _rc_ = 0; \ + \ + switch (rw) { \ + case RW_READER: \ + _rc_ = down_read_trylock(SEM(rwp)); \ + break; \ + case RW_WRITER: \ + if ((_rc_ = down_write_trylock(SEM(rwp)))) \ + spl_rw_set_owner(rwp); \ + break; \ + default: \ + VERIFY(0); \ + } \ + _rc_; \ +}) + +#define rw_enter(rwp, rw) \ +({ \ + switch (rw) { \ + case RW_READER: \ + down_read(SEM(rwp)); \ + break; \ + case RW_WRITER: \ + down_write(SEM(rwp)); \ + spl_rw_set_owner(rwp); \ + break; \ + default: \ + VERIFY(0); \ + } \ +}) + +#define rw_exit(rwp) \ +({ \ + if (RW_WRITE_HELD(rwp)) { \ + spl_rw_clear_owner(rwp); \ + up_write(SEM(rwp)); \ + } else { \ + ASSERT(RW_READ_HELD(rwp)); \ + up_read(SEM(rwp)); \ + } \ +}) + +#define rw_downgrade(rwp) \ +({ \ + spl_rw_clear_owner(rwp); \ + downgrade_write(SEM(rwp)); \ +}) + +#if defined(CONFIG_RWSEM_GENERIC_SPINLOCK) +/* + * For the generic implementations of rw-semaphores the following is + * true. If your semaphore implementation internally represents the + * semaphore state differently then special case handling is required. + * - if activity/count is 0 then there are no active readers or writers + * - if activity/count is +ve then that is the number of active readers + * - if activity/count is -1 then there is one active writer + */ + +extern void __up_read_locked(struct rw_semaphore *); +extern int __down_write_trylock_locked(struct rw_semaphore *); + +#define rw_tryupgrade(rwp) \ +({ \ + unsigned long _flags_; \ + int _rc_ = 0; \ + \ + spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, _flags_); \ + if ((list_empty(&SEM(rwp)->wait_list)) && \ + (SEM(rwp)->activity == 1)) { \ + __up_read_locked(SEM(rwp)); \ + VERIFY(_rc_ = __down_write_trylock_locked(SEM(rwp))); \ + (rwp)->rw_owner = current; \ + } \ + spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, _flags_); \ + _rc_; \ +}) +#else +/* + * rw_tryupgrade() can be implemented correctly but for each supported + * arch we will need a custom implementation. For the x86 implementation + * it looks like a custom cmpxchg() to atomically check and promote the + * rwsem would be safe. For now that's not worth the trouble so in this + * case rw_tryupgrade() has just been disabled. + */ +#define rw_tryupgrade(rwp) ({ 0; }) +#endif + +int spl_rw_init(void); +void spl_rw_fini(void); + +#endif /* _SPL_RWLOCK_H */ --- linux-4.4.0.orig/spl/include/sys/sdt.h +++ linux-4.4.0/spl/include/sys/sdt.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SDT_H +#define _SPL_SDT_H + +#define SET_ERROR(x) (x) + +#endif /* SPL_SDT_H */ --- linux-4.4.0.orig/spl/include/sys/sid.h +++ linux-4.4.0/spl/include/sys/sid.h @@ -0,0 +1,61 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SID_H +#define _SPL_SID_H + +typedef struct ksiddomain { + char *kd_name; +} ksiddomain_t; + +typedef enum ksid_index { + KSID_USER, + KSID_GROUP, + KSID_OWNER, + KSID_COUNT +} ksid_index_t; + +typedef int ksid_t; + +static inline ksiddomain_t * +ksid_lookupdomain(const char *dom) +{ + ksiddomain_t *kd; + int len = strlen(dom); + + kd = kmem_zalloc(sizeof(ksiddomain_t), KM_SLEEP); + kd->kd_name = kmem_zalloc(len + 1, KM_SLEEP); + memcpy(kd->kd_name, dom, len); + + return (kd); +} + +static inline void +ksiddomain_rele(ksiddomain_t *ksid) +{ + kmem_free(ksid->kd_name, strlen(ksid->kd_name) + 1); + kmem_free(ksid, sizeof(ksiddomain_t)); +} + +#endif /* _SPL_SID_H */ --- linux-4.4.0.orig/spl/include/sys/signal.h +++ linux-4.4.0/spl/include/sys/signal.h @@ -0,0 +1,50 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SIGNAL_H +#define _SPL_SIGNAL_H + +#include + +#define FORREAL 0 /* Usual side-effects */ +#define JUSTLOOKING 1 /* Don't stop the process */ + +/* The "why" argument indicates the allowable side-effects of the call: + * + * FORREAL: Extract the next pending signal from p_sig into p_cursig; + * stop the process if a stop has been requested or if a traced signal + * is pending. + * + * JUSTLOOKING: Don't stop the process, just indicate whether or not + * a signal might be pending (FORREAL is needed to tell for sure). + */ +static __inline__ int +issig(int why) +{ + ASSERT(why == FORREAL || why == JUSTLOOKING); + + return signal_pending(current); +} + +#endif /* SPL_SIGNAL_H */ --- linux-4.4.0.orig/spl/include/sys/stat.h +++ linux-4.4.0/spl/include/sys/stat.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_STAT_H +#define _SPL_STAT_H + +#include + +#endif /* SPL_STAT_H */ --- linux-4.4.0.orig/spl/include/sys/stropts.h +++ linux-4.4.0/spl/include/sys/stropts.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_STROPTS_H +#define _SPL_STROPTS_H + +#endif /* SPL_STROPTS_H */ --- linux-4.4.0.orig/spl/include/sys/sunddi.h +++ linux-4.4.0/spl/include/sys/sunddi.h @@ -0,0 +1,59 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SUNDDI_H +#define _SPL_SUNDDI_H + +#include +#include +#include +#include +#include +#include + +typedef int ddi_devid_t; + +#define DDI_DEV_T_NONE ((dev_t)-1) +#define DDI_DEV_T_ANY ((dev_t)-2) +#define DI_MAJOR_T_UNKNOWN ((major_t)0) + +#define DDI_PROP_DONTPASS 0x0001 +#define DDI_PROP_CANSLEEP 0x0002 + +#define DDI_SUCCESS 0 +#define DDI_FAILURE -1 + +#define ddi_prop_lookup_string(x1,x2,x3,x4,x5) (*x5 = NULL) +#define ddi_prop_free(x) (void)0 +#define ddi_root_node() (void)0 + +extern int ddi_strtoul(const char *, char **, int, unsigned long *); +extern int ddi_strtol(const char *, char **, int, long *); +extern int ddi_strtoull(const char *, char **, int, unsigned long long *); +extern int ddi_strtoll(const char *, char **, int, long long *); + +extern int ddi_copyin(const void *from, void *to, size_t len, int flags); +extern int ddi_copyout(const void *from, void *to, size_t len, int flags); + +#endif /* SPL_SUNDDI_H */ --- linux-4.4.0.orig/spl/include/sys/sunldi.h +++ linux-4.4.0/spl/include/sys/sunldi.h @@ -0,0 +1,56 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SUNLDI_H +#define _SPL_SUNLDI_H + +#include +#include +#include +#include +#include +#include + +#define SECTOR_SIZE 512 + +typedef struct modlinkage { + int ml_rev; + struct modlfs *ml_modlfs; + struct modldrv *ml_modldrv; + major_t ml_major; + unsigned ml_minors; + void *pad1; +} modlinkage_t; + +typedef struct ldi_ident { + char li_modname[MAXNAMELEN]; + dev_t li_dev; +} *ldi_ident_t; + +typedef struct block_device *ldi_handle_t; + +extern int ldi_ident_from_mod(struct modlinkage *modlp, ldi_ident_t *lip); +extern void ldi_ident_release(ldi_ident_t li); + +#endif /* SPL_SUNLDI_H */ --- linux-4.4.0.orig/spl/include/sys/sysdc.h +++ linux-4.4.0/spl/include/sys/sysdc.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSDC_H +#define _SPL_SYSDC_H + +#endif /* SPL_SYSDC_H */ --- linux-4.4.0.orig/spl/include/sys/sysevent.h +++ linux-4.4.0/spl/include/sys/sysevent.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSEVENT_H +#define _SPL_SYSEVENT_H + +#endif /* _SPL_SYSEVENT_H */ --- linux-4.4.0.orig/spl/include/sys/sysevent/Makefile.am +++ linux-4.4.0/spl/include/sys/sysevent/Makefile.am @@ -0,0 +1,13 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/sys/sysevent/eventdefs.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/sysevent +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/sys/sysevent/Makefile.in +++ linux-4.4.0/spl/include/sys/sysevent/Makefile.in @@ -0,0 +1,621 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/sysevent +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = \ + $(top_srcdir)/include/sys/sysevent/eventdefs.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/sys/sysevent/eventdefs.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/sysevent +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/sysevent/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/sysevent/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/sys/sysevent/eventdefs.h +++ linux-4.4.0/spl/include/sys/sysevent/eventdefs.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSEVENT_EVENTDEFS_H +#define _SPL_SYSEVENT_EVENTDEFS_H + +#endif /* _SPL_SYSEVENT_EVENTDEFS_H */ --- linux-4.4.0.orig/spl/include/sys/sysmacros.h +++ linux-4.4.0/spl/include/sys/sysmacros.h @@ -0,0 +1,233 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSMACROS_H +#define _SPL_SYSMACROS_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_SCHED_RT_HEADER +#include +#endif + +#ifndef _KERNEL +#define _KERNEL __KERNEL__ +#endif + +#define FALSE 0 +#define TRUE 1 + +#define INT8_MAX (127) +#define INT8_MIN (-128) +#define UINT8_MAX (255) +#define UINT8_MIN (0) + +#define INT16_MAX (32767) +#define INT16_MIN (-32768) +#define UINT16_MAX (65535) +#define UINT16_MIN (0) + +#define INT32_MAX INT_MAX +#define INT32_MIN INT_MIN +#define UINT32_MAX UINT_MAX +#define UINT32_MIN UINT_MIN + +#define INT64_MAX LLONG_MAX +#define INT64_MIN LLONG_MIN +#define UINT64_MAX ULLONG_MAX +#define UINT64_MIN ULLONG_MIN + +#define NBBY 8 +#define ENOTSUP EOPNOTSUPP + +#define MAXMSGLEN 256 +#define MAXNAMELEN 256 +#define MAXPATHLEN PATH_MAX +#define MAXOFFSET_T LLONG_MAX +#define MAXBSIZE 8192 +#define DEV_BSIZE 512 +#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ + +#define proc_pageout NULL +#define curproc current +#define max_ncpus num_possible_cpus() +#define boot_ncpus num_online_cpus() +#define CPU_SEQID smp_processor_id() +#define _NOTE(x) +#define is_system_labeled() 0 + +#ifndef RLIM64_INFINITY +#define RLIM64_INFINITY (~0ULL) +#endif + +/* 0..MAX_PRIO-1: Process priority + * 0..MAX_RT_PRIO-1: RT priority tasks + * MAX_RT_PRIO..MAX_PRIO-1: SCHED_NORMAL tasks + * + * Treat shim tasks as SCHED_NORMAL tasks + */ +#define minclsyspri (MAX_PRIO-1) +#define maxclsyspri (MAX_RT_PRIO) +#define defclsyspri (DEFAULT_PRIO) + +#ifndef NICE_TO_PRIO +#define NICE_TO_PRIO(nice) (MAX_RT_PRIO + (nice) + 20) +#endif +#ifndef PRIO_TO_NICE +#define PRIO_TO_NICE(prio) ((prio) - MAX_RT_PRIO - 20) +#endif + +/* + * Missing macros + */ +#ifndef PAGESIZE +#define PAGESIZE PAGE_SIZE +#endif + +/* from Solaris sys/byteorder.h */ +#define BSWAP_8(x) ((x) & 0xff) +#define BSWAP_16(x) ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8)) +#define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16)) +#define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32)) + +/* Map some simple functions. + */ +#define bzero(ptr,size) memset(ptr,0,size) +#define bcopy(src,dest,size) memmove(dest,src,size) +#define bcmp(src,dest,size) memcmp((src), (dest), (size_t)(size)) + +/* Dtrace probes do not exist in the linux kernel */ +#ifdef DTRACE_PROBE +#undef DTRACE_PROBE +#endif /* DTRACE_PROBE */ +#define DTRACE_PROBE(a) ((void)0) + +#ifdef DTRACE_PROBE1 +#undef DTRACE_PROBE1 +#endif /* DTRACE_PROBE1 */ +#define DTRACE_PROBE1(a, b, c) ((void)0) + +#ifdef DTRACE_PROBE2 +#undef DTRACE_PROBE2 +#endif /* DTRACE_PROBE2 */ +#define DTRACE_PROBE2(a, b, c, d, e) ((void)0) + +#ifdef DTRACE_PROBE3 +#undef DTRACE_PROBE3 +#endif /* DTRACE_PROBE3 */ +#define DTRACE_PROBE3(a, b, c, d, e, f, g) ((void)0) + +#ifdef DTRACE_PROBE4 +#undef DTRACE_PROBE4 +#endif /* DTRACE_PROBE4 */ +#define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) ((void)0) + +/* Missing globals */ +extern char spl_version[32]; +extern unsigned long spl_hostid; + +/* Missing misc functions */ +extern uint32_t zone_get_hostid(void *zone); +extern void spl_setup(void); +extern void spl_cleanup(void); + +#define highbit64(x) fls64(x) +#define makedevice(maj,min) makedev(maj,min) + +/* common macros */ +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif +#ifndef ABS +#define ABS(a) ((a) < 0 ? -(a) : (a)) +#endif +#ifndef DIV_ROUND_UP +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) +#endif +#ifndef roundup +#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) +#endif +#ifndef howmany +#define howmany(x, y) (((x) + ((y) - 1)) / (y)) +#endif + +/* + * Compatibility macros/typedefs needed for Solaris -> Linux port + */ +#define P2ALIGN(x, align) ((x) & -(align)) +#define P2CROSS(x, y, align) (((x) ^ (y)) > (align) - 1) +#define P2ROUNDUP(x, align) ((((x) - 1) | ((align) - 1)) + 1) +#define P2PHASE(x, align) ((x) & ((align) - 1)) +#define P2NPHASE(x, align) (-(x) & ((align) - 1)) +#define ISP2(x) (((x) & ((x) - 1)) == 0) +#define IS_P2ALIGNED(v, a) ((((uintptr_t)(v)) & ((uintptr_t)(a) - 1))==0) +#define P2BOUNDARY(off, len, align) \ + (((off) ^ ((off) + (len) - 1)) > (align) - 1) + +/* + * Typed version of the P2* macros. These macros should be used to ensure + * that the result is correctly calculated based on the data type of (x), + * which is passed in as the last argument, regardless of the data + * type of the alignment. For example, if (x) is of type uint64_t, + * and we want to round it up to a page boundary using "PAGESIZE" as + * the alignment, we can do either + * + * P2ROUNDUP(x, (uint64_t)PAGESIZE) + * or + * P2ROUNDUP_TYPED(x, PAGESIZE, uint64_t) + */ +#define P2ALIGN_TYPED(x, align, type) \ + ((type)(x) & -(type)(align)) +#define P2PHASE_TYPED(x, align, type) \ + ((type)(x) & ((type)(align) - 1)) +#define P2NPHASE_TYPED(x, align, type) \ + (-(type)(x) & ((type)(align) - 1)) +#define P2ROUNDUP_TYPED(x, align, type) \ + ((((type)(x) - 1) | ((type)(align) - 1)) + 1) +#define P2END_TYPED(x, align, type) \ + (-(~(type)(x) & -(type)(align))) +#define P2PHASEUP_TYPED(x, align, phase, type) \ + ((type)(phase) - (((type)(phase) - (type)(x)) & -(type)(align))) +#define P2CROSS_TYPED(x, y, align, type) \ + (((type)(x) ^ (type)(y)) > (type)(align) - 1) +#define P2SAMEHIGHBIT_TYPED(x, y, type) \ + (((type)(x) ^ (type)(y)) < ((type)(x) & (type)(y))) + +#if defined(_KERNEL) && !defined(_KMEMUSER) && !defined(offsetof) + +/* avoid any possibility of clashing with version */ + +#define offsetof(s, m) ((size_t)(&(((s *)0)->m))) +#endif + +#endif /* _SPL_SYSMACROS_H */ --- linux-4.4.0.orig/spl/include/sys/systeminfo.h +++ linux-4.4.0/spl/include/sys/systeminfo.h @@ -0,0 +1,36 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSTEMINFO_H +#define _SPL_SYSTEMINFO_H + +#define HW_HOSTID_LEN 11 /* minimum buffer size needed */ + /* to hold a decimal or hex */ + /* hostid string */ + +/* Supplemental definitions for Linux. */ +#define HW_HOSTID_PATH "/etc/hostid" /* binary configuration file */ +#define HW_HOSTID_MASK 0xFFFFFFFF /* significant hostid bits */ + +#endif /* SPL_SYSTEMINFO_H */ --- linux-4.4.0.orig/spl/include/sys/systm.h +++ linux-4.4.0/spl/include/sys/systm.h @@ -0,0 +1,32 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SYSTM_H +#define _SPL_SYSTM_H + +#include + +typedef uintptr_t pc_t; + +#endif /* SPL_SYSTM_H */ --- linux-4.4.0.orig/spl/include/sys/t_lock.h +++ linux-4.4.0/spl/include/sys/t_lock.h @@ -0,0 +1,33 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_T_LOCK_H +#define _SPL_T_LOCK_H + +#include +#include +#include +#include + +#endif /* SPL_T_LOCK_H */ --- linux-4.4.0.orig/spl/include/sys/taskq.h +++ linux-4.4.0/spl/include/sys/taskq.h @@ -0,0 +1,137 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TASKQ_H +#define _SPL_TASKQ_H + +#include +#include +#include +#include +#include +#include +#include + +#define TASKQ_NAMELEN 31 + +#define TASKQ_PREPOPULATE 0x00000001 +#define TASKQ_CPR_SAFE 0x00000002 +#define TASKQ_DYNAMIC 0x00000004 +#define TASKQ_THREADS_CPU_PCT 0x00000008 +#define TASKQ_DC_BATCH 0x00000010 +#define TASKQ_ACTIVE 0x80000000 + +/* + * Flags for taskq_dispatch. TQ_SLEEP/TQ_NOSLEEP should be same as + * KM_SLEEP/KM_NOSLEEP. TQ_NOQUEUE/TQ_NOALLOC are set particularly + * large so as not to conflict with already used GFP_* defines. + */ +#define TQ_SLEEP 0x00000000 +#define TQ_NOSLEEP 0x00000001 +#define TQ_PUSHPAGE 0x00000002 +#define TQ_NOQUEUE 0x01000000 +#define TQ_NOALLOC 0x02000000 +#define TQ_NEW 0x04000000 +#define TQ_FRONT 0x08000000 + +typedef unsigned long taskqid_t; +typedef void (task_func_t)(void *); + +typedef struct taskq { + spinlock_t tq_lock; /* protects taskq_t */ + unsigned long tq_lock_flags; /* interrupt state */ + char *tq_name; /* taskq name */ + struct list_head tq_thread_list;/* list of all threads */ + struct list_head tq_active_list;/* list of active threads */ + int tq_nactive; /* # of active threads */ + int tq_nthreads; /* # of existing threads */ + int tq_nspawn; /* # of threads being spawned */ + int tq_maxthreads; /* # of threads maximum */ + int tq_pri; /* priority */ + int tq_minalloc; /* min task_t pool size */ + int tq_maxalloc; /* max task_t pool size */ + int tq_nalloc; /* cur task_t pool size */ + uint_t tq_flags; /* flags */ + taskqid_t tq_next_id; /* next pend/work id */ + taskqid_t tq_lowest_id; /* lowest pend/work id */ + struct list_head tq_free_list; /* free task_t's */ + struct list_head tq_pend_list; /* pending task_t's */ + struct list_head tq_prio_list; /* priority pending task_t's */ + struct list_head tq_delay_list; /* delayed task_t's */ + wait_queue_head_t tq_work_waitq; /* new work waitq */ + wait_queue_head_t tq_wait_waitq; /* wait waitq */ +} taskq_t; + +typedef struct taskq_ent { + spinlock_t tqent_lock; + wait_queue_head_t tqent_waitq; + struct timer_list tqent_timer; + struct list_head tqent_list; + taskqid_t tqent_id; + task_func_t *tqent_func; + void *tqent_arg; + taskq_t *tqent_taskq; + uintptr_t tqent_flags; +} taskq_ent_t; + +#define TQENT_FLAG_PREALLOC 0x1 +#define TQENT_FLAG_CANCEL 0x2 + +typedef struct taskq_thread { + struct list_head tqt_thread_list; + struct list_head tqt_active_list; + struct task_struct *tqt_thread; + taskq_t *tqt_tq; + taskqid_t tqt_id; + taskq_ent_t *tqt_task; + uintptr_t tqt_flags; +} taskq_thread_t; + +/* Global system-wide dynamic task queue available for all consumers */ +extern taskq_t *system_taskq; + +extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +extern taskqid_t taskq_dispatch_delay(taskq_t *, task_func_t, void *, + uint_t, clock_t); +extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); +extern int taskq_empty_ent(taskq_ent_t *); +extern void taskq_init_ent(taskq_ent_t *); +extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +extern void taskq_destroy(taskq_t *); +extern void taskq_wait_id(taskq_t *, taskqid_t); +extern void taskq_wait_outstanding(taskq_t *, taskqid_t); +extern void taskq_wait(taskq_t *); +extern int taskq_cancel_id(taskq_t *, taskqid_t); +extern int taskq_member(taskq_t *, void *); + +#define taskq_create_proc(name, nthreads, pri, min, max, proc, flags) \ + taskq_create(name, nthreads, pri, min, max, flags) +#define taskq_create_sysdc(name, nthreads, min, max, proc, dc, flags) \ + taskq_create(name, nthreads, maxclsyspri, min, max, flags) + +int spl_taskq_init(void); +void spl_taskq_fini(void); + +#endif /* _SPL_TASKQ_H */ --- linux-4.4.0.orig/spl/include/sys/thread.h +++ linux-4.4.0/spl/include/sys/thread.h @@ -0,0 +1,65 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_THREAD_H +#define _SPL_THREAD_H + +#include +#include +#include +#include +#include +#include +#include + +/* + * Thread interfaces + */ +#define TP_MAGIC 0x53535353 + +#define TS_SLEEP TASK_INTERRUPTIBLE +#define TS_RUN TASK_RUNNING +#define TS_ZOMB EXIT_ZOMBIE +#define TS_STOPPED TASK_STOPPED + +typedef void (*thread_func_t)(void *); + +#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ + __thread_create(stk, stksize, (thread_func_t)func, \ + #func, arg, len, pp, state, pri) +#define thread_exit() __thread_exit() +#define thread_join(t) VERIFY(0) +#define curthread current +#define getcomm() current->comm +#define getpid() current->pid + +extern kthread_t *__thread_create(caddr_t stk, size_t stksize, + thread_func_t func, const char *name, + void *args, size_t len, proc_t *pp, + int state, pri_t pri); +extern void __thread_exit(void); +extern struct task_struct *spl_kthread_create(int (*func)(void *), + void *data, const char namefmt[], ...); + +#endif /* _SPL_THREAD_H */ --- linux-4.4.0.orig/spl/include/sys/time.h +++ linux-4.4.0/spl/include/sys/time.h @@ -0,0 +1,76 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TIME_H +#define _SPL_TIME_H + +#include +#include +#include +#include + +#if defined(CONFIG_64BIT) +#define TIME_MAX INT64_MAX +#define TIME_MIN INT64_MIN +#else +#define TIME_MAX INT32_MAX +#define TIME_MIN INT32_MIN +#endif + +#define SEC 1 +#define MILLISEC 1000 +#define MICROSEC 1000000 +#define NANOSEC 1000000000 + +#define MSEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MILLISEC)) +#define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC)) + +static const int hz = HZ; + +#define TIMESPEC_OVERFLOW(ts) \ + ((ts)->tv_sec < TIME_MIN || (ts)->tv_sec > TIME_MAX) + +static inline void +gethrestime(timestruc_t *now) +{ + *now = current_kernel_time(); +} + +static inline time_t +gethrestime_sec(void) +{ + struct timespec ts; + ts = current_kernel_time(); + return (ts.tv_sec); +} + +static inline hrtime_t +gethrtime(void) +{ + struct timespec now; + getrawmonotonic(&now); + return (((hrtime_t)now.tv_sec * NSEC_PER_SEC) + now.tv_nsec); +} + +#endif /* _SPL_TIME_H */ --- linux-4.4.0.orig/spl/include/sys/timer.h +++ linux-4.4.0/spl/include/sys/timer.h @@ -0,0 +1,60 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TIMER_H +#define _SPL_TIMER_H + +#include +#include +#include + +#define lbolt ((clock_t)jiffies) +#define lbolt64 ((int64_t)get_jiffies_64()) + +#define ddi_get_lbolt() ((clock_t)jiffies) +#define ddi_get_lbolt64() ((int64_t)get_jiffies_64()) + +#define ddi_time_before(a, b) (typecheck(clock_t, a) && \ + typecheck(clock_t, b) && \ + ((a) - (b) < 0)) +#define ddi_time_after(a, b) ddi_time_before(b, a) +#define ddi_time_before_eq(a, b) (!ddi_time_after(a, b)) +#define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a) + +#define ddi_time_before64(a, b) (typecheck(int64_t, a) && \ + typecheck(int64_t, b) && \ + ((a) - (b) < 0)) +#define ddi_time_after64(a, b) ddi_time_before64(b, a) +#define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b)) +#define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a) + +#define delay(ticks) schedule_timeout_uninterruptible(ticks) + +#define SEC_TO_TICK(sec) ((sec) * HZ) +#define MSEC_TO_TICK(ms) msecs_to_jiffies(ms) +#define USEC_TO_TICK(us) usecs_to_jiffies(us) +#define NSEC_TO_TICK(ns) usecs_to_jiffies(ns / NSEC_PER_USEC) + +#endif /* _SPL_TIMER_H */ + --- linux-4.4.0.orig/spl/include/sys/tsd.h +++ linux-4.4.0/spl/include/sys/tsd.h @@ -0,0 +1,45 @@ +/*****************************************************************************\ + * Copyright (C) 2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TSD_H +#define _SPL_TSD_H + +#include + +#define TSD_HASH_TABLE_BITS_DEFAULT 9 +#define TSD_KEYS_MAX 32768 +#define DTOR_PID (PID_MAX_LIMIT+1) +#define PID_KEY (TSD_KEYS_MAX+1) + +typedef void (*dtor_func_t)(void *); + +extern int tsd_set(uint_t, void *); +extern void *tsd_get(uint_t); +extern void tsd_create(uint_t *, dtor_func_t); +extern void tsd_destroy(uint_t *); +extern void tsd_exit(void); + +int spl_tsd_init(void); +void spl_tsd_fini(void); + +#endif /* _SPL_TSD_H */ --- linux-4.4.0.orig/spl/include/sys/types.h +++ linux-4.4.0/spl/include/sys/types.h @@ -0,0 +1,69 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TYPES_H +#define _SPL_TYPES_H + +#include +#include + +#ifndef ULLONG_MAX +#define ULLONG_MAX (~0ULL) +#endif + +#ifndef LLONG_MAX +#define LLONG_MAX ((long long)(~0ULL>>1)) +#endif + +typedef enum { B_FALSE=0, B_TRUE=1 } boolean_t; +typedef unsigned long intptr_t; +typedef unsigned long ulong_t; +typedef unsigned int uint_t; +typedef unsigned char uchar_t; +typedef unsigned long long u_longlong_t; +typedef unsigned long long u_offset_t; +typedef unsigned long long rlim64_t; +typedef long long longlong_t; +typedef long long offset_t; +typedef struct task_struct kthread_t; +typedef struct task_struct proc_t; +typedef short pri_t; +typedef struct timespec timestruc_t; /* definition per SVr4 */ +typedef struct timespec timespec_t; +typedef longlong_t hrtime_t; +typedef unsigned short ushort_t; +typedef u_longlong_t len_t; +typedef longlong_t diskaddr_t; +typedef ushort_t o_mode_t; +typedef uint_t major_t; +typedef uint_t minor_t; +typedef ulong_t pfn_t; +typedef ulong_t pgcnt_t; +typedef long spgcnt_t; +typedef short index_t; +typedef int id_t; + +extern proc_t p0; + +#endif /* _SPL_TYPES_H */ --- linux-4.4.0.orig/spl/include/sys/types32.h +++ linux-4.4.0/spl/include/sys/types32.h @@ -0,0 +1,36 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_TYPES32_H +#define _SPL_TYPES32_H + +#include +#include + +typedef uint32_t caddr32_t; +typedef int32_t daddr32_t; +typedef int32_t time32_t; +typedef uint32_t size32_t; + +#endif /* _SPL_TYPES32_H */ --- linux-4.4.0.orig/spl/include/sys/u8_textprep.h +++ linux-4.4.0/spl/include/sys/u8_textprep.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_U8_TEXTPREP_H +#define _SPL_U8_TEXTPREP_H + +#endif /* SPL_U8_TEXTPREP_H */ --- linux-4.4.0.orig/spl/include/sys/uio.h +++ linux-4.4.0/spl/include/sys/uio.h @@ -0,0 +1,106 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_UIO_H +#define _SPL_UIO_H + +#include +#include +#include +#include + +typedef struct iovec iovec_t; + +typedef enum uio_rw { + UIO_READ = 0, + UIO_WRITE = 1, +} uio_rw_t; + +typedef enum uio_seg { + UIO_USERSPACE = 0, + UIO_SYSSPACE = 1, + UIO_USERISPACE= 2, + UIO_BVEC = 3, +} uio_seg_t; + +typedef struct uio { + union { + const struct iovec *uio_iov; + const struct bio_vec *uio_bvec; + }; + int uio_iovcnt; + offset_t uio_loffset; + uio_seg_t uio_segflg; + uint16_t uio_fmode; + uint16_t uio_extflg; + offset_t uio_limit; + ssize_t uio_resid; + size_t uio_skip; +} uio_t; + +typedef struct aio_req { + uio_t *aio_uio; + void *aio_private; +} aio_req_t; + +typedef enum xuio_type { + UIOTYPE_ASYNCIO, + UIOTYPE_ZEROCOPY, +} xuio_type_t; + + +#define UIOA_IOV_MAX 16 + +typedef struct uioa_page_s { + int uioa_pfncnt; + void **uioa_ppp; + caddr_t uioa_base; + size_t uioa_len; +} uioa_page_t; + +typedef struct xuio { + uio_t xu_uio; + enum xuio_type xu_type; + union { + struct { + uint32_t xu_a_state; + ssize_t xu_a_mbytes; + uioa_page_t *xu_a_lcur; + void **xu_a_lppp; + void *xu_a_hwst[4]; + uioa_page_t xu_a_locked[UIOA_IOV_MAX]; + } xu_aio; + + struct { + int xu_zc_rw; + void *xu_zc_priv; + } xu_zc; + } xu_ext; +} xuio_t; + +#define XUIO_XUZC_PRIV(xuio) xuio->xu_ext.xu_zc.xu_zc_priv +#define XUIO_XUZC_RW(xuio) xuio->xu_ext.xu_zc.xu_zc_rw + +#endif /* SPL_UIO_H */ --- linux-4.4.0.orig/spl/include/sys/unistd.h +++ linux-4.4.0/spl/include/sys/unistd.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_UNISTD_H +#define _SPL_UNISTD_H + +#endif /* SPL_UNISTD_H */ --- linux-4.4.0.orig/spl/include/sys/user.h +++ linux-4.4.0/spl/include/sys/user.h @@ -0,0 +1,42 @@ +/*****************************************************************************\ + * Copyright (C) 2015 Cluster Inc. + * Produced at ClusterHQ Inc (cf, DISCLAIMER). + * Written by Richard Yao . + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_USER_H +#define _SPL_USER_H + +/* + * We have uf_info_t for areleasef(). We implement areleasef() using a global + * linked list of all open file descriptors with the task structs referenced, + * so accessing the correct descriptor from areleasef() only requires knowing + * about the Linux task_struct. Since this is internal to our compatibility + * layer, we make it an opaque type. + * + * XXX: If the descriptor changes under us, we would get an incorrect + * reference. + */ + +struct uf_info; +typedef struct uf_info uf_info_t; + +#define P_FINFO(x) ((uf_info_t *)x) + +#endif /* SPL_USER_H */ --- linux-4.4.0.orig/spl/include/sys/va_list.h +++ linux-4.4.0/spl/include/sys/va_list.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VA_LIST_H +#define _SPL_VA_LIST_H + +#endif /* SPL_VA_LIST_H */ --- linux-4.4.0.orig/spl/include/sys/varargs.h +++ linux-4.4.0/spl/include/sys/varargs.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VARARGS_H +#define _SPL_VARARGS_H + +#define __va_list va_list + +#endif /* SPL_VARARGS_H */ --- linux-4.4.0.orig/spl/include/sys/vfs.h +++ linux-4.4.0/spl/include/sys/vfs.h @@ -0,0 +1,51 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ZFS_H +#define _SPL_ZFS_H + +#include +#include +#include +#include +#include +#include +#include + +#define MAXFIDSZ 64 + +typedef struct spl_fid { + union { + long fid_pad; + struct { + ushort_t len; /* length of data in bytes */ + char data[MAXFIDSZ];/* data (variable len) */ + } _fid; + } un; +} fid_t; + +#define fid_len un._fid.len +#define fid_data un._fid.data + +#endif /* SPL_ZFS_H */ --- linux-4.4.0.orig/spl/include/sys/vfs_opreg.h +++ linux-4.4.0/spl/include/sys/vfs_opreg.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_OPREG_H +#define _SPL_OPREG_H + +#endif /* SPL_OPREG_H */ --- linux-4.4.0.orig/spl/include/sys/vmem.h +++ linux-4.4.0/spl/include/sys/vmem.h @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#ifndef _SPL_VMEM_H +#define _SPL_VMEM_H + +#include +#include +#include + +typedef struct vmem { } vmem_t; + +extern vmem_t *heap_arena; +extern vmem_t *zio_alloc_arena; +extern vmem_t *zio_arena; + +extern size_t vmem_size(vmem_t *vmp, int typemask); + +/* + * Memory allocation interfaces + */ +#define VMEM_ALLOC 0x01 +#define VMEM_FREE 0x02 + +#ifndef VMALLOC_TOTAL +#define VMALLOC_TOTAL (VMALLOC_END - VMALLOC_START) +#endif + +/* + * vmem_* is an interface to a low level arena-based memory allocator on + * Illumos that is used to allocate virtual address space. The kmem SLAB + * allocator allocates slabs from it. Then the generic allocation functions + * kmem_{alloc,zalloc,free}() are layered on top of SLAB allocators. + * + * On Linux, the primary means of doing allocations is via kmalloc(), which + * is similarly layered on top of something called the buddy allocator. The + * buddy allocator is not available to kernel modules, it uses physical + * memory addresses rather than virtual memory addresses and is prone to + * fragmentation. + * + * Linux sets aside a relatively small address space for in-kernel virtual + * memory from which allocations can be done using vmalloc(). It might seem + * like a good idea to use vmalloc() to implement something similar to + * Illumos' allocator. However, this has the following problems: + * + * 1. Page directory table allocations are hard coded to use GFP_KERNEL. + * Consequently, any KM_PUSHPAGE or KM_NOSLEEP allocations done using + * vmalloc() will not have proper semantics. + * + * 2. Address space exhaustion is a real issue on 32-bit platforms where + * only a few 100MB are available. The kernel will handle it by spinning + * when it runs out of address space. + * + * 3. All vmalloc() allocations and frees are protected by a single global + * lock which serializes all allocations. + * + * 4. Accessing /proc/meminfo and /proc/vmallocinfo will iterate the entire + * list. The former will sum the allocations while the latter will print + * them to user space in a way that user space can keep the lock held + * indefinitely. When the total number of mapped allocations is large + * (several 100,000) a large amount of time will be spent waiting on locks. + * + * 5. Linux has a wait_on_bit() locking primitive that assumes physical + * memory is used, it simply does not work on virtual memory. Certain + * Linux structures (e.g. the superblock) use them and might be embedded + * into a structure from Illumos. This makes using Linux virtual memory + * unsafe in certain situations. + * + * It follows that we cannot obtain identical semantics to those on Illumos. + * Consequently, we implement the kmem_{alloc,zalloc,free}() functions in + * such a way that they can be used as drop-in replacements for small vmem_* + * allocations (8MB in size or smaller) and map vmem_{alloc,zalloc,free}() + * to them. + */ + +#define vmem_alloc(sz, fl) spl_vmem_alloc((sz), (fl), __func__, __LINE__) +#define vmem_zalloc(sz, fl) spl_vmem_zalloc((sz), (fl), __func__, __LINE__) +#define vmem_free(ptr, sz) spl_vmem_free((ptr), (sz)) +#define vmem_qcache_reap(ptr) ((void)0) + +extern void *spl_vmem_alloc(size_t sz, int fl, const char *func, int line); +extern void *spl_vmem_zalloc(size_t sz, int fl, const char *func, int line); +extern void spl_vmem_free(const void *ptr, size_t sz); + +int spl_vmem_init(void); +void spl_vmem_fini(void); + +#endif /* _SPL_VMEM_H */ --- linux-4.4.0.orig/spl/include/sys/vmsystm.h +++ linux-4.4.0/spl/include/sys/vmsystm.h @@ -0,0 +1,84 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VMSYSTM_H +#define _SPL_VMSYSTM_H + +#include +#include +#include +#include +#include +#include +#include + +#define membar_producer() smp_wmb() +#define physmem totalram_pages +#define freemem (nr_free_pages() + \ + global_page_state(NR_INACTIVE_FILE) + \ + global_page_state(NR_INACTIVE_ANON) + \ + global_page_state(NR_SLAB_RECLAIMABLE)) + +#define xcopyin(from, to, size) copy_from_user(to, from, size) +#define xcopyout(from, to, size) copy_to_user(to, from, size) + +static __inline__ int +copyin(const void *from, void *to, size_t len) +{ + /* On error copyin routine returns -1 */ + if (xcopyin(from, to, len)) + return -1; + + return 0; +} + +static __inline__ int +copyout(const void *from, void *to, size_t len) +{ + /* On error copyout routine returns -1 */ + if (xcopyout(from, to, len)) + return -1; + + return 0; +} + +static __inline__ int +copyinstr(const void *from, void *to, size_t len, size_t *done) +{ + size_t rc; + + if (len == 0) + return -ENAMETOOLONG; + + /* XXX: Should return ENAMETOOLONG if 'strlen(from) > len' */ + + memset(to, 0, len); + rc = copyin(from, to, len - 1); + if (done != NULL) + *done = rc; + + return 0; +} + +#endif /* SPL_VMSYSTM_H */ --- linux-4.4.0.orig/spl/include/sys/vnode.h +++ linux-4.4.0/spl/include/sys/vnode.h @@ -0,0 +1,207 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VNODE_H +#define _SPL_VNODE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Prior to linux-2.6.33 only O_DSYNC semantics were implemented and + * they used the O_SYNC flag. As of linux-2.6.33 the this behavior + * was properly split in to O_SYNC and O_DSYNC respectively. + */ +#ifndef O_DSYNC +#define O_DSYNC O_SYNC +#endif + +#define FREAD 1 +#define FWRITE 2 +#define FCREAT O_CREAT +#define FTRUNC O_TRUNC +#define FOFFMAX O_LARGEFILE +#define FSYNC O_SYNC +#define FDSYNC O_DSYNC +#define FRSYNC O_SYNC +#define FEXCL O_EXCL +#define FDIRECT O_DIRECT +#define FAPPEND O_APPEND + +#define FNODSYNC 0x10000 /* fsync pseudo flag */ +#define FNOFOLLOW 0x20000 /* don't follow symlinks */ + +#define F_FREESP 11 /* Free file space */ + + +/* + * The vnode AT_ flags are mapped to the Linux ATTR_* flags. + * This allows them to be used safely with an iattr structure. + * The AT_XVATTR flag has been added and mapped to the upper + * bit range to avoid conflicting with the standard Linux set. + */ +#undef AT_UID +#undef AT_GID + +#define AT_MODE ATTR_MODE +#define AT_UID ATTR_UID +#define AT_GID ATTR_GID +#define AT_SIZE ATTR_SIZE +#define AT_ATIME ATTR_ATIME +#define AT_MTIME ATTR_MTIME +#define AT_CTIME ATTR_CTIME + +#define ATTR_XVATTR (1 << 31) +#define AT_XVATTR ATTR_XVATTR + +#define ATTR_IATTR_MASK (ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_SIZE | \ + ATTR_ATIME | ATTR_MTIME | ATTR_CTIME | ATTR_FILE) + +#define CRCREAT 0x01 +#define RMFILE 0x02 + +#define B_INVAL 0x01 +#define B_TRUNC 0x02 + +#define LOOKUP_DIR 0x01 +#define LOOKUP_XATTR 0x02 +#define CREATE_XATTR_DIR 0x04 +#define ATTR_NOACLCHECK 0x20 + +typedef enum vtype { + VNON = 0, + VREG = 1, + VDIR = 2, + VBLK = 3, + VCHR = 4, + VLNK = 5, + VFIFO = 6, + VDOOR = 7, + VPROC = 8, + VSOCK = 9, + VPORT = 10, + VBAD = 11 +} vtype_t; + +typedef struct vattr { + enum vtype va_type; /* vnode type */ + u_int va_mask; /* attribute bit-mask */ + u_short va_mode; /* acc mode */ + uid_t va_uid; /* owner uid */ + gid_t va_gid; /* owner gid */ + long va_fsid; /* fs id */ + long va_nodeid; /* node # */ + uint32_t va_nlink; /* # links */ + uint64_t va_size; /* file size */ + struct timespec va_atime; /* last acc */ + struct timespec va_mtime; /* last mod */ + struct timespec va_ctime; /* last chg */ + dev_t va_rdev; /* dev */ + uint64_t va_nblocks; /* space used */ + uint32_t va_blksize; /* block size */ + uint32_t va_seq; /* sequence */ + struct dentry *va_dentry; /* dentry to wire */ +} vattr_t; + +typedef struct vnode { + struct file *v_file; + kmutex_t v_lock; /* protects vnode fields */ + uint_t v_flag; /* vnode flags (see below) */ + uint_t v_count; /* reference count */ + void *v_data; /* private data for fs */ + struct vfs *v_vfsp; /* ptr to containing VFS */ + struct stdata *v_stream; /* associated stream */ + enum vtype v_type; /* vnode type */ + dev_t v_rdev; /* device (VCHR, VBLK) */ + gfp_t v_gfp_mask; /* original mapping gfp mask */ +} vnode_t; + +typedef struct vn_file { + int f_fd; /* linux fd for lookup */ + struct task_struct *f_task; /* linux task this fd belongs to */ + struct file *f_file; /* linux file struct */ + atomic_t f_ref; /* ref count */ + kmutex_t f_lock; /* struct lock */ + loff_t f_offset; /* offset */ + vnode_t *f_vnode; /* vnode */ + struct list_head f_list; /* list referenced file_t's */ +} file_t; + +extern vnode_t *vn_alloc(int flag); +void vn_free(vnode_t *vp); +extern vtype_t vn_mode_to_vtype(mode_t); +extern mode_t vn_vtype_to_mode(vtype_t); +extern int vn_open(const char *path, uio_seg_t seg, int flags, int mode, + vnode_t **vpp, int x1, void *x2); +extern int vn_openat(const char *path, uio_seg_t seg, int flags, int mode, + vnode_t **vpp, int x1, void *x2, vnode_t *vp, int fd); +extern int vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, + offset_t off, uio_seg_t seg, int x1, rlim64_t x2, + void *x3, ssize_t *residp); +extern int vn_close(vnode_t *vp, int flags, int x1, int x2, void *x3, void *x4); +extern int vn_seek(vnode_t *vp, offset_t o, offset_t *op, void *ct); + +extern int vn_remove(const char *path, uio_seg_t seg, int flags); +extern int vn_rename(const char *path1, const char *path2, int x1); +extern int vn_getattr(vnode_t *vp, vattr_t *vap, int flags, void *x3, void *x4); +extern int vn_fsync(vnode_t *vp, int flags, void *x3, void *x4); +extern int vn_space(vnode_t *vp, int cmd, struct flock *bfp, int flag, + offset_t offset, void *x6, void *x7); +extern file_t *vn_getf(int fd); +extern void vn_releasef(int fd); +extern void vn_areleasef(int fd, uf_info_t *fip); +extern int vn_set_pwd(const char *filename); + +int spl_vn_init(void); +void spl_vn_fini(void); + +#define VOP_CLOSE vn_close +#define VOP_SEEK vn_seek +#define VOP_GETATTR vn_getattr +#define VOP_FSYNC vn_fsync +#define VOP_SPACE vn_space +#define VOP_PUTPAGE(vp, o, s, f, x1, x2) ((void)0) +#define vn_is_readonly(vp) 0 +#define getf vn_getf +#define releasef vn_releasef +#define areleasef vn_areleasef + +extern vnode_t *rootdir; + +#endif /* SPL_VNODE_H */ --- linux-4.4.0.orig/spl/include/sys/zmod.h +++ linux-4.4.0/spl/include/sys/zmod.h @@ -0,0 +1,69 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * z_compress_level/z_uncompress are nearly identical copies of the + * compress2/uncompress functions provided by the official zlib package + * available at http://zlib.net/. The only changes made we to slightly + * adapt the functions called to match the linux kernel implementation + * of zlib. The full zlib license follows: + * + * zlib.h -- interface of the 'zlib' general purpose compression library + * version 1.2.5, April 19th, 2010 + * + * Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Jean-loup Gailly + * Mark Adler +\*****************************************************************************/ + +#ifndef _SPL_ZMOD_H +#define _SPL_ZMOD_H + +#include +#include + +extern int z_compress_level(void *dest, size_t *destLen, const void *source, + size_t sourceLen, int level); +extern int z_uncompress(void *dest, size_t *destLen, const void *source, + size_t sourceLen); + +int spl_zlib_init(void); +void spl_zlib_fini(void); + +#endif /* SPL_ZMOD_H */ --- linux-4.4.0.orig/spl/include/sys/zone.h +++ linux-4.4.0/spl/include/sys/zone.h @@ -0,0 +1,36 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_ZONE_H +#define _SPL_ZONE_H + +#include + +#define GLOBAL_ZONEID 0 + +#define zone_dataset_visible(x, y) (1) +#define crgetzoneid(x) (GLOBAL_ZONEID) +#define INGLOBALZONE(z) (1) + +#endif /* SPL_ZONE_H */ --- linux-4.4.0.orig/spl/include/unistd.h +++ linux-4.4.0/spl/include/unistd.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_UNISTD_H +#define _SPL_UNISTD_H + +#endif /* SPL_UNISTD_H */ --- linux-4.4.0.orig/spl/include/util/Makefile.am +++ linux-4.4.0/spl/include/util/Makefile.am @@ -0,0 +1,14 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/util/qsort.h \ + $(top_srcdir)/include/util/sscanf.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/util +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/util/Makefile.in +++ linux-4.4.0/spl/include/util/Makefile.in @@ -0,0 +1,622 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/util +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/util/qsort.h \ + $(top_srcdir)/include/util/sscanf.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/util/qsort.h \ + $(top_srcdir)/include/util/sscanf.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/util +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/util/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/util/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/util/qsort.h +++ linux-4.4.0/spl/include/util/qsort.h @@ -0,0 +1,32 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_QSORT_H +#define _SPL_QSORT_H + +#include + +#define qsort(base, num, size, cmp) sort(base, num, size, cmp, NULL) + +#endif /* SPL_QSORT_H */ --- linux-4.4.0.orig/spl/include/util/sscanf.h +++ linux-4.4.0/spl/include/util/sscanf.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_UTIL_SSCANF_H +#define _SPL_UTIL_SSCANF_H + +#endif /* SPL_UTIL_SSCAN_H */ --- linux-4.4.0.orig/spl/include/vm/Makefile.am +++ linux-4.4.0/spl/include/vm/Makefile.am @@ -0,0 +1,15 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/vm/anon.h \ + $(top_srcdir)/include/vm/pvn.h \ + $(top_srcdir)/include/vm/seg_kmem.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_KERNEL +kerneldir = @prefix@/src/spl-$(VERSION)/include/vm +kernel_HEADERS = $(KERNEL_H) +endif --- linux-4.4.0.orig/spl/include/vm/Makefile.in +++ linux-4.4.0/spl/include/vm/Makefile.in @@ -0,0 +1,624 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/vm +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/vm/anon.h \ + $(top_srcdir)/include/vm/pvn.h \ + $(top_srcdir)/include/vm/seg_kmem.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" +HEADERS = $(kernel_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/vm/anon.h \ + $(top_srcdir)/include/vm/pvn.h \ + $(top_srcdir)/include/vm/seg_kmem.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/spl-$(VERSION)/include/vm +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/vm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/vm/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-kernelHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/include/vm/anon.h +++ linux-4.4.0/spl/include/vm/anon.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VM_ANON_H +#define _SPL_VM_ANON_H + +#endif /* SPL_VM_ANON_H */ --- linux-4.4.0.orig/spl/include/vm/pvn.h +++ linux-4.4.0/spl/include/vm/pvn.h @@ -0,0 +1,28 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_VM_PVN_H +#define _SPL_VM_PVN_H + +#endif /* SPL_VM_PVN_H */ --- linux-4.4.0.orig/spl/include/vm/seg_kmem.h +++ linux-4.4.0/spl/include/vm/seg_kmem.h @@ -0,0 +1,30 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_SEG_KMEM_H +#define _SPL_SEG_KMEM_H + +#include + +#endif /* SPL_SEG_KMEM_H */ --- linux-4.4.0.orig/spl/lib/Makefile.am +++ linux-4.4.0/spl/lib/Makefile.am @@ -0,0 +1,6 @@ +include $(top_srcdir)/config/Rules.am + +noinst_LTLIBRARIES = libcommon.la +libcommon_la_SOURCES = list.c + +EXTRA_DIST = list.h --- linux-4.4.0.orig/spl/lib/Makefile.in +++ linux-4.4.0/spl/lib/Makefile.in @@ -0,0 +1,654 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Common rules for user space components. +############################################################################### + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = lib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libcommon_la_LIBADD = +am_libcommon_la_OBJECTS = list.lo +libcommon_la_OBJECTS = $(am_libcommon_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libcommon_la_SOURCES) +DIST_SOURCES = $(libcommon_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am \ + $(top_srcdir)/config/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h +AM_LIBTOOLFLAGS = --silent +AM_CPPFLAGS = -D__USE_LARGEFILE64 +AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing \ + ${DEBUG_CFLAGS} +noinst_LTLIBRARIES = libcommon.la +libcommon_la_SOURCES = list.c +EXTRA_DIST = list.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/config/Rules.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) $(EXTRA_libcommon_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/lib/list.c +++ linux-4.4.0/spl/lib/list.c @@ -0,0 +1,827 @@ +/***************************************************************************** + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2001-2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Chris Dunlap . + * UCRL-CODE-235197 + * + * This file is from LSD-Tools, the LLNL Software Development Toolbox. + * + * LSD-Tools is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * LSD-Tools is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with LSD-Tools. If not, see . + ***************************************************************************** + * Refer to "list.h" for documentation on public functions. + *****************************************************************************/ + +#ifdef WITH_PTHREADS +# include +#endif /* WITH_PTHREADS */ + +#include +#include +#include +#include +#include "list.h" + + +/********************* + * lsd_fatal_error * + *********************/ + +#ifdef WITH_LSD_FATAL_ERROR_FUNC +# undef lsd_fatal_error + extern void lsd_fatal_error(char *file, int line, char *mesg); +#else /* !WITH_LSD_FATAL_ERROR_FUNC */ +# ifndef lsd_fatal_error +# include +# include +# include +# define lsd_fatal_error(file, line, mesg) \ + do { \ + fprintf(stderr, "ERROR: [%s:%d] %s: %s\n", \ + file, line, mesg, strerror(errno)); \ + } while (0) +# endif /* !lsd_fatal_error */ +#endif /* !WITH_LSD_FATAL_ERROR_FUNC */ + + +/********************* + * lsd_nomem_error * + *********************/ + +#ifdef WITH_LSD_NOMEM_ERROR_FUNC +# undef lsd_nomem_error + extern void * lsd_nomem_error(char *file, int line, char *mesg); +#else /* !WITH_LSD_NOMEM_ERROR_FUNC */ +# ifndef lsd_nomem_error +# define lsd_nomem_error(file, line, mesg) (NULL) +# endif /* !lsd_nomem_error */ +#endif /* !WITH_LSD_NOMEM_ERROR_FUNC */ + + +/*************** + * Constants * + ***************/ + +#define LIST_ALLOC 32 +#define LIST_MAGIC 0xDEADBEEF + + +/**************** + * Data Types * + ****************/ + +struct listNode { + void *data; /* node's data */ + struct listNode *next; /* next node in list */ +}; + +struct listIterator { + struct list *list; /* the list being iterated */ + struct listNode *pos; /* the next node to be iterated */ + struct listNode **prev; /* addr of 'next' ptr to prv It node */ + struct listIterator *iNext; /* iterator chain for list_destroy() */ +#ifndef NDEBUG + unsigned int magic; /* sentinel for asserting validity */ +#endif /* !NDEBUG */ +}; + +struct list { + struct listNode *head; /* head of the list */ + struct listNode **tail; /* addr of last node's 'next' ptr */ + struct listIterator *iNext; /* iterator chain for list_destroy() */ + ListDelF fDel; /* function to delete node data */ + int count; /* number of nodes in list */ +#ifdef WITH_PTHREADS + pthread_mutex_t mutex; /* mutex to protect access to list */ +#endif /* WITH_PTHREADS */ +#ifndef NDEBUG + unsigned int magic; /* sentinel for asserting validity */ +#endif /* !NDEBUG */ +}; + +typedef struct listNode * ListNode; + + +/**************** + * Prototypes * + ****************/ + +static void * list_node_create (List l, ListNode *pp, void *x); +static void * list_node_destroy (List l, ListNode *pp); +static List list_alloc (void); +static void list_free (List l); +static ListNode list_node_alloc (void); +static void list_node_free (ListNode p); +static ListIterator list_iterator_alloc (void); +static void list_iterator_free (ListIterator i); +static void * list_alloc_aux (int size, void *pfreelist); +static void list_free_aux (void *x, void *pfreelist); + + +/*************** + * Variables * + ***************/ + +static List list_free_lists = NULL; +static ListNode list_free_nodes = NULL; +static ListIterator list_free_iterators = NULL; + +#ifdef WITH_PTHREADS +static pthread_mutex_t list_free_lock = PTHREAD_MUTEX_INITIALIZER; +#endif /* WITH_PTHREADS */ + + +/************ + * Macros * + ************/ + +#ifdef WITH_PTHREADS + +# define list_mutex_init(mutex) \ + do { \ + int e = pthread_mutex_init(mutex, NULL); \ + if (e != 0) { \ + errno = e; \ + lsd_fatal_error(__FILE__, __LINE__, "list mutex init"); \ + abort(); \ + } \ + } while (0) + +# define list_mutex_lock(mutex) \ + do { \ + int e = pthread_mutex_lock(mutex); \ + if (e != 0) { \ + errno = e; \ + lsd_fatal_error(__FILE__, __LINE__, "list mutex lock"); \ + abort(); \ + } \ + } while (0) + +# define list_mutex_unlock(mutex) \ + do { \ + int e = pthread_mutex_unlock(mutex); \ + if (e != 0) { \ + errno = e; \ + lsd_fatal_error(__FILE__, __LINE__, "list mutex unlock"); \ + abort(); \ + } \ + } while (0) + +# define list_mutex_destroy(mutex) \ + do { \ + int e = pthread_mutex_destroy(mutex); \ + if (e != 0) { \ + errno = e; \ + lsd_fatal_error(__FILE__, __LINE__, "list mutex destroy"); \ + abort(); \ + } \ + } while (0) + +# ifndef NDEBUG + static int list_mutex_is_locked (pthread_mutex_t *mutex); +# endif /* !NDEBUG */ + +#else /* !WITH_PTHREADS */ + +# define list_mutex_init(mutex) +# define list_mutex_lock(mutex) +# define list_mutex_unlock(mutex) +# define list_mutex_destroy(mutex) +# define list_mutex_is_locked(mutex) (1) + +#endif /* !WITH_PTHREADS */ + + +/*************** + * Functions * + ***************/ + +List +list_create (ListDelF f) +{ + List l; + + if (!(l = list_alloc())) + return(lsd_nomem_error(__FILE__, __LINE__, "list create")); + l->head = NULL; + l->tail = &l->head; + l->iNext = NULL; + l->fDel = f; + l->count = 0; + list_mutex_init(&l->mutex); + assert(l->magic = LIST_MAGIC); /* set magic via assert abuse */ + return(l); +} + + +void +list_destroy (List l) +{ + ListIterator i, iTmp; + ListNode p, pTmp; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + i = l->iNext; + while (i) { + assert(i->magic == LIST_MAGIC); + iTmp = i->iNext; + assert(i->magic = ~LIST_MAGIC); /* clear magic via assert abuse */ + list_iterator_free(i); + i = iTmp; + } + p = l->head; + while (p) { + pTmp = p->next; + if (p->data && l->fDel) + l->fDel(p->data); + list_node_free(p); + p = pTmp; + } + assert(l->magic = ~LIST_MAGIC); /* clear magic via assert abuse */ + list_mutex_unlock(&l->mutex); + list_mutex_destroy(&l->mutex); + list_free(l); + return; +} + + +int +list_is_empty (List l) +{ + int n; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + n = l->count; + list_mutex_unlock(&l->mutex); + return(n == 0); +} + + +int +list_count (List l) +{ + int n; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + n = l->count; + list_mutex_unlock(&l->mutex); + return(n); +} + + +void * +list_append (List l, void *x) +{ + void *v; + + assert(l != NULL); + assert(x != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_create(l, l->tail, x); + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_prepend (List l, void *x) +{ + void *v; + + assert(l != NULL); + assert(x != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_create(l, &l->head, x); + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_find_first (List l, ListFindF f, void *key) +{ + ListNode p; + void *v = NULL; + + assert(l != NULL); + assert(f != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + for (p=l->head; p; p=p->next) { + if (f(p->data, key)) { + v = p->data; + break; + } + } + list_mutex_unlock(&l->mutex); + return(v); +} + + +int +list_delete_all (List l, ListFindF f, void *key) +{ + ListNode *pp; + void *v; + int n = 0; + + assert(l != NULL); + assert(f != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + pp = &l->head; + while (*pp) { + if (f((*pp)->data, key)) { + if ((v = list_node_destroy(l, pp))) { + if (l->fDel) + l->fDel(v); + n++; + } + } + else { + pp = &(*pp)->next; + } + } + list_mutex_unlock(&l->mutex); + return(n); +} + + +int +list_for_each (List l, ListForF f, void *arg) +{ + ListNode p; + int n = 0; + + assert(l != NULL); + assert(f != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + for (p=l->head; p; p=p->next) { + n++; + if (f(p->data, arg) < 0) { + n = -n; + break; + } + } + list_mutex_unlock(&l->mutex); + return(n); +} + + +void +list_sort (List l, ListCmpF f) +{ +/* Note: Time complexity O(n^2). + */ + ListNode *pp, *ppPrev, *ppPos, pTmp; + ListIterator i; + + assert(l != NULL); + assert(f != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + if (l->count > 1) { + ppPrev = &l->head; + pp = &(*ppPrev)->next; + while (*pp) { + if (f((*pp)->data, (*ppPrev)->data) < 0) { + ppPos = &l->head; + while (f((*pp)->data, (*ppPos)->data) >= 0) + ppPos = &(*ppPos)->next; + pTmp = (*pp)->next; + (*pp)->next = *ppPos; + *ppPos = *pp; + *pp = pTmp; + if (ppPrev == ppPos) + ppPrev = &(*ppPrev)->next; + } + else { + ppPrev = pp; + pp = &(*pp)->next; + } + } + l->tail = pp; + + for (i=l->iNext; i; i=i->iNext) { + assert(i->magic == LIST_MAGIC); + i->pos = i->list->head; + i->prev = &i->list->head; + } + } + list_mutex_unlock(&l->mutex); + return; +} + + +void * +list_push (List l, void *x) +{ + void *v; + + assert(l != NULL); + assert(x != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_create(l, &l->head, x); + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_pop (List l) +{ + void *v; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_destroy(l, &l->head); + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_peek (List l) +{ + void *v; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = (l->head) ? l->head->data : NULL; + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_enqueue (List l, void *x) +{ + void *v; + + assert(l != NULL); + assert(x != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_create(l, l->tail, x); + list_mutex_unlock(&l->mutex); + return(v); +} + + +void * +list_dequeue (List l) +{ + void *v; + + assert(l != NULL); + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + v = list_node_destroy(l, &l->head); + list_mutex_unlock(&l->mutex); + return(v); +} + + +ListIterator +list_iterator_create (List l) +{ + ListIterator i; + + assert(l != NULL); + if (!(i = list_iterator_alloc())) + return(lsd_nomem_error(__FILE__, __LINE__, "list iterator create")); + i->list = l; + list_mutex_lock(&l->mutex); + assert(l->magic == LIST_MAGIC); + i->pos = l->head; + i->prev = &l->head; + i->iNext = l->iNext; + l->iNext = i; + assert(i->magic = LIST_MAGIC); /* set magic via assert abuse */ + list_mutex_unlock(&l->mutex); + return(i); +} + + +void +list_iterator_reset (ListIterator i) +{ + assert(i != NULL); + assert(i->magic == LIST_MAGIC); + list_mutex_lock(&i->list->mutex); + assert(i->list->magic == LIST_MAGIC); + i->pos = i->list->head; + i->prev = &i->list->head; + list_mutex_unlock(&i->list->mutex); + return; +} + + +void +list_iterator_destroy (ListIterator i) +{ + ListIterator *pi; + + assert(i != NULL); + assert(i->magic == LIST_MAGIC); + list_mutex_lock(&i->list->mutex); + assert(i->list->magic == LIST_MAGIC); + for (pi=&i->list->iNext; *pi; pi=&(*pi)->iNext) { + assert((*pi)->magic == LIST_MAGIC); + if (*pi == i) { + *pi = (*pi)->iNext; + break; + } + } + list_mutex_unlock(&i->list->mutex); + assert(i->magic = ~LIST_MAGIC); /* clear magic via assert abuse */ + list_iterator_free(i); + return; +} + + +void * +list_next (ListIterator i) +{ + ListNode p; + + assert(i != NULL); + assert(i->magic == LIST_MAGIC); + list_mutex_lock(&i->list->mutex); + assert(i->list->magic == LIST_MAGIC); + if ((p = i->pos)) + i->pos = p->next; + if (*i->prev != p) + i->prev = &(*i->prev)->next; + list_mutex_unlock(&i->list->mutex); + return(p ? p->data : NULL); +} + + +void * +list_insert (ListIterator i, void *x) +{ + void *v; + + assert(i != NULL); + assert(x != NULL); + assert(i->magic == LIST_MAGIC); + list_mutex_lock(&i->list->mutex); + assert(i->list->magic == LIST_MAGIC); + v = list_node_create(i->list, i->prev, x); + list_mutex_unlock(&i->list->mutex); + return(v); +} + + +void * +list_find (ListIterator i, ListFindF f, void *key) +{ + void *v; + + assert(i != NULL); + assert(f != NULL); + assert(i->magic == LIST_MAGIC); + while ((v=list_next(i)) && !f(v,key)) {;} + return(v); +} + + +void * +list_remove (ListIterator i) +{ + void *v = NULL; + + assert(i != NULL); + assert(i->magic == LIST_MAGIC); + list_mutex_lock(&i->list->mutex); + assert(i->list->magic == LIST_MAGIC); + if (*i->prev != i->pos) + v = list_node_destroy(i->list, i->prev); + list_mutex_unlock(&i->list->mutex); + return(v); +} + + +int +list_delete (ListIterator i) +{ + void *v; + + assert(i != NULL); + assert(i->magic == LIST_MAGIC); + if ((v = list_remove(i))) { + if (i->list->fDel) + i->list->fDel(v); + return(1); + } + return(0); +} + + +static void * +list_node_create (List l, ListNode *pp, void *x) +{ +/* Inserts data pointed to by [x] into list [l] after [pp], + * the address of the previous node's "next" ptr. + * Returns a ptr to data [x], or NULL if insertion fails. + * This routine assumes the list is already locked upon entry. + */ + ListNode p; + ListIterator i; + + assert(l != NULL); + assert(l->magic == LIST_MAGIC); + assert(list_mutex_is_locked(&l->mutex)); + assert(pp != NULL); + assert(x != NULL); + if (!(p = list_node_alloc())) + return(lsd_nomem_error(__FILE__, __LINE__, "list node create")); + p->data = x; + if (!(p->next = *pp)) + l->tail = &p->next; + *pp = p; + l->count++; + for (i=l->iNext; i; i=i->iNext) { + assert(i->magic == LIST_MAGIC); + if (i->prev == pp) + i->prev = &p->next; + else if (i->pos == p->next) + i->pos = p; + assert((i->pos == *i->prev) || (i->pos == (*i->prev)->next)); + } + return(x); +} + + +static void * +list_node_destroy (List l, ListNode *pp) +{ +/* Removes the node pointed to by [*pp] from from list [l], + * where [pp] is the address of the previous node's "next" ptr. + * Returns the data ptr associated with list item being removed, + * or NULL if [*pp] points to the NULL element. + * This routine assumes the list is already locked upon entry. + */ + void *v; + ListNode p; + ListIterator i; + + assert(l != NULL); + assert(l->magic == LIST_MAGIC); + assert(list_mutex_is_locked(&l->mutex)); + assert(pp != NULL); + if (!(p = *pp)) + return(NULL); + v = p->data; + if (!(*pp = p->next)) + l->tail = pp; + l->count--; + for (i=l->iNext; i; i=i->iNext) { + assert(i->magic == LIST_MAGIC); + if (i->pos == p) + i->pos = p->next, i->prev = pp; + else if (i->prev == &p->next) + i->prev = pp; + assert((i->pos == *i->prev) || (i->pos == (*i->prev)->next)); + } + list_node_free(p); + return(v); +} + + +static List +list_alloc (void) +{ + return(list_alloc_aux(sizeof(struct list), &list_free_lists)); +} + + +static void +list_free (List l) +{ + list_free_aux(l, &list_free_lists); + return; +} + + +static ListNode +list_node_alloc (void) +{ + return(list_alloc_aux(sizeof(struct listNode), &list_free_nodes)); +} + + +static void +list_node_free (ListNode p) +{ + list_free_aux(p, &list_free_nodes); + return; +} + + +static ListIterator +list_iterator_alloc (void) +{ + return(list_alloc_aux(sizeof(struct listIterator), &list_free_iterators)); +} + + +static void +list_iterator_free (ListIterator i) +{ + list_free_aux(i, &list_free_iterators); + return; +} + + +static void * +list_alloc_aux (int size, void *pfreelist) +{ +/* Allocates an object of [size] bytes from the freelist [*pfreelist]. + * Memory is added to the freelist in chunks of size LIST_ALLOC. + * Returns a ptr to the object, or NULL if the memory request fails. + */ + void **px; + void **pfree = pfreelist; + void **plast; + + assert(sizeof(char) == 1); + assert(size >= (int)sizeof(void *)); + assert(pfreelist != NULL); + assert(LIST_ALLOC > 0); + list_mutex_lock(&list_free_lock); + if (!*pfree) { + if ((*pfree = malloc(LIST_ALLOC * size))) { + px = *pfree; + plast = (void **) ((char *) *pfree + ((LIST_ALLOC - 1) * size)); + while (px < plast) + *px = (char *) px + size, px = *px; + *plast = NULL; + } + } + if ((px = *pfree)) + *pfree = *px; + else + errno = ENOMEM; + list_mutex_unlock(&list_free_lock); + return(px); +} + + +static void +list_free_aux (void *x, void *pfreelist) +{ +/* Frees the object [x], returning it to the freelist [*pfreelist]. + */ + void **px = x; + void **pfree = pfreelist; + + assert(x != NULL); + assert(pfreelist != NULL); + list_mutex_lock(&list_free_lock); + *px = *pfree; + *pfree = px; + list_mutex_unlock(&list_free_lock); + return; +} + + +#ifndef NDEBUG +#ifdef WITH_PTHREADS +static int +list_mutex_is_locked (pthread_mutex_t *mutex) +{ +/* Returns true if the mutex is locked; o/w, returns false. + */ + int rc; + + assert(mutex != NULL); + rc = pthread_mutex_trylock(mutex); + return(rc == EBUSY ? 1 : 0); +} +#endif /* WITH_PTHREADS */ +#endif /* !NDEBUG */ --- linux-4.4.0.orig/spl/lib/list.h +++ linux-4.4.0/spl/lib/list.h @@ -0,0 +1,279 @@ +/***************************************************************************** + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2001-2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Chris Dunlap . + * UCRL-CODE-235197 + * + * This file is from LSD-Tools, the LLNL Software Development Toolbox. + * + * LSD-Tools is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * LSD-Tools is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with LSD-Tools. If not, see . + *****************************************************************************/ + +#ifndef LSD_LIST_H +#define LSD_LIST_H + + +/*********** + * Notes * + ***********/ +/* + * If NDEBUG is not defined, internal debug code will be enabled. This is + * intended for development use only and production code should define NDEBUG. + * + * If WITH_LSD_FATAL_ERROR_FUNC is defined, the linker will expect to + * find an external lsd_fatal_error(file,line,mesg) function. By default, + * lsd_fatal_error(file,line,mesg) is a macro definition that outputs an + * error message to stderr. This macro may be redefined to invoke another + * routine instead. + * + * If WITH_LSD_NOMEM_ERROR_FUNC is defined, the linker will expect to + * find an external lsd_nomem_error(file,line,mesg) function. By default, + * lsd_nomem_error(file,line,mesg) is a macro definition that returns NULL. + * This macro may be redefined to invoke another routine instead. + * + * If WITH_PTHREADS is defined, these routines will be thread-safe. + */ + + +/**************** + * Data Types * + ****************/ + +typedef struct list * List; +/* + * List opaque data type. + */ + +typedef struct listIterator * ListIterator; +/* + * List Iterator opaque data type. + */ + +typedef void (*ListDelF) (void *x); +/* + * Function prototype to deallocate data stored in a list. + * This function is responsible for freeing all memory associated + * with an item, including all subordinate items (if applicable). + */ + +typedef int (*ListCmpF) (void *x, void *y); +/* + * Function prototype for comparing two items in a list. + * Returns less-than-zero if (xy). + */ + +typedef int (*ListFindF) (void *x, void *key); +/* + * Function prototype for matching items in a list. + * Returns non-zero if (x==key); o/w returns zero. + */ + +typedef int (*ListForF) (void *x, void *arg); +/* + * Function prototype for operating on each item in a list. + * Returns less-than-zero on error. + */ + + +/******************************* + * General-Purpose Functions * + *******************************/ + +List list_create (ListDelF f); +/* + * Creates and returns a new empty list, or lsd_nomem_error() on failure. + * The deletion function [f] is used to deallocate memory used by items + * in the list; if this is NULL, memory associated with these items + * will not be freed when the list is destroyed. + * Note: Abandoning a list without calling list_destroy() will result + * in a memory leak. + */ + +void list_destroy (List l); +/* + * Destroys list [l], freeing memory used for list iterators and the + * list itself; if a deletion function was specified when the list + * was created, it will be called for each item in the list. + */ + +int list_is_empty (List l); +/* + * Returns non-zero if list [l] is empty; o/w returns zero. + */ + +int list_count (List l); +/* + * Returns the number of items in list [l]. + */ + + +/*************************** + * List Access Functions * + ***************************/ + +void * list_append (List l, void *x); +/* + * Inserts data [x] at the end of list [l]. + * Returns the data's ptr, or lsd_nomem_error() if insertion failed. + */ + +void * list_prepend (List l, void *x); +/* + * Inserts data [x] at the beginning of list [l]. + * Returns the data's ptr, or lsd_nomem_error() if insertion failed. + */ + +void * list_find_first (List l, ListFindF f, void *key); +/* + * Traverses list [l] using [f] to match each item with [key]. + * Returns a ptr to the first item for which the function [f] + * returns non-zero, or NULL if no such item is found. + * Note: This function differs from list_find() in that it does not require + * a list iterator; it should only be used when all list items are known + * to be unique (according to the function [f]). + */ + +int list_delete_all (List l, ListFindF f, void *key); +/* + * Traverses list [l] using [f] to match each item with [key]. + * Removes all items from the list for which the function [f] returns + * non-zero; if a deletion function was specified when the list was + * created, it will be called to deallocate each item being removed. + * Returns a count of the number of items removed from the list. + */ + +int list_for_each (List l, ListForF f, void *arg); +/* + * For each item in list [l], invokes the function [f] with [arg]. + * Returns a count of the number of items on which [f] was invoked. + * If [f] returns <0 for a given item, the iteration is aborted and the + * function returns the negative of that item's position in the list. + */ + +void list_sort (List l, ListCmpF f); +/* + * Sorts list [l] into ascending order according to the function [f]. + * Note: Sorting a list resets all iterators associated with the list. + * Note: The sort algorithm is stable. + */ + + +/**************************** + * Stack Access Functions * + ****************************/ + +void * list_push (List l, void *x); +/* + * Pushes data [x] onto the top of stack [l]. + * Returns the data's ptr, or lsd_nomem_error() if insertion failed. + */ + +void * list_pop (List l); +/* + * Pops the data item at the top of the stack [l]. + * Returns the data's ptr, or NULL if the stack is empty. + */ + +void * list_peek (List l); +/* + * Peeks at the data item at the top of the stack (or head of the queue) [l]. + * Returns the data's ptr, or NULL if the stack (or queue) is empty. + * Note: The item is not removed from the list. + */ + + +/**************************** + * Queue Access Functions * + ****************************/ + +void * list_enqueue (List l, void *x); +/* + * Enqueues data [x] at the tail of queue [l]. + * Returns the data's ptr, or lsd_nomem_error() if insertion failed. + */ + +void * list_dequeue (List l); +/* + * Dequeues the data item at the head of the queue [l]. + * Returns the data's ptr, or NULL if the queue is empty. + */ + + +/***************************** + * List Iterator Functions * + *****************************/ + +ListIterator list_iterator_create (List l); +/* + * Creates and returns a list iterator for non-destructively traversing + * list [l], or lsd_nomem_error() on failure. + */ + +void list_iterator_reset (ListIterator i); +/* + * Resets the list iterator [i] to start traversal at the beginning + * of the list. + */ + +void list_iterator_destroy (ListIterator i); +/* + * Destroys the list iterator [i]; list iterators not explicitly destroyed + * in this manner will be destroyed when the list is deallocated via + * list_destroy(). + */ + +void * list_next (ListIterator i); +/* + * Returns a ptr to the next item's data, + * or NULL once the end of the list is reached. + * Example: i=list_iterator_create(i); while ((x=list_next(i))) {...} + */ + +void * list_insert (ListIterator i, void *x); +/* + * Inserts data [x] immediately before the last item returned via list + * iterator [i]; once the list iterator reaches the end of the list, + * insertion is made at the list's end. + * Returns the data's ptr, or lsd_nomem_error() if insertion failed. + */ + +void * list_find (ListIterator i, ListFindF f, void *key); +/* + * Traverses the list from the point of the list iterator [i] + * using [f] to match each item with [key]. + * Returns a ptr to the next item for which the function [f] + * returns non-zero, or NULL once the end of the list is reached. + * Example: i=list_iterator_reset(i); while ((x=list_find(i,f,k))) {...} + */ + +void * list_remove (ListIterator i); +/* + * Removes from the list the last item returned via list iterator [i] + * and returns the data's ptr. + * Note: The client is responsible for freeing the returned data. + */ + +int list_delete (ListIterator i); +/* + * Removes from the list the last item returned via list iterator [i]; + * if a deletion function was specified when the list was created, + * it will be called to deallocate the item being removed. + * Returns a count of the number of items removed from the list + * (ie, '1' if the item was removed, and '0' otherwise). + */ + + +#endif /* !LSD_LIST_H */ --- linux-4.4.0.orig/spl/man/Makefile.am +++ linux-4.4.0/spl/man/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = man1 man5 --- linux-4.4.0.orig/spl/man/Makefile.in +++ linux-4.4.0/spl/man/Makefile.in @@ -0,0 +1,672 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = man +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = man1 man5 +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/man/man1/Makefile.am +++ linux-4.4.0/spl/man/man1/Makefile.am @@ -0,0 +1,4 @@ +dist_man_MANS = splat.1 + +install-data-local: + $(INSTALL) -d -m 0755 "$(DESTDIR)$(mandir)/man1" --- linux-4.4.0.orig/spl/man/man1/Makefile.in +++ linux-4.4.0/spl/man/man1/Makefile.in @@ -0,0 +1,575 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = man/man1 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(dist_man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +dist_man_MANS = splat.1 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/man1/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/man1/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +install-data-local: + $(INSTALL) -d -m 0755 "$(DESTDIR)$(mandir)/man1" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/man/man1/splat.1 +++ linux-4.4.0/spl/man/man1/splat.1 @@ -0,0 +1,94 @@ +'\" t +.\" +.\" Copyright 2013 Darik Horn . All rights reserved. +.\" +.TH splat 1 "2013 MAR 16" "ZFS on Linux" "User Commands" + +.SH NAME +splat \- Solaris Porting LAyer Tests +.SH SYNOPSIS +.LP +.BI "splat [\-chvx] < \-\-all | \-\-list | \-\-test " "subsystem" ":" "test" " [...] >" + +.SH DESCRIPTION +This utility uses the splat.ko kernel module to test the spl.ko kernel +module. Run "modprobe splat" before invoking \fBsplat\fR. + +.SH OPTIONS +.HP +.BI "\-a" "" ", \-\-all" "" +.IP +Run all available tests on all subsystems. +.HP +.BI "\-c" "" ", \-\-nocolor" "" +.IP +Disable output highlighting. By default, "Fail" is printed in red text +and "Pass" is printed in green text. +.HP +.BI "\-h" "" ", \-\-help" "" +.IP +Print the usage message. +.HP +.BI "\-l" "" ", \-\-list" "" +.IP +For each spl.ko subsystem, print all available test names and +hexidecimal identifiers with a short description. +.HP +.BI "\-t" " subsystem" ":" "test" ", \-\-test" " subsystem" ":" "test" +.HP +.BI "\-t" " subsystem" ":all" "" ", \-\-test" " subsystem" ":all" "" +.IP +Run the \fItest\fR diagnostic routine for the spl.ko \fIsubsystem\fR. +Specify this option more than once to run multiple tests. + +The \fItest\fR and \fIsubsystem\fR parameters are the names or +hexidecimal identifiers returned by the \fBsplat --list\fR command. + +If \fIsubsystem\fR is a name and not a hexidecimal identifier, then the +\fBall\fR keyword can be used to run all available \fIsubsystem\fR +tests. + +.HP +.BI "\-v" "" ", \-\-verbose" "" +.HP +.IP +Increase verbosity. +.HP +.BI "\-x" "" ", \-\-exit" "" +.IP +Stop running tests after the first failure. + +.SH "EXAMPLES" +.LP +Test everything in the spl.ko kernel module: +.IP +# splat --all --verbose +.LP +Test the entire kernel memory subsystem: +.IP +# splat --test kmem:all +.LP +Test the kernel compression and queue waiting facilities: +.IP +# splat --test zlib:compress/uncompress --test taskq:wait +.LP +This is the same as the previous command, except that the subsystems +and tests are referenced by hexidecimal identifier instead of by name: +.IP +# splat -t 0x0f00:0x0f01 -t 0x0200:0x0204 + +.SH "NOTES" +All tests always return a green "Pass" result on a healthy system. Any +red "Fail" result should be investigated or reported. + +.SH "BUGS" +Some tests can deadlock the kernel if an X11 desktop is running, +especially if a proprietary blob driver is loaded for the video +hardware. + +.SH "AUTHORS" +This man page was written by Darik Horn . + +.SH "SEE ALSO" +.BR zpios (1), +.BR ztest (1) --- linux-4.4.0.orig/spl/man/man5/Makefile.am +++ linux-4.4.0/spl/man/man5/Makefile.am @@ -0,0 +1,4 @@ +dist_man_MANS = spl-module-parameters.5 + +install-data-local: + $(INSTALL) -d -m 0755 "$(DESTDIR)$(mandir)/man5" --- linux-4.4.0.orig/spl/man/man5/Makefile.in +++ linux-4.4.0/spl/man/man5/Makefile.in @@ -0,0 +1,575 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = man/man5 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man5dir = $(mandir)/man5 +am__installdirs = "$(DESTDIR)$(man5dir)" +NROFF = nroff +MANS = $(dist_man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +dist_man_MANS = spl-module-parameters.5 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/man5/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/man5/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man5: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man5dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.5[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man5dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man5 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man5 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man5 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-man uninstall-man5 + +.PRECIOUS: Makefile + + +install-data-local: + $(INSTALL) -d -m 0755 "$(DESTDIR)$(mandir)/man5" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/man/man5/spl-module-parameters.5 +++ linux-4.4.0/spl/man/man5/spl-module-parameters.5 @@ -0,0 +1,300 @@ +'\" te +.\" +.\" Copyright 2013 Turbo Fredriksson . All rights reserved. +.\" +.TH SPL-MODULE-PARAMETERS 5 "Nov 18, 2013" +.SH NAME +spl\-module\-parameters \- SPL module parameters +.SH DESCRIPTION +.sp +.LP +Description of the different parameters to the SPL module. + +.SS "Module parameters" +.sp +.LP + +.sp +.ne 2 +.na +\fBspl_kmem_cache_expire\fR (uint) +.ad +.RS 12n +Cache expiration is part of default Illumos cache behavior. The idea is +that objects in magazines which have not been recently accessed should be +returned to the slabs periodically. This is known as cache aging and +when enabled objects will be typically returned after 15 seconds. +.sp +On the other hand Linux slabs are designed to never move objects back to +the slabs unless there is memory pressure. This is possible because under +Linux the cache will be notified when memory is low and objects can be +released. +.sp +By default only the Linux method is enabled. It has been shown to improve +responsiveness on low memory systems and not negatively impact the performance +of systems with more memory. This policy may be changed by setting the +\fBspl_kmem_cache_expire\fR bit mask as follows, both policies may be enabled +concurrently. +.sp +0x01 - Aging (Illumos), 0x02 - Low memory (Linux) +.sp +Default value: \fB0x02\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_reclaim\fR (uint) +.ad +.RS 12n +When this is set it prevents Linux from being able to rapidly reclaim all the +memory held by the kmem caches. This may be useful in circumstances where +it's preferable that Linux reclaim memory from some other subsystem first. +Setting this will increase the likelihood out of memory events on a memory +constrained system. +.sp +Default value: \fB0\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_obj_per_slab\fR (uint) +.ad +.RS 12n +The preferred number of objects per slab in the cache. In general, a larger +value will increase the caches memory footprint while decreasing the time +required to perform an allocation. Conversely, a smaller value will minimize +the footprint and improve cache reclaim time but individual allocations may +take longer. +.sp +Default value: \fB8\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_obj_per_slab_min\fR (uint) +.ad +.RS 12n +The minimum number of objects allowed per slab. Normally slabs will contain +\fBspl_kmem_cache_obj_per_slab\fR objects but for caches that contain very +large objects it's desirable to only have a few, or even just one, object per +slab. +.sp +Default value: \fB1\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_max_size\fR (uint) +.ad +.RS 12n +The maximum size of a kmem cache slab in MiB. This effectively limits +the maximum cache object size to \fBspl_kmem_cache_max_size\fR / +\fBspl_kmem_cache_obj_per_slab\fR. Caches may not be created with +object sized larger than this limit. +.sp +Default value: \fB32 (64-bit) or 4 (32-bit)\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_slab_limit\fR (uint) +.ad +.RS 12n +For small objects the Linux slab allocator should be used to make the most +efficient use of the memory. However, large objects are not supported by +the Linux slab and therefore the SPL implementation is preferred. This +value is used to determine the cutoff between a small and large object. +.sp +Objects of \fBspl_kmem_cache_slab_limit\fR or smaller will be allocated +using the Linux slab allocator, large objects use the SPL allocator. A +cutoff of 16K was determined to be optimal for architectures using 4K pages. +.sp +Default value: \fB16,384\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_kmem_limit\fR (uint) +.ad +.RS 12n +Depending on the size of a cache object it may be backed by kmalloc()'d +or vmalloc()'d memory. This is because the size of the required allocation +greatly impacts the best way to allocate the memory. +.sp +When objects are small and only a small number of memory pages need to be +allocated, ideally just one, then kmalloc() is very efficient. However, +when allocating multiple pages with kmalloc() it gets increasingly expensive +because the pages must be physically contiguous. +.sp +For this reason we shift to vmalloc() for slabs of large objects which +which removes the need for contiguous pages. We cannot use vmalloc() in +all cases because there is significant locking overhead involved. This +function takes a single global lock over the entire virtual address range +which serializes all allocations. Using slightly different allocation +functions for small and large objects allows us to handle a wide range of +object sizes. +.sh +The \fBspl_kmem_cache_kmem_limit\fR value is used to determine this cutoff +size. One quarter the PAGE_SIZE is used as the default value because +\fBspl_kmem_cache_obj_per_slab\fR defaults to 16. This means that at +most we will need to allocate four contiguous pages. +.sp +Default value: \fBPAGE_SIZE/4\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_alloc_warn\fR (uint) +.ad +.RS 12n +As a general rule kmem_alloc() allocations should be small, preferably +just a few pages since they must by physically contiguous. Therefore, a +rate limited warning will be printed to the console for any kmem_alloc() +which exceeds a reasonable threshold. +.sp +The default warning threshold is set to eight pages but capped at 32K to +accommodate systems using large pages. This value was selected to be small +enough to ensure the largest allocations are quickly noticed and fixed. +But large enough to avoid logging any warnings when a allocation size is +larger than optimal but not a serious concern. Since this value is tunable, +developers are encouraged to set it lower when testing so any new largish +allocations are quickly caught. These warnings may be disabled by setting +the threshold to zero. +.sp +Default value: \fB32,768\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_alloc_max\fR (uint) +.ad +.RS 12n +Large kmem_alloc() allocations will fail if they exceed KMALLOC_MAX_SIZE. +Allocations which are marginally smaller than this limit may succeed but +should still be avoided due to the expense of locating a contiguous range +of free pages. Therefore, a maximum kmem size with reasonable safely +margin of 4x is set. Kmem_alloc() allocations larger than this maximum +will quickly fail. Vmem_alloc() allocations less than or equal to this +value will use kmalloc(), but shift to vmalloc() when exceeding this value. +.sp +Default value: \fBKMALLOC_MAX_SIZE/4\fR +.RE + +.sp +.ne 2 +.na +\fBspl_kmem_cache_magazine_size\fR (uint) +.ad +.RS 12n +Cache magazines are an optimization designed to minimize the cost of +allocating memory. They do this by keeping a per-cpu cache of recently +freed objects, which can then be reallocated without taking a lock. This +can improve performance on highly contended caches. However, because +objects in magazines will prevent otherwise empty slabs from being +immediately released this may not be ideal for low memory machines. +.sp +For this reason \fBspl_kmem_cache_magazine_size\fR can be used to set a +maximum magazine size. When this value is set to 0 the magazine size will +be automatically determined based on the object size. Otherwise magazines +will be limited to 2-256 objects per magazine (i.e per cpu). Magazines +may never be entirely disabled in this implementation. +.sp +Default value: \fB0\fR +.RE + +.sp +.ne 2 +.na +\fBspl_hostid\fR (ulong) +.ad +.RS 12n +The system hostid, when set this can be used to uniquely identify a system. +By default this value is set to zero which indicates the hostid is disabled. +It can be explicitly enabled by placing a unique non-zero value in +\fB/etc/hostid/\fR. +.sp +Default value: \fB0\fR +.RE + +.sp +.ne 2 +.na +\fBspl_hostid_path\fR (charp) +.ad +.RS 12n +The expected path to locate the system hostid when specified. This value +may be overridden for non-standard configurations. +.sp +Default value: \fB/etc/hostid\fR +.RE + +.sp +.ne 2 +.na +\fBspl_taskq_thread_bind\fR (int) +.ad +.RS 12n +Bind taskq threads to specific CPUs. When enabled all taskq threads will +be distributed evenly over the available CPUs. By default, this behavior +is disabled to allow the Linux scheduler the maximum flexibility to determine +where a thread should run. +.sp +Default value: \fB0\fR +.RE + +.sp +.ne 2 +.na +\fBspl_taskq_thread_dynamic\fR (int) +.ad +.RS 12n +Allow dynamic taskqs. When enabled taskqs which set the TASKQ_DYNAMIC flag +will by default create only a single thread. New threads will be created on +demand up to a maximum allowed number to facilitate the completion of +outstanding tasks. Threads which are no longer needed will be promptly +destroyed. By default this behavior is enabled but it can be disabled to +aid performance analysis or troubleshooting. +.sp +Default value: \fB1\fR +.RE + +.sp +.ne 2 +.na +\fBspl_taskq_thread_priority\fR (int) +.ad +.RS 12n +Allow newly created taskq threads to set a non-default scheduler priority. +When enabled the priority specified when a taskq is created will be applied +to all threads created by that taskq. When disabled all threads will use +the default Linux kernel thread priority. By default, this behavior is +enabled. +.sp +Default value: \fB1\fR +.RE + +.sp +.ne 2 +.na +\fBspl_taskq_thread_sequential\fR (int) +.ad +.RS 12n +The number of items a taskq worker thread must handle without interruption +before requesting a new worker thread be spawned. This is used to control +how quickly taskqs ramp up the number of threads processing the queue. +Because Linux thread creation and destruction are relatively inexpensive a +small default value has been selected. This means that normally threads will +be created aggressively which is desirable. Increasing this value will +result in a slower thread creation rate which may be preferable for some +configurations. +.sp +Default value: \fB4\fR +.RE --- linux-4.4.0.orig/spl/module/Makefile.in +++ linux-4.4.0/spl/module/Makefile.in @@ -0,0 +1,54 @@ +subdir-m += spl +subdir-m += splat + +INSTALL_MOD_DIR ?= extra + +SPL_MODULE_CFLAGS = -I@abs_top_srcdir@/include +SPL_MODULE_CFLAGS += -include @abs_top_builddir@/spl_config.h +export SPL_MODULE_CFLAGS + +modules: + $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ CONFIG_SPL=m $@ + +clean: + @# Only cleanup the kernel build directories when CONFIG_KERNEL + @# is defined. This indicates that kernel modules should be built. +@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@ + + if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi + if [ -f Module.markers ]; then $(RM) Module.markers; fi + +modules_install: + @# Install the kernel modules + $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` $@ \ + INSTALL_MOD_PATH=$(DESTDIR)$(INSTALL_MOD_PATH) \ + INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \ + KERNELRELEASE=@LINUX_VERSION@ + @# Remove extraneous build products when packaging + kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \ + if [ -n "$(DESTDIR)" ]; then \ + find $$kmoddir -name 'modules.*' | xargs $(RM); \ + fi + sysmap=$(DESTDIR)$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \ + if [ -f $$sysmap ]; then \ + depmod -ae -F $$sysmap @LINUX_VERSION@; \ + fi + +modules_uninstall: + @# Uninstall the kernel modules + kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@ + list='$(subdir-m)'; for subdir in $$list; do \ + $(RM) -R $$kmoddir/$(INSTALL_MOD_DIR)/$$subdir; \ + done + +distdir: + list='$(subdir-m)'; for subdir in $$list; do \ + (find @top_srcdir@/module/$$subdir -name '*.c' -o -name '*.h' |\ + xargs /bin/cp -t $$distdir/$$subdir); \ + done + +distclean maintainer-clean: clean +install: modules_install +uninstall: modules_uninstall +all: modules +check: --- linux-4.4.0.orig/spl/module/spl/Makefile.in +++ linux-4.4.0/spl/module/spl/Makefile.in @@ -0,0 +1,30 @@ +# Makefile.in for spl kernel module + +src = @abs_top_srcdir@/module/spl +obj = @abs_builddir@ + +MODULE := spl +EXTRA_CFLAGS = $(SPL_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +# Solaris porting layer module +obj-$(CONFIG_SPL) := $(MODULE).o + +$(MODULE)-objs += spl-proc.o +$(MODULE)-objs += spl-kmem.o +$(MODULE)-objs += spl-kmem-cache.o +$(MODULE)-objs += spl-vmem.o +$(MODULE)-objs += spl-thread.o +$(MODULE)-objs += spl-taskq.o +$(MODULE)-objs += spl-rwlock.o +$(MODULE)-objs += spl-vnode.o +$(MODULE)-objs += spl-err.o +$(MODULE)-objs += spl-kobj.o +$(MODULE)-objs += spl-generic.o +$(MODULE)-objs += spl-atomic.o +$(MODULE)-objs += spl-mutex.o +$(MODULE)-objs += spl-kstat.o +$(MODULE)-objs += spl-condvar.o +$(MODULE)-objs += spl-xdr.o +$(MODULE)-objs += spl-cred.o +$(MODULE)-objs += spl-tsd.o +$(MODULE)-objs += spl-zlib.o --- linux-4.4.0.orig/spl/module/spl/spl-atomic.c +++ linux-4.4.0/spl/module/spl/spl-atomic.c @@ -0,0 +1,42 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Atomic Implementation. +\*****************************************************************************/ + +#include + +#ifdef DEBUG_SUBSYSTEM +#undef DEBUG_SUBSYSTEM +#endif + +#define DEBUG_SUBSYSTEM S_ATOMIC + +#ifdef ATOMIC_SPINLOCK +/* Global atomic lock declarations */ +DEFINE_SPINLOCK(atomic32_lock); +DEFINE_SPINLOCK(atomic64_lock); + +EXPORT_SYMBOL(atomic32_lock); +EXPORT_SYMBOL(atomic64_lock); +#endif /* ATOMIC_SPINLOCK */ --- linux-4.4.0.orig/spl/module/spl/spl-condvar.c +++ linux-4.4.0/spl/module/spl/spl-condvar.c @@ -0,0 +1,330 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + * + * Solaris Porting Layer (SPL) Credential Implementation. + */ + +#include +#include + +void +__cv_init(kcondvar_t *cvp, char *name, kcv_type_t type, void *arg) +{ + ASSERT(cvp); + ASSERT(name == NULL); + ASSERT(type == CV_DEFAULT); + ASSERT(arg == NULL); + + cvp->cv_magic = CV_MAGIC; + init_waitqueue_head(&cvp->cv_event); + init_waitqueue_head(&cvp->cv_destroy); + atomic_set(&cvp->cv_waiters, 0); + atomic_set(&cvp->cv_refs, 1); + cvp->cv_mutex = NULL; +} +EXPORT_SYMBOL(__cv_init); + +static int +cv_destroy_wakeup(kcondvar_t *cvp) +{ + if (!atomic_read(&cvp->cv_waiters) && !atomic_read(&cvp->cv_refs)) { + ASSERT(cvp->cv_mutex == NULL); + ASSERT(!waitqueue_active(&cvp->cv_event)); + return (1); + } + + return (0); +} + +void +__cv_destroy(kcondvar_t *cvp) +{ + ASSERT(cvp); + ASSERT(cvp->cv_magic == CV_MAGIC); + + cvp->cv_magic = CV_DESTROY; + atomic_dec(&cvp->cv_refs); + + /* Block until all waiters are woken and references dropped. */ + while (cv_destroy_wakeup(cvp) == 0) + wait_event_timeout(cvp->cv_destroy, cv_destroy_wakeup(cvp), 1); + + ASSERT3P(cvp->cv_mutex, ==, NULL); + ASSERT3S(atomic_read(&cvp->cv_refs), ==, 0); + ASSERT3S(atomic_read(&cvp->cv_waiters), ==, 0); + ASSERT3S(waitqueue_active(&cvp->cv_event), ==, 0); +} +EXPORT_SYMBOL(__cv_destroy); + +static void +cv_wait_common(kcondvar_t *cvp, kmutex_t *mp, int state, int io) +{ + DEFINE_WAIT(wait); + + ASSERT(cvp); + ASSERT(mp); + ASSERT(cvp->cv_magic == CV_MAGIC); + ASSERT(mutex_owned(mp)); + atomic_inc(&cvp->cv_refs); + + if (cvp->cv_mutex == NULL) + cvp->cv_mutex = mp; + + /* Ensure the same mutex is used by all callers */ + ASSERT(cvp->cv_mutex == mp); + + prepare_to_wait_exclusive(&cvp->cv_event, &wait, state); + atomic_inc(&cvp->cv_waiters); + + /* + * Mutex should be dropped after prepare_to_wait() this + * ensures we're linked in to the waiters list and avoids the + * race where 'cvp->cv_waiters > 0' but the list is empty. + */ + mutex_exit(mp); + if (io) + io_schedule(); + else + schedule(); + mutex_enter(mp); + + /* No more waiters a different mutex could be used */ + if (atomic_dec_and_test(&cvp->cv_waiters)) { + cvp->cv_mutex = NULL; + wake_up(&cvp->cv_destroy); + } + + finish_wait(&cvp->cv_event, &wait); + atomic_dec(&cvp->cv_refs); +} + +void +__cv_wait(kcondvar_t *cvp, kmutex_t *mp) +{ + cv_wait_common(cvp, mp, TASK_UNINTERRUPTIBLE, 0); +} +EXPORT_SYMBOL(__cv_wait); + +void +__cv_wait_sig(kcondvar_t *cvp, kmutex_t *mp) +{ + cv_wait_common(cvp, mp, TASK_INTERRUPTIBLE, 0); +} +EXPORT_SYMBOL(__cv_wait_sig); + +void +__cv_wait_io(kcondvar_t *cvp, kmutex_t *mp) +{ + cv_wait_common(cvp, mp, TASK_UNINTERRUPTIBLE, 1); +} +EXPORT_SYMBOL(__cv_wait_io); + +/* + * 'expire_time' argument is an absolute wall clock time in jiffies. + * Return value is time left (expire_time - now) or -1 if timeout occurred. + */ +static clock_t +__cv_timedwait_common(kcondvar_t *cvp, kmutex_t *mp, clock_t expire_time, + int state) +{ + DEFINE_WAIT(wait); + clock_t time_left; + + ASSERT(cvp); + ASSERT(mp); + ASSERT(cvp->cv_magic == CV_MAGIC); + ASSERT(mutex_owned(mp)); + atomic_inc(&cvp->cv_refs); + + if (cvp->cv_mutex == NULL) + cvp->cv_mutex = mp; + + /* Ensure the same mutex is used by all callers */ + ASSERT(cvp->cv_mutex == mp); + + /* XXX - Does not handle jiffie wrap properly */ + time_left = expire_time - jiffies; + if (time_left <= 0) { + atomic_dec(&cvp->cv_refs); + return (-1); + } + + prepare_to_wait_exclusive(&cvp->cv_event, &wait, state); + atomic_inc(&cvp->cv_waiters); + + /* + * Mutex should be dropped after prepare_to_wait() this + * ensures we're linked in to the waiters list and avoids the + * race where 'cvp->cv_waiters > 0' but the list is empty. + */ + mutex_exit(mp); + time_left = schedule_timeout(time_left); + mutex_enter(mp); + + /* No more waiters a different mutex could be used */ + if (atomic_dec_and_test(&cvp->cv_waiters)) { + cvp->cv_mutex = NULL; + wake_up(&cvp->cv_destroy); + } + + finish_wait(&cvp->cv_event, &wait); + atomic_dec(&cvp->cv_refs); + + return (time_left > 0 ? time_left : -1); +} + +clock_t +__cv_timedwait(kcondvar_t *cvp, kmutex_t *mp, clock_t exp_time) +{ + return (__cv_timedwait_common(cvp, mp, exp_time, TASK_UNINTERRUPTIBLE)); +} +EXPORT_SYMBOL(__cv_timedwait); + +clock_t +__cv_timedwait_sig(kcondvar_t *cvp, kmutex_t *mp, clock_t exp_time) +{ + return (__cv_timedwait_common(cvp, mp, exp_time, TASK_INTERRUPTIBLE)); +} +EXPORT_SYMBOL(__cv_timedwait_sig); + +/* + * 'expire_time' argument is an absolute clock time in nanoseconds. + * Return value is time left (expire_time - now) or -1 if timeout occurred. + */ +static clock_t +__cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t expire_time, + int state) +{ + DEFINE_WAIT(wait); + hrtime_t time_left, now; + unsigned long time_left_us; + + ASSERT(cvp); + ASSERT(mp); + ASSERT(cvp->cv_magic == CV_MAGIC); + ASSERT(mutex_owned(mp)); + atomic_inc(&cvp->cv_refs); + + if (cvp->cv_mutex == NULL) + cvp->cv_mutex = mp; + + /* Ensure the same mutex is used by all callers */ + ASSERT(cvp->cv_mutex == mp); + + now = gethrtime(); + time_left = expire_time - now; + if (time_left <= 0) { + atomic_dec(&cvp->cv_refs); + return (-1); + } + time_left_us = time_left / NSEC_PER_USEC; + + prepare_to_wait_exclusive(&cvp->cv_event, &wait, state); + atomic_inc(&cvp->cv_waiters); + + /* + * Mutex should be dropped after prepare_to_wait() this + * ensures we're linked in to the waiters list and avoids the + * race where 'cvp->cv_waiters > 0' but the list is empty. + */ + mutex_exit(mp); + /* + * Allow a 100 us range to give kernel an opportunity to coalesce + * interrupts + */ + usleep_range(time_left_us, time_left_us + 100); + mutex_enter(mp); + + /* No more waiters a different mutex could be used */ + if (atomic_dec_and_test(&cvp->cv_waiters)) { + cvp->cv_mutex = NULL; + wake_up(&cvp->cv_destroy); + } + + finish_wait(&cvp->cv_event, &wait); + atomic_dec(&cvp->cv_refs); + + time_left = expire_time - gethrtime(); + return (time_left > 0 ? time_left : -1); +} + +/* + * Compatibility wrapper for the cv_timedwait_hires() Illumos interface. + */ +clock_t +cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, hrtime_t res, + int flag) +{ + if (res > 1) { + /* + * Align expiration to the specified resolution. + */ + if (flag & CALLOUT_FLAG_ROUNDUP) + tim += res - 1; + tim = (tim / res) * res; + } + + if (!(flag & CALLOUT_FLAG_ABSOLUTE)) + tim += gethrtime(); + + return (__cv_timedwait_hires(cvp, mp, tim, TASK_UNINTERRUPTIBLE)); +} +EXPORT_SYMBOL(cv_timedwait_hires); + +void +__cv_signal(kcondvar_t *cvp) +{ + ASSERT(cvp); + ASSERT(cvp->cv_magic == CV_MAGIC); + atomic_inc(&cvp->cv_refs); + + /* + * All waiters are added with WQ_FLAG_EXCLUSIVE so only one + * waiter will be set runable with each call to wake_up(). + * Additionally wake_up() holds a spin_lock assoicated with + * the wait queue to ensure we don't race waking up processes. + */ + if (atomic_read(&cvp->cv_waiters) > 0) + wake_up(&cvp->cv_event); + + atomic_dec(&cvp->cv_refs); +} +EXPORT_SYMBOL(__cv_signal); + +void +__cv_broadcast(kcondvar_t *cvp) +{ + ASSERT(cvp); + ASSERT(cvp->cv_magic == CV_MAGIC); + atomic_inc(&cvp->cv_refs); + + /* + * Wake_up_all() will wake up all waiters even those which + * have the WQ_FLAG_EXCLUSIVE flag set. + */ + if (atomic_read(&cvp->cv_waiters) > 0) + wake_up_all(&cvp->cv_event); + + atomic_dec(&cvp->cv_refs); +} +EXPORT_SYMBOL(__cv_broadcast); --- linux-4.4.0.orig/spl/module/spl/spl-cred.c +++ linux-4.4.0/spl/module/spl/spl-cred.c @@ -0,0 +1,195 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Credential Implementation. +\*****************************************************************************/ + +#include + +#ifdef DEBUG_SUBSYSTEM +#undef DEBUG_SUBSYSTEM +#endif + +#define DEBUG_SUBSYSTEM S_CRED + +static int +#ifdef HAVE_KUIDGID_T +cr_groups_search(const struct group_info *group_info, kgid_t grp) +#else +cr_groups_search(const struct group_info *group_info, gid_t grp) +#endif +{ + unsigned int left, right, mid; + int cmp; + + if (!group_info) + return 0; + + left = 0; + right = group_info->ngroups; + while (left < right) { + mid = (left + right) / 2; + cmp = KGID_TO_SGID(grp) - + KGID_TO_SGID(GROUP_AT(group_info, mid)); + + if (cmp > 0) + left = mid + 1; + else if (cmp < 0) + right = mid; + else + return 1; + } + return 0; +} + +/* Hold a reference on the credential and group info */ +void +crhold(cred_t *cr) +{ + (void)get_cred((const cred_t *)cr); + (void)get_group_info(cr->group_info); +} + +/* Free a reference on the credential and group info */ +void +crfree(cred_t *cr) +{ + put_group_info(cr->group_info); + put_cred((const cred_t *)cr); +} + +/* Return the number of supplemental groups */ +int +crgetngroups(const cred_t *cr) +{ + struct group_info *gi; + int rc; + + gi = get_group_info(cr->group_info); + rc = gi->ngroups; + put_group_info(gi); + + return rc; +} + +/* + * Return an array of supplemental gids. The returned address is safe + * to use as long as the caller has taken a reference with crhold(). + * The caller is responsible for releasing the reference with crfree(). + */ +gid_t * +crgetgroups(const cred_t *cr) +{ + struct group_info *gi; + gid_t *gids; + + gi = get_group_info(cr->group_info); + gids = KGIDP_TO_SGIDP(gi->blocks[0]); + put_group_info(gi); + + return gids; +} + +/* Check if the passed gid is available in supplied credential. */ +int +groupmember(gid_t gid, const cred_t *cr) +{ + struct group_info *gi; + int rc; + + gi = get_group_info(cr->group_info); + rc = cr_groups_search(gi, SGID_TO_KGID(gid)); + put_group_info(gi); + + return rc; +} + +/* Return the effective user id */ +uid_t +crgetuid(const cred_t *cr) +{ + return KUID_TO_SUID(cr->euid); +} + +/* Return the real user id */ +uid_t +crgetruid(const cred_t *cr) +{ + return KUID_TO_SUID(cr->uid); +} + +/* Return the saved user id */ +uid_t +crgetsuid(const cred_t *cr) +{ + return KUID_TO_SUID(cr->suid); +} + +/* Return the filesystem user id */ +uid_t +crgetfsuid(const cred_t *cr) +{ + return KUID_TO_SUID(cr->fsuid); +} + +/* Return the effective group id */ +gid_t +crgetgid(const cred_t *cr) +{ + return KGID_TO_SGID(cr->egid); +} + +/* Return the real group id */ +gid_t +crgetrgid(const cred_t *cr) +{ + return KGID_TO_SGID(cr->gid); +} + +/* Return the saved group id */ +gid_t +crgetsgid(const cred_t *cr) +{ + return KGID_TO_SGID(cr->sgid); +} + +/* Return the filesystem group id */ +gid_t +crgetfsgid(const cred_t *cr) +{ + return KGID_TO_SGID(cr->fsgid); +} + +EXPORT_SYMBOL(crhold); +EXPORT_SYMBOL(crfree); +EXPORT_SYMBOL(crgetuid); +EXPORT_SYMBOL(crgetruid); +EXPORT_SYMBOL(crgetsuid); +EXPORT_SYMBOL(crgetfsuid); +EXPORT_SYMBOL(crgetgid); +EXPORT_SYMBOL(crgetrgid); +EXPORT_SYMBOL(crgetsgid); +EXPORT_SYMBOL(crgetfsgid); +EXPORT_SYMBOL(crgetngroups); +EXPORT_SYMBOL(crgetgroups); +EXPORT_SYMBOL(groupmember); --- linux-4.4.0.orig/spl/module/spl/spl-err.c +++ linux-4.4.0/spl/module/spl/spl-err.c @@ -0,0 +1,117 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Error Implementation. +\*****************************************************************************/ + +#include +#include +#include + +/* + * Limit the number of stack traces dumped to not more than 5 every + * 60 seconds to prevent denial-of-service attacks from debug code. + */ +DEFINE_RATELIMIT_STATE(dumpstack_ratelimit_state, 60 * HZ, 5); + +void +spl_dumpstack(void) +{ + if (__ratelimit(&dumpstack_ratelimit_state)) { + printk("Showing stack for process %d\n", current->pid); + dump_stack(); + } +} +EXPORT_SYMBOL(spl_dumpstack); + +int +spl_panic(const char *file, const char *func, int line, const char *fmt, ...) { + const char *newfile; + char msg[MAXMSGLEN]; + va_list ap; + + newfile = strrchr(file, '/'); + if (newfile != NULL) + newfile = newfile + 1; + else + newfile = file; + + va_start(ap, fmt); + (void) vsnprintf(msg, sizeof (msg), fmt, ap); + va_end(ap); + + printk(KERN_EMERG "%s", msg); + printk(KERN_EMERG "PANIC at %s:%d:%s()\n", newfile, line, func); + spl_dumpstack(); + + /* Halt the thread to facilitate further debugging */ + set_task_state(current, TASK_UNINTERRUPTIBLE); + while (1) + schedule(); + + /* Unreachable */ + return (1); +} +EXPORT_SYMBOL(spl_panic); + +void +vcmn_err(int ce, const char *fmt, va_list ap) +{ + char msg[MAXMSGLEN]; + + vsnprintf(msg, MAXMSGLEN - 1, fmt, ap); + + switch (ce) { + case CE_IGNORE: + break; + case CE_CONT: + printk("%s", msg); + break; + case CE_NOTE: + printk(KERN_NOTICE "NOTICE: %s\n", msg); + break; + case CE_WARN: + printk(KERN_WARNING "WARNING: %s\n", msg); + break; + case CE_PANIC: + printk(KERN_EMERG "PANIC: %s\n", msg); + spl_dumpstack(); + + /* Halt the thread to facilitate further debugging */ + set_task_state(current, TASK_UNINTERRUPTIBLE); + while (1) + schedule(); + } +} /* vcmn_err() */ +EXPORT_SYMBOL(vcmn_err); + +void +cmn_err(int ce, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vcmn_err(ce, fmt, ap); + va_end(ap); +} /* cmn_err() */ +EXPORT_SYMBOL(cmn_err); --- linux-4.4.0.orig/spl/module/spl/spl-generic.c +++ linux-4.4.0/spl/module/spl/spl-generic.c @@ -0,0 +1,607 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Generic Implementation. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +char spl_version[32] = "SPL v" SPL_META_VERSION "-" SPL_META_RELEASE; +EXPORT_SYMBOL(spl_version); + +unsigned long spl_hostid = 0; +EXPORT_SYMBOL(spl_hostid); +module_param(spl_hostid, ulong, 0644); +MODULE_PARM_DESC(spl_hostid, "The system hostid."); + +proc_t p0 = { 0 }; +EXPORT_SYMBOL(p0); + +#if BITS_PER_LONG == 32 +/* + * Support 64/64 => 64 division on a 32-bit platform. While the kernel + * provides a div64_u64() function for this we do not use it because the + * implementation is flawed. There are cases which return incorrect + * results as late as linux-2.6.35. Until this is fixed upstream the + * spl must provide its own implementation. + * + * This implementation is a slightly modified version of the algorithm + * proposed by the book 'Hacker's Delight'. The original source can be + * found here and is available for use without restriction. + * + * http://www.hackersdelight.org/HDcode/newCode/divDouble.c + */ + +/* + * Calculate number of leading of zeros for a 64-bit value. + */ +static int +nlz64(uint64_t x) { + register int n = 0; + + if (x == 0) + return 64; + + if (x <= 0x00000000FFFFFFFFULL) {n = n + 32; x = x << 32;} + if (x <= 0x0000FFFFFFFFFFFFULL) {n = n + 16; x = x << 16;} + if (x <= 0x00FFFFFFFFFFFFFFULL) {n = n + 8; x = x << 8;} + if (x <= 0x0FFFFFFFFFFFFFFFULL) {n = n + 4; x = x << 4;} + if (x <= 0x3FFFFFFFFFFFFFFFULL) {n = n + 2; x = x << 2;} + if (x <= 0x7FFFFFFFFFFFFFFFULL) {n = n + 1;} + + return n; +} + +/* + * Newer kernels have a div_u64() function but we define our own + * to simplify portibility between kernel versions. + */ +static inline uint64_t +__div_u64(uint64_t u, uint32_t v) +{ + (void) do_div(u, v); + return u; +} + +/* + * Implementation of 64-bit unsigned division for 32-bit machines. + * + * First the procedure takes care of the case in which the divisor is a + * 32-bit quantity. There are two subcases: (1) If the left half of the + * dividend is less than the divisor, one execution of do_div() is all that + * is required (overflow is not possible). (2) Otherwise it does two + * divisions, using the grade school method. + */ +uint64_t +__udivdi3(uint64_t u, uint64_t v) +{ + uint64_t u0, u1, v1, q0, q1, k; + int n; + + if (v >> 32 == 0) { // If v < 2**32: + if (u >> 32 < v) { // If u/v cannot overflow, + return __div_u64(u, v); // just do one division. + } else { // If u/v would overflow: + u1 = u >> 32; // Break u into two halves. + u0 = u & 0xFFFFFFFF; + q1 = __div_u64(u1, v); // First quotient digit. + k = u1 - q1 * v; // First remainder, < v. + u0 += (k << 32); + q0 = __div_u64(u0, v); // Seconds quotient digit. + return (q1 << 32) + q0; + } + } else { // If v >= 2**32: + n = nlz64(v); // 0 <= n <= 31. + v1 = (v << n) >> 32; // Normalize divisor, MSB is 1. + u1 = u >> 1; // To ensure no overflow. + q1 = __div_u64(u1, v1); // Get quotient from + q0 = (q1 << n) >> 31; // Undo normalization and + // division of u by 2. + if (q0 != 0) // Make q0 correct or + q0 = q0 - 1; // too small by 1. + if ((u - q0 * v) >= v) + q0 = q0 + 1; // Now q0 is correct. + + return q0; + } +} +EXPORT_SYMBOL(__udivdi3); + +/* + * Implementation of 64-bit signed division for 32-bit machines. + */ +int64_t +__divdi3(int64_t u, int64_t v) +{ + int64_t q, t; + q = __udivdi3(abs64(u), abs64(v)); + t = (u ^ v) >> 63; // If u, v have different + return (q ^ t) - t; // signs, negate q. +} +EXPORT_SYMBOL(__divdi3); + +/* + * Implementation of 64-bit unsigned modulo for 32-bit machines. + */ +uint64_t +__umoddi3(uint64_t dividend, uint64_t divisor) +{ + return (dividend - (divisor * __udivdi3(dividend, divisor))); +} +EXPORT_SYMBOL(__umoddi3); + +#if defined(__arm) || defined(__arm__) +/* + * Implementation of 64-bit (un)signed division for 32-bit arm machines. + * + * Run-time ABI for the ARM Architecture (page 20). A pair of (unsigned) + * long longs is returned in {{r0, r1}, {r2,r3}}, the quotient in {r0, r1}, + * and the remainder in {r2, r3}. The return type is specifically left + * set to 'void' to ensure the compiler does not overwrite these registers + * during the return. All results are in registers as per ABI + */ +void +__aeabi_uldivmod(uint64_t u, uint64_t v) +{ + uint64_t res; + uint64_t mod; + + res = __udivdi3(u, v); + mod = __umoddi3(u, v); + { + register uint32_t r0 asm("r0") = (res & 0xFFFFFFFF); + register uint32_t r1 asm("r1") = (res >> 32); + register uint32_t r2 asm("r2") = (mod & 0xFFFFFFFF); + register uint32_t r3 asm("r3") = (mod >> 32); + + asm volatile("" + : "+r"(r0), "+r"(r1), "+r"(r2),"+r"(r3) /* output */ + : "r"(r0), "r"(r1), "r"(r2), "r"(r3)); /* input */ + + return; /* r0; */ + } +} +EXPORT_SYMBOL(__aeabi_uldivmod); + +void +__aeabi_ldivmod(int64_t u, int64_t v) +{ + int64_t res; + uint64_t mod; + + res = __divdi3(u, v); + mod = __umoddi3(u, v); + { + register uint32_t r0 asm("r0") = (res & 0xFFFFFFFF); + register uint32_t r1 asm("r1") = (res >> 32); + register uint32_t r2 asm("r2") = (mod & 0xFFFFFFFF); + register uint32_t r3 asm("r3") = (mod >> 32); + + asm volatile("" + : "+r"(r0), "+r"(r1), "+r"(r2),"+r"(r3) /* output */ + : "r"(r0), "r"(r1), "r"(r2), "r"(r3)); /* input */ + + return; /* r0; */ + } +} +EXPORT_SYMBOL(__aeabi_ldivmod); +#endif /* __arm || __arm__ */ +#endif /* BITS_PER_LONG */ + +/* NOTE: The strtoxx behavior is solely based on my reading of the Solaris + * ddi_strtol(9F) man page. I have not verified the behavior of these + * functions against their Solaris counterparts. It is possible that I + * may have misinterpreted the man page or the man page is incorrect. + */ +int ddi_strtoul(const char *, char **, int, unsigned long *); +int ddi_strtol(const char *, char **, int, long *); +int ddi_strtoull(const char *, char **, int, unsigned long long *); +int ddi_strtoll(const char *, char **, int, long long *); + +#define define_ddi_strtoux(type, valtype) \ +int ddi_strtou##type(const char *str, char **endptr, \ + int base, valtype *result) \ +{ \ + valtype last_value, value = 0; \ + char *ptr = (char *)str; \ + int flag = 1, digit; \ + \ + if (strlen(ptr) == 0) \ + return EINVAL; \ + \ + /* Auto-detect base based on prefix */ \ + if (!base) { \ + if (str[0] == '0') { \ + if (tolower(str[1])=='x' && isxdigit(str[2])) { \ + base = 16; /* hex */ \ + ptr += 2; \ + } else if (str[1] >= '0' && str[1] < 8) { \ + base = 8; /* octal */ \ + ptr += 1; \ + } else { \ + return EINVAL; \ + } \ + } else { \ + base = 10; /* decimal */ \ + } \ + } \ + \ + while (1) { \ + if (isdigit(*ptr)) \ + digit = *ptr - '0'; \ + else if (isalpha(*ptr)) \ + digit = tolower(*ptr) - 'a' + 10; \ + else \ + break; \ + \ + if (digit >= base) \ + break; \ + \ + last_value = value; \ + value = value * base + digit; \ + if (last_value > value) /* Overflow */ \ + return ERANGE; \ + \ + flag = 1; \ + ptr++; \ + } \ + \ + if (flag) \ + *result = value; \ + \ + if (endptr) \ + *endptr = (char *)(flag ? ptr : str); \ + \ + return 0; \ +} \ + +#define define_ddi_strtox(type, valtype) \ +int ddi_strto##type(const char *str, char **endptr, \ + int base, valtype *result) \ +{ \ + int rc; \ + \ + if (*str == '-') { \ + rc = ddi_strtou##type(str + 1, endptr, base, result); \ + if (!rc) { \ + if (*endptr == str + 1) \ + *endptr = (char *)str; \ + else \ + *result = -*result; \ + } \ + } else { \ + rc = ddi_strtou##type(str, endptr, base, result); \ + } \ + \ + return rc; \ +} + +define_ddi_strtoux(l, unsigned long) +define_ddi_strtox(l, long) +define_ddi_strtoux(ll, unsigned long long) +define_ddi_strtox(ll, long long) + +EXPORT_SYMBOL(ddi_strtoul); +EXPORT_SYMBOL(ddi_strtol); +EXPORT_SYMBOL(ddi_strtoll); +EXPORT_SYMBOL(ddi_strtoull); + +int +ddi_copyin(const void *from, void *to, size_t len, int flags) +{ + /* Fake ioctl() issued by kernel, 'from' is a kernel address */ + if (flags & FKIOCTL) { + memcpy(to, from, len); + return 0; + } + + return copyin(from, to, len); +} +EXPORT_SYMBOL(ddi_copyin); + +int +ddi_copyout(const void *from, void *to, size_t len, int flags) +{ + /* Fake ioctl() issued by kernel, 'from' is a kernel address */ + if (flags & FKIOCTL) { + memcpy(to, from, len); + return 0; + } + + return copyout(from, to, len); +} +EXPORT_SYMBOL(ddi_copyout); + +#ifndef HAVE_PUT_TASK_STRUCT +/* + * This is only a stub function which should never be used. The SPL should + * never be putting away the last reference on a task structure so this will + * not be called. However, we still need to define it so the module does not + * have undefined symbol at load time. That all said if this impossible + * thing does somehow happen PANIC immediately so we know about it. + */ +void +__put_task_struct(struct task_struct *t) +{ + PANIC("Unexpectly put last reference on task %d\n", (int)t->pid); +} +EXPORT_SYMBOL(__put_task_struct); +#endif /* HAVE_PUT_TASK_STRUCT */ + +/* + * Read the unique system identifier from the /etc/hostid file. + * + * The behavior of /usr/bin/hostid on Linux systems with the + * regular eglibc and coreutils is: + * + * 1. Generate the value if the /etc/hostid file does not exist + * or if the /etc/hostid file is less than four bytes in size. + * + * 2. If the /etc/hostid file is at least 4 bytes, then return + * the first four bytes [0..3] in native endian order. + * + * 3. Always ignore bytes [4..] if they exist in the file. + * + * Only the first four bytes are significant, even on systems that + * have a 64-bit word size. + * + * See: + * + * eglibc: sysdeps/unix/sysv/linux/gethostid.c + * coreutils: src/hostid.c + * + * Notes: + * + * The /etc/hostid file on Solaris is a text file that often reads: + * + * # DO NOT EDIT + * "0123456789" + * + * Directly copying this file to Linux results in a constant + * hostid of 4f442023 because the default comment constitutes + * the first four bytes of the file. + * + */ + +char *spl_hostid_path = HW_HOSTID_PATH; +module_param(spl_hostid_path, charp, 0444); +MODULE_PARM_DESC(spl_hostid_path, "The system hostid file (/etc/hostid)"); + +static int +hostid_read(void) +{ + int result; + uint64_t size; + struct _buf *file; + uint32_t hostid = 0; + + file = kobj_open_file(spl_hostid_path); + + if (file == (struct _buf *)-1) { + printk(KERN_WARNING + "SPL: The %s file is not found.\n", + spl_hostid_path); + return -1; + } + + result = kobj_get_filesize(file, &size); + + if (result != 0) { + printk(KERN_WARNING + "SPL: kobj_get_filesize returned %i on %s\n", + result, spl_hostid_path); + kobj_close_file(file); + return -2; + } + + if (size < sizeof(HW_HOSTID_MASK)) { + printk(KERN_WARNING + "SPL: Ignoring the %s file because it is %llu bytes; " + "expecting %lu bytes instead.\n", spl_hostid_path, + size, (unsigned long)sizeof(HW_HOSTID_MASK)); + kobj_close_file(file); + return -3; + } + + /* Read directly into the variable like eglibc does. */ + /* Short reads are okay; native behavior is preserved. */ + result = kobj_read_file(file, (char *)&hostid, sizeof(hostid), 0); + + if (result < 0) { + printk(KERN_WARNING + "SPL: kobj_read_file returned %i on %s\n", + result, spl_hostid_path); + kobj_close_file(file); + return -4; + } + + /* Mask down to 32 bits like coreutils does. */ + spl_hostid = hostid & HW_HOSTID_MASK; + kobj_close_file(file); + return 0; +} + +uint32_t +zone_get_hostid(void *zone) +{ + static int first = 1; + + /* Only the global zone is supported */ + ASSERT(zone == NULL); + + if (first) { + first = 0; + + spl_hostid &= HW_HOSTID_MASK; + /* + * Get the hostid if it was not passed as a module parameter. + * Try reading the /etc/hostid file directly. + */ + if (spl_hostid == 0 && hostid_read()) + spl_hostid = 0; + + + printk(KERN_NOTICE "SPL: using hostid 0x%08x\n", + (unsigned int) spl_hostid); + } + + return spl_hostid; +} +EXPORT_SYMBOL(zone_get_hostid); + +static int +spl_kvmem_init(void) +{ + int rc = 0; + + rc = spl_kmem_init(); + if (rc) + goto out1; + + rc = spl_vmem_init(); + if (rc) + goto out2; + + rc = spl_kmem_cache_init(); + if (rc) + goto out3; + + return (rc); +out3: + spl_vmem_fini(); +out2: + spl_kmem_fini(); +out1: + return (rc); +} + +static void +spl_kvmem_fini(void) +{ + spl_kmem_cache_fini(); + spl_vmem_fini(); + spl_kmem_fini(); +} + +static int __init +spl_init(void) +{ + int rc = 0; + + if ((rc = spl_kvmem_init())) + goto out1; + + if ((rc = spl_mutex_init())) + goto out2; + + if ((rc = spl_rw_init())) + goto out3; + + if ((rc = spl_taskq_init())) + goto out4; + + if ((rc = spl_vn_init())) + goto out5; + + if ((rc = spl_proc_init())) + goto out6; + + if ((rc = spl_kstat_init())) + goto out7; + + if ((rc = spl_tsd_init())) + goto out8; + + if ((rc = spl_zlib_init())) + goto out9; + + printk(KERN_NOTICE "SPL: Loaded module v%s-%s%s\n", SPL_META_VERSION, + SPL_META_RELEASE, SPL_DEBUG_STR); + return (rc); + +out9: + spl_tsd_fini(); +out8: + spl_kstat_fini(); +out7: + spl_proc_fini(); +out6: + spl_vn_fini(); +out5: + spl_taskq_fini(); +out4: + spl_rw_fini(); +out3: + spl_mutex_fini(); +out2: + spl_kvmem_fini(); +out1: + printk(KERN_NOTICE "SPL: Failed to Load Solaris Porting Layer " + "v%s-%s%s, rc = %d\n", SPL_META_VERSION, SPL_META_RELEASE, + SPL_DEBUG_STR, rc); + + return (rc); +} + +static void __exit +spl_fini(void) +{ + printk(KERN_NOTICE "SPL: Unloaded module v%s-%s%s\n", + SPL_META_VERSION, SPL_META_RELEASE, SPL_DEBUG_STR); + spl_zlib_fini(); + spl_tsd_fini(); + spl_kstat_fini(); + spl_proc_fini(); + spl_vn_fini(); + spl_taskq_fini(); + spl_rw_fini(); + spl_mutex_fini(); + spl_kvmem_fini(); +} + +module_init(spl_init); +module_exit(spl_fini); + +MODULE_DESCRIPTION("Solaris Porting Layer"); +MODULE_AUTHOR(SPL_META_AUTHOR); +MODULE_LICENSE(SPL_META_LICENSE); +MODULE_VERSION(SPL_META_VERSION "-" SPL_META_RELEASE); --- linux-4.4.0.orig/spl/module/spl/spl-kmem-cache.c +++ linux-4.4.0/spl/module/spl/spl-kmem-cache.c @@ -0,0 +1,1739 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Within the scope of spl-kmem.c file the kmem_cache_* definitions + * are removed to allow access to the real Linux slab allocator. + */ +#undef kmem_cache_destroy +#undef kmem_cache_create +#undef kmem_cache_alloc +#undef kmem_cache_free + + +/* + * Linux 3.16 replaced smp_mb__{before,after}_{atomic,clear}_{dec,inc,bit}() + * with smp_mb__{before,after}_atomic() because they were redundant. This is + * only used inside our SLAB allocator, so we implement an internal wrapper + * here to give us smp_mb__{before,after}_atomic() on older kernels. + */ +#ifndef smp_mb__before_atomic +#define smp_mb__before_atomic(x) smp_mb__before_clear_bit(x) +#endif + +#ifndef smp_mb__after_atomic +#define smp_mb__after_atomic(x) smp_mb__after_clear_bit(x) +#endif + +/* + * Cache expiration was implemented because it was part of the default Solaris + * kmem_cache behavior. The idea is that per-cpu objects which haven't been + * accessed in several seconds should be returned to the cache. On the other + * hand Linux slabs never move objects back to the slabs unless there is + * memory pressure on the system. By default the Linux method is enabled + * because it has been shown to improve responsiveness on low memory systems. + * This policy may be changed by setting KMC_EXPIRE_AGE or KMC_EXPIRE_MEM. + */ +unsigned int spl_kmem_cache_expire = KMC_EXPIRE_MEM; +EXPORT_SYMBOL(spl_kmem_cache_expire); +module_param(spl_kmem_cache_expire, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_expire, "By age (0x1) or low memory (0x2)"); + +/* + * Cache magazines are an optimization designed to minimize the cost of + * allocating memory. They do this by keeping a per-cpu cache of recently + * freed objects, which can then be reallocated without taking a lock. This + * can improve performance on highly contended caches. However, because + * objects in magazines will prevent otherwise empty slabs from being + * immediately released this may not be ideal for low memory machines. + * + * For this reason spl_kmem_cache_magazine_size can be used to set a maximum + * magazine size. When this value is set to 0 the magazine size will be + * automatically determined based on the object size. Otherwise magazines + * will be limited to 2-256 objects per magazine (i.e per cpu). Magazines + * may never be entirely disabled in this implementation. + */ +unsigned int spl_kmem_cache_magazine_size = 0; +module_param(spl_kmem_cache_magazine_size, uint, 0444); +MODULE_PARM_DESC(spl_kmem_cache_magazine_size, + "Default magazine size (2-256), set automatically (0)\n"); + +/* + * The default behavior is to report the number of objects remaining in the + * cache. This allows the Linux VM to repeatedly reclaim objects from the + * cache when memory is low satisfy other memory allocations. Alternately, + * setting this value to KMC_RECLAIM_ONCE limits how aggressively the cache + * is reclaimed. This may increase the likelihood of out of memory events. + */ +unsigned int spl_kmem_cache_reclaim = 0 /* KMC_RECLAIM_ONCE */; +module_param(spl_kmem_cache_reclaim, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_reclaim, "Single reclaim pass (0x1)"); + +unsigned int spl_kmem_cache_obj_per_slab = SPL_KMEM_CACHE_OBJ_PER_SLAB; +module_param(spl_kmem_cache_obj_per_slab, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_obj_per_slab, "Number of objects per slab"); + +unsigned int spl_kmem_cache_obj_per_slab_min = SPL_KMEM_CACHE_OBJ_PER_SLAB_MIN; +module_param(spl_kmem_cache_obj_per_slab_min, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_obj_per_slab_min, + "Minimal number of objects per slab"); + +unsigned int spl_kmem_cache_max_size = SPL_KMEM_CACHE_MAX_SIZE; +module_param(spl_kmem_cache_max_size, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_max_size, "Maximum size of slab in MB"); + +/* + * For small objects the Linux slab allocator should be used to make the most + * efficient use of the memory. However, large objects are not supported by + * the Linux slab and therefore the SPL implementation is preferred. A cutoff + * of 16K was determined to be optimal for architectures using 4K pages. + */ +#if PAGE_SIZE == 4096 +unsigned int spl_kmem_cache_slab_limit = 16384; +#else +unsigned int spl_kmem_cache_slab_limit = 0; +#endif +module_param(spl_kmem_cache_slab_limit, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_slab_limit, + "Objects less than N bytes use the Linux slab"); + +/* + * This value defaults to a threshold designed to avoid allocations which + * have been deemed costly by the kernel. + */ +unsigned int spl_kmem_cache_kmem_limit = + ((1 << (PAGE_ALLOC_COSTLY_ORDER - 1)) * PAGE_SIZE) / + SPL_KMEM_CACHE_OBJ_PER_SLAB; +module_param(spl_kmem_cache_kmem_limit, uint, 0644); +MODULE_PARM_DESC(spl_kmem_cache_kmem_limit, + "Objects less than N bytes use the kmalloc"); + +/* + * The number of threads available to allocate new slabs for caches. This + * should not need to be tuned but it is available for performance analysis. + */ +unsigned int spl_kmem_cache_kmem_threads = 4; +module_param(spl_kmem_cache_kmem_threads, uint, 0444); +MODULE_PARM_DESC(spl_kmem_cache_kmem_threads, + "Number of spl_kmem_cache threads"); + +/* + * Slab allocation interfaces + * + * While the Linux slab implementation was inspired by the Solaris + * implementation I cannot use it to emulate the Solaris APIs. I + * require two features which are not provided by the Linux slab. + * + * 1) Constructors AND destructors. Recent versions of the Linux + * kernel have removed support for destructors. This is a deal + * breaker for the SPL which contains particularly expensive + * initializers for mutex's, condition variables, etc. We also + * require a minimal level of cleanup for these data types unlike + * many Linux data types which do need to be explicitly destroyed. + * + * 2) Virtual address space backed slab. Callers of the Solaris slab + * expect it to work well for both small are very large allocations. + * Because of memory fragmentation the Linux slab which is backed + * by kmalloc'ed memory performs very badly when confronted with + * large numbers of large allocations. Basing the slab on the + * virtual address space removes the need for contiguous pages + * and greatly improve performance for large allocations. + * + * For these reasons, the SPL has its own slab implementation with + * the needed features. It is not as highly optimized as either the + * Solaris or Linux slabs, but it should get me most of what is + * needed until it can be optimized or obsoleted by another approach. + * + * One serious concern I do have about this method is the relatively + * small virtual address space on 32bit arches. This will seriously + * constrain the size of the slab caches and their performance. + */ + +struct list_head spl_kmem_cache_list; /* List of caches */ +struct rw_semaphore spl_kmem_cache_sem; /* Cache list lock */ +taskq_t *spl_kmem_cache_taskq; /* Task queue for ageing / reclaim */ + +static void spl_cache_shrink(spl_kmem_cache_t *skc, void *obj); + +SPL_SHRINKER_CALLBACK_FWD_DECLARE(spl_kmem_cache_generic_shrinker); +SPL_SHRINKER_DECLARE(spl_kmem_cache_shrinker, + spl_kmem_cache_generic_shrinker, KMC_DEFAULT_SEEKS); + +static void * +kv_alloc(spl_kmem_cache_t *skc, int size, int flags) +{ + gfp_t lflags = kmem_flags_convert(flags); + void *ptr; + + if (skc->skc_flags & KMC_KMEM) { + ASSERT(ISP2(size)); + ptr = (void *)__get_free_pages(lflags, get_order(size)); + } else { + ptr = __vmalloc(size, lflags | __GFP_HIGHMEM, PAGE_KERNEL); + } + + /* Resulting allocated memory will be page aligned */ + ASSERT(IS_P2ALIGNED(ptr, PAGE_SIZE)); + + return (ptr); +} + +static void +kv_free(spl_kmem_cache_t *skc, void *ptr, int size) +{ + ASSERT(IS_P2ALIGNED(ptr, PAGE_SIZE)); + + /* + * The Linux direct reclaim path uses this out of band value to + * determine if forward progress is being made. Normally this is + * incremented by kmem_freepages() which is part of the various + * Linux slab implementations. However, since we are using none + * of that infrastructure we are responsible for incrementing it. + */ + if (current->reclaim_state) + current->reclaim_state->reclaimed_slab += size >> PAGE_SHIFT; + + if (skc->skc_flags & KMC_KMEM) { + ASSERT(ISP2(size)); + free_pages((unsigned long)ptr, get_order(size)); + } else { + vfree(ptr); + } +} + +/* + * Required space for each aligned sks. + */ +static inline uint32_t +spl_sks_size(spl_kmem_cache_t *skc) +{ + return (P2ROUNDUP_TYPED(sizeof (spl_kmem_slab_t), + skc->skc_obj_align, uint32_t)); +} + +/* + * Required space for each aligned object. + */ +static inline uint32_t +spl_obj_size(spl_kmem_cache_t *skc) +{ + uint32_t align = skc->skc_obj_align; + + return (P2ROUNDUP_TYPED(skc->skc_obj_size, align, uint32_t) + + P2ROUNDUP_TYPED(sizeof (spl_kmem_obj_t), align, uint32_t)); +} + +/* + * Lookup the spl_kmem_object_t for an object given that object. + */ +static inline spl_kmem_obj_t * +spl_sko_from_obj(spl_kmem_cache_t *skc, void *obj) +{ + return (obj + P2ROUNDUP_TYPED(skc->skc_obj_size, + skc->skc_obj_align, uint32_t)); +} + +/* + * Required space for each offslab object taking in to account alignment + * restrictions and the power-of-two requirement of kv_alloc(). + */ +static inline uint32_t +spl_offslab_size(spl_kmem_cache_t *skc) +{ + return (1UL << (fls64(spl_obj_size(skc)) + 1)); +} + +/* + * It's important that we pack the spl_kmem_obj_t structure and the + * actual objects in to one large address space to minimize the number + * of calls to the allocator. It is far better to do a few large + * allocations and then subdivide it ourselves. Now which allocator + * we use requires balancing a few trade offs. + * + * For small objects we use kmem_alloc() because as long as you are + * only requesting a small number of pages (ideally just one) its cheap. + * However, when you start requesting multiple pages with kmem_alloc() + * it gets increasingly expensive since it requires contiguous pages. + * For this reason we shift to vmem_alloc() for slabs of large objects + * which removes the need for contiguous pages. We do not use + * vmem_alloc() in all cases because there is significant locking + * overhead in __get_vm_area_node(). This function takes a single + * global lock when acquiring an available virtual address range which + * serializes all vmem_alloc()'s for all slab caches. Using slightly + * different allocation functions for small and large objects should + * give us the best of both worlds. + * + * KMC_ONSLAB KMC_OFFSLAB + * + * +------------------------+ +-----------------+ + * | spl_kmem_slab_t --+-+ | | spl_kmem_slab_t |---+-+ + * | skc_obj_size <-+ | | +-----------------+ | | + * | spl_kmem_obj_t | | | | + * | skc_obj_size <---+ | +-----------------+ | | + * | spl_kmem_obj_t | | | skc_obj_size | <-+ | + * | ... v | | spl_kmem_obj_t | | + * +------------------------+ +-----------------+ v + */ +static spl_kmem_slab_t * +spl_slab_alloc(spl_kmem_cache_t *skc, int flags) +{ + spl_kmem_slab_t *sks; + spl_kmem_obj_t *sko, *n; + void *base, *obj; + uint32_t obj_size, offslab_size = 0; + int i, rc = 0; + + base = kv_alloc(skc, skc->skc_slab_size, flags); + if (base == NULL) + return (NULL); + + sks = (spl_kmem_slab_t *)base; + sks->sks_magic = SKS_MAGIC; + sks->sks_objs = skc->skc_slab_objs; + sks->sks_age = jiffies; + sks->sks_cache = skc; + INIT_LIST_HEAD(&sks->sks_list); + INIT_LIST_HEAD(&sks->sks_free_list); + sks->sks_ref = 0; + obj_size = spl_obj_size(skc); + + if (skc->skc_flags & KMC_OFFSLAB) + offslab_size = spl_offslab_size(skc); + + for (i = 0; i < sks->sks_objs; i++) { + if (skc->skc_flags & KMC_OFFSLAB) { + obj = kv_alloc(skc, offslab_size, flags); + if (!obj) { + rc = -ENOMEM; + goto out; + } + } else { + obj = base + spl_sks_size(skc) + (i * obj_size); + } + + ASSERT(IS_P2ALIGNED(obj, skc->skc_obj_align)); + sko = spl_sko_from_obj(skc, obj); + sko->sko_addr = obj; + sko->sko_magic = SKO_MAGIC; + sko->sko_slab = sks; + INIT_LIST_HEAD(&sko->sko_list); + list_add_tail(&sko->sko_list, &sks->sks_free_list); + } + +out: + if (rc) { + if (skc->skc_flags & KMC_OFFSLAB) + list_for_each_entry_safe(sko, + n, &sks->sks_free_list, sko_list) + kv_free(skc, sko->sko_addr, offslab_size); + + kv_free(skc, base, skc->skc_slab_size); + sks = NULL; + } + + return (sks); +} + +/* + * Remove a slab from complete or partial list, it must be called with + * the 'skc->skc_lock' held but the actual free must be performed + * outside the lock to prevent deadlocking on vmem addresses. + */ +static void +spl_slab_free(spl_kmem_slab_t *sks, + struct list_head *sks_list, struct list_head *sko_list) +{ + spl_kmem_cache_t *skc; + + ASSERT(sks->sks_magic == SKS_MAGIC); + ASSERT(sks->sks_ref == 0); + + skc = sks->sks_cache; + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(spin_is_locked(&skc->skc_lock)); + + /* + * Update slab/objects counters in the cache, then remove the + * slab from the skc->skc_partial_list. Finally add the slab + * and all its objects in to the private work lists where the + * destructors will be called and the memory freed to the system. + */ + skc->skc_obj_total -= sks->sks_objs; + skc->skc_slab_total--; + list_del(&sks->sks_list); + list_add(&sks->sks_list, sks_list); + list_splice_init(&sks->sks_free_list, sko_list); +} + +/* + * Reclaim empty slabs at the end of the partial list. + */ +static void +spl_slab_reclaim(spl_kmem_cache_t *skc) +{ + spl_kmem_slab_t *sks, *m; + spl_kmem_obj_t *sko, *n; + LIST_HEAD(sks_list); + LIST_HEAD(sko_list); + uint32_t size = 0; + + /* + * Empty slabs and objects must be moved to a private list so they + * can be safely freed outside the spin lock. All empty slabs are + * at the end of skc->skc_partial_list, therefore once a non-empty + * slab is found we can stop scanning. + */ + spin_lock(&skc->skc_lock); + list_for_each_entry_safe_reverse(sks, m, + &skc->skc_partial_list, sks_list) { + + if (sks->sks_ref > 0) + break; + + spl_slab_free(sks, &sks_list, &sko_list); + } + spin_unlock(&skc->skc_lock); + + /* + * The following two loops ensure all the object destructors are + * run, any offslab objects are freed, and the slabs themselves + * are freed. This is all done outside the skc->skc_lock since + * this allows the destructor to sleep, and allows us to perform + * a conditional reschedule when a freeing a large number of + * objects and slabs back to the system. + */ + if (skc->skc_flags & KMC_OFFSLAB) + size = spl_offslab_size(skc); + + list_for_each_entry_safe(sko, n, &sko_list, sko_list) { + ASSERT(sko->sko_magic == SKO_MAGIC); + + if (skc->skc_flags & KMC_OFFSLAB) + kv_free(skc, sko->sko_addr, size); + } + + list_for_each_entry_safe(sks, m, &sks_list, sks_list) { + ASSERT(sks->sks_magic == SKS_MAGIC); + kv_free(skc, sks, skc->skc_slab_size); + } +} + +static spl_kmem_emergency_t * +spl_emergency_search(struct rb_root *root, void *obj) +{ + struct rb_node *node = root->rb_node; + spl_kmem_emergency_t *ske; + unsigned long address = (unsigned long)obj; + + while (node) { + ske = container_of(node, spl_kmem_emergency_t, ske_node); + + if (address < ske->ske_obj) + node = node->rb_left; + else if (address > ske->ske_obj) + node = node->rb_right; + else + return (ske); + } + + return (NULL); +} + +static int +spl_emergency_insert(struct rb_root *root, spl_kmem_emergency_t *ske) +{ + struct rb_node **new = &(root->rb_node), *parent = NULL; + spl_kmem_emergency_t *ske_tmp; + unsigned long address = ske->ske_obj; + + while (*new) { + ske_tmp = container_of(*new, spl_kmem_emergency_t, ske_node); + + parent = *new; + if (address < ske_tmp->ske_obj) + new = &((*new)->rb_left); + else if (address > ske_tmp->ske_obj) + new = &((*new)->rb_right); + else + return (0); + } + + rb_link_node(&ske->ske_node, parent, new); + rb_insert_color(&ske->ske_node, root); + + return (1); +} + +/* + * Allocate a single emergency object and track it in a red black tree. + */ +static int +spl_emergency_alloc(spl_kmem_cache_t *skc, int flags, void **obj) +{ + gfp_t lflags = kmem_flags_convert(flags); + spl_kmem_emergency_t *ske; + int order = get_order(skc->skc_obj_size); + int empty; + + /* Last chance use a partial slab if one now exists */ + spin_lock(&skc->skc_lock); + empty = list_empty(&skc->skc_partial_list); + spin_unlock(&skc->skc_lock); + if (!empty) + return (-EEXIST); + + ske = kmalloc(sizeof (*ske), lflags); + if (ske == NULL) + return (-ENOMEM); + + ske->ske_obj = __get_free_pages(lflags, order); + if (ske->ske_obj == 0) { + kfree(ske); + return (-ENOMEM); + } + + spin_lock(&skc->skc_lock); + empty = spl_emergency_insert(&skc->skc_emergency_tree, ske); + if (likely(empty)) { + skc->skc_obj_total++; + skc->skc_obj_emergency++; + if (skc->skc_obj_emergency > skc->skc_obj_emergency_max) + skc->skc_obj_emergency_max = skc->skc_obj_emergency; + } + spin_unlock(&skc->skc_lock); + + if (unlikely(!empty)) { + free_pages(ske->ske_obj, order); + kfree(ske); + return (-EINVAL); + } + + *obj = (void *)ske->ske_obj; + + return (0); +} + +/* + * Locate the passed object in the red black tree and free it. + */ +static int +spl_emergency_free(spl_kmem_cache_t *skc, void *obj) +{ + spl_kmem_emergency_t *ske; + int order = get_order(skc->skc_obj_size); + + spin_lock(&skc->skc_lock); + ske = spl_emergency_search(&skc->skc_emergency_tree, obj); + if (ske) { + rb_erase(&ske->ske_node, &skc->skc_emergency_tree); + skc->skc_obj_emergency--; + skc->skc_obj_total--; + } + spin_unlock(&skc->skc_lock); + + if (ske == NULL) + return (-ENOENT); + + free_pages(ske->ske_obj, order); + kfree(ske); + + return (0); +} + +/* + * Release objects from the per-cpu magazine back to their slab. The flush + * argument contains the max number of entries to remove from the magazine. + */ +static void +__spl_cache_flush(spl_kmem_cache_t *skc, spl_kmem_magazine_t *skm, int flush) +{ + int i, count = MIN(flush, skm->skm_avail); + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(skm->skm_magic == SKM_MAGIC); + ASSERT(spin_is_locked(&skc->skc_lock)); + + for (i = 0; i < count; i++) + spl_cache_shrink(skc, skm->skm_objs[i]); + + skm->skm_avail -= count; + memmove(skm->skm_objs, &(skm->skm_objs[count]), + sizeof (void *) * skm->skm_avail); +} + +static void +spl_cache_flush(spl_kmem_cache_t *skc, spl_kmem_magazine_t *skm, int flush) +{ + spin_lock(&skc->skc_lock); + __spl_cache_flush(skc, skm, flush); + spin_unlock(&skc->skc_lock); +} + +static void +spl_magazine_age(void *data) +{ + spl_kmem_cache_t *skc = (spl_kmem_cache_t *)data; + spl_kmem_magazine_t *skm = skc->skc_mag[smp_processor_id()]; + + ASSERT(skm->skm_magic == SKM_MAGIC); + ASSERT(skm->skm_cpu == smp_processor_id()); + ASSERT(irqs_disabled()); + + /* There are no available objects or they are too young to age out */ + if ((skm->skm_avail == 0) || + time_before(jiffies, skm->skm_age + skc->skc_delay * HZ)) + return; + + /* + * Because we're executing in interrupt context we may have + * interrupted the holder of this lock. To avoid a potential + * deadlock return if the lock is contended. + */ + if (!spin_trylock(&skc->skc_lock)) + return; + + __spl_cache_flush(skc, skm, skm->skm_refill); + spin_unlock(&skc->skc_lock); +} + +/* + * Called regularly to keep a downward pressure on the cache. + * + * Objects older than skc->skc_delay seconds in the per-cpu magazines will + * be returned to the caches. This is done to prevent idle magazines from + * holding memory which could be better used elsewhere. The delay is + * present to prevent thrashing the magazine. + * + * The newly released objects may result in empty partial slabs. Those + * slabs should be released to the system. Otherwise moving the objects + * out of the magazines is just wasted work. + */ +static void +spl_cache_age(void *data) +{ + spl_kmem_cache_t *skc = (spl_kmem_cache_t *)data; + taskqid_t id = 0; + + ASSERT(skc->skc_magic == SKC_MAGIC); + + /* Dynamically disabled at run time */ + if (!(spl_kmem_cache_expire & KMC_EXPIRE_AGE)) + return; + + atomic_inc(&skc->skc_ref); + + if (!(skc->skc_flags & KMC_NOMAGAZINE)) + on_each_cpu(spl_magazine_age, skc, 1); + + spl_slab_reclaim(skc); + + while (!test_bit(KMC_BIT_DESTROY, &skc->skc_flags) && !id) { + id = taskq_dispatch_delay( + spl_kmem_cache_taskq, spl_cache_age, skc, TQ_SLEEP, + ddi_get_lbolt() + skc->skc_delay / 3 * HZ); + + /* Destroy issued after dispatch immediately cancel it */ + if (test_bit(KMC_BIT_DESTROY, &skc->skc_flags) && id) + taskq_cancel_id(spl_kmem_cache_taskq, id); + } + + spin_lock(&skc->skc_lock); + skc->skc_taskqid = id; + spin_unlock(&skc->skc_lock); + + atomic_dec(&skc->skc_ref); +} + +/* + * Size a slab based on the size of each aligned object plus spl_kmem_obj_t. + * When on-slab we want to target spl_kmem_cache_obj_per_slab. However, + * for very small objects we may end up with more than this so as not + * to waste space in the minimal allocation of a single page. Also for + * very large objects we may use as few as spl_kmem_cache_obj_per_slab_min, + * lower than this and we will fail. + */ +static int +spl_slab_size(spl_kmem_cache_t *skc, uint32_t *objs, uint32_t *size) +{ + uint32_t sks_size, obj_size, max_size, tgt_size, tgt_objs; + + if (skc->skc_flags & KMC_OFFSLAB) { + tgt_objs = spl_kmem_cache_obj_per_slab; + tgt_size = P2ROUNDUP(sizeof (spl_kmem_slab_t), PAGE_SIZE); + + if ((skc->skc_flags & KMC_KMEM) && + (spl_obj_size(skc) > (SPL_MAX_ORDER_NR_PAGES * PAGE_SIZE))) + return (-ENOSPC); + } else { + sks_size = spl_sks_size(skc); + obj_size = spl_obj_size(skc); + max_size = (spl_kmem_cache_max_size * 1024 * 1024); + tgt_size = (spl_kmem_cache_obj_per_slab * obj_size + sks_size); + + /* + * KMC_KMEM slabs are allocated by __get_free_pages() which + * rounds up to the nearest order. Knowing this the size + * should be rounded up to the next power of two with a hard + * maximum defined by the maximum allowed allocation order. + */ + if (skc->skc_flags & KMC_KMEM) { + max_size = SPL_MAX_ORDER_NR_PAGES * PAGE_SIZE; + tgt_size = MIN(max_size, + PAGE_SIZE * (1 << MAX(get_order(tgt_size) - 1, 1))); + } + + if (tgt_size <= max_size) { + tgt_objs = (tgt_size - sks_size) / obj_size; + } else { + tgt_objs = (max_size - sks_size) / obj_size; + tgt_size = (tgt_objs * obj_size) + sks_size; + } + } + + if (tgt_objs == 0) + return (-ENOSPC); + + *objs = tgt_objs; + *size = tgt_size; + + return (0); +} + +/* + * Make a guess at reasonable per-cpu magazine size based on the size of + * each object and the cost of caching N of them in each magazine. Long + * term this should really adapt based on an observed usage heuristic. + */ +static int +spl_magazine_size(spl_kmem_cache_t *skc) +{ + uint32_t obj_size = spl_obj_size(skc); + int size; + + if (spl_kmem_cache_magazine_size > 0) + return (MAX(MIN(spl_kmem_cache_magazine_size, 256), 2)); + + /* Per-magazine sizes below assume a 4Kib page size */ + if (obj_size > (PAGE_SIZE * 256)) + size = 4; /* Minimum 4Mib per-magazine */ + else if (obj_size > (PAGE_SIZE * 32)) + size = 16; /* Minimum 2Mib per-magazine */ + else if (obj_size > (PAGE_SIZE)) + size = 64; /* Minimum 256Kib per-magazine */ + else if (obj_size > (PAGE_SIZE / 4)) + size = 128; /* Minimum 128Kib per-magazine */ + else + size = 256; + + return (size); +} + +/* + * Allocate a per-cpu magazine to associate with a specific core. + */ +static spl_kmem_magazine_t * +spl_magazine_alloc(spl_kmem_cache_t *skc, int cpu) +{ + spl_kmem_magazine_t *skm; + int size = sizeof (spl_kmem_magazine_t) + + sizeof (void *) * skc->skc_mag_size; + + skm = kmalloc_node(size, GFP_KERNEL, cpu_to_node(cpu)); + if (skm) { + skm->skm_magic = SKM_MAGIC; + skm->skm_avail = 0; + skm->skm_size = skc->skc_mag_size; + skm->skm_refill = skc->skc_mag_refill; + skm->skm_cache = skc; + skm->skm_age = jiffies; + skm->skm_cpu = cpu; + } + + return (skm); +} + +/* + * Free a per-cpu magazine associated with a specific core. + */ +static void +spl_magazine_free(spl_kmem_magazine_t *skm) +{ + ASSERT(skm->skm_magic == SKM_MAGIC); + ASSERT(skm->skm_avail == 0); + kfree(skm); +} + +/* + * Create all pre-cpu magazines of reasonable sizes. + */ +static int +spl_magazine_create(spl_kmem_cache_t *skc) +{ + int i; + + if (skc->skc_flags & KMC_NOMAGAZINE) + return (0); + + skc->skc_mag = kzalloc(sizeof (spl_kmem_magazine_t *) * + num_possible_cpus(), kmem_flags_convert(KM_SLEEP)); + skc->skc_mag_size = spl_magazine_size(skc); + skc->skc_mag_refill = (skc->skc_mag_size + 1) / 2; + + for_each_possible_cpu(i) { + skc->skc_mag[i] = spl_magazine_alloc(skc, i); + if (!skc->skc_mag[i]) { + for (i--; i >= 0; i--) + spl_magazine_free(skc->skc_mag[i]); + + kfree(skc->skc_mag); + return (-ENOMEM); + } + } + + return (0); +} + +/* + * Destroy all pre-cpu magazines. + */ +static void +spl_magazine_destroy(spl_kmem_cache_t *skc) +{ + spl_kmem_magazine_t *skm; + int i; + + if (skc->skc_flags & KMC_NOMAGAZINE) + return; + + for_each_possible_cpu(i) { + skm = skc->skc_mag[i]; + spl_cache_flush(skc, skm, skm->skm_avail); + spl_magazine_free(skm); + } + + kfree(skc->skc_mag); +} + +/* + * Create a object cache based on the following arguments: + * name cache name + * size cache object size + * align cache object alignment + * ctor cache object constructor + * dtor cache object destructor + * reclaim cache object reclaim + * priv cache private data for ctor/dtor/reclaim + * vmp unused must be NULL + * flags + * KMC_NOTOUCH Disable cache object aging (unsupported) + * KMC_NODEBUG Disable debugging (unsupported) + * KMC_NOHASH Disable hashing (unsupported) + * KMC_QCACHE Disable qcache (unsupported) + * KMC_NOMAGAZINE Enabled for kmem/vmem, Disabled for Linux slab + * KMC_KMEM Force kmem backed cache + * KMC_VMEM Force vmem backed cache + * KMC_SLAB Force Linux slab backed cache + * KMC_OFFSLAB Locate objects off the slab + */ +spl_kmem_cache_t * +spl_kmem_cache_create(char *name, size_t size, size_t align, + spl_kmem_ctor_t ctor, spl_kmem_dtor_t dtor, spl_kmem_reclaim_t reclaim, + void *priv, void *vmp, int flags) +{ + gfp_t lflags = kmem_flags_convert(KM_SLEEP); + spl_kmem_cache_t *skc; + int rc; + + /* + * Unsupported flags + */ + ASSERT0(flags & KMC_NOMAGAZINE); + ASSERT0(flags & KMC_NOHASH); + ASSERT0(flags & KMC_QCACHE); + ASSERT(vmp == NULL); + + might_sleep(); + + skc = kzalloc(sizeof (*skc), lflags); + if (skc == NULL) + return (NULL); + + skc->skc_magic = SKC_MAGIC; + skc->skc_name_size = strlen(name) + 1; + skc->skc_name = (char *)kmalloc(skc->skc_name_size, lflags); + if (skc->skc_name == NULL) { + kfree(skc); + return (NULL); + } + strncpy(skc->skc_name, name, skc->skc_name_size); + + skc->skc_ctor = ctor; + skc->skc_dtor = dtor; + skc->skc_reclaim = reclaim; + skc->skc_private = priv; + skc->skc_vmp = vmp; + skc->skc_linux_cache = NULL; + skc->skc_flags = flags; + skc->skc_obj_size = size; + skc->skc_obj_align = SPL_KMEM_CACHE_ALIGN; + skc->skc_delay = SPL_KMEM_CACHE_DELAY; + skc->skc_reap = SPL_KMEM_CACHE_REAP; + atomic_set(&skc->skc_ref, 0); + + INIT_LIST_HEAD(&skc->skc_list); + INIT_LIST_HEAD(&skc->skc_complete_list); + INIT_LIST_HEAD(&skc->skc_partial_list); + skc->skc_emergency_tree = RB_ROOT; + spin_lock_init(&skc->skc_lock); + init_waitqueue_head(&skc->skc_waitq); + skc->skc_slab_fail = 0; + skc->skc_slab_create = 0; + skc->skc_slab_destroy = 0; + skc->skc_slab_total = 0; + skc->skc_slab_alloc = 0; + skc->skc_slab_max = 0; + skc->skc_obj_total = 0; + skc->skc_obj_alloc = 0; + skc->skc_obj_max = 0; + skc->skc_obj_deadlock = 0; + skc->skc_obj_emergency = 0; + skc->skc_obj_emergency_max = 0; + + /* + * Verify the requested alignment restriction is sane. + */ + if (align) { + VERIFY(ISP2(align)); + VERIFY3U(align, >=, SPL_KMEM_CACHE_ALIGN); + VERIFY3U(align, <=, PAGE_SIZE); + skc->skc_obj_align = align; + } + + /* + * When no specific type of slab is requested (kmem, vmem, or + * linuxslab) then select a cache type based on the object size + * and default tunables. + */ + if (!(skc->skc_flags & (KMC_KMEM | KMC_VMEM | KMC_SLAB))) { + + /* + * Objects smaller than spl_kmem_cache_slab_limit can + * use the Linux slab for better space-efficiency. By + * default this functionality is disabled until its + * performance characteristics are fully understood. + */ + if (spl_kmem_cache_slab_limit && + size <= (size_t)spl_kmem_cache_slab_limit) + skc->skc_flags |= KMC_SLAB; + + /* + * Small objects, less than spl_kmem_cache_kmem_limit per + * object should use kmem because their slabs are small. + */ + else if (spl_obj_size(skc) <= spl_kmem_cache_kmem_limit) + skc->skc_flags |= KMC_KMEM; + + /* + * All other objects are considered large and are placed + * on vmem backed slabs. + */ + else + skc->skc_flags |= KMC_VMEM; + } + + /* + * Given the type of slab allocate the required resources. + */ + if (skc->skc_flags & (KMC_KMEM | KMC_VMEM)) { + rc = spl_slab_size(skc, + &skc->skc_slab_objs, &skc->skc_slab_size); + if (rc) + goto out; + + rc = spl_magazine_create(skc); + if (rc) + goto out; + } else { + unsigned long slabflags = 0; + + if (size > (SPL_MAX_KMEM_ORDER_NR_PAGES * PAGE_SIZE)) { + rc = EINVAL; + goto out; + } + +#if defined(SLAB_USERCOPY) + /* + * Required for PAX-enabled kernels if the slab is to be + * used for coping between user and kernel space. + */ + slabflags |= SLAB_USERCOPY; +#endif + + skc->skc_linux_cache = kmem_cache_create( + skc->skc_name, size, align, slabflags, NULL); + if (skc->skc_linux_cache == NULL) { + rc = ENOMEM; + goto out; + } + +#if defined(HAVE_KMEM_CACHE_ALLOCFLAGS) + skc->skc_linux_cache->allocflags |= __GFP_COMP; +#elif defined(HAVE_KMEM_CACHE_GFPFLAGS) + skc->skc_linux_cache->gfpflags |= __GFP_COMP; +#endif + skc->skc_flags |= KMC_NOMAGAZINE; + } + + if (spl_kmem_cache_expire & KMC_EXPIRE_AGE) + skc->skc_taskqid = taskq_dispatch_delay(spl_kmem_cache_taskq, + spl_cache_age, skc, TQ_SLEEP, + ddi_get_lbolt() + skc->skc_delay / 3 * HZ); + + down_write(&spl_kmem_cache_sem); + list_add_tail(&skc->skc_list, &spl_kmem_cache_list); + up_write(&spl_kmem_cache_sem); + + return (skc); +out: + kfree(skc->skc_name); + kfree(skc); + return (NULL); +} +EXPORT_SYMBOL(spl_kmem_cache_create); + +/* + * Register a move callback for cache defragmentation. + * XXX: Unimplemented but harmless to stub out for now. + */ +void +spl_kmem_cache_set_move(spl_kmem_cache_t *skc, + kmem_cbrc_t (move)(void *, void *, size_t, void *)) +{ + ASSERT(move != NULL); +} +EXPORT_SYMBOL(spl_kmem_cache_set_move); + +/* + * Destroy a cache and all objects associated with the cache. + */ +void +spl_kmem_cache_destroy(spl_kmem_cache_t *skc) +{ + DECLARE_WAIT_QUEUE_HEAD(wq); + taskqid_t id; + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(skc->skc_flags & (KMC_KMEM | KMC_VMEM | KMC_SLAB)); + + down_write(&spl_kmem_cache_sem); + list_del_init(&skc->skc_list); + up_write(&spl_kmem_cache_sem); + + /* Cancel any and wait for any pending delayed tasks */ + VERIFY(!test_and_set_bit(KMC_BIT_DESTROY, &skc->skc_flags)); + + spin_lock(&skc->skc_lock); + id = skc->skc_taskqid; + spin_unlock(&skc->skc_lock); + + taskq_cancel_id(spl_kmem_cache_taskq, id); + + /* + * Wait until all current callers complete, this is mainly + * to catch the case where a low memory situation triggers a + * cache reaping action which races with this destroy. + */ + wait_event(wq, atomic_read(&skc->skc_ref) == 0); + + if (skc->skc_flags & (KMC_KMEM | KMC_VMEM)) { + spl_magazine_destroy(skc); + spl_slab_reclaim(skc); + } else { + ASSERT(skc->skc_flags & KMC_SLAB); + kmem_cache_destroy(skc->skc_linux_cache); + } + + spin_lock(&skc->skc_lock); + + /* + * Validate there are no objects in use and free all the + * spl_kmem_slab_t, spl_kmem_obj_t, and object buffers. + */ + ASSERT3U(skc->skc_slab_alloc, ==, 0); + ASSERT3U(skc->skc_obj_alloc, ==, 0); + ASSERT3U(skc->skc_slab_total, ==, 0); + ASSERT3U(skc->skc_obj_total, ==, 0); + ASSERT3U(skc->skc_obj_emergency, ==, 0); + ASSERT(list_empty(&skc->skc_complete_list)); + + spin_unlock(&skc->skc_lock); + + kfree(skc->skc_name); + kfree(skc); +} +EXPORT_SYMBOL(spl_kmem_cache_destroy); + +/* + * Allocate an object from a slab attached to the cache. This is used to + * repopulate the per-cpu magazine caches in batches when they run low. + */ +static void * +spl_cache_obj(spl_kmem_cache_t *skc, spl_kmem_slab_t *sks) +{ + spl_kmem_obj_t *sko; + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(sks->sks_magic == SKS_MAGIC); + ASSERT(spin_is_locked(&skc->skc_lock)); + + sko = list_entry(sks->sks_free_list.next, spl_kmem_obj_t, sko_list); + ASSERT(sko->sko_magic == SKO_MAGIC); + ASSERT(sko->sko_addr != NULL); + + /* Remove from sks_free_list */ + list_del_init(&sko->sko_list); + + sks->sks_age = jiffies; + sks->sks_ref++; + skc->skc_obj_alloc++; + + /* Track max obj usage statistics */ + if (skc->skc_obj_alloc > skc->skc_obj_max) + skc->skc_obj_max = skc->skc_obj_alloc; + + /* Track max slab usage statistics */ + if (sks->sks_ref == 1) { + skc->skc_slab_alloc++; + + if (skc->skc_slab_alloc > skc->skc_slab_max) + skc->skc_slab_max = skc->skc_slab_alloc; + } + + return (sko->sko_addr); +} + +/* + * Generic slab allocation function to run by the global work queues. + * It is responsible for allocating a new slab, linking it in to the list + * of partial slabs, and then waking any waiters. + */ +static void +spl_cache_grow_work(void *data) +{ + spl_kmem_alloc_t *ska = (spl_kmem_alloc_t *)data; + spl_kmem_cache_t *skc = ska->ska_cache; + spl_kmem_slab_t *sks; + + fstrans_cookie_t cookie = spl_fstrans_mark(); + sks = spl_slab_alloc(skc, ska->ska_flags); + spl_fstrans_unmark(cookie); + + spin_lock(&skc->skc_lock); + if (sks) { + skc->skc_slab_total++; + skc->skc_obj_total += sks->sks_objs; + list_add_tail(&sks->sks_list, &skc->skc_partial_list); + } + + atomic_dec(&skc->skc_ref); + smp_mb__before_atomic(); + clear_bit(KMC_BIT_GROWING, &skc->skc_flags); + clear_bit(KMC_BIT_DEADLOCKED, &skc->skc_flags); + smp_mb__after_atomic(); + wake_up_all(&skc->skc_waitq); + spin_unlock(&skc->skc_lock); + + kfree(ska); +} + +/* + * Returns non-zero when a new slab should be available. + */ +static int +spl_cache_grow_wait(spl_kmem_cache_t *skc) +{ + return (!test_bit(KMC_BIT_GROWING, &skc->skc_flags)); +} + +/* + * No available objects on any slabs, create a new slab. Note that this + * functionality is disabled for KMC_SLAB caches which are backed by the + * Linux slab. + */ +static int +spl_cache_grow(spl_kmem_cache_t *skc, int flags, void **obj) +{ + int remaining, rc = 0; + + ASSERT0(flags & ~KM_PUBLIC_MASK); + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT((skc->skc_flags & KMC_SLAB) == 0); + might_sleep(); + *obj = NULL; + + /* + * Before allocating a new slab wait for any reaping to complete and + * then return so the local magazine can be rechecked for new objects. + */ + if (test_bit(KMC_BIT_REAPING, &skc->skc_flags)) { + rc = spl_wait_on_bit(&skc->skc_flags, KMC_BIT_REAPING, + TASK_UNINTERRUPTIBLE); + return (rc ? rc : -EAGAIN); + } + + /* + * This is handled by dispatching a work request to the global work + * queue. This allows us to asynchronously allocate a new slab while + * retaining the ability to safely fall back to a smaller synchronous + * allocations to ensure forward progress is always maintained. + */ + if (test_and_set_bit(KMC_BIT_GROWING, &skc->skc_flags) == 0) { + spl_kmem_alloc_t *ska; + + ska = kmalloc(sizeof (*ska), kmem_flags_convert(flags)); + if (ska == NULL) { + clear_bit_unlock(KMC_BIT_GROWING, &skc->skc_flags); + smp_mb__after_atomic(); + wake_up_all(&skc->skc_waitq); + return (-ENOMEM); + } + + atomic_inc(&skc->skc_ref); + ska->ska_cache = skc; + ska->ska_flags = flags; + taskq_init_ent(&ska->ska_tqe); + taskq_dispatch_ent(spl_kmem_cache_taskq, + spl_cache_grow_work, ska, 0, &ska->ska_tqe); + } + + /* + * The goal here is to only detect the rare case where a virtual slab + * allocation has deadlocked. We must be careful to minimize the use + * of emergency objects which are more expensive to track. Therefore, + * we set a very long timeout for the asynchronous allocation and if + * the timeout is reached the cache is flagged as deadlocked. From + * this point only new emergency objects will be allocated until the + * asynchronous allocation completes and clears the deadlocked flag. + */ + if (test_bit(KMC_BIT_DEADLOCKED, &skc->skc_flags)) { + rc = spl_emergency_alloc(skc, flags, obj); + } else { + remaining = wait_event_timeout(skc->skc_waitq, + spl_cache_grow_wait(skc), HZ / 10); + + if (!remaining) { + spin_lock(&skc->skc_lock); + if (test_bit(KMC_BIT_GROWING, &skc->skc_flags)) { + set_bit(KMC_BIT_DEADLOCKED, &skc->skc_flags); + skc->skc_obj_deadlock++; + } + spin_unlock(&skc->skc_lock); + } + + rc = -ENOMEM; + } + + return (rc); +} + +/* + * Refill a per-cpu magazine with objects from the slabs for this cache. + * Ideally the magazine can be repopulated using existing objects which have + * been released, however if we are unable to locate enough free objects new + * slabs of objects will be created. On success NULL is returned, otherwise + * the address of a single emergency object is returned for use by the caller. + */ +static void * +spl_cache_refill(spl_kmem_cache_t *skc, spl_kmem_magazine_t *skm, int flags) +{ + spl_kmem_slab_t *sks; + int count = 0, rc, refill; + void *obj = NULL; + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(skm->skm_magic == SKM_MAGIC); + + refill = MIN(skm->skm_refill, skm->skm_size - skm->skm_avail); + spin_lock(&skc->skc_lock); + + while (refill > 0) { + /* No slabs available we may need to grow the cache */ + if (list_empty(&skc->skc_partial_list)) { + spin_unlock(&skc->skc_lock); + + local_irq_enable(); + rc = spl_cache_grow(skc, flags, &obj); + local_irq_disable(); + + /* Emergency object for immediate use by caller */ + if (rc == 0 && obj != NULL) + return (obj); + + if (rc) + goto out; + + /* Rescheduled to different CPU skm is not local */ + if (skm != skc->skc_mag[smp_processor_id()]) + goto out; + + /* + * Potentially rescheduled to the same CPU but + * allocations may have occurred from this CPU while + * we were sleeping so recalculate max refill. + */ + refill = MIN(refill, skm->skm_size - skm->skm_avail); + + spin_lock(&skc->skc_lock); + continue; + } + + /* Grab the next available slab */ + sks = list_entry((&skc->skc_partial_list)->next, + spl_kmem_slab_t, sks_list); + ASSERT(sks->sks_magic == SKS_MAGIC); + ASSERT(sks->sks_ref < sks->sks_objs); + ASSERT(!list_empty(&sks->sks_free_list)); + + /* + * Consume as many objects as needed to refill the requested + * cache. We must also be careful not to overfill it. + */ + while (sks->sks_ref < sks->sks_objs && refill-- > 0 && + ++count) { + ASSERT(skm->skm_avail < skm->skm_size); + ASSERT(count < skm->skm_size); + skm->skm_objs[skm->skm_avail++] = + spl_cache_obj(skc, sks); + } + + /* Move slab to skc_complete_list when full */ + if (sks->sks_ref == sks->sks_objs) { + list_del(&sks->sks_list); + list_add(&sks->sks_list, &skc->skc_complete_list); + } + } + + spin_unlock(&skc->skc_lock); +out: + return (NULL); +} + +/* + * Release an object back to the slab from which it came. + */ +static void +spl_cache_shrink(spl_kmem_cache_t *skc, void *obj) +{ + spl_kmem_slab_t *sks = NULL; + spl_kmem_obj_t *sko = NULL; + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(spin_is_locked(&skc->skc_lock)); + + sko = spl_sko_from_obj(skc, obj); + ASSERT(sko->sko_magic == SKO_MAGIC); + sks = sko->sko_slab; + ASSERT(sks->sks_magic == SKS_MAGIC); + ASSERT(sks->sks_cache == skc); + list_add(&sko->sko_list, &sks->sks_free_list); + + sks->sks_age = jiffies; + sks->sks_ref--; + skc->skc_obj_alloc--; + + /* + * Move slab to skc_partial_list when no longer full. Slabs + * are added to the head to keep the partial list is quasi-full + * sorted order. Fuller at the head, emptier at the tail. + */ + if (sks->sks_ref == (sks->sks_objs - 1)) { + list_del(&sks->sks_list); + list_add(&sks->sks_list, &skc->skc_partial_list); + } + + /* + * Move empty slabs to the end of the partial list so + * they can be easily found and freed during reclamation. + */ + if (sks->sks_ref == 0) { + list_del(&sks->sks_list); + list_add_tail(&sks->sks_list, &skc->skc_partial_list); + skc->skc_slab_alloc--; + } +} + +/* + * Allocate an object from the per-cpu magazine, or if the magazine + * is empty directly allocate from a slab and repopulate the magazine. + */ +void * +spl_kmem_cache_alloc(spl_kmem_cache_t *skc, int flags) +{ + spl_kmem_magazine_t *skm; + void *obj = NULL; + + ASSERT0(flags & ~KM_PUBLIC_MASK); + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(!test_bit(KMC_BIT_DESTROY, &skc->skc_flags)); + + /* + * Allocate directly from a Linux slab. All optimizations are left + * to the underlying cache we only need to guarantee that KM_SLEEP + * callers will never fail. + */ + if (skc->skc_flags & KMC_SLAB) { + struct kmem_cache *slc = skc->skc_linux_cache; + do { + obj = kmem_cache_alloc(slc, kmem_flags_convert(flags)); + } while ((obj == NULL) && !(flags & KM_NOSLEEP)); + + goto ret; + } + + local_irq_disable(); + +restart: + /* + * Safe to update per-cpu structure without lock, but + * in the restart case we must be careful to reacquire + * the local magazine since this may have changed + * when we need to grow the cache. + */ + skm = skc->skc_mag[smp_processor_id()]; + ASSERT(skm->skm_magic == SKM_MAGIC); + + if (likely(skm->skm_avail)) { + /* Object available in CPU cache, use it */ + obj = skm->skm_objs[--skm->skm_avail]; + skm->skm_age = jiffies; + } else { + obj = spl_cache_refill(skc, skm, flags); + if ((obj == NULL) && !(flags & KM_NOSLEEP)) + goto restart; + + local_irq_enable(); + goto ret; + } + + local_irq_enable(); + ASSERT(obj); + ASSERT(IS_P2ALIGNED(obj, skc->skc_obj_align)); + +ret: + /* Pre-emptively migrate object to CPU L1 cache */ + if (obj) { + if (obj && skc->skc_ctor) + skc->skc_ctor(obj, skc->skc_private, flags); + else + prefetchw(obj); + } + + return (obj); +} +EXPORT_SYMBOL(spl_kmem_cache_alloc); + +/* + * Free an object back to the local per-cpu magazine, there is no + * guarantee that this is the same magazine the object was originally + * allocated from. We may need to flush entire from the magazine + * back to the slabs to make space. + */ +void +spl_kmem_cache_free(spl_kmem_cache_t *skc, void *obj) +{ + spl_kmem_magazine_t *skm; + unsigned long flags; + int do_reclaim = 0; + int do_emergency = 0; + + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(!test_bit(KMC_BIT_DESTROY, &skc->skc_flags)); + + /* + * Run the destructor + */ + if (skc->skc_dtor) + skc->skc_dtor(obj, skc->skc_private); + + /* + * Free the object from the Linux underlying Linux slab. + */ + if (skc->skc_flags & KMC_SLAB) { + kmem_cache_free(skc->skc_linux_cache, obj); + return; + } + + /* + * While a cache has outstanding emergency objects all freed objects + * must be checked. However, since emergency objects will never use + * a virtual address these objects can be safely excluded as an + * optimization. + */ + if (!is_vmalloc_addr(obj)) { + spin_lock(&skc->skc_lock); + do_emergency = (skc->skc_obj_emergency > 0); + spin_unlock(&skc->skc_lock); + + if (do_emergency && (spl_emergency_free(skc, obj) == 0)) + return; + } + + local_irq_save(flags); + + /* + * Safe to update per-cpu structure without lock, but + * no remote memory allocation tracking is being performed + * it is entirely possible to allocate an object from one + * CPU cache and return it to another. + */ + skm = skc->skc_mag[smp_processor_id()]; + ASSERT(skm->skm_magic == SKM_MAGIC); + + /* + * Per-CPU cache full, flush it to make space for this object, + * this may result in an empty slab which can be reclaimed once + * interrupts are re-enabled. + */ + if (unlikely(skm->skm_avail >= skm->skm_size)) { + spl_cache_flush(skc, skm, skm->skm_refill); + do_reclaim = 1; + } + + /* Available space in cache, use it */ + skm->skm_objs[skm->skm_avail++] = obj; + + local_irq_restore(flags); + + if (do_reclaim) + spl_slab_reclaim(skc); +} +EXPORT_SYMBOL(spl_kmem_cache_free); + +/* + * The generic shrinker function for all caches. Under Linux a shrinker + * may not be tightly coupled with a slab cache. In fact Linux always + * systematically tries calling all registered shrinker callbacks which + * report that they contain unused objects. Because of this we only + * register one shrinker function in the shim layer for all slab caches. + * We always attempt to shrink all caches when this generic shrinker + * is called. + * + * If sc->nr_to_scan is zero, the caller is requesting a query of the + * number of objects which can potentially be freed. If it is nonzero, + * the request is to free that many objects. + * + * Linux kernels >= 3.12 have the count_objects and scan_objects callbacks + * in struct shrinker and also require the shrinker to return the number + * of objects freed. + * + * Older kernels require the shrinker to return the number of freeable + * objects following the freeing of nr_to_free. + * + * Linux semantics differ from those under Solaris, which are to + * free all available objects which may (and probably will) be more + * objects than the requested nr_to_scan. + */ +static spl_shrinker_t +__spl_kmem_cache_generic_shrinker(struct shrinker *shrink, + struct shrink_control *sc) +{ + spl_kmem_cache_t *skc; + int alloc = 0; + + /* + * No shrinking in a transaction context. Can cause deadlocks. + */ + if (sc->nr_to_scan && spl_fstrans_check()) + return (SHRINK_STOP); + + down_read(&spl_kmem_cache_sem); + list_for_each_entry(skc, &spl_kmem_cache_list, skc_list) { + if (sc->nr_to_scan) { +#ifdef HAVE_SPLIT_SHRINKER_CALLBACK + uint64_t oldalloc = skc->skc_obj_alloc; + spl_kmem_cache_reap_now(skc, + MAX(sc->nr_to_scan>>fls64(skc->skc_slab_objs), 1)); + if (oldalloc > skc->skc_obj_alloc) + alloc += oldalloc - skc->skc_obj_alloc; +#else + spl_kmem_cache_reap_now(skc, + MAX(sc->nr_to_scan>>fls64(skc->skc_slab_objs), 1)); + alloc += skc->skc_obj_alloc; +#endif /* HAVE_SPLIT_SHRINKER_CALLBACK */ + } else { + /* Request to query number of freeable objects */ + alloc += skc->skc_obj_alloc; + } + } + up_read(&spl_kmem_cache_sem); + + /* + * When KMC_RECLAIM_ONCE is set allow only a single reclaim pass. + * This functionality only exists to work around a rare issue where + * shrink_slabs() is repeatedly invoked by many cores causing the + * system to thrash. + */ + if ((spl_kmem_cache_reclaim & KMC_RECLAIM_ONCE) && sc->nr_to_scan) + return (SHRINK_STOP); + + return (MAX(alloc, 0)); +} + +SPL_SHRINKER_CALLBACK_WRAPPER(spl_kmem_cache_generic_shrinker); + +/* + * Call the registered reclaim function for a cache. Depending on how + * many and which objects are released it may simply repopulate the + * local magazine which will then need to age-out. Objects which cannot + * fit in the magazine we will be released back to their slabs which will + * also need to age out before being release. This is all just best + * effort and we do not want to thrash creating and destroying slabs. + */ +void +spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count) +{ + ASSERT(skc->skc_magic == SKC_MAGIC); + ASSERT(!test_bit(KMC_BIT_DESTROY, &skc->skc_flags)); + + atomic_inc(&skc->skc_ref); + + /* + * Execute the registered reclaim callback if it exists. The + * per-cpu caches will be drained when is set KMC_EXPIRE_MEM. + */ + if (skc->skc_flags & KMC_SLAB) { + if (skc->skc_reclaim) + skc->skc_reclaim(skc->skc_private); + + if (spl_kmem_cache_expire & KMC_EXPIRE_MEM) + kmem_cache_shrink(skc->skc_linux_cache); + + goto out; + } + + /* + * Prevent concurrent cache reaping when contended. + */ + if (test_and_set_bit(KMC_BIT_REAPING, &skc->skc_flags)) + goto out; + + /* + * When a reclaim function is available it may be invoked repeatedly + * until at least a single slab can be freed. This ensures that we + * do free memory back to the system. This helps minimize the chance + * of an OOM event when the bulk of memory is used by the slab. + * + * When free slabs are already available the reclaim callback will be + * skipped. Additionally, if no forward progress is detected despite + * a reclaim function the cache will be skipped to avoid deadlock. + * + * Longer term this would be the correct place to add the code which + * repacks the slabs in order minimize fragmentation. + */ + if (skc->skc_reclaim) { + uint64_t objects = UINT64_MAX; + int do_reclaim; + + do { + spin_lock(&skc->skc_lock); + do_reclaim = + (skc->skc_slab_total > 0) && + ((skc->skc_slab_total-skc->skc_slab_alloc) == 0) && + (skc->skc_obj_alloc < objects); + + objects = skc->skc_obj_alloc; + spin_unlock(&skc->skc_lock); + + if (do_reclaim) + skc->skc_reclaim(skc->skc_private); + + } while (do_reclaim); + } + + /* Reclaim from the magazine and free all now empty slabs. */ + if (spl_kmem_cache_expire & KMC_EXPIRE_MEM) { + spl_kmem_magazine_t *skm; + unsigned long irq_flags; + + local_irq_save(irq_flags); + skm = skc->skc_mag[smp_processor_id()]; + spl_cache_flush(skc, skm, skm->skm_avail); + local_irq_restore(irq_flags); + } + + spl_slab_reclaim(skc); + clear_bit_unlock(KMC_BIT_REAPING, &skc->skc_flags); + smp_mb__after_atomic(); + wake_up_bit(&skc->skc_flags, KMC_BIT_REAPING); +out: + atomic_dec(&skc->skc_ref); +} +EXPORT_SYMBOL(spl_kmem_cache_reap_now); + +/* + * Reap all free slabs from all registered caches. + */ +void +spl_kmem_reap(void) +{ + struct shrink_control sc; + + sc.nr_to_scan = KMC_REAP_CHUNK; + sc.gfp_mask = GFP_KERNEL; + + (void) __spl_kmem_cache_generic_shrinker(NULL, &sc); +} +EXPORT_SYMBOL(spl_kmem_reap); + +int +spl_kmem_cache_init(void) +{ + init_rwsem(&spl_kmem_cache_sem); + INIT_LIST_HEAD(&spl_kmem_cache_list); + spl_kmem_cache_taskq = taskq_create("spl_kmem_cache", + spl_kmem_cache_kmem_threads, maxclsyspri, + spl_kmem_cache_kmem_threads * 8, INT_MAX, + TASKQ_PREPOPULATE | TASKQ_DYNAMIC); + spl_register_shrinker(&spl_kmem_cache_shrinker); + + return (0); +} + +void +spl_kmem_cache_fini(void) +{ + spl_unregister_shrinker(&spl_kmem_cache_shrinker); + taskq_destroy(spl_kmem_cache_taskq); +} --- linux-4.4.0.orig/spl/module/spl/spl-kmem.c +++ linux-4.4.0/spl/module/spl/spl-kmem.c @@ -0,0 +1,560 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +/* + * As a general rule kmem_alloc() allocations should be small, preferably + * just a few pages since they must by physically contiguous. Therefore, a + * rate limited warning will be printed to the console for any kmem_alloc() + * which exceeds a reasonable threshold. + * + * The default warning threshold is set to eight pages but capped at 32K to + * accommodate systems using large pages. This value was selected to be small + * enough to ensure the largest allocations are quickly noticed and fixed. + * But large enough to avoid logging any warnings when a allocation size is + * larger than optimal but not a serious concern. Since this value is tunable, + * developers are encouraged to set it lower when testing so any new largish + * allocations are quickly caught. These warnings may be disabled by setting + * the threshold to zero. + */ +unsigned int spl_kmem_alloc_warn = MAX(8 * PAGE_SIZE, 32 * 1024); +module_param(spl_kmem_alloc_warn, uint, 0644); +MODULE_PARM_DESC(spl_kmem_alloc_warn, + "Warning threshold in bytes for a kmem_alloc()"); +EXPORT_SYMBOL(spl_kmem_alloc_warn); + +/* + * Large kmem_alloc() allocations will fail if they exceed KMALLOC_MAX_SIZE. + * Allocations which are marginally smaller than this limit may succeed but + * should still be avoided due to the expense of locating a contiguous range + * of free pages. Therefore, a maximum kmem size with reasonable safely + * margin of 4x is set. Kmem_alloc() allocations larger than this maximum + * will quickly fail. Vmem_alloc() allocations less than or equal to this + * value will use kmalloc(), but shift to vmalloc() when exceeding this value. + */ +unsigned int spl_kmem_alloc_max = (KMALLOC_MAX_SIZE >> 2); +module_param(spl_kmem_alloc_max, uint, 0644); +MODULE_PARM_DESC(spl_kmem_alloc_max, + "Maximum size in bytes for a kmem_alloc()"); +EXPORT_SYMBOL(spl_kmem_alloc_max); + +int +kmem_debugging(void) +{ + return (0); +} +EXPORT_SYMBOL(kmem_debugging); + +char * +kmem_vasprintf(const char *fmt, va_list ap) +{ + va_list aq; + char *ptr; + + do { + va_copy(aq, ap); + ptr = kvasprintf(kmem_flags_convert(KM_SLEEP), fmt, aq); + va_end(aq); + } while (ptr == NULL); + + return (ptr); +} +EXPORT_SYMBOL(kmem_vasprintf); + +char * +kmem_asprintf(const char *fmt, ...) +{ + va_list ap; + char *ptr; + + do { + va_start(ap, fmt); + ptr = kvasprintf(kmem_flags_convert(KM_SLEEP), fmt, ap); + va_end(ap); + } while (ptr == NULL); + + return (ptr); +} +EXPORT_SYMBOL(kmem_asprintf); + +static char * +__strdup(const char *str, int flags) +{ + char *ptr; + int n; + + n = strlen(str); + ptr = kmalloc(n + 1, kmem_flags_convert(flags)); + if (ptr) + memcpy(ptr, str, n + 1); + + return (ptr); +} + +char * +strdup(const char *str) +{ + return (__strdup(str, KM_SLEEP)); +} +EXPORT_SYMBOL(strdup); + +void +strfree(char *str) +{ + kfree(str); +} +EXPORT_SYMBOL(strfree); + +/* + * Limit the number of large allocation stack traces dumped to not more than + * 5 every 60 seconds to prevent denial-of-service attacks from debug code. + */ +DEFINE_RATELIMIT_STATE(kmem_alloc_ratelimit_state, 60 * HZ, 5); + +/* + * General purpose unified implementation of kmem_alloc(). It is an + * amalgamation of Linux and Illumos allocator design. It should never be + * exported to ensure that code using kmem_alloc()/kmem_zalloc() remains + * relatively portable. Consumers may only access this function through + * wrappers that enforce the common flags to ensure portability. + */ +inline void * +spl_kmem_alloc_impl(size_t size, int flags, int node) +{ + gfp_t lflags = kmem_flags_convert(flags); + int use_vmem = 0; + void *ptr; + + /* + * Log abnormally large allocations and rate limit the console output. + * Allocations larger than spl_kmem_alloc_warn should be performed + * through the vmem_alloc()/vmem_zalloc() interfaces. + */ + if ((spl_kmem_alloc_warn > 0) && (size > spl_kmem_alloc_warn) && + !(flags & KM_VMEM) && __ratelimit(&kmem_alloc_ratelimit_state)) { + printk(KERN_WARNING + "Large kmem_alloc(%lu, 0x%x), please file an issue at:\n" + "https://github.com/zfsonlinux/zfs/issues/new\n", + (unsigned long)size, flags); + dump_stack(); + } + + /* + * Use a loop because kmalloc_node() can fail when GFP_KERNEL is used + * unlike kmem_alloc() with KM_SLEEP on Illumos. + */ + do { + /* + * Calling kmalloc_node() when the size >= spl_kmem_alloc_max + * is unsafe. This must fail for all for kmem_alloc() and + * kmem_zalloc() callers. + * + * For vmem_alloc() and vmem_zalloc() callers it is permissible + * to use __vmalloc(). However, in general use of __vmalloc() + * is strongly discouraged because a global lock must be + * acquired. Contention on this lock can significantly + * impact performance so frequently manipulating the virtual + * address space is strongly discouraged. + */ + if ((size > spl_kmem_alloc_max) || use_vmem) { + if (flags & KM_VMEM) { + ptr = __vmalloc(size, lflags, PAGE_KERNEL); + } else { + return (NULL); + } + } else { + ptr = kmalloc_node(size, lflags, node); + } + + if (likely(ptr) || (flags & KM_NOSLEEP)) + return (ptr); + + /* + * For vmem_alloc() and vmem_zalloc() callers retry immediately + * using __vmalloc() which is unlikely to fail. + */ + if ((flags & KM_VMEM) && (use_vmem == 0)) { + use_vmem = 1; + continue; + } + + if (unlikely(__ratelimit(&kmem_alloc_ratelimit_state))) { + printk(KERN_WARNING + "Possible memory allocation deadlock: " + "size=%lu lflags=0x%x", + (unsigned long)size, lflags); + dump_stack(); + } + + /* + * Use cond_resched() instead of congestion_wait() to avoid + * deadlocking systems where there are no block devices. + */ + cond_resched(); + } while (1); + + return (NULL); +} + +inline void +spl_kmem_free_impl(const void *buf, size_t size) +{ + if (is_vmalloc_addr(buf)) + vfree(buf); + else + kfree(buf); +} + +/* + * Memory allocation and accounting for kmem_* * style allocations. When + * DEBUG_KMEM is enabled the total memory allocated will be tracked and + * any memory leaked will be reported during module unload. + * + * ./configure --enable-debug-kmem + */ +#ifdef DEBUG_KMEM + +/* Shim layer memory accounting */ +#ifdef HAVE_ATOMIC64_T +atomic64_t kmem_alloc_used = ATOMIC64_INIT(0); +unsigned long long kmem_alloc_max = 0; +#else /* HAVE_ATOMIC64_T */ +atomic_t kmem_alloc_used = ATOMIC_INIT(0); +unsigned long long kmem_alloc_max = 0; +#endif /* HAVE_ATOMIC64_T */ + +EXPORT_SYMBOL(kmem_alloc_used); +EXPORT_SYMBOL(kmem_alloc_max); + +inline void * +spl_kmem_alloc_debug(size_t size, int flags, int node) +{ + void *ptr; + + ptr = spl_kmem_alloc_impl(size, flags, node); + if (ptr) { + kmem_alloc_used_add(size); + if (unlikely(kmem_alloc_used_read() > kmem_alloc_max)) + kmem_alloc_max = kmem_alloc_used_read(); + } + + return (ptr); +} + +inline void +spl_kmem_free_debug(const void *ptr, size_t size) +{ + kmem_alloc_used_sub(size); + spl_kmem_free_impl(ptr, size); +} + +/* + * When DEBUG_KMEM_TRACKING is enabled not only will total bytes be tracked + * but also the location of every alloc and free. When the SPL module is + * unloaded a list of all leaked addresses and where they were allocated + * will be dumped to the console. Enabling this feature has a significant + * impact on performance but it makes finding memory leaks straight forward. + * + * Not surprisingly with debugging enabled the xmem_locks are very highly + * contended particularly on xfree(). If we want to run with this detailed + * debugging enabled for anything other than debugging we need to minimize + * the contention by moving to a lock per xmem_table entry model. + * + * ./configure --enable-debug-kmem-tracking + */ +#ifdef DEBUG_KMEM_TRACKING + +#include +#include + +#define KMEM_HASH_BITS 10 +#define KMEM_TABLE_SIZE (1 << KMEM_HASH_BITS) + +typedef struct kmem_debug { + struct hlist_node kd_hlist; /* Hash node linkage */ + struct list_head kd_list; /* List of all allocations */ + void *kd_addr; /* Allocation pointer */ + size_t kd_size; /* Allocation size */ + const char *kd_func; /* Allocation function */ + int kd_line; /* Allocation line */ +} kmem_debug_t; + +static spinlock_t kmem_lock; +static struct hlist_head kmem_table[KMEM_TABLE_SIZE]; +static struct list_head kmem_list; + +static kmem_debug_t * +kmem_del_init(spinlock_t *lock, struct hlist_head *table, + int bits, const void *addr) +{ + struct hlist_head *head; + struct hlist_node *node; + struct kmem_debug *p; + unsigned long flags; + + spin_lock_irqsave(lock, flags); + + head = &table[hash_ptr((void *)addr, bits)]; + hlist_for_each(node, head) { + p = list_entry(node, struct kmem_debug, kd_hlist); + if (p->kd_addr == addr) { + hlist_del_init(&p->kd_hlist); + list_del_init(&p->kd_list); + spin_unlock_irqrestore(lock, flags); + return (p); + } + } + + spin_unlock_irqrestore(lock, flags); + + return (NULL); +} + +inline void * +spl_kmem_alloc_track(size_t size, int flags, + const char *func, int line, int node) +{ + void *ptr = NULL; + kmem_debug_t *dptr; + unsigned long irq_flags; + + dptr = kmalloc(sizeof (kmem_debug_t), kmem_flags_convert(flags)); + if (dptr == NULL) + return (NULL); + + dptr->kd_func = __strdup(func, flags); + if (dptr->kd_func == NULL) { + kfree(dptr); + return (NULL); + } + + ptr = spl_kmem_alloc_debug(size, flags, node); + if (ptr == NULL) { + kfree(dptr->kd_func); + kfree(dptr); + return (NULL); + } + + INIT_HLIST_NODE(&dptr->kd_hlist); + INIT_LIST_HEAD(&dptr->kd_list); + + dptr->kd_addr = ptr; + dptr->kd_size = size; + dptr->kd_line = line; + + spin_lock_irqsave(&kmem_lock, irq_flags); + hlist_add_head(&dptr->kd_hlist, + &kmem_table[hash_ptr(ptr, KMEM_HASH_BITS)]); + list_add_tail(&dptr->kd_list, &kmem_list); + spin_unlock_irqrestore(&kmem_lock, irq_flags); + + return (ptr); +} + +inline void +spl_kmem_free_track(const void *ptr, size_t size) +{ + kmem_debug_t *dptr; + + /* Must exist in hash due to kmem_alloc() */ + dptr = kmem_del_init(&kmem_lock, kmem_table, KMEM_HASH_BITS, ptr); + ASSERT3P(dptr, !=, NULL); + ASSERT3S(dptr->kd_size, ==, size); + + kfree(dptr->kd_func); + kfree(dptr); + + spl_kmem_free_debug(ptr, size); +} +#endif /* DEBUG_KMEM_TRACKING */ +#endif /* DEBUG_KMEM */ + +/* + * Public kmem_alloc(), kmem_zalloc() and kmem_free() interfaces. + */ +void * +spl_kmem_alloc(size_t size, int flags, const char *func, int line) +{ + ASSERT0(flags & ~KM_PUBLIC_MASK); + +#if !defined(DEBUG_KMEM) + return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE)); +#else + return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE)); +#endif +} +EXPORT_SYMBOL(spl_kmem_alloc); + +void * +spl_kmem_zalloc(size_t size, int flags, const char *func, int line) +{ + ASSERT0(flags & ~KM_PUBLIC_MASK); + + flags |= KM_ZERO; + +#if !defined(DEBUG_KMEM) + return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE)); +#else + return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE)); +#endif +} +EXPORT_SYMBOL(spl_kmem_zalloc); + +void +spl_kmem_free(const void *buf, size_t size) +{ +#if !defined(DEBUG_KMEM) + return (spl_kmem_free_impl(buf, size)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_free_debug(buf, size)); +#else + return (spl_kmem_free_track(buf, size)); +#endif +} +EXPORT_SYMBOL(spl_kmem_free); + +#if defined(DEBUG_KMEM) && defined(DEBUG_KMEM_TRACKING) +static char * +spl_sprintf_addr(kmem_debug_t *kd, char *str, int len, int min) +{ + int size = ((len - 1) < kd->kd_size) ? (len - 1) : kd->kd_size; + int i, flag = 1; + + ASSERT(str != NULL && len >= 17); + memset(str, 0, len); + + /* + * Check for a fully printable string, and while we are at + * it place the printable characters in the passed buffer. + */ + for (i = 0; i < size; i++) { + str[i] = ((char *)(kd->kd_addr))[i]; + if (isprint(str[i])) { + continue; + } else { + /* + * Minimum number of printable characters found + * to make it worthwhile to print this as ascii. + */ + if (i > min) + break; + + flag = 0; + break; + } + } + + if (!flag) { + sprintf(str, "%02x%02x%02x%02x%02x%02x%02x%02x", + *((uint8_t *)kd->kd_addr), + *((uint8_t *)kd->kd_addr + 2), + *((uint8_t *)kd->kd_addr + 4), + *((uint8_t *)kd->kd_addr + 6), + *((uint8_t *)kd->kd_addr + 8), + *((uint8_t *)kd->kd_addr + 10), + *((uint8_t *)kd->kd_addr + 12), + *((uint8_t *)kd->kd_addr + 14)); + } + + return (str); +} + +static int +spl_kmem_init_tracking(struct list_head *list, spinlock_t *lock, int size) +{ + int i; + + spin_lock_init(lock); + INIT_LIST_HEAD(list); + + for (i = 0; i < size; i++) + INIT_HLIST_HEAD(&kmem_table[i]); + + return (0); +} + +static void +spl_kmem_fini_tracking(struct list_head *list, spinlock_t *lock) +{ + unsigned long flags; + kmem_debug_t *kd; + char str[17]; + + spin_lock_irqsave(lock, flags); + if (!list_empty(list)) + printk(KERN_WARNING "%-16s %-5s %-16s %s:%s\n", "address", + "size", "data", "func", "line"); + + list_for_each_entry(kd, list, kd_list) + printk(KERN_WARNING "%p %-5d %-16s %s:%d\n", kd->kd_addr, + (int)kd->kd_size, spl_sprintf_addr(kd, str, 17, 8), + kd->kd_func, kd->kd_line); + + spin_unlock_irqrestore(lock, flags); +} +#endif /* DEBUG_KMEM && DEBUG_KMEM_TRACKING */ + +int +spl_kmem_init(void) +{ +#ifdef DEBUG_KMEM + kmem_alloc_used_set(0); + +#ifdef DEBUG_KMEM_TRACKING + spl_kmem_init_tracking(&kmem_list, &kmem_lock, KMEM_TABLE_SIZE); +#endif /* DEBUG_KMEM_TRACKING */ +#endif /* DEBUG_KMEM */ + + return (0); +} + +void +spl_kmem_fini(void) +{ +#ifdef DEBUG_KMEM + /* + * Display all unreclaimed memory addresses, including the + * allocation size and the first few bytes of what's located + * at that address to aid in debugging. Performance is not + * a serious concern here since it is module unload time. + */ + if (kmem_alloc_used_read() != 0) + printk(KERN_WARNING "kmem leaked %ld/%llu bytes\n", + (unsigned long)kmem_alloc_used_read(), kmem_alloc_max); + +#ifdef DEBUG_KMEM_TRACKING + spl_kmem_fini_tracking(&kmem_list, &kmem_lock); +#endif /* DEBUG_KMEM_TRACKING */ +#endif /* DEBUG_KMEM */ +} --- linux-4.4.0.orig/spl/module/spl/spl-kobj.c +++ linux-4.4.0/spl/module/spl/spl-kobj.c @@ -0,0 +1,81 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Kobj Implementation. +\*****************************************************************************/ + +#include + +struct _buf * +kobj_open_file(const char *name) +{ + struct _buf *file; + vnode_t *vp; + int rc; + + file = kmalloc(sizeof(_buf_t), kmem_flags_convert(KM_SLEEP)); + if (file == NULL) + return ((_buf_t *)-1UL); + + if ((rc = vn_open(name, UIO_SYSSPACE, FREAD, 0644, &vp, 0, 0))) { + kfree(file); + return ((_buf_t *)-1UL); + } + + file->vp = vp; + + return (file); +} /* kobj_open_file() */ +EXPORT_SYMBOL(kobj_open_file); + +void +kobj_close_file(struct _buf *file) +{ + VOP_CLOSE(file->vp, 0, 0, 0, 0, 0); + kfree(file); +} /* kobj_close_file() */ +EXPORT_SYMBOL(kobj_close_file); + +int +kobj_read_file(struct _buf *file, char *buf, ssize_t size, offset_t off) +{ + return (vn_rdwr(UIO_READ, file->vp, buf, size, off, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL)); +} /* kobj_read_file() */ +EXPORT_SYMBOL(kobj_read_file); + +int +kobj_get_filesize(struct _buf *file, uint64_t *size) +{ + vattr_t vap; + int rc; + + rc = VOP_GETATTR(file->vp, &vap, 0, 0, NULL); + if (rc) + return (rc); + + *size = vap.va_size; + + return (rc); +} /* kobj_get_filesize() */ +EXPORT_SYMBOL(kobj_get_filesize); --- linux-4.4.0.orig/spl/module/spl/spl-kstat.c +++ linux-4.4.0/spl/module/spl/spl-kstat.c @@ -0,0 +1,696 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Kstat Implementation. +\*****************************************************************************/ + +#include +#include +#include + +#ifndef HAVE_PDE_DATA +#define PDE_DATA(x) (PDE(x)->data) +#endif + +static kmutex_t kstat_module_lock; +static struct list_head kstat_module_list; +static kid_t kstat_id; + +static int +kstat_resize_raw(kstat_t *ksp) +{ + if (ksp->ks_raw_bufsize == KSTAT_RAW_MAX) + return ENOMEM; + + vmem_free(ksp->ks_raw_buf, ksp->ks_raw_bufsize); + ksp->ks_raw_bufsize = MIN(ksp->ks_raw_bufsize * 2, KSTAT_RAW_MAX); + ksp->ks_raw_buf = vmem_alloc(ksp->ks_raw_bufsize, KM_SLEEP); + + return 0; +} + +void +kstat_waitq_enter(kstat_io_t *kiop) +{ + hrtime_t new, delta; + ulong_t wcnt; + + new = gethrtime(); + delta = new - kiop->wlastupdate; + kiop->wlastupdate = new; + wcnt = kiop->wcnt++; + if (wcnt != 0) { + kiop->wlentime += delta * wcnt; + kiop->wtime += delta; + } +} +EXPORT_SYMBOL(kstat_waitq_enter); + +void +kstat_waitq_exit(kstat_io_t *kiop) +{ + hrtime_t new, delta; + ulong_t wcnt; + + new = gethrtime(); + delta = new - kiop->wlastupdate; + kiop->wlastupdate = new; + wcnt = kiop->wcnt--; + ASSERT((int)wcnt > 0); + kiop->wlentime += delta * wcnt; + kiop->wtime += delta; +} +EXPORT_SYMBOL(kstat_waitq_exit); + +void +kstat_runq_enter(kstat_io_t *kiop) +{ + hrtime_t new, delta; + ulong_t rcnt; + + new = gethrtime(); + delta = new - kiop->rlastupdate; + kiop->rlastupdate = new; + rcnt = kiop->rcnt++; + if (rcnt != 0) { + kiop->rlentime += delta * rcnt; + kiop->rtime += delta; + } +} +EXPORT_SYMBOL(kstat_runq_enter); + +void +kstat_runq_exit(kstat_io_t *kiop) +{ + hrtime_t new, delta; + ulong_t rcnt; + + new = gethrtime(); + delta = new - kiop->rlastupdate; + kiop->rlastupdate = new; + rcnt = kiop->rcnt--; + ASSERT((int)rcnt > 0); + kiop->rlentime += delta * rcnt; + kiop->rtime += delta; +} +EXPORT_SYMBOL(kstat_runq_exit); + +static int +kstat_seq_show_headers(struct seq_file *f) +{ + kstat_t *ksp = (kstat_t *)f->private; + int rc = 0; + + ASSERT(ksp->ks_magic == KS_MAGIC); + + seq_printf(f, "%d %d 0x%02x %d %d %lld %lld\n", + ksp->ks_kid, ksp->ks_type, ksp->ks_flags, + ksp->ks_ndata, (int)ksp->ks_data_size, + ksp->ks_crtime, ksp->ks_snaptime); + + switch (ksp->ks_type) { + case KSTAT_TYPE_RAW: +restart: + if (ksp->ks_raw_ops.headers) { + rc = ksp->ks_raw_ops.headers( + ksp->ks_raw_buf, ksp->ks_raw_bufsize); + if (rc == ENOMEM && !kstat_resize_raw(ksp)) + goto restart; + if (!rc) + seq_puts(f, ksp->ks_raw_buf); + } else { + seq_printf(f, "raw data\n"); + } + break; + case KSTAT_TYPE_NAMED: + seq_printf(f, "%-31s %-4s %s\n", + "name", "type", "data"); + break; + case KSTAT_TYPE_INTR: + seq_printf(f, "%-8s %-8s %-8s %-8s %-8s\n", + "hard", "soft", "watchdog", + "spurious", "multsvc"); + break; + case KSTAT_TYPE_IO: + seq_printf(f, + "%-8s %-8s %-8s %-8s %-8s %-8s " + "%-8s %-8s %-8s %-8s %-8s %-8s\n", + "nread", "nwritten", "reads", "writes", + "wtime", "wlentime", "wupdate", + "rtime", "rlentime", "rupdate", + "wcnt", "rcnt"); + break; + case KSTAT_TYPE_TIMER: + seq_printf(f, + "%-31s %-8s " + "%-8s %-8s %-8s %-8s %-8s\n", + "name", "events", "elapsed", + "min", "max", "start", "stop"); + break; + default: + PANIC("Undefined kstat type %d\n", ksp->ks_type); + } + + return -rc; +} + +static int +kstat_seq_show_raw(struct seq_file *f, unsigned char *p, int l) +{ + int i, j; + + for (i = 0; ; i++) { + seq_printf(f, "%03x:", i); + + for (j = 0; j < 16; j++) { + if (i * 16 + j >= l) { + seq_printf(f, "\n"); + goto out; + } + + seq_printf(f, " %02x", (unsigned char)p[i * 16 + j]); + } + seq_printf(f, "\n"); + } +out: + return 0; +} + +static int +kstat_seq_show_named(struct seq_file *f, kstat_named_t *knp) +{ + seq_printf(f, "%-31s %-4d ", knp->name, knp->data_type); + + switch (knp->data_type) { + case KSTAT_DATA_CHAR: + knp->value.c[15] = '\0'; /* NULL terminate */ + seq_printf(f, "%-16s", knp->value.c); + break; + /* XXX - We need to be more careful able what tokens are + * used for each arch, for now this is correct for x86_64. + */ + case KSTAT_DATA_INT32: + seq_printf(f, "%d", knp->value.i32); + break; + case KSTAT_DATA_UINT32: + seq_printf(f, "%u", knp->value.ui32); + break; + case KSTAT_DATA_INT64: + seq_printf(f, "%lld", (signed long long)knp->value.i64); + break; + case KSTAT_DATA_UINT64: + seq_printf(f, "%llu", (unsigned long long)knp->value.ui64); + break; + case KSTAT_DATA_LONG: + seq_printf(f, "%ld", knp->value.l); + break; + case KSTAT_DATA_ULONG: + seq_printf(f, "%lu", knp->value.ul); + break; + case KSTAT_DATA_STRING: + KSTAT_NAMED_STR_PTR(knp) + [KSTAT_NAMED_STR_BUFLEN(knp)-1] = '\0'; + seq_printf(f, "%s", KSTAT_NAMED_STR_PTR(knp)); + break; + default: + PANIC("Undefined kstat data type %d\n", knp->data_type); + } + + seq_printf(f, "\n"); + + return 0; +} + +static int +kstat_seq_show_intr(struct seq_file *f, kstat_intr_t *kip) +{ + seq_printf(f, "%-8u %-8u %-8u %-8u %-8u\n", + kip->intrs[KSTAT_INTR_HARD], + kip->intrs[KSTAT_INTR_SOFT], + kip->intrs[KSTAT_INTR_WATCHDOG], + kip->intrs[KSTAT_INTR_SPURIOUS], + kip->intrs[KSTAT_INTR_MULTSVC]); + + return 0; +} + +static int +kstat_seq_show_io(struct seq_file *f, kstat_io_t *kip) +{ + seq_printf(f, + "%-8llu %-8llu %-8u %-8u %-8lld %-8lld " + "%-8lld %-8lld %-8lld %-8lld %-8u %-8u\n", + kip->nread, kip->nwritten, + kip->reads, kip->writes, + kip->wtime, kip->wlentime, kip->wlastupdate, + kip->rtime, kip->wlentime, kip->rlastupdate, + kip->wcnt, kip->rcnt); + + return 0; +} + +static int +kstat_seq_show_timer(struct seq_file *f, kstat_timer_t *ktp) +{ + seq_printf(f, + "%-31s %-8llu %-8lld %-8lld %-8lld %-8lld %-8lld\n", + ktp->name, ktp->num_events, ktp->elapsed_time, + ktp->min_time, ktp->max_time, + ktp->start_time, ktp->stop_time); + + return 0; +} + +static int +kstat_seq_show(struct seq_file *f, void *p) +{ + kstat_t *ksp = (kstat_t *)f->private; + int rc = 0; + + ASSERT(ksp->ks_magic == KS_MAGIC); + + switch (ksp->ks_type) { + case KSTAT_TYPE_RAW: +restart: + if (ksp->ks_raw_ops.data) { + rc = ksp->ks_raw_ops.data( + ksp->ks_raw_buf, ksp->ks_raw_bufsize, p); + if (rc == ENOMEM && !kstat_resize_raw(ksp)) + goto restart; + if (!rc) + seq_puts(f, ksp->ks_raw_buf); + } else { + ASSERT(ksp->ks_ndata == 1); + rc = kstat_seq_show_raw(f, ksp->ks_data, + ksp->ks_data_size); + } + break; + case KSTAT_TYPE_NAMED: + rc = kstat_seq_show_named(f, (kstat_named_t *)p); + break; + case KSTAT_TYPE_INTR: + rc = kstat_seq_show_intr(f, (kstat_intr_t *)p); + break; + case KSTAT_TYPE_IO: + rc = kstat_seq_show_io(f, (kstat_io_t *)p); + break; + case KSTAT_TYPE_TIMER: + rc = kstat_seq_show_timer(f, (kstat_timer_t *)p); + break; + default: + PANIC("Undefined kstat type %d\n", ksp->ks_type); + } + + return -rc; +} + +int +kstat_default_update(kstat_t *ksp, int rw) +{ + ASSERT(ksp != NULL); + + if (rw == KSTAT_WRITE) + return (EACCES); + + return 0; +} + +static void * +kstat_seq_data_addr(kstat_t *ksp, loff_t n) +{ + void *rc = NULL; + + switch (ksp->ks_type) { + case KSTAT_TYPE_RAW: + if (ksp->ks_raw_ops.addr) + rc = ksp->ks_raw_ops.addr(ksp, n); + else + rc = ksp->ks_data; + break; + case KSTAT_TYPE_NAMED: + rc = ksp->ks_data + n * sizeof(kstat_named_t); + break; + case KSTAT_TYPE_INTR: + rc = ksp->ks_data + n * sizeof(kstat_intr_t); + break; + case KSTAT_TYPE_IO: + rc = ksp->ks_data + n * sizeof(kstat_io_t); + break; + case KSTAT_TYPE_TIMER: + rc = ksp->ks_data + n * sizeof(kstat_timer_t); + break; + default: + PANIC("Undefined kstat type %d\n", ksp->ks_type); + } + + return (rc); +} + +static void * +kstat_seq_start(struct seq_file *f, loff_t *pos) +{ + loff_t n = *pos; + kstat_t *ksp = (kstat_t *)f->private; + ASSERT(ksp->ks_magic == KS_MAGIC); + + mutex_enter(ksp->ks_lock); + + if (ksp->ks_type == KSTAT_TYPE_RAW) { + ksp->ks_raw_bufsize = PAGE_SIZE; + ksp->ks_raw_buf = vmem_alloc(ksp->ks_raw_bufsize, KM_SLEEP); + } + + /* Dynamically update kstat, on error existing kstats are used */ + (void) ksp->ks_update(ksp, KSTAT_READ); + + ksp->ks_snaptime = gethrtime(); + + if (!n && kstat_seq_show_headers(f)) + return (NULL); + + if (n >= ksp->ks_ndata) + return (NULL); + + return (kstat_seq_data_addr(ksp, n)); +} + +static void * +kstat_seq_next(struct seq_file *f, void *p, loff_t *pos) +{ + kstat_t *ksp = (kstat_t *)f->private; + ASSERT(ksp->ks_magic == KS_MAGIC); + + ++*pos; + if (*pos >= ksp->ks_ndata) + return (NULL); + + return (kstat_seq_data_addr(ksp, *pos)); +} + +static void +kstat_seq_stop(struct seq_file *f, void *v) +{ + kstat_t *ksp = (kstat_t *)f->private; + ASSERT(ksp->ks_magic == KS_MAGIC); + + if (ksp->ks_type == KSTAT_TYPE_RAW) + vmem_free(ksp->ks_raw_buf, ksp->ks_raw_bufsize); + + mutex_exit(ksp->ks_lock); +} + +static struct seq_operations kstat_seq_ops = { + .show = kstat_seq_show, + .start = kstat_seq_start, + .next = kstat_seq_next, + .stop = kstat_seq_stop, +}; + +static kstat_module_t * +kstat_find_module(char *name) +{ + kstat_module_t *module; + + list_for_each_entry(module, &kstat_module_list, ksm_module_list) + if (strncmp(name, module->ksm_name, KSTAT_STRLEN) == 0) + return (module); + + return (NULL); +} + +static kstat_module_t * +kstat_create_module(char *name) +{ + kstat_module_t *module; + struct proc_dir_entry *pde; + + pde = proc_mkdir(name, proc_spl_kstat); + if (pde == NULL) + return (NULL); + + module = kmem_alloc(sizeof (kstat_module_t), KM_SLEEP); + module->ksm_proc = pde; + strlcpy(module->ksm_name, name, KSTAT_STRLEN+1); + INIT_LIST_HEAD(&module->ksm_kstat_list); + list_add_tail(&module->ksm_module_list, &kstat_module_list); + + return (module); + +} + +static void +kstat_delete_module(kstat_module_t *module) +{ + ASSERT(list_empty(&module->ksm_kstat_list)); + remove_proc_entry(module->ksm_name, proc_spl_kstat); + list_del(&module->ksm_module_list); + kmem_free(module, sizeof(kstat_module_t)); +} + +static int +proc_kstat_open(struct inode *inode, struct file *filp) +{ + struct seq_file *f; + int rc; + + rc = seq_open(filp, &kstat_seq_ops); + if (rc) + return rc; + + f = filp->private_data; + f->private = PDE_DATA(inode); + + return rc; +} + +static ssize_t +proc_kstat_write(struct file *filp, const char __user *buf, + size_t len, loff_t *ppos) +{ + struct seq_file *f = filp->private_data; + kstat_t *ksp = f->private; + int rc; + + ASSERT(ksp->ks_magic == KS_MAGIC); + + mutex_enter(ksp->ks_lock); + rc = ksp->ks_update(ksp, KSTAT_WRITE); + mutex_exit(ksp->ks_lock); + + if (rc) + return (-rc); + + *ppos += len; + return (len); +} + +static struct file_operations proc_kstat_operations = { + .open = proc_kstat_open, + .write = proc_kstat_write, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +void +__kstat_set_raw_ops(kstat_t *ksp, + int (*headers)(char *buf, size_t size), + int (*data)(char *buf, size_t size, void *data), + void *(*addr)(kstat_t *ksp, loff_t index)) +{ + ksp->ks_raw_ops.headers = headers; + ksp->ks_raw_ops.data = data; + ksp->ks_raw_ops.addr = addr; +} +EXPORT_SYMBOL(__kstat_set_raw_ops); + +kstat_t * +__kstat_create(const char *ks_module, int ks_instance, const char *ks_name, + const char *ks_class, uchar_t ks_type, uint_t ks_ndata, + uchar_t ks_flags) +{ + kstat_t *ksp; + + ASSERT(ks_module); + ASSERT(ks_instance == 0); + ASSERT(ks_name); + ASSERT(!(ks_flags & KSTAT_FLAG_UNSUPPORTED)); + + if ((ks_type == KSTAT_TYPE_INTR) || (ks_type == KSTAT_TYPE_IO)) + ASSERT(ks_ndata == 1); + + ksp = kmem_zalloc(sizeof(*ksp), KM_SLEEP); + if (ksp == NULL) + return ksp; + + mutex_enter(&kstat_module_lock); + ksp->ks_kid = kstat_id; + kstat_id++; + mutex_exit(&kstat_module_lock); + + ksp->ks_magic = KS_MAGIC; + mutex_init(&ksp->ks_private_lock, NULL, MUTEX_DEFAULT, NULL); + ksp->ks_lock = &ksp->ks_private_lock; + INIT_LIST_HEAD(&ksp->ks_list); + + ksp->ks_crtime = gethrtime(); + ksp->ks_snaptime = ksp->ks_crtime; + strncpy(ksp->ks_module, ks_module, KSTAT_STRLEN); + ksp->ks_instance = ks_instance; + strncpy(ksp->ks_name, ks_name, KSTAT_STRLEN); + strncpy(ksp->ks_class, ks_class, KSTAT_STRLEN); + ksp->ks_type = ks_type; + ksp->ks_flags = ks_flags; + ksp->ks_update = kstat_default_update; + ksp->ks_private = NULL; + ksp->ks_raw_ops.headers = NULL; + ksp->ks_raw_ops.data = NULL; + ksp->ks_raw_ops.addr = NULL; + ksp->ks_raw_buf = NULL; + ksp->ks_raw_bufsize = 0; + + switch (ksp->ks_type) { + case KSTAT_TYPE_RAW: + ksp->ks_ndata = 1; + ksp->ks_data_size = ks_ndata; + break; + case KSTAT_TYPE_NAMED: + ksp->ks_ndata = ks_ndata; + ksp->ks_data_size = ks_ndata * sizeof(kstat_named_t); + break; + case KSTAT_TYPE_INTR: + ksp->ks_ndata = ks_ndata; + ksp->ks_data_size = ks_ndata * sizeof(kstat_intr_t); + break; + case KSTAT_TYPE_IO: + ksp->ks_ndata = ks_ndata; + ksp->ks_data_size = ks_ndata * sizeof(kstat_io_t); + break; + case KSTAT_TYPE_TIMER: + ksp->ks_ndata = ks_ndata; + ksp->ks_data_size = ks_ndata * sizeof(kstat_timer_t); + break; + default: + PANIC("Undefined kstat type %d\n", ksp->ks_type); + } + + if (ksp->ks_flags & KSTAT_FLAG_VIRTUAL) { + ksp->ks_data = NULL; + } else { + ksp->ks_data = kmem_zalloc(ksp->ks_data_size, KM_SLEEP); + if (ksp->ks_data == NULL) { + kmem_free(ksp, sizeof(*ksp)); + ksp = NULL; + } + } + + return ksp; +} +EXPORT_SYMBOL(__kstat_create); + +void +__kstat_install(kstat_t *ksp) +{ + kstat_module_t *module; + kstat_t *tmp; + + ASSERT(ksp); + + mutex_enter(&kstat_module_lock); + + module = kstat_find_module(ksp->ks_module); + if (module == NULL) { + module = kstat_create_module(ksp->ks_module); + if (module == NULL) + goto out; + } + + /* + * Only one entry by this name per-module, on failure the module + * shouldn't be deleted because we know it has at least one entry. + */ + list_for_each_entry(tmp, &module->ksm_kstat_list, ks_list) + if (strncmp(tmp->ks_name, ksp->ks_name, KSTAT_STRLEN) == 0) + goto out; + + list_add_tail(&ksp->ks_list, &module->ksm_kstat_list); + + mutex_enter(ksp->ks_lock); + ksp->ks_owner = module; + ksp->ks_proc = proc_create_data(ksp->ks_name, 0644, + module->ksm_proc, &proc_kstat_operations, (void *)ksp); + if (ksp->ks_proc == NULL) { + list_del_init(&ksp->ks_list); + if (list_empty(&module->ksm_kstat_list)) + kstat_delete_module(module); + } + mutex_exit(ksp->ks_lock); +out: + mutex_exit(&kstat_module_lock); +} +EXPORT_SYMBOL(__kstat_install); + +void +__kstat_delete(kstat_t *ksp) +{ + kstat_module_t *module = ksp->ks_owner; + + mutex_enter(&kstat_module_lock); + list_del_init(&ksp->ks_list); + mutex_exit(&kstat_module_lock); + + if (ksp->ks_proc) { + remove_proc_entry(ksp->ks_name, module->ksm_proc); + + /* Remove top level module directory if it's empty */ + if (list_empty(&module->ksm_kstat_list)) + kstat_delete_module(module); + } + + if (!(ksp->ks_flags & KSTAT_FLAG_VIRTUAL)) + kmem_free(ksp->ks_data, ksp->ks_data_size); + + ksp->ks_lock = NULL; + mutex_destroy(&ksp->ks_private_lock); + kmem_free(ksp, sizeof(*ksp)); + + return; +} +EXPORT_SYMBOL(__kstat_delete); + +int +spl_kstat_init(void) +{ + mutex_init(&kstat_module_lock, NULL, MUTEX_DEFAULT, NULL); + INIT_LIST_HEAD(&kstat_module_list); + kstat_id = 0; + return (0); +} + +void +spl_kstat_fini(void) +{ + ASSERT(list_empty(&kstat_module_list)); + mutex_destroy(&kstat_module_lock); +} + --- linux-4.4.0.orig/spl/module/spl/spl-mutex.c +++ linux-4.4.0/spl/module/spl/spl-mutex.c @@ -0,0 +1,36 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Mutex Implementation. +\*****************************************************************************/ + +#include + +#ifdef DEBUG_SUBSYSTEM +#undef DEBUG_SUBSYSTEM +#endif + +#define DEBUG_SUBSYSTEM S_MUTEX + +int spl_mutex_init(void) { return 0; } +void spl_mutex_fini(void) { } --- linux-4.4.0.orig/spl/module/spl/spl-proc.c +++ linux-4.4.0/spl/module/spl/spl-proc.c @@ -0,0 +1,519 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Proc Implementation. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(CONSTIFY_PLUGIN) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) +typedef struct ctl_table __no_const spl_ctl_table; +#else +typedef struct ctl_table spl_ctl_table; +#endif + +static unsigned long table_min = 0; +static unsigned long table_max = ~0; + +static struct ctl_table_header *spl_header = NULL; +static struct proc_dir_entry *proc_spl = NULL; +static struct proc_dir_entry *proc_spl_kmem = NULL; +static struct proc_dir_entry *proc_spl_kmem_slab = NULL; +struct proc_dir_entry *proc_spl_kstat = NULL; + +static int +proc_copyin_string(char *kbuffer, int kbuffer_size, + const char *ubuffer, int ubuffer_size) +{ + int size; + + if (ubuffer_size > kbuffer_size) + return -EOVERFLOW; + + if (copy_from_user((void *)kbuffer, (void *)ubuffer, ubuffer_size)) + return -EFAULT; + + /* strip trailing whitespace */ + size = strnlen(kbuffer, ubuffer_size); + while (size-- >= 0) + if (!isspace(kbuffer[size])) + break; + + /* empty string */ + if (size < 0) + return -EINVAL; + + /* no space to terminate */ + if (size == kbuffer_size) + return -EOVERFLOW; + + kbuffer[size + 1] = 0; + return 0; +} + +static int +proc_copyout_string(char *ubuffer, int ubuffer_size, + const char *kbuffer, char *append) +{ + /* NB if 'append' != NULL, it's a single character to append to the + * copied out string - usually "\n", for /proc entries and + * (i.e. a terminating zero byte) for sysctl entries + */ + int size = MIN(strlen(kbuffer), ubuffer_size); + + if (copy_to_user(ubuffer, kbuffer, size)) + return -EFAULT; + + if (append != NULL && size < ubuffer_size) { + if (copy_to_user(ubuffer + size, append, 1)) + return -EFAULT; + + size++; + } + + return size; +} + +#ifdef DEBUG_KMEM +static int +proc_domemused(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + int rc = 0; + unsigned long min = 0, max = ~0, val; + spl_ctl_table dummy = *table; + + dummy.data = &val; + dummy.proc_handler = &proc_dointvec; + dummy.extra1 = &min; + dummy.extra2 = &max; + + if (write) { + *ppos += *lenp; + } else { +# ifdef HAVE_ATOMIC64_T + val = atomic64_read((atomic64_t *)table->data); +# else + val = atomic_read((atomic_t *)table->data); +# endif /* HAVE_ATOMIC64_T */ + rc = proc_doulongvec_minmax(&dummy, write, buffer, lenp, ppos); + } + + return (rc); +} +#endif /* DEBUG_KMEM */ + +static int +proc_doslab(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + int rc = 0; + unsigned long min = 0, max = ~0, val = 0, mask; + spl_ctl_table dummy = *table; + spl_kmem_cache_t *skc; + + dummy.data = &val; + dummy.proc_handler = &proc_dointvec; + dummy.extra1 = &min; + dummy.extra2 = &max; + + if (write) { + *ppos += *lenp; + } else { + down_read(&spl_kmem_cache_sem); + mask = (unsigned long)table->data; + + list_for_each_entry(skc, &spl_kmem_cache_list, skc_list) { + + /* Only use slabs of the correct kmem/vmem type */ + if (!(skc->skc_flags & mask)) + continue; + + /* Sum the specified field for selected slabs */ + switch (mask & (KMC_TOTAL | KMC_ALLOC | KMC_MAX)) { + case KMC_TOTAL: + val += skc->skc_slab_size * skc->skc_slab_total; + break; + case KMC_ALLOC: + val += skc->skc_obj_size * skc->skc_obj_alloc; + break; + case KMC_MAX: + val += skc->skc_obj_size * skc->skc_obj_max; + break; + } + } + + up_read(&spl_kmem_cache_sem); + rc = proc_doulongvec_minmax(&dummy, write, buffer, lenp, ppos); + } + + return (rc); +} + +static int +proc_dohostid(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + int len, rc = 0; + char *end, str[32]; + + if (write) { + /* We can't use proc_doulongvec_minmax() in the write + * case here because hostid while a hex value has no + * leading 0x which confuses the helper function. */ + rc = proc_copyin_string(str, sizeof(str), buffer, *lenp); + if (rc < 0) + return (rc); + + spl_hostid = simple_strtoul(str, &end, 16); + if (str == end) + return (-EINVAL); + + } else { + len = snprintf(str, sizeof(str), "%lx", spl_hostid); + if (*ppos >= len) + rc = 0; + else + rc = proc_copyout_string(buffer,*lenp,str+*ppos,"\n"); + + if (rc >= 0) { + *lenp = rc; + *ppos += rc; + } + } + + return (rc); +} + +static void +slab_seq_show_headers(struct seq_file *f) +{ + seq_printf(f, + "--------------------- cache ----------" + "--------------------------------------------- " + "----- slab ------ " + "---- object ----- " + "--- emergency ---\n"); + seq_printf(f, + "name " + " flags size alloc slabsize objsize " + "total alloc max " + "total alloc max " + "dlock alloc max\n"); +} + +static int +slab_seq_show(struct seq_file *f, void *p) +{ + spl_kmem_cache_t *skc = p; + + ASSERT(skc->skc_magic == SKC_MAGIC); + + /* + * Backed by Linux slab see /proc/slabinfo. + */ + if (skc->skc_flags & KMC_SLAB) + return (0); + + spin_lock(&skc->skc_lock); + seq_printf(f, "%-36s ", skc->skc_name); + seq_printf(f, "0x%05lx %9lu %9lu %8u %8u " + "%5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu\n", + (long unsigned)skc->skc_flags, + (long unsigned)(skc->skc_slab_size * skc->skc_slab_total), + (long unsigned)(skc->skc_obj_size * skc->skc_obj_alloc), + (unsigned)skc->skc_slab_size, + (unsigned)skc->skc_obj_size, + (long unsigned)skc->skc_slab_total, + (long unsigned)skc->skc_slab_alloc, + (long unsigned)skc->skc_slab_max, + (long unsigned)skc->skc_obj_total, + (long unsigned)skc->skc_obj_alloc, + (long unsigned)skc->skc_obj_max, + (long unsigned)skc->skc_obj_deadlock, + (long unsigned)skc->skc_obj_emergency, + (long unsigned)skc->skc_obj_emergency_max); + + spin_unlock(&skc->skc_lock); + + return 0; +} + +static void * +slab_seq_start(struct seq_file *f, loff_t *pos) +{ + struct list_head *p; + loff_t n = *pos; + + down_read(&spl_kmem_cache_sem); + if (!n) + slab_seq_show_headers(f); + + p = spl_kmem_cache_list.next; + while (n--) { + p = p->next; + if (p == &spl_kmem_cache_list) + return (NULL); + } + + return (list_entry(p, spl_kmem_cache_t, skc_list)); +} + +static void * +slab_seq_next(struct seq_file *f, void *p, loff_t *pos) +{ + spl_kmem_cache_t *skc = p; + + ++*pos; + return ((skc->skc_list.next == &spl_kmem_cache_list) ? + NULL : list_entry(skc->skc_list.next,spl_kmem_cache_t,skc_list)); +} + +static void +slab_seq_stop(struct seq_file *f, void *v) +{ + up_read(&spl_kmem_cache_sem); +} + +static struct seq_operations slab_seq_ops = { + .show = slab_seq_show, + .start = slab_seq_start, + .next = slab_seq_next, + .stop = slab_seq_stop, +}; + +static int +proc_slab_open(struct inode *inode, struct file *filp) +{ + return seq_open(filp, &slab_seq_ops); +} + +static struct file_operations proc_slab_operations = { + .open = proc_slab_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static struct ctl_table spl_kmem_table[] = { +#ifdef DEBUG_KMEM + { + .procname = "kmem_used", + .data = &kmem_alloc_used, +# ifdef HAVE_ATOMIC64_T + .maxlen = sizeof(atomic64_t), +# else + .maxlen = sizeof(atomic_t), +# endif /* HAVE_ATOMIC64_T */ + .mode = 0444, + .proc_handler = &proc_domemused, + }, + { + .procname = "kmem_max", + .data = &kmem_alloc_max, + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doulongvec_minmax, + }, +#endif /* DEBUG_KMEM */ + { + .procname = "slab_kmem_total", + .data = (void *)(KMC_KMEM | KMC_TOTAL), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + { + .procname = "slab_kmem_alloc", + .data = (void *)(KMC_KMEM | KMC_ALLOC), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + { + .procname = "slab_kmem_max", + .data = (void *)(KMC_KMEM | KMC_MAX), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + { + .procname = "slab_vmem_total", + .data = (void *)(KMC_VMEM | KMC_TOTAL), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + { + .procname = "slab_vmem_alloc", + .data = (void *)(KMC_VMEM | KMC_ALLOC), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + { + .procname = "slab_vmem_max", + .data = (void *)(KMC_VMEM | KMC_MAX), + .maxlen = sizeof(unsigned long), + .extra1 = &table_min, + .extra2 = &table_max, + .mode = 0444, + .proc_handler = &proc_doslab, + }, + {0}, +}; + +static struct ctl_table spl_kstat_table[] = { + {0}, +}; + +static struct ctl_table spl_table[] = { + /* NB No .strategy entries have been provided since + * sysctl(8) prefers to go via /proc for portability. + */ + { + .procname = "version", + .data = spl_version, + .maxlen = sizeof(spl_version), + .mode = 0444, + .proc_handler = &proc_dostring, + }, + { + .procname = "hostid", + .data = &spl_hostid, + .maxlen = sizeof(unsigned long), + .mode = 0644, + .proc_handler = &proc_dohostid, + }, + { + .procname = "kmem", + .mode = 0555, + .child = spl_kmem_table, + }, + { + .procname = "kstat", + .mode = 0555, + .child = spl_kstat_table, + }, + { 0 }, +}; + +static struct ctl_table spl_dir[] = { + { + .procname = "spl", + .mode = 0555, + .child = spl_table, + }, + { 0 } +}; + +static struct ctl_table spl_root[] = { + { +#ifdef HAVE_CTL_NAME + .ctl_name = CTL_KERN, +#endif + .procname = "kernel", + .mode = 0555, + .child = spl_dir, + }, + { 0 } +}; + +int +spl_proc_init(void) +{ + int rc = 0; + + spl_header = register_sysctl_table(spl_root); + if (spl_header == NULL) + return (-EUNATCH); + + proc_spl = proc_mkdir("spl", NULL); + if (proc_spl == NULL) { + rc = -EUNATCH; + goto out; + } + + proc_spl_kmem = proc_mkdir("kmem", proc_spl); + if (proc_spl_kmem == NULL) { + rc = -EUNATCH; + goto out; + } + + proc_spl_kmem_slab = proc_create_data("slab", 0444, + proc_spl_kmem, &proc_slab_operations, NULL); + if (proc_spl_kmem_slab == NULL) { + rc = -EUNATCH; + goto out; + } + + proc_spl_kstat = proc_mkdir("kstat", proc_spl); + if (proc_spl_kstat == NULL) { + rc = -EUNATCH; + goto out; + } +out: + if (rc) { + remove_proc_entry("kstat", proc_spl); + remove_proc_entry("slab", proc_spl_kmem); + remove_proc_entry("kmem", proc_spl); + remove_proc_entry("spl", NULL); + unregister_sysctl_table(spl_header); + } + + return (rc); +} + +void +spl_proc_fini(void) +{ + remove_proc_entry("kstat", proc_spl); + remove_proc_entry("slab", proc_spl_kmem); + remove_proc_entry("kmem", proc_spl); + remove_proc_entry("spl", NULL); + + ASSERT(spl_header != NULL); + unregister_sysctl_table(spl_header); +} --- linux-4.4.0.orig/spl/module/spl/spl-rwlock.c +++ linux-4.4.0/spl/module/spl/spl-rwlock.c @@ -0,0 +1,96 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Reader/Writer Lock Implementation. +\*****************************************************************************/ + +#include + +#ifdef DEBUG_SUBSYSTEM +#undef DEBUG_SUBSYSTEM +#endif + +#define DEBUG_SUBSYSTEM S_RWLOCK + +#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK + +/* + * From lib/rwsem-spinlock.c but modified such that the caller is + * responsible for acquiring and dropping the sem->wait_lock. + */ +struct rwsem_waiter { + struct list_head list; + struct task_struct *task; + unsigned int flags; +#define RWSEM_WAITING_FOR_READ 0x00000001 +#define RWSEM_WAITING_FOR_WRITE 0x00000002 +}; + +/* wake a single writer */ +static struct rw_semaphore * +__rwsem_wake_one_writer_locked(struct rw_semaphore *sem) +{ + struct rwsem_waiter *waiter; + struct task_struct *tsk; + + sem->activity = -1; + + waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); + list_del(&waiter->list); + + tsk = waiter->task; + smp_mb(); + waiter->task = NULL; + wake_up_process(tsk); + put_task_struct(tsk); + return sem; +} + +/* release a read lock on the semaphore */ +void +__up_read_locked(struct rw_semaphore *sem) +{ + if (--sem->activity == 0 && !list_empty(&sem->wait_list)) + (void)__rwsem_wake_one_writer_locked(sem); +} +EXPORT_SYMBOL(__up_read_locked); + +/* trylock for writing -- returns 1 if successful, 0 if contention */ +int +__down_write_trylock_locked(struct rw_semaphore *sem) +{ + int ret = 0; + + if (sem->activity == 0 && list_empty(&sem->wait_list)) { + sem->activity = -1; + ret = 1; + } + + return ret; +} +EXPORT_SYMBOL(__down_write_trylock_locked); + +#endif + +int spl_rw_init(void) { return 0; } +void spl_rw_fini(void) { } --- linux-4.4.0.orig/spl/module/spl/spl-taskq.c +++ linux-4.4.0/spl/module/spl/spl-taskq.c @@ -0,0 +1,1125 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Task Queue Implementation. +\*****************************************************************************/ + +#include +#include + +int spl_taskq_thread_bind = 0; +module_param(spl_taskq_thread_bind, int, 0644); +MODULE_PARM_DESC(spl_taskq_thread_bind, "Bind taskq thread to CPU by default"); + + +int spl_taskq_thread_dynamic = 0; +module_param(spl_taskq_thread_dynamic, int, 0644); +MODULE_PARM_DESC(spl_taskq_thread_dynamic, "Allow dynamic taskq threads"); + +int spl_taskq_thread_priority = 1; +module_param(spl_taskq_thread_priority, int, 0644); +MODULE_PARM_DESC(spl_taskq_thread_priority, + "Allow non-default priority for taskq threads"); + +int spl_taskq_thread_sequential = 4; +module_param(spl_taskq_thread_sequential, int, 0644); +MODULE_PARM_DESC(spl_taskq_thread_sequential, + "Create new taskq threads after N sequential tasks"); + +/* Global system-wide dynamic task queue available for all consumers */ +taskq_t *system_taskq; +EXPORT_SYMBOL(system_taskq); + +/* Private dedicated taskq for creating new taskq threads on demand. */ +static taskq_t *dynamic_taskq; +static taskq_thread_t *taskq_thread_create(taskq_t *); + +static int +task_km_flags(uint_t flags) +{ + if (flags & TQ_NOSLEEP) + return KM_NOSLEEP; + + if (flags & TQ_PUSHPAGE) + return KM_PUSHPAGE; + + return KM_SLEEP; +} + +/* + * NOTE: Must be called with tq->tq_lock held, returns a list_t which + * is not attached to the free, work, or pending taskq lists. + */ +static taskq_ent_t * +task_alloc(taskq_t *tq, uint_t flags) +{ + taskq_ent_t *t; + int count = 0; + + ASSERT(tq); + ASSERT(spin_is_locked(&tq->tq_lock)); +retry: + /* Acquire taskq_ent_t's from free list if available */ + if (!list_empty(&tq->tq_free_list) && !(flags & TQ_NEW)) { + t = list_entry(tq->tq_free_list.next, taskq_ent_t, tqent_list); + + ASSERT(!(t->tqent_flags & TQENT_FLAG_PREALLOC)); + ASSERT(!(t->tqent_flags & TQENT_FLAG_CANCEL)); + ASSERT(!timer_pending(&t->tqent_timer)); + + list_del_init(&t->tqent_list); + return (t); + } + + /* Free list is empty and memory allocations are prohibited */ + if (flags & TQ_NOALLOC) + return (NULL); + + /* Hit maximum taskq_ent_t pool size */ + if (tq->tq_nalloc >= tq->tq_maxalloc) { + if (flags & TQ_NOSLEEP) + return (NULL); + + /* + * Sleep periodically polling the free list for an available + * taskq_ent_t. Dispatching with TQ_SLEEP should always succeed + * but we cannot block forever waiting for an taskq_ent_t to + * show up in the free list, otherwise a deadlock can happen. + * + * Therefore, we need to allocate a new task even if the number + * of allocated tasks is above tq->tq_maxalloc, but we still + * end up delaying the task allocation by one second, thereby + * throttling the task dispatch rate. + */ + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + schedule_timeout(HZ / 100); + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + if (count < 100) { + count++; + goto retry; + } + } + + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + t = kmem_alloc(sizeof(taskq_ent_t), task_km_flags(flags)); + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + if (t) { + taskq_init_ent(t); + tq->tq_nalloc++; + } + + return (t); +} + +/* + * NOTE: Must be called with tq->tq_lock held, expects the taskq_ent_t + * to already be removed from the free, work, or pending taskq lists. + */ +static void +task_free(taskq_t *tq, taskq_ent_t *t) +{ + ASSERT(tq); + ASSERT(t); + ASSERT(spin_is_locked(&tq->tq_lock)); + ASSERT(list_empty(&t->tqent_list)); + ASSERT(!timer_pending(&t->tqent_timer)); + + kmem_free(t, sizeof(taskq_ent_t)); + tq->tq_nalloc--; +} + +/* + * NOTE: Must be called with tq->tq_lock held, either destroys the + * taskq_ent_t if too many exist or moves it to the free list for later use. + */ +static void +task_done(taskq_t *tq, taskq_ent_t *t) +{ + ASSERT(tq); + ASSERT(t); + ASSERT(spin_is_locked(&tq->tq_lock)); + + /* Wake tasks blocked in taskq_wait_id() */ + wake_up_all(&t->tqent_waitq); + + list_del_init(&t->tqent_list); + + if (tq->tq_nalloc <= tq->tq_minalloc) { + t->tqent_id = 0; + t->tqent_func = NULL; + t->tqent_arg = NULL; + t->tqent_flags = 0; + + list_add_tail(&t->tqent_list, &tq->tq_free_list); + } else { + task_free(tq, t); + } +} + +/* + * When a delayed task timer expires remove it from the delay list and + * add it to the priority list in order for immediate processing. + */ +static void +task_expire(unsigned long data) +{ + taskq_ent_t *w, *t = (taskq_ent_t *)data; + taskq_t *tq = t->tqent_taskq; + struct list_head *l; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + if (t->tqent_flags & TQENT_FLAG_CANCEL) { + ASSERT(list_empty(&t->tqent_list)); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + return; + } + + /* + * The priority list must be maintained in strict task id order + * from lowest to highest for lowest_id to be easily calculable. + */ + list_del(&t->tqent_list); + list_for_each_prev(l, &tq->tq_prio_list) { + w = list_entry(l, taskq_ent_t, tqent_list); + if (w->tqent_id < t->tqent_id) { + list_add(&t->tqent_list, l); + break; + } + } + if (l == &tq->tq_prio_list) + list_add(&t->tqent_list, &tq->tq_prio_list); + + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + wake_up(&tq->tq_work_waitq); +} + +/* + * Returns the lowest incomplete taskqid_t. The taskqid_t may + * be queued on the pending list, on the priority list, on the + * delay list, or on the work list currently being handled, but + * it is not 100% complete yet. + */ +static taskqid_t +taskq_lowest_id(taskq_t *tq) +{ + taskqid_t lowest_id = tq->tq_next_id; + taskq_ent_t *t; + taskq_thread_t *tqt; + + ASSERT(tq); + ASSERT(spin_is_locked(&tq->tq_lock)); + + if (!list_empty(&tq->tq_pend_list)) { + t = list_entry(tq->tq_pend_list.next, taskq_ent_t, tqent_list); + lowest_id = MIN(lowest_id, t->tqent_id); + } + + if (!list_empty(&tq->tq_prio_list)) { + t = list_entry(tq->tq_prio_list.next, taskq_ent_t, tqent_list); + lowest_id = MIN(lowest_id, t->tqent_id); + } + + if (!list_empty(&tq->tq_delay_list)) { + t = list_entry(tq->tq_delay_list.next, taskq_ent_t, tqent_list); + lowest_id = MIN(lowest_id, t->tqent_id); + } + + if (!list_empty(&tq->tq_active_list)) { + tqt = list_entry(tq->tq_active_list.next, taskq_thread_t, + tqt_active_list); + ASSERT(tqt->tqt_id != 0); + lowest_id = MIN(lowest_id, tqt->tqt_id); + } + + return (lowest_id); +} + +/* + * Insert a task into a list keeping the list sorted by increasing taskqid. + */ +static void +taskq_insert_in_order(taskq_t *tq, taskq_thread_t *tqt) +{ + taskq_thread_t *w; + struct list_head *l; + + ASSERT(tq); + ASSERT(tqt); + ASSERT(spin_is_locked(&tq->tq_lock)); + + list_for_each_prev(l, &tq->tq_active_list) { + w = list_entry(l, taskq_thread_t, tqt_active_list); + if (w->tqt_id < tqt->tqt_id) { + list_add(&tqt->tqt_active_list, l); + break; + } + } + if (l == &tq->tq_active_list) + list_add(&tqt->tqt_active_list, &tq->tq_active_list); +} + +/* + * Find and return a task from the given list if it exists. The list + * must be in lowest to highest task id order. + */ +static taskq_ent_t * +taskq_find_list(taskq_t *tq, struct list_head *lh, taskqid_t id) +{ + struct list_head *l; + taskq_ent_t *t; + + ASSERT(spin_is_locked(&tq->tq_lock)); + + list_for_each(l, lh) { + t = list_entry(l, taskq_ent_t, tqent_list); + + if (t->tqent_id == id) + return (t); + + if (t->tqent_id > id) + break; + } + + return (NULL); +} + +/* + * Find an already dispatched task given the task id regardless of what + * state it is in. If a task is still pending or executing it will be + * returned and 'active' set appropriately. If the task has already + * been run then NULL is returned. + */ +static taskq_ent_t * +taskq_find(taskq_t *tq, taskqid_t id, int *active) +{ + taskq_thread_t *tqt; + struct list_head *l; + taskq_ent_t *t; + + ASSERT(spin_is_locked(&tq->tq_lock)); + *active = 0; + + t = taskq_find_list(tq, &tq->tq_delay_list, id); + if (t) + return (t); + + t = taskq_find_list(tq, &tq->tq_prio_list, id); + if (t) + return (t); + + t = taskq_find_list(tq, &tq->tq_pend_list, id); + if (t) + return (t); + + list_for_each(l, &tq->tq_active_list) { + tqt = list_entry(l, taskq_thread_t, tqt_active_list); + if (tqt->tqt_id == id) { + t = tqt->tqt_task; + *active = 1; + return (t); + } + } + + return (NULL); +} + +/* + * Theory for the taskq_wait_id(), taskq_wait_outstanding(), and + * taskq_wait() functions below. + * + * Taskq waiting is accomplished by tracking the lowest outstanding task + * id and the next available task id. As tasks are dispatched they are + * added to the tail of the pending, priority, or delay lists. As worker + * threads become available the tasks are removed from the heads of these + * lists and linked to the worker threads. This ensures the lists are + * kept sorted by lowest to highest task id. + * + * Therefore the lowest outstanding task id can be quickly determined by + * checking the head item from all of these lists. This value is stored + * with the taskq as the lowest id. It only needs to be recalculated when + * either the task with the current lowest id completes or is canceled. + * + * By blocking until the lowest task id exceeds the passed task id the + * taskq_wait_outstanding() function can be easily implemented. Similarly, + * by blocking until the lowest task id matches the next task id taskq_wait() + * can be implemented. + * + * Callers should be aware that when there are multiple worked threads it + * is possible for larger task ids to complete before smaller ones. Also + * when the taskq contains delay tasks with small task ids callers may + * block for a considerable length of time waiting for them to expire and + * execute. + */ +static int +taskq_wait_id_check(taskq_t *tq, taskqid_t id) +{ + int active = 0; + int rc; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + rc = (taskq_find(tq, id, &active) == NULL); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + return (rc); +} + +/* + * The taskq_wait_id() function blocks until the passed task id completes. + * This does not guarantee that all lower task ids have completed. + */ +void +taskq_wait_id(taskq_t *tq, taskqid_t id) +{ + wait_event(tq->tq_wait_waitq, taskq_wait_id_check(tq, id)); +} +EXPORT_SYMBOL(taskq_wait_id); + +static int +taskq_wait_outstanding_check(taskq_t *tq, taskqid_t id) +{ + int rc; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + rc = (id < tq->tq_lowest_id); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + return (rc); +} + +/* + * The taskq_wait_outstanding() function will block until all tasks with a + * lower taskqid than the passed 'id' have been completed. Note that all + * task id's are assigned monotonically at dispatch time. Zero may be + * passed for the id to indicate all tasks dispatch up to this point, + * but not after, should be waited for. + */ +void +taskq_wait_outstanding(taskq_t *tq, taskqid_t id) +{ + wait_event(tq->tq_wait_waitq, + taskq_wait_outstanding_check(tq, id ? id : tq->tq_next_id - 1)); +} +EXPORT_SYMBOL(taskq_wait_outstanding); + +static int +taskq_wait_check(taskq_t *tq) +{ + int rc; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + rc = (tq->tq_lowest_id == tq->tq_next_id); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + return (rc); +} + +/* + * The taskq_wait() function will block until the taskq is empty. + * This means that if a taskq re-dispatches work to itself taskq_wait() + * callers will block indefinitely. + */ +void +taskq_wait(taskq_t *tq) +{ + wait_event(tq->tq_wait_waitq, taskq_wait_check(tq)); +} +EXPORT_SYMBOL(taskq_wait); + +static int +taskq_member_impl(taskq_t *tq, void *t) +{ + struct list_head *l; + taskq_thread_t *tqt; + int found = 0; + + ASSERT(tq); + ASSERT(t); + ASSERT(spin_is_locked(&tq->tq_lock)); + + list_for_each(l, &tq->tq_thread_list) { + tqt = list_entry(l, taskq_thread_t, tqt_thread_list); + if (tqt->tqt_thread == (struct task_struct *)t) { + found = 1; + break; + } + } + return (found); +} + +int +taskq_member(taskq_t *tq, void *t) +{ + int found; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + found = taskq_member_impl(tq, t); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + return (found); +} +EXPORT_SYMBOL(taskq_member); + +/* + * Cancel an already dispatched task given the task id. Still pending tasks + * will be immediately canceled, and if the task is active the function will + * block until it completes. Preallocated tasks which are canceled must be + * freed by the caller. + */ +int +taskq_cancel_id(taskq_t *tq, taskqid_t id) +{ + taskq_ent_t *t; + int active = 0; + int rc = ENOENT; + + ASSERT(tq); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + t = taskq_find(tq, id, &active); + if (t && !active) { + list_del_init(&t->tqent_list); + t->tqent_flags |= TQENT_FLAG_CANCEL; + + /* + * When canceling the lowest outstanding task id we + * must recalculate the new lowest outstanding id. + */ + if (tq->tq_lowest_id == t->tqent_id) { + tq->tq_lowest_id = taskq_lowest_id(tq); + ASSERT3S(tq->tq_lowest_id, >, t->tqent_id); + } + + /* + * The task_expire() function takes the tq->tq_lock so drop + * drop the lock before synchronously cancelling the timer. + */ + if (timer_pending(&t->tqent_timer)) { + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + del_timer_sync(&t->tqent_timer); + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + } + + if (!(t->tqent_flags & TQENT_FLAG_PREALLOC)) + task_done(tq, t); + + rc = 0; + } + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + if (active) { + taskq_wait_id(tq, id); + rc = EBUSY; + } + + return (rc); +} +EXPORT_SYMBOL(taskq_cancel_id); + +static int taskq_thread_spawn(taskq_t *tq); + +taskqid_t +taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t flags) +{ + taskq_ent_t *t; + taskqid_t rc = 0; + + ASSERT(tq); + ASSERT(func); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + /* Taskq being destroyed and all tasks drained */ + if (!(tq->tq_flags & TASKQ_ACTIVE)) + goto out; + + /* Do not queue the task unless there is idle thread for it */ + ASSERT(tq->tq_nactive <= tq->tq_nthreads); + if ((flags & TQ_NOQUEUE) && (tq->tq_nactive == tq->tq_nthreads)) + goto out; + + if ((t = task_alloc(tq, flags)) == NULL) + goto out; + + spin_lock(&t->tqent_lock); + + /* Queue to the priority list instead of the pending list */ + if (flags & TQ_FRONT) + list_add_tail(&t->tqent_list, &tq->tq_prio_list); + else + list_add_tail(&t->tqent_list, &tq->tq_pend_list); + + t->tqent_id = rc = tq->tq_next_id; + tq->tq_next_id++; + t->tqent_func = func; + t->tqent_arg = arg; + t->tqent_taskq = tq; + t->tqent_timer.data = 0; + t->tqent_timer.function = NULL; + t->tqent_timer.expires = 0; + + ASSERT(!(t->tqent_flags & TQENT_FLAG_PREALLOC)); + + spin_unlock(&t->tqent_lock); + + wake_up(&tq->tq_work_waitq); +out: + /* Spawn additional taskq threads if required. */ + if (tq->tq_nactive == tq->tq_nthreads) + (void) taskq_thread_spawn(tq); + + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + return (rc); +} +EXPORT_SYMBOL(taskq_dispatch); + +taskqid_t +taskq_dispatch_delay(taskq_t *tq, task_func_t func, void *arg, + uint_t flags, clock_t expire_time) +{ + taskqid_t rc = 0; + taskq_ent_t *t; + + ASSERT(tq); + ASSERT(func); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + /* Taskq being destroyed and all tasks drained */ + if (!(tq->tq_flags & TASKQ_ACTIVE)) + goto out; + + if ((t = task_alloc(tq, flags)) == NULL) + goto out; + + spin_lock(&t->tqent_lock); + + /* Queue to the delay list for subsequent execution */ + list_add_tail(&t->tqent_list, &tq->tq_delay_list); + + t->tqent_id = rc = tq->tq_next_id; + tq->tq_next_id++; + t->tqent_func = func; + t->tqent_arg = arg; + t->tqent_taskq = tq; + t->tqent_timer.data = (unsigned long)t; + t->tqent_timer.function = task_expire; + t->tqent_timer.expires = (unsigned long)expire_time; + add_timer(&t->tqent_timer); + + ASSERT(!(t->tqent_flags & TQENT_FLAG_PREALLOC)); + + spin_unlock(&t->tqent_lock); +out: + /* Spawn additional taskq threads if required. */ + if (tq->tq_nactive == tq->tq_nthreads) + (void) taskq_thread_spawn(tq); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + return (rc); +} +EXPORT_SYMBOL(taskq_dispatch_delay); + +void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, uint_t flags, + taskq_ent_t *t) +{ + ASSERT(tq); + ASSERT(func); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + /* Taskq being destroyed and all tasks drained */ + if (!(tq->tq_flags & TASKQ_ACTIVE)) { + t->tqent_id = 0; + goto out; + } + + spin_lock(&t->tqent_lock); + + /* + * Mark it as a prealloc'd task. This is important + * to ensure that we don't free it later. + */ + t->tqent_flags |= TQENT_FLAG_PREALLOC; + + /* Queue to the priority list instead of the pending list */ + if (flags & TQ_FRONT) + list_add_tail(&t->tqent_list, &tq->tq_prio_list); + else + list_add_tail(&t->tqent_list, &tq->tq_pend_list); + + t->tqent_id = tq->tq_next_id; + tq->tq_next_id++; + t->tqent_func = func; + t->tqent_arg = arg; + t->tqent_taskq = tq; + + spin_unlock(&t->tqent_lock); + + wake_up(&tq->tq_work_waitq); +out: + /* Spawn additional taskq threads if required. */ + if (tq->tq_nactive == tq->tq_nthreads) + (void) taskq_thread_spawn(tq); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); +} +EXPORT_SYMBOL(taskq_dispatch_ent); + +int +taskq_empty_ent(taskq_ent_t *t) +{ + return list_empty(&t->tqent_list); +} +EXPORT_SYMBOL(taskq_empty_ent); + +void +taskq_init_ent(taskq_ent_t *t) +{ + spin_lock_init(&t->tqent_lock); + init_waitqueue_head(&t->tqent_waitq); + init_timer(&t->tqent_timer); + INIT_LIST_HEAD(&t->tqent_list); + t->tqent_id = 0; + t->tqent_func = NULL; + t->tqent_arg = NULL; + t->tqent_flags = 0; + t->tqent_taskq = NULL; +} +EXPORT_SYMBOL(taskq_init_ent); + +/* + * Return the next pending task, preference is given to tasks on the + * priority list which were dispatched with TQ_FRONT. + */ +static taskq_ent_t * +taskq_next_ent(taskq_t *tq) +{ + struct list_head *list; + + ASSERT(spin_is_locked(&tq->tq_lock)); + + if (!list_empty(&tq->tq_prio_list)) + list = &tq->tq_prio_list; + else if (!list_empty(&tq->tq_pend_list)) + list = &tq->tq_pend_list; + else + return (NULL); + + return (list_entry(list->next, taskq_ent_t, tqent_list)); +} + +/* + * Spawns a new thread for the specified taskq. + */ +static void +taskq_thread_spawn_task(void *arg) +{ + taskq_t *tq = (taskq_t *)arg; + + (void) taskq_thread_create(tq); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + tq->tq_nspawn--; + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); +} + +/* + * Spawn addition threads for dynamic taskqs (TASKQ_DYNMAIC) the current + * number of threads is insufficient to handle the pending tasks. These + * new threads must be created by the dedicated dynamic_taskq to avoid + * deadlocks between thread creation and memory reclaim. The system_taskq + * which is also a dynamic taskq cannot be safely used for this. + */ +static int +taskq_thread_spawn(taskq_t *tq) +{ + int spawning = 0; + + if (!(tq->tq_flags & TASKQ_DYNAMIC)) + return (0); + + if ((tq->tq_nthreads + tq->tq_nspawn < tq->tq_maxthreads) && + (tq->tq_flags & TASKQ_ACTIVE)) { + spawning = (++tq->tq_nspawn); + taskq_dispatch(dynamic_taskq, taskq_thread_spawn_task, + tq, TQ_NOSLEEP); + } + + return (spawning); +} + +/* + * Threads in a dynamic taskq should only exit once it has been completely + * drained and no other threads are actively servicing tasks. This prevents + * threads from being created and destroyed more than is required. + * + * The first thread is the thread list is treated as the primary thread. + * There is nothing special about the primary thread but in order to avoid + * all the taskq pids from changing we opt to make it long running. + */ +static int +taskq_thread_should_stop(taskq_t *tq, taskq_thread_t *tqt) +{ + ASSERT(spin_is_locked(&tq->tq_lock)); + + if (!(tq->tq_flags & TASKQ_DYNAMIC)) + return (0); + + if (list_first_entry(&(tq->tq_thread_list), taskq_thread_t, + tqt_thread_list) == tqt) + return (0); + + return + ((tq->tq_nspawn == 0) && /* No threads are being spawned */ + (tq->tq_nactive == 0) && /* No threads are handling tasks */ + (tq->tq_nthreads > 1) && /* More than 1 thread is running */ + (!taskq_next_ent(tq)) && /* There are no pending tasks */ + (spl_taskq_thread_dynamic));/* Dynamic taskqs are allowed */ +} + +static int +taskq_thread(void *args) +{ + DECLARE_WAITQUEUE(wait, current); + sigset_t blocked; + taskq_thread_t *tqt = args; + taskq_t *tq; + taskq_ent_t *t; + int seq_tasks = 0; + + ASSERT(tqt); + tq = tqt->tqt_tq; + current->flags |= PF_NOFREEZE; + + (void) spl_fstrans_mark(); + + sigfillset(&blocked); + sigprocmask(SIG_BLOCK, &blocked, NULL); + flush_signals(current); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + /* Immediately exit if more threads than allowed were created. */ + if (tq->tq_nthreads >= tq->tq_maxthreads) + goto error; + + tq->tq_nthreads++; + list_add_tail(&tqt->tqt_thread_list, &tq->tq_thread_list); + wake_up(&tq->tq_wait_waitq); + set_current_state(TASK_INTERRUPTIBLE); + + while (!kthread_should_stop()) { + + if (list_empty(&tq->tq_pend_list) && + list_empty(&tq->tq_prio_list)) { + + if (taskq_thread_should_stop(tq, tqt)) { + wake_up_all(&tq->tq_wait_waitq); + break; + } + + add_wait_queue_exclusive(&tq->tq_work_waitq, &wait); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + schedule(); + seq_tasks = 0; + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + remove_wait_queue(&tq->tq_work_waitq, &wait); + } else { + __set_current_state(TASK_RUNNING); + } + + if ((t = taskq_next_ent(tq)) != NULL) { + list_del_init(&t->tqent_list); + + /* In order to support recursively dispatching a + * preallocated taskq_ent_t, tqent_id must be + * stored prior to executing tqent_func. */ + tqt->tqt_id = t->tqent_id; + tqt->tqt_task = t; + + /* We must store a copy of the flags prior to + * servicing the task (servicing a prealloc'd task + * returns the ownership of the tqent back to + * the caller of taskq_dispatch). Thus, + * tqent_flags _may_ change within the call. */ + tqt->tqt_flags = t->tqent_flags; + + taskq_insert_in_order(tq, tqt); + tq->tq_nactive++; + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + /* Perform the requested task */ + t->tqent_func(t->tqent_arg); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + tq->tq_nactive--; + list_del_init(&tqt->tqt_active_list); + tqt->tqt_task = NULL; + + /* For prealloc'd tasks, we don't free anything. */ + if (!(tqt->tqt_flags & TQENT_FLAG_PREALLOC)) + task_done(tq, t); + + /* When the current lowest outstanding taskqid is + * done calculate the new lowest outstanding id */ + if (tq->tq_lowest_id == tqt->tqt_id) { + tq->tq_lowest_id = taskq_lowest_id(tq); + ASSERT3S(tq->tq_lowest_id, >, tqt->tqt_id); + } + + /* Spawn additional taskq threads if required. */ + if ((++seq_tasks) > spl_taskq_thread_sequential && + taskq_thread_spawn(tq)) + seq_tasks = 0; + + tqt->tqt_id = 0; + tqt->tqt_flags = 0; + wake_up_all(&tq->tq_wait_waitq); + } else { + if (taskq_thread_should_stop(tq, tqt)) + break; + } + + set_current_state(TASK_INTERRUPTIBLE); + + } + + __set_current_state(TASK_RUNNING); + tq->tq_nthreads--; + list_del_init(&tqt->tqt_thread_list); +error: + kmem_free(tqt, sizeof (taskq_thread_t)); + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + return (0); +} + +static taskq_thread_t * +taskq_thread_create(taskq_t *tq) +{ + static int last_used_cpu = 0; + taskq_thread_t *tqt; + + tqt = kmem_alloc(sizeof (*tqt), KM_PUSHPAGE); + INIT_LIST_HEAD(&tqt->tqt_thread_list); + INIT_LIST_HEAD(&tqt->tqt_active_list); + tqt->tqt_tq = tq; + tqt->tqt_id = 0; + + tqt->tqt_thread = spl_kthread_create(taskq_thread, tqt, + "%s", tq->tq_name); + if (tqt->tqt_thread == NULL) { + kmem_free(tqt, sizeof (taskq_thread_t)); + return (NULL); + } + + if (spl_taskq_thread_bind) { + last_used_cpu = (last_used_cpu + 1) % num_online_cpus(); + kthread_bind(tqt->tqt_thread, last_used_cpu); + } + + if (spl_taskq_thread_priority) + set_user_nice(tqt->tqt_thread, PRIO_TO_NICE(tq->tq_pri)); + + wake_up_process(tqt->tqt_thread); + + return (tqt); +} + +taskq_t * +taskq_create(const char *name, int nthreads, pri_t pri, + int minalloc, int maxalloc, uint_t flags) +{ + taskq_t *tq; + taskq_thread_t *tqt; + int count = 0, rc = 0, i; + + ASSERT(name != NULL); + ASSERT(minalloc >= 0); + ASSERT(maxalloc <= INT_MAX); + ASSERT(!(flags & (TASKQ_CPR_SAFE))); /* Unsupported */ + + /* Scale the number of threads using nthreads as a percentage */ + if (flags & TASKQ_THREADS_CPU_PCT) { + ASSERT(nthreads <= 100); + ASSERT(nthreads >= 0); + nthreads = MIN(nthreads, 100); + nthreads = MAX(nthreads, 0); + nthreads = MAX((num_online_cpus() * nthreads) / 100, 1); + } + + tq = kmem_alloc(sizeof (*tq), KM_PUSHPAGE); + if (tq == NULL) + return (NULL); + + spin_lock_init(&tq->tq_lock); + INIT_LIST_HEAD(&tq->tq_thread_list); + INIT_LIST_HEAD(&tq->tq_active_list); + tq->tq_name = strdup(name); + tq->tq_nactive = 0; + tq->tq_nthreads = 0; + tq->tq_nspawn = 0; + tq->tq_maxthreads = nthreads; + tq->tq_pri = pri; + tq->tq_minalloc = minalloc; + tq->tq_maxalloc = maxalloc; + tq->tq_nalloc = 0; + tq->tq_flags = (flags | TASKQ_ACTIVE); + tq->tq_next_id = 1; + tq->tq_lowest_id = 1; + INIT_LIST_HEAD(&tq->tq_free_list); + INIT_LIST_HEAD(&tq->tq_pend_list); + INIT_LIST_HEAD(&tq->tq_prio_list); + INIT_LIST_HEAD(&tq->tq_delay_list); + init_waitqueue_head(&tq->tq_work_waitq); + init_waitqueue_head(&tq->tq_wait_waitq); + + if (flags & TASKQ_PREPOPULATE) { + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + for (i = 0; i < minalloc; i++) + task_done(tq, task_alloc(tq, TQ_PUSHPAGE | TQ_NEW)); + + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + } + + if ((flags & TASKQ_DYNAMIC) && spl_taskq_thread_dynamic) + nthreads = 1; + + for (i = 0; i < nthreads; i++) { + tqt = taskq_thread_create(tq); + if (tqt == NULL) + rc = 1; + else + count++; + } + + /* Wait for all threads to be started before potential destroy */ + wait_event(tq->tq_wait_waitq, tq->tq_nthreads == count); + + if (rc) { + taskq_destroy(tq); + tq = NULL; + } + + return (tq); +} +EXPORT_SYMBOL(taskq_create); + +void +taskq_destroy(taskq_t *tq) +{ + struct task_struct *thread; + taskq_thread_t *tqt; + taskq_ent_t *t; + + ASSERT(tq); + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + tq->tq_flags &= ~TASKQ_ACTIVE; + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + /* + * When TASKQ_ACTIVE is clear new tasks may not be added nor may + * new worker threads be spawned for dynamic taskq. + */ + if (dynamic_taskq != NULL) + taskq_wait_outstanding(dynamic_taskq, 0); + + taskq_wait(tq); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + + /* + * Signal each thread to exit and block until it does. Each thread + * is responsible for removing itself from the list and freeing its + * taskq_thread_t. This allows for idle threads to opt to remove + * themselves from the taskq. They can be recreated as needed. + */ + while (!list_empty(&tq->tq_thread_list)) { + tqt = list_entry(tq->tq_thread_list.next, + taskq_thread_t, tqt_thread_list); + thread = tqt->tqt_thread; + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + kthread_stop(thread); + + spin_lock_irqsave(&tq->tq_lock, tq->tq_lock_flags); + } + + while (!list_empty(&tq->tq_free_list)) { + t = list_entry(tq->tq_free_list.next, taskq_ent_t, tqent_list); + + ASSERT(!(t->tqent_flags & TQENT_FLAG_PREALLOC)); + + list_del_init(&t->tqent_list); + task_free(tq, t); + } + + ASSERT0(tq->tq_nthreads); + ASSERT0(tq->tq_nalloc); + ASSERT0(tq->tq_nspawn); + ASSERT(list_empty(&tq->tq_thread_list)); + ASSERT(list_empty(&tq->tq_active_list)); + ASSERT(list_empty(&tq->tq_free_list)); + ASSERT(list_empty(&tq->tq_pend_list)); + ASSERT(list_empty(&tq->tq_prio_list)); + ASSERT(list_empty(&tq->tq_delay_list)); + + spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); + + strfree(tq->tq_name); + kmem_free(tq, sizeof (taskq_t)); +} +EXPORT_SYMBOL(taskq_destroy); + +int +spl_taskq_init(void) +{ + system_taskq = taskq_create("spl_system_taskq", MAX(boot_ncpus, 64), + maxclsyspri, boot_ncpus, INT_MAX, TASKQ_PREPOPULATE|TASKQ_DYNAMIC); + if (system_taskq == NULL) + return (1); + + dynamic_taskq = taskq_create("spl_dynamic_taskq", 1, + maxclsyspri, boot_ncpus, INT_MAX, TASKQ_PREPOPULATE); + if (dynamic_taskq == NULL) { + taskq_destroy(system_taskq); + return (1); + } + + return (0); +} + +void +spl_taskq_fini(void) +{ + taskq_destroy(dynamic_taskq); + dynamic_taskq = NULL; + + taskq_destroy(system_taskq); + system_taskq = NULL; +} --- linux-4.4.0.orig/spl/module/spl/spl-thread.c +++ linux-4.4.0/spl/module/spl/spl-thread.c @@ -0,0 +1,158 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Thread Implementation. +\*****************************************************************************/ + +#include +#include +#include + +/* + * Thread interfaces + */ +typedef struct thread_priv_s { + unsigned long tp_magic; /* Magic */ + int tp_name_size; /* Name size */ + char *tp_name; /* Name (without _thread suffix) */ + void (*tp_func)(void *); /* Registered function */ + void *tp_args; /* Args to be passed to function */ + size_t tp_len; /* Len to be passed to function */ + int tp_state; /* State to start thread at */ + pri_t tp_pri; /* Priority to start threat at */ +} thread_priv_t; + +static int +thread_generic_wrapper(void *arg) +{ + thread_priv_t *tp = (thread_priv_t *)arg; + void (*func)(void *); + void *args; + + ASSERT(tp->tp_magic == TP_MAGIC); + func = tp->tp_func; + args = tp->tp_args; + set_current_state(tp->tp_state); + set_user_nice((kthread_t *)current, PRIO_TO_NICE(tp->tp_pri)); + kmem_free(tp->tp_name, tp->tp_name_size); + kmem_free(tp, sizeof(thread_priv_t)); + + if (func) + func(args); + + return 0; +} + +void +__thread_exit(void) +{ + tsd_exit(); + complete_and_exit(NULL, 0); + /* Unreachable */ +} +EXPORT_SYMBOL(__thread_exit); + +/* thread_create() may block forever if it cannot create a thread or + * allocate memory. This is preferable to returning a NULL which Solaris + * style callers likely never check for... since it can't fail. */ +kthread_t * +__thread_create(caddr_t stk, size_t stksize, thread_func_t func, + const char *name, void *args, size_t len, proc_t *pp, + int state, pri_t pri) +{ + thread_priv_t *tp; + struct task_struct *tsk; + char *p; + + /* Option pp is simply ignored */ + /* Variable stack size unsupported */ + ASSERT(stk == NULL); + + tp = kmem_alloc(sizeof(thread_priv_t), KM_PUSHPAGE); + if (tp == NULL) + return (NULL); + + tp->tp_magic = TP_MAGIC; + tp->tp_name_size = strlen(name) + 1; + + tp->tp_name = kmem_alloc(tp->tp_name_size, KM_PUSHPAGE); + if (tp->tp_name == NULL) { + kmem_free(tp, sizeof(thread_priv_t)); + return (NULL); + } + + strncpy(tp->tp_name, name, tp->tp_name_size); + + /* Strip trailing "_thread" from passed name which will be the func + * name since the exposed API has no parameter for passing a name. + */ + p = strstr(tp->tp_name, "_thread"); + if (p) + p[0] = '\0'; + + tp->tp_func = func; + tp->tp_args = args; + tp->tp_len = len; + tp->tp_state = state; + tp->tp_pri = pri; + + tsk = spl_kthread_create(thread_generic_wrapper, (void *)tp, + "%s", tp->tp_name); + if (IS_ERR(tsk)) + return (NULL); + + wake_up_process(tsk); + return ((kthread_t *)tsk); +} +EXPORT_SYMBOL(__thread_create); + +/* + * spl_kthread_create - Wrapper providing pre-3.13 semantics for + * kthread_create() in which it is not killable and less likely + * to return -ENOMEM. + */ +struct task_struct * +spl_kthread_create(int (*func)(void *), void *data, const char namefmt[], ...) +{ + struct task_struct *tsk; + va_list args; + char name[TASK_COMM_LEN]; + + va_start(args, namefmt); + vsnprintf(name, sizeof(name), namefmt, args); + va_end(args); + do { + tsk = kthread_create(func, data, "%s", name); + if (IS_ERR(tsk)) { + if (signal_pending(current)) { + clear_thread_flag(TIF_SIGPENDING); + continue; + } + if (PTR_ERR(tsk) == -ENOMEM) + continue; + return (NULL); + } else + return (tsk); + } while (1); +} +EXPORT_SYMBOL(spl_kthread_create); --- linux-4.4.0.orig/spl/module/spl/spl-tsd.c +++ linux-4.4.0/spl/module/spl/spl-tsd.c @@ -0,0 +1,694 @@ +/* + * Copyright (C) 2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + * + * + * Solaris Porting Layer (SPL) Thread Specific Data Implementation. + * + * Thread specific data has implemented using a hash table, this avoids + * the need to add a member to the task structure and allows maximum + * portability between kernels. This implementation has been optimized + * to keep the tsd_set() and tsd_get() times as small as possible. + * + * The majority of the entries in the hash table are for specific tsd + * entries. These entries are hashed by the product of their key and + * pid because by design the key and pid are guaranteed to be unique. + * Their product also has the desirable properly that it will be uniformly + * distributed over the hash bins providing neither the pid nor key is zero. + * Under linux the zero pid is always the init process and thus won't be + * used, and this implementation is careful to never to assign a zero key. + * By default the hash table is sized to 512 bins which is expected to + * be sufficient for light to moderate usage of thread specific data. + * + * The hash table contains two additional type of entries. They first + * type is entry is called a 'key' entry and it is added to the hash during + * tsd_create(). It is used to store the address of the destructor function + * and it is used as an anchor point. All tsd entries which use the same + * key will be linked to this entry. This is used during tsd_destory() to + * quickly call the destructor function for all tsd associated with the key. + * The 'key' entry may be looked up with tsd_hash_search() by passing the + * key you wish to lookup and DTOR_PID constant as the pid. + * + * The second type of entry is called a 'pid' entry and it is added to the + * hash the first time a process set a key. The 'pid' entry is also used + * as an anchor and all tsd for the process will be linked to it. This + * list is using during tsd_exit() to ensure all registered destructors + * are run for the process. The 'pid' entry may be looked up with + * tsd_hash_search() by passing the PID_KEY constant as the key, and + * the process pid. Note that tsd_exit() is called by thread_exit() + * so if your using the Solaris thread API you should not need to call + * tsd_exit() directly. + * + */ + +#include +#include +#include +#include + +typedef struct tsd_hash_bin { + spinlock_t hb_lock; + struct hlist_head hb_head; +} tsd_hash_bin_t; + +typedef struct tsd_hash_table { + spinlock_t ht_lock; + uint_t ht_bits; + uint_t ht_key; + tsd_hash_bin_t *ht_bins; +} tsd_hash_table_t; + +typedef struct tsd_hash_entry { + uint_t he_key; + pid_t he_pid; + dtor_func_t he_dtor; + void *he_value; + struct hlist_node he_list; + struct list_head he_key_list; + struct list_head he_pid_list; +} tsd_hash_entry_t; + +static tsd_hash_table_t *tsd_hash_table = NULL; + + +/* + * tsd_hash_search - searches hash table for tsd_hash_entry + * @table: hash table + * @key: search key + * @pid: search pid + */ +static tsd_hash_entry_t * +tsd_hash_search(tsd_hash_table_t *table, uint_t key, pid_t pid) +{ + struct hlist_node *node; + tsd_hash_entry_t *entry; + tsd_hash_bin_t *bin; + ulong_t hash; + + hash = hash_long((ulong_t)key * (ulong_t)pid, table->ht_bits); + bin = &table->ht_bins[hash]; + spin_lock(&bin->hb_lock); + hlist_for_each(node, &bin->hb_head) { + entry = list_entry(node, tsd_hash_entry_t, he_list); + if ((entry->he_key == key) && (entry->he_pid == pid)) { + spin_unlock(&bin->hb_lock); + return (entry); + } + } + + spin_unlock(&bin->hb_lock); + return (NULL); +} + +/* + * tsd_hash_dtor - call the destructor and free all entries on the list + * @work: list of hash entries + * + * For a list of entries which have all already been removed from the + * hash call their registered destructor then free the associated memory. + */ +static void +tsd_hash_dtor(struct hlist_head *work) +{ + tsd_hash_entry_t *entry; + + while (!hlist_empty(work)) { + entry = hlist_entry(work->first, tsd_hash_entry_t, he_list); + hlist_del(&entry->he_list); + + if (entry->he_dtor && entry->he_pid != DTOR_PID) + entry->he_dtor(entry->he_value); + + kmem_free(entry, sizeof (tsd_hash_entry_t)); + } +} + +/* + * tsd_hash_add - adds an entry to hash table + * @table: hash table + * @key: search key + * @pid: search pid + * + * The caller is responsible for ensuring the unique key/pid do not + * already exist in the hash table. This possible because all entries + * are thread specific thus a concurrent thread will never attempt to + * add this key/pid. Because multiple bins must be checked to add + * links to the dtor and pid entries the entire table is locked. + */ +static int +tsd_hash_add(tsd_hash_table_t *table, uint_t key, pid_t pid, void *value) +{ + tsd_hash_entry_t *entry, *dtor_entry, *pid_entry; + tsd_hash_bin_t *bin; + ulong_t hash; + int rc = 0; + + ASSERT3P(tsd_hash_search(table, key, pid), ==, NULL); + + /* New entry allocate structure, set value, and add to hash */ + entry = kmem_alloc(sizeof (tsd_hash_entry_t), KM_PUSHPAGE); + if (entry == NULL) + return (ENOMEM); + + entry->he_key = key; + entry->he_pid = pid; + entry->he_value = value; + INIT_HLIST_NODE(&entry->he_list); + INIT_LIST_HEAD(&entry->he_key_list); + INIT_LIST_HEAD(&entry->he_pid_list); + + spin_lock(&table->ht_lock); + + /* Destructor entry must exist for all valid keys */ + dtor_entry = tsd_hash_search(table, entry->he_key, DTOR_PID); + ASSERT3P(dtor_entry, !=, NULL); + entry->he_dtor = dtor_entry->he_dtor; + + /* Process entry must exist for all valid processes */ + pid_entry = tsd_hash_search(table, PID_KEY, entry->he_pid); + ASSERT3P(pid_entry, !=, NULL); + + hash = hash_long((ulong_t)key * (ulong_t)pid, table->ht_bits); + bin = &table->ht_bins[hash]; + spin_lock(&bin->hb_lock); + + /* Add to the hash, key, and pid lists */ + hlist_add_head(&entry->he_list, &bin->hb_head); + list_add(&entry->he_key_list, &dtor_entry->he_key_list); + list_add(&entry->he_pid_list, &pid_entry->he_pid_list); + + spin_unlock(&bin->hb_lock); + spin_unlock(&table->ht_lock); + + return (rc); +} + +/* + * tsd_hash_add_key - adds a destructor entry to the hash table + * @table: hash table + * @keyp: search key + * @dtor: key destructor + * + * For every unique key there is a single entry in the hash which is used + * as anchor. All other thread specific entries for this key are linked + * to this anchor via the 'he_key_list' list head. On return they keyp + * will be set to the next available key for the hash table. + */ +static int +tsd_hash_add_key(tsd_hash_table_t *table, uint_t *keyp, dtor_func_t dtor) +{ + tsd_hash_entry_t *tmp_entry, *entry; + tsd_hash_bin_t *bin; + ulong_t hash; + int keys_checked = 0; + + ASSERT3P(table, !=, NULL); + + /* Allocate entry to be used as a destructor for this key */ + entry = kmem_alloc(sizeof (tsd_hash_entry_t), KM_PUSHPAGE); + if (entry == NULL) + return (ENOMEM); + + /* Determine next available key value */ + spin_lock(&table->ht_lock); + do { + /* Limited to TSD_KEYS_MAX concurrent unique keys */ + if (table->ht_key++ > TSD_KEYS_MAX) + table->ht_key = 1; + + /* Ensure failure when all TSD_KEYS_MAX keys are in use */ + if (keys_checked++ >= TSD_KEYS_MAX) { + spin_unlock(&table->ht_lock); + return (ENOENT); + } + + tmp_entry = tsd_hash_search(table, table->ht_key, DTOR_PID); + } while (tmp_entry); + + /* Add destructor entry in to hash table */ + entry->he_key = *keyp = table->ht_key; + entry->he_pid = DTOR_PID; + entry->he_dtor = dtor; + entry->he_value = NULL; + INIT_HLIST_NODE(&entry->he_list); + INIT_LIST_HEAD(&entry->he_key_list); + INIT_LIST_HEAD(&entry->he_pid_list); + + hash = hash_long((ulong_t)*keyp * (ulong_t)DTOR_PID, table->ht_bits); + bin = &table->ht_bins[hash]; + spin_lock(&bin->hb_lock); + + hlist_add_head(&entry->he_list, &bin->hb_head); + + spin_unlock(&bin->hb_lock); + spin_unlock(&table->ht_lock); + + return (0); +} + +/* + * tsd_hash_add_pid - adds a process entry to the hash table + * @table: hash table + * @pid: search pid + * + * For every process these is a single entry in the hash which is used + * as anchor. All other thread specific entries for this process are + * linked to this anchor via the 'he_pid_list' list head. + */ +static int +tsd_hash_add_pid(tsd_hash_table_t *table, pid_t pid) +{ + tsd_hash_entry_t *entry; + tsd_hash_bin_t *bin; + ulong_t hash; + + /* Allocate entry to be used as the process reference */ + entry = kmem_alloc(sizeof (tsd_hash_entry_t), KM_PUSHPAGE); + if (entry == NULL) + return (ENOMEM); + + spin_lock(&table->ht_lock); + entry->he_key = PID_KEY; + entry->he_pid = pid; + entry->he_dtor = NULL; + entry->he_value = NULL; + INIT_HLIST_NODE(&entry->he_list); + INIT_LIST_HEAD(&entry->he_key_list); + INIT_LIST_HEAD(&entry->he_pid_list); + + hash = hash_long((ulong_t)PID_KEY * (ulong_t)pid, table->ht_bits); + bin = &table->ht_bins[hash]; + spin_lock(&bin->hb_lock); + + hlist_add_head(&entry->he_list, &bin->hb_head); + + spin_unlock(&bin->hb_lock); + spin_unlock(&table->ht_lock); + + return (0); +} + +/* + * tsd_hash_del - delete an entry from hash table, key, and pid lists + * @table: hash table + * @key: search key + * @pid: search pid + */ +static void +tsd_hash_del(tsd_hash_table_t *table, tsd_hash_entry_t *entry) +{ + ASSERT(spin_is_locked(&table->ht_lock)); + hlist_del(&entry->he_list); + list_del_init(&entry->he_key_list); + list_del_init(&entry->he_pid_list); +} + +/* + * tsd_hash_table_init - allocate a hash table + * @bits: hash table size + * + * A hash table with 2^bits bins will be created, it may not be resized + * after the fact and must be free'd with tsd_hash_table_fini(). + */ +static tsd_hash_table_t * +tsd_hash_table_init(uint_t bits) +{ + tsd_hash_table_t *table; + int hash, size = (1 << bits); + + table = kmem_zalloc(sizeof (tsd_hash_table_t), KM_SLEEP); + if (table == NULL) + return (NULL); + + table->ht_bins = kmem_zalloc(sizeof (tsd_hash_bin_t) * size, KM_SLEEP); + if (table->ht_bins == NULL) { + kmem_free(table, sizeof (tsd_hash_table_t)); + return (NULL); + } + + for (hash = 0; hash < size; hash++) { + spin_lock_init(&table->ht_bins[hash].hb_lock); + INIT_HLIST_HEAD(&table->ht_bins[hash].hb_head); + } + + spin_lock_init(&table->ht_lock); + table->ht_bits = bits; + table->ht_key = 1; + + return (table); +} + +/* + * tsd_hash_table_fini - free a hash table + * @table: hash table + * + * Free a hash table allocated by tsd_hash_table_init(). If the hash + * table is not empty this function will call the proper destructor for + * all remaining entries before freeing the memory used by those entries. + */ +static void +tsd_hash_table_fini(tsd_hash_table_t *table) +{ + HLIST_HEAD(work); + tsd_hash_bin_t *bin; + tsd_hash_entry_t *entry; + int size, i; + + ASSERT3P(table, !=, NULL); + spin_lock(&table->ht_lock); + for (i = 0, size = (1 << table->ht_bits); i < size; i++) { + bin = &table->ht_bins[i]; + spin_lock(&bin->hb_lock); + while (!hlist_empty(&bin->hb_head)) { + entry = hlist_entry(bin->hb_head.first, + tsd_hash_entry_t, he_list); + tsd_hash_del(table, entry); + hlist_add_head(&entry->he_list, &work); + } + spin_unlock(&bin->hb_lock); + } + spin_unlock(&table->ht_lock); + + tsd_hash_dtor(&work); + kmem_free(table->ht_bins, sizeof (tsd_hash_bin_t)*(1<ht_bits)); + kmem_free(table, sizeof (tsd_hash_table_t)); +} + +/* + * tsd_remove_entry - remove a tsd entry for this thread + * @entry: entry to remove + * + * Remove the thread specific data @entry for this thread. + * If this is the last entry for this thread, also remove the PID entry. + */ +static void +tsd_remove_entry(tsd_hash_entry_t *entry) +{ + HLIST_HEAD(work); + tsd_hash_table_t *table; + tsd_hash_entry_t *pid_entry; + tsd_hash_bin_t *pid_entry_bin, *entry_bin; + ulong_t hash; + + table = tsd_hash_table; + ASSERT3P(table, !=, NULL); + ASSERT3P(entry, !=, NULL); + + spin_lock(&table->ht_lock); + + hash = hash_long((ulong_t)entry->he_key * + (ulong_t)entry->he_pid, table->ht_bits); + entry_bin = &table->ht_bins[hash]; + + /* save the possible pid_entry */ + pid_entry = list_entry(entry->he_pid_list.next, tsd_hash_entry_t, + he_pid_list); + + /* remove entry */ + spin_lock(&entry_bin->hb_lock); + tsd_hash_del(table, entry); + hlist_add_head(&entry->he_list, &work); + spin_unlock(&entry_bin->hb_lock); + + /* if pid_entry is indeed pid_entry, then remove it if it's empty */ + if (pid_entry->he_key == PID_KEY && + list_empty(&pid_entry->he_pid_list)) { + hash = hash_long((ulong_t)pid_entry->he_key * + (ulong_t)pid_entry->he_pid, table->ht_bits); + pid_entry_bin = &table->ht_bins[hash]; + + spin_lock(&pid_entry_bin->hb_lock); + tsd_hash_del(table, pid_entry); + hlist_add_head(&pid_entry->he_list, &work); + spin_unlock(&pid_entry_bin->hb_lock); + } + + spin_unlock(&table->ht_lock); + + tsd_hash_dtor(&work); +} + +/* + * tsd_set - set thread specific data + * @key: lookup key + * @value: value to set + * + * Caller must prevent racing tsd_create() or tsd_destroy(), protected + * from racing tsd_get() or tsd_set() because it is thread specific. + * This function has been optimized to be fast for the update case. + * When setting the tsd initially it will be slower due to additional + * required locking and potential memory allocations. + */ +int +tsd_set(uint_t key, void *value) +{ + tsd_hash_table_t *table; + tsd_hash_entry_t *entry; + pid_t pid; + int rc; + /* mark remove if value is NULL */ + boolean_t remove = (value == NULL); + + table = tsd_hash_table; + pid = curthread->pid; + ASSERT3P(table, !=, NULL); + + if ((key == 0) || (key > TSD_KEYS_MAX)) + return (EINVAL); + + /* Entry already exists in hash table update value */ + entry = tsd_hash_search(table, key, pid); + if (entry) { + entry->he_value = value; + /* remove the entry */ + if (remove) + tsd_remove_entry(entry); + return (0); + } + + /* don't create entry if value is NULL */ + if (remove) + return (0); + + /* Add a process entry to the hash if not yet exists */ + entry = tsd_hash_search(table, PID_KEY, pid); + if (entry == NULL) { + rc = tsd_hash_add_pid(table, pid); + if (rc) + return (rc); + } + + rc = tsd_hash_add(table, key, pid, value); + return (rc); +} +EXPORT_SYMBOL(tsd_set); + +/* + * tsd_get - get thread specific data + * @key: lookup key + * + * Caller must prevent racing tsd_create() or tsd_destroy(). This + * implementation is designed to be fast and scalable, it does not + * lock the entire table only a single hash bin. + */ +void * +tsd_get(uint_t key) +{ + tsd_hash_entry_t *entry; + + ASSERT3P(tsd_hash_table, !=, NULL); + + if ((key == 0) || (key > TSD_KEYS_MAX)) + return (NULL); + + entry = tsd_hash_search(tsd_hash_table, key, curthread->pid); + if (entry == NULL) + return (NULL); + + return (entry->he_value); +} +EXPORT_SYMBOL(tsd_get); + +/* + * tsd_create - create thread specific data key + * @keyp: lookup key address + * @dtor: destructor called during tsd_destroy() or tsd_exit() + * + * Provided key must be set to 0 or it assumed to be already in use. + * The dtor is allowed to be NULL in which case no additional cleanup + * for the data is performed during tsd_destroy() or tsd_exit(). + * + * Caller must prevent racing tsd_set() or tsd_get(), this function is + * safe from racing tsd_create(), tsd_destroy(), and tsd_exit(). + */ +void +tsd_create(uint_t *keyp, dtor_func_t dtor) +{ + ASSERT3P(keyp, !=, NULL); + if (*keyp) + return; + + (void) tsd_hash_add_key(tsd_hash_table, keyp, dtor); +} +EXPORT_SYMBOL(tsd_create); + +/* + * tsd_destroy - destroy thread specific data + * @keyp: lookup key address + * + * Destroys the thread specific data on all threads which use this key. + * + * Caller must prevent racing tsd_set() or tsd_get(), this function is + * safe from racing tsd_create(), tsd_destroy(), and tsd_exit(). + */ +void +tsd_destroy(uint_t *keyp) +{ + HLIST_HEAD(work); + tsd_hash_table_t *table; + tsd_hash_entry_t *dtor_entry, *entry; + tsd_hash_bin_t *dtor_entry_bin, *entry_bin; + ulong_t hash; + + table = tsd_hash_table; + ASSERT3P(table, !=, NULL); + + spin_lock(&table->ht_lock); + dtor_entry = tsd_hash_search(table, *keyp, DTOR_PID); + if (dtor_entry == NULL) { + spin_unlock(&table->ht_lock); + return; + } + + /* + * All threads which use this key must be linked off of the + * DTOR_PID entry. They are removed from the hash table and + * linked in to a private working list to be destroyed. + */ + while (!list_empty(&dtor_entry->he_key_list)) { + entry = list_entry(dtor_entry->he_key_list.next, + tsd_hash_entry_t, he_key_list); + ASSERT3U(dtor_entry->he_key, ==, entry->he_key); + ASSERT3P(dtor_entry->he_dtor, ==, entry->he_dtor); + + hash = hash_long((ulong_t)entry->he_key * + (ulong_t)entry->he_pid, table->ht_bits); + entry_bin = &table->ht_bins[hash]; + + spin_lock(&entry_bin->hb_lock); + tsd_hash_del(table, entry); + hlist_add_head(&entry->he_list, &work); + spin_unlock(&entry_bin->hb_lock); + } + + hash = hash_long((ulong_t)dtor_entry->he_key * + (ulong_t)dtor_entry->he_pid, table->ht_bits); + dtor_entry_bin = &table->ht_bins[hash]; + + spin_lock(&dtor_entry_bin->hb_lock); + tsd_hash_del(table, dtor_entry); + hlist_add_head(&dtor_entry->he_list, &work); + spin_unlock(&dtor_entry_bin->hb_lock); + spin_unlock(&table->ht_lock); + + tsd_hash_dtor(&work); + *keyp = 0; +} +EXPORT_SYMBOL(tsd_destroy); + +/* + * tsd_exit - destroys all thread specific data for this thread + * + * Destroys all the thread specific data for this thread. + * + * Caller must prevent racing tsd_set() or tsd_get(), this function is + * safe from racing tsd_create(), tsd_destroy(), and tsd_exit(). + */ +void +tsd_exit(void) +{ + HLIST_HEAD(work); + tsd_hash_table_t *table; + tsd_hash_entry_t *pid_entry, *entry; + tsd_hash_bin_t *pid_entry_bin, *entry_bin; + ulong_t hash; + + table = tsd_hash_table; + ASSERT3P(table, !=, NULL); + + spin_lock(&table->ht_lock); + pid_entry = tsd_hash_search(table, PID_KEY, curthread->pid); + if (pid_entry == NULL) { + spin_unlock(&table->ht_lock); + return; + } + + /* + * All keys associated with this pid must be linked off of the + * PID_KEY entry. They are removed from the hash table and + * linked in to a private working list to be destroyed. + */ + + while (!list_empty(&pid_entry->he_pid_list)) { + entry = list_entry(pid_entry->he_pid_list.next, + tsd_hash_entry_t, he_pid_list); + ASSERT3U(pid_entry->he_pid, ==, entry->he_pid); + + hash = hash_long((ulong_t)entry->he_key * + (ulong_t)entry->he_pid, table->ht_bits); + entry_bin = &table->ht_bins[hash]; + + spin_lock(&entry_bin->hb_lock); + tsd_hash_del(table, entry); + hlist_add_head(&entry->he_list, &work); + spin_unlock(&entry_bin->hb_lock); + } + + hash = hash_long((ulong_t)pid_entry->he_key * + (ulong_t)pid_entry->he_pid, table->ht_bits); + pid_entry_bin = &table->ht_bins[hash]; + + spin_lock(&pid_entry_bin->hb_lock); + tsd_hash_del(table, pid_entry); + hlist_add_head(&pid_entry->he_list, &work); + spin_unlock(&pid_entry_bin->hb_lock); + spin_unlock(&table->ht_lock); + + tsd_hash_dtor(&work); +} +EXPORT_SYMBOL(tsd_exit); + +int +spl_tsd_init(void) +{ + tsd_hash_table = tsd_hash_table_init(TSD_HASH_TABLE_BITS_DEFAULT); + if (tsd_hash_table == NULL) + return (1); + + return (0); +} + +void +spl_tsd_fini(void) +{ + tsd_hash_table_fini(tsd_hash_table); + tsd_hash_table = NULL; +} --- linux-4.4.0.orig/spl/module/spl/spl-vmem.c +++ linux-4.4.0/spl/module/spl/spl-vmem.c @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + */ + +#include +#include +#include +#include + +vmem_t *heap_arena = NULL; +EXPORT_SYMBOL(heap_arena); + +vmem_t *zio_alloc_arena = NULL; +EXPORT_SYMBOL(zio_alloc_arena); + +vmem_t *zio_arena = NULL; +EXPORT_SYMBOL(zio_arena); + +size_t +vmem_size(vmem_t *vmp, int typemask) +{ + ASSERT3P(vmp, ==, NULL); + ASSERT3S(typemask & VMEM_ALLOC, ==, VMEM_ALLOC); + ASSERT3S(typemask & VMEM_FREE, ==, VMEM_FREE); + + return (VMALLOC_TOTAL); +} +EXPORT_SYMBOL(vmem_size); + +/* + * Public vmem_alloc(), vmem_zalloc() and vmem_free() interfaces. + */ +void * +spl_vmem_alloc(size_t size, int flags, const char *func, int line) +{ + ASSERT0(flags & ~KM_PUBLIC_MASK); + + flags |= KM_VMEM; + +#if !defined(DEBUG_KMEM) + return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE)); +#else + return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE)); +#endif +} +EXPORT_SYMBOL(spl_vmem_alloc); + +void * +spl_vmem_zalloc(size_t size, int flags, const char *func, int line) +{ + ASSERT0(flags & ~KM_PUBLIC_MASK); + + flags |= (KM_VMEM | KM_ZERO); + +#if !defined(DEBUG_KMEM) + return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE)); +#else + return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE)); +#endif +} +EXPORT_SYMBOL(spl_vmem_zalloc); + +void +spl_vmem_free(const void *buf, size_t size) +{ +#if !defined(DEBUG_KMEM) + return (spl_kmem_free_impl(buf, size)); +#elif !defined(DEBUG_KMEM_TRACKING) + return (spl_kmem_free_debug(buf, size)); +#else + return (spl_kmem_free_track(buf, size)); +#endif +} +EXPORT_SYMBOL(spl_vmem_free); + +int +spl_vmem_init(void) +{ + return (0); +} + +void +spl_vmem_fini(void) +{ +} --- linux-4.4.0.orig/spl/module/spl/spl-vnode.c +++ linux-4.4.0/spl/module/spl/spl-vnode.c @@ -0,0 +1,908 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) Vnode Implementation. +\*****************************************************************************/ + +#include +#include +#include +#include +#include + +vnode_t *rootdir = (vnode_t *)0xabcd1234; +EXPORT_SYMBOL(rootdir); + +static spl_kmem_cache_t *vn_cache; +static spl_kmem_cache_t *vn_file_cache; + +static DEFINE_SPINLOCK(vn_file_lock); +static LIST_HEAD(vn_file_list); + +vtype_t +vn_mode_to_vtype(mode_t mode) +{ + if (S_ISREG(mode)) + return VREG; + + if (S_ISDIR(mode)) + return VDIR; + + if (S_ISCHR(mode)) + return VCHR; + + if (S_ISBLK(mode)) + return VBLK; + + if (S_ISFIFO(mode)) + return VFIFO; + + if (S_ISLNK(mode)) + return VLNK; + + if (S_ISSOCK(mode)) + return VSOCK; + + if (S_ISCHR(mode)) + return VCHR; + + return VNON; +} /* vn_mode_to_vtype() */ +EXPORT_SYMBOL(vn_mode_to_vtype); + +mode_t +vn_vtype_to_mode(vtype_t vtype) +{ + if (vtype == VREG) + return S_IFREG; + + if (vtype == VDIR) + return S_IFDIR; + + if (vtype == VCHR) + return S_IFCHR; + + if (vtype == VBLK) + return S_IFBLK; + + if (vtype == VFIFO) + return S_IFIFO; + + if (vtype == VLNK) + return S_IFLNK; + + if (vtype == VSOCK) + return S_IFSOCK; + + return VNON; +} /* vn_vtype_to_mode() */ +EXPORT_SYMBOL(vn_vtype_to_mode); + +vnode_t * +vn_alloc(int flag) +{ + vnode_t *vp; + + vp = kmem_cache_alloc(vn_cache, flag); + if (vp != NULL) { + vp->v_file = NULL; + vp->v_type = 0; + } + + return (vp); +} /* vn_alloc() */ +EXPORT_SYMBOL(vn_alloc); + +void +vn_free(vnode_t *vp) +{ + kmem_cache_free(vn_cache, vp); +} /* vn_free() */ +EXPORT_SYMBOL(vn_free); + +int +vn_open(const char *path, uio_seg_t seg, int flags, int mode, + vnode_t **vpp, int x1, void *x2) +{ + struct file *fp; + struct kstat stat; + int rc, saved_umask = 0; + gfp_t saved_gfp; + vnode_t *vp; + + ASSERT(flags & (FWRITE | FREAD)); + ASSERT(seg == UIO_SYSSPACE); + ASSERT(vpp); + *vpp = NULL; + + if (!(flags & FCREAT) && (flags & FWRITE)) + flags |= FEXCL; + + /* Note for filp_open() the two low bits must be remapped to mean: + * 01 - read-only -> 00 read-only + * 10 - write-only -> 01 write-only + * 11 - read-write -> 10 read-write + */ + flags--; + + if (flags & FCREAT) + saved_umask = xchg(¤t->fs->umask, 0); + + fp = filp_open(path, flags, mode); + + if (flags & FCREAT) + (void)xchg(¤t->fs->umask, saved_umask); + + if (IS_ERR(fp)) + return (-PTR_ERR(fp)); + +#ifdef HAVE_2ARGS_VFS_GETATTR + rc = vfs_getattr(&fp->f_path, &stat); +#else + rc = vfs_getattr(fp->f_path.mnt, fp->f_dentry, &stat); +#endif + if (rc) { + filp_close(fp, 0); + return (-rc); + } + + vp = vn_alloc(KM_SLEEP); + if (!vp) { + filp_close(fp, 0); + return (ENOMEM); + } + + saved_gfp = mapping_gfp_mask(fp->f_mapping); + mapping_set_gfp_mask(fp->f_mapping, saved_gfp & ~(__GFP_IO|__GFP_FS)); + + mutex_enter(&vp->v_lock); + vp->v_type = vn_mode_to_vtype(stat.mode); + vp->v_file = fp; + vp->v_gfp_mask = saved_gfp; + *vpp = vp; + mutex_exit(&vp->v_lock); + + return (0); +} /* vn_open() */ +EXPORT_SYMBOL(vn_open); + +int +vn_openat(const char *path, uio_seg_t seg, int flags, int mode, + vnode_t **vpp, int x1, void *x2, vnode_t *vp, int fd) +{ + char *realpath; + int len, rc; + + ASSERT(vp == rootdir); + + len = strlen(path) + 2; + realpath = kmalloc(len, kmem_flags_convert(KM_SLEEP)); + if (!realpath) + return (ENOMEM); + + (void)snprintf(realpath, len, "/%s", path); + rc = vn_open(realpath, seg, flags, mode, vpp, x1, x2); + kfree(realpath); + + return (rc); +} /* vn_openat() */ +EXPORT_SYMBOL(vn_openat); + +int +vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, offset_t off, + uio_seg_t seg, int ioflag, rlim64_t x2, void *x3, ssize_t *residp) +{ + loff_t offset; + mm_segment_t saved_fs; + struct file *fp; + int rc; + + ASSERT(uio == UIO_WRITE || uio == UIO_READ); + ASSERT(vp); + ASSERT(vp->v_file); + ASSERT(seg == UIO_SYSSPACE); + ASSERT((ioflag & ~FAPPEND) == 0); + ASSERT(x2 == RLIM64_INFINITY); + + fp = vp->v_file; + + offset = off; + if (ioflag & FAPPEND) + offset = fp->f_pos; + + /* Writable user data segment must be briefly increased for this + * process so we can use the user space read call paths to write + * in to memory allocated by the kernel. */ + saved_fs = get_fs(); + set_fs(get_ds()); + + if (uio & UIO_WRITE) + rc = vfs_write(fp, addr, len, &offset); + else + rc = vfs_read(fp, addr, len, &offset); + + set_fs(saved_fs); + fp->f_pos = offset; + + if (rc < 0) + return (-rc); + + if (residp) { + *residp = len - rc; + } else { + if (rc != len) + return (EIO); + } + + return (0); +} /* vn_rdwr() */ +EXPORT_SYMBOL(vn_rdwr); + +int +vn_close(vnode_t *vp, int flags, int x1, int x2, void *x3, void *x4) +{ + int rc; + + ASSERT(vp); + ASSERT(vp->v_file); + + mapping_set_gfp_mask(vp->v_file->f_mapping, vp->v_gfp_mask); + rc = filp_close(vp->v_file, 0); + vn_free(vp); + + return (-rc); +} /* vn_close() */ +EXPORT_SYMBOL(vn_close); + +/* vn_seek() does not actually seek it only performs bounds checking on the + * proposed seek. We perform minimal checking and allow vn_rdwr() to catch + * anything more serious. */ +int +vn_seek(vnode_t *vp, offset_t ooff, offset_t *noffp, void *ct) +{ + return ((*noffp < 0 || *noffp > MAXOFFSET_T) ? EINVAL : 0); +} +EXPORT_SYMBOL(vn_seek); + +/* + * spl_basename() takes a NULL-terminated string s as input containing a path. + * It returns a char pointer to a string and a length that describe the + * basename of the path. If the basename is not "." or "/", it will be an index + * into the string. While the string should be NULL terminated, the section + * referring to the basename is not. spl_basename is dual-licensed GPLv2+ and + * CC0. Anyone wishing to reuse it in another codebase may pick either license. + */ +static void +spl_basename(const char *s, const char **str, int *len) +{ + size_t i, end; + + ASSERT(str); + ASSERT(len); + + if (!s || !*s) { + *str = "."; + *len = 1; + return; + } + + i = strlen(s) - 1; + + while (i && s[i--] == '/'); + + if (i == 0) { + *str = "/"; + *len = 1; + return; + } + + end = i; + + for (end = i; i; i--) { + if (s[i] == '/') { + *str = &s[i+1]; + *len = end - i + 1; + return; + } + } + + *str = s; + *len = end + 1; +} + +static struct dentry * +spl_kern_path_locked(const char *name, struct path *path) +{ + struct path parent; + struct dentry *dentry; + const char *basename; + int len; + int rc; + + ASSERT(name); + ASSERT(path); + + spl_basename(name, &basename, &len); + + /* We do not accept "." or ".." */ + if (len <= 2 && basename[0] == '.') + if (len == 1 || basename[1] == '.') + return (ERR_PTR(-EACCES)); + + rc = kern_path(name, LOOKUP_PARENT, &parent); + if (rc) + return (ERR_PTR(rc)); + + spl_inode_lock(parent.dentry->d_inode); + + dentry = lookup_one_len(basename, parent.dentry, len); + if (IS_ERR(dentry)) { + spl_inode_unlock(parent.dentry->d_inode); + path_put(&parent); + } else { + *path = parent; + } + + return (dentry); +} + +/* Based on do_unlinkat() from linux/fs/namei.c */ +int +vn_remove(const char *path, uio_seg_t seg, int flags) +{ + struct dentry *dentry; + struct path parent; + struct inode *inode = NULL; + int rc = 0; + + ASSERT(seg == UIO_SYSSPACE); + ASSERT(flags == RMFILE); + + dentry = spl_kern_path_locked(path, &parent); + rc = PTR_ERR(dentry); + if (!IS_ERR(dentry)) { + if (parent.dentry->d_name.name[parent.dentry->d_name.len]) { + rc = 0; + goto slashes; + } + + inode = dentry->d_inode; + if (inode) { + atomic_inc(&inode->i_count); + } else { + rc = 0; + goto slashes; + } + +#ifdef HAVE_2ARGS_VFS_UNLINK + rc = vfs_unlink(parent.dentry->d_inode, dentry); +#else + rc = vfs_unlink(parent.dentry->d_inode, dentry, NULL); +#endif /* HAVE_2ARGS_VFS_UNLINK */ +exit1: + dput(dentry); + } else { + return (-rc); + } + + spl_inode_unlock(parent.dentry->d_inode); + if (inode) + iput(inode); /* truncate the inode here */ + + path_put(&parent); + return (-rc); + +slashes: + rc = !dentry->d_inode ? -ENOENT : + S_ISDIR(dentry->d_inode->i_mode) ? -EISDIR : -ENOTDIR; + goto exit1; +} /* vn_remove() */ +EXPORT_SYMBOL(vn_remove); + +/* Based on do_rename() from linux/fs/namei.c */ +int +vn_rename(const char *oldname, const char *newname, int x1) +{ + struct dentry *old_dir, *new_dir; + struct dentry *old_dentry, *new_dentry; + struct dentry *trap; + struct path old_parent, new_parent; + int rc = 0; + + old_dentry = spl_kern_path_locked(oldname, &old_parent); + if (IS_ERR(old_dentry)) { + rc = PTR_ERR(old_dentry); + goto exit; + } + + spl_inode_unlock(old_parent.dentry->d_inode); + + new_dentry = spl_kern_path_locked(newname, &new_parent); + if (IS_ERR(new_dentry)) { + rc = PTR_ERR(new_dentry); + goto exit2; + } + + spl_inode_unlock(new_parent.dentry->d_inode); + + rc = -EXDEV; + if (old_parent.mnt != new_parent.mnt) + goto exit3; + + old_dir = old_parent.dentry; + new_dir = new_parent.dentry; + trap = lock_rename(new_dir, old_dir); + + /* source should not be ancestor of target */ + rc = -EINVAL; + if (old_dentry == trap) + goto exit4; + + /* target should not be an ancestor of source */ + rc = -ENOTEMPTY; + if (new_dentry == trap) + goto exit4; + + /* source must exist */ + rc = -ENOENT; + if (!old_dentry->d_inode) + goto exit4; + + /* unless the source is a directory trailing slashes give -ENOTDIR */ + if (!S_ISDIR(old_dentry->d_inode->i_mode)) { + rc = -ENOTDIR; + if (old_dentry->d_name.name[old_dentry->d_name.len]) + goto exit4; + if (new_dentry->d_name.name[new_dentry->d_name.len]) + goto exit4; + } + +#if defined(HAVE_4ARGS_VFS_RENAME) + rc = vfs_rename(old_dir->d_inode, old_dentry, + new_dir->d_inode, new_dentry); +#elif defined(HAVE_5ARGS_VFS_RENAME) + rc = vfs_rename(old_dir->d_inode, old_dentry, + new_dir->d_inode, new_dentry, NULL); +#else + rc = vfs_rename(old_dir->d_inode, old_dentry, + new_dir->d_inode, new_dentry, NULL, 0); +#endif +exit4: + unlock_rename(new_dir, old_dir); +exit3: + dput(new_dentry); + path_put(&new_parent); +exit2: + dput(old_dentry); + path_put(&old_parent); +exit: + return (-rc); +} +EXPORT_SYMBOL(vn_rename); + +int +vn_getattr(vnode_t *vp, vattr_t *vap, int flags, void *x3, void *x4) +{ + struct file *fp; + struct kstat stat; + int rc; + + ASSERT(vp); + ASSERT(vp->v_file); + ASSERT(vap); + + fp = vp->v_file; + +#ifdef HAVE_2ARGS_VFS_GETATTR + rc = vfs_getattr(&fp->f_path, &stat); +#else + rc = vfs_getattr(fp->f_path.mnt, fp->f_dentry, &stat); +#endif + if (rc) + return (-rc); + + vap->va_type = vn_mode_to_vtype(stat.mode); + vap->va_mode = stat.mode; + vap->va_uid = KUID_TO_SUID(stat.uid); + vap->va_gid = KGID_TO_SGID(stat.gid); + vap->va_fsid = 0; + vap->va_nodeid = stat.ino; + vap->va_nlink = stat.nlink; + vap->va_size = stat.size; + vap->va_blksize = stat.blksize; + vap->va_atime = stat.atime; + vap->va_mtime = stat.mtime; + vap->va_ctime = stat.ctime; + vap->va_rdev = stat.rdev; + vap->va_nblocks = stat.blocks; + + return (0); +} +EXPORT_SYMBOL(vn_getattr); + +int vn_fsync(vnode_t *vp, int flags, void *x3, void *x4) +{ + int datasync = 0; + int error; + int fstrans; + + ASSERT(vp); + ASSERT(vp->v_file); + + if (flags & FDSYNC) + datasync = 1; + + /* + * May enter XFS which generates a warning when PF_FSTRANS is set. + * To avoid this the flag is cleared over vfs_sync() and then reset. + */ + fstrans = spl_fstrans_check(); + if (fstrans) + current->flags &= ~(PF_FSTRANS); + + error = -spl_filp_fsync(vp->v_file, datasync); + if (fstrans) + current->flags |= PF_FSTRANS; + + return (error); +} /* vn_fsync() */ +EXPORT_SYMBOL(vn_fsync); + +int vn_space(vnode_t *vp, int cmd, struct flock *bfp, int flag, + offset_t offset, void *x6, void *x7) +{ + int error = EOPNOTSUPP; + + if (cmd != F_FREESP || bfp->l_whence != 0) + return (EOPNOTSUPP); + + ASSERT(vp); + ASSERT(vp->v_file); + ASSERT(bfp->l_start >= 0 && bfp->l_len > 0); + +#ifdef FALLOC_FL_PUNCH_HOLE + /* + * When supported by the underlying file system preferentially + * use the fallocate() callback to preallocate the space. + */ + error = -spl_filp_fallocate(vp->v_file, + FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, + bfp->l_start, bfp->l_len); + if (error == 0) + return (0); +#endif + +#ifdef HAVE_INODE_TRUNCATE_RANGE + if (vp->v_file->f_dentry && vp->v_file->f_dentry->d_inode && + vp->v_file->f_dentry->d_inode->i_op && + vp->v_file->f_dentry->d_inode->i_op->truncate_range) { + off_t end = bfp->l_start + bfp->l_len; + /* + * Judging from the code in shmem_truncate_range(), + * it seems the kernel expects the end offset to be + * inclusive and aligned to the end of a page. + */ + if (end % PAGE_SIZE != 0) { + end &= ~(off_t)(PAGE_SIZE - 1); + if (end <= bfp->l_start) + return (0); + } + --end; + + vp->v_file->f_dentry->d_inode->i_op->truncate_range( + vp->v_file->f_dentry->d_inode, + bfp->l_start, end + ); + return (0); + } +#endif + + return (error); +} +EXPORT_SYMBOL(vn_space); + +/* Function must be called while holding the vn_file_lock */ +static file_t * +file_find(int fd, struct task_struct *task) +{ + file_t *fp; + + ASSERT(spin_is_locked(&vn_file_lock)); + + list_for_each_entry(fp, &vn_file_list, f_list) { + if (fd == fp->f_fd && fp->f_task == task) { + ASSERT(atomic_read(&fp->f_ref) != 0); + return fp; + } + } + + return NULL; +} /* file_find() */ + +file_t * +vn_getf(int fd) +{ + struct kstat stat; + struct file *lfp; + file_t *fp; + vnode_t *vp; + int rc = 0; + + if (fd < 0) + return (NULL); + + /* Already open just take an extra reference */ + spin_lock(&vn_file_lock); + + fp = file_find(fd, current); + if (fp) { + atomic_inc(&fp->f_ref); + spin_unlock(&vn_file_lock); + return (fp); + } + + spin_unlock(&vn_file_lock); + + /* File was not yet opened create the object and setup */ + fp = kmem_cache_alloc(vn_file_cache, KM_SLEEP); + if (fp == NULL) + goto out; + + mutex_enter(&fp->f_lock); + + fp->f_fd = fd; + fp->f_task = current; + fp->f_offset = 0; + atomic_inc(&fp->f_ref); + + lfp = fget(fd); + if (lfp == NULL) + goto out_mutex; + + vp = vn_alloc(KM_SLEEP); + if (vp == NULL) + goto out_fget; + +#ifdef HAVE_2ARGS_VFS_GETATTR + rc = vfs_getattr(&lfp->f_path, &stat); +#else + rc = vfs_getattr(lfp->f_path.mnt, lfp->f_dentry, &stat); +#endif + if (rc) + goto out_vnode; + + mutex_enter(&vp->v_lock); + vp->v_type = vn_mode_to_vtype(stat.mode); + vp->v_file = lfp; + mutex_exit(&vp->v_lock); + + fp->f_vnode = vp; + fp->f_file = lfp; + + /* Put it on the tracking list */ + spin_lock(&vn_file_lock); + list_add(&fp->f_list, &vn_file_list); + spin_unlock(&vn_file_lock); + + mutex_exit(&fp->f_lock); + return (fp); + +out_vnode: + vn_free(vp); +out_fget: + fput(lfp); +out_mutex: + mutex_exit(&fp->f_lock); + kmem_cache_free(vn_file_cache, fp); +out: + return (NULL); +} /* getf() */ +EXPORT_SYMBOL(getf); + +static void releasef_locked(file_t *fp) +{ + ASSERT(fp->f_file); + ASSERT(fp->f_vnode); + + /* Unlinked from list, no refs, safe to free outside mutex */ + fput(fp->f_file); + vn_free(fp->f_vnode); + + kmem_cache_free(vn_file_cache, fp); +} + +void +vn_releasef(int fd) +{ + areleasef(fd, P_FINFO(current)); +} +EXPORT_SYMBOL(releasef); + +void +vn_areleasef(int fd, uf_info_t *fip) +{ + file_t *fp; + struct task_struct *task = (struct task_struct *)fip; + + if (fd < 0) + return; + + spin_lock(&vn_file_lock); + fp = file_find(fd, task); + if (fp) { + atomic_dec(&fp->f_ref); + if (atomic_read(&fp->f_ref) > 0) { + spin_unlock(&vn_file_lock); + return; + } + + list_del(&fp->f_list); + releasef_locked(fp); + } + spin_unlock(&vn_file_lock); + + return; +} /* releasef() */ +EXPORT_SYMBOL(areleasef); + + +static void +#ifdef HAVE_SET_FS_PWD_WITH_CONST +vn_set_fs_pwd(struct fs_struct *fs, const struct path *path) +#else +vn_set_fs_pwd(struct fs_struct *fs, struct path *path) +#endif /* HAVE_SET_FS_PWD_WITH_CONST */ +{ + struct path old_pwd; + +#ifdef HAVE_FS_STRUCT_SPINLOCK + spin_lock(&fs->lock); + old_pwd = fs->pwd; + fs->pwd = *path; + path_get(path); + spin_unlock(&fs->lock); +#else + write_lock(&fs->lock); + old_pwd = fs->pwd; + fs->pwd = *path; + path_get(path); + write_unlock(&fs->lock); +#endif /* HAVE_FS_STRUCT_SPINLOCK */ + + if (old_pwd.dentry) + path_put(&old_pwd); +} + +int +vn_set_pwd(const char *filename) +{ + struct path path; + mm_segment_t saved_fs; + int rc; + + /* + * user_path_dir() and __user_walk() both expect 'filename' to be + * a user space address so we must briefly increase the data segment + * size to ensure strncpy_from_user() does not fail with -EFAULT. + */ + saved_fs = get_fs(); + set_fs(get_ds()); + + rc = user_path_dir(filename, &path); + if (rc) + goto out; + + rc = inode_permission(path.dentry->d_inode, MAY_EXEC | MAY_ACCESS); + if (rc) + goto dput_and_out; + + vn_set_fs_pwd(current->fs, &path); + +dput_and_out: + path_put(&path); +out: + set_fs(saved_fs); + + return (-rc); +} /* vn_set_pwd() */ +EXPORT_SYMBOL(vn_set_pwd); + +static int +vn_cache_constructor(void *buf, void *cdrarg, int kmflags) +{ + struct vnode *vp = buf; + + mutex_init(&vp->v_lock, NULL, MUTEX_DEFAULT, NULL); + + return (0); +} /* vn_cache_constructor() */ + +static void +vn_cache_destructor(void *buf, void *cdrarg) +{ + struct vnode *vp = buf; + + mutex_destroy(&vp->v_lock); +} /* vn_cache_destructor() */ + +static int +vn_file_cache_constructor(void *buf, void *cdrarg, int kmflags) +{ + file_t *fp = buf; + + atomic_set(&fp->f_ref, 0); + mutex_init(&fp->f_lock, NULL, MUTEX_DEFAULT, NULL); + INIT_LIST_HEAD(&fp->f_list); + + return (0); +} /* file_cache_constructor() */ + +static void +vn_file_cache_destructor(void *buf, void *cdrarg) +{ + file_t *fp = buf; + + mutex_destroy(&fp->f_lock); +} /* vn_file_cache_destructor() */ + +int +spl_vn_init(void) +{ + vn_cache = kmem_cache_create("spl_vn_cache", + sizeof(struct vnode), 64, + vn_cache_constructor, + vn_cache_destructor, + NULL, NULL, NULL, KMC_KMEM); + + vn_file_cache = kmem_cache_create("spl_vn_file_cache", + sizeof(file_t), 64, + vn_file_cache_constructor, + vn_file_cache_destructor, + NULL, NULL, NULL, KMC_KMEM); + return (0); +} /* vn_init() */ + +void +spl_vn_fini(void) +{ + file_t *fp, *next_fp; + int leaked = 0; + + spin_lock(&vn_file_lock); + + list_for_each_entry_safe(fp, next_fp, &vn_file_list, f_list) { + list_del(&fp->f_list); + releasef_locked(fp); + leaked++; + } + + spin_unlock(&vn_file_lock); + + if (leaked > 0) + printk(KERN_WARNING "WARNING: %d vnode files leaked\n", leaked); + + kmem_cache_destroy(vn_file_cache); + kmem_cache_destroy(vn_cache); + + return; +} /* vn_fini() */ --- linux-4.4.0.orig/spl/module/spl/spl-xdr.c +++ linux-4.4.0/spl/module/spl/spl-xdr.c @@ -0,0 +1,514 @@ +/*****************************************************************************\ + * Copyright (c) 2008-2010 Sun Microsystems, Inc. + * Written by Ricardo Correia + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting Layer (SPL) XDR Implementation. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +/* + * SPL's XDR mem implementation. + * + * This is used by libnvpair to serialize/deserialize the name-value pair data + * structures into byte arrays in a well-defined and portable manner. + * + * These data structures are used by the DMU/ZFS to flexibly manipulate various + * information in memory and later serialize it/deserialize it to disk. + * Examples of usages include the pool configuration, lists of pool and dataset + * properties, etc. + * + * Reference documentation for the XDR representation and XDR operations can be + * found in RFC 1832 and xdr(3), respectively. + * + * === Implementation shortcomings === + * + * It is assumed that the following C types have the following sizes: + * + * char/unsigned char: 1 byte + * short/unsigned short: 2 bytes + * int/unsigned int: 4 bytes + * longlong_t/u_longlong_t: 8 bytes + * + * The C standard allows these types to be larger (and in the case of ints, + * shorter), so if that is the case on some compiler/architecture, the build + * will fail (on purpose). + * + * If someone wants to fix the code to work properly on such environments, then: + * + * 1) Preconditions should be added to xdrmem_enc functions to make sure the + * caller doesn't pass arguments which exceed the expected range. + * 2) Functions which take signed integers should be changed to properly do + * sign extension. + * 3) For ints with less than 32 bits, well.. I suspect you'll have bigger + * problems than this implementation. + * + * It is also assumed that: + * + * 1) Chars have 8 bits. + * 2) We can always do 32-bit-aligned int memory accesses and byte-aligned + * memcpy, memset and memcmp. + * 3) Arrays passed to xdr_array() are packed and the compiler/architecture + * supports element-sized-aligned memory accesses. + * 4) Negative integers are natively stored in two's complement binary + * representation. + * + * No checks are done for the 4 assumptions above, though. + * + * === Caller expectations === + * + * Existing documentation does not describe the semantics of XDR operations very + * well. Therefore, some assumptions about failure semantics will be made and + * will be described below: + * + * 1) If any encoding operation fails (e.g., due to lack of buffer space), the + * the stream should be considered valid only up to the encoding operation + * previous to the one that first failed. However, the stream size as returned + * by xdr_control() cannot be considered to be strictly correct (it may be + * bigger). + * + * Putting it another way, if there is an encoding failure it's undefined + * whether anything is added to the stream in that operation and therefore + * neither xdr_control() nor future encoding operations on the same stream can + * be relied upon to produce correct results. + * + * 2) If a decoding operation fails, it's undefined whether anything will be + * decoded into passed buffers/pointers during that operation, or what the + * values on those buffers will look like. + * + * Future decoding operations on the same stream will also have similar + * undefined behavior. + * + * 3) When the first decoding operation fails it is OK to trust the results of + * previous decoding operations on the same stream, as long as the caller + * expects a failure to be possible (e.g. due to end-of-stream). + * + * However, this is highly discouraged because the caller should know the + * stream size and should be coded to expect any decoding failure to be data + * corruption due to hardware, accidental or even malicious causes, which should + * be handled gracefully in all cases. + * + * In very rare situations where there are strong reasons to believe the data + * can be trusted to be valid and non-tampered with, then the caller may assume + * a decoding failure to be a bug (e.g. due to mismatched data types) and may + * fail non-gracefully. + * + * 4) Non-zero padding bytes will cause the decoding operation to fail. + * + * 5) Zero bytes on string types will also cause the decoding operation to fail. + * + * 6) It is assumed that either the pointer to the stream buffer given by the + * caller is 32-bit aligned or the architecture supports non-32-bit-aligned int + * memory accesses. + * + * 7) The stream buffer and encoding/decoding buffers/ptrs should not overlap. + * + * 8) If a caller passes pointers to non-kernel memory (e.g., pointers to user + * space or MMIO space), the computer may explode. + */ + +static struct xdr_ops xdrmem_encode_ops; +static struct xdr_ops xdrmem_decode_ops; + +void +xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size, + const enum xdr_op op) +{ + switch (op) { + case XDR_ENCODE: + xdrs->x_ops = &xdrmem_encode_ops; + break; + case XDR_DECODE: + xdrs->x_ops = &xdrmem_decode_ops; + break; + default: + xdrs->x_ops = NULL; /* Let the caller know we failed */ + return; + } + + xdrs->x_op = op; + xdrs->x_addr = addr; + xdrs->x_addr_end = addr + size; + + if (xdrs->x_addr_end < xdrs->x_addr) { + xdrs->x_ops = NULL; + } +} +EXPORT_SYMBOL(xdrmem_create); + +static bool_t +xdrmem_control(XDR *xdrs, int req, void *info) +{ + struct xdr_bytesrec *rec = (struct xdr_bytesrec *) info; + + if (req != XDR_GET_BYTES_AVAIL) + return FALSE; + + rec->xc_is_last_record = TRUE; /* always TRUE in xdrmem streams */ + rec->xc_num_avail = xdrs->x_addr_end - xdrs->x_addr; + + return TRUE; +} + +static bool_t +xdrmem_enc_bytes(XDR *xdrs, caddr_t cp, const uint_t cnt) +{ + uint_t size = roundup(cnt, 4); + uint_t pad; + + if (size < cnt) + return FALSE; /* Integer overflow */ + + if (xdrs->x_addr > xdrs->x_addr_end) + return FALSE; + + if (xdrs->x_addr_end - xdrs->x_addr < size) + return FALSE; + + memcpy(xdrs->x_addr, cp, cnt); + + xdrs->x_addr += cnt; + + pad = size - cnt; + if (pad > 0) { + memset(xdrs->x_addr, 0, pad); + xdrs->x_addr += pad; + } + + return TRUE; +} + +static bool_t +xdrmem_dec_bytes(XDR *xdrs, caddr_t cp, const uint_t cnt) +{ + static uint32_t zero = 0; + uint_t size = roundup(cnt, 4); + uint_t pad; + + if (size < cnt) + return FALSE; /* Integer overflow */ + + if (xdrs->x_addr > xdrs->x_addr_end) + return FALSE; + + if (xdrs->x_addr_end - xdrs->x_addr < size) + return FALSE; + + memcpy(cp, xdrs->x_addr, cnt); + xdrs->x_addr += cnt; + + pad = size - cnt; + if (pad > 0) { + /* An inverted memchr() would be useful here... */ + if (memcmp(&zero, xdrs->x_addr, pad) != 0) + return FALSE; + + xdrs->x_addr += pad; + } + + return TRUE; +} + +static bool_t +xdrmem_enc_uint32(XDR *xdrs, uint32_t val) +{ + if (xdrs->x_addr + sizeof(uint32_t) > xdrs->x_addr_end) + return FALSE; + + *((uint32_t *) xdrs->x_addr) = cpu_to_be32(val); + + xdrs->x_addr += sizeof(uint32_t); + + return TRUE; +} + +static bool_t +xdrmem_dec_uint32(XDR *xdrs, uint32_t *val) +{ + if (xdrs->x_addr + sizeof(uint32_t) > xdrs->x_addr_end) + return FALSE; + + *val = be32_to_cpu(*((uint32_t *) xdrs->x_addr)); + + xdrs->x_addr += sizeof(uint32_t); + + return TRUE; +} + +static bool_t +xdrmem_enc_char(XDR *xdrs, char *cp) +{ + uint32_t val; + + BUILD_BUG_ON(sizeof(char) != 1); + val = *((unsigned char *) cp); + + return xdrmem_enc_uint32(xdrs, val); +} + +static bool_t +xdrmem_dec_char(XDR *xdrs, char *cp) +{ + uint32_t val; + + BUILD_BUG_ON(sizeof(char) != 1); + + if (!xdrmem_dec_uint32(xdrs, &val)) + return FALSE; + + /* + * If any of the 3 other bytes are non-zero then val will be greater + * than 0xff and we fail because according to the RFC, this block does + * not have a char encoded in it. + */ + if (val > 0xff) + return FALSE; + + *((unsigned char *) cp) = val; + + return TRUE; +} + +static bool_t +xdrmem_enc_ushort(XDR *xdrs, unsigned short *usp) +{ + BUILD_BUG_ON(sizeof(unsigned short) != 2); + + return xdrmem_enc_uint32(xdrs, *usp); +} + +static bool_t +xdrmem_dec_ushort(XDR *xdrs, unsigned short *usp) +{ + uint32_t val; + + BUILD_BUG_ON(sizeof(unsigned short) != 2); + + if (!xdrmem_dec_uint32(xdrs, &val)) + return FALSE; + + /* + * Short ints are not in the RFC, but we assume similar logic as in + * xdrmem_dec_char(). + */ + if (val > 0xffff) + return FALSE; + + *usp = val; + + return TRUE; +} + +static bool_t +xdrmem_enc_uint(XDR *xdrs, unsigned *up) +{ + BUILD_BUG_ON(sizeof(unsigned) != 4); + + return xdrmem_enc_uint32(xdrs, *up); +} + +static bool_t +xdrmem_dec_uint(XDR *xdrs, unsigned *up) +{ + BUILD_BUG_ON(sizeof(unsigned) != 4); + + return xdrmem_dec_uint32(xdrs, (uint32_t *) up); +} + +static bool_t +xdrmem_enc_ulonglong(XDR *xdrs, u_longlong_t *ullp) +{ + BUILD_BUG_ON(sizeof(u_longlong_t) != 8); + + if (!xdrmem_enc_uint32(xdrs, *ullp >> 32)) + return FALSE; + + return xdrmem_enc_uint32(xdrs, *ullp & 0xffffffff); +} + +static bool_t +xdrmem_dec_ulonglong(XDR *xdrs, u_longlong_t *ullp) +{ + uint32_t low, high; + + BUILD_BUG_ON(sizeof(u_longlong_t) != 8); + + if (!xdrmem_dec_uint32(xdrs, &high)) + return FALSE; + if (!xdrmem_dec_uint32(xdrs, &low)) + return FALSE; + + *ullp = ((u_longlong_t) high << 32) | low; + + return TRUE; +} + +static bool_t +xdr_enc_array(XDR *xdrs, caddr_t *arrp, uint_t *sizep, const uint_t maxsize, + const uint_t elsize, const xdrproc_t elproc) +{ + uint_t i; + caddr_t addr = *arrp; + + if (*sizep > maxsize || *sizep > UINT_MAX / elsize) + return FALSE; + + if (!xdrmem_enc_uint(xdrs, sizep)) + return FALSE; + + for (i = 0; i < *sizep; i++) { + if (!elproc(xdrs, addr)) + return FALSE; + addr += elsize; + } + + return TRUE; +} + +static bool_t +xdr_dec_array(XDR *xdrs, caddr_t *arrp, uint_t *sizep, const uint_t maxsize, + const uint_t elsize, const xdrproc_t elproc) +{ + uint_t i, size; + bool_t alloc = FALSE; + caddr_t addr; + + if (!xdrmem_dec_uint(xdrs, sizep)) + return FALSE; + + size = *sizep; + + if (size > maxsize || size > UINT_MAX / elsize) + return FALSE; + + /* + * The Solaris man page says: "If *arrp is NULL when decoding, + * xdr_array() allocates memory and *arrp points to it". + */ + if (*arrp == NULL) { + BUILD_BUG_ON(sizeof(uint_t) > sizeof(size_t)); + + *arrp = kmem_alloc(size * elsize, KM_NOSLEEP); + if (*arrp == NULL) + return FALSE; + + alloc = TRUE; + } + + addr = *arrp; + + for (i = 0; i < size; i++) { + if (!elproc(xdrs, addr)) { + if (alloc) + kmem_free(*arrp, size * elsize); + return FALSE; + } + addr += elsize; + } + + return TRUE; +} + +static bool_t +xdr_enc_string(XDR *xdrs, char **sp, const uint_t maxsize) +{ + size_t slen = strlen(*sp); + uint_t len; + + if (slen > maxsize) + return FALSE; + + len = slen; + + if (!xdrmem_enc_uint(xdrs, &len)) + return FALSE; + + return xdrmem_enc_bytes(xdrs, *sp, len); +} + +static bool_t +xdr_dec_string(XDR *xdrs, char **sp, const uint_t maxsize) +{ + uint_t size; + bool_t alloc = FALSE; + + if (!xdrmem_dec_uint(xdrs, &size)) + return FALSE; + + if (size > maxsize || size > UINT_MAX - 1) + return FALSE; + + /* + * Solaris man page: "If *sp is NULL when decoding, xdr_string() + * allocates memory and *sp points to it". + */ + if (*sp == NULL) { + BUILD_BUG_ON(sizeof(uint_t) > sizeof(size_t)); + + *sp = kmem_alloc(size + 1, KM_NOSLEEP); + if (*sp == NULL) + return FALSE; + + alloc = TRUE; + } + + if (!xdrmem_dec_bytes(xdrs, *sp, size)) + goto fail; + + if (memchr(*sp, 0, size) != NULL) + goto fail; + + (*sp)[size] = '\0'; + + return TRUE; + +fail: + if (alloc) + kmem_free(*sp, size + 1); + + return FALSE; +} + +static struct xdr_ops xdrmem_encode_ops = { + .xdr_control = xdrmem_control, + .xdr_char = xdrmem_enc_char, + .xdr_u_short = xdrmem_enc_ushort, + .xdr_u_int = xdrmem_enc_uint, + .xdr_u_longlong_t = xdrmem_enc_ulonglong, + .xdr_opaque = xdrmem_enc_bytes, + .xdr_string = xdr_enc_string, + .xdr_array = xdr_enc_array +}; + +static struct xdr_ops xdrmem_decode_ops = { + .xdr_control = xdrmem_control, + .xdr_char = xdrmem_dec_char, + .xdr_u_short = xdrmem_dec_ushort, + .xdr_u_int = xdrmem_dec_uint, + .xdr_u_longlong_t = xdrmem_dec_ulonglong, + .xdr_opaque = xdrmem_dec_bytes, + .xdr_string = xdr_dec_string, + .xdr_array = xdr_dec_array +}; + --- linux-4.4.0.orig/spl/module/spl/spl-zlib.c +++ linux-4.4.0/spl/module/spl/spl-zlib.c @@ -0,0 +1,217 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * z_compress_level/z_uncompress are nearly identical copies of the + * compress2/uncompress functions provided by the official zlib package + * available at http://zlib.net/. The only changes made we to slightly + * adapt the functions called to match the linux kernel implementation + * of zlib. The full zlib license follows: + * + * zlib.h -- interface of the 'zlib' general purpose compression library + * version 1.2.5, April 19th, 2010 + * + * Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Jean-loup Gailly + * Mark Adler +\*****************************************************************************/ + + +#include +#include +#include +#include + +static spl_kmem_cache_t *zlib_workspace_cache; + +/* + * A kmem_cache is used for the zlib workspaces to avoid having to vmalloc + * and vfree for every call. Using a kmem_cache also has the advantage + * that improves the odds that the memory used will be local to this cpu. + * To further improve things it might be wise to create a dedicated per-cpu + * workspace for use. This would take some additional care because we then + * must disable preemption around the critical section, and verify that + * zlib_deflate* and zlib_inflate* never internally call schedule(). + */ +static void * +zlib_workspace_alloc(int flags) +{ + return kmem_cache_alloc(zlib_workspace_cache, flags & ~(__GFP_FS)); +} + +static void +zlib_workspace_free(void *workspace) +{ + kmem_cache_free(zlib_workspace_cache, workspace); +} + +/* + * Compresses the source buffer into the destination buffer. The level + * parameter has the same meaning as in deflateInit. sourceLen is the byte + * length of the source buffer. Upon entry, destLen is the total size of the + * destination buffer, which must be at least 0.1% larger than sourceLen plus + * 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. + * + * compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + * memory, Z_BUF_ERROR if there was not enough room in the output buffer, + * Z_STREAM_ERROR if the level parameter is invalid. + */ +int +z_compress_level(void *dest, size_t *destLen, const void *source, + size_t sourceLen, int level) +{ + z_stream stream; + int err; + + stream.next_in = (Byte *)source; + stream.avail_in = (uInt)sourceLen; + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + + if ((size_t)stream.avail_out != *destLen) + return Z_BUF_ERROR; + + stream.workspace = zlib_workspace_alloc(KM_SLEEP); + if (!stream.workspace) + return Z_MEM_ERROR; + + err = zlib_deflateInit(&stream, level); + if (err != Z_OK) { + zlib_workspace_free(stream.workspace); + return err; + } + + err = zlib_deflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + zlib_deflateEnd(&stream); + zlib_workspace_free(stream.workspace); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = zlib_deflateEnd(&stream); + zlib_workspace_free(stream.workspace); + + return err; +} +EXPORT_SYMBOL(z_compress_level); + +/* + * Decompresses the source buffer into the destination buffer. sourceLen is + * the byte length of the source buffer. Upon entry, destLen is the total + * size of the destination buffer, which must be large enough to hold the + * entire uncompressed data. (The size of the uncompressed data must have + * been saved previously by the compressor and transmitted to the decompressor + * by some mechanism outside the scope of this compression library.) + * Upon exit, destLen is the actual size of the compressed buffer. + * This function can be used to decompress a whole file at once if the + * input file is mmap'ed. + * + * uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + * enough memory, Z_BUF_ERROR if there was not enough room in the output + * buffer, or Z_DATA_ERROR if the input data was corrupted. + */ +int +z_uncompress(void *dest, size_t *destLen, const void *source, size_t sourceLen) +{ + z_stream stream; + int err; + + stream.next_in = (Byte *)source; + stream.avail_in = (uInt)sourceLen; + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + + if ((size_t)stream.avail_out != *destLen) + return Z_BUF_ERROR; + + stream.workspace = zlib_workspace_alloc(KM_SLEEP); + if (!stream.workspace) + return Z_MEM_ERROR; + + err = zlib_inflateInit(&stream); + if (err != Z_OK) { + zlib_workspace_free(stream.workspace); + return err; + } + + err = zlib_inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + zlib_inflateEnd(&stream); + zlib_workspace_free(stream.workspace); + + if (err == Z_NEED_DICT || + (err == Z_BUF_ERROR && stream.avail_in == 0)) + return Z_DATA_ERROR; + + return err; + } + *destLen = stream.total_out; + + err = zlib_inflateEnd(&stream); + zlib_workspace_free(stream.workspace); + + return err; +} +EXPORT_SYMBOL(z_uncompress); + +int +spl_zlib_init(void) +{ + int size; + + size = MAX(spl_zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL), + zlib_inflate_workspacesize()); + + zlib_workspace_cache = kmem_cache_create( + "spl_zlib_workspace_cache", + size, 0, NULL, NULL, NULL, NULL, NULL, + KMC_VMEM | KMC_NOEMERGENCY); + if (!zlib_workspace_cache) + return (1); + + return (0); +} + +void +spl_zlib_fini(void) +{ + kmem_cache_destroy(zlib_workspace_cache); + zlib_workspace_cache = NULL; +} --- linux-4.4.0.orig/spl/module/splat/Makefile.in +++ linux-4.4.0/spl/module/splat/Makefile.in @@ -0,0 +1,28 @@ +# Makefile.in for splat kernel module + +src = @abs_top_srcdir@/module/splat +obj = @abs_builddir@ + +MODULE := splat +EXTRA_CFLAGS = $(SPL_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +# Solaris Porting LAyer Tests +obj-$(CONFIG_SPL) := $(MODULE).o + +$(MODULE)-objs += splat-ctl.o +$(MODULE)-objs += splat-kmem.o +$(MODULE)-objs += splat-taskq.o +$(MODULE)-objs += splat-random.o +$(MODULE)-objs += splat-mutex.o +$(MODULE)-objs += splat-condvar.o +$(MODULE)-objs += splat-thread.o +$(MODULE)-objs += splat-rwlock.o +$(MODULE)-objs += splat-time.o +$(MODULE)-objs += splat-vnode.o +$(MODULE)-objs += splat-kobj.o +$(MODULE)-objs += splat-atomic.o +$(MODULE)-objs += splat-list.o +$(MODULE)-objs += splat-generic.o +$(MODULE)-objs += splat-cred.o +$(MODULE)-objs += splat-zlib.o +$(MODULE)-objs += splat-linux.o --- linux-4.4.0.orig/spl/module/splat/splat-atomic.c +++ linux-4.4.0/spl/module/splat/splat-atomic.c @@ -0,0 +1,232 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Atomic Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_ATOMIC_NAME "atomic" +#define SPLAT_ATOMIC_DESC "Kernel Atomic Tests" + +#define SPLAT_ATOMIC_TEST1_ID 0x0b01 +#define SPLAT_ATOMIC_TEST1_NAME "64-bit" +#define SPLAT_ATOMIC_TEST1_DESC "Validate 64-bit atomic ops" + +#define SPLAT_ATOMIC_TEST_MAGIC 0x43435454UL +#define SPLAT_ATOMIC_INIT_VALUE 10000000UL + +typedef enum { + SPLAT_ATOMIC_INC_64 = 0, + SPLAT_ATOMIC_DEC_64 = 1, + SPLAT_ATOMIC_ADD_64 = 2, + SPLAT_ATOMIC_SUB_64 = 3, + SPLAT_ATOMIC_ADD_64_NV = 4, + SPLAT_ATOMIC_SUB_64_NV = 5, + SPLAT_ATOMIC_COUNT_64 = 6 +} atomic_op_t; + +typedef struct atomic_priv { + unsigned long ap_magic; + struct file *ap_file; + kmutex_t ap_lock; + wait_queue_head_t ap_waitq; + volatile uint64_t ap_atomic; + volatile uint64_t ap_atomic_exited; + atomic_op_t ap_op; + +} atomic_priv_t; + +static void +splat_atomic_work(void *priv) +{ + atomic_priv_t *ap; + atomic_op_t op; + int i; + + ap = (atomic_priv_t *)priv; + ASSERT(ap->ap_magic == SPLAT_ATOMIC_TEST_MAGIC); + + mutex_enter(&ap->ap_lock); + op = ap->ap_op; + wake_up(&ap->ap_waitq); + mutex_exit(&ap->ap_lock); + + splat_vprint(ap->ap_file, SPLAT_ATOMIC_TEST1_NAME, + "Thread %d successfully started: %lu/%lu\n", op, + (long unsigned)ap->ap_atomic, + (long unsigned)ap->ap_atomic_exited); + + for (i = 0; i < SPLAT_ATOMIC_INIT_VALUE / 10; i++) { + + /* Periodically sleep to mix up the ordering */ + if ((i % (SPLAT_ATOMIC_INIT_VALUE / 100)) == 0) { + splat_vprint(ap->ap_file, SPLAT_ATOMIC_TEST1_NAME, + "Thread %d sleeping: %lu/%lu\n", op, + (long unsigned)ap->ap_atomic, + (long unsigned)ap->ap_atomic_exited); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ / 100); + } + + switch (op) { + case SPLAT_ATOMIC_INC_64: + atomic_inc_64(&ap->ap_atomic); + break; + case SPLAT_ATOMIC_DEC_64: + atomic_dec_64(&ap->ap_atomic); + break; + case SPLAT_ATOMIC_ADD_64: + atomic_add_64(&ap->ap_atomic, 3); + break; + case SPLAT_ATOMIC_SUB_64: + atomic_sub_64(&ap->ap_atomic, 3); + break; + case SPLAT_ATOMIC_ADD_64_NV: + atomic_add_64_nv(&ap->ap_atomic, 5); + break; + case SPLAT_ATOMIC_SUB_64_NV: + atomic_sub_64_nv(&ap->ap_atomic, 5); + break; + default: + PANIC("Undefined op %d\n", op); + } + } + + atomic_inc_64(&ap->ap_atomic_exited); + + splat_vprint(ap->ap_file, SPLAT_ATOMIC_TEST1_NAME, + "Thread %d successfully exited: %lu/%lu\n", op, + (long unsigned)ap->ap_atomic, + (long unsigned)ap->ap_atomic_exited); + + wake_up(&ap->ap_waitq); + thread_exit(); +} + +static int +splat_atomic_test1_cond(atomic_priv_t *ap, int started) +{ + return (ap->ap_atomic_exited == started); +} + +static int +splat_atomic_test1(struct file *file, void *arg) +{ + atomic_priv_t ap; + DEFINE_WAIT(wait); + kthread_t *thr; + int i, rc = 0; + + ap.ap_magic = SPLAT_ATOMIC_TEST_MAGIC; + ap.ap_file = file; + mutex_init(&ap.ap_lock, SPLAT_ATOMIC_TEST1_NAME, MUTEX_DEFAULT, NULL); + init_waitqueue_head(&ap.ap_waitq); + ap.ap_atomic = SPLAT_ATOMIC_INIT_VALUE; + ap.ap_atomic_exited = 0; + + for (i = 0; i < SPLAT_ATOMIC_COUNT_64; i++) { + mutex_enter(&ap.ap_lock); + ap.ap_op = i; + + thr = (kthread_t *)thread_create(NULL, 0, splat_atomic_work, + &ap, 0, &p0, TS_RUN, + defclsyspri); + if (thr == NULL) { + rc = -ESRCH; + mutex_exit(&ap.ap_lock); + break; + } + + /* Prepare to wait, the new thread will wake us once it + * has made a copy of the unique private passed data */ + prepare_to_wait(&ap.ap_waitq, &wait, TASK_UNINTERRUPTIBLE); + mutex_exit(&ap.ap_lock); + schedule(); + } + + wait_event(ap.ap_waitq, splat_atomic_test1_cond(&ap, i)); + + if (rc) { + splat_vprint(file, SPLAT_ATOMIC_TEST1_NAME, "Only started " + "%d/%d test threads\n", i, SPLAT_ATOMIC_COUNT_64); + return rc; + } + + if (ap.ap_atomic != SPLAT_ATOMIC_INIT_VALUE) { + splat_vprint(file, SPLAT_ATOMIC_TEST1_NAME, + "Final value %lu does not match initial value %lu\n", + (long unsigned)ap.ap_atomic, SPLAT_ATOMIC_INIT_VALUE); + return -EINVAL; + } + + splat_vprint(file, SPLAT_ATOMIC_TEST1_NAME, + "Success initial and final values match, %lu == %lu\n", + (long unsigned)ap.ap_atomic, SPLAT_ATOMIC_INIT_VALUE); + + mutex_destroy(&ap.ap_lock); + + return 0; +} + +splat_subsystem_t * +splat_atomic_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_ATOMIC_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_ATOMIC_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_ATOMIC; + + SPLAT_TEST_INIT(sub, SPLAT_ATOMIC_TEST1_NAME, SPLAT_ATOMIC_TEST1_DESC, + SPLAT_ATOMIC_TEST1_ID, splat_atomic_test1); + + return sub; +} + +void +splat_atomic_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_ATOMIC_TEST1_ID); + + kfree(sub); +} + +int +splat_atomic_id(void) { + return SPLAT_SUBSYSTEM_ATOMIC; +} --- linux-4.4.0.orig/spl/module/splat/splat-condvar.c +++ linux-4.4.0/spl/module/splat/splat-condvar.c @@ -0,0 +1,480 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Condition Variable Tests. +\*****************************************************************************/ + +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_CONDVAR_NAME "condvar" +#define SPLAT_CONDVAR_DESC "Kernel Condition Variable Tests" + +#define SPLAT_CONDVAR_TEST1_ID 0x0501 +#define SPLAT_CONDVAR_TEST1_NAME "signal1" +#define SPLAT_CONDVAR_TEST1_DESC "Wake a single thread, cv_wait()/cv_signal()" + +#define SPLAT_CONDVAR_TEST2_ID 0x0502 +#define SPLAT_CONDVAR_TEST2_NAME "broadcast1" +#define SPLAT_CONDVAR_TEST2_DESC "Wake all threads, cv_wait()/cv_broadcast()" + +#define SPLAT_CONDVAR_TEST3_ID 0x0503 +#define SPLAT_CONDVAR_TEST3_NAME "signal2" +#define SPLAT_CONDVAR_TEST3_DESC "Wake a single thread, cv_wait_timeout()/cv_signal()" + +#define SPLAT_CONDVAR_TEST4_ID 0x0504 +#define SPLAT_CONDVAR_TEST4_NAME "broadcast2" +#define SPLAT_CONDVAR_TEST4_DESC "Wake all threads, cv_wait_timeout()/cv_broadcast()" + +#define SPLAT_CONDVAR_TEST5_ID 0x0505 +#define SPLAT_CONDVAR_TEST5_NAME "timeout" +#define SPLAT_CONDVAR_TEST5_DESC "Timeout thread, cv_wait_timeout()" + +#define SPLAT_CONDVAR_TEST_MAGIC 0x115599DDUL +#define SPLAT_CONDVAR_TEST_NAME "condvar" +#define SPLAT_CONDVAR_TEST_COUNT 8 + +typedef struct condvar_priv { + unsigned long cv_magic; + struct file *cv_file; + kcondvar_t cv_condvar; + kmutex_t cv_mtx; +} condvar_priv_t; + +typedef struct condvar_thr { + const char *ct_name; + condvar_priv_t *ct_cvp; + struct task_struct *ct_thread; + int ct_rc; +} condvar_thr_t; + +int +splat_condvar_test12_thread(void *arg) +{ + condvar_thr_t *ct = (condvar_thr_t *)arg; + condvar_priv_t *cv = ct->ct_cvp; + + ASSERT(cv->cv_magic == SPLAT_CONDVAR_TEST_MAGIC); + + mutex_enter(&cv->cv_mtx); + splat_vprint(cv->cv_file, ct->ct_name, + "%s thread sleeping with %d waiters\n", + ct->ct_thread->comm, atomic_read(&cv->cv_condvar.cv_waiters)); + cv_wait(&cv->cv_condvar, &cv->cv_mtx); + splat_vprint(cv->cv_file, ct->ct_name, + "%s thread woken %d waiters remain\n", + ct->ct_thread->comm, atomic_read(&cv->cv_condvar.cv_waiters)); + mutex_exit(&cv->cv_mtx); + + return 0; +} + +static int +splat_condvar_test1(struct file *file, void *arg) +{ + int i, count = 0, rc = 0; + condvar_thr_t ct[SPLAT_CONDVAR_TEST_COUNT]; + condvar_priv_t cv; + + cv.cv_magic = SPLAT_CONDVAR_TEST_MAGIC; + cv.cv_file = file; + mutex_init(&cv.cv_mtx, SPLAT_CONDVAR_TEST_NAME, MUTEX_DEFAULT, NULL); + cv_init(&cv.cv_condvar, NULL, CV_DEFAULT, NULL); + + /* Create some threads, the exact number isn't important just as + * long as we know how many we managed to create and should expect. */ + for (i = 0; i < SPLAT_CONDVAR_TEST_COUNT; i++) { + ct[i].ct_cvp = &cv; + ct[i].ct_name = SPLAT_CONDVAR_TEST1_NAME; + ct[i].ct_rc = 0; + ct[i].ct_thread = spl_kthread_create(splat_condvar_test12_thread, + &ct[i], "%s/%d", SPLAT_CONDVAR_TEST_NAME, i); + + if (!IS_ERR(ct[i].ct_thread)) { + wake_up_process(ct[i].ct_thread); + count++; + } + } + + /* Wait until all threads are waiting on the condition variable */ + while (atomic_read(&cv.cv_condvar.cv_waiters) != count) + schedule(); + + /* Wake a single thread at a time, wait until it exits */ + for (i = 1; i <= count; i++) { + cv_signal(&cv.cv_condvar); + + while (atomic_read(&cv.cv_condvar.cv_waiters) > (count - i)) + schedule(); + + /* Correct behavior 1 thread woken */ + if (atomic_read(&cv.cv_condvar.cv_waiters) == (count - i)) + continue; + + splat_vprint(file, SPLAT_CONDVAR_TEST1_NAME, "Attempted to " + "wake %d thread but work %d threads woke\n", + 1, count - atomic_read(&cv.cv_condvar.cv_waiters)); + rc = -EINVAL; + break; + } + + if (!rc) + splat_vprint(file, SPLAT_CONDVAR_TEST1_NAME, "Correctly woke " + "%d sleeping threads %d at a time\n", count, 1); + + /* Wait until that last nutex is dropped */ + while (mutex_owner(&cv.cv_mtx)) + schedule(); + + /* Wake everything for the failure case */ + cv_broadcast(&cv.cv_condvar); + cv_destroy(&cv.cv_condvar); + mutex_destroy(&cv.cv_mtx); + + return rc; +} + +static int +splat_condvar_test2(struct file *file, void *arg) +{ + int i, count = 0, rc = 0; + condvar_thr_t ct[SPLAT_CONDVAR_TEST_COUNT]; + condvar_priv_t cv; + + cv.cv_magic = SPLAT_CONDVAR_TEST_MAGIC; + cv.cv_file = file; + mutex_init(&cv.cv_mtx, SPLAT_CONDVAR_TEST_NAME, MUTEX_DEFAULT, NULL); + cv_init(&cv.cv_condvar, NULL, CV_DEFAULT, NULL); + + /* Create some threads, the exact number isn't important just as + * long as we know how many we managed to create and should expect. */ + for (i = 0; i < SPLAT_CONDVAR_TEST_COUNT; i++) { + ct[i].ct_cvp = &cv; + ct[i].ct_name = SPLAT_CONDVAR_TEST2_NAME; + ct[i].ct_rc = 0; + ct[i].ct_thread = spl_kthread_create(splat_condvar_test12_thread, + &ct[i], "%s/%d", SPLAT_CONDVAR_TEST_NAME, i); + + if (!IS_ERR(ct[i].ct_thread)) { + wake_up_process(ct[i].ct_thread); + count++; + } + } + + /* Wait until all threads are waiting on the condition variable */ + while (atomic_read(&cv.cv_condvar.cv_waiters) != count) + schedule(); + + /* Wake all threads waiting on the condition variable */ + cv_broadcast(&cv.cv_condvar); + + /* Wait until all threads have exited */ + while ((atomic_read(&cv.cv_condvar.cv_waiters) > 0) || mutex_owner(&cv.cv_mtx)) + schedule(); + + splat_vprint(file, SPLAT_CONDVAR_TEST2_NAME, "Correctly woke all " + "%d sleeping threads at once\n", count); + + /* Wake everything for the failure case */ + cv_destroy(&cv.cv_condvar); + mutex_destroy(&cv.cv_mtx); + + return rc; +} + +int +splat_condvar_test34_thread(void *arg) +{ + condvar_thr_t *ct = (condvar_thr_t *)arg; + condvar_priv_t *cv = ct->ct_cvp; + clock_t rc; + + ASSERT(cv->cv_magic == SPLAT_CONDVAR_TEST_MAGIC); + + mutex_enter(&cv->cv_mtx); + splat_vprint(cv->cv_file, ct->ct_name, + "%s thread sleeping with %d waiters\n", + ct->ct_thread->comm, atomic_read(&cv->cv_condvar.cv_waiters)); + + /* Sleep no longer than 3 seconds, for this test we should + * actually never sleep that long without being woken up. */ + rc = cv_timedwait(&cv->cv_condvar, &cv->cv_mtx, lbolt + HZ * 3); + if (rc == -1) { + ct->ct_rc = -ETIMEDOUT; + splat_vprint(cv->cv_file, ct->ct_name, "%s thread timed out, " + "should have been woken\n", ct->ct_thread->comm); + } else { + splat_vprint(cv->cv_file, ct->ct_name, + "%s thread woken %d waiters remain\n", + ct->ct_thread->comm, + atomic_read(&cv->cv_condvar.cv_waiters)); + } + + mutex_exit(&cv->cv_mtx); + + return 0; +} + +static int +splat_condvar_test3(struct file *file, void *arg) +{ + int i, count = 0, rc = 0; + condvar_thr_t ct[SPLAT_CONDVAR_TEST_COUNT]; + condvar_priv_t cv; + + cv.cv_magic = SPLAT_CONDVAR_TEST_MAGIC; + cv.cv_file = file; + mutex_init(&cv.cv_mtx, SPLAT_CONDVAR_TEST_NAME, MUTEX_DEFAULT, NULL); + cv_init(&cv.cv_condvar, NULL, CV_DEFAULT, NULL); + + /* Create some threads, the exact number isn't important just as + * long as we know how many we managed to create and should expect. */ + for (i = 0; i < SPLAT_CONDVAR_TEST_COUNT; i++) { + ct[i].ct_cvp = &cv; + ct[i].ct_name = SPLAT_CONDVAR_TEST3_NAME; + ct[i].ct_rc = 0; + ct[i].ct_thread = spl_kthread_create(splat_condvar_test34_thread, + &ct[i], "%s/%d", SPLAT_CONDVAR_TEST_NAME, i); + + if (!IS_ERR(ct[i].ct_thread)) { + wake_up_process(ct[i].ct_thread); + count++; + } + } + + /* Wait until all threads are waiting on the condition variable */ + while (atomic_read(&cv.cv_condvar.cv_waiters) != count) + schedule(); + + /* Wake a single thread at a time, wait until it exits */ + for (i = 1; i <= count; i++) { + cv_signal(&cv.cv_condvar); + + while (atomic_read(&cv.cv_condvar.cv_waiters) > (count - i)) + schedule(); + + /* Correct behavior 1 thread woken */ + if (atomic_read(&cv.cv_condvar.cv_waiters) == (count - i)) + continue; + + splat_vprint(file, SPLAT_CONDVAR_TEST3_NAME, "Attempted to " + "wake %d thread but work %d threads woke\n", + 1, count - atomic_read(&cv.cv_condvar.cv_waiters)); + rc = -EINVAL; + break; + } + + /* Validate no waiting thread timed out early */ + for (i = 0; i < count; i++) + if (ct[i].ct_rc) + rc = ct[i].ct_rc; + + if (!rc) + splat_vprint(file, SPLAT_CONDVAR_TEST3_NAME, "Correctly woke " + "%d sleeping threads %d at a time\n", count, 1); + + /* Wait until that last nutex is dropped */ + while (mutex_owner(&cv.cv_mtx)) + schedule(); + + /* Wake everything for the failure case */ + cv_broadcast(&cv.cv_condvar); + cv_destroy(&cv.cv_condvar); + mutex_destroy(&cv.cv_mtx); + + return rc; +} + +static int +splat_condvar_test4(struct file *file, void *arg) +{ + int i, count = 0, rc = 0; + condvar_thr_t ct[SPLAT_CONDVAR_TEST_COUNT]; + condvar_priv_t cv; + + cv.cv_magic = SPLAT_CONDVAR_TEST_MAGIC; + cv.cv_file = file; + mutex_init(&cv.cv_mtx, SPLAT_CONDVAR_TEST_NAME, MUTEX_DEFAULT, NULL); + cv_init(&cv.cv_condvar, NULL, CV_DEFAULT, NULL); + + /* Create some threads, the exact number isn't important just as + * long as we know how many we managed to create and should expect. */ + for (i = 0; i < SPLAT_CONDVAR_TEST_COUNT; i++) { + ct[i].ct_cvp = &cv; + ct[i].ct_name = SPLAT_CONDVAR_TEST3_NAME; + ct[i].ct_rc = 0; + ct[i].ct_thread = spl_kthread_create(splat_condvar_test34_thread, + &ct[i], "%s/%d", SPLAT_CONDVAR_TEST_NAME, i); + + if (!IS_ERR(ct[i].ct_thread)) { + wake_up_process(ct[i].ct_thread); + count++; + } + } + + /* Wait until all threads are waiting on the condition variable */ + while (atomic_read(&cv.cv_condvar.cv_waiters) != count) + schedule(); + + /* Wake a single thread at a time, wait until it exits */ + for (i = 1; i <= count; i++) { + cv_signal(&cv.cv_condvar); + + while (atomic_read(&cv.cv_condvar.cv_waiters) > (count - i)) + schedule(); + + /* Correct behavior 1 thread woken */ + if (atomic_read(&cv.cv_condvar.cv_waiters) == (count - i)) + continue; + + splat_vprint(file, SPLAT_CONDVAR_TEST3_NAME, "Attempted to " + "wake %d thread but work %d threads woke\n", + 1, count - atomic_read(&cv.cv_condvar.cv_waiters)); + rc = -EINVAL; + break; + } + + /* Validate no waiting thread timed out early */ + for (i = 0; i < count; i++) + if (ct[i].ct_rc) + rc = ct[i].ct_rc; + + if (!rc) + splat_vprint(file, SPLAT_CONDVAR_TEST3_NAME, "Correctly woke " + "%d sleeping threads %d at a time\n", count, 1); + + /* Wait until that last nutex is dropped */ + while (mutex_owner(&cv.cv_mtx)) + schedule(); + + /* Wake everything for the failure case */ + cv_broadcast(&cv.cv_condvar); + cv_destroy(&cv.cv_condvar); + mutex_destroy(&cv.cv_mtx); + + return rc; +} + +static int +splat_condvar_test5(struct file *file, void *arg) +{ + kcondvar_t condvar; + kmutex_t mtx; + clock_t time_left, time_before, time_after, time_delta; + int64_t whole_delta; + int32_t remain_delta; + int rc = 0; + + mutex_init(&mtx, SPLAT_CONDVAR_TEST_NAME, MUTEX_DEFAULT, NULL); + cv_init(&condvar, NULL, CV_DEFAULT, NULL); + + splat_vprint(file, SPLAT_CONDVAR_TEST5_NAME, "Thread going to sleep for " + "%d second and expecting to be woken by timeout\n", 1); + + /* Allow a 1 second timeout, plenty long to validate correctness. */ + time_before = lbolt; + mutex_enter(&mtx); + time_left = cv_timedwait(&condvar, &mtx, lbolt + HZ); + mutex_exit(&mtx); + time_after = lbolt; + time_delta = time_after - time_before; /* XXX - Handle jiffie wrap */ + whole_delta = time_delta; + remain_delta = do_div(whole_delta, HZ); + + if (time_left == -1) { + if (time_delta >= HZ) { + splat_vprint(file, SPLAT_CONDVAR_TEST5_NAME, + "Thread correctly timed out and was asleep " + "for %d.%d seconds (%d second min)\n", + (int)whole_delta, remain_delta, 1); + } else { + splat_vprint(file, SPLAT_CONDVAR_TEST5_NAME, + "Thread correctly timed out but was only " + "asleep for %d.%d seconds (%d second " + "min)\n", (int)whole_delta, remain_delta, 1); + rc = -ETIMEDOUT; + } + } else { + splat_vprint(file, SPLAT_CONDVAR_TEST5_NAME, + "Thread exited after only %d.%d seconds, it " + "did not hit the %d second timeout\n", + (int)whole_delta, remain_delta, 1); + rc = -ETIMEDOUT; + } + + cv_destroy(&condvar); + mutex_destroy(&mtx); + + return rc; +} + +splat_subsystem_t * +splat_condvar_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_CONDVAR_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_CONDVAR_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_CONDVAR; + + SPLAT_TEST_INIT(sub, SPLAT_CONDVAR_TEST1_NAME, SPLAT_CONDVAR_TEST1_DESC, + SPLAT_CONDVAR_TEST1_ID, splat_condvar_test1); + SPLAT_TEST_INIT(sub, SPLAT_CONDVAR_TEST2_NAME, SPLAT_CONDVAR_TEST2_DESC, + SPLAT_CONDVAR_TEST2_ID, splat_condvar_test2); + SPLAT_TEST_INIT(sub, SPLAT_CONDVAR_TEST3_NAME, SPLAT_CONDVAR_TEST3_DESC, + SPLAT_CONDVAR_TEST3_ID, splat_condvar_test3); + SPLAT_TEST_INIT(sub, SPLAT_CONDVAR_TEST4_NAME, SPLAT_CONDVAR_TEST4_DESC, + SPLAT_CONDVAR_TEST4_ID, splat_condvar_test4); + SPLAT_TEST_INIT(sub, SPLAT_CONDVAR_TEST5_NAME, SPLAT_CONDVAR_TEST5_DESC, + SPLAT_CONDVAR_TEST5_ID, splat_condvar_test5); + + return sub; +} + +void +splat_condvar_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_CONDVAR_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_CONDVAR_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_CONDVAR_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_CONDVAR_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_CONDVAR_TEST1_ID); + + kfree(sub); +} + +int +splat_condvar_id(void) { + return SPLAT_SUBSYSTEM_CONDVAR; +} --- linux-4.4.0.orig/spl/module/splat/splat-cred.c +++ linux-4.4.0/spl/module/splat/splat-cred.c @@ -0,0 +1,298 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Credential Tests. +\*****************************************************************************/ + +#include +#include +#include "splat-internal.h" + +#define SPLAT_CRED_NAME "cred" +#define SPLAT_CRED_DESC "Kernel Cred Tests" + +#define SPLAT_CRED_TEST1_ID 0x0e01 +#define SPLAT_CRED_TEST1_NAME "cred" +#define SPLAT_CRED_TEST1_DESC "Task Credential Test" + +#define SPLAT_CRED_TEST2_ID 0x0e02 +#define SPLAT_CRED_TEST2_NAME "kcred" +#define SPLAT_CRED_TEST2_DESC "Kernel Credential Test" + +#define SPLAT_CRED_TEST3_ID 0x0e03 +#define SPLAT_CRED_TEST3_NAME "groupmember" +#define SPLAT_CRED_TEST3_DESC "Group Member Test" + +#define GROUP_STR_SIZE 128 +#define GROUP_STR_REDZONE 16 + +static int +splat_cred_test1(struct file *file, void *arg) +{ + char str[GROUP_STR_SIZE]; + uid_t uid, ruid, suid; + gid_t gid, rgid, sgid, *groups; + int ngroups, i, count = 0; + + uid = crgetuid(CRED()); + ruid = crgetruid(CRED()); + suid = crgetsuid(CRED()); + + gid = crgetgid(CRED()); + rgid = crgetrgid(CRED()); + sgid = crgetsgid(CRED()); + + crhold(CRED()); + ngroups = crgetngroups(CRED()); + groups = crgetgroups(CRED()); + + memset(str, 0, GROUP_STR_SIZE); + for (i = 0; i < ngroups; i++) { + count += sprintf(str + count, "%d ", groups[i]); + + if (count > (GROUP_STR_SIZE - GROUP_STR_REDZONE)) { + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "Failed too many group entries for temp " + "buffer: %d, %s\n", ngroups, str); + return -ENOSPC; + } + } + + crfree(CRED()); + + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "uid: %d ruid: %d suid: %d " + "gid: %d rgid: %d sgid: %d\n", + uid, ruid, suid, gid, rgid, sgid); + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "ngroups: %d groups: %s\n", ngroups, str); + + if (uid || ruid || suid || gid || rgid || sgid) { + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "Failed expected all uids+gids to be %d\n", 0); + return -EIDRM; + } + + if (ngroups > NGROUPS_MAX) { + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "Failed ngroups must not exceed NGROUPS_MAX: " + "%d > %d\n", ngroups, NGROUPS_MAX); + return -EIDRM; + } + + splat_vprint(file, SPLAT_CRED_TEST1_NAME, + "Success sane CRED(): %d\n", 0); + + return 0; +} /* splat_cred_test1() */ + +static int +splat_cred_test2(struct file *file, void *arg) +{ + char str[GROUP_STR_SIZE]; + uid_t uid, ruid, suid; + gid_t gid, rgid, sgid, *groups; + int ngroups, i, count = 0; + + uid = crgetuid(kcred); + ruid = crgetruid(kcred); + suid = crgetsuid(kcred); + + gid = crgetgid(kcred); + rgid = crgetrgid(kcred); + sgid = crgetsgid(kcred); + + crhold(kcred); + ngroups = crgetngroups(kcred); + groups = crgetgroups(kcred); + + memset(str, 0, GROUP_STR_SIZE); + for (i = 0; i < ngroups; i++) { + count += sprintf(str + count, "%d ", groups[i]); + + if (count > (GROUP_STR_SIZE - GROUP_STR_REDZONE)) { + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "Failed too many group entries for temp " + "buffer: %d, %s\n", ngroups, str); + return -ENOSPC; + } + } + + crfree(kcred); + + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "uid: %d ruid: %d suid: %d " + "gid: %d rgid: %d sgid: %d\n", + uid, ruid, suid, gid, rgid, sgid); + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "ngroups: %d groups: %s\n", ngroups, str); + + if (uid || ruid || suid || gid || rgid || sgid) { + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "Failed expected all uids+gids to be %d\n", 0); + return -EIDRM; + } + + if (ngroups > NGROUPS_MAX) { + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "Failed ngroups must not exceed NGROUPS_MAX: " + "%d > %d\n", ngroups, NGROUPS_MAX); + return -EIDRM; + } + + splat_vprint(file, SPLAT_CRED_TEST2_NAME, + "Success sane kcred: %d\n", 0); + + return 0; +} /* splat_cred_test2() */ + +/* + * Verify the groupmember() works correctly by constructing an interesting + * CRED() and checking that the expected gids are part of it. + */ +static int +splat_cred_test3(struct file *file, void *arg) +{ + gid_t known_gid, missing_gid, tmp_gid; + unsigned char rnd; + struct group_info *gi; + int i, rc; + + get_random_bytes((void *)&rnd, 1); + known_gid = (rnd > 0) ? rnd : 1; + missing_gid = 0; + + /* + * Create an interesting known set of gids for test purposes. The + * gids are pseudo randomly selected are will be in the range of + * 1:(NGROUPS_MAX-1). Gid 0 is explicitly avoided so we can reliably + * test for its absence in the test cases. + */ + gi = groups_alloc(NGROUPS_SMALL); + if (gi == NULL) { + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Failed create " + "group_info for known gids: %d\n", -ENOMEM); + rc = -ENOMEM; + goto show_groups; + } + + for (i = 0, tmp_gid = known_gid; i < NGROUPS_SMALL; i++) { + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Adding gid %d " + "to current CRED() (%d/%d)\n", tmp_gid, i, gi->ngroups); +#ifdef HAVE_KUIDGID_T + GROUP_AT(gi, i) = make_kgid(current_user_ns(), tmp_gid); +#else + GROUP_AT(gi, i) = tmp_gid; +#endif /* HAVE_KUIDGID_T */ + tmp_gid = ((tmp_gid * 17) % (NGROUPS_MAX - 1)) + 1; + } + + /* Set the new groups in the CRED() and release our reference. */ + rc = set_current_groups(gi); + put_group_info(gi); + + if (rc) { + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Failed to add " + "gid %d to current group: %d\n", known_gid, rc); + goto show_groups; + } + + /* Verify groupmember() finds the known_gid in the CRED() */ + rc = groupmember(known_gid, CRED()); + if (!rc) { + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Failed to find " + "known gid %d in CRED()'s groups.\n", known_gid); + rc = -EIDRM; + goto show_groups; + } + + /* Verify groupmember() does NOT finds the missing gid in the CRED() */ + rc = groupmember(missing_gid, CRED()); + if (rc) { + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Failed missing " + "gid %d was found in CRED()'s groups.\n", missing_gid); + rc = -EIDRM; + goto show_groups; + } + + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "Success groupmember() " + "correctly detects expected gids in CRED(): %d\n", rc); + +show_groups: + if (rc) { + int i, grps = crgetngroups(CRED()); + + splat_vprint(file, SPLAT_CRED_TEST3_NAME, "%d groups: ", grps); + for (i = 0; i < grps; i++) + splat_print(file, "%d ", crgetgroups(CRED())[i]); + splat_print(file, "%s", "\n"); + } + + + return (rc); +} /* splat_cred_test3() */ + +splat_subsystem_t * +splat_cred_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_CRED_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_CRED_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_CRED; + + SPLAT_TEST_INIT(sub, SPLAT_CRED_TEST1_NAME, SPLAT_CRED_TEST1_DESC, + SPLAT_CRED_TEST1_ID, splat_cred_test1); + SPLAT_TEST_INIT(sub, SPLAT_CRED_TEST2_NAME, SPLAT_CRED_TEST2_DESC, + SPLAT_CRED_TEST2_ID, splat_cred_test2); + SPLAT_TEST_INIT(sub, SPLAT_CRED_TEST3_NAME, SPLAT_CRED_TEST3_DESC, + SPLAT_CRED_TEST3_ID, splat_cred_test3); + + return sub; +} /* splat_cred_init() */ + +void +splat_cred_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_CRED_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_CRED_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_CRED_TEST1_ID); + + kfree(sub); +} /* splat_cred_fini() */ + +int +splat_cred_id(void) +{ + return SPLAT_SUBSYSTEM_CRED; +} /* splat_cred_id() */ --- linux-4.4.0.orig/spl/module/splat/splat-ctl.c +++ linux-4.4.0/spl/module/splat/splat-ctl.c @@ -0,0 +1,671 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Test Control Interface. + * + * The 'splat' (Solaris Porting LAyer Tests) module is designed as a + * framework which runs various in kernel regression tests to validate + * the SPL primitives honor the Solaris ABI. + * + * The splat module is constructed of various splat_* source files each + * of which contain regression tests for a particular subsystem. For + * example, the splat_kmem.c file contains all the tests for validating + * the kmem interfaces have been implemented correctly. When the splat + * module is loaded splat_*_init() will be called for each subsystems + * tests. It is the responsibility of splat_*_init() to register all + * the tests for this subsystem using the SPLAT_TEST_INIT() macro. + * Similarly splat_*_fini() is called when the splat module is removed + * and is responsible for unregistering its tests via the SPLAT_TEST_FINI + * macro. Once a test is registered it can then be run with an ioctl() + * call which specifies the subsystem and test to be run. The provided + * splat command line tool can be used to display all available + * subsystems and tests. It can also be used to run the full suite + * of regression tests or particular tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "splat-internal.h" + +static struct list_head splat_module_list; +static spinlock_t splat_module_lock; + +static int +splat_open(struct inode *inode, struct file *file) +{ + splat_info_t *info; + + info = (splat_info_t *)kmalloc(sizeof(*info), GFP_KERNEL); + if (info == NULL) + return -ENOMEM; + + mutex_init(&info->info_lock, SPLAT_NAME, MUTEX_DEFAULT, NULL); + info->info_size = SPLAT_INFO_BUFFER_SIZE; + info->info_buffer = (char *)vmalloc(SPLAT_INFO_BUFFER_SIZE); + if (info->info_buffer == NULL) { + kfree(info); + return -ENOMEM; + } + memset(info->info_buffer, 0, info->info_size); + + info->info_head = info->info_buffer; + file->private_data = (void *)info; + + splat_print(file, "%s\n", spl_version); + + return 0; +} + +static int +splat_release(struct inode *inode, struct file *file) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_destroy(&info->info_lock); + vfree(info->info_buffer); + kfree(info); + + return 0; +} + +static int +splat_buffer_clear(struct file *file, splat_cfg_t *kcfg, unsigned long arg) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_enter(&info->info_lock); + memset(info->info_buffer, 0, info->info_size); + info->info_head = info->info_buffer; + mutex_exit(&info->info_lock); + + return 0; +} + +static int +splat_buffer_size(struct file *file, splat_cfg_t *kcfg, unsigned long arg) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + char *buf; + int min, size, rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_enter(&info->info_lock); + if (kcfg->cfg_arg1 > 0) { + + size = kcfg->cfg_arg1; + buf = (char *)vmalloc(size); + if (buf == NULL) { + rc = -ENOMEM; + goto out; + } + + /* Zero fill and truncate contents when coping buffer */ + min = ((size < info->info_size) ? size : info->info_size); + memset(buf, 0, size); + memcpy(buf, info->info_buffer, min); + vfree(info->info_buffer); + info->info_size = size; + info->info_buffer = buf; + info->info_head = info->info_buffer; + } + + kcfg->cfg_rc1 = info->info_size; + + if (copy_to_user((struct splat_cfg_t __user *)arg, kcfg, sizeof(*kcfg))) + rc = -EFAULT; +out: + mutex_exit(&info->info_lock); + + return rc; +} + + +static splat_subsystem_t * +splat_subsystem_find(int id) { + splat_subsystem_t *sub; + + spin_lock(&splat_module_lock); + list_for_each_entry(sub, &splat_module_list, subsystem_list) { + if (id == sub->desc.id) { + spin_unlock(&splat_module_lock); + return sub; + } + } + spin_unlock(&splat_module_lock); + + return NULL; +} + +static int +splat_subsystem_count(splat_cfg_t *kcfg, unsigned long arg) +{ + splat_subsystem_t *sub; + int i = 0; + + spin_lock(&splat_module_lock); + list_for_each_entry(sub, &splat_module_list, subsystem_list) + i++; + + spin_unlock(&splat_module_lock); + kcfg->cfg_rc1 = i; + + if (copy_to_user((struct splat_cfg_t __user *)arg, kcfg, sizeof(*kcfg))) + return -EFAULT; + + return 0; +} + +static int +splat_subsystem_list(splat_cfg_t *kcfg, unsigned long arg) +{ + splat_subsystem_t *sub; + splat_cfg_t *tmp; + int size, i = 0; + + /* Structure will be sized large enough for N subsystem entries + * which is passed in by the caller. On exit the number of + * entries filled in with valid subsystems will be stored in + * cfg_rc1. If the caller does not provide enough entries + * for all subsystems we will truncate the list to avoid overrun. + */ + size = sizeof(*tmp) + kcfg->cfg_data.splat_subsystems.size * + sizeof(splat_user_t); + tmp = kmalloc(size, GFP_KERNEL); + if (tmp == NULL) + return -ENOMEM; + + /* Local 'tmp' is used as the structure copied back to user space */ + memset(tmp, 0, size); + memcpy(tmp, kcfg, sizeof(*kcfg)); + + spin_lock(&splat_module_lock); + list_for_each_entry(sub, &splat_module_list, subsystem_list) { + strncpy(tmp->cfg_data.splat_subsystems.descs[i].name, + sub->desc.name, SPLAT_NAME_SIZE); + strncpy(tmp->cfg_data.splat_subsystems.descs[i].desc, + sub->desc.desc, SPLAT_DESC_SIZE); + tmp->cfg_data.splat_subsystems.descs[i].id = sub->desc.id; + + /* Truncate list if we are about to overrun alloc'ed memory */ + if ((i++) == kcfg->cfg_data.splat_subsystems.size) + break; + } + spin_unlock(&splat_module_lock); + tmp->cfg_rc1 = i; + + if (copy_to_user((struct splat_cfg_t __user *)arg, tmp, size)) { + kfree(tmp); + return -EFAULT; + } + + kfree(tmp); + return 0; +} + +static int +splat_test_count(splat_cfg_t *kcfg, unsigned long arg) +{ + splat_subsystem_t *sub; + splat_test_t *test; + int i = 0; + + /* Subsystem ID passed as arg1 */ + sub = splat_subsystem_find(kcfg->cfg_arg1); + if (sub == NULL) + return -EINVAL; + + spin_lock(&(sub->test_lock)); + list_for_each_entry(test, &(sub->test_list), test_list) + i++; + + spin_unlock(&(sub->test_lock)); + kcfg->cfg_rc1 = i; + + if (copy_to_user((struct splat_cfg_t __user *)arg, kcfg, sizeof(*kcfg))) + return -EFAULT; + + return 0; +} + +static int +splat_test_list(splat_cfg_t *kcfg, unsigned long arg) +{ + splat_subsystem_t *sub; + splat_test_t *test; + splat_cfg_t *tmp; + int size, i = 0; + + /* Subsystem ID passed as arg1 */ + sub = splat_subsystem_find(kcfg->cfg_arg1); + if (sub == NULL) + return -EINVAL; + + /* Structure will be sized large enough for N test entries + * which is passed in by the caller. On exit the number of + * entries filled in with valid tests will be stored in + * cfg_rc1. If the caller does not provide enough entries + * for all tests we will truncate the list to avoid overrun. + */ + size = sizeof(*tmp)+kcfg->cfg_data.splat_tests.size*sizeof(splat_user_t); + tmp = kmalloc(size, GFP_KERNEL); + if (tmp == NULL) + return -ENOMEM; + + /* Local 'tmp' is used as the structure copied back to user space */ + memset(tmp, 0, size); + memcpy(tmp, kcfg, sizeof(*kcfg)); + + spin_lock(&(sub->test_lock)); + list_for_each_entry(test, &(sub->test_list), test_list) { + strncpy(tmp->cfg_data.splat_tests.descs[i].name, + test->desc.name, SPLAT_NAME_SIZE); + strncpy(tmp->cfg_data.splat_tests.descs[i].desc, + test->desc.desc, SPLAT_DESC_SIZE); + tmp->cfg_data.splat_tests.descs[i].id = test->desc.id; + + /* Truncate list if we are about to overrun alloc'ed memory */ + if ((i++) == kcfg->cfg_data.splat_tests.size) + break; + } + spin_unlock(&(sub->test_lock)); + tmp->cfg_rc1 = i; + + if (copy_to_user((struct splat_cfg_t __user *)arg, tmp, size)) { + kfree(tmp); + return -EFAULT; + } + + kfree(tmp); + return 0; +} + +static int +splat_validate(struct file *file, splat_subsystem_t *sub, int cmd, void *arg) +{ + splat_test_t *test; + + spin_lock(&(sub->test_lock)); + list_for_each_entry(test, &(sub->test_list), test_list) { + if (test->desc.id == cmd) { + spin_unlock(&(sub->test_lock)); + return test->test(file, arg); + } + } + spin_unlock(&(sub->test_lock)); + + return -EINVAL; +} + +static int +splat_ioctl_cfg(struct file *file, unsigned int cmd, unsigned long arg) +{ + splat_cfg_t kcfg; + int rc = 0; + + /* User and kernel space agree about arg size */ + if (_IOC_SIZE(cmd) != sizeof(kcfg)) + return -EBADMSG; + + if (copy_from_user(&kcfg, (splat_cfg_t *)arg, sizeof(kcfg))) + return -EFAULT; + + if (kcfg.cfg_magic != SPLAT_CFG_MAGIC) { + splat_print(file, "Bad config magic 0x%x != 0x%x\n", + kcfg.cfg_magic, SPLAT_CFG_MAGIC); + return -EINVAL; + } + + switch (kcfg.cfg_cmd) { + case SPLAT_CFG_BUFFER_CLEAR: + /* cfg_arg1 - Unused + * cfg_rc1 - Unused + */ + rc = splat_buffer_clear(file, &kcfg, arg); + break; + case SPLAT_CFG_BUFFER_SIZE: + /* cfg_arg1 - 0 - query size; >0 resize + * cfg_rc1 - Set to current buffer size + */ + rc = splat_buffer_size(file, &kcfg, arg); + break; + case SPLAT_CFG_SUBSYSTEM_COUNT: + /* cfg_arg1 - Unused + * cfg_rc1 - Set to number of subsystems + */ + rc = splat_subsystem_count(&kcfg, arg); + break; + case SPLAT_CFG_SUBSYSTEM_LIST: + /* cfg_arg1 - Unused + * cfg_rc1 - Set to number of subsystems + * cfg_data.splat_subsystems - Set with subsystems + */ + rc = splat_subsystem_list(&kcfg, arg); + break; + case SPLAT_CFG_TEST_COUNT: + /* cfg_arg1 - Set to a target subsystem + * cfg_rc1 - Set to number of tests + */ + rc = splat_test_count(&kcfg, arg); + break; + case SPLAT_CFG_TEST_LIST: + /* cfg_arg1 - Set to a target subsystem + * cfg_rc1 - Set to number of tests + * cfg_data.splat_subsystems - Populated with tests + */ + rc = splat_test_list(&kcfg, arg); + break; + default: + splat_print(file, "Bad config command %d\n", + kcfg.cfg_cmd); + rc = -EINVAL; + break; + } + + return rc; +} + +static int +splat_ioctl_cmd(struct file *file, unsigned int cmd, unsigned long arg) +{ + splat_subsystem_t *sub; + splat_cmd_t kcmd; + int rc = -EINVAL; + void *data = NULL; + + /* User and kernel space agree about arg size */ + if (_IOC_SIZE(cmd) != sizeof(kcmd)) + return -EBADMSG; + + if (copy_from_user(&kcmd, (splat_cfg_t *)arg, sizeof(kcmd))) + return -EFAULT; + + if (kcmd.cmd_magic != SPLAT_CMD_MAGIC) { + splat_print(file, "Bad command magic 0x%x != 0x%x\n", + kcmd.cmd_magic, SPLAT_CFG_MAGIC); + return -EINVAL; + } + + /* Allocate memory for any opaque data the caller needed to pass on */ + if (kcmd.cmd_data_size > 0) { + data = (void *)kmalloc(kcmd.cmd_data_size, GFP_KERNEL); + if (data == NULL) + return -ENOMEM; + + if (copy_from_user(data, (void *)(arg + offsetof(splat_cmd_t, + cmd_data_str)), kcmd.cmd_data_size)) { + kfree(data); + return -EFAULT; + } + } + + sub = splat_subsystem_find(kcmd.cmd_subsystem); + if (sub != NULL) + rc = splat_validate(file, sub, kcmd.cmd_test, data); + else + rc = -EINVAL; + + if (data != NULL) + kfree(data); + + return rc; +} + +static long +splat_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int rc = 0; + + /* Ignore tty ioctls */ + if ((cmd & 0xffffff00) == ((int)'T') << 8) + return -ENOTTY; + + switch (cmd) { + case SPLAT_CFG: + rc = splat_ioctl_cfg(file, cmd, arg); + break; + case SPLAT_CMD: + rc = splat_ioctl_cmd(file, cmd, arg); + break; + default: + splat_print(file, "Bad ioctl command %d\n", cmd); + rc = -EINVAL; + break; + } + + return rc; +} + +#ifdef CONFIG_COMPAT +/* Compatibility handler for ioctls from 32-bit ELF binaries */ +static long +splat_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + return splat_unlocked_ioctl(file, cmd, arg); +} +#endif /* CONFIG_COMPAT */ + +/* I'm not sure why you would want to write in to this buffer from + * user space since its principle use is to pass test status info + * back to the user space, but I don't see any reason to prevent it. + */ +static ssize_t splat_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + int rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_enter(&info->info_lock); + + /* Write beyond EOF */ + if (*ppos >= info->info_size) { + rc = -EFBIG; + goto out; + } + + /* Resize count if beyond EOF */ + if (*ppos + count > info->info_size) + count = info->info_size - *ppos; + + if (copy_from_user(info->info_buffer, buf, count)) { + rc = -EFAULT; + goto out; + } + + *ppos += count; + rc = count; +out: + mutex_exit(&info->info_lock); + return rc; +} + +static ssize_t splat_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + int rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_enter(&info->info_lock); + + /* Read beyond EOF */ + if (*ppos >= info->info_size) + goto out; + + /* Resize count if beyond EOF */ + if (*ppos + count > info->info_size) + count = info->info_size - *ppos; + + if (copy_to_user(buf, info->info_buffer + *ppos, count)) { + rc = -EFAULT; + goto out; + } + + *ppos += count; + rc = count; +out: + mutex_exit(&info->info_lock); + return rc; +} + +static loff_t splat_seek(struct file *file, loff_t offset, int origin) +{ + splat_info_t *info = (splat_info_t *)file->private_data; + int rc = -EINVAL; + + ASSERT(info); + ASSERT(info->info_buffer); + + mutex_enter(&info->info_lock); + + switch (origin) { + case 0: /* SEEK_SET - No-op just do it */ + break; + case 1: /* SEEK_CUR - Seek from current */ + offset = file->f_pos + offset; + break; + case 2: /* SEEK_END - Seek from end */ + offset = info->info_size + offset; + break; + } + + if (offset >= 0) { + file->f_pos = offset; + file->f_version = 0; + rc = offset; + } + + mutex_exit(&info->info_lock); + + return rc; +} + +static struct file_operations splat_fops = { + .owner = THIS_MODULE, + .open = splat_open, + .release = splat_release, + .unlocked_ioctl = splat_unlocked_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = splat_compat_ioctl, +#endif + .read = splat_read, + .write = splat_write, + .llseek = splat_seek, +}; + +static struct miscdevice splat_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = SPLAT_NAME, + .fops = &splat_fops, +}; + +static int __init +splat_init(void) +{ + int error; + + spin_lock_init(&splat_module_lock); + INIT_LIST_HEAD(&splat_module_list); + + SPLAT_SUBSYSTEM_INIT(kmem); + SPLAT_SUBSYSTEM_INIT(taskq); + SPLAT_SUBSYSTEM_INIT(krng); + SPLAT_SUBSYSTEM_INIT(mutex); + SPLAT_SUBSYSTEM_INIT(condvar); + SPLAT_SUBSYSTEM_INIT(thread); + SPLAT_SUBSYSTEM_INIT(rwlock); + SPLAT_SUBSYSTEM_INIT(time); + SPLAT_SUBSYSTEM_INIT(vnode); + SPLAT_SUBSYSTEM_INIT(kobj); + SPLAT_SUBSYSTEM_INIT(atomic); + SPLAT_SUBSYSTEM_INIT(list); + SPLAT_SUBSYSTEM_INIT(generic); + SPLAT_SUBSYSTEM_INIT(cred); + SPLAT_SUBSYSTEM_INIT(zlib); + SPLAT_SUBSYSTEM_INIT(linux); + + error = misc_register(&splat_misc); + if (error) { + printk(KERN_INFO "SPLAT: misc_register() failed %d\n", error); + } else { + printk(KERN_INFO "SPLAT: Loaded module v%s-%s%s\n", + SPL_META_VERSION, SPL_META_RELEASE, SPL_DEBUG_STR); + } + + return (error); +} + +static void __exit +splat_fini(void) +{ + misc_deregister(&splat_misc); + + SPLAT_SUBSYSTEM_FINI(linux); + SPLAT_SUBSYSTEM_FINI(zlib); + SPLAT_SUBSYSTEM_FINI(cred); + SPLAT_SUBSYSTEM_FINI(generic); + SPLAT_SUBSYSTEM_FINI(list); + SPLAT_SUBSYSTEM_FINI(atomic); + SPLAT_SUBSYSTEM_FINI(kobj); + SPLAT_SUBSYSTEM_FINI(vnode); + SPLAT_SUBSYSTEM_FINI(time); + SPLAT_SUBSYSTEM_FINI(rwlock); + SPLAT_SUBSYSTEM_FINI(thread); + SPLAT_SUBSYSTEM_FINI(condvar); + SPLAT_SUBSYSTEM_FINI(mutex); + SPLAT_SUBSYSTEM_FINI(krng); + SPLAT_SUBSYSTEM_FINI(taskq); + SPLAT_SUBSYSTEM_FINI(kmem); + + ASSERT(list_empty(&splat_module_list)); + printk(KERN_INFO "SPLAT: Unloaded module v%s-%s%s\n", + SPL_META_VERSION, SPL_META_RELEASE, SPL_DEBUG_STR); +} + +module_init(splat_init); +module_exit(splat_fini); + +MODULE_DESCRIPTION("Solaris Porting LAyer Tests"); +MODULE_AUTHOR(SPL_META_AUTHOR); +MODULE_LICENSE(SPL_META_LICENSE); +MODULE_VERSION(SPL_META_VERSION "-" SPL_META_RELEASE); --- linux-4.4.0.orig/spl/module/splat/splat-generic.c +++ linux-4.4.0/spl/module/splat/splat-generic.c @@ -0,0 +1,367 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Generic Tests. +\*****************************************************************************/ + +#include +#include +#include "splat-internal.h" + +#define SPLAT_GENERIC_NAME "generic" +#define SPLAT_GENERIC_DESC "Kernel Generic Tests" + +#define SPLAT_GENERIC_TEST1_ID 0x0d01 +#define SPLAT_GENERIC_TEST1_NAME "ddi_strtoul" +#define SPLAT_GENERIC_TEST1_DESC "ddi_strtoul Test" + +#define SPLAT_GENERIC_TEST2_ID 0x0d02 +#define SPLAT_GENERIC_TEST2_NAME "ddi_strtol" +#define SPLAT_GENERIC_TEST2_DESC "ddi_strtol Test" + +#define SPLAT_GENERIC_TEST3_ID 0x0d03 +#define SPLAT_GENERIC_TEST3_NAME "ddi_strtoull" +#define SPLAT_GENERIC_TEST3_DESC "ddi_strtoull Test" + +#define SPLAT_GENERIC_TEST4_ID 0x0d04 +#define SPLAT_GENERIC_TEST4_NAME "ddi_strtoll" +#define SPLAT_GENERIC_TEST4_DESC "ddi_strtoll Test" + +# define SPLAT_GENERIC_TEST5_ID 0x0d05 +# define SPLAT_GENERIC_TEST5_NAME "udivdi3" +# define SPLAT_GENERIC_TEST5_DESC "Unsigned Div-64 Test" + +# define SPLAT_GENERIC_TEST6_ID 0x0d06 +# define SPLAT_GENERIC_TEST6_NAME "divdi3" +# define SPLAT_GENERIC_TEST6_DESC "Signed Div-64 Test" + +#define STR_POS "123456789" +#define STR_NEG "-123456789" +#define STR_BASE "0xabcdef" +#define STR_RANGE_MAX "10000000000000000" +#define STR_RANGE_MIN "-10000000000000000" +#define STR_INVAL1 "12345U" +#define STR_INVAL2 "invald" + +#define VAL_POS 123456789 +#define VAL_NEG -123456789 +#define VAL_BASE 0xabcdef +#define VAL_INVAL1 12345U + +#define define_generic_msg_strtox(type, valtype) \ +static void \ +generic_msg_strto##type(struct file *file, char *msg, int rc, int *err, \ + const char *s, valtype d, char *endptr) \ +{ \ + splat_vprint(file, SPLAT_GENERIC_TEST1_NAME, \ + "%s (%d) %s: %s == %lld, 0x%p\n", \ + rc ? "Fail" : "Pass", *err, msg, s, \ + (unsigned long long)d, endptr); \ + *err = rc; \ +} + +define_generic_msg_strtox(ul, unsigned long); +define_generic_msg_strtox(l, long); +define_generic_msg_strtox(ull, unsigned long long); +define_generic_msg_strtox(ll, long long); + +#define define_splat_generic_test_strtox(type, valtype) \ +static int \ +splat_generic_test_strto##type(struct file *file, void *arg) \ +{ \ + int rc, rc1, rc2, rc3, rc4, rc5, rc6, rc7; \ + char str[20], *endptr; \ + valtype r; \ + \ + /* Positive value: expect success */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + rc1 = ddi_strto##type(STR_POS, &endptr, 10, &r); \ + if (rc1 == 0 && r == VAL_POS && endptr && *endptr == '\0') \ + rc = 0; \ + \ + generic_msg_strto##type(file, "positive", rc , &rc1, \ + STR_POS, r, endptr); \ + \ + /* Negative value: expect success */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + strcpy(str, STR_NEG); \ + rc2 = ddi_strto##type(str, &endptr, 10, &r); \ + if (#type[0] == 'u') { \ + if (rc2 == 0 && r == 0 && endptr == str) \ + rc = 0; \ + } else { \ + if (rc2 == 0 && r == VAL_NEG && \ + endptr && *endptr == '\0') \ + rc = 0; \ + } \ + \ + generic_msg_strto##type(file, "negative", rc, &rc2, \ + STR_NEG, r, endptr); \ + \ + /* Non decimal base: expect sucess */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + rc3 = ddi_strto##type(STR_BASE, &endptr, 0, &r); \ + if (rc3 == 0 && r == VAL_BASE && endptr && *endptr == '\0') \ + rc = 0; \ + \ + generic_msg_strto##type(file, "base", rc, &rc3, \ + STR_BASE, r, endptr); \ + \ + /* Max out of range: failure expected, r unchanged */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + rc4 = ddi_strto##type(STR_RANGE_MAX, &endptr, 16, &r); \ + if (rc4 == ERANGE && r == 0 && endptr == NULL) \ + rc = 0; \ + \ + generic_msg_strto##type(file, "max", rc, &rc4, \ + STR_RANGE_MAX, r, endptr); \ + \ + /* Min out of range: failure expected, r unchanged */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + strcpy(str, STR_RANGE_MIN); \ + rc5 = ddi_strto##type(str, &endptr, 16, &r); \ + if (#type[0] == 'u') { \ + if (rc5 == 0 && r == 0 && endptr == str) \ + rc = 0; \ + } else { \ + if (rc5 == ERANGE && r == 0 && endptr == NULL) \ + rc = 0; \ + } \ + \ + generic_msg_strto##type(file, "min", rc, &rc5, \ + STR_RANGE_MIN, r, endptr); \ + \ + /* Invalid string: success expected, endptr == 'U' */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + rc6 = ddi_strto##type(STR_INVAL1, &endptr, 10, &r); \ + if (rc6 == 0 && r == VAL_INVAL1 && endptr && *endptr == 'U') \ + rc = 0; \ + \ + generic_msg_strto##type(file, "invalid", rc, &rc6, \ + STR_INVAL1, r, endptr); \ + \ + /* Invalid string: failure expected, endptr == str */ \ + r = 0; \ + rc = 1; \ + endptr = NULL; \ + strcpy(str, STR_INVAL2); \ + rc7 = ddi_strto##type(str, &endptr, 10, &r); \ + if (rc7 == 0 && r == 0 && endptr == str) \ + rc = 0; \ + \ + generic_msg_strto##type(file, "invalid", rc, &rc7, \ + STR_INVAL2, r, endptr); \ + \ + return (rc1 || rc2 || rc3 || rc4 || rc5 || rc6 || rc7) ? \ + -EINVAL : 0; \ +} + +define_splat_generic_test_strtox(ul, unsigned long); +define_splat_generic_test_strtox(l, long); +define_splat_generic_test_strtox(ull, unsigned long long); +define_splat_generic_test_strtox(ll, long long); + +/* + * The entries in the table are used in all combinations and the + * return value is checked to ensure it is range. On 32-bit + * systems __udivdi3 will be invoked for the 64-bit division. + * On 64-bit system the native 64-bit divide will be used so + * __udivdi3 isn't used but we might as well stil run the test. + */ +static int +splat_generic_test_udivdi3(struct file *file, void *arg) +{ + const uint64_t tabu[] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 1000, 2003, + 32765, 32766, 32767, 32768, 32769, 32760, + 65533, 65534, 65535, 65536, 65537, 65538, + 0x7ffffffeULL, 0x7fffffffULL, 0x80000000ULL, 0x80000001ULL, + 0x7000000000000000ULL, 0x7000000080000000ULL, 0x7000000080000001ULL, + 0x7fffffffffffffffULL, 0x7fffffff8fffffffULL, 0x7fffffff8ffffff1ULL, + 0x7fffffff00000000ULL, 0x7fffffff80000000ULL, 0x7fffffff00000001ULL, + 0x8000000000000000ULL, 0x8000000080000000ULL, 0x8000000080000001ULL, + 0xc000000000000000ULL, 0xc000000080000000ULL, 0xc000000080000001ULL, + 0xfffffffffffffffdULL, 0xfffffffffffffffeULL, 0xffffffffffffffffULL, + }; + uint64_t uu, vu, qu, ru; + int n, i, j, errors = 0; + + splat_vprint(file, SPLAT_GENERIC_TEST5_NAME, "%s", + "Testing unsigned 64-bit division.\n"); + n = sizeof(tabu) / sizeof(tabu[0]); + for (i = 0; i < n; i++) { + for (j = 1; j < n; j++) { + uu = tabu[i]; + vu = tabu[j]; + qu = uu / vu; /* __udivdi3 */ + ru = uu - qu * vu; + if (qu > uu || ru >= vu) { + splat_vprint(file, SPLAT_GENERIC_TEST5_NAME, + "%016llx/%016llx != %016llx rem %016llx\n", + uu, vu, qu, ru); + errors++; + } + } + } + + if (errors) { + splat_vprint(file, SPLAT_GENERIC_TEST5_NAME, + "Failed %d/%d tests\n", errors, n * (n - 1)); + return -ERANGE; + } + + splat_vprint(file, SPLAT_GENERIC_TEST5_NAME, + "Passed all %d tests\n", n * (n - 1)); + + return 0; +} + +/* + * The entries the table are used in all combinations, with + and - signs + * preceding them. The return value is checked to ensure it is range. + * On 32-bit systems __divdi3 will be invoked for the 64-bit division. + * On 64-bit system the native 64-bit divide will be used so __divdi3 + * isn't used but we might as well stil run the test. + */ +static int +splat_generic_test_divdi3(struct file *file, void *arg) +{ + const int64_t tabs[] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 1000, 2003, + 32765, 32766, 32767, 32768, 32769, 32760, + 65533, 65534, 65535, 65536, 65537, 65538, + 0x7ffffffeLL, 0x7fffffffLL, 0x80000000LL, 0x80000001LL, + 0x7000000000000000LL, 0x7000000080000000LL, 0x7000000080000001LL, + 0x7fffffffffffffffLL, 0x7fffffff8fffffffLL, 0x7fffffff8ffffff1LL, + 0x7fffffff00000000LL, 0x7fffffff80000000LL, 0x7fffffff00000001LL, + 0x0123456789abcdefLL, 0x00000000abcdef01LL, 0x0000000012345678LL, +#if BITS_PER_LONG == 32 + 0x8000000000000000LL, 0x8000000080000000LL, 0x8000000080000001LL, +#endif + }; + int64_t u, v, q, r; + int n, i, j, k, errors = 0; + + splat_vprint(file, SPLAT_GENERIC_TEST6_NAME, "%s", + "Testing signed 64-bit division.\n"); + n = sizeof(tabs) / sizeof(tabs[0]); + for (i = 0; i < n; i++) { + for (j = 1; j < n; j++) { + for (k = 0; k <= 3; k++) { + u = (k & 1) ? -tabs[i] : tabs[i]; + v = (k >= 2) ? -tabs[j] : tabs[j]; + + q = u / v; /* __divdi3 */ + r = u - q * v; + if (abs64(q) > abs64(u) || + abs64(r) >= abs64(v) || + (r != 0 && (r ^ u) < 0)) { + splat_vprint(file, + SPLAT_GENERIC_TEST6_NAME, + "%016llx/%016llx != %016llx " + "rem %016llx\n", u, v, q, r); + errors++; + } + } + } + } + + if (errors) { + splat_vprint(file, SPLAT_GENERIC_TEST6_NAME, + "Failed %d/%d tests\n", errors, n * (n - 1)); + return -ERANGE; + } + + splat_vprint(file, SPLAT_GENERIC_TEST6_NAME, + "Passed all %d tests\n", n * (n - 1)); + + return 0; +} + +splat_subsystem_t * +splat_generic_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_GENERIC_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_GENERIC_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_GENERIC; + + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST1_NAME, SPLAT_GENERIC_TEST1_DESC, + SPLAT_GENERIC_TEST1_ID, splat_generic_test_strtoul); + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST2_NAME, SPLAT_GENERIC_TEST2_DESC, + SPLAT_GENERIC_TEST2_ID, splat_generic_test_strtol); + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST3_NAME, SPLAT_GENERIC_TEST3_DESC, + SPLAT_GENERIC_TEST3_ID, splat_generic_test_strtoull); + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST4_NAME, SPLAT_GENERIC_TEST4_DESC, + SPLAT_GENERIC_TEST4_ID, splat_generic_test_strtoll); + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST5_NAME, SPLAT_GENERIC_TEST5_DESC, + SPLAT_GENERIC_TEST5_ID, splat_generic_test_udivdi3); + SPLAT_TEST_INIT(sub, SPLAT_GENERIC_TEST6_NAME, SPLAT_GENERIC_TEST6_DESC, + SPLAT_GENERIC_TEST6_ID, splat_generic_test_divdi3); + + return sub; +} + +void +splat_generic_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_GENERIC_TEST1_ID); + + kfree(sub); +} + +int +splat_generic_id(void) +{ + return SPLAT_SUBSYSTEM_GENERIC; +} --- linux-4.4.0.orig/spl/module/splat/splat-internal.h +++ linux-4.4.0/spl/module/splat/splat-internal.h @@ -0,0 +1,219 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPLAT_INTERNAL_H +#define _SPLAT_INTERNAL_H + +#include "splat-ctl.h" +#include +#include +#include + +#define SPLAT_SUBSYSTEM_INIT(type) \ +({ splat_subsystem_t *_sub_; \ + \ + _sub_ = (splat_subsystem_t *)splat_##type##_init(); \ + if (_sub_ == NULL) { \ + printk(KERN_ERR "splat: Error initializing: " #type "\n"); \ + } else { \ + spin_lock(&splat_module_lock); \ + list_add_tail(&(_sub_->subsystem_list), \ + &splat_module_list); \ + spin_unlock(&splat_module_lock); \ + } \ +}) + +#define SPLAT_SUBSYSTEM_FINI(type) \ +({ splat_subsystem_t *_sub_, *_tmp_; \ + int _id_, _flag_ = 0; \ + \ + _id_ = splat_##type##_id(); \ + spin_lock(&splat_module_lock); \ + list_for_each_entry_safe(_sub_, _tmp_, &splat_module_list, \ + subsystem_list) { \ + if (_sub_->desc.id == _id_) { \ + list_del_init(&(_sub_->subsystem_list)); \ + spin_unlock(&splat_module_lock); \ + splat_##type##_fini(_sub_); \ + spin_lock(&splat_module_lock); \ + _flag_ = 1; \ + } \ + } \ + spin_unlock(&splat_module_lock); \ + \ + if (!_flag_) \ + printk(KERN_ERR "splat: Error finalizing: " #type "\n"); \ +}) + +#define SPLAT_TEST_INIT(sub, n, d, tid, func) \ +({ splat_test_t *_test_; \ + \ + _test_ = (splat_test_t *)kmalloc(sizeof(*_test_), GFP_KERNEL); \ + if (_test_ == NULL) { \ + printk(KERN_ERR "splat: Error initializing: " n "/" #tid" \n");\ + } else { \ + memset(_test_, 0, sizeof(*_test_)); \ + strncpy(_test_->desc.name, n, SPLAT_NAME_SIZE-1); \ + strncpy(_test_->desc.desc, d, SPLAT_DESC_SIZE-1); \ + _test_->desc.id = tid; \ + _test_->test = func; \ + INIT_LIST_HEAD(&(_test_->test_list)); \ + spin_lock(&((sub)->test_lock)); \ + list_add_tail(&(_test_->test_list),&((sub)->test_list));\ + spin_unlock(&((sub)->test_lock)); \ + } \ +}) + +#define SPLAT_TEST_FINI(sub, tid) \ +({ splat_test_t *_test_, *_tmp_; \ + int _flag_ = 0; \ + \ + spin_lock(&((sub)->test_lock)); \ + list_for_each_entry_safe(_test_, _tmp_, \ + &((sub)->test_list), test_list) { \ + if (_test_->desc.id == tid) { \ + list_del_init(&(_test_->test_list)); \ + _flag_ = 1; \ + } \ + } \ + spin_unlock(&((sub)->test_lock)); \ + \ + if (!_flag_) \ + printk(KERN_ERR "splat: Error finalizing: " #tid "\n"); \ +}) + +typedef int (*splat_test_func_t)(struct file *, void *); + +typedef struct splat_test { + struct list_head test_list; + splat_user_t desc; + splat_test_func_t test; +} splat_test_t; + +typedef struct splat_subsystem { + struct list_head subsystem_list;/* List had to chain entries */ + splat_user_t desc; + spinlock_t test_lock; + struct list_head test_list; +} splat_subsystem_t; + +#define SPLAT_INFO_BUFFER_SIZE 65536 +#define SPLAT_INFO_BUFFER_REDZONE 256 + +typedef struct splat_info { + kmutex_t info_lock; + int info_size; + char *info_buffer; + char *info_head; /* Internal kernel use only */ +} splat_info_t; + +#define sym2str(sym) (char *)(#sym) + +#define splat_print(file, format, args...) \ +({ splat_info_t *_info_ = (splat_info_t *)file->private_data; \ + int _rc_; \ + \ + ASSERT(_info_); \ + ASSERT(_info_->info_buffer); \ + \ + mutex_enter(&_info_->info_lock); \ + \ + /* Don't allow the kernel to start a write in the red zone */ \ + if ((int)(_info_->info_head - _info_->info_buffer) > \ + (SPLAT_INFO_BUFFER_SIZE - SPLAT_INFO_BUFFER_REDZONE)) { \ + _rc_ = -EOVERFLOW; \ + } else { \ + _rc_ = sprintf(_info_->info_head, format, args); \ + if (_rc_ >= 0) \ + _info_->info_head += _rc_; \ + } \ + \ + mutex_exit(&_info_->info_lock); \ + _rc_; \ +}) + +#define splat_vprint(file, test, format, args...) \ + splat_print(file, "%*s: " format, SPLAT_NAME_SIZE, test, args) + +#define splat_locked_test(lock, test) \ +({ \ + int _rc_; \ + spin_lock(lock); \ + _rc_ = (test) ? 1 : 0; \ + spin_unlock(lock); \ + _rc_; \ +}) + +splat_subsystem_t *splat_condvar_init(void); +splat_subsystem_t *splat_kmem_init(void); +splat_subsystem_t *splat_mutex_init(void); +splat_subsystem_t *splat_krng_init(void); +splat_subsystem_t *splat_rwlock_init(void); +splat_subsystem_t *splat_taskq_init(void); +splat_subsystem_t *splat_thread_init(void); +splat_subsystem_t *splat_time_init(void); +splat_subsystem_t *splat_vnode_init(void); +splat_subsystem_t *splat_kobj_init(void); +splat_subsystem_t *splat_atomic_init(void); +splat_subsystem_t *splat_list_init(void); +splat_subsystem_t *splat_generic_init(void); +splat_subsystem_t *splat_cred_init(void); +splat_subsystem_t *splat_zlib_init(void); +splat_subsystem_t *splat_linux_init(void); + +void splat_condvar_fini(splat_subsystem_t *); +void splat_kmem_fini(splat_subsystem_t *); +void splat_mutex_fini(splat_subsystem_t *); +void splat_krng_fini(splat_subsystem_t *); +void splat_rwlock_fini(splat_subsystem_t *); +void splat_taskq_fini(splat_subsystem_t *); +void splat_thread_fini(splat_subsystem_t *); +void splat_time_fini(splat_subsystem_t *); +void splat_vnode_fini(splat_subsystem_t *); +void splat_kobj_fini(splat_subsystem_t *); +void splat_atomic_fini(splat_subsystem_t *); +void splat_list_fini(splat_subsystem_t *); +void splat_generic_fini(splat_subsystem_t *); +void splat_cred_fini(splat_subsystem_t *); +void splat_zlib_fini(splat_subsystem_t *); +void splat_linux_fini(splat_subsystem_t *); + +int splat_condvar_id(void); +int splat_kmem_id(void); +int splat_mutex_id(void); +int splat_krng_id(void); +int splat_rwlock_id(void); +int splat_taskq_id(void); +int splat_thread_id(void); +int splat_time_id(void); +int splat_vnode_id(void); +int splat_kobj_id(void); +int splat_atomic_id(void); +int splat_list_id(void); +int splat_generic_id(void); +int splat_cred_id(void); +int splat_zlib_id(void); +int splat_linux_id(void); + +#endif /* _SPLAT_INTERNAL_H */ --- linux-4.4.0.orig/spl/module/splat/splat-kmem.c +++ linux-4.4.0/spl/module/splat/splat-kmem.c @@ -0,0 +1,1398 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Kmem Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_KMEM_NAME "kmem" +#define SPLAT_KMEM_DESC "Kernel Malloc/Slab Tests" + +#define SPLAT_KMEM_TEST1_ID 0x0101 +#define SPLAT_KMEM_TEST1_NAME "kmem_alloc" +#define SPLAT_KMEM_TEST1_DESC "Memory allocation test (kmem_alloc)" + +#define SPLAT_KMEM_TEST2_ID 0x0102 +#define SPLAT_KMEM_TEST2_NAME "kmem_zalloc" +#define SPLAT_KMEM_TEST2_DESC "Memory allocation test (kmem_zalloc)" + +#define SPLAT_KMEM_TEST3_ID 0x0103 +#define SPLAT_KMEM_TEST3_NAME "vmem_alloc" +#define SPLAT_KMEM_TEST3_DESC "Memory allocation test (vmem_alloc)" + +#define SPLAT_KMEM_TEST4_ID 0x0104 +#define SPLAT_KMEM_TEST4_NAME "vmem_zalloc" +#define SPLAT_KMEM_TEST4_DESC "Memory allocation test (vmem_zalloc)" + +#define SPLAT_KMEM_TEST5_ID 0x0105 +#define SPLAT_KMEM_TEST5_NAME "slab_small" +#define SPLAT_KMEM_TEST5_DESC "Slab ctor/dtor test (small)" + +#define SPLAT_KMEM_TEST6_ID 0x0106 +#define SPLAT_KMEM_TEST6_NAME "slab_large" +#define SPLAT_KMEM_TEST6_DESC "Slab ctor/dtor test (large)" + +#define SPLAT_KMEM_TEST7_ID 0x0107 +#define SPLAT_KMEM_TEST7_NAME "slab_align" +#define SPLAT_KMEM_TEST7_DESC "Slab alignment test" + +#define SPLAT_KMEM_TEST8_ID 0x0108 +#define SPLAT_KMEM_TEST8_NAME "slab_reap" +#define SPLAT_KMEM_TEST8_DESC "Slab reaping test" + +#define SPLAT_KMEM_TEST9_ID 0x0109 +#define SPLAT_KMEM_TEST9_NAME "slab_age" +#define SPLAT_KMEM_TEST9_DESC "Slab aging test" + +#define SPLAT_KMEM_TEST10_ID 0x010a +#define SPLAT_KMEM_TEST10_NAME "slab_lock" +#define SPLAT_KMEM_TEST10_DESC "Slab locking test" + +#if 0 +#define SPLAT_KMEM_TEST11_ID 0x010b +#define SPLAT_KMEM_TEST11_NAME "slab_overcommit" +#define SPLAT_KMEM_TEST11_DESC "Slab memory overcommit test" +#endif + +#define SPLAT_KMEM_TEST13_ID 0x010d +#define SPLAT_KMEM_TEST13_NAME "slab_reclaim" +#define SPLAT_KMEM_TEST13_DESC "Slab direct memory reclaim test" + +#define SPLAT_KMEM_ALLOC_COUNT 10 +#define SPLAT_VMEM_ALLOC_COUNT 10 + + +static int +splat_kmem_test1(struct file *file, void *arg) +{ + void *ptr[SPLAT_KMEM_ALLOC_COUNT]; + int size = PAGE_SIZE; + int i, count, rc = 0; + + while ((!rc) && (size <= spl_kmem_alloc_warn)) { + count = 0; + + for (i = 0; i < SPLAT_KMEM_ALLOC_COUNT; i++) { + ptr[i] = kmem_alloc(size, KM_SLEEP); + if (ptr[i]) + count++; + } + + for (i = 0; i < SPLAT_KMEM_ALLOC_COUNT; i++) + if (ptr[i]) + kmem_free(ptr[i], size); + + splat_vprint(file, SPLAT_KMEM_TEST1_NAME, + "%d byte allocations, %d/%d successful\n", + size, count, SPLAT_KMEM_ALLOC_COUNT); + if (count != SPLAT_KMEM_ALLOC_COUNT) + rc = -ENOMEM; + + size *= 2; + } + + return rc; +} + +static int +splat_kmem_test2(struct file *file, void *arg) +{ + void *ptr[SPLAT_KMEM_ALLOC_COUNT]; + int size = PAGE_SIZE; + int i, j, count, rc = 0; + + while ((!rc) && (size <= spl_kmem_alloc_warn)) { + count = 0; + + for (i = 0; i < SPLAT_KMEM_ALLOC_COUNT; i++) { + ptr[i] = kmem_zalloc(size, KM_SLEEP); + if (ptr[i]) + count++; + } + + /* Ensure buffer has been zero filled */ + for (i = 0; i < SPLAT_KMEM_ALLOC_COUNT; i++) { + for (j = 0; j < size; j++) { + if (((char *)ptr[i])[j] != '\0') { + splat_vprint(file,SPLAT_KMEM_TEST2_NAME, + "%d-byte allocation was " + "not zeroed\n", size); + rc = -EFAULT; + } + } + } + + for (i = 0; i < SPLAT_KMEM_ALLOC_COUNT; i++) + if (ptr[i]) + kmem_free(ptr[i], size); + + splat_vprint(file, SPLAT_KMEM_TEST2_NAME, + "%d byte allocations, %d/%d successful\n", + size, count, SPLAT_KMEM_ALLOC_COUNT); + if (count != SPLAT_KMEM_ALLOC_COUNT) + rc = -ENOMEM; + + size *= 2; + } + + return rc; +} + +static int +splat_kmem_test3(struct file *file, void *arg) +{ + void *ptr[SPLAT_VMEM_ALLOC_COUNT]; + int size = PAGE_SIZE; + int i, count, rc = 0; + + /* + * Test up to 4x the maximum kmem_alloc() size to ensure both + * the kmem_alloc() and vmem_alloc() call paths are used. + */ + while ((!rc) && (size <= (4 * spl_kmem_alloc_max))) { + count = 0; + + for (i = 0; i < SPLAT_VMEM_ALLOC_COUNT; i++) { + ptr[i] = vmem_alloc(size, KM_SLEEP); + if (ptr[i]) + count++; + } + + for (i = 0; i < SPLAT_VMEM_ALLOC_COUNT; i++) + if (ptr[i]) + vmem_free(ptr[i], size); + + splat_vprint(file, SPLAT_KMEM_TEST3_NAME, + "%d byte allocations, %d/%d successful\n", + size, count, SPLAT_VMEM_ALLOC_COUNT); + if (count != SPLAT_VMEM_ALLOC_COUNT) + rc = -ENOMEM; + + size *= 2; + } + + return rc; +} + +static int +splat_kmem_test4(struct file *file, void *arg) +{ + void *ptr[SPLAT_VMEM_ALLOC_COUNT]; + int size = PAGE_SIZE; + int i, j, count, rc = 0; + + /* + * Test up to 4x the maximum kmem_zalloc() size to ensure both + * the kmem_zalloc() and vmem_zalloc() call paths are used. + */ + while ((!rc) && (size <= (4 * spl_kmem_alloc_max))) { + count = 0; + + for (i = 0; i < SPLAT_VMEM_ALLOC_COUNT; i++) { + ptr[i] = vmem_zalloc(size, KM_SLEEP); + if (ptr[i]) + count++; + } + + /* Ensure buffer has been zero filled */ + for (i = 0; i < SPLAT_VMEM_ALLOC_COUNT; i++) { + for (j = 0; j < size; j++) { + if (((char *)ptr[i])[j] != '\0') { + splat_vprint(file, SPLAT_KMEM_TEST4_NAME, + "%d-byte allocation was " + "not zeroed\n", size); + rc = -EFAULT; + } + } + } + + for (i = 0; i < SPLAT_VMEM_ALLOC_COUNT; i++) + if (ptr[i]) + vmem_free(ptr[i], size); + + splat_vprint(file, SPLAT_KMEM_TEST4_NAME, + "%d byte allocations, %d/%d successful\n", + size, count, SPLAT_VMEM_ALLOC_COUNT); + if (count != SPLAT_VMEM_ALLOC_COUNT) + rc = -ENOMEM; + + size *= 2; + } + + return rc; +} + +#define SPLAT_KMEM_TEST_MAGIC 0x004488CCUL +#define SPLAT_KMEM_CACHE_NAME "kmem_test" +#define SPLAT_KMEM_OBJ_COUNT 1024 +#define SPLAT_KMEM_OBJ_RECLAIM 32 /* objects */ +#define SPLAT_KMEM_THREADS 32 + +#define KCP_FLAG_READY 0x01 + +typedef struct kmem_cache_data { + unsigned long kcd_magic; + struct list_head kcd_node; + int kcd_flag; + char kcd_buf[0]; +} kmem_cache_data_t; + +typedef struct kmem_cache_thread { + spinlock_t kct_lock; + int kct_id; + struct list_head kct_list; +} kmem_cache_thread_t; + +typedef struct kmem_cache_priv { + unsigned long kcp_magic; + struct file *kcp_file; + kmem_cache_t *kcp_cache; + spinlock_t kcp_lock; + wait_queue_head_t kcp_ctl_waitq; + wait_queue_head_t kcp_thr_waitq; + int kcp_flags; + int kcp_kct_count; + kmem_cache_thread_t *kcp_kct[SPLAT_KMEM_THREADS]; + int kcp_size; + int kcp_align; + int kcp_count; + int kcp_alloc; + int kcp_rc; +} kmem_cache_priv_t; + +static kmem_cache_priv_t * +splat_kmem_cache_test_kcp_alloc(struct file *file, char *name, + int size, int align, int alloc) +{ + kmem_cache_priv_t *kcp; + + kcp = kmem_zalloc(sizeof(kmem_cache_priv_t), KM_SLEEP); + if (!kcp) + return NULL; + + kcp->kcp_magic = SPLAT_KMEM_TEST_MAGIC; + kcp->kcp_file = file; + kcp->kcp_cache = NULL; + spin_lock_init(&kcp->kcp_lock); + init_waitqueue_head(&kcp->kcp_ctl_waitq); + init_waitqueue_head(&kcp->kcp_thr_waitq); + kcp->kcp_flags = 0; + kcp->kcp_kct_count = -1; + kcp->kcp_size = size; + kcp->kcp_align = align; + kcp->kcp_count = 0; + kcp->kcp_alloc = alloc; + kcp->kcp_rc = 0; + + return kcp; +} + +static void +splat_kmem_cache_test_kcp_free(kmem_cache_priv_t *kcp) +{ + kmem_free(kcp, sizeof(kmem_cache_priv_t)); +} + +static kmem_cache_thread_t * +splat_kmem_cache_test_kct_alloc(kmem_cache_priv_t *kcp, int id) +{ + kmem_cache_thread_t *kct; + + ASSERT3S(id, <, SPLAT_KMEM_THREADS); + ASSERT(kcp->kcp_kct[id] == NULL); + + kct = kmem_zalloc(sizeof(kmem_cache_thread_t), KM_SLEEP); + if (!kct) + return NULL; + + spin_lock_init(&kct->kct_lock); + kct->kct_id = id; + INIT_LIST_HEAD(&kct->kct_list); + + spin_lock(&kcp->kcp_lock); + kcp->kcp_kct[id] = kct; + spin_unlock(&kcp->kcp_lock); + + return kct; +} + +static void +splat_kmem_cache_test_kct_free(kmem_cache_priv_t *kcp, + kmem_cache_thread_t *kct) +{ + spin_lock(&kcp->kcp_lock); + kcp->kcp_kct[kct->kct_id] = NULL; + spin_unlock(&kcp->kcp_lock); + + kmem_free(kct, sizeof(kmem_cache_thread_t)); +} + +static void +splat_kmem_cache_test_kcd_free(kmem_cache_priv_t *kcp, + kmem_cache_thread_t *kct) +{ + kmem_cache_data_t *kcd; + + spin_lock(&kct->kct_lock); + while (!list_empty(&kct->kct_list)) { + kcd = list_entry(kct->kct_list.next, + kmem_cache_data_t, kcd_node); + list_del(&kcd->kcd_node); + spin_unlock(&kct->kct_lock); + + kmem_cache_free(kcp->kcp_cache, kcd); + + spin_lock(&kct->kct_lock); + } + spin_unlock(&kct->kct_lock); +} + +static int +splat_kmem_cache_test_kcd_alloc(kmem_cache_priv_t *kcp, + kmem_cache_thread_t *kct, int count) +{ + kmem_cache_data_t *kcd; + int i; + + for (i = 0; i < count; i++) { + kcd = kmem_cache_alloc(kcp->kcp_cache, KM_SLEEP); + if (kcd == NULL) { + splat_kmem_cache_test_kcd_free(kcp, kct); + return -ENOMEM; + } + + spin_lock(&kct->kct_lock); + list_add_tail(&kcd->kcd_node, &kct->kct_list); + spin_unlock(&kct->kct_lock); + } + + return 0; +} + +static void +splat_kmem_cache_test_debug(struct file *file, char *name, + kmem_cache_priv_t *kcp) +{ + int j; + + splat_vprint(file, name, "%s cache objects %d", + kcp->kcp_cache->skc_name, kcp->kcp_count); + + if (kcp->kcp_cache->skc_flags & (KMC_KMEM | KMC_VMEM)) { + splat_vprint(file, name, ", slabs %u/%u objs %u/%u", + (unsigned)kcp->kcp_cache->skc_slab_alloc, + (unsigned)kcp->kcp_cache->skc_slab_total, + (unsigned)kcp->kcp_cache->skc_obj_alloc, + (unsigned)kcp->kcp_cache->skc_obj_total); + + if (!(kcp->kcp_cache->skc_flags & KMC_NOMAGAZINE)) { + splat_vprint(file, name, "%s", "mags"); + + for_each_online_cpu(j) + splat_print(file, "%u/%u ", + kcp->kcp_cache->skc_mag[j]->skm_avail, + kcp->kcp_cache->skc_mag[j]->skm_size); + } + } + + splat_print(file, "%s\n", ""); +} + +static int +splat_kmem_cache_test_constructor(void *ptr, void *priv, int flags) +{ + kmem_cache_priv_t *kcp = (kmem_cache_priv_t *)priv; + kmem_cache_data_t *kcd = (kmem_cache_data_t *)ptr; + + if (kcd && kcp) { + kcd->kcd_magic = kcp->kcp_magic; + INIT_LIST_HEAD(&kcd->kcd_node); + kcd->kcd_flag = 1; + memset(kcd->kcd_buf, 0xaa, kcp->kcp_size - (sizeof *kcd)); + kcp->kcp_count++; + } + + return 0; +} + +static void +splat_kmem_cache_test_destructor(void *ptr, void *priv) +{ + kmem_cache_priv_t *kcp = (kmem_cache_priv_t *)priv; + kmem_cache_data_t *kcd = (kmem_cache_data_t *)ptr; + + if (kcd && kcp) { + kcd->kcd_magic = 0; + kcd->kcd_flag = 0; + memset(kcd->kcd_buf, 0xbb, kcp->kcp_size - (sizeof *kcd)); + kcp->kcp_count--; + } + + return; +} + +/* + * Generic reclaim function which assumes that all objects may + * be reclaimed at any time. We free a small percentage of the + * objects linked off the kcp or kct[] every time we are called. + */ +static void +splat_kmem_cache_test_reclaim(void *priv) +{ + kmem_cache_priv_t *kcp = (kmem_cache_priv_t *)priv; + kmem_cache_thread_t *kct; + kmem_cache_data_t *kcd; + LIST_HEAD(reclaim); + int i, count; + + ASSERT(kcp->kcp_magic == SPLAT_KMEM_TEST_MAGIC); + + /* For each kct thread reclaim some objects */ + spin_lock(&kcp->kcp_lock); + for (i = 0; i < SPLAT_KMEM_THREADS; i++) { + kct = kcp->kcp_kct[i]; + if (!kct) + continue; + + spin_unlock(&kcp->kcp_lock); + spin_lock(&kct->kct_lock); + + count = SPLAT_KMEM_OBJ_RECLAIM; + while (count > 0 && !list_empty(&kct->kct_list)) { + kcd = list_entry(kct->kct_list.next, + kmem_cache_data_t, kcd_node); + list_del(&kcd->kcd_node); + list_add(&kcd->kcd_node, &reclaim); + count--; + } + + spin_unlock(&kct->kct_lock); + spin_lock(&kcp->kcp_lock); + } + spin_unlock(&kcp->kcp_lock); + + /* Freed outside the spin lock */ + while (!list_empty(&reclaim)) { + kcd = list_entry(reclaim.next, kmem_cache_data_t, kcd_node); + list_del(&kcd->kcd_node); + kmem_cache_free(kcp->kcp_cache, kcd); + } + + return; +} + +static int +splat_kmem_cache_test_threads(kmem_cache_priv_t *kcp, int threads) +{ + int rc; + + spin_lock(&kcp->kcp_lock); + rc = (kcp->kcp_kct_count == threads); + spin_unlock(&kcp->kcp_lock); + + return rc; +} + +static int +splat_kmem_cache_test_flags(kmem_cache_priv_t *kcp, int flags) +{ + int rc; + + spin_lock(&kcp->kcp_lock); + rc = (kcp->kcp_flags & flags); + spin_unlock(&kcp->kcp_lock); + + return rc; +} + +static void +splat_kmem_cache_test_thread(void *arg) +{ + kmem_cache_priv_t *kcp = (kmem_cache_priv_t *)arg; + kmem_cache_thread_t *kct; + int rc = 0, id; + + ASSERT(kcp->kcp_magic == SPLAT_KMEM_TEST_MAGIC); + + /* Assign thread ids */ + spin_lock(&kcp->kcp_lock); + if (kcp->kcp_kct_count == -1) + kcp->kcp_kct_count = 0; + + id = kcp->kcp_kct_count; + kcp->kcp_kct_count++; + spin_unlock(&kcp->kcp_lock); + + kct = splat_kmem_cache_test_kct_alloc(kcp, id); + if (!kct) { + rc = -ENOMEM; + goto out; + } + + /* Wait for all threads to have started and report they are ready */ + if (kcp->kcp_kct_count == SPLAT_KMEM_THREADS) + wake_up(&kcp->kcp_ctl_waitq); + + wait_event(kcp->kcp_thr_waitq, + splat_kmem_cache_test_flags(kcp, KCP_FLAG_READY)); + + /* Create and destroy objects */ + rc = splat_kmem_cache_test_kcd_alloc(kcp, kct, kcp->kcp_alloc); + splat_kmem_cache_test_kcd_free(kcp, kct); +out: + if (kct) + splat_kmem_cache_test_kct_free(kcp, kct); + + spin_lock(&kcp->kcp_lock); + if (!kcp->kcp_rc) + kcp->kcp_rc = rc; + + if ((--kcp->kcp_kct_count) == 0) + wake_up(&kcp->kcp_ctl_waitq); + + spin_unlock(&kcp->kcp_lock); + + thread_exit(); +} + +static int +splat_kmem_cache_test(struct file *file, void *arg, char *name, + int size, int align, int flags) +{ + kmem_cache_priv_t *kcp = NULL; + kmem_cache_data_t **kcd = NULL; + int i, rc = 0, objs = 0; + + splat_vprint(file, name, + "Testing size=%d, align=%d, flags=0x%04x\n", + size, align, flags); + + kcp = splat_kmem_cache_test_kcp_alloc(file, name, size, align, 0); + if (!kcp) { + splat_vprint(file, name, "Unable to create '%s'\n", "kcp"); + return (-ENOMEM); + } + + kcp->kcp_cache = kmem_cache_create(SPLAT_KMEM_CACHE_NAME, + kcp->kcp_size, kcp->kcp_align, + splat_kmem_cache_test_constructor, + splat_kmem_cache_test_destructor, + NULL, kcp, NULL, flags); + if (kcp->kcp_cache == NULL) { + splat_vprint(file, name, "Unable to create " + "name='%s', size=%d, align=%d, flags=0x%x\n", + SPLAT_KMEM_CACHE_NAME, size, align, flags); + rc = -ENOMEM; + goto out_free; + } + + /* + * Allocate several slabs worth of objects to verify functionality. + * However, on 32-bit systems with limited address space constrain + * it to a single slab for the purposes of this test. + */ +#ifdef _LP64 + objs = SPL_KMEM_CACHE_OBJ_PER_SLAB * 4; +#else + objs = 1; +#endif + kcd = kmem_zalloc(sizeof (kmem_cache_data_t *) * objs, KM_SLEEP); + if (kcd == NULL) { + splat_vprint(file, name, "Unable to allocate pointers " + "for %d objects\n", objs); + rc = -ENOMEM; + goto out_free; + } + + for (i = 0; i < objs; i++) { + kcd[i] = kmem_cache_alloc(kcp->kcp_cache, KM_SLEEP); + if (kcd[i] == NULL) { + splat_vprint(file, name, "Unable to allocate " + "from '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -EINVAL; + goto out_free; + } + + if (!kcd[i]->kcd_flag) { + splat_vprint(file, name, "Failed to run constructor " + "for '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -EINVAL; + goto out_free; + } + + if (kcd[i]->kcd_magic != kcp->kcp_magic) { + splat_vprint(file, name, + "Failed to pass private data to constructor " + "for '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -EINVAL; + goto out_free; + } + } + + for (i = 0; i < objs; i++) { + kmem_cache_free(kcp->kcp_cache, kcd[i]); + + /* Destructors are run for every kmem_cache_free() */ + if (kcd[i]->kcd_flag) { + splat_vprint(file, name, + "Failed to run destructor for '%s'\n", + SPLAT_KMEM_CACHE_NAME); + rc = -EINVAL; + goto out_free; + } + } + + if (kcp->kcp_count) { + splat_vprint(file, name, + "Failed to run destructor on all slab objects for '%s'\n", + SPLAT_KMEM_CACHE_NAME); + rc = -EINVAL; + } + + kmem_free(kcd, sizeof (kmem_cache_data_t *) * objs); + kmem_cache_destroy(kcp->kcp_cache); + + splat_kmem_cache_test_kcp_free(kcp); + splat_vprint(file, name, + "Success ran alloc'd/free'd %d objects of size %d\n", + objs, size); + + return (rc); + +out_free: + if (kcd) { + for (i = 0; i < objs; i++) { + if (kcd[i] != NULL) + kmem_cache_free(kcp->kcp_cache, kcd[i]); + } + + kmem_free(kcd, sizeof (kmem_cache_data_t *) * objs); + } + + if (kcp->kcp_cache) + kmem_cache_destroy(kcp->kcp_cache); + + splat_kmem_cache_test_kcp_free(kcp); + + return (rc); +} + +static int +splat_kmem_cache_thread_test(struct file *file, void *arg, char *name, + int size, int alloc, int max_time) +{ + kmem_cache_priv_t *kcp; + kthread_t *thr; + struct timespec start, stop, delta; + char cache_name[32]; + int i, rc = 0; + + kcp = splat_kmem_cache_test_kcp_alloc(file, name, size, 0, alloc); + if (!kcp) { + splat_vprint(file, name, "Unable to create '%s'\n", "kcp"); + return -ENOMEM; + } + + (void)snprintf(cache_name, 32, "%s-%d-%d", + SPLAT_KMEM_CACHE_NAME, size, alloc); + kcp->kcp_cache = + kmem_cache_create(cache_name, kcp->kcp_size, 0, + splat_kmem_cache_test_constructor, + splat_kmem_cache_test_destructor, + splat_kmem_cache_test_reclaim, + kcp, NULL, 0); + if (!kcp->kcp_cache) { + splat_vprint(file, name, "Unable to create '%s'\n", cache_name); + rc = -ENOMEM; + goto out_kcp; + } + + getnstimeofday(&start); + + for (i = 0; i < SPLAT_KMEM_THREADS; i++) { + thr = thread_create(NULL, 0, + splat_kmem_cache_test_thread, + kcp, 0, &p0, TS_RUN, defclsyspri); + if (thr == NULL) { + rc = -ESRCH; + goto out_cache; + } + } + + /* Sleep until all threads have started, then set the ready + * flag and wake them all up for maximum concurrency. */ + wait_event(kcp->kcp_ctl_waitq, + splat_kmem_cache_test_threads(kcp, SPLAT_KMEM_THREADS)); + + spin_lock(&kcp->kcp_lock); + kcp->kcp_flags |= KCP_FLAG_READY; + spin_unlock(&kcp->kcp_lock); + wake_up_all(&kcp->kcp_thr_waitq); + + /* Sleep until all thread have finished */ + wait_event(kcp->kcp_ctl_waitq, splat_kmem_cache_test_threads(kcp, 0)); + + getnstimeofday(&stop); + delta = timespec_sub(stop, start); + + splat_vprint(file, name, + "%-22s %2ld.%09ld\t" + "%lu/%lu/%lu\t%lu/%lu/%lu\n", + kcp->kcp_cache->skc_name, + delta.tv_sec, delta.tv_nsec, + (unsigned long)kcp->kcp_cache->skc_slab_total, + (unsigned long)kcp->kcp_cache->skc_slab_max, + (unsigned long)(kcp->kcp_alloc * + SPLAT_KMEM_THREADS / + SPL_KMEM_CACHE_OBJ_PER_SLAB), + (unsigned long)kcp->kcp_cache->skc_obj_total, + (unsigned long)kcp->kcp_cache->skc_obj_max, + (unsigned long)(kcp->kcp_alloc * + SPLAT_KMEM_THREADS)); + + if (delta.tv_sec >= max_time) + rc = -ETIME; + + if (!rc && kcp->kcp_rc) + rc = kcp->kcp_rc; + +out_cache: + kmem_cache_destroy(kcp->kcp_cache); +out_kcp: + splat_kmem_cache_test_kcp_free(kcp); + return rc; +} + +/* Validate small object cache behavior for dynamic/kmem/vmem caches */ +static int +splat_kmem_test5(struct file *file, void *arg) +{ + char *name = SPLAT_KMEM_TEST5_NAME; + int i, rc = 0; + + /* Randomly pick small object sizes and alignments. */ + for (i = 0; i < 100; i++) { + int size, align, flags = 0; + uint32_t rnd; + + /* Evenly distribute tests over all value cache types */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + switch (rnd & 0x03) { + default: + case 0x00: + flags = 0; + break; + case 0x01: + flags = KMC_KMEM; + break; + case 0x02: + flags = KMC_VMEM; + break; + case 0x03: + flags = KMC_SLAB; + break; + } + + /* The following flags are set with a 1/10 chance */ + flags |= ((((rnd >> 8) % 10) == 0) ? KMC_OFFSLAB : 0); + flags |= ((((rnd >> 16) % 10) == 0) ? KMC_NOEMERGENCY : 0); + + /* 32b - PAGE_SIZE */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + size = MAX(rnd % (PAGE_SIZE + 1), 32); + + /* 2^N where (3 <= N <= PAGE_SHIFT) */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + align = (1 << MAX(3, rnd % (PAGE_SHIFT + 1))); + + rc = splat_kmem_cache_test(file, arg, name, size, align, flags); + if (rc) + return (rc); + } + + return (rc); +} + +/* + * Validate large object cache behavior for dynamic/kmem/vmem caches + */ +static int +splat_kmem_test6(struct file *file, void *arg) +{ + char *name = SPLAT_KMEM_TEST6_NAME; + int i, max_size, rc = 0; + + /* Randomly pick large object sizes and alignments. */ + for (i = 0; i < 100; i++) { + int size, align, flags = 0; + uint32_t rnd; + + /* Evenly distribute tests over all value cache types */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + switch (rnd & 0x03) { + default: + case 0x00: + flags = 0; + max_size = (SPL_KMEM_CACHE_MAX_SIZE * 1024 * 1024) / 2; + break; + case 0x01: + flags = KMC_KMEM; + max_size = (SPL_MAX_ORDER_NR_PAGES - 2) * PAGE_SIZE; + break; + case 0x02: + flags = KMC_VMEM; + max_size = (SPL_KMEM_CACHE_MAX_SIZE * 1024 * 1024) / 2; + break; + case 0x03: + flags = KMC_SLAB; + max_size = SPL_MAX_KMEM_ORDER_NR_PAGES * PAGE_SIZE; + break; + } + + /* The following flags are set with a 1/10 chance */ + flags |= ((((rnd >> 8) % 10) == 0) ? KMC_OFFSLAB : 0); + flags |= ((((rnd >> 16) % 10) == 0) ? KMC_NOEMERGENCY : 0); + + /* PAGE_SIZE - max_size */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + size = MAX(rnd % (max_size + 1), PAGE_SIZE), + + /* 2^N where (3 <= N <= PAGE_SHIFT) */ + get_random_bytes((void *)&rnd, sizeof (uint32_t)); + align = (1 << MAX(3, rnd % (PAGE_SHIFT + 1))); + + rc = splat_kmem_cache_test(file, arg, name, size, align, flags); + if (rc) + return (rc); + } + + return (rc); +} + +/* + * Validate object alignment cache behavior for caches + */ +static int +splat_kmem_test7(struct file *file, void *arg) +{ + char *name = SPLAT_KMEM_TEST7_NAME; + int max_size = (SPL_KMEM_CACHE_MAX_SIZE * 1024 * 1024) / 2; + int i, rc; + + for (i = SPL_KMEM_CACHE_ALIGN; i <= PAGE_SIZE; i *= 2) { + uint32_t size; + + get_random_bytes((void *)&size, sizeof (uint32_t)); + size = MAX(size % (max_size + 1), 32); + + rc = splat_kmem_cache_test(file, arg, name, size, i, 0); + if (rc) + return rc; + + rc = splat_kmem_cache_test(file, arg, name, size, i, + KMC_OFFSLAB); + if (rc) + return rc; + } + + return rc; +} + +/* + * Validate kmem_cache_reap() by requesting the slab cache free any objects + * it can. For a few reasons this may not immediately result in more free + * memory even if objects are freed. First off, due to fragmentation we + * may not be able to reclaim any slabs. Secondly, even if we do we fully + * clear some slabs we will not want to immediately reclaim all of them + * because we may contend with cache allocations and thrash. What we want + * to see is the slab size decrease more gradually as it becomes clear they + * will not be needed. This should be achievable in less than a minute. + * If it takes longer than this something has gone wrong. + */ +static int +splat_kmem_test8(struct file *file, void *arg) +{ + kmem_cache_priv_t *kcp; + kmem_cache_thread_t *kct; + unsigned int spl_kmem_cache_expire_old; + int i, rc = 0; + + /* Enable cache aging just for this test if it is disabled */ + spl_kmem_cache_expire_old = spl_kmem_cache_expire; + spl_kmem_cache_expire = KMC_EXPIRE_AGE; + + kcp = splat_kmem_cache_test_kcp_alloc(file, SPLAT_KMEM_TEST8_NAME, + 256, 0, 0); + if (!kcp) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Unable to create '%s'\n", "kcp"); + rc = -ENOMEM; + goto out; + } + + kcp->kcp_cache = + kmem_cache_create(SPLAT_KMEM_CACHE_NAME, kcp->kcp_size, 0, + splat_kmem_cache_test_constructor, + splat_kmem_cache_test_destructor, + splat_kmem_cache_test_reclaim, + kcp, NULL, 0); + if (!kcp->kcp_cache) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Unable to create '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -ENOMEM; + goto out_kcp; + } + + kct = splat_kmem_cache_test_kct_alloc(kcp, 0); + if (!kct) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Unable to create '%s'\n", "kct"); + rc = -ENOMEM; + goto out_cache; + } + + rc = splat_kmem_cache_test_kcd_alloc(kcp, kct, SPLAT_KMEM_OBJ_COUNT); + if (rc) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, "Unable to " + "allocate from '%s'\n", SPLAT_KMEM_CACHE_NAME); + goto out_kct; + } + + /* Force reclaim every 1/10 a second for 60 seconds. */ + for (i = 0; i < 600; i++) { + kmem_cache_reap_now(kcp->kcp_cache); + splat_kmem_cache_test_debug(file, SPLAT_KMEM_TEST8_NAME, kcp); + + if (kcp->kcp_count == 0) + break; + + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ / 10); + } + + if (kcp->kcp_count == 0) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Successfully created %d objects " + "in cache %s and reclaimed them\n", + SPLAT_KMEM_OBJ_COUNT, SPLAT_KMEM_CACHE_NAME); + } else { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Failed to reclaim %u/%d objects from cache %s\n", + (unsigned)kcp->kcp_count, + SPLAT_KMEM_OBJ_COUNT, SPLAT_KMEM_CACHE_NAME); + rc = -ENOMEM; + } + + /* Cleanup our mess (for failure case of time expiring) */ + splat_kmem_cache_test_kcd_free(kcp, kct); +out_kct: + splat_kmem_cache_test_kct_free(kcp, kct); +out_cache: + kmem_cache_destroy(kcp->kcp_cache); +out_kcp: + splat_kmem_cache_test_kcp_free(kcp); +out: + spl_kmem_cache_expire = spl_kmem_cache_expire_old; + + return rc; +} + +/* Test cache aging, we have allocated a large number of objects thus + * creating a large number of slabs and then free'd them all. However, + * since there should be little memory pressure at the moment those + * slabs have not been freed. What we want to see is the slab size + * decrease gradually as it becomes clear they will not be be needed. + * This should be achievable in less than minute. If it takes longer + * than this something has gone wrong. + */ +static int +splat_kmem_test9(struct file *file, void *arg) +{ + kmem_cache_priv_t *kcp; + kmem_cache_thread_t *kct; + unsigned int spl_kmem_cache_expire_old; + int i, rc = 0, count = SPLAT_KMEM_OBJ_COUNT * 128; + + /* Enable cache aging just for this test if it is disabled */ + spl_kmem_cache_expire_old = spl_kmem_cache_expire; + spl_kmem_cache_expire = KMC_EXPIRE_AGE; + + kcp = splat_kmem_cache_test_kcp_alloc(file, SPLAT_KMEM_TEST9_NAME, + 256, 0, 0); + if (!kcp) { + splat_vprint(file, SPLAT_KMEM_TEST9_NAME, + "Unable to create '%s'\n", "kcp"); + rc = -ENOMEM; + goto out; + } + + kcp->kcp_cache = + kmem_cache_create(SPLAT_KMEM_CACHE_NAME, kcp->kcp_size, 0, + splat_kmem_cache_test_constructor, + splat_kmem_cache_test_destructor, + NULL, kcp, NULL, 0); + if (!kcp->kcp_cache) { + splat_vprint(file, SPLAT_KMEM_TEST9_NAME, + "Unable to create '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -ENOMEM; + goto out_kcp; + } + + kct = splat_kmem_cache_test_kct_alloc(kcp, 0); + if (!kct) { + splat_vprint(file, SPLAT_KMEM_TEST8_NAME, + "Unable to create '%s'\n", "kct"); + rc = -ENOMEM; + goto out_cache; + } + + rc = splat_kmem_cache_test_kcd_alloc(kcp, kct, count); + if (rc) { + splat_vprint(file, SPLAT_KMEM_TEST9_NAME, "Unable to " + "allocate from '%s'\n", SPLAT_KMEM_CACHE_NAME); + goto out_kct; + } + + splat_kmem_cache_test_kcd_free(kcp, kct); + + for (i = 0; i < 60; i++) { + splat_kmem_cache_test_debug(file, SPLAT_KMEM_TEST9_NAME, kcp); + + if (kcp->kcp_count == 0) + break; + + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ); + } + + if (kcp->kcp_count == 0) { + splat_vprint(file, SPLAT_KMEM_TEST9_NAME, + "Successfully created %d objects " + "in cache %s and reclaimed them\n", + count, SPLAT_KMEM_CACHE_NAME); + } else { + splat_vprint(file, SPLAT_KMEM_TEST9_NAME, + "Failed to reclaim %u/%d objects from cache %s\n", + (unsigned)kcp->kcp_count, count, + SPLAT_KMEM_CACHE_NAME); + rc = -ENOMEM; + } + +out_kct: + splat_kmem_cache_test_kct_free(kcp, kct); +out_cache: + kmem_cache_destroy(kcp->kcp_cache); +out_kcp: + splat_kmem_cache_test_kcp_free(kcp); +out: + spl_kmem_cache_expire = spl_kmem_cache_expire_old; + + return rc; +} + +/* + * This test creates N threads with a shared kmem cache. They then all + * concurrently allocate and free from the cache to stress the locking and + * concurrent cache performance. If any one test takes longer than 5 + * seconds to complete it is treated as a failure and may indicate a + * performance regression. On my test system no one test takes more + * than 1 second to complete so a 5x slowdown likely a problem. + */ +static int +splat_kmem_test10(struct file *file, void *arg) +{ + uint64_t size, alloc, rc = 0; + + for (size = 32; size <= 1024*1024; size *= 2) { + + splat_vprint(file, SPLAT_KMEM_TEST10_NAME, "%-22s %s", "name", + "time (sec)\tslabs \tobjs \thash\n"); + splat_vprint(file, SPLAT_KMEM_TEST10_NAME, "%-22s %s", "", + " \ttot/max/calc\ttot/max/calc\n"); + + for (alloc = 1; alloc <= 1024; alloc *= 2) { + + /* Skip tests which exceed 1/2 of physical memory. */ + if (size * alloc * SPLAT_KMEM_THREADS > physmem / 2) + continue; + + rc = splat_kmem_cache_thread_test(file, arg, + SPLAT_KMEM_TEST10_NAME, size, alloc, 5); + if (rc) + break; + } + } + + return rc; +} + +#if 0 +/* + * This test creates N threads with a shared kmem cache which overcommits + * memory by 4x. This makes it impossible for the slab to satify the + * thread requirements without having its reclaim hook run which will + * free objects back for use. This behavior is triggered by the linum VM + * detecting a low memory condition on the node and invoking the shrinkers. + * This should allow all the threads to complete while avoiding deadlock + * and for the most part out of memory events. This is very tough on the + * system so it is possible the test app may get oom'ed. This particular + * test has proven troublesome on 32-bit archs with limited virtual + * address space so it only run on 64-bit systems. + */ +static int +splat_kmem_test11(struct file *file, void *arg) +{ + uint64_t size, alloc, rc; + + size = 8 * 1024; + alloc = ((4 * physmem * PAGE_SIZE) / size) / SPLAT_KMEM_THREADS; + + splat_vprint(file, SPLAT_KMEM_TEST11_NAME, "%-22s %s", "name", + "time (sec)\tslabs \tobjs \thash\n"); + splat_vprint(file, SPLAT_KMEM_TEST11_NAME, "%-22s %s", "", + " \ttot/max/calc\ttot/max/calc\n"); + + rc = splat_kmem_cache_thread_test(file, arg, + SPLAT_KMEM_TEST11_NAME, size, alloc, 60); + + return rc; +} +#endif + +typedef struct dummy_page { + struct list_head dp_list; + char dp_pad[PAGE_SIZE - sizeof(struct list_head)]; +} dummy_page_t; + +/* + * This test is designed to verify that direct reclaim is functioning as + * expected. We allocate a large number of objects thus creating a large + * number of slabs. We then apply memory pressure and expect that the + * direct reclaim path can easily recover those slabs. The registered + * reclaim function will free the objects and the slab shrinker will call + * it repeatedly until at least a single slab can be freed. + * + * Note it may not be possible to reclaim every last slab via direct reclaim + * without a failure because the shrinker_rwsem may be contended. For this + * reason, quickly reclaiming 3/4 of the slabs is considered a success. + * + * This should all be possible within 10 seconds. For reference, on a + * system with 2G of memory this test takes roughly 0.2 seconds to run. + * It may take longer on larger memory systems but should still easily + * complete in the alloted 10 seconds. + */ +static int +splat_kmem_test13(struct file *file, void *arg) +{ + kmem_cache_priv_t *kcp; + kmem_cache_thread_t *kct; + dummy_page_t *dp; + struct list_head list; + struct timespec start, stop, delta = { 0, 0 }; + int size, count, slabs, fails = 0; + int i, rc = 0, max_time = 10; + + size = 128 * 1024; + count = ((physmem * PAGE_SIZE) / 4 / size); + + kcp = splat_kmem_cache_test_kcp_alloc(file, SPLAT_KMEM_TEST13_NAME, + size, 0, 0); + if (!kcp) { + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Unable to create '%s'\n", "kcp"); + rc = -ENOMEM; + goto out; + } + + kcp->kcp_cache = + kmem_cache_create(SPLAT_KMEM_CACHE_NAME, kcp->kcp_size, 0, + splat_kmem_cache_test_constructor, + splat_kmem_cache_test_destructor, + splat_kmem_cache_test_reclaim, + kcp, NULL, 0); + if (!kcp->kcp_cache) { + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Unable to create '%s'\n", SPLAT_KMEM_CACHE_NAME); + rc = -ENOMEM; + goto out_kcp; + } + + kct = splat_kmem_cache_test_kct_alloc(kcp, 0); + if (!kct) { + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Unable to create '%s'\n", "kct"); + rc = -ENOMEM; + goto out_cache; + } + + rc = splat_kmem_cache_test_kcd_alloc(kcp, kct, count); + if (rc) { + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, "Unable to " + "allocate from '%s'\n", SPLAT_KMEM_CACHE_NAME); + goto out_kct; + } + + i = 0; + slabs = kcp->kcp_cache->skc_slab_total; + INIT_LIST_HEAD(&list); + getnstimeofday(&start); + + /* Apply memory pressure */ + while (kcp->kcp_cache->skc_slab_total > (slabs >> 2)) { + + if ((i % 10000) == 0) + splat_kmem_cache_test_debug( + file, SPLAT_KMEM_TEST13_NAME, kcp); + + getnstimeofday(&stop); + delta = timespec_sub(stop, start); + if (delta.tv_sec >= max_time) { + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Failed to reclaim 3/4 of cache in %ds, " + "%u/%u slabs remain\n", max_time, + (unsigned)kcp->kcp_cache->skc_slab_total, + slabs); + rc = -ETIME; + break; + } + + dp = (dummy_page_t *)__get_free_page(GFP_KERNEL); + if (!dp) { + fails++; + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Failed (%d) to allocate page with %u " + "slabs still in the cache\n", fails, + (unsigned)kcp->kcp_cache->skc_slab_total); + continue; + } + + list_add(&dp->dp_list, &list); + i++; + } + + if (rc == 0) + splat_vprint(file, SPLAT_KMEM_TEST13_NAME, + "Successfully created %u slabs and with %d alloc " + "failures reclaimed 3/4 of them in %d.%03ds\n", + slabs, fails, + (int)delta.tv_sec, (int)delta.tv_nsec / 1000000); + + /* Release memory pressure pages */ + while (!list_empty(&list)) { + dp = list_entry(list.next, dummy_page_t, dp_list); + list_del_init(&dp->dp_list); + free_page((unsigned long)dp); + } + + /* Release remaining kmem cache objects */ + splat_kmem_cache_test_kcd_free(kcp, kct); +out_kct: + splat_kmem_cache_test_kct_free(kcp, kct); +out_cache: + kmem_cache_destroy(kcp->kcp_cache); +out_kcp: + splat_kmem_cache_test_kcp_free(kcp); +out: + return rc; +} + +splat_subsystem_t * +splat_kmem_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_KMEM_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_KMEM_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_KMEM; + + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST1_NAME, SPLAT_KMEM_TEST1_DESC, + SPLAT_KMEM_TEST1_ID, splat_kmem_test1); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST2_NAME, SPLAT_KMEM_TEST2_DESC, + SPLAT_KMEM_TEST2_ID, splat_kmem_test2); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST3_NAME, SPLAT_KMEM_TEST3_DESC, + SPLAT_KMEM_TEST3_ID, splat_kmem_test3); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST4_NAME, SPLAT_KMEM_TEST4_DESC, + SPLAT_KMEM_TEST4_ID, splat_kmem_test4); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST5_NAME, SPLAT_KMEM_TEST5_DESC, + SPLAT_KMEM_TEST5_ID, splat_kmem_test5); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST6_NAME, SPLAT_KMEM_TEST6_DESC, + SPLAT_KMEM_TEST6_ID, splat_kmem_test6); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST7_NAME, SPLAT_KMEM_TEST7_DESC, + SPLAT_KMEM_TEST7_ID, splat_kmem_test7); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST8_NAME, SPLAT_KMEM_TEST8_DESC, + SPLAT_KMEM_TEST8_ID, splat_kmem_test8); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST9_NAME, SPLAT_KMEM_TEST9_DESC, + SPLAT_KMEM_TEST9_ID, splat_kmem_test9); + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST10_NAME, SPLAT_KMEM_TEST10_DESC, + SPLAT_KMEM_TEST10_ID, splat_kmem_test10); +#if 0 + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST11_NAME, SPLAT_KMEM_TEST11_DESC, + SPLAT_KMEM_TEST11_ID, splat_kmem_test11); +#endif + SPLAT_TEST_INIT(sub, SPLAT_KMEM_TEST13_NAME, SPLAT_KMEM_TEST13_DESC, + SPLAT_KMEM_TEST13_ID, splat_kmem_test13); + + return sub; +} + +void +splat_kmem_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST13_ID); +#if 0 + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST11_ID); +#endif + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST10_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST9_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST8_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST7_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_KMEM_TEST1_ID); + + kfree(sub); +} + +int +splat_kmem_id(void) { + return SPLAT_SUBSYSTEM_KMEM; +} --- linux-4.4.0.orig/spl/module/splat/splat-kobj.c +++ linux-4.4.0/spl/module/splat/splat-kobj.c @@ -0,0 +1,166 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Kobj Tests. +\*****************************************************************************/ + +#include +#include "splat-internal.h" + +#define SPLAT_KOBJ_NAME "kobj" +#define SPLAT_KOBJ_DESC "Kernel Kobj Tests" + +#define SPLAT_KOBJ_TEST1_ID 0x0a01 +#define SPLAT_KOBJ_TEST1_NAME "open" +#define SPLAT_KOBJ_TEST1_DESC "Kobj Open/Close Test" + +#define SPLAT_KOBJ_TEST2_ID 0x0a02 +#define SPLAT_KOBJ_TEST2_NAME "size/read" +#define SPLAT_KOBJ_TEST2_DESC "Kobj Size/Read Test" + +#define SPLAT_KOBJ_TEST_FILE "/etc/fstab" + +static int +splat_kobj_test1(struct file *file, void *arg) +{ + struct _buf *f; + + f = kobj_open_file(SPLAT_KOBJ_TEST_FILE); + if (f == (struct _buf *)-1) { + splat_vprint(file, SPLAT_KOBJ_TEST1_NAME, "Failed to open " + "test file: %s\n", SPLAT_KOBJ_TEST_FILE); + return -ENOENT; + } + + kobj_close_file(f); + splat_vprint(file, SPLAT_KOBJ_TEST1_NAME, "Successfully opened and " + "closed test file: %s\n", SPLAT_KOBJ_TEST_FILE); + + return 0; +} /* splat_kobj_test1() */ + +static int +splat_kobj_test2(struct file *file, void *arg) +{ + struct _buf *f; + char *buf; + uint64_t size; + int rc; + + f = kobj_open_file(SPLAT_KOBJ_TEST_FILE); + if (f == (struct _buf *)-1) { + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Failed to open " + "test file: %s\n", SPLAT_KOBJ_TEST_FILE); + return -ENOENT; + } + + rc = kobj_get_filesize(f, &size); + if (rc) { + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Failed stat of " + "test file: %s (%d)\n", SPLAT_KOBJ_TEST_FILE, rc); + goto out; + } + + buf = kmalloc(size + 1, GFP_KERNEL); + if (!buf) { + rc = -ENOMEM; + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Failed to alloc " + "%lld bytes for tmp buffer (%d)\n", + (long long)size, rc); + goto out; + } + + memset(buf, 0, size + 1); + rc = kobj_read_file(f, buf, size, 0); + if (rc < 0) { + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Failed read of " + "test file: %s (%d)\n", SPLAT_KOBJ_TEST_FILE, rc); + goto out2; + } + + /* Validate we read as many bytes as expected based on the stat. This + * isn't a perfect test since we didn't create the file however it is + * pretty unlikely there are garbage characters in your /etc/fstab */ + if (size != (uint64_t)strlen(buf)) { + rc = -EFBIG; + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Stat'ed size " + "(%lld) does not match number of bytes read " + "(%lld)\n", (long long)size, + (long long)strlen(buf)); + goto out2; + } + + rc = 0; + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "\n%s\n", buf); + splat_vprint(file, SPLAT_KOBJ_TEST2_NAME, "Successfully stat'ed " + "and read expected number of bytes (%lld) from test " + "file: %s\n", (long long)size, SPLAT_KOBJ_TEST_FILE); +out2: + kfree(buf); +out: + kobj_close_file(f); + + return rc; +} /* splat_kobj_test2() */ + +splat_subsystem_t * +splat_kobj_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_KOBJ_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_KOBJ_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_KOBJ; + + SPLAT_TEST_INIT(sub, SPLAT_KOBJ_TEST1_NAME, SPLAT_KOBJ_TEST1_DESC, + SPLAT_KOBJ_TEST1_ID, splat_kobj_test1); + SPLAT_TEST_INIT(sub, SPLAT_KOBJ_TEST2_NAME, SPLAT_KOBJ_TEST2_DESC, + SPLAT_KOBJ_TEST2_ID, splat_kobj_test2); + + return sub; +} /* splat_kobj_init() */ + +void +splat_kobj_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_KOBJ_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_KOBJ_TEST1_ID); + + kfree(sub); +} /* splat_kobj_fini() */ + +int +splat_kobj_id(void) +{ + return SPLAT_SUBSYSTEM_KOBJ; +} /* splat_kobj_id() */ --- linux-4.4.0.orig/spl/module/splat/splat-linux.c +++ linux-4.4.0/spl/module/splat/splat-linux.c @@ -0,0 +1,237 @@ +/*****************************************************************************\ + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Kernel Compatibility Tests. +\*****************************************************************************/ + +#include +#include +#include "splat-internal.h" + +#define SPLAT_LINUX_NAME "linux" +#define SPLAT_LINUX_DESC "Kernel Compatibility Tests" + +#define SPLAT_LINUX_TEST1_ID 0x1001 +#define SPLAT_LINUX_TEST1_NAME "shrinker" +#define SPLAT_LINUX_TEST1_DESC "Shrinker test" + +/* + * Wait queue used to eliminate race between dropping of slab + * and execution of the shrinker callback + */ +DECLARE_WAIT_QUEUE_HEAD(shrinker_wait); + +SPL_SHRINKER_CALLBACK_FWD_DECLARE(splat_linux_shrinker_fn); +SPL_SHRINKER_DECLARE(splat_linux_shrinker, splat_linux_shrinker_fn, 1); +static unsigned long splat_linux_shrinker_size = 0; +static struct file *splat_linux_shrinker_file = NULL; + +static spl_shrinker_t +__splat_linux_shrinker_fn(struct shrinker *shrink, struct shrink_control *sc) +{ + static int failsafe = 0; + static unsigned long last_splat_linux_shrinker_size = 0; + unsigned long size; + spl_shrinker_t count; + + /* + * shrinker_size can only decrease or stay the same between callbacks + * in the same run, so Reset failsafe whenever shrinker increases + * as this indicates a new run. + */ + if (last_splat_linux_shrinker_size < splat_linux_shrinker_size) + failsafe = 0; + + last_splat_linux_shrinker_size = splat_linux_shrinker_size; + + if (sc->nr_to_scan) { + size = MIN(sc->nr_to_scan, splat_linux_shrinker_size); + splat_linux_shrinker_size -= size; + + splat_vprint(splat_linux_shrinker_file, SPLAT_LINUX_TEST1_NAME, + "Reclaimed %lu objects, size now %lu\n", + size, splat_linux_shrinker_size); + +#ifdef HAVE_SPLIT_SHRINKER_CALLBACK + count = size; +#else + count = splat_linux_shrinker_size; +#endif /* HAVE_SPLIT_SHRINKER_CALLBACK */ + + } else { + count = splat_linux_shrinker_size; + splat_vprint(splat_linux_shrinker_file, SPLAT_LINUX_TEST1_NAME, + "Cache size is %lu\n", splat_linux_shrinker_size); + } + + /* Far more calls than expected abort drop_slab as a failsafe */ + if (failsafe > 100) { + splat_vprint(splat_linux_shrinker_file, SPLAT_LINUX_TEST1_NAME, + "Far more calls than expected (%d), size now %lu\n", + failsafe, splat_linux_shrinker_size); + return (SHRINK_STOP); + } else { + /* + * We only increment failsafe if it doesn't trigger. This + * makes any failsafe failure persistent until the next test. + */ + failsafe++; + } + + /* Shrinker has run, so signal back to test. */ + wake_up(&shrinker_wait); + + return (count); +} + +SPL_SHRINKER_CALLBACK_WRAPPER(splat_linux_shrinker_fn); + +#define DROP_SLAB_CMD \ + "exec 0/proc/sys/vm/drop_caches " \ + " 2>/dev/null; " \ + "echo 2" + +static int +splat_linux_drop_slab(struct file *file) +{ + char *argv[] = { "/bin/sh", + "-c", + DROP_SLAB_CMD, + NULL }; + char *envp[] = { "HOME=/", + "TERM=linux", + "PATH=/sbin:/usr/sbin:/bin:/usr/bin", + NULL }; + int rc; + + rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); + if (rc) + splat_vprint(file, SPLAT_LINUX_TEST1_NAME, + "Failed user helper '%s %s %s', rc = %d\n", + argv[0], argv[1], argv[2], rc); + + return rc; +} + +/* + * Verify correct shrinker functionality by registering a shrinker + * with the required compatibility macros. We then use a simulated + * cache and force the systems caches to be dropped. The shrinker + * should be repeatedly called until it reports that the cache is + * empty. It is then cleanly unregistered and correct behavior is + * verified. There are now four slightly different supported shrinker + * API and this test ensures the compatibility code is correct. + */ +static int +splat_linux_test1(struct file *file, void *arg) +{ + int rc = -EINVAL; + + /* + * Globals used by the shrinker, it is not safe to run this + * test concurrently this is a safe assumption for SPLAT tests. + * Regardless we do some minimal checking a bail if concurrent + * use is detected. + */ + if (splat_linux_shrinker_size || splat_linux_shrinker_file) { + splat_vprint(file, SPLAT_LINUX_TEST1_NAME, + "Failed due to concurrent shrinker test, rc = %d\n", rc); + return (rc); + } + + splat_linux_shrinker_size = 1024; + splat_linux_shrinker_file = file; + + spl_register_shrinker(&splat_linux_shrinker); + rc = splat_linux_drop_slab(file); + if (rc) + goto out; + + /* + * By the time we get here, it is possible that the shrinker has not + * yet run. splat_linux_drop_slab sends a signal for it to run, but + * there is no guarantee of when it will actually run. We wait for it + * to run here, terminating when either the shrinker size is now 0 or + * we timeout after 1 second, which should be an eternity (error). + */ + rc = wait_event_timeout(shrinker_wait, !splat_linux_shrinker_size, HZ); + if (!rc) { + splat_vprint(file, SPLAT_LINUX_TEST1_NAME, + "Failed cache shrinking timed out, size now %lu", + splat_linux_shrinker_size); + rc = -ETIMEDOUT; + } else { + rc = 0; + } + + if (!rc && splat_linux_shrinker_size != 0) { + splat_vprint(file, SPLAT_LINUX_TEST1_NAME, + "Failed cache was not shrunk to 0, size now %lu", + splat_linux_shrinker_size); + rc = -EDOM; + } +out: + spl_unregister_shrinker(&splat_linux_shrinker); + + splat_linux_shrinker_size = 0; + splat_linux_shrinker_file = NULL; + + return rc; +} + +splat_subsystem_t * +splat_linux_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_LINUX_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_LINUX_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_LINUX; + + SPLAT_TEST_INIT(sub, SPLAT_LINUX_TEST1_NAME, SPLAT_LINUX_TEST1_DESC, + SPLAT_LINUX_TEST1_ID, splat_linux_test1); + + return sub; +} + +void +splat_linux_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_LINUX_TEST1_ID); + + kfree(sub); +} + +int +splat_linux_id(void) { + return SPLAT_SUBSYSTEM_LINUX; +} --- linux-4.4.0.orig/spl/module/splat/splat-list.c +++ linux-4.4.0/spl/module/splat/splat-list.c @@ -0,0 +1,475 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) List Tests. +\*****************************************************************************/ + +#include +#include +#include "splat-internal.h" + +#define SPLAT_LIST_NAME "list" +#define SPLAT_LIST_DESC "Kernel List Tests" + +#define SPLAT_LIST_TEST1_ID 0x0c01 +#define SPLAT_LIST_TEST1_NAME "create/destroy" +#define SPLAT_LIST_TEST1_DESC "Create/destroy Test" + +#define SPLAT_LIST_TEST2_ID 0x0c02 +#define SPLAT_LIST_TEST2_NAME "ins/rm head" +#define SPLAT_LIST_TEST2_DESC "Insert/remove head Test" + +#define SPLAT_LIST_TEST3_ID 0x0c03 +#define SPLAT_LIST_TEST3_NAME "ins/rm tail" +#define SPLAT_LIST_TEST3_DESC "Insert/remove tail Test" + +#define SPLAT_LIST_TEST4_ID 0x0c04 +#define SPLAT_LIST_TEST4_NAME "insert_after" +#define SPLAT_LIST_TEST4_DESC "Insert_after Test" + +#define SPLAT_LIST_TEST5_ID 0x0c05 +#define SPLAT_LIST_TEST5_NAME "insert_before" +#define SPLAT_LIST_TEST5_DESC "Insert_before Test" + +#define SPLAT_LIST_TEST6_ID 0x0c06 +#define SPLAT_LIST_TEST6_NAME "remove" +#define SPLAT_LIST_TEST6_DESC "Remove Test" + +#define SPLAT_LIST_TEST7_ID 0x0c7 +#define SPLAT_LIST_TEST7_NAME "active" +#define SPLAT_LIST_TEST7_DESC "Active Test" + +/* It is important that li_node is not the first element, this + * ensures the list_d2l/list_object macros are working correctly. */ +typedef struct list_item { + int li_data; + list_node_t li_node; +} list_item_t; + +#define LIST_ORDER_STACK 0 +#define LIST_ORDER_QUEUE 1 + +static int +splat_list_test1(struct file *file, void *arg) +{ + list_t list; + + splat_vprint(file, SPLAT_LIST_TEST1_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + if (!list_is_empty(&list)) { + splat_vprint(file, SPLAT_LIST_TEST1_NAME, + "New list NOT empty%s\n", ""); + /* list_destroy() intentionally skipped to avoid assert */ + return -EEXIST; + } + + splat_vprint(file, SPLAT_LIST_TEST1_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + /* Validate the list has been destroyed */ + if (list_link_active(&list.list_head)) { + splat_vprint(file, SPLAT_LIST_TEST1_NAME, + "Destroyed list still active%s", ""); + return -EIO; + } + + return 0; +} + +static int +splat_list_validate(list_t *list, int size, int order, int mult) +{ + list_item_t *li; + int i; + + /* Walk all items in list from head to verify stack or queue + * ordering. We bound the for loop by size+1 to ensure that + * we still terminate if there is list corruption. We also + * intentionally make things a little more complex than they + * need to be by using list_head/list_next for queues, and + * list_tail/list_prev for stacks. This is simply done for + * coverage and to ensure these function are working right. + */ + for (i = 0, li = (order ? list_head(list) : list_tail(list)); + i < size + 1 && li != NULL; + i++, li = (order ? list_next(list, li) : list_prev(list, li))) + if (li->li_data != i * mult) + return -EIDRM; + + if (i != size) + return -E2BIG; + + return 0; +} + +static int +splat_list_test2(struct file *file, void *arg) +{ + list_t list; + list_item_t *li; + int i, list_size = 8, rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST2_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + /* Insert all items at the list head to form a stack */ + splat_vprint(file, SPLAT_LIST_TEST2_NAME, + "Adding %d items to list head\n", list_size); + for (i = 0; i < list_size; i++) { + li = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li == NULL) { + rc = -ENOMEM; + goto out; + } + + list_link_init(&li->li_node); + li->li_data = i; + list_insert_head(&list, li); + } + + splat_vprint(file, SPLAT_LIST_TEST2_NAME, + "Validating %d item list is a stack\n", list_size); + rc = splat_list_validate(&list, list_size, LIST_ORDER_STACK, 1); + if (rc) + splat_vprint(file, SPLAT_LIST_TEST2_NAME, + "List validation failed, %d\n", rc); +out: + /* Remove all items */ + splat_vprint(file, SPLAT_LIST_TEST2_NAME, + "Removing %d items from list head\n", list_size); + while ((li = list_remove_head(&list))) + kmem_free(li, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST2_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +static int +splat_list_test3(struct file *file, void *arg) +{ + list_t list; + list_item_t *li; + int i, list_size = 8, rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST3_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + /* Insert all items at the list tail to form a queue */ + splat_vprint(file, SPLAT_LIST_TEST3_NAME, + "Adding %d items to list tail\n", list_size); + for (i = 0; i < list_size; i++) { + li = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li == NULL) { + rc = -ENOMEM; + goto out; + } + + list_link_init(&li->li_node); + li->li_data = i; + list_insert_tail(&list, li); + } + + splat_vprint(file, SPLAT_LIST_TEST3_NAME, + "Validating %d item list is a queue\n", list_size); + rc = splat_list_validate(&list, list_size, LIST_ORDER_QUEUE, 1); + if (rc) + splat_vprint(file, SPLAT_LIST_TEST3_NAME, + "List validation failed, %d\n", rc); +out: + /* Remove all items */ + splat_vprint(file, SPLAT_LIST_TEST3_NAME, + "Removing %d items from list tail\n", list_size); + while ((li = list_remove_tail(&list))) + kmem_free(li, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST3_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +static int +splat_list_test4(struct file *file, void *arg) +{ + list_t list; + list_item_t *li_new, *li_last = NULL; + int i, list_size = 8, rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST4_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + /* Insert all items after the last item to form a queue */ + splat_vprint(file, SPLAT_LIST_TEST4_NAME, + "Adding %d items each after the last item\n", list_size); + for (i = 0; i < list_size; i++) { + li_new = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li_new == NULL) { + rc = -ENOMEM; + goto out; + } + + list_link_init(&li_new->li_node); + li_new->li_data = i; + list_insert_after(&list, li_last, li_new); + li_last = li_new; + } + + splat_vprint(file, SPLAT_LIST_TEST4_NAME, + "Validating %d item list is a queue\n", list_size); + rc = splat_list_validate(&list, list_size, LIST_ORDER_QUEUE, 1); + if (rc) + splat_vprint(file, SPLAT_LIST_TEST4_NAME, + "List validation failed, %d\n", rc); +out: + /* Remove all items */ + splat_vprint(file, SPLAT_LIST_TEST4_NAME, + "Removing %d items from list tail\n", list_size); + while ((li_new = list_remove_head(&list))) + kmem_free(li_new, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST4_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +static int +splat_list_test5(struct file *file, void *arg) +{ + list_t list; + list_item_t *li_new, *li_last = NULL; + int i, list_size = 8, rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST5_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + /* Insert all items before the last item to form a stack */ + splat_vprint(file, SPLAT_LIST_TEST5_NAME, + "Adding %d items each before the last item\n", list_size); + for (i = 0; i < list_size; i++) { + li_new = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li_new == NULL) { + rc = -ENOMEM; + goto out; + } + + list_link_init(&li_new->li_node); + li_new->li_data = i; + list_insert_before(&list, li_last, li_new); + li_last = li_new; + } + + splat_vprint(file, SPLAT_LIST_TEST5_NAME, + "Validating %d item list is a queue\n", list_size); + rc = splat_list_validate(&list, list_size, LIST_ORDER_STACK, 1); + if (rc) + splat_vprint(file, SPLAT_LIST_TEST5_NAME, + "List validation failed, %d\n", rc); +out: + /* Remove all items */ + splat_vprint(file, SPLAT_LIST_TEST5_NAME, + "Removing %d items from list tail\n", list_size); + while ((li_new = list_remove_tail(&list))) + kmem_free(li_new, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST5_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +static int +splat_list_test6(struct file *file, void *arg) +{ + list_t list; + list_item_t *li, *li_prev; + int i, list_size = 8, rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST6_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + /* Insert all items at the list tail to form a queue */ + splat_vprint(file, SPLAT_LIST_TEST6_NAME, + "Adding %d items to list tail\n", list_size); + for (i = 0; i < list_size; i++) { + li = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li == NULL) { + rc = -ENOMEM; + goto out; + } + + list_link_init(&li->li_node); + li->li_data = i; + list_insert_tail(&list, li); + } + + /* Remove all odd items from the queue */ + splat_vprint(file, SPLAT_LIST_TEST6_NAME, + "Removing %d odd items from the list\n", list_size >> 1); + for (li = list_head(&list); li != NULL; li = list_next(&list, li)) { + if (li->li_data % 2 == 1) { + li_prev = list_prev(&list, li); + list_remove(&list, li); + kmem_free(li, sizeof(list_item_t)); + li = li_prev; + } + } + + splat_vprint(file, SPLAT_LIST_TEST6_NAME, "Validating %d item " + "list is a queue of only even elements\n", list_size / 2); + rc = splat_list_validate(&list, list_size / 2, LIST_ORDER_QUEUE, 2); + if (rc) + splat_vprint(file, SPLAT_LIST_TEST6_NAME, + "List validation failed, %d\n", rc); +out: + /* Remove all items */ + splat_vprint(file, SPLAT_LIST_TEST6_NAME, + "Removing %d items from list tail\n", list_size / 2); + while ((li = list_remove_tail(&list))) + kmem_free(li, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST6_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +static int +splat_list_test7(struct file *file, void *arg) +{ + list_t list; + list_item_t *li; + int rc = 0; + + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Creating list\n%s", ""); + list_create(&list, sizeof(list_item_t), offsetof(list_item_t, li_node)); + + li = kmem_alloc(sizeof(list_item_t), KM_SLEEP); + if (li == NULL) { + rc = -ENOMEM; + goto out; + } + + /* Validate newly initialized node is inactive */ + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Init list node\n%s", ""); + list_link_init(&li->li_node); + if (list_link_active(&li->li_node)) { + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Newly initialized " + "list node should inactive %p/%p\n", + li->li_node.prev, li->li_node.next); + rc = -EINVAL; + goto out_li; + } + + /* Validate node is active when linked in to a list */ + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Insert list node\n%s", ""); + list_insert_head(&list, li); + if (!list_link_active(&li->li_node)) { + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "List node " + "inserted in list should be active %p/%p\n", + li->li_node.prev, li->li_node.next); + rc = -EINVAL; + goto out; + } + + /* Validate node is inactive when removed from list */ + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Remove list node\n%s", ""); + list_remove(&list, li); + if (list_link_active(&li->li_node)) { + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "List node " + "removed from list should be inactive %p/%p\n", + li->li_node.prev, li->li_node.next); + rc = -EINVAL; + } +out_li: + kmem_free(li, sizeof(list_item_t)); +out: + /* Remove all items */ + while ((li = list_remove_head(&list))) + kmem_free(li, sizeof(list_item_t)); + + splat_vprint(file, SPLAT_LIST_TEST7_NAME, "Destroying list\n%s", ""); + list_destroy(&list); + + return rc; +} + +splat_subsystem_t * +splat_list_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_LIST_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_LIST_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_LIST; + + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST1_NAME, SPLAT_LIST_TEST1_DESC, + SPLAT_LIST_TEST1_ID, splat_list_test1); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST2_NAME, SPLAT_LIST_TEST2_DESC, + SPLAT_LIST_TEST2_ID, splat_list_test2); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST3_NAME, SPLAT_LIST_TEST3_DESC, + SPLAT_LIST_TEST3_ID, splat_list_test3); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST4_NAME, SPLAT_LIST_TEST4_DESC, + SPLAT_LIST_TEST4_ID, splat_list_test4); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST5_NAME, SPLAT_LIST_TEST5_DESC, + SPLAT_LIST_TEST5_ID, splat_list_test5); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST6_NAME, SPLAT_LIST_TEST6_DESC, + SPLAT_LIST_TEST6_ID, splat_list_test6); + SPLAT_TEST_INIT(sub, SPLAT_LIST_TEST7_NAME, SPLAT_LIST_TEST7_DESC, + SPLAT_LIST_TEST7_ID, splat_list_test7); + + return sub; +} + +void +splat_list_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST7_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_LIST_TEST1_ID); + + kfree(sub); +} + +int +splat_list_id(void) +{ + return SPLAT_SUBSYSTEM_LIST; +} --- linux-4.4.0.orig/spl/module/splat/splat-mutex.c +++ linux-4.4.0/spl/module/splat/splat-mutex.c @@ -0,0 +1,441 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Mutex Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_MUTEX_NAME "mutex" +#define SPLAT_MUTEX_DESC "Kernel Mutex Tests" + +#define SPLAT_MUTEX_TEST1_ID 0x0401 +#define SPLAT_MUTEX_TEST1_NAME "tryenter" +#define SPLAT_MUTEX_TEST1_DESC "Validate mutex_tryenter() correctness" + +#define SPLAT_MUTEX_TEST2_ID 0x0402 +#define SPLAT_MUTEX_TEST2_NAME "race" +#define SPLAT_MUTEX_TEST2_DESC "Many threads entering/exiting the mutex" + +#define SPLAT_MUTEX_TEST3_ID 0x0403 +#define SPLAT_MUTEX_TEST3_NAME "owned" +#define SPLAT_MUTEX_TEST3_DESC "Validate mutex_owned() correctness" + +#define SPLAT_MUTEX_TEST4_ID 0x0404 +#define SPLAT_MUTEX_TEST4_NAME "owner" +#define SPLAT_MUTEX_TEST4_DESC "Validate mutex_owner() correctness" + +#define SPLAT_MUTEX_TEST_MAGIC 0x115599DDUL +#define SPLAT_MUTEX_TEST_NAME "mutex_test" +#define SPLAT_MUTEX_TEST_TASKQ "mutex_taskq" +#define SPLAT_MUTEX_TEST_COUNT 128 + +typedef struct mutex_priv { + unsigned long mp_magic; + struct file *mp_file; + kmutex_t mp_mtx; + int mp_rc; + int mp_rc2; +} mutex_priv_t; + +static void +splat_mutex_test1_func(void *arg) +{ + mutex_priv_t *mp = (mutex_priv_t *)arg; + ASSERT(mp->mp_magic == SPLAT_MUTEX_TEST_MAGIC); + + if (mutex_tryenter(&mp->mp_mtx)) { + mp->mp_rc = 0; + mutex_exit(&mp->mp_mtx); + } else { + mp->mp_rc = -EBUSY; + } +} + +static int +splat_mutex_test1(struct file *file, void *arg) +{ + mutex_priv_t *mp; + taskq_t *tq; + int id, rc = 0; + + mp = (mutex_priv_t *)kmalloc(sizeof(*mp), GFP_KERNEL); + if (mp == NULL) + return -ENOMEM; + + tq = taskq_create(SPLAT_MUTEX_TEST_TASKQ, 1, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE); + if (tq == NULL) { + rc = -ENOMEM; + goto out2; + } + + mp->mp_magic = SPLAT_MUTEX_TEST_MAGIC; + mp->mp_file = file; + mutex_init(&mp->mp_mtx, SPLAT_MUTEX_TEST_NAME, MUTEX_DEFAULT, NULL); + mutex_enter(&mp->mp_mtx); + + /* + * Schedule a task function which will try and acquire the mutex via + * mutex_tryenter() while it's held. This should fail and the task + * function will indicate this status in the passed private data. + */ + mp->mp_rc = -EINVAL; + id = taskq_dispatch(tq, splat_mutex_test1_func, mp, TQ_SLEEP); + if (id == 0) { + mutex_exit(&mp->mp_mtx); + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, "%s", + "taskq_dispatch() failed\n"); + rc = -EINVAL; + goto out; + } + + taskq_wait_id(tq, id); + mutex_exit(&mp->mp_mtx); + + /* Task function successfully acquired mutex, very bad! */ + if (mp->mp_rc != -EBUSY) { + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, + "mutex_trylock() incorrectly succeeded when " + "the mutex was held, %d/%d\n", id, mp->mp_rc); + rc = -EINVAL; + goto out; + } else { + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, "%s", + "mutex_trylock() correctly failed when " + "the mutex was held\n"); + } + + /* + * Schedule a task function which will try and acquire the mutex via + * mutex_tryenter() while it is not held. This should succeed and + * can be verified by checking the private data. + */ + mp->mp_rc = -EINVAL; + id = taskq_dispatch(tq, splat_mutex_test1_func, mp, TQ_SLEEP); + if (id == 0) { + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, "%s", + "taskq_dispatch() failed\n"); + rc = -EINVAL; + goto out; + } + + taskq_wait_id(tq, id); + + /* Task function failed to acquire mutex, very bad! */ + if (mp->mp_rc != 0) { + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, + "mutex_trylock() incorrectly failed when " + "the mutex was not held, %d/%d\n", id, mp->mp_rc); + rc = -EINVAL; + } else { + splat_vprint(file, SPLAT_MUTEX_TEST1_NAME, "%s", + "mutex_trylock() correctly succeeded " + "when the mutex was not held\n"); + } +out: + taskq_destroy(tq); + mutex_destroy(&(mp->mp_mtx)); +out2: + kfree(mp); + return rc; +} + +static void +splat_mutex_test2_func(void *arg) +{ + mutex_priv_t *mp = (mutex_priv_t *)arg; + int rc; + ASSERT(mp->mp_magic == SPLAT_MUTEX_TEST_MAGIC); + + /* Read the value before sleeping and write it after we wake up to + * maximize the chance of a race if mutexs are not working properly */ + mutex_enter(&mp->mp_mtx); + rc = mp->mp_rc; + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ / 100); /* 1/100 of a second */ + VERIFY(mp->mp_rc == rc); + mp->mp_rc = rc + 1; + mutex_exit(&mp->mp_mtx); +} + +static int +splat_mutex_test2(struct file *file, void *arg) +{ + mutex_priv_t *mp; + taskq_t *tq; + int i, rc = 0; + + mp = (mutex_priv_t *)kmalloc(sizeof(*mp), GFP_KERNEL); + if (mp == NULL) + return -ENOMEM; + + /* Create several threads allowing tasks to race with each other */ + tq = taskq_create(SPLAT_MUTEX_TEST_TASKQ, num_online_cpus(), + defclsyspri, 50, INT_MAX, TASKQ_PREPOPULATE); + if (tq == NULL) { + rc = -ENOMEM; + goto out; + } + + mp->mp_magic = SPLAT_MUTEX_TEST_MAGIC; + mp->mp_file = file; + mutex_init(&(mp->mp_mtx), SPLAT_MUTEX_TEST_NAME, MUTEX_DEFAULT, NULL); + mp->mp_rc = 0; + + /* + * Schedule N work items to the work queue each of which enters the + * mutex, sleeps briefly, then exits the mutex. On a multiprocessor + * box these work items will be handled by all available CPUs. The + * task function checks to ensure the tracked shared variable is + * always only incremented by one. Additionally, the mutex itself + * is instrumented such that if any two processors are in the + * critical region at the same time the system will panic. If the + * mutex is implemented right this will never happy, that's a pass. + */ + for (i = 0; i < SPLAT_MUTEX_TEST_COUNT; i++) { + if (!taskq_dispatch(tq, splat_mutex_test2_func, mp, TQ_SLEEP)) { + splat_vprint(file, SPLAT_MUTEX_TEST2_NAME, + "Failed to queue task %d\n", i); + rc = -EINVAL; + } + } + + taskq_wait(tq); + + if (mp->mp_rc == SPLAT_MUTEX_TEST_COUNT) { + splat_vprint(file, SPLAT_MUTEX_TEST2_NAME, "%d racing threads " + "correctly entered/exited the mutex %d times\n", + num_online_cpus(), mp->mp_rc); + } else { + splat_vprint(file, SPLAT_MUTEX_TEST2_NAME, "%d racing threads " + "only processed %d/%d mutex work items\n", + num_online_cpus(),mp->mp_rc,SPLAT_MUTEX_TEST_COUNT); + rc = -EINVAL; + } + + taskq_destroy(tq); + mutex_destroy(&(mp->mp_mtx)); +out: + kfree(mp); + return rc; +} + +static void +splat_mutex_owned(void *priv) +{ + mutex_priv_t *mp = (mutex_priv_t *)priv; + + ASSERT(mp->mp_magic == SPLAT_MUTEX_TEST_MAGIC); + mp->mp_rc = mutex_owned(&mp->mp_mtx); + mp->mp_rc2 = MUTEX_HELD(&mp->mp_mtx); +} + +static int +splat_mutex_test3(struct file *file, void *arg) +{ + mutex_priv_t mp; + taskq_t *tq; + int rc = 0; + + mp.mp_magic = SPLAT_MUTEX_TEST_MAGIC; + mp.mp_file = file; + mutex_init(&mp.mp_mtx, SPLAT_MUTEX_TEST_NAME, MUTEX_DEFAULT, NULL); + + if ((tq = taskq_create(SPLAT_MUTEX_TEST_NAME, 1, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Taskq '%s' " + "create failed\n", SPLAT_MUTEX_TEST3_NAME); + return -EINVAL; + } + + mutex_enter(&mp.mp_mtx); + + /* Mutex should be owned by current */ + if (!mutex_owned(&mp.mp_mtx)) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Unowned mutex " + "should be owned by pid %d\n", current->pid); + rc = -EINVAL; + goto out_exit; + } + + if (taskq_dispatch(tq, splat_mutex_owned, &mp, TQ_SLEEP) == 0) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Failed to " + "dispatch function '%s' to taskq\n", + sym2str(splat_mutex_owned)); + rc = -EINVAL; + goto out_exit; + } + taskq_wait(tq); + + /* Mutex should not be owned which checked from a different thread */ + if (mp.mp_rc || mp.mp_rc2) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Mutex owned by " + "pid %d not by taskq\n", current->pid); + rc = -EINVAL; + goto out_exit; + } + + mutex_exit(&mp.mp_mtx); + + /* Mutex should not be owned by current */ + if (mutex_owned(&mp.mp_mtx)) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Mutex owned by " + "pid %d it should be unowned\b", current->pid); + rc = -EINVAL; + goto out; + } + + if (taskq_dispatch(tq, splat_mutex_owned, &mp, TQ_SLEEP) == 0) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Failed to " + "dispatch function '%s' to taskq\n", + sym2str(splat_mutex_owned)); + rc = -EINVAL; + goto out; + } + taskq_wait(tq); + + /* Mutex should be owned by no one */ + if (mp.mp_rc || mp.mp_rc2) { + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "Mutex owned by " + "no one, %d/%d disagrees\n", mp.mp_rc, mp.mp_rc2); + rc = -EINVAL; + goto out; + } + + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "%s", + "Correct mutex_owned() behavior\n"); + goto out; +out_exit: + mutex_exit(&mp.mp_mtx); +out: + mutex_destroy(&mp.mp_mtx); + taskq_destroy(tq); + + return rc; +} + +static int +splat_mutex_test4(struct file *file, void *arg) +{ + kmutex_t mtx; + kthread_t *owner; + int rc = 0; + + mutex_init(&mtx, SPLAT_MUTEX_TEST_NAME, MUTEX_DEFAULT, NULL); + + /* + * Verify mutex owner is cleared after being dropped. Depending + * on how you build your kernel this behavior changes, ensure the + * SPL mutex implementation is properly detecting this. + */ + mutex_enter(&mtx); + msleep(100); + mutex_exit(&mtx); + if (MUTEX_HELD(&mtx)) { + splat_vprint(file, SPLAT_MUTEX_TEST4_NAME, "Mutex should " + "not be held, bit is by %p\n", mutex_owner(&mtx)); + rc = -EINVAL; + goto out; + } + + mutex_enter(&mtx); + + /* Mutex should be owned by current */ + owner = mutex_owner(&mtx); + if (current != owner) { + splat_vprint(file, SPLAT_MUTEX_TEST4_NAME, "Mutex should " + "be owned by pid %d but is owned by pid %d\n", + current->pid, owner ? owner->pid : -1); + rc = -EINVAL; + goto out; + } + + mutex_exit(&mtx); + + /* Mutex should not be owned by any task */ + owner = mutex_owner(&mtx); + if (owner) { + splat_vprint(file, SPLAT_MUTEX_TEST4_NAME, "Mutex should not " + "be owned but is owned by pid %d\n", owner->pid); + rc = -EINVAL; + goto out; + } + + splat_vprint(file, SPLAT_MUTEX_TEST3_NAME, "%s", + "Correct mutex_owner() behavior\n"); +out: + mutex_destroy(&mtx); + + return rc; +} + +splat_subsystem_t * +splat_mutex_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_MUTEX_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_MUTEX_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_MUTEX; + + SPLAT_TEST_INIT(sub, SPLAT_MUTEX_TEST1_NAME, SPLAT_MUTEX_TEST1_DESC, + SPLAT_MUTEX_TEST1_ID, splat_mutex_test1); + SPLAT_TEST_INIT(sub, SPLAT_MUTEX_TEST2_NAME, SPLAT_MUTEX_TEST2_DESC, + SPLAT_MUTEX_TEST2_ID, splat_mutex_test2); + SPLAT_TEST_INIT(sub, SPLAT_MUTEX_TEST3_NAME, SPLAT_MUTEX_TEST3_DESC, + SPLAT_MUTEX_TEST3_ID, splat_mutex_test3); + SPLAT_TEST_INIT(sub, SPLAT_MUTEX_TEST4_NAME, SPLAT_MUTEX_TEST4_DESC, + SPLAT_MUTEX_TEST4_ID, splat_mutex_test4); + + return sub; +} + +void +splat_mutex_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_MUTEX_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_MUTEX_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_MUTEX_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_MUTEX_TEST1_ID); + + kfree(sub); +} + +int +splat_mutex_id(void) { + return SPLAT_SUBSYSTEM_MUTEX; +} --- linux-4.4.0.orig/spl/module/splat/splat-random.c +++ linux-4.4.0/spl/module/splat/splat-random.c @@ -0,0 +1,130 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Random Number Generator Tests. +\*****************************************************************************/ + +#include +#include +#include "splat-internal.h" + +#define SPLAT_KRNG_NAME "krng" +#define SPLAT_KRNG_DESC "Kernel Random Number Generator Tests" + +#define SPLAT_KRNG_TEST1_ID 0x0301 +#define SPLAT_KRNG_TEST1_NAME "freq" +#define SPLAT_KRNG_TEST1_DESC "Frequency Test" + +#define KRNG_NUM_BITS 1048576 +#define KRNG_NUM_BYTES (KRNG_NUM_BITS >> 3) +#define KRNG_NUM_BITS_DIV2 (KRNG_NUM_BITS >> 1) +#define KRNG_ERROR_RANGE 2097 + +/* Random Number Generator Tests + There can be meny more tests on quality of the + random number generator. For now we are only + testing the frequency of particular bits. + We could also test consecutive sequences, + randomness within a particular block, etc. + but is probably not necessary for our purposes */ + +static int +splat_krng_test1(struct file *file, void *arg) +{ + uint8_t *buf; + int i, j, diff, num = 0, rc = 0; + + buf = kmalloc(sizeof(*buf) * KRNG_NUM_BYTES, GFP_KERNEL); + if (buf == NULL) { + rc = -ENOMEM; + goto out; + } + + memset(buf, 0, sizeof(*buf) * KRNG_NUM_BYTES); + + /* Always succeeds */ + random_get_pseudo_bytes(buf, sizeof(uint8_t) * KRNG_NUM_BYTES); + + for (i = 0; i < KRNG_NUM_BYTES; i++) { + uint8_t tmp = buf[i]; + for (j = 0; j < 8; j++) { + uint8_t tmp2 = ((tmp >> j) & 0x01); + if (tmp2 == 1) { + num++; + } + } + } + + kfree(buf); + + diff = KRNG_NUM_BITS_DIV2 - num; + if (diff < 0) + diff *= -1; + + splat_print(file, "Test 1 Number of ones: %d\n", num); + splat_print(file, "Test 1 Difference from expected: %d Allowed: %d\n", + diff, KRNG_ERROR_RANGE); + + if (diff > KRNG_ERROR_RANGE) + rc = -ERANGE; +out: + return rc; +} + +splat_subsystem_t * +splat_krng_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_KRNG_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_KRNG_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_KRNG; + + SPLAT_TEST_INIT(sub, SPLAT_KRNG_TEST1_NAME, SPLAT_KRNG_TEST1_DESC, + SPLAT_KRNG_TEST1_ID, splat_krng_test1); + + return sub; +} + +void +splat_krng_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_KRNG_TEST1_ID); + + kfree(sub); +} + +int +splat_krng_id(void) { + return SPLAT_SUBSYSTEM_KRNG; +} --- linux-4.4.0.orig/spl/module/splat/splat-rwlock.c +++ linux-4.4.0/spl/module/splat/splat-rwlock.c @@ -0,0 +1,675 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Read/Writer Lock Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_RWLOCK_NAME "rwlock" +#define SPLAT_RWLOCK_DESC "Kernel RW Lock Tests" + +#define SPLAT_RWLOCK_TEST1_ID 0x0701 +#define SPLAT_RWLOCK_TEST1_NAME "N-rd/1-wr" +#define SPLAT_RWLOCK_TEST1_DESC "Multiple readers one writer" + +#define SPLAT_RWLOCK_TEST2_ID 0x0702 +#define SPLAT_RWLOCK_TEST2_NAME "0-rd/N-wr" +#define SPLAT_RWLOCK_TEST2_DESC "Multiple writers" + +#define SPLAT_RWLOCK_TEST3_ID 0x0703 +#define SPLAT_RWLOCK_TEST3_NAME "held" +#define SPLAT_RWLOCK_TEST3_DESC "RW_{LOCK|READ|WRITE}_HELD" + +#define SPLAT_RWLOCK_TEST4_ID 0x0704 +#define SPLAT_RWLOCK_TEST4_NAME "tryenter" +#define SPLAT_RWLOCK_TEST4_DESC "Tryenter" + +#define SPLAT_RWLOCK_TEST5_ID 0x0705 +#define SPLAT_RWLOCK_TEST5_NAME "rw_downgrade" +#define SPLAT_RWLOCK_TEST5_DESC "Write downgrade" + +#define SPLAT_RWLOCK_TEST6_ID 0x0706 +#define SPLAT_RWLOCK_TEST6_NAME "rw_tryupgrade" +#define SPLAT_RWLOCK_TEST6_DESC "Read upgrade" + +#define SPLAT_RWLOCK_TEST_MAGIC 0x115599DDUL +#define SPLAT_RWLOCK_TEST_NAME "rwlock_test" +#define SPLAT_RWLOCK_TEST_TASKQ "rwlock_taskq" +#define SPLAT_RWLOCK_TEST_COUNT 8 + +#define SPLAT_RWLOCK_RELEASE_INIT 0 +#define SPLAT_RWLOCK_RELEASE_WR 1 +#define SPLAT_RWLOCK_RELEASE_RD 2 + +typedef struct rw_priv { + unsigned long rw_magic; + struct file *rw_file; + krwlock_t rw_rwlock; + spinlock_t rw_lock; + wait_queue_head_t rw_waitq; + int rw_completed; + int rw_holders; + int rw_waiters; + int rw_release; + int rw_rc; + krw_t rw_type; +} rw_priv_t; + +typedef struct rw_thr { + const char *rwt_name; + rw_priv_t *rwt_rwp; + struct task_struct *rwt_thread; +} rw_thr_t; + +void splat_init_rw_priv(rw_priv_t *rwp, struct file *file) +{ + rwp->rw_magic = SPLAT_RWLOCK_TEST_MAGIC; + rwp->rw_file = file; + rw_init(&rwp->rw_rwlock, SPLAT_RWLOCK_TEST_NAME, RW_DEFAULT, NULL); + spin_lock_init(&rwp->rw_lock); + init_waitqueue_head(&rwp->rw_waitq); + rwp->rw_completed = 0; + rwp->rw_holders = 0; + rwp->rw_waiters = 0; + rwp->rw_release = SPLAT_RWLOCK_RELEASE_INIT; + rwp->rw_rc = 0; + rwp->rw_type = 0; +} + +static int +splat_rwlock_wr_thr(void *arg) +{ + rw_thr_t *rwt = (rw_thr_t *)arg; + rw_priv_t *rwp = rwt->rwt_rwp; + uint8_t rnd; + + ASSERT(rwp->rw_magic == SPLAT_RWLOCK_TEST_MAGIC); + + get_random_bytes((void *)&rnd, 1); + msleep((unsigned int)rnd); + + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s trying to acquire rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + spin_lock(&rwp->rw_lock); + rwp->rw_waiters++; + spin_unlock(&rwp->rw_lock); + rw_enter(&rwp->rw_rwlock, RW_WRITER); + + spin_lock(&rwp->rw_lock); + rwp->rw_waiters--; + rwp->rw_holders++; + spin_unlock(&rwp->rw_lock); + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s acquired rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + + /* Wait for control thread to signal we can release the write lock */ + wait_event_interruptible(rwp->rw_waitq, splat_locked_test(&rwp->rw_lock, + rwp->rw_release == SPLAT_RWLOCK_RELEASE_WR)); + + spin_lock(&rwp->rw_lock); + rwp->rw_completed++; + rwp->rw_holders--; + spin_unlock(&rwp->rw_lock); + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s dropped rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + + rw_exit(&rwp->rw_rwlock); + + return 0; +} + +static int +splat_rwlock_rd_thr(void *arg) +{ + rw_thr_t *rwt = (rw_thr_t *)arg; + rw_priv_t *rwp = rwt->rwt_rwp; + uint8_t rnd; + + ASSERT(rwp->rw_magic == SPLAT_RWLOCK_TEST_MAGIC); + + get_random_bytes((void *)&rnd, 1); + msleep((unsigned int)rnd); + + /* Don't try and take the semaphore until after someone has it */ + wait_event_interruptible(rwp->rw_waitq, + splat_locked_test(&rwp->rw_lock, rwp->rw_holders > 0)); + + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s trying to acquire rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + spin_lock(&rwp->rw_lock); + rwp->rw_waiters++; + spin_unlock(&rwp->rw_lock); + rw_enter(&rwp->rw_rwlock, RW_READER); + + spin_lock(&rwp->rw_lock); + rwp->rw_waiters--; + rwp->rw_holders++; + spin_unlock(&rwp->rw_lock); + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s acquired rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + + /* Wait for control thread to signal we can release the read lock */ + wait_event_interruptible(rwp->rw_waitq, splat_locked_test(&rwp->rw_lock, + rwp->rw_release == SPLAT_RWLOCK_RELEASE_RD)); + + spin_lock(&rwp->rw_lock); + rwp->rw_completed++; + rwp->rw_holders--; + spin_unlock(&rwp->rw_lock); + splat_vprint(rwp->rw_file, rwt->rwt_name, + "%s dropped rwlock (%d holding/%d waiting)\n", + rwt->rwt_thread->comm, rwp->rw_holders, rwp->rw_waiters); + + rw_exit(&rwp->rw_rwlock); + + return 0; +} + +static int +splat_rwlock_test1(struct file *file, void *arg) +{ + int i, count = 0, rc = 0; + rw_thr_t rwt[SPLAT_RWLOCK_TEST_COUNT]; + rw_priv_t *rwp; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + splat_init_rw_priv(rwp, file); + + /* Create some threads, the exact number isn't important just as + * long as we know how many we managed to create and should expect. */ + for (i = 0; i < SPLAT_RWLOCK_TEST_COUNT; i++) { + rwt[i].rwt_rwp = rwp; + rwt[i].rwt_name = SPLAT_RWLOCK_TEST1_NAME; + + /* The first thread will be the writer */ + if (i == 0) + rwt[i].rwt_thread = spl_kthread_create(splat_rwlock_wr_thr, + &rwt[i], "%s/%d", SPLAT_RWLOCK_TEST_NAME, i); + else + rwt[i].rwt_thread = spl_kthread_create(splat_rwlock_rd_thr, + &rwt[i], "%s/%d", SPLAT_RWLOCK_TEST_NAME, i); + + if (!IS_ERR(rwt[i].rwt_thread)) { + wake_up_process(rwt[i].rwt_thread); + count++; + } + } + + /* Wait for the writer */ + while (splat_locked_test(&rwp->rw_lock, rwp->rw_holders == 0)) { + wake_up_interruptible(&rwp->rw_waitq); + msleep(100); + } + + /* Wait for 'count-1' readers */ + while (splat_locked_test(&rwp->rw_lock, rwp->rw_waiters < count - 1)) { + wake_up_interruptible(&rwp->rw_waitq); + msleep(100); + } + + /* Verify there is only one lock holder */ + if (splat_locked_test(&rwp->rw_lock, rwp->rw_holders) != 1) { + splat_vprint(file, SPLAT_RWLOCK_TEST1_NAME, "Only 1 holder " + "expected for rwlock (%d holding/%d waiting)\n", + rwp->rw_holders, rwp->rw_waiters); + rc = -EINVAL; + } + + /* Verify 'count-1' readers */ + if (splat_locked_test(&rwp->rw_lock, rwp->rw_waiters != count - 1)) { + splat_vprint(file, SPLAT_RWLOCK_TEST1_NAME, "Only %d waiters " + "expected for rwlock (%d holding/%d waiting)\n", + count - 1, rwp->rw_holders, rwp->rw_waiters); + rc = -EINVAL; + } + + /* Signal the writer to release, allows readers to acquire */ + spin_lock(&rwp->rw_lock); + rwp->rw_release = SPLAT_RWLOCK_RELEASE_WR; + wake_up_interruptible(&rwp->rw_waitq); + spin_unlock(&rwp->rw_lock); + + /* Wait for 'count-1' readers to hold the lock */ + while (splat_locked_test(&rwp->rw_lock, rwp->rw_holders < count - 1)) { + wake_up_interruptible(&rwp->rw_waitq); + msleep(100); + } + + /* Verify there are 'count-1' readers */ + if (splat_locked_test(&rwp->rw_lock, rwp->rw_holders != count - 1)) { + splat_vprint(file, SPLAT_RWLOCK_TEST1_NAME, "Only %d holders " + "expected for rwlock (%d holding/%d waiting)\n", + count - 1, rwp->rw_holders, rwp->rw_waiters); + rc = -EINVAL; + } + + /* Release 'count-1' readers */ + spin_lock(&rwp->rw_lock); + rwp->rw_release = SPLAT_RWLOCK_RELEASE_RD; + wake_up_interruptible(&rwp->rw_waitq); + spin_unlock(&rwp->rw_lock); + + /* Wait for the test to complete */ + while (splat_locked_test(&rwp->rw_lock, + rwp->rw_holders>0 || rwp->rw_waiters>0)) + msleep(100); + + rw_destroy(&(rwp->rw_rwlock)); + kfree(rwp); + + return rc; +} + +static void +splat_rwlock_test2_func(void *arg) +{ + rw_priv_t *rwp = (rw_priv_t *)arg; + int rc; + ASSERT(rwp->rw_magic == SPLAT_RWLOCK_TEST_MAGIC); + + /* Read the value before sleeping and write it after we wake up to + * maximize the chance of a race if rwlocks are not working properly */ + rw_enter(&rwp->rw_rwlock, RW_WRITER); + rc = rwp->rw_rc; + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ / 100); /* 1/100 of a second */ + VERIFY(rwp->rw_rc == rc); + rwp->rw_rc = rc + 1; + rw_exit(&rwp->rw_rwlock); +} + +static int +splat_rwlock_test2(struct file *file, void *arg) +{ + rw_priv_t *rwp; + taskq_t *tq; + int i, rc = 0, tq_count = 256; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + splat_init_rw_priv(rwp, file); + + /* Create several threads allowing tasks to race with each other */ + tq = taskq_create(SPLAT_RWLOCK_TEST_TASKQ, num_online_cpus(), + defclsyspri, 50, INT_MAX, TASKQ_PREPOPULATE); + if (tq == NULL) { + rc = -ENOMEM; + goto out; + } + + /* + * Schedule N work items to the work queue each of which enters the + * writer rwlock, sleeps briefly, then exits the writer rwlock. On a + * multiprocessor box these work items will be handled by all available + * CPUs. The task function checks to ensure the tracked shared variable + * is always only incremented by one. Additionally, the rwlock itself + * is instrumented such that if any two processors are in the + * critical region at the same time the system will panic. If the + * rwlock is implemented right this will never happy, that's a pass. + */ + for (i = 0; i < tq_count; i++) { + if (!taskq_dispatch(tq,splat_rwlock_test2_func,rwp,TQ_SLEEP)) { + splat_vprint(file, SPLAT_RWLOCK_TEST2_NAME, + "Failed to queue task %d\n", i); + rc = -EINVAL; + } + } + + taskq_wait(tq); + + if (rwp->rw_rc == tq_count) { + splat_vprint(file, SPLAT_RWLOCK_TEST2_NAME, "%d racing threads " + "correctly entered/exited the rwlock %d times\n", + num_online_cpus(), rwp->rw_rc); + } else { + splat_vprint(file, SPLAT_RWLOCK_TEST2_NAME, "%d racing threads " + "only processed %d/%d w rwlock work items\n", + num_online_cpus(), rwp->rw_rc, tq_count); + rc = -EINVAL; + } + + taskq_destroy(tq); + rw_destroy(&(rwp->rw_rwlock)); +out: + kfree(rwp); + return rc; +} + +#define splat_rwlock_test3_helper(rwp,rex1,rex2,wex1,wex2,held_func,rc) \ +do { \ + int result, _rc1_, _rc2_, _rc3_, _rc4_; \ + \ + rc = 0; \ + rw_enter(&(rwp)->rw_rwlock, RW_READER); \ + _rc1_ = ((result = held_func(&(rwp)->rw_rwlock)) != rex1); \ + splat_vprint(file, SPLAT_RWLOCK_TEST3_NAME, "%s" #held_func \ + " returned %d (expected %d) when RW_READER\n", \ + _rc1_ ? "Fail " : "", result, rex1); \ + rw_exit(&(rwp)->rw_rwlock); \ + _rc2_ = ((result = held_func(&(rwp)->rw_rwlock)) != rex2); \ + splat_vprint(file, SPLAT_RWLOCK_TEST3_NAME, "%s" #held_func \ + " returned %d (expected %d) when !RW_READER\n", \ + _rc2_ ? "Fail " : "", result, rex2); \ + \ + rw_enter(&(rwp)->rw_rwlock, RW_WRITER); \ + _rc3_ = ((result = held_func(&(rwp)->rw_rwlock)) != wex1); \ + splat_vprint(file, SPLAT_RWLOCK_TEST3_NAME, "%s" #held_func \ + " returned %d (expected %d) when RW_WRITER\n", \ + _rc3_ ? "Fail " : "", result, wex1); \ + rw_exit(&(rwp)->rw_rwlock); \ + _rc4_ = ((result = held_func(&(rwp)->rw_rwlock)) != wex2); \ + splat_vprint(file, SPLAT_RWLOCK_TEST3_NAME, "%s" #held_func \ + " returned %d (expected %d) when !RW_WRITER\n", \ + _rc4_ ? "Fail " : "", result, wex2); \ + \ + rc = ((_rc1_ || _rc2_ || _rc3_ || _rc4_) ? -EINVAL : 0); \ +} while(0); + +static int +splat_rwlock_test3(struct file *file, void *arg) +{ + rw_priv_t *rwp; + int rc1, rc2, rc3; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + splat_init_rw_priv(rwp, file); + + splat_rwlock_test3_helper(rwp, 1, 0, 1, 0, RW_LOCK_HELD, rc1); + splat_rwlock_test3_helper(rwp, 1, 0, 0, 0, RW_READ_HELD, rc2); + splat_rwlock_test3_helper(rwp, 0, 0, 1, 0, RW_WRITE_HELD, rc3); + + rw_destroy(&rwp->rw_rwlock); + kfree(rwp); + + return ((rc1 || rc2 || rc3) ? -EINVAL : 0); +} + +static void +splat_rwlock_test4_func(void *arg) +{ + rw_priv_t *rwp = (rw_priv_t *)arg; + ASSERT(rwp->rw_magic == SPLAT_RWLOCK_TEST_MAGIC); + + if (rw_tryenter(&rwp->rw_rwlock, rwp->rw_type)) { + rwp->rw_rc = 0; + rw_exit(&rwp->rw_rwlock); + } else { + rwp->rw_rc = -EBUSY; + } +} + +static char * +splat_rwlock_test4_name(krw_t type) +{ + switch (type) { + case RW_NONE: return "RW_NONE"; + case RW_WRITER: return "RW_WRITER"; + case RW_READER: return "RW_READER"; + } + + return NULL; +} + +static int +splat_rwlock_test4_type(taskq_t *tq, rw_priv_t *rwp, int expected_rc, + krw_t holder_type, krw_t try_type) +{ + int id, rc = 0; + + /* Schedule a task function which will try and acquire the rwlock + * using type try_type while the rwlock is being held as holder_type. + * The result must match expected_rc for the test to pass */ + rwp->rw_rc = -EINVAL; + rwp->rw_type = try_type; + + if (holder_type == RW_WRITER || holder_type == RW_READER) + rw_enter(&rwp->rw_rwlock, holder_type); + + id = taskq_dispatch(tq, splat_rwlock_test4_func, rwp, TQ_SLEEP); + if (id == 0) { + splat_vprint(rwp->rw_file, SPLAT_RWLOCK_TEST4_NAME, "%s", + "taskq_dispatch() failed\n"); + rc = -EINVAL; + goto out; + } + + taskq_wait_id(tq, id); + + if (rwp->rw_rc != expected_rc) + rc = -EINVAL; + + splat_vprint(rwp->rw_file, SPLAT_RWLOCK_TEST4_NAME, + "%srw_tryenter(%s) returned %d (expected %d) when %s\n", + rc ? "Fail " : "", splat_rwlock_test4_name(try_type), + rwp->rw_rc, expected_rc, + splat_rwlock_test4_name(holder_type)); +out: + if (holder_type == RW_WRITER || holder_type == RW_READER) + rw_exit(&rwp->rw_rwlock); + + return rc; +} + +static int +splat_rwlock_test4(struct file *file, void *arg) +{ + rw_priv_t *rwp; + taskq_t *tq; + int rc = 0, rc1, rc2, rc3, rc4, rc5, rc6; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + tq = taskq_create(SPLAT_RWLOCK_TEST_TASKQ, 1, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE); + if (tq == NULL) { + rc = -ENOMEM; + goto out; + } + + splat_init_rw_priv(rwp, file); + + /* Validate all combinations of rw_tryenter() contention */ + rc1 = splat_rwlock_test4_type(tq, rwp, -EBUSY, RW_WRITER, RW_WRITER); + rc2 = splat_rwlock_test4_type(tq, rwp, -EBUSY, RW_WRITER, RW_READER); + rc3 = splat_rwlock_test4_type(tq, rwp, -EBUSY, RW_READER, RW_WRITER); + rc4 = splat_rwlock_test4_type(tq, rwp, 0, RW_READER, RW_READER); + rc5 = splat_rwlock_test4_type(tq, rwp, 0, RW_NONE, RW_WRITER); + rc6 = splat_rwlock_test4_type(tq, rwp, 0, RW_NONE, RW_READER); + + if (rc1 || rc2 || rc3 || rc4 || rc5 || rc6) + rc = -EINVAL; + + taskq_destroy(tq); +out: + rw_destroy(&(rwp->rw_rwlock)); + kfree(rwp); + + return rc; +} + +static int +splat_rwlock_test5(struct file *file, void *arg) +{ + rw_priv_t *rwp; + int rc = -EINVAL; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + splat_init_rw_priv(rwp, file); + + rw_enter(&rwp->rw_rwlock, RW_WRITER); + if (!RW_WRITE_HELD(&rwp->rw_rwlock)) { + splat_vprint(file, SPLAT_RWLOCK_TEST5_NAME, + "rwlock should be write lock: %d\n", + RW_WRITE_HELD(&rwp->rw_rwlock)); + goto out; + } + + rw_downgrade(&rwp->rw_rwlock); + if (!RW_READ_HELD(&rwp->rw_rwlock)) { + splat_vprint(file, SPLAT_RWLOCK_TEST5_NAME, + "rwlock should be read lock: %d\n", + RW_READ_HELD(&rwp->rw_rwlock)); + goto out; + } + + rc = 0; + splat_vprint(file, SPLAT_RWLOCK_TEST5_NAME, "%s", + "rwlock properly downgraded\n"); +out: + rw_exit(&rwp->rw_rwlock); + rw_destroy(&rwp->rw_rwlock); + kfree(rwp); + + return rc; +} + +static int +splat_rwlock_test6(struct file *file, void *arg) +{ + rw_priv_t *rwp; + int rc; + + rwp = (rw_priv_t *)kmalloc(sizeof(*rwp), GFP_KERNEL); + if (rwp == NULL) + return -ENOMEM; + + splat_init_rw_priv(rwp, file); + + rw_enter(&rwp->rw_rwlock, RW_READER); + if (!RW_READ_HELD(&rwp->rw_rwlock)) { + splat_vprint(file, SPLAT_RWLOCK_TEST6_NAME, + "rwlock should be read lock: %d\n", + RW_READ_HELD(&rwp->rw_rwlock)); + rc = -ENOLCK; + goto out; + } + +#if defined(CONFIG_RWSEM_GENERIC_SPINLOCK) + /* With one reader upgrade should never fail. */ + rc = rw_tryupgrade(&rwp->rw_rwlock); + if (!rc) { + splat_vprint(file, SPLAT_RWLOCK_TEST6_NAME, + "rwlock failed upgrade from reader: %d\n", + RW_READ_HELD(&rwp->rw_rwlock)); + rc = -ENOLCK; + goto out; + } + + if (RW_READ_HELD(&rwp->rw_rwlock) || !RW_WRITE_HELD(&rwp->rw_rwlock)) { + splat_vprint(file, SPLAT_RWLOCK_TEST6_NAME, "rwlock should " + "have 0 (not %d) reader and 1 (not %d) writer\n", + RW_READ_HELD(&rwp->rw_rwlock), + RW_WRITE_HELD(&rwp->rw_rwlock)); + goto out; + } + + rc = 0; + splat_vprint(file, SPLAT_RWLOCK_TEST6_NAME, "%s", + "rwlock properly upgraded\n"); +#else + rc = 0; + splat_vprint(file, SPLAT_RWLOCK_TEST6_NAME, "%s", + "rw_tryupgrade() is disabled for this arch\n"); +#endif +out: + rw_exit(&rwp->rw_rwlock); + rw_destroy(&rwp->rw_rwlock); + kfree(rwp); + + return rc; +} + +splat_subsystem_t * +splat_rwlock_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_RWLOCK_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_RWLOCK_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_RWLOCK; + + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST1_NAME, SPLAT_RWLOCK_TEST1_DESC, + SPLAT_RWLOCK_TEST1_ID, splat_rwlock_test1); + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST2_NAME, SPLAT_RWLOCK_TEST2_DESC, + SPLAT_RWLOCK_TEST2_ID, splat_rwlock_test2); + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST3_NAME, SPLAT_RWLOCK_TEST3_DESC, + SPLAT_RWLOCK_TEST3_ID, splat_rwlock_test3); + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST4_NAME, SPLAT_RWLOCK_TEST4_DESC, + SPLAT_RWLOCK_TEST4_ID, splat_rwlock_test4); + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST5_NAME, SPLAT_RWLOCK_TEST5_DESC, + SPLAT_RWLOCK_TEST5_ID, splat_rwlock_test5); + SPLAT_TEST_INIT(sub, SPLAT_RWLOCK_TEST6_NAME, SPLAT_RWLOCK_TEST6_DESC, + SPLAT_RWLOCK_TEST6_ID, splat_rwlock_test6); + + return sub; +} + +void +splat_rwlock_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_RWLOCK_TEST1_ID); + kfree(sub); +} + +int +splat_rwlock_id(void) { + return SPLAT_SUBSYSTEM_RWLOCK; +} --- linux-4.4.0.orig/spl/module/splat/splat-taskq.c +++ linux-4.4.0/spl/module/splat/splat-taskq.c @@ -0,0 +1,1547 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Task Queue Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_TASKQ_NAME "taskq" +#define SPLAT_TASKQ_DESC "Kernel Task Queue Tests" + +#define SPLAT_TASKQ_TEST1_ID 0x0201 +#define SPLAT_TASKQ_TEST1_NAME "single" +#define SPLAT_TASKQ_TEST1_DESC "Single task queue, single task" + +#define SPLAT_TASKQ_TEST2_ID 0x0202 +#define SPLAT_TASKQ_TEST2_NAME "multiple" +#define SPLAT_TASKQ_TEST2_DESC "Multiple task queues, multiple tasks" + +#define SPLAT_TASKQ_TEST3_ID 0x0203 +#define SPLAT_TASKQ_TEST3_NAME "system" +#define SPLAT_TASKQ_TEST3_DESC "System task queue, multiple tasks" + +#define SPLAT_TASKQ_TEST4_ID 0x0204 +#define SPLAT_TASKQ_TEST4_NAME "wait" +#define SPLAT_TASKQ_TEST4_DESC "Multiple task waiting" + +#define SPLAT_TASKQ_TEST5_ID 0x0205 +#define SPLAT_TASKQ_TEST5_NAME "order" +#define SPLAT_TASKQ_TEST5_DESC "Correct task ordering" + +#define SPLAT_TASKQ_TEST6_ID 0x0206 +#define SPLAT_TASKQ_TEST6_NAME "front" +#define SPLAT_TASKQ_TEST6_DESC "Correct ordering with TQ_FRONT flag" + +#define SPLAT_TASKQ_TEST7_ID 0x0207 +#define SPLAT_TASKQ_TEST7_NAME "recurse" +#define SPLAT_TASKQ_TEST7_DESC "Single task queue, recursive dispatch" + +#define SPLAT_TASKQ_TEST8_ID 0x0208 +#define SPLAT_TASKQ_TEST8_NAME "contention" +#define SPLAT_TASKQ_TEST8_DESC "1 queue, 100 threads, 131072 tasks" + +#define SPLAT_TASKQ_TEST9_ID 0x0209 +#define SPLAT_TASKQ_TEST9_NAME "delay" +#define SPLAT_TASKQ_TEST9_DESC "Delayed task execution" + +#define SPLAT_TASKQ_TEST10_ID 0x020a +#define SPLAT_TASKQ_TEST10_NAME "cancel" +#define SPLAT_TASKQ_TEST10_DESC "Cancel task execution" + +#define SPLAT_TASKQ_TEST11_ID 0x020b +#define SPLAT_TASKQ_TEST11_NAME "dynamic" +#define SPLAT_TASKQ_TEST11_DESC "Dynamic task queue thread creation" + +#define SPLAT_TASKQ_ORDER_MAX 8 +#define SPLAT_TASKQ_DEPTH_MAX 16 + + +typedef struct splat_taskq_arg { + int flag; + int id; + atomic_t *count; + int order[SPLAT_TASKQ_ORDER_MAX]; + unsigned int depth; + clock_t expire; + taskq_t *tq; + taskq_ent_t *tqe; + spinlock_t lock; + struct file *file; + const char *name; +} splat_taskq_arg_t; + +typedef struct splat_taskq_id { + int id; + splat_taskq_arg_t *arg; +} splat_taskq_id_t; + +/* + * Create a taskq, queue a task, wait until task completes, ensure + * task ran properly, cleanup taskq. + */ +static void +splat_taskq_test13_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + + ASSERT(tq_arg); + splat_vprint(tq_arg->file, SPLAT_TASKQ_TEST1_NAME, + "Taskq '%s' function '%s' setting flag\n", + tq_arg->name, sym2str(splat_taskq_test13_func)); + tq_arg->flag = 1; +} + +static int +splat_taskq_test1_impl(struct file *file, void *arg, boolean_t prealloc) +{ + taskq_t *tq; + taskqid_t id; + splat_taskq_arg_t tq_arg; + taskq_ent_t *tqe; + + tqe = kmem_alloc(sizeof (taskq_ent_t), KM_SLEEP); + taskq_init_ent(tqe); + + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, + "Taskq '%s' creating (%s dispatch)\n", + SPLAT_TASKQ_TEST1_NAME, + prealloc ? "prealloc" : "dynamic"); + if ((tq = taskq_create(SPLAT_TASKQ_TEST1_NAME, 1, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, + "Taskq '%s' create failed\n", + SPLAT_TASKQ_TEST1_NAME); + kmem_free(tqe, sizeof (taskq_ent_t)); + return -EINVAL; + } + + tq_arg.flag = 0; + tq_arg.id = 0; + tq_arg.file = file; + tq_arg.name = SPLAT_TASKQ_TEST1_NAME; + + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, + "Taskq '%s' function '%s' dispatching\n", + tq_arg.name, sym2str(splat_taskq_test13_func)); + if (prealloc) { + taskq_dispatch_ent(tq, splat_taskq_test13_func, + &tq_arg, TQ_SLEEP, tqe); + id = tqe->tqent_id; + } else { + id = taskq_dispatch(tq, splat_taskq_test13_func, + &tq_arg, TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, + "Taskq '%s' function '%s' dispatch failed\n", + tq_arg.name, sym2str(splat_taskq_test13_func)); + kmem_free(tqe, sizeof (taskq_ent_t)); + taskq_destroy(tq); + return -EINVAL; + } + + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, "Taskq '%s' waiting\n", + tq_arg.name); + taskq_wait(tq); + splat_vprint(file, SPLAT_TASKQ_TEST1_NAME, "Taskq '%s' destroying\n", + tq_arg.name); + + kmem_free(tqe, sizeof (taskq_ent_t)); + taskq_destroy(tq); + + return (tq_arg.flag) ? 0 : -EINVAL; +} + +static int +splat_taskq_test1(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test1_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test1_impl(file, arg, B_TRUE); + + return rc; +} + +/* + * Create multiple taskq's, each with multiple tasks, wait until + * all tasks complete, ensure all tasks ran properly and in the + * correct order. Run order must be the same as the order submitted + * because we only have 1 thread per taskq. Finally cleanup the taskq. + */ +static void +splat_taskq_test2_func1(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + + ASSERT(tq_arg); + splat_vprint(tq_arg->file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' function '%s' flag = %d = %d * 2\n", + tq_arg->name, tq_arg->id, + sym2str(splat_taskq_test2_func1), + tq_arg->flag * 2, tq_arg->flag); + tq_arg->flag *= 2; +} + +static void +splat_taskq_test2_func2(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + + ASSERT(tq_arg); + splat_vprint(tq_arg->file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' function '%s' flag = %d = %d + 1\n", + tq_arg->name, tq_arg->id, + sym2str(splat_taskq_test2_func2), + tq_arg->flag + 1, tq_arg->flag); + tq_arg->flag += 1; +} + +#define TEST2_TASKQS 8 +#define TEST2_THREADS_PER_TASKQ 1 + +static int +splat_taskq_test2_impl(struct file *file, void *arg, boolean_t prealloc) { + taskq_t *tq[TEST2_TASKQS] = { NULL }; + taskqid_t id; + splat_taskq_arg_t *tq_args[TEST2_TASKQS] = { NULL }; + taskq_ent_t *func1_tqes = NULL; + taskq_ent_t *func2_tqes = NULL; + int i, rc = 0; + + func1_tqes = kmalloc(sizeof(*func1_tqes) * TEST2_TASKQS, GFP_KERNEL); + if (func1_tqes == NULL) { + rc = -ENOMEM; + goto out; + } + + func2_tqes = kmalloc(sizeof(*func2_tqes) * TEST2_TASKQS, GFP_KERNEL); + if (func2_tqes == NULL) { + rc = -ENOMEM; + goto out; + } + + for (i = 0; i < TEST2_TASKQS; i++) { + taskq_init_ent(&func1_tqes[i]); + taskq_init_ent(&func2_tqes[i]); + + tq_args[i] = kmalloc(sizeof (splat_taskq_arg_t), GFP_KERNEL); + if (tq_args[i] == NULL) { + rc = -ENOMEM; + break; + } + + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' creating (%s dispatch)\n", + SPLAT_TASKQ_TEST2_NAME, i, + prealloc ? "prealloc" : "dynamic"); + if ((tq[i] = taskq_create(SPLAT_TASKQ_TEST2_NAME, + TEST2_THREADS_PER_TASKQ, + defclsyspri, 50, INT_MAX, + TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' create failed\n", + SPLAT_TASKQ_TEST2_NAME, i); + rc = -EINVAL; + break; + } + + tq_args[i]->flag = i; + tq_args[i]->id = i; + tq_args[i]->file = file; + tq_args[i]->name = SPLAT_TASKQ_TEST2_NAME; + + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' function '%s' dispatching\n", + tq_args[i]->name, tq_args[i]->id, + sym2str(splat_taskq_test2_func1)); + if (prealloc) { + taskq_dispatch_ent(tq[i], splat_taskq_test2_func1, + tq_args[i], TQ_SLEEP, &func1_tqes[i]); + id = func1_tqes[i].tqent_id; + } else { + id = taskq_dispatch(tq[i], splat_taskq_test2_func1, + tq_args[i], TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' function '%s' dispatch " + "failed\n", tq_args[i]->name, tq_args[i]->id, + sym2str(splat_taskq_test2_func1)); + rc = -EINVAL; + break; + } + + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' function '%s' dispatching\n", + tq_args[i]->name, tq_args[i]->id, + sym2str(splat_taskq_test2_func2)); + if (prealloc) { + taskq_dispatch_ent(tq[i], splat_taskq_test2_func2, + tq_args[i], TQ_SLEEP, &func2_tqes[i]); + id = func2_tqes[i].tqent_id; + } else { + id = taskq_dispatch(tq[i], splat_taskq_test2_func2, + tq_args[i], TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, "Taskq " + "'%s/%d' function '%s' dispatch failed\n", + tq_args[i]->name, tq_args[i]->id, + sym2str(splat_taskq_test2_func2)); + rc = -EINVAL; + break; + } + } + + /* When rc is set we're effectively just doing cleanup here, so + * ignore new errors in that case. They just cause noise. */ + for (i = 0; i < TEST2_TASKQS; i++) { + if (tq_args[i] == NULL) + continue; + + if (tq[i] != NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' waiting\n", + tq_args[i]->name, tq_args[i]->id); + taskq_wait(tq[i]); + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d; destroying\n", + tq_args[i]->name, tq_args[i]->id); + + taskq_destroy(tq[i]); + + if (!rc && tq_args[i]->flag != ((i * 2) + 1)) { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' processed tasks " + "out of order; %d != %d\n", + tq_args[i]->name, tq_args[i]->id, + tq_args[i]->flag, i * 2 + 1); + rc = -EINVAL; + } else { + splat_vprint(file, SPLAT_TASKQ_TEST2_NAME, + "Taskq '%s/%d' processed tasks " + "in the correct order; %d == %d\n", + tq_args[i]->name, tq_args[i]->id, + tq_args[i]->flag, i * 2 + 1); + } + + kfree(tq_args[i]); + } + } +out: + if (func1_tqes) + kfree(func1_tqes); + + if (func2_tqes) + kfree(func2_tqes); + + return rc; +} + +static int +splat_taskq_test2(struct file *file, void *arg) { + int rc; + + rc = splat_taskq_test2_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test2_impl(file, arg, B_TRUE); + + return rc; +} + +/* + * Use the global system task queue with a single task, wait until task + * completes, ensure task ran properly. + */ +static int +splat_taskq_test3_impl(struct file *file, void *arg, boolean_t prealloc) +{ + taskqid_t id; + splat_taskq_arg_t *tq_arg; + taskq_ent_t *tqe; + int error; + + tq_arg = kmem_alloc(sizeof (splat_taskq_arg_t), KM_SLEEP); + tqe = kmem_alloc(sizeof (taskq_ent_t), KM_SLEEP); + taskq_init_ent(tqe); + + tq_arg->flag = 0; + tq_arg->id = 0; + tq_arg->file = file; + tq_arg->name = SPLAT_TASKQ_TEST3_NAME; + + splat_vprint(file, SPLAT_TASKQ_TEST3_NAME, + "Taskq '%s' function '%s' %s dispatch\n", + tq_arg->name, sym2str(splat_taskq_test13_func), + prealloc ? "prealloc" : "dynamic"); + if (prealloc) { + taskq_dispatch_ent(system_taskq, splat_taskq_test13_func, + tq_arg, TQ_SLEEP, tqe); + id = tqe->tqent_id; + } else { + id = taskq_dispatch(system_taskq, splat_taskq_test13_func, + tq_arg, TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST3_NAME, + "Taskq '%s' function '%s' dispatch failed\n", + tq_arg->name, sym2str(splat_taskq_test13_func)); + kmem_free(tqe, sizeof (taskq_ent_t)); + kmem_free(tq_arg, sizeof (splat_taskq_arg_t)); + return -EINVAL; + } + + splat_vprint(file, SPLAT_TASKQ_TEST3_NAME, "Taskq '%s' waiting\n", + tq_arg->name); + taskq_wait(system_taskq); + + error = (tq_arg->flag) ? 0 : -EINVAL; + + kmem_free(tqe, sizeof (taskq_ent_t)); + kmem_free(tq_arg, sizeof (splat_taskq_arg_t)); + + return (error); +} + +static int +splat_taskq_test3(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test3_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test3_impl(file, arg, B_TRUE); + + return rc; +} + +/* + * Create a taskq and dispatch a large number of tasks to the queue. + * Then use taskq_wait() to block until all the tasks complete, then + * cross check that all the tasks ran by checking the shared atomic + * counter which is incremented in the task function. + * + * First we try with a large 'maxalloc' value, then we try with a small one. + * We should not drop tasks when TQ_SLEEP is used in taskq_dispatch(), even + * if the number of pending tasks is above maxalloc. + */ +static void +splat_taskq_test4_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + ASSERT(tq_arg); + + atomic_inc(tq_arg->count); +} + +static int +splat_taskq_test4_common(struct file *file, void *arg, int minalloc, + int maxalloc, int nr_tasks, boolean_t prealloc) +{ + taskq_t *tq; + taskqid_t id; + splat_taskq_arg_t tq_arg; + taskq_ent_t *tqes; + atomic_t count; + int i, j, rc = 0; + + tqes = kmalloc(sizeof(*tqes) * nr_tasks, GFP_KERNEL); + if (tqes == NULL) + return -ENOMEM; + + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, + "Taskq '%s' creating (%s dispatch) (%d/%d/%d)\n", + SPLAT_TASKQ_TEST4_NAME, + prealloc ? "prealloc" : "dynamic", + minalloc, maxalloc, nr_tasks); + if ((tq = taskq_create(SPLAT_TASKQ_TEST4_NAME, 1, defclsyspri, + minalloc, maxalloc, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, + "Taskq '%s' create failed\n", + SPLAT_TASKQ_TEST4_NAME); + rc = -EINVAL; + goto out_free; + } + + tq_arg.file = file; + tq_arg.name = SPLAT_TASKQ_TEST4_NAME; + tq_arg.count = &count; + + for (i = 1; i <= nr_tasks; i *= 2) { + atomic_set(tq_arg.count, 0); + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, + "Taskq '%s' function '%s' dispatched %d times\n", + tq_arg.name, sym2str(splat_taskq_test4_func), i); + + for (j = 0; j < i; j++) { + taskq_init_ent(&tqes[j]); + + if (prealloc) { + taskq_dispatch_ent(tq, splat_taskq_test4_func, + &tq_arg, TQ_SLEEP, &tqes[j]); + id = tqes[j].tqent_id; + } else { + id = taskq_dispatch(tq, splat_taskq_test4_func, + &tq_arg, TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, + "Taskq '%s' function '%s' dispatch " + "%d failed\n", tq_arg.name, + sym2str(splat_taskq_test4_func), j); + rc = -EINVAL; + goto out; + } + } + + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, "Taskq '%s' " + "waiting for %d dispatches\n", tq_arg.name, i); + taskq_wait(tq); + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, "Taskq '%s' " + "%d/%d dispatches finished\n", tq_arg.name, + atomic_read(&count), i); + if (atomic_read(&count) != i) { + rc = -ERANGE; + goto out; + + } + } +out: + splat_vprint(file, SPLAT_TASKQ_TEST4_NAME, "Taskq '%s' destroying\n", + tq_arg.name); + taskq_destroy(tq); + +out_free: + kfree(tqes); + + return rc; +} + +static int +splat_taskq_test4_impl(struct file *file, void *arg, boolean_t prealloc) +{ + int rc; + + rc = splat_taskq_test4_common(file, arg, 50, INT_MAX, 1024, prealloc); + if (rc) + return rc; + + rc = splat_taskq_test4_common(file, arg, 1, 1, 32, prealloc); + + return rc; +} + +static int +splat_taskq_test4(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test4_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test4_impl(file, arg, B_TRUE); + + return rc; +} + +/* + * Create a taskq and dispatch a specific sequence of tasks carefully + * crafted to validate the order in which tasks are processed. When + * there are multiple worker threads each thread will process the + * next pending task as soon as it completes its current task. This + * means that tasks do not strictly complete in order in which they + * were dispatched (increasing task id). This is fine but we need to + * verify taskq_wait_outstanding() blocks until the passed task id and + * all lower task ids complete. We do this by dispatching the following + * specific sequence of tasks each of which block for N time units. + * We then use taskq_wait_outstanding() to unblock at specific task id and + * verify the only the expected task ids have completed and in the + * correct order. The two cases of interest are: + * + * 1) Task ids larger than the waited for task id can run and + * complete as long as there is an available worker thread. + * 2) All task ids lower than the waited one must complete before + * unblocking even if the waited task id itself has completed. + * + * The following table shows each task id and how they will be + * scheduled. Each rows represent one time unit and each column + * one of the three worker threads. The places taskq_wait_outstanding() + * must unblock for a specific id are identified as well as the + * task ids which must have completed and their order. + * + * +-----+ <--- taskq_wait_outstanding(tq, 8) unblocks + * | | Required Completion Order: 1,2,4,5,3,8,6,7 + * +-----+ | + * | | | + * | | +-----+ + * | | | 8 | + * | | +-----+ <--- taskq_wait_outstanding(tq, 3) unblocks + * | | 7 | | Required Completion Order: 1,2,4,5,3 + * | +-----+ | + * | 6 | | | + * +-----+ | | + * | | 5 | | + * | +-----+ | + * | 4 | | | + * +-----+ | | + * | 1 | 2 | 3 | + * +-----+-----+-----+ + * + */ +static void +splat_taskq_test5_func(void *arg) +{ + splat_taskq_id_t *tq_id = (splat_taskq_id_t *)arg; + splat_taskq_arg_t *tq_arg = tq_id->arg; + int factor; + + /* Delays determined by above table */ + switch (tq_id->id) { + default: factor = 0; break; + case 1: case 8: factor = 1; break; + case 2: case 4: case 5: factor = 2; break; + case 6: case 7: factor = 4; break; + case 3: factor = 5; break; + } + + msleep(factor * 100); + splat_vprint(tq_arg->file, tq_arg->name, + "Taskqid %d complete for taskq '%s'\n", + tq_id->id, tq_arg->name); + + spin_lock(&tq_arg->lock); + tq_arg->order[tq_arg->flag] = tq_id->id; + tq_arg->flag++; + spin_unlock(&tq_arg->lock); +} + +static int +splat_taskq_test_order(splat_taskq_arg_t *tq_arg, int *order) +{ + int i, j; + + for (i = 0; i < SPLAT_TASKQ_ORDER_MAX; i++) { + if (tq_arg->order[i] != order[i]) { + splat_vprint(tq_arg->file, tq_arg->name, + "Taskq '%s' incorrect completion " + "order\n", tq_arg->name); + splat_vprint(tq_arg->file, tq_arg->name, + "%s", "Expected { "); + + for (j = 0; j < SPLAT_TASKQ_ORDER_MAX; j++) + splat_print(tq_arg->file, "%d ", order[j]); + + splat_print(tq_arg->file, "%s", "}\n"); + splat_vprint(tq_arg->file, tq_arg->name, + "%s", "Got { "); + + for (j = 0; j < SPLAT_TASKQ_ORDER_MAX; j++) + splat_print(tq_arg->file, "%d ", + tq_arg->order[j]); + + splat_print(tq_arg->file, "%s", "}\n"); + return -EILSEQ; + } + } + + splat_vprint(tq_arg->file, tq_arg->name, + "Taskq '%s' validated correct completion order\n", + tq_arg->name); + + return 0; +} + +static int +splat_taskq_test5_impl(struct file *file, void *arg, boolean_t prealloc) +{ + taskq_t *tq; + taskqid_t id; + splat_taskq_id_t tq_id[SPLAT_TASKQ_ORDER_MAX]; + splat_taskq_arg_t tq_arg; + int order1[SPLAT_TASKQ_ORDER_MAX] = { 1,2,4,5,3,0,0,0 }; + int order2[SPLAT_TASKQ_ORDER_MAX] = { 1,2,4,5,3,8,6,7 }; + taskq_ent_t *tqes; + int i, rc = 0; + + tqes = kmem_alloc(sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX, KM_SLEEP); + memset(tqes, 0, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX); + + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, + "Taskq '%s' creating (%s dispatch)\n", + SPLAT_TASKQ_TEST5_NAME, + prealloc ? "prealloc" : "dynamic"); + if ((tq = taskq_create(SPLAT_TASKQ_TEST5_NAME, 3, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, + "Taskq '%s' create failed\n", + SPLAT_TASKQ_TEST5_NAME); + return -EINVAL; + } + + tq_arg.flag = 0; + memset(&tq_arg.order, 0, sizeof(int) * SPLAT_TASKQ_ORDER_MAX); + spin_lock_init(&tq_arg.lock); + tq_arg.file = file; + tq_arg.name = SPLAT_TASKQ_TEST5_NAME; + + for (i = 0; i < SPLAT_TASKQ_ORDER_MAX; i++) { + taskq_init_ent(&tqes[i]); + + tq_id[i].id = i + 1; + tq_id[i].arg = &tq_arg; + + if (prealloc) { + taskq_dispatch_ent(tq, splat_taskq_test5_func, + &tq_id[i], TQ_SLEEP, &tqes[i]); + id = tqes[i].tqent_id; + } else { + id = taskq_dispatch(tq, splat_taskq_test5_func, + &tq_id[i], TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, + "Taskq '%s' function '%s' dispatch failed\n", + tq_arg.name, sym2str(splat_taskq_test5_func)); + rc = -EINVAL; + goto out; + } + + if (tq_id[i].id != id) { + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, + "Taskq '%s' expected taskqid %d got %d\n", + tq_arg.name, (int)tq_id[i].id, (int)id); + rc = -EINVAL; + goto out; + } + } + + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, "Taskq '%s' " + "waiting for taskqid %d completion\n", tq_arg.name, 3); + taskq_wait_outstanding(tq, 3); + if ((rc = splat_taskq_test_order(&tq_arg, order1))) + goto out; + + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, "Taskq '%s' " + "waiting for taskqid %d completion\n", tq_arg.name, 8); + taskq_wait_outstanding(tq, 8); + rc = splat_taskq_test_order(&tq_arg, order2); + +out: + splat_vprint(file, SPLAT_TASKQ_TEST5_NAME, + "Taskq '%s' destroying\n", tq_arg.name); + taskq_destroy(tq); + + kmem_free(tqes, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX); + + return rc; +} + +static int +splat_taskq_test5(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test5_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test5_impl(file, arg, B_TRUE); + + return rc; +} + +/* + * Create a single task queue with three threads. Dispatch 8 tasks, + * setting TQ_FRONT on only the last three. Sleep after + * dispatching tasks 1-3 to ensure they will run and hold the threads + * busy while we dispatch the remaining tasks. Verify that tasks 6-8 + * run before task 4-5. + * + * The following table shows each task id and how they will be + * scheduled. Each rows represent one time unit and each column + * one of the three worker threads. + * + * NB: The Horizontal Line is the LAST Time unit consumed by the Task, + * and must be included in the factor calculation. + * T + * 17-> +-----+ + * 16 | T6 | + * 15-> +-----+ | + * 14 | T6 | | + * 13-> | | 5 +-----+ + * 12 | | | T6 | + * 11-> | +-----| | + * 10 | 4 | T6 | | + * 9-> +-----+ | 8 | + * 8 | T5 | | | + * 7-> | | 7 +-----+ + * 6 | | | T7 | + * 5-> | +-----+ | + * 4 | 6 | T5 | | + * 3-> +-----+ | | + * 2 | T3 | | | + * 1 | 1 | 2 | 3 | + * 0 +-----+-----+-----+ + * + */ +static void +splat_taskq_test6_func(void *arg) +{ + /* Delays determined by above table */ + static const int factor[SPLAT_TASKQ_ORDER_MAX+1] = {0,3,5,7,6,6,5,6,6}; + + splat_taskq_id_t *tq_id = (splat_taskq_id_t *)arg; + splat_taskq_arg_t *tq_arg = tq_id->arg; + + splat_vprint(tq_arg->file, tq_arg->name, + "Taskqid %d starting for taskq '%s'\n", + tq_id->id, tq_arg->name); + + if (tq_id->id < SPLAT_TASKQ_ORDER_MAX+1) { + msleep(factor[tq_id->id] * 50); + } + + spin_lock(&tq_arg->lock); + tq_arg->order[tq_arg->flag] = tq_id->id; + tq_arg->flag++; + spin_unlock(&tq_arg->lock); + + splat_vprint(tq_arg->file, tq_arg->name, + "Taskqid %d complete for taskq '%s'\n", + tq_id->id, tq_arg->name); +} + +static int +splat_taskq_test6_impl(struct file *file, void *arg, boolean_t prealloc) +{ + taskq_t *tq; + taskqid_t id; + splat_taskq_id_t tq_id[SPLAT_TASKQ_ORDER_MAX]; + splat_taskq_arg_t tq_arg; + int order[SPLAT_TASKQ_ORDER_MAX] = { 1,2,3,6,7,8,4,5 }; + taskq_ent_t *tqes; + int i, rc = 0; + uint_t tflags; + + tqes = kmem_alloc(sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX, KM_SLEEP); + memset(tqes, 0, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX); + + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, + "Taskq '%s' creating (%s dispatch)\n", + SPLAT_TASKQ_TEST6_NAME, + prealloc ? "prealloc" : "dynamic"); + if ((tq = taskq_create(SPLAT_TASKQ_TEST6_NAME, 3, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, + "Taskq '%s' create failed\n", + SPLAT_TASKQ_TEST6_NAME); + return -EINVAL; + } + + tq_arg.flag = 0; + memset(&tq_arg.order, 0, sizeof(int) * SPLAT_TASKQ_ORDER_MAX); + spin_lock_init(&tq_arg.lock); + tq_arg.file = file; + tq_arg.name = SPLAT_TASKQ_TEST6_NAME; + + for (i = 0; i < SPLAT_TASKQ_ORDER_MAX; i++) { + taskq_init_ent(&tqes[i]); + + tq_id[i].id = i + 1; + tq_id[i].arg = &tq_arg; + tflags = TQ_SLEEP; + if (i > 4) + tflags |= TQ_FRONT; + + if (prealloc) { + taskq_dispatch_ent(tq, splat_taskq_test6_func, + &tq_id[i], tflags, &tqes[i]); + id = tqes[i].tqent_id; + } else { + id = taskq_dispatch(tq, splat_taskq_test6_func, + &tq_id[i], tflags); + } + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, + "Taskq '%s' function '%s' dispatch failed\n", + tq_arg.name, sym2str(splat_taskq_test6_func)); + rc = -EINVAL; + goto out; + } + + if (tq_id[i].id != id) { + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, + "Taskq '%s' expected taskqid %d got %d\n", + tq_arg.name, (int)tq_id[i].id, (int)id); + rc = -EINVAL; + goto out; + } + /* Sleep to let tasks 1-3 start executing. */ + if ( i == 2 ) + msleep(100); + } + + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, "Taskq '%s' " + "waiting for taskqid %d completion\n", tq_arg.name, + SPLAT_TASKQ_ORDER_MAX); + taskq_wait_outstanding(tq, SPLAT_TASKQ_ORDER_MAX); + rc = splat_taskq_test_order(&tq_arg, order); + +out: + splat_vprint(file, SPLAT_TASKQ_TEST6_NAME, + "Taskq '%s' destroying\n", tq_arg.name); + taskq_destroy(tq); + + kmem_free(tqes, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX); + + return rc; +} + +static int +splat_taskq_test6(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test6_impl(file, arg, B_FALSE); + if (rc) + return rc; + + rc = splat_taskq_test6_impl(file, arg, B_TRUE); + + return rc; +} + +static void +splat_taskq_test7_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + taskqid_t id; + + ASSERT(tq_arg); + + if (tq_arg->depth >= SPLAT_TASKQ_DEPTH_MAX) + return; + + tq_arg->depth++; + + splat_vprint(tq_arg->file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' function '%s' dispatching (depth = %u)\n", + tq_arg->name, sym2str(splat_taskq_test7_func), + tq_arg->depth); + + if (tq_arg->tqe) { + VERIFY(taskq_empty_ent(tq_arg->tqe)); + taskq_dispatch_ent(tq_arg->tq, splat_taskq_test7_func, + tq_arg, TQ_SLEEP, tq_arg->tqe); + id = tq_arg->tqe->tqent_id; + } else { + id = taskq_dispatch(tq_arg->tq, splat_taskq_test7_func, + tq_arg, TQ_SLEEP); + } + + if (id == 0) { + splat_vprint(tq_arg->file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' function '%s' dispatch failed " + "(depth = %u)\n", tq_arg->name, + sym2str(splat_taskq_test7_func), tq_arg->depth); + tq_arg->flag = -EINVAL; + return; + } +} + +static int +splat_taskq_test7_impl(struct file *file, void *arg, boolean_t prealloc) +{ + taskq_t *tq; + splat_taskq_arg_t *tq_arg; + taskq_ent_t *tqe; + int error; + + splat_vprint(file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' creating (%s dispatch)\n", + SPLAT_TASKQ_TEST7_NAME, + prealloc ? "prealloc" : "dynamic"); + if ((tq = taskq_create(SPLAT_TASKQ_TEST7_NAME, 1, defclsyspri, + 50, INT_MAX, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' create failed\n", + SPLAT_TASKQ_TEST7_NAME); + return -EINVAL; + } + + tq_arg = kmem_alloc(sizeof (splat_taskq_arg_t), KM_SLEEP); + tqe = kmem_alloc(sizeof (taskq_ent_t), KM_SLEEP); + + tq_arg->depth = 0; + tq_arg->flag = 0; + tq_arg->id = 0; + tq_arg->file = file; + tq_arg->name = SPLAT_TASKQ_TEST7_NAME; + tq_arg->tq = tq; + + if (prealloc) { + taskq_init_ent(tqe); + tq_arg->tqe = tqe; + } else { + tq_arg->tqe = NULL; + } + + splat_taskq_test7_func(tq_arg); + + if (tq_arg->flag == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' waiting\n", tq_arg->name); + taskq_wait_outstanding(tq, SPLAT_TASKQ_DEPTH_MAX); + } + + error = (tq_arg->depth == SPLAT_TASKQ_DEPTH_MAX ? 0 : -EINVAL); + + kmem_free(tqe, sizeof (taskq_ent_t)); + kmem_free(tq_arg, sizeof (splat_taskq_arg_t)); + + splat_vprint(file, SPLAT_TASKQ_TEST7_NAME, + "Taskq '%s' destroying\n", tq_arg->name); + taskq_destroy(tq); + + return (error); +} + +static int +splat_taskq_test7(struct file *file, void *arg) +{ + int rc; + + rc = splat_taskq_test7_impl(file, arg, B_FALSE); + if (rc) + return (rc); + + rc = splat_taskq_test7_impl(file, arg, B_TRUE); + + return (rc); +} + +static void +splat_taskq_throughput_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + ASSERT(tq_arg); + + atomic_inc(tq_arg->count); +} + +static int +splat_taskq_throughput(struct file *file, void *arg, const char *name, + int nthreads, int minalloc, int maxalloc, int flags, int tasks, + struct timespec *delta) +{ + taskq_t *tq; + taskqid_t id; + splat_taskq_arg_t tq_arg; + taskq_ent_t **tqes; + atomic_t count; + struct timespec start, stop; + int i, j, rc = 0; + + tqes = vmalloc(sizeof (*tqes) * tasks); + if (tqes == NULL) + return (-ENOMEM); + + memset(tqes, 0, sizeof (*tqes) * tasks); + + splat_vprint(file, name, "Taskq '%s' creating (%d/%d/%d/%d)\n", + name, nthreads, minalloc, maxalloc, tasks); + if ((tq = taskq_create(name, nthreads, defclsyspri, + minalloc, maxalloc, flags)) == NULL) { + splat_vprint(file, name, "Taskq '%s' create failed\n", name); + rc = -EINVAL; + goto out_free; + } + + tq_arg.file = file; + tq_arg.name = name; + tq_arg.count = &count; + atomic_set(tq_arg.count, 0); + + getnstimeofday(&start); + + for (i = 0; i < tasks; i++) { + tqes[i] = kmalloc(sizeof (taskq_ent_t), GFP_KERNEL); + if (tqes[i] == NULL) { + rc = -ENOMEM; + goto out; + } + + taskq_init_ent(tqes[i]); + taskq_dispatch_ent(tq, splat_taskq_throughput_func, + &tq_arg, TQ_SLEEP, tqes[i]); + id = tqes[i]->tqent_id; + + if (id == 0) { + splat_vprint(file, name, "Taskq '%s' function '%s' " + "dispatch %d failed\n", tq_arg.name, + sym2str(splat_taskq_throughput_func), i); + rc = -EINVAL; + goto out; + } + } + + splat_vprint(file, name, "Taskq '%s' waiting for %d dispatches\n", + tq_arg.name, tasks); + + taskq_wait(tq); + + if (delta != NULL) { + getnstimeofday(&stop); + *delta = timespec_sub(stop, start); + } + + splat_vprint(file, name, "Taskq '%s' %d/%d dispatches finished\n", + tq_arg.name, atomic_read(tq_arg.count), tasks); + + if (atomic_read(tq_arg.count) != tasks) + rc = -ERANGE; + +out: + splat_vprint(file, name, "Taskq '%s' destroying\n", tq_arg.name); + taskq_destroy(tq); +out_free: + for (j = 0; j < tasks && tqes[j] != NULL; j++) + kfree(tqes[j]); + + vfree(tqes); + + return (rc); +} + +/* + * Create a taskq with 100 threads and dispatch a huge number of trivial + * tasks to generate contention on tq->tq_lock. This test should always + * pass. The purpose is to provide a benchmark for measuring the + * effectiveness of taskq optimizations. + */ +#define TEST8_NUM_TASKS 0x20000 +#define TEST8_THREADS_PER_TASKQ 100 + +static int +splat_taskq_test8(struct file *file, void *arg) +{ + return (splat_taskq_throughput(file, arg, + SPLAT_TASKQ_TEST8_NAME, TEST8_THREADS_PER_TASKQ, + 1, INT_MAX, TASKQ_PREPOPULATE, TEST8_NUM_TASKS, NULL)); +} + +/* + * Create a taskq and dispatch a number of delayed tasks to the queue. + * For each task verify that it was run no early than requested. + */ +static void +splat_taskq_test9_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + ASSERT(tq_arg); + + if (ddi_time_after_eq(ddi_get_lbolt(), tq_arg->expire)) + atomic_inc(tq_arg->count); + + kmem_free(tq_arg, sizeof(splat_taskq_arg_t)); +} + +static int +splat_taskq_test9(struct file *file, void *arg) +{ + taskq_t *tq; + atomic_t count; + int i, rc = 0; + int minalloc = 1; + int maxalloc = 10; + int nr_tasks = 100; + + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, + "Taskq '%s' creating (%s dispatch) (%d/%d/%d)\n", + SPLAT_TASKQ_TEST9_NAME, "delay", minalloc, maxalloc, nr_tasks); + if ((tq = taskq_create(SPLAT_TASKQ_TEST9_NAME, 3, defclsyspri, + minalloc, maxalloc, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, + "Taskq '%s' create failed\n", SPLAT_TASKQ_TEST9_NAME); + return -EINVAL; + } + + atomic_set(&count, 0); + + for (i = 1; i <= nr_tasks; i++) { + splat_taskq_arg_t *tq_arg; + taskqid_t id; + uint32_t rnd; + + /* A random timeout in jiffies of at most 5 seconds */ + get_random_bytes((void *)&rnd, 4); + rnd = rnd % (5 * HZ); + + tq_arg = kmem_alloc(sizeof(splat_taskq_arg_t), KM_SLEEP); + tq_arg->file = file; + tq_arg->name = SPLAT_TASKQ_TEST9_NAME; + tq_arg->expire = ddi_get_lbolt() + rnd; + tq_arg->count = &count; + + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, + "Taskq '%s' delay dispatch %u jiffies\n", + SPLAT_TASKQ_TEST9_NAME, rnd); + + id = taskq_dispatch_delay(tq, splat_taskq_test9_func, + tq_arg, TQ_SLEEP, ddi_get_lbolt() + rnd); + + if (id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, + "Taskq '%s' delay dispatch failed\n", + SPLAT_TASKQ_TEST9_NAME); + kmem_free(tq_arg, sizeof(splat_taskq_arg_t)); + taskq_wait(tq); + rc = -EINVAL; + goto out; + } + } + + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, "Taskq '%s' waiting for " + "%d delay dispatches\n", SPLAT_TASKQ_TEST9_NAME, nr_tasks); + + taskq_wait(tq); + if (atomic_read(&count) != nr_tasks) + rc = -ERANGE; + + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, "Taskq '%s' %d/%d delay " + "dispatches finished on time\n", SPLAT_TASKQ_TEST9_NAME, + atomic_read(&count), nr_tasks); + splat_vprint(file, SPLAT_TASKQ_TEST9_NAME, "Taskq '%s' destroying\n", + SPLAT_TASKQ_TEST9_NAME); +out: + taskq_destroy(tq); + + return rc; +} + +/* + * Create a taskq and dispatch then cancel tasks in the queue. + */ +static void +splat_taskq_test10_func(void *arg) +{ + splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg; + uint8_t rnd; + + if (ddi_time_after_eq(ddi_get_lbolt(), tq_arg->expire)) + atomic_inc(tq_arg->count); + + /* Randomly sleep to further perturb the system */ + get_random_bytes((void *)&rnd, 1); + msleep(1 + (rnd % 9)); +} + +static int +splat_taskq_test10(struct file *file, void *arg) +{ + taskq_t *tq; + splat_taskq_arg_t **tqas; + atomic_t count; + int i, j, rc = 0; + int minalloc = 1; + int maxalloc = 10; + int nr_tasks = 100; + int canceled = 0; + int completed = 0; + int blocked = 0; + clock_t start, cancel; + + tqas = vmalloc(sizeof(*tqas) * nr_tasks); + if (tqas == NULL) + return -ENOMEM; + memset(tqas, 0, sizeof(*tqas) * nr_tasks); + + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, + "Taskq '%s' creating (%s dispatch) (%d/%d/%d)\n", + SPLAT_TASKQ_TEST10_NAME, "delay", minalloc, maxalloc, nr_tasks); + if ((tq = taskq_create(SPLAT_TASKQ_TEST10_NAME, 3, defclsyspri, + minalloc, maxalloc, TASKQ_PREPOPULATE)) == NULL) { + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, + "Taskq '%s' create failed\n", SPLAT_TASKQ_TEST10_NAME); + rc = -EINVAL; + goto out_free; + } + + atomic_set(&count, 0); + + for (i = 0; i < nr_tasks; i++) { + splat_taskq_arg_t *tq_arg; + uint32_t rnd; + + /* A random timeout in jiffies of at most 5 seconds */ + get_random_bytes((void *)&rnd, 4); + rnd = rnd % (5 * HZ); + + tq_arg = kmem_alloc(sizeof(splat_taskq_arg_t), KM_SLEEP); + tq_arg->file = file; + tq_arg->name = SPLAT_TASKQ_TEST10_NAME; + tq_arg->count = &count; + tqas[i] = tq_arg; + + /* + * Dispatch every 1/3 one immediately to mix it up, the cancel + * code is inherently racy and we want to try and provoke any + * subtle concurrently issues. + */ + if ((i % 3) == 0) { + tq_arg->expire = ddi_get_lbolt(); + tq_arg->id = taskq_dispatch(tq, splat_taskq_test10_func, + tq_arg, TQ_SLEEP); + } else { + tq_arg->expire = ddi_get_lbolt() + rnd; + tq_arg->id = taskq_dispatch_delay(tq, + splat_taskq_test10_func, + tq_arg, TQ_SLEEP, ddi_get_lbolt() + rnd); + } + + if (tq_arg->id == 0) { + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, + "Taskq '%s' dispatch failed\n", + SPLAT_TASKQ_TEST10_NAME); + kmem_free(tq_arg, sizeof(splat_taskq_arg_t)); + taskq_wait(tq); + rc = -EINVAL; + goto out; + } else { + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, + "Taskq '%s' dispatch %lu in %lu jiffies\n", + SPLAT_TASKQ_TEST10_NAME, (unsigned long)tq_arg->id, + !(i % 3) ? 0 : tq_arg->expire - ddi_get_lbolt()); + } + } + + /* + * Start randomly canceling tasks for the duration of the test. We + * happen to know the valid task id's will be in the range 1..nr_tasks + * because the taskq is private and was just created. However, we + * have no idea of a particular task has already executed or not. + */ + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, "Taskq '%s' randomly " + "canceling task ids\n", SPLAT_TASKQ_TEST10_NAME); + + start = ddi_get_lbolt(); + i = 0; + + while (ddi_time_before(ddi_get_lbolt(), start + 5 * HZ)) { + taskqid_t id; + uint32_t rnd; + + i++; + cancel = ddi_get_lbolt(); + get_random_bytes((void *)&rnd, 4); + id = 1 + (rnd % nr_tasks); + rc = taskq_cancel_id(tq, id); + + /* + * Keep track of the results of the random cancels. + */ + if (rc == 0) { + canceled++; + } else if (rc == ENOENT) { + completed++; + } else if (rc == EBUSY) { + blocked++; + } else { + rc = -EINVAL; + break; + } + + /* + * Verify we never get blocked to long in taskq_cancel_id(). + * The worst case is 10ms if we happen to cancel the task + * which is currently executing. We allow a factor of 2x. + */ + if (ddi_get_lbolt() - cancel > HZ / 50) { + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, + "Taskq '%s' cancel for %lu took %lu\n", + SPLAT_TASKQ_TEST10_NAME, (unsigned long)id, + ddi_get_lbolt() - cancel); + rc = -ETIMEDOUT; + break; + } + + get_random_bytes((void *)&rnd, 4); + msleep(1 + (rnd % 100)); + rc = 0; + } + + taskq_wait(tq); + + /* + * Cross check the results of taskq_cancel_id() with the number of + * times the dispatched function actually ran successfully. + */ + if ((rc == 0) && (nr_tasks - canceled != atomic_read(&count))) + rc = -EDOM; + + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, "Taskq '%s' %d attempts, " + "%d canceled, %d completed, %d blocked, %d/%d tasks run\n", + SPLAT_TASKQ_TEST10_NAME, i, canceled, completed, blocked, + atomic_read(&count), nr_tasks); + splat_vprint(file, SPLAT_TASKQ_TEST10_NAME, "Taskq '%s' destroying %d\n", + SPLAT_TASKQ_TEST10_NAME, rc); +out: + taskq_destroy(tq); +out_free: + for (j = 0; j < nr_tasks && tqas[j] != NULL; j++) + kmem_free(tqas[j], sizeof(splat_taskq_arg_t)); + vfree(tqas); + + return rc; +} + +/* + * Create a dynamic taskq with 100 threads and dispatch a huge number of + * trivial tasks. This will cause the taskq to grow quickly to its max + * thread count. This test should always pass. The purpose is to provide + * a benchmark for measuring the performance of dynamic taskqs. + */ +#define TEST11_NUM_TASKS 100000 +#define TEST11_THREADS_PER_TASKQ 100 + +static int +splat_taskq_test11(struct file *file, void *arg) +{ + struct timespec normal, dynamic; + int error; + + error = splat_taskq_throughput(file, arg, SPLAT_TASKQ_TEST11_NAME, + TEST11_THREADS_PER_TASKQ, 1, INT_MAX, + TASKQ_PREPOPULATE, TEST11_NUM_TASKS, &normal); + if (error) + return (error); + + error = splat_taskq_throughput(file, arg, SPLAT_TASKQ_TEST11_NAME, + TEST11_THREADS_PER_TASKQ, 1, INT_MAX, + TASKQ_PREPOPULATE | TASKQ_DYNAMIC, TEST11_NUM_TASKS, &dynamic); + if (error) + return (error); + + splat_vprint(file, SPLAT_TASKQ_TEST11_NAME, + "Timing taskq_wait(): normal=%ld.%09lds, dynamic=%ld.%09lds\n", + normal.tv_sec, normal.tv_nsec, + dynamic.tv_sec, dynamic.tv_nsec); + + /* A 10x increase in runtime is used to indicate a core problem. */ + if ((dynamic.tv_sec * NANOSEC + dynamic.tv_nsec) > + ((normal.tv_sec * NANOSEC + normal.tv_nsec) * 10)) + error = -ETIME; + + return (error); +} + +splat_subsystem_t * +splat_taskq_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_TASKQ_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_TASKQ_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_TASKQ; + + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST1_NAME, SPLAT_TASKQ_TEST1_DESC, + SPLAT_TASKQ_TEST1_ID, splat_taskq_test1); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST2_NAME, SPLAT_TASKQ_TEST2_DESC, + SPLAT_TASKQ_TEST2_ID, splat_taskq_test2); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST3_NAME, SPLAT_TASKQ_TEST3_DESC, + SPLAT_TASKQ_TEST3_ID, splat_taskq_test3); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST4_NAME, SPLAT_TASKQ_TEST4_DESC, + SPLAT_TASKQ_TEST4_ID, splat_taskq_test4); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST5_NAME, SPLAT_TASKQ_TEST5_DESC, + SPLAT_TASKQ_TEST5_ID, splat_taskq_test5); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST6_NAME, SPLAT_TASKQ_TEST6_DESC, + SPLAT_TASKQ_TEST6_ID, splat_taskq_test6); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST7_NAME, SPLAT_TASKQ_TEST7_DESC, + SPLAT_TASKQ_TEST7_ID, splat_taskq_test7); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST8_NAME, SPLAT_TASKQ_TEST8_DESC, + SPLAT_TASKQ_TEST8_ID, splat_taskq_test8); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST9_NAME, SPLAT_TASKQ_TEST9_DESC, + SPLAT_TASKQ_TEST9_ID, splat_taskq_test9); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST10_NAME, SPLAT_TASKQ_TEST10_DESC, + SPLAT_TASKQ_TEST10_ID, splat_taskq_test10); + SPLAT_TEST_INIT(sub, SPLAT_TASKQ_TEST11_NAME, SPLAT_TASKQ_TEST11_DESC, + SPLAT_TASKQ_TEST11_ID, splat_taskq_test11); + + return sub; +} + +void +splat_taskq_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST11_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST10_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST9_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST8_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST7_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST5_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST4_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_TASKQ_TEST1_ID); + + kfree(sub); +} + +int +splat_taskq_id(void) { + return SPLAT_SUBSYSTEM_TASKQ; +} --- linux-4.4.0.orig/spl/module/splat/splat-thread.c +++ linux-4.4.0/spl/module/splat/splat-thread.c @@ -0,0 +1,389 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Thread Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_THREAD_NAME "thread" +#define SPLAT_THREAD_DESC "Kernel Thread Tests" + +#define SPLAT_THREAD_TEST1_ID 0x0601 +#define SPLAT_THREAD_TEST1_NAME "create" +#define SPLAT_THREAD_TEST1_DESC "Validate thread creation" + +#define SPLAT_THREAD_TEST2_ID 0x0602 +#define SPLAT_THREAD_TEST2_NAME "exit" +#define SPLAT_THREAD_TEST2_DESC "Validate thread exit" + +#define SPLAT_THREAD_TEST3_ID 0x6003 +#define SPLAT_THREAD_TEST3_NAME "tsd" +#define SPLAT_THREAD_TEST3_DESC "Validate thread specific data" + +#define SPLAT_THREAD_TEST_MAGIC 0x4488CC00UL +#define SPLAT_THREAD_TEST_KEYS 32 +#define SPLAT_THREAD_TEST_THREADS 16 + +typedef struct thread_priv { + unsigned long tp_magic; + struct file *tp_file; + spinlock_t tp_lock; + wait_queue_head_t tp_waitq; + uint_t tp_keys[SPLAT_THREAD_TEST_KEYS]; + int tp_rc; + int tp_count; + int tp_dtor_count; +} thread_priv_t; + +static int +splat_thread_rc(thread_priv_t *tp, int rc) +{ + int ret; + + spin_lock(&tp->tp_lock); + ret = (tp->tp_rc == rc); + spin_unlock(&tp->tp_lock); + + return ret; +} + +static int +splat_thread_count(thread_priv_t *tp, int count) +{ + int ret; + + spin_lock(&tp->tp_lock); + ret = (tp->tp_count == count); + spin_unlock(&tp->tp_lock); + + return ret; +} + +static void +splat_thread_work1(void *priv) +{ + thread_priv_t *tp = (thread_priv_t *)priv; + + spin_lock(&tp->tp_lock); + ASSERT(tp->tp_magic == SPLAT_THREAD_TEST_MAGIC); + tp->tp_rc = 1; + wake_up(&tp->tp_waitq); + spin_unlock(&tp->tp_lock); + + thread_exit(); +} + +static int +splat_thread_test1(struct file *file, void *arg) +{ + thread_priv_t tp; + kthread_t *thr; + + tp.tp_magic = SPLAT_THREAD_TEST_MAGIC; + tp.tp_file = file; + spin_lock_init(&tp.tp_lock); + init_waitqueue_head(&tp.tp_waitq); + tp.tp_rc = 0; + + thr = (kthread_t *)thread_create(NULL, 0, splat_thread_work1, &tp, 0, + &p0, TS_RUN, defclsyspri); + /* Must never fail under Solaris, but we check anyway since this + * can happen in the linux SPL, we may want to change this behavior */ + if (thr == NULL) + return -ESRCH; + + /* Sleep until the thread sets tp.tp_rc == 1 */ + wait_event(tp.tp_waitq, splat_thread_rc(&tp, 1)); + + splat_vprint(file, SPLAT_THREAD_TEST1_NAME, "%s", + "Thread successfully started properly\n"); + return 0; +} + +static void +splat_thread_work2(void *priv) +{ + thread_priv_t *tp = (thread_priv_t *)priv; + + spin_lock(&tp->tp_lock); + ASSERT(tp->tp_magic == SPLAT_THREAD_TEST_MAGIC); + tp->tp_rc = 1; + wake_up(&tp->tp_waitq); + spin_unlock(&tp->tp_lock); + + thread_exit(); + + /* The following code is unreachable when thread_exit() is + * working properly, which is exactly what we're testing */ + spin_lock(&tp->tp_lock); + tp->tp_rc = 2; + wake_up(&tp->tp_waitq); + spin_unlock(&tp->tp_lock); +} + +static int +splat_thread_test2(struct file *file, void *arg) +{ + thread_priv_t tp; + kthread_t *thr; + int rc = 0; + + tp.tp_magic = SPLAT_THREAD_TEST_MAGIC; + tp.tp_file = file; + spin_lock_init(&tp.tp_lock); + init_waitqueue_head(&tp.tp_waitq); + tp.tp_rc = 0; + + thr = (kthread_t *)thread_create(NULL, 0, splat_thread_work2, &tp, 0, + &p0, TS_RUN, defclsyspri); + /* Must never fail under Solaris, but we check anyway since this + * can happen in the linux SPL, we may want to change this behavior */ + if (thr == NULL) + return -ESRCH; + + /* Sleep until the thread sets tp.tp_rc == 1 */ + wait_event(tp.tp_waitq, splat_thread_rc(&tp, 1)); + + /* Sleep until the thread sets tp.tp_rc == 2, or until we hit + * the timeout. If thread exit is working properly we should + * hit the timeout and never see to.tp_rc == 2. */ + rc = wait_event_timeout(tp.tp_waitq, splat_thread_rc(&tp, 2), HZ / 10); + if (rc > 0) { + rc = -EINVAL; + splat_vprint(file, SPLAT_THREAD_TEST2_NAME, "%s", + "Thread did not exit properly at thread_exit()\n"); + } else { + splat_vprint(file, SPLAT_THREAD_TEST2_NAME, "%s", + "Thread successfully exited at thread_exit()\n"); + } + + return rc; +} + +static void +splat_thread_work3_common(thread_priv_t *tp) +{ + ulong_t rnd; + int i, rc = 0; + + /* set a unique value for each key using a random value */ + get_random_bytes((void *)&rnd, 4); + for (i = 0; i < SPLAT_THREAD_TEST_KEYS; i++) + tsd_set(tp->tp_keys[i], (void *)(i + rnd)); + + /* verify the unique value for each key */ + for (i = 0; i < SPLAT_THREAD_TEST_KEYS; i++) + if (tsd_get(tp->tp_keys[i]) != (void *)(i + rnd)) + rc = -EINVAL; + + /* set the value to thread_priv_t for use by the destructor */ + for (i = 0; i < SPLAT_THREAD_TEST_KEYS; i++) + tsd_set(tp->tp_keys[i], (void *)tp); + + spin_lock(&tp->tp_lock); + if (rc && !tp->tp_rc) + tp->tp_rc = rc; + + tp->tp_count++; + wake_up_all(&tp->tp_waitq); + spin_unlock(&tp->tp_lock); +} + +static void +splat_thread_work3_wait(void *priv) +{ + thread_priv_t *tp = (thread_priv_t *)priv; + + ASSERT(tp->tp_magic == SPLAT_THREAD_TEST_MAGIC); + splat_thread_work3_common(tp); + wait_event(tp->tp_waitq, splat_thread_count(tp, 0)); + thread_exit(); +} + +static void +splat_thread_work3_exit(void *priv) +{ + thread_priv_t *tp = (thread_priv_t *)priv; + + ASSERT(tp->tp_magic == SPLAT_THREAD_TEST_MAGIC); + splat_thread_work3_common(tp); + thread_exit(); +} + +static void +splat_thread_dtor3(void *priv) +{ + thread_priv_t *tp = (thread_priv_t *)priv; + + ASSERT(tp->tp_magic == SPLAT_THREAD_TEST_MAGIC); + spin_lock(&tp->tp_lock); + tp->tp_dtor_count++; + spin_unlock(&tp->tp_lock); +} + +/* + * Create threads which set and verify SPLAT_THREAD_TEST_KEYS number of + * keys. These threads may then exit by calling thread_exit() which calls + * tsd_exit() resulting in all their thread specific data being reclaimed. + * Alternately, the thread may block in which case the thread specific + * data will be reclaimed as part of tsd_destroy(). In either case all + * thread specific data must be reclaimed, this is verified by ensuring + * the registered destructor is called the correct number of times. + */ +static int +splat_thread_test3(struct file *file, void *arg) +{ + int i, rc = 0, expected, wait_count = 0, exit_count = 0; + thread_priv_t tp; + + tp.tp_magic = SPLAT_THREAD_TEST_MAGIC; + tp.tp_file = file; + spin_lock_init(&tp.tp_lock); + init_waitqueue_head(&tp.tp_waitq); + tp.tp_rc = 0; + tp.tp_count = 0; + tp.tp_dtor_count = 0; + + for (i = 0; i < SPLAT_THREAD_TEST_KEYS; i++) { + tp.tp_keys[i] = 0; + tsd_create(&tp.tp_keys[i], splat_thread_dtor3); + } + + /* Start tsd wait threads */ + for (i = 0; i < SPLAT_THREAD_TEST_THREADS; i++) { + if (thread_create(NULL, 0, splat_thread_work3_wait, + &tp, 0, &p0, TS_RUN, defclsyspri)) + wait_count++; + } + + /* All wait threads have setup their tsd and are blocking. */ + wait_event(tp.tp_waitq, splat_thread_count(&tp, wait_count)); + + if (tp.tp_dtor_count != 0) { + splat_vprint(file, SPLAT_THREAD_TEST3_NAME, + "Prematurely ran %d tsd destructors\n", tp.tp_dtor_count); + if (!rc) + rc = -ERANGE; + } + + /* Start tsd exit threads */ + for (i = 0; i < SPLAT_THREAD_TEST_THREADS; i++) { + if (thread_create(NULL, 0, splat_thread_work3_exit, + &tp, 0, &p0, TS_RUN, defclsyspri)) + exit_count++; + } + + /* All exit threads verified tsd and are in the process of exiting */ + wait_event(tp.tp_waitq,splat_thread_count(&tp, wait_count+exit_count)); + msleep(500); + + expected = (SPLAT_THREAD_TEST_KEYS * exit_count); + if (tp.tp_dtor_count != expected) { + splat_vprint(file, SPLAT_THREAD_TEST3_NAME, + "Expected %d exit tsd destructors but saw %d\n", + expected, tp.tp_dtor_count); + if (!rc) + rc = -ERANGE; + } + + /* Destroy all keys and associated tsd in blocked threads */ + for (i = 0; i < SPLAT_THREAD_TEST_KEYS; i++) + tsd_destroy(&tp.tp_keys[i]); + + expected = (SPLAT_THREAD_TEST_KEYS * (exit_count + wait_count)); + if (tp.tp_dtor_count != expected) { + splat_vprint(file, SPLAT_THREAD_TEST3_NAME, + "Expected %d wait+exit tsd destructors but saw %d\n", + expected, tp.tp_dtor_count); + if (!rc) + rc = -ERANGE; + } + + /* Release the remaining wait threads, sleep briefly while they exit */ + spin_lock(&tp.tp_lock); + tp.tp_count = 0; + wake_up_all(&tp.tp_waitq); + spin_unlock(&tp.tp_lock); + msleep(500); + + if (tp.tp_rc) { + splat_vprint(file, SPLAT_THREAD_TEST3_NAME, + "Thread tsd_get()/tsd_set() error %d\n", tp.tp_rc); + if (!rc) + rc = tp.tp_rc; + } else if (!rc) { + splat_vprint(file, SPLAT_THREAD_TEST3_NAME, "%s", + "Thread specific data verified\n"); + } + + return rc; +} + +splat_subsystem_t * +splat_thread_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_THREAD_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_THREAD_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_THREAD; + + SPLAT_TEST_INIT(sub, SPLAT_THREAD_TEST1_NAME, SPLAT_THREAD_TEST1_DESC, + SPLAT_THREAD_TEST1_ID, splat_thread_test1); + SPLAT_TEST_INIT(sub, SPLAT_THREAD_TEST2_NAME, SPLAT_THREAD_TEST2_DESC, + SPLAT_THREAD_TEST2_ID, splat_thread_test2); + SPLAT_TEST_INIT(sub, SPLAT_THREAD_TEST3_NAME, SPLAT_THREAD_TEST3_DESC, + SPLAT_THREAD_TEST3_ID, splat_thread_test3); + + return sub; +} + +void +splat_thread_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + SPLAT_TEST_FINI(sub, SPLAT_THREAD_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_THREAD_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_THREAD_TEST1_ID); + + kfree(sub); +} + +int +splat_thread_id(void) { + return SPLAT_SUBSYSTEM_THREAD; +} --- linux-4.4.0.orig/spl/module/splat/splat-time.c +++ linux-4.4.0/spl/module/splat/splat-time.c @@ -0,0 +1,119 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Time Tests. +\*****************************************************************************/ + +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_TIME_NAME "time" +#define SPLAT_TIME_DESC "Kernel Time Tests" + +#define SPLAT_TIME_TEST1_ID 0x0801 +#define SPLAT_TIME_TEST1_NAME "time1" +#define SPLAT_TIME_TEST1_DESC "HZ Test" + +#define SPLAT_TIME_TEST2_ID 0x0802 +#define SPLAT_TIME_TEST2_NAME "time2" +#define SPLAT_TIME_TEST2_DESC "Monotonic Test" + +static int +splat_time_test1(struct file *file, void *arg) +{ + int myhz = hz; + splat_vprint(file, SPLAT_TIME_TEST1_NAME, "hz is %d\n", myhz); + return 0; +} + +static int +splat_time_test2(struct file *file, void *arg) +{ + hrtime_t tm1, tm2; + int i; + + tm1 = gethrtime(); + splat_vprint(file, SPLAT_TIME_TEST2_NAME, "time is %lld\n", tm1); + + for(i = 0; i < 100; i++) { + tm2 = gethrtime(); + splat_vprint(file, SPLAT_TIME_TEST2_NAME, "time is %lld\n", tm2); + + if(tm1 > tm2) { + splat_print(file, "%s: gethrtime() is not giving " + "monotonically increasing values\n", + SPLAT_TIME_TEST2_NAME); + return 1; + } + tm1 = tm2; + + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(10); + } + + return 0; +} + +splat_subsystem_t * +splat_time_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_TIME_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_TIME_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_TIME; + + SPLAT_TEST_INIT(sub, SPLAT_TIME_TEST1_NAME, SPLAT_TIME_TEST1_DESC, + SPLAT_TIME_TEST1_ID, splat_time_test1); + SPLAT_TEST_INIT(sub, SPLAT_TIME_TEST2_NAME, SPLAT_TIME_TEST2_DESC, + SPLAT_TIME_TEST2_ID, splat_time_test2); + + return sub; +} + +void +splat_time_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_TIME_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_TIME_TEST1_ID); + + kfree(sub); +} + +int +splat_time_id(void) +{ + return SPLAT_SUBSYSTEM_TIME; +} --- linux-4.4.0.orig/spl/module/splat/splat-vnode.c +++ linux-4.4.0/spl/module/splat/splat-vnode.c @@ -0,0 +1,451 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Vnode Tests. +\*****************************************************************************/ + +#include +#include "splat-internal.h" + +#define SPLAT_VNODE_NAME "vnode" +#define SPLAT_VNODE_DESC "Kernel Vnode Tests" + +#define SPLAT_VNODE_TEST1_ID 0x0901 +#define SPLAT_VNODE_TEST1_NAME "vn_open" +#define SPLAT_VNODE_TEST1_DESC "Vn_open Test" + +#define SPLAT_VNODE_TEST2_ID 0x0902 +#define SPLAT_VNODE_TEST2_NAME "vn_openat" +#define SPLAT_VNODE_TEST2_DESC "Vn_openat Test" + +#define SPLAT_VNODE_TEST3_ID 0x0903 +#define SPLAT_VNODE_TEST3_NAME "vn_rdwr" +#define SPLAT_VNODE_TEST3_DESC "Vn_rdwrt Test" + +#define SPLAT_VNODE_TEST4_ID 0x0904 +#define SPLAT_VNODE_TEST4_NAME "vn_rename" +#define SPLAT_VNODE_TEST4_DESC "Vn_rename Test" + +#define SPLAT_VNODE_TEST5_ID 0x0905 +#define SPLAT_VNODE_TEST5_NAME "vn_getattr" +#define SPLAT_VNODE_TEST5_DESC "Vn_getattr Test" + +#define SPLAT_VNODE_TEST6_ID 0x0906 +#define SPLAT_VNODE_TEST6_NAME "vn_sync" +#define SPLAT_VNODE_TEST6_DESC "Vn_sync Test" + +#define SPLAT_VNODE_TEST_FILE "/etc/fstab" +#define SPLAT_VNODE_TEST_FILE_AT "etc/fstab" +#define SPLAT_VNODE_TEST_FILE_RW "/tmp/spl.vnode.tmp" +#define SPLAT_VNODE_TEST_FILE_RW1 "/tmp/spl.vnode.tmp.1" +#define SPLAT_VNODE_TEST_FILE_RW2 "/tmp/spl.vnode.tmp.2" + +static int +splat_vnode_user_cmd(struct file *file, void *arg, + char *name, char *cmd) +{ + char sh_path[] = "/bin/sh"; + char *argv[] = { sh_path, + "-c", + cmd, + NULL }; + char *envp[] = { "HOME=/", + "TERM=linux", + "PATH=/sbin:/usr/sbin:/bin:/usr/bin", + NULL }; + int rc; + + rc = call_usermodehelper(sh_path, argv, envp, UMH_WAIT_PROC); + if (rc) { + splat_vprint(file, name, + "Failed command: %s %s %s (%d)\n", + argv[0], argv[1], cmd, rc); + return -EPERM; + } + + return 0; +} + +static int +splat_vnode_unlink_all(struct file *file, void *arg, char *name) +{ + char *cmds[] = { "rm -f " SPLAT_VNODE_TEST_FILE_RW, + "rm -f " SPLAT_VNODE_TEST_FILE_RW1, + "rm -f " SPLAT_VNODE_TEST_FILE_RW2, + NULL }; + int i = 0, rc = 0; + + while (cmds[i] != NULL) { + if ((rc = splat_vnode_user_cmd(file, arg, name, cmds[i]))) + return rc; + + i++; + } + + return rc; +} + +static int +splat_vnode_test1(struct file *file, void *arg) +{ + vnode_t *vp; + int rc; + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE, UIO_SYSSPACE, + FREAD, 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST1_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + return -rc; + } + + rc = VOP_CLOSE(vp, 0, 0, 0, 0, 0); + + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST1_NAME, + "Failed to vn_close test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + return -rc; + } + + splat_vprint(file, SPLAT_VNODE_TEST1_NAME, "Successfully vn_open'ed " + "and vn_closed test file: %s\n", SPLAT_VNODE_TEST_FILE); + + return -rc; +} /* splat_vnode_test1() */ + +static int +splat_vnode_test2(struct file *file, void *arg) +{ + vnode_t *vp; + int rc; + + if ((rc = vn_openat(SPLAT_VNODE_TEST_FILE_AT, UIO_SYSSPACE, + FREAD, 0644, &vp, 0, 0, rootdir, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST2_NAME, + "Failed to vn_openat test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + return -rc; + } + + rc = VOP_CLOSE(vp, 0, 0, 0, 0, 0); + + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST2_NAME, + "Failed to vn_close test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + return -rc; + } + + splat_vprint(file, SPLAT_VNODE_TEST2_NAME, "Successfully vn_openat'ed " + "and vn_closed test file: %s\n", SPLAT_VNODE_TEST_FILE); + + return -rc; +} /* splat_vnode_test2() */ + +static int +splat_vnode_test3(struct file *file, void *arg) +{ + vnode_t *vp; + char buf1[32] = "SPL VNode Interface Test File\n"; + char buf2[32] = ""; + int rc; + + if ((rc = splat_vnode_unlink_all(file, arg, SPLAT_VNODE_TEST3_NAME))) + return rc; + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE_RW, UIO_SYSSPACE, + FWRITE | FREAD | FCREAT | FEXCL, + 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + return -rc; + } + + rc = vn_rdwr(UIO_WRITE, vp, buf1, strlen(buf1), 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, + "Failed vn_rdwr write of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + goto out; + } + + rc = vn_rdwr(UIO_READ, vp, buf2, strlen(buf1), 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, + "Failed vn_rdwr read of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + goto out; + } + + if (strncmp(buf1, buf2, strlen(buf1))) { + rc = EINVAL; + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, + "Failed strncmp data written does not match " + "data read\nWrote: %sRead: %s\n", buf1, buf2); + goto out; + } + + rc = 0; + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, "Wrote: %s", buf1); + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, "Read: %s", buf2); + splat_vprint(file, SPLAT_VNODE_TEST3_NAME, "Successfully wrote and " + "read expected data pattern to test file: %s\n", + SPLAT_VNODE_TEST_FILE_RW); + +out: + VOP_CLOSE(vp, 0, 0, 0, 0, 0); + vn_remove(SPLAT_VNODE_TEST_FILE_RW, UIO_SYSSPACE, RMFILE); + + return -rc; +} /* splat_vnode_test3() */ + +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0) +static int +splat_vnode_test4(struct file *file, void *arg) +{ + vnode_t *vp; + char buf1[32] = "SPL VNode Interface Test File\n"; + char buf2[32] = ""; + int rc; + + if ((rc = splat_vnode_unlink_all(file, arg, SPLAT_VNODE_TEST4_NAME))) + return rc; + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE_RW1, UIO_SYSSPACE, + FWRITE | FREAD | FCREAT | FEXCL, 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW1, rc); + goto out; + } + + rc = vn_rdwr(UIO_WRITE, vp, buf1, strlen(buf1), 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, + "Failed vn_rdwr write of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW1, rc); + goto out2; + } + + VOP_CLOSE(vp, 0, 0, 0, 0, 0); + + rc = vn_rename(SPLAT_VNODE_TEST_FILE_RW1,SPLAT_VNODE_TEST_FILE_RW2,0); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, "Failed vn_rename " + "%s -> %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW1, + SPLAT_VNODE_TEST_FILE_RW2, rc); + goto out; + } + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE_RW2, UIO_SYSSPACE, + FREAD | FEXCL, 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW2, rc); + goto out; + } + + rc = vn_rdwr(UIO_READ, vp, buf2, strlen(buf1), 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, + "Failed vn_rdwr read of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW2, rc); + goto out2; + } + + if (strncmp(buf1, buf2, strlen(buf1))) { + rc = EINVAL; + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, + "Failed strncmp data written does not match " + "data read\nWrote: %sRead: %s\n", buf1, buf2); + goto out2; + } + + rc = 0; + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, "Wrote to %s: %s", + SPLAT_VNODE_TEST_FILE_RW1, buf1); + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, "Read from %s: %s", + SPLAT_VNODE_TEST_FILE_RW2, buf2); + splat_vprint(file, SPLAT_VNODE_TEST4_NAME, "Successfully renamed " + "test file %s -> %s and verified data pattern\n", + SPLAT_VNODE_TEST_FILE_RW1, SPLAT_VNODE_TEST_FILE_RW2); +out2: + VOP_CLOSE(vp, 0, 0, 0, 0, 0); +out: + vn_remove(SPLAT_VNODE_TEST_FILE_RW1, UIO_SYSSPACE, RMFILE); + vn_remove(SPLAT_VNODE_TEST_FILE_RW2, UIO_SYSSPACE, RMFILE); + + return -rc; +} /* splat_vnode_test4() */ +#endif + +static int +splat_vnode_test5(struct file *file, void *arg) +{ + vnode_t *vp; + vattr_t vap; + int rc; + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE, UIO_SYSSPACE, + FREAD, 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST5_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + return -rc; + } + + rc = VOP_GETATTR(vp, &vap, 0, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST5_NAME, + "Failed to vn_getattr test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE, rc); + goto out; + } + + if (vap.va_type != VREG) { + rc = EINVAL; + splat_vprint(file, SPLAT_VNODE_TEST5_NAME, + "Failed expected regular file type " + "(%d != VREG): %s (%d)\n", vap.va_type, + SPLAT_VNODE_TEST_FILE, rc); + goto out; + } + + splat_vprint(file, SPLAT_VNODE_TEST1_NAME, "Successfully " + "vn_getattr'ed test file: %s\n", SPLAT_VNODE_TEST_FILE); + +out: + VOP_CLOSE(vp, 0, 0, 0, 0, 0); + + return -rc; +} /* splat_vnode_test5() */ + +static int +splat_vnode_test6(struct file *file, void *arg) +{ + vnode_t *vp; + char buf[32] = "SPL VNode Interface Test File\n"; + int rc; + + if ((rc = splat_vnode_unlink_all(file, arg, SPLAT_VNODE_TEST6_NAME))) + return rc; + + if ((rc = vn_open(SPLAT_VNODE_TEST_FILE_RW, UIO_SYSSPACE, + FWRITE | FCREAT | FEXCL, 0644, &vp, 0, 0))) { + splat_vprint(file, SPLAT_VNODE_TEST6_NAME, + "Failed to vn_open test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + return -rc; + } + + rc = vn_rdwr(UIO_WRITE, vp, buf, strlen(buf), 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST6_NAME, + "Failed vn_rdwr write of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + goto out; + } + + rc = vn_fsync(vp, 0, 0, 0); + if (rc) { + splat_vprint(file, SPLAT_VNODE_TEST6_NAME, + "Failed vn_fsync of test file: %s (%d)\n", + SPLAT_VNODE_TEST_FILE_RW, rc); + goto out; + } + + rc = 0; + splat_vprint(file, SPLAT_VNODE_TEST6_NAME, "Successfully " + "fsync'ed test file %s\n", SPLAT_VNODE_TEST_FILE_RW); +out: + VOP_CLOSE(vp, 0, 0, 0, 0, 0); + vn_remove(SPLAT_VNODE_TEST_FILE_RW, UIO_SYSSPACE, RMFILE); + + return -rc; +} /* splat_vnode_test6() */ + +splat_subsystem_t * +splat_vnode_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_VNODE_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_VNODE_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_VNODE; + + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST1_NAME, SPLAT_VNODE_TEST1_DESC, + SPLAT_VNODE_TEST1_ID, splat_vnode_test1); + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST2_NAME, SPLAT_VNODE_TEST2_DESC, + SPLAT_VNODE_TEST2_ID, splat_vnode_test2); + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST3_NAME, SPLAT_VNODE_TEST3_DESC, + SPLAT_VNODE_TEST3_ID, splat_vnode_test3); +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0) + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST4_NAME, SPLAT_VNODE_TEST4_DESC, + SPLAT_VNODE_TEST4_ID, splat_vnode_test4); +#endif + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST5_NAME, SPLAT_VNODE_TEST5_DESC, + SPLAT_VNODE_TEST5_ID, splat_vnode_test5); + SPLAT_TEST_INIT(sub, SPLAT_VNODE_TEST6_NAME, SPLAT_VNODE_TEST6_DESC, + SPLAT_VNODE_TEST6_ID, splat_vnode_test6); + + return sub; +} /* splat_vnode_init() */ + +void +splat_vnode_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST6_ID); + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST5_ID); +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4,1,0) + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST4_ID); +#endif + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST3_ID); + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST2_ID); + SPLAT_TEST_FINI(sub, SPLAT_VNODE_TEST1_ID); + + kfree(sub); +} /* splat_vnode_fini() */ + +int +splat_vnode_id(void) +{ + return SPLAT_SUBSYSTEM_VNODE; +} /* splat_vnode_id() */ --- linux-4.4.0.orig/spl/module/splat/splat-zlib.c +++ linux-4.4.0/spl/module/splat/splat-zlib.c @@ -0,0 +1,166 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . + ***************************************************************************** + * Solaris Porting LAyer Tests (SPLAT) Zlib Compression Tests. +\*****************************************************************************/ + +#include +#include +#include +#include +#include "splat-internal.h" + +#define SPLAT_ZLIB_NAME "zlib" +#define SPLAT_ZLIB_DESC "Zlib Compression Tests" + +#define SPLAT_ZLIB_TEST1_ID 0x0f01 +#define SPLAT_ZLIB_TEST1_NAME "compress/uncompress" +#define SPLAT_ZLIB_TEST1_DESC "Compress/Uncompress Test" + +#define BUFFER_SIZE (128 * 1024) + +static int +splat_zlib_test1_check(struct file *file, void *src, void *dst, void *chk, + int level) +{ + size_t dst_len = BUFFER_SIZE; + size_t chk_len = BUFFER_SIZE; + int rc; + + memset(dst, 0, BUFFER_SIZE); + memset(chk, 0, BUFFER_SIZE); + + rc = z_compress_level(dst, &dst_len, src, BUFFER_SIZE, level); + if (rc != Z_OK) { + splat_vprint(file, SPLAT_ZLIB_TEST1_NAME, + "Failed level %d z_compress_level(), %d\n", level, rc); + return -EINVAL; + } + + rc = z_uncompress(chk, &chk_len, dst, dst_len); + if (rc != Z_OK) { + splat_vprint(file, SPLAT_ZLIB_TEST1_NAME, + "Failed level %d z_uncompress(), %d\n", level, rc); + return -EINVAL; + } + + rc = memcmp(src, chk, BUFFER_SIZE); + if (rc) { + splat_vprint(file, SPLAT_ZLIB_TEST1_NAME, + "Failed level %d memcmp()), %d\n", level, rc); + return -EINVAL; + } + + splat_vprint(file, SPLAT_ZLIB_TEST1_NAME, + "Passed level %d, compressed %d bytes to %d bytes\n", + level, BUFFER_SIZE, (int)dst_len); + + return 0; +} + +/* + * Compress a buffer, uncompress the newly compressed buffer, then + * compare it to the original. Do this for all 9 compression levels. + */ +static int +splat_zlib_test1(struct file *file, void *arg) +{ + void *src = NULL, *dst = NULL, *chk = NULL; + int i, rc, level; + + src = vmalloc(BUFFER_SIZE); + if (src == NULL) { + rc = -ENOMEM; + goto out; + } + + dst = vmalloc(BUFFER_SIZE); + if (dst == NULL) { + rc = -ENOMEM; + goto out; + } + + chk = vmalloc(BUFFER_SIZE); + if (chk == NULL) { + rc = -ENOMEM; + goto out; + } + + /* Source buffer is a repeating 1024 byte random pattern. */ + random_get_pseudo_bytes(src, sizeof(uint8_t) * 1024); + for (i = 1; i < 128; i++) + memcpy(src + (i * 1024), src, 1024); + + for (level = 1; level <= 9; level++) + if ((rc = splat_zlib_test1_check(file, src, dst, chk, level))) + break; +out: + if (src) + vfree(src); + + if (dst) + vfree(dst); + + if (chk) + vfree(chk); + + return rc; +} + +splat_subsystem_t * +splat_zlib_init(void) +{ + splat_subsystem_t *sub; + + sub = kmalloc(sizeof(*sub), GFP_KERNEL); + if (sub == NULL) + return NULL; + + memset(sub, 0, sizeof(*sub)); + strncpy(sub->desc.name, SPLAT_ZLIB_NAME, SPLAT_NAME_SIZE); + strncpy(sub->desc.desc, SPLAT_ZLIB_DESC, SPLAT_DESC_SIZE); + INIT_LIST_HEAD(&sub->subsystem_list); + INIT_LIST_HEAD(&sub->test_list); + spin_lock_init(&sub->test_lock); + sub->desc.id = SPLAT_SUBSYSTEM_ZLIB; + + SPLAT_TEST_INIT(sub, SPLAT_ZLIB_TEST1_NAME, SPLAT_ZLIB_TEST1_DESC, + SPLAT_ZLIB_TEST1_ID, splat_zlib_test1); + + return sub; +} + +void +splat_zlib_fini(splat_subsystem_t *sub) +{ + ASSERT(sub); + + SPLAT_TEST_FINI(sub, SPLAT_ZLIB_TEST1_ID); + + kfree(sub); +} + +int +splat_zlib_id(void) { + return SPLAT_SUBSYSTEM_ZLIB; +} --- linux-4.4.0.orig/spl/rpm/Makefile.am +++ linux-4.4.0/spl/rpm/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = generic redhat --- linux-4.4.0.orig/spl/rpm/Makefile.in +++ linux-4.4.0/spl/rpm/Makefile.in @@ -0,0 +1,672 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = rpm +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = generic redhat +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rpm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rpm/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/rpm/generic/Makefile.am +++ linux-4.4.0/spl/rpm/generic/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in --- linux-4.4.0.orig/spl/rpm/generic/Makefile.in +++ linux-4.4.0/spl/rpm/generic/Makefile.in @@ -0,0 +1,499 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = rpm/generic +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = spl.spec spl-kmod.spec spl-dkms.spec +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/spl-dkms.spec.in \ + $(srcdir)/spl-kmod.spec.in $(srcdir)/spl.spec.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rpm/generic/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rpm/generic/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +spl.spec: $(top_builddir)/config.status $(srcdir)/spl.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +spl-kmod.spec: $(top_builddir)/config.status $(srcdir)/spl-kmod.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +spl-dkms.spec: $(top_builddir)/config.status $(srcdir)/spl-dkms.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/rpm/generic/spl-dkms.spec.in +++ linux-4.4.0/spl/rpm/generic/spl-dkms.spec.in @@ -0,0 +1,71 @@ +%{?!packager: %define packager Brian Behlendorf } + +%define module @PACKAGE@ +%define mkconf scripts/dkms.mkconf + +Name: %{module}-dkms + +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Kernel module(s) (dkms) + +Group: System Environment/Kernel +License: GPLv2+ +URL: http://zfsonlinux.org/ +Source0: %{module}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch + +Requires: dkms >= 2.2.0.2 +Requires: gcc, make, perl +Requires: kernel-devel +Provides: %{module}-kmod = %{version} + +%description +This package contains the dkms kernel modules required to emulate +several interfaces provided by the Solaris kernel. + +%prep +%setup -q -n %{module}-%{version} + +%build +%{mkconf} -n %{module} -v %{version} -f dkms.conf + +%install +if [ "$RPM_BUILD_ROOT" != "/" ]; then + rm -rf $RPM_BUILD_ROOT +fi +mkdir -p $RPM_BUILD_ROOT/usr/src/ +cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/ + +%clean +if [ "$RPM_BUILD_ROOT" != "/" ]; then + rm -rf $RPM_BUILD_ROOT +fi + +%files +%defattr(-,root,root) +/usr/src/%{module}-%{version} + +%post +for POSTINST in /usr/lib/dkms/common.postinst; do + if [ -f $POSTINST ]; then + $POSTINST %{module} %{version} + exit $? + fi + echo "WARNING: $POSTINST does not exist." +done +echo -e "ERROR: DKMS version is too old and %{module} was not" +echo -e "built with legacy DKMS support." +echo -e "You must either rebuild %{module} with legacy postinst" +echo -e "support or upgrade DKMS to a more current version." +exit 1 + +%preun +echo -e "Uninstall of %{module} module (version %{version}) beginning:" +dkms remove -m %{module} -v %{version} --all --rpm_safe_upgrade +exit 0 + +%changelog +* %(date "+%a %b %d %Y") %packager %{version}-%{release} +- Automatic build by DKMS --- linux-4.4.0.orig/spl/rpm/generic/spl-kmod.spec.in +++ linux-4.4.0/spl/rpm/generic/spl-kmod.spec.in @@ -0,0 +1,188 @@ +%define module @PACKAGE@ +#define repo rpmfusion +#define repo chaos + +# (un)define the next line to either build for the newest or all current kernels +%define buildforkernels newest +#define buildforkernels current +#define buildforkernels akmod + +%bcond_with debug +%bcond_with debug_log +%bcond_with debug_kmem +%bcond_with debug_kmem_tracking +%bcond_with atomic_spinlocks + + +Name: %{module}-kmod + +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Kernel module(s) + +Group: System Environment/Kernel +License: GPLv2+ +URL: http://zfsonlinux.org/ +Source0: %{module}-%{version}.tar.gz +Source10: kmodtool +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n) + +# The developments headers will conflict with the dkms packages. +Conflicts: %{module}-dkms + +%if %{defined repo} + +# Building for a repository use the proper build-sysbuild package +# to determine which kernel-devel packages should be installed. +BuildRequires: %{_bindir}/kmodtool +%{!?kernels:BuildRequires: buildsys-build-%{repo}-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu}} + +%else + +# Building local packages attempt to to use the installed kernel. +%{?rhel:BuildRequires: kernel-devel} +%{?fedora:BuildRequires: kernel-devel} +%{?suse_version:BuildRequires: kernel-source} + +%if !%{defined kernels} && !%{defined build_src_rpm} + %if 0%{?rhel}%{?fedora}%{?suse_version} + %define kernels %(ls -1 /usr/src/kernels) + %else + %define kernels %(ls -1 /lib/modules) + %endif +%endif +%endif + +%if 0%{?fedora} >= 17 +%define prefix /usr +%endif + +# Kmodtool does its magic here. A patched version of kmodtool is shipped +# because the latest versions may not be available for your distribution. +# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714 +%{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) } + + +%description +This package contains the kernel modules required to emulate +several interfaces provided by the Solaris kernel. + +%prep +# Error out if there was something wrong with kmodtool. +%{?kmodtool_check} + +# Print kmodtool output for debugging purposes: +bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null + +%if %{with debug} + %define debug --enable-debug +%else + %define debug --disable-debug +%endif + +%if %{with debug_log} + %define debug_log --enable-debug-log +%else + %define debug_log --disable-debug-log +%endif + +%if %{with debug_kmem} + %define debug_kmem --enable-debug-kmem +%else + %define debug_kmem --disable-debug-kmem +%endif + +%if %{with debug_kmem_tracking} + %define debug_kmem_tracking --enable-debug-kmem-tracking +%else + %define debug_kmem_tracking --disable-debug-kmem-tracking +%endif + +%if %{with atomic_spinlocks} + %define atomic_spinlocks --enable-atomic-spinlocks +%else + %define atomic_spinlocks --disable-atomic-spinlocks +%endif + +# Leverage VPATH from configure to avoid making multiple copies. +%define _configure ../%{module}-%{version}/configure + +%setup -q -c -T -a 0 + +for kernel_version in %{?kernel_versions}; do + %{__mkdir} _kmod_build_${kernel_version%%___*} +done + +%build +for kernel_version in %{?kernel_versions}; do + cd _kmod_build_${kernel_version%%___*} + %configure \ + --with-config=kernel \ +%if 0%{?rhel}%{?fedora} + --with-linux="${kernel_version##*___}" \ + --with-linux-obj="${kernel_version##*___}" \ +%else + --with-linux="$( \ + if [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \ + echo "/lib/modules/${kernel_version%%___*}/source"; \ + else \ + echo "/lib/modules/${kernel_version%%___*}/build"; \ + fi)" \ + --with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \ +%endif + %{debug} \ + %{debug_log} \ + %{debug_kmem} \ + %{debug_kmem_tracking} \ + %{atomic_spinlocks} + make %{?_smp_mflags} + cd .. +done + + +%install +rm -rf ${RPM_BUILD_ROOT} + +# Relies on the kernel 'modules_install' make target. +for kernel_version in %{?kernel_versions}; do + cd _kmod_build_${kernel_version%%___*} + make install \ + DESTDIR=${RPM_BUILD_ROOT} \ + %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \ + INSTALL_MOD_DIR=%{kmodinstdir_postfix} + cd .. +done +chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/* +%{?akmod_install} + + +%clean +rm -rf $RPM_BUILD_ROOT + +%changelog +* Fri Jan 8 2016 Ned Bass - 0.6.5.4-1 +- Build fixes on SPARC and some kernels +- Fix taskq dynamic spawning deadlock +- Fix builtin kernel builds +- Fix crash due to overflow in P2ROUNDUP macro +- Fix deadlock during direct memory reclaim +* Tue Oct 13 2015 Ned Bass - 0.6.5.3-1 +- Fix CPU hotplug zfsonlinux/spl#482 +- Disable dynamic taskqs by default to avoid deadlock zfsonlinux/spl#484 +* Tue Sep 29 2015 Ned Bass - 0.6.5.2-1 +- Released 0.6.5.2-1 +- Fix PAX Patch/Grsec SLAB_USERCOPY panic zfsonlinux/zfs#3796 +- Always remove during dkms uninstall/update zfsonlinux/spl#476 +* Thu Sep 19 2015 Ned Bass - 0.6.5.1-1 +- Released 0.6.5.1-1, no changes from spl-0.6.5 +* Thu Sep 10 2015 Brian Behlendorf - 0.6.5-1 +- Released 0.6.5-1, detailed release notes are available at: +- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.6.5 +* Wed Apr 8 2015 Brian Behlendorf - 0.6.4-1 +- Released 0.6.4-1 +* Thu Jun 12 2014 Brian Behlendorf - 0.6.3-1 +- Released 0.6.3-1 +* Wed Aug 21 2013 Brian Behlendorf - 0.6.2-1 +- Released 0.6.2-1 +* Fri Mar 22 2013 Brian Behlendorf - 0.6.1-1 +- First official stable release. --- linux-4.4.0.orig/spl/rpm/generic/spl.spec.in +++ linux-4.4.0/spl/rpm/generic/spl.spec.in @@ -0,0 +1,66 @@ +Name: @PACKAGE@ +Version: @VERSION@ +Release: @RELEASE@%{?dist} +Summary: Commands to control the kernel modules + +Group: System Environment/Kernel +License: GPLv2+ +URL: http://zfsonlinux.org/ +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +ExclusiveArch: i386 i686 x86_64 + +# May build but untested on ppc/ppc64 +ExcludeArch: ppc ppc64 + +Requires: %{name}-kmod = %{version} +Provides: %{name}-kmod-common = %{version} + +%description +This package contains the commands to verify the SPL +kernel modules are functioning properly. + +%prep +%setup -q + +%build +%configure --with-config=user +make %{?_smp_mflags} + +%install +%{__rm} -rf $RPM_BUILD_ROOT +make install DESTDIR=%{?buildroot} + +%files +%doc AUTHORS COPYING DISCLAIMER +%{_sbindir}/* +%{_mandir}/man1/* +%{_mandir}/man5/* + +%changelog +* Fri Jan 8 2016 Ned Bass - 0.6.5.4-1 +- Build fixes on SPARC and some kernels +- Fix taskq dynamic spawning deadlock +- Fix builtin kernel builds +- Fix crash due to overflow in P2ROUNDUP macro +- Fix deadlock during direct memory reclaim +* Tue Oct 13 2015 Ned Bass - 0.6.5.3-1 +- Fix CPU hotplug zfsonlinux/spl#482 +- Disable dynamic taskqs by default to avoid deadlock zfsonlinux/spl#484 +* Tue Sep 29 2015 Ned Bass - 0.6.5.2-1 +- Released 0.6.5.2-1 +- Fix PAX Patch/Grsec SLAB_USERCOPY panic zfsonlinux/zfs#3796 +- Always remove during dkms uninstall/update zfsonlinux/spl#476 +* Thu Sep 19 2015 Ned Bass - 0.6.5.1-1 +- Released 0.6.5.1-1, no changes from spl-0.6.5 +* Thu Sep 10 2015 Brian Behlendorf - 0.6.5-1 +- Released 0.6.5-1, detailed release notes are available at: +- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.6.5 +* Wed Apr 8 2015 Brian Behlendorf - 0.6.4-1 +- Released 0.6.4-1 +* Thu Jun 12 2014 Brian Behlendorf - 0.6.3-1 +- Released 0.6.3-1 +* Wed Aug 21 2013 Brian Behlendorf - 0.6.2-1 +- Released 0.6.2-1 +* Fri Mar 22 2013 Brian Behlendorf - 0.6.1-1 +- First official stable release. --- linux-4.4.0.orig/spl/rpm/redhat/Makefile.am +++ linux-4.4.0/spl/rpm/redhat/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in --- linux-4.4.0.orig/spl/rpm/redhat/Makefile.in +++ linux-4.4.0/spl/rpm/redhat/Makefile.in @@ -0,0 +1,499 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = rpm/redhat +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = spl.spec spl-kmod.spec spl-dkms.spec +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/spl-dkms.spec.in \ + $(srcdir)/spl-kmod.spec.in $(srcdir)/spl.spec.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = spl.spec.in spl-kmod.spec.in spl-dkms.spec.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rpm/redhat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rpm/redhat/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +spl.spec: $(top_builddir)/config.status $(srcdir)/spl.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +spl-kmod.spec: $(top_builddir)/config.status $(srcdir)/spl-kmod.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +spl-dkms.spec: $(top_builddir)/config.status $(srcdir)/spl-dkms.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/rpm/redhat/spl-kmod.spec.in +++ linux-4.4.0/spl/rpm/redhat/spl-kmod.spec.in @@ -0,0 +1,104 @@ +%bcond_with debug +%bcond_with debug_log +%bcond_with debug_kmem +%bcond_with debug_kmem_tracking +%bcond_with atomic_spinlocks + +Name: @PACKAGE@-kmod +Version: @VERSION@ +Release: @RELEASE@%{?dist} + +Summary: Kernel module(s) +Group: System Environment/Kernel +License: GPLv2+ +URL: http://zfsonlinux.org/ +BuildRequires: %kernel_module_package_buildreqs +Source0: @PACKAGE@-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# Additional dependency information for the kmod sub-package must be specified +# by generating a preamble text file which kmodtool can append to the spec file. +%(/bin/echo -e "\ +Requires: @PACKAGE@ = %{version}\n\ +Conflicts: @PACKAGE@-dkms\n\n" > %{_sourcedir}/kmod-preamble) + +%description +This package contains the kernel modules required to emulate +several interfaces provided by the Solaris kernel. + +%define kmod_name spl +%define debug_package %{nil} + +%kernel_module_package -n %{kmod_name} -p %{_sourcedir}/kmod-preamble + +%define ksrc %{_usrsrc}/kernels/%{kverrel} +%define kobj %{ksrc} + +%package -n kmod-%{kmod_name}-devel +Summary: SPL kernel module(s) devel common +Group: System Environment/Kernel + +%description -n kmod-%{kmod_name}-devel +This package provides the header files and objects to build kernel modules +which depend on the SPL kernel module. + +%prep +if ! [ -d "%{ksrc}" ]; then + echo "Kernel build directory isn't set properly, cannot continue" + exit 1 +fi + +%if %{with debug} +%define debug --enable-debug +%else +%define debug --disable-debug +%endif + +%if %{with debug_log} +%define debug_log --enable-debug-log +%else +%define debug_log --disable-debug-log +%endif + +%if %{with debug_kmem} +%define debug_kmem --enable-debug-kmem +%else +%define debug_kmem --disable-debug-kmem +%endif + +%if %{with debug_kmem_tracking} +%define debug_kmem_tracking --enable-debug-kmem-tracking +%else +%define debug_kmem_tracking --disable-debug-kmem-tracking +%endif + +%if %{with atomic_spinlocks} +%define atomic_spinlocks --enable-atomic-spinlocks +%else +%define atomic_spinlocks --disable-atomic-spinlocks +%endif + +%setup -n %{kmod_name}-%{version} +%build +%configure \ + --with-config=kernel \ + --with-linux=%{ksrc} \ + --with-linux-obj=%{kobj} \ + %{debug} \ + %{debug_log} \ + %{debug_kmem} \ + %{debug_kmem_tracking} \ + %{atomic_spinlocks} +make %{?_smp_mflags} + +%install +make install \ + DESTDIR=${RPM_BUILD_ROOT} \ + INSTALL_MOD_DIR=extra/%{kmod_name} +%{__rm} -f %{buildroot}/lib/modules/%{kverrel}/modules.* + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -n kmod-%{kmod_name}-devel +%{_usrsrc}/%{kmod_name}-%{version} --- linux-4.4.0.orig/spl/scripts/Makefile.am +++ linux-4.4.0/spl/scripts/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = check.sh dkms.mkconf dkms.postbuild kmodtool + +check: + scripts/check.sh --- linux-4.4.0.orig/spl/scripts/Makefile.in +++ linux-4.4.0/spl/scripts/Makefile.in @@ -0,0 +1,495 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = scripts +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/spl-build.m4 \ + $(top_srcdir)/config/spl-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/spl_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_KMEM = @DEBUG_KMEM@ +DEBUG_KMEM_TRACKING = @DEBUG_KMEM_TRACKING@ +DEBUG_SPL = @DEBUG_SPL@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL_CONFIG = @SPL_CONFIG@ +SPL_META_ALIAS = @SPL_META_ALIAS@ +SPL_META_AUTHOR = @SPL_META_AUTHOR@ +SPL_META_DATA = @SPL_META_DATA@ +SPL_META_LICENSE = @SPL_META_LICENSE@ +SPL_META_LT_AGE = @SPL_META_LT_AGE@ +SPL_META_LT_CURRENT = @SPL_META_LT_CURRENT@ +SPL_META_LT_REVISION = @SPL_META_LT_REVISION@ +SPL_META_NAME = @SPL_META_NAME@ +SPL_META_RELEASE = @SPL_META_RELEASE@ +SPL_META_VERSION = @SPL_META_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = check.sh dkms.mkconf dkms.postbuild kmodtool +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu scripts/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +check: + scripts/check.sh + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/spl/scripts/check.sh +++ linux-4.4.0/spl/scripts/check.sh @@ -0,0 +1,97 @@ +#!/bin/bash +############################################################################### +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). +# Written by Brian Behlendorf . +# UCRL-CODE-235197 +# +# This file is part of the SPL, Solaris Porting Layer. +# For details, see . +# +# The SPL is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# The SPL is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with the SPL. If not, see . +############################################################################### +# This script runs the full set of regression tests. +############################################################################### + +prog=check.sh +spl_module=../module/spl/spl.ko +splat_module=../module/splat/splat.ko +splat_cmd=../cmd/splat +verbose= + +die() { + echo "${prog}: $1" >&2 + exit 1 +} + +warn() { + echo "${prog}: $1" >&2 +} + +if [ -n "$V" ]; then + verbose="-v" +fi + +if [ -n "$TESTS" ]; then + tests="$TESTS" +else + tests="-a" +fi + +if [ $(id -u) != 0 ]; then + die "Must run as root" +fi + +if /sbin/lsmod | egrep -q "^spl|^splat"; then + die "Must start with spl modules unloaded" +fi + +if [ ! -f ${spl_module} ] || [ ! -f ${splat_module} ]; then + die "Source tree must be built, run 'make'" +fi + +/sbin/modprobe zlib_inflate &>/dev/null +/sbin/modprobe zlib_deflate &>/dev/null + +echo "Loading ${spl_module}" +/sbin/insmod ${spl_module} || die "Failed to load ${spl_module}" + +echo "Loading ${splat_module}" +/sbin/insmod ${splat_module} || die "Unable to load ${splat_module}" + +# Wait a maximum of 3 seconds for udev to detect the new splatctl +# device, if we do not see the character device file created assume +# udev is not running and manually create the character device. +for i in `seq 1 50`; do + sleep 0.1 + + if [ -c /dev/splatctl ]; then + break + fi + + if [ $i -eq 50 ]; then + mknod /dev/splatctl c 229 0 + fi +done + +$splat_cmd $tests $verbose + +echo "Unloading ${splat_module}" +/sbin/rmmod ${splat_module} || die "Failed to unload ${splat_module}" + +echo "Unloading ${spl_module}" +/sbin/rmmod ${spl_module} || die "Unable to unload ${spl_module}" + +exit 0 --- linux-4.4.0.orig/spl/scripts/dkms.mkconf +++ linux-4.4.0/spl/scripts/dkms.mkconf @@ -0,0 +1,79 @@ +#!/bin/sh + +PROG=$0 + +pkgcfg=/etc/sysconfig/spl + +while getopts "n:v:c:f:" opt; do + case $opt in + n) pkgname=$OPTARG ;; + v) pkgver=$OPTARG ;; + c) pkgcfg=$OPTARG ;; + f) filename=$OPTARG ;; + esac +done + +if [ -z "${pkgname}" -o -z "${pkgver}" -o -z "${filename}" ]; then + echo "Usage: $PROG -n -v -c -f " + exit 1 +fi + +cat >${filename} < -k -n " \ + "-t -v " + exit 1 +fi + +cp ${tree}/${pkgname}/${pkgver}/build/spl_config.h \ + ${tree}/${pkgname}/${pkgver}/build/module/Module.symvers \ + ${tree}/${pkgname}/${pkgver}/${kver}/${arch}/ --- linux-4.4.0.orig/spl/scripts/kmodtool +++ linux-4.4.0/spl/scripts/kmodtool @@ -0,0 +1,592 @@ +#!/bin/bash + +# kmodtool - Helper script for building kernel module RPMs +# Copyright (c) 2003-2012 Ville Skyttä , +# Thorsten Leemhuis +# Nicolas Chauvet +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +shopt -s extglob + +myprog="kmodtool-${repo}" +myver="0.12.1" + +kmodname= +build_kernels="current" +kernels_known_variants= +kernel_versions= +kernel_versions_to_build_for= +prefix= +filterfile= +target= +buildroot= + +error_out() +{ + local errorlevel=${1} + shift + echo "Error: $@" >&2 + # the next line is not multi-line safe -- not needed *yet* + echo "%global kmodtool_check echo \"kmodtool error: $@\"; exit ${errorlevel};" + exit ${errorlevel} +} + +print_rpmtemplate_header() +{ + echo + echo '%global kmodinstdir_prefix '${prefix}/lib/modules/ + echo '%global kmodinstdir_postfix '/extra/${kmodname}/ + echo '%global kernel_versions '${kernel_versions} + echo +} + +print_akmodtemplate () +{ + echo + cat <= %{?epoch:%{epoch}:}%{version} +Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} +EOF + + if [[ ${obsolete_name} ]]; then + echo "Provides: akmod-${obsolete_name} = ${obsolete_version}" + echo "Obsoletes: akmod-${obsolete_name} < ${obsolete_version}" + fi + + cat < /dev/null & + +%files -n akmod-${kmodname} +%defattr(-,root,root,-) +%{_usrsrc}/akmods/* + +EOF +} + +print_akmodmeta () +{ + cat <= %{?epoch:%{epoch}:}%{version} +Requires(post): ${prefix}/sbin/depmod +Requires(postun): ${prefix}/sbin/depmod +EOF + + if [[ ${obsolete_name} ]]; then + echo "Provides: kmod-${obsolete_name}-${kernel_uname_r} = ${obsolete_version}" + echo "Obsoletes: kmod-${obsolete_name}-${kernel_uname_r} < ${obsolete_version}" + fi + + # second part + if [[ ! "${customkernel}" ]]; then + cat < /dev/null || : +%postun -n kmod-${kmodname}-${kernel_uname_r} +${prefix}/sbin/depmod -aF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} &> /dev/null || : + +EOF + else + cat < /dev/null || : +%postun -n kmod-${kmodname}-${kernel_uname_r} +[[ "$(uname -r)" == "${kernel_uname_r}" ]] && ${prefix}/sbin/depmod -a > /dev/null || : + +EOF + fi + + # third part + cat <= %{?epoch:%{epoch}:}%{version}-%{release}" + fi + + if [[ ${obsolete_name} ]]; then + echo "Provides: kmod-${obsolete_name}-devel = ${obsolete_version}" + echo "Obsoletes: kmod-${obsolete_name}-devel < ${obsolete_version}" + fi + + cat < objects for the newest kernel. + +%files -n kmod-${kmodname}-devel +%defattr(644,root,root,755) +%{_usrsrc}/${kmodname}-%{version} +EOF + + for kernel in ${1}; do + local kernel_uname_r=${kernel} + echo "%exclude %{_usrsrc}/${kmodname}-%{version}/${kernel_uname_r}" + done + + echo + echo +} + +print_rpmtemplate_per_kmoddevelpkg () +{ + if [[ "${1}" == "--custom" ]]; then + shift + local customkernel=true + elif [[ "${1}" == "--redhat" ]]; then + # this is needed for akmods + shift + local redhatkernel=true + fi + + local kernel_uname_r=${1} + local kernel_variant="${2:+-${2}}" + + # first part + cat <= %{?epoch:%{epoch}:}%{version}-%{release} +%{?KmodsMetaRequires:Requires: %{?KmodsMetaRequires}} +EOF + + if [[ ${obsolete_name} ]]; then + echo "Provides: kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}" + echo "Obsoletes: kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}" + fi + + cat < -- filter the results with grep --file " + echo " --for-kernels -- created templates only for these kernels" + echo " --kmodname -- name of the kmod (required)" + echo " --devel -- make kmod-devel package" + echo " --noakmod -- no akmod package" + echo " --repo -- use buildsys-build--kerneldevpkgs" + echo " --target -- target-arch (required)" + echo " --buildroot -- Build root (place to look for build files)" +} + +while [ "${1}" ] ; do + case "${1}" in + --filterfile) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide path to a filter-file together with --filterfile" >&2 + elif [[ ! -e "${1}" ]]; then + error_out 2 "Filterfile ${1} not found" >&2 + fi + filterfile="${1}" + shift + ;; + --kmodname) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 + fi + # strip pending -kmod + kmodname="${1%%-kmod}" + shift + ;; + --devel) + shift + devel="true" + ;; + --prefix) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide a prefix with --prefix" >&2 + fi + prefix="${1}" + shift + ;; + --repo) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide the name of the repo together with --repo" >&2 + fi + repo=${1} + shift + ;; + --for-kernels) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 + fi + for_kernels="${1}" + shift + ;; + --noakmod) + shift + noakmod="true" + ;; + --obsolete-name) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide the name of the kmod to obsolte together with --obsolete-name" >&2 + fi + obsolete_name="${1}" + shift + ;; + --obsolete-version) + shift + if [[ ! "${1}" ]] ; then + error_out 2 "Please provide the version of the kmod to obsolte together with --obsolete-version" >&2 + fi + obsolete_version="${1}" + shift + ;; + --target) + shift + target="${1}" + shift + ;; + --akmod) + shift + build_kernels="akmod" + ;; + --newest) + shift + build_kernels="newest" + ;; + --current) + shift + build_kernels="current" + ;; + --buildroot) + shift + buildroot="${1}" + shift + ;; + --help) + myprog_help + exit 0 + ;; + --version) + echo "${myprog} ${myver}" + exit 0 + ;; + *) + echo "Error: Unknown option '${1}'." >&2 + usage >&2 + exit 2 + ;; + esac +done + +if [[ -e ./kmodtool-kernel-variants ]]; then + kernels_known_variants="$(cat ./kmodtool-kernel-variants)" +elif [[ -e /usr/share/kmodtool/kernel-variants ]] ; then + kernels_known_variants="$(cat /usr/share/kmodtool/kernel-variants)" +else + kernels_known_variants="@(smp?(-debug)|PAE?(-debug)|debug|kdump|xen|kirkwood|highbank|imx|omap|tegra)" +fi + +# general sanity checks +if [[ ! "${target}" ]]; then + error_out 2 "please pass target arch with --target" +elif [[ ! "${kmodname}" ]]; then + error_out 2 "please pass kmodname with --kmodname" +elif [[ ! "${kernels_known_variants}" ]] ; then + error_out 2 "could not determine known variants" +elif ( [[ "${obsolete_name}" ]] && [[ ! "${obsolete_version}" ]] ) || ( [[ ! "${obsolete_name}" ]] && [[ "${obsolete_version}" ]] ) ; then + error_out 2 "you need to provide both --obsolete-name and --obsolete-version" +fi + +# go +if [[ "${for_kernels}" ]]; then + # this is easy: + print_customrpmtemplate "${for_kernels}" +elif [[ "${build_kernels}" == "akmod" ]]; then + # do only a akmod package + print_akmodtemplate + print_akmodmeta +else + # seems we are on out own to decide for which kernels to build + + # we need more sanity checks in this case + if [[ ! "${repo}" ]]; then + error_out 2 "please provide repo name with --repo" + elif ! $(which buildsys-build-${repo}-kerneldevpkgs &> /dev/null) ; then + error_out 2 "buildsys-build-${repo}-kerneldevpkgs not found" + fi + + # call buildsys-build-${repo}-kerneldevpkgs to get the list of kernels + cmdoptions="--target ${target}" + + # filterfile to filter list of kernels? + if [[ "${filterfile}" ]] ; then + cmdoptions="${cmdoptions} --filterfile ${filterfile}" + fi + + kernel_versions_to_build_for="$(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" + returncode=$? + if (( ${returncode} != 0 )); then + error_out 2 "buildsys-build-${repo}-kerneldevpkgs failed: $(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" + fi + + if [[ "${build_kernels}" == "current" ]] && [[ ! "${noakmod}" ]]; then + print_akmodtemplate + fi + + print_rpmtemplate +fi --- linux-4.4.0.orig/spl/spl.release.in +++ linux-4.4.0/spl/spl.release.in @@ -0,0 +1 @@ +@SPL_META_VERSION@-@SPL_META_RELEASE@ --- linux-4.4.0.orig/spl/spl_config.h.in +++ linux-4.4.0/spl/spl_config.h.in @@ -0,0 +1,191 @@ +/* spl_config.h.in. Generated from configure.ac by autoheader. */ + +/* Atomic types use spinlocks */ +#undef ATOMIC_SPINLOCK + +/* Define to 1 to enable basic kmem accounting */ +#undef DEBUG_KMEM + +/* Define to 1 to enable detailed kmem tracking */ +#undef DEBUG_KMEM_TRACKING + +/* new shrinker callback wants 2 args */ +#undef HAVE_2ARGS_NEW_SHRINKER_CALLBACK + +/* old shrinker callback wants 2 args */ +#undef HAVE_2ARGS_OLD_SHRINKER_CALLBACK + +/* vfs_fsync() wants 2 args */ +#undef HAVE_2ARGS_VFS_FSYNC + +/* vfs_getattr wants 2 args */ +#undef HAVE_2ARGS_VFS_GETATTR + +/* vfs_unlink() wants 2 args */ +#undef HAVE_2ARGS_VFS_UNLINK + +/* zlib_deflate_workspacesize() wants 2 args */ +#undef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE + +/* old shrinker callback wants 3 args */ +#undef HAVE_3ARGS_SHRINKER_CALLBACK + +/* vfs_unlink() wants 3 args */ +#undef HAVE_3ARGS_VFS_UNLINK + +/* vfs_rename() wants 4 args */ +#undef HAVE_4ARGS_VFS_RENAME + +/* vfs_rename() wants 5 args */ +#undef HAVE_5ARGS_VFS_RENAME + +/* vfs_rename() wants 6 args */ +#undef HAVE_6ARGS_VFS_RENAME + +/* kernel defines atomic64_t */ +#undef HAVE_ATOMIC64_T + +/* struct ctl_table has ctl_name */ +#undef HAVE_CTL_NAME + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* fops->fallocate() exists */ +#undef HAVE_FILE_FALLOCATE + +/* struct fs_struct uses spinlock_t */ +#undef HAVE_FS_STRUCT_SPINLOCK + +/* fops->fallocate() exists */ +#undef HAVE_INODE_FALLOCATE + +/* truncate_range() inode operation is available */ +#undef HAVE_INODE_TRUNCATE_RANGE + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* struct kmem_cache has allocflags */ +#undef HAVE_KMEM_CACHE_ALLOCFLAGS + +/* struct kmem_cache has gfpflags */ +#undef HAVE_KMEM_CACHE_GFPFLAGS + +/* kuid_t/kgid_t in use */ +#undef HAVE_KUIDGID_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* yes */ +#undef HAVE_PDE_DATA + +/* __put_task_struct() is available */ +#undef HAVE_PUT_TASK_STRUCT + +/* linux/sched/rt.h exists */ +#undef HAVE_SCHED_RT_HEADER + +/* set_fs_pwd() needs const path * */ +#undef HAVE_SET_FS_PWD_WITH_CONST + +/* struct shrink_control exists */ +#undef HAVE_SHRINK_CONTROL_STRUCT + +/* ->count_objects exists */ +#undef HAVE_SPLIT_SHRINKER_CALLBACK + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* usleep_range is available */ +#undef HAVE_USLEEP_RANGE + +/* yes */ +#undef HAVE_WAIT_ON_BIT_ACTION + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* struct rw_semaphore member wait_lock is raw_spinlock_t */ +#undef RWSEM_SPINLOCK_IS_RAW + +/* Define to 1 if GPL-only symbols can be used */ +#undef SPL_IS_GPL_COMPATIBLE + +/* Define the project alias string. */ +#undef SPL_META_ALIAS + +/* Define the project author. */ +#undef SPL_META_AUTHOR + +/* Define the project release date. */ +#undef SPL_META_DATA + +/* Define the project license. */ +#undef SPL_META_LICENSE + +/* Define the libtool library 'age' version information. */ +#undef SPL_META_LT_AGE + +/* Define the libtool library 'current' version information. */ +#undef SPL_META_LT_CURRENT + +/* Define the libtool library 'revision' version information. */ +#undef SPL_META_LT_REVISION + +/* Define the project name. */ +#undef SPL_META_NAME + +/* Define the project release. */ +#undef SPL_META_RELEASE + +/* Define the project version. */ +#undef SPL_META_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION --- linux-4.4.0.orig/tools/hv/hv_fcopy_daemon.c +++ linux-4.4.0/tools/hv/hv_fcopy_daemon.c @@ -37,12 +37,14 @@ static int target_fd; static char target_fname[W_MAX_PATH]; +static unsigned long long filesize; static int hv_start_fcopy(struct hv_start_fcopy *smsg) { int error = HV_E_FAIL; char *q, *p; + filesize = 0; p = (char *)smsg->path_name; snprintf(target_fname, sizeof(target_fname), "%s/%s", (char *)smsg->path_name, (char *)smsg->file_name); @@ -98,14 +100,26 @@ static int hv_copy_data(struct hv_do_fcopy *cpmsg) { ssize_t bytes_written; + int ret = 0; bytes_written = pwrite(target_fd, cpmsg->data, cpmsg->size, cpmsg->offset); - if (bytes_written != cpmsg->size) - return HV_E_FAIL; + filesize += cpmsg->size; + if (bytes_written != cpmsg->size) { + switch (errno) { + case ENOSPC: + ret = HV_ERROR_DISK_FULL; + break; + default: + ret = HV_E_FAIL; + break; + } + syslog(LOG_ERR, "pwrite failed to write %llu bytes: %ld (%s)", + filesize, (long)bytes_written, strerror(errno)); + } - return 0; + return ret; } static int hv_copy_finished(void) @@ -165,7 +179,7 @@ } openlog("HV_FCOPY", 0, LOG_USER); - syslog(LOG_INFO, "HV_FCOPY starting; pid is:%d", getpid()); + syslog(LOG_INFO, "starting; pid is:%d", getpid()); fcopy_fd = open("/dev/vmbus/hv_fcopy", O_RDWR); @@ -201,7 +215,7 @@ } kernel_modver = *(__u32 *)buffer; in_handshake = 0; - syslog(LOG_INFO, "HV_FCOPY: kernel module version: %d", + syslog(LOG_INFO, "kernel module version: %d", kernel_modver); continue; } --- linux-4.4.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-4.4.0/tools/hv/hv_kvp_daemon.8 @@ -0,0 +1,26 @@ +.\" This page Copyright (C) 2012 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH HV_KVP_DAEMON 8 +.SH NAME +hv_kvp_daemon \- Hyper-V Key Value Pair daemon +.SH SYNOPSIS +.ft B +.B hv_kvp_daemon +.br +.SH DESCRIPTION +\fBhv_kvp_daemon\fP +is the userspace component of the Hyper-V key value pair functionality, +communicating via a netlink socket with the kernel HV-KVP driver. +This pairing allows the Hyper-V host to pass configuration information +(such as IP addresses) to the guest and allows the host to obtain guest +version information. + +.SH FILES +.ta +.nf +/var/opt/hyperv/.kvp_pool_* +.fi + +.SH AUTHORS +.nf +Written by K. Y. Srinivasan --- linux-4.4.0.orig/tools/hv/hv_vss_daemon.c +++ linux-4.4.0/tools/hv/hv_vss_daemon.c @@ -254,7 +254,7 @@ syslog(LOG_ERR, "Illegal op:%d\n", op); } vss_msg->error = error; - len = write(vss_fd, &error, sizeof(struct hv_vss_msg)); + len = write(vss_fd, vss_msg, sizeof(struct hv_vss_msg)); if (len != sizeof(struct hv_vss_msg)) { syslog(LOG_ERR, "write failed; error: %d %s", errno, strerror(errno)); --- linux-4.4.0.orig/tools/perf/arch/powerpc/Makefile +++ linux-4.4.0/tools/perf/arch/powerpc/Makefile @@ -1,3 +1,5 @@ ifndef NO_DWARF PERF_HAVE_DWARF_REGS := 1 endif + +HAVE_KVM_STAT_SUPPORT := 1 --- linux-4.4.0.orig/tools/perf/arch/powerpc/util/Build +++ linux-4.4.0/tools/perf/arch/powerpc/util/Build @@ -1,5 +1,6 @@ libperf-y += header.o libperf-y += sym-handling.o +libperf-y += kvm-stat.o libperf-$(CONFIG_DWARF) += dwarf-regs.o libperf-$(CONFIG_DWARF) += skip-callchain-idx.o --- linux-4.4.0.orig/tools/perf/arch/powerpc/util/book3s_hcalls.h +++ linux-4.4.0/tools/perf/arch/powerpc/util/book3s_hcalls.h @@ -0,0 +1,123 @@ +#ifndef ARCH_PERF_BOOK3S_HV_HCALLS_H +#define ARCH_PERF_BOOK3S_HV_HCALLS_H + +/* + * PowerPC HCALL codes : hcall code to name mapping + */ +#define kvm_trace_symbol_hcall \ + {0x4, "H_REMOVE"}, \ + {0x8, "H_ENTER"}, \ + {0xc, "H_READ"}, \ + {0x10, "H_CLEAR_MOD"}, \ + {0x14, "H_CLEAR_REF"}, \ + {0x18, "H_PROTECT"}, \ + {0x1c, "H_GET_TCE"}, \ + {0x20, "H_PUT_TCE"}, \ + {0x24, "H_SET_SPRG0"}, \ + {0x28, "H_SET_DABR"}, \ + {0x2c, "H_PAGE_INIT"}, \ + {0x30, "H_SET_ASR"}, \ + {0x34, "H_ASR_ON"}, \ + {0x38, "H_ASR_OFF"}, \ + {0x3c, "H_LOGICAL_CI_LOAD"}, \ + {0x40, "H_LOGICAL_CI_STORE"}, \ + {0x44, "H_LOGICAL_CACHE_LOAD"}, \ + {0x48, "H_LOGICAL_CACHE_STORE"}, \ + {0x4c, "H_LOGICAL_ICBI"}, \ + {0x50, "H_LOGICAL_DCBF"}, \ + {0x54, "H_GET_TERM_CHAR"}, \ + {0x58, "H_PUT_TERM_CHAR"}, \ + {0x5c, "H_REAL_TO_LOGICAL"}, \ + {0x60, "H_HYPERVISOR_DATA"}, \ + {0x64, "H_EOI"}, \ + {0x68, "H_CPPR"}, \ + {0x6c, "H_IPI"}, \ + {0x70, "H_IPOLL"}, \ + {0x74, "H_XIRR"}, \ + {0x78, "H_MIGRATE_DMA"}, \ + {0x7c, "H_PERFMON"}, \ + {0xdc, "H_REGISTER_VPA"}, \ + {0xe0, "H_CEDE"}, \ + {0xe4, "H_CONFER"}, \ + {0xe8, "H_PROD"}, \ + {0xec, "H_GET_PPP"}, \ + {0xf0, "H_SET_PPP"}, \ + {0xf4, "H_PURR"}, \ + {0xf8, "H_PIC"}, \ + {0xfc, "H_REG_CRQ"}, \ + {0x100, "H_FREE_CRQ"}, \ + {0x104, "H_VIO_SIGNAL"}, \ + {0x108, "H_SEND_CRQ"}, \ + {0x110, "H_COPY_RDMA"}, \ + {0x114, "H_REGISTER_LOGICAL_LAN"}, \ + {0x118, "H_FREE_LOGICAL_LAN"}, \ + {0x11c, "H_ADD_LOGICAL_LAN_BUFFER"}, \ + {0x120, "H_SEND_LOGICAL_LAN"}, \ + {0x124, "H_BULK_REMOVE"}, \ + {0x130, "H_MULTICAST_CTRL"}, \ + {0x134, "H_SET_XDABR"}, \ + {0x138, "H_STUFF_TCE"}, \ + {0x13c, "H_PUT_TCE_INDIRECT"}, \ + {0x14c, "H_CHANGE_LOGICAL_LAN_MAC"}, \ + {0x150, "H_VTERM_PARTNER_INFO"}, \ + {0x154, "H_REGISTER_VTERM"}, \ + {0x158, "H_FREE_VTERM"}, \ + {0x15c, "H_RESET_EVENTS"}, \ + {0x160, "H_ALLOC_RESOURCE"}, \ + {0x164, "H_FREE_RESOURCE"}, \ + {0x168, "H_MODIFY_QP"}, \ + {0x16c, "H_QUERY_QP"}, \ + {0x170, "H_REREGISTER_PMR"}, \ + {0x174, "H_REGISTER_SMR"}, \ + {0x178, "H_QUERY_MR"}, \ + {0x17c, "H_QUERY_MW"}, \ + {0x180, "H_QUERY_HCA"}, \ + {0x184, "H_QUERY_PORT"}, \ + {0x188, "H_MODIFY_PORT"}, \ + {0x18c, "H_DEFINE_AQP1"}, \ + {0x190, "H_GET_TRACE_BUFFER"}, \ + {0x194, "H_DEFINE_AQP0"}, \ + {0x198, "H_RESIZE_MR"}, \ + {0x19c, "H_ATTACH_MCQP"}, \ + {0x1a0, "H_DETACH_MCQP"}, \ + {0x1a4, "H_CREATE_RPT"}, \ + {0x1a8, "H_REMOVE_RPT"}, \ + {0x1ac, "H_REGISTER_RPAGES"}, \ + {0x1b0, "H_DISABLE_AND_GETC"}, \ + {0x1b4, "H_ERROR_DATA"}, \ + {0x1b8, "H_GET_HCA_INFO"}, \ + {0x1bc, "H_GET_PERF_COUNT"}, \ + {0x1c0, "H_MANAGE_TRACE"}, \ + {0x1d4, "H_FREE_LOGICAL_LAN_BUFFER"}, \ + {0x1d8, "H_POLL_PENDING"}, \ + {0x1e4, "H_QUERY_INT_STATE"}, \ + {0x244, "H_ILLAN_ATTRIBUTES"}, \ + {0x250, "H_MODIFY_HEA_QP"}, \ + {0x254, "H_QUERY_HEA_QP"}, \ + {0x258, "H_QUERY_HEA"}, \ + {0x25c, "H_QUERY_HEA_PORT"}, \ + {0x260, "H_MODIFY_HEA_PORT"}, \ + {0x264, "H_REG_BCMC"}, \ + {0x268, "H_DEREG_BCMC"}, \ + {0x26c, "H_REGISTER_HEA_RPAGES"}, \ + {0x270, "H_DISABLE_AND_GET_HEA"}, \ + {0x274, "H_GET_HEA_INFO"}, \ + {0x278, "H_ALLOC_HEA_RESOURCE"}, \ + {0x284, "H_ADD_CONN"}, \ + {0x288, "H_DEL_CONN"}, \ + {0x298, "H_JOIN"}, \ + {0x2a4, "H_VASI_STATE"}, \ + {0x2b0, "H_ENABLE_CRQ"}, \ + {0x2b8, "H_GET_EM_PARMS"}, \ + {0x2d0, "H_SET_MPP"}, \ + {0x2d4, "H_GET_MPP"}, \ + {0x2ec, "H_HOME_NODE_ASSOCIATIVITY"}, \ + {0x2f4, "H_BEST_ENERGY"}, \ + {0x2fc, "H_XIRR_X"}, \ + {0x300, "H_RANDOM"}, \ + {0x304, "H_COP"}, \ + {0x314, "H_GET_MPP_X"}, \ + {0x31c, "H_SET_MODE"}, \ + {0xf000, "H_RTAS"} \ + +#endif --- linux-4.4.0.orig/tools/perf/arch/powerpc/util/book3s_hv_exits.h +++ linux-4.4.0/tools/perf/arch/powerpc/util/book3s_hv_exits.h @@ -0,0 +1,33 @@ +#ifndef ARCH_PERF_BOOK3S_HV_EXITS_H +#define ARCH_PERF_BOOK3S_HV_EXITS_H + +/* + * PowerPC Interrupt vectors : exit code to name mapping + */ + +#define kvm_trace_symbol_exit \ + {0x0, "RETURN_TO_HOST"}, \ + {0x100, "SYSTEM_RESET"}, \ + {0x200, "MACHINE_CHECK"}, \ + {0x300, "DATA_STORAGE"}, \ + {0x380, "DATA_SEGMENT"}, \ + {0x400, "INST_STORAGE"}, \ + {0x480, "INST_SEGMENT"}, \ + {0x500, "EXTERNAL"}, \ + {0x501, "EXTERNAL_LEVEL"}, \ + {0x502, "EXTERNAL_HV"}, \ + {0x600, "ALIGNMENT"}, \ + {0x700, "PROGRAM"}, \ + {0x800, "FP_UNAVAIL"}, \ + {0x900, "DECREMENTER"}, \ + {0x980, "HV_DECREMENTER"}, \ + {0xc00, "SYSCALL"}, \ + {0xd00, "TRACE"}, \ + {0xe00, "H_DATA_STORAGE"}, \ + {0xe20, "H_INST_STORAGE"}, \ + {0xe40, "H_EMUL_ASSIST"}, \ + {0xf00, "PERFMON"}, \ + {0xf20, "ALTIVEC"}, \ + {0xf40, "VSX"} + +#endif --- linux-4.4.0.orig/tools/perf/arch/powerpc/util/kvm-stat.c +++ linux-4.4.0/tools/perf/arch/powerpc/util/kvm-stat.c @@ -0,0 +1,170 @@ +#include "util/kvm-stat.h" +#include "util/parse-events.h" +#include "util/debug.h" + +#include "book3s_hv_exits.h" +#include "book3s_hcalls.h" + +#define NR_TPS 4 + +const char *vcpu_id_str = "vcpu_id"; +const int decode_str_len = 40; +const char *kvm_entry_trace = "kvm_hv:kvm_guest_enter"; +const char *kvm_exit_trace = "kvm_hv:kvm_guest_exit"; + +define_exit_reasons_table(hv_exit_reasons, kvm_trace_symbol_exit); +define_exit_reasons_table(hcall_reasons, kvm_trace_symbol_hcall); + +/* Tracepoints specific to ppc_book3s_hv */ +const char *ppc_book3s_hv_kvm_tp[] = { + "kvm_hv:kvm_guest_enter", + "kvm_hv:kvm_guest_exit", + "kvm_hv:kvm_hcall_enter", + "kvm_hv:kvm_hcall_exit", + NULL, +}; + +/* 1 extra placeholder for NULL */ +const char *kvm_events_tp[NR_TPS + 1]; +const char *kvm_exit_reason; + +static void hcall_event_get_key(struct perf_evsel *evsel, + struct perf_sample *sample, + struct event_key *key) +{ + key->info = 0; + key->key = perf_evsel__intval(evsel, sample, "req"); +} + +static const char *get_hcall_exit_reason(u64 exit_code) +{ + struct exit_reasons_table *tbl = hcall_reasons; + + while (tbl->reason != NULL) { + if (tbl->exit_code == exit_code) + return tbl->reason; + tbl++; + } + + pr_debug("Unknown hcall code: %lld\n", + (unsigned long long)exit_code); + return "UNKNOWN"; +} + +static bool hcall_event_end(struct perf_evsel *evsel, + struct perf_sample *sample __maybe_unused, + struct event_key *key __maybe_unused) +{ + return (!strcmp(evsel->name, kvm_events_tp[3])); +} + +static bool hcall_event_begin(struct perf_evsel *evsel, + struct perf_sample *sample, struct event_key *key) +{ + if (!strcmp(evsel->name, kvm_events_tp[2])) { + hcall_event_get_key(evsel, sample, key); + return true; + } + + return false; +} +static void hcall_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused, + struct event_key *key, + char *decode) +{ + const char *hcall_reason = get_hcall_exit_reason(key->key); + + scnprintf(decode, decode_str_len, "%s", hcall_reason); +} + +static struct kvm_events_ops hcall_events = { + .is_begin_event = hcall_event_begin, + .is_end_event = hcall_event_end, + .decode_key = hcall_event_decode_key, + .name = "HCALL-EVENT", +}; + +static struct kvm_events_ops exit_events = { + .is_begin_event = exit_event_begin, + .is_end_event = exit_event_end, + .decode_key = exit_event_decode_key, + .name = "VM-EXIT" +}; + +struct kvm_reg_events_ops kvm_reg_events_ops[] = { + { .name = "vmexit", .ops = &exit_events }, + { .name = "hcall", .ops = &hcall_events }, + { NULL, NULL }, +}; + +const char * const kvm_skip_events[] = { + NULL, +}; + + +static int is_tracepoint_available(const char *str, struct perf_evlist *evlist) +{ + struct parse_events_error err; + int ret; + + err.str = NULL; + ret = parse_events(evlist, str, &err); + if (err.str) + pr_err("%s : %s\n", str, err.str); + return ret; +} + +static int ppc__setup_book3s_hv(struct perf_kvm_stat *kvm, + struct perf_evlist *evlist) +{ + const char **events_ptr; + int i, nr_tp = 0, err = -1; + + /* Check for book3s_hv tracepoints */ + for (events_ptr = ppc_book3s_hv_kvm_tp; *events_ptr; events_ptr++) { + err = is_tracepoint_available(*events_ptr, evlist); + if (err) + return -1; + nr_tp++; + } + + for (i = 0; i < nr_tp; i++) + kvm_events_tp[i] = ppc_book3s_hv_kvm_tp[i]; + + kvm_events_tp[i] = NULL; + kvm_exit_reason = "trap"; + kvm->exit_reasons = hv_exit_reasons; + kvm->exit_reasons_isa = "HV"; + + return 0; +} + +/* Wrapper to setup kvm tracepoints */ +static int ppc__setup_kvm_tp(struct perf_kvm_stat *kvm) +{ + struct perf_evlist *evlist = perf_evlist__new(); + + if (evlist == NULL) + return -ENOMEM; + + /* Right now, only supported on book3s_hv */ + return ppc__setup_book3s_hv(kvm, evlist); +} + +int setup_kvm_events_tp(struct perf_kvm_stat *kvm) +{ + return ppc__setup_kvm_tp(kvm); +} + +int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid __maybe_unused) +{ + int ret; + + ret = ppc__setup_kvm_tp(kvm); + if (ret) { + kvm->exit_reasons = NULL; + kvm->exit_reasons_isa = NULL; + } + + return ret; +} --- linux-4.4.0.orig/tools/perf/arch/s390/util/kvm-stat.c +++ linux-4.4.0/tools/perf/arch/s390/util/kvm-stat.c @@ -10,7 +10,7 @@ */ #include "../../util/kvm-stat.h" -#include +#include define_exit_reasons_table(sie_exit_reasons, sie_intercept_code); define_exit_reasons_table(sie_icpt_insn_codes, icpt_insn_codes); @@ -18,6 +18,12 @@ define_exit_reasons_table(sie_diagnose_codes, diagnose_codes); define_exit_reasons_table(sie_icpt_prog_codes, icpt_prog_codes); +const char *vcpu_id_str = "id"; +const int decode_str_len = 40; +const char *kvm_exit_reason = "icptcode"; +const char *kvm_entry_trace = "kvm:kvm_s390_sie_enter"; +const char *kvm_exit_trace = "kvm:kvm_s390_sie_exit"; + static void event_icpt_insn_get_key(struct perf_evsel *evsel, struct perf_sample *sample, struct event_key *key) @@ -73,7 +79,7 @@ .name = "VM-EXIT" }; -const char * const kvm_events_tp[] = { +const char *kvm_events_tp[] = { "kvm:kvm_s390_sie_enter", "kvm:kvm_s390_sie_exit", "kvm:kvm_s390_intercept_instruction", --- linux-4.4.0.orig/tools/perf/arch/x86/util/kvm-stat.c +++ linux-4.4.0/tools/perf/arch/x86/util/kvm-stat.c @@ -1,5 +1,7 @@ #include "../../util/kvm-stat.h" -#include +#include +#include +#include define_exit_reasons_table(vmx_exit_reasons, VMX_EXIT_REASONS); define_exit_reasons_table(svm_exit_reasons, SVM_EXIT_REASONS); @@ -11,6 +13,12 @@ .name = "VM-EXIT" }; +const char *vcpu_id_str = "vcpu_id"; +const int decode_str_len = 20; +const char *kvm_exit_reason = "exit_reason"; +const char *kvm_entry_trace = "kvm:kvm_entry"; +const char *kvm_exit_trace = "kvm:kvm_exit"; + /* * For the mmio events, we treat: * the time of MMIO write: kvm_mmio(KVM_TRACE_MMIO_WRITE...) -> kvm_entry @@ -65,7 +73,7 @@ struct event_key *key, char *decode) { - scnprintf(decode, DECODE_STR_LEN, "%#lx:%s", + scnprintf(decode, decode_str_len, "%#lx:%s", (unsigned long)key->key, key->info == KVM_TRACE_MMIO_WRITE ? "W" : "R"); } @@ -109,7 +117,7 @@ struct event_key *key, char *decode) { - scnprintf(decode, DECODE_STR_LEN, "%#llx:%s", + scnprintf(decode, decode_str_len, "%#llx:%s", (unsigned long long)key->key, key->info ? "POUT" : "PIN"); } @@ -121,7 +129,7 @@ .name = "IO Port Access" }; -const char * const kvm_events_tp[] = { +const char *kvm_events_tp[] = { "kvm:kvm_entry", "kvm:kvm_exit", "kvm:kvm_mmio", --- linux-4.4.0.orig/tools/perf/builtin-kvm.c +++ linux-4.4.0/tools/perf/builtin-kvm.c @@ -30,7 +30,6 @@ #include #ifdef HAVE_KVM_STAT_SUPPORT -#include #include "util/kvm-stat.h" void exit_event_get_key(struct perf_evsel *evsel, @@ -38,12 +37,12 @@ struct event_key *key) { key->info = 0; - key->key = perf_evsel__intval(evsel, sample, KVM_EXIT_REASON); + key->key = perf_evsel__intval(evsel, sample, kvm_exit_reason); } bool kvm_exit_event(struct perf_evsel *evsel) { - return !strcmp(evsel->name, KVM_EXIT_TRACE); + return !strcmp(evsel->name, kvm_exit_trace); } bool exit_event_begin(struct perf_evsel *evsel, @@ -59,7 +58,7 @@ bool kvm_entry_event(struct perf_evsel *evsel) { - return !strcmp(evsel->name, KVM_ENTRY_TRACE); + return !strcmp(evsel->name, kvm_entry_trace); } bool exit_event_end(struct perf_evsel *evsel, @@ -91,7 +90,7 @@ const char *exit_reason = get_exit_reason(kvm, key->exit_reasons, key->key); - scnprintf(decode, DECODE_STR_LEN, "%s", exit_reason); + scnprintf(decode, decode_str_len, "%s", exit_reason); } static bool register_kvm_events_ops(struct perf_kvm_stat *kvm) @@ -357,7 +356,7 @@ time_diff = sample->time - time_begin; if (kvm->duration && time_diff > kvm->duration) { - char decode[DECODE_STR_LEN]; + char decode[decode_str_len]; kvm->events_ops->decode_key(kvm, &event->key, decode); if (!skip_event(decode)) { @@ -385,7 +384,8 @@ return NULL; } - vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample, VCPU_ID); + vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample, + vcpu_id_str); thread__set_priv(thread, vcpu_record); } @@ -574,7 +574,7 @@ static void print_result(struct perf_kvm_stat *kvm) { - char decode[DECODE_STR_LEN]; + char decode[decode_str_len]; struct kvm_event *event; int vcpu = kvm->trace_vcpu; @@ -585,7 +585,7 @@ pr_info("\n\n"); print_vcpu_info(kvm); - pr_info("%*s ", DECODE_STR_LEN, kvm->events_ops->name); + pr_info("%*s ", decode_str_len, kvm->events_ops->name); pr_info("%10s ", "Samples"); pr_info("%9s ", "Samples%"); @@ -604,7 +604,7 @@ min = get_event_min(event, vcpu); kvm->events_ops->decode_key(kvm, &event->key, decode); - pr_info("%*s ", DECODE_STR_LEN, decode); + pr_info("%*s ", decode_str_len, decode); pr_info("%10llu ", (unsigned long long)ecount); pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100); pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100); @@ -1132,6 +1132,11 @@ _p; \ }) +int __weak setup_kvm_events_tp(struct perf_kvm_stat *kvm __maybe_unused) +{ + return 0; +} + static int kvm_events_record(struct perf_kvm_stat *kvm, int argc, const char **argv) { @@ -1148,7 +1153,14 @@ NULL }; const char * const *events_tp; + int ret; + events_tp_size = 0; + ret = setup_kvm_events_tp(kvm); + if (ret < 0) { + pr_err("Unable to setup the kvm tracepoints\n"); + return ret; + } for (events_tp = kvm_events_tp; *events_tp; events_tp++) events_tp_size++; @@ -1378,6 +1390,12 @@ /* * generate the event list */ + err = setup_kvm_events_tp(kvm); + if (err < 0) { + pr_err("Unable to setup the kvm tracepoints\n"); + return err; + } + kvm->evlist = kvm_live_event_list(); if (kvm->evlist == NULL) { err = -1; --- linux-4.4.0.orig/tools/perf/util/kvm-stat.h +++ linux-4.4.0/tools/perf/util/kvm-stat.h @@ -122,6 +122,7 @@ bool kvm_exit_event(struct perf_evsel *evsel); bool kvm_entry_event(struct perf_evsel *evsel); +int setup_kvm_events_tp(struct perf_kvm_stat *kvm); #define define_exit_reasons_table(name, symbols) \ static struct exit_reasons_table name[] = { \ @@ -133,8 +134,13 @@ */ int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid); -extern const char * const kvm_events_tp[]; +extern const char *kvm_events_tp[]; extern struct kvm_reg_events_ops kvm_reg_events_ops[]; extern const char * const kvm_skip_events[]; +extern const char *vcpu_id_str; +extern const int decode_str_len; +extern const char *kvm_exit_reason; +extern const char *kvm_entry_trace; +extern const char *kvm_exit_trace; #endif /* __PERF_KVM_STAT_H */ --- linux-4.4.0.orig/ubuntu/Kconfig +++ linux-4.4.0/ubuntu/Kconfig @@ -0,0 +1,18 @@ +menu "Ubuntu Supplied Third-Party Device Drivers" + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +source "ubuntu/dm-raid4-5/Kconfig" +## +## +## + +endmenu --- linux-4.4.0.orig/ubuntu/Makefile +++ linux-4.4.0/ubuntu/Makefile @@ -0,0 +1,27 @@ +# +# Makefile for the Linux kernel ubuntu supplied third-party device drivers. +# + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +obj-$(CONFIG_DM_RAID45) += dm-raid4-5/ +## +## +## +ifneq ($(filter $(ARCH), i386 x86_64),) +obj-y += vbox/ +endif +## +## +## + +# This is a stupid trick to get kbuild to create ubuntu/built-in.o +obj- += foo.o --- linux-4.4.0.orig/ubuntu/dm-raid4-5/BOM +++ linux-4.4.0/ubuntu/dm-raid4-5/BOM @@ -0,0 +1,3 @@ +Downloaded from: http://people.redhat.com/~heinzm/sw/dm/dm-raid45/ +Current Version: 2009.04.24 (2.6.30-rc3) +Comments: All of the patches to dmraid1/dm-log, etc are upstream. --- linux-4.4.0.orig/ubuntu/dm-raid4-5/Kconfig +++ linux-4.4.0/ubuntu/dm-raid4-5/Kconfig @@ -0,0 +1,6 @@ +config DM_RAID45 + tristate "RAID 4/5 target (EXPERIMENTAL)" + depends on BLK_DEV_DM && XOR_BLOCKS && EXPERIMENTAL + default m + ---help--- + A target that supports RAID4 and RAID5 mappings. --- linux-4.4.0.orig/ubuntu/dm-raid4-5/Makefile +++ linux-4.4.0/ubuntu/dm-raid4-5/Makefile @@ -0,0 +1,4 @@ +EXTRA_CFLAGS += -I$(srctree)/drivers/md + +obj-$(CONFIG_DM_RAID45) := dm-raid45.o +dm-raid45-objs := dm-raid4-5.o dm-memcache.o dm-region-hash.o dm-message.o --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-memcache.c +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-memcache.c @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#define DM_MEM_CACHE_VERSION "0.2" + +#include "dm.h" +#include "dm-memcache.h" +#include +#include +#include + +struct dm_mem_cache_client { + spinlock_t lock; + mempool_t *objs_pool; + struct page_list *free_list; + unsigned objects; + unsigned chunks; + unsigned pages_per_chunk; + unsigned free_pages; + unsigned total_pages; +}; + +/* + * Free pages and page_list elements of client. + */ +static void free_cache_pages(struct page_list *list) +{ + while (list) { + struct page_list *pl = list; + + list = pl->next; + BUG_ON(!pl->page); + __free_page(pl->page); + kfree(pl); + } +} + +/* + * Alloc number of pages and page_list elements as required by client. + */ +static struct page_list *alloc_cache_pages(unsigned pages) +{ + struct page_list *pl, *ret = NULL; + struct page *page; + + while (pages--) { + page = alloc_page(GFP_NOIO); + if (!page) + goto err; + + pl = kmalloc(sizeof(*pl), GFP_NOIO); + if (!pl) { + __free_page(page); + goto err; + } + + pl->page = page; + pl->next = ret; + ret = pl; + } + + return ret; + +err: + free_cache_pages(ret); + return NULL; +} + +/* + * Allocate page_list elements from the pool to chunks of the memory object. + */ +static void alloc_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + unsigned p = cl->pages_per_chunk; + + obj[chunks].pl = NULL; + + while (p--) { + struct page_list *pl; + + /* Take next element from free list */ + spin_lock(&cl->lock); + pl = cl->free_list; + BUG_ON(!pl); + cl->free_list = pl->next; + spin_unlock(&cl->lock); + + pl->next = obj[chunks].pl; + obj[chunks].pl = pl; + } + } + + local_irq_restore(flags); +} + +/* + * Free page_list elements putting them back onto free list + */ +static void free_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + struct page_list *next, *pl; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + for (pl = obj[chunks].pl; pl; pl = next) { + next = pl->next; + + spin_lock(&cl->lock); + pl->next = cl->free_list; + cl->free_list = pl; + cl->free_pages++; + spin_unlock(&cl->lock); + } + } + + local_irq_restore(flags); +} + +/* + * Create/destroy dm memory cache client resources. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk) +{ + unsigned total_pages = objects * chunks * pages_per_chunk; + struct dm_mem_cache_client *client; + + BUG_ON(!total_pages); + client = kzalloc(sizeof(*client), GFP_KERNEL); + if (!client) + return ERR_PTR(-ENOMEM); + + client->objs_pool = mempool_create_kmalloc_pool(objects, + chunks * sizeof(struct dm_mem_cache_object)); + if (!client->objs_pool) + goto err; + + client->free_list = alloc_cache_pages(total_pages); + if (!client->free_list) + goto err1; + + spin_lock_init(&client->lock); + client->objects = objects; + client->chunks = chunks; + client->pages_per_chunk = pages_per_chunk; + client->free_pages = client->total_pages = total_pages; + return client; + +err1: + mempool_destroy(client->objs_pool); +err: + kfree(client); + return ERR_PTR(-ENOMEM); +} +EXPORT_SYMBOL(dm_mem_cache_client_create); + +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *cl) +{ + BUG_ON(cl->free_pages != cl->total_pages); + free_cache_pages(cl->free_list); + mempool_destroy(cl->objs_pool); + kfree(cl); +} +EXPORT_SYMBOL(dm_mem_cache_client_destroy); + +/* + * Grow a clients cache by an amount of pages. + * + * Don't call from interrupt context! + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *cl, unsigned objects) +{ + unsigned pages = objects * cl->chunks * cl->pages_per_chunk; + struct page_list *pl, *last; + + BUG_ON(!pages); + pl = alloc_cache_pages(pages); + if (!pl) + return -ENOMEM; + + last = pl; + while (last->next) + last = last->next; + + spin_lock_irq(&cl->lock); + last->next = cl->free_list; + cl->free_list = pl; + cl->free_pages += pages; + cl->total_pages += pages; + cl->objects++; + spin_unlock_irq(&cl->lock); + + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + return 0; +} +EXPORT_SYMBOL(dm_mem_cache_grow); + +/* Shrink a clients cache by an amount of pages */ +int dm_mem_cache_shrink(struct dm_mem_cache_client *cl, unsigned objects) +{ + int r; + unsigned pages = objects * cl->chunks * cl->pages_per_chunk, p = pages; + unsigned long flags; + struct page_list *last = NULL, *pl, *pos; + + BUG_ON(!pages); + + spin_lock_irqsave(&cl->lock, flags); + pl = pos = cl->free_list; + while (p-- && pos->next) { + last = pos; + pos = pos->next; + } + + if (++p) + r = -ENOMEM; + else { + r = 0; + cl->free_list = pos; + cl->free_pages -= pages; + cl->total_pages -= pages; + cl->objects--; + last->next = NULL; + } + spin_unlock_irqrestore(&cl->lock, flags); + + if (!r) { + free_cache_pages(pl); + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + } + + return r; +} +EXPORT_SYMBOL(dm_mem_cache_shrink); + +/* + * Allocate/free a memory object + * + * Can be called from interrupt context + */ +struct dm_mem_cache_object *dm_mem_cache_alloc(struct dm_mem_cache_client *cl) +{ + int r = 0; + unsigned pages = cl->chunks * cl->pages_per_chunk; + unsigned long flags; + struct dm_mem_cache_object *obj; + + obj = mempool_alloc(cl->objs_pool, GFP_NOIO); + if (!obj) + return ERR_PTR(-ENOMEM); + + spin_lock_irqsave(&cl->lock, flags); + if (pages > cl->free_pages) + r = -ENOMEM; + else + cl->free_pages -= pages; + spin_unlock_irqrestore(&cl->lock, flags); + + if (r) { + mempool_free(obj, cl->objs_pool); + return ERR_PTR(r); + } + + alloc_chunks(cl, obj); + return obj; +} +EXPORT_SYMBOL(dm_mem_cache_alloc); + +void dm_mem_cache_free(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + free_chunks(cl, obj); + mempool_free(obj, cl->objs_pool); +} +EXPORT_SYMBOL(dm_mem_cache_free); + +MODULE_DESCRIPTION(DM_NAME " dm memory cache"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-memcache.h +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-memcache.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#ifndef _DM_MEM_CACHE_H +#define _DM_MEM_CACHE_H + +#define DM_MEM_CACHE_H_VERSION "0.1" + +#include "dm.h" +#include + +static inline struct page_list *pl_elem(struct page_list *pl, unsigned p) +{ + while (pl && p--) + pl = pl->next; + + return pl; +} + +struct dm_mem_cache_object { + struct page_list *pl; /* Dynamically allocated array */ + void *private; /* Caller context reference */ +}; + +struct dm_mem_cache_client; + +/* + * Create/destroy dm memory cache client resources. + * + * On creation, a number of @objects with @chunks of + * @pages_per_chunk pages will be allocated. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk); +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *client); + +/* + * Grow/shrink a dm memory cache client resources + * by @objetcs amount of objects. + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *client, unsigned objects); +int dm_mem_cache_shrink(struct dm_mem_cache_client *client, unsigned objects); + +/* + * Allocate/free a memory object + * + * On allocation one object with an amount of chunks and + * an amount of pages per chunk will be returned on success. + */ +struct dm_mem_cache_object * +dm_mem_cache_alloc(struct dm_mem_cache_client *client); +void dm_mem_cache_free(struct dm_mem_cache_client *client, + struct dm_mem_cache_object *object); + +#endif --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-message.c +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-message.c @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2007,2008 Red Hat Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + * device-mapper message parser. + * + */ + +#include "dm.h" +#include "dm-message.h" +#include +#include + +#define DM_MSG_PREFIX "dm_message" + +/* Basename of a path. */ +static inline char * +basename(char *s) +{ + char *p = strrchr(s, '/'); + + return p ? p + 1 : s; +} + +/* Get an argument depending on type. */ +static void +message_arguments(struct dm_msg *msg, int argc, char **argv) +{ + + if (argc) { + int i; + struct dm_message_argument *args = msg->spec->args; + + for (i = 0; i < args->num_args; i++) { + int r; + unsigned long **ptr = args->ptr; + enum dm_message_argument_type type = args->types[i]; + + switch (type) { + case dm_msg_base_t: + ((char **) ptr)[i] = basename(argv[i]); + break; + + case dm_msg_str_t: + ((char **) ptr)[i] = argv[i]; + break; + + case dm_msg_int_t: + r = sscanf(argv[i], "%d", ((int **) ptr)[i]); + goto check; + + case dm_msg_uint_t: + r = sscanf(argv[i], "%u", + ((unsigned **) ptr)[i]); + goto check; + + case dm_msg_uint64_t: + r = sscanf(argv[i], "%llu", + ((unsigned long long **) ptr)[i]); + +check: + if (r != 1) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_arg, &msg->ret); + } + } + } + } +} + +/* Parse message options. */ +static void +message_options_parse(struct dm_msg *msg, int argc, char **argv) +{ + int hit = 0; + unsigned long *action; + size_t l1 = strlen(*argv), l_hit = 0; + struct dm_message_option *o = msg->spec->options; + char **option, **option_end = o->options + o->num_options; + + for (option = o->options, action = o->actions; + option < option_end; option++, action++) { + size_t l2 = strlen(*option); + + if (!strnicmp(*argv, *option, min(l1, l2))) { + hit++; + l_hit = l2; + set_bit(*action, &msg->action); + } + } + + /* Assume error. */ + msg->ret = 0; + set_bit(dm_msg_ret_option, &msg->ret); + if (!hit || l1 > l_hit) + set_bit(dm_msg_ret_undef, &msg->ret); /* Undefined option. */ + else if (hit > 1) + set_bit(dm_msg_ret_ambiguous, &msg->ret); /* Ambiguous option.*/ + else { + clear_bit(dm_msg_ret_option, &msg->ret); /* Option OK. */ + message_arguments(msg, --argc, ++argv); + } +} + +static inline void +print_ret(const char *caller, unsigned long ret) +{ + struct { + unsigned long err; + const char *err_str; + } static err_msg[] = { + { dm_msg_ret_ambiguous, "message ambiguous" }, + { dm_msg_ret_inval, "message invalid" }, + { dm_msg_ret_undef, "message undefined" }, + { dm_msg_ret_arg, "message argument" }, + { dm_msg_ret_argcount, "message argument count" }, + { dm_msg_ret_option, "option" }, + }, *e = ARRAY_END(err_msg); + + while (e-- > err_msg) { + if (test_bit(e->err, &ret)) + DMERR("%s %s", caller, e->err_str); + } +} + +/* Parse a message action. */ +int +dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv) +{ + int hit = 0; + size_t l1, l_hit = 0; + struct dm_msg_spec *s, *s_hit = NULL, + *s_end = msg->specs + msg->num_specs; + + if (argc < 2) + return -EINVAL; + + l1 = strlen(*argv); + for (s = msg->specs; s < s_end; s++) { + size_t l2 = strlen(s->cmd); + + if (!strnicmp(*argv, s->cmd, min(l1, l2))) { + hit++; + l_hit = l2; + s_hit = s; + } + } + + msg->ret = 0; + if (!hit || l1 > l_hit) /* No hit or message string too long. */ + set_bit(dm_msg_ret_undef, &msg->ret); + else if (hit > 1) /* Ambiguous message. */ + set_bit(dm_msg_ret_ambiguous, &msg->ret); + else if (argc - 2 != s_hit->args->num_args) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_argcount, &msg->ret); + } + + if (msg->ret) + goto bad; + + msg->action = 0; + msg->spec = s_hit; + set_bit(s_hit->action, &msg->action); + message_options_parse(msg, --argc, ++argv); + + if (!msg->ret) + return msg->spec->f(msg, context); + +bad: + print_ret(caller, msg->ret); + return -EINVAL; +} +EXPORT_SYMBOL(dm_message_parse); + +MODULE_DESCRIPTION(DM_NAME " device-mapper target message parser"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-message.h +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-message.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2007,2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + */ + +#ifndef DM_MESSAGE_H +#define DM_MESSAGE_H + +/* Factor out to dm.h. */ +/* Reference to array end. */ +#define ARRAY_END(a) ((a) + ARRAY_SIZE(a)) + +/* Message return bits. */ +enum dm_message_return { + dm_msg_ret_ambiguous, /* Action ambiguous. */ + dm_msg_ret_inval, /* Action invalid. */ + dm_msg_ret_undef, /* Action undefined. */ + + dm_msg_ret_option, /* Option error. */ + dm_msg_ret_arg, /* Argument error. */ + dm_msg_ret_argcount, /* Argument count error. */ +}; + +/* Message argument type conversions. */ +enum dm_message_argument_type { + dm_msg_base_t, /* Basename string. */ + dm_msg_str_t, /* String. */ + dm_msg_int_t, /* Signed int. */ + dm_msg_uint_t, /* Unsigned int. */ + dm_msg_uint64_t, /* Unsigned int 64. */ +}; + +/* A message option. */ +struct dm_message_option { + unsigned num_options; + char **options; + unsigned long *actions; +}; + +/* Message arguments and types. */ +struct dm_message_argument { + unsigned num_args; + unsigned long **ptr; + enum dm_message_argument_type types[]; +}; + +/* Client message. */ +struct dm_msg { + unsigned long action; /* Identified action. */ + unsigned long ret; /* Return bits. */ + unsigned num_specs; /* # of sepcifications listed. */ + struct dm_msg_spec *specs; /* Specification list. */ + struct dm_msg_spec *spec; /* Specification selected. */ +}; + +/* Secification of the message. */ +struct dm_msg_spec { + const char *cmd; /* Name of the command (i.e. 'bandwidth'). */ + unsigned long action; + struct dm_message_option *options; + struct dm_message_argument *args; + unsigned long parm; /* Parameter to pass through to callback. */ + /* Function to process for action. */ + int (*f) (struct dm_msg *msg, void *context); +}; + +/* Parameter access macros. */ +#define DM_MSG_PARM(msg) ((msg)->spec->parm) + +#define DM_MSG_STR_ARGS(msg, idx) ((char *) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_INT_ARGS(msg, idx) ((int) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_UINT_ARGS(msg, idx) ((unsigned) DM_MSG_INT_ARG(msg, idx)) +#define DM_MSG_UINT64_ARGS(msg, idx) ((uint64_t) *(msg)->spec->args->ptr[idx]) + +#define DM_MSG_STR_ARG(msg) DM_MSG_STR_ARGS(msg, 0) +#define DM_MSG_INT_ARG(msg) DM_MSG_INT_ARGS(msg, 0) +#define DM_MSG_UINT_ARG(msg) DM_MSG_UINT_ARGS(msg, 0) +#define DM_MSG_UINT64_ARG(msg) DM_MSG_UINT64_ARGS(msg, 0) + + +/* Parse a message and its options and optionally call a function back. */ +int dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv); + +#endif --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.c +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-raid4-5.c @@ -0,0 +1,4536 @@ +/*[A[A + * Copyright (C) 2005-2009 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * This file is released under the GPL. + * + * + * Linux 2.6 Device Mapper RAID4 and RAID5 target. + * + * Supports: + * o RAID4 with dedicated and selectable parity device + * o RAID5 with rotating parity (left+right, symmetric+asymmetric) + * o recovery of out of sync device for initial + * RAID set creation or after dead drive replacement + * o run time optimization of xor algorithm used to calculate parity + * + * + * Thanks to MD for: + * o the raid address calculation algorithm + * o the base of the biovec <-> page list copier. + * + * + * Uses region hash to keep track of how many writes are in flight to + * regions in order to use dirty log to keep state of regions to recover: + * + * o clean regions (those which are synchronized + * and don't have write io in flight) + * o dirty regions (those with write io in flight) + * + * + * On startup, any dirty regions are migrated to the + * 'nosync' state and are subject to recovery by the daemon. + * + * See raid_ctr() for table definition. + * + * FIXME: recovery bandwidth + */ + +static const char *version = "v0.2594b"; + +#include "dm.h" +#include "dm-memcache.h" +#include "dm-message.h" +#include "dm-raid45.h" + +#include +#include +#include + +#include +#include +#include +#include "dm-region-hash.h" + +#include +#include + +/* + * Configurable parameters + */ + +/* Minimum/maximum and default # of selectable stripes. */ +#define STRIPES_MIN 8 +#define STRIPES_MAX 16384 +#define STRIPES_DEFAULT 80 + +/* Maximum and default chunk size in sectors if not set in constructor. */ +#define CHUNK_SIZE_MIN 8 +#define CHUNK_SIZE_MAX 16384 +#define CHUNK_SIZE_DEFAULT 64 + +/* Default io size in sectors if not set in constructor. */ +#define IO_SIZE_MIN CHUNK_SIZE_MIN +#define IO_SIZE_DEFAULT IO_SIZE_MIN + +/* Recover io size default in sectors. */ +#define RECOVER_IO_SIZE_MIN 64 +#define RECOVER_IO_SIZE_DEFAULT 256 + +/* Default, minimum and maximum percentage of recover io bandwidth. */ +#define BANDWIDTH_DEFAULT 10 +#define BANDWIDTH_MIN 1 +#define BANDWIDTH_MAX 100 + +/* # of parallel recovered regions */ +#define RECOVERY_STRIPES_MIN 1 +#define RECOVERY_STRIPES_MAX 64 +#define RECOVERY_STRIPES_DEFAULT RECOVERY_STRIPES_MIN +/* + * END Configurable parameters + */ + +#define TARGET "dm-raid45" +#define DAEMON "kraid45d" +#define DM_MSG_PREFIX TARGET + +#define SECTORS_PER_PAGE (PAGE_SIZE >> SECTOR_SHIFT) + +/* Amount/size for __xor(). */ +#define XOR_SIZE PAGE_SIZE + +/* Check value in range. */ +#define range_ok(i, min, max) (i >= min && i <= max) + +/* Check argument is power of 2. */ +#define POWER_OF_2(a) (!(a & (a - 1))) + +/* Structure access macros. */ +/* Derive raid_set from stripe_cache pointer. */ +#define RS(x) container_of(x, struct raid_set, sc) + +/* Page reference. */ +#define PAGE(stripe, p) ((stripe)->obj[p].pl->page) + +/* Stripe chunk reference. */ +#define CHUNK(stripe, p) ((stripe)->chunk + p) + +/* Bio list reference. */ +#define BL(stripe, p, rw) (stripe->chunk[p].bl + rw) +#define BL_CHUNK(chunk, rw) (chunk->bl + rw) + +/* Page list reference. */ +#define PL(stripe, p) (stripe->obj[p].pl) +/* END: structure access macros. */ + +/* Factor out to dm-bio-list.h */ +static inline void bio_list_push(struct bio_list *bl, struct bio *bio) +{ + bio->bi_next = bl->head; + bl->head = bio; + + if (!bl->tail) + bl->tail = bio; +} + +/* Factor out to dm.h */ +#define TI_ERR_RET(str, ret) \ + do { ti->error = str; return ret; } while (0); +#define TI_ERR(str) TI_ERR_RET(str, -EINVAL) + +/* Macro to define access IO flags access inline functions. */ +#define BITOPS(name, what, var, flag) \ +static inline int TestClear ## name ## what(struct var *v) \ +{ return test_and_clear_bit(flag, &v->io.flags); } \ +static inline int TestSet ## name ## what(struct var *v) \ +{ return test_and_set_bit(flag, &v->io.flags); } \ +static inline void Clear ## name ## what(struct var *v) \ +{ clear_bit(flag, &v->io.flags); } \ +static inline void Set ## name ## what(struct var *v) \ +{ set_bit(flag, &v->io.flags); } \ +static inline int name ## what(struct var *v) \ +{ return test_bit(flag, &v->io.flags); } + +/*----------------------------------------------------------------- + * Stripe cache + * + * Cache for all reads and writes to raid sets (operational or degraded) + * + * We need to run all data to and from a RAID set through this cache, + * because parity chunks need to get calculated from data chunks + * or, in the degraded/resynchronization case, missing chunks need + * to be reconstructed using the other chunks of the stripe. + *---------------------------------------------------------------*/ +/* A chunk within a stripe (holds bios hanging off). */ +/* IO status flags for chunks of a stripe. */ +enum chunk_flags { + CHUNK_DIRTY, /* Pages of chunk dirty; need writing. */ + CHUNK_ERROR, /* IO error on any chunk page. */ + CHUNK_IO, /* Allow/prohibit IO on chunk pages. */ + CHUNK_LOCKED, /* Chunk pages locked during IO. */ + CHUNK_MUST_IO, /* Chunk must io. */ + CHUNK_UNLOCK, /* Enforce chunk unlock. */ + CHUNK_UPTODATE, /* Chunk pages are uptodate. */ +}; + +/* + * This does not work anymore with __REQ_* values being enums + * +#if READ != 0 || WRITE != 1 +#error dm-raid45: READ/WRITE != 0/1 used as index!!! +#endif +*/ + +enum bl_type { + WRITE_QUEUED = WRITE + 1, + WRITE_MERGED, + NR_BL_TYPES, /* Must be last one! */ +}; +struct stripe_chunk { + atomic_t cnt; /* Reference count. */ + struct stripe *stripe; /* Backpointer to stripe for endio(). */ + /* Bio lists for reads, writes, and writes merged. */ + struct bio_list bl[NR_BL_TYPES]; + struct { + unsigned long flags; /* IO status flags. */ + } io; +}; + +/* Define chunk bit operations. */ +BITOPS(Chunk, Dirty, stripe_chunk, CHUNK_DIRTY) +BITOPS(Chunk, Error, stripe_chunk, CHUNK_ERROR) +BITOPS(Chunk, Io, stripe_chunk, CHUNK_IO) +BITOPS(Chunk, Locked, stripe_chunk, CHUNK_LOCKED) +BITOPS(Chunk, MustIo, stripe_chunk, CHUNK_MUST_IO) +BITOPS(Chunk, Unlock, stripe_chunk, CHUNK_UNLOCK) +BITOPS(Chunk, Uptodate, stripe_chunk, CHUNK_UPTODATE) + +/* + * Stripe linked list indexes. Keep order, because the stripe + * and the stripe cache rely on the first 3! + */ +enum list_types { + LIST_FLUSH, /* Stripes to flush for io. */ + LIST_ENDIO, /* Stripes to endio. */ + LIST_LRU, /* Least recently used stripes. */ + SC_NR_LISTS, /* # of lists in stripe cache. */ + LIST_HASH = SC_NR_LISTS, /* Hashed stripes. */ + LIST_RECOVER = LIST_HASH, /* For recovery type stripes only. */ + STRIPE_NR_LISTS,/* To size array in struct stripe. */ +}; + +/* Adressing region recovery. */ +struct recover_addr { + struct dm_region *reg; /* Actual region to recover. */ + sector_t pos; /* Position within region to recover. */ + sector_t end; /* End of region to recover. */ +}; + +/* A stripe: the io object to handle all reads and writes to a RAID set. */ +struct stripe { + atomic_t cnt; /* Reference count. */ + struct stripe_cache *sc; /* Backpointer to stripe cache. */ + + /* + * 4 linked lists: + * o io list to flush io + * o endio list + * o LRU list to put stripes w/o reference count on + * o stripe cache hash + */ + struct list_head lists[STRIPE_NR_LISTS]; + + sector_t key; /* Hash key. */ + region_t region; /* Region stripe is mapped to. */ + + struct { + unsigned long flags; /* Stripe state flags (see below). */ + + /* + * Pending ios in flight: + * + * used to control move of stripe to endio list + */ + atomic_t pending; + + /* Sectors to read and write for multi page stripe sets. */ + unsigned size; + } io; + + /* Address region recovery. */ + struct recover_addr *recover; + + /* Lock on stripe (Future: for clustering). */ + void *lock; + + struct { + unsigned short parity; /* Parity chunk index. */ + short recover; /* Recovery chunk index. */ + } idx; + + /* + * This stripe's memory cache object (dm-mem-cache); + * i.e. the io chunk pages. + */ + struct dm_mem_cache_object *obj; + + /* Array of stripe sets (dynamically allocated). */ + struct stripe_chunk chunk[0]; +}; + +/* States stripes can be in (flags field). */ +enum stripe_states { + STRIPE_ERROR, /* io error on stripe. */ + STRIPE_MERGED, /* Writes got merged to be written. */ + STRIPE_RBW, /* Read-before-write stripe. */ + STRIPE_RECONSTRUCT, /* Reconstruct of a missing chunk required. */ + STRIPE_RECONSTRUCTED, /* Reconstructed of a missing chunk. */ + STRIPE_RECOVER, /* Stripe used for RAID set recovery. */ +}; + +/* Define stripe bit operations. */ +BITOPS(Stripe, Error, stripe, STRIPE_ERROR) +BITOPS(Stripe, Merged, stripe, STRIPE_MERGED) +BITOPS(Stripe, RBW, stripe, STRIPE_RBW) +BITOPS(Stripe, Reconstruct, stripe, STRIPE_RECONSTRUCT) +BITOPS(Stripe, Reconstructed, stripe, STRIPE_RECONSTRUCTED) +BITOPS(Stripe, Recover, stripe, STRIPE_RECOVER) + +/* A stripe hash. */ +struct stripe_hash { + struct list_head *hash; + unsigned buckets; + unsigned mask; + unsigned prime; + unsigned shift; +}; + +enum sc_lock_types { + LOCK_ENDIO, /* Protect endio list. */ + LOCK_LRU, /* Protect LRU list. */ + NR_LOCKS, /* To size array in struct stripe_cache. */ +}; + +/* A stripe cache. */ +struct stripe_cache { + /* Stripe hash. */ + struct stripe_hash hash; + + spinlock_t locks[NR_LOCKS]; /* Locks to protect lists. */ + + /* Stripes with io to flush, stripes to endio and LRU lists. */ + struct list_head lists[SC_NR_LISTS]; + + /* Slab cache to allocate stripes from. */ + struct { + struct kmem_cache *cache; /* Cache itself. */ + char name[32]; /* Unique name. */ + } kc; + + struct dm_io_client *dm_io_client; /* dm-io client resource context. */ + + /* dm-mem-cache client resource context. */ + struct dm_mem_cache_client *mem_cache_client; + + int stripes_parm; /* # stripes parameter from constructor. */ + atomic_t stripes; /* actual # of stripes in cache. */ + atomic_t stripes_to_set; /* # of stripes to resize cache to. */ + atomic_t stripes_last; /* last # of stripes in cache. */ + atomic_t active_stripes; /* actual # of active stripes in cache. */ + + /* REMOVEME: */ + atomic_t active_stripes_max; /* actual # of active stripes in cache. */ +}; + +/* Flag specs for raid_dev */ ; +enum raid_dev_flags { + DEV_FAILED, /* Device failed. */ + DEV_IO_QUEUED, /* Io got queued to device. */ +}; + +/* The raid device in a set. */ +struct raid_dev { + struct dm_dev *dev; + sector_t start; /* Offset to map to. */ + struct { /* Using struct to be able to BITOPS(). */ + unsigned long flags; /* raid_dev_flags. */ + } io; +}; + +BITOPS(Dev, Failed, raid_dev, DEV_FAILED) +BITOPS(Dev, IoQueued, raid_dev, DEV_IO_QUEUED) + +/* Flags spec for raid_set. */ +enum raid_set_flags { + RS_CHECK_OVERWRITE, /* Check for chunk overwrites. */ + RS_DEAD, /* RAID set inoperational. */ + RS_DEGRADED, /* Io errors on RAID device. */ + RS_DEVEL_STATS, /* REMOVEME: display status information. */ + RS_RECOVER, /* Do recovery. */ + RS_RECOVERY_BANDWIDTH, /* Allow recovery bandwidth (delayed bios). */ + RS_SC_BUSY, /* Stripe cache busy -> send an event. */ + RS_SUSPEND, /* Suspend RAID set. */ +}; + +/* REMOVEME: devel stats counters. */ +enum stats_types { + S_BIOS_READ, + S_BIOS_ADDED_READ, + S_BIOS_ENDIO_READ, + S_BIOS_WRITE, + S_BIOS_ADDED_WRITE, + S_BIOS_ENDIO_WRITE, + S_CAN_MERGE, + S_CANT_MERGE, + S_CONGESTED, + S_DM_IO_READ, + S_DM_IO_WRITE, + S_BANDWIDTH, + S_BARRIER, + S_BIO_COPY_PL_NEXT, + S_DEGRADED, + S_DELAYED_BIOS, + S_FLUSHS, + S_HITS_1ST, + S_IOS_POST, + S_INSCACHE, + S_MAX_LOOKUP, + S_CHUNK_LOCKED, + S_NO_BANDWIDTH, + S_NOT_CONGESTED, + S_NO_RW, + S_NOSYNC, + S_OVERWRITE, + S_PROHIBITCHUNKIO, + S_RECONSTRUCT_EI, + S_RECONSTRUCT_DEV, + S_RECONSTRUCT_SET, + S_RECONSTRUCTED, + S_REQUEUE, + S_STRIPE_ERROR, + S_SUM_DELAYED_BIOS, + S_XORS, + S_NR_STATS, /* # of stats counters. Must be last! */ +}; + +/* Status type -> string mappings. */ +struct stats_map { + const enum stats_types type; + const char *str; +}; + +static struct stats_map stats_map[] = { + { S_BIOS_READ, "r=" }, + { S_BIOS_ADDED_READ, "/" }, + { S_BIOS_ENDIO_READ, "/" }, + { S_BIOS_WRITE, " w=" }, + { S_BIOS_ADDED_WRITE, "/" }, + { S_BIOS_ENDIO_WRITE, "/" }, + { S_DM_IO_READ, " rc=" }, + { S_DM_IO_WRITE, " wc=" }, + { S_BANDWIDTH, "\nbw=" }, + { S_NO_BANDWIDTH, " no_bw=" }, + { S_BARRIER, "\nbarrier=" }, + { S_BIO_COPY_PL_NEXT, "\nbio_cp_next=" }, + { S_CAN_MERGE, "\nmerge=" }, + { S_CANT_MERGE, "/no_merge=" }, + { S_CHUNK_LOCKED, "\nchunk_locked=" }, + { S_CONGESTED, "\ncgst=" }, + { S_NOT_CONGESTED, "/not_cgst=" }, + { S_DEGRADED, "\ndegraded=" }, + { S_DELAYED_BIOS, "\ndel_bios=" }, + { S_SUM_DELAYED_BIOS, "/sum_del_bios=" }, + { S_FLUSHS, "\nflushs=" }, + { S_HITS_1ST, "\nhits_1st=" }, + { S_IOS_POST, " ios_post=" }, + { S_INSCACHE, " inscache=" }, + { S_MAX_LOOKUP, " maxlookup=" }, + { S_NO_RW, "\nno_rw=" }, + { S_NOSYNC, " nosync=" }, + { S_OVERWRITE, " ovr=" }, + { S_PROHIBITCHUNKIO, " prhbt_io=" }, + { S_RECONSTRUCT_EI, "\nrec_ei=" }, + { S_RECONSTRUCT_DEV, " rec_dev=" }, + { S_RECONSTRUCT_SET, " rec_set=" }, + { S_RECONSTRUCTED, " rec=" }, + { S_REQUEUE, " requeue=" }, + { S_STRIPE_ERROR, " stripe_err=" }, + { S_XORS, " xors=" }, +}; + +/* + * A RAID set. + */ +#define dm_rh_client dm_region_hash +enum count_type { IO_WORK = 0, IO_RECOVER, IO_NR_COUNT }; +typedef void (*xor_function_t)(unsigned count, unsigned long **data); +struct raid_set { + struct dm_target *ti; /* Target pointer. */ + + struct { + unsigned long flags; /* State flags. */ + struct mutex in_lock; /* Protects central input list below. */ + struct bio_list in; /* Pending ios (central input list). */ + struct bio_list work; /* ios work set. */ + wait_queue_head_t suspendq; /* suspend synchronization. */ + atomic_t in_process; /* counter of queued bios (suspendq). */ + atomic_t in_process_max;/* counter of queued bios max. */ + + /* io work. */ + struct workqueue_struct *wq; + struct delayed_work dws_do_raid; /* For main worker. */ + struct work_struct ws_do_table_event; /* For event worker. */ + } io; + + /* Stripe locking abstraction. */ + struct dm_raid45_locking_type *locking; + + struct stripe_cache sc; /* Stripe cache for this set. */ + + /* Xor optimization. */ + struct { + struct xor_func *f; + unsigned chunks; + unsigned speed; + } xor; + + /* Recovery parameters. */ + struct recover { + struct dm_dirty_log *dl; /* Dirty log. */ + struct dm_rh_client *rh; /* Region hash. */ + + struct dm_io_client *dm_io_client; /* recovery dm-io client. */ + /* dm-mem-cache client resource context for recovery stripes. */ + struct dm_mem_cache_client *mem_cache_client; + + struct list_head stripes; /* List of recovery stripes. */ + + region_t nr_regions; + region_t nr_regions_to_recover; + region_t nr_regions_recovered; + unsigned long start_jiffies; + unsigned long end_jiffies; + + unsigned bandwidth; /* Recovery bandwidth [%]. */ + unsigned bandwidth_work; /* Recovery bandwidth [factor]. */ + unsigned bandwidth_parm; /* " constructor parm. */ + unsigned io_size; /* recovery io size <= region size. */ + unsigned io_size_parm; /* recovery io size ctr parameter. */ + unsigned recovery; /* Recovery allowed/prohibited. */ + unsigned recovery_stripes; /* # of parallel recovery stripes. */ + + /* recovery io throttling. */ + atomic_t io_count[IO_NR_COUNT]; /* counter recover/regular io.*/ + unsigned long last_jiffies; + } recover; + + /* RAID set parameters. */ + struct { + struct raid_type *raid_type; /* RAID type (eg, RAID4). */ + unsigned raid_parms; /* # variable raid parameters. */ + + unsigned chunk_size; /* Sectors per chunk. */ + unsigned chunk_size_parm; + unsigned chunk_shift; /* rsector chunk size shift. */ + + unsigned io_size; /* Sectors per io. */ + unsigned io_size_parm; + unsigned io_mask; /* Mask for bio_copy_page_list(). */ + unsigned io_inv_mask; /* Mask for raid_address(). */ + + sector_t sectors_per_dev; /* Sectors per device. */ + + atomic_t failed_devs; /* Amount of devices failed. */ + + /* Index of device to initialize. */ + int dev_to_init; + int dev_to_init_parm; + + /* Raid devices dynamically allocated. */ + unsigned raid_devs; /* # of RAID devices below. */ + unsigned data_devs; /* # of RAID data devices. */ + + int ei; /* index of failed RAID device. */ + + /* Index of dedicated parity device (i.e. RAID4). */ + int pi; + int pi_parm; /* constructor parm for status output. */ + } set; + + /* REMOVEME: devel stats counters. */ + atomic_t stats[S_NR_STATS]; + + /* Dynamically allocated temporary pointers for xor(). */ + unsigned long **data; + + /* Dynamically allocated RAID devices. Alignment? */ + struct raid_dev dev[0]; +}; + +/* Define RAID set bit operations. */ +BITOPS(RS, Bandwidth, raid_set, RS_RECOVERY_BANDWIDTH) +BITOPS(RS, CheckOverwrite, raid_set, RS_CHECK_OVERWRITE) +BITOPS(RS, Dead, raid_set, RS_DEAD) +BITOPS(RS, Degraded, raid_set, RS_DEGRADED) +BITOPS(RS, DevelStats, raid_set, RS_DEVEL_STATS) +BITOPS(RS, Recover, raid_set, RS_RECOVER) +BITOPS(RS, ScBusy, raid_set, RS_SC_BUSY) +BITOPS(RS, Suspend, raid_set, RS_SUSPEND) +#undef BITOPS + +/*----------------------------------------------------------------- + * Raid-4/5 set structures. + *---------------------------------------------------------------*/ +/* RAID level definitions. */ +enum raid_level { + raid4, + raid5, +}; + +/* Symmetric/Asymmetric, Left/Right parity rotating algorithms. */ +enum raid_algorithm { + none, + left_asym, + right_asym, + left_sym, + right_sym, +}; + +struct raid_type { + const char *name; /* RAID algorithm. */ + const char *descr; /* Descriptor text for logging. */ + const unsigned parity_devs; /* # of parity devices. */ + const unsigned minimal_devs; /* minimal # of devices in set. */ + const enum raid_level level; /* RAID level. */ + const enum raid_algorithm algorithm; /* RAID algorithm. */ +}; + +/* Supported raid types and properties. */ +static struct raid_type raid_types[] = { + {"raid4", "RAID4 (dedicated parity disk)", 1, 3, raid4, none}, + {"raid5_la", "RAID5 (left asymmetric)", 1, 3, raid5, left_asym}, + {"raid5_ra", "RAID5 (right asymmetric)", 1, 3, raid5, right_asym}, + {"raid5_ls", "RAID5 (left symmetric)", 1, 3, raid5, left_sym}, + {"raid5_rs", "RAID5 (right symmetric)", 1, 3, raid5, right_sym}, +}; + +/* Address as calculated by raid_address(). */ +struct raid_address { + sector_t key; /* Hash key (address of stripe % chunk_size). */ + unsigned di, pi; /* Data and parity disks index. */ +}; + +/* REMOVEME: reset statistics counters. */ +static void stats_reset(struct raid_set *rs) +{ + unsigned s = S_NR_STATS; + + while (s--) + atomic_set(rs->stats + s, 0); +} + +/*---------------------------------------------------------------- + * RAID set management routines. + *--------------------------------------------------------------*/ +/* + * Begin small helper functions. + */ +/* No need to be called from region hash indirectly at dm_rh_dec(). */ +static void wake_dummy(void *context) {} + +/* Return # of io reference. */ +static int io_ref(struct raid_set *rs) +{ + return atomic_read(&rs->io.in_process); +} + +/* Get an io reference. */ +static void io_get(struct raid_set *rs) +{ + int p = atomic_inc_return(&rs->io.in_process); + + if (p > atomic_read(&rs->io.in_process_max)) + atomic_set(&rs->io.in_process_max, p); /* REMOVEME: max. */ +} + +/* Put the io reference and conditionally wake io waiters. */ +static void io_put(struct raid_set *rs) +{ + /* Intel: rebuild data corrupter? */ + if (atomic_dec_and_test(&rs->io.in_process)) + wake_up(&rs->io.suspendq); + else + BUG_ON(io_ref(rs) < 0); +} + +/* Wait until all io has been processed. */ +static void wait_ios(struct raid_set *rs) +{ + wait_event(rs->io.suspendq, !io_ref(rs)); +} + +/* Queue (optionally delayed) io work. */ +static void wake_do_raid_delayed(struct raid_set *rs, unsigned long delay) +{ + queue_delayed_work(rs->io.wq, &rs->io.dws_do_raid, delay); +} + +/* Queue io work immediately (called from region hash too). */ +static void wake_do_raid(void *context) +{ + struct raid_set *rs = context; + + queue_work(rs->io.wq, &rs->io.dws_do_raid.work); +} + +/* Calculate device sector offset. */ +static sector_t _sector(struct raid_set *rs, struct bio *bio) +{ + sector_t sector = bio->bi_sector; + + sector_div(sector, rs->set.data_devs); + return sector; +} + +/* Return # of active stripes in stripe cache. */ +static int sc_active(struct stripe_cache *sc) +{ + return atomic_read(&sc->active_stripes); +} + +/* Stripe cache busy indicator. */ +static int sc_busy(struct raid_set *rs) +{ + return sc_active(&rs->sc) > + atomic_read(&rs->sc.stripes) - (STRIPES_MIN / 2); +} + +/* Set chunks states. */ +enum chunk_dirty_type { CLEAN, DIRTY, ERROR }; +static void chunk_set(struct stripe_chunk *chunk, enum chunk_dirty_type type) +{ + switch (type) { + case CLEAN: + ClearChunkDirty(chunk); + break; + case DIRTY: + SetChunkDirty(chunk); + break; + case ERROR: + SetChunkError(chunk); + SetStripeError(chunk->stripe); + return; + default: + BUG(); + } + + SetChunkUptodate(chunk); + SetChunkIo(chunk); + ClearChunkError(chunk); +} + +/* Return region state for a sector. */ +static int region_state(struct raid_set *rs, sector_t sector, + enum dm_rh_region_states state) +{ + struct dm_rh_client *rh = rs->recover.rh; + region_t region = dm_rh_sector_to_region(rh, sector); + + return !!(dm_rh_get_state(rh, region, 1) & state); +} + +/* + * Return true in case a chunk should be read/written + * + * Conditions to read/write: + * o chunk not uptodate + * o chunk dirty + * + * Conditios to avoid io: + * o io already ongoing on chunk + * o io explitely prohibited + */ +static int chunk_io(struct stripe_chunk *chunk) +{ + /* 2nd run optimization (flag set below on first run). */ + if (TestClearChunkMustIo(chunk)) + return 1; + + /* Avoid io if prohibited or a locked chunk. */ + if (!ChunkIo(chunk) || ChunkLocked(chunk)) + return 0; + + if (!ChunkUptodate(chunk) || ChunkDirty(chunk)) { + SetChunkMustIo(chunk); /* 2nd run optimization. */ + return 1; + } + + return 0; +} + +/* Call a function on each chunk needing io unless device failed. */ +static unsigned for_each_io_dev(struct stripe *stripe, + void (*f_io)(struct stripe *stripe, unsigned p)) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p, r = 0; + + for (p = 0; p < rs->set.raid_devs; p++) { + if (chunk_io(CHUNK(stripe, p)) && !DevFailed(rs->dev + p)) { + f_io(stripe, p); + r++; + } + } + + return r; +} + +/* + * Index of device to calculate parity on. + * + * Either the parity device index *or* the selected + * device to init after a spare replacement. + */ +static int dev_for_parity(struct stripe *stripe, int *sync) +{ + struct raid_set *rs = RS(stripe->sc); + int r = region_state(rs, stripe->key, DM_RH_NOSYNC | DM_RH_RECOVERING); + + *sync = !r; + + /* Reconstruct a particular device ?. */ + if (r && rs->set.dev_to_init > -1) + return rs->set.dev_to_init; + else if (rs->set.raid_type->level == raid4) + return rs->set.pi; + else if (!StripeRecover(stripe)) + return stripe->idx.parity; + else + return -1; +} + +/* RAID set congested function. */ +static int rs_congested(void *congested_data, int bdi_bits) +{ + int r; + unsigned p; + struct raid_set *rs = congested_data; + + if (sc_busy(rs) || RSSuspend(rs)) + r = 1; + else for (r = 0, p = rs->set.raid_devs; !r && p--; ) { + /* If any of our component devices are overloaded. */ + struct request_queue *q = bdev_get_queue(rs->dev[p].dev->bdev); + + r |= bdi_congested(&q->backing_dev_info, bdi_bits); + } + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (r ? S_CONGESTED : S_NOT_CONGESTED)); + return r; +} + +/* RAID device degrade check. */ +static void rs_check_degrade_dev(struct raid_set *rs, + struct stripe *stripe, unsigned p) +{ + if (TestSetDevFailed(rs->dev + p)) + return; + + /* Through an event in case of member device errors. */ + if (atomic_inc_return(&rs->set.failed_devs) > + rs->set.raid_type->parity_devs && + !TestSetRSDead(rs)) { + /* Display RAID set dead message once. */ + unsigned p; + char buf[BDEVNAME_SIZE]; + + DMERR("FATAL: too many devices failed -> RAID set broken"); + for (p = 0; p < rs->set.raid_devs; p++) { + if (DevFailed(rs->dev + p)) + DMERR("device /dev/%s failed", + bdevname(rs->dev[p].dev->bdev, buf)); + } + } + + /* Only log the first member error. */ + if (!TestSetRSDegraded(rs)) { + char buf[BDEVNAME_SIZE]; + + /* Store index for recovery. */ + rs->set.ei = p; + DMERR("CRITICAL: %sio error on device /dev/%s " + "in region=%llu; DEGRADING RAID set\n", + stripe ? "" : "FAKED ", + bdevname(rs->dev[p].dev->bdev, buf), + (unsigned long long) (stripe ? stripe->key : 0)); + DMERR("further device error messages suppressed"); + } + + schedule_work(&rs->io.ws_do_table_event); +} + +/* RAID set degrade check. */ +static void rs_check_degrade(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + if (ChunkError(CHUNK(stripe, p))) + rs_check_degrade_dev(rs, stripe, p); + } +} + +/* Lookup a RAID device by name or by major:minor number. */ +static int raid_dev_lookup(struct raid_set *rs, struct raid_dev *dev_lookup) +{ + unsigned p; + struct raid_dev *dev; + + /* + * Must be an incremental loop, because the device array + * can have empty slots still on calls from raid_ctr() + */ + for (dev = rs->dev, p = 0; + dev->dev && p < rs->set.raid_devs; + dev++, p++) { + if (dev_lookup->dev->bdev->bd_dev == dev->dev->bdev->bd_dev) + return p; + } + + return -ENODEV; +} +/* + * End small helper functions. + */ + +/* + * Stripe hash functions + */ +/* Initialize/destroy stripe hash. */ +static int hash_init(struct stripe_hash *hash, unsigned stripes) +{ + unsigned buckets = 2, max_buckets = stripes >> 1; + static unsigned hash_primes[] = { + /* Table of primes for hash_fn/table size optimization. */ + 1, 2, 3, 7, 13, 27, 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, 49157, 98317, + }; + + /* Calculate number of buckets (2^^n <= stripes / 2). */ + while (buckets < max_buckets) + buckets <<= 1; + + /* Allocate stripe hash buckets. */ + hash->hash = vmalloc(buckets * sizeof(*hash->hash)); + if (!hash->hash) + return -ENOMEM; + + hash->buckets = buckets; + hash->mask = buckets - 1; + hash->shift = ffs(buckets); + if (hash->shift > ARRAY_SIZE(hash_primes)) + hash->shift = ARRAY_SIZE(hash_primes) - 1; + + BUG_ON(hash->shift < 2); + hash->prime = hash_primes[hash->shift]; + + /* Initialize buckets. */ + while (buckets--) + INIT_LIST_HEAD(hash->hash + buckets); + return 0; +} + +static void hash_exit(struct stripe_hash *hash) +{ + if (hash->hash) { + vfree(hash->hash); + hash->hash = NULL; + } +} + +static unsigned hash_fn(struct stripe_hash *hash, sector_t key) +{ + return (unsigned) (((key * hash->prime) >> hash->shift) & hash->mask); +} + +static struct list_head *hash_bucket(struct stripe_hash *hash, sector_t key) +{ + return hash->hash + hash_fn(hash, key); +} + +/* Insert an entry into a hash. */ +static void stripe_insert(struct stripe_hash *hash, struct stripe *stripe) +{ + list_add(stripe->lists + LIST_HASH, hash_bucket(hash, stripe->key)); +} + +/* Lookup an entry in the stripe hash. */ +static struct stripe *stripe_lookup(struct stripe_cache *sc, sector_t key) +{ + unsigned look = 0; + struct stripe *stripe; + struct list_head *bucket = hash_bucket(&sc->hash, key); + + list_for_each_entry(stripe, bucket, lists[LIST_HASH]) { + look++; + + if (stripe->key == key) { + /* REMOVEME: statisics. */ + if (look > atomic_read(RS(sc)->stats + S_MAX_LOOKUP)) + atomic_set(RS(sc)->stats + S_MAX_LOOKUP, look); + return stripe; + } + } + + return NULL; +} + +/* Resize the stripe cache hash on size changes. */ +static int sc_hash_resize(struct stripe_cache *sc) +{ + /* Resize indicated ? */ + if (atomic_read(&sc->stripes) != atomic_read(&sc->stripes_last)) { + int r; + struct stripe_hash hash; + + r = hash_init(&hash, atomic_read(&sc->stripes)); + if (r) + return r; + + if (sc->hash.hash) { + unsigned b = sc->hash.buckets; + struct list_head *pos, *tmp; + + /* Walk old buckets and insert into new. */ + while (b--) { + list_for_each_safe(pos, tmp, sc->hash.hash + b) + stripe_insert(&hash, + list_entry(pos, struct stripe, + lists[LIST_HASH])); + } + + } + + hash_exit(&sc->hash); + memcpy(&sc->hash, &hash, sizeof(sc->hash)); + atomic_set(&sc->stripes_last, atomic_read(&sc->stripes)); + } + + return 0; +} +/* End hash stripe hash function. */ + +/* List add, delete, push and pop functions. */ +/* Add stripe to flush list. */ +#define DEL_LIST(lh) \ + if (!list_empty(lh)) \ + list_del_init(lh); + +/* Delete stripe from hash. */ +static void stripe_hash_del(struct stripe *stripe) +{ + DEL_LIST(stripe->lists + LIST_HASH); +} + +/* Return stripe reference count. */ +static inline int stripe_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->cnt); +} + +static void stripe_flush_add(struct stripe *stripe) +{ + struct stripe_cache *sc = stripe->sc; + struct list_head *lh = stripe->lists + LIST_FLUSH; + + if (!StripeReconstruct(stripe) && list_empty(lh)) + list_add_tail(lh, sc->lists + LIST_FLUSH); +} + +/* + * Add stripe to LRU (inactive) list. + * + * Need lock, because of concurrent access from message interface. + */ +static void stripe_lru_add(struct stripe *stripe) +{ + if (!StripeRecover(stripe)) { + unsigned long flags; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + spin_lock_irqsave(lock, flags); + if (list_empty(lh)) + list_add_tail(lh, stripe->sc->lists + LIST_LRU); + spin_unlock_irqrestore(lock, flags); + } +} + +#define POP_LIST(list) \ + do { \ + if (list_empty(sc->lists + (list))) \ + stripe = NULL; \ + else { \ + stripe = list_first_entry(sc->lists + (list), \ + struct stripe, \ + lists[(list)]); \ + list_del_init(stripe->lists + (list)); \ + } \ + } while (0); + +/* Pop an available stripe off the LRU list. */ +static struct stripe *stripe_lru_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_LRU; + + spin_lock_irq(lock); + POP_LIST(LIST_LRU); + spin_unlock_irq(lock); + + return stripe; +} + +/* Pop an available stripe off the io list. */ +static struct stripe *stripe_io_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + + POP_LIST(LIST_FLUSH); + return stripe; +} + +/* Push a stripe safely onto the endio list to be handled by do_endios(). */ +static void stripe_endio_push(struct stripe *stripe) +{ + unsigned long flags; + struct stripe_cache *sc = stripe->sc; + struct list_head *stripe_list = stripe->lists + LIST_ENDIO, + *sc_list = sc->lists + LIST_ENDIO; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with do_endios(). */ + spin_lock_irqsave(lock, flags); + if (list_empty(stripe_list)) + list_add_tail(stripe_list, sc_list); + spin_unlock_irqrestore(lock, flags); + + wake_do_raid(RS(sc)); /* Wake myself. */ +} + +/* Pop a stripe off safely off the endio list. */ +static struct stripe *stripe_endio_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with endio(). */ + spin_lock_irq(lock); + POP_LIST(LIST_ENDIO) + spin_unlock_irq(lock); + return stripe; +} +#undef POP_LIST + +/* + * Stripe cache locking functions + */ +/* Dummy lock function for single host RAID4+5. */ +static void *no_lock(sector_t key, enum dm_lock_type type) +{ + return &no_lock; +} + +/* Dummy unlock function for single host RAID4+5. */ +static void no_unlock(void *lock_handle) +{ +} + +/* No locking (for single host RAID 4+5). */ +static struct dm_raid45_locking_type locking_none = { + .lock = no_lock, + .unlock = no_unlock, +}; + +/* Lock a stripe (for clustering). */ +static int +stripe_lock(struct stripe *stripe, int rw, sector_t key) +{ + stripe->lock = RS(stripe->sc)->locking->lock(key, rw == READ ? DM_RAID45_SHARED : DM_RAID45_EX); + return stripe->lock ? 0 : -EPERM; +} + +/* Unlock a stripe (for clustering). */ +static void stripe_unlock(struct stripe *stripe) +{ + RS(stripe->sc)->locking->unlock(stripe->lock); + stripe->lock = NULL; +} + +/* Test io pending on stripe. */ +static int stripe_io_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->io.pending); +} + +static void stripe_io_get(struct stripe *stripe) +{ + if (atomic_inc_return(&stripe->io.pending) == 1) + /* REMOVEME: statistics */ + atomic_inc(&stripe->sc->active_stripes); + else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +static void stripe_io_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->io.pending)) { + if (unlikely(StripeRecover(stripe))) + /* Don't put recovery stripe on endio list. */ + wake_do_raid(RS(stripe->sc)); + else + /* Add regular stripe to endio list and wake daemon. */ + stripe_endio_push(stripe); + + /* REMOVEME: statistics */ + atomic_dec(&stripe->sc->active_stripes); + } else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +/* Take stripe reference out. */ +static int stripe_get(struct stripe *stripe) +{ + int r; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + /* Delete stripe from LRU (inactive) list if on. */ + spin_lock_irq(lock); + DEL_LIST(lh); + spin_unlock_irq(lock); + + BUG_ON(stripe_ref(stripe) < 0); + + /* Lock stripe on first reference */ + r = (atomic_inc_return(&stripe->cnt) == 1) ? + stripe_lock(stripe, WRITE, stripe->key) : 0; + + return r; +} +#undef DEL_LIST + +/* Return references on a chunk. */ +static int chunk_ref(struct stripe_chunk *chunk) +{ + return atomic_read(&chunk->cnt); +} + +/* Take out reference on a chunk. */ +static int chunk_get(struct stripe_chunk *chunk) +{ + return atomic_inc_return(&chunk->cnt); +} + +/* Drop reference on a chunk. */ +static void chunk_put(struct stripe_chunk *chunk) +{ + BUG_ON(atomic_dec_return(&chunk->cnt) < 0); +} + +/* + * Drop reference on a stripe. + * + * Move it to list of LRU stripes if zero. + */ +static void stripe_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->cnt)) { + BUG_ON(stripe_io_ref(stripe)); + stripe_unlock(stripe); + } else + BUG_ON(stripe_ref(stripe) < 0); +} + +/* Helper needed by for_each_io_dev(). */ +static void stripe_get_references(struct stripe *stripe, unsigned p) +{ + + /* + * Another one to reference the stripe in + * order to protect vs. LRU list moves. + */ + io_get(RS(stripe->sc)); /* Global io references. */ + stripe_get(stripe); + stripe_io_get(stripe); /* One for each chunk io. */ +} + +/* Helper for endio() to put all take references. */ +static void stripe_put_references(struct stripe *stripe) +{ + stripe_io_put(stripe); /* One for each chunk io. */ + stripe_put(stripe); + io_put(RS(stripe->sc)); +} + +/* + * Stripe cache functions. + */ +/* + * Invalidate all chunks (i.e. their pages) of a stripe. + * + * I only keep state for the whole chunk. + */ +static inline void stripe_chunk_invalidate(struct stripe_chunk *chunk) +{ + chunk->io.flags = 0; +} + +static void +stripe_chunks_invalidate(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + stripe_chunk_invalidate(CHUNK(stripe, p)); +} + +/* Prepare stripe for (re)use. */ +static void stripe_invalidate(struct stripe *stripe) +{ + stripe->io.flags = 0; + stripe->idx.parity = stripe->idx.recover = -1; + stripe_chunks_invalidate(stripe); +} + +/* + * Allow io on all chunks of a stripe. + * If not set, IO will not occur; i.e. it's prohibited. + * + * Actual IO submission for allowed chunks depends + * on their !uptodate or dirty state. + */ +static void stripe_allow_io(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + SetChunkIo(CHUNK(stripe, p)); +} + +/* Initialize a stripe. */ +static void stripe_init(struct stripe_cache *sc, struct stripe *stripe) +{ + unsigned i, p = RS(sc)->set.raid_devs; + + /* Work all io chunks. */ + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + + atomic_set(&chunk->cnt, 0); + chunk->stripe = stripe; + i = ARRAY_SIZE(chunk->bl); + while (i--) + bio_list_init(chunk->bl + i); + } + + stripe->sc = sc; + + + i = ARRAY_SIZE(stripe->lists); + while (i--) + INIT_LIST_HEAD(stripe->lists + i); + + stripe->io.size = RS(sc)->set.io_size; + atomic_set(&stripe->cnt, 0); + atomic_set(&stripe->io.pending, 0); + stripe_invalidate(stripe); +} + +/* Number of pages per chunk. */ +static inline unsigned chunk_pages(unsigned sectors) +{ + return dm_div_up(sectors, SECTORS_PER_PAGE); +} + +/* Number of pages per stripe. */ +static inline unsigned stripe_pages(struct raid_set *rs, unsigned io_size) +{ + return chunk_pages(io_size) * rs->set.raid_devs; +} + +/* Initialize part of page_list (recovery). */ +static void stripe_zero_pl_part(struct stripe *stripe, int p, + unsigned start, unsigned count) +{ + unsigned o = start / SECTORS_PER_PAGE, pages = chunk_pages(count); + /* Get offset into the page_list. */ + struct page_list *pl = pl_elem(PL(stripe, p), o); + + BUG_ON(!pl); + while (pl && pages--) { + BUG_ON(!pl->page); + memset(page_address(pl->page), 0, PAGE_SIZE); + pl = pl->next; + } +} + +/* Initialize parity chunk of stripe. */ +static void stripe_zero_chunk(struct stripe *stripe, int p) +{ + if (p > -1) + stripe_zero_pl_part(stripe, p, 0, stripe->io.size); +} + +/* Return dynamic stripe structure size. */ +static size_t stripe_size(struct raid_set *rs) +{ + return sizeof(struct stripe) + + rs->set.raid_devs * sizeof(struct stripe_chunk); +} + +/* Allocate a stripe and its memory object. */ +/* XXX adjust to cope with stripe cache and recovery stripe caches. */ +enum grow { SC_GROW, SC_KEEP }; +static struct stripe *stripe_alloc(struct stripe_cache *sc, + struct dm_mem_cache_client *mc, + enum grow grow) +{ + int r; + struct stripe *stripe; + + stripe = kmem_cache_zalloc(sc->kc.cache, GFP_KERNEL); + if (stripe) { + /* Grow the dm-mem-cache by one object. */ + if (grow == SC_GROW) { + r = dm_mem_cache_grow(mc, 1); + if (r) + goto err_free; + } + + stripe->obj = dm_mem_cache_alloc(mc); + if (!stripe->obj) + goto err_shrink; + + stripe_init(sc, stripe); + } + + return stripe; + +err_shrink: + if (grow == SC_GROW) + dm_mem_cache_shrink(mc, 1); +err_free: + kmem_cache_free(sc->kc.cache, stripe); + return NULL; +} + +/* + * Free a stripes memory object, shrink the + * memory cache and free the stripe itself. + */ +static void stripe_free(struct stripe *stripe, struct dm_mem_cache_client *mc) +{ + dm_mem_cache_free(mc, stripe->obj); + dm_mem_cache_shrink(mc, 1); + kmem_cache_free(stripe->sc->kc.cache, stripe); +} + +/* Free the recovery stripe. */ +static void stripe_recover_free(struct raid_set *rs) +{ + struct recover *rec = &rs->recover; + struct dm_mem_cache_client *mc; + + mc = rec->mem_cache_client; + rec->mem_cache_client = NULL; + if (mc) { + struct stripe *stripe; + + while (!list_empty(&rec->stripes)) { + stripe = list_first_entry(&rec->stripes, struct stripe, + lists[LIST_RECOVER]); + list_del(stripe->lists + LIST_RECOVER); + kfree(stripe->recover); + stripe_free(stripe, mc); + } + + dm_mem_cache_client_destroy(mc); + dm_io_client_destroy(rec->dm_io_client); + rec->dm_io_client = NULL; + } +} + +/* Grow stripe cache. */ +static int sc_grow(struct stripe_cache *sc, unsigned stripes, enum grow grow) +{ + int r = 0; + + /* Try to allocate this many (additional) stripes. */ + while (stripes--) { + struct stripe *stripe = + stripe_alloc(sc, sc->mem_cache_client, grow); + + if (likely(stripe)) { + stripe_lru_add(stripe); + atomic_inc(&sc->stripes); + } else { + r = -ENOMEM; + break; + } + } + + return r ? r : sc_hash_resize(sc); +} + +/* Shrink stripe cache. */ +static int sc_shrink(struct stripe_cache *sc, unsigned stripes) +{ + int r = 0; + + /* Try to get unused stripe from LRU list. */ + while (stripes--) { + struct stripe *stripe; + + stripe = stripe_lru_pop(sc); + if (stripe) { + /* An LRU stripe may never have ios pending! */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); + atomic_dec(&sc->stripes); + /* Remove from hash if on before deletion. */ + stripe_hash_del(stripe); + stripe_free(stripe, sc->mem_cache_client); + } else { + r = -ENOENT; + break; + } + } + + /* Check if stats are still sane. */ + if (atomic_read(&sc->active_stripes_max) > + atomic_read(&sc->stripes)) + atomic_set(&sc->active_stripes_max, 0); + + if (r) + return r; + + return atomic_read(&sc->stripes) ? sc_hash_resize(sc) : 0; +} + +/* Create stripe cache and recovery. */ +static int sc_init(struct raid_set *rs, unsigned stripes) +{ + unsigned i, r, rstripes; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + struct recover *rec = &rs->recover; + struct mapped_device *md; + struct gendisk *disk; + + /* Initialize lists and locks. */ + i = ARRAY_SIZE(sc->lists); + while (i--) + INIT_LIST_HEAD(sc->lists + i); + + INIT_LIST_HEAD(&rec->stripes); + + /* Initialize endio and LRU list locks. */ + i = NR_LOCKS; + while (i--) + spin_lock_init(sc->locks + i); + + /* Initialize atomic variables. */ + atomic_set(&sc->stripes, 0); + atomic_set(&sc->stripes_to_set, 0); + atomic_set(&sc->active_stripes, 0); + atomic_set(&sc->active_stripes_max, 0); /* REMOVEME: statistics. */ + + /* + * We need a runtime unique # to suffix the kmem cache name + * because we'll have one for each active RAID set. + */ + md = dm_table_get_md(rs->ti->table); + disk = dm_disk(md); + sprintf(sc->kc.name, "%s-%d", TARGET, disk->first_minor); + dm_put(md); + sc->kc.cache = kmem_cache_create(sc->kc.name, stripe_size(rs), + 0, 0, NULL); + if (!sc->kc.cache) + return -ENOMEM; + + /* Create memory cache client context for RAID stripe cache. */ + sc->mem_cache_client = + dm_mem_cache_client_create(stripes, rs->set.raid_devs, + chunk_pages(rs->set.io_size)); + if (IS_ERR(sc->mem_cache_client)) + return PTR_ERR(sc->mem_cache_client); + + /* Create memory cache client context for RAID recovery stripe(s). */ + rstripes = rec->recovery_stripes; + rec->mem_cache_client = + dm_mem_cache_client_create(rstripes, rs->set.raid_devs, + chunk_pages(rec->io_size)); + if (IS_ERR(rec->mem_cache_client)) + return PTR_ERR(rec->mem_cache_client); + + /* Create dm-io client context for IO stripes. */ + sc->dm_io_client = + dm_io_client_create(); + if (IS_ERR(sc->dm_io_client)) + return PTR_ERR(sc->dm_io_client); + + /* FIXME: intermingeled with stripe cache initialization. */ + /* Create dm-io client context for recovery stripes. */ + rec->dm_io_client = + dm_io_client_create(); + if (IS_ERR(rec->dm_io_client)) + return PTR_ERR(rec->dm_io_client); + + /* Allocate stripes for set recovery. */ + while (rstripes--) { + stripe = stripe_alloc(sc, rec->mem_cache_client, SC_KEEP); + if (!stripe) + return -ENOMEM; + + stripe->recover = kzalloc(sizeof(*stripe->recover), GFP_KERNEL); + if (!stripe->recover) { + stripe_free(stripe, rec->mem_cache_client); + return -ENOMEM; + } + + SetStripeRecover(stripe); + stripe->io.size = rec->io_size; + list_add_tail(stripe->lists + LIST_RECOVER, &rec->stripes); + /* Don't add recovery stripes to LRU list! */ + } + + /* + * Allocate the stripe objetcs from the + * cache and add them to the LRU list. + */ + r = sc_grow(sc, stripes, SC_KEEP); + if (!r) + atomic_set(&sc->stripes_last, stripes); + + return r; +} + +/* Destroy the stripe cache. */ +static void sc_exit(struct stripe_cache *sc) +{ + struct raid_set *rs = RS(sc); + + if (sc->kc.cache) { + stripe_recover_free(rs); + BUG_ON(sc_shrink(sc, atomic_read(&sc->stripes))); + kmem_cache_destroy(sc->kc.cache); + sc->kc.cache = NULL; + + if (sc->mem_cache_client && !IS_ERR(sc->mem_cache_client)) + dm_mem_cache_client_destroy(sc->mem_cache_client); + + if (sc->dm_io_client && !IS_ERR(sc->dm_io_client)) + dm_io_client_destroy(sc->dm_io_client); + + hash_exit(&sc->hash); + } +} + +/* + * Calculate RAID address + * + * Delivers tuple with the index of the data disk holding the chunk + * in the set, the parity disks index and the start of the stripe + * within the address space of the set (used as the stripe cache hash key). + */ +/* thx MD. */ +static struct raid_address *raid_address(struct raid_set *rs, sector_t sector, + struct raid_address *addr) +{ + sector_t stripe, tmp; + + /* + * chunk_number = sector / chunk_size + * stripe_number = chunk_number / data_devs + * di = stripe % data_devs; + */ + stripe = sector >> rs->set.chunk_shift; + addr->di = sector_div(stripe, rs->set.data_devs); + + switch (rs->set.raid_type->level) { + case raid4: + addr->pi = rs->set.pi; + goto check_shift_di; + case raid5: + tmp = stripe; + addr->pi = sector_div(tmp, rs->set.raid_devs); + + switch (rs->set.raid_type->algorithm) { + case left_asym: /* Left asymmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_asym: /* Right asymmetric. */ +check_shift_di: + if (addr->di >= addr->pi) + addr->di++; + break; + case left_sym: /* Left symmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_sym: /* Right symmetric. */ + addr->di = (addr->pi + addr->di + 1) % + rs->set.raid_devs; + break; + case none: /* Ain't happen: RAID4 algorithm placeholder. */ + BUG(); + } + } + + /* + * Start offset of the stripes chunk on any single device of the RAID + * set, adjusted in case io size differs from chunk size. + */ + addr->key = (stripe << rs->set.chunk_shift) + + (sector & rs->set.io_inv_mask); + return addr; +} + +/* + * Copy data across between stripe pages and bio vectors. + * + * Pay attention to data alignment in stripe and bio pages. + */ +static void bio_copy_page_list(int rw, struct stripe *stripe, + struct page_list *pl, struct bio *bio) +{ + unsigned i, page_offset; + void *page_addr; + struct raid_set *rs = RS(stripe->sc); + struct bio_vec *bv; + + /* Get start page in page list for this sector. */ + i = (bio->bi_sector & rs->set.io_mask) / SECTORS_PER_PAGE; + pl = pl_elem(pl, i); + BUG_ON(!pl); + BUG_ON(!pl->page); + + page_addr = page_address(pl->page); + page_offset = to_bytes(bio->bi_sector & (SECTORS_PER_PAGE - 1)); + + /* Walk all segments and copy data across between bio_vecs and pages. */ + bio_for_each_segment(bv, bio, i) { + int len = bv->bv_len, size; + unsigned bio_offset = 0; + void *bio_addr = __bio_kmap_atomic(bio, i, KM_USER0); +redo: + size = (page_offset + len > PAGE_SIZE) ? + PAGE_SIZE - page_offset : len; + + if (rw == READ) + memcpy(bio_addr + bio_offset, + page_addr + page_offset, size); + else + memcpy(page_addr + page_offset, + bio_addr + bio_offset, size); + + page_offset += size; + if (page_offset == PAGE_SIZE) { + /* + * We reached the end of the chunk page -> + * need to refer to the next one to copy more data. + */ + len -= size; + if (len) { + /* Get next page. */ + pl = pl->next; + BUG_ON(!pl); + BUG_ON(!pl->page); + page_addr = page_address(pl->page); + page_offset = 0; + bio_offset += size; + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIO_COPY_PL_NEXT); + goto redo; + } + } + + __bio_kunmap_atomic(bio_addr, KM_USER0); + } +} + +/* + * Xor optimization macros. + */ +/* Xor data pointer declaration and initialization macros. */ +#define DECLARE_2 unsigned long *d0 = data[0], *d1 = data[1] +#define DECLARE_3 DECLARE_2, *d2 = data[2] +#define DECLARE_4 DECLARE_3, *d3 = data[3] +#define DECLARE_5 DECLARE_4, *d4 = data[4] +#define DECLARE_6 DECLARE_5, *d5 = data[5] +#define DECLARE_7 DECLARE_6, *d6 = data[6] +#define DECLARE_8 DECLARE_7, *d7 = data[7] + +/* Xor unrole macros. */ +#define D2(n) d0[n] = d0[n] ^ d1[n] +#define D3(n) D2(n) ^ d2[n] +#define D4(n) D3(n) ^ d3[n] +#define D5(n) D4(n) ^ d4[n] +#define D6(n) D5(n) ^ d5[n] +#define D7(n) D6(n) ^ d6[n] +#define D8(n) D7(n) ^ d7[n] + +#define X_2(macro, offset) macro(offset); macro(offset + 1); +#define X_4(macro, offset) X_2(macro, offset); X_2(macro, offset + 2); +#define X_8(macro, offset) X_4(macro, offset); X_4(macro, offset + 4); +#define X_16(macro, offset) X_8(macro, offset); X_8(macro, offset + 8); +#define X_32(macro, offset) X_16(macro, offset); X_16(macro, offset + 16); +#define X_64(macro, offset) X_32(macro, offset); X_32(macro, offset + 32); + +/* Define a _xor_#chunks_#xors_per_run() function. */ +#define _XOR(chunks, xors_per_run) \ +static void _xor ## chunks ## _ ## xors_per_run(unsigned long **data) \ +{ \ + unsigned end = XOR_SIZE / sizeof(data[0]), i; \ + DECLARE_ ## chunks; \ +\ + for (i = 0; i < end; i += xors_per_run) { \ + X_ ## xors_per_run(D ## chunks, i); \ + } \ +} + +/* Define xor functions for 2 - 8 chunks and xors per run. */ +#define MAKE_XOR_PER_RUN(xors_per_run) \ + _XOR(2, xors_per_run); _XOR(3, xors_per_run); \ + _XOR(4, xors_per_run); _XOR(5, xors_per_run); \ + _XOR(6, xors_per_run); _XOR(7, xors_per_run); \ + _XOR(8, xors_per_run); + +MAKE_XOR_PER_RUN(8) /* Define _xor_*_8() functions. */ +MAKE_XOR_PER_RUN(16) /* Define _xor_*_16() functions. */ +MAKE_XOR_PER_RUN(32) /* Define _xor_*_32() functions. */ +MAKE_XOR_PER_RUN(64) /* Define _xor_*_64() functions. */ + +#define MAKE_XOR(xors_per_run) \ +struct { \ + void (*f)(unsigned long **); \ +} static xor_funcs ## xors_per_run[] = { \ + { NULL }, /* NULL pointers to optimize indexing in xor(). */ \ + { NULL }, \ + { _xor2_ ## xors_per_run }, \ + { _xor3_ ## xors_per_run }, \ + { _xor4_ ## xors_per_run }, \ + { _xor5_ ## xors_per_run }, \ + { _xor6_ ## xors_per_run }, \ + { _xor7_ ## xors_per_run }, \ + { _xor8_ ## xors_per_run }, \ +}; \ +\ +static void xor_ ## xors_per_run(unsigned n, unsigned long **data) \ +{ \ + /* Call respective function for amount of chunks. */ \ + xor_funcs ## xors_per_run[n].f(data); \ +} + +/* Define xor_8() - xor_64 functions. */ +MAKE_XOR(8) +MAKE_XOR(16) +MAKE_XOR(32) +MAKE_XOR(64) + +/* Maximum number of chunks, which can be xor'ed in one go. */ +#define XOR_CHUNKS_MAX (ARRAY_SIZE(xor_funcs8) - 1) + +static void xor_blocks_wrapper(unsigned n, unsigned long **data) +{ + BUG_ON(n < 2 || n > MAX_XOR_BLOCKS + 1); + xor_blocks(n - 1, XOR_SIZE, (void *) data[0], (void **) data + 1); +} + +struct xor_func { + xor_function_t f; + const char *name; +} static xor_funcs[] = { + { xor_8, "xor_8" }, + { xor_16, "xor_16" }, + { xor_32, "xor_32" }, + { xor_64, "xor_64" }, + { xor_blocks_wrapper, "xor_blocks" }, +}; + +/* + * Check, if chunk has to be xored in/out: + * + * o if writes are queued + * o if writes are merged + * o if stripe is to be reconstructed + * o if recovery stripe + */ +static inline int chunk_must_xor(struct stripe_chunk *chunk) +{ + if (ChunkUptodate(chunk)) { + BUG_ON(!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) && + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))); + + if (!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) || + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) + return 1; + + if (StripeReconstruct(chunk->stripe) || + StripeRecover(chunk->stripe)) + return 1; + } + + return 0; +} + +/* + * Calculate crc. + * + * This indexes into the chunks of a stripe and their pages. + * + * All chunks will be xored into the indexed (@pi) + * chunk in maximum groups of xor.chunks. + * + */ +static void xor(struct stripe *stripe, unsigned pi, unsigned sector) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned max_chunks = rs->xor.chunks, n = 1, + o = sector / SECTORS_PER_PAGE, /* Offset into the page_list. */ + p = rs->set.raid_devs; + unsigned long **d = rs->data; + xor_function_t xor_f = rs->xor.f->f; + + BUG_ON(sector > stripe->io.size); + + /* Address of parity page to xor into. */ + d[0] = page_address(pl_elem(PL(stripe, pi), o)->page); + + while (p--) { + /* Preset pointers to data pages. */ + if (p != pi && chunk_must_xor(CHUNK(stripe, p))) + d[n++] = page_address(pl_elem(PL(stripe, p), o)->page); + + /* If max chunks -> xor. */ + if (n == max_chunks) { + xor_f(n, d); + n = 1; + } + } + + /* If chunks -> xor. */ + if (n > 1) + xor_f(n, d); +} + +/* Common xor loop through all stripe page lists. */ +static void common_xor(struct stripe *stripe, sector_t count, + unsigned off, unsigned pi) +{ + unsigned sector; + + BUG_ON(!count); + for (sector = off; sector < count; sector += SECTORS_PER_PAGE) + xor(stripe, pi, sector); + + /* Set parity page uptodate and clean. */ + chunk_set(CHUNK(stripe, pi), CLEAN); + atomic_inc(RS(stripe->sc)->stats + S_XORS); /* REMOVEME: statistics. */ +} + +/* + * Calculate parity sectors on intact stripes. + * + * Need to calculate raid address for recover stripe, because its + * chunk sizes differs and is typically larger than io chunk size. + */ +static void parity_xor(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunk_size = rs->set.chunk_size, io_size = stripe->io.size, + xor_size = chunk_size > io_size ? io_size : chunk_size; + sector_t off; + + /* This can be the recover stripe with a larger io size. */ + for (off = 0; off < io_size; off += xor_size) { + /* + * Recover stripe is likely bigger than regular io + * ones and has no precalculated parity disk index -> + * need to calculate RAID address. + */ + if (unlikely(StripeRecover(stripe))) { + struct raid_address addr; + + raid_address(rs, + (stripe->key + off) * rs->set.data_devs, + &addr); + stripe->idx.parity = addr.pi; + stripe_zero_pl_part(stripe, addr.pi, off, xor_size); + } + + common_xor(stripe, xor_size, off, stripe->idx.parity); + chunk_set(CHUNK(stripe, stripe->idx.parity), DIRTY); + } +} + +/* Reconstruct missing chunk. */ +static void stripe_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + int p = rs->set.raid_devs, pr = stripe->idx.recover; + + BUG_ON(pr < 0); + + /* Check if all but the chunk to be reconstructed are uptodate. */ + while (p--) + BUG_ON(p != pr && !ChunkUptodate(CHUNK(stripe, p))); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (RSDegraded(rs) ? S_RECONSTRUCT_EI : + S_RECONSTRUCT_DEV)); + /* Zero chunk to be reconstructed. */ + stripe_zero_chunk(stripe, pr); + common_xor(stripe, stripe->io.size, 0, pr); + stripe->idx.recover = -1; +} + +/* + * Recovery io throttling + */ +/* Conditionally reset io counters. */ +static int recover_io_reset(struct raid_set *rs) +{ + unsigned long j = jiffies; + + /* Pay attention to jiffies overflows. */ + if (j > rs->recover.last_jiffies + HZ / 20 || + j < rs->recover.last_jiffies) { + atomic_set(rs->recover.io_count + IO_WORK, 0); + atomic_set(rs->recover.io_count + IO_RECOVER, 0); + rs->recover.last_jiffies = j; + return 1; + } + + return 0; +} + +/* Count ios. */ +static void recover_io_count(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + recover_io_reset(rs); + atomic_inc(rs->recover.io_count + + (StripeRecover(stripe) ? IO_RECOVER : IO_WORK)); +} + +/* Try getting a stripe either from the hash or from the LRU list. */ +static struct stripe *stripe_find(struct raid_set *rs, + struct raid_address *addr) +{ + int r; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + + /* Try stripe from hash. */ + stripe = stripe_lookup(sc, addr->key); + if (stripe) { + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + atomic_inc(rs->stats + S_HITS_1ST); /* REMOVEME: statistics. */ + } else { + /* Not in hash -> try to get an LRU stripe. */ + stripe = stripe_lru_pop(sc); + if (stripe) { + /* + * An LRU stripe may not be referenced + * and may never have ios pending! + */ + BUG_ON(stripe_ref(stripe)); + BUG_ON(stripe_io_ref(stripe)); + + /* Remove from hash if on before reuse. */ + stripe_hash_del(stripe); + + /* Invalidate before reinserting with changed key. */ + stripe_invalidate(stripe); + + stripe->key = addr->key; + stripe->region = dm_rh_sector_to_region(rs->recover.rh, + addr->key); + stripe->idx.parity = addr->pi; + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + /* Insert stripe into the stripe hash. */ + stripe_insert(&sc->hash, stripe); + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_INSCACHE); + } + } + + return stripe; + +get_lock_failed: + stripe_put(stripe); + return NULL; +} + +/* + * Process end io + * + * I need to do it here because I can't in interrupt + */ +/* End io all bios on a bio list. */ +static void bio_list_endio(struct stripe *stripe, struct bio_list *bl, + int p, int error) +{ + struct raid_set *rs = RS(stripe->sc); + struct bio *bio; + struct page_list *pl = PL(stripe, p); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Update region counters. */ + while ((bio = bio_list_pop(bl))) { + if (bio_data_dir(bio) == WRITE) + /* Drop io pending count for any writes. */ + dm_rh_dec(rs->recover.rh, stripe->region); + else if (!error) + /* Copy data accross. */ + bio_copy_page_list(READ, stripe, pl, bio); + + bio_endio(bio, error); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_ENDIO_READ : S_BIOS_ENDIO_WRITE)); + + chunk_put(chunk); + stripe_put(stripe); + io_put(rs); /* Wake any suspend waiters on last bio. */ + } +} + +/* + * End io all reads/writes on a stripe copying + * read data accross from stripe to bios and + * decrementing region counters for writes. + * + * Processing of ios depeding on state: + * o no chunk error -> endio ok + * o degraded: + * - chunk error and read -> ignore to be requeued + * - chunk error and write -> endio ok + * o dead (more than parity_devs failed) and chunk_error-> endio failed + */ +static void stripe_endio(int rw, struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + int write = (rw != READ); + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *bl; + + BUG_ON(ChunkLocked(chunk)); + + bl = BL_CHUNK(chunk, rw); + if (bio_list_empty(bl)) + continue; + + if (unlikely(ChunkError(chunk) || !ChunkUptodate(chunk))) { + /* RAID set dead. */ + if (unlikely(RSDead(rs))) + bio_list_endio(stripe, bl, p, -EIO); + /* RAID set degraded. */ + else if (write) + bio_list_endio(stripe, bl, p, 0); + } else { + BUG_ON(!RSDegraded(rs) && ChunkDirty(chunk)); + bio_list_endio(stripe, bl, p, 0); + } + } +} + +/* Fail all ios hanging off all bio lists of a stripe. */ +static void stripe_fail_io(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + int i = ARRAY_SIZE(chunk->bl); + + /* Fail all bios on all bio lists of the stripe. */ + while (i--) { + struct bio_list *bl = chunk->bl + i; + + if (!bio_list_empty(bl)) + bio_list_endio(stripe, bl, p, -EIO); + } + } + + /* Put stripe on LRU list. */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); +} + +/* Unlock all required chunks. */ +static void stripe_chunks_unlock(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + struct stripe_chunk *chunk; + + while (p--) { + chunk = CHUNK(stripe, p); + + if (TestClearChunkUnlock(chunk)) + ClearChunkLocked(chunk); + } +} + +/* + * Queue reads and writes to a stripe by hanging + * their bios off the stripesets read/write lists. + */ +static int stripe_queue_bio(struct raid_set *rs, struct bio *bio, + struct bio_list *reject) +{ + struct raid_address addr; + struct stripe *stripe; + + stripe = stripe_find(rs, raid_address(rs, bio->bi_sector, &addr)); + if (stripe) { + int r = 0, rw = bio_data_dir(bio); + + /* Distinguish reads and writes. */ + bio_list_add(BL(stripe, addr.di, rw), bio); + + if (rw == READ) + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_READ); + else { + /* Inrement pending write count on region. */ + dm_rh_inc(rs->recover.rh, stripe->region); + r = 1; + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_WRITE); + } + + /* + * Put on io (flush) list in case of + * initial bio queued to chunk. + */ + if (chunk_get(CHUNK(stripe, addr.di)) == 1) + stripe_flush_add(stripe); + + return r; + } + + /* Got no stripe from cache or failed to lock it -> reject bio. */ + bio_list_add(reject, bio); + atomic_inc(rs->stats + S_IOS_POST); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Handle all stripes by handing them to the daemon, because we can't + * map their chunk pages to copy the data in interrupt context. + * + * We don't want to handle them here either, while interrupts are disabled. + */ + +/* Read/write endio function for dm-io (interrupt context). */ +static void endio(unsigned long error, void *context) +{ + struct stripe_chunk *chunk = context; + + if (unlikely(error)) { + chunk_set(chunk, ERROR); + /* REMOVEME: statistics. */ + atomic_inc(RS(chunk->stripe->sc)->stats + S_STRIPE_ERROR); + } else + chunk_set(chunk, CLEAN); + + /* + * For recovery stripes, I need to reset locked locked + * here, because those aren't processed in do_endios(). + */ + if (unlikely(StripeRecover(chunk->stripe))) + ClearChunkLocked(chunk); + else + SetChunkUnlock(chunk); + + /* Indirectly puts stripe on cache's endio list via stripe_io_put(). */ + stripe_put_references(chunk->stripe); +} + +/* Read/Write a chunk asynchronously. */ +static void stripe_chunk_rw(struct stripe *stripe, unsigned p) +{ + struct stripe_cache *sc = stripe->sc; + struct raid_set *rs = RS(sc); + struct dm_mem_cache_object *obj = stripe->obj + p; + struct page_list *pl = obj->pl; + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct raid_dev *dev = rs->dev + p; + struct dm_io_region io = { + .bdev = dev->dev->bdev, + .sector = stripe->key, + .count = stripe->io.size, + }; + struct dm_io_request control = { + .bi_rw = ChunkDirty(chunk) ? WRITE : READ, + .mem = { + .type = DM_IO_PAGE_LIST, + .ptr.pl = pl, + .offset = 0, + }, + .notify = { + .fn = endio, + .context = chunk, + }, + .client = StripeRecover(stripe) ? rs->recover.dm_io_client : + sc->dm_io_client, + }; + + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk) && ChunkDirty(chunk)); + BUG_ON(ChunkUptodate(chunk) && !ChunkDirty(chunk)); + + /* + * Don't rw past end of device, which can happen, because + * typically sectors_per_dev isn't divisible by io_size. + */ + if (unlikely(io.sector + io.count > rs->set.sectors_per_dev)) + io.count = rs->set.sectors_per_dev - io.sector; + + BUG_ON(!io.count); + io.sector += dev->start; /* Add . */ + if (RSRecover(rs)) + recover_io_count(stripe); /* Recovery io accounting. */ + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (ChunkDirty(chunk) ? S_DM_IO_WRITE : + S_DM_IO_READ)); + SetChunkLocked(chunk); + SetDevIoQueued(dev); + BUG_ON(dm_io(&control, 1, &io, NULL)); +} + +/* + * Write dirty or read not uptodate page lists of a stripe. + */ +static int stripe_chunks_rw(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Increment the pending count on the stripe + * first, so that we don't race in endio(). + * + * An inc (IO) is needed for any chunk unless !ChunkIo(chunk): + * + * o not uptodate + * o dirtied by writes merged + * o dirtied by parity calculations + */ + r = for_each_io_dev(stripe, stripe_get_references); + if (r) { + /* Io needed: chunks are either not uptodate or dirty. */ + int max; /* REMOVEME: */ + struct stripe_cache *sc = &rs->sc; + + /* Submit actual io. */ + for_each_io_dev(stripe, stripe_chunk_rw); + + /* REMOVEME: statistics */ + max = sc_active(sc); + if (atomic_read(&sc->active_stripes_max) < max) + atomic_set(&sc->active_stripes_max, max); + + atomic_inc(rs->stats + S_FLUSHS); + /* END REMOVEME: statistics */ + } + + return r; +} + +/* Merge in all writes hence dirtying respective chunks. */ +static void stripe_merge_writes(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE_QUEUED); + + if (!bio_list_empty(write)) { + struct bio *bio; + struct page_list *pl = stripe->obj[p].pl; + + /* + * We can play with the lists without holding a lock, + * because it is just us accessing them anyway. + */ + bio_list_for_each(bio, write) + bio_copy_page_list(WRITE, stripe, pl, bio); + + bio_list_merge(BL_CHUNK(chunk, WRITE_MERGED), write); + bio_list_init(write); + chunk_set(chunk, DIRTY); + } + } +} + +/* Queue all writes to get merged. */ +static int stripe_queue_writes(struct stripe *stripe) +{ + int r = 0; + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE); + + if (!bio_list_empty(write)) { + bio_list_merge(BL_CHUNK(chunk, WRITE_QUEUED), write); + bio_list_init(write); +SetChunkIo(chunk); + r = 1; + } + } + + return r; +} + + +/* Check, if a chunk gets completely overwritten. */ +static int stripe_check_chunk_overwrite(struct stripe *stripe, unsigned p) +{ + unsigned sectors = 0; + struct bio *bio; + struct bio_list *bl = BL(stripe, p, WRITE_QUEUED); + + bio_list_for_each(bio, bl) + sectors += bio_sectors(bio); + + BUG_ON(sectors > RS(stripe->sc)->set.io_size); + return sectors == RS(stripe->sc)->set.io_size; +} + +/* + * Avoid io on broken/reconstructed drive in order to + * reconstruct date on endio. + * + * (*1*) We set StripeReconstruct() in here, so that _do_endios() + * will trigger a reconstruct call before resetting it. + */ +static int stripe_chunk_set_io_flags(struct stripe *stripe, int pr) +{ + struct stripe_chunk *chunk = CHUNK(stripe, pr); + + /* + * Allow io on all chunks but the indexed one, + * because we're either degraded or prohibit it + * on the one for later reconstruction. + */ + /* Includes ClearChunkIo(), ClearChunkUptodate(). */ + stripe_chunk_invalidate(chunk); + stripe->idx.recover = pr; + SetStripeReconstruct(stripe); + + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + return -EPERM; +} + +/* Chunk locked/uptodate and device failed tests. */ +static struct stripe_chunk * +stripe_chunk_check(struct stripe *stripe, unsigned p, unsigned *chunks_uptodate) +{ + struct raid_set *rs = RS(stripe->sc); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Can't access active chunks. */ + if (ChunkLocked(chunk)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_CHUNK_LOCKED); + return NULL; + } + + /* Can't access broken devive. */ + if (ChunkError(chunk) || DevFailed(rs->dev + p)) + return NULL; + + /* Can access uptodate chunks. */ + if (ChunkUptodate(chunk)) { + (*chunks_uptodate)++; + return NULL; + } + + return chunk; +} + +/* + * Degraded/reconstruction mode. + * + * Check stripe state to figure which chunks don't need IO. + * + * Returns 0 for fully operational, -EPERM for degraded/resynchronizing. + */ +static int stripe_check_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + if (RSDead(rs)) { + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + stripe_allow_io(stripe); + return 0; + } + + /* Avoid further reconstruction setting, when already set. */ + if (StripeReconstruct(stripe)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_RECONSTRUCT_SET); + return -EBUSY; + } + + /* Initially allow io on all chunks. */ + stripe_allow_io(stripe); + + /* Return if stripe is already reconstructed. */ + if (StripeReconstructed(stripe)) { + atomic_inc(rs->stats + S_RECONSTRUCTED); + return 0; + } + + /* + * Degraded/reconstruction mode (device failed) -> + * avoid io on the failed device. + */ + if (unlikely(RSDegraded(rs))) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_DEGRADED); + /* Allow IO on all devices but the dead one. */ + BUG_ON(rs->set.ei < 0); + return stripe_chunk_set_io_flags(stripe, rs->set.ei); + } else { + int sync, pi = dev_for_parity(stripe, &sync); + + /* + * Reconstruction mode (ie. a particular (replaced) device or + * some (rotating) parity chunk is being resynchronized) -> + * o make sure all needed chunks are read in + * o writes are allowed to go through + */ + if (!sync) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NOSYNC); + /* Allow IO on all devs but the one to reconstruct. */ + return stripe_chunk_set_io_flags(stripe, pi); + } + } + + return 0; +} + +/* + * Check, if stripe is ready to merge writes. + * I.e. if all chunks present to allow to merge bios. + * + * We prohibit io on: + * + * o chunks without bios + * o chunks which get completely written over + */ +static int stripe_merge_possible(struct stripe *stripe, int nosync) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunks_overwrite = 0, chunks_prohibited = 0, + chunks_uptodate = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk; + + /* Prohibit io on broken devices. */ + if (DevFailed(rs->dev + p)) { + chunk = CHUNK(stripe, p); + goto prohibit_io; + } + + /* We can't optimize any further if no chunk. */ + chunk = stripe_chunk_check(stripe, p, &chunks_uptodate); + if (!chunk || nosync) + continue; + + /* + * We have a chunk, which is not uptodate. + * + * If this is not parity and we don't have + * reads queued, we can optimize further. + */ + if (p != stripe->idx.parity && + bio_list_empty(BL_CHUNK(chunk, READ)) && + bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) { + if (bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED))) + goto prohibit_io; + else if (RSCheckOverwrite(rs) && + stripe_check_chunk_overwrite(stripe, p)) + /* Completely overwritten chunk. */ + chunks_overwrite++; + } + + /* Allow io for chunks with bios and overwritten ones. */ + SetChunkIo(chunk); + continue; + +prohibit_io: + /* No io for broken devices or for chunks w/o bios. */ + ClearChunkIo(chunk); + chunks_prohibited++; + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + + /* All data chunks will get written over. */ + if (chunks_overwrite == rs->set.data_devs) + atomic_inc(rs->stats + S_OVERWRITE); /* REMOVEME: statistics.*/ + else if (chunks_uptodate + chunks_prohibited < rs->set.raid_devs) { + /* We don't have enough chunks to merge. */ + atomic_inc(rs->stats + S_CANT_MERGE); /* REMOVEME: statistics.*/ + return -EPERM; + } + + /* + * If we have all chunks up to date or overwrite them, we + * just zero the parity chunk and let stripe_rw() recreate it. + */ + if (chunks_uptodate == rs->set.raid_devs || + chunks_overwrite == rs->set.data_devs) { + stripe_zero_chunk(stripe, stripe->idx.parity); + BUG_ON(StripeReconstruct(stripe)); + SetStripeReconstruct(stripe); /* Enforce xor in caller. */ + } else { + /* + * With less chunks, we xor parity out. + * + * (*4*) We rely on !StripeReconstruct() in chunk_must_xor(), + * so that only chunks with queued or merged writes + * are being xored. + */ + parity_xor(stripe); + } + + /* + * We do have enough chunks to merge. + * All chunks are uptodate or get written over. + */ + atomic_inc(rs->stats + S_CAN_MERGE); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Avoid reading chunks in case we're fully operational. + * + * We prohibit io on any chunks without bios but the parity chunk. + */ +static void stripe_avoid_reads(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned dummy = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk = + stripe_chunk_check(stripe, p, &dummy); + + if (!chunk) + continue; + + /* If parity or any bios pending -> allow io. */ + if (chunk_ref(chunk) || p == stripe->idx.parity) + SetChunkIo(chunk); + else { + ClearChunkIo(chunk); + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + } +} + +/* + * Read/write a stripe. + * + * All stripe read/write activity goes through this function + * unless recovery, which has to call stripe_chunk_rw() directly. + * + * Make sure we don't try already merged stripes in order + * to avoid data corruption. + * + * Check the state of the RAID set and if degraded (or + * resynchronizing for reads), read in all other chunks but + * the one on the dead/resynchronizing device in order to be + * able to reconstruct the missing one in _do_endios(). + * + * Can be called on active stripes in order + * to dispatch new io on inactive chunks. + * + * States to cover: + * o stripe to read and/or write + * o stripe with error to reconstruct + */ +static void stripe_rw(struct stripe *stripe) +{ + int nosync, r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Check, if a chunk needs to be reconstructed + * because of a degraded set or a region out of sync. + */ + nosync = stripe_check_reconstruct(stripe); + switch (nosync) { + case -EBUSY: + return; /* Wait for stripe reconstruction to finish. */ + case -EPERM: + goto io; + } + + /* + * If we don't have merged writes pending, we can schedule + * queued writes to be merged next without corrupting data. + */ + if (!StripeMerged(stripe)) { + r = stripe_queue_writes(stripe); + if (r) + /* Writes got queued -> flag RBW. */ + SetStripeRBW(stripe); + } + + /* + * Merge all writes hanging off uptodate/overwritten + * chunks of the stripe. + */ + if (StripeRBW(stripe)) { + r = stripe_merge_possible(stripe, nosync); + if (!r) { /* Merge possible. */ + struct stripe_chunk *chunk; + + /* + * I rely on valid parity in order + * to xor a fraction of chunks out + * of parity and back in. + */ + stripe_merge_writes(stripe); /* Merge writes in. */ + parity_xor(stripe); /* Update parity. */ + ClearStripeReconstruct(stripe); /* Reset xor enforce. */ + SetStripeMerged(stripe); /* Writes merged. */ + ClearStripeRBW(stripe); /* Disable RBW. */ + + /* + * REMOVEME: sanity check on parity chunk + * states after writes got merged. + */ + chunk = CHUNK(stripe, stripe->idx.parity); + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk)); + BUG_ON(!ChunkDirty(chunk)); + BUG_ON(!ChunkIo(chunk)); + } + } else if (!nosync && !StripeMerged(stripe)) + /* Read avoidance if not degraded/resynchronizing/merged. */ + stripe_avoid_reads(stripe); + +io: + /* Now submit any reads/writes for non-uptodate or dirty chunks. */ + r = stripe_chunks_rw(stripe); + if (!r) { + /* + * No io submitted because of chunk io + * prohibited or locked chunks/failed devices + * -> push to end io list for processing. + */ + stripe_endio_push(stripe); + atomic_inc(rs->stats + S_NO_RW); /* REMOVEME: statistics. */ + } +} + +/* + * Recovery functions + */ +/* Read a stripe off a raid set for recovery. */ +static int stripe_recover_read(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* Invalidate all chunks so that they get read in. */ + stripe_chunks_invalidate(stripe); + stripe_allow_io(stripe); /* Allow io on all recovery chunks. */ + + /* + * If we are reconstructing a perticular device, we can avoid + * reading the respective chunk in, because we're going to + * reconstruct it anyway. + * + * We can't do that for resynchronization of rotating parity, + * because the recovery stripe chunk size is typically larger + * than the sets chunk size. + */ + if (pi > -1) + ClearChunkIo(CHUNK(stripe, pi)); + + return stripe_chunks_rw(stripe); +} + +/* Write a stripe to a raid set for recovery. */ +static int stripe_recover_write(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* + * If this is a reconstruct of a particular device, then + * reconstruct the respective chunk, else create parity chunk. + */ + if (pi > -1) { + stripe_zero_chunk(stripe, pi); + common_xor(stripe, stripe->io.size, 0, pi); + chunk_set(CHUNK(stripe, pi), DIRTY); + } else + parity_xor(stripe); + + return stripe_chunks_rw(stripe); +} + +/* Read/write a recovery stripe. */ +static int stripe_recover_rw(struct stripe *stripe) +{ + int r = 0, sync = 0; + + /* Read/write flip-flop. */ + if (TestClearStripeRBW(stripe)) { + SetStripeMerged(stripe); + stripe->key = stripe->recover->pos; + r = stripe_recover_read(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } else if (TestClearStripeMerged(stripe)) { + r = stripe_recover_write(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } + + BUG_ON(sync); + return r; +} + +/* Recover bandwidth available ?. */ +static int recover_bandwidth(struct raid_set *rs) +{ + int r, work; + + /* On reset or when bios delayed -> allow recovery. */ + r = recover_io_reset(rs); + if (r || RSBandwidth(rs)) + goto out; + + work = atomic_read(rs->recover.io_count + IO_WORK); + if (work) { + /* Pay attention to larger recover stripe size. */ + int recover = atomic_read(rs->recover.io_count + IO_RECOVER) * + rs->recover.io_size / rs->set.io_size; + + /* + * Don't use more than given bandwidth + * of the work io for recovery. + */ + if (recover > work / rs->recover.bandwidth_work) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NO_BANDWIDTH); + return 0; + } + } + +out: + atomic_inc(rs->stats + S_BANDWIDTH); /* REMOVEME: statistics. */ + return 1; +} + +/* Try to get a region to recover. */ +static int stripe_recover_get_region(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + struct recover_addr *addr = stripe->recover; + struct dm_dirty_log *dl = rec->dl; + struct dm_rh_client *rh = rec->rh; + + BUG_ON(!dl); + BUG_ON(!rh); + + /* Return, that we have region first to finish it during suspension. */ + if (addr->reg) + return 1; + + if (RSSuspend(rs)) + return -EPERM; + + if (dl->type->get_sync_count(dl) >= rec->nr_regions) + return -ENOENT; + + /* If we don't have enough bandwidth, we don't proceed recovering. */ + if (!recover_bandwidth(rs)) + return -EAGAIN; + + /* Start quiescing a region. */ + dm_rh_recovery_prepare(rh); + addr->reg = dm_rh_recovery_start(rh); + if (!addr->reg) + return -EAGAIN; + + addr->pos = dm_rh_region_to_sector(rh, dm_rh_get_region_key(addr->reg)); + addr->end = addr->pos + dm_rh_get_region_size(rh); + + /* + * Take one global io reference out for the + * whole region, which is going to be released + * when the region is completely done with. + */ + io_get(rs); + return 0; +} + +/* Update region hash state. */ +enum recover_type { REC_FAILURE = 0, REC_SUCCESS = 1 }; +static void recover_rh_update(struct stripe *stripe, enum recover_type success) +{ + struct recover_addr *addr = stripe->recover; + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + + if (!addr->reg) { + DMERR("%s- Called w/o region", __func__); + return; + } + + dm_rh_recovery_end(addr->reg, success); + if (success) + rec->nr_regions_recovered++; + + addr->reg = NULL; + + /* + * Completely done with this region -> + * release the 1st io reference. + */ + io_put(rs); +} + +/* Set start of recovery state. */ +static void set_start_recovery(struct raid_set *rs) +{ + /* Initialize recovery. */ + rs->recover.start_jiffies = jiffies; + rs->recover.end_jiffies = 0; +} + +/* Set end of recovery state. */ +static void set_end_recovery(struct raid_set *rs) +{ + ClearRSRecover(rs); + rs->set.dev_to_init = -1; + + /* Check for jiffies overrun. */ + rs->recover.end_jiffies = jiffies; + if (rs->recover.end_jiffies < rs->recover.start_jiffies) + rs->recover.end_jiffies = ~0; +} + +/* Handle recovery on one recovery stripe. */ +static int _do_recovery(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + struct recover_addr *addr = stripe->recover; + + /* If recovery is active -> return. */ + if (stripe_io_ref(stripe)) + return 1; + + /* IO error is fatal for recovery -> stop it. */ + if (unlikely(StripeError(stripe))) + goto err; + + /* Recovery end required. */ + if (!RSRecover(rs)) + goto err; + + /* Get a region to recover. */ + r = stripe_recover_get_region(stripe); + switch (r) { + case 0: /* Got a new region: flag initial read before write. */ + SetStripeRBW(stripe); + case 1: /* Have a region in the works. */ + break; + case -EAGAIN: + /* No bandwidth/quiesced region yet, try later. */ + if (!io_ref(rs)) + wake_do_raid_delayed(rs, HZ / 4); + case -EPERM: + /* Suspend. */ + return 1; + case -ENOENT: /* No more regions to recover. */ + schedule_work(&rs->io.ws_do_table_event); + return 0; + default: + BUG(); + } + + /* Read/write a recover stripe. */ + r = stripe_recover_rw(stripe); + if (r) + /* IO initiated. */ + return 1; + + /* Read and write finished-> update recovery position within region. */ + addr->pos += stripe->io.size; + + /* If we're at end of region, update region hash. */ + if (addr->pos >= addr->end || + addr->pos >= rs->set.sectors_per_dev) + recover_rh_update(stripe, REC_SUCCESS); + else + /* Prepare to read next region segment. */ + SetStripeRBW(stripe); + + /* Schedule myself for another round... */ + wake_do_raid(rs); + return 1; + +err: + /* FIXME: rather try recovering other regions on error? */ + rs_check_degrade(stripe); + recover_rh_update(stripe, REC_FAILURE); + + /* Check state of partially recovered array. */ + if (RSDegraded(rs) && !RSDead(rs) && + rs->set.dev_to_init != -1 && + rs->set.ei != rs->set.dev_to_init) + /* Broken drive != drive to recover -> FATAL. */ + SetRSDead(rs); + + if (StripeError(stripe)) { + char buf[BDEVNAME_SIZE]; + + DMERR("stopping recovery due to " + "ERROR on /dev/%s, stripe at offset %llu", + bdevname(rs->dev[rs->set.ei].dev->bdev, buf), + (unsigned long long) stripe->key); + + } + + /* Make sure, that all quiesced regions get released. */ + while (addr->reg) { + dm_rh_recovery_end(addr->reg, -EIO); + addr->reg = dm_rh_recovery_start(rs->recover.rh); + } + + return 0; +} + +/* Called by main io daemon to recover regions. */ +static void do_recovery(struct raid_set *rs) +{ + if (RSRecover(rs)) { + int r = 0; + struct stripe *stripe; + + list_for_each_entry(stripe, &rs->recover.stripes, + lists[LIST_RECOVER]) + r += _do_recovery(stripe); + + if (!r) { + set_end_recovery(rs); + stripe_recover_free(rs); + } + } +} + +/* + * END recovery functions + */ + +/* End io process all stripes handed in by endio() callback. */ +static void _do_endios(struct raid_set *rs, struct stripe *stripe, + struct list_head *flush_list) +{ + /* First unlock all required chunks. */ + stripe_chunks_unlock(stripe); + + /* + * If an io error on a stripe occured, degrade the RAID set + * and try to endio as many bios as possible. If any bios can't + * be endio processed, requeue the stripe (stripe_ref() != 0). + */ + if (TestClearStripeError(stripe)) { + /* + * FIXME: if read, rewrite the failed chunk after reconstruction + * in order to trigger disk bad sector relocation. + */ + rs_check_degrade(stripe); /* Resets ChunkError(). */ + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + } + + /* Got to reconstruct a missing chunk. */ + if (StripeReconstruct(stripe)) { + /* + * (*2*) We use StripeReconstruct() to allow for + * all chunks to be xored into the reconstructed + * one (see chunk_must_xor()). + */ + stripe_reconstruct(stripe); + + /* + * (*3*) Now we reset StripeReconstruct() and flag + * StripeReconstructed() to show to stripe_rw(), + * that we have reconstructed a missing chunk. + */ + ClearStripeReconstruct(stripe); + SetStripeReconstructed(stripe); + + /* FIXME: reschedule to be written in case of read. */ + // if (!StripeRBW(stripe)) { + // chunk_set(CHUNK(stripe, pr), DIRTY); + // stripe_chunks_rw(stripe); + // } + } + + /* + * Now that we eventually got a complete stripe, we + * can process the rest of the end ios on reads. + */ + stripe_endio(READ, stripe); + + /* End io all merged writes. */ + if (TestClearStripeMerged(stripe)) + stripe_endio(WRITE_MERGED, stripe); + + /* If RAID set is dead -> fail any ios to dead drives. */ + if (RSDead(rs)) { + DMERR_LIMIT("RAID set dead: failing ios to dead devices"); + stripe_fail_io(stripe); + } + + /* + * We have stripe references still, + * beacuse of read befeore writes or IO errors -> + * got to put on flush list for processing. + */ + if (stripe_ref(stripe)) { + BUG_ON(!list_empty(stripe->lists + LIST_LRU)); + list_add_tail(stripe->lists + LIST_FLUSH, flush_list); + atomic_inc(rs->stats + S_REQUEUE); /* REMOVEME: statistics. */ + } else + stripe_lru_add(stripe); +} + +/* Pop any endio stripes off of the endio list and belabour them. */ +static void do_endios(struct raid_set *rs) +{ + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + /* IO flush list for sorted requeued stripes. */ + struct list_head flush_list; + + INIT_LIST_HEAD(&flush_list); + + while ((stripe = stripe_endio_pop(sc))) { + /* Avoid endio on stripes with newly io'ed chunks. */ + if (!stripe_io_ref(stripe)) + _do_endios(rs, stripe, &flush_list); + } + + /* + * Insert any requeued stripes in the proper + * order at the beginning of the io (flush) list. + */ + list_splice(&flush_list, sc->lists + LIST_FLUSH); +} + +/* Flush any stripes on the io list. */ +static void do_flush(struct raid_set *rs) +{ + struct stripe *stripe; + + while ((stripe = stripe_io_pop(&rs->sc))) + stripe_rw(stripe); /* Read/write stripe. */ +} + +/* Stripe cache resizing. */ +static void do_sc_resize(struct raid_set *rs) +{ + unsigned set = atomic_read(&rs->sc.stripes_to_set); + + if (set) { + unsigned cur = atomic_read(&rs->sc.stripes); + int r = (set > cur) ? sc_grow(&rs->sc, set - cur, SC_GROW) : + sc_shrink(&rs->sc, cur - set); + + /* Flag end of resizeing if ok. */ + if (!r) + atomic_set(&rs->sc.stripes_to_set, 0); + } +} + +/* + * Process all ios + * + * We do different things with the io depending + * on the state of the region that it is in: + * + * o reads: hang off stripe cache or postpone if full + * + * o writes: + * + * CLEAN/DIRTY/NOSYNC: increment pending and hang io off stripe's stripe set. + * In case stripe cache is full or busy, postpone the io. + * + * RECOVERING: delay the io until recovery of the region completes. + * + */ +static void do_ios(struct raid_set *rs, struct bio_list *ios) +{ + int r; + unsigned flush = 0, delay = 0; + sector_t sector; + struct dm_rh_client *rh = rs->recover.rh; + struct bio *bio; + struct bio_list reject; + + bio_list_init(&reject); + + /* + * Classify each io: + * o delay writes to recovering regions (let reads go through) + * o queue io to all other regions + */ + while ((bio = bio_list_pop(ios))) { + /* + * In case we get a barrier bio, push it back onto + * the input queue unless all work queues are empty + * and the stripe cache is inactive. + */ + if (unlikely(bio->bi_rw & REQ_FLUSH)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BARRIER); + if (delay || + !list_empty(rs->sc.lists + LIST_FLUSH) || + !bio_list_empty(&reject) || + sc_active(&rs->sc)) { + bio_list_push(ios, bio); + break; + } + } + + /* Check for recovering regions. */ + sector = _sector(rs, bio); + r = region_state(rs, sector, DM_RH_RECOVERING); + if (unlikely(r && bio_data_dir(bio) == WRITE)) { + delay++; + /* Wait writing to recovering regions. */ + dm_rh_delay_by_region(rh, bio, + dm_rh_sector_to_region(rh, + sector)); + /* REMOVEME: statistics.*/ + atomic_inc(rs->stats + S_DELAYED_BIOS); + atomic_inc(rs->stats + S_SUM_DELAYED_BIOS); + + /* Force bandwidth tests in recovery. */ + SetRSBandwidth(rs); + } else { + /* + * Process ios to non-recovering regions by queueing + * them to stripes (does dm_rh_inc()) for writes). + */ + flush += stripe_queue_bio(rs, bio, &reject); + } + } + + if (flush) { + /* FIXME: better error handling. */ + r = dm_rh_flush(rh); /* Writes got queued -> flush dirty log. */ + if (r) + DMERR_LIMIT("dirty log flush"); + } + + /* Merge any rejected bios back to the head of the input list. */ + bio_list_merge_head(ios, &reject); +} + +/* Send an event in case we're getting too busy. */ +static void do_busy_event(struct raid_set *rs) +{ + if (sc_busy(rs)) { + if (!TestSetRSScBusy(rs)) + schedule_work(&rs->io.ws_do_table_event); + } + + ClearRSScBusy(rs); +} + +/* Throw an event. */ +static void do_table_event(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.ws_do_table_event); + dm_table_event(rs->ti->table); +} + + +/*----------------------------------------------------------------- + * RAID daemon + *---------------------------------------------------------------*/ +/* + * o belabour all end ios + * o update the region hash states + * o optionally shrink the stripe cache + * o optionally do recovery + * o unplug any component raid devices with queued bios + * o grab the input queue + * o work an all requeued or new ios and perform stripe cache flushs + * o unplug any component raid devices with queued bios + * o check, if the stripe cache gets too busy and throw an event if so + */ +static void do_raid(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.dws_do_raid.work); + struct bio_list *ios = &rs->io.work, *ios_in = &rs->io.in; + struct blk_plug plug; + + /* + * We always need to end io, so that ios can get errored in + * case the set failed and the region counters get decremented + * before we update region hash states and go any further. + */ + do_endios(rs); + dm_rh_update_states(rs->recover.rh, 1); + + /* + * Now that we've end io'd, which may have put stripes on the LRU list + * to allow for shrinking, we resize the stripe cache if requested. + */ + do_sc_resize(rs); + + /* Try to recover regions. */ + blk_start_plug(&plug); + do_recovery(rs); + blk_finish_plug(&plug); /* Unplug the queue */ + + /* Quickly grab all new ios queued and add them to the work list. */ + mutex_lock(&rs->io.in_lock); + bio_list_merge(ios, ios_in); + bio_list_init(ios_in); + mutex_unlock(&rs->io.in_lock); + + blk_start_plug(&plug); + if (!bio_list_empty(ios)) + do_ios(rs, ios); /* Got ios to work into the cache. */ + + do_flush(rs); /* Flush any stripes on io list. */ + blk_finish_plug(&plug); /* Unplug the queue */ + do_busy_event(rs); /* Check if we got too busy. */ +} + +/* + * Callback for region hash to dispatch + * delayed bios queued to recovered regions + * (gets called via dm_rh_update_states()). + */ +static void dispatch_delayed_bios(void *context, struct bio_list *bl) +{ + struct raid_set *rs = context; + struct bio *bio; + + /* REMOVEME: statistics; decrement pending delayed bios counter. */ + bio_list_for_each(bio, bl) + atomic_dec(rs->stats + S_DELAYED_BIOS); + + /* Merge region hash private list to work list. */ + bio_list_merge_head(&rs->io.work, bl); + bio_list_init(bl); + ClearRSBandwidth(rs); +} + +/************************************************************* + * Constructor helpers + *************************************************************/ +/* Calculate MB/sec. */ +static unsigned mbpers(struct raid_set *rs, unsigned speed) +{ + return to_bytes(speed * rs->set.data_devs * + rs->recover.io_size * HZ >> 10) >> 10; +} + +/* + * Discover fastest xor algorithm and # of chunks combination. + */ +/* Calculate speed for algorithm and # of chunks. */ +static unsigned xor_speed(struct stripe *stripe) +{ + unsigned r = 0; + unsigned long j; + + /* Wait for next tick. */ + for (j = jiffies; j == jiffies; ) + ; + + /* Do xors for a full tick. */ + for (j = jiffies; j == jiffies; ) { + mb(); + common_xor(stripe, stripe->io.size, 0, 0); + mb(); + r++; + } + + return r; +} + +/* Optimize xor algorithm for this RAID set. */ +static unsigned xor_optimize(struct raid_set *rs) +{ + unsigned chunks_max = 2, p = rs->set.raid_devs, speed_max = 0; + struct xor_func *f = ARRAY_END(xor_funcs), *f_max = NULL; + struct stripe *stripe; + + BUG_ON(list_empty(&rs->recover.stripes)); + stripe = list_first_entry(&rs->recover.stripes, struct stripe, + lists[LIST_RECOVER]); + + /* Must set uptodate so that xor() will belabour chunks. */ + while (p--) + SetChunkUptodate(CHUNK(stripe, p)); + + /* Try all xor functions. */ + while (f-- > xor_funcs) { + unsigned speed; + + /* Set actual xor function for common_xor(). */ + rs->xor.f = f; + rs->xor.chunks = (f->f == xor_blocks_wrapper ? + (MAX_XOR_BLOCKS + 1) : XOR_CHUNKS_MAX) + 1; + + while (rs->xor.chunks-- > 2) { + speed = xor_speed(stripe); + if (speed > speed_max) { + speed_max = speed; + chunks_max = rs->xor.chunks; + f_max = f; + } + } + } + + /* Memorize optimum parameters. */ + rs->xor.f = f_max; + rs->xor.chunks = chunks_max; + return speed_max; +} + +/* + * Allocate a RAID context (a RAID set) + */ +/* Structure for variable RAID parameters. */ +struct variable_parms { + int bandwidth; + int bandwidth_parm; + int chunk_size; + int chunk_size_parm; + int io_size; + int io_size_parm; + int stripes; + int stripes_parm; + int recover_io_size; + int recover_io_size_parm; + int raid_parms; + int recovery; + int recovery_stripes; + int recovery_stripes_parm; +}; + +static struct raid_set * +context_alloc(struct raid_type *raid_type, struct variable_parms *p, + unsigned raid_devs, sector_t sectors_per_dev, + struct dm_target *ti, unsigned dl_parms, char **argv) +{ + int r; + size_t len; + sector_t region_size, ti_len; + struct raid_set *rs = NULL; + struct dm_dirty_log *dl; + struct recover *rec; + + /* + * Create the dirty log + * + * We need to change length for the dirty log constructor, + * because we want an amount of regions for all stripes derived + * from the single device size, so that we can keep region + * size = 2^^n independant of the number of devices + */ + ti_len = ti->len; + ti->len = sectors_per_dev; + dl = dm_dirty_log_create(argv[0], ti, NULL, dl_parms, argv + 2); + ti->len = ti_len; + if (!dl) + goto bad_dirty_log; + + /* Chunk size *must* be smaller than region size. */ + region_size = dl->type->get_region_size(dl); + if (p->chunk_size > region_size) + goto bad_chunk_size; + + /* Recover io size *must* be smaller than region size as well. */ + if (p->recover_io_size > region_size) + goto bad_recover_io_size; + + /* Size and allocate the RAID set structure. */ + len = sizeof(*rs->data) + sizeof(*rs->dev); + if (dm_array_too_big(sizeof(*rs), len, raid_devs)) + goto bad_array; + + len = sizeof(*rs) + raid_devs * len; + rs = kzalloc(len, GFP_KERNEL); + if (!rs) + goto bad_alloc; + + rec = &rs->recover; + atomic_set(&rs->io.in_process, 0); + atomic_set(&rs->io.in_process_max, 0); + rec->io_size = p->recover_io_size; + + /* Pointer to data array. */ + rs->data = (unsigned long **) + ((void *) rs->dev + raid_devs * sizeof(*rs->dev)); + rec->dl = dl; + rs->set.raid_devs = raid_devs; + rs->set.data_devs = raid_devs - raid_type->parity_devs; + rs->set.raid_type = raid_type; + + rs->set.raid_parms = p->raid_parms; + rs->set.chunk_size_parm = p->chunk_size_parm; + rs->set.io_size_parm = p->io_size_parm; + rs->sc.stripes_parm = p->stripes_parm; + rec->io_size_parm = p->recover_io_size_parm; + rec->bandwidth_parm = p->bandwidth_parm; + rec->recovery = p->recovery; + rec->recovery_stripes = p->recovery_stripes; + + /* + * Set chunk and io size and respective shifts + * (used to avoid divisions) + */ + rs->set.chunk_size = p->chunk_size; + rs->set.chunk_shift = ffs(p->chunk_size) - 1; + + rs->set.io_size = p->io_size; + rs->set.io_mask = p->io_size - 1; + /* Mask to adjust address key in case io_size != chunk_size. */ + rs->set.io_inv_mask = (p->chunk_size - 1) & ~rs->set.io_mask; + + rs->set.sectors_per_dev = sectors_per_dev; + + rs->set.ei = -1; /* Indicate no failed device. */ + atomic_set(&rs->set.failed_devs, 0); + + rs->ti = ti; + + atomic_set(rec->io_count + IO_WORK, 0); + atomic_set(rec->io_count + IO_RECOVER, 0); + + /* Initialize io lock and queues. */ + mutex_init(&rs->io.in_lock); + bio_list_init(&rs->io.in); + bio_list_init(&rs->io.work); + + init_waitqueue_head(&rs->io.suspendq); /* Suspend waiters (dm-io). */ + + rec->nr_regions = dm_sector_div_up(sectors_per_dev, region_size); + rec->rh = dm_region_hash_create(rs, dispatch_delayed_bios, + wake_dummy, wake_do_raid, 0, p->recovery_stripes, + dl, region_size, rec->nr_regions); + if (IS_ERR(rec->rh)) + goto bad_rh; + + /* Initialize stripe cache. */ + r = sc_init(rs, p->stripes); + if (r) + goto bad_sc; + + /* REMOVEME: statistics. */ + stats_reset(rs); + ClearRSDevelStats(rs); /* Disnable development status. */ + return rs; + +bad_dirty_log: + TI_ERR_RET("Error creating dirty log", ERR_PTR(-ENOMEM)); + +bad_chunk_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Chunk size larger than region size", ERR_PTR(-EINVAL)); + +bad_recover_io_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Recover stripe io size larger than region size", + ERR_PTR(-EINVAL)); + +bad_array: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Arry too big", ERR_PTR(-EINVAL)); + +bad_alloc: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Cannot allocate raid context", ERR_PTR(-ENOMEM)); + +bad_rh: + dm_dirty_log_destroy(dl); + ti->error = DM_MSG_PREFIX "Error creating dirty region hash"; + goto free_rs; + +bad_sc: + dm_region_hash_destroy(rec->rh); /* Destroys dirty log too. */ + sc_exit(&rs->sc); + ti->error = DM_MSG_PREFIX "Error creating stripe cache"; +free_rs: + kfree(rs); + return ERR_PTR(-ENOMEM); +} + +/* Free a RAID context (a RAID set). */ +static void context_free(struct raid_set *rs, unsigned p) +{ + while (p--) + dm_put_device(rs->ti, rs->dev[p].dev); + + sc_exit(&rs->sc); + dm_region_hash_destroy(rs->recover.rh); /* Destroys dirty log too. */ + kfree(rs); +} + +/* Create work queue and initialize delayed work. */ +static int rs_workqueue_init(struct raid_set *rs) +{ + struct dm_target *ti = rs->ti; + + rs->io.wq = create_singlethread_workqueue(DAEMON); + if (!rs->io.wq) + TI_ERR_RET("failed to create " DAEMON, -ENOMEM); + + INIT_DELAYED_WORK(&rs->io.dws_do_raid, do_raid); + INIT_WORK(&rs->io.ws_do_table_event, do_table_event); + return 0; +} + +/* Return pointer to raid_type structure for raid name. */ +static struct raid_type *get_raid_type(char *name) +{ + struct raid_type *r = ARRAY_END(raid_types); + + while (r-- > raid_types) { + if (!strcmp(r->name, name)) + return r; + } + + return NULL; +} + +/* FIXME: factor out to dm core. */ +static int multiple(sector_t a, sector_t b, sector_t *n) +{ + sector_t r = a; + + sector_div(r, b); + *n = r; + return a == r * b; +} + +/* Log RAID set information to kernel log. */ +static void rs_log(struct raid_set *rs, unsigned speed) +{ + unsigned p; + char buf[BDEVNAME_SIZE]; + + for (p = 0; p < rs->set.raid_devs; p++) + DMINFO("/dev/%s is raid disk %u%s", + bdevname(rs->dev[p].dev->bdev, buf), p, + (p == rs->set.pi) ? " (parity)" : ""); + + DMINFO("%d/%d/%d sectors chunk/io/recovery size, %u stripes\n" + "algorithm \"%s\", %u chunks with %uMB/s\n" + "%s set with net %u/%u devices", + rs->set.chunk_size, rs->set.io_size, rs->recover.io_size, + atomic_read(&rs->sc.stripes), + rs->xor.f->name, rs->xor.chunks, mbpers(rs, speed), + rs->set.raid_type->descr, rs->set.data_devs, rs->set.raid_devs); +} + +/* Get all devices and offsets. */ +static int dev_parms(struct raid_set *rs, char **argv, int *p) +{ + struct dm_target *ti = rs->ti; + + for (*p = 0; *p < rs->set.raid_devs; (*p)++, argv += 2) { + int r; + unsigned long long tmp; + struct raid_dev *dev = rs->dev + *p; + + /* Get offset and device. */ + if (sscanf(argv[1], "%llu", &tmp) != 1 || + tmp > rs->set.sectors_per_dev) + TI_ERR("Invalid RAID device offset parameter"); + + dev->start = tmp; + r = dm_get_device(ti, *argv, dm_table_get_mode(ti->table), &dev->dev); + if (r) + TI_ERR_RET("RAID device lookup failure", r); + + r = raid_dev_lookup(rs, dev); + if (r != -ENODEV && r < *p) { + (*p)++; /* Ensure dm_put_device() on actual device. */ + TI_ERR_RET("Duplicate RAID device", -ENXIO); + } + } + + return 0; +} + +/* Set recovery bandwidth. */ +static void +recover_set_bandwidth(struct raid_set *rs, unsigned bandwidth) +{ + rs->recover.bandwidth = bandwidth; + rs->recover.bandwidth_work = 100 / bandwidth; +} + +/* Handle variable number of RAID parameters. */ +static int get_raid_variable_parms(struct dm_target *ti, char **argv, + struct variable_parms *vp) +{ + int p, value; + struct { + int action; /* -1: skip, 0: no pwer2 check, 1: power2 check */ + char *errmsg; + int min, max; + int *var, *var2, *var3; + } argctr[] = { + { 1, + "Invalid chunk size; must be -1 or 2^^n and <= 16384", + IO_SIZE_MIN, CHUNK_SIZE_MAX, + &vp->chunk_size_parm, &vp->chunk_size, &vp->io_size }, + { 0, + "Invalid number of stripes: must be -1 or >= 8 and <= 16384", + STRIPES_MIN, STRIPES_MAX, + &vp->stripes_parm, &vp->stripes, NULL }, + { 1, + "Invalid io size; must -1 or >= 8, 2^^n and less equal " + "min(BIO_MAX_SECTORS/2, chunk size)", + IO_SIZE_MIN, 0, /* Needs to be updated in loop below. */ + &vp->io_size_parm, &vp->io_size, NULL }, + { 1, + "Invalid recovery io size; must be -1 or " + "2^^n and less equal BIO_MAX_SECTORS/2", + RECOVER_IO_SIZE_MIN, BIO_MAX_SECTORS / 2, + &vp->recover_io_size_parm, &vp->recover_io_size, NULL }, + { 0, + "Invalid recovery bandwidth percentage; " + "must be -1 or > 0 and <= 100", + BANDWIDTH_MIN, BANDWIDTH_MAX, + &vp->bandwidth_parm, &vp->bandwidth, NULL }, + /* Handle sync argument seperately in loop. */ + { -1, + "Invalid recovery switch; must be \"sync\" or \"nosync\"" }, + { 0, + "Invalid number of recovery stripes;" + "must be -1, > 0 and <= 16384", + RECOVERY_STRIPES_MIN, RECOVERY_STRIPES_MAX, + &vp->recovery_stripes_parm, &vp->recovery_stripes, NULL }, + }, *varp; + + /* Fetch # of variable raid parameters. */ + if (sscanf(*(argv++), "%d", &vp->raid_parms) != 1 || + !range_ok(vp->raid_parms, 0, 7)) + TI_ERR("Bad variable raid parameters number"); + + /* Preset variable RAID parameters. */ + vp->chunk_size = CHUNK_SIZE_DEFAULT; + vp->io_size = IO_SIZE_DEFAULT; + vp->stripes = STRIPES_DEFAULT; + vp->recover_io_size = RECOVER_IO_SIZE_DEFAULT; + vp->bandwidth = BANDWIDTH_DEFAULT; + vp->recovery = 1; + vp->recovery_stripes = RECOVERY_STRIPES_DEFAULT; + + /* Walk the array of argument constraints for all given ones. */ + for (p = 0, varp = argctr; p < vp->raid_parms; p++, varp++) { + BUG_ON(varp >= ARRAY_END(argctr)); + + /* Special case for "[no]sync" string argument. */ + if (varp->action < 0) { + if (!strcmp(*argv, "sync")) + ; + else if (!strcmp(*argv, "nosync")) + vp->recovery = 0; + else + TI_ERR(varp->errmsg); + + argv++; + continue; + } + + /* + * Special case for io_size depending + * on previously set chunk size. + */ + if (p == 2) + varp->max = min(BIO_MAX_SECTORS / 2, vp->chunk_size); + + if (sscanf(*(argv++), "%d", &value) != 1 || + (value != -1 && + ((varp->action && !POWER_OF_2(value)) || + !range_ok(value, varp->min, varp->max)))) + TI_ERR(varp->errmsg); + + *varp->var = value; + if (value != -1) { + if (varp->var2) + *varp->var2 = value; + if (varp->var3) + *varp->var3 = value; + } + } + + return 0; +} + +/* Parse optional locking parameters. */ +static int get_raid_locking_parms(struct dm_target *ti, char **argv, + int *locking_parms, + struct dm_raid45_locking_type **locking_type) +{ + if (!strnicmp(argv[0], "locking", strlen(argv[0]))) { + char *lckstr = argv[1]; + size_t lcksz = strlen(lckstr); + + if (!strnicmp(lckstr, "none", lcksz)) { + *locking_type = &locking_none; + *locking_parms = 2; + } else if (!strnicmp(lckstr, "cluster", lcksz)) { + DMERR("locking type \"%s\" not yet implemented", + lckstr); + return -EINVAL; + } else { + DMERR("unknown locking type \"%s\"", lckstr); + return -EINVAL; + } + } + + *locking_parms = 0; + *locking_type = &locking_none; + return 0; +} + +/* Set backing device read ahead properties of RAID set. */ +static void rs_set_read_ahead(struct raid_set *rs, + unsigned sectors, unsigned stripes) +{ + unsigned ra_pages = dm_div_up(sectors, SECTORS_PER_PAGE); + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set read-ahead for the RAID set and the component devices. */ + if (ra_pages) { + unsigned p = rs->set.raid_devs; + + bdi->ra_pages = stripes * ra_pages * rs->set.data_devs; + + while (p--) { + struct request_queue *q = + bdev_get_queue(rs->dev[p].dev->bdev); + + q->backing_dev_info.ra_pages = ra_pages; + } + } + + dm_put(md); +} + +/* Set congested function. */ +static void rs_set_congested_fn(struct raid_set *rs) +{ + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set congested function and data. */ + bdi->congested_fn = rs_congested; + bdi->congested_data = rs; + dm_put(md); +} + +/* + * Construct a RAID4/5 mapping: + * + * log_type #log_params \ + * raid_type [#parity_dev] #raid_variable_params \ + * [locking "none"/"cluster"] + * #raid_devs #dev_to_initialize [ ]{3,} + * + * log_type = "core"/"disk", + * #log_params = 1-3 (1-2 for core dirty log type, 3 for disk dirty log only) + * log_params = [dirty_log_path] region_size [[no]sync]) + * + * raid_type = "raid4", "raid5_la", "raid5_ra", "raid5_ls", "raid5_rs" + * + * #parity_dev = N if raid_type = "raid4" + * o N = -1: pick default = last device + * o N >= 0 and < #raid_devs: parity device index + * + * #raid_variable_params = 0-7; raid_params (-1 = default): + * [chunk_size [#stripes [io_size [recover_io_size \ + * [%recovery_bandwidth [recovery_switch [#recovery_stripes]]]]]]] + * o chunk_size (unit to calculate drive addresses; must be 2^^n, > 8 + * and <= CHUNK_SIZE_MAX) + * o #stripes is number of stripes allocated to stripe cache + * (must be > 1 and < STRIPES_MAX) + * o io_size (io unit size per device in sectors; must be 2^^n and > 8) + * o recover_io_size (io unit size per device for recovery in sectors; + must be 2^^n, > SECTORS_PER_PAGE and <= region_size) + * o %recovery_bandwith is the maximum amount spend for recovery during + * application io (1-100%) + * o recovery switch = [sync|nosync] + * o #recovery_stripes is the number of recovery stripes used for + * parallel recovery of the RAID set + * If raid_variable_params = 0, defaults will be used. + * Any raid_variable_param can be set to -1 to apply a default + * + * #raid_devs = N (N >= 3) + * + * #dev_to_initialize = N + * -1: initialize parity on all devices + * >= 0 and < #raid_devs: initialize raid_path; used to force reconstruction + * of a failed devices content after replacement + * + * = device_path (eg, /dev/sdd1) + * = begin at offset on + * + */ +#define MIN_PARMS 13 +static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) +{ + int dev_to_init, dl_parms, i, locking_parms, + parity_parm, pi = -1, r, raid_devs; + unsigned speed; + sector_t tmp, sectors_per_dev; + struct dm_raid45_locking_type *locking; + struct raid_set *rs; + struct raid_type *raid_type; + struct variable_parms parms; + + /* Ensure minimum number of parameters. */ + if (argc < MIN_PARMS) + TI_ERR("Not enough parameters"); + + /* Fetch # of dirty log parameters. */ + if (sscanf(argv[1], "%d", &dl_parms) != 1 || + !range_ok(dl_parms, 1, 4711)) /* ;-) */ + TI_ERR("Bad dirty log parameters number"); + + /* Check raid_type. */ + raid_type = get_raid_type(argv[dl_parms + 2]); + if (!raid_type) + TI_ERR("Bad raid type"); + + /* In case of RAID4, parity drive is selectable. */ + parity_parm = !!(raid_type->level == raid4); + + /* Handle variable number of RAID parameters. */ + r = get_raid_variable_parms(ti, argv + dl_parms + parity_parm + 3, + &parms); + if (r) + return r; + + /* Handle any locking parameters. */ + r = get_raid_locking_parms(ti, + argv + dl_parms + parity_parm + + parms.raid_parms + 4, + &locking_parms, &locking); + if (r) + return r; + + /* # of raid devices. */ + i = dl_parms + parity_parm + parms.raid_parms + locking_parms + 4; + if (sscanf(argv[i], "%d", &raid_devs) != 1 || + raid_devs < raid_type->minimal_devs) + TI_ERR("Invalid number of raid devices"); + + /* In case of RAID4, check parity drive index is in limits. */ + if (raid_type->level == raid4) { + /* Fetch index of parity device. */ + if (sscanf(argv[dl_parms + 3], "%d", &pi) != 1 || + (pi != -1 && !range_ok(pi, 0, raid_devs - 1))) + TI_ERR("Invalid RAID4 parity device index"); + } + + /* + * Index of device to initialize starts at 0 + * + * o -1 -> don't initialize a selected device; + * initialize parity conforming to algorithm + * o 0..raid_devs-1 -> initialize respective device + * (used for reconstruction of a replaced device) + */ + if (sscanf(argv[dl_parms + parity_parm + parms.raid_parms + + locking_parms + 5], "%d", &dev_to_init) != 1 || + !range_ok(dev_to_init, -1, raid_devs - 1)) + TI_ERR("Invalid number for raid device to initialize"); + + /* Check # of raid device arguments. */ + if (argc - dl_parms - parity_parm - parms.raid_parms - 6 != + 2 * raid_devs) + TI_ERR("Wrong number of raid device/offset arguments"); + + /* + * Check that the table length is devisable + * w/o rest by (raid_devs - parity_devs) + */ + if (!multiple(ti->len, raid_devs - raid_type->parity_devs, + §ors_per_dev)) + TI_ERR("Target length not divisible by number of data devices"); + + /* + * Check that the device size is + * devisable w/o rest by chunk size + */ + if (!multiple(sectors_per_dev, parms.chunk_size, &tmp)) + TI_ERR("Device length not divisible by chunk_size"); + + /**************************************************************** + * Now that we checked the constructor arguments -> + * let's allocate the RAID set + ****************************************************************/ + rs = context_alloc(raid_type, &parms, raid_devs, sectors_per_dev, + ti, dl_parms, argv); + if (IS_ERR(rs)) + return PTR_ERR(rs); + + + rs->set.dev_to_init = rs->set.dev_to_init_parm = dev_to_init; + rs->set.pi = rs->set.pi_parm = pi; + + /* Set RAID4 parity drive index. */ + if (raid_type->level == raid4) + rs->set.pi = (pi == -1) ? rs->set.data_devs : pi; + + recover_set_bandwidth(rs, parms.bandwidth); + + /* Use locking type to lock stripe access. */ + rs->locking = locking; + + /* Get the device/offset tupels. */ + argv += dl_parms + 6 + parity_parm + parms.raid_parms; + r = dev_parms(rs, argv, &i); + if (r) + goto err; + + /* Set backing device information (eg. read ahead). */ + rs_set_read_ahead(rs, 2 * rs->set.chunk_size, 4 /* stripes */); + rs_set_congested_fn(rs); /* Set congested function. */ + SetRSCheckOverwrite(rs); /* Allow chunk overwrite checks. */ + speed = xor_optimize(rs); /* Select best xor algorithm. */ + + /* Set for recovery of any nosync regions. */ + if (parms.recovery) + SetRSRecover(rs); + else { + /* + * Need to free recovery stripe(s) here in case + * of nosync, because xor_optimize uses one. + */ + set_start_recovery(rs); + set_end_recovery(rs); + stripe_recover_free(rs); + } + + /* + * Make sure that dm core only hands maximum io size + * length down and pays attention to io boundaries. + */ + ti->max_io_len = rs->set.io_size; + ti->private = rs; + + /* Initialize work queue to handle this RAID set's io. */ + r = rs_workqueue_init(rs); + if (r) + goto err; + + rs_log(rs, speed); /* Log information about RAID set. */ + return 0; + +err: + context_free(rs, i); + return r; +} + +/* + * Destruct a raid mapping + */ +static void raid_dtr(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + + destroy_workqueue(rs->io.wq); + context_free(rs, rs->set.raid_devs); +} + +/* Raid mapping function. */ +static int raid_map(struct dm_target *ti, struct bio *bio) +{ + /* I don't want to waste stripe cache capacity. */ + if (bio_rw(bio) == READA) + return -EIO; + else { + struct raid_set *rs = ti->private; + + /* + * Get io reference to be waiting for to drop + * to zero on device suspension/destruction. + */ + io_get(rs); + bio->bi_sector -= ti->begin; /* Remap sector. */ + + /* Queue io to RAID set. */ + mutex_lock(&rs->io.in_lock); + bio_list_add(&rs->io.in, bio); + mutex_unlock(&rs->io.in_lock); + + /* Wake daemon to process input list. */ + wake_do_raid(rs); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_READ : S_BIOS_WRITE)); + return DM_MAPIO_SUBMITTED; /* Handle later. */ + } +} + +/* Device suspend. */ +static void raid_presuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + SetRSSuspend(rs); + + if (RSRecover(rs)) + dm_rh_stop_recovery(rs->recover.rh); + + cancel_delayed_work(&rs->io.dws_do_raid); + flush_workqueue(rs->io.wq); + wait_ios(rs); /* Wait for completion of all ios being processed. */ + + if (dl->type->presuspend && dl->type->presuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log presuspend failed"); +} + +static void raid_postsuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + if (dl->type->postsuspend && dl->type->postsuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log postsuspend failed"); + +} + +/* Device resume. */ +static void raid_resume(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct dm_dirty_log *dl = rec->dl; + + if (dl->type->resume && dl->type->resume(dl)) + /* Resume dirty log. */ + /* FIXME: need better error handling. */ + DMWARN("log resume failed"); + + rec->nr_regions_to_recover = + rec->nr_regions - dl->type->get_sync_count(dl); + + /* Restart any unfinished recovery. */ + if (RSRecover(rs)) { + set_start_recovery(rs); + dm_rh_start_recovery(rec->rh); + } + + ClearRSSuspend(rs); + wake_do_raid(rs); +} + +/* Return stripe cache size. */ +static unsigned sc_size(struct raid_set *rs) +{ + return to_sector(atomic_read(&rs->sc.stripes) * + (sizeof(struct stripe) + + (sizeof(struct stripe_chunk) + + (sizeof(struct page_list) + + to_bytes(rs->set.io_size) * + rs->set.raid_devs)) + + (rs->recover.end_jiffies ? + 0 : rs->recover.recovery_stripes * + to_bytes(rs->set.raid_devs * rs->recover.io_size)))); +} + +/* REMOVEME: status output for development. */ +static void raid_devel_stats(struct dm_target *ti, char *result, + unsigned *size, unsigned maxlen) +{ + unsigned sz = *size; + unsigned long j; + char buf[BDEVNAME_SIZE], *p; + struct stats_map *sm; + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct timespec ts; + + DMEMIT("%s %s %u\n", version, rs->xor.f->name, rs->xor.chunks); + DMEMIT("act_ios=%d ", io_ref(rs)); + DMEMIT("act_ios_max=%d\n", atomic_read(&rs->io.in_process_max)); + DMEMIT("act_stripes=%d ", sc_active(&rs->sc)); + DMEMIT("act_stripes_max=%d\n", + atomic_read(&rs->sc.active_stripes_max)); + + for (sm = stats_map; sm < ARRAY_END(stats_map); sm++) + DMEMIT("%s%d", sm->str, atomic_read(rs->stats + sm->type)); + + DMEMIT(" checkovr=%s\n", RSCheckOverwrite(rs) ? "on" : "off"); + DMEMIT("sc=%u/%u/%u/%u/%u/%u/%u\n", rs->set.chunk_size, + atomic_read(&rs->sc.stripes), rs->set.io_size, + rec->recovery_stripes, rec->io_size, rs->sc.hash.buckets, + sc_size(rs)); + + j = (rec->end_jiffies ? rec->end_jiffies : jiffies) - + rec->start_jiffies; + jiffies_to_timespec(j, &ts); + sprintf(buf, "%ld.%ld", ts.tv_sec, ts.tv_nsec); + p = strchr(buf, '.'); + p[3] = 0; + + DMEMIT("rg=%llu/%llu/%llu/%u %s\n", + (unsigned long long) rec->nr_regions_recovered, + (unsigned long long) rec->nr_regions_to_recover, + (unsigned long long) rec->nr_regions, rec->bandwidth, buf); + + *size = sz; +} + +static void raid_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) +{ + unsigned p, sz = 0; + char buf[BDEVNAME_SIZE]; + struct raid_set *rs = ti->private; + int raid_parms[] = { + rs->set.chunk_size_parm, + rs->sc.stripes_parm, + rs->set.io_size_parm, + rs->recover.io_size_parm, + rs->recover.bandwidth_parm, + -2, + rs->recover.recovery_stripes, + }; + + switch (type) { + case STATUSTYPE_INFO: + /* REMOVEME: statistics. */ + if (RSDevelStats(rs)) + raid_devel_stats(ti, result, &sz, maxlen); + + DMEMIT("%u ", rs->set.raid_devs); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev)); + + DMEMIT("1 "); + for (p = 0; p < rs->set.raid_devs; p++) { + DMEMIT("%c", !DevFailed(rs->dev + p) ? 'A' : 'D'); + + if (p == rs->set.pi) + DMEMIT("p"); + + if (rs->set.dev_to_init == p) + DMEMIT("i"); + } + + break; + case STATUSTYPE_TABLE: + sz = rs->recover.dl->type->status(rs->recover.dl, type, + result, maxlen); + DMEMIT("%s %u ", rs->set.raid_type->name, + rs->set.raid_parms); + + for (p = 0; p < rs->set.raid_parms; p++) { + if (raid_parms[p] > -2) + DMEMIT("%d ", raid_parms[p]); + else + DMEMIT("%s ", rs->recover.recovery ? + "sync" : "nosync"); + } + + DMEMIT("%u %d ", rs->set.raid_devs, rs->set.dev_to_init); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s %llu ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev), + (unsigned long long) rs->dev[p].start); + } +} + +/* + * Message interface + */ +enum raid_msg_actions { + act_bw, /* Recovery bandwidth switch. */ + act_dev, /* Device failure switch. */ + act_overwrite, /* Stripe overwrite check. */ + act_stats, /* Development statistics switch. */ + act_sc, /* Stripe cache switch. */ + + act_on, /* Set entity on. */ + act_off, /* Set entity off. */ + act_reset, /* Reset entity. */ + + act_set = act_on, /* Set # absolute. */ + act_grow = act_off, /* Grow # by an amount. */ + act_shrink = act_reset, /* Shrink # by an amount. */ +}; + +/* Turn a delta into an absolute value. */ +static int _absolute(unsigned long action, int act, int r) +{ + /* Make delta absolute. */ + if (test_bit(act_set, &action)) + ; + else if (test_bit(act_grow, &action)) + r += act; + else if (test_bit(act_shrink, &action)) + r = act - r; + else + r = -EINVAL; + + return r; +} + + /* Change recovery io bandwidth. */ +static int bandwidth_change(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + int act = rs->recover.bandwidth; + int bandwidth = DM_MSG_INT_ARG(msg); + + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + /* Make delta bandwidth absolute. */ + bandwidth = _absolute(msg->action, act, bandwidth); + + /* Check range. */ + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + recover_set_bandwidth(rs, bandwidth); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Set/reset development feature flags. */ +static int devel_flags(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + + if (test_bit(act_on, &msg->action)) + return test_and_set_bit(msg->spec->parm, + &rs->io.flags) ? -EPERM : 0; + else if (test_bit(act_off, &msg->action)) + return test_and_clear_bit(msg->spec->parm, + &rs->io.flags) ? 0 : -EPERM; + else if (test_bit(act_reset, &msg->action)) { + if (test_bit(act_stats, &msg->action)) { + stats_reset(rs); + goto on; + } else if (test_bit(act_overwrite, &msg->action)) { +on: + set_bit(msg->spec->parm, &rs->io.flags); + return 0; + } + } + + return -EINVAL; +} + +/* Resize the stripe cache. */ +static int sc_resize(struct dm_msg *msg, void *context) +{ + int act, stripes; + struct raid_set *rs = context; + + /* Deny permission in case the daemon is still resizing!. */ + if (atomic_read(&rs->sc.stripes_to_set)) + return -EPERM; + + stripes = DM_MSG_INT_ARG(msg); + if (stripes > 0) { + act = atomic_read(&rs->sc.stripes); + + /* Make delta stripes absolute. */ + stripes = _absolute(msg->action, act, stripes); + + /* + * Check range and that the # of stripes changes. + * We leave the resizing to the wroker. + */ + if (range_ok(stripes, STRIPES_MIN, STRIPES_MAX) && + stripes != atomic_read(&rs->sc.stripes)) { + atomic_set(&rs->sc.stripes_to_set, stripes); + wake_do_raid(rs); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Parse the RAID message action. */ +/* + * 'ba[ndwidth] {se[t],g[row],sh[rink]} #' # e.g 'ba se 50' + * "o[verwrite] {on,of[f],r[eset]}' # e.g. 'o of' + * 'sta[tistics] {on,of[f],r[eset]}' # e.g. 'stat of' + * 'str[ipecache] {se[t],g[row],sh[rink]} #' # e.g. 'stripe set 1024' + * + */ +static int raid_message(struct dm_target *ti, unsigned argc, char **argv) +{ + /* Variables to store the parsed parameters im. */ + static int i[2]; + static unsigned long *i_arg[] = { + (unsigned long *) i + 0, + (unsigned long *) i + 1, + }; + + /* Declare all message option strings. */ + static char *str_sgs[] = { "set", "grow", "shrink" }; + static char *str_oor[] = { "on", "off", "reset" }; + + /* Declare all actions. */ + static unsigned long act_sgs[] = { act_set, act_grow, act_shrink }; + static unsigned long act_oor[] = { act_on, act_off, act_reset }; + + /* Bandwidth option. */ + static struct dm_message_option bw_opt = { 3, str_sgs, act_sgs }; + static struct dm_message_argument bw_args = { + 1, i_arg, { dm_msg_int_t } + }; + + static struct dm_message_argument null_args = { + 0, NULL, { dm_msg_int_t } + }; + + /* Overwrite and statistics option. */ + static struct dm_message_option ovr_stats_opt = { 3, str_oor, act_oor }; + + /* Sripecache option. */ + static struct dm_message_option stripe_opt = { 3, str_sgs, act_sgs }; + + /* Declare messages. */ + static struct dm_msg_spec specs[] = { + { "bandwidth", act_bw, &bw_opt, &bw_args, + 0, bandwidth_change }, + { "overwrite", act_overwrite, &ovr_stats_opt, &null_args, + RS_CHECK_OVERWRITE, devel_flags }, + { "statistics", act_stats, &ovr_stats_opt, &null_args, + RS_DEVEL_STATS, devel_flags }, + { "stripecache", act_sc, &stripe_opt, &bw_args, + 0, sc_resize }, + }; + + /* The message for the parser. */ + struct dm_msg msg = { + .num_specs = ARRAY_SIZE(specs), + .specs = specs, + }; + + return dm_message_parse(TARGET, &msg, ti->private, argc, argv); +} +/* + * END message interface + */ + +static struct target_type raid_target = { + .name = "raid45", + .version = {1, 0, 0}, + .module = THIS_MODULE, + .ctr = raid_ctr, + .dtr = raid_dtr, + .map = raid_map, + .presuspend = raid_presuspend, + .postsuspend = raid_postsuspend, + .resume = raid_resume, + .status = raid_status, + .message = raid_message, +}; + +static void init_exit(const char *bad_msg, const char *good_msg, int r) +{ + if (r) + DMERR("Failed to %sregister target [%d]", bad_msg, r); + else + DMINFO("%s %s", good_msg, version); +} + +static int __init dm_raid_init(void) +{ + int r = dm_register_target(&raid_target); + + init_exit("", "initialized", r); + return r; +} + +static void __exit dm_raid_exit(void) +{ + dm_unregister_target(&raid_target); + init_exit("un", "exit", 0); +} + +/* Module hooks. */ +module_init(dm_raid_init); +module_exit(dm_raid_exit); + +MODULE_DESCRIPTION(DM_NAME " raid4/5 target"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("dm-raid4"); +MODULE_ALIAS("dm-raid5"); --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.h +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-raid4-5.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2006 Red Hat GmbH + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) ptr, str, strlen(ptr) + +enum lock_type { RAID45_EX, RAID45_SHARED }; + +struct dmraid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); + +}; + +#endif --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-raid45.h +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-raid45.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * Locking definitions for the device-mapper RAID45 target. + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) (ptr), (str), strlen((ptr)) + +enum dm_lock_type { DM_RAID45_EX, DM_RAID45_SHARED }; + +struct dm_raid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum dm_lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); +}; + +#endif --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-region-hash.c +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-region-hash.c @@ -0,0 +1,719 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * This file is released under the GPL. + */ + +#include +#include "dm-region-hash.h" + +#include +#include +#include +#include +#include + +#include "dm.h" + +#define DM_MSG_PREFIX "region hash" + +/*----------------------------------------------------------------- + * Region hash + * + * The mirror splits itself up into discrete regions. Each + * region can be in one of three states: clean, dirty, + * nosync. There is no need to put clean regions in the hash. + * + * In addition to being present in the hash table a region _may_ + * be present on one of three lists. + * + * clean_regions: Regions on this list have no io pending to + * them, they are in sync, we are no longer interested in them, + * they are dull. dm_rh_update_states() will remove them from the + * hash table. + * + * quiesced_regions: These regions have been spun down, ready + * for recovery. rh_recovery_start() will remove regions from + * this list and hand them to kmirrord, which will schedule the + * recovery io with kcopyd. + * + * recovered_regions: Regions that kcopyd has successfully + * recovered. dm_rh_update_states() will now schedule any delayed + * io, up the recovery_count, and remove the region from the + * hash. + * + * There are 2 locks: + * A rw spin lock 'hash_lock' protects just the hash table, + * this is never held in write mode from interrupt context, + * which I believe means that we only have to disable irqs when + * doing a write lock. + * + * An ordinary spin lock 'region_lock' that protects the three + * lists in the region_hash, with the 'state', 'list' and + * 'delayed_bios' fields of the regions. This is used from irq + * context, so all other uses will have to suspend local irqs. + *---------------------------------------------------------------*/ +struct dm_region_hash { + uint32_t region_size; + unsigned region_shift; + + /* holds persistent region state */ + struct dm_dirty_log *log; + + /* hash table */ + rwlock_t hash_lock; + mempool_t *region_pool; + unsigned mask; + unsigned nr_buckets; + unsigned prime; + unsigned shift; + struct list_head *buckets; + + unsigned max_recovery; /* Max # of regions to recover in parallel */ + + spinlock_t region_lock; + atomic_t recovery_in_flight; + struct semaphore recovery_count; + struct list_head clean_regions; + struct list_head quiesced_regions; + struct list_head recovered_regions; + struct list_head failed_recovered_regions; + + void *context; + sector_t target_begin; + + /* Callback function to schedule bios writes */ + void (*dispatch_bios)(void *context, struct bio_list *bios); + + /* Callback function to wakeup callers worker thread. */ + void (*wakeup_workers)(void *context); + + /* Callback function to wakeup callers recovery waiters. */ + void (*wakeup_all_recovery_waiters)(void *context); +}; + +struct dm_region { + struct dm_region_hash *rh; /* FIXME: can we get rid of this ? */ + region_t key; + int state; + + struct list_head hash_list; + struct list_head list; + + atomic_t pending; + struct bio_list delayed_bios; +}; + +/* + * Conversion fns + */ +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector) +{ + return sector >> rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_sector_to_region); + +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region) +{ + return region << rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_to_sector); + +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio) +{ + return dm_rh_sector_to_region(rh, bio->bi_sector - rh->target_begin); +} +// EXPORT_SYMBOL_GPL(dm_rh_bio_to_region); + +void *dm_rh_region_context(struct dm_region *reg) +{ + return reg->rh->context; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_context); + +region_t dm_rh_get_region_key(struct dm_region *reg) +{ + return reg->key; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_key); + +sector_t dm_rh_get_region_size(struct dm_region_hash *rh) +{ + return rh->region_size; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_size); + +/* + * FIXME: shall we pass in a structure instead of all these args to + * dm_region_hash_create()???? + */ +#define RH_HASH_MULT 2654435387U +#define RH_HASH_SHIFT 12 + +#define MIN_REGIONS 64 +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions) +{ + struct dm_region_hash *rh; + unsigned nr_buckets, max_buckets; + size_t i; + + /* + * Calculate a suitable number of buckets for our hash + * table. + */ + max_buckets = nr_regions >> 6; + for (nr_buckets = 128u; nr_buckets < max_buckets; nr_buckets <<= 1) + ; + nr_buckets >>= 1; + + rh = kmalloc(sizeof(*rh), GFP_KERNEL); + if (!rh) { + DMERR("unable to allocate region hash memory"); + return ERR_PTR(-ENOMEM); + } + + rh->context = context; + rh->dispatch_bios = dispatch_bios; + rh->wakeup_workers = wakeup_workers; + rh->wakeup_all_recovery_waiters = wakeup_all_recovery_waiters; + rh->target_begin = target_begin; + rh->max_recovery = max_recovery; + rh->log = log; + rh->region_size = region_size; + rh->region_shift = ffs(region_size) - 1; + rwlock_init(&rh->hash_lock); + rh->mask = nr_buckets - 1; + rh->nr_buckets = nr_buckets; + + rh->shift = RH_HASH_SHIFT; + rh->prime = RH_HASH_MULT; + + rh->buckets = vmalloc(nr_buckets * sizeof(*rh->buckets)); + if (!rh->buckets) { + DMERR("unable to allocate region hash bucket memory"); + kfree(rh); + return ERR_PTR(-ENOMEM); + } + + for (i = 0; i < nr_buckets; i++) + INIT_LIST_HEAD(rh->buckets + i); + + spin_lock_init(&rh->region_lock); + sema_init(&rh->recovery_count, 0); + atomic_set(&rh->recovery_in_flight, 0); + INIT_LIST_HEAD(&rh->clean_regions); + INIT_LIST_HEAD(&rh->quiesced_regions); + INIT_LIST_HEAD(&rh->recovered_regions); + INIT_LIST_HEAD(&rh->failed_recovered_regions); + + rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS, + sizeof(struct dm_region)); + if (!rh->region_pool) { + vfree(rh->buckets); + kfree(rh); + rh = ERR_PTR(-ENOMEM); + } + + return rh; +} +// EXPORT_SYMBOL_GPL(dm_region_hash_create); + +void dm_region_hash_destroy(struct dm_region_hash *rh) +{ + unsigned h; + struct dm_region *reg, *nreg; + + BUG_ON(!list_empty(&rh->quiesced_regions)); + for (h = 0; h < rh->nr_buckets; h++) { + list_for_each_entry_safe(reg, nreg, rh->buckets + h, + hash_list) { + BUG_ON(atomic_read(®->pending)); + mempool_free(reg, rh->region_pool); + } + } + + if (rh->log) + dm_dirty_log_destroy(rh->log); + + if (rh->region_pool) + mempool_destroy(rh->region_pool); + + vfree(rh->buckets); + kfree(rh); +} +// EXPORT_SYMBOL_GPL(dm_region_hash_destroy); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh) +{ + return rh->log; +} +// EXPORT_SYMBOL_GPL(dm_rh_dirty_log); + +static unsigned rh_hash(struct dm_region_hash *rh, region_t region) +{ + return (unsigned) ((region * rh->prime) >> rh->shift) & rh->mask; +} + +static struct dm_region *__rh_lookup(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + struct list_head *bucket = rh->buckets + rh_hash(rh, region); + + list_for_each_entry(reg, bucket, hash_list) + if (reg->key == region) + return reg; + + return NULL; +} + +static void __rh_insert(struct dm_region_hash *rh, struct dm_region *reg) +{ + list_add(®->hash_list, rh->buckets + rh_hash(rh, reg->key)); +} + +static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg, *nreg; + + nreg = mempool_alloc(rh->region_pool, GFP_ATOMIC); + if (unlikely(!nreg)) + nreg = kmalloc(sizeof(*nreg), GFP_NOIO | __GFP_NOFAIL); + + nreg->state = rh->log->type->in_sync(rh->log, region, 1) ? + DM_RH_CLEAN : DM_RH_NOSYNC; + nreg->rh = rh; + nreg->key = region; + INIT_LIST_HEAD(&nreg->list); + atomic_set(&nreg->pending, 0); + bio_list_init(&nreg->delayed_bios); + + write_lock_irq(&rh->hash_lock); + reg = __rh_lookup(rh, region); + if (reg) + /* We lost the race. */ + mempool_free(nreg, rh->region_pool); + else { + __rh_insert(rh, nreg); + if (nreg->state == DM_RH_CLEAN) { + spin_lock(&rh->region_lock); + list_add(&nreg->list, &rh->clean_regions); + spin_unlock(&rh->region_lock); + } + + reg = nreg; + } + write_unlock_irq(&rh->hash_lock); + + return reg; +} + +static struct dm_region *__rh_find(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + reg = __rh_lookup(rh, region); + if (!reg) { + read_unlock(&rh->hash_lock); + reg = __rh_alloc(rh, region); + read_lock(&rh->hash_lock); + } + + return reg; +} + +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block) +{ + int r; + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + if (reg) + return reg->state; + + /* + * The region wasn't in the hash, so we fall back to the + * dirty log. + */ + r = rh->log->type->in_sync(rh->log, region, may_block); + + /* + * Any error from the dirty log (eg. -EWOULDBLOCK) gets + * taken as a DM_RH_NOSYNC + */ + return r == 1 ? DM_RH_CLEAN : DM_RH_NOSYNC; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_state); + +static void complete_resync_work(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + rh->log->type->set_region_sync(rh->log, reg->key, success); + + /* + * Dispatch the bios before we call 'wake_up_all'. + * This is important because if we are suspending, + * we want to know that recovery is complete and + * the work queue is flushed. If we wake_up_all + * before we dispatch_bios (queue bios and call wake()), + * then we risk suspending before the work queue + * has been properly flushed. + */ + rh->dispatch_bios(rh->context, ®->delayed_bios); + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); + up(&rh->recovery_count); +} + +/* dm_rh_mark_nosync + * @ms + * @bio + * @done + * @error + * + * The bio was written on some mirror(s) but failed on other mirror(s). + * We can successfully endio the bio but should avoid the region being + * marked clean by setting the state DM_RH_NOSYNC. + * + * This function is _not_ safe in interrupt context! + */ +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error) +{ + unsigned long flags; + struct dm_dirty_log *log = rh->log; + struct dm_region *reg; + region_t region = dm_rh_bio_to_region(rh, bio); + int recovering = 0; + + /* We must inform the log that the sync count has changed. */ + log->type->set_region_sync(log, region, 0); + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + /* region hash entry should exist because write was in-flight */ + BUG_ON(!reg); + BUG_ON(!list_empty(®->list)); + + spin_lock_irqsave(&rh->region_lock, flags); + /* + * Possible cases: + * 1) DM_RH_DIRTY + * 2) DM_RH_NOSYNC: was dirty, other preceeding writes failed + * 3) DM_RH_RECOVERING: flushing pending writes + * Either case, the region should have not been connected to list. + */ + recovering = (reg->state == DM_RH_RECOVERING); + reg->state = DM_RH_NOSYNC; + BUG_ON(!list_empty(®->list)); + spin_unlock_irqrestore(&rh->region_lock, flags); + + bio_endio(bio, error); + if (recovering) + complete_resync_work(reg, 0); +} +// EXPORT_SYMBOL_GPL(dm_rh_mark_nosync); + +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled) +{ + struct dm_region *reg, *next; + + LIST_HEAD(clean); + LIST_HEAD(recovered); + LIST_HEAD(failed_recovered); + + /* + * Quickly grab the lists. + */ + write_lock_irq(&rh->hash_lock); + spin_lock(&rh->region_lock); + if (!list_empty(&rh->clean_regions)) { + list_splice_init(&rh->clean_regions, &clean); + + list_for_each_entry(reg, &clean, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->recovered_regions)) { + list_splice_init(&rh->recovered_regions, &recovered); + + list_for_each_entry(reg, &recovered, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->failed_recovered_regions)) { + list_splice_init(&rh->failed_recovered_regions, + &failed_recovered); + + list_for_each_entry(reg, &failed_recovered, list) + list_del(®->hash_list); + } + + spin_unlock(&rh->region_lock); + write_unlock_irq(&rh->hash_lock); + + /* + * All the regions on the recovered and clean lists have + * now been pulled out of the system, so no need to do + * any more locking. + */ + list_for_each_entry_safe(reg, next, &recovered, list) { + rh->log->type->clear_region(rh->log, reg->key); + complete_resync_work(reg, 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &failed_recovered, list) { + complete_resync_work(reg, errors_handled ? 0 : 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &clean, list) { + rh->log->type->clear_region(rh->log, reg->key); + mempool_free(reg, rh->region_pool); + } + + rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_update_states); + +void dm_rh_inc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + + spin_lock_irq(&rh->region_lock); + atomic_inc(®->pending); + + if (reg->state == DM_RH_CLEAN) { + reg->state = DM_RH_DIRTY; + list_del_init(®->list); /* take off the clean list */ + spin_unlock_irq(&rh->region_lock); + + rh->log->type->mark_region(rh->log, reg->key); + } else + spin_unlock_irq(&rh->region_lock); + + + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc); + +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios) +{ + struct bio *bio; + + for (bio = bios->head; bio; bio = bio->bi_next) + dm_rh_inc(rh, dm_rh_bio_to_region(rh, bio)); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc_pending); + +void dm_rh_dec(struct dm_region_hash *rh, region_t region) +{ + unsigned long flags; + struct dm_region *reg; + int should_wake = 0; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irqsave(&rh->region_lock, flags); + if (atomic_dec_and_test(®->pending)) { + /* + * There is no pending I/O for this region. + * We can move the region to corresponding list for next action. + * At this point, the region is not yet connected to any list. + * + * If the state is DM_RH_NOSYNC, the region should be kept off + * from clean list. + * The hash entry for DM_RH_NOSYNC will remain in memory + * until the region is recovered or the map is reloaded. + */ + + /* do nothing for DM_RH_NOSYNC */ + if (reg->state == DM_RH_RECOVERING) { + list_add_tail(®->list, &rh->quiesced_regions); + } else if (reg->state == DM_RH_DIRTY) { + reg->state = DM_RH_CLEAN; + list_add(®->list, &rh->clean_regions); + } + should_wake = 1; + } + spin_unlock_irqrestore(&rh->region_lock, flags); + + if (should_wake) + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_dec); + +/* + * Starts quiescing a region in preparation for recovery. + */ +static int __rh_recovery_prepare(struct dm_region_hash *rh) +{ + int r; + region_t region; + struct dm_region *reg; + + /* + * Ask the dirty log what's next. + */ + r = rh->log->type->get_resync_work(rh->log, ®ion); + if (r <= 0) + return r; + + /* + * Get this region, and start it quiescing by setting the + * recovering flag. + */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irq(&rh->region_lock); + reg->state = DM_RH_RECOVERING; + + /* Already quiesced ? */ + if (atomic_read(®->pending)) + list_del_init(®->list); + else + list_move(®->list, &rh->quiesced_regions); + + spin_unlock_irq(&rh->region_lock); + + return 1; +} + +void dm_rh_recovery_prepare(struct dm_region_hash *rh) +{ + /* Extra reference to avoid race with dm_rh_stop_recovery */ + atomic_inc(&rh->recovery_in_flight); + + while (!down_trylock(&rh->recovery_count)) { + atomic_inc(&rh->recovery_in_flight); + if (__rh_recovery_prepare(rh) <= 0) { + atomic_dec(&rh->recovery_in_flight); + up(&rh->recovery_count); + break; + } + } + + /* Drop the extra reference */ + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_prepare); + +/* + * Returns any quiesced regions. + */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh) +{ + struct dm_region *reg = NULL; + + spin_lock_irq(&rh->region_lock); + if (!list_empty(&rh->quiesced_regions)) { + reg = list_entry(rh->quiesced_regions.next, + struct dm_region, list); + list_del_init(®->list); /* remove from the quiesced list */ + } + spin_unlock_irq(&rh->region_lock); + + return reg; +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_start); + +void dm_rh_recovery_end(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + spin_lock_irq(&rh->region_lock); + if (success) + list_add(®->list, ®->rh->recovered_regions); + else { + reg->state = DM_RH_NOSYNC; + list_add(®->list, ®->rh->failed_recovered_regions); + } + spin_unlock_irq(&rh->region_lock); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_end); + +/* Return recovery in flight count. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh) +{ + return atomic_read(&rh->recovery_in_flight); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_in_flight); + +int dm_rh_flush(struct dm_region_hash *rh) +{ + return rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_flush); + +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, dm_rh_bio_to_region(rh, bio)); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay); + +void dm_rh_delay_by_region(struct dm_region_hash *rh, + struct bio *bio, region_t region) +{ + struct dm_region *reg; + + /* FIXME: locking. */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay_by_region); + +void dm_rh_stop_recovery(struct dm_region_hash *rh) +{ + int i; + + /* wait for any recovering regions */ + for (i = 0; i < rh->max_recovery; i++) + down(&rh->recovery_count); +} +// EXPORT_SYMBOL_GPL(dm_rh_stop_recovery); + +void dm_rh_start_recovery(struct dm_region_hash *rh) +{ + int i; + + for (i = 0; i < rh->max_recovery; i++) + up(&rh->recovery_count); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_start_recovery); + +MODULE_DESCRIPTION(DM_NAME " region hash"); +MODULE_AUTHOR("Joe Thornber/Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-4.4.0.orig/ubuntu/dm-raid4-5/dm-region-hash.h +++ linux-4.4.0/ubuntu/dm-raid4-5/dm-region-hash.h @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * Device-Mapper dirty region hash interface. + * + * This file is released under the GPL. + */ + +#ifndef DM_REGION_HASH_H +#define DM_REGION_HASH_H + +#include + +/*----------------------------------------------------------------- + * Region hash + *----------------------------------------------------------------*/ +struct dm_region_hash; +struct dm_region; + +/* + * States a region can have. + */ +enum dm_rh_region_states { + DM_RH_CLEAN = 0x01, /* No writes in flight. */ + DM_RH_DIRTY = 0x02, /* Writes in flight. */ + DM_RH_NOSYNC = 0x04, /* Out of sync. */ + DM_RH_RECOVERING = 0x08, /* Under resynchronization. */ +}; + +/* + * Region hash create/destroy. + */ +struct bio_list; +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions); +void dm_region_hash_destroy(struct dm_region_hash *rh); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh); + +/* + * Conversion functions. + */ +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio); +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region); +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector); +void *dm_rh_region_context(struct dm_region *reg); + +/* + * Get region size and key (ie. number of the region). + */ +sector_t dm_rh_get_region_size(struct dm_region_hash *rh); +region_t dm_rh_get_region_key(struct dm_region *reg); + +/* + * Get/set/update region state (and dirty log). + * + */ +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block); +void dm_rh_set_state(struct dm_region_hash *rh, region_t region, + enum dm_rh_region_states state, int may_block); + +/* Non-zero errors_handled leaves the state of the region NOSYNC */ +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled); + +/* Flush the region hash and dirty log. */ +int dm_rh_flush(struct dm_region_hash *rh); + +/* Inc/dec pending count on regions. */ +void dm_rh_inc(struct dm_region_hash *rh, region_t region); +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios); +void dm_rh_dec(struct dm_region_hash *rh, region_t region); + +/* Delay bios on regions. */ +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio); +void dm_rh_delay_by_region(struct dm_region_hash *rh, struct bio *bio, + region_t region); + +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error); + +/* + * Region recovery control. + */ + +/* Prepare some regions for recovery by starting to quiesce them. */ +void dm_rh_recovery_prepare(struct dm_region_hash *rh); + +/* Try fetching a quiesced region for recovery. */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh); + +/* Report recovery end on a region. */ +void dm_rh_recovery_end(struct dm_region *reg, int error); + +/* Returns number of regions with recovery work outstanding. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh); + +/* Start/stop recovery. */ +void dm_rh_start_recovery(struct dm_region_hash *rh); +void dm_rh_stop_recovery(struct dm_region_hash *rh); + +#endif /* DM_REGION_HASH_H */ --- linux-4.4.0.orig/ubuntu/include/Kbuild +++ linux-4.4.0/ubuntu/include/Kbuild @@ -0,0 +1,2 @@ + + --- linux-4.4.0.orig/ubuntu/include/README +++ linux-4.4.0/ubuntu/include/README @@ -0,0 +1,4 @@ +Only use this directory for things which need to share their headers with +other parts of the kernel or other modules in ubuntu/ + +Otherwise, keep them local to the module directory. --- linux-4.4.0.orig/ubuntu/vbox-update +++ linux-4.4.0/ubuntu/vbox-update @@ -0,0 +1,49 @@ +#!/bin/bash +# +# vbox-update + +# +# NOTE: update vbox/BOM if you get the source from anywhere other than +# the archive. +# +# To update: +# TMP=$HOME/tmp +# wget -O $TMP/virtualbox-guest-dkms.deb http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_4.3.22-dfsg-1_all.deb +# dpkg-deb -R $TMP/virtualbox-guest-dkms.deb $TMP/virtualbox-guest-update +# vbox-update $TMP/virtualbox-guest-update +# +# To test build: +# fakeroot debian/rules prepare-generic +# make O=debian/build/build-generic/ ubuntu/vbox/vboxguest/vboxguest.ko ubuntu/vbox/vboxvideo/vboxvideo.ko ubuntu/vbox/vboxsf/vboxsf.ko +# + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +vbox="$1" + +# Update vbox ... +git rm -rf vbox +mkdir vbox +cp -rp "$vbox/usr/src/"*/* vbox + +# Work out what version this represents. +ver=`awk '($1 == "Version:") { print $2 }' <"$vbox/DEBIAN/control"` + +# Fix up the KBUILD_EXTMOD as we are not building externally. +for make in vbox/*/Makefile +do + sed -i -e '1iKBUILD_EXTMOD=${srctree}/ubuntu/vbox' $make +done + +# Record the version number and nominal source. +{ + echo "Source: http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_${ver}_all.deb" + echo "Version: $ver" +} >vbox/BOM + +git add vbox +{ + echo "UBUNTU: ubuntu: vbox -- update to $ver" +} | git commit -s -F - --- linux-4.4.0.orig/ubuntu/vbox/BOM +++ linux-4.4.0/ubuntu/vbox/BOM @@ -0,0 +1,2 @@ +Source: http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_5.0.14-dfsg-2_all.deb +Version: 5.0.14-dfsg-2 --- linux-4.4.0.orig/ubuntu/vbox/Makefile +++ linux-4.4.0/ubuntu/vbox/Makefile @@ -0,0 +1,3 @@ +.NOTPARALLEL: + +obj-m = vboxguest/ vboxsf/ vboxvideo/ --- linux-4.4.0.orig/ubuntu/vbox/dkms.conf +++ linux-4.4.0/ubuntu/vbox/dkms.conf @@ -0,0 +1,13 @@ +PACKAGE_NAME="virtualbox-guest" +PACKAGE_VERSION="5.0.0" +CLEAN="rm -f *.*o" +BUILT_MODULE_NAME[0]="vboxguest" +BUILT_MODULE_LOCATION[0]="vboxguest" +DEST_MODULE_LOCATION[0]="/updates" +BUILT_MODULE_NAME[1]="vboxsf" +BUILT_MODULE_LOCATION[1]="vboxsf" +DEST_MODULE_LOCATION[1]="/updates" +BUILT_MODULE_NAME[2]="vboxvideo" +BUILT_MODULE_LOCATION[2]="vboxvideo" +DEST_MODULE_LOCATION[2]="/updates" +AUTOINSTALL="yes" --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VBoxGuest.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VBoxGuest.h @@ -0,0 +1,565 @@ +/** @file + * VBoxGuest - VirtualBox Guest Additions Driver Interface. (ADD,DEV) + * + * @remarks This is in the process of being split up and usage cleaned up. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuest_h +#define ___VBox_VBoxGuest_h + +#include +#include +#include +#include +#include + + +/** @defgroup grp_vboxguest VirtualBox Guest Additions Device Driver + * + * Also know as VBoxGuest. + * + * @{ + */ + +/** @defgroup grp_vboxguest_ioc VirtualBox Guest Additions Driver Interface + * @{ + */ + +/** @todo It would be nice if we could have two defines without paths. */ + +/** @def VBOXGUEST_DEVICE_NAME + * The support device name. */ +/** @def VBOXGUEST_USER_DEVICE_NAME + * The support device name of the user accessible device node. */ + +#if defined(RT_OS_OS2) +# define VBOXGUEST_DEVICE_NAME "\\Dev\\VBoxGst$" + +#elif defined(RT_OS_WINDOWS) +# define VBOXGUEST_DEVICE_NAME "\\\\.\\VBoxGuest" + +/** The support service name. */ +# define VBOXGUEST_SERVICE_NAME "VBoxGuest" +/** Global name for Win2k+ */ +# define VBOXGUEST_DEVICE_NAME_GLOBAL "\\\\.\\Global\\VBoxGuest" +/** Win32 driver name */ +# define VBOXGUEST_DEVICE_NAME_NT L"\\Device\\VBoxGuest" +/** Device name. */ +# define VBOXGUEST_DEVICE_NAME_DOS L"\\DosDevices\\VBoxGuest" + +#elif defined(RT_OS_HAIKU) +# define VBOXGUEST_DEVICE_NAME "/dev/misc/vboxguest" + +#else /* (PORTME) */ +# define VBOXGUEST_DEVICE_NAME "/dev/vboxguest" +# if defined(RT_OS_LINUX) +# define VBOXGUEST_USER_DEVICE_NAME "/dev/vboxuser" +# endif +#endif + +#ifndef VBOXGUEST_USER_DEVICE_NAME +# define VBOXGUEST_USER_DEVICE_NAME VBOXGUEST_DEVICE_NAME +#endif + +/** Fictive start address of the hypervisor physical memory for MmMapIoSpace. */ +#define VBOXGUEST_HYPERVISOR_PHYSICAL_START UINT32_C(0xf8000000) + +#ifdef RT_OS_DARWIN +/** Cookie used to fend off some unwanted clients to the IOService. */ +# define VBOXGUEST_DARWIN_IOSERVICE_COOKIE UINT32_C(0x56426f78) /* 'VBox' */ +#endif + +#if !defined(IN_RC) && !defined(IN_RING0_AGNOSTIC) && !defined(IPRT_NO_CRT) + +/** @name VBoxGuest IOCTL codes and structures. + * + * The range 0..15 is for basic driver communication. + * The range 16..31 is for HGCM communication. + * The range 32..47 is reserved for future use. + * The range 48..63 is for OS specific communication. + * The 7th bit is reserved for future hacks. + * The 8th bit is reserved for distinguishing between 32-bit and 64-bit + * processes in future 64-bit guest additions. + * + * @remarks When creating new IOCtl interfaces keep in mind that not all OSes supports + * reporting back the output size. (This got messed up a little bit in VBoxDrv.) + * + * The request size is also a little bit tricky as it's passed as part of the + * request code on unix. The size field is 14 bits on Linux, 12 bits on *BSD, + * 13 bits Darwin, and 8-bits on Solaris. All the BSDs and Darwin kernels + * will make use of the size field, while Linux and Solaris will not. We're of + * course using the size to validate and/or map/lock the request, so it has + * to be valid. + * + * For Solaris we will have to do something special though, 255 isn't + * sufficient for all we need. A 4KB restriction (BSD) is probably not + * too problematic (yet) as a general one. + * + * More info can be found in SUPDRVIOC.h and related sources. + * + * @remarks If adding interfaces that only has input or only has output, some new macros + * needs to be created so the most efficient IOCtl data buffering method can be + * used. + * @{ + */ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define VBOXGUEST_IOCTL_FLAG 128 +#elif defined(RT_ARCH_X86) || defined(RT_ARCH_SPARC) +# define VBOXGUEST_IOCTL_FLAG 0 +#else +# error "dunno which arch this is!" +#endif +/** @} */ + +/** Ring-3 request wrapper for big requests. + * + * This is necessary because the ioctl number scheme on many Unixy OSes (esp. Solaris) + * only allows a relatively small size to be encoded into the request. So, for big + * request this generic form is used instead. */ +typedef struct VBGLBIGREQ +{ + /** Magic value (VBGLBIGREQ_MAGIC). */ + uint32_t u32Magic; + /** The size of the data buffer. */ + uint32_t cbData; + /** The user address of the data buffer. */ + RTR3PTR pvDataR3; +#if HC_ARCH_BITS == 32 + uint32_t u32Padding; +#endif +/** @todo r=bird: We need a 'rc' field for passing VBox status codes. Reused + * some input field as rc on output. */ +} VBGLBIGREQ; +/** Pointer to a request wrapper for solaris guests. */ +typedef VBGLBIGREQ *PVBGLBIGREQ; +/** Pointer to a const request wrapper for solaris guests. */ +typedef const VBGLBIGREQ *PCVBGLBIGREQ; + +/** The VBGLBIGREQ::u32Magic value (Ryuu Murakami). */ +#define VBGLBIGREQ_MAGIC 0x19520219 + + +#if defined(RT_OS_WINDOWS) +/** @todo Remove IOCTL_CODE later! Integrate it in VBOXGUEST_IOCTL_CODE below. */ +/** @todo r=bird: IOCTL_CODE is supposedly defined in some header included by Windows.h or ntddk.h, which is why it wasn't in the #if 0 earlier. See HostDrivers/Support/SUPDrvIOC.h... */ +# define IOCTL_CODE(DeviceType, Function, Method, Access, DataSize_ignored) \ + ( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) +# define VBOXGUEST_IOCTL_CODE_(Function, Size) IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2048 + (Function), METHOD_BUFFERED, FILE_WRITE_ACCESS, 0) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_OS2) + /* No automatic buffering, size not encoded. */ +# define VBOXGUEST_IOCTL_CATEGORY 0xc2 +# define VBOXGUEST_IOCTL_CODE_(Function, Size) ((unsigned char)(Function)) +# define VBOXGUEST_IOCTL_CATEGORY_FAST 0xc3 /**< Also defined in VBoxGuestA-os2.asm. */ +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) ((unsigned char)(Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_SOLARIS) + /* No automatic buffering, size limited to 255 bytes => use VBGLBIGREQ for everything. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOWRN('V', (Function), sizeof(VBGLBIGREQ)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_LINUX) + /* No automatic buffering, size limited to 16KB. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOC(_IOC_READ|_IOC_WRITE, 'V', (Function), (Size)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) VBOXGUEST_IOCTL_CODE_(_IOC_NR((Code)), 0) + +#elif defined(RT_OS_HAIKU) + /* No automatic buffering, size not encoded. */ + /** @todo do something better */ +# define VBOXGUEST_IOCTL_CODE_(Function, Size) (0x56420000 | (Function)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) (0x56420000 | (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_FREEBSD) /** @todo r=bird: Please do it like SUPDRVIOC to keep it as similar as possible. */ +# include + +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOWR('V', (Function), VBGLBIGREQ) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) IOCBASECMD(Code) + +#else /* BSD Like */ + /* Automatic buffering, size limited to 4KB on *BSD and 8KB on Darwin - commands the limit, 4KB. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOC(IOC_INOUT, 'V', (Function), (Size)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO('V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(uIOCtl) ( (uIOCtl) & ~_IOC(0,0,0,IOCPARM_MASK) ) +#endif + +#define VBOXGUEST_IOCTL_CODE(Function, Size) VBOXGUEST_IOCTL_CODE_((Function) | VBOXGUEST_IOCTL_FLAG, Size) +#define VBOXGUEST_IOCTL_CODE_FAST(Function) VBOXGUEST_IOCTL_CODE_FAST_((Function) | VBOXGUEST_IOCTL_FLAG) + +/* Define 32 bit codes to support 32 bit applications requests in the 64 bit guest driver. */ +#ifdef RT_ARCH_AMD64 +# define VBOXGUEST_IOCTL_CODE_32(Function, Size) VBOXGUEST_IOCTL_CODE_(Function, Size) +# define VBOXGUEST_IOCTL_CODE_FAST_32(Function) VBOXGUEST_IOCTL_CODE_FAST_(Function) +#endif /* RT_ARCH_AMD64 */ + + + +/** IOCTL to VBoxGuest to query the VMMDev IO port region start. + * @remarks Ring-0 only. */ +#define VBOXGUEST_IOCTL_GETVMMDEVPORT VBOXGUEST_IOCTL_CODE(1, sizeof(VBoxGuestPortInfo)) + +#pragma pack(4) +typedef struct VBoxGuestPortInfo +{ + uint32_t portAddress; + struct VMMDevMemory *pVMMDevMemory; +} VBoxGuestPortInfo; + + +/** IOCTL to VBoxGuest to wait for a VMMDev host notification */ +#define VBOXGUEST_IOCTL_WAITEVENT VBOXGUEST_IOCTL_CODE_(2, sizeof(VBoxGuestWaitEventInfo)) + +/** @name Result codes for VBoxGuestWaitEventInfo::u32Result + * @{ + */ +/** Successful completion, an event occurred. */ +#define VBOXGUEST_WAITEVENT_OK (0) +/** Successful completion, timed out. */ +#define VBOXGUEST_WAITEVENT_TIMEOUT (1) +/** Wait was interrupted. */ +#define VBOXGUEST_WAITEVENT_INTERRUPTED (2) +/** An error occurred while processing the request. */ +#define VBOXGUEST_WAITEVENT_ERROR (3) +/** @} */ + +/** Input and output buffers layout of the IOCTL_VBOXGUEST_WAITEVENT */ +typedef struct VBoxGuestWaitEventInfo +{ + /** timeout in milliseconds */ + uint32_t u32TimeoutIn; + /** events to wait for */ + uint32_t u32EventMaskIn; + /** result code */ + uint32_t u32Result; + /** events occurred */ + uint32_t u32EventFlagsOut; +} VBoxGuestWaitEventInfo; +AssertCompileSize(VBoxGuestWaitEventInfo, 16); + + +/** IOCTL to VBoxGuest to perform a VMM request + * @remark The data buffer for this IOCtl has an variable size, keep this in mind + * on systems where this matters. */ +#define VBOXGUEST_IOCTL_VMMREQUEST(Size) VBOXGUEST_IOCTL_CODE_(3, (Size)) + + +/** IOCTL to VBoxGuest to control event filter mask. */ +#define VBOXGUEST_IOCTL_CTL_FILTER_MASK VBOXGUEST_IOCTL_CODE_(4, sizeof(VBoxGuestFilterMaskInfo)) + +/** Input and output buffer layout of the IOCTL_VBOXGUEST_CTL_FILTER_MASK. */ +typedef struct VBoxGuestFilterMaskInfo +{ + uint32_t u32OrMask; + uint32_t u32NotMask; +} VBoxGuestFilterMaskInfo; +AssertCompileSize(VBoxGuestFilterMaskInfo, 8); +#pragma pack() + +/** IOCTL to VBoxGuest to interrupt (cancel) any pending WAITEVENTs and return. + * Handled inside the guest additions and not seen by the host at all. + * @see VBOXGUEST_IOCTL_WAITEVENT */ +#define VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS VBOXGUEST_IOCTL_CODE_(5, 0) + +/** IOCTL to VBoxGuest to perform backdoor logging. + * The argument is a string buffer of the specified size. */ +#define VBOXGUEST_IOCTL_LOG(Size) VBOXGUEST_IOCTL_CODE_(6, (Size)) + +/** IOCTL to VBoxGuest to check memory ballooning. + * The guest kernel module / device driver will ask the host for the current size of + * the balloon and adjust the size. Or it will set fHandledInR0 = false and R3 is + * responsible for allocating memory and calling R0 (VBOXGUEST_IOCTL_CHANGE_BALLOON). */ +#define VBOXGUEST_IOCTL_CHECK_BALLOON VBOXGUEST_IOCTL_CODE_(7, sizeof(VBoxGuestCheckBalloonInfo)) + +/** Output buffer layout of the VBOXGUEST_IOCTL_CHECK_BALLOON. */ +typedef struct VBoxGuestCheckBalloonInfo +{ + /** The size of the balloon in chunks of 1MB. */ + uint32_t cBalloonChunks; + /** false = handled in R0, no further action required. + * true = allocate balloon memory in R3. */ + uint32_t fHandleInR3; +} VBoxGuestCheckBalloonInfo; +AssertCompileSize(VBoxGuestCheckBalloonInfo, 8); + + +/** IOCTL to VBoxGuest to supply or revoke one chunk for ballooning. + * The guest kernel module / device driver will lock down supplied memory or + * unlock reclaimed memory and then forward the physical addresses of the + * changed balloon chunk to the host. */ +#define VBOXGUEST_IOCTL_CHANGE_BALLOON VBOXGUEST_IOCTL_CODE_(8, sizeof(VBoxGuestChangeBalloonInfo)) + +/** Input buffer layout of the VBOXGUEST_IOCTL_CHANGE_BALLOON request. + * Information about a memory chunk used to inflate or deflate the balloon. */ +typedef struct VBoxGuestChangeBalloonInfo +{ + /** Address of the chunk. */ + uint64_t u64ChunkAddr; + /** true = inflate, false = deflate. */ + uint32_t fInflate; + /** Alignment padding. */ + uint32_t u32Align; +} VBoxGuestChangeBalloonInfo; +AssertCompileSize(VBoxGuestChangeBalloonInfo, 16); + +/** IOCTL to VBoxGuest to write guest core. */ +#define VBOXGUEST_IOCTL_WRITE_CORE_DUMP VBOXGUEST_IOCTL_CODE(9, sizeof(VBoxGuestWriteCoreDump)) + +/** Input and output buffer layout of the VBOXGUEST_IOCTL_WRITE_CORE + * request. */ +typedef struct VBoxGuestWriteCoreDump +{ + /** Flags (reserved, MBZ). */ + uint32_t fFlags; +} VBoxGuestWriteCoreDump; +AssertCompileSize(VBoxGuestWriteCoreDump, 4); + +/** IOCTL to VBoxGuest to update the mouse status features. */ +# define VBOXGUEST_IOCTL_SET_MOUSE_STATUS VBOXGUEST_IOCTL_CODE_(10, sizeof(uint32_t)) + +#ifdef VBOX_WITH_HGCM +/** IOCTL to VBoxGuest to connect to a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_CONNECT VBOXGUEST_IOCTL_CODE(16, sizeof(VBoxGuestHGCMConnectInfo)) + +/** IOCTL to VBoxGuest to disconnect from a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_DISCONNECT VBOXGUEST_IOCTL_CODE(17, sizeof(VBoxGuestHGCMDisconnectInfo)) + +/** IOCTL to VBoxGuest to make a call to a HGCM service. + * @see VBoxGuestHGCMCallInfo */ +# define VBOXGUEST_IOCTL_HGCM_CALL(Size) VBOXGUEST_IOCTL_CODE(18, (Size)) + +/** IOCTL to VBoxGuest to make a timed call to a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_CALL_TIMED(Size) VBOXGUEST_IOCTL_CODE(20, (Size)) + +/** IOCTL to VBoxGuest passed from the Kernel Mode driver, but containing a user mode data in VBoxGuestHGCMCallInfo + * the driver received from the UM. Called in the context of the process passing the data. + * @see VBoxGuestHGCMCallInfo */ +# define VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(Size) VBOXGUEST_IOCTL_CODE(21, (Size)) + +# ifdef RT_ARCH_AMD64 +/** @name IOCTL numbers that 32-bit clients, like the Windows OpenGL guest + * driver, will use when taking to a 64-bit driver. + * @remarks These are only used by the driver implementation! + * @{*/ +# define VBOXGUEST_IOCTL_HGCM_CONNECT_32 VBOXGUEST_IOCTL_CODE_32(16, sizeof(VBoxGuestHGCMConnectInfo)) +# define VBOXGUEST_IOCTL_HGCM_DISCONNECT_32 VBOXGUEST_IOCTL_CODE_32(17, sizeof(VBoxGuestHGCMDisconnectInfo)) +# define VBOXGUEST_IOCTL_HGCM_CALL_32(Size) VBOXGUEST_IOCTL_CODE_32(18, (Size)) +# define VBOXGUEST_IOCTL_HGCM_CALL_TIMED_32(Size) VBOXGUEST_IOCTL_CODE_32(20, (Size)) +/** @} */ +# endif /* RT_ARCH_AMD64 */ + +/** Get the pointer to the first HGCM parameter. */ +# define VBOXGUEST_HGCM_CALL_PARMS(a) ( (HGCMFunctionParameter *)((uint8_t *)(a) + sizeof(VBoxGuestHGCMCallInfo)) ) +/** Get the pointer to the first HGCM parameter in a 32-bit request. */ +# define VBOXGUEST_HGCM_CALL_PARMS32(a) ( (HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof(VBoxGuestHGCMCallInfo)) ) + +#endif /* VBOX_WITH_HGCM */ + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER +/** IOCTL to VBoxGuest to perform DPC latency tests, printing the result in + * the release log on the host. Takes no data, returns no data. */ +# define VBOXGUEST_IOCTL_DPC_LATENCY_CHECKER VBOXGUEST_IOCTL_CODE_(30, 0) +#endif + +/** IOCTL to for setting the mouse driver callback. (kernel only) */ +/** @note The callback will be called in interrupt context with the VBoxGuest + * device event spinlock held. */ +#define VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK VBOXGUEST_IOCTL_CODE(31, sizeof(VBoxGuestMouseSetNotifyCallback)) + +typedef DECLCALLBACK(void) FNVBOXGUESTMOUSENOTIFY(void *pfnUser); +typedef FNVBOXGUESTMOUSENOTIFY *PFNVBOXGUESTMOUSENOTIFY; + +/** Input buffer for VBOXGUEST_IOCTL_INTERNAL_SET_MOUSE_NOTIFY_CALLBACK. */ +typedef struct VBoxGuestMouseSetNotifyCallback +{ + /** + * Mouse notification callback. + * + * @param pvUser The callback argument. + */ + PFNVBOXGUESTMOUSENOTIFY pfnNotify; + /** The callback argument*/ + void *pvUser; +} VBoxGuestMouseSetNotifyCallback; + + +typedef enum VBOXGUESTCAPSACQUIRE_FLAGS +{ + VBOXGUESTCAPSACQUIRE_FLAGS_NONE = 0, + /* configures VBoxGuest to use the specified caps in Acquire mode, w/o making any caps acquisition/release. + * so far it is only possible to set acquire mode for caps, but not clear it, + * so u32NotMask is ignored for this request */ + VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE, + /* to ensure enum is 32bit*/ + VBOXGUESTCAPSACQUIRE_FLAGS_32bit = 0x7fffffff +} VBOXGUESTCAPSACQUIRE_FLAGS; + +typedef struct VBoxGuestCapsAquire +{ + /* result status + * VINF_SUCCESS - on success + * VERR_RESOURCE_BUSY - some caps in the u32OrMask are acquired by some other VBoxGuest connection. + * NOTE: no u32NotMask caps are cleaned in this case, i.e. no modifications are done on failure + * VER_INVALID_PARAMETER - invalid Caps are specified with either u32OrMask or u32NotMask. No modifications are done on failure. + */ + int32_t rc; + /* Acquire command */ + VBOXGUESTCAPSACQUIRE_FLAGS enmFlags; + /* caps to acquire, OR-ed VMMDEV_GUEST_SUPPORTS_XXX flags */ + uint32_t u32OrMask; + /* caps to release, OR-ed VMMDEV_GUEST_SUPPORTS_XXX flags */ + uint32_t u32NotMask; +} VBoxGuestCapsAquire; + +/** IOCTL to for Acquiring/Releasing Guest Caps + * This is used for multiple purposes: + * 1. By doing Acquire r3 client application (e.g. VBoxTray) claims it will use + * the given connection for performing operations like Seamles or Auto-resize, + * thus, if the application terminates, the driver will automatically cleanup the caps reported to host, + * so that host knows guest does not support them anymore + * 2. In a multy-user environment this will not allow r3 applications (like VBoxTray) + * running in different user sessions simultaneously to interfere with each other. + * An r3 client application (like VBoxTray) is responsible for Acquiring/Releasing caps properly as needed. + **/ +#define VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE VBOXGUEST_IOCTL_CODE(32, sizeof(VBoxGuestCapsAquire)) + +/** IOCTL to VBoxGuest to set guest capabilities. */ +#define VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES VBOXGUEST_IOCTL_CODE_(33, sizeof(VBoxGuestSetCapabilitiesInfo)) + +/** Input and output buffer layout of the VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES + * IOCtl. */ +typedef struct VBoxGuestSetCapabilitiesInfo +{ + uint32_t u32OrMask; + uint32_t u32NotMask; +} VBoxGuestSetCapabilitiesInfo; +AssertCompileSize(VBoxGuestSetCapabilitiesInfo, 8); + + +#ifdef RT_OS_OS2 + +/** + * The data buffer layout for the IDC entry point (AttachDD). + * + * @remark This is defined in multiple 16-bit headers / sources. + * Some places it's called VBGOS2IDC to short things a bit. + */ +typedef struct VBOXGUESTOS2IDCCONNECT +{ + /** VMMDEV_VERSION. */ + uint32_t u32Version; + /** Opaque session handle. */ + uint32_t u32Session; + + /** + * The 32-bit service entry point. + * + * @returns VBox status code. + * @param u32Session The above session handle. + * @param iFunction The requested function. + * @param pvData The input/output data buffer. The caller ensures that this + * cannot be swapped out, or that it's acceptable to take a + * page in fault in the current context. If the request doesn't + * take input or produces output, apssing NULL is okay. + * @param cbData The size of the data buffer. + * @param pcbDataReturned Where to store the amount of data that's returned. + * This can be NULL if pvData is NULL. + */ + DECLCALLBACKMEMBER(int, pfnServiceEP)(uint32_t u32Session, unsigned iFunction, void *pvData, size_t cbData, size_t *pcbDataReturned); + + /** The 16-bit service entry point for C code (cdecl). + * + * It's the same as the 32-bit entry point, but the types has + * changed to 16-bit equivalents. + * + * @code + * int far cdecl + * VBoxGuestOs2IDCService16(uint32_t u32Session, uint16_t iFunction, + * void far *fpvData, uint16_t cbData, uint16_t far *pcbDataReturned); + * @endcode + */ + RTFAR16 fpfnServiceEP; + + /** The 16-bit service entry point for Assembly code (register). + * + * This is just a wrapper around fpfnServiceEP to simplify calls + * from 16-bit assembly code. + * + * @returns (e)ax: VBox status code; cx: The amount of data returned. + * + * @param u32Session eax - The above session handle. + * @param iFunction dl - The requested function. + * @param pvData es:bx - The input/output data buffer. + * @param cbData cx - The size of the data buffer. + */ + RTFAR16 fpfnServiceAsmEP; +} VBOXGUESTOS2IDCCONNECT; +/** Pointer to VBOXGUESTOS2IDCCONNECT buffer. */ +typedef VBOXGUESTOS2IDCCONNECT *PVBOXGUESTOS2IDCCONNECT; + +/** OS/2 specific: IDC client disconnect request. + * + * This takes no input and it doesn't return anything. Obviously this + * is only recognized if it arrives thru the IDC service EP. + */ +# define VBOXGUEST_IOCTL_OS2_IDC_DISCONNECT VBOXGUEST_IOCTL_CODE(48, sizeof(uint32_t)) + +#endif /* RT_OS_OS2 */ + +#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD) + +/* Private IOCtls between user space and the kernel video driver. DRM private + * IOCtls always have the type 'd' and a number between 0x40 and 0x99 (0x9F?) */ + +# define VBOX_DRM_IOCTL(a) (0x40 + DRM_VBOX_ ## a) + +/** Stop using HGSMI in the kernel driver until it is re-enabled, so that a + * user-space driver can use it. It must be re-enabled before the kernel + * driver can be used again in a sensible way. */ +/** @note These IOCtls was removed from the code, but are left here as + * templates as we may need similar ones in future. */ +# define DRM_VBOX_DISABLE_HGSMI 0 +# define DRM_IOCTL_VBOX_DISABLE_HGSMI VBOX_DRM_IOCTL(DISABLE_HGSMI) +# define VBOXVIDEO_IOCTL_DISABLE_HGSMI _IO('d', DRM_IOCTL_VBOX_DISABLE_HGSMI) +/** Enable HGSMI in the kernel driver after it was previously disabled. */ +# define DRM_VBOX_ENABLE_HGSMI 1 +# define DRM_IOCTL_VBOX_ENABLE_HGSMI VBOX_DRM_IOCTL(ENABLE_HGSMI) +# define VBOXVIDEO_IOCTL_ENABLE_HGSMI _IO('d', DRM_IOCTL_VBOX_ENABLE_HGSMI) + +#endif /* RT_OS_LINUX || RT_OS_SOLARIS || RT_OS_FREEBSD */ + +#endif /* !defined(IN_RC) && !defined(IN_RING0_AGNOSTIC) && !defined(IPRT_NO_CRT) */ + +/** @} */ + +/** @} */ +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VBoxGuest2.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VBoxGuest2.h @@ -0,0 +1,112 @@ +/** @file + * VBoxGuest - VirtualBox Guest Additions Driver Interface, Mixed Up Mess. + * (ADD,DEV) + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuest2_h +#define ___VBox_VBoxGuest2_h + +#include + +#ifdef VBOX_WITH_HGCM +# include + +/** @addtogroup grp_vmmdev + * @{ */ + +/** + * HGCM connect info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CONNECT and in VbglR0. + * + * @ingroup grp_vboxguest + */ +# pragma pack(1) /* explicit packing for good measure. */ +typedef struct VBoxGuestHGCMConnectInfo +{ + int32_t result; /**< OUT */ + HGCMServiceLocation Loc; /**< IN */ + uint32_t u32ClientID; /**< OUT */ +} VBoxGuestHGCMConnectInfo; +AssertCompileSize(VBoxGuestHGCMConnectInfo, 4+4+128+4); +# pragma pack() + + +/** + * HGCM connect info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_DISCONNECT and in VbglR0. + * + * @ingroup grp_vboxguest + */ +typedef struct VBoxGuestHGCMDisconnectInfo +{ + int32_t result; /**< OUT */ + uint32_t u32ClientID; /**< IN */ +} VBoxGuestHGCMDisconnectInfo; +AssertCompileSize(VBoxGuestHGCMDisconnectInfo, 8); + +/** + * HGCM call info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CALL. + * + * @ingroup grp_vboxguest + */ +typedef struct VBoxGuestHGCMCallInfo +{ + int32_t result; /**< OUT Host HGCM return code.*/ + uint32_t u32ClientID; /**< IN The id of the caller. */ + uint32_t u32Function; /**< IN Function number. */ + uint32_t cParms; /**< IN How many parms. */ + /* Parameters follow in form HGCMFunctionParameter aParms[cParms] */ +} VBoxGuestHGCMCallInfo; +AssertCompileSize(VBoxGuestHGCMCallInfo, 16); + + +/** + * HGCM call info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CALL_TIMED. + * + * @ingroup grp_vboxguest + */ +# pragma pack(1) /* explicit packing for good measure. */ +typedef struct VBoxGuestHGCMCallInfoTimed +{ + uint32_t u32Timeout; /**< IN How long to wait for completion before cancelling the call. */ + uint32_t fInterruptible; /**< IN Is this request interruptible? */ + VBoxGuestHGCMCallInfo info; /**< IN/OUT The rest of the call information. Placed after the timeout + * so that the parameters follow as they would for a normal call. */ + /* Parameters follow in form HGCMFunctionParameter aParms[cParms] */ +} VBoxGuestHGCMCallInfoTimed; +AssertCompileSize(VBoxGuestHGCMCallInfoTimed, 8+16); +# pragma pack() + +/** @} */ + +#endif /* VBOX_WITH_HGCM */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VBoxGuestLib.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VBoxGuestLib.h @@ -0,0 +1,849 @@ +/** @file + * VBoxGuestLib - VirtualBox Guest Additions Library. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuestLib_h +#define ___VBox_VBoxGuestLib_h + +#include +#include +#include /* grumble */ +#ifdef IN_RING0 +# include +# include +#endif + + +/** @defgroup grp_vboxguest_lib VirtualBox Guest Additions Library + * @ingroup grp_vboxguest + * @{ + */ + +/** @page pg_guest_lib VirtualBox Guest Library + * + * This is a library for abstracting the additions driver interface. There are + * multiple versions of the library depending on the context. The main + * distinction is between kernel and user mode where the interfaces are very + * different. + * + * + * @section sec_guest_lib_ring0 Ring-0 + * + * In ring-0 there are two version: + * - VBOX_LIB_VBGL_R0_BASE / VBoxGuestR0LibBase for the VBoxGuest main driver, + * who is responsible for managing the VMMDev virtual hardware. + * - VBOX_LIB_VBGL_R0 / VBoxGuestR0Lib for other (client) guest drivers. + * + * + * The library source code and the header have a define VBGL_VBOXGUEST, which is + * defined for VBoxGuest and undefined for other drivers. Drivers must choose + * right library in their makefiles and set VBGL_VBOXGUEST accordingly. + * + * The libraries consists of: + * - common code to be used by both VBoxGuest and other drivers; + * - VBoxGuest specific code; + * - code for other drivers which communicate with VBoxGuest via an IOCTL. + * + * + * @section sec_guest_lib_ring3 Ring-3 + * + * There are more variants of the library here: + * - VBOX_LIB_VBGL_R3 / VBoxGuestR3Lib for programs. + * - VBOX_LIB_VBGL_R3_XFREE86 / VBoxGuestR3LibXFree86 for old style XFree + * drivers which uses special loader and or symbol resolving strategy. + * - VBOX_LIB_VBGL_R3_SHARED / VBoxGuestR3LibShared for shared objects / DLLs / + * Dylibs. + * + */ + +RT_C_DECLS_BEGIN + +/** HGCM client ID. + * @todo Promote to VBox/types.h */ +typedef uint32_t HGCMCLIENTID; + + +/** @defgroup grp_vboxguest_lib_r0 Ring-0 interface. + * @{ + */ +#if defined(IN_RING0) && !defined(IN_RING0_AGNOSTIC) +/** @def DECLR0VBGL + * Declare a VBGL ring-0 API with the right calling convention and visibilitiy. + * @param type Return type. */ +# ifdef RT_OS_DARWIN /** @todo probably apply to all, but don't want a forest fire on our hands right now. */ +# define DECLR0VBGL(type) DECLHIDDEN(type) VBOXCALL +# else +# define DECLR0VBGL(type) type VBOXCALL +# endif +# define DECLVBGL(type) DECLR0VBGL(type) + + +# ifdef VBGL_VBOXGUEST + +/** + * The library initialization function to be used by the main + * VBoxGuest system driver. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglInitPrimary(RTIOPORT portVMMDev, struct VMMDevMemory *pVMMDevMemory); + +# else + +/** + * The library initialization function to be used by all drivers + * other than the main VBoxGuest system driver. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglInitClient(void); + +# endif + +/** + * The library termination function. + */ +DECLVBGL(void) VbglTerminate(void); + + +/** @name Generic request functions. + * @{ + */ + +/** + * Allocate memory for generic request and initialize the request header. + * + * @returns VBox status code. + * @param ppReq Where to return the pointer to the allocated memory. + * @param cbReq Size of memory block required for the request. + * @param enmReqType the generic request type. + */ +DECLVBGL(int) VbglGRAlloc(VMMDevRequestHeader **ppReq, size_t cbReq, VMMDevRequestType enmReqType); + +/** + * Perform the generic request. + * + * @param pReq pointer the request structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglGRPerform(VMMDevRequestHeader *pReq); + +/** + * Free the generic request memory. + * + * @param pReq pointer the request structure. + * + * @return VBox status code. + */ +DECLVBGL(void) VbglGRFree(VMMDevRequestHeader *pReq); + +/** + * Verify the generic request header. + * + * @param pReq pointer the request header structure. + * @param cbReq size of the request memory block. It should be equal to the request size + * for fixed size requests. It can be greater than the request size for + * variable size requests. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglGRVerify(const VMMDevRequestHeader *pReq, size_t cbReq); +/** @} */ + +# ifdef VBOX_WITH_HGCM + +# ifdef VBGL_VBOXGUEST + +/** + * Callback function called from HGCM helpers when a wait for request + * completion IRQ is required. + * + * @returns VINF_SUCCESS, VERR_INTERRUPT or VERR_TIMEOUT. + * @param pvData VBoxGuest pointer to be passed to callback. + * @param u32Data VBoxGuest 32 bit value to be passed to callback. + */ +typedef DECLCALLBACK(int) FNVBGLHGCMCALLBACK(VMMDevHGCMRequestHeader *pHeader, void *pvData, uint32_t u32Data); +/** Pointer to a FNVBGLHGCMCALLBACK. */ +typedef FNVBGLHGCMCALLBACK *PFNVBGLHGCMCALLBACK; + +/** + * Perform a connect request. That is locate required service and + * obtain a client identifier for future access. + * + * @note This function can NOT handle cancelled requests! + * + * @param pConnectInfo The request data. + * @param pfnAsyncCallback Required pointer to function that is calledwhen + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ + +DECLR0VBGL(int) VbglR0HGCMInternalConnect(VBoxGuestHGCMConnectInfo *pConnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + + +/** + * Perform a disconnect request. That is tell the host that + * the client will not call the service anymore. + * + * @note This function can NOT handle cancelled requests! + * + * @param pDisconnectInfo The request data. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to + * callback. + * + * @return VBox status code. + */ + +DECLR0VBGL(int) VbglR0HGCMInternalDisconnect(VBoxGuestHGCMDisconnectInfo *pDisconnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** Call a HGCM service. + * + * @note This function can deal with cancelled requests. + * + * @param pCallInfo The request data. + * @param fFlags Flags, see VBGLR0_HGCMCALL_F_XXX. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ +DECLR0VBGL(int) VbglR0HGCMInternalCall(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** Call a HGCM service. (32 bits packet structure in a 64 bits guest) + * + * @note This function can deal with cancelled requests. + * + * @param pCallInfo The request data. + * @param fFlags Flags, see VBGLR0_HGCMCALL_F_XXX. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ +DECLR0VBGL(int) VbglR0HGCMInternalCall32(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** @name VbglR0HGCMInternalCall flags + * @{ */ +/** User mode request. + * Indicates that only user mode addresses are permitted as parameters. */ +#define VBGLR0_HGCMCALL_F_USER UINT32_C(0) +/** Kernel mode request. + * Indicates that kernel mode addresses are permitted as parameters. Whether or + * not user mode addresses are permitted is, unfortunately, OS specific. The + * following OSes allows user mode addresses: Windows, TODO. + */ +#define VBGLR0_HGCMCALL_F_KERNEL UINT32_C(1) +/** Mode mask. */ +#define VBGLR0_HGCMCALL_F_MODE_MASK UINT32_C(1) +/** @} */ + +# else /* !VBGL_VBOXGUEST */ + +struct VBGLHGCMHANDLEDATA; +typedef struct VBGLHGCMHANDLEDATA *VBGLHGCMHANDLE; + +/** @name HGCM functions + * @{ + */ + +/** + * Connect to a service. + * + * @param pHandle Pointer to variable that will hold a handle to be used + * further in VbglHGCMCall and VbglHGCMClose. + * @param pData Connection information structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMConnect(VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData); + +/** + * Connect to a service. + * + * @param handle Handle of the connection. + * @param pData Disconnect request information structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMDisconnect(VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData); + +/** + * Call to a service. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCall(VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData); + +/** + * Call to a service with user-mode data received by the calling driver from the User-Mode process. + * The call must be done in the context of a calling process. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCallUserData(VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData); + +/** + * Call to a service with timeout. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * @param cMillies Timeout in milliseconds. Use RT_INDEFINITE_WAIT to wait forever. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCallTimed(VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfoTimed *pData, uint32_t cbData); +/** @} */ + +/** @name Undocumented helpers for talking to the Chromium OpenGL Host Service + * @{ */ +typedef VBGLHGCMHANDLE VBGLCRCTLHANDLE; +DECLVBGL(int) VbglR0CrCtlCreate(VBGLCRCTLHANDLE *phCtl); +DECLVBGL(int) VbglR0CrCtlDestroy(VBGLCRCTLHANDLE hCtl); +DECLVBGL(int) VbglR0CrCtlConConnect(VBGLCRCTLHANDLE hCtl, HGCMCLIENTID *pidClient); +DECLVBGL(int) VbglR0CrCtlConDisconnect(VBGLCRCTLHANDLE hCtl, HGCMCLIENTID idClient); +DECLVBGL(int) VbglR0CrCtlConCall(VBGLCRCTLHANDLE hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo); +DECLVBGL(int) VbglR0CrCtlConCallUserData(VBGLCRCTLHANDLE hCtl, struct VBoxGuestHGCMCallInfo *pCallInfo, int cbCallInfo); +/** @} */ + +# endif /* !VBGL_VBOXGUEST */ + +# endif /* VBOX_WITH_HGCM */ + + +/** + * Initialize the heap. + * + * @returns VBox status code. + */ +DECLVBGL(int) VbglPhysHeapInit(void); + +/** + * Shutdown the heap. + */ +DECLVBGL(void) VbglPhysHeapTerminate(void); + +/** + * Allocate a memory block. + * + * @returns Virtual address of the allocated memory block. + * @param cbSize Size of block to be allocated. + */ +DECLVBGL(void *) VbglPhysHeapAlloc(uint32_t cbSize); + +/** + * Get physical address of memory block pointed by the virtual address. + * + * @note WARNING! + * The function does not acquire the Heap mutex! + * When calling the function make sure that the pointer is a valid one and + * is not being deallocated. This function can NOT be used for verifying + * if the given pointer is a valid one allocated from the heap. + * + * @param pv Virtual address of memory block. + * @returns Physical address of the memory block. + */ +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr(void *pv); + +/** + * Free a memory block. + * + * @param pv Virtual address of memory block. + */ +DECLVBGL(void) VbglPhysHeapFree(void *pv); + +DECLVBGL(int) VbglQueryVMMDevMemory(VMMDevMemory **ppVMMDevMemory); +DECLR0VBGL(bool) VbglR0CanUsePhysPageList(void); + +# ifndef VBOX_GUEST +/** @name Mouse + * @{ */ +DECLVBGL(int) VbglSetMouseNotifyCallback(PFNVBOXGUESTMOUSENOTIFY pfnNotify, void *pvUser); +DECLVBGL(int) VbglGetMouseStatus(uint32_t *pfFeatures, uint32_t *px, uint32_t *py); +DECLVBGL(int) VbglSetMouseStatus(uint32_t fFeatures); +/** @} */ +# endif /* VBOX_GUEST */ + +#endif /* IN_RING0 && !IN_RING0_AGNOSTIC */ + +/** @} */ + + +/** @defgroup grp_vboxguest_lib_r3 Ring-3 interface. + * @{ + */ +#ifdef IN_RING3 + +/** @def VBGLR3DECL + * Ring 3 VBGL declaration. + * @param type The return type of the function declaration. + */ +# define VBGLR3DECL(type) type VBOXCALL + +/** @name General-purpose functions + * @{ */ +VBGLR3DECL(int) VbglR3Init(void); +VBGLR3DECL(int) VbglR3InitUser(void); +VBGLR3DECL(void) VbglR3Term(void); +# ifdef ___iprt_time_h +VBGLR3DECL(int) VbglR3GetHostTime(PRTTIMESPEC pTime); +# endif +VBGLR3DECL(int) VbglR3InterruptEventWaits(void); +VBGLR3DECL(int) VbglR3WriteLog(const char *pch, size_t cch); +VBGLR3DECL(int) VbglR3CtlFilterMask(uint32_t fOr, uint32_t fNot); +VBGLR3DECL(int) VbglR3Daemonize(bool fNoChDir, bool fNoClose, bool fRespawn, unsigned *pcRespawn); +VBGLR3DECL(int) VbglR3PidFile(const char *pszPath, PRTFILE phFile); +VBGLR3DECL(void) VbglR3ClosePidFile(const char *pszPath, RTFILE hFile); +VBGLR3DECL(int) VbglR3SetGuestCaps(uint32_t fOr, uint32_t fNot); +VBGLR3DECL(int) VbglR3WaitEvent(uint32_t fMask, uint32_t cMillies, uint32_t *pfEvents); + +VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuestFacilityType Facility, VBoxGuestFacilityStatus StatusCurrent, + uint32_t fFlags); +VBGLR3DECL(int) VbglR3GetAdditionsVersion(char **ppszVer, char **ppszVerEx, char **ppszRev); +VBGLR3DECL(int) VbglR3GetAdditionsInstallationPath(char **ppszPath); +VBGLR3DECL(int) VbglR3GetSessionId(uint64_t *pu64IdSession); + +/** @} */ + +/** @name Shared clipboard + * @{ */ +VBGLR3DECL(int) VbglR3ClipboardConnect(HGCMCLIENTID *pidClient); +VBGLR3DECL(int) VbglR3ClipboardDisconnect(HGCMCLIENTID idClient); +VBGLR3DECL(int) VbglR3ClipboardGetHostMsg(HGCMCLIENTID idClient, uint32_t *pMsg, uint32_t *pfFormats); +VBGLR3DECL(int) VbglR3ClipboardReadData(HGCMCLIENTID idClient, uint32_t fFormat, void *pv, uint32_t cb, uint32_t *pcb); +VBGLR3DECL(int) VbglR3ClipboardReportFormats(HGCMCLIENTID idClient, uint32_t fFormats); +VBGLR3DECL(int) VbglR3ClipboardWriteData(HGCMCLIENTID idClient, uint32_t fFormat, void *pv, uint32_t cb); +/** @} */ + +/** @name Seamless mode + * @{ */ +VBGLR3DECL(int) VbglR3SeamlessSetCap(bool fState); +VBGLR3DECL(int) VbglR3SeamlessWaitEvent(VMMDevSeamlessMode *pMode); +VBGLR3DECL(int) VbglR3SeamlessSendRects(uint32_t cRects, PRTRECT pRects); +VBGLR3DECL(int) VbglR3SeamlessGetLastEvent(VMMDevSeamlessMode *pMode); + +/** @} */ + +/** @name Mouse + * @{ */ +VBGLR3DECL(int) VbglR3GetMouseStatus(uint32_t *pfFeatures, uint32_t *px, uint32_t *py); +VBGLR3DECL(int) VbglR3SetMouseStatus(uint32_t fFeatures); +/** @} */ + +/** @name Video + * @{ */ +VBGLR3DECL(int) VbglR3VideoAccelEnable(bool fEnable); +VBGLR3DECL(int) VbglR3VideoAccelFlush(void); +VBGLR3DECL(int) VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, + const void *pvImg, size_t cbImg); +VBGLR3DECL(int) VbglR3SetPointerShapeReq(struct VMMDevReqMousePointer *pReq); +/** @} */ + +/** @name Display + * @{ */ +/** The folder for the video mode hint unix domain socket on Unix-like guests. + * @note This can be safely changed as all users are rebuilt in lock-step. */ +#define VBGLR3HOSTDISPSOCKETPATH "/tmp/.VBoxService" +/** The path to the video mode hint unix domain socket on Unix-like guests. */ +#define VBGLR3HOSTDISPSOCKET VBGLR3VIDEOMODEHINTSOCKETPATH "/VideoModeHint" + +/** The folder for saving video mode hints to between sessions. */ +#define VBGLR3HOSTDISPSAVEDMODEPATH "/var/lib/VBoxGuestAdditions" +/** The path to the file for saving video mode hints to between sessions. */ +#define VBGLR3HOSTDISPSAVEDMODE VBGLR3HOSTDISPSAVEDMODEPATH "/SavedVideoModes" + +VBGLR3DECL(int) VbglR3GetDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits, uint32_t *piDisplay, + uint32_t *pdx, uint32_t *pdy, bool *pfEnabled, bool *pfChangeOrigin, bool fAck); +VBGLR3DECL(bool) VbglR3HostLikesVideoMode(uint32_t cx, uint32_t cy, uint32_t cBits); +VBGLR3DECL(int) VbglR3VideoModeGetHighestSavedScreen(unsigned *pcScreen); +VBGLR3DECL(int) VbglR3SaveVideoMode(unsigned cScreen, unsigned cx, unsigned cy, unsigned cBits, + unsigned x, unsigned y, bool fEnabled); +VBGLR3DECL(int) VbglR3RetrieveVideoMode(unsigned cScreen, unsigned *pcx, unsigned *pcy, unsigned *pcBits, + unsigned *px, unsigned *py, bool *pfEnabled); +/** @} */ + +/** @name VM Statistics + * @{ */ +VBGLR3DECL(int) VbglR3StatQueryInterval(uint32_t *pu32Interval); +VBGLR3DECL(int) VbglR3StatReport(VMMDevReportGuestStats *pReq); +/** @} */ + +/** @name Memory ballooning + * @{ */ +VBGLR3DECL(int) VbglR3MemBalloonRefresh(uint32_t *pcChunks, bool *pfHandleInR3); +VBGLR3DECL(int) VbglR3MemBalloonChange(void *pv, bool fInflate); +/** @} */ + +/** @name Core Dump + * @{ */ +VBGLR3DECL(int) VbglR3WriteCoreDump(void); + +/** @} */ + +# ifdef VBOX_WITH_GUEST_PROPS +/** @name Guest properties + * @{ */ +/** @todo Docs. */ +typedef struct VBGLR3GUESTPROPENUM VBGLR3GUESTPROPENUM; +/** @todo Docs. */ +typedef VBGLR3GUESTPROPENUM *PVBGLR3GUESTPROPENUM; +VBGLR3DECL(int) VbglR3GuestPropConnect(uint32_t *pidClient); +VBGLR3DECL(int) VbglR3GuestPropDisconnect(HGCMCLIENTID idClient); +VBGLR3DECL(int) VbglR3GuestPropWrite(HGCMCLIENTID idClient, const char *pszName, const char *pszValue, const char *pszFlags); +VBGLR3DECL(int) VbglR3GuestPropWriteValue(HGCMCLIENTID idClient, const char *pszName, const char *pszValue); +VBGLR3DECL(int) VbglR3GuestPropWriteValueV(HGCMCLIENTID idClient, const char *pszName, + const char *pszValueFormat, va_list va) RT_IPRT_FORMAT_ATTR(3, 0); +VBGLR3DECL(int) VbglR3GuestPropWriteValueF(HGCMCLIENTID idClient, const char *pszName, + const char *pszValueFormat, ...) RT_IPRT_FORMAT_ATTR(3, 4); +VBGLR3DECL(int) VbglR3GuestPropRead(HGCMCLIENTID idClient, const char *pszName, void *pvBuf, uint32_t cbBuf, char **ppszValue, + uint64_t *pu64Timestamp, char **ppszFlags, uint32_t *pcbBufActual); +VBGLR3DECL(int) VbglR3GuestPropReadValue(uint32_t ClientId, const char *pszName, char *pszValue, uint32_t cchValue, + uint32_t *pcchValueActual); +VBGLR3DECL(int) VbglR3GuestPropReadValueAlloc(HGCMCLIENTID idClient, const char *pszName, char **ppszValue); +VBGLR3DECL(void) VbglR3GuestPropReadValueFree(char *pszValue); +VBGLR3DECL(int) VbglR3GuestPropEnumRaw(HGCMCLIENTID idClient, const char *paszPatterns, char *pcBuf, uint32_t cbBuf, + uint32_t *pcbBufActual); +VBGLR3DECL(int) VbglR3GuestPropEnum(HGCMCLIENTID idClient, char const * const *ppaszPatterns, uint32_t cPatterns, + PVBGLR3GUESTPROPENUM *ppHandle, char const **ppszName, char const **ppszValue, + uint64_t *pu64Timestamp, char const **ppszFlags); +VBGLR3DECL(int) VbglR3GuestPropEnumNext(PVBGLR3GUESTPROPENUM pHandle, char const **ppszName, char const **ppszValue, + uint64_t *pu64Timestamp, char const **ppszFlags); +VBGLR3DECL(void) VbglR3GuestPropEnumFree(PVBGLR3GUESTPROPENUM pHandle); +VBGLR3DECL(int) VbglR3GuestPropDelete(HGCMCLIENTID idClient, const char *pszName); +VBGLR3DECL(int) VbglR3GuestPropDelSet(HGCMCLIENTID idClient, char const * const *papszPatterns, uint32_t cPatterns); +VBGLR3DECL(int) VbglR3GuestPropWait(HGCMCLIENTID idClient, const char *pszPatterns, void *pvBuf, uint32_t cbBuf, + uint64_t u64Timestamp, uint32_t cMillies, char ** ppszName, char **ppszValue, + uint64_t *pu64Timestamp, char **ppszFlags, uint32_t *pcbBufActual); +/** @} */ + +/** @name Guest user handling / reporting. + * @{ */ +VBGLR3DECL(int) VbglR3GuestUserReportState(const char *pszUser, const char *pszDomain, VBoxGuestUserState enmState, + uint8_t *pbDetails, uint32_t cbDetails); +/** @} */ + +/** @name Host version handling + * @{ */ +VBGLR3DECL(int) VbglR3HostVersionCheckForUpdate(HGCMCLIENTID idClient, bool *pfUpdate, char **ppszHostVersion, + char **ppszGuestVersion); +VBGLR3DECL(int) VbglR3HostVersionLastCheckedLoad(HGCMCLIENTID idClient, char **ppszVer); +VBGLR3DECL(int) VbglR3HostVersionLastCheckedStore(HGCMCLIENTID idClient, const char *pszVer); +/** @} */ +# endif /* VBOX_WITH_GUEST_PROPS defined */ + +# ifdef VBOX_WITH_SHARED_FOLDERS +/** @name Shared folders + * @{ */ +/** + * Structure containing mapping information for a shared folder. + */ +typedef struct VBGLR3SHAREDFOLDERMAPPING +{ + /** Mapping status. */ + uint32_t u32Status; + /** Root handle. */ + uint32_t u32Root; +} VBGLR3SHAREDFOLDERMAPPING; +/** Pointer to a shared folder mapping information structure. */ +typedef VBGLR3SHAREDFOLDERMAPPING *PVBGLR3SHAREDFOLDERMAPPING; +/** Pointer to a const shared folder mapping information structure. */ +typedef VBGLR3SHAREDFOLDERMAPPING const *PCVBGLR3SHAREDFOLDERMAPPING; + +VBGLR3DECL(int) VbglR3SharedFolderConnect(uint32_t *pidClient); +VBGLR3DECL(int) VbglR3SharedFolderDisconnect(HGCMCLIENTID idClient); +VBGLR3DECL(bool) VbglR3SharedFolderExists(HGCMCLIENTID idClient, const char *pszShareName); +VBGLR3DECL(int) VbglR3SharedFolderGetMappings(HGCMCLIENTID idClient, bool fAutoMountOnly, + PVBGLR3SHAREDFOLDERMAPPING *ppaMappings, uint32_t *pcMappings); +VBGLR3DECL(void) VbglR3SharedFolderFreeMappings(PVBGLR3SHAREDFOLDERMAPPING paMappings); +VBGLR3DECL(int) VbglR3SharedFolderGetName(HGCMCLIENTID idClient,uint32_t u32Root, char **ppszName); +VBGLR3DECL(int) VbglR3SharedFolderGetMountPrefix(char **ppszPrefix); +VBGLR3DECL(int) VbglR3SharedFolderGetMountDir(char **ppszDir); +/** @} */ +# endif /* VBOX_WITH_SHARED_FOLDERS defined */ + +# ifdef VBOX_WITH_GUEST_CONTROL +/** @name Guest control + * @{ */ + +/** + * Structure containing the context required for + * either retrieving or sending a HGCM guest control + * commands from or to the host. + * + * Note: Do not change parameter order without also + * adapting all structure initializers. + */ +typedef struct VBGLR3GUESTCTRLCMDCTX +{ + /** @todo This struct could be handy if we want to implement + * a second communication channel, e.g. via TCP/IP. + * Use a union for the HGCM stuff then. */ + + /** IN: HGCM client ID to use for + * communication. */ + uint32_t uClientID; + /** IN/OUT: Context ID to retrieve + * or to use. */ + uint32_t uContextID; + /** IN: Protocol version to use. */ + uint32_t uProtocol; + /** OUT: Number of parameters retrieved. */ + uint32_t uNumParms; +} VBGLR3GUESTCTRLCMDCTX, *PVBGLR3GUESTCTRLCMDCTX; + +/* General message handling on the guest. */ +VBGLR3DECL(int) VbglR3GuestCtrlConnect(uint32_t *pidClient); +VBGLR3DECL(int) VbglR3GuestCtrlDisconnect(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgFilterSet(uint32_t uClientId, uint32_t uValue, uint32_t uMaskAdd, uint32_t uMaskRemove); +VBGLR3DECL(int) VbglR3GuestCtrlMsgFilterUnset(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgReply(PVBGLR3GUESTCTRLCMDCTX pCtx, int rc); +VBGLR3DECL(int) VbglR3GuestCtrlMsgReplyEx(PVBGLR3GUESTCTRLCMDCTX pCtx, int rc, uint32_t uType, + void *pvPayload, uint32_t cbPayload); +VBGLR3DECL(int) VbglR3GuestCtrlMsgSkip(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgWaitFor(uint32_t uClientId, uint32_t *puMsg, uint32_t *puNumParms); +VBGLR3DECL(int) VbglR3GuestCtrlCancelPendingWaits(HGCMCLIENTID idClient); +/* Guest session handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlSessionClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t fFlags); +VBGLR3DECL(int) VbglR3GuestCtrlSessionNotify(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uType, uint32_t uResult); +VBGLR3DECL(int) VbglR3GuestCtrlSessionGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puProtocol, char *pszUser, uint32_t cbUser, + char *pszPassword, uint32_t cbPassword, char *pszDomain, uint32_t cbDomain, + uint32_t *pfFlags, uint32_t *pidSession); +VBGLR3DECL(int) VbglR3GuestCtrlSessionGetClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *pfFlags, uint32_t *pidSession); +/* Guest path handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlPathGetRename(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszSource, uint32_t cbSource, char *pszDest, + uint32_t cbDest, uint32_t *pfFlags); +/* Guest process execution. */ +VBGLR3DECL(int) VbglR3GuestCtrlProcGetStart(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszCmd, uint32_t cbCmd, uint32_t *pfFlags, + char *pszArgs, uint32_t cbArgs, uint32_t *puNumArgs, char *pszEnv, uint32_t *pcbEnv, + uint32_t *puNumEnvVars, char *pszUser, uint32_t cbUser, char *pszPassword, + uint32_t cbPassword, uint32_t *puTimeoutMS, uint32_t *puPriority, + uint64_t *puAffinity, uint32_t cbAffinity, uint32_t *pcAffinity); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetTerminate(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetInput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *pfFlags, void *pvData, + uint32_t cbData, uint32_t *pcbSize); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetOutput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *puHandle, uint32_t *pfFlags); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetWaitFor(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *puWaitFlags, + uint32_t *puTimeoutMS); +/* Guest native directory handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlDirGetRemove(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *pfFlags); +/* Guest native file handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlFileGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszFileName, uint32_t cbFileName, char *pszOpenMode, + uint32_t cbOpenMode, char *pszDisposition, uint32_t cbDisposition, char *pszSharing, + uint32_t cbSharing, uint32_t *puCreationMode, uint64_t *puOffset); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *puToRead); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetReadAt(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, + uint32_t *puToRead, uint64_t *poffRead); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetWrite(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, + void *pvData, uint32_t cbData, uint32_t *pcbActual); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetWriteAt(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, void *pvData, uint32_t cbData, + uint32_t *pcbActual, uint64_t *poffWrite); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetSeek(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, + uint32_t *puSeekMethod, uint64_t *poffSeek); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetTell(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); +/* Guest -> Host. */ +VBGLR3DECL(int) VbglR3GuestCtrlFileCbOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint32_t uFileHandle); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbError(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbWrite(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint32_t uWritten); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbSeek(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint64_t uOffActual); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbTell(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint64_t uOffActual); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbStatus(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uPID, uint32_t uStatus, uint32_t fFlags, + void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbOutput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uPID, uint32_t uHandle, uint32_t fFlags, + void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbStatusInput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t u32PID, uint32_t uStatus, + uint32_t fFlags, uint32_t cbWritten); + +/** @} */ +# endif /* VBOX_WITH_GUEST_CONTROL defined */ + +/** @name Auto-logon handling + * @{ */ +VBGLR3DECL(int) VbglR3AutoLogonReportStatus(VBoxGuestFacilityStatus enmStatus); +VBGLR3DECL(bool) VbglR3AutoLogonIsRemoteSession(void); +/** @} */ + +/** @name User credentials handling + * @{ */ +VBGLR3DECL(int) VbglR3CredentialsQueryAvailability(void); +VBGLR3DECL(int) VbglR3CredentialsRetrieve(char **ppszUser, char **ppszPassword, char **ppszDomain); +VBGLR3DECL(int) VbglR3CredentialsRetrieveUtf16(PRTUTF16 *ppwszUser, PRTUTF16 *ppwszPassword, PRTUTF16 *ppwszDomain); +VBGLR3DECL(void) VbglR3CredentialsDestroy(char *pszUser, char *pszPassword, char *pszDomain, uint32_t cPasses); +VBGLR3DECL(void) VbglR3CredentialsDestroyUtf16(PRTUTF16 pwszUser, PRTUTF16 pwszPassword, PRTUTF16 pwszDomain, + uint32_t cPasses); +/** @} */ + +/** @name CPU hotplug monitor + * @{ */ +VBGLR3DECL(int) VbglR3CpuHotPlugInit(void); +VBGLR3DECL(int) VbglR3CpuHotPlugTerm(void); +VBGLR3DECL(int) VbglR3CpuHotPlugWaitForEvent(VMMDevCpuEventType *penmEventType, uint32_t *pidCpuCore, uint32_t *pidCpuPackage); +/** @} */ + +/** @name Page sharing + * @{ */ +VBGLR3DECL(int) VbglR3RegisterSharedModule(char *pszModuleName, char *pszVersion, RTGCPTR64 GCBaseAddr, uint32_t cbModule, + unsigned cRegions, VMMDEVSHAREDREGIONDESC *pRegions); +VBGLR3DECL(int) VbglR3UnregisterSharedModule(char *pszModuleName, char *pszVersion, RTGCPTR64 GCBaseAddr, uint32_t cbModule); +VBGLR3DECL(int) VbglR3CheckSharedModules(void); +VBGLR3DECL(bool) VbglR3PageSharingIsEnabled(void); +VBGLR3DECL(int) VbglR3PageIsShared(RTGCPTR pPage, bool *pfShared, uint64_t *puPageFlags); +/** @} */ + +# ifdef VBOX_WITH_DRAG_AND_DROP +/** @name Drag and Drop + * @{ */ +/** + * Structure containing the context required for + * either retrieving or sending a HGCM guest drag'n drop + * commands from or to the host. + * + * Note: Do not change parameter order without also + * adapting all structure initializers. + */ +typedef struct VBGLR3GUESTDNDCMDCTX +{ + /** @todo This struct could be handy if we want to implement + * a second communication channel, e.g. via TCP/IP. + * Use a union for the HGCM stuff then. */ + + /** IN: HGCM client ID to use for communication. */ + uint32_t uClientID; + /** IN: Protocol version to use. */ + uint32_t uProtocol; + /** OUT: Number of parameters retrieved. */ + uint32_t uNumParms; +} VBGLR3GUESTDNDCMDCTX, *PVBGLR3GUESTDNDCMDCTX; + +typedef struct VBGLR3DNDHGCMEVENT +{ + uint32_t uType; /** The event type this struct contains. */ + uint32_t uScreenId; /** Screen ID this request belongs to. */ + char *pszFormats; /** Format list (\r\n separated). */ + uint32_t cbFormats; /** Size of pszFormats (\0 included). */ + union + { + struct + { + uint32_t uXpos; /** X position of guest screen. */ + uint32_t uYpos; /** Y position of guest screen. */ + uint32_t uDefAction; /** Proposed DnD action. */ + uint32_t uAllActions; /** Allowed DnD actions. */ + } a; /** Values used in init, move and drop event type. */ + struct + { + void *pvData; /** Data request. */ + size_t cbData; /** Size of pvData. */ + } b; /** Values used in drop data event type. */ + } u; +} VBGLR3DNDHGCMEVENT; +typedef VBGLR3DNDHGCMEVENT *PVBGLR3DNDHGCMEVENT; +typedef const PVBGLR3DNDHGCMEVENT CPVBGLR3DNDHGCMEVENT; +VBGLR3DECL(int) VbglR3DnDConnect(PVBGLR3GUESTDNDCMDCTX pCtx); +VBGLR3DECL(int) VbglR3DnDDisconnect(PVBGLR3GUESTDNDCMDCTX pCtx); + +VBGLR3DECL(int) VbglR3DnDProcessNextMessage(PVBGLR3GUESTDNDCMDCTX pCtx, CPVBGLR3DNDHGCMEVENT pEvent); + +VBGLR3DECL(int) VbglR3DnDHGAcknowledgeOperation(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uAction); +VBGLR3DECL(int) VbglR3DnDHGRequestData(PVBGLR3GUESTDNDCMDCTX pCtx, const char *pszFormat); +VBGLR3DECL(int) VbglR3DnDHGSetProgress(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uStatus, uint8_t uPercent, int rcErr); +# ifdef VBOX_WITH_DRAG_AND_DROP_GH +VBGLR3DECL(int) VbglR3DnDGHAcknowledgePending(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uDefAction, + uint32_t uAllActions, const char *pszFormats); +VBGLR3DECL(int) VbglR3DnDGHSendData(PVBGLR3GUESTDNDCMDCTX pCtx, const char *pszFormat, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3DnDGHSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcOp); +# endif /* VBOX_WITH_DRAG_AND_DROP_GH */ +/** @} */ +# endif /* VBOX_WITH_DRAG_AND_DROP */ + +/* Generic Host Channel Service. */ +VBGLR3DECL(int) VbglR3HostChannelInit(uint32_t *pu32HGCMClientId); +VBGLR3DECL(void) VbglR3HostChannelTerm(uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelAttach(uint32_t *pu32ChannelHandle, uint32_t u32HGCMClientId, + const char *pszName, uint32_t u32Flags); +VBGLR3DECL(void) VbglR3HostChannelDetach(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelSend(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3HostChannelRecv(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + void *pvData, uint32_t cbData, + uint32_t *pu32SizeReceived, uint32_t *pu32SizeRemaining); +VBGLR3DECL(int) VbglR3HostChannelControl(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + uint32_t u32Code, void *pvParm, uint32_t cbParm, + void *pvData, uint32_t cbData, uint32_t *pu32SizeDataReturned); +VBGLR3DECL(int) VbglR3HostChannelEventWait(uint32_t *pu32ChannelHandle, uint32_t u32HGCMClientId, + uint32_t *pu32EventId, void *pvParm, uint32_t cbParm, + uint32_t *pu32SizeReturned); +VBGLR3DECL(int) VbglR3HostChannelEventCancel(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelQuery(const char *pszName, uint32_t u32HGCMClientId, uint32_t u32Code, + void *pvParm, uint32_t cbParm, void *pvData, uint32_t cbData, + uint32_t *pu32SizeDataReturned); + +/** @name Mode hint storage + * @{ */ +VBGLR3DECL(int) VbglR3ReadVideoMode(unsigned cDisplay, unsigned *cx, + unsigned *cy, unsigned *cBPP, unsigned *x, + unsigned *y, unsigned *fEnabled); +VBGLR3DECL(int) VbglR3WriteVideoMode(unsigned cDisplay, unsigned cx, + unsigned cy, unsigned cBPP, unsigned x, + unsigned y, unsigned fEnabled); +/** @} */ + +#endif /* IN_RING3 */ +/** @} */ + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VBoxGuestLibSharedFolders.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VBoxGuestLibSharedFolders.h @@ -0,0 +1,120 @@ +/* $Id: VBoxGuestLibSharedFolders.h $ */ +/** @file + * VBoxGuestLib - Central calls header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuestLibSharedFolders_h_ +#define ___VBox_VBoxGuestLibSharedFolders_h_ + +#include +#include + +RT_C_DECLS_BEGIN + + +/** @addtogroup grp_vboxguest_lib_r0 + * @{ + */ + +typedef struct VBGLSFCLIENT +{ + HGCMCLIENTID idClient; + VBGLHGCMHANDLE handle; +} VBGLSFCLIENT; +typedef VBGLSFCLIENT *PVBGLSFCLIENT; + +typedef struct VBGLSFMAP +{ + SHFLROOT root; +} VBGLSFMAP, *PVBGLSFMAP; + +DECLVBGL(int) VbglR0SfInit(void); +DECLVBGL(void) VbglR0SfTerm(void); +DECLVBGL(int) VbglR0SfConnect(PVBGLSFCLIENT pClient); +DECLVBGL(void) VbglR0SfDisconnect(PVBGLSFCLIENT pClient); + +DECLVBGL(int) VbglR0SfQueryMappings(PVBGLSFCLIENT pClient, SHFLMAPPING paMappings[], uint32_t *pcMappings); + +DECLVBGL(int) VbglR0SfQueryMapName(PVBGLSFCLIENT pClient, SHFLROOT root, SHFLSTRING *pString, uint32_t size); + +/** + * Create a new file or folder or open an existing one in a shared folder. Proxies + * to vbsfCreate in the host shared folder service. + * + * @returns IPRT status code, but see note below + * @param pClient Host-guest communication connection + * @param pMap The mapping for the shared folder in which the file + * or folder is to be created + * @param pParsedPath The path of the file or folder relative to the shared + * folder + * @param pCreateParms Parameters for file/folder creation. See the + * structure description in shflsvc.h + * @retval pCreateParms See the structure description in shflsvc.h + * + * @note This function reports errors as follows. The return value is always + * VINF_SUCCESS unless an exceptional condition occurs - out of + * memory, invalid arguments, etc. If the file or folder could not be + * opened or created, pCreateParms->Handle will be set to + * SHFL_HANDLE_NIL on return. In this case the value in + * pCreateParms->Result provides information as to why (e.g. + * SHFL_FILE_EXISTS). pCreateParms->Result is also set on success + * as additional information. + */ +DECLVBGL(int) VbglR0SfCreate(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pParsedPath, PSHFLCREATEPARMS pCreateParms); + +DECLVBGL(int) VbglR0SfClose(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE Handle); +DECLVBGL(int) VbglR0SfRemove(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pParsedPath, uint32_t flags); +DECLVBGL(int) VbglR0SfRename(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pSrcPath, PSHFLSTRING pDestPath, uint32_t flags); +DECLVBGL(int) VbglR0SfFlush(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile); + +DECLVBGL(int) VbglR0SfRead(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SfReadPageList(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); +DECLVBGL(int) VbglR0SfWrite(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, + uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SfWritePhysCont(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, + uint32_t *pcbBuffer, RTCCPHYS PhysBuffer); +DECLVBGL(int) VbglR0SfWritePageList(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); + +DECLVBGL(int) VbglR0SfLock(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint64_t cbSize, uint32_t fLock); + +DECLVBGL(int) VbglR0SfDirInfo(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile,PSHFLSTRING ParsedPath, uint32_t flags, + uint32_t index, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer, uint32_t *pcFiles); +DECLVBGL(int) VbglR0SfFsInfo(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint32_t flags, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer); + +DECLVBGL(int) VbglR0SfMapFolder(PVBGLSFCLIENT pClient, PSHFLSTRING szFolderName, PVBGLSFMAP pMap); +DECLVBGL(int) VbglR0SfUnmapFolder(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap); +DECLVBGL(int) VbglR0SfSetUtf8(PVBGLSFCLIENT pClient); + +DECLVBGL(int) VbglR0SfReadLink(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING ParsedPath, uint32_t pcbBuffer, uint8_t *pBuffer); +DECLVBGL(int) VbglR0SfSymlink(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pNewPath, PSHFLSTRING pOldPath, PSHFLFSOBJINFO pBuffer); +DECLVBGL(int) VbglR0SfSetSymlinks(PVBGLSFCLIENT pClient); + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VBoxGuestMangling.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VBoxGuestMangling.h @@ -0,0 +1,32 @@ +/** @file + * VBoxGuest - Mangling of IPRT symbols for guest drivers. + * + * This is included via a compiler directive on platforms with a global kernel + * symbol name space (i.e. not Windows, OS/2 and Mac OS X (?)). + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#define RT_MANGLER(symbol) VBoxGuest_##symbol +#include + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VMMDev.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VMMDev.h @@ -0,0 +1,2210 @@ +/** @file + * Virtual Device for Guest <-> VMM/Host communication (ADD,DEV). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VMMDev_h +#define ___VBox_VMMDev_h + +#include +#include /* for the PCI IDs. */ +#include +#include +#include +#include +#include + + +#pragma pack(4) /* force structure dword packing here. */ +RT_C_DECLS_BEGIN + + +/** @defgroup grp_vmmdev VMM Device + * + * @note This interface cannot be changed, it can only be extended! + * + * @{ + */ + + +/** Size of VMMDev RAM region accessible by guest. + * Must be big enough to contain VMMDevMemory structure (see further down). + * For now: 4 megabyte. + */ +#define VMMDEV_RAM_SIZE (4 * 256 * PAGE_SIZE) + +/** Size of VMMDev heap region accessible by guest. + * (Must be a power of two (pci range).) + */ +#define VMMDEV_HEAP_SIZE (4 * PAGE_SIZE) + +/** Port for generic request interface (relative offset). */ +#define VMMDEV_PORT_OFF_REQUEST 0 + + +/** @name VMMDev events. + * + * Used mainly by VMMDevReq_AcknowledgeEvents/VMMDevEvents and version 1.3 of + * VMMDevMemory. + * + * @{ + */ +/** Host mouse capabilities has been changed. */ +#define VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED RT_BIT(0) +/** HGCM event. */ +#define VMMDEV_EVENT_HGCM RT_BIT(1) +/** A display change request has been issued. */ +#define VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST RT_BIT(2) +/** Credentials are available for judgement. */ +#define VMMDEV_EVENT_JUDGE_CREDENTIALS RT_BIT(3) +/** The guest has been restored. */ +#define VMMDEV_EVENT_RESTORED RT_BIT(4) +/** Seamless mode state changed. */ +#define VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST RT_BIT(5) +/** Memory balloon size changed. */ +#define VMMDEV_EVENT_BALLOON_CHANGE_REQUEST RT_BIT(6) +/** Statistics interval changed. */ +#define VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST RT_BIT(7) +/** VRDP status changed. */ +#define VMMDEV_EVENT_VRDP RT_BIT(8) +/** New mouse position data available. */ +#define VMMDEV_EVENT_MOUSE_POSITION_CHANGED RT_BIT(9) +/** CPU hotplug event occurred. */ +#define VMMDEV_EVENT_CPU_HOTPLUG RT_BIT(10) +/** The mask of valid events, for sanity checking. */ +#define VMMDEV_EVENT_VALID_EVENT_MASK UINT32_C(0x000007ff) +/** @} */ + + +/** @defgroup grp_vmmdev_req VMMDev Generic Request Interface + * @{ + */ + +/** @name Current version of the VMMDev interface. + * + * Additions are allowed to work only if + * additions_major == vmmdev_current && additions_minor <= vmmdev_current. + * Additions version is reported to host (VMMDev) by VMMDevReq_ReportGuestInfo. + * + * @remarks These defines also live in the 16-bit and assembly versions of this + * header. + */ +#define VMMDEV_VERSION 0x00010004 +#define VMMDEV_VERSION_MAJOR (VMMDEV_VERSION >> 16) +#define VMMDEV_VERSION_MINOR (VMMDEV_VERSION & 0xffff) +/** @} */ + +/** Maximum request packet size. */ +#define VMMDEV_MAX_VMMDEVREQ_SIZE _1M +/** Maximum number of HGCM parameters. */ +#define VMMDEV_MAX_HGCM_PARMS 1024 +/** Maximum total size of hgcm buffers in one call. */ +#define VMMDEV_MAX_HGCM_DATA_SIZE UINT32_C(0x7FFFFFFF) + +/** + * VMMDev request types. + * @note when updating this, adjust vmmdevGetRequestSize() as well + */ +typedef enum +{ + VMMDevReq_InvalidRequest = 0, + VMMDevReq_GetMouseStatus = 1, + VMMDevReq_SetMouseStatus = 2, + VMMDevReq_SetPointerShape = 3, + VMMDevReq_GetHostVersion = 4, + VMMDevReq_Idle = 5, + VMMDevReq_GetHostTime = 10, + VMMDevReq_GetHypervisorInfo = 20, + VMMDevReq_SetHypervisorInfo = 21, + VMMDevReq_RegisterPatchMemory = 22, /* since version 3.0.6 */ + VMMDevReq_DeregisterPatchMemory = 23, /* since version 3.0.6 */ + VMMDevReq_SetPowerStatus = 30, + VMMDevReq_AcknowledgeEvents = 41, + VMMDevReq_CtlGuestFilterMask = 42, + VMMDevReq_ReportGuestInfo = 50, + VMMDevReq_ReportGuestInfo2 = 58, /* since version 3.2.0 */ + VMMDevReq_ReportGuestStatus = 59, /* since version 3.2.8 */ + VMMDevReq_ReportGuestUserState = 74, /* since version 4.3 */ + /** + * Retrieve a display resize request sent by the host using + * @a IDisplay:setVideoModeHint. Deprecated. + * + * Similar to @a VMMDevReq_GetDisplayChangeRequest2, except that it only + * considers host requests sent for the first virtual display. This guest + * request should not be used in new guest code, and the results are + * undefined if a guest mixes calls to this and + * @a VMMDevReq_GetDisplayChangeRequest2. + */ + VMMDevReq_GetDisplayChangeRequest = 51, + VMMDevReq_VideoModeSupported = 52, + VMMDevReq_GetHeightReduction = 53, + /** + * Retrieve a display resize request sent by the host using + * @a IDisplay:setVideoModeHint. + * + * Queries a display resize request sent from the host. If the + * @a eventAck member is sent to true and there is an unqueried + * request available for one of the virtual display then that request will + * be returned. If several displays have unqueried requests the lowest + * numbered display will be chosen first. Only the most recent unseen + * request for each display is remembered. + * If @a eventAck is set to false, the last host request queried with + * @a eventAck set is resent, or failing that the most recent received from + * the host. If no host request was ever received then all zeros are + * returned. + */ + VMMDevReq_GetDisplayChangeRequest2 = 54, + VMMDevReq_ReportGuestCapabilities = 55, + VMMDevReq_SetGuestCapabilities = 56, + VMMDevReq_VideoModeSupported2 = 57, /* since version 3.2.0 */ + VMMDevReq_GetDisplayChangeRequestEx = 80, /* since version 4.2.4 */ +#ifdef VBOX_WITH_HGCM + VMMDevReq_HGCMConnect = 60, + VMMDevReq_HGCMDisconnect = 61, +#ifdef VBOX_WITH_64_BITS_GUESTS + VMMDevReq_HGCMCall32 = 62, + VMMDevReq_HGCMCall64 = 63, +#else + VMMDevReq_HGCMCall = 62, +#endif /* VBOX_WITH_64_BITS_GUESTS */ + VMMDevReq_HGCMCancel = 64, + VMMDevReq_HGCMCancel2 = 65, +#endif + VMMDevReq_VideoAccelEnable = 70, + VMMDevReq_VideoAccelFlush = 71, + VMMDevReq_VideoSetVisibleRegion = 72, + VMMDevReq_GetSeamlessChangeRequest = 73, + VMMDevReq_QueryCredentials = 100, + VMMDevReq_ReportCredentialsJudgement = 101, + VMMDevReq_ReportGuestStats = 110, + VMMDevReq_GetMemBalloonChangeRequest = 111, + VMMDevReq_GetStatisticsChangeRequest = 112, + VMMDevReq_ChangeMemBalloon = 113, + VMMDevReq_GetVRDPChangeRequest = 150, + VMMDevReq_LogString = 200, + VMMDevReq_GetCpuHotPlugRequest = 210, + VMMDevReq_SetCpuHotPlugStatus = 211, + VMMDevReq_RegisterSharedModule = 212, + VMMDevReq_UnregisterSharedModule = 213, + VMMDevReq_CheckSharedModules = 214, + VMMDevReq_GetPageSharingStatus = 215, + VMMDevReq_DebugIsPageShared = 216, + VMMDevReq_GetSessionId = 217, /* since version 3.2.8 */ + VMMDevReq_WriteCoreDump = 218, + VMMDevReq_GuestHeartbeat = 219, + VMMDevReq_HeartbeatConfigure = 220, + VMMDevReq_SizeHack = 0x7fffffff +} VMMDevRequestType; + +#ifdef VBOX_WITH_64_BITS_GUESTS +/* + * Constants and structures are redefined for the guest. + * + * Host code MUST always use either *32 or *64 variant explicitely. + * Host source code will use VBOX_HGCM_HOST_CODE define to catch undefined + * data types and constants. + * + * This redefinition means that the new additions builds will use + * the *64 or *32 variants depending on the current architecture bit count (ARCH_BITS). + */ +# ifndef VBOX_HGCM_HOST_CODE +# if ARCH_BITS == 64 +# define VMMDevReq_HGCMCall VMMDevReq_HGCMCall64 +# elif ARCH_BITS == 32 +# define VMMDevReq_HGCMCall VMMDevReq_HGCMCall32 +# else +# error "Unsupported ARCH_BITS" +# endif +# endif /* !VBOX_HGCM_HOST_CODE */ +#endif /* VBOX_WITH_64_BITS_GUESTS */ + +/** Version of VMMDevRequestHeader structure. */ +#define VMMDEV_REQUEST_HEADER_VERSION (0x10001) + + +/** + * Generic VMMDev request header. + */ +typedef struct +{ + /** IN: Size of the structure in bytes (including body). */ + uint32_t size; + /** IN: Version of the structure. */ + uint32_t version; + /** IN: Type of the request. */ + VMMDevRequestType requestType; + /** OUT: Return code. */ + int32_t rc; + /** Reserved field no.1. MBZ. */ + uint32_t reserved1; + /** Reserved field no.2. MBZ. */ + uint32_t reserved2; +} VMMDevRequestHeader; +AssertCompileSize(VMMDevRequestHeader, 24); + + +/** + * Mouse status request structure. + * + * Used by VMMDevReq_GetMouseStatus and VMMDevReq_SetMouseStatus. + */ +typedef struct +{ + /** header */ + VMMDevRequestHeader header; + /** Mouse feature mask. See VMMDEV_MOUSE_*. */ + uint32_t mouseFeatures; + /** Mouse x position. */ + int32_t pointerXPos; + /** Mouse y position. */ + int32_t pointerYPos; +} VMMDevReqMouseStatus; +AssertCompileSize(VMMDevReqMouseStatus, 24+12); + +/** @name Mouse capability bits (VMMDevReqMouseStatus::mouseFeatures). + * @{ */ +/** The guest can (== wants to) handle absolute coordinates. */ +#define VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE RT_BIT(0) +/** The host can (== wants to) send absolute coordinates. + * (Input not captured.) */ +#define VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE RT_BIT(1) +/** The guest can *NOT* switch to software cursor and therefore depends on the + * host cursor. + * + * When guest additions are installed and the host has promised to display the + * cursor itself, the guest installs a hardware mouse driver. Don't ask the + * guest to switch to a software cursor then. */ +#define VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR RT_BIT(2) +/** The host does NOT provide support for drawing the cursor itself. */ +#define VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER RT_BIT(3) +/** The guest can read VMMDev events to find out about pointer movement */ +#define VMMDEV_MOUSE_NEW_PROTOCOL RT_BIT(4) +/** If the guest changes the status of the + * VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR bit, the host will honour this */ +#define VMMDEV_MOUSE_HOST_RECHECKS_NEEDS_HOST_CURSOR RT_BIT(5) +/** The host supplies an absolute pointing device. The Guest Additions may + * wish to use this to decide whether to install their own driver */ +#define VMMDEV_MOUSE_HOST_HAS_ABS_DEV RT_BIT(6) +/** The mask of all VMMDEV_MOUSE_* flags */ +#define VMMDEV_MOUSE_MASK UINT32_C(0x0000007f) +/** The mask of guest capability changes for which notification events should + * be sent */ +#define VMMDEV_MOUSE_NOTIFY_HOST_MASK \ + (VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE | VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR) +/** The mask of all capabilities which the guest can legitimately change */ +#define VMMDEV_MOUSE_GUEST_MASK \ + (VMMDEV_MOUSE_NOTIFY_HOST_MASK | VMMDEV_MOUSE_NEW_PROTOCOL) +/** The mask of host capability changes for which notification events should + * be sent */ +#define VMMDEV_MOUSE_NOTIFY_GUEST_MASK \ + VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE +/** The mask of all capabilities which the host can legitimately change */ +#define VMMDEV_MOUSE_HOST_MASK \ + ( VMMDEV_MOUSE_NOTIFY_GUEST_MASK \ + | VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER \ + | VMMDEV_MOUSE_HOST_RECHECKS_NEEDS_HOST_CURSOR \ + | VMMDEV_MOUSE_HOST_HAS_ABS_DEV) +/** @} */ + +/** @name Absolute mouse reporting range + * @{ */ +/** @todo Should these be here? They are needed by both host and guest. */ +/** The minumum value our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE_MIN 0 +/** The maximum value our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE_MAX 0xFFFF +/** The full range our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE (VMMDEV_MOUSE_RANGE_MAX - VMMDEV_MOUSE_RANGE_MIN) +/** @} */ + + +/** + * Mouse pointer shape/visibility change request. + * + * Used by VMMDevReq_SetPointerShape. The size is variable. + */ +typedef struct VMMDevReqMousePointer +{ + /** Header. */ + VMMDevRequestHeader header; + /** VBOX_MOUSE_POINTER_* bit flags. */ + uint32_t fFlags; + /** x coordinate of hot spot. */ + uint32_t xHot; + /** y coordinate of hot spot. */ + uint32_t yHot; + /** Width of the pointer in pixels. */ + uint32_t width; + /** Height of the pointer in scanlines. */ + uint32_t height; + /** Pointer data. + * + **** + * The data consists of 1 bpp AND mask followed by 32 bpp XOR (color) mask. + * + * For pointers without alpha channel the XOR mask pixels are 32 bit values: (lsb)BGR0(msb). + * For pointers with alpha channel the XOR mask consists of (lsb)BGRA(msb) 32 bit values. + * + * Guest driver must create the AND mask for pointers with alpha channel, so if host does not + * support alpha, the pointer could be displayed as a normal color pointer. The AND mask can + * be constructed from alpha values. For example alpha value >= 0xf0 means bit 0 in the AND mask. + * + * The AND mask is 1 bpp bitmap with byte aligned scanlines. Size of AND mask, + * therefore, is cbAnd = (width + 7) / 8 * height. The padding bits at the + * end of any scanline are undefined. + * + * The XOR mask follows the AND mask on the next 4 bytes aligned offset: + * uint8_t *pXor = pAnd + (cbAnd + 3) & ~3 + * Bytes in the gap between the AND and the XOR mask are undefined. + * XOR mask scanlines have no gap between them and size of XOR mask is: + * cXor = width * 4 * height. + **** + * + * Preallocate 4 bytes for accessing actual data as p->pointerData. + */ + char pointerData[4]; +} VMMDevReqMousePointer; +AssertCompileSize(VMMDevReqMousePointer, 24+24); + +/** + * Get the size that a VMMDevReqMousePointer request should have for a given + * size of cursor, including the trailing cursor image and mask data. + * @note an "empty" request still has the four preallocated bytes of data + * + * @returns the size + * @param width the cursor width + * @param height the cursor height + */ +DECLINLINE(size_t) vmmdevGetMousePointerReqSize(uint32_t width, uint32_t height) +{ + size_t cbBase = RT_OFFSETOF(VMMDevReqMousePointer, pointerData); + size_t cbMask = (width + 7) / 8 * height; + size_t cbArgb = width * height * 4; + return RT_MAX(cbBase + ((cbMask + 3) & ~3) + cbArgb, + sizeof(VMMDevReqMousePointer)); +} + +/** @name VMMDevReqMousePointer::fFlags + * @note The VBOX_MOUSE_POINTER_* flags are used in the guest video driver, + * values must be <= 0x8000 and must not be changed. (try make more sense + * of this, please). + * @{ + */ +/** pointer is visible */ +#define VBOX_MOUSE_POINTER_VISIBLE (0x0001) +/** pointer has alpha channel */ +#define VBOX_MOUSE_POINTER_ALPHA (0x0002) +/** pointerData contains new pointer shape */ +#define VBOX_MOUSE_POINTER_SHAPE (0x0004) +/** @} */ + + +/** + * String log request structure. + * + * Used by VMMDevReq_LogString. + * @deprecated Use the IPRT logger or VbglR3WriteLog instead. + */ +typedef struct +{ + /** header */ + VMMDevRequestHeader header; + /** variable length string data */ + char szString[1]; +} VMMDevReqLogString; +AssertCompileSize(VMMDevReqLogString, 24+4); + + +/** + * VirtualBox host version request structure. + * + * Used by VMMDevReq_GetHostVersion. + * + * @remarks VBGL uses this to detect the precense of new features in the + * interface. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Major version. */ + uint16_t major; + /** Minor version. */ + uint16_t minor; + /** Build number. */ + uint32_t build; + /** SVN revision. */ + uint32_t revision; + /** Feature mask. */ + uint32_t features; +} VMMDevReqHostVersion; +AssertCompileSize(VMMDevReqHostVersion, 24+16); + +/** @name VMMDevReqHostVersion::features + * @{ */ +/** Physical page lists are supported by HGCM. */ +#define VMMDEV_HVF_HGCM_PHYS_PAGE_LIST RT_BIT(0) +/** @} */ + + +/** + * Guest capabilities structure. + * + * Used by VMMDevReq_ReportGuestCapabilities. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Capabilities (VMMDEV_GUEST_*). */ + uint32_t caps; +} VMMDevReqGuestCapabilities; +AssertCompileSize(VMMDevReqGuestCapabilities, 24+4); + +/** + * Guest capabilities structure, version 2. + * + * Used by VMMDevReq_SetGuestCapabilities. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Mask of capabilities to be added. */ + uint32_t u32OrMask; + /** Mask of capabilities to be removed. */ + uint32_t u32NotMask; +} VMMDevReqGuestCapabilities2; +AssertCompileSize(VMMDevReqGuestCapabilities2, 24+8); + +/** @name Guest capability bits. + * Used by VMMDevReq_ReportGuestCapabilities and VMMDevReq_SetGuestCapabilities. + * @{ */ +/** The guest supports seamless display rendering. */ +#define VMMDEV_GUEST_SUPPORTS_SEAMLESS RT_BIT_32(0) +/** The guest supports mapping guest to host windows. */ +#define VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING RT_BIT_32(1) +/** The guest graphical additions are active. + * Used for fast activation and deactivation of certain graphical operations + * (e.g. resizing & seamless). The legacy VMMDevReq_ReportGuestCapabilities + * request sets this automatically, but VMMDevReq_SetGuestCapabilities does + * not. */ +#define VMMDEV_GUEST_SUPPORTS_GRAPHICS RT_BIT_32(2) +/** The mask of valid events, for sanity checking. */ +#define VMMDEV_GUEST_CAPABILITIES_MASK UINT32_C(0x00000007) +/** @} */ + + +/** + * Idle request structure. + * + * Used by VMMDevReq_Idle. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevReqIdle; +AssertCompileSize(VMMDevReqIdle, 24); + + +/** + * Host time request structure. + * + * Used by VMMDevReq_GetHostTime. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** OUT: Time in milliseconds since unix epoch. */ + uint64_t time; +} VMMDevReqHostTime; +AssertCompileSize(VMMDevReqHostTime, 24+8); + + +/** + * Hypervisor info structure. + * + * Used by VMMDevReq_GetHypervisorInfo and VMMDevReq_SetHypervisorInfo. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest virtual address of proposed hypervisor start. + * Not used by VMMDevReq_GetHypervisorInfo. + * @todo Make this 64-bit compatible? */ + RTGCPTR32 hypervisorStart; + /** Hypervisor size in bytes. */ + uint32_t hypervisorSize; +} VMMDevReqHypervisorInfo; +AssertCompileSize(VMMDevReqHypervisorInfo, 24+8); + +/** @name Default patch memory size . + * Used by VMMDevReq_RegisterPatchMemory and VMMDevReq_DeregisterPatchMemory. + * @{ */ +#define VMMDEV_GUEST_DEFAULT_PATCHMEM_SIZE 8192 +/** @} */ + +/** + * Patching memory structure. (locked executable & read-only page from the guest's perspective) + * + * Used by VMMDevReq_RegisterPatchMemory and VMMDevReq_DeregisterPatchMemory + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest virtual address of the patching page(s). */ + RTGCPTR64 pPatchMem; + /** Patch page size in bytes. */ + uint32_t cbPatchMem; +} VMMDevReqPatchMemory; +AssertCompileSize(VMMDevReqPatchMemory, 24+12); + + +/** + * Guest power requests. + * + * See VMMDevReq_SetPowerStatus and VMMDevPowerStateRequest. + */ +typedef enum +{ + VMMDevPowerState_Invalid = 0, + VMMDevPowerState_Pause = 1, + VMMDevPowerState_PowerOff = 2, + VMMDevPowerState_SaveState = 3, + VMMDevPowerState_SizeHack = 0x7fffffff +} VMMDevPowerState; +AssertCompileSize(VMMDevPowerState, 4); + +/** + * VM power status structure. + * + * Used by VMMDevReq_SetPowerStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Power state request. */ + VMMDevPowerState powerState; +} VMMDevPowerStateRequest; +AssertCompileSize(VMMDevPowerStateRequest, 24+4); + + +/** + * Pending events structure. + * + * Used by VMMDevReq_AcknowledgeEvents. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Pending event mask. */ + uint32_t events; +} VMMDevEvents; +AssertCompileSize(VMMDevEvents, 24+4); + + +/** + * Guest event filter mask control. + * + * Used by VMMDevReq_CtlGuestFilterMask. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Mask of events to be added to the filter. */ + uint32_t u32OrMask; + /** Mask of events to be removed from the filter. */ + uint32_t u32NotMask; +} VMMDevCtlGuestFilterMask; +AssertCompileSize(VMMDevCtlGuestFilterMask, 24+8); + + +/** + * Guest information structure. + * + * Used by VMMDevReportGuestInfo and PDMIVMMDEVCONNECTOR::pfnUpdateGuestVersion. + */ +typedef struct VBoxGuestInfo +{ + /** The VMMDev interface version expected by additions. + * *Deprecated*, do not use anymore! Will be removed. */ + uint32_t interfaceVersion; + /** Guest OS type. */ + VBOXOSTYPE osType; +} VBoxGuestInfo; +AssertCompileSize(VBoxGuestInfo, 8); + +/** + * Guest information report. + * + * Used by VMMDevReq_ReportGuestInfo. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestInfo guestInfo; +} VMMDevReportGuestInfo; +AssertCompileSize(VMMDevReportGuestInfo, 24+8); + + +/** + * Guest information structure, version 2. + * + * Used by VMMDevReportGuestInfo2 and PDMIVMMDEVCONNECTOR::pfnUpdateGuestVersion2. + */ +typedef struct VBoxGuestInfo2 +{ + /** Major version. */ + uint16_t additionsMajor; + /** Minor version. */ + uint16_t additionsMinor; + /** Build number. */ + uint32_t additionsBuild; + /** SVN revision. */ + uint32_t additionsRevision; + /** Feature mask, currently unused. */ + uint32_t additionsFeatures; + /** The intentional meaning of this field was: + * Some additional information, for example 'Beta 1' or something like that. + * + * The way it was implemented was implemented: VBOX_VERSION_STRING. + * + * This means the first three members are duplicated in this field (if the guest + * build config is sane). So, the user must check this and chop it off before + * usage. There is, because of the Main code's blind trust in the field's + * content, no way back. */ + char szName[128]; +} VBoxGuestInfo2; +AssertCompileSize(VBoxGuestInfo2, 144); + +/** + * Guest information report, version 2. + * + * Used by VMMDevReq_ReportGuestInfo2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestInfo2 guestInfo; +} VMMDevReportGuestInfo2; +AssertCompileSize(VMMDevReportGuestInfo2, 24+144); + + +/** + * The guest facility. + * This needs to be kept in sync with AdditionsFacilityType of the Main API! + */ +typedef enum +{ + VBoxGuestFacilityType_Unknown = 0, + VBoxGuestFacilityType_VBoxGuestDriver = 20, + VBoxGuestFacilityType_AutoLogon = 90, /* VBoxGINA / VBoxCredProv / pam_vbox. */ + VBoxGuestFacilityType_VBoxService = 100, + VBoxGuestFacilityType_VBoxTrayClient = 101, /* VBoxTray (Windows), VBoxClient (Linux, Unix). */ + VBoxGuestFacilityType_Seamless = 1000, + VBoxGuestFacilityType_Graphics = 1100, + VBoxGuestFacilityType_All = 0x7ffffffe, + VBoxGuestFacilityType_SizeHack = 0x7fffffff +} VBoxGuestFacilityType; +AssertCompileSize(VBoxGuestFacilityType, 4); + + +/** + * The current guest status of a facility. + * This needs to be kept in sync with AdditionsFacilityStatus of the Main API! + * + * @remarks r=bird: Pretty please, for future types like this, simply do a + * linear allocation without any gaps. This stuff is impossible work + * efficiently with, let alone validate. Applies to the other facility + * enums too. + */ +typedef enum +{ + VBoxGuestFacilityStatus_Inactive = 0, + VBoxGuestFacilityStatus_Paused = 1, + VBoxGuestFacilityStatus_PreInit = 20, + VBoxGuestFacilityStatus_Init = 30, + VBoxGuestFacilityStatus_Active = 50, + VBoxGuestFacilityStatus_Terminating = 100, + VBoxGuestFacilityStatus_Terminated = 101, + VBoxGuestFacilityStatus_Failed = 800, + VBoxGuestFacilityStatus_Unknown = 999, + VBoxGuestFacilityStatus_SizeHack = 0x7fffffff +} VBoxGuestFacilityStatus; +AssertCompileSize(VBoxGuestFacilityStatus, 4); + + +/** + * The facility class. + * This needs to be kept in sync with AdditionsFacilityClass of the Main API! + */ +typedef enum +{ + VBoxGuestFacilityClass_None = 0, + VBoxGuestFacilityClass_Driver = 10, + VBoxGuestFacilityClass_Service = 30, + VBoxGuestFacilityClass_Program = 50, + VBoxGuestFacilityClass_Feature = 100, + VBoxGuestFacilityClass_ThirdParty = 999, + VBoxGuestFacilityClass_All = 0x7ffffffe, + VBoxGuestFacilityClass_SizeHack = 0x7fffffff +} VBoxGuestFacilityClass; +AssertCompileSize(VBoxGuestFacilityClass, 4); + + +/** + * Guest status structure. + * + * Used by VMMDevReqGuestStatus. + */ +typedef struct VBoxGuestStatus +{ + /** Facility the status is indicated for. */ + VBoxGuestFacilityType facility; + /** Current guest status. */ + VBoxGuestFacilityStatus status; + /** Flags, not used at the moment. */ + uint32_t flags; +} VBoxGuestStatus; +AssertCompileSize(VBoxGuestStatus, 12); + +/** + * Guest Additions status structure. + * + * Used by VMMDevReq_ReportGuestStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestStatus guestStatus; +} VMMDevReportGuestStatus; +AssertCompileSize(VMMDevReportGuestStatus, 24+12); + + +/** + * The current status of specific guest user. + * This needs to be kept in sync with GuestUserState of the Main API! + */ +typedef enum VBoxGuestUserState +{ + VBoxGuestUserState_Unknown = 0, + VBoxGuestUserState_LoggedIn = 1, + VBoxGuestUserState_LoggedOut = 2, + VBoxGuestUserState_Locked = 3, + VBoxGuestUserState_Unlocked = 4, + VBoxGuestUserState_Disabled = 5, + VBoxGuestUserState_Idle = 6, + VBoxGuestUserState_InUse = 7, + VBoxGuestUserState_Created = 8, + VBoxGuestUserState_Deleted = 9, + VBoxGuestUserState_SessionChanged = 10, + VBoxGuestUserState_CredentialsChanged = 11, + VBoxGuestUserState_RoleChanged = 12, + VBoxGuestUserState_GroupAdded = 13, + VBoxGuestUserState_GroupRemoved = 14, + VBoxGuestUserState_Elevated = 15, + VBoxGuestUserState_SizeHack = 0x7fffffff +} VBoxGuestUserState; +AssertCompileSize(VBoxGuestUserState, 4); + + +/** + * Guest user status updates. + */ +typedef struct VBoxGuestUserStatus +{ + /** The guest user state to send. */ + VBoxGuestUserState state; + /** Size (in bytes) of szUser. */ + uint32_t cbUser; + /** Size (in bytes) of szDomain. */ + uint32_t cbDomain; + /** Size (in bytes) of aDetails. */ + uint32_t cbDetails; + /** Note: Here begins the dynamically + * allocated region. */ + /** Guest user to report state for. */ + char szUser[1]; + /** Domain the guest user is bound to. */ + char szDomain[1]; + /** Optional details of the state. */ + uint8_t aDetails[1]; +} VBoxGuestUserStatus; +AssertCompileSize(VBoxGuestUserStatus, 20); + + +/** + * Guest user status structure. + * + * Used by VMMDevReq_ReportGuestUserStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest user status. */ + VBoxGuestUserStatus status; +} VMMDevReportGuestUserState; +AssertCompileSize(VMMDevReportGuestUserState, 24+20); + + +/** + * Guest statistics structure. + * + * Used by VMMDevReportGuestStats and PDMIVMMDEVCONNECTOR::pfnReportStatistics. + */ +typedef struct VBoxGuestStatistics +{ + /** Virtual CPU ID. */ + uint32_t u32CpuId; + /** Reported statistics. */ + uint32_t u32StatCaps; + /** Idle CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_Idle; + /** Kernel CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_Kernel; + /** User CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_User; + /** Nr of threads. */ + uint32_t u32Threads; + /** Nr of processes. */ + uint32_t u32Processes; + /** Nr of handles. */ + uint32_t u32Handles; + /** Memory load (0-100). */ + uint32_t u32MemoryLoad; + /** Page size of guest system. */ + uint32_t u32PageSize; + /** Total physical memory (in 4KB pages). */ + uint32_t u32PhysMemTotal; + /** Available physical memory (in 4KB pages). */ + uint32_t u32PhysMemAvail; + /** Ballooned physical memory (in 4KB pages). */ + uint32_t u32PhysMemBalloon; + /** Total number of committed memory (which is not necessarily in-use) (in 4KB pages). */ + uint32_t u32MemCommitTotal; + /** Total amount of memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelTotal; + /** Total amount of paged memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelPaged; + /** Total amount of nonpaged memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelNonPaged; + /** Total amount of memory used for the system cache (in 4KB pages). */ + uint32_t u32MemSystemCache; + /** Pagefile size (in 4KB pages). */ + uint32_t u32PageFileSize; +} VBoxGuestStatistics; +AssertCompileSize(VBoxGuestStatistics, 19*4); + +/** @name Guest statistics values (VBoxGuestStatistics::u32StatCaps). + * @{ */ +#define VBOX_GUEST_STAT_CPU_LOAD_IDLE RT_BIT(0) +#define VBOX_GUEST_STAT_CPU_LOAD_KERNEL RT_BIT(1) +#define VBOX_GUEST_STAT_CPU_LOAD_USER RT_BIT(2) +#define VBOX_GUEST_STAT_THREADS RT_BIT(3) +#define VBOX_GUEST_STAT_PROCESSES RT_BIT(4) +#define VBOX_GUEST_STAT_HANDLES RT_BIT(5) +#define VBOX_GUEST_STAT_MEMORY_LOAD RT_BIT(6) +#define VBOX_GUEST_STAT_PHYS_MEM_TOTAL RT_BIT(7) +#define VBOX_GUEST_STAT_PHYS_MEM_AVAIL RT_BIT(8) +#define VBOX_GUEST_STAT_PHYS_MEM_BALLOON RT_BIT(9) +#define VBOX_GUEST_STAT_MEM_COMMIT_TOTAL RT_BIT(10) +#define VBOX_GUEST_STAT_MEM_KERNEL_TOTAL RT_BIT(11) +#define VBOX_GUEST_STAT_MEM_KERNEL_PAGED RT_BIT(12) +#define VBOX_GUEST_STAT_MEM_KERNEL_NONPAGED RT_BIT(13) +#define VBOX_GUEST_STAT_MEM_SYSTEM_CACHE RT_BIT(14) +#define VBOX_GUEST_STAT_PAGE_FILE_SIZE RT_BIT(15) +/** @} */ + +/** + * Guest statistics command structure. + * + * Used by VMMDevReq_ReportGuestStats. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestStatistics guestStats; +} VMMDevReportGuestStats; +AssertCompileSize(VMMDevReportGuestStats, 24+19*4); + + +/** Memory balloon change request structure. */ +#define VMMDEV_MAX_MEMORY_BALLOON(PhysMemTotal) ( (9 * (PhysMemTotal)) / 10 ) + +/** + * Poll for ballooning change request. + * + * Used by VMMDevReq_GetMemBalloonChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Balloon size in megabytes. */ + uint32_t cBalloonChunks; + /** Guest ram size in megabytes. */ + uint32_t cPhysMemChunks; + /** Setting this to VMMDEV_EVENT_BALLOON_CHANGE_REQUEST indicates that the + * request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevGetMemBalloonChangeRequest; +AssertCompileSize(VMMDevGetMemBalloonChangeRequest, 24+12); + + +/** + * Change the size of the balloon. + * + * Used by VMMDevReq_ChangeMemBalloon. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The number of pages in the array. */ + uint32_t cPages; + /** true = inflate, false = deflate. */ + uint32_t fInflate; + /** Physical address (RTGCPHYS) of each page, variable size. */ + RTGCPHYS aPhysPage[1]; +} VMMDevChangeMemBalloon; +AssertCompileSize(VMMDevChangeMemBalloon, 24+16); + +/** @name The ballooning chunk size which VMMDev works at. + * @{ */ +#define VMMDEV_MEMORY_BALLOON_CHUNK_PAGES (_1M/4096) +#define VMMDEV_MEMORY_BALLOON_CHUNK_SIZE (VMMDEV_MEMORY_BALLOON_CHUNK_PAGES*4096) +/** @} */ + + +/** + * Guest statistics interval change request structure. + * + * Used by VMMDevReq_GetStatisticsChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The interval in seconds. */ + uint32_t u32StatInterval; + /** Setting this to VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevGetStatisticsChangeRequest; +AssertCompileSize(VMMDevGetStatisticsChangeRequest, 24+8); + + +/** The size of a string field in the credentials request (including '\\0'). + * @see VMMDevCredentials */ +#define VMMDEV_CREDENTIALS_SZ_SIZE 128 + +/** + * Credentials request structure. + * + * Used by VMMDevReq_QueryCredentials. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN/OUT: Request flags. */ + uint32_t u32Flags; + /** OUT: User name (UTF-8). */ + char szUserName[VMMDEV_CREDENTIALS_SZ_SIZE]; + /** OUT: Password (UTF-8). */ + char szPassword[VMMDEV_CREDENTIALS_SZ_SIZE]; + /** OUT: Domain name (UTF-8). */ + char szDomain[VMMDEV_CREDENTIALS_SZ_SIZE]; +} VMMDevCredentials; +AssertCompileSize(VMMDevCredentials, 24+4+3*128); + +/** @name Credentials request flag (VMMDevCredentials::u32Flags) + * @{ */ +/** query from host whether credentials are present */ +#define VMMDEV_CREDENTIALS_QUERYPRESENCE RT_BIT(1) +/** read credentials from host (can be combined with clear) */ +#define VMMDEV_CREDENTIALS_READ RT_BIT(2) +/** clear credentials on host (can be combined with read) */ +#define VMMDEV_CREDENTIALS_CLEAR RT_BIT(3) +/** read credentials for judgement in the guest */ +#define VMMDEV_CREDENTIALS_READJUDGE RT_BIT(8) +/** clear credentials for judegement on the host */ +#define VMMDEV_CREDENTIALS_CLEARJUDGE RT_BIT(9) +/** report credentials acceptance by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_OK RT_BIT(10) +/** report credentials denial by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_DENY RT_BIT(11) +/** report that no judgement could be made by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_NOJUDGEMENT RT_BIT(12) + +/** flag telling the guest that credentials are present */ +#define VMMDEV_CREDENTIALS_PRESENT RT_BIT(16) +/** flag telling guest that local logons should be prohibited */ +#define VMMDEV_CREDENTIALS_NOLOCALLOGON RT_BIT(17) +/** @} */ + + +/** + * Seamless mode change request structure. + * + * Used by VMMDevReq_GetSeamlessChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + + /** New seamless mode. */ + VMMDevSeamlessMode mode; + /** Setting this to VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevSeamlessChangeRequest; +AssertCompileSize(VMMDevSeamlessChangeRequest, 24+8); +AssertCompileMemberOffset(VMMDevSeamlessChangeRequest, eventAck, 24+4); + + +/** + * Display change request structure. + * + * Used by VMMDevReq_GetDisplayChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevDisplayChangeRequest; +AssertCompileSize(VMMDevDisplayChangeRequest, 24+16); + + +/** + * Display change request structure, version 2. + * + * Used by VMMDevReq_GetDisplayChangeRequest2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; + /** 0 for primary display, 1 for the first secondary, etc. */ + uint32_t display; +} VMMDevDisplayChangeRequest2; +AssertCompileSize(VMMDevDisplayChangeRequest2, 24+20); + + +/** + * Display change request structure, version Extended. + * + * Used by VMMDevReq_GetDisplayChangeRequestEx. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; + /** 0 for primary display, 1 for the first secondary, etc. */ + uint32_t display; + /** New OriginX of secondary virtual screen */ + uint32_t cxOrigin; + /** New OriginY of secondary virtual screen */ + uint32_t cyOrigin; + /** Change in origin of the secondary virtaul scree is + * required */ + bool fChangeOrigin; + /** secondary virtual screen enabled or disabled */ + bool fEnabled; +} VMMDevDisplayChangeRequestEx; +AssertCompileSize(VMMDevDisplayChangeRequestEx, 24+32); + + +/** + * Video mode supported request structure. + * + * Used by VMMDevReq_VideoModeSupported. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN: Horizontal pixel resolution. */ + uint32_t width; + /** IN: Vertical pixel resolution. */ + uint32_t height; + /** IN: Bits per pixel. */ + uint32_t bpp; + /** OUT: Support indicator. */ + bool fSupported; +} VMMDevVideoModeSupportedRequest; +AssertCompileSize(VMMDevVideoModeSupportedRequest, 24+16); + +/** + * Video mode supported request structure for a specific display. + * + * Used by VMMDevReq_VideoModeSupported2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN: The guest display number. */ + uint32_t display; + /** IN: Horizontal pixel resolution. */ + uint32_t width; + /** IN: Vertical pixel resolution. */ + uint32_t height; + /** IN: Bits per pixel. */ + uint32_t bpp; + /** OUT: Support indicator. */ + bool fSupported; +} VMMDevVideoModeSupportedRequest2; +AssertCompileSize(VMMDevVideoModeSupportedRequest2, 24+20); + +/** + * Video modes height reduction request structure. + * + * Used by VMMDevReq_GetHeightReduction. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Height reduction in pixels. */ + uint32_t heightReduction; +} VMMDevGetHeightReductionRequest; +AssertCompileSize(VMMDevGetHeightReductionRequest, 24+4); + + +/** + * VRDP change request structure. + * + * Used by VMMDevReq_GetVRDPChangeRequest. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** Whether VRDP is active or not. */ + uint8_t u8VRDPActive; + /** The configured experience level for active VRDP. */ + uint32_t u32VRDPExperienceLevel; +} VMMDevVRDPChangeRequest; +AssertCompileSize(VMMDevVRDPChangeRequest, 24+8); +AssertCompileMemberOffset(VMMDevVRDPChangeRequest, u8VRDPActive, 24); +AssertCompileMemberOffset(VMMDevVRDPChangeRequest, u32VRDPExperienceLevel, 24+4); + +/** @name VRDP Experience level (VMMDevVRDPChangeRequest::u32VRDPExperienceLevel) + * @{ */ +#define VRDP_EXPERIENCE_LEVEL_ZERO 0 /**< Theming disabled. */ +#define VRDP_EXPERIENCE_LEVEL_LOW 1 /**< Full window dragging and desktop wallpaper disabled. */ +#define VRDP_EXPERIENCE_LEVEL_MEDIUM 2 /**< Font smoothing, gradients. */ +#define VRDP_EXPERIENCE_LEVEL_HIGH 3 /**< Animation effects disabled. */ +#define VRDP_EXPERIENCE_LEVEL_FULL 4 /**< Everything enabled. */ +/** @} */ + + +/** + * VBVA enable request structure. + * + * Used by VMMDevReq_VideoAccelEnable. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** 0 - disable, !0 - enable. */ + uint32_t u32Enable; + /** The size of VBVAMEMORY::au8RingBuffer expected by driver. + * The host will refuse to enable VBVA if the size is not equal to + * VBVA_RING_BUFFER_SIZE. + */ + uint32_t cbRingBuffer; + /** Guest initializes the status to 0. Host sets appropriate VBVA_F_STATUS_ flags. */ + uint32_t fu32Status; +} VMMDevVideoAccelEnable; +AssertCompileSize(VMMDevVideoAccelEnable, 24+12); + +/** @name VMMDevVideoAccelEnable::fu32Status. + * @{ */ +#define VBVA_F_STATUS_ACCEPTED (0x01) +#define VBVA_F_STATUS_ENABLED (0x02) +/** @} */ + + +/** + * VBVA flush request structure. + * + * Used by VMMDevReq_VideoAccelFlush. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevVideoAccelFlush; +AssertCompileSize(VMMDevVideoAccelFlush, 24); + + +/** + * VBVA set visible region request structure. + * + * Used by VMMDevReq_VideoSetVisibleRegion. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Number of rectangles */ + uint32_t cRect; + /** Rectangle array. + * @todo array is spelled aRects[1]. */ + RTRECT Rect; +} VMMDevVideoSetVisibleRegion; +AssertCompileSize(RTRECT, 16); +AssertCompileSize(VMMDevVideoSetVisibleRegion, 24+4+16); + +/** + * CPU event types. + */ +typedef enum +{ + VMMDevCpuStatusType_Invalid = 0, + VMMDevCpuStatusType_Disable = 1, + VMMDevCpuStatusType_Enable = 2, + VMMDevCpuStatusType_SizeHack = 0x7fffffff +} VMMDevCpuStatusType; + +/** + * CPU hotplug event status request. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Status type */ + VMMDevCpuStatusType enmStatusType; +} VMMDevCpuHotPlugStatusRequest; +AssertCompileSize(VMMDevCpuHotPlugStatusRequest, 24+4); + +/** + * Get the ID of the changed CPU and event type. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Event type */ + VMMDevCpuEventType enmEventType; + /** core id of the CPU changed */ + uint32_t idCpuCore; + /** package id of the CPU changed */ + uint32_t idCpuPackage; +} VMMDevGetCpuHotPlugRequest; +AssertCompileSize(VMMDevGetCpuHotPlugRequest, 24+4+4+4); + + +/** + * Shared region description + */ +typedef struct VMMDEVSHAREDREGIONDESC +{ + RTGCPTR64 GCRegionAddr; + uint32_t cbRegion; + uint32_t u32Alignment; +} VMMDEVSHAREDREGIONDESC; +AssertCompileSize(VMMDEVSHAREDREGIONDESC, 16); + +#define VMMDEVSHAREDREGIONDESC_MAX 32 + +/** + * Shared module registration + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Shared module size. */ + uint32_t cbModule; + /** Number of included region descriptors */ + uint32_t cRegions; + /** Base address of the shared module. */ + RTGCPTR64 GCBaseAddr; + /** Guest OS type. */ + VBOXOSFAMILY enmGuestOS; + /** Alignment. */ + uint32_t u32Align; + /** Module name */ + char szName[128]; + /** Module version */ + char szVersion[16]; + /** Shared region descriptor(s). */ + VMMDEVSHAREDREGIONDESC aRegions[1]; +} VMMDevSharedModuleRegistrationRequest; +AssertCompileSize(VMMDevSharedModuleRegistrationRequest, 24+4+4+8+4+4+128+16+16); + + +/** + * Shared module unregistration + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Shared module size. */ + uint32_t cbModule; + /** Align at 8 byte boundary. */ + uint32_t u32Alignment; + /** Base address of the shared module. */ + RTGCPTR64 GCBaseAddr; + /** Module name */ + char szName[128]; + /** Module version */ + char szVersion[16]; +} VMMDevSharedModuleUnregistrationRequest; +AssertCompileSize(VMMDevSharedModuleUnregistrationRequest, 24+4+4+8+128+16); + + +/** + * Shared module periodic check + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevSharedModuleCheckRequest; +AssertCompileSize(VMMDevSharedModuleCheckRequest, 24); + +/** + * Paging sharing enabled query + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Enabled flag (out) */ + bool fEnabled; + /** Alignment */ + bool fAlignment[3]; +} VMMDevPageSharingStatusRequest; +AssertCompileSize(VMMDevPageSharingStatusRequest, 24+4); + + +/** + * Page sharing status query (debug build only) + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Page address. */ + RTGCPTR GCPtrPage; + /** Page flags. */ + uint64_t uPageFlags; + /** Shared flag (out) */ + bool fShared; + /** Alignment */ + bool fAlignment[3]; +} VMMDevPageIsSharedRequest; + +/** + * Session id request structure. + * + * Used by VMMDevReq_GetSessionId. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** OUT: unique session id; the id will be different after each start, reset or restore of the VM */ + uint64_t idSession; +} VMMDevReqSessionId; +AssertCompileSize(VMMDevReqSessionId, 24+8); + + +/** + * Write Core Dump request. + * + * Used by VMMDevReq_WriteCoreDump. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Flags (reserved, MBZ). */ + uint32_t fFlags; +} VMMDevReqWriteCoreDump; +AssertCompileSize(VMMDevReqWriteCoreDump, 24+4); + +/** Heart beat check state structure. + * Used by VMMDevReq_HeartbeatConfigure. */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Guest heartbeat interval in nanosec. */ + uint64_t cNsInterval; + /** Heartbeat check flag. */ + bool fEnabled; +} VMMDevReqHeartbeat; +AssertCompileSize(VMMDevReqHeartbeat, 24+12); + + + +#ifdef VBOX_WITH_HGCM + +/** @name HGCM flags. + * @{ + */ +# define VBOX_HGCM_REQ_DONE RT_BIT_32(VBOX_HGCM_REQ_DONE_BIT) +# define VBOX_HGCM_REQ_DONE_BIT 0 +# define VBOX_HGCM_REQ_CANCELLED (0x2) +/** @} */ + +/** + * HGCM request header. + */ +typedef struct VMMDevHGCMRequestHeader +{ + /** Request header. */ + VMMDevRequestHeader header; + + /** HGCM flags. */ + uint32_t fu32Flags; + + /** Result code. */ + int32_t result; +} VMMDevHGCMRequestHeader; +AssertCompileSize(VMMDevHGCMRequestHeader, 24+8); + +/** + * HGCM connect request structure. + * + * Used by VMMDevReq_HGCMConnect. + */ +typedef struct +{ + /** HGCM request header. */ + VMMDevHGCMRequestHeader header; + + /** IN: Description of service to connect to. */ + HGCMServiceLocation loc; + + /** OUT: Client identifier assigned by local instance of HGCM. */ + uint32_t u32ClientID; +} VMMDevHGCMConnect; +AssertCompileSize(VMMDevHGCMConnect, 32+132+4); + + +/** + * HGCM disconnect request structure. + * + * Used by VMMDevReq_HGCMDisconnect. + */ +typedef struct +{ + /** HGCM request header. */ + VMMDevHGCMRequestHeader header; + + /** IN: Client identifier. */ + uint32_t u32ClientID; +} VMMDevHGCMDisconnect; +AssertCompileSize(VMMDevHGCMDisconnect, 32+4); + +/** + * HGCM parameter type. + */ +typedef enum +{ + VMMDevHGCMParmType_Invalid = 0, + VMMDevHGCMParmType_32bit = 1, + VMMDevHGCMParmType_64bit = 2, + VMMDevHGCMParmType_PhysAddr = 3, /**< @deprecated Doesn't work, use PageList. */ + VMMDevHGCMParmType_LinAddr = 4, /**< In and Out */ + VMMDevHGCMParmType_LinAddr_In = 5, /**< In (read; host<-guest) */ + VMMDevHGCMParmType_LinAddr_Out = 6, /**< Out (write; host->guest) */ + VMMDevHGCMParmType_LinAddr_Locked = 7, /**< Locked In and Out */ + VMMDevHGCMParmType_LinAddr_Locked_In = 8, /**< Locked In (read; host<-guest) */ + VMMDevHGCMParmType_LinAddr_Locked_Out = 9, /**< Locked Out (write; host->guest) */ + VMMDevHGCMParmType_PageList = 10, /**< Physical addresses of locked pages for a buffer. */ + VMMDevHGCMParmType_SizeHack = 0x7fffffff +} HGCMFunctionParameterType; +AssertCompileSize(HGCMFunctionParameterType, 4); + +# ifdef VBOX_WITH_64_BITS_GUESTS +/** + * HGCM function parameter, 32-bit client. + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS32 physAddr; + RTGCPTR32 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (RTGCPTR32)(uintptr_t)pv; + } +# endif /* __cplusplus */ +} HGCMFunctionParameter32; +AssertCompileSize(HGCMFunctionParameter32, 4+8); + +/** + * HGCM function parameter, 64-bit client. + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS64 physAddr; + RTGCPTR64 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (uintptr_t)pv; + } +# endif /** __cplusplus */ +} HGCMFunctionParameter64; +AssertCompileSize(HGCMFunctionParameter64, 4+12); + +/* Redefine the structure type for the guest code. */ +# ifndef VBOX_HGCM_HOST_CODE +# if ARCH_BITS == 64 +# define HGCMFunctionParameter HGCMFunctionParameter64 +# elif ARCH_BITS == 32 +# define HGCMFunctionParameter HGCMFunctionParameter32 +# else +# error "Unsupported sizeof (void *)" +# endif +# endif /* !VBOX_HGCM_HOST_CODE */ + +# else /* !VBOX_WITH_64_BITS_GUESTS */ + +/** + * HGCM function parameter, 32-bit client. + * + * @todo If this is the same as HGCMFunctionParameter32, why the duplication? + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS32 physAddr; + RTGCPTR32 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (uintptr_t)pv; + } +# endif /* __cplusplus */ +} HGCMFunctionParameter; +AssertCompileSize(HGCMFunctionParameter, 4+8); +# endif /* !VBOX_WITH_64_BITS_GUESTS */ + +/** + * HGCM call request structure. + * + * Used by VMMDevReq_HGCMCall, VMMDevReq_HGCMCall32 and VMMDevReq_HGCMCall64. + */ +typedef struct +{ + /* request header */ + VMMDevHGCMRequestHeader header; + + /** IN: Client identifier. */ + uint32_t u32ClientID; + /** IN: Service function number. */ + uint32_t u32Function; + /** IN: Number of parameters. */ + uint32_t cParms; + /** Parameters follow in form: HGCMFunctionParameter aParms[X]; */ +} VMMDevHGCMCall; +AssertCompileSize(VMMDevHGCMCall, 32+12); + +/** @name Direction of data transfer (HGCMPageListInfo::flags). Bit flags. + * @{ */ +#define VBOX_HGCM_F_PARM_DIRECTION_NONE UINT32_C(0x00000000) +#define VBOX_HGCM_F_PARM_DIRECTION_TO_HOST UINT32_C(0x00000001) +#define VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST UINT32_C(0x00000002) +#define VBOX_HGCM_F_PARM_DIRECTION_BOTH UINT32_C(0x00000003) +/** Macro for validating that the specified flags are valid. */ +#define VBOX_HGCM_F_PARM_ARE_VALID(fFlags) \ + ( (fFlags) > VBOX_HGCM_F_PARM_DIRECTION_NONE \ + && (fFlags) < VBOX_HGCM_F_PARM_DIRECTION_BOTH ) +/** @} */ + +/** + * VMMDevHGCMParmType_PageList points to this structure to actually describe the + * buffer. + */ +typedef struct +{ + uint32_t flags; /**< VBOX_HGCM_F_PARM_*. */ + uint16_t offFirstPage; /**< Offset in the first page where data begins. */ + uint16_t cPages; /**< Number of pages. */ + RTGCPHYS64 aPages[1]; /**< Page addresses. */ +} HGCMPageListInfo; +AssertCompileSize(HGCMPageListInfo, 4+2+2+8); + + +/** Get the pointer to the first parmater of a HGCM call request. */ +# define VMMDEV_HGCM_CALL_PARMS(a) ((HGCMFunctionParameter *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +/** Get the pointer to the first parmater of a 32-bit HGCM call request. */ +# define VMMDEV_HGCM_CALL_PARMS32(a) ((HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) + +# ifdef VBOX_WITH_64_BITS_GUESTS +/* Explicit defines for the host code. */ +# ifdef VBOX_HGCM_HOST_CODE +# define VMMDEV_HGCM_CALL_PARMS32(a) ((HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +# define VMMDEV_HGCM_CALL_PARMS64(a) ((HGCMFunctionParameter64 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +# endif /* VBOX_HGCM_HOST_CODE */ +# endif /* VBOX_WITH_64_BITS_GUESTS */ + +# define VBOX_HGCM_MAX_PARMS 32 + +/** + * HGCM cancel request structure. + * + * The Cancel request is issued using the same physical memory address as was + * used for the corresponding initial HGCMCall. + * + * Used by VMMDevReq_HGCMCancel. + */ +typedef struct +{ + /** Header. */ + VMMDevHGCMRequestHeader header; +} VMMDevHGCMCancel; +AssertCompileSize(VMMDevHGCMCancel, 32); + +/** + * HGCM cancel request structure, version 2. + * + * Used by VMMDevReq_HGCMCancel2. + * + * VINF_SUCCESS when cancelled. + * VERR_NOT_FOUND if the specified request cannot be found. + * VERR_INVALID_PARAMETER if the address is invalid valid. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The physical address of the request to cancel. */ + RTGCPHYS32 physReqToCancel; +} VMMDevHGCMCancel2; +AssertCompileSize(VMMDevHGCMCancel2, 24+4); + +#endif /* VBOX_WITH_HGCM */ + + +/** + * Inline helper to determine the request size for the given operation. + * Returns 0 if the given operation is not handled and/or supported. + * + * @returns Size. + * @param requestType The VMMDev request type. + */ +DECLINLINE(size_t) vmmdevGetRequestSize(VMMDevRequestType requestType) +{ + switch (requestType) + { + case VMMDevReq_GetMouseStatus: + case VMMDevReq_SetMouseStatus: + return sizeof(VMMDevReqMouseStatus); + case VMMDevReq_SetPointerShape: + return sizeof(VMMDevReqMousePointer); + case VMMDevReq_GetHostVersion: + return sizeof(VMMDevReqHostVersion); + case VMMDevReq_Idle: + return sizeof(VMMDevReqIdle); + case VMMDevReq_GetHostTime: + return sizeof(VMMDevReqHostTime); + case VMMDevReq_GetHypervisorInfo: + case VMMDevReq_SetHypervisorInfo: + return sizeof(VMMDevReqHypervisorInfo); + case VMMDevReq_RegisterPatchMemory: + case VMMDevReq_DeregisterPatchMemory: + return sizeof(VMMDevReqPatchMemory); + case VMMDevReq_SetPowerStatus: + return sizeof(VMMDevPowerStateRequest); + case VMMDevReq_AcknowledgeEvents: + return sizeof(VMMDevEvents); + case VMMDevReq_ReportGuestInfo: + return sizeof(VMMDevReportGuestInfo); + case VMMDevReq_ReportGuestInfo2: + return sizeof(VMMDevReportGuestInfo2); + case VMMDevReq_ReportGuestStatus: + return sizeof(VMMDevReportGuestStatus); + case VMMDevReq_ReportGuestUserState: + return sizeof(VMMDevReportGuestUserState); + case VMMDevReq_GetDisplayChangeRequest: + return sizeof(VMMDevDisplayChangeRequest); + case VMMDevReq_GetDisplayChangeRequest2: + return sizeof(VMMDevDisplayChangeRequest2); + case VMMDevReq_GetDisplayChangeRequestEx: + return sizeof(VMMDevDisplayChangeRequestEx); + case VMMDevReq_VideoModeSupported: + return sizeof(VMMDevVideoModeSupportedRequest); + case VMMDevReq_GetHeightReduction: + return sizeof(VMMDevGetHeightReductionRequest); + case VMMDevReq_ReportGuestCapabilities: + return sizeof(VMMDevReqGuestCapabilities); + case VMMDevReq_SetGuestCapabilities: + return sizeof(VMMDevReqGuestCapabilities2); +#ifdef VBOX_WITH_HGCM + case VMMDevReq_HGCMConnect: + return sizeof(VMMDevHGCMConnect); + case VMMDevReq_HGCMDisconnect: + return sizeof(VMMDevHGCMDisconnect); +#ifdef VBOX_WITH_64_BITS_GUESTS + case VMMDevReq_HGCMCall32: + return sizeof(VMMDevHGCMCall); + case VMMDevReq_HGCMCall64: + return sizeof(VMMDevHGCMCall); +#else + case VMMDevReq_HGCMCall: + return sizeof(VMMDevHGCMCall); +#endif /* VBOX_WITH_64_BITS_GUESTS */ + case VMMDevReq_HGCMCancel: + return sizeof(VMMDevHGCMCancel); +#endif /* VBOX_WITH_HGCM */ + case VMMDevReq_VideoAccelEnable: + return sizeof(VMMDevVideoAccelEnable); + case VMMDevReq_VideoAccelFlush: + return sizeof(VMMDevVideoAccelFlush); + case VMMDevReq_VideoSetVisibleRegion: + /* The original protocol didn't consider a guest with NO visible + * windows */ + return sizeof(VMMDevVideoSetVisibleRegion) - sizeof(RTRECT); + case VMMDevReq_GetSeamlessChangeRequest: + return sizeof(VMMDevSeamlessChangeRequest); + case VMMDevReq_QueryCredentials: + return sizeof(VMMDevCredentials); + case VMMDevReq_ReportGuestStats: + return sizeof(VMMDevReportGuestStats); + case VMMDevReq_GetMemBalloonChangeRequest: + return sizeof(VMMDevGetMemBalloonChangeRequest); + case VMMDevReq_GetStatisticsChangeRequest: + return sizeof(VMMDevGetStatisticsChangeRequest); + case VMMDevReq_ChangeMemBalloon: + return sizeof(VMMDevChangeMemBalloon); + case VMMDevReq_GetVRDPChangeRequest: + return sizeof(VMMDevVRDPChangeRequest); + case VMMDevReq_LogString: + return sizeof(VMMDevReqLogString); + case VMMDevReq_CtlGuestFilterMask: + return sizeof(VMMDevCtlGuestFilterMask); + case VMMDevReq_GetCpuHotPlugRequest: + return sizeof(VMMDevGetCpuHotPlugRequest); + case VMMDevReq_SetCpuHotPlugStatus: + return sizeof(VMMDevCpuHotPlugStatusRequest); + case VMMDevReq_RegisterSharedModule: + return sizeof(VMMDevSharedModuleRegistrationRequest); + case VMMDevReq_UnregisterSharedModule: + return sizeof(VMMDevSharedModuleUnregistrationRequest); + case VMMDevReq_CheckSharedModules: + return sizeof(VMMDevSharedModuleCheckRequest); + case VMMDevReq_GetPageSharingStatus: + return sizeof(VMMDevPageSharingStatusRequest); + case VMMDevReq_DebugIsPageShared: + return sizeof(VMMDevPageIsSharedRequest); + case VMMDevReq_GetSessionId: + return sizeof(VMMDevReqSessionId); + case VMMDevReq_HeartbeatConfigure: + return sizeof(VMMDevReqHeartbeat); + case VMMDevReq_GuestHeartbeat: + return sizeof(VMMDevRequestHeader); + default: + break; + } + + return 0; +} + + +/** + * Initializes a request structure. + * + * @returns VBox status code. + * @param req The request structure to initialize. + * @param type The request type. + */ +DECLINLINE(int) vmmdevInitRequest(VMMDevRequestHeader *req, VMMDevRequestType type) +{ + uint32_t requestSize; + if (!req) + return VERR_INVALID_PARAMETER; + requestSize = (uint32_t)vmmdevGetRequestSize(type); + if (!requestSize) + return VERR_INVALID_PARAMETER; + req->size = requestSize; + req->version = VMMDEV_REQUEST_HEADER_VERSION; + req->requestType = type; + req->rc = VERR_GENERAL_FAILURE; + req->reserved1 = 0; + req->reserved2 = 0; + return VINF_SUCCESS; +} + +/** @} */ + + +/** + * VBVA command header. + * + * @todo Where does this fit in? + */ +typedef struct VBVACMDHDR +{ + /** Coordinates of affected rectangle. */ + int16_t x; + int16_t y; + uint16_t w; + uint16_t h; +} VBVACMDHDR; +AssertCompileSize(VBVACMDHDR, 8); + +/** @name VBVA ring defines. + * + * The VBVA ring buffer is suitable for transferring large (< 2GB) amount of + * data. For example big bitmaps which do not fit to the buffer. + * + * Guest starts writing to the buffer by initializing a record entry in the + * aRecords queue. VBVA_F_RECORD_PARTIAL indicates that the record is being + * written. As data is written to the ring buffer, the guest increases off32End + * for the record. + * + * The host reads the aRecords on flushes and processes all completed records. + * When host encounters situation when only a partial record presents and + * cbRecord & ~VBVA_F_RECORD_PARTIAL >= VBVA_RING_BUFFER_SIZE - + * VBVA_RING_BUFFER_THRESHOLD, the host fetched all record data and updates + * off32Head. After that on each flush the host continues fetching the data + * until the record is completed. + * + */ +#define VBVA_RING_BUFFER_SIZE (_4M - _1K) +#define VBVA_RING_BUFFER_THRESHOLD (4 * _1K) + +#define VBVA_MAX_RECORDS (64) + +#define VBVA_F_MODE_ENABLED (0x00000001) +#define VBVA_F_MODE_VRDP (0x00000002) +#define VBVA_F_MODE_VRDP_RESET (0x00000004) +#define VBVA_F_MODE_VRDP_ORDER_MASK (0x00000008) + +#define VBVA_F_STATE_PROCESSING (0x00010000) + +#define VBVA_F_RECORD_PARTIAL (0x80000000) +/** @} */ + +/** + * VBVA record. + */ +typedef struct VBVARECORD +{ + /** The length of the record. Changed by guest. */ + uint32_t cbRecord; +} VBVARECORD; +AssertCompileSize(VBVARECORD, 4); + + +/** + * VBVA memory layout. + * + * This is a subsection of the VMMDevMemory structure. + */ +typedef struct VBVAMEMORY +{ + /** VBVA_F_MODE_*. */ + uint32_t fu32ModeFlags; + + /** The offset where the data start in the buffer. */ + uint32_t off32Data; + /** The offset where next data must be placed in the buffer. */ + uint32_t off32Free; + + /** The ring buffer for data. */ + uint8_t au8RingBuffer[VBVA_RING_BUFFER_SIZE]; + + /** The queue of record descriptions. */ + VBVARECORD aRecords[VBVA_MAX_RECORDS]; + uint32_t indexRecordFirst; + uint32_t indexRecordFree; + + /** RDP orders supported by the client. The guest reports only them + * and falls back to DIRTY rects for not supported ones. + * + * (1 << VBVA_VRDP_*) + */ + uint32_t fu32SupportedOrders; + +} VBVAMEMORY; +AssertCompileSize(VBVAMEMORY, 12 + (_4M-_1K) + 4*64 + 12); + + +/** + * The layout of VMMDEV RAM region that contains information for guest. + */ +typedef struct VMMDevMemory +{ + /** The size of this structure. */ + uint32_t u32Size; + /** The structure version. (VMMDEV_MEMORY_VERSION) */ + uint32_t u32Version; + + union + { + struct + { + /** Flag telling that VMMDev set the IRQ and acknowlegment is required */ + bool fHaveEvents; + } V1_04; + + struct + { + /** Pending events flags, set by host. */ + uint32_t u32HostEvents; + /** Mask of events the guest wants to see, set by guest. */ + uint32_t u32GuestEventMask; + } V1_03; + } V; + + VBVAMEMORY vbvaMemory; + +} VMMDevMemory; +AssertCompileSize(VMMDevMemory, 8+8 + (12 + (_4M-_1K) + 4*64 + 12) ); +AssertCompileMemberOffset(VMMDevMemory, vbvaMemory, 16); + +/** Version of VMMDevMemory structure (VMMDevMemory::u32Version). */ +#define VMMDEV_MEMORY_VERSION (1) + +/** @} */ + +RT_C_DECLS_END +#pragma pack() + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/VMMDev2.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/VMMDev2.h @@ -0,0 +1,122 @@ +/** @file + * Virtual Device for Guest <-> VMM/Host communication, Mixed Up Mess. (ADD,DEV) + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VMMDev2_h +#define ___VBox_VMMDev2_h + +#include + + +/** @addtogroup grp_vmmdev + * @{ + */ + + +/** + * Seamless mode. + * + * Used by VbglR3SeamlessWaitEvent + * + * @ingroup grp_vmmdev_req + * + * @todo DARN! DARN! DARN! Who forgot to do the 32-bit hack here??? + * FIXME! XXX! + * + * We will now have to carefully check how our compilers have treated this + * flag. If any are compressing it into a byte type, we'll have to check + * how the request memory is initialized. If we are 104% sure it's ok to + * expand it, we'll expand it. If not, we must redefine the field to a + * uint8_t and a 3 byte padding. + */ +typedef enum +{ + VMMDev_Seamless_Disabled = 0, /**< normal mode; entire guest desktop displayed. */ + VMMDev_Seamless_Visible_Region = 1, /**< visible region mode; only top-level guest windows displayed. */ + VMMDev_Seamless_Host_Window = 2 /**< windowed mode; each top-level guest window is represented in a host window. */ +} VMMDevSeamlessMode; + +/** + * CPU event types. + * + * Used by VbglR3CpuHotplugWaitForEvent + * + * @ingroup grp_vmmdev_req + */ +typedef enum +{ + VMMDevCpuEventType_Invalid = 0, + VMMDevCpuEventType_None = 1, + VMMDevCpuEventType_Plug = 2, + VMMDevCpuEventType_Unplug = 3, + VMMDevCpuEventType_SizeHack = 0x7fffffff +} VMMDevCpuEventType; + +/** + * HGCM service location types. + * @ingroup grp_vmmdev_req + */ +typedef enum +{ + VMMDevHGCMLoc_Invalid = 0, + VMMDevHGCMLoc_LocalHost = 1, + VMMDevHGCMLoc_LocalHost_Existing = 2, + VMMDevHGCMLoc_SizeHack = 0x7fffffff +} HGCMServiceLocationType; +AssertCompileSize(HGCMServiceLocationType, 4); + +/** + * HGCM host service location. + * @ingroup grp_vmmdev_req + */ +typedef struct +{ + char achName[128]; /**< This is really szName. */ +} HGCMServiceLocationHost; +AssertCompileSize(HGCMServiceLocationHost, 128); + +/** + * HGCM service location. + * @ingroup grp_vmmdev_req + */ +typedef struct HGCMSERVICELOCATION +{ + /** Type of the location. */ + HGCMServiceLocationType type; + + union + { + HGCMServiceLocationHost host; + } u; +} HGCMServiceLocation; +AssertCompileSize(HGCMServiceLocation, 128+4); + +/* forward declarations: */ +struct VMMDevReqMousePointer; +struct VMMDevMemory; + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/cdefs.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/cdefs.h @@ -0,0 +1,457 @@ +/** @file + * VirtualBox - Common C and C++ definition. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_cdefs_h +#define ___VBox_cdefs_h + +#include + + +/** @defgroup VBox Common Defintions and Macros + * @{ + */ + +/** @def VBOX_WITH_STATISTICS + * When defined all statistics will be included in the build. + * This is enabled by default in all debug builds. + */ +#ifndef VBOX_WITH_STATISTICS +# ifdef DEBUG +# define VBOX_WITH_STATISTICS +# endif +#endif + +/** @def VBOX_STRICT + * Alias for RT_STRICT. + */ +#ifdef RT_STRICT +# ifndef VBOX_STRICT +# define VBOX_STRICT +# endif +#endif + + +/* + * Shut up DOXYGEN warnings and guide it properly thru the code. + */ +#ifdef DOXYGEN_RUNNING +#define VBOX_WITH_STATISTICS +#define VBOX_STRICT +#define IN_DBG +#define IN_DIS +#define IN_INTNET_R0 +#define IN_INTNET_R3 +#define IN_PCIRAW_R0 +#define IN_PCIRAW_R3 +#define IN_REM_R3 +#define IN_SUP_R0 +#define IN_SUP_R3 +#define IN_SUP_RC +#define IN_SUP_STATIC +#define IN_USBLIB +#define IN_VBOXDDU +#define IN_VMM_RC +#define IN_VMM_R0 +#define IN_VMM_R3 +#define IN_VMM_STATIC +#endif + + + + +/** @def VBOXCALL + * The standard calling convention for VBOX interfaces. + */ +#define VBOXCALL RTCALL + + + +/** @def IN_DIS + * Used to indicate whether we're inside the same link module as the + * disassembler. + */ +/** @def DISDECL(type) + * Disassembly export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_DIS) +# define DISDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define DISDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_DBG + * Used to indicate whether we're inside the same link module as the debugger + * console, gui, and related things (ring-3). + */ +/** @def DBGDECL(type) + * Debugger module export or import declaration. + * Functions declared using this exists only in R3 since the + * debugger modules is R3 only. + * @param type The return type of the function declaration. + */ +#if defined(IN_DBG_R3) || defined(IN_DBG) +# define DBGDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define DBGDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_INTNET_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * Internal Networking Service. + */ +/** @def INTNETR3DECL(type) + * Internal Networking Service export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_INTNET_R3 +# define INTNETR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define INTNETR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_INTNET_R0 + * Used to indicate whether we're inside the same link module as the R0 + * Internal Network Service. + */ +/** @def INTNETR0DECL(type) + * Internal Networking Service export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_INTNET_R0 +# define INTNETR0DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define INTNETR0DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_PCIRAW_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * PCI passthrough support. + */ +/** @def PCIRAWR3DECL(type) + * PCI passthrough export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_PCIRAW_R3 +# define PCIRAWR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define PCIRAWR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_PCIRAW_R0 + * Used to indicate whether we're inside the same link module as the R0 + * PCI passthrough support. + */ +/** @def PCIRAWR0DECL(type) + * PCI passthroug export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_PCIRAW_R0 +# define PCIRAWR0DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define PCIRAWR0DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_REM_R3 + * Used to indicate whether we're inside the same link module as + * the HC Ring-3 Recompiled Execution Manager. + */ +/** @def REMR3DECL(type) + * Recompiled Execution Manager HC Ring-3 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_REM_R3 +# define REMR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define REMR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_SUP_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * Support Library or not. + */ +/** @def SUPR3DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_R3 +# ifdef IN_SUP_STATIC +# define SUPR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR3DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# ifdef IN_SUP_STATIC +# define SUPR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR3DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#endif + +/** @def IN_SUP_R0 + * Used to indicate whether we're inside the same link module as the Ring-0 + * Support Library or not. + */ +/** @def IN_SUP_STATIC + * Used to indicate that the Support Library is built or used as a static + * library. + */ +/** @def SUPR0DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_R0 +# ifdef IN_SUP_STATIC +# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR0DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# ifdef IN_SUP_STATIC +# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR0DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#endif + +/** @def IN_SUP_RC + * Used to indicate whether we're inside the same link module as the RC Support + * Library or not. + */ +/** @def SUPRCDECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_RC +# define SUPRCDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define SUPRCDECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_SUP_R0 + * Used to indicate whether we're inside the same link module as the Ring-0 + * Support Library or not. + */ +/** @def SUPR0DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_RC) +# define SUPDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define SUPDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_USBLIB + * Used to indicate whether we're inside the same link module as the USBLib. + */ +/** @def USBLIB_DECL + * USBLIB export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RING0 +# define USBLIB_DECL(type) type VBOXCALL +#elif defined(IN_USBLIB) +# define USBLIB_DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define USBLIB_DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_VMM_STATIC + * Used to indicate that the virtual machine monitor is built or used as a + * static library. + */ +/** @def IN_VMM_R3 + * Used to indicate whether we're inside the same link module as the ring 3 part of the + * virtual machine monitor or not. + */ +/** @def VMMR3DECL + * Ring-3 VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R3 +# ifdef IN_VMM_STATIC +# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define VMMR3DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#elif defined(IN_RING3) +# ifdef IN_VMM_STATIC +# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define VMMR3DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#else +# define VMMR3DECL(type) DECL_INVALID(type) +#endif + +/** @def IN_VMM_R0 + * Used to indicate whether we're inside the same link module as the ring-0 part + * of the virtual machine monitor or not. + */ +/** @def VMMR0DECL + * Ring-0 VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R0 +# define VMMR0DECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RING0) +# define VMMR0DECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMR0DECL(type) DECL_INVALID(type) +#endif + +/** @def IN_VMM_RC + * Used to indicate whether we're inside the same link module as the raw-mode + * context part of the virtual machine monitor or not. + */ +/** @def VMMRCDECL + * Raw-mode context VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_RC +# define VMMRCDECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RC) +# define VMMRCDECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMRCDECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRZDECL + * Ring-0 and Raw-mode context VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMMRZDECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RING0) || defined(IN_RZ) +# define VMMRZDECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMRZDECL(type) DECL_INVALID(type) +#endif + +/** @def VMMDECL + * VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_STATIC +# define VMMDECL(type) DECLHIDDEN(type) VBOXCALL +#elif defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMMDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define VMMDECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def VMM_INT_DECL + * VMM internal function. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMM_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMM_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMR3_INT_DECL + * VMM internal function, ring-3. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R3 +# define VMMR3_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMR3_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMR0_INT_DECL + * VMM internal function, ring-0. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R0 +# define VMMR0_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMR0_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRC_INT_DECL + * VMM internal function, raw-mode context. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_RC +# define VMMRC_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMRC_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRZ_INT_DECL + * VMM internal function, ring-0 + raw-mode context. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_RC) || defined(IN_VMM_R0) +# define VMMRZ_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMRZ_INT_DECL(type) DECL_INVALID(type) +#endif + + + +/** @def IN_VBOXDDU + * Used to indicate whether we're inside the VBoxDDU shared object. + */ +/** @def VBOXDDU_DECL(type) + * VBoxDDU export or import (ring-3). + * @param type The return type of the function declaration. + */ +#ifdef IN_VBOXDDU +# ifdef IN_VBOXDDU_STATIC +# define VBOXDDU_DECL(type) type +# else +# define VBOXDDU_DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# define VBOXDDU_DECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @} */ + + +/** @defgroup grp_devdrv Device Emulations and Drivers + * @{ */ +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/err.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/err.h @@ -0,0 +1,2714 @@ +/** @file + * VirtualBox Status Codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_err_h +#define ___VBox_err_h + +#include +#include + + +/** @defgroup grp_err VBox Error Codes + * @{ + */ + +/* SED-START */ + +/** @name Misc. Status Codes + * @{ + */ +/** Failed to allocate VM memory. */ +#define VERR_NO_VM_MEMORY (-1000) +/** RC is toasted and the VMM should be terminated at once, but no need to + * panic about it :-) */ +#define VERR_DONT_PANIC (-1001) +/** Unsupported CPU. */ +#define VERR_UNSUPPORTED_CPU (-1002) +/** Unsupported CPU mode. */ +#define VERR_UNSUPPORTED_CPU_MODE (-1003) +/** Page not present. */ +#define VERR_PAGE_NOT_PRESENT (-1004) +/** Invalid/Corrupted configuration file. */ +#define VERR_CFG_INVALID_FORMAT (-1005) +/** No configuration value exists. */ +#define VERR_CFG_NO_VALUE (-1006) +/** Selector not present. */ +#define VERR_SELECTOR_NOT_PRESENT (-1007) +/** Not code selector. */ +#define VERR_NOT_CODE_SELECTOR (-1008) +/** Not data selector. */ +#define VERR_NOT_DATA_SELECTOR (-1009) +/** Out of selector bounds. */ +#define VERR_OUT_OF_SELECTOR_BOUNDS (-1010) +/** Invalid selector. Usually beyond table limits. */ +#define VERR_INVALID_SELECTOR (-1011) +/** Invalid requested privilege level. */ +#define VERR_INVALID_RPL (-1012) +/** PML4 entry not present. */ +#define VERR_PAGE_MAP_LEVEL4_NOT_PRESENT (-1013) +/** Page directory pointer not present. */ +#define VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT (-1014) +/** Raw mode doesn't support SMP. */ +#define VERR_RAW_MODE_INVALID_SMP (-1015) +/** Invalid VM handle. */ +#define VERR_INVALID_VM_HANDLE (-1016) +/** Invalid VM handle. */ +#define VERR_INVALID_VMCPU_HANDLE (-1017) +/** Invalid Virtual CPU ID. */ +#define VERR_INVALID_CPU_ID (-1018) +/** Too many VCPUs. */ +#define VERR_TOO_MANY_CPUS (-1019) +/** The service was disabled on the host. + * Returned by pfnInit in VBoxService to indicated a non-fatal error that + * should results in the particular service being disabled. */ +#define VERR_SERVICE_DISABLED (-1020) +/** The requested feature is not supported in raw-mode. */ +#define VERR_NOT_SUP_IN_RAW_MODE (-1021) +/** Invalid CPU index. */ +#define VERR_INVALID_CPU_INDEX (-1022) +/** This VirtualBox build does not support raw-mode. */ +#define VERR_RAW_MODE_NOT_SUPPORTED (-1023) +/** @} */ + + +/** @name Execution Monitor/Manager (EM) Status Codes + * + * The order of the status codes between VINF_EM_FIRST and VINF_EM_LAST + * are of vital importance. The lower the number the higher importance + * as a scheduling instruction. + * @{ + */ +/** First scheduling related status code. */ +#define VINF_EM_FIRST 1100 +/** Indicating that the VM is being terminated and that the execution + * shall stop. */ +#define VINF_EM_TERMINATE 1100 +/** Hypervisor code was stepped. + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_STEPPED 1101 +/** Hit a breakpoint in the hypervisor code, + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_BREAKPOINT 1102 +/** Hit a possible assertion in the hypervisor code, + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_ASSERTION 1103 +/** Indicating that the VM should be suspended for debugging because + * the developer wants to inspect the VM state. */ +#define VINF_EM_DBG_STOP 1105 +/** Indicating success single stepping and that EM should report that + * event to the debugger. */ +#define VINF_EM_DBG_STEPPED 1106 +/** Indicating that a breakpoint was hit and that EM should notify the debugger + * and in the event there is no debugger fail fatally. */ +#define VINF_EM_DBG_BREAKPOINT 1107 +/** Indicating that EM should single step an instruction. + * The instruction is stepped in the current execution mode (RAW/REM). */ +#define VINF_EM_DBG_STEP 1108 +/** Indicating that the VM is being turned off and that the EM should + * exit to the VM awaiting the destruction request. */ +#define VINF_EM_OFF 1109 +/** Indicating that the VM has been suspended and that the thread + * should wait for request telling it what to do next. */ +#define VINF_EM_SUSPEND 1110 +/** Indicating that the VM has been reset and that scheduling goes + * back to startup defaults. */ +#define VINF_EM_RESET 1111 +/** Indicating that the VM has executed a halt instruction and that + * the emulation thread should wait for an interrupt before resuming + * execution. */ +#define VINF_EM_HALT 1112 +/** Indicating that the VM has been resumed and that the thread should + * start executing. */ +#define VINF_EM_RESUME 1113 +/** Indicating that we've got an out-of-memory condition and that we need + * to take the appropriate actions to deal with this. + * @remarks It might seem odd at first that this has lower priority than VINF_EM_HALT, + * VINF_EM_SUSPEND, and VINF_EM_RESUME. The reason is that these events are + * vital to correctly operating the VM. Also, they can't normally occur together + * with an out-of-memory condition, and even if that should happen the condition + * will be rediscovered before executing any more code. */ +#define VINF_EM_NO_MEMORY 1114 +/** The fatal variant of VINF_EM_NO_MEMORY. */ +#define VERR_EM_NO_MEMORY (-1114) +/** Indicating that a rescheduling to recompiled execution. + * Typically caused by raw-mode executing code which is difficult/slow + * to virtualize rawly. + * @remarks Important to have a higher priority (lower number) than the other rescheduling status codes. */ +#define VINF_EM_RESCHEDULE_REM 1115 +/** Indicating that a rescheduling to vmx-mode execution. + * Typically caused by REM detecting that hardware-accelerated raw-mode execution is possible. */ +#define VINF_EM_RESCHEDULE_HM 1116 +/** Indicating that a rescheduling to raw-mode execution. + * Typically caused by REM detecting that raw-mode execution is possible. + * @remarks Important to have a higher priority (lower number) than VINF_EM_RESCHEDULE. */ +#define VINF_EM_RESCHEDULE_RAW 1117 +/** Indicating that a rescheduling now is required. Typically caused by + * interrupts having changed the EIP. */ +#define VINF_EM_RESCHEDULE 1118 +/** PARAV call */ +#define VINF_EM_RESCHEDULE_PARAV 1119 +/** Go back into wait for SIPI mode */ +#define VINF_EM_WAIT_SIPI 1120 +/** Last scheduling related status code. (inclusive) */ +#define VINF_EM_LAST 1120 + +/** Reason for leaving RC: Guest trap which couldn't be handled in RC. + * The trap is generally forwarded to the REM and executed there. */ +#define VINF_EM_RAW_GUEST_TRAP 1121 +/** Reason for leaving RC: Interrupted by external interrupt. + * The interrupt needed to be handled by the host OS. */ +#define VINF_EM_RAW_INTERRUPT 1122 +/** Reason for leaving RC: Interrupted by external interrupt while in hypervisor + * code. The interrupt needed to be handled by the host OS and hypervisor + * execution must be resumed. VM state is not complete at this point. */ +#define VINF_EM_RAW_INTERRUPT_HYPER 1123 +/** Reason for leaving RC: A Ring switch was attempted. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_RING_SWITCH 1124 +/** Reason for leaving RC: A Ring switch was attempted using software interrupt. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_RING_SWITCH_INT 1125 +/** Reason for leaving RC: A privileged instruction was attempted executed. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_EXCEPTION_PRIVILEGED 1126 + +/** Reason for leaving RZ: Emulate instruction. */ +#define VINF_EM_RAW_EMULATE_INSTR 1127 +/** Reason for leaving RC: Unhandled TSS write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_TSS_FAULT 1128 +/** Reason for leaving RC: Unhandled LDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_LDT_FAULT 1129 +/** Reason for leaving RC: Unhandled IDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_IDT_FAULT 1130 +/** Reason for leaving RC: Partly handled GDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_GDT_FAULT 1131 +/** Reason for leaving RC: jump inside generated patch jump. + * Fatal error. */ +#define VERR_EM_RAW_PATCH_CONFLICT (-1133) +/** Reason for leaving RZ: Ring-3 operation pending. */ +#define VINF_EM_RAW_TO_R3 1135 +/** Reason for leaving RZ: Timer pending. */ +#define VINF_EM_RAW_TIMER_PENDING 1136 +/** Reason for leaving RC: Interrupt pending (guest). */ +#define VINF_EM_RAW_INTERRUPT_PENDING 1137 +/** Reason for leaving RC: Encountered a stale selector. */ +#define VINF_EM_RAW_STALE_SELECTOR 1138 +/** Reason for leaving RC: The IRET resuming guest code trapped. */ +#define VINF_EM_RAW_IRET_TRAP 1139 +/** Reason for leaving RC: Emulate (MM)IO intensive code in the recompiler. */ +#define VINF_EM_RAW_EMULATE_IO_BLOCK 1140 +/** The interpreter was unable to deal with the instruction at hand. */ +#define VERR_EM_INTERPRETER (-1148) +/** Internal EM error caused by an unknown warning or informational status code. */ +#define VERR_EM_INTERNAL_ERROR (-1149) +/** Pending VM request packet. */ +#define VINF_EM_PENDING_REQUEST 1150 +/** Start instruction stepping (debug only). */ +#define VINF_EM_RAW_EMULATE_DBG_STEP 1151 +/** Patch TPR access instruction. */ +#define VINF_EM_HM_PATCH_TPR_INSTR 1152 +/** Unexpected guest mapping conflict detected. */ +#define VERR_EM_UNEXPECTED_MAPPING_CONFLICT (-1154) +/** Reason for leaving RC: A triple-fault condition. Currently, causes + * a guru meditation. */ +#define VINF_EM_TRIPLE_FAULT 1155 +/** The specified execution engine cannot execute guest code in the current + * state. */ +#define VERR_EM_CANNOT_EXEC_GUEST (-1156) +/** Reason for leaving RC: Inject a TRPM event. */ +#define VINF_EM_RAW_INJECT_TRPM_EVENT 1157 +/** Guest tried to trigger a CPU hang. The guest is probably up to no good. */ +#define VERR_EM_GUEST_CPU_HANG (-1158) +/** @} */ + + +/** @name Debugging Facility (DBGF) DBGF Status Codes + * @{ + */ +/** The function called requires the caller to be attached as a + * debugger to the VM. */ +#define VERR_DBGF_NOT_ATTACHED (-1200) +/** Someone (including the caller) was already attached as + * debugger to the VM. */ +#define VERR_DBGF_ALREADY_ATTACHED (-1201) +/** Tried to halt a debugger which was already halted. + * (This is a warning and not an error.) */ +#define VWRN_DBGF_ALREADY_HALTED 1202 +/** The DBGF has no more free breakpoint slots. */ +#define VERR_DBGF_NO_MORE_BP_SLOTS (-1203) +/** The DBGF couldn't find the specified breakpoint. */ +#define VERR_DBGF_BP_NOT_FOUND (-1204) +/** Attempted to enabled a breakpoint which was already enabled. */ +#define VINF_DBGF_BP_ALREADY_ENABLED 1205 +/** Attempted to disabled a breakpoint which was already disabled. */ +#define VINF_DBGF_BP_ALREADY_DISABLED 1206 +/** The breakpoint already exists. */ +#define VINF_DBGF_BP_ALREADY_EXIST 1207 +/** The byte string was not found. */ +#define VERR_DBGF_MEM_NOT_FOUND (-1208) +/** The OS was not detected. */ +#define VERR_DBGF_OS_NOT_DETCTED (-1209) +/** The OS was not detected. */ +#define VINF_DBGF_OS_NOT_DETCTED 1209 +/** The specified register was not found. */ +#define VERR_DBGF_REGISTER_NOT_FOUND (-1210) +/** The value was truncated to fit. + * For queries this means that the register is wider than the queried value. + * For setters this means that the value is wider than the register. */ +#define VINF_DBGF_TRUNCATED_REGISTER 1211 +/** The value was zero extended to fit. + * For queries this means that the register is narrower than the queried value. + * For setters this means that the value is narrower than the register. */ +#define VINF_DBGF_ZERO_EXTENDED_REGISTER 1212 +/** The requested type conversion was not supported. */ +#define VERR_DBGF_UNSUPPORTED_CAST (-1213) +/** The register is read-only and cannot be modified. */ +#define VERR_DBGF_READ_ONLY_REGISTER (-1214) +/** Internal processing error \#1 in the DBGF register code. */ +#define VERR_DBGF_REG_IPE_1 (-1215) +/** Internal processing error \#2 in the DBGF register code. */ +#define VERR_DBGF_REG_IPE_2 (-1216) +/** Unhandled \#DB in hypervisor code. */ +#define VERR_DBGF_HYPER_DB_XCPT (-1217) +/** Internal processing error \#1 in the DBGF stack code. */ +#define VERR_DBGF_STACK_IPE_1 (-1218) +/** Internal processing error \#2 in the DBGF stack code. */ +#define VERR_DBGF_STACK_IPE_2 (-1219) +/** No trace buffer available, please change the VM config. */ +#define VERR_DBGF_NO_TRACE_BUFFER (-1220) +/** @} */ + + +/** @name Patch Manager (PATM) Status Codes + * @{ + */ +/** Non fatal Patch Manager analysis phase warning */ +#define VWRN_CONTINUE_ANALYSIS 1400 +/** Non fatal Patch Manager recompile phase warning (mapped to VWRN_CONTINUE_ANALYSIS). */ +#define VWRN_CONTINUE_RECOMPILE VWRN_CONTINUE_ANALYSIS +/** Continue search (mapped to VWRN_CONTINUE_ANALYSIS). */ +#define VWRN_PATM_CONTINUE_SEARCH VWRN_CONTINUE_ANALYSIS +/** Patch installation refused (patch too complex or unsupported instructions ) */ +#define VERR_PATCHING_REFUSED (-1401) +/** Unable to find patch */ +#define VERR_PATCH_NOT_FOUND (-1402) +/** Patch disabled */ +#define VERR_PATCH_DISABLED (-1403) +/** Patch enabled */ +#define VWRN_PATCH_ENABLED 1404 +/** Patch was already disabled */ +#define VERR_PATCH_ALREADY_DISABLED (-1405) +/** Patch was already enabled */ +#define VERR_PATCH_ALREADY_ENABLED (-1406) +/** Patch was removed. */ +#define VWRN_PATCH_REMOVED 1407 + +/** Reason for leaving RC: \#GP with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_TRAP_GP 1408 +/** First leave RC code. */ +#define VINF_PATM_LEAVE_RC_FIRST VINF_PATM_PATCH_TRAP_GP +/** Reason for leaving RC: \#PF with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_TRAP_PF 1409 +/** Reason for leaving RC: int3 with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_INT3 1410 +/** Reason for leaving RC: \#PF for monitored patch page. */ +#define VINF_PATM_CHECK_PATCH_PAGE 1411 +/** Reason for leaving RC: duplicate instruction called at current eip. */ +#define VINF_PATM_DUPLICATE_FUNCTION 1412 +/** Execute one instruction with the recompiler */ +#define VINF_PATCH_EMULATE_INSTR 1413 +/** Reason for leaving RC: attempt to patch MMIO write. */ +#define VINF_PATM_HC_MMIO_PATCH_WRITE 1414 +/** Reason for leaving RC: attempt to patch MMIO read. */ +#define VINF_PATM_HC_MMIO_PATCH_READ 1415 +/** Reason for leaving RC: pending irq after iret that sets IF. */ +#define VINF_PATM_PENDING_IRQ_AFTER_IRET 1416 +/** Last leave RC code. */ +#define VINF_PATM_LEAVE_RC_LAST VINF_PATM_PENDING_IRQ_AFTER_IRET + +/** No conflicts to resolve */ +#define VERR_PATCH_NO_CONFLICT (-1425) +/** Detected unsafe code for patching */ +#define VERR_PATM_UNSAFE_CODE (-1426) +/** Terminate search branch */ +#define VWRN_PATCH_END_BRANCH 1427 +/** Already patched */ +#define VERR_PATM_ALREADY_PATCHED (-1428) +/** Spinlock detection failed. */ +#define VINF_PATM_SPINLOCK_FAILED (1429) +/** Continue execution after patch trap. */ +#define VINF_PATCH_CONTINUE (1430) +/** The patch manager is not used because we're using HM and VT-x/AMD-V. */ +#define VERR_PATM_HM_IPE (-1431) +/** Unexpected trap in patch code. */ +#define VERR_PATM_IPE_TRAP_IN_PATCH_CODE (-1432) + +/** @} */ + + +/** @name Code Scanning and Analysis Manager (CSAM) Status Codes + * @{ + */ +/** Trap not handled */ +#define VWRN_CSAM_TRAP_NOT_HANDLED 1500 +/** Patch installed */ +#define VWRN_CSAM_INSTRUCTION_PATCHED 1501 +/** Page record not found */ +#define VWRN_CSAM_PAGE_NOT_FOUND 1502 +/** Reason for leaving RC: CSAM wants perform a task in ring-3. */ +#define VINF_CSAM_PENDING_ACTION 1503 +/** The CSAM is not used because we're using HM and VT-x/AMD-V. */ +#define VERR_CSAM_HM_IPE (-1504) +/** @} */ + + +/** @name Page Monitor/Manager (PGM) Status Codes + * @{ + */ +/** Attempt to create a GC mapping which conflicts with an existing mapping. */ +#define VERR_PGM_MAPPING_CONFLICT (-1600) +/** The physical handler range has no corresponding RAM range. + * If this is MMIO, see todo above the return. If not MMIO, then it's + * someone else's fault... */ +#define VERR_PGM_HANDLER_PHYSICAL_NO_RAM_RANGE (-1601) +/** Attempt to register an access handler for a virtual range of which a part + * was already handled. */ +#define VERR_PGM_HANDLER_VIRTUAL_CONFLICT (-1602) +/** Attempt to register an access handler for a physical range of which a part + * was already handled. */ +#define VERR_PGM_HANDLER_PHYSICAL_CONFLICT (-1603) +/** Invalid page directory specified to PGM. */ +#define VERR_PGM_INVALID_PAGE_DIRECTORY (-1604) +/** Invalid GC physical address. */ +#define VERR_PGM_INVALID_GC_PHYSICAL_ADDRESS (-1605) +/** Invalid GC physical range. Usually used when a specified range crosses + * a RAM region boundary. */ +#define VERR_PGM_INVALID_GC_PHYSICAL_RANGE (-1606) +/** Specified access handler was not found. */ +#define VERR_PGM_HANDLER_NOT_FOUND (-1607) +/** Attempt to register a RAM range of which parts are already + * covered by existing RAM ranges. */ +#define VERR_PGM_RAM_CONFLICT (-1608) +/** Failed to add new mappings because the current mappings are fixed + * in guest os memory. */ +#define VERR_PGM_MAPPINGS_FIXED (-1609) +/** Failed to fix mappings because of a conflict with the intermediate code. */ +#define VERR_PGM_MAPPINGS_FIX_CONFLICT (-1610) +/** Failed to fix mappings because a mapping rejected the address. */ +#define VERR_PGM_MAPPINGS_FIX_REJECTED (-1611) +/** Failed to fix mappings because the proposed memory area was to small. */ +#define VERR_PGM_MAPPINGS_FIX_TOO_SMALL (-1612) +/** Reason for leaving RZ: The urge to syncing CR3. */ +#define VINF_PGM_SYNC_CR3 1613 +/** Page not marked for dirty bit tracking */ +#define VINF_PGM_NO_DIRTY_BIT_TRACKING 1614 +/** Page fault caused by dirty bit tracking; corrected */ +#define VINF_PGM_HANDLED_DIRTY_BIT_FAULT 1615 +/** Go ahead with the default Read/Write operation. + * This is returned by a R3 physical or virtual handler when it wants the + * PGMPhys[Read|Write] routine do the reading/writing. */ +#define VINF_PGM_HANDLER_DO_DEFAULT 1616 +/** The paging mode of the host is not supported yet. */ +#define VERR_PGM_UNSUPPORTED_HOST_PAGING_MODE (-1617) +/** The physical guest page is a reserved/MMIO page and does not have any HC + * address. */ +#define VERR_PGM_PHYS_PAGE_RESERVED (-1618) +/** No page directory available for the hypervisor. */ +#define VERR_PGM_NO_HYPERVISOR_ADDRESS (-1619) +/** The shadow page pool was flushed. + * This means that a global CR3 sync was flagged. Anyone receiving this kind of status + * will have to get down to a SyncCR3 ASAP. See also VINF_PGM_SYNC_CR3. */ +#define VERR_PGM_POOL_FLUSHED (-1620) +/** The shadow page pool was cleared. + * This is a error code internal to the shadow page pool, it will be + * converted to a VERR_PGM_POOL_FLUSHED before leaving the pool code. */ +#define VERR_PGM_POOL_CLEARED (-1621) +/** The returned shadow page is cached. */ +#define VINF_PGM_CACHED_PAGE 1622 +/** Returned by handler registration, modification and deregistration + * when the shadow PTs could be updated because the guest page + * aliased or/and mapped by multiple PTs. */ +#define VINF_PGM_GCPHYS_ALIASED 1623 +/** Reason for leaving RC: Paging mode changed. + * PGMChangeMode() uses this to force a switch to R3 so it can safely deal with + * a mode switch. */ +#define VINF_PGM_CHANGE_MODE 1624 +/** SyncPage modified the PDE. + * This is an internal status code used to communicate back to the \#PF handler + * that the PDE was (probably) marked not-present and it should restart the instruction. */ +#define VINF_PGM_SYNCPAGE_MODIFIED_PDE 1625 +/** Physical range crosses dynamic ram chunk boundary; translation to HC ptr not safe. */ +#define VERR_PGM_GCPHYS_RANGE_CROSSES_BOUNDARY (-1626) +/** Conflict between the core memory and the intermediate paging context, try again. + * There are some very special conditions applying to the intermediate paging context + * (used during the world switches), and some times we continuously run into these + * when asking the host kernel for memory during VM init. Let us know if you run into + * this and we'll adjust the code so it tries harder to avoid it. + */ +#define VERR_PGM_INTERMEDIATE_PAGING_CONFLICT (-1627) +/** The shadow paging mode is not supported yet. */ +#define VERR_PGM_UNSUPPORTED_SHADOW_PAGING_MODE (-1628) +/** The dynamic mapping cache for physical memory failed. */ +#define VERR_PGM_DYNMAP_FAILED (-1629) +/** The auto usage cache for the dynamic mapping set is full. */ +#define VERR_PGM_DYNMAP_FULL_SET (-1630) +/** The initialization of the dynamic mapping cache failed. */ +#define VERR_PGM_DYNMAP_SETUP_ERROR (-1631) +/** The expanding of the dynamic mapping cache failed. */ +#define VERR_PGM_DYNMAP_EXPAND_ERROR (-1632) +/** The page is unassigned (akin to VERR_PGM_INVALID_GC_PHYSICAL_ADDRESS). */ +#define VERR_PGM_PHYS_TLB_UNASSIGNED (-1633) +/** Catch any access and route it thru PGM. */ +#define VERR_PGM_PHYS_TLB_CATCH_ALL (-1634) +/** Catch write access and route it thru PGM. */ +#define VINF_PGM_PHYS_TLB_CATCH_WRITE 1635 +/** Catch write access and route it thru PGM. */ +#define VERR_PGM_PHYS_TLB_CATCH_WRITE (-1635) +/** No CR3 root shadow page table. */ +#define VERR_PGM_NO_CR3_SHADOW_ROOT (-1636) +/** Trying to free a page with an invalid Page ID. */ +#define VERR_PGM_PHYS_INVALID_PAGE_ID (-1637) +/** PGMPhysWrite/Read hit a handler in Ring-0 or raw-mode context. */ +#define VERR_PGM_PHYS_WR_HIT_HANDLER (-1638) +/** Trying to free a page that isn't RAM. */ +#define VERR_PGM_PHYS_NOT_RAM (-1639) +/** Not ROM page. */ +#define VERR_PGM_PHYS_NOT_ROM (-1640) +/** Not MMIO page. */ +#define VERR_PGM_PHYS_NOT_MMIO (-1641) +/** Not MMIO2 page. */ +#define VERR_PGM_PHYS_NOT_MMIO2 (-1642) +/** Already aliased to a different page. */ +#define VERR_PGM_HANDLER_ALREADY_ALIASED (-1643) +/** Already aliased to the same page. */ +#define VINF_PGM_HANDLER_ALREADY_ALIASED (1643) +/** PGM pool flush pending - return to ring 3. */ +#define VINF_PGM_POOL_FLUSH_PENDING (1644) +/** Unable to use the range for a large page. */ +#define VERR_PGM_INVALID_LARGE_PAGE_RANGE (-1645) +/** Don't mess around with ballooned pages. */ +#define VERR_PGM_PHYS_PAGE_BALLOONED (-1646) + + +/** pgmPhysPageMapCommon encountered PGMPAGETYPE_MMIO2_ALIAS_MMIO. */ +#define VERR_PGM_MAP_MMIO2_ALIAS_MMIO (-1651) +/** Guest mappings are disabled. */ +#define VERR_PGM_MAPPINGS_DISABLED (-1652) +/** No guest mappings when SMP is enabled. */ +#define VERR_PGM_MAPPINGS_SMP (-1653) +/** Invalid saved page state. */ +#define VERR_PGM_INVALID_SAVED_PAGE_STATE (-1654) +/** Encountered an unexpected page type in the saved state. */ +#define VERR_PGM_LOAD_UNEXPECTED_PAGE_TYPE (-1655) +/** Encountered an unexpected page state in the saved state. */ +#define VERR_PGM_UNEXPECTED_PAGE_STATE (-1656) +/** Couldn't find MMIO2 range from saved state. */ +#define VERR_PGM_SAVED_MMIO2_RANGE_NOT_FOUND (-1657) +/** Couldn't find MMIO2 page from saved state. */ +#define VERR_PGM_SAVED_MMIO2_PAGE_NOT_FOUND (-1658) +/** Couldn't find ROM range from saved state. */ +#define VERR_PGM_SAVED_ROM_RANGE_NOT_FOUND (-1659) +/** Couldn't find ROM page from saved state. */ +#define VERR_PGM_SAVED_ROM_PAGE_NOT_FOUND (-1660) +/** ROM page mismatch between saved state and the VM. */ +#define VERR_PGM_SAVED_ROM_PAGE_PROT (-1661) +/** Unknown saved state record. */ +#define VERR_PGM_SAVED_REC_TYPE (-1662) +/** Internal processing error in the PGM dynmap (r0/rc). */ +#define VERR_PGM_DYNMAP_IPE (-1663) +/** Internal processing error in the PGM handy page allocator. */ +#define VERR_PGM_HANDY_PAGE_IPE (-1664) +/** Failed to map the guest PML4. */ +#define VERR_PGM_PML4_MAPPING (-1665) +/** Failed to obtain a pool page. */ +#define VERR_PGM_POOL_GET_PAGE_FAILED (-1666) +/** A PGM function was called in a mode where it isn't supposed to be used. */ +#define VERR_PGM_NOT_USED_IN_MODE (-1667) +/** The CR3 address specified memory we don't know about. */ +#define VERR_PGM_INVALID_CR3_ADDR (-1668) +/** One or the PDPEs specified memory we don't know about. */ +#define VERR_PGM_INVALID_PDPE_ADDR (-1669) +/** Internal processing error in the PGM physical handler code. */ +#define VERR_PGM_PHYS_HANDLER_IPE (-1670) +/** Internal processing error \#1 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_1 (-1671) +/** Internal processing error \#2 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_2 (-1672) +/** Internal processing error \#3 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_3 (-1673) +/** Internal processing error \#4 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_4 (-1674) +/** Too many loops looking for a page to reuse. */ +#define VERR_PGM_POOL_TOO_MANY_LOOPS (-1675) +/** Internal processing error related to guest mappings. */ +#define VERR_PGM_MAPPING_IPE (-1676) +/** An attempt was made to grow an already maxed out page pool. */ +#define VERR_PGM_POOL_MAXED_OUT_ALREADY (-1677) +/** Internal processing error in the page pool code. */ +#define VERR_PGM_POOL_IPE (-1678) +/** The write monitor is already engaged. */ +#define VERR_PGM_WRITE_MONITOR_ENGAGED (-1679) +/** Failed to get a guest page which is expected to be present. */ +#define VERR_PGM_PHYS_PAGE_GET_IPE (-1680) +/** We were given a NULL pPage parameter. */ +#define VERR_PGM_PHYS_NULL_PAGE_PARAM (-1681) +/** PCI passthru is not supported by this build. */ +#define VERR_PGM_PCI_PASSTHRU_MISCONFIG (-1682) +/** Too many MMIO2 ranges. */ +#define VERR_PGM_TOO_MANY_MMIO2_RANGES (-1683) +/** Internal processing error in the PGM physial page mapping code dealing + * with MMIO2 pages. */ +#define VERR_PGM_PHYS_PAGE_MAP_MMIO2_IPE (-1684) +/** @} */ + + +/** @name Memory Monitor (MM) Status Codes + * @{ + */ +/** Attempt to register a RAM range of which parts are already + * covered by existing RAM ranges. */ +#define VERR_MM_RAM_CONFLICT (-1700) +/** Hypervisor memory allocation failed. */ +#define VERR_MM_HYPER_NO_MEMORY (-1701) +/** A bad trap type ended up in mmGCRamTrap0eHandler. */ +#define VERR_MM_BAD_TRAP_TYPE_IPE (-1702) +/** @} */ + + +/** @name CPU Monitor (CPUM) Status Codes + * @{ + */ +/** The caller shall raise an \#GP(0) exception. */ +#define VERR_CPUM_RAISE_GP_0 (-1750) +/** Incompatible CPUM configuration. */ +#define VERR_CPUM_INCOMPATIBLE_CONFIG (-1751) +/** CPUMR3DisasmInstrCPU unexpectedly failed to determine the hidden + * parts of the CS register. */ +#define VERR_CPUM_HIDDEN_CS_LOAD_ERROR (-1752) +/** Couldn't find the end of CPUID sub-leaves. */ +#define VERR_CPUM_TOO_MANY_CPUID_SUBLEAVES (-1753) +/** CPUM internal processing error \#1. */ +#define VERR_CPUM_IPE_1 (-1754) +/** CPUM internal processing error \#2. */ +#define VERR_CPUM_IPE_2 (-1755) +/** The specified CPU cannot be found in the CPU database. */ +#define VERR_CPUM_DB_CPU_NOT_FOUND (-1756) +/** Invalid CPUMCPU offset in MSR range. */ +#define VERR_CPUM_MSR_BAD_CPUMCPU_OFFSET (-1757) +/** Return to ring-3 to read the MSR there. */ +#define VINF_CPUM_R3_MSR_READ (1758) +/** Return to ring-3 to write the MSR there. */ +#define VINF_CPUM_R3_MSR_WRITE (1759) +/** Too many CPUID leaves. */ +#define VERR_TOO_MANY_CPUID_LEAVES (-1760) +/** Invalid config value. */ +#define VERR_CPUM_INVALID_CONFIG_VALUE (-1761) +/** The loaded XSAVE component mask is not compatible with the host CPU + * or/and VM config. */ +#define VERR_CPUM_INCOMPATIBLE_XSAVE_COMP_MASK (-1762) +/** The loaded XSAVE component mask is not valid. */ +#define VERR_CPUM_INVALID_XSAVE_COMP_MASK (-1763) +/** The loaded XSAVE header is not valid. */ +#define VERR_CPUM_INVALID_XSAVE_HDR (-1764) +/** The loaded XCR0 register value is not valid. */ +#define VERR_CPUM_INVALID_XCR0 (-1765) +/** @} */ + + +/** @name Save State Manager (SSM) Status Codes + * @{ + */ +/** The specified data unit already exist. */ +#define VERR_SSM_UNIT_EXISTS (-1800) +/** The specified data unit wasn't found. */ +#define VERR_SSM_UNIT_NOT_FOUND (-1801) +/** The specified data unit wasn't owned by caller. */ +#define VERR_SSM_UNIT_NOT_OWNER (-1802) + +/** General saved state file integrity error. */ +#define VERR_SSM_INTEGRITY (-1810) +/** The saved state file magic was not recognized. */ +#define VERR_SSM_INTEGRITY_MAGIC (-1811) +/** The saved state file version is not supported. */ +#define VERR_SSM_INTEGRITY_VERSION (-1812) +/** The saved state file size didn't match the one in the header. */ +#define VERR_SSM_INTEGRITY_SIZE (-1813) +/** The CRC of the saved state file did not match. */ +#define VERR_SSM_INTEGRITY_CRC (-1814) +/** The machine uuid field wasn't null. */ +#define VERR_SMM_INTEGRITY_MACHINE (-1815) +/** Saved state header integrity error. */ +#define VERR_SSM_INTEGRITY_HEADER (-1816) +/** Unit header integrity error. */ +#define VERR_SSM_INTEGRITY_UNIT (-1817) +/** Invalid unit magic (internal data tag). */ +#define VERR_SSM_INTEGRITY_UNIT_MAGIC (-1818) +/** The file contained a data unit which no-one wants. */ +#define VERR_SSM_INTEGRITY_UNIT_NOT_FOUND (-1819) +/** Incorrect version numbers in the header. */ +#define VERR_SSM_INTEGRITY_VBOX_VERSION (-1820) +/** Footer integrity error. */ +#define VERR_SSM_INTEGRITY_FOOTER (-1821) +/** Record header integrity error. */ +#define VERR_SSM_INTEGRITY_REC_HDR (-1822) +/** Termination record integrity error. */ +#define VERR_SSM_INTEGRITY_REC_TERM (-1823) +/** Termination record CRC mismatch. */ +#define VERR_SSM_INTEGRITY_REC_TERM_CRC (-1824) +/** Decompression integrity error. */ +#define VERR_SSM_INTEGRITY_DECOMPRESSION (-1825) +/** Saved state directory wintertides error. */ +#define VERR_SSM_INTEGRITY_DIR (-1826) +/** The saved state directory magic is wrong. */ +#define VERR_SSM_INTEGRITY_DIR_MAGIC (-1827) + +/** A data unit in the saved state file was defined but didn't any + * routine for processing it. */ +#define VERR_SSM_NO_LOAD_EXEC (-1830) +/** A restore routine attempted to load more data then the unit contained. */ +#define VERR_SSM_LOADED_TOO_MUCH (-1831) +/** Not in the correct state for the attempted operation. */ +#define VERR_SSM_INVALID_STATE (-1832) +/** Not in the correct state for the attempted operation. */ +#define VERR_SSM_LOADED_TOO_LITTLE (-1833) + +/** Unsupported data unit version. + * A SSM user returns this if it doesn't know the u32Version. */ +#define VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION (-1840) +/** The format of a data unit has changed. + * A SSM user returns this if it's not able to read the format for + * other reasons than u32Version. */ +#define VERR_SSM_DATA_UNIT_FORMAT_CHANGED (-1841) +/** The CPUID instruction returns different information when loading than when saved. + * Normally caused by hardware changes on the host, but could also be caused by + * changes in the BIOS setup. */ +#define VERR_SSM_LOAD_CPUID_MISMATCH (-1842) +/** The RAM size differs between the saved state and the VM config. */ +#define VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH (-1843) +/** The state doesn't match the VM configuration in one or another way. + * (There are certain PCI reconfiguration which the OS could potentially + * do which can cause this problem. Check this out when it happens.) */ +#define VERR_SSM_LOAD_CONFIG_MISMATCH (-1844) +/** The virtual clock frequency differs too much. + * The clock source for the virtual time isn't reliable or the code have changed. */ +#define VERR_SSM_VIRTUAL_CLOCK_HZ (-1845) +/** A timeout occurred while waiting for async IDE operations to finish. */ +#define VERR_SSM_IDE_ASYNC_TIMEOUT (-1846) +/** One of the structure magics was wrong. */ +#define VERR_SSM_STRUCTURE_MAGIC (-1847) +/** The data in the saved state doesn't conform to expectations. */ +#define VERR_SSM_UNEXPECTED_DATA (-1848) +/** Trying to read a 64-bit guest physical address into a 32-bit variable. */ +#define VERR_SSM_GCPHYS_OVERFLOW (-1849) +/** Trying to read a 64-bit guest virtual address into a 32-bit variable. */ +#define VERR_SSM_GCPTR_OVERFLOW (-1850) +/** Vote for another pass. */ +#define VINF_SSM_VOTE_FOR_ANOTHER_PASS 1851 +/** Vote for done tell SSM not to call again until the final pass. */ +#define VINF_SSM_VOTE_DONE_DONT_CALL_AGAIN 1852 +/** Vote for giving up. */ +#define VERR_SSM_VOTE_FOR_GIVING_UP (-1853) +/** Don't call again until the final pass. */ +#define VINF_SSM_DONT_CALL_AGAIN 1854 +/** Giving up a live snapshot/teleportation attempt because of too many + * passes. */ +#define VERR_SSM_TOO_MANY_PASSES (-1855) +/** Giving up a live snapshot/teleportation attempt because the state grew to + * big. */ +#define VERR_SSM_STATE_GREW_TOO_BIG (-1856) +/** Giving up a live snapshot attempt because we're low on disk space. */ +#define VERR_SSM_LOW_ON_DISK_SPACE (-1857) +/** The operation was cancelled. */ +#define VERR_SSM_CANCELLED (-1858) +/** Nothing that can be cancelled. */ +#define VERR_SSM_NO_PENDING_OPERATION (-1859) +/** The operation has already been cancelled. */ +#define VERR_SSM_ALREADY_CANCELLED (-1860) +/** The machine was powered off while saving. */ +#define VERR_SSM_LIVE_POWERED_OFF (-1861) +/** The live snapshot/teleportation operation was aborted because of a guru + * meditation. */ +#define VERR_SSM_LIVE_GURU_MEDITATION (-1862) +/** The live snapshot/teleportation operation was aborted because of a fatal + * runtime error. */ +#define VERR_SSM_LIVE_FATAL_ERROR (-1863) +/** The VM was suspended before or while saving, don't resume execution. */ +#define VINF_SSM_LIVE_SUSPENDED 1864 +/** Complex SSM field fed to SSMR3PutStruct or SSMR3GetStruct. Use the + * extended API. */ +#define VERR_SSM_FIELD_COMPLEX (-1864) +/** Invalid size of a SSM field with the specified transformation. */ +#define VERR_SSM_FIELD_INVALID_SIZE (-1865) +/** The specified field is outside the structure. */ +#define VERR_SSM_FIELD_OUT_OF_BOUNDS (-1866) +/** The field does not follow immediately the previous one. */ +#define VERR_SSM_FIELD_NOT_CONSECUTIVE (-1867) +/** The field contains an invalid callback or transformation index. */ +#define VERR_SSM_FIELD_INVALID_CALLBACK (-1868) +/** The field contains an invalid padding size. */ +#define VERR_SSM_FIELD_INVALID_PADDING_SIZE (-1869) +/** The field contains a value that is out of range. */ +#define VERR_SSM_FIELD_INVALID_VALUE (-1870) +/** Generic stream error. */ +#define VERR_SSM_STREAM_ERROR (-1871) +/** SSM did a callback for a pass we didn't expect. */ +#define VERR_SSM_UNEXPECTED_PASS (-1872) +/** Someone is trying to skip backwards in the stream... */ +#define VERR_SSM_SKIP_BACKWARDS (-1873) +/** Someone is trying to write a memory block which is too big to encode. */ +#define VERR_SSM_MEM_TOO_BIG (-1874) +/** Encountered an bad (/unknown) record type. */ +#define VERR_SSM_BAD_REC_TYPE (-1875) +/** Internal processing error \#1 in SSM code. */ +#define VERR_SSM_IPE_1 (-1876) +/** Internal processing error \#2 in SSM code. */ +#define VERR_SSM_IPE_2 (-1877) +/** Internal processing error \#3 in SSM code. */ +#define VERR_SSM_IPE_3 (-1878) +/** A field contained an transformation that should only be used when loading + * old states. */ +#define VERR_SSM_FIELD_LOAD_ONLY_TRANSFORMATION (-1879) +/** @} */ + + +/** @name Virtual Machine (VM) Status Codes + * @{ + */ +/** The specified at reset handler wasn't found. */ +#define VERR_VM_ATRESET_NOT_FOUND (-1900) +/** Invalid VM request type. + * For the VMR3ReqAlloc() case, the caller just specified an illegal enmType. For + * all the other occurrences it means indicates corruption, broken logic, or stupid + * interface user. */ +#define VERR_VM_REQUEST_INVALID_TYPE (-1901) +/** Invalid VM request state. + * The state of the request packet was not the expected and accepted one(s). Either + * the interface user screwed up, or we've got corruption/broken logic. */ +#define VERR_VM_REQUEST_STATE (-1902) +/** Invalid VM request packet. + * One or more of the VM controlled packet members didn't contain the correct + * values. Some thing's broken. */ +#define VERR_VM_REQUEST_INVALID_PACKAGE (-1903) +/** The status field has not been updated yet as the request is still + * pending completion. Someone queried the iStatus field before the request + * has been fully processed. */ +#define VERR_VM_REQUEST_STATUS_STILL_PENDING (-1904) +/** The request has been freed, don't read the status now. + * Someone is reading the iStatus field of a freed request packet. */ +#define VERR_VM_REQUEST_STATUS_FREED (-1905) +/** A VM api requiring EMT was called from another thread. + * Use the VMR3ReqCall() apis to call it! */ +#define VERR_VM_THREAD_NOT_EMT (-1906) +/** The VM state was invalid for the requested operation. + * Go check the 'VM Statechart Diagram.gif'. */ +#define VERR_VM_INVALID_VM_STATE (-1907) +/** The support driver is not installed. + * On linux, open returned ENOENT. */ +#define VERR_VM_DRIVER_NOT_INSTALLED (-1908) +/** The support driver is not accessible. + * On linux, open returned EPERM. */ +#define VERR_VM_DRIVER_NOT_ACCESSIBLE (-1909) +/** Was not able to load the support driver. + * On linux, open returned ENODEV. */ +#define VERR_VM_DRIVER_LOAD_ERROR (-1910) +/** Was not able to open the support driver. + * Generic open error used when none of the other ones fit. */ +#define VERR_VM_DRIVER_OPEN_ERROR (-1911) +/** The installed support driver doesn't match the version of the user. */ +#define VERR_VM_DRIVER_VERSION_MISMATCH (-1912) +/** Saving the VM state is temporarily not allowed. Try again later. */ +#define VERR_VM_SAVE_STATE_NOT_ALLOWED (-1913) +/** An EMT called an API which cannot be called on such a thread. */ +#define VERR_VM_THREAD_IS_EMT (-1914) +/** Encountered an unexpected VM state. */ +#define VERR_VM_UNEXPECTED_VM_STATE (-1915) +/** Unexpected unstable VM state. */ +#define VERR_VM_UNEXPECTED_UNSTABLE_STATE (-1916) +/** Too many arguments passed to a VM request / request corruption. */ +#define VERR_VM_REQUEST_TOO_MANY_ARGS_IPE (-1917) +/** Fatal EMT wait error. */ +#define VERR_VM_FATAL_WAIT_ERROR (-1918) +/** The VM request was killed at VM termination. */ +#define VERR_VM_REQUEST_KILLED (-1919) +/** @} */ + + +/** @name VBox Remote Desktop Protocol (VRDP) Status Codes + * @{ + */ +/** Successful completion of operation (mapped to generic iprt status code). */ +#define VINF_VRDP_SUCCESS VINF_SUCCESS +/** VRDP transport operation timed out (mapped to generic iprt status code). */ +#define VERR_VRDP_TIMEOUT VERR_TIMEOUT + +/** Unsupported ISO protocol feature */ +#define VERR_VRDP_ISO_UNSUPPORTED (-2000) +/** Security (en/decryption) engine error */ +#define VERR_VRDP_SEC_ENGINE_FAIL (-2001) +/** VRDP protocol violation */ +#define VERR_VRDP_PROTOCOL_ERROR (-2002) +/** Unsupported VRDP protocol feature */ +#define VERR_VRDP_NOT_SUPPORTED (-2003) +/** VRDP protocol violation, client sends less data than expected */ +#define VERR_VRDP_INSUFFICIENT_DATA (-2004) +/** Internal error, VRDP packet is in wrong operation mode */ +#define VERR_VRDP_INVALID_MODE (-2005) +/** Memory allocation failed */ +#define VERR_VRDP_NO_MEMORY (-2006) +/** Client has been rejected */ +#define VERR_VRDP_ACCESS_DENIED (-2007) +/** VRPD receives a packet that is not supported */ +#define VWRN_VRDP_PDU_NOT_SUPPORTED 2008 +/** VRDP script allowed the packet to be processed further */ +#define VINF_VRDP_PROCESS_PDU 2009 +/** VRDP script has completed its task */ +#define VINF_VRDP_OPERATION_COMPLETED 2010 +/** VRDP thread has started OK and will run */ +#define VINF_VRDP_THREAD_STARTED 2011 +/** Framebuffer is resized, terminate send bitmap procedure */ +#define VINF_VRDP_RESIZE_REQUESTED 2012 +/** Output can be enabled for the client. */ +#define VINF_VRDP_OUTPUT_ENABLE 2013 +/** @} */ + + +/** @name Configuration Manager (CFGM) Status Codes + * @{ + */ +/** The integer value was too big for the requested representation. */ +#define VERR_CFGM_INTEGER_TOO_BIG (-2100) +/** Child node was not found. */ +#define VERR_CFGM_CHILD_NOT_FOUND (-2101) +/** Path to child node was invalid (i.e. empty). */ +#define VERR_CFGM_INVALID_CHILD_PATH (-2102) +/** Value not found. */ +#define VERR_CFGM_VALUE_NOT_FOUND (-2103) +/** No parent node specified. */ +#define VERR_CFGM_NO_PARENT (-2104) +/** No node was specified. */ +#define VERR_CFGM_NO_NODE (-2105) +/** The value is not an integer. */ +#define VERR_CFGM_NOT_INTEGER (-2106) +/** The value is not a zero terminated character string. */ +#define VERR_CFGM_NOT_STRING (-2107) +/** The value is not a byte string. */ +#define VERR_CFGM_NOT_BYTES (-2108) +/** The specified string / bytes buffer was to small. Specify a larger one and retry. */ +#define VERR_CFGM_NOT_ENOUGH_SPACE (-2109) +/** The path of a new node contained slashes or was empty. */ +#define VERR_CFGM_INVALID_NODE_PATH (-2160) +/** A new node couldn't be inserted because one with the same name exists. */ +#define VERR_CFGM_NODE_EXISTS (-2161) +/** A new leaf couldn't be inserted because one with the same name exists. */ +#define VERR_CFGM_LEAF_EXISTS (-2162) +/** An unknown config value was encountered. */ +#define VERR_CFGM_CONFIG_UNKNOWN_VALUE (-2163) +/** An unknown config node (key) was encountered. */ +#define VERR_CFGM_CONFIG_UNKNOWN_NODE (-2164) +/** Internal processing error \#1 in CFGM. */ +#define VERR_CFGM_IPE_1 (-2165) +/** @} */ + + +/** @name Time Manager (TM) Status Codes + * @{ + */ +/** The loaded timer state was incorrect. */ +#define VERR_TM_LOAD_STATE (-2200) +/** The timer was not in the correct state for the request operation. */ +#define VERR_TM_INVALID_STATE (-2201) +/** The timer was in a unknown state. Corruption or stupid coding error. */ +#define VERR_TM_UNKNOWN_STATE (-2202) +/** The timer was stuck in an unstable state until we grew impatient and returned. */ +#define VERR_TM_UNSTABLE_STATE (-2203) +/** TM requires GIP. */ +#define VERR_TM_GIP_REQUIRED (-2204) +/** TM does not support the GIP version. */ +#define VERR_TM_GIP_VERSION (-2205) +/** The GIP update interval is too large. */ +#define VERR_TM_GIP_UPDATE_INTERVAL_TOO_BIG (-2206) +/** The timer has a bad clock enum value, probably corruption. */ +#define VERR_TM_TIMER_BAD_CLOCK (-2207) +/** The timer failed to reach a stable state. */ +#define VERR_TM_TIMER_UNSTABLE_STATE (-2208) +/** Attempt to resume a running TSC. */ +#define VERR_TM_TSC_ALREADY_TICKING (-2209) +/** Attempt to pause a paused TSC. */ +#define VERR_TM_TSC_ALREADY_PAUSED (-2210) +/** Invalid value for cVirtualTicking. */ +#define VERR_TM_VIRTUAL_TICKING_IPE (-2211) +/** @} */ + + +/** @name Recompiled Execution Manager (REM) Status Codes + * @{ + */ +/** Fatal error in virtual hardware. */ +#define VERR_REM_VIRTUAL_HARDWARE_ERROR (-2300) +/** Fatal error in the recompiler cpu. */ +#define VERR_REM_VIRTUAL_CPU_ERROR (-2301) +/** Recompiler execution was interrupted by forced action. */ +#define VINF_REM_INTERRUPED_FF 2302 +/** Too many similar traps. This is a very useful debug only + * check (we don't do double/triple faults in REM). */ +#define VERR_REM_TOO_MANY_TRAPS (-2304) +/** The REM is out of breakpoint slots. */ +#define VERR_REM_NO_MORE_BP_SLOTS (-2305) +/** The REM could not find any breakpoint on the specified address. */ +#define VERR_REM_BP_NOT_FOUND (-2306) +/** @} */ + + +/** @name Trap Manager / Monitor (TRPM) Status Codes + * @{ + */ +/** No active trap. Cannot query or reset a non-existing trap. */ +#define VERR_TRPM_NO_ACTIVE_TRAP (-2400) +/** Active trap. Cannot assert a new trap when one is already active. */ +#define VERR_TRPM_ACTIVE_TRAP (-2401) +/** Reason for leaving RC: Guest tried to write to our IDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the idtr register. */ +#define VERR_TRPM_SHADOW_IDT_WRITE (-2402) +/** Reason for leaving RC: Fatal trap in hypervisor. */ +#define VERR_TRPM_DONT_PANIC (-2403) +/** Reason for leaving RC: Double Fault. */ +#define VERR_TRPM_PANIC (-2404) +/** The exception was dispatched for raw-mode execution. */ +#define VINF_TRPM_XCPT_DISPATCHED 2405 +/** Bad TRPM_TRAP_IN_OP. */ +#define VERR_TRPM_BAD_TRAP_IN_OP (-2406) +/** Internal processing error \#1 in TRPM. */ +#define VERR_TRPM_IPE_1 (-2407) +/** Internal processing error \#2 in TRPM. */ +#define VERR_TRPM_IPE_2 (-2408) +/** Internal processing error \#3 in TRPM. */ +#define VERR_TRPM_IPE_3 (-2409) +/** Got into a part of TRPM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_TRPM_HM_IPE (-2410) +/** @} */ + + +/** @name Selector Manager / Monitor (SELM) Status Code + * @{ + */ +/** Reason for leaving RC: Guest tried to write to our GDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the gdtr register. */ +#define VERR_SELM_SHADOW_GDT_WRITE (-2500) +/** Reason for leaving RC: Guest tried to write to our LDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the ldtr register. */ +#define VERR_SELM_SHADOW_LDT_WRITE (-2501) +/** Reason for leaving RC: Guest tried to write to our TSS - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the ltr register. */ +#define VERR_SELM_SHADOW_TSS_WRITE (-2502) +/** Reason for leaving RC: Sync the GDT table to solve a conflict. */ +#define VINF_SELM_SYNC_GDT 2503 +/** No valid TSS present. */ +#define VERR_SELM_NO_TSS (-2504) +/** Invalid guest LDT selector. */ +#define VERR_SELM_INVALID_LDT (-2505) +/** The guest LDT selector is out of bounds. */ +#define VERR_SELM_LDT_OUT_OF_BOUNDS (-2506) +/** Unknown error while reading the guest GDT during shadow table updating. */ +#define VERR_SELM_GDT_READ_ERROR (-2507) +/** The guest GDT so full that we cannot find free space for our own + * selectors. */ +#define VERR_SELM_GDT_TOO_FULL (-2508) +/** Got into a part of SELM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_SELM_HM_IPE (-2509) +/** @} */ + + +/** @name I/O Manager / Monitor (IOM) Status Code + * @{ + */ +/** The specified I/O port range was invalid. + * It was either empty or it was out of bounds. */ +#define VERR_IOM_INVALID_IOPORT_RANGE (-2600) +/** The specified R0 or RC I/O port range didn't have a corresponding R3 range. + * IOMR3IOPortRegisterR3() must be called first. */ +#define VERR_IOM_NO_R3_IOPORT_RANGE (-2601) +/** The specified I/O port range intruded on an existing range. There is + * a I/O port conflict between two device, or a device tried to register + * the same range twice. */ +#define VERR_IOM_IOPORT_RANGE_CONFLICT (-2602) +/** The I/O port range specified for removal wasn't found or it wasn't contiguous. */ +#define VERR_IOM_IOPORT_RANGE_NOT_FOUND (-2603) +/** The specified I/O port range was owned by some other device(s). Both registration + * and deregistration, but in the first case only RC and R0 ranges. */ +#define VERR_IOM_NOT_IOPORT_RANGE_OWNER (-2604) + +/** The specified MMIO range was invalid. + * It was either empty or it was out of bounds. */ +#define VERR_IOM_INVALID_MMIO_RANGE (-2605) +/** The specified R0 or RC MMIO range didn't have a corresponding R3 range. + * IOMR3MMIORegisterR3() must be called first. */ +#define VERR_IOM_NO_R3_MMIO_RANGE (-2606) +/** The specified MMIO range was owned by some other device(s). Both registration + * and deregistration, but in the first case only RC and R0 ranges. */ +#define VERR_IOM_NOT_MMIO_RANGE_OWNER (-2607) +/** The specified MMIO range intruded on an existing range. There is + * a MMIO conflict between two device, or a device tried to register + * the same range twice. */ +#define VERR_IOM_MMIO_RANGE_CONFLICT (-2608) +/** The MMIO range specified for removal was not found. */ +#define VERR_IOM_MMIO_RANGE_NOT_FOUND (-2609) +/** The MMIO range specified for removal was invalid. The range didn't match + * quite match a set of existing ranges. It's not possible to remove parts of + * a MMIO range, only one or more full ranges. */ +#define VERR_IOM_INCOMPLETE_MMIO_RANGE (-2610) +/** An invalid I/O port size was specified for a read or write operation. */ +#define VERR_IOM_INVALID_IOPORT_SIZE (-2611) +/** The MMIO handler was called for a bogus address! Internal error! */ +#define VERR_IOM_MMIO_HANDLER_BOGUS_CALL (-2612) +/** The MMIO handler experienced a problem with the disassembler. */ +#define VERR_IOM_MMIO_HANDLER_DISASM_ERROR (-2613) +/** The port being read was not present(/unused) and IOM shall return ~0 according to size. */ +#define VERR_IOM_IOPORT_UNUSED (-2614) +/** Unused MMIO register read, fill with 00. */ +#define VINF_IOM_MMIO_UNUSED_00 2615 +/** Unused MMIO register read, fill with FF. */ +#define VINF_IOM_MMIO_UNUSED_FF 2616 + +/** Reason for leaving RZ: I/O port read. */ +#define VINF_IOM_R3_IOPORT_READ 2620 +/** Reason for leaving RZ: I/O port write. */ +#define VINF_IOM_R3_IOPORT_WRITE 2621 +/** Reason for leaving RZ: MMIO read. */ +#define VINF_IOM_R3_MMIO_READ 2623 +/** Reason for leaving RZ: MMIO write. */ +#define VINF_IOM_R3_MMIO_WRITE 2624 +/** Reason for leaving RZ: MMIO read/write. */ +#define VINF_IOM_R3_MMIO_READ_WRITE 2625 + +/** IOMGCIOPortHandler was given an unexpected opcode. */ +#define VERR_IOM_IOPORT_UNKNOWN_OPCODE (-2630) +/** Internal processing error \#1 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_1 (-2631) +/** Internal processing error \#2 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_2 (-2632) +/** Internal processing error \#3 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_3 (-2633) +/** Internal processing error \#1 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_1 (-2634) +/** Internal processing error \#2 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_2 (-2635) +/** Internal processing error \#3 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_3 (-2636) +/** Got into a part of IOM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_IOM_HM_IPE (-2637) +/** @} */ + + +/** @name Virtual Machine Monitor (VMM) Status Codes + * @{ + */ +/** Reason for leaving RZ: Calling host function. */ +#define VINF_VMM_CALL_HOST 2700 +/** Reason for leaving R0: Hit a ring-0 assertion on EMT. */ +#define VERR_VMM_RING0_ASSERTION (-2701) +/** The hyper CR3 differs between PGM and CPUM. */ +#define VERR_VMM_HYPER_CR3_MISMATCH (-2702) +/** Reason for leaving RZ: Illegal call to ring-3. */ +#define VERR_VMM_RING3_CALL_DISABLED (-2703) +/** The VMMR0.r0 module version does not match VBoxVMM.dll/so/dylib. + * If you just upgraded VirtualBox, please terminate all VMs and make sure + * that neither VBoxNetDHCP nor VBoxNetNAT is running. Then try again. + * If this error persists, try re-installing VirtualBox. */ +#define VERR_VMM_R0_VERSION_MISMATCH (-2704) +/** The VMMRC.rc module version does not match VBoxVMM.dll/so/dylib. + * Re-install if you are a user. Developers should make sure the build is + * complete or try with a clean build. */ +#define VERR_VMM_RC_VERSION_MISMATCH (-2705) +/** VMM set jump error. */ +#define VERR_VMM_SET_JMP_ERROR (-2706) +/** VMM set jump stack overflow error. */ +#define VERR_VMM_SET_JMP_STACK_OVERFLOW (-2707) +/** VMM set jump resume error. */ +#define VERR_VMM_SET_JMP_ABORTED_RESUME (-2708) +/** VMM long jump error. */ +#define VERR_VMM_LONG_JMP_ERROR (-2709) +/** Unknown ring-3 call attempted. */ +#define VERR_VMM_UNKNOWN_RING3_CALL (-2710) +/** The ring-3 call didn't set an RC. */ +#define VERR_VMM_RING3_CALL_NO_RC (-2711) +/** Reason for leaving RC: Caller the tracer in ring-0. */ +#define VINF_VMM_CALL_TRACER (2712) +/** Internal processing error \#1 in the switcher code. */ +#define VERR_VMM_SWITCHER_IPE_1 (-2713) +/** Reason for leaving RZ: Unknown call to ring-3. */ +#define VINF_VMM_UNKNOWN_RING3_CALL (2714) +/** Attempted to use stub switcher. */ +#define VERR_VMM_SWITCHER_STUB (-2715) +/** HM returned in the wrong state. */ +#define VERR_VMM_WRONG_HM_VMCPU_STATE (-2716) +/** SMAP enabled, but the AC flag was found to be clear - check the kernel + * log for details. */ +#define VERR_VMM_SMAP_BUT_AC_CLEAR (-2717) +/** @} */ + + +/** @name Pluggable Device and Driver Manager (PDM) Status Codes + * @{ + */ +/** An invalid LUN specification was given. */ +#define VERR_PDM_NO_SUCH_LUN (-2800) +/** A device encountered an unknown configuration value. + * This means that the device is potentially misconfigured and the device + * construction or unit attachment failed because of this. */ +#define VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES (-2801) +/** The above driver doesn't export a interface required by a driver being + * attached to it. Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE_ABOVE (-2802) +/** The below driver doesn't export a interface required by the drive + * having attached it. Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE_BELOW (-2803) +/** A device didn't find a required interface with an attached driver. + * Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE (-2804) +/** A driver encountered an unknown configuration value. + * This means that the driver is potentially misconfigured and the driver + * construction failed because of this. */ +#define VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES (-2805) +/** The PCI bus assigned to a device didn't have room for it. + * Either too many devices are configured on the same PCI bus, or there are + * some internal problem where PDM/PCI doesn't free up slots when unplugging devices. */ +#define VERR_PDM_TOO_PCI_MANY_DEVICES (-2806) +/** A queue is out of free items, the queueing operation failed. */ +#define VERR_PDM_NO_QUEUE_ITEMS (-2807) +/** Not possible to attach further drivers to the driver. + * A driver which doesn't support attachments (below of course) will + * return this status code if it found that further drivers were configured + * to be attached to it. */ +#define VERR_PDM_DRVINS_NO_ATTACH (-2808) +/** Not possible to attach drivers to the device. + * A device which doesn't support attachments (below of course) will + * return this status code if it found that drivers were configured + * to be attached to it. */ +#define VERR_PDM_DEVINS_NO_ATTACH (-2809) +/** No attached driver. + * The PDMDRVHLP::pfnAttach and PDMDEVHLP::pfnDriverAttach will return + * this error when no driver was configured to be attached. */ +#define VERR_PDM_NO_ATTACHED_DRIVER (-2810) +/** The media geometry hasn't been set yet, so it cannot be obtained. + * The caller should then calculate the geometry from the media size. */ +#define VERR_PDM_GEOMETRY_NOT_SET (-2811) +/** The media translation hasn't been set yet, so it cannot be obtained. + * The caller should then guess the translation. */ +#define VERR_PDM_TRANSLATION_NOT_SET (-2812) +/** The media is not mounted, operation requires a mounted media. */ +#define VERR_PDM_MEDIA_NOT_MOUNTED (-2813) +/** Mount failed because a media was already mounted. Unmount the media + * and retry the mount. */ +#define VERR_PDM_MEDIA_MOUNTED (-2814) +/** The media is locked and cannot be unmounted. */ +#define VERR_PDM_MEDIA_LOCKED (-2815) +/** No 'Type' attribute in the DrvBlock configuration. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_NO_TYPE (-2816) +/** The 'Type' attribute in the DrvBlock configuration had an unknown value. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_UNKNOWN_TYPE (-2817) +/** The 'Translation' attribute in the DrvBlock configuration had an unknown value. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_UNKNOWN_TRANSLATION (-2818) +/** The block driver type wasn't supported. + * Misconfiguration of the kind you get when attaching a floppy to an IDE controller. */ +#define VERR_PDM_UNSUPPORTED_BLOCK_TYPE (-2819) +/** A attach or prepare mount call failed because the driver already + * had a driver attached. */ +#define VERR_PDM_DRIVER_ALREADY_ATTACHED (-2820) +/** An attempt on detaching a driver without anyone actually being attached, or + * performing any other operation on an attached driver. */ +#define VERR_PDM_NO_DRIVER_ATTACHED (-2821) +/** The attached driver configuration is missing the 'Driver' attribute. */ +#define VERR_PDM_CFG_MISSING_DRIVER_NAME (-2822) +/** The configured driver wasn't found. + * Either the necessary driver modules wasn't loaded, the name was + * misspelled, or it was a misconfiguration. */ +#define VERR_PDM_DRIVER_NOT_FOUND (-2823) +/** The Ring-3 module was already loaded. */ +#define VINF_PDM_ALREADY_LOADED (2824) +/** The name of the module clashed with an existing module. */ +#define VERR_PDM_MODULE_NAME_CLASH (-2825) +/** Couldn't find any export for registration of drivers/devices. */ +#define VERR_PDM_NO_REGISTRATION_EXPORT (-2826) +/** A module name is too long. */ +#define VERR_PDM_MODULE_NAME_TOO_LONG (-2827) +/** Driver name clash. Another driver with the same name as the + * one being registered exists. */ +#define VERR_PDM_DRIVER_NAME_CLASH (-2828) +/** The version of the driver registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_DRVREG_VERSION (-2829) +/** Invalid entry in the driver registration structure. */ +#define VERR_PDM_INVALID_DRIVER_REGISTRATION (-2830) +/** Invalid host bit mask. */ +#define VERR_PDM_INVALID_DRIVER_HOST_BITS (-2831) +/** Not possible to detach a driver because the above driver/device + * doesn't support it. The above entity doesn't implement the pfnDetach call. */ +#define VERR_PDM_DRIVER_DETACH_NOT_POSSIBLE (-2832) +/** No PCI Bus is available to register the device with. This is usually a + * misconfiguration or in rare cases a buggy pci device. */ +#define VERR_PDM_NO_PCI_BUS (-2833) +/** The device is not a registered PCI device and thus cannot + * perform any PCI operations. The device forgot to register it self. */ +#define VERR_PDM_NOT_PCI_DEVICE (-2834) + +/** The version of the device registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_DEVREG_VERSION (-2835) +/** Invalid entry in the device registration structure. */ +#define VERR_PDM_INVALID_DEVICE_REGISTRATION (-2836) +/** Invalid host bit mask. */ +#define VERR_PDM_INVALID_DEVICE_GUEST_BITS (-2837) +/** The guest bit mask didn't match the guest being loaded. */ +#define VERR_PDM_INVALID_DEVICE_HOST_BITS (-2838) +/** Device name clash. Another device with the same name as the + * one being registered exists. */ +#define VERR_PDM_DEVICE_NAME_CLASH (-2839) +/** The device wasn't found. There was no registered device + * by that name. */ +#define VERR_PDM_DEVICE_NOT_FOUND (-2840) +/** The device instance was not found. */ +#define VERR_PDM_DEVICE_INSTANCE_NOT_FOUND (-2841) +/** The device instance have no base interface. */ +#define VERR_PDM_DEVICE_INSTANCE_NO_IBASE (-2842) +/** The device instance have no such logical unit. */ +#define VERR_PDM_DEVICE_INSTANCE_LUN_NOT_FOUND (-2843) +/** The driver instance could not be found. */ +#define VERR_PDM_DRIVER_INSTANCE_NOT_FOUND (-2844) +/** Logical Unit was not found. */ +#define VERR_PDM_LUN_NOT_FOUND (-2845) +/** The Logical Unit was found, but it had no driver attached to it. */ +#define VERR_PDM_NO_DRIVER_ATTACHED_TO_LUN (-2846) +/** The Logical Unit was found, but it had no driver attached to it. */ +#define VINF_PDM_NO_DRIVER_ATTACHED_TO_LUN 2846 +/** No PIC device instance is registered with the current VM and thus + * the PIC operation cannot be performed. */ +#define VERR_PDM_NO_PIC_INSTANCE (-2847) +/** No APIC device instance is registered with the current VM and thus + * the APIC operation cannot be performed. */ +#define VERR_PDM_NO_APIC_INSTANCE (-2848) +/** No DMAC device instance is registered with the current VM and thus + * the DMA operation cannot be performed. */ +#define VERR_PDM_NO_DMAC_INSTANCE (-2849) +/** No RTC device instance is registered with the current VM and thus + * the RTC or CMOS operation cannot be performed. */ +#define VERR_PDM_NO_RTC_INSTANCE (-2850) +/** Unable to open the host interface due to a sharing violation . */ +#define VERR_PDM_HIF_SHARING_VIOLATION (-2851) +/** Unable to open the host interface. */ +#define VERR_PDM_HIF_OPEN_FAILED (-2852) +/** The device doesn't support runtime driver attaching. + * The PDMDEVREG::pfnAttach callback function is NULL. */ +#define VERR_PDM_DEVICE_NO_RT_ATTACH (-2853) +/** The driver doesn't support runtime driver attaching. + * The PDMDRVREG::pfnAttach callback function is NULL. */ +#define VERR_PDM_DRIVER_NO_RT_ATTACH (-2854) +/** Invalid host interface version. */ +#define VERR_PDM_HIF_INVALID_VERSION (-2855) + +/** The version of the USB device registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_USBREG_VERSION (-2856) +/** Invalid entry in the device registration structure. */ +#define VERR_PDM_INVALID_USB_REGISTRATION (-2857) +/** Driver name clash. Another driver with the same name as the + * one being registered exists. */ +#define VERR_PDM_USB_NAME_CLASH (-2858) +/** The USB hub is already registered. */ +#define VERR_PDM_USB_HUB_EXISTS (-2859) +/** Couldn't find any USB hubs to attach the device to. */ +#define VERR_PDM_NO_USB_HUBS (-2860) +/** Couldn't find any free USB ports to attach the device to. */ +#define VERR_PDM_NO_USB_PORTS (-2861) +/** Couldn't find the USB Proxy device. Using OSE? */ +#define VERR_PDM_NO_USBPROXY (-2862) +/** The async completion template is still used. */ +#define VERR_PDM_ASYNC_TEMPLATE_BUSY (-2863) +/** The async completion task is already suspended. */ +#define VERR_PDM_ASYNC_COMPLETION_ALREADY_SUSPENDED (-2864) +/** The async completion task is not suspended. */ +#define VERR_PDM_ASYNC_COMPLETION_NOT_SUSPENDED (-2865) +/** The driver properties were invalid, and as a consequence construction + * failed. Caused my unusable media or similar problems. */ +#define VERR_PDM_DRIVER_INVALID_PROPERTIES (-2866) +/** Too many instances of a device. */ +#define VERR_PDM_TOO_MANY_DEVICE_INSTANCES (-2867) +/** Too many instances of a driver. */ +#define VERR_PDM_TOO_MANY_DRIVER_INSTANCES (-2868) +/** Too many instances of a usb device. */ +#define VERR_PDM_TOO_MANY_USB_DEVICE_INSTANCES (-2869) +/** The device instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVINS_VERSION_MISMATCH (-2870) +/** The device helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVHLPR3_VERSION_MISMATCH (-2871) +/** The USB device instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBINS_VERSION_MISMATCH (-2872) +/** The USB device helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBHLPR3_VERSION_MISMATCH (-2873) +/** The driver instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRVINS_VERSION_MISMATCH (-2874) +/** The driver helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRVHLPR3_VERSION_MISMATCH (-2875) +/** Generic device structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVICE_VERSION_MISMATCH (-2876) +/** Generic USB device structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBDEV_VERSION_MISMATCH (-2877) +/** Generic driver structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRIVER_VERSION_MISMATCH (-2878) +/** PDMVMMDevHeapR3ToGCPhys failure. */ +#define VERR_PDM_DEV_HEAP_R3_TO_GCPHYS (-2879) +/** A legacy device isn't implementing the HPET notification interface. */ +#define VERR_PDM_HPET_LEGACY_NOTIFY_MISSING (-2880) +/** Internal processing error in the critical section code. */ +#define VERR_PDM_CRITSECT_IPE (-2881) +/** The critical section being deleted was not found. */ +#define VERR_PDM_CRITSECT_NOT_FOUND (-2882) +/** A PDMThread API was called by the wrong thread. */ +#define VERR_PDM_THREAD_INVALID_CALLER (-2883) +/** Internal processing error \#1 in the PDM Thread code. */ +#define VERR_PDM_THREAD_IPE_1 (-2884) +/** Internal processing error \#2 in the PDM Thread code. */ +#define VERR_PDM_THREAD_IPE_2 (-2885) +/** Only one PCI function is supported per PDM device. */ +#define VERR_PDM_ONE_PCI_FUNCTION_PER_DEVICE (-2886) +/** Bad PCI configuration. */ +#define VERR_PDM_BAD_PCI_CONFIG (-2887) +/** Internal processing error # in the PDM device code. */ +#define VERR_PDM_DEV_IPE_1 (-2888) +/** Misconfigured driver chain transformation. */ +#define VERR_PDM_MISCONFIGURED_DRV_TRANSFORMATION (-2889) +/** The driver is already removed, not more transformations possible (at + * present). */ +#define VERR_PDM_CANNOT_TRANSFORM_REMOVED_DRIVER (-2890) +/** The PCI device isn't configured as a busmaster, physical memory access + * rejected. */ +#define VERR_PDM_NOT_PCI_BUS_MASTER (-2891) +/** Got into a part of PDM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_PDM_HM_IPE (-2892) +/** @} */ + + +/** @name Host-Guest Communication Manager (HGCM) Status Codes + * @{ + */ +/** Requested service does not exist. */ +#define VERR_HGCM_SERVICE_NOT_FOUND (-2900) +/** Service rejected client connection */ +#define VINF_HGCM_CLIENT_REJECTED 2901 +/** Command address is invalid. */ +#define VERR_HGCM_INVALID_CMD_ADDRESS (-2902) +/** Service will execute the command in background. */ +#define VINF_HGCM_ASYNC_EXECUTE 2903 +/** HGCM could not perform requested operation because of an internal error. */ +#define VERR_HGCM_INTERNAL (-2904) +/** Invalid HGCM client id. */ +#define VERR_HGCM_INVALID_CLIENT_ID (-2905) +/** The HGCM is saving state. */ +#define VINF_HGCM_SAVE_STATE (2906) +/** Requested service already exists. */ +#define VERR_HGCM_SERVICE_EXISTS (-2907) + +/** @} */ + + +/** @name Network Address Translation Driver (DrvNAT) Status Codes + * @{ + */ +/** Failed to find the DNS configured for this machine. */ +#define VINF_NAT_DNS 3000 +/** Failed to convert the specified Guest IP to a binary IP address. + * Malformed input. */ +#define VERR_NAT_REDIR_GUEST_IP (-3001) +/** Failed while setting up a redirector rule. + * There probably is a conflict between the rule and some existing + * service on the computer. */ +#define VERR_NAT_REDIR_SETUP (-3002) +/** @} */ + + +/** @name HostIF Driver (DrvTUN) Status Codes + * @{ + */ +/** The Host Interface Networking init program failed. */ +#define VERR_HOSTIF_INIT_FAILED (-3100) +/** The Host Interface Networking device name is too long. */ +#define VERR_HOSTIF_DEVICE_NAME_TOO_LONG (-3101) +/** The Host Interface Networking name config IOCTL call failed. */ +#define VERR_HOSTIF_IOCTL (-3102) +/** Failed to make the Host Interface Networking handle non-blocking. */ +#define VERR_HOSTIF_BLOCKING (-3103) +/** If a Host Interface Networking filehandle was specified it's not allowed to + * have any init or term programs. */ +#define VERR_HOSTIF_FD_AND_INIT_TERM (-3104) +/** The Host Interface Networking terminate program failed. */ +#define VERR_HOSTIF_TERM_FAILED (-3105) +/** @} */ + + +/** @name VBox HDD Container (VD) Status Codes + * @{ + */ +/** Invalid image type. */ +#define VERR_VD_INVALID_TYPE (-3200) +/** Operation can't be done in current HDD container state. */ +#define VERR_VD_INVALID_STATE (-3201) +/** Configuration value not found. */ +#define VERR_VD_VALUE_NOT_FOUND (-3202) +/** Virtual HDD is not opened. */ +#define VERR_VD_NOT_OPENED (-3203) +/** Requested image is not opened. */ +#define VERR_VD_IMAGE_NOT_FOUND (-3204) +/** Image is read-only. */ +#define VERR_VD_IMAGE_READ_ONLY (-3205) +/** Geometry hasn't been set. */ +#define VERR_VD_GEOMETRY_NOT_SET (-3206) +/** No data for this block in image. */ +#define VERR_VD_BLOCK_FREE (-3207) +/** Differencing and parent images can't be used together due to UUID. */ +#define VERR_VD_UUID_MISMATCH (-3208) +/** Asynchronous I/O request finished. */ +#define VINF_VD_ASYNC_IO_FINISHED 3209 +/** Asynchronous I/O is not finished yet. */ +#define VERR_VD_ASYNC_IO_IN_PROGRESS (-3210) +/** The image is too small or too large for this format. */ +#define VERR_VD_INVALID_SIZE (-3211) +/** Configuration value is unknown. This indicates misconfiguration. */ +#define VERR_VD_UNKNOWN_CFG_VALUES (-3212) +/** Interface is unknown. This indicates misconfiguration. */ +#define VERR_VD_UNKNOWN_INTERFACE (-3213) +/** The DEK for disk encryption is missing. */ +#define VERR_VD_DEK_MISSING (-3214) +/** The provided password to decrypt the DEK was incorrect. */ +#define VERR_VD_PASSWORD_INCORRECT (-3215) +/** Generic: Invalid image file header. Use this for plugins. */ +#define VERR_VD_GEN_INVALID_HEADER (-3220) +/** VDI: Invalid image file header. */ +#define VERR_VD_VDI_INVALID_HEADER (-3230) +/** VDI: Invalid image file header: invalid signature. */ +#define VERR_VD_VDI_INVALID_SIGNATURE (-3231) +/** VDI: Invalid image file header: invalid version. */ +#define VERR_VD_VDI_UNSUPPORTED_VERSION (-3232) +/** Comment string is too long. */ +#define VERR_VD_VDI_COMMENT_TOO_LONG (-3233) +/** VMDK: Invalid image file header. */ +#define VERR_VD_VMDK_INVALID_HEADER (-3240) +/** VMDK: Invalid image file header: invalid version. */ +#define VERR_VD_VMDK_UNSUPPORTED_VERSION (-3241) +/** VMDK: Image property not found. */ +#define VERR_VD_VMDK_VALUE_NOT_FOUND (-3242) +/** VMDK: Operation can't be done in current image state. */ +#define VERR_VD_VMDK_INVALID_STATE (-3243) +/** VMDK: Format is invalid/inconsistent. */ +#define VERR_VD_VMDK_INVALID_FORMAT (-3244) +/** VMDK: Invalid write position. */ +#define VERR_VD_VMDK_INVALID_WRITE (-3245) +/** iSCSI: Invalid header, i.e. dummy for validity check. */ +#define VERR_VD_ISCSI_INVALID_HEADER (-3250) +/** iSCSI: Operation can't be done in current image state. */ +#define VERR_VD_ISCSI_INVALID_STATE (-3251) +/** iSCSI: Invalid device type (not a disk). */ +#define VERR_VD_ISCSI_INVALID_TYPE (-3252) +/** iSCSI: Initiator secret not decrypted */ +#define VERR_VD_ISCSI_SECRET_ENCRYPTED (-3253) +/** VHD: Invalid image file header. */ +#define VERR_VD_VHD_INVALID_HEADER (-3260) +/** Parallels HDD: Invalid image file header. */ +#define VERR_VD_PARALLELS_INVALID_HEADER (-3265) +/** DMG: Invalid image file header. */ +#define VERR_VD_DMG_INVALID_HEADER (-3267) +/** Raw: Invalid image file header. */ +#define VERR_VD_RAW_INVALID_HEADER (-3270) +/** Raw: Invalid image file type. */ +#define VERR_VD_RAW_INVALID_TYPE (-3271) +/** The backend needs more metadata before it can continue. */ +#define VERR_VD_NOT_ENOUGH_METADATA (-3272) +/** Halt the current I/O context until further notification from the backend. */ +#define VERR_VD_IOCTX_HALT (-3273) +/** The disk has a cache attached already. */ +#define VERR_VD_CACHE_ALREADY_EXISTS (-3274) +/** There is no cache attached to the disk. */ +#define VERR_VD_CACHE_NOT_FOUND (-3275) +/** The cache is not up to date with the image. */ +#define VERR_VD_CACHE_NOT_UP_TO_DATE (-3276) +/** The given range does not meet the required alignment. */ +#define VERR_VD_DISCARD_ALIGNMENT_NOT_MET (-3277) +/** The discard operation is not supported for this image. */ +#define VERR_VD_DISCARD_NOT_SUPPORTED (-3278) +/** The image is the correct format but is corrupted. */ +#define VERR_VD_IMAGE_CORRUPTED (-3279) +/** Repairing the image is not supported. */ +#define VERR_VD_IMAGE_REPAIR_NOT_SUPPORTED (-3280) +/** Repairing the image is not possible because the corruption is to severe. */ +#define VERR_VD_IMAGE_REPAIR_IMPOSSIBLE (-3281) +/** Reading from the image was not possible because the offset is out of the image range. + * This usually indicates that there is a minor corruption in the image meta data. */ +#define VERR_VD_READ_OUT_OF_RANGE (-3282) +/** Block read was marked as free in the image and returned as a zero block. */ +#define VINF_VD_NEW_ZEROED_BLOCK 3283 +/** Unable to parse the XML in DMG file. */ +#define VERR_VD_DMG_XML_PARSE_ERROR (-3284) +/** Unable to locate a usable DMG file within the XAR archive. */ +#define VERR_VD_DMG_NOT_FOUND_INSIDE_XAR (-3285) +/** The size of the raw image is not dividable by 512 */ +#define VERR_VD_RAW_SIZE_MODULO_512 (-3286) +/** The size of the raw image is not dividable by 2048 */ +#define VERR_VD_RAW_SIZE_MODULO_2048 (-3287) +/** The size of the raw optical image is too small (<= 32K) */ +#define VERR_VD_RAW_SIZE_OPTICAL_TOO_SMALL (-3288) +/** The size of the raw floppy image is too big (>2.88MB) */ +#define VERR_VD_RAW_SIZE_FLOPPY_TOO_BIG (-3289) + +/** @} */ + + +/** @name VBox Guest Library (VBGL) Status Codes + * @{ + */ +/** Library was not initialized. */ +#define VERR_VBGL_NOT_INITIALIZED (-3300) +/** Virtual address was not allocated by the library. */ +#define VERR_VBGL_INVALID_ADDR (-3301) +/** IOCtl to VBoxGuest driver failed. */ +#define VERR_VBGL_IOCTL_FAILED (-3302) +/** @} */ + + +/** @name VBox USB (VUSB) Status Codes + * @{ + */ +/** No available ports on the hub. + * This error is returned when a device is attempted created and/or attached + * to a hub which is out of ports. */ +#define VERR_VUSB_NO_PORTS (-3400) +/** The requested operation cannot be performed on a detached USB device. */ +#define VERR_VUSB_DEVICE_NOT_ATTACHED (-3401) +/** Failed to allocate memory for a URB. */ +#define VERR_VUSB_NO_URB_MEMORY (-3402) +/** General failure during URB queuing. + * This will go away when the queueing gets proper status code handling. */ +#define VERR_VUSB_FAILED_TO_QUEUE_URB (-3403) +/** Device creation failed because the USB device name was not found. */ +#define VERR_VUSB_DEVICE_NAME_NOT_FOUND (-3404) +/** Not permitted to open the USB device. + * The user doesn't have access to the device in the usbfs, check the mount options. */ +#define VERR_VUSB_USBFS_PERMISSION (-3405) +/** The requested operation cannot be performed because the device + * is currently being reset. */ +#define VERR_VUSB_DEVICE_IS_RESETTING (-3406) +/** The requested operation cannot be performed because the device + * is currently suspended. */ +#define VERR_VUSB_DEVICE_IS_SUSPENDED (-3407) +/** Not permitted to open the USB device. + * The user doesn't have access to the device node, check group memberships. */ +#define VERR_VUSB_USB_DEVICE_PERMISSION (-3408) +/** @} */ + + +/** @name VBox VGA Status Codes + * @{ + */ +/** One of the custom modes was incorrect. + * The format or bit count of the custom mode value is invalid. */ +#define VERR_VGA_INVALID_CUSTOM_MODE (-3500) +/** The display connector is resizing. */ +#define VINF_VGA_RESIZE_IN_PROGRESS (3501) +/** @} */ + + +/** @name Internal Networking Status Codes + * @{ + */ +/** The networking interface to filter was not found. */ +#define VERR_INTNET_FLT_IF_NOT_FOUND (-3600) +/** The networking interface to filter was busy (used by someone). */ +#define VERR_INTNET_FLT_IF_BUSY (-3601) +/** Failed to create or connect to a networking interface filter. */ +#define VERR_INTNET_FLT_IF_FAILED (-3602) +/** The network already exists with a different trunk configuration. */ +#define VERR_INTNET_INCOMPATIBLE_TRUNK (-3603) +/** The network already exists with a different security profile (restricted / public). */ +#define VERR_INTNET_INCOMPATIBLE_FLAGS (-3604) +/** Failed to create a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_CREATE_FAILED (-3605) +/** Failed to retrieve a virtual network interface link ID. */ +#define VERR_INTNET_FLT_VNIC_LINK_ID_NOT_FOUND (-3606) +/** Failed to initialize a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_INIT_FAILED (-3607) +/** Failed to open a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_OPEN_FAILED (-3608) +/** Failed to retrieve underlying (lower mac) link. */ +#define VERR_INTNET_FLT_LOWER_LINK_INFO_NOT_FOUND (-3609) +/** Failed to open underlying link instance. */ +#define VERR_INTNET_FLT_LOWER_LINK_OPEN_FAILED (-3610) +/** Failed to get underlying link ID. */ +#define VERR_INTNET_FLT_LOWER_LINK_ID_NOT_FOUND (-3611) +/** @} */ + + +/** @name Support Driver Status Codes + * @{ + */ +/** The component factory was not found. */ +#define VERR_SUPDRV_COMPONENT_NOT_FOUND (-3700) +/** The component factories do not support the requested interface. */ +#define VERR_SUPDRV_INTERFACE_NOT_SUPPORTED (-3701) +/** The service module was not found. */ +#define VERR_SUPDRV_SERVICE_NOT_FOUND (-3702) +/** The host kernel is too old. */ +#define VERR_SUPDRV_KERNEL_TOO_OLD_FOR_VTX (-3703) +/** Bad VTG magic value. */ +#define VERR_SUPDRV_VTG_MAGIC (-3704) +/** Bad VTG bit count value. */ +#define VERR_SUPDRV_VTG_BITS (-3705) +/** Bad VTG header - misc. */ +#define VERR_SUPDRV_VTG_BAD_HDR_MISC (-3706) +/** Bad VTG header - offset. */ +#define VERR_SUPDRV_VTG_BAD_HDR_OFF (-3707) +/** Bad VTG header - offset. */ +#define VERR_SUPDRV_VTG_BAD_HDR_PTR (-3708) +/** Bad VTG header - to low value. */ +#define VERR_SUPDRV_VTG_BAD_HDR_TOO_FEW (-3709) +/** Bad VTG header - to high value. */ +#define VERR_SUPDRV_VTG_BAD_HDR_TOO_MUCH (-3710) +/** Bad VTG header - size value is not a multiple of the structure size. */ +#define VERR_SUPDRV_VTG_BAD_HDR_NOT_MULTIPLE (-3711) +/** Bad VTG string table offset. */ +#define VERR_SUPDRV_VTG_STRTAB_OFF (-3712) +/** Bad VTG string. */ +#define VERR_SUPDRV_VTG_BAD_STRING (-3713) +/** VTG string is too long. */ +#define VERR_SUPDRV_VTG_STRING_TOO_LONG (-3714) +/** Bad VTG attribute value. */ +#define VERR_SUPDRV_VTG_BAD_ATTR (-3715) +/** Bad VTG provider descriptor. */ +#define VERR_SUPDRV_VTG_BAD_PROVIDER (-3716) +/** Bad VTG probe descriptor. */ +#define VERR_SUPDRV_VTG_BAD_PROBE (-3717) +/** Bad VTG argument list descriptor. */ +#define VERR_SUPDRV_VTG_BAD_ARGLIST (-3718) +/** Bad VTG probe enabled data. */ +#define VERR_SUPDRV_VTG_BAD_PROBE_ENABLED (-3719) +/** Bad VTG probe location record. */ +#define VERR_SUPDRV_VTG_BAD_PROBE_LOC (-3720) +/** The VTG object for the session or image has already been registered. */ +#define VERR_SUPDRV_VTG_ALREADY_REGISTERED (-3721) +/** A driver may only register one VTG object per session. */ +#define VERR_SUPDRV_VTG_ONLY_ONCE_PER_SESSION (-3722) +/** A tracer has already been registered. */ +#define VERR_SUPDRV_TRACER_ALREADY_REGISTERED (-3723) +/** The session has no tracer associated with it. */ +#define VERR_SUPDRV_TRACER_NOT_REGISTERED (-3724) +/** The tracer has already been opened in this sesssion. */ +#define VERR_SUPDRV_TRACER_ALREADY_OPENED (-3725) +/** The tracer has not been opened. */ +#define VERR_SUPDRV_TRACER_NOT_OPENED (-3726) +/** There is no tracer present. */ +#define VERR_SUPDRV_TRACER_NOT_PRESENT (-3727) +/** The tracer is unloading. */ +#define VERR_SUPDRV_TRACER_UNLOADING (-3728) +/** Another thread in the session is talking to the tracer. */ +#define VERR_SUPDRV_TRACER_SESSION_BUSY (-3729) +/** The tracer cannot open it self in the same session. */ +#define VERR_SUPDRV_TRACER_CANNOT_OPEN_SELF (-3730) +/** Bad argument flags. */ +#define VERR_SUPDRV_TRACER_BAD_ARG_FLAGS (-3731) +/** The session has reached the max number of (user mode) providers. */ +#define VERR_SUPDRV_TRACER_TOO_MANY_PROVIDERS (-3732) +/** The tracepoint provider object is too large. */ +#define VERR_SUPDRV_TRACER_TOO_LARGE (-3733) +/** The probe location array isn't adjacent to the probe enable array. */ +#define VERR_SUPDRV_TRACER_UMOD_NOT_ADJACENT (-3734) +/** The user mode tracepoint provider has too many probe locations and + * probes. */ +#define VERR_SUPDRV_TRACER_UMOD_TOO_MANY_PROBES (-3735) +/** The user mode tracepoint provider string table is too large. */ +#define VERR_SUPDRV_TRACER_UMOD_STRTAB_TOO_BIG (-3736) +/** The user mode tracepoint provider string table offset is bad. */ +#define VERR_SUPDRV_TRACER_UMOD_STRTAB_OFF_BAD (-3737) +/** The VM process was denied access to vboxdrv because someone have managed to + * open the process or its main thread with too broad access rights. */ +#define VERR_SUPDRV_HARDENING_EVIL_HANDLE (-3738) +/** Error opening the ApiPort LPC object. */ +#define VERR_SUPDRV_APIPORT_OPEN_ERROR (-3739) +/** Error enumerating all processes in the session. */ +#define VERR_SUPDRV_SESSION_PROCESS_ENUM_ERROR (-3740) +/** The CSRSS instance associated with the client process could not be + * located. */ +#define VERR_SUPDRV_CSRSS_NOT_FOUND (-3741) +/** Type error opening the ApiPort LPC object. */ +#define VERR_SUPDRV_APIPORT_OPEN_ERROR_TYPE (-3742) +/** Failed to measure the TSC delta between two CPUs. */ +#define VERR_SUPDRV_TSC_DELTA_MEASUREMENT_FAILED (-3743) +/** Failed to calculate the TSC frequency. */ +#define VERR_SUPDRV_TSC_FREQ_MEASUREMENT_FAILED (-3744) +/** Failed to get the delta-adjusted TSC value. */ +#define VERR_SUPDRV_TSC_READ_FAILED (-3745) +/** Failed to measure the TSC delta between two CPUs, continue without any + * TSC-delta. */ +#define VWRN_SUPDRV_TSC_DELTA_MEASUREMENT_FAILED 3746 +/** A TSC-delta measurement request is currently being serviced. */ +#define VERR_SUPDRV_TSC_DELTA_MEASUREMENT_BUSY (-3747) +/** The process trying to open VBoxDrv is not a budding VM process (1). */ +#define VERR_SUPDRV_NOT_BUDDING_VM_PROCESS_1 (-3748) +/** The process trying to open VBoxDrv is not a budding VM process (2). */ +#define VERR_SUPDRV_NOT_BUDDING_VM_PROCESS_2 (-3749) +/** @} */ + + +/** @name Support Library Status Codes + * @{ + */ +/** The specified path was not absolute (hardening). */ +#define VERR_SUPLIB_PATH_NOT_ABSOLUTE (-3750) +/** The specified path was not clean (hardening). */ +#define VERR_SUPLIB_PATH_NOT_CLEAN (-3751) +/** The specified path is too long (hardening). */ +#define VERR_SUPLIB_PATH_TOO_LONG (-3752) +/** The specified path is too short (hardening). */ +#define VERR_SUPLIB_PATH_TOO_SHORT (-3753) +/** The specified path has too many components (hardening). */ +#define VERR_SUPLIB_PATH_TOO_MANY_COMPONENTS (-3754) +/** The specified path is a root path (hardening). */ +#define VERR_SUPLIB_PATH_IS_ROOT (-3755) +/** Failed to enumerate directory (hardening). */ +#define VERR_SUPLIB_DIR_ENUM_FAILED (-3756) +/** Failed to stat a file/dir during enumeration (hardening). */ +#define VERR_SUPLIB_STAT_ENUM_FAILED (-3757) +/** Failed to stat a file/dir (hardening). */ +#define VERR_SUPLIB_STAT_FAILED (-3758) +/** Failed to fstat a native handle (hardening). */ +#define VERR_SUPLIB_FSTAT_FAILED (-3759) +/** Found an illegal symbolic link (hardening). */ +#define VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED (-3760) +/** Found something which isn't a file nor a directory (hardening). */ +#define VERR_SUPLIB_NOT_DIR_NOT_FILE (-3761) +/** The specified path is a directory and not a file (hardening). */ +#define VERR_SUPLIB_IS_DIRECTORY (-3762) +/** The specified path is a file and not a directory (hardening). */ +#define VERR_SUPLIB_IS_FILE (-3763) +/** The path is not the same object as the native handle (hardening). */ +#define VERR_SUPLIB_NOT_SAME_OBJECT (-3764) +/** The owner is not root (hardening). */ +#define VERR_SUPLIB_OWNER_NOT_ROOT (-3765) +/** The group is a non-system group and it has write access (hardening). */ +#define VERR_SUPLIB_WRITE_NON_SYS_GROUP (-3766) +/** The file or directory is world writable (hardening). */ +#define VERR_SUPLIB_WORLD_WRITABLE (-3767) +/** The argv[0] of an internal application does not match the executable image + * path (hardening). */ +#define VERR_SUPLIB_INVALID_ARGV0_INTERNAL (-3768) +/** The internal application does not reside in the correct place (hardening). */ +#define VERR_SUPLIB_INVALID_INTERNAL_APP_DIR (-3769) +/** Unable to establish trusted of VM process (0). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_0 (-3770) +/** Unable to establish trusted of VM process (1). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_1 (-3771) +/** Unable to establish trusted of VM process (2). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_2 (-3772) +/** Unable to establish trusted of VM process (3). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_3 (-3773) +/** Unable to establish trusted of VM process (4). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_4 (-3774) +/** Unable to establish trusted of VM process (5). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_5 (-3775) +/** @} */ + + +/** @name VBox GMM Status Codes + * @{ + */ +/** The GMM is out of pages and needs to be give another chunk of user memory that + * it can lock down and borrow pages from. */ +#define VERR_GMM_SEED_ME (-3800) +/** Unable to allocate more pages from the host system. */ +#define VERR_GMM_OUT_OF_MEMORY (-3801) +/** Hit the global allocation limit. + * If you know there is still sufficient memory available, try raising the limit. */ +#define VERR_GMM_HIT_GLOBAL_LIMIT (-3802) +/** Hit the a VM account limit. */ +#define VERR_GMM_HIT_VM_ACCOUNT_LIMIT (-3803) +/** Attempt to free more memory than what was previously allocated. */ +#define VERR_GMM_ATTEMPT_TO_FREE_TOO_MUCH (-3804) +/** Attempted to report too many pages as deflated. */ +#define VERR_GMM_ATTEMPT_TO_DEFLATE_TOO_MUCH (-3805) +/** The page to be freed or updated was not found. */ +#define VERR_GMM_PAGE_NOT_FOUND (-3806) +/** The specified shared page was not actually private. */ +#define VERR_GMM_PAGE_NOT_PRIVATE (-3807) +/** The specified shared page was not actually shared. */ +#define VERR_GMM_PAGE_NOT_SHARED (-3808) +/** The page to be freed was already freed. */ +#define VERR_GMM_PAGE_ALREADY_FREE (-3809) +/** The page to be updated or freed was noted owned by the caller. */ +#define VERR_GMM_NOT_PAGE_OWNER (-3810) +/** The specified chunk was not found. */ +#define VERR_GMM_CHUNK_NOT_FOUND (-3811) +/** The chunk has already been mapped into the process. */ +#define VERR_GMM_CHUNK_ALREADY_MAPPED (-3812) +/** The chunk to be unmapped isn't actually mapped into the process. */ +#define VERR_GMM_CHUNK_NOT_MAPPED (-3813) +/** The chunk has been mapped too many times already (impossible). */ +#define VERR_GMM_TOO_MANY_CHUNK_MAPPINGS (-3814) +/** The reservation or reservation update was declined - too many VMs, too + * little memory, and/or too low GMM configuration. */ +#define VERR_GMM_MEMORY_RESERVATION_DECLINED (-3815) +/** A GMM sanity check failed. */ +#define VERR_GMM_IS_NOT_SANE (-3816) +/** Inserting a new chunk failed. */ +#define VERR_GMM_CHUNK_INSERT (-3817) +/** Failed to obtain the GMM instance. */ +#define VERR_GMM_INSTANCE (-3818) +/** Bad mutex semaphore flags. */ +#define VERR_GMM_MTX_FLAGS (-3819) +/** Internal processing error in the page allocator. */ +#define VERR_GMM_ALLOC_PAGES_IPE (-3820) +/** Invalid page count given to GMMR3FreePagesPerform. */ +#define VERR_GMM_ACTUAL_PAGES_IPE (-3821) +/** The shared module name is too long. */ +#define VERR_GMM_MODULE_NAME_TOO_LONG (-3822) +/** The shared module version string is too long. */ +#define VERR_GMM_MODULE_VERSION_TOO_LONG (-3823) +/** The shared module has too many regions. */ +#define VERR_GMM_TOO_MANY_REGIONS (-3824) +/** The guest has reported too many modules. */ +#define VERR_GMM_TOO_MANY_PER_VM_MODULES (-3825) +/** The guest has reported too many modules. */ +#define VERR_GMM_TOO_MANY_GLOBAL_MODULES (-3826) +/** The shared module is already registered. */ +#define VINF_GMM_SHARED_MODULE_ALREADY_REGISTERED (3827) +/** The shared module clashed address wise with a previously registered + * module. */ +#define VERR_GMM_SHARED_MODULE_ADDRESS_CLASH (-3828) +/** The shared module was not found. */ +#define VERR_GMM_SHARED_MODULE_NOT_FOUND (-3829) +/** The size of the shared module was out of range. */ +#define VERR_GMM_BAD_SHARED_MODULE_SIZE (-3830) +/** The size of the one or more regions in the shared module was out of + * range. */ +#define VERR_GMM_SHARED_MODULE_BAD_REGIONS_SIZE (-3831) +/** @} */ + + +/** @name VBox GVM Status Codes + * @{ + */ +/** The GVM is out of VM handle space. */ +#define VERR_GVM_TOO_MANY_VMS (-3900) +/** The EMT was not blocked at the time of the call. */ +#define VINF_GVM_NOT_BLOCKED 3901 +/** The EMT was not busy running guest code at the time of the call. */ +#define VINF_GVM_NOT_BUSY_IN_GC 3902 +/** RTThreadYield was called during a GVMMR0SchedPoll call. */ +#define VINF_GVM_YIELDED 3903 +/** @} */ + + +/** @name VBox VMX Status Codes + * @{ + */ +/** VMXON failed; possibly because it was already run before. */ +#define VERR_VMX_VMXON_FAILED (-4000) +/** Invalid VMCS pointer. + * (Can be OR'ed with VERR_VMX_INVALID_VMCS_FIELD.) */ +#define VERR_VMX_INVALID_VMCS_PTR (-4001) +/** Invalid VMCS index or write to read-only element. */ +#define VERR_VMX_INVALID_VMCS_FIELD (-4002) +/** Reserved for future status code that we wish to OR with + * VERR_VMX_INVALID_VMCS_PTR and VERR_VMX_INVALID_VMCS_FIELD. */ +#define VERR_VMX_RESERVED (-4003) +/** Invalid VMXON pointer. */ +#define VERR_VMX_INVALID_VMXON_PTR (-4004) +/** Unable to start VM execution. */ +#define VERR_VMX_UNABLE_TO_START_VM (-4005) +/** Unable to switch due to invalid host state. */ +#define VERR_VMX_INVALID_HOST_STATE (-4006) +/** IA32_FEATURE_CONTROL MSR not setup correcty (turn on VMX in the host system BIOS) */ +#define VERR_VMX_ILLEGAL_FEATURE_CONTROL_MSR (-4007) +/** Invalid CPU mode for VMX execution. */ +#define VERR_VMX_UNSUPPORTED_MODE (-4008) +/** VMX CPU extension not available */ +#define VERR_VMX_NO_VMX (-4009) +/** CPU was incorrectly left in VMX root mode; incompatible with VirtualBox */ +#define VERR_VMX_IN_VMX_ROOT_MODE (-4011) +/** Somebody cleared X86_CR4_VMXE in the CR4 register. */ +#define VERR_VMX_X86_CR4_VMXE_CLEARED (-4012) +/** Failed to enable and lock VT-x features. */ +#define VERR_VMX_MSR_LOCKING_FAILED (-4013) +/** Unable to switch due to invalid guest state. */ +#define VERR_VMX_INVALID_GUEST_STATE (-4014) +/** Unexpected VM exit. */ +#define VERR_VMX_UNEXPECTED_EXIT (-4015) +/** Unexpected VM exception. */ +#define VERR_VMX_UNEXPECTED_EXCEPTION (-4016) +/** Unexpected interruption exit type. */ +#define VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE (-4017) +/** CPU is not in VMX root mode; unexpected when leaving VMX root mode. */ +#define VERR_VMX_NOT_IN_VMX_ROOT_MODE (-4018) +/** Undefined VM exit code. */ +#define VERR_VMX_UNDEFINED_EXIT_CODE (-4019) +/** VMPTRLD failed; possibly because of invalid VMCS launch-state. */ +#define VERR_VMX_VMPTRLD_FAILED (-4021) +/** Invalid VMCS pointer passed to VMLAUNCH/VMRESUME. */ +#define VERR_VMX_INVALID_VMCS_PTR_TO_START_VM (-4022) +/** Internal VMX processing error no 1. */ +#define VERR_VMX_IPE_1 (-4023) +/** Internal VMX processing error no 2. */ +#define VERR_VMX_IPE_2 (-4024) +/** Internal VMX processing error no 3. */ +#define VERR_VMX_IPE_3 (-4025) +/** Internal VMX processing error no 4. */ +#define VERR_VMX_IPE_4 (-4026) +/** Internal VMX processing error no 5. */ +#define VERR_VMX_IPE_5 (-4027) +/** VT-x features for all modes (SMX and non-SMX) disabled by the BIOS. */ +#define VERR_VMX_MSR_ALL_VMX_DISABLED (-4028) +/** VT-x features disabled by the BIOS. */ +#define VERR_VMX_MSR_VMX_DISABLED (-4029) +/** VM-Entry Controls internal cache invalid. */ +#define VERR_VMX_ENTRY_CTLS_CACHE_INVALID (-4030) +/** VM-Exit Controls internal cache invalid. */ +#define VERR_VMX_EXIT_CTLS_CACHE_INVALID (-4031) +/** VM-Execution Pin-based Controls internal cache invalid. */ +#define VERR_VMX_PIN_EXEC_CTLS_CACHE_INVALID (-4032) +/** VM-Execution Primary Processor-based Controls internal cache + * invalid. */ +#define VERR_VMX_PROC_EXEC_CTLS_CACHE_INVALID (-4033) +/** VM-Execution Secondary Processor-based Controls internal + * cache invalid. */ +#define VERR_VMX_PROC_EXEC2_CTLS_CACHE_INVALID (-4034) +/** Failed to set VMXON enable bit while enabling VT-x through the MSR. */ +#define VERR_VMX_MSR_VMX_ENABLE_FAILED (-4035) +/** Failed to enable VMXON-in-SMX bit while enabling VT-x through the MSR. */ +#define VERR_VMX_MSR_SMX_VMX_ENABLE_FAILED (-4036) +/** @} */ + + +/** @name VBox SVM Status Codes + * @{ + */ +/** Unable to start VM execution. */ +#define VERR_SVM_UNABLE_TO_START_VM (-4050) +/** AMD-V bit not set in K6_EFER MSR */ +#define VERR_SVM_ILLEGAL_EFER_MSR (-4051) +/** AMD-V CPU extension not available. */ +#define VERR_SVM_NO_SVM (-4052) +/** AMD-V CPU extension disabled (by BIOS). */ +#define VERR_SVM_DISABLED (-4053) +/** AMD-V CPU extension in-use. */ +#define VERR_SVM_IN_USE (-4054) +/** Invalid pVMCB. */ +#define VERR_SVM_INVALID_PVMCB (-4055) +/** Unexpected SVM exit. */ +#define VERR_SVM_UNEXPECTED_EXIT (-4056) +/** Unexpected SVM exception exit. */ +#define VERR_SVM_UNEXPECTED_XCPT_EXIT (-4057) +/** Unexpected SVM patch type. */ +#define VERR_SVM_UNEXPECTED_PATCH_TYPE (-4058) +/** Unable to start VM execution due to an invalid guest state. */ +#define VERR_SVM_INVALID_GUEST_STATE (-4059) +/** Unknown or unrecognized SVM exit. */ +#define VERR_SVM_UNKNOWN_EXIT (-4060) +/** Internal SVM processing error no 1. */ +#define VERR_SVM_IPE_1 (-4061) +/** Internal SVM processing error no 2. */ +#define VERR_SVM_IPE_2 (-4062) +/** Internal SVM processing error no 3. */ +#define VERR_SVM_IPE_3 (-4063) +/** Internal SVM processing error no 4. */ +#define VERR_SVM_IPE_4 (-4064) +/** Internal SVM processing error no 5. */ +#define VERR_SVM_IPE_5 (-4065) +/** @} */ + + +/** @name VBox HM Status Codes + * @{ + */ +/** Unable to start VM execution. */ +#define VERR_HM_UNKNOWN_CPU (-4100) +/** No CPUID support. */ +#define VERR_HM_NO_CPUID (-4101) +/** Host is about to go into suspend mode. */ +#define VERR_HM_SUSPEND_PENDING (-4102) +/** Conflicting CFGM values. */ +#define VERR_HM_CONFIG_MISMATCH (-4103) +/** Internal processing error in the HM init code. */ +#define VERR_HM_ALREADY_ENABLED_IPE (-4104) +/** Unexpected MSR in the auto-load/store area. */ +#define VERR_HM_UNEXPECTED_LD_ST_MSR (-4105) +/** No 32-bit to 64-bit switcher in place. */ +#define VERR_HM_NO_32_TO_64_SWITCHER (-4106) +/** HMR0Leave was called on the wrong CPU. */ +#define VERR_HM_WRONG_CPU (-4107) +/** Internal processing error \#1 in the HM code. */ +#define VERR_HM_IPE_1 (-4108) +/** Internal processing error \#2 in the HM code. */ +#define VERR_HM_IPE_2 (-4109) +/** Wrong 32/64-bit switcher. */ +#define VERR_HM_WRONG_SWITCHER (-4110) +/** Unknown I/O instruction. */ +#define VERR_HM_UNKNOWN_IO_INSTRUCTION (-4111) +/** Unsupported CPU feature combination. */ +#define VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO (-4112) +/** Internal processing error \#3 in the HM code. */ +#define VERR_HM_IPE_3 (-4113) +/** Internal processing error \#4 in the HM code. */ +#define VERR_HM_IPE_4 (-4114) +/** Internal processing error \#5 in the HM code. */ +#define VERR_HM_IPE_5 (-4115) +/** Invalid HM64ON32OP value. */ +#define VERR_HM_INVALID_HM64ON32OP (-4116) +/** Resume guest execution after injecting a double-fault. */ +#define VINF_HM_DOUBLE_FAULT 4117 +/** @} */ + + +/** @name VBox Disassembler Status Codes + * @{ + */ +/** Invalid opcode byte(s) */ +#define VERR_DIS_INVALID_OPCODE (-4200) +/** Generic failure during disassembly. */ +#define VERR_DIS_GEN_FAILURE (-4201) +/** No read callback. */ +#define VERR_DIS_NO_READ_CALLBACK (-4202) +/** Invalid Mod/RM. */ +#define VERR_DIS_INVALID_MODRM (-4203) +/** Invalid parameter index. */ +#define VERR_DIS_INVALID_PARAMETER (-4204) +/** The instruction is too long. */ +#define VERR_DIS_TOO_LONG_INSTR (-4206) +/** @} */ + + +/** @name VBox Webservice Status Codes + * @{ + */ +/** Authentication failed (ISessionManager::logon()) */ +#define VERR_WEB_NOT_AUTHENTICATED (-4300) +/** Invalid format of managed object reference */ +#define VERR_WEB_INVALID_MANAGED_OBJECT_REFERENCE (-4301) +/** Invalid session ID in managed object reference */ +#define VERR_WEB_INVALID_SESSION_ID (-4302) +/** Invalid object ID in managed object reference */ +#define VERR_WEB_INVALID_OBJECT_ID (-4303) +/** Unsupported interface for managed object reference */ +#define VERR_WEB_UNSUPPORTED_INTERFACE (-4304) +/** @} */ + + +/** @name VBox PARAV Status Codes + * @{ + */ +/** Switch back to host */ +#define VINF_PARAV_SWITCH_TO_HOST 4400 + +/** @} */ + +/** @name VBox Video HW Acceleration command status + * @{ + */ +/** command processing is pending, a completion handler will be called */ +#define VINF_VHWA_CMD_PENDING 4500 + +/** @} */ + + +/** @name VBox COM error codes + * + * @remarks Global::vboxStatusCodeToCOM and Global::vboxStatusCodeFromCOM uses + * these for conversion that is lossless with respect to important COM + * status codes. These methods should be moved to the glue library. + * @{ */ +/** Unexpected turn of events. */ +#define VERR_COM_UNEXPECTED (-4600) +/** The base of the VirtualBox COM status codes (the lower value) + * corresponding 1:1 to VBOX_E_XXX. This is the lowest value. */ +#define VERR_COM_VBOX_LOWEST (-4699) +/** Object corresponding to the supplied arguments does not exist. */ +#define VERR_COM_OBJECT_NOT_FOUND (VERR_COM_VBOX_LOWEST + 1) +/** Current virtual machine state prevents the operation. */ +#define VERR_COM_INVALID_VM_STATE (VERR_COM_VBOX_LOWEST + 2) +/** Virtual machine error occurred attempting the operation. */ +#define VERR_COM_VM_ERROR (VERR_COM_VBOX_LOWEST + 3) +/** File not accessible or erroneous file contents. */ +#define VERR_COM_FILE_ERROR (VERR_COM_VBOX_LOWEST + 4) +/** IPRT error. */ +#define VERR_COM_IPRT_ERROR (VERR_COM_VBOX_LOWEST + 5) +/** Pluggable Device Manager error. */ +#define VERR_COM_PDM_ERROR (VERR_COM_VBOX_LOWEST + 6) +/** Current object state prohibits operation. */ +#define VERR_COM_INVALID_OBJECT_STATE (VERR_COM_VBOX_LOWEST + 7) +/** Host operating system related error. */ +#define VERR_COM_HOST_ERROR (VERR_COM_VBOX_LOWEST + 8) +/** Requested operation is not supported. */ +#define VERR_COM_NOT_SUPPORTED (VERR_COM_VBOX_LOWEST + 9) +/** Invalid XML found. */ +#define VERR_COM_XML_ERROR (VERR_COM_VBOX_LOWEST + 10) +/** Current session state prohibits operation. */ +#define VERR_COM_INVALID_SESSION_STATE (VERR_COM_VBOX_LOWEST + 11) +/** Object being in use prohibits operation. */ +#define VERR_COM_OBJECT_IN_USE (VERR_COM_VBOX_LOWEST + 12) +/** Returned by callback methods which does not need to be called + * again because the client does not actually make use of them. */ +#define VERR_COM_DONT_CALL_AGAIN (VERR_COM_VBOX_LOWEST + 13) +/** @} */ + +/** @name VBox VMMDev Status codes + * @{ + */ +/** CPU hotplug events from VMMDev are not monitored by the guest. */ +#define VERR_VMMDEV_CPU_HOTPLUG_NOT_MONITORED_BY_GUEST (-4700) +/** @} */ + +/** @name VBox async I/O manager Status Codes + * @{ + */ +/** Async I/O task is pending, a completion handler will be called. */ +#define VINF_AIO_TASK_PENDING 4800 +/** @} */ + +/** @name VBox Virtual SCSI Status Codes + * @{ + */ +/** LUN type is not supported. */ +#define VERR_VSCSI_LUN_TYPE_NOT_SUPPORTED (-4900) +/** LUN is already/still attached to a device. */ +#define VERR_VSCSI_LUN_ATTACHED_TO_DEVICE (-4901) +/** The specified LUN is invalid. */ +#define VERR_VSCSI_LUN_INVALID (-4902) +/** The LUN is not attached to the device. */ +#define VERR_VSCSI_LUN_NOT_ATTACHED (-4903) +/** The LUN is still busy. */ +#define VERR_VSCSI_LUN_BUSY (-4904) +/** @} */ + +/** @name VBox FAM Status Codes + * @{ + */ +/** FAM failed to open a connection. */ +#define VERR_FAM_OPEN_FAILED (-5000) +/** FAM failed to add a file to the list to be monitored. */ +#define VERR_FAM_MONITOR_FILE_FAILED (-5001) +/** FAM failed to add a directory to the list to be monitored. */ +#define VERR_FAM_MONITOR_DIRECTORY_FAILED (-5002) +/** The connection to the FAM daemon was lost. */ +#define VERR_FAM_CONNECTION_LOST (-5003) +/** @} */ + + +/** @name PCI Passtrhough Status Codes + * @{ + */ +/** RamPreAlloc not set. + * RAM pre-allocation is currently a requirement for PCI passthrough. */ +#define VERR_PCI_PASSTHROUGH_NO_RAM_PREALLOC (-5100) +/** VT-x/AMD-V not active. + * PCI passthrough currently works only if VT-x/AMD-V is active. */ +#define VERR_PCI_PASSTHROUGH_NO_HM (-5101) +/** Nested paging not active. + * PCI passthrough currently works only if nested paging is active. */ +#define VERR_PCI_PASSTHROUGH_NO_NESTED_PAGING (-5102) +/** @} */ + + +/** @name GVMM Status Codes + * @{ + */ +/** Internal error obtaining the GVMM instance. */ +#define VERR_GVMM_INSTANCE (-5200) +/** GVMM does not support the range of CPUs present/possible on the host. */ +#define VERR_GVMM_HOST_CPU_RANGE (-5201) +/** GVMM ran into some broken IPRT code. */ +#define VERR_GVMM_BROKEN_IPRT (-5202) +/** Internal processing error \#1 in the GVMM code. */ +#define VERR_GVMM_IPE_1 (-5203) +/** Internal processing error \#2 in the GVMM code. */ +#define VERR_GVMM_IPE_2 (-5204) +/** @} */ + + +/** @name IEM Status Codes + * @{ */ +/** The instruction is not yet implemented by IEM. */ +#define VERR_IEM_INSTR_NOT_IMPLEMENTED (-5300) +/** Invalid operand size passed to an IEM function. */ +#define VERR_IEM_INVALID_OPERAND_SIZE (-5301) +/** Invalid address mode passed to an IEM function. */ +#define VERR_IEM_INVALID_ADDRESS_MODE (-5302) +/** Invalid effective segment register number passed to an IEM function. */ +#define VERR_IEM_INVALID_EFF_SEG (-5303) +/** Invalid instruction length passed to an IEM function. */ +#define VERR_IEM_INVALID_INSTR_LENGTH (-5304) +/** Internal status code for indicating that a selector isn't valid (LAR, LSL, + * VERR, VERW). This is not used outside the instruction implementations. */ +#define VINF_IEM_SELECTOR_NOT_OK (5305) +/** Restart the current instruction. For testing only. */ +#define VERR_IEM_RESTART_INSTRUCTION (-5389) +/** This particular aspect of the instruction is not yet implemented by IEM. */ +#define VERR_IEM_ASPECT_NOT_IMPLEMENTED (-5390) +/** Internal processing error \#1 in the IEM code. */ +#define VERR_IEM_IPE_1 (-5391) +/** Internal processing error \#2 in the IEM code. */ +#define VERR_IEM_IPE_2 (-5392) +/** Internal processing error \#3 in the IEM code. */ +#define VERR_IEM_IPE_3 (-5393) +/** Internal processing error \#4 in the IEM code. */ +#define VERR_IEM_IPE_4 (-5394) +/** Internal processing error \#5 in the IEM code. */ +#define VERR_IEM_IPE_5 (-5395) +/** Internal processing error \#6 in the IEM code. */ +#define VERR_IEM_IPE_6 (-5396) +/** Internal processing error \#7 in the IEM code. */ +#define VERR_IEM_IPE_7 (-5397) +/** Internal processing error \#8 in the IEM code. */ +#define VERR_IEM_IPE_8 (-5398) +/** Internal processing error \#9 in the IEM code. */ +#define VERR_IEM_IPE_9 (-5399) +/** @} */ + + +/** @name DBGC Status Codes + * @{ */ +/** Status that causes DBGC to quit. */ +#define VERR_DBGC_QUIT (-5400) +/** Async command pending. */ +#define VWRN_DBGC_CMD_PENDING 5401 +/** The command has already been registered. */ +#define VWRN_DBGC_ALREADY_REGISTERED 5402 +/** The command cannot be deregistered because has not been registered. */ +#define VERR_DBGC_COMMANDS_NOT_REGISTERED (-5403) +/** Unknown breakpoint. */ +#define VERR_DBGC_BP_NOT_FOUND (-5404) +/** The breakpoint already exists. */ +#define VERR_DBGC_BP_EXISTS (-5405) +/** The breakpoint has no command. */ +#define VINF_DBGC_BP_NO_COMMAND 5406 +/** Generic debugger command failure. */ +#define VERR_DBGC_COMMAND_FAILED (-5407) +/** Logic bug in the DBGC code. */ +#define VERR_DBGC_IPE (-5408) + +/** The lowest parse status code. */ +#define VERR_DBGC_PARSE_LOWEST (-5499) +/** Syntax error - too few arguments. */ +#define VERR_DBGC_PARSE_TOO_FEW_ARGUMENTS (VERR_DBGC_PARSE_LOWEST + 0) +/** Syntax error - too many arguments. */ +#define VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS (VERR_DBGC_PARSE_LOWEST + 1) +/** Syntax error - too many arguments for static storage. */ +#define VERR_DBGC_PARSE_ARGUMENT_OVERFLOW (VERR_DBGC_PARSE_LOWEST + 2) +/** Syntax error - expected binary operator. */ +#define VERR_DBGC_PARSE_EXPECTED_BINARY_OP (VERR_DBGC_PARSE_LOWEST + 3) + +/** Syntax error - the argument does not allow a range to be specified. */ +#define VERR_DBGC_PARSE_NO_RANGE_ALLOWED (VERR_DBGC_PARSE_LOWEST + 5) +/** Syntax error - unbalanced quotes. */ +#define VERR_DBGC_PARSE_UNBALANCED_QUOTE (VERR_DBGC_PARSE_LOWEST + 6) +/** Syntax error - unbalanced parenthesis. */ +#define VERR_DBGC_PARSE_UNBALANCED_PARENTHESIS (VERR_DBGC_PARSE_LOWEST + 7) +/** Syntax error - an argument or subargument contains nothing useful. */ +#define VERR_DBGC_PARSE_EMPTY_ARGUMENT (VERR_DBGC_PARSE_LOWEST + 8) +/** Syntax error - invalid operator usage. */ +#define VERR_DBGC_PARSE_UNEXPECTED_OPERATOR (VERR_DBGC_PARSE_LOWEST + 9) +/** Syntax error - invalid numeric value. */ +#define VERR_DBGC_PARSE_INVALID_NUMBER (VERR_DBGC_PARSE_LOWEST + 10) +/** Syntax error - numeric overflow. */ +#define VERR_DBGC_PARSE_NUMBER_TOO_BIG (VERR_DBGC_PARSE_LOWEST + 11) +/** Syntax error - invalid operation attempted. */ +#define VERR_DBGC_PARSE_INVALID_OPERATION (VERR_DBGC_PARSE_LOWEST + 12) +/** Syntax error - function not found. */ +#define VERR_DBGC_PARSE_FUNCTION_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 13) +/** Syntax error - the specified function is not a function. */ +#define VERR_DBGC_PARSE_NOT_A_FUNCTION (VERR_DBGC_PARSE_LOWEST + 14) +/** Syntax error - out of scratch memory. */ +#define VERR_DBGC_PARSE_NO_SCRATCH (VERR_DBGC_PARSE_LOWEST + 15) +/** Syntax error - out of regular heap memory. */ +#define VERR_DBGC_PARSE_NO_MEMORY (VERR_DBGC_PARSE_LOWEST + 16) +/** Syntax error - incorrect argument type. */ +#define VERR_DBGC_PARSE_INCORRECT_ARG_TYPE (VERR_DBGC_PARSE_LOWEST + 17) +/** Syntax error - an undefined variable was referenced. */ +#define VERR_DBGC_PARSE_VARIABLE_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 18) +/** Syntax error - a type conversion failed. */ +#define VERR_DBGC_PARSE_CONVERSION_FAILED (VERR_DBGC_PARSE_LOWEST + 19) +/** Syntax error - you hit a debugger feature which isn't implemented yet. + * (Feel free to help implement it.) */ +#define VERR_DBGC_PARSE_NOT_IMPLEMENTED (VERR_DBGC_PARSE_LOWEST + 20) +/** Syntax error - Couldn't satisfy a request for a specific result type. */ +#define VERR_DBGC_PARSE_BAD_RESULT_TYPE (VERR_DBGC_PARSE_LOWEST + 21) +/** Syntax error - Cannot read symbol value, it is a set-only symbol. */ +#define VERR_DBGC_PARSE_WRITEONLY_SYMBOL (VERR_DBGC_PARSE_LOWEST + 22) +/** Syntax error - Invalid command name. */ +#define VERR_DBGC_PARSE_INVALD_COMMAND_NAME (VERR_DBGC_PARSE_LOWEST + 23) +/** Syntax error - Command not found. */ +#define VERR_DBGC_PARSE_COMMAND_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 24) +/** Syntax error - buggy parser. */ +#define VERR_DBGC_PARSE_BUG (VERR_DBGC_PARSE_LOWEST + 25) +/** @} */ + + +/** @name Support driver/library shared verification status codes. + * @{ */ +/** Process Verification Failure: The memory content does not match the image + * file. */ +#define VERR_SUP_VP_MEMORY_VS_FILE_MISMATCH (-5600) +/** Process Verification Failure: The memory protection of a image file section + * does not match what the section header prescribes. */ +#define VERR_SUP_VP_SECTION_PROTECTION_MISMATCH (-5601) +/** Process Verification Failure: One of the section in the image file is not + * mapped into memory. */ +#define VERR_SUP_VP_SECTION_NOT_MAPPED (-5602) +/** Process Verification Failure: One of the section in the image file is not + * fully mapped into memory. */ +#define VERR_SUP_VP_SECTION_NOT_FULLY_MAPPED (-5603) +/** Process Verification Failure: Bad file alignment value in image header. */ +#define VERR_SUP_VP_BAD_FILE_ALIGNMENT_VALUE (-5604) +/** Process Verification Failure: Bad image base in header. */ +#define VERR_SUP_VP_BAD_IMAGE_BASE (-5605) +/** Process Verification Failure: Bad image signature. */ +#define VERR_SUP_VP_BAD_IMAGE_SIGNATURE (-5606) +/** Process Verification Failure: Bad image size. */ +#define VERR_SUP_VP_BAD_IMAGE_SIZE (-5607) +/** Process Verification Failure: Bad new-header offset in the MZ header. */ +#define VERR_SUP_VP_BAD_MZ_OFFSET (-5608) +/** Process Verification Failure: Bad optional header field. */ +#define VERR_SUP_VP_BAD_OPTIONAL_HEADER (-5609) +/** Process Verification Failure: Bad section alignment value in image + * header. */ +#define VERR_SUP_VP_BAD_SECTION_ALIGNMENT_VALUE (-5610) +/** Process Verification Failure: Bad section raw data size. */ +#define VERR_SUP_VP_BAD_SECTION_FILE_SIZE (-5611) +/** Process Verification Failure: Bad virtual section address. */ +#define VERR_SUP_VP_BAD_SECTION_RVA (-5612) +/** Process Verification Failure: Bad virtual section size. */ +#define VERR_SUP_VP_BAD_SECTION_VIRTUAL_SIZE (-5613) +/** Process Verification Failure: Bad size of image header. */ +#define VERR_SUP_VP_BAD_SIZE_OF_HEADERS (-5614) +/** Process Verification Failure: The process is being debugged. */ +#define VERR_SUP_VP_DEBUGGED (-5615) +/** Process Verification Failure: A DLL was found more than once. */ +#define VERR_SUP_VP_DUPLICATE_DLL_MAPPING (-5616) +/** Process Verification Failure: Image section region is too large. */ +#define VERR_SUP_VP_EMPTY_REGION_TOO_LARGE (-5617) +/** Process Verification Failure: Executable file name and process image name + * does not match up. */ +#define VERR_SUP_VP_EXE_VS_PROC_NAME_MISMATCH (-5618) +/** Process Verification Failure: Found executable memory allocated in the + * process. There is only supposed be executable memory associated with + * image file mappings (DLLs & EXE). */ +#define VERR_SUP_VP_FOUND_EXEC_MEMORY (-5619) +/** Process Verification Failure: There is more than one known executable mapped + * into the process. */ +#define VERR_SUP_VP_FOUND_MORE_THAN_ONE_EXE_MAPPING (-5620) +/** Process Verification Failure: Error closing image file handle. */ +#define VERR_SUP_VP_IMAGE_FILE_CLOSE_ERROR (-5621) +/** Process Verification Failure: Error opening image file. */ +#define VERR_SUP_VP_IMAGE_FILE_OPEN_ERROR (-5622) +/** Process Verification Failure: Error reading image file header. */ +#define VERR_SUP_VP_IMAGE_HDR_READ_ERROR (-5623) +/** Process Verification Failure: Image mapping is bogus as the first region + * has different AllocationBase and BaseAddress values, indicating that a + * section was unmapped or otherwise tampered with. */ +#define VERR_SUP_VP_IMAGE_MAPPING_BASE_ERROR (-5624) +/** Process Verification Failure: Error reading process memory for comparing + * with disk data. */ +#define VERR_SUP_VP_MEMORY_READ_ERROR (-5625) +/** Process Verification Failure: Found no executable mapped into the process + * address space. */ +#define VERR_SUP_VP_NO_FOUND_NO_EXE_MAPPING (-5626) +/** Process Verification Failure: An image mapping failed to report a name. */ +#define VERR_SUP_VP_NO_IMAGE_MAPPING_NAME (-5627) +/** Process Verification Failure: No KERNE32.DLL mapping found. This is + * impossible. */ +#define VERR_SUP_VP_NO_KERNEL32_MAPPING (-5628) +/** Process Verification Failure: Error allocating memory. */ +#define VERR_SUP_VP_NO_MEMORY (-5629) +/** Process Verification Failure: Error allocating state memory or querying + * the system32 path. */ +#define VERR_SUP_VP_NO_MEMORY_STATE (-5630) +/** Process Verification Failure: No NTDLL.DLL mapping found. This is + * impossible. */ +#define VERR_SUP_VP_NO_NTDLL_MAPPING (-5631) +/** Process Verification Failure: A DLL residing outside System32 was found + * in the process. */ +#define VERR_SUP_VP_NON_SYSTEM32_DLL (-5632) +/** Process Verification Failure: An unknown and unwanted DLL was found loaded + * into the process. */ +#define VERR_SUP_VP_NOT_KNOWN_DLL_OR_EXE (-5633) +/** Process Verification Failure: The name of an image file changes between + * mapping regions. */ +#define VERR_SUP_VP_NT_MAPPING_NAME_CHANGED (-5634) +/** Process Verification Failure: Error querying process name. */ +#define VERR_SUP_VP_NT_QI_PROCESS_NM_ERROR (-5635) +/** Process Verification Failure: Error querying thread information. */ +#define VERR_SUP_VP_NT_QI_THREAD_ERROR (-5636) +/** Process Verification Failure: Error query virtual memory information. */ +#define VERR_SUP_VP_NT_QI_VIRTUAL_MEMORY_ERROR (-5637) +/** Process Verification Failure: Error query virtual memory mapping name. */ +#define VERR_SUP_VP_NT_QI_VIRTUAL_MEMORY_NM_ERROR (-5638) +/** Process Verification Failure: Error determining the full path of + * System32. */ +#define VERR_SUP_VP_SYSTEM32_PATH (-5639) +/** Process Verification Failure: The process has more than one thread. */ +#define VERR_SUP_VP_THREAD_NOT_ALONE (-5640) +/** Process Verification Failure: The image mapping is too large (>= 2GB). */ +#define VERR_SUP_VP_TOO_HIGH_REGION_RVA (-5641) +/** Process Verification Failure: The memory region is too large (>= 2GB). */ +#define VERR_SUP_VP_TOO_LARGE_REGION (-5642) +/** Process Verification Failure: There are too many DLLs loaded. */ +#define VERR_SUP_VP_TOO_MANY_DLLS_LOADED (-5643) +/** Process Verification Failure: An image has too many regions. */ +#define VERR_SUP_VP_TOO_MANY_IMAGE_REGIONS (-5644) +/** Process Verification Failure: The process has too many virtual memory + * regions. */ +#define VERR_SUP_VP_TOO_MANY_MEMORY_REGIONS (-5645) +/** Process Verification Failure: An image has too many sections. */ +#define VERR_SUP_VP_TOO_MANY_SECTIONS (-5646) +/** Process Verification Failure: An image is targeting an unexpected + * machine/CPU. */ +#define VERR_SUP_VP_UNEXPECTED_IMAGE_MACHINE (-5647) +/** Process Verification Failure: Unexpected section protection flag + * combination. */ +#define VERR_SUP_VP_UNEXPECTED_SECTION_FLAGS (-5648) +/** Process Verification Failure: Expected the process and exe to have forced + * integrity checking enabled (verifying signatures). */ +#define VERR_SUP_VP_EXE_MISSING_FORCE_INTEGRITY (-5649) +/** Process Verification Failure: Expected the process and exe to have dynamic + * base enabled. */ +#define VERR_SUP_VP_EXE_MISSING_DYNAMIC_BASE (-5650) +/** Process Verification Failure: Expected the process and exe to advertise + * NX compatibility. */ +#define VERR_SUP_VP_EXE_MISSING_NX_COMPAT (-5651) +/** Process Verification Failure: The DllCharacteristics of the process + * does not match the value in the optional header in the exe file. */ +#define VERR_SUP_VP_DLL_CHARECTERISTICS_MISMATCH (-5652) +/** Process Verification Failure: The ImageCharacteristics of the process + * does not match the value in the file header in the exe file. */ +#define VERR_SUP_VP_IMAGE_CHARECTERISTICS_MISMATCH (-5653) +/** Process Verification Failure: Error querying image information. */ +#define VERR_SUP_VP_NT_QI_PROCESS_IMG_INFO_ERROR (-5654) +/** Process Verification Failure: Error querying debug port. */ +#define VERR_SUP_VP_NT_QI_PROCESS_DBG_PORT_ERROR (-5655) +/** WinVerifyTrust failed with an unexpected status code when using the + * catalog-file approach. */ +#define VERR_SUP_VP_WINTRUST_CAT_FAILURE (-5656) +/** The image is required to be signed with the same certificate as the rest + * of VirtualBox. */ +#define VERR_SUP_VP_NOT_SIGNED_WITH_BUILD_CERT (-5657) +/** Internal processing error: Not build certificate. */ +#define VERR_SUP_VP_NOT_BUILD_CERT_IPE (-5658) +/** The image requires to be signed using the kernel-code signing process. */ +#define VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE (-5659) +/** Unexpected number of valid paths. */ +#define VERR_SUP_VP_UNEXPECTED_VALID_PATH_COUNT (-5660) +/** The image is required to force integrity checks. */ +#define VERR_SUP_VP_SIGNATURE_CHECKS_NOT_ENFORCED (-5661) +/** Process Verification Failure: Symantec Endpoint Protection must be + * disabled for the VirtualBox VM processes. + * http://www.symantec.com/connect/articles/creating-application-control-exclusions-symantec-endpoint-protection-121 */ +#define VERR_SUP_VP_SYSFER_DLL (-5662) +/** Process Purification Failure: KERNE32.DLL already mapped into the initial + * process (suspended). */ +#define VERR_SUP_VP_KERNEL32_ALREADY_MAPPED (-5663) +/** Process Purification Failure: NtFreeVirtualMemory failed on a chunk of + * executable memory which shouldn't be present in the process. */ +#define VERR_SUP_VP_FREE_VIRTUAL_MEMORY_FAILED (-5664) +/** Process Purification Failure: Both NtUnmapViewOfSetion and + * NtProtectVirtualMemory failed to get rid of or passify an non-image + * executable mapping. */ +#define VERR_SUP_VP_UNMAP_AND_PROTECT_FAILED (-5665) +/** Process Purification Failure: Unknown memory type of executable memory. */ +#define VERR_SUP_VP_UNKOWN_MEM_TYPE (-5666) +/** The image file is not owned by TrustedInstaller is it should be. */ +#define VERR_SUP_VP_NOT_OWNED_BY_TRUSTED_INSTALLER (-5667) +/** The image is outside the expected range. */ +#define VERR_SUP_VP_IMAGE_TOO_BIG (-5668) +/** Stub process not found so it cannot be revalidated when vboxdrv is opened + * by the VM process. */ +#define VERR_SUP_VP_STUB_NOT_FOUND (-5669) +/** Error opening the stub process for revalidation when vboxdrv is opened by + * the VM process. */ +#define VERR_SUP_VP_STUB_OPEN_ERROR (-5670) +/** Stub process thread not found during revalidation upon vboxdrv opening by + * the VM process. */ +#define VERR_SUP_VP_STUB_THREAD_NOT_FOUND (-5671) +/** Error opening the stub process thread for revalidation when vboxdrv is + * opened by the VM process. */ +#define VERR_SUP_VP_STUB_THREAD_OPEN_ERROR (-5672) +/** Process Purification Failure: NtAllocateVirtualMemory failed to get us + * suitable replacement memory for a chunk of executable memory that + * shouldn't be present in our process. (You will only see this message if you + * got potentially fatally buggy anti-virus software installed.) */ +#define VERR_SUP_VP_REPLACE_VIRTUAL_MEMORY_FAILED (-5673) +/** Error getting the file mode. */ +#define VERR_SUP_VP_FILE_MODE_ERROR (-5674) +/** Error creating an event semaphore for used with asynchronous reads. */ +#define VERR_SUP_VP_CREATE_READ_EVT_SEM_FAILED (-5675) + +/** @} */ + +/** @name VBox Extension Pack Status Codes + * @{ + */ +/** The host is not supported. Uninstall the extension pack. + * Returned by the VBOXEXTPACKREG::pfnInstalled. */ +#define VERR_EXTPACK_UNSUPPORTED_HOST_UNINSTALL (-6000) +/** The VirtualBox version is not supported by one of the extension packs. + * + * You have probably upgraded VirtualBox recently. Please upgrade the + * extension packs to versions compatible with this VirtualBox release. + */ +#define VERR_EXTPACK_VBOX_VERSION_MISMATCH (-6001) +/** @} */ + + +/** @name VBox Guest Control Status Codes + * @{ + */ +/** Guest side reported an error. */ +#define VERR_GSTCTL_GUEST_ERROR (-6200) +/** A guest control object has changed its overall status. */ +#define VWRN_GSTCTL_OBJECTSTATE_CHANGED 6220 +/** @} */ + + +/** @name GIM Status Codes + * @{ + */ +/** No GIM provider is configured for this VM. */ +#define VERR_GIM_NOT_ENABLED (-6300) +/** GIM internal processing error \#1. */ +#define VERR_GIM_IPE_1 (-6301) +/** GIM internal processing error \#2. */ +#define VERR_GIM_IPE_2 (-6302) +/** GIM internal processing error \#3. */ +#define VERR_GIM_IPE_3 (-6303) +/** The GIM provider does not support any paravirtualized TSC. */ +#define VERR_GIM_PVTSC_NOT_AVAILABLE (-6304) +/** The guest has not setup use of the paravirtualized TSC. */ +#define VERR_GIM_PVTSC_NOT_ENABLED (-6305) +/** Unknown or invalid GIM provider. */ +#define VERR_GIM_INVALID_PROVIDER (-6306) +/** GIM generic operation failed. */ +#define VERR_GIM_OPERATION_FAILED (-6307) +/** The GIM provider does not support any hypercalls. */ +#define VERR_GIM_HYPERCALLS_NOT_AVAILABLE (-6308) +/** The guest has not setup use of the hypercalls. */ +#define VERR_GIM_HYPERCALLS_NOT_ENABLED (-6309) +/** The GIM device is not registered with GIM when it ought to be. */ +#define VERR_GIM_DEVICE_NOT_REGISTERED (-6310) +/** Hypercall cannot be enabled/performed due to access/permissions/CPL. */ +#define VERR_GIM_HYPERCALL_ACCESS_DENIED (-6311) +/** @} */ + + +/** @name Main API Status Codes + * @{ + */ +/** The configuration constructor in main failed due to a COM error. Check + * the release log of the VM for further details. */ +#define VERR_MAIN_CONFIG_CONSTRUCTOR_COM_ERROR (-6400) +/** The configuration constructor in main failed due to an internal consistency + * error. Consult the release log of the VM for further details. */ +#define VERR_MAIN_CONFIG_CONSTRUCTOR_IPE (-6401) +/** @} */ + + +/** @name VBox Drag and Drop Status Codes + * @{ + */ +/** Guest side reported an error. */ +#define VERR_GSTDND_GUEST_ERROR (-6500) +/** @} */ + + +/** @name Audio Status Codes + * @{ + */ +/** Host backend couldn't be initialized. Happen if the audio server is not + * reachable, audio hardware is not available or similar. We should use the + * NULL audio driver. */ +#define VERR_AUDIO_BACKEND_INIT_FAILED (-6600) +/** @} */ + + +/* SED-END */ + +/** @} */ + + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/hgcmsvc.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/hgcmsvc.h @@ -0,0 +1,423 @@ +/** @file + * Host-Guest Communication Manager (HGCM) - Service library definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_hgcm_h +#define ___VBox_hgcm_h + +#include +#include +#include +#include +#include +#ifdef VBOX_TEST_HGCM_PARMS +# include +#endif + +/** @todo proper comments. */ + +/** + * Service interface version. + * + * Includes layout of both VBOXHGCMSVCFNTABLE and VBOXHGCMSVCHELPERS. + * + * A service can work with these structures if major version + * is equal and minor version of service is <= version of the + * structures. + * + * For example when a new helper is added at the end of helpers + * structure, then the minor version will be increased. All older + * services still can work because they have their old helpers + * unchanged. + * + * Revision history. + * 1.1->2.1 Because the pfnConnect now also has the pvClient parameter. + * 2.1->2.2 Because pfnSaveState and pfnLoadState were added + * 2.2->3.1 Because pfnHostCall is now synchronous, returns rc, and parameters were changed + * 3.1->3.2 Because pfnRegisterExtension was added + * 3.2->3.3 Because pfnDisconnectClient helper was added + * 3.3->4.1 Because the pvService entry and parameter was added + * 4.1->4.2 Because the VBOX_HGCM_SVC_PARM_CALLBACK parameter type was added + * 4.2->5.1 Removed the VBOX_HGCM_SVC_PARM_CALLBACK parameter type, as + * this problem is already solved by service extension callbacks + */ +#define VBOX_HGCM_SVC_VERSION_MAJOR (0x0005) +#define VBOX_HGCM_SVC_VERSION_MINOR (0x0001) +#define VBOX_HGCM_SVC_VERSION ((VBOX_HGCM_SVC_VERSION_MAJOR << 16) + VBOX_HGCM_SVC_VERSION_MINOR) + + +/** Typed pointer to distinguish a call to service. */ +struct VBOXHGCMCALLHANDLE_TYPEDEF; +typedef struct VBOXHGCMCALLHANDLE_TYPEDEF *VBOXHGCMCALLHANDLE; + +/** Service helpers pointers table. */ +typedef struct VBOXHGCMSVCHELPERS +{ + /** The service has processed the Call request. */ + DECLR3CALLBACKMEMBER(void, pfnCallComplete, (VBOXHGCMCALLHANDLE callHandle, int32_t rc)); + + void *pvInstance; + + /** The service disconnects the client. */ + DECLR3CALLBACKMEMBER(void, pfnDisconnectClient, (void *pvInstance, uint32_t u32ClientID)); +} VBOXHGCMSVCHELPERS; + +typedef VBOXHGCMSVCHELPERS *PVBOXHGCMSVCHELPERS; + + +#define VBOX_HGCM_SVC_PARM_INVALID (0U) +#define VBOX_HGCM_SVC_PARM_32BIT (1U) +#define VBOX_HGCM_SVC_PARM_64BIT (2U) +#define VBOX_HGCM_SVC_PARM_PTR (3U) + +typedef struct VBOXHGCMSVCPARM +{ + /** VBOX_HGCM_SVC_PARM_* values. */ + uint32_t type; + + union + { + uint32_t uint32; + uint64_t uint64; + struct + { + uint32_t size; + void *addr; + } pointer; + } u; +#ifdef __cplusplus + /** Extract an uint32_t value from an HGCM parameter structure */ + int getUInt32(uint32_t *u32) + { + AssertPtrReturn(u32, VERR_INVALID_POINTER); + int rc = VINF_SUCCESS; + if (type != VBOX_HGCM_SVC_PARM_32BIT) + rc = VERR_INVALID_PARAMETER; + if (RT_SUCCESS(rc)) + *u32 = u.uint32; + return rc; + } + + /** Extract a uint64_t value from an HGCM parameter structure */ + int getUInt64(uint64_t *u64) + { + AssertPtrReturn(u64, VERR_INVALID_POINTER); + int rc = VINF_SUCCESS; + if (type != VBOX_HGCM_SVC_PARM_64BIT) + rc = VERR_INVALID_PARAMETER; + if (RT_SUCCESS(rc)) + *u64 = u.uint64; + return rc; + } + + /** Extract a pointer value from an HGCM parameter structure */ + int getPointer(void **ppv, uint32_t *pcb) + { + AssertPtrReturn(ppv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + if (type == VBOX_HGCM_SVC_PARM_PTR) + { + *ppv = u.pointer.addr; + *pcb = u.pointer.size; + return VINF_SUCCESS; + } + + return VERR_INVALID_PARAMETER; + } + + /** Extract a constant pointer value from an HGCM parameter structure */ + int getPointer(const void **ppcv, uint32_t *pcb) + { + AssertPtrReturn(ppcv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pv; + int rc = getPointer(&pv, pcb); + *ppcv = pv; + return rc; + } + + /** Extract a pointer value to a non-empty buffer from an HGCM parameter + * structure */ + int getBuffer(void **ppv, uint32_t *pcb) + { + AssertPtrReturn(ppv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pv = NULL; + uint32_t cb = 0; + int rc = getPointer(&pv, &cb); + if ( RT_SUCCESS(rc) + && VALID_PTR(pv) + && cb > 0) + { + *ppv = pv; + *pcb = cb; + return VINF_SUCCESS; + } + + return VERR_INVALID_PARAMETER; + } + + /** Extract a pointer value to a non-empty constant buffer from an HGCM + * parameter structure */ + int getBuffer(const void **ppcv, uint32_t *pcb) + { + AssertPtrReturn(ppcv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pcv = NULL; + int rc = getBuffer(&pcv, pcb); + *ppcv = pcv; + return rc; + } + + /** Extract a string value from an HGCM parameter structure */ + int getString(char **ppch, uint32_t *pcb) + { + uint32_t cb = 0; + char *pch = NULL; + int rc = getBuffer((void **)&pch, &cb); + if (RT_FAILURE(rc)) + { + *ppch = NULL; + *pcb = 0; + return rc; + } + rc = RTStrValidateEncodingEx(pch, cb, + RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + *ppch = pch; + *pcb = cb; + return rc; + } + + /** Extract a constant string value from an HGCM parameter structure */ + int getString(const char **ppch, uint32_t *pcb) + { + char *pch = NULL; + int rc = getString(&pch, pcb); + *ppch = pch; + return rc; + } + + /** Set a uint32_t value to an HGCM parameter structure */ + void setUInt32(uint32_t u32) + { + type = VBOX_HGCM_SVC_PARM_32BIT; + u.uint32 = u32; + } + + /** Set a uint64_t value to an HGCM parameter structure */ + void setUInt64(uint64_t u64) + { + type = VBOX_HGCM_SVC_PARM_64BIT; + u.uint64 = u64; + } + + /** Set a pointer value to an HGCM parameter structure */ + void setPointer(void *pv, uint32_t cb) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = pv; + u.pointer.size = cb; + } + + /** Set a const string value to an HGCM parameter structure */ + void setString(const char *psz) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = (void *)psz; + u.pointer.size = (uint32_t)strlen(psz) + 1; + } + +#ifdef ___iprt_cpp_ministring_h + /** Set a const string value to an HGCM parameter structure */ + void setCppString(const RTCString &rString) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = (void *)rString.c_str(); + u.pointer.size = (uint32_t)rString.length() + 1; + } +#endif + +#ifdef VBOX_TEST_HGCM_PARMS + /** Test the getString member function. Indirectly tests the getPointer + * and getBuffer APIs. + * @param hTest an running IPRT test + * @param aType the type that the parameter should be set to before + * calling getString + * @param apcc the value that the parameter should be set to before + * calling getString, and also the address (!) which we + * expect getString to return. Stricter than needed of + * course, but I was feeling lazy. + * @param acb the size that the parameter should be set to before + * calling getString, and also the size which we expect + * getString to return. + * @param rcExp the expected return value of the call to getString. + */ + void doTestGetString(RTTEST hTest, uint32_t aType, const char *apcc, + uint32_t acb, int rcExp) + { + /* An RTTest API like this, which would print out an additional line + * of context if a test failed, would be nice. This is because the + * line number alone doesn't help much here, given that this is a + * subroutine called many times. */ + /* + RTTestContextF(hTest, + ("doTestGetString, aType=%u, apcc=%p, acp=%u, rcExp=%Rrc", + aType, apcc, acp, rcExp)); + */ + setPointer((void *)apcc, acb); + type = aType; /* in case we don't want VBOX_HGCM_SVC_PARM_PTR */ + const char *pcc = NULL; + uint32_t cb = 0; + int rc = getString(&pcc, &cb); + RTTEST_CHECK_RC(hTest, rc, rcExp); + if (RT_SUCCESS(rcExp)) + { + RTTEST_CHECK_MSG_RETV(hTest, (pcc == apcc), + (hTest, "expected %p, got %p", apcc, pcc)); + RTTEST_CHECK_MSG_RETV(hTest, (cb == acb), + (hTest, "expected %u, got %u", acb, cb)); + } + } + + /** Run some unit tests on the getString method and indirectly test + * getPointer and getBuffer as well. */ + void testGetString(RTTEST hTest) + { + RTTestSub(hTest, "HGCM string parameter handling"); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_32BIT, "test", 3, + VERR_INVALID_PARAMETER); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 5, + VINF_SUCCESS); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 3, + VERR_BUFFER_OVERFLOW); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test\xf0", 6, + VERR_INVALID_UTF8_ENCODING); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 0, + VERR_INVALID_PARAMETER); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, (const char *)0x1, 5, + VERR_INVALID_PARAMETER); + RTTestSubDone(hTest); + } +#endif + + VBOXHGCMSVCPARM() : type(VBOX_HGCM_SVC_PARM_INVALID) {} +#endif +} VBOXHGCMSVCPARM; + +typedef VBOXHGCMSVCPARM *PVBOXHGCMSVCPARM; + +#ifdef VBOX_WITH_CRHGSMI +typedef void * HGCMCVSHANDLE; + +typedef DECLCALLBACK(void) HGCMHOSTFASTCALLCB (int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); +typedef HGCMHOSTFASTCALLCB *PHGCMHOSTFASTCALLCB; +#endif + + +/** Service specific extension callback. + * This callback is called by the service to perform service specific operation. + * + * @param pvExtension The extension pointer. + * @param u32Function What the callback is supposed to do. + * @param pvParm The function parameters. + * @param cbParm The size of the function parameters. + */ +typedef DECLCALLBACK(int) FNHGCMSVCEXT(void *pvExtension, uint32_t u32Function, void *pvParm, uint32_t cbParms); +typedef FNHGCMSVCEXT *PFNHGCMSVCEXT; + +/** The Service DLL entry points. + * + * HGCM will call the DLL "VBoxHGCMSvcLoad" + * function and the DLL must fill in the VBOXHGCMSVCFNTABLE + * with function pointers. + */ + +/* The structure is used in separately compiled binaries so an explicit packing is required. */ +#pragma pack(1) /** @todo r=bird: The pragma pack(1) is not at all required!! */ +typedef struct VBOXHGCMSVCFNTABLE +{ + /** @name Filled by HGCM + * @{ */ + + /** Size of the structure. */ + uint32_t cbSize; + + /** Version of the structure, including the helpers. */ + uint32_t u32Version; + + PVBOXHGCMSVCHELPERS pHelpers; + /** @} */ + + /** @name Filled in by the service. + * @{ */ + + /** Size of client information the service want to have. */ + uint32_t cbClient; +#if ARCH_BITS == 64 + /** Ensure that the following pointers are properly aligned on 64-bit system. */ + uint32_t u32Alignment0; +#endif + + /** Uninitialize service */ + DECLR3CALLBACKMEMBER(int, pfnUnload, (void *pvService)); + + /** Inform the service about a client connection. */ + DECLR3CALLBACKMEMBER(int, pfnConnect, (void *pvService, uint32_t u32ClientID, void *pvClient)); + + /** Inform the service that the client wants to disconnect. */ + DECLR3CALLBACKMEMBER(int, pfnDisconnect, (void *pvService, uint32_t u32ClientID, void *pvClient)); + + /** Service entry point. + * Return code is passed to pfnCallComplete callback. + */ + DECLR3CALLBACKMEMBER(void, pfnCall, (void *pvService, VBOXHGCMCALLHANDLE callHandle, uint32_t u32ClientID, void *pvClient, uint32_t function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])); + + /** Host Service entry point meant for privileged features invisible to the guest. + * Return code is passed to pfnCallComplete callback. + */ + DECLR3CALLBACKMEMBER(int, pfnHostCall, (void *pvService, uint32_t function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])); + + /** Inform the service about a VM save operation. */ + DECLR3CALLBACKMEMBER(int, pfnSaveState, (void *pvService, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)); + + /** Inform the service about a VM load operation. */ + DECLR3CALLBACKMEMBER(int, pfnLoadState, (void *pvService, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)); + + /** Register a service extension callback. */ + DECLR3CALLBACKMEMBER(int, pfnRegisterExtension, (void *pvService, PFNHGCMSVCEXT pfnExtension, void *pvExtension)); + + /** User/instance data pointer for the service. */ + void *pvService; + + /** @} */ +} VBOXHGCMSVCFNTABLE; +#pragma pack() + + +/** Service initialization entry point. */ +typedef DECLCALLBACK(int) VBOXHGCMSVCLOAD(VBOXHGCMSVCFNTABLE *ptable); +typedef VBOXHGCMSVCLOAD *PFNVBOXHGCMSVCLOAD; +#define VBOX_HGCM_SVCLOAD_NAME "VBoxHGCMSvcLoad" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/log.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/log.h @@ -0,0 +1,1163 @@ +/** @file + * VirtualBox - Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_log_h +#define ___VBox_log_h + +/* + * Set the default loggroup. + */ +#ifndef LOG_GROUP +# define LOG_GROUP LOG_GROUP_DEFAULT +#endif + +#include + + +/** @defgroup grp_rt_vbox_log VBox Logging + * @ingroup grp_rt_vbox + * @{ + */ + +/** PC port for debug output */ +#define RTLOG_DEBUG_PORT 0x504 + +/** + * VirtualBox Logging Groups. + * (Remember to update LOGGROUP_NAMES!) + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ + */ +typedef enum LOGGROUP +{ + /** The default VBox group. */ + LOG_GROUP_DEFAULT = RTLOGGROUP_FIRST_USER, + /** Audio mixer group. */ + LOG_GROUP_AUDIO_MIXER, + /** Audio mixer buffer group. */ + LOG_GROUP_AUDIO_MIXER_BUFFER, + /** Auto-logon group. */ + LOG_GROUP_AUTOLOGON, + /** CFGM group. */ + LOG_GROUP_CFGM, + /** CPUM group. */ + LOG_GROUP_CPUM, + /** CSAM group. */ + LOG_GROUP_CSAM, + /** Debug Console group. */ + LOG_GROUP_DBGC, + /** DBGF group. */ + LOG_GROUP_DBGF, + /** DBGF info group. */ + LOG_GROUP_DBGF_INFO, + /** The debugger gui. */ + LOG_GROUP_DBGG, + /** Generic Device group. */ + LOG_GROUP_DEV, + /** AC97 Device group. */ + LOG_GROUP_DEV_AC97, + /** ACPI Device group. */ + LOG_GROUP_DEV_ACPI, + /** AHCI Device group. */ + LOG_GROUP_DEV_AHCI, + /** APIC Device group. */ + LOG_GROUP_DEV_APIC, + /** BusLogic SCSI host adapter group. */ + LOG_GROUP_DEV_BUSLOGIC, + /** DMA Controller group. */ + LOG_GROUP_DEV_DMA, + /** Gigabit Ethernet Device group. */ + LOG_GROUP_DEV_E1000, + /** Extensible Firmware Interface Device group. */ + LOG_GROUP_DEV_EFI, + /** USB EHCI Device group. */ + LOG_GROUP_DEV_EHCI, + /** Floppy Controller Device group. */ + LOG_GROUP_DEV_FDC, + /** Guest Interface Manager Device group. */ + LOG_GROUP_DEV_GIM, + /** HDA Device group. */ + LOG_GROUP_DEV_HDA, + /** HDA Codec Device group. */ + LOG_GROUP_DEV_HDA_CODEC, + /** High Precision Event Timer Device group. */ + LOG_GROUP_DEV_HPET, + /** IDE Device group. */ + LOG_GROUP_DEV_IDE, + /** The internal networking IP stack Device group. */ + LOG_GROUP_DEV_INIP, + /** KeyBoard Controller Device group. */ + LOG_GROUP_DEV_KBD, + /** Low Pin Count Device group. */ + LOG_GROUP_DEV_LPC, + /** LsiLogic SCSI controller Device group. */ + LOG_GROUP_DEV_LSILOGICSCSI, + /** NE2000 Device group. */ + LOG_GROUP_DEV_NE2000, + /** USB OHCI Device group. */ + LOG_GROUP_DEV_OHCI, + /** Parallel Device group */ + LOG_GROUP_DEV_PARALLEL, + /** PC Device group. */ + LOG_GROUP_DEV_PC, + /** PC Architecture Device group. */ + LOG_GROUP_DEV_PC_ARCH, + /** PC BIOS Device group. */ + LOG_GROUP_DEV_PC_BIOS, + /** PCI Device group. */ + LOG_GROUP_DEV_PCI, + /** PCI Raw Device group. */ + LOG_GROUP_DEV_PCI_RAW, + /** PCNet Device group. */ + LOG_GROUP_DEV_PCNET, + /** PIC Device group. */ + LOG_GROUP_DEV_PIC, + /** PIT Device group. */ + LOG_GROUP_DEV_PIT, + /** RTC Device group. */ + LOG_GROUP_DEV_RTC, + /** SB16 Device group. */ + LOG_GROUP_DEV_SB16, + /** Serial Device group */ + LOG_GROUP_DEV_SERIAL, + /** System Management Controller Device group. */ + LOG_GROUP_DEV_SMC, + /** VGA Device group. */ + LOG_GROUP_DEV_VGA, + /** Virtio PCI Device group. */ + LOG_GROUP_DEV_VIRTIO, + /** Virtio Network Device group. */ + LOG_GROUP_DEV_VIRTIO_NET, + /** VMM Device group. */ + LOG_GROUP_DEV_VMM, + /** VMM Device group for backdoor logging. */ + LOG_GROUP_DEV_VMM_BACKDOOR, + /** VMM Device group for logging guest backdoor logging to stderr. */ + LOG_GROUP_DEV_VMM_STDERR, + /** VMSVGA Device group. */ + LOG_GROUP_DEV_VMSVGA, + /** USB xHCI Device group. */ + LOG_GROUP_DEV_XHCI, + /** Disassembler group. */ + LOG_GROUP_DIS, + /** Generic driver group. */ + LOG_GROUP_DRV, + /** ACPI driver group */ + LOG_GROUP_DRV_ACPI, + /** Audio driver group */ + LOG_GROUP_DRV_AUDIO, + /** Block driver group. */ + LOG_GROUP_DRV_BLOCK, + /** Char driver group. */ + LOG_GROUP_DRV_CHAR, + /** Disk integrity driver group. */ + LOG_GROUP_DRV_DISK_INTEGRITY, + /** Video Display driver group. */ + LOG_GROUP_DRV_DISPLAY, + /** Floppy media driver group. */ + LOG_GROUP_DRV_FLOPPY, + /** Host Audio driver group. */ + LOG_GROUP_DRV_HOST_AUDIO, + /** Host Base block driver group. */ + LOG_GROUP_DRV_HOST_BASE, + /** Host DVD block driver group. */ + LOG_GROUP_DRV_HOST_DVD, + /** Host floppy block driver group. */ + LOG_GROUP_DRV_HOST_FLOPPY, + /** Host Parallel Driver group */ + LOG_GROUP_DRV_HOST_PARALLEL, + /** Host Serial Driver Group */ + LOG_GROUP_DRV_HOST_SERIAL, + /** The internal networking transport driver group. */ + LOG_GROUP_DRV_INTNET, + /** ISO (CD/DVD) media driver group. */ + LOG_GROUP_DRV_ISO, + /** Keyboard Queue driver group. */ + LOG_GROUP_DRV_KBD_QUEUE, + /** lwIP IP stack driver group. */ + LOG_GROUP_DRV_LWIP, + /** Video Miniport driver group. */ + LOG_GROUP_DRV_MINIPORT, + /** Mouse driver group. */ + LOG_GROUP_DRV_MOUSE, + /** Mouse Queue driver group. */ + LOG_GROUP_DRV_MOUSE_QUEUE, + /** Named Pipe stream driver group. */ + LOG_GROUP_DRV_NAMEDPIPE, + /** NAT network transport driver group */ + LOG_GROUP_DRV_NAT, + /** Raw image driver group */ + LOG_GROUP_DRV_RAW_IMAGE, + /** SCSI driver group. */ + LOG_GROUP_DRV_SCSI, + /** Host SCSI driver group. */ + LOG_GROUP_DRV_SCSIHOST, + /** TCP socket stream driver group. */ + LOG_GROUP_DRV_TCP, + /** Async transport driver group */ + LOG_GROUP_DRV_TRANSPORT_ASYNC, + /** TUN network transport driver group */ + LOG_GROUP_DRV_TUN, + /** UDP tunnet network transport driver group. */ + LOG_GROUP_DRV_UDPTUNNEL, + /** USB Proxy driver group. */ + LOG_GROUP_DRV_USBPROXY, + /** VBoxHDD media driver group. */ + LOG_GROUP_DRV_VBOXHDD, + /** VBox HDD container media driver group. */ + LOG_GROUP_DRV_VD, + /** VRDE audio driver group. */ + LOG_GROUP_DRV_VRDE_AUDIO, + /** Virtual Switch transport driver group */ + LOG_GROUP_DRV_VSWITCH, + /** VUSB driver group */ + LOG_GROUP_DRV_VUSB, + /** EM group. */ + LOG_GROUP_EM, + /** FTM group. */ + LOG_GROUP_FTM, + /** GIM group. */ + LOG_GROUP_GIM, + /** GMM group. */ + LOG_GROUP_GMM, + /** Guest control. */ + LOG_GROUP_GUEST_CONTROL, + /** Guest drag'n drop. */ + LOG_GROUP_GUEST_DND, + /** GUI group. */ + LOG_GROUP_GUI, + /** GVMM group. */ + LOG_GROUP_GVMM, + /** HGCM group */ + LOG_GROUP_HGCM, + /** HGSMI group */ + LOG_GROUP_HGSMI, + /** HM group. */ + LOG_GROUP_HM, + /** IEM group. */ + LOG_GROUP_IEM, + /** IOM group. */ + LOG_GROUP_IOM, + /** XPCOM IPC group. */ + LOG_GROUP_IPC, + /** lwIP group. */ + LOG_GROUP_LWIP, + /** lwIP group, api_lib.c API_LIB_DEBUG */ + LOG_GROUP_LWIP_API_LIB, + /** lwIP group, api_msg.c API_MSG_DEBUG */ + LOG_GROUP_LWIP_API_MSG, + /** lwIP group, etharp.c ETHARP_DEBUG */ + LOG_GROUP_LWIP_ETHARP, + /** lwIP group, icmp.c ICMP_DEBUG */ + LOG_GROUP_LWIP_ICMP, + /** lwIP group, igmp.c IGMP_DEBUG */ + LOG_GROUP_LWIP_IGMP, + /** lwIP group, inet.c INET_DEBUG */ + LOG_GROUP_LWIP_INET, + /** lwIP group, IP_DEBUG (sic!) */ + LOG_GROUP_LWIP_IP4, + /** lwIP group, ip_frag.c IP_REASS_DEBUG (sic!) */ + LOG_GROUP_LWIP_IP4_REASS, + /** lwIP group, IP6_DEBUG */ + LOG_GROUP_LWIP_IP6, + /** lwIP group, mem.c MEM_DEBUG */ + LOG_GROUP_LWIP_MEM, + /** lwIP group, memp.c MEMP_DEBUG */ + LOG_GROUP_LWIP_MEMP, + /** lwIP group, netif.c NETIF_DEBUG */ + LOG_GROUP_LWIP_NETIF, + /** lwIP group, pbuf.c PBUF_DEBUG */ + LOG_GROUP_LWIP_PBUF, + /** lwIP group, raw.c RAW_DEBUG */ + LOG_GROUP_LWIP_RAW, + /** lwIP group, sockets.c SOCKETS_DEBUG */ + LOG_GROUP_LWIP_SOCKETS, + /** lwIP group, SYS_DEBUG */ + LOG_GROUP_LWIP_SYS, + /** lwIP group, TCP_DEBUG */ + LOG_GROUP_LWIP_TCP, + /** lwIP group, tcpip.c TCPIP_DEBUG */ + LOG_GROUP_LWIP_TCPIP, + /** lwIP group, TCP_CWND_DEBUG (congestion window) */ + LOG_GROUP_LWIP_TCP_CWND, + /** lwIP group, tcp_in.c TCP_FR_DEBUG (fast retransmit) */ + LOG_GROUP_LWIP_TCP_FR, + /** lwIP group, tcp_in.c TCP_INPUT_DEBUG */ + LOG_GROUP_LWIP_TCP_INPUT, + /** lwIP group, tcp_out.c TCP_OUTPUT_DEBUG */ + LOG_GROUP_LWIP_TCP_OUTPUT, + /** lwIP group, TCP_QLEN_DEBUG */ + LOG_GROUP_LWIP_TCP_QLEN, + /** lwIP group, TCP_RST_DEBUG */ + LOG_GROUP_LWIP_TCP_RST, + /** lwIP group, TCP_RTO_DEBUG (retransmit) */ + LOG_GROUP_LWIP_TCP_RTO, + /** lwIP group, tcp_in.c TCP_WND_DEBUG (window updates) */ + LOG_GROUP_LWIP_TCP_WND, + /** lwIP group, timers.c TIMERS_DEBUG */ + LOG_GROUP_LWIP_TIMERS, + /** lwIP group, udp.c UDP_DEBUG */ + LOG_GROUP_LWIP_UDP, + /** Main group. */ + LOG_GROUP_MAIN, + /** Main group, IAdditionsFacility. */ + LOG_GROUP_MAIN_ADDITIONSFACILITY, + /** Main group, IAdditionsStateChangedEvent. */ + LOG_GROUP_MAIN_ADDITIONSSTATECHANGEDEVENT, + /** Main group, IAppliance. */ + LOG_GROUP_MAIN_APPLIANCE, + /** Main group, IAudioAdapter. */ + LOG_GROUP_MAIN_AUDIOADAPTER, + /** Main group, IBandwidthControl. */ + LOG_GROUP_MAIN_BANDWIDTHCONTROL, + /** Main group, IBandwidthGroup. */ + LOG_GROUP_MAIN_BANDWIDTHGROUP, + /** Main group, IBandwidthGroupChangedEvent. */ + LOG_GROUP_MAIN_BANDWIDTHGROUPCHANGEDEVENT, + /** Main group, IBIOSSettings. */ + LOG_GROUP_MAIN_BIOSSETTINGS, + /** Main group, ICanShowWindowEvent. */ + LOG_GROUP_MAIN_CANSHOWWINDOWEVENT, + /** Main group, IClipboardModeChangedEvent. */ + LOG_GROUP_MAIN_CLIPBOARDMODECHANGEDEVENT, + /** Main group, IConsole. */ + LOG_GROUP_MAIN_CONSOLE, + /** Main group, ICPUChangedEvent. */ + LOG_GROUP_MAIN_CPUCHANGEDEVENT, + /** Main group, ICPUExecutionCapChangedEvent. */ + LOG_GROUP_MAIN_CPUEXECUTIONCAPCHANGEDEVENT, + /** Main group, IDHCPServer. */ + LOG_GROUP_MAIN_DHCPSERVER, + /** Main group, IDirectory. */ + LOG_GROUP_MAIN_DIRECTORY, + /** Main group, IDisplay. */ + LOG_GROUP_MAIN_DISPLAY, + /** Main group, IDisplaySourceBitmap. */ + LOG_GROUP_MAIN_DISPLAYSOURCEBITMAP, + /** Main group, IDnDBase. */ + LOG_GROUP_MAIN_DNDBASE, + /** Main group, IDnDModeChangedEvent. */ + LOG_GROUP_MAIN_DNDMODECHANGEDEVENT, + /** Main group, IDnDSource. */ + LOG_GROUP_MAIN_DNDSOURCE, + /** Main group, IDnDTarget. */ + LOG_GROUP_MAIN_DNDTARGET, + /** Main group, IEmulatedUSB. */ + LOG_GROUP_MAIN_EMULATEDUSB, + /** Main group, IEvent. */ + LOG_GROUP_MAIN_EVENT, + /** Main group, IEventListener. */ + LOG_GROUP_MAIN_EVENTLISTENER, + /** Main group, IEventSource. */ + LOG_GROUP_MAIN_EVENTSOURCE, + /** Main group, IEventSourceChangedEvent. */ + LOG_GROUP_MAIN_EVENTSOURCECHANGEDEVENT, + /** Main group, IExtPack. */ + LOG_GROUP_MAIN_EXTPACK, + /** Main group, IExtPackBase. */ + LOG_GROUP_MAIN_EXTPACKBASE, + /** Main group, IExtPackFile. */ + LOG_GROUP_MAIN_EXTPACKFILE, + /** Main group, IExtPackManager. */ + LOG_GROUP_MAIN_EXTPACKMANAGER, + /** Main group, IExtPackPlugIn. */ + LOG_GROUP_MAIN_EXTPACKPLUGIN, + /** Main group, IExtraDataCanChangeEvent. */ + LOG_GROUP_MAIN_EXTRADATACANCHANGEEVENT, + /** Main group, IExtraDataChangedEvent. */ + LOG_GROUP_MAIN_EXTRADATACHANGEDEVENT, + /** Main group, IFile. */ + LOG_GROUP_MAIN_FILE, + /** Main group, IFramebuffer. */ + LOG_GROUP_MAIN_FRAMEBUFFER, + /** Main group, IFramebufferOverlay. */ + LOG_GROUP_MAIN_FRAMEBUFFEROVERLAY, + /** Main group, IFsObjInfo. */ + LOG_GROUP_MAIN_FSOBJINFO, + /** Main group, IGuest. */ + LOG_GROUP_MAIN_GUEST, + /** Main group, IGuestDirectory. */ + LOG_GROUP_MAIN_GUESTDIRECTORY, + /** Main group, IGuestDnDSource. */ + LOG_GROUP_MAIN_GUESTDNDSOURCE, + /** Main group, IGuestDnDTarget. */ + LOG_GROUP_MAIN_GUESTDNDTARGET, + /** Main group, IGuestErrorInfo. */ + LOG_GROUP_MAIN_GUESTERRORINFO, + /** Main group, IGuestFile. */ + LOG_GROUP_MAIN_GUESTFILE, + /** Main group, IGuestFileEvent. */ + LOG_GROUP_MAIN_GUESTFILEEVENT, + /** Main group, IGuestFileIOEvent. */ + LOG_GROUP_MAIN_GUESTFILEIOEVENT, + /** Main group, IGuestFileOffsetChangedEvent. */ + LOG_GROUP_MAIN_GUESTFILEOFFSETCHANGEDEVENT, + /** Main group, IGuestFileReadEvent. */ + LOG_GROUP_MAIN_GUESTFILEREADEVENT, + /** Main group, IGuestFileRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTFILEREGISTEREDEVENT, + /** Main group, IGuestFileStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTFILESTATECHANGEDEVENT, + /** Main group, IGuestFileWriteEvent. */ + LOG_GROUP_MAIN_GUESTFILEWRITEEVENT, + /** Main group, IGuestFsObjInfo. */ + LOG_GROUP_MAIN_GUESTFSOBJINFO, + /** Main group, IGuestKeyboardEvent. */ + LOG_GROUP_MAIN_GUESTKEYBOARDEVENT, + /** Main group, IGuestMonitorChangedEvent. */ + LOG_GROUP_MAIN_GUESTMONITORCHANGEDEVENT, + /** Main group, IGuestMouseEvent. */ + LOG_GROUP_MAIN_GUESTMOUSEEVENT, + /** Main group, IGuestMultiTouchEvent. */ + LOG_GROUP_MAIN_GUESTMULTITOUCHEVENT, + /** Main group, IGuestOSType. */ + LOG_GROUP_MAIN_GUESTOSTYPE, + /** Main group, IGuestProcess. */ + LOG_GROUP_MAIN_GUESTPROCESS, + /** Main group, IGuestProcessEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSEVENT, + /** Main group, IGuestProcessInputNotifyEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSINPUTNOTIFYEVENT, + /** Main group, IGuestProcessIOEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSIOEVENT, + /** Main group, IGuestProcessOutputEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSOUTPUTEVENT, + /** Main group, IGuestProcessRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSREGISTEREDEVENT, + /** Main group, IGuestProcessStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSSTATECHANGEDEVENT, + /** Main group, IGuestPropertyChangedEvent. */ + LOG_GROUP_MAIN_GUESTPROPERTYCHANGEDEVENT, + /** Main group, IGuestSession. */ + LOG_GROUP_MAIN_GUESTSESSION, + /** Main group, IGuestSessionEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONEVENT, + /** Main group, IGuestSessionRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONREGISTEREDEVENT, + /** Main group, IGuestSessionStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONSTATECHANGEDEVENT, + /** Main group, IGuestUserStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTUSERSTATECHANGEDEVENT, + /** Main group, IHost. */ + LOG_GROUP_MAIN_HOST, + /** Main group, IHostNameResolutionConfigurationChangeEvent. */ + LOG_GROUP_MAIN_HOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT, + /** Main group, IHostNetworkInterface. */ + LOG_GROUP_MAIN_HOSTNETWORKINTERFACE, + /** Main group, IHostPCIDevicePlugEvent. */ + LOG_GROUP_MAIN_HOSTPCIDEVICEPLUGEVENT, + /** Main group, IHostUSBDevice. */ + LOG_GROUP_MAIN_HOSTUSBDEVICE, + /** Main group, IHostUSBDeviceFilter. */ + LOG_GROUP_MAIN_HOSTUSBDEVICEFILTER, + /** Main group, IHostVideoInputDevice. */ + LOG_GROUP_MAIN_HOSTVIDEOINPUTDEVICE, + /** Main group, IInternalMachineControl. */ + LOG_GROUP_MAIN_INTERNALMACHINECONTROL, + /** Main group, IInternalSessionControl. */ + LOG_GROUP_MAIN_INTERNALSESSIONCONTROL, + /** Main group, IKeyboard. */ + LOG_GROUP_MAIN_KEYBOARD, + /** Main group, IKeyboardLedsChangedEvent. */ + LOG_GROUP_MAIN_KEYBOARDLEDSCHANGEDEVENT, + /** Main group, IMachine. */ + LOG_GROUP_MAIN_MACHINE, + /** Main group, IMachineDataChangedEvent. */ + LOG_GROUP_MAIN_MACHINEDATACHANGEDEVENT, + /** Main group, IMachineDebugger. */ + LOG_GROUP_MAIN_MACHINEDEBUGGER, + /** Main group, IMachineEvent. */ + LOG_GROUP_MAIN_MACHINEEVENT, + /** Main group, IMachineRegisteredEvent. */ + LOG_GROUP_MAIN_MACHINEREGISTEREDEVENT, + /** Main group, IMachineStateChangedEvent. */ + LOG_GROUP_MAIN_MACHINESTATECHANGEDEVENT, + /** Main group, IMedium. */ + LOG_GROUP_MAIN_MEDIUM, + /** Main group, IMediumAttachment. */ + LOG_GROUP_MAIN_MEDIUMATTACHMENT, + /** Main group, IMediumChangedEvent. */ + LOG_GROUP_MAIN_MEDIUMCHANGEDEVENT, + /** Main group, IMediumConfigChangedEvent. */ + LOG_GROUP_MAIN_MEDIUMCONFIGCHANGEDEVENT, + /** Main group, IMediumFormat. */ + LOG_GROUP_MAIN_MEDIUMFORMAT, + /** Main group, IMediumRegisteredEvent. */ + LOG_GROUP_MAIN_MEDIUMREGISTEREDEVENT, + /** Main group, IMouse. */ + LOG_GROUP_MAIN_MOUSE, + /** Main group, IMouseCapabilityChangedEvent. */ + LOG_GROUP_MAIN_MOUSECAPABILITYCHANGEDEVENT, + /** Main group, IMousePointerShape. */ + LOG_GROUP_MAIN_MOUSEPOINTERSHAPE, + /** Main group, IMousePointerShapeChangedEvent. */ + LOG_GROUP_MAIN_MOUSEPOINTERSHAPECHANGEDEVENT, + /** Main group, INATEngine. */ + LOG_GROUP_MAIN_NATENGINE, + /** Main group, INATNetwork. */ + LOG_GROUP_MAIN_NATNETWORK, + /** Main group, INATNetworkAlterEvent. */ + LOG_GROUP_MAIN_NATNETWORKALTEREVENT, + /** Main group, INATNetworkChangedEvent. */ + LOG_GROUP_MAIN_NATNETWORKCHANGEDEVENT, + /** Main group, INATNetworkCreationDeletionEvent. */ + LOG_GROUP_MAIN_NATNETWORKCREATIONDELETIONEVENT, + /** Main group, INATNetworkPortForwardEvent. */ + LOG_GROUP_MAIN_NATNETWORKPORTFORWARDEVENT, + /** Main group, INATNetworkSettingEvent. */ + LOG_GROUP_MAIN_NATNETWORKSETTINGEVENT, + /** Main group, INATNetworkStartStopEvent. */ + LOG_GROUP_MAIN_NATNETWORKSTARTSTOPEVENT, + /** Main group, INATRedirectEvent. */ + LOG_GROUP_MAIN_NATREDIRECTEVENT, + /** Main group, INetworkAdapter. */ + LOG_GROUP_MAIN_NETWORKADAPTER, + /** Main group, INetworkAdapterChangedEvent. */ + LOG_GROUP_MAIN_NETWORKADAPTERCHANGEDEVENT, + /** Main group, IParallelPort. */ + LOG_GROUP_MAIN_PARALLELPORT, + /** Main group, IParallelPortChangedEvent. */ + LOG_GROUP_MAIN_PARALLELPORTCHANGEDEVENT, + /** Main group, IPCIAddress. */ + LOG_GROUP_MAIN_PCIADDRESS, + /** Main group, IPCIDeviceAttachment. */ + LOG_GROUP_MAIN_PCIDEVICEATTACHMENT, + /** Main group, IPerformanceCollector. */ + LOG_GROUP_MAIN_PERFORMANCECOLLECTOR, + /** Main group, IPerformanceMetric. */ + LOG_GROUP_MAIN_PERFORMANCEMETRIC, + /** Main group, IProcess. */ + LOG_GROUP_MAIN_PROCESS, + /** Main group, IProgress. */ + LOG_GROUP_MAIN_PROGRESS, + /** Main group, IReusableEvent. */ + LOG_GROUP_MAIN_REUSABLEEVENT, + /** Main group, IRuntimeErrorEvent. */ + LOG_GROUP_MAIN_RUNTIMEERROREVENT, + /** Main group, ISerialPort. */ + LOG_GROUP_MAIN_SERIALPORT, + /** Main group, ISerialPortChangedEvent. */ + LOG_GROUP_MAIN_SERIALPORTCHANGEDEVENT, + /** Main group, ISession. */ + LOG_GROUP_MAIN_SESSION, + /** Main group, ISessionStateChangedEvent. */ + LOG_GROUP_MAIN_SESSIONSTATECHANGEDEVENT, + /** Main group, ISharedFolder. */ + LOG_GROUP_MAIN_SHAREDFOLDER, + /** Main group, ISharedFolderChangedEvent. */ + LOG_GROUP_MAIN_SHAREDFOLDERCHANGEDEVENT, + /** Main group, IShowWindowEvent. */ + LOG_GROUP_MAIN_SHOWWINDOWEVENT, + /** Main group, ISnapshot. */ + LOG_GROUP_MAIN_SNAPSHOT, + /** Main group, ISnapshotChangedEvent. */ + LOG_GROUP_MAIN_SNAPSHOTCHANGEDEVENT, + /** Main group, ISnapshotDeletedEvent. */ + LOG_GROUP_MAIN_SNAPSHOTDELETEDEVENT, + /** Main group, ISnapshotEvent. */ + LOG_GROUP_MAIN_SNAPSHOTEVENT, + /** Main group, ISnapshotTakenEvent. */ + LOG_GROUP_MAIN_SNAPSHOTRESTOREDEVENT, + /** Main group, ISnapshotRestoredEvent. */ + LOG_GROUP_MAIN_SNAPSHOTTAKENEVENT, + /** Main group, IStateChangedEvent. */ + LOG_GROUP_MAIN_STATECHANGEDEVENT, + /** Main group, IStorageController. */ + LOG_GROUP_MAIN_STORAGECONTROLLER, + /** Main group, IStorageControllerChangedEvent. */ + LOG_GROUP_MAIN_STORAGECONTROLLERCHANGEDEVENT, + /** Main group, IStorageDeviceChangedEvent. */ + LOG_GROUP_MAIN_STORAGEDEVICECHANGEDEVENT, + /** Main group, ISystemProperties. */ + LOG_GROUP_MAIN_SYSTEMPROPERTIES, + /** Main group, IToken. */ + LOG_GROUP_MAIN_TOKEN, + /** Main group, IUSBController. */ + LOG_GROUP_MAIN_USBCONTROLLER, + /** Main group, IUSBControllerChangedEvent. */ + LOG_GROUP_MAIN_USBCONTROLLERCHANGEDEVENT, + /** Main group, IUSBDevice. */ + LOG_GROUP_MAIN_USBDEVICE, + /** Main group, IUSBDeviceFilter. */ + LOG_GROUP_MAIN_USBDEVICEFILTER, + /** Main group, IUSBDeviceFilters. */ + LOG_GROUP_MAIN_USBDEVICEFILTERS, + /** Main group, IUSBDeviceStateChangedEvent. */ + LOG_GROUP_MAIN_USBDEVICESTATECHANGEDEVENT, + /** Main group, IVBoxSVCAvailabilityChangedEvent. */ + LOG_GROUP_MAIN_VBOXSVCAVAILABILITYCHANGEDEVENT, + /** Main group, IVetoEvent. */ + LOG_GROUP_MAIN_VETOEVENT, + /** Main group, IVFSExplorer. */ + LOG_GROUP_MAIN_VFSEXPLORER, + /** Main group, IVideoCaptureChangedEvent. */ + LOG_GROUP_MAIN_VIDEOCAPTURECHANGEDEVENT, + /** Main group, IVirtualBox. */ + LOG_GROUP_MAIN_VIRTUALBOX, + /** Main group, IVirtualBoxClient. */ + LOG_GROUP_MAIN_VIRTUALBOXCLIENT, + /** Main group, IVirtualSystemDescription. */ + LOG_GROUP_MAIN_VIRTUALSYSTEMDESCRIPTION, + /** Main group, IVRDEServer. */ + LOG_GROUP_MAIN_VRDESERVER, + /** Main group, IVRDEServerChangedEvent. */ + LOG_GROUP_MAIN_VRDESERVERCHANGEDEVENT, + /** Main group, IVRDEServerInfo. */ + LOG_GROUP_MAIN_VRDESERVERINFO, + /** Main group, IVRDEServerInfoChangedEvent. */ + LOG_GROUP_MAIN_VRDESERVERINFOCHANGEDEVENT, + /** Misc. group intended for external use only. */ + LOG_GROUP_MISC, + /** MM group. */ + LOG_GROUP_MM, + /** MM group. */ + LOG_GROUP_MM_HEAP, + /** MM group. */ + LOG_GROUP_MM_HYPER, + /** MM Hypervisor Heap group. */ + LOG_GROUP_MM_HYPER_HEAP, + /** MM Physical/Ram group. */ + LOG_GROUP_MM_PHYS, + /** MM Page pool group. */ + LOG_GROUP_MM_POOL, + /** The NAT service group */ + LOG_GROUP_NAT_SERVICE, + /** The network adaptor driver group. */ + LOG_GROUP_NET_ADP_DRV, + /** The network filter driver group. */ + LOG_GROUP_NET_FLT_DRV, + /** The common network service group */ + LOG_GROUP_NET_SERVICE, + /** Network traffic shaper driver group. */ + LOG_GROUP_NET_SHAPER, + /** PATM group. */ + LOG_GROUP_PATM, + /** PDM group. */ + LOG_GROUP_PDM, + /** PDM Async completion group. */ + LOG_GROUP_PDM_ASYNC_COMPLETION, + /** PDM Block cache group. */ + LOG_GROUP_PDM_BLK_CACHE, + /** PDM Device group. */ + LOG_GROUP_PDM_DEVICE, + /** PDM Driver group. */ + LOG_GROUP_PDM_DRIVER, + /** PDM Loader group. */ + LOG_GROUP_PDM_LDR, + /** PDM Loader group. */ + LOG_GROUP_PDM_QUEUE, + /** PGM group. */ + LOG_GROUP_PGM, + /** PGM dynamic mapping group. */ + LOG_GROUP_PGM_DYNMAP, + /** PGM physical group. */ + LOG_GROUP_PGM_PHYS, + /** PGM physical access group. */ + LOG_GROUP_PGM_PHYS_ACCESS, + /** PGM shadow page pool group. */ + LOG_GROUP_PGM_POOL, + /** PGM shared paging group. */ + LOG_GROUP_PGM_SHARED, + /** REM group. */ + LOG_GROUP_REM, + /** REM disassembly handler group. */ + LOG_GROUP_REM_DISAS, + /** REM access handler group. */ + LOG_GROUP_REM_HANDLER, + /** REM I/O port access group. */ + LOG_GROUP_REM_IOPORT, + /** REM MMIO access group. */ + LOG_GROUP_REM_MMIO, + /** REM Printf. */ + LOG_GROUP_REM_PRINTF, + /** REM running group. */ + LOG_GROUP_REM_RUN, + /** SELM group. */ + LOG_GROUP_SELM, + /** Shared clipboard host service group. */ + LOG_GROUP_SHARED_CLIPBOARD, + /** Chromium OpenGL host service group. */ + LOG_GROUP_SHARED_CROPENGL, + /** Shared folders host service group. */ + LOG_GROUP_SHARED_FOLDERS, + /** OpenGL host service group. */ + LOG_GROUP_SHARED_OPENGL, + /** The internal networking service group. */ + LOG_GROUP_SRV_INTNET, + /** SSM group. */ + LOG_GROUP_SSM, + /** STAM group. */ + LOG_GROUP_STAM, + /** SUP group. */ + LOG_GROUP_SUP, + /** SUPport driver group. */ + LOG_GROUP_SUP_DRV, + /** TM group. */ + LOG_GROUP_TM, + /** TRPM group. */ + LOG_GROUP_TRPM, + /** USB cardreader group. */ + LOG_GROUP_USB_CARDREADER, + /** USB driver group. */ + LOG_GROUP_USB_DRV, + /** USBFilter group. */ + LOG_GROUP_USB_FILTER, + /** USB keyboard device group. */ + LOG_GROUP_USB_KBD, + /** USB mouse/tablet device group. */ + LOG_GROUP_USB_MOUSE, + /** MSD USB device group. */ + LOG_GROUP_USB_MSD, + /** USB remote support. */ + LOG_GROUP_USB_REMOTE, + /** USB webcam. */ + LOG_GROUP_USB_WEBCAM, + /** VBox Guest Additions Driver (VBoxGuest). */ + LOG_GROUP_VGDRV, + /** VBox Guest Additions Library. */ + LOG_GROUP_VBGL, + /** Generic virtual disk layer. */ + LOG_GROUP_VD, + /** DMG virtual disk backend. */ + LOG_GROUP_VD_DMG, + /** iSCSI virtual disk backend. */ + LOG_GROUP_VD_ISCSI, + /** Parallels HDD virtual disk backend. */ + LOG_GROUP_VD_PARALLELS, + /** QCOW virtual disk backend. */ + LOG_GROUP_VD_QCOW, + /** QED virtual disk backend. */ + LOG_GROUP_VD_QED, + /** Raw virtual disk backend. */ + LOG_GROUP_VD_RAW, + /** VDI virtual disk backend. */ + LOG_GROUP_VD_VDI, + /** VHD virtual disk backend. */ + LOG_GROUP_VD_VHD, + /** VHDX virtual disk backend. */ + LOG_GROUP_VD_VHDX, + /** VMDK virtual disk backend. */ + LOG_GROUP_VD_VMDK, + /** VM group. */ + LOG_GROUP_VM, + /** VMM group. */ + LOG_GROUP_VMM, + /** VRDE group */ + LOG_GROUP_VRDE, + /** VRDP group */ + LOG_GROUP_VRDP, + /** VSCSI group */ + LOG_GROUP_VSCSI, + /** Webservice group. */ + LOG_GROUP_WEBSERVICE + /* !!!ALPHABETICALLY!!! */ +} VBOX_LOGGROUP; + + +/** @def VBOX_LOGGROUP_NAMES + * VirtualBox Logging group names. + * + * Must correspond 100% to LOGGROUP! + * Don't forget commas! + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +#define VBOX_LOGGROUP_NAMES \ +{ \ + RT_LOGGROUP_NAMES, \ + "DEFAULT", \ + "AUDIO_MIXER", \ + "AUDIO_MIXER_BUFFER", \ + "AUTOLOGON", \ + "CFGM", \ + "CPUM", \ + "CSAM", \ + "DBGC", \ + "DBGF", \ + "DBGF_INFO", \ + "DBGG", \ + "DEV", \ + "DEV_AC97", \ + "DEV_ACPI", \ + "DEV_AHCI", \ + "DEV_APIC", \ + "DEV_BUSLOGIC", \ + "DEV_DMA", \ + "DEV_E1000", \ + "DEV_EFI", \ + "DEV_EHCI", \ + "DEV_FDC", \ + "DEV_GIM", \ + "DEV_HDA", \ + "DEV_HDA_CODEC", \ + "DEV_HPET", \ + "DEV_IDE", \ + "DEV_INIP", \ + "DEV_KBD", \ + "DEV_LPC", \ + "DEV_LSILOGICSCSI", \ + "DEV_NE2000", \ + "DEV_OHCI", \ + "DEV_PARALLEL", \ + "DEV_PC", \ + "DEV_PC_ARCH", \ + "DEV_PC_BIOS", \ + "DEV_PCI", \ + "DEV_PCI_RAW", \ + "DEV_PCNET", \ + "DEV_PIC", \ + "DEV_PIT", \ + "DEV_RTC", \ + "DEV_SB16", \ + "DEV_SERIAL", \ + "DEV_SMC", \ + "DEV_VGA", \ + "DEV_VIRTIO", \ + "DEV_VIRTIO_NET", \ + "DEV_VMM", \ + "DEV_VMM_BACKDOOR", \ + "DEV_VMM_STDERR", \ + "DEV_VMSVGA", \ + "DEV_XHCI", \ + "DIS", \ + "DRV", \ + "DRV_ACPI", \ + "DRV_AUDIO", \ + "DRV_BLOCK", \ + "DRV_CHAR", \ + "DRV_DISK_INTEGRITY", \ + "DRV_DISPLAY", \ + "DRV_FLOPPY", \ + "DRV_HOST_AUDIO", \ + "DRV_HOST_BASE", \ + "DRV_HOST_DVD", \ + "DRV_HOST_FLOPPY", \ + "DRV_HOST_PARALLEL", \ + "DRV_HOST_SERIAL", \ + "DRV_INTNET", \ + "DRV_ISO", \ + "DRV_KBD_QUEUE", \ + "DRV_LWIP", \ + "DRV_MINIPORT", \ + "DRV_MOUSE", \ + "DRV_MOUSE_QUEUE", \ + "DRV_NAMEDPIPE", \ + "DRV_NAT", \ + "DRV_RAW_IMAGE", \ + "DRV_SCSI", \ + "DRV_SCSIHOST", \ + "DRV_TELNETSERVER", \ + "DRV_TRANSPORT_ASYNC", \ + "DRV_TUN", \ + "DRV_UDPTUNNEL", \ + "DRV_USBPROXY", \ + "DRV_VBOXHDD", \ + "DRV_VD", \ + "DRV_VRDE_AUDIO", \ + "DRV_VSWITCH", \ + "DRV_VUSB", \ + "EM", \ + "FTM", \ + "GIM", \ + "GMM", \ + "GUEST_CONTROL", \ + "GUEST_DND", \ + "GUI", \ + "GVMM", \ + "HGCM", \ + "HGSMI", \ + "HM", \ + "IEM", \ + "IOM", \ + "IPC", \ + "LWIP", \ + "LWIP_API_LIB", \ + "LWIP_API_MSG", \ + "LWIP_ETHARP", \ + "LWIP_ICMP", \ + "LWIP_IGMP", \ + "LWIP_INET", \ + "LWIP_IP4", \ + "LWIP_IP4_REASS", \ + "LWIP_IP6", \ + "LWIP_MEM", \ + "LWIP_MEMP", \ + "LWIP_NETIF", \ + "LWIP_PBUF", \ + "LWIP_RAW", \ + "LWIP_SOCKETS", \ + "LWIP_SYS", \ + "LWIP_TCP", \ + "LWIP_TCPIP", \ + "LWIP_TCP_CWND", \ + "LWIP_TCP_FR", \ + "LWIP_TCP_INPUT", \ + "LWIP_TCP_OUTPUT", \ + "LWIP_TCP_QLEN", \ + "LWIP_TCP_RST", \ + "LWIP_TCP_RTO", \ + "LWIP_TCP_WND", \ + "LWIP_TIMERS", \ + "LWIP_UDP", \ + "MAIN", \ + "MAIN_ADDITIONSFACILITY", \ + "MAIN_ADDITIONSSTATECHANGEDEVENT", \ + "MAIN_APPLIANCE", \ + "MAIN_AUDIOADAPTER", \ + "MAIN_BANDWIDTHCONTROL", \ + "MAIN_BANDWIDTHGROUP", \ + "MAIN_BANDWIDTHGROUPCHANGEDEVENT", \ + "MAIN_BIOSSETTINGS", \ + "MAIN_CANSHOWWINDOWEVENT", \ + "MAIN_CLIPBOARDMODECHANGEDEVENT", \ + "MAIN_CONSOLE", \ + "MAIN_CPUCHANGEDEVENT", \ + "MAIN_CPUEXECUTIONCAPCHANGEDEVENT", \ + "MAIN_DHCPSERVER", \ + "MAIN_DIRECTORY", \ + "MAIN_DISPLAY", \ + "MAIN_DISPLAYSOURCEBITMAP", \ + "MAIN_DNDBASE", \ + "MAIN_DNDMODECHANGEDEVENT", \ + "MAIN_DNDSOURCE", \ + "MAIN_DNDTARGET", \ + "MAIN_EMULATEDUSB", \ + "MAIN_EVENT", \ + "MAIN_EVENTLISTENER", \ + "MAIN_EVENTSOURCE", \ + "MAIN_EVENTSOURCECHANGEDEVENT", \ + "MAIN_EXTPACK", \ + "MAIN_EXTPACKBASE", \ + "MAIN_EXTPACKFILE", \ + "MAIN_EXTPACKMANAGER", \ + "MAIN_EXTPACKPLUGIN", \ + "MAIN_EXTRADATACANCHANGEEVENT", \ + "MAIN_EXTRADATACHANGEDEVENT", \ + "MAIN_FILE", \ + "MAIN_FRAMEBUFFER", \ + "MAIN_FRAMEBUFFEROVERLAY", \ + "MAIN_FSOBJINFO", \ + "MAIN_GUEST", \ + "MAIN_GUESTDIRECTORY", \ + "MAIN_GUESTDNDSOURCE", \ + "MAIN_GUESTDNDTARGET", \ + "MAIN_GUESTERRORINFO", \ + "MAIN_GUESTFILE", \ + "MAIN_GUESTFILEEVENT", \ + "MAIN_GUESTFILEIOEVENT", \ + "MAIN_GUESTFILEOFFSETCHANGEDEVENT", \ + "MAIN_GUESTFILEREADEVENT", \ + "MAIN_GUESTFILEREGISTEREDEVENT", \ + "MAIN_GUESTFILESTATECHANGEDEVENT", \ + "MAIN_GUESTFILEWRITEEVENT", \ + "MAIN_GUESTFSOBJINFO", \ + "MAIN_GUESTKEYBOARDEVENT", \ + "MAIN_GUESTMONITORCHANGEDEVENT", \ + "MAIN_GUESTMOUSEEVENT", \ + "MAIN_GUESTMULTITOUCHEVENT", \ + "MAIN_GUESTOSTYPE", \ + "MAIN_GUESTPROCESS", \ + "MAIN_GUESTPROCESSEVENT", \ + "MAIN_GUESTPROCESSINPUTNOTIFYEVENT", \ + "MAIN_GUESTPROCESSIOEVENT", \ + "MAIN_GUESTPROCESSOUTPUTEVENT", \ + "MAIN_GUESTPROCESSREGISTEREDEVENT", \ + "MAIN_GUESTPROCESSSTATECHANGEDEVENT", \ + "MAIN_GUESTPROPERTYCHANGEDEVENT", \ + "MAIN_GUESTSESSION", \ + "MAIN_GUESTSESSIONEVENT", \ + "MAIN_GUESTSESSIONREGISTEREDEVENT", \ + "MAIN_GUESTSESSIONSTATECHANGEDEVENT", \ + "MAIN_GUESTUSERSTATECHANGEDEVENT", \ + "MAIN_HOST", \ + "MAIN_HOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT", \ + "MAIN_HOSTNETWORKINTERFACE", \ + "MAIN_HOSTPCIDEVICEPLUGEVENT", \ + "MAIN_HOSTUSBDEVICE", \ + "MAIN_HOSTUSBDEVICEFILTER", \ + "MAIN_HOSTVIDEOINPUTDEVICE", \ + "MAIN_INTERNALMACHINECONTROL", \ + "MAIN_INTERNALSESSIONCONTROL", \ + "MAIN_KEYBOARD", \ + "MAIN_KEYBOARDLEDSCHANGEDEVENT", \ + "MAIN_MACHINE", \ + "MAIN_MACHINEDATACHANGEDEVENT", \ + "MAIN_MACHINEDEBUGGER", \ + "MAIN_MACHINEEVENT", \ + "MAIN_MACHINEREGISTEREDEVENT", \ + "MAIN_MACHINESTATECHANGEDEVENT", \ + "MAIN_MEDIUM", \ + "MAIN_MEDIUMATTACHMENT", \ + "MAIN_MEDIUMCHANGEDEVENT", \ + "MAIN_MEDIUMCONFIGCHANGEDEVENT", \ + "MAIN_MEDIUMFORMAT", \ + "MAIN_MEDIUMREGISTEREDEVENT", \ + "MAIN_MOUSE", \ + "MAIN_MOUSECAPABILITYCHANGEDEVENT", \ + "MAIN_MOUSEPOINTERSHAPE", \ + "MAIN_MOUSEPOINTERSHAPECHANGEDEVENT", \ + "MAIN_NATENGINE", \ + "MAIN_NATNETWORK", \ + "MAIN_NATNETWORKALTEREVENT", \ + "MAIN_NATNETWORKCHANGEDEVENT", \ + "MAIN_NATNETWORKCREATIONDELETIONEVENT", \ + "MAIN_NATNETWORKPORTFORWARDEVENT", \ + "MAIN_NATNETWORKSETTINGEVENT", \ + "MAIN_NATNETWORKSTARTSTOPEVENT", \ + "MAIN_NATREDIRECTEVENT", \ + "MAIN_NETWORKADAPTER", \ + "MAIN_NETWORKADAPTERCHANGEDEVENT", \ + "MAIN_PARALLELPORT", \ + "MAIN_PARALLELPORTCHANGEDEVENT", \ + "MAIN_PCIADDRESS", \ + "MAIN_PCIDEVICEATTACHMENT", \ + "MAIN_PERFORMANCECOLLECTOR", \ + "MAIN_PERFORMANCEMETRIC", \ + "MAIN_PROCESS", \ + "MAIN_PROGRESS", \ + "MAIN_REUSABLEEVENT", \ + "MAIN_RUNTIMEERROREVENT", \ + "MAIN_SERIALPORT", \ + "MAIN_SERIALPORTCHANGEDEVENT", \ + "MAIN_SESSION", \ + "MAIN_SESSIONSTATECHANGEDEVENT", \ + "MAIN_SHAREDFOLDER", \ + "MAIN_SHAREDFOLDERCHANGEDEVENT", \ + "MAIN_SHOWWINDOWEVENT", \ + "MAIN_SNAPSHOT", \ + "MAIN_SNAPSHOTCHANGEDEVENT", \ + "MAIN_SNAPSHOTDELETEDEVENT", \ + "MAIN_SNAPSHOTEVENT", \ + "MAIN_SNAPSHOTRESTOREDEVENT", \ + "MAIN_SNAPSHOTTAKENEVENT", \ + "MAIN_STATECHANGEDEVENT", \ + "MAIN_STORAGECONTROLLER", \ + "MAIN_STORAGECONTROLLERCHANGEDEVENT", \ + "MAIN_STORAGEDEVICECHANGEDEVENT", \ + "MAIN_SYSTEMPROPERTIES", \ + "MAIN_TOKEN", \ + "MAIN_USBCONTROLLER", \ + "MAIN_USBCONTROLLERCHANGEDEVENT", \ + "MAIN_USBDEVICE", \ + "MAIN_USBDEVICEFILTER", \ + "MAIN_USBDEVICEFILTERS", \ + "MAIN_USBDEVICESTATECHANGEDEVENT", \ + "MAIN_VBOXSVCAVAILABILITYCHANGEDEVENT", \ + "MAIN_VETOEVENT", \ + "MAIN_VFSEXPLORER", \ + "MAIN_VIDEOCAPTURECHANGEDEVENT", \ + "MAIN_VIRTUALBOX", \ + "MAIN_VIRTUALBOXCLIENT", \ + "MAIN_VIRTUALSYSTEMDESCRIPTION", \ + "MAIN_VRDESERVER", \ + "MAIN_VRDESERVERCHANGEDEVENT", \ + "MAIN_VRDESERVERINFO", \ + "MAIN_VRDESERVERINFOCHANGEDEVENT", \ + "MISC", \ + "MM", \ + "MM_HEAP", \ + "MM_HYPER", \ + "MM_HYPER_HEAP",\ + "MM_PHYS", \ + "MM_POOL", \ + "NAT_SERVICE", \ + "NET_ADP_DRV", \ + "NET_FLT_DRV", \ + "NET_SERVICE", \ + "NET_SHAPER", \ + "PATM", \ + "PDM", \ + "PDM_ASYNC_COMPLETION", \ + "PDM_BLK_CACHE", \ + "PDM_DEVICE", \ + "PDM_DRIVER", \ + "PDM_LDR", \ + "PDM_QUEUE", \ + "PGM", \ + "PGM_DYNMAP", \ + "PGM_PHYS", \ + "PGM_PHYS_ACCESS",\ + "PGM_POOL", \ + "PGM_SHARED", \ + "REM", \ + "REM_DISAS", \ + "REM_HANDLER", \ + "REM_IOPORT", \ + "REM_MMIO", \ + "REM_PRINTF", \ + "REM_RUN", \ + "SELM", \ + "SHARED_CLIPBOARD",\ + "SHARED_CROPENGL",\ + "SHARED_FOLDERS",\ + "SHARED_OPENGL",\ + "SRV_INTNET", \ + "SSM", \ + "STAM", \ + "SUP", \ + "SUP_DRV", \ + "TM", \ + "TRPM", \ + "USB_CARDREADER",\ + "USB_DRV", \ + "USB_FILTER", \ + "USB_KBD", \ + "USB_MOUSE", \ + "USB_MSD", \ + "USB_REMOTE", \ + "USB_WEBCAM", \ + "VGDRV", \ + "VBGL", \ + "VD", \ + "VD_DMG", \ + "VD_ISCSI", \ + "VD_PARALLELS", \ + "VD_QCOW", \ + "VD_QED", \ + "VD_RAW", \ + "VD_VDI", \ + "VD_VHD", \ + "VD_VHDX", \ + "VD_VMDK", \ + "VM", \ + "VMM", \ + "VRDE", \ + "VRDP", \ + "VSCSI", \ + "WEBSERVICE", \ +} + +/** @} */ +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/ostypes.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/ostypes.h @@ -0,0 +1,166 @@ +/** @file + * VirtualBox - Global Guest Operating System definition. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_ostypes_h +#define ___VBox_ostypes_h + +#include + +RT_C_DECLS_BEGIN + +/** + * Global list of guest operating system types. + * + * They are grouped into families. A family identifer is always has + * mod 0x10000 == 0. New entries can be added, however other components + * depend on the values (e.g. the Qt GUI and guest additions) so the + * existing values MUST stay the same. + * + * Note: distinguish between 32 & 64 bits guest OSes by checking bit 8 (mod 0x100) + */ +typedef enum VBOXOSTYPE +{ + VBOXOSTYPE_Unknown = 0, + VBOXOSTYPE_Unknown_x64 = 0x00100, + VBOXOSTYPE_DOS = 0x10000, + VBOXOSTYPE_Win31 = 0x15000, + VBOXOSTYPE_Win9x = 0x20000, + VBOXOSTYPE_Win95 = 0x21000, + VBOXOSTYPE_Win98 = 0x22000, + VBOXOSTYPE_WinMe = 0x23000, + VBOXOSTYPE_WinNT = 0x30000, + VBOXOSTYPE_WinNT_x64 = 0x30100, + VBOXOSTYPE_WinNT4 = 0x31000, + VBOXOSTYPE_Win2k = 0x32000, + VBOXOSTYPE_WinXP = 0x33000, + VBOXOSTYPE_WinXP_x64 = 0x33100, + VBOXOSTYPE_Win2k3 = 0x34000, + VBOXOSTYPE_Win2k3_x64 = 0x34100, + VBOXOSTYPE_WinVista = 0x35000, + VBOXOSTYPE_WinVista_x64 = 0x35100, + VBOXOSTYPE_Win2k8 = 0x36000, + VBOXOSTYPE_Win2k8_x64 = 0x36100, + VBOXOSTYPE_Win7 = 0x37000, + VBOXOSTYPE_Win7_x64 = 0x37100, + VBOXOSTYPE_Win8 = 0x38000, + VBOXOSTYPE_Win8_x64 = 0x38100, + VBOXOSTYPE_Win2k12_x64 = 0x39100, + VBOXOSTYPE_Win81 = 0x3A000, + VBOXOSTYPE_Win81_x64 = 0x3A100, + VBOXOSTYPE_Win10 = 0x3B000, + VBOXOSTYPE_Win10_x64 = 0x3B100, + VBOXOSTYPE_OS2 = 0x40000, + VBOXOSTYPE_OS2Warp3 = 0x41000, + VBOXOSTYPE_OS2Warp4 = 0x42000, + VBOXOSTYPE_OS2Warp45 = 0x43000, + VBOXOSTYPE_ECS = 0x44000, + VBOXOSTYPE_OS21x = 0x48000, + VBOXOSTYPE_Linux = 0x50000, + VBOXOSTYPE_Linux_x64 = 0x50100, + VBOXOSTYPE_Linux22 = 0x51000, + VBOXOSTYPE_Linux24 = 0x52000, + VBOXOSTYPE_Linux24_x64 = 0x52100, + VBOXOSTYPE_Linux26 = 0x53000, + VBOXOSTYPE_Linux26_x64 = 0x53100, + VBOXOSTYPE_ArchLinux = 0x54000, + VBOXOSTYPE_ArchLinux_x64 = 0x54100, + VBOXOSTYPE_Debian = 0x55000, + VBOXOSTYPE_Debian_x64 = 0x55100, + VBOXOSTYPE_OpenSUSE = 0x56000, + VBOXOSTYPE_OpenSUSE_x64 = 0x56100, + VBOXOSTYPE_FedoraCore = 0x57000, + VBOXOSTYPE_FedoraCore_x64 = 0x57100, + VBOXOSTYPE_Gentoo = 0x58000, + VBOXOSTYPE_Gentoo_x64 = 0x58100, + VBOXOSTYPE_Mandriva = 0x59000, + VBOXOSTYPE_Mandriva_x64 = 0x59100, + VBOXOSTYPE_RedHat = 0x5A000, + VBOXOSTYPE_RedHat_x64 = 0x5A100, + VBOXOSTYPE_Turbolinux = 0x5B000, + VBOXOSTYPE_Turbolinux_x64 = 0x5B100, + VBOXOSTYPE_Ubuntu = 0x5C000, + VBOXOSTYPE_Ubuntu_x64 = 0x5C100, + VBOXOSTYPE_Xandros = 0x5D000, + VBOXOSTYPE_Xandros_x64 = 0x5D100, + VBOXOSTYPE_Oracle = 0x5E000, + VBOXOSTYPE_Oracle_x64 = 0x5E100, + VBOXOSTYPE_FreeBSD = 0x60000, + VBOXOSTYPE_FreeBSD_x64 = 0x60100, + VBOXOSTYPE_OpenBSD = 0x61000, + VBOXOSTYPE_OpenBSD_x64 = 0x61100, + VBOXOSTYPE_NetBSD = 0x62000, + VBOXOSTYPE_NetBSD_x64 = 0x62100, + VBOXOSTYPE_Netware = 0x70000, + VBOXOSTYPE_Solaris = 0x80000, + VBOXOSTYPE_Solaris_x64 = 0x80100, + VBOXOSTYPE_OpenSolaris = 0x81000, + VBOXOSTYPE_OpenSolaris_x64 = 0x81100, + VBOXOSTYPE_Solaris11_x64 = 0x82100, + VBOXOSTYPE_L4 = 0x90000, + VBOXOSTYPE_QNX = 0xA0000, + VBOXOSTYPE_MacOS = 0xB0000, + VBOXOSTYPE_MacOS_x64 = 0xB0100, + VBOXOSTYPE_MacOS106 = 0xB2000, + VBOXOSTYPE_MacOS106_x64 = 0xB2100, + VBOXOSTYPE_MacOS107_x64 = 0xB3100, + VBOXOSTYPE_MacOS108_x64 = 0xB4100, + VBOXOSTYPE_MacOS109_x64 = 0xB5100, + VBOXOSTYPE_MacOS1010_x64 = 0xB6100, + VBOXOSTYPE_MacOS1011_x64 = 0xB7100, + VBOXOSTYPE_JRockitVE = 0xC0000, + VBOXOSTYPE_Haiku = 0xD0000, + VBOXOSTYPE_Haiku_x64 = 0xD0100, +/** The bit number which indicates 64-bit or 32-bit. */ +#define VBOXOSTYPE_x64_BIT 8 + /** The mask which indicates 64-bit. */ + VBOXOSTYPE_x64 = 1 << VBOXOSTYPE_x64_BIT, + /** The usual 32-bit hack. */ + VBOXOSTYPE_32BIT_HACK = 0x7fffffff +} VBOXOSTYPE; + + +/** + * Global list of guest OS families. + */ +typedef enum VBOXOSFAMILY +{ + VBOXOSFAMILY_Unknown = 0, + VBOXOSFAMILY_Windows32 = 1, + VBOXOSFAMILY_Windows64 = 2, + VBOXOSFAMILY_Linux32 = 3, + VBOXOSFAMILY_Linux64 = 4, + VBOXOSFAMILY_FreeBSD32 = 5, + VBOXOSFAMILY_FreeBSD64 = 6, + VBOXOSFAMILY_Solaris32 = 7, + VBOXOSFAMILY_Solaris64 = 8, + VBOXOSFAMILY_MacOSX32 = 9, + VBOXOSFAMILY_MacOSX64 = 10, + /** The usual 32-bit hack. */ + VBOXOSFAMILY_32BIT_HACK = 0x7fffffff +} VBOXOSFAMILY; + +RT_C_DECLS_END + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/param.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/param.h @@ -0,0 +1,175 @@ +/** @file + * VirtualBox Parameter Definitions. (VMM,+) + * + * param.mac is generated from this file by running 'kmk incs' in the root. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_param_h +#define ___VBox_param_h + +#include +#include + + +/** @defgroup grp_vbox_param VBox Parameter Definition + * @{ + */ + +/** The maximum number of pages that can be allocated and mapped + * by various MM, PGM and SUP APIs. */ +#define VBOX_MAX_ALLOC_PAGE_COUNT (256U * _1M / PAGE_SIZE) + +/** @def VBOX_WITH_PAGE_SHARING + * Enables the page sharing code. + * @remarks This must match GMMR0Init; currently we only support page fusion on + * all 64-bit hosts except Mac OS X */ +#if ( HC_ARCH_BITS == 64 /* ASM-NOINC */ \ + && (defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS)) ) /* ASM-NOINC */ \ + || defined(DOXYGEN_RUNNING) /* ASM-NOINC */ +# define VBOX_WITH_PAGE_SHARING /* ASM-NOINC */ +#endif /* ASM-NOINC */ + + +/** @defgroup grp_vbox_param_mm Memory Monitor Parameters + * @{ + */ +/** Initial address of Hypervisor Memory Area. + * MUST BE PAGE TABLE ALIGNED! */ +#define MM_HYPER_AREA_ADDRESS UINT32_C(0xa0000000) + +/** The max size of the hypervisor memory area. */ +#define MM_HYPER_AREA_MAX_SIZE (40U * _1M) /**< @todo Readjust when floating RAMRANGEs have been implemented. Used to be 20 * _1MB */ + +/** Maximum number of bytes we can dynamically map into the hypervisor region. + * This must be a power of 2 number of pages! + */ +#define MM_HYPER_DYNAMIC_SIZE (16U * PAGE_SIZE) + +/** The minimum guest RAM size in bytes. */ +#define MM_RAM_MIN UINT32_C(0x00400000) +/** The maximum guest RAM size in bytes. */ +#if HC_ARCH_BITS == 64 +# define MM_RAM_MAX UINT64_C(0x20000000000) +#else +# define MM_RAM_MAX UINT64_C(0x000E0000000) +#endif +/** The minimum guest RAM size in MBs. */ +#define MM_RAM_MIN_IN_MB UINT32_C(4) +/** The maximum guest RAM size in MBs. */ +#if HC_ARCH_BITS == 64 +# define MM_RAM_MAX_IN_MB UINT32_C(2097152) +#else +# define MM_RAM_MAX_IN_MB UINT32_C(3584) +#endif +/** The default size of the below 4GB RAM hole. */ +#define MM_RAM_HOLE_SIZE_DEFAULT (512U * _1M) +/** @} */ + + +/** @defgroup grp_vbox_param_pgm Page Manager Parameters + * @{ + */ +/** The number of handy pages. + * This should be a power of two. */ +#define PGM_HANDY_PAGES 128 +/** The threshold at which allocation of more handy pages is flagged. */ +#define PGM_HANDY_PAGES_SET_FF 32 +/** The threshold at which we will allocate more when in ring-3. + * This is must be smaller than both PGM_HANDY_PAGES_SET_FF and + * PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_R3_ALLOC 8 +/** The threshold at which we will allocate more when in ring-0 or raw mode. + * The idea is that we should never go below this threshold while in ring-0 or + * raw mode because of PGM_HANDY_PAGES_RZ_TO_R3. However, should this happen and + * we are actually out of memory, we will have 8 page to get out of whatever + * code we're executing. + * + * This is must be smaller than both PGM_HANDY_PAGES_SET_FF and + * PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_RZ_ALLOC 8 +/** The threshold at which we force return to R3 ASAP. + * The idea is that this should be large enough to get out of any code and up to + * the main EM loop when we are out of memory. + * This must be less or equal to PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_RZ_TO_R3 24 +/** The minimum number of handy pages (after allocation). + * This must be greater or equal to PGM_HANDY_PAGES_SET_FF. + * Another name would be PGM_HANDY_PAGES_EXTRA_RESERVATION or _PARANOIA. :-) */ +#define PGM_HANDY_PAGES_MIN 32 +/** @} */ + + +/** @defgroup grp_vbox_param_vmm VMM Parameters + * @{ + */ +/** VMM stack size. */ +#ifdef RT_OS_DARWIN +# define VMM_STACK_SIZE 16384U +#else +# define VMM_STACK_SIZE 8192U +#endif +/** Min number of Virtual CPUs. */ +#define VMM_MIN_CPU_COUNT 1 +/** Max number of Virtual CPUs. */ +#define VMM_MAX_CPU_COUNT 64 + +/** @} */ + + +/** @defgroup grp_vbox_pci PCI Identifiers + * @{ */ +/** VirtualBox PCI vendor ID. */ +#define VBOX_PCI_VENDORID (0x80ee) + +/** @name VirtualBox graphics card identifiers + * @{ */ +#define VBOX_VENDORID VBOX_PCI_VENDORID /**< @todo wonderful choice of name! Please squeeze a _VGA_ or something in there, please. */ +#define VBOX_DEVICEID (0xbeef) /**< @todo ditto. */ +#define VBOX_VESA_VENDORID VBOX_PCI_VENDORID +#define VBOX_VESA_DEVICEID (0xbeef) +/** @} */ + +/** @name VMMDev PCI card identifiers + * @{ */ +#define VMMDEV_VENDORID VBOX_PCI_VENDORID +#define VMMDEV_DEVICEID (0xcafe) +/** @} */ + +/** @} */ + + +/** @defgroup grp_vbox_param_misc Misc + * @{ */ + +/** The maximum size of a generic segment offload (GSO) frame. This limit is + * imposed by the 16-bit frame size in internal networking header. */ +#define VBOX_MAX_GSO_SIZE 0xfff0 + +/** @} */ + + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/shflsvc.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/shflsvc.h @@ -0,0 +1,1423 @@ +/** @file + * Shared Folders: Common header for host service and guest clients. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_shflsvc_h +#define ___VBox_shflsvc_h + +#include +#include +#include +#include +#include + + +/** @name Some bit flag manipulation macros. + * @{ */ +#ifndef BIT_FLAG +#define BIT_FLAG(__Field,__Flag) ((__Field) & (__Flag)) +#endif + +#ifndef BIT_FLAG_SET +#define BIT_FLAG_SET(__Field,__Flag) ((__Field) |= (__Flag)) +#endif + +#ifndef BIT_FLAG_CLEAR +#define BIT_FLAG_CLEAR(__Field,__Flag) ((__Field) &= ~(__Flag)) +#endif +/** @} */ + + +/** + * Structures shared between guest and the service + * can be relocated and use offsets to point to variable + * length parts. + */ + +/** + * Shared folders protocol works with handles. + * Before doing any action on a file system object, + * one have to obtain the object handle via a SHFL_FN_CREATE + * request. A handle must be closed with SHFL_FN_CLOSE. + */ + +/** Shared Folders service functions. (guest) + * @{ + */ + +/** Query mappings changes. */ +#define SHFL_FN_QUERY_MAPPINGS (1) +/** Query mappings changes. */ +#define SHFL_FN_QUERY_MAP_NAME (2) +/** Open/create object. */ +#define SHFL_FN_CREATE (3) +/** Close object handle. */ +#define SHFL_FN_CLOSE (4) +/** Read object content. */ +#define SHFL_FN_READ (5) +/** Write new object content. */ +#define SHFL_FN_WRITE (6) +/** Lock/unlock a range in the object. */ +#define SHFL_FN_LOCK (7) +/** List object content. */ +#define SHFL_FN_LIST (8) +/** Query/set object information. */ +#define SHFL_FN_INFORMATION (9) +/** Remove object */ +#define SHFL_FN_REMOVE (11) +/** Map folder (legacy) */ +#define SHFL_FN_MAP_FOLDER_OLD (12) +/** Unmap folder */ +#define SHFL_FN_UNMAP_FOLDER (13) +/** Rename object (possibly moving it to another directory) */ +#define SHFL_FN_RENAME (14) +/** Flush file */ +#define SHFL_FN_FLUSH (15) +/** @todo macl, a description, please. */ +#define SHFL_FN_SET_UTF8 (16) +/** Map folder */ +#define SHFL_FN_MAP_FOLDER (17) +/** Read symlink destination (as of VBox 4.0) */ +#define SHFL_FN_READLINK (18) +/** Create symlink (as of VBox 4.0) */ +#define SHFL_FN_SYMLINK (19) +/** Ask host to show symlinks (as of VBox 4.0) */ +#define SHFL_FN_SET_SYMLINKS (20) + +/** @} */ + +/** Shared Folders service functions. (host) + * @{ + */ + +/** Add shared folder mapping. */ +#define SHFL_FN_ADD_MAPPING (1) +/** Remove shared folder mapping. */ +#define SHFL_FN_REMOVE_MAPPING (2) +/** Set the led status light address. */ +#define SHFL_FN_SET_STATUS_LED (3) +/** Allow the guest to create symbolic links (as of VBox 4.0) */ +#define SHFL_FN_ALLOW_SYMLINKS_CREATE (4) +/** @} */ + +/** Root handle for a mapping. Root handles are unique. + * @note + * Function parameters structures consider + * the root handle as 32 bit value. If the typedef + * will be changed, then function parameters must be + * changed accordingly. All those parameters are marked + * with SHFLROOT in comments. + */ +typedef uint32_t SHFLROOT; + +#define SHFL_ROOT_NIL ((SHFLROOT)~0) + + +/** A shared folders handle for an opened object. */ +typedef uint64_t SHFLHANDLE; + +#define SHFL_HANDLE_NIL ((SHFLHANDLE)~0LL) +#define SHFL_HANDLE_ROOT ((SHFLHANDLE)0LL) + +/** Hardcoded maximum length (in chars) of a shared folder name. */ +#define SHFL_MAX_LEN (256) +/** Hardcoded maximum number of shared folder mapping available to the guest. */ +#define SHFL_MAX_MAPPINGS (64) + +/** @name Shared Folders strings. They can be either UTF-8 or UTF-16. + * @{ + */ + +/** + * Shared folder string buffer structure. + */ +#pragma pack(1) +typedef struct _SHFLSTRING +{ + /** Allocated size of the String member in bytes. */ + uint16_t u16Size; + + /** Length of string without trailing nul in bytes. */ + uint16_t u16Length; + + /** UTF-8 or UTF-16 string. Nul terminated. */ + union + { + uint8_t utf8[1]; + uint16_t ucs2[1]; + } String; +} SHFLSTRING; +#pragma pack() + +#define SHFLSTRING_HEADER_SIZE RT_UOFFSETOF(SHFLSTRING, String) + +/** Pointer to a shared folder string buffer. */ +typedef SHFLSTRING *PSHFLSTRING; +/** Pointer to a const shared folder string buffer. */ +typedef const SHFLSTRING *PCSHFLSTRING; + +/** Calculate size of the string. */ +DECLINLINE(uint32_t) ShflStringSizeOfBuffer(PCSHFLSTRING pString) +{ + return pString ? sizeof(SHFLSTRING) - sizeof(pString->String) + pString->u16Size : 0; +} + +DECLINLINE(uint32_t) ShflStringLength(PCSHFLSTRING pString) +{ + return pString ? pString->u16Length : 0; +} + +DECLINLINE(PSHFLSTRING) ShflStringInitBuffer(void *pvBuffer, uint32_t u32Size) +{ + PSHFLSTRING pString = NULL; + const uint32_t u32HeaderSize = SHFLSTRING_HEADER_SIZE; + + /* + * Check that the buffer size is big enough to hold a zero sized string + * and is not too big to fit into 16 bit variables. + */ + if (u32Size >= u32HeaderSize && u32Size - u32HeaderSize <= 0xFFFF) + { + pString = (PSHFLSTRING)pvBuffer; + pString->u16Size = u32Size - u32HeaderSize; + pString->u16Length = 0; + if (pString->u16Size >= sizeof(pString->String.ucs2[0])) + pString->String.ucs2[0] = 0; + else if (pString->u16Size >= sizeof(pString->String.utf8[0])) + pString->String.utf8[0] = 0; + } + + return pString; +} + +/** + * Validates a HGCM string output parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. + * @param cbBuf The buffer size from the parameter. + */ +DECLINLINE(bool) ShflStringIsValidOut(PCSHFLSTRING pString, uint32_t cbBuf) +{ + if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String))) + if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf)) + if (RT_LIKELY(pString->u16Length < pString->u16Size)) + return true; + return false; +} + +/** + * Validates a HGCM string input parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. + * @param cbBuf The buffer size from the parameter. + * @param fUtf8Not16 Set if UTF-8 encoding, clear if UTF-16 encoding. + */ +DECLINLINE(bool) ShflStringIsValidIn(PCSHFLSTRING pString, uint32_t cbBuf, bool fUtf8Not16) +{ + int rc; + if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String))) + { + if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf)) + { + if (fUtf8Not16) + { + /* UTF-8: */ + if (RT_LIKELY(pString->u16Length < pString->u16Size)) + { + rc = RTStrValidateEncodingEx((const char *)&pString->String.utf8[0], pString->u16Length + 1, + RTSTR_VALIDATE_ENCODING_EXACT_LENGTH | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + if (RT_SUCCESS(rc)) + return true; + } + } + else + { + /* UTF-16: */ + if (RT_LIKELY(!(pString->u16Length & 1))) + { + if (RT_LIKELY((uint32_t)sizeof(RTUTF16) + pString->u16Length <= pString->u16Size)) + { + rc = RTUtf16ValidateEncodingEx(&pString->String.ucs2[0], pString->u16Length / 2 + 1, + RTSTR_VALIDATE_ENCODING_EXACT_LENGTH + | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + if (RT_SUCCESS(rc)) + return true; + } + } + } + } + } + return false; +} + +/** + * Validates an optional HGCM string input parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. Can be NULL. + * @param cbBuf The buffer size from the parameter. + * @param fUtf8Not16 Set if UTF-8 encoding, clear if UTF-16 encoding. + */ +DECLINLINE(bool) ShflStringIsValidOrNullIn(PCSHFLSTRING pString, uint32_t cbBuf, bool fUtf8Not16) +{ + if (pString) + return ShflStringIsValidIn(pString, cbBuf, fUtf8Not16); + if (RT_LIKELY(cbBuf == 0)) + return true; + return false; +} + +/** @} */ + + +/** + * The available additional information in a SHFLFSOBJATTR object. + */ +typedef enum SHFLFSOBJATTRADD +{ + /** No additional information is available / requested. */ + SHFLFSOBJATTRADD_NOTHING = 1, + /** The additional unix attributes (SHFLFSOBJATTR::u::Unix) are + * available / requested. */ + SHFLFSOBJATTRADD_UNIX, + /** The additional extended attribute size (SHFLFSOBJATTR::u::EASize) is + * available / requested. */ + SHFLFSOBJATTRADD_EASIZE, + /** The last valid item (inclusive). + * The valid range is SHFLFSOBJATTRADD_NOTHING thru + * SHFLFSOBJATTRADD_LAST. */ + SHFLFSOBJATTRADD_LAST = SHFLFSOBJATTRADD_EASIZE, + + /** The usual 32-bit hack. */ + SHFLFSOBJATTRADD_32BIT_SIZE_HACK = 0x7fffffff +} SHFLFSOBJATTRADD; + + +/* Assert sizes of the IRPT types we're using below. */ +AssertCompileSize(RTFMODE, 4); +AssertCompileSize(RTFOFF, 8); +AssertCompileSize(RTINODE, 8); +AssertCompileSize(RTTIMESPEC, 8); +AssertCompileSize(RTDEV, 4); +AssertCompileSize(RTUID, 4); + +/** + * Shared folder filesystem object attributes. + */ +#pragma pack(1) +typedef struct SHFLFSOBJATTR +{ + /** Mode flags (st_mode). RTFS_UNIX_*, RTFS_TYPE_*, and RTFS_DOS_*. + * @remarks We depend on a number of RTFS_ defines to remain unchanged. + * Fortuntately, these are depending on windows, dos and unix + * standard values, so this shouldn't be much of a pain. */ + RTFMODE fMode; + + /** The additional attributes available. */ + SHFLFSOBJATTRADD enmAdditional; + + /** + * Additional attributes. + * + * Unless explicitly specified to an API, the API can provide additional + * data as it is provided by the underlying OS. + */ + union SHFLFSOBJATTRUNION + { + /** Additional Unix Attributes + * These are available when SHFLFSOBJATTRADD is set in fUnix. + */ + struct SHFLFSOBJATTRUNIX + { + /** The user owning the filesystem object (st_uid). + * This field is ~0U if not supported. */ + RTUID uid; + + /** The group the filesystem object is assigned (st_gid). + * This field is ~0U if not supported. */ + RTGID gid; + + /** Number of hard links to this filesystem object (st_nlink). + * This field is 1 if the filesystem doesn't support hardlinking or + * the information isn't available. + */ + uint32_t cHardlinks; + + /** The device number of the device which this filesystem object resides on (st_dev). + * This field is 0 if this information is not available. */ + RTDEV INodeIdDevice; + + /** The unique identifier (within the filesystem) of this filesystem object (st_ino). + * Together with INodeIdDevice, this field can be used as a OS wide unique id + * when both their values are not 0. + * This field is 0 if the information is not available. */ + RTINODE INodeId; + + /** User flags (st_flags). + * This field is 0 if this information is not available. */ + uint32_t fFlags; + + /** The current generation number (st_gen). + * This field is 0 if this information is not available. */ + uint32_t GenerationId; + + /** The device number of a character or block device type object (st_rdev). + * This field is 0 if the file isn't of a character or block device type and + * when the OS doesn't subscribe to the major+minor device idenfication scheme. */ + RTDEV Device; + } Unix; + + /** + * Extended attribute size. + */ + struct SHFLFSOBJATTREASIZE + { + /** Size of EAs. */ + RTFOFF cb; + } EASize; + } u; +} SHFLFSOBJATTR; +#pragma pack() +AssertCompileSize(SHFLFSOBJATTR, 44); +/** Pointer to a shared folder filesystem object attributes structure. */ +typedef SHFLFSOBJATTR *PSHFLFSOBJATTR; +/** Pointer to a const shared folder filesystem object attributes structure. */ +typedef const SHFLFSOBJATTR *PCSHFLFSOBJATTR; + + +/** + * Filesystem object information structure. + */ +#pragma pack(1) +typedef struct SHFLFSOBJINFO +{ + /** Logical size (st_size). + * For normal files this is the size of the file. + * For symbolic links, this is the length of the path name contained + * in the symbolic link. + * For other objects this fields needs to be specified. + */ + RTFOFF cbObject; + + /** Disk allocation size (st_blocks * DEV_BSIZE). */ + RTFOFF cbAllocated; + + /** Time of last access (st_atime). + * @remarks Here (and other places) we depend on the IPRT timespec to + * remain unchanged. */ + RTTIMESPEC AccessTime; + + /** Time of last data modification (st_mtime). */ + RTTIMESPEC ModificationTime; + + /** Time of last status change (st_ctime). + * If not available this is set to ModificationTime. + */ + RTTIMESPEC ChangeTime; + + /** Time of file birth (st_birthtime). + * If not available this is set to ChangeTime. + */ + RTTIMESPEC BirthTime; + + /** Attributes. */ + SHFLFSOBJATTR Attr; + +} SHFLFSOBJINFO; +#pragma pack() +AssertCompileSize(SHFLFSOBJINFO, 92); +/** Pointer to a shared folder filesystem object information structure. */ +typedef SHFLFSOBJINFO *PSHFLFSOBJINFO; +/** Pointer to a const shared folder filesystem object information + * structure. */ +typedef const SHFLFSOBJINFO *PCSHFLFSOBJINFO; + + +/** + * Copy file system objinfo from IPRT to shared folder format. + * + * @param pDst The shared folder structure. + * @param pSrc The IPRT structure. + */ +DECLINLINE(void) vbfsCopyFsObjInfoFromIprt(PSHFLFSOBJINFO pDst, PCRTFSOBJINFO pSrc) +{ + pDst->cbObject = pSrc->cbObject; + pDst->cbAllocated = pSrc->cbAllocated; + pDst->AccessTime = pSrc->AccessTime; + pDst->ModificationTime = pSrc->ModificationTime; + pDst->ChangeTime = pSrc->ChangeTime; + pDst->BirthTime = pSrc->BirthTime; + pDst->Attr.fMode = pSrc->Attr.fMode; + RT_ZERO(pDst->Attr.u); + switch (pSrc->Attr.enmAdditional) + { + default: + case RTFSOBJATTRADD_NOTHING: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_NOTHING; + break; + + case RTFSOBJATTRADD_UNIX: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_UNIX; + pDst->Attr.u.Unix.uid = pSrc->Attr.u.Unix.uid; + pDst->Attr.u.Unix.gid = pSrc->Attr.u.Unix.gid; + pDst->Attr.u.Unix.cHardlinks = pSrc->Attr.u.Unix.cHardlinks; + pDst->Attr.u.Unix.INodeIdDevice = pSrc->Attr.u.Unix.INodeIdDevice; + pDst->Attr.u.Unix.INodeId = pSrc->Attr.u.Unix.INodeId; + pDst->Attr.u.Unix.fFlags = pSrc->Attr.u.Unix.fFlags; + pDst->Attr.u.Unix.GenerationId = pSrc->Attr.u.Unix.GenerationId; + pDst->Attr.u.Unix.Device = pSrc->Attr.u.Unix.Device; + break; + + case RTFSOBJATTRADD_EASIZE: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_EASIZE; + pDst->Attr.u.EASize.cb = pSrc->Attr.u.EASize.cb; + break; + } +} + + +/** Result of an open/create request. + * Along with handle value the result code + * identifies what has happened while + * trying to open the object. + */ +typedef enum _SHFLCREATERESULT +{ + SHFL_NO_RESULT, + /** Specified path does not exist. */ + SHFL_PATH_NOT_FOUND, + /** Path to file exists, but the last component does not. */ + SHFL_FILE_NOT_FOUND, + /** File already exists and either has been opened or not. */ + SHFL_FILE_EXISTS, + /** New file was created. */ + SHFL_FILE_CREATED, + /** Existing file was replaced or overwritten. */ + SHFL_FILE_REPLACED +} SHFLCREATERESULT; + + +/** Open/create flags. + * @{ + */ + +/** No flags. Initialization value. */ +#define SHFL_CF_NONE (0x00000000) + +/** Lookup only the object, do not return a handle. All other flags are ignored. */ +#define SHFL_CF_LOOKUP (0x00000001) + +/** Open parent directory of specified object. + * Useful for the corresponding Windows FSD flag + * and for opening paths like \\dir\\*.* to search the 'dir'. + * @todo possibly not needed??? + */ +#define SHFL_CF_OPEN_TARGET_DIRECTORY (0x00000002) + +/** Create/open a directory. */ +#define SHFL_CF_DIRECTORY (0x00000004) + +/** Open/create action to do if object exists + * and if the object does not exists. + * REPLACE file means atomically DELETE and CREATE. + * OVERWRITE file means truncating the file to 0 and + * setting new size. + * When opening an existing directory REPLACE and OVERWRITE + * actions are considered invalid, and cause returning + * FILE_EXISTS with NIL handle. + */ +#define SHFL_CF_ACT_MASK_IF_EXISTS (0x000000F0) +#define SHFL_CF_ACT_MASK_IF_NEW (0x00000F00) + +/** What to do if object exists. */ +#define SHFL_CF_ACT_OPEN_IF_EXISTS (0x00000000) +#define SHFL_CF_ACT_FAIL_IF_EXISTS (0x00000010) +#define SHFL_CF_ACT_REPLACE_IF_EXISTS (0x00000020) +#define SHFL_CF_ACT_OVERWRITE_IF_EXISTS (0x00000030) + +/** What to do if object does not exist. */ +#define SHFL_CF_ACT_CREATE_IF_NEW (0x00000000) +#define SHFL_CF_ACT_FAIL_IF_NEW (0x00000100) + +/** Read/write requested access for the object. */ +#define SHFL_CF_ACCESS_MASK_RW (0x00003000) + +/** No access requested. */ +#define SHFL_CF_ACCESS_NONE (0x00000000) +/** Read access requested. */ +#define SHFL_CF_ACCESS_READ (0x00001000) +/** Write access requested. */ +#define SHFL_CF_ACCESS_WRITE (0x00002000) +/** Read/Write access requested. */ +#define SHFL_CF_ACCESS_READWRITE (SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_WRITE) + +/** Requested share access for the object. */ +#define SHFL_CF_ACCESS_MASK_DENY (0x0000C000) + +/** Allow any access. */ +#define SHFL_CF_ACCESS_DENYNONE (0x00000000) +/** Do not allow read. */ +#define SHFL_CF_ACCESS_DENYREAD (0x00004000) +/** Do not allow write. */ +#define SHFL_CF_ACCESS_DENYWRITE (0x00008000) +/** Do not allow access. */ +#define SHFL_CF_ACCESS_DENYALL (SHFL_CF_ACCESS_DENYREAD | SHFL_CF_ACCESS_DENYWRITE) + +/** Requested access to attributes of the object. */ +#define SHFL_CF_ACCESS_MASK_ATTR (0x00030000) + +/** No access requested. */ +#define SHFL_CF_ACCESS_ATTR_NONE (0x00000000) +/** Read access requested. */ +#define SHFL_CF_ACCESS_ATTR_READ (0x00010000) +/** Write access requested. */ +#define SHFL_CF_ACCESS_ATTR_WRITE (0x00020000) +/** Read/Write access requested. */ +#define SHFL_CF_ACCESS_ATTR_READWRITE (SHFL_CF_ACCESS_ATTR_READ | SHFL_CF_ACCESS_ATTR_WRITE) + +/** The file is opened in append mode. Ignored if SHFL_CF_ACCESS_WRITE is not set. */ +#define SHFL_CF_ACCESS_APPEND (0x00040000) + +/** @} */ + +#pragma pack(1) +typedef struct _SHFLCREATEPARMS +{ + /* Returned handle of opened object. */ + SHFLHANDLE Handle; + + /* Returned result of the operation */ + SHFLCREATERESULT Result; + + /* SHFL_CF_* */ + uint32_t CreateFlags; + + /* Attributes of object to create and + * returned actual attributes of opened/created object. + */ + SHFLFSOBJINFO Info; + +} SHFLCREATEPARMS; +#pragma pack() + +typedef SHFLCREATEPARMS *PSHFLCREATEPARMS; + + +/** Shared Folders mappings. + * @{ + */ + +/** The mapping has been added since last query. */ +#define SHFL_MS_NEW (1) +/** The mapping has been deleted since last query. */ +#define SHFL_MS_DELETED (2) + +typedef struct _SHFLMAPPING +{ + /** Mapping status. */ + uint32_t u32Status; + /** Root handle. */ + SHFLROOT root; +} SHFLMAPPING; +/** Pointer to a SHFLMAPPING structure. */ +typedef SHFLMAPPING *PSHFLMAPPING; + +/** @} */ + +/** Shared Folder directory information + * @{ + */ + +typedef struct _SHFLDIRINFO +{ + /** Full information about the object. */ + SHFLFSOBJINFO Info; + /** The length of the short field (number of RTUTF16 chars). + * It is 16-bit for reasons of alignment. */ + uint16_t cucShortName; + /** The short name for 8.3 compatibility. + * Empty string if not available. + */ + RTUTF16 uszShortName[14]; + /** @todo malc, a description, please. */ + SHFLSTRING name; +} SHFLDIRINFO, *PSHFLDIRINFO; + + +/** + * Shared folder filesystem properties. + */ +typedef struct SHFLFSPROPERTIES +{ + /** The maximum size of a filesystem object name. + * This does not include the '\\0'. */ + uint32_t cbMaxComponent; + + /** True if the filesystem is remote. + * False if the filesystem is local. */ + bool fRemote; + + /** True if the filesystem is case sensitive. + * False if the filesystem is case insensitive. */ + bool fCaseSensitive; + + /** True if the filesystem is mounted read only. + * False if the filesystem is mounted read write. */ + bool fReadOnly; + + /** True if the filesystem can encode unicode object names. + * False if it can't. */ + bool fSupportsUnicode; + + /** True if the filesystem is compresses. + * False if it isn't or we don't know. */ + bool fCompressed; + + /** True if the filesystem compresses of individual files. + * False if it doesn't or we don't know. */ + bool fFileCompression; + + /** @todo more? */ +} SHFLFSPROPERTIES; +AssertCompileSize(SHFLFSPROPERTIES, 12); +/** Pointer to a shared folder filesystem properties structure. */ +typedef SHFLFSPROPERTIES *PSHFLFSPROPERTIES; +/** Pointer to a const shared folder filesystem properties structure. */ +typedef SHFLFSPROPERTIES const *PCSHFLFSPROPERTIES; + + +/** + * Copy file system properties from IPRT to shared folder format. + * + * @param pDst The shared folder structure. + * @param pSrc The IPRT structure. + */ +DECLINLINE(void) vbfsCopyFsPropertiesFromIprt(PSHFLFSPROPERTIES pDst, PCRTFSPROPERTIES pSrc) +{ + RT_ZERO(*pDst); /* zap the implicit padding. */ + pDst->cbMaxComponent = pSrc->cbMaxComponent; + pDst->fRemote = pSrc->fRemote; + pDst->fCaseSensitive = pSrc->fCaseSensitive; + pDst->fReadOnly = pSrc->fReadOnly; + pDst->fSupportsUnicode = pSrc->fSupportsUnicode; + pDst->fCompressed = pSrc->fCompressed; + pDst->fFileCompression = pSrc->fFileCompression; +} + + +typedef struct _SHFLVOLINFO +{ + RTFOFF ullTotalAllocationBytes; + RTFOFF ullAvailableAllocationBytes; + uint32_t ulBytesPerAllocationUnit; + uint32_t ulBytesPerSector; + uint32_t ulSerial; + SHFLFSPROPERTIES fsProperties; +} SHFLVOLINFO, *PSHFLVOLINFO; + +/** @} */ + +/** Function parameter structures. + * @{ + */ + +/** + * SHFL_FN_QUERY_MAPPINGS + */ +/** Validation mask. Needs to be adjusted + * whenever a new SHFL_MF_ flag is added. */ +#define SHFL_MF_MASK (0x00000011) +/** UC2 enconded strings. */ +#define SHFL_MF_UCS2 (0x00000000) +/** Guest uses UTF8 strings, if not set then the strings are unicode (UCS2). */ +#define SHFL_MF_UTF8 (0x00000001) +/** Just handle the auto-mounted folders. */ +#define SHFL_MF_AUTOMOUNT (0x00000010) + +/** Type of guest system. For future system dependent features. */ +#define SHFL_MF_SYSTEM_MASK (0x0000FF00) +#define SHFL_MF_SYSTEM_NONE (0x00000000) +#define SHFL_MF_SYSTEM_WINDOWS (0x00000100) +#define SHFL_MF_SYSTEM_LINUX (0x00000200) + +/** Parameters structure. */ +typedef struct _VBoxSFQueryMappings +{ + VBoxGuestHGCMCallInfo callInfo; + + /** 32bit, in: + * Flags describing various client needs. + */ + HGCMFunctionParameter flags; + + /** 32bit, in/out: + * Number of mappings the client expects. + * This is the number of elements in the + * mappings array. + */ + HGCMFunctionParameter numberOfMappings; + + /** pointer, in/out: + * Points to array of SHFLMAPPING structures. + */ + HGCMFunctionParameter mappings; + +} VBoxSFQueryMappings; + +/** Number of parameters */ +#define SHFL_CPARMS_QUERY_MAPPINGS (3) + + + +/** + * SHFL_FN_QUERY_MAP_NAME + */ + +/** Parameters structure. */ +typedef struct _VBoxSFQueryMapName +{ + VBoxGuestHGCMCallInfo callInfo; + + /** 32bit, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in/out: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter name; + +} VBoxSFQueryMapName; + +/** Number of parameters */ +#define SHFL_CPARMS_QUERY_MAP_NAME (2) + +/** + * SHFL_FN_MAP_FOLDER_OLD + */ + +/** Parameters structure. */ +typedef struct _VBoxSFMapFolder_Old +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: RTUTF16 + * Path delimiter + */ + HGCMFunctionParameter delimiter; + +} VBoxSFMapFolder_Old; + +/** Number of parameters */ +#define SHFL_CPARMS_MAP_FOLDER_OLD (3) + +/** + * SHFL_FN_MAP_FOLDER + */ + +/** Parameters structure. */ +typedef struct _VBoxSFMapFolder +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: RTUTF16 + * Path delimiter + */ + HGCMFunctionParameter delimiter; + + /** pointer, in: SHFLROOT + * Case senstive flag + */ + HGCMFunctionParameter fCaseSensitive; + +} VBoxSFMapFolder; + +/** Number of parameters */ +#define SHFL_CPARMS_MAP_FOLDER (4) + +/** + * SHFL_FN_UNMAP_FOLDER + */ + +/** Parameters structure. */ +typedef struct _VBoxSFUnmapFolder +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + +} VBoxSFUnmapFolder; + +/** Number of parameters */ +#define SHFL_CPARMS_UNMAP_FOLDER (1) + + +/** + * SHFL_FN_CREATE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFCreate +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, in/out: + * Points to SHFLCREATEPARMS buffer. + */ + HGCMFunctionParameter parms; + +} VBoxSFCreate; + +/** Number of parameters */ +#define SHFL_CPARMS_CREATE (3) + + +/** + * SHFL_FN_CLOSE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFClose +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + + /** value64, in: + * SHFLHANDLE of object to close. + */ + HGCMFunctionParameter handle; + +} VBoxSFClose; + +/** Number of parameters */ +#define SHFL_CPARMS_CLOSE (2) + + +/** + * SHFL_FN_READ + */ + +/** Parameters structure. */ +typedef struct _VBoxSFRead +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to read from. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Offset to read from. + */ + HGCMFunctionParameter offset; + + /** value64, in/out: + * Bytes to read/How many were read. + */ + HGCMFunctionParameter cb; + + /** pointer, out: + * Buffer to place data to. + */ + HGCMFunctionParameter buffer; + +} VBoxSFRead; + +/** Number of parameters */ +#define SHFL_CPARMS_READ (5) + + + +/** + * SHFL_FN_WRITE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFWrite +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to write to. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Offset to write to. + */ + HGCMFunctionParameter offset; + + /** value64, in/out: + * Bytes to write/How many were written. + */ + HGCMFunctionParameter cb; + + /** pointer, in: + * Data to write. + */ + HGCMFunctionParameter buffer; + +} VBoxSFWrite; + +/** Number of parameters */ +#define SHFL_CPARMS_WRITE (5) + + + +/** + * SHFL_FN_LOCK + */ + +/** Lock owner is the HGCM client. */ + +/** Lock mode bit mask. */ +#define SHFL_LOCK_MODE_MASK (0x3) +/** Cancel lock on the given range. */ +#define SHFL_LOCK_CANCEL (0x0) +/** Acquire read only lock. Prevent write to the range. */ +#define SHFL_LOCK_SHARED (0x1) +/** Acquire write lock. Prevent both write and read to the range. */ +#define SHFL_LOCK_EXCLUSIVE (0x2) + +/** Do not wait for lock if it can not be acquired at the time. */ +#define SHFL_LOCK_NOWAIT (0x0) +/** Wait and acquire lock. */ +#define SHFL_LOCK_WAIT (0x4) + +/** Lock the specified range. */ +#define SHFL_LOCK_PARTIAL (0x0) +/** Lock entire object. */ +#define SHFL_LOCK_ENTIRE (0x8) + +/** Parameters structure. */ +typedef struct _VBoxSFLock +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be locked. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Starting offset of lock range. + */ + HGCMFunctionParameter offset; + + /** value64, in: + * Length of range. + */ + HGCMFunctionParameter length; + + /** value32, in: + * Lock flags SHFL_LOCK_*. + */ + HGCMFunctionParameter flags; + +} VBoxSFLock; + +/** Number of parameters */ +#define SHFL_CPARMS_LOCK (5) + + + +/** + * SHFL_FN_FLUSH + */ + +/** Parameters structure. */ +typedef struct _VBoxSFFlush +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be locked. + */ + HGCMFunctionParameter handle; + +} VBoxSFFlush; + +/** Number of parameters */ +#define SHFL_CPARMS_FLUSH (2) + +/** + * SHFL_FN_LIST + */ + +/** Listing information includes variable length RTDIRENTRY[EX] structures. */ + +/** @todo might be necessary for future. */ +#define SHFL_LIST_NONE 0 +#define SHFL_LIST_RETURN_ONE 1 + +/** Parameters structure. */ +typedef struct _VBoxSFList +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be listed. + */ + HGCMFunctionParameter handle; + + /** value32, in: + * List flags SHFL_LIST_*. + */ + HGCMFunctionParameter flags; + + /** value32, in/out: + * Bytes to be used for listing information/How many bytes were used. + */ + HGCMFunctionParameter cb; + + /** pointer, in/optional + * Points to SHFLSTRING buffer that specifies a search path. + */ + HGCMFunctionParameter path; + + /** pointer, out: + * Buffer to place listing information to. (SHFLDIRINFO) + */ + HGCMFunctionParameter buffer; + + /** value32, in/out: + * Indicates a key where the listing must be resumed. + * in: 0 means start from begin of object. + * out: 0 means listing completed. + */ + HGCMFunctionParameter resumePoint; + + /** pointer, out: + * Number of files returned + */ + HGCMFunctionParameter cFiles; + +} VBoxSFList; + +/** Number of parameters */ +#define SHFL_CPARMS_LIST (8) + + + +/** + * SHFL_FN_READLINK + */ + +/** Parameters structure. */ +typedef struct _VBoxSFReadLink +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: + * Buffer to place data to. + */ + HGCMFunctionParameter buffer; + +} VBoxSFReadLink; + +/** Number of parameters */ +#define SHFL_CPARMS_READLINK (3) + + + +/** + * SHFL_FN_INFORMATION + */ + +/** Mask of Set/Get bit. */ +#define SHFL_INFO_MODE_MASK (0x1) +/** Get information */ +#define SHFL_INFO_GET (0x0) +/** Set information */ +#define SHFL_INFO_SET (0x1) + +/** Get name of the object. */ +#define SHFL_INFO_NAME (0x2) +/** Set size of object (extend/trucate); only applies to file objects */ +#define SHFL_INFO_SIZE (0x4) +/** Get/Set file object info. */ +#define SHFL_INFO_FILE (0x8) +/** Get volume information. */ +#define SHFL_INFO_VOLUME (0x10) + +/** @todo different file info structures */ + + +/** Parameters structure. */ +typedef struct _VBoxSFInformation +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be listed. + */ + HGCMFunctionParameter handle; + + /** value32, in: + * SHFL_INFO_* + */ + HGCMFunctionParameter flags; + + /** value32, in/out: + * Bytes to be used for information/How many bytes were used. + */ + HGCMFunctionParameter cb; + + /** pointer, in/out: + * Information to be set/get (SHFLFSOBJINFO or SHFLSTRING). Do not forget + * to set the SHFLFSOBJINFO::Attr::enmAdditional for Get operation as well. + */ + HGCMFunctionParameter info; + +} VBoxSFInformation; + +/** Number of parameters */ +#define SHFL_CPARMS_INFORMATION (5) + + +/** + * SHFL_FN_REMOVE + */ + +#define SHFL_REMOVE_FILE (0x1) +#define SHFL_REMOVE_DIR (0x2) +#define SHFL_REMOVE_SYMLINK (0x4) + +/** Parameters structure. */ +typedef struct _VBoxSFRemove +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** value32, in: + * remove flags (file/directory) + */ + HGCMFunctionParameter flags; + +} VBoxSFRemove; + +#define SHFL_CPARMS_REMOVE (3) + + +/** + * SHFL_FN_RENAME + */ + +#define SHFL_RENAME_FILE (0x1) +#define SHFL_RENAME_DIR (0x2) +#define SHFL_RENAME_REPLACE_IF_EXISTS (0x4) + +/** Parameters structure. */ +typedef struct _VBoxSFRename +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING src. + */ + HGCMFunctionParameter src; + + /** pointer, in: + * Points to SHFLSTRING dest. + */ + HGCMFunctionParameter dest; + + /** value32, in: + * rename flags (file/directory) + */ + HGCMFunctionParameter flags; + +} VBoxSFRename; + +#define SHFL_CPARMS_RENAME (4) + + +/** + * SHFL_FN_SYMLINK + */ + +/** Parameters structure. */ +typedef struct _VBoxSFSymlink +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING of path for the new symlink. + */ + HGCMFunctionParameter newPath; + + /** pointer, in: + * Points to SHFLSTRING of destination for symlink. + */ + HGCMFunctionParameter oldPath; + + /** pointer, out: + * Information about created symlink. + */ + HGCMFunctionParameter info; + +} VBoxSFSymlink; + +#define SHFL_CPARMS_SYMLINK (4) + + + +/** + * SHFL_FN_ADD_MAPPING + * Host call, no guest structure is used. + */ + +/** mapping is writable */ +#define SHFL_ADD_MAPPING_F_WRITABLE (RT_BIT_32(0)) +/** mapping is automounted by the guest */ +#define SHFL_ADD_MAPPING_F_AUTOMOUNT (RT_BIT_32(1)) +/** allow the guest to create symlinks */ +#define SHFL_ADD_MAPPING_F_CREATE_SYMLINKS (RT_BIT_32(2)) +/** mapping is actually missing on the host */ +#define SHFL_ADD_MAPPING_F_MISSING (RT_BIT_32(3)) + +#define SHFL_CPARMS_ADD_MAPPING (3) + +/** + * SHFL_FN_REMOVE_MAPPING + * Host call, no guest structure is used. + */ + +#define SHFL_CPARMS_REMOVE_MAPPING (1) + + +/** + * SHFL_FN_SET_STATUS_LED + * Host call, no guest structure is used. + */ + +#define SHFL_CPARMS_SET_STATUS_LED (1) + +/** @} */ + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/types.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/types.h @@ -0,0 +1,1073 @@ +/** @file + * VirtualBox - Types. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_types_h +#define ___VBox_types_h + +#include +#include + + +/** @defgroup grp_types VBox Basic Types + * @{ + */ + + +/** @defgroup grp_types_both Common Guest and Host Context Basic Types + * @{ + */ + + +/** @defgroup grp_types_hc Host Context Basic Types + * @{ + */ + +/** @} */ + + +/** @defgroup grp_types_gc Guest Context Basic Types + * @{ + */ + +/** @} */ + + +/** Pointer to per support driver session data. + * (The data is a R0 entity and private to the the R0 SUP part. All + * other should consider this a sort of handle.) */ +typedef R0PTRTYPE(struct SUPDRVSESSION *) PSUPDRVSESSION; + +/** Event semaphore handle. Ring-0 / ring-3. */ +typedef R0PTRTYPE(struct SUPSEMEVENTHANDLE *) SUPSEMEVENT; +/** Pointer to an event semaphore handle. */ +typedef SUPSEMEVENT *PSUPSEMEVENT; +/** Nil event semaphore handle. */ +#define NIL_SUPSEMEVENT ((SUPSEMEVENT)0) + +/** Multiple release event semaphore handle. Ring-0 / ring-3. */ +typedef R0PTRTYPE(struct SUPSEMEVENTMULTIHANDLE *) SUPSEMEVENTMULTI; +/** Pointer to an multiple release event semaphore handle. */ +typedef SUPSEMEVENTMULTI *PSUPSEMEVENTMULTI; +/** Nil multiple release event semaphore handle. */ +#define NIL_SUPSEMEVENTMULTI ((SUPSEMEVENTMULTI)0) + + +/** Pointer to a VM. */ +typedef struct VM *PVM; +/** Pointer to a VM - Ring-0 Ptr. */ +typedef R0PTRTYPE(struct VM *) PVMR0; +/** Pointer to a VM - Ring-3 Ptr. */ +typedef R3PTRTYPE(struct VM *) PVMR3; +/** Pointer to a VM - RC Ptr. */ +typedef RCPTRTYPE(struct VM *) PVMRC; + +/** Pointer to a virtual CPU structure. */ +typedef struct VMCPU * PVMCPU; +/** Pointer to a virtual CPU structure - Ring-3 Ptr. */ +typedef R3PTRTYPE(struct VMCPU *) PVMCPUR3; +/** Pointer to a virtual CPU structure - Ring-0 Ptr. */ +typedef R0PTRTYPE(struct VMCPU *) PVMCPUR0; +/** Pointer to a virtual CPU structure - RC Ptr. */ +typedef RCPTRTYPE(struct VMCPU *) PVMCPURC; + +/** Pointer to a ring-0 (global) VM structure. */ +typedef R0PTRTYPE(struct GVM *) PGVM; + +/** Pointer to a ring-3 (user mode) VM structure. */ +typedef R3PTRTYPE(struct UVM *) PUVM; + +/** Pointer to a ring-3 (user mode) VMCPU structure. */ +typedef R3PTRTYPE(struct UVMCPU *) PUVMCPU; + +/** Virtual CPU ID. */ +typedef uint32_t VMCPUID; +/** Pointer to a virtual CPU ID. */ +typedef VMCPUID *PVMCPUID; +/** @name Special CPU ID values. + * Most of these are for request scheduling. + * + * @{ */ +/** All virtual CPUs. */ +#define VMCPUID_ALL UINT32_C(0xfffffff2) +/** All virtual CPUs, descending order. */ +#define VMCPUID_ALL_REVERSE UINT32_C(0xfffffff3) +/** Any virtual CPU. + * Intended for scheduling a VM request or some other task. */ +#define VMCPUID_ANY UINT32_C(0xfffffff4) +/** Any virtual CPU; always queue for future execution. + * Intended for scheduling a VM request or some other task. */ +#define VMCPUID_ANY_QUEUE UINT32_C(0xfffffff5) +/** The NIL value. */ +#define NIL_VMCPUID UINT32_C(0xfffffffd) +/** @} */ + +/** + * Virtual CPU set. + */ +typedef struct VMCPUSET +{ + /** The bitmap data. */ + uint32_t au32Bitmap[8 /*256/32*/]; +} VMCPUSET; +/** Pointer to a Virtual CPU set. */ +typedef VMCPUSET *PVMCPUSET; +/** Pointer to a const Virtual CPU set. */ +typedef VMCPUSET const *PCVMCPUSET; + + +/** + * VM State + */ +typedef enum VMSTATE +{ + /** The VM is being created. */ + VMSTATE_CREATING = 0, + /** The VM is created. */ + VMSTATE_CREATED, + /** The VM state is being loaded from file. */ + VMSTATE_LOADING, + /** The VM is being powered on */ + VMSTATE_POWERING_ON, + /** The VM is being resumed. */ + VMSTATE_RESUMING, + /** The VM is runnning. */ + VMSTATE_RUNNING, + /** Live save: The VM is running and the state is being saved. */ + VMSTATE_RUNNING_LS, + /** Fault Tolerance: The VM is running and the state is being synced. */ + VMSTATE_RUNNING_FT, + /** The VM is being reset. */ + VMSTATE_RESETTING, + /** Live save: The VM is being reset and immediately suspended. */ + VMSTATE_RESETTING_LS, + /** The VM is being suspended. */ + VMSTATE_SUSPENDING, + /** Live save: The VM is being suspended during a live save operation, either as + * part of the normal flow or VMR3Reset. */ + VMSTATE_SUSPENDING_LS, + /** Live save: The VM is being suspended by VMR3Suspend during live save. */ + VMSTATE_SUSPENDING_EXT_LS, + /** The VM is suspended. */ + VMSTATE_SUSPENDED, + /** Live save: The VM has been suspended and is waiting for the live save + * operation to move on. */ + VMSTATE_SUSPENDED_LS, + /** Live save: The VM has been suspended by VMR3Suspend during a live save. */ + VMSTATE_SUSPENDED_EXT_LS, + /** The VM is suspended and its state is being saved by EMT(0). (See SSM) */ + VMSTATE_SAVING, + /** The VM is being debugged. (See DBGF.) */ + VMSTATE_DEBUGGING, + /** Live save: The VM is being debugged while the live phase is going on. */ + VMSTATE_DEBUGGING_LS, + /** The VM is being powered off. */ + VMSTATE_POWERING_OFF, + /** Live save: The VM is being powered off and the save cancelled. */ + VMSTATE_POWERING_OFF_LS, + /** The VM is switched off, awaiting destruction. */ + VMSTATE_OFF, + /** Live save: Waiting for cancellation and transition to VMSTATE_OFF. */ + VMSTATE_OFF_LS, + /** The VM is powered off because of a fatal error. */ + VMSTATE_FATAL_ERROR, + /** Live save: Waiting for cancellation and transition to FatalError. */ + VMSTATE_FATAL_ERROR_LS, + /** The VM is in guru meditation over a fatal failure. */ + VMSTATE_GURU_MEDITATION, + /** Live save: Waiting for cancellation and transition to GuruMeditation. */ + VMSTATE_GURU_MEDITATION_LS, + /** The VM is screwed because of a failed state loading. */ + VMSTATE_LOAD_FAILURE, + /** The VM is being destroyed. */ + VMSTATE_DESTROYING, + /** Terminated. */ + VMSTATE_TERMINATED, + /** hack forcing the size of the enum to 32-bits. */ + VMSTATE_MAKE_32BIT_HACK = 0x7fffffff +} VMSTATE; + +/** @def VBOXSTRICTRC_STRICT_ENABLED + * Indicates that VBOXSTRICTRC is in strict mode. + */ +#if defined(__cplusplus) \ + && ARCH_BITS == 64 /* cdecl requires classes and structs as hidden params. */ \ + && !defined(_MSC_VER) /* trouble similar to 32-bit gcc. */ \ + && ( defined(RT_STRICT) \ + || defined(VBOX_STRICT) \ + || defined(DEBUG) \ + || defined(DOXYGEN_RUNNING) ) +# define VBOXSTRICTRC_STRICT_ENABLED 1 +#endif + +/** We need RTERR_STRICT_RC. */ +#if defined(VBOXSTRICTRC_STRICT_ENABLED) && !defined(RTERR_STRICT_RC) +# define RTERR_STRICT_RC 1 +#endif + +/** + * Strict VirtualBox status code. + * + * This is normally an 32-bit integer and the only purpose of the type is to + * highlight the special handling that is required. But in strict build it is a + * class that causes compilation and runtime errors for some of the incorrect + * handling. + */ +#ifdef VBOXSTRICTRC_STRICT_ENABLED +struct VBOXSTRICTRC +{ +protected: + /** The status code. */ + int32_t m_rc; + +public: + /** Default constructor setting the status to VERR_IPE_UNINITIALIZED_STATUS. */ + VBOXSTRICTRC() +#ifdef VERR_IPE_UNINITIALIZED_STATUS + : m_rc(VERR_IPE_UNINITIALIZED_STATUS) +#else + : m_rc(-233 /*VERR_IPE_UNINITIALIZED_STATUS*/) +#endif + { + } + + /** Constructor for normal integer status codes. */ + VBOXSTRICTRC(int32_t const rc) + : m_rc(rc) + { + } + + /** Getter that VBOXSTRICTRC_VAL can use. */ + int32_t getValue() const { return m_rc; } + + /** @name Comparison operators + * @{ */ + bool operator==(int32_t rc) const { return m_rc == rc; } + bool operator!=(int32_t rc) const { return m_rc != rc; } + bool operator<=(int32_t rc) const { return m_rc <= rc; } + bool operator>=(int32_t rc) const { return m_rc >= rc; } + bool operator<(int32_t rc) const { return m_rc < rc; } + bool operator>(int32_t rc) const { return m_rc > rc; } + + bool operator==(const VBOXSTRICTRC &rRc) const { return m_rc == rRc.m_rc; } + bool operator!=(const VBOXSTRICTRC &rRc) const { return m_rc != rRc.m_rc; } + bool operator<=(const VBOXSTRICTRC &rRc) const { return m_rc <= rRc.m_rc; } + bool operator>=(const VBOXSTRICTRC &rRc) const { return m_rc >= rRc.m_rc; } + bool operator<(const VBOXSTRICTRC &rRc) const { return m_rc < rRc.m_rc; } + bool operator>(const VBOXSTRICTRC &rRc) const { return m_rc > rRc.m_rc; } + /** @} */ + + /** Special automatic cast for RT_SUCCESS_NP. */ + operator RTErrStrictType2() const { return RTErrStrictType2(m_rc); } + +private: + /** @name Constructors that will prevent some of the bad types. + * @{ */ + VBOXSTRICTRC(uint8_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint16_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint32_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint64_t rc) : m_rc(-999) { NOREF(rc); } + + VBOXSTRICTRC(int8_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(int16_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(int64_t rc) : m_rc(-999) { NOREF(rc); } + /** @} */ +}; +# ifdef _MSC_VER +# pragma warning(disable:4190) +# endif +#else +typedef int32_t VBOXSTRICTRC; +#endif + +/** @def VBOXSTRICTRC_VAL + * Explicit getter. + * @param rcStrict The strict VirtualBox status code. + */ +#ifdef VBOXSTRICTRC_STRICT_ENABLED +# define VBOXSTRICTRC_VAL(rcStrict) ( (rcStrict).getValue() ) +#else +# define VBOXSTRICTRC_VAL(rcStrict) (rcStrict) +#endif + +/** @def VBOXSTRICTRC_TODO + * Returns that needs dealing with. + * @param rcStrict The strict VirtualBox status code. + */ +#define VBOXSTRICTRC_TODO(rcStrict) VBOXSTRICTRC_VAL(rcStrict) + + +/** Pointer to a PDM Base Interface. */ +typedef struct PDMIBASE *PPDMIBASE; +/** Pointer to a pointer to a PDM Base Interface. */ +typedef PPDMIBASE *PPPDMIBASE; + +/** Pointer to a PDM Device Instance. */ +typedef struct PDMDEVINS *PPDMDEVINS; +/** Pointer to a pointer to a PDM Device Instance. */ +typedef PPDMDEVINS *PPPDMDEVINS; +/** R3 pointer to a PDM Device Instance. */ +typedef R3PTRTYPE(PPDMDEVINS) PPDMDEVINSR3; +/** R0 pointer to a PDM Device Instance. */ +typedef R0PTRTYPE(PPDMDEVINS) PPDMDEVINSR0; +/** RC pointer to a PDM Device Instance. */ +typedef RCPTRTYPE(PPDMDEVINS) PPDMDEVINSRC; + +/** Pointer to a PDM USB Device Instance. */ +typedef struct PDMUSBINS *PPDMUSBINS; +/** Pointer to a pointer to a PDM USB Device Instance. */ +typedef PPDMUSBINS *PPPDMUSBINS; + +/** Pointer to a PDM Driver Instance. */ +typedef struct PDMDRVINS *PPDMDRVINS; +/** Pointer to a pointer to a PDM Driver Instance. */ +typedef PPDMDRVINS *PPPDMDRVINS; +/** R3 pointer to a PDM Driver Instance. */ +typedef R3PTRTYPE(PPDMDRVINS) PPDMDRVINSR3; +/** R0 pointer to a PDM Driver Instance. */ +typedef R0PTRTYPE(PPDMDRVINS) PPDMDRVINSR0; +/** RC pointer to a PDM Driver Instance. */ +typedef RCPTRTYPE(PPDMDRVINS) PPDMDRVINSRC; + +/** Pointer to a PDM Service Instance. */ +typedef struct PDMSRVINS *PPDMSRVINS; +/** Pointer to a pointer to a PDM Service Instance. */ +typedef PPDMSRVINS *PPPDMSRVINS; + +/** Pointer to a PDM critical section. */ +typedef union PDMCRITSECT *PPDMCRITSECT; +/** Pointer to a const PDM critical section. */ +typedef const union PDMCRITSECT *PCPDMCRITSECT; + +/** Pointer to a PDM read/write critical section. */ +typedef union PDMCRITSECTRW *PPDMCRITSECTRW; +/** Pointer to a const PDM read/write critical section. */ +typedef union PDMCRITSECTRW const *PCPDMCRITSECTRW; + +/** R3 pointer to a timer. */ +typedef R3PTRTYPE(struct TMTIMER *) PTMTIMERR3; +/** Pointer to a R3 pointer to a timer. */ +typedef PTMTIMERR3 *PPTMTIMERR3; + +/** R0 pointer to a timer. */ +typedef R0PTRTYPE(struct TMTIMER *) PTMTIMERR0; +/** Pointer to a R3 pointer to a timer. */ +typedef PTMTIMERR0 *PPTMTIMERR0; + +/** RC pointer to a timer. */ +typedef RCPTRTYPE(struct TMTIMER *) PTMTIMERRC; +/** Pointer to a RC pointer to a timer. */ +typedef PTMTIMERRC *PPTMTIMERRC; + +/** Pointer to a timer. */ +typedef CTX_SUFF(PTMTIMER) PTMTIMER; +/** Pointer to a pointer to a timer. */ +typedef PTMTIMER *PPTMTIMER; + +/** SSM Operation handle. */ +typedef struct SSMHANDLE *PSSMHANDLE; +/** Pointer to a const SSM stream method table. */ +typedef struct SSMSTRMOPS const *PCSSMSTRMOPS; + +/** Pointer to a CPUMCTX. */ +typedef struct CPUMCTX *PCPUMCTX; +/** Pointer to a const CPUMCTX. */ +typedef const struct CPUMCTX *PCCPUMCTX; + +/** Pointer to a CPU context core. */ +typedef struct CPUMCTXCORE *PCPUMCTXCORE; +/** Pointer to a const CPU context core. */ +typedef const struct CPUMCTXCORE *PCCPUMCTXCORE; + +/** Pointer to a selector register. */ +typedef struct CPUMSELREG *PCPUMSELREG; +/** Pointer to a const selector register. */ +typedef const struct CPUMSELREG *PCCPUMSELREG; + +/** Pointer to selector hidden registers. + * @deprecated Replaced by PCPUMSELREG */ +typedef struct CPUMSELREG *PCPUMSELREGHID; +/** Pointer to const selector hidden registers. + * @deprecated Replaced by PCCPUMSELREG */ +typedef const struct CPUMSELREG *PCCPUMSELREGHID; + +/** @} */ + + +/** @defgroup grp_types_idt Interrupt Descriptor Table Entry. + * @todo This all belongs in x86.h! + * @{ */ + +/** @todo VBOXIDT -> VBOXDESCIDT, skip the complex variations. We'll never use them. */ + +/** IDT Entry, Task Gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_TASKGATE +{ + /** Reserved. */ + unsigned u16Reserved1 : 16; + /** Task Segment Selector. */ + unsigned u16TSS : 16; + /** More reserved. */ + unsigned u8Reserved2 : 8; + /** Fixed value bit 0 - Set to 1. */ + unsigned u1Fixed0 : 1; + /** Busy bit. */ + unsigned u1Busy : 1; + /** Fixed value bit 2 - Set to 1. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** Reserved. */ + unsigned u16Reserved3 : 16; +} VBOXIDTE_TASKGATE; +#pragma pack() +/** Pointer to IDT Entry, Task gate view. */ +typedef VBOXIDTE_TASKGATE *PVBOXIDTE_TASKGATE; + + +/** IDT Entry, Intertupt gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_INTERRUPTGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved2 : 5; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 1. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed6 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_INTERRUPTGATE; +#pragma pack() +/** Pointer to IDT Entry, Interrupt gate view. */ +typedef VBOXIDTE_INTERRUPTGATE *PVBOXIDTE_INTERRUPTGATE; + +/** IDT Entry, Trap Gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_TRAPGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved2 : 5; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 1. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 1. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed6 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_TRAPGATE; +#pragma pack() +/** Pointer to IDT Entry, Trap Gate view. */ +typedef VBOXIDTE_TRAPGATE *PVBOXIDTE_TRAPGATE; + +/** IDT Entry Generic view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_GENERIC +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved : 5; + /** IDT Type part one (not used for task gate). */ + unsigned u3Type1 : 3; + /** IDT Type part two. */ + unsigned u5Type2 : 5; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_GENERIC; +#pragma pack() +/** Pointer to IDT Entry Generic view. */ +typedef VBOXIDTE_GENERIC *PVBOXIDTE_GENERIC; + +/** IDT Type1 value. (Reserved for task gate!) */ +#define VBOX_IDTE_TYPE1 0 +/** IDT Type2 value - Task gate. */ +#define VBOX_IDTE_TYPE2_TASK 0x5 +/** IDT Type2 value - 16 bit interrupt gate. */ +#define VBOX_IDTE_TYPE2_INT_16 0x6 +/** IDT Type2 value - 32 bit interrupt gate. */ +#define VBOX_IDTE_TYPE2_INT_32 0xe +/** IDT Type2 value - 16 bit trap gate. */ +#define VBOX_IDTE_TYPE2_TRAP_16 0x7 +/** IDT Type2 value - 32 bit trap gate. */ +#define VBOX_IDTE_TYPE2_TRAP_32 0xf + +/** IDT Entry. */ +#pragma pack(1) /* paranoia */ +typedef union VBOXIDTE +{ + /** Task gate view. */ + VBOXIDTE_TASKGATE Task; + /** Trap gate view. */ + VBOXIDTE_TRAPGATE Trap; + /** Interrupt gate view. */ + VBOXIDTE_INTERRUPTGATE Int; + /** Generic IDT view. */ + VBOXIDTE_GENERIC Gen; + + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; + /** 64 bit unsigned integer view. */ + uint64_t au64; +} VBOXIDTE; +#pragma pack() +/** Pointer to IDT Entry. */ +typedef VBOXIDTE *PVBOXIDTE; +/** Pointer to IDT Entry. */ +typedef VBOXIDTE const *PCVBOXIDTE; + +/** IDT Entry, 64-bit mode, Intertupt gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_INTERRUPTGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Interrupt Stack Table Index. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed5 : 1; + /** Fixed value bit 6 - Set to 1. */ + unsigned u1Fixed6 : 1; + /** Fixed value bit 7 - Set to 1. */ + unsigned u1Fixed7 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed8 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_INTERRUPTGATE; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Interrupt gate view. */ +typedef VBOXIDTE64_INTERRUPTGATE *PVBOXIDTE64_INTERRUPTGATE; + +/** IDT Entry, 64-bit mode, Trap gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_TRAPGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Interrupt Stack Table Index. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Fixed value bit 6 - Set to 1. */ + unsigned u1Fixed6 : 1; + /** Fixed value bit 7 - Set to 1. */ + unsigned u1Fixed7 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed8 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_TRAPGATE; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Trap gate view. */ +typedef VBOXIDTE64_TRAPGATE *PVBOXIDTE64_TRAPGATE; + +/** IDT Entry, 64-bit mode, Generic view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_GENERIC +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** IDT Type part one (not used for task gate). */ + unsigned u3Type1 : 3; + /** IDT Type part two. */ + unsigned u5Type2 : 5; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_GENERIC; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Generic view. */ +typedef VBOXIDTE64_GENERIC *PVBOXIDTE64_GENERIC; + +/** IDT Entry, 64-bit mode. */ +#pragma pack(1) /* paranoia */ +typedef union VBOXIDTE64 +{ + /** Trap gate view. */ + VBOXIDTE64_TRAPGATE Trap; + /** Interrupt gate view. */ + VBOXIDTE64_INTERRUPTGATE Int; + /** Generic IDT view. */ + VBOXIDTE64_GENERIC Gen; + + /** 8 bit unsigned integer view. */ + uint8_t au8[16]; + /** 16 bit unsigned integer view. */ + uint16_t au16[8]; + /** 32 bit unsigned integer view. */ + uint32_t au32[4]; + /** 64 bit unsigned integer view. */ + uint64_t au64[2]; +} VBOXIDTE64; +#pragma pack() +/** Pointer to IDT Entry. */ +typedef VBOXIDTE64 *PVBOXIDTE64; +/** Pointer to IDT Entry. */ +typedef VBOXIDTE64 const *PCVBOXIDTE64; + +#pragma pack(1) +/** IDTR */ +typedef struct VBOXIDTR +{ + /** Size of the IDT. */ + uint16_t cbIdt; + /** Address of the IDT. */ + uint64_t pIdt; +} VBOXIDTR, *PVBOXIDTR; +#pragma pack() + +/** @} */ + + +/** @def VBOXIDTE_OFFSET + * Return the offset of an IDT entry. + */ +#define VBOXIDTE_OFFSET(desc) \ + ( ((uint32_t)((desc).Gen.u16OffsetHigh) << 16) \ + | ( (desc).Gen.u16OffsetLow ) ) + +/** @def VBOXIDTE64_OFFSET + * Return the offset of an IDT entry. + */ +#define VBOXIDTE64_OFFSET(desc) \ + ( ((uint64_t)((desc).Gen.u32OffsetHigh64) << 32) \ + | ((uint32_t)((desc).Gen.u16OffsetHigh) << 16) \ + | ( (desc).Gen.u16OffsetLow ) ) + +#pragma pack(1) +/** GDTR */ +typedef struct VBOXGDTR +{ + /** Size of the GDT. */ + uint16_t cbGdt; + /** Address of the GDT. */ + uint64_t pGdt; +} VBOXGDTR; +#pragma pack() +/** Pointer to GDTR. */ +typedef VBOXGDTR *PVBOXGDTR; + +/** @} */ + + +/** + * 32-bit Task Segment used in raw mode. + * @todo Move this to SELM! Use X86TSS32 instead. + */ +#pragma pack(1) +typedef struct VBOXTSS +{ + /** 0x00 - Back link to previous task. (static) */ + RTSEL selPrev; + uint16_t padding1; + /** 0x04 - Ring-0 stack pointer. (static) */ + uint32_t esp0; + /** 0x08 - Ring-0 stack segment. (static) */ + RTSEL ss0; + uint16_t padding_ss0; + /** 0x0c - Ring-1 stack pointer. (static) */ + uint32_t esp1; + /** 0x10 - Ring-1 stack segment. (static) */ + RTSEL ss1; + uint16_t padding_ss1; + /** 0x14 - Ring-2 stack pointer. (static) */ + uint32_t esp2; + /** 0x18 - Ring-2 stack segment. (static) */ + RTSEL ss2; + uint16_t padding_ss2; + /** 0x1c - Page directory for the task. (static) */ + uint32_t cr3; + /** 0x20 - EIP before task switch. */ + uint32_t eip; + /** 0x24 - EFLAGS before task switch. */ + uint32_t eflags; + /** 0x28 - EAX before task switch. */ + uint32_t eax; + /** 0x2c - ECX before task switch. */ + uint32_t ecx; + /** 0x30 - EDX before task switch. */ + uint32_t edx; + /** 0x34 - EBX before task switch. */ + uint32_t ebx; + /** 0x38 - ESP before task switch. */ + uint32_t esp; + /** 0x3c - EBP before task switch. */ + uint32_t ebp; + /** 0x40 - ESI before task switch. */ + uint32_t esi; + /** 0x44 - EDI before task switch. */ + uint32_t edi; + /** 0x48 - ES before task switch. */ + RTSEL es; + uint16_t padding_es; + /** 0x4c - CS before task switch. */ + RTSEL cs; + uint16_t padding_cs; + /** 0x50 - SS before task switch. */ + RTSEL ss; + uint16_t padding_ss; + /** 0x54 - DS before task switch. */ + RTSEL ds; + uint16_t padding_ds; + /** 0x58 - FS before task switch. */ + RTSEL fs; + uint16_t padding_fs; + /** 0x5c - GS before task switch. */ + RTSEL gs; + uint16_t padding_gs; + /** 0x60 - LDTR before task switch. */ + RTSEL selLdt; + uint16_t padding_ldt; + /** 0x64 - Debug trap flag */ + uint16_t fDebugTrap; + /** 0x66 - Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 0x68 - 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} VBOXTSS; +#pragma pack() +/** Pointer to task segment. */ +typedef VBOXTSS *PVBOXTSS; +/** Pointer to const task segment. */ +typedef const VBOXTSS *PCVBOXTSS; + + +/** Pointer to a callback method table provided by the VM API user. */ +typedef struct VMM2USERMETHODS const *PCVMM2USERMETHODS; + + +/** + * Data transport buffer (scatter/gather) + */ +typedef struct PDMDATASEG +{ + /** Length of buffer in entry. */ + size_t cbSeg; + /** Pointer to the start of the buffer. */ + void *pvSeg; +} PDMDATASEG; +/** Pointer to a data transport segment. */ +typedef PDMDATASEG *PPDMDATASEG; +/** Pointer to a const data transport segment. */ +typedef PDMDATASEG const *PCPDMDATASEG; + + +/** + * Forms of generic segment offloading. + */ +typedef enum PDMNETWORKGSOTYPE +{ + /** Invalid zero value. */ + PDMNETWORKGSOTYPE_INVALID = 0, + /** TCP/IPv4 - no CWR/ECE encoding. */ + PDMNETWORKGSOTYPE_IPV4_TCP, + /** TCP/IPv6 - no CWR/ECE encoding. */ + PDMNETWORKGSOTYPE_IPV6_TCP, + /** UDP/IPv4. */ + PDMNETWORKGSOTYPE_IPV4_UDP, + /** UDP/IPv6. */ + PDMNETWORKGSOTYPE_IPV6_UDP, + /** TCP/IPv6 over IPv4 tunneling - no CWR/ECE encoding. + * The header offsets and sizes relates to IPv4 and TCP, the IPv6 header is + * figured out as needed. + * @todo Needs checking against facts, this is just an outline of the idea. */ + PDMNETWORKGSOTYPE_IPV4_IPV6_TCP, + /** UDP/IPv6 over IPv4 tunneling. + * The header offsets and sizes relates to IPv4 and UDP, the IPv6 header is + * figured out as needed. + * @todo Needs checking against facts, this is just an outline of the idea. */ + PDMNETWORKGSOTYPE_IPV4_IPV6_UDP, + /** The end of valid GSO types. */ + PDMNETWORKGSOTYPE_END +} PDMNETWORKGSOTYPE; + + +/** + * Generic segment offloading context. + * + * We generally follow the E1000 specs wrt to which header fields we change. + * However the GSO type implies where the checksum fields are and that they are + * always updated from scratch (no half done pseudo checksums). + * + * @remarks This is part of the internal network GSO packets. Take great care + * when making changes. The size is expected to be exactly 8 bytes. + */ +typedef struct PDMNETWORKGSO +{ + /** The type of segmentation offloading we're performing (PDMNETWORKGSOTYPE). */ + uint8_t u8Type; + /** The total header size. */ + uint8_t cbHdrsTotal; + /** The max segment size (MSS) to apply. */ + uint16_t cbMaxSeg; + + /** Offset of the first header (IPv4 / IPv6). 0 if not not needed. */ + uint8_t offHdr1; + /** Offset of the second header (TCP / UDP). 0 if not not needed. */ + uint8_t offHdr2; + /** The header size used for segmentation (equal to offHdr2 in UFO). */ + uint8_t cbHdrsSeg; + /** Unused. */ + uint8_t u8Unused; +} PDMNETWORKGSO; +/** Pointer to a GSO context. */ +typedef PDMNETWORKGSO *PPDMNETWORKGSO; +/** Pointer to a const GSO context. */ +typedef PDMNETWORKGSO const *PCPDMNETWORKGSO; + + +/** + * The current ROM page protection. + * + * @remarks This is part of the saved state. + */ +typedef enum PGMROMPROT +{ + /** The customary invalid value. */ + PGMROMPROT_INVALID = 0, + /** Read from the virgin ROM page, ignore writes. + * Map the virgin page, use write access handler to ignore writes. */ + PGMROMPROT_READ_ROM_WRITE_IGNORE, + /** Read from the virgin ROM page, write to the shadow RAM. + * Map the virgin page, use write access handler to change the shadow RAM. */ + PGMROMPROT_READ_ROM_WRITE_RAM, + /** Read from the shadow ROM page, ignore writes. + * Map the shadow page read-only, use write access handler to ignore writes. */ + PGMROMPROT_READ_RAM_WRITE_IGNORE, + /** Read from the shadow ROM page, ignore writes. + * Map the shadow page read-write, disabled write access handler. */ + PGMROMPROT_READ_RAM_WRITE_RAM, + /** The end of valid values. */ + PGMROMPROT_END, + /** The usual 32-bit type size hack. */ + PGMROMPROT_32BIT_HACK = 0x7fffffff +} PGMROMPROT; + + +/** + * Page mapping lock. + */ +typedef struct PGMPAGEMAPLOCK +{ +#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) + /** The locked page. */ + void *pvPage; + /** Pointer to the CPU that made the mapping. + * In ring-0 and raw-mode context we don't intend to ever allow long term + * locking and this is a way of making sure we're still on the same CPU. */ + PVMCPU pVCpu; +#else + /** Pointer to the PGMPAGE and lock type. + * bit-0 abuse: set=write, clear=read. */ + uintptr_t uPageAndType; +/** Read lock type value. */ +# define PGMPAGEMAPLOCK_TYPE_READ ((uintptr_t)0) +/** Write lock type value. */ +# define PGMPAGEMAPLOCK_TYPE_WRITE ((uintptr_t)1) +/** Lock type mask. */ +# define PGMPAGEMAPLOCK_TYPE_MASK ((uintptr_t)1) + /** Pointer to the PGMCHUNKR3MAP. */ + void *pvMap; +#endif +} PGMPAGEMAPLOCK; +/** Pointer to a page mapping lock. */ +typedef PGMPAGEMAPLOCK *PPGMPAGEMAPLOCK; + + +/** Pointer to a info helper callback structure. */ +typedef struct DBGFINFOHLP *PDBGFINFOHLP; +/** Pointer to a const info helper callback structure. */ +typedef const struct DBGFINFOHLP *PCDBGFINFOHLP; + +/** Pointer to a const register descriptor. */ +typedef struct DBGFREGDESC const *PCDBGFREGDESC; + + +/** Configuration manager tree node - A key. */ +typedef struct CFGMNODE *PCFGMNODE; + +/** Configuration manager tree leaf - A value. */ +typedef struct CFGMLEAF *PCFGMLEAF; + + +/** + * CPU modes. + */ +typedef enum CPUMMODE +{ + /** The usual invalid zero entry. */ + CPUMMODE_INVALID = 0, + /** Real mode. */ + CPUMMODE_REAL, + /** Protected mode (32-bit). */ + CPUMMODE_PROTECTED, + /** Long mode (64-bit). */ + CPUMMODE_LONG +} CPUMMODE; + + +/** + * CPU mode flags (DISSTATE::mode). + */ +typedef enum DISCPUMODE +{ + DISCPUMODE_INVALID = 0, + DISCPUMODE_16BIT, + DISCPUMODE_32BIT, + DISCPUMODE_64BIT, + /** hack forcing the size of the enum to 32-bits. */ + DISCPUMODE_MAKE_32BIT_HACK = 0x7fffffff +} DISCPUMODE; + +/** Pointer to the disassembler state. */ +typedef struct DISSTATE *PDISSTATE; +/** Pointer to a const disassembler state. */ +typedef struct DISSTATE const *PCDISSTATE; + +/** @deprecated PDISSTATE and change pCpu and pDisState to pDis. */ +typedef PDISSTATE PDISCPUSTATE; +/** @deprecated PCDISSTATE and change pCpu and pDisState to pDis. */ +typedef PCDISSTATE PCDISCPUSTATE; + + +/** @} */ + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/VBox/version.h +++ linux-4.4.0/ubuntu/vbox/include/VBox/version.h @@ -0,0 +1,153 @@ +/** @file + * VBox Version Management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_version_h +#define ___VBox_version_h + +/* Product info. */ +#include +#include + +#ifdef RC_INVOKED +/* Some versions of RC has trouble with cdefs.h, so we duplicate these two here. */ +# define RT_STR(str) #str +# define RT_XSTR(str) RT_STR(str) +#else /* !RC_INVOKED */ + +/** Combined version number. */ +# define VBOX_VERSION (VBOX_VERSION_MAJOR << 16 | VBOX_VERSION_MINOR) +/** Get minor version from combined version. */ +# define VBOX_GET_VERSION_MINOR(uVer) ((uVer) & 0xffff) +/** Get major version from combined version. */ +# define VBOX_GET_VERSION_MAJOR(uVer) ((uVer) >> 16) + +/** + * Make a full version number. + * + * The returned number can be used in normal integer comparsions and will yield + * the expected results. + * + * @param uMajor The major version number. + * @param uMinor The minor version number. + * @param uBuild The build number. + * @returns Full version number. + */ +# define VBOX_FULL_VERSION_MAKE(uMajor, uMinor, uBuild) \ + ( (uint32_t)((uMajor) & 0xff) << 24 \ + | (uint32_t)((uMinor) & 0xff) << 16 \ + | (uint32_t)((uBuild) & 0xffff) \ + ) + +/** Combined version number. */ +# define VBOX_FULL_VERSION \ + VBOX_FULL_VERSION_MAKE(VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR, VBOX_VERSION_BUILD) +/** Get the major version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_MAJOR(uFullVer) ( ((uFullVer) >> 24) & 0xffU ) +/** Get the minor version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_MINOR(uFullVer) ( ((uFullVer) >> 16) & 0xffU ) +/** Get the build version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_BUILD(uFullVer) ( ((uFullVer) ) & 0xffffU ) + +/** + * Make a short version number for use in 16 bit version fields. + * + * The returned number can be used in normal integer comparsions and will yield + * the expected results. + * + * @param uMajor The major version number. + * @param uMinor The minor version number. + * @returns Short version number. + */ +# define VBOX_SHORT_VERSION_MAKE(uMajor, uMinor) \ + ( (uint16_t)((uMajor) & 0xff) << 8 \ + | (uint16_t)((uMinor) & 0xff) \ + ) + +/** Combined short version number. */ +# define VBOX_SHORT_VERSION \ + VBOX_SHORT_VERSION_MAKE(VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR) +/** Get the major version number from a VBOX_SHORT_VERSION style number. */ +# define VBOX_SHORT_VERSION_GET_MAJOR(uShortVer) ( ((uShortVer) >> 8) & 0xffU ) +/** Get the minor version number from a VBOX_SHORT_VERSION style number. */ +# define VBOX_SHORT_VERSION_GET_MINOR(uShortVer) ( (uShortVer) & 0xffU ) + +#endif /* !RC_INVOKED */ + +/** @name Prefined strings for Windows resource files + * @{ */ +#define VBOX_RC_COMPANY_NAME VBOX_VENDOR +#define VBOX_RC_LEGAL_COPYRIGHT "Copyright (C) 2009-" VBOX_C_YEAR " Oracle Corporation\0" +#define VBOX_RC_PRODUCT_NAME VBOX_PRODUCT +#define VBOX_RC_PRODUCT_NAME_GA VBOX_PRODUCT " Guest Additions" +#define VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK VBOX_PRODUCT " Extension Pack" +#define VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK VBOX_PRODUCT " VBoxDTrace Extension Pack" +#define VBOX_RC_PRODUCT_NAME_STR VBOX_RC_PRODUCT_NAME "\0" +#define VBOX_RC_PRODUCT_NAME_GA_STR VBOX_RC_PRODUCT_NAME_GA "\0" +#define VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK_STR VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK "\0" +#define VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK_STR VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK "\0" +#define VBOX_RC_PRODUCT_VERSION VBOX_VERSION_MAJOR , VBOX_VERSION_MINOR , VBOX_VERSION_BUILD , VBOX_SVN_REV_MOD_5K +#define VBOX_RC_FILE_VERSION VBOX_VERSION_MAJOR , VBOX_VERSION_MINOR , VBOX_VERSION_BUILD , VBOX_SVN_REV_MOD_5K +#ifndef VBOX_VERSION_PRERELEASE +# define VBOX_RC_PRODUCT_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) "\0" +# define VBOX_RC_FILE_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) "\0" +#else +# define VBOX_RC_PRODUCT_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) " (" VBOX_VERSION_PRERELEASE ")\0" +# define VBOX_RC_FILE_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) " (" VBOX_VERSION_PRERELEASE ")\0" +#endif +#define VBOX_RC_FILE_OS VOS_NT_WINDOWS32 +#define VBOX_RC_TYPE_DLL VFT_DLL +#define VBOX_RC_TYPE_APP VFT_APP +#define VBOX_RC_TYPE_DRV VFT_DRV +/* Flags and extra strings depending on the build type and who's building. */ +#if defined(DEBUG) || defined(LOG_ENABLED) || defined(RT_STRICT) || defined(VBOX_STRICT) || defined(VBOX_WITH_STATISTICS) +# define VBOX_RC_FILE_FLAGS_DEBUG VS_FF_DEBUG +#else +# define VBOX_RC_FILE_FLAGS_DEBUG 0 +#endif +#if VBOX_VERSION_MINOR >= 51 || defined(VBOX_VERSION_PRERELEASE) +# define VBOX_RC_FILE_FLAGS_PRERELEASE VS_FF_PRERELEASE +#else +# define VBOX_RC_FILE_FLAGS_PRERELEASE 0 +#endif +#if defined(VBOX_BUILD_SERVER_BUILD) && (VBOX_VERSION_MINOR & 1) == 0 +# define VBOX_RC_FILE_FLAGS_BUILD 0 +# define VBOX_RC_MORE_STRINGS +#elif defined(VBOX_BUILD_SERVER_BUILD) +# define VBOX_RC_FILE_FLAGS_BUILD VS_FF_SPECIALBUILD +# define VBOX_RC_MORE_STRINGS VALUE "SpecialBuild", "r" RT_XSTR(VBOX_SVN_REV) "\0" +#else +# define VBOX_RC_FILE_FLAGS_BUILD VS_FF_PRIVATEBUILD +# ifdef VBOX_PRIVATE_BUILD_DESC +# define VBOX_RC_MORE_STRINGS VALUE "PrivateBuild", VBOX_PRIVATE_BUILD_DESC "\0" +# else +# define VBOX_RC_MORE_STRINGS VALUE "PrivateBuild", "r" RT_XSTR(VBOX_SVN_REV) "\0" +# error +# endif +#endif +#define VBOX_RC_FILE_FLAGS (VBOX_RC_FILE_FLAGS_DEBUG | VBOX_RC_FILE_FLAGS_PRERELEASE | VBOX_RC_FILE_FLAGS_BUILD) +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/assert.h +++ linux-4.4.0/ubuntu/vbox/include/internal/assert.h @@ -0,0 +1,63 @@ +/* $Id: assert.h $ */ +/** @file + * IPRT - Internal RTAssert header + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_assert_h +#define ___internal_assert_h + +#include + +RT_C_DECLS_BEGIN + +#ifdef IN_RING0 + +/** + * Print the 1st part of an assert message to whatever native facility is best + * fitting. + * + * @param pszExpr Expression. Can be NULL. + * @param uLine Location line number. + * @param pszFile Location file name. + * @param pszFunction Location function name. + */ +DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); + +/** + * Print the 2nd (optional) part of an assert message to whatever native + * facility is best fitting. + * + * @param fInitial Whether it's the initial (true) or an additional (false) + * message. + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va); + +#endif + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/initterm.h +++ linux-4.4.0/ubuntu/vbox/include/internal/initterm.h @@ -0,0 +1,53 @@ +/* $Id: initterm.h $ */ +/** @file + * IPRT - Initialization & Termination. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_initterm_h +#define ___internal_initterm_h + +#include + +RT_C_DECLS_BEGIN + +#ifdef IN_RING0 + +/** + * Platform specific initialization. + * + * @returns IPRT status code. + */ +DECLHIDDEN(int) rtR0InitNative(void); + +/** + * Platform specific termination. + */ +DECLHIDDEN(void) rtR0TermNative(void); + +#endif /* IN_RING0 */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/iprt.h +++ linux-4.4.0/ubuntu/vbox/include/internal/iprt.h @@ -0,0 +1,204 @@ +/* $Id: iprt.h $ */ +/** @file + * IPRT - Internal header for miscellaneous global defs and types. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_iprt_h +#define ___internal_iprt_h + +#include +#include + +/** @def RT_EXPORT_SYMBOL + * This define is really here just for the linux kernel. + * @param Name The symbol name. + */ +#if defined(RT_OS_LINUX) \ + && defined(IN_RING0) \ + && defined(MODULE) \ + && !defined(RT_NO_EXPORT_SYMBOL) +# define bool linux_bool /* see r0drv/linux/the-linux-kernel.h */ +# include +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) +# include +# else +# ifndef AUTOCONF_INCLUDED +# include +# endif +# endif +# if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +# define MODVERSIONS +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 71) +# include +# endif +# endif +# include +# undef bool +# define RT_EXPORT_SYMBOL(Name) EXPORT_SYMBOL(Name) +#else +# define RT_EXPORT_SYMBOL(Name) extern int g_rtExportSymbolDummyVariable +#endif + + +/** @def RT_MORE_STRICT + * Enables more assertions in IPRT. */ +#if !defined(RT_MORE_STRICT) && (defined(DEBUG) || defined(RT_STRICT) || defined(DOXYGEN_RUNNING)) && !defined(RT_OS_WINDOWS) /** @todo enable on windows after testing */ +# define RT_MORE_STRICT +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_VAR + * Partner to RT_ASSERT_PREEMPT_CPUID_VAR. Declares and initializes a variable + * idAssertCpu to NIL_RTCPUID if preemption is enabled and to RTMpCpuId if + * disabled. When RT_MORE_STRICT isn't defined it declares an uninitialized + * dummy variable. + * + * Requires iprt/mp.h and iprt/asm.h. + */ +/** @def RT_ASSERT_PREEMPT_CPUID + * Asserts that we didn't change CPU since RT_ASSERT_PREEMPT_CPUID_VAR if + * preemption is disabled. Will also detect changes in preemption + * disable/enable status. This is a noop when RT_MORE_STRICT isn't defined. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_VAR() \ + RTCPUID const idAssertCpu = RTThreadPreemptIsEnabled(NIL_RTTHREAD) ? NIL_RTCPUID : RTMpCpuId() +# define RT_ASSERT_PREEMPT_CPUID() \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTThreadPreemptIsEnabled(NIL_RTTHREAD) ? NIL_RTCPUID : RTMpCpuId(); \ + AssertMsg(idAssertCpu == idAssertCpuNow, ("%#x, %#x\n", idAssertCpu, idAssertCpuNow)); \ + } while (0) + +#else +# define RT_ASSERT_PREEMPT_CPUID_VAR() RTCPUID idAssertCpuDummy +# define RT_ASSERT_PREEMPT_CPUID() NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED + * Extended version of RT_ASSERT_PREEMPT_CPUID for use before + * RTSpinlockAcquired* returns. This macro works the idCpuOwner and idAssertCpu + * members of the spinlock instance data. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis) \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg(idAssertCpu == idAssertCpuNow || idAssertCpu == NIL_RTCPUID, ("%#x, %#x\n", idAssertCpu, idAssertCpuNow)); \ + (pThis)->idAssertCpu = idAssertCpu; \ + (pThis)->idCpuOwner = idAssertCpuNow; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis) NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS + * Extended version of RT_ASSERT_PREEMPT_CPUID_VAR for use with + * RTSpinlockRelease* returns. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS() RTCPUID idAssertCpu +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS() RTCPUID idAssertCpuDummy +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE + * Extended version of RT_ASSERT_PREEMPT_CPUID for use in RTSpinlockRelease* + * before calling the native API for releasing the spinlock. It must be + * teamed up with RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis) \ + do \ + { \ + RTCPUID const idCpuOwner = (pThis)->idCpuOwner; \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg(idCpuOwner == idAssertCpuNow, ("%#x, %#x\n", idCpuOwner, idAssertCpuNow)); \ + (pThis)->idCpuOwner = NIL_RTCPUID; \ + idAssertCpu = (pThis)->idAssertCpu; \ + (pThis)->idAssertCpu = NIL_RTCPUID; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis) NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_DISABLE + * For use in RTThreadPreemptDisable implementations after having disabled + * preemption. Requires iprt/mp.h. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_DISABLE(pStat) \ + do \ + { \ + Assert((pStat)->idCpu == NIL_RTCPUID); \ + (pStat)->idCpu = RTMpCpuId(); \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_DISABLE(pStat) \ + Assert((pStat)->idCpu == NIL_RTCPUID) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_RESTORE + * For use in RTThreadPreemptRestore implementations before restoring + * preemption. Requires iprt/mp.h. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_RESTORE(pStat) \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg((pStat)->idCpu == idAssertCpuNow, ("%#x, %#x\n", (pStat)->idCpu, idAssertCpuNow)); \ + (pStat)->idCpu = NIL_RTCPUID; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_RESTORE(pStat) do { } while (0) +#endif + + +/** @def RT_ASSERT_INTS_ON + * Asserts that interrupts are disabled when RT_MORE_STRICT is defined. */ +#ifdef RT_MORE_STRICT +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# define RT_ASSERT_INTS_ON() Assert(ASMIntAreEnabled()) +# else /* PORTME: Add architecture/platform specific test. */ +# define RT_ASSERT_INTS_ON() Assert(RTThreadPreemptIsEnabled(NIL_RTTHREAD)) +# endif +#else +# define RT_ASSERT_INTS_ON() do { } while (0) +#endif + +/** @def RT_ASSERT_PREEMPTIBLE + * Asserts that preemption hasn't been disabled (using + * RTThreadPreemptDisable) when RT_MORE_STRICT is defined. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPTIBLE() Assert(RTThreadPreemptIsEnabled(NIL_RTTHREAD)) +#else +# define RT_ASSERT_PREEMPTIBLE() do { } while (0) +#endif + + +RT_C_DECLS_BEGIN + +#ifdef RT_OS_OS2 +uint32_t rtR0SemWaitOs2ConvertTimeout(uint32_t fFlags, uint64_t uTimeout); +#endif + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/lockvalidator.h +++ linux-4.4.0/ubuntu/vbox/include/internal/lockvalidator.h @@ -0,0 +1,116 @@ +/* $Id: lockvalidator.h $ */ +/** @file + * IPRT - Internal RTLockValidator header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_internal_lockvalidator_h +#define ___iprt_internal_lockvalidator_h + +#include +#include + +RT_C_DECLS_BEGIN + + +/** + * Record used only on the lock stack for recording the stack and source + * position of a recursive lock acquisition. + */ +typedef struct RTLOCKVALRECNEST +{ + RTLOCKVALRECCORE Core; + /** The recursion level at this point in the stack. */ + uint32_t cRecursion; + /** Pointer to the next record on the stack. */ + PRTLOCKVALRECUNION volatile pDown; + /** Pointer to the first recursion. */ + PRTLOCKVALRECUNION volatile pRec; + /** Pointer to the next free record when in the + * RTLOCKVALPERTHREAD::pFreeNestRecs list. */ + struct RTLOCKVALRECNEST *pNextFree; + /** The source position. */ + RTLOCKVALSRCPOS SrcPos; +} RTLOCKVALRECNEST; +/** Pointer to a recursion record. */ +typedef RTLOCKVALRECNEST *PRTLOCKVALRECNEST; + + +/** + * Record union for simplifying internal processing. + */ +typedef union RTLOCKVALRECUNION +{ + RTLOCKVALRECCORE Core; + RTLOCKVALRECEXCL Excl; + RTLOCKVALRECSHRD Shared; + RTLOCKVALRECSHRDOWN ShrdOwner; + RTLOCKVALRECNEST Nest; +} RTLOCKVALRECUNION; + + +/** + * Per thread data for the lock validator. + * + * This is part of the RTTHREADINT structure. + */ +typedef struct RTLOCKVALPERTHREAD +{ + /** Where we are blocking. */ + RTLOCKVALSRCPOS SrcPos; + /** Top of the lock stack. */ + PRTLOCKVALRECUNION volatile pStackTop; + /** List of free recursion (nesting) record. */ + PRTLOCKVALRECNEST pFreeNestRecs; + /** What we're blocking on. + * The lock validator sets this, RTThreadUnblock clears it. */ + PRTLOCKVALRECUNION volatile pRec; + /** The state in which pRec that goes with pRec. + * RTThreadUnblocking uses this to figure out when to clear pRec. */ + RTTHREADSTATE volatile enmRecState; + /** The thread is running inside the lock validator. */ + bool volatile fInValidator; + /** Reserved for alignment purposes. */ + bool afReserved[3]; + /** Number of registered write locks, mutexes and critsects that this thread owns. */ + int32_t volatile cWriteLocks; + /** Number of registered read locks that this thread owns, nesting included. */ + int32_t volatile cReadLocks; + /** Bitmap indicating which entires are free (set) and allocated (clear). */ + uint32_t volatile bmFreeShrdOwners; + /** Reserved for alignment purposes. */ + uint32_t u32Reserved; + /** Statically allocated shared owner records */ + RTLOCKVALRECSHRDOWN aShrdOwners[32]; +} RTLOCKVALPERTHREAD; + + +DECLHIDDEN(void) rtLockValidatorInitPerThread(RTLOCKVALPERTHREAD *pPerThread); +DECLHIDDEN(void) rtLockValidatorDeletePerThread(RTLOCKVALPERTHREAD *pPerThread); +DECLHIDDEN(void) rtLockValidatorSerializeDestructEnter(void); +DECLHIDDEN(void) rtLockValidatorSerializeDestructLeave(void); + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/magics.h +++ linux-4.4.0/ubuntu/vbox/include/internal/magics.h @@ -0,0 +1,241 @@ +/* $Id: magics.h $ */ +/** @file + * IPRT - Internal header defining The Magic Numbers. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_magics_h +#define ___internal_magics_h + +/** @name Magic Numbers. + * @{ */ + +/** Magic number for RTAIOMGRINT::u32Magic. (Emil Erich Kaestner) */ +#define RTAIOMGR_MAGIC UINT32_C(0x18990223) +/** Magic number for RTAIOMGRINTFILE::u32Magic. (Ephraim Kishon) */ +#define RTAIOMGRFILE_MAGIC UINT32_C(0x19240823) +/** Magic number for RTDBGMODINT::u32Magic. (Charles Lloyd) */ +#define RTDBGAS_MAGIC UINT32_C(0x19380315) +/** Magic number for RTDBGCFGINT::u32Magic. (McCoy Tyner) */ +#define RTDBGCFG_MAGIC UINT32_C(0x19381211) +/** Magic number for RTDBGMODINT::u32Magic. (Keith Jarrett) */ +#define RTDBGMOD_MAGIC UINT32_C(0x19450508) +/** Magic number for RTDBGMODVTIMG::u32Magic. (Jack DeJohnette) */ +#define RTDBGMODVTDBG_MAGIC UINT32_C(0x19420809) +/** Magic number for RTDBGMODVTIMG::u32Magic. (Cecil McBee) */ +#define RTDBGMODVTIMG_MAGIC UINT32_C(0x19350419) +/** Magic value for RTDBGKRNLINFOINT::u32Magic. (John Carmack) */ +#define RTDBGKRNLINFO_MAGIC UINT32_C(0x19700820) +/** The value of RTDIR::u32Magic. (Michael Ende) */ +#define RTDIR_MAGIC UINT32_C(0x19291112) +/** The value of RTDIR::u32Magic after RTDirClose(). */ +#define RTDIR_MAGIC_DEAD UINT32_C(0x19950829) +/** The value of RTDVMINTERNAL::u32Magic. (Dan Brown) */ +#define RTDVM_MAGIC UINT32_C(0x19640622) +/** The value of RTDVMINTERNAL::u32Magic after close. */ +#define RTDVM_MAGIC_DEAD (~RTDVM_MAGIC) +/** The value of RTDVMVOLUMEINTERNAL::u32Magic. (Daniel Defoe) */ +#define RTDVMVOLUME_MAGIC UINT32_C(0x16591961) +/** The value of RTDVMVOLUMEINTERNAL::u32Magic after close. */ +#define RTDVMVOLUME_MAGIC_DEAD UINT32_C(0x17310424) +/** The value of RTFILEAIOCTXINT::u32Magic. (Howard Phillips Lovecraft) */ +#define RTFILEAIOCTX_MAGIC UINT32_C(0x18900820) +/** The value of RTFILEAIOCTXINT::u32Magic after RTFileAioCtxDestroy(). */ +#define RTFILEAIOCTX_MAGIC_DEAD UINT32_C(0x19370315) +/** The value of RTFILEAIOREQINT::u32Magic. (Stephen Edwin King) */ +#define RTFILEAIOREQ_MAGIC UINT32_C(0x19470921) +/** The value of RTENVINTERNAL::u32Magic. (Rumiko Takahashi) */ +#define RTENV_MAGIC UINT32_C(0x19571010) +/** The value of RTERRVARS::ai32Vars[0]. (Ryuichi Sakamoto) */ +#define RTERRVARS_MAGIC UINT32_C(0x19520117) +/** Magic number for RTHANDLETABLEINT::u32Magic. (Hitomi Kanehara) */ +#define RTHANDLETABLE_MAGIC UINT32_C(0x19830808) +/** Magic number for RTHEAPOFFSETINTERNAL::u32Magic. (Neal Town Stephenson) */ +#define RTHEAPOFFSET_MAGIC UINT32_C(0x19591031) +/** Magic number for RTHEAPSIMPLEINTERNAL::uMagic. (Kyoichi Katayama) */ +#define RTHEAPSIMPLE_MAGIC UINT32_C(0x19590105) +/** The magic value for RTHTTPINTERNAL::u32Magic. (Karl May) */ +#define RTHTTP_MAGIC UINT32_C(0x18420225) +/** The value of RTHTTPINTERNAL::u32Magic after close. */ +#define RTHTTP_MAGIC_DEAD UINT32_C(0x19120330) +/** The magic value for RTLDRMODINTERNAL::u32Magic. (Alan Moore) */ +#define RTLDRMOD_MAGIC UINT32_C(0x19531118) +/** The magic value for RTLOCALIPCSERVER::u32Magic. (Naoki Yamamoto) */ +#define RTLOCALIPCSERVER_MAGIC UINT32_C(0x19600201) +/** The magic value for RTLOCALIPCSERVER::u32Magic. (Katsuhiro Otomo) */ +#define RTLOCALIPCSESSION_MAGIC UINT32_C(0x19530414) +/** The magic value for RTLOCKVALCLASSINT::u32Magic. (Thomas Mann) */ +#define RTLOCKVALCLASS_MAGIC UINT32_C(0x18750605) +/** The magic value for RTLOCKVALCLASSINT::u32Magic after destruction. */ +#define RTLOCKVALCLASS_MAGIC_DEAD UINT32_C(0x19550812) +/** The magic value for RTLOCKVALRECEXCL::u32Magic. (Vladimir Vladimirovich Nabokov) */ +#define RTLOCKVALRECEXCL_MAGIC UINT32_C(0x18990422) +/** The dead magic value for RTLOCKVALRECEXCL::u32Magic. */ +#define RTLOCKVALRECEXCL_MAGIC_DEAD UINT32_C(0x19770702) +/** The magic value for RTLOCKVALRECSHRD::u32Magic. (Agnar Mykle) */ +#define RTLOCKVALRECSHRD_MAGIC UINT32_C(0x19150808) +/** The magic value for RTLOCKVALRECSHRD::u32Magic after deletion. */ +#define RTLOCKVALRECSHRD_MAGIC_DEAD UINT32_C(0x19940115) +/** The magic value for RTLOCKVALRECSHRDOWN::u32Magic. (Jens Ingvald Bjoerneboe) */ +#define RTLOCKVALRECSHRDOWN_MAGIC UINT32_C(0x19201009) +/** The magic value for RTLOCKVALRECSHRDOWN::u32Magic after deletion. */ +#define RTLOCKVALRECSHRDOWN_MAGIC_DEAD UINT32_C(0x19760509) +/** The magic value for RTLOCKVALRECNEST::u32Magic. (Anne Desclos) */ +#define RTLOCKVALRECNEST_MAGIC UINT32_C(0x19071123) +/** The magic value for RTLOCKVALRECNEST::u32Magic after deletion. */ +#define RTLOCKVALRECNEST_MAGIC_DEAD UINT32_C(0x19980427) +/** Magic number for RTMEMCACHEINT::u32Magic. (Joseph Weizenbaum) */ +#define RTMEMCACHE_MAGIC UINT32_C(0x19230108) +/** Dead magic number for RTMEMCACHEINT::u32Magic. */ +#define RTMEMCACHE_MAGIC_DEAD UINT32_C(0x20080305) +/** The magic value for RTMEMPOOL::u32Magic. (Jane Austin) */ +#define RTMEMPOOL_MAGIC UINT32_C(0x17751216) +/** The magic value for RTMEMPOOL::u32Magic after RTMemPoolDestroy. */ +#define RTMEMPOOL_MAGIC_DEAD UINT32_C(0x18170718) +/** The magic value for heap blocks. (Edgar Allan Poe) */ +#define RTMEMHDR_MAGIC UINT32_C(0x18090119) +/** The magic value for heap blocks after freeing. */ +#define RTMEMHDR_MAGIC_DEAD UINT32_C(0x18491007) +/** The value of RTPIPEINTERNAL::u32Magic. (Frank Schaetzing) */ +#define RTPIPE_MAGIC UINT32_C(0x19570528) +/** The value of RTPOLLSETINTERNAL::u32Magic. (Ai Yazawa) */ +#define RTPOLLSET_MAGIC UINT32_C(0x19670307) +/** RTR0MEMOBJ::u32Magic. (Masakazu Katsura) */ +#define RTR0MEMOBJ_MAGIC UINT32_C(0x19611210) +/** RTRANDINT::u32Magic. (Alan Moore) */ +#define RTRANDINT_MAGIC UINT32_C(0x19531118) +/** The value of RTREQ::u32Magic. */ +#define RTREQ_MAGIC UINT32_C(0xfeed0001) /**< @todo find a value */ +/** The value of RTREQ::u32Magic of a freed request. */ +#define RTREQ_MAGIC_DEAD (~RTREQ_MAGIC) +/** The value of RTREQPOOLINT::u32Magic. */ +#define RTREQPOOL_MAGIC UINT32_C(0xfeed0002)/**< @todo find a value */ +/** The value of RTREQPOOLINT::u32Magic after destruction. */ +#define RTREQPOOL_MAGIC_DEAD (~RTREQPOOL_MAGIC) +/** The value of RTREQQUEUEINT::u32Magic. */ +#define RTREQQUEUE_MAGIC UINT32_C(0xfeed0003)/**< @todo find a value */ +/** The value of RTREQQUEUEINT::u32Magic after destruction. */ +#define RTREQQUEUE_MAGIC_DEAD (~RTREQQUEUE_MAGIC) +/** The value of RTS3::u32Magic. (Edgar Wallace) */ +#define RTS3_MAGIC UINT32_C(0x18750401) +/** The value of RTS3::u32Magic after RTS3Destroy(). */ +#define RTS3_MAGIC_DEAD UINT32_C(0x19320210) +/** Magic for the event semaphore structure. (Neil Gaiman) */ +#define RTSEMEVENT_MAGIC UINT32_C(0x19601110) +/** Magic for the multiple release event semaphore structure. (Isaac Asimov) */ +#define RTSEMEVENTMULTI_MAGIC UINT32_C(0x19200102) +/** Dead magic value for multiple release event semaphore structures. */ +#define RTSEMEVENTMULTI_MAGIC_DEAD UINT32_C(0x19920406) +/** Magic value for RTSEMFASTMUTEXINTERNAL::u32Magic. (John Ronald Reuel Tolkien) */ +#define RTSEMFASTMUTEX_MAGIC UINT32_C(0x18920103) +/** Dead magic value for RTSEMFASTMUTEXINTERNAL::u32Magic. */ +#define RTSEMFASTMUTEX_MAGIC_DEAD UINT32_C(0x19730902) +/** Magic for the mutex semaphore structure. (Douglas Adams) */ +#define RTSEMMUTEX_MAGIC UINT32_C(0x19520311) +/** Dead magic for the mutex semaphore structure. */ +#define RTSEMMUTEX_MAGIC_DEAD UINT32_C(0x20010511) +/** Magic for the spinning mutex semaphore structure. (Natsume Soseki) */ +#define RTSEMSPINMUTEX_MAGIC UINT32_C(0x18670209) +/** Dead magic value for RTSEMSPINMUTEXINTERNAL::u32Magic. */ +#define RTSEMSPINMUTEX_MAGIC_DEAD UINT32_C(0x19161209) +/** RTSEMRWINTERNAL::u32Magic value. (Kosuke Fujishima) */ +#define RTSEMRW_MAGIC UINT32_C(0x19640707) +/** RTSEMXROADSINTERNAL::u32Magic value. (Kenneth Elton "Ken" Kesey) */ +#define RTSEMXROADS_MAGIC UINT32_C(0x19350917) +/** RTSEMXROADSINTERNAL::u32Magic value after RTSemXRoadsDestroy. */ +#define RTSEMXROADS_MAGIC_DEAD UINT32_C(0x20011110) +/** The magic value for RTSOCKETINT::u32Magic. (Stanislaw Lem) */ +#define RTSOCKET_MAGIC UINT32_C(0x19210912) +/** The magic value for RTSOCKETINT::u32Magic after destruction. */ +#define RTSOCKET_MAGIC_DEAD UINT32_C(0x20060326) +/** Magic value for RTSPINLOCKINTERNAL::u32Magic. (Terry Pratchett) */ +#define RTSPINLOCK_MAGIC UINT32_C(0x19480428) +/** Magic value for generic RTSPINLOCKINTERNAL::u32Magic (Georges Prosper Remi). */ +#define RTSPINLOCK_GEN_MAGIC UINT32_C(0x10970522) +/** Magic value for RTSTRCACHE::u32Magic. (Sir Arthur Charles Clarke) */ +#define RTSTRCACHE_MAGIC UINT32_C(0x19171216) +/** Magic value for RTSTRCACHE::u32Magic after RTStrCacheDestroy. */ +#define RTSTRCACHE_MAGIC_DEAD UINT32_C(0x20080319) +/** The value of RTSTREAM::u32Magic for a valid stream. */ +#define RTSTREAM_MAGIC UINT32_C(0xe44e44ee) +/** Magic value for RTTCPSERVER::u32Magic. (Jan Garbarek) */ +#define RTTCPSERVER_MAGIC UINT32_C(0x19470304) +/** Magic value for RTTCPSERVER::u32Magic. (Harlan Ellison) */ +#define RTUDPSERVER_MAGIC UINT32_C(0x19340527) +/** The value of RTTAR::u32Magic. (Donald Ervin Knuth) */ +#define RTTAR_MAGIC UINT32_C(0x19380110) +/** The value of RTTAR::u32Magic after RTTarClose(). */ +#define RTTAR_MAGIC_DEAD ~RTTAR_MAGIC +/** The value of RTTARFILE::u32Magic. (Abraham Stoker) */ +#define RTTARFILE_MAGIC UINT32_C(0x18471108) +/** The value of RTTARFILE::u32Magic after RTTarFileClose(). */ +#define RTTARFILE_MAGIC_DEAD UINT32_C(0x19120420) +/** RTTESTINT::u32Magic value. (Daniel Kehlmann) */ +#define RTTESTINT_MAGIC UINT32_C(0x19750113) +/** RTTHREADCTXHOOKINT::u32Magic value. (Dennis MacAlistair Ritchie) */ +#define RTTHREADCTXHOOKINT_MAGIC UINT32_C(0x19410909) +/** RTTHREADINT::u32Magic value. (Gilbert Keith Chesterton) */ +#define RTTHREADINT_MAGIC UINT32_C(0x18740529) +/** RTTHREADINT::u32Magic value for a dead thread. */ +#define RTTHREADINT_MAGIC_DEAD UINT32_C(0x19360614) +/** Magic number for timer handles. (Jared Mason Diamond) */ +#define RTTIMER_MAGIC UINT32_C(0x19370910) +/** Magic number for timer low resolution handles. (Saki Hiwatari) */ +#define RTTIMERLR_MAGIC UINT32_C(0x19610715) +/** Magic value of RTTRACEBUFINT::u32Magic. (George Orwell) */ +#define RTTRACEBUF_MAGIC UINT32_C(0x19030625) +/** Magic value of RTTRACEBUFINT::u32Magic after the final release. */ +#define RTTRACEBUF_MAGIC_DEAD UINT32_C(0x19500121) +/** The value of RTVFSOBJINTERNAL::u32Magic. (Yasunari Kawabata) */ +#define RTVFSOBJ_MAGIC UINT32_C(0x18990614) +/** The value of RTVFSOBJINTERNAL::u32Magic arter close. */ +#define RTVFSOBJ_MAGIC_DEAD UINT32_C(0x19720416) +/** The value of RTVFSINTERNAL::u32Magic. (Sir Kingsley William Amis) */ +#define RTVFS_MAGIC UINT32_C(0x19220416) +/** The value of RTVFSINTERNAL::u32Magic after close. */ +#define RTVFS_MAGIC_DEAD UINT32_C(0x19951022) +/** The value of RTVFSFSSTREAMINTERNAL::u32Magic. (William McGuire "Bill" Bryson) */ +#define RTVFSFSSTREAM_MAGIC UINT32_C(0x19511208) +/** The value of RTVFSFSSTREAMINTERNAL::u32Magic after close */ +#define RTVFSFSSTREAM_MAGIC_DEAD (~RTVFSFSSTREAM_MAGIC) +/** The value of RTVFSDIRINTERNAL::u32Magic. (Franklin Patrick Herbert, Jr.) */ +#define RTVFSDIR_MAGIC UINT32_C(0x19201008) +/** The value of RTVFSDIRINTERNAL::u32Magic after close. */ +#define RTVFSDIR_MAGIC_DEAD UINT32_C(0x19860211) +/** The value of RTVFSFILEINTERNAL::u32Magic. (Charles John Huffam Dickens) */ +#define RTVFSFILE_MAGIC UINT32_C(0x18120207) +/** The value of RTVFSFILEINTERNAL::u32Magic after close. */ +#define RTVFSFILE_MAGIC_DEAD UINT32_C(0x18700609) +/** The value of RTVFSIOSTREAMINTERNAL::u32Magic. (Ernest Miller Hemingway) */ +#define RTVFSIOSTREAM_MAGIC UINT32_C(0x18990721) +/** The value of RTVFSIOSTREAMINTERNAL::u32Magic after close. */ +#define RTVFSIOSTREAM_MAGIC_DEAD UINT32_C(0x19610702) +/** The value of RTVFSSYMLINKINTERNAL::u32Magic. (Francis Scott Key Fitzgerald) */ +#define RTVFSSYMLINK_MAGIC UINT32_C(0x18960924) +/** The value of RTVFSSYMLINKINTERNAL::u32Magic after close. */ +#define RTVFSSYMLINK_MAGIC_DEAD UINT32_C(0x19401221) + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/memobj.h +++ linux-4.4.0/ubuntu/vbox/include/internal/memobj.h @@ -0,0 +1,483 @@ +/* $Id: memobj.h $ */ +/** @file + * IPRT - Ring-0 Memory Objects. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_memobj_h +#define ___internal_memobj_h + +#include +#include +#include "internal/magics.h" + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_memobj_int Internals. + * @ingroup grp_rt_memobj + * @internal + * @{ + */ + +/** + * Ring-0 memory object type. + */ +typedef enum RTR0MEMOBJTYPE +{ + /** The traditional invalid value. */ + RTR0MEMOBJTYPE_INVALID = 0, + + /** @name Primary types (parents) + * @{ */ + /** RTR0MemObjAllocPage. + * This memory is page aligned and fixed. */ + RTR0MEMOBJTYPE_PAGE, + /** RTR0MemObjAllocLow. + * This memory is page aligned, fixed and is backed by physical memory below 4GB. */ + RTR0MEMOBJTYPE_LOW, + /** RTR0MemObjAllocCont. + * This memory is page aligned, fixed and is backed by contiguous physical memory below 4GB. */ + RTR0MEMOBJTYPE_CONT, + /** RTR0MemObjLockKernel, RTR0MemObjLockUser. + * This memory is page aligned and fixed. It was locked/pinned/wired down by the API call. */ + RTR0MEMOBJTYPE_LOCK, + /** RTR0MemObjAllocPhys, RTR0MemObjEnterPhys. + * This memory is physical memory, page aligned, contiguous and doesn't need to have a mapping. */ + RTR0MEMOBJTYPE_PHYS, + /** RTR0MemObjAllocPhysNC. + * This memory is physical memory, page aligned and doesn't need to have a mapping. */ + RTR0MEMOBJTYPE_PHYS_NC, + /** RTR0MemObjReserveKernel, RTR0MemObjReserveUser. + * This memory is page aligned and has no backing. */ + RTR0MEMOBJTYPE_RES_VIRT, + /** @} */ + + /** @name Secondary types (children) + * @{ + */ + /** RTR0MemObjMapUser, RTR0MemObjMapKernel. + * This is a user or kernel context mapping of another ring-0 memory object. */ + RTR0MEMOBJTYPE_MAPPING, + /** @} */ + + /** The end of the valid types. Used for sanity checking. */ + RTR0MEMOBJTYPE_END +} RTR0MEMOBJTYPE; + + +/** @name RTR0MEMOBJINTERNAL::fFlags + * @{ */ +/** Page level protection was changed. */ +#define RTR0MEMOBJ_FLAGS_PROT_CHANGED RT_BIT_32(0) +/** @} */ + + +typedef struct RTR0MEMOBJINTERNAL *PRTR0MEMOBJINTERNAL; +typedef struct RTR0MEMOBJINTERNAL **PPRTR0MEMOBJINTERNAL; + +/** + * Ring-0 memory object. + * + * When using the PRTR0MEMOBJINTERNAL and PPRTR0MEMOBJINTERNAL types + * we get pMem and ppMem variable names. + * + * When using the RTR0MEMOBJ and PRTR0MEMOBJ types we get MemObj and + * pMemObj variable names. We never dereference variables of the RTR0MEMOBJ + * type, we always convert it to a PRTR0MEMOBJECTINTERNAL variable first. + */ +typedef struct RTR0MEMOBJINTERNAL +{ + /** Magic number (RTR0MEMOBJ_MAGIC). */ + uint32_t u32Magic; + /** The size of this structure. */ + uint32_t cbSelf; + /** The type of allocation. */ + RTR0MEMOBJTYPE enmType; + /** Flags, RTR0MEMOBJ_FLAGS_*. */ + uint32_t fFlags; + /** The size of the memory allocated, pinned down, or mapped. */ + size_t cb; + /** The memory address. + * What this really is varies with the type. + * For PAGE, CONT, LOW, RES_VIRT/R0, LOCK/R0 and MAP/R0 it's the ring-0 mapping. + * For LOCK/R3, RES_VIRT/R3 and MAP/R3 it is the ring-3 mapping. + * For PHYS this might actually be NULL if there isn't any mapping. + */ + void *pv; + + /** Object relations. */ + union + { + /** This is for tracking child memory handles mapping the + * memory described by the primary handle. */ + struct + { + /** Number of mappings. */ + uint32_t cMappingsAllocated; + /** Number of mappings in the array. */ + uint32_t cMappings; + /** Pointers to child handles mapping this memory. */ + PPRTR0MEMOBJINTERNAL papMappings; + } Parent; + + /** Pointer to the primary handle. */ + struct + { + /** Pointer to the parent. */ + PRTR0MEMOBJINTERNAL pParent; + } Child; + } uRel; + + /** Type specific data for the memory types that requires that. */ + union + { + /** RTR0MEMTYPE_PAGE. */ + struct + { + unsigned iDummy; + } Page; + + /** RTR0MEMTYPE_LOW. */ + struct + { + unsigned iDummy; + } Low; + + /** RTR0MEMTYPE_CONT. */ + struct + { + /** The physical address of the first page. */ + RTHCPHYS Phys; + } Cont; + + /** RTR0MEMTYPE_LOCK_USER. */ + struct + { + /** The process that owns the locked memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } Lock; + + /** RTR0MEMTYPE_PHYS. */ + struct + { + /** The base address of the physical memory. */ + RTHCPHYS PhysBase; + /** If set this object was created by RTR0MemPhysAlloc, otherwise it was + * created by RTR0MemPhysEnter. */ + bool fAllocated; + /** See RTMEM_CACHE_POLICY_XXX constants */ + uint32_t uCachePolicy; + } Phys; + + /** RTR0MEMTYPE_PHYS_NC. */ + struct + { + unsigned iDummy; + } PhysNC; + + /** RTR0MEMOBJTYPE_RES_VIRT */ + struct + { + /** The process that owns the reserved memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } ResVirt; + + /** RTR0MEMOBJTYPE_MAPPING */ + struct + { + /** The process that owns the reserved memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } Mapping; + } u; + +} RTR0MEMOBJINTERNAL; + + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param pMem The ring-0 memory object handle. + * @see RTR0MemObjIsMapping + */ +DECLINLINE(bool) rtR0MemObjIsMapping(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_MAPPING: + return true; + + default: + return false; + } +} + + +/** + * Checks page level protection can be changed on this object. + * + * @returns true / false. + * @param pMem The ring-0 memory object handle. + */ +DECLINLINE(bool) rtR0MemObjIsProtectable(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_MAPPING: + case RTR0MEMOBJTYPE_PAGE: + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_CONT: + return true; + + default: + return false; + } +} + + +/** + * Checks if RTR0MEMOBJ::pv is a ring-3 pointer or not. + * + * @returns true if it's a object with a ring-3 address, otherwise false. + * @param pMem The ring-0 memory object handle. + */ +DECLINLINE(bool) rtR0MemObjIsRing3(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_RES_VIRT: + return pMem->u.ResVirt.R0Process != NIL_RTR0PROCESS; + case RTR0MEMOBJTYPE_LOCK: + return pMem->u.Lock.R0Process != NIL_RTR0PROCESS; + case RTR0MEMOBJTYPE_MAPPING: + return pMem->u.Mapping.R0Process != NIL_RTR0PROCESS; + default: + return false; + } +} + + +/** + * Frees the memory object (but not the handle). + * Any OS specific handle resources will be freed by this call. + * + * @returns IPRT status code. On failure it is assumed that the object remains valid. + * @param pMem The ring-0 memory object handle to the memory which should be freed. + */ +DECLHIDDEN(int) rtR0MemObjNativeFree(PRTR0MEMOBJINTERNAL pMem); + +/** + * Allocates page aligned virtual kernel memory. + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB. + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing below 4GB. + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Locks a range of user virtual memory. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address, page aligned. + * @param cb Number of bytes to lock, page aligned. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. + */ +DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, RTR0PROCESS R0Process); + +/** + * Locks a range of kernel virtual memory. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address, page aligned. + * @param cb Number of bytes to lock, page aligned. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + */ +DECLHIDDEN(int) rtR0MemObjNativeLockKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pv, size_t cb, uint32_t fAccess); + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param PhysHighest The highest permitable address (inclusive). + * NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are PAGE_SIZE, _2M, _4M and _1G. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPhys(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment); + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) any kernel mapping. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param PhysHighest The highest permitable address (inclusive). + * NIL_RTHCPHYS if any address is acceptable. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPhysNC(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest); + +/** + * Creates a page aligned, contiguous, physical memory object. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at, page aligned. + * @param cb The size of the object in bytes, page aligned. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + */ +DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJINTERNAL ppMem, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy); + +/** + * Reserves kernel virtual address space. + * + * @returns IPRT status code. + * Return VERR_NOT_SUPPORTED to indicate that the user should employ fallback strategies. + * @param ppMem Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified. + * @param cb The number of bytes to reserve, page aligned. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + */ +DECLHIDDEN(int) rtR0MemObjNativeReserveKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment); + +/** + * Reserves user virtual address space in the current process. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified. + * @param cb The number of bytes to reserve, page aligned. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param R0Process The process to reserve the memory in. + */ +DECLHIDDEN(int) rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, RTR0PROCESS R0Process); + +/** + * Maps a memory object into user virtual address space in the current process. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED see RTR0MemObjMapKernelEx. + * + * @param ppMem Where to store the ring-0 memory object handle of the mapping object. + * @param pMemToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + */ +DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub); + +/** + * Maps a memory object into user virtual address space in the current process. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle of the mapping object. + * @param pMemToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. + */ +DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, PRTR0MEMOBJINTERNAL pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process); + +/** + * Change the page level protection of one or more pages in a memory object. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED see RTR0MemObjProtect. + * + * @param pMem The memory object. + * @param offSub Offset into the memory object. Page aligned. + * @param cbSub Number of bytes to change the protection of. Page + * aligned. + * @param fProt Combination of RTMEM_PROT_* flags. + */ +DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt); + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param pMem The ring-0 memory object handle. + * @param iPage The page number within the object (valid). + */ +DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(PRTR0MEMOBJINTERNAL pMem, size_t iPage); + +DECLHIDDEN(PRTR0MEMOBJINTERNAL) rtR0MemObjNew(size_t cbSelf, RTR0MEMOBJTYPE enmType, void *pv, size_t cb); +DECLHIDDEN(void) rtR0MemObjDelete(PRTR0MEMOBJINTERNAL pMem); + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/process.h +++ linux-4.4.0/ubuntu/vbox/include/internal/process.h @@ -0,0 +1,69 @@ +/* $Id: process.h $ */ +/** @file + * IPRT - Internal RTProc header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_process_h +#define ___internal_process_h + +#include +#include + +RT_C_DECLS_BEGIN + +extern DECLHIDDEN(RTPROCESS) g_ProcessSelf; +extern DECLHIDDEN(RTPROCPRIORITY) g_enmProcessPriority; +extern DECLHIDDEN(char) g_szrtProcExePath[RTPATH_MAX]; +extern DECLHIDDEN(size_t) g_cchrtProcExePath; +extern DECLHIDDEN(size_t) g_cchrtProcDir; +extern DECLHIDDEN(size_t) g_offrtProcName; +extern DECLHIDDEN(bool volatile) g_frtAtExitCalled; + +/** + * Validates and sets the process priority. + * This will check that all rtThreadNativeSetPriority() will success for all the + * thread types when applied to the current thread. + * + * @returns iprt status code. + * @param enmPriority The priority to validate and set. + * @remark Located in sched. + */ +DECLHIDDEN(int) rtProcNativeSetPriority(RTPROCPRIORITY enmPriority); + +/** + * Determines the full path to the executable image. + * + * This is called by rtR3Init. + * + * @returns IPRT status code. + * + * @param pszPath Pointer to the g_szrtProcExePath buffer. + * @param cchPath The size of the buffer. + */ +DECLHIDDEN(int) rtProcInitExePath(char *pszPath, size_t cchPath); + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/sched.h +++ linux-4.4.0/ubuntu/vbox/include/internal/sched.h @@ -0,0 +1,47 @@ +/* $Id: sched.h $ */ +/** @file + * IPRT - Internal RTSched header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_sched_h +#define ___internal_sched_h + +#include +#include "internal/process.h" +#include "internal/thread.h" + +RT_C_DECLS_BEGIN + +/** + * Calculate the scheduling properties for all the threads in the default + * process priority, assuming the current thread have the type enmType. + * + * @returns iprt status code. + * @param enmType The thread type to be assumed for the current thread. + */ +DECLHIDDEN(int) rtSchedNativeCalcDefaultPriority(RTTHREADTYPE enmType); + +RT_C_DECLS_END + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/internal/string.h +++ linux-4.4.0/ubuntu/vbox/include/internal/string.h @@ -0,0 +1,88 @@ +/* $Id: string.h $ */ +/** @file + * IPRT - Internal RTStr header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_string_h +#define ___internal_string_h + +#include + +RT_C_DECLS_BEGIN + +/** @def RTSTR_STRICT + * Enables strict assertions on bad string encodings. + */ +#ifdef DOXYGEN_RUNNING +# define RTSTR_STRICT +#endif +/*#define RTSTR_STRICT*/ + +#ifdef RTSTR_STRICT +# define RTStrAssertMsgFailed(msg) AssertMsgFailed(msg) +# define RTStrAssertMsgReturn(expr, msg, rc) AssertMsgReturn(expr, msg, rc) +#else +# define RTStrAssertMsgFailed(msg) do { } while (0) +# define RTStrAssertMsgReturn(expr, msg, rc) do { if (!(expr)) return rc; } while (0) +#endif + +DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize); +DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize); + +#ifdef RT_WITH_ICONV_CACHE +DECLHIDDEN(void) rtStrIconvCacheInit(struct RTTHREADINT *pThread); +DECLHIDDEN(void) rtStrIconvCacheDestroy(struct RTTHREADINT *pThread); +#endif + +/** + * Indexes into RTTHREADINT::ahIconvs + */ +typedef enum RTSTRICONV +{ + /** UTF-8 to the locale codeset (LC_CTYPE). */ + RTSTRICONV_UTF8_TO_LOCALE = 0, + /** The locale codeset (LC_CTYPE) to UTF-8. */ + RTSTRICONV_LOCALE_TO_UTF8, + /** UTF-8 to the filesystem codeset - if different from the locale codeset. */ + RTSTRICONV_UTF8_TO_FS, + /** The filesystem codeset to UTF-8. */ + RTSTRICONV_FS_TO_UTF8, + /** The end of the valid indexes. */ + RTSTRICONV_END +} RTSTRICONV; + +DECLHIDDEN(int) rtStrConvert(const char *pchInput, size_t cchInput, const char *pszInputCS, + char **ppszOutput, size_t cbOutput, const char *pszOutputCS, + unsigned cFactor, RTSTRICONV enmCacheIdx); +DECLHIDDEN(const char *) rtStrGetLocaleCodeset(void); +DECLHIDDEN(int) rtUtf8Length(const char *psz, size_t cch, size_t *pcuc, size_t *pcchActual); + +DECLHIDDEN(int) rtStrToIpAddr6Str(const char *psz, char *pszAddrOut, size_t addrOutSize, char *pszPortOut, size_t portOutSize, bool followRfc); + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/internal/thread.h +++ linux-4.4.0/ubuntu/vbox/include/internal/thread.h @@ -0,0 +1,275 @@ +/* $Id: thread.h $ */ +/** @file + * IPRT - Internal RTThread header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___thread_h +#define ___thread_h + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif +#include "internal/lockvalidator.h" +#include "internal/magics.h" +#ifdef RT_WITH_ICONV_CACHE +# include "internal/string.h" +#endif + +RT_C_DECLS_BEGIN + + +/** Max thread name length. */ +#define RTTHREAD_NAME_LEN 16 +#ifdef IPRT_WITH_GENERIC_TLS +/** The number of TLS entries for the generic implementation. */ +# define RTTHREAD_TLS_ENTRIES 64 +#endif + +/** + * Internal representation of a thread. + */ +typedef struct RTTHREADINT +{ + /** Avl node core - the key is the native thread id. */ + AVLPVNODECORE Core; + /** Magic value (RTTHREADINT_MAGIC). */ + uint32_t u32Magic; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The current thread state. */ + RTTHREADSTATE volatile enmState; + /** Set when really sleeping. */ + bool volatile fReallySleeping; +#if defined(RT_OS_WINDOWS) && defined(IN_RING3) + /** The thread handle + * This is not valid until the create function has returned! */ + uintptr_t hThread; +#endif +#if defined(RT_OS_LINUX) && defined(IN_RING3) + /** The thread ID. + * This is not valid before rtThreadMain has been called by the new thread. */ + pid_t tid; +#endif +#if defined(RT_OS_SOLARIS) && defined(IN_RING0) + /** Debug thread ID needed for thread_join. */ + uint64_t tid; +#endif + /** The user event semaphore. */ + RTSEMEVENTMULTI EventUser; + /** The terminated event semaphore. */ + RTSEMEVENTMULTI EventTerminated; + /** The thread type. */ + RTTHREADTYPE enmType; + /** The thread creation flags. (RTTHREADFLAGS) */ + unsigned fFlags; + /** Internal flags. (RTTHREADINT_FLAGS_ *) */ + uint32_t fIntFlags; + /** The result code. */ + int rc; + /** Thread function. */ + PFNRTTHREAD pfnThread; + /** Thread function argument. */ + void *pvUser; + /** Actual stack size. */ + size_t cbStack; +#ifdef IN_RING3 + /** The lock validator data. */ + RTLOCKVALPERTHREAD LockValidator; +#endif /* IN_RING3 */ +#ifdef RT_WITH_ICONV_CACHE + /** Handle cache for iconv. + * @remarks ASSUMES sizeof(void *) >= sizeof(iconv_t). */ + void *ahIconvs[RTSTRICONV_END]; +#endif +#ifdef IPRT_WITH_GENERIC_TLS + /** The TLS entries for this thread. */ + void *apvTlsEntries[RTTHREAD_TLS_ENTRIES]; +#endif + /** Thread name. */ + char szName[RTTHREAD_NAME_LEN]; +} RTTHREADINT; +/** Pointer to the internal representation of a thread. */ +typedef RTTHREADINT *PRTTHREADINT; + + +/** @name RTTHREADINT::fIntFlags Masks and Bits. + * @{ */ +/** Set if the thread is an alien thread. + * Clear if the thread was created by IPRT. */ +#define RTTHREADINT_FLAGS_ALIEN RT_BIT(0) +/** Set if the thread has terminated. + * Clear if the thread is running. */ +#define RTTHREADINT_FLAGS_TERMINATED RT_BIT(1) +/** This bit is set if the thread is in the AVL tree. */ +#define RTTHREADINT_FLAG_IN_TREE_BIT 2 +/** @copydoc RTTHREADINT_FLAG_IN_TREE_BIT */ +#define RTTHREADINT_FLAG_IN_TREE RT_BIT(RTTHREADINT_FLAG_IN_TREE_BIT) +/** Set if it's the main thread. */ +#define RTTHREADINT_FLAGS_MAIN RT_BIT(3) +/** @} */ + + +/** + * Initialize the native part of the thread management. + * + * Generally a TLS entry will be allocated at this point (Ring-3). + * + * @returns iprt status code. + */ +DECLHIDDEN(int) rtThreadNativeInit(void); + +#ifdef IN_RING3 +/** + * Called when IPRT was first initialized in unobtrusive mode and later changed + * to obtrustive. + * + * This is only applicable in ring-3. + */ +DECLHIDDEN(void) rtThreadNativeReInitObtrusive(void); +#endif + +/** + * Create a native thread. + * This creates the thread as described in pThreadInt and stores the thread id in *pThread. + * + * @returns iprt status code. + * @param pThreadInt The thread data structure for the thread. + * @param pNativeThread Where to store the native thread identifier. + */ +DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread); + +/** + * Adopts a thread, this is called immediately after allocating the + * thread structure. + * + * @param pThread Pointer to the thread structure. + */ +DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread); + +/** + * Called from rtThreadDestroy so that the TLS entry and any native data in the + * thread structure can be cleared. + * + * @param pThread The thread structure. + */ +DECLHIDDEN(void) rtThreadNativeDestroy(PRTTHREADINT pThread); + +#ifdef IN_RING0 +/** + * Called from rtThreadWait when the last thread has completed in order to make + * sure it's all the way out of IPRT before RTR0Term is called. + * + * @param pThread The thread structure. + */ +DECLHIDDEN(void) rtThreadNativeWaitKludge(PRTTHREADINT pThread); +#endif + + +/** + * Sets the priority of the thread according to the thread type + * and current process priority. + * + * The RTTHREADINT::enmType member has not yet been updated and will be updated by + * the caller on a successful return. + * + * @returns iprt status code. + * @param pThread The thread in question. + * @param enmType The thread type. + * @remark Located in sched. + */ +DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT pThread, RTTHREADTYPE enmType); + +#ifdef IN_RING3 +# ifdef RT_OS_WINDOWS +/** + * Callback for when a native thread is detaching. + * + * It give the Win32/64 backend a chance to terminate alien + * threads properly. + */ +DECLHIDDEN(void) rtThreadNativeDetach(void); + +/** + * Internal function for informing the debugger about a thread. + * @param pThread The thread. May differ from the calling thread. + */ +DECLHIDDEN(void) rtThreadNativeInformDebugger(PRTTHREADINT pThread); +# endif +#endif /* IN_RING3 */ + + +/* thread.cpp */ +DECLCALLBACK(DECLHIDDEN(int)) rtThreadMain(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread, const char *pszThreadName); +DECLHIDDEN(uint32_t) rtThreadRelease(PRTTHREADINT pThread); +DECLHIDDEN(void) rtThreadTerminate(PRTTHREADINT pThread, int rc); +DECLHIDDEN(PRTTHREADINT) rtThreadGetByNative(RTNATIVETHREAD NativeThread); +DECLHIDDEN(PRTTHREADINT) rtThreadGet(RTTHREAD Thread); +DECLHIDDEN(int) rtThreadInit(void); +#ifdef IN_RING3 +DECLHIDDEN(void) rtThreadReInitObtrusive(void); +#endif +DECLHIDDEN(void) rtThreadTerm(void); +DECLHIDDEN(void) rtThreadInsert(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread); +#ifdef IN_RING3 +DECLHIDDEN(int) rtThreadDoSetProcPriority(RTPROCPRIORITY enmPriority); +#endif /* !IN_RING0 */ +#ifdef IPRT_WITH_GENERIC_TLS +DECLHIDDEN(void) rtThreadClearTlsEntry(RTTLS iTls); +DECLHIDDEN(void) rtThreadTlsDestruction(PRTTHREADINT pThread); /* in tls-generic.cpp */ +#endif + +#ifdef ___iprt_asm_h + +/** + * Gets the thread state. + * + * @returns The thread state. + * @param pThread The thread. + */ +DECLINLINE(RTTHREADSTATE) rtThreadGetState(PRTTHREADINT pThread) +{ + return pThread->enmState; +} + +/** + * Sets the thread state. + * + * @param pThread The thread. + * @param enmNewState The new thread state. + */ +DECLINLINE(void) rtThreadSetState(PRTTHREADINT pThread, RTTHREADSTATE enmNewState) +{ + AssertCompile(sizeof(pThread->enmState) == sizeof(uint32_t)); + ASMAtomicWriteU32((uint32_t volatile *)&pThread->enmState, enmNewState); +} + +#endif + +RT_C_DECLS_END + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/internal/time.h +++ linux-4.4.0/ubuntu/vbox/include/internal/time.h @@ -0,0 +1,44 @@ +/* $Id: time.h $ */ +/** @file + * IPRT - Internal RTTime header + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_time_h +#define ___internal_time_h + +#include + +RT_C_DECLS_BEGIN + +#if defined(IN_RING3) || defined(IN_RC) + +extern DECLHIDDEN(uint64_t) g_u64ProgramStartNanoTS; +extern DECLHIDDEN(uint64_t) g_u64ProgramStartMicroTS; +extern DECLHIDDEN(uint64_t) g_u64ProgramStartMilliTS; + +#endif + +RT_C_DECLS_END + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/alloc.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/alloc.h @@ -0,0 +1,33 @@ +/** @file + * IPRT - Memory Allocation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_alloc_h +#define ___iprt_alloc_h + +/* Forwarding to the canonical header. */ +#include + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/alloca.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/alloca.h @@ -0,0 +1,56 @@ +/** @file + * IPRT - alloca(). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_alloca_h +#define ___iprt_alloca_h + +#if defined(IN_RC) || defined(IN_RING0_AGNOSTIC) +# error "No alloca() in raw-mode and agnostic ring-0 context as it may have external dependencies like libgcc." +#endif + +/* + * If there are more difficult platforms out there, we'll do OS + * specific #ifdefs. But for now we'll just include the headers + * which normally contains the alloca() prototype. + * When we're in kernel territory it starts getting a bit more + * interesting of course... + */ +#if defined(IN_RING0) \ + && (defined(RT_OS_DARWIN) || defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)) +/* ASSUMES GNU C */ +# define alloca(cb) __builtin_alloca(cb) + +#else +# include +# if !defined(RT_OS_DARWIN) && !defined(RT_OS_FREEBSD) +# include +# endif +# if defined(RT_OS_SOLARIS) || defined(RT_OS_LINUX) +# include +# endif +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/asm-amd64-x86.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/asm-amd64-x86.h @@ -0,0 +1,3318 @@ +/** @file + * IPRT - AMD64 and x86 Specific Assembly Functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_amd64_x86_h +#define ___iprt_asm_amd64_x86_h + +#include +#include +#if !defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86) +# error "Not on AMD64 or x86" +#endif + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(_ReadWriteBarrier) +# pragma intrinsic(__cpuid) +# pragma intrinsic(_enable) +# pragma intrinsic(_disable) +# pragma intrinsic(__rdtsc) +# pragma intrinsic(__readmsr) +# pragma intrinsic(__writemsr) +# pragma intrinsic(__outbyte) +# pragma intrinsic(__outbytestring) +# pragma intrinsic(__outword) +# pragma intrinsic(__outwordstring) +# pragma intrinsic(__outdword) +# pragma intrinsic(__outdwordstring) +# pragma intrinsic(__inbyte) +# pragma intrinsic(__inbytestring) +# pragma intrinsic(__inword) +# pragma intrinsic(__inwordstring) +# pragma intrinsic(__indword) +# pragma intrinsic(__indwordstring) +# pragma intrinsic(__invlpg) +# pragma intrinsic(__wbinvd) +# pragma intrinsic(__readcr0) +# pragma intrinsic(__readcr2) +# pragma intrinsic(__readcr3) +# pragma intrinsic(__readcr4) +# pragma intrinsic(__writecr0) +# pragma intrinsic(__writecr3) +# pragma intrinsic(__writecr4) +# pragma intrinsic(__readdr) +# pragma intrinsic(__writedr) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(__readcr8) +# pragma intrinsic(__writecr8) +# endif +# if RT_INLINE_ASM_USES_INTRIN >= 15 +# pragma intrinsic(__readeflags) +# pragma intrinsic(__writeeflags) +# pragma intrinsic(__rdtscp) +# endif +#endif + + + +/** @defgroup grp_rt_asm_amd64_x86 AMD64 and x86 Specific ASM Routines + * @ingroup grp_rt_asm + * @{ + */ + +/** @todo find a more proper place for these structures? */ + +#pragma pack(1) +/** IDTR */ +typedef struct RTIDTR +{ + /** Size of the IDT. */ + uint16_t cbIdt; + /** Address of the IDT. */ + uintptr_t pIdt; +} RTIDTR, *PRTIDTR; +#pragma pack() + +#pragma pack(1) +/** @internal */ +typedef struct RTIDTRALIGNEDINT +{ + /** Alignment padding. */ + uint8_t au16Padding[ARCH_BITS == 64 ? 3 : 1]; + /** The IDTR structure. */ + RTIDTR Idtr; +} RTIDTRALIGNEDINT; +#pragma pack() + +/** Wrapped RTIDTR for preventing misalignment exceptions. */ +typedef union RTIDTRALIGNED +{ + /** Try make sure this structure has optimal alignment. */ + uint64_t auAlignmentHack[ARCH_BITS == 64 ? 2 : 1]; + /** Aligned structure. */ + RTIDTRALIGNEDINT s; +} RTIDTRALIGNED; +AssertCompileSize(RTIDTRALIGNED, ARCH_BITS * 2 / 8); +/** Pointer to a an RTIDTR alignment wrapper. */ +typedef RTIDTRALIGNED *PRIDTRALIGNED; + + +#pragma pack(1) +/** GDTR */ +typedef struct RTGDTR +{ + /** Size of the GDT. */ + uint16_t cbGdt; + /** Address of the GDT. */ + uintptr_t pGdt; +} RTGDTR, *PRTGDTR; +#pragma pack() + +#pragma pack(1) +/** @internal */ +typedef struct RTGDTRALIGNEDINT +{ + /** Alignment padding. */ + uint8_t au16Padding[ARCH_BITS == 64 ? 3 : 1]; + /** The GDTR structure. */ + RTGDTR Gdtr; +} RTGDTRALIGNEDINT; +#pragma pack() + +/** Wrapped RTGDTR for preventing misalignment exceptions. */ +typedef union RTGDTRALIGNED +{ + /** Try make sure this structure has optimal alignment. */ + uint64_t auAlignmentHack[ARCH_BITS == 64 ? 2 : 1]; + /** Aligned structure. */ + RTGDTRALIGNEDINT s; +} RTGDTRALIGNED; +AssertCompileSize(RTGDTRALIGNED, ARCH_BITS * 2 / 8); +/** Pointer to a an RTGDTR alignment wrapper. */ +typedef RTGDTRALIGNED *PRGDTRALIGNED; + + +/** + * Gets the content of the IDTR CPU register. + * @param pIdtr Where to store the IDTR contents. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMGetIDTR(PRTIDTR pIdtr); +#else +DECLINLINE(void) ASMGetIDTR(PRTIDTR pIdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sidt %0" : "=m" (*pIdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pIdtr] + sidt [rax] +# else + mov eax, [pIdtr] + sidt [eax] +# endif + } +# endif +} +#endif + + +/** + * Gets the content of the IDTR.LIMIT CPU register. + * @returns IDTR limit. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint16_t) ASMGetIdtrLimit(void); +#else +DECLINLINE(uint16_t) ASMGetIdtrLimit(void) +{ + RTIDTRALIGNED TmpIdtr; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sidt %0" : "=m" (TmpIdtr.s.Idtr)); +# else + __asm + { + sidt [TmpIdtr.s.Idtr] + } +# endif + return TmpIdtr.s.Idtr.cbIdt; +} +#endif + + +/** + * Sets the content of the IDTR CPU register. + * @param pIdtr Where to load the IDTR contents from + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetIDTR(const RTIDTR *pIdtr); +#else +DECLINLINE(void) ASMSetIDTR(const RTIDTR *pIdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lidt %0" : : "m" (*pIdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pIdtr] + lidt [rax] +# else + mov eax, [pIdtr] + lidt [eax] +# endif + } +# endif +} +#endif + + +/** + * Gets the content of the GDTR CPU register. + * @param pGdtr Where to store the GDTR contents. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMGetGDTR(PRTGDTR pGdtr); +#else +DECLINLINE(void) ASMGetGDTR(PRTGDTR pGdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sgdt %0" : "=m" (*pGdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pGdtr] + sgdt [rax] +# else + mov eax, [pGdtr] + sgdt [eax] +# endif + } +# endif +} +#endif + + +/** + * Sets the content of the GDTR CPU register. + * @param pGdtr Where to load the GDTR contents from + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetGDTR(const RTGDTR *pGdtr); +#else +DECLINLINE(void) ASMSetGDTR(const RTGDTR *pGdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lgdt %0" : : "m" (*pGdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pGdtr] + lgdt [rax] +# else + mov eax, [pGdtr] + lgdt [eax] +# endif + } +# endif +} +#endif + + + +/** + * Get the cs register. + * @returns cs. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetCS(void); +#else +DECLINLINE(RTSEL) ASMGetCS(void) +{ + RTSEL SelCS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%cs, %0\n\t" : "=r" (SelCS)); +# else + __asm + { + mov ax, cs + mov [SelCS], ax + } +# endif + return SelCS; +} +#endif + + +/** + * Get the DS register. + * @returns DS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetDS(void); +#else +DECLINLINE(RTSEL) ASMGetDS(void) +{ + RTSEL SelDS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%ds, %0\n\t" : "=r" (SelDS)); +# else + __asm + { + mov ax, ds + mov [SelDS], ax + } +# endif + return SelDS; +} +#endif + + +/** + * Get the ES register. + * @returns ES. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetES(void); +#else +DECLINLINE(RTSEL) ASMGetES(void) +{ + RTSEL SelES; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%es, %0\n\t" : "=r" (SelES)); +# else + __asm + { + mov ax, es + mov [SelES], ax + } +# endif + return SelES; +} +#endif + + +/** + * Get the FS register. + * @returns FS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetFS(void); +#else +DECLINLINE(RTSEL) ASMGetFS(void) +{ + RTSEL SelFS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%fs, %0\n\t" : "=r" (SelFS)); +# else + __asm + { + mov ax, fs + mov [SelFS], ax + } +# endif + return SelFS; +} +# endif + + +/** + * Get the GS register. + * @returns GS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetGS(void); +#else +DECLINLINE(RTSEL) ASMGetGS(void) +{ + RTSEL SelGS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%gs, %0\n\t" : "=r" (SelGS)); +# else + __asm + { + mov ax, gs + mov [SelGS], ax + } +# endif + return SelGS; +} +#endif + + +/** + * Get the SS register. + * @returns SS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetSS(void); +#else +DECLINLINE(RTSEL) ASMGetSS(void) +{ + RTSEL SelSS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%ss, %0\n\t" : "=r" (SelSS)); +# else + __asm + { + mov ax, ss + mov [SelSS], ax + } +# endif + return SelSS; +} +#endif + + +/** + * Get the TR register. + * @returns TR. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetTR(void); +#else +DECLINLINE(RTSEL) ASMGetTR(void) +{ + RTSEL SelTR; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("str %w0\n\t" : "=r" (SelTR)); +# else + __asm + { + str ax + mov [SelTR], ax + } +# endif + return SelTR; +} +#endif + + +/** + * Get the LDTR register. + * @returns LDTR. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetLDTR(void); +#else +DECLINLINE(RTSEL) ASMGetLDTR(void) +{ + RTSEL SelLDTR; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sldt %w0\n\t" : "=r" (SelLDTR)); +# else + __asm + { + sldt ax + mov [SelLDTR], ax + } +# endif + return SelLDTR; +} +#endif + + +/** + * Get the access rights for the segment selector. + * + * @returns The access rights on success or UINT32_MAX on failure. + * @param uSel The selector value. + * + * @remarks Using UINT32_MAX for failure is chosen because valid access rights + * always have bits 0:7 as 0 (on both Intel & AMD). + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMGetSegAttr(uint32_t uSel); +#else +DECLINLINE(uint32_t) ASMGetSegAttr(uint32_t uSel) +{ + uint32_t uAttr; + /* LAR only accesses 16-bit of the source operand, but eax for the + destination operand is required for getting the full 32-bit access rights. */ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lar %1, %%eax\n\t" + "jz done%=\n\t" + "movl $0xffffffff, %%eax\n\t" + "done%=:\n\t" + "movl %%eax, %0\n\t" + : "=r" (uAttr) + : "r" (uSel) + : "cc", "%eax"); +# else + __asm + { + lar eax, [uSel] + jz done + mov eax, 0ffffffffh + done: + mov [uAttr], eax + } +# endif + return uAttr; +} +#endif + + +/** + * Get the [RE]FLAGS register. + * @returns [RE]FLAGS. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(RTCCUINTREG) ASMGetFlags(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetFlags(void) +{ + RTCCUINTREG uFlags; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "popq %0\n\t" + : "=r" (uFlags)); +# else + __asm__ __volatile__("pushfl\n\t" + "popl %0\n\t" + : "=r" (uFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + uFlags = __readeflags(); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + pushfq + pop [uFlags] +# else + pushfd + pop [uFlags] +# endif + } +# endif + return uFlags; +} +#endif + + +/** + * Set the [RE]FLAGS register. + * @param uFlags The new [RE]FLAGS value. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(void) ASMSetFlags(RTCCUINTREG uFlags); +#else +DECLINLINE(void) ASMSetFlags(RTCCUINTREG uFlags) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushq %0\n\t" + "popfq\n\t" + : : "g" (uFlags)); +# else + __asm__ __volatile__("pushl %0\n\t" + "popfl\n\t" + : : "g" (uFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + __writeeflags(uFlags); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + push [uFlags] + popfq +# else + push [uFlags] + popfd +# endif + } +# endif +} +#endif + + +/** + * Modifies the [RE]FLAGS register. + * @returns Original value. + * @param fAndEfl Flags to keep (applied first). + * @param fOrEfl Flags to be set. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(RTCCUINTREG) ASMChangeFlags(RTCCUINTREG fAndEfl, RTCCUINTREG fOrEfl); +#else +DECLINLINE(RTCCUINTREG) ASMChangeFlags(RTCCUINTREG fAndEfl, RTCCUINTREG fOrEfl) +{ + RTCCUINTREG fOldEfl; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "movq (%%rsp), %0\n\t" + "andq %0, %1\n\t" + "orq %3, %1\n\t" + "mov %1, (%%rsp)\n\t" + "popfq\n\t" + : "=&r" (fOldEfl), + "=r" (fAndEfl) + : "1" (fAndEfl), + "rn" (fOrEfl) ); +# else + __asm__ __volatile__("pushfl\n\t" + "movl (%%esp), %0\n\t" + "andl %1, (%%esp)\n\t" + "orl %2, (%%esp)\n\t" + "popfl\n\t" + : "=&r" (fOldEfl) + : "rn" (fAndEfl), + "rn" (fOrEfl) ); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + fOldEfl = __readeflags(); + __writeeflags((fOldEfl & fAndEfl) | fOrEfl); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [fAndEfl] + mov rcx, [fOrEfl] + pushfq + mov rax, [rsp] + and rdx, rax + or rdx, rcx + mov [rsp], rdx + popfq + mov [fOldEfl], rax +# else + mov edx, [fAndEfl] + mov ecx, [fOrEfl] + pushfd + mov eax, [esp] + and edx, eax + or edx, ecx + mov [esp], edx + popfd + mov [fOldEfl], eax +# endif + } +# endif + return fOldEfl; +} +#endif + + +/** + * Modifies the [RE]FLAGS register by ORing in one or more flags. + * @returns Original value. + * @param fOrEfl The flags to be set (ORed in). + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(RTCCUINTREG) ASMAddFlags(RTCCUINTREG fOrEfl); +#else +DECLINLINE(RTCCUINTREG) ASMAddFlags(RTCCUINTREG fOrEfl) +{ + RTCCUINTREG fOldEfl; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "movq (%%rsp), %0\n\t" + "orq %1, (%%rsp)\n\t" + "popfq\n\t" + : "=&r" (fOldEfl) + : "rn" (fOrEfl) ); +# else + __asm__ __volatile__("pushfl\n\t" + "movl (%%esp), %0\n\t" + "orl %1, (%%esp)\n\t" + "popfl\n\t" + : "=&r" (fOldEfl) + : "rn" (fOrEfl) ); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + fOldEfl = __readeflags(); + __writeeflags(fOldEfl | fOrEfl); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rcx, [fOrEfl] + pushfq + mov rdx, [rsp] + or [rsp], rcx + popfq + mov [fOldEfl], rax +# else + mov ecx, [fOrEfl] + pushfd + mov edx, [esp] + or [esp], ecx + popfd + mov [fOldEfl], eax +# endif + } +# endif + return fOldEfl; +} +#endif + + +/** + * Modifies the [RE]FLAGS register by AND'ing out one or more flags. + * @returns Original value. + * @param fAndEfl The flags to keep. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(RTCCUINTREG) ASMClearFlags(RTCCUINTREG fAndEfl); +#else +DECLINLINE(RTCCUINTREG) ASMClearFlags(RTCCUINTREG fAndEfl) +{ + RTCCUINTREG fOldEfl; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "movq (%%rsp), %0\n\t" + "andq %1, (%%rsp)\n\t" + "popfq\n\t" + : "=&r" (fOldEfl) + : "rn" (fAndEfl) ); +# else + __asm__ __volatile__("pushfl\n\t" + "movl (%%esp), %0\n\t" + "andl %1, (%%esp)\n\t" + "popfl\n\t" + : "=&r" (fOldEfl) + : "rn" (fAndEfl) ); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + fOldEfl = __readeflags(); + __writeeflags(fOldEfl & fAndEfl); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [fAndEfl] + pushfq + mov rdx, [rsp] + and [rsp], rdx + popfq + mov [fOldEfl], rax +# else + mov edx, [fAndEfl] + pushfd + mov edx, [esp] + and [esp], edx + popfd + mov [fOldEfl], eax +# endif + } +# endif + return fOldEfl; +} +#endif + + +/** + * Gets the content of the CPU timestamp counter register. + * + * @returns TSC. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMReadTSC(void); +#else +DECLINLINE(uint64_t) ASMReadTSC(void) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdtsc\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi)); +# else +# if RT_INLINE_ASM_USES_INTRIN + u.u = __rdtsc(); +# else + __asm + { + rdtsc + mov [u.s.Lo], eax + mov [u.s.Hi], edx + } +# endif +# endif + return u.u; +} +#endif + + +/** + * Gets the content of the CPU timestamp counter register and the + * assoicated AUX value. + * + * @returns TSC. + * @param puAux Where to store the AUX value. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(uint64_t) ASMReadTscWithAux(uint32_t *puAux); +#else +DECLINLINE(uint64_t) ASMReadTscWithAux(uint32_t *puAux) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + /* rdtscp is not supported by ancient linux build VM of course :-( */ + /*__asm__ __volatile__("rdtscp\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi), "=c" (*puAux)); */ + __asm__ __volatile__(".byte 0x0f,0x01,0xf9\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi), "=c" (*puAux)); +# else +# if RT_INLINE_ASM_USES_INTRIN >= 15 + u.u = __rdtscp(puAux); +# else + __asm + { + rdtscp + mov [u.s.Lo], eax + mov [u.s.Hi], edx + mov eax, [puAux] + mov [eax], ecx + } +# endif +# endif + return u.u; +} +#endif + + +/** + * Performs the cpuid instruction returning all registers. + * + * @param uOperator CPUID operation (eax). + * @param pvEAX Where to store eax. + * @param pvEBX Where to store ebx. + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId(uint32_t uOperator, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId(uint32_t uOperator, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uRAX, uRBX, uRCX, uRDX; + __asm__ __volatile__ ("cpuid\n\t" + : "=a" (uRAX), + "=b" (uRBX), + "=c" (uRCX), + "=d" (uRDX) + : "0" (uOperator), "2" (0)); + *(uint32_t *)pvEAX = (uint32_t)uRAX; + *(uint32_t *)pvEBX = (uint32_t)uRBX; + *(uint32_t *)pvECX = (uint32_t)uRCX; + *(uint32_t *)pvEDX = (uint32_t)uRDX; +# else + __asm__ __volatile__ ("xchgl %%ebx, %1\n\t" + "cpuid\n\t" + "xchgl %%ebx, %1\n\t" + : "=a" (*(uint32_t *)pvEAX), + "=r" (*(uint32_t *)pvEBX), + "=c" (*(uint32_t *)pvECX), + "=d" (*(uint32_t *)pvEDX) + : "0" (uOperator), "2" (0)); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + *(uint32_t *)pvEAX = aInfo[0]; + *(uint32_t *)pvEBX = aInfo[1]; + *(uint32_t *)pvECX = aInfo[2]; + *(uint32_t *)pvEDX = aInfo[3]; + +# else + uint32_t uEAX; + uint32_t uEBX; + uint32_t uECX; + uint32_t uEDX; + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [uEAX], eax + mov [uEBX], ebx + mov [uECX], ecx + mov [uEDX], edx + pop ebx + } + *(uint32_t *)pvEAX = uEAX; + *(uint32_t *)pvEBX = uEBX; + *(uint32_t *)pvECX = uECX; + *(uint32_t *)pvEDX = uEDX; +# endif +} +#endif + + +/** + * Performs the CPUID instruction with EAX and ECX input returning ALL output + * registers. + * + * @param uOperator CPUID operation (eax). + * @param uIdxECX ecx index + * @param pvEAX Where to store eax. + * @param pvEBX Where to store ebx. + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL || RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId_Idx_ECX(uint32_t uOperator, uint32_t uIdxECX, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId_Idx_ECX(uint32_t uOperator, uint32_t uIdxECX, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uRAX, uRBX, uRCX, uRDX; + __asm__ ("cpuid\n\t" + : "=a" (uRAX), + "=b" (uRBX), + "=c" (uRCX), + "=d" (uRDX) + : "0" (uOperator), + "2" (uIdxECX)); + *(uint32_t *)pvEAX = (uint32_t)uRAX; + *(uint32_t *)pvEBX = (uint32_t)uRBX; + *(uint32_t *)pvECX = (uint32_t)uRCX; + *(uint32_t *)pvEDX = (uint32_t)uRDX; +# else + __asm__ ("xchgl %%ebx, %1\n\t" + "cpuid\n\t" + "xchgl %%ebx, %1\n\t" + : "=a" (*(uint32_t *)pvEAX), + "=r" (*(uint32_t *)pvEBX), + "=c" (*(uint32_t *)pvECX), + "=d" (*(uint32_t *)pvEDX) + : "0" (uOperator), + "2" (uIdxECX)); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuidex(aInfo, uOperator, uIdxECX); + *(uint32_t *)pvEAX = aInfo[0]; + *(uint32_t *)pvEBX = aInfo[1]; + *(uint32_t *)pvECX = aInfo[2]; + *(uint32_t *)pvEDX = aInfo[3]; + +# else + uint32_t uEAX; + uint32_t uEBX; + uint32_t uECX; + uint32_t uEDX; + __asm + { + push ebx + mov eax, [uOperator] + mov ecx, [uIdxECX] + cpuid + mov [uEAX], eax + mov [uEBX], ebx + mov [uECX], ecx + mov [uEDX], edx + pop ebx + } + *(uint32_t *)pvEAX = uEAX; + *(uint32_t *)pvEBX = uEBX; + *(uint32_t *)pvECX = uECX; + *(uint32_t *)pvEDX = uEDX; +# endif +} +#endif + + +/** + * CPUID variant that initializes all 4 registers before the CPUID instruction. + * + * @returns The EAX result value. + * @param uOperator CPUID operation (eax). + * @param uInitEBX The value to assign EBX prior to the CPUID instruction. + * @param uInitECX The value to assign ECX prior to the CPUID instruction. + * @param uInitEDX The value to assign EDX prior to the CPUID instruction. + * @param pvEAX Where to store eax. Optional. + * @param pvEBX Where to store ebx. Optional. + * @param pvECX Where to store ecx. Optional. + * @param pvEDX Where to store edx. Optional. + */ +DECLASM(uint32_t) ASMCpuIdExSlow(uint32_t uOperator, uint32_t uInitEBX, uint32_t uInitECX, uint32_t uInitEDX, + void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); + + +/** + * Performs the cpuid instruction returning ecx and edx. + * + * @param uOperator CPUID operation (eax). + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId_ECX_EDX(uint32_t uOperator, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId_ECX_EDX(uint32_t uOperator, void *pvECX, void *pvEDX) +{ + uint32_t uEBX; + ASMCpuId(uOperator, &uOperator, &uEBX, pvECX, pvEDX); +} +#endif + + +/** + * Performs the cpuid instruction returning eax. + * + * @param uOperator CPUID operation (eax). + * @returns EAX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EAX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EAX(uint32_t uOperator) +{ + RTCCUINTREG xAX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (uOperator) + : "rbx", "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (xAX) + : "0" (uOperator) + : "ecx", "edx"); +# else + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (uOperator) + : "edx", "ecx", "ebx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xAX = aInfo[0]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xAX], eax + pop ebx + } +# endif + return (uint32_t)xAX; +} +#endif + + +/** + * Performs the cpuid instruction returning ebx. + * + * @param uOperator CPUID operation (eax). + * @returns EBX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EBX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EBX(uint32_t uOperator) +{ + RTCCUINTREG xBX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (uOperator) + : "rdx", "rcx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "mov %%ebx, %%edx\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=d" (xBX) + : "0" (uOperator) + : "ecx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=b" (xBX) + : "0" (uOperator) + : "edx", "ecx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xBX = aInfo[1]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xBX], ebx + pop ebx + } +# endif + return (uint32_t)xBX; +} +#endif + + +/** + * Performs the cpuid instruction returning ecx. + * + * @param uOperator CPUID operation (eax). + * @returns ECX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_ECX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_ECX(uint32_t uOperator) +{ + RTCCUINTREG xCX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=c" (xCX) + : "0" (uOperator) + : "rbx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=c" (xCX) + : "0" (uOperator) + : "edx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=c" (xCX) + : "0" (uOperator) + : "ebx", "edx"); + +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xCX = aInfo[2]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xCX], ecx + pop ebx + } +# endif + return (uint32_t)xCX; +} +#endif + + +/** + * Performs the cpuid instruction returning edx. + * + * @param uOperator CPUID operation (eax). + * @returns EDX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EDX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EDX(uint32_t uOperator) +{ + RTCCUINTREG xDX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=d" (xDX) + : "0" (uOperator) + : "rbx", "rcx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=d" (xDX) + : "0" (uOperator) + : "ecx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=d" (xDX) + : "0" (uOperator) + : "ebx", "ecx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xDX = aInfo[3]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xDX], edx + pop ebx + } +# endif + return (uint32_t)xDX; +} +#endif + + +/** + * Checks if the current CPU supports CPUID. + * + * @returns true if CPUID is supported. + */ +DECLINLINE(bool) ASMHasCpuId(void) +{ +#ifdef RT_ARCH_AMD64 + return true; /* ASSUME that all amd64 compatible CPUs have cpuid. */ +#else /* !RT_ARCH_AMD64 */ + bool fRet = false; +# if RT_INLINE_ASM_GNU_STYLE + uint32_t u1; + uint32_t u2; + __asm__ ("pushf\n\t" + "pop %1\n\t" + "mov %1, %2\n\t" + "xorl $0x200000, %1\n\t" + "push %1\n\t" + "popf\n\t" + "pushf\n\t" + "pop %1\n\t" + "cmpl %1, %2\n\t" + "setne %0\n\t" + "push %2\n\t" + "popf\n\t" + : "=m" (fRet), "=r" (u1), "=r" (u2)); +# else + __asm + { + pushfd + pop eax + mov ebx, eax + xor eax, 0200000h + push eax + popfd + pushfd + pop eax + cmp eax, ebx + setne fRet + push ebx + popfd + } +# endif + return fRet; +#endif /* !RT_ARCH_AMD64 */ +} + + +/** + * Gets the APIC ID of the current CPU. + * + * @returns the APIC ID. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint8_t) ASMGetApicId(void); +#else +DECLINLINE(uint8_t) ASMGetApicId(void) +{ + RTCCUINTREG xBX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ __volatile__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (1) + : "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + RTCCUINTREG uSpill; + __asm__ __volatile__ ("mov %%ebx,%1\n\t" + "cpuid\n\t" + "xchgl %%ebx,%1\n\t" + : "=a" (uSpill), + "=rm" (xBX) + : "0" (1) + : "ecx", "edx"); +# else + RTCCUINTREG uSpill; + __asm__ __volatile__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (1) + : "ecx", "edx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, 1); + xBX = aInfo[1]; + +# else + __asm + { + push ebx + mov eax, 1 + cpuid + mov [xBX], ebx + pop ebx + } +# endif + return (uint8_t)(xBX >> 24); +} +#endif + + +/** + * Tests if it a genuine Intel CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0) + * @param uECX ECX return from ASMCpuId(0) + * @param uEDX EDX return from ASMCpuId(0) + */ +DECLINLINE(bool) ASMIsIntelCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x756e6547) + && uECX == UINT32_C(0x6c65746e) + && uEDX == UINT32_C(0x49656e69); +} + + +/** + * Tests if this is a genuine Intel CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsIntelCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsIntelCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Tests if it an authentic AMD CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0) + * @param uECX ECX return from ASMCpuId(0) + * @param uEDX EDX return from ASMCpuId(0) + */ +DECLINLINE(bool) ASMIsAmdCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x68747541) + && uECX == UINT32_C(0x444d4163) + && uEDX == UINT32_C(0x69746e65); +} + + +/** + * Tests if this is an authentic AMD CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsAmdCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsAmdCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Tests if it a centaur hauling VIA CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0). + * @param uECX ECX return from ASMCpuId(0). + * @param uEDX EDX return from ASMCpuId(0). + */ +DECLINLINE(bool) ASMIsViaCentaurCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x746e6543) + && uECX == UINT32_C(0x736c7561) + && uEDX == UINT32_C(0x48727561); +} + + +/** + * Tests if this is a centaur hauling VIA CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsViaCentaurCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsAmdCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Checks whether ASMCpuId_EAX(0x00000000) indicates a valid range. + * + * + * @returns true/false. + * @param uEAX The EAX value of CPUID leaf 0x00000000. + * + * @note This only succeeds if there are at least two leaves in the range. + * @remarks The upper range limit is just some half reasonable value we've + * picked out of thin air. + */ +DECLINLINE(bool) ASMIsValidStdRange(uint32_t uEAX) +{ + return uEAX >= UINT32_C(0x00000001) && uEAX <= UINT32_C(0x000fffff); +} + + +/** + * Checks whether ASMCpuId_EAX(0x80000000) indicates a valid range. + * + * This only succeeds if there are at least two leaves in the range. + * + * @returns true/false. + * @param uEAX The EAX value of CPUID leaf 0x80000000. + * + * @note This only succeeds if there are at least two leaves in the range. + * @remarks The upper range limit is just some half reasonable value we've + * picked out of thin air. + */ +DECLINLINE(bool) ASMIsValidExtRange(uint32_t uEAX) +{ + return uEAX >= UINT32_C(0x80000001) && uEAX <= UINT32_C(0x800fffff); +} + + +/** + * Extracts the CPU family from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Family. + * @param uEAX EAX return from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuFamily(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf + ? ((uEAX >> 20) & 0x7f) + 0xf + : ((uEAX >> 8) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001), Intel variant. + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuModelIntel(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf || (((uEAX >> 8) & 0xf) == 0x6) /* family! */ + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001), AMD variant. + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuModelAMD(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + * @param fIntel Whether it's an intel CPU. Use ASMIsIntelCpuEx() or ASMIsIntelCpu(). + */ +DECLINLINE(uint32_t) ASMGetCpuModel(uint32_t uEAX, bool fIntel) +{ + return ((uEAX >> 8) & 0xf) == 0xf || (((uEAX >> 8) & 0xf) == 0x6 && fIntel) /* family! */ + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU stepping from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuStepping(uint32_t uEAX) +{ + return uEAX & 0xf; +} + + +/** + * Get cr0. + * @returns cr0. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR0(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR0(void) +{ + RTCCUINTREG uCR0; +# if RT_INLINE_ASM_USES_INTRIN + uCR0 = __readcr0(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr0, %0\t\n" : "=r" (uCR0)); +# else + __asm__ __volatile__("movl %%cr0, %0\t\n" : "=r" (uCR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr0 + mov [uCR0], rax +# else + mov eax, cr0 + mov [uCR0], eax +# endif + } +# endif + return uCR0; +} +#endif + + +/** + * Sets the CR0 register. + * @param uCR0 The new CR0 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR0(RTCCUINTREG uCR0); +#else +DECLINLINE(void) ASMSetCR0(RTCCUINTREG uCR0) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr0(uCR0); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr0\n\t" :: "r" (uCR0)); +# else + __asm__ __volatile__("movl %0, %%cr0\n\t" :: "r" (uCR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR0] + mov cr0, rax +# else + mov eax, [uCR0] + mov cr0, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr2. + * @returns cr2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR2(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR2(void) +{ + RTCCUINTREG uCR2; +# if RT_INLINE_ASM_USES_INTRIN + uCR2 = __readcr2(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr2, %0\t\n" : "=r" (uCR2)); +# else + __asm__ __volatile__("movl %%cr2, %0\t\n" : "=r" (uCR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr2 + mov [uCR2], rax +# else + mov eax, cr2 + mov [uCR2], eax +# endif + } +# endif + return uCR2; +} +#endif + + +/** + * Sets the CR2 register. + * @param uCR2 The new CR0 value. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetCR2(RTCCUINTREG uCR2); +#else +DECLINLINE(void) ASMSetCR2(RTCCUINTREG uCR2) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr2\n\t" :: "r" (uCR2)); +# else + __asm__ __volatile__("movl %0, %%cr2\n\t" :: "r" (uCR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR2] + mov cr2, rax +# else + mov eax, [uCR2] + mov cr2, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr3. + * @returns cr3. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR3(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR3(void) +{ + RTCCUINTREG uCR3; +# if RT_INLINE_ASM_USES_INTRIN + uCR3 = __readcr3(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr3, %0\t\n" : "=r" (uCR3)); +# else + __asm__ __volatile__("movl %%cr3, %0\t\n" : "=r" (uCR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr3 + mov [uCR3], rax +# else + mov eax, cr3 + mov [uCR3], eax +# endif + } +# endif + return uCR3; +} +#endif + + +/** + * Sets the CR3 register. + * + * @param uCR3 New CR3 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR3(RTCCUINTREG uCR3); +#else +DECLINLINE(void) ASMSetCR3(RTCCUINTREG uCR3) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr3(uCR3); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr3\n\t" : : "r" (uCR3)); +# else + __asm__ __volatile__("movl %0, %%cr3\n\t" : : "r" (uCR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR3] + mov cr3, rax +# else + mov eax, [uCR3] + mov cr3, eax +# endif + } +# endif +} +#endif + + +/** + * Reloads the CR3 register. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMReloadCR3(void); +#else +DECLINLINE(void) ASMReloadCR3(void) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr3(__readcr3()); + +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG u; +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr3, %0\n\t" + "movq %0, %%cr3\n\t" + : "=r" (u)); +# else + __asm__ __volatile__("movl %%cr3, %0\n\t" + "movl %0, %%cr3\n\t" + : "=r" (u)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr3 + mov cr3, rax +# else + mov eax, cr3 + mov cr3, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr4. + * @returns cr4. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR4(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR4(void) +{ + RTCCUINTREG uCR4; +# if RT_INLINE_ASM_USES_INTRIN + uCR4 = __readcr4(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr4, %0\t\n" : "=r" (uCR4)); +# else + __asm__ __volatile__("movl %%cr4, %0\t\n" : "=r" (uCR4)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr4 + mov [uCR4], rax +# else + push eax /* just in case */ + /*mov eax, cr4*/ + _emit 0x0f + _emit 0x20 + _emit 0xe0 + mov [uCR4], eax + pop eax +# endif + } +# endif + return uCR4; +} +#endif + + +/** + * Sets the CR4 register. + * + * @param uCR4 New CR4 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR4(RTCCUINTREG uCR4); +#else +DECLINLINE(void) ASMSetCR4(RTCCUINTREG uCR4) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr4(uCR4); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr4\n\t" : : "r" (uCR4)); +# else + __asm__ __volatile__("movl %0, %%cr4\n\t" : : "r" (uCR4)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR4] + mov cr4, rax +# else + mov eax, [uCR4] + _emit 0x0F + _emit 0x22 + _emit 0xE0 /* mov cr4, eax */ +# endif + } +# endif +} +#endif + + +/** + * Get cr8. + * @returns cr8. + * @remark The lock prefix hack for access from non-64-bit modes is NOT used and 0 is returned. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR8(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR8(void) +{ +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uCR8; +# if RT_INLINE_ASM_USES_INTRIN + uCR8 = __readcr8(); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movq %%cr8, %0\t\n" : "=r" (uCR8)); +# else + __asm + { + mov rax, cr8 + mov [uCR8], rax + } +# endif + return uCR8; +# else /* !RT_ARCH_AMD64 */ + return 0; +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Get XCR0 (eXtended feature Control Register 0). + * @returns xcr0. + */ +DECLASM(uint64_t) ASMGetXcr0(void); + +/** + * Sets the XCR0 register. + * @param uXcr0 The new XCR0 value. + */ +DECLASM(void) ASMSetXcr0(uint64_t uXcr0); + +struct X86XSAVEAREA; +/** + * Save extended CPU state. + * @param pXStateArea Where to save the state. + * @param fComponents Which state components to save. + */ +DECLASM(void) ASMXSave(struct X86XSAVEAREA *pXStateArea, uint64_t fComponents); + +/** + * Loads extended CPU state. + * @param pXStateArea Where to load the state from. + * @param fComponents Which state components to load. + */ +DECLASM(void) ASMXRstor(struct X86XSAVEAREA const *pXStateArea, uint64_t fComponents); + + +/** + * Enables interrupts (EFLAGS.IF). + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMIntEnable(void); +#else +DECLINLINE(void) ASMIntEnable(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm("sti\n"); +# elif RT_INLINE_ASM_USES_INTRIN + _enable(); +# else + __asm sti +# endif +} +#endif + + +/** + * Disables interrupts (!EFLAGS.IF). + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMIntDisable(void); +#else +DECLINLINE(void) ASMIntDisable(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm("cli\n"); +# elif RT_INLINE_ASM_USES_INTRIN + _disable(); +# else + __asm cli +# endif +} +#endif + + +/** + * Disables interrupts and returns previous xFLAGS. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMIntDisableFlags(void); +#else +DECLINLINE(RTCCUINTREG) ASMIntDisableFlags(void) +{ + RTCCUINTREG xFlags; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "cli\n\t" + "popq %0\n\t" + : "=r" (xFlags)); +# else + __asm__ __volatile__("pushfl\n\t" + "cli\n\t" + "popl %0\n\t" + : "=r" (xFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN && !defined(RT_ARCH_X86) + xFlags = ASMGetFlags(); + _disable(); +# else + __asm { + pushfd + cli + pop [xFlags] + } +# endif + return xFlags; +} +#endif + + +/** + * Are interrupts enabled? + * + * @returns true / false. + */ +DECLINLINE(bool) ASMIntAreEnabled(void) +{ + RTCCUINTREG uFlags = ASMGetFlags(); + return uFlags & 0x200 /* X86_EFL_IF */ ? true : false; +} + + +/** + * Halts the CPU until interrupted. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMHalt(void); +#else +DECLINLINE(void) ASMHalt(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("hlt\n\t"); +# else + __asm { + hlt + } +# endif +} +#endif + + +/** + * Reads a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMRdMsr(uint32_t uRegister); +#else +DECLINLINE(uint64_t) ASMRdMsr(uint32_t uRegister) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u.s.Lo), + "=d" (u.s.Hi) + : "c" (uRegister)); + +# elif RT_INLINE_ASM_USES_INTRIN + u.u = __readmsr(uRegister); + +# else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u.s.Lo], eax + mov [u.s.Hi], edx + } +# endif + + return u.u; +} +#endif + + +/** + * Writes a machine specific register. + * + * @returns Register content. + * @param uRegister Register to write to. + * @param u64Val Value to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMWrMsr(uint32_t uRegister, uint64_t u64Val); +#else +DECLINLINE(void) ASMWrMsr(uint32_t uRegister, uint64_t u64Val) +{ + RTUINT64U u; + + u.u = u64Val; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wrmsr\n\t" + ::"a" (u.s.Lo), + "d" (u.s.Hi), + "c" (uRegister)); + +# elif RT_INLINE_ASM_USES_INTRIN + __writemsr(uRegister, u.u); + +# else + __asm + { + mov ecx, [uRegister] + mov edx, [u.s.Hi] + mov eax, [u.s.Lo] + wrmsr + } +# endif +} +#endif + + +/** + * Reads a machine specific register, extended version (for AMD). + * + * @returns Register content. + * @param uRegister Register to read. + * @param uXDI RDI/EDI value. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint64_t) ASMRdMsrEx(uint32_t uRegister, RTCCUINTREG uXDI); +#else +DECLINLINE(uint64_t) ASMRdMsrEx(uint32_t uRegister, RTCCUINTREG uXDI) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u.s.Lo), + "=d" (u.s.Hi) + : "c" (uRegister), + "D" (uXDI)); + +# else + __asm + { + mov ecx, [uRegister] + xchg edi, [uXDI] + rdmsr + mov [u.s.Lo], eax + mov [u.s.Hi], edx + xchg edi, [uXDI] + } +# endif + + return u.u; +} +#endif + + +/** + * Writes a machine specific register, extended version (for AMD). + * + * @returns Register content. + * @param uRegister Register to write to. + * @param uXDI RDI/EDI value. + * @param u64Val Value to write. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMWrMsrEx(uint32_t uRegister, RTCCUINTREG uXDI, uint64_t u64Val); +#else +DECLINLINE(void) ASMWrMsrEx(uint32_t uRegister, RTCCUINTREG uXDI, uint64_t u64Val) +{ + RTUINT64U u; + + u.u = u64Val; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wrmsr\n\t" + ::"a" (u.s.Lo), + "d" (u.s.Hi), + "c" (uRegister), + "D" (uXDI)); + +# else + __asm + { + mov ecx, [uRegister] + xchg edi, [uXDI] + mov edx, [u.s.Hi] + mov eax, [u.s.Lo] + wrmsr + xchg edi, [uXDI] + } +# endif +} +#endif + + + +/** + * Reads low part of a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMRdMsr_Low(uint32_t uRegister); +#else +DECLINLINE(uint32_t) ASMRdMsr_Low(uint32_t uRegister) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u32) + : "c" (uRegister) + : "edx"); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = (uint32_t)__readmsr(uRegister); + +#else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u32], eax + } +# endif + + return u32; +} +#endif + + +/** + * Reads high part of a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMRdMsr_High(uint32_t uRegister); +#else +DECLINLINE(uint32_t) ASMRdMsr_High(uint32_t uRegister) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=d" (u32) + : "c" (uRegister) + : "eax"); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = (uint32_t)(__readmsr(uRegister) >> 32); + +# else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u32], edx + } +# endif + + return u32; +} +#endif + + +/** + * Gets dr0. + * + * @returns dr0. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR0(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR0(void) +{ + RTCCUINTREG uDR0; +# if RT_INLINE_ASM_USES_INTRIN + uDR0 = __readdr(0); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr0, %0\n\t" : "=r" (uDR0)); +# else + __asm__ __volatile__("movl %%dr0, %0\n\t" : "=r" (uDR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr0 + mov [uDR0], rax +# else + mov eax, dr0 + mov [uDR0], eax +# endif + } +# endif + return uDR0; +} +#endif + + +/** + * Gets dr1. + * + * @returns dr1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR1(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR1(void) +{ + RTCCUINTREG uDR1; +# if RT_INLINE_ASM_USES_INTRIN + uDR1 = __readdr(1); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr1, %0\n\t" : "=r" (uDR1)); +# else + __asm__ __volatile__("movl %%dr1, %0\n\t" : "=r" (uDR1)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr1 + mov [uDR1], rax +# else + mov eax, dr1 + mov [uDR1], eax +# endif + } +# endif + return uDR1; +} +#endif + + +/** + * Gets dr2. + * + * @returns dr2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR2(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR2(void) +{ + RTCCUINTREG uDR2; +# if RT_INLINE_ASM_USES_INTRIN + uDR2 = __readdr(2); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr2, %0\n\t" : "=r" (uDR2)); +# else + __asm__ __volatile__("movl %%dr2, %0\n\t" : "=r" (uDR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr2 + mov [uDR2], rax +# else + mov eax, dr2 + mov [uDR2], eax +# endif + } +# endif + return uDR2; +} +#endif + + +/** + * Gets dr3. + * + * @returns dr3. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR3(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR3(void) +{ + RTCCUINTREG uDR3; +# if RT_INLINE_ASM_USES_INTRIN + uDR3 = __readdr(3); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr3, %0\n\t" : "=r" (uDR3)); +# else + __asm__ __volatile__("movl %%dr3, %0\n\t" : "=r" (uDR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr3 + mov [uDR3], rax +# else + mov eax, dr3 + mov [uDR3], eax +# endif + } +# endif + return uDR3; +} +#endif + + +/** + * Gets dr6. + * + * @returns dr6. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR6(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR6(void) +{ + RTCCUINTREG uDR6; +# if RT_INLINE_ASM_USES_INTRIN + uDR6 = __readdr(6); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr6, %0\n\t" : "=r" (uDR6)); +# else + __asm__ __volatile__("movl %%dr6, %0\n\t" : "=r" (uDR6)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr6 + mov [uDR6], rax +# else + mov eax, dr6 + mov [uDR6], eax +# endif + } +# endif + return uDR6; +} +#endif + + +/** + * Reads and clears DR6. + * + * @returns DR6. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetAndClearDR6(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetAndClearDR6(void) +{ + RTCCUINTREG uDR6; +# if RT_INLINE_ASM_USES_INTRIN + uDR6 = __readdr(6); + __writedr(6, 0xffff0ff0U); /* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uNewValue = 0xffff0ff0U;/* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr6, %0\n\t" + "movq %1, %%dr6\n\t" + : "=r" (uDR6) + : "r" (uNewValue)); +# else + __asm__ __volatile__("movl %%dr6, %0\n\t" + "movl %1, %%dr6\n\t" + : "=r" (uDR6) + : "r" (uNewValue)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr6 + mov [uDR6], rax + mov rcx, rax + mov ecx, 0ffff0ff0h; /* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ + mov dr6, rcx +# else + mov eax, dr6 + mov [uDR6], eax + mov ecx, 0ffff0ff0h; /* 31-16 and 4-11 are 1's, 12 is zero. */ + mov dr6, ecx +# endif + } +# endif + return uDR6; +} +#endif + + +/** + * Gets dr7. + * + * @returns dr7. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR7(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR7(void) +{ + RTCCUINTREG uDR7; +# if RT_INLINE_ASM_USES_INTRIN + uDR7 = __readdr(7); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr7, %0\n\t" : "=r" (uDR7)); +# else + __asm__ __volatile__("movl %%dr7, %0\n\t" : "=r" (uDR7)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr7 + mov [uDR7], rax +# else + mov eax, dr7 + mov [uDR7], eax +# endif + } +# endif + return uDR7; +} +#endif + + +/** + * Sets dr0. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR0(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR0(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(0, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr0\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr0\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr0, rax +# else + mov eax, [uDRVal] + mov dr0, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr1. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR1(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR1(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(1, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr1\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr1\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr1, rax +# else + mov eax, [uDRVal] + mov dr1, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr2. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR2(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR2(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(2, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr2\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr2\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr2, rax +# else + mov eax, [uDRVal] + mov dr2, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr3. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR3(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR3(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(3, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr3\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr3\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr3, rax +# else + mov eax, [uDRVal] + mov dr3, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr6. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR6(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR6(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(6, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr6\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr6\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr6, rax +# else + mov eax, [uDRVal] + mov dr6, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr7. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR7(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR7(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(7, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr7\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr7\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr7, rax +# else + mov eax, [uDRVal] + mov dr7, eax +# endif + } +# endif +} +#endif + + +/** + * Writes a 8-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u8 8-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU8(RTIOPORT Port, uint8_t u8); +#else +DECLINLINE(void) ASMOutU8(RTIOPORT Port, uint8_t u8) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outb %b1, %w0\n\t" + :: "Nd" (Port), + "a" (u8)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outbyte(Port, u8); + +# else + __asm + { + mov dx, [Port] + mov al, [u8] + out dx, al + } +# endif +} +#endif + + +/** + * Reads a 8-bit unsigned integer from an I/O port, ordered. + * + * @returns 8-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint8_t) ASMInU8(RTIOPORT Port); +#else +DECLINLINE(uint8_t) ASMInU8(RTIOPORT Port) +{ + uint8_t u8; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inb %w1, %b0\n\t" + : "=a" (u8) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u8 = __inbyte(Port); + +# else + __asm + { + mov dx, [Port] + in al, dx + mov [u8], al + } +# endif + return u8; +} +#endif + + +/** + * Writes a 16-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u16 16-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU16(RTIOPORT Port, uint16_t u16); +#else +DECLINLINE(void) ASMOutU16(RTIOPORT Port, uint16_t u16) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outw %w1, %w0\n\t" + :: "Nd" (Port), + "a" (u16)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outword(Port, u16); + +# else + __asm + { + mov dx, [Port] + mov ax, [u16] + out dx, ax + } +# endif +} +#endif + + +/** + * Reads a 16-bit unsigned integer from an I/O port, ordered. + * + * @returns 16-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint16_t) ASMInU16(RTIOPORT Port); +#else +DECLINLINE(uint16_t) ASMInU16(RTIOPORT Port) +{ + uint16_t u16; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inw %w1, %w0\n\t" + : "=a" (u16) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u16 = __inword(Port); + +# else + __asm + { + mov dx, [Port] + in ax, dx + mov [u16], ax + } +# endif + return u16; +} +#endif + + +/** + * Writes a 32-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u32 32-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU32(RTIOPORT Port, uint32_t u32); +#else +DECLINLINE(void) ASMOutU32(RTIOPORT Port, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outl %1, %w0\n\t" + :: "Nd" (Port), + "a" (u32)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outdword(Port, u32); + +# else + __asm + { + mov dx, [Port] + mov eax, [u32] + out dx, eax + } +# endif +} +#endif + + +/** + * Reads a 32-bit unsigned integer from an I/O port, ordered. + * + * @returns 32-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMInU32(RTIOPORT Port); +#else +DECLINLINE(uint32_t) ASMInU32(RTIOPORT Port) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inl %w1, %0\n\t" + : "=a" (u32) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = __indword(Port); + +# else + __asm + { + mov dx, [Port] + in eax, dx + mov [u32], eax + } +# endif + return u32; +} +#endif + + +/** + * Writes a string of 8-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau8 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU8(RTIOPORT Port, uint8_t const *pau8, size_t c); +#else +DECLINLINE(void) ASMOutStrU8(RTIOPORT Port, uint8_t const *pau8, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsb\n\t" + : "+S" (pau8), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outbytestring(Port, (unsigned char *)pau8, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau8] + xchg esi, eax + rep outsb + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 8-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau8 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU8(RTIOPORT Port, uint8_t *pau8, size_t c); +#else +DECLINLINE(void) ASMInStrU8(RTIOPORT Port, uint8_t *pau8, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insb\n\t" + : "+D" (pau8), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __inbytestring(Port, pau8, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau8] + xchg edi, eax + rep insb + xchg edi, eax + } +# endif +} +#endif + + +/** + * Writes a string of 16-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau16 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU16(RTIOPORT Port, uint16_t const *pau16, size_t c); +#else +DECLINLINE(void) ASMOutStrU16(RTIOPORT Port, uint16_t const *pau16, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsw\n\t" + : "+S" (pau16), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outwordstring(Port, (unsigned short *)pau16, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau16] + xchg esi, eax + rep outsw + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 16-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau16 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU16(RTIOPORT Port, uint16_t *pau16, size_t c); +#else +DECLINLINE(void) ASMInStrU16(RTIOPORT Port, uint16_t *pau16, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insw\n\t" + : "+D" (pau16), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __inwordstring(Port, pau16, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau16] + xchg edi, eax + rep insw + xchg edi, eax + } +# endif +} +#endif + + +/** + * Writes a string of 32-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau32 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU32(RTIOPORT Port, uint32_t const *pau32, size_t c); +#else +DECLINLINE(void) ASMOutStrU32(RTIOPORT Port, uint32_t const *pau32, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsl\n\t" + : "+S" (pau32), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outdwordstring(Port, (unsigned long *)pau32, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau32] + xchg esi, eax + rep outsd + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 32-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau32 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU32(RTIOPORT Port, uint32_t *pau32, size_t c); +#else +DECLINLINE(void) ASMInStrU32(RTIOPORT Port, uint32_t *pau32, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insl\n\t" + : "+D" (pau32), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __indwordstring(Port, (unsigned long *)pau32, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau32] + xchg edi, eax + rep insd + xchg edi, eax + } +# endif +} +#endif + + +/** + * Invalidate page. + * + * @param pv Address of the page to invalidate. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInvalidatePage(void *pv); +#else +DECLINLINE(void) ASMInvalidatePage(void *pv) +{ +# if RT_INLINE_ASM_USES_INTRIN + __invlpg(pv); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("invlpg %0\n\t" + : : "m" (*(uint8_t *)pv)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pv] + invlpg [rax] +# else + mov eax, [pv] + invlpg [eax] +# endif + } +# endif +} +#endif + + +/** + * Write back the internal caches and invalidate them. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMWriteBackAndInvalidateCaches(void); +#else +DECLINLINE(void) ASMWriteBackAndInvalidateCaches(void) +{ +# if RT_INLINE_ASM_USES_INTRIN + __wbinvd(); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wbinvd"); +# else + __asm + { + wbinvd + } +# endif +} +#endif + + +/** + * Invalidate internal and (perhaps) external caches without first + * flushing dirty cache lines. Use with extreme care. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMInvalidateInternalCaches(void); +#else +DECLINLINE(void) ASMInvalidateInternalCaches(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("invd"); +# else + __asm + { + invd + } +# endif +} +#endif + + +/** + * Memory load/store fence, waits for any pending writes and reads to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE2 CPUID bit set. + */ +DECLINLINE(void) ASMMemoryFenceSSE2(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xf0\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_mfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xf0 + } +#endif +} + + +/** + * Memory store fence, waits for any writes to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE CPUID bit set. + */ +DECLINLINE(void) ASMWriteFenceSSE(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xf8\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_sfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xf8 + } +#endif +} + + +/** + * Memory load fence, waits for any pending reads to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE2 CPUID bit set. + */ +DECLINLINE(void) ASMReadFenceSSE2(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xe8\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_lfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xe8 + } +#endif +} + +#if !defined(_MSC_VER) || !defined(RT_ARCH_AMD64) + +/* + * Clear the AC bit in the EFLAGS register. + * Requires the X86_CPUID_STEXT_FEATURE_EBX_SMAP CPUID bit set. + * Requires to be executed in R0. + */ +DECLINLINE(void) ASMClearAC(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0x01,0xca\n\t"); +#else + __asm + { + _emit 0x0f + _emit 0x01 + _emit 0xca + } +#endif +} + + +/* + * Set the AC bit in the EFLAGS register. + * Requires the X86_CPUID_STEXT_FEATURE_EBX_SMAP CPUID bit set. + * Requires to be executed in R0. + */ +DECLINLINE(void) ASMSetAC(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0x01,0xcb\n\t"); +#else + __asm + { + _emit 0x0f + _emit 0x01 + _emit 0xcb + } +#endif +} + +#endif /* !_MSC_VER) || !RT_ARCH_AMD64 */ + +/** @} */ +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/asm-math.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/asm-math.h @@ -0,0 +1,434 @@ +/** @file + * IPRT - Assembly Routines for Optimizing some Integers Math Operations. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_math_h +#define ___iprt_asm_math_h + +#include + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(__emul) +# pragma intrinsic(__emulu) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(_mul128) +# pragma intrinsic(_umul128) +# endif +#endif + + +/** @defgroup grp_rt_asm_math Interger Math Optimizations + * @ingroup grp_rt_asm + * @{ */ + +/** + * Multiplies two unsigned 32-bit values returning an unsigned 64-bit result. + * + * @returns u32F1 * u32F2. + */ + +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_X86) +DECLASM(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2); +#else +DECLINLINE(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2) +{ +# ifdef RT_ARCH_X86 + uint64_t u64; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("mull %%edx" + : "=A" (u64) + : "a" (u32F2), "d" (u32F1)); +# elif RT_INLINE_ASM_USES_INTRIN + u64 = __emulu(u32F1, u32F2); +# else + __asm + { + mov edx, [u32F1] + mov eax, [u32F2] + mul edx + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif + return u64; +# else /* generic: */ + return (uint64_t)u32F1 * u32F2; +# endif +} +#endif + + +/** + * Multiplies two signed 32-bit values returning a signed 64-bit result. + * + * @returns u32F1 * u32F2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_X86) +DECLASM(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2); +#else +DECLINLINE(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2) +{ +# ifdef RT_ARCH_X86 + int64_t i64; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("imull %%edx" + : "=A" (i64) + : "a" (i32F2), "d" (i32F1)); +# elif RT_INLINE_ASM_USES_INTRIN + i64 = __emul(i32F1, i32F2); +# else + __asm + { + mov edx, [i32F1] + mov eax, [i32F2] + imul edx + mov dword ptr [i64], eax + mov dword ptr [i64 + 4], edx + } +# endif + return i64; +# else /* generic: */ + return (int64_t)i32F1 * i32F2; +# endif +} +#endif + + +#if ARCH_BITS == 64 +DECLINLINE(uint64_t) ASMMult2xU64Ret2xU64(uint64_t u64F1, uint64_t u64F2, uint64_t *pu64ProdHi) +{ +# if defined(RT_ARCH_AMD64) && (RT_INLINE_ASM_GNU_STYLE || RT_INLINE_ASM_USES_INTRIN) +# if RT_INLINE_ASM_GNU_STYLE + uint64_t u64Low, u64High; + __asm__ __volatile__("mulq %%rdx" + : "=a" (u64Low), "=d" (u64High) + : "0" (u64F1), "1" (u64F2)); + *pu64ProdHi = u64High; + return u64Low; +# elif RT_INLINE_ASM_USES_INTRIN + return _umul128(u64F1, u64F2, pu64ProdHi); +# else +# error "hmm" +# endif +# else /* generic: */ + /* + * F1 * F2 = Prod + * -- -- + * ab * cd = b*d + a*d*10 + b*c*10 + a*c*100 + * + * Where a, b, c and d are 'digits', and 10 is max digit + 1. + * + * Our digits are 32-bit wide, so instead of 10 we multiply by 4G. + * Prod = F1.s.Lo*F2.s.Lo + F1.s.Hi*F2.s.Lo*4G + * + F1.s.Lo*F2.s.Hi*4G + F1.s.Hi*F2.s.Hi*4G*4G + */ + RTUINT128U Prod; + RTUINT64U Tmp1; + uint64_t u64Tmp; + RTUINT64U F1, F2; + F1.u = u64F1; + F2.u = u64F2; + + Prod.s.Lo = ASMMult2xU32RetU64(F1.s.Lo, F2.s.Lo); + + Tmp1.u = ASMMult2xU32RetU64(F1.s.Hi, F2.s.Lo); + u64Tmp = (uint64_t)Prod.DWords.dw1 + Tmp1.s.Lo; + Prod.DWords.dw1 = (uint32_t)u64Tmp; + Prod.s.Hi = Tmp1.s.Hi; + Prod.s.Hi += u64Tmp >> 32; /* carry */ + + Tmp1.u = ASMMult2xU32RetU64(F1.s.Lo, F2.s.Hi); + u64Tmp = (uint64_t)Prod.DWords.dw1 + Tmp1.s.Lo; + Prod.DWords.dw1 = (uint32_t)u64Tmp; + u64Tmp >>= 32; /* carry */ + u64Tmp += Prod.DWords.dw2; + u64Tmp += Tmp1.s.Hi; + Prod.DWords.dw2 = (uint32_t)u64Tmp; + Prod.DWords.dw3 += u64Tmp >> 32; /* carry */ + + Prod.s.Hi += ASMMult2xU32RetU64(F1.s.Hi, F2.s.Hi); + *pu64ProdHi = Prod.s.Hi; + return Prod.s.Lo; +# endif +} +#endif + + + +/** + * Divides a 64-bit unsigned by a 32-bit unsigned returning an unsigned 32-bit result. + * + * @returns u64 / u32. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; + __asm__ __volatile__("divl %3" + : "=a" (u32), "=d"(uDummy) + : "A" (u64), "r" (u32)); +# else + __asm + { + mov eax, dword ptr [u64] + mov edx, dword ptr [u64 + 4] + mov ecx, [u32] + div ecx + mov [u32], eax + } +# endif + return u32; +# else /* generic: */ + return (uint32_t)(u64 / u32); +# endif +} +#endif + + +/** + * Divides a 64-bit signed by a 32-bit signed returning a signed 32-bit result. + * + * @returns u64 / u32. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32); +#else +DECLINLINE(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG iDummy; + __asm__ __volatile__("idivl %3" + : "=a" (i32), "=d"(iDummy) + : "A" (i64), "r" (i32)); +# else + __asm + { + mov eax, dword ptr [i64] + mov edx, dword ptr [i64 + 4] + mov ecx, [i32] + idiv ecx + mov [i32], eax + } +# endif + return i32; +# else /* generic: */ + return (int32_t)(i64 / i32); +# endif +} +#endif + + +/** + * Performs 64-bit unsigned by a 32-bit unsigned division with a 32-bit unsigned result, + * returning the rest. + * + * @returns u64 % u32. + * + * @remarks It is important that the result is <= UINT32_MAX or we'll overflow and crash. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(uint32_t) ASMModU64ByU32RetU32(uint64_t u64, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMModU64ByU32RetU32(uint64_t u64, uint32_t u32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; + __asm__ __volatile__("divl %3" + : "=a" (uDummy), "=d"(u32) + : "A" (u64), "r" (u32)); +# else + __asm + { + mov eax, dword ptr [u64] + mov edx, dword ptr [u64 + 4] + mov ecx, [u32] + div ecx + mov [u32], edx + } +# endif + return u32; +# else /* generic: */ + return (uint32_t)(u64 % u32); +# endif +} +#endif + + +/** + * Performs 64-bit signed by a 32-bit signed division with a 32-bit signed result, + * returning the rest. + * + * @returns u64 % u32. + * + * @remarks It is important that the result is <= UINT32_MAX or we'll overflow and crash. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(int32_t) ASMModS64ByS32RetS32(int64_t i64, int32_t i32); +#else +DECLINLINE(int32_t) ASMModS64ByS32RetS32(int64_t i64, int32_t i32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG iDummy; + __asm__ __volatile__("idivl %3" + : "=a" (iDummy), "=d"(i32) + : "A" (i64), "r" (i32)); +# else + __asm + { + mov eax, dword ptr [i64] + mov edx, dword ptr [i64 + 4] + mov ecx, [i32] + idiv ecx + mov [i32], edx + } +# endif + return i32; +# else /* generic: */ + return (int32_t)(i64 % i32); +# endif +} +#endif + + +/** + * Multiple a 32-bit by a 32-bit integer and divide the result by a 32-bit integer + * using a 64 bit intermediate result. + * + * @returns (u32A * u32B) / u32C. + * @param u32A The 32-bit value (A). + * @param u32B The 32-bit value to multiple by A. + * @param u32C The 32-bit value to divide A*B by. + * + * @remarks Architecture specific. + * @remarks Make sure the result won't ever exceed 32-bit, because hardware + * exception may be raised if it does. + * @remarks On x86 this may be used to avoid dragging in 64-bit builtin + * arithmetics functions. + */ +#if RT_INLINE_ASM_EXTERNAL && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +DECLASM(uint32_t) ASMMultU32ByU32DivByU32(uint32_t u32A, uint32_t u32B, uint32_t u32C); +#else +DECLINLINE(uint32_t) ASMMultU32ByU32DivByU32(uint32_t u32A, uint32_t u32B, uint32_t u32C) +{ +# if RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + uint32_t u32Result, u32Spill; + __asm__ __volatile__("mull %2\n\t" + "divl %3\n\t" + : "=&a" (u32Result), + "=&d" (u32Spill) + : "r" (u32B), + "r" (u32C), + "0" (u32A)); + return u32Result; +# else + return (uint32_t)(((uint64_t)u32A * u32B) / u32C); +# endif +} +#endif + + +/** + * Multiple a 64-bit by a 32-bit integer and divide the result by a 32-bit integer + * using a 96 bit intermediate result. + * + * @returns (u64A * u32B) / u32C. + * @param u64A The 64-bit value. + * @param u32B The 32-bit value to multiple by A. + * @param u32C The 32-bit value to divide A*B by. + * + * @remarks Architecture specific. + * @remarks Make sure the result won't ever exceed 64-bit, because hardware + * exception may be raised if it does. + * @remarks On x86 this may be used to avoid dragging in 64-bit builtin + * arithmetics function. + */ +#if RT_INLINE_ASM_EXTERNAL || !defined(__GNUC__) || (!defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86)) +DECLASM(uint64_t) ASMMultU64ByU32DivByU32(uint64_t u64A, uint32_t u32B, uint32_t u32C); +#else +DECLINLINE(uint64_t) ASMMultU64ByU32DivByU32(uint64_t u64A, uint32_t u32B, uint32_t u32C) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + uint64_t u64Result, u64Spill; + __asm__ __volatile__("mulq %2\n\t" + "divq %3\n\t" + : "=&a" (u64Result), + "=&d" (u64Spill) + : "r" ((uint64_t)u32B), + "r" ((uint64_t)u32C), + "0" (u64A)); + return u64Result; +# else + uint32_t u32Dummy; + uint64_t u64Result; + __asm__ __volatile__("mull %%ecx \n\t" /* eax = u64Lo.lo = (u64A.lo * u32B).lo + edx = u64Lo.hi = (u64A.lo * u32B).hi */ + "xchg %%eax,%%esi \n\t" /* esi = u64Lo.lo + eax = u64A.hi */ + "xchg %%edx,%%edi \n\t" /* edi = u64Low.hi + edx = u32C */ + "xchg %%edx,%%ecx \n\t" /* ecx = u32C + edx = u32B */ + "mull %%edx \n\t" /* eax = u64Hi.lo = (u64A.hi * u32B).lo + edx = u64Hi.hi = (u64A.hi * u32B).hi */ + "addl %%edi,%%eax \n\t" /* u64Hi.lo += u64Lo.hi */ + "adcl $0,%%edx \n\t" /* u64Hi.hi += carry */ + "divl %%ecx \n\t" /* eax = u64Hi / u32C + edx = u64Hi % u32C */ + "movl %%eax,%%edi \n\t" /* edi = u64Result.hi = u64Hi / u32C */ + "movl %%esi,%%eax \n\t" /* eax = u64Lo.lo */ + "divl %%ecx \n\t" /* u64Result.lo */ + "movl %%edi,%%edx \n\t" /* u64Result.hi */ + : "=A"(u64Result), "=c"(u32Dummy), + "=S"(u32Dummy), "=D"(u32Dummy) + : "a"((uint32_t)u64A), + "S"((uint32_t)(u64A >> 32)), + "c"(u32B), + "D"(u32C)); + return u64Result; +# endif +# else + RTUINT64U u; + uint64_t u64Lo = (uint64_t)(u64A & 0xffffffff) * u32B; + uint64_t u64Hi = (uint64_t)(u64A >> 32) * u32B; + u64Hi += (u64Lo >> 32); + u.s.Hi = (uint32_t)(u64Hi / u32C); + u.s.Lo = (uint32_t)((((u64Hi % u32C) << 32) + (u64Lo & 0xffffffff)) / u32C); + return u.u; +# endif +} +#endif + +/** @} */ +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/asm.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/asm.h @@ -0,0 +1,5024 @@ +/** @file + * IPRT - Assembly Functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_h +#define ___iprt_asm_h + +#include +#include +#include +/** @def RT_INLINE_ASM_USES_INTRIN + * Defined as 1 if we're using a _MSC_VER 1400. + * Otherwise defined as 0. + */ + +/* Solaris 10 header ugliness */ +#ifdef u +# undef u +#endif + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(_ReadWriteBarrier) +# pragma intrinsic(__cpuid) +# pragma intrinsic(__stosd) +# pragma intrinsic(__stosw) +# pragma intrinsic(__stosb) +# pragma intrinsic(_BitScanForward) +# pragma intrinsic(_BitScanReverse) +# pragma intrinsic(_bittest) +# pragma intrinsic(_bittestandset) +# pragma intrinsic(_bittestandreset) +# pragma intrinsic(_bittestandcomplement) +# pragma intrinsic(_byteswap_ushort) +# pragma intrinsic(_byteswap_ulong) +# pragma intrinsic(_interlockedbittestandset) +# pragma intrinsic(_interlockedbittestandreset) +# pragma intrinsic(_InterlockedAnd) +# pragma intrinsic(_InterlockedOr) +# pragma intrinsic(_InterlockedIncrement) +# pragma intrinsic(_InterlockedDecrement) +# pragma intrinsic(_InterlockedExchange) +# pragma intrinsic(_InterlockedExchangeAdd) +# pragma intrinsic(_InterlockedCompareExchange) +# pragma intrinsic(_InterlockedCompareExchange64) +# pragma intrinsic(_rotl) +# pragma intrinsic(_rotr) +# pragma intrinsic(_rotl64) +# pragma intrinsic(_rotr64) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(__stosq) +# pragma intrinsic(_byteswap_uint64) +# pragma intrinsic(_InterlockedExchange64) +# pragma intrinsic(_InterlockedExchangeAdd64) +# pragma intrinsic(_InterlockedAnd64) +# pragma intrinsic(_InterlockedOr64) +# pragma intrinsic(_InterlockedIncrement64) +# pragma intrinsic(_InterlockedDecrement64) +# endif +#endif + + +/** @defgroup grp_rt_asm ASM - Assembly Routines + * @ingroup grp_rt + * + * @remarks The difference between ordered and unordered atomic operations are that + * the former will complete outstanding reads and writes before continuing + * while the latter doesn't make any promises about the order. Ordered + * operations doesn't, it seems, make any 100% promise wrt to whether + * the operation will complete before any subsequent memory access. + * (please, correct if wrong.) + * + * ASMAtomicSomething operations are all ordered, while ASMAtomicUoSomething + * are unordered (note the Uo). + * + * @remarks Some remarks about __volatile__: Without this keyword gcc is allowed to reorder + * or even optimize assembler instructions away. For instance, in the following code + * the second rdmsr instruction is optimized away because gcc treats that instruction + * as deterministic: + * + * @code + * static inline uint64_t rdmsr_low(int idx) + * { + * uint32_t low; + * __asm__ ("rdmsr" : "=a"(low) : "c"(idx) : "edx"); + * } + * ... + * uint32_t msr1 = rdmsr_low(1); + * foo(msr1); + * msr1 = rdmsr_low(1); + * bar(msr1); + * @endcode + * + * The input parameter of rdmsr_low is the same for both calls and therefore gcc will + * use the result of the first call as input parameter for bar() as well. For rdmsr this + * is not acceptable as this instruction is _not_ deterministic. This applies to reading + * machine status information in general. + * + * @{ + */ + + +/** @def RT_INLINE_ASM_GCC_4_3_X_X86 + * Used to work around some 4.3.x register allocation issues in this version of + * the compiler. So far this workaround is still required for 4.4 and 4.5. */ +#ifdef __GNUC__ +# define RT_INLINE_ASM_GCC_4_3_X_X86 (__GNUC__ == 4 && __GNUC_MINOR__ >= 3 && defined(__i386__)) +#endif +#ifndef RT_INLINE_ASM_GCC_4_3_X_X86 +# define RT_INLINE_ASM_GCC_4_3_X_X86 0 +#endif + +/** @def RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC + * i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493) screws up + * RTSemRWRequestWrite semsemrw-lockless-generic.cpp in release builds. PIC + * mode, x86. + * + * Some gcc 4.3.x versions may have register allocation issues with cmpxchg8b + * when in PIC mode on x86. + */ +#ifndef RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +# ifdef DOXYGEN_RUNNING +# define RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC 1 +# else +# define RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC \ + ( (defined(PIC) || defined(__PIC__)) \ + && defined(RT_ARCH_X86) \ + && ( RT_INLINE_ASM_GCC_4_3_X_X86 \ + || defined(RT_OS_DARWIN)) ) +# endif +#endif + + +/** @def ASMReturnAddress + * Gets the return address of the current (or calling if you like) function or method. + */ +#ifdef _MSC_VER +# ifdef __cplusplus +extern "C" +# endif +void * _ReturnAddress(void); +# pragma intrinsic(_ReturnAddress) +# define ASMReturnAddress() _ReturnAddress() +#elif defined(__GNUC__) || defined(DOXYGEN_RUNNING) +# define ASMReturnAddress() __builtin_return_address(0) +#else +# error "Unsupported compiler." +#endif + + +/** + * Compiler memory barrier. + * + * Ensure that the compiler does not use any cached (register/tmp stack) memory + * values or any outstanding writes when returning from this function. + * + * This function must be used if non-volatile data is modified by a + * device or the VMM. Typical cases are port access, MMIO access, + * trapping instruction, etc. + */ +#if RT_INLINE_ASM_GNU_STYLE +# define ASMCompilerBarrier() do { __asm__ __volatile__("" : : : "memory"); } while (0) +#elif RT_INLINE_ASM_USES_INTRIN +# define ASMCompilerBarrier() do { _ReadWriteBarrier(); } while (0) +#else /* 2003 should have _ReadWriteBarrier() but I guess we're at 2002 level then... */ +DECLINLINE(void) ASMCompilerBarrier(void) +{ + __asm + { + } +} +#endif + + +/** @def ASMBreakpoint + * Debugger Breakpoint. + * @deprecated Use RT_BREAKPOINT instead. + * @internal + */ +#define ASMBreakpoint() RT_BREAKPOINT() + + +/** + * Spinloop hint for platforms that have these, empty function on the other + * platforms. + * + * x86 & AMD64: The PAUSE variant of NOP for helping hyperthreaded CPUs detecting + * spin locks. + */ +#if RT_INLINE_ASM_EXTERNAL && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +DECLASM(void) ASMNopPause(void); +#else +DECLINLINE(void) ASMNopPause(void) +{ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__(".byte 0xf3,0x90\n\t"); +# else + __asm { + _emit 0f3h + _emit 090h + } +# endif +# else + /* dummy */ +# endif +} +#endif + + +/** + * Atomically Exchange an unsigned 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to update. + * @param u8 The 8-bit value to assign to *pu8. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint8_t) ASMAtomicXchgU8(volatile uint8_t *pu8, uint8_t u8); +#else +DECLINLINE(uint8_t) ASMAtomicXchgU8(volatile uint8_t *pu8, uint8_t u8) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgb %0, %1\n\t" + : "=m" (*pu8), + "=q" (u8) /* =r - busted on g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2) */ + : "1" (u8), + "m" (*pu8)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu8] + mov al, [u8] + xchg [rdx], al + mov [u8], al +# else + mov edx, [pu8] + mov al, [u8] + xchg [edx], al + mov [u8], al +# endif + } +# endif + return u8; +} +#endif + + +/** + * Atomically Exchange a signed 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pi8 Pointer to the 8-bit variable to update. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(int8_t) ASMAtomicXchgS8(volatile int8_t *pi8, int8_t i8) +{ + return (int8_t)ASMAtomicXchgU8((volatile uint8_t *)pi8, (uint8_t)i8); +} + + +/** + * Atomically Exchange a bool value, ordered. + * + * @returns Current *pf value + * @param pf Pointer to the 8-bit variable to update. + * @param f The 8-bit value to assign to *pi8. + */ +DECLINLINE(bool) ASMAtomicXchgBool(volatile bool *pf, bool f) +{ +#ifdef _MSC_VER + return !!ASMAtomicXchgU8((volatile uint8_t *)pf, (uint8_t)f); +#else + return (bool)ASMAtomicXchgU8((volatile uint8_t *)pf, (uint8_t)f); +#endif +} + + +/** + * Atomically Exchange an unsigned 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to update. + * @param u16 The 16-bit value to assign to *pu16. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint16_t) ASMAtomicXchgU16(volatile uint16_t *pu16, uint16_t u16); +#else +DECLINLINE(uint16_t) ASMAtomicXchgU16(volatile uint16_t *pu16, uint16_t u16) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgw %0, %1\n\t" + : "=m" (*pu16), + "=r" (u16) + : "1" (u16), + "m" (*pu16)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu16] + mov ax, [u16] + xchg [rdx], ax + mov [u16], ax +# else + mov edx, [pu16] + mov ax, [u16] + xchg [edx], ax + mov [u16], ax +# endif + } +# endif + return u16; +} +#endif + + +/** + * Atomically Exchange a signed 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pi16 Pointer to the 16-bit variable to update. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(int16_t) ASMAtomicXchgS16(volatile int16_t *pi16, int16_t i16) +{ + return (int16_t)ASMAtomicXchgU16((volatile uint16_t *)pi16, (uint16_t)i16); +} + + +/** + * Atomically Exchange an unsigned 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to update. + * @param u32 The 32-bit value to assign to *pu32. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicXchgU32(volatile uint32_t *pu32, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMAtomicXchgU32(volatile uint32_t *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgl %0, %1\n\t" + : "=m" (*pu32), + "=r" (u32) + : "1" (u32), + "m" (*pu32)); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedExchange((long *)pu32, u32); + +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + mov eax, u32 + xchg [rdx], eax + mov [u32], eax +# else + mov edx, [pu32] + mov eax, u32 + xchg [edx], eax + mov [u32], eax +# endif + } +# endif + return u32; +} +#endif + + +/** + * Atomically Exchange a signed 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pi32 Pointer to the 32-bit variable to update. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(int32_t) ASMAtomicXchgS32(volatile int32_t *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicXchgU32((volatile uint32_t *)pi32, (uint32_t)i32); +} + + +/** + * Atomically Exchange an unsigned 64-bit value, ordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64 The 64-bit value to assign to *pu64. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64); +#else +DECLINLINE(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64) +{ +# if defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_USES_INTRIN + u64 = _InterlockedExchange64((__int64 *)pu64, u64); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgq %0, %1\n\t" + : "=m" (*pu64), + "=r" (u64) + : "1" (u64), + "m" (*pu64)); +# else + __asm + { + mov rdx, [pu64] + mov rax, [u64] + xchg [rdx], rax + mov [u64], rax + } +# endif +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = (uint32_t)u64; + __asm__ __volatile__(/*"xchgl %%esi, %5\n\t"*/ + "xchgl %%ebx, %3\n\t" + "1:\n\t" + "lock; cmpxchg8b (%5)\n\t" + "jnz 1b\n\t" + "movl %3, %%ebx\n\t" + /*"xchgl %%esi, %5\n\t"*/ + : "=A" (u64), + "=m" (*pu64) + : "0" (*pu64), + "m" ( u32EBX ), + "c" ( (uint32_t)(u64 >> 32) ), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("1:\n\t" + "lock; cmpxchg8b %1\n\t" + "jnz 1b\n\t" + : "=A" (u64), + "=m" (*pu64) + : "0" (*pu64), + "b" ( (uint32_t)u64 ), + "c" ( (uint32_t)(u64 >> 32) )); +# endif +# else + __asm + { + mov ebx, dword ptr [u64] + mov ecx, dword ptr [u64 + 4] + mov edi, pu64 + mov eax, dword ptr [edi] + mov edx, dword ptr [edi + 4] + retry: + lock cmpxchg8b [edi] + jnz retry + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically Exchange an signed 64-bit value, ordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(int64_t) ASMAtomicXchgS64(volatile int64_t *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicXchgU64((volatile uint64_t *)pi64, (uint64_t)i64); +} + + +/** + * Atomically Exchange a pointer value, ordered. + * + * @returns Current *ppv value + * @param ppv Pointer to the pointer variable to update. + * @param pv The pointer value to assign to *ppv. + */ +DECLINLINE(void *) ASMAtomicXchgPtr(void * volatile *ppv, const void *pv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppv, (uint32_t)pv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppv, (uint64_t)pv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicXchgPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to update. + * @param pv The pointer value to assign to *ppv. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicXchgPtrT(ppv, pv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + Type const pvTypeChecked = (pv); \ + Type pvTypeCheckedRet = (__typeof__(*(ppv))) ASMAtomicXchgPtr((void * volatile *)ppvTypeChecked, (void *)pvTypeChecked); \ + pvTypeCheckedRet; \ + }) +#else +# define ASMAtomicXchgPtrT(ppv, pv, Type) \ + (Type)ASMAtomicXchgPtr((void * volatile *)(ppv), (void *)(pv)) +#endif + + +/** + * Atomically Exchange a raw-mode context pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvRC Pointer to the pointer variable to update. + * @param pvRC The pointer value to assign to *ppv. + */ +DECLINLINE(RTRCPTR) ASMAtomicXchgRCPtr(RTRCPTR volatile *ppvRC, RTRCPTR pvRC) +{ + return (RTRCPTR)ASMAtomicXchgU32((uint32_t volatile *)(void *)ppvRC, (uint32_t)pvRC); +} + + +/** + * Atomically Exchange a ring-0 pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvR0 Pointer to the pointer variable to update. + * @param pvR0 The pointer value to assign to *ppv. + */ +DECLINLINE(RTR0PTR) ASMAtomicXchgR0Ptr(RTR0PTR volatile *ppvR0, RTR0PTR pvR0) +{ +#if R0_ARCH_BITS == 32 + return (RTR0PTR)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppvR0, (uint32_t)pvR0); +#elif R0_ARCH_BITS == 64 + return (RTR0PTR)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppvR0, (uint64_t)pvR0); +#else +# error "R0_ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Exchange a ring-3 pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvR3 Pointer to the pointer variable to update. + * @param pvR3 The pointer value to assign to *ppv. + */ +DECLINLINE(RTR3PTR) ASMAtomicXchgR3Ptr(RTR3PTR volatile *ppvR3, RTR3PTR pvR3) +{ +#if R3_ARCH_BITS == 32 + return (RTR3PTR)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppvR3, (uint32_t)pvR3); +#elif R3_ARCH_BITS == 64 + return (RTR3PTR)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppvR3, (uint64_t)pvR3); +#else +# error "R3_ARCH_BITS is bogus" +#endif +} + + +/** @def ASMAtomicXchgHandle + * Atomically Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param phRes Where to store the current *ph value. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicXchgHandle(ph, hNew, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicXchgU32((uint32_t volatile *)(ph), (const uint32_t)(hNew)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicXchgHandle(ph, hNew, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicXchgU64((uint64_t volatile *)(ph), (const uint64_t)(hNew)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + * @todo This is busted as its missing the result argument. + */ +#define ASMAtomicXchgSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicXchgU8((volatile uint8_t *)(void *)(pu), (uint8_t)(uNew)); break; \ + case 2: ASMAtomicXchgU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + +/** + * Atomically Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + * @param puRes Where to store the current *pu value. + */ +#define ASMAtomicXchgSizeCorrect(pu, uNew, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicXchgU8((volatile uint8_t *)(void *)(pu), (uint8_t)(uNew)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicXchgU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + + +/** + * Atomically Compare and Exchange an unsigned 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu8 Pointer to the value to update. + * @param u8New The new value to assigned to *pu8. + * @param u8Old The old value to *pu8 compare with. + */ +#if RT_INLINE_ASM_EXTERNAL || !RT_INLINE_ASM_GNU_STYLE +DECLASM(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, const uint8_t u8Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, uint8_t u8Old) +{ + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgb %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu8), + "=qm" (u8Ret), + "=a" (u8Old) + : "q" (u8New), + "2" (u8Old), + "m" (*pu8)); + return (bool)u8Ret; +} +#endif + + +/** + * Atomically Compare and Exchange a signed 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi8 Pointer to the value to update. + * @param i8New The new value to assigned to *pi8. + * @param i8Old The old value to *pi8 compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS8(volatile int8_t *pi8, const int8_t i8New, const int8_t i8Old) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pi8, (const uint8_t)i8New, (const uint8_t)i8Old); +} + + +/** + * Atomically Compare and Exchange a bool value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pf Pointer to the value to update. + * @param fNew The new value to assigned to *pf. + * @param fOld The old value to *pf compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgBool(volatile bool *pf, const bool fNew, const bool fOld) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pf, (const uint8_t)fNew, (const uint8_t)fOld); +} + + +/** + * Atomically Compare and Exchange an unsigned 32-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu32 Pointer to the value to update. + * @param u32New The new value to assigned to *pu32. + * @param u32Old The old value to *pu32 compare with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicCmpXchgU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU32(volatile uint32_t *pu32, const uint32_t u32New, uint32_t u32Old) +{ +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgl %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu32), + "=qm" (u8Ret), + "=a" (u32Old) + : "r" (u32New), + "2" (u32Old), + "m" (*pu32)); + return (bool)u8Ret; + +# elif RT_INLINE_ASM_USES_INTRIN + return (uint32_t)_InterlockedCompareExchange((long *)pu32, u32New, u32Old) == u32Old; + +# else + uint32_t u32Ret; + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] +# else + mov edx, [pu32] +# endif + mov eax, [u32Old] + mov ecx, [u32New] +# ifdef RT_ARCH_AMD64 + lock cmpxchg [rdx], ecx +# else + lock cmpxchg [edx], ecx +# endif + setz al + movzx eax, al + mov [u32Ret], eax + } + return !!u32Ret; +# endif +} +#endif + + +/** + * Atomically Compare and Exchange a signed 32-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi32 Pointer to the value to update. + * @param i32New The new value to assigned to *pi32. + * @param i32Old The old value to *pi32 compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS32(volatile int32_t *pi32, const int32_t i32New, const int32_t i32Old) +{ + return ASMAtomicCmpXchgU32((volatile uint32_t *)pi32, (uint32_t)i32New, (uint32_t)i32Old); +} + + +/** + * Atomically Compare and exchange an unsigned 64-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64New The 64-bit value to assign to *pu64. + * @param u64Old The value to compare with. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, uint64_t u64New, uint64_t u64Old) +{ +# if RT_INLINE_ASM_USES_INTRIN + return (uint64_t)_InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old) == u64Old; + +# elif defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgq %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu64), + "=qm" (u8Ret), + "=a" (u64Old) + : "r" (u64New), + "2" (u64Old), + "m" (*pu64)); + return (bool)u8Ret; +# else + bool fRet; + __asm + { + mov rdx, [pu32] + mov rax, [u64Old] + mov rcx, [u64New] + lock cmpxchg [rdx], rcx + setz al + mov [fRet], al + } + return fRet; +# endif +# else /* !RT_ARCH_AMD64 */ + uint32_t u32Ret; +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = (uint32_t)u64New; + uint32_t u32Spill; + __asm__ __volatile__("xchgl %%ebx, %4\n\t" + "lock; cmpxchg8b (%6)\n\t" + "setz %%al\n\t" + "movl %4, %%ebx\n\t" + "movzbl %%al, %%eax\n\t" + : "=a" (u32Ret), + "=d" (u32Spill), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64) +# else + "=m" (*pu64) +# endif + : "A" (u64Old), + "m" ( u32EBX ), + "c" ( (uint32_t)(u64New >> 32) ), + "S" (pu64)); +# else /* !PIC */ + uint32_t u32Spill; + __asm__ __volatile__("lock; cmpxchg8b %2\n\t" + "setz %%al\n\t" + "movzbl %%al, %%eax\n\t" + : "=a" (u32Ret), + "=d" (u32Spill), + "+m" (*pu64) + : "A" (u64Old), + "b" ( (uint32_t)u64New ), + "c" ( (uint32_t)(u64New >> 32) )); +# endif + return (bool)u32Ret; +# else + __asm + { + mov ebx, dword ptr [u64New] + mov ecx, dword ptr [u64New + 4] + mov edi, [pu64] + mov eax, dword ptr [u64Old] + mov edx, dword ptr [u64Old + 4] + lock cmpxchg8b [edi] + setz al + movzx eax, al + mov dword ptr [u32Ret], eax + } + return !!u32Ret; +# endif +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Atomically Compare and exchange a signed 64-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pu64. + * @param i64Old The value to compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS64(volatile int64_t *pi64, const int64_t i64, const int64_t i64Old) +{ + return ASMAtomicCmpXchgU64((volatile uint64_t *)pi64, (uint64_t)i64, (uint64_t)i64Old); +} + + +/** + * Atomically Compare and Exchange a pointer value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgPtrVoid(void * volatile *ppv, const void *pvNew, const void *pvOld) +{ +#if ARCH_BITS == 32 + return ASMAtomicCmpXchgU32((volatile uint32_t *)(void *)ppv, (uint32_t)pvNew, (uint32_t)pvOld); +#elif ARCH_BITS == 64 + return ASMAtomicCmpXchgU64((volatile uint64_t *)(void *)ppv, (uint64_t)pvNew, (uint64_t)pvOld); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Compare and Exchange a pointer value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicCmpXchgPtr(ppv, pvNew, pvOld) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvNewTypeChecked = (pvNew); \ + __typeof__(*(ppv)) const pvOldTypeChecked = (pvOld); \ + bool fMacroRet = ASMAtomicCmpXchgPtrVoid((void * volatile *)ppvTypeChecked, \ + (void *)pvNewTypeChecked, (void *)pvOldTypeChecked); \ + fMacroRet; \ + }) +#else +# define ASMAtomicCmpXchgPtr(ppv, pvNew, pvOld) \ + ASMAtomicCmpXchgPtrVoid((void * volatile *)(ppv), (void *)(pvNew), (void *)(pvOld)) +#endif + + +/** @def ASMAtomicCmpXchgHandle + * Atomically Compare and Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param hOld The old value to *pu compare with. + * @param fRc Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicCmpXchgHandle(ph, hNew, hOld, fRc) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + (fRc) = ASMAtomicCmpXchgU32((uint32_t volatile *)(ph), (const uint32_t)(hNew), (const uint32_t)(hOld)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicCmpXchgHandle(ph, hNew, hOld, fRc) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + (fRc) = ASMAtomicCmpXchgU64((uint64_t volatile *)(ph), (const uint64_t)(hNew), (const uint64_t)(hOld)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** @def ASMAtomicCmpXchgSize + * Atomically Compare and Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the value to update. + * @param uNew The new value to assigned to *pu. + * @param uOld The old value to *pu compare with. + * @param fRc Where to store the result. + */ +#define ASMAtomicCmpXchgSize(pu, uNew, uOld, fRc) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: (fRc) = ASMAtomicCmpXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew), (uint32_t)(uOld)); \ + break; \ + case 8: (fRc) = ASMAtomicCmpXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew), (uint64_t)(uOld)); \ + break; \ + default: AssertMsgFailed(("ASMAtomicCmpXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + (fRc) = false; \ + break; \ + } \ + } while (0) + + +/** + * Atomically Compare and Exchange an unsigned 32-bit value, additionally + * passes back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu32 Pointer to the value to update. + * @param u32New The new value to assigned to *pu32. + * @param u32Old The old value to *pu32 compare with. + * @param pu32Old Pointer store the old value at. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicCmpXchgExU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old, uint32_t *pu32Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgExU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old, uint32_t *pu32Old) +{ +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgl %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu32), + "=qm" (u8Ret), + "=a" (*pu32Old) + : "r" (u32New), + "a" (u32Old), + "m" (*pu32)); + return (bool)u8Ret; + +# elif RT_INLINE_ASM_USES_INTRIN + return (*pu32Old =_InterlockedCompareExchange((long *)pu32, u32New, u32Old)) == u32Old; + +# else + uint32_t u32Ret; + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] +# else + mov edx, [pu32] +# endif + mov eax, [u32Old] + mov ecx, [u32New] +# ifdef RT_ARCH_AMD64 + lock cmpxchg [rdx], ecx + mov rdx, [pu32Old] + mov [rdx], eax +# else + lock cmpxchg [edx], ecx + mov edx, [pu32Old] + mov [edx], eax +# endif + setz al + movzx eax, al + mov [u32Ret], eax + } + return !!u32Ret; +# endif +} +#endif + + +/** + * Atomically Compare and Exchange a signed 32-bit value, additionally + * passes back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi32 Pointer to the value to update. + * @param i32New The new value to assigned to *pi32. + * @param i32Old The old value to *pi32 compare with. + * @param pi32Old Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExS32(volatile int32_t *pi32, const int32_t i32New, const int32_t i32Old, int32_t *pi32Old) +{ + return ASMAtomicCmpXchgExU32((volatile uint32_t *)pi32, (uint32_t)i32New, (uint32_t)i32Old, (uint32_t *)pi32Old); +} + + +/** + * Atomically Compare and exchange an unsigned 64-bit value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64New The 64-bit value to assign to *pu64. + * @param u64Old The value to compare with. + * @param pu64Old Pointer store the old value at. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old) +{ +# if RT_INLINE_ASM_USES_INTRIN + return (*pu64Old =_InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old)) == u64Old; + +# elif defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgq %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu64), + "=qm" (u8Ret), + "=a" (*pu64Old) + : "r" (u64New), + "a" (u64Old), + "m" (*pu64)); + return (bool)u8Ret; +# else + bool fRet; + __asm + { + mov rdx, [pu32] + mov rax, [u64Old] + mov rcx, [u64New] + lock cmpxchg [rdx], rcx + mov rdx, [pu64Old] + mov [rdx], rax + setz al + mov [fRet], al + } + return fRet; +# endif +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE + uint64_t u64Ret; +# if defined(PIC) || defined(__PIC__) + /* NB: this code uses a memory clobber description, because the clean + * solution with an output value for *pu64 makes gcc run out of registers. + * This will cause suboptimal code, and anyone with a better solution is + * welcome to improve this. */ + __asm__ __volatile__("xchgl %%ebx, %1\n\t" + "lock; cmpxchg8b %3\n\t" + "xchgl %%ebx, %1\n\t" + : "=A" (u64Ret) + : "DS" ((uint32_t)u64New), + "c" ((uint32_t)(u64New >> 32)), + "m" (*pu64), + "0" (u64Old) + : "memory" ); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %4\n\t" + : "=A" (u64Ret), + "=m" (*pu64) + : "b" ((uint32_t)u64New), + "c" ((uint32_t)(u64New >> 32)), + "m" (*pu64), + "0" (u64Old)); +# endif + *pu64Old = u64Ret; + return u64Ret == u64Old; +# else + uint32_t u32Ret; + __asm + { + mov ebx, dword ptr [u64New] + mov ecx, dword ptr [u64New + 4] + mov edi, [pu64] + mov eax, dword ptr [u64Old] + mov edx, dword ptr [u64Old + 4] + lock cmpxchg8b [edi] + mov ebx, [pu64Old] + mov [ebx], eax + setz al + movzx eax, al + add ebx, 4 + mov [ebx], edx + mov dword ptr [u32Ret], eax + } + return !!u32Ret; +# endif +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Atomically Compare and exchange a signed 64-bit value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pu64. + * @param i64Old The value to compare with. + * @param pi64Old Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExS64(volatile int64_t *pi64, const int64_t i64, const int64_t i64Old, int64_t *pi64Old) +{ + return ASMAtomicCmpXchgExU64((volatile uint64_t *)pi64, (uint64_t)i64, (uint64_t)i64Old, (uint64_t *)pi64Old); +} + +/** @def ASMAtomicCmpXchgExHandle + * Atomically Compare and Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param hOld The old value to *pu compare with. + * @param fRc Where to store the result. + * @param phOldVal Pointer to where to store the old value. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicCmpXchgExHandle(ph, hNew, hOld, fRc, phOldVal) \ + do { \ + AssertCompile(sizeof(*ph) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*phOldVal) == sizeof(uint32_t)); \ + (fRc) = ASMAtomicCmpXchgExU32((volatile uint32_t *)(pu), (uint32_t)(uNew), (uint32_t)(uOld), (uint32_t *)(puOldVal)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicCmpXchgExHandle(ph, hNew, hOld, fRc, phOldVal) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phOldVal)) == sizeof(uint64_t)); \ + (fRc) = ASMAtomicCmpXchgExU64((volatile uint64_t *)(pu), (uint64_t)(uNew), (uint64_t)(uOld), (uint64_t *)(puOldVal)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** @def ASMAtomicCmpXchgExSize + * Atomically Compare and Exchange a value which size might differ + * between platforms or compilers. Additionally passes back old value. + * + * @param pu Pointer to the value to update. + * @param uNew The new value to assigned to *pu. + * @param uOld The old value to *pu compare with. + * @param fRc Where to store the result. + * @param puOldVal Pointer to where to store the old value. + */ +#define ASMAtomicCmpXchgExSize(pu, uNew, uOld, fRc, puOldVal) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: (fRc) = ASMAtomicCmpXchgExU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew), (uint32_t)(uOld), (uint32_t *)(uOldVal)); \ + break; \ + case 8: (fRc) = ASMAtomicCmpXchgExU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew), (uint64_t)(uOld), (uint64_t *)(uOldVal)); \ + break; \ + default: AssertMsgFailed(("ASMAtomicCmpXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + (fRc) = false; \ + (uOldVal) = 0; \ + break; \ + } \ + } while (0) + + +/** + * Atomically Compare and Exchange a pointer value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * @param ppvOld Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExPtrVoid(void * volatile *ppv, const void *pvNew, const void *pvOld, void **ppvOld) +{ +#if ARCH_BITS == 32 + return ASMAtomicCmpXchgExU32((volatile uint32_t *)(void *)ppv, (uint32_t)pvNew, (uint32_t)pvOld, (uint32_t *)ppvOld); +#elif ARCH_BITS == 64 + return ASMAtomicCmpXchgExU64((volatile uint64_t *)(void *)ppv, (uint64_t)pvNew, (uint64_t)pvOld, (uint64_t *)ppvOld); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Compare and Exchange a pointer value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * @param ppvOld Pointer store the old value at. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicCmpXchgExPtr(ppv, pvNew, pvOld, ppvOld) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvNewTypeChecked = (pvNew); \ + __typeof__(*(ppv)) const pvOldTypeChecked = (pvOld); \ + __typeof__(*(ppv)) * const ppvOldTypeChecked = (ppvOld); \ + bool fMacroRet = ASMAtomicCmpXchgExPtrVoid((void * volatile *)ppvTypeChecked, \ + (void *)pvNewTypeChecked, (void *)pvOldTypeChecked, \ + (void **)ppvOldTypeChecked); \ + fMacroRet; \ + }) +#else +# define ASMAtomicCmpXchgExPtr(ppv, pvNew, pvOld, ppvOld) \ + ASMAtomicCmpXchgExPtrVoid((void * volatile *)(ppv), (void *)(pvNew), (void *)(pvOld), (void **)(ppvOld)) +#endif + + +/** + * Serialize Instruction. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSerializeInstruction(void); +#else +DECLINLINE(void) ASMSerializeInstruction(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG xAX = 0; +# ifdef RT_ARCH_AMD64 + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (xAX) + : "rbx", "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (xAX) + : "0" (xAX) + : "ecx", "edx"); +# else + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (xAX) + : "ebx", "ecx", "edx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, 0); + +# else + __asm + { + push ebx + xor eax, eax + cpuid + pop ebx + } +# endif +} +#endif + + +/** + * Memory fence, waits for any pending writes and reads to complete. + */ +DECLINLINE(void) ASMMemoryFence(void) +{ + /** @todo use mfence? check if all cpus we care for support it. */ + uint32_t volatile u32; + ASMAtomicXchgU32(&u32, 0); +} + + +/** + * Write fence, waits for any pending writes to complete. + */ +DECLINLINE(void) ASMWriteFence(void) +{ + /** @todo use sfence? check if all cpus we care for support it. */ + ASMMemoryFence(); +} + + +/** + * Read fence, waits for any pending reads to complete. + */ +DECLINLINE(void) ASMReadFence(void) +{ + /** @todo use lfence? check if all cpus we care for support it. */ + ASMMemoryFence(); +} + + +/** + * Atomically reads an unsigned 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(uint8_t) ASMAtomicReadU8(volatile uint8_t *pu8) +{ + ASMMemoryFence(); + return *pu8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads an unsigned 8-bit value, unordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(uint8_t) ASMAtomicUoReadU8(volatile uint8_t *pu8) +{ + return *pu8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a signed 8-bit value, ordered. + * + * @returns Current *pi8 value + * @param pi8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(int8_t) ASMAtomicReadS8(volatile int8_t *pi8) +{ + ASMMemoryFence(); + return *pi8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a signed 8-bit value, unordered. + * + * @returns Current *pi8 value + * @param pi8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(int8_t) ASMAtomicUoReadS8(volatile int8_t *pi8) +{ + return *pi8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads an unsigned 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(uint16_t) ASMAtomicReadU16(volatile uint16_t *pu16) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pu16 & 1)); + return *pu16; +} + + +/** + * Atomically reads an unsigned 16-bit value, unordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(uint16_t) ASMAtomicUoReadU16(volatile uint16_t *pu16) +{ + Assert(!((uintptr_t)pu16 & 1)); + return *pu16; +} + + +/** + * Atomically reads a signed 16-bit value, ordered. + * + * @returns Current *pi16 value + * @param pi16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(int16_t) ASMAtomicReadS16(volatile int16_t *pi16) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pi16 & 1)); + return *pi16; +} + + +/** + * Atomically reads a signed 16-bit value, unordered. + * + * @returns Current *pi16 value + * @param pi16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(int16_t) ASMAtomicUoReadS16(volatile int16_t *pi16) +{ + Assert(!((uintptr_t)pi16 & 1)); + return *pi16; +} + + +/** + * Atomically reads an unsigned 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(uint32_t) ASMAtomicReadU32(volatile uint32_t *pu32) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pu32 & 3)); + return *pu32; +} + + +/** + * Atomically reads an unsigned 32-bit value, unordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(uint32_t) ASMAtomicUoReadU32(volatile uint32_t *pu32) +{ + Assert(!((uintptr_t)pu32 & 3)); + return *pu32; +} + + +/** + * Atomically reads a signed 32-bit value, ordered. + * + * @returns Current *pi32 value + * @param pi32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(int32_t) ASMAtomicReadS32(volatile int32_t *pi32) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pi32 & 3)); + return *pi32; +} + + +/** + * Atomically reads a signed 32-bit value, unordered. + * + * @returns Current *pi32 value + * @param pi32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(int32_t) ASMAtomicUoReadS32(volatile int32_t *pi32) +{ + Assert(!((uintptr_t)pi32 & 3)); + return *pi32; +} + + +/** + * Atomically reads an unsigned 64-bit value, ordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +#if (RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64)) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64) +{ + uint64_t u64; +# ifdef RT_ARCH_AMD64 + Assert(!((uintptr_t)pu64 & 7)); +/*# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__( "mfence\n\t" + "movq %1, %0\n\t" + : "=r" (u64) + : "m" (*pu64)); +# else + __asm + { + mfence + mov rdx, [pu64] + mov rax, [rdx] + mov [u64], rax + } +# endif*/ + ASMMemoryFence(); + u64 = *pu64; +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = 0; + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("xchgl %%ebx, %3\n\t" + "lock; cmpxchg8b (%5)\n\t" + "movl %3, %%ebx\n\t" + : "=A" (u64), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64) +# else + "=m" (*pu64) +# endif + : "0" (0ULL), + "m" (u32EBX), + "c" (0), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %1\n\t" + : "=A" (u64), + "+m" (*pu64) + : "0" (0ULL), + "b" (0), + "c" (0)); +# endif +# else + Assert(!((uintptr_t)pu64 & 7)); + __asm + { + xor eax, eax + xor edx, edx + mov edi, pu64 + xor ecx, ecx + xor ebx, ebx + lock cmpxchg8b [edi] + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically reads an unsigned 64-bit value, unordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +#if !defined(RT_ARCH_AMD64) \ + && ( (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC) +DECLASM(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64) +{ + uint64_t u64; +# ifdef RT_ARCH_AMD64 + Assert(!((uintptr_t)pu64 & 7)); +/*# if RT_INLINE_ASM_GNU_STYLE + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("movq %1, %0\n\t" + : "=r" (u64) + : "m" (*pu64)); +# else + __asm + { + mov rdx, [pu64] + mov rax, [rdx] + mov [u64], rax + } +# endif */ + u64 = *pu64; +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = 0; + uint32_t u32Spill; + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("xor %%eax,%%eax\n\t" + "xor %%ecx,%%ecx\n\t" + "xor %%edx,%%edx\n\t" + "xchgl %%ebx, %3\n\t" + "lock; cmpxchg8b (%4)\n\t" + "movl %3, %%ebx\n\t" + : "=A" (u64), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64), +# else + "=m" (*pu64), +# endif + "=c" (u32Spill) + : "m" (u32EBX), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %1\n\t" + : "=A" (u64), + "+m" (*pu64) + : "0" (0ULL), + "b" (0), + "c" (0)); +# endif +# else + Assert(!((uintptr_t)pu64 & 7)); + __asm + { + xor eax, eax + xor edx, edx + mov edi, pu64 + xor ecx, ecx + xor ebx, ebx + lock cmpxchg8b [edi] + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically reads a signed 64-bit value, ordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +DECLINLINE(int64_t) ASMAtomicReadS64(volatile int64_t *pi64) +{ + return (int64_t)ASMAtomicReadU64((volatile uint64_t *)pi64); +} + + +/** + * Atomically reads a signed 64-bit value, unordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +DECLINLINE(int64_t) ASMAtomicUoReadS64(volatile int64_t *pi64) +{ + return (int64_t)ASMAtomicUoReadU64((volatile uint64_t *)pi64); +} + + +/** + * Atomically reads a size_t value, ordered. + * + * @returns Current *pcb value + * @param pcb Pointer to the size_t variable to read. + */ +DECLINLINE(size_t) ASMAtomicReadZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicReadU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicReadU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically reads a size_t value, unordered. + * + * @returns Current *pcb value + * @param pcb Pointer to the size_t variable to read. + */ +DECLINLINE(size_t) ASMAtomicUoReadZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicUoReadU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicUoReadU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically reads a pointer value, ordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * + * @remarks Please use ASMAtomicReadPtrT, it provides better type safety and + * requires less typing (no casts). + */ +DECLINLINE(void *) ASMAtomicReadPtr(void * volatile *ppv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicReadU32((volatile uint32_t *)(void *)ppv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicReadU64((volatile uint64_t *)(void *)ppv); +#else +# error "ARCH_BITS is bogus" +#endif +} + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicReadPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicReadPtrT(ppv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile *ppvTypeChecked = (ppv); \ + Type pvTypeChecked = (__typeof__(*(ppv))) ASMAtomicReadPtr((void * volatile *)ppvTypeChecked); \ + pvTypeChecked; \ + }) +#else +# define ASMAtomicReadPtrT(ppv, Type) \ + (Type)ASMAtomicReadPtr((void * volatile *)(ppv)) +#endif + + +/** + * Atomically reads a pointer value, unordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * + * @remarks Please use ASMAtomicUoReadPtrT, it provides better type safety and + * requires less typing (no casts). + */ +DECLINLINE(void *) ASMAtomicUoReadPtr(void * volatile *ppv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicUoReadU32((volatile uint32_t *)(void *)ppv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicUoReadU64((volatile uint64_t *)(void *)ppv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicUoReadPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicUoReadPtrT(ppv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + Type pvTypeChecked = (__typeof__(*(ppv))) ASMAtomicUoReadPtr((void * volatile *)ppvTypeChecked); \ + pvTypeChecked; \ + }) +#else +# define ASMAtomicUoReadPtrT(ppv, Type) \ + (Type)ASMAtomicUoReadPtr((void * volatile *)(ppv)) +#endif + + +/** + * Atomically reads a boolean value, ordered. + * + * @returns Current *pf value + * @param pf Pointer to the boolean variable to read. + */ +DECLINLINE(bool) ASMAtomicReadBool(volatile bool *pf) +{ + ASMMemoryFence(); + return *pf; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a boolean value, unordered. + * + * @returns Current *pf value + * @param pf Pointer to the boolean variable to read. + */ +DECLINLINE(bool) ASMAtomicUoReadBool(volatile bool *pf) +{ + return *pf; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically read a typical IPRT handle value, ordered. + * + * @param ph Pointer to the handle variable to read. + * @param phRes Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicReadU32((uint32_t volatile *)(ph)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicReadU64((uint64_t volatile *)(ph)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically read a typical IPRT handle value, unordered. + * + * @param ph Pointer to the handle variable to read. + * @param phRes Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicUoReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicUoReadU32((uint32_t volatile *)(ph)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicUoReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicUoReadU64((uint64_t volatile *)(ph)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically read a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to read. + * @param puRes Where to store the result. + */ +#define ASMAtomicReadSize(pu, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicReadU8( (volatile uint8_t *)(void *)(pu)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicReadU16((volatile uint16_t *)(void *)(pu)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicReadU32((volatile uint32_t *)(void *)(pu)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicReadU64((volatile uint64_t *)(void *)(pu)); break; \ + default: AssertMsgFailed(("ASMAtomicReadSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically read a value which size might differ + * between platforms or compilers, unordered. + * + * @param pu Pointer to the variable to read. + * @param puRes Where to store the result. + */ +#define ASMAtomicUoReadSize(pu, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicUoReadU8( (volatile uint8_t *)(void *)(pu)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicUoReadU16((volatile uint16_t *)(void *)(pu)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicUoReadU32((volatile uint32_t *)(void *)(pu)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicUoReadU64((volatile uint64_t *)(void *)(pu)); break; \ + default: AssertMsgFailed(("ASMAtomicReadSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically writes an unsigned 8-bit value, ordered. + * + * @param pu8 Pointer to the 8-bit variable. + * @param u8 The 8-bit value to assign to *pu8. + */ +DECLINLINE(void) ASMAtomicWriteU8(volatile uint8_t *pu8, uint8_t u8) +{ + ASMAtomicXchgU8(pu8, u8); +} + + +/** + * Atomically writes an unsigned 8-bit value, unordered. + * + * @param pu8 Pointer to the 8-bit variable. + * @param u8 The 8-bit value to assign to *pu8. + */ +DECLINLINE(void) ASMAtomicUoWriteU8(volatile uint8_t *pu8, uint8_t u8) +{ + *pu8 = u8; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes a signed 8-bit value, ordered. + * + * @param pi8 Pointer to the 8-bit variable to read. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(void) ASMAtomicWriteS8(volatile int8_t *pi8, int8_t i8) +{ + ASMAtomicXchgS8(pi8, i8); +} + + +/** + * Atomically writes a signed 8-bit value, unordered. + * + * @param pi8 Pointer to the 8-bit variable to write. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(void) ASMAtomicUoWriteS8(volatile int8_t *pi8, int8_t i8) +{ + *pi8 = i8; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes an unsigned 16-bit value, ordered. + * + * @param pu16 Pointer to the 16-bit variable to write. + * @param u16 The 16-bit value to assign to *pu16. + */ +DECLINLINE(void) ASMAtomicWriteU16(volatile uint16_t *pu16, uint16_t u16) +{ + ASMAtomicXchgU16(pu16, u16); +} + + +/** + * Atomically writes an unsigned 16-bit value, unordered. + * + * @param pu16 Pointer to the 16-bit variable to write. + * @param u16 The 16-bit value to assign to *pu16. + */ +DECLINLINE(void) ASMAtomicUoWriteU16(volatile uint16_t *pu16, uint16_t u16) +{ + Assert(!((uintptr_t)pu16 & 1)); + *pu16 = u16; +} + + +/** + * Atomically writes a signed 16-bit value, ordered. + * + * @param pi16 Pointer to the 16-bit variable to write. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(void) ASMAtomicWriteS16(volatile int16_t *pi16, int16_t i16) +{ + ASMAtomicXchgS16(pi16, i16); +} + + +/** + * Atomically writes a signed 16-bit value, unordered. + * + * @param pi16 Pointer to the 16-bit variable to write. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(void) ASMAtomicUoWriteS16(volatile int16_t *pi16, int16_t i16) +{ + Assert(!((uintptr_t)pi16 & 1)); + *pi16 = i16; +} + + +/** + * Atomically writes an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the 32-bit variable to write. + * @param u32 The 32-bit value to assign to *pu32. + */ +DECLINLINE(void) ASMAtomicWriteU32(volatile uint32_t *pu32, uint32_t u32) +{ + ASMAtomicXchgU32(pu32, u32); +} + + +/** + * Atomically writes an unsigned 32-bit value, unordered. + * + * @param pu32 Pointer to the 32-bit variable to write. + * @param u32 The 32-bit value to assign to *pu32. + */ +DECLINLINE(void) ASMAtomicUoWriteU32(volatile uint32_t *pu32, uint32_t u32) +{ + Assert(!((uintptr_t)pu32 & 3)); + *pu32 = u32; +} + + +/** + * Atomically writes a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the 32-bit variable to write. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(void) ASMAtomicWriteS32(volatile int32_t *pi32, int32_t i32) +{ + ASMAtomicXchgS32(pi32, i32); +} + + +/** + * Atomically writes a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the 32-bit variable to write. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(void) ASMAtomicUoWriteS32(volatile int32_t *pi32, int32_t i32) +{ + Assert(!((uintptr_t)pi32 & 3)); + *pi32 = i32; +} + + +/** + * Atomically writes an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the 64-bit variable to write. + * @param u64 The 64-bit value to assign to *pu64. + */ +DECLINLINE(void) ASMAtomicWriteU64(volatile uint64_t *pu64, uint64_t u64) +{ + ASMAtomicXchgU64(pu64, u64); +} + + +/** + * Atomically writes an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the 64-bit variable to write. + * @param u64 The 64-bit value to assign to *pu64. + */ +DECLINLINE(void) ASMAtomicUoWriteU64(volatile uint64_t *pu64, uint64_t u64) +{ + Assert(!((uintptr_t)pu64 & 7)); +#if ARCH_BITS == 64 + *pu64 = u64; +#else + ASMAtomicXchgU64(pu64, u64); +#endif +} + + +/** + * Atomically writes a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the 64-bit variable to write. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(void) ASMAtomicWriteS64(volatile int64_t *pi64, int64_t i64) +{ + ASMAtomicXchgS64(pi64, i64); +} + + +/** + * Atomically writes a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the 64-bit variable to write. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(void) ASMAtomicUoWriteS64(volatile int64_t *pi64, int64_t i64) +{ + Assert(!((uintptr_t)pi64 & 7)); +#if ARCH_BITS == 64 + *pi64 = i64; +#else + ASMAtomicXchgS64(pi64, i64); +#endif +} + + +/** + * Atomically writes a boolean value, unordered. + * + * @param pf Pointer to the boolean variable to write. + * @param f The boolean value to assign to *pf. + */ +DECLINLINE(void) ASMAtomicWriteBool(volatile bool *pf, bool f) +{ + ASMAtomicWriteU8((uint8_t volatile *)pf, f); +} + + +/** + * Atomically writes a boolean value, unordered. + * + * @param pf Pointer to the boolean variable to write. + * @param f The boolean value to assign to *pf. + */ +DECLINLINE(void) ASMAtomicUoWriteBool(volatile bool *pf, bool f) +{ + *pf = f; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes a pointer value, ordered. + * + * @param ppv Pointer to the pointer variable to write. + * @param pv The pointer value to assign to *ppv. + */ +DECLINLINE(void) ASMAtomicWritePtrVoid(void * volatile *ppv, const void *pv) +{ +#if ARCH_BITS == 32 + ASMAtomicWriteU32((volatile uint32_t *)(void *)ppv, (uint32_t)pv); +#elif ARCH_BITS == 64 + ASMAtomicWriteU64((volatile uint64_t *)(void *)ppv, (uint64_t)pv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically writes a pointer value, ordered. + * + * @param ppv Pointer to the pointer variable to write. + * @param pv The pointer value to assign to *ppv. If NULL use + * ASMAtomicWriteNullPtr or you'll land in trouble. + * + * @remarks This is relatively type safe on GCC platforms when @a pv isn't + * NULL. + */ +#ifdef __GNUC__ +# define ASMAtomicWritePtr(ppv, pv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvTypeChecked = (pv); \ + \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + ASMAtomicWritePtrVoid((void * volatile *)(ppvTypeChecked), (void *)(pvTypeChecked)); \ + } while (0) +#else +# define ASMAtomicWritePtr(ppv, pv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + ASMAtomicWritePtrVoid((void * volatile *)(ppv), (void *)(pv)); \ + } while (0) +#endif + + +/** + * Atomically sets a pointer to NULL, ordered. + * + * @param ppv Pointer to the pointer variable that should be set to NULL. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicWriteNullPtr(ppv) \ + do \ + { \ + __typeof__(*(ppv)) * const ppvTypeChecked = (ppv); \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + ASMAtomicWritePtrVoid((void * volatile *)(ppvTypeChecked), NULL); \ + } while (0) +#else +# define ASMAtomicWriteNullPtr(ppv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + ASMAtomicWritePtrVoid((void * volatile *)(ppv), NULL); \ + } while (0) +#endif + + +/** + * Atomically writes a pointer value, unordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable. + * @param pv The pointer value to assign to *ppv. If NULL use + * ASMAtomicUoWriteNullPtr or you'll land in trouble. + * + * @remarks This is relatively type safe on GCC platforms when @a pv isn't + * NULL. + */ +#ifdef __GNUC__ +# define ASMAtomicUoWritePtr(ppv, pv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvTypeChecked = (pv); \ + \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + *(ppvTypeChecked) = pvTypeChecked; \ + } while (0) +#else +# define ASMAtomicUoWritePtr(ppv, pv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppv) = pv; \ + } while (0) +#endif + + +/** + * Atomically sets a pointer to NULL, unordered. + * + * @param ppv Pointer to the pointer variable that should be set to NULL. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicUoWriteNullPtr(ppv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppvTypeChecked) = NULL; \ + } while (0) +#else +# define ASMAtomicUoWriteNullPtr(ppv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppv) = NULL; \ + } while (0) +#endif + + +/** + * Atomically write a typical IPRT handle value, ordered. + * + * @param ph Pointer to the variable to update. + * @param hNew The value to assign to *ph. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + ASMAtomicWriteU32((uint32_t volatile *)(ph), (const uint32_t)(hNew)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + ASMAtomicWriteU64((uint64_t volatile *)(ph), (const uint64_t)(hNew)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically write a typical IPRT handle value, unordered. + * + * @param ph Pointer to the variable to update. + * @param hNew The value to assign to *ph. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicUoWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + ASMAtomicUoWriteU32((uint32_t volatile *)(ph), (const uint32_t)hNew); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicUoWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + ASMAtomicUoWriteU64((uint64_t volatile *)(ph), (const uint64_t)hNew); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically write a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + */ +#define ASMAtomicWriteSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicWriteU8( (volatile uint8_t *)(void *)(pu), (uint8_t )(uNew)); break; \ + case 2: ASMAtomicWriteU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicWriteU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicWriteU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicWriteSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + +/** + * Atomically write a value which size might differ + * between platforms or compilers, unordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + */ +#define ASMAtomicUoWriteSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicUoWriteU8( (volatile uint8_t *)(void *)(pu), (uint8_t )(uNew)); break; \ + case 2: ASMAtomicUoWriteU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicUoWriteU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicUoWriteU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicWriteSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + + +/** + * Atomically exchanges and adds to a 32-bit value, ordered. + * + * @returns The old value. + * @param pu32 Pointer to the value. + * @param u32 Number to add. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicAddU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMAtomicAddU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedExchangeAdd((long *)pu32, u32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (u32), + "m" (*pu32) + : "memory"); + return u32; +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov [u32], eax + } + return u32; +# endif +} +#endif + + +/** + * Atomically exchanges and adds to a signed 32-bit value, ordered. + * + * @returns The old value. + * @param pi32 Pointer to the value. + * @param i32 Number to add. + */ +DECLINLINE(int32_t) ASMAtomicAddS32(int32_t volatile *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically exchanges and adds to a 64-bit value, ordered. + * + * @returns The old value. + * @param pu64 Pointer to the value. + * @param u64 Number to add. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicAddU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(uint64_t) ASMAtomicAddU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + u64 = _InterlockedExchangeAdd64((__int64 *)pu64, u64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; xaddq %0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (u64), + "m" (*pu64) + : "memory"); + return u64; +# else + uint64_t u64Old; + for (;;) + { + uint64_t u64New; + u64Old = ASMAtomicUoReadU64(pu64); + u64New = u64Old + u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } + return u64Old; +# endif +} +#endif + + +/** + * Atomically exchanges and adds to a signed 64-bit value, ordered. + * + * @returns The old value. + * @param pi64 Pointer to the value. + * @param i64 Number to add. + */ +DECLINLINE(int64_t) ASMAtomicAddS64(int64_t volatile *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicAddU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically exchanges and adds to a size_t value, ordered. + * + * @returns The old value. + * @param pcb Pointer to the size_t value. + * @param cb Number to add. + */ +DECLINLINE(size_t) ASMAtomicAddZ(size_t volatile *pcb, size_t cb) +{ +#if ARCH_BITS == 64 + return ASMAtomicAddU64((uint64_t volatile *)pcb, cb); +#elif ARCH_BITS == 32 + return ASMAtomicAddU32((uint32_t volatile *)pcb, cb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically exchanges and adds a value which size might differ between + * platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to add to *pu. + * @param puOld Where to store the old value. + */ +#define ASMAtomicAddSize(pu, uNew, puOld) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: *(uint32_t *)(puOld) = ASMAtomicAddU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puOld) = ASMAtomicAddU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicAddSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically exchanges and subtracts to an unsigned 32-bit value, ordered. + * + * @returns The old value. + * @param pu32 Pointer to the value. + * @param u32 Number to subtract. + */ +DECLINLINE(uint32_t) ASMAtomicSubU32(uint32_t volatile *pu32, uint32_t u32) +{ + return ASMAtomicAddU32(pu32, (uint32_t)-(int32_t)u32); +} + + +/** + * Atomically exchanges and subtracts to a signed 32-bit value, ordered. + * + * @returns The old value. + * @param pi32 Pointer to the value. + * @param i32 Number to subtract. + */ +DECLINLINE(int32_t) ASMAtomicSubS32(int32_t volatile *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)-i32); +} + + +/** + * Atomically exchanges and subtracts to an unsigned 64-bit value, ordered. + * + * @returns The old value. + * @param pu64 Pointer to the value. + * @param u64 Number to subtract. + */ +DECLINLINE(uint64_t) ASMAtomicSubU64(uint64_t volatile *pu64, uint64_t u64) +{ + return ASMAtomicAddU64(pu64, (uint64_t)-(int64_t)u64); +} + + +/** + * Atomically exchanges and subtracts to a signed 64-bit value, ordered. + * + * @returns The old value. + * @param pi64 Pointer to the value. + * @param i64 Number to subtract. + */ +DECLINLINE(int64_t) ASMAtomicSubS64(int64_t volatile *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicAddU64((uint64_t volatile *)pi64, (uint64_t)-i64); +} + + +/** + * Atomically exchanges and subtracts to a size_t value, ordered. + * + * @returns The old value. + * @param pcb Pointer to the size_t value. + * @param cb Number to subtract. + */ +DECLINLINE(size_t) ASMAtomicSubZ(size_t volatile *pcb, size_t cb) +{ +#if ARCH_BITS == 64 + return ASMAtomicSubU64((uint64_t volatile *)pcb, cb); +#elif ARCH_BITS == 32 + return ASMAtomicSubU32((uint32_t volatile *)pcb, cb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically exchanges and subtracts a value which size might differ between + * platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to subtract to *pu. + * @param puOld Where to store the old value. + */ +#define ASMAtomicSubSize(pu, uNew, puOld) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: *(uint32_t *)(puOld) = ASMAtomicSubU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puOld) = ASMAtomicSubU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicSubSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically increment a 32-bit value, ordered. + * + * @returns The new value. + * @param pu32 Pointer to the value to increment. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicIncU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicIncU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedIncrement((long *)pu32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (1), + "m" (*pu32) + : "memory"); + return u32+1; +# else + __asm + { + mov eax, 1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov u32, eax + } + return u32+1; +# endif +} +#endif + + +/** + * Atomically increment a signed 32-bit value, ordered. + * + * @returns The new value. + * @param pi32 Pointer to the value to increment. + */ +DECLINLINE(int32_t) ASMAtomicIncS32(int32_t volatile *pi32) +{ + return (int32_t)ASMAtomicIncU32((uint32_t volatile *)pi32); +} + + +/** + * Atomically increment a 64-bit value, ordered. + * + * @returns The new value. + * @param pu64 Pointer to the value to increment. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicIncU64(uint64_t volatile *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicIncU64(uint64_t volatile *pu64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + uint64_t u64; + u64 = _InterlockedIncrement64((__int64 *)pu64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + uint64_t u64; + __asm__ __volatile__("lock; xaddq %0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (1), + "m" (*pu64) + : "memory"); + return u64 + 1; +# else + return ASMAtomicAddU64(pu64, 1) + 1; +# endif +} +#endif + + +/** + * Atomically increment a signed 64-bit value, ordered. + * + * @returns The new value. + * @param pi64 Pointer to the value to increment. + */ +DECLINLINE(int64_t) ASMAtomicIncS64(int64_t volatile *pi64) +{ + return (int64_t)ASMAtomicIncU64((uint64_t volatile *)pi64); +} + + +/** + * Atomically increment a size_t value, ordered. + * + * @returns The new value. + * @param pcb Pointer to the value to increment. + */ +DECLINLINE(int64_t) ASMAtomicIncZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicIncU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicIncU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically decrement an unsigned 32-bit value, ordered. + * + * @returns The new value. + * @param pu32 Pointer to the value to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicDecU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicDecU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedDecrement((long *)pu32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (-1), + "m" (*pu32) + : "memory"); + return u32-1; +# else + __asm + { + mov eax, -1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov u32, eax + } + return u32-1; +# endif +} +#endif + + +/** + * Atomically decrement a signed 32-bit value, ordered. + * + * @returns The new value. + * @param pi32 Pointer to the value to decrement. + */ +DECLINLINE(int32_t) ASMAtomicDecS32(int32_t volatile *pi32) +{ + return (int32_t)ASMAtomicDecU32((uint32_t volatile *)pi32); +} + + +/** + * Atomically decrement an unsigned 64-bit value, ordered. + * + * @returns The new value. + * @param pu64 Pointer to the value to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicDecU64(uint64_t volatile *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicDecU64(uint64_t volatile *pu64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + uint64_t u64 = _InterlockedDecrement64((__int64 volatile *)pu64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + uint64_t u64; + __asm__ __volatile__("lock; xaddq %q0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (~(uint64_t)0), + "m" (*pu64) + : "memory"); + return u64-1; +# else + return ASMAtomicAddU64(pu64, UINT64_MAX) - 1; +# endif +} +#endif + + +/** + * Atomically decrement a signed 64-bit value, ordered. + * + * @returns The new value. + * @param pi64 Pointer to the value to decrement. + */ +DECLINLINE(int64_t) ASMAtomicDecS64(int64_t volatile *pi64) +{ + return (int64_t)ASMAtomicDecU64((uint64_t volatile *)pi64); +} + + +/** + * Atomically decrement a size_t value, ordered. + * + * @returns The new value. + * @param pcb Pointer to the value to decrement. + */ +DECLINLINE(int64_t) ASMAtomicDecZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicDecU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicDecU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically Or an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the pointer variable to OR u32 with. + * @param u32 The value to OR *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicOrU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicOrU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + _InterlockedOr((long volatile *)pu32, (long)u32); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; orl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock or [rdx], eax +# else + mov edx, [pu32] + lock or [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically Or a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the pointer variable to OR u32 with. + * @param i32 The value to OR *pu32 with. + */ +DECLINLINE(void) ASMAtomicOrS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicOrU32((uint32_t volatile *)pi32, i32); +} + + +/** + * Atomically Or an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the pointer variable to OR u64 with. + * @param u64 The value to OR *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicOrU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicOrU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + _InterlockedOr64((__int64 volatile *)pu64, (__int64)u64); + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; orq %1, %q0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old | u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically Or a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the pointer variable to OR u64 with. + * @param i64 The value to OR *pu64 with. + */ +DECLINLINE(void) ASMAtomicOrS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicOrU64((uint64_t volatile *)pi64, i64); +} + + +/** + * Atomically And an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the pointer variable to AND u32 with. + * @param u32 The value to AND *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicAndU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicAndU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + _InterlockedAnd((long volatile *)pu32, u32); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; andl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock and [rdx], eax +# else + mov edx, [pu32] + lock and [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically And a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the pointer variable to AND i32 with. + * @param i32 The value to AND *pi32 with. + */ +DECLINLINE(void) ASMAtomicAndS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicAndU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically And an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the pointer variable to AND u64 with. + * @param u64 The value to AND *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicAndU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicAndU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + _InterlockedAnd64((__int64 volatile *)pu64, u64); + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; andq %1, %0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old & u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically And a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the pointer variable to AND i64 with. + * @param i64 The value to AND *pi64 with. + */ +DECLINLINE(void) ASMAtomicAndS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicAndU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically OR an unsigned 32-bit value, unordered but interrupt safe. + * + * @param pu32 Pointer to the pointer variable to OR u32 with. + * @param u32 The value to OR *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoOrU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicUoOrU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("orl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + or [rdx], eax +# else + mov edx, [pu32] + or [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically OR a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the pointer variable to OR u32 with. + * @param i32 The value to OR *pu32 with. + */ +DECLINLINE(void) ASMAtomicUoOrS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicUoOrU32((uint32_t volatile *)pi32, i32); +} + + +/** + * Atomically OR an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the pointer variable to OR u64 with. + * @param u64 The value to OR *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoOrU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicUoOrU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("orq %1, %q0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old | u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically Or a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the pointer variable to OR u64 with. + * @param i64 The value to OR *pu64 with. + */ +DECLINLINE(void) ASMAtomicUoOrS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicUoOrU64((uint64_t volatile *)pi64, i64); +} + + +/** + * Atomically And an unsigned 32-bit value, unordered. + * + * @param pu32 Pointer to the pointer variable to AND u32 with. + * @param u32 The value to AND *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoAndU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicUoAndU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("andl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + and [rdx], eax +# else + mov edx, [pu32] + and [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically And a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the pointer variable to AND i32 with. + * @param i32 The value to AND *pi32 with. + */ +DECLINLINE(void) ASMAtomicUoAndS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicUoAndU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically And an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the pointer variable to AND u64 with. + * @param u64 The value to AND *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoAndU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicUoAndU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("andq %1, %0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old & u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically And a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the pointer variable to AND i64 with. + * @param i64 The value to AND *pi64 with. + */ +DECLINLINE(void) ASMAtomicUoAndS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicUoAndU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically increment an unsigned 32-bit value, unordered. + * + * @returns the new value. + * @param pu32 Pointer to the variable to increment. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMAtomicUoIncU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicUoIncU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (1), + "m" (*pu32) + : "memory"); + return u32 + 1; +# else + __asm + { + mov eax, 1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + xadd [rdx], eax +# else + mov edx, [pu32] + xadd [edx], eax +# endif + mov u32, eax + } + return u32 + 1; +# endif +} +#endif + + +/** + * Atomically decrement an unsigned 32-bit value, unordered. + * + * @returns the new value. + * @param pu32 Pointer to the variable to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMAtomicUoDecU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicUoDecU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (-1), + "m" (*pu32) + : "memory"); + return u32 - 1; +# else + __asm + { + mov eax, -1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + xadd [rdx], eax +# else + mov edx, [pu32] + xadd [edx], eax +# endif + mov u32, eax + } + return u32 - 1; +# endif +} +#endif + + +/** @def RT_ASM_PAGE_SIZE + * We try avoid dragging in iprt/param.h here. + * @internal + */ +#if defined(RT_ARCH_SPARC64) +# define RT_ASM_PAGE_SIZE 0x2000 +# if defined(PAGE_SIZE) && !defined(NT_INCLUDED) +# if PAGE_SIZE != 0x2000 +# error "PAGE_SIZE is not 0x2000!" +# endif +# endif +#else +# define RT_ASM_PAGE_SIZE 0x1000 +# if defined(PAGE_SIZE) && !defined(NT_INCLUDED) +# if PAGE_SIZE != 0x1000 +# error "PAGE_SIZE is not 0x1000!" +# endif +# endif +#endif + +/** + * Zeros a 4K memory page. + * + * @param pv Pointer to the memory block. This must be page aligned. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemZeroPage(volatile void *pv); +# else +DECLINLINE(void) ASMMemZeroPage(volatile void *pv) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + __stosq((unsigned __int64 *)pv, 0, RT_ASM_PAGE_SIZE / 8); +# else + __stosd((unsigned long *)pv, 0, RT_ASM_PAGE_SIZE / 4); +# endif + +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("rep stosq" + : "=D" (pv), + "=c" (uDummy) + : "0" (pv), + "c" (RT_ASM_PAGE_SIZE >> 3), + "a" (0) + : "memory"); +# else + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (uDummy) + : "0" (pv), + "c" (RT_ASM_PAGE_SIZE >> 2), + "a" (0) + : "memory"); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + xor rax, rax + mov ecx, 0200h + mov rdi, [pv] + rep stosq +# else + xor eax, eax + mov ecx, 0400h + mov edi, [pv] + rep stosd +# endif + } +# endif +} +# endif + + +/** + * Zeros a memory block with a 32-bit aligned size. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemZero32(volatile void *pv, size_t cb); +#else +DECLINLINE(void) ASMMemZero32(volatile void *pv, size_t cb) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + if (!(cb & 7)) + __stosq((unsigned __int64 *)pv, 0, cb / 8); + else +# endif + __stosd((unsigned long *)pv, 0, cb / 4); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (cb) + : "0" (pv), + "1" (cb >> 2), + "a" (0) + : "memory"); +# else + __asm + { + xor eax, eax +# ifdef RT_ARCH_AMD64 + mov rcx, [cb] + shr rcx, 2 + mov rdi, [pv] +# else + mov ecx, [cb] + shr ecx, 2 + mov edi, [pv] +# endif + rep stosd + } +# endif +} +#endif + + +/** + * Fills a memory block with a 32-bit aligned size. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u32 The value to fill with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemFill32(volatile void *pv, size_t cb, uint32_t u32); +#else +DECLINLINE(void) ASMMemFill32(volatile void *pv, size_t cb, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + if (!(cb & 7)) + __stosq((unsigned __int64 *)pv, RT_MAKE_U64(u32, u32), cb / 8); + else +# endif + __stosd((unsigned long *)pv, u32, cb / 4); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (cb) + : "0" (pv), + "1" (cb >> 2), + "a" (u32) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rcx, [cb] + shr rcx, 2 + mov rdi, [pv] +# else + mov ecx, [cb] + shr ecx, 2 + mov edi, [pv] +# endif + mov eax, [u32] + rep stosd + } +# endif +} +#endif + + +/** + * Checks if a memory page is all zeros. + * + * @returns true / false. + * + * @param pvPage Pointer to the page. Must be aligned on 16 byte + * boundary + */ +DECLINLINE(bool) ASMMemIsZeroPage(void const *pvPage) +{ +# if 0 /*RT_INLINE_ASM_GNU_STYLE - this is actually slower... */ + union { RTCCUINTREG r; bool f; } uAX; + RTCCUINTREG xCX, xDI; + Assert(!((uintptr_t)pvPage & 15)); + __asm__ __volatile__("repe; " +# ifdef RT_ARCH_AMD64 + "scasq\n\t" +# else + "scasl\n\t" +# endif + "setnc %%al\n\t" + : "=&c" (xCX), + "=&D" (xDI), + "=&a" (uAX.r) + : "mr" (pvPage), +# ifdef RT_ARCH_AMD64 + "0" (RT_ASM_PAGE_SIZE/8), +# else + "0" (RT_ASM_PAGE_SIZE/4), +# endif + "1" (pvPage), + "2" (0)); + return uAX.f; +# else + uintptr_t const *puPtr = (uintptr_t const *)pvPage; + int cLeft = RT_ASM_PAGE_SIZE / sizeof(uintptr_t) / 8; + Assert(!((uintptr_t)pvPage & 15)); + for (;;) + { + if (puPtr[0]) return false; + if (puPtr[4]) return false; + + if (puPtr[2]) return false; + if (puPtr[6]) return false; + + if (puPtr[1]) return false; + if (puPtr[5]) return false; + + if (puPtr[3]) return false; + if (puPtr[7]) return false; + + if (!--cLeft) + return true; + puPtr += 8; + } + return true; +# endif +} + + +/** + * Checks if a memory block is filled with the specified byte. + * + * This is a sort of inverted memchr. + * + * @returns Pointer to the byte which doesn't equal u8. + * @returns NULL if all equal to u8. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u8 The value it's supposed to be filled with. + * + * @todo Fix name, it is a predicate function but it's not returning boolean! + */ +DECLINLINE(void *) ASMMemIsAll8(void const *pv, size_t cb, uint8_t u8) +{ +/** @todo rewrite this in inline assembly? */ + uint8_t const *pb = (uint8_t const *)pv; + for (; cb; cb--, pb++) + if (RT_LIKELY(*pb == u8)) + { /* likely */ } + else + return (void *)pb; + return NULL; +} + + +/** + * Checks if a memory block is filled with the specified 32-bit value. + * + * This is a sort of inverted memchr. + * + * @returns Pointer to the first value which doesn't equal u32. + * @returns NULL if all equal to u32. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u32 The value it's supposed to be filled with. + * + * @todo Fix name, it is a predicate function but it's not returning boolean! + */ +DECLINLINE(uint32_t *) ASMMemIsAllU32(void const *pv, size_t cb, uint32_t u32) +{ +/** @todo rewrite this in inline assembly? */ + uint32_t const *pu32 = (uint32_t const *)pv; + for (; cb; cb -= 4, pu32++) + if (RT_LIKELY(*pu32 == u32)) + { /* likely */ } + else + return (uint32_t *)pu32; + return NULL; +} + + +/** + * Probes a byte pointer for read access. + * + * While the function will not fault if the byte is not read accessible, + * the idea is to do this in a safe place like before acquiring locks + * and such like. + * + * Also, this functions guarantees that an eager compiler is not going + * to optimize the probing away. + * + * @param pvByte Pointer to the byte. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint8_t) ASMProbeReadByte(const void *pvByte); +#else +DECLINLINE(uint8_t) ASMProbeReadByte(const void *pvByte) +{ + /** @todo verify that the compiler actually doesn't optimize this away. (intel & gcc) */ + uint8_t u8; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movb (%1), %0\n\t" + : "=r" (u8) + : "r" (pvByte)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvByte] + mov al, [rax] +# else + mov eax, [pvByte] + mov al, [eax] +# endif + mov [u8], al + } +# endif + return u8; +} +#endif + +/** + * Probes a buffer for read access page by page. + * + * While the function will fault if the buffer is not fully read + * accessible, the idea is to do this in a safe place like before + * acquiring locks and such like. + * + * Also, this functions guarantees that an eager compiler is not going + * to optimize the probing away. + * + * @param pvBuf Pointer to the buffer. + * @param cbBuf The size of the buffer in bytes. Must be >= 1. + */ +DECLINLINE(void) ASMProbeReadBuffer(const void *pvBuf, size_t cbBuf) +{ + /** @todo verify that the compiler actually doesn't optimize this away. (intel & gcc) */ + /* the first byte */ + const uint8_t *pu8 = (const uint8_t *)pvBuf; + ASMProbeReadByte(pu8); + + /* the pages in between pages. */ + while (cbBuf > RT_ASM_PAGE_SIZE) + { + ASMProbeReadByte(pu8); + cbBuf -= RT_ASM_PAGE_SIZE; + pu8 += RT_ASM_PAGE_SIZE; + } + + /* the last byte */ + ASMProbeReadByte(pu8 + cbBuf - 1); +} + + + +/** @defgroup grp_inline_bits Bit Operations + * @{ + */ + + +/** + * Sets a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. This should be 32-bit aligned. + * @param iBit The bit to set. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitSet(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btsl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + bts [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + bts [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically sets a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to set. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicBitSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitSet(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + _interlockedbittestandset((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btsl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock bts [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock bts [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Clears a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to clear. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitClear(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btrl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + btr [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + btr [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically clears a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to toggle set. + * @remarks No memory barrier, take care on smp. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicBitClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitClear(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btrl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock btr [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock btr [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Toggles a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to toggle. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitToggle(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandcomplement((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btcl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + btc [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + btc [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically toggles a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and set. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicBitToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitToggle(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btcl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock btc [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock btc [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Tests and sets a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and set. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndSet(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btsl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + bts [rax], edx +# else + mov eax, [pvBitmap] + bts [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and sets a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to set. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicBitTestAndSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndSet(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _interlockedbittestandset((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btsl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock bts [rax], edx +# else + mov eax, [pvBitmap] + lock bts [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests and clears a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and clear. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndClear(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btrl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + btr [rax], edx +# else + mov eax, [pvBitmap] + btr [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and clears a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and clear. + * + * @remarks No memory barrier, take care on smp. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicBitTestAndClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndClear(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _interlockedbittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btrl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock btr [rax], edx +# else + mov eax, [pvBitmap] + lock btr [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests and toggles a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and toggle. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndToggle(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandcomplement((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btcl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + btc [rax], edx +# else + mov eax, [pvBitmap] + btc [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and toggles a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and toggle. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(bool) ASMAtomicBitTestAndToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndToggle(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btcl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock btc [rax], edx +# else + mov eax, [pvBitmap] + lock btc [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests if a bit in a bitmap is set. + * + * @returns true if the bit is set. + * @returns false if the bit is clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTest(const volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTest(const volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u32 = _bittest((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + + __asm__ __volatile__("btl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32) + : "m" (*(const volatile long *)pvBitmap), + "Ir" (iBit) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + bt [rax], edx +# else + mov eax, [pvBitmap] + bt [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Clears a bit range within a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBitStart The First bit to clear. + * @param iBitEnd The first bit not to clear. + */ +DECLINLINE(void) ASMBitClearRange(volatile void *pvBitmap, int32_t iBitStart, int32_t iBitEnd) +{ + if (iBitStart < iBitEnd) + { + volatile uint32_t *pu32 = (volatile uint32_t *)pvBitmap + (iBitStart >> 5); + int iStart = iBitStart & ~31; + int iEnd = iBitEnd & ~31; + if (iStart == iEnd) + *pu32 &= ((1U << (iBitStart & 31)) - 1) | ~((1U << (iBitEnd & 31)) - 1); + else + { + /* bits in first dword. */ + if (iBitStart & 31) + { + *pu32 &= (1U << (iBitStart & 31)) - 1; + pu32++; + iBitStart = iStart + 32; + } + + /* whole dword. */ + if (iBitStart != iEnd) + ASMMemZero32(pu32, (iEnd - iBitStart) >> 3); + + /* bits in last dword. */ + if (iBitEnd & 31) + { + pu32 = (volatile uint32_t *)pvBitmap + (iBitEnd >> 5); + *pu32 &= ~((1U << (iBitEnd & 31)) - 1); + } + } + } +} + + +/** + * Sets a bit range within a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBitStart The First bit to set. + * @param iBitEnd The first bit not to set. + */ +DECLINLINE(void) ASMBitSetRange(volatile void *pvBitmap, int32_t iBitStart, int32_t iBitEnd) +{ + if (iBitStart < iBitEnd) + { + volatile uint32_t *pu32 = (volatile uint32_t *)pvBitmap + (iBitStart >> 5); + int iStart = iBitStart & ~31; + int iEnd = iBitEnd & ~31; + if (iStart == iEnd) + *pu32 |= ((1U << (iBitEnd - iBitStart)) - 1) << (iBitStart & 31); + else + { + /* bits in first dword. */ + if (iBitStart & 31) + { + *pu32 |= ~((1U << (iBitStart & 31)) - 1); + pu32++; + iBitStart = iStart + 32; + } + + /* whole dword. */ + if (iBitStart != iEnd) + ASMMemFill32(pu32, (iEnd - iBitStart) >> 3, ~UINT32_C(0)); + + /* bits in last dword. */ + if (iBitEnd & 31) + { + pu32 = (volatile uint32_t *)pvBitmap + (iBitEnd >> 5); + *pu32 |= (1U << (iBitEnd & 31)) - 1; + } + } + } +} + + +/** + * Finds the first clear bit in a bitmap. + * + * @returns Index of the first zero bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(int) ASMBitFirstClear(const volatile void *pvBitmap, uint32_t cBits); +#else +DECLINLINE(int) ASMBitFirstClear(const volatile void *pvBitmap, uint32_t cBits) +{ + if (cBits) + { + int32_t iBit; +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uEAX, uECX, uEDI; + cBits = RT_ALIGN_32(cBits, 32); + __asm__ __volatile__("repe; scasl\n\t" + "je 1f\n\t" +# ifdef RT_ARCH_AMD64 + "lea -4(%%rdi), %%rdi\n\t" + "xorl (%%rdi), %%eax\n\t" + "subq %5, %%rdi\n\t" +# else + "lea -4(%%edi), %%edi\n\t" + "xorl (%%edi), %%eax\n\t" + "subl %5, %%edi\n\t" +# endif + "shll $3, %%edi\n\t" + "bsfl %%eax, %%edx\n\t" + "addl %%edi, %%edx\n\t" + "1:\t\n" + : "=d" (iBit), + "=&c" (uECX), + "=&D" (uEDI), + "=&a" (uEAX) + : "0" (0xffffffff), + "mr" (pvBitmap), + "1" (cBits >> 5), + "2" (pvBitmap), + "3" (0xffffffff)); +# else + cBits = RT_ALIGN_32(cBits, 32); + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdi, [pvBitmap] + mov rbx, rdi +# else + mov edi, [pvBitmap] + mov ebx, edi +# endif + mov edx, 0ffffffffh + mov eax, edx + mov ecx, [cBits] + shr ecx, 5 + repe scasd + je done + +# ifdef RT_ARCH_AMD64 + lea rdi, [rdi - 4] + xor eax, [rdi] + sub rdi, rbx +# else + lea edi, [edi - 4] + xor eax, [edi] + sub edi, ebx +# endif + shl edi, 3 + bsf edx, eax + add edx, edi + done: + mov [iBit], edx + } +# endif + return iBit; + } + return -1; +} +#endif + + +/** + * Finds the next clear bit in a bitmap. + * + * @returns Index of the first zero bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + * @param iBitPrev The bit returned from the last search. + * The search will start at iBitPrev + 1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(int) ASMBitNextClear(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev); +#else +DECLINLINE(int) ASMBitNextClear(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev) +{ + const volatile uint32_t *pau32Bitmap = (const volatile uint32_t *)pvBitmap; + int iBit = ++iBitPrev & 31; + if (iBit) + { + /* + * Inspect the 32-bit word containing the unaligned bit. + */ + uint32_t u32 = ~pau32Bitmap[iBitPrev / 32] >> iBit; + +# if RT_INLINE_ASM_USES_INTRIN + unsigned long ulBit = 0; + if (_BitScanForward(&ulBit, u32)) + return ulBit + iBitPrev; +# else +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "movl $-1, %0\n\t" + "1:\n\t" + : "=r" (iBit) + : "r" (u32)); +# else + __asm + { + mov edx, [u32] + bsf eax, edx + jnz done + mov eax, 0ffffffffh + done: + mov [iBit], eax + } +# endif + if (iBit >= 0) + return iBit + iBitPrev; +# endif + + /* + * Skip ahead and see if there is anything left to search. + */ + iBitPrev |= 31; + iBitPrev++; + if (cBits <= (uint32_t)iBitPrev) + return -1; + } + + /* + * 32-bit aligned search, let ASMBitFirstClear do the dirty work. + */ + iBit = ASMBitFirstClear(&pau32Bitmap[iBitPrev / 32], cBits - iBitPrev); + if (iBit >= 0) + iBit += iBitPrev; + return iBit; +} +#endif + + +/** + * Finds the first set bit in a bitmap. + * + * @returns Index of the first set bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(int) ASMBitFirstSet(const volatile void *pvBitmap, uint32_t cBits); +#else +DECLINLINE(int) ASMBitFirstSet(const volatile void *pvBitmap, uint32_t cBits) +{ + if (cBits) + { + int32_t iBit; +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uEAX, uECX, uEDI; + cBits = RT_ALIGN_32(cBits, 32); + __asm__ __volatile__("repe; scasl\n\t" + "je 1f\n\t" +# ifdef RT_ARCH_AMD64 + "lea -4(%%rdi), %%rdi\n\t" + "movl (%%rdi), %%eax\n\t" + "subq %5, %%rdi\n\t" +# else + "lea -4(%%edi), %%edi\n\t" + "movl (%%edi), %%eax\n\t" + "subl %5, %%edi\n\t" +# endif + "shll $3, %%edi\n\t" + "bsfl %%eax, %%edx\n\t" + "addl %%edi, %%edx\n\t" + "1:\t\n" + : "=d" (iBit), + "=&c" (uECX), + "=&D" (uEDI), + "=&a" (uEAX) + : "0" (0xffffffff), + "mr" (pvBitmap), + "1" (cBits >> 5), + "2" (pvBitmap), + "3" (0)); +# else + cBits = RT_ALIGN_32(cBits, 32); + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdi, [pvBitmap] + mov rbx, rdi +# else + mov edi, [pvBitmap] + mov ebx, edi +# endif + mov edx, 0ffffffffh + xor eax, eax + mov ecx, [cBits] + shr ecx, 5 + repe scasd + je done +# ifdef RT_ARCH_AMD64 + lea rdi, [rdi - 4] + mov eax, [rdi] + sub rdi, rbx +# else + lea edi, [edi - 4] + mov eax, [edi] + sub edi, ebx +# endif + shl edi, 3 + bsf edx, eax + add edx, edi + done: + mov [iBit], edx + } +# endif + return iBit; + } + return -1; +} +#endif + + +/** + * Finds the next set bit in a bitmap. + * + * @returns Index of the next set bit. + * @returns -1 if no set bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + * @param iBitPrev The bit returned from the last search. + * The search will start at iBitPrev + 1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(int) ASMBitNextSet(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev); +#else +DECLINLINE(int) ASMBitNextSet(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev) +{ + const volatile uint32_t *pau32Bitmap = (const volatile uint32_t *)pvBitmap; + int iBit = ++iBitPrev & 31; + if (iBit) + { + /* + * Inspect the 32-bit word containing the unaligned bit. + */ + uint32_t u32 = pau32Bitmap[iBitPrev / 32] >> iBit; + +# if RT_INLINE_ASM_USES_INTRIN + unsigned long ulBit = 0; + if (_BitScanForward(&ulBit, u32)) + return ulBit + iBitPrev; +# else +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "movl $-1, %0\n\t" + "1:\n\t" + : "=r" (iBit) + : "r" (u32)); +# else + __asm + { + mov edx, [u32] + bsf eax, edx + jnz done + mov eax, 0ffffffffh + done: + mov [iBit], eax + } +# endif + if (iBit >= 0) + return iBit + iBitPrev; +# endif + + /* + * Skip ahead and see if there is anything left to search. + */ + iBitPrev |= 31; + iBitPrev++; + if (cBits <= (uint32_t)iBitPrev) + return -1; + } + + /* + * 32-bit aligned search, let ASMBitFirstClear do the dirty work. + */ + iBit = ASMBitFirstSet(&pau32Bitmap[iBitPrev / 32], cBits - iBitPrev); + if (iBit >= 0) + iBit += iBitPrev; + return iBit; +} +#endif + + +/** + * Finds the first bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the first set bit. + * @returns 0 if all bits are cleared. + * @param u32 Integer to search for set bits. + * @remark Similar to ffs() in BSD. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(unsigned) ASMBitFirstSetU32(uint32_t u32); +#else +DECLINLINE(unsigned) ASMBitFirstSetU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + unsigned long iBit; + if (_BitScanForward(&iBit, u32)) + iBit++; + else + iBit = 0; +# elif RT_INLINE_ASM_GNU_STYLE + uint32_t iBit; + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "xorl %0, %0\n\t" + "jmp 2f\n" + "1:\n\t" + "incl %0\n" + "2:\n\t" + : "=r" (iBit) + : "rm" (u32)); +# else + uint32_t iBit; + _asm + { + bsf eax, [u32] + jnz found + xor eax, eax + jmp done + found: + inc eax + done: + mov [iBit], eax + } +# endif + return iBit; +} +#endif + + +/** + * Finds the first bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the first set bit. + * @returns 0 if all bits are cleared. + * @param i32 Integer to search for set bits. + * @remark Similar to ffs() in BSD. + */ +DECLINLINE(unsigned) ASMBitFirstSetS32(int32_t i32) +{ + return ASMBitFirstSetU32((uint32_t)i32); +} + + +/** + * Finds the last bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the last set bit. + * @returns 0 if all bits are cleared. + * @param u32 Integer to search for set bits. + * @remark Similar to fls() in BSD. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(unsigned) ASMBitLastSetU32(uint32_t u32); +#else +DECLINLINE(unsigned) ASMBitLastSetU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + unsigned long iBit; + if (_BitScanReverse(&iBit, u32)) + iBit++; + else + iBit = 0; +# elif RT_INLINE_ASM_GNU_STYLE + uint32_t iBit; + __asm__ __volatile__("bsrl %1, %0\n\t" + "jnz 1f\n\t" + "xorl %0, %0\n\t" + "jmp 2f\n" + "1:\n\t" + "incl %0\n" + "2:\n\t" + : "=r" (iBit) + : "rm" (u32)); +# else + uint32_t iBit; + _asm + { + bsr eax, [u32] + jnz found + xor eax, eax + jmp done + found: + inc eax + done: + mov [iBit], eax + } +# endif + return iBit; +} +#endif + + +/** + * Finds the last bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the last set bit. + * @returns 0 if all bits are cleared. + * @param i32 Integer to search for set bits. + * @remark Similar to fls() in BSD. + */ +DECLINLINE(unsigned) ASMBitLastSetS32(int32_t i32) +{ + return ASMBitLastSetU32((uint32_t)i32); +} + +/** + * Reverse the byte order of the given 16-bit integer. + * + * @returns Revert + * @param u16 16-bit integer value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint16_t) ASMByteSwapU16(uint16_t u16); +#else +DECLINLINE(uint16_t) ASMByteSwapU16(uint16_t u16) +{ +# if RT_INLINE_ASM_USES_INTRIN + u16 = _byteswap_ushort(u16); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ ("rorw $8, %0" : "=r" (u16) : "0" (u16)); +# else + _asm + { + mov ax, [u16] + ror ax, 8 + mov [u16], ax + } +# endif + return u16; +} +#endif + + +/** + * Reverse the byte order of the given 32-bit integer. + * + * @returns Revert + * @param u32 32-bit integer value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMByteSwapU32(uint32_t u32); +#else +DECLINLINE(uint32_t) ASMByteSwapU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + u32 = _byteswap_ulong(u32); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ ("bswapl %0" : "=r" (u32) : "0" (u32)); +# else + _asm + { + mov eax, [u32] + bswap eax + mov [u32], eax + } +# endif + return u32; +} +#endif + + +/** + * Reverse the byte order of the given 64-bit integer. + * + * @returns Revert + * @param u64 64-bit integer value. + */ +DECLINLINE(uint64_t) ASMByteSwapU64(uint64_t u64) +{ +#if defined(RT_ARCH_AMD64) && RT_INLINE_ASM_USES_INTRIN + u64 = _byteswap_uint64(u64); +#else + u64 = (uint64_t)ASMByteSwapU32((uint32_t)u64) << 32 + | (uint64_t)ASMByteSwapU32((uint32_t)(u64 >> 32)); +#endif + return u64; +} + + +/** + * Rotate 32-bit unsigned value to the left by @a cShift. + * + * @returns Rotated value. + * @param u32 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint32_t) ASMRotateLeftU32(uint32_t u32, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotl(u32, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + __asm__ __volatile__("roll %b1, %0" : "=g" (u32) : "Ic" (cShift), "0" (u32)); + return u32; +#else + cShift &= 31; + return (u32 << cShift) | (u32 >> (32 - cShift)); +#endif +} + + +/** + * Rotate 32-bit unsigned value to the right by @a cShift. + * + * @returns Rotated value. + * @param u32 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint32_t) ASMRotateRightU32(uint32_t u32, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotr(u32, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + __asm__ __volatile__("rorl %b1, %0" : "=g" (u32) : "Ic" (cShift), "0" (u32)); + return u32; +#else + cShift &= 31; + return (u32 >> cShift) | (u32 << (32 - cShift)); +#endif +} + + +/** + * Rotate 64-bit unsigned value to the left by @a cShift. + * + * @returns Rotated value. + * @param u64 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint64_t) ASMRotateLeftU64(uint64_t u64, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotl64(u64, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("rolq %b1, %0" : "=g" (u64) : "Jc" (cShift), "0" (u64)); + return u64; +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_X86) + uint32_t uSpill; + __asm__ __volatile__("testb $0x20, %%cl\n\t" /* if (cShift >= 0x20) { swap(u64.hi, u64lo); cShift -= 0x20; } */ + "jz 1f\n\t" + "xchgl %%eax, %%edx\n\t" + "1:\n\t" + "andb $0x1f, %%cl\n\t" /* if (cShift & 0x1f) { */ + "jz 2f\n\t" + "movl %%edx, %2\n\t" /* save the hi value in %3. */ + "shldl %%cl,%%eax,%%edx\n\t" /* shift the hi value left, feeding MSBits from the low value. */ + "shldl %%cl,%2,%%eax\n\t" /* shift the lo value left, feeding MSBits from the saved hi value. */ + "2:\n\t" /* } */ + : "=A" (u64), "=c" (cShift), "=r" (uSpill) + : "0" (u64), + "1" (cShift)); + return u64; +#else + cShift &= 63; + return (u64 << cShift) | (u64 >> (64 - cShift)); +#endif +} + + +/** + * Rotate 64-bit unsigned value to the right by @a cShift. + * + * @returns Rotated value. + * @param u64 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint64_t) ASMRotateRightU64(uint64_t u64, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotr64(u64, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("rorq %b1, %0" : "=g" (u64) : "Jc" (cShift), "0" (u64)); + return u64; +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_X86) + uint32_t uSpill; + __asm__ __volatile__("testb $0x20, %%cl\n\t" /* if (cShift >= 0x20) { swap(u64.hi, u64lo); cShift -= 0x20; } */ + "jz 1f\n\t" + "xchgl %%eax, %%edx\n\t" + "1:\n\t" + "andb $0x1f, %%cl\n\t" /* if (cShift & 0x1f) { */ + "jz 2f\n\t" + "movl %%edx, %2\n\t" /* save the hi value in %3. */ + "shrdl %%cl,%%eax,%%edx\n\t" /* shift the hi value right, feeding LSBits from the low value. */ + "shrdl %%cl,%2,%%eax\n\t" /* shift the lo value right, feeding LSBits from the saved hi value. */ + "2:\n\t" /* } */ + : "=A" (u64), "=c" (cShift), "=r" (uSpill) + : "0" (u64), + "1" (cShift)); + return u64; +#else + cShift &= 63; + return (u64 >> cShift) | (u64 << (64 - cShift)); +#endif +} + +/** @} */ + + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/assert.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/assert.h @@ -0,0 +1,2761 @@ +/** @file + * IPRT - Assertions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_assert_h +#define ___iprt_assert_h + +#include +#include +#include + +/** @defgroup grp_rt_assert Assert - Assertions + * @ingroup grp_rt + * + * Assertions are generally used to check preconditions and other + * assumptions. Sometimes it is also used to catch odd errors or errors + * that one would like to inspect in the debugger. They should not be + * used for errors that happen frequently. + * + * IPRT provides a host of assertion macros, so many that it can be a bit + * overwhelming at first. Don't despair, there is a system (surprise). + * + * First there are four families of assertions: + * - Assert - The normal strict build only assertions. + * - AssertLogRel - Calls LogRel() in non-strict builds, otherwise like Assert. + * - AssertRelease - Triggers in all builds. + * - AssertFatal - Triggers in all builds and cannot be continued. + * + * Then there are variations wrt to argument list and behavior on failure: + * - Msg - Custom RTStrPrintf-like message with the assertion message. + * - Return - Return the specific rc on failure. + * - ReturnVoid - Return (void) on failure. + * - Break - Break (out of switch/loop) on failure. + * - Stmt - Execute the specified statement(s) on failure. + * - RC - Assert RT_SUCCESS. + * - RCSuccess - Assert VINF_SUCCESS. + * + * In addition there is a very special family AssertCompile that can be + * used for some limited compile-time checking, like structure sizes and member + * alignment. This family doesn't have the same variations. + * + * + * @remarks As you might have noticed, the macros don't follow the + * coding guidelines wrt to macros supposedly being all uppercase + * and underscored. For various reasons they don't, and nobody + * has complained yet. Wonder why... :-) + * + * @remarks Each project has its own specific guidelines on how to use + * assertions, so the above is just trying to give you the general idea + * from the IPRT point of view. + * + * @{ + */ + +RT_C_DECLS_BEGIN + +/** + * The 1st part of an assert message. + * + * @param pszExpr Expression. Can be NULL. + * @param uLine Location line number. + * @param pszFile Location file name. + * @param pszFunction Location function name. + */ +RTDECL(void) RTAssertMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); +/** + * Weak version of RTAssertMsg1 that can be overridden locally in a module to + * modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg1 + */ +RTDECL(void) RTAssertMsg1Weak(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); + +/** + * The 2nd (optional) part of an assert message. + * + * @param pszFormat Printf like format string. + * @param ... Arguments to that string. + */ +RTDECL(void) RTAssertMsg2(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); +/** + * Weak version of RTAssertMsg2 that forwards to RTAssertMsg2WeakV. + * + * There is not need to override this, check out RTAssertMsg2WeakV instead! + * + * @copydoc RTAssertMsg2 + */ +RTDECL(void) RTAssertMsg2Weak(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * The 2nd (optional) part of an assert message. + * + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +RTDECL(void) RTAssertMsg2V(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(1, 0); +/** + * Weak version of RTAssertMsg2V that can be overridden locally in a module to + * modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg2V + */ +RTDECL(void) RTAssertMsg2WeakV(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(1, 0); + +/** + * Additional information which should be appended to the 2nd part of an + * assertion message. + * + * @param pszFormat Printf like format string. + * @param ... Arguments to that string. + */ +RTDECL(void) RTAssertMsg2Add(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); +/** + * Weak version of RTAssertMsg2Add that forwards to RTAssertMsg2AddWeakV. + * + * There is not need to override this, check out RTAssertMsg2AddWeakV instead! + * + * @copydoc RTAssertMsg2Add + */ +RTDECL(void) RTAssertMsg2AddWeak(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * Additional information which should be appended to the 2nd part of an + * assertion message. + * + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +RTDECL(void) RTAssertMsg2AddV(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(1, 0); +/** + * Weak version of RTAssertMsg2AddV that can be overridden locally in a module + * to modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg2AddV + */ +RTDECL(void) RTAssertMsg2AddWeakV(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(1, 0); + +#ifdef IN_RING0 +/** + * Panics the system as the result of a fail assertion. + */ +RTR0DECL(void) RTR0AssertPanicSystem(void); +#endif /* IN_RING0 */ + +/** + * Overridable function that decides whether assertions executes the panic + * (breakpoint) or not. + * + * The generic implementation will return true. + * + * @returns true if the breakpoint should be hit, false if it should be ignored. + * + * @remark The RTDECL() makes this a bit difficult to override on Windows. So, + * you'll have to use RTASSERT_HAVE_SHOULD_PANIC or + * RTASSERT_HAVE_SHOULD_PANIC_PRIVATE there to control the kind of + * prototype. + */ +#if !defined(RTASSERT_HAVE_SHOULD_PANIC) && !defined(RTASSERT_HAVE_SHOULD_PANIC_PRIVATE) +RTDECL(bool) RTAssertShouldPanic(void); +#elif defined(RTASSERT_HAVE_SHOULD_PANIC_PRIVATE) +bool RTAssertShouldPanic(void); +#else +DECLEXPORT(bool) RTCALL RTAssertShouldPanic(void); +#endif + +/** + * Controls whether the assertions should be quiet or noisy (default). + * + * @returns The old setting. + * @param fQuiet The new setting. + */ +RTDECL(bool) RTAssertSetQuiet(bool fQuiet); + +/** + * Are assertions quiet or noisy? + * + * @returns True if they are quiet, false if noisy. + */ +RTDECL(bool) RTAssertAreQuiet(void); + +/** + * Makes the assertions panic (default) or not. + * + * @returns The old setting. + * @param fPanic The new setting. + */ +RTDECL(bool) RTAssertSetMayPanic(bool fPanic); + +/** + * Can assertion panic. + * + * @returns True if they can, false if not. + */ +RTDECL(bool) RTAssertMayPanic(void); + + +/** @name Globals for crash analysis + * @remarks This is the full potential set, it + * @{ + */ +/** The last assert message, 1st part. */ +extern RTDATADECL(char) g_szRTAssertMsg1[1024]; +/** The last assert message, 2nd part. */ +extern RTDATADECL(char) g_szRTAssertMsg2[4096]; +/** The last assert message, expression. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertExpr; +/** The last assert message, file name. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertFile; +/** The last assert message, line number. */ +extern RTDATADECL(uint32_t volatile) g_u32RTAssertLine; +/** The last assert message, function name. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertFunction; +/** @} */ + +RT_C_DECLS_END + +/** @def RTAssertDebugBreak() + * Debugger breakpoint instruction. + * + * @remarks This macro does not depend on RT_STRICT. + */ +#define RTAssertDebugBreak() do { RT_BREAKPOINT(); } while (0) + + + +/** @name Compile time assertions. + * + * These assertions are used to check structure sizes, member/size alignments + * and similar compile time expressions. + * + * @{ + */ + +/** + * RTASSERTTYPE is the type the AssertCompile() macro redefines. + * It has no other function and shouldn't be used. + * Visual C++ uses this. + */ +typedef int RTASSERTTYPE[1]; + +/** + * RTASSERTVAR is the type the AssertCompile() macro redefines. + * It has no other function and shouldn't be used. + * GCC uses this. + */ +#ifdef __GNUC__ +RT_C_DECLS_BEGIN +#endif +extern int RTASSERTVAR[1]; +#ifdef __GNUC__ +RT_C_DECLS_END +#endif + +/** @def RTASSERT_HAVE_STATIC_ASSERT + * Indicates that the compiler implements static_assert(expr, msg). + */ +#ifdef _MSC_VER +# if _MSC_VER >= 1600 && defined(__cplusplus) +# define RTASSERT_HAVE_STATIC_ASSERT +# endif +#endif +#if defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define RTASSERT_HAVE_STATIC_ASSERT +#endif +#ifdef DOXYGEN_RUNNING +# define RTASSERT_HAVE_STATIC_ASSERT +#endif + +/** @def AssertCompileNS + * Asserts that a compile-time expression is true. If it's not break the build. + * + * This differs from AssertCompile in that it accepts some more expressions + * than what C++0x allows - NS = Non-standard. + * + * @param expr Expression which should be true. + */ +#ifdef __GNUC__ +# define AssertCompileNS(expr) extern int RTASSERTVAR[1] __attribute__((unused)), RTASSERTVAR[(expr) ? 1 : 0] __attribute__((unused)) +#elif defined(__IBMC__) || defined(__IBMCPP__) +# define AssertCompileNS(expr) extern int RTASSERTVAR[(expr) ? 1 : 0] +#else +# define AssertCompileNS(expr) typedef int RTASSERTTYPE[(expr) ? 1 : 0] +#endif + +/** @def AssertCompile + * Asserts that a C++0x compile-time expression is true. If it's not break the + * build. + * @param expr Expression which should be true. + */ +#ifdef RTASSERT_HAVE_STATIC_ASSERT +# define AssertCompile(expr) static_assert(!!(expr), #expr) +#else +# define AssertCompile(expr) AssertCompileNS(expr) +#endif + +/** @def RTASSERT_OFFSET_OF() + * A offsetof() macro suitable for compile time assertions. + * Both GCC v4 and VisualAge for C++ v3.08 has trouble using RT_OFFSETOF. + */ +#if defined(__GNUC__) +# if __GNUC__ >= 4 +# define RTASSERT_OFFSET_OF(a_Type, a_Member) __builtin_offsetof(a_Type, a_Member) +# else +# define RTASSERT_OFFSET_OF(a_Type, a_Member) RT_OFFSETOF(a_Type, a_Member) +# endif +#elif (defined(__IBMC__) || defined(__IBMCPP__)) && defined(RT_OS_OS2) +# define RTASSERT_OFFSET_OF(a_Type, a_Member) __offsetof(a_Type, a_Member) +#else +# define RTASSERT_OFFSET_OF(a_Type, a_Member) RT_OFFSETOF(a_Type, a_Member) +#endif + + +/** @def AssertCompileSize + * Asserts a size at compile. + * @param type The type. + * @param size The expected type size. + */ +#define AssertCompileSize(type, size) \ + AssertCompile(sizeof(type) == (size)) + +/** @def AssertCompileSizeAlignment + * Asserts a size alignment at compile. + * @param type The type. + * @param align The size alignment to assert. + */ +#define AssertCompileSizeAlignment(type, align) \ + AssertCompile(!(sizeof(type) & ((align) - 1))) + +/** @def AssertCompileMemberSize + * Asserts a member offset alignment at compile. + * @param type The type. + * @param member The member. + * @param size The member size to assert. + */ +#define AssertCompileMemberSize(type, member, size) \ + AssertCompile(RT_SIZEOFMEMB(type, member) == (size)) + +/** @def AssertCompileMemberSizeAlignment + * Asserts a member size alignment at compile. + * @param type The type. + * @param member The member. + * @param align The member size alignment to assert. + */ +#define AssertCompileMemberSizeAlignment(type, member, align) \ + AssertCompile(!(RT_SIZEOFMEMB(type, member) & ((align) - 1))) + +/** @def AssertCompileMemberAlignment + * Asserts a member offset alignment at compile. + * @param type The type. + * @param member The member. + * @param align The member offset alignment to assert. + */ +#define AssertCompileMemberAlignment(type, member, align) \ + AssertCompile(!(RTASSERT_OFFSET_OF(type, member) & ((align) - 1))) + +/** @def AssertCompileMemberOffset + * Asserts an offset of a structure member at compile. + * @param type The type. + * @param member The member. + * @param off The expected offset. + */ +#define AssertCompileMemberOffset(type, member, off) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member) == (off)) + +/** @def AssertCompile2MemberOffsets + * Asserts that two (sub-structure) members in union have the same offset. + * @param type The type. + * @param member1 The first member. + * @param member2 The second member. + */ +#define AssertCompile2MemberOffsets(type, member1, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member1) == RTASSERT_OFFSET_OF(type, member2)) + +/** @def AssertCompileAdjacentMembers + * Asserts that two structure members are adjacent. + * @param type The type. + * @param member1 The first member. + * @param member2 The second member. + */ +#define AssertCompileAdjacentMembers(type, member1, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member1) + RT_SIZEOFMEMB(type, member1) == RTASSERT_OFFSET_OF(type, member2)) + +/** @def AssertCompileMembersAtSameOffset + * Asserts that members of two different structures are at the same offset. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersAtSameOffset(type1, member1, type2, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type1, member1) == RTASSERT_OFFSET_OF(type2, member2)) + +/** @def AssertCompileMembersSameSize + * Asserts that members of two different structures have the same size. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersSameSize(type1, member1, type2, member2) \ + AssertCompile(RT_SIZEOFMEMB(type1, member1) == RT_SIZEOFMEMB(type2, member2)) + +/** @def AssertCompileMembersSameSizeAndOffset + * Asserts that members of two different structures have the same size and are + * at the same offset. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersSameSizeAndOffset(type1, member1, type2, member2) \ + AssertCompile( RTASSERT_OFFSET_OF(type1, member1) == RTASSERT_OFFSET_OF(type2, member2) \ + && RT_SIZEOFMEMB(type1, member1) == RT_SIZEOFMEMB(type2, member2)) + +/** @} */ + + + +/** @name Assertions + * + * These assertions will only trigger when RT_STRICT is defined. When it is + * undefined they will all be no-ops and generate no code. + * + * @{ + */ + + +/** @def RTASSERT_QUIET + * This can be defined to shut up the messages for a file where this would be + * problematic because the message printing code path passes thru it. + * @internal */ +#ifdef DOXYGEN_RUNNING +# define RTASSERT_QUIET +#endif +#if defined(RTASSERT_QUIET) && !defined(DOXYGEN_RUNNING) +# define RTAssertMsg1Weak(pszExpr, uLine, pszfile, pszFunction) \ + do { } while (0) +# define RTAssertMsg2Weak if (1) {} else RTAssertMsg2Weak +#endif + +/** @def RTAssertDoPanic + * Raises an assertion panic appropriate to the current context. + * @remarks This macro does not depend on RT_STRICT. + */ +#if defined(IN_RING0) \ + && (defined(RT_OS_DARWIN) || defined(RT_OS_HAIKU) || defined(RT_OS_SOLARIS)) +# define RTAssertDoPanic() RTR0AssertPanicSystem() +#else +# define RTAssertDoPanic() RTAssertDebugBreak() +#endif + +/** @def AssertBreakpoint() + * Assertion Breakpoint. + * @deprecated Use RTAssertPanic or RTAssertDebugBreak instead. + */ +#ifdef RT_STRICT +# define AssertBreakpoint() RTAssertDebugBreak() +#else +# define AssertBreakpoint() do { } while (0) +#endif + +/** @def RTAssertPanic() + * If RT_STRICT is defined this macro will invoke RTAssertDoPanic if + * RTAssertShouldPanic returns true. If RT_STRICT isn't defined it won't do any + * thing. + */ +#if defined(RT_STRICT) && !defined(RTASSERT_DONT_PANIC) +# define RTAssertPanic() do { if (RTAssertShouldPanic()) RTAssertDoPanic(); } while (0) +#else +# define RTAssertPanic() do { } while (0) +#endif + +/** @def Assert + * Assert that an expression is true. If false, hit breakpoint. + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define Assert(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } \ + } while (0) +#else +# define Assert(expr) do { } while (0) +#endif + + +/** @def AssertStmt + * Assert that an expression is true. If false, hit breakpoint and execute the + * statement. + * @param expr Expression which should be true. + * @param stmt Statement to execute on failure. + */ +#ifdef RT_STRICT +# define AssertStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) +#else +# define AssertStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + } \ + } while (0) +#endif + + +/** @def AssertReturn + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) +#else +# define AssertReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return (rc); \ + } while (0) +#endif + +/** @def AssertReturnStmt + * Assert that an expression is true, if it isn't execute the given statement + * and return rc. + * + * In RT_STRICT mode it will hit a breakpoint before executing the statement and + * returning. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before returning on failure. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertReturnStmt(expr, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } \ + } while (0) +#else +# define AssertReturnStmt(expr, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return (rc); \ + } \ + } while (0) +#endif + +/** @def AssertReturnVoid + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define AssertReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) +#else +# define AssertReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return; \ + } while (0) +#endif + +/** @def AssertReturnVoidStmt + * Assert that an expression is true, if it isn't execute the given statement + * and return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before returning on failure. + */ +#ifdef RT_STRICT +# define AssertReturnVoidStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } \ + } while (0) +#else +# define AssertReturnVoidStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return; \ + } \ + } while (0) +#endif + + +/** @def AssertBreak + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define AssertBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + break +#endif + +/** @def AssertBreakStmt + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before doing break. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + + +/** @def AssertMsg + * Assert that an expression is true. If it's not print message and hit breakpoint. + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + } \ + } while (0) +#else +# define AssertMsg(expr, a) do { } while (0) +#endif + +/** @def AssertMsgStmt + * Assert that an expression is true. If it's not print message and hit + * breakpoint and execute the statement. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute in case of a failed assertion. + * + * @remarks The expression and statement will be evaluated in all build types. + */ +#ifdef RT_STRICT +# define AssertMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) +#else +# define AssertMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + } \ + } while (0) +#endif + +/** @def AssertMsgReturn + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) +#else +# define AssertMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return (rc); \ + } while (0) +#endif + +/** @def AssertMsgReturnStmt + * Assert that an expression is true, if it isn't execute the statement and + * return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgReturnStmt(expr, a, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } \ + } while (0) +#else +# define AssertMsgReturnStmt(expr, a, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return (rc); \ + } \ + } while (0) +#endif + +/** @def AssertMsgReturnVoid + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) +#else +# define AssertMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return; \ + } while (0) +#endif + +/** @def AssertMsgReturnVoidStmt + * Assert that an expression is true, if it isn't execute the statement and + * return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before return in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertMsgReturnVoidStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + return; \ + } \ + } while (0) +#else +# define AssertMsgReturnVoidStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return; \ + } \ + } while (0) +#endif + + +/** @def AssertMsgBreak + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + break +#endif + +/** @def AssertMsgBreakStmt + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before doing break. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + +/** @def AssertFailed + * An assertion failed hit breakpoint. + */ +#ifdef RT_STRICT +# define AssertFailed() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } while (0) +#else +# define AssertFailed() do { } while (0) +#endif + +/** @def AssertFailedReturn + * An assertion failed, hit breakpoint (RT_STRICT mode only) and return. + * + * @param rc The rc to return. + */ +#ifdef RT_STRICT +# define AssertFailedReturn(rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) +#else +# define AssertFailedReturn(rc) \ + do { \ + return (rc); \ + } while (0) +#endif + +/** @def AssertFailedReturnStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute a + * statement and return a value. + * + * @param stmt The statement to execute before returning. + * @param rc The value to return. + */ +#ifdef RT_STRICT +# define AssertFailedReturnStmt(stmt, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } while (0) +#else +# define AssertFailedReturnStmt(stmt, rc) \ + do { \ + stmt; \ + return (rc); \ + } while (0) +#endif + +/** @def AssertFailedReturnVoid + * An assertion failed, hit breakpoint (RT_STRICT mode only) and return. + */ +#ifdef RT_STRICT +# define AssertFailedReturnVoid() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } while (0) +#else +# define AssertFailedReturnVoid() \ + do { \ + return; \ + } while (0) +#endif + +/** @def AssertFailedReturnVoidStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute a + * statement and return. + * + * @param stmt The statement to execute before returning. + */ +#ifdef RT_STRICT +# define AssertFailedReturnVoidStmt(stmt) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } while (0) +#else +# define AssertFailedReturnVoidStmt(stmt) \ + do { \ + stmt; \ + return; \ + } while (0) +#endif + + +/** @def AssertFailedBreak + * An assertion failed, hit breakpoint (RT_STRICT mode only) and break. + */ +#ifdef RT_STRICT +# define AssertFailedBreak() \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertFailedBreak() \ + if (1) \ + break; \ + else do {} while (0) +#endif + +/** @def AssertFailedBreakStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute + * the given statement and break. + * + * @param stmt Statement to execute before break. + */ +#ifdef RT_STRICT +# define AssertFailedBreakStmt(stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertFailedBreakStmt(stmt) \ + if (1) { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + + +/** @def AssertMsgFailed + * An assertion failed print a message and a hit breakpoint. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailed(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + } while (0) +#else +# define AssertMsgFailed(a) do { } while (0) +#endif + +/** @def AssertMsgFailedReturn + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and return. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgFailedReturn(a, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return (rc); \ + } while (0) +#else +# define AssertMsgFailedReturn(a, rc) \ + do { \ + return (rc); \ + } while (0) +#endif + +/** @def AssertMsgFailedReturnVoid + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and return. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailedReturnVoid(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return; \ + } while (0) +#else +# define AssertMsgFailedReturnVoid(a) \ + do { \ + return; \ + } while (0) +#endif + + +/** @def AssertMsgFailedBreak + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and break. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailedBreak(a) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertMsgFailedBreak(a) \ + if (1) \ + break; \ + else do {} while (0) +#endif + +/** @def AssertMsgFailedBreakStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute + * the given statement and break. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#ifdef RT_STRICT +# define AssertMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + +/** @} */ + + + +/** @name Release Log Assertions + * + * These assertions will work like normal strict assertion when RT_STRICT is + * defined and LogRel statements when RT_STRICT is undefined. Typically used for + * things which shouldn't go wrong, but when it does you'd like to know one way + * or the other. + * + * @{ + */ + +/** @def RTAssertLogRelMsg1 + * RTAssertMsg1Weak (strict builds) / LogRel wrapper (non-strict). + */ +#ifdef RT_STRICT +# define RTAssertLogRelMsg1(pszExpr, iLine, pszFile, pszFunction) \ + RTAssertMsg1Weak(pszExpr, iLine, pszFile, pszFunction) +#else +# define RTAssertLogRelMsg1(pszExpr, iLine, pszFile, pszFunction) \ + LogRel(("AssertLogRel %s(%d) %s: %s\n",\ + (pszFile), (iLine), (pszFunction), (pszExpr) )) +#endif + +/** @def RTAssertLogRelMsg2 + * RTAssertMsg2Weak (strict builds) / LogRel wrapper (non-strict). + */ +#ifdef RT_STRICT +# define RTAssertLogRelMsg2(a) RTAssertMsg2Weak a +#else +# define RTAssertLogRelMsg2(a) LogRel(a) +#endif + +/** @def AssertLogRel + * Assert that an expression is true. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRel(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } \ + } while (0) + +/** @def AssertLogRelReturn + * Assert that an expression is true, return \a rc if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#define AssertLogRelReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertLogRelReturnVoid + * Assert that an expression is true, return void if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRelReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) + +/** @def AssertLogRelBreak + * Assert that an expression is true, break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRelBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } \ + else do {} while (0) + +/** @def AssertLogRelBreakStmt + * Assert that an expression is true, execute \a stmt and break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertLogRelBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsg + * Assert that an expression is true. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + } \ + } while (0) + +/** @def AssertLogRelMsgStmt + * Assert that an expression is true, execute \a stmt and break if it isn't + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute in case of a failed assertion. + */ +#define AssertLogRelMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturn + * Assert that an expression is true, return \a rc if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturnStmt + * Assert that an expression is true, execute @a stmt and return @a rcRet if it + * isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + */ +#define AssertLogRelMsgReturnStmt(expr, a, stmt, rcRet) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return (rcRet); \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturnVoid + * Assert that an expression is true, return (void) if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) + +/** @def AssertLogRelMsgBreak + * Assert that an expression is true, break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + break; \ + } \ + else do {} while (0) + +/** @def AssertLogRelMsgBreakStmt + * Assert that an expression is true, execute \a stmt and break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertLogRelMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelFailed + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailed() \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } while (0) + +/** @def AssertLogRelFailedReturn + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param rc What is to be presented to return. + */ +#define AssertLogRelFailedReturn(rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) + +/** @def AssertLogRelFailedReturnVoid + * An assertion failed, hit a breakpoint and return. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailedReturnVoid() \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } while (0) + +/** @def AssertLogRelFailedBreak + * An assertion failed, break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailedBreak() \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelFailedBreakStmt + * An assertion failed, execute \a stmt and break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param stmt Statement to execute before break. + */ +#define AssertLogRelFailedBreakStmt(stmt) \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsgFailed + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailed(a) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + } while (0) + +/** @def AssertLogRelMsgFailedStmt + * An assertion failed, execute @a stmt. + * + * Strict builds will hit a breakpoint, non-strict will only do LogRel. The + * statement will be executed in regardless of build type. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute after raising/logging the assertion. + */ +#define AssertLogRelMsgFailedStmt(a, stmt) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + } while (0) + +/** @def AssertLogRelMsgFailedReturn + * An assertion failed, return \a rc. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgFailedReturn(a, rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) + +/** @def AssertLogRelMsgFailedReturnStmt + * An assertion failed, execute @a stmt and return @a rc. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgFailedReturnStmt(a, stmt, rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } while (0) + +/** @def AssertLogRelMsgFailedReturnVoid + * An assertion failed, return void. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailedReturnVoid(a) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return; \ + } while (0) + +/** @def AssertLogRelMsgFailedReturnVoidStmt + * An assertion failed, execute @a stmt and return void. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + */ +#define AssertLogRelMsgFailedReturnVoidStmt(a, stmt) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } while (0) + +/** @def AssertLogRelMsgFailedBreak + * An assertion failed, break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailedBreak(a) \ + if (1)\ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsgFailedBreakStmt + * An assertion failed, execute \a stmt and break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#define AssertLogRelMsgFailedBreakStmt(a, stmt) \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @} */ + + + +/** @name Release Assertions + * + * These assertions are always enabled. + * @{ + */ + +/** @def RTAssertReleasePanic() + * Invokes RTAssertShouldPanic and RTAssertDoPanic. + * + * It might seem odd that RTAssertShouldPanic is necessary when its result isn't + * checked, but it's done since RTAssertShouldPanic is overrideable and might be + * used to bail out before taking down the system (the VMMR0 case). + */ +#define RTAssertReleasePanic() do { RTAssertShouldPanic(); RTAssertDoPanic(); } while (0) + + +/** @def AssertRelease + * Assert that an expression is true. If it's not hit a breakpoint. + * + * @param expr Expression which should be true. + */ +#define AssertRelease(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertReleaseReturn + * Assert that an expression is true, hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#define AssertReleaseReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertReleaseReturnVoid + * Assert that an expression is true, hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + */ +#define AssertReleaseReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return; \ + } \ + } while (0) + + +/** @def AssertReleaseBreak + * Assert that an expression is true, hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + */ +#define AssertReleaseBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseBreakStmt + * Assert that an expression is true, hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertReleaseBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseMsg + * Assert that an expression is true, print the message and hit a breakpoint if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertReleaseMsgReturn + * Assert that an expression is true, print the message and hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertReleaseMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertReleaseMsgReturnVoid + * Assert that an expression is true, print the message and hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return; \ + } \ + } while (0) + + +/** @def AssertReleaseMsgBreak + * Assert that an expression is true, print the message and hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseMsgBreakStmt + * Assert that an expression is true, print the message and hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertReleaseMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseFailed + * An assertion failed, hit a breakpoint. + */ +#define AssertReleaseFailed() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } while (0) + +/** @def AssertReleaseFailedReturn + * An assertion failed, hit a breakpoint and return. + * + * @param rc What is to be presented to return. + */ +#define AssertReleaseFailedReturn(rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return (rc); \ + } while (0) + +/** @def AssertReleaseFailedReturnVoid + * An assertion failed, hit a breakpoint and return. + */ +#define AssertReleaseFailedReturnVoid() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return; \ + } while (0) + + +/** @def AssertReleaseFailedBreak + * An assertion failed, hit a breakpoint and break. + */ +#define AssertReleaseFailedBreak() \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseFailedBreakStmt + * An assertion failed, hit a breakpoint and break. + * + * @param stmt Statement to execute before break. + */ +#define AssertReleaseFailedBreakStmt(stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseMsgFailed + * An assertion failed, print a message and hit a breakpoint. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailed(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } while (0) + +/** @def AssertReleaseMsgFailedReturn + * An assertion failed, print a message, hit a breakpoint and return. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertReleaseMsgFailedReturn(a, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return (rc); \ + } while (0) + +/** @def AssertReleaseMsgFailedReturnVoid + * An assertion failed, print a message, hit a breakpoint and return. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailedReturnVoid(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return; \ + } while (0) + + +/** @def AssertReleaseMsgFailedBreak + * An assertion failed, print a message, hit a breakpoint and break. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailedBreak(a) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseMsgFailedBreakStmt + * An assertion failed, print a message, hit a breakpoint and break. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#define AssertReleaseMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @} */ + + + +/** @name Fatal Assertions + * These are similar to release assertions except that you cannot ignore them in + * any way, they will loop for ever if RTAssertDoPanic returns. + * + * @{ + */ + +/** @def AssertFatal + * Assert that an expression is true. If it's not hit a breakpoint (for ever). + * + * @param expr Expression which should be true. + */ +#define AssertFatal(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + for (;;) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalMsg + * Assert that an expression is true, print the message and hit a breakpoint (for ever) if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertFatalMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + for (;;) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalFailed + * An assertion failed, hit a breakpoint (for ever). + */ +#define AssertFatalFailed() \ + do { \ + for (;;) \ + { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalMsgFailed + * An assertion failed, print a message and hit a breakpoint (for ever). + * + * @param a printf argument list (in parenthesis). + */ +#define AssertFatalMsgFailed(a) \ + do { \ + for (;;) \ + { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @} */ + + + +/** @name Convenience Assertions Macros + * @{ + */ + +/** @def AssertRC + * Asserts a iprt status code successful. + * + * On failure it will print info about the rc and hit a breakpoint. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRC(rc) AssertMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertRCReturn + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturn(rc, rcRet) AssertMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertRCReturnStmt + * Asserts a iprt status code successful, bitch (RT_STRICT mode only), execute + * @a stmt and returns @a rcRet if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnStmt(rc, stmt, rcRet) AssertMsgRCReturnStmt(rc, ("%Rra\n", (rc)), stmt, rcRet) + +/** @def AssertRCReturnVoid + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnVoid(rc) AssertMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertRCReturnVoidStmt + * Asserts a iprt status code successful, bitch (RT_STRICT mode only), and + * execute the given statement/return if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning on failure. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnVoidStmt(rc, stmt) AssertMsgRCReturnVoidStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertRCBreak + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCBreak(rc) AssertMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertRCBreakStmt + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCBreakStmt(rc, stmt) AssertMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertMsgRC + * Asserts a iprt status code successful. + * + * It prints a custom message and hits a breakpoint on FAILURE. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRC(rc, msg) \ + do { AssertMsg(RT_SUCCESS_NP(rc), msg); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturn + * Asserts a iprt status code successful and if it's not return the specified status code. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturn(rc, msg, rcRet) \ + do { AssertMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnStmt + * Asserts a iprt status code successful and if it's not execute @a stmt and + * return the specified status code (@a rcRet). + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnStmt(rc, msg, stmt, rcRet) \ + do { AssertMsgReturnStmt(RT_SUCCESS_NP(rc), msg, stmt, rcRet); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnVoid + * Asserts a iprt status code successful and if it's not return. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnVoid(rc, msg) \ + do { AssertMsgReturnVoid(RT_SUCCESS_NP(rc), msg); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnVoidStmt + * Asserts a iprt status code successful and execute statement/break if it's not. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnVoidStmt(rc, msg, stmt) \ + do { AssertMsgReturnVoidStmt(RT_SUCCESS_NP(rc), msg, stmt); NOREF(rc); } while (0) + +/** @def AssertMsgRCBreak + * Asserts a iprt status code successful and if it's not break. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it breaks + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCBreak(rc, msg) \ + if (1) { AssertMsgBreak(RT_SUCCESS(rc), msg); NOREF(rc); } else do {} while (0) + +/** @def AssertMsgRCBreakStmt + * Asserts a iprt status code successful and execute statement/break if it's not. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCBreakStmt(rc, msg, stmt) \ + if (1) { AssertMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt); NOREF(rc); } else do {} while (0) + +/** @def AssertRCSuccess + * Asserts an iprt status code equals VINF_SUCCESS. + * + * On failure it will print info about the rc and hit a breakpoint. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccess(rc) do { AssertMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))); NOREF(rc); } while (0) + +/** @def AssertRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessReturn(rc, rcRet) AssertMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessReturnVoid(rc) AssertMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessBreak(rc) AssertMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessBreakStmt(rc, stmt) AssertMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertLogRelRC + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRC(rc) AssertLogRelMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCReturn + * Asserts a iprt status code successful, returning \a rc if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturn(rc, rcRet) AssertLogRelMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertLogRelRCReturnStmt + * Asserts a iprt status code successful, executing \a stmt and returning \a rc + * if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturnStmt(rc, stmt, rcRet) AssertLogRelMsgRCReturnStmt(rc, ("%Rra\n", (rc)), stmt, rcRet) + +/** @def AssertLogRelRCReturnVoid + * Asserts a iprt status code successful, returning (void) if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturnVoid(rc) AssertLogRelMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCBreak + * Asserts a iprt status code successful, breaking if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCBreak(rc) AssertLogRelMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCBreakStmt + * Asserts a iprt status code successful, execute \a statement and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCBreakStmt(rc, stmt) AssertLogRelMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertLogRelMsgRC + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRC(rc, msg) AssertLogRelMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertLogRelMsgRCReturn + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturn(rc, msg, rcRet) AssertLogRelMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet) + +/** @def AssertLogRelMsgRCReturnStmt + * Asserts a iprt status code successful, execute \a stmt and return on + * failure. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturnStmt(rc, msg, stmt, rcRet) AssertLogRelMsgReturnStmt(RT_SUCCESS_NP(rc), msg, stmt, rcRet) + +/** @def AssertLogRelMsgRCReturnVoid + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturnVoid(rc, msg) AssertLogRelMsgReturnVoid(RT_SUCCESS_NP(rc), msg) + +/** @def AssertLogRelMsgRCBreak + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCBreak(rc, msg) AssertLogRelMsgBreak(RT_SUCCESS(rc), msg) + +/** @def AssertLogRelMsgRCBreakStmt + * Asserts a iprt status code successful, execute \a stmt and break if it isn't. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCBreakStmt(rc, msg, stmt) AssertLogRelMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt) + +/** @def AssertLogRelRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccess(rc) AssertLogRelMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessReturn(rc, rcRet) AssertLogRelMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertLogRelRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessReturnVoid(rc) AssertLogRelMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessBreak(rc) AssertLogRelMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessBreakStmt(rc, stmt) AssertLogRelMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertReleaseRC + * Asserts a iprt status code successful. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRC(rc) AssertReleaseMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCReturn + * Asserts a iprt status code successful, returning if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCReturn(rc, rcRet) AssertReleaseMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertReleaseRCReturnVoid + * Asserts a iprt status code successful, returning if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCReturnVoid(rc) AssertReleaseMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCBreak + * Asserts a iprt status code successful, breaking if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally breaking the current statement if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCBreak(rc) AssertReleaseMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCBreakStmt + * Asserts a iprt status code successful, break if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally the break statement will be issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCBreakStmt(rc, stmt) AssertReleaseMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertReleaseMsgRC + * Asserts a iprt status code successful. + * + * On failure a custom message is printed and a breakpoint is hit. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRC(rc, msg) AssertReleaseMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertReleaseMsgRCReturn + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCReturn(rc, msg, rcRet) AssertReleaseMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet) + +/** @def AssertReleaseMsgRCReturnVoid + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCReturnVoid(rc, msg) AssertReleaseMsgReturnVoid(RT_SUCCESS_NP(rc), msg) + +/** @def AssertReleaseMsgRCBreak + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * breaking the current status if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCBreak(rc, msg) AssertReleaseMsgBreak(RT_SUCCESS(rc), msg) + +/** @def AssertReleaseMsgRCBreakStmt + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * the break statement is issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCBreakStmt(rc, msg, stmt) AssertReleaseMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt) + +/** @def AssertReleaseRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccess(rc) AssertReleaseMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessReturn(rc, rcRet) AssertReleaseMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertReleaseRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessReturnVoid(rc) AssertReleaseMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally breaking the current statement if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessBreak(rc) AssertReleaseMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally the break statement will be issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessBreakStmt(rc, stmt) AssertReleaseMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertFatalRC + * Asserts a iprt status code successful. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertFatalRC(rc) AssertFatalMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseMsgRC + * Asserts a iprt status code successful. + * + * On failure a custom message is printed and a breakpoint is hit. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertFatalMsgRC(rc, msg) AssertFatalMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertFatalRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertFatalRCSuccess(rc) AssertFatalMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + + +/** @def AssertPtr + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtr(pv) AssertMsg(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrReturn + * Asserts that a pointer is valid. + * + * @param pv The pointer. + * @param rcRet What is to be presented to return. + */ +#define AssertPtrReturn(pv, rcRet) AssertMsgReturn(VALID_PTR(pv), ("%p\n", (pv)), rcRet) + +/** @def AssertPtrReturnVoid + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtrReturnVoid(pv) AssertMsgReturnVoid(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrBreak + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtrBreak(pv) AssertMsgBreak(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrBreakStmt + * Asserts that a pointer is valid. + * + * @param pv The pointer. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertPtrBreakStmt(pv, stmt) AssertMsgBreakStmt(VALID_PTR(pv), ("%p\n", (pv)), stmt) + +/** @def AssertPtrNull + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNull(pv) AssertMsg(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullReturn + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + * @param rcRet What is to be presented to return. + */ +#define AssertPtrNullReturn(pv, rcRet) AssertMsgReturn(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv)), rcRet) + +/** @def AssertPtrNullReturnVoid + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNullReturnVoid(pv) AssertMsgReturnVoid(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullBreak + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNullBreak(pv) AssertMsgBreak(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullBreakStmt + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertPtrNullBreakStmt(pv, stmt) AssertMsgBreakStmt(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv)), stmt) + +/** @def AssertGCPhys32 + * Asserts that the high dword of a physical address is zero + * + * @param GCPhys The address (RTGCPHYS). + */ +#define AssertGCPhys32(GCPhys) AssertMsg(VALID_PHYS32(GCPhys), ("%RGp\n", (RTGCPHYS)(GCPhys))) + +/** @def AssertGCPtr32 + * Asserts that the high dword of a physical address is zero + * + * @param GCPtr The address (RTGCPTR). + */ +#if GC_ARCH_BITS == 32 +# define AssertGCPtr32(GCPtr) do { } while (0) +#else +# define AssertGCPtr32(GCPtr) AssertMsg(!((GCPtr) & UINT64_C(0xffffffff00000000)), ("%RGv\n", GCPtr)) +#endif + +/** @def AssertForEach + * Equivalent to Assert for each value of the variable from the starting + * value to the finishing one. + * + * @param var Name of the counter variable. + * @param vartype Type of the counter variable. + * @param first Lowest inclusive value of the counter variable. + * This must be free from side effects. + * @param end Highest exclusive value of the counter variable. + * This must be free from side effects. + * @param expr Expression which should be true for each value of @a var. + */ +#define AssertForEach(var, vartype, first, end, expr) \ + do { \ + vartype var; \ + Assert((first) == (first) && (end) == (end)); /* partial check for side effects */ \ + for (var = (first); var < (end); var++) \ + AssertMsg(expr, ("%s = %#RX64 (%RI64)", #var, (uint64_t)var, (int64_t)var)); \ + } while (0) + +/** @} */ + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/avl.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/avl.h @@ -0,0 +1,1136 @@ +/** @file + * IPRT - AVL Trees. + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_avl_h +#define ___iprt_avl_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_avl RTAvl - AVL Trees + * @ingroup grp_rt + * @{ + */ + + +/** AVL tree of void pointers. + * @{ + */ + +/** + * AVL key type + */ +typedef void * AVLPVKEY; + +/** + * AVL Core node. + */ +typedef struct _AVLPVNodeCore +{ + AVLPVKEY Key; /** Key value. */ + struct _AVLPVNodeCore *pLeft; /** Pointer to left leaf node. */ + struct _AVLPVNodeCore *pRight; /** Pointer to right leaf node. */ + unsigned char uchHeight; /** Height of this tree: max(height(left), height(right)) + 1 */ +} AVLPVNODECORE, *PAVLPVNODECORE, **PPAVLPVNODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLPVNODECORE AVLPVTREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLPVNODECORE PAVLPVTREE; + +/** Callback function for AVLPVDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLPVCALLBACK(PAVLPVNODECORE, void *); +/** Pointer to callback function for AVLPVDoWithAll(). */ +typedef AVLPVCALLBACK *PAVLPVCALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlPVInsert(PAVLPVTREE ppTree, PAVLPVNODECORE pNode); +RTDECL(PAVLPVNODECORE) RTAvlPVRemove(PAVLPVTREE ppTree, AVLPVKEY Key); +RTDECL(PAVLPVNODECORE) RTAvlPVGet(PAVLPVTREE ppTree, AVLPVKEY Key); +RTDECL(PAVLPVNODECORE) RTAvlPVGetBestFit(PAVLPVTREE ppTree, AVLPVKEY Key, bool fAbove); +RTDECL(PAVLPVNODECORE) RTAvlPVRemoveBestFit(PAVLPVTREE ppTree, AVLPVKEY Key, bool fAbove); +RTDECL(int) RTAvlPVDoWithAll(PAVLPVTREE ppTree, int fFromLeft, PAVLPVCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlPVDestroy(PAVLPVTREE ppTree, PAVLPVCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of unsigned long. + * @{ + */ + +/** + * AVL key type + */ +typedef unsigned long AVLULKEY; + +/** + * AVL Core node. + */ +typedef struct _AVLULNodeCore +{ + AVLULKEY Key; /** Key value. */ + struct _AVLULNodeCore *pLeft; /** Pointer to left leaf node. */ + struct _AVLULNodeCore *pRight; /** Pointer to right leaf node. */ + unsigned char uchHeight; /** Height of this tree: max(height(left), height(right)) + 1 */ +} AVLULNODECORE, *PAVLULNODECORE, **PPAVLULNODECORE; + + +/** Callback function for AVLULDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLULCALLBACK(PAVLULNODECORE, void*); +/** Pointer to callback function for AVLULDoWithAll(). */ +typedef AVLULCALLBACK *PAVLULCALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvlULInsert(PPAVLULNODECORE ppTree, PAVLULNODECORE pNode); +RTDECL(PAVLULNODECORE) RTAvlULRemove(PPAVLULNODECORE ppTree, AVLULKEY Key); +RTDECL(PAVLULNODECORE) RTAvlULGet(PPAVLULNODECORE ppTree, AVLULKEY Key); +RTDECL(PAVLULNODECORE) RTAvlULGetBestFit(PPAVLULNODECORE ppTree, AVLULKEY Key, bool fAbove); +RTDECL(PAVLULNODECORE) RTAvlULRemoveBestFit(PPAVLULNODECORE ppTree, AVLULKEY Key, bool fAbove); +RTDECL(int) RTAvlULDoWithAll(PPAVLULNODECORE ppTree, int fFromLeft, PAVLULCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlULDestroy(PPAVLULNODECORE pTree, PAVLULCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of void pointer ranges. + * @{ + */ + +/** + * AVL key type + */ +typedef void *AVLRPVKEY; + +/** + * AVL Core node. + */ +typedef struct AVLRPVNodeCore +{ + AVLRPVKEY Key; /**< First key value in the range (inclusive). */ + AVLRPVKEY KeyLast; /**< Last key value in the range (inclusive). */ + struct AVLRPVNodeCore *pLeft; /**< Pointer to left leaf node. */ + struct AVLRPVNodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLRPVNODECORE, *PAVLRPVNODECORE, **PPAVLRPVNODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLRPVNODECORE AVLRPVTREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLRPVNODECORE PAVLRPVTREE; + +/** Callback function for AVLPVDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRPVCALLBACK(PAVLRPVNODECORE, void *); +/** Pointer to callback function for AVLPVDoWithAll(). */ +typedef AVLRPVCALLBACK *PAVLRPVCALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlrPVInsert(PAVLRPVTREE ppTree, PAVLRPVNODECORE pNode); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRemove(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVGet(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRangeGet(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRangeRemove(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVGetBestFit(PAVLRPVTREE ppTree, AVLRPVKEY Key, bool fAbove); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRemoveBestFit(PAVLRPVTREE ppTree, AVLRPVKEY Key, bool fAbove); +RTDECL(int) RTAvlrPVDoWithAll(PAVLRPVTREE ppTree, int fFromLeft, PAVLRPVCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrPVDestroy(PAVLRPVTREE ppTree, PAVLRPVCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of uint32_t + * @{ + */ + +/** AVL key type. */ +typedef uint32_t AVLU32KEY; + +/** AVL Core node. */ +typedef struct _AVLU32NodeCore +{ + AVLU32KEY Key; /**< Key value. */ + struct _AVLU32NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct _AVLU32NodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLU32NODECORE, *PAVLU32NODECORE, **PPAVLU32NODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLU32NODECORE AVLU32TREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLU32NODECORE PAVLU32TREE; + +/** Callback function for AVLU32DoWithAll() & AVLU32Destroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLU32CALLBACK(PAVLU32NODECORE, void*); +/** Pointer to callback function for AVLU32DoWithAll() & AVLU32Destroy(). */ +typedef AVLU32CALLBACK *PAVLU32CALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvlU32Insert(PAVLU32TREE pTree, PAVLU32NODECORE pNode); +RTDECL(PAVLU32NODECORE) RTAvlU32Remove(PAVLU32TREE pTree, AVLU32KEY Key); +RTDECL(PAVLU32NODECORE) RTAvlU32Get(PAVLU32TREE pTree, AVLU32KEY Key); +RTDECL(PAVLU32NODECORE) RTAvlU32GetBestFit(PAVLU32TREE pTree, AVLU32KEY Key, bool fAbove); +RTDECL(PAVLU32NODECORE) RTAvlU32RemoveBestFit(PAVLU32TREE pTree, AVLU32KEY Key, bool fAbove); +RTDECL(int) RTAvlU32DoWithAll(PAVLU32TREE pTree, int fFromLeft, PAVLU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlU32Destroy(PAVLU32TREE pTree, PAVLU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + +/** + * AVL uint32_t type for the relative offset pointer scheme. + */ +typedef int32_t AVLOU32; + +typedef uint32_t AVLOU32KEY; + +/** + * AVL Core node. + */ +typedef struct _AVLOU32NodeCore +{ + /** Key value. */ + AVLOU32KEY Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOU32 pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOU32 pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLOU32NODECORE, *PAVLOU32NODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOU32 AVLOU32TREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOU32TREE *PAVLOU32TREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOU32TREE *PPAVLOU32NODECORE; + +/** Callback function for RTAvloU32DoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOU32CALLBACK(PAVLOU32NODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloU32DoWithAll(). */ +typedef AVLOU32CALLBACK *PAVLOU32CALLBACK; + +RTDECL(bool) RTAvloU32Insert(PAVLOU32TREE pTree, PAVLOU32NODECORE pNode); +RTDECL(PAVLOU32NODECORE) RTAvloU32Remove(PAVLOU32TREE pTree, AVLOU32KEY Key); +RTDECL(PAVLOU32NODECORE) RTAvloU32Get(PAVLOU32TREE pTree, AVLOU32KEY Key); +RTDECL(int) RTAvloU32DoWithAll(PAVLOU32TREE pTree, int fFromLeft, PAVLOU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOU32NODECORE) RTAvloU32GetBestFit(PAVLOU32TREE ppTree, AVLOU32KEY Key, bool fAbove); +RTDECL(PAVLOU32NODECORE) RTAvloU32RemoveBestFit(PAVLOU32TREE ppTree, AVLOU32KEY Key, bool fAbove); +RTDECL(int) RTAvloU32Destroy(PAVLOU32TREE pTree, PAVLOU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of uint32_t, list duplicates. + * @{ + */ + +/** AVL key type. */ +typedef uint32_t AVLLU32KEY; + +/** AVL Core node. */ +typedef struct _AVLLU32NodeCore +{ + AVLLU32KEY Key; /**< Key value. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ + struct _AVLLU32NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct _AVLLU32NodeCore *pRight; /**< Pointer to right leaf node. */ + struct _AVLLU32NodeCore *pList; /**< Pointer to next node with the same key. */ +} AVLLU32NODECORE, *PAVLLU32NODECORE, **PPAVLLU32NODECORE; + +/** Callback function for RTAvllU32DoWithAll() & RTAvllU32Destroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLLU32CALLBACK(PAVLLU32NODECORE, void*); +/** Pointer to callback function for RTAvllU32DoWithAll() & RTAvllU32Destroy(). */ +typedef AVLLU32CALLBACK *PAVLLU32CALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvllU32Insert(PPAVLLU32NODECORE ppTree, PAVLLU32NODECORE pNode); +RTDECL(PAVLLU32NODECORE) RTAvllU32Remove(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key); +RTDECL(PAVLLU32NODECORE) RTAvllU32RemoveNode(PPAVLLU32NODECORE ppTree, PAVLLU32NODECORE pNode); +RTDECL(PAVLLU32NODECORE) RTAvllU32Get(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key); +RTDECL(PAVLLU32NODECORE) RTAvllU32GetBestFit(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key, bool fAbove); +RTDECL(PAVLLU32NODECORE) RTAvllU32RemoveBestFit(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key, bool fAbove); +RTDECL(int) RTAvllU32DoWithAll(PPAVLLU32NODECORE ppTree, int fFromLeft, PAVLLU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvllU32Destroy(PPAVLLU32NODECORE pTree, PAVLLU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of uint64_t ranges. + * @{ + */ + +/** + * AVL key type + */ +typedef uint64_t AVLRU64KEY; + +/** + * AVL Core node. + */ +typedef struct AVLRU64NodeCore +{ + AVLRU64KEY Key; /**< First key value in the range (inclusive). */ + AVLRU64KEY KeyLast; /**< Last key value in the range (inclusive). */ + struct AVLRU64NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct AVLRU64NodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLRU64NODECORE, *PAVLRU64NODECORE, **PPAVLRU64NODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLRU64NODECORE AVLRU64TREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLRU64NODECORE PAVLRU64TREE; + +/** Callback function for AVLRU64DoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRU64CALLBACK(PAVLRU64NODECORE, void *); +/** Pointer to callback function for AVLU64DoWithAll(). */ +typedef AVLRU64CALLBACK *PAVLRU64CALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlrU64Insert(PAVLRU64TREE ppTree, PAVLRU64NODECORE pNode); +RTDECL(PAVLRU64NODECORE) RTAvlrU64Remove(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64Get(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RangeGet(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RangeRemove(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64GetBestFit(PAVLRU64TREE ppTree, AVLRU64KEY Key, bool fAbove); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RemoveBestFit(PAVLRU64TREE ppTree, AVLRU64KEY Key, bool fAbove); +RTDECL(int) RTAvlrU64DoWithAll(PAVLRU64TREE ppTree, int fFromLeft, PAVLRU64CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrU64Destroy(PAVLRU64TREE ppTree, PAVLRU64CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of RTGCPHYSes - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOGCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLOGCPhysNodeCore +{ + /** Key value. */ + RTGCPHYS Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOGCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOGCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + /** Padding */ + unsigned char Padding[7]; +} AVLOGCPHYSNODECORE, *PAVLOGCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOGCPHYS AVLOGCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOGCPHYSTREE *PAVLOGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOGCPHYSTREE *PPAVLOGCPHYSNODECORE; + +/** Callback function for RTAvloGCPhysDoWithAll() and RTAvloGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOGCPHYSCALLBACK(PAVLOGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloGCPhysDoWithAll() and RTAvloGCPhysDestroy(). */ +typedef AVLOGCPHYSCALLBACK *PAVLOGCPHYSCALLBACK; + +RTDECL(bool) RTAvloGCPhysInsert(PAVLOGCPHYSTREE pTree, PAVLOGCPHYSNODECORE pNode); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysRemove(PAVLOGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysGet(PAVLOGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(int) RTAvloGCPhysDoWithAll(PAVLOGCPHYSTREE pTree, int fFromLeft, PAVLOGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysGetBestFit(PAVLOGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysRemoveBestFit(PAVLOGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvloGCPhysDestroy(PAVLOGCPHYSTREE pTree, PAVLOGCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPHYS ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROGCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLROGCPhysNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPHYS Key; + /** Last key value in the range (inclusive). */ + RTGCPHYS KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROGCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROGCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + /** Padding */ + unsigned char Padding[7]; +} AVLROGCPHYSNODECORE, *PAVLROGCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROGCPHYS AVLROGCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROGCPHYSTREE *PAVLROGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROGCPHYSTREE *PPAVLROGCPHYSNODECORE; + +/** Callback function for RTAvlroGCPhysDoWithAll() and RTAvlroGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROGCPHYSCALLBACK(PAVLROGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroGCPhysDoWithAll() and RTAvlroGCPhysDestroy(). */ +typedef AVLROGCPHYSCALLBACK *PAVLROGCPHYSCALLBACK; + +RTDECL(bool) RTAvlroGCPhysInsert(PAVLROGCPHYSTREE pTree, PAVLROGCPHYSNODECORE pNode); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRemove(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGet(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRangeGet(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRangeRemove(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetBestFit(PAVLROGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvlroGCPhysDoWithAll(PAVLROGCPHYSTREE pTree, int fFromLeft, PAVLROGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroGCPhysDestroy(PAVLROGCPHYSTREE pTree, PAVLROGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetRoot(PAVLROGCPHYSTREE pTree); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetLeft(PAVLROGCPHYSNODECORE pNode); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetRight(PAVLROGCPHYSNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTRs. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLGCPtrNodeCore +{ + /** Key value. */ + RTGCPTR Key; + /** Pointer to the left node. */ + struct _AVLGCPtrNodeCore *pLeft; + /** Pointer to the right node. */ + struct _AVLGCPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLGCPTRNODECORE, *PAVLGCPTRNODECORE, **PPAVLGCPTRNODECORE; + +/** A tree of RTGCPTR keys. */ +typedef PAVLGCPTRNODECORE AVLGCPTRTREE; +/** Pointer to a tree of RTGCPTR keys. */ +typedef PPAVLGCPTRNODECORE PAVLGCPTRTREE; + +/** Callback function for RTAvlGCPtrDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLGCPTRCALLBACK(PAVLGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlGCPtrDoWithAll(). */ +typedef AVLGCPTRCALLBACK *PAVLGCPTRCALLBACK; + +RTDECL(bool) RTAvlGCPtrInsert(PAVLGCPTRTREE pTree, PAVLGCPTRNODECORE pNode); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrRemove(PAVLGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrGet(PAVLGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlGCPtrDoWithAll(PAVLGCPTRTREE pTree, int fFromLeft, PAVLGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrGetBestFit(PAVLGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrRemoveBestFit(PAVLGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(int) RTAvlGCPtrDestroy(PAVLGCPTRTREE pTree, PAVLGCPTRCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPTRs - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLOGCPtrNodeCore +{ + /** Key value. */ + RTGCPTR Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOGCPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + unsigned char padding[GC_ARCH_BITS == 64 ? 7 : 3]; +} AVLOGCPTRNODECORE, *PAVLOGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOGCPTR AVLOGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOGCPTRTREE *PAVLOGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOGCPTRTREE *PPAVLOGCPTRNODECORE; + +/** Callback function for RTAvloGCPtrDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOGCPTRCALLBACK(PAVLOGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloGCPtrDoWithAll(). */ +typedef AVLOGCPTRCALLBACK *PAVLOGCPTRCALLBACK; + +RTDECL(bool) RTAvloGCPtrInsert(PAVLOGCPTRTREE pTree, PAVLOGCPTRNODECORE pNode); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrRemove(PAVLOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrGet(PAVLOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvloGCPtrDoWithAll(PAVLOGCPTRTREE pTree, int fFromLeft, PAVLOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrGetBestFit(PAVLOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrRemoveBestFit(PAVLOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(int) RTAvloGCPtrDestroy(PAVLOGCPTRTREE pTree, PAVLOGCPTRCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLRGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRGCPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRGCPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRGCPTRNODECORE, *PAVLRGCPTRNODECORE; + +/** A offset base tree with RTGCPTR keys. */ +typedef PAVLRGCPTRNODECORE AVLRGCPTRTREE; +/** Pointer to an offset base tree with RTGCPTR keys. */ +typedef AVLRGCPTRTREE *PAVLRGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLRGCPTRTREE *PPAVLRGCPTRNODECORE; + +/** Callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRGCPTRCALLBACK(PAVLRGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). */ +typedef AVLRGCPTRCALLBACK *PAVLRGCPTRCALLBACK; + +RTDECL(bool) RTAvlrGCPtrInsert( PAVLRGCPTRTREE pTree, PAVLRGCPTRNODECORE pNode); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRemove( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGet( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetBestFit( PAVLRGCPTRTREE pTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRangeGet( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRangeRemove( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlrGCPtrDoWithAll( PAVLRGCPTRTREE pTree, int fFromLeft, PAVLRGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrGCPtrDestroy( PAVLRGCPTRTREE pTree, PAVLRGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetRoot( PAVLRGCPTRTREE pTree); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetLeft( PAVLRGCPTRNODECORE pNode); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetRight( PAVLRGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROGCPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + unsigned char padding[GC_ARCH_BITS == 64 ? 7 : 7]; +} AVLROGCPTRNODECORE, *PAVLROGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROGCPTR AVLROGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROGCPTRTREE *PAVLROGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROGCPTRTREE *PPAVLROGCPTRNODECORE; + +/** Callback function for RTAvlroGCPtrDoWithAll() and RTAvlroGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROGCPTRCALLBACK(PAVLROGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroGCPtrDoWithAll() and RTAvlroGCPtrDestroy(). */ +typedef AVLROGCPTRCALLBACK *PAVLROGCPTRCALLBACK; + +RTDECL(bool) RTAvlroGCPtrInsert(PAVLROGCPTRTREE pTree, PAVLROGCPTRNODECORE pNode); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRemove(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGet(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetBestFit(PAVLROGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRangeGet(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRangeRemove(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlroGCPtrDoWithAll(PAVLROGCPTRTREE pTree, int fFromLeft, PAVLROGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroGCPtrDestroy(PAVLROGCPTRTREE pTree, PAVLROGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetRoot(PAVLROGCPTRTREE pTree); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetLeft(PAVLROGCPTRNODECORE pNode); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetRight(PAVLROGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges (overlapping supported) - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROOGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROOGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROOGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROOGCPTR pRight; + /** Pointer to the list of string with the same key. Don't touch. */ + AVLROOGCPTR pList; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLROOGCPTRNODECORE, *PAVLROOGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROOGCPTR AVLROOGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROOGCPTRTREE *PAVLROOGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROOGCPTRTREE *PPAVLROOGCPTRNODECORE; + +/** Callback function for RTAvlrooGCPtrDoWithAll() and RTAvlrooGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROOGCPTRCALLBACK(PAVLROOGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrooGCPtrDoWithAll() and RTAvlrooGCPtrDestroy(). */ +typedef AVLROOGCPTRCALLBACK *PAVLROOGCPTRCALLBACK; + +RTDECL(bool) RTAvlrooGCPtrInsert(PAVLROOGCPTRTREE pTree, PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRemove(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGet(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetBestFit(PAVLROOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRangeGet(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRangeRemove(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlrooGCPtrDoWithAll(PAVLROOGCPTRTREE pTree, int fFromLeft, PAVLROOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrooGCPtrDestroy(PAVLROOGCPTRTREE pTree, PAVLROOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetRoot(PAVLROOGCPTRTREE pTree); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetLeft(PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetRight(PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetNextEqual(PAVLROOGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTUINTPTR. + * @{ + */ + +/** + * AVL RTUINTPTR node core. + */ +typedef struct _AVLUIntPtrNodeCore +{ + /** Key value. */ + RTUINTPTR Key; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLUIntPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLUIntPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLUINTPTRNODECORE; +/** Pointer to a RTUINTPTR AVL node core.*/ +typedef AVLUINTPTRNODECORE *PAVLUINTPTRNODECORE; + +/** A pointer based tree with RTUINTPTR keys. */ +typedef PAVLUINTPTRNODECORE AVLUINTPTRTREE; +/** Pointer to an offset base tree with RTUINTPTR keys. */ +typedef AVLUINTPTRTREE *PAVLUINTPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a pointer. */ +typedef AVLUINTPTRTREE *PPAVLUINTPTRNODECORE; + +/** Callback function for RTAvlUIntPtrDoWithAll() and RTAvlUIntPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLUINTPTRCALLBACK(PAVLUINTPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlUIntPtrDoWithAll() and RTAvlUIntPtrDestroy(). */ +typedef AVLUINTPTRCALLBACK *PAVLUINTPTRCALLBACK; + +RTDECL(bool) RTAvlUIntPtrInsert( PAVLUINTPTRTREE pTree, PAVLUINTPTRNODECORE pNode); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrRemove( PAVLUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGet( PAVLUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetBestFit(PAVLUINTPTRTREE pTree, RTUINTPTR Key, bool fAbove); +RTDECL(int) RTAvlUIntPtrDoWithAll( PAVLUINTPTRTREE pTree, int fFromLeft, PAVLUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlUIntPtrDestroy( PAVLUINTPTRTREE pTree, PAVLUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetRoot( PAVLUINTPTRTREE pTree); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetLeft( PAVLUINTPTRNODECORE pNode); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetRight( PAVLUINTPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTUINTPTR ranges. + * @{ + */ + +/** + * AVL RTUINTPTR range node core. + */ +typedef struct _AVLRUIntPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTUINTPTR Key; + /** Last key value in the range (inclusive). */ + RTUINTPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRUIntPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRUIntPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRUINTPTRNODECORE; +/** Pointer to an AVL RTUINTPTR range node code. */ +typedef AVLRUINTPTRNODECORE *PAVLRUINTPTRNODECORE; + +/** A pointer based tree with RTUINTPTR ranges. */ +typedef PAVLRUINTPTRNODECORE AVLRUINTPTRTREE; +/** Pointer to a pointer based tree with RTUINTPTR ranges. */ +typedef AVLRUINTPTRTREE *PAVLRUINTPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a pointer. */ +typedef AVLRUINTPTRTREE *PPAVLRUINTPTRNODECORE; + +/** Callback function for RTAvlrUIntPtrDoWithAll() and RTAvlrUIntPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRUINTPTRCALLBACK(PAVLRUINTPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrUIntPtrDoWithAll() and RTAvlrUIntPtrDestroy(). */ +typedef AVLRUINTPTRCALLBACK *PAVLRUINTPTRCALLBACK; + +RTDECL(bool) RTAvlrUIntPtrInsert( PAVLRUINTPTRTREE pTree, PAVLRUINTPTRNODECORE pNode); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRemove( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGet( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetBestFit( PAVLRUINTPTRTREE pTree, RTUINTPTR Key, bool fAbove); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRangeGet( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRangeRemove(PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(int) RTAvlrUIntPtrDoWithAll( PAVLRUINTPTRTREE pTree, int fFromLeft, PAVLRUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrUIntPtrDestroy( PAVLRUINTPTRTREE pTree, PAVLRUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetRoot( PAVLRUINTPTRTREE pTree); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetLeft( PAVLRUINTPTRNODECORE pNode); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetRight( PAVLRUINTPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTHCPHYSes - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOHCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLOHCPhysNodeCore +{ + /** Key value. */ + RTHCPHYS Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOHCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOHCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +#if HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64 + unsigned char Padding[7]; /**< Alignment padding. */ +#endif +} AVLOHCPHYSNODECORE, *PAVLOHCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOHCPHYS AVLOHCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOHCPHYSTREE *PAVLOHCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOHCPHYSTREE *PPAVLOHCPHYSNODECORE; + +/** Callback function for RTAvloHCPhysDoWithAll() and RTAvloHCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOHCPHYSCALLBACK(PAVLOHCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloHCPhysDoWithAll() and RTAvloHCPhysDestroy(). */ +typedef AVLOHCPHYSCALLBACK *PAVLOHCPHYSCALLBACK; + +RTDECL(bool) RTAvloHCPhysInsert(PAVLOHCPHYSTREE pTree, PAVLOHCPHYSNODECORE pNode); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysRemove(PAVLOHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysGet(PAVLOHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(int) RTAvloHCPhysDoWithAll(PAVLOHCPHYSTREE pTree, int fFromLeft, PAVLOHCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysGetBestFit(PAVLOHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysRemoveBestFit(PAVLOHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(int) RTAvloHCPhysDestroy(PAVLOHCPHYSTREE pTree, PAVLOHCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of RTIOPORTs - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOIOPORTPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLOIOPortNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLOIOPORTPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOIOPORTPTR pRight; + /** Key value. */ + RTIOPORT Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLOIOPORTNODECORE, *PAVLOIOPORTNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOIOPORTPTR AVLOIOPORTTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOIOPORTTREE *PAVLOIOPORTTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOIOPORTTREE *PPAVLOIOPORTNODECORE; + +/** Callback function for RTAvloIOPortDoWithAll() and RTAvloIOPortDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOIOPORTCALLBACK(PAVLOIOPORTNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloIOPortDoWithAll() and RTAvloIOPortDestroy(). */ +typedef AVLOIOPORTCALLBACK *PAVLOIOPORTCALLBACK; + +RTDECL(bool) RTAvloIOPortInsert(PAVLOIOPORTTREE pTree, PAVLOIOPORTNODECORE pNode); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortRemove(PAVLOIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortGet(PAVLOIOPORTTREE pTree, RTIOPORT Key); +RTDECL(int) RTAvloIOPortDoWithAll(PAVLOIOPORTTREE pTree, int fFromLeft, PAVLOIOPORTCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortGetBestFit(PAVLOIOPORTTREE ppTree, RTIOPORT Key, bool fAbove); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortRemoveBestFit(PAVLOIOPORTTREE ppTree, RTIOPORT Key, bool fAbove); +RTDECL(int) RTAvloIOPortDestroy(PAVLOIOPORTTREE pTree, PAVLOIOPORTCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTIOPORT ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROIOPORTPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROIOPortNodeCore +{ + /** First key value in the range (inclusive). */ + RTIOPORT Key; + /** Last key value in the range (inclusive). */ + RTIOPORT KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROIOPORTPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROIOPORTPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLROIOPORTNODECORE, *PAVLROIOPORTNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROIOPORTPTR AVLROIOPORTTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROIOPORTTREE *PAVLROIOPORTTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROIOPORTTREE *PPAVLROIOPORTNODECORE; + +/** Callback function for RTAvlroIOPortDoWithAll() and RTAvlroIOPortDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROIOPORTCALLBACK(PAVLROIOPORTNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroIOPortDoWithAll() and RTAvlroIOPortDestroy(). */ +typedef AVLROIOPORTCALLBACK *PAVLROIOPORTCALLBACK; + +RTDECL(bool) RTAvlroIOPortInsert(PAVLROIOPORTTREE pTree, PAVLROIOPORTNODECORE pNode); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRemove(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortGet(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRangeGet(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRangeRemove(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(int) RTAvlroIOPortDoWithAll(PAVLROIOPORTTREE pTree, int fFromLeft, PAVLROIOPORTCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroIOPortDestroy(PAVLROIOPORTTREE pTree, PAVLROIOPORTCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTHCPHYSes. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef struct _AVLHCPhysNodeCore *AVLHCPHYSPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLHCPhysNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLHCPHYSPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLHCPHYSPTR pRight; + /** Key value. */ + RTHCPHYS Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLHCPHYSNODECORE, *PAVLHCPHYSNODECORE; + +/** A offset base tree with RTHCPHYS keys. */ +typedef AVLHCPHYSPTR AVLHCPHYSTREE; +/** Pointer to an offset base tree with RTHCPHYS keys. */ +typedef AVLHCPHYSTREE *PAVLHCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLHCPHYSTREE *PPAVLHCPHYSNODECORE; + +/** Callback function for RTAvlHCPhysDoWithAll() and RTAvlHCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLHCPHYSCALLBACK(PAVLHCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlHCPhysDoWithAll() and RTAvlHCPhysDestroy(). */ +typedef AVLHCPHYSCALLBACK *PAVLHCPHYSCALLBACK; + +RTDECL(bool) RTAvlHCPhysInsert(PAVLHCPHYSTREE pTree, PAVLHCPHYSNODECORE pNode); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysRemove(PAVLHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysGet(PAVLHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(int) RTAvlHCPhysDoWithAll(PAVLHCPHYSTREE pTree, int fFromLeft, PAVLHCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysGetBestFit(PAVLHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysRemoveBestFit(PAVLHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(int) RTAvlHCPhysDestroy(PAVLHCPHYSTREE pTree, PAVLHCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + +/** AVL tree of RTGCPHYSes. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef struct _AVLGCPhysNodeCore *AVLGCPHYSPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLGCPhysNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLGCPHYSPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLGCPHYSPTR pRight; + /** Key value. */ + RTGCPHYS Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLGCPHYSNODECORE, *PAVLGCPHYSNODECORE; + +/** A offset base tree with RTGCPHYS keys. */ +typedef AVLGCPHYSPTR AVLGCPHYSTREE; +/** Pointer to an offset base tree with RTGCPHYS keys. */ +typedef AVLGCPHYSTREE *PAVLGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLGCPHYSTREE *PPAVLGCPHYSNODECORE; + +/** Callback function for RTAvlGCPhysDoWithAll() and RTAvlGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLGCPHYSCALLBACK(PAVLGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlGCPhysDoWithAll() and RTAvlGCPhysDestroy(). */ +typedef AVLGCPHYSCALLBACK *PAVLGCPHYSCALLBACK; + +RTDECL(bool) RTAvlGCPhysInsert(PAVLGCPHYSTREE pTree, PAVLGCPHYSNODECORE pNode); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysRemove(PAVLGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysGet(PAVLGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(int) RTAvlGCPhysDoWithAll(PAVLGCPHYSTREE pTree, int fFromLeft, PAVLGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysGetBestFit(PAVLGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysRemoveBestFit(PAVLGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvlGCPhysDestroy(PAVLGCPHYSTREE pTree, PAVLGCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTFOFF ranges. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLRFOFFNodeCore +{ + /** First key value in the range (inclusive). */ + RTFOFF Key; + /** Last key value in the range (inclusive). */ + RTFOFF KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRFOFFNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRFOFFNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRFOFFNODECORE, *PAVLRFOFFNODECORE; + +/** A pointer based tree with RTFOFF ranges. */ +typedef PAVLRFOFFNODECORE AVLRFOFFTREE; +/** Pointer to a pointer based tree with RTFOFF ranges. */ +typedef AVLRFOFFTREE *PAVLRFOFFTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLRFOFFTREE *PPAVLRFOFFNODECORE; + +/** Callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRFOFFCALLBACK(PAVLRFOFFNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). */ +typedef AVLRFOFFCALLBACK *PAVLRFOFFCALLBACK; + +RTDECL(bool) RTAvlrFileOffsetInsert( PAVLRFOFFTREE pTree, PAVLRFOFFNODECORE pNode); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRemove( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGet( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetBestFit( PAVLRFOFFTREE pTree, RTFOFF Key, bool fAbove); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRangeGet( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRangeRemove( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(int) RTAvlrFileOffsetDoWithAll( PAVLRFOFFTREE pTree, int fFromLeft, PAVLRFOFFCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrFileOffsetDestroy( PAVLRFOFFTREE pTree, PAVLRFOFFCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetRoot( PAVLRFOFFTREE pTree); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetLeft( PAVLRFOFFNODECORE pNode); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetRight( PAVLRFOFFNODECORE pNode); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/cdefs.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/cdefs.h @@ -0,0 +1,2915 @@ +/** @file + * IPRT - Common C and C++ definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_cdefs_h +#define ___iprt_cdefs_h + + +/** @defgroup grp_rt_cdefs IPRT Common Definitions and Macros + * @{ + */ + +/** @def RT_C_DECLS_BEGIN + * Used to start a block of function declarations which are shared + * between C and C++ program. + */ + +/** @def RT_C_DECLS_END + * Used to end a block of function declarations which are shared + * between C and C++ program. + */ + +#if defined(__cplusplus) +# define RT_C_DECLS_BEGIN extern "C" { +# define RT_C_DECLS_END } +#else +# define RT_C_DECLS_BEGIN +# define RT_C_DECLS_END +#endif + + +/* + * Shut up DOXYGEN warnings and guide it properly thru the code. + */ +#ifdef DOXYGEN_RUNNING +# define __AMD64__ +# define __X86__ +# define RT_ARCH_AMD64 +# define RT_ARCH_X86 +# define RT_ARCH_SPARC +# define RT_ARCH_SPARC64 +# define IN_RING0 +# define IN_RING3 +# define IN_RC +# define IN_RC +# define IN_RT_RC +# define IN_RT_R0 +# define IN_RT_R3 +# define IN_RT_STATIC +# define RT_STRICT +# define RT_NO_STRICT +# define RT_LOCK_STRICT +# define RT_LOCK_NO_STRICT +# define RT_LOCK_STRICT_ORDER +# define RT_LOCK_NO_STRICT_ORDER +# define RT_BREAKPOINT +# define RT_NO_DEPRECATED_MACROS +# define RT_EXCEPTIONS_ENABLED +# define RT_BIG_ENDIAN +# define RT_LITTLE_ENDIAN +# define RT_COMPILER_GROKS_64BIT_BITFIELDS +# define RT_COMPILER_WITH_80BIT_LONG_DOUBLE +# define RT_NO_VISIBILITY_HIDDEN +# define RT_GCC_SUPPORTS_VISIBILITY_HIDDEN +# define RT_COMPILER_SUPPORTS_LAMBDA +#endif /* DOXYGEN_RUNNING */ + +/** @def RT_ARCH_X86 + * Indicates that we're compiling for the X86 architecture. + */ + +/** @def RT_ARCH_AMD64 + * Indicates that we're compiling for the AMD64 architecture. + */ + +/** @def RT_ARCH_SPARC + * Indicates that we're compiling for the SPARC V8 architecture (32-bit). + */ + +/** @def RT_ARCH_SPARC64 + * Indicates that we're compiling for the SPARC V9 architecture (64-bit). + */ +#if !defined(RT_ARCH_X86) \ + && !defined(RT_ARCH_AMD64) \ + && !defined(RT_ARCH_SPARC) \ + && !defined(RT_ARCH_SPARC64) \ + && !defined(RT_ARCH_ARM) +# if defined(__amd64__) || defined(__x86_64__) || defined(_M_X64) || defined(__AMD64__) +# define RT_ARCH_AMD64 +# elif defined(__i386__) || defined(_M_IX86) || defined(__X86__) +# define RT_ARCH_X86 +# elif defined(__sparcv9) +# define RT_ARCH_SPARC64 +# elif defined(__sparc__) +# define RT_ARCH_SPARC +# elif defined(__arm__) || defined(__arm32__) +# define RT_ARCH_ARM +# else /* PORTME: append test for new archs. */ +# error "Check what predefined macros your compiler uses to indicate architecture." +# endif +/* PORTME: append new archs checks. */ +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_AMD64) +# error "Both RT_ARCH_X86 and RT_ARCH_AMD64 cannot be defined at the same time!" +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_X86 and RT_ARCH_SPARC cannot be defined at the same time!" +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_X86 and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_AMD64) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_AMD64 and RT_ARCH_SPARC cannot be defined at the same time!" +#elif defined(RT_ARCH_AMD64) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_AMD64 and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_SPARC) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_SPARC and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_AMD64) +# error "Both RT_ARCH_ARM and RT_ARCH_AMD64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_X86) +# error "Both RT_ARCH_ARM and RT_ARCH_X86 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_ARM and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_ARM and RT_ARCH_SPARC cannot be defined at the same time!" +#endif + + +/** @def __X86__ + * Indicates that we're compiling for the X86 architecture. + * @deprecated + */ + +/** @def __AMD64__ + * Indicates that we're compiling for the AMD64 architecture. + * @deprecated + */ +#if !defined(__X86__) && !defined(__AMD64__) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +# if defined(RT_ARCH_AMD64) +# define __AMD64__ +# elif defined(RT_ARCH_X86) +# define __X86__ +# else +# error "Check what predefined macros your compiler uses to indicate architecture." +# endif +#elif defined(__X86__) && defined(__AMD64__) +# error "Both __X86__ and __AMD64__ cannot be defined at the same time!" +#elif defined(__X86__) && !defined(RT_ARCH_X86) +# error "__X86__ without RT_ARCH_X86!" +#elif defined(__AMD64__) && !defined(RT_ARCH_AMD64) +# error "__AMD64__ without RT_ARCH_AMD64!" +#endif + +/** @def RT_BIG_ENDIAN + * Defined if the architecture is big endian. */ +/** @def RT_LITTLE_ENDIAN + * Defined if the architecture is little endian. */ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) || defined(RT_ARCH_ARM) +# define RT_LITTLE_ENDIAN +#elif defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define RT_BIG_ENDIAN +#else +# error "PORTME: architecture endianess" +#endif +#if defined(RT_BIG_ENDIAN) && defined(RT_LITTLE_ENDIAN) +# error "Both RT_BIG_ENDIAN and RT_LITTLE_ENDIAN are defined" +#endif + + +/** @def IN_RING0 + * Used to indicate that we're compiling code which is running + * in Ring-0 Host Context. + */ + +/** @def IN_RING3 + * Used to indicate that we're compiling code which is running + * in Ring-3 Host Context. + */ + +/** @def IN_RC + * Used to indicate that we're compiling code which is running + * in the Raw-mode Context (implies R0). + */ +#if !defined(IN_RING3) && !defined(IN_RING0) && !defined(IN_RC) && !defined(IN_RC) +# error "You must define which context the compiled code should run in; IN_RING3, IN_RING0 or IN_RC" +#endif +#if (defined(IN_RING3) && (defined(IN_RING0) || defined(IN_RC)) ) \ + || (defined(IN_RING0) && (defined(IN_RING3) || defined(IN_RC)) ) \ + || (defined(IN_RC) && (defined(IN_RING3) || defined(IN_RING0)) ) +# error "Only one of the IN_RING3, IN_RING0, IN_RC defines should be defined." +#endif + + +/** @def ARCH_BITS + * Defines the bit count of the current context. + */ +#if !defined(ARCH_BITS) || defined(DOXYGEN_RUNNING) +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define ARCH_BITS 64 +# else +# define ARCH_BITS 32 +# endif +#endif + +/** @def HC_ARCH_BITS + * Defines the host architecture bit count. + */ +#if !defined(HC_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifndef IN_RC +# define HC_ARCH_BITS ARCH_BITS +# else +# define HC_ARCH_BITS 32 +# endif +#endif + +/** @def GC_ARCH_BITS + * Defines the guest architecture bit count. + */ +#if !defined(GC_ARCH_BITS) && !defined(DOXYGEN_RUNNING) +# ifdef VBOX_WITH_64_BITS_GUESTS +# define GC_ARCH_BITS 64 +# else +# define GC_ARCH_BITS 32 +# endif +#endif + +/** @def R3_ARCH_BITS + * Defines the host ring-3 architecture bit count. + */ +#if !defined(R3_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RING3 +# define R3_ARCH_BITS ARCH_BITS +# else +# define R3_ARCH_BITS HC_ARCH_BITS +# endif +#endif + +/** @def R0_ARCH_BITS + * Defines the host ring-0 architecture bit count. + */ +#if !defined(R0_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RING0 +# define R0_ARCH_BITS ARCH_BITS +# else +# define R0_ARCH_BITS HC_ARCH_BITS +# endif +#endif + +/** @def GC_ARCH_BITS + * Defines the guest architecture bit count. + */ +#if !defined(GC_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RC +# define GC_ARCH_BITS ARCH_BITS +# else +# define GC_ARCH_BITS 32 +# endif +#endif + + + +/** @name RT_OPSYS_XXX - Operative System Identifiers. + * These are the value that the RT_OPSYS \#define can take. @{ + */ +/** Unknown OS. */ +#define RT_OPSYS_UNKNOWN 0 +/** OS Agnostic. */ +#define RT_OPSYS_AGNOSTIC 1 +/** Darwin - aka Mac OS X. */ +#define RT_OPSYS_DARWIN 2 +/** DragonFly BSD. */ +#define RT_OPSYS_DRAGONFLY 3 +/** DOS. */ +#define RT_OPSYS_DOS 4 +/** FreeBSD. */ +#define RT_OPSYS_FREEBSD 5 +/** Haiku. */ +#define RT_OPSYS_HAIKU 6 +/** Linux. */ +#define RT_OPSYS_LINUX 7 +/** L4. */ +#define RT_OPSYS_L4 8 +/** Minix. */ +#define RT_OPSYS_MINIX 9 +/** NetBSD. */ +#define RT_OPSYS_NETBSD 11 +/** Netware. */ +#define RT_OPSYS_NETWARE 12 +/** NT (native). */ +#define RT_OPSYS_NT 13 +/** OpenBSD. */ +#define RT_OPSYS_OPENBSD 14 +/** OS/2. */ +#define RT_OPSYS_OS2 15 +/** Plan 9. */ +#define RT_OPSYS_PLAN9 16 +/** QNX. */ +#define RT_OPSYS_QNX 17 +/** Solaris. */ +#define RT_OPSYS_SOLARIS 18 +/** UEFI. */ +#define RT_OPSYS_UEFI 19 +/** Windows. */ +#define RT_OPSYS_WINDOWS 20 +/** The max RT_OPSYS_XXX value (exclusive). */ +#define RT_OPSYS_MAX 21 +/** @} */ + +/** @def RT_OPSYS + * Indicates which OS we're targeting. It's a \#define with is + * assigned one of the RT_OPSYS_XXX defines above. + * + * So to test if we're on FreeBSD do the following: + * @code + * #if RT_OPSYS == RT_OPSYS_FREEBSD + * some_funky_freebsd_specific_stuff(); + * #endif + * @endcode + */ + +/* + * Set RT_OPSYS_XXX according to RT_OS_XXX. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: # elif defined(RT_OS_\1)\n# define RT_OPSYS RT_OPSYS_\1 + */ +#ifndef RT_OPSYS +# if defined(RT_OS_UNKNOWN) || defined(DOXYGEN_RUNNING) +# define RT_OPSYS RT_OPSYS_UNKNOWN +# elif defined(RT_OS_AGNOSTIC) +# define RT_OPSYS RT_OPSYS_AGNOSTIC +# elif defined(RT_OS_DARWIN) +# define RT_OPSYS RT_OPSYS_DARWIN +# elif defined(RT_OS_DRAGONFLY) +# define RT_OPSYS RT_OPSYS_DRAGONFLY +# elif defined(RT_OS_DOS) +# define RT_OPSYS RT_OPSYS_DOS +# elif defined(RT_OS_FREEBSD) +# define RT_OPSYS RT_OPSYS_FREEBSD +# elif defined(RT_OS_HAIKU) +# define RT_OPSYS RT_OPSYS_HAIKU +# elif defined(RT_OS_LINUX) +# define RT_OPSYS RT_OPSYS_LINUX +# elif defined(RT_OS_L4) +# define RT_OPSYS RT_OPSYS_L4 +# elif defined(RT_OS_MINIX) +# define RT_OPSYS RT_OPSYS_MINIX +# elif defined(RT_OS_NETBSD) +# define RT_OPSYS RT_OPSYS_NETBSD +# elif defined(RT_OS_NETWARE) +# define RT_OPSYS RT_OPSYS_NETWARE +# elif defined(RT_OS_NT) +# define RT_OPSYS RT_OPSYS_NT +# elif defined(RT_OS_OPENBSD) +# define RT_OPSYS RT_OPSYS_OPENBSD +# elif defined(RT_OS_OS2) +# define RT_OPSYS RT_OPSYS_OS2 +# elif defined(RT_OS_PLAN9) +# define RT_OPSYS RT_OPSYS_PLAN9 +# elif defined(RT_OS_QNX) +# define RT_OPSYS RT_OPSYS_QNX +# elif defined(RT_OS_SOLARIS) +# define RT_OPSYS RT_OPSYS_SOLARIS +# elif defined(RT_OS_UEFI) +# define RT_OPSYS RT_OPSYS_UEFI +# elif defined(RT_OS_WINDOWS) +# define RT_OPSYS RT_OPSYS_WINDOWS +# endif +#endif + +/* + * Guess RT_OPSYS based on compiler predefined macros. + */ +#ifndef RT_OPSYS +# if defined(__APPLE__) +# define RT_OPSYS RT_OPSYS_DARWIN +# elif defined(__DragonFly__) +# define RT_OPSYS RT_OPSYS_DRAGONFLY +# elif defined(__FreeBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_FREEBSD +# elif defined(__gnu_linux__) +# define RT_OPSYS RT_OPSYS_LINUX +# elif defined(__NetBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_NETBSD +# elif defined(__OpenBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_OPENBSD +# elif defined(__OS2__) +# define RT_OPSYS RT_OPSYS_OS2 +# elif defined(__sun__) || defined(__SunOS__) || defined(__sun) || defined(__SunOS) +# define RT_OPSYS RT_OPSYS_SOLARIS +# elif defined(_WIN32) || defined(_WIN64) +# define RT_OPSYS RT_OPSYS_WINDOWS +# else +# error "Port Me" +# endif +#endif + +#if RT_OPSYS < RT_OPSYS_UNKNOWN || RT_OPSYS >= RT_OPSYS_MAX +# error "Invalid RT_OPSYS value." +#endif + +/* + * Do some consistency checks. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: #if defined(RT_OS_\1) && RT_OPSYS != RT_OPSYS_\1\n# error RT_OPSYS vs RT_OS_\1\n#endif + */ +#if defined(RT_OS_UNKNOWN) && RT_OPSYS != RT_OPSYS_UNKNOWN +# error RT_OPSYS vs RT_OS_UNKNOWN +#endif +#if defined(RT_OS_AGNOSTIC) && RT_OPSYS != RT_OPSYS_AGNOSTIC +# error RT_OPSYS vs RT_OS_AGNOSTIC +#endif +#if defined(RT_OS_DARWIN) && RT_OPSYS != RT_OPSYS_DARWIN +# error RT_OPSYS vs RT_OS_DARWIN +#endif +#if defined(RT_OS_DRAGONFLY) && RT_OPSYS != RT_OPSYS_DRAGONFLY +# error RT_OPSYS vs RT_OS_DRAGONFLY +#endif +#if defined(RT_OS_DOS) && RT_OPSYS != RT_OPSYS_DOS +# error RT_OPSYS vs RT_OS_DOS +#endif +#if defined(RT_OS_FREEBSD) && RT_OPSYS != RT_OPSYS_FREEBSD +# error RT_OPSYS vs RT_OS_FREEBSD +#endif +#if defined(RT_OS_HAIKU) && RT_OPSYS != RT_OPSYS_HAIKU +# error RT_OPSYS vs RT_OS_HAIKU +#endif +#if defined(RT_OS_LINUX) && RT_OPSYS != RT_OPSYS_LINUX +# error RT_OPSYS vs RT_OS_LINUX +#endif +#if defined(RT_OS_L4) && RT_OPSYS != RT_OPSYS_L4 +# error RT_OPSYS vs RT_OS_L4 +#endif +#if defined(RT_OS_MINIX) && RT_OPSYS != RT_OPSYS_MINIX +# error RT_OPSYS vs RT_OS_MINIX +#endif +#if defined(RT_OS_NETBSD) && RT_OPSYS != RT_OPSYS_NETBSD +# error RT_OPSYS vs RT_OS_NETBSD +#endif +#if defined(RT_OS_NETWARE) && RT_OPSYS != RT_OPSYS_NETWARE +# error RT_OPSYS vs RT_OS_NETWARE +#endif +#if defined(RT_OS_NT) && RT_OPSYS != RT_OPSYS_NT +# error RT_OPSYS vs RT_OS_NT +#endif +#if defined(RT_OS_OPENBSD) && RT_OPSYS != RT_OPSYS_OPENBSD +# error RT_OPSYS vs RT_OS_OPENBSD +#endif +#if defined(RT_OS_OS2) && RT_OPSYS != RT_OPSYS_OS2 +# error RT_OPSYS vs RT_OS_OS2 +#endif +#if defined(RT_OS_PLAN9) && RT_OPSYS != RT_OPSYS_PLAN9 +# error RT_OPSYS vs RT_OS_PLAN9 +#endif +#if defined(RT_OS_QNX) && RT_OPSYS != RT_OPSYS_QNX +# error RT_OPSYS vs RT_OS_QNX +#endif +#if defined(RT_OS_SOLARIS) && RT_OPSYS != RT_OPSYS_SOLARIS +# error RT_OPSYS vs RT_OS_SOLARIS +#endif +#if defined(RT_OS_UEFI) && RT_OPSYS != RT_OPSYS_UEFI +# error RT_OPSYS vs RT_OS_UEFI +#endif +#if defined(RT_OS_WINDOWS) && RT_OPSYS != RT_OPSYS_WINDOWS +# error RT_OPSYS vs RT_OS_WINDOWS +#endif + +/* + * Make sure the RT_OS_XXX macro is defined. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: #elif RT_OPSYS == RT_OPSYS_\1\n# ifndef RT_OS_\1\n# define RT_OS_\1\n# endif + */ +#if RT_OPSYS == RT_OPSYS_UNKNOWN +# ifndef RT_OS_UNKNOWN +# define RT_OS_UNKNOWN +# endif +#elif RT_OPSYS == RT_OPSYS_AGNOSTIC +# ifndef RT_OS_AGNOSTIC +# define RT_OS_AGNOSTIC +# endif +#elif RT_OPSYS == RT_OPSYS_DARWIN +# ifndef RT_OS_DARWIN +# define RT_OS_DARWIN +# endif +#elif RT_OPSYS == RT_OPSYS_DRAGONFLY +# ifndef RT_OS_DRAGONFLY +# define RT_OS_DRAGONFLY +# endif +#elif RT_OPSYS == RT_OPSYS_DOS +# ifndef RT_OS_DOS +# define RT_OS_DOS +# endif +#elif RT_OPSYS == RT_OPSYS_FREEBSD +# ifndef RT_OS_FREEBSD +# define RT_OS_FREEBSD +# endif +#elif RT_OPSYS == RT_OPSYS_HAIKU +# ifndef RT_OS_HAIKU +# define RT_OS_HAIKU +# endif +#elif RT_OPSYS == RT_OPSYS_LINUX +# ifndef RT_OS_LINUX +# define RT_OS_LINUX +# endif +#elif RT_OPSYS == RT_OPSYS_L4 +# ifndef RT_OS_L4 +# define RT_OS_L4 +# endif +#elif RT_OPSYS == RT_OPSYS_MINIX +# ifndef RT_OS_MINIX +# define RT_OS_MINIX +# endif +#elif RT_OPSYS == RT_OPSYS_NETBSD +# ifndef RT_OS_NETBSD +# define RT_OS_NETBSD +# endif +#elif RT_OPSYS == RT_OPSYS_NETWARE +# ifndef RT_OS_NETWARE +# define RT_OS_NETWARE +# endif +#elif RT_OPSYS == RT_OPSYS_NT +# ifndef RT_OS_NT +# define RT_OS_NT +# endif +#elif RT_OPSYS == RT_OPSYS_OPENBSD +# ifndef RT_OS_OPENBSD +# define RT_OS_OPENBSD +# endif +#elif RT_OPSYS == RT_OPSYS_OS2 +# ifndef RT_OS_OS2 +# define RT_OS_OS2 +# endif +#elif RT_OPSYS == RT_OPSYS_PLAN9 +# ifndef RT_OS_PLAN9 +# define RT_OS_PLAN9 +# endif +#elif RT_OPSYS == RT_OPSYS_QNX +# ifndef RT_OS_QNX +# define RT_OS_QNX +# endif +#elif RT_OPSYS == RT_OPSYS_SOLARIS +# ifndef RT_OS_SOLARIS +# define RT_OS_SOLARIS +# endif +#elif RT_OPSYS == RT_OPSYS_UEFI +# ifndef RT_OS_UEFI +# define RT_OS_UEFI +# endif +#elif RT_OPSYS == RT_OPSYS_WINDOWS +# ifndef RT_OS_WINDOWS +# define RT_OS_WINDOWS +# endif +#else +# error "Bad RT_OPSYS value." +#endif + + +/** + * Checks whether the given OpSys uses DOS-style paths or not. + * + * By DOS-style paths we include drive lettering and UNC paths. + * + * @returns true / false + * @param a_OpSys The RT_OPSYS_XXX value to check, will be reference + * multiple times. + */ +#define RT_OPSYS_USES_DOS_PATHS(a_OpSys) \ + ( (a_OpSys) == RT_OPSYS_WINDOWS \ + || (a_OpSys) == RT_OPSYS_OS2 \ + || (a_OpSys) == RT_OPSYS_DOS ) + + + +/** @def CTXTYPE + * Declare a type differently in GC, R3 and R0. + * + * @param GCType The GC type. + * @param R3Type The R3 type. + * @param R0Type The R0 type. + * @remark For pointers used only in one context use RCPTRTYPE(), R3R0PTRTYPE(), R3PTRTYPE() or R0PTRTYPE(). + */ +#ifdef IN_RC +# define CTXTYPE(GCType, R3Type, R0Type) GCType +#elif defined(IN_RING3) +# define CTXTYPE(GCType, R3Type, R0Type) R3Type +#else +# define CTXTYPE(GCType, R3Type, R0Type) R0Type +#endif + +/** @def RCPTRTYPE + * Declare a pointer which is used in the raw mode context but appears in structure(s) used by + * both HC and RC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param RCType The RC type. + */ +#define RCPTRTYPE(RCType) CTXTYPE(RCType, RTRCPTR, RTRCPTR) + +/** @def R3R0PTRTYPE + * Declare a pointer which is used in HC, is explicitly valid in ring 3 and 0, + * but appears in structure(s) used by both HC and GC. The main purpose is to + * make sure structures have the same size when built for different architectures. + * + * @param R3R0Type The R3R0 type. + * @remarks This used to be called HCPTRTYPE. + */ +#define R3R0PTRTYPE(R3R0Type) CTXTYPE(RTHCPTR, R3R0Type, R3R0Type) + +/** @def R3PTRTYPE + * Declare a pointer which is used in R3 but appears in structure(s) used by + * both HC and GC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param R3Type The R3 type. + */ +#define R3PTRTYPE(R3Type) CTXTYPE(RTHCUINTPTR, R3Type, RTHCUINTPTR) + +/** @def R0PTRTYPE + * Declare a pointer which is used in R0 but appears in structure(s) used by + * both HC and GC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param R0Type The R0 type. + */ +#define R0PTRTYPE(R0Type) CTXTYPE(RTHCUINTPTR, RTHCUINTPTR, R0Type) + +/** @def CTXSUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +/** @def OTHERCTXSUFF + * Adds the suffix of the other context to the passed in + * identifier name. The suffix is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +#ifdef IN_RC +# define CTXSUFF(var) var##GC +# define OTHERCTXSUFF(var) var##HC +#else +# define CTXSUFF(var) var##HC +# define OTHERCTXSUFF(var) var##GC +#endif + +/** @def CTXALLSUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is R3, R0 or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +#ifdef IN_RC +# define CTXALLSUFF(var) var##GC +#elif defined(IN_RING0) +# define CTXALLSUFF(var) var##R0 +#else +# define CTXALLSUFF(var) var##R3 +#endif + +/** @def CTX_SUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is R3, R0 or RC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * + * @remark This will replace CTXALLSUFF and CTXSUFF before long. + */ +#ifdef IN_RC +# define CTX_SUFF(var) var##RC +#elif defined(IN_RING0) +# define CTX_SUFF(var) var##R0 +#else +# define CTX_SUFF(var) var##R3 +#endif + +/** @def CTX_SUFF_Z + * Adds the suffix of the current context to the passed in + * identifier name, combining RC and R0 into RZ. + * The suffix thus is R3 or RZ. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * + * @remark This will replace CTXALLSUFF and CTXSUFF before long. + */ +#ifdef IN_RING3 +# define CTX_SUFF_Z(var) var##R3 +#else +# define CTX_SUFF_Z(var) var##RZ +#endif + + +/** @def CTXMID + * Adds the current context as a middle name of an identifier name + * The middle name is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +/** @def OTHERCTXMID + * Adds the other context as a middle name of an identifier name + * The middle name is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + * @deprecated use CTX_MID or CTX_MID_Z + */ +#ifdef IN_RC +# define CTXMID(first, last) first##GC##last +# define OTHERCTXMID(first, last) first##HC##last +#else +# define CTXMID(first, last) first##HC##last +# define OTHERCTXMID(first, last) first##GC##last +#endif + +/** @def CTXALLMID + * Adds the current context as a middle name of an identifier name. + * The middle name is R3, R0 or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + * @deprecated use CTX_MID or CTX_MID_Z + */ +#ifdef IN_RC +# define CTXALLMID(first, last) first##GC##last +#elif defined(IN_RING0) +# define CTXALLMID(first, last) first##R0##last +#else +# define CTXALLMID(first, last) first##R3##last +#endif + +/** @def CTX_MID + * Adds the current context as a middle name of an identifier name. + * The middle name is R3, R0 or RC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +#ifdef IN_RC +# define CTX_MID(first, last) first##RC##last +#elif defined(IN_RING0) +# define CTX_MID(first, last) first##R0##last +#else +# define CTX_MID(first, last) first##R3##last +#endif + +/** @def CTX_MID_Z + * Adds the current context as a middle name of an identifier name, combining RC + * and R0 into RZ. + * The middle name thus is either R3 or RZ. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +#ifdef IN_RING3 +# define CTX_MID_Z(first, last) first##R3##last +#else +# define CTX_MID_Z(first, last) first##RZ##last +#endif + + +/** @def R3STRING + * A macro which in GC and R0 will return a dummy string while in R3 it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or GC. The intention is to avoid the \#ifdef IN_RING3 mess. + * + * @param pR3String The R3 string. Only referenced in R3. + * @see R0STRING and GCSTRING + */ +#ifdef IN_RING3 +# define R3STRING(pR3String) (pR3String) +#else +# define R3STRING(pR3String) ("") +#endif + +/** @def R0STRING + * A macro which in GC and R3 will return a dummy string while in R0 it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or GC. The intention is to avoid the \#ifdef IN_RING0 mess. + * + * @param pR0String The R0 string. Only referenced in R0. + * @see R3STRING and GCSTRING + */ +#ifdef IN_RING0 +# define R0STRING(pR0String) (pR0String) +#else +# define R0STRING(pR0String) ("") +#endif + +/** @def RCSTRING + * A macro which in R3 and R0 will return a dummy string while in RC it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or RC. The intention is to avoid the \#ifdef IN_RC mess. + * + * @param pRCString The RC string. Only referenced in RC. + * @see R3STRING, R0STRING + */ +#ifdef IN_RC +# define RCSTRING(pRCString) (pRCString) +#else +# define RCSTRING(pRCString) ("") +#endif + + +/** @def RT_NOTHING + * A macro that expands to nothing. + * This is primarily intended as a dummy argument for macros to avoid the + * undefined behavior passing empty arguments to an macro (ISO C90 and C++98, + * gcc v4.4 warns about it). + */ +#define RT_NOTHING + +/** @def RT_GCC_EXTENSION + * Macro for shutting up GCC warnings about using language extensions. */ +#ifdef __GNUC__ +# define RT_GCC_EXTENSION __extension__ +#else +# define RT_GCC_EXTENSION +#endif + +/** @def RT_COMPILER_GROKS_64BIT_BITFIELDS + * Macro that is defined if the compiler understands 64-bit bitfields. */ +#if !defined(RT_OS_OS2) || (!defined(__IBMC__) && !defined(__IBMCPP__)) +# define RT_COMPILER_GROKS_64BIT_BITFIELDS +#endif + +/** @def RT_COMPILER_WITH_80BIT_LONG_DOUBLE + * Macro that is defined if the compiler implements long double as the + * IEEE extended precision floating. */ +#if (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) && !defined(RT_OS_WINDOWS) +# define RT_COMPILER_WITH_80BIT_LONG_DOUBLE +#endif + + +/** @def RT_EXCEPTIONS_ENABLED + * Defined when C++ exceptions are enabled. + */ +#if !defined(RT_EXCEPTIONS_ENABLED) \ + && defined(__cplusplus) \ + && ( (defined(_MSC_VER) && defined(_CPPUNWIND)) \ + || (defined(__GNUC__) && defined(__EXCEPTIONS))) +# define RT_EXCEPTIONS_ENABLED +#endif + +/** @def RT_NO_THROW_PROTO + * How to express that a function doesn't throw C++ exceptions + * and the compiler can thus save itself the bother of trying + * to catch any of them. Put this between the closing parenthesis + * and the semicolon in function prototypes (and implementation if C++). + * + * @remarks May not work on C++ methods, mainly intented for C-style APIs. + * + * @remarks The use of the nothrow attribute with GCC is because old compilers + * (4.1.1, 32-bit) leaking the nothrow into global space or something + * when used with RTDECL or similar. Using this forces use to have two + * macros, as the nothrow attribute is not for the function definition. + */ +#ifdef RT_EXCEPTIONS_ENABLED +# ifdef __GNUC__ +# define RT_NO_THROW_PROTO __attribute__((__nothrow__)) +# else +# define RT_NO_THROW_PROTO throw() +# endif +#else +# define RT_NO_THROW_PROTO +#endif + +/** @def RT_NO_THROW_DEF + * The counter part to RT_NO_THROW_PROTO that is added to the function + * definition. + */ +#if defined(RT_EXCEPTIONS_ENABLED) && !defined(__GNUC__) +# define RT_NO_THROW_DEF RT_NO_THROW_PROTO +#else +# define RT_NO_THROW_DEF +#endif + +/** @def RT_THROW + * How to express that a method or function throws a type of exceptions. Some + * compilers does not want this kind of information and will warning about it. + * + * @param type The type exception. + * + * @remarks If the actual throwing is done from the header, enclose it by + * \#ifdef RT_EXCEPTIONS_ENABLED ... \#else ... \#endif so the header + * compiles cleanly without exceptions enabled. + * + * Do NOT use this for the actual throwing of exceptions! + */ +#ifdef RT_EXCEPTIONS_ENABLED +# ifdef _MSC_VER +# if _MSC_VER >= 1310 +# define RT_THROW(type) +# else +# define RT_THROW(type) throw(type) +# endif +# else +# define RT_THROW(type) throw(type) +# endif +#else +# define RT_THROW(type) +#endif + +/** @def RT_IPRT_FORMAT_ATTR + * Identifies a function taking an IPRT format string. + * @param a_iFmt The index (1-based) of the format string argument. + * @param a_iArgs The index (1-based) of the first format argument, use 0 for + * va_list. + */ +#if defined(__GNUC__) && defined(WITH_IPRT_FORMAT_ATTRIBUTE) +# define RT_IPRT_FORMAT_ATTR(a_iFmt, a_iArgs) __attribute__((__iprt_format__(a_iFmt, a_iArgs))) +#else +# define RT_IPRT_FORMAT_ATTR(a_iFmt, a_iArgs) +#endif + +/** @def RT_IPRT_FORMAT_ATTR_MAYBE_NULL + * Identifies a function taking an IPRT format string, NULL is allowed. + * @param a_iFmt The index (1-based) of the format string argument. + * @param a_iArgs The index (1-based) of the first format argument, use 0 for + * va_list. + */ +#if defined(__GNUC__) && defined(WITH_IPRT_FORMAT_ATTRIBUTE) +# define RT_IPRT_FORMAT_ATTR_MAYBE_NULL(a_iFmt, a_iArgs) __attribute__((__iprt_format_maybe_null__(a_iFmt, a_iArgs))) +#else +# define RT_IPRT_FORMAT_ATTR_MAYBE_NULL(a_iFmt, a_iArgs) +#endif + + +/** @def RT_GCC_SUPPORTS_VISIBILITY_HIDDEN + * Indicates that the "hidden" visibility attribute can be used (GCC) */ +#if defined(__GNUC__) +# if __GNUC__ >= 4 && !defined(RT_OS_OS2) && !defined(RT_OS_WINDOWS) +# define RT_GCC_SUPPORTS_VISIBILITY_HIDDEN +# endif +#endif + +/** @def RTCALL + * The standard calling convention for the Runtime interfaces. + * + * @remarks The regparm(0) in the X86/GNUC variant deals with -mregparm=x use in + * the linux kernel and potentially elsewhere (3rd party). + */ +#ifdef _MSC_VER +# define RTCALL __cdecl +#elif defined(RT_OS_OS2) +# define RTCALL __cdecl +#elif defined(__GNUC__) && defined(RT_ARCH_X86) +# define RTCALL __attribute__((cdecl,regparm(0))) +#else +# define RTCALL +#endif + +/** @def DECLEXPORT + * How to declare an exported function. + * @param type The return type of the function declaration. + */ +#if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLEXPORT(type) __declspec(dllexport) type +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLEXPORT(type) __attribute__((visibility("default"))) type +#else +# define DECLEXPORT(type) type +#endif + +/** @def DECLIMPORT + * How to declare an imported function. + * @param type The return type of the function declaration. + */ +#if defined(_MSC_VER) || (defined(RT_OS_OS2) && !defined(__IBMC__) && !defined(__IBMCPP__)) +# define DECLIMPORT(type) __declspec(dllimport) type +#else +# define DECLIMPORT(type) type +#endif + +/** @def DECLHIDDEN + * How to declare a non-exported function or variable. + * @param type The return type of the function or the data type of the variable. + */ +#if !defined(RT_GCC_SUPPORTS_VISIBILITY_HIDDEN) || defined(RT_NO_VISIBILITY_HIDDEN) +# define DECLHIDDEN(type) type +#else +# define DECLHIDDEN(type) __attribute__((visibility("hidden"))) type +#endif + +/** @def DECL_HIDDEN_CONST + * Workaround for g++ warnings when applying the hidden attribute to a const + * definition. Use DECLHIDDEN for the declaration. + * @param a_Type The return type of the function or the data type of + * the variable. + */ +#if defined(__cplusplus) && defined(__GNUC__) +# define DECL_HIDDEN_CONST(a_Type) a_Type +#else +# define DECL_HIDDEN_CONST(a_Type) DECLHIDDEN(a_Type) +#endif + +/** @def DECL_INVALID + * How to declare a function not available for linking in the current context. + * The purpose is to create compile or like time errors when used. This isn't + * possible on all platforms. + * @param type The return type of the function. + */ +#if defined(_MSC_VER) +# define DECL_INVALID(type) __declspec(dllimport) type __stdcall +#elif defined(__GNUC__) && defined(__cplusplus) +# define DECL_INVALID(type) extern "C++" type +#else +# define DECL_INVALID(type) type +#endif + +/** @def DECLASM + * How to declare an internal assembly function. + * @param type The return type of the function declaration. + */ +#ifdef __cplusplus +# define DECLASM(type) extern "C" type RTCALL +#else +# define DECLASM(type) type RTCALL +#endif + +/** @def DECLASMTYPE + * How to declare an internal assembly function type. + * @param type The return type of the function. + */ +#define DECLASMTYPE(type) type RTCALL + +/** @def DECLNORETURN + * How to declare a function which does not return. + * @note: This macro can be combined with other macros, for example + * @code + * EMR3DECL(DECLNORETURN(void)) foo(void); + * @endcode + */ +#ifdef _MSC_VER +# define DECLNORETURN(type) __declspec(noreturn) type +#elif defined(__GNUC__) +# define DECLNORETURN(type) __attribute__((noreturn)) type +#else +# define DECLNORETURN(type) type +#endif + +/** @def DECLWEAK + * How to declare a variable which is not necessarily resolved at + * runtime. + * @note: This macro can be combined with other macros, for example + * @code + * EMR3DECL(DECLWEAK(int)) foo; + * @endcode + */ +#if defined(__GNUC__) +# define DECLWEAK(type) type __attribute__((weak)) +#else +# define DECLWEAK(type) type +#endif + +/** @def DECLCALLBACK + * How to declare an call back function type. + * @param type The return type of the function declaration. + */ +#define DECLCALLBACK(type) type RTCALL + +/** @def DECLCALLBACKPTR + * How to declare an call back function pointer. + * @param type The return type of the function declaration. + * @param name The name of the variable member. + */ +#if defined(__IBMC__) || defined(__IBMCPP__) +# define DECLCALLBACKPTR(type, name) type (* RTCALL name) +#else +# define DECLCALLBACKPTR(type, name) type (RTCALL * name) +#endif + +/** @def DECLCALLBACKMEMBER + * How to declare an call back function pointer member. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + */ +#if defined(__IBMC__) || defined(__IBMCPP__) +# define DECLCALLBACKMEMBER(type, name) type (* RTCALL name) +#else +# define DECLCALLBACKMEMBER(type, name) type (RTCALL * name) +#endif + +/** @def DECLR3CALLBACKMEMBER + * How to declare an call back function pointer member - R3 Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RING3 +# define DECLR3CALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLR3CALLBACKMEMBER(type, name, args) RTR3PTR name +#endif + +/** @def DECLRCCALLBACKMEMBER + * How to declare an call back function pointer member - RC Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RC +# define DECLRCCALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLRCCALLBACKMEMBER(type, name, args) RTRCPTR name +#endif + +/** @def DECLR0CALLBACKMEMBER + * How to declare an call back function pointer member - R0 Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RING0 +# define DECLR0CALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLR0CALLBACKMEMBER(type, name, args) RTR0PTR name +#endif + +/** @def DECLINLINE + * How to declare a function as inline. + * @param type The return type of the function declaration. + * @remarks Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECLINLINE(type) static __inline__ type +#elif defined(__cplusplus) +# define DECLINLINE(type) inline type +#elif defined(_MSC_VER) +# define DECLINLINE(type) _inline type +#elif defined(__IBMC__) +# define DECLINLINE(type) _Inline type +#else +# define DECLINLINE(type) inline type +#endif + + +/** @def DECL_FORCE_INLINE + * How to declare a function as inline and try convince the compiler to always + * inline it regardless of optimization switches. + * @param type The return type of the function declaration. + * @remarks Use sparsely and with care. Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECL_FORCE_INLINE(type) __attribute__((__always_inline__)) DECLINLINE(type) +#elif defined(_MSC_VER) +# define DECL_FORCE_INLINE(type) __forceinline type +#else +# define DECL_FORCE_INLINE(type) DECLINLINE(type) +#endif + + +/** @def DECL_NO_INLINE + * How to declare a function telling the compiler not to inline it. + * @param scope The function scope, static or RT_NOTHING. + * @param type The return type of the function declaration. + * @remarks Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECL_NO_INLINE(scope,type) __attribute__((__noinline__)) scope type +#elif defined(_MSC_VER) +# define DECL_NO_INLINE(scope,type) __declspec(noinline) scope type +#else +# define DECL_NO_INLINE(scope,type) scope type +#endif + + +/** @def IN_RT_STATIC + * Used to indicate whether we're linking against a static IPRT + * or not. The IPRT symbols will be declared as hidden (if + * supported). Note that this define has no effect without setting + * IN_RT_R0, IN_RT_R3 or IN_RT_RC indicators are set first. + */ + +/** @def IN_RT_R0 + * Used to indicate whether we're inside the same link module as + * the HC Ring-0 Runtime Library. + */ +/** @def RTR0DECL(type) + * Runtime Library HC Ring-0 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_R0 +# ifdef IN_RT_STATIC +# define RTR0DECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTR0DECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTR0DECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def IN_RT_R3 + * Used to indicate whether we're inside the same link module as + * the HC Ring-3 Runtime Library. + */ +/** @def RTR3DECL(type) + * Runtime Library HC Ring-3 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_R3 +# ifdef IN_RT_STATIC +# define RTR3DECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTR3DECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTR3DECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def IN_RT_RC + * Used to indicate whether we're inside the same link module as the raw-mode + * context (RC) runtime library. + */ +/** @def RTRCDECL(type) + * Runtime Library raw-mode context export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_RC +# ifdef IN_RT_STATIC +# define RTRCDECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTRCDECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTRCDECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def RTDECL(type) + * Runtime Library export or import declaration. + * Functions declared using this macro exists in all contexts. + * @param type The return type of the function declaration. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RTDECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTDECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTDECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def RTDATADECL(type) + * Runtime Library export or import declaration. + * Data declared using this macro exists in all contexts. + * @param type The data type. + */ +/** @def RT_DECL_DATA_CONST(type) + * Definition of a const variable. See DECL_HIDDEN_CONST. + * @param type The const data type. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RTDATADECL(type) DECLHIDDEN(type) +# define RT_DECL_DATA_CONST(type) DECL_HIDDEN_CONST(type) +# else +# define RTDATADECL(type) DECLEXPORT(type) +# if defined(__cplusplus) && defined(__GNUC__) +# define RT_DECL_DATA_CONST(type) type +# else +# define RT_DECL_DATA_CONST(type) DECLEXPORT(type) +# endif +# endif +#else +# define RTDATADECL(type) DECLIMPORT(type) +# define RT_DECL_DATA_CONST(type) DECLIMPORT(type) +#endif + +/** @def RT_DECL_CLASS + * Declares an class living in the runtime. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RT_DECL_CLASS +# else +# define RT_DECL_CLASS DECLEXPORT_CLASS +# endif +#else +# define RT_DECL_CLASS DECLIMPORT_CLASS +#endif + + +/** @def RT_NOCRT + * Symbol name wrapper for the No-CRT bits. + * + * In order to coexist in the same process as other CRTs, we need to + * decorate the symbols such that they don't conflict the ones in the + * other CRTs. The result of such conflicts / duplicate symbols can + * confuse the dynamic loader on Unix like systems. + * + * Define RT_WITHOUT_NOCRT_WRAPPERS to drop the wrapping. + * Define RT_WITHOUT_NOCRT_WRAPPER_ALIASES to drop the aliases to the + * wrapped names. + */ +/** @def RT_NOCRT_STR + * Same as RT_NOCRT only it'll return a double quoted string of the result. + */ +#ifndef RT_WITHOUT_NOCRT_WRAPPERS +# define RT_NOCRT(name) nocrt_ ## name +# define RT_NOCRT_STR(name) "nocrt_" # name +#else +# define RT_NOCRT(name) name +# define RT_NOCRT_STR(name) #name +#endif + + + +/** @def RT_LIKELY + * Give the compiler a hint that an expression is very likely to hold true. + * + * Some compilers support explicit branch prediction so that the CPU backend + * can hint the processor and also so that code blocks can be reordered such + * that the predicted path sees a more linear flow, thus improving cache + * behaviour, etc. + * + * IPRT provides the macros RT_LIKELY() and RT_UNLIKELY() as a way to utilize + * this compiler feature when present. + * + * A few notes about the usage: + * + * - Generally, order your code use RT_LIKELY() instead of RT_UNLIKELY(). + * + * - Generally, use RT_UNLIKELY() with error condition checks (unless you + * have some _strong_ reason to do otherwise, in which case document it), + * and/or RT_LIKELY() with success condition checks, assuming you want + * to optimize for the success path. + * + * - Other than that, if you don't know the likelihood of a test succeeding + * from empirical or other 'hard' evidence, don't make predictions unless + * you happen to be a Dirk Gently character. + * + * - These macros are meant to be used in places that get executed a lot. It + * is wasteful to make predictions in code that is executed rarely (e.g. + * at subsystem initialization time) as the basic block reordering that this + * affects can often generate larger code. + * + * - Note that RT_SUCCESS() and RT_FAILURE() already makes use of RT_LIKELY() + * and RT_UNLIKELY(). Should you wish for prediction free status checks, + * use the RT_SUCCESS_NP() and RT_FAILURE_NP() macros instead. + * + * + * @returns the boolean result of the expression. + * @param expr The expression that's very likely to be true. + * @see RT_UNLIKELY + */ +/** @def RT_UNLIKELY + * Give the compiler a hint that an expression is highly unlikely to hold true. + * + * See the usage instructions give in the RT_LIKELY() docs. + * + * @returns the boolean result of the expression. + * @param expr The expression that's very unlikely to be true. + * @see RT_LIKELY + * + * @deprecated Please use RT_LIKELY() instead wherever possible! That gives us + * a better chance of the windows compilers to generate favorable code + * too. The belief is that the compiler will by default assume the + * if-case is more likely than the else-case. + */ +#if defined(__GNUC__) +# if __GNUC__ >= 3 && !defined(FORTIFY_RUNNING) +# define RT_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define RT_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +# else +# define RT_LIKELY(expr) (expr) +# define RT_UNLIKELY(expr) (expr) +# endif +#else +# define RT_LIKELY(expr) (expr) +# define RT_UNLIKELY(expr) (expr) +#endif + + +/** @def RT_STR + * Returns the argument as a string constant. + * @param str Argument to stringify. */ +#define RT_STR(str) #str +/** @def RT_XSTR + * Returns the expanded argument as a string. + * @param str Argument to expand and stringify. */ +#define RT_XSTR(str) RT_STR(str) + +/** @def RT_LSTR_2 + * Helper for RT_WSTR that gets the expanded @a str. + * @param str String litteral to prefix with 'L'. */ +#define RT_LSTR_2(str) L##str +/** @def RT_LSTR + * Returns the expanded argument with a L string prefix. + * + * Intended for converting ASCII string \#defines into wide char string + * litterals on Windows. + * + * @param str String litteral to . */ +#define RT_LSTR(str) RT_LSTR_2(str) + +/** @def RT_CONCAT + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The first part. + * @param b The second part. + */ +#define RT_CONCAT(a,b) RT_CONCAT_HLP(a,b) +/** RT_CONCAT helper, don't use. */ +#define RT_CONCAT_HLP(a,b) a##b + +/** @def RT_CONCAT3 + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The 1st part. + * @param b The 2nd part. + * @param c The 3rd part. + */ +#define RT_CONCAT3(a,b,c) RT_CONCAT3_HLP(a,b,c) +/** RT_CONCAT3 helper, don't use. */ +#define RT_CONCAT3_HLP(a,b,c) a##b##c + +/** @def RT_CONCAT4 + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The 1st part. + * @param b The 2nd part. + * @param c The 3rd part. + * @param d The 4th part. + */ +#define RT_CONCAT4(a,b,c,d) RT_CONCAT4_HLP(a,b,c,d) +/** RT_CONCAT4 helper, don't use. */ +#define RT_CONCAT4_HLP(a,b,c,d) a##b##c##d + +/** + * String constant tuple - string constant, strlen(string constant). + * + * @param a_szConst String constant. + * @sa RTSTRTUPLE + */ +#define RT_STR_TUPLE(a_szConst) a_szConst, (sizeof(a_szConst) - 1) + + +/** + * Macro for using in switch statements that turns constants into strings. + * + * @param a_Const The constant (not string). + */ +#define RT_CASE_RET_STR(a_Const) case a_Const: return #a_Const + + +/** @def RT_BIT + * Convert a bit number into an integer bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT(bit) ( 1U << (bit) ) + +/** @def RT_BIT_32 + * Convert a bit number into a 32-bit bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT_32(bit) ( UINT32_C(1) << (bit) ) + +/** @def RT_BIT_64 + * Convert a bit number into a 64-bit bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT_64(bit) ( UINT64_C(1) << (bit) ) + +/** @def RT_ALIGN + * Align macro. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * + * @remark Be extremely careful when using this macro with type which sizeof != sizeof int. + * When possible use any of the other RT_ALIGN_* macros. And when that's not + * possible, make 101% sure that uAlignment is specified with a right sized type. + * + * Specifying an unsigned 32-bit alignment constant with a 64-bit value will give + * you a 32-bit return value! + * + * In short: Don't use this macro. Use RT_ALIGN_T() instead. + */ +#define RT_ALIGN(u, uAlignment) ( ((u) + ((uAlignment) - 1)) & ~((uAlignment) - 1) ) + +/** @def RT_ALIGN_T + * Align macro. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param type Integer type to use while aligning. + * @remark This macro is the preferred alignment macro, it doesn't have any of the pitfalls RT_ALIGN has. + */ +#define RT_ALIGN_T(u, uAlignment, type) ( ((type)(u) + ((uAlignment) - 1)) & ~(type)((uAlignment) - 1) ) + +/** @def RT_ALIGN_32 + * Align macro for a 32-bit value. + * @param u32 Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_32(u32, uAlignment) RT_ALIGN_T(u32, uAlignment, uint32_t) + +/** @def RT_ALIGN_64 + * Align macro for a 64-bit value. + * @param u64 Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_64(u64, uAlignment) RT_ALIGN_T(u64, uAlignment, uint64_t) + +/** @def RT_ALIGN_Z + * Align macro for size_t. + * @param cb Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_Z(cb, uAlignment) RT_ALIGN_T(cb, uAlignment, size_t) + +/** @def RT_ALIGN_P + * Align macro for pointers. + * @param pv Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_P(pv, uAlignment) RT_ALIGN_PT(pv, uAlignment, void *) + +/** @def RT_ALIGN_PT + * Align macro for pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, uintptr_t) ) + +/** @def RT_ALIGN_R3PT + * Align macro for ring-3 pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_R3PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTR3UINTPTR) ) + +/** @def RT_ALIGN_R0PT + * Align macro for ring-0 pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_R0PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTR0UINTPTR) ) + +/** @def RT_ALIGN_GCPT + * Align macro for GC pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_GCPT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTGCUINTPTR) ) + + +/** @def RT_OFFSETOF + * Our own special offsetof() variant, returns a signed result. + * + * This differs from the usual offsetof() in that it's not relying on builtin + * compiler stuff and thus can use variables in arrays the structure may + * contain. This is useful to determine the sizes of structures ending + * with a variable length field. For gcc >= 4.4 see @bugref{7775}. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + */ +#if defined(__GNUC__) && defined(__cplusplus) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) +# define RT_OFFSETOF(type, member) ( (int)(uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 ) +#else +# define RT_OFFSETOF(type, member) ( (int)(uintptr_t)&( ((type *)(void *)0)->member) ) +#endif + +/** @def RT_UOFFSETOF + * Our own special offsetof() variant, returns an unsigned result. + * + * This differs from the usual offsetof() in that it's not relying on builtin + * compiler stuff and thus can use variables in arrays the structure may + * contain. This is useful to determine the sizes of structures ending + * with a variable length field. For gcc >= 4.4 see @bugref{7775}. + * + * @returns offset into the structure of the specified member. unsigned. + * @param type Structure type. + * @param member Member. + */ +#if defined(__GNUC__) && defined(__cplusplus) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) +# define RT_UOFFSETOF(type, member) ( (uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 ) +#else +# define RT_UOFFSETOF(type, member) ( (uintptr_t)&( ((type *)(void *)0)->member) ) +#endif + +/** @def RT_OFFSETOF_ADD + * RT_OFFSETOF with an addend. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + * @param addend The addend to add to the offset. + */ +#define RT_OFFSETOF_ADD(type, member, addend) ( (int)RT_UOFFSETOF_ADD(type, member, addend) ) + +/** @def RT_UOFFSETOF_ADD + * RT_UOFFSETOF with an addend. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + * @param addend The addend to add to the offset. + */ +#define RT_UOFFSETOF_ADD(type, member, addend) ( (uintptr_t)&( ((type *)(void *)(uintptr_t)(addend))->member) ) + +/** @def RT_SIZEOFMEMB + * Get the size of a structure member. + * + * @returns size of the structure member. + * @param type Structure type. + * @param member Member. + */ +#define RT_SIZEOFMEMB(type, member) ( sizeof(((type *)(void *)0)->member) ) + +/** @def RT_FROM_MEMBER + * Convert a pointer to a structure member into a pointer to the structure. + * + * @returns pointer to the structure. + * @param pMem Pointer to the member. + * @param Type Structure type. + * @param Member Member name. + */ +#define RT_FROM_MEMBER(pMem, Type, Member) ( (Type *) ((uint8_t *)(void *)(pMem) - RT_UOFFSETOF(Type, Member)) ) + +/** @def RT_FROM_CPP_MEMBER + * Same as RT_FROM_MEMBER except it avoids the annoying g++ warnings about + * invalid access to non-static data member of NULL object. + * + * @returns pointer to the structure. + * @param pMem Pointer to the member. + * @param Type Structure type. + * @param Member Member name. + * + * @remarks Using the __builtin_offsetof does not shut up the compiler. + */ +#if defined(__GNUC__) && defined(__cplusplus) +# define RT_FROM_CPP_MEMBER(pMem, Type, Member) \ + ( (Type *) ((uintptr_t)(pMem) - (uintptr_t)&((Type *)0x1000)->Member + 0x1000U) ) +#else +# define RT_FROM_CPP_MEMBER(pMem, Type, Member) RT_FROM_MEMBER(pMem, Type, Member) +#endif + +/** @def RT_ELEMENTS + * Calculates the number of elements in a statically sized array. + * @returns Element count. + * @param aArray Array in question. + */ +#define RT_ELEMENTS(aArray) ( sizeof(aArray) / sizeof((aArray)[0]) ) + +/** + * Checks if the value is a power of two. + * + * @returns true if power of two, false if not. + * @param uVal The value to test. + * @remarks 0 is a power of two. + * @see VERR_NOT_POWER_OF_TWO + */ +#define RT_IS_POWER_OF_TWO(uVal) ( ((uVal) & ((uVal) - 1)) == 0) + +#ifdef RT_OS_OS2 +/* Undefine RT_MAX since there is an unfortunate clash with the max + resource type define in os2.h. */ +# undef RT_MAX +#endif + +/** @def RT_MAX + * Finds the maximum value. + * @returns The higher of the two. + * @param Value1 Value 1 + * @param Value2 Value 2 + */ +#define RT_MAX(Value1, Value2) ( (Value1) >= (Value2) ? (Value1) : (Value2) ) + +/** @def RT_MIN + * Finds the minimum value. + * @returns The lower of the two. + * @param Value1 Value 1 + * @param Value2 Value 2 + */ +#define RT_MIN(Value1, Value2) ( (Value1) <= (Value2) ? (Value1) : (Value2) ) + +/** @def RT_CLAMP + * Clamps the value to minimum and maximum values. + * @returns The clamped value. + * @param Value The value to check. + * @param Min Minimum value. + * @param Max Maximum value. + */ +#define RT_CLAMP(Value, Min, Max) ( (Value) > (Max) ? (Max) : (Value) < (Min) ? (Min) : (Value) ) + +/** @def RT_ABS + * Get the absolute (non-negative) value. + * @returns The absolute value of Value. + * @param Value The value. + */ +#define RT_ABS(Value) ( (Value) >= 0 ? (Value) : -(Value) ) + +/** @def RT_BOOL + * Turn non-zero/zero into true/false + * @returns The resulting boolean value. + * @param Value The value. + */ +#define RT_BOOL(Value) ( !!(Value) ) + +/** @def RT_LO_U8 + * Gets the low uint8_t of a uint16_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U8(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint16_t)); (uint8_t)(a); }) +#else +# define RT_LO_U8(a) ( (uint8_t)(a) ) +#endif +/** @def RT_HI_U8 + * Gets the high uint8_t of a uint16_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U8(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint16_t)); (uint8_t)((a) >> 8); }) +#else +# define RT_HI_U8(a) ( (uint8_t)((a) >> 8) ) +#endif + +/** @def RT_LO_U16 + * Gets the low uint16_t of a uint32_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U16(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint32_t)); (uint16_t)(a); }) +#else +# define RT_LO_U16(a) ( (uint16_t)(a) ) +#endif +/** @def RT_HI_U16 + * Gets the high uint16_t of a uint32_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U16(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint32_t)); (uint16_t)((a) >> 16); }) +#else +# define RT_HI_U16(a) ( (uint16_t)((a) >> 16) ) +#endif + +/** @def RT_LO_U32 + * Gets the low uint32_t of a uint64_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U32(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint64_t)); (uint32_t)(a); }) +#else +# define RT_LO_U32(a) ( (uint32_t)(a) ) +#endif +/** @def RT_HI_U32 + * Gets the high uint32_t of a uint64_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U32(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint64_t)); (uint32_t)((a) >> 32); }) +#else +# define RT_HI_U32(a) ( (uint32_t)((a) >> 32) ) +#endif + +/** @def RT_BYTE1 + * Gets the first byte of something. */ +#define RT_BYTE1(a) ( (a) & 0xff ) +/** @def RT_BYTE2 + * Gets the second byte of something. */ +#define RT_BYTE2(a) ( ((a) >> 8) & 0xff ) +/** @def RT_BYTE3 + * Gets the second byte of something. */ +#define RT_BYTE3(a) ( ((a) >> 16) & 0xff ) +/** @def RT_BYTE4 + * Gets the fourth byte of something. */ +#define RT_BYTE4(a) ( ((a) >> 24) & 0xff ) +/** @def RT_BYTE5 + * Gets the fifth byte of something. */ +#define RT_BYTE5(a) ( ((a) >> 32) & 0xff ) +/** @def RT_BYTE6 + * Gets the sixth byte of something. */ +#define RT_BYTE6(a) ( ((a) >> 40) & 0xff ) +/** @def RT_BYTE7 + * Gets the seventh byte of something. */ +#define RT_BYTE7(a) ( ((a) >> 48) & 0xff ) +/** @def RT_BYTE8 + * Gets the eight byte of something. */ +#define RT_BYTE8(a) ( ((a) >> 56) & 0xff ) + + +/** @def RT_LODWORD + * Gets the low dword (=uint32_t) of something. + * @deprecated Use RT_LO_U32. */ +#define RT_LODWORD(a) ( (uint32_t)(a) ) +/** @def RT_HIDWORD + * Gets the high dword (=uint32_t) of a 64-bit of something. + * @deprecated Use RT_HI_U32. */ +#define RT_HIDWORD(a) ( (uint32_t)((a) >> 32) ) + +/** @def RT_LOWORD + * Gets the low word (=uint16_t) of something. + * @deprecated Use RT_LO_U16. */ +#define RT_LOWORD(a) ( (a) & 0xffff ) +/** @def RT_HIWORD + * Gets the high word (=uint16_t) of a 32-bit something. + * @deprecated Use RT_HI_U16. */ +#define RT_HIWORD(a) ( (a) >> 16 ) + +/** @def RT_LOBYTE + * Gets the low byte of something. + * @deprecated Use RT_LO_U8. */ +#define RT_LOBYTE(a) ( (a) & 0xff ) +/** @def RT_HIBYTE + * Gets the high byte of a 16-bit something. + * @deprecated Use RT_HI_U8. */ +#define RT_HIBYTE(a) ( (a) >> 8 ) + + +/** @def RT_MAKE_U64 + * Constructs a uint64_t value from two uint32_t values. + */ +#define RT_MAKE_U64(Lo, Hi) ( (uint64_t)((uint32_t)(Hi)) << 32 | (uint32_t)(Lo) ) + +/** @def RT_MAKE_U64_FROM_U16 + * Constructs a uint64_t value from four uint16_t values. + */ +#define RT_MAKE_U64_FROM_U16(w0, w1, w2, w3) \ + ((uint64_t)( (uint64_t)((uint16_t)(w3)) << 48 \ + | (uint64_t)((uint16_t)(w2)) << 32 \ + | (uint32_t)((uint16_t)(w1)) << 16 \ + | (uint16_t)(w0) )) + +/** @def RT_MAKE_U64_FROM_U8 + * Constructs a uint64_t value from eight uint8_t values. + */ +#define RT_MAKE_U64_FROM_U8(b0, b1, b2, b3, b4, b5, b6, b7) \ + ((uint64_t)( (uint64_t)((uint8_t)(b7)) << 56 \ + | (uint64_t)((uint8_t)(b6)) << 48 \ + | (uint64_t)((uint8_t)(b5)) << 40 \ + | (uint64_t)((uint8_t)(b4)) << 32 \ + | (uint32_t)((uint8_t)(b3)) << 24 \ + | (uint32_t)((uint8_t)(b2)) << 16 \ + | (uint16_t)((uint8_t)(b1)) << 8 \ + | (uint8_t)(b0) )) + +/** @def RT_MAKE_U32 + * Constructs a uint32_t value from two uint16_t values. + */ +#define RT_MAKE_U32(Lo, Hi) \ + ((uint32_t)( (uint32_t)((uint16_t)(Hi)) << 16 \ + | (uint16_t)(Lo) )) + +/** @def RT_MAKE_U32_FROM_U8 + * Constructs a uint32_t value from four uint8_t values. + */ +#define RT_MAKE_U32_FROM_U8(b0, b1, b2, b3) \ + ((uint32_t)( (uint32_t)((uint8_t)(b3)) << 24 \ + | (uint32_t)((uint8_t)(b2)) << 16 \ + | (uint16_t)((uint8_t)(b1)) << 8 \ + | (uint8_t)(b0) )) + +/** @def RT_MAKE_U16 + * Constructs a uint16_t value from two uint8_t values. + */ +#define RT_MAKE_U16(Lo, Hi) \ + ((uint16_t)( (uint16_t)((uint8_t)(Hi)) << 8 \ + | (uint8_t)(Lo) )) + + +/** @def RT_BSWAP_U64 + * Reverses the byte order of an uint64_t value. */ +#if 0 +# define RT_BSWAP_U64(u64) RT_BSWAP_U64_C(u64) +#elif defined(__GNUC__) +# define RT_BSWAP_U64(u64) (__builtin_constant_p((u64)) \ + ? RT_BSWAP_U64_C(u64) : ASMByteSwapU64(u64)) +#else +# define RT_BSWAP_U64(u64) ASMByteSwapU64(u64) +#endif + +/** @def RT_BSWAP_U32 + * Reverses the byte order of an uint32_t value. */ +#if 0 +# define RT_BSWAP_U32(u32) RT_BSWAP_U32_C(u32) +#elif defined(__GNUC__) +# define RT_BSWAP_U32(u32) (__builtin_constant_p((u32)) \ + ? RT_BSWAP_U32_C(u32) : ASMByteSwapU32(u32)) +#else +# define RT_BSWAP_U32(u32) ASMByteSwapU32(u32) +#endif + +/** @def RT_BSWAP_U16 + * Reverses the byte order of an uint16_t value. */ +#if 0 +# define RT_BSWAP_U16(u16) RT_BSWAP_U16_C(u16) +#elif defined(__GNUC__) +# define RT_BSWAP_U16(u16) (__builtin_constant_p((u16)) \ + ? RT_BSWAP_U16_C(u16) : ASMByteSwapU16(u16)) +#else +# define RT_BSWAP_U16(u16) ASMByteSwapU16(u16) +#endif + + +/** @def RT_BSWAP_U64_C + * Reverses the byte order of an uint64_t constant. */ +#define RT_BSWAP_U64_C(u64) RT_MAKE_U64(RT_BSWAP_U32_C((u64) >> 32), RT_BSWAP_U32_C((u64) & 0xffffffff)) + +/** @def RT_BSWAP_U32_C + * Reverses the byte order of an uint32_t constant. */ +#define RT_BSWAP_U32_C(u32) RT_MAKE_U32_FROM_U8(RT_BYTE4(u32), RT_BYTE3(u32), RT_BYTE2(u32), RT_BYTE1(u32)) + +/** @def RT_BSWAP_U16_C + * Reverses the byte order of an uint16_t constant. */ +#define RT_BSWAP_U16_C(u16) RT_MAKE_U16(RT_HIBYTE(u16), RT_LOBYTE(u16)) + + +/** @def RT_H2LE_U64 + * Converts an uint64_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U64(u64) RT_BSWAP_U64(u64) +#else +# define RT_H2LE_U64(u64) (u64) +#endif + +/** @def RT_H2LE_U64_C + * Converts an uint64_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U64_C(u64) RT_BSWAP_U64_C(u64) +#else +# define RT_H2LE_U64_C(u64) (u64) +#endif + +/** @def RT_H2LE_U32 + * Converts an uint32_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U32(u32) RT_BSWAP_U32(u32) +#else +# define RT_H2LE_U32(u32) (u32) +#endif + +/** @def RT_H2LE_U32_C + * Converts an uint32_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U32_C(u32) RT_BSWAP_U32_C(u32) +#else +# define RT_H2LE_U32_C(u32) (u32) +#endif + +/** @def RT_H2LE_U16 + * Converts an uint16_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U16(u16) RT_BSWAP_U16(u16) +#else +# define RT_H2LE_U16(u16) (u16) +#endif + +/** @def RT_H2LE_U16_C + * Converts an uint16_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U16_C(u16) RT_BSWAP_U16_C(u16) +#else +# define RT_H2LE_U16_C(u16) (u16) +#endif + + +/** @def RT_LE2H_U64 + * Converts an uint64_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U64(u64) RT_BSWAP_U64(u64) +#else +# define RT_LE2H_U64(u64) (u64) +#endif + +/** @def RT_LE2H_U64_C + * Converts an uint64_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U64_C(u64) RT_BSWAP_U64_C(u64) +#else +# define RT_LE2H_U64_C(u64) (u64) +#endif + +/** @def RT_LE2H_U32 + * Converts an uint32_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U32(u32) RT_BSWAP_U32(u32) +#else +# define RT_LE2H_U32(u32) (u32) +#endif + +/** @def RT_LE2H_U32_C + * Converts an uint32_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U32_C(u32) RT_BSWAP_U32_C(u32) +#else +# define RT_LE2H_U32_C(u32) (u32) +#endif + +/** @def RT_LE2H_U16 + * Converts an uint16_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U16(u16) RT_BSWAP_U16(u16) +#else +# define RT_LE2H_U16(u16) (u16) +#endif + +/** @def RT_LE2H_U16_C + * Converts an uint16_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U16_C(u16) RT_BSWAP_U16_C(u16) +#else +# define RT_LE2H_U16_C(u16) (u16) +#endif + + +/** @def RT_H2BE_U64 + * Converts an uint64_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U64(u64) (u64) +#else +# define RT_H2BE_U64(u64) RT_BSWAP_U64(u64) +#endif + +/** @def RT_H2BE_U64_C + * Converts an uint64_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U64_C(u64) (u64) +#else +# define RT_H2BE_U64_C(u64) RT_BSWAP_U64_C(u64) +#endif + +/** @def RT_H2BE_U32 + * Converts an uint32_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U32(u32) (u32) +#else +# define RT_H2BE_U32(u32) RT_BSWAP_U32(u32) +#endif + +/** @def RT_H2BE_U32_C + * Converts an uint32_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U32_C(u32) (u32) +#else +# define RT_H2BE_U32_C(u32) RT_BSWAP_U32_C(u32) +#endif + +/** @def RT_H2BE_U16 + * Converts an uint16_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U16(u16) (u16) +#else +# define RT_H2BE_U16(u16) RT_BSWAP_U16(u16) +#endif + +/** @def RT_H2BE_U16_C + * Converts an uint16_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U16_C(u16) (u16) +#else +# define RT_H2BE_U16_C(u16) RT_BSWAP_U16_C(u16) +#endif + +/** @def RT_BE2H_U64 + * Converts an uint64_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U64(u64) (u64) +#else +# define RT_BE2H_U64(u64) RT_BSWAP_U64(u64) +#endif + +/** @def RT_BE2H_U64 + * Converts an uint64_t constant from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U64_C(u64) (u64) +#else +# define RT_BE2H_U64_C(u64) RT_BSWAP_U64_C(u64) +#endif + +/** @def RT_BE2H_U32 + * Converts an uint32_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U32(u32) (u32) +#else +# define RT_BE2H_U32(u32) RT_BSWAP_U32(u32) +#endif + +/** @def RT_BE2H_U32_C + * Converts an uint32_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U32_C(u32) (u32) +#else +# define RT_BE2H_U32_C(u32) RT_BSWAP_U32_C(u32) +#endif + +/** @def RT_BE2H_U16 + * Converts an uint16_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U16(u16) (u16) +#else +# define RT_BE2H_U16(u16) RT_BSWAP_U16(u16) +#endif + +/** @def RT_BE2H_U16_C + * Converts an uint16_t constant from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U16_C(u16) (u16) +#else +# define RT_BE2H_U16_C(u16) RT_BSWAP_U16_C(u16) +#endif + + +/** @def RT_H2N_U64 + * Converts an uint64_t value from host to network byte order. */ +#define RT_H2N_U64(u64) RT_H2BE_U64(u64) + +/** @def RT_H2N_U64_C + * Converts an uint64_t constant from host to network byte order. */ +#define RT_H2N_U64_C(u64) RT_H2BE_U64_C(u64) + +/** @def RT_H2N_U32 + * Converts an uint32_t value from host to network byte order. */ +#define RT_H2N_U32(u32) RT_H2BE_U32(u32) + +/** @def RT_H2N_U32_C + * Converts an uint32_t constant from host to network byte order. */ +#define RT_H2N_U32_C(u32) RT_H2BE_U32_C(u32) + +/** @def RT_H2N_U16 + * Converts an uint16_t value from host to network byte order. */ +#define RT_H2N_U16(u16) RT_H2BE_U16(u16) + +/** @def RT_H2N_U16_C + * Converts an uint16_t constant from host to network byte order. */ +#define RT_H2N_U16_C(u16) RT_H2BE_U16_C(u16) + +/** @def RT_N2H_U64 + * Converts an uint64_t value from network to host byte order. */ +#define RT_N2H_U64(u64) RT_BE2H_U64(u64) + +/** @def RT_N2H_U64_C + * Converts an uint64_t constant from network to host byte order. */ +#define RT_N2H_U64_C(u64) RT_BE2H_U64_C(u64) + +/** @def RT_N2H_U32 + * Converts an uint32_t value from network to host byte order. */ +#define RT_N2H_U32(u32) RT_BE2H_U32(u32) + +/** @def RT_N2H_U32_C + * Converts an uint32_t constant from network to host byte order. */ +#define RT_N2H_U32_C(u32) RT_BE2H_U32_C(u32) + +/** @def RT_N2H_U16 + * Converts an uint16_t value from network to host byte order. */ +#define RT_N2H_U16(u16) RT_BE2H_U16(u16) + +/** @def RT_N2H_U16_C + * Converts an uint16_t value from network to host byte order. */ +#define RT_N2H_U16_C(u16) RT_BE2H_U16_C(u16) + + +/* + * The BSD sys/param.h + machine/param.h file is a major source of + * namespace pollution. Kill off some of the worse ones unless we're + * compiling kernel code. + */ +#if defined(RT_OS_DARWIN) \ + && !defined(KERNEL) \ + && !defined(RT_NO_BSD_PARAM_H_UNDEFING) \ + && ( defined(_SYS_PARAM_H_) || defined(_I386_PARAM_H_) ) +/* sys/param.h: */ +# undef PSWP +# undef PVM +# undef PINOD +# undef PRIBO +# undef PVFS +# undef PZERO +# undef PSOCK +# undef PWAIT +# undef PLOCK +# undef PPAUSE +# undef PUSER +# undef PRIMASK +# undef MINBUCKET +# undef MAXALLOCSAVE +# undef FSHIFT +# undef FSCALE + +/* i386/machine.h: */ +# undef ALIGN +# undef ALIGNBYTES +# undef DELAY +# undef STATUS_WORD +# undef USERMODE +# undef BASEPRI +# undef MSIZE +# undef CLSIZE +# undef CLSIZELOG2 +#endif + +/** @def NIL_OFFSET + * NIL offset. + * Whenever we use offsets instead of pointers to save space and relocation effort + * NIL_OFFSET shall be used as the equivalent to NULL. + */ +#define NIL_OFFSET (~0U) + +/** @def NOREF + * Keeps the compiler from bitching about an unused parameter. + */ +#define NOREF(var) (void)(var) + +/** @def RT_BREAKPOINT + * Emit a debug breakpoint instruction. + * + * @remarks In the x86/amd64 gnu world we add a nop instruction after the int3 + * to force gdb to remain at the int3 source line. + * @remarks The L4 kernel will try make sense of the breakpoint, thus the jmp on + * x86/amd64. + */ +#ifdef __GNUC__ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# if !defined(__L4ENV__) +# define RT_BREAKPOINT() __asm__ __volatile__("int $3\n\tnop\n\t") +# else +# define RT_BREAKPOINT() __asm__ __volatile__("int3; jmp 1f; 1:\n\t") +# endif +# elif defined(RT_ARCH_SPARC64) +# define RT_BREAKPOINT() __asm__ __volatile__("illtrap 0\n\t") /** @todo Sparc64: this is just a wild guess. */ +# elif defined(RT_ARCH_SPARC) +# define RT_BREAKPOINT() __asm__ __volatile__("unimp 0\n\t") /** @todo Sparc: this is just a wild guess (same as Sparc64, just different name). */ +# endif +#endif +#ifdef _MSC_VER +# define RT_BREAKPOINT() __debugbreak() +#endif +#if defined(__IBMC__) || defined(__IBMCPP__) +# define RT_BREAKPOINT() __interrupt(3) +#endif +#ifndef RT_BREAKPOINT +# error "This compiler/arch is not supported!" +#endif + + +/** @defgroup grp_rt_cdefs_size Size Constants + * (Of course, these are binary computer terms, not SI.) + * @{ + */ +/** 1 K (Kilo) (1 024). */ +#define _1K 0x00000400 +/** 2 K (Kilo) (2 048). */ +#define _2K 0x00000800 +/** 4 K (Kilo) (4 096). */ +#define _4K 0x00001000 +/** 8 K (Kilo) (8 192). */ +#define _8K 0x00002000 +/** 16 K (Kilo) (16 384). */ +#define _16K 0x00004000 +/** 32 K (Kilo) (32 678). */ +#define _32K 0x00008000 +/** 64 K (Kilo) (65 536). */ +#define _64K 0x00010000 +/** 128 K (Kilo) (131 072). */ +#define _128K 0x00020000 +/** 256 K (Kilo) (262 144). */ +#define _256K 0x00040000 +/** 512 K (Kilo) (524 288). */ +#define _512K 0x00080000 +/** 1 M (Mega) (1 048 576). */ +#define _1M 0x00100000 +/** 2 M (Mega) (2 097 152). */ +#define _2M 0x00200000 +/** 4 M (Mega) (4 194 304). */ +#define _4M 0x00400000 +/** 1 G (Giga) (1 073 741 824). (32-bit) */ +#define _1G 0x40000000 +/** 1 G (Giga) (1 073 741 824). (64-bit) */ +#define _1G64 0x40000000LL +/** 2 G (Giga) (2 147 483 648). (32-bit) */ +#define _2G32 0x80000000U +/** 2 G (Giga) (2 147 483 648). (64-bit) */ +#define _2G 0x0000000080000000LL +/** 4 G (Giga) (4 294 967 296). */ +#define _4G 0x0000000100000000LL +/** 1 T (Tera) (1 099 511 627 776). */ +#define _1T 0x0000010000000000LL +/** 1 P (Peta) (1 125 899 906 842 624). */ +#define _1P 0x0004000000000000LL +/** 1 E (Exa) (1 152 921 504 606 846 976). */ +#define _1E 0x1000000000000000LL +/** 2 E (Exa) (2 305 843 009 213 693 952). */ +#define _2E 0x2000000000000000ULL +/** @} */ + +/** @defgroup grp_rt_cdefs_decimal_grouping Decimal Constant Grouping Macros + * @{ */ +#define RT_D1(g1) g1 +#define RT_D2(g1, g2) g1#g2 +#define RT_D3(g1, g2, g3) g1#g2#g3 +#define RT_D4(g1, g2, g3, g4) g1#g2#g3#g4 +#define RT_D5(g1, g2, g3, g4, g5) g1#g2#g3#g4#g5 +#define RT_D6(g1, g2, g3, g4, g5, g6) g1#g2#g3#g4#g5#g6 +#define RT_D7(g1, g2, g3, g4, g5, g6, g7) g1#g2#g3#g4#g5#g6#g7 + +#define RT_D1_U(g1) UINT32_C(g1) +#define RT_D2_U(g1, g2) UINT32_C(g1#g2) +#define RT_D3_U(g1, g2, g3) UINT32_C(g1#g2#g3) +#define RT_D4_U(g1, g2, g3, g4) UINT64_C(g1#g2#g3#g4) +#define RT_D5_U(g1, g2, g3, g4, g5) UINT64_C(g1#g2#g3#g4#g5) +#define RT_D6_U(g1, g2, g3, g4, g5, g6) UINT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_U(g1, g2, g3, g4, g5, g6, g7) UINT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_S(g1) INT32_C(g1) +#define RT_D2_S(g1, g2) INT32_C(g1#g2) +#define RT_D3_S(g1, g2, g3) INT32_C(g1#g2#g3) +#define RT_D4_S(g1, g2, g3, g4) INT64_C(g1#g2#g3#g4) +#define RT_D5_S(g1, g2, g3, g4, g5) INT64_C(g1#g2#g3#g4#g5) +#define RT_D6_S(g1, g2, g3, g4, g5, g6) INT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_S(g1, g2, g3, g4, g5, g6, g7) INT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_U32(g1) UINT32_C(g1) +#define RT_D2_U32(g1, g2) UINT32_C(g1#g2) +#define RT_D3_U32(g1, g2, g3) UINT32_C(g1#g2#g3) +#define RT_D4_U32(g1, g2, g3, g4) UINT32_C(g1#g2#g3#g4) + +#define RT_D1_S32(g1) INT32_C(g1) +#define RT_D2_S32(g1, g2) INT32_C(g1#g2) +#define RT_D3_S32(g1, g2, g3) INT32_C(g1#g2#g3) +#define RT_D4_S32(g1, g2, g3, g4) INT32_C(g1#g2#g3#g4) + +#define RT_D1_U64(g1) UINT64_C(g1) +#define RT_D2_U64(g1, g2) UINT64_C(g1#g2) +#define RT_D3_U64(g1, g2, g3) UINT64_C(g1#g2#g3) +#define RT_D4_U64(g1, g2, g3, g4) UINT64_C(g1#g2#g3#g4) +#define RT_D5_U64(g1, g2, g3, g4, g5) UINT64_C(g1#g2#g3#g4#g5) +#define RT_D6_U64(g1, g2, g3, g4, g5, g6) UINT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_U64(g1, g2, g3, g4, g5, g6, g7) UINT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_S64(g1) INT64_C(g1) +#define RT_D2_S64(g1, g2) INT64_C(g1#g2) +#define RT_D3_S64(g1, g2, g3) INT64_C(g1#g2#g3) +#define RT_D4_S64(g1, g2, g3, g4) INT64_C(g1#g2#g3#g4) +#define RT_D5_S64(g1, g2, g3, g4, g5) INT64_C(g1#g2#g3#g4#g5) +#define RT_D6_S64(g1, g2, g3, g4, g5, g6) INT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_S64(g1, g2, g3, g4, g5, g6, g7) INT64_C(g1#g2#g3#g4#g5#g6#g7) +/** @} */ + + +/** @defgroup grp_rt_cdefs_time Time Constants + * @{ + */ +/** 1 hour expressed in nanoseconds (64-bit). */ +#define RT_NS_1HOUR UINT64_C(3600000000000) +/** 1 minute expressed in nanoseconds (64-bit). */ +#define RT_NS_1MIN UINT64_C(60000000000) +/** 45 second expressed in nanoseconds. */ +#define RT_NS_45SEC UINT64_C(45000000000) +/** 30 second expressed in nanoseconds. */ +#define RT_NS_30SEC UINT64_C(30000000000) +/** 20 second expressed in nanoseconds. */ +#define RT_NS_20SEC UINT64_C(20000000000) +/** 15 second expressed in nanoseconds. */ +#define RT_NS_15SEC UINT64_C(15000000000) +/** 10 second expressed in nanoseconds. */ +#define RT_NS_10SEC UINT64_C(10000000000) +/** 1 second expressed in nanoseconds. */ +#define RT_NS_1SEC UINT32_C(1000000000) +/** 100 millsecond expressed in nanoseconds. */ +#define RT_NS_100MS UINT32_C(100000000) +/** 10 millsecond expressed in nanoseconds. */ +#define RT_NS_10MS UINT32_C(10000000) +/** 1 millsecond expressed in nanoseconds. */ +#define RT_NS_1MS UINT32_C(1000000) +/** 100 microseconds expressed in nanoseconds. */ +#define RT_NS_100US UINT32_C(100000) +/** 10 microseconds expressed in nanoseconds. */ +#define RT_NS_10US UINT32_C(10000) +/** 1 microsecond expressed in nanoseconds. */ +#define RT_NS_1US UINT32_C(1000) + +/** 1 second expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1SEC_64 UINT64_C(1000000000) +/** 100 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_100MS_64 UINT64_C(100000000) +/** 10 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_10MS_64 UINT64_C(10000000) +/** 1 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1MS_64 UINT64_C(1000000) +/** 100 microseconds expressed in nanoseconds - 64-bit type. */ +#define RT_NS_100US_64 UINT64_C(100000) +/** 10 microseconds expressed in nanoseconds - 64-bit type. */ +#define RT_NS_10US_64 UINT64_C(10000) +/** 1 microsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1US_64 UINT64_C(1000) + +/** 1 hour expressed in microseconds. */ +#define RT_US_1HOUR UINT32_C(3600000000) +/** 1 minute expressed in microseconds. */ +#define RT_US_1MIN UINT32_C(60000000) +/** 1 second expressed in microseconds. */ +#define RT_US_1SEC UINT32_C(1000000) +/** 100 millsecond expressed in microseconds. */ +#define RT_US_100MS UINT32_C(100000) +/** 10 millsecond expressed in microseconds. */ +#define RT_US_10MS UINT32_C(10000) +/** 1 millsecond expressed in microseconds. */ +#define RT_US_1MS UINT32_C(1000) + +/** 1 hour expressed in microseconds - 64-bit type. */ +#define RT_US_1HOUR_64 UINT64_C(3600000000) +/** 1 minute expressed in microseconds - 64-bit type. */ +#define RT_US_1MIN_64 UINT64_C(60000000) +/** 1 second expressed in microseconds - 64-bit type. */ +#define RT_US_1SEC_64 UINT64_C(1000000) +/** 100 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_100MS_64 UINT64_C(100000) +/** 10 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_10MS_64 UINT64_C(10000) +/** 1 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_1MS_64 UINT64_C(1000) + +/** 1 hour expressed in milliseconds. */ +#define RT_MS_1HOUR UINT32_C(3600000) +/** 1 minute expressed in milliseconds. */ +#define RT_MS_1MIN UINT32_C(60000) +/** 1 second expressed in milliseconds. */ +#define RT_MS_1SEC UINT32_C(1000) + +/** 1 hour expressed in milliseconds - 64-bit type. */ +#define RT_MS_1HOUR_64 UINT64_C(3600000) +/** 1 minute expressed in milliseconds - 64-bit type. */ +#define RT_MS_1MIN_64 UINT64_C(60000) +/** 1 second expressed in milliseconds - 64-bit type. */ +#define RT_MS_1SEC_64 UINT64_C(1000) + +/** The number of seconds per week. */ +#define RT_SEC_1WEEK UINT32_C(604800) +/** The number of seconds per day. */ +#define RT_SEC_1DAY UINT32_C(86400) +/** The number of seconds per hour. */ +#define RT_SEC_1HOUR UINT32_C(3600) + +/** The number of seconds per week - 64-bit type. */ +#define RT_SEC_1WEEK_64 UINT64_C(604800) +/** The number of seconds per day - 64-bit type. */ +#define RT_SEC_1DAY_64 UINT64_C(86400) +/** The number of seconds per hour - 64-bit type. */ +#define RT_SEC_1HOUR_64 UINT64_C(3600) +/** @} */ + + +/** @defgroup grp_rt_cdefs_dbgtype Debug Info Types + * @{ */ +/** Other format. */ +#define RT_DBGTYPE_OTHER RT_BIT_32(0) +/** Stabs. */ +#define RT_DBGTYPE_STABS RT_BIT_32(1) +/** Debug With Arbitrary Record Format (DWARF). */ +#define RT_DBGTYPE_DWARF RT_BIT_32(2) +/** Microsoft Codeview debug info. */ +#define RT_DBGTYPE_CODEVIEW RT_BIT_32(3) +/** Watcom debug info. */ +#define RT_DBGTYPE_WATCOM RT_BIT_32(4) +/** IBM High Level Language debug info. */ +#define RT_DBGTYPE_HLL RT_BIT_32(5) +/** Old OS/2 and Windows symbol file. */ +#define RT_DBGTYPE_SYM RT_BIT_32(6) +/** Map file. */ +#define RT_DBGTYPE_MAP RT_BIT_32(7) +/** @} */ + + +/** @defgroup grp_rt_cdefs_exetype Executable Image Types + * @{ */ +/** Some other format. */ +#define RT_EXETYPE_OTHER RT_BIT_32(0) +/** Portable Executable. */ +#define RT_EXETYPE_PE RT_BIT_32(1) +/** Linear eXecutable. */ +#define RT_EXETYPE_LX RT_BIT_32(2) +/** Linear Executable. */ +#define RT_EXETYPE_LE RT_BIT_32(3) +/** New Executable. */ +#define RT_EXETYPE_NE RT_BIT_32(4) +/** DOS Executable (Mark Zbikowski). */ +#define RT_EXETYPE_MZ RT_BIT_32(5) +/** COM Executable. */ +#define RT_EXETYPE_COM RT_BIT_32(6) +/** a.out Executable. */ +#define RT_EXETYPE_AOUT RT_BIT_32(7) +/** Executable and Linkable Format. */ +#define RT_EXETYPE_ELF RT_BIT_32(8) +/** Mach-O Executable (including FAT ones). */ +#define RT_EXETYPE_MACHO RT_BIT_32(9) +/** TE from UEFI. */ +#define RT_EXETYPE_TE RT_BIT_32(9) +/** @} */ + + +/** @def VALID_PTR + * Pointer validation macro. + * @param ptr The pointer. + */ +#if defined(RT_ARCH_AMD64) +# ifdef IN_RING3 +# if defined(RT_OS_DARWIN) /* first 4GB is reserved for legacy kernel. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) >= _4G \ + && !((uintptr_t)(ptr) & 0xffff800000000000ULL) ) +# elif defined(RT_OS_SOLARIS) /* The kernel only used the top 2TB, but keep it simple. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && ( ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0xffff800000000000ULL \ + || ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0) ) +# else +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && !((uintptr_t)(ptr) & 0xffff800000000000ULL) ) +# endif +# else /* !IN_RING3 */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && ( ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0xffff800000000000ULL \ + || ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0) ) +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_X86) +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) + +#elif defined(RT_ARCH_SPARC64) +# ifdef IN_RING3 +# if defined(RT_OS_SOLARIS) +/** Sparc64 user mode: According to Figure 9.4 in solaris internals */ +/** @todo # define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x80004000U >= 0x80004000U + 0x100000000ULL ) - figure this. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x80000000U >= 0x80000000U + 0x100000000ULL ) +# else +# error "Port me" +# endif +# else /* !IN_RING3 */ +# if defined(RT_OS_SOLARIS) +/** @todo Sparc64 kernel mode: This is according to Figure 11.1 in solaris + * internals. Verify in sources. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) >= 0x01000000U ) +# else +# error "Port me" +# endif +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_SPARC) +# ifdef IN_RING3 +# ifdef RT_OS_SOLARIS +/** Sparc user mode: According to + * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/sun4/os/startup.c#510 */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x400000U >= 0x400000U + 0x2000U ) + +# else +# error "Port me" +# endif +# else /* !IN_RING3 */ +# ifdef RT_OS_SOLARIS +/** @todo Sparc kernel mode: Check the sources! */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) +# else +# error "Port me" +# endif +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_ARM) +/* ASSUMES that at least the last and first 4K are out of bounds. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) + +#else +# error "Architecture identifier missing / not implemented." +#endif + +/** Old name for RT_VALID_PTR. */ +#define VALID_PTR(ptr) RT_VALID_PTR(ptr) + +/** @def RT_VALID_ALIGNED_PTR + * Pointer validation macro that also checks the alignment. + * @param ptr The pointer. + * @param align The alignment, must be a power of two. + */ +#define RT_VALID_ALIGNED_PTR(ptr, align) \ + ( !((uintptr_t)(ptr) & (uintptr_t)((align) - 1)) \ + && VALID_PTR(ptr) ) + + +/** @def VALID_PHYS32 + * 32 bits physical address validation macro. + * @param Phys The RTGCPHYS address. + */ +#define VALID_PHYS32(Phys) ( (uint64_t)(Phys) < (uint64_t)_4G ) + +/** @def N_ + * The \#define N_ is used to mark a string for translation. This is usable in + * any part of the code, as it is only used by the tools that create message + * catalogs. This macro is a no-op as far as the compiler and code generation + * is concerned. + * + * If you want to both mark a string for translation and translate it, use _(). + */ +#define N_(s) (s) + +/** @def _ + * The \#define _ is used to mark a string for translation and to translate it + * in one step. + * + * If you want to only mark a string for translation, use N_(). + */ +#define _(s) gettext(s) + + +/** @def __PRETTY_FUNCTION__ + * With GNU C we'd like to use the builtin __PRETTY_FUNCTION__, so define that + * for the other compilers. + */ +#if !defined(__GNUC__) && !defined(__PRETTY_FUNCTION__) +# ifdef _MSC_VER +# define __PRETTY_FUNCTION__ __FUNCSIG__ +# else +# define __PRETTY_FUNCTION__ __FUNCTION__ +# endif +#endif + + +/** @def RT_STRICT + * The \#define RT_STRICT controls whether or not assertions and other runtime + * checks should be compiled in or not. This is defined when DEBUG is defined. + * If RT_NO_STRICT is defined, it will unconditionally be undefined. + * + * If you want assertions which are not subject to compile time options use + * the AssertRelease*() flavors. + */ +#if !defined(RT_STRICT) && defined(DEBUG) +# define RT_STRICT +#endif +#ifdef RT_NO_STRICT +# undef RT_STRICT +#endif + +/** @todo remove this: */ +#if !defined(RT_LOCK_STRICT) && !defined(DEBUG_bird) +# define RT_LOCK_NO_STRICT +#endif +#if !defined(RT_LOCK_STRICT_ORDER) && !defined(DEBUG_bird) +# define RT_LOCK_NO_STRICT_ORDER +#endif + +/** @def RT_LOCK_STRICT + * The \#define RT_LOCK_STRICT controls whether deadlock detection and related + * checks are done in the lock and semaphore code. It is by default enabled in + * RT_STRICT builds, but this behavior can be overridden by defining + * RT_LOCK_NO_STRICT. */ +#if !defined(RT_LOCK_STRICT) && !defined(RT_LOCK_NO_STRICT) && defined(RT_STRICT) +# define RT_LOCK_STRICT +#endif +/** @def RT_LOCK_NO_STRICT + * The \#define RT_LOCK_NO_STRICT disables RT_LOCK_STRICT. */ +#if defined(RT_LOCK_NO_STRICT) && defined(RT_LOCK_STRICT) +# undef RT_LOCK_STRICT +#endif + +/** @def RT_LOCK_STRICT_ORDER + * The \#define RT_LOCK_STRICT_ORDER controls whether locking order is checked + * by the lock and semaphore code. It is by default enabled in RT_STRICT + * builds, but this behavior can be overridden by defining + * RT_LOCK_NO_STRICT_ORDER. */ +#if !defined(RT_LOCK_STRICT_ORDER) && !defined(RT_LOCK_NO_STRICT_ORDER) && defined(RT_STRICT) +# define RT_LOCK_STRICT_ORDER +#endif +/** @def RT_LOCK_NO_STRICT_ORDER + * The \#define RT_LOCK_NO_STRICT_ORDER disables RT_LOCK_STRICT_ORDER. */ +#if defined(RT_LOCK_NO_STRICT_ORDER) && defined(RT_LOCK_STRICT_ORDER) +# undef RT_LOCK_STRICT_ORDER +#endif + + +/** Source position. */ +#define RT_SRC_POS __FILE__, __LINE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__ + +/** Source position declaration. */ +#define RT_SRC_POS_DECL const char *pszFile, unsigned iLine, const char *pszFunction + +/** Source position arguments. */ +#define RT_SRC_POS_ARGS pszFile, iLine, pszFunction + +/** Applies NOREF() to the source position arguments. */ +#define RT_SRC_POS_NOREF() do { NOREF(pszFile); NOREF(iLine); NOREF(pszFunction); } while (0) + + +/** @def RT_INLINE_ASM_EXTERNAL + * Defined as 1 if the compiler does not support inline assembly. + * The ASM* functions will then be implemented in external .asm files. + */ +#if (defined(_MSC_VER) && defined(RT_ARCH_AMD64)) \ + || (!defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86)) +# define RT_INLINE_ASM_EXTERNAL 1 +#else +# define RT_INLINE_ASM_EXTERNAL 0 +#endif + +/** @def RT_INLINE_ASM_GNU_STYLE + * Defined as 1 if the compiler understands GNU style inline assembly. + */ +#if defined(_MSC_VER) +# define RT_INLINE_ASM_GNU_STYLE 0 +#else +# define RT_INLINE_ASM_GNU_STYLE 1 +#endif + +/** @def RT_INLINE_ASM_USES_INTRIN + * Defined as the major MSC version if the compiler have and uses intrin.h. + * Otherwise it is 0. */ +#ifdef _MSC_VER +# if _MSC_VER >= 1700 /* Visual C++ v11.0 / 2012 */ +# define RT_INLINE_ASM_USES_INTRIN 17 +# elif _MSC_VER >= 1600 /* Visual C++ v10.0 / 2010 */ +# define RT_INLINE_ASM_USES_INTRIN 16 +# elif _MSC_VER >= 1500 /* Visual C++ v9.0 / 2008 */ +# define RT_INLINE_ASM_USES_INTRIN 15 +# elif _MSC_VER >= 1400 /* Visual C++ v8.0 / 2005 */ +# define RT_INLINE_ASM_USES_INTRIN 14 +# endif +#endif +#ifndef RT_INLINE_ASM_USES_INTRIN +# define RT_INLINE_ASM_USES_INTRIN 0 +#endif + +/** @def RT_COMPILER_SUPPORTS_LAMBDA + * If the defined, the compiler supports lambda expressions. These expressions + * are useful for embedding assertions and type checks into macros. */ +#if defined(_MSC_VER) && defined(__cplusplus) +# if _MSC_VER >= 1600 /* Visual C++ v10.0 / 2010 */ +# define RT_COMPILER_SUPPORTS_LAMBDA +# endif +#elif defined(__GNUC__) && defined(__cplusplus) +/* 4.5 or later, I think, if in ++11 mode... */ +#endif + +/** @} */ + + +/** @defgroup grp_rt_cdefs_cpp Special Macros for C++ + * @ingroup grp_rt_cdefs + * @{ + */ + +#ifdef __cplusplus + +/** @def DECLEXPORT_CLASS + * How to declare an exported class. Place this macro after the 'class' + * keyword in the declaration of every class you want to export. + * + * @note It is necessary to use this macro even for inner classes declared + * inside the already exported classes. This is a GCC specific requirement, + * but it seems not to harm other compilers. + */ +#if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLEXPORT_CLASS __declspec(dllexport) +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLEXPORT_CLASS __attribute__((visibility("default"))) +#else +# define DECLEXPORT_CLASS +#endif + +/** @def DECLIMPORT_CLASS + * How to declare an imported class Place this macro after the 'class' + * keyword in the declaration of every class you want to export. + * + * @note It is necessary to use this macro even for inner classes declared + * inside the already exported classes. This is a GCC specific requirement, + * but it seems not to harm other compilers. + */ +#if defined(_MSC_VER) || (defined(RT_OS_OS2) && !defined(__IBMC__) && !defined(__IBMCPP__)) +# define DECLIMPORT_CLASS __declspec(dllimport) +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLIMPORT_CLASS __attribute__((visibility("default"))) +#else +# define DECLIMPORT_CLASS +#endif + +/** @def WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP + * Macro to work around error C2593 of the not-so-smart MSVC 7.x ambiguity + * resolver. The following snippet clearly demonstrates the code causing this + * error: + * @code + * class A + * { + * public: + * operator bool() const { return false; } + * operator int*() const { return NULL; } + * }; + * int main() + * { + * A a; + * if (!a); + * if (a && 0); + * return 0; + * } + * @endcode + * The code itself seems pretty valid to me and GCC thinks the same. + * + * This macro fixes the compiler error by explicitly overloading implicit + * global operators !, && and || that take the given class instance as one of + * their arguments. + * + * The best is to use this macro right after the class declaration. + * + * @note The macro expands to nothing for compilers other than MSVC. + * + * @param Cls Class to apply the workaround to + */ +#if defined(_MSC_VER) +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP(Cls) \ + inline bool operator! (const Cls &that) { return !bool (that); } \ + inline bool operator&& (const Cls &that, bool b) { return bool (that) && b; } \ + inline bool operator|| (const Cls &that, bool b) { return bool (that) || b; } \ + inline bool operator&& (bool b, const Cls &that) { return b && bool (that); } \ + inline bool operator|| (bool b, const Cls &that) { return b || bool (that); } +#else +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP(Cls) +#endif + +/** @def WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL + * Version of WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP for template classes. + * + * @param Tpl Name of the template class to apply the workaround to + * @param ArgsDecl arguments of the template, as declared in |<>| after the + * |template| keyword, including |<>| + * @param Args arguments of the template, as specified in |<>| after the + * template class name when using the, including |<>| + * + * Example: + * @code + * // template class declaration + * template + * class Foo { ... }; + * // applied workaround + * WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL (Foo, , ) + * @endcode + */ +#if defined(_MSC_VER) +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL(Tpl, ArgsDecl, Args) \ + template ArgsDecl \ + inline bool operator! (const Tpl Args &that) { return !bool (that); } \ + template ArgsDecl \ + inline bool operator&& (const Tpl Args &that, bool b) { return bool (that) && b; } \ + template ArgsDecl \ + inline bool operator|| (const Tpl Args &that, bool b) { return bool (that) || b; } \ + template ArgsDecl \ + inline bool operator&& (bool b, const Tpl Args &that) { return b && bool (that); } \ + template ArgsDecl \ + inline bool operator|| (bool b, const Tpl Args &that) { return b || bool (that); } +#else +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL(Tpl, ArgsDecl, Args) +#endif + + +/** @def DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP + * Declares the copy constructor and the assignment operation as inlined no-ops + * (non-existent functions) for the given class. Use this macro inside the + * private section if you want to effectively disable these operations for your + * class. + * + * @param Cls class name to declare for + */ + +#define DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP(Cls) \ + inline Cls (const Cls &); \ + inline Cls &operator= (const Cls &); + + +/** @def DECLARE_CLS_NEW_DELETE_NOOP + * Declares the new and delete operations as no-ops (non-existent functions) + * for the given class. Use this macro inside the private section if you want + * to effectively limit creating class instances on the stack only. + * + * @note The destructor of the given class must not be virtual, otherwise a + * compile time error will occur. Note that this is not a drawback: having + * the virtual destructor for a stack-based class is absolutely useless + * (the real class of the stack-based instance is always known to the compiler + * at compile time, so it will always call the correct destructor). + * + * @param Cls class name to declare for + */ +#define DECLARE_CLS_NEW_DELETE_NOOP(Cls) \ + inline static void *operator new (size_t); \ + inline static void operator delete (void *); + +#endif /* __cplusplus */ + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/cpuset.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/cpuset.h @@ -0,0 +1,340 @@ +/** @file + * IPRT - CPU Set. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_cpuset_h +#define ___iprt_cpuset_h + +#include +#include /* RTMpCpuIdToSetIndex */ +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_cpuset RTCpuSet - CPU Set + * @ingroup grp_rt + * @{ + */ + + +/** + * Clear all CPUs. + * + * @returns pSet. + * @param pSet Pointer to the set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetEmpty(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = 0; + return pSet; +} + + +/** + * Set all CPUs. + * + * @returns pSet. + * @param pSet Pointer to the set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetFill(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = UINT64_MAX; + return pSet; +} + + +/** + * Copies one set to another. + * + * @param pDst Pointer to the destination set. + * @param pSrc Pointer to the source set. + */ +DECLINLINE(void) RTCpuSetCopy(PRTCPUSET pDst, PRTCPUSET pSrc) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pDst->bmSet); i++) + pDst->bmSet[i] = pSrc->bmSet[i]; +} + + +/** + * ANDs the given CPU set with another. + * + * @returns pSet. + * @param pSet Pointer to the set. + * @param pAndMaskSet Pointer to the AND-mask set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetAnd(PRTCPUSET pSet, PRTCPUSET pAndMaskSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + ASMAtomicAndU64((volatile uint64_t *)&pSet->bmSet[i], pAndMaskSet->bmSet[i]); + return pSet; +} + + +/** + * Adds a CPU given by its identifier to the set. + * + * @returns 0 on success, -1 if idCpu isn't valid. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to add. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetAdd(PRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + { + ASMAtomicBitSet(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Adds a CPU given by its identifier to the set. + * + * @returns 0 on success, -1 if iCpu isn't valid. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU to add. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetAddByIndex(PRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + { + ASMAtomicBitSet(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Removes a CPU given by its identifier from the set. + * + * @returns 0 on success, -1 if idCpu isn't valid. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to delete. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetDel(PRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + { + ASMAtomicBitClear(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Removes a CPU given by its index from the set. + * + * @returns 0 on success, -1 if iCpu isn't valid. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU to delete. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetDelByIndex(PRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + { + ASMAtomicBitClear(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Checks if a CPU given by its identifier is a member of the set. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to look for. + * @remarks The test is atomic. + */ +DECLINLINE(bool) RTCpuSetIsMember(PCRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + return ASMBitTest((volatile void *)pSet, iCpu); + return false; +} + + +/** + * Checks if a CPU given by its index is a member of the set. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU in the set. + * @remarks The test is atomic. + */ +DECLINLINE(bool) RTCpuSetIsMemberByIndex(PCRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + return ASMBitTest((volatile void *)pSet, iCpu); + return false; +} + + +/** + * Checks if the two sets match or not. + * + * @returns true / false accordingly. + * @param pSet1 The first set. + * @param pSet2 The second set. + */ +DECLINLINE(bool) RTCpuSetIsEqual(PCRTCPUSET pSet1, PCRTCPUSET pSet2) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet1->bmSet); i++) + if (pSet1->bmSet[i] != pSet2->bmSet[i]) + return false; + return true; +} + + +/** + * Checks if the CPU set is empty or not. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + */ +DECLINLINE(bool) RTCpuSetIsEmpty(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + if (pSet->bmSet[i]) + return false; + return true; +} + + +/** + * Converts the CPU set to a 64-bit mask. + * + * @returns The mask. + * @param pSet Pointer to the set. + * @remarks Use with extreme care as it may lose information! + */ +DECLINLINE(uint64_t) RTCpuSetToU64(PCRTCPUSET pSet) +{ + return pSet->bmSet[0]; +} + + +/** + * Initializes the CPU set from a 64-bit mask. + * + * @param pSet Pointer to the set. + * @param fMask The mask. + */ +DECLINLINE(PRTCPUSET) RTCpuSetFromU64(PRTCPUSET pSet, uint64_t fMask) +{ + unsigned i; + + pSet->bmSet[0] = fMask; + for (i = 1; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = 0; + + return pSet; +} + + +/** + * Count the CPUs in the set. + * + * @returns CPU count. + * @param pSet Pointer to the set. + */ +DECLINLINE(int) RTCpuSetCount(PCRTCPUSET pSet) +{ + int cCpus = 0; + unsigned i; + + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + { + uint64_t u64 = pSet->bmSet[i]; + if (u64 != 0) + { + unsigned iCpu = 64; + while (iCpu-- > 0) + { + if (u64 & 1) + cCpus++; + u64 >>= 1; + } + } + } + return cCpus; +} + + +/** + * Get the highest set index. + * + * @returns The higest set index, -1 if all bits are clear. + * @param pSet Pointer to the set. + */ +DECLINLINE(int) RTCpuLastIndex(PCRTCPUSET pSet) +{ + unsigned i = RT_ELEMENTS(pSet->bmSet); + while (i-- > 0) + { + uint64_t u64 = pSet->bmSet[i]; + if (u64) + { + /* There are more efficient ways to do this in asm.h... */ + unsigned iBit; + for (iBit = 63; iBit > 0; iBit--) + { + if (u64 & RT_BIT_64(63)) + break; + u64 <<= 1; + } + return i * 64 + iBit; + } + } + return 0; +} + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/ctype.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/ctype.h @@ -0,0 +1,238 @@ +/** @file + * IPRT - Simple character type classiciation and conversion. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_ctype_h +#define ___iprt_ctype_h + +#include + +/** @name C locale predicates and conversions. + * + * For most practical purposes, this can safely be used when parsing UTF-8 + * strings. Just keep in mind that we only deal with the first 127 chars and + * that full correctness is only archived using the non-existing RTLocIs* API. + * + * @remarks Use the marcros, not the inlined functions. + * + * @remarks ASSUMES the source code includes the basic ASCII chars. This is a + * general IPRT assumption. + * @{ */ +#define RT_C_IS_BLANK(ch) RTLocCIsBlank((ch)) +#define RT_C_IS_ALNUM(ch) RTLocCIsAlNum((ch)) +#define RT_C_IS_ALPHA(ch) RTLocCIsAlpha((ch)) +#define RT_C_IS_CNTRL(ch) RTLocCIsCntrl((ch)) +#define RT_C_IS_DIGIT(ch) RTLocCIsDigit((ch)) +#define RT_C_IS_LOWER(ch) RTLocCIsLower((ch)) +#define RT_C_IS_GRAPH(ch) RTLocCIsGraph((ch)) +#define RT_C_IS_ODIGIT(ch) RTLocCIsODigit((ch)) +#define RT_C_IS_PRINT(ch) RTLocCIsPrint((ch)) +#define RT_C_IS_PUNCT(ch) RTLocCIsPunct((ch)) +#define RT_C_IS_SPACE(ch) RTLocCIsSpace((ch)) +#define RT_C_IS_UPPER(ch) RTLocCIsUpper((ch)) +#define RT_C_IS_XDIGIT(ch) RTLocCIsXDigit((ch)) + +#define RT_C_TO_LOWER(ch) RTLocCToLower((ch)) +#define RT_C_TO_UPPER(ch) RTLocCToUpper((ch)) + +/** + * Checks for a blank character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsBlank(int ch) +{ + return ch == 0x20 /* space */ + || ch == 0x09; /* horizontal tab */ +} + +/** + * Checks for a control character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsCntrl(int ch) +{ + return (unsigned)ch < 32U /* 0..2f */ + || ch == 0x7f; +} + +/** + * Checks for a decimal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsDigit(int ch) +{ + return (unsigned)ch - 0x30 < 10U; /* 30..39 */ +} + +/** + * Checks for a lower case character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsLower(int ch) +{ + return (unsigned)ch - 0x61U < 26U; /* 61..7a */ +} + +/** + * Checks for an octal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsODigit(int ch) +{ + return (unsigned)ch - 0x30 < 8U; /* 30..37 */ +} + +/** + * Checks for a printable character (whitespace included). + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsPrint(int ch) +{ + return (unsigned)ch - 0x20U < 95U; /* 20..7e */ +} + +/** + * Checks for punctuation (?). + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsPunct(int ch) +{ + return (unsigned)ch - 0x21U < 15U /* 21..2f */ + || (unsigned)ch - 0x2aU < 6U /* 2a..2f */ + || (unsigned)ch - 0x3aU < 7U /* 3a..40 */ + || (unsigned)ch - 0x5bU < 6U /* 5a..60 */ + || (unsigned)ch - 0x7bU < 4U /* 7b..7e */; +} + +/** + * Checks for a white-space character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsSpace(int ch) +{ + return ch == 0x20 /* 20 (space) */ + || (unsigned)ch - 0x09U < 5U; /* 09..0d */ +} + +/** + * Checks for an upper case character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsUpper(int ch) +{ + return (unsigned)ch - 0x41 < 26U; /* 41..5a */ +} + +/** + * Checks for a hexadecimal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsXDigit(int ch) +{ + return (unsigned)ch - 0x30 < 10U /* 30..39 (0-9) */ + || (unsigned)ch - 0x41 < 6 /* 41..46 (A-F) */ + || (unsigned)ch - 0x61 < 6; /* 61..66 (a-f) */ +} + +/** + * Checks for an alphabetic character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsAlpha(int ch) +{ + return RTLocCIsLower(ch) || RTLocCIsUpper(ch); +} + +/** + * Checks for an alphanumerical character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsAlNum(int ch) +{ + return RTLocCIsDigit(ch) || RTLocCIsAlpha(ch); +} + +/** + * Checks for a printable character whitespace excluded. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsGraph(int ch) +{ + return RTLocCIsPrint(ch) && !RTLocCIsBlank(ch); +} + + +/** + * Converts the character to lower case if applictable. + * + * @returns lower cased character or ch. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(int) RTLocCToLower(int ch) +{ + return RTLocCIsUpper(ch) ? (ch) + 0x20 : (ch); +} + +/** + * Converts the character to upper case if applictable. + * + * @returns upper cased character or ch. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(int) RTLocCToUpper(int ch) +{ + return RTLocCIsLower(ch) ? (ch) - 0x20 : (ch); +} + + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/err.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/err.h @@ -0,0 +1,2549 @@ +/** @file + * IPRT - Status Codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_err_h +#define ___iprt_err_h + +#include +#include +#include + + +/** @defgroup grp_rt_err RTErr - Status Codes + * @ingroup grp_rt + * + * The IPRT status codes are in two ranges: {0..999} and {22000..32766}. The + * IPRT users are free to use the range {1000..21999}. See RTERR_RANGE1_FIRST, + * RTERR_RANGE1_LAST, RTERR_RANGE2_FIRST, RTERR_RANGE2_LAST, RTERR_USER_FIRST + * and RTERR_USER_LAST. + * + * @{ + */ + +/** @defgroup grp_rt_err_hlp Status Code Helpers + * @{ + */ + +#ifdef __cplusplus +/** + * Strict type validation class. + * + * This is only really useful for type checking the arguments to RT_SUCCESS, + * RT_SUCCESS_NP, RT_FAILURE and RT_FAILURE_NP. The RTErrStrictType2 + * constructor is for integration with external status code strictness regimes. + */ +class RTErrStrictType +{ +protected: + int32_t m_rc; + +public: + /** + * Constructor for interaction with external status code strictness regimes. + * + * This is a special constructor for helping external return code validator + * classes interact cleanly with RT_SUCCESS, RT_SUCCESS_NP, RT_FAILURE and + * RT_FAILURE_NP while barring automatic cast to integer. + * + * @param rcObj IPRT status code object from an automatic cast. + */ + RTErrStrictType(RTErrStrictType2 const rcObj) + : m_rc(rcObj.getValue()) + { + } + + /** + * Integer constructor used by RT_SUCCESS_NP. + * + * @param rc IPRT style status code. + */ + RTErrStrictType(int32_t rc) + : m_rc(rc) + { + } + +#if 0 /** @todo figure where int32_t is long instead of int. */ + /** + * Integer constructor used by RT_SUCCESS_NP. + * + * @param rc IPRT style status code. + */ + RTErrStrictType(signed int rc) + : m_rc(rc) + { + } +#endif + + /** + * Test for success. + */ + bool success() const + { + return m_rc >= 0; + } + +private: + /** @name Try ban a number of wrong types. + * @{ */ + RTErrStrictType(uint8_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint16_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint32_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint64_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int8_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int16_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int64_t rc) : m_rc(-999) { NOREF(rc); } + /** @todo fight long here - clashes with int32_t/int64_t on some platforms. */ + /** @} */ +}; +#endif /* __cplusplus */ + + +/** @def RTERR_STRICT_RC + * Indicates that RT_SUCCESS_NP, RT_SUCCESS, RT_FAILURE_NP and RT_FAILURE should + * make type enforcing at compile time. + * + * @remarks Only define this for C++ code. + */ +#if defined(__cplusplus) \ + && !defined(RTERR_STRICT_RC) \ + && ( defined(DOXYGEN_RUNNING) \ + || defined(DEBUG) \ + || defined(RT_STRICT) ) +# define RTERR_STRICT_RC 1 +#endif + + +/** @def RT_SUCCESS + * Check for success. We expect success in normal cases, that is the code path depending on + * this check is normally taken. To prevent any prediction use RT_SUCCESS_NP instead. + * + * @returns true if rc indicates success. + * @returns false if rc indicates failure. + * + * @param rc The iprt status code to test. + */ +#define RT_SUCCESS(rc) ( RT_LIKELY(RT_SUCCESS_NP(rc)) ) + +/** @def RT_SUCCESS_NP + * Check for success. Don't predict the result. + * + * @returns true if rc indicates success. + * @returns false if rc indicates failure. + * + * @param rc The iprt status code to test. + */ +#ifdef RTERR_STRICT_RC +# define RT_SUCCESS_NP(rc) ( RTErrStrictType(rc).success() ) +#else +# define RT_SUCCESS_NP(rc) ( (int)(rc) >= VINF_SUCCESS ) +#endif + +/** @def RT_FAILURE + * Check for failure, predicting unlikely. + * + * We don't expect in normal cases, that is the code path depending on this + * check is normally NOT taken. To prevent any prediction use RT_FAILURE_NP + * instead. + * + * @returns true if rc indicates failure. + * @returns false if rc indicates success. + * + * @param rc The iprt status code to test. + * + * @remarks Please structure your code to use the RT_SUCCESS() macro instead of + * RT_FAILURE() where possible, as that gives us a better shot at good + * code with the windows compilers. + */ +#define RT_FAILURE(rc) ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) ) + +/** @def RT_FAILURE_NP + * Check for failure, no prediction. + * + * @returns true if rc indicates failure. + * @returns false if rc indicates success. + * + * @param rc The iprt status code to test. + */ +#define RT_FAILURE_NP(rc) ( !RT_SUCCESS_NP(rc) ) + +RT_C_DECLS_BEGIN + +/** + * Converts a Darwin HRESULT error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode HRESULT error code. + * @remark Darwin ring-3 only. + */ +RTDECL(int) RTErrConvertFromDarwinCOM(int32_t iNativeCode); + +/** + * Converts a Darwin IOReturn error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode IOReturn error code. + * @remark Darwin only. + */ +RTDECL(int) RTErrConvertFromDarwinIO(int iNativeCode); + +/** + * Converts a Darwin kern_return_t error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode kern_return_t error code. + * @remark Darwin only. + */ +RTDECL(int) RTErrConvertFromDarwinKern(int iNativeCode); + +/** + * Converts a Darwin error to an iprt status code. + * + * This will consult RTErrConvertFromDarwinKern, RTErrConvertFromDarwinIO + * and RTErrConvertFromDarwinCOM in this order. The latter is ring-3 only as it + * doesn't apply elsewhere. + * + * @returns iprt status code. + * @param iNativeCode Darwin error code. + * @remarks Darwin only. + * @remarks This is recommended over RTErrConvertFromDarwinKern and RTErrConvertFromDarwinIO + * since these are really just subsets of the same error space. + */ +RTDECL(int) RTErrConvertFromDarwin(int iNativeCode); + +/** + * Converts errno to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode errno code. + */ +RTDECL(int) RTErrConvertFromErrno(unsigned uNativeCode); + +/** + * Converts a L4 errno to a iprt status code. + * + * @returns iprt status code. + * @param uNativeCode l4 errno. + * @remark L4 only. + */ +RTDECL(int) RTErrConvertFromL4Errno(unsigned uNativeCode); + +/** + * Converts NT status code to iprt status code. + * + * Needless to say, this is only available on NT and winXX targets. + * + * @returns iprt status code. + * @param lNativeCode NT status code. + * @remark Windows only. + */ +RTDECL(int) RTErrConvertFromNtStatus(long lNativeCode); + +/** + * Converts OS/2 error code to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode OS/2 error code. + * @remark OS/2 only. + */ +RTDECL(int) RTErrConvertFromOS2(unsigned uNativeCode); + +/** + * Converts Win32 error code to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode Win32 error code. + * @remark Windows only. + */ +RTDECL(int) RTErrConvertFromWin32(unsigned uNativeCode); + +/** + * Converts an iprt status code to a errno status code. + * + * @returns errno status code. + * @param iErr iprt status code. + */ +RTDECL(int) RTErrConvertToErrno(int iErr); + +#ifdef IN_RING3 + +/** + * iprt status code message. + */ +typedef struct RTSTATUSMSG +{ + /** Pointer to the short message string. */ + const char *pszMsgShort; + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Status code number. */ + int iCode; +} RTSTATUSMSG; +/** Pointer to iprt status code message. */ +typedef RTSTATUSMSG *PRTSTATUSMSG; +/** Pointer to const iprt status code message. */ +typedef const RTSTATUSMSG *PCRTSTATUSMSG; + +/** + * Get the message structure corresponding to a given iprt status code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTSTATUSMSG) RTErrGet(int rc); + +/** + * Get the define corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the \#define identifier. + * @param rc The status code. + */ +#define RTErrGetDefine(rc) (RTErrGet(rc)->pszDefine) + +/** + * Get the short description corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the description. + * @param rc The status code. + */ +#define RTErrGetShort(rc) (RTErrGet(rc)->pszMsgShort) + +/** + * Get the full description corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the description. + * @param rc The status code. + */ +#define RTErrGetFull(rc) (RTErrGet(rc)->pszMsgFull) + +#ifdef RT_OS_WINDOWS +/** + * Windows error code message. + */ +typedef struct RTWINERRMSG +{ + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Error code number. */ + long iCode; +} RTWINERRMSG; +/** Pointer to Windows error code message. */ +typedef RTWINERRMSG *PRTWINERRMSG; +/** Pointer to const Windows error code message. */ +typedef const RTWINERRMSG *PCRTWINERRMSG; + +/** + * Get the message structure corresponding to a given Windows error code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTWINERRMSG) RTErrWinGet(long rc); + +/** On windows COM errors are part of the Windows error database. */ +typedef RTWINERRMSG RTCOMERRMSG; + +#else /* !RT_OS_WINDOWS */ + +/** + * COM/XPCOM error code message. + */ +typedef struct RTCOMERRMSG +{ + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Error code number. */ + uint32_t iCode; +} RTCOMERRMSG; +#endif /* !RT_OS_WINDOWS */ +/** Pointer to a XPCOM/COM error code message. */ +typedef RTCOMERRMSG *PRTCOMERRMSG; +/** Pointer to const a XPCOM/COM error code message. */ +typedef const RTCOMERRMSG *PCRTCOMERRMSG; + +/** + * Get the message structure corresponding to a given COM/XPCOM error code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTCOMERRMSG) RTErrCOMGet(uint32_t rc); + +#endif /* IN_RING3 */ + +/** @defgroup RTERRINFO_FLAGS_XXX RTERRINFO::fFlags + * @{ */ +/** Custom structure (the default). */ +#define RTERRINFO_FLAGS_T_CUSTOM UINT32_C(0) +/** Static structure (RTERRINFOSTATIC). */ +#define RTERRINFO_FLAGS_T_STATIC UINT32_C(1) +/** Allocated structure (RTErrInfoAlloc). */ +#define RTERRINFO_FLAGS_T_ALLOC UINT32_C(2) +/** Reserved type. */ +#define RTERRINFO_FLAGS_T_RESERVED UINT32_C(3) +/** Type mask. */ +#define RTERRINFO_FLAGS_T_MASK UINT32_C(3) +/** Error info is set. */ +#define RTERRINFO_FLAGS_SET RT_BIT_32(2) +/** Fixed flags (magic). */ +#define RTERRINFO_FLAGS_MAGIC UINT32_C(0xbabe0000) +/** The bit mask for the magic value. */ +#define RTERRINFO_FLAGS_MAGIC_MASK UINT32_C(0xffff0000) +/** @} */ + +/** + * Initializes an error info structure. + * + * @returns @a pErrInfo. + * @param pErrInfo The error info structure to init. + * @param pszMsg The message buffer. Must be at least one byte. + * @param cbMsg The size of the message buffer. + */ +DECLINLINE(PRTERRINFO) RTErrInfoInit(PRTERRINFO pErrInfo, char *pszMsg, size_t cbMsg) +{ + *pszMsg = '\0'; + + pErrInfo->fFlags = RTERRINFO_FLAGS_T_CUSTOM | RTERRINFO_FLAGS_MAGIC; + pErrInfo->rc = /*VINF_SUCCESS*/ 0; + pErrInfo->pszMsg = pszMsg; + pErrInfo->cbMsg = cbMsg; + pErrInfo->apvReserved[0] = NULL; + pErrInfo->apvReserved[1] = NULL; + + return pErrInfo; +} + +/** + * Initialize a static error info structure. + * + * @returns Pointer to the core error info structure. + * @param pStaticErrInfo The static error info structure to init. + */ +DECLINLINE(PRTERRINFO) RTErrInfoInitStatic(PRTERRINFOSTATIC pStaticErrInfo) +{ + RTErrInfoInit(&pStaticErrInfo->Core, pStaticErrInfo->szMsg, sizeof(pStaticErrInfo->szMsg)); + pStaticErrInfo->Core.fFlags = RTERRINFO_FLAGS_T_STATIC | RTERRINFO_FLAGS_MAGIC; + return &pStaticErrInfo->Core; +} + +/** + * Allocates a error info structure with a buffer at least the given size. + * + * @returns Pointer to an error info structure on success, NULL on failure. + * + * @param cbMsg The minimum message buffer size. Use 0 to get + * the default buffer size. + */ +RTDECL(PRTERRINFO) RTErrInfoAlloc(size_t cbMsg); + +/** + * Same as RTErrInfoAlloc, except that an IPRT status code is returned. + * + * @returns IPRT status code. + * + * @param cbMsg The minimum message buffer size. Use 0 to get + * the default buffer size. + * @param ppErrInfo Where to store the pointer to the allocated + * error info structure on success. This is + * always set to NULL. + */ +RTDECL(int) RTErrInfoAllocEx(size_t cbMsg, PRTERRINFO *ppErrInfo); + +/** + * Frees an error info structure allocated by RTErrInfoAlloc or + * RTErrInfoAllocEx. + * + * @param pErrInfo The error info structure. + */ +RTDECL(void) RTErrInfoFree(PRTERRINFO pErrInfo); + +/** + * Fills in the error info details. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszMsg The error message string. + */ +RTDECL(int) RTErrInfoSet(PRTERRINFO pErrInfo, int rc, const char *pszMsg); + +/** + * Fills in the error info details, with a sprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string. + * @param ... The format arguments. + */ +RTDECL(int) RTErrInfoSetF(PRTERRINFO pErrInfo, int rc, const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(3, 4); + +/** + * Fills in the error info details, with a vsprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string. + * @param va The format arguments. + */ +RTDECL(int) RTErrInfoSetV(PRTERRINFO pErrInfo, int rc, const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(3, 0); + +/** + * Adds more error info details. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszMsg The error message string to add. + */ +RTDECL(int) RTErrInfoAdd(PRTERRINFO pErrInfo, int rc, const char *pszMsg); + +/** + * Adds more error info details, with a sprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string to add. + * @param ... The format arguments. + */ +RTDECL(int) RTErrInfoAddF(PRTERRINFO pErrInfo, int rc, const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(3, 4); + +/** + * Adds more error info details, with a vsprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string to add. + * @param va The format arguments. + */ +RTDECL(int) RTErrInfoAddV(PRTERRINFO pErrInfo, int rc, const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(3, 0); + +/** + * Checks if the error info is set. + * + * @returns true if set, false if not. + * @param pErrInfo The error info structure. NULL is OK. + */ +DECLINLINE(bool) RTErrInfoIsSet(PCRTERRINFO pErrInfo) +{ + if (!pErrInfo) + return false; + return (pErrInfo->fFlags & (RTERRINFO_FLAGS_MAGIC_MASK | RTERRINFO_FLAGS_SET)) + == (RTERRINFO_FLAGS_MAGIC | RTERRINFO_FLAGS_SET); +} + +/** + * Clears the error info structure. + * + * @param pErrInfo The error info structure. NULL is OK. + */ +DECLINLINE(void) RTErrInfoClear(PRTERRINFO pErrInfo) +{ + if (pErrInfo) + { + pErrInfo->fFlags &= ~RTERRINFO_FLAGS_SET; + pErrInfo->rc = /*VINF_SUCCESS*/0; + *pErrInfo->pszMsg = '\0'; + } +} + +/** + * Storage for error variables. + * + * @remarks Do NOT touch the members! They are platform specific and what's + * where may change at any time! + */ +typedef union RTERRVARS +{ + int8_t ai8Vars[32]; + int16_t ai16Vars[16]; + int32_t ai32Vars[8]; + int64_t ai64Vars[4]; +} RTERRVARS; +/** Pointer to an error variable storage union. */ +typedef RTERRVARS *PRTERRVARS; +/** Pointer to a const error variable storage union. */ +typedef RTERRVARS const *PCRTERRVARS; + +/** + * Saves the error variables. + * + * @returns @a pVars. + * @param pVars The variable storage union. + */ +RTDECL(PRTERRVARS) RTErrVarsSave(PRTERRVARS pVars); + +/** + * Restores the error variables. + * + * @param pVars The variable storage union. + */ +RTDECL(void) RTErrVarsRestore(PCRTERRVARS pVars); + +/** + * Checks if the first variable set equals the second. + * + * @returns true if they are equal, false if not. + * @param pVars1 The first variable storage union. + * @param pVars2 The second variable storage union. + */ +RTDECL(bool) RTErrVarsAreEqual(PCRTERRVARS pVars1, PCRTERRVARS pVars2); + +/** + * Checks if the (live) error variables have changed since we saved them. + * + * @returns @c true if they have changed, @c false if not. + * @param pVars The saved variables to compare the current state + * against. + */ +RTDECL(bool) RTErrVarsHaveChanged(PCRTERRVARS pVars); + +RT_C_DECLS_END + +/** @} */ + +/** @name Status Code Ranges + * @{ */ +/** The first status code in the primary IPRT range. */ +#define RTERR_RANGE1_FIRST 0 +/** The last status code in the primary IPRT range. */ +#define RTERR_RANGE1_LAST 999 + +/** The first status code in the secondary IPRT range. */ +#define RTERR_RANGE2_FIRST 22000 +/** The last status code in the secondary IPRT range. */ +#define RTERR_RANGE2_LAST 32766 + +/** The first status code in the user range. */ +#define RTERR_USER_FIRST 1000 +/** The last status code in the user range. */ +#define RTERR_USER_LAST 21999 +/** @} */ + + +/* SED-START */ + +/** @name Misc. Status Codes + * @{ + */ +/** Success. */ +#define VINF_SUCCESS 0 + +/** General failure - DON'T USE THIS!!! */ +#define VERR_GENERAL_FAILURE (-1) +/** Invalid parameter. */ +#define VERR_INVALID_PARAMETER (-2) +/** Invalid parameter. */ +#define VWRN_INVALID_PARAMETER 2 +/** Invalid magic or cookie. */ +#define VERR_INVALID_MAGIC (-3) +/** Invalid magic or cookie. */ +#define VWRN_INVALID_MAGIC 3 +/** Invalid loader handle. */ +#define VERR_INVALID_HANDLE (-4) +/** Invalid loader handle. */ +#define VWRN_INVALID_HANDLE 4 +/** Failed to lock the address range. */ +#define VERR_LOCK_FAILED (-5) +/** Invalid memory pointer. */ +#define VERR_INVALID_POINTER (-6) +/** Failed to patch the IDT. */ +#define VERR_IDT_FAILED (-7) +/** Memory allocation failed. */ +#define VERR_NO_MEMORY (-8) +/** Already loaded. */ +#define VERR_ALREADY_LOADED (-9) +/** Permission denied. */ +#define VERR_PERMISSION_DENIED (-10) +/** Permission denied. */ +#define VINF_PERMISSION_DENIED 10 +/** Version mismatch. */ +#define VERR_VERSION_MISMATCH (-11) +/** The request function is not implemented. */ +#define VERR_NOT_IMPLEMENTED (-12) +/** Invalid flags was given. */ +#define VERR_INVALID_FLAGS (-13) + +/** Not equal. */ +#define VERR_NOT_EQUAL (-18) +/** The specified path does not point at a symbolic link. */ +#define VERR_NOT_SYMLINK (-19) +/** Failed to allocate temporary memory. */ +#define VERR_NO_TMP_MEMORY (-20) +/** Invalid file mode mask (RTFMODE). */ +#define VERR_INVALID_FMODE (-21) +/** Incorrect call order. */ +#define VERR_WRONG_ORDER (-22) +/** There is no TLS (thread local storage) available for storing the current thread. */ +#define VERR_NO_TLS_FOR_SELF (-23) +/** Failed to set the TLS (thread local storage) entry which points to our thread structure. */ +#define VERR_FAILED_TO_SET_SELF_TLS (-24) +/** Not able to allocate contiguous memory. */ +#define VERR_NO_CONT_MEMORY (-26) +/** No memory available for page table or page directory. */ +#define VERR_NO_PAGE_MEMORY (-27) +/** Already initialized. */ +#define VINF_ALREADY_INITIALIZED 28 +/** The specified thread is dead. */ +#define VERR_THREAD_IS_DEAD (-29) +/** The specified thread is not waitable. */ +#define VERR_THREAD_NOT_WAITABLE (-30) +/** Pagetable not present. */ +#define VERR_PAGE_TABLE_NOT_PRESENT (-31) +/** Invalid context. + * Typically an API was used by the wrong thread. */ +#define VERR_INVALID_CONTEXT (-32) +/** The per process timer is busy. */ +#define VERR_TIMER_BUSY (-33) +/** Address conflict. */ +#define VERR_ADDRESS_CONFLICT (-34) +/** Unresolved (unknown) host platform error. */ +#define VERR_UNRESOLVED_ERROR (-35) +/** Invalid function. */ +#define VERR_INVALID_FUNCTION (-36) +/** Not supported. */ +#define VERR_NOT_SUPPORTED (-37) +/** Not supported. */ +#define VINF_NOT_SUPPORTED 37 +/** Access denied. */ +#define VERR_ACCESS_DENIED (-38) +/** Call interrupted. */ +#define VERR_INTERRUPTED (-39) +/** Call interrupted. */ +#define VINF_INTERRUPTED 39 +/** Timeout. */ +#define VERR_TIMEOUT (-40) +/** Timeout. */ +#define VINF_TIMEOUT 40 +/** Buffer too small to save result. */ +#define VERR_BUFFER_OVERFLOW (-41) +/** Buffer too small to save result. */ +#define VINF_BUFFER_OVERFLOW 41 +/** Data size overflow. */ +#define VERR_TOO_MUCH_DATA (-42) +/** Max threads number reached. */ +#define VERR_MAX_THRDS_REACHED (-43) +/** Max process number reached. */ +#define VERR_MAX_PROCS_REACHED (-44) +/** The recipient process has refused the signal. */ +#define VERR_SIGNAL_REFUSED (-45) +/** A signal is already pending. */ +#define VERR_SIGNAL_PENDING (-46) +/** The signal being posted is not correct. */ +#define VERR_SIGNAL_INVALID (-47) +/** The state changed. + * This is a generic error message and needs a context to make sense. */ +#define VERR_STATE_CHANGED (-48) +/** Warning, the state changed. + * This is a generic error message and needs a context to make sense. */ +#define VWRN_STATE_CHANGED 48 +/** Error while parsing UUID string */ +#define VERR_INVALID_UUID_FORMAT (-49) +/** The specified process was not found. */ +#define VERR_PROCESS_NOT_FOUND (-50) +/** The process specified to a non-block wait had not exited. */ +#define VERR_PROCESS_RUNNING (-51) +/** Retry the operation. */ +#define VERR_TRY_AGAIN (-52) +/** Retry the operation. */ +#define VINF_TRY_AGAIN 52 +/** Generic parse error. */ +#define VERR_PARSE_ERROR (-53) +/** Value out of range. */ +#define VERR_OUT_OF_RANGE (-54) +/** A numeric conversion encountered a value which was too big for the target. */ +#define VERR_NUMBER_TOO_BIG (-55) +/** A numeric conversion encountered a value which was too big for the target. */ +#define VWRN_NUMBER_TOO_BIG 55 +/** The number begin converted (string) contained no digits. */ +#define VERR_NO_DIGITS (-56) +/** The number begin converted (string) contained no digits. */ +#define VWRN_NO_DIGITS 56 +/** Encountered a '-' during conversion to an unsigned value. */ +#define VERR_NEGATIVE_UNSIGNED (-57) +/** Encountered a '-' during conversion to an unsigned value. */ +#define VWRN_NEGATIVE_UNSIGNED 57 +/** Error while characters translation (unicode and so). */ +#define VERR_NO_TRANSLATION (-58) +/** Error while characters translation (unicode and so). */ +#define VWRN_NO_TRANSLATION 58 +/** Encountered unicode code point which is reserved for use as endian indicator (0xffff or 0xfffe). */ +#define VERR_CODE_POINT_ENDIAN_INDICATOR (-59) +/** Encountered unicode code point in the surrogate range (0xd800 to 0xdfff). */ +#define VERR_CODE_POINT_SURROGATE (-60) +/** A string claiming to be UTF-8 is incorrectly encoded. */ +#define VERR_INVALID_UTF8_ENCODING (-61) +/** A string claiming to be in UTF-16 is incorrectly encoded. */ +#define VERR_INVALID_UTF16_ENCODING (-62) +/** Encountered a unicode code point which cannot be represented as UTF-16. */ +#define VERR_CANT_RECODE_AS_UTF16 (-63) +/** Got an out of memory condition trying to allocate a string. */ +#define VERR_NO_STR_MEMORY (-64) +/** Got an out of memory condition trying to allocate a UTF-16 (/UCS-2) string. */ +#define VERR_NO_UTF16_MEMORY (-65) +/** Get an out of memory condition trying to allocate a code point array. */ +#define VERR_NO_CODE_POINT_MEMORY (-66) +/** Can't free the memory because it's used in mapping. */ +#define VERR_MEMORY_BUSY (-67) +/** The timer can't be started because it's already active. */ +#define VERR_TIMER_ACTIVE (-68) +/** The timer can't be stopped because it's already suspended. */ +#define VERR_TIMER_SUSPENDED (-69) +/** The operation was cancelled by the user (copy) or another thread (local ipc). */ +#define VERR_CANCELLED (-70) +/** Failed to initialize a memory object. + * Exactly what this means is OS specific. */ +#define VERR_MEMOBJ_INIT_FAILED (-71) +/** Out of memory condition when allocating memory with low physical backing. */ +#define VERR_NO_LOW_MEMORY (-72) +/** Out of memory condition when allocating physical memory (without mapping). */ +#define VERR_NO_PHYS_MEMORY (-73) +/** The address (virtual or physical) is too big. */ +#define VERR_ADDRESS_TOO_BIG (-74) +/** Failed to map a memory object. */ +#define VERR_MAP_FAILED (-75) +/** Trailing characters. */ +#define VERR_TRAILING_CHARS (-76) +/** Trailing characters. */ +#define VWRN_TRAILING_CHARS 76 +/** Trailing spaces. */ +#define VERR_TRAILING_SPACES (-77) +/** Trailing spaces. */ +#define VWRN_TRAILING_SPACES 77 +/** Generic not found error. */ +#define VERR_NOT_FOUND (-78) +/** Generic not found warning. */ +#define VWRN_NOT_FOUND 78 +/** Generic invalid state error. */ +#define VERR_INVALID_STATE (-79) +/** Generic invalid state warning. */ +#define VWRN_INVALID_STATE 79 +/** Generic out of resources error. */ +#define VERR_OUT_OF_RESOURCES (-80) +/** Generic out of resources warning. */ +#define VWRN_OUT_OF_RESOURCES 80 +/** No more handles available, too many open handles. */ +#define VERR_NO_MORE_HANDLES (-81) +/** Preemption is disabled. + * The requested operation can only be performed when preemption is enabled. */ +#define VERR_PREEMPT_DISABLED (-82) +/** End of string. */ +#define VERR_END_OF_STRING (-83) +/** End of string. */ +#define VINF_END_OF_STRING 83 +/** A page count is out of range. */ +#define VERR_PAGE_COUNT_OUT_OF_RANGE (-84) +/** Generic object destroyed status. */ +#define VERR_OBJECT_DESTROYED (-85) +/** Generic object was destroyed by the call status. */ +#define VINF_OBJECT_DESTROYED 85 +/** Generic dangling objects status. */ +#define VERR_DANGLING_OBJECTS (-86) +/** Generic dangling objects status. */ +#define VWRN_DANGLING_OBJECTS 86 +/** Invalid Base64 encoding. */ +#define VERR_INVALID_BASE64_ENCODING (-87) +/** Return instigated by a callback or similar. */ +#define VERR_CALLBACK_RETURN (-88) +/** Return instigated by a callback or similar. */ +#define VINF_CALLBACK_RETURN 88 +/** Authentication failure. */ +#define VERR_AUTHENTICATION_FAILURE (-89) +/** Not a power of two. */ +#define VERR_NOT_POWER_OF_TWO (-90) +/** Status code, typically given as a parameter, that isn't supposed to be used. */ +#define VERR_IGNORED (-91) +/** Concurrent access to the object is not allowed. */ +#define VERR_CONCURRENT_ACCESS (-92) +/** The caller does not have a reference to the object. + * This status is used when two threads is caught sharing the same object + * reference. */ +#define VERR_CALLER_NO_REFERENCE (-93) +/** Generic no change error. */ +#define VERR_NO_CHANGE (-95) +/** Generic no change info. */ +#define VINF_NO_CHANGE 95 +/** Out of memory condition when allocating executable memory. */ +#define VERR_NO_EXEC_MEMORY (-96) +/** The alignment is not supported. */ +#define VERR_UNSUPPORTED_ALIGNMENT (-97) +/** The alignment is not really supported, however we got lucky with this + * allocation. */ +#define VINF_UNSUPPORTED_ALIGNMENT 97 +/** Duplicate something. */ +#define VERR_DUPLICATE (-98) +/** Something is missing. */ +#define VERR_MISSING (-99) +/** An unexpected (/unknown) exception was caught. */ +#define VERR_UNEXPECTED_EXCEPTION (-22400) +/** Buffer underflow. */ +#define VERR_BUFFER_UNDERFLOW (-22401) +/** Buffer underflow. */ +#define VINF_BUFFER_UNDERFLOW 22401 +/** Uneven input. */ +#define VERR_UNEVEN_INPUT (-22402) +/** Something is not available or not working properly. */ +#define VERR_NOT_AVAILABLE (-22403) +/** The RTPROC_FLAGS_DETACHED flag isn't supported. */ +#define VERR_PROC_DETACH_NOT_SUPPORTED (-22404) +/** An account is restricted in a certain way. */ +#define VERR_ACCOUNT_RESTRICTED (-22405) +/** An account is restricted in a certain way. */ +#define VINF_ACCOUNT_RESTRICTED 22405 +/** Not able satisfy all the requirements of the request. */ +#define VERR_UNABLE_TO_SATISFY_REQUIREMENTS (-22406) +/** Not able satisfy all the requirements of the request. */ +#define VWRN_UNABLE_TO_SATISFY_REQUIREMENTS 22406 +/** The requested allocation is too big. */ +#define VERR_ALLOCATION_TOO_BIG (-22407) +/** Mismatch. */ +#define VERR_MISMATCH (-22408) +/** Wrong type. */ +#define VERR_WRONG_TYPE (-22409) +/** This indicates that the process does not have sufficient privileges to + * perform the operation. */ +#define VERR_PRIVILEGE_NOT_HELD (-22410) +/** Process does not have the trusted code base (TCB) privilege needed for user + * authentication or/and process creation as a given user. TCB is also called + * 'Act as part of the operating system'. */ +#define VERR_PROC_TCB_PRIV_NOT_HELD (-22411) +/** Process does not have the assign primary token (APT) privilege needed + * for creating process as a given user. APT is also called 'Replace a process + * level token'. */ +#define VERR_PROC_APT_PRIV_NOT_HELD (-22412) +/** Process does not have the increase quota (IQ) privilege needed for + * creating a process as a given user. IQ is also called 'Increase quotas'. */ +#define VERR_PROC_IQ_PRIV_NOT_HELD (-22413) +/** @} */ + + +/** @name Common File/Disk/Pipe/etc Status Codes + * @{ + */ +/** Unresolved (unknown) file i/o error. */ +#define VERR_FILE_IO_ERROR (-100) +/** File/Device open failed. */ +#define VERR_OPEN_FAILED (-101) +/** File not found. */ +#define VERR_FILE_NOT_FOUND (-102) +/** Path not found. */ +#define VERR_PATH_NOT_FOUND (-103) +/** Invalid (malformed) file/path name. */ +#define VERR_INVALID_NAME (-104) +/** The object in question already exists. */ +#define VERR_ALREADY_EXISTS (-105) +/** The object in question already exists. */ +#define VWRN_ALREADY_EXISTS 105 +/** Too many open files. */ +#define VERR_TOO_MANY_OPEN_FILES (-106) +/** Seek error. */ +#define VERR_SEEK (-107) +/** Seek below file start. */ +#define VERR_NEGATIVE_SEEK (-108) +/** Trying to seek on device. */ +#define VERR_SEEK_ON_DEVICE (-109) +/** Reached the end of the file. */ +#define VERR_EOF (-110) +/** Reached the end of the file. */ +#define VINF_EOF 110 +/** Generic file read error. */ +#define VERR_READ_ERROR (-111) +/** Generic file write error. */ +#define VERR_WRITE_ERROR (-112) +/** Write protect error. */ +#define VERR_WRITE_PROTECT (-113) +/** Sharing violation, file is being used by another process. */ +#define VERR_SHARING_VIOLATION (-114) +/** Unable to lock a region of a file. */ +#define VERR_FILE_LOCK_FAILED (-115) +/** File access error, another process has locked a portion of the file. */ +#define VERR_FILE_LOCK_VIOLATION (-116) +/** File or directory can't be created. */ +#define VERR_CANT_CREATE (-117) +/** Directory can't be deleted. */ +#define VERR_CANT_DELETE_DIRECTORY (-118) +/** Can't move file to another disk. */ +#define VERR_NOT_SAME_DEVICE (-119) +/** The filename or extension is too long. */ +#define VERR_FILENAME_TOO_LONG (-120) +/** Media not present in drive. */ +#define VERR_MEDIA_NOT_PRESENT (-121) +/** The type of media was not recognized. Not formatted? */ +#define VERR_MEDIA_NOT_RECOGNIZED (-122) +/** Can't unlock - region was not locked. */ +#define VERR_FILE_NOT_LOCKED (-123) +/** Unrecoverable error: lock was lost. */ +#define VERR_FILE_LOCK_LOST (-124) +/** Can't delete directory with files. */ +#define VERR_DIR_NOT_EMPTY (-125) +/** A directory operation was attempted on a non-directory object. */ +#define VERR_NOT_A_DIRECTORY (-126) +/** A non-directory operation was attempted on a directory object. */ +#define VERR_IS_A_DIRECTORY (-127) +/** Tried to grow a file beyond the limit imposed by the process or the filesystem. */ +#define VERR_FILE_TOO_BIG (-128) +/** No pending request the aio context has to wait for completion. */ +#define VERR_FILE_AIO_NO_REQUEST (-129) +/** The request could not be canceled or prepared for another transfer + * because it is still in progress. */ +#define VERR_FILE_AIO_IN_PROGRESS (-130) +/** The request could not be canceled because it already completed. */ +#define VERR_FILE_AIO_COMPLETED (-131) +/** The I/O context couldn't be destroyed because there are still pending requests. */ +#define VERR_FILE_AIO_BUSY (-132) +/** The requests couldn't be submitted because that would exceed the capacity of the context. */ +#define VERR_FILE_AIO_LIMIT_EXCEEDED (-133) +/** The request was canceled. */ +#define VERR_FILE_AIO_CANCELED (-134) +/** The request wasn't submitted so it can't be canceled. */ +#define VERR_FILE_AIO_NOT_SUBMITTED (-135) +/** A request was not prepared and thus could not be submitted. */ +#define VERR_FILE_AIO_NOT_PREPARED (-136) +/** Not all requests could be submitted due to resource shortage. */ +#define VERR_FILE_AIO_INSUFFICIENT_RESSOURCES (-137) +/** Device or resource is busy. */ +#define VERR_RESOURCE_BUSY (-138) +/** A file operation was attempted on a non-file object. */ +#define VERR_NOT_A_FILE (-139) +/** A non-file operation was attempted on a file object. */ +#define VERR_IS_A_FILE (-140) +/** Unexpected filesystem object type. */ +#define VERR_UNEXPECTED_FS_OBJ_TYPE (-141) +/** A path does not start with a root specification. */ +#define VERR_PATH_DOES_NOT_START_WITH_ROOT (-142) +/** A path is relative, expected an absolute path. */ +#define VERR_PATH_IS_RELATIVE (-143) +/** A path is not relative (start with root), expected an relative path. */ +#define VERR_PATH_IS_NOT_RELATIVE (-144) +/** Zero length path. */ +#define VERR_PATH_ZERO_LENGTH (-145) +/** There are not enough events available on the host to create the I/O context. + * This exact meaning is host platform dependent. */ +#define VERR_FILE_AIO_INSUFFICIENT_EVENTS (-146) +/** @} */ + + +/** @name Generic Filesystem I/O Status Codes + * @{ + */ +/** Unresolved (unknown) disk i/o error. */ +#define VERR_DISK_IO_ERROR (-150) +/** Invalid drive number. */ +#define VERR_INVALID_DRIVE (-151) +/** Disk is full. */ +#define VERR_DISK_FULL (-152) +/** Disk was changed. */ +#define VERR_DISK_CHANGE (-153) +/** Drive is locked. */ +#define VERR_DRIVE_LOCKED (-154) +/** The specified disk or diskette cannot be accessed. */ +#define VERR_DISK_INVALID_FORMAT (-155) +/** Too many symbolic links. */ +#define VERR_TOO_MANY_SYMLINKS (-156) +/** The OS does not support setting the time stamps on a symbolic link. */ +#define VERR_NS_SYMLINK_SET_TIME (-157) +/** The OS does not support changing the owner of a symbolic link. */ +#define VERR_NS_SYMLINK_CHANGE_OWNER (-158) +/** @} */ + + +/** @name Generic Directory Enumeration Status Codes + * @{ + */ +/** Unresolved (unknown) search error. */ +#define VERR_SEARCH_ERROR (-200) +/** No more files found. */ +#define VERR_NO_MORE_FILES (-201) +/** No more search handles available. */ +#define VERR_NO_MORE_SEARCH_HANDLES (-202) +/** RTDirReadEx() failed to retrieve the extra data which was requested. */ +#define VWRN_NO_DIRENT_INFO 203 +/** @} */ + + +/** @name Internal Processing Errors + * @{ + */ +/** Internal error - this should never happen. */ +#define VERR_INTERNAL_ERROR (-225) +/** Internal error no. 2. */ +#define VERR_INTERNAL_ERROR_2 (-226) +/** Internal error no. 3. */ +#define VERR_INTERNAL_ERROR_3 (-227) +/** Internal error no. 4. */ +#define VERR_INTERNAL_ERROR_4 (-228) +/** Internal error no. 5. */ +#define VERR_INTERNAL_ERROR_5 (-229) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_STATUS (-230) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_INFO_STATUS (-231) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_ERROR_STATUS (-232) +/** Internal error: Uninitialized status code. + * @remarks This is used by value elsewhere. */ +#define VERR_IPE_UNINITIALIZED_STATUS (-233) +/** Internal error: Supposedly unreachable default case in a switch. */ +#define VERR_IPE_NOT_REACHED_DEFAULT_CASE (-234) +/** @} */ + + +/** @name Generic Device I/O Status Codes + * @{ + */ +/** Unresolved (unknown) device i/o error. */ +#define VERR_DEV_IO_ERROR (-250) +/** Device i/o: Bad unit. */ +#define VERR_IO_BAD_UNIT (-251) +/** Device i/o: Not ready. */ +#define VERR_IO_NOT_READY (-252) +/** Device i/o: Bad command. */ +#define VERR_IO_BAD_COMMAND (-253) +/** Device i/o: CRC error. */ +#define VERR_IO_CRC (-254) +/** Device i/o: Bad length. */ +#define VERR_IO_BAD_LENGTH (-255) +/** Device i/o: Sector not found. */ +#define VERR_IO_SECTOR_NOT_FOUND (-256) +/** Device i/o: General failure. */ +#define VERR_IO_GEN_FAILURE (-257) +/** @} */ + + +/** @name Generic Pipe I/O Status Codes + * @{ + */ +/** Unresolved (unknown) pipe i/o error. */ +#define VERR_PIPE_IO_ERROR (-300) +/** Broken pipe. */ +#define VERR_BROKEN_PIPE (-301) +/** Bad pipe. */ +#define VERR_BAD_PIPE (-302) +/** Pipe is busy. */ +#define VERR_PIPE_BUSY (-303) +/** No data in pipe. */ +#define VERR_NO_DATA (-304) +/** Pipe is not connected. */ +#define VERR_PIPE_NOT_CONNECTED (-305) +/** More data available in pipe. */ +#define VERR_MORE_DATA (-306) +/** Expected read pipe, got a write pipe instead. */ +#define VERR_PIPE_NOT_READ (-307) +/** Expected write pipe, got a read pipe instead. */ +#define VERR_PIPE_NOT_WRITE (-308) +/** @} */ + + +/** @name Generic Semaphores Status Codes + * @{ + */ +/** Unresolved (unknown) semaphore error. */ +#define VERR_SEM_ERROR (-350) +/** Too many semaphores. */ +#define VERR_TOO_MANY_SEMAPHORES (-351) +/** Exclusive semaphore is owned by another process. */ +#define VERR_EXCL_SEM_ALREADY_OWNED (-352) +/** The semaphore is set and cannot be closed. */ +#define VERR_SEM_IS_SET (-353) +/** The semaphore cannot be set again. */ +#define VERR_TOO_MANY_SEM_REQUESTS (-354) +/** Attempt to release mutex not owned by caller. */ +#define VERR_NOT_OWNER (-355) +/** The semaphore has been opened too many times. */ +#define VERR_TOO_MANY_OPENS (-356) +/** The maximum posts for the event semaphore has been reached. */ +#define VERR_TOO_MANY_POSTS (-357) +/** The event semaphore has already been posted. */ +#define VERR_ALREADY_POSTED (-358) +/** The event semaphore has already been reset. */ +#define VERR_ALREADY_RESET (-359) +/** The semaphore is in use. */ +#define VERR_SEM_BUSY (-360) +/** The previous ownership of this semaphore has ended. */ +#define VERR_SEM_OWNER_DIED (-361) +/** Failed to open semaphore by name - not found. */ +#define VERR_SEM_NOT_FOUND (-362) +/** Semaphore destroyed while waiting. */ +#define VERR_SEM_DESTROYED (-363) +/** Nested ownership requests are not permitted for this semaphore type. */ +#define VERR_SEM_NESTED (-364) +/** The release call only release a semaphore nesting, i.e. the caller is still + * holding the semaphore. */ +#define VINF_SEM_NESTED (364) +/** Deadlock detected. */ +#define VERR_DEADLOCK (-365) +/** Ping-Pong listen or speak out of turn error. */ +#define VERR_SEM_OUT_OF_TURN (-366) +/** Tried to take a semaphore in a bad context. */ +#define VERR_SEM_BAD_CONTEXT (-367) +/** Don't spin for the semaphore, but it is safe to try grab it. */ +#define VINF_SEM_BAD_CONTEXT (367) +/** Wrong locking order detected. */ +#define VERR_SEM_LV_WRONG_ORDER (-368) +/** Wrong release order detected. */ +#define VERR_SEM_LV_WRONG_RELEASE_ORDER (-369) +/** Attempt to recursively enter a non-recursive lock. */ +#define VERR_SEM_LV_NESTED (-370) +/** Invalid parameters passed to the lock validator. */ +#define VERR_SEM_LV_INVALID_PARAMETER (-371) +/** The lock validator detected a deadlock. */ +#define VERR_SEM_LV_DEADLOCK (-372) +/** The lock validator detected an existing deadlock. + * The deadlock was not caused by the current operation, but existed already. */ +#define VERR_SEM_LV_EXISTING_DEADLOCK (-373) +/** Not the lock owner according our records. */ +#define VERR_SEM_LV_NOT_OWNER (-374) +/** An illegal lock upgrade was attempted. */ +#define VERR_SEM_LV_ILLEGAL_UPGRADE (-375) +/** The thread is not a valid signaller of the event. */ +#define VERR_SEM_LV_NOT_SIGNALLER (-376) +/** Internal error in the lock validator or related components. */ +#define VERR_SEM_LV_INTERNAL_ERROR (-377) +/** @} */ + + +/** @name Generic Network I/O Status Codes + * @{ + */ +/** Unresolved (unknown) network error. */ +#define VERR_NET_IO_ERROR (-400) +/** The network is busy or is out of resources. */ +#define VERR_NET_OUT_OF_RESOURCES (-401) +/** Net host name not found. */ +#define VERR_NET_HOST_NOT_FOUND (-402) +/** Network path not found. */ +#define VERR_NET_PATH_NOT_FOUND (-403) +/** General network printing error. */ +#define VERR_NET_PRINT_ERROR (-404) +/** The machine is not on the network. */ +#define VERR_NET_NO_NETWORK (-405) +/** Name is not unique on the network. */ +#define VERR_NET_NOT_UNIQUE_NAME (-406) + +/* These are BSD networking error codes - numbers correspond, don't mess! */ +/** Operation in progress. */ +#define VERR_NET_IN_PROGRESS (-436) +/** Operation already in progress. */ +#define VERR_NET_ALREADY_IN_PROGRESS (-437) +/** Attempted socket operation with a non-socket handle. + * (This includes closed handles.) */ +#define VERR_NET_NOT_SOCKET (-438) +/** Destination address required. */ +#define VERR_NET_DEST_ADDRESS_REQUIRED (-439) +/** Message too long. */ +#define VERR_NET_MSG_SIZE (-440) +/** Protocol wrong type for socket. */ +#define VERR_NET_PROTOCOL_TYPE (-441) +/** Protocol not available. */ +#define VERR_NET_PROTOCOL_NOT_AVAILABLE (-442) +/** Protocol not supported. */ +#define VERR_NET_PROTOCOL_NOT_SUPPORTED (-443) +/** Socket type not supported. */ +#define VERR_NET_SOCKET_TYPE_NOT_SUPPORTED (-444) +/** Operation not supported. */ +#define VERR_NET_OPERATION_NOT_SUPPORTED (-445) +/** Protocol family not supported. */ +#define VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED (-446) +/** Address family not supported by protocol family. */ +#define VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED (-447) +/** Address already in use. */ +#define VERR_NET_ADDRESS_IN_USE (-448) +/** Can't assign requested address. */ +#define VERR_NET_ADDRESS_NOT_AVAILABLE (-449) +/** Network is down. */ +#define VERR_NET_DOWN (-450) +/** Network is unreachable. */ +#define VERR_NET_UNREACHABLE (-451) +/** Network dropped connection on reset. */ +#define VERR_NET_CONNECTION_RESET (-452) +/** Software caused connection abort. */ +#define VERR_NET_CONNECTION_ABORTED (-453) +/** Connection reset by peer. */ +#define VERR_NET_CONNECTION_RESET_BY_PEER (-454) +/** No buffer space available. */ +#define VERR_NET_NO_BUFFER_SPACE (-455) +/** Socket is already connected. */ +#define VERR_NET_ALREADY_CONNECTED (-456) +/** Socket is not connected. */ +#define VERR_NET_NOT_CONNECTED (-457) +/** Can't send after socket shutdown. */ +#define VERR_NET_SHUTDOWN (-458) +/** Too many references: can't splice. */ +#define VERR_NET_TOO_MANY_REFERENCES (-459) +/** Too many references: can't splice. */ +#define VERR_NET_CONNECTION_TIMED_OUT (-460) +/** Connection refused. */ +#define VERR_NET_CONNECTION_REFUSED (-461) +/* ELOOP is not net. */ +/* ENAMETOOLONG is not net. */ +/** Host is down. */ +#define VERR_NET_HOST_DOWN (-464) +/** No route to host. */ +#define VERR_NET_HOST_UNREACHABLE (-465) +/** Protocol error. */ +#define VERR_NET_PROTOCOL_ERROR (-466) +/** Incomplete packet was submitted by guest. */ +#define VERR_NET_INCOMPLETE_TX_PACKET (-467) +/** @} */ + + +/** @name TCP Status Codes + * @{ + */ +/** Stop the TCP server. */ +#define VERR_TCP_SERVER_STOP (-500) +/** The server was stopped. */ +#define VINF_TCP_SERVER_STOP 500 +/** The TCP server was shut down using RTTcpServerShutdown. */ +#define VERR_TCP_SERVER_SHUTDOWN (-501) +/** The TCP server was destroyed. */ +#define VERR_TCP_SERVER_DESTROYED (-502) +/** The TCP server has no client associated with it. */ +#define VINF_TCP_SERVER_NO_CLIENT 503 +/** @} */ + + +/** @name UDP Status Codes + * @{ + */ +/** Stop the UDP server. */ +#define VERR_UDP_SERVER_STOP (-520) +/** The server was stopped. */ +#define VINF_UDP_SERVER_STOP 520 +/** The UDP server was shut down using RTUdpServerShutdown. */ +#define VERR_UDP_SERVER_SHUTDOWN (-521) +/** The UDP server was destroyed. */ +#define VERR_UDP_SERVER_DESTROYED (-522) +/** The UDP server has no client associated with it. */ +#define VINF_UDP_SERVER_NO_CLIENT 523 +/** @} */ + + +/** @name L4 Specific Status Codes + * @{ + */ +/** Invalid offset in an L4 dataspace */ +#define VERR_L4_INVALID_DS_OFFSET (-550) +/** IPC error */ +#define VERR_IPC (-551) +/** Item already used */ +#define VERR_RESOURCE_IN_USE (-552) +/** Source/destination not found */ +#define VERR_IPC_PROCESS_NOT_FOUND (-553) +/** Receive timeout */ +#define VERR_IPC_RECEIVE_TIMEOUT (-554) +/** Send timeout */ +#define VERR_IPC_SEND_TIMEOUT (-555) +/** Receive cancelled */ +#define VERR_IPC_RECEIVE_CANCELLED (-556) +/** Send cancelled */ +#define VERR_IPC_SEND_CANCELLED (-557) +/** Receive aborted */ +#define VERR_IPC_RECEIVE_ABORTED (-558) +/** Send aborted */ +#define VERR_IPC_SEND_ABORTED (-559) +/** Couldn't map pages during receive */ +#define VERR_IPC_RECEIVE_MAP_FAILED (-560) +/** Couldn't map pages during send */ +#define VERR_IPC_SEND_MAP_FAILED (-561) +/** Send pagefault timeout in receive */ +#define VERR_IPC_RECEIVE_SEND_PF_TIMEOUT (-562) +/** Send pagefault timeout in send */ +#define VERR_IPC_SEND_SEND_PF_TIMEOUT (-563) +/** (One) receive buffer was too small, or too few buffers */ +#define VINF_IPC_RECEIVE_MSG_CUT 564 +/** (One) send buffer was too small, or too few buffers */ +#define VINF_IPC_SEND_MSG_CUT 565 +/** Dataspace manager server not found */ +#define VERR_L4_DS_MANAGER_NOT_FOUND (-566) +/** @} */ + + +/** @name Loader Status Codes. + * @{ + */ +/** Invalid executable signature. */ +#define VERR_INVALID_EXE_SIGNATURE (-600) +/** The iprt loader recognized a ELF image, but doesn't support loading it. */ +#define VERR_ELF_EXE_NOT_SUPPORTED (-601) +/** The iprt loader recognized a PE image, but doesn't support loading it. */ +#define VERR_PE_EXE_NOT_SUPPORTED (-602) +/** The iprt loader recognized a LX image, but doesn't support loading it. */ +#define VERR_LX_EXE_NOT_SUPPORTED (-603) +/** The iprt loader recognized a LE image, but doesn't support loading it. */ +#define VERR_LE_EXE_NOT_SUPPORTED (-604) +/** The iprt loader recognized a NE image, but doesn't support loading it. */ +#define VERR_NE_EXE_NOT_SUPPORTED (-605) +/** The iprt loader recognized a MZ image, but doesn't support loading it. */ +#define VERR_MZ_EXE_NOT_SUPPORTED (-606) +/** The iprt loader recognized an a.out image, but doesn't support loading it. */ +#define VERR_AOUT_EXE_NOT_SUPPORTED (-607) +/** Bad executable. */ +#define VERR_BAD_EXE_FORMAT (-608) +/** Symbol (export) not found. */ +#define VERR_SYMBOL_NOT_FOUND (-609) +/** Module not found. */ +#define VERR_MODULE_NOT_FOUND (-610) +/** The loader resolved an external symbol to an address to big for the image format. */ +#define VERR_SYMBOL_VALUE_TOO_BIG (-611) +/** The image is too big. */ +#define VERR_IMAGE_TOO_BIG (-612) +/** The image base address is to high for this image type. */ +#define VERR_IMAGE_BASE_TOO_HIGH (-614) +/** Mismatching architecture. */ +#define VERR_LDR_ARCH_MISMATCH (-615) +/** Mismatch between IPRT and native loader. */ +#define VERR_LDR_MISMATCH_NATIVE (-616) +/** Failed to resolve an imported (external) symbol. */ +#define VERR_LDR_IMPORTED_SYMBOL_NOT_FOUND (-617) +/** Generic loader failure. */ +#define VERR_LDR_GENERAL_FAILURE (-618) +/** Code signing error. */ +#define VERR_LDR_IMAGE_HASH (-619) +/** The PE loader encountered delayed imports, a feature which hasn't been implemented yet. */ +#define VERR_LDRPE_DELAY_IMPORT (-620) +/** The PE loader encountered a malformed certificate. */ +#define VERR_LDRPE_CERT_MALFORMED (-621) +/** The PE loader encountered a certificate with an unsupported type or structure revision. */ +#define VERR_LDRPE_CERT_UNSUPPORTED (-622) +/** The PE loader doesn't know how to deal with the global pointer data directory entry yet. */ +#define VERR_LDRPE_GLOBALPTR (-623) +/** The PE loader doesn't support the TLS data directory yet. */ +#define VERR_LDRPE_TLS (-624) +/** The PE loader doesn't grok the COM descriptor data directory entry. */ +#define VERR_LDRPE_COM_DESCRIPTOR (-625) +/** The PE loader encountered an unknown load config directory/header size. */ +#define VERR_LDRPE_LOAD_CONFIG_SIZE (-626) +/** The PE loader encountered a lock prefix table, a feature which hasn't been implemented yet. */ +#define VERR_LDRPE_LOCK_PREFIX_TABLE (-627) +/** The ELF loader doesn't handle foreign endianness. */ +#define VERR_LDRELF_ODD_ENDIAN (-630) +/** The ELF image is 'dynamic', the ELF loader can only deal with 'relocatable' images at present. */ +#define VERR_LDRELF_DYN (-631) +/** The ELF image is 'executable', the ELF loader can only deal with 'relocatable' images at present. */ +#define VERR_LDRELF_EXEC (-632) +/** The ELF image was created for an unsupported target machine type. */ +#define VERR_LDRELF_MACHINE (-633) +/** The ELF version is not supported. */ +#define VERR_LDRELF_VERSION (-634) +/** The ELF loader cannot handle multiple SYMTAB sections. */ +#define VERR_LDRELF_MULTIPLE_SYMTABS (-635) +/** The ELF loader encountered a relocation type which is not implemented. */ +#define VERR_LDRELF_RELOCATION_NOT_SUPPORTED (-636) +/** The ELF loader encountered a bad symbol index. */ +#define VERR_LDRELF_INVALID_SYMBOL_INDEX (-637) +/** The ELF loader encountered an invalid symbol name offset. */ +#define VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET (-638) +/** The ELF loader encountered an invalid relocation offset. */ +#define VERR_LDRELF_INVALID_RELOCATION_OFFSET (-639) +/** The ELF loader didn't find the symbol/string table for the image. */ +#define VERR_LDRELF_NO_SYMBOL_OR_NO_STRING_TABS (-640) +/** Invalid link address. */ +#define VERR_LDR_INVALID_LINK_ADDRESS (-647) +/** Invalid image relative virtual address. */ +#define VERR_LDR_INVALID_RVA (-648) +/** Invalid segment:offset address. */ +#define VERR_LDR_INVALID_SEG_OFFSET (-649) +/** @}*/ + +/** @name Debug Info Reader Status Codes. + * @{ + */ +/** The module contains no line number information. */ +#define VERR_DBG_NO_LINE_NUMBERS (-650) +/** The module contains no symbol information. */ +#define VERR_DBG_NO_SYMBOLS (-651) +/** The specified segment:offset address was invalid. Typically an attempt at + * addressing outside the segment boundary. */ +#define VERR_DBG_INVALID_ADDRESS (-652) +/** Invalid segment index. */ +#define VERR_DBG_INVALID_SEGMENT_INDEX (-653) +/** Invalid segment offset. */ +#define VERR_DBG_INVALID_SEGMENT_OFFSET (-654) +/** Invalid image relative virtual address. */ +#define VERR_DBG_INVALID_RVA (-655) +/** Invalid image relative virtual address. */ +#define VERR_DBG_SPECIAL_SEGMENT (-656) +/** Address conflict within a module/segment. + * Attempted to add a segment, symbol or line number that fully or partially + * overlaps with an existing one. */ +#define VERR_DBG_ADDRESS_CONFLICT (-657) +/** Duplicate symbol within the module. + * Attempted to add a symbol which name already exists within the module. */ +#define VERR_DBG_DUPLICATE_SYMBOL (-658) +/** The segment index specified when adding a new segment is already in use. */ +#define VERR_DBG_SEGMENT_INDEX_CONFLICT (-659) +/** No line number was found for the specified address/ordinal/whatever. */ +#define VERR_DBG_LINE_NOT_FOUND (-660) +/** The length of the symbol name is out of range. + * This means it is an empty string or that it's greater or equal to + * RTDBG_SYMBOL_NAME_LENGTH. */ +#define VERR_DBG_SYMBOL_NAME_OUT_OF_RANGE (-661) +/** The length of the file name is out of range. + * This means it is an empty string or that it's greater or equal to + * RTDBG_FILE_NAME_LENGTH. */ +#define VERR_DBG_FILE_NAME_OUT_OF_RANGE (-662) +/** The length of the segment name is out of range. + * This means it is an empty string or that it is greater or equal to + * RTDBG_SEGMENT_NAME_LENGTH. */ +#define VERR_DBG_SEGMENT_NAME_OUT_OF_RANGE (-663) +/** The specified address range wraps around. */ +#define VERR_DBG_ADDRESS_WRAP (-664) +/** The file is not a valid NM map file. */ +#define VERR_DBG_NOT_NM_MAP_FILE (-665) +/** The file is not a valid /proc/kallsyms file. */ +#define VERR_DBG_NOT_LINUX_KALLSYMS (-666) +/** No debug module interpreter matching the debug info. */ +#define VERR_DBG_NO_MATCHING_INTERPRETER (-667) +/** Bad DWARF line number header. */ +#define VERR_DWARF_BAD_LINE_NUMBER_HEADER (-668) +/** Unexpected end of DWARF unit. */ +#define VERR_DWARF_UNEXPECTED_END (-669) +/** DWARF LEB value overflows the decoder type. */ +#define VERR_DWARF_LEB_OVERFLOW (-670) +/** Bad DWARF extended line number opcode. */ +#define VERR_DWARF_BAD_LNE (-671) +/** Bad DWARF string. */ +#define VERR_DWARF_BAD_STRING (-672) +/** Bad DWARF position. */ +#define VERR_DWARF_BAD_POS (-673) +/** Bad DWARF info. */ +#define VERR_DWARF_BAD_INFO (-674) +/** Bad DWARF abbreviation data. */ +#define VERR_DWARF_BAD_ABBREV (-675) +/** A DWARF abbreviation was not found. */ +#define VERR_DWARF_ABBREV_NOT_FOUND (-676) +/** Encountered an unknown attribute form. */ +#define VERR_DWARF_UNKNOWN_FORM (-677) +/** Encountered an unexpected attribute form. */ +#define VERR_DWARF_UNEXPECTED_FORM (-678) +/** Unfinished code. */ +#define VERR_DWARF_TODO (-679) +/** Unknown location opcode. */ +#define VERR_DWARF_UNKNOWN_LOC_OPCODE (-680) +/** Expression stack overflow. */ +#define VERR_DWARF_STACK_OVERFLOW (-681) +/** Expression stack underflow. */ +#define VERR_DWARF_STACK_UNDERFLOW (-682) +/** Internal processing error in the DWARF code. */ +#define VERR_DWARF_IPE (-683) +/** Invalid configuration property value. */ +#define VERR_DBG_CFG_INVALID_VALUE (-684) +/** Not an integer property. */ +#define VERR_DBG_CFG_NOT_UINT_PROP (-685) +/** Deferred loading of information failed. */ +#define VERR_DBG_DEFERRED_LOAD_FAILED (-686) +/** Unfinished debug info reader code. */ +#define VERR_DBG_TODO (-687) +/** Found file, but it didn't match the search criteria. */ +#define VERR_DBG_FILE_MISMATCH (-688) +/** Internal processing error in the debug module reader code. */ +#define VERR_DBG_MOD_IPE (-689) +/** The symbol size was adjusted while adding it. */ +#define VINF_DBG_ADJUSTED_SYM_SIZE 690 +/** Unable to parse the CodeView debug information. */ +#define VERR_CV_BAD_FORMAT (-691) +/** Unfinished CodeView debug information feature. */ +#define VERR_CV_TODO (-692) +/** Internal processing error the CodeView debug information reader. */ +#define VERR_CV_IPE (-693) +/** @} */ + +/** @name Request Packet Status Codes. + * @{ + */ +/** Invalid RT request type. + * For the RTReqAlloc() case, the caller just specified an illegal enmType. For + * all the other occurrences it means indicates corruption, broken logic, or stupid + * interface user. */ +#define VERR_RT_REQUEST_INVALID_TYPE (-700) +/** Invalid RT request state. + * The state of the request packet was not the expected and accepted one(s). Either + * the interface user screwed up, or we've got corruption/broken logic. */ +#define VERR_RT_REQUEST_STATE (-701) +/** Invalid RT request packet. + * One or more of the RT controlled packet members didn't contain the correct + * values. Some thing's broken. */ +#define VERR_RT_REQUEST_INVALID_PACKAGE (-702) +/** The status field has not been updated yet as the request is still + * pending completion. Someone queried the iStatus field before the request + * has been fully processed. */ +#define VERR_RT_REQUEST_STATUS_STILL_PENDING (-703) +/** The request has been freed, don't read the status now. + * Someone is reading the iStatus field of a freed request packet. */ +#define VERR_RT_REQUEST_STATUS_FREED (-704) +/** @} */ + +/** @name Environment Status Code + * @{ + */ +/** The specified environment variable was not found. (RTEnvGetEx) */ +#define VERR_ENV_VAR_NOT_FOUND (-750) +/** The specified environment variable was not found. (RTEnvUnsetEx) */ +#define VINF_ENV_VAR_NOT_FOUND (750) +/** Unable to translate all the variables in the default environment due to + * codeset issues (LANG / LC_ALL / LC_CTYPE). */ +#define VWRN_ENV_NOT_FULLY_TRANSLATED (751) +/** Invalid environment variable name. */ +#define VERR_ENV_INVALID_VAR_NAME (-752) +/** The environment variable is an unset record. */ +#define VINF_ENV_VAR_UNSET (753) +/** The environment variable has been recorded as being unset. */ +#define VERR_ENV_VAR_UNSET (-753) +/** @} */ + +/** @name Multiprocessor Status Codes. + * @{ + */ +/** The specified cpu is offline. */ +#define VERR_CPU_OFFLINE (-800) +/** The specified cpu was not found. */ +#define VERR_CPU_NOT_FOUND (-801) +/** Not all of the requested CPUs showed up in the PFNRTMPWORKER. */ +#define VERR_NOT_ALL_CPUS_SHOWED (-802) +/** Internal processing error in the RTMp code.*/ +#define VERR_CPU_IPE_1 (-803) +/** @} */ + +/** @name RTGetOpt status codes + * @{ */ +/** RTGetOpt: Command line option not recognized. */ +#define VERR_GETOPT_UNKNOWN_OPTION (-825) +/** RTGetOpt: Command line option needs argument. */ +#define VERR_GETOPT_REQUIRED_ARGUMENT_MISSING (-826) +/** RTGetOpt: Command line option has argument with bad format. */ +#define VERR_GETOPT_INVALID_ARGUMENT_FORMAT (-827) +/** RTGetOpt: Not an option. */ +#define VINF_GETOPT_NOT_OPTION 828 +/** RTGetOpt: Command line option needs an index. */ +#define VERR_GETOPT_INDEX_MISSING (-829) +/** @} */ + +/** @name RTCache status codes + * @{ */ +/** RTCache: cache is full. */ +#define VERR_CACHE_FULL (-850) +/** RTCache: cache is empty. */ +#define VERR_CACHE_EMPTY (-851) +/** @} */ + +/** @name RTMemCache status codes + * @{ */ +/** Reached the max cache size. */ +#define VERR_MEM_CACHE_MAX_SIZE (-855) +/** @} */ + +/** @name RTS3 status codes + * @{ */ +/** Access denied error. */ +#define VERR_S3_ACCESS_DENIED (-875) +/** The bucket/key wasn't found. */ +#define VERR_S3_NOT_FOUND (-876) +/** Bucket already exists. */ +#define VERR_S3_BUCKET_ALREADY_EXISTS (-877) +/** Can't delete bucket with keys. */ +#define VERR_S3_BUCKET_NOT_EMPTY (-878) +/** The current operation was canceled. */ +#define VERR_S3_CANCELED (-879) +/** @} */ + +/** @name HTTP status codes + * @{ */ +/** HTTP initialization failed. */ +#define VERR_HTTP_INIT_FAILED (-885) +/** The server has not found anything matching the URI given. */ +#define VERR_HTTP_NOT_FOUND (-886) +/** The request is for something forbidden. Authorization will not help. */ +#define VERR_HTTP_ACCESS_DENIED (-887) +/** The server did not understand the request due to bad syntax. */ +#define VERR_HTTP_BAD_REQUEST (-888) +/** Couldn't connect to the server (proxy?). */ +#define VERR_HTTP_COULDNT_CONNECT (-889) +/** SSL connection error. */ +#define VERR_HTTP_SSL_CONNECT_ERROR (-890) +/** CAcert is missing or has the wrong format. */ +#define VERR_HTTP_CACERT_WRONG_FORMAT (-891) +/** Certificate cannot be authenticated with the given CA certificates. */ +#define VERR_HTTP_CACERT_CANNOT_AUTHENTICATE (-892) +/** The current HTTP request was forcefully aborted */ +#define VERR_HTTP_ABORTED (-893) +/** Request was redirected. */ +#define VERR_HTTP_REDIRECTED (-894) +/** Proxy couldn't be resolved. */ +#define VERR_HTTP_PROXY_NOT_FOUND (-895) +/** The remote host couldn't be resolved. */ +#define VERR_HTTP_HOST_NOT_FOUND (-896) +/** Unexpected cURL error configure the proxy. */ +#define VERR_HTTP_CURL_PROXY_CONFIG (-897) +/** Generic CURL error. */ +#define VERR_HTTP_CURL_ERROR (-899) +/** @} */ + +/** @name RTManifest status codes + * @{ */ +/** A digest type used in the manifest file isn't supported. */ +#define VERR_MANIFEST_UNSUPPORTED_DIGEST_TYPE (-900) +/** An entry in the manifest file couldn't be interpreted correctly. */ +#define VERR_MANIFEST_WRONG_FILE_FORMAT (-901) +/** A digest doesn't match the corresponding file. */ +#define VERR_MANIFEST_DIGEST_MISMATCH (-902) +/** The file list doesn't match to the content of the manifest file. */ +#define VERR_MANIFEST_FILE_MISMATCH (-903) +/** The specified attribute (name) was not found in the manifest. */ +#define VERR_MANIFEST_ATTR_NOT_FOUND (-904) +/** The attribute type did not match. */ +#define VERR_MANIFEST_ATTR_TYPE_MISMATCH (-905) +/** No attribute of the specified types was found. */ +#define VERR_MANIFEST_ATTR_TYPE_NOT_FOUND (-906) +/** @} */ + +/** @name RTTar status codes + * @{ */ +/** The checksum of a tar header record doesn't match. */ +#define VERR_TAR_CHKSUM_MISMATCH (-925) +/** The tar end of file record was read. */ +#define VERR_TAR_END_OF_FILE (-926) +/** The tar file ended unexpectedly. */ +#define VERR_TAR_UNEXPECTED_EOS (-927) +/** The tar termination records was encountered without reaching the end of + * the input stream. */ +#define VERR_TAR_EOS_MORE_INPUT (-928) +/** A number tar header field was malformed. */ +#define VERR_TAR_BAD_NUM_FIELD (-929) +/** A numeric tar header field was not terminated correctly. */ +#define VERR_TAR_BAD_NUM_FIELD_TERM (-930) +/** A number tar header field was encoded using base-256 which this + * tar implementation currently does not support. */ +#define VERR_TAR_BASE_256_NOT_SUPPORTED (-931) +/** A number tar header field yielded a value too large for the internal + * variable of the tar interpreter. */ +#define VERR_TAR_NUM_VALUE_TOO_LARGE (-932) +/** The combined minor and major device number type is too small to hold the + * value stored in the tar header. */ +#define VERR_TAR_DEV_VALUE_TOO_LARGE (-933) +/** The mode field in a tar header is bad. */ +#define VERR_TAR_BAD_MODE_FIELD (-934) +/** The mode field should not include the type. */ +#define VERR_TAR_MODE_WITH_TYPE (-935) +/** The size field should be zero for links and symlinks. */ +#define VERR_TAR_SIZE_NOT_ZERO (-936) +/** Encountered an unknown type flag. */ +#define VERR_TAR_UNKNOWN_TYPE_FLAG (-937) +/** The tar header is all zeros. */ +#define VERR_TAR_ZERO_HEADER (-938) +/** Not a uniform standard tape v0.0 archive header. */ +#define VERR_TAR_NOT_USTAR_V00 (-939) +/** The name is empty. */ +#define VERR_TAR_EMPTY_NAME (-940) +/** A non-directory entry has a name ending with a slash. */ +#define VERR_TAR_NON_DIR_ENDS_WITH_SLASH (-941) +/** Encountered an unsupported portable archive exchange (pax) header. */ +#define VERR_TAR_UNSUPPORTED_PAX_TYPE (-942) +/** Encountered an unsupported Solaris Tar extension. */ +#define VERR_TAR_UNSUPPORTED_SOLARIS_HDR_TYPE (-943) +/** Encountered an unsupported GNU Tar extension. */ +#define VERR_TAR_UNSUPPORTED_GNU_HDR_TYPE (-944) +/** Malformed checksum field in the tar header. */ +#define VERR_TAR_BAD_CHKSUM_FIELD (-945) +/** Malformed checksum field in the tar header. */ +#define VERR_TAR_MALFORMED_GNU_LONGXXXX (-946) +/** Too long name or link string. */ +#define VERR_TAR_NAME_TOO_LONG (-947) +/** A directory entry in the archive. */ +#define VINF_TAR_DIR_PATH (948) +/** @} */ + +/** @name RTPoll status codes + * @{ */ +/** The handle is not pollable. */ +#define VERR_POLL_HANDLE_NOT_POLLABLE (-950) +/** The handle ID is already present in the poll set. */ +#define VERR_POLL_HANDLE_ID_EXISTS (-951) +/** The handle ID was not found in the set. */ +#define VERR_POLL_HANDLE_ID_NOT_FOUND (-952) +/** The poll set is full. */ +#define VERR_POLL_SET_IS_FULL (-953) +/** @} */ + +/** @name Pkzip status codes + * @{ */ +/** No end of central directory record found. */ +#define VERR_PKZIP_NO_EOCB (-960) +/** Too long name string. */ +#define VERR_PKZIP_NAME_TOO_LONG (-961) +/** Local file header corrupt. */ +#define VERR_PKZIP_BAD_LF_HEADER (-962) +/** Central directory file header corrupt. */ +#define VERR_PKZIP_BAD_CDF_HEADER (-963) +/** Encountered an unknown type flag. */ +#define VERR_PKZIP_UNKNOWN_TYPE_FLAG (-964) +/** Found a ZIP64 Extra Information Field in a ZIP32 file. */ +#define VERR_PKZIP_ZIP64EX_IN_ZIP32 (-965) + + +/** @name RTZip status codes + * @{ */ +/** Generic zip error. */ +#define VERR_ZIP_ERROR (-22000) +/** The compressed data was corrupted. */ +#define VERR_ZIP_CORRUPTED (-22001) +/** Ran out of memory while compressing or uncompressing. */ +#define VERR_ZIP_NO_MEMORY (-22002) +/** The compression format version is unsupported. */ +#define VERR_ZIP_UNSUPPORTED_VERSION (-22003) +/** The compression method is unsupported. */ +#define VERR_ZIP_UNSUPPORTED_METHOD (-22004) +/** The compressed data started with a bad header. */ +#define VERR_ZIP_BAD_HEADER (-22005) +/** @} */ + +/** @name RTVfs status codes + * @{ */ +/** The VFS chain specification does not have a valid prefix. */ +#define VERR_VFS_CHAIN_NO_PREFIX (-22100) +/** The VFS chain specification is empty. */ +#define VERR_VFS_CHAIN_EMPTY (-22101) +/** Expected an element. */ +#define VERR_VFS_CHAIN_EXPECTED_ELEMENT (-22102) +/** The VFS object type is not known. */ +#define VERR_VFS_CHAIN_UNKNOWN_TYPE (-22103) +/** Expected a left parentheses. */ +#define VERR_VFS_CHAIN_EXPECTED_LEFT_PARENTHESES (-22104) +/** Expected a right parentheses. */ +#define VERR_VFS_CHAIN_EXPECTED_RIGHT_PARENTHESES (-22105) +/** Expected a provider name. */ +#define VERR_VFS_CHAIN_EXPECTED_PROVIDER_NAME (-22106) +/** Expected an action (> or |). */ +#define VERR_VFS_CHAIN_EXPECTED_ACTION (-22107) +/** Only one action element is currently supported. */ +#define VERR_VFS_CHAIN_MULTIPLE_ACTIONS (-22108) +/** Expected to find a driving action (>), but there is none. */ +#define VERR_VFS_CHAIN_NO_ACTION (-22109) +/** Expected pipe action. */ +#define VERR_VFS_CHAIN_EXPECTED_PIPE (-22110) +/** Unexpected action type. */ +#define VERR_VFS_CHAIN_UNEXPECTED_ACTION_TYPE (-22111) +/** @} */ + +/** @name RTDvm status codes + * @{ */ +/** The volume map doesn't contain any valid volume. */ +#define VERR_DVM_MAP_EMPTY (-22200) +/** There is no volume behind the current one. */ +#define VERR_DVM_MAP_NO_VOLUME (-22201) +/** @} */ + +/** @name Logger status codes + * @{ */ +/** The internal logger revision did not match. */ +#define VERR_LOG_REVISION_MISMATCH (-22300) +/** @} */ + +/* see above, 22400..22499 is used for misc codes! */ + +/** @name Logger status codes + * @{ */ +/** Power off is not supported by the hardware or the OS. */ +#define VERR_SYS_CANNOT_POWER_OFF (-22500) +/** The halt action was requested, but the OS may actually power + * off the machine. */ +#define VINF_SYS_MAY_POWER_OFF (22501) +/** Shutdown failed. */ +#define VERR_SYS_SHUTDOWN_FAILED (-22502) +/** @} */ + +/** @name Filesystem status codes + * @{ */ +/** Filesystem can't be opened because it is corrupt. */ +#define VERR_FILESYSTEM_CORRUPT (-22600) +/** @} */ + +/** @name RTZipXar status codes. + * @{ */ +/** Wrong magic value. */ +#define VERR_XAR_WRONG_MAGIC (-22700) +/** Bad header size. */ +#define VERR_XAR_BAD_HDR_SIZE (-22701) +/** Unsupported version. */ +#define VERR_XAR_UNSUPPORTED_VERSION (-22702) +/** Unsupported hashing function. */ +#define VERR_XAR_UNSUPPORTED_HASH_FUNCTION (-22703) +/** The table of content (TOC) is too small and therefore can't be valid. */ +#define VERR_XAR_TOC_TOO_SMALL (-22704) +/** The table of content (TOC) is too big. */ +#define VERR_XAR_TOC_TOO_BIG (-22705) +/** The compressed table of content is too big. */ +#define VERR_XAR_TOC_TOO_BIG_COMPRESSED (-22706) +/** The uncompressed table of content size in the header didn't match what + * ZLib returned. */ +#define VERR_XAR_TOC_UNCOMP_SIZE_MISMATCH (-22707) +/** The table of content string length didn't match the size specified in the + * header. */ +#define VERR_XAR_TOC_STRLEN_MISMATCH (-22708) +/** The table of content isn't valid UTF-8. */ +#define VERR_XAR_TOC_UTF8_ENCODING (-22709) +/** XML error while parsing the table of content. */ +#define VERR_XAR_TOC_XML_PARSE_ERROR (-22710) +/** The table of content XML document does not have a toc element. */ +#define VERR_XML_TOC_ELEMENT_MISSING (-22711) +/** The table of content XML element (toc) has siblings, we expected it to be + * an only child or the root element (xar). */ +#define VERR_XML_TOC_ELEMENT_HAS_SIBLINGS (-22712) +/** The XAR table of content digest doesn't match. */ +#define VERR_XAR_TOC_DIGEST_MISMATCH (-22713) +/** Bad or missing XAR checksum element. */ +#define VERR_XAR_BAD_CHECKSUM_ELEMENT (-22714) +/** The hash function in the header doesn't match the one in the table of + * content. */ +#define VERR_XAR_HASH_FUNCTION_MISMATCH (-22715) +/** Bad digest length encountered in the table of content. */ +#define VERR_XAR_BAD_DIGEST_LENGTH (-22716) +/** The order of elements in the XAR file does not lend it self to expansion + * from via an I/O stream. */ +#define VERR_XAR_NOT_STREAMBLE_ELEMENT_ORDER (-22717) +/** Missing offset element in table of content sub-element. */ +#define VERR_XAR_MISSING_OFFSET_ELEMENT (-22718) +/** Bad offset element in table of content sub-element. */ +#define VERR_XAR_BAD_OFFSET_ELEMENT (-22719) +/** Missing size element in table of content sub-element. */ +#define VERR_XAR_MISSING_SIZE_ELEMENT (-22720) +/** Bad size element in table of content sub-element. */ +#define VERR_XAR_BAD_SIZE_ELEMENT (-22721) +/** Missing length element in table of content sub-element. */ +#define VERR_XAR_MISSING_LENGTH_ELEMENT (-22722) +/** Bad length element in table of content sub-element. */ +#define VERR_XAR_BAD_LENGTH_ELEMENT (-22723) +/** Bad file element in XAR table of content. */ +#define VERR_XAR_BAD_FILE_ELEMENT (-22724) +/** Missing data element for XAR file. */ +#define VERR_XAR_MISSING_DATA_ELEMENT (-22725) +/** Unknown XAR file type value. */ +#define VERR_XAR_UNKNOWN_FILE_TYPE (-22726) +/** Missing encoding element for XAR data stream. */ +#define VERR_XAR_NO_ENCODING (-22727) +/** Bad timestamp for XAR file. */ +#define VERR_XAR_BAD_FILE_TIMESTAMP (-22728) +/** Bad file mode for XAR file. */ +#define VERR_XAR_BAD_FILE_MODE (-22729) +/** Bad file user id for XAR file. */ +#define VERR_XAR_BAD_FILE_UID (-22730) +/** Bad file group id for XAR file. */ +#define VERR_XAR_BAD_FILE_GID (-22731) +/** Bad file inode device number for XAR file. */ +#define VERR_XAR_BAD_FILE_DEVICE_NO (-22732) +/** Bad file inode number for XAR file. */ +#define VERR_XAR_BAD_FILE_INODE (-22733) +/** Invalid name for XAR file. */ +#define VERR_XAR_INVALID_FILE_NAME (-22734) +/** The message digest of the extracted data does not match the one supplied. */ +#define VERR_XAR_EXTRACTED_HASH_MISMATCH (-22735) +/** The extracted data has exceeded the expected size. */ +#define VERR_XAR_EXTRACTED_SIZE_EXCEEDED (-22736) +/** The message digest of the archived data does not match the one supplied. */ +#define VERR_XAR_ARCHIVED_HASH_MISMATCH (-22737) +/** The decompressor completed without using all the input data. */ +#define VERR_XAR_UNUSED_ARCHIVED_DATA (-22738) +/** Expected the archived and extracted XAR data sizes to be the same for + * uncompressed data. */ +#define VERR_XAR_ARCHIVED_AND_EXTRACTED_SIZES_MISMATCH (-22739) +/** @} */ + +/** @name RTX509 status codes + * @{ */ +/** Error reading a certificate in PEM format from BIO. */ +#define VERR_X509_READING_CERT_FROM_BIO (-23100) +/** Error extracting a public key from the certificate. */ +#define VERR_X509_EXTRACT_PUBKEY_FROM_CERT (-23101) +/** Error extracting RSA from the public key. */ +#define VERR_X509_EXTRACT_RSA_FROM_PUBLIC_KEY (-23102) +/** Signature verification failed. */ +#define VERR_X509_RSA_VERIFICATION_FUILURE (-23103) +/** Basic constraints were not found. */ +#define VERR_X509_NO_BASIC_CONSTARAINTS (-23104) +/** Error getting extensions from the certificate. */ +#define VERR_X509_GETTING_EXTENSION_FROM_CERT (-23105) +/** Error getting a data from the extension. */ +#define VERR_X509_GETTING_DATA_FROM_EXTENSION (-23106) +/** Error formatting an extension. */ +#define VERR_X509_PRINT_EXTENSION_TO_BIO (-23107) +/** X509 certificate verification error. */ +#define VERR_X509_CERTIFICATE_VERIFICATION_FAILURE (-23108) +/** X509 certificate isn't self signed. */ +#define VERR_X509_NOT_SELFSIGNED_CERTIFICATE (-23109) +/** Warning X509 certificate isn't self signed. */ +#define VINF_X509_NOT_SELFSIGNED_CERTIFICATE 23109 +/** @} */ + +/** @name RTAsn1 status codes + * @{ */ +/** Temporary place holder. */ +#define VERR_ASN1_ERROR (-22800) +/** Encountered an ASN.1 string type that is not supported. */ +#define VERR_ASN1_STRING_TYPE_NOT_IMPLEMENTED (-22801) +/** Invalid ASN.1 UTF-8 STRING encoding. */ +#define VERR_ASN1_INVALID_UTF8_STRING_ENCODING (-22802) +/** Invalid ASN.1 NUMERIC STRING encoding. */ +#define VERR_ASN1_INVALID_NUMERIC_STRING_ENCODING (-22803) +/** Invalid ASN.1 PRINTABLE STRING encoding. */ +#define VERR_ASN1_INVALID_PRINTABLE_STRING_ENCODING (-22804) +/** Invalid ASN.1 T61/TELETEX STRING encoding. */ +#define VERR_ASN1_INVALID_T61_STRING_ENCODING (-22805) +/** Invalid ASN.1 VIDEOTEX STRING encoding. */ +#define VERR_ASN1_INVALID_VIDEOTEX_STRING_ENCODING (-22806) +/** Invalid ASN.1 IA5 STRING encoding. */ +#define VERR_ASN1_INVALID_IA5_STRING_ENCODING (-22807) +/** Invalid ASN.1 GRAPHIC STRING encoding. */ +#define VERR_ASN1_INVALID_GRAPHIC_STRING_ENCODING (-22808) +/** Invalid ASN.1 ISO-646/VISIBLE STRING encoding. */ +#define VERR_ASN1_INVALID_VISIBLE_STRING_ENCODING (-22809) +/** Invalid ASN.1 GENERAL STRING encoding. */ +#define VERR_ASN1_INVALID_GENERAL_STRING_ENCODING (-22810) +/** Invalid ASN.1 UNIVERSAL STRING encoding. */ +#define VERR_ASN1_INVALID_UNIVERSAL_STRING_ENCODING (-22811) +/** Invalid ASN.1 BMP STRING encoding. */ +#define VERR_ASN1_INVALID_BMP_STRING_ENCODING (-22812) +/** Invalid ASN.1 OBJECT IDENTIFIER encoding. */ +#define VERR_ASN1_INVALID_OBJID_ENCODING (-22813) +/** A component value of an ASN.1 OBJECT IDENTIFIER is too big for our + * internal representation (32-bits). */ +#define VERR_ASN1_OBJID_COMPONENT_TOO_BIG (-22814) +/** Too many components in an ASN.1 OBJECT IDENTIFIER for our internal + * representation. */ +#define VERR_ASN1_OBJID_TOO_MANY_COMPONENTS (-22815) +/** The dotted-string representation of an ASN.1 OBJECT IDENTIFIER would be too + * long for our internal representation. */ +#define VERR_ASN1_OBJID_TOO_LONG_STRING_FORM (-22816) +/** Invalid dotted string. */ +#define VERR_ASN1_OBJID_INVALID_DOTTED_STRING (-22817) +/** Constructed string type not implemented. */ +#define VERR_ASN1_CONSTRUCTED_STRING_NOT_IMPL (-22818) +/** Expected a different string tag. */ +#define VERR_ASN1_STRING_TAG_MISMATCH (-22819) +/** Expected a different time tag. */ +#define VERR_ASN1_TIME_TAG_MISMATCH (-22820) +/** More unconsumed data available. */ +#define VINF_ASN1_MORE_DATA (22821) +/** RTAsnEncodeWriteHeader return code indicating that nothing was written + * and the content should be skipped as well. */ +#define VINF_ASN1_NOT_ENCODED (22822) +/** Unknown escape sequence encountered in TeletexString. */ +#define VERR_ASN1_TELETEX_UNKNOWN_ESC_SEQ (-22823) +/** Unsupported escape sequence encountered in TeletexString. */ +#define VERR_ASN1_TELETEX_UNSUPPORTED_ESC_SEQ (-22824) +/** Unsupported character set. */ +#define VERR_ASN1_TELETEX_UNSUPPORTED_CHARSET (-22825) +/** ASN.1 object has no virtual method table. */ +#define VERR_ASN1_NO_VTABLE (-22826) +/** ASN.1 object has no pfnCheckSanity method. */ +#define VERR_ASN1_NO_CHECK_SANITY_METHOD (-22827) +/** ASN.1 object is not present */ +#define VERR_ASN1_NOT_PRESENT (-22828) +/** There are unconsumed bytes after decoding an ASN.1 object. */ +#define VERR_ASN1_CURSOR_NOT_AT_END (-22829) +/** Long ASN.1 tag form is not implemented. */ +#define VERR_ASN1_CURSOR_LONG_TAG (-22830) +/** Bad ASN.1 object length encoding. */ +#define VERR_ASN1_CURSOR_BAD_LENGTH_ENCODING (-22831) +/** Indefinite length form is against the rules. */ +#define VERR_ASN1_CURSOR_ILLEGAL_IDEFINITE_LENGTH (-22832) +/** Indefinite length form is not implemented. */ +#define VERR_ASN1_CURSOR_IDEFINITE_LENGTH_NOT_SUP (-22833) +/** ASN.1 object length goes beyond the end of the byte stream being decoded. */ +#define VERR_ASN1_CURSOR_BAD_LENGTH (-22834) +/** Not more data in ASN.1 byte stream. */ +#define VERR_ASN1_CURSOR_NO_MORE_DATA (-22835) +/** Too little data in ASN.1 byte stream. */ +#define VERR_ASN1_CURSOR_TOO_LITTLE_DATA_LEFT (-22836) +/** Constructed string is not according to the encoding rules. */ +#define VERR_ASN1_CURSOR_ILLEGAL_CONSTRUCTED_STRING (-22837) +/** Unexpected ASN.1 tag encountered while decoding. */ +#define VERR_ASN1_CURSOR_TAG_MISMATCH (-22838) +/** Unexpected ASN.1 tag class/flag encountered while decoding. */ +#define VERR_ASN1_CURSOR_TAG_FLAG_CLASS_MISMATCH (-22839) +/** ASN.1 bit string object is out of bounds. */ +#define VERR_ASN1_BITSTRING_OUT_OF_BOUNDS (-22840) +/** Bad ASN.1 time object. */ +#define VERR_ASN1_TIME_BAD_NORMALIZE_INPUT (-22841) +/** Failed to normalize ASN.1 time object. */ +#define VERR_ASN1_TIME_NORMALIZE_ERROR (-22842) +/** Normalization of ASN.1 time object didn't work out. */ +#define VERR_ASN1_TIME_NORMALIZE_MISMATCH (-22843) +/** Invalid ASN.1 UTC TIME encoding. */ +#define VERR_ASN1_INVALID_UTC_TIME_ENCODING (-22844) +/** Invalid ASN.1 GENERALIZED TIME encoding. */ +#define VERR_ASN1_INVALID_GENERALIZED_TIME_ENCODING (-22845) +/** Invalid ASN.1 BOOLEAN encoding. */ +#define VERR_ASN1_INVALID_BOOLEAN_ENCODING (-22846) +/** Invalid ASN.1 NULL encoding. */ +#define VERR_ASN1_INVALID_NULL_ENCODING (-22847) +/** Invalid ASN.1 BIT STRING encoding. */ +#define VERR_ASN1_INVALID_BITSTRING_ENCODING (-22848) +/** Unimplemented ASN.1 tag reached the RTAsn1DynType code. */ +#define VERR_ASN1_DYNTYPE_TAG_NOT_IMPL (-22849) +/** ASN.1 tag and flags/class mismatch in RTAsn1DynType code. */ +#define VERR_ASN1_DYNTYPE_BAD_TAG (-22850) +/** Unexpected ASN.1 fake/dummy object. */ +#define VERR_ASN1_DUMMY_OBJECT (-22851) +/** ASN.1 object is too long. */ +#define VERR_ASN1_TOO_LONG (-22852) +/** Expected primitive ASN.1 object. */ +#define VERR_ASN1_EXPECTED_PRIMITIVE (-22853) +/** Expected valid data pointer for ASN.1 object. */ +#define VERR_ASN1_INVALID_DATA_POINTER (-22854) +/** The ASN.1 encoding is too deeply nested for the decoder. */ +#define VERR_ASN1_TOO_DEEPLY_NESTED (-22855) + +/** ANS.1 internal error 1. */ +#define VERR_ASN1_INTERNAL_ERROR_1 (-22895) +/** ANS.1 internal error 2. */ +#define VERR_ASN1_INTERNAL_ERROR_2 (-22896) +/** ANS.1 internal error 3. */ +#define VERR_ASN1_INTERNAL_ERROR_3 (-22897) +/** ANS.1 internal error 4. */ +#define VERR_ASN1_INTERNAL_ERROR_4 (-22898) +/** ANS.1 internal error 5. */ +#define VERR_ASN1_INTERNAL_ERROR_5 (-22899) +/** @} */ + +/** @name More RTLdr status codes. + * @{ */ +/** Image Verification Failure: No Authenticode Signature. */ +#define VERR_LDRVI_NOT_SIGNED (-22900) +/** Image Verification Warning: No Authenticode Signature, but on whitelist. */ +#define VINF_LDRVI_NOT_SIGNED (22900) +/** Image Verification Failure: Error reading image headers. */ +#define VERR_LDRVI_READ_ERROR_HDR (-22901) +/** Image Verification Failure: Error reading section headers. */ +#define VERR_LDRVI_READ_ERROR_SHDRS (-22902) +/** Image Verification Failure: Error reading authenticode signature data. */ +#define VERR_LDRVI_READ_ERROR_SIGNATURE (-22903) +/** Image Verification Failure: Error reading file for hashing. */ +#define VERR_LDRVI_READ_ERROR_HASH (-22904) +/** Image Verification Failure: Error determining the file length. */ +#define VERR_LDRVI_FILE_LENGTH_ERROR (-22905) +/** Image Verification Failure: Error allocating memory for state data. */ +#define VERR_LDRVI_NO_MEMORY_STATE (-22906) +/** Image Verification Failure: Error allocating memory for authenticode + * signature data. */ +#define VERR_LDRVI_NO_MEMORY_SIGNATURE (-22907) +/** Image Verification Failure: Error allocating memory for section headers. */ +#define VERR_LDRVI_NO_MEMORY_SHDRS (-22908) +/** Image Verification Failure: Authenticode parsing output. */ +#define VERR_LDRVI_NO_MEMORY_PARSE_OUTPUT (-22909) +/** Image Verification Failure: Invalid security directory entry. */ +#define VERR_LDRVI_INVALID_SECURITY_DIR_ENTRY (-22910) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_LENGTH (-22911) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_REVISION (-22912) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_TYPE (-22913) +/** Image Verification Failure: More than one certificate table entry. */ +#define VERR_LDRVI_BAD_CERT_MULTIPLE (-22914) + +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_MZ_OFFSET (-22915) +/** Image Verification Failure: Invalid section count. */ +#define VERR_LDRVI_INVALID_SECTION_COUNT (-22916) +/** Image Verification Failure: Raw data offsets and sizes are out of range. */ +#define VERR_LDRVI_SECTION_RAW_DATA_VALUES (-22917) +/** Optional header magic and target machine does not match. */ +#define VERR_LDRVI_MACHINE_OPT_HDR_MAGIC_MISMATCH (-22918) +/** Unsupported image target architecture. */ +#define VERR_LDRVI_UNSUPPORTED_ARCH (-22919) + +/** Image Verification Failure: Internal error in signature parser. */ +#define VERR_LDRVI_PARSE_IPE (-22921) +/** Generic BER parse error. Will be refined later. */ +#define VERR_LDRVI_PARSE_BER_ERROR (-22922) + +/** Expected the signed data content to be the object ID of + * SpcIndirectDataContent, found something else instead. */ +#define VERR_LDRVI_EXPECTED_INDIRECT_DATA_CONTENT_OID (-22923) +/** Page hash table size overflow. */ +#define VERR_LDRVI_PAGE_HASH_TAB_SIZE_OVERFLOW (-22924) +/** Page hash table is too long (covers signature data, i.e. itself). */ +#define VERR_LDRVI_PAGE_HASH_TAB_TOO_LONG (-22925) +/** The page hash table is not strictly ordered by offset. */ +#define VERR_LDRVI_PAGE_HASH_TAB_NOT_STRICTLY_SORTED (-22926) +/** The page hash table hashes data outside the defined and implicit sections. */ +#define VERR_PAGE_HASH_TAB_HASHES_NON_SECTION_DATA (-22927) +/** Page hash mismatch. */ +#define VERR_LDRVI_PAGE_HASH_MISMATCH (-22928) +/** Image hash mismatch. */ +#define VERR_LDRVI_IMAGE_HASH_MISMATCH (-22929) + +/** Cannot resolve symbol because it's a forwarder. */ +#define VERR_LDR_FORWARDER (-22950) +/** The symbol is not a forwarder. */ +#define VERR_LDR_NOT_FORWARDER (-22951) +/** Malformed forwarder entry. */ +#define VERR_LDR_BAD_FORWARDER (-22952) +/** Too long forwarder chain or there is a loop. */ +#define VERR_LDR_FORWARDER_CHAIN_TOO_LONG (-22953) +/** Support for forwarders has not been implemented. */ +#define VERR_LDR_FORWARDERS_NOT_SUPPORTED (-22954) +/** @} */ + +/** @name RTCrX509 status codes. + * @{ */ +/** Generic X.509 error. */ +#define VERR_CR_X509_GENERIC_ERROR (-23000) +/** Internal error in the X.509 code. */ +#define VERR_CR_X509_INTERNAL_ERROR (-23001) +/** Internal error in the X.509 certificate path building and verification + * code. */ +#define VERR_CR_X509_CERTPATHS_INTERNAL_ERROR (-23002) +/** Path not verified yet. */ +#define VERR_CR_X509_NOT_VERIFIED (-23003) +/** The certificate path has no trust anchor. */ +#define VERR_CR_X509_NO_TRUST_ANCHOR (-23004) +/** Unknown X.509 certificate signature algorithm. */ +#define VERR_CR_X509_UNKNOWN_CERT_SIGN_ALGO (-23005) +/** Certificate signature algorithm mismatch. */ +#define VERR_CR_X509_CERT_SIGN_ALGO_MISMATCH (-23006) +/** The signature algorithm in the to-be-signed certificate part does not match + * the one associated with the signature. */ +#define VERR_CR_X509_CERT_TBS_SIGN_ALGO_MISMATCH (-23007) +/** Certificate extensions requires certificate version 3 or later. */ +#define VERR_CR_X509_TBSCERT_EXTS_REQ_V3 (-23008) +/** Unique issuer and subject IDs require version certificate 2. */ +#define VERR_CR_X509_TBSCERT_UNIQUE_IDS_REQ_V2 (-23009) +/** Certificate serial number length is out of bounds. */ +#define VERR_CR_X509_TBSCERT_SERIAL_NUMBER_OUT_OF_BOUNDS (-23010) +/** Unsupported X.509 certificate version. */ +#define VERR_CR_X509_TBSCERT_UNSUPPORTED_VERSION (-23011) +/** Public key is too small. */ +#define VERR_CR_X509_PUBLIC_KEY_TOO_SMALL (-23012) +/** Invalid string tag for a X.509 name object. */ +#define VERR_CR_X509_INVALID_NAME_STRING_TAG (-23013) +/** Empty string in X.509 name object. */ +#define VERR_CR_X509_NAME_EMPTY_STRING (-23014) +/** Non-string object inside X.509 name object. */ +#define VERR_CR_X509_NAME_NOT_STRING (-23015) +/** Empty set inside X.509 name. */ +#define VERR_CR_X509_NAME_EMPTY_SET (-23016) +/** Empty sub-string set inside X.509 name. */ +#define VERR_CR_X509_NAME_EMPTY_SUB_SET (-23017) +/** The NotBefore and NotAfter values of an X.509 Validity object seems to + * have been swapped around. */ +#define VERR_CR_X509_VALIDITY_SWAPPED (-23018) +/** Duplicate certificate extension. */ +#define VERR_CR_X509_TBSCERT_DUPLICATE_EXTENSION (-23019) +/** Missing relative distinguished name map entry. */ +#define VERR_CR_X509_NAME_MISSING_RDN_MAP_ENTRY (-23020) +/** Certificate path validator: No trusted certificate paths. */ +#define VERR_CR_X509_CPV_NO_TRUSTED_PATHS (-23021) +/** Certificate path validator: No valid certificate policy. */ +#define VERR_CR_X509_CPV_NO_VALID_POLICY (-23022) +/** Certificate path validator: Unknown critical certificate extension. */ +#define VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION (-23023) +/** Certificate path validator: Intermediate certificate is missing the + * KeyCertSign usage flag. */ +#define VERR_CR_X509_CPV_MISSING_KEY_CERT_SIGN (-23024) +/** Certificate path validator: Hit the max certificate path length before + * reaching trust anchor. */ +#define VERR_CR_X509_CPV_MAX_PATH_LENGTH (-23025) +/** Certificate path validator: Intermediate certificate is not marked as a + * certificate authority (CA). */ +#define VERR_CR_X509_CPV_NOT_CA_CERT (-23026) +/** Certificate path validator: Intermediate certificate is not a version 3 + * certificate. */ +#define VERR_CR_X509_CPV_NOT_V3_CERT (-23027) +/** Certificate path validator: Invalid policy mapping (to/from anyPolicy). */ +#define VERR_CR_X509_CPV_INVALID_POLICY_MAPPING (-23028) +/** Certificate path validator: Name constraints permits no names. */ +#define VERR_CR_X509_CPV_NO_PERMITTED_NAMES (-23029) +/** Certificate path validator: Name constraints does not permits the + * certificate name. */ +#define VERR_CR_X509_CPV_NAME_NOT_PERMITTED (-23030) +/** Certificate path validator: Name constraints does not permits the + * alternative certificate name. */ +#define VERR_CR_X509_CPV_ALT_NAME_NOT_PERMITTED (-23031) +/** Certificate path validator: Intermediate certificate subject does not + * match child issuer property. */ +#define VERR_CR_X509_CPV_ISSUER_MISMATCH (-23032) +/** Certificate path validator: The certificate is not valid at the + * specified time. */ +#define VERR_CR_X509_CPV_NOT_VALID_AT_TIME (-23033) +/** Certificate path validator: Unexpected choice found in general subtree + * object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_CHOICE (-23034) +/** Certificate path validator: Unexpected minimum value found in general + * subtree object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_MIN (-23035) +/** Certificate path validator: Unexpected maximum value found in + * general subtree object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_MAX (-23036) +/** Certificate path builder: Encountered bad certificate context. */ +#define VERR_CR_X509_CPB_BAD_CERT_CTX (-23037) +/** OpenSSL d2i_X509 failed. */ +#define VERR_CR_X509_OSSL_D2I_FAILED (-23090) +/** @} */ + +/** @name RTCrPkcs7 status codes. + * @{ */ +/** Generic PKCS \#7 error. */ +#define VERR_CR_PKCS7_GENERIC_ERROR (-23300) +/** Signed data verification failed because there are zero signer infos. */ +#define VERR_CR_PKCS7_NO_SIGNER_INFOS (-23301) +/** Signed data certificate not found. */ +#define VERR_CR_PKCS7_SIGNED_DATA_CERT_NOT_FOUND (-23302) +/** Signed data verification failed due to key usage issues. */ +#define VERR_CR_PKCS7_KEY_USAGE_MISMATCH (-23303) +/** Signed data verification failed because of missing (or duplicate) + * authenticated content-type attribute. */ +#define VERR_CR_PKCS7_MISSING_CONTENT_TYPE_ATTRIB (-23304) +/** Signed data verification failed because of the authenticated content-type + * attribute did not match. */ +#define VERR_CR_PKCS7_CONTENT_TYPE_ATTRIB_MISMATCH (-23305) +/** Signed data verification failed because of a malformed authenticated + * content-type attribute. */ +#define VERR_CR_PKCS7_BAD_CONTENT_TYPE_ATTRIB (-23306) +/** Signed data verification failed because of missing (or duplicate) + * authenticated message-digest attribute. */ +#define VERR_CR_PKCS7_MISSING_MESSAGE_DIGEST_ATTRIB (-23307) +/** Signed data verification failed because the authenticated message-digest + * attribute did not match. */ +#define VERR_CR_PKCS7_MESSAGE_DIGEST_ATTRIB_MISMATCH (-23308) +/** Signed data verification failed because of a malformed authenticated + * message-digest attribute. */ +#define VERR_CR_PKCS7_BAD_MESSAGE_DIGEST_ATTRIB (-23309) +/** Signature verification failed. */ +#define VERR_CR_PKCS7_SIGNATURE_VERIFICATION_FAILED (-23310) +/** Internal PKCS \#7 error. */ +#define VERR_CR_PKCS7_INTERNAL_ERROR (-22311) +/** OpenSSL d2i_PKCS7 failed. */ +#define VERR_CR_PKCS7_OSSL_D2I_FAILED (-22312) +/** OpenSSL PKCS \#7 verification failed. */ +#define VERR_CR_PKCS7_OSSL_VERIFY_FAILED (-22313) +/** Digest algorithm parameters are not supported by the PKCS \#7 code. */ +#define VERR_CR_PKCS7_DIGEST_PARAMS_NOT_IMPL (-22314) +/** The digest algorithm of a signer info entry was not found in the list of + * digest algorithms in the signed data. */ +#define VERR_CR_PKCS7_DIGEST_ALGO_NOT_FOUND_IN_LIST (-22315) +/** The PKCS \#7 content is not signed data. */ +#define VERR_CR_PKCS7_NOT_SIGNED_DATA (-22316) +/** No digest algorithms listed in PKCS \#7 signed data. */ +#define VERR_CR_PKCS7_NO_DIGEST_ALGORITHMS (-22317) +/** Too many digest algorithms used by PKCS \#7 signed data. This is an + * internal limitation of the code that aims at saving kernel stack space. */ +#define VERR_CR_PKCS7_TOO_MANY_DIGEST_ALGORITHMS (-22318) +/** Error creating digest algorithm calculator. */ +#define VERR_CR_PKCS7_DIGEST_CREATE_ERROR (-22319) +/** Error while calculating a digest for a PKCS \#7 verification operation. */ +#define VERR_CR_PKCS7_DIGEST_CALC_ERROR (-22320) +/** Unsupported PKCS \#7 signed data version. */ +#define VERR_CR_PKCS7_SIGNED_DATA_VERSION (-22350) +/** PKCS \#7 signed data has no digest algorithms listed. */ +#define VERR_CR_PKCS7_SIGNED_DATA_NO_DIGEST_ALGOS (-22351) +/** Unknown digest algorithm used by PKCS \#7 object. */ +#define VERR_CR_PKCS7_UNKNOWN_DIGEST_ALGORITHM (-22352) +/** Expected PKCS \#7 object to ship at least one certificate. */ +#define VERR_CR_PKCS7_NO_CERTIFICATES (-22353) +/** Expected PKCS \#7 object to not contain any CRLs. */ +#define VERR_CR_PKCS7_EXPECTED_NO_CRLS (-22354) +/** Expected PKCS \#7 object to contain exactly on signer info entry. */ +#define VERR_CR_PKCS7_EXPECTED_ONE_SIGNER_INFO (-22355) +/** Unsupported PKCS \#7 signer info version. */ +#define VERR_CR_PKCS7_SIGNER_INFO_VERSION (-22356) +/** PKCS \#7 singer info contains no issuer serial number. */ +#define VERR_CR_PKCS7_SIGNER_INFO_NO_ISSUER_SERIAL_NO (-22357) +/** Expected PKCS \#7 object to ship the signer certificate(s). */ +#define VERR_CR_PKCS7_SIGNER_CERT_NOT_SHIPPED (-22358) +/** The encrypted digest algorithm does not match the one in the certificate. */ +#define VERR_CR_PKCS7_SIGNER_INFO_DIGEST_ENCRYPT_MISMATCH (-22359) +/** @} */ + +/** @name RTCrSpc status codes. + * @{ */ +/** Generic SPC error. */ +#define VERR_CR_SPC_GENERIC_ERROR (-23400) +/** SPC requires there to be exactly one SignerInfo entry. */ +#define VERR_CR_SPC_NOT_EXACTLY_ONE_SIGNER_INFOS (-23401) +/** There shall be exactly one digest algorithm to go with the single + * SingerInfo entry required by SPC. */ +#define VERR_CR_SPC_NOT_EXACTLY_ONE_DIGEST_ALGO (-23402) +/** The digest algorithm in the SignerInfo does not match the one in the + * indirect data. */ +#define VERR_CR_SPC_SIGNED_IND_DATA_DIGEST_ALGO_MISMATCH (-23403) +/** The digest algorithm in the indirect data was not found in the list of + * digest algorithms in the signed data structure. */ +#define VERR_CR_SPC_IND_DATA_DIGEST_ALGO_NOT_IN_DIGEST_ALGOS (-23404) +/** The digest algorithm is not known to us. */ +#define VERR_CR_SPC_UNKNOWN_DIGEST_ALGO (-23405) +/** The indirect data digest size does not match the digest algorithm. */ +#define VERR_CR_SPC_IND_DATA_DIGEST_SIZE_MISMATCH (-23406) +/** Expected PE image data inside indirect data object. */ +#define VERR_CR_SPC_EXPECTED_PE_IMAGE_DATA (-23407) +/** Internal SPC error: The PE image data is missing. */ +#define VERR_CR_SPC_PEIMAGE_DATA_NOT_PRESENT (-23408) +/** Bad SPC object moniker UUID field. */ +#define VERR_CR_SPC_BAD_MONIKER_UUID (-23409) +/** Unknown SPC object moniker UUID. */ +#define VERR_CR_SPC_UNKNOWN_MONIKER_UUID (-23410) +/** Internal SPC error: Bad object moniker choice value. */ +#define VERR_CR_SPC_BAD_MONIKER_CHOICE (-23411) +/** Internal SPC error: Bad object moniker data pointer. */ +#define VERR_CR_SPC_MONIKER_BAD_DATA (-23412) +/** Multiple PE image page hash tables. */ +#define VERR_CR_SPC_PEIMAGE_MULTIPLE_HASH_TABS (-23413) +/** Unknown SPC PE image attribute. */ +#define VERR_CR_SPC_PEIMAGE_UNKNOWN_ATTRIBUTE (-23414) +/** URL not expected in SPC PE image data. */ +#define VERR_CR_SPC_PEIMAGE_URL_UNEXPECTED (-23415) +/** PE image data without any valid content was not expected. */ +#define VERR_CR_SPC_PEIMAGE_NO_CONTENT (-23416) +/** @} */ + +/** @name RTCrPkix status codes. + * @{ */ +/** Generic PKCS \#7 error. */ +#define VERR_CR_PKIX_GENERIC_ERROR (-23500) +/** Parameters was presented to a signature schema that does not take any. */ +#define VERR_CR_PKIX_SIGNATURE_TAKES_NO_PARAMETERS (-23501) +/** Unknown hash digest type. */ +#define VERR_CR_PKIX_UNKNOWN_DIGEST_TYPE (-23502) +/** Internal error. */ +#define VERR_CR_PKIX_INTERNAL_ERROR (-23503) +/** The hash is too long for the key used when signing/verifying. */ +#define VERR_CR_PKIX_HASH_TOO_LONG_FOR_KEY (-23504) +/** The signature is too long for the scratch buffer. */ +#define VERR_CR_PKIX_SIGNATURE_TOO_LONG (-23505) +/** The signature is greater than or equal to the key. */ +#define VERR_CR_PKIX_SIGNATURE_GE_KEY (-23506) +/** The signature is negative. */ +#define VERR_CR_PKIX_SIGNATURE_NEGATIVE (-23507) +/** Invalid signature length. */ +#define VERR_CR_PKIX_INVALID_SIGNATURE_LENGTH (-23508) +/** PKIX signature no does not match up to the current data. */ +#define VERR_CR_PKIX_SIGNATURE_MISMATCH (-23509) +/** PKIX cipher algorithm parameters are not implemented. */ +#define VERR_CR_PKIX_CIPHER_ALGO_PARAMS_NOT_IMPL (-23510) +/** Cipher algorithm is not known to us. */ +#define VERR_CR_PKIX_CIPHER_ALGO_NOT_KNOWN (-23511) +/** PKIX cipher algorithm is not known to OpenSSL. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALGO_NOT_KNOWN (-23512) +/** PKIX cipher algorithm is not known to OpenSSL EVP API. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALGO_NOT_KNOWN_EVP (-23513) +/** OpenSSL failed to init PKIX cipher algorithm context. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALOG_INIT_FAILED (-23514) +/** Final OpenSSL PKIX verification failed. */ +#define VERR_CR_PKIX_OSSL_VERIFY_FINAL_FAILED (-23515) +/** OpenSSL failed to decode the public key. */ +#define VERR_CR_PKIX_OSSL_D2I_PUBLIC_KEY_FAILED (-23516) +/** The EVP_PKEY_type API in OpenSSL failed. */ +#define VERR_CR_PKIX_OSSL_EVP_PKEY_TYPE_ERROR (-23517) +/** @} */ + +/** @name RTCrStore status codes. + * @{ */ +/** Generic store error. */ +#define VERR_CR_STORE_GENERIC_ERROR (-23700) +/** @} */ + +/** @name RTCrRsa status codes. + * @{ */ +/** Generic RSA error. */ +#define VERR_CR_RSA_GENERIC_ERROR (-23900) +/** @} */ + +/** @name RTBigNum status codes. + * @{ */ +/** Sensitive input requires the result(s) to be initialized as sensitive. */ +#define VERR_BIGNUM_SENSITIVE_INPUT (-24000) +/** Attempt to divide by zero. */ +#define VERR_BIGNUM_DIV_BY_ZERO (-24001) +/** Negative exponent makes no sense to integer math. */ +#define VERR_BIGNUM_NEGATIVE_EXPONENT (-24002) + +/** @} */ + +/** @name RTCrDigest status codes. + * @{ */ +/** OpenSSL failed to initialize the digest algorithm context. */ +#define VERR_CR_DIGEST_OSSL_DIGEST_INIT_ERROR (-24200) +/** OpenSSL failed to clone the digest algorithm context. */ +#define VERR_CR_DIGEST_OSSL_DIGEST_CTX_COPY_ERROR (-24201) +/** @} */ + +/** @name RTPath status codes. + * @{ */ +/** Unknown glob variable. */ +#define VERR_PATH_MATCH_UNKNOWN_VARIABLE (-24400) +/** The specified glob variable must be first in the pattern. */ +#define VERR_PATH_MATCH_VARIABLE_MUST_BE_FIRST (-24401) +/** Hit unimplemented glob pattern matching feature. */ +#define VERR_PATH_MATCH_FEATURE_NOT_IMPLEMENTED (-24402) +/** Unknown character class in glob pattern. */ +#define VERR_PATH_GLOB_UNKNOWN_CHAR_CLASS (-24403) +/** @} */ + +/** @name RTUri status codes. + * @{ */ +/** The URI is empty */ +#define VERR_URI_EMPTY (-24600) +/** The URI is too short to be a valid URI. */ +#define VERR_URI_TOO_SHORT (-24601) +/** Invalid scheme. */ +#define VERR_URI_INVALID_SCHEME (-24602) +/** Invalid port number. */ +#define VERR_URI_INVALID_PORT_NUMBER (-24603) +/** Invalid escape sequence. */ +#define VERR_URI_INVALID_ESCAPE_SEQ (-24604) +/** Escape URI char decodes as zero (the C string terminator). */ +#define VERR_URI_ESCAPED_ZERO (-24605) +/** Escaped URI characters does not decode to valid UTF-8. */ +#define VERR_URI_ESCAPED_CHARS_NOT_VALID_UTF8 (-24606) +/** Escaped URI character is not a valid UTF-8 lead byte. */ +#define VERR_URI_INVALID_ESCAPED_UTF8_LEAD_BYTE (-24607) +/** Escaped URI character sequence with invalid UTF-8 continutation byte. */ +#define VERR_URI_INVALID_ESCAPED_UTF8_CONTINUATION_BYTE (-24608) +/** Missing UTF-8 continutation in escaped URI character sequence. */ +#define VERR_URI_MISSING_UTF8_CONTINUATION_BYTE (-24609) +/** Expected URI using the 'file:' scheme. */ +#define VERR_URI_NOT_FILE_SCHEME (-24610) +/** @} */ + +/* SED-END */ + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/errno.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/errno.h @@ -0,0 +1,318 @@ +/** @file + * IPRT - errno.h wrapper. + */ + +/* + * Copyright (C) 2012-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#ifndef ___iprt_errno_h___ +#define ___iprt_errno_h___ + +#ifndef IPRT_NO_CRT +# if defined(RT_OS_DARWIN) && defined(KERNEL) +# include +# elif defined(RT_OS_LINUX) && defined(__KERNEL__) +# include +# elif defined(RT_OS_FREEBSD) && defined(_KERNEL) +# include +# else +# include +# endif +#endif + + +/* + * Supply missing errno values according to the current RT_OS_XXX definition. + * + * Note! These supplements are for making no-CRT mode, as well as making UNIXy + * code that makes used of odd errno defines internally, work smoothly. + * + * When adding more error codes, always check the following errno.h sources: + * - RT_OS_DARWIN: http://fxr.watson.org/fxr/source/bsd/sys/errno.h?v=xnu-1699.24.8 + * - RT_OS_FREEBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=DFBSD + * - RT_OS_NETBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=NETBSD + * - RT_OS_OPENBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=OPENBSD + * - RT_OS_OS2: http://svn.netlabs.org/libc/browser/trunk/libc/include/sys/errno.h + * - RT_OS_LINUX: http://fxr.watson.org/fxr/source/include/asm-generic/errno.h?v=linux-2.6 + * - RT_OS_SOLARIS: http://fxr.watson.org/fxr/source/common/sys/errno.h?v=OPENSOLARIS + * - RT_OS_WINDOWS: tools/win.x86/vcc/v8sp1/include/errno.h + */ + +#if defined(RT_OS_DARWIN) \ + || defined(RT_OS_FREEBSD) \ + || defined(RT_OS_NETBSD) \ + || defined(RT_OS_OPENBSD) \ + || defined(RT_OS_OS2) +# define RT_ERRNO_OS_BSD +#endif +#ifdef RT_OS_SOLARIS +# define RT_ERRNO_OS_SYSV_HARDCORE /* ?? */ +#endif + +/* The relatively similar part. */ +#ifndef EPERM +# define EPERM (1) +#endif +#ifndef ENOENT +# define ENOENT (2) +#endif +#ifndef ESRCH +# define ESRCH (3) +#endif +#ifndef EINTR +# define EINTR (4) +#endif +#ifndef EIO +# define EIO (5) +#endif +#ifndef ENXIO +# define ENXIO (6) +#endif +#ifndef E2BIG +# define E2BIG (7) +#endif +#ifndef ENOEXEC +# define ENOEXEC (8) +#endif +#ifndef EBADF +# define EBADF (9) +#endif +#ifndef ECHILD +# define ECHILD (10) +#endif +#ifndef EAGAIN +# if defined(RT_ERRNO_OS_BSD) +# define EAGAIN (35) +# else +# define EAGAIN (11) +# endif +#endif +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif +#ifndef EDEADLK +# if defined(RT_ERRNO_OS_BSD) +# define EDEADLK (11) +# elif defined(RT_OS_LINUX) +# define EDEADLK (35) +# elif defined(RT_OS_WINDOWS) +# define EDEADLK (36) +# else +# define EDEADLK (45) +# endif +#endif +#ifndef EDEADLOCK +# define EDEADLOCK EDEADLK +#endif +#ifndef ENOMEM +# define ENOMEM (12) +#endif +#ifndef EACCES +# define EACCES (13) +#endif +#ifndef EFAULT +# define EFAULT (14) +#endif +#ifndef ENOTBLK +# define ENOTBLK (15) +#endif +#ifndef EBUSY +# define EBUSY (16) +#endif +#ifndef EEXIST +# define EEXIST (17) +#endif +#ifndef EXDEV +# define EXDEV (18) +#endif +#ifndef ENODEV +# define ENODEV (19) +#endif +#ifndef ENOTDIR +# define ENOTDIR (20) +#endif +#ifndef EISDIR +# define EISDIR (21) +#endif +#ifndef EINVAL +# define EINVAL (22) +#endif +#ifndef ENFILE +# define ENFILE (23) +#endif +#ifndef EMFILE +# define EMFILE (24) +#endif +#ifndef ENOTTY +# define ENOTTY (25) +#endif +#ifndef ETXTBSY +# define ETXTBSY (26) +#endif +#ifndef EFBIG +# define EFBIG (27) +#endif +#ifndef ENOSPC +# define ENOSPC (28) +#endif +#ifndef ESPIPE +# define ESPIPE (29) +#endif +#ifndef EROFS +# define EROFS (30) +#endif +#ifndef EMLINK +# define EMLINK (31) +#endif +#ifndef EPIPE +# define EPIPE (32) +#endif +#ifndef EDOM +# define EDOM (33) +#endif +#ifndef ERANGE +# define ERANGE (34) +#endif + +/* 35 - also EAGAIN on BSD and EDEADLK on Linux. */ +#ifndef ENOMSG +# if defined(RT_OS_DARWIN) +# define ENOMSG (91) +# elif defined(RT_OS_FREEBSD) +# define ENOMSG (83) +# elif defined(RT_OS_LINUX) +# define ENOMSG (42) +# else +# define ENOMSG (35) +# endif +#endif + +/* 36 - Also EDEADLK on Windows. */ +#ifndef EIDRM +# if defined(RT_OS_DARWIN) +# define EIDRM (90) +# elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD) +# define EIDRM (82) +# elif defined(RT_OS_OPENBSD) +# define EIDRM (89) +# elif defined(RT_OS_LINUX) +# define EIDRM (43) +# elif defined(RT_OS_WINDOWS) +# define EIDRM (600) +# else +# define EIDRM (36) +# endif +#endif +#ifndef EINPROGRESS +# if defined(RT_ERRNO_OS_BSD) +# define EINPROGRESS (36) +# elif defined(RT_OS_LINUX) +# define EINPROGRESS (115) +# else +# define EINPROGRESS (150) +# endif +#endif +#ifndef ENAMETOOLONG +# if defined(RT_ERRNO_OS_BSD) +# define ENAMETOOLONG (63) +# elif defined(RT_OS_LINUX) +# define ENAMETOOLONG (36) +# else +# define ENAMETOOLONG (78) +# endif +#endif + +/* 37 */ +#ifndef ECHRNG +# if defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define ECHRNG (37) +# else +# define ECHRNG (599) +# endif +#endif +#ifndef ENOLCK +# if defined(RT_ERRNO_OS_BSD) +# define ENOLCK (77) +# elif defined(RT_OS_LINUX) +# define ENOLCK (37) +# else +# define ENOLCK (46) +# endif +#endif +#ifndef EALREADY +# if defined(RT_ERRNO_OS_BSD) +# define EALREADY (37) +# elif defined(RT_OS_LINUX) +# define EALREADY (114) +# else +# define EALREADY (149) +# endif +#endif + +/** @todo errno constants {37..44}. */ + +/* 45 - also EDEADLK on Solaris, EL2NSYNC on Linux. */ +#ifndef ENOTSUP +# if defined(RT_ERRNO_OS_BSD) +# define ENOTSUP (45) +# elif defined(RT_OS_LINUX) +# define ENOTSUP (95) +# else +# define ENOTSUP (48) +# endif +#endif +#ifndef EOPNOTSUPP +# if defined(RT_ERRNO_OS_BSD) +# define EOPNOTSUPP ENOTSUP +# elif defined(RT_OS_LINUX) +# define EOPNOTSUPP ENOTSUP +# else +# define EOPNOTSUPP (122) +# endif +#endif + +/** @todo errno constants {46..74}. */ + +/* 75 - note that Solaris has constant with value 75. */ +#ifndef EOVERFLOW +# if defined(RT_OS_OPENBSD) +# define EOVERFLOW (87) +# elif defined(RT_ERRNO_OS_BSD) +# define EOVERFLOW (84) +# elif defined(RT_OS_LINUX) +# define EOVERFLOW (75) +# else +# define EOVERFLOW (79) +# endif +#endif +#ifndef EPROGMISMATCH +# if defined(RT_ERRNO_OS_BSD) +# define EPROGMISMATCH (75) +# else +# define EPROGMISMATCH (598) +# endif +#endif + +/** @todo errno constants {76..}. */ + + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/fs.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/fs.h @@ -0,0 +1,637 @@ +/** @file + * IPRT - Filesystem. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_fs_h +#define ___iprt_fs_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_fs RTFs - Filesystem and Volume + * @ingroup grp_rt + * @{ + */ + + +/** @name Filesystem Object Mode Flags. + * + * There are two sets of flags: the unix mode flags and the dos attributes. + * + * APIs returning mode flags will provide both sets. + * + * When specifying mode flags to any API at least one of them must be given. If + * one set is missing the API will synthesize it from the one given if it + * requires it. + * + * Both sets match their x86 ABIs, the DOS/NT one is simply shifted up 16 bits. + * The DOS/NT range is bits 16 to 31 inclusively. The Unix range is bits 0 to 15 + * (inclusively). + * + * @remarks These constants have been comitted to a binary format and must not + * be changed in any incompatible ways. + * + * @{ + */ + +/** Set user id on execution (S_ISUID). */ +#define RTFS_UNIX_ISUID 0004000U +/** Set group id on execution (S_ISGID). */ +#define RTFS_UNIX_ISGID 0002000U +/** Sticky bit (S_ISVTX / S_ISTXT). */ +#define RTFS_UNIX_ISTXT 0001000U + +/** Owner RWX mask (S_IRWXU). */ +#define RTFS_UNIX_IRWXU 0000700U +/** Owner readable (S_IRUSR). */ +#define RTFS_UNIX_IRUSR 0000400U +/** Owner writable (S_IWUSR). */ +#define RTFS_UNIX_IWUSR 0000200U +/** Owner executable (S_IXUSR). */ +#define RTFS_UNIX_IXUSR 0000100U + +/** Group RWX mask (S_IRWXG). */ +#define RTFS_UNIX_IRWXG 0000070U +/** Group readable (S_IRGRP). */ +#define RTFS_UNIX_IRGRP 0000040U +/** Group writable (S_IWGRP). */ +#define RTFS_UNIX_IWGRP 0000020U +/** Group executable (S_IXGRP). */ +#define RTFS_UNIX_IXGRP 0000010U + +/** Other RWX mask (S_IRWXO). */ +#define RTFS_UNIX_IRWXO 0000007U +/** Other readable (S_IROTH). */ +#define RTFS_UNIX_IROTH 0000004U +/** Other writable (S_IWOTH). */ +#define RTFS_UNIX_IWOTH 0000002U +/** Other executable (S_IXOTH). */ +#define RTFS_UNIX_IXOTH 0000001U + +/** All UNIX access permission bits (0777). */ +#define RTFS_UNIX_ALL_ACCESS_PERMS 0000777U +/** All UNIX permission bits, including set id and sticky bits. */ +#define RTFS_UNIX_ALL_PERMS 0007777U + +/** Named pipe (fifo) (S_IFIFO). */ +#define RTFS_TYPE_FIFO 0010000U +/** Character device (S_IFCHR). */ +#define RTFS_TYPE_DEV_CHAR 0020000U +/** Directory (S_IFDIR). */ +#define RTFS_TYPE_DIRECTORY 0040000U +/** Block device (S_IFBLK). */ +#define RTFS_TYPE_DEV_BLOCK 0060000U +/** Regular file (S_IFREG). */ +#define RTFS_TYPE_FILE 0100000U +/** Symbolic link (S_IFLNK). */ +#define RTFS_TYPE_SYMLINK 0120000U +/** Socket (S_IFSOCK). */ +#define RTFS_TYPE_SOCKET 0140000U +/** Whiteout (S_IFWHT). */ +#define RTFS_TYPE_WHITEOUT 0160000U +/** Type mask (S_IFMT). */ +#define RTFS_TYPE_MASK 0170000U +/** The shift count to convert between RTFS_TYPE_MASK and DIRENTRYTYPE. */ +#define RTFS_TYPE_DIRENTRYTYPE_SHIFT 12 + +/** Unix attribute mask. */ +#define RTFS_UNIX_MASK 0xffffU +/** The mask of all the NT, OS/2 and DOS attributes. */ +#define RTFS_DOS_MASK (0x7fffU << RTFS_DOS_SHIFT) + +/** The shift value. */ +#define RTFS_DOS_SHIFT 16 +/** The mask of the OS/2 and DOS attributes. */ +#define RTFS_DOS_MASK_OS2 (0x003fU << RTFS_DOS_SHIFT) +/** The mask of the NT attributes. */ +#define RTFS_DOS_MASK_NT (0x7fffU << RTFS_DOS_SHIFT) + +/** Readonly object. */ +#define RTFS_DOS_READONLY (0x0001U << RTFS_DOS_SHIFT) +/** Hidden object. */ +#define RTFS_DOS_HIDDEN (0x0002U << RTFS_DOS_SHIFT) +/** System object. */ +#define RTFS_DOS_SYSTEM (0x0004U << RTFS_DOS_SHIFT) +/** Directory. */ +#define RTFS_DOS_DIRECTORY (0x0010U << RTFS_DOS_SHIFT) +/** Archived object. + * This bit is set by the filesystem after each modification of a file. */ +#define RTFS_DOS_ARCHIVED (0x0020U << RTFS_DOS_SHIFT) +/** Undocumented / Reserved, used to be the FAT volume label. */ +#define RTFS_DOS_NT_DEVICE (0x0040U << RTFS_DOS_SHIFT) +/** Normal object, no other attribute set (NT). */ +#define RTFS_DOS_NT_NORMAL (0x0080U << RTFS_DOS_SHIFT) +/** Temporary object (NT). */ +#define RTFS_DOS_NT_TEMPORARY (0x0100U << RTFS_DOS_SHIFT) +/** Sparse file (NT). */ +#define RTFS_DOS_NT_SPARSE_FILE (0x0200U << RTFS_DOS_SHIFT) +/** Reparse point (NT). */ +#define RTFS_DOS_NT_REPARSE_POINT (0x0400U << RTFS_DOS_SHIFT) +/** Compressed object (NT). + * For a directory, compression is the default for new files. */ +#define RTFS_DOS_NT_COMPRESSED (0x0800U << RTFS_DOS_SHIFT) +/** Physically offline data (NT). + * MSDN say, don't mess with this one. */ +#define RTFS_DOS_NT_OFFLINE (0x1000U << RTFS_DOS_SHIFT) +/** Not content indexed by the content indexing service (NT). */ +#define RTFS_DOS_NT_NOT_CONTENT_INDEXED (0x2000U << RTFS_DOS_SHIFT) +/** Encryped object (NT). + * For a directory, encrypted is the default for new files. */ +#define RTFS_DOS_NT_ENCRYPTED (0x4000U << RTFS_DOS_SHIFT) + +/** @} */ + + +/** @name Filesystem Object Type Predicates. + * @{ */ +/** Checks the mode flags indicate a named pipe (fifo) (S_ISFIFO). */ +#define RTFS_IS_FIFO(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_FIFO ) +/** Checks the mode flags indicate a character device (S_ISCHR). */ +#define RTFS_IS_DEV_CHAR(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DEV_CHAR ) +/** Checks the mode flags indicate a directory (S_ISDIR). */ +#define RTFS_IS_DIRECTORY(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DIRECTORY ) +/** Checks the mode flags indicate a block device (S_ISBLK). */ +#define RTFS_IS_DEV_BLOCK(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DEV_BLOCK ) +/** Checks the mode flags indicate a regular file (S_ISREG). */ +#define RTFS_IS_FILE(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_FILE ) +/** Checks the mode flags indicate a symbolic link (S_ISLNK). */ +#define RTFS_IS_SYMLINK(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_SYMLINK ) +/** Checks the mode flags indicate a socket (S_ISSOCK). */ +#define RTFS_IS_SOCKET(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_SOCKET ) +/** Checks the mode flags indicate a whiteout (S_ISWHT). */ +#define RTFS_IS_WHITEOUT(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_WHITEOUT ) +/** @} */ + + +/** + * Filesystem type IDs returned by RTFsQueryType. + * + * This enum is subject to changes and must not be used as part of any ABI or + * binary format (file, network, etc). + * + * @remarks When adding new entries, please update RTFsTypeName(). Also, try + * add them to the most natural group. + */ +typedef enum RTFSTYPE +{ + /** Unknown file system. */ + RTFSTYPE_UNKNOWN = 0, + + /** Universal Disk Format. */ + RTFSTYPE_UDF, + /** ISO 9660, aka Compact Disc File System (CDFS). */ + RTFSTYPE_ISO9660, + /** Filesystem in Userspace. */ + RTFSTYPE_FUSE, + /** VirtualBox shared folders. */ + RTFSTYPE_VBOXSHF, + + /* Linux: */ + RTFSTYPE_EXT, + RTFSTYPE_EXT2, + RTFSTYPE_EXT3, + RTFSTYPE_EXT4, + RTFSTYPE_XFS, + RTFSTYPE_CIFS, + RTFSTYPE_SMBFS, + RTFSTYPE_TMPFS, + RTFSTYPE_SYSFS, + RTFSTYPE_PROC, + RTFSTYPE_OCFS2, + RTFSTYPE_BTRFS, + + /* Windows: */ + /** New Technology File System. */ + RTFSTYPE_NTFS, + /** FAT12, FAT16 and FAT32 lumped into one basket. + * The partition size limit of FAT12 and FAT16 will be the factor + * limiting the file size (except, perhaps for the 64KB cluster case on + * non-Windows hosts). */ + RTFSTYPE_FAT, + + /* Solaris: */ + /** Zettabyte File System. */ + RTFSTYPE_ZFS, + /** Unix File System. */ + RTFSTYPE_UFS, + /** Network File System. */ + RTFSTYPE_NFS, + + /* Mac OS X: */ + /** Hierarchical File System. */ + RTFSTYPE_HFS, + /** @todo RTFSTYPE_HFS_PLUS? */ + RTFSTYPE_AUTOFS, + RTFSTYPE_DEVFS, + + /* *BSD: */ + + /* OS/2: */ + /** High Performance File System. */ + RTFSTYPE_HPFS, + /** Journaled File System (v2). */ + RTFSTYPE_JFS, + + /** The end of valid Filesystem types IDs. */ + RTFSTYPE_END, + /** The usual 32-bit type blow up. */ + RTFSTYPE_32BIT_HACK = 0x7fffffff +} RTFSTYPE; +/** Pointer to a Filesystem type ID. */ +typedef RTFSTYPE *PRTFSTYPE; + + +/** + * The available additional information in a RTFSOBJATTR object. + */ +typedef enum RTFSOBJATTRADD +{ + /** No additional information is available / requested. */ + RTFSOBJATTRADD_NOTHING = 1, + /** The additional unix attributes (RTFSOBJATTR::u::Unix) are available / + * requested. */ + RTFSOBJATTRADD_UNIX, + /** The additional unix attributes (RTFSOBJATTR::u::UnixOwner) are + * available / requested. */ + RTFSOBJATTRADD_UNIX_OWNER, + /** The additional unix attributes (RTFSOBJATTR::u::UnixGroup) are + * available / requested. */ + RTFSOBJATTRADD_UNIX_GROUP, + /** The additional extended attribute size (RTFSOBJATTR::u::EASize) is available / requested. */ + RTFSOBJATTRADD_EASIZE, + /** The last valid item (inclusive). + * The valid range is RTFSOBJATTRADD_NOTHING thru RTFSOBJATTRADD_LAST. */ + RTFSOBJATTRADD_LAST = RTFSOBJATTRADD_EASIZE, + + /** The usual 32-bit hack. */ + RTFSOBJATTRADD_32BIT_SIZE_HACK = 0x7fffffff +} RTFSOBJATTRADD; + +/** The number of bytes reserved for the additional attribute union. */ +#define RTFSOBJATTRUNION_MAX_SIZE 128 + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX). + */ +typedef struct RTFSOBJATTRUNIX +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_UID if not supported. */ + RTUID uid; + + /** The group the filesystem object is assigned (st_gid). + * This field is NIL_GID if not supported. */ + RTGID gid; + + /** Number of hard links to this filesystem object (st_nlink). + * This field is 1 if the filesystem doesn't support hardlinking or + * the information isn't available. + */ + uint32_t cHardlinks; + + /** The device number of the device which this filesystem object resides on (st_dev). + * This field is 0 if this information is not available. */ + RTDEV INodeIdDevice; + + /** The unique identifier (within the filesystem) of this filesystem object (st_ino). + * Together with INodeIdDevice, this field can be used as a OS wide unique id + * when both their values are not 0. + * This field is 0 if the information is not available. */ + RTINODE INodeId; + + /** User flags (st_flags). + * This field is 0 if this information is not available. */ + uint32_t fFlags; + + /** The current generation number (st_gen). + * This field is 0 if this information is not available. */ + uint32_t GenerationId; + + /** The device number of a character or block device type object (st_rdev). + * This field is 0 if the file isn't of a character or block device type and + * when the OS doesn't subscribe to the major+minor device idenfication scheme. */ + RTDEV Device; +} RTFSOBJATTRUNIX; + + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX_OWNER). + * + * @remarks This interface is mainly for TAR. + */ +typedef struct RTFSOBJATTRUNIXOWNER +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_UID if not supported. */ + RTUID uid; + /** The user name. + * Empty if not available or not supported, truncated if too long. */ + char szName[RTFSOBJATTRUNION_MAX_SIZE - sizeof(RTUID)]; +} RTFSOBJATTRUNIXOWNER; + + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX_GROUP). + * + * @remarks This interface is mainly for TAR. + */ +typedef struct RTFSOBJATTRUNIXGROUP +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_GID if not supported. */ + RTGID gid; + /** The group name. + * Empty if not available or not supported, truncated if too long. */ + char szName[RTFSOBJATTRUNION_MAX_SIZE - sizeof(RTGID)]; +} RTFSOBJATTRUNIXGROUP; + + +/** + * Filesystem object attributes. + */ +typedef struct RTFSOBJATTR +{ + /** Mode flags (st_mode). RTFS_UNIX_*, RTFS_TYPE_*, and RTFS_DOS_*. */ + RTFMODE fMode; + + /** The additional attributes available. */ + RTFSOBJATTRADD enmAdditional; + + /** + * Additional attributes. + * + * Unless explicitly specified to an API, the API can provide additional + * data as it is provided by the underlying OS. + */ + union RTFSOBJATTRUNION + { + /** Additional Unix Attributes - RTFSOBJATTRADD_UNIX. */ + RTFSOBJATTRUNIX Unix; + /** Additional Unix Owner Attributes - RTFSOBJATTRADD_UNIX_OWNER. */ + RTFSOBJATTRUNIXOWNER UnixOwner; + /** Additional Unix Group Attributes - RTFSOBJATTRADD_UNIX_GROUP. */ + RTFSOBJATTRUNIXGROUP UnixGroup; + + /** + * Extended attribute size is available when RTFS_DOS_HAVE_EA_SIZE is set. + */ + struct RTFSOBJATTREASIZE + { + /** Size of EAs. */ + RTFOFF cb; + } EASize; + /** Reserved space. */ + uint8_t abReserveSpace[128]; + } u; +} RTFSOBJATTR; +/** Pointer to a filesystem object attributes structure. */ +typedef RTFSOBJATTR *PRTFSOBJATTR; +/** Pointer to a const filesystem object attributes structure. */ +typedef const RTFSOBJATTR *PCRTFSOBJATTR; + + +/** + * Filesystem object information structure. + * + * This is returned by the RTPathQueryInfo(), RTFileQueryInfo() and RTDirRead() APIs. + */ +typedef struct RTFSOBJINFO +{ + /** Logical size (st_size). + * For normal files this is the size of the file. + * For symbolic links, this is the length of the path name contained + * in the symbolic link. + * For other objects this fields needs to be specified. + */ + RTFOFF cbObject; + + /** Disk allocation size (st_blocks * DEV_BSIZE). */ + RTFOFF cbAllocated; + + /** Time of last access (st_atime). */ + RTTIMESPEC AccessTime; + + /** Time of last data modification (st_mtime). */ + RTTIMESPEC ModificationTime; + + /** Time of last status change (st_ctime). + * If not available this is set to ModificationTime. + */ + RTTIMESPEC ChangeTime; + + /** Time of file birth (st_birthtime). + * If not available this is set to ChangeTime. + */ + RTTIMESPEC BirthTime; + + /** Attributes. */ + RTFSOBJATTR Attr; + +} RTFSOBJINFO; +/** Pointer to a filesystem object information structure. */ +typedef RTFSOBJINFO *PRTFSOBJINFO; +/** Pointer to a const filesystem object information structure. */ +typedef const RTFSOBJINFO *PCRTFSOBJINFO; + + +#ifdef IN_RING3 + +/** + * Query the sizes of a filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pcbTotal Where to store the total filesystem space. (Optional) + * @param pcbFree Where to store the remaining free space in the filesystem. (Optional) + * @param pcbBlock Where to store the block size. (Optional) + * @param pcbSector Where to store the sector size. (Optional) + * + * @sa RTFileQueryFsSizes + */ +RTR3DECL(int) RTFsQuerySizes(const char *pszFsPath, PRTFOFF pcbTotal, RTFOFF *pcbFree, + uint32_t *pcbBlock, uint32_t *pcbSector); + +/** + * Query the mountpoint of a filesystem. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbMountpoint isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszMountpoint Where to store the mountpoint path. + * @param cbMountpoint Size of the buffer pointed to by pszMountpoint. + */ +RTR3DECL(int) RTFsQueryMountpoint(const char *pszFsPath, char *pszMountpoint, size_t cbMountpoint); + +/** + * Query the label of a filesystem. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbLabel isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszLabel Where to store the label. + * @param cbLabel Size of the buffer pointed to by pszLabel. + */ +RTR3DECL(int) RTFsQueryLabel(const char *pszFsPath, char *pszLabel, size_t cbLabel); + +/** + * Query the serial number of a filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pu32Serial Where to store the serial number. + */ +RTR3DECL(int) RTFsQuerySerial(const char *pszFsPath, uint32_t *pu32Serial); + +/** + * Query the name of the filesystem driver. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbFsDriver isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszFsDriver Where to store the filesystem driver name. + * @param cbFsDriver Size of the buffer pointed to by pszFsDriver. + */ +RTR3DECL(int) RTFsQueryDriver(const char *pszFsPath, char *pszFsDriver, size_t cbFsDriver); + +/** + * Query the name of the filesystem the file is located on. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. It must exist. + * In case this is a symlink, the file it refers to is + * evaluated. + * @param penmType Where to store the filesystem type, this is always + * set. See RTFSTYPE for the values. + */ +RTR3DECL(int) RTFsQueryType(const char *pszFsPath, PRTFSTYPE penmType); + +#endif /* IN_RING3 */ + +/** + * Gets the name of a filesystem type. + * + * @returns Pointer to a read-only string containing the name. + * @param enmType A valid filesystem ID. If outside the valid range, + * the returned string will be pointing to a static + * memory buffer which will be changed on subsequent + * calls to this function by any thread. + */ +RTDECL(const char *) RTFsTypeName(RTFSTYPE enmType); + +/** + * Filesystem properties. + */ +typedef struct RTFSPROPERTIES +{ + /** The maximum size of a filesystem object name. + * This does not include the '\\0'. */ + uint32_t cbMaxComponent; + + /** True if the filesystem is remote. + * False if the filesystem is local. */ + bool fRemote; + + /** True if the filesystem is case sensitive. + * False if the filesystem is case insensitive. */ + bool fCaseSensitive; + + /** True if the filesystem is mounted read only. + * False if the filesystem is mounted read write. */ + bool fReadOnly; + + /** True if the filesystem can encode unicode object names. + * False if it can't. */ + bool fSupportsUnicode; + + /** True if the filesystem is compresses. + * False if it isn't or we don't know. */ + bool fCompressed; + + /** True if the filesystem compresses of individual files. + * False if it doesn't or we don't know. */ + bool fFileCompression; + + /** @todo more? */ +} RTFSPROPERTIES; +/** Pointer to a filesystem properties structure. */ +typedef RTFSPROPERTIES *PRTFSPROPERTIES; +/** Pointer to a const filesystem properties structure. */ +typedef RTFSPROPERTIES const *PCRTFSPROPERTIES; + +#ifdef IN_RING3 + +/** + * Query the properties of a mounted filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pProperties Where to store the properties. + */ +RTR3DECL(int) RTFsQueryProperties(const char *pszFsPath, PRTFSPROPERTIES pProperties); + +/** + * Checks if the given volume is case sensitive or not. + * + * This may be misleading in some cases as we lack the necessary APIs to query + * the information on some system (or choose not to use them) and are instead + * returning the general position on case sensitive file name of the system. + * + * @returns @c true if case sensitive, @c false if not. + * @param pszFsPath Path within the mounted file system. + */ +RTR3DECL(bool) RTFsIsCaseSensitive(const char *pszFsPath); + +/** + * Mountpoint enumerator callback. + * + * @returns iprt status code. Failure terminates the enumeration. + * @param pszMountpoint The mountpoint name. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(int) FNRTFSMOUNTPOINTENUM(const char *pszMountpoint, void *pvUser); +/** Pointer to a FNRTFSMOUNTPOINTENUM(). */ +typedef FNRTFSMOUNTPOINTENUM *PFNRTFSMOUNTPOINTENUM; + +/** + * Enumerate mount points. + * + * @returns iprt status code. + * @param pfnCallback The callback function. + * @param pvUser The user argument to the callback. + */ +RTR3DECL(int) RTFsMountpointsEnum(PFNRTFSMOUNTPOINTENUM pfnCallback, void *pvUser); + + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif /* !___iprt_fs_h */ + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/heap.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/heap.h @@ -0,0 +1,356 @@ +/** @file + * IPRT - Heap Implementations + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_heap_h +#define ___iprt_heap_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_heap RTHeap - Heap Implementations + * @ingroup grp_rt + * @{ + */ + + +/** @defgroup grp_rt_heap_simple RTHeapSimple - Simple Heap + * @{ + */ + +/** + * Initializes the heap. + * + * @returns IPRT status code. + * @param pHeap Where to store the heap anchor block on success. + * @param pvMemory Pointer to the heap memory. + * @param cbMemory The size of the heap memory. + */ +RTDECL(int) RTHeapSimpleInit(PRTHEAPSIMPLE pHeap, void *pvMemory, size_t cbMemory); + +/** + * Merge two simple heaps into one. + * + * The requirement is of course that they next two each other memory wise. + * + * @returns IPRT status code. + * @param pHeap Where to store the handle to the merged heap on success. + * @param Heap1 Handle to the first heap. + * @param Heap2 Handle to the second heap. + * @remark This API isn't implemented yet. + */ +RTDECL(int) RTHeapSimpleMerge(PRTHEAPSIMPLE pHeap, RTHEAPSIMPLE Heap1, RTHEAPSIMPLE Heap2); + +/** + * Relocater the heap internal structures after copying it to a new location. + * + * This can be used when loading a saved heap. + * + * @returns IPRT status code. + * @param hHeap Heap handle that has already been adjusted by to the new + * location. That is to say, when calling + * RTHeapSimpleInit, the caller must note the offset of the + * returned heap handle into the heap memory. This offset + * must be used when calcuating the handle value for the + * new location. The offset may in some cases not be zero! + * @param offDelta The delta between the new and old location, i.e. what + * should be added to the internal pointers. + */ +RTDECL(int) RTHeapSimpleRelocate(RTHEAPSIMPLE hHeap, uintptr_t offDelta); + +/** + * Allocates memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param Heap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapSimpleAlloc(RTHEAPSIMPLE Heap, size_t cb, size_t cbAlignment); + +/** + * Allocates zeroed memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param Heap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapSimpleAllocZ(RTHEAPSIMPLE Heap, size_t cb, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple. If NULL it behaves like RTHeapSimpleAlloc(). + * @param cbNew The new size of the heap block. If NULL it behaves like RTHeapSimpleFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapSimpleRealloc(RTHEAPSIMPLE Heap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block, zeroing any new bits. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple. If NULL it behaves like RTHeapSimpleAllocZ(). + * @param cbNew The new size of the heap block. If NULL it behaves like RTHeapSimpleFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapSimpleReallocZ(RTHEAPSIMPLE Heap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Frees memory allocated from a simple heap. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple + */ +RTDECL(void) RTHeapSimpleFree(RTHEAPSIMPLE Heap, void *pv); + +/** + * Gets the size of the specified heap block. + * + * @returns The actual size of the heap block. + * @returns 0 if \a pv is NULL or it doesn't point to a valid heap block. An invalid \a pv + * can also cause traps or trigger assertions. + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple + */ +RTDECL(size_t) RTHeapSimpleSize(RTHEAPSIMPLE Heap, void *pv); + +/** + * Gets the size of the heap. + * + * This size includes all the internal heap structures. So, even if the heap is + * empty the RTHeapSimpleGetFreeSize() will never reach the heap size returned + * by this function. + * + * @returns The heap size. + * @returns 0 if heap was safely detected as being bad. + * @param Heap The heap. + */ +RTDECL(size_t) RTHeapSimpleGetHeapSize(RTHEAPSIMPLE Heap); + +/** + * Returns the sum of all free heap blocks. + * + * This is the amount of memory you can theoretically allocate + * if you do allocations exactly matching the free blocks. + * + * @returns The size of the free blocks. + * @returns 0 if heap was safely detected as being bad. + * @param Heap The heap. + */ +RTDECL(size_t) RTHeapSimpleGetFreeSize(RTHEAPSIMPLE Heap); + +/** + * Printf like callbaclk function for RTHeapSimpleDump. + * @param pszFormat IPRT format string. + * @param ... Format arguments. + */ +typedef DECLCALLBACK(void) FNRTHEAPSIMPLEPRINTF(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); +/** Pointer to a FNRTHEAPSIMPLEPRINTF function. */ +typedef FNRTHEAPSIMPLEPRINTF *PFNRTHEAPSIMPLEPRINTF; + +/** + * Dumps the hypervisor heap. + * + * @param Heap The heap handle. + * @param pfnPrintf Printf like function that groks IPRT formatting. + */ +RTDECL(void) RTHeapSimpleDump(RTHEAPSIMPLE Heap, PFNRTHEAPSIMPLEPRINTF pfnPrintf); + +/** @} */ + + + +/** @defgroup grp_rt_heap_offset RTHeapOffset - Offset Based Heap + * + * This is a variation on the simple heap that doesn't use pointers internally + * and therefore can be saved and restored without any extra effort. + * + * @{ + */ + +/** + * Initializes the heap. + * + * @returns IPRT status code. + * @param phHeap Where to store the heap anchor block on success. + * @param pvMemory Pointer to the heap memory. + * @param cbMemory The size of the heap memory. + */ +RTDECL(int) RTHeapOffsetInit(PRTHEAPOFFSET phHeap, void *pvMemory, size_t cbMemory); + +/** + * Merge two simple heaps into one. + * + * The requirement is of course that they next two each other memory wise. + * + * @returns IPRT status code. + * @param phHeap Where to store the handle to the merged heap on success. + * @param hHeap1 Handle to the first heap. + * @param hHeap2 Handle to the second heap. + * @remark This API isn't implemented yet. + */ +RTDECL(int) RTHeapOffsetMerge(PRTHEAPOFFSET phHeap, RTHEAPOFFSET hHeap1, RTHEAPOFFSET hHeap2); + +/** + * Allocates memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param hHeap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapOffsetAlloc(RTHEAPOFFSET hHeap, size_t cb, size_t cbAlignment); + +/** + * Allocates zeroed memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param hHeap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + */ +RTDECL(void *) RTHeapOffsetAllocZ(RTHEAPOFFSET hHeap, size_t cb, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset. If NULL it + * behaves like RTHeapOffsetAlloc(). + * @param cbNew The new size of the heap block. If NULL it behaves like + * RTHeapOffsetFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapOffsetRealloc(RTHEAPOFFSET hHeap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block, zeroing any new bits. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset. If NULL it + * behaves like RTHeapOffsetAllocZ(). + * @param cbNew The new size of the heap block. If NULL it behaves like + * RTHeapOffsetFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapOffsetReallocZ(RTHEAPOFFSET hHeap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Frees memory allocated from a simple heap. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset + */ +RTDECL(void) RTHeapOffsetFree(RTHEAPOFFSET hHeap, void *pv); + +/** + * Gets the size of the specified heap block. + * + * @returns The actual size of the heap block. + * @returns 0 if \a pv is NULL or it doesn't point to a valid heap block. An + * invalid \a pv can also cause traps or trigger assertions. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset + */ +RTDECL(size_t) RTHeapOffsetSize(RTHEAPOFFSET hHeap, void *pv); + +/** + * Gets the size of the heap. + * + * This size includes all the internal heap structures. So, even if the heap is + * empty the RTHeapOffsetGetFreeSize() will never reach the heap size returned + * by this function. + * + * @returns The heap size. + * @returns 0 if heap was safely detected as being bad. + * @param hHeap The heap handle. + */ +RTDECL(size_t) RTHeapOffsetGetHeapSize(RTHEAPOFFSET hHeap); + +/** + * Returns the sum of all free heap blocks. + * + * This is the amount of memory you can theoretically allocate + * if you do allocations exactly matching the free blocks. + * + * @returns The size of the free blocks. + * @returns 0 if heap was safely detected as being bad. + * @param hHeap The heap handle. + */ +RTDECL(size_t) RTHeapOffsetGetFreeSize(RTHEAPOFFSET hHeap); + +/** + * Printf like callbaclk function for RTHeapOffsetDump. + * @param pszFormat IPRT format string. + * @param ... Format arguments. + */ +typedef DECLCALLBACK(void) FNRTHEAPOFFSETPRINTF(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); +/** Pointer to a FNRTHEAPOFFSETPRINTF function. */ +typedef FNRTHEAPOFFSETPRINTF *PFNRTHEAPOFFSETPRINTF; + +/** + * Dumps the hypervisor heap. + * + * @param hHeap The heap handle. + * @param pfnPrintf Printf like function that groks IPRT formatting. + */ +RTDECL(void) RTHeapOffsetDump(RTHEAPOFFSET hHeap, PFNRTHEAPOFFSETPRINTF pfnPrintf); + +/** @} */ + +/** @} */ +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/initterm.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/initterm.h @@ -0,0 +1,263 @@ +/** @file + * IPRT - Runtime Init/Term. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_initterm_h +#define ___iprt_initterm_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt IPRT C/C++ APIs + * @{ + */ + +/** @defgroup grp_rt_initterm RTInit/RTTerm - Initialization and Termination + * + * APIs for initializing and terminating the IPRT, optionally it can also + * convert input arguments to UTF-8 (in ring-3). + * + * @sa RTOnce, RTOnceEx. + * + * @{ + */ + +#ifdef IN_RING3 +/** @name RTR3Init flags (RTR3INIT_XXX). + * @{ */ +/** Try initialize SUPLib. */ +#define RTR3INIT_FLAGS_SUPLIB RT_BIT(0) +/** Initializing IPRT from a DLL. */ +#define RTR3INIT_FLAGS_DLL RT_BIT(1) +/** We are sharing a process space, so we need to behave. */ +#define RTR3INIT_FLAGS_UNOBTRUSIVE RT_BIT(2) +/** The caller ensures that the argument bector is UTF-8. */ +#define RTR3INIT_FLAGS_UTF8_ARGV RT_BIT(3) +/** Indicates that this is a standalone application without any additional + * shared libraries in the application directory. Mainly windows loader mess. */ +#define RTR3INIT_FLAGS_STANDALONE_APP RT_BIT(4) +/** @} */ + +/** @name RTR3InitEx version + * @{ */ +/** Version 1. */ +#define RTR3INIT_VER_1 UINT32_C(1) +/** The current version. */ +#define RTR3INIT_VER_CUR RTR3INIT_VER_1 +/** @} */ + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitExeNoArguments(uint32_t fFlags); + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param cArgs Pointer to the argument count. + * @param ppapszArgs Pointer to the argument vector pointer. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitExe(int cArgs, char ***ppapszArgs, uint32_t fFlags); + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitDll(uint32_t fFlags); + +/** + * Initializes the runtime library and possibly also SUPLib too. + * + * Avoid this interface, it's not considered stable. + * + * @returns IPRT status code. + * @param iVersion The interface version. Must be 0 atm. + * @param fFlags Flags, see RTR3INIT_XXX. + * @param cArgs Pointer to the argument count. + * @param ppapszArgs Pointer to the argument vector pointer. NULL + * allowed if @a cArgs is 0. + * @param pszProgramPath The program path. Pass NULL if we're to figure it + * out ourselves. + */ +RTR3DECL(int) RTR3InitEx(uint32_t iVersion, uint32_t fFlags, int cArgs, char ***ppapszArgs, const char *pszProgramPath); + +/** + * Terminates the runtime library. + */ +RTR3DECL(void) RTR3Term(void); + +/** + * Is IPRT succesfully initialized? + * + * @returns true/false. + */ +RTR3DECL(bool) RTR3InitIsInitialized(void); + +/** + * Are we running in unobtrusive mode? + * @returns true/false. + */ +RTR3DECL(bool) RTR3InitIsUnobtrusive(void); +#endif /* IN_RING3 */ + + +#ifdef IN_RING0 +/** + * Initializes the ring-0 driver runtime library. + * + * @returns iprt status code. + * @param fReserved Flags reserved for the future. + */ +RTR0DECL(int) RTR0Init(unsigned fReserved); + +/** + * Terminates the ring-0 driver runtime library. + */ +RTR0DECL(void) RTR0Term(void); + +/** + * Forcibily terminates the ring-0 driver runtime library. + * + * This should be used when statically linking the IPRT. Module using dynamic + * linking shall use RTR0Term. If you're not sure, use RTR0Term! + */ +RTR0DECL(void) RTR0TermForced(void); +#endif + +#ifdef IN_RC +/** + * Initializes the raw-mode context runtime library. + * + * @returns iprt status code. + * + * @param u64ProgramStartNanoTS The startup timestamp. + */ +RTRCDECL(int) RTRCInit(uint64_t u64ProgramStartNanoTS); + +/** + * Terminates the raw-mode context runtime library. + */ +RTRCDECL(void) RTRCTerm(void); +#endif + + +/** + * Termination reason. + */ +typedef enum RTTERMREASON +{ + /** Normal exit. iStatus contains the exit code. */ + RTTERMREASON_EXIT = 1, + /** Any abnormal exit. iStatus is 0 and has no meaning. */ + RTTERMREASON_ABEND, + /** Killed by a signal. The iStatus contains the signal number. */ + RTTERMREASON_SIGNAL, + /** The IPRT module is being unloaded. iStatus is 0 and has no meaning. */ + RTTERMREASON_UNLOAD +} RTTERMREASON; + +/** Whether lazy clean up is Okay or not. + * When the process is exiting, it is a waste of time to for instance free heap + * memory or close open files. OTOH, when the runtime is unloaded from the + * process, it is important to release absolutely all resources to prevent + * resource leaks. */ +#define RTTERMREASON_IS_LAZY_CLEANUP_OK(enmReason) ((enmReason) != RTTERMREASON_UNLOAD) + + +/** + * IPRT termination callback function. + * + * @param enmReason The cause of the termination. + * @param iStatus The meaning of this depends on enmReason. + * @param pvUser User argument passed to RTTermRegisterCallback. + */ +typedef DECLCALLBACK(void) FNRTTERMCALLBACK(RTTERMREASON enmReason, int32_t iStatus, void *pvUser); +/** Pointer to an IPRT termination callback function. */ +typedef FNRTTERMCALLBACK *PFNRTTERMCALLBACK; + + +/** + * Registers a termination callback. + * + * This is intended for performing clean up during IPRT termination. Frequently + * paired with lazy initialization thru RTOnce. + * + * The callbacks are called in LIFO order. + * + * @returns IPRT status code. + * + * @param pfnCallback The callback function. + * @param pvUser The user argument for the callback. + * + * @remarks May need to acquire a fast mutex or critical section, so use with + * some care in ring-0 context. + * + * @remarks Be very careful using this from code that may be unloaded before + * IPRT terminates. Unlike some atexit and on_exit implementations, + * IPRT will not automatically unregister callbacks when a module gets + * unloaded. + */ +RTDECL(int) RTTermRegisterCallback(PFNRTTERMCALLBACK pfnCallback, void *pvUser); + +/** + * Deregister a termination callback. + * + * @returns VINF_SUCCESS if found, VERR_NOT_FOUND if the callback/pvUser pair + * wasn't found. + * + * @param pfnCallback The callback function. + * @param pvUser The user argument for the callback. + */ +RTDECL(int) RTTermDeregisterCallback(PFNRTTERMCALLBACK pfnCallback, void *pvUser); + +/** + * Runs the termination callback queue. + * + * Normally called by an internal IPRT termination function, but may also be + * called by external code immediately prior to terminating IPRT if it is in a + * better position to state the termination reason and/or status. + * + * @param enmReason The reason why it's called. + * @param iStatus The associated exit status or signal number. + */ +RTDECL(void) RTTermRunCallbacks(RTTERMREASON enmReason, int32_t iStatus); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/latin1.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/latin1.h @@ -0,0 +1,392 @@ +/** @file + * IPRT - String Manipulation, Latin-1 (ISO-8859-1) encoding. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_latin1_h +#define ___iprt_latin1_h + +#include + +RT_C_DECLS_BEGIN + + +/** @defgroup rt_str_latin1 Latin-1 (ISO-8859-1) String Manipulation + * @ingroup grp_rt_str + * + * Deals with Latin-1 encoded strings. + * + * @warning Make sure to name all variables dealing with Latin-1 strings + * suchthat there is no way to mistake them for normal UTF-8 strings. + * There may be severe security issues resulting from mistaking Latin-1 + * for UTF-8! + * + * @{ + */ + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param pszLatin1 The Latin-1 string. + */ +DECLINLINE(RTUNICP) RTLatin1GetCp(const char *pszLatin1) +{ + return *(const unsigned char *)pszLatin1; +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppszLatin1 Pointer to the string pointer. This will be updated to + * point to the char following the current code point. This + * is advanced one character forward on failure. + * @param pCp Where to store the code point. RTUNICP_INVALID is stored + * here on failure. + */ +DECLINLINE(int) RTLatin1GetCpEx(const char **ppszLatin1, PRTUNICP pCp) +{ + const unsigned char uch = **(const unsigned char **)ppszLatin1; + (*ppszLatin1)++; + *pCp = uch; + return VINF_SUCCESS; +} + +/** + * Get the unicode code point at the given string position for a string of a + * given maximum length. + * + * @returns iprt status code. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppszLatin1 Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pcchLatin1 Pointer to the maximum string length. This will be + * decremented by the size of the code point found. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + */ +DECLINLINE(int) RTLatin1GetCpNEx(const char **ppszLatin1, size_t *pcchLatin1, PRTUNICP pCp) +{ + if (RT_LIKELY(*pcchLatin1 != 0)) + { + const unsigned char uch = **(const unsigned char **)ppszLatin1; + (*ppszLatin1)++; + (*pcchLatin1)--; + *pCp = uch; + return VINF_SUCCESS; + } + *pCp = RTUNICP_INVALID; + return VERR_END_OF_STRING; +} + +/** + * Get the Latin-1 size in characters of a given Unicode code point. + * + * The code point is expected to be a valid Unicode one, but not necessarily in + * the range supported by Latin-1. + * + * @returns the size in characters, or zero if there is no Latin-1 encoding + */ +DECLINLINE(size_t) RTLatin1CpSize(RTUNICP CodePoint) +{ + if (CodePoint < 0x100) + return 1; + return 0; +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param pszLatin1 The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the Latin-1 range. + */ +DECLINLINE(char *) RTLatin1PutCp(char *pszLatin1, RTUNICP CodePoint) +{ + AssertReturn(CodePoint < 0x100, NULL); + *pszLatin1++ = (unsigned char)CodePoint; + return pszLatin1; +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param pszLatin1 Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(char *) RTLatin1NextCp(const char *pszLatin1) +{ + pszLatin1++; + return (char *)pszLatin1; +} + +/** + * Skips back to the previous code point. + * + * @returns Pointer to the char before the current code point. + * @returns pszLatin1Start on failure. + * @param pszLatin1Start Pointer to the start of the string. + * @param pszLatin1 Pointer to the current code point. + */ +DECLINLINE(char *) RTLatin1PrevCp(const char *pszLatin1Start, const char *pszLatin1) +{ + if ((uintptr_t)pszLatin1 > (uintptr_t)pszLatin1Start) + { + pszLatin1--; + return (char *)pszLatin1; + } + return (char *)pszLatin1Start; +} + +/** + * Translate a Latin1 string into a UTF-8 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszLatin1 Latin1 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTLatin1ToUtf8(pszLatin1, ppszString) RTLatin1ToUtf8Tag((pszLatin1), (ppszString), RTSTR_TAG) + +/** + * Translate a Latin-1 string into a UTF-8 allocating the result buffer. + * + * @returns iprt status code. + * @param pszLatin1 Latin-1 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf8Tag(const char *pszLatin1, char **ppszString, const char *pszTag); + +/** + * Translates Latin-1 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string to convert. + * @param cchLatin1 The number of Latin-1 characters to translate from + * pszLatin1. The translation will stop when reaching + * cchLatin1 or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz If @a cch is non-zero, this must either be pointing + * to a pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or + * @a cch is zero a buffer of at least @a cch chars + * will be allocated to hold the translated string. If + * a buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTLatin1ToUtf8Ex(pszLatin1, cchLatin1, ppsz, cch, pcch) \ + RTLatin1ToUtf8ExTag((pszLatin1), (cchLatin1), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates Latin1 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pszLatin1 The Latin1 string to convert. + * @param cchLatin1 The number of Latin1 characters to translate from + * pwszString. The translation will stop when + * reaching cchLatin1 or the terminator ('\\0'). Use + * RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * a pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch chars will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf8ExTag(const char *pszLatin1, size_t cchLatin1, char **ppsz, size_t cch, size_t *pcch, + const char *pszTag); + +/** + * Calculates the length of the Latin-1 string in UTF-8 chars (bytes). + * + * The primary purpose of this function is to help allocate buffers for + * RTLatin1ToUtf8() of the correct size. For most other purposes + * RTLatin1ToUtf8Ex() should be used. + * + * @returns Number of chars (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param pszLatin1 The Latin-1 string. + */ +RTDECL(size_t) RTLatin1CalcUtf8Len(const char *pszLatin1); + +/** + * Calculates the length of the Latin-1 string in UTF-8 chars (bytes). + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string. + * @param cchLatin1 The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTLatin1CalcUtf8LenEx(const char *pszLatin1, size_t cchLatin1, size_t *pcch); + +/** + * Calculates the length of the Latin-1 (ISO-8859-1) string in RTUTF16 items. + * + * @returns Number of RTUTF16 items. + * @param pszLatin1 The Latin-1 string. + */ +RTDECL(size_t) RTLatin1CalcUtf16Len(const char *pszLatin1); + +/** + * Calculates the length of the Latin-1 (ISO-8859-1) string in RTUTF16 items. + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string. + * @param cchLatin1 The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcwc Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTLatin1CalcUtf16LenEx(const char *pszLatin1, size_t cchLatin1, size_t *pcwc); + +/** + * Translate a Latin-1 (ISO-8859-1) string into a UTF-16 allocating the result + * buffer (default tag). + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. The + * returned string must be freed using RTUtf16Free(). + */ +#define RTLatin1ToUtf16(pszLatin1, ppwszString) RTLatin1ToUtf16Tag((pszLatin1), (ppwszString), RTSTR_TAG) + +/** + * Translate a Latin-1 (ISO-8859-1) string into a UTF-16 allocating the result + * buffer (custom tag). + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. The + * returned string must be freed using RTUtf16Free(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf16Tag(const char *pszLatin1, PRTUTF16 *ppwszString, const char *pszTag); + +/** + * Translates pszLatin1 from Latin-1 (ISO-8859-1) to UTF-16, allocating the + * result buffer if requested (default tag). + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string to convert. + * @param cchLatin1 The maximum size in chars (the type) to convert. The + * conversion stops when it reaches cchLatin1 or the + * string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing + * to pointer to a buffer of the specified size, or + * pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at + * least cwc items will be allocated to hold the + * translated string. If a buffer was requested it + * must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the + * terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTLatin1ToUtf16Ex(pszLatin1, cchLatin1, ppwsz, cwc, pcwc) \ + RTLatin1ToUtf16ExTag((pszLatin1), (cchLatin1), (ppwsz), (cwc), (pcwc), RTSTR_TAG) + +/** + * Translates pszLatin1 from Latin-1 (ISO-8859-1) to UTF-16, allocating the + * result buffer if requested. + * + * @returns iprt status code. + * @param pszLatin1 The Latin-1 string to convert. + * @param cchLatin1 The maximum size in chars (the type) to convert. The + * conversion stops when it reaches cchLatin1 or the + * string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing + * to pointer to a buffer of the specified size, or + * pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at + * least cwc items will be allocated to hold the + * translated string. If a buffer was requested it + * must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the + * terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf16ExTag(const char *pszLatin1, size_t cchLatin1, + PRTUTF16 *ppwsz, size_t cwc, size_t *pcwc, const char *pszTag); + +/** @} */ + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/list.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/list.h @@ -0,0 +1,448 @@ +/** @file + * IPRT - Generic Doubly Linked List. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_list_h +#define ___iprt_list_h + +#include + +/** @defgroup grp_rt_list RTList - Generic Doubly Linked List + * @ingroup grp_rt + * + * The list implementation is circular without any type wise distintion between + * the list and its nodes. This can be confusing since the list head usually + * resides in a different structure than the nodes, so care must be taken when + * walking the list. + * + * @{ + */ + +RT_C_DECLS_BEGIN + +/** + * A list node of a doubly linked list. + */ +typedef struct RTLISTNODE +{ + /** Pointer to the next list node. */ + struct RTLISTNODE *pNext; + /** Pointer to the previous list node. */ + struct RTLISTNODE *pPrev; +} RTLISTNODE; +/** Pointer to a list node. */ +typedef RTLISTNODE *PRTLISTNODE; +/** Pointer to a const list node. */ +typedef RTLISTNODE const *PCRTLISTNODE; +/** Pointer to a list node pointer. */ +typedef PRTLISTNODE *PPRTLISTNODE; + +/** The anchor (head/tail) of a doubly linked list. + * + * @remarks Please use this instead of RTLISTNODE to indicate a list + * head/tail. It makes the code so much easier to read. Also, + * always mention the actual list node type(s) in the comment. */ +typedef RTLISTNODE RTLISTANCHOR; +/** Pointer to a doubly linked list anchor. */ +typedef RTLISTANCHOR *PRTLISTANCHOR; +/** Pointer to a const doubly linked list anchor. */ +typedef RTLISTANCHOR const *PCRTLISTANCHOR; + +/** Version of RTLISTNODE for holding a ring-3 only list in data which gets + * shared between multiple contexts */ +#if defined(IN_RING3) +typedef RTLISTNODE RTLISTNODER3; +#else +typedef struct { RTR3PTR aOffLimits[2]; } RTLISTNODER3; +#endif +/** Version of RTLISTANCHOR for holding a ring-3 only list in data which gets + * shared between multiple contexts */ +typedef RTLISTNODER3 RTLISTANCHORR3; + + +/** + * Initialize a list. + * + * @param pList Pointer to an unitialised list. + */ +DECLINLINE(void) RTListInit(PRTLISTNODE pList) +{ + pList->pNext = pList; + pList->pPrev = pList; +} + +/** + * Append a node to the end of the list. + * + * @param pList The list to append the node to. + * @param pNode The node to append. + */ +DECLINLINE(void) RTListAppend(PRTLISTNODE pList, PRTLISTNODE pNode) +{ + pList->pPrev->pNext = pNode; + pNode->pPrev = pList->pPrev; + pNode->pNext = pList; + pList->pPrev = pNode; +} + +/** + * Add a node as the first element of the list. + * + * @param pList The list to prepend the node to. + * @param pNode The node to prepend. + */ +DECLINLINE(void) RTListPrepend(PRTLISTNODE pList, PRTLISTNODE pNode) +{ + pList->pNext->pPrev = pNode; + pNode->pNext = pList->pNext; + pNode->pPrev = pList; + pList->pNext = pNode; +} + +/** + * Inserts a node after the specified one. + * + * @param pCurNode The current node. + * @param pNewNode The node to insert. + */ +DECLINLINE(void) RTListNodeInsertAfter(PRTLISTNODE pCurNode, PRTLISTNODE pNewNode) +{ + RTListPrepend(pCurNode, pNewNode); +} + +/** + * Inserts a node before the specified one. + * + * @param pCurNode The current node. + * @param pNewNode The node to insert. + */ +DECLINLINE(void) RTListNodeInsertBefore(PRTLISTNODE pCurNode, PRTLISTNODE pNewNode) +{ + RTListAppend(pCurNode, pNewNode); +} + +/** + * Remove a node from a list. + * + * @param pNode The node to remove. + */ +DECLINLINE(void) RTListNodeRemove(PRTLISTNODE pNode) +{ + PRTLISTNODE pPrev = pNode->pPrev; + PRTLISTNODE pNext = pNode->pNext; + + pPrev->pNext = pNext; + pNext->pPrev = pPrev; + + /* poison */ + pNode->pNext = NULL; + pNode->pPrev = NULL; +} + +/** + * Checks if a node is the last element in the list. + * + * @retval true if the node is the last element in the list. + * @retval false otherwise + * + * @param pList The list. + * @param pNode The node to check. + */ +#define RTListNodeIsLast(pList, pNode) ((pNode)->pNext == (pList)) + +/** + * Checks if a node is the first element in the list. + * + * @retval true if the node is the first element in the list. + * @retval false otherwise. + * + * @param pList The list. + * @param pNode The node to check. + */ +#define RTListNodeIsFirst(pList, pNode) ((pNode)->pPrev == (pList)) + +/** + * Checks if a type converted node is actually the dummy element (@a pList). + * + * @retval true if the node is the dummy element in the list. + * @retval false otherwise. + * + * @param pList The list. + * @param pNode The node structure to check. Typically + * something obtained from RTListNodeGetNext() or + * RTListNodeGetPrev(). This is NOT a PRTLISTNODE + * but something that contains a RTLISTNODE member! + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeIsDummy(pList, pNode, Type, Member) \ + ( (pNode) == RT_FROM_MEMBER((pList), Type, Member) ) +/** @copydoc RTListNodeIsDummy */ +#define RTListNodeIsDummyCpp(pList, pNode, Type, Member) \ + ( (pNode) == RT_FROM_CPP_MEMBER((pList), Type, Member) ) + +/** + * Checks if a list is empty. + * + * @retval true if the list is empty. + * @retval false otherwise. + * + * @param pList The list to check. + */ +#define RTListIsEmpty(pList) ((pList)->pPrev == (pList)) + +/** + * Returns the next node in the list. + * + * @returns The next node. + * + * @param pCurNode The current node. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeGetNext(pCurNode, Type, Member) \ + RT_FROM_MEMBER((pCurNode)->pNext, Type, Member) +/** @copydoc RTListNodeGetNext */ +#define RTListNodeGetNextCpp(pCurNode, Type, Member) \ + RT_FROM_CPP_MEMBER((pCurNode)->pNext, Type, Member) + +/** + * Returns the previous node in the list. + * + * @returns The previous node. + * + * @param pCurNode The current node. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeGetPrev(pCurNode, Type, Member) \ + RT_FROM_MEMBER((pCurNode)->pPrev, Type, Member) +/** @copydoc RTListNodeGetPrev */ +#define RTListNodeGetPrevCpp(pCurNode, Type, Member) \ + RT_FROM_CPP_MEMBER((pCurNode)->pPrev, Type, Member) + +/** + * Returns the first element in the list (checks for empty list). + * + * @retval Pointer to the first list element. + * @retval NULL if the list is empty. + * + * @param pList List to get the first element from. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetFirst(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetNext(pList, Type, Member) : NULL) +/** @copydoc RTListGetFirst */ +#define RTListGetFirstCpp(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetNextCpp(pList, Type, Member) : NULL) + +/** + * Returns the last element in the list (checks for empty list). + * + * @retval Pointer to the last list element. + * @retval NULL if the list is empty. + * + * @param pList List to get the last element from. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetLast(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetPrev(pList, Type, Member) : NULL) +/** @copydoc RTListGetLast */ +#define RTListGetLastCpp(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetPrevCpp(pList, Type, Member) : NULL) + +/** + * Returns the next node in the list or NULL if the end has been reached. + * + * @returns The next node or NULL. + * + * @param pList The list @a pCurNode is linked on. + * @param pCurNode The current node, of type @a Type. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetNext(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL ) +/** @copydoc RTListGetNext */ +#define RTListGetNextCpp(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL ) + +/** + * Returns the previous node in the list or NULL if the start has been reached. + * + * @returns The previous node or NULL. + * + * @param pList The list @a pCurNode is linked on. + * @param pCurNode The current node, of type @a Type. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetPrev(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL ) +/** @copydoc RTListGetPrev */ +#define RTListGetPrevCpp(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL ) + +/** + * Enumerate the list in head to tail order. + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEach(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetNext(pList, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) ) +/** @copydoc RTListForEach */ +#define RTListForEachCpp(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetNextCpp(pList, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) ) + + +/** + * Enumerate the list in head to tail order, safe against removal of the + * current node. + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param pIterNext The name of the variable saving the pointer to + * the next element. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachSafe(pList, pIterator, pIterNext, Type, Member) \ + for (pIterator = RTListNodeGetNext(pList, Type, Member), \ + pIterNext = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = pIterNext, \ + pIterNext = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) ) +/** @copydoc RTListForEachSafe */ +#define RTListForEachSafeCpp(pList, pIterator, pIterNext, Type, Member) \ + for (pIterator = RTListNodeGetNextCpp(pList, Type, Member), \ + pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = pIterNext, \ + pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) ) + + +/** + * Enumerate the list in reverse order (tail to head). + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachReverse(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetPrev(pList, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) ) +/** @copydoc RTListForEachReverse */ +#define RTListForEachReverseCpp(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) ) + + +/** + * Enumerate the list in reverse order (tail to head). + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param pIterPrev The name of the variable saving the pointer to + * the previous element. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachReverseSafe(pList, pIterator, pIterPrev, Type, Member) \ + for (pIterator = RTListNodeGetPrev(pList, Type, Member), \ + pIterPrev = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = pIterPrev, \ + pIterPrev = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) ) +/** @copydoc RTListForEachReverseSafe */ +#define RTListForEachReverseSafeCpp(pList, pIterator, pIterPrev, Type, Member) \ + for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member), \ + pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = pIterPrev, \ + pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) ) + + +/** + * Move the given list to a new list header. + * + * @param pListDst The new list. + * @param pListSrc The list to move. + */ +DECLINLINE(void) RTListMove(PRTLISTNODE pListDst, PRTLISTNODE pListSrc) +{ + if (!RTListIsEmpty(pListSrc)) + { + pListDst->pNext = pListSrc->pNext; + pListDst->pPrev = pListSrc->pPrev; + + /* Adjust the first and last element links */ + pListDst->pNext->pPrev = pListDst; + pListDst->pPrev->pNext = pListDst; + + /* Finally remove the elements from the source list */ + RTListInit(pListSrc); + } +} + +/** + * List concatenation. + * + * @returns nothing. + * @param pListDst The destination list. + * @param pListSrc The source list to concatenate. + */ +DECLINLINE(void) RTListConcatenate(PRTLISTANCHOR pListDst, PRTLISTANCHOR pListSrc) +{ + if (!RTListIsEmpty(pListSrc)) + { + PRTLISTNODE pFirst = pListSrc->pNext; + PRTLISTNODE pLast = pListSrc->pPrev; + + pListDst->pPrev->pNext = pFirst; + pFirst->pPrev = pListDst->pPrev; + pLast->pNext = pListDst; + pListDst->pPrev = pLast; + + /* Finally remove the elements from the source list */ + RTListInit(pListSrc); + } +} + +RT_C_DECLS_END + +/** @} */ + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/lockvalidator.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/lockvalidator.h @@ -0,0 +1,1130 @@ +/** @file + * IPRT - Lock Validator. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_lockvalidator_h +#define ___iprt_lockvalidator_h + +#include +#include +#include +#include +#include + + +/** @defgroup grp_rtlockval RTLockValidator - Lock Validator + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + +/** Pointer to a record union. + * @internal */ +typedef union RTLOCKVALRECUNION *PRTLOCKVALRECUNION; + +/** + * Source position. + */ +typedef struct RTLOCKVALSRCPOS +{ + /** The file where the lock was taken. */ + R3R0PTRTYPE(const char * volatile) pszFile; + /** The function where the lock was taken. */ + R3R0PTRTYPE(const char * volatile) pszFunction; + /** Some ID indicating where the lock was taken, typically an address. */ + RTHCUINTPTR volatile uId; + /** The line number in the file. */ + uint32_t volatile uLine; +#if HC_ARCH_BITS == 64 + uint32_t u32Padding; /**< Alignment padding. */ +#endif +} RTLOCKVALSRCPOS; +AssertCompileSize(RTLOCKVALSRCPOS, HC_ARCH_BITS == 32 ? 16 : 32); +/* The pointer types are defined in iprt/types.h. */ + +/** @def RTLOCKVALSRCPOS_INIT + * Initializer for a RTLOCKVALSRCPOS variable. + * + * @param pszFile The file name. Optional (NULL). + * @param uLine The line number in that file. Optional (0). + * @param pszFunction The function. Optional (NULL). + * @param uId Some location ID, normally the return address. + * Optional (NULL). + */ +#if HC_ARCH_BITS == 64 +# define RTLOCKVALSRCPOS_INIT(pszFile, uLine, pszFunction, uId) \ + { (pszFile), (pszFunction), (uId), (uLine), 0 } +#else +# define RTLOCKVALSRCPOS_INIT(pszFile, uLine, pszFunction, uId) \ + { (pszFile), (pszFunction), (uId), (uLine) } +#endif + +/** @def RTLOCKVALSRCPOS_INIT_DEBUG_API + * Initializer for a RTLOCKVALSRCPOS variable in a typicial debug API + * variant. Assumes RT_SRC_POS_DECL and RTHCUINTPTR uId as arguments. + */ +#define RTLOCKVALSRCPOS_INIT_DEBUG_API() \ + RTLOCKVALSRCPOS_INIT(pszFile, iLine, pszFunction, uId) + +/** @def RTLOCKVALSRCPOS_INIT_NORMAL_API + * Initializer for a RTLOCKVALSRCPOS variable in a normal API + * variant. Assumes iprt/asm.h is included. + */ +#define RTLOCKVALSRCPOS_INIT_NORMAL_API() \ + RTLOCKVALSRCPOS_INIT(__FILE__, __LINE__, __PRETTY_FUNCTION__, (uintptr_t)ASMReturnAddress()) + +/** @def RTLOCKVALSRCPOS_INIT_POS_NO_ID + * Initializer for a RTLOCKVALSRCPOS variable when no @c uId is present. + * Assumes iprt/asm.h is included. + */ +#define RTLOCKVALSRCPOS_INIT_POS_NO_ID() \ + RTLOCKVALSRCPOS_INIT(pszFile, iLine, pszFunction, (uintptr_t)ASMReturnAddress()) + + +/** + * Lock validator record core. + */ +typedef struct RTLOCKVALRECORE +{ + /** The magic value indicating the record type. */ + uint32_t volatile u32Magic; +} RTLOCKVALRECCORE; +/** Pointer to a lock validator record core. */ +typedef RTLOCKVALRECCORE *PRTLOCKVALRECCORE; +/** Pointer to a const lock validator record core. */ +typedef RTLOCKVALRECCORE const *PCRTLOCKVALRECCORE; + + +/** + * Record recording the exclusive ownership of a lock. + * + * This is typically part of the per-lock data structure when compiling with + * the lock validator. + */ +typedef struct RTLOCKVALRECEXCL +{ + /** Record core with RTLOCKVALRECEXCL_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** Whether it's enabled or not. */ + bool fEnabled; + /** Reserved. */ + bool afReserved[3]; + /** Source position where the lock was taken. */ + RTLOCKVALSRCPOS SrcPos; + /** The current owner thread. */ + RTTHREAD volatile hThread; + /** Pointer to the lock record below us. Only accessed by the owner. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pDown; + /** Recursion count */ + uint32_t cRecursion; + /** The lock sub-class. */ + uint32_t volatile uSubClass; + /** The lock class. */ + RTLOCKVALCLASS hClass; + /** Pointer to the lock. */ + RTHCPTR hLock; + /** Pointer to the next sibling record. + * This is used to find the read side of a read-write lock. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pSibling; + /** The lock name. + * @remarks The bytes beyond 32 are for better size alignment and can be + * taken and used for other purposes if it becomes necessary. */ + char szName[32 + (HC_ARCH_BITS == 32 ? 12 : 8)]; +} RTLOCKVALRECEXCL; +AssertCompileSize(RTLOCKVALRECEXCL, HC_ARCH_BITS == 32 ? 0x60 : 0x80); +/* The pointer type is defined in iprt/types.h. */ + +/** + * For recording the one ownership share. + */ +typedef struct RTLOCKVALRECSHRDOWN +{ + /** Record core with RTLOCKVALRECSHRDOWN_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** Recursion count */ + uint16_t cRecursion; + /** Static (true) or dynamic (false) allocated record. */ + bool fStaticAlloc; + /** Reserved. */ + bool fReserved; + /** The current owner thread. */ + RTTHREAD volatile hThread; + /** Pointer to the lock record below us. Only accessed by the owner. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pDown; + /** Pointer back to the shared record. */ + R3R0PTRTYPE(PRTLOCKVALRECSHRD) pSharedRec; +#if HC_ARCH_BITS == 32 + /** Reserved. */ + RTHCPTR pvReserved; +#endif + /** Source position where the lock was taken. */ + RTLOCKVALSRCPOS SrcPos; +} RTLOCKVALRECSHRDOWN; +AssertCompileSize(RTLOCKVALRECSHRDOWN, HC_ARCH_BITS == 32 ? 24 + 16 : 32 + 32); +/** Pointer to a RTLOCKVALRECSHRDOWN. */ +typedef RTLOCKVALRECSHRDOWN *PRTLOCKVALRECSHRDOWN; + +/** + * Record recording the shared ownership of a lock. + * + * This is typically part of the per-lock data structure when compiling with + * the lock validator. + */ +typedef struct RTLOCKVALRECSHRD +{ + /** Record core with RTLOCKVALRECSHRD_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** The lock sub-class. */ + uint32_t volatile uSubClass; + /** The lock class. */ + RTLOCKVALCLASS hClass; + /** Pointer to the lock. */ + RTHCPTR hLock; + /** Pointer to the next sibling record. + * This is used to find the write side of a read-write lock. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pSibling; + + /** The number of entries in the table. + * Updated before inserting and after removal. */ + uint32_t volatile cEntries; + /** The index of the last entry (approximately). */ + uint32_t volatile iLastEntry; + /** The max table size. */ + uint32_t volatile cAllocated; + /** Set if the table is being reallocated, clear if not. + * This is used together with rtLockValidatorSerializeDetectionEnter to make + * sure there is exactly one thread doing the reallocation and that nobody is + * using the table at that point. */ + bool volatile fReallocating; + /** Whether it's enabled or not. */ + bool fEnabled; + /** Set if event semaphore signaller, clear if read-write semaphore. */ + bool fSignaller; + /** Alignment padding. */ + bool fPadding; + /** Pointer to a table containing pointers to records of all the owners. */ + R3R0PTRTYPE(PRTLOCKVALRECSHRDOWN volatile *) papOwners; + + /** The lock name. + * @remarks The bytes beyond 32 are for better size alignment and can be + * taken and used for other purposes if it becomes necessary. */ + char szName[32 + (HC_ARCH_BITS == 32 ? 8 : 8)]; +} RTLOCKVALRECSHRD; +AssertCompileSize(RTLOCKVALRECSHRD, HC_ARCH_BITS == 32 ? 0x50 : 0x60); + + +/** + * Makes the two records siblings. + * + * @returns VINF_SUCCESS on success, VERR_SEM_LV_INVALID_PARAMETER if either of + * the records are invalid. + * @param pRec1 Record 1. + * @param pRec2 Record 2. + */ +RTDECL(int) RTLockValidatorRecMakeSiblings(PRTLOCKVALRECCORE pRec1, PRTLOCKVALRECCORE pRec2); + +/** + * Initialize a lock validator record. + * + * Use RTLockValidatorRecExclDelete to deinitialize it. + * + * @param pRec The record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(void) RTLockValidatorRecExclInit(PRTLOCKVALRECEXCL pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, void *hLock, + bool fEnabled, const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(6, 7); +/** + * Initialize a lock validator record. + * + * Use RTLockValidatorRecExclDelete to deinitialize it. + * + * @param pRec The record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(void) RTLockValidatorRecExclInitV(PRTLOCKVALRECEXCL pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, void *hLock, + bool fEnabled, const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(6, 0); +/** + * Uninitialize a lock validator record previously initialized by + * RTLockRecValidatorInit. + * + * @param pRec The record. Must be valid. + */ +RTDECL(void) RTLockValidatorRecExclDelete(PRTLOCKVALRECEXCL pRec); + +/** + * Create and initialize a lock validator record. + * + * Use RTLockValidatorRecExclDestroy to deinitialize and destroy the returned + * record. + * + * @return VINF_SUCCESS or VERR_NO_MEMORY. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorRecExclCreate(PRTLOCKVALRECEXCL *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, void *hLock, + bool fEnabled, const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(6, 7); + +/** + * Create and initialize a lock validator record. + * + * Use RTLockValidatorRecExclDestroy to deinitialize and destroy the returned + * record. + * + * @return VINF_SUCCESS or VERR_NO_MEMORY. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(int) RTLockValidatorRecExclCreateV(PRTLOCKVALRECEXCL *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, void *hLock, + bool fEnabled, const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(6, 0); + +/** + * Deinitialize and destroy a record created by RTLockValidatorRecExclCreate. + * + * @param ppRec Pointer to the record pointer. Will be set to + * NULL. + */ +RTDECL(void) RTLockValidatorRecExclDestroy(PRTLOCKVALRECEXCL *ppRec); + +/** + * Sets the sub-class of the record. + * + * It is recommended to try make sure that nobody is using this class while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param pRec The validator record. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTLockValidatorRecExclSetSubClass(PRTLOCKVALRECEXCL pRec, uint32_t uSubClass); + +/** + * Record the specified thread as lock owner and increment the write lock count. + * + * This function is typically called after acquiring the lock. It accounts for + * recursions so it can be used instead of RTLockValidatorRecExclRecursion. Use + * RTLockValidatorRecExclReleaseOwner to reverse the effect. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + * @param fFirstRecursion Set if it is the first recursion, clear if not + * sure. + */ +RTDECL(void) RTLockValidatorRecExclSetOwner(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fFirstRecursion); + +/** + * Check the exit order and release (unset) the ownership. + * + * This is called by routines implementing releasing an exclusive lock, + * typically before getting down to the final lock releasing. Can be used for + * recursive releasing instead of RTLockValidatorRecExclUnwind. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the order is wrong. Will have + * done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param fFinalRecursion Set if it's the final recursion, clear if not + * sure. + */ +RTDECL(int) RTLockValidatorRecExclReleaseOwner(PRTLOCKVALRECEXCL pRec, bool fFinalRecursion); + +/** + * Clear the lock ownership and decrement the write lock count. + * + * This is only for special cases where we wish to drop lock validation + * recording. See RTLockValidatorRecExclCheckAndRelease. + * + * @param pRec The validator record. + */ +RTDECL(void) RTLockValidatorRecExclReleaseOwnerUnchecked(PRTLOCKVALRECEXCL pRec); + +/** + * Checks and records a lock recursion. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NESTED if the semaphore class forbids recursion. Gone + * thru the motions. + * @retval VERR_SEM_LV_WRONG_ORDER if the locking order is wrong. Gone thru + * the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(int) RTLockValidatorRecExclRecursion(PRTLOCKVALRECEXCL pRec, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Checks and records a lock unwind (releasing one recursion). + * + * This should be coupled with called to RTLockValidatorRecExclRecursion. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the release order is wrong. Gone + * thru the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + */ +RTDECL(int) RTLockValidatorRecExclUnwind(PRTLOCKVALRECEXCL pRec); + +/** + * Checks and records a mixed recursion. + * + * An example of a mixed recursion is a writer requesting read access to a + * SemRW. + * + * This should be coupled with called to RTLockValidatorRecExclUnwindMixed. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NESTED if the semaphore class forbids recursion. Gone + * thru the motions. + * @retval VERR_SEM_LV_WRONG_ORDER if the locking order is wrong. Gone thru + * the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record it to accounted it to. + * @param pRecMixed The validator record it came in on. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(int) RTLockValidatorRecExclRecursionMixed(PRTLOCKVALRECEXCL pRec, PRTLOCKVALRECCORE pRecMixed, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Checks and records the unwinding of a mixed recursion. + * + * This should be coupled with called to RTLockValidatorRecExclRecursionMixed. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the release order is wrong. Gone + * thru the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record it was accounted to. + * @param pRecMixed The validator record it came in on. + */ +RTDECL(int) RTLockValidatorRecExclUnwindMixed(PRTLOCKVALRECEXCL pRec, PRTLOCKVALRECCORE pRecMixed); + +/** + * Check the exclusive locking order. + * + * This is called by routines implementing exclusive lock acquisition. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_ORDER if the order is wrong. Will have done all + * necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + * @param cMillies The timeout, in milliseconds. + */ +RTDECL(int) RTLockValidatorRecExclCheckOrder(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, RTMSINTERVAL cMillies); + +/** + * Do deadlock detection before blocking on exclusive access to a lock and + * change the thread state. + * + * @retval VINF_SUCCESS - thread is in the specified sleep state. + * @retval VERR_SEM_LV_DEADLOCK if blocking would deadlock. Gone thru the + * motions. + * @retval VERR_SEM_LV_NESTED if the semaphore isn't recursive and hThread is + * already the owner. Gone thru the motions. + * @retval VERR_SEM_LV_ILLEGAL_UPGRADE if it's a deadlock on the same lock. + * The caller must handle any legal upgrades without invoking this + * function (for now). + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record we're blocking on. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies The timeout, in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecExclCheckBlocking(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * RTLockValidatorRecExclCheckOrder and RTLockValidatorRecExclCheckBlocking + * baked into one call. + * + * @returns Any of the statuses returned by the two APIs. + * @param pRec The validator record. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies The timeout, in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecExclCheckOrderAndBlocking(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * Initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDelete to deinitialize it. + * + * @param pRec The shared lock record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(void) RTLockValidatorRecSharedInit(PRTLOCKVALRECSHRD pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fSignaller, bool fEnabled, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(7, 8); + +/** + * Initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDelete to deinitialize it. + * + * @param pRec The shared lock record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(void) RTLockValidatorRecSharedInitV(PRTLOCKVALRECSHRD pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fSignaller, bool fEnabled, + const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(7, 0); + +/** + * Uninitialize a lock validator record previously initialized by + * RTLockValidatorRecSharedInit. + * + * @param pRec The shared lock record. Must be valid. + */ +RTDECL(void) RTLockValidatorRecSharedDelete(PRTLOCKVALRECSHRD pRec); + +/** + * Create and initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDestroy to deinitialize and destroy the returned + * record. + * + * @returns IPRT status code. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param pvLock The lock handle or address. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorRecSharedCreate(PRTLOCKVALRECSHRD *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *pvLock, bool fSignaller, bool fEnabled, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(7, 8); + +/** + * Create and initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDestroy to deinitialize and destroy the returned + * record. + * + * @returns IPRT status code. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param pvLock The lock handle or address. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(int) RTLockValidatorRecSharedCreateV(PRTLOCKVALRECSHRD *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *pvLock, bool fSignaller, bool fEnabled, + const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(7, 0); + +/** + * Deinitialize and destroy a record created by RTLockValidatorRecSharedCreate. + * + * @param ppRec Pointer to the record pointer. Will be set to + * NULL. + */ +RTDECL(void) RTLockValidatorRecSharedDestroy(PRTLOCKVALRECSHRD *ppRec); + +/** + * Sets the sub-class of the record. + * + * It is recommended to try make sure that nobody is using this class while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param pRec The validator record. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTLockValidatorRecSharedSetSubClass(PRTLOCKVALRECSHRD pRec, uint32_t uSubClass); + +/** + * Check the shared locking order. + * + * This is called by routines implementing shared lock acquisition. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_ORDER if the order is wrong. Will have done all + * necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + * @param cMillies Intended sleep time in milliseconds. + */ +RTDECL(int) RTLockValidatorRecSharedCheckOrder(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, RTMSINTERVAL cMillies); + +/** + * Do deadlock detection before blocking on shared access to a lock and change + * the thread state. + * + * @retval VINF_SUCCESS - thread is in the specified sleep state. + * @retval VERR_SEM_LV_DEADLOCK if blocking would deadlock. Gone thru the + * motions. + * @retval VERR_SEM_LV_NESTED if the semaphore isn't recursive and hThread is + * already the owner. Gone thru the motions. + * @retval VERR_SEM_LV_ILLEGAL_UPGRADE if it's a deadlock on the same lock. + * The caller must handle any legal upgrades without invoking this + * function (for now). + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record we're blocking on. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies Intended sleep time in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecSharedCheckBlocking(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * RTLockValidatorRecSharedCheckOrder and RTLockValidatorRecSharedCheckBlocking + * baked into one call. + * + * @returns Any of the statuses returned by the two APIs. + * @param pRec The validator record. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies Intended sleep time in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecSharedCheckOrderAndBlocking(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * Removes all current owners and makes hThread the only owner. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(void) RTLockValidatorRecSharedResetOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Adds an owner to a shared locking record. + * + * Takes recursion into account. This function is typically called after + * acquiring the lock in shared mode. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(void) RTLockValidatorRecSharedAddOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Removes an owner from a shared locking record. + * + * Takes recursion into account. This function is typically called before + * releasing the lock. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + */ +RTDECL(void) RTLockValidatorRecSharedRemoveOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread); + +/** + * Checks if the specified thread is one of the owners. + * + * @returns true if it is, false if not. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + */ +RTDECL(bool) RTLockValidatorRecSharedIsOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread); + +/** + * Check the exit order and release (unset) the shared ownership. + * + * This is called by routines implementing releasing the read/write lock. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the order is wrong. Will have + * done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. NIL_RTTHREAD + * is an alias for the current thread. + */ +RTDECL(int) RTLockValidatorRecSharedCheckAndRelease(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf); + +/** + * Check the signaller of an event. + * + * This is called by routines implementing releasing the event semaphore (both + * kinds). + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NOT_SIGNALLER if the thread is not in the record. Will + * have done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. NIL_RTTHREAD + * is an alias for the current thread. + */ +RTDECL(int) RTLockValidatorRecSharedCheckSignaller(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf); + +/** + * Gets the number of write locks and critical sections the specified + * thread owns. + * + * This number does not include any nested lock/critect entries. + * + * Note that it probably will return 0 for non-strict builds since + * release builds doesn't do unnecessary diagnostic counting like this. + * + * @returns Number of locks on success (0+) and VERR_INVALID_HANDLER on failure + * @param Thread The thread we're inquiring about. + * @remarks Will only work for strict builds. + */ +RTDECL(int32_t) RTLockValidatorWriteLockGetCount(RTTHREAD Thread); + +/** + * Works the THREADINT::cWriteLocks member, mostly internal. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorWriteLockInc(RTTHREAD Thread); + +/** + * Works the THREADINT::cWriteLocks member, mostly internal. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorWriteLockDec(RTTHREAD Thread); + +/** + * Gets the number of read locks the specified thread owns. + * + * Note that nesting read lock entry will be included in the + * total sum. And that it probably will return 0 for non-strict + * builds since release builds doesn't do unnecessary diagnostic + * counting like this. + * + * @returns Number of read locks on success (0+) and VERR_INVALID_HANDLER on failure + * @param Thread The thread we're inquiring about. + */ +RTDECL(int32_t) RTLockValidatorReadLockGetCount(RTTHREAD Thread); + +/** + * Works the THREADINT::cReadLocks member. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorReadLockInc(RTTHREAD Thread); + +/** + * Works the THREADINT::cReadLocks member. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorReadLockDec(RTTHREAD Thread); + +/** + * Query which lock the specified thread is waiting on. + * + * @returns The lock handle value or NULL. + * @param hThread The thread in question. + */ +RTDECL(void *) RTLockValidatorQueryBlocking(RTTHREAD hThread); + +/** + * Checks if the thread is running in the lock validator after it has entered a + * block state. + * + * @returns true if it is, false if it isn't. + * @param hThread The thread in question. + */ +RTDECL(bool) RTLockValidatorIsBlockedThreadInValidator(RTTHREAD hThread); + +/** + * Checks if the calling thread is holding a lock in the specified class. + * + * @returns true if it holds a lock in the specific class, false if it + * doesn't. + * + * @param hCurrentThread The current thread. Pass NIL_RTTHREAD if you're + * lazy. + * @param hClass The class. + */ +RTDECL(bool) RTLockValidatorHoldsLocksInClass(RTTHREAD hCurrentThread, RTLOCKVALCLASS hClass); + +/** + * Checks if the calling thread is holding a lock in the specified sub-class. + * + * @returns true if it holds a lock in the specific sub-class, false if it + * doesn't. + * + * @param hCurrentThread The current thread. Pass NIL_RTTHREAD if you're + * lazy. + * @param hClass The class. + * @param uSubClass The new sub-class value. + */ +RTDECL(bool) RTLockValidatorHoldsLocksInSubClass(RTTHREAD hCurrentThread, RTLOCKVALCLASS hClass, uint32_t uSubClass); + + + +/** + * Creates a new lock validator class, all properties specified. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param pSrcPos The source position of the create call. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param fRecursionOk Whether to allow lock recursion or not. + * @param fStrictReleaseOrder Enforce strict lock release order or not. + * @param cMsMinDeadlock Used to raise the sleep interval at which + * deadlock detection kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param cMsMinOrder Used to raise the sleep interval at which lock + * order validation kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + * + * @remarks The properties can be modified after creation by the + * RTLockValidatorClassSet* methods. + */ +RTDECL(int) RTLockValidatorClassCreateEx(PRTLOCKVALCLASS phClass, PCRTLOCKVALSRCPOS pSrcPos, + bool fAutodidact, bool fRecursionOk, bool fStrictReleaseOrder, + RTMSINTERVAL cMsMinDeadlock, RTMSINTERVAL cMsMinOrder, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(8, 9); + +/** + * Creates a new lock validator class, all properties specified. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param pSrcPos The source position of the create call. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param fRecursionOk Whether to allow lock recursion or not. + * @param fStrictReleaseOrder Enforce strict lock release order or not. + * @param cMsMinDeadlock Used to raise the sleep interval at which + * deadlock detection kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param cMsMinOrder Used to raise the sleep interval at which lock + * order validation kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param va Format string arguments. + * + * @remarks The properties can be modified after creation by the + * RTLockValidatorClassSet* methods. + */ +RTDECL(int) RTLockValidatorClassCreateExV(PRTLOCKVALCLASS phClass, PCRTLOCKVALSRCPOS pSrcPos, + bool fAutodidact, bool fRecursionOk, bool fStrictReleaseOrder, + RTMSINTERVAL cMsMinDeadlock, RTMSINTERVAL cMsMinOrder, + const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(8, 0); + +/** + * Creates a new lock validator class. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param SRC_POS The source position where call is being made from. + * Use RT_SRC_POS when possible. Optional. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorClassCreate(PRTLOCKVALCLASS phClass, bool fAutodidact, RT_SRC_POS_DECL, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(6, 7); + +/** + * Creates a new lock validator class with a reference that is consumed by the + * first call to RTLockValidatorClassRetain. + * + * This is tailored for use in the parameter list of a semaphore constructor. + * + * @returns Class handle with a reference that is automatically consumed by the + * first retainer. NIL_RTLOCKVALCLASS if we run into trouble. + * + * @param SRC_POS The source position where call is being made from. + * Use RT_SRC_POS when possible. Optional. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassCreateUnique(RT_SRC_POS_DECL, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(4, 5); + +/** + * Finds a class for the specified source position. + * + * @returns A handle to the class (not retained!) or NIL_RTLOCKVALCLASS. + * @param pSrcPos The source position. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassFindForSrcPos(PRTLOCKVALSRCPOS pSrcPos); + +/** + * Finds or creates a class given the source position. + * + * @returns Class handle (not retained!) or NIL_RTLOCKVALCLASS. + * @param SRC_POS The source position where call is being made from. + * Use RT_SRC_POS when possible. Optional. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassForSrcPos(RT_SRC_POS_DECL, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(4, 5); + +/** + * Retains a reference to a lock validator class. + * + * @returns New reference count; UINT32_MAX if the handle is invalid. + * @param hClass Handle to the class. + */ +RTDECL(uint32_t) RTLockValidatorClassRetain(RTLOCKVALCLASS hClass); + +/** + * Releases a reference to a lock validator class. + * + * @returns New reference count. 0 if hClass is NIL_RTLOCKVALCLASS. UINT32_MAX + * if the handle is invalid. + * @param hClass Handle to the class. + */ +RTDECL(uint32_t) RTLockValidatorClassRelease(RTLOCKVALCLASS hClass); + +/** + * Teaches the class @a hClass that locks in the class @a hPriorClass can be + * held when taking a lock of class @a hClass + * + * @returns IPRT status. + * @param hClass Handle to the pupil class. + * @param hPriorClass Handle to the class that can be held prior to + * taking a lock in the pupil class. (No reference + * is consumed.) + */ +RTDECL(int) RTLockValidatorClassAddPriorClass(RTLOCKVALCLASS hClass, RTLOCKVALCLASS hPriorClass); + +/** + * Enables or disables the strict release order enforcing. + * + * @returns IPRT status. + * @param hClass Handle to the class to change. + * @param fEnabled Enable it (true) or disable it (false). + */ +RTDECL(int) RTLockValidatorClassEnforceStrictReleaseOrder(RTLOCKVALCLASS hClass, bool fEnabled); + +/** + * Enables / disables the lock validator for new locks. + * + * @returns The old setting. + * @param fEnabled The new setting. + */ +RTDECL(bool) RTLockValidatorSetEnabled(bool fEnabled); + +/** + * Is the lock validator enabled? + * + * @returns True if enabled, false if not. + */ +RTDECL(bool) RTLockValidatorIsEnabled(void); + +/** + * Controls whether the lock validator should be quiet or noisy (default). + * + * @returns The old setting. + * @param fQuiet The new setting. + */ +RTDECL(bool) RTLockValidatorSetQuiet(bool fQuiet); + +/** + * Is the lock validator quiet or noisy? + * + * @returns True if it is quiet, false if noisy. + */ +RTDECL(bool) RTLockValidatorIsQuiet(void); + +/** + * Makes the lock validator panic (default) or not. + * + * @returns The old setting. + * @param fPanic The new setting. + */ +RTDECL(bool) RTLockValidatorSetMayPanic(bool fPanic); + +/** + * Can the lock validator cause panic. + * + * @returns True if it can, false if not. + */ +RTDECL(bool) RTLockValidatorMayPanic(void); + + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/log.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/log.h @@ -0,0 +1,2525 @@ +/** @file + * IPRT - Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_log_h +#define ___iprt_log_h + +#include +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_log RTLog - Logging + * @ingroup grp_rt + * @{ + */ + +/** + * IPRT Logging Groups. + * (Remember to update RT_LOGGROUP_NAMES!) + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +typedef enum RTLOGGROUP +{ + /** Default logging group. */ + RTLOGGROUP_DEFAULT, + RTLOGGROUP_CRYPTO, + RTLOGGROUP_DBG, + RTLOGGROUP_DBG_DWARF, + RTLOGGROUP_DIR, + RTLOGGROUP_FILE, + RTLOGGROUP_FS, + RTLOGGROUP_HTTP, + RTLOGGROUP_LDR, + RTLOGGROUP_PATH, + RTLOGGROUP_PROCESS, + RTLOGGROUP_SYMLINK, + RTLOGGROUP_THREAD, + RTLOGGROUP_TIME, + RTLOGGROUP_TIMER, + RTLOGGROUP_ZIP = 31, + RTLOGGROUP_FIRST_USER = 32 +} RTLOGGROUP; + +/** @def RT_LOGGROUP_NAMES + * IPRT Logging group names. + * + * Must correspond 100% to RTLOGGROUP! + * Don't forget commas! + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +#define RT_LOGGROUP_NAMES \ + "DEFAULT", \ + "RT_CRYPTO", \ + "RT_DBG", \ + "RT_DBG_DWARF", \ + "RT_DIR", \ + "RT_FILE", \ + "RT_FS", \ + "RT_HTTP", \ + "RT_LDR", \ + "RT_PATH", \ + "RT_PROCESS", \ + "RT_SYMLINK", \ + "RT_THREAD", \ + "RT_TIME", \ + "RT_TIMER", \ + "RT_15", \ + "RT_16", \ + "RT_17", \ + "RT_18", \ + "RT_19", \ + "RT_20", \ + "RT_21", \ + "RT_22", \ + "RT_23", \ + "RT_24", \ + "RT_25", \ + "RT_26", \ + "RT_27", \ + "RT_28", \ + "RT_29", \ + "RT_30", \ + "RT_ZIP" \ + + +/** @def LOG_GROUP + * Active logging group. + */ +#ifndef LOG_GROUP +# define LOG_GROUP RTLOGGROUP_DEFAULT +#endif + +/** @def LOG_FN_FMT + * You can use this to specify you desired way of printing __PRETTY_FUNCTION__ + * if you dislike the default one. + */ +#ifndef LOG_FN_FMT +# define LOG_FN_FMT "%Rfn" +#endif + +#ifdef LOG_INSTANCE +# error "LOG_INSTANCE is no longer supported." +#endif +#ifdef LOG_REL_INSTANCE +# error "LOG_REL_INSTANCE is no longer supported." +#endif + +/** Logger structure. */ +#ifdef IN_RC +typedef struct RTLOGGERRC RTLOGGER; +#else +typedef struct RTLOGGER RTLOGGER; +#endif +/** Pointer to logger structure. */ +typedef RTLOGGER *PRTLOGGER; +/** Pointer to const logger structure. */ +typedef const RTLOGGER *PCRTLOGGER; + + +/** Guest context logger structure. */ +typedef struct RTLOGGERRC RTLOGGERRC; +/** Pointer to guest context logger structure. */ +typedef RTLOGGERRC *PRTLOGGERRC; +/** Pointer to const guest context logger structure. */ +typedef const RTLOGGERRC *PCRTLOGGERRC; + + +/** + * Logger phase. + * + * Used for signalling the log header/footer callback what to do. + */ +typedef enum RTLOGPHASE +{ + /** Begin of the logging. */ + RTLOGPHASE_BEGIN = 0, + /** End of the logging. */ + RTLOGPHASE_END, + /** Before rotating the log file. */ + RTLOGPHASE_PREROTATE, + /** After rotating the log file. */ + RTLOGPHASE_POSTROTATE, + /** 32-bit type blow up hack. */ + RTLOGPHASE_32BIT_HACK = 0x7fffffff +} RTLOGPHASE; + + +/** + * Logger function. + * + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +typedef DECLCALLBACK(void) FNRTLOGGER(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); +/** Pointer to logger function. */ +typedef FNRTLOGGER *PFNRTLOGGER; + +/** + * Flush function. + * + * @param pLogger Pointer to the logger instance which is to be flushed. + */ +typedef DECLCALLBACK(void) FNRTLOGFLUSH(PRTLOGGER pLogger); +/** Pointer to flush function. */ +typedef FNRTLOGFLUSH *PFNRTLOGFLUSH; + +/** + * Flush function. + * + * @param pLogger Pointer to the logger instance which is to be flushed. + */ +typedef DECLCALLBACK(void) FNRTLOGFLUSHGC(PRTLOGGERRC pLogger); +/** Pointer to logger function. */ +typedef RCPTRTYPE(FNRTLOGFLUSHGC *) PFNRTLOGFLUSHGC; + +/** + * Header/footer message callback. + * + * @param pLogger Pointer to the logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +typedef DECLCALLBACK(void) FNRTLOGPHASEMSG(PRTLOGGER pLogger, const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(2, 3); +/** Pointer to header/footer message callback function. */ +typedef FNRTLOGPHASEMSG *PFNRTLOGPHASEMSG; + +/** + * Log file header/footer callback. + * + * @param pLogger Pointer to the logger instance. + * @param enmLogPhase Indicates at what time the callback is invoked. + * @param pfnLogPhaseMsg Callback for writing the header/footer (RTLogPrintf + * and others are out of bounds). + */ +typedef DECLCALLBACK(void) FNRTLOGPHASE(PRTLOGGER pLogger, RTLOGPHASE enmLogPhase, PFNRTLOGPHASEMSG pfnLogPhaseMsg); +/** Pointer to log header/footer callback function. */ +typedef FNRTLOGPHASE *PFNRTLOGPHASE; + +/** + * Custom log prefix callback. + * + * + * @returns The number of chars written. + * + * @param pLogger Pointer to the logger instance. + * @param pchBuf Output buffer pointer. + * No need to terminate the output. + * @param cchBuf The size of the output buffer. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(size_t) FNRTLOGPREFIX(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser); +/** Pointer to prefix callback function. */ +typedef FNRTLOGPREFIX *PFNRTLOGPREFIX; + + + +/** + * Logger instance structure for raw-mode context (RC). + */ +struct RTLOGGERRC +{ + /** Pointer to temporary scratch buffer. + * This is used to format the log messages. */ + char achScratch[32768]; + /** Current scratch buffer position. */ + uint32_t offScratch; + /** This is set if a prefix is pending. */ + bool fPendingPrefix; + bool afAlignment[3]; + /** Pointer to the logger function. + * This is actually pointer to a wrapper which will push a pointer to the + * instance pointer onto the stack before jumping to the real logger function. + * A very unfortunate hack to work around the missing variadic macro support in C++. */ + RCPTRTYPE(PFNRTLOGGER) pfnLogger; + /** Pointer to the flush function. */ + PFNRTLOGFLUSHGC pfnFlush; + /** Magic number (RTLOGGERRC_MAGIC). */ + uint32_t u32Magic; + /** Logger instance flags - RTLOGFLAGS. */ + uint32_t fFlags; + /** Number of groups in the afGroups member. */ + uint32_t cGroups; + /** Group flags array - RTLOGGRPFLAGS. + * This member have variable length and may extend way beyond + * the declared size of 1 entry. */ + uint32_t afGroups[1]; +}; + +/** RTLOGGERRC::u32Magic value. (John Rogers Searle) */ +#define RTLOGGERRC_MAGIC 0x19320731 + + + +#ifndef IN_RC + +/** Pointer to internal logger bits. */ +typedef struct RTLOGGERINTERNAL *PRTLOGGERINTERNAL; + +/** + * Logger instance structure. + */ +struct RTLOGGER +{ + /** Pointer to temporary scratch buffer. + * This is used to format the log messages. */ + char achScratch[49152]; + /** Current scratch buffer position. */ + uint32_t offScratch; + /** Magic number. */ + uint32_t u32Magic; + /** Logger instance flags - RTLOGFLAGS. */ + uint32_t fFlags; + /** Destination flags - RTLOGDEST. */ + uint32_t fDestFlags; + /** Pointer to the internal bits of the logger. + * (The memory is allocated in the same block as RTLOGGER.) */ + PRTLOGGERINTERNAL pInt; + /** Pointer to the logger function (used in non-C99 mode only). + * + * This is actually pointer to a wrapper which will push a pointer to the + * instance pointer onto the stack before jumping to the real logger function. + * A very unfortunate hack to work around the missing variadic macro + * support in older C++/C standards. (The memory is allocated using + * RTMemExecAlloc(), except for agnostic R0 code.) */ + PFNRTLOGGER pfnLogger; + /** Number of groups in the afGroups and papszGroups members. */ + uint32_t cGroups; + /** Group flags array - RTLOGGRPFLAGS. + * This member have variable length and may extend way beyond + * the declared size of 1 entry. */ + uint32_t afGroups[1]; +}; + +/** RTLOGGER::u32Magic value. (Avram Noam Chomsky) */ +# define RTLOGGER_MAGIC UINT32_C(0x19281207) + +#endif /* !IN_RC */ + + +/** + * Logger flags. + */ +typedef enum RTLOGFLAGS +{ + /** The logger instance is disabled for normal output. */ + RTLOGFLAGS_DISABLED = 0x00000001, + /** The logger instance is using buffered output. */ + RTLOGFLAGS_BUFFERED = 0x00000002, + /** The logger instance expands LF to CR/LF. */ + RTLOGFLAGS_USECRLF = 0x00000010, + /** Append to the log destination where applicable. */ + RTLOGFLAGS_APPEND = 0x00000020, + /** Show relative timestamps with PREFIX_TSC and PREFIX_TS */ + RTLOGFLAGS_REL_TS = 0x00000040, + /** Show decimal timestamps with PREFIX_TSC and PREFIX_TS */ + RTLOGFLAGS_DECIMAL_TS = 0x00000080, + /** Open the file in write through mode. */ + RTLOGFLAGS_WRITE_THROUGH = 0x00000100, + /** Flush the file to disk when flushing the buffer. */ + RTLOGFLAGS_FLUSH = 0x00000200, + /** Restrict the number of log entries per group. */ + RTLOGFLAGS_RESTRICT_GROUPS = 0x00000400, + /** New lines should be prefixed with the write and read lock counts. */ + RTLOGFLAGS_PREFIX_LOCK_COUNTS = 0x00008000, + /** New lines should be prefixed with the CPU id (ApicID on intel/amd). */ + RTLOGFLAGS_PREFIX_CPUID = 0x00010000, + /** New lines should be prefixed with the native process id. */ + RTLOGFLAGS_PREFIX_PID = 0x00020000, + /** New lines should be prefixed with group flag number causing the output. */ + RTLOGFLAGS_PREFIX_FLAG_NO = 0x00040000, + /** New lines should be prefixed with group flag name causing the output. */ + RTLOGFLAGS_PREFIX_FLAG = 0x00080000, + /** New lines should be prefixed with group number. */ + RTLOGFLAGS_PREFIX_GROUP_NO = 0x00100000, + /** New lines should be prefixed with group name. */ + RTLOGFLAGS_PREFIX_GROUP = 0x00200000, + /** New lines should be prefixed with the native thread id. */ + RTLOGFLAGS_PREFIX_TID = 0x00400000, + /** New lines should be prefixed with thread name. */ + RTLOGFLAGS_PREFIX_THREAD = 0x00800000, + /** New lines should be prefixed with data from a custom callback. */ + RTLOGFLAGS_PREFIX_CUSTOM = 0x01000000, + /** New lines should be prefixed with formatted timestamp since program start. */ + RTLOGFLAGS_PREFIX_TIME_PROG = 0x04000000, + /** New lines should be prefixed with formatted timestamp (UCT). */ + RTLOGFLAGS_PREFIX_TIME = 0x08000000, + /** New lines should be prefixed with milliseconds since program start. */ + RTLOGFLAGS_PREFIX_MS_PROG = 0x10000000, + /** New lines should be prefixed with timestamp. */ + RTLOGFLAGS_PREFIX_TSC = 0x20000000, + /** New lines should be prefixed with timestamp. */ + RTLOGFLAGS_PREFIX_TS = 0x40000000, + /** The prefix mask. */ + RTLOGFLAGS_PREFIX_MASK = 0x7dff8000 +} RTLOGFLAGS; + +/** + * Logger per group flags. + * + * @remarks We only use the lower 16 bits here. We'll be combining it with the + * group number in a few places. + */ +typedef enum RTLOGGRPFLAGS +{ + /** Enabled. */ + RTLOGGRPFLAGS_ENABLED = 0x0001, + /** Flow logging. */ + RTLOGGRPFLAGS_FLOW = 0x0002, + /** Warnings logging. */ + RTLOGGRPFLAGS_WARN = 0x0004, + /* 0x0008 for later. */ + /** Level 1 logging. */ + RTLOGGRPFLAGS_LEVEL_1 = 0x0010, + /** Level 2 logging. */ + RTLOGGRPFLAGS_LEVEL_2 = 0x0020, + /** Level 3 logging. */ + RTLOGGRPFLAGS_LEVEL_3 = 0x0040, + /** Level 4 logging. */ + RTLOGGRPFLAGS_LEVEL_4 = 0x0080, + /** Level 5 logging. */ + RTLOGGRPFLAGS_LEVEL_5 = 0x0100, + /** Level 6 logging. */ + RTLOGGRPFLAGS_LEVEL_6 = 0x0200, + /** Level 7 logging. */ + RTLOGGRPFLAGS_LEVEL_7 = 0x0400, + /** Level 8 logging. */ + RTLOGGRPFLAGS_LEVEL_8 = 0x0800, + /** Level 9 logging. */ + RTLOGGRPFLAGS_LEVEL_9 = 0x1000, + /** Level 10 logging. */ + RTLOGGRPFLAGS_LEVEL_10 = 0x2000, + /** Level 11 logging. */ + RTLOGGRPFLAGS_LEVEL_11 = 0x4000, + /** Level 12 logging. */ + RTLOGGRPFLAGS_LEVEL_12 = 0x8000, + + /** Restrict the number of log entries. */ + RTLOGGRPFLAGS_RESTRICT = 0x40000000, + /** Blow up the type. */ + RTLOGGRPFLAGS_32BIT_HACK = 0x7fffffff +} RTLOGGRPFLAGS; + +/** + * Logger destination type. + */ +typedef enum RTLOGDEST +{ + /** Log to file. */ + RTLOGDEST_FILE = 0x00000001, + /** Log to stdout. */ + RTLOGDEST_STDOUT = 0x00000002, + /** Log to stderr. */ + RTLOGDEST_STDERR = 0x00000004, + /** Log to debugger (win32 only). */ + RTLOGDEST_DEBUGGER = 0x00000008, + /** Log to com port. */ + RTLOGDEST_COM = 0x00000010, + /** Log a memory ring buffer. */ + RTLOGDEST_RINGBUF = 0x00000020, + /** Just a dummy flag to be used when no other flag applies. */ + RTLOGDEST_DUMMY = 0x20000000, + /** Log to a user defined output stream. */ + RTLOGDEST_USER = 0x40000000 +} RTLOGDEST; + + +RTDECL(void) RTLogPrintfEx(void *pvInstance, unsigned fFlags, unsigned iGroup, + const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(4, 5); + + +#ifdef DOXYGEN_RUNNING +# define LOG_DISABLED +# define LOG_ENABLED +# define LOG_ENABLE_FLOW +#endif + +/** @def LOG_DISABLED + * Use this compile time define to disable all logging macros. It can + * be overridden for each of the logging macros by the LOG_ENABLE* + * compile time defines. + */ + +/** @def LOG_ENABLED + * Use this compile time define to enable logging when not in debug mode + * or LOG_DISABLED is set. + * This will enabled Log() only. + */ + +/** @def LOG_ENABLE_FLOW + * Use this compile time define to enable flow logging when not in + * debug mode or LOG_DISABLED is defined. + * This will enable LogFlow() only. + */ + +/* + * Determine whether logging is enabled and forcefully normalize the indicators. + */ +#if (defined(DEBUG) || defined(LOG_ENABLED)) && !defined(LOG_DISABLED) +# undef LOG_DISABLED +# undef LOG_ENABLED +# define LOG_ENABLED +#else +# undef LOG_ENABLED +# undef LOG_DISABLED +# define LOG_DISABLED +#endif + + +/** @def LOG_USE_C99 + * Governs the use of variadic macros. + */ +#ifndef LOG_USE_C99 +# if defined(RT_ARCH_AMD64) || defined(RT_OS_DARWIN) || defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define LOG_USE_C99 +# endif +#endif + + +/** @name Macros for checking whether a log level is enabled. + * @{ */ +/** @def LogIsItEnabled + * Checks whether the specified logging group is enabled or not. + */ +#ifdef LOG_ENABLED +# define LogIsItEnabled(a_fFlags, a_iGroup) ( RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL ) +#else +# define LogIsItEnabled(a_fFlags, a_iGroup) (false) +#endif + +/** @def LogIsEnabled + * Checks whether level 1 logging is enabled. + */ +#define LogIsEnabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP) + +/** @def LogIs2Enabled + * Checks whether level 2 logging is enabled. + */ +#define LogIs2Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP) + +/** @def LogIs3Enabled + * Checks whether level 3 logging is enabled. + */ +#define LogIs3Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP) + +/** @def LogIs4Enabled + * Checks whether level 4 logging is enabled. + */ +#define LogIs4Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP) + +/** @def LogIs5Enabled + * Checks whether level 5 logging is enabled. + */ +#define LogIs5Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP) + +/** @def LogIs6Enabled + * Checks whether level 6 logging is enabled. + */ +#define LogIs6Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP) + +/** @def LogIs7Enabled + * Checks whether level 7 logging is enabled. + */ +#define LogIs7Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP) + +/** @def LogIs8Enabled + * Checks whether level 8 logging is enabled. + */ +#define LogIs8Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP) + +/** @def LogIs9Enabled + * Checks whether level 9 logging is enabled. + */ +#define LogIs9Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP) + +/** @def LogIs10Enabled + * Checks whether level 10 logging is enabled. + */ +#define LogIs10Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP) + +/** @def LogIs11Enabled + * Checks whether level 11 logging is enabled. + */ +#define LogIs11Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP) + +/** @def LogIs12Enabled + * Checks whether level 12 logging is enabled. + */ +#define LogIs12Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP) + +/** @def LogIsFlowEnabled + * Checks whether execution flow logging is enabled. + */ +#define LogIsFlowEnabled() LogIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) + +/** @def LogIsWarnEnabled + * Checks whether execution flow logging is enabled. + */ +#define LogIsWarnEnabled() LogIsItEnabled(RTLOGGRPFLAGS_WARN, LOG_GROUP) +/** @} */ + + +/** @def LogIt + * Write to specific logger if group enabled. + */ +#ifdef LOG_ENABLED +# if defined(LOG_USE_C99) +# define _LogRemoveParentheseis(...) __VA_ARGS__ +# define _LogIt(a_fFlags, a_iGroup, ...) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogIt_pLogger)) \ + { /* likely */ } \ + else \ + RTLogLoggerEx(LogIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogIt(a_fFlags, a_iGroup, fmtargs) _LogIt(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs) +# define _LogItAlways(a_fFlags, a_iGroup, ...) RTLogLoggerEx(NULL, a_fFlags, UINT32_MAX, __VA_ARGS__) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) _LogItAlways(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs) + /** @todo invent a flag or something for skipping the group check so we can pass iGroup. LogItAlways. */ +# else +# define LogIt(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogIt_pLogger)) \ + { /* likely */ } \ + else \ + { \ + LogIt_pLogger->pfnLogger fmtargs; \ + } \ + } while (0) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(0, UINT16_MAX)); \ + if (LogIt_pLogger) \ + LogIt_pLogger->pfnLogger fmtargs; \ + } while (0) +# endif +#else +# define LogIt(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# if defined(LOG_USE_C99) +# define _LogRemoveParentheseis(...) __VA_ARGS__ +# define _LogIt(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogItAlways(a_fFlags, a_iGroup, ...) do { } while (0) +# endif +#endif + + +/** @name Basic logging macros + * @{ */ +/** @def Log + * Level 1 logging that works regardless of the group settings. + */ +#define LogAlways(a) LogItAlways(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def Log + * Level 1 logging. + */ +#define Log(a) LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def Log2 + * Level 2 logging. + */ +#define Log2(a) LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def Log3 + * Level 3 logging. + */ +#define Log3(a) LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def Log4 + * Level 4 logging. + */ +#define Log4(a) LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def Log5 + * Level 5 logging. + */ +#define Log5(a) LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def Log6 + * Level 6 logging. + */ +#define Log6(a) LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def Log7 + * Level 7 logging. + */ +#define Log7(a) LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def Log8 + * Level 8 logging. + */ +#define Log8(a) LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def Log9 + * Level 9 logging. + */ +#define Log9(a) LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def Log10 + * Level 10 logging. + */ +#define Log10(a) LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def Log11 + * Level 11 logging. + */ +#define Log11(a) LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def Log12 + * Level 12 logging. + */ +#define Log12(a) LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogFlow + * Logging of execution flow. + */ +#define LogFlow(a) LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) + +/** @def LogWarn + * Logging of warnings. + */ +#define LogWarn(a) LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, a) +/** @} */ + + +/** @name Logging macros prefixing the current function name. + * @{ */ +/** @def LogFunc + * Level 1 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFunc(a) _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFunc(a) do { Log((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def Log2Func + * Level 2 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log2Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log2Func(a) do { Log2((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log2(a); } while (0) +#endif + +/** @def Log3Func + * Level 3 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log3Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log3Func(a) do { Log3((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log3(a); } while (0) +#endif + +/** @def Log4Func + * Level 4 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log4Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log4Func(a) do { Log4((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log4(a); } while (0) +#endif + +/** @def Log5Func + * Level 5 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log5Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log5Func(a) do { Log5((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log5(a); } while (0) +#endif + +/** @def Log6Func + * Level 6 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log6Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log6Func(a) do { Log6((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log6(a); } while (0) +#endif + +/** @def Log7Func + * Level 7 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log7Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log7Func(a) do { Log7((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log7(a); } while (0) +#endif + +/** @def Log8Func + * Level 8 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log8Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log8Func(a) do { Log8((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log8(a); } while (0) +#endif + +/** @def Log9Func + * Level 9 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log9Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log9Func(a) do { Log9((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log9(a); } while (0) +#endif + +/** @def Log10Func + * Level 10 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log10Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log10Func(a) do { Log10((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log10(a); } while (0) +#endif + +/** @def Log11Func + * Level 11 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log11Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log11Func(a) do { Log11((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log11(a); } while (0) +#endif + +/** @def Log12Func + * Level 12 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log12Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log12Func(a) do { Log12((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); Log12(a); } while (0) +#endif + +/** @def LogFlowFunc + * Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFlowFunc(a) \ + _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFlowFunc(a) \ + do { LogFlow((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif + +/** @def LogWarnFunc + * Macro to log a warning inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogWarnFunc(a) \ + _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogWarnFunc(a) \ + do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif +/** @} */ + + +/** @name Logging macros prefixing the this pointer value and method name. + * @{ */ + +/** @def LogThisFunc + * Level 1 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogThisFunc(a) do { Log(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def Log2ThisFunc + * Level 2 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log2ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log2ThisFunc(a) do { Log2(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log2(a); } while (0) +#endif + +/** @def Log3ThisFunc + * Level 3 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log3ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log3ThisFunc(a) do { Log3(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log3(a); } while (0) +#endif + +/** @def Log4ThisFunc + * Level 4 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log4ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log4ThisFunc(a) do { Log4(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log4(a); } while (0) +#endif + +/** @def Log5ThisFunc + * Level 5 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log5ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log5ThisFunc(a) do { Log5(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log5(a); } while (0) +#endif + +/** @def Log6ThisFunc + * Level 6 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log6ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log6ThisFunc(a) do { Log6(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log6(a); } while (0) +#endif + +/** @def Log7ThisFunc + * Level 7 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log7ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log7ThisFunc(a) do { Log7(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log7(a); } while (0) +#endif + +/** @def Log8ThisFunc + * Level 8 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log8ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log8ThisFunc(a) do { Log8(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log8(a); } while (0) +#endif + +/** @def Log9ThisFunc + * Level 9 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log9ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log9ThisFunc(a) do { Log9(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log9(a); } while (0) +#endif + +/** @def Log10ThisFunc + * Level 10 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log10ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log10ThisFunc(a) do { Log10(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log10(a); } while (0) +#endif + +/** @def Log11ThisFunc + * Level 11 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log11ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log11ThisFunc(a) do { Log11(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log11(a); } while (0) +#endif + +/** @def Log12ThisFunc + * Level 12 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log12ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log12ThisFunc(a) do { Log12(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log12(a); } while (0) +#endif + +/** @def LogFlowThisFunc + * Flow level logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFlowThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFlowThisFunc(a) do { LogFlow(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif + +/** @def LogWarnThisFunc + * Warning level logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogWarnThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogWarnThisFunc(a) do { LogWarn(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogWarn(a); } while (0) +#endif +/** @} */ + + +/** @name Misc Logging Macros + * @{ */ + +/** @def Log1Warning + * The same as Log(), but prepents a "WARNING! " string to the message. + * + * @param a Custom log message in format ("string\n" [, args]). + */ +#if defined(LOG_USE_C99) +# define Log1Warning(a) _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a ) +#else +# define Log1Warning(a) do { Log(("WARNING! ")); Log(a); } while (0) +#endif + +/** @def Log1WarningFunc + * The same as LogWarning(), but prepents the log message with the function name. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log1WarningFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": WARNING! %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log1WarningFunc(a) \ + do { Log((LOG_FN_FMT ": WARNING! ", __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def Log1WarningThisFunc + * The same as LogWarningFunc() but for class functions (methods): the resulting + * log line is additionally prepended with a hex value of |this| pointer. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log1WarningThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": WARNING! %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log1WarningThisFunc(a) \ + do { Log(("{%p} " LOG_FN_FMT ": WARNING! ", this, __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + + +/** Shortcut to |LogFlowFunc ("ENTER\n")|, marks the beginnig of the function. */ +#define LogFlowFuncEnter() LogFlowFunc(("ENTER\n")) + +/** Shortcut to |LogFlowFunc ("LEAVE\n")|, marks the end of the function. */ +#define LogFlowFuncLeave() LogFlowFunc(("LEAVE\n")) + +/** Shortcut to |LogFlowFunc ("LEAVE: %Rrc\n")|, marks the end of the function. */ +#define LogFlowFuncLeaveRC(rc) LogFlowFunc(("LEAVE: %Rrc\n", (rc))) + +/** Shortcut to |LogFlowThisFunc ("ENTER\n")|, marks the beginnig of the function. */ +#define LogFlowThisFuncEnter() LogFlowThisFunc(("ENTER\n")) + +/** Shortcut to |LogFlowThisFunc ("LEAVE\n")|, marks the end of the function. */ +#define LogFlowThisFuncLeave() LogFlowThisFunc(("LEAVE\n")) + + +/** @def LogObjRefCnt + * Helper macro to print the current reference count of the given COM object + * to the log file. + * + * @param pObj Pointer to the object in question (must be a pointer to an + * IUnknown subclass or simply define COM-style AddRef() and + * Release() methods) + */ +#define LogObjRefCnt(pObj) \ + do { \ + if (LogIsFlowEnabled()) \ + { \ + int cRefsForLog = (pObj)->AddRef(); \ + LogFlow((#pObj "{%p}.refCnt=%d\n", (pObj), cRefsForLog - 1)); \ + (pObj)->Release(); \ + } \ + } while (0) +/** @} */ + + + +/** @name Passing Function Call Position When Logging. + * + * This is a little bit ugly as we have to omit the comma before the + * position parameters so that we don't inccur any overhead in non-logging + * builds (!defined(LOG_ENABLED). + * + * @{ */ +/** Source position for passing to a function call. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS , __FILE__, __LINE__, __PRETTY_FUNCTION__ +#else +# define RTLOG_COMMA_SRC_POS RT_NOTHING +#endif +/** Source position declaration. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS_DECL , const char *pszFile, unsigned iLine, const char *pszFunction +#else +# define RTLOG_COMMA_SRC_POS_DECL RT_NOTHING +#endif +/** Source position arguments. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS_ARGS , pszFile, iLine, pszFunction +#else +# define RTLOG_COMMA_SRC_POS_ARGS RT_NOTHING +#endif +/** Applies NOREF() to the source position arguments. */ +#ifdef LOG_ENABLED +# define RTLOG_SRC_POS_NOREF() do { NOREF(pszFile); NOREF(iLine); NOREF(pszFunction); } while (0) +#else +# define RTLOG_SRC_POS_NOREF() do { } while (0) +#endif +/** @} */ + + + +/** @name Release Logging + * @{ + */ + +#ifdef DOXYGEN_RUNNING +# define RTLOG_REL_DISABLED +# define RTLOG_REL_ENABLED +#endif + +/** @def RTLOG_REL_DISABLED + * Use this compile time define to disable all release logging + * macros. + */ + +/** @def RTLOG_REL_ENABLED + * Use this compile time define to override RTLOG_REL_DISABLE. + */ + +/* + * Determine whether release logging is enabled and forcefully normalize the indicators. + */ +#if !defined(RTLOG_REL_DISABLED) || defined(RTLOG_REL_ENABLED) +# undef RTLOG_REL_DISABLED +# undef RTLOG_REL_ENABLED +# define RTLOG_REL_ENABLED +#else +# undef RTLOG_REL_ENABLED +# undef RTLOG_REL_DISABLED +# define RTLOG_REL_DISABLED +#endif + +/** @name Macros for checking whether a release log level is enabled. + * @{ */ +/** @def LogRelIsItEnabled + * Checks whether the specified release logging group is enabled or not. + */ +#define LogRelIsItEnabled(a_fFlags, a_iGroup) ( RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL ) + +/** @def LogRelIsEnabled + * Checks whether level 1 release logging is enabled. + */ +#define LogRelIsEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP) + +/** @def LogRelIs2Enabled + * Checks whether level 2 release logging is enabled. + */ +#define LogRelIs2Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP) + +/** @def LogRelIs3Enabled + * Checks whether level 3 release logging is enabled. + */ +#define LogRelIs3Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP) + +/** @def LogRelIs4Enabled + * Checks whether level 4 release logging is enabled. + */ +#define LogRelIs4Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP) + +/** @def LogRelIs5Enabled + * Checks whether level 5 release logging is enabled. + */ +#define LogRelIs5Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP) + +/** @def LogRelIs6Enabled + * Checks whether level 6 release logging is enabled. + */ +#define LogRelIs6Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP) + +/** @def LogRelIs7Enabled + * Checks whether level 7 release logging is enabled. + */ +#define LogRelIs7Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP) + +/** @def LogRelIs8Enabled + * Checks whether level 8 release logging is enabled. + */ +#define LogRelIs8Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP) + +/** @def LogRelIs2Enabled + * Checks whether level 9 release logging is enabled. + */ +#define LogRelIs9Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP) + +/** @def LogRelIs10Enabled + * Checks whether level 10 release logging is enabled. + */ +#define LogRelIs10Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP) + +/** @def LogRelIs11Enabled + * Checks whether level 10 release logging is enabled. + */ +#define LogRelIs11Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP) + +/** @def LogRelIs12Enabled + * Checks whether level 12 release logging is enabled. + */ +#define LogRelIs12Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP) + +/** @def LogRelIsFlowEnabled + * Checks whether execution flow release logging is enabled. + */ +#define LogRelIsFlowEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) + +/** @def LogRelIsWarnEnabled + * Checks whether warning level release logging is enabled. + */ +#define LogRelIsWarnEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) +/** @} */ + + +/** @def LogRelIt + * Write to specific logger if group enabled. + */ +/** @def LogRelItLikely + * Write to specific logger if group enabled, assuming it likely it is enabled. + */ +/** @def LogRelMaxIt + * Write to specific logger if group enabled and at less than a_cMax messages + * have hit the log. Uses a static variable to count. + */ +#ifdef RTLOG_REL_ENABLED +# if defined(LOG_USE_C99) +# define _LogRelRemoveParentheseis(...) __VA_ARGS__ +# define _LogRelIt(a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogRelIt_pLogger)) \ + { /* likely */ } \ + else \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) \ + _LogRelIt(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# define _LogRelItLikely(a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \ + _LogRelItLikely(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + static uint32_t s_LogRelMaxIt_cLogged = 0; \ + if (s_LogRelMaxIt_cLogged < (a_cMax)) \ + { \ + s_LogRelMaxIt_cLogged++; \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + } \ + } \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \ + _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# else +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogRelIt_pLogger)) \ + { /* likely */ } \ + else \ + { \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + static uint32_t s_LogRelMaxIt_cLogged = 0; \ + if (s_LogRelMaxIt_cLogged < (a_cMax)) \ + { \ + s_LogRelMaxIt_cLogged++; \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# endif +#else /* !RTLOG_REL_ENABLED */ +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) do { } while (0) +# if defined(LOG_USE_C99) +# define _LogRelRemoveParentheseis(...) __VA_ARGS__ +# define _LogRelIt(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogRelItLikely(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...) do { } while (0) +# endif +#endif /* !RTLOG_REL_ENABLED */ + + +/** @name Basic release logging macros + * @{ */ +/** @def LogRel + * Level 1 release logging. + */ +#define LogRel(a) LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def LogRel2 + * Level 2 release logging. + */ +#define LogRel2(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def LogRel3 + * Level 3 release logging. + */ +#define LogRel3(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def LogRel4 + * Level 4 release logging. + */ +#define LogRel4(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def LogRel5 + * Level 5 release logging. + */ +#define LogRel5(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def LogRel6 + * Level 6 release logging. + */ +#define LogRel6(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def LogRel7 + * Level 7 release logging. + */ +#define LogRel7(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def LogRel8 + * Level 8 release logging. + */ +#define LogRel8(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def LogRel9 + * Level 9 release logging. + */ +#define LogRel9(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def LogRel10 + * Level 10 release logging. + */ +#define LogRel10(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def LogRel11 + * Level 11 release logging. + */ +#define LogRel11(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def LogRel12 + * Level 12 release logging. + */ +#define LogRel12(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogRelFlow + * Logging of execution flow. + */ +#define LogRelFlow(a) LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) + +/** @def LogRelWarn + * Warning level release logging. + */ +#define LogRelWarn(a) LogRelIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, a) +/** @} */ + + + +/** @name Basic release logging macros with local max + * @{ */ +/** @def LogRelMax + * Level 1 release logging with a max number of log entries. + */ +#define LogRelMax(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def LogRelMax2 + * Level 2 release logging with a max number of log entries. + */ +#define LogRelMax2(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def LogRelMax3 + * Level 3 release logging with a max number of log entries. + */ +#define LogRelMax3(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def LogRelMax4 + * Level 4 release logging with a max number of log entries. + */ +#define LogRelMax4(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def LogRelMax5 + * Level 5 release logging with a max number of log entries. + */ +#define LogRelMax5(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def LogRelMax6 + * Level 6 release logging with a max number of log entries. + */ +#define LogRelMax6(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def LogRelMax7 + * Level 7 release logging with a max number of log entries. + */ +#define LogRelMax7(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def LogRelMax8 + * Level 8 release logging with a max number of log entries. + */ +#define LogRelMax8(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def LogRelMax9 + * Level 9 release logging with a max number of log entries. + */ +#define LogRelMax9(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def LogRelMax10 + * Level 10 release logging with a max number of log entries. + */ +#define LogRelMax10(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def LogRelMax11 + * Level 11 release logging with a max number of log entries. + */ +#define LogRelMax11(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def LogRelMax12 + * Level 12 release logging with a max number of log entries. + */ +#define LogRelMax12(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogRelFlow + * Logging of execution flow with a max number of log entries. + */ +#define LogRelMaxFlow(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) +/** @} */ + + +/** @name Release logging macros prefixing the current function name. + * @{ */ + +/** @def LogRelFunc + * Release logging. Prepends the given log message with the function name + * followed by a semicolon and space. + */ +#ifdef LOG_USE_C99 +# define LogRelFunc(a) \ + _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelFunc(a) do { LogRel((LOG_FN_FMT ": ", RT_GCC_EXTENSION __PRETTY_FUNCTION__)); LogRel(a); } while (0) +#endif + +/** @def LogRelFlowFunc + * Release logging. Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelFlowFunc(a) _LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelFlowFunc(a) do { LogRelFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a); } while (0) +#endif + +/** @def LogRelMaxFunc + * Release logging. Prepends the given log message with the function name + * followed by a semicolon and space. + */ +#ifdef LOG_USE_C99 +# define LogRelMaxFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxFunc(a_cMax, a) \ + do { LogRelMax(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0) +#endif + +/** @def LogRelMaxFlowFunc + * Release logging. Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a_cMax Max number of times this should hit the log. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelMaxFlowFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxFlowFunc(a_cMax, a) \ + do { LogRelMaxFlow(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a_cMax, a); } while (0) +#endif + +/** @} */ + + +/** @name Release Logging macros prefixing the this pointer value and method name. + * @{ */ + +/** @def LogRelThisFunc + * The same as LogRelFunc but for class functions (methods): the resulting log + * line is additionally prepended with a hex value of |this| pointer. + */ +#ifdef LOG_USE_C99 +# define LogRelThisFunc(a) \ + _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelThisFunc(a) \ + do { LogRel(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogRel(a); } while (0) +#endif + +/** @def LogRelMaxThisFunc + * The same as LogRelFunc but for class functions (methods): the resulting log + * line is additionally prepended with a hex value of |this| pointer. + * @param a_cMax Max number of times this should hit the log. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelMaxThisFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxThisFunc(a_cMax, a) \ + do { LogRelMax(a_cMax, ("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0) +#endif + +/** @} */ + + +#ifndef IN_RC +/** + * Sets the default release logger instance. + * + * @returns The old default instance. + * @param pLogger The new default release logger instance. + */ +RTDECL(PRTLOGGER) RTLogRelSetDefaultInstance(PRTLOGGER pLogger); +#endif /* !IN_RC */ + +/** + * Gets the default release logger instance. + * + * @returns Pointer to default release logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void); + +/** + * Gets the default release logger instance. + * + * @returns Pointer to default release logger instance if availble, otherwise NULL. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup); + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function for LogRelIt. + */ +RTDECL(void) RTLogRelLogger(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, + const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(4, 5); + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default release instance is attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogRelLoggerV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, + const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(4, 0); + +/** + * printf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintf(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * vprintf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintfV(const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(1, 0); + +/** + * Changes the buffering setting of the default release logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogRelSetBuffering(bool fBuffered); + +/** @} */ + + + +/** @name COM port logging + * { + */ + +#ifdef DOXYGEN_RUNNING +# define LOG_TO_COM +# define LOG_NO_COM +#endif + +/** @def LOG_TO_COM + * Redirects the normal logging macros to the serial versions. + */ + +/** @def LOG_NO_COM + * Disables all LogCom* macros. + */ + +/** @def LogCom + * Generic logging to serial port. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_COM) +# define LogCom(a) RTLogComPrintf a +#else +# define LogCom(a) do { } while (0) +#endif + +/** @def LogComFlow + * Logging to serial port of execution flow. + */ +#if defined(LOG_ENABLED) && defined(LOG_ENABLE_FLOW) && !defined(LOG_NO_COM) +# define LogComFlow(a) RTLogComPrintf a +#else +# define LogComFlow(a) do { } while (0) +#endif + +#ifdef LOG_TO_COM +# undef Log +# define Log(a) LogCom(a) +# undef LogFlow +# define LogFlow(a) LogComFlow(a) +#endif + +/** @} */ + + +/** @name Backdoor Logging + * @{ + */ + +#ifdef DOXYGEN_RUNNING +# define LOG_TO_BACKDOOR +# define LOG_NO_BACKDOOR +#endif + +/** @def LOG_TO_BACKDOOR + * Redirects the normal logging macros to the backdoor versions. + */ + +/** @def LOG_NO_BACKDOOR + * Disables all LogBackdoor* macros. + */ + +/** @def LogBackdoor + * Generic logging to the VBox backdoor via port I/O. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_BACKDOOR) +# define LogBackdoor(a) RTLogBackdoorPrintf a +#else +# define LogBackdoor(a) do { } while (0) +#endif + +/** @def LogBackdoorFlow + * Logging of execution flow messages to the backdoor I/O port. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_BACKDOOR) +# define LogBackdoorFlow(a) RTLogBackdoorPrintf a +#else +# define LogBackdoorFlow(a) do { } while (0) +#endif + +/** @def LogRelBackdoor + * Release logging to the VBox backdoor via port I/O. + */ +#if !defined(LOG_NO_BACKDOOR) +# define LogRelBackdoor(a) RTLogBackdoorPrintf a +#else +# define LogRelBackdoor(a) do { } while (0) +#endif + +#ifdef LOG_TO_BACKDOOR +# undef Log +# define Log(a) LogBackdoor(a) +# undef LogFlow +# define LogFlow(a) LogBackdoorFlow(a) +# undef LogRel +# define LogRel(a) LogRelBackdoor(a) +# if defined(LOG_USE_C99) +# undef _LogIt +# define _LogIt(a_fFlags, a_iGroup, ...) LogBackdoor((__VA_ARGS__)) +# endif +#endif + +/** @} */ + + + +/** + * Gets the default logger instance, creating it if necessary. + * + * @returns Pointer to default logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogDefaultInstance(void); + +/** + * Gets the logger instance if enabled, creating it if necessary. + * + * @returns Pointer to default logger instance, if group has the specified + * flags enabled. Otherwise NULL is returned. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup); + +/** + * Gets the default logger instance. + * + * @returns Pointer to default logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogGetDefaultInstance(void); + +/** + * Gets the default logger instance if enabled. + * + * @returns Pointer to default logger instance, if group has the specified + * flags enabled. Otherwise NULL is returned. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup); + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns The old default instance. + * @param pLogger The new default logger instance. + */ +RTDECL(PRTLOGGER) RTLogSetDefaultInstance(PRTLOGGER pLogger); +#endif /* !IN_RC */ + +#ifdef IN_RING0 +/** + * Changes the default logger instance for the current thread. + * + * @returns IPRT status code. + * @param pLogger The logger instance. Pass NULL for deregistration. + * @param uKey Associated key for cleanup purposes. If pLogger is NULL, + * all instances with this key will be deregistered. So in + * order to only deregister the instance associated with the + * current thread use 0. + */ +RTDECL(int) RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey); +#endif /* IN_RING0 */ + + +#ifndef IN_RC +/** + * Creates the default logger instance for a iprt users. + * + * Any user of the logging features will need to implement + * this or use the generic dummy. + * + * @returns Pointer to the logger instance. + */ +RTDECL(PRTLOGGER) RTLogDefaultInit(void); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pszFilenameFmt Log filename format string. Standard + * RTStrFormat(). + * @param ... Format arguments. + */ +RTDECL(int) RTLogCreate(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, const char *pszFilenameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(8, 9); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pfnPhase Callback function for starting logging and for + * ending or starting a new file for log history + * rotation. NULL is OK. + * @param cHistory Number of old log files to keep when performing + * log history rotation. 0 means no history. + * @param cbHistoryFileMax Maximum size of log file when performing + * history rotation. 0 means no size limit. + * @param cSecsHistoryTimeSlot Maximum time interval per log file when + * performing history rotation, in seconds. + * 0 means time limit. + * @param pszErrorMsg A buffer which is filled with an error message if something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + * @param pszFilenameFmt Log filename format string. Standard RTStrFormat(). + * @param ... Format arguments. + */ +RTDECL(int) RTLogCreateEx(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, char *pszErrorMsg, size_t cchErrorMsg, + const char *pszFilenameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(14, 15); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pfnPhase Callback function for starting logging and for + * ending or starting a new file for log history + * rotation. + * @param cHistory Number of old log files to keep when performing + * log history rotation. 0 means no history. + * @param cbHistoryFileMax Maximum size of log file when performing + * history rotation. 0 means no size limit. + * @param cSecsHistoryTimeSlot Maximum time interval per log file when + * performing history rotation, in seconds. + * 0 means no time limit. + * @param pszErrorMsg A buffer which is filled with an error message + * if something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + * @param pszFilenameFmt Log filename format string. Standard + * RTStrFormat(). + * @param args Format arguments. + */ +RTDECL(int) RTLogCreateExV(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, char *pszErrorMsg, size_t cchErrorMsg, + const char *pszFilenameFmt, va_list args) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(14, 0); + +/** + * Create a logger instance for singled threaded ring-0 usage. + * + * @returns iprt status code. + * + * @param pLogger Where to create the logger instance. + * @param cbLogger The amount of memory available for the logger instance. + * @param pLoggerR0Ptr The ring-0 address corresponding to @a pLogger. + * @param pfnLoggerR0Ptr Pointer to logger wrapper function. + * @param pfnFlushR0Ptr Pointer to flush function. + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + * @param fDestFlags The destination flags. + */ +RTDECL(int) RTLogCreateForR0(PRTLOGGER pLogger, size_t cbLogger, + RTR0PTR pLoggerR0Ptr, RTR0PTR pfnLoggerR0Ptr, RTR0PTR pfnFlushR0Ptr, + uint32_t fFlags, uint32_t fDestFlags); + +/** + * Calculates the minimum size of a ring-0 logger instance. + * + * @returns The minimum size. + * @param cGroups The number of groups. + * @param fFlags Relevant flags. + */ +RTDECL(size_t) RTLogCalcSizeForR0(uint32_t cGroups, uint32_t fFlags); + +/** + * Destroys a logger instance. + * + * The instance is flushed and all output destinations closed (where applicable). + * + * @returns iprt status code. + * @param pLogger The logger instance which close destroyed. NULL is fine. + */ +RTDECL(int) RTLogDestroy(PRTLOGGER pLogger); + +/** + * Create a logger instance clone for RC usage. + * + * @returns iprt status code. + * + * @param pLogger The logger instance to be cloned. + * @param pLoggerRC Where to create the RC logger instance. + * @param cbLoggerRC Amount of memory allocated to for the RC logger + * instance clone. + * @param pfnLoggerRCPtr Pointer to logger wrapper function for this + * instance (RC Ptr). + * @param pfnFlushRCPtr Pointer to flush function (RC Ptr). + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + */ +RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC, + RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, uint32_t fFlags); + +/** + * Flushes a RC logger instance to a R3 logger. + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerRC to. If NULL + * the default logger is used. + * @param pLoggerRC The RC logger instance to flush. + */ +RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC); + +/** + * Flushes the buffer in one logger instance onto another logger. + * + * @returns iprt status code. + * + * @param pSrcLogger The logger instance to flush. + * @param pDstLogger The logger instance to flush onto. + * If NULL the default logger will be used. + */ +RTDECL(void) RTLogFlushToLogger(PRTLOGGER pSrcLogger, PRTLOGGER pDstLogger); + +/** + * Flushes a R0 logger instance to a R3 logger. + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerR0 to. If NULL + * the default logger is used. + * @param pLoggerR0 The R0 logger instance to flush. + */ +RTDECL(void) RTLogFlushR0(PRTLOGGER pLogger, PRTLOGGER pLoggerR0); + +/** + * Sets the custom prefix callback. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pfnCallback The callback. + * @param pvUser The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallback(PRTLOGGER pLogger, PFNRTLOGPREFIX pfnCallback, void *pvUser); + +/** + * Same as RTLogSetCustomPrefixCallback for loggers created by + * RTLogCreateForR0. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pLoggerR0Ptr The ring-0 address corresponding to @a pLogger. + * @param pfnCallbackR0Ptr The callback. + * @param pvUserR0Ptr The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallbackForR0(PRTLOGGER pLogger, RTR0PTR pLoggerR0Ptr, + RTR0PTR pfnCallbackR0Ptr, RTR0PTR pvUserR0Ptr); + +/** + * Copies the group settings and flags from logger instance to another. + * + * @returns IPRT status code. + * @param pDstLogger The destination logger instance. + * @param pDstLoggerR0Ptr The ring-0 address corresponding to @a pDstLogger. + * @param pSrcLogger The source logger instance. If NULL the default one is used. + * @param fFlagsOr OR mask for the flags. + * @param fFlagsAnd AND mask for the flags. + */ +RTDECL(int) RTLogCopyGroupsAndFlagsForR0(PRTLOGGER pDstLogger, RTR0PTR pDstLoggerR0Ptr, + PCRTLOGGER pSrcLogger, uint32_t fFlagsOr, uint32_t fFlagsAnd); + +/** + * Get the current log group settings as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetGroupSettings(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); + +/** + * Updates the group settings for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogGroupSettings(PRTLOGGER pLogger, const char *pszValue); +#endif /* !IN_RC */ + +/** + * Updates the flags for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogFlags(PRTLOGGER pLogger, const char *pszValue); + +/** + * Changes the buffering setting of the specified logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogSetBuffering(PRTLOGGER pLogger, bool fBuffered); + +/** + * Sets the max number of entries per group. + * + * @returns Old restriction. + * + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param cMaxEntriesPerGroup The max number of entries per group. + * + * @remarks Lowering the limit of an active logger may quietly mute groups. + * Raising it may reactive already muted groups. + */ +RTDECL(uint32_t) RTLogSetGroupLimit(PRTLOGGER pLogger, uint32_t cMaxEntriesPerGroup); + +#ifndef IN_RC +/** + * Get the current log flags as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetFlags(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); + +/** + * Updates the logger destination using the specified string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue The value to parse. + */ +RTDECL(int) RTLogDestinations(PRTLOGGER pLogger, char const *pszValue); + +/** + * Get the current log destinations as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than 0. + */ +RTDECL(int) RTLogGetDestinations(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); +#endif /* !IN_RC */ + +/** + * Flushes the specified logger. + * + * @param pLogger The logger instance to flush. + * If NULL the default instance is used. The default instance + * will not be initialized by this call. + */ +RTDECL(void) RTLogFlush(PRTLOGGER pLogger); + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pvCallerRet Ignored. + * @param pszFormat Format string. + * @param ... Format arguments. + */ +RTDECL(void) RTLogLogger(PRTLOGGER pLogger, void *pvCallerRet, const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(3, 4); + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerV(PRTLOGGER pLogger, const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(3, 0); + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function of LogIt. + */ +RTDECL(void) RTLogLoggerEx(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, + const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(4, 5); + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerExV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, + const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(4, 0); + +/** + * printf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintf(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * vprintf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param va Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintfV(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(1, 0); + +/** + * Dumper vprintf-like function outputting to a logger. + * + * @param pvUser Pointer to the logger instance to use, NULL for + * default instance. + * @param pszFormat Format string. + * @param va Format arguments. + */ +RTDECL(void) RTLogDumpPrintfV(void *pvUser, const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(2, 0); + + +#ifndef DECLARED_FNRTSTROUTPUT /* duplicated in iprt/string.h */ +#define DECLARED_FNRTSTROUTPUT +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +typedef DECLCALLBACK(size_t) FNRTSTROUTPUT(void *pvArg, const char *pachChars, size_t cbChars); +/** Pointer to callback function. */ +typedef FNRTSTROUTPUT *PFNRTSTROUTPUT; +#endif + +/** + * Partial vsprintf worker implementation. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArg Argument to output worker. + * @param pszFormat Format string. + * @param args Argument list. + */ +RTDECL(size_t) RTLogFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArg, const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(3, 0); + +/** + * Write log buffer to COM port. + * + * @param pach Pointer to the buffer to write. + * @param cb Number of bytes to write. + */ +RTDECL(void) RTLogWriteCom(const char *pach, size_t cb); + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintf(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintfV(const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(1, 0); + + +#if 0 /* not implemented yet */ + +/** Indicates that the semaphores shall be used to notify the other + * part about buffer changes. */ +#define LOGHOOKBUFFER_FLAGS_SEMAPHORED 1 + +/** + * Log Hook Buffer. + * Use to communicate between the logger and a log consumer. + */ +typedef struct RTLOGHOOKBUFFER +{ + /** Write pointer. */ + volatile void *pvWrite; + /** Read pointer. */ + volatile void *pvRead; + /** Buffer start. */ + void *pvStart; + /** Buffer end (exclusive). */ + void *pvEnd; + /** Signaling semaphore used by the writer to wait on a full buffer. + * Only used when indicated in flags. */ + void *pvSemWriter; + /** Signaling semaphore used by the read to wait on an empty buffer. + * Only used when indicated in flags. */ + void *pvSemReader; + /** Buffer flags. Current reserved and set to zero. */ + volatile unsigned fFlags; +} RTLOGHOOKBUFFER; +/** Pointer to a log hook buffer. */ +typedef RTLOGHOOKBUFFER *PRTLOGHOOKBUFFER; + + +/** + * Register a logging hook. + * + * This type of logging hooks are expecting different threads acting + * producer and consumer. They share a circular buffer which have two + * pointers one for each end. When the buffer is full there are two + * alternatives (indicated by a buffer flag), either wait for the + * consumer to get it's job done, or to write a generic message saying + * buffer overflow. + * + * Since the waiting would need a signal semaphore, we'll skip that for now. + * + * @returns iprt status code. + * @param pBuffer Pointer to a logger hook buffer. + */ +RTDECL(int) RTLogRegisterHook(PRTLOGGER pLogger, PRTLOGHOOKBUFFER pBuffer); + +/** + * Deregister a logging hook registered with RTLogRegisterHook(). + * + * @returns iprt status code. + * @param pBuffer Pointer to a logger hook buffer. + */ +RTDECL(int) RTLogDeregisterHook(PRTLOGGER pLogger, PRTLOGHOOKBUFFER pBuffer); + +#endif /* not implemented yet */ + + + +/** + * Write log buffer to a debugger (RTLOGDEST_DEBUGGER). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteDebugger(const char *pach, size_t cb); + +/** + * Write log buffer to a user defined output stream (RTLOGDEST_USER). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteUser(const char *pach, size_t cb); + +/** + * Write log buffer to stdout (RTLOGDEST_STDOUT). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteStdOut(const char *pach, size_t cb); + +/** + * Write log buffer to stdout (RTLOGDEST_STDERR). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteStdErr(const char *pach, size_t cb); + +#ifdef VBOX + +/** + * Prints a formatted string to the backdoor port. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogBackdoorPrintf(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(1, 2); + +/** + * Prints a formatted string to the backdoor port. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogBackdoorPrintfV(const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(1, 0); + +#endif /* VBOX */ + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/mangling.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/mangling.h @@ -0,0 +1,3044 @@ +/** @file + * IPRT - Symbol Mangling. + * + * This header is used to mangle public IPRT symbol to make it possible to have + * several IPRT version loaded into one symbol space at the same time. To + * enable symbol mangling you create a header which the compiler includes for + * every compilation unit (check out the -include option of gcc). Your header + * will define RT_MANGLER(name) and then include this header to set up the + * actual mappings. + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mangling_h +#define ___iprt_mangling_h + +#ifndef RT_MANGLER +# error "RT_MANGLER is not defined." +#endif + +#ifndef DOXYGEN_RUNNING + +/** @def RT_WITH_MANGLING + * Indicates that we're mangling symbols. */ +# define RT_WITH_MANGLING + + +/* + * Stable functions (alphabetical order): + */ +# define ASMAtomicCmpXchgExU64 RT_MANGLER(ASMAtomicCmpXchgExU64) /* not-some-systems... */ +# define ASMAtomicCmpXchgExU64_EndProc RT_MANGLER(ASMAtomicCmpXchgExU64_EndProc) +# define ASMAtomicCmpXchgU64 RT_MANGLER(ASMAtomicCmpXchgU64) /* not-some-systems... */ +# define ASMAtomicCmpXchgU64_EndProc RT_MANGLER(ASMAtomicCmpXchgU64_EndProc) +# define ASMAtomicReadU64 RT_MANGLER(ASMAtomicReadU64) /* not-some-systems... */ +# define ASMAtomicReadU64_EndProc RT_MANGLER(ASMAtomicReadU64_EndProc) +# define ASMAtomicUoAndU32 RT_MANGLER(ASMAtomicUoAndU32) /* not-some-systems... */ +# define ASMAtomicUoAndU32_EndProc RT_MANGLER(ASMAtomicUoAndU32_EndProc) +# define ASMAtomicUoAndU64 RT_MANGLER(ASMAtomicUoAndU64) /* not-some-systems... */ +# define ASMAtomicUoAndU64_EndProc RT_MANGLER(ASMAtomicUoAndU64_EndProc) +# define ASMAtomicUoDecU32 RT_MANGLER(ASMAtomicUoDecU32) /* not-some-systems... */ +# define ASMAtomicUoDecU32_EndProc RT_MANGLER(ASMAtomicUoDecU32_EndProc) +# define ASMAtomicUoIncU32 RT_MANGLER(ASMAtomicUoIncU32) /* not-some-systems... */ +# define ASMAtomicUoIncU32_EndProc RT_MANGLER(ASMAtomicUoIncU32_EndProc) +# define ASMAtomicUoOrU32 RT_MANGLER(ASMAtomicUoOrU32) /* not-some-systems... */ +# define ASMAtomicUoOrU32_EndProc RT_MANGLER(ASMAtomicUoOrU32_EndProc) +# define ASMAtomicUoOrU64 RT_MANGLER(ASMAtomicUoOrU64) /* not-some-systems... */ +# define ASMAtomicUoOrU64_EndProc RT_MANGLER(ASMAtomicUoOrU64_EndProc) +# define ASMAtomicUoReadU64 RT_MANGLER(ASMAtomicUoReadU64) /* not-some-systems... */ +# define ASMAtomicUoReadU64_EndProc RT_MANGLER(ASMAtomicUoReadU64_EndProc) +# define ASMAtomicXchgU64 RT_MANGLER(ASMAtomicXchgU64) /* not-some-systems... */ +# define ASMAtomicXchgU64_EndProc RT_MANGLER(ASMAtomicXchgU64_EndProc) +# define ASMCpuIdExSlow RT_MANGLER(ASMCpuIdExSlow) +# define ASMCpuIdExSlow_EndProc RT_MANGLER(ASMCpuIdExSlow_EndProc) +# define ASMGetXcr0 RT_MANGLER(ASMGetXcr0) +# define ASMGetXcr0_EndProc RT_MANGLER(ASMGetXcr0_EndProc) +# define ASMRdMsrEx RT_MANGLER(ASMRdMsrEx) +# define ASMRdMsrEx_EndProc RT_MANGLER(ASMRdMsrEx_EndProc) +# define ASMSetXcr0 RT_MANGLER(ASMSetXcr0) +# define ASMSetXcr0_EndProc RT_MANGLER(ASMSetXcr0_EndProc) +# define ASMWrMsrEx RT_MANGLER(ASMWrMsrEx) +# define ASMWrMsrEx_EndProc RT_MANGLER(ASMWrMsrEx_EndProc) +# define ASMXRstor RT_MANGLER(ASMXRstor) +# define ASMXRstor_EndProc RT_MANGLER(ASMXRstor_EndProc) +# define ASMXSave RT_MANGLER(ASMXSave) +# define ASMXSave_EndProc RT_MANGLER(ASMXSave_EndProc) +# define RTAssertAreQuiet RT_MANGLER(RTAssertAreQuiet) +# define RTAssertMayPanic RT_MANGLER(RTAssertMayPanic) +# define RTAssertMsg1 RT_MANGLER(RTAssertMsg1) +# define RTAssertMsg1Weak RT_MANGLER(RTAssertMsg1Weak) +# define RTAssertMsg2 RT_MANGLER(RTAssertMsg2) +# define RTAssertMsg2Add RT_MANGLER(RTAssertMsg2Add) +# define RTAssertMsg2AddV RT_MANGLER(RTAssertMsg2AddV) +# define RTAssertMsg2AddWeak RT_MANGLER(RTAssertMsg2AddWeak) +# define RTAssertMsg2AddWeakV RT_MANGLER(RTAssertMsg2AddWeakV) +# define RTAssertMsg2V RT_MANGLER(RTAssertMsg2V) +# define RTAssertMsg2Weak RT_MANGLER(RTAssertMsg2Weak) +# define RTAssertMsg2WeakV RT_MANGLER(RTAssertMsg2WeakV) +# define RTAssertSetMayPanic RT_MANGLER(RTAssertSetMayPanic) +# define RTAssertSetQuiet RT_MANGLER(RTAssertSetQuiet) +# define RTAssertShouldPanic RT_MANGLER(RTAssertShouldPanic) +# define RTAvlGCPhysDestroy RT_MANGLER(RTAvlGCPhysDestroy) +# define RTAvlGCPhysDoWithAll RT_MANGLER(RTAvlGCPhysDoWithAll) +# define RTAvlGCPhysGet RT_MANGLER(RTAvlGCPhysGet) +# define RTAvlGCPhysGetBestFit RT_MANGLER(RTAvlGCPhysGetBestFit) +# define RTAvlGCPhysInsert RT_MANGLER(RTAvlGCPhysInsert) +# define RTAvlGCPhysRemove RT_MANGLER(RTAvlGCPhysRemove) +# define RTAvlGCPhysRemoveBestFit RT_MANGLER(RTAvlGCPhysRemoveBestFit) +# define RTAvlGCPtrDestroy RT_MANGLER(RTAvlGCPtrDestroy) +# define RTAvlGCPtrDoWithAll RT_MANGLER(RTAvlGCPtrDoWithAll) +# define RTAvlGCPtrGet RT_MANGLER(RTAvlGCPtrGet) +# define RTAvlGCPtrGetBestFit RT_MANGLER(RTAvlGCPtrGetBestFit) +# define RTAvlGCPtrInsert RT_MANGLER(RTAvlGCPtrInsert) +# define RTAvlGCPtrRemove RT_MANGLER(RTAvlGCPtrRemove) +# define RTAvlGCPtrRemoveBestFit RT_MANGLER(RTAvlGCPtrRemoveBestFit) +# define RTAvlHCPhysDestroy RT_MANGLER(RTAvlHCPhysDestroy) +# define RTAvlHCPhysDoWithAll RT_MANGLER(RTAvlHCPhysDoWithAll) +# define RTAvlHCPhysGet RT_MANGLER(RTAvlHCPhysGet) +# define RTAvlHCPhysGetBestFit RT_MANGLER(RTAvlHCPhysGetBestFit) +# define RTAvlHCPhysInsert RT_MANGLER(RTAvlHCPhysInsert) +# define RTAvlHCPhysRemove RT_MANGLER(RTAvlHCPhysRemove) +# define RTAvlHCPhysRemoveBestFit RT_MANGLER(RTAvlHCPhysRemoveBestFit) +# define RTAvllU32Destroy RT_MANGLER(RTAvllU32Destroy) +# define RTAvllU32DoWithAll RT_MANGLER(RTAvllU32DoWithAll) +# define RTAvllU32Get RT_MANGLER(RTAvllU32Get) +# define RTAvllU32GetBestFit RT_MANGLER(RTAvllU32GetBestFit) +# define RTAvllU32Insert RT_MANGLER(RTAvllU32Insert) +# define RTAvllU32Remove RT_MANGLER(RTAvllU32Remove) +# define RTAvllU32RemoveBestFit RT_MANGLER(RTAvllU32RemoveBestFit) +# define RTAvllU32RemoveNode RT_MANGLER(RTAvllU32RemoveNode) +# define RTAvloGCPhysDestroy RT_MANGLER(RTAvloGCPhysDestroy) +# define RTAvloGCPhysDoWithAll RT_MANGLER(RTAvloGCPhysDoWithAll) +# define RTAvloGCPhysGet RT_MANGLER(RTAvloGCPhysGet) +# define RTAvloGCPhysGetBestFit RT_MANGLER(RTAvloGCPhysGetBestFit) +# define RTAvloGCPhysInsert RT_MANGLER(RTAvloGCPhysInsert) +# define RTAvloGCPhysRemove RT_MANGLER(RTAvloGCPhysRemove) +# define RTAvloGCPhysRemoveBestFit RT_MANGLER(RTAvloGCPhysRemoveBestFit) +# define RTAvloGCPtrDestroy RT_MANGLER(RTAvloGCPtrDestroy) +# define RTAvloGCPtrDoWithAll RT_MANGLER(RTAvloGCPtrDoWithAll) +# define RTAvloGCPtrGet RT_MANGLER(RTAvloGCPtrGet) +# define RTAvloGCPtrGetBestFit RT_MANGLER(RTAvloGCPtrGetBestFit) +# define RTAvloGCPtrInsert RT_MANGLER(RTAvloGCPtrInsert) +# define RTAvloGCPtrRemove RT_MANGLER(RTAvloGCPtrRemove) +# define RTAvloGCPtrRemoveBestFit RT_MANGLER(RTAvloGCPtrRemoveBestFit) +# define RTAvloHCPhysDestroy RT_MANGLER(RTAvloHCPhysDestroy) +# define RTAvloHCPhysDoWithAll RT_MANGLER(RTAvloHCPhysDoWithAll) +# define RTAvloHCPhysGet RT_MANGLER(RTAvloHCPhysGet) +# define RTAvloHCPhysGetBestFit RT_MANGLER(RTAvloHCPhysGetBestFit) +# define RTAvloHCPhysInsert RT_MANGLER(RTAvloHCPhysInsert) +# define RTAvloHCPhysRemove RT_MANGLER(RTAvloHCPhysRemove) +# define RTAvloHCPhysRemoveBestFit RT_MANGLER(RTAvloHCPhysRemoveBestFit) +# define RTAvloIOPortDestroy RT_MANGLER(RTAvloIOPortDestroy) +# define RTAvloIOPortDoWithAll RT_MANGLER(RTAvloIOPortDoWithAll) +# define RTAvloIOPortGet RT_MANGLER(RTAvloIOPortGet) +# define RTAvloIOPortGetBestFit RT_MANGLER(RTAvloIOPortGetBestFit) +# define RTAvloIOPortInsert RT_MANGLER(RTAvloIOPortInsert) +# define RTAvloIOPortRemove RT_MANGLER(RTAvloIOPortRemove) +# define RTAvloIOPortRemoveBestFit RT_MANGLER(RTAvloIOPortRemoveBestFit) +# define RTAvloU32Destroy RT_MANGLER(RTAvloU32Destroy) +# define RTAvloU32DoWithAll RT_MANGLER(RTAvloU32DoWithAll) +# define RTAvloU32Get RT_MANGLER(RTAvloU32Get) +# define RTAvloU32GetBestFit RT_MANGLER(RTAvloU32GetBestFit) +# define RTAvloU32Insert RT_MANGLER(RTAvloU32Insert) +# define RTAvloU32Remove RT_MANGLER(RTAvloU32Remove) +# define RTAvloU32RemoveBestFit RT_MANGLER(RTAvloU32RemoveBestFit) +# define RTAvlPVDestroy RT_MANGLER(RTAvlPVDestroy) +# define RTAvlPVDoWithAll RT_MANGLER(RTAvlPVDoWithAll) +# define RTAvlPVGet RT_MANGLER(RTAvlPVGet) +# define RTAvlPVGetBestFit RT_MANGLER(RTAvlPVGetBestFit) +# define RTAvlPVInsert RT_MANGLER(RTAvlPVInsert) +# define RTAvlPVRemove RT_MANGLER(RTAvlPVRemove) +# define RTAvlPVRemoveBestFit RT_MANGLER(RTAvlPVRemoveBestFit) +# define RTAvlrFileOffsetDestroy RT_MANGLER(RTAvlrFileOffsetDestroy) +# define RTAvlrFileOffsetDoWithAll RT_MANGLER(RTAvlrFileOffsetDoWithAll) +# define RTAvlrFileOffsetGet RT_MANGLER(RTAvlrFileOffsetGet) +# define RTAvlrFileOffsetGetBestFit RT_MANGLER(RTAvlrFileOffsetGetBestFit) +# define RTAvlrFileOffsetGetLeft RT_MANGLER(RTAvlrFileOffsetGetLeft) +# define RTAvlrFileOffsetGetRight RT_MANGLER(RTAvlrFileOffsetGetRight) +# define RTAvlrFileOffsetGetRoot RT_MANGLER(RTAvlrFileOffsetGetRoot) +# define RTAvlrFileOffsetInsert RT_MANGLER(RTAvlrFileOffsetInsert) +# define RTAvlrFileOffsetRangeGet RT_MANGLER(RTAvlrFileOffsetRangeGet) +# define RTAvlrFileOffsetRangeRemove RT_MANGLER(RTAvlrFileOffsetRangeRemove) +# define RTAvlrFileOffsetRemove RT_MANGLER(RTAvlrFileOffsetRemove) +# define RTAvlrGCPtrDestroy RT_MANGLER(RTAvlrGCPtrDestroy) +# define RTAvlrGCPtrDoWithAll RT_MANGLER(RTAvlrGCPtrDoWithAll) +# define RTAvlrGCPtrGet RT_MANGLER(RTAvlrGCPtrGet) +# define RTAvlrGCPtrGetBestFit RT_MANGLER(RTAvlrGCPtrGetBestFit) +# define RTAvlrGCPtrGetLeft RT_MANGLER(RTAvlrGCPtrGetLeft) +# define RTAvlrGCPtrGetRight RT_MANGLER(RTAvlrGCPtrGetRight) +# define RTAvlrGCPtrGetRoot RT_MANGLER(RTAvlrGCPtrGetRoot) +# define RTAvlrGCPtrInsert RT_MANGLER(RTAvlrGCPtrInsert) +# define RTAvlrGCPtrRangeGet RT_MANGLER(RTAvlrGCPtrRangeGet) +# define RTAvlrGCPtrRangeRemove RT_MANGLER(RTAvlrGCPtrRangeRemove) +# define RTAvlrGCPtrRemove RT_MANGLER(RTAvlrGCPtrRemove) +# define RTAvlroGCPhysDestroy RT_MANGLER(RTAvlroGCPhysDestroy) +# define RTAvlroGCPhysDoWithAll RT_MANGLER(RTAvlroGCPhysDoWithAll) +# define RTAvlroGCPhysGet RT_MANGLER(RTAvlroGCPhysGet) +# define RTAvlroGCPhysGetBestFit RT_MANGLER(RTAvlroGCPhysGetBestFit) +# define RTAvlroGCPhysGetLeft RT_MANGLER(RTAvlroGCPhysGetLeft) +# define RTAvlroGCPhysGetRight RT_MANGLER(RTAvlroGCPhysGetRight) +# define RTAvlroGCPhysGetRoot RT_MANGLER(RTAvlroGCPhysGetRoot) +# define RTAvlroGCPhysInsert RT_MANGLER(RTAvlroGCPhysInsert) +# define RTAvlroGCPhysRangeGet RT_MANGLER(RTAvlroGCPhysRangeGet) +# define RTAvlroGCPhysRangeRemove RT_MANGLER(RTAvlroGCPhysRangeRemove) +# define RTAvlroGCPhysRemove RT_MANGLER(RTAvlroGCPhysRemove) +# define RTAvlroGCPtrDestroy RT_MANGLER(RTAvlroGCPtrDestroy) +# define RTAvlroGCPtrDoWithAll RT_MANGLER(RTAvlroGCPtrDoWithAll) +# define RTAvlroGCPtrGet RT_MANGLER(RTAvlroGCPtrGet) +# define RTAvlroGCPtrGetBestFit RT_MANGLER(RTAvlroGCPtrGetBestFit) +# define RTAvlroGCPtrGetLeft RT_MANGLER(RTAvlroGCPtrGetLeft) +# define RTAvlroGCPtrGetRight RT_MANGLER(RTAvlroGCPtrGetRight) +# define RTAvlroGCPtrGetRoot RT_MANGLER(RTAvlroGCPtrGetRoot) +# define RTAvlroGCPtrInsert RT_MANGLER(RTAvlroGCPtrInsert) +# define RTAvlroGCPtrRangeGet RT_MANGLER(RTAvlroGCPtrRangeGet) +# define RTAvlroGCPtrRangeRemove RT_MANGLER(RTAvlroGCPtrRangeRemove) +# define RTAvlroGCPtrRemove RT_MANGLER(RTAvlroGCPtrRemove) +# define RTAvlroIOPortDestroy RT_MANGLER(RTAvlroIOPortDestroy) +# define RTAvlroIOPortDoWithAll RT_MANGLER(RTAvlroIOPortDoWithAll) +# define RTAvlroIOPortGet RT_MANGLER(RTAvlroIOPortGet) +# define RTAvlroIOPortInsert RT_MANGLER(RTAvlroIOPortInsert) +# define RTAvlroIOPortRangeGet RT_MANGLER(RTAvlroIOPortRangeGet) +# define RTAvlroIOPortRangeRemove RT_MANGLER(RTAvlroIOPortRangeRemove) +# define RTAvlroIOPortRemove RT_MANGLER(RTAvlroIOPortRemove) +# define RTAvlrooGCPtrDestroy RT_MANGLER(RTAvlrooGCPtrDestroy) +# define RTAvlrooGCPtrDoWithAll RT_MANGLER(RTAvlrooGCPtrDoWithAll) +# define RTAvlrooGCPtrGet RT_MANGLER(RTAvlrooGCPtrGet) +# define RTAvlrooGCPtrGetBestFit RT_MANGLER(RTAvlrooGCPtrGetBestFit) +# define RTAvlrooGCPtrGetLeft RT_MANGLER(RTAvlrooGCPtrGetLeft) +# define RTAvlrooGCPtrGetNextEqual RT_MANGLER(RTAvlrooGCPtrGetNextEqual) +# define RTAvlrooGCPtrGetRight RT_MANGLER(RTAvlrooGCPtrGetRight) +# define RTAvlrooGCPtrGetRoot RT_MANGLER(RTAvlrooGCPtrGetRoot) +# define RTAvlrooGCPtrInsert RT_MANGLER(RTAvlrooGCPtrInsert) +# define RTAvlrooGCPtrRangeGet RT_MANGLER(RTAvlrooGCPtrRangeGet) +# define RTAvlrooGCPtrRangeRemove RT_MANGLER(RTAvlrooGCPtrRangeRemove) +# define RTAvlrooGCPtrRemove RT_MANGLER(RTAvlrooGCPtrRemove) +# define RTAvlrPVDestroy RT_MANGLER(RTAvlrPVDestroy) +# define RTAvlrPVDoWithAll RT_MANGLER(RTAvlrPVDoWithAll) +# define RTAvlrPVGet RT_MANGLER(RTAvlrPVGet) +# define RTAvlrPVGetBestFit RT_MANGLER(RTAvlrPVGetBestFit) +# define RTAvlrPVInsert RT_MANGLER(RTAvlrPVInsert) +# define RTAvlrPVRangeGet RT_MANGLER(RTAvlrPVRangeGet) +# define RTAvlrPVRangeRemove RT_MANGLER(RTAvlrPVRangeRemove) +# define RTAvlrPVRemove RT_MANGLER(RTAvlrPVRemove) +# define RTAvlrPVRemoveBestFit RT_MANGLER(RTAvlrPVRemoveBestFit) +# define RTAvlrU64Destroy RT_MANGLER(RTAvlrU64Destroy) +# define RTAvlrU64DoWithAll RT_MANGLER(RTAvlrU64DoWithAll) +# define RTAvlrU64Get RT_MANGLER(RTAvlrU64Get) +# define RTAvlrU64GetBestFit RT_MANGLER(RTAvlrU64GetBestFit) +# define RTAvlrU64Insert RT_MANGLER(RTAvlrU64Insert) +# define RTAvlrU64RangeGet RT_MANGLER(RTAvlrU64RangeGet) +# define RTAvlrU64RangeRemove RT_MANGLER(RTAvlrU64RangeRemove) +# define RTAvlrU64Remove RT_MANGLER(RTAvlrU64Remove) +# define RTAvlrU64RemoveBestFit RT_MANGLER(RTAvlrU64RemoveBestFit) +# define RTAvlrUIntPtrDestroy RT_MANGLER(RTAvlrUIntPtrDestroy) +# define RTAvlrUIntPtrDoWithAll RT_MANGLER(RTAvlrUIntPtrDoWithAll) +# define RTAvlrUIntPtrGet RT_MANGLER(RTAvlrUIntPtrGet) +# define RTAvlrUIntPtrGetBestFit RT_MANGLER(RTAvlrUIntPtrGetBestFit) +# define RTAvlrUIntPtrGetLeft RT_MANGLER(RTAvlrUIntPtrGetLeft) +# define RTAvlrUIntPtrGetRight RT_MANGLER(RTAvlrUIntPtrGetRight) +# define RTAvlrUIntPtrGetRoot RT_MANGLER(RTAvlrUIntPtrGetRoot) +# define RTAvlrUIntPtrInsert RT_MANGLER(RTAvlrUIntPtrInsert) +# define RTAvlrUIntPtrRangeGet RT_MANGLER(RTAvlrUIntPtrRangeGet) +# define RTAvlrUIntPtrRangeRemove RT_MANGLER(RTAvlrUIntPtrRangeRemove) +# define RTAvlrUIntPtrRemove RT_MANGLER(RTAvlrUIntPtrRemove) +# define RTAvlU32Destroy RT_MANGLER(RTAvlU32Destroy) +# define RTAvlU32DoWithAll RT_MANGLER(RTAvlU32DoWithAll) +# define RTAvlU32Get RT_MANGLER(RTAvlU32Get) +# define RTAvlU32GetBestFit RT_MANGLER(RTAvlU32GetBestFit) +# define RTAvlU32Insert RT_MANGLER(RTAvlU32Insert) +# define RTAvlU32Remove RT_MANGLER(RTAvlU32Remove) +# define RTAvlU32RemoveBestFit RT_MANGLER(RTAvlU32RemoveBestFit) +# define RTAvlUIntPtrDestroy RT_MANGLER(RTAvlUIntPtrDestroy) +# define RTAvlUIntPtrDoWithAll RT_MANGLER(RTAvlUIntPtrDoWithAll) +# define RTAvlUIntPtrGet RT_MANGLER(RTAvlUIntPtrGet) +# define RTAvlUIntPtrGetBestFit RT_MANGLER(RTAvlUIntPtrGetBestFit) +# define RTAvlUIntPtrGetLeft RT_MANGLER(RTAvlUIntPtrGetLeft) +# define RTAvlUIntPtrGetRight RT_MANGLER(RTAvlUIntPtrGetRight) +# define RTAvlUIntPtrGetRoot RT_MANGLER(RTAvlUIntPtrGetRoot) +# define RTAvlUIntPtrInsert RT_MANGLER(RTAvlUIntPtrInsert) +# define RTAvlUIntPtrRemove RT_MANGLER(RTAvlUIntPtrRemove) +# define RTAvlULDestroy RT_MANGLER(RTAvlULDestroy) +# define RTAvlULDoWithAll RT_MANGLER(RTAvlULDoWithAll) +# define RTAvlULGet RT_MANGLER(RTAvlULGet) +# define RTAvlULGetBestFit RT_MANGLER(RTAvlULGetBestFit) +# define RTAvlULInsert RT_MANGLER(RTAvlULInsert) +# define RTAvlULRemove RT_MANGLER(RTAvlULRemove) +# define RTAvlULRemoveBestFit RT_MANGLER(RTAvlULRemoveBestFit) +# define RTBase64Decode RT_MANGLER(RTBase64Decode) +# define RTBase64DecodeEx RT_MANGLER(RTBase64DecodeEx) +# define RTBase64DecodedSize RT_MANGLER(RTBase64DecodedSize) +# define RTBase64DecodedSizeEx RT_MANGLER(RTBase64DecodedSizeEx) +# define RTBase64Encode RT_MANGLER(RTBase64Encode) +# define RTBase64EncodedLength RT_MANGLER(RTBase64EncodedLength) +# define RTBldCfgCompiler RT_MANGLER(RTBldCfgCompiler) +# define RTBldCfgRevision RT_MANGLER(RTBldCfgRevision) +# define RTBldCfgRevisionStr RT_MANGLER(RTBldCfgRevisionStr) +# define RTBldCfgTarget RT_MANGLER(RTBldCfgTarget) +# define RTBldCfgTargetArch RT_MANGLER(RTBldCfgTargetArch) +# define RTBldCfgTargetDotArch RT_MANGLER(RTBldCfgTargetDotArch) +# define RTBldCfgType RT_MANGLER(RTBldCfgType) +# define RTBldCfgVersion RT_MANGLER(RTBldCfgVersion) +# define RTBldCfgVersionBuild RT_MANGLER(RTBldCfgVersionBuild) +# define RTBldCfgVersionMajor RT_MANGLER(RTBldCfgVersionMajor) +# define RTBldCfgVersionMinor RT_MANGLER(RTBldCfgVersionMinor) +# define RTCdromOpen RT_MANGLER(RTCdromOpen) +# define RTCdromRetain RT_MANGLER(RTCdromRetain) +# define RTCdromRelease RT_MANGLER(RTCdromRelease) +# define RTCdromQueryMountPoint RT_MANGLER(RTCdromQueryMountPoint) +# define RTCdromUnmount RT_MANGLER(RTCdromUnmount) +# define RTCdromEject RT_MANGLER(RTCdromEject) +# define RTCdromLock RT_MANGLER(RTCdromLock) +# define RTCdromUnlock RT_MANGLER(RTCdromUnlock) +# define RTCdromCount RT_MANGLER(RTCdromCount) +# define RTCdromOrdinalToName RT_MANGLER(RTCdromOrdinalToName) +# define RTCdromOpenByOrdinal RT_MANGLER(RTCdromOpenByOrdinal) +# define RTCidrStrToIPv4 RT_MANGLER(RTCidrStrToIPv4) +# define RTCircBufAcquireReadBlock RT_MANGLER(RTCircBufAcquireReadBlock) +# define RTCircBufAcquireWriteBlock RT_MANGLER(RTCircBufAcquireWriteBlock) +# define RTCircBufCreate RT_MANGLER(RTCircBufCreate) +# define RTCircBufDestroy RT_MANGLER(RTCircBufDestroy) +# define RTCircBufFree RT_MANGLER(RTCircBufFree) +# define RTCircBufIsReading RT_MANGLER(RTCircBufIsReading) +# define RTCircBufIsWriting RT_MANGLER(RTCircBufIsWriting) +# define RTCircBufReleaseReadBlock RT_MANGLER(RTCircBufReleaseReadBlock) +# define RTCircBufReleaseWriteBlock RT_MANGLER(RTCircBufReleaseWriteBlock) +# define RTCircBufReset RT_MANGLER(RTCircBufReset) +# define RTCircBufSize RT_MANGLER(RTCircBufSize) +# define RTCircBufUsed RT_MANGLER(RTCircBufUsed) +# define RTCoreDumperDisable RT_MANGLER(RTCoreDumperDisable) /* solaris */ +# define RTCoreDumperSetup RT_MANGLER(RTCoreDumperSetup) /* solaris */ +# define RTCoreDumperTakeDump RT_MANGLER(RTCoreDumperTakeDump) /* solaris */ +# define RTCrc32 RT_MANGLER(RTCrc32) +# define RTCrc32Finish RT_MANGLER(RTCrc32Finish) +# define RTCrc32Process RT_MANGLER(RTCrc32Process) +# define RTCrc32Start RT_MANGLER(RTCrc32Start) +# define RTCrc32C RT_MANGLER(RTCrc32C) +# define RTCrc32CFinish RT_MANGLER(RTCrc32CFinish) +# define RTCrc32CProcess RT_MANGLER(RTCrc32CProcess) +# define RTCrc32CStart RT_MANGLER(RTCrc32CStart) +# define RTCrc64 RT_MANGLER(RTCrc64) +# define RTCrc64Finish RT_MANGLER(RTCrc64Finish) +# define RTCrc64Process RT_MANGLER(RTCrc64Process) +# define RTCrc64Start RT_MANGLER(RTCrc64Start) +# define RTCrcAdler32 RT_MANGLER(RTCrcAdler32) +# define RTCrcAdler32Finish RT_MANGLER(RTCrcAdler32Finish) +# define RTCrcAdler32Process RT_MANGLER(RTCrcAdler32Process) +# define RTCrcAdler32Start RT_MANGLER(RTCrcAdler32Start) +# define RTCritSectDelete RT_MANGLER(RTCritSectDelete) +# define RTCritSectEnter RT_MANGLER(RTCritSectEnter) +# define RTCritSectEnterDebug RT_MANGLER(RTCritSectEnterDebug) +# define RTCritSectEnterMultiple RT_MANGLER(RTCritSectEnterMultiple) +# define RTCritSectEnterMultipleDebug RT_MANGLER(RTCritSectEnterMultipleDebug) +# define RTCritSectInit RT_MANGLER(RTCritSectInit) +# define RTCritSectInitEx RT_MANGLER(RTCritSectInitEx) +# define RTCritSectLeave RT_MANGLER(RTCritSectLeave) +# define RTCritSectLeaveMultiple RT_MANGLER(RTCritSectLeaveMultiple) +# define RTCritSectSetSubClass RT_MANGLER(RTCritSectSetSubClass) +# define RTCritSectTryEnter RT_MANGLER(RTCritSectTryEnter) +# define RTCritSectTryEnterDebug RT_MANGLER(RTCritSectTryEnterDebug) +# define RTCritSectRwDelete RT_MANGLER(RTCritSectRwDelete) +# define RTCritSectRwEnterExcl RT_MANGLER(RTCritSectRwEnterExcl) +# define RTCritSectRwEnterExclDebug RT_MANGLER(RTCritSectRwEnterExclDebug) +# define RTCritSectRwEnterShared RT_MANGLER(RTCritSectRwEnterShared) +# define RTCritSectRwEnterSharedDebug RT_MANGLER(RTCritSectRwEnterSharedDebug) +# define RTCritSectRwGetReadCount RT_MANGLER(RTCritSectRwGetReadCount) +# define RTCritSectRwGetWriteRecursion RT_MANGLER(RTCritSectRwGetWriteRecursion) +# define RTCritSectRwGetWriterReadRecursion RT_MANGLER(RTCritSectRwGetWriterReadRecursion) +# define RTCritSectRwInit RT_MANGLER(RTCritSectRwInit) +# define RTCritSectRwInitEx RT_MANGLER(RTCritSectRwInitEx) +# define RTCritSectRwIsReadOwner RT_MANGLER(RTCritSectRwIsReadOwner) +# define RTCritSectRwIsWriteOwner RT_MANGLER(RTCritSectRwIsWriteOwner) +# define RTCritSectRwLeaveExcl RT_MANGLER(RTCritSectRwLeaveExcl) +# define RTCritSectRwLeaveShared RT_MANGLER(RTCritSectRwLeaveShared) +# define RTCritSectRwSetSubClass RT_MANGLER(RTCritSectRwSetSubClass) +# define RTCritSectRwTryEnterExcl RT_MANGLER(RTCritSectRwTryEnterExcl) +# define RTCritSectRwTryEnterExclDebug RT_MANGLER(RTCritSectRwTryEnterExclDebug) +# define RTCritSectRwTryEnterShared RT_MANGLER(RTCritSectRwTryEnterShared) +# define RTCritSectRwTryEnterSharedDebug RT_MANGLER(RTCritSectRwTryEnterSharedDebug) +# define RTDbgAsCreate RT_MANGLER(RTDbgAsCreate) +# define RTDbgAsCreateF RT_MANGLER(RTDbgAsCreateF) +# define RTDbgAsCreateV RT_MANGLER(RTDbgAsCreateV) +# define RTDbgAsFirstAddr RT_MANGLER(RTDbgAsFirstAddr) +# define RTDbgAsLastAddr RT_MANGLER(RTDbgAsLastAddr) +# define RTDbgAsLineAdd RT_MANGLER(RTDbgAsLineAdd) +# define RTDbgAsLineByAddr RT_MANGLER(RTDbgAsLineByAddr) +# define RTDbgAsLineByAddrA RT_MANGLER(RTDbgAsLineByAddrA) +# define RTDbgAsLockExcl RT_MANGLER(RTDbgAsLockExcl) +# define RTDbgAsModuleByAddr RT_MANGLER(RTDbgAsModuleByAddr) +# define RTDbgAsModuleByIndex RT_MANGLER(RTDbgAsModuleByIndex) +# define RTDbgAsModuleByName RT_MANGLER(RTDbgAsModuleByName) +# define RTDbgAsModuleCount RT_MANGLER(RTDbgAsModuleCount) +# define RTDbgAsModuleLink RT_MANGLER(RTDbgAsModuleLink) +# define RTDbgAsModuleLinkSeg RT_MANGLER(RTDbgAsModuleLinkSeg) +# define RTDbgAsModuleQueryMapByIndex RT_MANGLER(RTDbgAsModuleQueryMapByIndex) +# define RTDbgAsModuleUnlink RT_MANGLER(RTDbgAsModuleUnlink) +# define RTDbgAsModuleUnlinkByAddr RT_MANGLER(RTDbgAsModuleUnlinkByAddr) +# define RTDbgAsName RT_MANGLER(RTDbgAsName) +# define RTDbgAsRelease RT_MANGLER(RTDbgAsRelease) +# define RTDbgAsRetain RT_MANGLER(RTDbgAsRetain) +# define RTDbgAsSymbolAdd RT_MANGLER(RTDbgAsSymbolAdd) +# define RTDbgAsSymbolByAddr RT_MANGLER(RTDbgAsSymbolByAddr) +# define RTDbgAsSymbolByAddrA RT_MANGLER(RTDbgAsSymbolByAddrA) +# define RTDbgAsSymbolByName RT_MANGLER(RTDbgAsSymbolByName) +# define RTDbgAsSymbolByNameA RT_MANGLER(RTDbgAsSymbolByNameA) +# define RTDbgAsUnlockExcl RT_MANGLER(RTDbgAsUnlockExcl) +# define RTDbgCfgCreate RT_MANGLER(RTDbgCfgCreate) +# define RTDbgCfgRetain RT_MANGLER(RTDbgCfgRetain) +# define RTDbgCfgRelease RT_MANGLER(RTDbgCfgRelease) +# define RTDbgCfgChangeString RT_MANGLER(RTDbgCfgChangeString) +# define RTDbgCfgChangeUInt RT_MANGLER(RTDbgCfgChangeUInt) +# define RTDbgCfgQueryString RT_MANGLER(RTDbgCfgQueryString) +# define RTDbgCfgQueryUInt RT_MANGLER(RTDbgCfgQueryUInt) +# define RTDbgCfgOpenDbg RT_MANGLER(RTDbgCfgOpenDbg) +# define RTDbgCfgOpenDsymBundle RT_MANGLER(RTDbgCfgOpenDsymBundle) +# define RTDbgCfgOpenMachOImage RT_MANGLER(RTDbgCfgOpenMachOImage) +# define RTDbgCfgOpenDwo RT_MANGLER(RTDbgCfgOpenDwo) +# define RTDbgCfgOpenPdb70 RT_MANGLER(RTDbgCfgOpenPdb70) +# define RTDbgCfgOpenPdb20 RT_MANGLER(RTDbgCfgOpenPdb20) +# define RTDbgCfgOpenPeImage RT_MANGLER(RTDbgCfgOpenPeImage) +# define RTDbgCfgSetLogCallback RT_MANGLER(RTDbgCfgSetLogCallback) +# define RTDbgLineAlloc RT_MANGLER(RTDbgLineAlloc) +# define RTDbgLineDup RT_MANGLER(RTDbgLineDup) +# define RTDbgLineFree RT_MANGLER(RTDbgLineFree) +# define RTDbgModCreate RT_MANGLER(RTDbgModCreate) +# define RTDbgModCreateFromDbg RT_MANGLER(RTDbgModCreateFromDbg) +# define RTDbgModCreateFromDwo RT_MANGLER(RTDbgModCreateFromDwo) +# define RTDbgModCreateFromImage RT_MANGLER(RTDbgModCreateFromImage) +# define RTDbgModCreateFromMap RT_MANGLER(RTDbgModCreateFromMap) +# define RTDbgModCreateFromPdb RT_MANGLER(RTDbgModCreateFromPdb) +# define RTDbgModCreateFromPeImage RT_MANGLER(RTDbgModCreateFromPeImage) +# define RTDbgModCreateFromMachOImage RT_MANGLER(RTDbgModCreateFromMachOImage) +# define RTDbgModGetTag RT_MANGLER(RTDbgModGetTag) +# define RTDbgModImageSize RT_MANGLER(RTDbgModImageSize) +# define RTDbgModIsDeferred RT_MANGLER(RTDbgModIsDeferred) +# define RTDbgModIsExports RT_MANGLER(RTDbgModIsExports) +# define RTDbgModLineAdd RT_MANGLER(RTDbgModLineAdd) +# define RTDbgModLineByAddr RT_MANGLER(RTDbgModLineByAddr) +# define RTDbgModLineByAddrA RT_MANGLER(RTDbgModLineByAddrA) +# define RTDbgModLineByOrdinal RT_MANGLER(RTDbgModLineByOrdinal) +# define RTDbgModLineByOrdinalA RT_MANGLER(RTDbgModLineByOrdinalA) +# define RTDbgModLineCount RT_MANGLER(RTDbgModLineCount) +# define RTDbgModName RT_MANGLER(RTDbgModName) +# define RTDbgModDebugFile RT_MANGLER(RTDbgModDebugFile) +# define RTDbgModImageFile RT_MANGLER(RTDbgModImageFile) +# define RTDbgModImageFileUsed RT_MANGLER(RTDbgModImageFileUsed) +# define RTDbgModRelease RT_MANGLER(RTDbgModRelease) +# define RTDbgModRemoveAll RT_MANGLER(RTDbgModRemoveAll) +# define RTDbgModRetain RT_MANGLER(RTDbgModRetain) +# define RTDbgModRvaToSegOff RT_MANGLER(RTDbgModRvaToSegOff) +# define RTDbgModSegmentAdd RT_MANGLER(RTDbgModSegmentAdd) +# define RTDbgModSegmentByIndex RT_MANGLER(RTDbgModSegmentByIndex) +# define RTDbgModSegmentCount RT_MANGLER(RTDbgModSegmentCount) +# define RTDbgModSegmentRva RT_MANGLER(RTDbgModSegmentRva) +# define RTDbgModSegmentSize RT_MANGLER(RTDbgModSegmentSize) +# define RTDbgModSetTag RT_MANGLER(RTDbgModSetTag) +# define RTDbgModSymbolAdd RT_MANGLER(RTDbgModSymbolAdd) +# define RTDbgModSymbolByAddr RT_MANGLER(RTDbgModSymbolByAddr) +# define RTDbgModSymbolByAddrA RT_MANGLER(RTDbgModSymbolByAddrA) +# define RTDbgModSymbolByName RT_MANGLER(RTDbgModSymbolByName) +# define RTDbgModSymbolByNameA RT_MANGLER(RTDbgModSymbolByNameA) +# define RTDbgModSymbolByOrdinal RT_MANGLER(RTDbgModSymbolByOrdinal) +# define RTDbgModSymbolByOrdinalA RT_MANGLER(RTDbgModSymbolByOrdinalA) +# define RTDbgModSymbolCount RT_MANGLER(RTDbgModSymbolCount) +# define RTDbgSymbolAlloc RT_MANGLER(RTDbgSymbolAlloc) +# define RTDbgSymbolDup RT_MANGLER(RTDbgSymbolDup) +# define RTDbgSymbolFree RT_MANGLER(RTDbgSymbolFree) +# define RTDirClose RT_MANGLER(RTDirClose) +# define RTDirCreate RT_MANGLER(RTDirCreate) +# define RTDirCreateFullPath RT_MANGLER(RTDirCreateFullPath) +# define RTDirCreateTemp RT_MANGLER(RTDirCreateTemp) +# define RTDirCreateTempSecure RT_MANGLER(RTDirCreateTempSecure) +# define RTDirCreateUniqueNumbered RT_MANGLER(RTDirCreateUniqueNumbered) +# define RTDirEntryIsStdDotLink RT_MANGLER(RTDirEntryIsStdDotLink) +# define RTDirEntryExIsStdDotLink RT_MANGLER(RTDirEntryExIsStdDotLink) +# define RTDirExists RT_MANGLER(RTDirExists) +# define RTDirFlush RT_MANGLER(RTDirFlush) +# define RTDirFlushParent RT_MANGLER(RTDirFlushParent) +# define RTDirOpen RT_MANGLER(RTDirOpen) +# define RTDirOpenFiltered RT_MANGLER(RTDirOpenFiltered) +# define RTDirQueryInfo RT_MANGLER(RTDirQueryInfo) +# define RTDirQueryUnknownType RT_MANGLER(RTDirQueryUnknownType) +# define RTDirQueryUnknownTypeEx RT_MANGLER(RTDirQueryUnknownTypeEx) +# define RTDirRead RT_MANGLER(RTDirRead) +# define RTDirReadEx RT_MANGLER(RTDirReadEx) +# define RTDirRemove RT_MANGLER(RTDirRemove) +# define RTDirRemoveRecursive RT_MANGLER(RTDirRemoveRecursive) +# define RTDirRename RT_MANGLER(RTDirRename) +# define RTDirSetTimes RT_MANGLER(RTDirSetTimes) +# define RTDvmCreate RT_MANGLER(RTDvmCreate) +# define RTDvmRetain RT_MANGLER(RTDvmRetain) +# define RTDvmRelease RT_MANGLER(RTDvmRelease) +# define RTDvmMapOpen RT_MANGLER(RTDvmMapOpen) +# define RTDvmMapInitialize RT_MANGLER(RTDvmMapInitialize) +# define RTDvmMapGetFormat RT_MANGLER(RTDvmMapGetFormat) +# define RTDvmMapGetValidVolumes RT_MANGLER(RTDvmMapGetValidVolumes) +# define RTDvmMapGetMaxVolumes RT_MANGLER(RTDvmMapGetMaxVolumes) +# define RTDvmMapQueryBlockStatus RT_MANGLER(RTDvmMapQueryBlockStatus) +# define RTDvmMapQueryFirstVolume RT_MANGLER(RTDvmMapQueryFirstVolume) +# define RTDvmMapQueryNextVolume RT_MANGLER(RTDvmMapQueryNextVolume) +# define RTDvmVolumeRetain RT_MANGLER(RTDvmVolumeRetain) +# define RTDvmVolumeRelease RT_MANGLER(RTDvmVolumeRelease) +# define RTDvmVolumeGetSize RT_MANGLER(RTDvmVolumeGetSize) +# define RTDvmVolumeQueryName RT_MANGLER(RTDvmVolumeQueryName) +# define RTDvmVolumeGetType RT_MANGLER(RTDvmVolumeGetType) +# define RTDvmVolumeGetFlags RT_MANGLER(RTDvmVolumeGetFlags) +# define RTDvmVolumeRead RT_MANGLER(RTDvmVolumeRead) +# define RTDvmVolumeWrite RT_MANGLER(RTDvmVolumeWrite) +# define RTDvmVolumeSetQueryBlockStatusCallback RT_MANGLER(RTDvmVolumeSetQueryBlockStatusCallback) +# define RTDvmVolumeTypeGetDescr RT_MANGLER(RTDvmVolumeTypeGetDescr) +# define RTDvmVolumeCreateVfsFile RT_MANGLER(RTDvmVolumeCreateVfsFile) +# define RTEnvApplyChanges RT_MANGLER(RTEnvApplyChanges) +# define RTEnvClone RT_MANGLER(RTEnvClone) +# define RTEnvCloneUtf16Block RT_MANGLER(RTEnvCloneUtf16Block) +# define RTEnvCountEx RT_MANGLER(RTEnvCountEx) +# define RTEnvCreate RT_MANGLER(RTEnvCreate) +# define RTEnvCreateChangeRecord RT_MANGLER(RTEnvCreateChangeRecord) +# define RTEnvDestroy RT_MANGLER(RTEnvDestroy) +# define RTEnvDupEx RT_MANGLER(RTEnvDupEx) +# define RTEnvExist RT_MANGLER(RTEnvExist) +# define RTEnvExistsBad RT_MANGLER(RTEnvExistsBad) +# define RTEnvExistsUtf8 RT_MANGLER(RTEnvExistsUtf8) +# define RTEnvExistEx RT_MANGLER(RTEnvExistEx) +# define RTEnvFreeUtf8Block RT_MANGLER(RTEnvFreeUtf8Block) +# define RTEnvFreeUtf16Block RT_MANGLER(RTEnvFreeUtf16Block) +# define RTEnvGet RT_MANGLER(RTEnvGet) +# define RTEnvGetBad RT_MANGLER(RTEnvGetBad) +# define RTEnvGetByIndexEx RT_MANGLER(RTEnvGetByIndexEx) +# define RTEnvGetByIndexRawEx RT_MANGLER(RTEnvGetByIndexRawEx) +# define RTEnvGetUtf8 RT_MANGLER(RTEnvGetUtf8) +# define RTEnvGetEx RT_MANGLER(RTEnvGetEx) +# define RTEnvGetExecEnvP RT_MANGLER(RTEnvGetExecEnvP) +# define RTEnvIsChangeRecord RT_MANGLER(RTEnvIsChangeRecord) +# define RTEnvPut RT_MANGLER(RTEnvPut) +# define RTEnvPutBad RT_MANGLER(RTEnvPutBad) +# define RTEnvPutUtf8 RT_MANGLER(RTEnvPutUtf8) +# define RTEnvPutEx RT_MANGLER(RTEnvPutEx) +# define RTEnvQueryUtf16Block RT_MANGLER(RTEnvQueryUtf16Block) +# define RTEnvQueryUtf8Block RT_MANGLER(RTEnvQueryUtf8Block) +# define RTEnvReset RT_MANGLER(RTEnvReset) +# define RTEnvSet RT_MANGLER(RTEnvSet) +# define RTEnvSetBad RT_MANGLER(RTEnvSetBad) +# define RTEnvSetUtf8 RT_MANGLER(RTEnvSetUtf8) +# define RTEnvSetEx RT_MANGLER(RTEnvSetEx) +# define RTEnvUnset RT_MANGLER(RTEnvUnset) +# define RTEnvUnsetBad RT_MANGLER(RTEnvUnsetBad) +# define RTEnvUnsetUtf8 RT_MANGLER(RTEnvUnsetUtf8) +# define RTEnvUnsetEx RT_MANGLER(RTEnvUnsetEx) +# define RTErrCOMGet RT_MANGLER(RTErrCOMGet) +# define RTErrConvertFromErrno RT_MANGLER(RTErrConvertFromErrno) +# define RTErrConvertToErrno RT_MANGLER(RTErrConvertToErrno) +# define RTErrGet RT_MANGLER(RTErrGet) +# define RTErrInfoAlloc RT_MANGLER(RTErrInfoAlloc) +# define RTErrInfoAllocEx RT_MANGLER(RTErrInfoAllocEx) +# define RTErrInfoFree RT_MANGLER(RTErrInfoFree) +# define RTErrInfoSet RT_MANGLER(RTErrInfoSet) +# define RTErrInfoSetF RT_MANGLER(RTErrInfoSetF) +# define RTErrInfoSetV RT_MANGLER(RTErrInfoSetV) +# define RTErrVarsAreEqual RT_MANGLER(RTErrVarsAreEqual) +# define RTErrVarsHaveChanged RT_MANGLER(RTErrVarsHaveChanged) +# define RTErrVarsRestore RT_MANGLER(RTErrVarsRestore) +# define RTErrVarsSave RT_MANGLER(RTErrVarsSave) +# define RTFileAioCtxAssociateWithFile RT_MANGLER(RTFileAioCtxAssociateWithFile) +# define RTFileAioCtxCreate RT_MANGLER(RTFileAioCtxCreate) +# define RTFileAioCtxDestroy RT_MANGLER(RTFileAioCtxDestroy) +# define RTFileAioCtxGetMaxReqCount RT_MANGLER(RTFileAioCtxGetMaxReqCount) +# define RTFileAioCtxSubmit RT_MANGLER(RTFileAioCtxSubmit) +# define RTFileAioCtxWait RT_MANGLER(RTFileAioCtxWait) +# define RTFileAioCtxWakeup RT_MANGLER(RTFileAioCtxWakeup) +# define RTFileAioGetLimits RT_MANGLER(RTFileAioGetLimits) +# define RTFileAioReqCancel RT_MANGLER(RTFileAioReqCancel) +# define RTFileAioReqCreate RT_MANGLER(RTFileAioReqCreate) +# define RTFileAioReqDestroy RT_MANGLER(RTFileAioReqDestroy) +# define RTFileAioReqGetRC RT_MANGLER(RTFileAioReqGetRC) +# define RTFileAioReqGetUser RT_MANGLER(RTFileAioReqGetUser) +# define RTFileAioReqPrepareFlush RT_MANGLER(RTFileAioReqPrepareFlush) +# define RTFileAioReqPrepareRead RT_MANGLER(RTFileAioReqPrepareRead) +# define RTFileAioReqPrepareWrite RT_MANGLER(RTFileAioReqPrepareWrite) +# define RTFileChangeLock RT_MANGLER(RTFileChangeLock) +# define RTFileClose RT_MANGLER(RTFileClose) +# define RTFileCompare RT_MANGLER(RTFileCompare) +# define RTFileCompareByHandles RT_MANGLER(RTFileCompareByHandles) +# define RTFileCompareByHandlesEx RT_MANGLER(RTFileCompareByHandlesEx) +# define RTFileCompareEx RT_MANGLER(RTFileCompareEx) +# define RTFileCopy RT_MANGLER(RTFileCopy) +# define RTFileCopyByHandles RT_MANGLER(RTFileCopyByHandles) +# define RTFileCopyByHandlesEx RT_MANGLER(RTFileCopyByHandlesEx) +# define RTFileCopyEx RT_MANGLER(RTFileCopyEx) +# define RTFileCreateTemp RT_MANGLER(RTFileCreateTemp) +# define RTFileCreateTempSecure RT_MANGLER(RTFileCreateTempSecure) +# define RTFileDelete RT_MANGLER(RTFileDelete) +# define RTFileExists RT_MANGLER(RTFileExists) +# define RTFileFlush RT_MANGLER(RTFileFlush) +# define RTFileFromNative RT_MANGLER(RTFileFromNative) +# define RTFileGetMaxSize RT_MANGLER(RTFileGetMaxSize) +# define RTFileGetMaxSizeEx RT_MANGLER(RTFileGetMaxSizeEx) +# define RTFileGetSize RT_MANGLER(RTFileGetSize) +# define RTFileIoCtl RT_MANGLER(RTFileIoCtl) +# define RTFileIsValid RT_MANGLER(RTFileIsValid) +# define RTFileLock RT_MANGLER(RTFileLock) +# define RTFileModeToFlags RT_MANGLER(RTFileModeToFlags) +# define RTFileModeToFlagsEx RT_MANGLER(RTFileModeToFlagsEx) +# define RTFileMove RT_MANGLER(RTFileMove) +# define RTFileOpen RT_MANGLER(RTFileOpen) +# define RTFileOpenBitBucket RT_MANGLER(RTFileOpenBitBucket) +# define RTFileOpenF RT_MANGLER(RTFileOpenF) +# define RTFileOpenV RT_MANGLER(RTFileOpenV) +# define RTFileOpenTemp RT_MANGLER(RTFileOpenTemp) +# define RTFileQueryFsSizes RT_MANGLER(RTFileQueryFsSizes) +# define RTFileQueryInfo RT_MANGLER(RTFileQueryInfo) +# define RTFileQuerySize RT_MANGLER(RTFileQuerySize) +# define RTFileRead RT_MANGLER(RTFileRead) +# define RTFileReadAll RT_MANGLER(RTFileReadAll) +# define RTFileReadAllByHandle RT_MANGLER(RTFileReadAllByHandle) +# define RTFileReadAllByHandleEx RT_MANGLER(RTFileReadAllByHandleEx) +# define RTFileReadAllEx RT_MANGLER(RTFileReadAllEx) +# define RTFileReadAllFree RT_MANGLER(RTFileReadAllFree) +# define RTFileReadAt RT_MANGLER(RTFileReadAt) +# define RTFileRename RT_MANGLER(RTFileRename) +# define RTFileSeek RT_MANGLER(RTFileSeek) +# define RTFileSetForceFlags RT_MANGLER(RTFileSetForceFlags) +# define RTFileSetMode RT_MANGLER(RTFileSetMode) +# define RTFileSetOwner RT_MANGLER(RTFileSetOwner) +# define RTFileSetSize RT_MANGLER(RTFileSetSize) +# define RTFileSetTimes RT_MANGLER(RTFileSetTimes) +# define RTFileSgReadAt RT_MANGLER(RTFileSgReadAt) +# define RTFileSgWriteAt RT_MANGLER(RTFileSgWriteAt) +# define RTFileTell RT_MANGLER(RTFileTell) +# define RTFileToNative RT_MANGLER(RTFileToNative) +# define RTFileUnlock RT_MANGLER(RTFileUnlock) +# define RTFileWrite RT_MANGLER(RTFileWrite) +# define RTFileWriteAt RT_MANGLER(RTFileWriteAt) +# define RTFilesystemVfsFromFile RT_MANGLER(RTFilesystemVfsFromFile) +# define RTFsIsCaseSensitive RT_MANGLER(RTFsIsCaseSensitive) +# define RTFsQueryProperties RT_MANGLER(RTFsQueryProperties) +# define RTFsQuerySerial RT_MANGLER(RTFsQuerySerial) +# define RTFsQuerySizes RT_MANGLER(RTFsQuerySizes) +# define RTFsQueryType RT_MANGLER(RTFsQueryType) +# define RTFsTypeName RT_MANGLER(RTFsTypeName) +# define RTGetOpt RT_MANGLER(RTGetOpt) +# define RTGetOptArgvFree RT_MANGLER(RTGetOptArgvFree) +# define RTGetOptArgvFromString RT_MANGLER(RTGetOptArgvFromString) +# define RTGetOptArgvToString RT_MANGLER(RTGetOptArgvToString) +# define RTGetOptArgvToUtf16String RT_MANGLER(RTGetOptArgvToUtf16String) +# define RTGetOptFetchValue RT_MANGLER(RTGetOptFetchValue) +# define RTGetOptInit RT_MANGLER(RTGetOptInit) +# define RTGetOptPrintError RT_MANGLER(RTGetOptPrintError) +# define RTHandleClose RT_MANGLER(RTHandleClose) +# define RTHandleGetStandard RT_MANGLER(RTHandleGetStandard) +# define RTHandleTableAlloc RT_MANGLER(RTHandleTableAlloc) +# define RTHandleTableAllocWithCtx RT_MANGLER(RTHandleTableAllocWithCtx) +# define RTHandleTableCreate RT_MANGLER(RTHandleTableCreate) +# define RTHandleTableCreateEx RT_MANGLER(RTHandleTableCreateEx) +# define RTHandleTableDestroy RT_MANGLER(RTHandleTableDestroy) +# define RTHandleTableFree RT_MANGLER(RTHandleTableFree) +# define RTHandleTableFreeWithCtx RT_MANGLER(RTHandleTableFreeWithCtx) +# define RTHandleTableLookup RT_MANGLER(RTHandleTableLookup) +# define RTHandleTableLookupWithCtx RT_MANGLER(RTHandleTableLookupWithCtx) +# define RTHeapOffsetAlloc RT_MANGLER(RTHeapOffsetAlloc) +# define RTHeapOffsetAllocZ RT_MANGLER(RTHeapOffsetAllocZ) +# define RTHeapOffsetDump RT_MANGLER(RTHeapOffsetDump) +# define RTHeapOffsetFree RT_MANGLER(RTHeapOffsetFree) +# define RTHeapOffsetGetFreeSize RT_MANGLER(RTHeapOffsetGetFreeSize) +# define RTHeapOffsetGetHeapSize RT_MANGLER(RTHeapOffsetGetHeapSize) +# define RTHeapOffsetInit RT_MANGLER(RTHeapOffsetInit) +# define RTHeapOffsetSize RT_MANGLER(RTHeapOffsetSize) +# define RTHeapSimpleAlloc RT_MANGLER(RTHeapSimpleAlloc) +# define RTHeapSimpleAllocZ RT_MANGLER(RTHeapSimpleAllocZ) +# define RTHeapSimpleDump RT_MANGLER(RTHeapSimpleDump) +# define RTHeapSimpleFree RT_MANGLER(RTHeapSimpleFree) +# define RTHeapSimpleGetFreeSize RT_MANGLER(RTHeapSimpleGetFreeSize) +# define RTHeapSimpleGetHeapSize RT_MANGLER(RTHeapSimpleGetHeapSize) +# define RTHeapSimpleInit RT_MANGLER(RTHeapSimpleInit) +# define RTHeapSimpleRelocate RT_MANGLER(RTHeapSimpleRelocate) +# define RTHeapSimpleSize RT_MANGLER(RTHeapSimpleSize) +# define RTHttpGetFile RT_MANGLER(RTHttpGetFile) +# define RTHttpUseSystemProxySettings RT_MANGLER(RTHttpUseSystemProxySettings) +# define RTIsoFsClose RT_MANGLER(RTIsoFsClose) +# define RTIsoFsExtractFile RT_MANGLER(RTIsoFsExtractFile) +# define RTIsoFsGetFileInfo RT_MANGLER(RTIsoFsGetFileInfo) +# define RTIsoFsOpen RT_MANGLER(RTIsoFsOpen) +# define RTLatin1CalcUtf16Len RT_MANGLER(RTLatin1CalcUtf16Len) +# define RTLatin1CalcUtf16LenEx RT_MANGLER(RTLatin1CalcUtf16LenEx) +# define RTLatin1CalcUtf8Len RT_MANGLER(RTLatin1CalcUtf8Len) +# define RTLatin1CalcUtf8LenEx RT_MANGLER(RTLatin1CalcUtf8LenEx) +# define RTLatin1ToUtf16ExTag RT_MANGLER(RTLatin1ToUtf16ExTag) +# define RTLatin1ToUtf16Tag RT_MANGLER(RTLatin1ToUtf16Tag) +# define RTLatin1ToUtf8ExTag RT_MANGLER(RTLatin1ToUtf8ExTag) +# define RTLatin1ToUtf8Tag RT_MANGLER(RTLatin1ToUtf8Tag) +# define RTLdrClose RT_MANGLER(RTLdrClose) +# define RTLdrEnumDbgInfo RT_MANGLER(RTLdrEnumDbgInfo) +# define RTLdrEnumSegments RT_MANGLER(RTLdrEnumSegments) +# define RTLdrEnumSymbols RT_MANGLER(RTLdrEnumSymbols) +# define RTLdrGetArch RT_MANGLER(RTLdrGetArch) +# define RTLdrGetBits RT_MANGLER(RTLdrGetBits) +# define RTLdrGetEndian RT_MANGLER(RTLdrGetEndian) +# define RTLdrGetFormat RT_MANGLER(RTLdrGetFormat) +# define RTLdrGetFunction RT_MANGLER(RTLdrGetFunction) +# define RTLdrGetNativeHandle RT_MANGLER(RTLdrGetNativeHandle) +# define RTLdrGetSuff RT_MANGLER(RTLdrGetSuff) +# define RTLdrGetSymbol RT_MANGLER(RTLdrGetSymbol) +# define RTLdrGetSymbolEx RT_MANGLER(RTLdrGetSymbolEx) +# define RTLdrGetSystemSymbol RT_MANGLER(RTLdrGetSystemSymbol) +# define RTLdrGetType RT_MANGLER(RTLdrGetType) +# define RTLdrIsLoadable RT_MANGLER(RTLdrIsLoadable) +# define RTLdrLinkAddressToRva RT_MANGLER(RTLdrLinkAddressToRva) +# define RTLdrLinkAddressToSegOffset RT_MANGLER(RTLdrLinkAddressToSegOffset) +# define RTLdrLoad RT_MANGLER(RTLdrLoad) +# define RTLdrLoadAppPriv RT_MANGLER(RTLdrLoadAppPriv) +# define RTLdrLoadEx RT_MANGLER(RTLdrLoadEx) +# define RTLdrLoadSystem RT_MANGLER(RTLdrLoadSystem) +# define RTLdrOpen RT_MANGLER(RTLdrOpen) +# define RTLdrOpenInMemory RT_MANGLER(RTLdrOpenInMemory) +# define RTLdrOpenkLdr RT_MANGLER(RTLdrOpenkLdr) +# define RTLdrRelocate RT_MANGLER(RTLdrRelocate) +# define RTLdrRvaToSegOffset RT_MANGLER(RTLdrRvaToSegOffset) +# define RTLdrQueryForwarderInfo RT_MANGLER(RTLdrQueryForwarderInfo) +# define RTLdrQueryProp RT_MANGLER(RTLdrQueryProp) +# define RTLdrSegOffsetToRva RT_MANGLER(RTLdrSegOffsetToRva) +# define RTLdrSize RT_MANGLER(RTLdrSize) +# define RTLinuxCheckDevicePath RT_MANGLER(RTLinuxCheckDevicePath) +# define RTLinuxCheckDevicePathV RT_MANGLER(RTLinuxCheckDevicePathV) +# define RTLinuxSysFsClose RT_MANGLER(RTLinuxSysFsClose) +# define RTLinuxSysFsExists RT_MANGLER(RTLinuxSysFsExists) +# define RTLinuxSysFsExistsV RT_MANGLER(RTLinuxSysFsExistsV) +# define RTLinuxSysFsGetLinkDest RT_MANGLER(RTLinuxSysFsGetLinkDest) +# define RTLinuxSysFsGetLinkDestV RT_MANGLER(RTLinuxSysFsGetLinkDestV) +# define RTLinuxSysFsOpen RT_MANGLER(RTLinuxSysFsOpen) +# define RTLinuxSysFsOpenV RT_MANGLER(RTLinuxSysFsOpenV) +# define RTLinuxSysFsReadDevNumFile RT_MANGLER(RTLinuxSysFsReadDevNumFile) +# define RTLinuxSysFsReadDevNumFileV RT_MANGLER(RTLinuxSysFsReadDevNumFileV) +# define RTLinuxSysFsReadFile RT_MANGLER(RTLinuxSysFsReadFile) +# define RTLinuxSysFsReadIntFile RT_MANGLER(RTLinuxSysFsReadIntFile) +# define RTLinuxSysFsReadIntFileV RT_MANGLER(RTLinuxSysFsReadIntFileV) +# define RTLinuxSysFsReadStr RT_MANGLER(RTLinuxSysFsReadStr) +# define RTLinuxSysFsReadStrFile RT_MANGLER(RTLinuxSysFsReadStrFile) +# define RTLinuxSysFsReadStrFileV RT_MANGLER(RTLinuxSysFsReadStrFileV) +# define RTLockValidatorClassAddPriorClass RT_MANGLER(RTLockValidatorClassAddPriorClass) +# define RTLockValidatorClassCreate RT_MANGLER(RTLockValidatorClassCreate) +# define RTLockValidatorClassCreateEx RT_MANGLER(RTLockValidatorClassCreateEx) +# define RTLockValidatorClassCreateExV RT_MANGLER(RTLockValidatorClassCreateExV) +# define RTLockValidatorClassCreateUnique RT_MANGLER(RTLockValidatorClassCreateUnique) +# define RTLockValidatorClassEnforceStrictReleaseOrder RT_MANGLER(RTLockValidatorClassEnforceStrictReleaseOrder) +# define RTLockValidatorClassFindForSrcPos RT_MANGLER(RTLockValidatorClassFindForSrcPos) +# define RTLockValidatorClassForSrcPos RT_MANGLER(RTLockValidatorClassForSrcPos) +# define RTLockValidatorClassRelease RT_MANGLER(RTLockValidatorClassRelease) +# define RTLockValidatorClassRetain RT_MANGLER(RTLockValidatorClassRetain) +# define RTLockValidatorHoldsLocksInClass RT_MANGLER(RTLockValidatorHoldsLocksInClass) +# define RTLockValidatorHoldsLocksInSubClass RT_MANGLER(RTLockValidatorHoldsLocksInSubClass) +# define RTLockValidatorIsBlockedThreadInValidator RT_MANGLER(RTLockValidatorIsBlockedThreadInValidator) +# define RTLockValidatorIsEnabled RT_MANGLER(RTLockValidatorIsEnabled) +# define RTLockValidatorIsQuiet RT_MANGLER(RTLockValidatorIsQuiet) +# define RTLockValidatorMayPanic RT_MANGLER(RTLockValidatorMayPanic) +# define RTLockValidatorQueryBlocking RT_MANGLER(RTLockValidatorQueryBlocking) +# define RTLockValidatorReadLockDec RT_MANGLER(RTLockValidatorReadLockDec) +# define RTLockValidatorReadLockGetCount RT_MANGLER(RTLockValidatorReadLockGetCount) +# define RTLockValidatorReadLockInc RT_MANGLER(RTLockValidatorReadLockInc) +# define RTLockValidatorRecExclCheckBlocking RT_MANGLER(RTLockValidatorRecExclCheckBlocking) +# define RTLockValidatorRecExclCheckOrder RT_MANGLER(RTLockValidatorRecExclCheckOrder) +# define RTLockValidatorRecExclCheckOrderAndBlocking RT_MANGLER(RTLockValidatorRecExclCheckOrderAndBlocking) +# define RTLockValidatorRecExclCreate RT_MANGLER(RTLockValidatorRecExclCreate) +# define RTLockValidatorRecExclCreateV RT_MANGLER(RTLockValidatorRecExclCreateV) +# define RTLockValidatorRecExclDelete RT_MANGLER(RTLockValidatorRecExclDelete) +# define RTLockValidatorRecExclDestroy RT_MANGLER(RTLockValidatorRecExclDestroy) +# define RTLockValidatorRecExclInit RT_MANGLER(RTLockValidatorRecExclInit) +# define RTLockValidatorRecExclInitV RT_MANGLER(RTLockValidatorRecExclInitV) +# define RTLockValidatorRecExclRecursion RT_MANGLER(RTLockValidatorRecExclRecursion) +# define RTLockValidatorRecExclRecursionMixed RT_MANGLER(RTLockValidatorRecExclRecursionMixed) +# define RTLockValidatorRecExclReleaseOwner RT_MANGLER(RTLockValidatorRecExclReleaseOwner) +# define RTLockValidatorRecExclReleaseOwnerUnchecked RT_MANGLER(RTLockValidatorRecExclReleaseOwnerUnchecked) +# define RTLockValidatorRecExclSetOwner RT_MANGLER(RTLockValidatorRecExclSetOwner) +# define RTLockValidatorRecExclSetSubClass RT_MANGLER(RTLockValidatorRecExclSetSubClass) +# define RTLockValidatorRecExclUnwind RT_MANGLER(RTLockValidatorRecExclUnwind) +# define RTLockValidatorRecExclUnwindMixed RT_MANGLER(RTLockValidatorRecExclUnwindMixed) +# define RTLockValidatorRecMakeSiblings RT_MANGLER(RTLockValidatorRecMakeSiblings) +# define RTLockValidatorRecSharedAddOwner RT_MANGLER(RTLockValidatorRecSharedAddOwner) +# define RTLockValidatorRecSharedCheckAndRelease RT_MANGLER(RTLockValidatorRecSharedCheckAndRelease) +# define RTLockValidatorRecSharedCheckBlocking RT_MANGLER(RTLockValidatorRecSharedCheckBlocking) +# define RTLockValidatorRecSharedCheckOrder RT_MANGLER(RTLockValidatorRecSharedCheckOrder) +# define RTLockValidatorRecSharedCheckOrderAndBlocking RT_MANGLER(RTLockValidatorRecSharedCheckOrderAndBlocking) +# define RTLockValidatorRecSharedCheckSignaller RT_MANGLER(RTLockValidatorRecSharedCheckSignaller) +# define RTLockValidatorRecSharedCreate RT_MANGLER(RTLockValidatorRecSharedCreate) +# define RTLockValidatorRecSharedCreateV RT_MANGLER(RTLockValidatorRecSharedCreateV) +# define RTLockValidatorRecSharedDelete RT_MANGLER(RTLockValidatorRecSharedDelete) +# define RTLockValidatorRecSharedDestroy RT_MANGLER(RTLockValidatorRecSharedDestroy) +# define RTLockValidatorRecSharedInit RT_MANGLER(RTLockValidatorRecSharedInit) +# define RTLockValidatorRecSharedInitV RT_MANGLER(RTLockValidatorRecSharedInitV) +# define RTLockValidatorRecSharedIsOwner RT_MANGLER(RTLockValidatorRecSharedIsOwner) +# define RTLockValidatorRecSharedRemoveOwner RT_MANGLER(RTLockValidatorRecSharedRemoveOwner) +# define RTLockValidatorRecSharedResetOwner RT_MANGLER(RTLockValidatorRecSharedResetOwner) +# define RTLockValidatorRecSharedSetSubClass RT_MANGLER(RTLockValidatorRecSharedSetSubClass) +# define RTLockValidatorSetEnabled RT_MANGLER(RTLockValidatorSetEnabled) +# define RTLockValidatorSetMayPanic RT_MANGLER(RTLockValidatorSetMayPanic) +# define RTLockValidatorSetQuiet RT_MANGLER(RTLockValidatorSetQuiet) +# define RTLockValidatorWriteLockDec RT_MANGLER(RTLockValidatorWriteLockDec) +# define RTLockValidatorWriteLockGetCount RT_MANGLER(RTLockValidatorWriteLockGetCount) +# define RTLockValidatorWriteLockInc RT_MANGLER(RTLockValidatorWriteLockInc) +# define RTLogBackdoorPrintf RT_MANGLER(RTLogBackdoorPrintf) /* r0drv-guest */ +# define RTLogBackdoorPrintfV RT_MANGLER(RTLogBackdoorPrintfV) /* r0drv-guest */ +# define RTLogCalcSizeForR0 RT_MANGLER(RTLogCalcSizeForR0) +# define RTLogCloneRC RT_MANGLER(RTLogCloneRC) +# define RTLogComPrintf RT_MANGLER(RTLogComPrintf) +# define RTLogComPrintfV RT_MANGLER(RTLogComPrintfV) +# define RTLogCopyGroupsAndFlagsForR0 RT_MANGLER(RTLogCopyGroupsAndFlagsForR0) +# define RTLogCreate RT_MANGLER(RTLogCreate) +# define RTLogCreateEx RT_MANGLER(RTLogCreateEx) +# define RTLogCreateExV RT_MANGLER(RTLogCreateExV) +# define RTLogCreateForR0 RT_MANGLER(RTLogCreateForR0) +# define RTLogDefaultInit RT_MANGLER(RTLogDefaultInit) +# define RTLogDefaultInstance RT_MANGLER(RTLogDefaultInstance) +# define RTLogDefaultInstanceEx RT_MANGLER(RTLogDefaultInstanceEx) +# define RTLogDestinations RT_MANGLER(RTLogDestinations) +# define RTLogDestroy RT_MANGLER(RTLogDestroy) +# define RTLogFlags RT_MANGLER(RTLogFlags) +# define RTLogFlush RT_MANGLER(RTLogFlush) +# define RTLogFlushRC RT_MANGLER(RTLogFlushRC) +# define RTLogFlushR0 RT_MANGLER(RTLogFlushR0) +# define RTLogFlushToLogger RT_MANGLER(RTLogFlushToLogger) +# define RTLogFormatV RT_MANGLER(RTLogFormatV) +# define RTLogGetDefaultInstance RT_MANGLER(RTLogGetDefaultInstance) +# define RTLogGetDefaultInstanceEx RT_MANGLER(RTLogGetDefaultInstanceEx) +# define RTLogGetDestinations RT_MANGLER(RTLogGetDestinations) +# define RTLogGetFlags RT_MANGLER(RTLogGetFlags) +# define RTLogGetGroupSettings RT_MANGLER(RTLogGetGroupSettings) +# define RTLogGroupSettings RT_MANGLER(RTLogGroupSettings) +# define RTLogLogger RT_MANGLER(RTLogLogger) +# define RTLogLoggerEx RT_MANGLER(RTLogLoggerEx) +# define RTLogLoggerExV RT_MANGLER(RTLogLoggerExV) +# define RTLogLoggerV RT_MANGLER(RTLogLoggerV) +# define RTLogPrintf RT_MANGLER(RTLogPrintf) +# define RTLogPrintfV RT_MANGLER(RTLogPrintfV) +# define RTLogDumpPrintfV RT_MANGLER(RTLogDumpPrintfV) +# define RTLogRelGetDefaultInstance RT_MANGLER(RTLogRelGetDefaultInstance) +# define RTLogRelGetDefaultInstanceEx RT_MANGLER(RTLogRelGetDefaultInstanceEx) +# define RTLogRelLogger RT_MANGLER(RTLogRelLogger) +# define RTLogRelLoggerV RT_MANGLER(RTLogRelLoggerV) +# define RTLogRelPrintf RT_MANGLER(RTLogRelPrintf) +# define RTLogRelPrintfV RT_MANGLER(RTLogRelPrintfV) +# define RTLogRelSetBuffering RT_MANGLER(RTLogRelSetBuffering) +# define RTLogRelSetDefaultInstance RT_MANGLER(RTLogRelSetDefaultInstance) +# define RTLogSetBuffering RT_MANGLER(RTLogSetBuffering) +# define RTLogSetCustomPrefixCallback RT_MANGLER(RTLogSetCustomPrefixCallback) +# define RTLogSetCustomPrefixCallbackForR0 RT_MANGLER(RTLogSetCustomPrefixCallbackForR0) +# define RTLogSetDefaultInstance RT_MANGLER(RTLogSetDefaultInstance) +# define RTLogSetDefaultInstanceThread RT_MANGLER(RTLogSetDefaultInstanceThread) /* r0drv */ +# define RTLogSetGroupLimit RT_MANGLER(RTLogSetGroupLimit) +# define RTLogWriteCom RT_MANGLER(RTLogWriteCom) +# define RTLogWriteCom RT_MANGLER(RTLogWriteCom) +# define RTLogWriteDebugger RT_MANGLER(RTLogWriteDebugger) +# define RTLogWriteStdErr RT_MANGLER(RTLogWriteStdErr) +# define RTLogWriteStdOut RT_MANGLER(RTLogWriteStdOut) +# define RTLogWriteUser RT_MANGLER(RTLogWriteUser) +# define RTManifestCreate RT_MANGLER(RTManifestCreate) +# define RTManifestDup RT_MANGLER(RTManifestDup) +# define RTManifestEntryAdd RT_MANGLER(RTManifestEntryAdd) +# define RTManifestEntryAddIoStream RT_MANGLER(RTManifestEntryAddIoStream) +# define RTManifestEntryAddPassthruIoStream RT_MANGLER(RTManifestEntryAddPassthruIoStream) +# define RTManifestEntryExists RT_MANGLER(RTManifestEntryExists) +# define RTManifestEntryRemove RT_MANGLER(RTManifestEntryRemove) +# define RTManifestEntryQueryAttr RT_MANGLER(RTManifestEntryQueryAttr) +# define RTManifestEntrySetAttr RT_MANGLER(RTManifestEntrySetAttr) +# define RTManifestEntryUnsetAttr RT_MANGLER(RTManifestEntryUnsetAttr) +# define RTManifestEquals RT_MANGLER(RTManifestEquals) +# define RTManifestEqualsEx RT_MANGLER(RTManifestEqualsEx) +# define RTManifestPtIosAddEntryNow RT_MANGLER(RTManifestPtIosAddEntryNow) +# define RTManifestQueryAttr RT_MANGLER(RTManifestQueryAttr) +# define RTManifestReadStandard RT_MANGLER(RTManifestReadStandard) +# define RTManifestReadStandardEx RT_MANGLER(RTManifestReadStandardEx) +# define RTManifestReadStandardFromFile RT_MANGLER(RTManifestReadStandardFromFile) +# define RTManifestRelease RT_MANGLER(RTManifestRelease) +# define RTManifestRetain RT_MANGLER(RTManifestRetain) +# define RTManifestSetAttr RT_MANGLER(RTManifestSetAttr) +# define RTManifestUnsetAttr RT_MANGLER(RTManifestUnsetAttr) +# define RTManifestVerify RT_MANGLER(RTManifestVerify) +# define RTManifestVerifyDigestType RT_MANGLER(RTManifestVerifyDigestType) +# define RTManifestVerifyFiles RT_MANGLER(RTManifestVerifyFiles) +# define RTManifestVerifyFilesBuf RT_MANGLER(RTManifestVerifyFilesBuf) +# define RTManifestWriteFiles RT_MANGLER(RTManifestWriteFiles) +# define RTManifestWriteFilesBuf RT_MANGLER(RTManifestWriteFilesBuf) +# define RTManifestWriteStandard RT_MANGLER(RTManifestWriteStandard) +# define RTManifestWriteStandardToFile RT_MANGLER(RTManifestWriteStandardToFile) +# define RTMd5 RT_MANGLER(RTMd5) +# define RTMd5Final RT_MANGLER(RTMd5Final) +# define RTMd5FromString RT_MANGLER(RTMd5FromString) +# define RTMd5Init RT_MANGLER(RTMd5Init) +# define RTMd5ToString RT_MANGLER(RTMd5ToString) +# define RTMd5Update RT_MANGLER(RTMd5Update) +# define RTMemAllocExTag RT_MANGLER(RTMemAllocExTag) +# define RTMemAllocTag RT_MANGLER(RTMemAllocTag) +# define RTMemAllocVarTag RT_MANGLER(RTMemAllocVarTag) +# define RTMemAllocZTag RT_MANGLER(RTMemAllocZTag) +# define RTMemAllocZVarTag RT_MANGLER(RTMemAllocZVarTag) +# define RTMemCacheAlloc RT_MANGLER(RTMemCacheAlloc) +# define RTMemCacheAllocEx RT_MANGLER(RTMemCacheAllocEx) +# define RTMemCacheCreate RT_MANGLER(RTMemCacheCreate) +# define RTMemCacheDestroy RT_MANGLER(RTMemCacheDestroy) +# define RTMemCacheFree RT_MANGLER(RTMemCacheFree) +# define RTMemContAlloc RT_MANGLER(RTMemContAlloc) /* r0drv */ +# define RTMemContFree RT_MANGLER(RTMemContFree) /* r0drv */ +# define RTMemDump RT_MANGLER(RTMemDump) +# define RTMemDupExTag RT_MANGLER(RTMemDupExTag) +# define RTMemDupTag RT_MANGLER(RTMemDupTag) +# define RTMemEfAlloc RT_MANGLER(RTMemEfAlloc) +# define RTMemEfAllocNP RT_MANGLER(RTMemEfAllocNP) +# define RTMemEfAllocVar RT_MANGLER(RTMemEfAllocVar) +# define RTMemEfAllocVarNP RT_MANGLER(RTMemEfAllocVarNP) +# define RTMemEfAllocZ RT_MANGLER(RTMemEfAllocZ) +# define RTMemEfAllocZNP RT_MANGLER(RTMemEfAllocZNP) +# define RTMemEfAllocZVar RT_MANGLER(RTMemEfAllocZVar) +# define RTMemEfAllocZVarNP RT_MANGLER(RTMemEfAllocZVarNP) +# define RTMemEfDup RT_MANGLER(RTMemEfDup) +# define RTMemEfDupEx RT_MANGLER(RTMemEfDupEx) +# define RTMemEfDupExNP RT_MANGLER(RTMemEfDupExNP) +# define RTMemEfDupNP RT_MANGLER(RTMemEfDupNP) +# define RTMemEfFree RT_MANGLER(RTMemEfFree) +# define RTMemEfFreeNP RT_MANGLER(RTMemEfFreeNP) +# define RTMemEfRealloc RT_MANGLER(RTMemEfRealloc) +# define RTMemEfReallocNP RT_MANGLER(RTMemEfReallocNP) +# define RTMemEfTmpAlloc RT_MANGLER(RTMemEfTmpAlloc) +# define RTMemEfTmpAllocNP RT_MANGLER(RTMemEfTmpAllocNP) +# define RTMemEfTmpAllocZ RT_MANGLER(RTMemEfTmpAllocZ) +# define RTMemEfTmpAllocZNP RT_MANGLER(RTMemEfTmpAllocZNP) +# define RTMemEfTmpFree RT_MANGLER(RTMemEfTmpFree) +# define RTMemEfTmpFreeNP RT_MANGLER(RTMemEfTmpFreeNP) +# define RTMemExecAllocTag RT_MANGLER(RTMemExecAllocTag) +# define RTMemExecFree RT_MANGLER(RTMemExecFree) +# define RTMemFree RT_MANGLER(RTMemFree) +# define RTMemFreeEx RT_MANGLER(RTMemFreeEx) +# define RTMemLockedAllocExTag RT_MANGLER(RTMemLockedAllocExTag) +# define RTMemLockedAllocZExTag RT_MANGLER(RTMemLockedAllocZExTag) +# define RTMemLockedAllocTag RT_MANGLER(RTMemLockedAllocTag) +# define RTMemLockedAllocZTag RT_MANGLER(RTMemLockedAllocZTag) +# define RTMemLockedFree RT_MANGLER(RTMemLockedFree) +# define RTMemPageAllocTag RT_MANGLER(RTMemPageAllocTag) +# define RTMemPageAllocZTag RT_MANGLER(RTMemPageAllocZTag) +# define RTMemPageFree RT_MANGLER(RTMemPageFree) +# define RTMemPoolAlloc RT_MANGLER(RTMemPoolAlloc) +# define RTMemPoolAllocZ RT_MANGLER(RTMemPoolAllocZ) +# define RTMemPoolCreate RT_MANGLER(RTMemPoolCreate) +# define RTMemPoolDestroy RT_MANGLER(RTMemPoolDestroy) +# define RTMemPoolDup RT_MANGLER(RTMemPoolDup) +# define RTMemPoolDupEx RT_MANGLER(RTMemPoolDupEx) +# define RTMemPoolFree RT_MANGLER(RTMemPoolFree) +# define RTMemPoolRealloc RT_MANGLER(RTMemPoolRealloc) +# define RTMemPoolRefCount RT_MANGLER(RTMemPoolRefCount) +# define RTMemPoolRelease RT_MANGLER(RTMemPoolRelease) +# define RTMemPoolRetain RT_MANGLER(RTMemPoolRetain) +# define RTMemProtect RT_MANGLER(RTMemProtect) +# define RTMemReallocTag RT_MANGLER(RTMemReallocTag) +# define RTMemTmpAllocTag RT_MANGLER(RTMemTmpAllocTag) +# define RTMemTmpAllocZTag RT_MANGLER(RTMemTmpAllocZTag) +# define RTMemTmpFree RT_MANGLER(RTMemTmpFree) +# define RTMemTrackerDumpAllToFile RT_MANGLER(RTMemTrackerDumpAllToFile) +# define RTMemTrackerDumpAllToLog RT_MANGLER(RTMemTrackerDumpAllToLog) +# define RTMemTrackerDumpAllToLogRel RT_MANGLER(RTMemTrackerDumpAllToLogRel) +# define RTMemTrackerDumpAllToStdErr RT_MANGLER(RTMemTrackerDumpAllToStdErr) +# define RTMemTrackerDumpAllToStdOut RT_MANGLER(RTMemTrackerDumpAllToStdOut) +# define RTMemTrackerDumpStatsToFile RT_MANGLER(RTMemTrackerDumpStatsToFile) +# define RTMemTrackerDumpStatsToLog RT_MANGLER(RTMemTrackerDumpStatsToLog) +# define RTMemTrackerDumpStatsToLogRel RT_MANGLER(RTMemTrackerDumpStatsToLogRel) +# define RTMemTrackerDumpStatsToStdErr RT_MANGLER(RTMemTrackerDumpStatsToStdErr) +# define RTMemTrackerDumpStatsToStdOut RT_MANGLER(RTMemTrackerDumpStatsToStdOut) +# define RTMemTrackerHdrAlloc RT_MANGLER(RTMemTrackerHdrAlloc) +# define RTMemTrackerHdrFree RT_MANGLER(RTMemTrackerHdrFree) +# define RTMemTrackerHdrReallocDone RT_MANGLER(RTMemTrackerHdrReallocDone) +# define RTMemTrackerHdrReallocPrep RT_MANGLER(RTMemTrackerHdrReallocPrep) +# define RTMemWipeThoroughly RT_MANGLER(RTMemWipeThoroughly) +# define RTMpCpuId RT_MANGLER(RTMpCpuId) +# define RTMpCpuIdFromSetIndex RT_MANGLER(RTMpCpuIdFromSetIndex) +# define RTMpCpuIdToSetIndex RT_MANGLER(RTMpCpuIdToSetIndex) +# define RTMpCurSetIndex RT_MANGLER(RTMpCurSetIndex) +# define RTMpCurSetIndexAndId RT_MANGLER(RTMpCurSetIndexAndId) +# define RTMpGetArraySize RT_MANGLER(RTMpGetArraySize) +# define RTMpGetCount RT_MANGLER(RTMpGetCount) +# define RTMpGetCurFrequency RT_MANGLER(RTMpGetCurFrequency) +# define RTMpGetDescription RT_MANGLER(RTMpGetDescription) +# define RTMpGetMaxCpuId RT_MANGLER(RTMpGetMaxCpuId) +# define RTMpGetMaxFrequency RT_MANGLER(RTMpGetMaxFrequency) +# define RTMpGetOnlineCount RT_MANGLER(RTMpGetOnlineCount) +# define RTMpGetOnlineCoreCount RT_MANGLER(RTMpGetOnlineCoreCount) +# define RTMpGetOnlineSet RT_MANGLER(RTMpGetOnlineSet) +# define RTMpGetPresentCount RT_MANGLER(RTMpGetPresentCount) +# define RTMpGetPresentCoreCount RT_MANGLER(RTMpGetPresentCoreCount) +# define RTMpGetPresentSet RT_MANGLER(RTMpGetPresentSet) +# define RTMpGetSet RT_MANGLER(RTMpGetSet) +# define RTMpGetCoreCount RT_MANGLER(RTMpGetCoreCount) +# define RTMpIsCpuOnline RT_MANGLER(RTMpIsCpuOnline) +# define RTMpIsCpuPossible RT_MANGLER(RTMpIsCpuPossible) /* r0drv */ +# define RTMpIsCpuPresent RT_MANGLER(RTMpIsCpuPresent) +# define RTMpIsCpuWorkPending RT_MANGLER(RTMpIsCpuWorkPending) +# define RTMpNotificationDeregister RT_MANGLER(RTMpNotificationDeregister) /* r0drv */ +# define RTMpNotificationRegister RT_MANGLER(RTMpNotificationRegister) /* r0drv */ +# define RTMpOnAll RT_MANGLER(RTMpOnAll) /* r0drv */ +# define RTMpOnAllIsConcurrentSafe RT_MANGLER(RTMpOnAllIsConcurrentSafe) /* r0drv */ +# define RTMpOnOthers RT_MANGLER(RTMpOnOthers) /* r0drv */ +# define RTMpOnPair RT_MANGLER(RTMpOnPair) /* r0drv */ +# define RTMpOnPairIsConcurrentExecSupported RT_MANGLER(RTMpOnPairIsConcurrentExecSupported) /* r0drv */ +# define RTMpOnSpecific RT_MANGLER(RTMpOnSpecific) /* r0drv */ +# define RTMpPokeCpu RT_MANGLER(RTMpPokeCpu) /* r0drv */ +# define RTMsgError RT_MANGLER(RTMsgError) +# define RTMsgErrorExit RT_MANGLER(RTMsgErrorExit) +# define RTMsgErrorExitV RT_MANGLER(RTMsgErrorExitV) +# define RTMsgErrorRc RT_MANGLER(RTMsgErrorRc) +# define RTMsgErrorRcV RT_MANGLER(RTMsgErrorRcV) +# define RTMsgErrorV RT_MANGLER(RTMsgErrorV) +# define RTMsgInfo RT_MANGLER(RTMsgInfo) +# define RTMsgInfoV RT_MANGLER(RTMsgInfoV) +# define RTMsgInitFailure RT_MANGLER(RTMsgInitFailure) +# define RTMsgSetProgName RT_MANGLER(RTMsgSetProgName) +# define RTMsgWarning RT_MANGLER(RTMsgWarning) +# define RTMsgWarningV RT_MANGLER(RTMsgWarningV) +# define RTNetIPv4AddDataChecksum RT_MANGLER(RTNetIPv4AddDataChecksum) +# define RTNetIPv4AddTCPChecksum RT_MANGLER(RTNetIPv4AddTCPChecksum) +# define RTNetIPv4AddUDPChecksum RT_MANGLER(RTNetIPv4AddUDPChecksum) +# define RTNetIPv4FinalizeChecksum RT_MANGLER(RTNetIPv4FinalizeChecksum) +# define RTNetIPv4HdrChecksum RT_MANGLER(RTNetIPv4HdrChecksum) +# define RTNetIPv4IsDHCPValid RT_MANGLER(RTNetIPv4IsDHCPValid) +# define RTNetIPv4IsHdrValid RT_MANGLER(RTNetIPv4IsHdrValid) +# define RTNetIPv4IsTCPSizeValid RT_MANGLER(RTNetIPv4IsTCPSizeValid) +# define RTNetIPv4IsTCPValid RT_MANGLER(RTNetIPv4IsTCPValid) +# define RTNetIPv4IsUDPSizeValid RT_MANGLER(RTNetIPv4IsUDPSizeValid) +# define RTNetIPv4IsUDPValid RT_MANGLER(RTNetIPv4IsUDPValid) +# define RTNetIPv4PseudoChecksum RT_MANGLER(RTNetIPv4PseudoChecksum) +# define RTNetIPv4PseudoChecksumBits RT_MANGLER(RTNetIPv4PseudoChecksumBits) +# define RTNetIPv4TCPChecksum RT_MANGLER(RTNetIPv4TCPChecksum) +# define RTNetIPv4UDPChecksum RT_MANGLER(RTNetIPv4UDPChecksum) +# define RTNetIPv6PseudoChecksum RT_MANGLER(RTNetIPv6PseudoChecksum) +# define RTNetIPv6PseudoChecksumBits RT_MANGLER(RTNetIPv6PseudoChecksumBits) +# define RTNetIPv6PseudoChecksumEx RT_MANGLER(RTNetIPv6PseudoChecksumEx) +# define RTNetTCPChecksum RT_MANGLER(RTNetTCPChecksum) +# define RTNetUDPChecksum RT_MANGLER(RTNetUDPChecksum) +# define RTNetStrToMacAddr RT_MANGLER(RTNetStrToMacAddr) +# define RTNetIsIPv4AddrStr RT_MANGLER(RTNetIsIPv4AddrStr) +# define RTNetStrIsIPv4AddrAny RT_MANGLER(RTNetStrIsIPv4AddrAny) +# define RTNetStrToIPv4AddrEx RT_MANGLER(RTNetStrToIPv4AddrEx) +# define RTNetStrToIPv4Addr RT_MANGLER(RTNetStrToIPv4Addr) +# define RTNetIsIPv6AddrStr RT_MANGLER(RTNetIsIPv6AddrStr) +# define RTNetStrIsIPv6AddrAny RT_MANGLER(RTNetStrIsIPv6AddrAny) +# define RTNetStrToIPv6AddrEx RT_MANGLER(RTNetStrToIPv6AddrEx) +# define RTNetStrToIPv6Addr RT_MANGLER(RTNetStrToIPv6Addr) +# define RTOnceSlow RT_MANGLER(RTOnceSlow) +# define RTOnceReset RT_MANGLER(RTOnceReset) +# define RTPathAbs RT_MANGLER(RTPathAbs) +# define RTPathAbsDup RT_MANGLER(RTPathAbsDup) +# define RTPathAbsEx RT_MANGLER(RTPathAbsEx) +# define RTPathAbsExDup RT_MANGLER(RTPathAbsExDup) +# define RTPathAppDocs RT_MANGLER(RTPathAppDocs) +# define RTPathAppend RT_MANGLER(RTPathAppend) +# define RTPathAppendEx RT_MANGLER(RTPathAppendEx) +# define RTPathAppPrivateArch RT_MANGLER(RTPathAppPrivateArch) +# define RTPathAppPrivateArchTop RT_MANGLER(RTPathAppPrivateArchTop) +# define RTPathAppPrivateNoArch RT_MANGLER(RTPathAppPrivateNoArch) +# define RTPathCalcRelative RT_MANGLER(RTPathCalcRelative) +# define RTPathChangeToDosSlashes RT_MANGLER(RTPathChangeToDosSlashes) +# define RTPathChangeToUnixSlashes RT_MANGLER(RTPathChangeToUnixSlashes) +# define RTPathCompare RT_MANGLER(RTPathCompare) +# define RTPathCopyComponents RT_MANGLER(RTPathCopyComponents) +# define RTPathCountComponents RT_MANGLER(RTPathCountComponents) +# define RTPathEnsureTrailingSeparator RT_MANGLER(RTPathEnsureTrailingSeparator) +# define RTPathExecDir RT_MANGLER(RTPathExecDir) +# define RTPathExists RT_MANGLER(RTPathExists) +# define RTPathExistsEx RT_MANGLER(RTPathExistsEx) +# define RTPathSuffix RT_MANGLER(RTPathSuffix) +# define RTPathFilename RT_MANGLER(RTPathFilename) +# define RTPathFilenameEx RT_MANGLER(RTPathFilenameEx) +# define RTPathGetCurrent RT_MANGLER(RTPathGetCurrent) +# define RTPathGetCurrentDrive RT_MANGLER(RTPathGetCurrentDrive) +# define RTPathGetCurrentOnDrive RT_MANGLER(RTPathGetCurrentOnDrive) +# define RTPathGetMode RT_MANGLER(RTPathGetMode) +# define RTPathGlob RT_MANGLER(RTPathGlob) +# define RTPathGlobFree RT_MANGLER(RTPathGlobFree) +# define RTPathHasSuffix RT_MANGLER(RTPathHasSuffix) +# define RTPathHasPath RT_MANGLER(RTPathHasPath) +# define RTPathIsSame RT_MANGLER(RTPathIsSame) +# define RTPathJoin RT_MANGLER(RTPathJoin) +# define RTPathJoinA RT_MANGLER(RTPathJoinA) +# define RTPathJoinEx RT_MANGLER(RTPathJoinEx) +# define RTPathParse RT_MANGLER(RTPathParse) +# define RTPathParsedReassemble RT_MANGLER(RTPathParsedReassemble) +# define RTPathParseSimple RT_MANGLER(RTPathParseSimple) +# define RTPathQueryInfo RT_MANGLER(RTPathQueryInfo) +# define RTPathQueryInfoEx RT_MANGLER(RTPathQueryInfoEx) +# define RTPathReal RT_MANGLER(RTPathReal) +# define RTPathRealDup RT_MANGLER(RTPathRealDup) +# define RTPathRename RT_MANGLER(RTPathRename) +# define RTPathRmCmd RT_MANGLER(RTPathRmCmd) +# define RTPathSetCurrent RT_MANGLER(RTPathSetCurrent) +# define RTPathSetMode RT_MANGLER(RTPathSetMode) /* not-win */ +# define RTPathSetOwner RT_MANGLER(RTPathSetOwner) /* not-win */ +# define RTPathSetOwnerEx RT_MANGLER(RTPathSetOwnerEx) /* not-win */ +# define RTPathSetTimes RT_MANGLER(RTPathSetTimes) +# define RTPathSetTimesEx RT_MANGLER(RTPathSetTimesEx) +# define RTPathSharedLibs RT_MANGLER(RTPathSharedLibs) +# define RTPathSplit RT_MANGLER(RTPathSplit) +# define RTPathSplitATag RT_MANGLER(RTPathSplitATag) +# define RTPathSplitFree RT_MANGLER(RTPathSplitFree) +# define RTPathSplitReassemble RT_MANGLER(RTPathSplitReassemble) +# define RTPathStartsWith RT_MANGLER(RTPathStartsWith) +# define RTPathStartsWithRoot RT_MANGLER(RTPathStartsWithRoot) +# define RTPathStripSuffix RT_MANGLER(RTPathStripSuffix) +# define RTPathStripFilename RT_MANGLER(RTPathStripFilename) +# define RTPathStripTrailingSlash RT_MANGLER(RTPathStripTrailingSlash) +# define RTPathTemp RT_MANGLER(RTPathTemp) +# define RTPathTraverseList RT_MANGLER(RTPathTraverseList) +# define RTPathUnlink RT_MANGLER(RTPathUnlink) +# define RTPathUserDocuments RT_MANGLER(RTPathUserDocuments) +# define RTPathUserHome RT_MANGLER(RTPathUserHome) +# define RTPipeClose RT_MANGLER(RTPipeClose) +# define RTPipeCreate RT_MANGLER(RTPipeCreate) +# define RTPipeFlush RT_MANGLER(RTPipeFlush) +# define RTPipeFromNative RT_MANGLER(RTPipeFromNative) +# define RTPipeQueryInfo RT_MANGLER(RTPipeQueryInfo) +# define RTPipeQueryReadable RT_MANGLER(RTPipeQueryReadable) +# define RTPipeRead RT_MANGLER(RTPipeRead) +# define RTPipeReadBlocking RT_MANGLER(RTPipeReadBlocking) +# define RTPipeSelectOne RT_MANGLER(RTPipeSelectOne) +# define RTPipeToNative RT_MANGLER(RTPipeToNative) +# define RTPipeWrite RT_MANGLER(RTPipeWrite) +# define RTPipeWriteBlocking RT_MANGLER(RTPipeWriteBlocking) +# define RTPoll RT_MANGLER(RTPoll) +# define RTPollNoResume RT_MANGLER(RTPollNoResume) +# define RTPollSetAdd RT_MANGLER(RTPollSetAdd) +# define RTPollSetCreate RT_MANGLER(RTPollSetCreate) +# define RTPollSetDestroy RT_MANGLER(RTPollSetDestroy) +# define RTPollSetEventsChange RT_MANGLER(RTPollSetEventsChange) +# define RTPollSetGetCount RT_MANGLER(RTPollSetGetCount) +# define RTPollSetQueryHandle RT_MANGLER(RTPollSetQueryHandle) +# define RTPollSetRemove RT_MANGLER(RTPollSetRemove) +# define RTPowerNotificationDeregister RT_MANGLER(RTPowerNotificationDeregister) /* r0drv */ +# define RTPowerNotificationRegister RT_MANGLER(RTPowerNotificationRegister) /* r0drv */ +# define RTPowerSignalEvent RT_MANGLER(RTPowerSignalEvent) /* r0drv */ +# define RTPrintf RT_MANGLER(RTPrintf) +# define RTPrintfV RT_MANGLER(RTPrintfV) +# define RTProcCreate RT_MANGLER(RTProcCreate) +# define RTProcCreateEx RT_MANGLER(RTProcCreateEx) +# define RTProcDaemonize RT_MANGLER(RTProcDaemonize) +# define RTProcDaemonizeUsingFork RT_MANGLER(RTProcDaemonizeUsingFork) +# define RTProcGetAffinityMask RT_MANGLER(RTProcGetAffinityMask) +# define RTProcGetExecutablePath RT_MANGLER(RTProcGetExecutablePath) +# define RTProcGetPriority RT_MANGLER(RTProcGetPriority) +# define RTProcIsRunningByName RT_MANGLER(RTProcIsRunningByName) +# define RTProcQueryParent RT_MANGLER(RTProcQueryParent) +# define RTProcQueryUsername RT_MANGLER(RTProcQueryUsername) +# define RTProcQueryUsernameA RT_MANGLER(RTProcQueryUsernameA) +# define RTProcSelf RT_MANGLER(RTProcSelf) +# define RTProcSetPriority RT_MANGLER(RTProcSetPriority) +# define RTProcShortName RT_MANGLER(RTProcShortName) +# define RTProcTerminate RT_MANGLER(RTProcTerminate) +# define RTProcWait RT_MANGLER(RTProcWait) +# define RTProcWaitNoResume RT_MANGLER(RTProcWaitNoResume) +# define RTR0AssertPanicSystem RT_MANGLER(RTR0AssertPanicSystem) /* r0drv */ +# define RTR0DbgKrnlInfoOpen RT_MANGLER(RTR0DbgKrnlInfoOpen) /* r0drv */ +# define RTR0DbgKrnlInfoQueryMember RT_MANGLER(RTR0DbgKrnlInfoQueryMember) /* r0drv */ +# define RTR0DbgKrnlInfoQuerySize RT_MANGLER(RTR0DbgKrnlInfoQuerySize) /* r0drv */ +# define RTR0DbgKrnlInfoQuerySymbol RT_MANGLER(RTR0DbgKrnlInfoQuerySymbol) /* r0drv */ +# define RTR0DbgKrnlInfoRelease RT_MANGLER(RTR0DbgKrnlInfoRelease) /* r0drv */ +# define RTR0DbgKrnlInfoRetain RT_MANGLER(RTR0DbgKrnlInfoRetain) /* r0drv */ +# define RTR0Init RT_MANGLER(RTR0Init) /* r0drv */ +# define RTR0MemAreKrnlAndUsrDifferent RT_MANGLER(RTR0MemAreKrnlAndUsrDifferent) /* r0drv */ +# define RTR0MemExecDonate RT_MANGLER(RTR0MemExecDonate) /* r0drv */ +# define RTR0MemKernelIsValidAddr RT_MANGLER(RTR0MemKernelIsValidAddr) /* r0drv */ +# define RTR0MemObjAddress RT_MANGLER(RTR0MemObjAddress) /* r0drv */ +# define RTR0MemObjAddressR3 RT_MANGLER(RTR0MemObjAddressR3) /* r0drv */ +# define RTR0MemKernelCopyFrom RT_MANGLER(RTR0MemKernelCopyFrom) /* r0drv */ +# define RTR0MemKernelCopyTo RT_MANGLER(RTR0MemKernelCopyTo) /* r0drv */ +# define RTR0MemObjAllocContTag RT_MANGLER(RTR0MemObjAllocContTag) /* r0drv */ +# define RTR0MemObjAllocLowTag RT_MANGLER(RTR0MemObjAllocLowTag) /* r0drv */ +# define RTR0MemObjAllocPageTag RT_MANGLER(RTR0MemObjAllocPageTag) /* r0drv */ +# define RTR0MemObjAllocPhysExTag RT_MANGLER(RTR0MemObjAllocPhysExTag) /* r0drv */ +# define RTR0MemObjAllocPhysNCTag RT_MANGLER(RTR0MemObjAllocPhysNCTag) /* r0drv */ +# define RTR0MemObjAllocPhysTag RT_MANGLER(RTR0MemObjAllocPhysTag) /* r0drv */ +# define RTR0MemObjEnterPhysTag RT_MANGLER(RTR0MemObjEnterPhysTag) /* r0drv */ +# define RTR0MemObjFree RT_MANGLER(RTR0MemObjFree) /* r0drv */ +# define RTR0MemObjGetPagePhysAddr RT_MANGLER(RTR0MemObjGetPagePhysAddr) /* r0drv */ +# define RTR0MemObjIsMapping RT_MANGLER(RTR0MemObjIsMapping) /* r0drv */ +# define RTR0MemObjLockKernelTag RT_MANGLER(RTR0MemObjLockKernelTag) /* r0drv */ +# define RTR0MemObjLockUserTag RT_MANGLER(RTR0MemObjLockUserTag) /* r0drv */ +# define RTR0MemObjMapKernelExTag RT_MANGLER(RTR0MemObjMapKernelExTag) /* r0drv */ +# define RTR0MemObjMapKernelTag RT_MANGLER(RTR0MemObjMapKernelTag) /* r0drv */ +# define RTR0MemObjMapUserTag RT_MANGLER(RTR0MemObjMapUserTag) /* r0drv */ +# define RTR0MemObjProtect RT_MANGLER(RTR0MemObjProtect) /* r0drv */ +# define RTR0MemObjReserveKernelTag RT_MANGLER(RTR0MemObjReserveKernelTag) /* r0drv */ +# define RTR0MemObjReserveUserTag RT_MANGLER(RTR0MemObjReserveUserTag) /* r0drv */ +# define RTR0MemObjSize RT_MANGLER(RTR0MemObjSize) /* r0drv */ +# define RTR0MemUserCopyFrom RT_MANGLER(RTR0MemUserCopyFrom) /* r0drv */ +# define RTR0MemUserCopyTo RT_MANGLER(RTR0MemUserCopyTo) /* r0drv */ +# define RTR0MemUserIsValidAddr RT_MANGLER(RTR0MemUserIsValidAddr) /* r0drv */ +# define RTR0ProcHandleSelf RT_MANGLER(RTR0ProcHandleSelf) /* r0drv */ +# define RTR0Term RT_MANGLER(RTR0Term) /* r0drv */ +# define RTR0TermForced RT_MANGLER(RTR0TermForced) /* r0drv */ +# define RTR3InitDll RT_MANGLER(RTR3InitDll) +# define RTR3InitExe RT_MANGLER(RTR3InitExe) +# define RTR3InitExeNoArguments RT_MANGLER(RTR3InitExeNoArguments) +# define RTR3InitEx RT_MANGLER(RTR3InitEx) +# define RTR3InitIsInitialized RT_MANGLER(RTR3InitIsInitialized) +# define RTR3InitIsUnobtrusive RT_MANGLER(RTR3InitIsUnobtrusive) +# define rtR3MemAlloc RT_MANGLER(rtR3MemAlloc) +# define rtR3MemFree RT_MANGLER(rtR3MemFree) +# define rtR3MemRealloc RT_MANGLER(rtR3MemRealloc) +# define RTRCInit RT_MANGLER(RTRCInit) +# define RTRCTerm RT_MANGLER(RTRCTerm) +# define RTRandAdvBytes RT_MANGLER(RTRandAdvBytes) +# define RTRandAdvCreateParkMiller RT_MANGLER(RTRandAdvCreateParkMiller) +# define RTRandAdvCreateSystemFaster RT_MANGLER(RTRandAdvCreateSystemFaster) +# define RTRandAdvCreateSystemTruer RT_MANGLER(RTRandAdvCreateSystemTruer) +# define RTRandAdvDestroy RT_MANGLER(RTRandAdvDestroy) +# define RTRandAdvRestoreState RT_MANGLER(RTRandAdvRestoreState) +# define RTRandAdvS32 RT_MANGLER(RTRandAdvS32) +# define RTRandAdvS32Ex RT_MANGLER(RTRandAdvS32Ex) +# define RTRandAdvS64 RT_MANGLER(RTRandAdvS64) +# define RTRandAdvS64Ex RT_MANGLER(RTRandAdvS64Ex) +# define RTRandAdvSaveState RT_MANGLER(RTRandAdvSaveState) +# define RTRandAdvSeed RT_MANGLER(RTRandAdvSeed) +# define RTRandAdvU32 RT_MANGLER(RTRandAdvU32) +# define RTRandAdvU32Ex RT_MANGLER(RTRandAdvU32Ex) +# define RTRandAdvU64 RT_MANGLER(RTRandAdvU64) +# define RTRandAdvU64Ex RT_MANGLER(RTRandAdvU64Ex) +# define RTRandBytes RT_MANGLER(RTRandBytes) +# define RTRandS32 RT_MANGLER(RTRandS32) +# define RTRandS32Ex RT_MANGLER(RTRandS32Ex) +# define RTRandS64 RT_MANGLER(RTRandS64) +# define RTRandS64Ex RT_MANGLER(RTRandS64Ex) +# define RTRandU32 RT_MANGLER(RTRandU32) +# define RTRandU32Ex RT_MANGLER(RTRandU32Ex) +# define RTRandU64 RT_MANGLER(RTRandU64) +# define RTRandU64Ex RT_MANGLER(RTRandU64Ex) +# define RTReqPoolAlloc RT_MANGLER(RTReqPoolAlloc) +# define RTReqPoolCallEx RT_MANGLER(RTReqPoolCallEx) +# define RTReqPoolCallExV RT_MANGLER(RTReqPoolCallExV) +# define RTReqPoolCallWait RT_MANGLER(RTReqPoolCallWait) +# define RTReqPoolCallNoWait RT_MANGLER(RTReqPoolCallNoWait) +# define RTReqPoolCallVoidWait RT_MANGLER(RTReqPoolCallVoidWait) +# define RTReqPoolCallVoidNoWait RT_MANGLER(RTReqPoolCallVoidNoWait) +# define RTReqPoolCreate RT_MANGLER(RTReqPoolCreate) +# define RTReqPoolGetCfgVar RT_MANGLER(RTReqPoolGetCfgVar) +# define RTReqPoolGetStat RT_MANGLER(RTReqPoolGetStat) +# define RTReqPoolRetain RT_MANGLER(RTReqPoolRetain) +# define RTReqPoolRelease RT_MANGLER(RTReqPoolRelease) +# define RTReqPoolSetCfgVar RT_MANGLER(RTReqPoolSetCfgVar) +# define RTReqQueueAlloc RT_MANGLER(RTReqQueueAlloc) +# define RTReqQueueCall RT_MANGLER(RTReqQueueCall) +# define RTReqQueueCallEx RT_MANGLER(RTReqQueueCallEx) +# define RTReqQueueCallV RT_MANGLER(RTReqQueueCallV) +# define RTReqQueueCallVoid RT_MANGLER(RTReqQueueCallVoid) +# define RTReqQueueCreate RT_MANGLER(RTReqQueueCreate) +# define RTReqQueueDestroy RT_MANGLER(RTReqQueueDestroy) +# define RTReqQueueIsBusy RT_MANGLER(RTReqQueueIsBusy) +# define RTReqQueueProcess RT_MANGLER(RTReqQueueProcess) +# define RTReqSubmit RT_MANGLER(RTReqSubmit) +# define RTReqRelease RT_MANGLER(RTReqRelease) +# define RTReqRetain RT_MANGLER(RTReqRetain) +# define RTReqWait RT_MANGLER(RTReqWait) +# define RTRSAVerify RT_MANGLER(RTRSAVerify) +# define RTReqGetStatus RT_MANGLER(RTReqGetStatus) +# define RTS3BucketsDestroy RT_MANGLER(RTS3BucketsDestroy) +# define RTS3Create RT_MANGLER(RTS3Create) +# define RTS3CreateBucket RT_MANGLER(RTS3CreateBucket) +# define RTS3DeleteBucket RT_MANGLER(RTS3DeleteBucket) +# define RTS3DeleteKey RT_MANGLER(RTS3DeleteKey) +# define RTS3Destroy RT_MANGLER(RTS3Destroy) +# define RTS3GetBucketKeys RT_MANGLER(RTS3GetBucketKeys) +# define RTS3GetBuckets RT_MANGLER(RTS3GetBuckets) +# define RTS3GetKey RT_MANGLER(RTS3GetKey) +# define RTS3KeysDestroy RT_MANGLER(RTS3KeysDestroy) +# define RTS3PutKey RT_MANGLER(RTS3PutKey) +# define RTS3SetProgressCallback RT_MANGLER(RTS3SetProgressCallback) +# define RTSemEventAddSignaller RT_MANGLER(RTSemEventAddSignaller) +# define RTSemEventCreate RT_MANGLER(RTSemEventCreate) +# define RTSemEventCreateEx RT_MANGLER(RTSemEventCreateEx) +# define RTSemEventDestroy RT_MANGLER(RTSemEventDestroy) +# define RTSemEventGetResolution RT_MANGLER(RTSemEventGetResolution) /* r0drv */ +# define RTSemEventMultiAddSignaller RT_MANGLER(RTSemEventMultiAddSignaller) +# define RTSemEventMultiCreate RT_MANGLER(RTSemEventMultiCreate) +# define RTSemEventMultiCreateEx RT_MANGLER(RTSemEventMultiCreateEx) +# define RTSemEventMultiDestroy RT_MANGLER(RTSemEventMultiDestroy) +# define RTSemEventMultiGetResolution RT_MANGLER(RTSemEventMultiGetResolution) /* r0drv */ +# define RTSemEventMultiRemoveSignaller RT_MANGLER(RTSemEventMultiRemoveSignaller) +# define RTSemEventMultiReset RT_MANGLER(RTSemEventMultiReset) +# define RTSemEventMultiSetSignaller RT_MANGLER(RTSemEventMultiSetSignaller) +# define RTSemEventMultiSignal RT_MANGLER(RTSemEventMultiSignal) +# define RTSemEventMultiWait RT_MANGLER(RTSemEventMultiWait) +# define RTSemEventMultiWaitEx RT_MANGLER(RTSemEventMultiWaitEx) +# define RTSemEventMultiWaitEx RT_MANGLER(RTSemEventMultiWaitEx) /* r0drv */ +# define RTSemEventMultiWaitExDebug RT_MANGLER(RTSemEventMultiWaitExDebug) +# define RTSemEventMultiWaitExDebug RT_MANGLER(RTSemEventMultiWaitExDebug) /* r0drv */ +# define RTSemEventMultiWaitNoResume RT_MANGLER(RTSemEventMultiWaitNoResume) +# define RTSemEventRemoveSignaller RT_MANGLER(RTSemEventRemoveSignaller) +# define RTSemEventSetSignaller RT_MANGLER(RTSemEventSetSignaller) +# define RTSemEventSignal RT_MANGLER(RTSemEventSignal) +# define RTSemEventWait RT_MANGLER(RTSemEventWait) +# define RTSemEventWaitEx RT_MANGLER(RTSemEventWaitEx) /* r0drv */ +# define RTSemEventWaitExDebug RT_MANGLER(RTSemEventWaitExDebug) /* r0drv */ +# define RTSemEventWaitNoResume RT_MANGLER(RTSemEventWaitNoResume) +# define RTSemFastMutexCreate RT_MANGLER(RTSemFastMutexCreate) +# define RTSemFastMutexDestroy RT_MANGLER(RTSemFastMutexDestroy) +# define RTSemFastMutexRelease RT_MANGLER(RTSemFastMutexRelease) +# define RTSemFastMutexRequest RT_MANGLER(RTSemFastMutexRequest) +# define RTSemMutexCreate RT_MANGLER(RTSemMutexCreate) +# define RTSemMutexCreateEx RT_MANGLER(RTSemMutexCreateEx) +# define RTSemMutexDestroy RT_MANGLER(RTSemMutexDestroy) +# define RTSemMutexIsOwned RT_MANGLER(RTSemMutexIsOwned) +# define RTSemMutexRelease RT_MANGLER(RTSemMutexRelease) +# define RTSemMutexRequest RT_MANGLER(RTSemMutexRequest) +# define RTSemMutexRequestDebug RT_MANGLER(RTSemMutexRequestDebug) +# define RTSemMutexRequestNoResume RT_MANGLER(RTSemMutexRequestNoResume) +# define RTSemMutexRequestNoResumeDebug RT_MANGLER(RTSemMutexRequestNoResumeDebug) +# define RTSemMutexSetSubClass RT_MANGLER(RTSemMutexSetSubClass) +# define RTSemPing RT_MANGLER(RTSemPing) +# define RTSemPingPongDelete RT_MANGLER(RTSemPingPongDelete) +# define RTSemPingPongInit RT_MANGLER(RTSemPingPongInit) +# define RTSemPingWait RT_MANGLER(RTSemPingWait) +# define RTSemPong RT_MANGLER(RTSemPong) +# define RTSemPongWait RT_MANGLER(RTSemPongWait) +# define RTSemRWCreate RT_MANGLER(RTSemRWCreate) +# define RTSemRWCreateEx RT_MANGLER(RTSemRWCreateEx) +# define RTSemRWDestroy RT_MANGLER(RTSemRWDestroy) +# define RTSemRWGetReadCount RT_MANGLER(RTSemRWGetReadCount) +# define RTSemRWGetWriteRecursion RT_MANGLER(RTSemRWGetWriteRecursion) +# define RTSemRWGetWriterReadRecursion RT_MANGLER(RTSemRWGetWriterReadRecursion) +# define RTSemRWIsReadOwner RT_MANGLER(RTSemRWIsReadOwner) +# define RTSemRWIsWriteOwner RT_MANGLER(RTSemRWIsWriteOwner) +# define RTSemRWReleaseRead RT_MANGLER(RTSemRWReleaseRead) +# define RTSemRWReleaseWrite RT_MANGLER(RTSemRWReleaseWrite) +# define RTSemRWRequestRead RT_MANGLER(RTSemRWRequestRead) +# define RTSemRWRequestReadDebug RT_MANGLER(RTSemRWRequestReadDebug) +# define RTSemRWRequestReadNoResume RT_MANGLER(RTSemRWRequestReadNoResume) +# define RTSemRWRequestReadNoResumeDebug RT_MANGLER(RTSemRWRequestReadNoResumeDebug) +# define RTSemRWRequestWrite RT_MANGLER(RTSemRWRequestWrite) +# define RTSemRWRequestWriteDebug RT_MANGLER(RTSemRWRequestWriteDebug) +# define RTSemRWRequestWriteNoResume RT_MANGLER(RTSemRWRequestWriteNoResume) +# define RTSemRWRequestWriteNoResumeDebug RT_MANGLER(RTSemRWRequestWriteNoResumeDebug) +# define RTSemRWSetSubClass RT_MANGLER(RTSemRWSetSubClass) +# define RTSemSpinMutexCreate RT_MANGLER(RTSemSpinMutexCreate) +# define RTSemSpinMutexDestroy RT_MANGLER(RTSemSpinMutexDestroy) +# define RTSemSpinMutexRelease RT_MANGLER(RTSemSpinMutexRelease) +# define RTSemSpinMutexRequest RT_MANGLER(RTSemSpinMutexRequest) +# define RTSemSpinMutexTryRequest RT_MANGLER(RTSemSpinMutexTryRequest) +# define RTSemXRoadsCreate RT_MANGLER(RTSemXRoadsCreate) +# define RTSemXRoadsDestroy RT_MANGLER(RTSemXRoadsDestroy) +# define RTSemXRoadsEWEnter RT_MANGLER(RTSemXRoadsEWEnter) +# define RTSemXRoadsEWLeave RT_MANGLER(RTSemXRoadsEWLeave) +# define RTSemXRoadsNSEnter RT_MANGLER(RTSemXRoadsNSEnter) +# define RTSemXRoadsNSLeave RT_MANGLER(RTSemXRoadsNSLeave) +# define RTSgBufAdvance RT_MANGLER(RTSgBufAdvance) +# define RTSgBufClone RT_MANGLER(RTSgBufClone) +# define RTSgBufCmp RT_MANGLER(RTSgBufCmp) +# define RTSgBufCmpEx RT_MANGLER(RTSgBufCmpEx) +# define RTSgBufCopy RT_MANGLER(RTSgBufCopy) +# define RTSgBufCopyFromBuf RT_MANGLER(RTSgBufCopyFromBuf) +# define RTSgBufCopyToBuf RT_MANGLER(RTSgBufCopyToBuf) +# define RTSgBufInit RT_MANGLER(RTSgBufInit) +# define RTSgBufIsZero RT_MANGLER(RTSgBufIsZero) +# define RTSgBufReset RT_MANGLER(RTSgBufReset) +# define RTSgBufSegArrayCreate RT_MANGLER(RTSgBufSegArrayCreate) +# define RTSgBufSet RT_MANGLER(RTSgBufSet) +# define RTSgBufGetNextSegment RT_MANGLER(RTSgBufGetNextSegment) +# define RTSha1 RT_MANGLER(RTSha1) +# define RTSha1Check RT_MANGLER(RTSha1Check) +# define RTSha1Digest RT_MANGLER(RTSha1Digest) +# define RTSha1DigestFromFile RT_MANGLER(RTSha1DigestFromFile) +# define RTSha1Final RT_MANGLER(RTSha1Final) +# define RTSha1FromString RT_MANGLER(RTSha1FromString) +# define RTSha1Init RT_MANGLER(RTSha1Init) +# define RTSha1ToString RT_MANGLER(RTSha1ToString) +# define RTSha1Update RT_MANGLER(RTSha1Update) +# define RTSha224 RT_MANGLER(RTSha224) +# define RTSha224Check RT_MANGLER(RTSha224Check) +# define RTSha224Final RT_MANGLER(RTSha224Final) +# define RTSha224FromString RT_MANGLER(RTSha224FromString) +# define RTSha224Init RT_MANGLER(RTSha224Init) +# define RTSha224ToString RT_MANGLER(RTSha224ToString) +# define RTSha224Update RT_MANGLER(RTSha224Update) +# define RTSha224Digest RT_MANGLER(RTSha224Digest) +# define RTSha224DigestFromFile RT_MANGLER(RTSha224DigestFromFile) +# define RTSha256 RT_MANGLER(RTSha256) +# define RTSha256Check RT_MANGLER(RTSha256Check) +# define RTSha256Final RT_MANGLER(RTSha256Final) +# define RTSha256FromString RT_MANGLER(RTSha256FromString) +# define RTSha256Init RT_MANGLER(RTSha256Init) +# define RTSha256ToString RT_MANGLER(RTSha256ToString) +# define RTSha256Update RT_MANGLER(RTSha256Update) +# define RTSha256Digest RT_MANGLER(RTSha256Digest) +# define RTSha256DigestFromFile RT_MANGLER(RTSha256DigestFromFile) +# define RTSha384 RT_MANGLER(RTSha384) +# define RTSha384Check RT_MANGLER(RTSha384Check) +# define RTSha384Final RT_MANGLER(RTSha384Final) +# define RTSha384FromString RT_MANGLER(RTSha384FromString) +# define RTSha384Init RT_MANGLER(RTSha384Init) +# define RTSha384ToString RT_MANGLER(RTSha384ToString) +# define RTSha384Update RT_MANGLER(RTSha384Update) +# define RTSha512 RT_MANGLER(RTSha512) +# define RTSha512Check RT_MANGLER(RTSha512Check) +# define RTSha512Final RT_MANGLER(RTSha512Final) +# define RTSha512FromString RT_MANGLER(RTSha512FromString) +# define RTSha512Init RT_MANGLER(RTSha512Init) +# define RTSha512ToString RT_MANGLER(RTSha512ToString) +# define RTSha512Update RT_MANGLER(RTSha512Update) +# define RTSha512t224 RT_MANGLER(RTSha512t224) +# define RTSha512t224Check RT_MANGLER(RTSha512t224Check) +# define RTSha512t224Final RT_MANGLER(RTSha512t224Final) +# define RTSha512t224FromString RT_MANGLER(RTSha512t224FromString) +# define RTSha512t224Init RT_MANGLER(RTSha512t224Init) +# define RTSha512t224ToString RT_MANGLER(RTSha512t224ToString) +# define RTSha512t224Update RT_MANGLER(RTSha512t224Update) +# define RTSha512t256 RT_MANGLER(RTSha512t256) +# define RTSha512t256Check RT_MANGLER(RTSha512t256Check) +# define RTSha512t256Final RT_MANGLER(RTSha512t256Final) +# define RTSha512t256FromString RT_MANGLER(RTSha512t256FromString) +# define RTSha512t256Init RT_MANGLER(RTSha512t256Init) +# define RTSha512t256ToString RT_MANGLER(RTSha512t256ToString) +# define RTSha512t256Update RT_MANGLER(RTSha512t256Update) +# define RTSocketClose RT_MANGLER(RTSocketClose) +# define RTSocketFromNative RT_MANGLER(RTSocketFromNative) +# define RTSocketQueryAddressStr RT_MANGLER(RTSocketQueryAddressStr) +# define RTSocketGetLocalAddress RT_MANGLER(RTSocketGetLocalAddress) +# define RTSocketGetPeerAddress RT_MANGLER(RTSocketGetPeerAddress) +# define RTSocketParseInetAddress RT_MANGLER(RTSocketParseInetAddress) +# define RTSocketRead RT_MANGLER(RTSocketRead) +# define RTSocketReadFrom RT_MANGLER(RTSocketReadFrom) +# define RTSocketReadNB RT_MANGLER(RTSocketReadNB) +# define RTSocketRelease RT_MANGLER(RTSocketRelease) +# define RTSocketRetain RT_MANGLER(RTSocketRetain) +# define RTSocketSelectOne RT_MANGLER(RTSocketSelectOne) +# define RTSocketSelectOneEx RT_MANGLER(RTSocketSelectOneEx) +# define RTSocketSetInheritance RT_MANGLER(RTSocketSetInheritance) +# define RTSocketSgWrite RT_MANGLER(RTSocketSgWrite) +# define RTSocketSgWriteL RT_MANGLER(RTSocketSgWriteL) +# define RTSocketSgWriteLNB RT_MANGLER(RTSocketSgWriteLNB) +# define RTSocketSgWriteLV RT_MANGLER(RTSocketSgWriteLV) +# define RTSocketSgWriteLVNB RT_MANGLER(RTSocketSgWriteLVNB) +# define RTSocketSgWriteNB RT_MANGLER(RTSocketSgWriteNB) +# define RTSocketShutdown RT_MANGLER(RTSocketShutdown) +# define RTSocketToNative RT_MANGLER(RTSocketToNative) +# define RTSocketWrite RT_MANGLER(RTSocketWrite) +# define RTSocketWriteNB RT_MANGLER(RTSocketWriteNB) +# define RTSocketWriteTo RT_MANGLER(RTSocketWriteTo) +# define RTSortApvIsSorted RT_MANGLER(RTSortApvIsSorted) +# define RTSortApvShell RT_MANGLER(RTSortApvShell) +# define RTSortIsSorted RT_MANGLER(RTSortIsSorted) +# define RTSpinlockAcquire RT_MANGLER(RTSpinlockAcquire) +# define RTSpinlockAcquireNoInts RT_MANGLER(RTSpinlockAcquireNoInts) +# define RTSpinlockCreate RT_MANGLER(RTSpinlockCreate) +# define RTSpinlockDestroy RT_MANGLER(RTSpinlockDestroy) +# define RTSpinlockRelease RT_MANGLER(RTSpinlockRelease) +# define RTStrAAppendExNVTag RT_MANGLER(RTStrAAppendExNVTag) +# define RTStrAAppendNTag RT_MANGLER(RTStrAAppendNTag) +# define RTStrAAppendTag RT_MANGLER(RTStrAAppendTag) +# define RTStrAllocExTag RT_MANGLER(RTStrAllocExTag) +# define RTStrAllocTag RT_MANGLER(RTStrAllocTag) +# define RTStrAPrintf2VTag RT_MANGLER(RTStrAPrintf2VTag) +# define RTStrAPrintfVTag RT_MANGLER(RTStrAPrintfVTag) +# define RTStrATruncateTag RT_MANGLER(RTStrATruncateTag) +# define RTStrCacheCreate RT_MANGLER(RTStrCacheCreate) +# define RTStrCacheDestroy RT_MANGLER(RTStrCacheDestroy) +# define RTStrCacheEnter RT_MANGLER(RTStrCacheEnter) +# define RTStrCacheEnterLower RT_MANGLER(RTStrCacheEnterLower) +# define RTStrCacheEnterLowerN RT_MANGLER(RTStrCacheEnterLowerN) +# define RTStrCacheEnterN RT_MANGLER(RTStrCacheEnterN) +# define RTStrCacheGetStats RT_MANGLER(RTStrCacheGetStats) +# define RTStrCacheIsRealImpl RT_MANGLER(RTStrCacheIsRealImpl) +# define RTStrCacheLength RT_MANGLER(RTStrCacheLength) +# define RTStrCacheRelease RT_MANGLER(RTStrCacheRelease) +# define RTStrCacheRetain RT_MANGLER(RTStrCacheRetain) +# define RTStrCalcLatin1Len RT_MANGLER(RTStrCalcLatin1Len) +# define RTStrCalcLatin1LenEx RT_MANGLER(RTStrCalcLatin1LenEx) +# define RTStrCalcUtf16Len RT_MANGLER(RTStrCalcUtf16Len) +# define RTStrCalcUtf16LenEx RT_MANGLER(RTStrCalcUtf16LenEx) +# define RTStrCat RT_MANGLER(RTStrCat) +# define RTStrCatEx RT_MANGLER(RTStrCatEx) +# define RTStrCatP RT_MANGLER(RTStrCatP) +# define RTStrCatPEx RT_MANGLER(RTStrCatPEx) +# define RTStrCmp RT_MANGLER(RTStrCmp) +# define RTStrConvertHexBytes RT_MANGLER(RTStrConvertHexBytes) +# define RTStrCopy RT_MANGLER(RTStrCopy) +# define RTStrCopyEx RT_MANGLER(RTStrCopyEx) +# define RTStrCopyP RT_MANGLER(RTStrCopyP) +# define RTStrCopyPEx RT_MANGLER(RTStrCopyPEx) +# define RTStrCurrentCPToUtf8Tag RT_MANGLER(RTStrCurrentCPToUtf8Tag) +# define RTStrDupExTag RT_MANGLER(RTStrDupExTag) +# define RTStrDupNTag RT_MANGLER(RTStrDupNTag) +# define RTStrDupTag RT_MANGLER(RTStrDupTag) +# define RTStrFormat RT_MANGLER(RTStrFormat) +# define RTStrFormatNumber RT_MANGLER(RTStrFormatNumber) +# define RTStrFormatR80 RT_MANGLER(RTStrFormatR80) +# define RTStrFormatR80u2 RT_MANGLER(RTStrFormatR80u2) +# define RTStrFormatTypeDeregister RT_MANGLER(RTStrFormatTypeDeregister) +# define RTStrFormatTypeRegister RT_MANGLER(RTStrFormatTypeRegister) +# define RTStrFormatTypeSetUser RT_MANGLER(RTStrFormatTypeSetUser) +# define RTStrFormatU128 RT_MANGLER(RTStrFormatU128) +# define RTStrFormatU16 RT_MANGLER(RTStrFormatU16) +# define RTStrFormatU32 RT_MANGLER(RTStrFormatU32) +# define RTStrFormatU64 RT_MANGLER(RTStrFormatU64) +# define RTStrFormatU8 RT_MANGLER(RTStrFormatU8) +# define RTStrFormatV RT_MANGLER(RTStrFormatV) +# define RTStrFree RT_MANGLER(RTStrFree) +# define RTStrGetCpExInternal RT_MANGLER(RTStrGetCpExInternal) +# define RTStrGetCpInternal RT_MANGLER(RTStrGetCpInternal) +# define RTStrGetCpNExInternal RT_MANGLER(RTStrGetCpNExInternal) +# define RTStrHash1 RT_MANGLER(RTStrHash1) +# define RTStrHash1ExN RT_MANGLER(RTStrHash1ExN) +# define RTStrHash1ExNV RT_MANGLER(RTStrHash1ExNV) +# define RTStrHash1N RT_MANGLER(RTStrHash1N) +# define RTStrICmp RT_MANGLER(RTStrICmp) +# define RTStrIStr RT_MANGLER(RTStrIStr) +# define RTStrIsCaseFoldable RT_MANGLER(RTStrIsCaseFoldable) +# define RTStrIsLowerCased RT_MANGLER(RTStrIsLowerCased) +# define RTStrIsUpperCased RT_MANGLER(RTStrIsUpperCased) +# define RTStrIsValidEncoding RT_MANGLER(RTStrIsValidEncoding) +# define RTStrmClearError RT_MANGLER(RTStrmClearError) +# define RTStrmClose RT_MANGLER(RTStrmClose) +# define RTStrmError RT_MANGLER(RTStrmError) +# define RTStrmFlush RT_MANGLER(RTStrmFlush) +# define RTStrmGetCh RT_MANGLER(RTStrmGetCh) +# define RTStrmInputGetEchoChars RT_MANGLER(RTStrmInputGetEchoChars) +# define RTStrmGetLine RT_MANGLER(RTStrmGetLine) +# define RTStrmOpen RT_MANGLER(RTStrmOpen) +# define RTStrmOpenF RT_MANGLER(RTStrmOpenF) +# define RTStrmOpenFV RT_MANGLER(RTStrmOpenFV) +# define RTStrmPrintf RT_MANGLER(RTStrmPrintf) +# define RTStrmPrintfV RT_MANGLER(RTStrmPrintfV) +# define RTStrmDumpPrintfV RT_MANGLER(RTStrmDumpPrintfV) +# define RTStrmPutCh RT_MANGLER(RTStrmPutCh) +# define RTStrmPutStr RT_MANGLER(RTStrmPutStr) +# define RTStrmReadEx RT_MANGLER(RTStrmReadEx) +# define RTStrmRewind RT_MANGLER(RTStrmRewind) +# define RTStrmInputSetEchoChars RT_MANGLER(RTStrmInputSetEchoChars) +# define RTStrmSetMode RT_MANGLER(RTStrmSetMode) +# define RTStrmWriteEx RT_MANGLER(RTStrmWriteEx) +# define RTStrNCmp RT_MANGLER(RTStrNCmp) +# define RTStrNICmp RT_MANGLER(RTStrNICmp) +# define RTStrNLen RT_MANGLER(RTStrNLen) +# define RTStrNLenEx RT_MANGLER(RTStrNLenEx) +# define RTStrPrevCp RT_MANGLER(RTStrPrevCp) +# define RTStrPrintf RT_MANGLER(RTStrPrintf) +# define RTStrPrintfEx RT_MANGLER(RTStrPrintfEx) +# define RTStrPrintfExV RT_MANGLER(RTStrPrintfExV) +# define RTStrPrintfV RT_MANGLER(RTStrPrintfV) +# define RTStrPrintHexBytes RT_MANGLER(RTStrPrintHexBytes) +# define RTStrPurgeEncoding RT_MANGLER(RTStrPurgeEncoding) +# define RTStrPurgeComplementSet RT_MANGLER(RTStrPurgeComplementSet) +# define RTStrPutCpInternal RT_MANGLER(RTStrPutCpInternal) +# define RTStrReallocTag RT_MANGLER(RTStrReallocTag) +# define RTStrSimplePatternMatch RT_MANGLER(RTStrSimplePatternMatch) +# define RTStrSimplePatternMultiMatch RT_MANGLER(RTStrSimplePatternMultiMatch) +# define RTStrSimplePatternNMatch RT_MANGLER(RTStrSimplePatternNMatch) +# define RTStrSpaceDestroy RT_MANGLER(RTStrSpaceDestroy) +# define RTStrSpaceEnumerate RT_MANGLER(RTStrSpaceEnumerate) +# define RTStrSpaceGet RT_MANGLER(RTStrSpaceGet) +# define RTStrSpaceGetN RT_MANGLER(RTStrSpaceGetN) +# define RTStrSpaceInsert RT_MANGLER(RTStrSpaceInsert) +# define RTStrSpaceRemove RT_MANGLER(RTStrSpaceRemove) +# define RTStrStr RT_MANGLER(RTStrStr) +# define RTStrStrip RT_MANGLER(RTStrStrip) +# define RTStrStripL RT_MANGLER(RTStrStripL) +# define RTStrStripR RT_MANGLER(RTStrStripR) +# define RTStrToInt16 RT_MANGLER(RTStrToInt16) +# define RTStrToInt16Ex RT_MANGLER(RTStrToInt16Ex) +# define RTStrToInt16Full RT_MANGLER(RTStrToInt16Full) +# define RTStrToInt32 RT_MANGLER(RTStrToInt32) +# define RTStrToInt32Ex RT_MANGLER(RTStrToInt32Ex) +# define RTStrToInt32Full RT_MANGLER(RTStrToInt32Full) +# define RTStrToInt64 RT_MANGLER(RTStrToInt64) +# define RTStrToInt64Ex RT_MANGLER(RTStrToInt64Ex) +# define RTStrToInt64Full RT_MANGLER(RTStrToInt64Full) +# define RTStrToInt8 RT_MANGLER(RTStrToInt8) +# define RTStrToInt8Ex RT_MANGLER(RTStrToInt8Ex) +# define RTStrToInt8Full RT_MANGLER(RTStrToInt8Full) +# define RTStrToLatin1ExTag RT_MANGLER(RTStrToLatin1ExTag) +# define RTStrToLatin1Tag RT_MANGLER(RTStrToLatin1Tag) +# define RTStrToLower RT_MANGLER(RTStrToLower) +# define RTStrToUInt16 RT_MANGLER(RTStrToUInt16) +# define RTStrToUInt16Ex RT_MANGLER(RTStrToUInt16Ex) +# define RTStrToUInt16Full RT_MANGLER(RTStrToUInt16Full) +# define RTStrToUInt32 RT_MANGLER(RTStrToUInt32) +# define RTStrToUInt32Ex RT_MANGLER(RTStrToUInt32Ex) +# define RTStrToUInt32Full RT_MANGLER(RTStrToUInt32Full) +# define RTStrToUInt64 RT_MANGLER(RTStrToUInt64) +# define RTStrToUInt64Ex RT_MANGLER(RTStrToUInt64Ex) +# define RTStrToUInt64Full RT_MANGLER(RTStrToUInt64Full) +# define RTStrToUInt8 RT_MANGLER(RTStrToUInt8) +# define RTStrToUInt8Ex RT_MANGLER(RTStrToUInt8Ex) +# define RTStrToUInt8Full RT_MANGLER(RTStrToUInt8Full) +# define RTStrToUni RT_MANGLER(RTStrToUni) +# define RTStrToUniEx RT_MANGLER(RTStrToUniEx) +# define RTStrToUpper RT_MANGLER(RTStrToUpper) +# define RTStrToUtf16ExTag RT_MANGLER(RTStrToUtf16ExTag) +# define RTStrToUtf16Tag RT_MANGLER(RTStrToUtf16Tag) +# define RTStrUniLen RT_MANGLER(RTStrUniLen) +# define RTStrUniLenEx RT_MANGLER(RTStrUniLenEx) +# define RTStrUtf8ToCurrentCPTag RT_MANGLER(RTStrUtf8ToCurrentCPTag) +# define RTStrValidateEncoding RT_MANGLER(RTStrValidateEncoding) +# define RTStrValidateEncodingEx RT_MANGLER(RTStrValidateEncodingEx) +# define RTStrVersionCompare RT_MANGLER(RTStrVersionCompare) +# define RTSymlinkCreate RT_MANGLER(RTSymlinkCreate) +# define RTSymlinkDelete RT_MANGLER(RTSymlinkDelete) +# define RTSymlinkExists RT_MANGLER(RTSymlinkExists) +# define RTSymlinkIsDangling RT_MANGLER(RTSymlinkIsDangling) +# define RTSymlinkRead RT_MANGLER(RTSymlinkRead) +# define RTSymlinkReadA RT_MANGLER(RTSymlinkReadA) +# define RTSystemIsInsideVM RT_MANGLER(RTSystemIsInsideVM) +# define RTSystemQueryAvailableRam RT_MANGLER(RTSystemQueryAvailableRam) +# define RTSystemQueryDmiString RT_MANGLER(RTSystemQueryDmiString) +# define RTSystemQueryOSInfo RT_MANGLER(RTSystemQueryOSInfo) +# define RTSystemQueryTotalRam RT_MANGLER(RTSystemQueryTotalRam) +# define RTSystemShutdown RT_MANGLER(RTSystemShutdown) +# define RTTarClose RT_MANGLER(RTTarClose) +# define RTTarFileClose RT_MANGLER(RTTarFileClose) +# define RTTarFileGetSize RT_MANGLER(RTTarFileGetSize) +# define RTTarFileOpen RT_MANGLER(RTTarFileOpen) +# define RTTarFileReadAt RT_MANGLER(RTTarFileReadAt) +# define RTTarFileSetSize RT_MANGLER(RTTarFileSetSize) +# define RTTarFileWriteAt RT_MANGLER(RTTarFileWriteAt) +# define RTTarOpen RT_MANGLER(RTTarOpen) +# define RTTcpClientCancelConnect RT_MANGLER(RTTcpClientCancelConnect) +# define RTTcpClientClose RT_MANGLER(RTTcpClientClose) +# define RTTcpClientCloseEx RT_MANGLER(RTTcpClientCloseEx) +# define RTTcpClientConnect RT_MANGLER(RTTcpClientConnect) +# define RTTcpClientConnectEx RT_MANGLER(RTTcpClientConnectEx) +# define RTTcpFlush RT_MANGLER(RTTcpFlush) +# define RTTcpGetLocalAddress RT_MANGLER(RTTcpGetLocalAddress) +# define RTTcpGetPeerAddress RT_MANGLER(RTTcpGetPeerAddress) +# define RTTcpRead RT_MANGLER(RTTcpRead) +# define RTTcpReadNB RT_MANGLER(RTTcpReadNB) +# define RTTcpSelectOne RT_MANGLER(RTTcpSelectOne) +# define RTTcpSelectOneEx RT_MANGLER(RTTcpSelectOneEx) +# define RTTcpServerCreate RT_MANGLER(RTTcpServerCreate) +# define RTTcpServerCreateEx RT_MANGLER(RTTcpServerCreateEx) +# define RTTcpServerDestroy RT_MANGLER(RTTcpServerDestroy) +# define RTTcpServerDisconnectClient RT_MANGLER(RTTcpServerDisconnectClient) +# define RTTcpServerDisconnectClient2 RT_MANGLER(RTTcpServerDisconnectClient2) +# define RTTcpServerListen RT_MANGLER(RTTcpServerListen) +# define RTTcpServerListen2 RT_MANGLER(RTTcpServerListen2) +# define RTTcpServerShutdown RT_MANGLER(RTTcpServerShutdown) +# define RTTcpSetSendCoalescing RT_MANGLER(RTTcpSetSendCoalescing) +# define RTTcpSgWrite RT_MANGLER(RTTcpSgWrite) +# define RTTcpSgWriteL RT_MANGLER(RTTcpSgWriteL) +# define RTTcpSgWriteLNB RT_MANGLER(RTTcpSgWriteLNB) +# define RTTcpSgWriteLV RT_MANGLER(RTTcpSgWriteLV) +# define RTTcpSgWriteLVNB RT_MANGLER(RTTcpSgWriteLVNB) +# define RTTcpSgWriteNB RT_MANGLER(RTTcpSgWriteNB) +# define RTTcpWrite RT_MANGLER(RTTcpWrite) +# define RTTcpWriteNB RT_MANGLER(RTTcpWriteNB) +# define RTTermDeregisterCallback RT_MANGLER(RTTermDeregisterCallback) +# define RTTermRegisterCallback RT_MANGLER(RTTermRegisterCallback) +# define RTTermRunCallbacks RT_MANGLER(RTTermRunCallbacks) +# define RTTestBanner RT_MANGLER(RTTestBanner) +# define RTTestChangeName RT_MANGLER(RTTestChangeName) +# define RTTestCreate RT_MANGLER(RTTestCreate) +# define RTTestCreateEx RT_MANGLER(RTTestCreateEx) +# define RTTestDestroy RT_MANGLER(RTTestDestroy) +# define RTTestErrorCount RT_MANGLER(RTTestErrorCount) +# define RTTestErrorInc RT_MANGLER(RTTestErrorInc) +# define RTTestFailed RT_MANGLER(RTTestFailed) +# define RTTestFailedV RT_MANGLER(RTTestFailedV) +# define RTTestFailureDetails RT_MANGLER(RTTestFailureDetails) +# define RTTestFailureDetailsV RT_MANGLER(RTTestFailureDetailsV) +# define RTTestGuardedAlloc RT_MANGLER(RTTestGuardedAlloc) +# define RTTestGuardedAllocHead RT_MANGLER(RTTestGuardedAllocHead) +# define RTTestGuardedAllocTail RT_MANGLER(RTTestGuardedAllocTail) +# define RTTestGuardedFree RT_MANGLER(RTTestGuardedFree) +# define RTTestIErrorCount RT_MANGLER(RTTestIErrorCount) +# define RTTestIErrorInc RT_MANGLER(RTTestIErrorInc) +# define RTTestIFailed RT_MANGLER(RTTestIFailed) +# define RTTestIFailedRc RT_MANGLER(RTTestIFailedRc) +# define RTTestIFailedRcV RT_MANGLER(RTTestIFailedRcV) +# define RTTestIFailedV RT_MANGLER(RTTestIFailedV) +# define RTTestIFailureDetails RT_MANGLER(RTTestIFailureDetails) +# define RTTestIFailureDetailsV RT_MANGLER(RTTestIFailureDetailsV) +# define RTTestInitAndCreate RT_MANGLER(RTTestInitAndCreate) +# define RTTestInitExAndCreate RT_MANGLER(RTTestInitExAndCreate) +# define RTTestIPassed RT_MANGLER(RTTestIPassed) +# define RTTestIPassedV RT_MANGLER(RTTestIPassedV) +# define RTTestIPrintf RT_MANGLER(RTTestIPrintf) +# define RTTestIPrintfV RT_MANGLER(RTTestIPrintfV) +# define RTTestISub RT_MANGLER(RTTestISub) +# define RTTestISubDone RT_MANGLER(RTTestISubDone) +# define RTTestISubF RT_MANGLER(RTTestISubF) +# define RTTestISubV RT_MANGLER(RTTestISubV) +# define RTTestIValue RT_MANGLER(RTTestIValue) +# define RTTestIValueF RT_MANGLER(RTTestIValueF) +# define RTTestIValueV RT_MANGLER(RTTestIValueV) +# define RTTestPassed RT_MANGLER(RTTestPassed) +# define RTTestPassedV RT_MANGLER(RTTestPassedV) +# define RTTestPrintf RT_MANGLER(RTTestPrintf) +# define RTTestPrintfNl RT_MANGLER(RTTestPrintfNl) +# define RTTestPrintfNlV RT_MANGLER(RTTestPrintfNlV) +# define RTTestPrintfV RT_MANGLER(RTTestPrintfV) +# define RTTestSetDefault RT_MANGLER(RTTestSetDefault) +# define RTTestSkipAndDestroy RT_MANGLER(RTTestSkipAndDestroy) +# define RTTestSkipAndDestroyV RT_MANGLER(RTTestSkipAndDestroyV) +# define RTTestSkipped RT_MANGLER(RTTestSkipped) +# define RTTestSkippedV RT_MANGLER(RTTestSkippedV) +# define RTTestSub RT_MANGLER(RTTestSub) +# define RTTestSubDone RT_MANGLER(RTTestSubDone) +# define RTTestSubErrorCount RT_MANGLER(RTTestSubErrorCount) +# define RTTestSubF RT_MANGLER(RTTestSubF) +# define RTTestSubV RT_MANGLER(RTTestSubV) +# define RTTestSummaryAndDestroy RT_MANGLER(RTTestSummaryAndDestroy) +# define RTTestValue RT_MANGLER(RTTestValue) +# define RTTestValueF RT_MANGLER(RTTestValueF) +# define RTTestValueV RT_MANGLER(RTTestValueV) +# define RTThreadAdopt RT_MANGLER(RTThreadAdopt) +# define RTThreadBlocking RT_MANGLER(RTThreadBlocking) +# define RTThreadCreate RT_MANGLER(RTThreadCreate) +# define RTThreadCreateF RT_MANGLER(RTThreadCreateF) +# define RTThreadCreateV RT_MANGLER(RTThreadCreateV) +# define RTThreadCtxHookIsEnabled RT_MANGLER(RTThreadCtxHookIsEnabled) /* r0drv */ +# define RTThreadCtxHookCreate RT_MANGLER(RTThreadCtxHookCreate) /* r0drv */ +# define RTThreadCtxHookDestroy RT_MANGLER(RTThreadCtxHookDestroy) /* r0drv */ +# define RTThreadCtxHookDisable RT_MANGLER(RTThreadCtxHookDisable) /* r0drv */ +# define RTThreadCtxHookEnable RT_MANGLER(RTThreadCtxHookEnable) /* r0drv */ +# define RTThreadFromNative RT_MANGLER(RTThreadFromNative) +# define RTThreadGetAffinity RT_MANGLER(RTThreadGetAffinity) +# define RTThreadGetExecutionTimeMilli RT_MANGLER(RTThreadGetExecutionTimeMilli) +# define RTThreadGetName RT_MANGLER(RTThreadGetName) +# define RTThreadGetNative RT_MANGLER(RTThreadGetNative) +# define RTThreadGetNativeState RT_MANGLER(RTThreadGetNativeState) +# define RTThreadGetReallySleeping RT_MANGLER(RTThreadGetReallySleeping) +# define RTThreadGetState RT_MANGLER(RTThreadGetState) +# define RTThreadGetType RT_MANGLER(RTThreadGetType) +# define RTThreadIsInInterrupt RT_MANGLER(RTThreadIsInInterrupt) /* r0drv */ +# define RTThreadIsInitialized RT_MANGLER(RTThreadIsInitialized) +# define RTThreadIsMain RT_MANGLER(RTThreadIsMain) +# define RTThreadIsSelfAlive RT_MANGLER(RTThreadIsSelfAlive) +# define RTThreadIsSelfKnown RT_MANGLER(RTThreadIsSelfKnown) +# define RTThreadNativeSelf RT_MANGLER(RTThreadNativeSelf) +# define RTThreadPoke RT_MANGLER(RTThreadPoke) /* not-win not-os2 */ +# define RTThreadPreemptDisable RT_MANGLER(RTThreadPreemptDisable) /* r0drv */ +# define RTThreadPreemptIsEnabled RT_MANGLER(RTThreadPreemptIsEnabled) /* r0drv */ +# define RTThreadPreemptIsPending RT_MANGLER(RTThreadPreemptIsPending) /* r0drv */ +# define RTThreadPreemptIsPendingTrusty RT_MANGLER(RTThreadPreemptIsPendingTrusty) /* r0drv */ +# define RTThreadPreemptIsPossible RT_MANGLER(RTThreadPreemptIsPossible) /* r0drv */ +# define RTThreadPreemptRestore RT_MANGLER(RTThreadPreemptRestore) /* r0drv */ +# define RTThreadSelf RT_MANGLER(RTThreadSelf) +# define RTThreadSelfAutoAdopt RT_MANGLER(RTThreadSelfAutoAdopt) +# define RTThreadSelfName RT_MANGLER(RTThreadSelfName) +# define RTThreadSetAffinity RT_MANGLER(RTThreadSetAffinity) +# define RTThreadSetAffinityToCpu RT_MANGLER(RTThreadSetAffinityToCpu) +# define RTThreadSetName RT_MANGLER(RTThreadSetName) +# define RTThreadSetType RT_MANGLER(RTThreadSetType) +# define RTThreadSleep RT_MANGLER(RTThreadSleep) +# define RTThreadSleepNoLog RT_MANGLER(RTThreadSleepNoLog) +# define RTThreadStateName RT_MANGLER(RTThreadStateName) +# define RTThreadUnblocked RT_MANGLER(RTThreadUnblocked) +# define RTThreadUserReset RT_MANGLER(RTThreadUserReset) +# define RTThreadUserSignal RT_MANGLER(RTThreadUserSignal) +# define RTThreadUserWait RT_MANGLER(RTThreadUserWait) +# define RTThreadUserWaitNoResume RT_MANGLER(RTThreadUserWaitNoResume) +# define RTThreadWait RT_MANGLER(RTThreadWait) +# define RTThreadWaitNoResume RT_MANGLER(RTThreadWaitNoResume) +# define RTThreadYield RT_MANGLER(RTThreadYield) +# define RTTimeDbgBad RT_MANGLER(RTTimeDbgBad) +# define RTTimeDbgExpired RT_MANGLER(RTTimeDbgExpired) +# define RTTimeDbgRaces RT_MANGLER(RTTimeDbgRaces) +# define RTTimeDbgSteps RT_MANGLER(RTTimeDbgSteps) +# define RTTimeExplode RT_MANGLER(RTTimeExplode) +# define RTTimeImplode RT_MANGLER(RTTimeImplode) +# define RTTimeIsLeapYear RT_MANGLER(RTTimeIsLeapYear) +# define RTTimeLocalDeltaNano RT_MANGLER(RTTimeLocalDeltaNano) +# define RTTimeLocalExplode RT_MANGLER(RTTimeLocalExplode) +# define RTTimeLocalNow RT_MANGLER(RTTimeLocalNow) +# define RTTimeMilliTS RT_MANGLER(RTTimeMilliTS) +# define RTTimeNanoTS RT_MANGLER(RTTimeNanoTS) +# define RTTimeNanoTSLegacyAsync RT_MANGLER(RTTimeNanoTSLegacyAsync) +# define RTTimeNanoTSLegacyAsync_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsync_EndProc) +# define RTTimeNanoTSLegacyAsyncUseApicId RT_MANGLER(RTTimeNanoTSLegacyAsyncUseApicId) +# define RTTimeNanoTSLegacyAsyncUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseApicId_EndProc) +# define RTTimeNanoTSLegacyAsyncUseRdtscp RT_MANGLER(RTTimeNanoTSLegacyAsyncUseRdtscp) +# define RTTimeNanoTSLegacyAsyncUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseRdtscp_EndProc) +# define RTTimeNanoTSLegacyAsyncUseIdtrLim RT_MANGLER(RTTimeNanoTSLegacyAsyncUseIdtrLim) +# define RTTimeNanoTSLegacyAsyncUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseIdtrLim_EndProc) +# define RTTimeNanoTSLegacySyncInvarNoDelta RT_MANGLER(RTTimeNanoTSLegacySyncInvarNoDelta) +# define RTTimeNanoTSLegacySyncInvarNoDelta_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarNoDelta_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDelta RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDelta) +# define RTTimeNanoTSLegacySyncInvarWithDelta_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDelta_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim_EndProc) +# define RTTimeNanoTSLFenceAsync RT_MANGLER(RTTimeNanoTSLFenceAsync) +# define RTTimeNanoTSLFenceAsync_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsync_EndProc) +# define RTTimeNanoTSLFenceAsyncUseApicId RT_MANGLER(RTTimeNanoTSLFenceAsyncUseApicId) +# define RTTimeNanoTSLFenceAsyncUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseApicId_EndProc) +# define RTTimeNanoTSLFenceAsyncUseRdtscp RT_MANGLER(RTTimeNanoTSLFenceAsyncUseRdtscp) +# define RTTimeNanoTSLFenceAsyncUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseRdtscp_EndProc) +# define RTTimeNanoTSLFenceAsyncUseIdtrLim RT_MANGLER(RTTimeNanoTSLFenceAsyncUseIdtrLim) +# define RTTimeNanoTSLFenceAsyncUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseIdtrLim_EndProc) +# define RTTimeNanoTSLFenceSyncInvarNoDelta RT_MANGLER(RTTimeNanoTSLFenceSyncInvarNoDelta) +# define RTTimeNanoTSLFenceSyncInvarNoDelta_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarNoDelta_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDelta RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDelta) +# define RTTimeNanoTSLFenceSyncInvarWithDelta_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDelta_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim_EndProc) +# define RTTimeNormalize RT_MANGLER(RTTimeNormalize) +# define RTTimeNow RT_MANGLER(RTTimeNow) +# define RTTimeProgramMicroTS RT_MANGLER(RTTimeProgramMicroTS) +# define RTTimeProgramMilliTS RT_MANGLER(RTTimeProgramMilliTS) +# define RTTimeProgramNanoTS RT_MANGLER(RTTimeProgramNanoTS) +# define RTTimeProgramSecTS RT_MANGLER(RTTimeProgramSecTS) +# define RTTimeProgramStartNanoTS RT_MANGLER(RTTimeProgramStartNanoTS) +# define RTTimerCanDoHighResolution RT_MANGLER(RTTimerCanDoHighResolution) +# define RTTimerChangeInterval RT_MANGLER(RTTimerChangeInterval) +# define RTTimerCreate RT_MANGLER(RTTimerCreate) +# define RTTimerCreateEx RT_MANGLER(RTTimerCreateEx) +# define RTTimerDestroy RT_MANGLER(RTTimerDestroy) +# define RTTimerGetSystemGranularity RT_MANGLER(RTTimerGetSystemGranularity) /* r0drv */ +# define RTTimerLRCreate RT_MANGLER(RTTimerLRCreate) +# define RTTimerLRCreateEx RT_MANGLER(RTTimerLRCreateEx) +# define RTTimerLRDestroy RT_MANGLER(RTTimerLRDestroy) +# define RTTimerLRStart RT_MANGLER(RTTimerLRStart) +# define RTTimerLRStop RT_MANGLER(RTTimerLRStop) +# define RTTimerLRChangeInterval RT_MANGLER(RTTimerLRChangeInterval) +# define RTTimerReleaseSystemGranularity RT_MANGLER(RTTimerReleaseSystemGranularity) /* r0drv */ +# define RTTimerRequestSystemGranularity RT_MANGLER(RTTimerRequestSystemGranularity) /* r0drv */ +# define RTTimerStart RT_MANGLER(RTTimerStart) +# define RTTimerStop RT_MANGLER(RTTimerStop) +# define RTTimeSet RT_MANGLER(RTTimeSet) +# define RTTimeSpecFromString RT_MANGLER(RTTimeSpecFromString) +# define RTTimeSpecToString RT_MANGLER(RTTimeSpecToString) +# define RTTimeSystemMilliTS RT_MANGLER(RTTimeSystemMilliTS) +# define RTTimeSystemNanoTS RT_MANGLER(RTTimeSystemNanoTS) +# define RTTimeFromString RT_MANGLER(RTTimeFromString) +# define RTTimeToString RT_MANGLER(RTTimeToString) +# define RTTlsAlloc RT_MANGLER(RTTlsAlloc) +# define RTTlsAllocEx RT_MANGLER(RTTlsAllocEx) +# define RTTlsFree RT_MANGLER(RTTlsFree) +# define RTTlsGet RT_MANGLER(RTTlsGet) +# define RTTlsGetEx RT_MANGLER(RTTlsGetEx) +# define RTTlsSet RT_MANGLER(RTTlsSet) +# define RTTraceBufAddMsg RT_MANGLER(RTTraceBufAddMsg) +# define RTTraceBufAddMsgEx RT_MANGLER(RTTraceBufAddMsgEx) +# define RTTraceBufAddMsgF RT_MANGLER(RTTraceBufAddMsgF) +# define RTTraceBufAddMsgV RT_MANGLER(RTTraceBufAddMsgV) +# define RTTraceBufAddPos RT_MANGLER(RTTraceBufAddPos) +# define RTTraceBufAddPosMsg RT_MANGLER(RTTraceBufAddPosMsg) +# define RTTraceBufAddPosMsgEx RT_MANGLER(RTTraceBufAddPosMsgEx) +# define RTTraceBufAddPosMsgF RT_MANGLER(RTTraceBufAddPosMsgF) +# define RTTraceBufAddPosMsgV RT_MANGLER(RTTraceBufAddPosMsgV) +# define RTTraceBufCarve RT_MANGLER(RTTraceBufCarve) +# define RTTraceBufCreate RT_MANGLER(RTTraceBufCreate) +# define RTTraceBufDisable RT_MANGLER(RTTraceBufDisable) +# define RTTraceBufDumpToAssert RT_MANGLER(RTTraceBufDumpToAssert) +# define RTTraceBufDumpToLog RT_MANGLER(RTTraceBufDumpToLog) +# define RTTraceBufEnable RT_MANGLER(RTTraceBufEnable) +# define RTTraceBufEnumEntries RT_MANGLER(RTTraceBufEnumEntries) +# define RTTraceBufGetEntryCount RT_MANGLER(RTTraceBufGetEntryCount) +# define RTTraceBufGetEntrySize RT_MANGLER(RTTraceBufGetEntrySize) +# define RTTraceBufRelease RT_MANGLER(RTTraceBufRelease) +# define RTTraceBufRetain RT_MANGLER(RTTraceBufRetain) +# define RTTraceGetDefaultBuf RT_MANGLER(RTTraceGetDefaultBuf) +# define RTTraceSetDefaultBuf RT_MANGLER(RTTraceSetDefaultBuf) +# define RTUdpRead RT_MANGLER(RTUdpRead) +# define RTUdpServerCreate RT_MANGLER(RTUdpServerCreate) +# define RTUdpServerCreateEx RT_MANGLER(RTUdpServerCreateEx) +# define RTUdpServerDestroy RT_MANGLER(RTUdpServerDestroy) +# define RTUdpServerListen RT_MANGLER(RTUdpServerListen) +# define RTUdpServerShutdown RT_MANGLER(RTUdpServerShutdown) +# define RTUdpWrite RT_MANGLER(RTUdpWrite) +# define RTUniFree RT_MANGLER(RTUniFree) +# define RTUriCreate RT_MANGLER(RTUriCreate) +# define RTUriFileCreate RT_MANGLER(RTUriFileCreate) +# define RTUriFileCreateEx RT_MANGLER(RTUriFileCreateEx) +# define RTUriFilePath RT_MANGLER(RTUriFilePath) +# define RTUriFilePathEx RT_MANGLER(RTUriFilePathEx) +# define RTUriParse RT_MANGLER(RTUriParse) +# define RTUriParsedAuthority RT_MANGLER(RTUriParsedAuthority) +# define RTUriParsedAuthorityHost RT_MANGLER(RTUriParsedAuthorityHost) +# define RTUriParsedAuthorityPassword RT_MANGLER(RTUriParsedAuthorityPassword) +# define RTUriParsedAuthorityPort RT_MANGLER(RTUriParsedAuthorityPort) +# define RTUriParsedAuthorityUsername RT_MANGLER(RTUriParsedAuthorityUsername) +# define RTUriParsedFragment RT_MANGLER(RTUriParsedFragment) +# define RTUriParsedPath RT_MANGLER(RTUriParsedPath) +# define RTUriParsedScheme RT_MANGLER(RTUriParsedScheme) +# define RTUriParsedQuery RT_MANGLER(RTUriParsedQuery) +# define RTUriIsSchemeMatch RT_MANGLER(RTUriIsSchemeMatch) +# define RTUtf16AllocTag RT_MANGLER(RTUtf16AllocTag) +# define RTUtf16CalcLatin1Len RT_MANGLER(RTUtf16CalcLatin1Len) +# define RTUtf16CalcLatin1LenEx RT_MANGLER(RTUtf16CalcLatin1LenEx) +# define RTUtf16CalcUtf8Len RT_MANGLER(RTUtf16CalcUtf8Len) +# define RTUtf16CalcUtf8LenEx RT_MANGLER(RTUtf16CalcUtf8LenEx) +# define RTUtf16Cmp RT_MANGLER(RTUtf16Cmp) +# define RTUtf16CmpAscii RT_MANGLER(RTUtf16CmpAscii) +# define RTUtf16DupExTag RT_MANGLER(RTUtf16DupExTag) +# define RTUtf16DupTag RT_MANGLER(RTUtf16DupTag) +# define RTUtf16Free RT_MANGLER(RTUtf16Free) +# define RTUtf16GetCpExInternal RT_MANGLER(RTUtf16GetCpExInternal) +# define RTUtf16GetCpInternal RT_MANGLER(RTUtf16GetCpInternal) +# define RTUtf16ICmp RT_MANGLER(RTUtf16ICmp) +# define RTUtf16IsValidEncoding RT_MANGLER(RTUtf16IsValidEncoding) +# define RTUtf16Len RT_MANGLER(RTUtf16Len) +# define RTUtf16LocaleICmp RT_MANGLER(RTUtf16LocaleICmp) +# define RTUtf16PutCpInternal RT_MANGLER(RTUtf16PutCpInternal) +# define RTUtf16ToLatin1ExTag RT_MANGLER(RTUtf16ToLatin1ExTag) +# define RTUtf16ToLatin1Tag RT_MANGLER(RTUtf16ToLatin1Tag) +# define RTUtf16ToLower RT_MANGLER(RTUtf16ToLower) +# define RTUtf16ToUpper RT_MANGLER(RTUtf16ToUpper) +# define RTUtf16PurgeComplementSet RT_MANGLER(RTUtf16PurgeComplementSet) +# define RTUtf16ToUtf8ExTag RT_MANGLER(RTUtf16ToUtf8ExTag) +# define RTUtf16ToUtf8Tag RT_MANGLER(RTUtf16ToUtf8Tag) +# define RTUtf16ValidateEncoding RT_MANGLER(RTUtf16ValidateEncoding) +# define RTUtf16ValidateEncodingEx RT_MANGLER(RTUtf16ValidateEncodingEx) +# define RTUuidClear RT_MANGLER(RTUuidClear) +# define RTUuidCompare RT_MANGLER(RTUuidCompare) +# define RTUuidCompare2Strs RT_MANGLER(RTUuidCompare2Strs) +# define RTUuidCompareStr RT_MANGLER(RTUuidCompareStr) +# define RTUuidCreate RT_MANGLER(RTUuidCreate) +# define RTUuidFromStr RT_MANGLER(RTUuidFromStr) +# define RTUuidFromUtf16 RT_MANGLER(RTUuidFromUtf16) +# define RTUuidIsNull RT_MANGLER(RTUuidIsNull) +# define RTUuidToStr RT_MANGLER(RTUuidToStr) +# define RTUuidToUtf16 RT_MANGLER(RTUuidToUtf16) +# define RTVfsChainElementDeregisterProvider RT_MANGLER(RTVfsChainElementDeregisterProvider) +# define RTVfsChainElementRegisterProvider RT_MANGLER(RTVfsChainElementRegisterProvider) +# define RTVfsChainIsSpec RT_MANGLER(RTVfsChainIsSpec) +# define RTVfsChainOpenFile RT_MANGLER(RTVfsChainOpenFile) +# define RTVfsChainOpenIoStream RT_MANGLER(RTVfsChainOpenIoStream) +# define RTVfsChainSpecFree RT_MANGLER(RTVfsChainSpecFree) +# define RTVfsChainSpecParse RT_MANGLER(RTVfsChainSpecParse) +# define RTVfsDirRelease RT_MANGLER(RTVfsDirRelease) +# define RTVfsDirRetain RT_MANGLER(RTVfsDirRetain) +# define RTVfsFileFlush RT_MANGLER(RTVfsFileFlush) +# define RTVfsFileFromRTFile RT_MANGLER(RTVfsFileFromRTFile) +# define RTVfsFileGetSize RT_MANGLER(RTVfsFileGetSize) +# define RTVfsFileOpen RT_MANGLER(RTVfsFileOpen) +# define RTVfsFileOpenNormal RT_MANGLER(RTVfsFileOpenNormal) +# define RTVfsFilePoll RT_MANGLER(RTVfsFilePoll) +# define RTVfsFileQueryInfo RT_MANGLER(RTVfsFileQueryInfo) +# define RTVfsFileRead RT_MANGLER(RTVfsFileRead) +# define RTVfsFileReadAt RT_MANGLER(RTVfsFileReadAt) +# define RTVfsFileRelease RT_MANGLER(RTVfsFileRelease) +# define RTVfsFileRetain RT_MANGLER(RTVfsFileRetain) +# define RTVfsFileSeek RT_MANGLER(RTVfsFileSeek) +# define RTVfsFileTell RT_MANGLER(RTVfsFileTell) +# define RTVfsFileToIoStream RT_MANGLER(RTVfsFileToIoStream) +# define RTVfsFileWrite RT_MANGLER(RTVfsFileWrite) +# define RTVfsFileWriteAt RT_MANGLER(RTVfsFileWriteAt) +# define RTVfsFsStrmNext RT_MANGLER(RTVfsFsStrmNext) +# define RTVfsFsStrmQueryInfo RT_MANGLER(RTVfsFsStrmQueryInfo) +# define RTVfsFsStrmRelease RT_MANGLER(RTVfsFsStrmRelease) +# define RTVfsFsStrmRetain RT_MANGLER(RTVfsFsStrmRetain) +# define RTVfsIoStreamToPrivate RT_MANGLER(RTVfsIoStreamToPrivate) +# define RTVfsIoStrmFlush RT_MANGLER(RTVfsIoStrmFlush) +# define RTVfsIoStrmFromRTFile RT_MANGLER(RTVfsIoStrmFromRTFile) +# define RTVfsIoStrmFromRTPipe RT_MANGLER(RTVfsIoStrmFromRTPipe) +# define RTVfsIoStrmFromStdHandle RT_MANGLER(RTVfsIoStrmFromStdHandle) +# define RTVfsIoStrmIsAtEnd RT_MANGLER(RTVfsIoStrmIsAtEnd) +# define RTVfsIoStrmOpenNormal RT_MANGLER(RTVfsIoStrmOpenNormal) +# define RTVfsIoStrmPoll RT_MANGLER(RTVfsIoStrmPoll) +# define RTVfsIoStrmQueryInfo RT_MANGLER(RTVfsIoStrmQueryInfo) +# define RTVfsIoStrmRead RT_MANGLER(RTVfsIoStrmRead) +# define RTVfsIoStrmReadAt RT_MANGLER(RTVfsIoStrmReadAt) +# define RTVfsIoStrmRelease RT_MANGLER(RTVfsIoStrmRelease) +# define RTVfsIoStrmRetain RT_MANGLER(RTVfsIoStrmRetain) +# define RTVfsIoStrmSgRead RT_MANGLER(RTVfsIoStrmSgRead) +# define RTVfsIoStrmSgWrite RT_MANGLER(RTVfsIoStrmSgWrite) +# define RTVfsIoStrmSkip RT_MANGLER(RTVfsIoStrmSkip) +# define RTVfsIoStrmTell RT_MANGLER(RTVfsIoStrmTell) +# define RTVfsIoStrmToFile RT_MANGLER(RTVfsIoStrmToFile) +# define RTVfsIoStrmValidateUtf8Encoding RT_MANGLER(RTVfsIoStrmValidateUtf8Encoding) +# define RTVfsIoStrmWrite RT_MANGLER(RTVfsIoStrmWrite) +# define RTVfsIoStrmWriteAt RT_MANGLER(RTVfsIoStrmWriteAt) +# define RTVfsIoStrmZeroFill RT_MANGLER(RTVfsIoStrmZeroFill) +# define RTVfsIsRangeInUse RT_MANGLER(RTVfsIsRangeInUse) +# define RTVfsLockAcquireReadSlow RT_MANGLER(RTVfsLockAcquireReadSlow) +# define RTVfsLockAcquireWriteSlow RT_MANGLER(RTVfsLockAcquireWriteSlow) +# define RTVfsLockRelease RT_MANGLER(RTVfsLockRelease) +# define RTVfsLockReleaseReadSlow RT_MANGLER(RTVfsLockReleaseReadSlow) +# define RTVfsLockReleaseWriteSlow RT_MANGLER(RTVfsLockReleaseWriteSlow) +# define RTVfsLockRetain RT_MANGLER(RTVfsLockRetain) +# define RTVfsMemorizeIoStreamAsFile RT_MANGLER(RTVfsMemorizeIoStreamAsFile) +# define RTVfsNew RT_MANGLER(RTVfsNew) +# define RTVfsNewBaseObj RT_MANGLER(RTVfsNewBaseObj) +# define RTVfsNewFile RT_MANGLER(RTVfsNewFile) +# define RTVfsNewFsStream RT_MANGLER(RTVfsNewFsStream) +# define RTVfsNewIoStream RT_MANGLER(RTVfsNewIoStream) +# define RTVfsNewSymlink RT_MANGLER(RTVfsNewSymlink) +# define RTVfsObjFromDir RT_MANGLER(RTVfsObjFromDir) +# define RTVfsObjFromFile RT_MANGLER(RTVfsObjFromFile) +# define RTVfsObjFromFsStream RT_MANGLER(RTVfsObjFromFsStream) +# define RTVfsObjFromIoStream RT_MANGLER(RTVfsObjFromIoStream) +# define RTVfsObjFromSymlink RT_MANGLER(RTVfsObjFromSymlink) +# define RTVfsObjFromVfs RT_MANGLER(RTVfsObjFromVfs) +# define RTVfsObjQueryInfo RT_MANGLER(RTVfsObjQueryInfo) +# define RTVfsObjRelease RT_MANGLER(RTVfsObjRelease) +# define RTVfsObjRetain RT_MANGLER(RTVfsObjRetain) +# define RTVfsObjToDir RT_MANGLER(RTVfsObjToDir) +# define RTVfsObjToFile RT_MANGLER(RTVfsObjToFile) +# define RTVfsObjToFsStream RT_MANGLER(RTVfsObjToFsStream) +# define RTVfsObjToIoStream RT_MANGLER(RTVfsObjToIoStream) +# define RTVfsObjToSymlink RT_MANGLER(RTVfsObjToSymlink) +# define RTVfsObjToVfs RT_MANGLER(RTVfsObjToVfs) +# define RTVfsParsePath RT_MANGLER(RTVfsParsePath) +# define RTVfsParsePathA RT_MANGLER(RTVfsParsePathA) +# define RTVfsParsePathAppend RT_MANGLER(RTVfsParsePathAppend) +# define RTVfsParsePathFree RT_MANGLER(RTVfsParsePathFree) +# define RTVfsRelease RT_MANGLER(RTVfsRelease) +# define RTVfsRetain RT_MANGLER(RTVfsRetain) +# define RTVfsSymlinkQueryInfo RT_MANGLER(RTVfsSymlinkQueryInfo) +# define RTVfsSymlinkRead RT_MANGLER(RTVfsSymlinkRead) +# define RTVfsSymlinkRelease RT_MANGLER(RTVfsSymlinkRelease) +# define RTVfsSymlinkRetain RT_MANGLER(RTVfsSymlinkRetain) +# define RTVfsSymlinkSetMode RT_MANGLER(RTVfsSymlinkSetMode) +# define RTVfsSymlinkSetOwner RT_MANGLER(RTVfsSymlinkSetOwner) +# define RTVfsSymlinkSetTimes RT_MANGLER(RTVfsSymlinkSetTimes) +# define RTVfsUtilDummyPollOne RT_MANGLER(RTVfsUtilDummyPollOne) +# define RTVfsUtilPumpIoStreams RT_MANGLER(RTVfsUtilPumpIoStreams) +# define RTX509PrepareOpenSSL RT_MANGLER(RTX509PrepareOpenSSL) +# define RTX509CertificateVerify RT_MANGLER(RTX509CertificateVerify) +# define RTX509GetErrorDescription RT_MANGLER(RTX509GetErrorDescription) +# define RTZipBlockCompress RT_MANGLER(RTZipBlockCompress) +# define RTZipBlockDecompress RT_MANGLER(RTZipBlockDecompress) +# define RTZipCompCreate RT_MANGLER(RTZipCompCreate) +# define RTZipCompDestroy RT_MANGLER(RTZipCompDestroy) +# define RTZipCompFinish RT_MANGLER(RTZipCompFinish) +# define RTZipCompress RT_MANGLER(RTZipCompress) +# define RTZipDecompCreate RT_MANGLER(RTZipDecompCreate) +# define RTZipDecompDestroy RT_MANGLER(RTZipDecompDestroy) +# define RTZipDecompress RT_MANGLER(RTZipDecompress) +# define RTZipGzipCompressIoStream RT_MANGLER(RTZipGzipCompressIoStream) +# define RTZipGzipDecompressIoStream RT_MANGLER(RTZipGzipDecompressIoStream) +# define RTZipPkzipFsStreamFromIoStream RT_MANGLER(RTZipPkzipFsStreamFromIoStream) +# define RTZipPkzipMemDecompress RT_MANGLER(RTZipPkzipMemDecompress) +# define RTZipTarCmd RT_MANGLER(RTZipTarCmd) +# define RTZipUnzipCmd RT_MANGLER(RTZipUnzipCmd) +# define RTZipTarFsStreamFromIoStream RT_MANGLER(RTZipTarFsStreamFromIoStream) +# define RTZipXarFsStreamFromIoStream RT_MANGLER(RTZipXarFsStreamFromIoStream) + +/* sort/merge into the above later: */ +# define RTAsn1ContentAllocZ RT_MANGLER(RTAsn1ContentAllocZ) +# define RTAsn1ContentDup RT_MANGLER(RTAsn1ContentDup) +# define RTAsn1ContentFree RT_MANGLER(RTAsn1ContentFree) +# define RTAsn1ContentReallocZ RT_MANGLER(RTAsn1ContentReallocZ) +# define RTAsn1ContextTagN_Clone RT_MANGLER(RTAsn1ContextTagN_Clone) +# define RTAsn1ContextTagN_Init RT_MANGLER(RTAsn1ContextTagN_Init) +# define RTAsn1Dummy_InitEx RT_MANGLER(RTAsn1Dummy_InitEx) +# define RTAsn1MemAllocZ RT_MANGLER(RTAsn1MemAllocZ) +# define RTAsn1MemDup RT_MANGLER(RTAsn1MemDup) +# define RTAsn1MemFree RT_MANGLER(RTAsn1MemFree) +# define RTAsn1MemGrowArray RT_MANGLER(RTAsn1MemGrowArray) +# define RTAsn1MemInitAllocation RT_MANGLER(RTAsn1MemInitAllocation) +# define RTAsn1SeqOfCore_Clone RT_MANGLER(RTAsn1SeqOfCore_Clone) +# define RTAsn1SeqOfCore_Init RT_MANGLER(RTAsn1SeqOfCore_Init) +# define RTAsn1SequenceCore_Clone RT_MANGLER(RTAsn1SequenceCore_Clone) +# define RTAsn1SequenceCore_Init RT_MANGLER(RTAsn1SequenceCore_Init) +# define RTAsn1SetCore_Clone RT_MANGLER(RTAsn1SetCore_Clone) +# define RTAsn1SetCore_Init RT_MANGLER(RTAsn1SetCore_Init) +# define RTAsn1SetOfCore_Clone RT_MANGLER(RTAsn1SetOfCore_Clone) +# define RTAsn1SetOfCore_Init RT_MANGLER(RTAsn1SetOfCore_Init) +# define RTAsn1VtCheckSanity RT_MANGLER(RTAsn1VtCheckSanity) +# define RTAsn1VtClone RT_MANGLER(RTAsn1VtClone) +# define RTAsn1VtCompare RT_MANGLER(RTAsn1VtCompare) +# define RTAsn1VtDeepEnum RT_MANGLER(RTAsn1VtDeepEnum) +# define RTAsn1VtDelete RT_MANGLER(RTAsn1VtDelete) +# define RTAsn1CursorCheckEnd RT_MANGLER(RTAsn1CursorCheckEnd) +# define RTAsn1CursorGetBitString RT_MANGLER(RTAsn1CursorGetBitString) +# define RTAsn1CursorGetBitStringEx RT_MANGLER(RTAsn1CursorGetBitStringEx) +# define RTAsn1CursorGetBmpString RT_MANGLER(RTAsn1CursorGetBmpString) +# define RTAsn1CursorGetBoolean RT_MANGLER(RTAsn1CursorGetBoolean) +# define RTAsn1CursorGetContextTagNCursor RT_MANGLER(RTAsn1CursorGetContextTagNCursor) +# define RTAsn1CursorGetCore RT_MANGLER(RTAsn1CursorGetCore) +# define RTAsn1CursorGetDynType RT_MANGLER(RTAsn1CursorGetDynType) +# define RTAsn1CursorGetIa5String RT_MANGLER(RTAsn1CursorGetIa5String) +# define RTAsn1CursorGetInteger RT_MANGLER(RTAsn1CursorGetInteger) +# define RTAsn1CursorGetNull RT_MANGLER(RTAsn1CursorGetNull) +# define RTAsn1CursorGetObjId RT_MANGLER(RTAsn1CursorGetObjId) +# define RTAsn1CursorGetOctetString RT_MANGLER(RTAsn1CursorGetOctetString) +# define RTAsn1CursorGetSequenceCursor RT_MANGLER(RTAsn1CursorGetSequenceCursor) +# define RTAsn1CursorGetSetCursor RT_MANGLER(RTAsn1CursorGetSetCursor) +# define RTAsn1CursorGetString RT_MANGLER(RTAsn1CursorGetString) +# define RTAsn1CursorGetTime RT_MANGLER(RTAsn1CursorGetTime) +# define RTAsn1CursorGetUtf8String RT_MANGLER(RTAsn1CursorGetUtf8String) +# define RTAsn1CursorInitAllocation RT_MANGLER(RTAsn1CursorInitAllocation) +# define RTAsn1CursorInitPrimary RT_MANGLER(RTAsn1CursorInitPrimary) +# define RTAsn1CursorInitSubFromCore RT_MANGLER(RTAsn1CursorInitSubFromCore) +# define RTAsn1CursorIsNextEx RT_MANGLER(RTAsn1CursorIsNextEx) +# define RTAsn1CursorMatchTagClassFlagsEx RT_MANGLER(RTAsn1CursorMatchTagClassFlagsEx) +# define RTAsn1CursorPeek RT_MANGLER(RTAsn1CursorPeek) +# define RTAsn1CursorReadHdr RT_MANGLER(RTAsn1CursorReadHdr) +# define RTAsn1CursorSetInfo RT_MANGLER(RTAsn1CursorSetInfo) +# define RTAsn1CursorSetInfoV RT_MANGLER(RTAsn1CursorSetInfoV) +# define RTAsn1Dump RT_MANGLER(RTAsn1Dump) +# define RTAsn1EncodePrepare RT_MANGLER(RTAsn1EncodePrepare) +# define RTAsn1EncodeRecalcHdrSize RT_MANGLER(RTAsn1EncodeRecalcHdrSize) +# define RTAsn1EncodeWrite RT_MANGLER(RTAsn1EncodeWrite) +# define RTAsnEncodeWriteHeader RT_MANGLER(RTAsnEncodeWriteHeader) +# define RTAsn1BitString_CheckSanity RT_MANGLER(RTAsn1BitString_CheckSanity) +# define RTAsn1BitString_Clone RT_MANGLER(RTAsn1BitString_Clone) +# define RTAsn1BitString_Compare RT_MANGLER(RTAsn1BitString_Compare) +# define RTAsn1BitString_Delete RT_MANGLER(RTAsn1BitString_Delete) +# define RTAsn1BitString_Enum RT_MANGLER(RTAsn1BitString_Enum) +# define RTAsn1BitString_GetAsUInt64 RT_MANGLER(RTAsn1BitString_GetAsUInt64) +# define RTAsn1BitString_Init RT_MANGLER(RTAsn1BitString_Init) +# define RTAsn1SeqOfBitStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfBitStrings_CheckSanity) +# define RTAsn1SeqOfBitStrings_Clone RT_MANGLER(RTAsn1SeqOfBitStrings_Clone) +# define RTAsn1SeqOfBitStrings_Compare RT_MANGLER(RTAsn1SeqOfBitStrings_Compare) +# define RTAsn1SeqOfBitStrings_Delete RT_MANGLER(RTAsn1SeqOfBitStrings_Delete) +# define RTAsn1SeqOfBitStrings_Enum RT_MANGLER(RTAsn1SeqOfBitStrings_Enum) +# define RTAsn1SeqOfBitStrings_Init RT_MANGLER(RTAsn1SeqOfBitStrings_Init) +# define RTAsn1SetOfBitStrings_CheckSanity RT_MANGLER(RTAsn1SetOfBitStrings_CheckSanity) +# define RTAsn1SetOfBitStrings_Clone RT_MANGLER(RTAsn1SetOfBitStrings_Clone) +# define RTAsn1SetOfBitStrings_Compare RT_MANGLER(RTAsn1SetOfBitStrings_Compare) +# define RTAsn1SetOfBitStrings_Delete RT_MANGLER(RTAsn1SetOfBitStrings_Delete) +# define RTAsn1SetOfBitStrings_Enum RT_MANGLER(RTAsn1SetOfBitStrings_Enum) +# define RTAsn1SetOfBitStrings_Init RT_MANGLER(RTAsn1SetOfBitStrings_Init) +# define RTAsn1BitString_DecodeAsn1 RT_MANGLER(RTAsn1BitString_DecodeAsn1) +# define RTAsn1BitString_DecodeAsn1Ex RT_MANGLER(RTAsn1BitString_DecodeAsn1Ex) +# define RTAsn1SeqOfBitStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfBitStrings_DecodeAsn1) +# define RTAsn1SetOfBitStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfBitStrings_DecodeAsn1) +# define RTAsn1Boolean_CheckSanity RT_MANGLER(RTAsn1Boolean_CheckSanity) +# define RTAsn1Boolean_Clone RT_MANGLER(RTAsn1Boolean_Clone) +# define RTAsn1Boolean_Compare RT_MANGLER(RTAsn1Boolean_Compare) +# define RTAsn1Boolean_Delete RT_MANGLER(RTAsn1Boolean_Delete) +# define RTAsn1Boolean_Enum RT_MANGLER(RTAsn1Boolean_Enum) +# define RTAsn1Boolean_Init RT_MANGLER(RTAsn1Boolean_Init) +# define RTAsn1Boolean_InitDefault RT_MANGLER(RTAsn1Boolean_InitDefault) +# define RTAsn1Boolean_Set RT_MANGLER(RTAsn1Boolean_Set) +# define RTAsn1SeqOfBooleans_CheckSanity RT_MANGLER(RTAsn1SeqOfBooleans_CheckSanity) +# define RTAsn1SeqOfBooleans_Clone RT_MANGLER(RTAsn1SeqOfBooleans_Clone) +# define RTAsn1SeqOfBooleans_Compare RT_MANGLER(RTAsn1SeqOfBooleans_Compare) +# define RTAsn1SeqOfBooleans_Delete RT_MANGLER(RTAsn1SeqOfBooleans_Delete) +# define RTAsn1SeqOfBooleans_Enum RT_MANGLER(RTAsn1SeqOfBooleans_Enum) +# define RTAsn1SeqOfBooleans_Init RT_MANGLER(RTAsn1SeqOfBooleans_Init) +# define RTAsn1SetOfBooleans_CheckSanity RT_MANGLER(RTAsn1SetOfBooleans_CheckSanity) +# define RTAsn1SetOfBooleans_Clone RT_MANGLER(RTAsn1SetOfBooleans_Clone) +# define RTAsn1SetOfBooleans_Compare RT_MANGLER(RTAsn1SetOfBooleans_Compare) +# define RTAsn1SetOfBooleans_Delete RT_MANGLER(RTAsn1SetOfBooleans_Delete) +# define RTAsn1SetOfBooleans_Enum RT_MANGLER(RTAsn1SetOfBooleans_Enum) +# define RTAsn1SetOfBooleans_Init RT_MANGLER(RTAsn1SetOfBooleans_Init) +# define RTAsn1Boolean_DecodeAsn1 RT_MANGLER(RTAsn1Boolean_DecodeAsn1) +# define RTAsn1SeqOfBooleans_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfBooleans_DecodeAsn1) +# define RTAsn1SetOfBooleans_DecodeAsn1 RT_MANGLER(RTAsn1SetOfBooleans_DecodeAsn1) +# define RTAsn1Core_ChangeTag RT_MANGLER(RTAsn1Core_ChangeTag) +# define RTAsn1Core_CheckSanity RT_MANGLER(RTAsn1Core_CheckSanity) +# define RTAsn1Core_Clone RT_MANGLER(RTAsn1Core_Clone) +# define RTAsn1Core_CloneContent RT_MANGLER(RTAsn1Core_CloneContent) +# define RTAsn1Core_CloneNoContent RT_MANGLER(RTAsn1Core_CloneNoContent) +# define RTAsn1Core_Compare RT_MANGLER(RTAsn1Core_Compare) +# define RTAsn1Core_CompareEx RT_MANGLER(RTAsn1Core_CompareEx) +# define RTAsn1Core_Delete RT_MANGLER(RTAsn1Core_Delete) +# define RTAsn1Core_Enum RT_MANGLER(RTAsn1Core_Enum) +# define RTAsn1Core_Init RT_MANGLER(RTAsn1Core_Init) +# define RTAsn1Core_InitDefault RT_MANGLER(RTAsn1Core_InitDefault) +# define RTAsn1Core_InitEx RT_MANGLER(RTAsn1Core_InitEx) +# define RTAsn1Core_ResetImplict RT_MANGLER(RTAsn1Core_ResetImplict) +# define RTAsn1Core_SetTagAndFlags RT_MANGLER(RTAsn1Core_SetTagAndFlags) +# define RTAsn1SeqOfCores_CheckSanity RT_MANGLER(RTAsn1SeqOfCores_CheckSanity) +# define RTAsn1SeqOfCores_Clone RT_MANGLER(RTAsn1SeqOfCores_Clone) +# define RTAsn1SeqOfCores_Compare RT_MANGLER(RTAsn1SeqOfCores_Compare) +# define RTAsn1SeqOfCores_Delete RT_MANGLER(RTAsn1SeqOfCores_Delete) +# define RTAsn1SeqOfCores_Enum RT_MANGLER(RTAsn1SeqOfCores_Enum) +# define RTAsn1SeqOfCores_Init RT_MANGLER(RTAsn1SeqOfCores_Init) +# define RTAsn1SetOfCores_CheckSanity RT_MANGLER(RTAsn1SetOfCores_CheckSanity) +# define RTAsn1SetOfCores_Clone RT_MANGLER(RTAsn1SetOfCores_Clone) +# define RTAsn1SetOfCores_Compare RT_MANGLER(RTAsn1SetOfCores_Compare) +# define RTAsn1SetOfCores_Delete RT_MANGLER(RTAsn1SetOfCores_Delete) +# define RTAsn1SetOfCores_Enum RT_MANGLER(RTAsn1SetOfCores_Enum) +# define RTAsn1SetOfCores_Init RT_MANGLER(RTAsn1SetOfCores_Init) +# define RTAsn1Core_DecodeAsn1 RT_MANGLER(RTAsn1Core_DecodeAsn1) +# define RTAsn1SeqOfCores_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfCores_DecodeAsn1) +# define RTAsn1SetOfCores_DecodeAsn1 RT_MANGLER(RTAsn1SetOfCores_DecodeAsn1) +# define RTAsn1DynType_CheckSanity RT_MANGLER(RTAsn1DynType_CheckSanity) +# define RTAsn1DynType_Clone RT_MANGLER(RTAsn1DynType_Clone) +# define RTAsn1DynType_Compare RT_MANGLER(RTAsn1DynType_Compare) +# define RTAsn1DynType_Delete RT_MANGLER(RTAsn1DynType_Delete) +# define RTAsn1DynType_Enum RT_MANGLER(RTAsn1DynType_Enum) +# define RTAsn1DynType_Init RT_MANGLER(RTAsn1DynType_Init) +# define RTAsn1DynType_DecodeAsn1 RT_MANGLER(RTAsn1DynType_DecodeAsn1) +# define RTAsn1Integer_CheckSanity RT_MANGLER(RTAsn1Integer_CheckSanity) +# define RTAsn1Integer_Clone RT_MANGLER(RTAsn1Integer_Clone) +# define RTAsn1Integer_Compare RT_MANGLER(RTAsn1Integer_Compare) +# define RTAsn1Integer_Delete RT_MANGLER(RTAsn1Integer_Delete) +# define RTAsn1Integer_Enum RT_MANGLER(RTAsn1Integer_Enum) +# define RTAsn1Integer_FromBigNum RT_MANGLER(RTAsn1Integer_FromBigNum) +# define RTAsn1Integer_Init RT_MANGLER(RTAsn1Integer_Init) +# define RTAsn1Integer_InitDefault RT_MANGLER(RTAsn1Integer_InitDefault) +# define RTAsn1Integer_InitU64 RT_MANGLER(RTAsn1Integer_InitU64) +# define RTAsn1Integer_ToBigNum RT_MANGLER(RTAsn1Integer_ToBigNum) +# define RTAsn1Integer_UnsignedCompare RT_MANGLER(RTAsn1Integer_UnsignedCompare) +# define RTAsn1Integer_UnsignedCompareWithU32 RT_MANGLER(RTAsn1Integer_UnsignedCompareWithU32) +# define RTAsn1Integer_UnsignedCompareWithU64 RT_MANGLER(RTAsn1Integer_UnsignedCompareWithU64) +# define RTAsn1Integer_UnsignedLastBit RT_MANGLER(RTAsn1Integer_UnsignedLastBit) +# define RTAsn1SeqOfIntegers_CheckSanity RT_MANGLER(RTAsn1SeqOfIntegers_CheckSanity) +# define RTAsn1SeqOfIntegers_Clone RT_MANGLER(RTAsn1SeqOfIntegers_Clone) +# define RTAsn1SeqOfIntegers_Compare RT_MANGLER(RTAsn1SeqOfIntegers_Compare) +# define RTAsn1SeqOfIntegers_Delete RT_MANGLER(RTAsn1SeqOfIntegers_Delete) +# define RTAsn1SeqOfIntegers_Enum RT_MANGLER(RTAsn1SeqOfIntegers_Enum) +# define RTAsn1SeqOfIntegers_Init RT_MANGLER(RTAsn1SeqOfIntegers_Init) +# define RTAsn1SetOfIntegers_CheckSanity RT_MANGLER(RTAsn1SetOfIntegers_CheckSanity) +# define RTAsn1SetOfIntegers_Clone RT_MANGLER(RTAsn1SetOfIntegers_Clone) +# define RTAsn1SetOfIntegers_Compare RT_MANGLER(RTAsn1SetOfIntegers_Compare) +# define RTAsn1SetOfIntegers_Delete RT_MANGLER(RTAsn1SetOfIntegers_Delete) +# define RTAsn1SetOfIntegers_Enum RT_MANGLER(RTAsn1SetOfIntegers_Enum) +# define RTAsn1SetOfIntegers_Init RT_MANGLER(RTAsn1SetOfIntegers_Init) +# define RTAsn1Integer_DecodeAsn1 RT_MANGLER(RTAsn1Integer_DecodeAsn1) +# define RTAsn1SeqOfIntegers_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfIntegers_DecodeAsn1) +# define RTAsn1SetOfIntegers_DecodeAsn1 RT_MANGLER(RTAsn1SetOfIntegers_DecodeAsn1) +# define RTAsn1Null_CheckSanity RT_MANGLER(RTAsn1Null_CheckSanity) +# define RTAsn1Null_Clone RT_MANGLER(RTAsn1Null_Clone) +# define RTAsn1Null_Compare RT_MANGLER(RTAsn1Null_Compare) +# define RTAsn1Null_Delete RT_MANGLER(RTAsn1Null_Delete) +# define RTAsn1Null_Enum RT_MANGLER(RTAsn1Null_Enum) +# define RTAsn1Null_Init RT_MANGLER(RTAsn1Null_Init) +# define RTAsn1Null_DecodeAsn1 RT_MANGLER(RTAsn1Null_DecodeAsn1) +# define RTAsn1ObjIdCountComponents RT_MANGLER(RTAsn1ObjIdCountComponents) +# define RTAsn1ObjIdGetComponentsAsUInt32 RT_MANGLER(RTAsn1ObjIdGetComponentsAsUInt32) +# define RTAsn1ObjIdGetLastComponentsAsUInt32 RT_MANGLER(RTAsn1ObjIdGetLastComponentsAsUInt32) +# define RTAsn1ObjId_CheckSanity RT_MANGLER(RTAsn1ObjId_CheckSanity) +# define RTAsn1ObjId_Clone RT_MANGLER(RTAsn1ObjId_Clone) +# define RTAsn1ObjId_Compare RT_MANGLER(RTAsn1ObjId_Compare) +# define RTAsn1ObjId_CompareWithString RT_MANGLER(RTAsn1ObjId_CompareWithString) +# define RTAsn1ObjId_Delete RT_MANGLER(RTAsn1ObjId_Delete) +# define RTAsn1ObjId_Enum RT_MANGLER(RTAsn1ObjId_Enum) +# define RTAsn1ObjId_Init RT_MANGLER(RTAsn1ObjId_Init) +# define RTAsn1ObjId_InitFromString RT_MANGLER(RTAsn1ObjId_InitFromString) +# define RTAsn1ObjId_StartsWith RT_MANGLER(RTAsn1ObjId_StartsWith) +# define RTAsn1SeqOfObjIds_CheckSanity RT_MANGLER(RTAsn1SeqOfObjIds_CheckSanity) +# define RTAsn1SeqOfObjIds_Clone RT_MANGLER(RTAsn1SeqOfObjIds_Clone) +# define RTAsn1SeqOfObjIds_Compare RT_MANGLER(RTAsn1SeqOfObjIds_Compare) +# define RTAsn1SeqOfObjIds_Delete RT_MANGLER(RTAsn1SeqOfObjIds_Delete) +# define RTAsn1SeqOfObjIds_Enum RT_MANGLER(RTAsn1SeqOfObjIds_Enum) +# define RTAsn1SeqOfObjIds_Init RT_MANGLER(RTAsn1SeqOfObjIds_Init) +# define RTAsn1SetOfObjIds_CheckSanity RT_MANGLER(RTAsn1SetOfObjIds_CheckSanity) +# define RTAsn1SetOfObjIds_Clone RT_MANGLER(RTAsn1SetOfObjIds_Clone) +# define RTAsn1SetOfObjIds_Compare RT_MANGLER(RTAsn1SetOfObjIds_Compare) +# define RTAsn1SetOfObjIds_Delete RT_MANGLER(RTAsn1SetOfObjIds_Delete) +# define RTAsn1SetOfObjIds_Enum RT_MANGLER(RTAsn1SetOfObjIds_Enum) +# define RTAsn1SetOfObjIds_Init RT_MANGLER(RTAsn1SetOfObjIds_Init) +# define RTAsn1ObjId_DecodeAsn1 RT_MANGLER(RTAsn1ObjId_DecodeAsn1) +# define RTAsn1SeqOfObjIds_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfObjIds_DecodeAsn1) +# define RTAsn1SetOfObjIds_DecodeAsn1 RT_MANGLER(RTAsn1SetOfObjIds_DecodeAsn1) +# define RTAsn1OctetString_CheckSanity RT_MANGLER(RTAsn1OctetString_CheckSanity) +# define RTAsn1OctetString_Clone RT_MANGLER(RTAsn1OctetString_Clone) +# define RTAsn1OctetString_Compare RT_MANGLER(RTAsn1OctetString_Compare) +# define RTAsn1OctetString_Delete RT_MANGLER(RTAsn1OctetString_Delete) +# define RTAsn1OctetString_Enum RT_MANGLER(RTAsn1OctetString_Enum) +# define RTAsn1OctetString_Init RT_MANGLER(RTAsn1OctetString_Init) +# define RTAsn1SeqOfOctetStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfOctetStrings_CheckSanity) +# define RTAsn1SeqOfOctetStrings_Clone RT_MANGLER(RTAsn1SeqOfOctetStrings_Clone) +# define RTAsn1SeqOfOctetStrings_Compare RT_MANGLER(RTAsn1SeqOfOctetStrings_Compare) +# define RTAsn1SeqOfOctetStrings_Delete RT_MANGLER(RTAsn1SeqOfOctetStrings_Delete) +# define RTAsn1SeqOfOctetStrings_Enum RT_MANGLER(RTAsn1SeqOfOctetStrings_Enum) +# define RTAsn1SeqOfOctetStrings_Init RT_MANGLER(RTAsn1SeqOfOctetStrings_Init) +# define RTAsn1SetOfOctetStrings_CheckSanity RT_MANGLER(RTAsn1SetOfOctetStrings_CheckSanity) +# define RTAsn1SetOfOctetStrings_Clone RT_MANGLER(RTAsn1SetOfOctetStrings_Clone) +# define RTAsn1SetOfOctetStrings_Compare RT_MANGLER(RTAsn1SetOfOctetStrings_Compare) +# define RTAsn1SetOfOctetStrings_Delete RT_MANGLER(RTAsn1SetOfOctetStrings_Delete) +# define RTAsn1SetOfOctetStrings_Enum RT_MANGLER(RTAsn1SetOfOctetStrings_Enum) +# define RTAsn1SetOfOctetStrings_Init RT_MANGLER(RTAsn1SetOfOctetStrings_Init) +# define RTAsn1OctetString_DecodeAsn1 RT_MANGLER(RTAsn1OctetString_DecodeAsn1) +# define RTAsn1SeqOfOctetStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfOctetStrings_DecodeAsn1) +# define RTAsn1SetOfOctetStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfOctetStrings_DecodeAsn1) +# define RTAsn1BmpString_CheckSanity RT_MANGLER(RTAsn1BmpString_CheckSanity) +# define RTAsn1BmpString_Clone RT_MANGLER(RTAsn1BmpString_Clone) +# define RTAsn1BmpString_Compare RT_MANGLER(RTAsn1BmpString_Compare) +# define RTAsn1BmpString_Delete RT_MANGLER(RTAsn1BmpString_Delete) +# define RTAsn1BmpString_Enum RT_MANGLER(RTAsn1BmpString_Enum) +# define RTAsn1BmpString_Init RT_MANGLER(RTAsn1BmpString_Init) +# define RTAsn1GeneralString_CheckSanity RT_MANGLER(RTAsn1GeneralString_CheckSanity) +# define RTAsn1GeneralString_Clone RT_MANGLER(RTAsn1GeneralString_Clone) +# define RTAsn1GeneralString_Compare RT_MANGLER(RTAsn1GeneralString_Compare) +# define RTAsn1GeneralString_Delete RT_MANGLER(RTAsn1GeneralString_Delete) +# define RTAsn1GeneralString_Enum RT_MANGLER(RTAsn1GeneralString_Enum) +# define RTAsn1GeneralString_Init RT_MANGLER(RTAsn1GeneralString_Init) +# define RTAsn1GraphicString_CheckSanity RT_MANGLER(RTAsn1GraphicString_CheckSanity) +# define RTAsn1GraphicString_Clone RT_MANGLER(RTAsn1GraphicString_Clone) +# define RTAsn1GraphicString_Compare RT_MANGLER(RTAsn1GraphicString_Compare) +# define RTAsn1GraphicString_Delete RT_MANGLER(RTAsn1GraphicString_Delete) +# define RTAsn1GraphicString_Enum RT_MANGLER(RTAsn1GraphicString_Enum) +# define RTAsn1GraphicString_Init RT_MANGLER(RTAsn1GraphicString_Init) +# define RTAsn1Ia5String_CheckSanity RT_MANGLER(RTAsn1Ia5String_CheckSanity) +# define RTAsn1Ia5String_Clone RT_MANGLER(RTAsn1Ia5String_Clone) +# define RTAsn1Ia5String_Compare RT_MANGLER(RTAsn1Ia5String_Compare) +# define RTAsn1Ia5String_Delete RT_MANGLER(RTAsn1Ia5String_Delete) +# define RTAsn1Ia5String_Enum RT_MANGLER(RTAsn1Ia5String_Enum) +# define RTAsn1Ia5String_Init RT_MANGLER(RTAsn1Ia5String_Init) +# define RTAsn1NumericString_CheckSanity RT_MANGLER(RTAsn1NumericString_CheckSanity) +# define RTAsn1NumericString_Clone RT_MANGLER(RTAsn1NumericString_Clone) +# define RTAsn1NumericString_Compare RT_MANGLER(RTAsn1NumericString_Compare) +# define RTAsn1NumericString_Delete RT_MANGLER(RTAsn1NumericString_Delete) +# define RTAsn1NumericString_Enum RT_MANGLER(RTAsn1NumericString_Enum) +# define RTAsn1NumericString_Init RT_MANGLER(RTAsn1NumericString_Init) +# define RTAsn1PrintableString_CheckSanity RT_MANGLER(RTAsn1PrintableString_CheckSanity) +# define RTAsn1PrintableString_Clone RT_MANGLER(RTAsn1PrintableString_Clone) +# define RTAsn1PrintableString_Compare RT_MANGLER(RTAsn1PrintableString_Compare) +# define RTAsn1PrintableString_Delete RT_MANGLER(RTAsn1PrintableString_Delete) +# define RTAsn1PrintableString_Enum RT_MANGLER(RTAsn1PrintableString_Enum) +# define RTAsn1PrintableString_Init RT_MANGLER(RTAsn1PrintableString_Init) +# define RTAsn1SeqOfStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfStrings_CheckSanity) +# define RTAsn1SeqOfStrings_Clone RT_MANGLER(RTAsn1SeqOfStrings_Clone) +# define RTAsn1SeqOfStrings_Compare RT_MANGLER(RTAsn1SeqOfStrings_Compare) +# define RTAsn1SeqOfStrings_Delete RT_MANGLER(RTAsn1SeqOfStrings_Delete) +# define RTAsn1SeqOfStrings_Enum RT_MANGLER(RTAsn1SeqOfStrings_Enum) +# define RTAsn1SeqOfStrings_Init RT_MANGLER(RTAsn1SeqOfStrings_Init) +# define RTAsn1SetOfStrings_CheckSanity RT_MANGLER(RTAsn1SetOfStrings_CheckSanity) +# define RTAsn1SetOfStrings_Clone RT_MANGLER(RTAsn1SetOfStrings_Clone) +# define RTAsn1SetOfStrings_Compare RT_MANGLER(RTAsn1SetOfStrings_Compare) +# define RTAsn1SetOfStrings_Delete RT_MANGLER(RTAsn1SetOfStrings_Delete) +# define RTAsn1SetOfStrings_Enum RT_MANGLER(RTAsn1SetOfStrings_Enum) +# define RTAsn1SetOfStrings_Init RT_MANGLER(RTAsn1SetOfStrings_Init) +# define RTAsn1String_CheckSanity RT_MANGLER(RTAsn1String_CheckSanity) +# define RTAsn1String_Clone RT_MANGLER(RTAsn1String_Clone) +# define RTAsn1String_Compare RT_MANGLER(RTAsn1String_Compare) +# define RTAsn1String_CompareEx RT_MANGLER(RTAsn1String_CompareEx) +# define RTAsn1String_CompareWithString RT_MANGLER(RTAsn1String_CompareWithString) +# define RTAsn1String_Delete RT_MANGLER(RTAsn1String_Delete) +# define RTAsn1String_Enum RT_MANGLER(RTAsn1String_Enum) +# define RTAsn1String_Init RT_MANGLER(RTAsn1String_Init) +# define RTAsn1String_InitEx RT_MANGLER(RTAsn1String_InitEx) +# define RTAsn1String_InitWithValue RT_MANGLER(RTAsn1String_InitWithValue) +# define RTAsn1String_QueryUtf8 RT_MANGLER(RTAsn1String_QueryUtf8) +# define RTAsn1String_QueryUtf8Len RT_MANGLER(RTAsn1String_QueryUtf8Len) +# define RTAsn1String_RecodeAsUtf8 RT_MANGLER(RTAsn1String_RecodeAsUtf8) +# define RTAsn1T61String_CheckSanity RT_MANGLER(RTAsn1T61String_CheckSanity) +# define RTAsn1T61String_Clone RT_MANGLER(RTAsn1T61String_Clone) +# define RTAsn1T61String_Compare RT_MANGLER(RTAsn1T61String_Compare) +# define RTAsn1T61String_Delete RT_MANGLER(RTAsn1T61String_Delete) +# define RTAsn1T61String_Enum RT_MANGLER(RTAsn1T61String_Enum) +# define RTAsn1T61String_Init RT_MANGLER(RTAsn1T61String_Init) +# define RTAsn1UniversalString_CheckSanity RT_MANGLER(RTAsn1UniversalString_CheckSanity) +# define RTAsn1UniversalString_Clone RT_MANGLER(RTAsn1UniversalString_Clone) +# define RTAsn1UniversalString_Compare RT_MANGLER(RTAsn1UniversalString_Compare) +# define RTAsn1UniversalString_Delete RT_MANGLER(RTAsn1UniversalString_Delete) +# define RTAsn1UniversalString_Enum RT_MANGLER(RTAsn1UniversalString_Enum) +# define RTAsn1UniversalString_Init RT_MANGLER(RTAsn1UniversalString_Init) +# define RTAsn1Utf8String_CheckSanity RT_MANGLER(RTAsn1Utf8String_CheckSanity) +# define RTAsn1Utf8String_Clone RT_MANGLER(RTAsn1Utf8String_Clone) +# define RTAsn1Utf8String_Compare RT_MANGLER(RTAsn1Utf8String_Compare) +# define RTAsn1Utf8String_Delete RT_MANGLER(RTAsn1Utf8String_Delete) +# define RTAsn1Utf8String_Enum RT_MANGLER(RTAsn1Utf8String_Enum) +# define RTAsn1Utf8String_Init RT_MANGLER(RTAsn1Utf8String_Init) +# define RTAsn1VisibleString_CheckSanity RT_MANGLER(RTAsn1VisibleString_CheckSanity) +# define RTAsn1VisibleString_Clone RT_MANGLER(RTAsn1VisibleString_Clone) +# define RTAsn1VisibleString_Compare RT_MANGLER(RTAsn1VisibleString_Compare) +# define RTAsn1VisibleString_Delete RT_MANGLER(RTAsn1VisibleString_Delete) +# define RTAsn1VisibleString_Enum RT_MANGLER(RTAsn1VisibleString_Enum) +# define RTAsn1VisibleString_Init RT_MANGLER(RTAsn1VisibleString_Init) +# define RTAsn1BmpString_DecodeAsn1 RT_MANGLER(RTAsn1BmpString_DecodeAsn1) +# define RTAsn1GeneralString_DecodeAsn1 RT_MANGLER(RTAsn1GeneralString_DecodeAsn1) +# define RTAsn1GraphicString_DecodeAsn1 RT_MANGLER(RTAsn1GraphicString_DecodeAsn1) +# define RTAsn1Ia5String_DecodeAsn1 RT_MANGLER(RTAsn1Ia5String_DecodeAsn1) +# define RTAsn1NumericString_DecodeAsn1 RT_MANGLER(RTAsn1NumericString_DecodeAsn1) +# define RTAsn1PrintableString_DecodeAsn1 RT_MANGLER(RTAsn1PrintableString_DecodeAsn1) +# define RTAsn1SeqOfStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfStrings_DecodeAsn1) +# define RTAsn1SetOfStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfStrings_DecodeAsn1) +# define RTAsn1String_DecodeAsn1 RT_MANGLER(RTAsn1String_DecodeAsn1) +# define RTAsn1T61String_DecodeAsn1 RT_MANGLER(RTAsn1T61String_DecodeAsn1) +# define RTAsn1UniversalString_DecodeAsn1 RT_MANGLER(RTAsn1UniversalString_DecodeAsn1) +# define RTAsn1Utf8String_DecodeAsn1 RT_MANGLER(RTAsn1Utf8String_DecodeAsn1) +# define RTAsn1VisibleString_DecodeAsn1 RT_MANGLER(RTAsn1VisibleString_DecodeAsn1) +# define RTAsn1GeneralizedTime_CheckSanity RT_MANGLER(RTAsn1GeneralizedTime_CheckSanity) +# define RTAsn1GeneralizedTime_Clone RT_MANGLER(RTAsn1GeneralizedTime_Clone) +# define RTAsn1GeneralizedTime_Compare RT_MANGLER(RTAsn1GeneralizedTime_Compare) +# define RTAsn1GeneralizedTime_Delete RT_MANGLER(RTAsn1GeneralizedTime_Delete) +# define RTAsn1GeneralizedTime_Enum RT_MANGLER(RTAsn1GeneralizedTime_Enum) +# define RTAsn1GeneralizedTime_Init RT_MANGLER(RTAsn1GeneralizedTime_Init) +# define RTAsn1SeqOfTimes_CheckSanity RT_MANGLER(RTAsn1SeqOfTimes_CheckSanity) +# define RTAsn1SeqOfTimes_Clone RT_MANGLER(RTAsn1SeqOfTimes_Clone) +# define RTAsn1SeqOfTimes_Compare RT_MANGLER(RTAsn1SeqOfTimes_Compare) +# define RTAsn1SeqOfTimes_Delete RT_MANGLER(RTAsn1SeqOfTimes_Delete) +# define RTAsn1SeqOfTimes_Enum RT_MANGLER(RTAsn1SeqOfTimes_Enum) +# define RTAsn1SeqOfTimes_Init RT_MANGLER(RTAsn1SeqOfTimes_Init) +# define RTAsn1SetOfTimes_CheckSanity RT_MANGLER(RTAsn1SetOfTimes_CheckSanity) +# define RTAsn1SetOfTimes_Clone RT_MANGLER(RTAsn1SetOfTimes_Clone) +# define RTAsn1SetOfTimes_Compare RT_MANGLER(RTAsn1SetOfTimes_Compare) +# define RTAsn1SetOfTimes_Delete RT_MANGLER(RTAsn1SetOfTimes_Delete) +# define RTAsn1SetOfTimes_Enum RT_MANGLER(RTAsn1SetOfTimes_Enum) +# define RTAsn1SetOfTimes_Init RT_MANGLER(RTAsn1SetOfTimes_Init) +# define RTAsn1Time_CheckSanity RT_MANGLER(RTAsn1Time_CheckSanity) +# define RTAsn1Time_Clone RT_MANGLER(RTAsn1Time_Clone) +# define RTAsn1Time_Compare RT_MANGLER(RTAsn1Time_Compare) +# define RTAsn1Time_CompareWithTimeSpec RT_MANGLER(RTAsn1Time_CompareWithTimeSpec) +# define RTAsn1Time_Delete RT_MANGLER(RTAsn1Time_Delete) +# define RTAsn1Time_Enum RT_MANGLER(RTAsn1Time_Enum) +# define RTAsn1Time_Init RT_MANGLER(RTAsn1Time_Init) +# define RTAsn1UtcTime_CheckSanity RT_MANGLER(RTAsn1UtcTime_CheckSanity) +# define RTAsn1UtcTime_Clone RT_MANGLER(RTAsn1UtcTime_Clone) +# define RTAsn1UtcTime_Compare RT_MANGLER(RTAsn1UtcTime_Compare) +# define RTAsn1UtcTime_Delete RT_MANGLER(RTAsn1UtcTime_Delete) +# define RTAsn1UtcTime_Enum RT_MANGLER(RTAsn1UtcTime_Enum) +# define RTAsn1UtcTime_Init RT_MANGLER(RTAsn1UtcTime_Init) +# define RTAsn1GeneralizedTime_DecodeAsn1 RT_MANGLER(RTAsn1GeneralizedTime_DecodeAsn1) +# define RTAsn1SeqOfTimes_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfTimes_DecodeAsn1) +# define RTAsn1SetOfTimes_DecodeAsn1 RT_MANGLER(RTAsn1SetOfTimes_DecodeAsn1) +# define RTAsn1Time_DecodeAsn1 RT_MANGLER(RTAsn1Time_DecodeAsn1) +# define RTAsn1UtcTime_DecodeAsn1 RT_MANGLER(RTAsn1UtcTime_DecodeAsn1) +# define RTMd2 RT_MANGLER(RTMd2) +# define RTMd2Final RT_MANGLER(RTMd2Final) +# define RTMd2Init RT_MANGLER(RTMd2Init) +# define RTMd2Update RT_MANGLER(RTMd2Update) +# define RTMd2FromString RT_MANGLER(RTMd2FromString) +# define RTMd2ToString RT_MANGLER(RTMd2ToString) +# define RTCrDigestClone RT_MANGLER(RTCrDigestClone) +# define RTCrDigestCreate RT_MANGLER(RTCrDigestCreate) +# define RTCrDigestFinal RT_MANGLER(RTCrDigestFinal) +# define RTCrDigestGetConsumedSize RT_MANGLER(RTCrDigestGetConsumedSize) +# define RTCrDigestGetHash RT_MANGLER(RTCrDigestGetHash) +# define RTCrDigestGetHashSize RT_MANGLER(RTCrDigestGetHashSize) +# define RTCrDigestGetType RT_MANGLER(RTCrDigestGetType) +# define RTCrDigestIsFinalized RT_MANGLER(RTCrDigestIsFinalized) +# define RTCrDigestMatch RT_MANGLER(RTCrDigestMatch) +# define RTCrDigestRelease RT_MANGLER(RTCrDigestRelease) +# define RTCrDigestReset RT_MANGLER(RTCrDigestReset) +# define RTCrDigestRetain RT_MANGLER(RTCrDigestRetain) +# define RTCrDigestUpdate RT_MANGLER(RTCrDigestUpdate) +# define RTCrDigestCreateByObjId RT_MANGLER(RTCrDigestCreateByObjId) +# define RTCrDigestCreateByObjIdString RT_MANGLER(RTCrDigestCreateByObjIdString) +# define RTCrDigestCreateByType RT_MANGLER(RTCrDigestCreateByType) +# define RTCrDigestFindByObjId RT_MANGLER(RTCrDigestFindByObjId) +# define RTCrDigestFindByObjIdString RT_MANGLER(RTCrDigestFindByObjIdString) +# define RTCrDigestFindByType RT_MANGLER(RTCrDigestFindByType) +# define RTCrRsaDigestInfo_DecodeAsn1 RT_MANGLER(RTCrRsaDigestInfo_DecodeAsn1) +# define RTCrRsaOtherPrimeInfo_DecodeAsn1 RT_MANGLER(RTCrRsaOtherPrimeInfo_DecodeAsn1) +# define RTCrRsaOtherPrimeInfos_DecodeAsn1 RT_MANGLER(RTCrRsaOtherPrimeInfos_DecodeAsn1) +# define RTCrRsaPrivateKey_DecodeAsn1 RT_MANGLER(RTCrRsaPrivateKey_DecodeAsn1) +# define RTCrRsaPublicKey_DecodeAsn1 RT_MANGLER(RTCrRsaPublicKey_DecodeAsn1) +# define RTCrRsaDigestInfo_Compare RT_MANGLER(RTCrRsaDigestInfo_Compare) +# define RTCrRsaDigestInfo_Delete RT_MANGLER(RTCrRsaDigestInfo_Delete) +# define RTCrRsaDigestInfo_Enum RT_MANGLER(RTCrRsaDigestInfo_Enum) +# define RTCrRsaOtherPrimeInfo_Compare RT_MANGLER(RTCrRsaOtherPrimeInfo_Compare) +# define RTCrRsaOtherPrimeInfo_Delete RT_MANGLER(RTCrRsaOtherPrimeInfo_Delete) +# define RTCrRsaOtherPrimeInfo_Enum RT_MANGLER(RTCrRsaOtherPrimeInfo_Enum) +# define RTCrRsaOtherPrimeInfos_Compare RT_MANGLER(RTCrRsaOtherPrimeInfos_Compare) +# define RTCrRsaOtherPrimeInfos_Delete RT_MANGLER(RTCrRsaOtherPrimeInfos_Delete) +# define RTCrRsaOtherPrimeInfos_Enum RT_MANGLER(RTCrRsaOtherPrimeInfos_Enum) +# define RTCrRsaPrivateKey_Compare RT_MANGLER(RTCrRsaPrivateKey_Compare) +# define RTCrRsaPrivateKey_Delete RT_MANGLER(RTCrRsaPrivateKey_Delete) +# define RTCrRsaPrivateKey_Enum RT_MANGLER(RTCrRsaPrivateKey_Enum) +# define RTCrRsaPublicKey_Compare RT_MANGLER(RTCrRsaPublicKey_Compare) +# define RTCrRsaPublicKey_Delete RT_MANGLER(RTCrRsaPublicKey_Delete) +# define RTCrRsaPublicKey_Enum RT_MANGLER(RTCrRsaPublicKey_Enum) +# define RTCrRsaDigestInfo_Clone RT_MANGLER(RTCrRsaDigestInfo_Clone) +# define RTCrRsaDigestInfo_Init RT_MANGLER(RTCrRsaDigestInfo_Init) +# define RTCrRsaOtherPrimeInfo_Clone RT_MANGLER(RTCrRsaOtherPrimeInfo_Clone) +# define RTCrRsaOtherPrimeInfo_Init RT_MANGLER(RTCrRsaOtherPrimeInfo_Init) +# define RTCrRsaOtherPrimeInfos_Clone RT_MANGLER(RTCrRsaOtherPrimeInfos_Clone) +# define RTCrRsaOtherPrimeInfos_Init RT_MANGLER(RTCrRsaOtherPrimeInfos_Init) +# define RTCrRsaPrivateKey_Clone RT_MANGLER(RTCrRsaPrivateKey_Clone) +# define RTCrRsaPrivateKey_Init RT_MANGLER(RTCrRsaPrivateKey_Init) +# define RTCrRsaPublicKey_Clone RT_MANGLER(RTCrRsaPublicKey_Clone) +# define RTCrRsaPublicKey_Init RT_MANGLER(RTCrRsaPublicKey_Init) +# define RTCrRsaDigestInfo_CheckSanity RT_MANGLER(RTCrRsaDigestInfo_CheckSanity) +# define RTCrRsaOtherPrimeInfo_CheckSanity RT_MANGLER(RTCrRsaOtherPrimeInfo_CheckSanity) +# define RTCrRsaOtherPrimeInfos_CheckSanity RT_MANGLER(RTCrRsaOtherPrimeInfos_CheckSanity) +# define RTCrRsaPrivateKey_CheckSanity RT_MANGLER(RTCrRsaPrivateKey_CheckSanity) +# define RTCrRsaPublicKey_CheckSanity RT_MANGLER(RTCrRsaPublicKey_CheckSanity) +# define RTCrPemFreeSections RT_MANGLER(RTCrPemFreeSections) +# define RTCrPemParseContent RT_MANGLER(RTCrPemParseContent) +# define RTCrPemReadFile RT_MANGLER(RTCrPemReadFile) +# define RTCrPkcs7Attribute_DecodeAsn1 RT_MANGLER(RTCrPkcs7Attribute_DecodeAsn1) +# define RTCrPkcs7Attributes_DecodeAsn1 RT_MANGLER(RTCrPkcs7Attributes_DecodeAsn1) +# define RTCrPkcs7ContentInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7ContentInfo_DecodeAsn1) +# define RTCrPkcs7DigestInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7DigestInfo_DecodeAsn1) +# define RTCrPkcs7IssuerAndSerialNumber_DecodeAsn1 RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_DecodeAsn1) +# define RTCrPkcs7SignedData_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignedData_DecodeAsn1) +# define RTCrPkcs7SignerInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignerInfo_DecodeAsn1) +# define RTCrPkcs7SignerInfos_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignerInfos_DecodeAsn1) +# define RTCrPkcs7Attribute_Compare RT_MANGLER(RTCrPkcs7Attribute_Compare) +# define RTCrPkcs7Attribute_Delete RT_MANGLER(RTCrPkcs7Attribute_Delete) +# define RTCrPkcs7Attribute_Enum RT_MANGLER(RTCrPkcs7Attribute_Enum) +# define RTCrPkcs7Attributes_Compare RT_MANGLER(RTCrPkcs7Attributes_Compare) +# define RTCrPkcs7Attributes_Delete RT_MANGLER(RTCrPkcs7Attributes_Delete) +# define RTCrPkcs7Attributes_Enum RT_MANGLER(RTCrPkcs7Attributes_Enum) +# define RTCrPkcs7ContentInfo_Compare RT_MANGLER(RTCrPkcs7ContentInfo_Compare) +# define RTCrPkcs7ContentInfo_Delete RT_MANGLER(RTCrPkcs7ContentInfo_Delete) +# define RTCrPkcs7ContentInfo_Enum RT_MANGLER(RTCrPkcs7ContentInfo_Enum) +# define RTCrPkcs7ContentInfo_IsSignedData RT_MANGLER(RTCrPkcs7ContentInfo_IsSignedData) +# define RTCrPkcs7DigestInfo_Compare RT_MANGLER(RTCrPkcs7DigestInfo_Compare) +# define RTCrPkcs7DigestInfo_Delete RT_MANGLER(RTCrPkcs7DigestInfo_Delete) +# define RTCrPkcs7DigestInfo_Enum RT_MANGLER(RTCrPkcs7DigestInfo_Enum) +# define RTCrPkcs7IssuerAndSerialNumber_Compare RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Compare) +# define RTCrPkcs7IssuerAndSerialNumber_Delete RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Delete) +# define RTCrPkcs7IssuerAndSerialNumber_Enum RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Enum) +# define RTCrPkcs7SignedData_Compare RT_MANGLER(RTCrPkcs7SignedData_Compare) +# define RTCrPkcs7SignedData_Delete RT_MANGLER(RTCrPkcs7SignedData_Delete) +# define RTCrPkcs7SignedData_Enum RT_MANGLER(RTCrPkcs7SignedData_Enum) +# define RTCrPkcs7SignerInfo_Compare RT_MANGLER(RTCrPkcs7SignerInfo_Compare) +# define RTCrPkcs7SignerInfo_Delete RT_MANGLER(RTCrPkcs7SignerInfo_Delete) +# define RTCrPkcs7SignerInfo_Enum RT_MANGLER(RTCrPkcs7SignerInfo_Enum) +# define RTCrPkcs7SignerInfo_GetSigningTime RT_MANGLER(RTCrPkcs7SignerInfo_GetSigningTime) +# define RTCrPkcs7SignerInfo_GetMsTimestamp RT_MANGLER(RTCrPkcs7SignerInfo_GetMsTimestamp) +# define RTCrPkcs7SignerInfos_Compare RT_MANGLER(RTCrPkcs7SignerInfos_Compare) +# define RTCrPkcs7SignerInfos_Delete RT_MANGLER(RTCrPkcs7SignerInfos_Delete) +# define RTCrPkcs7SignerInfos_Enum RT_MANGLER(RTCrPkcs7SignerInfos_Enum) +# define RTCrPkcs7Attribute_Clone RT_MANGLER(RTCrPkcs7Attribute_Clone) +# define RTCrPkcs7Attribute_Init RT_MANGLER(RTCrPkcs7Attribute_Init) +# define RTCrPkcs7Attributes_Clone RT_MANGLER(RTCrPkcs7Attributes_Clone) +# define RTCrPkcs7Attributes_Init RT_MANGLER(RTCrPkcs7Attributes_Init) +# define RTCrPkcs7ContentInfo_Clone RT_MANGLER(RTCrPkcs7ContentInfo_Clone) +# define RTCrPkcs7ContentInfo_Init RT_MANGLER(RTCrPkcs7ContentInfo_Init) +# define RTCrPkcs7DigestInfo_Clone RT_MANGLER(RTCrPkcs7DigestInfo_Clone) +# define RTCrPkcs7DigestInfo_Init RT_MANGLER(RTCrPkcs7DigestInfo_Init) +# define RTCrPkcs7IssuerAndSerialNumber_Clone RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Clone) +# define RTCrPkcs7IssuerAndSerialNumber_Init RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Init) +# define RTCrPkcs7SignedData_Clone RT_MANGLER(RTCrPkcs7SignedData_Clone) +# define RTCrPkcs7SignedData_Init RT_MANGLER(RTCrPkcs7SignedData_Init) +# define RTCrPkcs7SignerInfo_Clone RT_MANGLER(RTCrPkcs7SignerInfo_Clone) +# define RTCrPkcs7SignerInfo_Init RT_MANGLER(RTCrPkcs7SignerInfo_Init) +# define RTCrPkcs7SignerInfos_Clone RT_MANGLER(RTCrPkcs7SignerInfos_Clone) +# define RTCrPkcs7SignerInfos_Init RT_MANGLER(RTCrPkcs7SignerInfos_Init) +# define RTCrPkcs7Attribute_CheckSanity RT_MANGLER(RTCrPkcs7Attribute_CheckSanity) +# define RTCrPkcs7Attributes_CheckSanity RT_MANGLER(RTCrPkcs7Attributes_CheckSanity) +# define RTCrPkcs7ContentInfo_CheckSanity RT_MANGLER(RTCrPkcs7ContentInfo_CheckSanity) +# define RTCrPkcs7DigestInfo_CheckSanity RT_MANGLER(RTCrPkcs7DigestInfo_CheckSanity) +# define RTCrPkcs7IssuerAndSerialNumber_CheckSanity RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_CheckSanity) +# define RTCrPkcs7SignedData_CheckSanity RT_MANGLER(RTCrPkcs7SignedData_CheckSanity) +# define RTCrPkcs7SignerInfo_CheckSanity RT_MANGLER(RTCrPkcs7SignerInfo_CheckSanity) +# define RTCrPkcs7SignerInfos_CheckSanity RT_MANGLER(RTCrPkcs7SignerInfos_CheckSanity) +# define RTCrPkcs7VerifyCertCallbackCodeSigning RT_MANGLER(RTCrPkcs7VerifyCertCallbackCodeSigning) +# define RTCrPkcs7VerifyCertCallbackDefault RT_MANGLER(RTCrPkcs7VerifyCertCallbackDefault) +# define RTCrPkcs7VerifySignedData RT_MANGLER(RTCrPkcs7VerifySignedData) +# define RTCrPkcs7Cert_CheckSanity RT_MANGLER(RTCrPkcs7Cert_CheckSanity) +# define RTCrPkcs7Cert_Clone RT_MANGLER(RTCrPkcs7Cert_Clone) +# define RTCrPkcs7Cert_Compare RT_MANGLER(RTCrPkcs7Cert_Compare) +# define RTCrPkcs7Cert_DecodeAsn1 RT_MANGLER(RTCrPkcs7Cert_DecodeAsn1) +# define RTCrPkcs7Cert_Delete RT_MANGLER(RTCrPkcs7Cert_Delete) +# define RTCrPkcs7Cert_Enum RT_MANGLER(RTCrPkcs7Cert_Enum) +# define RTCrPkcs7Cert_Init RT_MANGLER(RTCrPkcs7Cert_Init) +# define RTCrPkcs7SetOfCerts_CheckSanity RT_MANGLER(RTCrPkcs7SetOfCerts_CheckSanity) +# define RTCrPkcs7SetOfCerts_Clone RT_MANGLER(RTCrPkcs7SetOfCerts_Clone) +# define RTCrPkcs7SetOfCerts_Compare RT_MANGLER(RTCrPkcs7SetOfCerts_Compare) +# define RTCrPkcs7SetOfCerts_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfCerts_DecodeAsn1) +# define RTCrPkcs7SetOfCerts_Delete RT_MANGLER(RTCrPkcs7SetOfCerts_Delete) +# define RTCrPkcs7SetOfCerts_Enum RT_MANGLER(RTCrPkcs7SetOfCerts_Enum) +# define RTCrPkcs7SetOfCerts_Init RT_MANGLER(RTCrPkcs7SetOfCerts_Init) +# define RTCrPkcs7SetOfCerts_FindX509ByIssuerAndSerialNumber RT_MANGLER(RTCrPkcs7SetOfCerts_FindX509ByIssuerAndSerialNumber) +# define RTCrPkcs7SetOfContentInfos_CheckSanity RT_MANGLER(RTCrPkcs7SetOfContentInfos_CheckSanity) +# define RTCrPkcs7SetOfContentInfos_Clone RT_MANGLER(RTCrPkcs7SetOfContentInfos_Clone) +# define RTCrPkcs7SetOfContentInfos_Compare RT_MANGLER(RTCrPkcs7SetOfContentInfos_Compare) +# define RTCrPkcs7SetOfContentInfos_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfContentInfos_DecodeAsn1) +# define RTCrPkcs7SetOfContentInfos_Delete RT_MANGLER(RTCrPkcs7SetOfContentInfos_Delete) +# define RTCrPkcs7SetOfContentInfos_Enum RT_MANGLER(RTCrPkcs7SetOfContentInfos_Enum) +# define RTCrPkcs7SetOfContentInfos_Init RT_MANGLER(RTCrPkcs7SetOfContentInfos_Init) +# define RTCrPkcs7SetOfSignedData_CheckSanity RT_MANGLER(RTCrPkcs7SetOfSignedData_CheckSanity) +# define RTCrPkcs7SetOfSignedData_Clone RT_MANGLER(RTCrPkcs7SetOfSignedData_Clone) +# define RTCrPkcs7SetOfSignedData_Compare RT_MANGLER(RTCrPkcs7SetOfSignedData_Compare) +# define RTCrPkcs7SetOfSignedData_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfSignedData_DecodeAsn1) +# define RTCrPkcs7SetOfSignedData_Delete RT_MANGLER(RTCrPkcs7SetOfSignedData_Delete) +# define RTCrPkcs7SetOfSignedData_Enum RT_MANGLER(RTCrPkcs7SetOfSignedData_Enum) +# define RTCrPkcs7SetOfSignedData_Init RT_MANGLER(RTCrPkcs7SetOfSignedData_Init) +# define RTCrPkixSignatureCreateByObjId RT_MANGLER(RTCrPkixSignatureCreateByObjId) +# define RTCrPkixSignatureCreateByObjIdString RT_MANGLER(RTCrPkixSignatureCreateByObjIdString) +# define RTCrPkixSignatureCreate RT_MANGLER(RTCrPkixSignatureCreate) +# define RTCrPkixSignatureRelease RT_MANGLER(RTCrPkixSignatureRelease) +# define RTCrPkixSignatureRetain RT_MANGLER(RTCrPkixSignatureRetain) +# define RTCrPkixSignatureSign RT_MANGLER(RTCrPkixSignatureSign) +# define RTCrPkixSignatureVerify RT_MANGLER(RTCrPkixSignatureVerify) +# define RTCrPkixSignatureVerifyBitString RT_MANGLER(RTCrPkixSignatureVerifyBitString) +# define RTCrPkixSignatureVerifyOctetString RT_MANGLER(RTCrPkixSignatureVerifyOctetString) +# define RTCrPkixGetCiperOidFromSignatureAlgorithm RT_MANGLER(RTCrPkixGetCiperOidFromSignatureAlgorithm) +# define RTCrPkixPubKeyVerifySignature RT_MANGLER(RTCrPkixPubKeyVerifySignature) +# define RTCrSpcAttributeTypeAndOptionalValue_DecodeAsn1 RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_DecodeAsn1) +# define RTCrSpcIndirectDataContent_DecodeAsn1 RT_MANGLER(RTCrSpcIndirectDataContent_DecodeAsn1) +# define RTCrSpcLink_DecodeAsn1 RT_MANGLER(RTCrSpcLink_DecodeAsn1) +# define RTCrSpcPeImageData_DecodeAsn1 RT_MANGLER(RTCrSpcPeImageData_DecodeAsn1) +# define RTCrSpcSerializedObjectAttribute_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObjectAttribute_DecodeAsn1) +# define RTCrSpcSerializedObjectAttributes_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObjectAttributes_DecodeAsn1) +# define RTCrSpcSerializedObject_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObject_DecodeAsn1) +# define RTCrSpcSerializedPageHashes_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedPageHashes_DecodeAsn1) +# define RTCrSpcString_DecodeAsn1 RT_MANGLER(RTCrSpcString_DecodeAsn1) +# define RTCrSpcAttributeTypeAndOptionalValue_Compare RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Compare) +# define RTCrSpcAttributeTypeAndOptionalValue_Delete RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Delete) +# define RTCrSpcAttributeTypeAndOptionalValue_Enum RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Enum) +# define RTCrSpcIndirectDataContent_Compare RT_MANGLER(RTCrSpcIndirectDataContent_Compare) +# define RTCrSpcIndirectDataContent_Delete RT_MANGLER(RTCrSpcIndirectDataContent_Delete) +# define RTCrSpcIndirectDataContent_Enum RT_MANGLER(RTCrSpcIndirectDataContent_Enum) +# define RTCrSpcIndirectDataContent_GetPeImageObjAttrib RT_MANGLER(RTCrSpcIndirectDataContent_GetPeImageObjAttrib) +# define RTCrSpcLink_Compare RT_MANGLER(RTCrSpcLink_Compare) +# define RTCrSpcLink_Delete RT_MANGLER(RTCrSpcLink_Delete) +# define RTCrSpcLink_Enum RT_MANGLER(RTCrSpcLink_Enum) +# define RTCrSpcPeImageData_Compare RT_MANGLER(RTCrSpcPeImageData_Compare) +# define RTCrSpcPeImageData_Delete RT_MANGLER(RTCrSpcPeImageData_Delete) +# define RTCrSpcPeImageData_Enum RT_MANGLER(RTCrSpcPeImageData_Enum) +# define RTCrSpcSerializedObjectAttribute_Compare RT_MANGLER(RTCrSpcSerializedObjectAttribute_Compare) +# define RTCrSpcSerializedObjectAttribute_Delete RT_MANGLER(RTCrSpcSerializedObjectAttribute_Delete) +# define RTCrSpcSerializedObjectAttribute_Enum RT_MANGLER(RTCrSpcSerializedObjectAttribute_Enum) +# define RTCrSpcSerializedObjectAttributes_Compare RT_MANGLER(RTCrSpcSerializedObjectAttributes_Compare) +# define RTCrSpcSerializedObjectAttributes_Delete RT_MANGLER(RTCrSpcSerializedObjectAttributes_Delete) +# define RTCrSpcSerializedObjectAttributes_Enum RT_MANGLER(RTCrSpcSerializedObjectAttributes_Enum) +# define RTCrSpcSerializedObject_Compare RT_MANGLER(RTCrSpcSerializedObject_Compare) +# define RTCrSpcSerializedObject_Delete RT_MANGLER(RTCrSpcSerializedObject_Delete) +# define RTCrSpcSerializedObject_Enum RT_MANGLER(RTCrSpcSerializedObject_Enum) +# define RTCrSpcSerializedPageHashes_Compare RT_MANGLER(RTCrSpcSerializedPageHashes_Compare) +# define RTCrSpcSerializedPageHashes_Delete RT_MANGLER(RTCrSpcSerializedPageHashes_Delete) +# define RTCrSpcSerializedPageHashes_Enum RT_MANGLER(RTCrSpcSerializedPageHashes_Enum) +# define RTCrSpcSerializedPageHashes_UpdateDerivedData RT_MANGLER(RTCrSpcSerializedPageHashes_UpdateDerivedData) +# define RTCrSpcString_Compare RT_MANGLER(RTCrSpcString_Compare) +# define RTCrSpcString_Delete RT_MANGLER(RTCrSpcString_Delete) +# define RTCrSpcString_Enum RT_MANGLER(RTCrSpcString_Enum) +# define RTCrSpcAttributeTypeAndOptionalValue_Clone RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Clone) +# define RTCrSpcAttributeTypeAndOptionalValue_Init RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Init) +# define RTCrSpcIndirectDataContent_Clone RT_MANGLER(RTCrSpcIndirectDataContent_Clone) +# define RTCrSpcIndirectDataContent_Init RT_MANGLER(RTCrSpcIndirectDataContent_Init) +# define RTCrSpcLink_Clone RT_MANGLER(RTCrSpcLink_Clone) +# define RTCrSpcLink_Init RT_MANGLER(RTCrSpcLink_Init) +# define RTCrSpcPeImageData_Clone RT_MANGLER(RTCrSpcPeImageData_Clone) +# define RTCrSpcPeImageData_Init RT_MANGLER(RTCrSpcPeImageData_Init) +# define RTCrSpcSerializedObjectAttribute_Clone RT_MANGLER(RTCrSpcSerializedObjectAttribute_Clone) +# define RTCrSpcSerializedObjectAttribute_Init RT_MANGLER(RTCrSpcSerializedObjectAttribute_Init) +# define RTCrSpcSerializedObjectAttributes_Clone RT_MANGLER(RTCrSpcSerializedObjectAttributes_Clone) +# define RTCrSpcSerializedObjectAttributes_Init RT_MANGLER(RTCrSpcSerializedObjectAttributes_Init) +# define RTCrSpcSerializedObject_Clone RT_MANGLER(RTCrSpcSerializedObject_Clone) +# define RTCrSpcSerializedObject_Init RT_MANGLER(RTCrSpcSerializedObject_Init) +# define RTCrSpcSerializedPageHashes_Clone RT_MANGLER(RTCrSpcSerializedPageHashes_Clone) +# define RTCrSpcSerializedPageHashes_Init RT_MANGLER(RTCrSpcSerializedPageHashes_Init) +# define RTCrSpcString_Clone RT_MANGLER(RTCrSpcString_Clone) +# define RTCrSpcString_Init RT_MANGLER(RTCrSpcString_Init) +# define RTCrSpcAttributeTypeAndOptionalValue_CheckSanity RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_CheckSanity) +# define RTCrSpcIndirectDataContent_CheckSanity RT_MANGLER(RTCrSpcIndirectDataContent_CheckSanity) +# define RTCrSpcIndirectDataContent_CheckSanityEx RT_MANGLER(RTCrSpcIndirectDataContent_CheckSanityEx) +# define RTCrSpcLink_CheckSanity RT_MANGLER(RTCrSpcLink_CheckSanity) +# define RTCrSpcPeImageData_CheckSanity RT_MANGLER(RTCrSpcPeImageData_CheckSanity) +# define RTCrSpcSerializedObjectAttribute_CheckSanity RT_MANGLER(RTCrSpcSerializedObjectAttribute_CheckSanity) +# define RTCrSpcSerializedObjectAttributes_CheckSanity RT_MANGLER(RTCrSpcSerializedObjectAttributes_CheckSanity) +# define RTCrSpcSerializedObject_CheckSanity RT_MANGLER(RTCrSpcSerializedObject_CheckSanity) +# define RTCrSpcSerializedPageHashes_CheckSanity RT_MANGLER(RTCrSpcSerializedPageHashes_CheckSanity) +# define RTCrSpcString_CheckSanity RT_MANGLER(RTCrSpcString_CheckSanity) +# define RTCrX509AlgorithmIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509AlgorithmIdentifier_DecodeAsn1) +# define RTCrX509AlgorithmIdentifiers_DecodeAsn1 RT_MANGLER(RTCrX509AlgorithmIdentifiers_DecodeAsn1) +# define RTCrX509AttributeTypeAndValue_DecodeAsn1 RT_MANGLER(RTCrX509AttributeTypeAndValue_DecodeAsn1) +# define RTCrX509AttributeTypeAndValues_DecodeAsn1 RT_MANGLER(RTCrX509AttributeTypeAndValues_DecodeAsn1) +# define RTCrX509AuthorityKeyIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509AuthorityKeyIdentifier_DecodeAsn1) +# define RTCrX509BasicConstraints_DecodeAsn1 RT_MANGLER(RTCrX509BasicConstraints_DecodeAsn1) +# define RTCrX509CertificatePolicies_DecodeAsn1 RT_MANGLER(RTCrX509CertificatePolicies_DecodeAsn1) +# define RTCrX509Certificate_DecodeAsn1 RT_MANGLER(RTCrX509Certificate_DecodeAsn1) +# define RTCrX509Certificates_DecodeAsn1 RT_MANGLER(RTCrX509Certificates_DecodeAsn1) +# define RTCrX509Extension_DecodeAsn1 RT_MANGLER(RTCrX509Extension_DecodeAsn1) +# define RTCrX509Extension_ExtnValue_DecodeAsn1 RT_MANGLER(RTCrX509Extension_ExtnValue_DecodeAsn1) +# define RTCrX509Extensions_DecodeAsn1 RT_MANGLER(RTCrX509Extensions_DecodeAsn1) +# define RTCrX509GeneralName_DecodeAsn1 RT_MANGLER(RTCrX509GeneralName_DecodeAsn1) +# define RTCrX509GeneralNames_DecodeAsn1 RT_MANGLER(RTCrX509GeneralNames_DecodeAsn1) +# define RTCrX509GeneralSubtree_DecodeAsn1 RT_MANGLER(RTCrX509GeneralSubtree_DecodeAsn1) +# define RTCrX509GeneralSubtrees_DecodeAsn1 RT_MANGLER(RTCrX509GeneralSubtrees_DecodeAsn1) +# define RTCrX509NameConstraints_DecodeAsn1 RT_MANGLER(RTCrX509NameConstraints_DecodeAsn1) +# define RTCrX509Name_DecodeAsn1 RT_MANGLER(RTCrX509Name_DecodeAsn1) +# define RTCrX509OldAuthorityKeyIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_DecodeAsn1) +# define RTCrX509OtherName_DecodeAsn1 RT_MANGLER(RTCrX509OtherName_DecodeAsn1) +# define RTCrX509PolicyConstraints_DecodeAsn1 RT_MANGLER(RTCrX509PolicyConstraints_DecodeAsn1) +# define RTCrX509PolicyInformation_DecodeAsn1 RT_MANGLER(RTCrX509PolicyInformation_DecodeAsn1) +# define RTCrX509PolicyMapping_DecodeAsn1 RT_MANGLER(RTCrX509PolicyMapping_DecodeAsn1) +# define RTCrX509PolicyMappings_DecodeAsn1 RT_MANGLER(RTCrX509PolicyMappings_DecodeAsn1) +# define RTCrX509PolicyQualifierInfo_DecodeAsn1 RT_MANGLER(RTCrX509PolicyQualifierInfo_DecodeAsn1) +# define RTCrX509PolicyQualifierInfos_DecodeAsn1 RT_MANGLER(RTCrX509PolicyQualifierInfos_DecodeAsn1) +# define RTCrX509SubjectPublicKeyInfo_DecodeAsn1 RT_MANGLER(RTCrX509SubjectPublicKeyInfo_DecodeAsn1) +# define RTCrX509TbsCertificate_DecodeAsn1 RT_MANGLER(RTCrX509TbsCertificate_DecodeAsn1) +# define RTCrX509Validity_DecodeAsn1 RT_MANGLER(RTCrX509Validity_DecodeAsn1) +# define RTCrX509CertPathsBuild RT_MANGLER(RTCrX509CertPathsBuild) +# define RTCrX509CertPathsCreate RT_MANGLER(RTCrX509CertPathsCreate) +# define RTCrX509CertPathsCreateEx RT_MANGLER(RTCrX509CertPathsCreateEx) +# define RTCrX509CertPathsDumpAll RT_MANGLER(RTCrX509CertPathsDumpAll) +# define RTCrX509CertPathsDumpOne RT_MANGLER(RTCrX509CertPathsDumpOne) +# define RTCrX509CertPathsGetPathCount RT_MANGLER(RTCrX509CertPathsGetPathCount) +# define RTCrX509CertPathsGetPathLength RT_MANGLER(RTCrX509CertPathsGetPathLength) +# define RTCrX509CertPathsGetPathNodeCert RT_MANGLER(RTCrX509CertPathsGetPathNodeCert) +# define RTCrX509CertPathsGetPathVerifyResult RT_MANGLER(RTCrX509CertPathsGetPathVerifyResult) +# define RTCrX509CertPathsQueryPathInfo RT_MANGLER(RTCrX509CertPathsQueryPathInfo) +# define RTCrX509CertPathsRelease RT_MANGLER(RTCrX509CertPathsRelease) +# define RTCrX509CertPathsRetain RT_MANGLER(RTCrX509CertPathsRetain) +# define RTCrX509CertPathsSetTrustedStore RT_MANGLER(RTCrX509CertPathsSetTrustedStore) +# define RTCrX509CertPathsSetUntrustedArray RT_MANGLER(RTCrX509CertPathsSetUntrustedArray) +# define RTCrX509CertPathsSetUntrustedSet RT_MANGLER(RTCrX509CertPathsSetUntrustedSet) +# define RTCrX509CertPathsSetUntrustedStore RT_MANGLER(RTCrX509CertPathsSetUntrustedStore) +# define RTCrX509CertPathsSetValidTime RT_MANGLER(RTCrX509CertPathsSetValidTime) +# define RTCrX509CertPathsSetValidTimeSpec RT_MANGLER(RTCrX509CertPathsSetValidTimeSpec) +# define RTCrX509CertPathsValidateAll RT_MANGLER(RTCrX509CertPathsValidateAll) +# define RTCrX509CertPathsValidateOne RT_MANGLER(RTCrX509CertPathsValidateOne) +# define RTCrX509AlgorithmIdentifier_Compare RT_MANGLER(RTCrX509AlgorithmIdentifier_Compare) +# define RTCrX509AlgorithmIdentifier_CompareDigestAndEncryptedDigest RT_MANGLER(RTCrX509AlgorithmIdentifier_CompareDigestAndEncryptedDigest) +# define RTCrX509AlgorithmIdentifier_CompareWithString RT_MANGLER(RTCrX509AlgorithmIdentifier_CompareWithString) +# define RTCrX509AlgorithmIdentifier_Delete RT_MANGLER(RTCrX509AlgorithmIdentifier_Delete) +# define RTCrX509AlgorithmIdentifier_Enum RT_MANGLER(RTCrX509AlgorithmIdentifier_Enum) +# define RTCrX509AlgorithmIdentifier_QueryDigestSize RT_MANGLER(RTCrX509AlgorithmIdentifier_QueryDigestSize) +# define RTCrX509AlgorithmIdentifier_QueryDigestType RT_MANGLER(RTCrX509AlgorithmIdentifier_QueryDigestType) +# define RTCrX509AlgorithmIdentifiers_Compare RT_MANGLER(RTCrX509AlgorithmIdentifiers_Compare) +# define RTCrX509AlgorithmIdentifiers_Delete RT_MANGLER(RTCrX509AlgorithmIdentifiers_Delete) +# define RTCrX509AlgorithmIdentifiers_Enum RT_MANGLER(RTCrX509AlgorithmIdentifiers_Enum) +# define RTCrX509AttributeTypeAndValue_Compare RT_MANGLER(RTCrX509AttributeTypeAndValue_Compare) +# define RTCrX509AttributeTypeAndValue_Delete RT_MANGLER(RTCrX509AttributeTypeAndValue_Delete) +# define RTCrX509AttributeTypeAndValue_Enum RT_MANGLER(RTCrX509AttributeTypeAndValue_Enum) +# define RTCrX509AttributeTypeAndValues_Compare RT_MANGLER(RTCrX509AttributeTypeAndValues_Compare) +# define RTCrX509AttributeTypeAndValues_Delete RT_MANGLER(RTCrX509AttributeTypeAndValues_Delete) +# define RTCrX509AttributeTypeAndValues_Enum RT_MANGLER(RTCrX509AttributeTypeAndValues_Enum) +# define RTCrX509AuthorityKeyIdentifier_Compare RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Compare) +# define RTCrX509AuthorityKeyIdentifier_Delete RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Delete) +# define RTCrX509AuthorityKeyIdentifier_Enum RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Enum) +# define RTCrX509BasicConstraints_Compare RT_MANGLER(RTCrX509BasicConstraints_Compare) +# define RTCrX509BasicConstraints_Delete RT_MANGLER(RTCrX509BasicConstraints_Delete) +# define RTCrX509BasicConstraints_Enum RT_MANGLER(RTCrX509BasicConstraints_Enum) +# define RTCrX509CertificatePolicies_Compare RT_MANGLER(RTCrX509CertificatePolicies_Compare) +# define RTCrX509CertificatePolicies_Delete RT_MANGLER(RTCrX509CertificatePolicies_Delete) +# define RTCrX509CertificatePolicies_Enum RT_MANGLER(RTCrX509CertificatePolicies_Enum) +# define RTCrX509Certificate_Compare RT_MANGLER(RTCrX509Certificate_Compare) +# define RTCrX509Certificate_Delete RT_MANGLER(RTCrX509Certificate_Delete) +# define RTCrX509Certificate_Enum RT_MANGLER(RTCrX509Certificate_Enum) +# define RTCrX509Certificate_IsSelfSigned RT_MANGLER(RTCrX509Certificate_IsSelfSigned) +# define RTCrX509Certificate_MatchIssuerAndSerialNumber RT_MANGLER(RTCrX509Certificate_MatchIssuerAndSerialNumber) +# define RTCrX509Certificate_MatchSubjectOrAltSubjectByRfc5280 RT_MANGLER(RTCrX509Certificate_MatchSubjectOrAltSubjectByRfc5280) +# define RTCrX509Certificates_Compare RT_MANGLER(RTCrX509Certificates_Compare) +# define RTCrX509Certificates_Delete RT_MANGLER(RTCrX509Certificates_Delete) +# define RTCrX509Certificates_Enum RT_MANGLER(RTCrX509Certificates_Enum) +# define RTCrX509Certificates_FindByIssuerAndSerialNumber RT_MANGLER(RTCrX509Certificates_FindByIssuerAndSerialNumber) +# define RTCrX509Extension_Compare RT_MANGLER(RTCrX509Extension_Compare) +# define RTCrX509Extension_Delete RT_MANGLER(RTCrX509Extension_Delete) +# define RTCrX509Extension_Enum RT_MANGLER(RTCrX509Extension_Enum) +# define RTCrX509Extensions_Compare RT_MANGLER(RTCrX509Extensions_Compare) +# define RTCrX509Extensions_Delete RT_MANGLER(RTCrX509Extensions_Delete) +# define RTCrX509Extensions_Enum RT_MANGLER(RTCrX509Extensions_Enum) +# define RTCrX509GeneralName_Compare RT_MANGLER(RTCrX509GeneralName_Compare) +# define RTCrX509GeneralName_ConstraintMatch RT_MANGLER(RTCrX509GeneralName_ConstraintMatch) +# define RTCrX509GeneralName_Delete RT_MANGLER(RTCrX509GeneralName_Delete) +# define RTCrX509GeneralName_Enum RT_MANGLER(RTCrX509GeneralName_Enum) +# define RTCrX509GeneralNames_Compare RT_MANGLER(RTCrX509GeneralNames_Compare) +# define RTCrX509GeneralNames_Delete RT_MANGLER(RTCrX509GeneralNames_Delete) +# define RTCrX509GeneralNames_Enum RT_MANGLER(RTCrX509GeneralNames_Enum) +# define RTCrX509GeneralSubtree_Compare RT_MANGLER(RTCrX509GeneralSubtree_Compare) +# define RTCrX509GeneralSubtree_ConstraintMatch RT_MANGLER(RTCrX509GeneralSubtree_ConstraintMatch) +# define RTCrX509GeneralSubtree_Delete RT_MANGLER(RTCrX509GeneralSubtree_Delete) +# define RTCrX509GeneralSubtree_Enum RT_MANGLER(RTCrX509GeneralSubtree_Enum) +# define RTCrX509GeneralSubtrees_Compare RT_MANGLER(RTCrX509GeneralSubtrees_Compare) +# define RTCrX509GeneralSubtrees_Delete RT_MANGLER(RTCrX509GeneralSubtrees_Delete) +# define RTCrX509GeneralSubtrees_Enum RT_MANGLER(RTCrX509GeneralSubtrees_Enum) +# define RTCrX509NameConstraints_Compare RT_MANGLER(RTCrX509NameConstraints_Compare) +# define RTCrX509NameConstraints_Delete RT_MANGLER(RTCrX509NameConstraints_Delete) +# define RTCrX509NameConstraints_Enum RT_MANGLER(RTCrX509NameConstraints_Enum) +# define RTCrX509Name_Compare RT_MANGLER(RTCrX509Name_Compare) +# define RTCrX509Name_ConstraintMatch RT_MANGLER(RTCrX509Name_ConstraintMatch) +# define RTCrX509Name_Delete RT_MANGLER(RTCrX509Name_Delete) +# define RTCrX509Name_Enum RT_MANGLER(RTCrX509Name_Enum) +# define RTCrX509Name_FormatAsString RT_MANGLER(RTCrX509Name_FormatAsString) +# define RTCrX509Name_MatchByRfc5280 RT_MANGLER(RTCrX509Name_MatchByRfc5280) +# define RTCrX509Name_MatchWithString RT_MANGLER(RTCrX509Name_MatchWithString) +# define RTCrX509OldAuthorityKeyIdentifier_Compare RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Compare) +# define RTCrX509OldAuthorityKeyIdentifier_Delete RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Delete) +# define RTCrX509OldAuthorityKeyIdentifier_Enum RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Enum) +# define RTCrX509OtherName_Compare RT_MANGLER(RTCrX509OtherName_Compare) +# define RTCrX509OtherName_Delete RT_MANGLER(RTCrX509OtherName_Delete) +# define RTCrX509OtherName_Enum RT_MANGLER(RTCrX509OtherName_Enum) +# define RTCrX509PolicyConstraints_Compare RT_MANGLER(RTCrX509PolicyConstraints_Compare) +# define RTCrX509PolicyConstraints_Delete RT_MANGLER(RTCrX509PolicyConstraints_Delete) +# define RTCrX509PolicyConstraints_Enum RT_MANGLER(RTCrX509PolicyConstraints_Enum) +# define RTCrX509PolicyInformation_Compare RT_MANGLER(RTCrX509PolicyInformation_Compare) +# define RTCrX509PolicyInformation_Delete RT_MANGLER(RTCrX509PolicyInformation_Delete) +# define RTCrX509PolicyInformation_Enum RT_MANGLER(RTCrX509PolicyInformation_Enum) +# define RTCrX509PolicyMapping_Compare RT_MANGLER(RTCrX509PolicyMapping_Compare) +# define RTCrX509PolicyMapping_Delete RT_MANGLER(RTCrX509PolicyMapping_Delete) +# define RTCrX509PolicyMapping_Enum RT_MANGLER(RTCrX509PolicyMapping_Enum) +# define RTCrX509PolicyMappings_Compare RT_MANGLER(RTCrX509PolicyMappings_Compare) +# define RTCrX509PolicyMappings_Delete RT_MANGLER(RTCrX509PolicyMappings_Delete) +# define RTCrX509PolicyMappings_Enum RT_MANGLER(RTCrX509PolicyMappings_Enum) +# define RTCrX509PolicyQualifierInfo_Compare RT_MANGLER(RTCrX509PolicyQualifierInfo_Compare) +# define RTCrX509PolicyQualifierInfo_Delete RT_MANGLER(RTCrX509PolicyQualifierInfo_Delete) +# define RTCrX509PolicyQualifierInfo_Enum RT_MANGLER(RTCrX509PolicyQualifierInfo_Enum) +# define RTCrX509PolicyQualifierInfos_Compare RT_MANGLER(RTCrX509PolicyQualifierInfos_Compare) +# define RTCrX509PolicyQualifierInfos_Delete RT_MANGLER(RTCrX509PolicyQualifierInfos_Delete) +# define RTCrX509PolicyQualifierInfos_Enum RT_MANGLER(RTCrX509PolicyQualifierInfos_Enum) +# define RTCrX509SubjectPublicKeyInfo_Compare RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Compare) +# define RTCrX509SubjectPublicKeyInfo_Delete RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Delete) +# define RTCrX509SubjectPublicKeyInfo_Enum RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Enum) +# define RTCrX509TbsCertificate_Compare RT_MANGLER(RTCrX509TbsCertificate_Compare) +# define RTCrX509TbsCertificate_Delete RT_MANGLER(RTCrX509TbsCertificate_Delete) +# define RTCrX509TbsCertificate_Enum RT_MANGLER(RTCrX509TbsCertificate_Enum) +# define RTCrX509TbsCertificate_ReprocessExtensions RT_MANGLER(RTCrX509TbsCertificate_ReprocessExtensions) +# define RTCrX509Validity_Compare RT_MANGLER(RTCrX509Validity_Compare) +# define RTCrX509Validity_Delete RT_MANGLER(RTCrX509Validity_Delete) +# define RTCrX509Validity_Enum RT_MANGLER(RTCrX509Validity_Enum) +# define RTCrX509Validity_IsValidAtTimeSpec RT_MANGLER(RTCrX509Validity_IsValidAtTimeSpec) +# define RTCrX509Certificate_ReadFromFile RT_MANGLER(RTCrX509Certificate_ReadFromFile) +# define RTCrX509AlgorithmIdentifier_Clone RT_MANGLER(RTCrX509AlgorithmIdentifier_Clone) +# define RTCrX509AlgorithmIdentifier_Init RT_MANGLER(RTCrX509AlgorithmIdentifier_Init) +# define RTCrX509AlgorithmIdentifiers_Clone RT_MANGLER(RTCrX509AlgorithmIdentifiers_Clone) +# define RTCrX509AlgorithmIdentifiers_Init RT_MANGLER(RTCrX509AlgorithmIdentifiers_Init) +# define RTCrX509AttributeTypeAndValue_Clone RT_MANGLER(RTCrX509AttributeTypeAndValue_Clone) +# define RTCrX509AttributeTypeAndValue_Init RT_MANGLER(RTCrX509AttributeTypeAndValue_Init) +# define RTCrX509AttributeTypeAndValues_Clone RT_MANGLER(RTCrX509AttributeTypeAndValues_Clone) +# define RTCrX509AttributeTypeAndValues_Init RT_MANGLER(RTCrX509AttributeTypeAndValues_Init) +# define RTCrX509AuthorityKeyIdentifier_Clone RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Clone) +# define RTCrX509AuthorityKeyIdentifier_Init RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Init) +# define RTCrX509BasicConstraints_Clone RT_MANGLER(RTCrX509BasicConstraints_Clone) +# define RTCrX509BasicConstraints_Init RT_MANGLER(RTCrX509BasicConstraints_Init) +# define RTCrX509CertificatePolicies_Clone RT_MANGLER(RTCrX509CertificatePolicies_Clone) +# define RTCrX509CertificatePolicies_Init RT_MANGLER(RTCrX509CertificatePolicies_Init) +# define RTCrX509Certificate_Clone RT_MANGLER(RTCrX509Certificate_Clone) +# define RTCrX509Certificate_Init RT_MANGLER(RTCrX509Certificate_Init) +# define RTCrX509Certificates_Clone RT_MANGLER(RTCrX509Certificates_Clone) +# define RTCrX509Certificates_Init RT_MANGLER(RTCrX509Certificates_Init) +# define RTCrX509Extension_Clone RT_MANGLER(RTCrX509Extension_Clone) +# define RTCrX509Extension_Init RT_MANGLER(RTCrX509Extension_Init) +# define RTCrX509Extensions_Clone RT_MANGLER(RTCrX509Extensions_Clone) +# define RTCrX509Extensions_Init RT_MANGLER(RTCrX509Extensions_Init) +# define RTCrX509GeneralName_Clone RT_MANGLER(RTCrX509GeneralName_Clone) +# define RTCrX509GeneralName_Init RT_MANGLER(RTCrX509GeneralName_Init) +# define RTCrX509GeneralNames_Clone RT_MANGLER(RTCrX509GeneralNames_Clone) +# define RTCrX509GeneralNames_Init RT_MANGLER(RTCrX509GeneralNames_Init) +# define RTCrX509GeneralSubtree_Clone RT_MANGLER(RTCrX509GeneralSubtree_Clone) +# define RTCrX509GeneralSubtree_Init RT_MANGLER(RTCrX509GeneralSubtree_Init) +# define RTCrX509GeneralSubtrees_Clone RT_MANGLER(RTCrX509GeneralSubtrees_Clone) +# define RTCrX509GeneralSubtrees_Init RT_MANGLER(RTCrX509GeneralSubtrees_Init) +# define RTCrX509NameConstraints_Clone RT_MANGLER(RTCrX509NameConstraints_Clone) +# define RTCrX509NameConstraints_Init RT_MANGLER(RTCrX509NameConstraints_Init) +# define RTCrX509Name_Clone RT_MANGLER(RTCrX509Name_Clone) +# define RTCrX509Name_Init RT_MANGLER(RTCrX509Name_Init) +# define RTCrX509Name_RecodeAsUtf8 RT_MANGLER(RTCrX509Name_RecodeAsUtf8) +# define RTCrX509OldAuthorityKeyIdentifier_Clone RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Clone) +# define RTCrX509OldAuthorityKeyIdentifier_Init RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Init) +# define RTCrX509OtherName_Clone RT_MANGLER(RTCrX509OtherName_Clone) +# define RTCrX509OtherName_Init RT_MANGLER(RTCrX509OtherName_Init) +# define RTCrX509PolicyConstraints_Clone RT_MANGLER(RTCrX509PolicyConstraints_Clone) +# define RTCrX509PolicyConstraints_Init RT_MANGLER(RTCrX509PolicyConstraints_Init) +# define RTCrX509PolicyInformation_Clone RT_MANGLER(RTCrX509PolicyInformation_Clone) +# define RTCrX509PolicyInformation_Init RT_MANGLER(RTCrX509PolicyInformation_Init) +# define RTCrX509PolicyMapping_Clone RT_MANGLER(RTCrX509PolicyMapping_Clone) +# define RTCrX509PolicyMapping_Init RT_MANGLER(RTCrX509PolicyMapping_Init) +# define RTCrX509PolicyMappings_Clone RT_MANGLER(RTCrX509PolicyMappings_Clone) +# define RTCrX509PolicyMappings_Init RT_MANGLER(RTCrX509PolicyMappings_Init) +# define RTCrX509PolicyQualifierInfo_Clone RT_MANGLER(RTCrX509PolicyQualifierInfo_Clone) +# define RTCrX509PolicyQualifierInfo_Init RT_MANGLER(RTCrX509PolicyQualifierInfo_Init) +# define RTCrX509PolicyQualifierInfos_Clone RT_MANGLER(RTCrX509PolicyQualifierInfos_Clone) +# define RTCrX509PolicyQualifierInfos_Init RT_MANGLER(RTCrX509PolicyQualifierInfos_Init) +# define RTCrX509SubjectPublicKeyInfo_Clone RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Clone) +# define RTCrX509SubjectPublicKeyInfo_Init RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Init) +# define RTCrX509TbsCertificate_Clone RT_MANGLER(RTCrX509TbsCertificate_Clone) +# define RTCrX509TbsCertificate_Init RT_MANGLER(RTCrX509TbsCertificate_Init) +# define RTCrX509Validity_Clone RT_MANGLER(RTCrX509Validity_Clone) +# define RTCrX509Validity_Init RT_MANGLER(RTCrX509Validity_Init) +# define RTCrX509AlgorithmIdentifier_CheckSanity RT_MANGLER(RTCrX509AlgorithmIdentifier_CheckSanity) +# define RTCrX509AlgorithmIdentifiers_CheckSanity RT_MANGLER(RTCrX509AlgorithmIdentifiers_CheckSanity) +# define RTCrX509AttributeTypeAndValue_CheckSanity RT_MANGLER(RTCrX509AttributeTypeAndValue_CheckSanity) +# define RTCrX509AttributeTypeAndValues_CheckSanity RT_MANGLER(RTCrX509AttributeTypeAndValues_CheckSanity) +# define RTCrX509AuthorityKeyIdentifier_CheckSanity RT_MANGLER(RTCrX509AuthorityKeyIdentifier_CheckSanity) +# define RTCrX509BasicConstraints_CheckSanity RT_MANGLER(RTCrX509BasicConstraints_CheckSanity) +# define RTCrX509CertificatePolicies_CheckSanity RT_MANGLER(RTCrX509CertificatePolicies_CheckSanity) +# define RTCrX509Certificate_CheckSanity RT_MANGLER(RTCrX509Certificate_CheckSanity) +# define RTCrX509Certificates_CheckSanity RT_MANGLER(RTCrX509Certificates_CheckSanity) +# define RTCrX509Extension_CheckSanity RT_MANGLER(RTCrX509Extension_CheckSanity) +# define RTCrX509Extensions_CheckSanity RT_MANGLER(RTCrX509Extensions_CheckSanity) +# define RTCrX509GeneralName_CheckSanity RT_MANGLER(RTCrX509GeneralName_CheckSanity) +# define RTCrX509GeneralNames_CheckSanity RT_MANGLER(RTCrX509GeneralNames_CheckSanity) +# define RTCrX509GeneralSubtree_CheckSanity RT_MANGLER(RTCrX509GeneralSubtree_CheckSanity) +# define RTCrX509GeneralSubtrees_CheckSanity RT_MANGLER(RTCrX509GeneralSubtrees_CheckSanity) +# define RTCrX509NameConstraints_CheckSanity RT_MANGLER(RTCrX509NameConstraints_CheckSanity) +# define RTCrX509Name_CheckSanity RT_MANGLER(RTCrX509Name_CheckSanity) +# define RTCrX509OldAuthorityKeyIdentifier_CheckSanity RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_CheckSanity) +# define RTCrX509OtherName_CheckSanity RT_MANGLER(RTCrX509OtherName_CheckSanity) +# define RTCrX509PolicyConstraints_CheckSanity RT_MANGLER(RTCrX509PolicyConstraints_CheckSanity) +# define RTCrX509PolicyInformation_CheckSanity RT_MANGLER(RTCrX509PolicyInformation_CheckSanity) +# define RTCrX509PolicyMapping_CheckSanity RT_MANGLER(RTCrX509PolicyMapping_CheckSanity) +# define RTCrX509PolicyMappings_CheckSanity RT_MANGLER(RTCrX509PolicyMappings_CheckSanity) +# define RTCrX509PolicyQualifierInfo_CheckSanity RT_MANGLER(RTCrX509PolicyQualifierInfo_CheckSanity) +# define RTCrX509PolicyQualifierInfos_CheckSanity RT_MANGLER(RTCrX509PolicyQualifierInfos_CheckSanity) +# define RTCrX509SubjectPublicKeyInfo_CheckSanity RT_MANGLER(RTCrX509SubjectPublicKeyInfo_CheckSanity) +# define RTCrX509TbsCertificate_CheckSanity RT_MANGLER(RTCrX509TbsCertificate_CheckSanity) +# define RTCrX509Validity_CheckSanity RT_MANGLER(RTCrX509Validity_CheckSanity) +# define RTCrX509Certificate_VerifySignature RT_MANGLER(RTCrX509Certificate_VerifySignature) +# define RTCrTafCertPathControls_DecodeAsn1 RT_MANGLER(RTCrTafCertPathControls_DecodeAsn1) +# define RTCrTafTrustAnchorChoice_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorChoice_DecodeAsn1) +# define RTCrTafTrustAnchorInfo_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorInfo_DecodeAsn1) +# define RTCrTafTrustAnchorList_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorList_DecodeAsn1) +# define RTCrTafCertPathControls_Compare RT_MANGLER(RTCrTafCertPathControls_Compare) +# define RTCrTafCertPathControls_Delete RT_MANGLER(RTCrTafCertPathControls_Delete) +# define RTCrTafCertPathControls_Enum RT_MANGLER(RTCrTafCertPathControls_Enum) +# define RTCrTafTrustAnchorChoice_Compare RT_MANGLER(RTCrTafTrustAnchorChoice_Compare) +# define RTCrTafTrustAnchorChoice_Delete RT_MANGLER(RTCrTafTrustAnchorChoice_Delete) +# define RTCrTafTrustAnchorChoice_Enum RT_MANGLER(RTCrTafTrustAnchorChoice_Enum) +# define RTCrTafTrustAnchorInfo_Compare RT_MANGLER(RTCrTafTrustAnchorInfo_Compare) +# define RTCrTafTrustAnchorInfo_Delete RT_MANGLER(RTCrTafTrustAnchorInfo_Delete) +# define RTCrTafTrustAnchorInfo_Enum RT_MANGLER(RTCrTafTrustAnchorInfo_Enum) +# define RTCrTafTrustAnchorList_Compare RT_MANGLER(RTCrTafTrustAnchorList_Compare) +# define RTCrTafTrustAnchorList_Delete RT_MANGLER(RTCrTafTrustAnchorList_Delete) +# define RTCrTafTrustAnchorList_Enum RT_MANGLER(RTCrTafTrustAnchorList_Enum) +# define RTCrTafCertPathControls_Clone RT_MANGLER(RTCrTafCertPathControls_Clone) +# define RTCrTafCertPathControls_Init RT_MANGLER(RTCrTafCertPathControls_Init) +# define RTCrTafTrustAnchorChoice_Clone RT_MANGLER(RTCrTafTrustAnchorChoice_Clone) +# define RTCrTafTrustAnchorChoice_Init RT_MANGLER(RTCrTafTrustAnchorChoice_Init) +# define RTCrTafTrustAnchorInfo_Clone RT_MANGLER(RTCrTafTrustAnchorInfo_Clone) +# define RTCrTafTrustAnchorInfo_Init RT_MANGLER(RTCrTafTrustAnchorInfo_Init) +# define RTCrTafTrustAnchorList_Clone RT_MANGLER(RTCrTafTrustAnchorList_Clone) +# define RTCrTafTrustAnchorList_Init RT_MANGLER(RTCrTafTrustAnchorList_Init) +# define RTCrTafCertPathControls_CheckSanity RT_MANGLER(RTCrTafCertPathControls_CheckSanity) +# define RTCrTafTrustAnchorChoice_CheckSanity RT_MANGLER(RTCrTafTrustAnchorChoice_CheckSanity) +# define RTCrTafTrustAnchorInfo_CheckSanity RT_MANGLER(RTCrTafTrustAnchorInfo_CheckSanity) +# define RTCrTafTrustAnchorList_CheckSanity RT_MANGLER(RTCrTafTrustAnchorList_CheckSanity) +# define RTCrTspAccuracy_CheckSanity RT_MANGLER(RTCrTspAccuracy_CheckSanity) +# define RTCrTspAccuracy_Clone RT_MANGLER(RTCrTspAccuracy_Clone) +# define RTCrTspAccuracy_Compare RT_MANGLER(RTCrTspAccuracy_Compare) +# define RTCrTspAccuracy_DecodeAsn1 RT_MANGLER(RTCrTspAccuracy_DecodeAsn1) +# define RTCrTspAccuracy_Delete RT_MANGLER(RTCrTspAccuracy_Delete) +# define RTCrTspAccuracy_Enum RT_MANGLER(RTCrTspAccuracy_Enum) +# define RTCrTspAccuracy_Init RT_MANGLER(RTCrTspAccuracy_Init) +# define RTCrTspMessageImprint_CheckSanity RT_MANGLER(RTCrTspMessageImprint_CheckSanity) +# define RTCrTspMessageImprint_Clone RT_MANGLER(RTCrTspMessageImprint_Clone) +# define RTCrTspMessageImprint_Compare RT_MANGLER(RTCrTspMessageImprint_Compare) +# define RTCrTspMessageImprint_DecodeAsn1 RT_MANGLER(RTCrTspMessageImprint_DecodeAsn1) +# define RTCrTspMessageImprint_Delete RT_MANGLER(RTCrTspMessageImprint_Delete) +# define RTCrTspMessageImprint_Enum RT_MANGLER(RTCrTspMessageImprint_Enum) +# define RTCrTspMessageImprint_Init RT_MANGLER(RTCrTspMessageImprint_Init) +# define RTCrTspTstInfo_CheckSanity RT_MANGLER(RTCrTspTstInfo_CheckSanity) +# define RTCrTspTstInfo_Clone RT_MANGLER(RTCrTspTstInfo_Clone) +# define RTCrTspTstInfo_Compare RT_MANGLER(RTCrTspTstInfo_Compare) +# define RTCrTspTstInfo_DecodeAsn1 RT_MANGLER(RTCrTspTstInfo_DecodeAsn1) +# define RTCrTspTstInfo_Delete RT_MANGLER(RTCrTspTstInfo_Delete) +# define RTCrTspTstInfo_Enum RT_MANGLER(RTCrTspTstInfo_Enum) +# define RTCrTspTstInfo_Init RT_MANGLER(RTCrTspTstInfo_Init) +# define RTCrCertCtxRelease RT_MANGLER(RTCrCertCtxRelease) +# define RTCrCertCtxRetain RT_MANGLER(RTCrCertCtxRetain) +# define RTCrStoreCertAddEncoded RT_MANGLER(RTCrStoreCertAddEncoded) +# define RTCrStoreCertByIssuerAndSerialNo RT_MANGLER(RTCrStoreCertByIssuerAndSerialNo) +# define RTCrStoreCertCount RT_MANGLER(RTCrStoreCertCount) +# define RTCrStoreCertFindAll RT_MANGLER(RTCrStoreCertFindAll) +# define RTCrStoreCertFindBySubjectOrAltSubjectByRfc5280 RT_MANGLER(RTCrStoreCertFindBySubjectOrAltSubjectByRfc5280) +# define RTCrStoreCertSearchDestroy RT_MANGLER(RTCrStoreCertSearchDestroy) +# define RTCrStoreCertSearchNext RT_MANGLER(RTCrStoreCertSearchNext) +# define RTCrStoreConvertToOpenSslCertStack RT_MANGLER(RTCrStoreConvertToOpenSslCertStack) +# define RTCrStoreConvertToOpenSslCertStore RT_MANGLER(RTCrStoreConvertToOpenSslCertStore) +# define RTCrStoreRelease RT_MANGLER(RTCrStoreRelease) +# define RTCrStoreRetain RT_MANGLER(RTCrStoreRetain) +# define RTCrStoreCreateInMem RT_MANGLER(RTCrStoreCreateInMem) +# define RTCrStoreCreateSnapshotById RT_MANGLER(RTCrStoreCreateSnapshotById) +# define RTCrStoreCertAddFromDir RT_MANGLER(RTCrStoreCertAddFromDir) +# define RTCrStoreCertAddFromFile RT_MANGLER(RTCrStoreCertAddFromFile) +# define RTCrStoreCertAddFromJavaKeyStore RT_MANGLER(RTCrStoreCertAddFromJavaKeyStore) +# define RTCrStoreCertAddFromJavaKeyStoreInMem RT_MANGLER(RTCrStoreCertAddFromJavaKeyStoreInMem) +# define RTCrStoreCertAddFromStore RT_MANGLER(RTCrStoreCertAddFromStore) +# define RTCrStoreCertAddWantedFromDir RT_MANGLER(RTCrStoreCertAddWantedFromDir) +# define RTCrStoreCertAddWantedFromFile RT_MANGLER(RTCrStoreCertAddWantedFromFile) +# define RTCrStoreCertAddWantedFromStore RT_MANGLER(RTCrStoreCertAddWantedFromStore) +# define RTCrStoreCertAddWantedFromFishingExpedition RT_MANGLER(RTCrStoreCertAddWantedFromFishingExpedition) +# define RTCrStoreCertCheckWanted RT_MANGLER(RTCrStoreCertCheckWanted) +# define RTCrStoreCertExportAsPem RT_MANGLER(RTCrStoreCertExportAsPem) +# define RTErrInfoAdd RT_MANGLER(RTErrInfoAdd) +# define RTErrInfoAddF RT_MANGLER(RTErrInfoAddF) +# define RTErrInfoAddV RT_MANGLER(RTErrInfoAddV) +# define RTLdrHashImage RT_MANGLER(RTLdrHashImage) +# define RTLdrOpenWithReader RT_MANGLER(RTLdrOpenWithReader) +# define RTLdrQueryPropEx RT_MANGLER(RTLdrQueryPropEx) +# define RTLdrVerifySignature RT_MANGLER(RTLdrVerifySignature) +# define RTBigNumAdd RT_MANGLER(RTBigNumAdd) +# define RTBigNumAssign RT_MANGLER(RTBigNumAssign) +# define RTBigNumBitWidth RT_MANGLER(RTBigNumBitWidth) +# define RTBigNumByteWidth RT_MANGLER(RTBigNumByteWidth) +# define RTBigNumClone RT_MANGLER(RTBigNumClone) +# define RTBigNumCompare RT_MANGLER(RTBigNumCompare) +# define RTBigNumCompareWithS64 RT_MANGLER(RTBigNumCompareWithS64) +# define RTBigNumCompareWithU64 RT_MANGLER(RTBigNumCompareWithU64) +# define RTBigNumDestroy RT_MANGLER(RTBigNumDestroy) +# define RTBigNumDivide RT_MANGLER(RTBigNumDivide) +# define RTBigNumDivideKnuth RT_MANGLER(RTBigNumDivideKnuth) +# define RTBigNumDivideLong RT_MANGLER(RTBigNumDivideLong) +# define RTBigNumExponentiate RT_MANGLER(RTBigNumExponentiate) +# define RTBigNumInit RT_MANGLER(RTBigNumInit) +# define RTBigNumInitZero RT_MANGLER(RTBigNumInitZero) +# define RTBigNumModExp RT_MANGLER(RTBigNumModExp) +# define RTBigNumModulo RT_MANGLER(RTBigNumModulo) +# define RTBigNumMultiply RT_MANGLER(RTBigNumMultiply) +# define RTBigNumNegate RT_MANGLER(RTBigNumNegate) +# define RTBigNumNegateThis RT_MANGLER(RTBigNumNegateThis) +# define RTBigNumShiftLeft RT_MANGLER(RTBigNumShiftLeft) +# define RTBigNumShiftRight RT_MANGLER(RTBigNumShiftRight) +# define RTBigNumSubtract RT_MANGLER(RTBigNumSubtract) +# define RTBigNumToBytesBigEndian RT_MANGLER(RTBigNumToBytesBigEndian) +# define RTUInt128MulByU64 RT_MANGLER(RTUInt128MulByU64) +# define RTUInt128MulByU64_EndProc RT_MANGLER(RTUInt128MulByU64_EndProc) +# define RTUtf16Copy RT_MANGLER(RTUtf16Copy) +# define RTUtf16CopyAscii RT_MANGLER(RTUtf16CopyAscii) +# define RTUtf16Cat RT_MANGLER(RTUtf16Cat) +# define RTUtf16CatAscii RT_MANGLER(RTUtf16CatAscii) +# define RTUtf16End RT_MANGLER(RTUtf16End) +# define RTUtf16ICmpAscii RT_MANGLER(RTUtf16ICmpAscii) +# define RTUtf16NLen RT_MANGLER(RTUtf16NLen) +# define RTUtf16NLenEx RT_MANGLER(RTUtf16NLenEx) +# define RTUtf16PrintHexBytes RT_MANGLER(RTUtf16PrintHexBytes) +# define RTMemSaferAllocZExTag RT_MANGLER(RTMemSaferAllocZExTag) +# define RTMemSaferAllocZTag RT_MANGLER(RTMemSaferAllocZTag) +# define RTMemSaferFree RT_MANGLER(RTMemSaferFree) +# define RTMemSaferReallocZExTag RT_MANGLER(RTMemSaferReallocZExTag) +# define RTMemSaferReallocZTag RT_MANGLER(RTMemSaferReallocZTag) +# define RTMemSaferScramble RT_MANGLER(RTMemSaferScramble) +# define RTMemSaferUnscramble RT_MANGLER(RTMemSaferUnscramble) +# define RTErrConvertFromDarwin RT_MANGLER(RTErrConvertFromDarwin) +# define RTErrConvertFromDarwinCOM RT_MANGLER(RTErrConvertFromDarwinCOM) +# define RTErrConvertFromDarwinIO RT_MANGLER(RTErrConvertFromDarwinIO) +# define RTErrConvertFromDarwinKern RT_MANGLER(RTErrConvertFromDarwinKern) +# define RTErrConvertFromDarwin RT_MANGLER(RTErrConvertFromDarwin) +# define RTErrConvertFromDarwinIO RT_MANGLER(RTErrConvertFromDarwinIO) +# define RTErrConvertFromDarwinKern RT_MANGLER(RTErrConvertFromDarwinKern) + +/* + * Stable variables (alphabetical order): + */ +# define g_apfnRTZlibDeps RT_MANGLER(g_apfnRTZlibDeps) /* os2 win solaris */ +# define g_aRTUniFlagsRanges RT_MANGLER(g_aRTUniFlagsRanges) +# define g_aRTUniLowerRanges RT_MANGLER(g_aRTUniLowerRanges) +# define g_aRTUniUpperRanges RT_MANGLER(g_aRTUniUpperRanges) +# define g_fRTAlignmentChecks RT_MANGLER(g_fRTAlignmentChecks) +# define g_hKrnlDbgInfo RT_MANGLER(g_hKrnlDbgInfo) /* solaris */ +# define g_pStdErr RT_MANGLER(g_pStdErr) +# define g_pStdIn RT_MANGLER(g_pStdIn) +# define g_pStdOut RT_MANGLER(g_pStdOut) +# define g_pszRTAssertExpr RT_MANGLER(g_pszRTAssertExpr) +# define g_pszRTAssertFile RT_MANGLER(g_pszRTAssertFile) +# define g_pszRTAssertFunction RT_MANGLER(g_pszRTAssertFunction) +# define g_szRTAssertMsg1 RT_MANGLER(g_szRTAssertMsg1) +# define g_szRTAssertMsg2 RT_MANGLER(g_szRTAssertMsg2) +# define g_u32RTAssertLine RT_MANGLER(g_u32RTAssertLine) + +/* sort/merge into the above later: */ +# define g_RTAsn1Time_Vtable RT_MANGLER(g_RTAsn1Time_Vtable) +# define g_RTAsn1String_Vtable RT_MANGLER(g_RTAsn1String_Vtable) +# define g_RTAsn1OctetString_Vtable RT_MANGLER(g_RTAsn1OctetString_Vtable) +# define g_RTAsn1ObjId_Vtable RT_MANGLER(g_RTAsn1ObjId_Vtable) +# define g_RTAsn1Null_Vtable RT_MANGLER(g_RTAsn1Null_Vtable) +# define g_RTAsn1Integer_Vtable RT_MANGLER(g_RTAsn1Integer_Vtable) +# define g_RTAsn1Core_Vtable RT_MANGLER(g_RTAsn1Core_Vtable) +# define g_RTAsn1Boolean_Vtable RT_MANGLER(g_RTAsn1Boolean_Vtable) +# define g_RTAsn1BitString_Vtable RT_MANGLER(g_RTAsn1BitString_Vtable) +# define g_RTAsn1DefaultAllocator RT_MANGLER(g_RTAsn1DefaultAllocator) +# define g_RTAsn1EFenceAllocator RT_MANGLER(g_RTAsn1EFenceAllocator) +#if 0 /* Disabled for now as I'm not sure the assmbler supports mangling yet. */ +# define g_abRTZeroPage RT_MANGLER(g_abRTZeroPage) +# define g_abRTZero4K RT_MANGLER(g_abRTZero4K) +# define g_abRTZero8K RT_MANGLER(g_abRTZero8K) +# define g_abRTZero16K RT_MANGLER(g_abRTZero16K) +# define g_abRTZero32K RT_MANGLER(g_abRTZero32K) +# define g_abRTZero64K RT_MANGLER(g_abRTZero64K) +#endif + + +/* + * Unstable functions (alphabetical order): + */ +/** @todo the list is incomplete! See the .def files + libraries. */ + + +/* + * Unstable variables (alphabetical order): + */ +/* none */ + +#endif /* !DOXYGEN_RUNNING */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/mem.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/mem.h @@ -0,0 +1,956 @@ +/** @file + * IPRT - Memory Management and Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mem_h +#define ___iprt_mem_h + + +#include +#include + + +#ifdef IN_RC +# error "There are no RTMem APIs available Guest Context!" +#endif + + +/** @defgroup grp_rt_mem RTMem - Memory Management and Manipulation + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + +/** @def RTMEM_ALIGNMENT + * The alignment of the memory blocks returned by RTMemAlloc(), RTMemAllocZ(), + * RTMemRealloc(), RTMemTmpAlloc() and RTMemTmpAllocZ() for allocations greater + * than RTMEM_ALIGNMENT. + * + * @note This alignment is not forced if the electric fence is active! + */ +#if defined(RT_OS_OS2) +# define RTMEM_ALIGNMENT 4 +#else +# define RTMEM_ALIGNMENT 8 +#endif + +/** @def RTMEM_TAG + * The default allocation tag used by the RTMem allocation APIs. + * + * When not defined before the inclusion of iprt/mem.h or iprt/memobj.h, this + * will default to the pointer to the current file name. The memory API will + * make of use of this as pointer to a volatile but read-only string. + * The alternative tag includes the line number for a more-detailed analysis. + */ +#ifndef RTMEM_TAG +# if 0 +# define RTMEM_TAG (__FILE__ ":" RT_XSTR(__LINE__)) +# else +# define RTMEM_TAG (__FILE__) +# endif +#endif + + +/** @name Allocate temporary memory. + * @{ */ +/** + * Allocates temporary memory with default tag. + * + * Temporary memory blocks are used for not too large memory blocks which + * are believed not to stick around for too long. Using this API instead + * of RTMemAlloc() not only gives the heap manager room for optimization + * but makes the code easier to read. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemTmpAlloc(cb) RTMemTmpAllocTag((cb), RTMEM_TAG) + +/** + * Allocates temporary memory with custom tag. + * + * Temporary memory blocks are used for not too large memory blocks which + * are believed not to stick around for too long. Using this API instead + * of RTMemAlloc() not only gives the heap manager room for optimization + * but makes the code easier to read. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemTmpAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Allocates zero'd temporary memory with default tag. + * + * Same as RTMemTmpAlloc() but the memory will be zero'd. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemTmpAllocZ(cb) RTMemTmpAllocZTag((cb), RTMEM_TAG) + +/** + * Allocates zero'd temporary memory with custom tag. + * + * Same as RTMemTmpAlloc() but the memory will be zero'd. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemTmpAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Free temporary memory. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemTmpFree(void *pv) RT_NO_THROW_PROTO; + +/** @} */ + + +/** + * Allocates memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemAlloc(cb) RTMemAllocTag((cb), RTMEM_TAG) + +/** + * Allocates memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Allocates zero'd memory with default tag. + * + * Instead of memset(pv, 0, sizeof()) use this when you want zero'd + * memory. This keeps the code smaller and the heap can skip the memset + * in about 0.42% of calls :-). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemAllocZ(cb) RTMemAllocZTag((cb), RTMEM_TAG) + +/** + * Allocates zero'd memory with custom tag. + * + * Instead of memset(pv, 0, sizeof()) use this when you want zero'd + * memory. This keeps the code smaller and the heap can skip the memset + * in about 0.42% of calls :-). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Wrapper around RTMemAlloc for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAlloc. + * @param cbUnaligned The unaligned size. + */ +#define RTMemAllocVar(cbUnaligned) RTMemAllocVarTag((cbUnaligned), RTMEM_TAG) + +/** + * Wrapper around RTMemAllocTag for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAlloc. + * @param cbUnaligned The unaligned size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocVarTag(size_t cbUnaligned, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Wrapper around RTMemAllocZ for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAllocZ. + * @param cbUnaligned The unaligned size. + */ +#define RTMemAllocZVar(cbUnaligned) RTMemAllocZVarTag((cbUnaligned), RTMEM_TAG) + +/** + * Wrapper around RTMemAllocZTag for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAllocZ. + * @param cbUnaligned The unaligned size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocZVarTag(size_t cbUnaligned, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Duplicates a chunk of memory into a new heap block (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + */ +#define RTMemDup(pvSrc, cb) RTMemDupTag((pvSrc), (cb), RTMEM_TAG) + +/** + * Duplicates a chunk of memory into a new heap block (custom tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemDupTag(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Duplicates a chunk of memory into a new heap block with some additional + * zeroed memory (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + */ +#define RTMemDupEx(pvSrc, cbSrc, cbExtra) RTMemDupExTag((pvSrc), (cbSrc), (cbExtra), RTMEM_TAG) + +/** + * Duplicates a chunk of memory into a new heap block with some additional + * zeroed memory (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemDupExTag(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Reallocates memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + */ +#define RTMemRealloc(pvOld, cbNew) RTMemReallocTag((pvOld), (cbNew), RTMEM_TAG) + +/** + * Reallocates memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemReallocTag(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Frees memory. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemFree(void *pv) RT_NO_THROW_PROTO; + + + +/** @name RTR0MemAllocEx and RTR0MemAllocExTag flags. + * @{ */ +/** The returned memory should be zeroed. */ +#define RTMEMALLOCEX_FLAGS_ZEROED RT_BIT(0) +/** It must be load code into the returned memory block and execute it. */ +#define RTMEMALLOCEX_FLAGS_EXEC RT_BIT(1) +/** Allocation from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC RT_BIT(2) +/** Allocate the memory such that it can be freed from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX_FREE RT_BIT(3) +/** Allocate and free from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX (RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC | RTMEMALLOCEX_FLAGS_ANY_CTX_FREE) +/** Reachable by 16-bit address. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_16BIT_REACH RT_BIT(4) +/** Reachable by 32-bit address. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_32BIT_REACH RT_BIT(5) +/** Mask of valid flags. */ +#define RTMEMALLOCEX_FLAGS_VALID_MASK UINT32_C(0x0000003f) +/** Mask of valid flags for ring-0. */ +#define RTMEMALLOCEX_FLAGS_VALID_MASK_R0 UINT32_C(0x0000000f) +/** @} */ + +/** + * Extended heap allocation API, default tag. + * + * @returns IPRT status code. + * @retval VERR_NO_MEMORY if we're out of memory. + * @retval VERR_NO_EXEC_MEMORY if we're out of executable memory. + * @retval VERR_NOT_SUPPORTED if any of the specified flags are unsupported. + * + * @param cb The amount of memory to allocate. + * @param cbAlignment The alignment requirements. Use 0 to indicate + * default alignment. + * @param fFlags A combination of the RTMEMALLOCEX_FLAGS_XXX + * defines. + * @param ppv Where to return the memory. + */ +#define RTMemAllocEx(cb, cbAlignment, fFlags, ppv) RTMemAllocExTag((cb), (cbAlignment), (fFlags), RTMEM_TAG, (ppv)) + +/** + * Extended heap allocation API, custom tag. + * + * Depending on the implementation, using this function may add extra overhead, + * so use the simpler APIs where ever possible. + * + * @returns IPRT status code. + * @retval VERR_NO_MEMORY if we're out of memory. + * @retval VERR_NO_EXEC_MEMORY if we're out of executable memory. + * @retval VERR_NOT_SUPPORTED if any of the specified flags are unsupported. + * + * @param cb The amount of memory to allocate. + * @param cbAlignment The alignment requirements. Use 0 to indicate + * default alignment. + * @param fFlags A combination of the RTMEMALLOCEX_FLAGS_XXX + * defines. + * @param pszTag The tag. + * @param ppv Where to return the memory. + */ +RTDECL(int) RTMemAllocExTag(size_t cb, size_t cbAlignment, uint32_t fFlags, const char *pszTag, void **ppv) RT_NO_THROW_PROTO; + +/** + * For freeing memory allocated by RTMemAllocEx or RTMemAllocExTag. + * + * @param pv What to free, NULL is fine. + * @param cb The amount of allocated memory. + */ +RTDECL(void) RTMemFreeEx(void *pv, size_t cb) RT_NO_THROW_PROTO; + + + +/** + * Allocates memory which may contain code (default tag). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + */ +#define RTMemExecAlloc(cb) RTMemExecAllocTag((cb), RTMEM_TAG) + +/** + * Allocates memory which may contain code (custom tag). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Free executable/read/write memory allocated by RTMemExecAlloc(). + * + * @param pv Pointer to memory block. + * @param cb The allocation size. + */ +RTDECL(void) RTMemExecFree(void *pv, size_t cb) RT_NO_THROW_PROTO; + +#if defined(IN_RING0) && defined(RT_ARCH_AMD64) && defined(RT_OS_LINUX) +/** + * Donate read+write+execute memory to the exec heap. + * + * This API is specific to AMD64 and Linux/GNU. A kernel module that desires to + * use RTMemExecAlloc on AMD64 Linux/GNU will have to donate some statically + * allocated memory in the module if it wishes for GCC generated code to work. + * GCC can only generate modules that work in the address range ~2GB to ~0 + * currently. + * + * The API only accept one single donation. + * + * @returns IPRT status code. + * @param pvMemory Pointer to the memory block. + * @param cb The size of the memory block. + */ +RTR0DECL(int) RTR0MemExecDonate(void *pvMemory, size_t cb) RT_NO_THROW_PROTO; +#endif /* R0+AMD64+LINUX */ + +/** + * Allocate page aligned memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + */ +#define RTMemPageAlloc(cb) RTMemPageAllocTag((cb), RTMEM_TAG) + +/** + * Allocate page aligned memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemPageAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Allocate zero'd page aligned memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + */ +#define RTMemPageAllocZ(cb) RTMemPageAllocZTag((cb), RTMEM_TAG) + +/** + * Allocate zero'd page aligned memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemPageAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Free a memory block allocated with RTMemPageAlloc() or RTMemPageAllocZ(). + * + * @param pv Pointer to the block as it was returned by the allocation function. + * NULL will be ignored. + * @param cb The allocation size. Will be rounded up to page size. + * Ignored if @a pv is NULL. + */ +RTDECL(void) RTMemPageFree(void *pv, size_t cb) RT_NO_THROW_PROTO; + +/** Page level protection flags for RTMemProtect(). + * @{ + */ +/** No access at all. */ +#define RTMEM_PROT_NONE 0 +/** Read access. */ +#define RTMEM_PROT_READ 1 +/** Write access. */ +#define RTMEM_PROT_WRITE 2 +/** Execute access. */ +#define RTMEM_PROT_EXEC 4 +/** @} */ + +/** + * Change the page level protection of a memory region. + * + * @returns iprt status code. + * @param pv Start of the region. Will be rounded down to nearest page boundary. + * @param cb Size of the region. Will be rounded up to the nearest page boundary. + * @param fProtect The new protection, a combination of the RTMEM_PROT_* defines. + */ +RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW_PROTO; + +/** + * Goes thru some pains to make sure the specified memory block is thoroughly + * scrambled. + * + * @param pv The start of the memory block. + * @param cb The size of the memory block. + * @param cMinPasses The minimum number of passes to make. + */ +RTDECL(void) RTMemWipeThoroughly(void *pv, size_t cb, size_t cMinPasses) RT_NO_THROW_PROTO; + +#ifdef IN_RING0 + +/** + * Allocates physical contiguous memory (below 4GB). + * The allocation is page aligned and the content is undefined. + * + * @returns Pointer to the memory block. This is page aligned. + * @param pPhys Where to store the physical address. + * @param cb The allocation size in bytes. This is always + * rounded up to PAGE_SIZE. + */ +RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_t cb) RT_NO_THROW_PROTO; + +/** + * Frees memory allocated ysing RTMemContAlloc(). + * + * @param pv Pointer to return from RTMemContAlloc(). + * @param cb The cb parameter passed to RTMemContAlloc(). + */ +RTR0DECL(void) RTMemContFree(void *pv, size_t cb) RT_NO_THROW_PROTO; + +/** + * Copy memory from an user mode buffer into a kernel buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * + * @param pvDst The kernel mode destination address. + * @param R3PtrSrc The user mode source address. + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb); + +/** + * Copy memory from a kernel buffer into a user mode one. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * + * @param R3PtrDst The user mode destination address. + * @param pvSrc The kernel mode source address. + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb); + +/** + * Tests if the specified address is in the user addressable range. + * + * This function does not check whether the memory at that address is accessible + * or anything of that sort, only if the address it self is in the user mode + * range. + * + * @returns true if it's in the user addressable range. false if not. + * @param R3Ptr The user mode pointer to test. + * + * @remarks Some systems may have overlapping kernel and user address ranges. + * One prominent example of this is the x86 version of Mac OS X. Use + * RTR0MemAreKrnlAndUsrDifferent() to check. + */ +RTR0DECL(bool) RTR0MemUserIsValidAddr(RTR3PTR R3Ptr); + +/** + * Tests if the specified address is in the kernel mode range. + * + * This function does not check whether the memory at that address is accessible + * or anything of that sort, only if the address it self is in the kernel mode + * range. + * + * @returns true if it's in the kernel range. false if not. + * @param pv The alleged kernel mode pointer. + * + * @remarks Some systems may have overlapping kernel and user address ranges. + * One prominent example of this is the x86 version of Mac OS X. Use + * RTR0MemAreKrnlAndUsrDifferent() to check. + */ +RTR0DECL(bool) RTR0MemKernelIsValidAddr(void *pv); + +/** + * Are user mode and kernel mode address ranges distinctly different. + * + * This determines whether RTR0MemKernelIsValidAddr and RTR0MemUserIsValidAddr + * can be used for deciding whether some arbitrary address is a user mode or a + * kernel mode one. + * + * @returns true if they are, false if not. + */ +RTR0DECL(bool) RTR0MemAreKrnlAndUsrDifferent(void); + +/** + * Copy memory from an potentially unsafe kernel mode location and into a safe + * (kernel) buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * @retval VERR_NOT_SUPPORTED if not (yet) supported. + * + * @param pvDst The destination address (safe). + * @param pvSrc The source address (potentially unsafe). + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemKernelCopyFrom(void *pvDst, void const *pvSrc, size_t cb); + +/** + * Copy from a safe (kernel) buffer and to a potentially unsafe kenrel mode + * location. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * @retval VERR_NOT_SUPPORTED if not (yet) supported. + * + * @param pvDst The destination address (potentially unsafe). + * @param pvSrc The source address (safe). + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemKernelCopyTo(void *pvDst, void const *pvSrc, size_t cb); + +#endif /* IN_RING0 */ + + +/** @name Electrical Fence Version of some APIs. + * @{ + */ + +/** + * Same as RTMemTmpAllocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. + * Use RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfTmpAlloc(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemTmpAllocZTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfTmpAllocZ(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemTmpFree() except that it's for fenced memory. + * + * @param pv Pointer to memory block. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void) RTMemEfTmpFree(void *pv, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemAllocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. Free with RTMemEfFree(). + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfAlloc(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemAllocZTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfAllocZ(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemAllocVarTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. Free with RTMemEfFree(). + * @returns NULL on failure. + * @param cbUnaligned Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfAllocVar(size_t cbUnaligned, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemAllocZVarTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cbUnaligned Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfAllocZVar(size_t cbUnaligned, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemReallocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfRealloc(void *pvOld, size_t cbNew, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Free memory allocated by any of the RTMemEf* allocators. + * + * @param pv Pointer to memory block. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void) RTMemEfFree(void *pv, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemDupTag() except that it's fenced. + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfDup(const void *pvSrc, size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** + * Same as RTMemEfDupExTag except that it's fenced. + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + * @param pszTag Allocation tag used for statistics and such. + * @param SRC_POS The source position where call is being made from. Use + * RT_SRC_POS when possible. Optional. + */ +RTDECL(void *) RTMemEfDupEx(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW_PROTO; + +/** @def RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF + * Define RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF to enable electric fence new and + * delete operators for classes which uses the RTMEMEF_NEW_AND_DELETE_OPERATORS + * macro. + */ +/** @def RTMEMEF_NEW_AND_DELETE_OPERATORS + * Defines the electric fence new and delete operators for a class when + * RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF is define. + */ +#if defined(RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF) && !defined(RTMEM_NO_WRAP_SOME_NEW_AND_DELETE_TO_EF) +# if defined(RT_EXCEPTIONS_ENABLED) +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + void *operator new(size_t cb) RT_THROW(std::bad_alloc) \ + { \ + void *pv = RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + if (RT_LIKELY(pv)) \ + return pv; \ + throw std::bad_alloc(); \ + } \ + void *operator new(size_t cb, const std::nothrow_t ¬hrow_constant) RT_NO_THROW_DEF \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb) RT_THROW(std::bad_alloc) \ + { \ + void *pv = RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + if (RT_LIKELY(pv)) \ + return pv; \ + throw std::bad_alloc(); \ + } \ + void *operator new[](size_t cb, const std::nothrow_t ¬hrow_constant) RT_NO_THROW_DEF \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + \ + void operator delete(void *pv) RT_NO_THROW_DEF \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete(void *pv, const std::nothrow_t ¬hrow_constant) RT_NO_THROW_DEF \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv) RT_NO_THROW_DEF \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv, const std::nothrow_t ¬hrow_constant) RT_NO_THROW_DEF \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + \ + typedef int UsingElectricNewAndDeleteOperators +# else +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + void *operator new(size_t cb) \ + { \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new(size_t cb, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb) \ + { \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + \ + void operator delete(void *pv) \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete(void *pv, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv) \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + \ + typedef int UsingElectricNewAndDeleteOperators +# endif +#else +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + typedef int UsingDefaultNewAndDeleteOperators +#endif +#ifdef DOXYGEN_RUNNING +# define RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF +#endif + +/** @def RTMEM_WRAP_TO_EF_APIS + * Define RTMEM_WRAP_TO_EF_APIS to wrap RTMem APIs to RTMemEf APIs. + */ +#if defined(RTMEM_WRAP_TO_EF_APIS) && defined(IN_RING3) && !defined(RTMEM_NO_WRAP_TO_EF_APIS) +# define RTMemTmpAllocTag(cb, pszTag) RTMemEfTmpAlloc((cb), (pszTag), RT_SRC_POS) +# define RTMemTmpAllocZTag(cb, pszTag) RTMemEfTmpAllocZ((cb), (pszTag), RT_SRC_POS) +# define RTMemTmpFree(pv) RTMemEfTmpFree((pv), RT_SRC_POS) +# define RTMemAllocTag(cb, pszTag) RTMemEfAlloc((cb), (pszTag), RT_SRC_POS) +# define RTMemAllocZTag(cb, pszTag) RTMemEfAllocZ((cb), (pszTag), RT_SRC_POS) +# define RTMemAllocVarTag(cbUnaligned, pszTag) RTMemEfAllocVar((cbUnaligned), (pszTag), RT_SRC_POS) +# define RTMemAllocZVarTag(cbUnaligned, pszTag) RTMemEfAllocZVar((cbUnaligned), (pszTag), RT_SRC_POS) +# define RTMemReallocTag(pvOld, cbNew, pszTag) RTMemEfRealloc((pvOld), (cbNew), (pszTag), RT_SRC_POS) +# define RTMemFree(pv) RTMemEfFree((pv), RT_SRC_POS) +# define RTMemDupTag(pvSrc, cb, pszTag) RTMemEfDup((pvSrc), (cb), (pszTag), RT_SRC_POS) +# define RTMemDupExTag(pvSrc, cbSrc, cbExtra, pszTag) RTMemEfDupEx((pvSrc), (cbSrc), (cbExtra), (pszTag), RT_SRC_POS) +#endif +#ifdef DOXYGEN_RUNNING +# define RTMEM_WRAP_TO_EF_APIS +#endif + +/** + * Fenced drop-in replacement for RTMemTmpAllocTag. + * @copydoc RTMemTmpAllocTag + */ +RTDECL(void *) RTMemEfTmpAllocNP(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemTmpAllocZTag. + * @copydoc RTMemTmpAllocZTag + */ +RTDECL(void *) RTMemEfTmpAllocZNP(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemTmpFreeTag. + * @copydoc RTMemTmpFree + */ +RTDECL(void) RTMemEfTmpFreeNP(void *pv) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemAllocTag. + * @copydoc RTMemAllocTag + */ +RTDECL(void *) RTMemEfAllocNP(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemAllocZTag. + * @copydoc RTMemAllocZTag + */ +RTDECL(void *) RTMemEfAllocZNP(size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemAllocVarTag + * @copydoc RTMemAllocVarTag + */ +RTDECL(void *) RTMemEfAllocVarNP(size_t cbUnaligned, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemAllocZVarTag. + * @copydoc RTMemAllocZVarTag + */ +RTDECL(void *) RTMemEfAllocZVarNP(size_t cbUnaligned, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemReallocTag. + * @copydoc RTMemReallocTag + */ +RTDECL(void *) RTMemEfReallocNP(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemFree. + * @copydoc RTMemFree + */ +RTDECL(void) RTMemEfFreeNP(void *pv) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemDupExTag. + * @copydoc RTMemDupTag + */ +RTDECL(void *) RTMemEfDupNP(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW_PROTO; + +/** + * Fenced drop-in replacement for RTMemDupExTag. + * @copydoc RTMemDupExTag + */ +RTDECL(void *) RTMemEfDupExNP(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW_PROTO; + +/** @} */ + +RT_C_DECLS_END + +/** @} */ + + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/memobj.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/memobj.h @@ -0,0 +1,629 @@ +/** @file + * IPRT - Memory Objects (Ring-0). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_memobj_h +#define ___iprt_memobj_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_memobj RTMemObj - Memory Object Manipulation (Ring-0) + * @ingroup grp_rt + * @{ + */ + +/** @def RTMEM_TAG + * The default allocation tag used by the RTMem allocation APIs. + * + * When not defined before the inclusion of iprt/memobj.h or iprt/mem.h, this + * will default to the pointer to the current file name. The memory API will + * make of use of this as pointer to a volatile but read-only string. + */ +#ifndef RTMEM_TAG +# define RTMEM_TAG (__FILE__) +#endif + +#ifdef IN_RING0 + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(bool) RTR0MemObjIsMapping(RTR0MEMOBJ MemObj); + +/** + * Gets the address of a ring-0 memory object. + * + * @returns The address of the memory object. + * @returns NULL if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(void *) RTR0MemObjAddress(RTR0MEMOBJ MemObj); + +/** + * Gets the ring-3 address of a ring-0 memory object. + * + * This only applies to ring-0 memory object with ring-3 mappings of some kind, i.e. + * locked user memory, reserved user address space and user mappings. This API should + * not be used on any other objects. + * + * @returns The address of the memory object. + * @returns NIL_RTR3PTR if the handle is invalid or if it's not an object with a ring-3 mapping. + * Strict builds will assert in both cases. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(RTR3PTR) RTR0MemObjAddressR3(RTR0MEMOBJ MemObj); + +/** + * Gets the size of a ring-0 memory object. + * + * The returned value may differ from the one specified to the API creating the + * object because of alignment adjustments. The minimal alignment currently + * employed by any API is PAGE_SIZE, so the result can safely be shifted by + * PAGE_SHIFT to calculate a page count. + * + * @returns The object size. + * @returns 0 if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(size_t) RTR0MemObjSize(RTR0MEMOBJ MemObj); + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param MemObj The ring-0 memory object handle. + * @param iPage The page number within the object. + */ +RTR0DECL(RTHCPHYS) RTR0MemObjGetPagePhysAddr(RTR0MEMOBJ MemObj, size_t iPage); + +/** + * Frees a ring-0 memory object. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if + * @param MemObj The ring-0 memory object to be freed. NULL is accepted. + * @param fFreeMappings Whether or not to free mappings of the object. + */ +RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ MemObj, bool fFreeMappings); + +/** + * Allocates page aligned virtual kernel memory (default tag). + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocPage(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocPageTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory (custom tag). + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPageTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB + * (default tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocLow(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocLowTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB + * (custom tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing + * below 4GB (default tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocCont(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocContTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing + * below 4GB (custom tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocContTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Locks a range of user virtual memory (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address. This is rounded down to a page + * boundary. + * @param cb Number of bytes to lock. This is rounded up to + * nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. NIL_R0PROCESS is an + * alias for the current one. + * + * @remarks RTR0MemGetAddressR3() and RTR0MemGetAddress() will return therounded + * down address. + * + * @remarks Linux: This API requires that the memory begin locked is in a memory + * mapping that is not required in any forked off child process. This + * is not intented as permanent restriction, feel free to help out + * lifting it. + */ +#define RTR0MemObjLockUser(pMemObj, R3Ptr, cb, fAccess, R0Process) \ + RTR0MemObjLockUserTag((pMemObj), (R3Ptr), (cb), (fAccess), (R0Process), RTMEM_TAG) + +/** + * Locks a range of user virtual memory (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address. This is rounded down to a page + * boundary. + * @param cb Number of bytes to lock. This is rounded up to + * nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. NIL_R0PROCESS is an + * alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + * + * @remarks RTR0MemGetAddressR3() and RTR0MemGetAddress() will return therounded + * down address. + * + * @remarks Linux: This API requires that the memory begin locked is in a memory + * mapping that is not required in any forked off child process. This + * is not intented as permanent restriction, feel free to help out + * lifting it. + */ +RTR0DECL(int) RTR0MemObjLockUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, + RTR0PROCESS R0Process, const char *pszTag); + +/** + * Locks a range of kernel virtual memory (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address. This is rounded down to a page boundary. + * @param cb Number of bytes to lock. This is rounded up to nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * + * @remark RTR0MemGetAddress() will return the rounded down address. + */ +#define RTR0MemObjLockKernel(pMemObj, pv, cb, fAccess) \ + RTR0MemObjLockKernelTag((pMemObj), (pv), (cb), (fAccess), RTMEM_TAG) + +/** + * Locks a range of kernel virtual memory (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address. This is rounded down to a page boundary. + * @param cb Number of bytes to lock. This is rounded up to nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param pszTag Allocation tag used for statistics and such. + * + * @remark RTR0MemGetAddress() will return the rounded down address. + */ +RTR0DECL(int) RTR0MemObjLockKernelTag(PRTR0MEMOBJ pMemObj, void *pv, size_t cb, uint32_t fAccess, const char *pszTag); + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + */ +#define RTR0MemObjAllocPhys(pMemObj, cb, PhysHighest) \ + RTR0MemObjAllocPhysTag((pMemObj), (cb), (PhysHighest), RTMEM_TAG) + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag); + +/** + * Allocates contiguous physical memory without (necessarily) any kernel mapping + * (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M, _4M and _1G. + */ +#define RTR0MemObjAllocPhysEx(pMemObj, cb, PhysHighest, uAlignment) \ + RTR0MemObjAllocPhysExTag((pMemObj), (cb), (PhysHighest), (uAlignment), RTMEM_TAG) + +/** + * Allocates contiguous physical memory without (necessarily) any kernel mapping + * (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M, _4M and _1G. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysExTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment, const char *pszTag); + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) + * any kernel mapping (default tag). + * + * This API is for allocating huge amounts of pages and will return + * VERR_NOT_SUPPORTED if this cannot be implemented in a satisfactory + * manner. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. The caller should expect + * this error and have a fallback strategy for it. + * + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + */ +#define RTR0MemObjAllocPhysNC(pMemObj, cb, PhysHighest) \ + RTR0MemObjAllocPhysNCTag((pMemObj), (cb), (PhysHighest), RTMEM_TAG) + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) + * any kernel mapping (custom tag). + * + * This API is for allocating huge amounts of pages and will return + * VERR_NOT_SUPPORTED if this cannot be implemented in a satisfactory + * manner. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. The caller should expect + * this error and have a fallback strategy for it. + * + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysNCTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag); + +/** Memory cache policy for RTR0MemObjEnterPhys. + * @{ + */ +/** Default caching policy -- don't care. */ +#define RTMEM_CACHE_POLICY_DONT_CARE UINT32_C(0) +/** MMIO caching policy -- uncachable. */ +#define RTMEM_CACHE_POLICY_MMIO UINT32_C(1) +/** @} */ + +/** + * Creates a page aligned, contiguous, physical memory object (default tag). + * + * No physical memory is allocated, we trust you do know what you're doing. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at. This is rounded down to the + * nearest page boundary. + * @param cb The size of the object in bytes. This is rounded up to nearest page boundary. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + */ +#define RTR0MemObjEnterPhys(pMemObj, Phys, cb, uCachePolicy) \ + RTR0MemObjEnterPhysTag((pMemObj), (Phys), (cb), (uCachePolicy), RTMEM_TAG) + +/** + * Creates a page aligned, contiguous, physical memory object (custom tag). + * + * No physical memory is allocated, we trust you do know what you're doing. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at. This is rounded down to the + * nearest page boundary. + * @param cb The size of the object in bytes. This is rounded up to nearest page boundary. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjEnterPhysTag(PRTR0MEMOBJ pMemObj, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy, const char *pszTag); + +/** + * Reserves kernel virtual address space (default tag). + * + * If this function fails with VERR_NOT_SUPPORTED, the idea is that you + * can use RTR0MemObjEnterPhys() + RTR0MemObjMapKernel() as a fallback if + * you have a safe physical address range to make use of... + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest page. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + */ +#define RTR0MemObjReserveKernel(pMemObj, pvFixed, cb, uAlignment) \ + RTR0MemObjReserveKernelTag((pMemObj), (pvFixed), (cb), (uAlignment), RTMEM_TAG) + +/** + * Reserves kernel virtual address space (custom tag). + * + * If this function fails with VERR_NOT_SUPPORTED, the idea is that you + * can use RTR0MemObjEnterPhys() + RTR0MemObjMapKernel() as a fallback if + * you have a safe physical address range to make use of... + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest page. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjReserveKernelTag(PRTR0MEMOBJ pMemObj, void *pvFixed, size_t cb, size_t uAlignment, const char *pszTag); + +/** + * Reserves user virtual address space in the current process (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest PAGE_SIZE. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param R0Process The process to reserve the memory in. NIL_R0PROCESS is an alias for the current one. + */ +#define RTR0MemObjReserveUser(pMemObj, R3PtrFixed, cb, uAlignment, R0Process) \ + RTR0MemObjReserveUserTag((pMemObj), (R3PtrFixed), (cb), (uAlignment), (R0Process), RTMEM_TAG) + +/** + * Reserves user virtual address space in the current process (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest PAGE_SIZE. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param R0Process The process to reserve the memory in. NIL_R0PROCESS is an alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjReserveUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, + RTR0PROCESS R0Process, const char *pszTag); + +/** + * Maps a memory object into kernel virtual address space (default tag). + * + * This is the same as calling RTR0MemObjMapKernelEx with cbSub and offSub set + * to zero. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + */ +#define RTR0MemObjMapKernel(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt) \ + RTR0MemObjMapKernelTag((pMemObj), (MemObjToMap), (pvFixed), (uAlignment), (fProt), RTMEM_TAG) + +/** + * Maps a memory object into kernel virtual address space (custom tag). + * + * This is the same as calling RTR0MemObjMapKernelEx with cbSub and offSub set + * to zero. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapKernelTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, + size_t uAlignment, unsigned fProt, const char *pszTag); + +/** + * Maps a memory object into kernel virtual address space (default tag). + * + * The ability to map subsections of the object into kernel space is currently + * not implemented on all platforms. All/Most of platforms supports mapping the + * whole object into kernel space. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to map a subsection of a + * memory object on this platform. When you hit this, try implement it. + * + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + */ +#define RTR0MemObjMapKernelEx(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt, offSub, cbSub) \ + RTR0MemObjMapKernelExTag((pMemObj), (MemObjToMap), (pvFixed), (uAlignment), (fProt), (offSub), (cbSub), RTMEM_TAG) + +/** + * Maps a memory object into kernel virtual address space (custom tag). + * + * The ability to map subsections of the object into kernel space is currently + * not implemented on all platforms. All/Most of platforms supports mapping the + * whole object into kernel space. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to map a subsection of a + * memory object on this platform. When you hit this, try implement it. + * + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapKernelExTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag); + +/** + * Maps a memory object into user virtual address space in the current process + * (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. NIL_R0PROCESS is an alias for the current one. + */ +#define RTR0MemObjMapUser(pMemObj, MemObjToMap, R3PtrFixed, uAlignment, fProt, R0Process) \ + RTR0MemObjMapUserTag((pMemObj), (MemObjToMap), (R3PtrFixed), (uAlignment), (fProt), (R0Process), RTMEM_TAG) + +/** + * Maps a memory object into user virtual address space in the current process + * (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. NIL_R0PROCESS is an alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapUserTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process, const char *pszTag); + +/** + * Change the page level protection of one or more pages in a memory object. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the OS doesn't provide any way to manipulate + * page level protection. The caller must handle this status code + * gracefully. (Note that it may also occur if the implementation is + * missing, in which case just go ahead and implement it.) + * + * @param hMemObj Memory object handle. + * @param offSub Offset into the memory object. Must be page aligned. + * @param cbSub Number of bytes to change the protection of. Must be + * page aligned. + * @param fProt Combination of RTMEM_PROT_* flags. + */ +RTR0DECL(int) RTR0MemObjProtect(RTR0MEMOBJ hMemObj, size_t offSub, size_t cbSub, uint32_t fProt); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/mp.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/mp.h @@ -0,0 +1,477 @@ +/** @file + * IPRT - Multiprocessor. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mp_h +#define ___iprt_mp_h + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_mp RTMp - Multiprocessor + * @ingroup grp_rt + * @{ + */ + +/** + * Gets the identifier of the CPU executing the call. + * + * When called from a system mode where scheduling is active, like ring-3 or + * kernel mode with interrupts enabled on some systems, no assumptions should + * be made about the current CPU when the call returns. + * + * @returns CPU Id. + */ +RTDECL(RTCPUID) RTMpCpuId(void); + +/** + * Get the CPU set index of the CPU executing the call. + * + * Same scheduling warnings as for RTMpCpuId(). + * + * @returns CPU set index. + */ +RTDECL(int) RTMpCurSetIndex(void); + +/** + * Get the CPU set index and identifier of the CPU executing the call. + * + * Same scheduling warnings as for RTMpCpuId(). + * + * @returns CPU set index. + * @param pidCpu Where to return the CPU identifier. (not optional) + */ +RTDECL(int) RTMpCurSetIndexAndId(PRTCPUID pidCpu); + +/** + * Converts a CPU identifier to a CPU set index. + * + * This may or may not validate the presence of the CPU. + * + * @returns The CPU set index on success, -1 on failure. + * @param idCpu The identifier of the CPU. + */ +RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu); + +/** + * Converts a CPU set index to a a CPU identifier. + * + * This may or may not validate the presence of the CPU, so, use + * RTMpIsCpuPossible for that. + * + * @returns The corresponding CPU identifier, NIL_RTCPUID on failure. + * @param iCpu The CPU set index. + */ +RTDECL(RTCPUID) RTMpCpuIdFromSetIndex(int iCpu); + +/** + * Gets the max CPU identifier (inclusive). + * + * Intended for brute force enumerations, but use with + * care as it may be expensive. + * + * @returns The current higest CPU identifier value. + */ +RTDECL(RTCPUID) RTMpGetMaxCpuId(void); + +/** + * Gets the size of a CPU array that is indexed by CPU set index. + * + * This takes both online, offline and hot-plugged cpus into account. + * + * @returns Number of elements. + * + * @remarks Use RTMpCpuIdToSetIndex to convert a RTCPUID into an array index. + */ +RTDECL(uint32_t) RTMpGetArraySize(void); + +/** + * Checks if a CPU exists in the system or may possibly be hotplugged later. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuPossible(RTCPUID idCpu); + +/** + * Gets set of the CPUs present in the system plus any that may + * possibly be hotplugged later. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs present in the system plus any that may + * possibly be hotplugged later. + * + * @returns The count. + * @remarks Don't use this for CPU array sizing, use RTMpGetArraySize instead. + */ +RTDECL(RTCPUID) RTMpGetCount(void); + +/** + * Get the count of physical CPU cores present in the system plus any that may + * possibly be hotplugged later. + * + * @returns The number of cores. + */ +RTDECL(RTCPUID) RTMpGetCoreCount(void); + +/** + * Gets set of the CPUs present that are currently online. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetOnlineSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs that are currently online. + * + * @return The count. + */ +RTDECL(RTCPUID) RTMpGetOnlineCount(void); + +/** + * Get the count of physical CPU cores in the system with one or more online + * threads. + * + * @returns The number of online cores. + */ +RTDECL(RTCPUID) RTMpGetOnlineCoreCount(void); + +/** + * Checks if a CPU is online or not. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuOnline(RTCPUID idCpu); + + +/** + * Gets set of the CPUs present in the system. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetPresentSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs that are present in the system. + * + * @return The count. + */ +RTDECL(RTCPUID) RTMpGetPresentCount(void); + +/** + * Get the count of physical CPU cores present in the system. + * + * @returns The number of cores. + */ +RTDECL(RTCPUID) RTMpGetPresentCoreCount(void); + +/** + * Checks if a CPU is present in the system. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuPresent(RTCPUID idCpu); + + +/** + * Get the current frequency of a CPU. + * + * The CPU must be online. + * + * @returns The frequency as MHz. 0 if the CPU is offline + * or the information is not available. + * @param idCpu The identifier of the CPU. + */ +RTDECL(uint32_t) RTMpGetCurFrequency(RTCPUID idCpu); + +/** + * Get the maximum frequency of a CPU. + * + * The CPU must be online. + * + * @returns The frequency as MHz. 0 if the CPU is offline + * or the information is not available. + * @param idCpu The identifier of the CPU. + */ +RTDECL(uint32_t) RTMpGetMaxFrequency(RTCPUID idCpu); + +/** + * Get the CPU description string. + * + * The CPU must be online. + * + * @returns IPRT status code. + * @param idCpu The identifier of the CPU. NIL_RTCPUID can be used to + * indicate the current CPU. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + */ +RTDECL(int) RTMpGetDescription(RTCPUID idCpu, char *pszBuf, size_t cbBuf); + + +#ifdef IN_RING0 + +/** + * Check if there's work (DPCs on Windows) pending on the current CPU. + * + * @return true if there's pending work on the current CPU, false otherwise. + */ +RTDECL(bool) RTMpIsCpuWorkPending(void); + + +/** + * Worker function passed to RTMpOnAll, RTMpOnOthers and RTMpOnSpecific that + * is to be called on the target cpus. + * + * @param idCpu The identifier for the CPU the function is called on. + * @param pvUser1 The 1st user argument. + * @param pvUser2 The 2nd user argument. + */ +typedef DECLCALLBACK(void) FNRTMPWORKER(RTCPUID idCpu, void *pvUser1, void *pvUser2); +/** Pointer to a FNRTMPWORKER. */ +typedef FNRTMPWORKER *PFNRTMPWORKER; + +/** @name RTMPON_F_XXX - RTMpOn flags. + * @{ */ +/** Caller doesn't care if pfnWorker is executed at the same time on the + * specified CPUs or not, as long as it gets executed. */ +#define RTMPON_F_WHATEVER_EXEC 0 +/** The caller insists on pfnWorker being executed more or less concurrently + * on the specified CPUs. */ +#define RTMPON_F_CONCURRENT_EXEC RT_BIT_32(1) +/** Mask of valid bits. */ +#define RTMPON_F_VALID_MASK UINT32_C(0x00000001) +/** @}*/ + +/** + * Checks if the RTMpOnAll() is safe with regards to all threads executing + * concurrently. + * + * If for instance, the RTMpOnAll() is implemented in a way where the threads + * might cause a classic deadlock, it is considered -not- concurrent safe. + * Windows currently is one such platform where it isn't safe. + * + * @returns true if RTMpOnAll() is concurrent safe, false otherwise. + */ +RTDECL(bool) RTMpOnAllIsConcurrentSafe(void); + +/** + * Executes a function on each (online) CPU in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks The execution isn't in any way guaranteed to be simultaneous, + * it might even be serial (cpu by cpu). + */ +RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on a all other (online) CPUs in the system. + * + * The caller must disable preemption prior to calling this API if the outcome + * is to make any sense. But do *not* disable interrupts. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks The execution isn't in any way guaranteed to be simultaneous, + * it might even be serial (cpu by cpu). + */ +RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on a specific CPU in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * @retval VERR_CPU_OFFLINE if the CPU is offline. + * @retval VERR_CPU_NOT_FOUND if the CPU wasn't found. + * + * @param idCpu The id of the CPU. + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + */ +RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on two specific CPUs in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the + * system or if the specified modifier flag isn't supported. + * @retval VERR_CPU_OFFLINE if one or more of the CPUs are offline (see + * remarks). + * @retval VERR_CPU_NOT_FOUND if on or both of the CPUs weren't found. + * @retval VERR_NOT_ALL_CPUS_SHOWED if one of the CPUs didn't show. + * + * @param idCpu1 The id of the first CPU. + * @param idCpu2 The id of the second CPU. + * @param fFlags Combination of RTMPON_F_XXX flags. + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks There is a possible race between one (or both) of the CPUs going + * offline while setting up the call. The worker function must take + * this into account. + */ +RTDECL(int) RTMpOnPair(RTCPUID idCpu1, RTCPUID idCpu2, uint32_t fFlags, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Indicates whether RTMpOnPair supports running the pfnWorker concurrently on + * both CPUs using RTMPON_F_CONCURRENT_EXEC. + * + * @returns true if supported, false if not. + */ +RTDECL(bool) RTMpOnPairIsConcurrentExecSupported(void); + + +/** + * Pokes the specified CPU. + * + * This should cause the execution on the CPU to be interrupted and forcing it + * to enter kernel context. It is optimized version of a RTMpOnSpecific call + * with a worker which returns immediately. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the + * system. The caller must not automatically assume that this API works + * when any of the RTMpOn* APIs works. This is because not all systems + * supports unicast MP events and this API will not be implemented as a + * broadcast. + * @retval VERR_CPU_OFFLINE if the CPU is offline. + * @retval VERR_CPU_NOT_FOUND if the CPU wasn't found. + * + * @param idCpu The id of the CPU to poke. + */ +RTDECL(int) RTMpPokeCpu(RTCPUID idCpu); + + +/** + * MP event, see FNRTMPNOTIFICATION. + */ +typedef enum RTMPEVENT +{ + /** The CPU goes online. */ + RTMPEVENT_ONLINE = 1, + /** The CPU goes offline. */ + RTMPEVENT_OFFLINE +} RTMPEVENT; + +/** + * Notification callback. + * + * The context this is called in differs a bit from platform to platform, so be + * careful while in here. + * + * On Windows we're running with IRQL=PASSIVE_LEVEL (reschedulable) according to + * the KeRegisterProcessorChangeCallback documentation - unrestricted API + * access. Probably not being called on the onlined/offlined CPU... + * + * On Solaris we're holding the cpu_lock, IPL/SPL/PIL is not yet known, however + * we will most likely -not- be firing on the CPU going offline/online. + * + * On Linux it looks like we're called with preemption enabled on any CPU and + * not necessarily on the CPU going offline/online. + * + * There is no callbacks for darwin at the moment, due to lack of suitable KPI. + * + * @param idCpu The CPU this applies to. + * @param enmEvent The event. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(void) FNRTMPNOTIFICATION(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); +/** Pointer to a FNRTMPNOTIFICATION(). */ +typedef FNRTMPNOTIFICATION *PFNRTMPNOTIFICATION; + +/** + * Registers a notification callback for cpu events. + * + * On platforms which doesn't do cpu offline/online events this API + * will just be a no-op that pretends to work. + * + * @todo We'll be adding a flag to this soon to indicate whether the callback should be called on all + * CPUs that are currently online while it's being registered. This is to help avoid some race + * conditions (we'll hopefully be able to implement this on linux, solaris/win is no issue). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NO_MEMORY if a registration record cannot be allocated. + * @retval VERR_ALREADY_EXISTS if the pfnCallback and pvUser already exist + * in the callback list. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTMpNotificationRegister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser); + +/** + * This deregisters a notification callback registered via RTMpNotificationRegister(). + * + * The pfnCallback and pvUser arguments must be identical to the registration call + * of we won't find the right entry. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_FOUND if no matching entry was found. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTMpNotificationDeregister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/net.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/net.h @@ -0,0 +1,962 @@ +/** @file + * IPRT - Network Protocols. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_net_h +#define ___iprt_net_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_net RTNet - Network Protocols + * @ingroup grp_rt + * @{ + */ + +/** + * Converts an stringified Ethernet MAC address into the RTMAC representation. + * + * @todo This should be move to some generic part of the runtime. + * + * @returns VINF_SUCCESS on success, VERR_GETOPT_INVALID_ARGUMENT_FORMAT on + * failure. + * + * @param pszAddr The address string to convert. + * @param pMacAddr Where to store the result. + */ +RTDECL(int) RTNetStrToMacAddr(const char *pszAddr, PRTMAC pMacAddr); + +/** + * IPv4 address. + */ +typedef RTUINT32U RTNETADDRIPV4; +AssertCompileSize(RTNETADDRIPV4, 4); +/** Pointer to a IPv4 address. */ +typedef RTNETADDRIPV4 *PRTNETADDRIPV4; +/** Pointer to a const IPv4 address. */ +typedef RTNETADDRIPV4 const *PCRTNETADDRIPV4; + +/** + * Tests if the given string is an IPv4 address. + * + * @returns boolean. + * @param pcszAddr String which may be an IPv4 address. + */ +RTDECL(bool) RTNetIsIPv4AddrStr(const char *pcszAddr); + +/** + * Tests if the given string is a wildcard IPv4 address. + * + * @returns boolean. + * @param pcszAddr String which may be an IPv4 address. + */ +RTDECL(bool) RTNetStrIsIPv4AddrAny(const char *pcszAddr); + +/** + * Parses dotted-decimal IPv4 address into RTNETADDRIPV4 representation. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszNext Where to store the pointer to the first char + * following the address. (Optional) + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv4AddrEx(const char *pcszAddr, PRTNETADDRIPV4 pAddr, char **ppszNext); + +/** + * Parses dotted-decimal IPv4 address into RTNETADDRIPV4 representation. + * Leading and trailing whitespace is ignored. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv4Addr(const char *pcszAddr, PRTNETADDRIPV4 pAddr); + +/** + * IPv6 address. + */ +typedef RTUINT128U RTNETADDRIPV6; +AssertCompileSize(RTNETADDRIPV6, 16); +/** Pointer to a IPv6 address. */ +typedef RTNETADDRIPV6 *PRTNETADDRIPV6; +/** Pointer to a const IPv6 address. */ +typedef RTNETADDRIPV6 const *PCRTNETADDRIPV6; + +/** + * Tests if the given string is a valid IPv6 address. + * + * @returns @c true if it is, @c false if not. + * @param pszAddress String which may be an IPv6 address. + */ +RTDECL(bool) RTNetIsIPv6AddrStr(const char *pszAddress); + +/** + * Tests if the given string is a wildcard IPv6 address. + * + * @returns @c true if it is, @c false if not. + * @param pszAddress String which may be an IPv6 address. + */ +RTDECL(bool) RTNetStrIsIPv6AddrAny(const char *pszAddress); + +/** + * Parses IPv6 address into RTNETADDRIPV6 representation. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszNext Where to store the pointer to the first char + * following the address. (Optional) + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv6AddrEx(const char *pcszAddr, PRTNETADDRIPV6 pAddr, char **ppszNext); + +/** + * Parses IPv6 address into RTNETADDRIPV6 representation. + * Leading and trailing whitespace is ignored. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszZone Where to store the pointer to the first char + * of the zone id. NULL is stored if there is + * no zone id. + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv6Addr(const char *pcszAddr, PRTNETADDRIPV6 pAddr, char **ppszZone); + +/** + * IPX address. + */ +#pragma pack(1) +typedef struct RTNETADDRIPX +{ + /** The network ID. */ + uint32_t Network; + /** The node ID. (Defaults to the MAC address apparently.) */ + RTMAC Node; +} RTNETADDRIPX; +#pragma pack() +AssertCompileSize(RTNETADDRIPX, 4+6); +/** Pointer to an IPX address. */ +typedef RTNETADDRIPX *PRTNETADDRIPX; +/** Pointer to a const IPX address. */ +typedef RTNETADDRIPX const *PCRTNETADDRIPX; + +/** + * Network address union. + * + * @remarks The size of this structure may change in the future. + */ +typedef union RTNETADDRU +{ + /** 64-bit view. */ + uint64_t au64[2]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 8-bit view. */ + uint8_t au8[16]; + /** IPv4 view. */ + RTNETADDRIPV4 IPv4; +#ifndef IPv6 /* Work around X11 and RDP defining IPv6 to 1. */ + /** IPv6 view. */ + RTNETADDRIPV6 IPv6; +#endif + /** IPX view. */ + RTNETADDRIPX Ipx; + /** MAC address view. */ + RTMAC Mac; +} RTNETADDRU; +AssertCompileSize(RTNETADDRU, 16); +/** Pointer to an address union. */ +typedef RTNETADDRU *PRTNETADDRU; +/** Pointer to a const address union. */ +typedef RTNETADDRU const *PCRTNETADDRU; + +/** + * Network address type. + * + * @remarks The value assignments may change in the future. + */ +typedef enum RTNETADDRTYPE +{ + /** The invalid 0 entry. */ + RTNETADDRTYPE_INVALID = 0, + /** IP version 4. */ + RTNETADDRTYPE_IPV4, + /** IP version 6. */ + RTNETADDRTYPE_IPV6, + /** IPX. */ + RTNETADDRTYPE_IPX, + /** MAC address. */ + RTNETADDRTYPE_MAC, + /** The end of the valid values. */ + RTNETADDRTYPE_END, + /** The usual 32-bit hack. */ + RTNETADDRTYPE_32_BIT_HACK = 0x7fffffff +} RTNETADDRTYPE; +/** Pointer to a network address type. */ +typedef RTNETADDRTYPE *PRTNETADDRTYPE; +/** Pointer to a const network address type. */ +typedef RTNETADDRTYPE const *PCRTNETADDRTYPE; + +/** + * Network address. + * + * @remarks The size and type values may change. + */ +typedef struct RTNETADDR +{ + /** The address union. */ + RTNETADDRU uAddr; + /** Indicates which view of @a u that is valid. */ + RTNETADDRTYPE enmType; + /** The port number for IPv4 and IPv6 addresses. This is set to + * RTNETADDR_NA_PORT if not applicable. */ + uint32_t uPort; +} RTNETADDR; +/** Pointer to a network address. */ +typedef RTNETADDR *PRTNETADDR; +/** Pointer to a const network address. */ +typedef RTNETADDR const *PCRTNETADDR; + +/** The not applicable value of RTNETADDR::uPort value use to inid. */ +#define RTNETADDR_PORT_NA UINT32_MAX + +/** + * Ethernet header. + */ +#pragma pack(1) +typedef struct RTNETETHERHDR +{ + RTMAC DstMac; + RTMAC SrcMac; + /** Ethernet frame type or frame size, depending on the kind of ethernet. + * This is big endian on the wire. */ + uint16_t EtherType; +} RTNETETHERHDR; +#pragma pack() +AssertCompileSize(RTNETETHERHDR, 14); +/** Pointer to an ethernet header. */ +typedef RTNETETHERHDR *PRTNETETHERHDR; +/** Pointer to a const ethernet header. */ +typedef RTNETETHERHDR const *PCRTNETETHERHDR; + +/** @name EtherType (RTNETETHERHDR::EtherType) + * @{ */ +#define RTNET_ETHERTYPE_IPV4 UINT16_C(0x0800) +#define RTNET_ETHERTYPE_ARP UINT16_C(0x0806) +#define RTNET_ETHERTYPE_IPV6 UINT16_C(0x86dd) +#define RTNET_ETHERTYPE_VLAN UINT16_C(0x8100) +#define RTNET_ETHERTYPE_IPX_1 UINT16_C(0x8037) +#define RTNET_ETHERTYPE_IPX_2 UINT16_C(0x8137) +#define RTNET_ETHERTYPE_IPX_3 UINT16_C(0x8138) +/** @} */ + + +/** + * IPv4 header. + * All is bigendian on the wire. + */ +#pragma pack(1) +typedef struct RTNETIPV4 +{ +#ifdef RT_BIG_ENDIAN + unsigned int ip_v : 4; + unsigned int ip_hl : 4; + unsigned int ip_tos : 8; + unsigned int ip_len : 16; +#else + /** 00:0 - Header length given as a 32-bit word count. */ + unsigned int ip_hl : 4; + /** 00:4 - Header version. */ + unsigned int ip_v : 4; + /** 01 - Type of service. */ + unsigned int ip_tos : 8; + /** 02 - Total length (header + data). */ + unsigned int ip_len : 16; +#endif + /** 04 - Packet idenficiation. */ + uint16_t ip_id; + /** 06 - Offset if fragmented. */ + uint16_t ip_off; + /** 08 - Time to live. */ + uint8_t ip_ttl; + /** 09 - Protocol. */ + uint8_t ip_p; + /** 0a - Header check sum. */ + uint16_t ip_sum; + /** 0c - Source address. */ + RTNETADDRIPV4 ip_src; + /** 10 - Destination address. */ + RTNETADDRIPV4 ip_dst; + /** 14 - Options (optional). */ + uint32_t ip_options[1]; +} RTNETIPV4; +#pragma pack() +AssertCompileSize(RTNETIPV4, 6 * 4); +/** Pointer to a IPv4 header. */ +typedef RTNETIPV4 *PRTNETIPV4; +/** Pointer to a const IPv4 header. */ +typedef RTNETIPV4 const *PCRTNETIPV4; + +/** The minimum IPv4 header length (in bytes). + * Up to and including RTNETIPV4::ip_dst. */ +#define RTNETIPV4_MIN_LEN (20) + + +/** @name IPv4 Protocol Numbers + * @{ */ +/** IPv4: ICMP */ +#define RTNETIPV4_PROT_ICMP (1) +/** IPv4: TCP */ +#define RTNETIPV4_PROT_TCP (6) +/** IPv4: UDP */ +#define RTNETIPV4_PROT_UDP (17) +/** @} */ + +/** @name Common IPv4 Port Assignments + * @{ + */ +/** Boostrap Protocol / DHCP) Server. */ +#define RTNETIPV4_PORT_BOOTPS (67) +/** Boostrap Protocol / DHCP) Client. */ +#define RTNETIPV4_PORT_BOOTPC (68) +/** @} */ + +/** @name IPv4 Flags + * @{ */ +/** IPv4: Don't fragment */ +#define RTNETIPV4_FLAGS_DF (0x4000) +/** IPv4: More fragments */ +#define RTNETIPV4_FLAGS_MF (0x2000) +/** @} */ + +RTDECL(uint16_t) RTNetIPv4HdrChecksum(PCRTNETIPV4 pIpHdr); +RTDECL(bool) RTNetIPv4IsHdrValid(PCRTNETIPV4 pIpHdr, size_t cbHdrMax, size_t cbPktMax, bool fChecksum); +RTDECL(uint32_t) RTNetIPv4PseudoChecksum(PCRTNETIPV4 pIpHdr); +RTDECL(uint32_t) RTNetIPv4PseudoChecksumBits(RTNETADDRIPV4 SrcAddr, RTNETADDRIPV4 DstAddr, uint8_t bProtocol, uint16_t cbPkt); +RTDECL(uint32_t) RTNetIPv4AddDataChecksum(void const *pvData, size_t cbData, uint32_t u32Sum, bool *pfOdd); +RTDECL(uint16_t) RTNetIPv4FinalizeChecksum(uint32_t u32Sum); + + +/** + * IPv6 header. + * All is bigendian on the wire. + */ +#pragma pack(1) +typedef struct RTNETIPV6 +{ + /** Version (4 bits), Traffic Class (8 bits) and Flow Lable (20 bits). + * @todo this is probably mislabeled - ip6_flow vs. ip6_vfc, fix later. */ + uint32_t ip6_vfc; + /** 04 - Payload length, including extension headers. */ + uint16_t ip6_plen; + /** 06 - Next header type (RTNETIPV4_PROT_XXX). */ + uint8_t ip6_nxt; + /** 07 - Hop limit. */ + uint8_t ip6_hlim; + /** xx - Source address. */ + RTNETADDRIPV6 ip6_src; + /** xx - Destination address. */ + RTNETADDRIPV6 ip6_dst; +} RTNETIPV6; +#pragma pack() +AssertCompileSize(RTNETIPV6, 8 + 16 + 16); +/** Pointer to a IPv6 header. */ +typedef RTNETIPV6 *PRTNETIPV6; +/** Pointer to a const IPv6 header. */ +typedef RTNETIPV6 const *PCRTNETIPV6; + +/** The minimum IPv6 header length (in bytes). + * Up to and including RTNETIPV6::ip6_dst. */ +#define RTNETIPV6_MIN_LEN (40) +#define RTNETIPV6_ICMPV6_ND_WITH_LLA_OPT_MIN_LEN (32) + +RTDECL(uint32_t) RTNetIPv6PseudoChecksum(PCRTNETIPV6 pIpHdr); +RTDECL(uint32_t) RTNetIPv6PseudoChecksumEx(PCRTNETIPV6 pIpHdr, uint8_t bProtocol, uint16_t cbPkt); +RTDECL(uint32_t) RTNetIPv6PseudoChecksumBits(PCRTNETADDRIPV6 pSrcAddr, PCRTNETADDRIPV6 pDstAddr, + uint8_t bProtocol, uint16_t cbPkt); + + +/** + * UDP header. + */ +#pragma pack(1) +typedef struct RTNETUDP +{ + /** The source port. */ + uint16_t uh_sport; + /** The destination port. */ + uint16_t uh_dport; + /** The length of the UDP header and associated data. */ + uint16_t uh_ulen; + /** The checksum of the pseudo header, the UDP header and the data. */ + uint16_t uh_sum; +} RTNETUDP; +#pragma pack() +AssertCompileSize(RTNETUDP, 8); +/** Pointer to an UDP header. */ +typedef RTNETUDP *PRTNETUDP; +/** Pointer to a const UDP header. */ +typedef RTNETUDP const *PCRTNETUDP; + +/** The minimum UDP packet length (in bytes). (RTNETUDP::uh_ulen) */ +#define RTNETUDP_MIN_LEN (8) + +RTDECL(uint16_t) RTNetUDPChecksum(uint32_t u32Sum, PCRTNETUDP pUdpHdr); +RTDECL(uint32_t) RTNetIPv4AddUDPChecksum(PCRTNETUDP pUdpHdr, uint32_t u32Sum); +RTDECL(uint16_t) RTNetIPv4UDPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData); +RTDECL(bool) RTNetIPv4IsUDPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, size_t cbPktMax); +RTDECL(bool) RTNetIPv4IsUDPValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData, size_t cbPktMax, bool fChecksum); + + +/** + * IPv4 BOOTP / DHCP packet. + */ +#pragma pack(1) +typedef struct RTNETBOOTP +{ + /** 00 - The packet opcode (RTNETBOOTP_OP_*). */ + uint8_t bp_op; + /** 01 - Hardware address type. Same as RTNETARPHDR::ar_htype. */ + uint8_t bp_htype; + /** 02 - Hardware address length. */ + uint8_t bp_hlen; + /** 03 - Gateway hops. */ + uint8_t bp_hops; + /** 04 - Transaction ID. */ + uint32_t bp_xid; + /** 08 - Seconds since boot started. */ + uint16_t bp_secs; + /** 0a - Unused (BOOTP) / Flags (DHCP) (RTNET_DHCP_FLAGS_*). */ + uint16_t bp_flags; + /** 0c - Client IPv4 address. */ + RTNETADDRIPV4 bp_ciaddr; + /** 10 - Your IPv4 address. */ + RTNETADDRIPV4 bp_yiaddr; + /** 14 - Server IPv4 address. */ + RTNETADDRIPV4 bp_siaddr; + /** 18 - Gateway IPv4 address. */ + RTNETADDRIPV4 bp_giaddr; + /** 1c - Client hardware address. */ + union + { + uint8_t au8[16]; + RTMAC Mac; + } bp_chaddr; + /** 2c - Server name. */ + uint8_t bp_sname[64]; + /** 6c - File name / more DHCP options. */ + uint8_t bp_file[128]; + /** ec - Vendor specific area (BOOTP) / Options (DHCP). + * @remark This is really 312 bytes in the DHCP version. */ + union + { + uint8_t au8[128]; + struct DHCP + { + /** ec - The DHCP cookie (RTNET_DHCP_COOKIE). */ + uint32_t dhcp_cookie; + /** f0 - The DHCP options. */ + uint8_t dhcp_opts[124]; + } Dhcp; + } bp_vend; + +} RTNETBOOTP; +#pragma pack() +AssertCompileSize(RTNETBOOTP, 0xec + 128); +/** Pointer to a BOOTP / DHCP packet. */ +typedef RTNETBOOTP *PRTNETBOOTP; +/** Pointer to a const BOOTP / DHCP packet. */ +typedef RTNETBOOTP const *PCRTNETBOOTP; + +/** Minimum BOOTP packet length. For quick validation, no standard thing really. */ +#define RTNETBOOTP_MIN_LEN 0xec +/** Minimum DHCP packet length. For quick validation, no standard thing really. */ +#define RTNETBOOTP_DHCP_MIN_LEN 0xf1 + +/** The normal size of the a DHCP packet (i.e. a RTNETBOOTP). + * Same as RTNET_DHCP_OPT_SIZE, just expressed differently. */ +#define RTNET_DHCP_NORMAL_SIZE (0xec + 4 + RTNET_DHCP_OPT_SIZE) +/** The normal size of RTNETBOOTP::bp_vend::Dhcp::dhcp_opts. */ +#define RTNET_DHCP_OPT_SIZE (312 - 4) + +/** @name BOOTP packet opcode values + * @{ */ +#define RTNETBOOTP_OP_REQUEST 1 +#define RTNETBOOTP_OP_REPLY 2 +/** @} */ + +/** @name DHCP flags (RTNETBOOTP::bp_flags) + * @{ */ +#define RTNET_DHCP_FLAGS_NO_BROADCAST UINT16_C(0x8000) /** @todo check test!!! */ +/** @} */ + +/** The DHCP cookie (network endian). */ +#define RTNET_DHCP_COOKIE UINT32_C(0x63825363) + +/** + * An IPv4 DHCP option header. + */ +typedef struct RTNETDHCPOPT +{ + /** 00 - The DHCP option. */ + uint8_t dhcp_opt; + /** 01 - The data length (excluding this header). */ + uint8_t dhcp_len; + /* 02 - The option data follows here, optional and of variable length. */ +} RTNETDHCPOPT; +AssertCompileSize(RTNETDHCPOPT, 2); +/** Pointer to a DHCP option header. */ +typedef RTNETDHCPOPT *PRTNETDHCPOPT; +/** Pointer to a const DHCP option header. */ +typedef RTNETDHCPOPT const *PCRTNETDHCPOPT; + +/** @name DHCP options + * @{ */ +/** 1 byte padding, this has no dhcp_len field. */ +#define RTNET_DHCP_OPT_PAD 0 + +/** The subnet mask. */ +#define RTNET_DHCP_OPT_SUBNET_MASK 1 +/** The time offset. */ +#define RTNET_DHCP_OPT_TIME_OFFSET 2 +/** The routers for the subnet. */ +#define RTNET_DHCP_OPT_ROUTERS 3 +/** Domain Name Server. */ +#define RTNET_DHCP_OPT_DNS 6 +/** Host name. */ +#define RTNET_DHCP_OPT_HOST_NAME 12 +/** Domain name. */ +#define RTNET_DHCP_OPT_DOMAIN_NAME 15 + +/** The requested address. */ +#define RTNET_DHCP_OPT_REQ_ADDR 50 +/** The lease time in seconds. */ +#define RTNET_DHCP_OPT_LEASE_TIME 51 +/** Option overload. + * Indicates that the bp_file and/or bp_sname holds contains DHCP options. */ +#define RTNET_DHCP_OPT_OPTION_OVERLOAD 52 +/** Have a 8-bit message type value as data, see RTNET_DHCP_MT_*. */ +#define RTNET_DHCP_OPT_MSG_TYPE 53 +/** Server ID. */ +#define RTNET_DHCP_OPT_SERVER_ID 54 +/** Parameter request list. */ +#define RTNET_DHCP_OPT_PARAM_REQ_LIST 55 +/** The maximum DHCP message size a client is willing to accept. */ +#define RTNET_DHCP_OPT_MAX_DHCP_MSG_SIZE 57 +/** Client ID. */ +#define RTNET_DHCP_OPT_CLIENT_ID 61 +/** TFTP server name. */ +#define RTNET_DHCP_OPT_TFTP_SERVER_NAME 66 +/** Bootfile name. */ +#define RTNET_DHCP_OPT_BOOTFILE_NAME 67 + +/** Marks the end of the DHCP options, this has no dhcp_len field. */ +#define RTNET_DHCP_OPT_END 255 +/** @} */ + +/** @name DHCP Message Types (option 53) + * @{ */ +#define RTNET_DHCP_MT_DISCOVER 1 +#define RTNET_DHCP_MT_OFFER 2 +#define RTNET_DHCP_MT_REQUEST 3 +#define RTNET_DHCP_MT_DECLINE 4 +#define RTNET_DHCP_MT_ACK 5 +#define RTNET_DHCP_MT_NAC 6 +#define RTNET_DHCP_MT_RELEASE 7 +#define RTNET_DHCP_MT_INFORM 8 +/** @} */ + +/** @name DHCP Flags + * @{ */ +#define RTNET_DHCP_FLAG_BROADCAST 0x8000 +/** @} */ + +RTDECL(bool) RTNetIPv4IsDHCPValid(PCRTNETUDP pUdpHdr, PCRTNETBOOTP pDhcp, size_t cbDhcp, uint8_t *pMsgType); + + +/** + * IPv4 DHCP packet. + * @deprecated Use RTNETBOOTP. + */ +#pragma pack(1) +typedef struct RTNETDHCP +{ + /** 00 - The packet opcode. */ + uint8_t Op; + /** Hardware address type. */ + uint8_t HType; + /** Hardware address length. */ + uint8_t HLen; + uint8_t Hops; + uint32_t XID; + uint16_t Secs; + uint16_t Flags; + /** Client IPv4 address. */ + RTNETADDRIPV4 CIAddr; + /** Your IPv4 address. */ + RTNETADDRIPV4 YIAddr; + /** Server IPv4 address. */ + RTNETADDRIPV4 SIAddr; + /** Gateway IPv4 address. */ + RTNETADDRIPV4 GIAddr; + /** Client hardware address. */ + uint8_t CHAddr[16]; + /** Server name. */ + uint8_t SName[64]; + uint8_t File[128]; + uint8_t abMagic[4]; + uint8_t DhcpOpt; + uint8_t DhcpLen; /* 1 */ + uint8_t DhcpReq; + uint8_t abOptions[57]; +} RTNETDHCP; +#pragma pack() +/** @todo AssertCompileSize(RTNETDHCP, ); */ +/** Pointer to a DHCP packet. */ +typedef RTNETDHCP *PRTNETDHCP; +/** Pointer to a const DHCP packet. */ +typedef RTNETDHCP const *PCRTNETDHCP; + + +/** + * TCP packet. + */ +#pragma pack(1) +typedef struct RTNETTCP +{ + /** 00 - The source port. */ + uint16_t th_sport; + /** 02 - The destination port. */ + uint16_t th_dport; + /** 04 - The sequence number. */ + uint32_t th_seq; + /** 08 - The acknowledgement number. */ + uint32_t th_ack; +#ifdef RT_BIG_ENDIAN + unsigned int th_win : 16; + unsigned int th_flags : 8; + unsigned int th_off : 4; + unsigned int th_x2 : 4; +#else + /** 0c:0 - Reserved. */ + unsigned int th_x2 : 4; + /** 0c:4 - The data offset given as a dword count from the start of this header. */ + unsigned int th_off : 4; + /** 0d - flags. */ + unsigned int th_flags : 8; + /** 0e - The window. */ + unsigned int th_win : 16; +#endif + /** 10 - The checksum of the pseudo header, the TCP header and the data. */ + uint16_t th_sum; + /** 12 - The urgent pointer. */ + uint16_t th_urp; + /* (options follows here and then the data (aka text).) */ +} RTNETTCP; +#pragma pack() +AssertCompileSize(RTNETTCP, 20); +/** Pointer to a TCP packet. */ +typedef RTNETTCP *PRTNETTCP; +/** Pointer to a const TCP packet. */ +typedef RTNETTCP const *PCRTNETTCP; + +/** The minimum TCP header length (in bytes). (RTNETTCP::th_off * 4) */ +#define RTNETTCP_MIN_LEN (20) + +/** @name TCP flags (RTNETTCP::th_flags) + * @{ */ +#define RTNETTCP_F_FIN 0x01 +#define RTNETTCP_F_SYN 0x02 +#define RTNETTCP_F_RST 0x04 +#define RTNETTCP_F_PSH 0x08 +#define RTNETTCP_F_ACK 0x10 +#define RTNETTCP_F_URG 0x20 +#define RTNETTCP_F_ECE 0x40 +#define RTNETTCP_F_CWR 0x80 +/** @} */ + +RTDECL(uint16_t) RTNetTCPChecksum(uint32_t u32Sum, PCRTNETTCP pTcpHdr, void const *pvData, size_t cbData); +RTDECL(uint32_t) RTNetIPv4AddTCPChecksum(PCRTNETTCP pTcpHdr, uint32_t u32Sum); +RTDECL(uint16_t) RTNetIPv4TCPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, void const *pvData); +RTDECL(bool) RTNetIPv4IsTCPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, size_t cbPktMax); +RTDECL(bool) RTNetIPv4IsTCPValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, void const *pvData, + size_t cbPktMax, bool fChecksum); + + +/** + * IPv4 ICMP packet header. + */ +#pragma pack(1) +typedef struct RTNETICMPV4HDR +{ + /** 00 - The ICMP message type. */ + uint8_t icmp_type; + /** 01 - Type specific code that further qualifies the message. */ + uint8_t icmp_code; + /** 02 - Checksum of the ICMP message. */ + uint16_t icmp_cksum; +} RTNETICMPV4HDR; +#pragma pack() +AssertCompileSize(RTNETICMPV4HDR, 4); +/** Pointer to an ICMP packet header. */ +typedef RTNETICMPV4HDR *PRTNETICMPV4HDR; +/** Pointer to a const ICMP packet header. */ +typedef RTNETICMPV4HDR const *PCRTNETICMPV4HDR; + +/** @name ICMP (v4) message types. + * @{ */ +#define RTNETICMPV4_TYPE_ECHO_REPLY 0 +#define RTNETICMPV4_TYPE_ECHO_REQUEST 8 +#define RTNETICMPV4_TYPE_TRACEROUTE 30 +/** @} */ + +/** + * IPv4 ICMP ECHO Reply & Request packet. + */ +#pragma pack(1) +typedef struct RTNETICMPV4ECHO +{ + /** 00 - The ICMP header. */ + RTNETICMPV4HDR Hdr; + /** 04 - The identifier to help the requestor match up the reply. + * Can be 0. Typically fixed value. */ + uint16_t icmp_id; + /** 06 - The sequence number to help the requestor match up the reply. + * Can be 0. Typically incrementing between requests. */ + uint16_t icmp_seq; + /** 08 - Variable length data that is to be returned unmodified in the reply. */ + uint8_t icmp_data[1]; +} RTNETICMPV4ECHO; +#pragma pack() +AssertCompileSize(RTNETICMPV4ECHO, 9); +/** Pointer to an ICMP ECHO packet. */ +typedef RTNETICMPV4ECHO *PRTNETICMPV4ECHO; +/** Pointer to a const ICMP ECHO packet. */ +typedef RTNETICMPV4ECHO const *PCRTNETICMPV4ECHO; + +/** + * IPv4 ICMP TRACEROUTE packet. + * This is an reply to an IP packet with the traceroute option set. + */ +#pragma pack(1) +typedef struct RTNETICMPV4TRACEROUTE +{ + /** 00 - The ICMP header. */ + RTNETICMPV4HDR Hdr; + /** 04 - Identifier copied from the traceroute option's ID number. */ + uint16_t icmp_id; + /** 06 - Unused. (Possibly an icmp_seq?) */ + uint16_t icmp_void; + /** 08 - Outbound hop count. From the IP packet causing this message. */ + uint16_t icmp_ohc; + /** 0a - Return hop count. From the IP packet causing this message. */ + uint16_t icmp_rhc; + /** 0c - Output link speed, 0 if not known. */ + uint32_t icmp_speed; + /** 10 - Output link MTU, 0 if not known. */ + uint32_t icmp_mtu; +} RTNETICMPV4TRACEROUTE; +#pragma pack() +AssertCompileSize(RTNETICMPV4TRACEROUTE, 20); +/** Pointer to an ICMP TRACEROUTE packet. */ +typedef RTNETICMPV4TRACEROUTE *PRTNETICMPV4TRACEROUTE; +/** Pointer to a const ICMP TRACEROUTE packet. */ +typedef RTNETICMPV4TRACEROUTE const *PCRTNETICMPV4TRACEROUTE; + +/** @todo add more ICMPv4 as needed. */ + +/** + * IPv4 ICMP union packet. + */ +typedef union RTNETICMPV4 +{ + RTNETICMPV4HDR Hdr; + RTNETICMPV4ECHO Echo; + RTNETICMPV4TRACEROUTE Traceroute; +} RTNETICMPV4; +/** Pointer to an ICMP union packet. */ +typedef RTNETICMPV4 *PRTNETICMPV4; +/** Pointer to a const ICMP union packet. */ +typedef RTNETICMPV4 const *PCRTNETICMPV4; + + +/** + * IPv6 ICMP packet header. + */ +#pragma pack(1) +typedef struct RTNETICMPV6HDR +{ + /** 00 - The ICMPv6 message type. */ + uint8_t icmp6_type; + /** 01 - Type specific code that further qualifies the message. */ + uint8_t icmp6_code; + /** 02 - Checksum of the ICMPv6 message. */ + uint16_t icmp6_cksum; +} RTNETICMPV6HDR; +#pragma pack() +AssertCompileSize(RTNETICMPV6HDR, 4); +/** Pointer to an ICMPv6 packet header. */ +typedef RTNETICMPV6HDR *PRTNETICMPV6HDR; +/** Pointer to a const ICMP packet header. */ +typedef RTNETICMPV6HDR const *PCRTNETICMPV6HDR; + +#define RTNETIPV6_PROT_ICMPV6 (58) + +/** @name Internet Control Message Protocol version 6 (ICMPv6) message types. + * @{ */ +#define RTNETIPV6_ICMP_TYPE_RS 133 +#define RTNETIPV6_ICMP_TYPE_RA 134 +#define RTNETIPV6_ICMP_TYPE_NS 135 +#define RTNETIPV6_ICMP_TYPE_NA 136 +#define RTNETIPV6_ICMP_TYPE_RDR 137 +/** @} */ + +/** @name Neighbor Discovery option types + * @{ */ +#define RTNETIPV6_ICMP_ND_SLLA_OPT (1) +#define RTNETIPV6_ICMP_ND_TLLA_OPT (2) +/** @} */ + +/** ICMPv6 ND Source/Target Link Layer Address option */ +#pragma pack(1) +typedef struct RTNETNDP_LLA_OPT +{ + uint8_t type; + uint8_t len; + RTMAC lla; +} RTNETNDP_LLA_OPT; +#pragma pack() + +AssertCompileSize(RTNETNDP_LLA_OPT, 1+1+6); + +typedef RTNETNDP_LLA_OPT *PRTNETNDP_LLA_OPT; +typedef RTNETNDP_LLA_OPT const *PCRTNETNDP_LLA_OPT; + +/** ICMPv6 ND Neighbor Sollicitation */ +#pragma pack(1) +typedef struct RTNETNDP +{ + /** 00 - The ICMPv6 header. */ + RTNETICMPV6HDR Hdr; + /** 04 - reserved */ + uint32_t reserved; + /** 08 - target address */ + RTNETADDRIPV6 target_address; +} RTNETNDP; +#pragma pack() +AssertCompileSize(RTNETNDP, 4+4+16); +/** Pointer to a NDP ND packet. */ +typedef RTNETNDP *PRTNETNDP; +/** Pointer to a const NDP NS packet. */ +typedef RTNETNDP const *PCRTNETNDP; + + +/** + * Ethernet ARP header. + */ +#pragma pack(1) +typedef struct RTNETARPHDR +{ + /** The hardware type. */ + uint16_t ar_htype; + /** The protocol type (ethertype). */ + uint16_t ar_ptype; + /** The hardware address length. */ + uint8_t ar_hlen; + /** The protocol address length. */ + uint8_t ar_plen; + /** The operation. */ + uint16_t ar_oper; +} RTNETARPHDR; +#pragma pack() +AssertCompileSize(RTNETARPHDR, 8); +/** Pointer to an ethernet ARP header. */ +typedef RTNETARPHDR *PRTNETARPHDR; +/** Pointer to a const ethernet ARP header. */ +typedef RTNETARPHDR const *PCRTNETARPHDR; + +/** ARP hardware type - ethernet. */ +#define RTNET_ARP_ETHER UINT16_C(1) + +/** @name ARP operations + * @{ */ +#define RTNET_ARPOP_REQUEST UINT16_C(1) /**< Request hardware address given a protocol address (ARP). */ +#define RTNET_ARPOP_REPLY UINT16_C(2) +#define RTNET_ARPOP_REVREQUEST UINT16_C(3) /**< Request protocol address given a hardware address (RARP). */ +#define RTNET_ARPOP_REVREPLY UINT16_C(4) +#define RTNET_ARPOP_INVREQUEST UINT16_C(8) /**< Inverse ARP. */ +#define RTNET_ARPOP_INVREPLY UINT16_C(9) +/** Check if an ARP operation is a request or not. */ +#define RTNET_ARPOP_IS_REQUEST(Op) ((Op) & 1) +/** Check if an ARP operation is a reply or not. */ +#define RTNET_ARPOP_IS_REPLY(Op) (!RTNET_ARPOP_IS_REQUEST(Op)) +/** @} */ + + +/** + * Ethernet IPv4 + 6-byte MAC ARP request packet. + */ +#pragma pack(1) +typedef struct RTNETARPIPV4 +{ + /** ARP header. */ + RTNETARPHDR Hdr; + /** The sender hardware address. */ + RTMAC ar_sha; + /** The sender protocol address. */ + RTNETADDRIPV4 ar_spa; + /** The target hardware address. */ + RTMAC ar_tha; + /** The target protocol address. */ + RTNETADDRIPV4 ar_tpa; +} RTNETARPIPV4; +#pragma pack() +AssertCompileSize(RTNETARPIPV4, 8+6+4+6+4); +/** Pointer to an ethernet IPv4+MAC ARP request packet. */ +typedef RTNETARPIPV4 *PRTNETARPIPV4; +/** Pointer to a const ethernet IPv4+MAC ARP request packet. */ +typedef RTNETARPIPV4 const *PCRTNETARPIPV4; + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/nocrt/limits.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/nocrt/limits.h @@ -0,0 +1,86 @@ +/** @file + * IPRT / No-CRT - Our own limits header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_nocrt_limits_h +#define ___iprt_nocrt_limits_h + +#include + +#define CHAR_BIT 8 +#define SCHAR_MAX 0x7f +#define SCHAR_MIN (-0x7f - 1) +#define UCHAR_MAX 0xff +#if 1 /* ASSUMES: signed char */ +# define CHAR_MAX SCHAR_MAX +# define CHAR_MIN SCHAR_MIN +#else +# define CHAR_MAX UCHAR_MAX +# define CHAR_MIN 0 +#endif + +#define WORD_BIT 16 +#define USHRT_MAX 0xffff +#define SHRT_MAX 0x7fff +#define SHRT_MIN (-0x7fff - 1) + +/* ASSUMES 32-bit int */ +#define UINT_MAX 0xffffffffU +#define INT_MAX 0x7fffffff +#define INT_MIN (-0x7fffffff - 1) + +#if defined(RT_ARCH_X86) || defined(RT_OS_WINDOWS) || defined(RT_ARCH_SPARC) +# define LONG_BIT 32 +# define ULONG_MAX 0xffffffffU +# define LONG_MAX 0x7fffffff +# define LONG_MIN (-0x7fffffff - 1) +#elif defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define LONG_BIT 64 +# define ULONG_MAX UINT64_C(0xffffffffffffffff) +# define LONG_MAX INT64_C(0x7fffffffffffffff) +# define LONG_MIN (INT64_C(-0x7fffffffffffffff) - 1) +#else +# error "PORTME" +#endif + +#define LLONG_BIT 64 +#define ULLONG_MAX UINT64_C(0xffffffffffffffff) +#define LLONG_MAX INT64_C(0x7fffffffffffffff) +#define LLONG_MIN (INT64_C(-0x7fffffffffffffff) - 1) + +#if ARCH_BITS == 32 +# define SIZE_T_MAX 0xffffffffU +# define SSIZE_MAX 0x7fffffff +#elif ARCH_BITS == 64 +# define SIZE_T_MAX UINT64_C(0xffffffffffffffff) +# define SSIZE_MAX INT64_C(0x7fffffffffffffff) +#else +# error "huh?" +#endif + +/*#define OFF_MAX __OFF_MAX +#define OFF_MIN __OFF_MIN*/ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/param.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/param.h @@ -0,0 +1,131 @@ +/** @file + * IPRT - Parameter Definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_param_h +#define ___iprt_param_h + +/** @todo Much of the PAGE_* stuff here is obsolete and highly risky to have around. + * As for component configs (MM_*), either we gather all in here or we move those bits away! */ + +/** @defgroup grp_rt_param System Parameter Definitions + * @ingroup grp_rt_cdefs + * @{ + */ + +/* Undefine PAGE_SIZE and PAGE_SHIFT to avoid unnecessary noice when clashing + * with system headers. Include system headers before / after iprt depending + * on which you wish to take precedence. */ +#undef PAGE_SIZE +#undef PAGE_SHIFT + +/* Undefine PAGE_OFFSET_MASK to avoid the conflict with the-linux-kernel.h */ +#undef PAGE_OFFSET_MASK + +/** + * i386 Page size. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_SIZE 8192 +#else +# define PAGE_SIZE 4096 +#endif + +/** + * i386 Page shift. + * This is used to convert between size (in bytes) and page count. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_SHIFT 13 +#else +# define PAGE_SHIFT 12 +#endif + +/** + * i386 Page offset mask. + * + * Do NOT one-complement this for whatever purpose. You may get a 32-bit const when you want a 64-bit one. + * Use PAGE_BASE_MASK, PAGE_BASE_GC_MASK, PAGE_BASE_HC_MASK, PAGE_ADDRESS() or X86_PTE_PAE_PG_MASK. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_OFFSET_MASK 0x1fff +#else +# define PAGE_OFFSET_MASK 0xfff +#endif + +/** + * Page address mask for the guest context POINTERS. + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_GC_MASK (~(RTGCUINTPTR)PAGE_OFFSET_MASK) + +/** + * Page address mask for the host context POINTERS. + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_HC_MASK (~(RTHCUINTPTR)PAGE_OFFSET_MASK) + +/** + * Page address mask for the both context POINTERS. + * + * Be careful when using this since it may be a size too big! + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_MASK (~(RTUINTPTR)PAGE_OFFSET_MASK) + +/** + * Get the page aligned address of a POINTER in the CURRENT context. + * + * @returns Page aligned address (it's an uintptr_t). + * @param pv The virtual address to align. + * + * @remarks Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + * @remarks This only works with POINTERS in the current context. + * Do NOT use on guest address or physical address! + */ +#define PAGE_ADDRESS(pv) ((uintptr_t)(pv) & ~(uintptr_t)PAGE_OFFSET_MASK) + +/** + * Get the page aligned address of a physical address + * + * @returns Page aligned address (it's an RTHCPHYS or RTGCPHYS). + * @param Phys The physical address to align. + */ +#define PHYS_PAGE_ADDRESS(Phys) ((Phys) & X86_PTE_PAE_PG_MASK) + +/** + * Host max path (the reasonable value). + * @remarks defined both by iprt/param.h and iprt/path.h. + */ +#if !defined(___iprt_path_h) || defined(DOXYGEN_RUNNING) +# define RTPATH_MAX (4096 + 4) /* (PATH_MAX + 1) on linux w/ some alignment */ +#endif + +/** @} */ + + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/path.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/path.h @@ -0,0 +1,1478 @@ +/** @file + * IPRT - Path Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_path_h +#define ___iprt_path_h + +#include +#include +#ifdef IN_RING3 +# include +#endif + + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_path RTPath - Path Manipulation + * @ingroup grp_rt + * @{ + */ + +/** + * Host max path (the reasonable value). + * @remarks defined both by iprt/param.h and iprt/path.h. + */ +#if !defined(___iprt_param_h) || defined(DOXYGEN_RUNNING) +# define RTPATH_MAX (4096 + 4) /* (PATH_MAX + 1) on linux w/ some alignment */ +#endif + +/** @def RTPATH_TAG + * The default allocation tag used by the RTPath allocation APIs. + * + * When not defined before the inclusion of iprt/string.h, this will default to + * the pointer to the current file name. The string API will make of use of + * this as pointer to a volatile but read-only string. + */ +#ifndef RTPATH_TAG +# define RTPATH_TAG (__FILE__) +#endif + + +/** @name RTPATH_F_XXX - Generic flags for APIs working on the file system. + * @{ */ +/** Last component: Work on the link. */ +#define RTPATH_F_ON_LINK RT_BIT_32(0) +/** Last component: Follow if link. */ +#define RTPATH_F_FOLLOW_LINK RT_BIT_32(1) +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATH_F_NO_SYMLINKS RT_BIT_32(2) +/** @} */ + +/** Validates a flags parameter containing RTPATH_F_*. + * @remarks The parameters will be referenced multiple times. */ +#define RTPATH_F_IS_VALID(a_fFlags, a_fIgnore) \ + ( ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_ON_LINK \ + || ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_FOLLOW_LINK ) + + +/** @name RTPATH_STR_F_XXX - Generic flags for APIs working with path strings. + * @{ + */ +/** Host OS path style (default 0 value). */ +#define RTPATH_STR_F_STYLE_HOST UINT32_C(0x00000000) +/** DOS, OS/2 and Windows path style. */ +#define RTPATH_STR_F_STYLE_DOS UINT32_C(0x00000001) +/** Unix path style. */ +#define RTPATH_STR_F_STYLE_UNIX UINT32_C(0x00000002) +/** Reserved path style. */ +#define RTPATH_STR_F_STYLE_RESERVED UINT32_C(0x00000003) +/** The path style mask. */ +#define RTPATH_STR_F_STYLE_MASK UINT32_C(0x00000003) +/** Partial path - no start. + * This causes the API to skip the root specification parsing. */ +#define RTPATH_STR_F_NO_START UINT32_C(0x00000010) +/** Partial path - no end. + * This causes the API to skip the filename and dir-slash parsing. */ +#define RTPATH_STR_F_NO_END UINT32_C(0x00000020) +/** Partial path - no start and no end. */ +#define RTPATH_STR_F_MIDDLE (RTPATH_STR_F_NO_START | RTPATH_STR_F_NO_END) + +/** Reserved for future use. */ +#define RTPATH_STR_F_RESERVED_MASK UINT32_C(0x0000ffcc) +/** @} */ + +/** Validates a flags parameter containing RTPATH_FSTR_. + * @remarks The parameters will be references multiple times. */ +#define RTPATH_STR_F_IS_VALID(a_fFlags, a_fIgnore) \ + ( ((a_fFlags) & ~((uint32_t)(a_fIgnore) | RTPATH_STR_F_STYLE_MASK | RTPATH_STR_F_MIDDLE)) == 0 \ + && ((a_fFlags) & RTPATH_STR_F_STYLE_MASK) != RTPATH_STR_F_STYLE_RESERVED \ + && ((a_fFlags) & RTPATH_STR_F_RESERVED_MASK) == 0 ) + + +/** @def RTPATH_STYLE + * The host path style. This is set to RTPATH_STR_F_STYLE_DOS, + * RTPATH_STR_F_STYLE_UNIX, or other future styles. */ +#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) +# define RTPATH_STYLE RTPATH_STR_F_STYLE_DOS +#else +# define RTPATH_STYLE RTPATH_STR_F_STYLE_UNIX +#endif + + +/** @def RTPATH_SLASH + * The preferred slash character. + * + * @remark IPRT will always accept unix slashes. So, normally you would + * never have to use this define. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_SLASH '\\' +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_SLASH '/' +#else +# error "Unsupported RTPATH_STYLE value." +#endif + +/** @deprecated Use '/'! */ +#define RTPATH_DELIMITER RTPATH_SLASH + + +/** @def RTPATH_SLASH_STR + * The preferred slash character as a string, handy for concatenations + * with other strings. + * + * @remark IPRT will always accept unix slashes. So, normally you would + * never have to use this define. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_SLASH_STR "\\" +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_SLASH_STR "/" +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_SLASH + * Checks if a character is a slash. + * + * @returns true if it's a slash and false if not. + * @returns @param a_ch Char to check. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_IS_SLASH(a_ch) ( (a_ch) == '\\' || (a_ch) == '/' ) +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_IS_SLASH(a_ch) ( (a_ch) == '/' ) +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_VOLSEP + * Checks if a character marks the end of the volume specification. + * + * @remark This is sufficient for the drive letter concept on PC. + * However it might be insufficient on other platforms + * and even on PC a UNC volume spec won't be detected this way. + * Use the RTPath@() instead. + * + * @returns true if it is and false if it isn't. + * @returns @param a_ch Char to check. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_IS_VOLSEP(a_ch) ( (a_ch) == ':' ) +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_IS_VOLSEP(a_ch) (false) +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_SEP + * Checks if a character is path component separator + * + * @returns true if it is and false if it isn't. + * @returns @param a_ch Char to check. + * @ + */ +#define RTPATH_IS_SEP(a_ch) ( RTPATH_IS_SLASH(a_ch) || RTPATH_IS_VOLSEP(a_ch) ) + + +/** + * Checks if the path exists. + * + * Symbolic links will all be attempted resolved and broken links means false. + * + * @returns true if it exists and false if it doesn't. + * @param pszPath The path to check. + */ +RTDECL(bool) RTPathExists(const char *pszPath); + +/** + * Checks if the path exists. + * + * @returns true if it exists and false if it doesn't. + * @param pszPath The path to check. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTDECL(bool) RTPathExistsEx(const char *pszPath, uint32_t fFlags); + +/** + * Sets the current working directory of the process. + * + * @returns IPRT status code. + * @param pszPath The path to the new working directory. + */ +RTDECL(int) RTPathSetCurrent(const char *pszPath); + +/** + * Gets the current working directory of the process. + * + * @returns IPRT status code. + * @param pszPath Where to store the path. + * @param cchPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrent(char *pszPath, size_t cchPath); + +/** + * Gets the current working directory on the specified drive. + * + * On systems without drive letters, the root slash will be returned. + * + * @returns IPRT status code. + * @param chDrive The drive we're querying the driver letter on. + * @param pszPath Where to store the working directroy path. + * @param cbPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrentOnDrive(char chDrive, char *pszPath, size_t cbPath); + +/** + * Gets the current working drive of the process. + * + * Normally drive letter and colon will be returned, never trailing a root + * slash. If the current directory is on a UNC share, the root of the share + * will be returned. On systems without drive letters, an empty string is + * returned for consistency. + * + * @returns IPRT status code. + * @param pszPath Where to store the working drive or UNC root. + * @param cbPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrentDrive(char *pszPath, size_t cbPath); + +/** + * Get the real path (no symlinks, no . or .. components), must exist. + * + * @returns iprt status code. + * @param pszPath The path to resolve. + * @param pszRealPath Where to store the real path. + * @param cchRealPath Size of the buffer. + */ +RTDECL(int) RTPathReal(const char *pszPath, char *pszRealPath, size_t cchRealPath); + +/** + * Same as RTPathReal only the result is RTStrDup()'ed. + * + * @returns Pointer to real path. Use RTStrFree() to free this string. + * @returns NULL if RTPathReal() or RTStrDup() fails. + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathRealDup(const char *pszPath); + +/** + * Get the absolute path (starts from root, no . or .. components), doesn't have + * to exist. Note that this method is designed to never perform actual file + * system access, therefore symlinks are not resolved. + * + * @returns iprt status code. + * @param pszPath The path to resolve. + * @param pszAbsPath Where to store the absolute path. + * @param cchAbsPath Size of the buffer. + */ +RTDECL(int) RTPathAbs(const char *pszPath, char *pszAbsPath, size_t cchAbsPath); + +/** + * Same as RTPathAbs only the result is RTStrDup()'ed. + * + * @returns Pointer to the absolute path. Use RTStrFree() to free this string. + * @returns NULL if RTPathAbs() or RTStrDup() fails. + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathAbsDup(const char *pszPath); + +/** + * Get the absolute path (no symlinks, no . or .. components), assuming the + * given base path as the current directory. The resulting path doesn't have + * to exist. + * + * @returns iprt status code. + * @param pszBase The base path to act like a current directory. + * When NULL, the actual cwd is used (i.e. the call + * is equivalent to RTPathAbs(pszPath, ...). + * @param pszPath The path to resolve. + * @param pszAbsPath Where to store the absolute path. + * @param cchAbsPath Size of the buffer. + */ +RTDECL(int) RTPathAbsEx(const char *pszBase, const char *pszPath, char *pszAbsPath, size_t cchAbsPath); + +/** + * Same as RTPathAbsEx only the result is RTStrDup()'ed. + * + * @returns Pointer to the absolute path. Use RTStrFree() to free this string. + * @returns NULL if RTPathAbsEx() or RTStrDup() fails. + * @param pszBase The base path to act like a current directory. + * When NULL, the actual cwd is used (i.e. the call + * is equivalent to RTPathAbs(pszPath, ...). + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathAbsExDup(const char *pszBase, const char *pszPath); + +/** + * Strips the filename from a path. Truncates the given string in-place by overwriting the + * last path separator character with a null byte in a platform-neutral way. + * + * @param pszPath Path from which filename should be extracted, will be truncated. + * If the string contains no path separator, it will be changed to a "." string. + */ +RTDECL(void) RTPathStripFilename(char *pszPath); + +/** + * Strips the last suffix from a path. + * + * @param pszPath Path which suffix should be stripped. + */ +RTDECL(void) RTPathStripSuffix(char *pszPath); + +/** + * Strips the trailing slashes of a path name. + * + * Won't strip root slashes. + * + * @returns The new length of pszPath. + * @param pszPath Path to strip. + */ +RTDECL(size_t) RTPathStripTrailingSlash(char *pszPath); + +/** + * Ensures that the path has a trailing path separator such that file names can + * be appended without further work. + * + * This can be helpful when preparing for efficiently combining a directory path + * with the filenames returned by RTDirRead. The return value gives you the + * position at which you copy the RTDIRENTRY::szName to construct a valid path + * to it. + * + * @returns The length of the path, 0 on buffer overflow. + * @param pszPath The path. + * @param cbPath The length of the path buffer @a pszPath points to. + */ +RTDECL(size_t) RTPathEnsureTrailingSeparator(char *pszPath, size_t cbPath); + +/** + * Changes all the slashes in the specified path to DOS style. + * + * Unless @a fForce is set, nothing will be done when on a UNIX flavored system + * since paths wont work with DOS style slashes there. + * + * @returns @a pszPath. + * @param pszPath The path to modify. + * @param fForce Whether to force the conversion on non-DOS OSes. + */ +RTDECL(char *) RTPathChangeToDosSlashes(char *pszPath, bool fForce); + +/** + * Changes all the slashes in the specified path to unix style. + * + * Unless @a fForce is set, nothing will be done when on a UNIX flavored system + * since paths wont work with DOS style slashes there. + * + * @returns @a pszPath. + * @param pszPath The path to modify. + * @param fForce Whether to force the conversion on non-DOS OSes. + */ +RTDECL(char *) RTPathChangeToUnixSlashes(char *pszPath, bool fForce); + +/** + * Simple parsing of the a path. + * + * It figures the length of the directory component, the offset of + * the file name and the location of the suffix dot. + * + * @returns The path length. + * + * @param pszPath Path to find filename in. + * @param pcchDir Where to put the length of the directory component. If + * no directory, this will be 0. Optional. + * @param poffName Where to store the filename offset. + * If empty string or if it's ending with a slash this + * will be set to -1. Optional. + * @param poffSuff Where to store the suffix offset (the last dot). + * If empty string or if it's ending with a slash this + * will be set to -1. Optional. + */ +RTDECL(size_t) RTPathParseSimple(const char *pszPath, size_t *pcchDir, ssize_t *poffName, ssize_t *poffSuff); + +/** + * Finds the filename in a path. + * + * @returns Pointer to filename within pszPath. + * @returns NULL if no filename (i.e. empty string or ends with a slash). + * @param pszPath Path to find filename in. + */ +RTDECL(char *) RTPathFilename(const char *pszPath); + +/** + * Finds the filename in a path, extended version. + * + * @returns Pointer to filename within pszPath. + * @returns NULL if no filename (i.e. empty string or ends with a slash). + * @param pszPath Path to find filename in. + * @param fFlags RTPATH_STR_F_STYLE_XXX. Other RTPATH_STR_F_XXX flags + * will be ignored. + */ +RTDECL(char *) RTPathFilenameEx(const char *pszPath, uint32_t fFlags); + +/** + * Finds the suffix part of in a path (last dot and onwards). + * + * @returns Pointer to suffix within pszPath. + * @returns NULL if no suffix + * @param pszPath Path to find suffix in. + * + * @remarks IPRT terminology: A suffix includes the dot, the extension starts + * after the dot. For instance suffix '.txt' and extension 'txt'. + */ +RTDECL(char *) RTPathSuffix(const char *pszPath); + +/** + * Checks if a path has an extension / suffix. + * + * @returns true if extension / suffix present. + * @returns false if no extension / suffix. + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathHasSuffix(const char *pszPath); +/** Same thing, different name. */ +#define RTPathHasExt RTPathHasSuffix + +/** + * Checks if a path includes more than a filename. + * + * @returns true if path present. + * @returns false if no path. + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathHasPath(const char *pszPath); +/** Misspelled, don't use. */ +#define RTPathHavePath RTPathHasPath + +/** + * Checks if the path starts with a root specifier or not. + * + * @returns @c true if it starts with root, @c false if not. + * + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathStartsWithRoot(const char *pszPath); + +/** + * Counts the components in the specified path. + * + * An empty string has zero components. A lone root slash is considered have + * one. The paths "/init" and "/bin/" are considered having two components. An + * UNC share specifier like "\\myserver\share" will be considered as one single + * component. + * + * @returns The number of path components. + * @param pszPath The path to parse. + */ +RTDECL(size_t) RTPathCountComponents(const char *pszPath); + +/** + * Copies the specified number of path components from @a pszSrc and into @a + * pszDst. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. In the latter case the buffer + * is not touched. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer. + * @param pszSrc The source path. + * @param cComponents The number of components to copy from @a pszSrc. + */ +RTDECL(int) RTPathCopyComponents(char *pszDst, size_t cbDst, const char *pszSrc, size_t cComponents); + +/** @name Path properties returned by RTPathParse and RTPathSplit. + * @{ */ + +/** Indicates that there is a filename. + * If not set, either a lone root spec was given (RTPATH_PROP_UNC, + * RTPATH_PROP_ROOT_SLASH, or RTPATH_PROP_VOLUME) or the final component had a + * trailing slash (RTPATH_PROP_DIR_SLASH). */ +#define RTPATH_PROP_FILENAME UINT16_C(0x0001) +/** Indicates that a directory was specified using a trailing slash. + * @note This is not set for lone root specifications (RTPATH_PROP_UNC, + * RTPATH_PROP_ROOT_SLASH, or RTPATH_PROP_VOLUME). + * @note The slash is not counted into the last component. However, it is + * counted into cchPath. */ +#define RTPATH_PROP_DIR_SLASH UINT16_C(0x0002) + +/** The filename has a suffix (extension). */ +#define RTPATH_PROP_SUFFIX UINT16_C(0x0004) +/** Indicates that this is an UNC path (Windows and OS/2 only). + * + * UNC = Universal Naming Convention. It is on the form '//Computer/', + * '//Namespace/', '//ComputerName/Resource' and '//Namespace/Resource'. + * RTPathParse, RTPathSplit and friends does not consider the 'Resource' as + * part of the UNC root specifier. Thus the root specs for the above examples + * would be '//ComputerName/' or '//Namespace/'. + * + * Please note that '//something' is not a UNC path, there must be a slash + * following the computer or namespace. + */ +#define RTPATH_PROP_UNC UINT16_C(0x0010) +/** A root slash was specified (unix style root). + * (While the path must relative if not set, this being set doesn't make it + * absolute.) + * + * This will be set in the following examples: '/', '/bin', 'C:/', 'C:/Windows', + * '//./', '//./PhysicalDisk0', '//example.org/', and '//example.org/share'. + * + * It will not be set for the following examples: '.', 'bin/ls', 'C:', and + * 'C:Windows'. + */ +#define RTPATH_PROP_ROOT_SLASH UINT16_C(0x0020) +/** A volume is specified (Windows, DOS and OS/2). + * For examples: 'C:', 'C:/', and 'A:/AutoExec.bat'. */ +#define RTPATH_PROP_VOLUME UINT16_C(0x0040) +/** The path is absolute, i.e. has a root specifier (root-slash, + * volume or UNC) and contains no winding '..' bits, though it may contain + * unnecessary slashes (RTPATH_PROP_EXTRA_SLASHES) and '.' components + * (RTPATH_PROP_DOT_REFS). + * + * On systems without volumes and UNC (unix style) it will be set for '/', + * '/bin/ls', and '/bin//./ls', but not for 'bin/ls', /bin/../usr/bin/env', + * '/./bin/ls' or '/.'. + * + * On systems with volumes, it will be set for 'C:/', C:/Windows', and + * 'C:/./Windows//', but not for 'C:', 'C:Windows', or 'C:/Windows/../boot.ini'. + * + * On systems with UNC paths, it will be set for '//localhost/', + * '//localhost/C$', '//localhost/C$/Windows/System32', '//localhost/.', and + * '//localhost/C$//./AutoExec.bat', but not for + * '//localhost/C$/Windows/../AutoExec.bat'. + * + * @note For the RTPathAbs definition, this flag needs to be set while both + * RTPATH_PROP_EXTRA_SLASHES and RTPATH_PROP_DOT_REFS must be cleared. + */ +#define RTPATH_PROP_ABSOLUTE UINT16_C(0x0100) +/** Relative path. Inverse of RTPATH_PROP_ABSOLUTE. */ +#define RTPATH_PROP_RELATIVE UINT16_C(0x0200) +/** The path contains unnecessary slashes. Meaning, that if */ +#define RTPATH_PROP_EXTRA_SLASHES UINT16_C(0x0400) +/** The path contains references to the special '.' (dot) directory link. */ +#define RTPATH_PROP_DOT_REFS UINT16_C(0x0800) +/** The path contains references to the special '..' (dot) directory link. + * RTPATH_PROP_RELATIVE will always be set together with this. */ +#define RTPATH_PROP_DOTDOT_REFS UINT16_C(0x1000) + + +/** Macro to determin whether to insert a slash after the first component when + * joining it with something else. + * (All other components in a split or parsed path requies slashes added.) */ +#define RTPATH_PROP_FIRST_NEEDS_NO_SLASH(a_fProps) \ + RT_BOOL( (a_fProps) & (RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_VOLUME | RTPATH_PROP_UNC) ) + +/** Macro to determin whether there is a root specification of any kind + * (unix, volumes, unc). */ +#define RTPATH_PROP_HAS_ROOT_SPEC(a_fProps) \ + RT_BOOL( (a_fProps) & (RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_VOLUME | RTPATH_PROP_UNC) ) + +/** @} */ + + +/** + * Parsed path. + * + * The first component is the root, volume or UNC specifier, if present. Use + * RTPATH_PROP_HAS_ROOT_SPEC() on RTPATHPARSED::fProps to determine its + * presence. + * + * Other than the root component, no component will include directory separators + * (slashes). + */ +typedef struct RTPATHPARSED +{ + /** Number of path components. + * This will always be set on VERR_BUFFER_OVERFLOW returns from RTPathParsed + * so the caller can calculate the required buffer size. */ + uint16_t cComps; + /** Path property flags, RTPATH_PROP_XXX */ + uint16_t fProps; + /** On success this is the length of the described path, i.e. sum of all + * component lengths and necessary separators. + * Do NOT use this to index in the source path in case it contains + * unnecessary slashes that RTPathParsed has ignored here. */ + uint16_t cchPath; + /** Reserved for future use. */ + uint16_t u16Reserved; + /** The offset of the filename suffix, offset of the NUL char if none. */ + uint16_t offSuffix; + /** The lenght of the suffix. */ + uint16_t cchSuffix; + /** Array of component descriptors (variable size). + * @note Don't try figure the end of the input path by adding up off and cch + * of the last component. If RTPATH_PROP_DIR_SLASH is set, there may + * be one or more trailing slashes that are unaccounted for! */ + struct + { + /** The offset of the component. */ + uint16_t off; + /** The length of the component. */ + uint16_t cch; + } aComps[1]; +} RTPATHPARSED; +/** Pointer to to a parsed path result. */ +typedef RTPATHPARSED *PRTPATHPARSED; +/** Pointer to to a const parsed path result. */ +typedef RTPATHPARSED *PCRTPATHPARSED; + + +/** + * Parses the path. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_INVALID_PARAMETER if cbOutput is less than the RTPATHPARSED + * strucuture. No output. (asserted) + * @retval VERR_BUFFER_OVERFLOW there are more components in the path than + * there is space in aComps. The required amount of space can be + * determined from the pParsed->cComps: + * @code + * RT_OFFSETOF(RTPATHPARSED, aComps[pParsed->cComps]) + * @endcode + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param pParsed Where to store the details of the parsed path. + * @param cbParsed The size of the buffer. Must be at least the + * size of RTPATHPARSED. + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @sa RTPathSplit, RTPathSplitA. + */ +RTDECL(int) RTPathParse(const char *pszPath, PRTPATHPARSED pParsed, size_t cbParsed, uint32_t fFlags); + +/** + * Reassembles a path parsed by RTPathParse. + * + * This will be more useful as more APIs manipulating the RTPATHPARSED output + * are added. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if @a cbDstPath is less than or equal to + * RTPATHPARSED::cchPath. + * + * @param pszSrcPath The source path. + * @param pParsed The parser output for @a pszSrcPath. + * @param fFlags Combination of RTPATH_STR_F_STYLE_XXX. + * Most users will pass 0. + * @param pszDstPath Pointer to the buffer where the path is to be + * reassembled. + * @param cbDstPath The size of the output buffer. + */ +RTDECL(int) RTPathParsedReassemble(const char *pszSrcPath, PRTPATHPARSED pParsed, uint32_t fFlags, + char *pszDstPath, size_t cbDstPath); + + +/** + * Output buffer for RTPathSplit and RTPathSplitA. + */ +typedef struct RTPATHSPLIT +{ + /** Number of path components. + * This will always be set on VERR_BUFFER_OVERFLOW returns from RTPathParsed + * so the caller can calculate the required buffer size. */ + uint16_t cComps; + /** Path property flags, RTPATH_PROP_XXX */ + uint16_t fProps; + /** On success this is the length of the described path, i.e. sum of all + * component lengths and necessary separators. + * Do NOT use this to index in the source path in case it contains + * unnecessary slashes that RTPathSplit has ignored here. */ + uint16_t cchPath; + /** Reserved (internal use). */ + uint16_t u16Reserved; + /** The amount of memory used (on success) or required (on + * VERR_BUFFER_OVERFLOW) of this structure and it's strings. */ + uint32_t cbNeeded; + /** Pointer to the filename suffix (the dot), if any. Points to the NUL + * character of the last component if none or if RTPATH_PROP_DIR_SLASH is + * present. */ + const char *pszSuffix; + /** Array of component strings (variable size). */ + char *apszComps[1]; +} RTPATHSPLIT; +/** Pointer to a split path buffer. */ +typedef RTPATHSPLIT *PRTPATHSPLIT; +/** Pointer to a const split path buffer. */ +typedef RTPATHSPLIT const *PCRTPATHSPLIT; + +/** + * Splits the path into individual component strings, carved from user supplied + * the given buffer block. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_INVALID_PARAMETER if cbOutput is less than the RTPATHSPLIT + * strucuture. No output. (asserted) + * @retval VERR_BUFFER_OVERFLOW there are more components in the path than + * there is space in aComps. The required amount of space can be + * determined from the pParsed->cComps: + * @code + * RT_OFFSETOF(RTPATHPARSED, aComps[pParsed->cComps]) + * @endcode + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * @retval VERR_FILENAME_TOO_LONG if the filename is too long (close to 64 KB). + * + * @param pszPath The path to parse. + * @param pSplit Where to store the details of the parsed path. + * @param cbSplit The size of the buffer pointed to by @a pSplit + * (variable sized array at the end). Must be at + * least the size of RTPATHSPLIT. + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * + * @sa RTPathSplitA, RTPathParse. + */ +RTDECL(int) RTPathSplit(const char *pszPath, PRTPATHSPLIT pSplit, size_t cbSplit, uint32_t fFlags); + +/** + * Splits the path into individual component strings, allocating the buffer on + * the default thread heap. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param ppSplit Where to return the pointer to the output on + * success. This must be freed by calling + * RTPathSplitFree(). + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @sa RTPathSplitFree, RTPathSplit, RTPathParse. + */ +#define RTPathSplitA(pszPath, ppSplit, fFlags) RTPathSplitATag(pszPath, ppSplit, fFlags, RTPATH_TAG) + +/** + * Splits the path into individual component strings, allocating the buffer on + * the default thread heap. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param ppSplit Where to return the pointer to the output on + * success. This must be freed by calling + * RTPathSplitFree(). + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @param pszTag Allocation tag used for statistics and such. + * @sa RTPathSplitFree, RTPathSplit, RTPathParse. + */ +RTDECL(int) RTPathSplitATag(const char *pszPath, PRTPATHSPLIT *ppSplit, uint32_t fFlags, const char *pszTag); + +/** + * Frees buffer returned by RTPathSplitA. + * + * @param pSplit What RTPathSplitA returned. + * @sa RTPathSplitA + */ +RTDECL(void) RTPathSplitFree(PRTPATHSPLIT pSplit); + +/** + * Reassembles a path parsed by RTPathSplit. + * + * This will be more useful as more APIs manipulating the RTPATHSPLIT output are + * added. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if @a cbDstPath is less than or equal to + * RTPATHSPLIT::cchPath. + * + * @param pSplit A split path (see RTPathSplit, RTPathSplitA). + * @param fFlags Combination of RTPATH_STR_F_STYLE_XXX. + * Most users will pass 0. + * @param pszDstPath Pointer to the buffer where the path is to be + * reassembled. + * @param cbDstPath The size of the output buffer. + */ +RTDECL(int) RTPathSplitReassemble(PRTPATHSPLIT pSplit, uint32_t fFlags, char *pszDstPath, size_t cbDstPath); + +/** + * Checks if the two paths leads to the file system object. + * + * If the objects exist, we'll query attributes for them. If that's not + * conclusive (some OSes) or one of them doesn't exist, we'll use a combination + * of RTPathAbs and RTPathCompare to determine the result. + * + * @returns true, false, or VERR_FILENAME_TOO_LONG. + * @param pszPath1 The first path. + * @param pszPath2 The seoncd path. + */ +RTDECL(int) RTPathIsSame(const char *pszPath1, const char *pszPath2); + + +/** + * Compares two paths. + * + * The comparison takes platform-dependent details into account, + * such as: + *
    + *
  • On DOS-like platforms, both separator chars (|\| and |/|) are considered + * to be equal. + *
  • On platforms with case-insensitive file systems, mismatching characters + * are uppercased and compared again. + *
+ * + * @returns @< 0 if the first path less than the second path. + * @returns 0 if the first path identical to the second path. + * @returns @> 0 if the first path greater than the second path. + * + * @param pszPath1 Path to compare (must be an absolute path). + * @param pszPath2 Path to compare (must be an absolute path). + * + * @remarks File system details are currently ignored. This means that you won't + * get case-insensitive compares on unix systems when a path goes into a + * case-insensitive filesystem like FAT, HPFS, HFS, NTFS, JFS, or + * similar. For NT, OS/2 and similar you'll won't get case-sensitive + * compares on a case-sensitive file system. + */ +RTDECL(int) RTPathCompare(const char *pszPath1, const char *pszPath2); + +/** + * Checks if a path starts with the given parent path. + * + * This means that either the path and the parent path matches completely, or + * that the path is to some file or directory residing in the tree given by the + * parent directory. + * + * The path comparison takes platform-dependent details into account, + * see RTPathCompare() for details. + * + * @returns |true| when \a pszPath starts with \a pszParentPath (or when they + * are identical), or |false| otherwise. + * + * @param pszPath Path to check, must be an absolute path. + * @param pszParentPath Parent path, must be an absolute path. + * No trailing directory slash! + * + * @remarks This API doesn't currently handle root directory compares in a + * manner consistent with the other APIs. RTPathStartsWith(pszSomePath, + * "/") will not work if pszSomePath isn't "/". + */ +RTDECL(bool) RTPathStartsWith(const char *pszPath, const char *pszParentPath); + +/** + * Appends one partial path to another. + * + * The main purpose of this function is to deal correctly with the slashes when + * concatenating the two partial paths. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. No changes has been made. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPath The path to append pszAppend to. This serves as both + * input and output. This can be empty, in which case + * pszAppend is just copied over. + * @param cbPathDst The size of the buffer pszPath points to, terminator + * included. This should NOT be strlen(pszPath). + * @param pszAppend The partial path to append to pszPath. This can be + * NULL, in which case nothing is done. + * + * @remarks See the RTPathAppendEx remarks. + */ +RTDECL(int) RTPathAppend(char *pszPath, size_t cbPathDst, const char *pszAppend); + +/** + * Appends one partial path to another. + * + * The main purpose of this function is to deal correctly with the slashes when + * concatenating the two partial paths. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. No changes has been made. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPath The path to append pszAppend to. This serves as both + * input and output. This can be empty, in which case + * pszAppend is just copied over. + * @param cbPathDst The size of the buffer pszPath points to, terminator + * included. This should NOT be strlen(pszPath). + * @param pszAppend The partial path to append to pszPath. This can be + * NULL, in which case nothing is done. + * @param cchAppendMax The maximum number or characters to take from @a + * pszAppend. RTSTR_MAX is fine. + * + * @remarks On OS/2, Window and similar systems, concatenating a drive letter + * specifier with a slash prefixed path will result in an absolute + * path. Meaning, RTPathAppend(strcpy(szBuf, "C:"), sizeof(szBuf), + * "/bar") will result in "C:/bar". (This follows directly from the + * behavior when pszPath is empty.) + * + * On the other hand, when joining a drive letter specifier with a + * partial path that does not start with a slash, the result is not an + * absolute path. Meaning, RTPathAppend(strcpy(szBuf, "C:"), + * sizeof(szBuf), "bar") will result in "C:bar". + */ +RTDECL(int) RTPathAppendEx(char *pszPath, size_t cbPathDst, const char *pszAppend, size_t cchAppendMax); + +/** + * Like RTPathAppend, but with the base path as a separate argument instead of + * in the path buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * + */ +RTDECL(int) RTPathJoin(char *pszPathDst, size_t cbPathDst, const char *pszPathSrc, + const char *pszAppend); + +/** + * Same as RTPathJoin, except that the output buffer is allocated. + * + * @returns Buffer containing the joined up path, call RTStrFree to free. NULL + * on allocation failure. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * + */ +RTDECL(char *) RTPathJoinA(const char *pszPathSrc, const char *pszAppend); + +/** + * Extended version of RTPathJoin, both inputs can be specified as substrings. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param cchPathSrcMax The maximum number of bytes to copy from @a + * pszPathSrc. RTSTR_MAX is find. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * @param cchAppendMax The maximum number of bytes to copy from @a + * pszAppend. RTSTR_MAX is find. + * + */ +RTDECL(int) RTPathJoinEx(char *pszPathDst, size_t cbPathDst, + const char *pszPathSrc, size_t cchPathSrcMax, + const char *pszAppend, size_t cchAppendMax); + +/** + * Callback for RTPathTraverseList that's called for each element. + * + * @returns IPRT style status code. Return VERR_TRY_AGAIN to continue, any other + * value will abort the traversing and be returned to the caller. + * + * @param pchPath Pointer to the start of the current path. This is + * not null terminated. + * @param cchPath The length of the path. + * @param pvUser1 The first user parameter. + * @param pvUser2 The second user parameter. + */ +typedef DECLCALLBACK(int) FNRTPATHTRAVERSER(char const *pchPath, size_t cchPath, void *pvUser1, void *pvUser2); +/** Pointer to a FNRTPATHTRAVERSER. */ +typedef FNRTPATHTRAVERSER *PFNRTPATHTRAVERSER; + +/** + * Traverses a string that can contain multiple paths separated by a special + * character. + * + * @returns IPRT style status code from the callback or VERR_END_OF_STRING if + * the callback returned VERR_TRY_AGAIN for all paths in the string. + * + * @param pszPathList The string to traverse. + * @param chSep The separator character. Using the null terminator + * is fine, but the result will simply be that there + * will only be one callback for the entire string + * (save any leading white space). + * @param pfnCallback The callback. + * @param pvUser1 First user argument for the callback. + * @param pvUser2 Second user argument for the callback. + */ +RTDECL(int) RTPathTraverseList(const char *pszPathList, char chSep, PFNRTPATHTRAVERSER pfnCallback, void *pvUser1, void *pvUser2); + + +/** + * Calculate a relative path between the two given paths. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_NOT_SUPPORTED if both paths start with different volume specifiers. + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathFrom The path to start from creating the relative path. + * @param pszPathTo The path to reach with the created relative path. + */ +RTDECL(int) RTPathCalcRelative(char *pszPathDst, size_t cbPathDst, + const char *pszPathFrom, + const char *pszPathTo); + +#ifdef IN_RING3 + +/** + * Gets the path to the directory containing the executable. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath); + +/** + * Gets the user home directory. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathUserHome(char *pszPath, size_t cchPath); + +/** + * Gets the user documents directory. + * + * The returned path isn't guaranteed to exist. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathUserDocuments(char *pszPath, size_t cchPath); + +/** + * Gets the directory of shared libraries. + * + * This is not the same as RTPathAppPrivateArch() as Linux depends all shared + * libraries in a common global directory where ld.so can find them. + * + * Linux: /usr/lib + * Solaris: /opt/@/@@ or something + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathSharedLibs(char *pszPath, size_t cchPath); + +/** + * Gets the directory for architecture-independent application data, for + * example NLS files, module sources, ... + * + * Linux: /usr/shared/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateNoArch(char *pszPath, size_t cchPath); + +/** + * Gets the directory for architecture-dependent application data, for + * example modules which can be loaded at runtime. + * + * Linux: /usr/lib/@ + * Solaris: /opt/@/@@ or something + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateArch(char *pszPath, size_t cchPath); + +/** + * Gets the toplevel directory for architecture-dependent application data. + * + * This differs from RTPathAppPrivateArch on Solaris only where it will work + * around the /opt/@/amd64 and /opt/@/i386 multi + * architecture installation style. + * + * Linux: /usr/lib/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateArchTop(char *pszPath, size_t cchPath); + +/** + * Gets the directory for documentation. + * + * Linux: /usr/share/doc/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppDocs(char *pszPath, size_t cchPath); + +/** + * Gets the temporary directory path. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathTemp(char *pszPath, size_t cchPath); + + +/** + * RTPathGlobl result entry. + */ +typedef struct RTPATHGLOBENTRY +{ + /** List entry. */ + struct RTPATHGLOBENTRY *pNext; + /** RTDIRENTRYTYPE value. */ + uint8_t uType; + /** Unused explicit padding. */ + uint8_t bUnused; + /** The length of the path. */ + uint16_t cchPath; + /** The path to the file (variable length). */ + char szPath[1]; +} RTPATHGLOBENTRY; +/** Pointer to a GLOB result entry. */ +typedef RTPATHGLOBENTRY *PRTPATHGLOBENTRY; +/** Pointer to a const GLOB result entry. */ +typedef RTPATHGLOBENTRY const *PCRTPATHGLOBENTRY; +/** Pointer to a GLOB result entry pointer. */ +typedef PCRTPATHGLOBENTRY *PPCRTPATHGLOBENTRY; + +/** + * Performs wildcard expansion on a path pattern. + * + * @returns IPRT status code. + * + * @param pszPattern The pattern to expand. + * @param fFlags RTPATHGLOB_F_XXX. + * @param ppHead Where to return the head of the result list. This + * is always set to NULL on failure. + * @param pcResults Where to return the number of the result. Optional. + */ +RTDECL(int) RTPathGlob(const char *pszPattern, uint32_t fFlags, PPCRTPATHGLOBENTRY ppHead, uint32_t *pcResults); + +/** @name RTPATHGLOB_F_XXX - RTPathGlob flags + * @{ */ +/** Case insensitive. */ +#define RTPATHGLOB_F_IGNORE_CASE RT_BIT_32(0) +/** Do not expand \${EnvOrSpecialVariable} in the pattern. */ +#define RTPATHGLOB_F_NO_VARIABLES RT_BIT_32(1) +/** Do not interpret a leading tilde as a home directory reference. */ +#define RTPATHGLOB_F_NO_TILDE RT_BIT_32(2) +/** Only return the first match. */ +#define RTPATHGLOB_F_FIRST_ONLY RT_BIT_32(3) +/** Only match directories (implied if pattern ends with slash). */ +#define RTPATHGLOB_F_ONLY_DIRS RT_BIT_32(4) +/** Do not match directories. (Can't be used with RTPATHGLOB_F_ONLY_DIRS or + * patterns containing a trailing slash.) */ +#define RTPATHGLOB_F_NO_DIRS RT_BIT_32(5) +/** Disables the '**' wildcard pattern for matching zero or more subdirs. */ +#define RTPATHGLOB_F_NO_STARSTAR RT_BIT_32(6) +/** Mask of valid flags. */ +#define RTPATHGLOB_F_MASK UINT32_C(0x0000007f) +/** @} */ + +/** + * Frees the results produced by RTPathGlob. + * + * @param pHead What RTPathGlob returned. NULL ignored. + */ +RTDECL(void) RTPathGlobFree(PCRTPATHGLOBENTRY pHead); + + +/** + * Query information about a file system object. + * + * This API will resolve NOT symbolic links in the last component (just like + * unix lstat()). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the object exists, information returned. + * @retval VERR_PATH_NOT_FOUND if any but the last component in the specified + * path was not found or was not a directory. + * @retval VERR_FILE_NOT_FOUND if the object does not exist (but path to the + * parent directory exists). + * + * @param pszPath Path to the file system object. + * @param pObjInfo Object information structure to be filled on successful + * return. + * @param enmAdditionalAttribs + * Which set of additional attributes to request. + * Use RTFSOBJATTRADD_NOTHING if this doesn't matter. + */ +RTR3DECL(int) RTPathQueryInfo(const char *pszPath, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAdditionalAttribs); + +/** + * Query information about a file system object. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the object exists, information returned. + * @retval VERR_PATH_NOT_FOUND if any but the last component in the specified + * path was not found or was not a directory. + * @retval VERR_FILE_NOT_FOUND if the object does not exist (but path to the + * parent directory exists). + * + * @param pszPath Path to the file system object. + * @param pObjInfo Object information structure to be filled on successful return. + * @param enmAdditionalAttribs + * Which set of additional attributes to request. + * Use RTFSOBJATTRADD_NOTHING if this doesn't matter. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTR3DECL(int) RTPathQueryInfoEx(const char *pszPath, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAdditionalAttribs, uint32_t fFlags); + +/** + * Changes the mode flags of a file system object. + * + * The API requires at least one of the mode flag sets (Unix/Dos) to + * be set. The type is ignored. + * + * This API will resolve symbolic links in the last component since + * mode isn't important for symbolic links. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param fMode The new file mode, see @ref grp_rt_fs for details. + */ +RTR3DECL(int) RTPathSetMode(const char *pszPath, RTFMODE fMode); + +/** + * Gets the mode flags of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pfMode Where to store the file mode, see @ref grp_rt_fs for details. + * + * @remark This is wrapper around RTPathQueryInfoEx(RTPATH_F_FOLLOW_LINK) and + * exists to complement RTPathSetMode(). + */ +RTR3DECL(int) RTPathGetMode(const char *pszPath, PRTFMODE pfMode); + +/** + * Changes one or more of the timestamps associated of file system object. + * + * This API will not resolve symbolic links in the last component (just + * like unix lutimes()). + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Pointer to the new access time. + * @param pModificationTime Pointer to the new modification time. + * @param pChangeTime Pointer to the new change time. NULL if not to be changed. + * @param pBirthTime Pointer to the new time of birth. NULL if not to be changed. + * + * @remark The file system might not implement all these time attributes, + * the API will ignore the ones which aren't supported. + * + * @remark The file system might not implement the time resolution + * employed by this interface, the time will be chopped to fit. + * + * @remark The file system may update the change time even if it's + * not specified. + * + * @remark POSIX can only set Access & Modification and will always set both. + */ +RTR3DECL(int) RTPathSetTimes(const char *pszPath, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, + PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime); + +/** + * Changes one or more of the timestamps associated of file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Pointer to the new access time. + * @param pModificationTime Pointer to the new modification time. + * @param pChangeTime Pointer to the new change time. NULL if not to be changed. + * @param pBirthTime Pointer to the new time of birth. NULL if not to be changed. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + * + * @remark The file system might not implement all these time attributes, + * the API will ignore the ones which aren't supported. + * + * @remark The file system might not implement the time resolution + * employed by this interface, the time will be chopped to fit. + * + * @remark The file system may update the change time even if it's + * not specified. + * + * @remark POSIX can only set Access & Modification and will always set both. + */ +RTR3DECL(int) RTPathSetTimesEx(const char *pszPath, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, + PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime, uint32_t fFlags); + +/** + * Gets one or more of the timestamps associated of file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Where to store the access time. NULL is ok. + * @param pModificationTime Where to store the modification time. NULL is ok. + * @param pChangeTime Where to store the change time. NULL is ok. + * @param pBirthTime Where to store the creation time. NULL is ok. + * + * @remark This is wrapper around RTPathQueryInfo() and exists to complement + * RTPathSetTimes(). If the last component is a symbolic link, it will + * not be resolved. + */ +RTR3DECL(int) RTPathGetTimes(const char *pszPath, PRTTIMESPEC pAccessTime, PRTTIMESPEC pModificationTime, + PRTTIMESPEC pChangeTime, PRTTIMESPEC pBirthTime); + +/** + * Changes the owner and/or group of a file system object. + * + * This API will not resolve symbolic links in the last component (just + * like unix lchown()). + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param uid The new file owner user id. Pass NIL_RTUID to leave + * this unchanged. + * @param gid The new group id. Pass NIL_RTGUID to leave this + * unchanged. + */ +RTR3DECL(int) RTPathSetOwner(const char *pszPath, uint32_t uid, uint32_t gid); + +/** + * Changes the owner and/or group of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param uid The new file owner user id. Pass NIL_RTUID to leave + * this unchanged. + * @param gid The new group id. Pass NIL_RTGID to leave this + * unchanged. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTR3DECL(int) RTPathSetOwnerEx(const char *pszPath, uint32_t uid, uint32_t gid, uint32_t fFlags); + +/** + * Gets the owner and/or group of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pUid Where to store the owner user id. NULL is ok. + * @param pGid Where to store the group id. NULL is ok. + * + * @remark This is wrapper around RTPathQueryInfo() and exists to complement + * RTPathGetOwner(). If the last component is a symbolic link, it will + * not be resolved. + */ +RTR3DECL(int) RTPathGetOwner(const char *pszPath, uint32_t *pUid, uint32_t *pGid); + + +/** @name RTPathRename, RTDirRename & RTFileRename flags. + * @{ */ +/** Do not replace anything. */ +#define RTPATHRENAME_FLAGS_NO_REPLACE UINT32_C(0) +/** This will replace attempt any target which isn't a directory. */ +#define RTPATHRENAME_FLAGS_REPLACE RT_BIT(0) +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATHRENAME_FLAGS_NO_SYMLINKS RT_BIT(1) +/** @} */ + +/** + * Renames a path within a filesystem. + * + * This will rename symbolic links. If RTPATHRENAME_FLAGS_REPLACE is used and + * pszDst is a symbolic link, it will be replaced and not its target. + * + * @returns IPRT status code. + * @param pszSrc The source path. + * @param pszDst The destination path. + * @param fRename Rename flags, RTPATHRENAME_FLAGS_*. + */ +RTR3DECL(int) RTPathRename(const char *pszSrc, const char *pszDst, unsigned fRename); + +/** @name RTPathUnlink flags. + * @{ */ +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATHUNLINK_FLAGS_NO_SYMLINKS RT_BIT(0) +/** @} */ + +/** + * Removes the last component of the path. + * + * @returns IPRT status code. + * @param pszPath The path. + * @param fUnlink Unlink flags, RTPATHUNLINK_FLAGS_*. + */ +RTR3DECL(int) RTPathUnlink(const char *pszPath, uint32_t fUnlink); + +/** + * A /bin/rm tool. + * + * @returns Program exit code. + * + * @param cArgs The number of arguments. + * @param papszArgs The argument vector. (Note that this may be + * reordered, so the memory must be writable.) + */ +RTDECL(RTEXITCODE) RTPathRmCmd(unsigned cArgs, char **papszArgs); + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/power.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/power.h @@ -0,0 +1,112 @@ +/** @file + * IPRT - Power management. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_power_h +#define ___iprt_power_h + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_power RTPower - Power management + * @ingroup grp_rt + * @{ + */ + +#ifdef IN_RING0 + +/** + * MP event, see FNRTPOWERNOTIFICATION. + */ +typedef enum RTPOWEREVENT +{ + /** The system will go into suspend mode. */ + RTPOWEREVENT_SUSPEND = 1, + /** The system has resumed. */ + RTPOWEREVENT_RESUME +} RTPOWEREVENT; + +/** + * Notification callback. + * + * The context this is called in differs a bit from platform to + * platform, so be careful while in here. + * + * @param enmEvent The event. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(void) FNRTPOWERNOTIFICATION(RTPOWEREVENT enmEvent, void *pvUser); +/** Pointer to a FNRTPOWERNOTIFICATION(). */ +typedef FNRTPOWERNOTIFICATION *PFNRTPOWERNOTIFICATION; + +/** + * Registers a notification callback for power events. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NO_MEMORY if a registration record cannot be allocated. + * @retval VERR_ALREADY_EXISTS if the pfnCallback and pvUser already exist + * in the callback list. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTPowerNotificationRegister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser); + +/** + * This deregisters a notification callback registered via RTPowerNotificationRegister(). + * + * The pfnCallback and pvUser arguments must be identical to the registration call + * of we won't find the right entry. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_FOUND if no matching entry was found. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTPowerNotificationDeregister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser); + +/** + * This calls all registered power management callback handlers registered via RTPowerNotificationRegister(). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * + * @param enmEvent Power Management event + */ +RTDECL(int) RTPowerSignalEvent(RTPOWEREVENT enmEvent); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/process.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/process.h @@ -0,0 +1,420 @@ +/** @file + * IPRT - Process Management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_process_h +#define ___iprt_process_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_process RTProc - Process Management + * @ingroup grp_rt + * @{ + */ + + +/** + * Process priority. + * + * The process priority is used to select how scheduling properties + * are assigned to the different thread types (see THREADTYPE). + * + * In addition to using the policy assigned to the process at startup (DEFAULT) + * it is possible to change the process priority at runtime. This allows for + * a GUI, resource manager or admin to adjust the general priority of a task + * without upsetting the fine-tuned priority of the threads within. + */ +typedef enum RTPROCPRIORITY +{ + /** Invalid priority. */ + RTPROCPRIORITY_INVALID = 0, + /** Default priority. + * Derive the scheduling policy from the priority of the RTR3Init() + * and RTProcSetPriority() callers and the rights the process have + * to alter its own priority. + */ + RTPROCPRIORITY_DEFAULT, + /** Flat priority. + * Assumes a scheduling policy which puts the process at the default priority + * and with all thread at the same priority. + */ + RTPROCPRIORITY_FLAT, + /** Low priority. + * Assumes a scheduling policy which puts the process mostly below the + * default priority of the host OS. + */ + RTPROCPRIORITY_LOW, + /** Normal priority. + * Assume a scheduling policy which shares the CPU resources fairly with + * other processes running with the default priority of the host OS. + */ + RTPROCPRIORITY_NORMAL, + /** High priority. + * Assumes a scheduling policy which puts the task above the default + * priority of the host OS. This policy might easily cause other tasks + * in the system to starve. + */ + RTPROCPRIORITY_HIGH, + /** Last priority, used for validation. */ + RTPROCPRIORITY_LAST +} RTPROCPRIORITY; + + +/** + * Get the current process identifier. + * + * @returns Process identifier. + */ +RTDECL(RTPROCESS) RTProcSelf(void); + + +#ifdef IN_RING0 +/** + * Get the current process handle. + * + * @returns Ring-0 process handle. + */ +RTR0DECL(RTR0PROCESS) RTR0ProcHandleSelf(void); +#endif + + +#ifdef IN_RING3 + +/** + * Attempts to alter the priority of the current process. + * + * @returns iprt status code. + * @param enmPriority The new priority. + */ +RTR3DECL(int) RTProcSetPriority(RTPROCPRIORITY enmPriority); + +/** + * Gets the current priority of this process. + * + * @returns The priority (see RTPROCPRIORITY). + */ +RTR3DECL(RTPROCPRIORITY) RTProcGetPriority(void); + +/** + * Create a child process. + * + * @returns iprt status code. + * @param pszExec Executable image to use to create the child process. + * @param papszArgs Pointer to an array of arguments to the child. The array terminated by an entry containing NULL. + * @param Env Handle to the environment block for the child. + * @param fFlags Flags, one of the RTPROC_FLAGS_* defines. + * @param pProcess Where to store the process identifier on successful return. + * The content is not changed on failure. NULL is allowed. + */ +RTR3DECL(int) RTProcCreate(const char *pszExec, const char * const *papszArgs, RTENV Env, unsigned fFlags, PRTPROCESS pProcess); + + +/** + * Create a child process. + * + * @returns IPRT status code. + * + * @param pszExec Executable image to use to create the child process. + * @param papszArgs Pointer to an array of arguments to the child. The + * array terminated by an entry containing NULL. + * @param hEnv Handle to the environment block for the child. Pass + * RTENV_DEFAULT to use the environment of the current + * process. + * @param fFlags Flags, one of the RTPROC_FLAGS_* defines. + * @param phStdIn The standard in handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard input of the + * guest. + * @param phStdOut The standard out handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard output of the + * guest. + * @param phStdErr The standard error handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard error of the + * guest. + * @param pszAsUser User to run the process as. Pass NULL to use the same + * user as the current process. + * Windows: Use user\@domain format to specify a domain. + * @param pszPassword Password to use to authenticate @a pszAsUser. Must be + * NULL wif pszAsUser is NULL. Whether this is actually + * used or not depends on the platform. + * @param phProcess Where to store the process handle on successful return. + * The content is not changed on failure. NULL is allowed. + * + * @remarks The handles does not have to be created as inheritable, but it + * doesn't hurt if they are as it may avoid race conditions on some + * platforms. + * + * @remarks The as-user feature isn't supported/implemented on all platforms and + * will cause a-yet-to-be-determined-error-status on these. + */ +RTR3DECL(int) RTProcCreateEx(const char *pszExec, const char * const *papszArgs, RTENV hEnv, uint32_t fFlags, + PCRTHANDLE phStdIn, PCRTHANDLE phStdOut, PCRTHANDLE phStdErr, const char *pszAsUser, + const char *pszPassword, PRTPROCESS phProcess); + +/** @name RTProcCreate and RTProcCreateEx flags + * @{ */ +/** Detach the child process from the parents process tree and process group, + * session or/and console (depends on the platform what's done applicable). + * + * The new process will not be a direct decendent of the parent and it will not + * be possible to wait for it, i.e. @a phProcess shall be NULL. */ +#define RTPROC_FLAGS_DETACHED RT_BIT(0) +/** Don't show the started process. + * This is a Windows (and maybe OS/2) concept, do not use on other platforms. */ +#define RTPROC_FLAGS_HIDDEN RT_BIT(1) +/** Use special code path for starting child processes from a service (daemon). + * This is a windows concept for dealing with the so called "Session 0" + * isolation which was introduced with Windows Vista. Do not use on other + * platforms. */ +#define RTPROC_FLAGS_SERVICE RT_BIT(2) +/** Suppress changing the process contract id for the child process + * on Solaris. Without this flag the contract id is always changed, as that's + * the more frequently used case. */ +#define RTPROC_FLAGS_SAME_CONTRACT RT_BIT(3) +/** Load user profile data when executing a process. + * This redefines the meaning of RTENV_DEFAULT to the profile environment. + * @remarks On non-windows platforms, the resulting environment maybe very + * different from what you see in your shell. Among other reasons, + * we cannot run shell profile scripts which typically sets up the + * environment. */ +#define RTPROC_FLAGS_PROFILE RT_BIT(4) +/** Create process without a console window. + * This is a Windows (and OS/2) concept, do not use on other platforms. */ +#define RTPROC_FLAGS_NO_WINDOW RT_BIT(5) +/** Search the PATH for the executable. */ +#define RTPROC_FLAGS_SEARCH_PATH RT_BIT(6) +/** Don't quote and escape arguments on Windows and similar platforms where a + * command line is passed to the child process instead of an argument vector, + * just join up argv with a space between each. Ignored on platforms + * passing argument the vector. */ +#define RTPROC_FLAGS_UNQUOTED_ARGS RT_BIT(7) +/** Consider hEnv an environment change record to be applied to RTENV_DEFAULT. + * If hEnv is RTENV_DEFAULT, the flag has no effect. */ +#define RTPROC_FLAGS_ENV_CHANGE_RECORD RT_BIT(8) +/** Valid flag mask. */ +#define RTPROC_FLAGS_VALID_MASK UINT32_C(0x1ff) +/** @} */ + + +/** + * Process exit reason. + */ +typedef enum RTPROCEXITREASON +{ + /** Normal exit. iStatus contains the exit code. */ + RTPROCEXITREASON_NORMAL = 1, + /** Any abnormal exit. iStatus is undefined. */ + RTPROCEXITREASON_ABEND, + /** Killed by a signal. The iStatus field contains the signal number. */ + RTPROCEXITREASON_SIGNAL +} RTPROCEXITREASON; + +/** + * Process exit status. + */ +typedef struct RTPROCSTATUS +{ + /** The process exit status if the exit was a normal one. */ + int iStatus; + /** The reason the process terminated. */ + RTPROCEXITREASON enmReason; +} RTPROCSTATUS; +/** Pointer to a process exit status structure. */ +typedef RTPROCSTATUS *PRTPROCSTATUS; +/** Pointer to a const process exit status structure. */ +typedef const RTPROCSTATUS *PCRTPROCSTATUS; + + +/** Flags for RTProcWait(). + * @{ */ +/** Block indefinitly waiting for the process to exit. */ +#define RTPROCWAIT_FLAGS_BLOCK 0 +/** Don't block, just check if the process have exited. */ +#define RTPROCWAIT_FLAGS_NOBLOCK 1 +/** @} */ + +/** + * Waits for a process, resumes on interruption. + * + * @returns VINF_SUCCESS when the status code for the process was collected and + * put in *pProcStatus. + * @returns VERR_PROCESS_NOT_FOUND if the specified process wasn't found. + * @returns VERR_PROCESS_RUNNING when the RTPROCWAIT_FLAGS_NOBLOCK and the + * process haven't exited yet. + * + * @param Process The process to wait for. + * @param fFlags The wait flags, any of the RTPROCWAIT_FLAGS_ \#defines. + * @param pProcStatus Where to store the exit status on success. + * Optional. + */ +RTR3DECL(int) RTProcWait(RTPROCESS Process, unsigned fFlags, PRTPROCSTATUS pProcStatus); + +/** + * Waits for a process, returns on interruption. + * + * @returns VINF_SUCCESS when the status code for the process was collected and + * put in *pProcStatus. + * @returns VERR_PROCESS_NOT_FOUND if the specified process wasn't found. + * @returns VERR_PROCESS_RUNNING when the RTPROCWAIT_FLAGS_NOBLOCK and the + * process haven't exited yet. + * @returns VERR_INTERRUPTED when the wait was interrupted by the arrival of a + * signal or other async event. + * + * @param Process The process to wait for. + * @param fFlags The wait flags, any of the RTPROCWAIT_FLAGS_ \#defines. + * @param pProcStatus Where to store the exit status on success. + * Optional. + */ +RTR3DECL(int) RTProcWaitNoResume(RTPROCESS Process, unsigned fFlags, PRTPROCSTATUS pProcStatus); + +/** + * Terminates (kills) a running process. + * + * @returns IPRT status code. + * @param Process The process to terminate. + */ +RTR3DECL(int) RTProcTerminate(RTPROCESS Process); + +/** + * Gets the processor affinity mask of the current process. + * + * @returns The affinity mask. + */ +RTR3DECL(uint64_t) RTProcGetAffinityMask(void); + +/** + * Gets the short process name. + * + * @returns Pointer to read-only name string. + */ +RTR3DECL(const char *) RTProcShortName(void); + +/** + * Gets the path to the executable image of the current process. + * + * @returns pszExecPath on success. NULL on buffer overflow or other errors. + * + * @param pszExecPath Where to store the path. + * @param cbExecPath The size of the buffer. + */ +RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath); + +/** + * Daemonize the current process, making it a background process. + * + * The way this work is that it will spawn a detached / backgrounded / + * daemonized / call-it-what-you-want process that isn't a direct child of the + * current process. The spawned will have the same arguments a the caller, + * except that the @a pszDaemonizedOpt is appended to prevent that the new + * process calls this API again. + * + * The new process will have the standard handles directed to/from the + * bitbucket. + * + * @returns IPRT status code. On success it is normal for the caller to exit + * the process by returning from main(). + * + * @param papszArgs The argument vector of the calling process. + * @param pszDaemonizedOpt The daemonized option. This is appended to the + * end of the parameter list of the daemonized process. + */ +RTR3DECL(int) RTProcDaemonize(const char * const *papszArgs, const char *pszDaemonizedOpt); + +/** + * Daemonize the current process, making it a background process. The current + * process will exit if daemonizing is successful. + * + * @returns IPRT status code. On success it will only return in the child + * process, the parent will exit. On failure, it will return in the + * parent process and no child has been spawned. + * + * @param fNoChDir Pass false to change working directory to "/". + * @param fNoClose Pass false to redirect standard file streams to the null device. + * @param pszPidfile Path to a file to write the process id of the daemon + * process to. Daemonizing will fail if this file already + * exists or cannot be written. May be NULL. + */ +RTR3DECL(int) RTProcDaemonizeUsingFork(bool fNoChDir, bool fNoClose, const char *pszPidfile); + +/** + * Check if the given process is running on the system. + * + * This check is case sensitive on most systems, except for Windows, OS/2 and + * Darwin. + * + * @returns true if the process is running & false otherwise. + * @param pszName Process name to search for. If no path is given only the + * filename part of the running process set will be + * matched. If a path is specified, the full path will be + * matched. + */ +RTR3DECL(bool) RTProcIsRunningByName(const char *pszName); + +/** + * Queries the parent process ID. + * + * @returns IPRT status code + * @param hProcess The process to query the parent of. + * @param phParent Where to return the parent process ID. + */ +RTR3DECL(int) RTProcQueryParent(RTPROCESS hProcess, PRTPROCESS phParent); + +/** + * Query the username of the given process. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if the given buffer size is to small for the username. + * @param hProcess The process handle to query the username for. + * NIL_PROCESS is an alias for the current process. + * @param pszUser Where to store the user name on success. + * @param cbUser The size of the user name buffer. + * @param pcbUser Where to store the username length on success + * or the required buffer size if VERR_BUFFER_OVERFLOW + * is returned. + */ +RTR3DECL(int) RTProcQueryUsername(RTPROCESS hProcess, char *pszUser, size_t cbUser, size_t *pcbUser); + +/** + * Query the username of the given process allocating the string for the username. + * + * @returns IPRT status code. + * @param hProcess The process handle to query the username for. + * @param ppszUser Where to store the pointer to the string containing + * the username on success. Free with RTStrFree(). + */ +RTR3DECL(int) RTProcQueryUsernameA(RTPROCESS hProcess, char **ppszUser); + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/semaphore.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/semaphore.h @@ -0,0 +1,1409 @@ +/** @file + * IPRT - Semaphore. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_semaphore_h +#define ___iprt_semaphore_h + +#include +#include +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) +# include +#endif + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_sems RTSem - Semaphores + * + * This module implements all kinds of event and mutex semaphores; in addition + * to these, IPRT implements "critical sections", which are fast recursive + * mutexes (see @ref grp_rt_critsect ). C++ users may find @ref grp_rt_cpp_lock + * interesting. + * + * @ingroup grp_rt + * @{ + */ + + +/** @name Generic Semaphore Wait Flags. + * + * @remarks Exactly one of RTSEMWAIT_FLAGS_RELATIVE and + * RTSEMWAIT_FLAGS_ABSOLUTE must be set, unless + * RTSEMWAIT_FLAGS_INDEFINITE is used. + * + * Exactly one of RTSEMWAIT_FLAGS_NANOSECS and + * RTSEMWAIT_FLAGS_MILLISECS must be set, unless + * RTSEMWAIT_FLAGS_INDEFINITE is used. + * + * Exactly one of RTSEMWAIT_FLAGS_RESUME and RTSEMWAIT_FLAGS_NORESUME + * must be set. + * + * The interruptible vs resume stuff is ring-0 vs ring-3 semantics. + * + * @{ */ +/** The timeout is relative. */ +#define RTSEMWAIT_FLAGS_RELATIVE RT_BIT_32(0) +/** The timeout is absolute. */ +#define RTSEMWAIT_FLAGS_ABSOLUTE RT_BIT_32(1) +/** The timeout is specified in nanoseconds. */ +#define RTSEMWAIT_FLAGS_NANOSECS RT_BIT_32(2) +/** The timeout is specified in milliseconds. */ +#define RTSEMWAIT_FLAGS_MILLISECS RT_BIT_32(3) +/** Indefinite wait. + * The relative/absolute and nano-/millisecond flags are ignored. */ +#define RTSEMWAIT_FLAGS_INDEFINITE RT_BIT_32(4) +/** Mask covering the time related bits. */ +#define RTSEMWAIT_FLAGS_TIME_MASK UINT32_C(0x0000001f) + +/** Interruptible wait. */ +#define RTSEMWAIT_FLAGS_INTERRUPTIBLE RT_BIT_32(5) +/** No automatic resume, same as interruptible. */ +#define RTSEMWAIT_FLAGS_NORESUME RTSEMWAIT_FLAGS_INTERRUPTIBLE +/** Uninterruptible wait. */ +#define RTSEMWAIT_FLAGS_UNINTERRUPTIBLE RT_BIT_32(6) +/** Resume on interrupt, same as uninterruptible. */ +#define RTSEMWAIT_FLAGS_RESUME RTSEMWAIT_FLAGS_UNINTERRUPTIBLE + +/** Macro for validate the flags. */ +#define RTSEMWAIT_FLAGS_ARE_VALID(fFlags) \ + ( !((fFlags) & UINT32_C(0xffffff80)) \ + && ( ((fFlags) & RTSEMWAIT_FLAGS_INDEFINITE) \ + ? ( (((fFlags) & UINT32_C(0x20))) ^ (((fFlags) >> 1) & UINT32_C(0x20)) ) == UINT32_C(0x20) \ + : ( (((fFlags) & UINT32_C(0x25))) ^ (((fFlags) >> 1) & UINT32_C(0x25)) ) == UINT32_C(0x25) )) +/** @} */ + + + +/** @defgroup grp_rt_sems_event RTSemEvent - Single Release Event Semaphores + * + * Event semaphores can be used for inter-thread communication when one thread + * wants to notify another thread that something happened. A thread can block + * ("wait") on an event semaphore until it is signalled by another thread; see + * RTSemEventCreate, RTSemEventSignal and RTSemEventWait. + * + * @{ */ + +/** + * Create an event semaphore. + * + * @returns iprt status code. + * @param phEventSem Where to store the handle to the newly created + * event semaphore. + */ +RTDECL(int) RTSemEventCreate(PRTSEMEVENT phEventSem); + +/** + * Create an event semaphore. + * + * @returns iprt status code. + * @param phEventSem Where to store the handle to the newly created + * event semaphore. + * @param fFlags Flags, any combination of the + * RTSEMEVENT_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). Since we + * don't do order checks on event semaphores, the + * use of the class is limited to controlling the + * timeout threshold for deadlock detection. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem, uint32_t fFlags, RTLOCKVALCLASS hClass, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(4, 5); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMEVENT_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** Bootstrap hack for use with certain memory allocator locks only! */ +#define RTSEMEVENT_FLAGS_BOOTSTRAP_HACK UINT32_C(0x00000004) +/** @} */ + +/** + * Destroy an event semaphore. + * + * @returns iprt status code. + * @param hEventSem Handle of the event semaphore. NIL_RTSEMEVENT + * is quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem); + +/** + * Signal an event semaphore. + * + * The event semaphore will be signaled and automatically reset after exactly + * one thread have successfully returned from RTSemEventWait() after + * waiting/polling on that semaphore. + * + * @returns iprt status code. + * @param hEventSem The event semaphore to signal. + * + * @remarks ring-0: This works when preemption is disabled. However it is + * system specific whether it works in interrupt context or with + * interrupts disabled. + */ +RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem); + +/** + * Wait for the event semaphore to be signaled, resume on interruption. + * + * This function will resume if the wait is interrupted by an async system event + * (like a unix signal) or similar. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hEventSem The event semaphore to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventWait(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies); + +/** + * Wait for the event semaphore to be signaled, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * @returns iprt status code. + * @param hEventSem The event semaphore to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies); + +/** + * Extended API for waiting on an event semaphore to be signaled. + * + * @returns IPRT status code. + * @param hEventSem The event semaphore to wait on. + * @param fFlags Combination of RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemEventWaitEx(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemEventWaitEx that tracks the location. + * + * @returns IPRT status code, see RTSemEventWaitEx. + * @param hEventSem The event semaphore to wait on. + * @param fFlags See RTSemEventWaitEx. + * @param uTimeout See RTSemEventWaitEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemEventWaitExDebug(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Gets the best timeout resolution that RTSemEventWaitEx can do. + * + * @returns The resolution in nanoseconds. + */ +RTDECL(uint32_t) RTSemEventGetResolution(void); + +/** + * Sets the signaller thread to one specific thread. + * + * This is only used for validating usage and deadlock detection. When used + * after calls to RTSemEventAddSignaller, the specified thread will be the only + * signalling thread. + * + * @param hEventSem The event semaphore. + * @param hThread The thread that will signal it. Pass + * NIL_RTTHREAD to indicate that there is no + * special signalling thread. + */ +RTDECL(void) RTSemEventSetSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** + * To add more signalling threads. + * + * First call RTSemEventSetSignaller then add further threads with this. + * + * @param hEventSem The event semaphore. + * @param hThread The thread that will signal it. NIL_RTTHREAD is + * not accepted. + */ +RTDECL(void) RTSemEventAddSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** + * To remove a signalling thread. + * + * Reverts work done by RTSemEventAddSignaller and RTSemEventSetSignaller. + * + * @param hEventSem The event semaphore. + * @param hThread A previously added thread. + */ +RTDECL(void) RTSemEventRemoveSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** @} */ + + +/** @defgroup grp_rt_sems_event_multi RTSemEventMulti - Multiple Release Event Semaphores + * + * A variant of @ref grp_rt_sems_event where all threads will be unblocked when + * signalling the semaphore. + * + * @{ */ + +/** + * Creates a multiple release event semaphore. + * + * @returns iprt status code. + * @param phEventMultiSem Where to store the handle to the newly created + * multiple release event semaphore. + */ +RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem); + +/** + * Creates a multiple release event semaphore. + * + * @returns iprt status code. + * @param phEventMultiSem Where to store the handle to the newly created + * multiple release event semaphore. + * @param fFlags Flags, any combination of the + * RTSEMEVENTMULTI_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). Since we + * don't do order checks on event semaphores, the + * use of the class is limited to controlling the + * timeout threshold for deadlock detection. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(4, 5); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + +/** + * Destroy an event multi semaphore. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Signal an event multi semaphore. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + * + * @remarks ring-0: This works when preemption is disabled. However it is + * system specific whether it works in interrupt context or with + * interrupts disabled. + */ +RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Resets an event multi semaphore to non-signaled state. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + */ +RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Wait for the event multi semaphore to be signaled, resume on interruption. + * + * This function will resume if the wait is interrupted by an async + * system event (like a unix signal) or similar. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hEventMultiSem The multiple release event semaphore. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies); + +/** + * Wait for the event multi semaphore to be signaled, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + * @param cMillies Number of milliseconds to wait. + * @todo Rename to RTSemEventMultiWaitIntr since it is mainly for + * ring-0 consumption. + */ +RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies); + +/** + * Extended API for waiting on an event semaphore to be signaled. + * + * @returns IPRT status code. + * @param hEventMultiSem The multiple release event semaphore to wait + * on. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemEventMultiWaitEx(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemEventMultiWaitEx that tracks the location. + + * @returns IPRT status code, see RTSemEventMultiWaitEx. + * @param hEventMultiSem The multiple release event semaphore handle. + * @param fFlags See RTSemEventMultiWaitEx. + * @param uTimeout See RTSemEventMultiWaitEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemEventMultiWaitExDebug(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Gets the best timeout resolution that RTSemEventMultiWaitEx can do. + * + * @returns The resolution in nanoseconds. + */ +RTDECL(uint32_t) RTSemEventMultiGetResolution(void); + +/** + * Sets the signaller thread to one specific thread. + * + * This is only used for validating usage and deadlock detection. When used + * after calls to RTSemEventAddSignaller, the specified thread will be the only + * signalling thread. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread The thread that will signal it. Pass + * NIL_RTTHREAD to indicate that there is no + * special signalling thread. + */ +RTDECL(void) RTSemEventMultiSetSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** + * To add more signalling threads. + * + * First call RTSemEventSetSignaller then add further threads with this. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread The thread that will signal it. NIL_RTTHREAD is + * not accepted. + */ +RTDECL(void) RTSemEventMultiAddSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** + * To remove a signalling thread. + * + * Reverts work done by RTSemEventAddSignaller and RTSemEventSetSignaller. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread A previously added thread. + */ +RTDECL(void) RTSemEventMultiRemoveSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** @} */ + + +/** @defgroup grp_rt_sems_mutex RTSemMutex - Mutex semaphores. + * + * Mutex semaphores protect a section of code or data to which access must be + * exclusive. Only one thread can hold access to a critical section at one + * time. See RTSemMutexCreate, RTSemMutexRequest and RTSemMutexRelease. + * + * @remarks These are less efficient than "fast mutexes" and "critical + * sections", which IPRT implements as well; see @ref + * grp_rt_sems_fast_mutex and @ref grp_rt_critsect . + * + * @{ */ + +/** + * Create a mutex semaphore. + * + * @returns iprt status code. + * @param phMutexSem Where to store the mutex semaphore handle. + */ +RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMutexSem); + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phMutexSem Where to store the handle to the newly created + * mutex semaphore. + * @param fFlags Flags, any combination of the + * RTSEMMUTEX_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). If NIL, no + * lock order validation will be performed on this + * lock. + * @param uSubClass The sub-class. This is used to define lock + * order within a class. RTLOCKVAL_SUB_CLASS_NONE + * is the recommended value here. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemMutexCreateEx(PRTSEMMUTEX phMutexSem, uint32_t fFlags, RTLOCKVALCLASS hClass, uint32_t uSubClass, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(5, 6); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMMUTEX_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + + +/** + * Destroy a mutex semaphore. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to destroy. NIL is quietly + * ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemMutexDestroy(RTSEMMUTEX hMutexSem); + +/** + * Changes the lock validator sub-class of the mutex semaphore. + * + * It is recommended to try make sure that nobody is using this semaphore while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param hMutexSem The handle to the mutex semaphore. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTSemMutexSetSubClass(RTSEMMUTEX hMutexSem, uint32_t uSubClass); + +/** + * Request ownership of a mutex semaphore, resume on interruption. + * + * This function will resume if the wait is interrupted by an async + * system event (like a unix signal) or similar. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies); + +/** + * Request ownership of a mutex semaphore, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemMutexRequest that tracks the location. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemMutexRequestDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemMutexRequestNoResume that tracks the location. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemMutexRequestNoResumeDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request ownership of a mutex semaphore, extended edition. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemMutexRequestEx(RTSEMMUTEX hMutexSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemMutexRequestEx that tracks the location. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param fFlags See RTSemMutexRequestEx. + * @param uTimeout See RTSemMutexRequestEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemMutexRequestExDebug(RTSEMMUTEX hMutexSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release the ownership of a mutex semaphore. + * + * @returns iprt status code. + * @param hMutexSem The mutex to release the ownership of. It goes + * without saying the the calling thread must own + * it. + */ +RTDECL(int) RTSemMutexRelease(RTSEMMUTEX hMutexSem); + +/** + * Checks if the mutex semaphore is owned or not. + * + * @returns true if owned, false if not. + * @param hMutexSem The mutex semaphore. + */ +RTDECL(bool) RTSemMutexIsOwned(RTSEMMUTEX hMutexSem); + +/* Strict build: Remap the two request calls to the debug versions. */ +#if defined(RT_STRICT) && !defined(RTSEMMUTEX_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# ifdef ___iprt_asm_h +# define RTSemMutexRequest(hMutexSem, cMillies) RTSemMutexRequestDebug((hMutexSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemMutexRequestNoResume(hMutexSem, cMillies) RTSemMutexRequestNoResumeDebug((hMutexSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemMutexRequestEx(hMutexSem, fFlags, uTimeout) RTSemMutexRequestExDebug((hMutexSem), (fFlags), (uTimeout), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# else +# define RTSemMutexRequest(hMutexSem, cMillies) RTSemMutexRequestDebug((hMutexSem), (cMillies), 0, RT_SRC_POS) +# define RTSemMutexRequestNoResume(hMutexSem, cMillies) RTSemMutexRequestNoResumeDebug((hMutexSem), (cMillies), 0, RT_SRC_POS) +# define RTSemMutexRequestEx(hMutexSem, fFlags, uTimeout) RTSemMutexRequestExDebug((hMutexSem), (fFlags), (uTimeout), 0, RT_SRC_POS) +# endif +#endif + +/* Strict lock order: Automatically classify locks by init location. */ +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) && !defined(RTSEMMUTEX_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# define RTSemMutexCreate(phMutexSem) \ + RTSemMutexCreateEx((phMutexSem), 0 /*fFlags*/, \ + RTLockValidatorClassForSrcPos(RT_SRC_POS, NULL), \ + RTLOCKVAL_SUB_CLASS_NONE, NULL) +#endif + +/** @} */ + + +/** @defgroup grp_rt_sems_fast_mutex RTSemFastMutex - Fast Mutex Semaphores + * + * Fast mutexes work like regular mutexes in that they allow only a single + * thread access to a critical piece of code or data. As opposed to mutexes, + * they require no syscall if the fast mutex is not held (like critical + * sections). Unlike critical sections however, they are *not* recursive. + * + * @remarks The fast mutexes has sideeffects on IRQL on Windows hosts. So use + * with care and test on windows with driver verifier. + * + * @{ */ + +/** + * Create a fast mutex semaphore. + * + * @returns iprt status code. + * @param phFastMtx Where to store the handle to the newly created + * fast mutex semaphore. + * + * @remarks Fast mutex semaphores are not recursive. + */ +RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFastMtx); + +/** + * Destroy a fast mutex semaphore. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFastMtx); + +/** + * Request ownership of a fast mutex semaphore. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. + */ +RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFastMtx); + +/** + * Release the ownership of a fast mutex semaphore. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. It goes + * without saying the the calling thread must own + * it. + */ +RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx); + +/** @} */ + + +/** @defgroup grp_rt_sems_spin_mutex RTSemSpinMutex - Spinning Mutex Semaphores + * + * A very adaptive variant of mutex semaphore that is tailored for the ring-0 + * logger. + * + * @{ */ + +/** + * Creates a spinning mutex semaphore. + * + * @returns iprt status code. + * @retval VERR_INVALID_PARAMETER on invalid flags. + * @retval VERR_NO_MEMORY if out of memory for the semaphore structure and + * handle. + * + * @param phSpinMtx Where to return the handle to the create semaphore. + * @param fFlags Flags, see RTSEMSPINMUTEX_FLAGS_XXX. + */ +RTDECL(int) RTSemSpinMutexCreate(PRTSEMSPINMUTEX phSpinMtx, uint32_t fFlags); + +/** @name RTSemSpinMutexCreate flags. + * @{ */ +/** Always take the semaphore in a IRQ safe way. + * (In plain words: always disable interrupts.) */ +#define RTSEMSPINMUTEX_FLAGS_IRQ_SAFE RT_BIT_32(0) +/** Mask of valid flags. */ +#define RTSEMSPINMUTEX_FLAGS_VALID_MASK UINT32_C(0x00000001) +/** @} */ + +/** + * Destroys a spinning mutex semaphore. + * + * @returns iprt status code. + * @retval VERR_INVALID_HANDLE (or crash) if the handle is invalid. (NIL will + * not cause this status.) + * + * @param hSpinMtx The semaphore handle. NIL_RTSEMSPINMUTEX is ignored + * quietly (VINF_SUCCESS). + */ +RTDECL(int) RTSemSpinMutexDestroy(RTSEMSPINMUTEX hSpinMtx); + +/** + * Request the spinning mutex semaphore. + * + * This may block if the context we're called in allows this. If not it will + * spin. If called in an interrupt context, we will only spin if the current + * owner isn't interrupted. Also, on some systems it is not always possible to + * wake up blocking threads in all contexts, so, which will either be indicated + * by returning VERR_SEM_BAD_CONTEXT or by temporarily switching the semaphore + * into pure spinlock state. + * + * Preemption will be disabled upon return. IRQs may also be disabled. + * + * @returns iprt status code. + * @retval VERR_SEM_BAD_CONTEXT if the context it's called in isn't suitable + * for releasing it if someone is sleeping on it. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_SEM_NESTED if held by the caller. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexRequest(RTSEMSPINMUTEX hSpinMtx); + +/** + * Like RTSemSpinMutexRequest but it won't block or spin if the semaphore is + * held by someone else. + * + * @returns iprt status code. + * @retval VERR_SEM_BUSY if held by someone else. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_SEM_NESTED if held by the caller. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexTryRequest(RTSEMSPINMUTEX hSpinMtx); + +/** + * Releases the semaphore previously acquired by RTSemSpinMutexRequest or + * RTSemSpinMutexTryRequest. + * + * @returns iprt status code. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_NOT_OWNER if not owner. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted. + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexRelease(RTSEMSPINMUTEX hSpinMtx); + +/** @} */ + + +/** @defgroup grp_rt_sem_rw RTSemRW - Read / Write Semaphores + * + * Read/write semaphores are a fancier version of mutexes in that they grant + * read access to the protected data to several threads at the same time but + * allow only one writer at a time. This can make code scale better at the + * expense of slightly more overhead in mutex management. + * + * @{ */ + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phRWSem Where to store the handle to the newly created + * RW semaphore. + */ +RTDECL(int) RTSemRWCreate(PRTSEMRW phRWSem); + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phRWSem Where to store the handle to the newly created + * RW semaphore. + * @param fFlags Flags, any combination of the RTSEMRW_FLAGS_XXX + * \#defines. + * @param hClass The class (no reference consumed). If NIL, no + * lock order validation will be performed on this + * lock. + * @param uSubClass The sub-class. This is used to define lock + * order within a class. RTLOCKVAL_SUB_CLASS_NONE + * is the recommended value here. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemRWCreateEx(PRTSEMRW phRWSem, uint32_t fFlags, RTLOCKVALCLASS hClass, uint32_t uSubClass, + const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR_MAYBE_NULL(5, 6); + +/** @name RTSemRWCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMRW_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + +/** + * Destroys a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemRWDestroy(RTSEMRW hRWSem); + +/** + * Changes the lock validator sub-class of the read/write semaphore. + * + * It is recommended to try make sure that nobody is using this semaphore while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param hRWSem Handle to the read/write semaphore. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTSemRWSetSubClass(RTSEMRW hRWSem, uint32_t uSubClass); + +/** + * Request read access to a read/write semaphore, resume on interruption + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestRead(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Request read access to a read/write semaphore, return on interruption + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestReadNoResume(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemRWRequestRead that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestReadDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemRWRequestWriteNoResume that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestReadNoResumeDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request read access to a read/write semaphore, extended edition. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemRWRequestReadEx(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout); + + +/** + * Debug version of RTSemRWRequestReadEx that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags See RTSemRWRequestReadEx. + * @param uTimeout See RTSemRWRequestReadEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestReadExDebug(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release read access to a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. It goes + * without saying that caller must own read + * privileges to the semaphore. + */ +RTDECL(int) RTSemRWReleaseRead(RTSEMRW hRWSem); + +/** + * Request write access to a read/write semaphore, resume on interruption. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_DEADLOCK if the caller owned the read lock. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestWrite(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Request write access to a read/write semaphore, return on interruption. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_DEADLOCK if the caller owned the read lock. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestWriteNoResume(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemRWRequestWrite that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWrite. + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestWriteDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemRWRequestWriteNoResume that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWriteNoResume. + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestWriteNoResumeDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request write access to a read/write semaphore, extended edition. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPTED if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_DEADLOCK if the caller owned the read lock. Do not depend on + * this as it is implementation specific. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemRWRequestWriteEx(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemRWRequestWriteEx that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWriteEx. + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags See RTSemRWRequestWriteEx. + * @param uTimeout See RTSemRWRequestWriteEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param SRC_POS The source position where call is being made + * from. Use RT_SRC_POS when possible. Optional. + */ +RTDECL(int) RTSemRWRequestWriteExDebug(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release write access to a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. Goes + * without saying that caller must have write + * access to the semaphore. + */ +RTDECL(int) RTSemRWReleaseWrite(RTSEMRW hRWSem); + +/** + * Checks if the caller is the exclusive semaphore owner. + * + * @returns true / false accoringly. + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(bool) RTSemRWIsWriteOwner(RTSEMRW hRWSem); + +/** + * Checks if the caller is one of the read owners of the semaphore. + * + * @note !CAUTION! This API doesn't work reliably if lock validation isn't + * enabled. Meaning, the answer is not trustworhty unless + * RT_LOCK_STRICT or RTSEMRW_STRICT was defined at build time. Also, + * make sure you do not use RTSEMRW_FLAGS_NO_LOCK_VAL when creating + * the semaphore. And finally, if you used a locking class, don't + * disable deadlock detection by setting cMsMinDeadlock to + * RT_INDEFINITE_WAIT. + * + * In short, only use this for assertions. + * + * @returns true if reader, false if not. + * @param hRWSem Handle to the read/write semaphore. + * @param fWannaHear What you'd like to hear when lock validation is + * not available. (For avoiding asserting all over + * the place.) + */ +RTDECL(bool) RTSemRWIsReadOwner(RTSEMRW hRWSem, bool fWannaHear); + +/** + * Gets the write recursion count. + * + * @returns The write recursion count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetWriteRecursion(RTSEMRW hRWSem); + +/** + * Gets the read recursion count of the current writer. + * + * @returns The read recursion count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetWriterReadRecursion(RTSEMRW hRWSem); + +/** + * Gets the current number of reads. + * + * This includes all read recursions, so it might be higher than the number of + * read owners. It does not include reads done by the current writer. + * + * @returns The read count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetReadCount(RTSEMRW hRWSem); + +/* Strict build: Remap the four request calls to the debug versions. */ +#if defined(RT_STRICT) && !defined(RTSEMRW_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# ifdef ___iprt_asm_h +# define RTSemRWRequestRead(hRWSem, cMillies) RTSemRWRequestReadDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestReadNoResume(hRWSem, cMillies) RTSemRWRequestReadNoResumeDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWrite(hRWSem, cMillies) RTSemRWRequestWriteDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWriteNoResume(hRWSem, cMillies) RTSemRWRequestWriteNoResumeDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWriteEx(hRWSem, fFlags, uTimeout) RTSemRWRequestWriteExDebug((hRWSem), (fFlags), (uTimeout), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# else +# define RTSemRWRequestRead(hRWSem, cMillies) RTSemRWRequestReadDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestReadNoResume(hRWSem, cMillies) RTSemRWRequestReadNoResumeDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWrite(hRWSem, cMillies) RTSemRWRequestWriteDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWriteNoResume(hRWSem, cMillies) RTSemRWRequestWriteNoResumeDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWriteEx(hRWSem, fFlags, uTimeout) RTSemRWRequestWriteExDebug((hRWSem), (fFlags), (uTimeout), 0, RT_SRC_POS) +# endif +#endif + +/* Strict lock order: Automatically classify locks by init location. */ +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) && !defined(RTSEMRW_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# define RTSemRWCreate(phSemRW) \ + RTSemRWCreateEx((phSemRW), 0 /*fFlags*/, \ + RTLockValidatorClassForSrcPos(RT_SRC_POS, NULL), \ + RTLOCKVAL_SUB_CLASS_NONE, NULL) +#endif + +/** @} */ + + +/** @defgroup grp_rt_sems_pingpong RTSemPingPong - Ping-Pong Construct + * + * Serialization of a two way communication. + * + * @{ */ + +/** + * Ping-pong speaker + */ +typedef enum RTPINGPONGSPEAKER +{ + /** Not initialized. */ + RTPINGPONGSPEAKER_UNINITIALIZE = 0, + /** Ping is speaking, Pong is waiting. */ + RTPINGPONGSPEAKER_PING, + /** Pong is signaled, Ping is waiting. */ + RTPINGPONGSPEAKER_PONG_SIGNALED, + /** Pong is speaking, Ping is waiting. */ + RTPINGPONGSPEAKER_PONG, + /** Ping is signaled, Pong is waiting. */ + RTPINGPONGSPEAKER_PING_SIGNALED, + /** Hack to ensure that it's at least 32-bits wide. */ + RTPINGPONGSPEAKER_HACK = 0x7fffffff +} RTPINGPONGSPEAKER; + +/** + * Ping-Pong construct. + * + * Two threads, one saying Ping and the other saying Pong. The construct + * makes sure they don't speak out of turn and that they can wait and poll + * on the conversation. + */ +typedef struct RTPINGPONG +{ + /** The semaphore the Ping thread waits on. */ + RTSEMEVENT Ping; + /** The semaphore the Pong thread waits on. */ + RTSEMEVENT Pong; + /** The current speaker. */ + volatile RTPINGPONGSPEAKER enmSpeaker; +#if HC_ARCH_BITS == 64 + /** Padding the structure to become a multiple of sizeof(RTHCPTR). */ + uint32_t u32Padding; +#endif +} RTPINGPONG; +/** Pointer to Ping-Pong construct. */ +typedef RTPINGPONG *PRTPINGPONG; + +/** + * Init a Ping-Pong construct. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure which needs initialization. + */ +RTDECL(int) RTSemPingPongInit(PRTPINGPONG pPP); + +/** + * Deletes a Ping-Pong construct. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure which is to be destroyed. + * (I.e. put into uninitialized state.) + */ +RTDECL(int) RTSemPingPongDelete(PRTPINGPONG pPP); + +/** + * Signals the pong thread in a ping-pong construct. (I.e. sends ping.) + * This is called by the ping thread. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure to ping. + */ +RTDECL(int) RTSemPing(PRTPINGPONG pPP); + +/** + * Signals the ping thread in a ping-pong construct. (I.e. sends pong.) + * This is called by the pong thread. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure to pong. + */ +RTDECL(int) RTSemPong(PRTPINGPONG pPP); + +/** + * Wait function for the ping thread. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param pPP Pointer to the ping-pong structure to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemPingWait(PRTPINGPONG pPP, RTMSINTERVAL cMillies); + +/** + * Wait function for the pong thread. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param pPP Pointer to the ping-pong structure to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemPongWait(PRTPINGPONG pPP, RTMSINTERVAL cMillies); + + +/** + * Checks if the pong thread is speaking. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPongIsSpeaker(). + */ +DECLINLINE(bool) RTSemPingIsSpeaker(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PING; +} + + +/** + * Checks if the pong thread is speaking. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPingIsSpeaker(). + */ +DECLINLINE(bool) RTSemPongIsSpeaker(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PONG; +} + + +/** + * Checks whether the ping thread should wait. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPongShouldWait(). + */ +DECLINLINE(bool) RTSemPingShouldWait(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PONG + || enmSpeaker == RTPINGPONGSPEAKER_PONG_SIGNALED + || enmSpeaker == RTPINGPONGSPEAKER_PING_SIGNALED; +} + + +/** + * Checks whether the pong thread should wait. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPingShouldWait(). + */ +DECLINLINE(bool) RTSemPongShouldWait(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PING + || enmSpeaker == RTPINGPONGSPEAKER_PING_SIGNALED + || enmSpeaker == RTPINGPONGSPEAKER_PONG_SIGNALED; +} + +/** @} */ + + +/** @defgroup grp_rt_sems_xroads RTSemXRoads - Crossroads + * + * The crossroads semaphore is intended to prevent two classes of incompatible + * events from occurring simultaneously, like south/north bound traffic and + * west/east bound traffic at a 4-way junction. + * + * @remarks In order to simplify the implementation, the current flow is always + * given priority. So, it won't work at all well when busy! + * + * @remarks "XRoads" is used as a name because it is briefer than "crossroads" + * and it slightly stresses that is a 4 way crossing to the users of + * American English. + * @{ + */ + +/** + * Creates a crossroads semaphore. + * + * @returns IPRT status code. + * + * @param phXRoads Where to return the handle to the newly created + * crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsCreate(PRTSEMXROADS phXRoads); + +/** + * Destroys a crossroads semaphore. + * + * @returns IPRT status code. + * + * @param hXRoads Handle to the crossroads semaphore that is to be + * destroyed. NIL_RTSEMXROADS is quitetly ignored + * (VINF_SUCCESS). + */ +RTDECL(int) RTSemXRoadsDestroy(RTSEMXROADS hXRoads); + +/** + * Enter the crossroads from the south or north. + * + * (Coupled with RTSemXRoadsNSLeave.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsNSEnter(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads to the north or south. + * + * (Coupled with RTSemXRoadsNSEnter.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsNSLeave(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads from the east or west. + * + * (Coupled with RTSemXRoadsEWLeave.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsEWEnter(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads to the west or east. + * + * (Coupled with RTSemXRoadsEWEnter.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsEWLeave(RTSEMXROADS hXRoads); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/spinlock.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/spinlock.h @@ -0,0 +1,92 @@ +/** @file + * IPRT - Spinlocks. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_spinlock_h +#define ___iprt_spinlock_h + +#include +#include + +RT_C_DECLS_BEGIN + + +/** @defgroup grp_rt_spinlock RTSpinlock - Spinlocks + * @ingroup grp_rt + * @{ + */ + +/** + * Creates a spinlock. + * + * @returns iprt status code. + * @param pSpinlock Where to store the spinlock handle. + * @param fFlags Creation flags, see RTSPINLOCK_FLAGS_XXX. + * @param pszName Spinlock name, for debugging purposes. String lifetime + * must be the same as the lock as it won't be copied. + */ +RTDECL(int) RTSpinlockCreate(PRTSPINLOCK pSpinlock, uint32_t fFlags, const char *pszName); + +/** @name RTSPINLOCK_FLAGS_XXX + * @{ */ +/** Disable interrupts when taking the spinlock, making it interrupt safe + * (sans NMI of course). + * + * This is generally the safest option, though it isn't really required unless + * the data being protect is also accessed from interrupt handler context. */ +#define RTSPINLOCK_FLAGS_INTERRUPT_SAFE RT_BIT(1) +/** No need to disable interrupts, the protect code/data is not used by + * interrupt handlers. */ +#define RTSPINLOCK_FLAGS_INTERRUPT_UNSAFE RT_BIT(2) +/** @} */ + +/** + * Destroys a spinlock created by RTSpinlockCreate(). + * + * @returns iprt status code. + * @param Spinlock Spinlock returned by RTSpinlockCreate(). + */ +RTDECL(int) RTSpinlockDestroy(RTSPINLOCK Spinlock); + +/** + * Acquires the spinlock. + * + * @param Spinlock The spinlock to acquire. + */ +RTDECL(void) RTSpinlockAcquire(RTSPINLOCK Spinlock); + +/** + * Releases the spinlock. + * + * @param Spinlock The spinlock to acquire. + */ +RTDECL(void) RTSpinlockRelease(RTSPINLOCK Spinlock); + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/stdarg.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/stdarg.h @@ -0,0 +1,54 @@ +/** @file + * IPRT - stdarg.h wrapper. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_stdarg_h +#define ___iprt_stdarg_h + +#ifdef IPRT_NO_CRT +# include +# include +#else +# include +# if defined(RT_OS_FREEBSD) && defined(_KERNEL) +# include +# elif defined(RT_OS_SOLARIS) && defined(_KERNEL) && defined(__GNUC__) +# include +# if __GNUC__ >= 4 /* System headers refers to __builtin_stdarg_start. */ +# define __builtin_stdarg_start __builtin_va_start +# endif +# else +# include +# endif +#endif + +/* + * MSC doesn't implement va_copy. + */ +#ifndef va_copy +# define va_copy(dst, src) do { (dst) = (src); } while (0) /** @todo check AMD64 */ +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/stdint.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/stdint.h @@ -0,0 +1,244 @@ +/** @file + * IPRT - stdint.h wrapper (for backlevel compilers like MSC). + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __iprt_stdint_h +#define __iprt_stdint_h + +#include + + +/* + * Use the stdint.h on systems that have one. + */ +#if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \ + && !(defined(RT_OS_FREEBSD) && defined(_KERNEL)) \ + && !defined(_MSC_VER) \ + && !defined(__IBMC__) \ + && !defined(__IBMCPP__) \ + && !defined(IPRT_NO_CRT) \ + && !defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \ + && !defined(DOXYGEN_RUNNING) + +# ifndef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif +# ifndef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# endif +# include + +# if defined(RT_OS_DARWIN) && defined(KERNEL) && defined(RT_ARCH_AMD64) + /* + * Kludge to fix the incorrect 32-bit constant macros in + * Kernel.framework/Headers/stdin.h. uint32_t and int32_t are + * int not long as these macros use, which is significant when + * targeting AMD64. (10a222) + */ +# undef INT32_C +# define INT32_C(Value) (Value) +# undef UINT32_C +# define UINT32_C(Value) (Value ## U) +# endif /* 64-bit darwin kludge. */ + +#elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + +# ifndef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif +# ifndef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# endif +# include + +#else /* No system stdint.h */ + +/* + * Define the types we use. + * The linux kernel defines all these in linux/types.h, so skip it. + */ +# if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \ + || defined(IPRT_NO_CRT) \ + || defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \ + || defined(DOXGEN_RUNNING) + + /* Simplify the [u]int64_t type detection mess. */ +# undef IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# ifdef __IBMCPP__ +# if __IBMCPP__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__)) +# define IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# endif +# endif +# ifdef __IBMC__ +# if __IBMC__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__)) +# define IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# endif +# endif + + /* x-bit types */ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) || defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# if !defined(_INT8_T_DECLARED) && !defined(_INT8_T) +typedef signed char int8_t; +# endif +# if !defined(_UINT8_T_DECLARED) && !defined(_UINT8_T) +typedef unsigned char uint8_t; +# endif +# if !defined(_INT16_T_DECLARED) && !defined(_INT16_T) +typedef signed short int16_t; +# endif +# if !defined(_UINT16_T_DECLARED) && !defined(_UINT16_T) +typedef unsigned short uint16_t; +# endif +# if !defined(_INT32_T_DECLARED) && !defined(_INT32_T) +typedef signed int int32_t; +# endif +# if !defined(_UINT32_T_DECLARED) && !defined(_UINT32_T) +typedef unsigned int uint32_t; +# endif +# if defined(_MSC_VER) +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef signed _int64 int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef unsigned _int64 uint64_t; +# endif +# elif defined(IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES) +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef struct { uint32_t lo; int32_t hi; } int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef struct { uint32_t lo; uint32_t hi; } uint64_t; +# endif +# else /* Use long long for 64-bit types */ +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef signed long long int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef unsigned long long uint64_t; +# endif +# endif + + /* max integer types */ +# if !defined(_INTMAX_T_DECLARED) && !defined(_INTMAX_T) +typedef int64_t intmax_t; +# endif +# if !defined(_UINTMAX_T_DECLARED) && !defined(_UINTMAX_T) +typedef uint64_t uintmax_t; +# endif + +# else +# error "PORTME: Add architecture. Don't forget to check the [U]INTx_C() and [U]INTMAX_MIN/MAX macros." +# endif + +# endif /* !linux kernel or stuff */ + + /* pointer <-> integer types */ +# if !defined(_MSC_VER) || defined(DOXYGEN_RUNNING) +# if ARCH_BITS == 32 \ + || defined(RT_OS_LINUX) \ + || defined(RT_OS_FREEBSD) +# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T) +typedef signed long intptr_t; +# endif +# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T) +typedef unsigned long uintptr_t; +# endif +# else +# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T) +typedef int64_t intptr_t; +# endif +# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T) +typedef uint64_t uintptr_t; +# endif +# endif +# endif /* !_MSC_VER */ + +#endif /* no system stdint.h */ + + +/* + * Make sure the [U]INTx_C(c) macros are present. + * For In C++ source the system stdint.h may have skipped these if it was + * included before we managed to define __STDC_CONSTANT_MACROS. (Kludge alert!) + */ +#if !defined(INT8_C) \ + || !defined(INT16_C) \ + || !defined(INT32_C) \ + || !defined(INT64_C) \ + || !defined(INTMAX_C) \ + || !defined(UINT8_C) \ + || !defined(UINT16_C) \ + || !defined(UINT32_C) \ + || !defined(UINT64_C) \ + || !defined(UINTMAX_C) +# define INT8_C(Value) (Value) +# define INT16_C(Value) (Value) +# define INT32_C(Value) (Value) +# define INT64_C(Value) (Value ## LL) +# define UINT8_C(Value) (Value) +# define UINT16_C(Value) (Value) +# define UINT32_C(Value) (Value ## U) +# define UINT64_C(Value) (Value ## ULL) +# define INTMAX_C(Value) INT64_C(Value) +# define UINTMAX_C(Value) UINT64_C(Value) +#endif + + +/* + * Make sure the INTx_MIN and [U]INTx_MAX macros are present. + * For In C++ source the system stdint.h may have skipped these if it was + * included before we managed to define __STDC_LIMIT_MACROS. (Kludge alert!) + */ +#if !defined(INT8_MIN) \ + || !defined(INT16_MIN) \ + || !defined(INT32_MIN) \ + || !defined(INT64_MIN) \ + || !defined(INT8_MAX) \ + || !defined(INT16_MAX) \ + || !defined(INT32_MAX) \ + || !defined(INT64_MAX) \ + || !defined(UINT8_MAX) \ + || !defined(UINT16_MAX) \ + || !defined(UINT32_MAX) \ + || !defined(UINT64_MAX) +# define INT8_MIN (INT8_C(-0x7f) - 1) +# define INT16_MIN (INT16_C(-0x7fff) - 1) +# define INT32_MIN (INT32_C(-0x7fffffff) - 1) +# define INT64_MIN (INT64_C(-0x7fffffffffffffff) - 1) +# define INT8_MAX INT8_C(0x7f) +# define INT16_MAX INT16_C(0x7fff) +# define INT32_MAX INT32_C(0x7fffffff) +# define INT64_MAX INT64_C(0x7fffffffffffffff) +# define UINT8_MAX UINT8_C(0xff) +# define UINT16_MAX UINT16_C(0xffff) +# define UINT32_MAX UINT32_C(0xffffffff) +# define UINT64_MAX UINT64_C(0xffffffffffffffff) + +# define INTMAX_MIN INT64_MIN +# define INTMAX_MAX INT64_MAX +# define UINTMAX_MAX UINT64_MAX +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/string.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/string.h @@ -0,0 +1,3021 @@ +/** @file + * IPRT - String Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_string_h +#define ___iprt_string_h + +#include +#include +#include +#include +#include /* for VINF_SUCCESS */ +#if defined(RT_OS_LINUX) && defined(__KERNEL__) + RT_C_DECLS_BEGIN +# define new newhack /* string.h: strreplace */ +# include +# undef new + RT_C_DECLS_END + +#elif defined(IN_XF86_MODULE) && !defined(NO_ANSIC) + RT_C_DECLS_BEGIN +# include "xf86_ansic.h" + RT_C_DECLS_END + +#elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + RT_C_DECLS_BEGIN + /** @todo + * XXX: Very ugly hack to get things build on recent FreeBSD builds. They have + * memchr now and we need to include param.h to get __FreeBSD_version and make + * memchr available based on the version below or we can't compile the kernel + * module on older versions anymore. + * + * But including param.h here opens Pandora's box because we clash with a few + * defines namely PVM and PAGE_SIZE. We can safely undefine PVM here but not + * PAGE_SIZE because this results in build errors sooner or later. Luckily this + * define is in a header included by param.h (machine/param.h). We define the + * guards here to prevent inclusion of it if PAGE_SIZE was defined already. + * + * @todo aeichner: Search for an elegant solution and cleanup this mess ASAP! + */ +# ifdef PAGE_SIZE +# define _AMD64_INCLUDE_PARAM_H_ +# define _I386_INCLUDE_PARAM_H_ +# define _MACHINE_PARAM_H_ +# endif +# include /* __FreeBSD_version */ +# undef PVM +# include + /* + * No memmove on versions < 7.2 + * Defining a macro using bcopy here + */ +# define memmove(dst, src, size) bcopy(src, dst, size) + RT_C_DECLS_END + +#elif defined(RT_OS_SOLARIS) && defined(_KERNEL) + /* + * Same case as with FreeBSD kernel: + * The string.h stuff clashes with sys/system.h + * ffs = find first set bit. + */ +# define ffs ffs_string_h +# include +# undef ffs +# undef strpbrk + +#else +# include +#endif + +/* For the time being: */ +#include +#include + +/* + * Supply prototypes for standard string functions provided by + * IPRT instead of the operating environment. + */ +#if defined(RT_OS_DARWIN) && defined(KERNEL) +RT_C_DECLS_BEGIN +void *memchr(const void *pv, int ch, size_t cb); +char *strpbrk(const char *pszStr, const char *pszChars); +RT_C_DECLS_END +#endif + +#if defined(RT_OS_FREEBSD) && defined(_KERNEL) +RT_C_DECLS_BEGIN +#if __FreeBSD_version < 900000 +void *memchr(const void *pv, int ch, size_t cb); +#endif +char *strpbrk(const char *pszStr, const char *pszChars); +RT_C_DECLS_END +#endif + +#if !defined(RT_OS_LINUX) || !defined(_GNU_SOURCE) +RT_C_DECLS_BEGIN +void *memrchr(const char *pv, int ch, size_t cb); +RT_C_DECLS_END +#endif + + +/** @def RT_USE_RTC_3629 + * When defined the UTF-8 range will stop at 0x10ffff. If not defined, the + * range stops at 0x7fffffff. + * @remarks Must be defined both when building and using the IPRT. */ +#ifdef DOXYGEN_RUNNING +# define RT_USE_RTC_3629 +#endif + + +/** + * Byte zero the specified object. + * + * This will use sizeof(Obj) to figure the size and will call memset, bzero + * or some compiler intrinsic to perform the actual zeroing. + * + * @param Obj The object to zero. Make sure to dereference pointers. + * + * @remarks Because the macro may use memset it has been placed in string.h + * instead of cdefs.h to avoid build issues because someone forgot + * to include this header. + * + * @ingroup grp_rt_cdefs + */ +#define RT_ZERO(Obj) RT_BZERO(&(Obj), sizeof(Obj)) + +/** + * Byte zero the specified memory area. + * + * This will call memset, bzero or some compiler intrinsic to clear the + * specified bytes of memory. + * + * @param pv Pointer to the memory. + * @param cb The number of bytes to clear. Please, don't pass 0. + * + * @remarks Because the macro may use memset it has been placed in string.h + * instead of cdefs.h to avoid build issues because someone forgot + * to include this header. + * + * @ingroup grp_rt_cdefs + */ +#define RT_BZERO(pv, cb) do { memset((pv), 0, cb); } while (0) + + + +/** @defgroup grp_rt_str RTStr - String Manipulation + * Mostly UTF-8 related helpers where the standard string functions won't do. + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + + +/** + * The maximum string length. + */ +#define RTSTR_MAX (~(size_t)0) + + +/** @def RTSTR_TAG + * The default allocation tag used by the RTStr allocation APIs. + * + * When not defined before the inclusion of iprt/string.h, this will default to + * the pointer to the current file name. The string API will make of use of + * this as pointer to a volatile but read-only string. + */ +#if !defined(RTSTR_TAG) || defined(DOXYGEN_RUNNING) +# define RTSTR_TAG (__FILE__) +#endif + + +#ifdef IN_RING3 + +/** + * Allocates tmp buffer with default tag, translates pszString from UTF8 to + * current codepage. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated native CP string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to convert. + */ +#define RTStrUtf8ToCurrentCP(ppszString, pszString) RTStrUtf8ToCurrentCPTag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates tmp buffer with custom tag, translates pszString from UTF8 to + * current codepage. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated native CP string. + * The returned pointer must be freed using + * RTStrFree()., const char *pszTag + * @param pszString UTF-8 string to convert. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR3DECL(int) RTStrUtf8ToCurrentCPTag(char **ppszString, const char *pszString, const char *pszTag); + +/** + * Allocates tmp buffer, translates pszString from current codepage to UTF-8. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString Native string to convert. + */ +#define RTStrCurrentCPToUtf8(ppszString, pszString) RTStrCurrentCPToUtf8Tag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates tmp buffer, translates pszString from current codepage to UTF-8. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString Native string to convert. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR3DECL(int) RTStrCurrentCPToUtf8Tag(char **ppszString, const char *pszString, const char *pszTag); + +#endif /* IN_RING3 */ + +/** + * Free string allocated by any of the non-UCS-2 string functions. + * + * @returns iprt status code. + * @param pszString Pointer to buffer with string to free. + * NULL is accepted. + */ +RTDECL(void) RTStrFree(char *pszString); + +/** + * Allocates a new copy of the given UTF-8 string (default tag). + * + * @returns Pointer to the allocated UTF-8 string. + * @param pszString UTF-8 string to duplicate. + */ +#define RTStrDup(pszString) RTStrDupTag((pszString), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 string (custom tag). + * + * @returns Pointer to the allocated UTF-8 string. + * @param pszString UTF-8 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrDupTag(const char *pszString, const char *pszTag); + +/** + * Allocates a new copy of the given UTF-8 string (default tag). + * + * @returns iprt status code. + * @param ppszString Receives pointer of the allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to duplicate. + */ +#define RTStrDupEx(ppszString, pszString) RTStrDupExTag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 string (custom tag). + * + * @returns iprt status code. + * @param ppszString Receives pointer of the allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrDupExTag(char **ppszString, const char *pszString, const char *pszTag); + +/** + * Allocates a new copy of the given UTF-8 substring (default tag). + * + * @returns Pointer to the allocated UTF-8 substring. + * @param pszString UTF-8 string to duplicate. + * @param cchMax The max number of chars to duplicate, not counting + * the terminator. + */ +#define RTStrDupN(pszString, cchMax) RTStrDupNTag((pszString), (cchMax), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 substring (custom tag). + * + * @returns Pointer to the allocated UTF-8 substring. + * @param pszString UTF-8 string to duplicate. + * @param cchMax The max number of chars to duplicate, not counting + * the terminator. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrDupNTag(const char *pszString, size_t cchMax, const char *pszTag); + +/** + * Appends a string onto an existing IPRT allocated string (default tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. NULL and empty strings + * are quietly ignored. + */ +#define RTStrAAppend(ppsz, pszAppend) RTStrAAppendTag((ppsz), (pszAppend), RTSTR_TAG) + +/** + * Appends a string onto an existing IPRT allocated string (custom tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. NULL and empty strings + * are quietly ignored. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendTag(char **ppsz, const char *pszAppend, const char *pszTag); + +/** + * Appends N bytes from a strings onto an existing IPRT allocated string + * (default tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. Can be NULL if cchAppend + * is NULL. + * @param cchAppend The number of chars (not code points) to append + * from pszAppend. Must not be more than + * @a pszAppend contains, except for the special + * value RTSTR_MAX that can be used to indicate all + * of @a pszAppend without having to strlen it. + */ +#define RTStrAAppendN(ppsz, pszAppend, cchAppend) RTStrAAppendNTag((ppsz), (pszAppend), (cchAppend), RTSTR_TAG) + +/** + * Appends N bytes from a strings onto an existing IPRT allocated string (custom + * tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. Can be NULL if cchAppend + * is NULL. + * @param cchAppend The number of chars (not code points) to append + * from pszAppend. Must not be more than + * @a pszAppend contains, except for the special + * value RTSTR_MAX that can be used to indicate all + * of @a pszAppend without having to strlen it. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendNTag(char **ppsz, const char *pszAppend, size_t cchAppend, const char *pszTag); + +/** + * Appends one or more strings onto an existing IPRT allocated string. + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +#define RTStrAAppendExNV(ppsz, cPairs, va) RTStrAAppendExNVTag((ppsz), (cPairs), (va), RTSTR_TAG) + +/** + * Appends one or more strings onto an existing IPRT allocated string. + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendExNVTag(char **ppsz, size_t cPairs, va_list va, const char *pszTag); + +/** + * Appends one or more strings onto an existing IPRT allocated string + * (untagged). + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +DECLINLINE(int) RTStrAAppendExN(char **ppsz, size_t cPairs, ...) +{ + int rc; + va_list va; + va_start(va, cPairs); + rc = RTStrAAppendExNVTag(ppsz, cPairs, va, RTSTR_TAG); + va_end(va); + return rc; +} + +/** + * Appends one or more strings onto an existing IPRT allocated string (custom + * tag). + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszTag Allocation tag used for statistics and such. + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +DECLINLINE(int) RTStrAAppendExNTag(char **ppsz, const char *pszTag, size_t cPairs, ...) +{ + int rc; + va_list va; + va_start(va, cPairs); + rc = RTStrAAppendExNVTag(ppsz, cPairs, va, pszTag); + va_end(va); + return rc; +} + +/** + * Truncates an IPRT allocated string (default tag). + * + * @retval VINF_SUCCESS. + * @retval VERR_OUT_OF_RANGE if cchNew is too long. Nothing is done. + * + * @param ppsz Pointer to the string pointer. The string + * pointer can be NULL if @a cchNew is 0, no change + * is made then. If we actually reallocate the + * string, the string pointer might be changed by + * this call. (In/Out) + * @param cchNew The new string length (excluding the + * terminator). The string must be at least this + * long or we'll return VERR_OUT_OF_RANGE and + * assert on you. + */ +#define RTStrATruncate(ppsz, cchNew) RTStrATruncateTag((ppsz), (cchNew), RTSTR_TAG) + +/** + * Truncates an IPRT allocated string. + * + * @retval VINF_SUCCESS. + * @retval VERR_OUT_OF_RANGE if cchNew is too long. Nothing is done. + * + * @param ppsz Pointer to the string pointer. The string + * pointer can be NULL if @a cchNew is 0, no change + * is made then. If we actually reallocate the + * string, the string pointer might be changed by + * this call. (In/Out) + * @param cchNew The new string length (excluding the + * terminator). The string must be at least this + * long or we'll return VERR_OUT_OF_RANGE and + * assert on you. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrATruncateTag(char **ppsz, size_t cchNew, const char *pszTag); + +/** + * Allocates memory for string storage (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated string. The first byte is always set + * to the string terminator char, the contents of the remainder of the + * memory is undefined. The string must be freed by calling RTStrFree. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_STR_MEMORY and not VERR_NO_MEMORY. Also consider + * RTStrAllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + */ +#define RTStrAlloc(cb) RTStrAllocTag((cb), RTSTR_TAG) + +/** + * Allocates memory for string storage (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated string. The first byte is always set + * to the string terminator char, the contents of the remainder of the + * memory is undefined. The string must be freed by calling RTStrFree. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_STR_MEMORY and not VERR_NO_MEMORY. Also consider + * RTStrAllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrAllocTag(size_t cb, const char *pszTag); + +/** + * Allocates memory for string storage, with status code (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY + * + * @param ppsz Where to return the allocated string. This will + * be set to NULL on failure. On success, the + * returned memory will always start with a + * terminator char so that it is considered a valid + * C string, the contents of rest of the memory is + * undefined. + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + */ +#define RTStrAllocEx(ppsz, cb) RTStrAllocExTag((ppsz), (cb), RTSTR_TAG) + +/** + * Allocates memory for string storage, with status code (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY + * + * @param ppsz Where to return the allocated string. This will + * be set to NULL on failure. On success, the + * returned memory will always start with a + * terminator char so that it is considered a valid + * C string, the contents of rest of the memory is + * undefined. + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAllocExTag(char **ppsz, size_t cb, const char *pszTag); + +/** + * Reallocates the specified string (default tag). + * + * You should normally not have use this function, except perhaps to truncate a + * really long string you've got from some IPRT string API, but then you should + * use RTStrATruncate. + * + * @returns VINF_SUCCESS. + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string variable containing the + * input and output string. + * + * When not freeing the string, the result will + * always have the last byte set to the terminator + * character so that when used for string + * truncation the result will be a valid C string + * (your job to keep it a valid UTF-8 string). + * + * When the input string is NULL and we're supposed + * to reallocate, the returned string will also + * have the first byte set to the terminator char + * so it will be a valid C string. + * + * @param cbNew When @a cbNew is zero, we'll behave like + * RTStrFree and @a *ppsz will be set to NULL. + * + * When not zero, this will be the new size of the + * memory backing the string, i.e. it includes the + * terminator char. + */ +#define RTStrRealloc(ppsz, cbNew) RTStrReallocTag((ppsz), (cbNew), RTSTR_TAG) + +/** + * Reallocates the specified string (custom tag). + * + * You should normally not have use this function, except perhaps to truncate a + * really long string you've got from some IPRT string API, but then you should + * use RTStrATruncate. + * + * @returns VINF_SUCCESS. + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string variable containing the + * input and output string. + * + * When not freeing the string, the result will + * always have the last byte set to the terminator + * character so that when used for string + * truncation the result will be a valid C string + * (your job to keep it a valid UTF-8 string). + * + * When the input string is NULL and we're supposed + * to reallocate, the returned string will also + * have the first byte set to the terminator char + * so it will be a valid C string. + * + * @param cbNew When @a cbNew is zero, we'll behave like + * RTStrFree and @a *ppsz will be set to NULL. + * + * When not zero, this will be the new size of the + * memory backing the string, i.e. it includes the + * terminator char. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrReallocTag(char **ppsz, size_t cbNew, const char *pszTag); + +/** + * Validates the UTF-8 encoding of the string. + * + * @returns iprt status code. + * @param psz The string. + */ +RTDECL(int) RTStrValidateEncoding(const char *psz); + +/** @name Flags for RTStrValidateEncodingEx and RTUtf16ValidateEncodingEx + * @{ + */ +/** Check that the string is zero terminated within the given size. + * VERR_BUFFER_OVERFLOW will be returned if the check fails. */ +#define RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED RT_BIT_32(0) +/** Check that the string is exactly the given length. + * If it terminates early, VERR_BUFFER_UNDERFLOW will be returned. When used + * together with RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED, the given length must + * include the terminator or VERR_BUFFER_OVERFLOW will be returned. */ +#define RTSTR_VALIDATE_ENCODING_EXACT_LENGTH RT_BIT_32(1) +/** @} */ + +/** + * Validates the UTF-8 encoding of the string. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length (/ size). Use RTSTR_MAX to + * process the entire string. + * @param fFlags Combination of RTSTR_VALIDATE_ENCODING_XXX flags. + */ +RTDECL(int) RTStrValidateEncodingEx(const char *psz, size_t cch, uint32_t fFlags); + +/** + * Checks if the UTF-8 encoding is valid. + * + * @returns true / false. + * @param psz The string. + */ +RTDECL(bool) RTStrIsValidEncoding(const char *psz); + +/** + * Purge all bad UTF-8 encoding in the string, replacing it with '?'. + * + * @returns The number of bad characters (0 if nothing was done). + * @param psz The string to purge. + */ +RTDECL(size_t) RTStrPurgeEncoding(char *psz); + +/** + * Sanitise a (valid) UTF-8 string by replacing all characters outside a white + * list in-place by an ASCII replacement character. Multi-byte characters will + * be replaced byte by byte. + * + * @returns The number of code points replaced, or a negative value if the + * string is not correctly encoded. In this last case the string + * may be partially processed. + * @param psz The string to sanitise. + * @param puszValidSet A zero-terminated array of pairs of Unicode points. + * Each pair is the start and end point of a range, + * and the union of these ranges forms the white list. + * @param chReplacement The ASCII replacement character. + */ +RTDECL(ssize_t) RTStrPurgeComplementSet(char *psz, PCRTUNICP puszValidSet, char chReplacement); + +/** + * Gets the number of code points the string is made up of, excluding + * the terminator. + * + * + * @returns Number of code points (RTUNICP). + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrUniLen(const char *psz); + +/** + * Gets the number of code points the string is made up of, excluding + * the terminator. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the entire string. + * @param pcuc Where to store the code point count. + * This is undefined on failure. + */ +RTDECL(int) RTStrUniLenEx(const char *psz, size_t cch, size_t *pcuc); + +/** + * Translate a UTF-8 string into an unicode string (i.e. RTUNICPs), allocating the string buffer. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppUniString Receives pointer to the allocated unicode string. + * The returned string must be freed using RTUniFree(). + */ +RTDECL(int) RTStrToUni(const char *pszString, PRTUNICP *ppUniString); + +/** + * Translates pszString from UTF-8 to an array of code points, allocating the result + * array if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppaCps If cCps is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppusz is NULL or cCps is zero a buffer of at least cCps items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cCps The number of code points in the unicode string. This includes the terminator. + * @param pcCps Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +RTDECL(int) RTStrToUniEx(const char *pszString, size_t cchString, PRTUNICP *ppaCps, size_t cCps, size_t *pcCps); + +/** + * Calculates the length of the string in RTUTF16 items. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTStrToUtf16Ex of the correct size. For most + * other purposes RTStrCalcUtf16LenEx() should be used. + * + * @returns Number of RTUTF16 items. + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrCalcUtf16Len(const char *psz); + +/** + * Calculates the length of the string in RTUTF16 items. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the entire string. + * @param pcwc Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTStrCalcUtf16LenEx(const char *psz, size_t cch, size_t *pcwc); + +/** + * Translate a UTF-8 string into a UTF-16 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. + * The returned string must be freed using RTUtf16Free(). + */ +#define RTStrToUtf16(pszString, ppwszString) RTStrToUtf16Tag((pszString), (ppwszString), RTSTR_TAG) + +/** + * Translate a UTF-8 string into a UTF-16 allocating the result buffer (custom + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. + * The returned string must be freed using RTUtf16Free(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToUtf16Tag(const char *pszString, PRTUTF16 *ppwszString, const char *pszTag); + +/** + * Translates pszString from UTF-8 to UTF-16, allocating the result buffer if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at least cwc items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTStrToUtf16Ex(pszString, cchString, ppwsz, cwc, pcwc) \ + RTStrToUtf16ExTag((pszString), (cchString), (ppwsz), (cwc), (pcwc), RTSTR_TAG) + +/** + * Translates pszString from UTF-8 to UTF-16, allocating the result buffer if + * requested (custom tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at least cwc items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToUtf16ExTag(const char *pszString, size_t cchString, PRTUTF16 *ppwsz, size_t cwc, size_t *pcwc, const char *pszTag); + + +/** + * Calculates the length of the string in Latin-1 characters. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings as well as string with codepoints outside the latin-1 range will be + * rejected. The primary purpose of this function is to help allocate buffers + * for RTStrToLatin1Ex of the correct size. For most other purposes + * RTStrCalcLatin1LenEx() should be used. + * + * @returns Number of Latin-1 characters. + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrCalcLatin1Len(const char *psz); + +/** + * Calculates the length of the string in Latin-1 characters. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings as well as string with codepoints outside the latin-1 range will be + * rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcch Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTStrCalcLatin1LenEx(const char *psz, size_t cch, size_t *pcch); + +/** + * Translate a UTF-8 string into a Latin-1 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppszString Receives pointer to the allocated Latin-1 string. + * The returned string must be freed using RTStrFree(). + */ +#define RTStrToLatin1(pszString, ppszString) RTStrToLatin1Tag((pszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-8 string into a Latin-1 allocating the result buffer (custom + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppszString Receives pointer to the allocated Latin-1 string. + * The returned string must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToLatin1Tag(const char *pszString, char **ppszString, const char *pszTag); + +/** + * Translates pszString from UTF-8 to Latin-1, allocating the result buffer if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stop when it reaches cchString or + * the string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch items will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in bytes. This includes the + * terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTStrToLatin1Ex(pszString, cchString, ppsz, cch, pcch) \ + RTStrToLatin1ExTag((pszString), (cchString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates pszString from UTF-8 to Latin1, allocating the result buffer if + * requested (custom tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stop when it reaches cchString or + * the string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch items will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in bytes. This includes the + * terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToLatin1ExTag(const char *pszString, size_t cchString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param psz The string. + */ +RTDECL(RTUNICP) RTStrGetCpInternal(const char *psz); + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code + * @returns VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @param ppsz The string cursor. + * This is advanced one character forward on failure. + * @param pCp Where to store the unicode code point. + * Stores RTUNICP_INVALID if the encoding is invalid. + */ +RTDECL(int) RTStrGetCpExInternal(const char **ppsz, PRTUNICP pCp); + +/** + * Get the unicode code point at the given string position for a string of a + * given length. + * + * @returns iprt status code + * @retval VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppsz The string. + * @param pcch Pointer to the length of the string. This will be + * decremented by the size of the code point. + * @param pCp Where to store the unicode code point. + * Stores RTUNICP_INVALID if the encoding is invalid. + */ +RTDECL(int) RTStrGetCpNExInternal(const char **ppsz, size_t *pcch, PRTUNICP pCp); + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param psz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-8 range. + * + * @remark This is a worker function for RTStrPutCp(). + * + */ +RTDECL(char *) RTStrPutCpInternal(char *psz, RTUNICP CodePoint); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param psz The string. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpInternal(). + */ +DECLINLINE(RTUNICP) RTStrGetCp(const char *psz) +{ + const unsigned char uch = *(const unsigned char *)psz; + if (!(uch & RT_BIT(7))) + return uch; + return RTStrGetCpInternal(psz); +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * This is advanced one character forward on failure. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpExInternal(). + */ +DECLINLINE(int) RTStrGetCpEx(const char **ppsz, PRTUNICP pCp) +{ + const unsigned char uch = **(const unsigned char **)ppsz; + if (!(uch & RT_BIT(7))) + { + (*ppsz)++; + *pCp = uch; + return VINF_SUCCESS; + } + return RTStrGetCpExInternal(ppsz, pCp); +} + +/** + * Get the unicode code point at the given string position for a string of a + * given maximum length. + * + * @returns iprt status code. + * @retval VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pcch Pointer to the maximum string length. This will be + * decremented by the size of the code point found. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpNExInternal(). + */ +DECLINLINE(int) RTStrGetCpNEx(const char **ppsz, size_t *pcch, PRTUNICP pCp) +{ + if (RT_LIKELY(*pcch != 0)) + { + const unsigned char uch = **(const unsigned char **)ppsz; + if (!(uch & RT_BIT(7))) + { + (*ppsz)++; + (*pcch)--; + *pCp = uch; + return VINF_SUCCESS; + } + } + return RTStrGetCpNExInternal(ppsz, pcch, pCp); +} + +/** + * Get the UTF-8 size in characters of a given Unicode code point. + * + * The code point is expected to be a valid Unicode one, but not necessarily in + * the range supported by UTF-8. + * + * @returns The number of chars (bytes) required to encode the code point, or + * zero if there is no UTF-8 encoding. + * @param CodePoint The unicode code point. + */ +DECLINLINE(size_t) RTStrCpSize(RTUNICP CodePoint) +{ + if (CodePoint < 0x00000080) + return 1; + if (CodePoint < 0x00000800) + return 2; + if (CodePoint < 0x00010000) + return 3; +#ifdef RT_USE_RTC_3629 + if (CodePoint < 0x00011000) + return 4; +#else + if (CodePoint < 0x00200000) + return 4; + if (CodePoint < 0x04000000) + return 5; + if (CodePoint < 0x7fffffff) + return 6; +#endif + return 0; +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param psz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-8 range. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrPutCpInternal(). + */ +DECLINLINE(char *) RTStrPutCp(char *psz, RTUNICP CodePoint) +{ + if (CodePoint < 0x80) + { + *psz++ = (unsigned char)CodePoint; + return psz; + } + return RTStrPutCpInternal(psz, CodePoint); +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param psz Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(char *) RTStrNextCp(const char *psz) +{ + RTUNICP Cp; + RTStrGetCpEx(&psz, &Cp); + return (char *)psz; +} + +/** + * Skips back to the previous code point. + * + * @returns Pointer to the char before the current code point. + * @returns pszStart on failure. + * @param pszStart Pointer to the start of the string. + * @param psz Pointer to the current code point. + */ +RTDECL(char *) RTStrPrevCp(const char *pszStart, const char *psz); + + +/** @page pg_rt_str_format The IPRT Format Strings + * + * IPRT implements most of the commonly used format types and flags with the + * exception of floating point which is completely missing. In addition IPRT + * provides a number of IPRT specific format types for the IPRT typedefs and + * other useful things. Note that several of these extensions are similar to + * \%p and doesn't care much if you try add formating flags/width/precision. + * + * + * Group 0a, The commonly used format types: + * - \%s - Takes a pointer to a zero terminated string (UTF-8) and + * prints it with the optionally adjustment (width, -) and + * length restriction (precision). + * - \%ls - Same as \%s except that the input is UTF-16 (output UTF-8). + * - \%Ls - Same as \%s except that the input is UCS-32 (output UTF-8). + * - \%S - Same as \%s, used to convert to current codeset but this is + * now done by the streams code. Deprecated, use \%s. + * - \%lS - Ditto. Deprecated, use \%ls. + * - \%LS - Ditto. Deprecated, use \%Ls. + * - \%c - Takes a char and prints it. + * - \%d - Takes a signed integer and prints it as decimal. Thousand + * separator (\'), zero padding (0), adjustment (-+), width, + * precision + * - \%i - Same as \%d. + * - \%u - Takes an unsigned integer and prints it as decimal. Thousand + * separator (\'), zero padding (0), adjustment (-+), width, + * precision + * - \%x - Takes an unsigned integer and prints it as lowercased + * hexadecimal. The special hash (\#) flag causes a '0x' + * prefixed to be printed. Zero padding (0), adjustment (-+), + * width, precision. + * - \%X - Same as \%x except that it is uppercased. + * - \%o - Takes an unsigned (?) integer and prints it as octal. Zero + * padding (0), adjustment (-+), width, precision. + * - \%p - Takes a pointer (void technically) and prints it. Zero + * padding (0), adjustment (-+), width, precision. + * + * The \%d, \%i, \%u, \%x, \%X and \%o format types support the following + * argument type specifiers: + * - \%ll - long long (uint64_t). + * - \%L - long long (uint64_t). + * - \%l - long (uint32_t, uint64_t) + * - \%h - short (int16_t). + * - \%hh - char (int8_t). + * - \%H - char (int8_t). + * - \%z - size_t. + * - \%j - intmax_t (int64_t). + * - \%t - ptrdiff_t. + * The type in parentheses is typical sizes, however when printing those types + * you are better off using the special group 2 format types below (\%RX32 and + * such). + * + * + * Group 0b, IPRT format tricks: + * - %M - Replaces the format string, takes a string pointer. + * - %N - Nested formatting, takes a pointer to a format string + * followed by the pointer to a va_list variable. The va_list + * variable will not be modified and the caller must do va_end() + * on it. Make sure the va_list variable is NOT in a parameter + * list or some gcc versions/targets may get it all wrong. + * + * + * Group 1, the basic runtime typedefs (excluding those which obviously are + * pointer): + * - \%RTbool - Takes a bool value and prints 'true', 'false', or '!%d!'. + * - \%RTfile - Takes a #RTFILE value. + * - \%RTfmode - Takes a #RTFMODE value. + * - \%RTfoff - Takes a #RTFOFF value. + * - \%RTfp16 - Takes a #RTFAR16 value. + * - \%RTfp32 - Takes a #RTFAR32 value. + * - \%RTfp64 - Takes a #RTFAR64 value. + * - \%RTgid - Takes a #RTGID value. + * - \%RTino - Takes a #RTINODE value. + * - \%RTint - Takes a #RTINT value. + * - \%RTiop - Takes a #RTIOPORT value. + * - \%RTldrm - Takes a #RTLDRMOD value. + * - \%RTmac - Takes a #PCRTMAC pointer. + * - \%RTnaddr - Takes a #PCRTNETADDR value. + * - \%RTnaipv4 - Takes a #RTNETADDRIPV4 value. + * - \%RTnaipv6 - Takes a #PCRTNETADDRIPV6 value. + * - \%RTnthrd - Takes a #RTNATIVETHREAD value. + * - \%RTnthrd - Takes a #RTNATIVETHREAD value. + * - \%RTproc - Takes a #RTPROCESS value. + * - \%RTptr - Takes a #RTINTPTR or #RTUINTPTR value (but not void *). + * - \%RTreg - Takes a #RTCCUINTREG value. + * - \%RTsel - Takes a #RTSEL value. + * - \%RTsem - Takes a #RTSEMEVENT, #RTSEMEVENTMULTI, #RTSEMMUTEX, #RTSEMFASTMUTEX, or #RTSEMRW value. + * - \%RTsock - Takes a #RTSOCKET value. + * - \%RTthrd - Takes a #RTTHREAD value. + * - \%RTuid - Takes a #RTUID value. + * - \%RTuint - Takes a #RTUINT value. + * - \%RTunicp - Takes a #RTUNICP value. + * - \%RTutf16 - Takes a #RTUTF16 value. + * - \%RTuuid - Takes a #PCRTUUID and will print the UUID as a string. + * - \%RTxuint - Takes a #RTUINT or #RTINT value, formatting it as hex. + * - \%RGi - Takes a #RTGCINT value. + * - \%RGp - Takes a #RTGCPHYS value. + * - \%RGr - Takes a #RTGCUINTREG value. + * - \%RGu - Takes a #RTGCUINT value. + * - \%RGv - Takes a #RTGCPTR, #RTGCINTPTR or #RTGCUINTPTR value. + * - \%RGx - Takes a #RTGCUINT or #RTGCINT value, formatting it as hex. + * - \%RHi - Takes a #RTHCINT value. + * - \%RHp - Takes a #RTHCPHYS value. + * - \%RHr - Takes a #RTHCUINTREG value. + * - \%RHu - Takes a #RTHCUINT value. + * - \%RHv - Takes a #RTHCPTR, #RTHCINTPTR or #RTHCUINTPTR value. + * - \%RHx - Takes a #RTHCUINT or #RTHCINT value, formatting it as hex. + * - \%RRv - Takes a #RTRCPTR, #RTRCINTPTR or #RTRCUINTPTR value. + * - \%RCi - Takes a #RTINT value. + * - \%RCp - Takes a #RTCCPHYS value. + * - \%RCr - Takes a #RTCCUINTREG value. + * - \%RCu - Takes a #RTUINT value. + * - \%RCv - Takes a #uintptr_t, #intptr_t, void * value. + * - \%RCx - Takes a #RTUINT or #RTINT value, formatting it as hex. + * + * + * Group 2, the generic integer types which are prefered over relying on what + * bit-count a 'long', 'short', or 'long long' has on a platform. This are + * highly prefered for the [u]intXX_t kind of types: + * - \%RI[8|16|32|64] - Signed integer value of the specifed bit count. + * - \%RU[8|16|32|64] - Unsigned integer value of the specifed bit count. + * - \%RX[8|16|32|64] - Hexadecimal integer value of the specifed bit count. + * + * + * Group 3, hex dumpers and other complex stuff which requires more than simple + * formatting: + * - \%Rhxd - Takes a pointer to the memory which is to be dumped in typical + * hex format. Use the precision to specify the length, and the width to + * set the number of bytes per line. Default width and precision is 16. + * - \%Rhxs - Takes a pointer to the memory to be displayed as a hex string, + * i.e. a series of space separated bytes formatted as two digit hex value. + * Use the precision to specify the length. Default length is 16 bytes. + * The width, if specified, is ignored. + * - \%Rrc - Takes an integer iprt status code as argument. Will insert the + * status code define corresponding to the iprt status code. + * - \%Rrs - Takes an integer iprt status code as argument. Will insert the + * short description of the specified status code. + * - \%Rrf - Takes an integer iprt status code as argument. Will insert the + * full description of the specified status code. + * - \%Rra - Takes an integer iprt status code as argument. Will insert the + * status code define + full description. + * - \%Rwc - Takes a long Windows error code as argument. Will insert the status + * code define corresponding to the Windows error code. + * - \%Rwf - Takes a long Windows error code as argument. Will insert the + * full description of the specified status code. + * - \%Rwa - Takes a long Windows error code as argument. Will insert the + * error code define + full description. + * + * - \%Rhrc - Takes a COM/XPCOM status code as argument. Will insert the status + * code define corresponding to the Windows error code. + * - \%Rhrf - Takes a COM/XPCOM status code as argument. Will insert the + * full description of the specified status code. + * - \%Rhra - Takes a COM/XPCOM error code as argument. Will insert the + * error code define + full description. + * + * - \%Rfn - Pretty printing of a function or method. It drops the + * return code and parameter list. + * - \%Rbn - Prints the base name. For dropping the path in + * order to save space when printing a path name. + * + * On other platforms, \%Rw? simply prints the argument in a form of 0xXXXXXXXX. + * + * + * Group 4, structure dumpers: + * - \%RDtimespec - Takes a PCRTTIMESPEC. + * + * + * Group 5, XML / HTML escapers: + * - \%RMas - Takes a string pointer (const char *) and outputs + * it as an attribute value with the proper escaping. + * This typically ends up in double quotes. + * + * - \%RMes - Takes a string pointer (const char *) and outputs + * it as an element with the necessary escaping. + * + * Group 6, CPU Architecture Register dumpers: + * - \%RAx86[reg] - Takes a 64-bit register value if the register is + * 64-bit or smaller. Check the code wrt which + * registers are implemented. + * + */ + +#ifndef DECLARED_FNRTSTROUTPUT /* duplicated in iprt/log.h */ +# define DECLARED_FNRTSTROUTPUT +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +typedef DECLCALLBACK(size_t) FNRTSTROUTPUT(void *pvArg, const char *pachChars, size_t cbChars); +/** Pointer to callback function. */ +typedef FNRTSTROUTPUT *PFNRTSTROUTPUT; +#endif + +/** @name Format flag. + * These are used by RTStrFormat extensions and RTStrFormatNumber, mind + * that not all flags makes sense to both of the functions. + * @{ */ +#define RTSTR_F_CAPITAL 0x0001 +#define RTSTR_F_LEFT 0x0002 +#define RTSTR_F_ZEROPAD 0x0004 +#define RTSTR_F_SPECIAL 0x0008 +#define RTSTR_F_VALSIGNED 0x0010 +#define RTSTR_F_PLUS 0x0020 +#define RTSTR_F_BLANK 0x0040 +#define RTSTR_F_WIDTH 0x0080 +#define RTSTR_F_PRECISION 0x0100 +#define RTSTR_F_THOUSAND_SEP 0x0200 + +#define RTSTR_F_BIT_MASK 0xf800 +#define RTSTR_F_8BIT 0x0800 +#define RTSTR_F_16BIT 0x1000 +#define RTSTR_F_32BIT 0x2000 +#define RTSTR_F_64BIT 0x4000 +#define RTSTR_F_128BIT 0x8000 +/** @} */ + +/** @def RTSTR_GET_BIT_FLAG + * Gets the bit flag for the specified type. + */ +#define RTSTR_GET_BIT_FLAG(type) \ + ( sizeof(type) * 8 == 32 ? RTSTR_F_32BIT \ + : sizeof(type) * 8 == 64 ? RTSTR_F_64BIT \ + : sizeof(type) * 8 == 16 ? RTSTR_F_16BIT \ + : sizeof(type) * 8 == 8 ? RTSTR_F_8BIT \ + : sizeof(type) * 8 == 128 ? RTSTR_F_128BIT \ + : 0) + + +/** + * Callback to format non-standard format specifiers. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +typedef DECLCALLBACK(size_t) FNSTRFORMAT(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize); +/** Pointer to a FNSTRFORMAT() function. */ +typedef FNSTRFORMAT *PFNSTRFORMAT; + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string and its length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param InArgs Argument list. + */ +RTDECL(size_t) RTStrFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, + const char *pszFormat, va_list InArgs) RT_IPRT_FORMAT_ATTR(5, 0); + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string and its length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... Argument list. + */ +RTDECL(size_t) RTStrFormat(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, + const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(5, 6); + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the formatted number. + * @param psz Pointer to output string buffer of sufficient size. + * @param u64Value Value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(int) RTStrFormatNumber(char *psz, uint64_t u64Value, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, + unsigned int fFlags); + +/** + * Formats an unsigned 8-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u8Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU8(char *pszBuf, size_t cbBuf, uint8_t u8Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 16-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u16Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU16(char *pszBuf, size_t cbBuf, uint16_t u16Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 32-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u32Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU32(char *pszBuf, size_t cbBuf, uint32_t u32Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 64-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u64Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU64(char *pszBuf, size_t cbBuf, uint64_t u64Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 128-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pu128Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU128(char *pszBuf, size_t cbBuf, PCRTUINT128U pu128Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an 80-bit extended floating point number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pr80Value The value to format. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatR80(char *pszBuf, size_t cbBuf, PCRTFLOAT80U pr80Value, signed int cchWidth, + signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an 80-bit extended floating point number, version 2. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pr80Value The value to format. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatR80u2(char *pszBuf, size_t cbBuf, PCRTFLOAT80U2 pr80Value, signed int cchWidth, + signed int cchPrecision, uint32_t fFlags); + + + +/** + * Callback for formatting a type. + * + * This is registered using the RTStrFormatTypeRegister function and will + * be called during string formatting to handle the specified %R[type]. + * The argument for this format type is assumed to be a pointer and it's + * passed in the @a pvValue argument. + * + * @returns Length of the formatted output. + * @param pfnOutput Output worker. + * @param pvArgOutput Argument to the output worker. + * @param pszType The type name. + * @param pvValue The argument value. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(size_t) FNRTSTRFORMATTYPE(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char *pszType, void const *pvValue, + int cchWidth, int cchPrecision, unsigned fFlags, + void *pvUser); +/** Pointer to a FNRTSTRFORMATTYPE. */ +typedef FNRTSTRFORMATTYPE *PFNRTSTRFORMATTYPE; + + +/** + * Register a format handler for a type. + * + * The format handler is used to handle '%R[type]' format types, where the argument + * in the vector is a pointer value (a bit restrictive, but keeps it simple). + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_ALREADY_EXISTS if the type has already been registered. + * @retval VERR_TOO_MANY_OPEN_FILES if all the type slots has been allocated already. + * + * @param pszType The type name. + * @param pfnHandler The handler address. See FNRTSTRFORMATTYPE for details. + * @param pvUser The user argument to pass to the handler. See RTStrFormatTypeSetUser + * for how to update this later. + */ +RTDECL(int) RTStrFormatTypeRegister(const char *pszType, PFNRTSTRFORMATTYPE pfnHandler, void *pvUser); + +/** + * Deregisters a format type. + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to deregister. + */ +RTDECL(int) RTStrFormatTypeDeregister(const char *pszType); + +/** + * Sets the user argument for a type. + * + * This can be used if a user argument needs relocating in GC. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to update. + * @param pvUser The new user argument value. + */ +RTDECL(int) RTStrFormatTypeSetUser(const char *pszType, void *pvUser); + + +/** + * String printf. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +RTDECL(size_t) RTStrPrintfV(char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(3, 0); + +/** + * String printf. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +RTDECL(size_t) RTStrPrintf(char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(3, 4); + + +/** + * String printf with custom formatting. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pfnFormat Pointer to handler function for the custom formats. + * @param pvArg Argument to the pfnFormat function. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +RTDECL(size_t) RTStrPrintfExV(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, + const char *pszFormat, va_list args) RT_IPRT_FORMAT_ATTR(5, 0); + +/** + * String printf with custom formatting. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pfnFormat Pointer to handler function for the custom formats. + * @param pvArg Argument to the pfnFormat function. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +RTDECL(size_t) RTStrPrintfEx(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, + const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(5, 6); + + +/** + * Allocating string printf (default tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +#define RTStrAPrintfV(ppszBuffer, pszFormat, args) RTStrAPrintfVTag((ppszBuffer), (pszFormat), (args), RTSTR_TAG) + +/** + * Allocating string printf (custom tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAPrintfVTag(char **ppszBuffer, const char *pszFormat, va_list args, const char *pszTag) RT_IPRT_FORMAT_ATTR(2, 0); + +/** + * Allocating string printf. + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(int) RT_IPRT_FORMAT_ATTR(2, 3) RTStrAPrintf(char **ppszBuffer, const char *pszFormat, ...) +{ + int cbRet; + va_list va; + va_start(va, pszFormat); + cbRet = RTStrAPrintfVTag(ppszBuffer, pszFormat, va, RTSTR_TAG); + va_end(va); + return cbRet; +} + +/** + * Allocating string printf (custom tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszTag Allocation tag used for statistics and such. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(int) RT_IPRT_FORMAT_ATTR(3, 4) RTStrAPrintfTag(char **ppszBuffer, const char *pszTag, const char *pszFormat, ...) +{ + int cbRet; + va_list va; + va_start(va, pszFormat); + cbRet = RTStrAPrintfVTag(ppszBuffer, pszFormat, va, pszTag); + va_end(va); + return cbRet; +} + +/** + * Allocating string printf, version 2. + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +#define RTStrAPrintf2V(pszFormat, args) RTStrAPrintf2VTag((pszFormat), (args), RTSTR_TAG) + +/** + * Allocating string printf, version 2. + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrAPrintf2VTag(const char *pszFormat, va_list args, const char *pszTag) RT_IPRT_FORMAT_ATTR(1, 0); + +/** + * Allocating string printf, version 2 (default tag). + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(char *) RT_IPRT_FORMAT_ATTR(1, 2) RTStrAPrintf2(const char *pszFormat, ...) +{ + char *pszRet; + va_list va; + va_start(va, pszFormat); + pszRet = RTStrAPrintf2VTag(pszFormat, va, RTSTR_TAG); + va_end(va); + return pszRet; +} + +/** + * Allocating string printf, version 2 (custom tag). + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszTag Allocation tag used for statistics and such. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(char *) RT_IPRT_FORMAT_ATTR(2, 3) RTStrAPrintf2Tag(const char *pszTag, const char *pszFormat, ...) +{ + char *pszRet; + va_list va; + va_start(va, pszFormat); + pszRet = RTStrAPrintf2VTag(pszFormat, va, pszTag); + va_end(va); + return pszRet; +} + +/** + * Strips blankspaces from both ends of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStrip(char *psz); + +/** + * Strips blankspaces from the start of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStripL(const char *psz); + +/** + * Strips blankspaces from the end of the string. + * + * @returns psz. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStripR(char *psz); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCopyEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String copy with overflow handling and buffer advancing. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCopyP(char **ppszDst, size_t *pcbDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCopyPEx(char **ppszDst, size_t *pcbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCat(char *pszDst, size_t cbDst, const char *pszSrc); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCatEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCatP(char **ppszDst, size_t *pcbDst, const char *pszSrc); + +/** + * String concatenation with overflow handling and buffer advancing. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCatPEx(char **ppszDst, size_t *pcbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * Performs a case sensitive string compare between two UTF-8 strings. + * + * Encoding errors are ignored by the current implementation. So, the only + * difference between this and the CRT strcmp function is the handling of + * NULL arguments. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + */ +RTDECL(int) RTStrCmp(const char *psz1, const char *psz2); + +/** + * Performs a case sensitive string compare between two UTF-8 strings, given + * a maximum string length. + * + * Encoding errors are ignored by the current implementation. So, the only + * difference between this and the CRT strncmp function is the handling of + * NULL arguments. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + * @param cchMax The maximum string length + */ +RTDECL(int) RTStrNCmp(const char *psz1, const char *psz2, size_t cchMax); + +/** + * Performs a case insensitive string compare between two UTF-8 strings. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * The result is the difference between the mismatching codepoints after they + * both have been lower cased. + * + * If the string encoding is invalid the function will assert (strict builds) + * and use RTStrCmp for the remainder of the string. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + */ +RTDECL(int) RTStrICmp(const char *psz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-8 strings, given a + * maximum string length. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * The result is the difference between the mismatching codepoints after they + * both have been lower cased. + * + * If the string encoding is invalid the function will assert (strict builds) + * and use RTStrCmp for the remainder of the string. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + * @param cchMax Maximum string length + */ +RTDECL(int) RTStrNICmp(const char *psz1, const char *psz2, size_t cchMax); + +/** + * Locates a case sensitive substring. + * + * If any of the two strings are NULL, then NULL is returned. If the needle is + * an empty string, then the haystack is returned (i.e. matches anything). + * + * @returns Pointer to the first occurrence of the substring if found, NULL if + * not. + * + * @param pszHaystack The string to search. + * @param pszNeedle The substring to search for. + * + * @remarks The difference between this and strstr is the handling of NULL + * pointers. + */ +RTDECL(char *) RTStrStr(const char *pszHaystack, const char *pszNeedle); + +/** + * Locates a case insensitive substring. + * + * If any of the two strings are NULL, then NULL is returned. If the needle is + * an empty string, then the haystack is returned (i.e. matches anything). + * + * @returns Pointer to the first occurrence of the substring if found, NULL if + * not. + * + * @param pszHaystack The string to search. + * @param pszNeedle The substring to search for. + * + */ +RTDECL(char *) RTStrIStr(const char *pszHaystack, const char *pszNeedle); + +/** + * Converts the string to lower case. + * + * @returns Pointer to the converted string. + * @param psz The string to convert. + */ +RTDECL(char *) RTStrToLower(char *psz); + +/** + * Converts the string to upper case. + * + * @returns Pointer to the converted string. + * @param psz The string to convert. + */ +RTDECL(char *) RTStrToUpper(char *psz); + +/** + * Checks if the string is case foldable, i.e. whether it would change if + * subject to RTStrToLower or RTStrToUpper. + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsCaseFoldable(const char *psz); + +/** + * Checks if the string is upper cased (no lower case chars in it). + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsUpperCased(const char *psz); + +/** + * Checks if the string is lower cased (no upper case chars in it). + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsLowerCased(const char *psz); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * See also RTStrNLenEx. + * + * @returns The string length or cbMax. The returned length does not include + * the zero terminator if it was found. + * + * @param pszString The string. + * @param cchMax The max string length. + */ +RTDECL(size_t) RTStrNLen(const char *pszString, size_t cchMax); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * See also RTStrNLen. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the string has a length less than cchMax. + * @retval VERR_BUFFER_OVERFLOW if the end of the string wasn't found + * before cchMax was reached. + * + * @param pszString The string. + * @param cchMax The max string length. + * @param pcch Where to store the string length excluding the + * terminator. This is set to cchMax if the terminator + * isn't found. + */ +RTDECL(int) RTStrNLenEx(const char *pszString, size_t cchMax, size_t *pcch); + +RT_C_DECLS_END + +/** The maximum size argument of a memchr call. */ +#define RTSTR_MEMCHR_MAX ((~(size_t)0 >> 1) - 15) + +/** + * Find the zero terminator in a string with a limited length. + * + * @returns Pointer to the zero terminator. + * @returns NULL if the zero terminator was not found. + * + * @param pszString The string. + * @param cchMax The max string length. RTSTR_MAX is fine. + */ +#if defined(__cplusplus) && !defined(DOXYGEN_RUNNING) +DECLINLINE(char const *) RTStrEnd(char const *pszString, size_t cchMax) +{ + /* Avoid potential issues with memchr seen in glibc. + * See sysdeps/x86_64/memchr.S in glibc versions older than 2.11 */ + while (cchMax > RTSTR_MEMCHR_MAX) + { + char const *pszRet = (char const *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); + if (RT_LIKELY(pszRet)) + return pszRet; + pszString += RTSTR_MEMCHR_MAX; + cchMax -= RTSTR_MEMCHR_MAX; + } + return (char const *)memchr(pszString, '\0', cchMax); +} + +DECLINLINE(char *) RTStrEnd(char *pszString, size_t cchMax) +#else +DECLINLINE(char *) RTStrEnd(const char *pszString, size_t cchMax) +#endif +{ + /* Avoid potential issues with memchr seen in glibc. + * See sysdeps/x86_64/memchr.S in glibc versions older than 2.11 */ + while (cchMax > RTSTR_MEMCHR_MAX) + { + char *pszRet = (char *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); + if (RT_LIKELY(pszRet)) + return pszRet; + pszString += RTSTR_MEMCHR_MAX; + cchMax -= RTSTR_MEMCHR_MAX; + } + return (char *)memchr(pszString, '\0', cchMax); +} + +RT_C_DECLS_BEGIN + +/** + * Finds the offset at which a simple character first occurs in a string. + * + * @returns The offset of the first occurence or the terminator offset. + * @param pszHaystack The string to search. + * @param chNeedle The character to search for. + */ +DECLINLINE(size_t) RTStrOffCharOrTerm(const char *pszHaystack, char chNeedle) +{ + const char *psz = pszHaystack; + char ch; + while ( (ch = *psz) != chNeedle + && ch != '\0') + psz++; + return psz - pszHaystack; +} + + +/** + * Matches a simple string pattern. + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPattern The pattern. Special chars are '*' and '?', where the + * asterisk matches zero or more characters and question + * mark matches exactly one character. + * @param pszString The string to match against the pattern. + */ +RTDECL(bool) RTStrSimplePatternMatch(const char *pszPattern, const char *pszString); + +/** + * Matches a simple string pattern, neither which needs to be zero terminated. + * + * This is identical to RTStrSimplePatternMatch except that you can optionally + * specify the length of both the pattern and the string. The function will + * stop when it hits a string terminator or either of the lengths. + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPattern The pattern. Special chars are '*' and '?', where the + * asterisk matches zero or more characters and question + * mark matches exactly one character. + * @param cchPattern The pattern length. Pass RTSTR_MAX if you don't know the + * length and wish to stop at the string terminator. + * @param pszString The string to match against the pattern. + * @param cchString The string length. Pass RTSTR_MAX if you don't know the + * length and wish to match up to the string terminator. + */ +RTDECL(bool) RTStrSimplePatternNMatch(const char *pszPattern, size_t cchPattern, + const char *pszString, size_t cchString); + +/** + * Matches multiple patterns against a string. + * + * The patterns are separated by the pipe character (|). + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPatterns The patterns. + * @param cchPatterns The lengths of the patterns to use. Pass RTSTR_MAX to + * stop at the terminator. + * @param pszString The string to match against the pattern. + * @param cchString The string length. Pass RTSTR_MAX stop stop at the + * terminator. + * @param poffPattern Offset into the patterns string of the patttern that + * matched. If no match, this will be set to RTSTR_MAX. + * This is optional, NULL is fine. + */ +RTDECL(bool) RTStrSimplePatternMultiMatch(const char *pszPatterns, size_t cchPatterns, + const char *pszString, size_t cchString, + size_t *poffPattern); + +/** + * Compares two version strings RTStrICmp fashion. + * + * The version string is split up into sections at punctuation, spaces, + * underscores, dashes and plus signs. The sections are then split up into + * numeric and string sub-sections. Finally, the sub-sections are compared + * in a numeric or case insesntivie fashion depending on what they are. + * + * The following strings are considered to be equal: "1.0.0", "1.00.0", "1.0", + * "1". These aren't: "1.0.0r993", "1.0", "1.0r993", "1.0_Beta3", "1.1" + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * + * @param pszVer1 First version string to compare. + * @param pszVer2 Second version string to compare first version with. + */ +RTDECL(int) RTStrVersionCompare(const char *pszVer1, const char *pszVer2); + + +/** @defgroup rt_str_conv String To/From Number Conversions + * @{ */ + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint64_t *pu64); + +/** + * Converts a string representation of a number to a 64-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Full(const char *pszValue, unsigned uBase, uint64_t *pu64); + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 64-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint64_t) RTStrToUInt64(const char *pszValue); + +/** + * Converts a string representation of a number to a 32-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint32_t *pu32); + +/** + * Converts a string representation of a number to a 32-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Full(const char *pszValue, unsigned uBase, uint32_t *pu32); + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 32-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint32_t) RTStrToUInt32(const char *pszValue); + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint16_t *pu16); + +/** + * Converts a string representation of a number to a 16-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Full(const char *pszValue, unsigned uBase, uint16_t *pu16); + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * The base is guessed. + * + * @returns 16-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint16_t) RTStrToUInt16(const char *pszValue); + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint8_t *pu8); + +/** + * Converts a string representation of a number to a 8-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Full(const char *pszValue, unsigned uBase, uint8_t *pu8); + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * The base is guessed. + * + * @returns 8-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint8_t) RTStrToUInt8(const char *pszValue); + +/** + * Converts a string representation of a number to a 64-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, int64_t *pi64); + +/** + * Converts a string representation of a number to a 64-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Full(const char *pszValue, unsigned uBase, int64_t *pi64); + +/** + * Converts a string representation of a number to a 64-bit signed number. + * The base is guessed. + * + * @returns 64-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int64_t) RTStrToInt64(const char *pszValue); + +/** + * Converts a string representation of a number to a 32-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, int32_t *pi32); + +/** + * Converts a string representation of a number to a 32-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Full(const char *pszValue, unsigned uBase, int32_t *pi32); + +/** + * Converts a string representation of a number to a 32-bit signed number. + * The base is guessed. + * + * @returns 32-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int32_t) RTStrToInt32(const char *pszValue); + +/** + * Converts a string representation of a number to a 16-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, int16_t *pi16); + +/** + * Converts a string representation of a number to a 16-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Full(const char *pszValue, unsigned uBase, int16_t *pi16); + +/** + * Converts a string representation of a number to a 16-bit signed number. + * The base is guessed. + * + * @returns 16-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int16_t) RTStrToInt16(const char *pszValue); + +/** + * Converts a string representation of a number to a 8-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, int8_t *pi8); + +/** + * Converts a string representation of a number to a 8-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Full(const char *pszValue, unsigned uBase, int8_t *pi8); + +/** + * Converts a string representation of a number to a 8-bit signed number. + * The base is guessed. + * + * @returns 8-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int8_t) RTStrToInt8(const char *pszValue); + +/** + * Formats a buffer stream as hex bytes. + * + * The default is no separating spaces or line breaks or anything. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the buffer is insufficent to hold the bytes. + * + * @param pszBuf Output string buffer. + * @param cchBuf The size of the output buffer. + * @param pv Pointer to the bytes to stringify. + * @param cb The number of bytes to stringify. + * @param fFlags Combination of RTSTRPRINTHEXBYTES_F_XXX values. + * @sa RTUtf16PrintHexBytes. + */ +RTDECL(int) RTStrPrintHexBytes(char *pszBuf, size_t cchBuf, void const *pv, size_t cb, uint32_t fFlags); +/** @name RTSTRPRINTHEXBYTES_F_XXX - flags for RTStrPrintHexBytes and RTUtf16PritnHexBytes. + * @{ */ +/** Upper case hex digits, the default is lower case. */ +#define RTSTRPRINTHEXBYTES_F_UPPER RT_BIT(0) +/** @} */ + +/** + * Converts a string of hex bytes back into binary data. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the string contains too many hex bytes. + * @retval VERR_BUFFER_UNDERFLOW if there aren't enough hex bytes to fill up + * the output buffer. + * @retval VERR_UNEVEN_INPUT if the input contains a half byte. + * @retval VERR_NO_DIGITS + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * + * @param pszHex The string containing the hex bytes. + * @param pv Output buffer. + * @param cb The size of the output buffer. + * @param fFlags Must be zero, reserved for future use. + */ +RTDECL(int) RTStrConvertHexBytes(char const *pszHex, void *pv, size_t cb, uint32_t fFlags); + +/** @} */ + + +/** @defgroup rt_str_space Unique String Space + * @{ + */ + +/** Pointer to a string name space container node core. */ +typedef struct RTSTRSPACECORE *PRTSTRSPACECORE; +/** Pointer to a pointer to a string name space container node core. */ +typedef PRTSTRSPACECORE *PPRTSTRSPACECORE; + +/** + * String name space container node core. + */ +typedef struct RTSTRSPACECORE +{ + /** Hash key. Don't touch. */ + uint32_t Key; + /** Pointer to the left leaf node. Don't touch. */ + PRTSTRSPACECORE pLeft; + /** Pointer to the left right node. Don't touch. */ + PRTSTRSPACECORE pRight; + /** Pointer to the list of string with the same key. Don't touch. */ + PRTSTRSPACECORE pList; + /** Height of this tree: max(heigth(left), heigth(right)) + 1. Don't touch */ + unsigned char uchHeight; + /** The string length. Read only! */ + size_t cchString; + /** Pointer to the string. Read only! */ + const char *pszString; +} RTSTRSPACECORE; + +/** String space. (Initialize with NULL.) */ +typedef PRTSTRSPACECORE RTSTRSPACE; +/** Pointer to a string space. */ +typedef PPRTSTRSPACECORE PRTSTRSPACE; + + +/** + * Inserts a string into a unique string space. + * + * @returns true on success. + * @returns false if the string collided with an existing string. + * @param pStrSpace The space to insert it into. + * @param pStr The string node. + */ +RTDECL(bool) RTStrSpaceInsert(PRTSTRSPACE pStrSpace, PRTSTRSPACECORE pStr); + +/** + * Removes a string from a unique string space. + * + * @returns Pointer to the removed string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to remove it from. + * @param pszString The string to remove. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceRemove(PRTSTRSPACE pStrSpace, const char *pszString); + +/** + * Gets a string from a unique string space. + * + * @returns Pointer to the string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to get it from. + * @param pszString The string to get. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceGet(PRTSTRSPACE pStrSpace, const char *pszString); + +/** + * Gets a string from a unique string space. + * + * @returns Pointer to the string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to get it from. + * @param pszString The string to get. + * @param cchMax The max string length to evaluate. Passing + * RTSTR_MAX is ok and makes it behave just like + * RTStrSpaceGet. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceGetN(PRTSTRSPACE pStrSpace, const char *pszString, size_t cchMax); + +/** + * Callback function for RTStrSpaceEnumerate() and RTStrSpaceDestroy(). + * + * @returns 0 on continue. + * @returns Non-zero to aborts the operation. + * @param pStr The string node + * @param pvUser The user specified argument. + */ +typedef DECLCALLBACK(int) FNRTSTRSPACECALLBACK(PRTSTRSPACECORE pStr, void *pvUser); +/** Pointer to callback function for RTStrSpaceEnumerate() and RTStrSpaceDestroy(). */ +typedef FNRTSTRSPACECALLBACK *PFNRTSTRSPACECALLBACK; + +/** + * Destroys the string space. + * + * The caller supplies a callback which will be called for each of the string + * nodes in for freeing their memory and other resources. + * + * @returns 0 or what ever non-zero return value pfnCallback returned + * when aborting the destruction. + * @param pStrSpace The space to destroy. + * @param pfnCallback The callback. + * @param pvUser The user argument. + */ +RTDECL(int) RTStrSpaceDestroy(PRTSTRSPACE pStrSpace, PFNRTSTRSPACECALLBACK pfnCallback, void *pvUser); + +/** + * Enumerates the string space. + * The caller supplies a callback which will be called for each of + * the string nodes. + * + * @returns 0 or what ever non-zero return value pfnCallback returned + * when aborting the destruction. + * @param pStrSpace The space to enumerate. + * @param pfnCallback The callback. + * @param pvUser The user argument. + */ +RTDECL(int) RTStrSpaceEnumerate(PRTSTRSPACE pStrSpace, PFNRTSTRSPACECALLBACK pfnCallback, void *pvUser); + +/** @} */ + + +/** @defgroup rt_str_hash Sting hashing + * @{ */ + +/** + * Hashes the given string using algorithm \#1. + * + * @returns String hash. + * @param pszString The string to hash. + */ +RTDECL(uint32_t) RTStrHash1(const char *pszString); + +/** + * Hashes the given string using algorithm \#1. + * + * @returns String hash. + * @param pszString The string to hash. + * @param cchString The max length to hash. Hashing will stop if the + * terminator character is encountered first. Passing + * RTSTR_MAX is fine. + */ +RTDECL(uint32_t) RTStrHash1N(const char *pszString, size_t cchString); + +/** + * Hashes the given strings as if they were concatenated using algorithm \#1. + * + * @returns String hash. + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. Passing RTSTR_MAX as the size is + * fine. + */ +RTDECL(uint32_t) RTStrHash1ExN(size_t cPairs, ...); + +/** + * Hashes the given strings as if they were concatenated using algorithm \#1. + * + * @returns String hash. + * @param cPairs The number of string / length pairs in the @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. Passing RTSTR_MAX as the size is + * fine. + */ +RTDECL(uint32_t) RTStrHash1ExNV(size_t cPairs, va_list va); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/thread.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/thread.h @@ -0,0 +1,943 @@ +/** @file + * IPRT - Threads. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_thread_h +#define ___iprt_thread_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_thread RTThread - Thread Management + * @ingroup grp_rt + * @{ + */ + +/** + * The thread state. + */ +typedef enum RTTHREADSTATE +{ + /** The usual invalid 0 value. */ + RTTHREADSTATE_INVALID = 0, + /** The thread is being initialized. */ + RTTHREADSTATE_INITIALIZING, + /** The thread has terminated */ + RTTHREADSTATE_TERMINATED, + /** Probably running. */ + RTTHREADSTATE_RUNNING, + + /** Waiting on a critical section. */ + RTTHREADSTATE_CRITSECT, + /** Waiting on a event semaphore. */ + RTTHREADSTATE_EVENT, + /** Waiting on a event multiple wakeup semaphore. */ + RTTHREADSTATE_EVENT_MULTI, + /** Waiting on a fast mutex. */ + RTTHREADSTATE_FAST_MUTEX, + /** Waiting on a mutex. */ + RTTHREADSTATE_MUTEX, + /** Waiting on a read write semaphore, read (shared) access. */ + RTTHREADSTATE_RW_READ, + /** Waiting on a read write semaphore, write (exclusive) access. */ + RTTHREADSTATE_RW_WRITE, + /** The thread is sleeping. */ + RTTHREADSTATE_SLEEP, + /** Waiting on a spin mutex. */ + RTTHREADSTATE_SPIN_MUTEX, + /** End of the thread states. */ + RTTHREADSTATE_END, + + /** The usual 32-bit size hack. */ + RTTHREADSTATE_32BIT_HACK = 0x7fffffff +} RTTHREADSTATE; + +/** Checks if a thread state indicates that the thread is sleeping. */ +#define RTTHREAD_IS_SLEEPING(enmState) ((enmState) >= RTTHREADSTATE_CRITSECT) + +/** + * Thread types. + * Besides identifying the purpose of the thread, the thread type is + * used to select the scheduling properties. + * + * The types in are placed in a rough order of ascending priority. + */ +typedef enum RTTHREADTYPE +{ + /** Invalid type. */ + RTTHREADTYPE_INVALID = 0, + /** Infrequent poller thread. + * This type of thread will sleep for the most of the time, and do + * infrequent polls on resources at 0.5 sec or higher intervals. + */ + RTTHREADTYPE_INFREQUENT_POLLER, + /** Main heavy worker thread. + * Thread of this type is driving asynchronous tasks in the Main + * API which takes a long time and might involve a bit of CPU. Like + * for instance creating a fixed sized VDI. + */ + RTTHREADTYPE_MAIN_HEAVY_WORKER, + /** The emulation thread type. + * While being a thread with very high workload it still is vital + * that it gets scheduled frequently. When possible all other thread + * types except DEFAULT and GUI should interrupt this one ASAP when + * they become ready. + */ + RTTHREADTYPE_EMULATION, + /** The default thread type. + * Since it doesn't say much about the purpose of the thread + * nothing special is normally done to the scheduling. This type + * should be avoided. + * The main thread is registered with default type during RTR3Init() + * and that's what the default process priority is derived from. + */ + RTTHREADTYPE_DEFAULT, + /** The GUI thread type + * The GUI normally have a low workload but is frequently scheduled + * to handle events. When possible the scheduler should not leave + * threads of this kind waiting for too long (~50ms). + */ + RTTHREADTYPE_GUI, + /** Main worker thread. + * Thread of this type is driving asynchronous tasks in the Main API. + * In most cases this means little work an a lot of waiting. + */ + RTTHREADTYPE_MAIN_WORKER, + /** VRDP I/O thread. + * These threads are I/O threads in the RDP server will hang around + * waiting for data, process it and pass it on. + */ + RTTHREADTYPE_VRDP_IO, + /** The debugger type. + * Threads involved in servicing the debugger. It must remain + * responsive even when things are running wild in. + */ + RTTHREADTYPE_DEBUGGER, + /** Message pump thread. + * Thread pumping messages from one thread/process to another + * thread/process. The workload is very small, most of the time + * it's blocked waiting for messages to be produced or processed. + * This type of thread will be favored after I/O threads. + */ + RTTHREADTYPE_MSG_PUMP, + /** The I/O thread type. + * Doing I/O means shuffling data, waiting for request to arrive and + * for them to complete. The thread should be favored when competing + * with any other threads except timer threads. + */ + RTTHREADTYPE_IO, + /** The timer thread type. + * A timer thread is mostly waiting for the timer to tick + * and then perform a little bit of work. Accuracy is important here, + * so the thread should be favoured over all threads. If premention can + * be configured at thread level, it could be made very short. + */ + RTTHREADTYPE_TIMER, + /** Only used for validation. */ + RTTHREADTYPE_END +} RTTHREADTYPE; + + +#ifndef IN_RC + +/** + * Checks if the IPRT thread component has been initialized. + * + * This is used to avoid calling into RTThread before the runtime has been + * initialized. + * + * @returns @c true if it's initialized, @c false if not. + */ +RTDECL(bool) RTThreadIsInitialized(void); + +/** + * Get the thread handle of the current thread. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelf(void); + +/** + * Get the native thread handle of the current thread. + * + * @returns Native thread handle. + */ +RTDECL(RTNATIVETHREAD) RTThreadNativeSelf(void); + +/** + * Millisecond granular sleep function. + * + * @returns VINF_SUCCESS on success. + * @returns VERR_INTERRUPTED if a signal or other asynchronous stuff happened + * which interrupt the peaceful sleep. + * @param cMillies Number of milliseconds to sleep. + * 0 milliseconds means yielding the timeslice - deprecated! + * @remark See RTThreadNanoSleep() for sleeping for smaller periods of time. + */ +RTDECL(int) RTThreadSleep(RTMSINTERVAL cMillies); + +/** + * Millisecond granular sleep function, no logger calls. + * + * Same as RTThreadSleep, except it will never call into the IPRT logger. It + * can therefore safely be used in places where the logger is off limits, like + * at termination or init time. The electric fence heap is one consumer of + * this API. + * + * @returns VINF_SUCCESS on success. + * @returns VERR_INTERRUPTED if a signal or other asynchronous stuff happened + * which interrupt the peaceful sleep. + * @param cMillies Number of milliseconds to sleep. + * 0 milliseconds means yielding the timeslice - deprecated! + */ +RTDECL(int) RTThreadSleepNoLog(RTMSINTERVAL cMillies); + +/** + * Yields the CPU. + * + * @returns true if we yielded. + * @returns false if it's probable that we didn't yield. + */ +RTDECL(bool) RTThreadYield(void); + + + +/** + * Thread function. + * + * @returns 0 on success. + * @param ThreadSelf Thread handle to this thread. + * @param pvUser User argument. + */ +typedef DECLCALLBACK(int) FNRTTHREAD(RTTHREAD ThreadSelf, void *pvUser); +/** Pointer to a FNRTTHREAD(). */ +typedef FNRTTHREAD *PFNRTTHREAD; + +/** + * Thread creation flags. + */ +typedef enum RTTHREADFLAGS +{ + /** This flag is used to keep the thread structure around so it can + * be waited on after termination. @sa RTThreadWait and + * RTThreadWaitNoResume. Not required for RTThreadUserWait and friends! + */ + RTTHREADFLAGS_WAITABLE = RT_BIT(0), + /** The bit number corresponding to the RTTHREADFLAGS_WAITABLE mask. */ + RTTHREADFLAGS_WAITABLE_BIT = 0, + + /** Mask of valid flags, use for validation. */ + RTTHREADFLAGS_MASK = RT_BIT(0) +} RTTHREADFLAGS; + + +/** + * Create a new thread. + * + * @returns iprt status code. + * @param pThread Where to store the thread handle to the new thread. (optional) + * @param pfnThread The thread function. + * @param pvUser User argument. + * @param cbStack The size of the stack for the new thread. + * Use 0 for the default stack size. + * @param enmType The thread type. Used for deciding scheduling attributes + * of the thread. + * @param fFlags Flags of the RTTHREADFLAGS type (ORed together). + * @param pszName Thread name. + * + * @remark When called in Ring-0, this API will create a new kernel thread and not a thread in + * the context of the calling process. + */ +RTDECL(int) RTThreadCreate(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName); +#ifndef RT_OS_LINUX /* XXX crashes genksyms at least on 32-bit Linux hosts */ +/** @copydoc RTThreadCreate */ +typedef DECLCALLBACKPTR(int, PFNRTTHREADCREATE)(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName); +#endif + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintfV form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszName Thread name format. + * @param va Format arguments. + */ +RTDECL(int) RTThreadCreateV(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR(7, 0); + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintf form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszName Thread name format. + * @param ... Format arguments. + */ +RTDECL(int) RTThreadCreateF(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR(7, 8); + +/** + * Gets the native thread id of a IPRT thread. + * + * @returns The native thread id. + * @param Thread The IPRT thread. + */ +RTDECL(RTNATIVETHREAD) RTThreadGetNative(RTTHREAD Thread); + +/** + * Gets the IPRT thread of a native thread. + * + * @returns The IPRT thread handle + * @returns NIL_RTTHREAD if not a thread known to IPRT. + * @param NativeThread The native thread handle/id. + */ +RTDECL(RTTHREAD) RTThreadFromNative(RTNATIVETHREAD NativeThread); + +/** + * Changes the type of the specified thread. + * + * @returns iprt status code. + * @param Thread The thread which type should be changed. + * @param enmType The new thread type. + * @remark In Ring-0 it only works if Thread == RTThreadSelf(). + */ +RTDECL(int) RTThreadSetType(RTTHREAD Thread, RTTHREADTYPE enmType); + +/** + * Wait for the thread to terminate, resume on interruption. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc); + +/** + * Wait for the thread to terminate, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc); + +/** + * Gets the name of the current thread thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + */ +RTDECL(const char *) RTThreadSelfName(void); + +/** + * Gets the name of a thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + * @param Thread Thread handle of the thread to query the name of. + */ +RTDECL(const char *) RTThreadGetName(RTTHREAD Thread); + +/** + * Gets the type of the specified thread. + * + * @returns The thread type. + * @returns RTTHREADTYPE_INVALID if the thread handle is invalid. + * @param Thread The thread in question. + */ +RTDECL(RTTHREADTYPE) RTThreadGetType(RTTHREAD Thread); + +/** + * Sets the name of a thread. + * + * @returns iprt status code. + * @param Thread Thread handle of the thread to query the name of. + * @param pszName The thread name. + */ +RTDECL(int) RTThreadSetName(RTTHREAD Thread, const char *pszName); + +/** + * Checks if the specified thread is the main thread. + * + * @returns true if it is, false if it isn't. + * + * @param hThread The thread handle. + */ +RTDECL(bool) RTThreadIsMain(RTTHREAD hThread); + +/** + * Checks if the calling thread is known to IPRT. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsSelfKnown(void); + +/** + * Checks if the calling thread is know to IPRT and is alive. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsSelfAlive(void); + +/** + * Checks if the calling thread is known to IPRT. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsOperational(void); + +/** + * Signal the user event. + * + * @returns iprt status code. + */ +RTDECL(int) RTThreadUserSignal(RTTHREAD Thread); + +/** + * Wait for the user event. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWait(RTTHREAD Thread, RTMSINTERVAL cMillies); + +/** + * Wait for the user event, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies); + +/** + * Reset the user event. + * + * @returns iprt status code. + * @param Thread The thread to reset. + */ +RTDECL(int) RTThreadUserReset(RTTHREAD Thread); + +/** + * Pokes the thread. + * + * This will signal the thread, attempting to interrupt whatever it's currently + * doing. This is *NOT* implemented on all platforms and may cause unresolved + * symbols during linking or VERR_NOT_IMPLEMENTED at runtime. + * + * @returns IPRT status code. + * + * @param hThread The thread to poke. This must not be the + * calling thread. + */ +RTDECL(int) RTThreadPoke(RTTHREAD hThread); + +# ifdef IN_RING0 + +/** + * Check if preemption is currently enabled or not for the current thread. + * + * @note This may return true even on systems where preemption isn't + * possible. In that case, it means no call to RTThreadPreemptDisable + * has been made and interrupts are still enabled. + * + * @returns true if preemption is enabled, false if preemetion is disabled. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread); + +/** + * Check if preemption is pending for the current thread. + * + * This function should be called regularly when executing larger portions of + * code with preemption disabled. + * + * @returns true if pending, false if not. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread); + +/** + * Is RTThreadPreemptIsPending reliable? + * + * @returns true if reliable, false if not. + */ +RTDECL(bool) RTThreadPreemptIsPendingTrusty(void); + +/** + * Is preemption possible on this system. + * + * @returns true if possible, false if not. + */ +RTDECL(bool) RTThreadPreemptIsPossible(void); + +/** + * Preemption state saved by RTThreadPreemptDisable and used by + * RTThreadPreemptRestore to restore the previous state. + */ +typedef struct RTTHREADPREEMPTSTATE +{ + /** In debug builds this will be used to check for cpu migration. */ + RTCPUID idCpu; +# ifdef RT_OS_WINDOWS + /** The old IRQL. Don't touch! */ + unsigned char uchOldIrql; + /** Reserved, MBZ. */ + uint8_t bReserved1; + /** Reserved, MBZ. */ + uint8_t bReserved2; + /** Reserved, MBZ. */ + uint8_t bReserved3; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 255, 0, 0, 0 } +# elif defined(RT_OS_HAIKU) + /** The cpu_state. Don't touch! */ + uint32_t uOldCpuState; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 0 } +# elif defined(RT_OS_SOLARIS) + /** The Old PIL. Don't touch! */ + uint32_t uOldPil; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, UINT32_MAX } +# else + /** Reserved, MBZ. */ + uint32_t u32Reserved; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 0 } +# endif +} RTTHREADPREEMPTSTATE; +/** Pointer to a preemption state. */ +typedef RTTHREADPREEMPTSTATE *PRTTHREADPREEMPTSTATE; + +/** + * Disable preemption. + * + * A call to this function must be matched by exactly one call to + * RTThreadPreemptRestore(). + * + * @param pState Where to store the preemption state. + */ +RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState); + +/** + * Restores the preemption state, undoing a previous call to + * RTThreadPreemptDisable. + * + * A call to this function must be matching a previous call to + * RTThreadPreemptDisable. + * + * @param pState The state return by RTThreadPreemptDisable. + */ +RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState); + +/** + * Check if the thread is executing in interrupt context. + * + * @returns true if in interrupt context, false if not. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadIsInInterrupt(RTTHREAD hThread); + + +/** + * Thread context swithcing events. + */ +typedef enum RTTHREADCTXEVENT +{ + /** This thread is being scheduled out on the current CPU (includes preemption, + * waiting, sleep and whatever else may trigger scheduling). */ + RTTHREADCTXEVENT_OUT = 0, + /** This thread is being scheduled in on the current CPU and will resume + * execution. */ + RTTHREADCTXEVENT_IN, + /** The usual 32-bit size hack. */ + RTTHREADCTXEVENT_32BIT_HACK = 0x7fffffff +} RTTHREADCTXEVENT; + +/** + * Thread context switching hook callback. + * + * This hook function is called when a thread is scheduled and preempted. Check + * @a enmEvent to see which it is. Since the function is being called from + * hooks inside the scheduler, it is limited what you can do from this function. + * Do NOT acquire locks, sleep or yield the thread for instance. IRQ safe + * spinlocks are fine though. + * + * @returns IPRT status code. + * @param enmEvent The thread-context event. Please quitely ignore unknown + * events, we may add more (thread exit, ++) later. + * @param pvUser User argument. + */ +typedef DECLCALLBACK(void) FNRTTHREADCTXHOOK(RTTHREADCTXEVENT enmEvent, void *pvUser); +/** Pointer to a context switching hook. */ +typedef FNRTTHREADCTXHOOK *PFNRTTHREADCTXHOOK; + +/** + * Initializes a thread context switching hook for the current thread. + * + * The hook is created as disabled, use RTThreadCtxHookEnable to enable it. + * + * @returns IPRT status code. + * @param phCtxHook Where to store the hook handle. + * @param fFlags Reserved for future extensions, must be zero. + * @param pfnCallback Pointer to a the hook function (callback) that + * should be called for all context switching events + * involving the current thread. + * @param pvUser User argument that will be passed to @a pfnCallback. + * @remarks Preemption must be enabled. + */ +RTDECL(int) RTThreadCtxHookCreate(PRTTHREADCTXHOOK phCtxHook, uint32_t fFlags, PFNRTTHREADCTXHOOK pfnCallback, void *pvUser); + +/** + * Destroys a thread context switching hook. + * + * Caller must make sure the hook is disabled before the final reference is + * released. Recommended to call this on the owning thread, otherwise the + * memory backing it may on some systems only be released when the thread + * terminates. + * + * @returns IPRT status code. + * + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function will return VINF_SUCCESS. + * @remarks Preemption must be enabled. + * @remarks Do not call from FNRTTHREADCTXHOOK. + */ +RTDECL(int) RTThreadCtxHookDestroy(RTTHREADCTXHOOK hCtxHook); + +/** + * Enables the context switching hooks for the current thread. + * + * @returns IPRT status code. + * @param hCtxHook The context hook handle. + * @remarks Should be called with preemption disabled. + */ +RTDECL(int) RTThreadCtxHookEnable(RTTHREADCTXHOOK hCtxHook); + +/** + * Disables the thread context switching hook for the current thread. + * + * Will not assert or fail if called twice or with a NIL handle. + * + * @returns IPRT status code. + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function wil return VINF_SUCCESS. + * @remarks Should be called with preemption disabled. + * @remarks Do not call from FNRTTHREADCTXHOOK. + */ +RTDECL(int) RTThreadCtxHookDisable(RTTHREADCTXHOOK hCtxHook); + +/** + * Is the thread context switching hook enabled? + * + * @returns true if registered, false if not supported or not registered. + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function will return false. + * + * @remarks Can be called from any thread, though is naturally subject to races + * when not called from the thread associated with the hook. + */ +RTDECL(bool) RTThreadCtxHookIsEnabled(RTTHREADCTXHOOK hCtxHook); + +# endif /* IN_RING0 */ + + +# ifdef IN_RING3 + +/** + * Adopts a non-IPRT thread. + * + * @returns IPRT status code. + * @param enmType The thread type. + * @param fFlags The thread flags. RTTHREADFLAGS_WAITABLE is not currently allowed. + * @param pszName The thread name. Optional + * @param pThread Where to store the thread handle. Optional. + */ +RTDECL(int) RTThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName, PRTTHREAD pThread); + +/** + * Get the thread handle of the current thread, automatically adopting alien + * threads. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelfAutoAdopt(void); + +/** + * Gets the affinity mask of the current thread. + * + * @returns IPRT status code. + * @param pCpuSet Where to return the CPU affienty set of the calling + * thread. + */ +RTR3DECL(int) RTThreadGetAffinity(PRTCPUSET pCpuSet); + +/** + * Sets the affinity mask of the current thread. + * + * @returns iprt status code. + * @param pCpuSet The set of CPUs this thread can run on. NULL means + * all CPUs. + */ +RTR3DECL(int) RTThreadSetAffinity(PCRTCPUSET pCpuSet); + +/** + * Binds the thread to one specific CPU. + * + * @returns iprt status code. + * @param idCpu The ID of the CPU to bind this thread to. Use + * NIL_RTCPUID to unbind it. + */ +RTR3DECL(int) RTThreadSetAffinityToCpu(RTCPUID idCpu); + +/** + * Unblocks a thread. + * + * This function is paired with RTThreadBlocking and RTThreadBlockingDebug. + * + * @param hThread The current thread. + * @param enmCurState The current state, used to check for nested blocking. + * The new state will be running. + */ +RTDECL(void) RTThreadUnblocked(RTTHREAD hThread, RTTHREADSTATE enmCurState); + +/** + * Change the thread state to blocking. + * + * @param hThread The current thread. + * @param enmState The sleep state. + * @param fReallySleeping Really going to sleep now. Use false before calls + * to other IPRT synchronization methods. + */ +RTDECL(void) RTThreadBlocking(RTTHREAD hThread, RTTHREADSTATE enmState, bool fReallySleeping); + +/** + * Get the current thread state. + * + * A thread that is reported as sleeping may actually still be running inside + * the lock validator or/and in the code of some other IPRT synchronization + * primitive. Use RTThreadGetReallySleeping + * + * @returns The thread state. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetState(RTTHREAD hThread); + +/** + * Checks if the thread is really sleeping or not. + * + * @returns RTTHREADSTATE_RUNNING if not really sleeping, otherwise the state it + * is sleeping in. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetReallySleeping(RTTHREAD hThread); + +/** + * Translate a thread state into a string. + * + * @returns Pointer to a read-only string containing the state name. + * @param enmState The state. + */ +RTDECL(const char *) RTThreadStateName(RTTHREADSTATE enmState); + + +/** + * Native thread states returned by RTThreadNativeState. + */ +typedef enum RTTHREADNATIVESTATE +{ + /** Invalid thread handle. */ + RTTHREADNATIVESTATE_INVALID = 0, + /** Unable to determine the thread state. */ + RTTHREADNATIVESTATE_UNKNOWN, + /** The thread is running. */ + RTTHREADNATIVESTATE_RUNNING, + /** The thread is blocked. */ + RTTHREADNATIVESTATE_BLOCKED, + /** The thread is suspended / stopped. */ + RTTHREADNATIVESTATE_SUSPENDED, + /** The thread has terminated. */ + RTTHREADNATIVESTATE_TERMINATED, + /** Make sure it's a 32-bit type. */ + RTTHREADNATIVESTATE_32BIT_HACK = 0x7fffffff +} RTTHREADNATIVESTATE; + + +/** + * Get the native state of a thread. + * + * @returns Native state. + * @param hThread The thread handle. + * + * @remarks Not yet implemented on all systems, so have a backup plan for + * RTTHREADNATIVESTATE_UNKNOWN. + */ +RTDECL(RTTHREADNATIVESTATE) RTThreadGetNativeState(RTTHREAD hThread); + + +/** + * Get the execution times of the specified thread + * + * @returns IPRT status code. + * @param pKernelTime Kernel execution time in ms (out) + * @param pUserTime User execution time in ms (out) + * + */ +RTR3DECL(int) RTThreadGetExecutionTimeMilli(uint64_t *pKernelTime, uint64_t *pUserTime); + +/** @name Thread Local Storage + * @{ + */ +/** + * Thread termination callback for destroying a non-zero TLS entry. + * + * @remarks It is not permitable to use any RTTls APIs at this time. Doing so + * may lead to endless loops, crashes, and other bad stuff. + * + * @param pvValue The current value. + */ +typedef DECLCALLBACK(void) FNRTTLSDTOR(void *pvValue); +/** Pointer to a FNRTTLSDTOR. */ +typedef FNRTTLSDTOR *PFNRTTLSDTOR; + +/** + * Allocates a TLS entry (index). + * + * Example code: + * @code + RTTLS g_iTls = NIL_RTTLS; + + ... + + // once for the process, allocate the TLS index + if (g_iTls == NIL_RTTLS) + g_iTls = RTTlsAlloc(); + + // set the thread-local value. + RTTlsSet(g_iTls, pMyData); + + ... + + // get the thread-local value + PMYDATA pMyData = (PMYDATA)RTTlsGet(g_iTls); + + @endcode + * + * @returns the index of the allocated TLS entry. + * @returns NIL_RTTLS on failure. + */ +RTR3DECL(RTTLS) RTTlsAlloc(void); + +/** + * Variant of RTTlsAlloc that returns a status code. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if pfnDestructor is non-NULL and the platform + * doesn't support this feature. + * + * @param piTls Where to store the index of the allocated TLS entry. + * This is set to NIL_RTTLS on failure. + * @param pfnDestructor Optional callback function for cleaning up on + * thread termination. WARNING! This feature may not + * be implemented everywhere. + */ +RTR3DECL(int) RTTlsAllocEx(PRTTLS piTls, PFNRTTLSDTOR pfnDestructor); + +/** + * Frees a TLS entry. + * + * @returns IPRT status code. + * @param iTls The index of the TLS entry. + */ +RTR3DECL(int) RTTlsFree(RTTLS iTls); + +/** + * Get the (thread-local) value stored in a TLS entry. + * + * @returns value in given TLS entry. + * @retval NULL if RTTlsSet() has not yet been called on this thread, or if the + * TLS index is invalid. + * + * @param iTls The index of the TLS entry. + */ +RTR3DECL(void *) RTTlsGet(RTTLS iTls); + +/** + * Get the value stored in a TLS entry. + * + * @returns IPRT status code. + * @param iTls The index of the TLS entry. + * @param ppvValue Where to store the value. The value will be NULL if + * RTTlsSet has not yet been called on this thread. + */ +RTR3DECL(int) RTTlsGetEx(RTTLS iTls, void **ppvValue); + +/** + * Set the value stored in an allocated TLS entry. + * + * @returns IPRT status. + * @param iTls The index of the TLS entry. + * @param pvValue The value to store. + * + * @remarks Note that NULL is considered a special value. + */ +RTR3DECL(int) RTTlsSet(RTTLS iTls, void *pvValue); + +/** @} */ + +# endif /* IN_RING3 */ +# endif /* !IN_RC */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/time.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/time.h @@ -0,0 +1,1034 @@ +/** @file + * IPRT - Time. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_time_h +#define ___iprt_time_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_time RTTime - Time + * @ingroup grp_rt + * @{ + */ + +/** Time Specification. + * + * Use the inline RTTimeSpecGet/Set to operate on structure this so we + * can easily change the representation if required later. + * + * The current representation is in nanoseconds relative to the unix epoch + * (1970-01-01 00:00:00 UTC). This gives us an approximate span from + * 1678 to 2262 without sacrificing the resolution offered by the various + * host OSes (BSD & LINUX 1ns, NT 100ns). + */ +typedef struct RTTIMESPEC +{ + /** Nanoseconds since epoch. + * The name is intentially too long to be comfortable to use because you should be + * using inline helpers! */ + int64_t i64NanosecondsRelativeToUnixEpoch; +} RTTIMESPEC; + + +/** @name RTTIMESPEC methods + * @{ */ + +/** + * Gets the time as nanoseconds relative to the unix epoch. + * + * @returns Nanoseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetNano(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch; +} + + +/** + * Sets the time give by nanoseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The new time in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Nano; + return pTime; +} + + +/** + * Gets the time as microseconds relative to the unix epoch. + * + * @returns microseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetMicro(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1US; +} + + +/** + * Sets the time given by microseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The new time in microsecond. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Gets the time as milliseconds relative to the unix epoch. + * + * @returns milliseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetMilli(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1MS; +} + + +/** + * Sets the time given by milliseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The new time in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Gets the time as seconds relative to the unix epoch. + * + * @returns seconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetSeconds(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1SEC; +} + + +/** + * Sets the time given by seconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The new time in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Makes the time spec absolute like abs() does (i.e. a positive value). + * + * @returns pTime. + * @param pTime The time spec to modify. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAbsolute(PRTTIMESPEC pTime) +{ + if (pTime->i64NanosecondsRelativeToUnixEpoch < 0) + pTime->i64NanosecondsRelativeToUnixEpoch = -pTime->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Negates the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecNegate(PRTTIMESPEC pTime) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = -pTime->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Adds a time period to the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeAdd The time spec to add to pTime. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAdd(PRTTIMESPEC pTime, PCRTTIMESPEC pTimeAdd) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += pTimeAdd->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Adds a time period give as nanoseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The time period in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Nano; + return pTime; +} + + +/** + * Adds a time period give as microseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The time period in microseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Adds a time period give as milliseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The time period in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Adds a time period give as seconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The time period in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Subtracts a time period from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeSub The time spec to subtract from pTime. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSub(PRTTIMESPEC pTime, PCRTTIMESPEC pTimeSub) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= pTimeSub->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Subtracts a time period give as nanoseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The time period in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Nano; + return pTime; +} + + +/** + * Subtracts a time period give as microseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The time period in microseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Subtracts a time period give as milliseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The time period in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Subtracts a time period give as seconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The time period in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Gives the time in seconds and nanoseconds. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param *pi32Seconds Where to store the time period in seconds. + * @param *pi32Nano Where to store the time period in nanoseconds. + */ +DECLINLINE(void) RTTimeSpecGetSecondsAndNano(PRTTIMESPEC pTime, int32_t *pi32Seconds, int32_t *pi32Nano) +{ + int64_t i64 = RTTimeSpecGetNano(pTime); + int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC); + i64 /= RT_NS_1SEC; + if (i32Nano < 0) + { + i32Nano += RT_NS_1SEC; + i64--; + } + *pi32Seconds = (int32_t)i64; + *pi32Nano = i32Nano; +} + + +/* PORTME: Add struct timeval guard macro here. */ +#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) +/** + * Gets the time as POSIX timeval. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param pTimeval Where to store the time as POSIX timeval. + */ +DECLINLINE(struct timeval *) RTTimeSpecGetTimeval(PCRTTIMESPEC pTime, struct timeval *pTimeval) +{ + int64_t i64 = RTTimeSpecGetMicro(pTime); + int32_t i32Micro = (int32_t)(i64 % RT_US_1SEC); + i64 /= RT_US_1SEC; + if (i32Micro < 0) + { + i32Micro += RT_US_1SEC; + i64--; + } + pTimeval->tv_sec = (time_t)i64; + pTimeval->tv_usec = i32Micro; + return pTimeval; +} + +/** + * Sets the time as POSIX timeval. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeval Pointer to the POSIX timeval struct with the new time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimeval(PRTTIMESPEC pTime, const struct timeval *pTimeval) +{ + return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); +} +#endif /* various ways of detecting struct timeval */ + + +/* PORTME: Add struct timespec guard macro here. */ +#if defined(RTTIME_INCL_TIMESPEC) || defined(_STRUCT_TIMESPEC) || defined(_SYS__TIMESPEC_H_) || defined(TIMEVAL_TO_TIMESPEC) || defined(_TIMESPEC) +/** + * Gets the time as POSIX timespec. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param pTimespec Where to store the time as POSIX timespec. + */ +DECLINLINE(struct timespec *) RTTimeSpecGetTimespec(PCRTTIMESPEC pTime, struct timespec *pTimespec) +{ + int64_t i64 = RTTimeSpecGetNano(pTime); + int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC); + i64 /= RT_NS_1SEC; + if (i32Nano < 0) + { + i32Nano += RT_NS_1SEC; + i64--; + } + pTimespec->tv_sec = (time_t)i64; + pTimespec->tv_nsec = i32Nano; + return pTimespec; +} + +/** + * Sets the time as POSIX timespec. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimespec Pointer to the POSIX timespec struct with the new time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec(PRTTIMESPEC pTime, const struct timespec *pTimespec) +{ + return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); +} +#endif /* various ways of detecting struct timespec */ + + + +/** The offset of the unix epoch and the base for NT time (in 100ns units). + * Nt time starts at 1601-01-01 00:00:00. */ +#define RTTIME_NT_TIME_OFFSET_UNIX (116444736000000000LL) + + +/** + * Gets the time as NT time. + * + * @returns Nt time. + * @param pTime The time spec to interpret. + */ +DECLINLINE(uint64_t) RTTimeSpecGetNtTime(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / 100 + + RTTIME_NT_TIME_OFFSET_UNIX; +} + + +/** + * Sets the time given by Nt time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param u64NtTime The new time in Nt time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNtTime(PRTTIMESPEC pTime, uint64_t u64NtTime) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = + ((int64_t)u64NtTime - RTTIME_NT_TIME_OFFSET_UNIX) * 100; + return pTime; +} + + +#ifdef _FILETIME_ +/** + * Gets the time as NT file time. + * + * @returns pFileTime. + * @param pTime The time spec to interpret. + * @param pFileTime Pointer to NT filetime structure. + */ +DECLINLINE(PFILETIME) RTTimeSpecGetNtFileTime(PCRTTIMESPEC pTime, PFILETIME pFileTime) +{ + *((uint64_t *)pFileTime) = RTTimeSpecGetNtTime(pTime); + return pFileTime; +} + +/** + * Sets the time as NT file time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pFileTime Where to store the time as Nt file time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNtFileTime(PRTTIMESPEC pTime, const FILETIME *pFileTime) +{ + return RTTimeSpecSetNtTime(pTime, *(const uint64_t *)pFileTime); +} +#endif + + +/** The offset to the start of DOS time. + * DOS time starts 1980-01-01 00:00:00. */ +#define RTTIME_OFFSET_DOS_TIME (315532800000000000LL) + + +/** + * Gets the time as seconds relative to the start of dos time. + * + * @returns seconds relative to the start of dos time. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetDosSeconds(PCRTTIMESPEC pTime) +{ + return (pTime->i64NanosecondsRelativeToUnixEpoch - RTTIME_OFFSET_DOS_TIME) + / RT_NS_1SEC; +} + + +/** + * Sets the time given by seconds relative to the start of dos time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The new time in seconds relative to the start of dos time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetDosSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC + + RTTIME_OFFSET_DOS_TIME; + return pTime; +} + + +/** + * Compare two time specs. + * + * @returns true they are equal. + * @returns false they are not equal. + * @param pTime1 The 1st time spec. + * @param pTime2 The 2nd time spec. + */ +DECLINLINE(bool) RTTimeSpecIsEqual(PCRTTIMESPEC pTime1, PCRTTIMESPEC pTime2) +{ + return pTime1->i64NanosecondsRelativeToUnixEpoch == pTime2->i64NanosecondsRelativeToUnixEpoch; +} + + +/** + * Compare two time specs. + * + * @returns 0 if equal, -1 if @a pLeft is smaller, 1 if @a pLeft is larger. + * @returns false they are not equal. + * @param pLeft The 1st time spec. + * @param pRight The 2nd time spec. + */ +DECLINLINE(int) RTTimeSpecCompare(PCRTTIMESPEC pLeft, PCRTTIMESPEC pRight) +{ + if (pLeft->i64NanosecondsRelativeToUnixEpoch == pRight->i64NanosecondsRelativeToUnixEpoch) + return 0; + return pLeft->i64NanosecondsRelativeToUnixEpoch < pRight->i64NanosecondsRelativeToUnixEpoch ? -1 : 1; +} + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time spec. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeSpecToString(PCRTTIMESPEC pTime, char *psz, size_t cb); + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime The time spec. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIMESPEC) RTTimeSpecFromString(PRTTIMESPEC pTime, const char *pszString); + +/** @} */ + + +/** + * Exploded time. + */ +#pragma pack(1) +typedef struct RTTIME +{ + /** The year number. */ + int32_t i32Year; + /** The month of the year (1-12). January is 1. */ + uint8_t u8Month; + /** The day of the week (0-6). Monday is 0. */ + uint8_t u8WeekDay; + /** The day of the year (1-366). January the 1st is 1. */ + uint16_t u16YearDay; + /** The day of the month (1-31). */ + uint8_t u8MonthDay; + /** Hour of the day (0-23). */ + uint8_t u8Hour; + /** The minute of the hour (0-59). */ + uint8_t u8Minute; + /** The second of the minute (0-60). + * (u32Nanosecond / 1000000) */ + uint8_t u8Second; + /** The nanoseconds of the second (0-999999999). */ + uint32_t u32Nanosecond; + /** Flags, of the RTTIME_FLAGS_* \#defines. */ + uint32_t fFlags; + /** UCT time offset in minutes (-840-840). + * @remarks The implementation of RTTimeLocal* isn't quite there yet, so this might not be 100% correct. */ + int32_t offUTC; +} RTTIME; +#pragma pack() +/** Pointer to a exploded time structure. */ +typedef RTTIME *PRTTIME; +/** Pointer to a const exploded time structure. */ +typedef const RTTIME *PCRTTIME; + +/** @name RTTIME::fFlags values. + * @{ */ +/** Set if the time is UTC. If clear the time local time. */ +#define RTTIME_FLAGS_TYPE_MASK 3 +/** the time is UTC time. */ +#define RTTIME_FLAGS_TYPE_UTC 2 +/** The time is local time. */ +#define RTTIME_FLAGS_TYPE_LOCAL 3 + +/** Set if the time is local and daylight saving time is in effect. + * Not bit is not valid if RTTIME_FLAGS_NO_DST_DATA is set. */ +#define RTTIME_FLAGS_DST RT_BIT(4) +/** Set if the time is local and there is no data available on daylight saving time. */ +#define RTTIME_FLAGS_NO_DST_DATA RT_BIT(5) +/** Set if the year is a leap year. + * This is mutual exclusiv with RTTIME_FLAGS_COMMON_YEAR. */ +#define RTTIME_FLAGS_LEAP_YEAR RT_BIT(6) +/** Set if the year is a common year. + * This is mutual exclusiv with RTTIME_FLAGS_LEAP_YEAR. */ +#define RTTIME_FLAGS_COMMON_YEAR RT_BIT(7) +/** The mask of valid flags. */ +#define RTTIME_FLAGS_MASK UINT32_C(0xff) +/** @} */ + + +/** + * Gets the current system time (UTC). + * + * @returns pTime. + * @param pTime Where to store the time. + */ +RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime); + +/** + * Sets the system time. + * + * @returns IPRT status code + * @param pTime The new system time (UTC). + * + * @remarks This will usually fail because changing the wall time is usually + * requires extra privileges. + */ +RTDECL(int) RTTimeSet(PCRTTIMESPEC pTime); + +/** + * Explodes a time spec (UTC). + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded. + */ +RTDECL(PRTTIME) RTTimeExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec); + +/** + * Implodes exploded time to a time spec (UTC). + * + * @returns pTime on success. + * @returns NULL if the pTime data is invalid. + * @param pTimeSpec Where to store the imploded UTC time. + * If pTime specifies a time which outside the range, maximum or + * minimum values will be returned. + * @param pTime Pointer to the exploded time to implode. + * The fields u8Month, u8WeekDay and u8MonthDay are not used, + * and all the other fields are expected to be within their + * bounds. Use RTTimeNormalize() to calculate u16YearDay and + * normalize the ranges of the fields. + */ +RTDECL(PRTTIMESPEC) RTTimeImplode(PRTTIMESPEC pTimeSpec, PCRTTIME pTime); + +/** + * Normalizes the fields of a time structure. + * + * It is possible to calculate year-day from month/day and vice + * versa. If you adjust any of of these, make sure to zero the + * other so you make it clear which of the fields to use. If + * it's ambiguous, the year-day field is used (and you get + * assertions in debug builds). + * + * All the time fields and the year-day or month/day fields will + * be adjusted for overflows. (Since all fields are unsigned, there + * is no underflows.) It is possible to exploit this for simple + * date math, though the recommended way of doing that to implode + * the time into a timespec and do the math on that. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * + * @param pTime The time structure to normalize. + * + * @remarks This function doesn't work with local time, only with UTC time. + */ +RTDECL(PRTTIME) RTTimeNormalize(PRTTIME pTime); + +/** + * Gets the current local system time. + * + * @returns pTime. + * @param pTime Where to store the local time. + */ +RTDECL(PRTTIMESPEC) RTTimeLocalNow(PRTTIMESPEC pTime); + +/** + * Gets the delta between UTC and local time. + * + * @code + * RTTIMESPEC LocalTime; + * RTTimeSpecAddNano(RTTimeNow(&LocalTime), RTTimeLocalDeltaNano()); + * @endcode + * + * @returns Returns the nanosecond delta between UTC and local time. + */ +RTDECL(int64_t) RTTimeLocalDeltaNano(void); + +/** + * Explodes a time spec to the localized timezone. + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded (UTC). + */ +RTDECL(PRTTIME) RTTimeLocalExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec); + +/** + * Normalizes the fields of a time structure containing local time. + * + * See RTTimeNormalize for details. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * @param pTime The time structure to normalize. + */ +RTDECL(PRTTIME) RTTimeLocalNormalize(PRTTIME pTime); + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time. Caller should've normalized this. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeToString(PCRTTIME pTime, char *psz, size_t cb); + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime Where to store the time on success. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIME) RTTimeFromString(PRTTIME pTime, const char *pszString); + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +RTDECL(bool) RTTimeIsLeapYear(int32_t i32Year); + +/** + * Gets the current nanosecond timestamp. + * + * @returns nanosecond timestamp. + */ +RTDECL(uint64_t) RTTimeNanoTS(void); + +/** + * Gets the current millisecond timestamp. + * + * @returns millisecond timestamp. + */ +RTDECL(uint64_t) RTTimeMilliTS(void); + +/** + * Debugging the time api. + * + * @returns the number of 1ns steps which has been applied by RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgSteps(void); + +/** + * Debugging the time api. + * + * @returns the number of times the TSC interval expired RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgExpired(void); + +/** + * Debugging the time api. + * + * @returns the number of bad previous values encountered by RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgBad(void); + +/** + * Debugging the time api. + * + * @returns the number of update races in RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgRaces(void); + +/** @name RTTimeNanoTS GIP worker functions, for TM. + * @{ */ +/** Pointer to a RTTIMENANOTSDATA structure. */ +typedef struct RTTIMENANOTSDATA *PRTTIMENANOTSDATA; + +/** + * Nanosecond timestamp data. + * + * This is used to keep track of statistics and callback so IPRT + * and TM (VirtualBox) can share code. + * + * @remark Keep this in sync with the assembly version in timesupA.asm. + */ +typedef struct RTTIMENANOTSDATA +{ + /** Where the previous timestamp is stored. + * This is maintained to ensure that time doesn't go backwards or anything. */ + uint64_t volatile *pu64Prev; + + /** + * Helper function that's used by the assembly routines when something goes bust. + * + * @param pData Pointer to this structure. + * @param u64NanoTS The calculated nano ts. + * @param u64DeltaPrev The delta relative to the previously returned timestamp. + * @param u64PrevNanoTS The previously returned timestamp (as it was read it). + */ + DECLCALLBACKMEMBER(void, pfnBad)(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS); + + /** + * Callback for when rediscovery is required. + * + * @returns Nanosecond timestamp. + * @param pData Pointer to this structure. + */ + DECLCALLBACKMEMBER(uint64_t, pfnRediscover)(PRTTIMENANOTSDATA pData); + + /** + * Callback for when some CPU index related stuff goes wrong. + * + * @returns Nanosecond timestamp. + * @param pData Pointer to this structure. + * @param idApic The APIC ID if available, otherwise (UINT16_MAX-1). + * @param iCpuSet The CPU set index if available, otherwise + * (UINT16_MAX-1). + * @param iGipCpu The GIP CPU array index if available, otherwise + * (UINT16_MAX-1). + */ + DECLCALLBACKMEMBER(uint64_t, pfnBadCpuIndex)(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu); + + /** Number of 1ns steps because of overshooting the period. */ + uint32_t c1nsSteps; + /** The number of times the interval expired (overflow). */ + uint32_t cExpired; + /** Number of "bad" previous values. */ + uint32_t cBadPrev; + /** The number of update races. */ + uint32_t cUpdateRaces; +} RTTIMENANOTSDATA; + +#ifndef IN_RING3 +/** + * The Ring-3 layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATAR3 +{ + R3PTRTYPE(uint64_t volatile *) pu64Prev; + DECLR3CALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLR3CALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLR3CALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATAR3; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATAR3; +#endif + +#ifndef IN_RING0 +/** + * The Ring-3 layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATAR0 +{ + R0PTRTYPE(uint64_t volatile *) pu64Prev; + DECLR0CALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLR0CALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLR0CALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATAR0; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATAR0; +#endif + +#ifndef IN_RC +/** + * The RC layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATARC +{ + RCPTRTYPE(uint64_t volatile *) pu64Prev; + DECLRCCALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLRCCALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLRCCALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATARC; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATARC; +#endif + +/** Internal RTTimeNanoTS worker (assembly). */ +typedef DECLCALLBACK(uint64_t) FNTIMENANOTSINTERNAL(PRTTIMENANOTSDATA pData); +/** Pointer to an internal RTTimeNanoTS worker (assembly). */ +typedef FNTIMENANOTSINTERNAL *PFNTIMENANOTSINTERNAL; +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarNoDelta(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarNoDelta(PRTTIMENANOTSDATA pData); +#ifdef IN_RING3 +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim(PRTTIMENANOTSDATA pData); +#else +RTDECL(uint64_t) RTTimeNanoTSLegacyAsync(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDelta(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsync(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDelta(PRTTIMENANOTSDATA pData); +#endif + +/** @} */ + + +/** + * Gets the current nanosecond timestamp. + * + * This differs from RTTimeNanoTS in that it will use system APIs and not do any + * resolution or performance optimizations. + * + * @returns nanosecond timestamp. + */ +RTDECL(uint64_t) RTTimeSystemNanoTS(void); + +/** + * Gets the current millisecond timestamp. + * + * This differs from RTTimeNanoTS in that it will use system APIs and not do any + * resolution or performance optimizations. + * + * @returns millisecond timestamp. + */ +RTDECL(uint64_t) RTTimeSystemMilliTS(void); + +/** + * Get the nanosecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramNanoTS(void); + +/** + * Get the microsecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramMicroTS(void); + +/** + * Get the millisecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramMilliTS(void); + +/** + * Get the second timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint32_t) RTTimeProgramSecTS(void); + +/** + * Get the RTTimeNanoTS() of when the program started. + * + * @returns Program startup timestamp. + */ +RTDECL(uint64_t) RTTimeProgramStartNanoTS(void); + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/timer.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/timer.h @@ -0,0 +1,387 @@ +/** @file + * IPRT - Timer. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_timer_h +#define ___iprt_timer_h + + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_timer RTTimer - Timer + * + * The IPRT timer API provides a simple abstraction of recurring and one-shot callback timers. + * + * Because of the great variation in the native APIs and the quality of + * the service delivered by those native APIs, the timers are operated + * on at best effort basis. + * + * All the ring-3 implementations are naturally at the mercy of the scheduler, + * which means that the callback rate might vary quite a bit and we might skip + * ticks. Many systems have a restriction that a process can only have one + * timer. IPRT currently makes no efforts at multiplexing timers in those kind + * of situations and will simply fail if you try to create more than one timer. + * + * Things are generally better in ring-0. The implementations will use interrupt + * time callbacks wherever available, and if not, resort to a high priority + * kernel thread. + * + * @ingroup grp_rt + * @{ + */ + + +/** Timer handle. */ +typedef struct RTTIMER *PRTTIMER; + +/** + * Timer callback function. + * + * The context this call is made in varies with different platforms and + * kernel / user mode IPRT. + * + * In kernel mode a timer callback should not waste time, it shouldn't + * waste stack and it should be prepared that some APIs might not work + * correctly because of weird OS restrictions in this context that we + * haven't discovered and avoided yet. Please fix those APIs so they + * at least avoid panics and weird behaviour. + * + * @param pTimer Timer handle. + * @param pvUser User argument. + * @param iTick The current timer tick. This is always 1 on the first + * callback after the timer was started. For omni timers + * this will be 1 when a cpu comes back online. + */ +typedef DECLCALLBACK(void) FNRTTIMER(PRTTIMER pTimer, void *pvUser, uint64_t iTick); +/** Pointer to FNRTTIMER() function. */ +typedef FNRTTIMER *PFNRTTIMER; + + +/** + * Create a recurring timer. + * + * @returns iprt status code. + * @param ppTimer Where to store the timer handle. + * @param uMilliesInterval Milliseconds between the timer ticks. + * This is rounded up to the system granularity. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerCreateEx, RTTimerStart, RTTimerStop, RTTimerChangeInterval, + * RTTimerDestroy, RTTimerGetSystemGranularity + */ +RTDECL(int) RTTimerCreate(PRTTIMER *ppTimer, unsigned uMilliesInterval, PFNRTTIMER pfnTimer, void *pvUser); + +/** + * Create a suspended timer. + * + * @returns iprt status code. + * @retval VERR_NOT_SUPPORTED if an unsupported flag was specfied. + * @retval VERR_CPU_NOT_FOUND if the specified CPU + * + * @param ppTimer Where to store the timer handle. + * @param u64NanoInterval The interval between timer ticks specified in nanoseconds if it's + * a recurring timer. This is rounded to the fit the system timer granularity. + * For one shot timers, pass 0. + * @param fFlags Timer flags. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerStart, RTTimerStop, RTTimerChangeInterval, RTTimerDestroy, + * RTTimerGetSystemGranularity, RTTimerCanDoHighResolution + */ +RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMER pfnTimer, void *pvUser); + +/** @name RTTimerCreateEx flags + * @{ */ +/** Any CPU is fine. (Must be 0.) */ +#define RTTIMER_FLAGS_CPU_ANY UINT32_C(0) +/** One specific CPU */ +#define RTTIMER_FLAGS_CPU_SPECIFIC RT_BIT(16) +/** Omni timer, run on all online CPUs. + * @remarks The timer callback isn't necessarily running at the time same time on each CPU. */ +#define RTTIMER_FLAGS_CPU_ALL ( RTTIMER_FLAGS_CPU_MASK | RTTIMER_FLAGS_CPU_SPECIFIC ) +/** CPU mask. */ +#define RTTIMER_FLAGS_CPU_MASK UINT32_C(0xffff) +/** Desire a high resolution timer that works with RTTimerChangeInterval and + * isn't subject to RTTimerGetSystemGranularity rounding. + * @remarks This is quietly ignored if the feature isn't supported. */ +#define RTTIMER_FLAGS_HIGH_RES RT_BIT(17) +/** Convert a CPU set index (0-based) to RTTimerCreateEx flags. + * This will automatically OR in the RTTIMER_FLAGS_CPU_SPECIFIC flag. */ +#define RTTIMER_FLAGS_CPU(iCpu) ( (iCpu) | RTTIMER_FLAGS_CPU_SPECIFIC ) +/** Macro that validates the flags. */ +#define RTTIMER_FLAGS_ARE_VALID(fFlags) \ + ( !((fFlags) & ~((fFlags) & RTTIMER_FLAGS_CPU_SPECIFIC ? UINT32_C(0x3ffff) : UINT32_C(0x30000))) ) +/** @} */ + +/** + * Stops and destroys a running timer. + * + * @returns iprt status code. + * @retval VERR_INVALID_CONTEXT if executing at the wrong IRQL (windows), PIL + * (solaris), or similar. Portable code does not destroy timers with + * preemption (or interrupts) disabled. + * @param pTimer Timer to stop and destroy. NULL is ok. + */ +RTDECL(int) RTTimerDestroy(PRTTIMER pTimer); + +/** + * Starts a suspended timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_ACTIVE if the timer isn't suspended. + * @retval VERR_CPU_OFFLINE if the CPU the timer was created to run on is not + * online (this include the case where it's not present in the + * system). + * + * @param pTimer The timer to activate. + * @param u64First The RTTimeSystemNanoTS() for when the timer should start + * firing (relative). If 0 is specified, the timer will + * fire ASAP. + * @remarks When RTTimerCanDoHighResolution returns true, this API is + * callable with preemption disabled in ring-0. + * @see RTTimerStop + */ +RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First); + +/** + * Stops an active timer. + * + * @todo May return while the timer callback function is being services on + * some platforms (ring-0 Windows, ring-0 linux). This needs to be + * addressed at some point... + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_SUSPENDED if the timer isn't active. + * @retval VERR_NOT_SUPPORTED if the IPRT implementation doesn't support + * stopping a timer. + * + * @param pTimer The timer to suspend. + * @remarks Can be called from the timer callback function to stop it. + * @see RTTimerStart + */ +RTDECL(int) RTTimerStop(PRTTIMER pTimer); + +/** + * Changes the interval of a periodic timer. + * + * If the timer is active, it is implementation dependent whether the change + * takes place immediately or after the next tick. To get defined behavior, + * stop the timer before calling this API. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_NOT_SUPPORTED if not supported. + * @retval VERR_INVALID_STATE if not a periodic timer. + * + * @param pTimer The timer to activate. + * @param u64NanoInterval The interval between timer ticks specified in + * nanoseconds. This is rounded to the fit the + * system timer granularity. + * @remarks Callable from the timer callback. Callable with preemption + * disabled in ring-0. + */ +RTDECL(int) RTTimerChangeInterval(PRTTIMER pTimer, uint64_t u64NanoInterval); + +/** + * Gets the (current) timer granularity of the system. + * + * @returns The timer granularity of the system in nanoseconds. + * @see RTTimerRequestSystemGranularity + */ +RTDECL(uint32_t) RTTimerGetSystemGranularity(void); + +/** + * Requests a specific system timer granularity. + * + * Successfull calls to this API must be coupled with the exact same number of + * calls to RTTimerReleaseSystemGranularity() in order to undo any changes made. + * + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the requested value isn't supported by the host platform + * or if the host platform doesn't support modifying the system timer granularity. + * @retval VERR_PERMISSION_DENIED if the caller doesn't have the necessary privilege to + * modify the system timer granularity. + * + * @param u32Request The requested system timer granularity in nanoseconds. + * @param pu32Granted Where to store the granted system granularity. This is the value + * that should be passed to RTTimerReleaseSystemGranularity(). It + * is what RTTimerGetSystemGranularity() would return immediately + * after the change was made. + * + * The value differ from the request in two ways; rounding and + * scale. Meaning if your request is for 10.000.000 you might + * be granted 10.000.055 or 1.000.000. + * @see RTTimerReleaseSystemGranularity, RTTimerGetSystemGranularity + */ +RTDECL(int) RTTimerRequestSystemGranularity(uint32_t u32Request, uint32_t *pu32Granted); + +/** + * Releases a system timer granularity grant acquired by RTTimerRequestSystemGranularity(). + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the host platform doesn't have any way of modifying + * the system timer granularity. + * @retval VERR_WRONG_ORDER if nobody call RTTimerRequestSystemGranularity() with the + * given grant value. + * @param u32Granted The granted system granularity. + * @see RTTimerRequestSystemGranularity + */ +RTDECL(int) RTTimerReleaseSystemGranularity(uint32_t u32Granted); + +/** + * Checks if the system support high resolution timers. + * + * The kind of support we are checking for is the kind of dynamically + * reprogrammable timers employed by recent Solaris and Linux kernels. It also + * implies that we can specify microsecond (or even better maybe) intervals + * without getting into trouble. + * + * @returns true if supported, false it not. + * + * @remarks Returning true also means RTTimerChangeInterval must be implemented + * and RTTimerStart be callable with preemption disabled. + */ +RTDECL(bool) RTTimerCanDoHighResolution(void); + + +/** + * Timer callback function for low res timers. + * + * This is identical to FNRTTIMER except for the first parameter, so + * see FNRTTIMER for details. + * + * @param hTimerLR The low resolution timer handle. + * @param pvUser User argument. + * @param iTick The current timer tick. This is always 1 on the first + * callback after the timer was started. Will jump if we've + * skipped ticks when lagging behind. + */ +typedef DECLCALLBACK(void) FNRTTIMERLR(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick); +/** Pointer to FNRTTIMER() function. */ +typedef FNRTTIMERLR *PFNRTTIMERLR; + + +/** + * Create a recurring low resolution timer. + * + * @returns iprt status code. + * @param phTimerLR Where to store the timer handle. + * @param uMilliesInterval Milliseconds between the timer ticks, at least 100 ms. + * If higher resolution is required use the other API. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerLRCreateEx, RTTimerLRDestroy, RTTimerLRStop + */ +RTDECL(int) RTTimerLRCreate(PRTTIMERLR phTimerLR, uint32_t uMilliesInterval, PFNRTTIMERLR pfnTimer, void *pvUser); + +/** + * Create a suspended low resolution timer. + * + * @returns iprt status code. + * @retval VERR_NOT_SUPPORTED if an unsupported flag was specfied. + * + * @param phTimerLR Where to store the timer handle. + * @param u64NanoInterval The interval between timer ticks specified in nanoseconds if it's + * a recurring timer, the minimum for is 100000000 ns. + * For one shot timers, pass 0. + * @param fFlags Timer flags. Same as RTTimerCreateEx. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerLRStart, RTTimerLRStop, RTTimerLRDestroy + */ +RTDECL(int) RTTimerLRCreateEx(PRTTIMERLR phTimerLR, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMERLR pfnTimer, void *pvUser); + +/** + * Stops and destroys a running low resolution timer. + * + * @returns iprt status code. + * @param hTimerLR The low resolution timer to stop and destroy. + * NIL_RTTIMERLR is accepted. + */ +RTDECL(int) RTTimerLRDestroy(RTTIMERLR hTimerLR); + +/** + * Starts a low resolution timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_ACTIVE if the timer isn't suspended. + * + * @param hTimerLR The low resolution timer to activate. + * @param u64First The RTTimeSystemNanoTS() for when the timer should start + * firing (relative), the minimum is 100000000 ns. + * If 0 is specified, the timer will fire ASAP. + * + * @see RTTimerLRStop + */ +RTDECL(int) RTTimerLRStart(RTTIMERLR hTimerLR, uint64_t u64First); + +/** + * Stops an active low resolution timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_SUSPENDED if the timer isn't active. + * @retval VERR_NOT_SUPPORTED if the IPRT implementation doesn't support stopping a timer. + * + * @param hTimerLR The low resolution timer to suspend. + * + * @see RTTimerLRStart + */ +RTDECL(int) RTTimerLRStop(RTTIMERLR hTimerLR); + +/** + * Changes the interval of a low resolution timer. + * + * If the timer is active, the next tick will occure immediately just like with + * RTTimerLRStart() when u64First parameter is zero. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_NOT_SUPPORTED if not supported. + * + * @param hTimerLR The low resolution timer to update. + * @param u64NanoInterval The interval between timer ticks specified in + * nanoseconds. This is rounded to the fit the + * system timer granularity. + * @remarks Callable from the timer callback. + */ +RTDECL(int) RTTimerLRChangeInterval(RTTIMERLR hTimerLR, uint64_t u64NanoInterval); + +/** @} */ + +RT_C_DECLS_END + +#endif --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/types.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/types.h @@ -0,0 +1,2620 @@ +/** @file + * IPRT - Types. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_types_h +#define ___iprt_types_h + +#include +#include +#include + +/* + * Include standard C types. + */ +#ifndef IPRT_NO_CRT + +# if defined(IN_XF86_MODULE) && !defined(NO_ANSIC) + /* + * Kludge for xfree86 modules: size_t and other types are redefined. + */ +RT_C_DECLS_BEGIN +# include "xf86_ansic.h" +# undef NULL +RT_C_DECLS_END + +# elif defined(RT_OS_DARWIN) && defined(KERNEL) + /* + * Kludge for the darwin kernel: + * stddef.h is missing IIRC. + */ +# ifndef _PTRDIFF_T +# define _PTRDIFF_T + typedef __darwin_ptrdiff_t ptrdiff_t; +# endif +# include + +# elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + /* + * Kludge for the FreeBSD kernel: + * stddef.h and sys/types.h have slightly different offsetof definitions + * when compiling in kernel mode. This is just to make GCC shut up. + */ +# ifndef _STDDEF_H_ +# undef offsetof +# endif +# include +# ifndef _SYS_TYPES_H_ +# undef offsetof +# endif +# include +# ifndef offsetof +# error "offsetof is not defined!" +# endif + +# elif defined(RT_OS_FREEBSD) && HC_ARCH_BITS == 64 && defined(RT_ARCH_X86) + /* + * Kludge for compiling 32-bit code on a 64-bit FreeBSD: + * FreeBSD declares uint64_t and int64_t wrong (long unsigned and long int + * though they need to be long long unsigned and long long int). These + * defines conflict with our declaration in stdint.h. Adding the defines + * below omits the definitions in the system header. + */ +# include +# define _UINT64_T_DECLARED +# define _INT64_T_DECLARED +# define _UINTPTR_T_DECLARED +# define _INTPTR_T_DECLARED +# include + +# elif defined(RT_OS_LINUX) && defined(__KERNEL__) + /* + * Kludge for the linux kernel: + * 1. sys/types.h doesn't mix with the kernel. + * 2. Starting with 2.6.19, linux/types.h typedefs bool and linux/stddef.h + * declares false and true as enum values. + * 3. Starting with 2.6.24, linux/types.h typedefs uintptr_t. + * We work around these issues here and nowhere else. + */ +# include +# if defined(__cplusplus) + typedef bool _Bool; +# endif +# define bool linux_bool +# define true linux_true +# define false linux_false +# define uintptr_t linux_uintptr_t +# include +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33) +# include +# else +# ifndef AUTOCONF_INCLUDED +# include +# endif +# endif +# include +# if defined(__cplusplus) + /* + * Starting with 3.3, appends 'notrace' (which + * expands to __attribute__((no_instrument_function))) to inline, + * __inline and __inline__. Revert that. + */ +# undef inline +# define inline inline +# undef __inline__ +# define __inline__ __inline__ +# undef __inline +# define __inline __inline +# endif +# include +# include + /* + * Starting with 3.4, defines NULL as '((void*)0)' which + * does not work for C++ code. + */ +# undef NULL +# undef uintptr_t +# ifdef __GNUC__ +# if (__GNUC__ * 100 + __GNUC_MINOR__) <= 400 + /* + * does + * #define __inline__ __inline__ __attribute__((always_inline)) + * in some older Linux kernels. Forcing inlining will fail for some RTStrA* + * functions with gcc <= 4.0 due to passing variable argument lists. + */ +# undef __inline__ +# define __inline__ __inline__ +# endif +# endif +# undef false +# undef true +# undef bool +# else +# include +# include +# endif + + +/* Define any types missing from sys/types.h on windows. */ +# ifdef _MSC_VER +# undef ssize_t + typedef intptr_t ssize_t; +# endif + +#else /* no crt */ +# include +#endif /* no crt */ + + + +/** @def NULL + * NULL pointer. + */ +#ifndef NULL +# ifdef __cplusplus +# define NULL 0 +# else +# define NULL ((void*)0) +# endif +#endif + + + +/** @defgroup grp_rt_types IPRT Base Types + * @{ + */ + +/* define wchar_t, we don't wanna include all the wcsstuff to get this. */ +#ifdef _MSC_VER +# ifndef _WCHAR_T_DEFINED + typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +# endif +#endif +#ifdef __GNUC__ +/** @todo wchar_t on GNUC */ +#endif + +/* + * C doesn't have bool, nor does VisualAge for C++ v3.08. + */ +#if !defined(__cplusplus) || (defined(__IBMCPP__) && defined(RT_OS_OS2)) +# if defined(__GNUC__) +# if defined(RT_OS_LINUX) && __GNUC__ < 3 +typedef uint8_t bool; +# elif defined(RT_OS_FREEBSD) +# ifndef __bool_true_false_are_defined +typedef _Bool bool; +# endif +# else +# if (defined(RT_OS_DARWIN) || defined(RT_OS_HAIKU)) && (defined(_STDBOOL_H) || defined(__STDBOOL_H)) +# undef bool +# endif +typedef _Bool bool; +# endif +# else +typedef unsigned char bool; +# endif +# ifndef true +# define true (1) +# endif +# ifndef false +# define false (0) +# endif +#endif + +/** + * 128-bit unsigned integer. + */ +#if defined(__GNUC__) && defined(RT_ARCH_AMD64) +typedef __uint128_t uint128_t; +#else +typedef struct uint128_s +{ +# ifdef RT_BIG_ENDIAN + uint64_t Hi; + uint64_t Lo; +# else + uint64_t Lo; + uint64_t Hi; +# endif +} uint128_t; +#endif + + +/** + * 128-bit signed integer. + */ +#if defined(__GNUC__) && defined(RT_ARCH_AMD64) +typedef __int128_t int128_t; +#else +typedef struct int128_s +{ +# ifdef RT_BIG_ENDIAN + int64_t Hi; + uint64_t Lo; +# else + uint64_t Lo; + int64_t Hi; +# endif +} int128_t; +#endif + + +/** + * 16-bit unsigned integer union. + */ +typedef union RTUINT16U +{ + /** natural view. */ + uint16_t u; + + /** 16-bit view. */ + uint16_t au16[1]; + /** 8-bit view. */ + uint8_t au8[2]; + /** 16-bit hi/lo view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint8_t Hi; + uint8_t Lo; +#else + uint8_t Lo; + uint8_t Hi; +#endif + } s; +} RTUINT16U; +/** Pointer to a 16-bit unsigned integer union. */ +typedef RTUINT16U *PRTUINT16U; +/** Pointer to a const 32-bit unsigned integer union. */ +typedef const RTUINT16U *PCRTUINT16U; + + +/** + * 32-bit unsigned integer union. + */ +typedef union RTUINT32U +{ + /** natural view. */ + uint32_t u; + /** Hi/Low view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t Hi; + uint16_t Lo; +#else + uint16_t Lo; + uint16_t Hi; +#endif + } s; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; +#endif + } Words; + + /** 32-bit view. */ + uint32_t au32[1]; + /** 16-bit view. */ + uint16_t au16[2]; + /** 8-bit view. */ + uint8_t au8[4]; +} RTUINT32U; +/** Pointer to a 32-bit unsigned integer union. */ +typedef RTUINT32U *PRTUINT32U; +/** Pointer to a const 32-bit unsigned integer union. */ +typedef const RTUINT32U *PCRTUINT32U; + + +/** + * 64-bit unsigned integer union. + */ +typedef union RTUINT64U +{ + /** Natural view. */ + uint64_t u; + /** Hi/Low view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t Hi; + uint32_t Lo; +#else + uint32_t Lo; + uint32_t Hi; +#endif + } s; + /** Double-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t dw1; + uint32_t dw0; +#else + uint32_t dw0; + uint32_t dw1; +#endif + } DWords; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w3; + uint16_t w2; + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; + uint16_t w2; + uint16_t w3; +#endif + } Words; + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} RTUINT64U; +/** Pointer to a 64-bit unsigned integer union. */ +typedef RTUINT64U *PRTUINT64U; +/** Pointer to a const 64-bit unsigned integer union. */ +typedef const RTUINT64U *PCRTUINT64U; + + +/** + * 128-bit unsigned integer union. + */ +#pragma pack(1) +typedef union RTUINT128U +{ + /** Hi/Low view. + * @remarks We put this first so we can have portable initializers + * (RTUINT128_INIT) */ + struct + { +#ifdef RT_BIG_ENDIAN + uint64_t Hi; + uint64_t Lo; +#else + uint64_t Lo; + uint64_t Hi; +#endif + } s; + + /** Natural view. + * WARNING! This member depends on the compiler supporting 128-bit stuff. */ + uint128_t u; + + /** Quad-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint64_t qw1; + uint64_t qw0; +#else + uint64_t qw0; + uint64_t qw1; +#endif + } QWords; + /** Double-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t dw3; + uint32_t dw2; + uint32_t dw1; + uint32_t dw0; +#else + uint32_t dw0; + uint32_t dw1; + uint32_t dw2; + uint32_t dw3; +#endif + } DWords; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w7; + uint16_t w6; + uint16_t w5; + uint16_t w4; + uint16_t w3; + uint16_t w2; + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; + uint16_t w2; + uint16_t w3; + uint16_t w4; + uint16_t w5; + uint16_t w6; + uint16_t w7; +#endif + } Words; + + /** 64-bit view. */ + uint64_t au64[2]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 8-bit view. */ + uint8_t au8[16]; +} RTUINT128U; +#pragma pack() +/** Pointer to a 64-bit unsigned integer union. */ +typedef RTUINT128U *PRTUINT128U; +/** Pointer to a const 64-bit unsigned integer union. */ +typedef const RTUINT128U *PCRTUINT128U; + +/** @def RTUINT128_INIT + * Portable RTUINT128U initializer. */ +#ifdef RT_BIG_ENDIAN +# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Hi, a_Lo } } +#else +# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Lo, a_Hi } } +#endif + +/** @def RTUINT128_INIT_C + * Portable RTUINT128U initializer for 64-bit constants. */ +#ifdef RT_BIG_ENDIAN +# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Hi), UINT64_C(a_Lo) } } +#else +# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Lo), UINT64_C(a_Hi) } } +#endif + + +/** + * Double precision floating point format (64-bit). + */ +typedef union RTFLOAT64U +{ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + /** Double view. */ + double rd; +#endif + /** Format using regular bitfields. */ + struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + uint32_t fSign : 1; + /** The exponent (offseted by 1023). */ + uint32_t uExponent : 11; + /** The fraction, bits 32 thru 51. */ + uint32_t u20FractionHigh : 20; + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow; +# else + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow; + /** The fraction, bits 32 thru 51. */ + uint32_t u20FractionHigh : 20; + /** The exponent (offseted by 1023). */ + uint32_t uExponent : 11; + /** The sign indicator. */ + uint32_t fSign : 1; +# endif + } s; + +#ifdef RT_COMPILER_GROKS_64BIT_BITFIELDS + /** Format using 64-bit bitfields. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint64_t fSign : 1; + /** The exponent (offseted by 1023). */ + RT_GCC_EXTENSION uint64_t uExponent : 11; + /** The fraction. */ + RT_GCC_EXTENSION uint64_t uFraction : 52; +# else + /** The fraction. */ + RT_GCC_EXTENSION uint64_t uFraction : 52; + /** The exponent (offseted by 1023). */ + RT_GCC_EXTENSION uint64_t uExponent : 11; + /** The sign indicator. */ + RT_GCC_EXTENSION uint64_t fSign : 1; +# endif + } s64; +#endif + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} RTFLOAT64U; +/** Pointer to a double precision floating point format union. */ +typedef RTFLOAT64U *PRTFLOAT64U; +/** Pointer to a const double precision floating point format union. */ +typedef const RTFLOAT64U *PCRTFLOAT64U; + + +#if !defined(__IBMCPP__) && !defined(__IBMC__) + +/** + * Extended Double precision floating point format (80-bit). + */ +#pragma pack(1) +typedef union RTFLOAT80U +{ + /** Format using bitfields. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The mantissa. */ + uint64_t u64Mantissa; +# else + /** The mantissa. */ + uint64_t u64Mantissa; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +# endif + } s; + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[5]; + /** 8-bit view. */ + uint8_t au8[10]; +} RTFLOAT80U; +#pragma pack() +/** Pointer to a extended precision floating point format union. */ +typedef RTFLOAT80U *PRTFLOAT80U; +/** Pointer to a const extended precision floating point format union. */ +typedef const RTFLOAT80U *PCRTFLOAT80U; + + +/** + * A variant of RTFLOAT80U that may be larger than 80-bits depending on how the + * compiler implements long double. + */ +#pragma pack(1) +typedef union RTFLOAT80U2 +{ +#ifdef RT_COMPILER_WITH_80BIT_LONG_DOUBLE + /** Long double view. */ + long double lrd; +#endif + /** Format using bitfields. */ + RT_GCC_EXTENSION struct + { +#ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The mantissa. */ + uint64_t u64Mantissa; +#else + /** The mantissa. */ + uint64_t u64Mantissa; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +#endif + } s; + + /** Bitfield exposing the J bit and the fraction. */ + RT_GCC_EXTENSION struct + { +#ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The J bit, aka the integer bit. */ + uint32_t fInteger; + /** The fraction, bits 32 thru 62. */ + uint32_t u31FractionHigh : 31; + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow : 32; +#else + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow : 32; + /** The fraction, bits 32 thru 62. */ + uint32_t u31FractionHigh : 31; + /** The J bit, aka the integer bit. */ + uint32_t fInteger; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +#endif + } sj; + +#ifdef RT_COMPILER_GROKS_64BIT_BITFIELDS + /** 64-bit bitfields exposing the J bit and the fraction. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The J bit, aka the integer bit. */ + RT_GCC_EXTENSION uint64_t fInteger : 1; + /** The fraction. */ + RT_GCC_EXTENSION uint64_t u63Fraction : 63; +# else + /** The fraction. */ + RT_GCC_EXTENSION uint64_t u63Fraction : 63; + /** The J bit, aka the integer bit. */ + RT_GCC_EXTENSION uint64_t fInteger : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +# endif + } sj64; +#endif + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[5]; + /** 8-bit view. */ + uint8_t au8[10]; +} RTFLOAT80U2; +#pragma pack() +/** Pointer to a extended precision floating point format union, 2nd + * variant. */ +typedef RTFLOAT80U2 *PRTFLOAT80U2; +/** Pointer to a const extended precision floating point format union, 2nd + * variant. */ +typedef const RTFLOAT80U2 *PCRTFLOAT80U2; + +#endif /* uint16_t bitfields doesn't work */ + + +/** Generic function type. + * @see PFNRT + */ +typedef DECLCALLBACK(void) FNRT(void); + +/** Generic function pointer. + * With -pedantic, gcc-4 complains when casting a function to a data object, for + * example: + * + * @code + * void foo(void) + * { + * } + * + * void *bar = (void *)foo; + * @endcode + * + * The compiler would warn with "ISO C++ forbids casting between + * pointer-to-function and pointer-to-object". The purpose of this warning is + * not to bother the programmer but to point out that he is probably doing + * something dangerous, assigning a pointer to executable code to a data object. + */ +typedef FNRT *PFNRT; + +/** Millisecond interval. */ +typedef uint32_t RTMSINTERVAL; +/** Pointer to a millisecond interval. */ +typedef RTMSINTERVAL *PRTMSINTERVAL; +/** Pointer to a const millisecond interval. */ +typedef const RTMSINTERVAL *PCRTMSINTERVAL; + +/** Pointer to a time spec structure. */ +typedef struct RTTIMESPEC *PRTTIMESPEC; +/** Pointer to a const time spec structure. */ +typedef const struct RTTIMESPEC *PCRTTIMESPEC; + + + +/** @defgroup grp_rt_types_both Common Guest and Host Context Basic Types + * @{ + */ + +/** Signed integer which can contain both GC and HC pointers. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +typedef int32_t RTINTPTR; +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +typedef int64_t RTINTPTR; +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** Pointer to signed integer which can contain both GC and HC pointers. */ +typedef RTINTPTR *PRTINTPTR; +/** Pointer const to signed integer which can contain both GC and HC pointers. */ +typedef const RTINTPTR *PCRTINTPTR; +/** The maximum value the RTINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTINTPTR_MAX INT32_MAX +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTINTPTR_MAX INT64_MAX +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** The minimum value the RTINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTINTPTR_MIN INT32_MIN +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTINTPTR_MIN INT64_MIN +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif + +/** Unsigned integer which can contain both GC and HC pointers. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +typedef uint32_t RTUINTPTR; +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +typedef uint64_t RTUINTPTR; +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** Pointer to unsigned integer which can contain both GC and HC pointers. */ +typedef RTUINTPTR *PRTUINTPTR; +/** Pointer const to unsigned integer which can contain both GC and HC pointers. */ +typedef const RTUINTPTR *PCRTUINTPTR; +/** The maximum value the RTUINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTUINTPTR_MAX UINT32_MAX +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTUINTPTR_MAX UINT64_MAX +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif + +/** Signed integer. */ +typedef int32_t RTINT; +/** Pointer to signed integer. */ +typedef RTINT *PRTINT; +/** Pointer to const signed integer. */ +typedef const RTINT *PCRTINT; + +/** Unsigned integer. */ +typedef uint32_t RTUINT; +/** Pointer to unsigned integer. */ +typedef RTUINT *PRTUINT; +/** Pointer to const unsigned integer. */ +typedef const RTUINT *PCRTUINT; + +/** A file offset / size (off_t). */ +typedef int64_t RTFOFF; +/** Pointer to a file offset / size. */ +typedef RTFOFF *PRTFOFF; +/** The max value for RTFOFF. */ +#define RTFOFF_MAX INT64_MAX +/** The min value for RTFOFF. */ +#define RTFOFF_MIN INT64_MIN + +/** File mode (see iprt/fs.h). */ +typedef uint32_t RTFMODE; +/** Pointer to file mode. */ +typedef RTFMODE *PRTFMODE; + +/** Device unix number. */ +typedef uint32_t RTDEV; +/** Pointer to a device unix number. */ +typedef RTDEV *PRTDEV; + +/** @name RTDEV Macros + * @{ */ +/** + * Our makedev macro. + * @returns RTDEV + * @param uMajor The major device number. + * @param uMinor The minor device number. + */ +#define RTDEV_MAKE(uMajor, uMinor) ((RTDEV)( ((RTDEV)(uMajor) << 24) | (uMinor & UINT32_C(0x00ffffff)) )) +/** + * Get the major device node number from an RTDEV type. + * @returns The major device number of @a uDev + * @param uDev The device number. + */ +#define RTDEV_MAJOR(uDev) ((uDev) >> 24) +/** + * Get the minor device node number from an RTDEV type. + * @returns The minor device number of @a uDev + * @param uDev The device number. + */ +#define RTDEV_MINOR(uDev) ((uDev) & UINT32_C(0x00ffffff)) +/** @} */ + +/** i-node number. */ +typedef uint64_t RTINODE; +/** Pointer to a i-node number. */ +typedef RTINODE *PRTINODE; + +/** User id. */ +typedef uint32_t RTUID; +/** Pointer to a user id. */ +typedef RTUID *PRTUID; +/** NIL user id. + * @todo check this for portability! */ +#define NIL_RTUID (~(RTUID)0) + +/** Group id. */ +typedef uint32_t RTGID; +/** Pointer to a group id. */ +typedef RTGID *PRTGID; +/** NIL group id. + * @todo check this for portability! */ +#define NIL_RTGID (~(RTGID)0) + +/** I/O Port. */ +typedef uint16_t RTIOPORT; +/** Pointer to I/O Port. */ +typedef RTIOPORT *PRTIOPORT; +/** Pointer to const I/O Port. */ +typedef const RTIOPORT *PCRTIOPORT; + +/** Selector. */ +typedef uint16_t RTSEL; +/** Pointer to selector. */ +typedef RTSEL *PRTSEL; +/** Pointer to const selector. */ +typedef const RTSEL *PCRTSEL; +/** Max selector value. */ +#define RTSEL_MAX UINT16_MAX + +/** Far 16-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR16 +{ + uint16_t off; + RTSEL sel; +} RTFAR16; +#pragma pack() +/** Pointer to Far 16-bit pointer. */ +typedef RTFAR16 *PRTFAR16; +/** Pointer to const Far 16-bit pointer. */ +typedef const RTFAR16 *PCRTFAR16; + +/** Far 32-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR32 +{ + uint32_t off; + RTSEL sel; +} RTFAR32; +#pragma pack() +/** Pointer to Far 32-bit pointer. */ +typedef RTFAR32 *PRTFAR32; +/** Pointer to const Far 32-bit pointer. */ +typedef const RTFAR32 *PCRTFAR32; + +/** Far 64-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR64 +{ + uint64_t off; + RTSEL sel; +} RTFAR64; +#pragma pack() +/** Pointer to Far 64-bit pointer. */ +typedef RTFAR64 *PRTFAR64; +/** Pointer to const Far 64-bit pointer. */ +typedef const RTFAR64 *PCRTFAR64; + +/** @} */ + + +/** @defgroup grp_rt_types_hc Host Context Basic Types + * @{ + */ + +/** HC Natural signed integer. + * @deprecated silly type. */ +typedef int32_t RTHCINT; +/** Pointer to HC Natural signed integer. + * @deprecated silly type. */ +typedef RTHCINT *PRTHCINT; +/** Pointer to const HC Natural signed integer. + * @deprecated silly type. */ +typedef const RTHCINT *PCRTHCINT; + +/** HC Natural unsigned integer. + * @deprecated silly type. */ +typedef uint32_t RTHCUINT; +/** Pointer to HC Natural unsigned integer. + * @deprecated silly type. */ +typedef RTHCUINT *PRTHCUINT; +/** Pointer to const HC Natural unsigned integer. + * @deprecated silly type. */ +typedef const RTHCUINT *PCRTHCUINT; + + +/** Signed integer which can contain a HC pointer. */ +#if HC_ARCH_BITS == 32 +typedef int32_t RTHCINTPTR; +#elif HC_ARCH_BITS == 64 +typedef int64_t RTHCINTPTR; +#else +# error Unsupported HC_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC pointer. */ +typedef RTHCINTPTR *PRTHCINTPTR; +/** Pointer to const signed integer which can contain a HC pointer. */ +typedef const RTHCINTPTR *PCRTHCINTPTR; +/** Max RTHCINTPTR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCINTPTR_MAX INT32_MAX +#else +# define RTHCINTPTR_MAX INT64_MAX +#endif +/** Min RTHCINTPTR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCINTPTR_MIN INT32_MIN +#else +# define RTHCINTPTR_MIN INT64_MIN +#endif + +/** Signed integer which can contain a HC ring-3 pointer. */ +#if R3_ARCH_BITS == 32 +typedef int32_t RTR3INTPTR; +#elif R3_ARCH_BITS == 64 +typedef int64_t RTR3INTPTR; +#else +# error Unsupported R3_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC ring-3 pointer. */ +typedef RTR3INTPTR *PRTR3INTPTR; +/** Pointer to const signed integer which can contain a HC ring-3 pointer. */ +typedef const RTR3INTPTR *PCRTR3INTPTR; +/** Max RTR3INTPTR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3INTPTR_MAX INT32_MAX +#else +# define RTR3INTPTR_MAX INT64_MAX +#endif +/** Min RTR3INTPTR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3INTPTR_MIN INT32_MIN +#else +# define RTR3INTPTR_MIN INT64_MIN +#endif + +/** Signed integer which can contain a HC ring-0 pointer. */ +#if R0_ARCH_BITS == 32 +typedef int32_t RTR0INTPTR; +#elif R0_ARCH_BITS == 64 +typedef int64_t RTR0INTPTR; +#else +# error Unsupported R0_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC ring-0 pointer. */ +typedef RTR0INTPTR *PRTR0INTPTR; +/** Pointer to const signed integer which can contain a HC ring-0 pointer. */ +typedef const RTR0INTPTR *PCRTR0INTPTR; +/** Max RTR0INTPTR value. */ +#if R0_ARCH_BITS == 32 +# define RTR0INTPTR_MAX INT32_MAX +#else +# define RTR0INTPTR_MAX INT64_MAX +#endif +/** Min RTHCINTPTR value. */ +#if R0_ARCH_BITS == 32 +# define RTR0INTPTR_MIN INT32_MIN +#else +# define RTR0INTPTR_MIN INT64_MIN +#endif + + +/** Unsigned integer which can contain a HC pointer. */ +#if HC_ARCH_BITS == 32 +typedef uint32_t RTHCUINTPTR; +#elif HC_ARCH_BITS == 64 +typedef uint64_t RTHCUINTPTR; +#else +# error Unsupported HC_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC pointer. */ +typedef RTHCUINTPTR *PRTHCUINTPTR; +/** Pointer to unsigned integer which can contain a HC pointer. */ +typedef const RTHCUINTPTR *PCRTHCUINTPTR; +/** Max RTHCUINTTPR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCUINTPTR_MAX UINT32_MAX +#else +# define RTHCUINTPTR_MAX UINT64_MAX +#endif + +/** Unsigned integer which can contain a HC ring-3 pointer. */ +#if R3_ARCH_BITS == 32 +typedef uint32_t RTR3UINTPTR; +#elif R3_ARCH_BITS == 64 +typedef uint64_t RTR3UINTPTR; +#else +# error Unsupported R3_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */ +typedef RTR3UINTPTR *PRTR3UINTPTR; +/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */ +typedef const RTR3UINTPTR *PCRTR3UINTPTR; +/** Max RTHCUINTTPR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3UINTPTR_MAX UINT32_MAX +#else +# define RTR3UINTPTR_MAX UINT64_MAX +#endif + +/** Unsigned integer which can contain a HC ring-0 pointer. */ +#if R0_ARCH_BITS == 32 +typedef uint32_t RTR0UINTPTR; +#elif R0_ARCH_BITS == 64 +typedef uint64_t RTR0UINTPTR; +#else +# error Unsupported R0_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */ +typedef RTR0UINTPTR *PRTR0UINTPTR; +/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */ +typedef const RTR0UINTPTR *PCRTR0UINTPTR; +/** Max RTR0UINTTPR value. */ +#if HC_ARCH_BITS == 32 +# define RTR0UINTPTR_MAX UINT32_MAX +#else +# define RTR0UINTPTR_MAX UINT64_MAX +#endif + + +/** Host Physical Memory Address. */ +typedef uint64_t RTHCPHYS; +/** Pointer to Host Physical Memory Address. */ +typedef RTHCPHYS *PRTHCPHYS; +/** Pointer to const Host Physical Memory Address. */ +typedef const RTHCPHYS *PCRTHCPHYS; +/** @def NIL_RTHCPHYS + * NIL HC Physical Address. + * NIL_RTHCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. + */ +#define NIL_RTHCPHYS (~(RTHCPHYS)0) +/** Max RTHCPHYS value. */ +#define RTHCPHYS_MAX UINT64_MAX + + +/** HC pointer. */ +#ifndef IN_RC +typedef void * RTHCPTR; +#else +typedef RTHCUINTPTR RTHCPTR; +#endif +/** Pointer to HC pointer. */ +typedef RTHCPTR *PRTHCPTR; +/** Pointer to const HC pointer. */ +typedef const RTHCPTR *PCRTHCPTR; +/** @def NIL_RTHCPTR + * NIL HC pointer. + */ +#define NIL_RTHCPTR ((RTHCPTR)0) +/** Max RTHCPTR value. */ +#define RTHCPTR_MAX ((RTHCPTR)RTHCUINTPTR_MAX) + + +/** HC ring-3 pointer. */ +#ifdef IN_RING3 +typedef void * RTR3PTR; +#else +typedef RTR3UINTPTR RTR3PTR; +#endif +/** Pointer to HC ring-3 pointer. */ +typedef RTR3PTR *PRTR3PTR; +/** Pointer to const HC ring-3 pointer. */ +typedef const RTR3PTR *PCRTR3PTR; +/** @def NIL_RTR3PTR + * NIL HC ring-3 pointer. + */ +#ifndef IN_RING3 +# define NIL_RTR3PTR ((RTR3PTR)0) +#else +# define NIL_RTR3PTR (NULL) +#endif +/** Max RTR3PTR value. */ +#define RTR3PTR_MAX ((RTR3PTR)RTR3UINTPTR_MAX) + +/** HC ring-0 pointer. */ +#ifdef IN_RING0 +typedef void * RTR0PTR; +#else +typedef RTR0UINTPTR RTR0PTR; +#endif +/** Pointer to HC ring-0 pointer. */ +typedef RTR0PTR *PRTR0PTR; +/** Pointer to const HC ring-0 pointer. */ +typedef const RTR0PTR *PCRTR0PTR; +/** @def NIL_RTR0PTR + * NIL HC ring-0 pointer. + */ +#ifndef IN_RING0 +# define NIL_RTR0PTR ((RTR0PTR)0) +#else +# define NIL_RTR0PTR (NULL) +#endif +/** Max RTR3PTR value. */ +#define RTR0PTR_MAX ((RTR0PTR)RTR0UINTPTR_MAX) + + +/** Unsigned integer register in the host context. */ +#if HC_ARCH_BITS == 32 +typedef uint32_t RTHCUINTREG; +#elif HC_ARCH_BITS == 64 +typedef uint64_t RTHCUINTREG; +#else +# error "Unsupported HC_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host context. */ +typedef RTHCUINTREG *PRTHCUINTREG; +/** Pointer to a const unsigned integer register in the host context. */ +typedef const RTHCUINTREG *PCRTHCUINTREG; + +/** Unsigned integer register in the host ring-3 context. */ +#if R3_ARCH_BITS == 32 +typedef uint32_t RTR3UINTREG; +#elif R3_ARCH_BITS == 64 +typedef uint64_t RTR3UINTREG; +#else +# error "Unsupported R3_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host ring-3 context. */ +typedef RTR3UINTREG *PRTR3UINTREG; +/** Pointer to a const unsigned integer register in the host ring-3 context. */ +typedef const RTR3UINTREG *PCRTR3UINTREG; + +/** Unsigned integer register in the host ring-3 context. */ +#if R0_ARCH_BITS == 32 +typedef uint32_t RTR0UINTREG; +#elif R0_ARCH_BITS == 64 +typedef uint64_t RTR0UINTREG; +#else +# error "Unsupported R3_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host ring-3 context. */ +typedef RTR0UINTREG *PRTR0UINTREG; +/** Pointer to a const unsigned integer register in the host ring-3 context. */ +typedef const RTR0UINTREG *PCRTR0UINTREG; + +/** @} */ + + +/** @defgroup grp_rt_types_gc Guest Context Basic Types + * @{ + */ + +/** Natural signed integer in the GC. + * @deprecated silly type. */ +#if GC_ARCH_BITS == 32 +typedef int32_t RTGCINT; +#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCINT. */ +typedef int64_t RTGCINT; +#endif +/** Pointer to natural signed integer in GC. + * @deprecated silly type. */ +typedef RTGCINT *PRTGCINT; +/** Pointer to const natural signed integer in GC. + * @deprecated silly type. */ +typedef const RTGCINT *PCRTGCINT; + +/** Natural unsigned integer in the GC. + * @deprecated silly type. */ +#if GC_ARCH_BITS == 32 +typedef uint32_t RTGCUINT; +#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCUINT. */ +typedef uint64_t RTGCUINT; +#endif +/** Pointer to natural unsigned integer in GC. + * @deprecated silly type. */ +typedef RTGCUINT *PRTGCUINT; +/** Pointer to const natural unsigned integer in GC. + * @deprecated silly type. */ +typedef const RTGCUINT *PCRTGCUINT; + +/** Signed integer which can contain a GC pointer. */ +#if GC_ARCH_BITS == 32 +typedef int32_t RTGCINTPTR; +#elif GC_ARCH_BITS == 64 +typedef int64_t RTGCINTPTR; +#endif +/** Pointer to signed integer which can contain a GC pointer. */ +typedef RTGCINTPTR *PRTGCINTPTR; +/** Pointer to const signed integer which can contain a GC pointer. */ +typedef const RTGCINTPTR *PCRTGCINTPTR; + +/** Unsigned integer which can contain a GC pointer. */ +#if GC_ARCH_BITS == 32 +typedef uint32_t RTGCUINTPTR; +#elif GC_ARCH_BITS == 64 +typedef uint64_t RTGCUINTPTR; +#else +# error Unsupported GC_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a GC pointer. */ +typedef RTGCUINTPTR *PRTGCUINTPTR; +/** Pointer to unsigned integer which can contain a GC pointer. */ +typedef const RTGCUINTPTR *PCRTGCUINTPTR; + +/** Unsigned integer which can contain a 32 bits GC pointer. */ +typedef uint32_t RTGCUINTPTR32; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef RTGCUINTPTR32 *PRTGCUINTPTR32; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef const RTGCUINTPTR32 *PCRTGCUINTPTR32; + +/** Unsigned integer which can contain a 64 bits GC pointer. */ +typedef uint64_t RTGCUINTPTR64; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef RTGCUINTPTR64 *PRTGCUINTPTR64; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef const RTGCUINTPTR64 *PCRTGCUINTPTR64; + +/** Guest Physical Memory Address.*/ +typedef uint64_t RTGCPHYS; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS *PRTGCPHYS; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS *PCRTGCPHYS; +/** @def NIL_RTGCPHYS + * NIL GC Physical Address. + * NIL_RTGCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS (~(RTGCPHYS)0U) +/** Max guest physical memory address value. */ +#define RTGCPHYS_MAX UINT64_MAX + + +/** Guest Physical Memory Address; limited to 32 bits.*/ +typedef uint32_t RTGCPHYS32; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS32 *PRTGCPHYS32; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS32 *PCRTGCPHYS32; +/** @def NIL_RTGCPHYS32 + * NIL GC Physical Address. + * NIL_RTGCPHYS32 is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS32 (~(RTGCPHYS32)0) + + +/** Guest Physical Memory Address; limited to 64 bits.*/ +typedef uint64_t RTGCPHYS64; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS64 *PRTGCPHYS64; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS64 *PCRTGCPHYS64; +/** @def NIL_RTGCPHYS64 + * NIL GC Physical Address. + * NIL_RTGCPHYS64 is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS64 (~(RTGCPHYS64)0) + +/** Guest context pointer, 32 bits. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in GC. + */ +typedef RTGCUINTPTR32 RTGCPTR32; +/** Pointer to a guest context pointer. */ +typedef RTGCPTR32 *PRTGCPTR32; +/** Pointer to a const guest context pointer. */ +typedef const RTGCPTR32 *PCRTGCPTR32; +/** @def NIL_RTGCPTR32 + * NIL GC pointer. + */ +#define NIL_RTGCPTR32 ((RTGCPTR32)0) + +/** Guest context pointer, 64 bits. + */ +typedef RTGCUINTPTR64 RTGCPTR64; +/** Pointer to a guest context pointer. */ +typedef RTGCPTR64 *PRTGCPTR64; +/** Pointer to a const guest context pointer. */ +typedef const RTGCPTR64 *PCRTGCPTR64; +/** @def NIL_RTGCPTR64 + * NIL GC pointer. + */ +#define NIL_RTGCPTR64 ((RTGCPTR64)0) + +/** Guest context pointer. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in GC. + */ +#if GC_ARCH_BITS == 64 +typedef RTGCPTR64 RTGCPTR; +/** Pointer to a guest context pointer. */ +typedef PRTGCPTR64 PRTGCPTR; +/** Pointer to a const guest context pointer. */ +typedef PCRTGCPTR64 PCRTGCPTR; +/** @def NIL_RTGCPTR + * NIL GC pointer. + */ +# define NIL_RTGCPTR NIL_RTGCPTR64 +/** Max RTGCPTR value. */ +# define RTGCPTR_MAX UINT64_MAX +#elif GC_ARCH_BITS == 32 +typedef RTGCPTR32 RTGCPTR; +/** Pointer to a guest context pointer. */ +typedef PRTGCPTR32 PRTGCPTR; +/** Pointer to a const guest context pointer. */ +typedef PCRTGCPTR32 PCRTGCPTR; +/** @def NIL_RTGCPTR + * NIL GC pointer. + */ +# define NIL_RTGCPTR NIL_RTGCPTR32 +/** Max RTGCPTR value. */ +# define RTGCPTR_MAX UINT32_MAX +#else +# error "Unsupported GC_ARCH_BITS!" +#endif + +/** Unsigned integer register in the guest context. */ +typedef uint32_t RTGCUINTREG32; +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG32 *PRTGCUINTREG32; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG32 *PCRTGCUINTREG32; + +typedef uint64_t RTGCUINTREG64; +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG64 *PRTGCUINTREG64; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG64 *PCRTGCUINTREG64; + +#if GC_ARCH_BITS == 64 +typedef RTGCUINTREG64 RTGCUINTREG; +#elif GC_ARCH_BITS == 32 +typedef RTGCUINTREG32 RTGCUINTREG; +#else +# error "Unsupported GC_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG *PRTGCUINTREG; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG *PCRTGCUINTREG; + +/** @} */ + +/** @defgroup grp_rt_types_rc Raw mode Context Basic Types + * @{ + */ + +/** Raw mode context pointer; a 32 bits guest context pointer. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in RC. + */ +#ifdef IN_RC +typedef void * RTRCPTR; +#else +typedef uint32_t RTRCPTR; +#endif +/** Pointer to a raw mode context pointer. */ +typedef RTRCPTR *PRTRCPTR; +/** Pointer to a const raw mode context pointer. */ +typedef const RTRCPTR *PCRTRCPTR; +/** @def NIL_RTGCPTR + * NIL RC pointer. + */ +#ifndef IN_RC +# define NIL_RTRCPTR ((RTRCPTR)0) +#else +# define NIL_RTRCPTR (NULL) +#endif +/** @def RTRCPTR_MAX + * The maximum value a RTRCPTR can have. Mostly used as INVALID value. + */ +#define RTRCPTR_MAX ((RTRCPTR)UINT32_MAX) + +/** Raw mode context pointer, unsigned integer variant. */ +typedef int32_t RTRCINTPTR; +/** @def RTRCUINTPTR_MAX + * The maximum value a RTRCUINPTR can have. + */ +#define RTRCUINTPTR_MAX ((RTRCUINTPTR)UINT32_MAX) + +/** Raw mode context pointer, signed integer variant. */ +typedef uint32_t RTRCUINTPTR; +/** @def RTRCINTPTR_MIN + * The minimum value a RTRCINPTR can have. + */ +#define RTRCINTPTR_MIN ((RTRCINTPTR)INT32_MIN) +/** @def RTRCINTPTR_MAX + * The maximum value a RTRCINPTR can have. + */ +#define RTRCINTPTR_MAX ((RTRCINTPTR)INT32_MAX) + +/** @} */ + + +/** @defgroup grp_rt_types_cc Current Context Basic Types + * @{ + */ + +/** Current Context Physical Memory Address.*/ +#ifdef IN_RC +typedef RTGCPHYS RTCCPHYS; +#else +typedef RTHCPHYS RTCCPHYS; +#endif +/** Pointer to Current Context Physical Memory Address. */ +typedef RTCCPHYS *PRTCCPHYS; +/** Pointer to const Current Context Physical Memory Address. */ +typedef const RTCCPHYS *PCRTCCPHYS; +/** @def NIL_RTCCPHYS + * NIL CC Physical Address. + * NIL_RTCCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. + */ +#ifdef IN_RC +# define NIL_RTCCPHYS NIL_RTGCPHYS +#else +# define NIL_RTCCPHYS NIL_RTHCPHYS +#endif + +/** Unsigned integer register in the current context. */ +#if ARCH_BITS == 32 +typedef uint32_t RTCCUINTREG; +#elif ARCH_BITS == 64 +typedef uint64_t RTCCUINTREG; +#else +# error "Unsupported ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the current context. */ +typedef RTCCUINTREG *PRTCCUINTREG; +/** Pointer to a const unsigned integer register in the current context. */ +typedef RTCCUINTREG const *PCRTCCUINTREG; + +/** Signed integer register in the current context. */ +#if ARCH_BITS == 32 +typedef int32_t RTCCINTREG; +#elif ARCH_BITS == 64 +typedef int64_t RTCCINTREG; +#endif +/** Pointer to a signed integer register in the current context. */ +typedef RTCCINTREG *PRTCCINTREG; +/** Pointer to a const signed integer register in the current context. */ +typedef RTCCINTREG const *PCRTCCINTREG; + +/** @} */ + + + +/** Pointer to a big integer number. */ +typedef struct RTBIGNUM *PRTBIGNUM; +/** Pointer to a const big integer number. */ +typedef struct RTBIGNUM const *PCRTBIGNUM; + + +/** Pointer to a critical section. */ +typedef struct RTCRITSECT *PRTCRITSECT; +/** Pointer to a const critical section. */ +typedef const struct RTCRITSECT *PCRTCRITSECT; + +/** Pointer to a read/write critical section. */ +typedef struct RTCRITSECTRW *PRTCRITSECTRW; +/** Pointer to a const read/write critical section. */ +typedef const struct RTCRITSECTRW *PCRTCRITSECTRW; + + +/** Condition variable handle. */ +typedef R3PTRTYPE(struct RTCONDVARINTERNAL *) RTCONDVAR; +/** Pointer to a condition variable handle. */ +typedef RTCONDVAR *PRTCONDVAR; +/** Nil condition variable handle. */ +#define NIL_RTCONDVAR 0 + +/** Cryptographic (certificate) store handle. */ +typedef R3R0PTRTYPE(struct RTCRSTOREINT *) RTCRSTORE; +/** Pointer to a Cryptographic (certificate) store handle. */ +typedef RTCRSTORE *PRTCRSTORE; +/** Nil Cryptographic (certificate) store handle. */ +#define NIL_RTCRSTORE 0 + +/** Pointer to a const (store) certificate context. */ +typedef struct RTCRCERTCTX const *PCRTCRCERTCTX; + +/** Cryptographic message digest handle. */ +typedef R3R0PTRTYPE(struct RTCRDIGESTINT *) RTCRDIGEST; +/** Pointer to a cryptographic message digest handle. */ +typedef RTCRDIGEST *PRTCRDIGEST; +/** NIL cryptographic message digest handle. */ +#define NIL_RTCRDIGEST (0) + +/** Public key encryption schema handle. */ +typedef R3R0PTRTYPE(struct RTCRPKIXENCRYPTIONINT *) RTCRPKIXENCRYPTION; +/** Pointer to a public key encryption schema handle. */ +typedef RTCRPKIXENCRYPTION *PRTCRPKIXENCRYPTION; +/** NIL public key encryption schema handle */ +#define NIL_RTCRPKIXENCRYPTION (0) + +/** Public key signature schema handle. */ +typedef R3R0PTRTYPE(struct RTCRPKIXSIGNATUREINT *) RTCRPKIXSIGNATURE; +/** Pointer to a public key signature schema handle. */ +typedef RTCRPKIXSIGNATURE *PRTCRPKIXSIGNATURE; +/** NIL public key signature schema handle */ +#define NIL_RTCRPKIXSIGNATURE (0) + +/** X.509 certificate paths builder & validator handle. */ +typedef R3R0PTRTYPE(struct RTCRX509CERTPATHSINT *) RTCRX509CERTPATHS; +/** Pointer to a certificate paths builder & validator handle. */ +typedef RTCRX509CERTPATHS *PRTCRX509CERTPATHS; +/** Nil certificate paths builder & validator handle. */ +#define NIL_RTCRX509CERTPATHS 0 + +/** File handle. */ +typedef R3R0PTRTYPE(struct RTFILEINT *) RTFILE; +/** Pointer to file handle. */ +typedef RTFILE *PRTFILE; +/** Nil file handle. */ +#define NIL_RTFILE ((RTFILE)~(RTHCINTPTR)0) + +/** Async I/O request handle. */ +typedef R3PTRTYPE(struct RTFILEAIOREQINTERNAL *) RTFILEAIOREQ; +/** Pointer to an async I/O request handle. */ +typedef RTFILEAIOREQ *PRTFILEAIOREQ; +/** Nil request handle. */ +#define NIL_RTFILEAIOREQ 0 + +/** Async I/O completion context handle. */ +typedef R3PTRTYPE(struct RTFILEAIOCTXINTERNAL *) RTFILEAIOCTX; +/** Pointer to an async I/O completion context handle. */ +typedef RTFILEAIOCTX *PRTFILEAIOCTX; +/** Nil context handle. */ +#define NIL_RTFILEAIOCTX 0 + +/** Loader module handle. */ +typedef R3R0PTRTYPE(struct RTLDRMODINTERNAL *) RTLDRMOD; +/** Pointer to a loader module handle. */ +typedef RTLDRMOD *PRTLDRMOD; +/** Nil loader module handle. */ +#define NIL_RTLDRMOD 0 + +/** Lock validator class handle. */ +typedef R3R0PTRTYPE(struct RTLOCKVALCLASSINT *) RTLOCKVALCLASS; +/** Pointer to a lock validator class handle. */ +typedef RTLOCKVALCLASS *PRTLOCKVALCLASS; +/** Nil lock validator class handle. */ +#define NIL_RTLOCKVALCLASS ((RTLOCKVALCLASS)0) + +/** Ring-0 memory object handle. */ +typedef R0PTRTYPE(struct RTR0MEMOBJINTERNAL *) RTR0MEMOBJ; +/** Pointer to a Ring-0 memory object handle. */ +typedef RTR0MEMOBJ *PRTR0MEMOBJ; +/** Nil ring-0 memory object handle. */ +#define NIL_RTR0MEMOBJ 0 + +/** Native thread handle. */ +typedef RTHCUINTPTR RTNATIVETHREAD; +/** Pointer to an native thread handle. */ +typedef RTNATIVETHREAD *PRTNATIVETHREAD; +/** Nil native thread handle. */ +#define NIL_RTNATIVETHREAD (~(RTNATIVETHREAD)0) + +/** Pipe handle. */ +typedef R3R0PTRTYPE(struct RTPIPEINTERNAL *) RTPIPE; +/** Pointer to a pipe handle. */ +typedef RTPIPE *PRTPIPE; +/** Nil pipe handle. + * @remarks This is not 0 because of UNIX and OS/2 handle values. Take care! */ +#define NIL_RTPIPE ((RTPIPE)RTHCUINTPTR_MAX) + +/** @typedef RTPOLLSET + * Poll set handle. */ +typedef R3R0PTRTYPE(struct RTPOLLSETINTERNAL *) RTPOLLSET; +/** Pointer to a poll set handle. */ +typedef RTPOLLSET *PRTPOLLSET; +/** Nil poll set handle handle. */ +#define NIL_RTPOLLSET ((RTPOLLSET)0) + +/** Process identifier. */ +typedef uint32_t RTPROCESS; +/** Pointer to a process identifier. */ +typedef RTPROCESS *PRTPROCESS; +/** Nil process identifier. */ +#define NIL_RTPROCESS (~(RTPROCESS)0) + +/** Process ring-0 handle. */ +typedef RTR0UINTPTR RTR0PROCESS; +/** Pointer to a ring-0 process handle. */ +typedef RTR0PROCESS *PRTR0PROCESS; +/** Nil ring-0 process handle. */ +#define NIL_RTR0PROCESS (~(RTR0PROCESS)0) + +/** @typedef RTSEMEVENT + * Event Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMEVENTINTERNAL *) RTSEMEVENT; +/** Pointer to an event semaphore handle. */ +typedef RTSEMEVENT *PRTSEMEVENT; +/** Nil event semaphore handle. */ +#define NIL_RTSEMEVENT 0 + +/** @typedef RTSEMEVENTMULTI + * Event Multiple Release Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMEVENTMULTIINTERNAL *) RTSEMEVENTMULTI; +/** Pointer to an event multiple release semaphore handle. */ +typedef RTSEMEVENTMULTI *PRTSEMEVENTMULTI; +/** Nil multiple release event semaphore handle. */ +#define NIL_RTSEMEVENTMULTI 0 + +/** @typedef RTSEMFASTMUTEX + * Fast mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMFASTMUTEXINTERNAL *) RTSEMFASTMUTEX; +/** Pointer to a fast mutex semaphore handle. */ +typedef RTSEMFASTMUTEX *PRTSEMFASTMUTEX; +/** Nil fast mutex semaphore handle. */ +#define NIL_RTSEMFASTMUTEX 0 + +/** @typedef RTSEMMUTEX + * Mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMMUTEXINTERNAL *) RTSEMMUTEX; +/** Pointer to a mutex semaphore handle. */ +typedef RTSEMMUTEX *PRTSEMMUTEX; +/** Nil mutex semaphore handle. */ +#define NIL_RTSEMMUTEX 0 + +/** @typedef RTSEMSPINMUTEX + * Spinning mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMSPINMUTEXINTERNAL *) RTSEMSPINMUTEX; +/** Pointer to a spinning mutex semaphore handle. */ +typedef RTSEMSPINMUTEX *PRTSEMSPINMUTEX; +/** Nil spinning mutex semaphore handle. */ +#define NIL_RTSEMSPINMUTEX 0 + +/** @typedef RTSEMRW + * Read/Write Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMRWINTERNAL *) RTSEMRW; +/** Pointer to a read/write semaphore handle. */ +typedef RTSEMRW *PRTSEMRW; +/** Nil read/write semaphore handle. */ +#define NIL_RTSEMRW 0 + +/** @typedef RTSEMXROADS + * Crossroads semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMXROADSINTERNAL *) RTSEMXROADS; +/** Pointer to a crossroads semaphore handle. */ +typedef RTSEMXROADS *PRTSEMXROADS; +/** Nil crossroads semaphore handle. */ +#define NIL_RTSEMXROADS ((RTSEMXROADS)0) + +/** Spinlock handle. */ +typedef R3R0PTRTYPE(struct RTSPINLOCKINTERNAL *) RTSPINLOCK; +/** Pointer to a spinlock handle. */ +typedef RTSPINLOCK *PRTSPINLOCK; +/** Nil spinlock handle. */ +#define NIL_RTSPINLOCK 0 + +/** Socket handle. */ +typedef R3R0PTRTYPE(struct RTSOCKETINT *) RTSOCKET; +/** Pointer to socket handle. */ +typedef RTSOCKET *PRTSOCKET; +/** Nil socket handle. */ +#define NIL_RTSOCKET ((RTSOCKET)0) + +/** Pointer to a RTTCPSERVER handle. */ +typedef struct RTTCPSERVER *PRTTCPSERVER; +/** Pointer to a RTTCPSERVER handle. */ +typedef PRTTCPSERVER *PPRTTCPSERVER; +/** Nil RTTCPSERVER handle. */ +#define NIL_RTTCPSERVER ((PRTTCPSERVER)0) + +/** Pointer to a RTUDPSERVER handle. */ +typedef struct RTUDPSERVER *PRTUDPSERVER; +/** Pointer to a RTUDPSERVER handle. */ +typedef PRTUDPSERVER *PPRTUDPSERVER; +/** Nil RTUDPSERVER handle. */ +#define NIL_RTUDPSERVER ((PRTUDPSERVER)0) + +/** Thread handle.*/ +typedef R3R0PTRTYPE(struct RTTHREADINT *) RTTHREAD; +/** Pointer to thread handle. */ +typedef RTTHREAD *PRTTHREAD; +/** Nil thread handle. */ +#define NIL_RTTHREAD 0 + +/** Thread context switching hook handle. */ +typedef R0PTRTYPE(struct RTTHREADCTXHOOKINT *) RTTHREADCTXHOOK; +/** Pointer to Thread context switching hook handle. */ +typedef RTTHREADCTXHOOK *PRTTHREADCTXHOOK; +/** Nil Thread context switching hook handle. */ +#define NIL_RTTHREADCTXHOOK ((RTTHREADCTXHOOK)0) + +/** A TLS index. */ +typedef RTHCINTPTR RTTLS; +/** Pointer to a TLS index. */ +typedef RTTLS *PRTTLS; +/** Pointer to a const TLS index. */ +typedef RTTLS const *PCRTTLS; +/** NIL TLS index value. */ +#define NIL_RTTLS ((RTTLS)-1) + +/** Trace buffer handle. + * @remarks This is not a R3/R0 type like most other handles! + */ +typedef struct RTTRACEBUFINT *RTTRACEBUF; +/** Pointer to a trace buffer handle. */ +typedef RTTRACEBUF *PRTTRACEBUF; +/** Nil trace buffer handle. */ +#define NIL_RTTRACEBUF ((RTTRACEBUF)0) +/** The handle of the default trace buffer. + * This can be used with any of the RTTraceBufAdd APIs. */ +#define RTTRACEBUF_DEFAULT ((RTTRACEBUF)-2) + +/** Handle to a simple heap. */ +typedef R3R0PTRTYPE(struct RTHEAPSIMPLEINTERNAL *) RTHEAPSIMPLE; +/** Pointer to a handle to a simple heap. */ +typedef RTHEAPSIMPLE *PRTHEAPSIMPLE; +/** NIL simple heap handle. */ +#define NIL_RTHEAPSIMPLE ((RTHEAPSIMPLE)0) + +/** Handle to an offset based heap. */ +typedef R3R0PTRTYPE(struct RTHEAPOFFSETINTERNAL *) RTHEAPOFFSET; +/** Pointer to a handle to an offset based heap. */ +typedef RTHEAPOFFSET *PRTHEAPOFFSET; +/** NIL offset based heap handle. */ +#define NIL_RTHEAPOFFSET ((RTHEAPOFFSET)0) + +/** Handle to an environment block. */ +typedef R3PTRTYPE(struct RTENVINTERNAL *) RTENV; +/** Pointer to a handle to an environment block. */ +typedef RTENV *PRTENV; +/** NIL simple heap handle. */ +#define NIL_RTENV ((RTENV)0) + +/** A CPU identifier. + * @remarks This doesn't have to correspond to the APIC ID (intel/amd). Nor + * does it have to correspond to the bits in the affinity mask, at + * least not until we've sorted out Windows NT. */ +typedef uint32_t RTCPUID; +/** Pointer to a CPU identifier. */ +typedef RTCPUID *PRTCPUID; +/** Pointer to a const CPU identifier. */ +typedef RTCPUID const *PCRTCPUID; +/** Nil CPU Id. */ +#define NIL_RTCPUID ((RTCPUID)~0) + +/** The maximum number of CPUs a set can contain and IPRT is able + * to reference. (Should be max of support arch/platforms.) + * @remarks Must be a multiple of 64 (see RTCPUSET). */ +#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) +# define RTCPUSET_MAX_CPUS 256 +#elif defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define RTCPUSET_MAX_CPUS 1024 +#else +# define RTCPUSET_MAX_CPUS 64 +#endif +/** A CPU set. + * @note Treat this as an opaque type and always use RTCpuSet* for + * manipulating it. */ +typedef struct RTCPUSET +{ + /** The bitmap. */ + uint64_t bmSet[RTCPUSET_MAX_CPUS / 64]; +} RTCPUSET; +/** Pointer to a CPU set. */ +typedef RTCPUSET *PRTCPUSET; +/** Pointer to a const CPU set. */ +typedef RTCPUSET const *PCRTCPUSET; + +/** A handle table handle. */ +typedef R3R0PTRTYPE(struct RTHANDLETABLEINT *) RTHANDLETABLE; +/** A pointer to a handle table handle. */ +typedef RTHANDLETABLE *PRTHANDLETABLE; +/** @def NIL_RTHANDLETABLE + * NIL handle table handle. */ +#define NIL_RTHANDLETABLE ((RTHANDLETABLE)0) + +/** A handle to a low resolution timer. */ +typedef R3R0PTRTYPE(struct RTTIMERLRINT *) RTTIMERLR; +/** A pointer to a low resolution timer handle. */ +typedef RTTIMERLR *PRTTIMERLR; +/** @def NIL_RTTIMERLR + * NIL low resolution timer handle value. */ +#define NIL_RTTIMERLR ((RTTIMERLR)0) + +/** Handle to a random number generator. */ +typedef R3R0PTRTYPE(struct RTRANDINT *) RTRAND; +/** Pointer to a random number generator handle. */ +typedef RTRAND *PRTRAND; +/** NIL random number generator handle value. */ +#define NIL_RTRAND ((RTRAND)0) + +/** Debug address space handle. */ +typedef R3R0PTRTYPE(struct RTDBGASINT *) RTDBGAS; +/** Pointer to a debug address space handle. */ +typedef RTDBGAS *PRTDBGAS; +/** NIL debug address space handle. */ +#define NIL_RTDBGAS ((RTDBGAS)0) + +/** Debug module handle. */ +typedef R3R0PTRTYPE(struct RTDBGMODINT *) RTDBGMOD; +/** Pointer to a debug module handle. */ +typedef RTDBGMOD *PRTDBGMOD; +/** NIL debug module handle. */ +#define NIL_RTDBGMOD ((RTDBGMOD)0) + +/** Manifest handle. */ +typedef struct RTMANIFESTINT *RTMANIFEST; +/** Pointer to a manifest handle. */ +typedef RTMANIFEST *PRTMANIFEST; +/** NIL manifest handle. */ +#define NIL_RTMANIFEST ((RTMANIFEST)~(uintptr_t)0) + +/** Memory pool handle. */ +typedef R3R0PTRTYPE(struct RTMEMPOOLINT *) RTMEMPOOL; +/** Pointer to a memory pool handle. */ +typedef RTMEMPOOL *PRTMEMPOOL; +/** NIL memory pool handle. */ +#define NIL_RTMEMPOOL ((RTMEMPOOL)0) +/** The default memory pool handle. */ +#define RTMEMPOOL_DEFAULT ((RTMEMPOOL)-2) + +/** String cache handle. */ +typedef R3R0PTRTYPE(struct RTSTRCACHEINT *) RTSTRCACHE; +/** Pointer to a string cache handle. */ +typedef RTSTRCACHE *PRTSTRCACHE; +/** NIL string cache handle. */ +#define NIL_RTSTRCACHE ((RTSTRCACHE)0) +/** The default string cache handle. */ +#define RTSTRCACHE_DEFAULT ((RTSTRCACHE)-2) + + +/** Virtual Filesystem handle. */ +typedef struct RTVFSINTERNAL *RTVFS; +/** Pointer to a VFS handle. */ +typedef RTVFS *PRTVFS; +/** A NIL VFS handle. */ +#define NIL_RTVFS ((RTVFS)~(uintptr_t)0) + +/** Virtual Filesystem base object handle. */ +typedef struct RTVFSOBJINTERNAL *RTVFSOBJ; +/** Pointer to a VFS base object handle. */ +typedef RTVFSOBJ *PRTVFSOBJ; +/** A NIL VFS base object handle. */ +#define NIL_RTVFSOBJ ((RTVFSOBJ)~(uintptr_t)0) + +/** Virtual Filesystem directory handle. */ +typedef struct RTVFSDIRINTERNAL *RTVFSDIR; +/** Pointer to a VFS directory handle. */ +typedef RTVFSDIR *PRTVFSDIR; +/** A NIL VFS directory handle. */ +#define NIL_RTVFSDIR ((RTVFSDIR)~(uintptr_t)0) + +/** Virtual Filesystem filesystem stream handle. */ +typedef struct RTVFSFSSTREAMINTERNAL *RTVFSFSSTREAM; +/** Pointer to a VFS filesystem stream handle. */ +typedef RTVFSFSSTREAM *PRTVFSFSSTREAM; +/** A NIL VFS filesystem stream handle. */ +#define NIL_RTVFSFSSTREAM ((RTVFSFSSTREAM)~(uintptr_t)0) + +/** Virtual Filesystem I/O stream handle. */ +typedef struct RTVFSIOSTREAMINTERNAL *RTVFSIOSTREAM; +/** Pointer to a VFS I/O stream handle. */ +typedef RTVFSIOSTREAM *PRTVFSIOSTREAM; +/** A NIL VFS I/O stream handle. */ +#define NIL_RTVFSIOSTREAM ((RTVFSIOSTREAM)~(uintptr_t)0) + +/** Virtual Filesystem file handle. */ +typedef struct RTVFSFILEINTERNAL *RTVFSFILE; +/** Pointer to a VFS file handle. */ +typedef RTVFSFILE *PRTVFSFILE; +/** A NIL VFS file handle. */ +#define NIL_RTVFSFILE ((RTVFSFILE)~(uintptr_t)0) + +/** Virtual Filesystem symbolic link handle. */ +typedef struct RTVFSSYMLINKINTERNAL *RTVFSSYMLINK; +/** Pointer to a VFS symbolic link handle. */ +typedef RTVFSSYMLINK *PRTVFSSYMLINK; +/** A NIL VFS symbolic link handle. */ +#define NIL_RTVFSSYMLINK ((RTVFSSYMLINK)~(uintptr_t)0) + +/** Async I/O manager handle. */ +typedef struct RTAIOMGRINT *RTAIOMGR; +/** Pointer to a async I/O manager handle. */ +typedef RTAIOMGR *PRTAIOMGR; +/** A NIL async I/O manager handle. */ +#define NIL_RTAIOMGR ((RTAIOMGR)~(uintptr_t)0) + +/** Async I/O manager file handle. */ +typedef struct RTAIOMGRFILEINT *RTAIOMGRFILE; +/** Pointer to a async I/O manager file handle. */ +typedef RTAIOMGRFILE *PRTAIOMGRFILE; +/** A NIL async I/O manager file handle. */ +#define NIL_RTAIOMGRFILE ((RTAIOMGRFILE)~(uintptr_t)0) + +/** + * Handle type. + * + * This is usually used together with RTHANDLEUNION. + */ +typedef enum RTHANDLETYPE +{ + /** The invalid zero value. */ + RTHANDLETYPE_INVALID = 0, + /** File handle. */ + RTHANDLETYPE_FILE, + /** Pipe handle */ + RTHANDLETYPE_PIPE, + /** Socket handle. */ + RTHANDLETYPE_SOCKET, + /** Thread handle. */ + RTHANDLETYPE_THREAD, + /** The end of the valid values. */ + RTHANDLETYPE_END, + /** The 32-bit type blow up. */ + RTHANDLETYPE_32BIT_HACK = 0x7fffffff +} RTHANDLETYPE; +/** Pointer to a handle type. */ +typedef RTHANDLETYPE *PRTHANDLETYPE; + +/** + * Handle union. + * + * This is usually used together with RTHANDLETYPE or as RTHANDLE. + */ +typedef union RTHANDLEUNION +{ + RTFILE hFile; /**< File handle. */ + RTPIPE hPipe; /**< Pipe handle. */ + RTSOCKET hSocket; /**< Socket handle. */ + RTTHREAD hThread; /**< Thread handle. */ + /** Generic integer handle value. + * Note that RTFILE is not yet pointer sized, so accessing it via this member + * isn't necessarily safe or fully portable. */ + RTHCUINTPTR uInt; +} RTHANDLEUNION; +/** Pointer to a handle union. */ +typedef RTHANDLEUNION *PRTHANDLEUNION; +/** Pointer to a const handle union. */ +typedef RTHANDLEUNION const *PCRTHANDLEUNION; + +/** + * Generic handle. + */ +typedef struct RTHANDLE +{ + /** The handle type. */ + RTHANDLETYPE enmType; + /** The handle value. */ + RTHANDLEUNION u; +} RTHANDLE; +/** Pointer to a generic handle. */ +typedef RTHANDLE *PRTHANDLE; +/** Pointer to a const generic handle. */ +typedef RTHANDLE const *PCRTHANDLE; + + +/** + * Standard handles. + * + * @remarks These have the correct file descriptor values for unixy systems and + * can be used directly in code specific to those platforms. + */ +typedef enum RTHANDLESTD +{ + /** Invalid standard handle. */ + RTHANDLESTD_INVALID = -1, + /** The standard input handle. */ + RTHANDLESTD_INPUT = 0, + /** The standard output handle. */ + RTHANDLESTD_OUTPUT, + /** The standard error handle. */ + RTHANDLESTD_ERROR, + /** The typical 32-bit type hack. */ + RTHANDLESTD_32BIT_HACK = 0x7fffffff +} RTHANDLESTD; + + +/** + * Error info. + * + * See RTErrInfo*. + */ +typedef struct RTERRINFO +{ + /** Flags, see RTERRINFO_FLAGS_XXX. */ + uint32_t fFlags; + /** The status code. */ + int32_t rc; + /** The size of the message */ + size_t cbMsg; + /** The error buffer. */ + char *pszMsg; + /** Reserved for future use. */ + void *apvReserved[2]; +} RTERRINFO; +/** Pointer to an error info structure. */ +typedef RTERRINFO *PRTERRINFO; +/** Pointer to a const error info structure. */ +typedef RTERRINFO const *PCRTERRINFO; + +/** + * Static error info structure, see RTErrInfoInitStatic. + */ +typedef struct RTERRINFOSTATIC +{ + /** The core error info. */ + RTERRINFO Core; + /** The static message buffer. */ + char szMsg[3072]; +} RTERRINFOSTATIC; +/** Pointer to a error info buffer. */ +typedef RTERRINFOSTATIC *PRTERRINFOSTATIC; +/** Pointer to a const static error info buffer. */ +typedef RTERRINFOSTATIC const *PCRTERRINFOSTATIC; + + +/** + * UUID data type. + * + * See RTUuid*. + * + * @remarks IPRT defines that the first three integers in the @c Gen struct + * interpretation are in little endian representation. This is + * different to many other UUID implementation, and requires + * conversion if you need to achieve consistent results. + */ +typedef union RTUUID +{ + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** The way the UUID is declared by the DCE specification. */ + struct + { + uint32_t u32TimeLow; + uint16_t u16TimeMid; + uint16_t u16TimeHiAndVersion; + uint8_t u8ClockSeqHiAndReserved; + uint8_t u8ClockSeqLow; + uint8_t au8Node[6]; + } Gen; +} RTUUID; +/** Pointer to UUID data. */ +typedef RTUUID *PRTUUID; +/** Pointer to readonly UUID data. */ +typedef const RTUUID *PCRTUUID; + +/** Initializes a RTUUID structure with all zeros (RTUuidIsNull() true). */ +#define RTUUID_INITIALIZE_NULL { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } + +/** UUID string maximum length. */ +#define RTUUID_STR_LENGTH 37 + + +/** Compression handle. */ +typedef struct RTZIPCOMP *PRTZIPCOMP; +/** Decompressor handle. */ +typedef struct RTZIPDECOMP *PRTZIPDECOMP; + + +/** + * Unicode Code Point. + */ +typedef uint32_t RTUNICP; +/** Pointer to an Unicode Code Point. */ +typedef RTUNICP *PRTUNICP; +/** Pointer to an Unicode Code Point. */ +typedef const RTUNICP *PCRTUNICP; +/** Max value a RTUNICP type can hold. */ +#define RTUNICP_MAX ( ~(RTUNICP)0 ) +/** Invalid code point. + * This is returned when encountered invalid encodings or invalid + * unicode code points. */ +#define RTUNICP_INVALID ( UINT32_C(0xfffffffe) ) + + +/** + * UTF-16 character. + * @remark wchar_t is not usable since it's compiler defined. + * @remark When we use the term character we're not talking about unicode code point, but + * the basic unit of the string encoding. Thus cwc - count of wide chars - means + * count of RTUTF16; cuc - count of unicode chars - means count of RTUNICP; + * and cch means count of the typedef 'char', which is assumed to be an octet. + */ +typedef uint16_t RTUTF16; +/** Pointer to a UTF-16 character. */ +typedef RTUTF16 *PRTUTF16; +/** Pointer to a const UTF-16 character. */ +typedef const RTUTF16 *PCRTUTF16; + + +/** + * String tuple to go with the RT_STR_TUPLE macro. + */ +typedef struct RTSTRTUPLE +{ + /** The string. */ + const char *psz; + /** The string length. */ + size_t cch; +} RTSTRTUPLE; +/** Pointer to a string tuple. */ +typedef RTSTRTUPLE *PRTSTRTUPLE; +/** Pointer to a const string tuple. */ +typedef RTSTRTUPLE const *PCRTSTRTUPLE; + +/** + * Wait for ever if we have to. + */ +#define RT_INDEFINITE_WAIT (~0U) + + +/** + * Generic process callback. + * + * @returns VBox status code. Failure will cancel the operation. + * @param uPercentage The percentage of the operation which has been completed. + * @param pvUser The user specified argument. + */ +typedef DECLCALLBACK(int) FNRTPROGRESS(unsigned uPrecentage, void *pvUser); +/** Pointer to a generic progress callback function, FNRTPROCESS(). */ +typedef FNRTPROGRESS *PFNRTPROGRESS; + +/** + * Generic vprintf-like callback function for dumpers. + * + * @param pvUser User argument. + * @param pszFormat The format string. + * @param va Arguments for the format string. + */ +typedef DECLCALLBACK(void) FNRTDUMPPRINTFV(void *pvUser, const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(2, 0); +/** Pointer to a generic printf-like function for dumping. */ +typedef FNRTDUMPPRINTFV *PFNRTDUMPPRINTFV; + + +/** + * A point in a two dimentional coordinate system. + */ +typedef struct RTPOINT +{ + /** X coordinate. */ + int32_t x; + /** Y coordinate. */ + int32_t y; +} RTPOINT; +/** Pointer to a point. */ +typedef RTPOINT *PRTPOINT; +/** Pointer to a const point. */ +typedef const RTPOINT *PCRTPOINT; + + +/** + * Rectangle data type, double point. + */ +typedef struct RTRECT +{ + /** left X coordinate. */ + int32_t xLeft; + /** top Y coordinate. */ + int32_t yTop; + /** right X coordinate. (exclusive) */ + int32_t xRight; + /** bottom Y coordinate. (exclusive) */ + int32_t yBottom; +} RTRECT; +/** Pointer to a double point rectangle. */ +typedef RTRECT *PRTRECT; +/** Pointer to a const double point rectangle. */ +typedef const RTRECT *PCRTRECT; + + +/** + * Rectangle data type, point + size. + */ +typedef struct RTRECT2 +{ + /** X coordinate. + * Unless stated otherwise, this is the top left corner. */ + int32_t x; + /** Y coordinate. + * Unless stated otherwise, this is the top left corner. */ + int32_t y; + /** The width. + * Unless stated otherwise, this is to the right of (x,y) and will not + * be a negative number. */ + int32_t cx; + /** The height. + * Unless stated otherwise, this is down from (x,y) and will not be a + * negative number. */ + int32_t cy; +} RTRECT2; +/** Pointer to a point + size rectangle. */ +typedef RTRECT2 *PRTRECT2; +/** Pointer to a const point + size rectangle. */ +typedef const RTRECT2 *PCRTRECT2; + + +/** + * The size of a rectangle. + */ +typedef struct RTRECTSIZE +{ + /** The width (along the x-axis). */ + uint32_t cx; + /** The height (along the y-axis). */ + uint32_t cy; +} RTRECTSIZE; +/** Pointer to a rectangle size. */ +typedef RTRECTSIZE *PRTRECTSIZE; +/** Pointer to a const rectangle size. */ +typedef const RTRECTSIZE *PCRTRECTSIZE; + + +/** + * Ethernet MAC address. + * + * The first 24 bits make up the Organisationally Unique Identifier (OUI), + * where the first bit (little endian) indicates multicast (set) / unicast, + * and the second bit indicates locally (set) / global administered. If all + * bits are set, it's a broadcast. + */ +typedef union RTMAC +{ + /** @todo add a bitfield view of this stuff. */ + /** 8-bit view. */ + uint8_t au8[6]; + /** 16-bit view. */ + uint16_t au16[3]; +} RTMAC; +/** Pointer to a MAC address. */ +typedef RTMAC *PRTMAC; +/** Pointer to a readonly MAC address. */ +typedef const RTMAC *PCRTMAC; + + +/** Pointer to a lock validator record. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALRECEXCL *PRTLOCKVALRECEXCL; +/** Pointer to a record of one ownership share. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALRECSHRD *PRTLOCKVALRECSHRD; +/** Pointer to a lock validator source position. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALSRCPOS *PRTLOCKVALSRCPOS; +/** Pointer to a const lock validator source position. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALSRCPOS const *PCRTLOCKVALSRCPOS; + +/** @name Special sub-class values. + * The range 16..UINT32_MAX is available to the user, the range 0..15 is + * reserved for the lock validator. In the user range the locks can only be + * taking in ascending order. + * @{ */ +/** Invalid value. */ +#define RTLOCKVAL_SUB_CLASS_INVALID UINT32_C(0) +/** Not allowed to be taken with any other locks in the same class. + * This is the recommended value. */ +#define RTLOCKVAL_SUB_CLASS_NONE UINT32_C(1) +/** Any order is allowed within the class. */ +#define RTLOCKVAL_SUB_CLASS_ANY UINT32_C(2) +/** The first user value. */ +#define RTLOCKVAL_SUB_CLASS_USER UINT32_C(16) +/** @} */ + + +/** + * Digest types. + */ +typedef enum RTDIGESTTYPE +{ + /** Invalid digest value. */ + RTDIGESTTYPE_INVALID = 0, + /** Unknown digest type. */ + RTDIGESTTYPE_UNKNOWN, + /** CRC32 checksum. */ + RTDIGESTTYPE_CRC32, + /** CRC64 checksum. */ + RTDIGESTTYPE_CRC64, + /** MD2 checksum (unsafe!). */ + RTDIGESTTYPE_MD2, + /** MD4 checksum (unsafe!!). */ + RTDIGESTTYPE_MD4, + /** MD5 checksum (unsafe!). */ + RTDIGESTTYPE_MD5, + /** SHA-1 checksum (unsafe!). */ + RTDIGESTTYPE_SHA1, + /** SHA-224 checksum. */ + RTDIGESTTYPE_SHA224, + /** SHA-256 checksum. */ + RTDIGESTTYPE_SHA256, + /** SHA-384 checksum. */ + RTDIGESTTYPE_SHA384, + /** SHA-512 checksum. */ + RTDIGESTTYPE_SHA512, + /** SHA-512/224 checksum. */ + RTDIGESTTYPE_SHA512T224, + /** SHA-512/256 checksum. */ + RTDIGESTTYPE_SHA512T256, + /** End of valid types. */ + RTDIGESTTYPE_END, + /** Usual 32-bit type blowup. */ + RTDIGESTTYPE_32BIT_HACK = 0x7fffffff +} RTDIGESTTYPE; + +/** + * Process exit codes. + */ +typedef enum RTEXITCODE +{ + /** Success. */ + RTEXITCODE_SUCCESS = 0, + /** General failure. */ + RTEXITCODE_FAILURE = 1, + /** Invalid arguments. */ + RTEXITCODE_SYNTAX = 2, + /** Initialization failure (usually IPRT, but could be used for other + * components as well). */ + RTEXITCODE_INIT = 3, + /** Test skipped. */ + RTEXITCODE_SKIPPED = 4, + /** The end of valid exit codes. */ + RTEXITCODE_END, + /** The usual 32-bit type hack. */ + RTEXITCODE_32BIT_HACK = 0x7fffffff +} RTEXITCODE; + +/** + * Range descriptor. + */ +typedef struct RTRANGE +{ + /** Start offset. */ + uint64_t offStart; + /** Range size. */ + size_t cbRange; +} RTRANGE; +/** Pointer to a range descriptor. */ +typedef RTRANGE *PRTRANGE; +/** Pointer to a readonly range descriptor. */ +typedef const RTRANGE *PCRTRANGE; + + +/** + * Generic pointer union. + */ +typedef union RTPTRUNION +{ + /** Pointer into the void. */ + void *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char *pch; + /** Pointer to char value. */ + unsigned char *puch; + /** Pointer to a int value. */ + int *pi; + /** Pointer to a unsigned int value. */ + unsigned int *pu; + /** Pointer to a long value. */ + long *pl; + /** Pointer to a long value. */ + unsigned long *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t *pu64; + /** Pointer to a UTF-16 character. */ + PRTUTF16 pwc; + /** Pointer to a UUID character. */ + PRTUUID pUuid; +} RTPTRUNION; +/** Pointer to a pointer union. */ +typedef RTPTRUNION *PRTPTRUNION; + +/** + * Generic const pointer union. + */ +typedef union RTCPTRUNION +{ + /** Pointer into the void. */ + void const *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char const *pch; + /** Pointer to char value. */ + unsigned char const *puch; + /** Pointer to a int value. */ + int const *pi; + /** Pointer to a unsigned int value. */ + unsigned int const *pu; + /** Pointer to a long value. */ + long const *pl; + /** Pointer to a long value. */ + unsigned long const *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t const *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t const *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t const *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t const *pu64; + /** Pointer to a UTF-16 character. */ + PCRTUTF16 pwc; + /** Pointer to a UUID character. */ + PCRTUUID pUuid; +} RTCPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTCPTRUNION *PRTCPTRUNION; + +/** + * Generic volatile pointer union. + */ +typedef union RTVPTRUNION +{ + /** Pointer into the void. */ + void volatile *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char volatile *pch; + /** Pointer to char value. */ + unsigned char volatile *puch; + /** Pointer to a int value. */ + int volatile *pi; + /** Pointer to a unsigned int value. */ + unsigned int volatile *pu; + /** Pointer to a long value. */ + long volatile *pl; + /** Pointer to a long value. */ + unsigned long volatile *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t volatile *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t volatile *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t volatile *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t volatile *pu64; + /** Pointer to a UTF-16 character. */ + RTUTF16 volatile *pwc; + /** Pointer to a UUID character. */ + RTUUID volatile *pUuid; +} RTVPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTVPTRUNION *PRTVPTRUNION; + +/** + * Generic const volatile pointer union. + */ +typedef union RTCVPTRUNION +{ + /** Pointer into the void. */ + void const volatile *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char const volatile *pch; + /** Pointer to char value. */ + unsigned char const volatile *puch; + /** Pointer to a int value. */ + int const volatile *pi; + /** Pointer to a unsigned int value. */ + unsigned int const volatile *pu; + /** Pointer to a long value. */ + long const volatile *pl; + /** Pointer to a long value. */ + unsigned long const volatile *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t const volatile *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t const volatile *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t const volatile *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t const volatile *pu64; + /** Pointer to a UTF-16 character. */ + RTUTF16 const volatile *pwc; + /** Pointer to a UUID character. */ + RTUUID const volatile *pUuid; +} RTCVPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTCVPTRUNION *PRTCVPTRUNION; + + + +#ifdef __cplusplus +/** + * Strict type validation helper class. + * + * See RTErrStrictType and RT_SUCCESS_NP. + */ +class RTErrStrictType2 +{ +protected: + /** The status code. */ + int32_t m_rc; + +public: + /** + * Constructor. + * @param rc IPRT style status code. + */ + RTErrStrictType2(int32_t rc) : m_rc(rc) + { + } + + /** + * Get the status code. + * @returns IPRT style status code. + */ + int32_t getValue() const + { + return m_rc; + } +}; +#endif /* __cplusplus */ +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/uni.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/uni.h @@ -0,0 +1,478 @@ +/** @file + * IPRT - Unicode Code Points. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_uni_h +#define ___iprt_uni_h + +/** @defgroup grp_rt_uni RTUniCp - Unicode Code Points + * @ingroup grp_rt + * @{ + */ + +/** @def RTUNI_USE_WCTYPE + * Define RTUNI_USE_WCTYPE to not use the IPRT unicode data but the + * data which the C runtime library provides. */ +#ifdef DOXYGEN_RUNNING +# define RTUNI_USE_WCTYPE +#endif + +#include +#ifdef RTUNI_USE_WCTYPE +# include +#endif + +RT_C_DECLS_BEGIN + + +#ifndef RTUNI_USE_WCTYPE + +/** + * A unicode flags range. + * @internal + */ +typedef struct RTUNIFLAGSRANGE +{ + /** The first code point of the range. */ + RTUNICP BeginCP; + /** The last + 1 code point of the range. */ + RTUNICP EndCP; + /** Pointer to the array of case folded code points. */ + const uint8_t *pafFlags; +} RTUNIFLAGSRANGE; +/** Pointer to a flags range. + * @internal */ +typedef RTUNIFLAGSRANGE *PRTUNIFLAGSRANGE; +/** Pointer to a const flags range. + * @internal */ +typedef const RTUNIFLAGSRANGE *PCRTUNIFLAGSRANGE; + +/** + * A unicode case folded range. + * @internal + */ +typedef struct RTUNICASERANGE +{ + /** The first code point of the range. */ + RTUNICP BeginCP; + /** The last + 1 code point of the range. */ + RTUNICP EndCP; + /** Pointer to the array of case folded code points. */ + PCRTUNICP paFoldedCPs; +} RTUNICASERANGE; +/** Pointer to a case folded range. + * @internal */ +typedef RTUNICASERANGE *PRTUNICASERANGE; +/** Pointer to a const case folded range. + * @internal */ +typedef const RTUNICASERANGE *PCRTUNICASERANGE; + +/** @name Unicode Code Point Flags. + * @internal + * @{ */ +#define RTUNI_UPPER RT_BIT(0) +#define RTUNI_LOWER RT_BIT(1) +#define RTUNI_ALPHA RT_BIT(2) +#define RTUNI_XDIGIT RT_BIT(3) +#define RTUNI_DDIGIT RT_BIT(4) +#define RTUNI_WSPACE RT_BIT(5) +/*#define RTUNI_BSPACE RT_BIT(6) - later */ +/** When set, the codepoint requires further checking wrt NFC and NFD + * normalization. I.e. set when either of QC_NFD and QC_NFC are not Y. */ +#define RTUNI_QC_NFX RT_BIT(7) +/** @} */ + + +/** + * Array of flags ranges. + * @internal + */ +extern RTDATADECL(const RTUNIFLAGSRANGE) g_aRTUniFlagsRanges[]; + +/** + * Gets the flags for a unicode code point. + * + * @returns The flag mask. (RTUNI_*) + * @param CodePoint The unicode code point. + * @internal + */ +DECLINLINE(RTUNICP) rtUniCpFlags(RTUNICP CodePoint) +{ + PCRTUNIFLAGSRANGE pCur = &g_aRTUniFlagsRanges[0]; + do + { + if (pCur->EndCP > CodePoint) + { + if (pCur->BeginCP <= CodePoint) + return pCur->pafFlags[CodePoint - pCur->BeginCP]; + break; + } + pCur++; + } while (pCur->EndCP != RTUNICP_MAX); + return 0; +} + + +/** + * Checks if a unicode code point is upper case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsUpper(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_UPPER) != 0; +} + + +/** + * Checks if a unicode code point is lower case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsLower(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_LOWER) != 0; +} + + +/** + * Checks if a unicode code point is case foldable. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsFoldable(RTUNICP CodePoint) +{ + /* Right enough. */ + return (rtUniCpFlags(CodePoint) & (RTUNI_LOWER | RTUNI_UPPER)) != 0; +} + + +/** + * Checks if a unicode code point is alphabetic. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsAlphabetic(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_ALPHA) != 0; +} + + +/** + * Checks if a unicode code point is a decimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsDecDigit(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_DDIGIT) != 0; +} + + +/** + * Checks if a unicode code point is a hexadecimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsHexDigit(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_XDIGIT) != 0; +} + + +/** + * Checks if a unicode code point is white space. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsSpace(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_WSPACE) != 0; +} + + + +/** + * Array of uppercase ranges. + * @internal + */ +extern RTDATADECL(const RTUNICASERANGE) g_aRTUniUpperRanges[]; + +/** + * Array of lowercase ranges. + * @internal + */ +extern RTDATADECL(const RTUNICASERANGE) g_aRTUniLowerRanges[]; + + +/** + * Folds a unicode code point using the specified range array. + * + * @returns FOlded code point. + * @param CodePoint The unicode code point to fold. + * @param pCur The case folding range to use. + */ +DECLINLINE(RTUNICP) rtUniCpFold(RTUNICP CodePoint, PCRTUNICASERANGE pCur) +{ + do + { + if (pCur->EndCP > CodePoint) + { + if (pCur->BeginCP <= CodePoint) + CodePoint = pCur->paFoldedCPs[CodePoint - pCur->BeginCP]; + break; + } + pCur++; + } while (pCur->EndCP != RTUNICP_MAX); + return CodePoint; +} + + +/** + * Folds a unicode code point to upper case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToUpper(RTUNICP CodePoint) +{ + return rtUniCpFold(CodePoint, &g_aRTUniUpperRanges[0]); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToLower(RTUNICP CodePoint) +{ + return rtUniCpFold(CodePoint, &g_aRTUniLowerRanges[0]); +} + + +#else /* RTUNI_USE_WCTYPE */ + + +/** + * Checks if a unicode code point is upper case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsUpper(RTUNICP CodePoint) +{ + return !!iswupper(CodePoint); +} + + +/** + * Checks if a unicode code point is lower case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsLower(RTUNICP CodePoint) +{ + return !!iswlower(CodePoint); +} + + +/** + * Checks if a unicode code point is case foldable. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsFoldable(RTUNICP CodePoint) +{ + /* Right enough. */ + return iswupper(CodePoint) || iswlower(CodePoint); +} + + +/** + * Checks if a unicode code point is alphabetic. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsAlphabetic(RTUNICP CodePoint) +{ + return !!iswalpha(CodePoint); +} + + +/** + * Checks if a unicode code point is a decimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsDecDigit(RTUNICP CodePoint) +{ + return !!iswdigit(CodePoint); +} + + +/** + * Checks if a unicode code point is a hexadecimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsHexDigit(RTUNICP CodePoint) +{ + return !!iswxdigit(CodePoint); +} + + +/** + * Checks if a unicode code point is white space. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsSpace(RTUNICP CodePoint) +{ + return !!iswspace(CodePoint); +} + + +/** + * Folds a unicode code point to upper case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToUpper(RTUNICP CodePoint) +{ + return towupper(CodePoint); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToLower(RTUNICP CodePoint) +{ + return towlower(CodePoint); +} + + +#endif /* RTUNI_USE_WCTYPE */ + + +/** + * Frees a unicode string. + * + * @param pusz The string to free. + */ +RTDECL(void) RTUniFree(PRTUNICP pusz); + + +/** + * Checks if a code point valid. + * + * Any code point (defined or not) within the 17 unicode planes (0 thru 16), + * except surrogates will be considered valid code points by this function. + * + * @returns true if in range, false if not. + * @param CodePoint The unicode code point to validate. + */ +DECLINLINE(bool) RTUniCpIsValid(RTUNICP CodePoint) +{ + return CodePoint <= 0x00d7ff + || ( CodePoint <= 0x10ffff + && CodePoint >= 0x00e000); +} + + +/** + * Checks if the given code point is in the BMP range. + * + * Surrogates are not considered in the BMP range by this function. + * + * @returns true if in BMP, false if not. + * @param CodePoint The unicode code point to consider. + */ +DECLINLINE(bool) RTUniCpIsBMP(RTUNICP CodePoint) +{ + return CodePoint <= 0xd7ff + || ( CodePoint <= 0xffff + && CodePoint >= 0xe000); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(size_t) RTUniCpCalcUtf8Len(RTUNICP CodePoint) +{ + if (CodePoint < 0x80) + return 1; + return 2 + + (CodePoint >= 0x00000800) + + (CodePoint >= 0x00010000) + + (CodePoint >= 0x00200000) + + (CodePoint >= 0x04000000) + + (CodePoint >= 0x80000000) /* illegal */; +} + + + +RT_C_DECLS_END +/** @} */ + + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/utf16.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/utf16.h @@ -0,0 +1,885 @@ +/** @file + * IPRT - String Manipulation, UTF-16 encoding. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_utf16_h +#define ___iprt_utf16_h + +#include + +RT_C_DECLS_BEGIN + + +/** @defgroup rt_str_utf16 UTF-16 String Manipulation + * @ingroup grp_rt_str + * @{ + */ + +/** + * Allocates memory for UTF-16 string storage (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated UTF-16 string. The first wide char is + * always set to the string terminator char, the contents of the + * remainder of the memory is undefined. The string must be freed by + * calling RTUtf16Free. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_UTF16_MEMORY and not VERR_NO_MEMORY. Also consider + * RTUtf16AllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate, will be rounded up + * to a multiple of two. If this is zero, we will + * allocate a terminator wide char anyway. + */ +#define RTUtf16Alloc(cb) RTUtf16AllocTag((cb), RTSTR_TAG) + +/** + * Allocates memory for UTF-16 string storage (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated UTF-16 string. The first wide char is + * always set to the string terminator char, the contents of the + * remainder of the memory is undefined. The string must be freed by + * calling RTUtf16Free. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_UTF16_MEMORY and not VERR_NO_MEMORY. Also consider + * RTUtf16AllocExTag if an IPRT status code is required. + * + * @param cb How many bytes to allocate, will be rounded up + * to a multiple of two. If this is zero, we will + * allocate a terminator wide char anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(PRTUTF16) RTUtf16AllocTag(size_t cb, const char *pszTag); + + +/** + * Free a UTF-16 string allocated by RTStrToUtf16(), RTStrToUtf16Ex(), + * RTLatin1ToUtf16(), RTLatin1ToUtf16Ex(), RTUtf16Dup() or RTUtf16DupEx(). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to free. NULL is accepted. + */ +RTDECL(void) RTUtf16Free(PRTUTF16 pwszString); + +/** + * Allocates a new copy of the specified UTF-16 string (default tag). + * + * @returns Pointer to the allocated string copy. Use RTUtf16Free() to free it. + * @returns NULL when out of memory. + * @param pwszString UTF-16 string to duplicate. + * @remark This function will not make any attempt to validate the encoding. + */ +#define RTUtf16Dup(pwszString) RTUtf16DupTag((pwszString), RTSTR_TAG) + +/** + * Allocates a new copy of the specified UTF-16 string (custom tag). + * + * @returns Pointer to the allocated string copy. Use RTUtf16Free() to free it. + * @returns NULL when out of memory. + * @param pwszString UTF-16 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(PRTUTF16) RTUtf16DupTag(PCRTUTF16 pwszString, const char *pszTag); + +/** + * Allocates a new copy of the specified UTF-16 string (default tag). + * + * @returns iprt status code. + * @param ppwszString Receives pointer of the allocated UTF-16 string. + * The returned pointer must be freed using RTUtf16Free(). + * @param pwszString UTF-16 string to duplicate. + * @param cwcExtra Number of extra RTUTF16 items to allocate. + * @remark This function will not make any attempt to validate the encoding. + */ +#define RTUtf16DupEx(ppwszString, pwszString, cwcExtra) \ + RTUtf16DupExTag((ppwszString), (pwszString), (cwcExtra), RTSTR_TAG) + +/** + * Allocates a new copy of the specified UTF-16 string (custom tag). + * + * @returns iprt status code. + * @param ppwszString Receives pointer of the allocated UTF-16 string. + * The returned pointer must be freed using RTUtf16Free(). + * @param pwszString UTF-16 string to duplicate. + * @param cwcExtra Number of extra RTUTF16 items to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16DupExTag(PRTUTF16 *ppwszString, PCRTUTF16 pwszString, size_t cwcExtra, const char *pszTag); + +/** + * Returns the length of a UTF-16 string in UTF-16 characters + * without trailing '\\0'. + * + * Surrogate pairs counts as two UTF-16 characters here. Use RTUtf16CpCnt() + * to get the exact number of code points in the string. + * + * @returns The number of RTUTF16 items in the string. + * @param pwszString Pointer the UTF-16 string. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(size_t) RTUtf16Len(PCRTUTF16 pwszString); + +/** + * Find the length of a zero-terminated byte string, given a max string length. + * + * @returns The string length or cbMax. The returned length does not include + * the zero terminator if it was found. + * + * @param pwszString The string. + * @param cwcMax The max string length in RTUTF16s. + * @sa RTUtf16NLenEx, RTStrNLen. + */ +RTDECL(size_t) RTUtf16NLen(PCRTUTF16 pwszString, size_t cwcMax); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the string has a length less than cchMax. + * @retval VERR_BUFFER_OVERFLOW if the end of the string wasn't found + * before cwcMax was reached. + * + * @param pwszString The string. + * @param cwcMax The max string length in RTUTF16s. + * @param pcwc Where to store the string length excluding the + * terminator. This is set to cwcMax if the terminator + * isn't found. + * @sa RTUtf16NLen, RTStrNLenEx. + */ +RTDECL(int) RTUtf16NLenEx(PCRTUTF16 pwszString, size_t cwcMax, size_t *pcwc); + +/** + * Find the zero terminator in a string with a limited length. + * + * @returns Pointer to the zero terminator. + * @returns NULL if the zero terminator was not found. + * + * @param pwszString The string. + * @param cwcMax The max string length. RTSTR_MAX is fine. + */ +RTDECL(PCRTUTF16) RTUtf16End(PCRTUTF16 pwszString, size_t cwcMax); + +/** + * Strips blankspaces from both ends of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16Strip(PRTUTF16 pwsz); + +/** + * Strips blankspaces from the start of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16StripL(PCRTUTF16 pwsz); + +/** + * Strips blankspaces from the end of the string. + * + * @returns pwsz. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16StripR(PRTUTF16 pwsz); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTUtf16Copy(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc); + +/** + * String copy with overflow handling, ASCII source. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pszSrc The source string, pure ASCII. NULL is not OK. + */ +RTDECL(int) RTUtf16CopyAscii(PRTUTF16 pwszDst, size_t cwcDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + * @param cwcSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTUtf16CopyEx(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc, size_t cwcSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTUtf16Cat(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc); + +/** + * String concatenation with overflow handling, ASCII source. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pszSrc The source string, pure ASCII. NULL is not OK. + */ +RTDECL(int) RTUtf16CatAscii(PRTUTF16 pwszDst, size_t cwcDst, const char *pszSrc); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + * @param cwcSrcMax The maximum number of UTF-16 chars (not code + * points) to copy from the source string, not + * counting the terminator as usual. + */ +RTDECL(int) RTUtf16CatEx(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc, size_t cwcSrcMax); + +/** + * Performs a case sensitive string compare between two UTF-16 strings. + * + * @returns < 0 if the first string less than the second string.s + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16Cmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Performs a case sensitive string compare between an UTF-16 string and a pure + * ASCII string. + * + * @returns < 0 if the first string less than the second string.s + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param psz2 Second string, pure ASCII. Null is allowed. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16CmpAscii(PCRTUTF16 pwsz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-16 strings. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + */ +RTDECL(int) RTUtf16ICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Performs a case insensitive string compare between an UTF-16 string and an + * pure ASCII string. + * + * Since this compare only takes cares about the first 128 codepoints in + * unicode, no tables are needed and there aren't any real complications. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param psz2 Second string, pure ASCII. Null is allowed. + */ +RTDECL(int) RTUtf16ICmpAscii(PCRTUTF16 pwsz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-16 strings + * using the current locale of the process (if applicable). + * + * This differs from RTUtf16ICmp() in that it will try, if a locale with the + * required data is available, to do a correct case-insensitive compare. It + * follows that it is more complex and thereby likely to be more expensive. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + */ +RTDECL(int) RTUtf16LocaleICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Folds a UTF-16 string to lowercase. + * + * This is a very simple folding; is uses the simple lowercase + * code point, it is not related to any locale just the most common + * lowercase codepoint setup by the unicode specs, and it will not + * create new surrogate pairs or remove existing ones. + * + * @returns Pointer to the passed in string. + * @param pwsz The string to fold. + */ +RTDECL(PRTUTF16) RTUtf16ToLower(PRTUTF16 pwsz); + +/** + * Folds a UTF-16 string to uppercase. + * + * This is a very simple folding; is uses the simple uppercase + * code point, it is not related to any locale just the most common + * uppercase codepoint setup by the unicode specs, and it will not + * create new surrogate pairs or remove existing ones. + * + * @returns Pointer to the passed in string. + * @param pwsz The string to fold. + */ +RTDECL(PRTUTF16) RTUtf16ToUpper(PRTUTF16 pwsz); + +/** + * Validates the UTF-16 encoding of the string. + * + * @returns iprt status code. + * @param pwsz The string. + */ +RTDECL(int) RTUtf16ValidateEncoding(PCRTUTF16 pwsz); + +/** + * Validates the UTF-16 encoding of the string. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length (/ size) in UTF-16 units. Use + * RTSTR_MAX to process the entire string. + * @param fFlags Combination of RTSTR_VALIDATE_ENCODING_XXX flags. + */ +RTDECL(int) RTUtf16ValidateEncodingEx(PCRTUTF16 pwsz, size_t cwc, uint32_t fFlags); + +/** + * Checks if the UTF-16 encoding is valid. + * + * @returns true / false. + * @param pwsz The string. + */ +RTDECL(bool) RTUtf16IsValidEncoding(PCRTUTF16 pwsz); + +/** + * Sanitise a (valid) UTF-16 string by replacing all characters outside a white + * list in-place by an ASCII replacement character. Multi-byte characters will + * be replaced byte by byte. + * + * @returns The number of code points replaced, or a negative value if the + * string is not correctly encoded. In this last case the string + * may be partially processed. + * @param pwsz The string to sanitise. + * @param puszValidSet A zero-terminated array of pairs of Unicode points. + * Each pair is the start and end point of a range, + * and the union of these ranges forms the white list. + * @param chReplacement The ASCII replacement character. + */ +RTDECL(ssize_t) RTUtf16PurgeComplementSet(PRTUTF16 pwsz, PCRTUNICP puszValidSet, char chReplacement); + +/** + * Translate a UTF-16 string into a UTF-8 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTUtf16ToUtf8(pwszString, ppszString) RTUtf16ToUtf8Tag((pwszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-16 string into a UTF-8 allocating the result buffer. + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToUtf8Tag(PCRTUTF16 pwszString, char **ppszString, const char *pszTag); + +/** + * Translates UTF-16 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from pwszString. + * The translation will stop when reaching cwcString or the terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to a pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppsz is NULL or cch is zero a buffer of at least cch chars + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTUtf16ToUtf8Ex(pwszString, cwcString, ppsz, cch, pcch) \ + RTUtf16ToUtf8ExTag((pwszString), (cwcString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates UTF-16 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from pwszString. + * The translation will stop when reaching cwcString or the terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to a pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppsz is NULL or cch is zero a buffer of at least cch chars + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToUtf8ExTag(PCRTUTF16 pwszString, size_t cwcString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Calculates the length of the UTF-16 string in UTF-8 chars (bytes). + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTUtf16ToUtf8() of the correct size. For most + * other purposes RTUtf16ToUtf8Ex() should be used. + * + * @returns Number of char (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param pwsz The UTF-16 string. + */ +RTDECL(size_t) RTUtf16CalcUtf8Len(PCRTUTF16 pwsz); + +/** + * Calculates the length of the UTF-16 string in UTF-8 chars (bytes). + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length. Use RTSTR_MAX to process the entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTUtf16CalcUtf8LenEx(PCRTUTF16 pwsz, size_t cwc, size_t *pcch); + +/** + * Translate a UTF-16 string into a Latin-1 (ISO-8859-1) allocating the result + * buffer (default tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated Latin1 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTUtf16ToLatin1(pwszString, ppszString) RTUtf16ToLatin1Tag((pwszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-16 string into a Latin-1 (ISO-8859-1) allocating the result + * buffer (custom tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated Latin1 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToLatin1Tag(PCRTUTF16 pwszString, char **ppszString, const char *pszTag); + +/** + * Translates UTF-16 to Latin-1 (ISO-8859-1) using buffer provided by the caller + * or a fittingly sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from + * pwszString. The translation will stop when reaching + * cwcString or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz Pointer to the pointer to the Latin-1 string. The + * buffer can optionally be preallocated by the caller. + * + * If cch is zero, *ppsz is undefined. + * + * If cch is non-zero and *ppsz is not NULL, then this + * will be used as the output buffer. + * VERR_BUFFER_OVERFLOW will be returned if this is + * insufficient. + * + * If cch is zero or *ppsz is NULL, then a buffer of + * sufficient size is allocated. cch can be used to + * specify a minimum size of this buffer. Use + * RTUtf16Free() to free the result. + * + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTUtf16ToLatin1Ex(pwszString, cwcString, ppsz, cch, pcch) \ + RTUtf16ToLatin1ExTag((pwszString), (cwcString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates UTF-16 to Latin-1 (ISO-8859-1) using buffer provided by the caller + * or a fittingly sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from + * pwszString. The translation will stop when reaching + * cwcString or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz Pointer to the pointer to the Latin-1 string. The + * buffer can optionally be preallocated by the caller. + * + * If cch is zero, *ppsz is undefined. + * + * If cch is non-zero and *ppsz is not NULL, then this + * will be used as the output buffer. + * VERR_BUFFER_OVERFLOW will be returned if this is + * insufficient. + * + * If cch is zero or *ppsz is NULL, then a buffer of + * sufficient size is allocated. cch can be used to + * specify a minimum size of this buffer. Use + * RTUtf16Free() to free the result. + * + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToLatin1ExTag(PCRTUTF16 pwszString, size_t cwcString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Calculates the length of the UTF-16 string in Latin-1 (ISO-8859-1) chars. + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTUtf16ToLatin1() of the correct size. For most + * other purposes RTUtf16ToLatin1Ex() should be used. + * + * @returns Number of char (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param pwsz The UTF-16 string. + */ +RTDECL(size_t) RTUtf16CalcLatin1Len(PCRTUTF16 pwsz); + +/** + * Calculates the length of the UTF-16 string in Latin-1 (ISO-8859-1) chars. + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTUtf16CalcLatin1LenEx(PCRTUTF16 pwsz, size_t cwc, size_t *pcch); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param pwsz The string. + * + * @remark This is an internal worker for RTUtf16GetCp(). + */ +RTDECL(RTUNICP) RTUtf16GetCpInternal(PCRTUTF16 pwsz); + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppwsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark This is an internal worker for RTUtf16GetCpEx(). + */ +RTDECL(int) RTUtf16GetCpExInternal(PCRTUTF16 *ppwsz, PRTUNICP pCp); + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by pwsz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param pwsz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-16 range. + * + * @remark This is an internal worker for RTUtf16GetCpEx(). + */ +RTDECL(PRTUTF16) RTUtf16PutCpInternal(PRTUTF16 pwsz, RTUNICP CodePoint); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param pwsz The string. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or an endian indicator. + */ +DECLINLINE(RTUNICP) RTUtf16GetCp(PCRTUTF16 pwsz) +{ + const RTUTF16 wc = *pwsz; + if (wc < 0xd800 || (wc > 0xdfff && wc < 0xfffe)) + return wc; + return RTUtf16GetCpInternal(pwsz); +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppwsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or and endian indicator. + */ +DECLINLINE(int) RTUtf16GetCpEx(PCRTUTF16 *ppwsz, PRTUNICP pCp) +{ + const RTUTF16 wc = **ppwsz; + if (wc < 0xd800 || (wc > 0xdfff && wc < 0xfffe)) + { + (*ppwsz)++; + *pCp = wc; + return VINF_SUCCESS; + } + return RTUtf16GetCpExInternal(ppwsz, pCp); +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by pwsz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param pwsz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-16 range. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or and endian indicator. + */ +DECLINLINE(PRTUTF16) RTUtf16PutCp(PRTUTF16 pwsz, RTUNICP CodePoint) +{ + if (CodePoint < 0xd800 || (CodePoint > 0xd800 && CodePoint < 0xfffe)) + { + *pwsz++ = (RTUTF16)CodePoint; + return pwsz; + } + return RTUtf16PutCpInternal(pwsz, CodePoint); +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param pwsz Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(PRTUTF16) RTUtf16NextCp(PCRTUTF16 pwsz) +{ + RTUNICP Cp; + RTUtf16GetCpEx(&pwsz, &Cp); + return (PRTUTF16)pwsz; +} + +/** + * Skips backwards, to the previous code point. + * + * @returns Pointer to the char after the current code point. + * @param pwszStart Pointer to the start of the string. + * @param pwsz Pointer to the current code point. + */ +RTDECL(PRTUTF16) RTUtf16PrevCp(PCRTUTF16 pwszStart, PCRTUTF16 pwsz); + + +/** + * Checks if the UTF-16 char is the high surrogate char (i.e. + * the 1st char in the pair). + * + * @returns true if it is. + * @returns false if it isn't. + * @param wc The character to investigate. + */ +DECLINLINE(bool) RTUtf16IsHighSurrogate(RTUTF16 wc) +{ + return wc >= 0xd800 && wc <= 0xdbff; +} + +/** + * Checks if the UTF-16 char is the low surrogate char (i.e. + * the 2nd char in the pair). + * + * @returns true if it is. + * @returns false if it isn't. + * @param wc The character to investigate. + */ +DECLINLINE(bool) RTUtf16IsLowSurrogate(RTUTF16 wc) +{ + return wc >= 0xdc00 && wc <= 0xdfff; +} + + +/** + * Checks if the two UTF-16 chars form a valid surrogate pair. + * + * @returns true if they do. + * @returns false if they doesn't. + * @param wcHigh The high (1st) character. + * @param wcLow The low (2nd) character. + */ +DECLINLINE(bool) RTUtf16IsSurrogatePair(RTUTF16 wcHigh, RTUTF16 wcLow) +{ + return RTUtf16IsHighSurrogate(wcHigh) + && RTUtf16IsLowSurrogate(wcLow); +} + +/** + * Formats a buffer stream as hex bytes. + * + * The default is no separating spaces or line breaks or anything. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the buffer is insufficent to hold the bytes. + * + * @param pwszBuf Output string buffer. + * @param cwcBuf The size of the output buffer in RTUTF16 units. + * @param pv Pointer to the bytes to stringify. + * @param cb The number of bytes to stringify. + * @param fFlags Combination of RTSTRPRINTHEXBYTES_F_XXX values. + * @sa RTStrPrintHexBytes. + */ +RTDECL(int) RTUtf16PrintHexBytes(PRTUTF16 pwszBuf, size_t cwcBuf, void const *pv, size_t cb, uint32_t fFlags); + +/** @} */ + + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/include/iprt/x86.h +++ linux-4.4.0/ubuntu/vbox/include/iprt/x86.h @@ -0,0 +1,3894 @@ +/** @file + * IPRT - X86 and AMD64 Structures and Definitions. + * + * @note x86.mac is generated from this file by running 'kmk incs' in the root. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_x86_h +#define ___iprt_x86_h + +#ifndef VBOX_FOR_DTRACE_LIB +# include +# include +#else +# pragma D depends_on library vbox-types.d +#endif + +/* Workaround for Solaris sys/regset.h defining CS, DS */ +#ifdef RT_OS_SOLARIS +# undef CS +# undef DS +#endif + +/** @defgroup grp_rt_x86 x86 Types and Definitions + * @ingroup grp_rt + * @{ + */ + +#ifndef VBOX_FOR_DTRACE_LIB +/** + * EFLAGS Bits. + */ +typedef struct X86EFLAGSBITS +{ + /** Bit 0 - CF - Carry flag - Status flag. */ + unsigned u1CF : 1; + /** Bit 1 - 1 - Reserved flag. */ + unsigned u1Reserved0 : 1; + /** Bit 2 - PF - Parity flag - Status flag. */ + unsigned u1PF : 1; + /** Bit 3 - 0 - Reserved flag. */ + unsigned u1Reserved1 : 1; + /** Bit 4 - AF - Auxiliary carry flag - Status flag. */ + unsigned u1AF : 1; + /** Bit 5 - 0 - Reserved flag. */ + unsigned u1Reserved2 : 1; + /** Bit 6 - ZF - Zero flag - Status flag. */ + unsigned u1ZF : 1; + /** Bit 7 - SF - Signed flag - Status flag. */ + unsigned u1SF : 1; + /** Bit 8 - TF - Trap flag - System flag. */ + unsigned u1TF : 1; + /** Bit 9 - IF - Interrupt flag - System flag. */ + unsigned u1IF : 1; + /** Bit 10 - DF - Direction flag - Control flag. */ + unsigned u1DF : 1; + /** Bit 11 - OF - Overflow flag - Status flag. */ + unsigned u1OF : 1; + /** Bit 12-13 - IOPL - I/O privilege level flag - System flag. */ + unsigned u2IOPL : 2; + /** Bit 14 - NT - Nested task flag - System flag. */ + unsigned u1NT : 1; + /** Bit 15 - 0 - Reserved flag. */ + unsigned u1Reserved3 : 1; + /** Bit 16 - RF - Resume flag - System flag. */ + unsigned u1RF : 1; + /** Bit 17 - VM - Virtual 8086 mode - System flag. */ + unsigned u1VM : 1; + /** Bit 18 - AC - Alignment check flag - System flag. Works with CR0.AM. */ + unsigned u1AC : 1; + /** Bit 19 - VIF - Virtual interrupt flag - System flag. */ + unsigned u1VIF : 1; + /** Bit 20 - VIP - Virtual interrupt pending flag - System flag. */ + unsigned u1VIP : 1; + /** Bit 21 - ID - CPUID flag - System flag. If this responds to flipping CPUID is supported. */ + unsigned u1ID : 1; + /** Bit 22-31 - 0 - Reserved flag. */ + unsigned u10Reserved4 : 10; +} X86EFLAGSBITS; +/** Pointer to EFLAGS bits. */ +typedef X86EFLAGSBITS *PX86EFLAGSBITS; +/** Pointer to const EFLAGS bits. */ +typedef const X86EFLAGSBITS *PCX86EFLAGSBITS; +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** + * EFLAGS. + */ +typedef union X86EFLAGS +{ + /** The plain unsigned view. */ + uint32_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** The bitfield view. */ + X86EFLAGSBITS Bits; +#endif + /** The 8-bit view. */ + uint8_t au8[4]; + /** The 16-bit view. */ + uint16_t au16[2]; + /** The 32-bit view. */ + uint32_t au32[1]; + /** The 32-bit view. */ + uint32_t u32; +} X86EFLAGS; +/** Pointer to EFLAGS. */ +typedef X86EFLAGS *PX86EFLAGS; +/** Pointer to const EFLAGS. */ +typedef const X86EFLAGS *PCX86EFLAGS; + +/** + * RFLAGS (32 upper bits are reserved). + */ +typedef union X86RFLAGS +{ + /** The plain unsigned view. */ + uint64_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** The bitfield view. */ + X86EFLAGSBITS Bits; +#endif + /** The 8-bit view. */ + uint8_t au8[8]; + /** The 16-bit view. */ + uint16_t au16[4]; + /** The 32-bit view. */ + uint32_t au32[2]; + /** The 64-bit view. */ + uint64_t au64[1]; + /** The 64-bit view. */ + uint64_t u64; +} X86RFLAGS; +/** Pointer to RFLAGS. */ +typedef X86RFLAGS *PX86RFLAGS; +/** Pointer to const RFLAGS. */ +typedef const X86RFLAGS *PCX86RFLAGS; + + +/** @name EFLAGS + * @{ + */ +/** Bit 0 - CF - Carry flag - Status flag. */ +#define X86_EFL_CF RT_BIT(0) +#define X86_EFL_CF_BIT 0 +/** Bit 1 - Reserved, reads as 1. */ +#define X86_EFL_1 RT_BIT(1) +/** Bit 2 - PF - Parity flag - Status flag. */ +#define X86_EFL_PF RT_BIT(2) +/** Bit 4 - AF - Auxiliary carry flag - Status flag. */ +#define X86_EFL_AF RT_BIT(4) +#define X86_EFL_AF_BIT 4 +/** Bit 6 - ZF - Zero flag - Status flag. */ +#define X86_EFL_ZF RT_BIT(6) +#define X86_EFL_ZF_BIT 6 +/** Bit 7 - SF - Signed flag - Status flag. */ +#define X86_EFL_SF RT_BIT(7) +#define X86_EFL_SF_BIT 7 +/** Bit 8 - TF - Trap flag - System flag. */ +#define X86_EFL_TF RT_BIT(8) +/** Bit 9 - IF - Interrupt flag - System flag. */ +#define X86_EFL_IF RT_BIT(9) +/** Bit 10 - DF - Direction flag - Control flag. */ +#define X86_EFL_DF RT_BIT(10) +/** Bit 11 - OF - Overflow flag - Status flag. */ +#define X86_EFL_OF RT_BIT(11) +#define X86_EFL_OF_BIT 11 +/** Bit 12-13 - IOPL - I/O privilege level flag - System flag. */ +#define X86_EFL_IOPL (RT_BIT(12) | RT_BIT(13)) +/** Bit 14 - NT - Nested task flag - System flag. */ +#define X86_EFL_NT RT_BIT(14) +/** Bit 16 - RF - Resume flag - System flag. */ +#define X86_EFL_RF RT_BIT(16) +/** Bit 17 - VM - Virtual 8086 mode - System flag. */ +#define X86_EFL_VM RT_BIT(17) +/** Bit 18 - AC - Alignment check flag - System flag. Works with CR0.AM. */ +#define X86_EFL_AC RT_BIT(18) +/** Bit 19 - VIF - Virtual interrupt flag - System flag. */ +#define X86_EFL_VIF RT_BIT(19) +/** Bit 20 - VIP - Virtual interrupt pending flag - System flag. */ +#define X86_EFL_VIP RT_BIT(20) +/** Bit 21 - ID - CPUID flag - System flag. If this responds to flipping CPUID is supported. */ +#define X86_EFL_ID RT_BIT(21) +/** All live bits. */ +#define X86_EFL_LIVE_MASK UINT32_C(0x003f7fd5) +/** Read as 1 bits. */ +#define X86_EFL_RA1_MASK RT_BIT_32(1) +/** IOPL shift. */ +#define X86_EFL_IOPL_SHIFT 12 +/** The IOPL level from the flags. */ +#define X86_EFL_GET_IOPL(efl) (((efl) >> X86_EFL_IOPL_SHIFT) & 3) +/** Bits restored by popf */ +#define X86_EFL_POPF_BITS ( X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_TF | X86_EFL_IF \ + | X86_EFL_DF | X86_EFL_OF | X86_EFL_IOPL | X86_EFL_NT | X86_EFL_AC | X86_EFL_ID ) +/** The status bits commonly updated by arithmetic instructions. */ +#define X86_EFL_STATUS_BITS ( X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF ) +/** @} */ + + +/** CPUID Feature information - ECX. + * CPUID query with EAX=1. + */ +#ifndef VBOX_FOR_DTRACE_LIB +typedef struct X86CPUIDFEATECX +{ + /** Bit 0 - SSE3 - Supports SSE3 or not. */ + unsigned u1SSE3 : 1; + /** Bit 1 - PCLMULQDQ. */ + unsigned u1PCLMULQDQ : 1; + /** Bit 2 - DS Area 64-bit layout. */ + unsigned u1DTE64 : 1; + /** Bit 3 - MONITOR - Supports MONITOR/MWAIT. */ + unsigned u1Monitor : 1; + /** Bit 4 - CPL-DS - CPL Qualified Debug Store. */ + unsigned u1CPLDS : 1; + /** Bit 5 - VMX - Virtual Machine Technology. */ + unsigned u1VMX : 1; + /** Bit 6 - SMX: Safer Mode Extensions. */ + unsigned u1SMX : 1; + /** Bit 7 - EST - Enh. SpeedStep Tech. */ + unsigned u1EST : 1; + /** Bit 8 - TM2 - Terminal Monitor 2. */ + unsigned u1TM2 : 1; + /** Bit 9 - SSSE3 - Supplemental Streaming SIMD Extensions 3. */ + unsigned u1SSSE3 : 1; + /** Bit 10 - CNTX-ID - L1 Context ID. */ + unsigned u1CNTXID : 1; + /** Bit 11 - Reserved. */ + unsigned u1Reserved1 : 1; + /** Bit 12 - FMA. */ + unsigned u1FMA : 1; + /** Bit 13 - CX16 - CMPXCHG16B. */ + unsigned u1CX16 : 1; + /** Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */ + unsigned u1TPRUpdate : 1; + /** Bit 15 - PDCM - Perf/Debug Capability MSR. */ + unsigned u1PDCM : 1; + /** Bit 16 - Reserved. */ + unsigned u1Reserved2 : 1; + /** Bit 17 - PCID - Process-context identifiers. */ + unsigned u1PCID : 1; + /** Bit 18 - Direct Cache Access. */ + unsigned u1DCA : 1; + /** Bit 19 - SSE4_1 - Supports SSE4_1 or not. */ + unsigned u1SSE4_1 : 1; + /** Bit 20 - SSE4_2 - Supports SSE4_2 or not. */ + unsigned u1SSE4_2 : 1; + /** Bit 21 - x2APIC. */ + unsigned u1x2APIC : 1; + /** Bit 22 - MOVBE - Supports MOVBE. */ + unsigned u1MOVBE : 1; + /** Bit 23 - POPCNT - Supports POPCNT. */ + unsigned u1POPCNT : 1; + /** Bit 24 - TSC-Deadline. */ + unsigned u1TSCDEADLINE : 1; + /** Bit 25 - AES. */ + unsigned u1AES : 1; + /** Bit 26 - XSAVE - Supports XSAVE. */ + unsigned u1XSAVE : 1; + /** Bit 27 - OSXSAVE - Supports OSXSAVE. */ + unsigned u1OSXSAVE : 1; + /** Bit 28 - AVX - Supports AVX instruction extensions. */ + unsigned u1AVX : 1; + /** Bit 29 - F16C - Supports 16-bit floating point conversion instructions. */ + unsigned u1F16C : 1; + /** Bit 30 - RDRAND - Supports RDRAND. */ + unsigned u1RDRAND : 1; + /** Bit 31 - Hypervisor present (we're a guest). */ + unsigned u1HVP : 1; +} X86CPUIDFEATECX; +#else /* VBOX_FOR_DTRACE_LIB */ +typedef uint32_t X86CPUIDFEATECX; +#endif /* VBOX_FOR_DTRACE_LIB */ +/** Pointer to CPUID Feature Information - ECX. */ +typedef X86CPUIDFEATECX *PX86CPUIDFEATECX; +/** Pointer to const CPUID Feature Information - ECX. */ +typedef const X86CPUIDFEATECX *PCX86CPUIDFEATECX; + + +/** CPUID Feature Information - EDX. + * CPUID query with EAX=1. + */ +#ifndef VBOX_FOR_DTRACE_LIB /* DTrace different (brain-dead from a C pov) bitfield implementation */ +typedef struct X86CPUIDFEATEDX +{ + /** Bit 0 - FPU - x87 FPU on Chip. */ + unsigned u1FPU : 1; + /** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ + unsigned u1VME : 1; + /** Bit 2 - DE - Debugging extensions. */ + unsigned u1DE : 1; + /** Bit 3 - PSE - Page Size Extension. */ + unsigned u1PSE : 1; + /** Bit 4 - TSC - Time Stamp Counter. */ + unsigned u1TSC : 1; + /** Bit 5 - MSR - Model Specific Registers RDMSR and WRMSR Instructions. */ + unsigned u1MSR : 1; + /** Bit 6 - PAE - Physical Address Extension. */ + unsigned u1PAE : 1; + /** Bit 7 - MCE - Machine Check Exception. */ + unsigned u1MCE : 1; + /** Bit 8 - CX8 - CMPXCHG8B instruction. */ + unsigned u1CX8 : 1; + /** Bit 9 - APIC - APIC On-Chip. */ + unsigned u1APIC : 1; + /** Bit 10 - Reserved. */ + unsigned u1Reserved1 : 1; + /** Bit 11 - SEP - SYSENTER and SYSEXIT. */ + unsigned u1SEP : 1; + /** Bit 12 - MTRR - Memory Type Range Registers. */ + unsigned u1MTRR : 1; + /** Bit 13 - PGE - PTE Global Bit. */ + unsigned u1PGE : 1; + /** Bit 14 - MCA - Machine Check Architecture. */ + unsigned u1MCA : 1; + /** Bit 15 - CMOV - Conditional Move Instructions. */ + unsigned u1CMOV : 1; + /** Bit 16 - PAT - Page Attribute Table. */ + unsigned u1PAT : 1; + /** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ + unsigned u1PSE36 : 1; + /** Bit 18 - PSN - Processor Serial Number. */ + unsigned u1PSN : 1; + /** Bit 19 - CLFSH - CLFLUSH Instruction. */ + unsigned u1CLFSH : 1; + /** Bit 20 - Reserved. */ + unsigned u1Reserved2 : 1; + /** Bit 21 - DS - Debug Store. */ + unsigned u1DS : 1; + /** Bit 22 - ACPI - Thermal Monitor and Software Controlled Clock Facilities. */ + unsigned u1ACPI : 1; + /** Bit 23 - MMX - Intel MMX 'Technology'. */ + unsigned u1MMX : 1; + /** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ + unsigned u1FXSR : 1; + /** Bit 25 - SSE - SSE Support. */ + unsigned u1SSE : 1; + /** Bit 26 - SSE2 - SSE2 Support. */ + unsigned u1SSE2 : 1; + /** Bit 27 - SS - Self Snoop. */ + unsigned u1SS : 1; + /** Bit 28 - HTT - Hyper-Threading Technology. */ + unsigned u1HTT : 1; + /** Bit 29 - TM - Thermal Monitor. */ + unsigned u1TM : 1; + /** Bit 30 - Reserved - . */ + unsigned u1Reserved3 : 1; + /** Bit 31 - PBE - Pending Break Enabled. */ + unsigned u1PBE : 1; +} X86CPUIDFEATEDX; +#else /* VBOX_FOR_DTRACE_LIB */ +typedef uint32_t X86CPUIDFEATEDX; +#endif /* VBOX_FOR_DTRACE_LIB */ +/** Pointer to CPUID Feature Information - EDX. */ +typedef X86CPUIDFEATEDX *PX86CPUIDFEATEDX; +/** Pointer to const CPUID Feature Information - EDX. */ +typedef const X86CPUIDFEATEDX *PCX86CPUIDFEATEDX; + +/** @name CPUID Vendor information. + * CPUID query with EAX=0. + * @{ + */ +#define X86_CPUID_VENDOR_INTEL_EBX 0x756e6547 /* Genu */ +#define X86_CPUID_VENDOR_INTEL_ECX 0x6c65746e /* ntel */ +#define X86_CPUID_VENDOR_INTEL_EDX 0x49656e69 /* ineI */ + +#define X86_CPUID_VENDOR_AMD_EBX 0x68747541 /* Auth */ +#define X86_CPUID_VENDOR_AMD_ECX 0x444d4163 /* cAMD */ +#define X86_CPUID_VENDOR_AMD_EDX 0x69746e65 /* enti */ + +#define X86_CPUID_VENDOR_VIA_EBX 0x746e6543 /* Cent */ +#define X86_CPUID_VENDOR_VIA_ECX 0x736c7561 /* auls */ +#define X86_CPUID_VENDOR_VIA_EDX 0x48727561 /* aurH */ +/** @} */ + + +/** @name CPUID Feature information. + * CPUID query with EAX=1. + * @{ + */ +/** ECX Bit 0 - SSE3 - Supports SSE3 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE3 RT_BIT(0) +/** ECX Bit 1 - PCLMUL - PCLMULQDQ support (for AES-GCM). */ +#define X86_CPUID_FEATURE_ECX_PCLMUL RT_BIT(1) +/** ECX Bit 2 - DTES64 - DS Area 64-bit Layout. */ +#define X86_CPUID_FEATURE_ECX_DTES64 RT_BIT(2) +/** ECX Bit 3 - MONITOR - Supports MONITOR/MWAIT. */ +#define X86_CPUID_FEATURE_ECX_MONITOR RT_BIT(3) +/** ECX Bit 4 - CPL-DS - CPL Qualified Debug Store. */ +#define X86_CPUID_FEATURE_ECX_CPLDS RT_BIT(4) +/** ECX Bit 5 - VMX - Virtual Machine Technology. */ +#define X86_CPUID_FEATURE_ECX_VMX RT_BIT(5) +/** ECX Bit 6 - SMX - Safer Mode Extensions. */ +#define X86_CPUID_FEATURE_ECX_SMX RT_BIT(6) +/** ECX Bit 7 - EST - Enh. SpeedStep Tech. */ +#define X86_CPUID_FEATURE_ECX_EST RT_BIT(7) +/** ECX Bit 8 - TM2 - Terminal Monitor 2. */ +#define X86_CPUID_FEATURE_ECX_TM2 RT_BIT(8) +/** ECX Bit 9 - SSSE3 - Supplemental Streaming SIMD Extensions 3. */ +#define X86_CPUID_FEATURE_ECX_SSSE3 RT_BIT(9) +/** ECX Bit 10 - CNTX-ID - L1 Context ID. */ +#define X86_CPUID_FEATURE_ECX_CNTXID RT_BIT(10) +/** ECX Bit 11 - SDBG - Sillicon debug interface (IA32_DEBUG_INTERFACE MSR). + * See figure 3-6 and table 3-10, in intel Vol. 2A. from 2015-01-01. */ +#define X86_CPUID_FEATURE_ECX_SDBG RT_BIT(11) +/** ECX Bit 12 - FMA. */ +#define X86_CPUID_FEATURE_ECX_FMA RT_BIT(12) +/** ECX Bit 13 - CX16 - CMPXCHG16B. */ +#define X86_CPUID_FEATURE_ECX_CX16 RT_BIT(13) +/** ECX Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */ +#define X86_CPUID_FEATURE_ECX_TPRUPDATE RT_BIT(14) +/** ECX Bit 15 - PDCM - Perf/Debug Capability MSR. */ +#define X86_CPUID_FEATURE_ECX_PDCM RT_BIT(15) +/** ECX Bit 17 - PCID - Process-context identifiers. */ +#define X86_CPUID_FEATURE_ECX_PCID RT_BIT(17) +/** ECX Bit 18 - DCA - Direct Cache Access. */ +#define X86_CPUID_FEATURE_ECX_DCA RT_BIT(18) +/** ECX Bit 19 - SSE4_1 - Supports SSE4_1 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE4_1 RT_BIT(19) +/** ECX Bit 20 - SSE4_2 - Supports SSE4_2 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE4_2 RT_BIT(20) +/** ECX Bit 21 - x2APIC support. */ +#define X86_CPUID_FEATURE_ECX_X2APIC RT_BIT(21) +/** ECX Bit 22 - MOVBE instruction. */ +#define X86_CPUID_FEATURE_ECX_MOVBE RT_BIT(22) +/** ECX Bit 23 - POPCNT instruction. */ +#define X86_CPUID_FEATURE_ECX_POPCNT RT_BIT(23) +/** ECX Bir 24 - TSC-Deadline. */ +#define X86_CPUID_FEATURE_ECX_TSCDEADL RT_BIT(24) +/** ECX Bit 25 - AES instructions. */ +#define X86_CPUID_FEATURE_ECX_AES RT_BIT(25) +/** ECX Bit 26 - XSAVE instruction. */ +#define X86_CPUID_FEATURE_ECX_XSAVE RT_BIT(26) +/** ECX Bit 27 - OSXSAVE instruction. */ +#define X86_CPUID_FEATURE_ECX_OSXSAVE RT_BIT(27) +/** ECX Bit 28 - AVX. */ +#define X86_CPUID_FEATURE_ECX_AVX RT_BIT(28) +/** ECX Bit 29 - F16C - Half-precision convert instruction support. */ +#define X86_CPUID_FEATURE_ECX_F16C RT_BIT(29) +/** ECX Bit 30 - RDRAND instruction. */ +#define X86_CPUID_FEATURE_ECX_RDRAND RT_BIT(30) +/** ECX Bit 31 - Hypervisor Present (software only). */ +#define X86_CPUID_FEATURE_ECX_HVP RT_BIT(31) + + +/** Bit 0 - FPU - x87 FPU on Chip. */ +#define X86_CPUID_FEATURE_EDX_FPU RT_BIT(0) +/** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ +#define X86_CPUID_FEATURE_EDX_VME RT_BIT(1) +/** Bit 2 - DE - Debugging extensions. */ +#define X86_CPUID_FEATURE_EDX_DE RT_BIT(2) +/** Bit 3 - PSE - Page Size Extension. */ +#define X86_CPUID_FEATURE_EDX_PSE RT_BIT(3) +/** Bit 4 - TSC - Time Stamp Counter. */ +#define X86_CPUID_FEATURE_EDX_TSC RT_BIT(4) +/** Bit 5 - MSR - Model Specific Registers RDMSR and WRMSR Instructions. */ +#define X86_CPUID_FEATURE_EDX_MSR RT_BIT(5) +/** Bit 6 - PAE - Physical Address Extension. */ +#define X86_CPUID_FEATURE_EDX_PAE RT_BIT(6) +/** Bit 7 - MCE - Machine Check Exception. */ +#define X86_CPUID_FEATURE_EDX_MCE RT_BIT(7) +/** Bit 8 - CX8 - CMPXCHG8B instruction. */ +#define X86_CPUID_FEATURE_EDX_CX8 RT_BIT(8) +/** Bit 9 - APIC - APIC On-Chip. */ +#define X86_CPUID_FEATURE_EDX_APIC RT_BIT(9) +/** Bit 11 - SEP - SYSENTER and SYSEXIT Present. */ +#define X86_CPUID_FEATURE_EDX_SEP RT_BIT(11) +/** Bit 12 - MTRR - Memory Type Range Registers. */ +#define X86_CPUID_FEATURE_EDX_MTRR RT_BIT(12) +/** Bit 13 - PGE - PTE Global Bit. */ +#define X86_CPUID_FEATURE_EDX_PGE RT_BIT(13) +/** Bit 14 - MCA - Machine Check Architecture. */ +#define X86_CPUID_FEATURE_EDX_MCA RT_BIT(14) +/** Bit 15 - CMOV - Conditional Move Instructions. */ +#define X86_CPUID_FEATURE_EDX_CMOV RT_BIT(15) +/** Bit 16 - PAT - Page Attribute Table. */ +#define X86_CPUID_FEATURE_EDX_PAT RT_BIT(16) +/** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ +#define X86_CPUID_FEATURE_EDX_PSE36 RT_BIT(17) +/** Bit 18 - PSN - Processor Serial Number. */ +#define X86_CPUID_FEATURE_EDX_PSN RT_BIT(18) +/** Bit 19 - CLFSH - CLFLUSH Instruction. */ +#define X86_CPUID_FEATURE_EDX_CLFSH RT_BIT(19) +/** Bit 21 - DS - Debug Store. */ +#define X86_CPUID_FEATURE_EDX_DS RT_BIT(21) +/** Bit 22 - ACPI - Thermal Monitor and Software Controlled Clock Facilities. */ +#define X86_CPUID_FEATURE_EDX_ACPI RT_BIT(22) +/** Bit 23 - MMX - Intel MMX Technology. */ +#define X86_CPUID_FEATURE_EDX_MMX RT_BIT(23) +/** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_FEATURE_EDX_FXSR RT_BIT(24) +/** Bit 25 - SSE - SSE Support. */ +#define X86_CPUID_FEATURE_EDX_SSE RT_BIT(25) +/** Bit 26 - SSE2 - SSE2 Support. */ +#define X86_CPUID_FEATURE_EDX_SSE2 RT_BIT(26) +/** Bit 27 - SS - Self Snoop. */ +#define X86_CPUID_FEATURE_EDX_SS RT_BIT(27) +/** Bit 28 - HTT - Hyper-Threading Technology. */ +#define X86_CPUID_FEATURE_EDX_HTT RT_BIT(28) +/** Bit 29 - TM - Therm. Monitor. */ +#define X86_CPUID_FEATURE_EDX_TM RT_BIT(29) +/** Bit 31 - PBE - Pending Break Enabled. */ +#define X86_CPUID_FEATURE_EDX_PBE RT_BIT(31) +/** @} */ + +/** @name CPUID mwait/monitor information. + * CPUID query with EAX=5. + * @{ + */ +/** ECX Bit 0 - MWAITEXT - Supports mwait/monitor extensions or not. */ +#define X86_CPUID_MWAIT_ECX_EXT RT_BIT(0) +/** ECX Bit 1 - MWAITBREAK - Break mwait for external interrupt even if EFLAGS.IF=0. */ +#define X86_CPUID_MWAIT_ECX_BREAKIRQIF0 RT_BIT(1) +/** @} */ + + +/** @name CPUID Structured Extended Feature information. + * CPUID query with EAX=7. + * @{ + */ +/** EBX Bit 0 - FSGSBASE - Supports RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE. */ +#define X86_CPUID_STEXT_FEATURE_EBX_FSGSBASE RT_BIT(0) +/** EBX Bit 1 - TSCADJUST - Supports MSR_IA32_TSC_ADJUST. */ +#define X86_CPUID_STEXT_FEATURE_EBX_TSC_ADJUST RT_BIT(1) +/** EBX Bit 3 - BMI1 - Advanced Bit Manipulation extension 1. */ +#define X86_CPUID_STEXT_FEATURE_EBX_BMI1 RT_BIT(3) +/** EBX Bit 4 - HLE - Hardware Lock Elision. */ +#define X86_CPUID_STEXT_FEATURE_EBX_HLE RT_BIT(4) +/** EBX Bit 5 - AVX2 - Advanced Vector Extensions 2. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX2 RT_BIT(5) +/** EBX Bit 7 - SMEP - Supervisor Mode Execution Prevention. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SMEP RT_BIT(7) +/** EBX Bit 8 - BMI2 - Advanced Bit Manipulation extension 2. */ +#define X86_CPUID_STEXT_FEATURE_EBX_BMI2 RT_BIT(8) +/** EBX Bit 9 - ERMS - Supports Enhanced REP MOVSB/STOSB. */ +#define X86_CPUID_STEXT_FEATURE_EBX_ERMS RT_BIT(9) +/** EBX Bit 10 - INVPCID - Supports INVPCID. */ +#define X86_CPUID_STEXT_FEATURE_EBX_INVPCID RT_BIT(10) +/** EBX Bit 11 - RTM - Supports Restricted Transactional Memory. */ +#define X86_CPUID_STEXT_FEATURE_EBX_RTM RT_BIT(11) +/** EBX Bit 12 - PQM - Supports Platform Quality of Service Monitoring. */ +#define X86_CPUID_STEXT_FEATURE_EBX_PQM RT_BIT(12) +/** EBX Bit 13 - DEPFPU_CS_DS - Deprecates FPU CS, FPU DS values if set. */ +#define X86_CPUID_STEXT_FEATURE_EBX_DEPR_FPU_CS_DS RT_BIT(13) +/** EBX Bit 14 - MPE - Supports Intel Memory Protection Extensions. */ +#define X86_CPUID_STEXT_FEATURE_EBX_MPE RT_BIT(14) +/** EBX Bit 15 - PQE - Supports Platform Quality of Service Enforcement. */ +#define X86_CPUID_STEXT_FEATURE_EBX_PQE RT_BIT(15) +/** EBX Bit 16 - AVX512F - Supports AVX512F. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512F RT_BIT(16) +/** EBX Bit 18 - RDSEED - Supports RDSEED. */ +#define X86_CPUID_STEXT_FEATURE_EBX_RDSEED RT_BIT(18) +/** EBX Bit 19 - ADX - Supports ADCX/ADOX. */ +#define X86_CPUID_STEXT_FEATURE_EBX_ADX RT_BIT(19) +/** EBX Bit 20 - SMAP - Supports Supervisor Mode Access Prevention. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SMAP RT_BIT(20) +/** EBX Bit 23 - CLFLUSHOPT - Supports CLFLUSHOPT (Cache Line Flush). */ +#define X86_CPUID_STEXT_FEATURE_EBX_CLFLUSHOPT RT_BIT(23) +/** EBX Bit 25 - INTEL_PT - Supports Intel Processor Trace. */ +#define X86_CPUID_STEXT_FEATURE_EBX_INTEL_PT RT_BIT(25) +/** EBX Bit 26 - AVX512PF - Supports AVX512PF. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512PF RT_BIT(26) +/** EBX Bit 27 - AVX512ER - Supports AVX512ER. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512ER RT_BIT(27) +/** EBX Bit 28 - AVX512CD - Supports AVX512CD. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512CD RT_BIT(28) +/** EBX Bit 29 - SHA - Supports Secure Hash Algorithm extensions. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SHA RT_BIT(29) + +/** ECX Bit 0 - PREFETCHWT1 - Supports the PREFETCHWT1 instruction. */ +#define X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1 RT_BIT(0) +/** @} */ + + +/** @name CPUID Extended Feature information. + * CPUID query with EAX=0x80000001. + * @{ + */ +/** ECX Bit 0 - LAHF/SAHF support in 64-bit mode. */ +#define X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF RT_BIT(0) + +/** EDX Bit 11 - SYSCALL/SYSRET. */ +#define X86_CPUID_EXT_FEATURE_EDX_SYSCALL RT_BIT(11) +/** EDX Bit 20 - No-Execute/Execute-Disable. */ +#define X86_CPUID_EXT_FEATURE_EDX_NX RT_BIT(20) +/** EDX Bit 26 - 1 GB large page. */ +#define X86_CPUID_EXT_FEATURE_EDX_PAGE1GB RT_BIT(26) +/** EDX Bit 27 - RDTSCP. */ +#define X86_CPUID_EXT_FEATURE_EDX_RDTSCP RT_BIT(27) +/** EDX Bit 29 - AMD Long Mode/Intel-64 Instructions. */ +#define X86_CPUID_EXT_FEATURE_EDX_LONG_MODE RT_BIT(29) +/** @}*/ + +/** @name CPUID AMD Feature information. + * CPUID query with EAX=0x80000001. + * @{ + */ +/** Bit 0 - FPU - x87 FPU on Chip. */ +#define X86_CPUID_AMD_FEATURE_EDX_FPU RT_BIT(0) +/** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ +#define X86_CPUID_AMD_FEATURE_EDX_VME RT_BIT(1) +/** Bit 2 - DE - Debugging extensions. */ +#define X86_CPUID_AMD_FEATURE_EDX_DE RT_BIT(2) +/** Bit 3 - PSE - Page Size Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PSE RT_BIT(3) +/** Bit 4 - TSC - Time Stamp Counter. */ +#define X86_CPUID_AMD_FEATURE_EDX_TSC RT_BIT(4) +/** Bit 5 - MSR - K86 Model Specific Registers RDMSR and WRMSR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_MSR RT_BIT(5) +/** Bit 6 - PAE - Physical Address Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PAE RT_BIT(6) +/** Bit 7 - MCE - Machine Check Exception. */ +#define X86_CPUID_AMD_FEATURE_EDX_MCE RT_BIT(7) +/** Bit 8 - CX8 - CMPXCHG8B instruction. */ +#define X86_CPUID_AMD_FEATURE_EDX_CX8 RT_BIT(8) +/** Bit 9 - APIC - APIC On-Chip. */ +#define X86_CPUID_AMD_FEATURE_EDX_APIC RT_BIT(9) +/** Bit 12 - MTRR - Memory Type Range Registers. */ +#define X86_CPUID_AMD_FEATURE_EDX_MTRR RT_BIT(12) +/** Bit 13 - PGE - PTE Global Bit. */ +#define X86_CPUID_AMD_FEATURE_EDX_PGE RT_BIT(13) +/** Bit 14 - MCA - Machine Check Architecture. */ +#define X86_CPUID_AMD_FEATURE_EDX_MCA RT_BIT(14) +/** Bit 15 - CMOV - Conditional Move Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_CMOV RT_BIT(15) +/** Bit 16 - PAT - Page Attribute Table. */ +#define X86_CPUID_AMD_FEATURE_EDX_PAT RT_BIT(16) +/** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PSE36 RT_BIT(17) +/** Bit 22 - AXMMX - AMD Extensions to MMX Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_AXMMX RT_BIT(22) +/** Bit 23 - MMX - Intel MMX Technology. */ +#define X86_CPUID_AMD_FEATURE_EDX_MMX RT_BIT(23) +/** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_FXSR RT_BIT(24) +/** Bit 25 - FFXSR - AMD fast FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_FFXSR RT_BIT(25) +/** Bit 30 - 3DNOWEXT - AMD Extensions to 3DNow. */ +#define X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX RT_BIT(30) +/** Bit 31 - 3DNOW - AMD 3DNow. */ +#define X86_CPUID_AMD_FEATURE_EDX_3DNOW RT_BIT(31) + +/** Bit 1 - CmpLegacy - Core multi-processing legacy mode. */ +#define X86_CPUID_AMD_FEATURE_ECX_CMPL RT_BIT(1) +/** Bit 2 - SVM - AMD VM extensions. */ +#define X86_CPUID_AMD_FEATURE_ECX_SVM RT_BIT(2) +/** Bit 3 - EXTAPIC - AMD extended APIC registers starting at 0x400. */ +#define X86_CPUID_AMD_FEATURE_ECX_EXT_APIC RT_BIT(3) +/** Bit 4 - CR8L - AMD LOCK MOV CR0 means MOV CR8. */ +#define X86_CPUID_AMD_FEATURE_ECX_CR8L RT_BIT(4) +/** Bit 5 - ABM - AMD Advanced bit manipulation. LZCNT instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_ABM RT_BIT(5) +/** Bit 6 - SSE4A - AMD EXTRQ, INSERTQ, MOVNTSS, and MOVNTSD instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_SSE4A RT_BIT(6) +/** Bit 7 - MISALIGNSSE - AMD Misaligned SSE mode. */ +#define X86_CPUID_AMD_FEATURE_ECX_MISALNSSE RT_BIT(7) +/** Bit 8 - 3DNOWPRF - AMD PREFETCH and PREFETCHW instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_3DNOWPRF RT_BIT(8) +/** Bit 9 - OSVW - AMD OS visible workaround. */ +#define X86_CPUID_AMD_FEATURE_ECX_OSVW RT_BIT(9) +/** Bit 10 - IBS - Instruct based sampling. */ +#define X86_CPUID_AMD_FEATURE_ECX_IBS RT_BIT(10) +/** Bit 11 - XOP - Extended operation support (see APM6). */ +#define X86_CPUID_AMD_FEATURE_ECX_XOP RT_BIT(11) +/** Bit 12 - SKINIT - AMD SKINIT: SKINIT, STGI, and DEV support. */ +#define X86_CPUID_AMD_FEATURE_ECX_SKINIT RT_BIT(12) +/** Bit 13 - WDT - AMD Watchdog timer support. */ +#define X86_CPUID_AMD_FEATURE_ECX_WDT RT_BIT(13) +/** Bit 15 - LWP - Lightweight profiling support. */ +#define X86_CPUID_AMD_FEATURE_ECX_LWP RT_BIT(15) +/** Bit 16 - FMA4 - Four operand FMA instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_FMA4 RT_BIT(16) +/** Bit 19 - NodeId - Indicates support for + * MSR_C001_100C[NodeId,NodesPerProcessr]. */ +#define X86_CPUID_AMD_FEATURE_ECX_NODEID RT_BIT(19) +/** Bit 21 - TBM - Trailing bit manipulation instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_TBM RT_BIT(21) +/** Bit 22 - TopologyExtensions - . */ +#define X86_CPUID_AMD_FEATURE_ECX_TOPOEXT RT_BIT(22) +/** @} */ + + +/** @name CPUID AMD Feature information. + * CPUID query with EAX=0x80000007. + * @{ + */ +/** Bit 0 - TS - Temperature Sensor. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TS RT_BIT(0) +/** Bit 1 - FID - Frequency ID Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_FID RT_BIT(1) +/** Bit 2 - VID - Voltage ID Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_VID RT_BIT(2) +/** Bit 3 - TTP - THERMTRIP. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TTP RT_BIT(3) +/** Bit 4 - TM - Hardware Thermal Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TM RT_BIT(4) +/** Bit 5 - STC - Software Thermal Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_STC RT_BIT(5) +/** Bit 6 - MC - 100 Mhz Multiplier Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_MC RT_BIT(6) +/** Bit 7 - HWPSTATE - Hardware P-State Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_HWPSTATE RT_BIT(7) +/** Bit 8 - TSCINVAR - TSC Invariant. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TSCINVAR RT_BIT(8) +/** Bit 9 - CPB - TSC Invariant. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_CPB RT_BIT(9) +/** Bit 10 - EffFreqRO - MPERF/APERF. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_EFRO RT_BIT(10) +/** Bit 11 - PFI - Processor feedback interface (see EAX). */ +#define X86_CPUID_AMD_ADVPOWER_EDX_PFI RT_BIT(11) +/** Bit 12 - PA - Processor accumulator (MSR c001_007a). */ +#define X86_CPUID_AMD_ADVPOWER_EDX_PA RT_BIT(12) +/** @} */ + + +/** @name CR0 + * @{ */ +/** Bit 0 - PE - Protection Enabled */ +#define X86_CR0_PE RT_BIT(0) +#define X86_CR0_PROTECTION_ENABLE RT_BIT(0) +/** Bit 1 - MP - Monitor Coprocessor */ +#define X86_CR0_MP RT_BIT(1) +#define X86_CR0_MONITOR_COPROCESSOR RT_BIT(1) +/** Bit 2 - EM - Emulation. */ +#define X86_CR0_EM RT_BIT(2) +#define X86_CR0_EMULATE_FPU RT_BIT(2) +/** Bit 3 - TS - Task Switch. */ +#define X86_CR0_TS RT_BIT(3) +#define X86_CR0_TASK_SWITCH RT_BIT(3) +/** Bit 4 - ET - Extension flag. ('hardcoded' to 1) */ +#define X86_CR0_ET RT_BIT(4) +#define X86_CR0_EXTENSION_TYPE RT_BIT(4) +/** Bit 5 - NE - Numeric error. */ +#define X86_CR0_NE RT_BIT(5) +#define X86_CR0_NUMERIC_ERROR RT_BIT(5) +/** Bit 16 - WP - Write Protect. */ +#define X86_CR0_WP RT_BIT(16) +#define X86_CR0_WRITE_PROTECT RT_BIT(16) +/** Bit 18 - AM - Alignment Mask. */ +#define X86_CR0_AM RT_BIT(18) +#define X86_CR0_ALIGMENT_MASK RT_BIT(18) +/** Bit 29 - NW - Not Write-though. */ +#define X86_CR0_NW RT_BIT(29) +#define X86_CR0_NOT_WRITE_THROUGH RT_BIT(29) +/** Bit 30 - WP - Cache Disable. */ +#define X86_CR0_CD RT_BIT(30) +#define X86_CR0_CACHE_DISABLE RT_BIT(30) +/** Bit 31 - PG - Paging. */ +#define X86_CR0_PG RT_BIT(31) +#define X86_CR0_PAGING RT_BIT(31) +/** @} */ + + +/** @name CR3 + * @{ */ +/** Bit 3 - PWT - Page-level Writes Transparent. */ +#define X86_CR3_PWT RT_BIT(3) +/** Bit 4 - PCD - Page-level Cache Disable. */ +#define X86_CR3_PCD RT_BIT(4) +/** Bits 12-31 - - Page directory page number. */ +#define X86_CR3_PAGE_MASK (0xfffff000) +/** Bits 5-31 - - PAE Page directory page number. */ +#define X86_CR3_PAE_PAGE_MASK (0xffffffe0) +/** Bits 12-51 - - AMD64 Page directory page number. */ +#define X86_CR3_AMD64_PAGE_MASK UINT64_C(0x000ffffffffff000) +/** @} */ + + +/** @name CR4 + * @{ */ +/** Bit 0 - VME - Virtual-8086 Mode Extensions. */ +#define X86_CR4_VME RT_BIT(0) +/** Bit 1 - PVI - Protected-Mode Virtual Interrupts. */ +#define X86_CR4_PVI RT_BIT(1) +/** Bit 2 - TSD - Time Stamp Disable. */ +#define X86_CR4_TSD RT_BIT(2) +/** Bit 3 - DE - Debugging Extensions. */ +#define X86_CR4_DE RT_BIT(3) +/** Bit 4 - PSE - Page Size Extension. */ +#define X86_CR4_PSE RT_BIT(4) +/** Bit 5 - PAE - Physical Address Extension. */ +#define X86_CR4_PAE RT_BIT(5) +/** Bit 6 - MCE - Machine-Check Enable. */ +#define X86_CR4_MCE RT_BIT(6) +/** Bit 7 - PGE - Page Global Enable. */ +#define X86_CR4_PGE RT_BIT(7) +/** Bit 8 - PCE - Performance-Monitoring Counter Enable. */ +#define X86_CR4_PCE RT_BIT(8) +/** Bit 9 - OSFXSR - Operating System Support for FXSAVE and FXRSTORE instructions. */ +#define X86_CR4_OSFXSR RT_BIT(9) +/** Bit 10 - OSXMMEEXCPT - Operating System Support for Unmasked SIMD Floating-Point Exceptions. */ +#define X86_CR4_OSXMMEEXCPT RT_BIT(10) +/** Bit 13 - VMXE - VMX mode is enabled. */ +#define X86_CR4_VMXE RT_BIT(13) +/** Bit 14 - SMXE - Safer Mode Extensions Enabled. */ +#define X86_CR4_SMXE RT_BIT(14) +/** Bit 17 - PCIDE - Process-Context Identifiers Enabled. */ +#define X86_CR4_PCIDE RT_BIT(17) +/** Bit 18 - OSXSAVE - Operating System Support for XSAVE and processor + * extended states. */ +#define X86_CR4_OSXSAVE RT_BIT(18) +/** Bit 20 - SMEP - Supervisor-mode Execution Prevention enabled. */ +#define X86_CR4_SMEP RT_BIT(20) +/** Bit 21 - SMAP - Supervisor-mode Access Prevention enabled. */ +#define X86_CR4_SMAP RT_BIT(21) +/** Bit 22 - PKE - Protection Key Enable. */ +#define X86_CR4_PKE RT_BIT(22) +/** @} */ + + +/** @name DR6 + * @{ */ +/** Bit 0 - B0 - Breakpoint 0 condition detected. */ +#define X86_DR6_B0 RT_BIT(0) +/** Bit 1 - B1 - Breakpoint 1 condition detected. */ +#define X86_DR6_B1 RT_BIT(1) +/** Bit 2 - B2 - Breakpoint 2 condition detected. */ +#define X86_DR6_B2 RT_BIT(2) +/** Bit 3 - B3 - Breakpoint 3 condition detected. */ +#define X86_DR6_B3 RT_BIT(3) +/** Mask of all the Bx bits. */ +#define X86_DR6_B_MASK UINT64_C(0x0000000f) +/** Bit 13 - BD - Debug register access detected. Corresponds to the X86_DR7_GD bit. */ +#define X86_DR6_BD RT_BIT(13) +/** Bit 14 - BS - Single step */ +#define X86_DR6_BS RT_BIT(14) +/** Bit 15 - BT - Task switch. (TSS T bit.) */ +#define X86_DR6_BT RT_BIT(15) +/** Value of DR6 after powerup/reset. */ +#define X86_DR6_INIT_VAL UINT64_C(0xFFFF0FF0) +/** Bits which must be 1s in DR6. */ +#define X86_DR6_RA1_MASK UINT64_C(0xffff0ff0) +/** Bits which must be 0s in DR6. */ +#define X86_DR6_RAZ_MASK RT_BIT_64(12) +/** Bits which must be 0s on writes to DR6. */ +#define X86_DR6_MBZ_MASK UINT64_C(0xffffffff00000000) +/** @} */ + +/** Get the DR6.Bx bit for a the given breakpoint. */ +#define X86_DR6_B(iBp) RT_BIT_64(iBp) + + +/** @name DR7 + * @{ */ +/** Bit 0 - L0 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L0 RT_BIT(0) +/** Bit 1 - G0 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G0 RT_BIT(1) +/** Bit 2 - L1 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L1 RT_BIT(2) +/** Bit 3 - G1 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G1 RT_BIT(3) +/** Bit 4 - L2 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L2 RT_BIT(4) +/** Bit 5 - G2 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G2 RT_BIT(5) +/** Bit 6 - L3 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L3 RT_BIT(6) +/** Bit 7 - G3 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G3 RT_BIT(7) +/** Bit 8 - LE - Local breakpoint exact. (Not supported (read ignored) by P6 and later.) */ +#define X86_DR7_LE RT_BIT(8) +/** Bit 9 - GE - Local breakpoint exact. (Not supported (read ignored) by P6 and later.) */ +#define X86_DR7_GE RT_BIT(9) + +/** L0, L1, L2, and L3. */ +#define X86_DR7_LE_ALL UINT64_C(0x0000000000000055) +/** L0, L1, L2, and L3. */ +#define X86_DR7_GE_ALL UINT64_C(0x00000000000000aa) + +/** Bit 12 - IR (ICE) - Interrupt redirection on Pentium. When set, the in + * Circuit Emulator (ICE) will break emulation on breakpoints and stuff. + * May cause CPU hang if enabled without ICE attached when the ICEBP/INT1 + * instruction is executed. + * @see http://www.rcollins.org/secrets/DR7.html */ +#define X86_DR7_ICE_IR RT_BIT(12) +/** Bit 13 - GD - General detect enable. Enables emulators to get exceptions when + * any DR register is accessed. */ +#define X86_DR7_GD RT_BIT(13) +/** Bit 14 - TR1 (ICE) - Code discontinuity trace for use with ICE on + * Pentium. */ +#define X86_DR7_ICE_TR1 RT_BIT(14) +/** Bit 15 - TR2 (ICE) - Controls unknown ICE trace feature of the pentium. */ +#define X86_DR7_ICE_TR2 RT_BIT(15) +/** Bit 16 & 17 - R/W0 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW0_MASK (3 << 16) +/** Bit 18 & 19 - LEN0 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN0_MASK (3 << 18) +/** Bit 20 & 21 - R/W1 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW1_MASK (3 << 20) +/** Bit 22 & 23 - LEN1 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN1_MASK (3 << 22) +/** Bit 24 & 25 - R/W2 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW2_MASK (3 << 24) +/** Bit 26 & 27 - LEN2 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN2_MASK (3 << 26) +/** Bit 28 & 29 - R/W3 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW3_MASK (3 << 28) +/** Bit 30 & 31 - LEN3 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN3_MASK (3 << 30) + +/** Bits which reads as 1s. */ +#define X86_DR7_RA1_MASK (RT_BIT(10)) +/** Bits which reads as zeros. These are related to ICE (bits 12, 14, 15). */ +#define X86_DR7_RAZ_MASK UINT64_C(0x0000d800) +/** Bits which must be 0s when writing to DR7. */ +#define X86_DR7_MBZ_MASK UINT64_C(0xffffffff00000000) + +/** Calcs the L bit of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_L(iBp) ( UINT32_C(1) << (iBp * 2) ) + +/** Calcs the G bit of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_G(iBp) ( UINT32_C(1) << (iBp * 2 + 1) ) + +/** Calcs the L and G bits of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_L_G(iBp) ( UINT32_C(3) << (iBp * 2) ) + +/** @name Read/Write values. + * @{ */ +/** Break on instruction fetch only. */ +#define X86_DR7_RW_EO 0U +/** Break on write only. */ +#define X86_DR7_RW_WO 1U +/** Break on I/O read/write. This is only defined if CR4.DE is set. */ +#define X86_DR7_RW_IO 2U +/** Break on read or write (but not instruction fetches). */ +#define X86_DR7_RW_RW 3U +/** @} */ + +/** Shifts a X86_DR7_RW_* value to its right place. + * @param iBp The breakpoint number [0..3]. + * @param fRw One of the X86_DR7_RW_* value. + */ +#define X86_DR7_RW(iBp, fRw) ( (fRw) << ((iBp) * 4 + 16) ) + +/** Fetch the R/Wx bits for a given breakpoint (so it can be compared with + * one of the X86_DR7_RW_XXX constants). + * + * @returns X86_DR7_RW_XXX + * @param uDR7 DR7 value + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_GET_RW(uDR7, iBp) ( ( (uDR7) >> ((iBp) * 4 + 16) ) & UINT32_C(3) ) + +/** R/W0, R/W1, R/W2, and R/W3. */ +#define X86_DR7_RW_ALL_MASKS UINT32_C(0x33330000) + +#ifndef VBOX_FOR_DTRACE_LIB +/** Checks if there are any I/O breakpoint types configured in the RW + * registers. Does NOT check if these are enabled, sorry. */ +# define X86_DR7_ANY_RW_IO(uDR7) \ + ( ( UINT32_C(0x22220000) & (uDR7) ) /* any candidates? */ \ + && ( ( (UINT32_C(0x22220000) & (uDR7) ) >> 1 ) & ~(uDR7) ) ) +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x33330000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x22220000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x32320000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x23230000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00000000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00010000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00020000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00030000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00040000)) == 0); +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** @name Length values. + * @{ */ +#define X86_DR7_LEN_BYTE 0U +#define X86_DR7_LEN_WORD 1U +#define X86_DR7_LEN_QWORD 2U /**< AMD64 long mode only. */ +#define X86_DR7_LEN_DWORD 3U +/** @} */ + +/** Shifts a X86_DR7_LEN_* value to its right place. + * @param iBp The breakpoint number [0..3]. + * @param cb One of the X86_DR7_LEN_* values. + */ +#define X86_DR7_LEN(iBp, cb) ( (cb) << ((iBp) * 4 + 18) ) + +/** Fetch the breakpoint length bits from the DR7 value. + * @param uDR7 DR7 value + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_GET_LEN(uDR7, iBp) ( ( (uDR7) >> ((iBp) * 4 + 18) ) & UINT32_C(0x3) ) + +/** Mask used to check if any breakpoints are enabled. */ +#define X86_DR7_ENABLED_MASK UINT32_C(0x000000ff) + +/** LEN0, LEN1, LEN2, and LEN3. */ +#define X86_DR7_LEN_ALL_MASKS UINT32_C(0xcccc0000) +/** R/W0, R/W1, R/W2, R/W3,LEN0, LEN1, LEN2, and LEN3. */ +#define X86_DR7_RW_LEN_ALL_MASKS UINT32_C(0xffff0000) + +/** Value of DR7 after powerup/reset. */ +#define X86_DR7_INIT_VAL 0x400 +/** @} */ + + +/** @name Machine Specific Registers + * @{ + */ +/** Machine check address register (P5). */ +#define MSR_P5_MC_ADDR UINT32_C(0x00000000) +/** Machine check type register (P5). */ +#define MSR_P5_MC_TYPE UINT32_C(0x00000001) +/** Time Stamp Counter. */ +#define MSR_IA32_TSC 0x10 +#define MSR_IA32_CESR UINT32_C(0x00000011) +#define MSR_IA32_CTR0 UINT32_C(0x00000012) +#define MSR_IA32_CTR1 UINT32_C(0x00000013) + +#define MSR_IA32_PLATFORM_ID 0x17 + +#ifndef MSR_IA32_APICBASE /* qemu cpu.h kludge */ +# define MSR_IA32_APICBASE 0x1b +/** Local APIC enabled. */ +# define MSR_IA32_APICBASE_EN RT_BIT_64(11) +/** X2APIC enabled (requires the EN bit to be set). */ +# define MSR_IA32_APICBASE_EXTD RT_BIT_64(10) +/** The processor is the boot strap processor (BSP). */ +# define MSR_IA32_APICBASE_BSP RT_BIT_64(8) +/** Minimum base address mask, consult CPUID leaf 0x80000008 for the actual + * width. */ +# define MSR_IA32_APICBASE_BASE_MIN UINT64_C(0x0000000ffffff000) +#endif + +/** Undocumented intel MSR for reporting thread and core counts. + * Judging from the XNU sources, it seems to be introduced in Nehalem. The + * first 16 bits is the thread count. The next 16 bits the core count, except + * on Westmere where it seems it's only the next 4 bits for some reason. */ +#define MSR_CORE_THREAD_COUNT 0x35 + +/** CPU Feature control. */ +#define MSR_IA32_FEATURE_CONTROL 0x3A +#define MSR_IA32_FEATURE_CONTROL_LOCK RT_BIT(0) +#define MSR_IA32_FEATURE_CONTROL_SMX_VMXON RT_BIT(1) +#define MSR_IA32_FEATURE_CONTROL_VMXON RT_BIT(2) + +/** Per-processor TSC adjust MSR. */ +#define MSR_IA32_TSC_ADJUST 0x3B + +/** BIOS update trigger (microcode update). */ +#define MSR_IA32_BIOS_UPDT_TRIG 0x79 + +/** BIOS update signature (microcode). */ +#define MSR_IA32_BIOS_SIGN_ID 0x8B + +/** SMM monitor control. */ +#define MSR_IA32_SMM_MONITOR_CTL 0x9B + +/** General performance counter no. 0. */ +#define MSR_IA32_PMC0 0xC1 +/** General performance counter no. 1. */ +#define MSR_IA32_PMC1 0xC2 +/** General performance counter no. 2. */ +#define MSR_IA32_PMC2 0xC3 +/** General performance counter no. 3. */ +#define MSR_IA32_PMC3 0xC4 + +/** Nehalem power control. */ +#define MSR_IA32_PLATFORM_INFO 0xCE + +/** Get FSB clock status (Intel-specific). */ +#define MSR_IA32_FSB_CLOCK_STS 0xCD + +/** C-State configuration control. Intel specific: Nehalem, Sandy Bridge. */ +#define MSR_PKG_CST_CONFIG_CONTROL UINT32_C(0x000000e2) + +/** C0 Maximum Frequency Clock Count */ +#define MSR_IA32_MPERF 0xE7 +/** C0 Actual Frequency Clock Count */ +#define MSR_IA32_APERF 0xE8 + +/** MTRR Capabilities. */ +#define MSR_IA32_MTRR_CAP 0xFE + +/** Cache control/info. */ +#define MSR_BBL_CR_CTL3 UINT32_C(0x11e) + +#ifndef MSR_IA32_SYSENTER_CS /* qemu cpu.h kludge */ +/** SYSENTER_CS - the R0 CS, indirectly giving R0 SS, R3 CS and R3 DS. + * R0 SS == CS + 8 + * R3 CS == CS + 16 + * R3 SS == CS + 24 + */ +#define MSR_IA32_SYSENTER_CS 0x174 +/** SYSENTER_ESP - the R0 ESP. */ +#define MSR_IA32_SYSENTER_ESP 0x175 +/** SYSENTER_EIP - the R0 EIP. */ +#define MSR_IA32_SYSENTER_EIP 0x176 +#endif + +/** Machine Check Global Capabilities Register. */ +#define MSR_IA32_MCG_CAP 0x179 +/** Machine Check Global Status Register. */ +#define MSR_IA32_MCG_STATUS 0x17A +/** Machine Check Global Control Register. */ +#define MSR_IA32_MCG_CTRL 0x17B + +/** Page Attribute Table. */ +#define MSR_IA32_CR_PAT 0x277 + +/** Performance counter MSRs. (Intel only) */ +#define MSR_IA32_PERFEVTSEL0 0x186 +#define MSR_IA32_PERFEVTSEL1 0x187 +/** Flexible ratio, seems to be undocumented, used by XNU (tsc.c). + * The 16th bit whether flex ratio is being used, in which case bits 15:8 + * holds a ratio that Apple takes for TSC granularity. + * + * @note This MSR conflicts the P4 MSR_MCG_R12 register. */ +#define MSR_FLEX_RATIO 0x194 +/** Performance state value and starting with Intel core more. + * Apple uses the >=core features to determine TSC granularity on older CPUs. */ +#define MSR_IA32_PERF_STATUS 0x198 +#define MSR_IA32_PERF_CTL 0x199 +#define MSR_IA32_THERM_STATUS 0x19c + +/** Enable misc. processor features (R/W). */ +#define MSR_IA32_MISC_ENABLE 0x1A0 +/** Enable fast-strings feature (for REP MOVS and REP STORS). */ +#define MSR_IA32_MISC_ENABLE_FAST_STRINGS RT_BIT_64(0) +/** Automatic Thermal Control Circuit Enable (R/W). */ +#define MSR_IA32_MISC_ENABLE_TCC RT_BIT_64(3) +/** Performance Monitoring Available (R). */ +#define MSR_IA32_MISC_ENABLE_PERF_MON RT_BIT_64(7) +/** Branch Trace Storage Unavailable (R/O). */ +#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL RT_BIT_64(11) +/** Precise Event Based Sampling (PEBS) Unavailable (R/O). */ +#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL RT_BIT_64(12) +/** Enhanced Intel SpeedStep Technology Enable (R/W). */ +#define MSR_IA32_MISC_ENABLE_SST_ENABLE RT_BIT_64(16) +/** If MONITOR/MWAIT is supported (R/W). */ +#define MSR_IA32_MISC_ENABLE_MONITOR RT_BIT_64(18) +/** Limit CPUID Maxval to 3 leafs (R/W). */ +#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID RT_BIT_64(22) +/** When set to 1, xTPR messages are disabled (R/W). */ +#define MSR_IA32_MISC_ENABLE_XTPR_MSG_DISABLE RT_BIT_64(23) +/** When set to 1, the Execute Disable Bit feature (XD Bit) is disabled (R/W). */ +#define MSR_IA32_MISC_ENABLE_XD_DISABLE RT_BIT_64(34) + +/** Trace/Profile Resource Control (R/W) */ +#define MSR_IA32_DEBUGCTL UINT32_C(0x000001d9) +/** The number (0..3 or 0..15) of the last branch record register on P4 and + * related Xeons. */ +#define MSR_P4_LASTBRANCH_TOS UINT32_C(0x000001da) +/** @name Last branch registers for P4 and Xeon, models 0 thru 2. + * @{ */ +#define MSR_P4_LASTBRANCH_0 UINT32_C(0x000001db) +#define MSR_P4_LASTBRANCH_1 UINT32_C(0x000001dc) +#define MSR_P4_LASTBRANCH_2 UINT32_C(0x000001dd) +#define MSR_P4_LASTBRANCH_3 UINT32_C(0x000001de) +/** @} */ + + +#define IA32_MTRR_PHYSBASE0 0x200 +#define IA32_MTRR_PHYSMASK0 0x201 +#define IA32_MTRR_PHYSBASE1 0x202 +#define IA32_MTRR_PHYSMASK1 0x203 +#define IA32_MTRR_PHYSBASE2 0x204 +#define IA32_MTRR_PHYSMASK2 0x205 +#define IA32_MTRR_PHYSBASE3 0x206 +#define IA32_MTRR_PHYSMASK3 0x207 +#define IA32_MTRR_PHYSBASE4 0x208 +#define IA32_MTRR_PHYSMASK4 0x209 +#define IA32_MTRR_PHYSBASE5 0x20a +#define IA32_MTRR_PHYSMASK5 0x20b +#define IA32_MTRR_PHYSBASE6 0x20c +#define IA32_MTRR_PHYSMASK6 0x20d +#define IA32_MTRR_PHYSBASE7 0x20e +#define IA32_MTRR_PHYSMASK7 0x20f +#define IA32_MTRR_PHYSBASE8 0x210 +#define IA32_MTRR_PHYSMASK8 0x211 +#define IA32_MTRR_PHYSBASE9 0x212 +#define IA32_MTRR_PHYSMASK9 0x213 + +/** Fixed range MTRRs. + * @{ */ +#define IA32_MTRR_FIX64K_00000 0x250 +#define IA32_MTRR_FIX16K_80000 0x258 +#define IA32_MTRR_FIX16K_A0000 0x259 +#define IA32_MTRR_FIX4K_C0000 0x268 +#define IA32_MTRR_FIX4K_C8000 0x269 +#define IA32_MTRR_FIX4K_D0000 0x26a +#define IA32_MTRR_FIX4K_D8000 0x26b +#define IA32_MTRR_FIX4K_E0000 0x26c +#define IA32_MTRR_FIX4K_E8000 0x26d +#define IA32_MTRR_FIX4K_F0000 0x26e +#define IA32_MTRR_FIX4K_F8000 0x26f +/** @} */ + +/** MTRR Default Range. */ +#define MSR_IA32_MTRR_DEF_TYPE 0x2FF + +#define MSR_IA32_MC0_CTL 0x400 +#define MSR_IA32_MC0_STATUS 0x401 + +/** Basic VMX information. */ +#define MSR_IA32_VMX_BASIC_INFO 0x480 +/** Allowed settings for pin-based VM execution controls */ +#define MSR_IA32_VMX_PINBASED_CTLS 0x481 +/** Allowed settings for proc-based VM execution controls */ +#define MSR_IA32_VMX_PROCBASED_CTLS 0x482 +/** Allowed settings for the VMX exit controls. */ +#define MSR_IA32_VMX_EXIT_CTLS 0x483 +/** Allowed settings for the VMX entry controls. */ +#define MSR_IA32_VMX_ENTRY_CTLS 0x484 +/** Misc VMX info. */ +#define MSR_IA32_VMX_MISC 0x485 +/** Fixed cleared bits in CR0. */ +#define MSR_IA32_VMX_CR0_FIXED0 0x486 +/** Fixed set bits in CR0. */ +#define MSR_IA32_VMX_CR0_FIXED1 0x487 +/** Fixed cleared bits in CR4. */ +#define MSR_IA32_VMX_CR4_FIXED0 0x488 +/** Fixed set bits in CR4. */ +#define MSR_IA32_VMX_CR4_FIXED1 0x489 +/** Information for enumerating fields in the VMCS. */ +#define MSR_IA32_VMX_VMCS_ENUM 0x48A +/** Allowed settings for the VM-functions controls. */ +#define MSR_IA32_VMX_VMFUNC 0x491 +/** Allowed settings for secondary proc-based VM execution controls */ +#define MSR_IA32_VMX_PROCBASED_CTLS2 0x48B +/** EPT capabilities. */ +#define MSR_IA32_VMX_EPT_VPID_CAP 0x48C +/** DS Save Area (R/W). */ +#define MSR_IA32_DS_AREA 0x600 +/** Running Average Power Limit (RAPL) power units. */ +#define MSR_RAPL_POWER_UNIT 0x606 +/** X2APIC MSR ranges. */ +#define MSR_IA32_X2APIC_START 0x800 +#define MSR_IA32_X2APIC_TPR 0x808 +#define MSR_IA32_X2APIC_END 0xBFF + +/** K6 EFER - Extended Feature Enable Register. */ +#define MSR_K6_EFER UINT32_C(0xc0000080) +/** @todo document EFER */ +/** Bit 0 - SCE - System call extensions (SYSCALL / SYSRET). (R/W) */ +#define MSR_K6_EFER_SCE RT_BIT(0) +/** Bit 8 - LME - Long mode enabled. (R/W) */ +#define MSR_K6_EFER_LME RT_BIT(8) +/** Bit 10 - LMA - Long mode active. (R) */ +#define MSR_K6_EFER_LMA RT_BIT(10) +/** Bit 11 - NXE - No-Execute Page Protection Enabled. (R/W) */ +#define MSR_K6_EFER_NXE RT_BIT(11) +/** Bit 12 - SVME - Secure VM Extension Enabled. (R/W) */ +#define MSR_K6_EFER_SVME RT_BIT(12) +/** Bit 13 - LMSLE - Long Mode Segment Limit Enable. (R/W?) */ +#define MSR_K6_EFER_LMSLE RT_BIT(13) +/** Bit 14 - FFXSR - Fast FXSAVE / FXRSTOR (skip XMM*). (R/W) */ +#define MSR_K6_EFER_FFXSR RT_BIT(14) +/** Bit 15 - TCE - Translation Cache Extension. (R/W) */ +#define MSR_K6_EFER_TCE RT_BIT(15) +/** K6 STAR - SYSCALL/RET targets. */ +#define MSR_K6_STAR UINT32_C(0xc0000081) +/** Shift value for getting the SYSRET CS and SS value. */ +#define MSR_K6_STAR_SYSRET_CS_SS_SHIFT 48 +/** Shift value for getting the SYSCALL CS and SS value. */ +#define MSR_K6_STAR_SYSCALL_CS_SS_SHIFT 32 +/** Selector mask for use after shifting. */ +#define MSR_K6_STAR_SEL_MASK UINT32_C(0xffff) +/** The mask which give the SYSCALL EIP. */ +#define MSR_K6_STAR_SYSCALL_EIP_MASK UINT32_C(0xffffffff) +/** K6 WHCR - Write Handling Control Register. */ +#define MSR_K6_WHCR UINT32_C(0xc0000082) +/** K6 UWCCR - UC/WC Cacheability Control Register. */ +#define MSR_K6_UWCCR UINT32_C(0xc0000085) +/** K6 PSOR - Processor State Observability Register. */ +#define MSR_K6_PSOR UINT32_C(0xc0000087) +/** K6 PFIR - Page Flush/Invalidate Register. */ +#define MSR_K6_PFIR UINT32_C(0xc0000088) + +/** Performance counter MSRs. (AMD only) */ +#define MSR_K7_EVNTSEL0 UINT32_C(0xc0010000) +#define MSR_K7_EVNTSEL1 UINT32_C(0xc0010001) +#define MSR_K7_EVNTSEL2 UINT32_C(0xc0010002) +#define MSR_K7_EVNTSEL3 UINT32_C(0xc0010003) +#define MSR_K7_PERFCTR0 UINT32_C(0xc0010004) +#define MSR_K7_PERFCTR1 UINT32_C(0xc0010005) +#define MSR_K7_PERFCTR2 UINT32_C(0xc0010006) +#define MSR_K7_PERFCTR3 UINT32_C(0xc0010007) + +/** K8 LSTAR - Long mode SYSCALL target (RIP). */ +#define MSR_K8_LSTAR UINT32_C(0xc0000082) +/** K8 CSTAR - Compatibility mode SYSCALL target (RIP). */ +#define MSR_K8_CSTAR UINT32_C(0xc0000083) +/** K8 SF_MASK - SYSCALL flag mask. (aka SFMASK) */ +#define MSR_K8_SF_MASK UINT32_C(0xc0000084) +/** K8 FS.base - The 64-bit base FS register. */ +#define MSR_K8_FS_BASE UINT32_C(0xc0000100) +/** K8 GS.base - The 64-bit base GS register. */ +#define MSR_K8_GS_BASE UINT32_C(0xc0000101) +/** K8 KernelGSbase - Used with SWAPGS. */ +#define MSR_K8_KERNEL_GS_BASE UINT32_C(0xc0000102) +/** K8 TSC_AUX - Used with RDTSCP. */ +#define MSR_K8_TSC_AUX UINT32_C(0xc0000103) +#define MSR_K8_SYSCFG UINT32_C(0xc0010010) +#define MSR_K8_HWCR UINT32_C(0xc0010015) +#define MSR_K8_IORRBASE0 UINT32_C(0xc0010016) +#define MSR_K8_IORRMASK0 UINT32_C(0xc0010017) +#define MSR_K8_IORRBASE1 UINT32_C(0xc0010018) +#define MSR_K8_IORRMASK1 UINT32_C(0xc0010019) +#define MSR_K8_TOP_MEM1 UINT32_C(0xc001001a) +#define MSR_K8_TOP_MEM2 UINT32_C(0xc001001d) +/** North bridge config? See BIOS & Kernel dev guides for + * details. */ +#define MSR_K8_NB_CFG UINT32_C(0xc001001f) + +/** Hypertransport interrupt pending register. + * "BIOS and Kernel Developer's Guide for AMD NPT Family 0Fh Processors" */ +#define MSR_K8_INT_PENDING UINT32_C(0xc0010055) +#define MSR_K8_VM_CR UINT32_C(0xc0010114) +#define MSR_K8_VM_CR_SVM_DISABLE RT_BIT(4) + +#define MSR_K8_IGNNE UINT32_C(0xc0010115) +#define MSR_K8_SMM_CTL UINT32_C(0xc0010116) +/** SVM - VM_HSAVE_PA - Physical address for saving and restoring + * host state during world switch. */ +#define MSR_K8_VM_HSAVE_PA UINT32_C(0xc0010117) + +/** @} */ + + +/** @name Page Table / Directory / Directory Pointers / L4. + * @{ + */ + +/** Page table/directory entry as an unsigned integer. */ +typedef uint32_t X86PGUINT; +/** Pointer to a page table/directory table entry as an unsigned integer. */ +typedef X86PGUINT *PX86PGUINT; +/** Pointer to an const page table/directory table entry as an unsigned integer. */ +typedef X86PGUINT const *PCX86PGUINT; + +/** Number of entries in a 32-bit PT/PD. */ +#define X86_PG_ENTRIES 1024 + + +/** PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef uint64_t X86PGPAEUINT; +/** Pointer to a PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef X86PGPAEUINT *PX86PGPAEUINT; +/** Pointer to an const PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef X86PGPAEUINT const *PCX86PGPAEUINT; + +/** Number of entries in a PAE PT/PD. */ +#define X86_PG_PAE_ENTRIES 512 +/** Number of entries in a PAE PDPT. */ +#define X86_PG_PAE_PDPE_ENTRIES 4 + +/** Number of entries in an AMD64 PT/PD/PDPT/L4/L5. */ +#define X86_PG_AMD64_ENTRIES X86_PG_PAE_ENTRIES +/** Number of entries in an AMD64 PDPT. + * Just for complementing X86_PG_PAE_PDPE_ENTRIES, using X86_PG_AMD64_ENTRIES for this is fine too. */ +#define X86_PG_AMD64_PDPE_ENTRIES X86_PG_AMD64_ENTRIES + +/** The size of a 4KB page. */ +#define X86_PAGE_4K_SIZE _4K +/** The page shift of a 4KB page. */ +#define X86_PAGE_4K_SHIFT 12 +/** The 4KB page offset mask. */ +#define X86_PAGE_4K_OFFSET_MASK 0xfff +/** The 4KB page base mask for virtual addresses. */ +#define X86_PAGE_4K_BASE_MASK 0xfffffffffffff000ULL +/** The 4KB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_4K_BASE_MASK_32 0xfffff000U + +/** The size of a 2MB page. */ +#define X86_PAGE_2M_SIZE _2M +/** The page shift of a 2MB page. */ +#define X86_PAGE_2M_SHIFT 21 +/** The 2MB page offset mask. */ +#define X86_PAGE_2M_OFFSET_MASK 0x001fffff +/** The 2MB page base mask for virtual addresses. */ +#define X86_PAGE_2M_BASE_MASK 0xffffffffffe00000ULL +/** The 2MB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_2M_BASE_MASK_32 0xffe00000U + +/** The size of a 4MB page. */ +#define X86_PAGE_4M_SIZE _4M +/** The page shift of a 4MB page. */ +#define X86_PAGE_4M_SHIFT 22 +/** The 4MB page offset mask. */ +#define X86_PAGE_4M_OFFSET_MASK 0x003fffff +/** The 4MB page base mask for virtual addresses. */ +#define X86_PAGE_4M_BASE_MASK 0xffffffffffc00000ULL +/** The 4MB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_4M_BASE_MASK_32 0xffc00000U + +/** + * Check if the given address is canonical. + */ +#define X86_IS_CANONICAL(a_u64Addr) ((uint64_t)(a_u64Addr) + UINT64_C(0x800000000000) < UINT64_C(0x1000000000000)) + + +/** @name Page Table Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PTE_BIT_P 0 +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PTE_BIT_RW 1 +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PTE_BIT_US 2 +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PTE_BIT_PWT 3 +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PTE_BIT_PCD 4 +/** Bit 5 - A - Access bit. */ +#define X86_PTE_BIT_A 5 +/** Bit 6 - D - Dirty bit. */ +#define X86_PTE_BIT_D 6 +/** Bit 7 - PAT - Page Attribute Table index bit. Reserved and 0 if not supported. */ +#define X86_PTE_BIT_PAT 7 +/** Bit 8 - G - Global flag. */ +#define X86_PTE_BIT_G 8 + +/** Bit 0 - P - Present bit mask. */ +#define X86_PTE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit mask. */ +#define X86_PTE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit mask. */ +#define X86_PTE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit mask. */ +#define X86_PTE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit mask. */ +#define X86_PTE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit mask. */ +#define X86_PTE_A RT_BIT(5) +/** Bit 6 - D - Dirty bit mask. */ +#define X86_PTE_D RT_BIT(6) +/** Bit 7 - PAT - Page Attribute Table index bit mask. Reserved and 0 if not supported. */ +#define X86_PTE_PAT RT_BIT(7) +/** Bit 8 - G - Global bit mask. */ +#define X86_PTE_G RT_BIT(8) + +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PTE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-31 - - Physical Page number of the next level. */ +#define X86_PTE_PG_MASK ( 0xfffff000 ) + +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PTE_PAE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PTE_PAE_NX RT_BIT_64(63) +/** Bits 62-52 - - PAE - MBZ bits when NX is active. */ +#define X86_PTE_PAE_MBZ_MASK_NX UINT64_C(0x7ff0000000000000) +/** Bits 63-52 - - PAE - MBZ bits when no NX. */ +#define X86_PTE_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff0000000000000) +/** No bits - - LM - MBZ bits when NX is active. */ +#define X86_PTE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000000) +/** Bits 63 - - LM - MBZ bits when no NX. */ +#define X86_PTE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000000) + +/** + * Page table entry. + */ +typedef struct X86PTEBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + unsigned u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + unsigned u1Dirty : 1; + /** Reserved / If PAT enabled, bit 2 of the index. */ + unsigned u1PAT : 1; + /** Global flag. (Ignored in all but final level.) */ + unsigned u1Global : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Physical Page number of the next level. */ + unsigned u20PageNo : 20; +} X86PTEBITS; +/** Pointer to a page table entry. */ +typedef X86PTEBITS *PX86PTEBITS; +/** Pointer to a const page table entry. */ +typedef const X86PTEBITS *PCX86PTEBITS; + +/** + * Page table entry. + */ +typedef union X86PTE +{ + /** Unsigned integer view */ + X86PGUINT u; + /** Bit field view. */ + X86PTEBITS n; + /** 32-bit view. */ + uint32_t au32[1]; + /** 16-bit view. */ + uint16_t au16[2]; + /** 8-bit view. */ + uint8_t au8[4]; +} X86PTE; +/** Pointer to a page table entry. */ +typedef X86PTE *PX86PTE; +/** Pointer to a const page table entry. */ +typedef const X86PTE *PCX86PTE; + + +/** + * PAE page table entry. + */ +typedef struct X86PTEPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor(=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + uint32_t u1Dirty : 1; + /** Reserved / If PAT enabled, bit 2 of the index. */ + uint32_t u1PAT : 1; + /** Global flag. (Ignored in all but final level.) */ + uint32_t u1Global : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use this. */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use this. */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PTEPAEBITS; +/** Pointer to a page table entry. */ +typedef X86PTEPAEBITS *PX86PTEPAEBITS; +/** Pointer to a page table entry. */ +typedef const X86PTEPAEBITS *PCX86PTEPAEBITS; + +/** + * PAE Page table entry. + */ +typedef union X86PTEPAE +{ + /** Unsigned integer view */ + X86PGPAEUINT u; + /** Bit field view. */ + X86PTEPAEBITS n; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} X86PTEPAE; +/** Pointer to a PAE page table entry. */ +typedef X86PTEPAE *PX86PTEPAE; +/** Pointer to a const PAE page table entry. */ +typedef const X86PTEPAE *PCX86PTEPAE; +/** @} */ + +/** + * Page table. + */ +typedef struct X86PT +{ + /** PTE Array. */ + X86PTE a[X86_PG_ENTRIES]; +} X86PT; +/** Pointer to a page table. */ +typedef X86PT *PX86PT; +/** Pointer to a const page table. */ +typedef const X86PT *PCX86PT; + +/** The page shift to get the PT index. */ +#define X86_PT_SHIFT 12 +/** The PT index mask (apply to a shifted page address). */ +#define X86_PT_MASK 0x3ff + + +/** + * Page directory. + */ +typedef struct X86PTPAE +{ + /** PTE Array. */ + X86PTEPAE a[X86_PG_PAE_ENTRIES]; +} X86PTPAE; +/** Pointer to a page table. */ +typedef X86PTPAE *PX86PTPAE; +/** Pointer to a const page table. */ +typedef const X86PTPAE *PCX86PTPAE; + +/** The page shift to get the PA PTE index. */ +#define X86_PT_PAE_SHIFT 12 +/** The PAE PT index mask (apply to a shifted page address). */ +#define X86_PT_PAE_MASK 0x1ff + + +/** @name 4KB Page Directory Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PDE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PDE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PDE_A RT_BIT(5) +/** Bit 7 - PS - Page size attribute. + * Clear mean 4KB pages, set means large pages (2/4MB). */ +#define X86_PDE_PS RT_BIT(7) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PDE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-31 - - Physical Page number of the next level. */ +#define X86_PDE_PG_MASK ( 0xfffff000 ) + +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PDE_PAE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PDE_PAE_NX RT_BIT_64(63) +/** Bits 62-52, 7 - - PAE - MBZ bits when NX is active. */ +#define X86_PDE_PAE_MBZ_MASK_NX UINT64_C(0x7ff0000000000080) +/** Bits 63-52, 7 - - PAE - MBZ bits when no NX. */ +#define X86_PDE_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff0000000000080) +/** Bit 7 - - LM - MBZ bits when NX is active. */ +#define X86_PDE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000080) +/** Bits 63, 7 - - LM - MBZ bits when no NX. */ +#define X86_PDE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000080) + +/** + * Page directory entry. + */ +typedef struct X86PDEBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page has been read or written to. */ + unsigned u1Accessed : 1; + /** Reserved / Ignored (dirty bit). */ + unsigned u1Reserved0 : 1; + /** Size bit if PSE is enabled - in any event it's 0. */ + unsigned u1Size : 1; + /** Reserved / Ignored (global bit). */ + unsigned u1Reserved1 : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Physical Page number of the next level. */ + unsigned u20PageNo : 20; +} X86PDEBITS; +/** Pointer to a page directory entry. */ +typedef X86PDEBITS *PX86PDEBITS; +/** Pointer to a const page directory entry. */ +typedef const X86PDEBITS *PCX86PDEBITS; + + +/** + * PAE page directory entry. + */ +typedef struct X86PDEPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page has been read or written to. */ + uint32_t u1Accessed : 1; + /** Reserved / Ignored (dirty bit). */ + uint32_t u1Reserved0 : 1; + /** Size bit if PSE is enabled - in any event it's 0. */ + uint32_t u1Size : 1; + /** Reserved / Ignored (global bit). / */ + uint32_t u1Reserved1 : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDEPAEBITS; +/** Pointer to a page directory entry. */ +typedef X86PDEPAEBITS *PX86PDEPAEBITS; +/** Pointer to a const page directory entry. */ +typedef const X86PDEPAEBITS *PCX86PDEPAEBITS; + +/** @} */ + + +/** @name 2/4MB Page Directory Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDE4M_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PDE4M_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PDE4M_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDE4M_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDE4M_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PDE4M_A RT_BIT(5) +/** Bit 6 - D - Dirty bit. */ +#define X86_PDE4M_D RT_BIT(6) +/** Bit 7 - PS - Page size attribute. Clear mean 4KB pages, set means large pages (2/4MB). */ +#define X86_PDE4M_PS RT_BIT(7) +/** Bit 8 - G - Global flag. */ +#define X86_PDE4M_G RT_BIT(8) +/** Bits 9-11 - AVL - Available for use to system software. */ +#define X86_PDE4M_AVL (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bit 12 - PAT - Page Attribute Table index bit. Reserved and 0 if not supported. */ +#define X86_PDE4M_PAT RT_BIT(12) +/** Shift to get from X86_PTE_PAT to X86_PDE4M_PAT. */ +#define X86_PDE4M_PAT_SHIFT (12 - 7) +/** Bits 22-31 - - Physical Page number. */ +#define X86_PDE4M_PG_MASK ( 0xffc00000 ) +/** Bits 20-13 - - Physical Page number high part (32-39 bits). AMD64 hack. */ +#define X86_PDE4M_PG_HIGH_MASK ( 0x001fe000 ) +/** The number of bits to the high part of the page number. */ +#define X86_PDE4M_PG_HIGH_SHIFT 19 +/** Bit 21 - - MBZ bits for AMD CPUs, no PSE36. */ +#define X86_PDE4M_MBZ_MASK RT_BIT_32(21) + +/** Bits 21-51 - - PAE/LM - Physical Page number. + * (Bits 40-51 (long mode) & bits 36-51 (pae legacy) are reserved according to the Intel docs; AMD allows for more.) */ +#define X86_PDE2M_PAE_PG_MASK UINT64_C(0x000fffffffe00000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PDE2M_PAE_NX RT_BIT_64(63) +/** Bits 62-52, 20-13 - - PAE - MBZ bits when NX is active. */ +#define X86_PDE2M_PAE_MBZ_MASK_NX UINT64_C(0x7ff00000001fe000) +/** Bits 63-52, 20-13 - - PAE - MBZ bits when no NX. */ +#define X86_PDE2M_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff00000001fe000) +/** Bits 20-13 - - LM - MBZ bits when NX is active. */ +#define X86_PDE2M_LM_MBZ_MASK_NX UINT64_C(0x00000000001fe000) +/** Bits 63, 20-13 - - LM - MBZ bits when no NX. */ +#define X86_PDE2M_LM_MBZ_MASK_NO_NX UINT64_C(0x80000000001fe000) + +/** + * 4MB page directory entry. + */ +typedef struct X86PDE4MBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + unsigned u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + unsigned u1Dirty : 1; + /** Page size flag - always 1 for 4MB entries. */ + unsigned u1Size : 1; + /** Global flag. */ + unsigned u1Global : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Reserved / If PAT enabled, bit 2 of the index. */ + unsigned u1PAT : 1; + /** Bits 32-39 of the page number on AMD64. + * This AMD64 hack allows accessing 40bits of physical memory without PAE. */ + unsigned u8PageNoHigh : 8; + /** Reserved. */ + unsigned u1Reserved : 1; + /** Physical Page number of the page. */ + unsigned u10PageNo : 10; +} X86PDE4MBITS; +/** Pointer to a page table entry. */ +typedef X86PDE4MBITS *PX86PDE4MBITS; +/** Pointer to a const page table entry. */ +typedef const X86PDE4MBITS *PCX86PDE4MBITS; + + +/** + * 2MB PAE page directory entry. + */ +typedef struct X86PDE2MPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor(=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + uint32_t u1Dirty : 1; + /** Page size flag - always 1 for 2MB entries. */ + uint32_t u1Size : 1; + /** Global flag. */ + uint32_t u1Global : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Reserved / If PAT enabled, bit 2 of the index. */ + uint32_t u1PAT : 1; + /** Reserved. */ + uint32_t u9Reserved : 9; + /** Physical Page number of the next level - Low part. Don't use! */ + uint32_t u10PageNoLow : 10; + /** Physical Page number of the next level - High part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDE2MPAEBITS; +/** Pointer to a 2MB PAE page table entry. */ +typedef X86PDE2MPAEBITS *PX86PDE2MPAEBITS; +/** Pointer to a 2MB PAE page table entry. */ +typedef const X86PDE2MPAEBITS *PCX86PDE2MPAEBITS; + +/** @} */ + +/** + * Page directory entry. + */ +typedef union X86PDE +{ + /** Unsigned integer view. */ + X86PGUINT u; + /** Normal view. */ + X86PDEBITS n; + /** 4MB view (big). */ + X86PDE4MBITS b; + /** 8 bit unsigned integer view. */ + uint8_t au8[4]; + /** 16 bit unsigned integer view. */ + uint16_t au16[2]; + /** 32 bit unsigned integer view. */ + uint32_t au32[1]; +} X86PDE; +/** Pointer to a page directory entry. */ +typedef X86PDE *PX86PDE; +/** Pointer to a const page directory entry. */ +typedef const X86PDE *PCX86PDE; + +/** + * PAE page directory entry. + */ +typedef union X86PDEPAE +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PDEPAEBITS n; + /** 2MB page view (big). */ + X86PDE2MPAEBITS b; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PDEPAE; +/** Pointer to a page directory entry. */ +typedef X86PDEPAE *PX86PDEPAE; +/** Pointer to a const page directory entry. */ +typedef const X86PDEPAE *PCX86PDEPAE; + +/** + * Page directory. + */ +typedef struct X86PD +{ + /** PDE Array. */ + X86PDE a[X86_PG_ENTRIES]; +} X86PD; +/** Pointer to a page directory. */ +typedef X86PD *PX86PD; +/** Pointer to a const page directory. */ +typedef const X86PD *PCX86PD; + +/** The page shift to get the PD index. */ +#define X86_PD_SHIFT 22 +/** The PD index mask (apply to a shifted page address). */ +#define X86_PD_MASK 0x3ff + + +/** + * PAE page directory. + */ +typedef struct X86PDPAE +{ + /** PDE Array. */ + X86PDEPAE a[X86_PG_PAE_ENTRIES]; +} X86PDPAE; +/** Pointer to a PAE page directory. */ +typedef X86PDPAE *PX86PDPAE; +/** Pointer to a const PAE page directory. */ +typedef const X86PDPAE *PCX86PDPAE; + +/** The page shift to get the PAE PD index. */ +#define X86_PD_PAE_SHIFT 21 +/** The PAE PD index mask (apply to a shifted page address). */ +#define X86_PD_PAE_MASK 0x1ff + + +/** @name Page Directory Pointer Table Entry (PAE) + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDPE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. Long Mode only. */ +#define X86_PDPE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. Long Mode only. */ +#define X86_PDPE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDPE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDPE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. Long Mode only. */ +#define X86_PDPE_A RT_BIT(5) +/** Bit 7 - PS - Page size (1GB). Long Mode only. */ +#define X86_PDPE_LM_PS RT_BIT(7) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PDPE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PDPE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63-52, 8-5, 2-1 - - PAE - MBZ bits (NX is long mode only). */ +#define X86_PDPE_PAE_MBZ_MASK UINT64_C(0xfff00000000001e6) +/** Bits 63 - NX - LM - No execution flag. Long Mode only. */ +#define X86_PDPE_LM_NX RT_BIT_64(63) +/** Bits 8, 7 - - LM - MBZ bits when NX is active. */ +#define X86_PDPE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000180) +/** Bits 63, 8, 7 - - LM - MBZ bits when no NX. */ +#define X86_PDPE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000180) +/** Bits 29-13 - - LM - MBZ bits for 1GB page entry when NX is active. */ +#define X86_PDPE1G_LM_MBZ_MASK_NX UINT64_C(0x000000003fffe000) +/** Bits 63, 29-13 - - LM - MBZ bits for 1GB page entry when no NX. */ +#define X86_PDPE1G_LM_MBZ_MASK_NO_NX UINT64_C(0x800000003fffe000) + + +/** + * Page directory pointer table entry. + */ +typedef struct X86PDPEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Chunk of reserved bits. */ + uint32_t u2Reserved : 2; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Chunk of reserved bits. */ + uint32_t u4Reserved : 4; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u12Reserved : 12; +} X86PDPEBITS; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPEBITS *PX86PTPEBITS; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPEBITS *PCX86PTPEBITS; + +/** + * Page directory pointer table entry. AMD64 version + */ +typedef struct X86PDPEAMD64BITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Chunk of reserved bits. */ + uint32_t u3Reserved : 3; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDPEAMD64BITS; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPEAMD64BITS *PX86PDPEAMD64BITS; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPEAMD64BITS *PCX86PDPEAMD64BITS; + +/** + * Page directory pointer table entry. + */ +typedef union X86PDPE +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PDPEBITS n; + /** AMD64 view. */ + X86PDPEAMD64BITS lm; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PDPE; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPE *PX86PDPE; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPE *PCX86PDPE; + + +/** + * Page directory pointer table. + */ +typedef struct X86PDPT +{ + /** PDE Array. */ + X86PDPE a[X86_PG_AMD64_PDPE_ENTRIES]; +} X86PDPT; +/** Pointer to a page directory pointer table. */ +typedef X86PDPT *PX86PDPT; +/** Pointer to a const page directory pointer table. */ +typedef const X86PDPT *PCX86PDPT; + +/** The page shift to get the PDPT index. */ +#define X86_PDPT_SHIFT 30 +/** The PDPT index mask (apply to a shifted page address). (32 bits PAE) */ +#define X86_PDPT_MASK_PAE 0x3 +/** The PDPT index mask (apply to a shifted page address). (64 bits PAE)*/ +#define X86_PDPT_MASK_AMD64 0x1ff + +/** @} */ + + +/** @name Page Map Level-4 Entry (Long Mode PAE) + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PML4E_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PML4E_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PML4E_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PML4E_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PML4E_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PML4E_A RT_BIT(5) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PML4E_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PML4E_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 8, 7 - - MBZ bits when NX is active. */ +#define X86_PML4E_MBZ_MASK_NX UINT64_C(0x0000000000000080) +/** Bits 63, 7 - - MBZ bits when no NX. */ +#define X86_PML4E_MBZ_MASK_NO_NX UINT64_C(0x8000000000000080) +/** Bits 63 - NX - PAE - No execution flag. */ +#define X86_PML4E_NX RT_BIT_64(63) + +/** + * Page Map Level-4 Entry + */ +typedef struct X86PML4EBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Chunk of reserved bits. */ + uint32_t u3Reserved : 3; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PML4EBITS; +/** Pointer to a page map level-4 entry. */ +typedef X86PML4EBITS *PX86PML4EBITS; +/** Pointer to a const page map level-4 entry. */ +typedef const X86PML4EBITS *PCX86PML4EBITS; + +/** + * Page Map Level-4 Entry. + */ +typedef union X86PML4E +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PML4EBITS n; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PML4E; +/** Pointer to a page map level-4 entry. */ +typedef X86PML4E *PX86PML4E; +/** Pointer to a const page map level-4 entry. */ +typedef const X86PML4E *PCX86PML4E; + + +/** + * Page Map Level-4. + */ +typedef struct X86PML4 +{ + /** PDE Array. */ + X86PML4E a[X86_PG_PAE_ENTRIES]; +} X86PML4; +/** Pointer to a page map level-4. */ +typedef X86PML4 *PX86PML4; +/** Pointer to a const page map level-4. */ +typedef const X86PML4 *PCX86PML4; + +/** The page shift to get the PML4 index. */ +#define X86_PML4_SHIFT 39 +/** The PML4 index mask (apply to a shifted page address). */ +#define X86_PML4_MASK 0x1ff + +/** @} */ + +/** @} */ + +/** + * 32-bit protected mode FSTENV image. + */ +typedef struct X86FSTENV32P +{ + uint16_t FCW; + uint16_t padding1; + uint16_t FSW; + uint16_t padding2; + uint16_t FTW; + uint16_t padding3; + uint32_t FPUIP; + uint16_t FPUCS; + uint16_t FOP; + uint32_t FPUDP; + uint16_t FPUDS; + uint16_t padding4; +} X86FSTENV32P; +/** Pointer to a 32-bit protected mode FSTENV image. */ +typedef X86FSTENV32P *PX86FSTENV32P; +/** Pointer to a const 32-bit protected mode FSTENV image. */ +typedef X86FSTENV32P const *PCX86FSTENV32P; + + +/** + * 80-bit MMX/FPU register type. + */ +typedef struct X86FPUMMX +{ + uint8_t reg[10]; +} X86FPUMMX; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FPUMMX, 10); +#endif +/** Pointer to a 80-bit MMX/FPU register type. */ +typedef X86FPUMMX *PX86FPUMMX; +/** Pointer to a const 80-bit MMX/FPU register type. */ +typedef const X86FPUMMX *PCX86FPUMMX; + +/** FPU (x87) register. */ +typedef union X86FPUREG +{ + /** MMX view. */ + uint64_t mmx; + /** FPU view - todo. */ + X86FPUMMX fpu; + /** Extended precision floating point view. */ + RTFLOAT80U r80; + /** Extended precision floating point view v2 */ + RTFLOAT80U2 r80Ex; + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[1]; +} X86FPUREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FPUREG, 16); +#endif +/** Pointer to a FPU register. */ +typedef X86FPUREG *PX86FPUREG; +/** Pointer to a const FPU register. */ +typedef X86FPUREG const *PCX86FPUREG; + +/** + * XMM register union. + */ +typedef union X86XMMREG +{ + /** XMM Register view *. */ + uint128_t xmm; + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[1]; +} X86XMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XMMREG, 16); +#endif +/** Pointer to an XMM register state. */ +typedef X86XMMREG *PX86XMMREG; +/** Pointer to a const XMM register state. */ +typedef X86XMMREG const *PCX86XMMREG; + +/** + * YMM register union. + */ +typedef union X86YMMREG +{ + /** 8-bit view. */ + uint8_t au8[32]; + /** 16-bit view. */ + uint16_t au16[16]; + /** 32-bit view. */ + uint32_t au32[8]; + /** 64-bit view. */ + uint64_t au64[4]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[2]; + /** XMM sub register view. */ + X86XMMREG aXmm[2]; +} X86YMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86YMMREG, 32); +#endif +/** Pointer to an YMM register state. */ +typedef X86YMMREG *PX86YMMREG; +/** Pointer to a const YMM register state. */ +typedef X86YMMREG const *PCX86YMMREG; + +/** + * ZMM register union. + */ +typedef union X86ZMMREG +{ + /** 8-bit view. */ + uint8_t au8[64]; + /** 16-bit view. */ + uint16_t au16[32]; + /** 32-bit view. */ + uint32_t au32[16]; + /** 64-bit view. */ + uint64_t au64[8]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[4]; + /** XMM sub register view. */ + X86XMMREG aXmm[4]; + /** YMM sub register view. */ + X86YMMREG aYmm[2]; +} X86ZMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86ZMMREG, 64); +#endif +/** Pointer to an ZMM register state. */ +typedef X86ZMMREG *PX86ZMMREG; +/** Pointer to a const ZMM register state. */ +typedef X86ZMMREG const *PCX86ZMMREG; + + +/** + * 32-bit FPU state (aka FSAVE/FRSTOR Memory Region). + * @todo verify this... + */ +#pragma pack(1) +typedef struct X86FPUSTATE +{ + /** 0x00 - Control word. */ + uint16_t FCW; + /** 0x02 - Alignment word */ + uint16_t Dummy1; + /** 0x04 - Status word. */ + uint16_t FSW; + /** 0x06 - Alignment word */ + uint16_t Dummy2; + /** 0x08 - Tag word */ + uint16_t FTW; + /** 0x0a - Alignment word */ + uint16_t Dummy3; + + /** 0x0c - Instruction pointer. */ + uint32_t FPUIP; + /** 0x10 - Code selector. */ + uint16_t CS; + /** 0x12 - Opcode. */ + uint16_t FOP; + /** 0x14 - FOO. */ + uint32_t FPUOO; + /** 0x18 - FOS. */ + uint32_t FPUOS; + /** 0x1c - FPU register. */ + X86FPUREG regs[8]; +} X86FPUSTATE; +#pragma pack() +/** Pointer to a FPU state. */ +typedef X86FPUSTATE *PX86FPUSTATE; +/** Pointer to a const FPU state. */ +typedef const X86FPUSTATE *PCX86FPUSTATE; + +/** + * FPU Extended state (aka FXSAVE/FXRSTORE Memory Region). + */ +#pragma pack(1) +typedef struct X86FXSTATE +{ + /** 0x00 - Control word. */ + uint16_t FCW; + /** 0x02 - Status word. */ + uint16_t FSW; + /** 0x04 - Tag word. (The upper byte is always zero.) */ + uint16_t FTW; + /** 0x06 - Opcode. */ + uint16_t FOP; + /** 0x08 - Instruction pointer. */ + uint32_t FPUIP; + /** 0x0c - Code selector. */ + uint16_t CS; + uint16_t Rsrvd1; + /** 0x10 - Data pointer. */ + uint32_t FPUDP; + /** 0x14 - Data segment */ + uint16_t DS; + /** 0x16 */ + uint16_t Rsrvd2; + /** 0x18 */ + uint32_t MXCSR; + /** 0x1c */ + uint32_t MXCSR_MASK; + /** 0x20 - FPU registers. */ + X86FPUREG aRegs[8]; + /** 0xA0 - XMM registers - 8 registers in 32 bits mode, 16 in long mode. */ + X86XMMREG aXMM[16]; + /* - offset 416 - */ + uint32_t au32RsrvdRest[(464 - 416) / sizeof(uint32_t)]; + /* - offset 464 - Software usable reserved bits. */ + uint32_t au32RsrvdForSoftware[(512 - 464) / sizeof(uint32_t)]; +} X86FXSTATE; +#pragma pack() +/** Pointer to a FPU Extended state. */ +typedef X86FXSTATE *PX86FXSTATE; +/** Pointer to a const FPU Extended state. */ +typedef const X86FXSTATE *PCX86FXSTATE; + +/** Offset for software usable reserved bits (464:511) where we store a 32-bit + * magic. Don't forget to update x86.mac if you change this! */ +#define X86_OFF_FXSTATE_RSVD 0x1d0 +/** The 32-bit magic used to recognize if this a 32-bit FPU state. Don't + * forget to update x86.mac if you change this! + * @todo r=bird: This has nothing what-so-ever to do here.... */ +#define X86_FXSTATE_RSVD_32BIT_MAGIC 0x32b3232b +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FXSTATE, 512); +AssertCompileMemberOffset(X86FXSTATE, au32RsrvdForSoftware, X86_OFF_FXSTATE_RSVD); +#endif + +/** @name FPU status word flags. + * @{ */ +/** Exception Flag: Invalid operation. */ +#define X86_FSW_IE RT_BIT(0) +/** Exception Flag: Denormalized operand. */ +#define X86_FSW_DE RT_BIT(1) +/** Exception Flag: Zero divide. */ +#define X86_FSW_ZE RT_BIT(2) +/** Exception Flag: Overflow. */ +#define X86_FSW_OE RT_BIT(3) +/** Exception Flag: Underflow. */ +#define X86_FSW_UE RT_BIT(4) +/** Exception Flag: Precision. */ +#define X86_FSW_PE RT_BIT(5) +/** Stack fault. */ +#define X86_FSW_SF RT_BIT(6) +/** Error summary status. */ +#define X86_FSW_ES RT_BIT(7) +/** Mask of exceptions flags, excluding the summary bit. */ +#define X86_FSW_XCPT_MASK UINT16_C(0x007f) +/** Mask of exceptions flags, including the summary bit. */ +#define X86_FSW_XCPT_ES_MASK UINT16_C(0x00ff) +/** Condition code 0. */ +#define X86_FSW_C0 RT_BIT(8) +/** Condition code 1. */ +#define X86_FSW_C1 RT_BIT(9) +/** Condition code 2. */ +#define X86_FSW_C2 RT_BIT(10) +/** Top of the stack mask. */ +#define X86_FSW_TOP_MASK UINT16_C(0x3800) +/** TOP shift value. */ +#define X86_FSW_TOP_SHIFT 11 +/** Mask for getting TOP value after shifting it right. */ +#define X86_FSW_TOP_SMASK UINT16_C(0x0007) +/** Get the TOP value. */ +#define X86_FSW_TOP_GET(a_uFsw) (((a_uFsw) >> X86_FSW_TOP_SHIFT) & X86_FSW_TOP_SMASK) +/** Condition code 3. */ +#define X86_FSW_C3 RT_BIT(14) +/** Mask of exceptions flags, including the summary bit. */ +#define X86_FSW_C_MASK UINT16_C(0x4700) +/** FPU busy. */ +#define X86_FSW_B RT_BIT(15) +/** @} */ + + +/** @name FPU control word flags. + * @{ */ +/** Exception Mask: Invalid operation. */ +#define X86_FCW_IM RT_BIT(0) +/** Exception Mask: Denormalized operand. */ +#define X86_FCW_DM RT_BIT(1) +/** Exception Mask: Zero divide. */ +#define X86_FCW_ZM RT_BIT(2) +/** Exception Mask: Overflow. */ +#define X86_FCW_OM RT_BIT(3) +/** Exception Mask: Underflow. */ +#define X86_FCW_UM RT_BIT(4) +/** Exception Mask: Precision. */ +#define X86_FCW_PM RT_BIT(5) +/** Mask all exceptions, the value typically loaded (by for instance fninit). + * @remarks This includes reserved bit 6. */ +#define X86_FCW_MASK_ALL UINT16_C(0x007f) +/** Mask all exceptions. Same as X86_FSW_XCPT_MASK. */ +#define X86_FCW_XCPT_MASK UINT16_C(0x003f) +/** Precision control mask. */ +#define X86_FCW_PC_MASK UINT16_C(0x0300) +/** Precision control: 24-bit. */ +#define X86_FCW_PC_24 UINT16_C(0x0000) +/** Precision control: Reserved. */ +#define X86_FCW_PC_RSVD UINT16_C(0x0100) +/** Precision control: 53-bit. */ +#define X86_FCW_PC_53 UINT16_C(0x0200) +/** Precision control: 64-bit. */ +#define X86_FCW_PC_64 UINT16_C(0x0300) +/** Rounding control mask. */ +#define X86_FCW_RC_MASK UINT16_C(0x0c00) +/** Rounding control: To nearest. */ +#define X86_FCW_RC_NEAREST UINT16_C(0x0000) +/** Rounding control: Down. */ +#define X86_FCW_RC_DOWN UINT16_C(0x0400) +/** Rounding control: Up. */ +#define X86_FCW_RC_UP UINT16_C(0x0800) +/** Rounding control: Towards zero. */ +#define X86_FCW_RC_ZERO UINT16_C(0x0c00) +/** Bits which should be zero, apparently. */ +#define X86_FCW_ZERO_MASK UINT16_C(0xf080) +/** @} */ + +/** @name SSE MXCSR + * @{ */ +/** Exception Flag: Invalid operation. */ +#define X86_MXSCR_IE RT_BIT(0) +/** Exception Flag: Denormalized operand. */ +#define X86_MXSCR_DE RT_BIT(1) +/** Exception Flag: Zero divide. */ +#define X86_MXSCR_ZE RT_BIT(2) +/** Exception Flag: Overflow. */ +#define X86_MXSCR_OE RT_BIT(3) +/** Exception Flag: Underflow. */ +#define X86_MXSCR_UE RT_BIT(4) +/** Exception Flag: Precision. */ +#define X86_MXSCR_PE RT_BIT(5) + +/** Denormals are zero. */ +#define X86_MXSCR_DAZ RT_BIT(6) + +/** Exception Mask: Invalid operation. */ +#define X86_MXSCR_IM RT_BIT(7) +/** Exception Mask: Denormalized operand. */ +#define X86_MXSCR_DM RT_BIT(8) +/** Exception Mask: Zero divide. */ +#define X86_MXSCR_ZM RT_BIT(9) +/** Exception Mask: Overflow. */ +#define X86_MXSCR_OM RT_BIT(10) +/** Exception Mask: Underflow. */ +#define X86_MXSCR_UM RT_BIT(11) +/** Exception Mask: Precision. */ +#define X86_MXSCR_PM RT_BIT(12) + +/** Rounding control mask. */ +#define X86_MXSCR_RC_MASK UINT16_C(0x6000) +/** Rounding control: To nearest. */ +#define X86_MXSCR_RC_NEAREST UINT16_C(0x0000) +/** Rounding control: Down. */ +#define X86_MXSCR_RC_DOWN UINT16_C(0x2000) +/** Rounding control: Up. */ +#define X86_MXSCR_RC_UP UINT16_C(0x4000) +/** Rounding control: Towards zero. */ +#define X86_MXSCR_RC_ZERO UINT16_C(0x6000) + +/** Flush-to-zero for masked underflow. */ +#define X86_MXSCR_FZ RT_BIT(15) + +/** Misaligned Exception Mask (AMD MISALIGNSSE). */ +#define X86_MXSCR_MM RT_BIT(17) +/** @} */ + +/** + * XSAVE header. + */ +typedef struct X86XSAVEHDR +{ + /** XTATE_BV - Bitmap indicating whether a component is in the state. */ + uint64_t bmXState; + /** XCOMP_BC - Bitmap used by instructions applying structure compaction. */ + uint64_t bmXComp; + /** Reserved for furture extensions, probably MBZ. */ + uint64_t au64Reserved[6]; +} X86XSAVEHDR; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEHDR, 64); +#endif +/** Pointer to an XSAVE header. */ +typedef X86XSAVEHDR *PX86XSAVEHDR; +/** Pointer to a const XSAVE header. */ +typedef X86XSAVEHDR const *PCX86XSAVEHDR; + + +/** + * The high 128-bit YMM register state (XSAVE_C_YMM). + * (The lower 128-bits being in X86FXSTATE.) + */ +typedef struct X86XSAVEYMMHI +{ + /** 16 registers in 64-bit mode, 8 in 32-bit mode. */ + X86XMMREG aYmmHi[16]; +} X86XSAVEYMMHI; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEYMMHI, 256); +#endif +/** Pointer to a high 128-bit YMM register state. */ +typedef X86XSAVEYMMHI *PX86XSAVEYMMHI; +/** Pointer to a const high 128-bit YMM register state. */ +typedef X86XSAVEYMMHI const *PCX86XSAVEYMMHI; + +/** + * Intel MPX bound registers state (XSAVE_C_BNDREGS). + */ +typedef struct X86XSAVEBNDREGS +{ + /** Array of registers (BND0...BND3). */ + struct + { + /** Lower bound. */ + uint64_t uLowerBound; + /** Upper bound. */ + uint64_t uUpperBound; + } aRegs[4]; +} X86XSAVEBNDREGS; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEBNDREGS, 64); +#endif +/** Pointer to a MPX bound register state. */ +typedef X86XSAVEBNDREGS *PX86XSAVEBNDREGS; +/** Pointer to a const MPX bound register state. */ +typedef X86XSAVEBNDREGS const *PCX86XSAVEBNDREGS; + +/** + * Intel MPX bound config and status register state (XSAVE_C_BNDCSR). + */ +typedef struct X86XSAVEBNDCFG +{ + uint64_t fConfig; + uint64_t fStatus; +} X86XSAVEBNDCFG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEBNDCFG, 16); +#endif +/** Pointer to a MPX bound config and status register state. */ +typedef X86XSAVEBNDCFG *PX86XSAVEBNDCFG; +/** Pointer to a const MPX bound config and status register state. */ +typedef X86XSAVEBNDCFG *PCX86XSAVEBNDCFG; + +/** + * AVX-512 opmask state (XSAVE_C_OPMASK). + */ +typedef struct X86XSAVEOPMASK +{ + /** The K0..K7 values. */ + uint64_t aKRegs[8]; +} X86XSAVEOPMASK; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEOPMASK, 64); +#endif +/** Pointer to a AVX-512 opmask state. */ +typedef X86XSAVEOPMASK *PX86XSAVEOPMASK; +/** Pointer to a const AVX-512 opmask state. */ +typedef X86XSAVEOPMASK const *PCX86XSAVEOPMASK; + +/** + * ZMM0-15 upper 256 bits introduced in AVX-512 (XSAVE_C_ZMM_HI256). + */ +typedef struct X86XSAVEZMMHI256 +{ + /** Upper 256-bits of ZMM0-15. */ + X86YMMREG aHi256Regs[16]; +} X86XSAVEZMMHI256; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEZMMHI256, 512); +#endif +/** Pointer to a state comprising the upper 256-bits of ZMM0-15. */ +typedef X86XSAVEZMMHI256 *PX86XSAVEZMMHI256; +/** Pointer to a const state comprising the upper 256-bits of ZMM0-15. */ +typedef X86XSAVEZMMHI256 const *PCX86XSAVEZMMHI256; + +/** + * ZMM16-31 register state introduced in AVX-512 (XSAVE_C_ZMM_16HI). + */ +typedef struct X86XSAVEZMM16HI +{ + /** ZMM16 thru ZMM31. */ + X86ZMMREG aRegs[16]; +} X86XSAVEZMM16HI; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEZMM16HI, 1024); +#endif +/** Pointer to a state comprising ZMM16-32. */ +typedef X86XSAVEZMM16HI *PX86XSAVEZMM16HI; +/** Pointer to a const state comprising ZMM16-32. */ +typedef X86XSAVEZMM16HI const *PCX86XSAVEZMM16HI; + +/** + * AMD Light weight profiling state (XSAVE_C_LWP). + * + * We probably won't play with this as AMD seems to be dropping from their "zen" + * processor micro architecture. + */ +typedef struct X86XSAVELWP +{ + /** Details when needed. */ + uint64_t auLater[128/8]; +} X86XSAVELWP; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVELWP, 128); +#endif + + +/** + * x86 FPU/SSE/AVX/XXXX state. + * + * Please bump DBGFCORE_FMT_VERSION by 1 in dbgfcorefmt.h if you make any + * changes to this structure. + */ +typedef struct X86XSAVEAREA +{ + /** The x87 and SSE region (or legacy region if you like). */ + X86FXSTATE x87; + /** The XSAVE header. */ + X86XSAVEHDR Hdr; + /** Beyond the header, there isn't really a fixed layout, but we can + generally assume the YMM (AVX) register extensions are present and + follows immediately. */ + union + { + /** This is a typical layout on intel CPUs (good for debuggers). */ + struct + { + X86XSAVEYMMHI YmmHi; + X86XSAVEBNDREGS BndRegs; + X86XSAVEBNDCFG BndCfg; + uint8_t abFudgeToMatchDocs[0xB0]; + X86XSAVEOPMASK Opmask; + X86XSAVEZMMHI256 ZmmHi256; + X86XSAVEZMM16HI Zmm16Hi; + } Intel; + + /** This is a typical layout on AMD Bulldozer type CPUs (good for debuggers). */ + struct + { + X86XSAVEYMMHI YmmHi; + X86XSAVELWP Lwp; + } AmdBd; + + /** To enbling static deployments that have a reasonable chance of working for + * the next 3-6 CPU generations without running short on space, we allocate a + * lot of extra space here, making the structure a round 8KB in size. This + * leaves us 7616 bytes for extended state. The skylake xeons are likely to use + * 2112 of these, leaving us with 5504 bytes for future Intel generations. */ + uint8_t ab[8192 - 512 - 64]; + } u; +} X86XSAVEAREA; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEAREA, 8192); +AssertCompileMemberSize(X86XSAVEAREA, u.Intel, 0x840 /*2112 => total 0xa80 (2688) */); +AssertCompileMemberOffset(X86XSAVEAREA, Hdr, 0x200); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.YmmHi, 0x240); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.BndRegs, 0x340); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.BndCfg, 0x380); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.Opmask, 0x440 /* 1088 */); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.ZmmHi256, 0x480 /* 1152 */); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.Zmm16Hi, 0x680 /* 1664 */); +#endif +/** Pointer to a XSAVE area. */ +typedef X86XSAVEAREA *PX86XSAVEAREA; +/** Pointer to a const XSAVE area. */ +typedef X86XSAVEAREA const *PCX86XSAVEAREA; + + +/** @name XSAVE_C_XXX - XSAVE State Components Bits. + * @{ */ +/** Bit 0 - x87 - Legacy FPU state (bit number) */ +#define XSAVE_C_X87_BIT 0 +/** Bit 0 - x87 - Legacy FPU state. */ +#define XSAVE_C_X87 RT_BIT_64(XSAVE_C_X87_BIT) +/** Bit 1 - SSE - 128-bit SSE state (bit number). */ +#define XSAVE_C_SSE_BIT 1 +/** Bit 1 - SSE - 128-bit SSE state. */ +#define XSAVE_C_SSE RT_BIT_64(XSAVE_C_SSE_BIT) +/** Bit 2 - YMM_Hi128 - Upper 128 bits of YMM0-15 (AVX) (bit number). */ +#define XSAVE_C_YMM_BIT 2 +/** Bit 2 - YMM_Hi128 - Upper 128 bits of YMM0-15 (AVX). */ +#define XSAVE_C_YMM RT_BIT_64(XSAVE_C_YMM_BIT) +/** Bit 3 - BNDREGS - MPX bound register state (bit number). */ +#define XSAVE_C_BNDREGS_BIT 3 +/** Bit 3 - BNDREGS - MPX bound register state. */ +#define XSAVE_C_BNDREGS RT_BIT_64(XSAVE_C_BNDREGS_BIT) +/** Bit 4 - BNDCSR - MPX bound config and status state (bit number). */ +#define XSAVE_C_BNDCSR_BIT 4 +/** Bit 4 - BNDCSR - MPX bound config and status state. */ +#define XSAVE_C_BNDCSR RT_BIT_64(XSAVE_C_BNDCSR_BIT) +/** Bit 5 - Opmask - opmask state (bit number). */ +#define XSAVE_C_OPMASK_BIT 5 +/** Bit 5 - Opmask - opmask state. */ +#define XSAVE_C_OPMASK RT_BIT_64(XSAVE_C_OPMASK_BIT) +/** Bit 6 - ZMM_Hi256 - Upper 256 bits of ZMM0-15 (AVX-512) (bit number). */ +#define XSAVE_C_ZMM_HI256_BIT 6 +/** Bit 6 - ZMM_Hi256 - Upper 256 bits of ZMM0-15 (AVX-512). */ +#define XSAVE_C_ZMM_HI256 RT_BIT_64(XSAVE_C_ZMM_HI256_BIT) +/** Bit 7 - Hi16_ZMM - 512-bits ZMM16-31 state (AVX-512) (bit number). */ +#define XSAVE_C_ZMM_16HI_BIT 7 +/** Bit 7 - Hi16_ZMM - 512-bits ZMM16-31 state (AVX-512). */ +#define XSAVE_C_ZMM_16HI RT_BIT_64(XSAVE_C_ZMM_16HI_BIT) +/** Bit 9 - PKRU - Protection-key state (bit number). */ +#define XSAVE_C_PKRU_BIT 9 +/** Bit 9 - PKRU - Protection-key state. */ +#define XSAVE_C_PKRU RT_BIT_64(XSAVE_C_PKRU_BIT) +/** Bit 62 - LWP - Lightweight Profiling (AMD) (bit number). */ +#define XSAVE_C_LWP_BIT 62 +/** Bit 62 - LWP - Lightweight Profiling (AMD). */ +#define XSAVE_C_LWP RT_BIT_64(XSAVE_C_LWP_BIT) +/** @} */ + + + +/** @name Selector Descriptor + * @{ + */ + +#ifndef VBOX_FOR_DTRACE_LIB +/** + * Descriptor attributes (as seen by VT-x). + */ +typedef struct X86DESCATTRBITS +{ + /** 00 - Segment Type. */ + unsigned u4Type : 4; + /** 04 - Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** 05 - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 07 - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 08 - Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** 0c - Available for system software. */ + unsigned u1Available : 1; + /** 0d - 32 bits mode: Reserved - 0, long mode: Long Attribute Bit. */ + unsigned u1Long : 1; + /** 0e - This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** 0f - Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** 10 - "Unusable" selector, special Intel (VT-x only?) bit. */ + unsigned u1Unusable : 1; +} X86DESCATTRBITS; +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** @name X86DESCATTR masks + * @{ */ +#define X86DESCATTR_TYPE UINT32_C(0x0000000f) +#define X86DESCATTR_DT UINT32_C(0x00000010) +#define X86DESCATTR_DPL UINT32_C(0x00000060) +#define X86DESCATTR_DPL_SHIFT 5 /**< Shift count for the DPL value. */ +#define X86DESCATTR_P UINT32_C(0x00000080) +#define X86DESCATTR_LIMIT_HIGH UINT32_C(0x00000f00) +#define X86DESCATTR_AVL UINT32_C(0x00001000) +#define X86DESCATTR_L UINT32_C(0x00002000) +#define X86DESCATTR_D UINT32_C(0x00004000) +#define X86DESCATTR_G UINT32_C(0x00008000) +#define X86DESCATTR_UNUSABLE UINT32_C(0x00010000) +/** @} */ + +#pragma pack(1) +typedef union X86DESCATTR +{ + /** Unsigned integer view. */ + uint32_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** Normal view. */ + X86DESCATTRBITS n; +#endif +} X86DESCATTR; +#pragma pack() +/** Pointer to descriptor attributes. */ +typedef X86DESCATTR *PX86DESCATTR; +/** Pointer to const descriptor attributes. */ +typedef const X86DESCATTR *PCX86DESCATTR; + +#ifndef VBOX_FOR_DTRACE_LIB + +/** + * Generic descriptor table entry + */ +#pragma pack(1) +typedef struct X86DESCGENERIC +{ + /** 00 - Limit - Low word. */ + unsigned u16LimitLow : 16; + /** 10 - Base address - lowe word. + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** 20 - Base address - first 8 bits of high word. */ + unsigned u8BaseHigh1 : 8; + /** 28 - Segment Type. */ + unsigned u4Type : 4; + /** 2c - Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** 2d - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 2f - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 30 - Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** 34 - Available for system software. */ + unsigned u1Available : 1; + /** 35 - 32 bits mode: Reserved - 0, long mode: Long Attribute Bit. */ + unsigned u1Long : 1; + /** 36 - This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** 37 - Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** 38 - Base address - highest 8 bits. */ + unsigned u8BaseHigh2 : 8; +} X86DESCGENERIC; +#pragma pack() +/** Pointer to a generic descriptor entry. */ +typedef X86DESCGENERIC *PX86DESCGENERIC; +/** Pointer to a const generic descriptor entry. */ +typedef const X86DESCGENERIC *PCX86DESCGENERIC; + +/** @name Bit offsets of X86DESCGENERIC members. + * @{*/ +#define X86DESCGENERIC_BIT_OFF_LIMIT_LOW (0) /**< Bit offset of X86DESCGENERIC::u16LimitLow. */ +#define X86DESCGENERIC_BIT_OFF_BASE_LOW (16) /**< Bit offset of X86DESCGENERIC::u16BaseLow. */ +#define X86DESCGENERIC_BIT_OFF_BASE_HIGH1 (32) /**< Bit offset of X86DESCGENERIC::u8BaseHigh1. */ +#define X86DESCGENERIC_BIT_OFF_TYPE (40) /**< Bit offset of X86DESCGENERIC::u4Type. */ +#define X86DESCGENERIC_BIT_OFF_DESC_TYPE (44) /**< Bit offset of X86DESCGENERIC::u1DescType. */ +#define X86DESCGENERIC_BIT_OFF_DPL (45) /**< Bit offset of X86DESCGENERIC::u2Dpl. */ +#define X86DESCGENERIC_BIT_OFF_PRESENT (47) /**< Bit offset of X86DESCGENERIC::uu1Present. */ +#define X86DESCGENERIC_BIT_OFF_LIMIT_HIGH (48) /**< Bit offset of X86DESCGENERIC::u4LimitHigh. */ +#define X86DESCGENERIC_BIT_OFF_AVAILABLE (52) /**< Bit offset of X86DESCGENERIC::u1Available. */ +#define X86DESCGENERIC_BIT_OFF_LONG (53) /**< Bit offset of X86DESCGENERIC::u1Long. */ +#define X86DESCGENERIC_BIT_OFF_DEF_BIG (54) /**< Bit offset of X86DESCGENERIC::u1DefBig. */ +#define X86DESCGENERIC_BIT_OFF_GRANULARITY (55) /**< Bit offset of X86DESCGENERIC::u1Granularity. */ +#define X86DESCGENERIC_BIT_OFF_BASE_HIGH2 (56) /**< Bit offset of X86DESCGENERIC::u8BaseHigh2. */ +/** @} */ + +/** + * Call-, Interrupt-, Trap- or Task-gate descriptor (legacy). + */ +typedef struct X86DESCGATE +{ + /** 00 - Target code segment offset - Low word. + * Ignored if task-gate. */ + unsigned u16OffsetLow : 16; + /** 10 - Target code segment selector for call-, interrupt- and trap-gates, + * TSS selector if task-gate. */ + unsigned u16Sel : 16; + /** 20 - Number of parameters for a call-gate. + * Ignored if interrupt-, trap- or task-gate. */ + unsigned u4ParmCount : 4; + /** 24 - Reserved / ignored. */ + unsigned u4Reserved : 4; + /** 28 - Segment Type. */ + unsigned u4Type : 4; + /** 2c - Descriptor Type (0 = system). */ + unsigned u1DescType : 1; + /** 2d - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 2f - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 30 - Target code segment offset - High word. + * Ignored if task-gate. */ + unsigned u16OffsetHigh : 16; +} X86DESCGATE; +/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef X86DESCGATE *PX86DESCGATE; +/** Pointer to a const Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef const X86DESCGATE *PCX86DESCGATE; + +#endif /* VBOX_FOR_DTRACE_LIB */ + +/** + * Descriptor table entry. + */ +#pragma pack(1) +typedef union X86DESC +{ +#ifndef VBOX_FOR_DTRACE_LIB + /** Generic descriptor view. */ + X86DESCGENERIC Gen; + /** Gate descriptor view. */ + X86DESCGATE Gate; +#endif + + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; + /** 64 bit unsigned integer view. */ + uint64_t au64[1]; + /** Unsigned integer view. */ + uint64_t u; +} X86DESC; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86DESC, 8); +#endif +#pragma pack() +/** Pointer to descriptor table entry. */ +typedef X86DESC *PX86DESC; +/** Pointer to const descriptor table entry. */ +typedef const X86DESC *PCX86DESC; + +/** @def X86DESC_BASE + * Return the base address of a descriptor. + */ +#define X86DESC_BASE(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint32_t)((a_pDesc)->Gen.u8BaseHigh2) << 24) \ + | ( (a_pDesc)->Gen.u8BaseHigh1 << 16) \ + | ( (a_pDesc)->Gen.u16BaseLow ) ) + +/** @def X86DESC_LIMIT + * Return the limit of a descriptor. + */ +#define X86DESC_LIMIT(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint32_t)((a_pDesc)->Gen.u4LimitHigh) << 16) \ + | ( (a_pDesc)->Gen.u16LimitLow ) ) + +/** @def X86DESC_LIMIT_G + * Return the limit of a descriptor with the granularity bit taken into account. + * @returns Selector limit (uint32_t). + * @param a_pDesc Pointer to the descriptor. + */ +#define X86DESC_LIMIT_G(a_pDesc) /*ASM-NOINC*/ \ + ( (a_pDesc)->Gen.u1Granularity \ + ? ( ( ((uint32_t)(a_pDesc)->Gen.u4LimitHigh << 16) | (a_pDesc)->Gen.u16LimitLow ) << 12 ) | UINT32_C(0xfff) \ + : ((uint32_t)(a_pDesc)->Gen.u4LimitHigh << 16) | (a_pDesc)->Gen.u16LimitLow \ + ) + +/** @def X86DESC_GET_HID_ATTR + * Get the descriptor attributes for the hidden register. + */ +#define X86DESC_GET_HID_ATTR(a_pDesc) /*ASM-NOINC*/ \ + ( ((a_pDesc)->u >> (16+16+8)) & UINT32_C(0xf0ff) ) /** @todo do we have a define for 0xf0ff? */ + +#ifndef VBOX_FOR_DTRACE_LIB + +/** + * 64 bits generic descriptor table entry + * Note: most of these bits have no meaning in long mode. + */ +#pragma pack(1) +typedef struct X86DESC64GENERIC +{ + /** Limit - Low word - *IGNORED*. */ + unsigned u16LimitLow : 16; + /** Base address - low word. - *IGNORED* + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** Base address - first 8 bits of high word. - *IGNORED* */ + unsigned u8BaseHigh1 : 8; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Segment limit 16-19. - *IGNORED* */ + unsigned u4LimitHigh : 4; + /** Available for system software. - *IGNORED* */ + unsigned u1Available : 1; + /** Long mode flag. */ + unsigned u1Long : 1; + /** This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** Granularity of the limit. If set 4KB granularity is used, if + * clear byte. - *IGNORED* */ + unsigned u1Granularity : 1; + /** Base address - highest 8 bits. - *IGNORED* */ + unsigned u8BaseHigh2 : 8; + /** Base address - bits 63-32. */ + unsigned u32BaseHigh3 : 32; + unsigned u8Reserved : 8; + unsigned u5Zeros : 5; + unsigned u19Reserved : 19; +} X86DESC64GENERIC; +#pragma pack() +/** Pointer to a generic descriptor entry. */ +typedef X86DESC64GENERIC *PX86DESC64GENERIC; +/** Pointer to a const generic descriptor entry. */ +typedef const X86DESC64GENERIC *PCX86DESC64GENERIC; + +/** + * System descriptor table entry (64 bits) + * + * @remarks This is, save a couple of comments, identical to X86DESC64GENERIC... + */ +#pragma pack(1) +typedef struct X86DESC64SYSTEM +{ + /** Limit - Low word. */ + unsigned u16LimitLow : 16; + /** Base address - lowe word. + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** Base address - first 8 bits of high word. */ + unsigned u8BaseHigh1 : 8; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** Available for system software. */ + unsigned u1Available : 1; + /** Reserved - 0. */ + unsigned u1Reserved : 1; + /** This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** Base address - bits 31-24. */ + unsigned u8BaseHigh2 : 8; + /** Base address - bits 63-32. */ + unsigned u32BaseHigh3 : 32; + unsigned u8Reserved : 8; + unsigned u5Zeros : 5; + unsigned u19Reserved : 19; +} X86DESC64SYSTEM; +#pragma pack() +/** Pointer to a system descriptor entry. */ +typedef X86DESC64SYSTEM *PX86DESC64SYSTEM; +/** Pointer to a const system descriptor entry. */ +typedef const X86DESC64SYSTEM *PCX86DESC64SYSTEM; + +/** + * Call-, Interrupt-, Trap- or Task-gate descriptor (64-bit). + */ +typedef struct X86DESC64GATE +{ + /** Target code segment offset - Low word. */ + unsigned u16OffsetLow : 16; + /** Target code segment selector. */ + unsigned u16Sel : 16; + /** Interrupt stack table for interrupt- and trap-gates. + * Ignored by call-gates. */ + unsigned u3IST : 3; + /** Reserved / ignored. */ + unsigned u5Reserved : 5; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type (0 = system). */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Target code segment offset - High word. + * Ignored if task-gate. */ + unsigned u16OffsetHigh : 16; + /** Target code segment offset - Top dword. + * Ignored if task-gate. */ + unsigned u32OffsetTop : 32; + /** Reserved / ignored / must be zero. + * For call-gates bits 8 thru 12 must be zero, the other gates ignores this. */ + unsigned u32Reserved : 32; +} X86DESC64GATE; +AssertCompileSize(X86DESC64GATE, 16); +/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef X86DESC64GATE *PX86DESC64GATE; +/** Pointer to a const Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef const X86DESC64GATE *PCX86DESC64GATE; + +#endif /* VBOX_FOR_DTRACE_LIB */ + +/** + * Descriptor table entry. + */ +#pragma pack(1) +typedef union X86DESC64 +{ +#ifndef VBOX_FOR_DTRACE_LIB + /** Generic descriptor view. */ + X86DESC64GENERIC Gen; + /** System descriptor view. */ + X86DESC64SYSTEM System; + /** Gate descriptor view. */ + X86DESC64GATE Gate; +#endif + + /** 8 bit unsigned integer view. */ + uint8_t au8[16]; + /** 16 bit unsigned integer view. */ + uint16_t au16[8]; + /** 32 bit unsigned integer view. */ + uint32_t au32[4]; + /** 64 bit unsigned integer view. */ + uint64_t au64[2]; +} X86DESC64; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86DESC64, 16); +#endif +#pragma pack() +/** Pointer to descriptor table entry. */ +typedef X86DESC64 *PX86DESC64; +/** Pointer to const descriptor table entry. */ +typedef const X86DESC64 *PCX86DESC64; + +/** @def X86DESC64_BASE + * Return the base of a 64-bit descriptor. + */ +#define X86DESC64_BASE(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint64_t)((a_pDesc)->Gen.u32BaseHigh3) << 32) \ + | ((uint32_t)((a_pDesc)->Gen.u8BaseHigh2) << 24) \ + | ( (a_pDesc)->Gen.u8BaseHigh1 << 16) \ + | ( (a_pDesc)->Gen.u16BaseLow ) ) + + + +/** @name Host system descriptor table entry - Use with care! + * @{ */ +/** Host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef X86DESC64 X86DESCHC; +#else +typedef X86DESC X86DESCHC; +#endif +/** Pointer to a host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef PX86DESC64 PX86DESCHC; +#else +typedef PX86DESC PX86DESCHC; +#endif +/** Pointer to a const host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef PCX86DESC64 PCX86DESCHC; +#else +typedef PCX86DESC PCX86DESCHC; +#endif +/** @} */ + + +/** @name Selector Descriptor Types. + * @{ + */ + +/** @name Non-System Selector Types. + * @{ */ +/** Code(=set)/Data(=clear) bit. */ +#define X86_SEL_TYPE_CODE 8 +/** Memory(=set)/System(=clear) bit. */ +#define X86_SEL_TYPE_MEMORY RT_BIT(4) +/** Accessed bit. */ +#define X86_SEL_TYPE_ACCESSED 1 +/** Expand down bit (for data selectors only). */ +#define X86_SEL_TYPE_DOWN 4 +/** Conforming bit (for code selectors only). */ +#define X86_SEL_TYPE_CONF 4 +/** Write bit (for data selectors only). */ +#define X86_SEL_TYPE_WRITE 2 +/** Read bit (for code selectors only). */ +#define X86_SEL_TYPE_READ 2 +/** The bit number of the code segment read bit (relative to u4Type). */ +#define X86_SEL_TYPE_READ_BIT 1 + +/** Read only selector type. */ +#define X86_SEL_TYPE_RO 0 +/** Accessed read only selector type. */ +#define X86_SEL_TYPE_RO_ACC (0 | X86_SEL_TYPE_ACCESSED) +/** Read write selector type. */ +#define X86_SEL_TYPE_RW 2 +/** Accessed read write selector type. */ +#define X86_SEL_TYPE_RW_ACC (2 | X86_SEL_TYPE_ACCESSED) +/** Expand down read only selector type. */ +#define X86_SEL_TYPE_RO_DOWN 4 +/** Accessed expand down read only selector type. */ +#define X86_SEL_TYPE_RO_DOWN_ACC (4 | X86_SEL_TYPE_ACCESSED) +/** Expand down read write selector type. */ +#define X86_SEL_TYPE_RW_DOWN 6 +/** Accessed expand down read write selector type. */ +#define X86_SEL_TYPE_RW_DOWN_ACC (6 | X86_SEL_TYPE_ACCESSED) +/** Execute only selector type. */ +#define X86_SEL_TYPE_EO (0 | X86_SEL_TYPE_CODE) +/** Accessed execute only selector type. */ +#define X86_SEL_TYPE_EO_ACC (0 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Execute and read selector type. */ +#define X86_SEL_TYPE_ER (2 | X86_SEL_TYPE_CODE) +/** Accessed execute and read selector type. */ +#define X86_SEL_TYPE_ER_ACC (2 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Conforming execute only selector type. */ +#define X86_SEL_TYPE_EO_CONF (4 | X86_SEL_TYPE_CODE) +/** Accessed Conforming execute only selector type. */ +#define X86_SEL_TYPE_EO_CONF_ACC (4 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Conforming execute and write selector type. */ +#define X86_SEL_TYPE_ER_CONF (6 | X86_SEL_TYPE_CODE) +/** Accessed Conforming execute and write selector type. */ +#define X86_SEL_TYPE_ER_CONF_ACC (6 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** @} */ + + +/** @name System Selector Types. + * @{ */ +/** The TSS busy bit mask. */ +#define X86_SEL_TYPE_SYS_TSS_BUSY_MASK 2 + +/** Undefined system selector type. */ +#define X86_SEL_TYPE_SYS_UNDEFINED 0 +/** 286 TSS selector. */ +#define X86_SEL_TYPE_SYS_286_TSS_AVAIL 1 +/** LDT selector. */ +#define X86_SEL_TYPE_SYS_LDT 2 +/** 286 TSS selector - Busy. */ +#define X86_SEL_TYPE_SYS_286_TSS_BUSY 3 +/** 286 Callgate selector. */ +#define X86_SEL_TYPE_SYS_286_CALL_GATE 4 +/** Taskgate selector. */ +#define X86_SEL_TYPE_SYS_TASK_GATE 5 +/** 286 Interrupt gate selector. */ +#define X86_SEL_TYPE_SYS_286_INT_GATE 6 +/** 286 Trapgate selector. */ +#define X86_SEL_TYPE_SYS_286_TRAP_GATE 7 +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED2 8 +/** 386 TSS selector. */ +#define X86_SEL_TYPE_SYS_386_TSS_AVAIL 9 +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED3 0xA +/** 386 TSS selector - Busy. */ +#define X86_SEL_TYPE_SYS_386_TSS_BUSY 0xB +/** 386 Callgate selector. */ +#define X86_SEL_TYPE_SYS_386_CALL_GATE 0xC +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED4 0xD +/** 386 Interruptgate selector. */ +#define X86_SEL_TYPE_SYS_386_INT_GATE 0xE +/** 386 Trapgate selector. */ +#define X86_SEL_TYPE_SYS_386_TRAP_GATE 0xF +/** @} */ + +/** @name AMD64 System Selector Types. + * @{ */ +/** LDT selector. */ +#define AMD64_SEL_TYPE_SYS_LDT 2 +/** TSS selector - Busy. */ +#define AMD64_SEL_TYPE_SYS_TSS_AVAIL 9 +/** TSS selector - Busy. */ +#define AMD64_SEL_TYPE_SYS_TSS_BUSY 0xB +/** Callgate selector. */ +#define AMD64_SEL_TYPE_SYS_CALL_GATE 0xC +/** Interruptgate selector. */ +#define AMD64_SEL_TYPE_SYS_INT_GATE 0xE +/** Trapgate selector. */ +#define AMD64_SEL_TYPE_SYS_TRAP_GATE 0xF +/** @} */ + +/** @} */ + + +/** @name Descriptor Table Entry Flag Masks. + * These are for the 2nd 32-bit word of a descriptor. + * @{ */ +/** Bits 8-11 - TYPE - Descriptor type mask. */ +#define X86_DESC_TYPE_MASK (RT_BIT(8) | RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bit 12 - S - System (=0) or Code/Data (=1). */ +#define X86_DESC_S RT_BIT(12) +/** Bits 13-14 - DPL - Descriptor Privilege Level. */ +#define X86_DESC_DPL (RT_BIT(13) | RT_BIT(14)) +/** Bit 15 - P - Present. */ +#define X86_DESC_P RT_BIT(15) +/** Bit 20 - AVL - Available for system software. */ +#define X86_DESC_AVL RT_BIT(20) +/** Bit 22 - DB - Default operation size. 0 = 16 bit, 1 = 32 bit. */ +#define X86_DESC_DB RT_BIT(22) +/** Bit 23 - G - Granularity of the limit. If set 4KB granularity is + * used, if clear byte. */ +#define X86_DESC_G RT_BIT(23) +/** @} */ + +/** @} */ + + +/** @name Task Segments. + * @{ + */ + +/** + * The minimum TSS descriptor limit for 286 tasks. + */ +#define X86_SEL_TYPE_SYS_286_TSS_LIMIT_MIN 0x2b + +/** + * The minimum TSS descriptor segment limit for 386 tasks. + */ +#define X86_SEL_TYPE_SYS_386_TSS_LIMIT_MIN 0x67 + +/** + * 16-bit Task Segment (TSS). + */ +#pragma pack(1) +typedef struct X86TSS16 +{ + /** Back link to previous task. (static) */ + RTSEL selPrev; + /** Ring-0 stack pointer. (static) */ + uint16_t sp0; + /** Ring-0 stack segment. (static) */ + RTSEL ss0; + /** Ring-1 stack pointer. (static) */ + uint16_t sp1; + /** Ring-1 stack segment. (static) */ + RTSEL ss1; + /** Ring-2 stack pointer. (static) */ + uint16_t sp2; + /** Ring-2 stack segment. (static) */ + RTSEL ss2; + /** IP before task switch. */ + uint16_t ip; + /** FLAGS before task switch. */ + uint16_t flags; + /** AX before task switch. */ + uint16_t ax; + /** CX before task switch. */ + uint16_t cx; + /** DX before task switch. */ + uint16_t dx; + /** BX before task switch. */ + uint16_t bx; + /** SP before task switch. */ + uint16_t sp; + /** BP before task switch. */ + uint16_t bp; + /** SI before task switch. */ + uint16_t si; + /** DI before task switch. */ + uint16_t di; + /** ES before task switch. */ + RTSEL es; + /** CS before task switch. */ + RTSEL cs; + /** SS before task switch. */ + RTSEL ss; + /** DS before task switch. */ + RTSEL ds; + /** LDTR before task switch. */ + RTSEL selLdt; +} X86TSS16; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86TSS16, X86_SEL_TYPE_SYS_286_TSS_LIMIT_MIN + 1); +#endif +#pragma pack() +/** Pointer to a 16-bit task segment. */ +typedef X86TSS16 *PX86TSS16; +/** Pointer to a const 16-bit task segment. */ +typedef const X86TSS16 *PCX86TSS16; + + +/** + * 32-bit Task Segment (TSS). + */ +#pragma pack(1) +typedef struct X86TSS32 +{ + /** Back link to previous task. (static) */ + RTSEL selPrev; + uint16_t padding1; + /** Ring-0 stack pointer. (static) */ + uint32_t esp0; + /** Ring-0 stack segment. (static) */ + RTSEL ss0; + uint16_t padding_ss0; + /** Ring-1 stack pointer. (static) */ + uint32_t esp1; + /** Ring-1 stack segment. (static) */ + RTSEL ss1; + uint16_t padding_ss1; + /** Ring-2 stack pointer. (static) */ + uint32_t esp2; + /** Ring-2 stack segment. (static) */ + RTSEL ss2; + uint16_t padding_ss2; + /** Page directory for the task. (static) */ + uint32_t cr3; + /** EIP before task switch. */ + uint32_t eip; + /** EFLAGS before task switch. */ + uint32_t eflags; + /** EAX before task switch. */ + uint32_t eax; + /** ECX before task switch. */ + uint32_t ecx; + /** EDX before task switch. */ + uint32_t edx; + /** EBX before task switch. */ + uint32_t ebx; + /** ESP before task switch. */ + uint32_t esp; + /** EBP before task switch. */ + uint32_t ebp; + /** ESI before task switch. */ + uint32_t esi; + /** EDI before task switch. */ + uint32_t edi; + /** ES before task switch. */ + RTSEL es; + uint16_t padding_es; + /** CS before task switch. */ + RTSEL cs; + uint16_t padding_cs; + /** SS before task switch. */ + RTSEL ss; + uint16_t padding_ss; + /** DS before task switch. */ + RTSEL ds; + uint16_t padding_ds; + /** FS before task switch. */ + RTSEL fs; + uint16_t padding_fs; + /** GS before task switch. */ + RTSEL gs; + uint16_t padding_gs; + /** LDTR before task switch. */ + RTSEL selLdt; + uint16_t padding_ldt; + /** Debug trap flag */ + uint16_t fDebugTrap; + /** Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} X86TSS32; +#pragma pack() +/** Pointer to task segment. */ +typedef X86TSS32 *PX86TSS32; +/** Pointer to const task segment. */ +typedef const X86TSS32 *PCX86TSS32; + +/** + * 64-bit Task segment. + */ +#pragma pack(1) +typedef struct X86TSS64 +{ + /** Reserved. */ + uint32_t u32Reserved; + /** Ring-0 stack pointer. (static) */ + uint64_t rsp0; + /** Ring-1 stack pointer. (static) */ + uint64_t rsp1; + /** Ring-2 stack pointer. (static) */ + uint64_t rsp2; + /** Reserved. */ + uint32_t u32Reserved2[2]; + /* IST */ + uint64_t ist1; + uint64_t ist2; + uint64_t ist3; + uint64_t ist4; + uint64_t ist5; + uint64_t ist6; + uint64_t ist7; + /* Reserved. */ + uint16_t u16Reserved[5]; + /** Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} X86TSS64; +#pragma pack() +/** Pointer to a 64-bit task segment. */ +typedef X86TSS64 *PX86TSS64; +/** Pointer to a const 64-bit task segment. */ +typedef const X86TSS64 *PCX86TSS64; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86TSS64, 136); +#endif + +/** @} */ + + +/** @name Selectors. + * @{ + */ + +/** + * The shift used to convert a selector from and to index an index (C). + */ +#define X86_SEL_SHIFT 3 + +/** + * The mask used to mask off the table indicator and RPL of an selector. + */ +#define X86_SEL_MASK 0xfff8U + +/** + * The mask used to mask off the RPL of an selector. + * This is suitable for checking for NULL selectors. + */ +#define X86_SEL_MASK_OFF_RPL 0xfffcU + +/** + * The bit indicating that a selector is in the LDT and not in the GDT. + */ +#define X86_SEL_LDT 0x0004U + +/** + * The bit mask for getting the RPL of a selector. + */ +#define X86_SEL_RPL 0x0003U + +/** + * The mask covering both RPL and LDT. + * This is incidentally the same as sizeof(X86DESC) - 1, so good for limit + * checks. + */ +#define X86_SEL_RPL_LDT 0x0007U + +/** @} */ + + +/** + * x86 Exceptions/Faults/Traps. + */ +typedef enum X86XCPT +{ + /** \#DE - Divide error. */ + X86_XCPT_DE = 0x00, + /** \#DB - Debug event (single step, DRx, ..) */ + X86_XCPT_DB = 0x01, + /** NMI - Non-Maskable Interrupt */ + X86_XCPT_NMI = 0x02, + /** \#BP - Breakpoint (INT3). */ + X86_XCPT_BP = 0x03, + /** \#OF - Overflow (INTO). */ + X86_XCPT_OF = 0x04, + /** \#BR - Bound range exceeded (BOUND). */ + X86_XCPT_BR = 0x05, + /** \#UD - Undefined opcode. */ + X86_XCPT_UD = 0x06, + /** \#NM - Device not available (math coprocessor device). */ + X86_XCPT_NM = 0x07, + /** \#DF - Double fault. */ + X86_XCPT_DF = 0x08, + /** ??? - Coprocessor segment overrun (obsolete). */ + X86_XCPT_CO_SEG_OVERRUN = 0x09, + /** \#TS - Taskswitch (TSS). */ + X86_XCPT_TS = 0x0a, + /** \#NP - Segment no present. */ + X86_XCPT_NP = 0x0b, + /** \#SS - Stack segment fault. */ + X86_XCPT_SS = 0x0c, + /** \#GP - General protection fault. */ + X86_XCPT_GP = 0x0d, + /** \#PF - Page fault. */ + X86_XCPT_PF = 0x0e, + /* 0x0f is reserved (to avoid conflict with spurious interrupts in BIOS setup). */ + /** \#MF - Math fault (FPU). */ + X86_XCPT_MF = 0x10, + /** \#AC - Alignment check. */ + X86_XCPT_AC = 0x11, + /** \#MC - Machine check. */ + X86_XCPT_MC = 0x12, + /** \#XF - SIMD Floating-Pointer Exception. */ + X86_XCPT_XF = 0x13, + /** \#VE - Virtualization Exception. */ + X86_XCPT_VE = 0x14, + /** \#SX - Security Exception. */ + X86_XCPT_SX = 0x1f +} X86XCPT; +/** Pointer to a x86 exception code. */ +typedef X86XCPT *PX86XCPT; +/** Pointer to a const x86 exception code. */ +typedef const X86XCPT *PCX86XCPT; +/** The maximum exception value. */ +#define X86_XCPT_MAX (X86_XCPT_SX) + + +/** @name Trap Error Codes + * @{ + */ +/** External indicator. */ +#define X86_TRAP_ERR_EXTERNAL 1 +/** IDT indicator. */ +#define X86_TRAP_ERR_IDT 2 +/** Descriptor table indicator - If set LDT, if clear GDT. */ +#define X86_TRAP_ERR_TI 4 +/** Mask for getting the selector. */ +#define X86_TRAP_ERR_SEL_MASK 0xfff8 +/** Shift for getting the selector table index (C type index). */ +#define X86_TRAP_ERR_SEL_SHIFT 3 +/** @} */ + + +/** @name \#PF Trap Error Codes + * @{ + */ +/** Bit 0 - P - Not present (clear) or page level protection (set) fault. */ +#define X86_TRAP_PF_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) or write (set) access. */ +#define X86_TRAP_PF_RW RT_BIT(1) +/** Bit 2 - U/S - CPU executing in user mode (set) or supervisor mode (clear). */ +#define X86_TRAP_PF_US RT_BIT(2) +/** Bit 3 - RSVD- Reserved bit violation (set), i.e. reserved bit was set to 1. */ +#define X86_TRAP_PF_RSVD RT_BIT(3) +/** Bit 4 - I/D - Instruction fetch (set) / Data access (clear) - PAE + NXE. */ +#define X86_TRAP_PF_ID RT_BIT(4) +/** Bit 5 - PK - Protection-key violation (AMD64 mode only). */ +#define X86_TRAP_PF_PK RT_BIT(5) +/** @} */ + +#pragma pack(1) +/** + * 16-bit IDTR. + */ +typedef struct X86IDTR16 +{ + /** Offset. */ + uint16_t offSel; + /** Selector. */ + uint16_t uSel; +} X86IDTR16, *PX86IDTR16; +#pragma pack() + +#pragma pack(1) +/** + * 32-bit IDTR/GDTR. + */ +typedef struct X86XDTR32 +{ + /** Size of the descriptor table. */ + uint16_t cb; + /** Address of the descriptor table. */ +#ifndef VBOX_FOR_DTRACE_LIB + uint32_t uAddr; +#else + uint16_t au16Addr[2]; +#endif +} X86XDTR32, *PX86XDTR32; +#pragma pack() + +#pragma pack(1) +/** + * 64-bit IDTR/GDTR. + */ +typedef struct X86XDTR64 +{ + /** Size of the descriptor table. */ + uint16_t cb; + /** Address of the descriptor table. */ +#ifndef VBOX_FOR_DTRACE_LIB + uint64_t uAddr; +#else + uint16_t au16Addr[4]; +#endif +} X86XDTR64, *PX86XDTR64; +#pragma pack() + + +/** @name ModR/M + * @{ */ +#define X86_MODRM_RM_MASK UINT8_C(0x07) +#define X86_MODRM_REG_MASK UINT8_C(0x38) +#define X86_MODRM_REG_SMASK UINT8_C(0x07) +#define X86_MODRM_REG_SHIFT 3 +#define X86_MODRM_MOD_MASK UINT8_C(0xc0) +#define X86_MODRM_MOD_SMASK UINT8_C(0x03) +#define X86_MODRM_MOD_SHIFT 6 +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompile((X86_MODRM_RM_MASK | X86_MODRM_REG_MASK | X86_MODRM_MOD_MASK) == 0xff); +AssertCompile((X86_MODRM_REG_MASK >> X86_MODRM_REG_SHIFT) == X86_MODRM_REG_SMASK); +AssertCompile((X86_MODRM_MOD_MASK >> X86_MODRM_MOD_SHIFT) == X86_MODRM_MOD_SMASK); +#endif +/** @} */ + +/** @name SIB + * @{ */ +#define X86_SIB_BASE_MASK UINT8_C(0x07) +#define X86_SIB_INDEX_MASK UINT8_C(0x38) +#define X86_SIB_INDEX_SMASK UINT8_C(0x07) +#define X86_SIB_INDEX_SHIFT 3 +#define X86_SIB_SCALE_MASK UINT8_C(0xc0) +#define X86_SIB_SCALE_SMASK UINT8_C(0x03) +#define X86_SIB_SCALE_SHIFT 6 +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompile((X86_SIB_BASE_MASK | X86_SIB_INDEX_MASK | X86_SIB_SCALE_MASK) == 0xff); +AssertCompile((X86_SIB_INDEX_MASK >> X86_SIB_INDEX_SHIFT) == X86_SIB_INDEX_SMASK); +AssertCompile((X86_SIB_SCALE_MASK >> X86_SIB_SCALE_SHIFT) == X86_SIB_SCALE_SMASK); +#endif +/** @} */ + +/** @name General register indexes + * @{ */ +#define X86_GREG_xAX 0 +#define X86_GREG_xCX 1 +#define X86_GREG_xDX 2 +#define X86_GREG_xBX 3 +#define X86_GREG_xSP 4 +#define X86_GREG_xBP 5 +#define X86_GREG_xSI 6 +#define X86_GREG_xDI 7 +#define X86_GREG_x8 8 +#define X86_GREG_x9 9 +#define X86_GREG_x10 10 +#define X86_GREG_x11 11 +#define X86_GREG_x12 12 +#define X86_GREG_x13 13 +#define X86_GREG_x14 14 +#define X86_GREG_x15 15 +/** @} */ + +/** @name X86_SREG_XXX - Segment register indexes. + * @{ */ +#define X86_SREG_ES 0 +#define X86_SREG_CS 1 +#define X86_SREG_SS 2 +#define X86_SREG_DS 3 +#define X86_SREG_FS 4 +#define X86_SREG_GS 5 +/** @} */ +/** Segment register count. */ +#define X86_SREG_COUNT 6 + + +/** @name X86_OP_XXX - Prefixes + * @{ */ +#define X86_OP_PRF_CS UINT8_C(0x2e) +#define X86_OP_PRF_SS UINT8_C(0x36) +#define X86_OP_PRF_DS UINT8_C(0x3e) +#define X86_OP_PRF_ES UINT8_C(0x26) +#define X86_OP_PRF_FS UINT8_C(0x64) +#define X86_OP_PRF_GS UINT8_C(0x65) +#define X86_OP_PRF_SIZE_OP UINT8_C(0x66) +#define X86_OP_PRF_SIZE_ADDR UINT8_C(0x67) +#define X86_OP_PRF_LOCK UINT8_C(0xf0) +#define X86_OP_PRF_REPZ UINT8_C(0xf2) +#define X86_OP_PRF_REPNZ UINT8_C(0xf3) +#define X86_OP_REX_B UINT8_C(0x41) +#define X86_OP_REX_X UINT8_C(0x42) +#define X86_OP_REX_R UINT8_C(0x44) +#define X86_OP_REX_W UINT8_C(0x48) +/** @} */ + + +/** @} */ + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/alloc-r0drv.c +++ linux-4.4.0/ubuntu/vbox/r0drv/alloc-r0drv.c @@ -0,0 +1,430 @@ +/* $Id: alloc-r0drv.cpp $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define RTMEM_NO_WRAP_TO_EF_APIS +#include +#include "internal/iprt.h" + +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#ifdef RT_MORE_STRICT +# include +#endif +#include +#include +#include +#include "r0drv/alloc-r0drv.h" + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#ifdef RT_STRICT +# define RTR0MEM_STRICT +#endif + +#ifdef RTR0MEM_STRICT +# define RTR0MEM_FENCE_EXTRA 16 +#else +# define RTR0MEM_FENCE_EXTRA 0 +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#ifdef RTR0MEM_STRICT +/** Fence data. */ +static uint8_t const g_abFence[RTR0MEM_FENCE_EXTRA] = +{ + 0x77, 0x88, 0x66, 0x99, 0x55, 0xaa, 0x44, 0xbb, + 0x33, 0xcc, 0x22, 0xdd, 0x11, 0xee, 0x00, 0xff +}; +#endif + + +/** + * Wrapper around rtR0MemAllocEx. + * + * @returns Pointer to the allocated memory block header. + * @param cb The number of bytes to allocate (sans header). + * @param fFlags The allocation flags. + */ +DECLINLINE(PRTMEMHDR) rtR0MemAlloc(size_t cb, uint32_t fFlags) +{ + PRTMEMHDR pHdr; + int rc = rtR0MemAllocEx(cb, fFlags, &pHdr); + if (RT_FAILURE(rc)) + return NULL; + return pHdr; +} + + +RTDECL(void *) RTMemTmpAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + return RTMemAllocTag(cb, pszTag); +} +RT_EXPORT_SYMBOL(RTMemTmpAllocTag); + + +RTDECL(void *) RTMemTmpAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + return RTMemAllocZTag(cb, pszTag); +} +RT_EXPORT_SYMBOL(RTMemTmpAllocZTag); + + +RTDECL(void) RTMemTmpFree(void *pv) RT_NO_THROW_DEF +{ + return RTMemFree(pv); +} +RT_EXPORT_SYMBOL(RTMemTmpFree); + + + + + +RTDECL(void *) RTMemAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, 0); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pHdr + 1; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemAllocTag); + + +RTDECL(void *) RTMemAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, RTMEMHDR_FLAG_ZEROED); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); + return memset(pHdr + 1, 0, cb); +#else + return memset(pHdr + 1, 0, pHdr->cb); +#endif + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemAllocZTag); + + +RTDECL(void *) RTMemAllocVarTag(size_t cbUnaligned, const char *pszTag) +{ + size_t cbAligned; + if (cbUnaligned >= 16) + cbAligned = RT_ALIGN_Z(cbUnaligned, 16); + else + cbAligned = RT_ALIGN_Z(cbUnaligned, sizeof(void *)); + return RTMemAllocTag(cbAligned, pszTag); +} +RT_EXPORT_SYMBOL(RTMemAllocVarTag); + + +RTDECL(void *) RTMemAllocZVarTag(size_t cbUnaligned, const char *pszTag) +{ + size_t cbAligned; + if (cbUnaligned >= 16) + cbAligned = RT_ALIGN_Z(cbUnaligned, 16); + else + cbAligned = RT_ALIGN_Z(cbUnaligned, sizeof(void *)); + return RTMemAllocZTag(cbAligned, pszTag); +} +RT_EXPORT_SYMBOL(RTMemAllocZVarTag); + + +RTDECL(void *) RTMemReallocTag(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdrOld; + + /* Free. */ + if (!cbNew && pvOld) + { + RTMemFree(pvOld); + return NULL; + } + + /* Alloc. */ + if (!pvOld) + return RTMemAllocTag(cbNew, pszTag); + + /* + * Realloc. + */ + pHdrOld = (PRTMEMHDR)pvOld - 1; + RT_ASSERT_PREEMPTIBLE(); + + if (pHdrOld->u32Magic == RTMEMHDR_MAGIC) + { + PRTMEMHDR pHdrNew; + + /* If there is sufficient space in the old block and we don't cause + substantial internal fragmentation, reuse the old block. */ + if ( pHdrOld->cb >= cbNew + RTR0MEM_FENCE_EXTRA + && pHdrOld->cb - (cbNew + RTR0MEM_FENCE_EXTRA) <= 128) + { + pHdrOld->cbReq = (uint32_t)cbNew; Assert(pHdrOld->cbReq == cbNew); +#ifdef RTR0MEM_STRICT + memcpy((uint8_t *)(pHdrOld + 1) + cbNew, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pvOld; + } + + /* Allocate a new block and copy over the content. */ + pHdrNew = rtR0MemAlloc(cbNew + RTR0MEM_FENCE_EXTRA, 0); + if (pHdrNew) + { + size_t cbCopy = RT_MIN(pHdrOld->cb, pHdrNew->cb); + memcpy(pHdrNew + 1, pvOld, cbCopy); +#ifdef RTR0MEM_STRICT + pHdrNew->cbReq = (uint32_t)cbNew; Assert(pHdrNew->cbReq == cbNew); + memcpy((uint8_t *)(pHdrNew + 1) + cbNew, &g_abFence[0], RTR0MEM_FENCE_EXTRA); + AssertReleaseMsg(!memcmp((uint8_t *)(pHdrOld + 1) + pHdrOld->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pvOld=%p cbReq=%u cb=%u cbNew=%zu fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdrOld, pvOld, pHdrOld->cbReq, pHdrOld->cb, cbNew, pHdrOld->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdrOld + 1) + pHdrOld->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdrOld); + return pHdrNew + 1; + } + } + else + AssertMsgFailed(("pHdrOld->u32Magic=%RX32 pvOld=%p cbNew=%#zx\n", pHdrOld->u32Magic, pvOld, cbNew)); + + return NULL; +} +RT_EXPORT_SYMBOL(RTMemReallocTag); + + +RTDECL(void) RTMemFree(void *pv) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + if (!pv) + return; + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX)); + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_EXEC)); +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemFree); + + + + + + +RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; +#ifdef RT_OS_SOLARIS /** @todo figure out why */ + RT_ASSERT_INTS_ON(); +#else + RT_ASSERT_PREEMPTIBLE(); +#endif + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, RTMEMHDR_FLAG_EXEC); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pHdr + 1; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemExecAllocTag); + + +RTDECL(void) RTMemExecFree(void *pv, size_t cb) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + if (!pv) + return; + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX)); +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemExecFree); + + + + +RTDECL(int) RTMemAllocExTag(size_t cb, size_t cbAlignment, uint32_t fFlags, const char *pszTag, void **ppv) RT_NO_THROW_DEF +{ + uint32_t fHdrFlags = RTMEMHDR_FLAG_ALLOC_EX; + PRTMEMHDR pHdr; + int rc; + + RT_ASSERT_PREEMPT_CPUID_VAR(); + if (!(fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC)) + RT_ASSERT_INTS_ON(); + + /* + * Fake up some alignment support. + */ + AssertMsgReturn(cbAlignment <= sizeof(void *), ("%zu (%#x)\n", cbAlignment, cbAlignment), VERR_UNSUPPORTED_ALIGNMENT); + if (cb < cbAlignment) + cb = cbAlignment; + + /* + * Validate and convert flags. + */ + AssertMsgReturn(!(fFlags & ~RTMEMALLOCEX_FLAGS_VALID_MASK_R0), ("%#x\n", fFlags), VERR_INVALID_PARAMETER); + if (fFlags & RTMEMALLOCEX_FLAGS_ZEROED) + fHdrFlags |= RTMEMHDR_FLAG_ZEROED; + if (fFlags & RTMEMALLOCEX_FLAGS_EXEC) + fHdrFlags |= RTMEMHDR_FLAG_EXEC; + if (fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC) + fHdrFlags |= RTMEMHDR_FLAG_ANY_CTX_ALLOC; + if (fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_FREE) + fHdrFlags |= RTMEMHDR_FLAG_ANY_CTX_FREE; + + /* + * Do the allocation. + */ + rc = rtR0MemAllocEx(cb + RTR0MEM_FENCE_EXTRA, fHdrFlags, &pHdr); + if (RT_SUCCESS(rc)) + { + void *pv; + + Assert(pHdr->cbReq == cb + RTR0MEM_FENCE_EXTRA); + Assert((pHdr->fFlags & fFlags) == fFlags); + + /* + * Calc user pointer, initialize the memory if requested, and if + * memory strictness is enable set up the fence. + */ + pv = pHdr + 1; + *ppv = pv; + if (fFlags & RTMEMHDR_FLAG_ZEROED) + memset(pv, 0, pHdr->cb); + +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; + memcpy((uint8_t *)pv + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + } + else if (rc == VERR_NO_MEMORY && (fFlags & RTMEMALLOCEX_FLAGS_EXEC)) + rc = VERR_NO_EXEC_MEMORY; + + RT_ASSERT_PREEMPT_CPUID(); + return rc; +} +RT_EXPORT_SYMBOL(RTMemAllocExTag); + + +RTDECL(void) RTMemFreeEx(void *pv, size_t cb) RT_NO_THROW_DEF +{ + PRTMEMHDR pHdr; + + if (!pv) + return; + + AssertPtr(pv); + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + RT_ASSERT_PREEMPT_CPUID_VAR(); + + Assert(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX); + if (!(pHdr->fFlags & RTMEMHDR_FLAG_ANY_CTX_FREE)) + RT_ASSERT_INTS_ON(); + AssertMsg(pHdr->cbReq == cb, ("cbReq=%zu cb=%zu\n", pHdr->cb, cb)); + +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + RT_ASSERT_PREEMPT_CPUID(); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemFreeEx); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/alloc-r0drv.h +++ linux-4.4.0/ubuntu/vbox/r0drv/alloc-r0drv.h @@ -0,0 +1,101 @@ +/* $Id: alloc-r0drv.h $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_alloc_r0drv_h +#define ___r0drv_alloc_r0drv_h + +#include +#include +#include +#include "internal/magics.h" + +RT_C_DECLS_BEGIN + +/** + * Header which heading all memory blocks. + */ +typedef struct RTMEMHDR +{ + /** Magic (RTMEMHDR_MAGIC). */ + uint32_t u32Magic; + /** Block flags (RTMEMHDR_FLAG_*). */ + uint32_t fFlags; + /** The actual size of the block, header not included. */ + uint32_t cb; + /** The requested allocation size. */ + uint32_t cbReq; +} RTMEMHDR, *PRTMEMHDR; + + +/** @name RTMEMHDR::fFlags. + * @{ */ +/** Clear the allocated memory. */ +#define RTMEMHDR_FLAG_ZEROED RT_BIT(0) +/** Executable flag. */ +#define RTMEMHDR_FLAG_EXEC RT_BIT(1) +/** Use allocation method suitable for any context. */ +#define RTMEMHDR_FLAG_ANY_CTX_ALLOC RT_BIT(2) +/** Use allocation method which allow for freeing in any context. */ +#define RTMEMHDR_FLAG_ANY_CTX_FREE RT_BIT(3) +/** Both alloc and free in any context (or we're just darn lazy). */ +#define RTMEMHDR_FLAG_ANY_CTX (RTMEMHDR_FLAG_ANY_CTX_ALLOC | RTMEMHDR_FLAG_ANY_CTX_FREE) +/** Indicate that it was allocated by rtR0MemAllocExTag. */ +#define RTMEMHDR_FLAG_ALLOC_EX RT_BIT(4) +#ifdef RT_OS_LINUX +/** Linux: Allocated using vm_area hacks. */ +# define RTMEMHDR_FLAG_EXEC_VM_AREA RT_BIT(29) +/** Linux: Allocated from the special heap for executable memory. */ +# define RTMEMHDR_FLAG_EXEC_HEAP RT_BIT(30) +/** Linux: Allocated by kmalloc() instead of vmalloc(). */ +# define RTMEMHDR_FLAG_KMALLOC RT_BIT(31) +#endif +/** @} */ + + +/** + * Heap allocation back end for ring-0. + * + * @returns IPRT status code. VERR_NO_MEMORY suffices for RTMEMHDR_FLAG_EXEC, + * the caller will change it to VERR_NO_EXEC_MEMORY when appropriate. + * + * @param cb The amount of memory requested by the user. This does + * not include the header. + * @param fFlags The allocation flags and more. These should be + * assigned to RTMEMHDR::fFlags together with any flags + * the backend might be using. + * @param ppHdr Where to return the memory header on success. + */ +DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFlags, PRTMEMHDR *ppHdr); + +/** + * Free memory allocated by rtR0MemAllocEx. + * @param pHdr The memory block to free. (Never NULL.) + */ +DECLHIDDEN(void) rtR0MemFree(PRTMEMHDR pHdr); + +RT_C_DECLS_END +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/generic/semspinmutex-r0drv-generic.c +++ linux-4.4.0/ubuntu/vbox/r0drv/generic/semspinmutex-r0drv-generic.c @@ -0,0 +1,503 @@ +/* $Id: semspinmutex-r0drv-generic.c $ */ +/** @file + * IPRT - Spinning Mutex Semaphores, Ring-0 Driver, Generic. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#ifdef RT_OS_WINDOWS +# include "../nt/the-nt-kernel.h" +#endif +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Saved state information. + */ +typedef struct RTSEMSPINMUTEXSTATE +{ + /** Saved flags register. */ + RTCCUINTREG fSavedFlags; + /** Preemption state. */ + RTTHREADPREEMPTSTATE PreemptState; + /** Whether to spin or sleep. */ + bool fSpin; + /** Whether the flags have been saved. */ + bool fValidFlags; +} RTSEMSPINMUTEXSTATE; + +/** + * Spinning mutex semaphore. + */ +typedef struct RTSEMSPINMUTEXINTERNAL +{ + /** Magic value (RTSEMSPINMUTEX_MAGIC) + * RTCRITSECT_MAGIC is the value of an initialized & operational section. */ + uint32_t volatile u32Magic; + /** Flags. This is a combination of RTSEMSPINMUTEX_FLAGS_XXX and + * RTSEMSPINMUTEX_INT_FLAGS_XXX. */ + uint32_t volatile fFlags; + /** The owner thread. + * This is NIL if the semaphore is not owned by anyone. */ + RTNATIVETHREAD volatile hOwner; + /** Number of threads that are fighting for the lock. */ + int32_t volatile cLockers; + /** The semaphore to block on. */ + RTSEMEVENT hEventSem; + /** Saved state information of the owner. + * This will be restored by RTSemSpinRelease. */ + RTSEMSPINMUTEXSTATE SavedState; +} RTSEMSPINMUTEXINTERNAL; + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/*#define RTSEMSPINMUTEX_INT_FLAGS_MUST*/ + +/** Validates the handle, returning if invalid. */ +#define RTSEMSPINMUTEX_VALIDATE_RETURN(pThis) \ + do \ + { \ + uint32_t u32Magic; \ + AssertPtr(pThis); \ + u32Magic = (pThis)->u32Magic; \ + if (u32Magic != RTSEMSPINMUTEX_MAGIC) \ + { \ + AssertMsgFailed(("u32Magic=%#x pThis=%p\n", u32Magic, pThis)); \ + return u32Magic == RTSEMSPINMUTEX_MAGIC_DEAD ? VERR_SEM_DESTROYED : VERR_INVALID_HANDLE; \ + } \ + } while (0) + + +RTDECL(int) RTSemSpinMutexCreate(PRTSEMSPINMUTEX phSpinMtx, uint32_t fFlags) +{ + RTSEMSPINMUTEXINTERNAL *pThis; + int rc; + + AssertReturn(!(fFlags & ~RTSEMSPINMUTEX_FLAGS_VALID_MASK), VERR_INVALID_PARAMETER); + AssertPtr(phSpinMtx); + + /* + * Allocate and initialize the structure. + */ + pThis = (RTSEMSPINMUTEXINTERNAL *)RTMemAllocZ(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + pThis->u32Magic = RTSEMSPINMUTEX_MAGIC; + pThis->fFlags = fFlags; + pThis->hOwner = NIL_RTNATIVETHREAD; + pThis->cLockers = 0; + rc = RTSemEventCreateEx(&pThis->hEventSem, RTSEMEVENT_FLAGS_NO_LOCK_VAL, NIL_RTLOCKVALCLASS, NULL); + if (RT_SUCCESS(rc)) + { + *phSpinMtx = pThis; + return VINF_SUCCESS; + } + + RTMemFree(pThis); + return rc; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexCreate); + + +/** + * Helper for RTSemSpinMutexTryRequest and RTSemSpinMutexRequest. + * + * This will check the current context and see if it's usui + * + * @returns VINF_SUCCESS or VERR_SEM_BAD_CONTEXT. + * @param pState Output structure. + */ +static int rtSemSpinMutexEnter(RTSEMSPINMUTEXSTATE *pState, RTSEMSPINMUTEXINTERNAL *pThis) +{ +#ifndef RT_OS_WINDOWS + RTTHREADPREEMPTSTATE const StateInit = RTTHREADPREEMPTSTATE_INITIALIZER; +#endif + int rc = VINF_SUCCESS; + + /** @todo Later #1: When entering in interrupt context and we're not able to + * wake up threads from it, we could try switch the lock into pure + * spinlock mode. This would require that there are no other threads + * currently waiting on it and that the RTSEMSPINMUTEX_FLAGS_IRQ_SAFE + * flag is set. + * + * Later #2: Similarly, it is possible to turn on the + * RTSEMSPINMUTEX_FLAGS_IRQ_SAFE at run time if we manage to grab the + * semaphore ownership at interrupt time. We might want to try delay the + * RTSEMSPINMUTEX_FLAGS_IRQ_SAFE even, since we're fine if we get it... + */ + +#ifdef RT_OS_WINDOWS + /* + * NT: IRQL <= DISPATCH_LEVEL for waking up threads; IRQL < DISPATCH_LEVEL for sleeping. + */ + pState->PreemptState.uchOldIrql = KeGetCurrentIrql(); + if (pState->PreemptState.uchOldIrql > DISPATCH_LEVEL) + return VERR_SEM_BAD_CONTEXT; + + if (pState->PreemptState.uchOldIrql >= DISPATCH_LEVEL) + pState->fSpin = true; + else + { + pState->fSpin = false; + KeRaiseIrql(DISPATCH_LEVEL, &pState->PreemptState.uchOldIrql); + Assert(pState->PreemptState.uchOldIrql < DISPATCH_LEVEL); + } + +#elif defined(RT_OS_SOLARIS) + /* + * Solaris: RTSemEventSignal will do bad stuff on S10 if interrupts are disabled. + */ + if (!ASMIntAreEnabled()) + return VERR_SEM_BAD_CONTEXT; + + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + if (RTThreadIsInInterrupt(NIL_RTTHREAD)) + { + if (!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE)) + rc = VINF_SEM_BAD_CONTEXT; /* Try, but owner might be interrupted. */ + pState->fSpin = true; + } + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); + +#elif defined(RT_OS_LINUX) || defined(RT_OS_OS2) + /* + * OSes on which RTSemEventSignal can be called from any context. + */ + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + if (RTThreadIsInInterrupt(NIL_RTTHREAD)) + { + if (!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE)) + rc = VINF_SEM_BAD_CONTEXT; /* Try, but owner might be interrupted. */ + pState->fSpin = true; + } + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); + +#else /* PORTME: Check for context where we cannot wake up threads. */ + /* + * Default: ASSUME thread can be woken up if interrupts are enabled and + * we're not in an interrupt context. + * ASSUME that we can go to sleep if preemption is enabled. + */ + if ( RTThreadIsInInterrupt(NIL_RTTHREAD) + || !ASMIntAreEnabled()) + return VERR_SEM_BAD_CONTEXT; + + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); +#endif + + /* + * Disable interrupts if necessary. + */ + pState->fValidFlags = !!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE); + if (pState->fValidFlags) + pState->fSavedFlags = ASMIntDisableFlags(); + else + pState->fSavedFlags = 0; + + return rc; +} + + +/** + * Helper for RTSemSpinMutexTryRequest, RTSemSpinMutexRequest and + * RTSemSpinMutexRelease. + * + * @param pState + */ +DECL_FORCE_INLINE(void) rtSemSpinMutexLeave(RTSEMSPINMUTEXSTATE *pState) +{ + /* + * Restore the interrupt flag. + */ + if (pState->fValidFlags) + ASMSetFlags(pState->fSavedFlags); + +#ifdef RT_OS_WINDOWS + /* + * NT: Lower the IRQL if we raised it. + */ + if (pState->PreemptState.uchOldIrql < DISPATCH_LEVEL) + KeLowerIrql(pState->PreemptState.uchOldIrql); +#else + /* + * Default: Restore preemption. + */ + RTThreadPreemptRestore(&pState->PreemptState); +#endif +} + + +RTDECL(int) RTSemSpinMutexTryRequest(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + RTSEMSPINMUTEXSTATE State; + bool fRc; + int rc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Check context, disable preemption and save flags if necessary. + */ + rc = rtSemSpinMutexEnter(&State, pThis); + if (RT_FAILURE(rc)) + return rc; + + /* + * Try take the ownership. + */ + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (!fRc) + { + /* Busy, too bad. Check for attempts at nested access. */ + rc = VERR_SEM_BUSY; + if (RT_UNLIKELY(pThis->hOwner == hSelf)) + { + AssertMsgFailed(("%p attempt at nested access\n")); + rc = VERR_SEM_NESTED; + } + + rtSemSpinMutexLeave(&State); + return rc; + } + + /* + * We're the semaphore owner. + */ + ASMAtomicIncS32(&pThis->cLockers); + pThis->SavedState = State; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexTryRequest); + + +RTDECL(int) RTSemSpinMutexRequest(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + RTSEMSPINMUTEXSTATE State; + bool fRc; + int rc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Check context, disable preemption and save flags if necessary. + */ + rc = rtSemSpinMutexEnter(&State, pThis); + if (RT_FAILURE(rc)) + return rc; + + /* + * Try take the ownership. + */ + ASMAtomicIncS32(&pThis->cLockers); + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (!fRc) + { + uint32_t cSpins; + + /* + * It's busy. Check if it's an attempt at nested access. + */ + if (RT_UNLIKELY(pThis->hOwner == hSelf)) + { + AssertMsgFailed(("%p attempt at nested access\n")); + rtSemSpinMutexLeave(&State); + return VERR_SEM_NESTED; + } + + /* + * Return if we're in interrupt context and the semaphore isn't + * configure to be interrupt safe. + */ + if (rc == VINF_SEM_BAD_CONTEXT) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_BAD_CONTEXT; + } + + /* + * Ok, we have to wait. + */ + if (State.fSpin) + { + for (cSpins = 0; ; cSpins++) + { + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (fRc) + break; + ASMNopPause(); + if (RT_UNLIKELY(pThis->u32Magic != RTSEMSPINMUTEX_MAGIC)) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_DESTROYED; + } + + /* + * "Yield" once in a while. This may lower our IRQL/PIL which + * may preempting us, and it will certainly stop the hammering + * of hOwner for a little while. + */ + if ((cSpins & 0x7f) == 0x1f) + { + rtSemSpinMutexLeave(&State); + rtSemSpinMutexEnter(&State, pThis); + Assert(State.fSpin); + } + } + } + else + { + for (cSpins = 0;; cSpins++) + { + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (fRc) + break; + ASMNopPause(); + if (RT_UNLIKELY(pThis->u32Magic != RTSEMSPINMUTEX_MAGIC)) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_DESTROYED; + } + + if ((cSpins & 15) == 15) /* spin a bit before going sleep (again). */ + { + rtSemSpinMutexLeave(&State); + + rc = RTSemEventWait(pThis->hEventSem, RT_INDEFINITE_WAIT); + ASMCompilerBarrier(); + if (RT_SUCCESS(rc)) + AssertReturn(pThis->u32Magic == RTSEMSPINMUTEX_MAGIC, VERR_SEM_DESTROYED); + else if (rc == VERR_INTERRUPTED) + AssertRC(rc); /* shouldn't happen */ + else + { + AssertRC(rc); + return rc; + } + + rc = rtSemSpinMutexEnter(&State, pThis); + AssertRCReturn(rc, rc); + Assert(!State.fSpin); + } + } + } + } + + /* + * We're the semaphore owner. + */ + pThis->SavedState = State; + Assert(pThis->hOwner == hSelf); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexRequest); + + +RTDECL(int) RTSemSpinMutexRelease(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + uint32_t cLockers; + RTSEMSPINMUTEXSTATE State; + bool fRc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Get the saved state and try release the semaphore. + */ + State = pThis->SavedState; + ASMCompilerBarrier(); + ASMAtomicCmpXchgHandle(&pThis->hOwner, NIL_RTNATIVETHREAD, hSelf, fRc); + AssertMsgReturn(fRc, + ("hOwner=%p hSelf=%p cLockers=%d\n", pThis->hOwner, hSelf, pThis->cLockers), + VERR_NOT_OWNER); + + cLockers = ASMAtomicDecS32(&pThis->cLockers); + rtSemSpinMutexLeave(&State); + if (cLockers > 0) + { + int rc = RTSemEventSignal(pThis->hEventSem); + AssertReleaseMsg(RT_SUCCESS(rc), ("RTSemEventSignal -> %Rrc\n", rc)); + } + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexRelease); + + +RTDECL(int) RTSemSpinMutexDestroy(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis; + RTSEMEVENT hEventSem; + int rc; + + if (hSpinMtx == NIL_RTSEMSPINMUTEX) + return VINF_SUCCESS; + pThis = hSpinMtx; + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* No destruction races allowed! */ + AssertMsg( pThis->cLockers == 0 + && pThis->hOwner == NIL_RTNATIVETHREAD, + ("pThis=%p cLockers=%d hOwner=%p\n", pThis, pThis->cLockers, pThis->hOwner)); + + /* + * Invalidate the structure, free the mutex and free the structure. + */ + ASMAtomicWriteU32(&pThis->u32Magic, RTSEMSPINMUTEX_MAGIC_DEAD); + hEventSem = pThis->hEventSem; + pThis->hEventSem = NIL_RTSEMEVENT; + rc = RTSemEventDestroy(hEventSem); AssertRC(rc); + + RTMemFree(pThis); + return rc; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexDestroy); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/initterm-r0drv.c +++ linux-4.4.0/ubuntu/vbox/r0drv/initterm-r0drv.c @@ -0,0 +1,154 @@ +/* $Id: initterm-r0drv.cpp $ */ +/** @file + * IPRT - Initialization & Termination, R0 Driver, Common. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#ifndef IN_GUEST /* play safe for now */ +# include "r0drv/mp-r0drv.h" +# include "r0drv/power-r0drv.h" +#endif + +#include "internal/initterm.h" +#include "internal/thread.h" + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** Count of current IPRT users. + * In ring-0 several drivers / kmods / kexts / wossnames may share the + * same runtime code. So, we need to keep count in order not to terminate + * it prematurely. */ +static int32_t volatile g_crtR0Users = 0; + + +/** + * Initializes the ring-0 driver runtime library. + * + * @returns iprt status code. + * @param fReserved Flags reserved for the future. + */ +RTR0DECL(int) RTR0Init(unsigned fReserved) +{ + int rc; + uint32_t cNewUsers; + Assert(fReserved == 0); +#ifndef RT_OS_SOLARIS /* On Solaris our thread preemption information is only obtained in rtR0InitNative().*/ + RT_ASSERT_PREEMPTIBLE(); +#endif + + /* + * The first user initializes it. + * We rely on the module loader to ensure that there are no + * initialization races should two modules share the IPRT. + */ + cNewUsers = ASMAtomicIncS32(&g_crtR0Users); + if (cNewUsers != 1) + { + if (cNewUsers > 1) + return VINF_SUCCESS; + ASMAtomicDecS32(&g_crtR0Users); + return VERR_INTERNAL_ERROR_3; + } + + rc = rtR0InitNative(); + if (RT_SUCCESS(rc)) + { + rc = rtThreadInit(); + if (RT_SUCCESS(rc)) + { +#ifndef IN_GUEST /* play safe for now */ + rc = rtR0MpNotificationInit(); + if (RT_SUCCESS(rc)) + { + rc = rtR0PowerNotificationInit(); + if (RT_SUCCESS(rc)) + return rc; + rtR0MpNotificationTerm(); + } +#else + if (RT_SUCCESS(rc)) + return rc; +#endif + rtThreadTerm(); + } + rtR0TermNative(); + } + return rc; +} +RT_EXPORT_SYMBOL(RTR0Init); + + +static void rtR0Term(void) +{ + rtThreadTerm(); +#ifndef IN_GUEST /* play safe for now */ + rtR0PowerNotificationTerm(); + rtR0MpNotificationTerm(); +#endif + rtR0TermNative(); +} + + +/** + * Terminates the ring-0 driver runtime library. + */ +RTR0DECL(void) RTR0Term(void) +{ + int32_t cNewUsers; + RT_ASSERT_PREEMPTIBLE(); + + cNewUsers = ASMAtomicDecS32(&g_crtR0Users); + Assert(cNewUsers >= 0); + if (cNewUsers == 0) + rtR0Term(); + else if (cNewUsers < 0) + ASMAtomicIncS32(&g_crtR0Users); +} +RT_EXPORT_SYMBOL(RTR0Term); + + +/* Note! Should *not* be exported since it's only for static linking. */ +RTR0DECL(void) RTR0TermForced(void) +{ + RT_ASSERT_PREEMPTIBLE(); + + AssertMsg(g_crtR0Users == 1, ("%d\n", g_crtR0Users)); + ASMAtomicWriteS32(&g_crtR0Users, 0); + + rtR0Term(); +} + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c @@ -0,0 +1,43 @@ +/* $Id: RTLogWriteDebugger-r0drv-linux.c $ */ +/** @file + * IPRT - Log To Debugger, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + + +RTDECL(void) RTLogWriteDebugger(const char *pch, size_t cb) +{ + IPRT_LINUX_SAVE_EFL_AC(); + printk("%.*s", (int)cb, pch); + IPRT_LINUX_RESTORE_EFL_AC(); +} +RT_EXPORT_SYMBOL(RTLogWriteDebugger); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/alloc-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/alloc-r0drv-linux.c @@ -0,0 +1,500 @@ +/* $Id: alloc-r0drv-linux.c $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include "r0drv/alloc-r0drv.h" + + +#if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) +/** + * Starting with 2.6.23 we can use __get_vm_area and map_vm_area to allocate + * memory in the moduel range. This is preferrable to the exec heap below. + */ +# define RTMEMALLOC_EXEC_VM_AREA +# else +/** + * We need memory in the module range (~2GB to ~0) this can only be obtained + * thru APIs that are not exported (see module_alloc()). + * + * So, we'll have to create a quick and dirty heap here using BSS memory. + * Very annoying and it's going to restrict us! + */ +# define RTMEMALLOC_EXEC_HEAP +# endif +#endif + +#ifdef RTMEMALLOC_EXEC_HEAP +# include +# include +# include +#endif + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +#ifdef RTMEMALLOC_EXEC_VM_AREA +/** + * Extended header used for headers marked with RTMEMHDR_FLAG_EXEC_VM_AREA. + * + * This is used with allocating executable memory, for things like generated + * code and loaded modules. + */ +typedef struct RTMEMLNXHDREX +{ + /** The VM area for this allocation. */ + struct vm_struct *pVmArea; + void *pvDummy; + /** The header we present to the generic API. */ + RTMEMHDR Hdr; +} RTMEMLNXHDREX; +AssertCompileSize(RTMEMLNXHDREX, 32); +/** Pointer to an extended memory header. */ +typedef RTMEMLNXHDREX *PRTMEMLNXHDREX; +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#ifdef RTMEMALLOC_EXEC_HEAP +/** The heap. */ +static RTHEAPSIMPLE g_HeapExec = NIL_RTHEAPSIMPLE; +/** Spinlock protecting the heap. */ +static RTSPINLOCK g_HeapExecSpinlock = NIL_RTSPINLOCK; +#endif + + +/** + * API for cleaning up the heap spinlock on IPRT termination. + * This is as RTMemExecDonate specific to AMD64 Linux/GNU. + */ +DECLHIDDEN(void) rtR0MemExecCleanup(void) +{ +#ifdef RTMEMALLOC_EXEC_HEAP + RTSpinlockDestroy(g_HeapExecSpinlock); + g_HeapExecSpinlock = NIL_RTSPINLOCK; +#endif +} + + +/** + * Donate read+write+execute memory to the exec heap. + * + * This API is specific to AMD64 and Linux/GNU. A kernel module that desires to + * use RTMemExecAlloc on AMD64 Linux/GNU will have to donate some statically + * allocated memory in the module if it wishes for GCC generated code to work. + * GCC can only generate modules that work in the address range ~2GB to ~0 + * currently. + * + * The API only accept one single donation. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the code isn't enabled. + * @param pvMemory Pointer to the memory block. + * @param cb The size of the memory block. + */ +RTR0DECL(int) RTR0MemExecDonate(void *pvMemory, size_t cb) +{ +#ifdef RTMEMALLOC_EXEC_HEAP + int rc; + AssertReturn(g_HeapExec == NIL_RTHEAPSIMPLE, VERR_WRONG_ORDER); + + rc = RTSpinlockCreate(&g_HeapExecSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0MemExecDonate"); + if (RT_SUCCESS(rc)) + { + rc = RTHeapSimpleInit(&g_HeapExec, pvMemory, cb); + if (RT_FAILURE(rc)) + rtR0MemExecCleanup(); + } + return rc; +#else + return VERR_NOT_SUPPORTED; +#endif +} +RT_EXPORT_SYMBOL(RTR0MemExecDonate); + + + +#ifdef RTMEMALLOC_EXEC_VM_AREA +/** + * Allocate executable kernel memory in the module range. + * + * @returns Pointer to a allocation header success. NULL on failure. + * + * @param cb The size the user requested. + */ +static PRTMEMHDR rtR0MemAllocExecVmArea(size_t cb) +{ + size_t const cbAlloc = RT_ALIGN_Z(sizeof(RTMEMLNXHDREX) + cb, PAGE_SIZE); + size_t const cPages = cbAlloc >> PAGE_SHIFT; + struct page **papPages; + struct vm_struct *pVmArea; + size_t iPage; + + pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END); + if (!pVmArea) + return NULL; + pVmArea->nr_pages = 0; /* paranoia? */ + pVmArea->pages = NULL; /* paranoia? */ + + papPages = (struct page **)kmalloc(cPages * sizeof(papPages[0]), GFP_KERNEL | __GFP_NOWARN); + if (!papPages) + { + vunmap(pVmArea->addr); + return NULL; + } + + for (iPage = 0; iPage < cPages; iPage++) + { + papPages[iPage] = alloc_page(GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN); + if (!papPages[iPage]) + break; + } + if (iPage == cPages) + { + /* + * Map the pages. + * + * Not entirely sure we really need to set nr_pages and pages here, but + * they provide a very convenient place for storing something we need + * in the free function, if nothing else... + */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + struct page **papPagesIterator = papPages; +# endif + pVmArea->nr_pages = cPages; + pVmArea->pages = papPages; + if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC, +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + &papPagesIterator +# else + papPages +# endif + )) + { + PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr; + pHdrEx->pVmArea = pVmArea; + pHdrEx->pvDummy = NULL; + return &pHdrEx->Hdr; + } + /* bail out */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + pVmArea->nr_pages = papPagesIterator - papPages; +# endif + } + + vunmap(pVmArea->addr); + + while (iPage-- > 0) + __free_page(papPages[iPage]); + kfree(papPages); + + return NULL; +} +#endif /* RTMEMALLOC_EXEC_VM_AREA */ + + +/** + * OS specific allocation function. + */ +DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFlags, PRTMEMHDR *ppHdr) +{ + PRTMEMHDR pHdr; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Allocate. + */ + if (fFlags & RTMEMHDR_FLAG_EXEC) + { + if (fFlags & RTMEMHDR_FLAG_ANY_CTX) + return VERR_NOT_SUPPORTED; + +#if defined(RT_ARCH_AMD64) +# ifdef RTMEMALLOC_EXEC_HEAP + if (g_HeapExec != NIL_RTHEAPSIMPLE) + { + RTSpinlockAcquire(g_HeapExecSpinlock); + pHdr = (PRTMEMHDR)RTHeapSimpleAlloc(g_HeapExec, cb + sizeof(*pHdr), 0); + RTSpinlockRelease(g_HeapExecSpinlock); + fFlags |= RTMEMHDR_FLAG_EXEC_HEAP; + } + else + pHdr = NULL; + +# elif defined(RTMEMALLOC_EXEC_VM_AREA) + pHdr = rtR0MemAllocExecVmArea(cb); + fFlags |= RTMEMHDR_FLAG_EXEC_VM_AREA; + +# else /* !RTMEMALLOC_EXEC_HEAP */ +# error "you don not want to go here..." + pHdr = (PRTMEMHDR)__vmalloc(cb + sizeof(*pHdr), GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN, MY_PAGE_KERNEL_EXEC); +# endif /* !RTMEMALLOC_EXEC_HEAP */ + +#elif defined(PAGE_KERNEL_EXEC) && defined(CONFIG_X86_PAE) + pHdr = (PRTMEMHDR)__vmalloc(cb + sizeof(*pHdr), GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN, MY_PAGE_KERNEL_EXEC); +#else + pHdr = (PRTMEMHDR)vmalloc(cb + sizeof(*pHdr)); +#endif + } + else + { + if ( +#if 1 /* vmalloc has serious performance issues, avoid it. */ + cb <= PAGE_SIZE*16 - sizeof(*pHdr) +#else + cb <= PAGE_SIZE +#endif + || (fFlags & RTMEMHDR_FLAG_ANY_CTX) + ) + { + fFlags |= RTMEMHDR_FLAG_KMALLOC; + pHdr = kmalloc(cb + sizeof(*pHdr), + (fFlags & RTMEMHDR_FLAG_ANY_CTX_ALLOC) ? (GFP_ATOMIC | __GFP_NOWARN) + : (GFP_KERNEL | __GFP_NOWARN)); + if (RT_UNLIKELY( !pHdr + && cb > PAGE_SIZE + && !(fFlags & RTMEMHDR_FLAG_ANY_CTX) )) + { + fFlags &= ~RTMEMHDR_FLAG_KMALLOC; + pHdr = vmalloc(cb + sizeof(*pHdr)); + } + } + else + pHdr = vmalloc(cb + sizeof(*pHdr)); + } + if (RT_UNLIKELY(!pHdr)) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + /* + * Initialize. + */ + pHdr->u32Magic = RTMEMHDR_MAGIC; + pHdr->fFlags = fFlags; + pHdr->cb = cb; + pHdr->cbReq = cb; + + *ppHdr = pHdr; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} + + +/** + * OS specific free function. + */ +DECLHIDDEN(void) rtR0MemFree(PRTMEMHDR pHdr) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + pHdr->u32Magic += 1; + if (pHdr->fFlags & RTMEMHDR_FLAG_KMALLOC) + kfree(pHdr); +#ifdef RTMEMALLOC_EXEC_HEAP + else if (pHdr->fFlags & RTMEMHDR_FLAG_EXEC_HEAP) + { + RTSpinlockAcquire(g_HeapExecSpinlock); + RTHeapSimpleFree(g_HeapExec, pHdr); + RTSpinlockRelease(g_HeapExecSpinlock); + } +#endif +#ifdef RTMEMALLOC_EXEC_VM_AREA + else if (pHdr->fFlags & RTMEMHDR_FLAG_EXEC_VM_AREA) + { + PRTMEMLNXHDREX pHdrEx = RT_FROM_MEMBER(pHdr, RTMEMLNXHDREX, Hdr); + size_t iPage = pHdrEx->pVmArea->nr_pages; + struct page **papPages = pHdrEx->pVmArea->pages; + void *pvMapping = pHdrEx->pVmArea->addr; + + vunmap(pvMapping); + + while (iPage-- > 0) + __free_page(papPages[iPage]); + kfree(papPages); + } +#endif + else + vfree(pHdr); + + IPRT_LINUX_RESTORE_EFL_AC(); +} + + + +/** + * Compute order. Some functions allocate 2^order pages. + * + * @returns order. + * @param cPages Number of pages. + */ +static int CalcPowerOf2Order(unsigned long cPages) +{ + int iOrder; + unsigned long cTmp; + + for (iOrder = 0, cTmp = cPages; cTmp >>= 1; ++iOrder) + ; + if (cPages & ~(1 << iOrder)) + ++iOrder; + + return iOrder; +} + + +/** + * Allocates physical contiguous memory (below 4GB). + * The allocation is page aligned and the content is undefined. + * + * @returns Pointer to the memory block. This is page aligned. + * @param pPhys Where to store the physical address. + * @param cb The allocation size in bytes. This is always + * rounded up to PAGE_SIZE. + */ +RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_t cb) +{ + int cOrder; + unsigned cPages; + struct page *paPages; + void *pvRet; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * validate input. + */ + Assert(VALID_PTR(pPhys)); + Assert(cb > 0); + + /* + * Allocate page pointer array. + */ + cb = RT_ALIGN_Z(cb, PAGE_SIZE); + cPages = cb >> PAGE_SHIFT; + cOrder = CalcPowerOf2Order(cPages); +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + paPages = alloc_pages(GFP_DMA32 | __GFP_NOWARN, cOrder); + if (!paPages) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA; 0-16MB */ + paPages = alloc_pages(GFP_DMA | __GFP_NOWARN, cOrder); +#else + /* ZONE_NORMAL: 0-896MB */ + paPages = alloc_pages(GFP_USER | __GFP_NOWARN, cOrder); +#endif + if (paPages) + { + /* + * Reserve the pages and mark them executable. + */ + unsigned iPage; + for (iPage = 0; iPage < cPages; iPage++) + { + Assert(!PageHighMem(&paPages[iPage])); + if (iPage + 1 < cPages) + { + AssertMsg( (uintptr_t)phys_to_virt(page_to_phys(&paPages[iPage])) + PAGE_SIZE + == (uintptr_t)phys_to_virt(page_to_phys(&paPages[iPage + 1])) + && page_to_phys(&paPages[iPage]) + PAGE_SIZE + == page_to_phys(&paPages[iPage + 1]), + ("iPage=%i cPages=%u [0]=%#llx,%p [1]=%#llx,%p\n", iPage, cPages, + (long long)page_to_phys(&paPages[iPage]), phys_to_virt(page_to_phys(&paPages[iPage])), + (long long)page_to_phys(&paPages[iPage + 1]), phys_to_virt(page_to_phys(&paPages[iPage + 1])) )); + } + + SetPageReserved(&paPages[iPage]); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ + MY_SET_PAGES_EXEC(&paPages[iPage], 1); +#endif + } + *pPhys = page_to_phys(paPages); + pvRet = phys_to_virt(page_to_phys(paPages)); + } + else + pvRet = NULL; + + IPRT_LINUX_RESTORE_EFL_AC(); + return pvRet; +} +RT_EXPORT_SYMBOL(RTMemContAlloc); + + +/** + * Frees memory allocated using RTMemContAlloc(). + * + * @param pv Pointer to return from RTMemContAlloc(). + * @param cb The cb parameter passed to RTMemContAlloc(). + */ +RTR0DECL(void) RTMemContFree(void *pv, size_t cb) +{ + if (pv) + { + int cOrder; + unsigned cPages; + unsigned iPage; + struct page *paPages; + IPRT_LINUX_SAVE_EFL_AC(); + + /* validate */ + AssertMsg(!((uintptr_t)pv & PAGE_OFFSET_MASK), ("pv=%p\n", pv)); + Assert(cb > 0); + + /* calc order and get pages */ + cb = RT_ALIGN_Z(cb, PAGE_SIZE); + cPages = cb >> PAGE_SHIFT; + cOrder = CalcPowerOf2Order(cPages); + paPages = virt_to_page(pv); + + /* + * Restore page attributes freeing the pages. + */ + for (iPage = 0; iPage < cPages; iPage++) + { + ClearPageReserved(&paPages[iPage]); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ + MY_SET_PAGES_NOEXEC(&paPages[iPage], 1); +#endif + } + __free_pages(paPages, cOrder); + IPRT_LINUX_RESTORE_EFL_AC(); + } +} +RT_EXPORT_SYMBOL(RTMemContFree); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/assert-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/assert-r0drv-linux.c @@ -0,0 +1,74 @@ +/* $Id: assert-r0drv-linux.c $ */ +/** @file + * IPRT - Assertion Workers, Ring-0 Drivers, Linux. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include + +#include "internal/assert.h" + + +DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + IPRT_LINUX_SAVE_EFL_AC(); + printk(KERN_EMERG + "\r\n!!Assertion Failed!!\r\n" + "Expression: %s\r\n" + "Location : %s(%d) %s\r\n", + pszExpr, pszFile, uLine, pszFunction); + IPRT_LINUX_RESTORE_EFL_AC(); +} + + +DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va) +{ + char szMsg[256]; + IPRT_LINUX_SAVE_EFL_AC(); + + RTStrPrintfV(szMsg, sizeof(szMsg) - 1, pszFormat, va); + szMsg[sizeof(szMsg) - 1] = '\0'; + printk(KERN_EMERG "%s", szMsg); + + NOREF(fInitial); + IPRT_LINUX_RESTORE_EFL_AC(); +} + + +RTR0DECL(void) RTR0AssertPanicSystem(void) +{ + panic("%s%s", g_szRTAssertMsg1, g_szRTAssertMsg2); +} +RT_EXPORT_SYMBOL(RTR0AssertPanicSystem); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/initterm-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/initterm-r0drv-linux.c @@ -0,0 +1,137 @@ +/* $Id: initterm-r0drv-linux.c $ */ +/** @file + * IPRT - Initialization & Termination, R0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include +#include "internal/initterm.h" + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The IPRT work queue. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +static struct workqueue_struct *g_prtR0LnxWorkQueue; +#else +static DECLARE_TASK_QUEUE(g_rtR0LnxWorkQueue); +#endif + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +/* in alloc-r0drv0-linux.c */ +DECLHIDDEN(void) rtR0MemExecCleanup(void); + + +/** + * Pushes an item onto the IPRT work queue. + * + * @param pWork The work item. + * @param pfnWorker The callback function. It will be called back + * with @a pWork as argument. + */ +DECLHIDDEN(void) rtR0LnxWorkqueuePush(RTR0LNXWORKQUEUEITEM *pWork, void (*pfnWorker)(RTR0LNXWORKQUEUEITEM *)) +{ + IPRT_LINUX_SAVE_EFL_AC(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20) + INIT_WORK(pWork, pfnWorker); +# else + INIT_WORK(pWork, pfnWorker, pWork); +# endif + queue_work(g_prtR0LnxWorkQueue, pWork); +#else + INIT_TQUEUE(pWork, (void (*)(void *))pfnWorker, pWork); + queue_task(pWork, &g_rtR0LnxWorkQueue); +#endif + + IPRT_LINUX_RESTORE_EFL_AC(); +} + + +/** + * Flushes all items in the IPRT work queue. + * + * @remarks This is mostly for 2.4.x compatability. Must not be called from + * atomic contexts or with unncessary locks held. + */ +DECLHIDDEN(void) rtR0LnxWorkqueueFlush(void) +{ + IPRT_LINUX_SAVE_EFL_AC(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + flush_workqueue(g_prtR0LnxWorkQueue); +#else + run_task_queue(&g_rtR0LnxWorkQueue); +#endif + + IPRT_LINUX_RESTORE_EFL_AC(); +} + + +DECLHIDDEN(int) rtR0InitNative(void) +{ + int rc = VINF_SUCCESS; + IPRT_LINUX_SAVE_EFL_AC(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + g_prtR0LnxWorkQueue = create_workqueue("iprt-VBoxWQueue"); + #else + g_prtR0LnxWorkQueue = create_workqueue("iprt-VBoxQ"); + #endif + if (!g_prtR0LnxWorkQueue) + rc = VERR_NO_MEMORY; +#endif + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(void) rtR0TermNative(void) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + rtR0LnxWorkqueueFlush(); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + destroy_workqueue(g_prtR0LnxWorkQueue); + g_prtR0LnxWorkQueue = NULL; +#endif + + rtR0MemExecCleanup(); + + IPRT_LINUX_RESTORE_EFL_AC(); +} + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/memobj-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/memobj-r0drv-linux.c @@ -0,0 +1,1676 @@ +/* $Id: memobj-r0drv-linux.c $ */ +/** @file + * IPRT - Ring-0 Memory Objects, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" + +#include +#include +#include +#include +#include +#include +#include "internal/memobj.h" + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/* early 2.6 kernels */ +#ifndef PAGE_SHARED_EXEC +# define PAGE_SHARED_EXEC PAGE_SHARED +#endif +#ifndef PAGE_READONLY_EXEC +# define PAGE_READONLY_EXEC PAGE_READONLY +#endif + +/* + * 2.6.29+ kernels don't work with remap_pfn_range() anymore because + * track_pfn_vma_new() is apparently not defined for non-RAM pages. + * It should be safe to use vm_insert_page() older kernels as well. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) +# define VBOX_USE_INSERT_PAGE +#endif +#if defined(CONFIG_X86_PAE) \ + && ( defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) \ + || ( LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) \ + && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11))) +# define VBOX_USE_PAE_HACK +#endif + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * The Darwin version of the memory object structure. + */ +typedef struct RTR0MEMOBJLNX +{ + /** The core structure. */ + RTR0MEMOBJINTERNAL Core; + /** Set if the allocation is contiguous. + * This means it has to be given back as one chunk. */ + bool fContiguous; + /** Set if we've vmap'ed the memory into ring-0. */ + bool fMappedToRing0; + /** The pages in the apPages array. */ + size_t cPages; + /** Array of struct page pointers. (variable size) */ + struct page *apPages[1]; +} RTR0MEMOBJLNX, *PRTR0MEMOBJLNX; + + +static void rtR0MemObjLinuxFreePages(PRTR0MEMOBJLNX pMemLnx); + + +/** + * Helper that converts from a RTR0PROCESS handle to a linux task. + * + * @returns The corresponding Linux task. + * @param R0Process IPRT ring-0 process handle. + */ +static struct task_struct *rtR0ProcessToLinuxTask(RTR0PROCESS R0Process) +{ + /** @todo fix rtR0ProcessToLinuxTask!! */ + /** @todo many (all?) callers currently assume that we return 'current'! */ + return R0Process == RTR0ProcHandleSelf() ? current : NULL; +} + + +/** + * Compute order. Some functions allocate 2^order pages. + * + * @returns order. + * @param cPages Number of pages. + */ +static int rtR0MemObjLinuxOrder(size_t cPages) +{ + int iOrder; + size_t cTmp; + + for (iOrder = 0, cTmp = cPages; cTmp >>= 1; ++iOrder) + ; + if (cPages & ~((size_t)1 << iOrder)) + ++iOrder; + + return iOrder; +} + + +/** + * Converts from RTMEM_PROT_* to Linux PAGE_*. + * + * @returns Linux page protection constant. + * @param fProt The IPRT protection mask. + * @param fKernel Whether it applies to kernel or user space. + */ +static pgprot_t rtR0MemObjLinuxConvertProt(unsigned fProt, bool fKernel) +{ + switch (fProt) + { + default: + AssertMsgFailed(("%#x %d\n", fProt, fKernel)); + case RTMEM_PROT_NONE: + return PAGE_NONE; + + case RTMEM_PROT_READ: + return fKernel ? PAGE_KERNEL_RO : PAGE_READONLY; + + case RTMEM_PROT_WRITE: + case RTMEM_PROT_WRITE | RTMEM_PROT_READ: + return fKernel ? PAGE_KERNEL : PAGE_SHARED; + + case RTMEM_PROT_EXEC: + case RTMEM_PROT_EXEC | RTMEM_PROT_READ: +#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) + if (fKernel) + { + pgprot_t fPg = MY_PAGE_KERNEL_EXEC; + pgprot_val(fPg) &= ~_PAGE_RW; + return fPg; + } + return PAGE_READONLY_EXEC; +#else + return fKernel ? MY_PAGE_KERNEL_EXEC : PAGE_READONLY_EXEC; +#endif + + case RTMEM_PROT_WRITE | RTMEM_PROT_EXEC: + case RTMEM_PROT_WRITE | RTMEM_PROT_EXEC | RTMEM_PROT_READ: + return fKernel ? MY_PAGE_KERNEL_EXEC : PAGE_SHARED_EXEC; + } +} + + +/** + * Worker for rtR0MemObjNativeReserveUser and rtR0MemObjNativerMapUser that creates + * an empty user space mapping. + * + * We acquire the mmap_sem of the task! + * + * @returns Pointer to the mapping. + * (void *)-1 on failure. + * @param R3PtrFixed (RTR3PTR)-1 if anywhere, otherwise a specific location. + * @param cb The size of the mapping. + * @param uAlignment The alignment of the mapping. + * @param pTask The Linux task to create this mapping in. + * @param fProt The RTMEM_PROT_* mask. + */ +static void *rtR0MemObjLinuxDoMmap(RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, struct task_struct *pTask, unsigned fProt) +{ + unsigned fLnxProt; + unsigned long ulAddr; + + Assert((pTask == current)); /* do_mmap */ + + /* + * Convert from IPRT protection to mman.h PROT_ and call do_mmap. + */ + fProt &= (RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC); + if (fProt == RTMEM_PROT_NONE) + fLnxProt = PROT_NONE; + else + { + fLnxProt = 0; + if (fProt & RTMEM_PROT_READ) + fLnxProt |= PROT_READ; + if (fProt & RTMEM_PROT_WRITE) + fLnxProt |= PROT_WRITE; + if (fProt & RTMEM_PROT_EXEC) + fLnxProt |= PROT_EXEC; + } + + if (R3PtrFixed != (RTR3PTR)-1) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); +#else + down_write(&pTask->mm->mmap_sem); + ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); + up_write(&pTask->mm->mmap_sem); +#endif + } + else + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); +#else + down_write(&pTask->mm->mmap_sem); + ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); + up_write(&pTask->mm->mmap_sem); +#endif + if ( !(ulAddr & ~PAGE_MASK) + && (ulAddr & (uAlignment - 1))) + { + /** @todo implement uAlignment properly... We'll probably need to make some dummy mappings to fill + * up alignment gaps. This is of course complicated by fragmentation (which we might have cause + * ourselves) and further by there begin two mmap strategies (top / bottom). */ + /* For now, just ignore uAlignment requirements... */ + } + } + + + if (ulAddr & ~PAGE_MASK) /* ~PAGE_MASK == PAGE_OFFSET_MASK */ + return (void *)-1; + return (void *)ulAddr; +} + + +/** + * Worker that destroys a user space mapping. + * Undoes what rtR0MemObjLinuxDoMmap did. + * + * We acquire the mmap_sem of the task! + * + * @param pv The ring-3 mapping. + * @param cb The size of the mapping. + * @param pTask The Linux task to destroy this mapping in. + */ +static void rtR0MemObjLinuxDoMunmap(void *pv, size_t cb, struct task_struct *pTask) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + Assert(pTask == current); + vm_munmap((unsigned long)pv, cb); +#elif defined(USE_RHEL4_MUNMAP) + down_write(&pTask->mm->mmap_sem); + do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */ + up_write(&pTask->mm->mmap_sem); +#else + down_write(&pTask->mm->mmap_sem); + do_munmap(pTask->mm, (unsigned long)pv, cb); + up_write(&pTask->mm->mmap_sem); +#endif +} + + +/** + * Internal worker that allocates physical pages and creates the memory object for them. + * + * @returns IPRT status code. + * @param ppMemLnx Where to store the memory object pointer. + * @param enmType The object type. + * @param cb The number of bytes to allocate. + * @param uAlignment The alignment of the physical memory. + * Only valid if fContiguous == true, ignored otherwise. + * @param fFlagsLnx The page allocation flags (GPFs). + * @param fContiguous Whether the allocation must be contiguous. + * @param rcNoMem What to return when we're out of pages. + */ +static int rtR0MemObjLinuxAllocPages(PRTR0MEMOBJLNX *ppMemLnx, RTR0MEMOBJTYPE enmType, size_t cb, + size_t uAlignment, unsigned fFlagsLnx, bool fContiguous, int rcNoMem) +{ + size_t iPage; + size_t const cPages = cb >> PAGE_SHIFT; + struct page *paPages; + + /* + * Allocate a memory object structure that's large enough to contain + * the page pointer array. + */ + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), enmType, NULL, cb); + if (!pMemLnx) + return VERR_NO_MEMORY; + pMemLnx->cPages = cPages; + + if (cPages > 255) + { +# ifdef __GFP_REPEAT + /* Try hard to allocate the memory, but the allocation attempt might fail. */ + fFlagsLnx |= __GFP_REPEAT; +# endif +# ifdef __GFP_NOMEMALLOC + /* Introduced with Linux 2.6.12: Don't use emergency reserves */ + fFlagsLnx |= __GFP_NOMEMALLOC; +# endif + } + + /* + * Allocate the pages. + * For small allocations we'll try contiguous first and then fall back on page by page. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if ( fContiguous + || cb <= PAGE_SIZE * 2) + { +# ifdef VBOX_USE_INSERT_PAGE + paPages = alloc_pages(fFlagsLnx | __GFP_COMP | __GFP_NOWARN, rtR0MemObjLinuxOrder(cPages)); +# else + paPages = alloc_pages(fFlagsLnx | __GFP_NOWARN, rtR0MemObjLinuxOrder(cPages)); +# endif + if (paPages) + { + fContiguous = true; + for (iPage = 0; iPage < cPages; iPage++) + pMemLnx->apPages[iPage] = &paPages[iPage]; + } + else if (fContiguous) + { + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + } + + if (!fContiguous) + { + for (iPage = 0; iPage < cPages; iPage++) + { + pMemLnx->apPages[iPage] = alloc_page(fFlagsLnx | __GFP_NOWARN); + if (RT_UNLIKELY(!pMemLnx->apPages[iPage])) + { + while (iPage-- > 0) + __free_page(pMemLnx->apPages[iPage]); + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + } + } + +#else /* < 2.4.22 */ + /** @todo figure out why we didn't allocate page-by-page on 2.4.21 and older... */ + paPages = alloc_pages(fFlagsLnx, rtR0MemObjLinuxOrder(cPages)); + if (!paPages) + { + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + for (iPage = 0; iPage < cPages; iPage++) + { + pMemLnx->apPages[iPage] = &paPages[iPage]; + MY_SET_PAGES_EXEC(pMemLnx->apPages[iPage], 1); + if (PageHighMem(pMemLnx->apPages[iPage])) + BUG(); + } + + fContiguous = true; +#endif /* < 2.4.22 */ + pMemLnx->fContiguous = fContiguous; + + /* + * Reserve the pages. + */ + for (iPage = 0; iPage < cPages; iPage++) + SetPageReserved(pMemLnx->apPages[iPage]); + + /* + * Note that the physical address of memory allocated with alloc_pages(flags, order) + * is always 2^(PAGE_SHIFT+order)-aligned. + */ + if ( fContiguous + && uAlignment > PAGE_SIZE) + { + /* + * Check for alignment constraints. The physical address of memory allocated with + * alloc_pages(flags, order) is always 2^(PAGE_SHIFT+order)-aligned. + */ + if (RT_UNLIKELY(page_to_phys(pMemLnx->apPages[0]) & (uAlignment - 1))) + { + /* + * This should never happen! + */ + printk("rtR0MemObjLinuxAllocPages(cb=0x%lx, uAlignment=0x%lx): alloc_pages(..., %d) returned physical memory at 0x%lx!\n", + (unsigned long)cb, (unsigned long)uAlignment, rtR0MemObjLinuxOrder(cPages), (unsigned long)page_to_phys(pMemLnx->apPages[0])); + rtR0MemObjLinuxFreePages(pMemLnx); + return rcNoMem; + } + } + + *ppMemLnx = pMemLnx; + return VINF_SUCCESS; +} + + +/** + * Frees the physical pages allocated by the rtR0MemObjLinuxAllocPages() call. + * + * This method does NOT free the object. + * + * @param pMemLnx The object which physical pages should be freed. + */ +static void rtR0MemObjLinuxFreePages(PRTR0MEMOBJLNX pMemLnx) +{ + size_t iPage = pMemLnx->cPages; + if (iPage > 0) + { + /* + * Restore the page flags. + */ + while (iPage-- > 0) + { + ClearPageReserved(pMemLnx->apPages[iPage]); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) +#else + MY_SET_PAGES_NOEXEC(pMemLnx->apPages[iPage], 1); +#endif + } + + /* + * Free the pages. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if (!pMemLnx->fContiguous) + { + iPage = pMemLnx->cPages; + while (iPage-- > 0) + __free_page(pMemLnx->apPages[iPage]); + } + else +#endif + __free_pages(pMemLnx->apPages[0], rtR0MemObjLinuxOrder(pMemLnx->cPages)); + + pMemLnx->cPages = 0; + } +} + + +/** + * Maps the allocation into ring-0. + * + * This will update the RTR0MEMOBJLNX::Core.pv and RTR0MEMOBJ::fMappedToRing0 members. + * + * Contiguous mappings that isn't in 'high' memory will already be mapped into kernel + * space, so we'll use that mapping if possible. If execute access is required, we'll + * play safe and do our own mapping. + * + * @returns IPRT status code. + * @param pMemLnx The linux memory object to map. + * @param fExecutable Whether execute access is required. + */ +static int rtR0MemObjLinuxVMap(PRTR0MEMOBJLNX pMemLnx, bool fExecutable) +{ + int rc = VINF_SUCCESS; + + /* + * Choose mapping strategy. + */ + bool fMustMap = fExecutable + || !pMemLnx->fContiguous; + if (!fMustMap) + { + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + if (PageHighMem(pMemLnx->apPages[iPage])) + { + fMustMap = true; + break; + } + } + + Assert(!pMemLnx->Core.pv); + Assert(!pMemLnx->fMappedToRing0); + + if (fMustMap) + { + /* + * Use vmap - 2.4.22 and later. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + pgprot_t fPg; + pgprot_val(fPg) = _PAGE_PRESENT | _PAGE_RW; +# ifdef _PAGE_NX + if (!fExecutable) + pgprot_val(fPg) |= _PAGE_NX; +# endif + +# ifdef VM_MAP + pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_MAP, fPg); +# else + pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_ALLOC, fPg); +# endif + if (pMemLnx->Core.pv) + pMemLnx->fMappedToRing0 = true; + else + rc = VERR_MAP_FAILED; +#else /* < 2.4.22 */ + rc = VERR_NOT_SUPPORTED; +#endif + } + else + { + /* + * Use the kernel RAM mapping. + */ + pMemLnx->Core.pv = phys_to_virt(page_to_phys(pMemLnx->apPages[0])); + Assert(pMemLnx->Core.pv); + } + + return rc; +} + + +/** + * Undoes what rtR0MemObjLinuxVMap() did. + * + * @param pMemLnx The linux memory object. + */ +static void rtR0MemObjLinuxVUnmap(PRTR0MEMOBJLNX pMemLnx) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if (pMemLnx->fMappedToRing0) + { + Assert(pMemLnx->Core.pv); + vunmap(pMemLnx->Core.pv); + pMemLnx->fMappedToRing0 = false; + } +#else /* < 2.4.22 */ + Assert(!pMemLnx->fMappedToRing0); +#endif + pMemLnx->Core.pv = NULL; +} + + +DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; + + /* + * Release any memory that we've allocated or locked. + */ + switch (pMemLnx->Core.enmType) + { + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_PAGE: + case RTR0MEMOBJTYPE_CONT: + case RTR0MEMOBJTYPE_PHYS: + case RTR0MEMOBJTYPE_PHYS_NC: + rtR0MemObjLinuxVUnmap(pMemLnx); + rtR0MemObjLinuxFreePages(pMemLnx); + break; + + case RTR0MEMOBJTYPE_LOCK: + if (pMemLnx->Core.u.Lock.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + size_t iPage; + Assert(pTask); + if (pTask && pTask->mm) + down_read(&pTask->mm->mmap_sem); + + iPage = pMemLnx->cPages; + while (iPage-- > 0) + { + if (!PageReserved(pMemLnx->apPages[iPage])) + SetPageDirty(pMemLnx->apPages[iPage]); + page_cache_release(pMemLnx->apPages[iPage]); + } + + if (pTask && pTask->mm) + up_read(&pTask->mm->mmap_sem); + } + /* else: kernel memory - nothing to do here. */ + break; + + case RTR0MEMOBJTYPE_RES_VIRT: + Assert(pMemLnx->Core.pv); + if (pMemLnx->Core.u.ResVirt.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + Assert(pTask); + if (pTask && pTask->mm) + rtR0MemObjLinuxDoMunmap(pMemLnx->Core.pv, pMemLnx->Core.cb, pTask); + } + else + { + vunmap(pMemLnx->Core.pv); + + Assert(pMemLnx->cPages == 1 && pMemLnx->apPages[0] != NULL); + __free_page(pMemLnx->apPages[0]); + pMemLnx->apPages[0] = NULL; + pMemLnx->cPages = 0; + } + pMemLnx->Core.pv = NULL; + break; + + case RTR0MEMOBJTYPE_MAPPING: + Assert(pMemLnx->cPages == 0); Assert(pMemLnx->Core.pv); + if (pMemLnx->Core.u.ResVirt.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + Assert(pTask); + if (pTask && pTask->mm) + rtR0MemObjLinuxDoMunmap(pMemLnx->Core.pv, pMemLnx->Core.cb, pTask); + } + else + vunmap(pMemLnx->Core.pv); + pMemLnx->Core.pv = NULL; + break; + + default: + AssertMsgFailed(("enmType=%d\n", pMemLnx->Core.enmType)); + return VERR_INTERNAL_ERROR; + } + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTR0MEMOBJLNX pMemLnx; + int rc; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_PAGE, cb, PAGE_SIZE, GFP_HIGHUSER, + false /* non-contiguous */, VERR_NO_MEMORY); +#else + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_PAGE, cb, PAGE_SIZE, GFP_USER, + false /* non-contiguous */, VERR_NO_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTR0MEMOBJLNX pMemLnx; + int rc; + + /* Try to avoid GFP_DMA. GFM_DMA32 was introduced with Linux 2.6.15. */ +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA32, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); + if (RT_FAILURE(rc)) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); +#else +# ifdef CONFIG_X86_PAE +# endif + /* ZONE_NORMAL: 0-896MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_USER, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTR0MEMOBJLNX pMemLnx; + int rc; + +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_DMA32, + true /* contiguous */, VERR_NO_CONT_MEMORY); + if (RT_FAILURE(rc)) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_DMA, + true /* contiguous */, VERR_NO_CONT_MEMORY); +#else + /* ZONE_NORMAL (32-bit hosts): 0-896MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_USER, + true /* contiguous */, VERR_NO_CONT_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { +#if defined(RT_STRICT) && (defined(RT_ARCH_AMD64) || defined(CONFIG_HIGHMEM64G)) + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + Assert(page_to_phys(pMemLnx->apPages[iPage]) < _4G); +#endif + pMemLnx->Core.u.Cont.Phys = page_to_phys(pMemLnx->apPages[0]); + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +/** + * Worker for rtR0MemObjLinuxAllocPhysSub that tries one allocation strategy. + * + * @returns IPRT status code. + * @param ppMemLnx Where to + * @param enmType The object type. + * @param cb The size of the allocation. + * @param uAlignment The alignment of the physical memory. + * Only valid for fContiguous == true, ignored otherwise. + * @param PhysHighest See rtR0MemObjNativeAllocPhys. + * @param fGfp The Linux GFP flags to use for the allocation. + */ +static int rtR0MemObjLinuxAllocPhysSub2(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, + size_t cb, size_t uAlignment, RTHCPHYS PhysHighest, unsigned fGfp) +{ + PRTR0MEMOBJLNX pMemLnx; + int rc; + + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, enmType, cb, uAlignment, fGfp, + enmType == RTR0MEMOBJTYPE_PHYS /* contiguous / non-contiguous */, + VERR_NO_PHYS_MEMORY); + if (RT_FAILURE(rc)) + return rc; + + /* + * Check the addresses if necessary. (Can be optimized a bit for PHYS.) + */ + if (PhysHighest != NIL_RTHCPHYS) + { + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + if (page_to_phys(pMemLnx->apPages[iPage]) > PhysHighest) + { + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + return VERR_NO_MEMORY; + } + } + + /* + * Complete the object. + */ + if (enmType == RTR0MEMOBJTYPE_PHYS) + { + pMemLnx->Core.u.Phys.PhysBase = page_to_phys(pMemLnx->apPages[0]); + pMemLnx->Core.u.Phys.fAllocated = true; + } + *ppMem = &pMemLnx->Core; + return rc; +} + + +/** + * Worker for rtR0MemObjNativeAllocPhys and rtR0MemObjNativeAllocPhysNC. + * + * @returns IPRT status code. + * @param ppMem Where to store the memory object pointer on success. + * @param enmType The object type. + * @param cb The size of the allocation. + * @param uAlignment The alignment of the physical memory. + * Only valid for enmType == RTR0MEMOBJTYPE_PHYS, ignored otherwise. + * @param PhysHighest See rtR0MemObjNativeAllocPhys. + */ +static int rtR0MemObjLinuxAllocPhysSub(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, + size_t cb, size_t uAlignment, RTHCPHYS PhysHighest) +{ + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * There are two clear cases and that's the <=16MB and anything-goes ones. + * When the physical address limit is somewhere in-between those two we'll + * just have to try, starting with HIGHUSER and working our way thru the + * different types, hoping we'll get lucky. + * + * We should probably move this physical address restriction logic up to + * the page alloc function as it would be more efficient there. But since + * we don't expect this to be a performance issue just yet it can wait. + */ + if (PhysHighest == NIL_RTHCPHYS) + /* ZONE_HIGHMEM: the whole physical memory */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_HIGHUSER); + else if (PhysHighest <= _1M * 16) + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA); + else + { + rc = VERR_NO_MEMORY; + if (RT_FAILURE(rc)) + /* ZONE_HIGHMEM: the whole physical memory */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_HIGHUSER); + if (RT_FAILURE(rc)) + /* ZONE_NORMAL: 0-896MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_USER); +#ifdef GFP_DMA32 + if (RT_FAILURE(rc)) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA32); +#endif + if (RT_FAILURE(rc)) + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA); + } + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +/** + * Translates a kernel virtual address to a linux page structure by walking the + * page tables. + * + * @note We do assume that the page tables will not change as we are walking + * them. This assumption is rather forced by the fact that I could not + * immediately see any way of preventing this from happening. So, we + * take some extra care when accessing them. + * + * Because of this, we don't want to use this function on memory where + * attribute changes to nearby pages is likely to cause large pages to + * be used or split up. So, don't use this for the linear mapping of + * physical memory. + * + * @returns Pointer to the page structur or NULL if it could not be found. + * @param pv The kernel virtual address. + */ +static struct page *rtR0MemObjLinuxVirtToPage(void *pv) +{ + unsigned long ulAddr = (unsigned long)pv; + unsigned long pfn; + struct page *pPage; + pte_t *pEntry; + union + { + pgd_t Global; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + pud_t Upper; +#endif + pmd_t Middle; + pte_t Entry; + } u; + + /* Should this happen in a situation this code will be called in? And if + * so, can it change under our feet? See also + * "Documentation/vm/active_mm.txt" in the kernel sources. */ + if (RT_UNLIKELY(!current->active_mm)) + return NULL; + u.Global = *pgd_offset(current->active_mm, ulAddr); + if (RT_UNLIKELY(pgd_none(u.Global))) + return NULL; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + u.Upper = *pud_offset(&u.Global, ulAddr); + if (RT_UNLIKELY(pud_none(u.Upper))) + return NULL; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) + if (pud_large(u.Upper)) + { + pPage = pud_page(u.Upper); + AssertReturn(pPage, NULL); + pfn = page_to_pfn(pPage); /* doing the safe way... */ + pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (PUD_SHIFT - PAGE_SHIFT)) - 1); + return pfn_to_page(pfn); + } +# endif + + u.Middle = *pmd_offset(&u.Upper, ulAddr); +#else /* < 2.6.11 */ + u.Middle = *pmd_offset(&u.Global, ulAddr); +#endif /* < 2.6.11 */ + if (RT_UNLIKELY(pmd_none(u.Middle))) + return NULL; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (pmd_large(u.Middle)) + { + pPage = pmd_page(u.Middle); + AssertReturn(pPage, NULL); + pfn = page_to_pfn(pPage); /* doing the safe way... */ + pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (PMD_SHIFT - PAGE_SHIFT)) - 1); + return pfn_to_page(pfn); + } +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) || defined(pte_offset_map) /* As usual, RHEL 3 had pte_offset_map earlier. */ + pEntry = pte_offset_map(&u.Middle, ulAddr); +#else + pEntry = pte_offset(&u.Middle, ulAddr); +#endif + if (RT_UNLIKELY(!pEntry)) + return NULL; + u.Entry = *pEntry; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) || defined(pte_offset_map) + pte_unmap(pEntry); +#endif + + if (RT_UNLIKELY(!pte_present(u.Entry))) + return NULL; + return pte_page(u.Entry); +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPhys(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment) +{ + return rtR0MemObjLinuxAllocPhysSub(ppMem, RTR0MEMOBJTYPE_PHYS, cb, uAlignment, PhysHighest); +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPhysNC(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest) +{ + return rtR0MemObjLinuxAllocPhysSub(ppMem, RTR0MEMOBJTYPE_PHYS_NC, cb, PAGE_SIZE, PhysHighest); +} + + +DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJINTERNAL ppMem, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * All we need to do here is to validate that we can use + * ioremap on the specified address (32/64-bit dma_addr_t). + */ + PRTR0MEMOBJLNX pMemLnx; + dma_addr_t PhysAddr = Phys; + AssertMsgReturn(PhysAddr == Phys, ("%#llx\n", (unsigned long long)Phys), VERR_ADDRESS_TOO_BIG); + + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_PHYS, NULL, cb); + if (!pMemLnx) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + pMemLnx->Core.u.Phys.PhysBase = PhysAddr; + pMemLnx->Core.u.Phys.fAllocated = false; + pMemLnx->Core.u.Phys.uCachePolicy = uCachePolicy; + Assert(!pMemLnx->cPages); + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, RTR0PROCESS R0Process) +{ + IPRT_LINUX_SAVE_EFL_AC(); + const int cPages = cb >> PAGE_SHIFT; + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + struct vm_area_struct **papVMAs; + PRTR0MEMOBJLNX pMemLnx; + int rc = VERR_NO_MEMORY; + int const fWrite = fAccess & RTMEM_PROT_WRITE ? 1 : 0; + + /* + * Check for valid task and size overflows. + */ + if (!pTask) + return VERR_NOT_SUPPORTED; + if (((size_t)cPages << PAGE_SHIFT) != cb) + return VERR_OUT_OF_RANGE; + + /* + * Allocate the memory object and a temporary buffer for the VMAs. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), RTR0MEMOBJTYPE_LOCK, (void *)R3Ptr, cb); + if (!pMemLnx) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); + if (papVMAs) + { + down_read(&pTask->mm->mmap_sem); + + /* + * Get user pages. + */ + rc = get_user_pages(pTask, /* Task for fault accounting. */ + pTask->mm, /* Whose pages. */ + R3Ptr, /* Where from. */ + cPages, /* How many pages. */ + fWrite, /* Write to memory. */ + fWrite, /* force write access. */ + &pMemLnx->apPages[0], /* Page array. */ + papVMAs); /* vmas */ + if (rc == cPages) + { + /* + * Flush dcache (required?), protect against fork and _really_ pin the page + * table entries. get_user_pages() will protect against swapping out the + * pages but it will NOT protect against removing page table entries. This + * can be achieved with + * - using mlock / mmap(..., MAP_LOCKED, ...) from userland. This requires + * an appropriate limit set up with setrlimit(..., RLIMIT_MEMLOCK, ...). + * Usual Linux distributions support only a limited size of locked pages + * (e.g. 32KB). + * - setting the PageReserved bit (as we do in rtR0MemObjLinuxAllocPages() + * or by + * - setting the VM_LOCKED flag. This is the same as doing mlock() without + * a range check. + */ + /** @todo The Linux fork() protection will require more work if this API + * is to be used for anything but locking VM pages. */ + while (rc-- > 0) + { + flush_dcache_page(pMemLnx->apPages[rc]); + papVMAs[rc]->vm_flags |= (VM_DONTCOPY | VM_LOCKED); + } + + up_read(&pTask->mm->mmap_sem); + + RTMemFree(papVMAs); + + pMemLnx->Core.u.Lock.R0Process = R0Process; + pMemLnx->cPages = cPages; + Assert(!pMemLnx->fMappedToRing0); + *ppMem = &pMemLnx->Core; + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + + /* + * Failed - we need to unlock any pages that we succeeded to lock. + */ + while (rc-- > 0) + { + if (!PageReserved(pMemLnx->apPages[rc])) + SetPageDirty(pMemLnx->apPages[rc]); + page_cache_release(pMemLnx->apPages[rc]); + } + + up_read(&pTask->mm->mmap_sem); + + RTMemFree(papVMAs); + rc = VERR_LOCK_FAILED; + } + + rtR0MemObjDelete(&pMemLnx->Core); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeLockKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pv, size_t cb, uint32_t fAccess) +{ + IPRT_LINUX_SAVE_EFL_AC(); + void *pvLast = (uint8_t *)pv + cb - 1; + size_t const cPages = cb >> PAGE_SHIFT; + PRTR0MEMOBJLNX pMemLnx; + bool fLinearMapping; + int rc; + uint8_t *pbPage; + size_t iPage; + NOREF(fAccess); + + if ( !RTR0MemKernelIsValidAddr(pv) + || !RTR0MemKernelIsValidAddr(pv + cb)) + return VERR_INVALID_PARAMETER; + + /* + * The lower part of the kernel memory has a linear mapping between + * physical and virtual addresses. So we take a short cut here. This is + * assumed to be the cleanest way to handle those addresses (and the code + * is well tested, though the test for determining it is not very nice). + * If we ever decide it isn't we can still remove it. + */ +#if 0 + fLinearMapping = (unsigned long)pvLast < VMALLOC_START; +#else + fLinearMapping = (unsigned long)pv >= (unsigned long)__va(0) + && (unsigned long)pvLast < (unsigned long)high_memory; +#endif + + /* + * Allocate the memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), RTR0MEMOBJTYPE_LOCK, pv, cb); + if (!pMemLnx) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + /* + * Gather the pages. + * We ASSUME all kernel pages are non-swappable and non-movable. + */ + rc = VINF_SUCCESS; + pbPage = (uint8_t *)pvLast; + iPage = cPages; + if (!fLinearMapping) + { + while (iPage-- > 0) + { + struct page *pPage = rtR0MemObjLinuxVirtToPage(pbPage); + if (RT_UNLIKELY(!pPage)) + { + rc = VERR_LOCK_FAILED; + break; + } + pMemLnx->apPages[iPage] = pPage; + pbPage -= PAGE_SIZE; + } + } + else + { + while (iPage-- > 0) + { + pMemLnx->apPages[iPage] = virt_to_page(pbPage); + pbPage -= PAGE_SIZE; + } + } + if (RT_SUCCESS(rc)) + { + /* + * Complete the memory object and return. + */ + pMemLnx->Core.u.Lock.R0Process = NIL_RTR0PROCESS; + pMemLnx->cPages = cPages; + Assert(!pMemLnx->fMappedToRing0); + *ppMem = &pMemLnx->Core; + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + + rtR0MemObjDelete(&pMemLnx->Core); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeReserveKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + IPRT_LINUX_SAVE_EFL_AC(); + const size_t cPages = cb >> PAGE_SHIFT; + struct page *pDummyPage; + struct page **papPages; + + /* check for unsupported stuff. */ + AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED); + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Allocate a dummy page and create a page pointer array for vmap such that + * the dummy page is mapped all over the reserved area. + */ + pDummyPage = alloc_page(GFP_HIGHUSER | __GFP_NOWARN); + if (pDummyPage) + { + papPages = RTMemAlloc(sizeof(*papPages) * cPages); + if (papPages) + { + void *pv; + size_t iPage = cPages; + while (iPage-- > 0) + papPages[iPage] = pDummyPage; +# ifdef VM_MAP + pv = vmap(papPages, cPages, VM_MAP, PAGE_KERNEL_RO); +# else + pv = vmap(papPages, cPages, VM_ALLOC, PAGE_KERNEL_RO); +# endif + RTMemFree(papPages); + if (pv) + { + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_RES_VIRT, pv, cb); + if (pMemLnx) + { + pMemLnx->Core.u.ResVirt.R0Process = NIL_RTR0PROCESS; + pMemLnx->cPages = 1; + pMemLnx->apPages[0] = pDummyPage; + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + vunmap(pv); + } + } + __free_page(pDummyPage); + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + +#else /* < 2.4.22 */ + /* + * Could probably use ioremap here, but the caller is in a better position than us + * to select some safe physical memory. + */ + return VERR_NOT_SUPPORTED; +#endif +} + + +DECLHIDDEN(int) rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, RTR0PROCESS R0Process) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTR0MEMOBJLNX pMemLnx; + void *pv; + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + if (!pTask) + return VERR_NOT_SUPPORTED; + + /* + * Check that the specified alignment is supported. + */ + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Let rtR0MemObjLinuxDoMmap do the difficult bits. + */ + pv = rtR0MemObjLinuxDoMmap(R3PtrFixed, cb, uAlignment, pTask, RTMEM_PROT_NONE); + if (pv == (void *)-1) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_RES_VIRT, pv, cb); + if (!pMemLnx) + { + rtR0MemObjLinuxDoMunmap(pv, cb, pTask); + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + + pMemLnx->Core.u.ResVirt.R0Process = R0Process; + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, + void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub) +{ + int rc = VERR_NO_MEMORY; + PRTR0MEMOBJLNX pMemLnxToMap = (PRTR0MEMOBJLNX)pMemToMap; + PRTR0MEMOBJLNX pMemLnx; + IPRT_LINUX_SAVE_EFL_AC(); + + /* Fail if requested to do something we can't. */ + AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED); + AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED); + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Create the IPRT memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_MAPPING, NULL, pMemLnxToMap->Core.cb); + if (pMemLnx) + { + if (pMemLnxToMap->cPages) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + /* + * Use vmap - 2.4.22 and later. + */ + pgprot_t fPg = rtR0MemObjLinuxConvertProt(fProt, true /* kernel */); +# ifdef VM_MAP + pMemLnx->Core.pv = vmap(&pMemLnxToMap->apPages[0], pMemLnxToMap->cPages, VM_MAP, fPg); +# else + pMemLnx->Core.pv = vmap(&pMemLnxToMap->apPages[0], pMemLnxToMap->cPages, VM_ALLOC, fPg); +# endif + if (pMemLnx->Core.pv) + { + pMemLnx->fMappedToRing0 = true; + rc = VINF_SUCCESS; + } + else + rc = VERR_MAP_FAILED; + +#else /* < 2.4.22 */ + /* + * Only option here is to share mappings if possible and forget about fProt. + */ + if (rtR0MemObjIsRing3(pMemToMap)) + rc = VERR_NOT_SUPPORTED; + else + { + rc = VINF_SUCCESS; + if (!pMemLnxToMap->Core.pv) + rc = rtR0MemObjLinuxVMap(pMemLnxToMap, !!(fProt & RTMEM_PROT_EXEC)); + if (RT_SUCCESS(rc)) + { + Assert(pMemLnxToMap->Core.pv); + pMemLnx->Core.pv = pMemLnxToMap->Core.pv; + } + } +#endif + } + else + { + /* + * MMIO / physical memory. + */ + Assert(pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS && !pMemLnxToMap->Core.u.Phys.fAllocated); + pMemLnx->Core.pv = pMemLnxToMap->Core.u.Phys.uCachePolicy == RTMEM_CACHE_POLICY_MMIO + ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase, pMemLnxToMap->Core.cb) + : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase, pMemLnxToMap->Core.cb); + if (pMemLnx->Core.pv) + { + /** @todo fix protection. */ + rc = VINF_SUCCESS; + } + } + if (RT_SUCCESS(rc)) + { + pMemLnx->Core.u.Mapping.R0Process = NIL_RTR0PROCESS; + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + rtR0MemObjDelete(&pMemLnx->Core); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +#ifdef VBOX_USE_PAE_HACK +/** + * Replace the PFN of a PTE with the address of the actual page. + * + * The caller maps a reserved dummy page at the address with the desired access + * and flags. + * + * This hack is required for older Linux kernels which don't provide + * remap_pfn_range(). + * + * @returns 0 on success, -ENOMEM on failure. + * @param mm The memory context. + * @param ulAddr The mapping address. + * @param Phys The physical address of the page to map. + */ +static int rtR0MemObjLinuxFixPte(struct mm_struct *mm, unsigned long ulAddr, RTHCPHYS Phys) +{ + int rc = -ENOMEM; + pgd_t *pgd; + + spin_lock(&mm->page_table_lock); + + pgd = pgd_offset(mm, ulAddr); + if (!pgd_none(*pgd) && !pgd_bad(*pgd)) + { + pmd_t *pmd = pmd_offset(pgd, ulAddr); + if (!pmd_none(*pmd)) + { + pte_t *ptep = pte_offset_map(pmd, ulAddr); + if (ptep) + { + pte_t pte = *ptep; + pte.pte_high &= 0xfff00000; + pte.pte_high |= ((Phys >> 32) & 0x000fffff); + pte.pte_low &= 0x00000fff; + pte.pte_low |= (Phys & 0xfffff000); + set_pte(ptep, pte); + pte_unmap(ptep); + rc = 0; + } + } + } + + spin_unlock(&mm->page_table_lock); + return rc; +} +#endif /* VBOX_USE_PAE_HACK */ + + +DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process) +{ + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + PRTR0MEMOBJLNX pMemLnxToMap = (PRTR0MEMOBJLNX)pMemToMap; + int rc = VERR_NO_MEMORY; + PRTR0MEMOBJLNX pMemLnx; +#ifdef VBOX_USE_PAE_HACK + struct page *pDummyPage; + RTHCPHYS DummyPhys; +#endif + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Check for restrictions. + */ + if (!pTask) + return VERR_NOT_SUPPORTED; + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + +#ifdef VBOX_USE_PAE_HACK + /* + * Allocate a dummy page for use when mapping the memory. + */ + pDummyPage = alloc_page(GFP_USER | __GFP_NOWARN); + if (!pDummyPage) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; + } + SetPageReserved(pDummyPage); + DummyPhys = page_to_phys(pDummyPage); +#endif + + /* + * Create the IPRT memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_MAPPING, NULL, pMemLnxToMap->Core.cb); + if (pMemLnx) + { + /* + * Allocate user space mapping. + */ + void *pv; + pv = rtR0MemObjLinuxDoMmap(R3PtrFixed, pMemLnxToMap->Core.cb, uAlignment, pTask, fProt); + if (pv != (void *)-1) + { + /* + * Map page by page into the mmap area. + * This is generic, paranoid and not very efficient. + */ + pgprot_t fPg = rtR0MemObjLinuxConvertProt(fProt, false /* user */); + unsigned long ulAddrCur = (unsigned long)pv; + const size_t cPages = pMemLnxToMap->Core.cb >> PAGE_SHIFT; + size_t iPage; + + down_write(&pTask->mm->mmap_sem); + + rc = VINF_SUCCESS; + if (pMemLnxToMap->cPages) + { + for (iPage = 0; iPage < cPages; iPage++, ulAddrCur += PAGE_SIZE) + { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11) + RTHCPHYS Phys = page_to_phys(pMemLnxToMap->apPages[iPage]); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + struct vm_area_struct *vma = find_vma(pTask->mm, ulAddrCur); /* this is probably the same for all the pages... */ + AssertBreakStmt(vma, rc = VERR_INTERNAL_ERROR); +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + /* remap_page_range() limitation on x86 */ + AssertBreakStmt(Phys < _4G, rc = VERR_NO_MEMORY); +#endif + +#if defined(VBOX_USE_INSERT_PAGE) && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) + rc = vm_insert_page(vma, ulAddrCur, pMemLnxToMap->apPages[iPage]); + /* Thes flags help making 100% sure some bad stuff wont happen (swap, core, ++). + * See remap_pfn_range() in mm/memory.c */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) + vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; +#else + vma->vm_flags |= VM_RESERVED; +#endif +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + rc = remap_pfn_range(vma, ulAddrCur, page_to_pfn(pMemLnxToMap->apPages[iPage]), PAGE_SIZE, fPg); +#elif defined(VBOX_USE_PAE_HACK) + rc = remap_page_range(vma, ulAddrCur, DummyPhys, PAGE_SIZE, fPg); + if (!rc) + rc = rtR0MemObjLinuxFixPte(pTask->mm, ulAddrCur, Phys); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + rc = remap_page_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#else /* 2.4 */ + rc = remap_page_range(ulAddrCur, Phys, PAGE_SIZE, fPg); +#endif + if (rc) + { + rc = VERR_NO_MEMORY; + break; + } + } + } + else + { + RTHCPHYS Phys; + if (pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS) + Phys = pMemLnxToMap->Core.u.Phys.PhysBase; + else if (pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_CONT) + Phys = pMemLnxToMap->Core.u.Cont.Phys; + else + { + AssertMsgFailed(("%d\n", pMemLnxToMap->Core.enmType)); + Phys = NIL_RTHCPHYS; + } + if (Phys != NIL_RTHCPHYS) + { + for (iPage = 0; iPage < cPages; iPage++, ulAddrCur += PAGE_SIZE, Phys += PAGE_SIZE) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + struct vm_area_struct *vma = find_vma(pTask->mm, ulAddrCur); /* this is probably the same for all the pages... */ + AssertBreakStmt(vma, rc = VERR_INTERNAL_ERROR); +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + /* remap_page_range() limitation on x86 */ + AssertBreakStmt(Phys < _4G, rc = VERR_NO_MEMORY); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + rc = remap_pfn_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#elif defined(VBOX_USE_PAE_HACK) + rc = remap_page_range(vma, ulAddrCur, DummyPhys, PAGE_SIZE, fPg); + if (!rc) + rc = rtR0MemObjLinuxFixPte(pTask->mm, ulAddrCur, Phys); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + rc = remap_page_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#else /* 2.4 */ + rc = remap_page_range(ulAddrCur, Phys, PAGE_SIZE, fPg); +#endif + if (rc) + { + rc = VERR_NO_MEMORY; + break; + } + } + } + } + +#ifdef CONFIG_NUMA_BALANCING +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) +# ifdef RHEL_RELEASE_CODE +# if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7, 0) +# define VBOX_NUMA_HACK_OLD +# endif +# endif +# endif + if (RT_SUCCESS(rc)) + { + /** @todo Ugly hack! But right now we have no other means to + * disable automatic NUMA page balancing. */ +# ifdef RT_OS_X86 +# ifdef VBOX_NUMA_HACK_OLD + pTask->mm->numa_next_reset = jiffies + 0x7fffffffUL; +# endif + pTask->mm->numa_next_scan = jiffies + 0x7fffffffUL; +# else +# ifdef VBOX_NUMA_HACK_OLD + pTask->mm->numa_next_reset = jiffies + 0x7fffffffffffffffUL; +# endif + pTask->mm->numa_next_scan = jiffies + 0x7fffffffffffffffUL; +# endif + } +#endif /* CONFIG_NUMA_BALANCING */ + + up_write(&pTask->mm->mmap_sem); + + if (RT_SUCCESS(rc)) + { +#ifdef VBOX_USE_PAE_HACK + __free_page(pDummyPage); +#endif + pMemLnx->Core.pv = pv; + pMemLnx->Core.u.Mapping.R0Process = R0Process; + *ppMem = &pMemLnx->Core; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + + /* + * Bail out. + */ + rtR0MemObjLinuxDoMunmap(pv, pMemLnxToMap->Core.cb, pTask); + } + rtR0MemObjDelete(&pMemLnx->Core); + } +#ifdef VBOX_USE_PAE_HACK + __free_page(pDummyPage); +#endif + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt) +{ + NOREF(pMem); + NOREF(offSub); + NOREF(cbSub); + NOREF(fProt); + return VERR_NOT_SUPPORTED; +} + + +DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(PRTR0MEMOBJINTERNAL pMem, size_t iPage) +{ + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; + + if (pMemLnx->cPages) + return page_to_phys(pMemLnx->apPages[iPage]); + + switch (pMemLnx->Core.enmType) + { + case RTR0MEMOBJTYPE_CONT: + return pMemLnx->Core.u.Cont.Phys + (iPage << PAGE_SHIFT); + + case RTR0MEMOBJTYPE_PHYS: + return pMemLnx->Core.u.Phys.PhysBase + (iPage << PAGE_SHIFT); + + /* the parent knows */ + case RTR0MEMOBJTYPE_MAPPING: + return rtR0MemObjNativeGetPagePhysAddr(pMemLnx->Core.uRel.Child.pParent, iPage); + + /* cPages > 0 */ + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_LOCK: + case RTR0MEMOBJTYPE_PHYS_NC: + case RTR0MEMOBJTYPE_PAGE: + default: + AssertMsgFailed(("%d\n", pMemLnx->Core.enmType)); + /* fall thru */ + + case RTR0MEMOBJTYPE_RES_VIRT: + return NIL_RTHCPHYS; + } +} + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/memuserkernel-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/memuserkernel-r0drv-linux.c @@ -0,0 +1,172 @@ +/* $Id: memuserkernel-r0drv-linux.c $ */ +/** @file + * IPRT - User & Kernel Memory, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include + + +RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb) +{ + IPRT_LINUX_SAVE_EFL_AC(); + if (RT_LIKELY(copy_from_user(pvDst, (void *)R3PtrSrc, cb) == 0)) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_ACCESS_DENIED; +} +RT_EXPORT_SYMBOL(RTR0MemUserCopyFrom); + + +RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb) +{ + IPRT_LINUX_SAVE_EFL_AC(); + if (RT_LIKELY(copy_to_user((void *)R3PtrDst, pvSrc, cb) == 0)) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_ACCESS_DENIED; +} +RT_EXPORT_SYMBOL(RTR0MemUserCopyTo); + + +RTR0DECL(bool) RTR0MemUserIsValidAddr(RTR3PTR R3Ptr) +{ + IPRT_LINUX_SAVE_EFL_AC(); + bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1); + IPRT_LINUX_RESTORE_EFL_AC(); + return fRc; +} +RT_EXPORT_SYMBOL(RTR0MemUserIsValidAddr); + + +RTR0DECL(bool) RTR0MemKernelIsValidAddr(void *pv) +{ + /* Couldn't find a straight forward way of doing this... */ +#if defined(RT_ARCH_X86) && defined(CONFIG_X86_HIGH_ENTRY) + return true; /* ?? */ +#elif defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) + return (uintptr_t)pv >= PAGE_OFFSET; +#else +# error "PORT ME" + return !access_ok(VERIFY_READ, pv, 1); +#endif +} +RT_EXPORT_SYMBOL(RTR0MemKernelIsValidAddr); + + +RTR0DECL(bool) RTR0MemAreKrnlAndUsrDifferent(void) +{ +#if defined(RT_ARCH_X86) && defined(CONFIG_X86_HIGH_ENTRY) /* ?? */ + return false; +#else + return true; +#endif +} +RT_EXPORT_SYMBOL(RTR0MemAreKrnlAndUsrDifferent); + + +/** + * Treats both source and destination as unsafe buffers. + */ +static int rtR0MemKernelCopyLnxWorker(void *pvDst, void const *pvSrc, size_t cb) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 55) +/* _ASM_EXTABLE was introduced in 2.6.25 from what I can tell. Using #ifndef + here since it has to be a macro and you never know what someone might have + backported to an earlier kernel release. */ +# ifndef _ASM_EXTABLE +# if ARCH_BITS == 32 +# define _ASM_EXTABLE(a_Instr, a_Resume) \ + ".section __ex_table,\"a\"\n" \ + ".balign 4\n" \ + ".long " #a_Instr "\n" \ + ".long " #a_Resume "\n" \ + ".previous\n" +# else +# define _ASM_EXTABLE(a_Instr, a_Resume) \ + ".section __ex_table,\"a\"\n" \ + ".balign 8\n" \ + ".quad " #a_Instr "\n" \ + ".quad " #a_Resume "\n" \ + ".previous\n" +# endif +# endif /* !_ASM_EXTABLE */ + int rc; + IPRT_LINUX_SAVE_EFL_AC(); /* paranoia */ + if (!cb) + return VINF_SUCCESS; + + __asm__ __volatile__ ("cld\n" + "1:\n\t" + "rep; movsb\n" + "2:\n\t" + ".section .fixup,\"ax\"\n" + "3:\n\t" + "movl %4, %0\n" + ".previous\n" + _ASM_EXTABLE(1b, 3b) + : "=r" (rc), + "=D" (pvDst), + "=S" (pvSrc), + "=c" (cb) + : "i" (VERR_ACCESS_DENIED), + "0" (VINF_SUCCESS), + "1" (pvDst), + "2" (pvSrc), + "3" (cb) + : "memory"); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +#else + return VERR_NOT_SUPPORTED; +#endif +} + + +RTR0DECL(int) RTR0MemKernelCopyFrom(void *pvDst, void const *pvSrc, size_t cb) +{ + return rtR0MemKernelCopyLnxWorker(pvDst, pvSrc, cb); +} +RT_EXPORT_SYMBOL(RTR0MemKernelCopyFrom); + + +RTR0DECL(int) RTR0MemKernelCopyTo(void *pvDst, void const *pvSrc, size_t cb) +{ + return rtR0MemKernelCopyLnxWorker(pvDst, pvSrc, cb); +} +RT_EXPORT_SYMBOL(RTR0MemKernelCopyTo); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/mp-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/mp-r0drv-linux.c @@ -0,0 +1,581 @@ +/* $Id: mp-r0drv-linux.c $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +RTDECL(RTCPUID) RTMpCpuId(void) +{ + return smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCpuId); + + +RTDECL(int) RTMpCurSetIndex(void) +{ + return smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCurSetIndex); + + +RTDECL(int) RTMpCurSetIndexAndId(PRTCPUID pidCpu) +{ + return *pidCpu = smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCurSetIndexAndId); + + +RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) +{ + return idCpu < RTCPUSET_MAX_CPUS && idCpu < NR_CPUS ? (int)idCpu : -1; +} +RT_EXPORT_SYMBOL(RTMpCpuIdToSetIndex); + + +RTDECL(RTCPUID) RTMpCpuIdFromSetIndex(int iCpu) +{ + return iCpu < NR_CPUS ? (RTCPUID)iCpu : NIL_RTCPUID; +} +RT_EXPORT_SYMBOL(RTMpCpuIdFromSetIndex); + + +RTDECL(RTCPUID) RTMpGetMaxCpuId(void) +{ + return NR_CPUS - 1; //??? +} +RT_EXPORT_SYMBOL(RTMpGetMaxCpuId); + + +RTDECL(bool) RTMpIsCpuPossible(RTCPUID idCpu) +{ +#if defined(CONFIG_SMP) + if (RT_UNLIKELY(idCpu >= NR_CPUS)) + return false; + +# if defined(cpu_possible) + return cpu_possible(idCpu); +# else /* < 2.5.29 */ + return idCpu < (RTCPUID)smp_num_cpus; +# endif +#else + return idCpu == RTMpCpuId(); +#endif +} +RT_EXPORT_SYMBOL(RTMpIsCpuPossible); + + +RTDECL(PRTCPUSET) RTMpGetSet(PRTCPUSET pSet) +{ + RTCPUID idCpu; + + RTCpuSetEmpty(pSet); + idCpu = RTMpGetMaxCpuId(); + do + { + if (RTMpIsCpuPossible(idCpu)) + RTCpuSetAdd(pSet, idCpu); + } while (idCpu-- > 0); + return pSet; +} +RT_EXPORT_SYMBOL(RTMpGetSet); + + +RTDECL(RTCPUID) RTMpGetCount(void) +{ +#ifdef CONFIG_SMP +# if defined(CONFIG_HOTPLUG_CPU) /* introduced & uses cpu_present */ + return num_present_cpus(); +# elif defined(num_possible_cpus) + return num_possible_cpus(); +# elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) + return smp_num_cpus; +# else + RTCPUSET Set; + RTMpGetSet(&Set); + return RTCpuSetCount(&Set); +# endif +#else + return 1; +#endif +} +RT_EXPORT_SYMBOL(RTMpGetCount); + + +RTDECL(bool) RTMpIsCpuOnline(RTCPUID idCpu) +{ +#ifdef CONFIG_SMP + if (RT_UNLIKELY(idCpu >= NR_CPUS)) + return false; +# ifdef cpu_online + return cpu_online(idCpu); +# else /* 2.4: */ + return cpu_online_map & RT_BIT_64(idCpu); +# endif +#else + return idCpu == RTMpCpuId(); +#endif +} +RT_EXPORT_SYMBOL(RTMpIsCpuOnline); + + +RTDECL(PRTCPUSET) RTMpGetOnlineSet(PRTCPUSET pSet) +{ +#ifdef CONFIG_SMP + RTCPUID idCpu; + + RTCpuSetEmpty(pSet); + idCpu = RTMpGetMaxCpuId(); + do + { + if (RTMpIsCpuOnline(idCpu)) + RTCpuSetAdd(pSet, idCpu); + } while (idCpu-- > 0); +#else + RTCpuSetEmpty(pSet); + RTCpuSetAdd(pSet, RTMpCpuId()); +#endif + return pSet; +} +RT_EXPORT_SYMBOL(RTMpGetOnlineSet); + + +RTDECL(RTCPUID) RTMpGetOnlineCount(void) +{ +#ifdef CONFIG_SMP +# if defined(num_online_cpus) + return num_online_cpus(); +# else + RTCPUSET Set; + RTMpGetOnlineSet(&Set); + return RTCpuSetCount(&Set); +# endif +#else + return 1; +#endif +} +RT_EXPORT_SYMBOL(RTMpGetOnlineCount); + + +RTDECL(bool) RTMpIsCpuWorkPending(void) +{ + /** @todo (not used on non-Windows platforms yet). */ + return false; +} +RT_EXPORT_SYMBOL(RTMpIsCpuWorkPending); + + +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + ASMAtomicIncU32(&pArgs->cHits); + pArgs->pfnWorker(RTMpCpuId(), pArgs->pvUser1, pArgs->pvUser2); +} + + +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER, does hit + * increment after calling the worker. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxWrapperPostInc(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + pArgs->pfnWorker(RTMpCpuId(), pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); +} + + +/** + * Wrapper between the native linux all-cpu callbacks and PFNRTWORKER. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxAllWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + PRTCPUSET pWorkerSet = pArgs->pWorkerSet; + RTCPUID idCpu = RTMpCpuId(); + Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD)); + + if (RTCpuSetIsMember(pWorkerSet, idCpu)) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + RTCpuSetDel(pWorkerSet, idCpu); + } +} + + +RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + IPRT_LINUX_SAVE_EFL_AC(); + int rc; + RTMPARGS Args; + RTCPUSET OnlineSet; + RTCPUID idCpu; + uint32_t cLoops; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = NIL_RTCPUID; + Args.cHits = 0; + + RTThreadPreemptDisable(&PreemptState); + RTMpGetOnlineSet(&OnlineSet); + Args.pWorkerSet = &OnlineSet; + idCpu = RTMpCpuId(); + + if (RTCpuSetCount(&OnlineSet) > 1) + { + /* Fire the function on all other CPUs without waiting for completion. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */); +#else + rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */); +#endif + Assert(!rc); NOREF(rc); + } + + /* Fire the function on this CPU. */ + Args.pfnWorker(idCpu, Args.pvUser1, Args.pvUser2); + RTCpuSetDel(Args.pWorkerSet, idCpu); + + /* Wait for all of them finish. */ + cLoops = 64000; + while (!RTCpuSetIsEmpty(Args.pWorkerSet)) + { + /* Periodically check if any CPU in the wait set has gone offline, if so update the wait set. */ + if (!cLoops--) + { + RTCPUSET OnlineSetNow; + RTMpGetOnlineSet(&OnlineSetNow); + RTCpuSetAnd(Args.pWorkerSet, &OnlineSetNow); + + cLoops = 64000; + } + + ASMNopPause(); + } + + RTThreadPreemptRestore(&PreemptState); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpOnAll); + + +RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + IPRT_LINUX_SAVE_EFL_AC(); + int rc; + RTMPARGS Args; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = NIL_RTCPUID; + Args.cHits = 0; + + RTThreadPreemptDisable(&PreemptState); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#endif /* older kernels */ + RTThreadPreemptRestore(&PreemptState); + + Assert(rc == 0); NOREF(rc); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpOnOthers); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER + * employed by RTMpOnPair on older kernels that lacks smp_call_function_many. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtMpLinuxOnPairWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + RTCPUID idCpu = RTMpCpuId(); + + if ( idCpu == pArgs->idCpu + || idCpu == pArgs->idCpu2) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); + } +} +#endif + + +RTDECL(int) RTMpOnPair(RTCPUID idCpu1, RTCPUID idCpu2, uint32_t fFlags, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + IPRT_LINUX_SAVE_EFL_AC(); + int rc; + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + + AssertReturn(idCpu1 != idCpu2, VERR_INVALID_PARAMETER); + AssertReturn(!(fFlags & RTMPON_F_VALID_MASK), VERR_INVALID_FLAGS); + + /* + * Check that both CPUs are online before doing the broadcast call. + */ + RTThreadPreemptDisable(&PreemptState); + if ( RTMpIsCpuOnline(idCpu1) + && RTMpIsCpuOnline(idCpu2)) + { + /* + * Use the smp_call_function variant taking a cpu mask where available, + * falling back on broadcast with filter. Slight snag if one of the + * CPUs is the one we're running on, we must do the call and the post + * call wait ourselves. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + cpumask_t DstCpuMask; +#endif + RTCPUID idCpuSelf = RTMpCpuId(); + bool const fCallSelf = idCpuSelf == idCpu1 || idCpuSelf == idCpu2; + RTMPARGS Args; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = idCpu1; + Args.idCpu2 = idCpu2; + Args.cHits = 0; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) + cpumask_clear(&DstCpuMask); + cpumask_set_cpu(idCpu1, &DstCpuMask); + cpumask_set_cpu(idCpu2, &DstCpuMask); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + cpus_clear(DstCpuMask); + cpu_set(idCpu1, DstCpuMask); + cpu_set(idCpu2, DstCpuMask); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + smp_call_function_many(&DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); + rc = 0; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) + rc = smp_call_function_many(&DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_mask(DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtMpLinuxOnPairWrapper, &Args, 0 /* retry */, !fCallSelf /* wait */); +#endif /* older kernels */ + Assert(rc == 0); + + /* Call ourselves if necessary and wait for the other party to be done. */ + if (fCallSelf) + { + uint32_t cLoops = 0; + rtmpLinuxWrapper(&Args); + while (ASMAtomicReadU32(&Args.cHits) < 2) + { + if ((cLoops & 0x1ff) == 0 && !RTMpIsCpuOnline(idCpuSelf == idCpu1 ? idCpu2 : idCpu1)) + break; + cLoops++; + ASMNopPause(); + } + } + + Assert(Args.cHits <= 2); + if (Args.cHits == 2) + rc = VINF_SUCCESS; + else if (Args.cHits == 1) + rc = VERR_NOT_ALL_CPUS_SHOWED; + else if (Args.cHits == 0) + rc = VERR_CPU_OFFLINE; + else + rc = VERR_CPU_IPE_1; + } + /* + * A CPU must be present to be considered just offline. + */ + else if ( RTMpIsCpuPresent(idCpu1) + && RTMpIsCpuPresent(idCpu2)) + rc = VERR_CPU_OFFLINE; + else + rc = VERR_CPU_NOT_FOUND; + RTThreadPreemptRestore(&PreemptState);; + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} +RT_EXPORT_SYMBOL(RTMpOnPair); + + +RTDECL(bool) RTMpOnPairIsConcurrentExecSupported(void) +{ + return true; +} +RT_EXPORT_SYMBOL(RTMpOnPairIsConcurrentExecSupported); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19) +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER + * employed by RTMpOnSpecific on older kernels that lacks smp_call_function_single. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpOnSpecificLinuxWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + RTCPUID idCpu = RTMpCpuId(); + + if (idCpu == pArgs->idCpu) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); + } +} +#endif + + +RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + IPRT_LINUX_SAVE_EFL_AC(); + int rc; + RTMPARGS Args; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = idCpu; + Args.cHits = 0; + + if (!RTMpIsCpuPossible(idCpu)) + return VERR_CPU_NOT_FOUND; + + RTThreadPreemptDisable(&PreemptState); + if (idCpu != RTMpCpuId()) + { + if (RTMpIsCpuOnline(idCpu)) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_single(idCpu, rtmpLinuxWrapper, &Args, 1 /* wait */); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + rc = smp_call_function_single(idCpu, rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtmpOnSpecificLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#endif /* older kernels */ + Assert(rc == 0); + rc = Args.cHits ? VINF_SUCCESS : VERR_CPU_OFFLINE; + } + else + rc = VERR_CPU_OFFLINE; + } + else + { + rtmpLinuxWrapper(&Args); + rc = VINF_SUCCESS; + } + RTThreadPreemptRestore(&PreemptState);; + + NOREF(rc); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} +RT_EXPORT_SYMBOL(RTMpOnSpecific); + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) +/** + * Dummy callback used by RTMpPokeCpu. + * + * @param pvInfo Ignored. + */ +static void rtmpLinuxPokeCpuCallback(void *pvInfo) +{ + NOREF(pvInfo); +} +#endif + + +RTDECL(int) RTMpPokeCpu(RTCPUID idCpu) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + + if (!RTMpIsCpuPossible(idCpu)) + return VERR_CPU_NOT_FOUND; + if (!RTMpIsCpuOnline(idCpu)) + return VERR_CPU_OFFLINE; + +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_single(idCpu, rtmpLinuxPokeCpuCallback, NULL, 0 /* wait */); +# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + rc = smp_call_function_single(idCpu, rtmpLinuxPokeCpuCallback, NULL, 0 /* retry */, 0 /* wait */); +# else /* older kernels */ +# error oops +# endif /* older kernels */ + NOREF(rc); + Assert(rc == 0); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + +#else /* older kernels */ + /* no unicast here? */ + return VERR_NOT_SUPPORTED; +#endif /* older kernels */ +} +RT_EXPORT_SYMBOL(RTMpPokeCpu); + + +RTDECL(bool) RTMpOnAllIsConcurrentSafe(void) +{ + return true; +} +RT_EXPORT_SYMBOL(RTMpOnAllIsConcurrentSafe); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/mpnotification-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/mpnotification-r0drv-linux.c @@ -0,0 +1,209 @@ +/* $Id: mpnotification-r0drv-linux.c $ */ +/** @file + * IPRT - Multiprocessor Event Notifications, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 71) && defined(CONFIG_SMP) + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static int rtMpNotificationLinuxCallback(struct notifier_block *pNotifierBlock, unsigned long ulNativeEvent, void *pvCpu); + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** + * The notifier block we use for registering the callback. + */ +static struct notifier_block g_NotifierBlock = +{ + .notifier_call = rtMpNotificationLinuxCallback, + .next = NULL, + .priority = 0 +}; + +# ifdef CPU_DOWN_FAILED +/** + * The set of CPUs we've seen going offline recently. + */ +static RTCPUSET g_MpPendingOfflineSet; +# endif + + +/** + * The native callback. + * + * @returns NOTIFY_DONE. + * @param pNotifierBlock Pointer to g_NotifierBlock. + * @param ulNativeEvent The native event. + * @param pvCpu The cpu id cast into a pointer value. + * + * @remarks This can fire with preemption enabled and on any CPU. + */ +static int rtMpNotificationLinuxCallback(struct notifier_block *pNotifierBlock, unsigned long ulNativeEvent, void *pvCpu) +{ + bool fProcessEvent = false; + RTCPUID idCpu = (uintptr_t)pvCpu; + NOREF(pNotifierBlock); + + /* + * Note that redhat/CentOS ported _some_ of the FROZEN macros + * back to their 2.6.18-92.1.10.el5 kernel but actually don't + * use them. Thus we have to test for both CPU_TASKS_FROZEN and + * the individual event variants. + */ + switch (ulNativeEvent) + { + /* + * Pick up online events or failures to go offline. + * Ignore failure events for CPUs we didn't see go offline. + */ +# ifdef CPU_DOWN_FAILED + case CPU_DOWN_FAILED: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_FAILED_FROZEN) + case CPU_DOWN_FAILED_FROZEN: +# endif + if (!RTCpuSetIsMember(&g_MpPendingOfflineSet, idCpu)) + break; /* fProcessEvents = false */ + /* fall thru */ +# endif + case CPU_ONLINE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_ONLINE_FROZEN) + case CPU_ONLINE_FROZEN: +# endif +# ifdef CPU_DOWN_FAILED + RTCpuSetDel(&g_MpPendingOfflineSet, idCpu); +# endif + fProcessEvent = true; + break; + + /* + * Pick the earliest possible offline event. + * The only important thing here is that we get the event and that + * it's exactly one. + */ +# ifdef CPU_DOWN_PREPARE + case CPU_DOWN_PREPARE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_PREPARE_FROZEN) + case CPU_DOWN_PREPARE_FROZEN: +# endif + fProcessEvent = true; +# else + case CPU_DEAD: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DEAD_FROZEN) + case CPU_DEAD_FROZEN: +# endif + /* Don't process CPU_DEAD notifications. */ +# endif +# ifdef CPU_DOWN_FAILED + RTCpuSetAdd(&g_MpPendingOfflineSet, idCpu); +# endif + break; + } + + if (!fProcessEvent) + return NOTIFY_DONE; + + switch (ulNativeEvent) + { +# ifdef CPU_DOWN_FAILED + case CPU_DOWN_FAILED: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_FAILED_FROZEN) + case CPU_DOWN_FAILED_FROZEN: +# endif +# endif + case CPU_ONLINE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_ONLINE_FROZEN) + case CPU_ONLINE_FROZEN: +# endif + rtMpNotificationDoCallbacks(RTMPEVENT_ONLINE, idCpu); + break; + +# ifdef CPU_DOWN_PREPARE + case CPU_DOWN_PREPARE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_PREPARE_FROZEN) + case CPU_DOWN_PREPARE_FROZEN: +# endif + rtMpNotificationDoCallbacks(RTMPEVENT_OFFLINE, idCpu); + break; +# endif + } + + return NOTIFY_DONE; +} + + +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void) +{ + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + +# ifdef CPU_DOWN_FAILED + RTCpuSetEmpty(&g_MpPendingOfflineSet); +# endif + + rc = register_cpu_notifier(&g_NotifierBlock); + IPRT_LINUX_RESTORE_EFL_AC(); + AssertMsgReturn(!rc, ("%d\n", rc), RTErrConvertFromErrno(rc)); + return VINF_SUCCESS; +} + + +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void) +{ + IPRT_LINUX_SAVE_EFL_AC(); + unregister_cpu_notifier(&g_NotifierBlock); + IPRT_LINUX_RESTORE_EFL_AC(); +} + +#else /* Not supported / Not needed */ + +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void) +{ + return VINF_SUCCESS; +} + +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void) +{ +} + +#endif /* Not supported / Not needed */ + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/process-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/process-r0drv-linux.c @@ -0,0 +1,49 @@ +/* $Id: process-r0drv-linux.c $ */ +/** @file + * IPRT - Process, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include + + +RTDECL(RTPROCESS) RTProcSelf(void) +{ + return (RTPROCESS)current->tgid; +} +RT_EXPORT_SYMBOL(RTProcSelf); + + +RTR0DECL(RTR0PROCESS) RTR0ProcHandleSelf(void) +{ + return (RTR0PROCESS)current->tgid; +} +RT_EXPORT_SYMBOL(RTR0ProcHandleSelf); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/semevent-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/semevent-r0drv-linux.c @@ -0,0 +1,277 @@ +/* $Id: semevent-r0drv-linux.c $ */ +/** @file + * IPRT - Single Release Event Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define RTSEMEVENT_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "waitqueue-r0drv-linux.h" +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Linux event semaphore. + */ +typedef struct RTSEMEVENTINTERNAL +{ + /** Magic value (RTSEMEVENT_MAGIC). */ + uint32_t volatile u32Magic; + /** The object status - !0 when signaled and 0 when reset. */ + uint32_t volatile fState; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The wait queue. */ + wait_queue_head_t Head; +} RTSEMEVENTINTERNAL, *PRTSEMEVENTINTERNAL; + + + +RTDECL(int) RTSemEventCreate(PRTSEMEVENT phEventSem) +{ + return RTSemEventCreateEx(phEventSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); +} + + +RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem, uint32_t fFlags, RTLOCKVALCLASS hClass, const char *pszNameFmt, ...) +{ + PRTSEMEVENTINTERNAL pThis; + IPRT_LINUX_SAVE_EFL_AC(); + + AssertReturn(!(fFlags & ~(RTSEMEVENT_FLAGS_NO_LOCK_VAL | RTSEMEVENT_FLAGS_BOOTSTRAP_HACK)), VERR_INVALID_PARAMETER); + Assert(!(fFlags & RTSEMEVENT_FLAGS_BOOTSTRAP_HACK) || (fFlags & RTSEMEVENT_FLAGS_NO_LOCK_VAL)); + + pThis = (PRTSEMEVENTINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + + pThis->u32Magic = RTSEMEVENT_MAGIC; + pThis->fState = 0; + pThis->cRefs = 1; + init_waitqueue_head(&pThis->Head); + + *phEventSem = pThis; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventCreate); + + +/** + * Retains a reference to the event semaphore. + * + * @param pThis The event semaphore. + */ +DECLINLINE(void) rtR0SemEventLnxRetain(PRTSEMEVENTINTERNAL pThis) +{ + uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); + Assert(cRefs < 100000); NOREF(cRefs); +} + + +/** + * Releases a reference to the event semaphore. + * + * @param pThis The event semaphore. + */ +DECLINLINE(void) rtR0SemEventLnxRelease(PRTSEMEVENTINTERNAL pThis) +{ + if (RT_UNLIKELY(ASMAtomicDecU32(&pThis->cRefs) == 0)) + RTMemFree(pThis); +} + + +RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate input. + */ + PRTSEMEVENTINTERNAL pThis = hEventSem; + if (pThis == NIL_RTSEMEVENT) + return VINF_SUCCESS; + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs > 0); + + /* + * Invalidate it and signal the object just in case. + */ + ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENT_MAGIC); + ASMAtomicWriteU32(&pThis->fState, 0); + Assert(!waitqueue_active(&pThis->Head)); + wake_up_all(&pThis->Head); + rtR0SemEventLnxRelease(pThis); + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventDestroy); + + +RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate input. + */ + PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)hEventSem; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + rtR0SemEventLnxRetain(pThis); + + /* + * Signal the event object. + */ + ASMAtomicWriteU32(&pThis->fState, 1); + wake_up(&pThis->Head); + + rtR0SemEventLnxRelease(pThis); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventSignal); + + +/** + * Worker for RTSemEventWaitEx and RTSemEventWaitExDebug. + * + * @returns VBox status code. + * @param pThis The event semaphore. + * @param fFlags See RTSemEventWaitEx. + * @param uTimeout See RTSemEventWaitEx. + * @param pSrcPos The source code position of the wait. + */ +static int rtR0SemEventLnxWait(PRTSEMEVENTINTERNAL pThis, uint32_t fFlags, uint64_t uTimeout, + PCRTLOCKVALSRCPOS pSrcPos) +{ + int rc; + + /* + * Validate the input. + */ + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + AssertReturn(RTSEMWAIT_FLAGS_ARE_VALID(fFlags), VERR_INVALID_PARAMETER); + rtR0SemEventLnxRetain(pThis); + + /* + * Try grab the event without setting up the wait. + */ + if ( 1 /** @todo check if there are someone waiting already - waitqueue_active, but then what do we do below? */ + && ASMAtomicCmpXchgU32(&pThis->fState, 0, 1)) + rc = VINF_SUCCESS; + else + { + /* + * We have to wait. + */ + IPRT_LINUX_SAVE_EFL_AC(); + RTR0SEMLNXWAIT Wait; + rc = rtR0SemLnxWaitInit(&Wait, fFlags, uTimeout, &pThis->Head); + if (RT_SUCCESS(rc)) + { + IPRT_DEBUG_SEMS_STATE(pThis, 'E'); + for (;;) + { + /* The destruction test. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENT_MAGIC)) + rc = VERR_SEM_DESTROYED; + else + { + rtR0SemLnxWaitPrepare(&Wait); + + /* Check the exit conditions. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENT_MAGIC)) + rc = VERR_SEM_DESTROYED; + else if (ASMAtomicCmpXchgU32(&pThis->fState, 0, 1)) + rc = VINF_SUCCESS; + else if (rtR0SemLnxWaitHasTimedOut(&Wait)) + rc = VERR_TIMEOUT; + else if (rtR0SemLnxWaitWasInterrupted(&Wait)) + rc = VERR_INTERRUPTED; + else + { + /* Do the wait and then recheck the conditions. */ + rtR0SemLnxWaitDoIt(&Wait); + continue; + } + } + break; + } + + rtR0SemLnxWaitDelete(&Wait); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'E', rc); + } + IPRT_LINUX_RESTORE_EFL_AC(); + } + + rtR0SemEventLnxRelease(pThis); + return rc; +} + + +RTDECL(int) RTSemEventWaitEx(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout) +{ +#ifndef RTSEMEVENT_STRICT + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, NULL); +#else + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_NORMAL_API(); + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, &SrcPos); +#endif +} +RT_EXPORT_SYMBOL(RTSemEventWaitEx); + + +RTDECL(int) RTSemEventWaitExDebug(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_DEBUG_API(); + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, &SrcPos); +} +RT_EXPORT_SYMBOL(RTSemEventWaitExDebug); + + +RTDECL(uint32_t) RTSemEventGetResolution(void) +{ + return rtR0SemLnxWaitGetResolution(); +} +RT_EXPORT_SYMBOL(RTSemEventGetResolution); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/semeventmulti-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/semeventmulti-r0drv-linux.c @@ -0,0 +1,342 @@ +/* $Id: semeventmulti-r0drv-linux.c $ */ +/** @file + * IPRT - Multiple Release Event Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "waitqueue-r0drv-linux.h" +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/** @name fStateAndGen values + * @{ */ +/** The state bit number. */ +#define RTSEMEVENTMULTILNX_STATE_BIT 0 +/** The state mask. */ +#define RTSEMEVENTMULTILNX_STATE_MASK RT_BIT_32(RTSEMEVENTMULTILNX_STATE_BIT) +/** The generation mask. */ +#define RTSEMEVENTMULTILNX_GEN_MASK ~RTSEMEVENTMULTILNX_STATE_MASK +/** The generation shift. */ +#define RTSEMEVENTMULTILNX_GEN_SHIFT 1 +/** The initial variable value. */ +#define RTSEMEVENTMULTILNX_STATE_GEN_INIT UINT32_C(0xfffffffc) +/** @} */ + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Linux event semaphore. + */ +typedef struct RTSEMEVENTMULTIINTERNAL +{ + /** Magic value (RTSEMEVENTMULTI_MAGIC). */ + uint32_t volatile u32Magic; + /** The object state bit and generation counter. + * The generation counter is incremented every time the object is + * signalled. */ + uint32_t volatile fStateAndGen; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The wait queue. */ + wait_queue_head_t Head; +} RTSEMEVENTMULTIINTERNAL, *PRTSEMEVENTMULTIINTERNAL; + + + + + +RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) +{ + return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); +} + + +RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, + const char *pszNameFmt, ...) +{ + PRTSEMEVENTMULTIINTERNAL pThis; + IPRT_LINUX_SAVE_EFL_AC(); + + AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); + pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (pThis) + { + pThis->u32Magic = RTSEMEVENTMULTI_MAGIC; + pThis->fStateAndGen = RTSEMEVENTMULTILNX_STATE_GEN_INIT; + pThis->cRefs = 1; + init_waitqueue_head(&pThis->Head); + + *phEventMultiSem = pThis; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_NO_MEMORY; +} +RT_EXPORT_SYMBOL(RTSemEventMultiCreate); + + +/** + * Retain a reference to the semaphore. + * + * @param pThis The semaphore. + */ +DECLINLINE(void) rtR0SemEventMultiLnxRetain(PRTSEMEVENTMULTIINTERNAL pThis) +{ + uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); + NOREF(cRefs); + Assert(cRefs && cRefs < 100000); +} + + +/** + * Release a reference, destroy the thing if necessary. + * + * @param pThis The semaphore. + */ +DECLINLINE(void) rtR0SemEventMultiLnxRelease(PRTSEMEVENTMULTIINTERNAL pThis) +{ + if (RT_UNLIKELY(ASMAtomicDecU32(&pThis->cRefs) == 0)) + { + Assert(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC); + RTMemFree(pThis); + } +} + + +RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (pThis == NIL_RTSEMEVENTMULTI) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + Assert(pThis->cRefs > 0); + + /* + * Invalidate it and signal the object just in case. + */ + ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENTMULTI_MAGIC); + ASMAtomicAndU32(&pThis->fStateAndGen, RTSEMEVENTMULTILNX_GEN_MASK); + Assert(!waitqueue_active(&pThis->Head)); + wake_up_all(&pThis->Head); + rtR0SemEventMultiLnxRelease(pThis); + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiDestroy); + + +RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) +{ + IPRT_LINUX_SAVE_EFL_AC(); + uint32_t fNew; + uint32_t fOld; + + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (!pThis) + return VERR_INVALID_PARAMETER; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Signal the event object. The cause of the paranoia here is racing to try + * deal with racing RTSemEventMultiSignal calls (should probably be + * forbidden, but it's relatively easy to handle). + */ + do + { + fNew = fOld = ASMAtomicUoReadU32(&pThis->fStateAndGen); + fNew += 1 << RTSEMEVENTMULTILNX_GEN_SHIFT; + fNew |= RTSEMEVENTMULTILNX_STATE_MASK; + } + while (!ASMAtomicCmpXchgU32(&pThis->fStateAndGen, fNew, fOld)); + + wake_up_all(&pThis->Head); + + rtR0SemEventMultiLnxRelease(pThis); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiSignal); + + +RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) +{ + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (!pThis) + return VERR_INVALID_PARAMETER; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Reset it. + */ + ASMAtomicAndU32(&pThis->fStateAndGen, ~RTSEMEVENTMULTILNX_STATE_MASK); + + rtR0SemEventMultiLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiReset); + + +/** + * Worker for RTSemEventMultiWaitEx and RTSemEventMultiWaitExDebug. + * + * @returns VBox status code. + * @param pThis The event semaphore. + * @param fFlags See RTSemEventMultiWaitEx. + * @param uTimeout See RTSemEventMultiWaitEx. + * @param pSrcPos The source code position of the wait. + */ +static int rtR0SemEventMultiLnxWait(PRTSEMEVENTMULTIINTERNAL pThis, uint32_t fFlags, uint64_t uTimeout, + PCRTLOCKVALSRCPOS pSrcPos) +{ + uint32_t fOrgStateAndGen; + int rc; + + /* + * Validate the input. + */ + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + AssertReturn(RTSEMWAIT_FLAGS_ARE_VALID(fFlags), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Is the event already signalled or do we have to wait? + */ + fOrgStateAndGen = ASMAtomicUoReadU32(&pThis->fStateAndGen); + if (fOrgStateAndGen & RTSEMEVENTMULTILNX_STATE_MASK) + rc = VINF_SUCCESS; + else + { + /* + * We have to wait. + */ + RTR0SEMLNXWAIT Wait; + IPRT_LINUX_SAVE_EFL_AC(); + rc = rtR0SemLnxWaitInit(&Wait, fFlags, uTimeout, &pThis->Head); + if (RT_SUCCESS(rc)) + { + IPRT_DEBUG_SEMS_STATE(pThis, 'E'); + for (;;) + { + /* The destruction test. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC)) + rc = VERR_SEM_DESTROYED; + else + { + rtR0SemLnxWaitPrepare(&Wait); + + /* Check the exit conditions. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC)) + rc = VERR_SEM_DESTROYED; + else if (ASMAtomicUoReadU32(&pThis->fStateAndGen) != fOrgStateAndGen) + rc = VINF_SUCCESS; + else if (rtR0SemLnxWaitHasTimedOut(&Wait)) + rc = VERR_TIMEOUT; + else if (rtR0SemLnxWaitWasInterrupted(&Wait)) + rc = VERR_INTERRUPTED; + else + { + /* Do the wait and then recheck the conditions. */ + rtR0SemLnxWaitDoIt(&Wait); + continue; + } + } + break; + } + + rtR0SemLnxWaitDelete(&Wait); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'E', rc); + } + IPRT_LINUX_RESTORE_EFL_AC(); + } + + rtR0SemEventMultiLnxRelease(pThis); + return rc; +} + + +RTDECL(int) RTSemEventMultiWaitEx(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout) +{ +#ifndef RTSEMEVENT_STRICT + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, NULL); +#else + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_NORMAL_API(); + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, &SrcPos); +#endif +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitEx); + + +RTDECL(int) RTSemEventMultiWaitExDebug(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_DEBUG_API(); + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, &SrcPos); +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitExDebug); + + +RTDECL(uint32_t) RTSemEventMultiGetResolution(void) +{ + return rtR0SemLnxWaitGetResolution(); +} +RT_EXPORT_SYMBOL(RTSemEventMultiGetResolution); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/semfastmutex-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/semfastmutex-r0drv-linux.c @@ -0,0 +1,157 @@ +/* $Id: semfastmutex-r0drv-linux.c $ */ +/** @file + * IPRT - Fast Mutex Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include +#include +#include +#include +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) +# include +#endif + +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Wrapper for the linux semaphore structure. + */ +typedef struct RTSEMFASTMUTEXINTERNAL +{ + /** Magic value (RTSEMFASTMUTEX_MAGIC). */ + uint32_t u32Magic; + /** the linux semaphore. */ + struct semaphore Semaphore; +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + /** For check. */ + RTNATIVETHREAD volatile Owner; +#endif +} RTSEMFASTMUTEXINTERNAL, *PRTSEMFASTMUTEXINTERNAL; + + +RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFastMtx) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Allocate. + */ + PRTSEMFASTMUTEXINTERNAL pThis; + pThis = (PRTSEMFASTMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + + /* + * Initialize. + */ + pThis->u32Magic = RTSEMFASTMUTEX_MAGIC; + sema_init(&pThis->Semaphore, 1); +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + pThis->Owner = NIL_RTNATIVETHREAD; +#endif + + *phFastMtx = pThis; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexCreate); + + +RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFastMtx) +{ + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + if (pThis == NIL_RTSEMFASTMUTEX) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + ASMAtomicWriteU32(&pThis->u32Magic, RTSEMFASTMUTEX_MAGIC_DEAD); + RTMemFree(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexDestroy); + + +RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFastMtx) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + IPRT_DEBUG_SEMS_STATE(pThis, 'd'); + down(&pThis->Semaphore); +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + IPRT_DEBUG_SEMS_STATE(pThis, 'o'); + AssertRelease(pThis->Owner == NIL_RTNATIVETHREAD); + ASMAtomicUoWriteSize(&pThis->Owner, RTThreadNativeSelf()); +#endif + + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexRequest); + + +RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx) +{ + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + AssertRelease(pThis->Owner == RTThreadNativeSelf()); + ASMAtomicUoWriteSize(&pThis->Owner, NIL_RTNATIVETHREAD); +#endif + up(&pThis->Semaphore); + IPRT_DEBUG_SEMS_STATE(pThis, 'u'); + + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexRelease); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/semmutex-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/semmutex-r0drv-linux.c @@ -0,0 +1,419 @@ +/* $Id: semmutex-r0drv-linux.c $ */ +/** @file + * IPRT - Mutex Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define RTSEMMUTEX_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +typedef struct RTSEMMUTEXLNXWAITER +{ + /** The list entry. */ + RTLISTNODE ListEntry; + /** The waiting task. */ + struct task_struct *pTask; + /** Why did we wake up? */ + enum + { + /** Wakeup to take the semaphore. */ + RTSEMMUTEXLNXWAITER_WAKEUP, + /** Mutex is being destroyed. */ + RTSEMMUTEXLNXWAITER_DESTROYED, + /** Some other reason. */ + RTSEMMUTEXLNXWAITER_OTHER + } volatile enmReason; +} RTSEMMUTEXLNXWAITER, *PRTSEMMUTEXLNXWAITER; + +/** + * Wrapper for the linux semaphore structure. + */ +typedef struct RTSEMMUTEXINTERNAL +{ + /** Magic value (RTSEMMUTEX_MAGIC). */ + uint32_t u32Magic; + /** The number of recursions. */ + uint32_t cRecursions; + /** The list of waiting threads. */ + RTLISTANCHOR WaiterList; + /** The current owner, NULL if none. */ + struct task_struct *pOwnerTask; + /** The number of references to this piece of memory. This is used to + * prevent it from being kicked from underneath us while waiting. */ + uint32_t volatile cRefs; + /** The spinlock protecting the members and falling asleep. */ + spinlock_t Spinlock; +} RTSEMMUTEXINTERNAL, *PRTSEMMUTEXINTERNAL; + + +RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMtx) +{ + int rc = VINF_SUCCESS; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Allocate. + */ + PRTSEMMUTEXINTERNAL pThis; + pThis = (PRTSEMMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (pThis) + { + /* + * Initialize. + */ + pThis->u32Magic = RTSEMMUTEX_MAGIC; + pThis->cRecursions = 0; + pThis->pOwnerTask = NULL; + pThis->cRefs = 1; + RTListInit(&pThis->WaiterList); + spin_lock_init(&pThis->Spinlock); + + *phMtx = pThis; + } + else + rc = VERR_NO_MEMORY; + + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} +RT_EXPORT_SYMBOL(RTSemMutexCreate); + + +RTDECL(int) RTSemMutexDestroy(RTSEMMUTEX hMtx) +{ + PRTSEMMUTEXINTERNAL pThis = hMtx; + PRTSEMMUTEXLNXWAITER pCur; + unsigned long fSavedIrq; + + /* + * Validate. + */ + if (pThis == NIL_RTSEMMUTEX) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + /* + * Kill it, kick waiters and release it. + */ + AssertReturn(ASMAtomicCmpXchgU32(&pThis->u32Magic, RTSEMMUTEX_MAGIC_DEAD, RTSEMMUTEX_MAGIC), VERR_INVALID_HANDLE); + + IPRT_LINUX_SAVE_EFL_AC(); + + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + RTListForEach(&pThis->WaiterList, pCur, RTSEMMUTEXLNXWAITER, ListEntry) + { + pCur->enmReason = RTSEMMUTEXLNXWAITER_DESTROYED; + wake_up_process(pCur->pTask); + } + + if (ASMAtomicDecU32(&pThis->cRefs) != 0) + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + else + { + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + RTMemFree(pThis); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemMutexDestroy); + + +/** + * Worker for rtSemMutexLinuxRequest that handles the case where we go to sleep. + * + * @returns VINF_SUCCESS, VERR_INTERRUPTED, VERR_TIMEOUT or VERR_SEM_DESTROYED. + * Returns without owning the spinlock. + * @param pThis The mutex instance. + * @param cMillies The timeout. + * @param fInterruptible The wait type. + * @param fSavedIrq The saved IRQ flags. + */ +static int rtSemMutexLinuxRequestSleep(PRTSEMMUTEXINTERNAL pThis, RTMSINTERVAL cMillies, + bool fInterruptible, unsigned long fSavedIrq) +{ + struct task_struct *pSelf = current; + int rc = VERR_TIMEOUT; + long lTimeout = cMillies == RT_INDEFINITE_WAIT ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(cMillies); + RTSEMMUTEXLNXWAITER Waiter; + + IPRT_DEBUG_SEMS_STATE(pThis, 'm'); + + /* + * Grab a reference to the mutex and add ourselves to the waiter list. + */ + ASMAtomicIncU32(&pThis->cRefs); + + Waiter.pTask = pSelf; + Waiter.enmReason = RTSEMMUTEXLNXWAITER_OTHER; + RTListAppend(&pThis->WaiterList, &Waiter.ListEntry); + + /* + * Do the waiting. + */ + for (;;) + { + /* Check signal and timeout conditions. */ + if ( fInterruptible + && signal_pending(pSelf)) + { + rc = VERR_INTERRUPTED; + break; + } + + if (!lTimeout) + break; + + /* Go to sleep. */ + set_task_state(pSelf, fInterruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); + spin_unlock_irq(&pThis->Spinlock); + + lTimeout = schedule_timeout(lTimeout); + + spin_lock_irq(&pThis->Spinlock); + set_current_state(TASK_RUNNING); + + /* Did someone wake us up? */ + if (Waiter.enmReason == RTSEMMUTEXLNXWAITER_WAKEUP) + { + Assert(pThis->cRecursions == 0); + pThis->cRecursions = 1; + pThis->pOwnerTask = pSelf; + rc = VINF_SUCCESS; + break; + } + + /* Is the mutex being destroyed? */ + if (RT_UNLIKELY( Waiter.enmReason == RTSEMMUTEXLNXWAITER_DESTROYED + || pThis->u32Magic != RTSEMMUTEX_MAGIC)) + { + rc = VERR_SEM_DESTROYED; + break; + } + } + + /* + * Unlink ourself from the waiter list, dereference the mutex and exit the + * lock. We might have to free the mutex if it was the destroyed. + */ + RTListNodeRemove(&Waiter.ListEntry); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'M', rc); + + if (RT_LIKELY(ASMAtomicDecU32(&pThis->cRefs) != 0)) + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + else + { + Assert(RT_FAILURE_NP(rc)); + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + RTMemFree(pThis); + } + return rc; +} + + +/** + * Internal worker. + */ +DECLINLINE(int) rtSemMutexLinuxRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, bool fInterruptible) +{ + PRTSEMMUTEXINTERNAL pThis = hMutexSem; + struct task_struct *pSelf = current; + unsigned long fSavedIrq; + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs >= 1); + + /* + * Lock it and check if it's a recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + if (pThis->pOwnerTask == pSelf) + { + pThis->cRecursions++; + Assert(pThis->cRecursions > 1); + Assert(pThis->cRecursions < 256); + rc = VINF_SUCCESS; + } + /* + * Not a recursion, maybe it's not owned by anyone then? + */ + else if ( pThis->pOwnerTask == NULL + && RTListIsEmpty(&pThis->WaiterList)) + { + Assert(pThis->cRecursions == 0); + pThis->cRecursions = 1; + pThis->pOwnerTask = pSelf; + rc = VINF_SUCCESS; + } + /* + * Was it a polling call? + */ + else if (cMillies == 0) + rc = VERR_TIMEOUT; + /* + * No, so go to sleep. + */ + else + { + rc = rtSemMutexLinuxRequestSleep(pThis, cMillies, fInterruptible, fSavedIrq); + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + return rc; + } + + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'M', rc); + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + return rc; +} + + +RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies) +{ + return rtSemMutexLinuxRequest(hMutexSem, cMillies, false /*fInterruptible*/); +} +RT_EXPORT_SYMBOL(RTSemMutexRequest); + + +RTDECL(int) RTSemMutexRequestDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + return RTSemMutexRequest(hMutexSem, cMillies); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestDebug); + + +RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies) +{ + return rtSemMutexLinuxRequest(hMutexSem, cMillies, true /*fInterruptible*/); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestNoResume); + + +RTDECL(int) RTSemMutexRequestNoResumeDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + return RTSemMutexRequestNoResume(hMutexSem, cMillies); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestNoResumeDebug); + + +RTDECL(int) RTSemMutexRelease(RTSEMMUTEX hMtx) +{ + PRTSEMMUTEXINTERNAL pThis = hMtx; + struct task_struct *pSelf = current; + unsigned long fSavedIrq; + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs >= 1); + + /* + * Take the lock and release one recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + if (pThis->pOwnerTask == pSelf) + { + Assert(pThis->cRecursions > 0); + if (--pThis->cRecursions == 0) + { + pThis->pOwnerTask = NULL; + + /* anyone to wake up? */ + if (!RTListIsEmpty(&pThis->WaiterList)) + { + PRTSEMMUTEXLNXWAITER pWaiter = RTListGetFirst(&pThis->WaiterList, RTSEMMUTEXLNXWAITER, ListEntry); + pWaiter->enmReason = RTSEMMUTEXLNXWAITER_WAKEUP; + wake_up_process(pWaiter->pTask); + } + IPRT_DEBUG_SEMS_STATE(pThis, 'u'); + } + rc = VINF_SUCCESS; + } + else + rc = VERR_NOT_OWNER; + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + + AssertRC(rc); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; +} +RT_EXPORT_SYMBOL(RTSemMutexRelease); + + +RTDECL(bool) RTSemMutexIsOwned(RTSEMMUTEX hMutexSem) +{ + PRTSEMMUTEXINTERNAL pThis = hMutexSem; + unsigned long fSavedIrq; + bool fOwned; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + AssertPtrReturn(pThis, false); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), false); + Assert(pThis->cRefs >= 1); + + /* + * Take the lock and release one recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + fOwned = pThis->pOwnerTask != NULL; + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + + IPRT_LINUX_RESTORE_EFL_AC(); + return fOwned; + +} +RT_EXPORT_SYMBOL(RTSemMutexIsOwned); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/spinlock-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/spinlock-r0drv-linux.c @@ -0,0 +1,185 @@ +/* $Id: spinlock-r0drv-linux.c $ */ +/** @file + * IPRT - Spinlocks, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Wrapper for the spinlock_t structure. + */ +typedef struct RTSPINLOCKINTERNAL +{ + /** Spinlock magic value (RTSPINLOCK_MAGIC). */ + uint32_t volatile u32Magic; + /** The spinlock creation flags. */ + uint32_t fFlags; + /** The saved interrupt flag. */ + unsigned long volatile fIntSaved; + /** The linux spinlock structure. */ + spinlock_t Spinlock; +#ifdef RT_MORE_STRICT + /** The idAssertCpu variable before acquring the lock for asserting after + * releasing the spinlock. */ + RTCPUID volatile idAssertCpu; + /** The CPU that owns the lock. */ + RTCPUID volatile idCpuOwner; +#endif +} RTSPINLOCKINTERNAL, *PRTSPINLOCKINTERNAL; + + + +RTDECL(int) RTSpinlockCreate(PRTSPINLOCK pSpinlock, uint32_t fFlags, const char *pszName) +{ + IPRT_LINUX_SAVE_EFL_AC(); + PRTSPINLOCKINTERNAL pThis; + AssertReturn(fFlags == RTSPINLOCK_FLAGS_INTERRUPT_SAFE || fFlags == RTSPINLOCK_FLAGS_INTERRUPT_UNSAFE, VERR_INVALID_PARAMETER); + + /* + * Allocate. + */ + Assert(sizeof(RTSPINLOCKINTERNAL) > sizeof(void *)); + pThis = (PRTSPINLOCKINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + /* + * Initialize and return. + */ + pThis->u32Magic = RTSPINLOCK_MAGIC; + pThis->fFlags = fFlags; + pThis->fIntSaved = 0; +#ifdef RT_MORE_STRICT + pThis->idCpuOwner = NIL_RTCPUID; + pThis->idAssertCpu = NIL_RTCPUID; +#endif + + spin_lock_init(&pThis->Spinlock); + + *pSpinlock = pThis; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSpinlockCreate); + + +RTDECL(int) RTSpinlockDestroy(RTSPINLOCK Spinlock) +{ + /* + * Validate input. + */ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + if (!pThis) + return VERR_INVALID_PARAMETER; + if (pThis->u32Magic != RTSPINLOCK_MAGIC) + { + AssertMsgFailed(("Invalid spinlock %p magic=%#x\n", pThis, pThis->u32Magic)); + return VERR_INVALID_PARAMETER; + } + + ASMAtomicIncU32(&pThis->u32Magic); + RTMemFree(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSpinlockDestroy); + + +RTDECL(void) RTSpinlockAcquire(RTSPINLOCK Spinlock) +{ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + IPRT_LINUX_SAVE_EFL_AC(); + RT_ASSERT_PREEMPT_CPUID_VAR(); + AssertMsg(pThis && pThis->u32Magic == RTSPINLOCK_MAGIC, + ("pThis=%p u32Magic=%08x\n", pThis, pThis ? (int)pThis->u32Magic : 0)); + +#ifdef CONFIG_PROVE_LOCKING + lockdep_off(); +#endif + if (pThis->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE) + { + unsigned long fIntSaved; + spin_lock_irqsave(&pThis->Spinlock, fIntSaved); + pThis->fIntSaved = fIntSaved; + } + else + spin_lock(&pThis->Spinlock); +#ifdef CONFIG_PROVE_LOCKING + lockdep_on(); +#endif + + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis); +} +RT_EXPORT_SYMBOL(RTSpinlockAcquire); + + +RTDECL(void) RTSpinlockRelease(RTSPINLOCK Spinlock) +{ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + IPRT_LINUX_SAVE_EFL_AC(); /* spin_unlock* may preempt and trash eflags.ac. */ + RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS(); + AssertMsg(pThis && pThis->u32Magic == RTSPINLOCK_MAGIC, + ("pThis=%p u32Magic=%08x\n", pThis, pThis ? (int)pThis->u32Magic : 0)); + RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis); + +#ifdef CONFIG_PROVE_LOCKING + lockdep_off(); +#endif + if (pThis->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE) + { + unsigned long fIntSaved = pThis->fIntSaved; + pThis->fIntSaved = 0; + spin_unlock_irqrestore(&pThis->Spinlock, fIntSaved); + } + else + spin_unlock(&pThis->Spinlock); +#ifdef CONFIG_PROVE_LOCKING + lockdep_on(); +#endif + + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); + RT_ASSERT_PREEMPT_CPUID(); +} +RT_EXPORT_SYMBOL(RTSpinlockRelease); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/string.h +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/string.h @@ -0,0 +1,57 @@ +/* $Id: string.h $ */ +/** @file + * IPRT - wrapper for the linux kernel asm/string.h. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___string_h +#define ___string_h + +#include + +RT_C_DECLS_BEGIN +#ifndef bool /* Linux 2.6.19 C++ nightmare */ +#define bool bool_type +#define true true_type +#define false false_type +#define _Bool int +#define bool_type_r0drv_string_h__ +#endif +#include +#include +#ifdef bool_type_r0drv_string_h__ +#undef bool +#undef true +#undef false +#undef bool_type_r0drv_string_h__ +#endif +char *strpbrk(const char *pszStr, const char *pszChars) +#if defined(__THROW) + __THROW +#endif + ; + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/the-linux-kernel.h +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/the-linux-kernel.h @@ -0,0 +1,429 @@ +/* $Id: the-linux-kernel.h $ */ +/** @file + * IPRT - Include all necessary headers for the Linux kernel. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___the_linux_kernel_h +#define ___the_linux_kernel_h + +/* + * Include iprt/types.h to install the bool wrappers. + * Then use the linux bool type for all the stuff include here. + */ +#include +#define bool linux_bool + +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) +# include +#else +# ifndef AUTOCONF_INCLUDED +# include +# endif +#endif + +/* We only support 2.4 and 2.6 series kernels */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) +# error We only support 2.4 and 2.6 series kernels +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# error We only support 2.4 and 2.6 series kernels +#endif + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +# define MODVERSIONS +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 71) +# include +# endif +#endif +#ifndef KBUILD_STR +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16) +# define KBUILD_STR(s) s +# else +# define KBUILD_STR(s) #s +# endif +#endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +# include /* for macro IS_ENABLED */ +# endif +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +# include +#else /* older kernels */ +# include +#endif /* older kernels */ +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif +#include +#include +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) +# include +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) +# include +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) +# include +# include +#endif +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 71) +# include +# include +#endif +/* For the basic additions module */ +#include +#include +#include +#include +#include +#ifndef HAVE_UNLOCKED_IOCTL /* linux/fs.h defines this */ +# include +#endif +/* For the shared folders module */ +#include +#define wchar_t linux_wchar_t +#include +#undef wchar_t +#include +#include +#include +#include + +/* For thread-context hooks. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 18) && defined(CONFIG_PREEMPT_NOTIFIERS) +# include +#endif + +/* for workqueue / task queues. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +# include +#else +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif + +/* for cr4_init_shadow() / cpu_tlbstate. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) +# include +#else +static inline void clac(void) { } +static inline void stac(void) { } +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# ifndef page_to_pfn +# define page_to_pfn(page) ((page) - mem_map) +# endif +#endif + +#ifndef DEFINE_WAIT +# define DEFINE_WAIT(name) DECLARE_WAITQUEUE(name, current) +#endif + +#ifndef __GFP_NOWARN +# define __GFP_NOWARN 0 +#endif + +/* + * 2.4 / early 2.6 compatibility wrappers + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 7) + +# ifndef MAX_JIFFY_OFFSET +# define MAX_JIFFY_OFFSET ((~0UL >> 1)-1) +# endif + +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 29) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +DECLINLINE(unsigned int) jiffies_to_msecs(unsigned long cJiffies) +{ +# if HZ <= 1000 && !(1000 % HZ) + return (1000 / HZ) * cJiffies; +# elif HZ > 1000 && !(HZ % 1000) + return (cJiffies + (HZ / 1000) - 1) / (HZ / 1000); +# else + return (cJiffies * 1000) / HZ; +# endif +} + +DECLINLINE(unsigned long) msecs_to_jiffies(unsigned int cMillies) +{ +# if HZ > 1000 + if (cMillies > jiffies_to_msecs(MAX_JIFFY_OFFSET)) + return MAX_JIFFY_OFFSET; +# endif +# if HZ <= 1000 && !(1000 % HZ) + return (cMillies + (1000 / HZ) - 1) / (1000 / HZ); +# elif HZ > 1000 && !(HZ % 1000) + return cMillies * (HZ / 1000); +# else + return (cMillies * HZ + 999) / 1000; +# endif +} + +# endif /* < 2.4.29 || >= 2.6.0 */ + +#endif /* < 2.6.7 */ + +/* + * 2.4 compatibility wrappers + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + +# define prepare_to_wait(q, wait, state) \ + do { \ + add_wait_queue(q, wait); \ + set_current_state(state); \ + } while (0) + +# define after_wait(wait) \ + do { \ + list_del_init(&(wait)->task_list); \ + } while (0) + +# define finish_wait(q, wait) \ + do { \ + set_current_state(TASK_RUNNING); \ + remove_wait_queue(q, wait); \ + } while (0) + +#else /* >= 2.6.0 */ + +# define after_wait(wait) do {} while (0) + +#endif /* >= 2.6.0 */ + +/** @def TICK_NSEC + * The time between ticks in nsec */ +#ifndef TICK_NSEC +# define TICK_NSEC (1000000000UL / HZ) +#endif + +/* + * This sucks soooo badly on x86! Why don't they export __PAGE_KERNEL_EXEC so PAGE_KERNEL_EXEC would be usable? + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 8) && defined(RT_ARCH_AMD64) +# define MY_PAGE_KERNEL_EXEC PAGE_KERNEL_EXEC +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 8) && defined(PAGE_KERNEL_EXEC) && defined(CONFIG_X86_PAE) +# ifdef __PAGE_KERNEL_EXEC + /* >= 2.6.27 */ +# define MY_PAGE_KERNEL_EXEC __pgprot(cpu_has_pge ? __PAGE_KERNEL_EXEC | _PAGE_GLOBAL : __PAGE_KERNEL_EXEC) +# else +# define MY_PAGE_KERNEL_EXEC __pgprot(cpu_has_pge ? _PAGE_KERNEL_EXEC | _PAGE_GLOBAL : _PAGE_KERNEL_EXEC) +# endif +#else +# define MY_PAGE_KERNEL_EXEC PAGE_KERNEL +#endif + + +/* + * The redhat hack section. + * - The current hacks are for 2.4.21-15.EL only. + */ +#ifndef NO_REDHAT_HACKS +/* accounting. */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# ifdef VM_ACCOUNT +# define USE_RHEL4_MUNMAP +# endif +# endif + +/* backported remap_page_range. */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# include +# ifdef tlb_vma /* probably not good enough... */ +# define HAVE_26_STYLE_REMAP_PAGE_RANGE 1 +# endif +# endif + +# ifndef RT_ARCH_AMD64 +/* In 2.6.9-22.ELsmp we have to call change_page_attr() twice when changing + * the page attributes from PAGE_KERNEL to something else, because there appears + * to be a bug in one of the many patches that redhat applied. + * It should be safe to do this on less buggy linux kernels too. ;-) + */ +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) \ + do { \ + if (pgprot_val(prot) != pgprot_val(PAGE_KERNEL)) \ + change_page_attr(pPages, cPages, prot); \ + change_page_attr(pPages, cPages, prot); \ + } while (0) +# endif /* !RT_ARCH_AMD64 */ +#endif /* !NO_REDHAT_HACKS */ + +#ifndef MY_CHANGE_PAGE_ATTR +# ifdef RT_ARCH_AMD64 /** @todo This is a cheap hack, but it'll get around that 'else BUG();' in __change_page_attr(). */ +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) \ + do { \ + change_page_attr(pPages, cPages, PAGE_KERNEL_NOCACHE); \ + change_page_attr(pPages, cPages, prot); \ + } while (0) +# else +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) change_page_attr(pPages, cPages, prot) +# endif +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +# define MY_SET_PAGES_EXEC(pPages, cPages) set_pages_x(pPages, cPages) +# define MY_SET_PAGES_NOEXEC(pPages, cPages) set_pages_nx(pPages, cPages) +#else +# define MY_SET_PAGES_EXEC(pPages, cPages) \ + do { \ + if (pgprot_val(MY_PAGE_KERNEL_EXEC) != pgprot_val(PAGE_KERNEL)) \ + MY_CHANGE_PAGE_ATTR(pPages, cPages, MY_PAGE_KERNEL_EXEC); \ + } while (0) +# define MY_SET_PAGES_NOEXEC(pPages, cPages) \ + do { \ + if (pgprot_val(MY_PAGE_KERNEL_EXEC) != pgprot_val(PAGE_KERNEL)) \ + MY_CHANGE_PAGE_ATTR(pPages, cPages, PAGE_KERNEL); \ + } while (0) +#endif + +/** @def ONE_MSEC_IN_JIFFIES + * The number of jiffies that make up 1 millisecond. Must be at least 1! */ +#if HZ <= 1000 +# define ONE_MSEC_IN_JIFFIES 1 +#elif !(HZ % 1000) +# define ONE_MSEC_IN_JIFFIES (HZ / 1000) +#else +# define ONE_MSEC_IN_JIFFIES ((HZ + 999) / 1000) +# error "HZ is not a multiple of 1000, the GIP stuff won't work right!" +#endif + +/* + * Stop using the linux bool type. + */ +#undef bool + +/* + * There are post-2.6.24 kernels (confusingly with unchanged version number) + * which eliminate macros which were marked as deprecated. + */ +#ifndef __attribute_used__ +#define __attribute_used__ __used +#endif + +/** + * Hack for shortening pointers on linux so we can stuff more stuff into the + * task_struct::comm field. This is used by the semaphore code but put here + * because we don't have any better place atm. Don't use outside IPRT, please. + */ +#ifdef RT_ARCH_AMD64 +# define IPRT_DEBUG_SEMS_ADDRESS(addr) ( ((long)(addr) & (long)~UINT64_C(0xfffffff000000000)) ) +#else +# define IPRT_DEBUG_SEMS_ADDRESS(addr) ( (long)(addr) ) +#endif + +/** + * Puts semaphore info into the task_struct::comm field if IPRT_DEBUG_SEMS is + * defined. + */ +#ifdef IPRT_DEBUG_SEMS +# define IPRT_DEBUG_SEMS_STATE(pThis, chState) \ + snprintf(current->comm, sizeof(current->comm), "%c%lx", (chState), IPRT_DEBUG_SEMS_ADDRESS(pThis)); +#else +# define IPRT_DEBUG_SEMS_STATE(pThis, chState) do { } while (0) +#endif + +/** + * Puts semaphore info into the task_struct::comm field if IPRT_DEBUG_SEMS is + * defined. + */ +#ifdef IPRT_DEBUG_SEMS +# define IPRT_DEBUG_SEMS_STATE_RC(pThis, chState, rc) \ + snprintf(current->comm, sizeof(current->comm), "%c%lx:%d", (chState), IPRT_DEBUG_SEMS_ADDRESS(pThis), rc); +#else +# define IPRT_DEBUG_SEMS_STATE_RC(pThis, chState, rc) do { } while (0) +#endif + +/** @name Macros for preserving EFLAGS.AC on 3.19+/amd64 paranoid. + * The AMD 64 switch_to in macro in arch/x86/include/asm/switch_to.h stopped + * restoring flags. + * @{ */ +#if defined(CONFIG_X86_SMAP) || defined(RT_STRICT) || defined(IPRT_WITH_EFLAGS_AC_PRESERVING) +# include +# define IPRT_X86_EFL_AC RT_BIT(18) +# define IPRT_LINUX_SAVE_EFL_AC() RTCCUINTREG fSavedEfl = ASMGetFlags() +# define IPRT_LINUX_RESTORE_EFL_AC() ASMSetFlags(fSavedEfl) +# define IPRT_LINUX_RESTORE_EFL_ONLY_AC() ASMChangeFlags(~IPRT_X86_EFL_AC, fSavedEfl & IPRT_X86_EFL_AC) +#else +# define IPRT_LINUX_SAVE_EFL_AC() do { } while (0) +# define IPRT_LINUX_RESTORE_EFL_AC() do { } while (0) +# define IPRT_LINUX_RESTORE_EFL_ONLY_AC() do { } while (0) +#endif +/** @} */ + +/* + * There are some conflicting defines in iprt/param.h, sort them out here. + */ +#ifndef ___iprt_param_h +# undef PAGE_SIZE +# undef PAGE_OFFSET_MASK +# include +#endif + +/* + * Some global indicator macros. + */ +/** @def IPRT_LINUX_HAS_HRTIMER + * Whether the kernel support high resolution timers (Linux kernel versions + * 2.6.28 and later (hrtimer_add_expires_ns() & schedule_hrtimeout). */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) +# define IPRT_LINUX_HAS_HRTIMER +#endif + +/* + * Workqueue stuff, see initterm-r0drv-linux.c. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +typedef struct work_struct RTR0LNXWORKQUEUEITEM; +#else +typedef struct tq_struct RTR0LNXWORKQUEUEITEM; +#endif +DECLHIDDEN(void) rtR0LnxWorkqueuePush(RTR0LNXWORKQUEUEITEM *pWork, void (*pfnWorker)(RTR0LNXWORKQUEUEITEM *)); +DECLHIDDEN(void) rtR0LnxWorkqueueFlush(void); + + +#endif --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/thread-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/thread-r0drv-linux.c @@ -0,0 +1,236 @@ +/* $Id: thread-r0drv-linux.c $ */ +/** @file + * IPRT - Threads, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 28) || defined(CONFIG_X86_SMAP) +# include +#endif +#include +#include +#include + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#ifndef CONFIG_PREEMPT +/** Per-cpu preemption counters. */ +static int32_t volatile g_acPreemptDisabled[NR_CPUS]; +#endif + + +RTDECL(RTNATIVETHREAD) RTThreadNativeSelf(void) +{ + return (RTNATIVETHREAD)current; +} +RT_EXPORT_SYMBOL(RTThreadNativeSelf); + + +static int rtR0ThreadLnxSleepCommon(RTMSINTERVAL cMillies) +{ + IPRT_LINUX_SAVE_EFL_AC(); + long cJiffies = msecs_to_jiffies(cMillies); + set_current_state(TASK_INTERRUPTIBLE); + cJiffies = schedule_timeout(cJiffies); + IPRT_LINUX_RESTORE_EFL_AC(); + if (!cJiffies) + return VINF_SUCCESS; + return VERR_INTERRUPTED; +} + + +RTDECL(int) RTThreadSleep(RTMSINTERVAL cMillies) +{ + return rtR0ThreadLnxSleepCommon(cMillies); +} +RT_EXPORT_SYMBOL(RTThreadSleep); + + +RTDECL(int) RTThreadSleepNoLog(RTMSINTERVAL cMillies) +{ + return rtR0ThreadLnxSleepCommon(cMillies); +} +RT_EXPORT_SYMBOL(RTThreadSleepNoLog); + + +RTDECL(bool) RTThreadYield(void) +{ + IPRT_LINUX_SAVE_EFL_AC(); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + yield(); +#else + /** @todo r=ramshankar: Can we use cond_resched() instead? */ + set_current_state(TASK_RUNNING); + sys_sched_yield(); + schedule(); +#endif + IPRT_LINUX_RESTORE_EFL_AC(); + return true; +} +RT_EXPORT_SYMBOL(RTThreadYield); + + +RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread) +{ +#ifdef CONFIG_PREEMPT + Assert(hThread == NIL_RTTHREAD); +# ifdef preemptible + return preemptible(); +# else + return preempt_count() == 0 && !in_atomic() && !irqs_disabled(); +# endif +#else + int32_t c; + + Assert(hThread == NIL_RTTHREAD); + c = g_acPreemptDisabled[smp_processor_id()]; + AssertMsg(c >= 0 && c < 32, ("%d\n", c)); + if (c != 0) + return false; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 32) + if (in_atomic()) + return false; +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 28) + if (irqs_disabled()) + return false; +# else + if (!ASMIntAreEnabled()) + return false; +# endif + return true; +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsEnabled); + + +RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread) +{ + Assert(hThread == NIL_RTTHREAD); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) + return !!test_tsk_thread_flag(current, TIF_NEED_RESCHED); + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + return !!need_resched(); + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 110) + return current->need_resched != 0; + +#else + return need_resched != 0; +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPending); + + +RTDECL(bool) RTThreadPreemptIsPendingTrusty(void) +{ + /* yes, RTThreadPreemptIsPending is reliable. */ + return true; +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPendingTrusty); + + +RTDECL(bool) RTThreadPreemptIsPossible(void) +{ + /** @todo r=ramshankar: What about CONFIG_PREEMPT_VOLUNTARY? That can preempt + * too but does so in voluntarily in explicit preemption points. */ +#ifdef CONFIG_PREEMPT + return true; /* yes, kernel preemption is possible. */ +#else + return false; /* no kernel preemption */ +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPossible); + + +RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState) +{ +#ifdef CONFIG_PREEMPT + AssertPtr(pState); + Assert(pState->u32Reserved == 0); + pState->u32Reserved = 42; + /* This ASSUMES that CONFIG_PREEMPT_COUNT is always defined with CONFIG_PREEMPT. */ + preempt_disable(); + RT_ASSERT_PREEMPT_CPUID_DISABLE(pState); + +#else /* !CONFIG_PREEMPT */ + int32_t c; + AssertPtr(pState); + Assert(pState->u32Reserved == 0); + + /* Do our own accounting. */ + c = ASMAtomicIncS32(&g_acPreemptDisabled[smp_processor_id()]); + AssertMsg(c > 0 && c < 32, ("%d\n", c)); + pState->u32Reserved = c; + RT_ASSERT_PREEMPT_CPUID_DISABLE(pState); +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptDisable); + + +RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState) +{ +#ifdef CONFIG_PREEMPT + IPRT_LINUX_SAVE_EFL_AC(); /* paranoia */ + AssertPtr(pState); + Assert(pState->u32Reserved == 42); + RT_ASSERT_PREEMPT_CPUID_RESTORE(pState); + preempt_enable(); + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); /* paranoia */ + +#else + int32_t volatile *pc; + AssertPtr(pState); + AssertMsg(pState->u32Reserved > 0 && pState->u32Reserved < 32, ("%d\n", pState->u32Reserved)); + RT_ASSERT_PREEMPT_CPUID_RESTORE(pState); + + /* Do our own accounting. */ + pc = &g_acPreemptDisabled[smp_processor_id()]; + AssertMsg(pState->u32Reserved == (uint32_t)*pc, ("u32Reserved=%d *pc=%d \n", pState->u32Reserved, *pc)); + ASMAtomicUoWriteS32(pc, pState->u32Reserved - 1); +#endif + pState->u32Reserved = 0; +} +RT_EXPORT_SYMBOL(RTThreadPreemptRestore); + + +RTDECL(bool) RTThreadIsInInterrupt(RTTHREAD hThread) +{ + Assert(hThread == NIL_RTTHREAD); NOREF(hThread); + + return in_interrupt() != 0; +} +RT_EXPORT_SYMBOL(RTThreadIsInInterrupt); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/thread2-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/thread2-r0drv-linux.c @@ -0,0 +1,158 @@ +/* $Id: thread2-r0drv-linux.c $ */ +/** @file + * IPRT - Threads (Part 2), Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/thread.h" + + +RTDECL(RTTHREAD) RTThreadSelf(void) +{ + return rtThreadGetByNative((RTNATIVETHREAD)current); +} + + +DECLHIDDEN(int) rtThreadNativeInit(void) +{ + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT pThread, RTTHREADTYPE enmType) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + /* See comment near MAX_RT_PRIO in linux/sched.h for details on + sched_priority. */ + int iSchedClass = SCHED_NORMAL; + struct sched_param Param = { .sched_priority = MAX_PRIO - 1 }; + switch (enmType) + { + case RTTHREADTYPE_INFREQUENT_POLLER: + Param.sched_priority = MAX_RT_PRIO + 5; + break; + + case RTTHREADTYPE_EMULATION: + Param.sched_priority = MAX_RT_PRIO + 4; + break; + + case RTTHREADTYPE_DEFAULT: + Param.sched_priority = MAX_RT_PRIO + 3; + break; + + case RTTHREADTYPE_MSG_PUMP: + Param.sched_priority = MAX_RT_PRIO + 2; + break; + + case RTTHREADTYPE_IO: + iSchedClass = SCHED_FIFO; + Param.sched_priority = MAX_RT_PRIO - 1; + break; + + case RTTHREADTYPE_TIMER: + iSchedClass = SCHED_FIFO; + Param.sched_priority = 1; /* not 0 just in case */ + break; + + default: + AssertMsgFailed(("enmType=%d\n", enmType)); + return VERR_INVALID_PARAMETER; + } + + sched_setscheduler(current, iSchedClass, &Param); +#endif + + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread) +{ + return VERR_NOT_IMPLEMENTED; +} + + +DECLHIDDEN(void) rtThreadNativeWaitKludge(PRTTHREADINT pThread) +{ + /** @todo fix RTThreadWait/RTR0Term race on linux. */ + RTThreadSleep(1); NOREF(pThread); +} + + +DECLHIDDEN(void) rtThreadNativeDestroy(PRTTHREADINT pThread) +{ + NOREF(pThread); +} + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 4) +/** + * Native kernel thread wrapper function. + * + * This will forward to rtThreadMain and do termination upon return. + * + * @param pvArg Pointer to the argument package. + */ +static int rtThreadNativeMain(void *pvArg) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pvArg; + + rtThreadMain(pThread, (RTNATIVETHREAD)current, &pThread->szName[0]); + return 0; +} +#endif + + +DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 4) + struct task_struct *NativeThread; + IPRT_LINUX_SAVE_EFL_AC(); + + RT_ASSERT_PREEMPTIBLE(); + + NativeThread = kthread_run(rtThreadNativeMain, pThreadInt, "iprt-%s", pThreadInt->szName); + + if (!IS_ERR(NativeThread)) + { + *pNativeThread = (RTNATIVETHREAD)NativeThread; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_GENERAL_FAILURE; +#else + return VERR_NOT_IMPLEMENTED; +#endif +} + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/time-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/time-r0drv-linux.c @@ -0,0 +1,187 @@ +/* $Id: time-r0drv-linux.c $ */ +/** @file + * IPRT - Time, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_TIME +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include + + + +DECLINLINE(uint64_t) rtTimeGetSystemNanoTS(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) /* This must match timer-r0drv-linux.c! */ + /* + * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. + */ + uint64_t u64; + struct timespec Ts; + ktime_get_ts(&Ts); + u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; + return u64; + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 60) + /* + * Seems there is no way of getting to the exact source of + * sys_clock_gettime(CLOCK_MONOTONIC, &ts) here, I think. But + * 64-bit jiffies adjusted for the initial value should be pretty + * much the same I hope. + */ + uint64_t u64 = get_jiffies_64(); +# ifdef INITIAL_JIFFIES + u64 += INITIAL_JIFFIES; +# endif + u64 *= TICK_NSEC; + return u64; + +#else /* < 2.5.60 */ +# if BITS_PER_LONG >= 64 + /* + * This is the same as above, except that there is no get_jiffies_64() + * here and we rely on long, and therefor jiffies, being 64-bit instead. + */ + uint64_t u64 = jiffies; +# ifdef INITIAL_JIFFIES + u64 += INITIAL_JIFFIES; +# endif + u64 *= TICK_NSEC; + return u64; + +# else /* 32 bit jiffies */ + /* + * We'll have to try track jiffy rollovers here or we'll be + * in trouble every time it flips. + * + * The high dword of the s_u64Last is the rollover count, the + * low dword is the previous jiffies. Updating is done by + * atomic compare & exchange of course. + */ + static uint64_t volatile s_u64Last = 0; + uint64_t u64; + + for (;;) + { + uint64_t u64NewLast; + int32_t iDelta; + uint32_t cRollovers; + uint32_t u32LastJiffies; + + /* sample the values */ + unsigned long ulNow = jiffies; + uint64_t u64Last = s_u64Last; + if (ulNow != jiffies) + continue; /* try again */ +# ifdef INITIAL_JIFFIES + ulNow += INITIAL_JIFFIES; +# endif + + u32LastJiffies = (uint32_t)u64Last; + cRollovers = u64Last >> 32; + + /* + * Check for rollover and update the static last value. + * + * We have to make sure we update it successfully to rule out + * an underrun because of racing someone. + */ + iDelta = ulNow - u32LastJiffies; + if (iDelta < 0) + { + cRollovers++; + u64NewLast = RT_MAKE_U64(ulNow, cRollovers); + if (!ASMAtomicCmpXchgU64(&s_u64Last, u64NewLast, u64Last)) + continue; /* race, try again */ + } + else + { + u64NewLast = RT_MAKE_U64(ulNow, cRollovers); + ASMAtomicCmpXchgU64(&s_u64Last, u64NewLast, u64Last); + } + + /* calculate the return value */ + u64 = ulNow; + u64 *= TICK_NSEC; + u64 += cRollovers * (_4G * TICK_NSEC); + break; + } + + return u64; +# endif /* 32 bit jiffies */ +#endif /* < 2.5.60 */ +} + + +RTDECL(uint64_t) RTTimeNanoTS(void) +{ + return rtTimeGetSystemNanoTS(); +} +RT_EXPORT_SYMBOL(RTTimeNanoTS); + + +RTDECL(uint64_t) RTTimeMilliTS(void) +{ + return rtTimeGetSystemNanoTS() / RT_NS_1MS; +} +RT_EXPORT_SYMBOL(RTTimeMilliTS); + + +RTDECL(uint64_t) RTTimeSystemNanoTS(void) +{ + return rtTimeGetSystemNanoTS(); +} +RT_EXPORT_SYMBOL(RTTimeSystemNanoTS); + + +RTDECL(uint64_t) RTTimeSystemMilliTS(void) +{ + return rtTimeGetSystemNanoTS() / RT_NS_1MS; +} +RT_EXPORT_SYMBOL(RTTimeSystemMilliTS); + + +RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime) +{ + IPRT_LINUX_SAVE_EFL_AC(); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) + struct timespec Ts; + ktime_get_real_ts(&Ts); + IPRT_LINUX_RESTORE_EFL_AC(); + return RTTimeSpecSetTimespec(pTime, &Ts); + +#else /* < 2.6.16 */ + struct timeval Tv; + do_gettimeofday(&Tv); + IPRT_LINUX_RESTORE_EFL_AC(); + return RTTimeSpecSetTimeval(pTime, &Tv); +#endif +} +RT_EXPORT_SYMBOL(RTTimeNow); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/timer-r0drv-linux.c +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/timer-r0drv-linux.c @@ -0,0 +1,1653 @@ +/* $Id: timer-r0drv-linux.c $ */ +/** @file + * IPRT - Timers, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "internal/magics.h" + +/** @def RTTIMER_LINUX_WITH_HRTIMER + * Whether to use high resolution timers. */ +#if !defined(RTTIMER_LINUX_WITH_HRTIMER) \ + && defined(IPRT_LINUX_HAS_HRTIMER) +# define RTTIMER_LINUX_WITH_HRTIMER +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) +# define mod_timer_pinned mod_timer +# define HRTIMER_MODE_ABS_PINNED HRTIMER_MODE_ABS +#endif + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Timer state machine. + * + * This is used to try handle the issues with MP events and + * timers that runs on all CPUs. It's relatively nasty :-/ + */ +typedef enum RTTIMERLNXSTATE +{ + /** Stopped. */ + RTTIMERLNXSTATE_STOPPED = 0, + /** Transient state; next ACTIVE. */ + RTTIMERLNXSTATE_STARTING, + /** Transient state; next ACTIVE. (not really necessary) */ + RTTIMERLNXSTATE_MP_STARTING, + /** Active. */ + RTTIMERLNXSTATE_ACTIVE, + /** Active and in callback; next ACTIVE, STOPPED or CALLBACK_DESTROYING. */ + RTTIMERLNXSTATE_CALLBACK, + /** Stopped while in the callback; next STOPPED. */ + RTTIMERLNXSTATE_CB_STOPPING, + /** Restarted while in the callback; next ACTIVE, STOPPED, DESTROYING. */ + RTTIMERLNXSTATE_CB_RESTARTING, + /** The callback shall destroy the timer; next STOPPED. */ + RTTIMERLNXSTATE_CB_DESTROYING, + /** Transient state; next STOPPED. */ + RTTIMERLNXSTATE_STOPPING, + /** Transient state; next STOPPED. */ + RTTIMERLNXSTATE_MP_STOPPING, + /** The usual 32-bit hack. */ + RTTIMERLNXSTATE_32BIT_HACK = 0x7fffffff +} RTTIMERLNXSTATE; + + +/** + * A Linux sub-timer. + */ +typedef struct RTTIMERLNXSUBTIMER +{ + /** Timer specific data. */ + union + { +#if defined(RTTIMER_LINUX_WITH_HRTIMER) + /** High resolution timer. */ + struct + { + /** The linux timer structure. */ + struct hrtimer LnxTimer; + } Hr; +#endif + /** Standard timer. */ + struct + { + /** The linux timer structure. */ + struct timer_list LnxTimer; + /** The start of the current run (ns). + * This is used to calculate when the timer ought to fire the next time. */ + uint64_t u64NextTS; + /** The u64NextTS in jiffies. */ + unsigned long ulNextJiffies; + /** Set when starting or changing the timer so that u64StartTs + * and u64NextTS gets reinitialized (eliminating some jitter). */ + bool volatile fFirstAfterChg; + } Std; + } u; + /** The current tick number. */ + uint64_t iTick; + /** Restart the single shot timer at this specific time. + * Used when a single shot timer is restarted from the callback. */ + uint64_t volatile uNsRestartAt; + /** Pointer to the parent timer. */ + PRTTIMER pParent; + /** The current sub-timer state. */ + RTTIMERLNXSTATE volatile enmState; +} RTTIMERLNXSUBTIMER; +/** Pointer to a linux sub-timer. */ +typedef RTTIMERLNXSUBTIMER *PRTTIMERLNXSUBTIMER; + + +/** + * The internal representation of an Linux timer handle. + */ +typedef struct RTTIMER +{ + /** Magic. + * This is RTTIMER_MAGIC, but changes to something else before the timer + * is destroyed to indicate clearly that thread should exit. */ + uint32_t volatile u32Magic; + /** Spinlock synchronizing the fSuspended and MP event handling. + * This is NIL_RTSPINLOCK if cCpus == 1. */ + RTSPINLOCK hSpinlock; + /** Flag indicating that the timer is suspended. */ + bool volatile fSuspended; + /** Whether the timer must run on one specific CPU or not. */ + bool fSpecificCpu; +#ifdef CONFIG_SMP + /** Whether the timer must run on all CPUs or not. */ + bool fAllCpus; +#endif /* else: All -> specific on non-SMP kernels */ + /** Whether it is a high resolution timer or a standard one. */ + bool fHighRes; + /** The id of the CPU it must run on if fSpecificCpu is set. */ + RTCPUID idCpu; + /** The number of CPUs this timer should run on. */ + RTCPUID cCpus; + /** Callback. */ + PFNRTTIMER pfnTimer; + /** User argument. */ + void *pvUser; + /** The timer interval. 0 if one-shot. */ + uint64_t volatile u64NanoInterval; + /** This is set to the number of jiffies between ticks if the interval is + * an exact number of jiffies. (Standard timers only.) */ + unsigned long volatile cJiffies; + /** The change interval spinlock for standard timers only. */ + spinlock_t ChgIntLock; + /** Workqueue item for delayed destruction. */ + RTR0LNXWORKQUEUEITEM DtorWorkqueueItem; + /** Sub-timers. + * Normally there is just one, but for RTTIMER_FLAGS_CPU_ALL this will contain + * an entry for all possible cpus. In that case the index will be the same as + * for the RTCpuSet. */ + RTTIMERLNXSUBTIMER aSubTimers[1]; +} RTTIMER; + + +/** + * A rtTimerLinuxStartOnCpu and rtTimerLinuxStartOnCpu argument package. + */ +typedef struct RTTIMERLINUXSTARTONCPUARGS +{ + /** The current time (RTTimeSystemNanoTS). */ + uint64_t u64Now; + /** When to start firing (delta). */ + uint64_t u64First; +} RTTIMERLINUXSTARTONCPUARGS; +/** Pointer to a rtTimerLinuxStartOnCpu argument package. */ +typedef RTTIMERLINUXSTARTONCPUARGS *PRTTIMERLINUXSTARTONCPUARGS; + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +#ifdef CONFIG_SMP +static DECLCALLBACK(void) rtTimerLinuxMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); +#endif + +#if 0 +#define DEBUG_HACKING +#include +#include +static void myLogBackdoorPrintf(const char *pszFormat, ...) +{ + char szTmp[256]; + va_list args; + size_t cb; + + cb = RTStrPrintf(szTmp, sizeof(szTmp) - 10, "%d: ", RTMpCpuId()); + va_start(args, pszFormat); + cb += RTStrPrintfV(&szTmp[cb], sizeof(szTmp) - cb, pszFormat, args); + va_end(args); + + ASMOutStrU8(0x504, (uint8_t *)&szTmp[0], cb); +} +# define RTAssertMsg1Weak(pszExpr, uLine, pszFile, pszFunction) \ + myLogBackdoorPrintf("\n!!Guest Assertion failed!!\n%s(%d) %s\n%s\n", uLine, pszFile, pszFunction, (pszExpr)) +# define RTAssertMsg2Weak myLogBackdoorPrintf +# define RTTIMERLNX_LOG(a) myLogBackdoorPrintf a +#else +# define RTTIMERLNX_LOG(a) do { } while (0) +#endif + +/** + * Sets the state. + */ +DECLINLINE(void) rtTimerLnxSetState(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState) +{ +#ifdef DEBUG_HACKING + RTTIMERLNX_LOG(("set %d -> %d\n", *penmState, enmNewState)); +#endif + ASMAtomicWriteU32((uint32_t volatile *)penmState, enmNewState); +} + + +/** + * Sets the state if it has a certain value. + * + * @return true if xchg was done. + * @return false if xchg wasn't done. + */ +#ifdef DEBUG_HACKING +#define rtTimerLnxCmpXchgState(penmState, enmNewState, enmCurState) rtTimerLnxCmpXchgStateDebug(penmState, enmNewState, enmCurState, __LINE__) +static bool rtTimerLnxCmpXchgStateDebug(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState, + RTTIMERLNXSTATE enmCurState, uint32_t uLine) +{ + RTTIMERLNXSTATE enmOldState = enmCurState; + bool fRc = ASMAtomicCmpXchgExU32((uint32_t volatile *)penmState, enmNewState, enmCurState, (uint32_t *)&enmOldState); + RTTIMERLNX_LOG(("cxg %d -> %d - %d at %u\n", enmOldState, enmNewState, fRc, uLine)); + return fRc; +} +#else +DECLINLINE(bool) rtTimerLnxCmpXchgState(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState, + RTTIMERLNXSTATE enmCurState) +{ + return ASMAtomicCmpXchgU32((uint32_t volatile *)penmState, enmNewState, enmCurState); +} +#endif + + +/** + * Gets the state. + */ +DECLINLINE(RTTIMERLNXSTATE) rtTimerLnxGetState(RTTIMERLNXSTATE volatile *penmState) +{ + return (RTTIMERLNXSTATE)ASMAtomicUoReadU32((uint32_t volatile *)penmState); +} + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + +/** + * Converts a nano second time stamp to ktime_t. + * + * ASSUMES RTTimeSystemNanoTS() is implemented using ktime_get_ts(). + * + * @returns ktime_t. + * @param cNanoSecs Nanoseconds. + */ +DECLINLINE(ktime_t) rtTimerLnxNanoToKt(uint64_t cNanoSecs) +{ + /* With some luck the compiler optimizes the division out of this... (Bet it doesn't.) */ + return ktime_set(cNanoSecs / 1000000000, cNanoSecs % 1000000000); +} + +/** + * Converts ktime_t to a nano second time stamp. + * + * ASSUMES RTTimeSystemNanoTS() is implemented using ktime_get_ts(). + * + * @returns nano second time stamp. + * @param Kt ktime_t. + */ +DECLINLINE(uint64_t) rtTimerLnxKtToNano(ktime_t Kt) +{ + return ktime_to_ns(Kt); +} + +#endif /* RTTIMER_LINUX_WITH_HRTIMER */ + +/** + * Converts a nano second interval to jiffies. + * + * @returns Jiffies. + * @param cNanoSecs Nanoseconds. + */ +DECLINLINE(unsigned long) rtTimerLnxNanoToJiffies(uint64_t cNanoSecs) +{ + /* this can be made even better... */ + if (cNanoSecs > (uint64_t)TICK_NSEC * MAX_JIFFY_OFFSET) + return MAX_JIFFY_OFFSET; +# if ARCH_BITS == 32 + if (RT_LIKELY(cNanoSecs <= UINT32_MAX)) + return ((uint32_t)cNanoSecs + (TICK_NSEC-1)) / TICK_NSEC; +# endif + return (cNanoSecs + (TICK_NSEC-1)) / TICK_NSEC; +} + + +/** + * Starts a sub-timer (RTTimerStart). + * + * @param pSubTimer The sub-timer to start. + * @param u64Now The current timestamp (RTTimeSystemNanoTS()). + * @param u64First The interval from u64Now to the first time the timer should fire. + * @param fPinned true = timer pinned to a specific CPU, + * false = timer can migrate between CPUs + * @param fHighRes Whether the user requested a high resolution timer or not. + * @param enmOldState The old timer state. + */ +static void rtTimerLnxStartSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, uint64_t u64Now, uint64_t u64First, + bool fPinned, bool fHighRes) +{ + /* + * Calc when it should start firing. + */ + uint64_t u64NextTS = u64Now + u64First; + if (!fHighRes) + pSubTimer->u.Std.u64NextTS = u64NextTS; + RTTIMERLNX_LOG(("startsubtimer %p\n", pSubTimer->pParent)); + + pSubTimer->iTick = 0; + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (fHighRes) + hrtimer_start(&pSubTimer->u.Hr.LnxTimer, rtTimerLnxNanoToKt(u64NextTS), + fPinned ? HRTIMER_MODE_ABS_PINNED : HRTIMER_MODE_ABS); + else +#endif + { + unsigned long cJiffies = !u64First ? 0 : rtTimerLnxNanoToJiffies(u64First); + pSubTimer->u.Std.ulNextJiffies = jiffies + cJiffies; + pSubTimer->u.Std.fFirstAfterChg = true; +#ifdef CONFIG_SMP + if (fPinned) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + } + + /* Be a bit careful here since we could be racing the callback. */ + if (!rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_STARTING)) + rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_MP_STARTING); +} + + +/** + * Stops a sub-timer (RTTimerStart and rtTimerLinuxMpEvent()). + * + * The caller has already changed the state, so we will not be in a callback + * situation wrt to the calling thread. + * + * @param pSubTimer The sub-timer. + * @param fHighRes Whether the user requested a high resolution timer or not. + */ +static void rtTimerLnxStopSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, bool fHighRes) +{ + RTTIMERLNX_LOG(("stopsubtimer %p %d\n", pSubTimer->pParent, fHighRes)); +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (fHighRes) + { + /* There is no equivalent to del_timer in the hrtimer API, + hrtimer_cancel() == del_timer_sync(). Just like the WARN_ON in + del_timer_sync() asserts, waiting for a timer callback to complete + is deadlock prone, so don't do it. */ + int rc = hrtimer_try_to_cancel(&pSubTimer->u.Hr.LnxTimer); + if (rc < 0) + { + hrtimer_start(&pSubTimer->u.Hr.LnxTimer, ktime_set(KTIME_SEC_MAX, 0), HRTIMER_MODE_ABS); + hrtimer_try_to_cancel(&pSubTimer->u.Hr.LnxTimer); + } + } + else +#endif + del_timer(&pSubTimer->u.Std.LnxTimer); + + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); +} + + +/** + * Used by RTTimerDestroy and rtTimerLnxCallbackDestroy to do the actual work. + * + * @param pTimer The timer in question. + */ +static void rtTimerLnxDestroyIt(PRTTIMER pTimer) +{ + RTSPINLOCK hSpinlock = pTimer->hSpinlock; + RTCPUID iCpu; + Assert(pTimer->fSuspended); + RTTIMERLNX_LOG(("destroyit %p\n", pTimer)); + + /* + * Remove the MP notifications first because it'll reduce the risk of + * us overtaking any MP event that might theoretically be racing us here. + */ +#ifdef CONFIG_SMP + if ( pTimer->cCpus > 1 + && hSpinlock != NIL_RTSPINLOCK) + { + int rc = RTMpNotificationDeregister(rtTimerLinuxMpEvent, pTimer); + AssertRC(rc); + } +#endif /* CONFIG_SMP */ + + /* + * Invalidate the handle. + */ + ASMAtomicWriteU32(&pTimer->u32Magic, ~RTTIMER_MAGIC); + + /* + * Make sure all timers have stopped executing since we're stopping them in + * an asynchronous manner up in rtTimerLnxStopSubTimer. + */ + iCpu = pTimer->cCpus; + while (iCpu-- > 0) + { +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (pTimer->fHighRes) + hrtimer_cancel(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer); + else +#endif + del_timer_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); + } + + /* + * Finally, free the resources. + */ + RTMemFreeEx(pTimer, RT_OFFSETOF(RTTIMER, aSubTimers[pTimer->cCpus])); + if (hSpinlock != NIL_RTSPINLOCK) + RTSpinlockDestroy(hSpinlock); +} + + +/** + * Workqueue callback (no DECLCALLBACK!) for deferred destruction. + * + * @param pWork Pointer to the DtorWorkqueueItem member of our timer + * structure. + */ +static void rtTimerLnxDestroyDeferred(RTR0LNXWORKQUEUEITEM *pWork) +{ + PRTTIMER pTimer = RT_FROM_MEMBER(pWork, RTTIMER, DtorWorkqueueItem); + rtTimerLnxDestroyIt(pTimer); +} + + +/** + * Called when the timer was destroyed by the callback function. + * + * @param pTimer The timer. + * @param pSubTimer The sub-timer which we're handling, the state of this + * will be RTTIMERLNXSTATE_CALLBACK_DESTROYING. + */ +static void rtTimerLnxCallbackDestroy(PRTTIMER pTimer, PRTTIMERLNXSUBTIMER pSubTimer) +{ + /* + * If it's an omni timer, the last dude does the destroying. + */ + if (pTimer->cCpus > 1) + { + uint32_t iCpu = pTimer->cCpus; + RTSpinlockAcquire(pTimer->hSpinlock); + + Assert(pSubTimer->enmState == RTTIMERLNXSTATE_CB_DESTROYING); + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); + + while (iCpu-- > 0) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) != RTTIMERLNXSTATE_STOPPED) + { + RTSpinlockRelease(pTimer->hSpinlock); + return; + } + + RTSpinlockRelease(pTimer->hSpinlock); + } + + /* + * Destroying a timer from the callback is unsafe since the callout code + * might be touching the timer structure upon return (hrtimer does!). So, + * we have to defer the actual destruction to the IRPT workqueue. + */ + rtR0LnxWorkqueuePush(&pTimer->DtorWorkqueueItem, rtTimerLnxDestroyDeferred); +} + + +#ifdef CONFIG_SMP +/** + * Deal with a sub-timer that has migrated. + * + * @param pTimer The timer. + * @param pSubTimer The sub-timer. + */ +static void rtTimerLnxCallbackHandleMigration(PRTTIMER pTimer, PRTTIMERLNXSUBTIMER pSubTimer) +{ + RTTIMERLNXSTATE enmState; + if (pTimer->cCpus > 1) + RTSpinlockAcquire(pTimer->hSpinlock); + + do + { + enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_STOPPING: + case RTTIMERLNXSTATE_MP_STOPPING: + enmState = RTTIMERLNXSTATE_STOPPED; + case RTTIMERLNXSTATE_STOPPED: + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + case RTTIMERLNXSTATE_ACTIVE: + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, enmState)) + enmState = RTTIMERLNXSTATE_STOPPED; + break; + + case RTTIMERLNXSTATE_CB_DESTROYING: + { + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); + + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return; + } + } + } while (enmState != RTTIMERLNXSTATE_STOPPED); + + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); +} +#endif /* CONFIG_SMP */ + + +/** + * The slow path of rtTimerLnxChangeToCallbackState. + * + * @returns true if changed successfully, false if not. + * @param pSubTimer The sub-timer. + */ +static bool rtTimerLnxChangeToCallbackStateSlow(PRTTIMERLNXSUBTIMER pSubTimer) +{ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_ACTIVE: + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CALLBACK, enmState)) + return true; + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("%d\n", enmState)); + default: + return false; + } + ASMNopPause(); + } +} + + +/** + * Tries to change the sub-timer state to 'callback'. + * + * @returns true if changed successfully, false if not. + * @param pSubTimer The sub-timer. + */ +DECLINLINE(bool) rtTimerLnxChangeToCallbackState(PRTTIMERLNXSUBTIMER pSubTimer) +{ + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CALLBACK, RTTIMERLNXSTATE_ACTIVE))) + return true; + return rtTimerLnxChangeToCallbackStateSlow(pSubTimer); +} + + +#ifdef RTTIMER_LINUX_WITH_HRTIMER +/** + * Timer callback function for high resolution timers. + * + * @returns HRTIMER_NORESTART or HRTIMER_RESTART depending on whether it's a + * one-shot or interval timer. + * @param pHrTimer Pointer to the sub-timer structure. + */ +static enum hrtimer_restart rtTimerLinuxHrCallback(struct hrtimer *pHrTimer) +{ + PRTTIMERLNXSUBTIMER pSubTimer = RT_FROM_MEMBER(pHrTimer, RTTIMERLNXSUBTIMER, u.Hr.LnxTimer); + PRTTIMER pTimer = pSubTimer->pParent; + + + RTTIMERLNX_LOG(("hrcallback %p\n", pTimer)); + if (RT_UNLIKELY(!rtTimerLnxChangeToCallbackState(pSubTimer))) + return HRTIMER_NORESTART; + +#ifdef CONFIG_SMP + /* + * Check for unwanted migration. + */ + if (pTimer->fAllCpus || pTimer->fSpecificCpu) + { + RTCPUID idCpu = RTMpCpuId(); + if (RT_UNLIKELY( pTimer->fAllCpus + ? (RTCPUID)(pSubTimer - &pTimer->aSubTimers[0]) != idCpu + : pTimer->idCpu != idCpu)) + { + rtTimerLnxCallbackHandleMigration(pTimer, pSubTimer); + return HRTIMER_NORESTART; + } + } +#endif + + if (pTimer->u64NanoInterval) + { + /* + * Periodic timer, run it and update the native timer afterwards so + * we can handle RTTimerStop and RTTimerChangeInterval from the + * callback as well as a racing control thread. + */ + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + hrtimer_add_expires_ns(&pSubTimer->u.Hr.LnxTimer, ASMAtomicReadU64(&pTimer->u64NanoInterval)); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CALLBACK))) + return HRTIMER_RESTART; + } + else + { + /* + * One shot timer (no omni), stop it before dispatching it. + * Allow RTTimerStart as well as RTTimerDestroy to be called from + * the callback. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CALLBACK))) + return HRTIMER_NORESTART; + } + + /* + * Some state change occurred while we were in the callback routine. + */ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CB_DESTROYING: + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return HRTIMER_NORESTART; + + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CB_STOPPING)) + return HRTIMER_NORESTART; + break; + + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CB_RESTARTING)) + { + pSubTimer->iTick = 0; + hrtimer_set_expires(&pSubTimer->u.Hr.LnxTimer, rtTimerLnxNanoToKt(pSubTimer->uNsRestartAt)); + return HRTIMER_RESTART; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + return HRTIMER_NORESTART; + } + ASMNopPause(); + } +} +#endif /* RTTIMER_LINUX_WITH_HRTIMER */ + + +/** + * Timer callback function for standard timers. + * + * @param ulUser Address of the sub-timer structure. + */ +static void rtTimerLinuxStdCallback(unsigned long ulUser) +{ + PRTTIMERLNXSUBTIMER pSubTimer = (PRTTIMERLNXSUBTIMER)ulUser; + PRTTIMER pTimer = pSubTimer->pParent; + + RTTIMERLNX_LOG(("stdcallback %p\n", pTimer)); + if (RT_UNLIKELY(!rtTimerLnxChangeToCallbackState(pSubTimer))) + return; + +#ifdef CONFIG_SMP + /* + * Check for unwanted migration. + */ + if (pTimer->fAllCpus || pTimer->fSpecificCpu) + { + RTCPUID idCpu = RTMpCpuId(); + if (RT_UNLIKELY( pTimer->fAllCpus + ? (RTCPUID)(pSubTimer - &pTimer->aSubTimers[0]) != idCpu + : pTimer->idCpu != idCpu)) + { + rtTimerLnxCallbackHandleMigration(pTimer, pSubTimer); + return; + } + } +#endif + + if (pTimer->u64NanoInterval) + { + /* + * Interval timer, calculate the next timeout. + * + * The first time around, we'll re-adjust the u.Std.u64NextTS to + * try prevent some jittering if we were started at a bad time. + */ + const uint64_t iTick = ++pSubTimer->iTick; + uint64_t u64NanoInterval; + unsigned long cJiffies; + unsigned long flFlags; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + u64NanoInterval = pTimer->u64NanoInterval; + cJiffies = pTimer->cJiffies; + if (RT_UNLIKELY(pSubTimer->u.Std.fFirstAfterChg)) + { + pSubTimer->u.Std.fFirstAfterChg = false; + pSubTimer->u.Std.u64NextTS = RTTimeSystemNanoTS(); + pSubTimer->u.Std.ulNextJiffies = jiffies; + } + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + if (cJiffies) + { + pSubTimer->u.Std.ulNextJiffies += cJiffies; + /* Prevent overflows when the jiffies counter wraps around. + * Special thanks to Ken Preslan for helping debugging! */ + while (time_before(pSubTimer->u.Std.ulNextJiffies, jiffies)) + { + pSubTimer->u.Std.ulNextJiffies += cJiffies; + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + } + } + else + { + const uint64_t u64NanoTS = RTTimeSystemNanoTS(); + while (pSubTimer->u.Std.u64NextTS < u64NanoTS) + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + pSubTimer->u.Std.ulNextJiffies = jiffies + rtTimerLnxNanoToJiffies(pSubTimer->u.Std.u64NextTS - u64NanoTS); + } + + /* + * Run the timer and re-arm it unless the state changed . + * . + * We must re-arm it afterwards as we're not in a position to undo this . + * operation if for instance someone stopped or destroyed us while we . + * were in the callback. (Linux takes care of any races here.) + */ + pTimer->pfnTimer(pTimer, pTimer->pvUser, iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CALLBACK))) + { +#ifdef CONFIG_SMP + if (pTimer->fSpecificCpu || pTimer->fAllCpus) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + return; + } + } + else + { + /* + * One shot timer, stop it before dispatching it. + * Allow RTTimerStart as well as RTTimerDestroy to be called from + * the callback. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CALLBACK))) + return; + } + + /* + * Some state change occurred while we were in the callback routine. + */ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CB_DESTROYING: + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return; + + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CB_STOPPING)) + return; + break; + + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CB_RESTARTING)) + { + uint64_t u64NanoTS; + uint64_t u64NextTS; + unsigned long flFlags; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + u64NextTS = pSubTimer->uNsRestartAt; + u64NanoTS = RTTimeSystemNanoTS(); + pSubTimer->iTick = 0; + pSubTimer->u.Std.u64NextTS = u64NextTS; + pSubTimer->u.Std.fFirstAfterChg = true; + pSubTimer->u.Std.ulNextJiffies = u64NextTS > u64NanoTS + ? jiffies + rtTimerLnxNanoToJiffies(u64NextTS - u64NanoTS) + : jiffies; + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + +#ifdef CONFIG_SMP + if (pTimer->fSpecificCpu || pTimer->fAllCpus) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + return; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + return; + } + ASMNopPause(); + } +} + + +#ifdef CONFIG_SMP + +/** + * Per-cpu callback function (RTMpOnAll/RTMpOnSpecific). + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLnxStartAllOnCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + Assert(idCpu < pTimer->cCpus); + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[idCpu], pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); +} + + +/** + * Worker for RTTimerStart() that takes care of the ugly bits. + * + * @returns RTTimerStart() return value. + * @param pTimer The timer. + * @param pArgs The argument structure. + */ +static int rtTimerLnxOmniStart(PRTTIMER pTimer, PRTTIMERLINUXSTARTONCPUARGS pArgs) +{ + RTCPUID iCpu; + RTCPUSET OnlineSet; + RTCPUSET OnlineSet2; + int rc2; + + /* + * Prepare all the sub-timers for the startup and then flag the timer + * as a whole as non-suspended, make sure we get them all before + * clearing fSuspended as the MP handler will be waiting on this + * should something happen while we're looping. + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + /* Just make it a omni timer restriction that no stop/start races are allowed. */ + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) != RTTIMERLNXSTATE_STOPPED) + { + RTSpinlockRelease(pTimer->hSpinlock); + return VERR_TIMER_BUSY; + } + + do + { + RTMpGetOnlineSet(&OnlineSet); + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + { + Assert(pTimer->aSubTimers[iCpu].enmState != RTTIMERLNXSTATE_MP_STOPPING); + rtTimerLnxSetState(&pTimer->aSubTimers[iCpu].enmState, + RTCpuSetIsMember(&OnlineSet, iCpu) + ? RTTIMERLNXSTATE_STARTING + : RTTIMERLNXSTATE_STOPPED); + } + } while (!RTCpuSetIsEqual(&OnlineSet, RTMpGetOnlineSet(&OnlineSet2))); + + ASMAtomicWriteBool(&pTimer->fSuspended, false); + + RTSpinlockRelease(pTimer->hSpinlock); + + /* + * Start them (can't find any exported function that allows me to + * do this without the cross calls). + */ + pArgs->u64Now = RTTimeSystemNanoTS(); + rc2 = RTMpOnAll(rtTimerLnxStartAllOnCpu, pTimer, pArgs); + AssertRC(rc2); /* screw this if it fails. */ + + /* + * Reset the sub-timers who didn't start up (ALL CPUs case). + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_STARTING)) + { + /** @todo very odd case for a rainy day. Cpus that temporarily went offline while + * we were between calls needs to nudged as the MP handler will ignore events for + * them because of the STARTING state. This is an extremely unlikely case - not that + * that means anything in my experience... ;-) */ + RTTIMERLNX_LOG(("what!? iCpu=%u -> didn't start\n", iCpu)); + } + + RTSpinlockRelease(pTimer->hSpinlock); + + return VINF_SUCCESS; +} + + +/** + * Worker for RTTimerStop() that takes care of the ugly SMP bits. + * + * @returns true if there was any active callbacks, false if not. + * @param pTimer The timer (valid). + * @param fForDestroy Whether this is for RTTimerDestroy or not. + */ +static bool rtTimerLnxOmniStop(PRTTIMER pTimer, bool fForDestroy) +{ + bool fActiveCallbacks = false; + RTCPUID iCpu; + RTTIMERLNXSTATE enmState; + + + /* + * Mark the timer as suspended and flag all timers as stopping, except + * for those being stopped by an MP event. + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + ASMAtomicWriteBool(&pTimer->fSuspended, true); + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + { + for (;;) + { + enmState = rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState); + if ( enmState == RTTIMERLNXSTATE_STOPPED + || enmState == RTTIMERLNXSTATE_MP_STOPPING) + break; + if ( enmState == RTTIMERLNXSTATE_CALLBACK + || enmState == RTTIMERLNXSTATE_CB_STOPPING + || enmState == RTTIMERLNXSTATE_CB_RESTARTING) + { + Assert(enmState != RTTIMERLNXSTATE_CB_STOPPING || fForDestroy); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, + !fForDestroy ? RTTIMERLNXSTATE_CB_STOPPING : RTTIMERLNXSTATE_CB_DESTROYING, + enmState)) + { + fActiveCallbacks = true; + break; + } + } + else + { + Assert(enmState == RTTIMERLNXSTATE_ACTIVE); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_STOPPING, enmState)) + break; + } + ASMNopPause(); + } + } + + RTSpinlockRelease(pTimer->hSpinlock); + + /* + * Do the actual stopping. Fortunately, this doesn't require any IPIs. + * Unfortunately it cannot be done synchronously. + */ + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) == RTTIMERLNXSTATE_STOPPING) + rtTimerLnxStopSubTimer(&pTimer->aSubTimers[iCpu], pTimer->fHighRes); + + return fActiveCallbacks; +} + + +/** + * Per-cpu callback function (RTMpOnSpecific) used by rtTimerLinuxMpEvent() + * to start a sub-timer on a cpu that just have come online. + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLinuxMpStartOnCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + RTSPINLOCK hSpinlock; + Assert(idCpu < pTimer->cCpus); + + /* + * We have to be kind of careful here as we might be racing RTTimerStop + * (and/or RTTimerDestroy, thus the paranoia. + */ + hSpinlock = pTimer->hSpinlock; + if ( hSpinlock != NIL_RTSPINLOCK + && pTimer->u32Magic == RTTIMER_MAGIC) + { + RTSpinlockAcquire(hSpinlock); + + if ( !ASMAtomicUoReadBool(&pTimer->fSuspended) + && pTimer->u32Magic == RTTIMER_MAGIC) + { + /* We're sane and the timer is not suspended yet. */ + PRTTIMERLNXSUBTIMER pSubTimer = &pTimer->aSubTimers[idCpu]; + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STARTING, RTTIMERLNXSTATE_STOPPED)) + rtTimerLnxStartSubTimer(pSubTimer, pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); + } + + RTSpinlockRelease(hSpinlock); + } +} + + +/** + * MP event notification callback. + * + * @param enmEvent The event. + * @param idCpu The cpu it applies to. + * @param pvUser The timer. + */ +static DECLCALLBACK(void) rtTimerLinuxMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser) +{ + PRTTIMER pTimer = (PRTTIMER)pvUser; + PRTTIMERLNXSUBTIMER pSubTimer = &pTimer->aSubTimers[idCpu]; + RTSPINLOCK hSpinlock; + + Assert(idCpu < pTimer->cCpus); + + /* + * Some initial paranoia. + */ + if (pTimer->u32Magic != RTTIMER_MAGIC) + return; + hSpinlock = pTimer->hSpinlock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + + RTSpinlockAcquire(hSpinlock); + + /* Is it active? */ + if ( !ASMAtomicUoReadBool(&pTimer->fSuspended) + && pTimer->u32Magic == RTTIMER_MAGIC) + { + switch (enmEvent) + { + /* + * Try do it without leaving the spin lock, but if we have to, retake it + * when we're on the right cpu. + */ + case RTMPEVENT_ONLINE: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STARTING, RTTIMERLNXSTATE_STOPPED)) + { + RTTIMERLINUXSTARTONCPUARGS Args; + Args.u64Now = RTTimeSystemNanoTS(); + Args.u64First = 0; + + if (RTMpCpuId() == idCpu) + rtTimerLnxStartSubTimer(pSubTimer, Args.u64Now, Args.u64First, true /*fPinned*/, pTimer->fHighRes); + else + { + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); /* we'll recheck it. */ + RTSpinlockRelease(hSpinlock); + + RTMpOnSpecific(idCpu, rtTimerLinuxMpStartOnCpu, pTimer, &Args); + return; /* we've left the spinlock */ + } + } + break; + + /* + * The CPU is (going) offline, make sure the sub-timer is stopped. + * + * Linux will migrate it to a different CPU, but we don't want this. The + * timer function is checking for this. + */ + case RTMPEVENT_OFFLINE: + { + RTTIMERLNXSTATE enmState; + while ( (enmState = rtTimerLnxGetState(&pSubTimer->enmState)) == RTTIMERLNXSTATE_ACTIVE + || enmState == RTTIMERLNXSTATE_CALLBACK + || enmState == RTTIMERLNXSTATE_CB_RESTARTING) + { + if (enmState == RTTIMERLNXSTATE_ACTIVE) + { + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STOPPING, RTTIMERLNXSTATE_ACTIVE)) + { + RTSpinlockRelease(hSpinlock); + + rtTimerLnxStopSubTimer(pSubTimer, pTimer->fHighRes); + return; /* we've left the spinlock */ + } + } + else if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CB_STOPPING, enmState)) + break; + + /* State not stable, try again. */ + ASMNopPause(); + } + break; + } + } + } + + RTSpinlockRelease(hSpinlock); +} + +#endif /* CONFIG_SMP */ + + +/** + * Callback function use by RTTimerStart via RTMpOnSpecific to start a timer + * running on a specific CPU. + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLnxStartOnSpecificCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); +} + + +RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First) +{ + RTTIMERLINUXSTARTONCPUARGS Args; + int rc2; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + + if (!ASMAtomicUoReadBool(&pTimer->fSuspended)) + return VERR_TIMER_ACTIVE; + RTTIMERLNX_LOG(("start %p cCpus=%d\n", pTimer, pTimer->cCpus)); + + Args.u64First = u64First; +#ifdef CONFIG_SMP + /* + * Omni timer? + */ + if (pTimer->fAllCpus) + { + rc2 = rtTimerLnxOmniStart(pTimer, &Args); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc2; + } +#endif + + /* + * Simple timer - Pretty straight forward if it wasn't for restarting. + */ + Args.u64Now = RTTimeSystemNanoTS(); + ASMAtomicWriteU64(&pTimer->aSubTimers[0].uNsRestartAt, Args.u64Now + u64First); + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[0].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_STOPPED: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STARTING, RTTIMERLNXSTATE_STOPPED)) + { + ASMAtomicWriteBool(&pTimer->fSuspended, false); + if (!pTimer->fSpecificCpu) + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], Args.u64Now, Args.u64First, + false /*fPinned*/, pTimer->fHighRes); + else + { + rc2 = RTMpOnSpecific(pTimer->idCpu, rtTimerLnxStartOnSpecificCpu, pTimer, &Args); + if (RT_FAILURE(rc2)) + { + /* Suspend it, the cpu id is probably invalid or offline. */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + rtTimerLnxSetState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STOPPED); + return rc2; + } + } + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_CB_RESTARTING, enmState)) + { + ASMAtomicWriteBool(&pTimer->fSuspended, false); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_INTERNAL_ERROR_4; + } + ASMNopPause(); + } +} +RT_EXPORT_SYMBOL(RTTimerStart); + + +/** + * Common worker for RTTimerStop and RTTimerDestroy. + * + * @returns true if there was any active callbacks, false if not. + * @param pTimer The timer to stop. + * @param fForDestroy Whether it's RTTimerDestroy calling or not. + */ +static bool rtTimerLnxStop(PRTTIMER pTimer, bool fForDestroy) +{ + RTTIMERLNX_LOG(("lnxstop %p %d\n", pTimer, fForDestroy)); +#ifdef CONFIG_SMP + /* + * Omni timer? + */ + if (pTimer->fAllCpus) + return rtTimerLnxOmniStop(pTimer, fForDestroy); +#endif + + /* + * Simple timer. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[0].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_ACTIVE: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STOPPING, RTTIMERLNXSTATE_ACTIVE)) + { + rtTimerLnxStopSubTimer(&pTimer->aSubTimers[0], pTimer->fHighRes); + return false; + } + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_STOPPING: + Assert(enmState != RTTIMERLNXSTATE_CB_STOPPING || fForDestroy); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, + !fForDestroy ? RTTIMERLNXSTATE_CB_STOPPING : RTTIMERLNXSTATE_CB_DESTROYING, + enmState)) + return true; + break; + + case RTTIMERLNXSTATE_STOPPED: + return VINF_SUCCESS; + + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("enmState=%d pTimer=%p\n", enmState, pTimer)); + return true; + + default: + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + case RTTIMERLNXSTATE_STOPPING: + case RTTIMERLNXSTATE_MP_STOPPING: + AssertMsgFailed(("enmState=%d pTimer=%p\n", enmState, pTimer)); + return false; + } + + /* State not stable, try again. */ + ASMNopPause(); + } +} + + +RTDECL(int) RTTimerStop(PRTTIMER pTimer) +{ + /* + * Validate. + */ + IPRT_LINUX_SAVE_EFL_AC(); + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + RTTIMERLNX_LOG(("stop %p\n", pTimer)); + + if (ASMAtomicUoReadBool(&pTimer->fSuspended)) + return VERR_TIMER_SUSPENDED; + + rtTimerLnxStop(pTimer, false /*fForDestroy*/); + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerStop); + + +RTDECL(int) RTTimerChangeInterval(PRTTIMER pTimer, uint64_t u64NanoInterval) +{ + unsigned long cJiffies; + unsigned long flFlags; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. + */ + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(u64NanoInterval, VERR_INVALID_PARAMETER); + AssertReturn(u64NanoInterval < UINT64_MAX / 8, VERR_INVALID_PARAMETER); + AssertReturn(pTimer->u64NanoInterval, VERR_INVALID_STATE); + RTTIMERLNX_LOG(("change %p %llu\n", pTimer, u64NanoInterval)); + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + /* + * For the high resolution timers it is easy since we don't care so much + * about when it is applied to the sub-timers. + */ + if (pTimer->fHighRes) + { + ASMAtomicWriteU64(&pTimer->u64NanoInterval, u64NanoInterval); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; + } +#endif + + /* + * Standard timers have a bit more complicated way of calculating + * their interval and such. So, forget omni timers for now. + */ + if (pTimer->cCpus > 1) + return VERR_NOT_SUPPORTED; + + cJiffies = u64NanoInterval / RTTimerGetSystemGranularity(); + if (cJiffies * RTTimerGetSystemGranularity() != u64NanoInterval) + cJiffies = 0; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + pTimer->aSubTimers[0].u.Std.fFirstAfterChg = true; + pTimer->cJiffies = cJiffies; + ASMAtomicWriteU64(&pTimer->u64NanoInterval, u64NanoInterval); + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerChangeInterval); + + +RTDECL(int) RTTimerDestroy(PRTTIMER pTimer) +{ + bool fCanDestroy; + IPRT_LINUX_SAVE_EFL_AC(); + + /* + * Validate. It's ok to pass NULL pointer. + */ + if (pTimer == /*NIL_RTTIMER*/ NULL) + return VINF_SUCCESS; + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + RTTIMERLNX_LOG(("destroy %p\n", pTimer)); +/** @todo We should invalidate the magic here! */ + + /* + * Stop the timer if it's still active, then destroy it if we can. + */ + if (!ASMAtomicUoReadBool(&pTimer->fSuspended)) + fCanDestroy = rtTimerLnxStop(pTimer, true /*fForDestroy*/); + else + { + uint32_t iCpu = pTimer->cCpus; + if (pTimer->cCpus > 1) + RTSpinlockAcquire(pTimer->hSpinlock); + + fCanDestroy = true; + while (iCpu-- > 0) + { + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_STOPPING: + if (!rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_CB_DESTROYING, enmState)) + continue; + fCanDestroy = false; + break; + + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("%d\n", enmState)); + fCanDestroy = false; + break; + default: + break; + } + break; + } + } + + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); + } + + if (fCanDestroy) + { + /* For paranoid reasons, defer actually destroying the semaphore when + in atomic or interrupt context. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 32) + if (in_atomic() || in_interrupt()) +#else + if (in_interrupt()) +#endif + rtR0LnxWorkqueuePush(&pTimer->DtorWorkqueueItem, rtTimerLnxDestroyDeferred); + else + rtTimerLnxDestroyIt(pTimer); + } + + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerDestroy); + + +RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMER pfnTimer, void *pvUser) +{ + PRTTIMER pTimer; + RTCPUID iCpu; + unsigned cCpus; + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + + rtR0LnxWorkqueueFlush(); /* for 2.4 */ + *ppTimer = NULL; + + /* + * Validate flags. + */ + if (!RTTIMER_FLAGS_ARE_VALID(fFlags)) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_INVALID_PARAMETER; + } + if ( (fFlags & RTTIMER_FLAGS_CPU_SPECIFIC) + && (fFlags & RTTIMER_FLAGS_CPU_ALL) != RTTIMER_FLAGS_CPU_ALL + && !RTMpIsCpuPossible(RTMpCpuIdFromSetIndex(fFlags & RTTIMER_FLAGS_CPU_MASK))) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return VERR_CPU_NOT_FOUND; + } + + /* + * Allocate the timer handler. + */ + cCpus = 1; +#ifdef CONFIG_SMP + if ((fFlags & RTTIMER_FLAGS_CPU_ALL) == RTTIMER_FLAGS_CPU_ALL) + { + cCpus = RTMpGetMaxCpuId() + 1; + Assert(cCpus <= RTCPUSET_MAX_CPUS); /* On linux we have a 1:1 relationship between cpuid and set index. */ + AssertReturnStmt(u64NanoInterval, IPRT_LINUX_RESTORE_EFL_AC(), VERR_NOT_IMPLEMENTED); /* We don't implement single shot on all cpus, sorry. */ + } +#endif + + rc = RTMemAllocEx(RT_OFFSETOF(RTTIMER, aSubTimers[cCpus]), 0, + RTMEMALLOCEX_FLAGS_ZEROED | RTMEMALLOCEX_FLAGS_ANY_CTX_FREE, (void **)&pTimer); + if (RT_FAILURE(rc)) + { + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; + } + + /* + * Initialize it. + */ + pTimer->u32Magic = RTTIMER_MAGIC; + pTimer->hSpinlock = NIL_RTSPINLOCK; + pTimer->fSuspended = true; + pTimer->fHighRes = !!(fFlags & RTTIMER_FLAGS_HIGH_RES); +#ifdef CONFIG_SMP + pTimer->fSpecificCpu = (fFlags & RTTIMER_FLAGS_CPU_SPECIFIC) && (fFlags & RTTIMER_FLAGS_CPU_ALL) != RTTIMER_FLAGS_CPU_ALL; + pTimer->fAllCpus = (fFlags & RTTIMER_FLAGS_CPU_ALL) == RTTIMER_FLAGS_CPU_ALL; + pTimer->idCpu = pTimer->fSpecificCpu + ? RTMpCpuIdFromSetIndex(fFlags & RTTIMER_FLAGS_CPU_MASK) + : NIL_RTCPUID; +#else + pTimer->fSpecificCpu = !!(fFlags & RTTIMER_FLAGS_CPU_SPECIFIC); + pTimer->idCpu = RTMpCpuId(); +#endif + pTimer->cCpus = cCpus; + pTimer->pfnTimer = pfnTimer; + pTimer->pvUser = pvUser; + pTimer->u64NanoInterval = u64NanoInterval; + pTimer->cJiffies = u64NanoInterval / RTTimerGetSystemGranularity(); + if (pTimer->cJiffies * RTTimerGetSystemGranularity() != u64NanoInterval) + pTimer->cJiffies = 0; + spin_lock_init(&pTimer->ChgIntLock); + + for (iCpu = 0; iCpu < cCpus; iCpu++) + { +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (pTimer->fHighRes) + { + hrtimer_init(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); + pTimer->aSubTimers[iCpu].u.Hr.LnxTimer.function = rtTimerLinuxHrCallback; + } + else +#endif + { + init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.data = (unsigned long)&pTimer->aSubTimers[iCpu]; + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.function = rtTimerLinuxStdCallback; + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.expires = jiffies; + pTimer->aSubTimers[iCpu].u.Std.u64NextTS = 0; + } + pTimer->aSubTimers[iCpu].iTick = 0; + pTimer->aSubTimers[iCpu].pParent = pTimer; + pTimer->aSubTimers[iCpu].enmState = RTTIMERLNXSTATE_STOPPED; + } + +#ifdef CONFIG_SMP + /* + * If this is running on ALL cpus, we'll have to register a callback + * for MP events (so timers can be started/stopped on cpus going + * online/offline). We also create the spinlock for synchronizing + * stop/start/mp-event. + */ + if (cCpus > 1) + { + int rc = RTSpinlockCreate(&pTimer->hSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTTimerLnx"); + if (RT_SUCCESS(rc)) + rc = RTMpNotificationRegister(rtTimerLinuxMpEvent, pTimer); + else + pTimer->hSpinlock = NIL_RTSPINLOCK; + if (RT_FAILURE(rc)) + { + RTTimerDestroy(pTimer); + IPRT_LINUX_RESTORE_EFL_AC(); + return rc; + } + } +#endif /* CONFIG_SMP */ + + RTTIMERLNX_LOG(("create %p hires=%d fFlags=%#x cCpus=%u\n", pTimer, pTimer->fHighRes, fFlags, cCpus)); + *ppTimer = pTimer; + IPRT_LINUX_RESTORE_EFL_AC(); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerCreateEx); + + +RTDECL(uint32_t) RTTimerGetSystemGranularity(void) +{ +#if 0 /** @todo Not sure if this is what we want or not... Add new API for + * querying the resolution of the high res timers? */ + struct timespec Ts; + int rc; + IPRT_LINUX_SAVE_EFL_AC(); + rc = hrtimer_get_res(CLOCK_MONOTONIC, &Ts); + IPRT_LINUX_RESTORE_EFL_AC(); + if (!rc) + { + Assert(!Ts.tv_sec); + return Ts.tv_nsec; + } +#endif + return RT_NS_1SEC / HZ; /* ns */ +} +RT_EXPORT_SYMBOL(RTTimerGetSystemGranularity); + + +RTDECL(int) RTTimerRequestSystemGranularity(uint32_t u32Request, uint32_t *pu32Granted) +{ + return VERR_NOT_SUPPORTED; +} +RT_EXPORT_SYMBOL(RTTimerRequestSystemGranularity); + + +RTDECL(int) RTTimerReleaseSystemGranularity(uint32_t u32Granted) +{ + return VERR_NOT_SUPPORTED; +} +RT_EXPORT_SYMBOL(RTTimerReleaseSystemGranularity); + + +RTDECL(bool) RTTimerCanDoHighResolution(void) +{ +#ifdef RTTIMER_LINUX_WITH_HRTIMER + return true; +#else + return false; +#endif +} +RT_EXPORT_SYMBOL(RTTimerCanDoHighResolution); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/linux/waitqueue-r0drv-linux.h +++ linux-4.4.0/ubuntu/vbox/r0drv/linux/waitqueue-r0drv-linux.h @@ -0,0 +1,286 @@ +/* $Id: waitqueue-r0drv-linux.h $ */ +/** @file + * IPRT - Linux Ring-0 Driver Helpers for Abstracting Wait Queues, + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#ifndef ___r0drv_linux_waitqueue_r0drv_linux_h +#define ___r0drv_linux_waitqueue_r0drv_linux_h + +#include "the-linux-kernel.h" + +#include +#include +#include +#include + +/** The resolution (nanoseconds) specified when using + * schedule_hrtimeout_range. */ +#define RTR0SEMLNXWAIT_RESOLUTION 50000 + + +/** + * Kernel mode Linux wait state structure. + */ +typedef struct RTR0SEMLNXWAIT +{ + /** The wait queue entry. */ + wait_queue_t WaitQE; + /** The absolute timeout given as nano seconds since the start of the + * monotonic clock. */ + uint64_t uNsAbsTimeout; + /** The timeout in nano seconds relative to the start of the wait. */ + uint64_t cNsRelTimeout; + /** The native timeout value. */ + union + { +#ifdef IPRT_LINUX_HAS_HRTIMER + /** The timeout when fHighRes is true. Absolute, so no updating. */ + ktime_t KtTimeout; +#endif + /** The timeout when fHighRes is false. Updated after waiting. */ + long lTimeout; + } u; + /** Set if we use high resolution timeouts. */ + bool fHighRes; + /** Set if it's an indefinite wait. */ + bool fIndefinite; + /** Set if we've already timed out. + * Set by rtR0SemLnxWaitDoIt and read by rtR0SemLnxWaitHasTimedOut. */ + bool fTimedOut; + /** TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE. */ + int iWaitState; + /** The wait queue. */ + wait_queue_head_t *pWaitQueue; +} RTR0SEMLNXWAIT; +/** Pointer to a linux wait state. */ +typedef RTR0SEMLNXWAIT *PRTR0SEMLNXWAIT; + + +/** + * Initializes a wait. + * + * The caller MUST check the wait condition BEFORE calling this function or the + * timeout logic will be flawed. + * + * @returns VINF_SUCCESS or VERR_TIMEOUT. + * @param pWait The wait structure. + * @param fFlags The wait flags. + * @param uTimeout The timeout. + * @param pWaitQueue The wait queue head. + */ +DECLINLINE(int) rtR0SemLnxWaitInit(PRTR0SEMLNXWAIT pWait, uint32_t fFlags, uint64_t uTimeout, + wait_queue_head_t *pWaitQueue) +{ + /* + * Process the flags and timeout. + */ + if (!(fFlags & RTSEMWAIT_FLAGS_INDEFINITE)) + { +/** @todo optimize: millisecs -> nanosecs -> millisec -> jiffies */ + if (fFlags & RTSEMWAIT_FLAGS_MILLISECS) + uTimeout = uTimeout < UINT64_MAX / RT_US_1SEC * RT_US_1SEC + ? uTimeout * RT_US_1SEC + : UINT64_MAX; + if (uTimeout == UINT64_MAX) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else + { + uint64_t u64Now; + if (fFlags & RTSEMWAIT_FLAGS_RELATIVE) + { + if (uTimeout == 0) + return VERR_TIMEOUT; + + u64Now = RTTimeSystemNanoTS(); + pWait->cNsRelTimeout = uTimeout; + pWait->uNsAbsTimeout = u64Now + uTimeout; + if (pWait->uNsAbsTimeout < u64Now) /* overflow */ + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + } + else + { + u64Now = RTTimeSystemNanoTS(); + if (u64Now >= uTimeout) + return VERR_TIMEOUT; + + pWait->cNsRelTimeout = uTimeout - u64Now; + pWait->uNsAbsTimeout = uTimeout; + } + } + } + + if (!(fFlags & RTSEMWAIT_FLAGS_INDEFINITE)) + { + pWait->fIndefinite = false; +#ifdef IPRT_LINUX_HAS_HRTIMER + if ( (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE)) + || pWait->cNsRelTimeout < RT_NS_1SEC / HZ * 4) + { + pWait->fHighRes = true; +# if BITS_PER_LONG < 64 + if ( KTIME_SEC_MAX <= LONG_MAX + && pWait->uNsAbsTimeout >= KTIME_SEC_MAX * RT_NS_1SEC_64 + (RT_NS_1SEC - 1)) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else +# endif + pWait->u.KtTimeout = ns_to_ktime(pWait->uNsAbsTimeout); + } + else +#endif + { + uint64_t cJiffies = ASMMultU64ByU32DivByU32(pWait->cNsRelTimeout, HZ, RT_NS_1SEC); + if (cJiffies >= MAX_JIFFY_OFFSET) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else + { + pWait->u.lTimeout = (long)cJiffies; + pWait->fHighRes = false; + } + } + } + + if (fFlags & RTSEMWAIT_FLAGS_INDEFINITE) + { + pWait->fIndefinite = true; + pWait->fHighRes = false; + pWait->uNsAbsTimeout = UINT64_MAX; + pWait->cNsRelTimeout = UINT64_MAX; + pWait->u.lTimeout = LONG_MAX; + } + + pWait->fTimedOut = false; + + /* + * Initialize the wait queue related bits. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 39) + init_wait((&pWait->WaitQE)); +#else + RT_ZERO(pWait->WaitQE); + init_waitqueue_entry((&pWait->WaitQE), current); +#endif + pWait->pWaitQueue = pWaitQueue; + pWait->iWaitState = fFlags & RTSEMWAIT_FLAGS_INTERRUPTIBLE + ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE; + + return VINF_SUCCESS; +} + + +/** + * Prepares the next wait. + * + * This must be called before rtR0SemLnxWaitDoIt, and the caller should check + * the exit conditions in-between the two calls. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitPrepare(PRTR0SEMLNXWAIT pWait) +{ + /* Make everything thru schedule*() atomic scheduling wise. (Is this correct?) */ + prepare_to_wait(pWait->pWaitQueue, &pWait->WaitQE, pWait->iWaitState); +} + + +/** + * Do the actual wait. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitDoIt(PRTR0SEMLNXWAIT pWait) +{ + if (pWait->fIndefinite) + schedule(); +#ifdef IPRT_LINUX_HAS_HRTIMER + else if (pWait->fHighRes) + { + int rc = schedule_hrtimeout_range(&pWait->u.KtTimeout, HRTIMER_MODE_ABS, RTR0SEMLNXWAIT_RESOLUTION); + if (!rc) + pWait->fTimedOut = true; + } +#endif + else + { + pWait->u.lTimeout = schedule_timeout(pWait->u.lTimeout); + if (pWait->u.lTimeout <= 0) + pWait->fTimedOut = true; + } + after_wait((&pWait->WaitQE)); +} + + +/** + * Checks if a linux wait was interrupted. + * + * @returns true / false + * @param pWait The wait structure. + * @remarks This shall be called before the first rtR0SemLnxWaitDoIt(). + */ +DECLINLINE(bool) rtR0SemLnxWaitWasInterrupted(PRTR0SEMLNXWAIT pWait) +{ + return pWait->iWaitState == TASK_INTERRUPTIBLE + && signal_pending(current); +} + + +/** + * Checks if a linux wait has timed out. + * + * @returns true / false + * @param pWait The wait structure. + */ +DECLINLINE(bool) rtR0SemLnxWaitHasTimedOut(PRTR0SEMLNXWAIT pWait) +{ + return pWait->fTimedOut; +} + + +/** + * Deletes a linux wait. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitDelete(PRTR0SEMLNXWAIT pWait) +{ + finish_wait(pWait->pWaitQueue, &pWait->WaitQE); +} + + +/** + * Gets the max resolution of the timeout machinery. + * + * @returns Resolution specified in nanoseconds. + */ +DECLINLINE(uint32_t) rtR0SemLnxWaitGetResolution(void) +{ +#ifdef IPRT_LINUX_HAS_HRTIMER + return RTR0SEMLNXWAIT_RESOLUTION; +#else + return RT_NS_1SEC / HZ; /* ns */ +#endif +} + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/memobj-r0drv.c +++ linux-4.4.0/ubuntu/vbox/r0drv/memobj-r0drv.c @@ -0,0 +1,783 @@ +/* $Id: memobj-r0drv.cpp $ */ +/** @file + * IPRT - Ring-0 Memory Objects, Common Code. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_DEFAULT ///@todo RTLOGGROUP_MEM +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "internal/memobj.h" + + +/** + * Internal function for allocating a new memory object. + * + * @returns The allocated and initialized handle. + * @param cbSelf The size of the memory object handle. 0 mean default size. + * @param enmType The memory object type. + * @param pv The memory object mapping. + * @param cb The size of the memory object. + */ +DECLHIDDEN(PRTR0MEMOBJINTERNAL) rtR0MemObjNew(size_t cbSelf, RTR0MEMOBJTYPE enmType, void *pv, size_t cb) +{ + PRTR0MEMOBJINTERNAL pNew; + + /* validate the size */ + if (!cbSelf) + cbSelf = sizeof(*pNew); + Assert(cbSelf >= sizeof(*pNew)); + Assert(cbSelf == (uint32_t)cbSelf); + AssertMsg(RT_ALIGN_Z(cb, PAGE_SIZE) == cb, ("%#zx\n", cb)); + + /* + * Allocate and initialize the object. + */ + pNew = (PRTR0MEMOBJINTERNAL)RTMemAllocZ(cbSelf); + if (pNew) + { + pNew->u32Magic = RTR0MEMOBJ_MAGIC; + pNew->cbSelf = (uint32_t)cbSelf; + pNew->enmType = enmType; + pNew->fFlags = 0; + pNew->cb = cb; + pNew->pv = pv; + } + return pNew; +} + + +/** + * Deletes an incomplete memory object. + * + * This is for cleaning up after failures during object creation. + * + * @param pMem The incomplete memory object to delete. + */ +DECLHIDDEN(void) rtR0MemObjDelete(PRTR0MEMOBJINTERNAL pMem) +{ + if (pMem) + { + ASMAtomicUoWriteU32(&pMem->u32Magic, ~RTR0MEMOBJ_MAGIC); + pMem->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pMem); + } +} + + +/** + * Links a mapping object to a primary object. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VINF_NO_MEMORY if we couldn't expand the mapping array of the parent. + * @param pParent The parent (primary) memory object. + * @param pChild The child (mapping) memory object. + */ +static int rtR0MemObjLink(PRTR0MEMOBJINTERNAL pParent, PRTR0MEMOBJINTERNAL pChild) +{ + uint32_t i; + + /* sanity */ + Assert(rtR0MemObjIsMapping(pChild)); + Assert(!rtR0MemObjIsMapping(pParent)); + + /* expand the array? */ + i = pParent->uRel.Parent.cMappings; + if (i >= pParent->uRel.Parent.cMappingsAllocated) + { + void *pv = RTMemRealloc(pParent->uRel.Parent.papMappings, + (i + 32) * sizeof(pParent->uRel.Parent.papMappings[0])); + if (!pv) + return VERR_NO_MEMORY; + pParent->uRel.Parent.papMappings = (PPRTR0MEMOBJINTERNAL)pv; + pParent->uRel.Parent.cMappingsAllocated = i + 32; + Assert(i == pParent->uRel.Parent.cMappings); + } + + /* do the linking. */ + pParent->uRel.Parent.papMappings[i] = pChild; + pParent->uRel.Parent.cMappings++; + pChild->uRel.Child.pParent = pParent; + + return VINF_SUCCESS; +} + + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(bool) RTR0MemObjIsMapping(RTR0MEMOBJ MemObj) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + AssertPtrReturn(MemObj, false); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), false); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), false); + + /* hand it on to the inlined worker. */ + return rtR0MemObjIsMapping(pMem); +} +RT_EXPORT_SYMBOL(RTR0MemObjIsMapping); + + +/** + * Gets the address of a ring-0 memory object. + * + * @returns The address of the memory object. + * @returns NULL if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(void *) RTR0MemObjAddress(RTR0MEMOBJ MemObj) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return NULL; + AssertPtrReturn(MemObj, NULL); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NULL); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NULL); + + /* return the mapping address. */ + return pMem->pv; +} +RT_EXPORT_SYMBOL(RTR0MemObjAddress); + + +/** + * Gets the ring-3 address of a ring-0 memory object. + * + * This only applies to ring-0 memory object with ring-3 mappings of some kind, i.e. + * locked user memory, reserved user address space and user mappings. This API should + * not be used on any other objects. + * + * @returns The address of the memory object. + * @returns NIL_RTR3PTR if the handle is invalid or if it's not an object with a ring-3 mapping. + * Strict builds will assert in both cases. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(RTR3PTR) RTR0MemObjAddressR3(RTR0MEMOBJ MemObj) +{ + PRTR0MEMOBJINTERNAL pMem; + + /* Validate the object handle. */ + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return NIL_RTR3PTR; + AssertPtrReturn(MemObj, NIL_RTR3PTR); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTR3PTR); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTR3PTR); + if (RT_UNLIKELY( ( pMem->enmType != RTR0MEMOBJTYPE_MAPPING + || pMem->u.Mapping.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_LOCK + || pMem->u.Lock.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_PHYS_NC + || pMem->u.Lock.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_RES_VIRT + || pMem->u.ResVirt.R0Process == NIL_RTR0PROCESS))) + return NIL_RTR3PTR; + + /* return the mapping address. */ + return (RTR3PTR)pMem->pv; +} +RT_EXPORT_SYMBOL(RTR0MemObjAddressR3); + + +/** + * Gets the size of a ring-0 memory object. + * + * The returned value may differ from the one specified to the API creating the + * object because of alignment adjustments. The minimal alignment currently + * employed by any API is PAGE_SIZE, so the result can safely be shifted by + * PAGE_SHIFT to calculate a page count. + * + * @returns The object size. + * @returns 0 if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(size_t) RTR0MemObjSize(RTR0MEMOBJ MemObj) +{ + PRTR0MEMOBJINTERNAL pMem; + + /* Validate the object handle. */ + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return 0; + AssertPtrReturn(MemObj, 0); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), 0); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), 0); + AssertMsg(RT_ALIGN_Z(pMem->cb, PAGE_SIZE) == pMem->cb, ("%#zx\n", pMem->cb)); + + /* return the size. */ + return pMem->cb; +} +RT_EXPORT_SYMBOL(RTR0MemObjSize); + + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param MemObj The ring-0 memory object handle. + * @param iPage The page number within the object. + */ +/* Work around gcc bug 55940 */ +#if defined(__GNUC__) && defined(RT_ARCH_X86) +# if (__GNUC__ * 100 + __GNUC_MINOR__) == 407 + __attribute__((__optimize__ ("no-shrink-wrap"))) +# endif +#endif +RTR0DECL(RTHCPHYS) RTR0MemObjGetPagePhysAddr(RTR0MEMOBJ MemObj, size_t iPage) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + size_t cPages; + AssertPtrReturn(MemObj, NIL_RTHCPHYS); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, NIL_RTHCPHYS); + AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, NIL_RTHCPHYS); + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTHCPHYS); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTHCPHYS); + cPages = (pMem->cb >> PAGE_SHIFT); + if (iPage >= cPages) + { + /* permit: while (RTR0MemObjGetPagePhysAddr(pMem, iPage++) != NIL_RTHCPHYS) {} */ + if (iPage == cPages) + return NIL_RTHCPHYS; + AssertReturn(iPage < (pMem->cb >> PAGE_SHIFT), NIL_RTHCPHYS); + } + + /* + * We know the address of physically contiguous allocations and mappings. + */ + if (pMem->enmType == RTR0MEMOBJTYPE_CONT) + return pMem->u.Cont.Phys + iPage * PAGE_SIZE; + if (pMem->enmType == RTR0MEMOBJTYPE_PHYS) + return pMem->u.Phys.PhysBase + iPage * PAGE_SIZE; + + /* + * Do the job. + */ + return rtR0MemObjNativeGetPagePhysAddr(pMem, iPage); +} +RT_EXPORT_SYMBOL(RTR0MemObjGetPagePhysAddr); + + +/** + * Frees a ring-0 memory object. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if + * @param MemObj The ring-0 memory object to be freed. NULL is accepted. + * @param fFreeMappings Whether or not to free mappings of the object. + */ +RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ MemObj, bool fFreeMappings) +{ + /* + * Validate the object handle. + */ + PRTR0MEMOBJINTERNAL pMem; + int rc; + + if (MemObj == NIL_RTR0MEMOBJ) + return VINF_SUCCESS; + AssertPtrReturn(MemObj, VERR_INVALID_HANDLE); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + RT_ASSERT_PREEMPTIBLE(); + + /* + * Deal with mappings according to fFreeMappings. + */ + if ( !rtR0MemObjIsMapping(pMem) + && pMem->uRel.Parent.cMappings > 0) + { + /* fail if not requested to free mappings. */ + if (!fFreeMappings) + return VERR_MEMORY_BUSY; + + while (pMem->uRel.Parent.cMappings > 0) + { + PRTR0MEMOBJINTERNAL pChild = pMem->uRel.Parent.papMappings[--pMem->uRel.Parent.cMappings]; + pMem->uRel.Parent.papMappings[pMem->uRel.Parent.cMappings] = NULL; + + /* sanity checks. */ + AssertPtr(pChild); + AssertFatal(pChild->u32Magic == RTR0MEMOBJ_MAGIC); + AssertFatal(pChild->enmType > RTR0MEMOBJTYPE_INVALID && pChild->enmType < RTR0MEMOBJTYPE_END); + AssertFatal(rtR0MemObjIsMapping(pChild)); + + /* free the mapping. */ + rc = rtR0MemObjNativeFree(pChild); + if (RT_FAILURE(rc)) + { + Log(("RTR0MemObjFree: failed to free mapping %p: %p %#zx; rc=%Rrc\n", pChild, pChild->pv, pChild->cb, rc)); + pMem->uRel.Parent.papMappings[pMem->uRel.Parent.cMappings++] = pChild; + return rc; + } + } + } + + /* + * Free this object. + */ + rc = rtR0MemObjNativeFree(pMem); + if (RT_SUCCESS(rc)) + { + /* + * Ok, it was freed just fine. Now, if it's a mapping we'll have to remove it from the parent. + */ + if (rtR0MemObjIsMapping(pMem)) + { + PRTR0MEMOBJINTERNAL pParent = pMem->uRel.Child.pParent; + uint32_t i; + + /* sanity checks */ + AssertPtr(pParent); + AssertFatal(pParent->u32Magic == RTR0MEMOBJ_MAGIC); + AssertFatal(pParent->enmType > RTR0MEMOBJTYPE_INVALID && pParent->enmType < RTR0MEMOBJTYPE_END); + AssertFatal(!rtR0MemObjIsMapping(pParent)); + AssertFatal(pParent->uRel.Parent.cMappings > 0); + AssertPtr(pParent->uRel.Parent.papMappings); + + /* locate and remove from the array of mappings. */ + i = pParent->uRel.Parent.cMappings; + while (i-- > 0) + { + if (pParent->uRel.Parent.papMappings[i] == pMem) + { + pParent->uRel.Parent.papMappings[i] = pParent->uRel.Parent.papMappings[--pParent->uRel.Parent.cMappings]; + break; + } + } + Assert(i != UINT32_MAX); + } + else + Assert(pMem->uRel.Parent.cMappings == 0); + + /* + * Finally, destroy the handle. + */ + pMem->u32Magic++; + pMem->enmType = RTR0MEMOBJTYPE_END; + if (!rtR0MemObjIsMapping(pMem)) + RTMemFree(pMem->uRel.Parent.papMappings); + RTMemFree(pMem); + } + else + Log(("RTR0MemObjFree: failed to free %p: %d %p %#zx; rc=%Rrc\n", + pMem, pMem->enmType, pMem->pv, pMem->cb, rc)); + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjFree); + + + +RTR0DECL(int) RTR0MemObjAllocPageTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPage(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPageTag); + + +RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocLow(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocLowTag); + + +RTR0DECL(int) RTR0MemObjAllocContTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocCont(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocContTag); + + +RTR0DECL(int) RTR0MemObjLockUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3Ptr, size_t cb, + uint32_t fAccess, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + (R3Ptr & PAGE_OFFSET_MASK), PAGE_SIZE); + RTR3PTR const R3PtrAligned = (R3Ptr & ~(RTR3PTR)PAGE_OFFSET_MASK); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + AssertReturn(!(fAccess & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE)), VERR_INVALID_PARAMETER); + AssertReturn(fAccess, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the locking. */ + return rtR0MemObjNativeLockUser(pMemObj, R3PtrAligned, cbAligned, fAccess, R0Process); +} +RT_EXPORT_SYMBOL(RTR0MemObjLockUserTag); + + +RTR0DECL(int) RTR0MemObjLockKernelTag(PRTR0MEMOBJ pMemObj, void *pv, size_t cb, uint32_t fAccess, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + ((uintptr_t)pv & PAGE_OFFSET_MASK), PAGE_SIZE); + void * const pvAligned = (void *)((uintptr_t)pv & ~(uintptr_t)PAGE_OFFSET_MASK); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertPtrReturn(pvAligned, VERR_INVALID_POINTER); + AssertReturn(!(fAccess & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE)), VERR_INVALID_PARAMETER); + AssertReturn(fAccess, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeLockKernel(pMemObj, pvAligned, cbAligned, fAccess); +} +RT_EXPORT_SYMBOL(RTR0MemObjLockKernelTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhys(pMemObj, cbAligned, PhysHighest, PAGE_SIZE /* page aligned */); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysExTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn( uAlignment == PAGE_SIZE + || uAlignment == _2M + || uAlignment == _4M + || uAlignment == _1G, + VERR_INVALID_PARAMETER); +#if HC_ARCH_BITS == 32 + /* Memory allocated in this way is typically mapped into kernel space as well; simply + don't allow this on 32 bits hosts as the kernel space is too crowded already. */ + if (uAlignment != PAGE_SIZE) + return VERR_NOT_SUPPORTED; +#endif + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhys(pMemObj, cbAligned, PhysHighest, uAlignment); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysExTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysNCTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhysNC(pMemObj, cbAligned, PhysHighest); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysNCTag); + + +RTR0DECL(int) RTR0MemObjEnterPhysTag(PRTR0MEMOBJ pMemObj, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + (Phys & PAGE_OFFSET_MASK), PAGE_SIZE); + const RTHCPHYS PhysAligned = Phys & ~(RTHCPHYS)PAGE_OFFSET_MASK; + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(Phys != NIL_RTHCPHYS, VERR_INVALID_PARAMETER); + AssertReturn( uCachePolicy == RTMEM_CACHE_POLICY_DONT_CARE + || uCachePolicy == RTMEM_CACHE_POLICY_MMIO, + VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeEnterPhys(pMemObj, PhysAligned, cbAligned, uCachePolicy); +} +RT_EXPORT_SYMBOL(RTR0MemObjEnterPhysTag); + + +RTR0DECL(int) RTR0MemObjReserveKernelTag(PRTR0MEMOBJ pMemObj, void *pvFixed, size_t cb, size_t uAlignment, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (pvFixed != (void *)-1) + AssertReturn(!((uintptr_t)pvFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the reservation. */ + return rtR0MemObjNativeReserveKernel(pMemObj, pvFixed, cbAligned, uAlignment); +} +RT_EXPORT_SYMBOL(RTR0MemObjReserveKernelTag); + + +RTR0DECL(int) RTR0MemObjReserveUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3PtrFixed, size_t cb, + size_t uAlignment, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (R3PtrFixed != (RTR3PTR)-1) + AssertReturn(!(R3PtrFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + RT_ASSERT_PREEMPTIBLE(); + + /* do the reservation. */ + return rtR0MemObjNativeReserveUser(pMemObj, R3PtrFixed, cbAligned, uAlignment, R0Process); +} +RT_EXPORT_SYMBOL(RTR0MemObjReserveUserTag); + + +RTR0DECL(int) RTR0MemObjMapKernelTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, + size_t uAlignment, unsigned fProt, const char *pszTag) +{ + return RTR0MemObjMapKernelExTag(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt, 0, 0, pszTag); +} +RT_EXPORT_SYMBOL(RTR0MemObjMapKernelTag); + + +RTR0DECL(int) RTR0MemObjMapKernelExTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag) +{ + PRTR0MEMOBJINTERNAL pMemToMap; + PRTR0MEMOBJINTERNAL pNew; + int rc; + + /* sanity checks. */ + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); + pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; + AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(!rtR0MemObjIsMapping(pMemToMap), VERR_INVALID_PARAMETER); + AssertReturn(pMemToMap->enmType != RTR0MEMOBJTYPE_RES_VIRT, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + if (pvFixed != (void *)-1) + AssertReturn(!((uintptr_t)pvFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + AssertReturn(fProt != RTMEM_PROT_NONE, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + AssertReturn(!(offSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(offSub < pMemToMap->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(cbSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(cbSub <= pMemToMap->cb, VERR_INVALID_PARAMETER); + AssertReturn((!offSub && !cbSub) || (offSub + cbSub) <= pMemToMap->cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* adjust the request to simplify the native code. */ + if (offSub == 0 && cbSub == pMemToMap->cb) + cbSub = 0; + + /* do the mapping. */ + rc = rtR0MemObjNativeMapKernel(&pNew, pMemToMap, pvFixed, uAlignment, fProt, offSub, cbSub); + if (RT_SUCCESS(rc)) + { + /* link it. */ + rc = rtR0MemObjLink(pMemToMap, pNew); + if (RT_SUCCESS(rc)) + *pMemObj = pNew; + else + { + /* damn, out of memory. bail out. */ + int rc2 = rtR0MemObjNativeFree(pNew); + AssertRC(rc2); + pNew->u32Magic++; + pNew->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pNew); + } + } + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjMapKernelExTag); + + +RTR0DECL(int) RTR0MemObjMapUserTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + PRTR0MEMOBJINTERNAL pMemToMap; + PRTR0MEMOBJINTERNAL pNew; + int rc; + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; + *pMemObj = NIL_RTR0MEMOBJ; + AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(!rtR0MemObjIsMapping(pMemToMap), VERR_INVALID_PARAMETER); + AssertReturn(pMemToMap->enmType != RTR0MEMOBJTYPE_RES_VIRT, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + if (R3PtrFixed != (RTR3PTR)-1) + AssertReturn(!(R3PtrFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + AssertReturn(fProt != RTMEM_PROT_NONE, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + RT_ASSERT_PREEMPTIBLE(); + + /* do the mapping. */ + rc = rtR0MemObjNativeMapUser(&pNew, pMemToMap, R3PtrFixed, uAlignment, fProt, R0Process); + if (RT_SUCCESS(rc)) + { + /* link it. */ + rc = rtR0MemObjLink(pMemToMap, pNew); + if (RT_SUCCESS(rc)) + *pMemObj = pNew; + else + { + /* damn, out of memory. bail out. */ + int rc2 = rtR0MemObjNativeFree(pNew); + AssertRC(rc2); + pNew->u32Magic++; + pNew->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pNew); + } + } + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjMapUserTag); + + +RTR0DECL(int) RTR0MemObjProtect(RTR0MEMOBJ hMemObj, size_t offSub, size_t cbSub, uint32_t fProt) +{ + PRTR0MEMOBJINTERNAL pMemObj; + int rc; + + /* sanity checks. */ + pMemObj = (PRTR0MEMOBJINTERNAL)hMemObj; + AssertPtrReturn(pMemObj, VERR_INVALID_HANDLE); + AssertReturn(pMemObj->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemObj->enmType > RTR0MEMOBJTYPE_INVALID && pMemObj->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(rtR0MemObjIsProtectable(pMemObj), VERR_INVALID_PARAMETER); + AssertReturn(!(offSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(offSub < pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(cbSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(cbSub <= pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(offSub + cbSub <= pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the job */ + rc = rtR0MemObjNativeProtect(pMemObj, offSub, cbSub, fProt); + if (RT_SUCCESS(rc)) + pMemObj->fFlags |= RTR0MEMOBJ_FLAGS_PROT_CHANGED; /* record it */ + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjProtect); + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/mp-r0drv.h +++ linux-4.4.0/ubuntu/vbox/r0drv/mp-r0drv.h @@ -0,0 +1,82 @@ +/* $Id: mp-r0drv.h $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Internal Header. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_mp_r0drv_h +#define ___r0drv_mp_r0drv_h + +#include + +RT_C_DECLS_BEGIN + +/** + * MP callback + * + * @param idCpu CPU id + * @param pvUser1 The first user argument. + * @param pvUser2 The second user argument. + */ +typedef DECLCALLBACK(void) FNMPWORKER(RTCPUID idCpu, void *pvUser1, void *pvUser2); +/** Pointer to a FNMPWORKER(). */ +typedef FNMPWORKER *PFNMPWORKER; + +/** + * RTMpOn* argument packet used by the host specific callback + * wrapper functions. + */ +typedef struct RTMPARGS +{ + PFNMPWORKER pfnWorker; + void *pvUser1; + void *pvUser2; + RTCPUID idCpu; + RTCPUID idCpu2; + uint32_t volatile cHits; +#ifdef RT_OS_WINDOWS + /** Turns out that KeFlushQueuedDpcs doesn't necessarily wait till all + * callbacks are done. So, do reference counting to make sure we don't free + * this structure befor all CPUs have completely handled their requests. */ + int32_t volatile cRefs; +#endif +#ifdef RT_OS_LINUX + PRTCPUSET pWorkerSet; +#endif +} RTMPARGS; +/** Pointer to a RTMpOn* argument packet. */ +typedef RTMPARGS *PRTMPARGS; + +/* Called from initterm-r0drv.cpp: */ +DECLHIDDEN(int) rtR0MpNotificationInit(void); +DECLHIDDEN(void) rtR0MpNotificationTerm(void); + +/* The following is only relevant when using mpnotifcation-r0drv.cpp: */ +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void); +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void); +DECLHIDDEN(void) rtMpNotificationDoCallbacks(RTMPEVENT enmEvent, RTCPUID idCpu); + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/mpnotification-r0drv.c +++ linux-4.4.0/ubuntu/vbox/r0drv/mpnotification-r0drv.c @@ -0,0 +1,322 @@ +/* $Id: mpnotification-r0drv.c $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Event Notifications. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Notification registration record tracking + * RTMpRegisterNotification() calls. + */ +typedef struct RTMPNOTIFYREG +{ + /** Pointer to the next record. */ + struct RTMPNOTIFYREG * volatile pNext; + /** The callback. */ + PFNRTMPNOTIFICATION pfnCallback; + /** The user argument. */ + void *pvUser; + /** Bit mask indicating whether we've done this callback or not. */ + uint8_t bmDone[sizeof(void *)]; +} RTMPNOTIFYREG; +/** Pointer to a registration record. */ +typedef RTMPNOTIFYREG *PRTMPNOTIFYREG; + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The spinlock protecting the list. */ +static RTSPINLOCK volatile g_hRTMpNotifySpinLock = NIL_RTSPINLOCK; +/** List of callbacks, in registration order. */ +static PRTMPNOTIFYREG volatile g_pRTMpCallbackHead = NULL; +/** The current done bit. */ +static uint32_t volatile g_iRTMpDoneBit; +/** The list generation. + * This is increased whenever the list has been modified. The callback routine + * make use of this to avoid having restart at the list head after each callback. */ +static uint32_t volatile g_iRTMpGeneration; + + + + +/** + * This is called by the native code. + * + * @param idCpu The CPU id the event applies to. + * @param enmEvent The event. + */ +DECLHIDDEN(void) rtMpNotificationDoCallbacks(RTMPEVENT enmEvent, RTCPUID idCpu) +{ + PRTMPNOTIFYREG pCur; + RTSPINLOCK hSpinlock; + + /* + * This is a little bit tricky as we cannot be holding the spinlock + * while calling the callback. This means that the list might change + * while we're walking it, and that multiple events might be running + * concurrently (depending on the OS). + * + * So, the first measure is to employ a 32-bitmask for each + * record where we'll use a bit that rotates for each call to + * this function to indicate which records that has been + * processed. This will take care of both changes to the list + * and a reasonable amount of concurrent events. + * + * In order to avoid having to restart the list walks for every + * callback we make, we'll make use a list generation number that is + * incremented everytime the list is changed. So, if it remains + * unchanged over a callback we can safely continue the iteration. + */ + uint32_t iDone = ASMAtomicIncU32(&g_iRTMpDoneBit); + iDone %= RT_SIZEOFMEMB(RTMPNOTIFYREG, bmDone) * 8; + + hSpinlock = g_hRTMpNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + RTSpinlockAcquire(hSpinlock); + + /* Clear the bit. */ + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + ASMAtomicBitClear(&pCur->bmDone[0], iDone); + + /* Iterate the records and perform the callbacks. */ + do + { + uint32_t const iGeneration = ASMAtomicUoReadU32(&g_iRTMpGeneration); + + pCur = g_pRTMpCallbackHead; + while (pCur) + { + if (!ASMAtomicBitTestAndSet(&pCur->bmDone[0], iDone)) + { + PFNRTMPNOTIFICATION pfnCallback = pCur->pfnCallback; + void *pvUser = pCur->pvUser; + pCur = pCur->pNext; + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + pfnCallback(enmEvent, idCpu, pvUser); + + /* carefully require the lock here, see RTR0MpNotificationTerm(). */ + hSpinlock = g_hRTMpNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + RTSpinlockAcquire(hSpinlock); + if (ASMAtomicUoReadU32(&g_iRTMpGeneration) != iGeneration) + break; + } + else + pCur = pCur->pNext; + } + } while (pCur); + + RTSpinlockRelease(hSpinlock); +} + + + +RTDECL(int) RTMpNotificationRegister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser) +{ + PRTMPNOTIFYREG pCur; + PRTMPNOTIFYREG pNew; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTMpNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_PREEMPTIBLE(); + + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + RTSpinlockRelease(g_hRTMpNotifySpinLock); + AssertMsgReturn(!pCur, ("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + + /* + * Allocate a new record and attempt to insert it. + */ + pNew = (PRTMPNOTIFYREG)RTMemAlloc(sizeof(*pNew)); + if (!pNew) + return VERR_NO_MEMORY; + + pNew->pNext = NULL; + pNew->pfnCallback = pfnCallback; + pNew->pvUser = pvUser; + memset(&pNew->bmDone[0], 0xff, sizeof(pNew->bmDone)); + + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + + pCur = g_pRTMpCallbackHead; + if (!pCur) + g_pRTMpCallbackHead = pNew; + else + { + for (pCur = g_pRTMpCallbackHead; ; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + else if (!pCur->pNext) + { + pCur->pNext = pNew; + pCur = NULL; + break; + } + } + + ASMAtomicIncU32(&g_iRTMpGeneration); + + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + /* duplicate? */ + if (pCur) + { + RTMemFree(pCur); + AssertMsgFailedReturn(("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpNotificationRegister); + + +RTDECL(int) RTMpNotificationDeregister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser) +{ + PRTMPNOTIFYREG pPrev; + PRTMPNOTIFYREG pCur; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTMpNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_INTS_ON(); + + /* + * Find and unlink the record from the list. + */ + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + pPrev = NULL; + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + { + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + pPrev = pCur; + } + if (pCur) + { + if (pPrev) + pPrev->pNext = pCur->pNext; + else + g_pRTMpCallbackHead = pCur->pNext; + ASMAtomicIncU32(&g_iRTMpGeneration); + } + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + if (!pCur) + return VERR_NOT_FOUND; + + /* + * Invalidate and free the record. + */ + pCur->pNext = NULL; + pCur->pfnCallback = NULL; + RTMemFree(pCur); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpNotificationDeregister); + + +DECLHIDDEN(int) rtR0MpNotificationInit(void) +{ + int rc = RTSpinlockCreate((PRTSPINLOCK)&g_hRTMpNotifySpinLock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0Mp"); + if (RT_SUCCESS(rc)) + { + rc = rtR0MpNotificationNativeInit(); + if (RT_SUCCESS(rc)) + return rc; + + RTSpinlockDestroy(g_hRTMpNotifySpinLock); + g_hRTMpNotifySpinLock = NIL_RTSPINLOCK; + } + return rc; +} + + +DECLHIDDEN(void) rtR0MpNotificationTerm(void) +{ + PRTMPNOTIFYREG pHead; + RTSPINLOCK hSpinlock = g_hRTMpNotifySpinLock; + AssertReturnVoid(hSpinlock != NIL_RTSPINLOCK); + + rtR0MpNotificationNativeTerm(); + + /* pick up the list and the spinlock. */ + RTSpinlockAcquire(hSpinlock); + ASMAtomicWriteHandle(&g_hRTMpNotifySpinLock, NIL_RTSPINLOCK); + pHead = g_pRTMpCallbackHead; + g_pRTMpCallbackHead = NULL; + ASMAtomicIncU32(&g_iRTMpGeneration); + RTSpinlockRelease(hSpinlock); + + /* free the list. */ + while (pHead) + { + PRTMPNOTIFYREG pFree = pHead; + pHead = pHead->pNext; + + pFree->pNext = NULL; + pFree->pfnCallback = NULL; + RTMemFree(pFree); + } + + RTSpinlockDestroy(hSpinlock); +} + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/power-r0drv.h +++ linux-4.4.0/ubuntu/vbox/r0drv/power-r0drv.h @@ -0,0 +1,41 @@ +/* $Id: power-r0drv.h $ */ +/** @file + * IPRT - Power Management, Ring-0 Driver, Internal Header. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_powermgt_r0drv_h +#define ___r0drv_powermgt_r0drv_h + +#include + +RT_C_DECLS_BEGIN + +/* Called from initterm-r0drv.cpp: */ +DECLHIDDEN(int) rtR0PowerNotificationInit(void); +DECLHIDDEN(void) rtR0PowerNotificationTerm(void); + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/r0drv/powernotification-r0drv.c +++ linux-4.4.0/ubuntu/vbox/r0drv/powernotification-r0drv.c @@ -0,0 +1,318 @@ +/* $Id: powernotification-r0drv.c $ */ +/** @file + * IPRT - Power Management, Ring-0 Driver, Event Notifications. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" +#include "r0drv/power-r0drv.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Notification registration record tracking + * RTPowerRegisterNotification() calls. + */ +typedef struct RTPOWERNOTIFYREG +{ + /** Pointer to the next record. */ + struct RTPOWERNOTIFYREG * volatile pNext; + /** The callback. */ + PFNRTPOWERNOTIFICATION pfnCallback; + /** The user argument. */ + void *pvUser; + /** Bit mask indicating whether we've done this callback or not. */ + uint8_t bmDone[sizeof(void *)]; +} RTPOWERNOTIFYREG; +/** Pointer to a registration record. */ +typedef RTPOWERNOTIFYREG *PRTPOWERNOTIFYREG; + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The spinlock protecting the list. */ +static RTSPINLOCK volatile g_hRTPowerNotifySpinLock = NIL_RTSPINLOCK; +/** List of callbacks, in registration order. */ +static PRTPOWERNOTIFYREG volatile g_pRTPowerCallbackHead = NULL; +/** The current done bit. */ +static uint32_t volatile g_iRTPowerDoneBit; +/** The list generation. + * This is increased whenever the list has been modified. The callback routine + * make use of this to avoid having restart at the list head after each callback. */ +static uint32_t volatile g_iRTPowerGeneration; + + + + +RTDECL(int) RTPowerSignalEvent(RTPOWEREVENT enmEvent) +{ + PRTPOWERNOTIFYREG pCur; + RTSPINLOCK hSpinlock; + + /* + * This is a little bit tricky as we cannot be holding the spinlock + * while calling the callback. This means that the list might change + * while we're walking it, and that multiple events might be running + * concurrently (depending on the OS). + * + * So, the first measure is to employ a 32-bitmask for each + * record where we'll use a bit that rotates for each call to + * this function to indicate which records that has been + * processed. This will take care of both changes to the list + * and a reasonable amount of concurrent events. + * + * In order to avoid having to restart the list walks for every + * callback we make, we'll make use a list generation number that is + * incremented everytime the list is changed. So, if it remains + * unchanged over a callback we can safely continue the iteration. + */ + uint32_t iDone = ASMAtomicIncU32(&g_iRTPowerDoneBit); + iDone %= RT_SIZEOFMEMB(RTPOWERNOTIFYREG, bmDone) * 8; + + hSpinlock = g_hRTPowerNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return VERR_ACCESS_DENIED; + RTSpinlockAcquire(hSpinlock); + + /* Clear the bit. */ + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + ASMAtomicBitClear(&pCur->bmDone[0], iDone); + + /* Iterate the records and perform the callbacks. */ + do + { + uint32_t const iGeneration = ASMAtomicUoReadU32(&g_iRTPowerGeneration); + + pCur = g_pRTPowerCallbackHead; + while (pCur) + { + if (!ASMAtomicBitTestAndSet(&pCur->bmDone[0], iDone)) + { + PFNRTPOWERNOTIFICATION pfnCallback = pCur->pfnCallback; + void *pvUser = pCur->pvUser; + pCur = pCur->pNext; + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + pfnCallback(enmEvent, pvUser); + + /* carefully require the lock here, see RTR0MpNotificationTerm(). */ + hSpinlock = g_hRTPowerNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return VERR_ACCESS_DENIED; + RTSpinlockAcquire(hSpinlock); + if (ASMAtomicUoReadU32(&g_iRTPowerGeneration) != iGeneration) + break; + } + else + pCur = pCur->pNext; + } + } while (pCur); + + RTSpinlockRelease(hSpinlock); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerSignalEvent); + + +RTDECL(int) RTPowerNotificationRegister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser) +{ + PRTPOWERNOTIFYREG pCur; + PRTPOWERNOTIFYREG pNew; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTPowerNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_PREEMPTIBLE(); + + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + AssertMsgReturn(!pCur, ("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + + /* + * Allocate a new record and attempt to insert it. + */ + pNew = (PRTPOWERNOTIFYREG)RTMemAlloc(sizeof(*pNew)); + if (!pNew) + return VERR_NO_MEMORY; + + pNew->pNext = NULL; + pNew->pfnCallback = pfnCallback; + pNew->pvUser = pvUser; + memset(&pNew->bmDone[0], 0xff, sizeof(pNew->bmDone)); + + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + + pCur = g_pRTPowerCallbackHead; + if (!pCur) + g_pRTPowerCallbackHead = pNew; + else + { + for (pCur = g_pRTPowerCallbackHead; ; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + else if (!pCur->pNext) + { + pCur->pNext = pNew; + pCur = NULL; + break; + } + } + + ASMAtomicIncU32(&g_iRTPowerGeneration); + + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + /* duplicate? */ + if (pCur) + { + RTMemFree(pCur); + AssertMsgFailedReturn(("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerNotificationRegister); + + +RTDECL(int) RTPowerNotificationDeregister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser) +{ + PRTPOWERNOTIFYREG pPrev; + PRTPOWERNOTIFYREG pCur; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTPowerNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_INTS_ON(); + + /* + * Find and unlink the record from the list. + */ + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + pPrev = NULL; + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + { + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + pPrev = pCur; + } + if (pCur) + { + if (pPrev) + pPrev->pNext = pCur->pNext; + else + g_pRTPowerCallbackHead = pCur->pNext; + ASMAtomicIncU32(&g_iRTPowerGeneration); + } + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + if (!pCur) + return VERR_NOT_FOUND; + + /* + * Invalidate and free the record. + */ + pCur->pNext = NULL; + pCur->pfnCallback = NULL; + RTMemFree(pCur); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerNotificationDeregister); + + +DECLHIDDEN(int) rtR0PowerNotificationInit(void) +{ + int rc = RTSpinlockCreate((PRTSPINLOCK)&g_hRTPowerNotifySpinLock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0Power"); + if (RT_SUCCESS(rc)) + { + /** @todo OS specific init here */ + return rc; +#if 0 + RTSpinlockDestroy(g_hRTPowerNotifySpinLock); + g_hRTPowerNotifySpinLock = NIL_RTSPINLOCK; +#endif + } + return rc; +} + + +DECLHIDDEN(void) rtR0PowerNotificationTerm(void) +{ + PRTPOWERNOTIFYREG pHead; + RTSPINLOCK hSpinlock = g_hRTPowerNotifySpinLock; + AssertReturnVoid(hSpinlock != NIL_RTSPINLOCK); + + /** @todo OS specific term here */ + + /* pick up the list and the spinlock. */ + RTSpinlockAcquire(hSpinlock); + ASMAtomicWriteHandle(&g_hRTPowerNotifySpinLock, NIL_RTSPINLOCK); + pHead = g_pRTPowerCallbackHead; + g_pRTPowerCallbackHead = NULL; + ASMAtomicIncU32(&g_iRTPowerGeneration); + RTSpinlockRelease(hSpinlock); + + /* free the list. */ + while (pHead) + { + PRTPOWERNOTIFYREG pFree = pHead; + pHead = pHead->pNext; + + pFree->pNext = NULL; + pFree->pfnCallback = NULL; + RTMemFree(pFree); + } + + RTSpinlockDestroy(hSpinlock); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/GenericRequest.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/GenericRequest.c @@ -0,0 +1,170 @@ +/* $Id: GenericRequest.cpp $ */ +/** @file + * VBoxGuestLibR0 - Generic VMMDev request management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" +#include +#include +#include +#include + + +DECLVBGL(int) VbglGRVerify(const VMMDevRequestHeader *pReq, size_t cbReq) +{ + size_t cbReqExpected; + + if (RT_UNLIKELY(!pReq || cbReq < sizeof(VMMDevRequestHeader))) + { + dprintf(("VbglGRVerify: Invalid parameter: pReq = %p, cbReq = %zu\n", pReq, cbReq)); + return VERR_INVALID_PARAMETER; + } + + if (RT_UNLIKELY(pReq->size > cbReq)) + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_INVALID_PARAMETER; + } + + /* The request size must correspond to the request type. */ + cbReqExpected = vmmdevGetRequestSize(pReq->requestType); + if (RT_UNLIKELY(cbReq < cbReqExpected)) + { + dprintf(("VbglGRVerify: buffer size %zu < expected size %zu\n", cbReq, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + if (cbReqExpected == cbReq) + { + /* + * This is most likely a fixed size request, and in this case the + * request size must be also equal to the expected size. + */ + if (RT_UNLIKELY(pReq->size != cbReqExpected)) + { + dprintf(("VbglGRVerify: request size %u != expected size %zu\n", pReq->size, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + return VINF_SUCCESS; + } + + /* + * This can be a variable size request. Check the request type and limit the size + * to VMMDEV_MAX_VMMDEVREQ_SIZE, which is max size supported by the host. + * + * Note: Keep this list sorted for easier human lookup! + */ + if ( pReq->requestType == VMMDevReq_ChangeMemBalloon +#ifdef VBOX_WITH_64_BITS_GUESTS + || pReq->requestType == VMMDevReq_HGCMCall32 + || pReq->requestType == VMMDevReq_HGCMCall64 +#else + || pReq->requestType == VMMDevReq_HGCMCall +#endif + || pReq->requestType == VMMDevReq_RegisterSharedModule + || pReq->requestType == VMMDevReq_ReportGuestUserState + || pReq->requestType == VMMDevReq_LogString + || pReq->requestType == VMMDevReq_SetPointerShape + || pReq->requestType == VMMDevReq_VideoSetVisibleRegion) + { + if (RT_UNLIKELY(cbReq > VMMDEV_MAX_VMMDEVREQ_SIZE)) + { + dprintf(("VbglGRVerify: VMMDevReq_LogString: buffer size %zu too big\n", cbReq)); + return VERR_BUFFER_OVERFLOW; /** @todo is this error code ok? */ + } + } + else + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_IO_BAD_LENGTH; /** @todo is this error code ok? */ + } + + return VINF_SUCCESS; +} + +DECLVBGL(int) VbglGRAlloc(VMMDevRequestHeader **ppReq, size_t cbReq, VMMDevRequestType enmReqType) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + { + if ( ppReq + && cbReq >= sizeof(VMMDevRequestHeader) + && cbReq == (uint32_t)cbReq) + { + VMMDevRequestHeader *pReq = (VMMDevRequestHeader *)VbglPhysHeapAlloc((uint32_t)cbReq); + AssertMsgReturn(pReq, ("VbglGRAlloc: no memory (cbReq=%u)\n", cbReq), VERR_NO_MEMORY); + memset(pReq, 0xAA, cbReq); + + pReq->size = (uint32_t)cbReq; + pReq->version = VMMDEV_REQUEST_HEADER_VERSION; + pReq->requestType = enmReqType; + pReq->rc = VERR_GENERAL_FAILURE; + pReq->reserved1 = 0; + pReq->reserved2 = 0; + + *ppReq = pReq; + rc = VINF_SUCCESS; + } + else + { + dprintf(("VbglGRAlloc: Invalid parameter: ppReq=%p cbReq=%u\n", ppReq, cbReq)); + rc = VERR_INVALID_PARAMETER; + } + } + return rc; +} + +DECLVBGL(int) VbglGRPerform(VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + { + if (pReq) + { + RTCCPHYS PhysAddr = VbglPhysHeapGetPhysAddr(pReq); + if ( PhysAddr != 0 + && PhysAddr < _4G) /* Port IO is 32 bit. */ + { + ASMOutU32(g_vbgldata.portVMMDev + VMMDEV_PORT_OFF_REQUEST, (uint32_t)PhysAddr); + /* Make the compiler aware that the host has changed memory. */ + ASMCompilerBarrier(); + rc = pReq->rc; + } + else + rc = VERR_VBGL_INVALID_ADDR; + } + else + rc = VERR_INVALID_PARAMETER; + } + return rc; +} + +DECLVBGL(void) VbglGRFree(VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + VbglPhysHeapFree(pReq); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/HGCMInternal.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/HGCMInternal.c @@ -0,0 +1,1075 @@ +/* $Id: HGCMInternal.cpp $ */ +/** @file + * VBoxGuestLib - Host-Guest Communication Manager internal functions, implemented by VBoxGuest + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with VBGL_VBOXGUEST */ +#ifdef VBGL_VBOXGUEST + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP LOG_GROUP_HGCM + +#include "VBGLInternal.h" +#include +#include +#include +#include +#include +#include +#include +#include + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/** The max parameter buffer size for a user request. */ +#define VBGLR0_MAX_HGCM_USER_PARM (24*_1M) +/** The max parameter buffer size for a kernel request. */ +#define VBGLR0_MAX_HGCM_KERNEL_PARM (16*_1M) +#if defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) +/** Linux needs to use bounce buffers since RTR0MemObjLockUser has unwanted + * side effects. + * Darwin 32bit & 64bit also needs this because of 4GB/4GB user/kernel space. */ +# define USE_BOUNCE_BUFFERS +#endif + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Lock info structure used by VbglR0HGCMInternalCall and its helpers. + */ +struct VbglR0ParmInfo +{ + uint32_t cLockBufs; + struct + { + uint32_t iParm; + RTR0MEMOBJ hObj; +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf; +#endif + } aLockBufs[10]; +}; + + + +/* These functions can be only used by VBoxGuest. */ + +DECLVBGL(int) VbglR0HGCMInternalConnect (VBoxGuestHGCMConnectInfo *pConnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VMMDevHGCMConnect *pHGCMConnect; + int rc; + + if (!pConnectInfo || !pfnAsyncCallback) + return VERR_INVALID_PARAMETER; + + pHGCMConnect = NULL; + + /* Allocate request */ + rc = VbglGRAlloc ((VMMDevRequestHeader **)&pHGCMConnect, sizeof (VMMDevHGCMConnect), VMMDevReq_HGCMConnect); + + if (RT_SUCCESS(rc)) + { + /* Initialize request memory */ + pHGCMConnect->header.fu32Flags = 0; + + memcpy (&pHGCMConnect->loc, &pConnectInfo->Loc, sizeof (HGCMServiceLocation)); + pHGCMConnect->u32ClientID = 0; + + /* Issue request */ + rc = VbglGRPerform (&pHGCMConnect->header.header); + + if (RT_SUCCESS(rc)) + { + /* Check if host decides to process the request asynchronously. */ + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + /* Wait for request completion interrupt notification from host */ + pfnAsyncCallback (&pHGCMConnect->header, pvAsyncData, u32AsyncData); + } + + pConnectInfo->result = pHGCMConnect->header.result; + + if (RT_SUCCESS (pConnectInfo->result)) + pConnectInfo->u32ClientID = pHGCMConnect->u32ClientID; + } + + VbglGRFree (&pHGCMConnect->header.header); + } + + return rc; +} + + +DECLR0VBGL(int) VbglR0HGCMInternalDisconnect (VBoxGuestHGCMDisconnectInfo *pDisconnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VMMDevHGCMDisconnect *pHGCMDisconnect; + int rc; + + if (!pDisconnectInfo || !pfnAsyncCallback) + return VERR_INVALID_PARAMETER; + + pHGCMDisconnect = NULL; + + /* Allocate request */ + rc = VbglGRAlloc ((VMMDevRequestHeader **)&pHGCMDisconnect, sizeof (VMMDevHGCMDisconnect), VMMDevReq_HGCMDisconnect); + + if (RT_SUCCESS(rc)) + { + /* Initialize request memory */ + pHGCMDisconnect->header.fu32Flags = 0; + + pHGCMDisconnect->u32ClientID = pDisconnectInfo->u32ClientID; + + /* Issue request */ + rc = VbglGRPerform (&pHGCMDisconnect->header.header); + + if (RT_SUCCESS(rc)) + { + /* Check if host decides to process the request asynchronously. */ + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + /* Wait for request completion interrupt notification from host */ + pfnAsyncCallback (&pHGCMDisconnect->header, pvAsyncData, u32AsyncData); + } + + pDisconnectInfo->result = pHGCMDisconnect->header.result; + } + + VbglGRFree (&pHGCMDisconnect->header.header); + } + + return rc; +} + + +/** + * Preprocesses the HGCM call, validating and locking/buffering parameters. + * + * @returns VBox status code. + * + * @param pCallInfo The call info. + * @param cbCallInfo The size of the call info structure. + * @param fIsUser Is it a user request or kernel request. + * @param pcbExtra Where to return the extra request space needed for + * physical page lists. + */ +static int vbglR0HGCMInternalPreprocessCall(VBoxGuestHGCMCallInfo const *pCallInfo, uint32_t cbCallInfo, + bool fIsUser, struct VbglR0ParmInfo *pParmInfo, size_t *pcbExtra) +{ + HGCMFunctionParameter const *pSrcParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + uint32_t cParms = pCallInfo->cParms; + uint32_t iParm; + uint32_t cb; + + /* + * Lock down the any linear buffers so we can get their addresses + * and figure out how much extra storage we need for page lists. + * + * Note! With kernel mode users we can be assertive. For user mode users + * we should just (debug) log it and fail without any fanfare. + */ + *pcbExtra = 0; + pParmInfo->cLockBufs = 0; + for (iParm = 0; iParm < cParms; iParm++, pSrcParm++) + { + switch (pSrcParm->type) + { + case VMMDevHGCMParmType_32bit: + Log4(("GstHGCMCall: parm=%u type=32bit: %#010x\n", iParm, pSrcParm->u.value32)); + break; + + case VMMDevHGCMParmType_64bit: + Log4(("GstHGCMCall: parm=%u type=64bit: %#018RX64\n", iParm, pSrcParm->u.value64)); + break; + + case VMMDevHGCMParmType_PageList: + if (fIsUser) + return VERR_INVALID_PARAMETER; + cb = pSrcParm->u.PageList.size; + if (cb) + { + uint32_t off = pSrcParm->u.PageList.offset; + HGCMPageListInfo *pPgLst; + uint32_t cPages; + uint32_t u32; + + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + AssertMsgReturn( off >= pCallInfo->cParms * sizeof(HGCMFunctionParameter) + && off <= cbCallInfo - sizeof(HGCMPageListInfo), + ("offset=%#x cParms=%#x cbCallInfo=%#x\n", off, pCallInfo->cParms, cbCallInfo), + VERR_INVALID_PARAMETER); + + pPgLst = (HGCMPageListInfo *)((uint8_t *)pCallInfo + off); + cPages = pPgLst->cPages; + u32 = RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]) + off; + AssertMsgReturn(u32 <= cbCallInfo, + ("u32=%#x (cPages=%#x offset=%#x) cbCallInfo=%#x\n", u32, cPages, off, cbCallInfo), + VERR_INVALID_PARAMETER); + AssertMsgReturn(pPgLst->offFirstPage < PAGE_SIZE, ("#x\n", pPgLst->offFirstPage), VERR_INVALID_PARAMETER); + u32 = RT_ALIGN_32(pPgLst->offFirstPage + cb, PAGE_SIZE) >> PAGE_SHIFT; + AssertMsgReturn(cPages == u32, ("cPages=%#x u32=%#x\n", cPages, u32), VERR_INVALID_PARAMETER); + AssertMsgReturn(VBOX_HGCM_F_PARM_ARE_VALID(pPgLst->flags), ("%#x\n", pPgLst->flags), VERR_INVALID_PARAMETER); + Log4(("GstHGCMCall: parm=%u type=pglst: cb=%#010x cPgs=%u offPg0=%#x flags=%#x\n", + iParm, cb, cPages, pPgLst->offFirstPage, pPgLst->flags)); + u32 = cPages; + while (u32-- > 0) + { + Log4(("GstHGCMCall: pg#%u=%RHp\n", u32, pPgLst->aPages[u32])); + AssertMsgReturn(!(pPgLst->aPages[u32] & (PAGE_OFFSET_MASK | UINT64_C(0xfff0000000000000))), + ("pg#%u=%RHp\n", u32, pPgLst->aPages[u32]), + VERR_INVALID_PARAMETER); + } + + *pcbExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[pPgLst->cPages]); + } + else + Log4(("GstHGCMCall: parm=%u type=pglst: cb=0\n", iParm)); + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (fIsUser) + return VERR_INVALID_PARAMETER; + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + cb = pSrcParm->u.Pointer.size; + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + if (cb != 0) + Log4(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr)); + else + Log4(("GstHGCMCall: parm=%u type=%#x: cb=0\n", iParm, pSrcParm->type)); + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + cb = pSrcParm->u.Pointer.size; + if (cb != 0) + { +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf = NULL; +#endif + uint32_t iLockBuf = pParmInfo->cLockBufs; + RTR0MEMOBJ hObj; + int rc; + uint32_t fAccess = pSrcParm->type == VMMDevHGCMParmType_LinAddr_In + || pSrcParm->type == VMMDevHGCMParmType_LinAddr_Locked_In + ? RTMEM_PROT_READ + : RTMEM_PROT_READ | RTMEM_PROT_WRITE; + + AssertReturn(iLockBuf < RT_ELEMENTS(pParmInfo->aLockBufs), VERR_INVALID_PARAMETER); + if (!fIsUser) + { + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + rc = RTR0MemObjLockKernel(&hObj, (void *)pSrcParm->u.Pointer.u.linearAddr, cb, fAccess); + if (RT_FAILURE(rc)) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemObjLockKernel(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p locked kernel -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + } + else if (cb > VBGLR0_MAX_HGCM_USER_PARM) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u pv=%p cb=%#x > %#x -> out of range\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, + cb, VBGLR0_MAX_HGCM_USER_PARM)); + return VERR_OUT_OF_RANGE; + } + else + { +#ifndef USE_BOUNCE_BUFFERS + rc = RTR0MemObjLockUser(&hObj, (RTR3PTR)pSrcParm->u.Pointer.u.linearAddr, cb, fAccess, NIL_RTR0PROCESS); + if (RT_FAILURE(rc)) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemObjLockUser(,%p,%#x,nil) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p locked user -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + +#else /* USE_BOUNCE_BUFFERS */ + /* + * This is a bit massive, but we don't want to waste a + * whole page for a 3 byte string buffer (guest props). + * + * The threshold is ASSUMING sizeof(RTMEMHDR) == 16 and + * the system is using some power of two allocator. + */ + /** @todo A more efficient strategy would be to combine buffers. However it + * is probably going to be more massive than the current code, so + * it can wait till later. */ + bool fCopyIn = pSrcParm->type != VMMDevHGCMParmType_LinAddr_Out + && pSrcParm->type != VMMDevHGCMParmType_LinAddr_Locked_Out; + if (cb <= PAGE_SIZE / 2 - 16) + { + pvSmallBuf = fCopyIn ? RTMemTmpAlloc(cb) : RTMemTmpAllocZ(cb); + if (RT_UNLIKELY(!pvSmallBuf)) + return VERR_NO_MEMORY; + if (fCopyIn) + { + rc = RTR0MemUserCopyFrom(pvSmallBuf, pSrcParm->u.Pointer.u.linearAddr, cb); + if (RT_FAILURE(rc)) + { + RTMemTmpFree(pvSmallBuf); + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemUserCopyFrom(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, + pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + } + rc = RTR0MemObjLockKernel(&hObj, pvSmallBuf, cb, fAccess); + if (RT_FAILURE(rc)) + { + RTMemTmpFree(pvSmallBuf); + Log(("GstHGCMCall: RTR0MemObjLockKernel failed for small buffer: rc=%Rrc pvSmallBuf=%p cb=%#x\n", + rc, pvSmallBuf, cb)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p small buffer %p -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, pvSmallBuf, hObj)); + } + else + { + rc = RTR0MemObjAllocPage(&hObj, cb, false /*fExecutable*/); + if (RT_FAILURE(rc)) + return rc; + if (!fCopyIn) + memset(RTR0MemObjAddress(hObj), '\0', cb); + else + { + rc = RTR0MemUserCopyFrom(RTR0MemObjAddress(hObj), pSrcParm->u.Pointer.u.linearAddr, cb); + if (RT_FAILURE(rc)) + { + RTR0MemObjFree(hObj, false /*fFreeMappings*/); + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemUserCopyFrom(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, + pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p big buffer -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + } +#endif /* USE_BOUNCE_BUFFERS */ + } + + pParmInfo->aLockBufs[iLockBuf].iParm = iParm; + pParmInfo->aLockBufs[iLockBuf].hObj = hObj; +#ifdef USE_BOUNCE_BUFFERS + pParmInfo->aLockBufs[iLockBuf].pvSmallBuf = pvSmallBuf; +#endif + pParmInfo->cLockBufs = iLockBuf + 1; + + if (VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false)) + { + size_t const cPages = RTR0MemObjSize(hObj) >> PAGE_SHIFT; + *pcbExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + } + else + Log4(("GstHGCMCall: parm=%u type=%#x: cb=0\n", iParm, pSrcParm->type)); + break; + + default: + return VERR_INVALID_PARAMETER; + } + } + + return VINF_SUCCESS; +} + + +/** + * Translates locked linear address to the normal type. + * The locked types are only for the guest side and not handled by the host. + * + * @returns normal linear address type. + * @param enmType The type. + */ +static HGCMFunctionParameterType vbglR0HGCMInternalConvertLinAddrType(HGCMFunctionParameterType enmType) +{ + switch (enmType) + { + case VMMDevHGCMParmType_LinAddr_Locked_In: + return VMMDevHGCMParmType_LinAddr_In; + case VMMDevHGCMParmType_LinAddr_Locked_Out: + return VMMDevHGCMParmType_LinAddr_Out; + case VMMDevHGCMParmType_LinAddr_Locked: + return VMMDevHGCMParmType_LinAddr; + default: + return enmType; + } +} + + +/** + * Translates linear address types to page list direction flags. + * + * @returns page list flags. + * @param enmType The type. + */ +static uint32_t vbglR0HGCMInternalLinAddrTypeToPageListFlags(HGCMFunctionParameterType enmType) +{ + switch (enmType) + { + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Locked_In: + return VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + return VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST; + + default: AssertFailed(); + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_Locked: + return VBOX_HGCM_F_PARM_DIRECTION_BOTH; + } +} + + +/** + * Initializes the call request that we're sending to the host. + * + * @returns VBox status code. + * + * @param pCallInfo The call info. + * @param cbCallInfo The size of the call info structure. + * @param fIsUser Is it a user request or kernel request. + * @param pcbExtra Where to return the extra request space needed for + * physical page lists. + */ +static void vbglR0HGCMInternalInitCall(VMMDevHGCMCall *pHGCMCall, VBoxGuestHGCMCallInfo const *pCallInfo, + uint32_t cbCallInfo, bool fIsUser, struct VbglR0ParmInfo *pParmInfo) +{ + HGCMFunctionParameter const *pSrcParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + HGCMFunctionParameter *pDstParm = VMMDEV_HGCM_CALL_PARMS(pHGCMCall); + uint32_t cParms = pCallInfo->cParms; + uint32_t offExtra = (uint32_t)((uintptr_t)(pDstParm + cParms) - (uintptr_t)pHGCMCall); + uint32_t iLockBuf = 0; + uint32_t iParm; + + + /* + * The call request headers. + */ + pHGCMCall->header.fu32Flags = 0; + pHGCMCall->header.result = VINF_SUCCESS; + + pHGCMCall->u32ClientID = pCallInfo->u32ClientID; + pHGCMCall->u32Function = pCallInfo->u32Function; + pHGCMCall->cParms = cParms; + + /* + * The parameters. + */ + for (iParm = 0; iParm < pCallInfo->cParms; iParm++, pSrcParm++, pDstParm++) + { + switch (pSrcParm->type) + { + case VMMDevHGCMParmType_32bit: + case VMMDevHGCMParmType_64bit: + *pDstParm = *pSrcParm; + break; + + case VMMDevHGCMParmType_PageList: + pDstParm->type = VMMDevHGCMParmType_PageList; + pDstParm->u.PageList.size = pSrcParm->u.PageList.size; + if (pSrcParm->u.PageList.size) + { + HGCMPageListInfo const *pSrcPgLst = (HGCMPageListInfo *)((uint8_t *)pCallInfo + pSrcParm->u.PageList.offset); + HGCMPageListInfo *pDstPgLst = (HGCMPageListInfo *)((uint8_t *)pHGCMCall + offExtra); + uint32_t const cPages = pSrcPgLst->cPages; + uint32_t iPage; + + pDstParm->u.PageList.offset = offExtra; + pDstPgLst->flags = pSrcPgLst->flags; + pDstPgLst->offFirstPage = pSrcPgLst->offFirstPage; + pDstPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pDstPgLst->aPages[iPage] = pSrcPgLst->aPages[iPage]; + + offExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + else + pDstParm->u.PageList.offset = 0; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + *pDstParm = *pSrcParm; + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + if (pSrcParm->u.Pointer.size != 0) + { +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf = pParmInfo->aLockBufs[iLockBuf].pvSmallBuf; +#endif + RTR0MEMOBJ hObj = pParmInfo->aLockBufs[iLockBuf].hObj; + Assert(iParm == pParmInfo->aLockBufs[iLockBuf].iParm); + + if (VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false)) + { + HGCMPageListInfo *pDstPgLst = (HGCMPageListInfo *)((uint8_t *)pHGCMCall + offExtra); + size_t const cPages = RTR0MemObjSize(hObj) >> PAGE_SHIFT; + size_t iPage; + + pDstParm->type = VMMDevHGCMParmType_PageList; + pDstParm->u.PageList.size = pSrcParm->u.Pointer.size; + pDstParm->u.PageList.offset = offExtra; + pDstPgLst->flags = vbglR0HGCMInternalLinAddrTypeToPageListFlags(pSrcParm->type); +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + pDstPgLst->offFirstPage = (uintptr_t)pvSmallBuf & PAGE_OFFSET_MASK; + else +#endif + pDstPgLst->offFirstPage = pSrcParm->u.Pointer.u.linearAddr & PAGE_OFFSET_MASK; + pDstPgLst->cPages = (uint32_t)cPages; Assert(pDstPgLst->cPages == cPages); + for (iPage = 0; iPage < cPages; iPage++) + { + pDstPgLst->aPages[iPage] = RTR0MemObjGetPagePhysAddr(hObj, iPage); + Assert(pDstPgLst->aPages[iPage] != NIL_RTHCPHYS); + } + + offExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + else + { + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + pDstParm->u.Pointer.u.linearAddr = pvSmallBuf + ? (uintptr_t)pvSmallBuf + : (uintptr_t)RTR0MemObjAddress(hObj); + else +#endif + pDstParm->u.Pointer.u.linearAddr = pSrcParm->u.Pointer.u.linearAddr; + } + iLockBuf++; + } + else + { + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + pDstParm->u.Pointer.size = 0; + pDstParm->u.Pointer.u.linearAddr = 0; + } + break; + + default: + AssertFailed(); + pDstParm->type = VMMDevHGCMParmType_Invalid; + break; + } + } +} + + +/** + * Performs the call and completion wait. + * + * @returns VBox status code of this operation, not necessarily the call. + * + * @param pHGCMCall The HGCM call info. + * @param pfnAsyncCallback The async callback that will wait for the call + * to complete. + * @param pvAsyncData Argument for the callback. + * @param u32AsyncData Argument for the callback. + * @param pfLeakIt Where to return the leak it / free it, + * indicator. Cancellation fun. + */ +static int vbglR0HGCMInternalDoCall(VMMDevHGCMCall *pHGCMCall, PFNVBGLHGCMCALLBACK pfnAsyncCallback, + void *pvAsyncData, uint32_t u32AsyncData, bool *pfLeakIt) +{ + int rc; + + Log(("calling VbglGRPerform\n")); + rc = VbglGRPerform(&pHGCMCall->header.header); + Log(("VbglGRPerform rc = %Rrc (header rc=%d)\n", rc, pHGCMCall->header.result)); + + /* + * If the call failed, but as a result of the request itself, then pretend + * success. Upper layers will interpret the result code in the packet. + */ + if ( RT_FAILURE(rc) + && rc == pHGCMCall->header.result) + { + Assert(pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE); + rc = VINF_SUCCESS; + } + + /* + * Check if host decides to process the request asynchronously, + * if so, we wait for it to complete using the caller supplied callback. + */ + *pfLeakIt = false; + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + Log(("Processing HGCM call asynchronously\n")); + rc = pfnAsyncCallback(&pHGCMCall->header, pvAsyncData, u32AsyncData); + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + { + Assert(!(pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_CANCELLED)); + rc = VINF_SUCCESS; + } + else + { + /* + * The request didn't complete in time or the call was interrupted, + * the RC from the callback indicates which. Try cancel the request. + * + * This is a bit messy because we're racing request completion. Sorry. + */ + /** @todo It would be nice if we could use the waiter callback to do further + * waiting in case of a completion race. If it wasn't for WINNT having its own + * version of all that stuff, I would've done it already. */ + VMMDevHGCMCancel2 *pCancelReq; + int rc2 = VbglGRAlloc((VMMDevRequestHeader **)&pCancelReq, sizeof(*pCancelReq), VMMDevReq_HGCMCancel2); + if (RT_SUCCESS(rc2)) + { + pCancelReq->physReqToCancel = VbglPhysHeapGetPhysAddr(pHGCMCall); + rc2 = VbglGRPerform(&pCancelReq->header); + VbglGRFree(&pCancelReq->header); + } +#if 1 /** @todo ADDVER: Remove this on next minor version change. */ + if (rc2 == VERR_NOT_IMPLEMENTED) + { + /* host is too old, or we're out of heap. */ + pHGCMCall->header.fu32Flags |= VBOX_HGCM_REQ_CANCELLED; + pHGCMCall->header.header.requestType = VMMDevReq_HGCMCancel; + rc2 = VbglGRPerform(&pHGCMCall->header.header); + if (rc2 == VERR_INVALID_PARAMETER) + rc2 = VERR_NOT_FOUND; + else if (RT_SUCCESS(rc)) + RTThreadSleep(1); + } +#endif + if (RT_SUCCESS(rc)) rc = VERR_INTERRUPTED; /** @todo weed this out from the WINNT VBoxGuest code. */ + if (RT_SUCCESS(rc2)) + { + Log(("vbglR0HGCMInternalDoCall: successfully cancelled\n")); + pHGCMCall->header.fu32Flags |= VBOX_HGCM_REQ_CANCELLED; + } + else + { + /* + * Wait for a bit while the host (hopefully) completes it. + */ + uint64_t u64Start = RTTimeSystemMilliTS(); + uint32_t cMilliesToWait = rc2 == VERR_NOT_FOUND || rc2 == VERR_SEM_DESTROYED ? 500 : 2000; + uint64_t cElapsed = 0; + if (rc2 != VERR_NOT_FOUND) + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("vbglR0HGCMInternalDoCall: Failed to cancel the HGCM call on %Rrc: rc2=%Rrc\n", rc, rc2)); + } + else + Log(("vbglR0HGCMInternalDoCall: Cancel race rc=%Rrc rc2=%Rrc\n", rc, rc2)); + + do + { + ASMCompilerBarrier(); /* paranoia */ + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + break; + RTThreadSleep(1); + cElapsed = RTTimeSystemMilliTS() - u64Start; + } while (cElapsed < cMilliesToWait); + + ASMCompilerBarrier(); /* paranoia^2 */ + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + rc = VINF_SUCCESS; + else + { + LogRel(("vbglR0HGCMInternalDoCall: Leaking %u bytes. Pending call to %u with %u parms. (rc2=%Rrc)\n", + pHGCMCall->header.header.size, pHGCMCall->u32Function, pHGCMCall->cParms, rc2)); + *pfLeakIt = true; + } + Log(("vbglR0HGCMInternalDoCall: Cancel race ended with rc=%Rrc (rc2=%Rrc) after %llu ms\n", rc, rc2, cElapsed)); + } + } + } + + Log(("GstHGCMCall: rc=%Rrc result=%Rrc fu32Flags=%#x fLeakIt=%d\n", + rc, pHGCMCall->header.result, pHGCMCall->header.fu32Flags, *pfLeakIt)); + return rc; +} + + +/** + * Copies the result of the call back to the caller info structure and user + * buffers (if using bounce buffers). + * + * @returns rc, unless RTR0MemUserCopyTo fails. + * @param pCallInfo Call info structure to update. + * @param pHGCMCall HGCM call request. + * @param pParmInfo Parameter locking/buffering info. + * @param fIsUser Is it a user (true) or kernel request. + * @param rc The current result code. Passed along to + * preserve informational status codes. + */ +static int vbglR0HGCMInternalCopyBackResult(VBoxGuestHGCMCallInfo *pCallInfo, VMMDevHGCMCall const *pHGCMCall, + struct VbglR0ParmInfo *pParmInfo, bool fIsUser, int rc) +{ + HGCMFunctionParameter const *pSrcParm = VMMDEV_HGCM_CALL_PARMS(pHGCMCall); + HGCMFunctionParameter *pDstParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + uint32_t cParms = pCallInfo->cParms; +#ifdef USE_BOUNCE_BUFFERS + uint32_t iLockBuf = 0; +#endif + uint32_t iParm; + + /* + * The call result. + */ + pCallInfo->result = pHGCMCall->header.result; + + /* + * Copy back parameters. + */ + for (iParm = 0; iParm < cParms; iParm++, pSrcParm++, pDstParm++) + { + switch (pDstParm->type) + { + case VMMDevHGCMParmType_32bit: + case VMMDevHGCMParmType_64bit: + *pDstParm = *pSrcParm; + break; + + case VMMDevHGCMParmType_PageList: + pDstParm->u.PageList.size = pSrcParm->u.PageList.size; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_In: +#ifdef USE_BOUNCE_BUFFERS + if ( fIsUser + && iLockBuf < pParmInfo->cLockBufs + && iParm == pParmInfo->aLockBufs[iLockBuf].iParm) + iLockBuf++; +#endif + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + { +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + { + size_t cbOut = RT_MIN(pSrcParm->u.Pointer.size, pDstParm->u.Pointer.size); + if (cbOut) + { + int rc2; + Assert(pParmInfo->aLockBufs[iLockBuf].iParm == iParm); + rc2 = RTR0MemUserCopyTo((RTR3PTR)pDstParm->u.Pointer.u.linearAddr, + pParmInfo->aLockBufs[iLockBuf].pvSmallBuf + ? pParmInfo->aLockBufs[iLockBuf].pvSmallBuf + : RTR0MemObjAddress(pParmInfo->aLockBufs[iLockBuf].hObj), + cbOut); + if (RT_FAILURE(rc2)) + return rc2; + iLockBuf++; + } + else if ( iLockBuf < pParmInfo->cLockBufs + && iParm == pParmInfo->aLockBufs[iLockBuf].iParm) + iLockBuf++; + } +#endif + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + } + + default: + AssertFailed(); + rc = VERR_INTERNAL_ERROR_4; + break; + } + } + +#ifdef USE_BOUNCE_BUFFERS + Assert(!fIsUser || pParmInfo->cLockBufs == iLockBuf); +#endif + return rc; +} + + +DECLR0VBGL(int) VbglR0HGCMInternalCall(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + bool fIsUser = (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER; + struct VbglR0ParmInfo ParmInfo; + size_t cbExtra; + int rc; + + /* + * Basic validation. + */ + AssertMsgReturn( !pCallInfo + || !pfnAsyncCallback + || pCallInfo->cParms > VBOX_HGCM_MAX_PARMS + || !(fFlags & ~VBGLR0_HGCMCALL_F_MODE_MASK), + ("pCallInfo=%p pfnAsyncCallback=%p fFlags=%#x\n", pCallInfo, pfnAsyncCallback, fFlags), + VERR_INVALID_PARAMETER); + AssertReturn( cbCallInfo >= sizeof(VBoxGuestHGCMCallInfo) + || cbCallInfo >= pCallInfo->cParms * sizeof(HGCMFunctionParameter), + VERR_INVALID_PARAMETER); + + Log(("GstHGCMCall: u32ClientID=%#x u32Function=%u cParms=%u cbCallInfo=%#x fFlags=%#x\n", + pCallInfo->u32ClientID, pCallInfo->u32ClientID, pCallInfo->u32Function, pCallInfo->cParms, cbCallInfo, fFlags)); + + /* + * Validate, lock and buffer the parameters for the call. + * This will calculate the amount of extra space for physical page list. + */ + rc = vbglR0HGCMInternalPreprocessCall(pCallInfo, cbCallInfo, fIsUser, &ParmInfo, &cbExtra); + if (RT_SUCCESS(rc)) + { + /* + * Allocate the request buffer and recreate the call request. + */ + VMMDevHGCMCall *pHGCMCall; + rc = VbglGRAlloc((VMMDevRequestHeader **)&pHGCMCall, + sizeof(VMMDevHGCMCall) + pCallInfo->cParms * sizeof(HGCMFunctionParameter) + cbExtra, + VMMDevReq_HGCMCall); + if (RT_SUCCESS(rc)) + { + bool fLeakIt; + vbglR0HGCMInternalInitCall(pHGCMCall, pCallInfo, cbCallInfo, fIsUser, &ParmInfo); + + /* + * Perform the call. + */ + rc = vbglR0HGCMInternalDoCall(pHGCMCall, pfnAsyncCallback, pvAsyncData, u32AsyncData, &fLeakIt); + if (RT_SUCCESS(rc)) + { + /* + * Copy back the result (parameters and buffers that changed). + */ + rc = vbglR0HGCMInternalCopyBackResult(pCallInfo, pHGCMCall, &ParmInfo, fIsUser, rc); + } + else + { + if ( rc != VERR_INTERRUPTED + && rc != VERR_TIMEOUT) + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall: vbglR0HGCMInternalDoCall failed. rc=%Rrc\n", rc)); + } + } + + if (!fLeakIt) + VbglGRFree(&pHGCMCall->header.header); + } + } + else + LogRel(("VbglR0HGCMInternalCall: vbglR0HGCMInternalPreprocessCall failed. rc=%Rrc\n", rc)); + + /* + * Release locks and free bounce buffers. + */ + if (ParmInfo.cLockBufs) + while (ParmInfo.cLockBufs-- > 0) + { + RTR0MemObjFree(ParmInfo.aLockBufs[ParmInfo.cLockBufs].hObj, false /*fFreeMappings*/); +#ifdef USE_BOUNCE_BUFFERS + RTMemTmpFree(ParmInfo.aLockBufs[ParmInfo.cLockBufs].pvSmallBuf); +#endif + } + + return rc; +} + + +#if ARCH_BITS == 64 +DECLR0VBGL(int) VbglR0HGCMInternalCall32(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VBoxGuestHGCMCallInfo *pCallInfo64 = NULL; + HGCMFunctionParameter *pParm64 = NULL; + HGCMFunctionParameter32 *pParm32 = NULL; + uint32_t cParms = 0; + uint32_t iParm = 0; + int rc = VINF_SUCCESS; + + /* + * Input validation. + */ + AssertMsgReturn( !pCallInfo + || !pfnAsyncCallback + || pCallInfo->cParms > VBOX_HGCM_MAX_PARMS + || !(fFlags & ~VBGLR0_HGCMCALL_F_MODE_MASK), + ("pCallInfo=%p pfnAsyncCallback=%p fFlags=%#x\n", pCallInfo, pfnAsyncCallback, fFlags), + VERR_INVALID_PARAMETER); + AssertReturn( cbCallInfo >= sizeof(VBoxGuestHGCMCallInfo) + || cbCallInfo >= pCallInfo->cParms * sizeof(HGCMFunctionParameter32), + VERR_INVALID_PARAMETER); + + /* This Assert does not work on Solaris/Windows 64/32 mixed mode, not sure why, skipping for now */ +#if !defined(RT_OS_SOLARIS) && !defined(RT_OS_WINDOWS) + AssertReturn((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_KERNEL, VERR_WRONG_ORDER); +#endif + + cParms = pCallInfo->cParms; + Log(("VbglR0HGCMInternalCall32: cParms=%d, u32Function=%d, fFlags=%#x\n", cParms, pCallInfo->u32Function, fFlags)); + + /* + * The simple approach, allocate a temporary request and convert the parameters. + */ + pCallInfo64 = (VBoxGuestHGCMCallInfo *)RTMemTmpAllocZ(sizeof(*pCallInfo64) + cParms * sizeof(HGCMFunctionParameter)); + if (!pCallInfo64) + return VERR_NO_TMP_MEMORY; + + *pCallInfo64 = *pCallInfo; + pParm32 = VBOXGUEST_HGCM_CALL_PARMS32(pCallInfo); + pParm64 = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo64); + for (iParm = 0; iParm < cParms; iParm++, pParm32++, pParm64++) + { + switch (pParm32->type) + { + case VMMDevHGCMParmType_32bit: + pParm64->type = VMMDevHGCMParmType_32bit; + pParm64->u.value32 = pParm32->u.value32; + break; + + case VMMDevHGCMParmType_64bit: + pParm64->type = VMMDevHGCMParmType_64bit; + pParm64->u.value64 = pParm32->u.value64; + break; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_In: + pParm64->type = pParm32->type; + pParm64->u.Pointer.size = pParm32->u.Pointer.size; + pParm64->u.Pointer.u.linearAddr = pParm32->u.Pointer.u.linearAddr; + break; + + default: + rc = VERR_INVALID_PARAMETER; + LogRel(("VbglR0HGCMInternalCall32: pParm32 type %#x invalid.\n", pParm32->type)); + break; + } + if (RT_FAILURE(rc)) + break; + } + if (RT_SUCCESS(rc)) + { + rc = VbglR0HGCMInternalCall(pCallInfo64, sizeof(*pCallInfo64) + cParms * sizeof(HGCMFunctionParameter), fFlags, + pfnAsyncCallback, pvAsyncData, u32AsyncData); + + if (RT_SUCCESS(rc)) + { + *pCallInfo = *pCallInfo64; + + /* + * Copy back. + */ + pParm32 = VBOXGUEST_HGCM_CALL_PARMS32(pCallInfo); + pParm64 = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo64); + for (iParm = 0; iParm < cParms; iParm++, pParm32++, pParm64++) + { + switch (pParm64->type) + { + case VMMDevHGCMParmType_32bit: + pParm32->u.value32 = pParm64->u.value32; + break; + + case VMMDevHGCMParmType_64bit: + pParm32->u.value64 = pParm64->u.value64; + break; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_In: + pParm32->u.Pointer.size = pParm64->u.Pointer.size; + break; + + default: + LogRel(("VbglR0HGCMInternalCall32: failed invalid pParm32 type %d\n", pParm32->type)); + rc = VERR_INTERNAL_ERROR_3; + break; + } + } + } + else + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall32: VbglR0HGCMInternalCall failed. rc=%Rrc\n", rc)); + } + } + else + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall32: failed. rc=%Rrc\n", rc)); + } + + RTMemTmpFree(pCallInfo64); + return rc; +} +#endif /* ARCH_BITS == 64 */ + +#endif /* VBGL_VBOXGUEST */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/Init.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/Init.c @@ -0,0 +1,310 @@ +/* $Id: Init.cpp $ */ +/** @file + * VBoxGuestLibR0 - Library initialization. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define VBGL_DECL_DATA +#include "VBGLInternal.h" + +#include +#include +#include + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The global VBGL instance data. */ +VBGLDATA g_vbgldata; + +/** + * Used by vbglQueryDriverInfo and VbglInit to try get the host feature mask and + * version information (g_vbgldata::hostVersion). + * + * This was first implemented by the host in 3.1 and we quietly ignore failures + * for that reason. + */ +static void vbglR0QueryHostVersion (void) +{ + VMMDevReqHostVersion *pReq; + + int rc = VbglGRAlloc ((VMMDevRequestHeader **) &pReq, sizeof (*pReq), VMMDevReq_GetHostVersion); + + if (RT_SUCCESS (rc)) + { + rc = VbglGRPerform (&pReq->header); + + if (RT_SUCCESS (rc)) + { + g_vbgldata.hostVersion = *pReq; + Log (("vbglR0QueryHostVersion: %u.%u.%ur%u %#x\n", + pReq->major, pReq->minor, pReq->build, pReq->revision, pReq->features)); + } + + VbglGRFree (&pReq->header); + } +} + +#ifndef VBGL_VBOXGUEST +/** + * The guest library uses lazy initialization for VMMDev port and memory, + * because these values are provided by the VBoxGuest driver and it might + * be loaded later than other drivers. + * + * The VbglEnter checks the current library status, tries to retrieve these + * values and fails if they are unavailable. + * + */ +static void vbglQueryDriverInfo (void) +{ + int rc = VINF_SUCCESS; + + rc = RTSemMutexRequest(g_vbgldata.mutexDriverInit, RT_INDEFINITE_WAIT); + + if (RT_FAILURE(rc)) + return; + + if (g_vbgldata.status == VbglStatusReady) + { + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + return; + } + + rc = vbglDriverOpen(&g_vbgldata.driver); + + if (RT_SUCCESS(rc)) + { + /* + * Try query the port info. + */ + VBoxGuestPortInfo port; + + rc = vbglDriverIOCtl (&g_vbgldata.driver, + VBOXGUEST_IOCTL_GETVMMDEVPORT, &port, + sizeof (port)); + + if (RT_SUCCESS (rc)) + { + dprintf (("port = 0x%04X, mem = %p\n", port.portAddress, port.pVMMDevMemory)); + + g_vbgldata.portVMMDev = (RTIOPORT)port.portAddress; + g_vbgldata.pVMMDevMemory = port.pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + } + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + dprintf (("vbglQueryDriverInfo rc = %d\n", rc)); +} +#endif /* !VBGL_VBOXGUEST */ + +/** + * Checks if VBGL has been initialized. + * + * The client library, this will lazily complete the initialization. + * + * @return VINF_SUCCESS or VERR_VBGL_NOT_INITIALIZED. + */ +int vbglR0Enter (void) +{ + int rc; + +#ifndef VBGL_VBOXGUEST + if (g_vbgldata.status == VbglStatusInitializing) + { + vbglQueryDriverInfo (); + } +#endif + + rc = g_vbgldata.status == VbglStatusReady? VINF_SUCCESS: VERR_VBGL_NOT_INITIALIZED; + + // dprintf(("VbglEnter: rc = %d\n", rc)); + + return rc; +} + +int vbglInitCommon (void) +{ + int rc = VINF_SUCCESS; + + RT_ZERO(g_vbgldata); + + g_vbgldata.status = VbglStatusInitializing; + + rc = VbglPhysHeapInit (); + + if (RT_SUCCESS(rc)) + { + /* other subsystems, none yet */ + ; + } + else + { + LogRel(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); + g_vbgldata.status = VbglStatusNotInitialized; + } + + dprintf(("vbglInitCommon: rc = %d\n", rc)); + + return rc; +} + +DECLVBGL(void) vbglTerminateCommon (void) +{ + VbglPhysHeapTerminate (); + g_vbgldata.status = VbglStatusNotInitialized; + + return; +} + +#ifdef VBGL_VBOXGUEST + +DECLVBGL(int) VbglInitPrimary(RTIOPORT portVMMDev, VMMDevMemory *pVMMDevMemory) +{ + int rc = VINF_SUCCESS; + +# ifdef RT_OS_WINDOWS /** @todo r=bird: this doesn't make sense. Is there something special going on on windows? */ + dprintf(("vbglInit: starts g_vbgldata.status %d\n", g_vbgldata.status)); + + if ( g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } +# else + dprintf(("vbglInit: starts\n")); +# endif + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + g_vbgldata.portVMMDev = portVMMDev; + g_vbgldata.pVMMDevMemory = pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + else + { + g_vbgldata.status = VbglStatusNotInitialized; + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ + vbglTerminateCommon (); + + return; +} + + +#else /* !VBGL_VBOXGUEST */ + +DECLVBGL(int) VbglInitClient(void) +{ + int rc = VINF_SUCCESS; + + if ( g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + rc = RTSemMutexCreate(&g_vbgldata.mutexDriverInit); + if (RT_SUCCESS(rc)) + { + /* Try to obtain VMMDev port via IOCTL to VBoxGuest main driver. */ + vbglQueryDriverInfo (); + +# ifdef VBOX_WITH_HGCM + rc = vbglR0HGCMInit (); +# endif /* VBOX_WITH_HGCM */ + + if (RT_FAILURE(rc)) + { + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + } + } + + if (RT_FAILURE(rc)) + { + vbglTerminateCommon (); + } + + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ +# ifdef VBOX_WITH_HGCM + vbglR0HGCMTerminate (); +# endif + + /* driver open could fail, which does not prevent VbglInit from succeeding, + * close the driver only if it is opened */ + if (vbglDriverIsOpened(&g_vbgldata.driver)) + vbglDriverClose(&g_vbgldata.driver); + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + + /* note: do vbglTerminateCommon as a last step since it zeroez up the g_vbgldata + * conceptually, doing vbglTerminateCommon last is correct + * since this is the reverse order to how init is done */ + vbglTerminateCommon (); + + return; +} + +int vbglGetDriver(VBGLDRIVER **ppDriver) +{ + if (g_vbgldata.status != VbglStatusReady) + { + vbglQueryDriverInfo(); + if (g_vbgldata.status != VbglStatusReady) + return VERR_TRY_AGAIN; + } + *ppDriver = &g_vbgldata.driver; + return VINF_SUCCESS; +} + +#endif /* !VBGL_VBOXGUEST */ --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/Makefile +++ linux-4.4.0/ubuntu/vbox/vboxguest/Makefile @@ -0,0 +1,148 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# $Revision: 98752 $ +## @file +# VirtualBox Guest Additions Module Makefile. +# + +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxguest + +MOD_OBJS = \ + VBoxGuest-linux.o \ + VBoxGuest.o \ + GenericRequest.o \ + HGCMInternal.o \ + Init.o \ + PhysHeap.o \ + SysHlp.o \ + VMMDev.o \ + r0drv/alloc-r0drv.o \ + r0drv/initterm-r0drv.o \ + r0drv/memobj-r0drv.o \ + r0drv/mpnotification-r0drv.o \ + r0drv/powernotification-r0drv.o \ + r0drv/linux/alloc-r0drv-linux.o \ + r0drv/linux/assert-r0drv-linux.o \ + r0drv/linux/initterm-r0drv-linux.o \ + r0drv/linux/memobj-r0drv-linux.o \ + r0drv/linux/memuserkernel-r0drv-linux.o \ + r0drv/linux/mp-r0drv-linux.o \ + r0drv/linux/mpnotification-r0drv-linux.o \ + r0drv/linux/process-r0drv-linux.o \ + r0drv/linux/semevent-r0drv-linux.o \ + r0drv/linux/semeventmulti-r0drv-linux.o \ + r0drv/linux/semfastmutex-r0drv-linux.o \ + r0drv/linux/semmutex-r0drv-linux.o \ + r0drv/linux/spinlock-r0drv-linux.o \ + r0drv/linux/thread-r0drv-linux.o \ + r0drv/linux/thread2-r0drv-linux.o \ + r0drv/linux/time-r0drv-linux.o \ + r0drv/linux/timer-r0drv-linux.o \ + r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \ + r0drv/generic/semspinmutex-r0drv-generic.o \ + common/alloc/alloc.o \ + common/err/RTErrConvertFromErrno.o \ + common/err/RTErrConvertToErrno.o \ + common/log/log.o \ + common/log/logellipsis.o \ + common/log/logrel.o \ + common/log/logrelellipsis.o \ + common/log/logcom.o \ + common/log/logformat.o \ + common/misc/RTAssertMsg1Weak.o \ + common/misc/RTAssertMsg2.o \ + common/misc/RTAssertMsg2Add.o \ + common/misc/RTAssertMsg2AddWeak.o \ + common/misc/RTAssertMsg2AddWeakV.o \ + common/misc/RTAssertMsg2Weak.o \ + common/misc/RTAssertMsg2WeakV.o \ + common/misc/assert.o \ + common/misc/thread.o \ + common/string/RTStrCopy.o \ + common/string/RTStrCopyEx.o \ + common/string/RTStrCopyP.o \ + common/string/strformat.o \ + common/string/strformatrt.o \ + common/string/strformattype.o \ + common/string/strprintf.o \ + common/string/strtonum.o \ + common/table/avlpv.o \ + common/time/time.o \ + generic/RTAssertShouldPanic-generic.o \ + generic/RTLogWriteStdErr-stub-generic.o \ + generic/RTLogWriteStdOut-stub-generic.o \ + generic/RTMpGetCoreCount-generic.o \ + generic/RTSemEventWait-2-ex-generic.o \ + generic/RTSemEventWaitNoResume-2-ex-generic.o \ + generic/RTSemEventMultiWait-2-ex-generic.o \ + generic/RTSemEventMultiWaitNoResume-2-ex-generic.o \ + generic/errvars-generic.o \ + generic/mppresent-generic.o \ + VBox/log-vbox.o \ + VBox/logbackdoor.o +ifeq ($(BUILD_TARGET_ARCH),x86) +MOD_OBJS += \ + common/math/gcc/divdi3.o \ + common/math/gcc/moddi3.o \ + common/math/gcc/udivdi3.o \ + common/math/gcc/umoddi3.o \ + common/math/gcc/qdivrem.o +endif +ifeq ($(BUILD_TARGET_ARCH),amd64) +MOD_OBJS += common/alloc/heapsimple.o +endif + +MOD_DEFS = -DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST \ + -DIN_GUEST_R0 -DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST \ + -DVBOX_WITH_HGCM +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 +else + MOD_DEFS += -DRT_ARCH_X86 +endif +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DVBOX_WITH_64_BITS_GUESTS +endif +MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) +MOD_INCL += $(addprefix -I$(KBUILD_EXTMOD)/vboxguest,/ /include /r0drv/linux) + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxguest),) + MANGLING := $(KBUILD_EXTMOD)/vboxguest/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif +ifeq ($(KERN_VERSION),24) + ## @todo move to MOD_DEFS when we have finished refactoring + MOD_CFLAGS = -DEXPORT_SYMTAB +else + MOD_CFLAGS = -Wno-declaration-after-statement -include $(MANGLING) +endif + +MOD_CLEAN = . linux r0drv generic r0drv/linux r0drv/generic VBox \ + common/alloc common/err common/log common/math/gcc common/misc \ + common/string common/time + +include $(obj)/Makefile.include.footer + +check: $(MOD_NAME) + @if ! readelf -p __ksymtab_strings vboxguest.ko | grep -E "\[.*\] *(RT|g_..*RT.*)"; then \ + echo "All exported IPRT symbols are properly renamed!"; \ + else \ + echo "error: Some exported IPRT symbols was not properly renamed! See above." >&2; \ + false; \ + fi --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/Makefile.include.footer +++ linux-4.4.0/ubuntu/vbox/vboxguest/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/Makefile.include.header +++ linux-4.4.0/ubuntu/vbox/vboxguest/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/PhysHeap.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/PhysHeap.c @@ -0,0 +1,636 @@ +/* $Id: PhysHeap.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + +#include +#include +#include + +/* Physical memory heap consists of double linked list + * of chunks. Memory blocks are allocated inside these chunks + * and are members of Allocated and Free double linked lists. + * + * When allocating a block, we search in Free linked + * list for a suitable free block. If there is no such block, + * a new chunk is allocated and the new block is taken from + * the new chunk as the only chunk-sized free block. + * Allocated block is excluded from the Free list and goes to + * Alloc list. + * + * When freeing block, we check the pointer and then + * exclude block from Alloc list and move it to free list. + * + * For each chunk we maintain the allocated blocks counter. + * if 2 (or more) entire chunks are free they are immediately + * deallocated, so we always have at most 1 free chunk. + * + * When freeing blocks, two subsequent free blocks are always + * merged together. Current implementation merges blocks only + * when there is a block after the just freed one. + * + */ + +#define VBGL_PH_ASSERT Assert +#define VBGL_PH_ASSERTMsg AssertMsg + +// #define DUMPHEAP + +#ifdef DUMPHEAP +# define VBGL_PH_dprintf(a) RTAssertMsg2Weak a +#else +# define VBGL_PH_dprintf(a) +#endif + +/* Heap block signature */ +#define VBGL_PH_BLOCKSIGNATURE (0xADDBBBBB) + + +/* Heap chunk signature */ +#define VBGL_PH_CHUNKSIGNATURE (0xADDCCCCC) +/* Heap chunk allocation unit */ +#define VBGL_PH_CHUNKSIZE (0x10000) + +/* Heap block bit flags */ +#define VBGL_PH_BF_ALLOCATED (0x1) + +struct _VBGLPHYSHEAPBLOCK +{ + uint32_t u32Signature; + + /* Size of user data in the block. Does not include the block header. */ + uint32_t cbDataSize; + + uint32_t fu32Flags; + + struct _VBGLPHYSHEAPBLOCK *pNext; + struct _VBGLPHYSHEAPBLOCK *pPrev; + + struct _VBGLPHYSHEAPCHUNK *pChunk; +}; + +struct _VBGLPHYSHEAPCHUNK +{ + uint32_t u32Signature; + + /* Size of the chunk. Includes the chunk header. */ + uint32_t cbSize; + + /* Physical address of the chunk */ + uint32_t physAddr; + + /* Number of allocated blocks in the chunk */ + int32_t cAllocatedBlocks; + + struct _VBGLPHYSHEAPCHUNK *pNext; + struct _VBGLPHYSHEAPCHUNK *pPrev; +}; + + +#ifndef DUMPHEAP +#define dumpheap(a) +#else +void dumpheap (char *point) +{ + VBGL_PH_dprintf(("VBGL_PH dump at '%s'\n", point)); + + VBGL_PH_dprintf(("Chunks:\n")); + + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + while (pChunk) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, allocated = %8d, phys = %08X\n", + pChunk, pChunk->pNext, pChunk->pPrev, pChunk->u32Signature, pChunk->cbSize, pChunk->cAllocatedBlocks, pChunk->physAddr)); + + pChunk = pChunk->pNext; + } + + VBGL_PH_dprintf(("Allocated blocks:\n")); + + VBGLPHYSHEAPBLOCK *pBlock = g_vbgldata.pAllocBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("Free blocks:\n")); + + pBlock = g_vbgldata.pFreeBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("VBGL_PH dump at '%s' done\n", point)); +} +#endif + + +DECLINLINE(void *) vbglPhysHeapBlock2Data (VBGLPHYSHEAPBLOCK *pBlock) +{ + return (void *)(pBlock? (char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK): NULL); +} + +DECLINLINE(VBGLPHYSHEAPBLOCK *) vbglPhysHeapData2Block (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)(p? (char *)p - sizeof (VBGLPHYSHEAPBLOCK): NULL); + + VBGL_PH_ASSERTMsg(pBlock == NULL || pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock->u32Signature = %08X\n", pBlock->u32Signature)); + + return pBlock; +} + +DECLINLINE(int) vbglPhysHeapEnter (void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHeap); + + VBGL_PH_ASSERTMsg(RT_SUCCESS(rc), + ("Failed to request heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglPhysHeapLeave (void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHeap); +} + + +static void vbglPhysHeapInitBlock (VBGLPHYSHEAPBLOCK *pBlock, VBGLPHYSHEAPCHUNK *pChunk, uint32_t cbDataSize) +{ + VBGL_PH_ASSERT(pBlock != NULL); + VBGL_PH_ASSERT(pChunk != NULL); + + pBlock->u32Signature = VBGL_PH_BLOCKSIGNATURE; + pBlock->cbDataSize = cbDataSize; + pBlock->fu32Flags = 0; + pBlock->pNext = NULL; + pBlock->pPrev = NULL; + pBlock->pChunk = pChunk; +} + + +static void vbglPhysHeapInsertBlock (VBGLPHYSHEAPBLOCK *pInsertAfter, VBGLPHYSHEAPBLOCK *pBlock) +{ + VBGL_PH_ASSERTMsg(pBlock->pNext == NULL, + ("pBlock->pNext = %p\n", pBlock->pNext)); + VBGL_PH_ASSERTMsg(pBlock->pPrev == NULL, + ("pBlock->pPrev = %p\n", pBlock->pPrev)); + + if (pInsertAfter) + { + pBlock->pNext = pInsertAfter->pNext; + pBlock->pPrev = pInsertAfter; + + if (pInsertAfter->pNext) + { + pInsertAfter->pNext->pPrev = pBlock; + } + + pInsertAfter->pNext = pBlock; + } + else + { + /* inserting to head of list */ + pBlock->pPrev = NULL; + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + pBlock->pNext = g_vbgldata.pAllocBlocksHead; + + if (g_vbgldata.pAllocBlocksHead) + { + g_vbgldata.pAllocBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pAllocBlocksHead = pBlock; + } + else + { + pBlock->pNext = g_vbgldata.pFreeBlocksHead; + + if (g_vbgldata.pFreeBlocksHead) + { + g_vbgldata.pFreeBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pFreeBlocksHead = pBlock; + } + } +} + +static void vbglPhysHeapExcludeBlock (VBGLPHYSHEAPBLOCK *pBlock) +{ + if (pBlock->pNext) + { + pBlock->pNext->pPrev = pBlock->pPrev; + } + else + { + /* this is tail of list but we do not maintain tails of block lists. + * so do nothing. + */ + ; + } + + if (pBlock->pPrev) + { + pBlock->pPrev->pNext = pBlock->pNext; + } + else + { + /* this is head of list but we do not maintain tails of block lists. */ + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + g_vbgldata.pAllocBlocksHead = pBlock->pNext; + } + else + { + g_vbgldata.pFreeBlocksHead = pBlock->pNext; + } + } + + pBlock->pNext = NULL; + pBlock->pPrev = NULL; +} + +static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize) +{ + RTCCPHYS physAddr; + VBGLPHYSHEAPCHUNK *pChunk; + VBGLPHYSHEAPBLOCK *pBlock; + VBGL_PH_dprintf(("Allocating new chunk of size %d\n", cbSize)); + + /* Compute chunk size to allocate */ + if (cbSize < VBGL_PH_CHUNKSIZE) + { + /* Includes case of block size 0 during initialization */ + cbSize = VBGL_PH_CHUNKSIZE; + } + else + { + /* Round up to next chunk size, which must be power of 2 */ + cbSize = (cbSize + (VBGL_PH_CHUNKSIZE - 1)) & ~(VBGL_PH_CHUNKSIZE - 1); + } + + physAddr = 0; + /* This function allocates physical contiguous memory (below 4GB) according to the IPRT docs. + * Address < 4G is required for the port IO. + */ + pChunk = (VBGLPHYSHEAPCHUNK *)RTMemContAlloc (&physAddr, cbSize); + + if (!pChunk) + { + LogRel(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); + return NULL; + } + + AssertRelease(physAddr < _4G && physAddr + cbSize <= _4G); + + pChunk->u32Signature = VBGL_PH_CHUNKSIGNATURE; + pChunk->cbSize = cbSize; + pChunk->physAddr = (uint32_t)physAddr; + pChunk->cAllocatedBlocks = 0; + pChunk->pNext = g_vbgldata.pChunkHead; + pChunk->pPrev = NULL; + + /* Initialize the free block, which now occupies entire chunk. */ + pBlock = (VBGLPHYSHEAPBLOCK *)((char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK)); + + vbglPhysHeapInitBlock (pBlock, pChunk, cbSize - sizeof (VBGLPHYSHEAPCHUNK) - sizeof (VBGLPHYSHEAPBLOCK)); + + vbglPhysHeapInsertBlock (NULL, pBlock); + + g_vbgldata.pChunkHead = pChunk; + + VBGL_PH_dprintf(("Allocated chunk %p, block = %p size=%x\n", pChunk, pBlock, cbSize)); + + return pBlock; +} + + +void vbglPhysHeapChunkDelete (VBGLPHYSHEAPCHUNK *pChunk) +{ + char *p; + VBGL_PH_ASSERT(pChunk != NULL); + VBGL_PH_ASSERTMsg(pChunk->u32Signature == VBGL_PH_CHUNKSIGNATURE, + ("pChunk->u32Signature = %08X\n", pChunk->u32Signature)); + + VBGL_PH_dprintf(("Deleting chunk %p size %x\n", pChunk, pChunk->cbSize)); + + /* first scan the chunk and exclude all blocks from lists */ + + p = (char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK); + + while (p < (char *)pChunk + pChunk->cbSize) + { + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)p; + + p += pBlock->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + vbglPhysHeapExcludeBlock (pBlock); + } + + VBGL_PH_ASSERTMsg(p == (char *)pChunk + pChunk->cbSize, + ("p = %p, (char *)pChunk + pChunk->cbSize = %p, pChunk->cbSize = %08X\n", + p, (char *)pChunk + pChunk->cbSize, pChunk->cbSize)); + + /* Exclude chunk from the chunk list */ + if (pChunk->pNext) + { + pChunk->pNext->pPrev = pChunk->pPrev; + } + else + { + /* we do not maintain tail */ + ; + } + + if (pChunk->pPrev) + { + pChunk->pPrev->pNext = pChunk->pNext; + } + else + { + /* the chunk was head */ + g_vbgldata.pChunkHead = pChunk->pNext; + } + + RTMemContFree (pChunk, pChunk->cbSize); +} + + +DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize) +{ + VBGLPHYSHEAPBLOCK *pBlock, *iter; + int rc = vbglPhysHeapEnter (); + + if (RT_FAILURE(rc)) + return NULL; + + dumpheap ("pre alloc"); + + pBlock = NULL; + + /* If there are free blocks in the heap, look at them. */ + iter = g_vbgldata.pFreeBlocksHead; + + /* There will be not many blocks in the heap, so + * linear search would be fast enough. + */ + + while (iter) + { + if (iter->cbDataSize == cbSize) + { + /* exact match */ + pBlock = iter; + break; + } + + /* Looking for a free block with nearest size */ + if (iter->cbDataSize > cbSize) + { + if (pBlock) + { + if (iter->cbDataSize < pBlock->cbDataSize) + { + pBlock = iter; + } + } + else + { + pBlock = iter; + } + } + + iter = iter->pNext; + } + + if (!pBlock) + { + /* No free blocks, allocate a new chunk, + * the only free block of the chunk will + * be returned. + */ + pBlock = vbglPhysHeapChunkAlloc (cbSize); + } + + if (pBlock) + { + VBGL_PH_ASSERTMsg(pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock = %p, pBlock->u32Signature = %08X\n", pBlock, pBlock->u32Signature)); + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* We have a free block, either found or allocated. */ + + if (pBlock->cbDataSize > 2*(cbSize + sizeof (VBGLPHYSHEAPBLOCK))) + { + /* Data will occupy less than a half of the block, + * the block should be split. + */ + iter = (VBGLPHYSHEAPBLOCK *)((char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK) + cbSize); + + /* Init the new 'iter' block, initialized blocks are always marked as free. */ + vbglPhysHeapInitBlock (iter, pBlock->pChunk, pBlock->cbDataSize - cbSize - sizeof (VBGLPHYSHEAPBLOCK)); + + pBlock->cbDataSize = cbSize; + + /* Insert the new 'iter' block after the 'pBlock' in the free list */ + vbglPhysHeapInsertBlock (pBlock, iter); + } + + /* Exclude pBlock from free list */ + vbglPhysHeapExcludeBlock (pBlock); + + /* Mark as allocated */ + pBlock->fu32Flags |= VBGL_PH_BF_ALLOCATED; + + /* Insert to allocated list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks++; + } + + dumpheap ("post alloc"); + + vbglPhysHeapLeave (); + VBGL_PH_dprintf(("VbglPhysHeapAlloc %x size %x\n", vbglPhysHeapBlock2Data (pBlock), pBlock->cbDataSize)); + + return vbglPhysHeapBlock2Data (pBlock); +} + +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p) +{ + uint32_t physAddr = 0; + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapData2Block (p); + + if (pBlock) + { + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + physAddr = pBlock->pChunk->physAddr + (uint32_t)((uintptr_t)p - (uintptr_t)pBlock->pChunk); + } + + return physAddr; +} + +DECLVBGL(void) VbglPhysHeapFree(void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock; + VBGLPHYSHEAPBLOCK *pNeighbour; + + int rc = vbglPhysHeapEnter (); + if (RT_FAILURE(rc)) + return; + + dumpheap ("pre free"); + + pBlock = vbglPhysHeapData2Block (p); + + if (!pBlock) + { + vbglPhysHeapLeave (); + return; + } + + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* Exclude from allocated list */ + vbglPhysHeapExcludeBlock (pBlock); + + dumpheap ("post exclude"); + + VBGL_PH_dprintf(("VbglPhysHeapFree %x size %x\n", p, pBlock->cbDataSize)); + + /* Mark as free */ + pBlock->fu32Flags &= ~VBGL_PH_BF_ALLOCATED; + + /* Insert to free list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + dumpheap ("post insert"); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks--; + + VBGL_PH_ASSERT(pBlock->pChunk->cAllocatedBlocks >= 0); + + /* Check if we can merge 2 free blocks. To simplify heap maintenance, + * we will look at block after the just freed one. + * This will not prevent us from detecting free memory chunks. + * Also in most cases blocks are deallocated in reverse allocation order + * and in that case the merging will work. + */ + + pNeighbour = (VBGLPHYSHEAPBLOCK *)((char *)p + pBlock->cbDataSize); + + if ((char *)pNeighbour < (char *)pBlock->pChunk + pBlock->pChunk->cbSize + && (pNeighbour->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0) + { + /* The next block is free as well. */ + + /* Adjust size of current memory block */ + pBlock->cbDataSize += pNeighbour->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + /* Exclude the next neighbour */ + vbglPhysHeapExcludeBlock (pNeighbour); + } + + dumpheap ("post merge"); + + /* now check if there are 2 or more free chunks */ + if (pBlock->pChunk->cAllocatedBlocks == 0) + { + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + uint32_t u32FreeChunks = 0; + + while (pChunk) + { + if (pChunk->cAllocatedBlocks == 0) + { + u32FreeChunks++; + } + + pChunk = pChunk->pNext; + } + + if (u32FreeChunks > 1) + { + /* Delete current chunk, it will also exclude all free blocks + * remaining in the chunk from the free list, so the pBlock + * will also be invalid after this. + */ + vbglPhysHeapChunkDelete (pBlock->pChunk); + } + } + + dumpheap ("post free"); + + vbglPhysHeapLeave (); +} + +DECLVBGL(int) VbglPhysHeapInit (void) +{ + int rc = VINF_SUCCESS; + + /* Allocate the first chunk of the heap. */ + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapChunkAlloc (0); + + if (!pBlock) + rc = VERR_NO_MEMORY; + + RTSemFastMutexCreate(&g_vbgldata.mutexHeap); + + return rc; +} + +DECLVBGL(void) VbglPhysHeapTerminate (void) +{ + while (g_vbgldata.pChunkHead) + { + vbglPhysHeapChunkDelete (g_vbgldata.pChunkHead); + } + + RTSemFastMutexDestroy(g_vbgldata.mutexHeap); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/SysHlp.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/SysHlp.c @@ -0,0 +1,343 @@ +/* $Id: SysHlp.cpp $ */ +/** @file + * VBoxGuestLibR0 - IDC with VBoxGuest and HGCM helpers. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#define LOG_GROUP LOG_GROUP_HGCM +#include + +#include +#include "SysHlp.h" + +#include + +#ifdef VBGL_VBOXGUEST + +#if !defined (RT_OS_WINDOWS) +# include +# include +#endif + + +/** + * Internal worker for locking a range of linear addresses. + * + * @returns VBox status code. + * @param ppvCtx Where to store context data. + * @param pv The start of the range. + * @param u32Size The size of the range. + * @param fWriteAccess Lock for read-write (true) or readonly (false). + * @param fFlags HGCM call flags, VBGLR0_HGCM_F_XXX. + */ +int vbglLockLinear(void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags) +{ + int rc = VINF_SUCCESS; +#ifndef RT_OS_WINDOWS + RTR0MEMOBJ MemObj = NIL_RTR0MEMOBJ; + uint32_t fAccess = RTMEM_PROT_READ | (fWriteAccess ? RTMEM_PROT_WRITE : 0); +#endif + + /* Zero size buffers shouldn't be locked. */ + if (u32Size == 0) + { + Assert(pv == NULL); +#ifdef RT_OS_WINDOWS + *ppvCtx = NULL; +#else + *ppvCtx = NIL_RTR0MEMOBJ; +#endif + return VINF_SUCCESS; + } + + /** @todo just use IPRT here. the extra allocation shouldn't matter much... + * Then we can move all this up one level even. */ +#ifdef RT_OS_WINDOWS + PMDL pMdl = IoAllocateMdl(pv, u32Size, FALSE, FALSE, NULL); + + if (pMdl == NULL) + { + rc = VERR_NOT_SUPPORTED; + AssertMsgFailed(("IoAllocateMdl %p %x failed!!\n", pv, u32Size)); + } + else + { + __try { + /* Calls to MmProbeAndLockPages must be enclosed in a try/except block. */ + MmProbeAndLockPages(pMdl, + /** @todo (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER? UserMode: KernelMode */ + KernelMode, + (fWriteAccess) ? IoModifyAccess : IoReadAccess); + + *ppvCtx = pMdl; + + } __except(EXCEPTION_EXECUTE_HANDLER) { + + IoFreeMdl(pMdl); + /** @todo */ + rc = VERR_INVALID_PARAMETER; + AssertMsgFailed(("MmProbeAndLockPages %p %x failed!!\n", pv, u32Size)); + } + } + +#else + /* + * Lock depending on context. + * + * Note: We will later use the memory object here to convert the HGCM + * linear buffer parameter into a physical page list. This is why + * we lock both kernel pages on all systems, even those where we + * know they aren't pageable. + */ + if ((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER) + rc = RTR0MemObjLockUser(&MemObj, (RTR3PTR)pv, u32Size, fAccess, NIL_RTR0PROCESS); + else + rc = RTR0MemObjLockKernel(&MemObj, pv, u32Size, fAccess); + if (RT_SUCCESS(rc)) + *ppvCtx = MemObj; + else + *ppvCtx = NIL_RTR0MEMOBJ; + +#endif + + return rc; +} + +void vbglUnlockLinear(void *pvCtx, void *pv, uint32_t u32Size) +{ +#ifdef RT_OS_WINDOWS + PMDL pMdl = (PMDL)pvCtx; + + Assert(pMdl); + if (pMdl != NULL) + { + MmUnlockPages(pMdl); + IoFreeMdl(pMdl); + } + +#else + RTR0MEMOBJ MemObj = (RTR0MEMOBJ)pvCtx; + int rc = RTR0MemObjFree(MemObj, false); + AssertRC(rc); + +#endif + + NOREF(pv); + NOREF(u32Size); +} + +#else /* !VBGL_VBOXGUEST */ + +# ifdef RT_OS_OS2 +# include /* for VBOXGUESTOS2IDCCONNECT */ +RT_C_DECLS_BEGIN +/* + * On OS/2 we'll do the connecting in the assembly code of the + * client driver, exporting a g_VBoxGuestIDC symbol containing + * the connection information obtained from the 16-bit IDC. + */ +extern VBOXGUESTOS2IDCCONNECT g_VBoxGuestIDC; +RT_C_DECLS_END +# endif + +# if !defined(RT_OS_OS2) \ + && !defined(RT_OS_WINDOWS) +RT_C_DECLS_BEGIN +extern DECLVBGL(void *) VBoxGuestIDCOpen(uint32_t *pu32Version); +extern DECLVBGL(void) VBoxGuestIDCClose(void *pvOpaque); +extern DECLVBGL(int) VBoxGuestIDCCall(void *pvOpaque, unsigned int iCmd, void *pvData, size_t cbSize, size_t *pcbReturn); +RT_C_DECLS_END +# endif + +bool vbglDriverIsOpened(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + return pDriver->pFileObject != NULL; +# elif defined (RT_OS_OS2) + return pDriver->u32Session != UINT32_MAX && pDriver->u32Session != 0; +# else + return pDriver->pvOpaque != NULL; +# endif +} + +int vbglDriverOpen(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + UNICODE_STRING uszDeviceName; + RtlInitUnicodeString(&uszDeviceName, L"\\Device\\VBoxGuest"); + + PDEVICE_OBJECT pDeviceObject = NULL; + PFILE_OBJECT pFileObject = NULL; + + NTSTATUS rc = IoGetDeviceObjectPointer(&uszDeviceName, FILE_ALL_ACCESS, &pFileObject, &pDeviceObject); + if (NT_SUCCESS(rc)) + { + Log(("vbglDriverOpen VBoxGuest successful pDeviceObject=%x\n", pDeviceObject)); + pDriver->pDeviceObject = pDeviceObject; + pDriver->pFileObject = pFileObject; + return VINF_SUCCESS; + } + /** @todo return RTErrConvertFromNtStatus(rc)! */ + Log(("vbglDriverOpen VBoxGuest failed with ntstatus=%x\n", rc)); + return rc; + +# elif defined (RT_OS_OS2) + /* + * Just check whether the connection was made or not. + */ + if ( g_VBoxGuestIDC.u32Version == VMMDEV_VERSION + && RT_VALID_PTR(g_VBoxGuestIDC.u32Session) + && RT_VALID_PTR(g_VBoxGuestIDC.pfnServiceEP)) + { + pDriver->u32Session = g_VBoxGuestIDC.u32Session; + return VINF_SUCCESS; + } + pDriver->u32Session = UINT32_MAX; + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; + +# else + uint32_t u32VMMDevVersion; + pDriver->pvOpaque = VBoxGuestIDCOpen(&u32VMMDevVersion); + if ( pDriver->pvOpaque + && u32VMMDevVersion == VMMDEV_VERSION) + return VINF_SUCCESS; + + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; +# endif +} + +# ifdef RT_OS_WINDOWS +static NTSTATUS vbglDriverIOCtlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) +{ + Log(("VBGL completion %x\n", Irp)); + + KEVENT *pEvent = (KEVENT *)Context; + KeSetEvent(pEvent, IO_NO_INCREMENT, FALSE); + + return STATUS_MORE_PROCESSING_REQUIRED; +} +# endif + +int vbglDriverIOCtl(VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData) +{ + Log(("vbglDriverIOCtl: pDriver: %p, Func: %x, pvData: %p, cbData: %d\n", pDriver, u32Function, pvData, cbData)); + +# ifdef RT_OS_WINDOWS + KEVENT Event; + + KeInitializeEvent(&Event, NotificationEvent, FALSE); + + /* Have to use the IoAllocateIRP method because this code is generic and + * must work in any thread context. + * The IoBuildDeviceIoControlRequest, which was used here, does not work + * when APCs are disabled, for example. + */ + PIRP irp = IoAllocateIrp(pDriver->pDeviceObject->StackSize, FALSE); + + Log(("vbglDriverIOCtl: irp %p, IRQL = %d\n", irp, KeGetCurrentIrql())); + + if (irp == NULL) + { + Log(("vbglDriverIOCtl: IRP allocation failed!\n")); + return VERR_NO_MEMORY; + } + + /* + * Setup the IRP_MJ_DEVICE_CONTROL IRP. + */ + + PIO_STACK_LOCATION nextStack = IoGetNextIrpStackLocation(irp); + + nextStack->MajorFunction = IRP_MJ_DEVICE_CONTROL; + nextStack->MinorFunction = 0; + nextStack->DeviceObject = pDriver->pDeviceObject; + nextStack->Parameters.DeviceIoControl.OutputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.InputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.IoControlCode = u32Function; + nextStack->Parameters.DeviceIoControl.Type3InputBuffer = pvData; + + irp->AssociatedIrp.SystemBuffer = pvData; /* Output buffer. */ + irp->MdlAddress = NULL; + + /* A completion routine is required to signal the Event. */ + IoSetCompletionRoutine(irp, vbglDriverIOCtlCompletion, &Event, TRUE, TRUE, TRUE); + + NTSTATUS rc = IoCallDriver(pDriver->pDeviceObject, irp); + + if (NT_SUCCESS (rc)) + { + /* Wait the event to be signalled by the completion routine. */ + KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); + + rc = irp->IoStatus.Status; + + Log(("vbglDriverIOCtl: wait completed IRQL = %d\n", KeGetCurrentIrql())); + } + + IoFreeIrp(irp); + + if (rc != STATUS_SUCCESS) + Log(("vbglDriverIOCtl: ntstatus=%x\n", rc)); + + if (NT_SUCCESS(rc)) + return VINF_SUCCESS; + if (rc == STATUS_INVALID_PARAMETER) + return VERR_INVALID_PARAMETER; + if (rc == STATUS_INVALID_BUFFER_SIZE) + return VERR_OUT_OF_RANGE; + return VERR_VBGL_IOCTL_FAILED; + +# elif defined (RT_OS_OS2) + if ( pDriver->u32Session + && pDriver->u32Session == g_VBoxGuestIDC.u32Session) + return g_VBoxGuestIDC.pfnServiceEP(pDriver->u32Session, u32Function, pvData, cbData, NULL); + + Log(("vbglDriverIOCtl: No connection\n")); + return VERR_WRONG_ORDER; + +# else + return VBoxGuestIDCCall(pDriver->pvOpaque, u32Function, pvData, cbData, NULL); +# endif +} + +void vbglDriverClose(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + Log(("vbglDriverClose pDeviceObject=%x\n", pDriver->pDeviceObject)); + ObDereferenceObject(pDriver->pFileObject); + pDriver->pFileObject = NULL; + pDriver->pDeviceObject = NULL; + +# elif defined (RT_OS_OS2) + pDriver->u32Session = 0; + +# else + VBoxGuestIDCClose(pDriver->pvOpaque); + pDriver->pvOpaque = NULL; +# endif +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/SysHlp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/SysHlp.h @@ -0,0 +1,122 @@ +/* $Id: SysHlp.h $ */ +/** @file + * VBoxGuestLibR0 - System dependent helpers internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_SysHlp_h +#define ___VBoxGuestLib_SysHlp_h + +#include + +#ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap +# pragma warning(disable : 4163) +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# endif +/* XP DDK #defines ExFreePool to ExFreePoolWithTag. The latter does not exist on NT4, so... + * The same for ExAllocatePool. + */ +# undef ExAllocatePool +# undef ExFreePool +#endif + +typedef struct _VBGLDRIVER +{ +#ifdef RT_OS_WINDOWS + PDEVICE_OBJECT pDeviceObject; + PFILE_OBJECT pFileObject; +#elif defined (RT_OS_OS2) + uint32_t u32Session; /**< just for sanity checking. */ +#else /* PORTME */ + void *pvOpaque; +#endif +} VBGLDRIVER; + +int vbglLockLinear(void **ppvCtx, void *pv, uint32_t cb, bool fWriteAccess, uint32_t fFlags); +void vbglUnlockLinear(void *pvCtx, void *pv, uint32_t cb); + + +#ifndef VBGL_VBOXGUEST + +/** + * Open VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox status code + */ +int vbglDriverOpen(VBGLDRIVER *pDriver); + +/** + * Answers whether the VBoxGuest driver is opened + * + * @param pDriver Pointer to the driver structure. + * + * @return true - if opened, false - otherwise + */ +bool vbglDriverIsOpened(VBGLDRIVER *pDriver); + +/** + * Call VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * @param u32Function Function code. + * @param pvData Pointer to supplied in/out data buffer. + * @param cbData Size of data buffer. + * + * @returns VBox status code + */ +int vbglDriverIOCtl(VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData); + +/** + * Close VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @returns VBox status code + */ +void vbglDriverClose(VBGLDRIVER *pDriver); + +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBGLInternal.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBGLInternal.h @@ -0,0 +1,173 @@ +/* $Id: VBGLInternal.h $ */ +/** @file + * VBoxGuestLibR0 - Internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBGLInternal_h +#define ___VBoxGuestLib_VBGLInternal_h + +#include +#include +#include + +#include + + +#ifdef RT_OS_WINDOWS /** @todo dprintf() -> Log() */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define dprintf(a) RTLogBackdoorPrintf a +# else +# define dprintf(a) do {} while (0) +# endif +#else +# define dprintf(a) Log(a) +#endif + +#include "SysHlp.h" + +#pragma pack(4) /** @todo r=bird: What do we need packing for here? None of these structures are shared between drivers AFAIK. */ + +struct _VBGLPHYSHEAPBLOCK; +typedef struct _VBGLPHYSHEAPBLOCK VBGLPHYSHEAPBLOCK; +struct _VBGLPHYSHEAPCHUNK; +typedef struct _VBGLPHYSHEAPCHUNK VBGLPHYSHEAPCHUNK; + +#ifndef VBGL_VBOXGUEST +struct VBGLHGCMHANDLEDATA +{ + uint32_t fAllocated; + VBGLDRIVER driver; +}; +#endif + +enum VbglLibStatus +{ + VbglStatusNotInitialized = 0, + VbglStatusInitializing, + VbglStatusReady +}; + +/** + * Global VBGL ring-0 data. + * Lives in VbglR0Init.cpp. + */ +typedef struct VBGLDATA +{ + enum VbglLibStatus status; + + RTIOPORT portVMMDev; + + VMMDevMemory *pVMMDevMemory; + + /** + * Physical memory heap data. + * @{ + */ + + VBGLPHYSHEAPBLOCK *pFreeBlocksHead; + VBGLPHYSHEAPBLOCK *pAllocBlocksHead; + VBGLPHYSHEAPCHUNK *pChunkHead; + + RTSEMFASTMUTEX mutexHeap; + /** @} */ + + /** + * The host version data. + */ + VMMDevReqHostVersion hostVersion; + + +#ifndef VBGL_VBOXGUEST + /** + * Handle for the main driver instance. + * @{ + */ + + RTSEMMUTEX mutexDriverInit; + + VBGLDRIVER driver; + + /** @} */ + + /** + * Fast heap for HGCM handles data. + * @{ + */ + + RTSEMFASTMUTEX mutexHGCMHandle; + + struct VBGLHGCMHANDLEDATA aHGCMHandleData[64]; + + /** @} */ +#endif +} VBGLDATA; + + +#pragma pack() + +#ifndef VBGL_DECL_DATA +extern VBGLDATA g_vbgldata; +#endif + +/** + * Internal macro for checking whether we can pass physical page lists to the + * host. + * + * ASSUMES that vbglR0Enter has been called already. + * + * @param a_fLocked For the windows shared folders workarounds. + * + * @remarks Disabled the PageList feature for locked memory on Windows, + * because a new MDL is created by VBGL to get the page addresses + * and the pages from the MDL are marked as dirty when they should not. + */ +#if defined(RT_OS_WINDOWS) +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !(a_fLocked) && (g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#else +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !!(g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#endif + +int vbglR0Enter (void); + +#ifdef VBOX_WITH_HGCM +# ifndef VBGL_VBOXGUEST +int vbglR0HGCMInit(void); +int vbglR0HGCMTerminate(void); +# endif +struct VBGLHGCMHANDLEDATA *vbglHGCMHandleAlloc(void); +void vbglHGCMHandleFree(struct VBGLHGCMHANDLEDATA *pHandle); +#endif /* VBOX_WITH_HGCM */ + +#ifndef VBGL_VBOXGUEST +/** + * Get a handle to the main VBoxGuest driver. + * @returns VERR_TRY_AGAIN if the main driver has not yet been loaded. + */ +int vbglGetDriver(VBGLDRIVER **ppDriver); +#endif + +#endif /* !___VBoxGuestLib_VBGLInternal_h */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBox/log-vbox.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBox/log-vbox.c @@ -0,0 +1,506 @@ +/* $Id: log-vbox.cpp $ */ +/** @file + * VirtualBox Runtime - Logging configuration. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/** @page pg_rtlog Runtime - Logging + * + * VBox uses the IPRT logging system which supports group level flags and multiple + * destinations. The GC logging is making it even more interesting since GC logging will + * have to be buffered and written when back in host context. + * + * [more later] + * + * + * @section sec_logging_destination The Destination Specifier. + * + * The {logger-env-base}_DEST environment variable can be used to specify where + * the log output goes. The following specifiers are recognized: + * + * - file=\ + * This sets the logger output filename to \. Not formatting + * or anything is supported. Each logger specifies a default name if + * file logging should be enabled by default. + * + * - nofile + * This disables the file output. + * + * - stdout + * Enables logger output to stdout. + * + * - nostdout + * Disables logger output to stdout. + * + * - stderr + * Enables logger output to stderr. + * + * - nostderr + * Disables logger output to stderr. + * + * - debugger + * Enables logger output to native debugger. (Win32/64 only) + * + * - nodebugger + * Disables logger output to native debugger. (Win32/64 only) + * + * - user + * Enables logger output to special backdoor if in guest r0. + * + * - nodebugger + * Disables logger output to special user stream. + * + * + * + * @section sec_logging_group The Group Specifier. + * + * The {logger-env-base} environment variable can be used to specify which + * logger groups to enable and which to disable. By default all groups are + * disabled. For your convenience this specifier is case in-sensitive (ASCII). + * + * The specifier is evaluated from left to right. + * + * [more later] + * + * The groups settings can be reprogrammed during execution using the + * RTLogGroupSettings() command and a group specifier. + * + * + * + * @section sec_logging_default The Default Logger + * + * The default logger uses VBOX_LOG_DEST as destination specifier. File output is + * enabled by default and goes to a file "./VBox-\.log". + * + * The default logger have all groups turned off by default to force the developer + * to be careful with what log information to collect - logging everything is + * generally NOT a good idea. + * + * The log groups of the default logger can be found in the LOGGROUP in enum. The + * VBOX_LOG environment variable and the .log debugger command can be used to + * configure the groups. + * + * Each group have flags in addition to the enable/disable flag. These flags can + * be appended to the group name using dot separators. The flags correspond to + * RTLOGGRPFLAGS and have a short and a long version: + * + * - e - Enabled: Whether the group is enabled at all. + * - l - Level2: Level-2 logging. + * - f - Flow: Execution flow logging (entry messages) + * - s - Sander: Special Sander logging messages. + * - b - Bird: Special Bird logging messages. + * + * @todo Update this section... + * + * Example: + * + * VBOX_LOG=+all+pgm.e.s.b.z.l-qemu + * + * Space and ';' separators are allowed: + * + * VBOX_LOG=+all +pgm.e.s.b.z.l ; - qemu + * + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#ifdef IN_RING3 +# if defined(RT_OS_WINDOWS) +# include +# elif defined(RT_OS_LINUX) +# include +# elif defined(RT_OS_FREEBSD) +# include +# include +# include +# include +# include +# elif defined(RT_OS_HAIKU) +# include +# elif defined(RT_OS_SOLARIS) +# define _STRUCTURED_PROC 1 +# undef _FILE_OFFSET_BITS /* procfs doesn't like this */ +# include +# include +# elif defined(RT_OS_OS2) +# include +# endif +#endif + +#include +#include +#include +#include +#ifdef IN_RING3 +# include +# include +# include +# include +# include +# include +# include +#endif +#if defined(IN_RING0) && defined(RT_OS_DARWIN) +# include +# include +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The default logger. */ +static PRTLOGGER g_pLogger = NULL; +/** The default logger groups. + * This must match LOGGROUP! */ +static const char *g_apszGroups[] = +VBOX_LOGGROUP_NAMES; + + +/** + * Creates the default logger instance for a VBox process. + * + * @returns Pointer to the logger instance. + */ +RTDECL(PRTLOGGER) RTLogDefaultInit(void) +{ + /* + * Initialize the default logger instance. + * Take care to do this once and not recursively. + */ + static volatile uint32_t fInitializing = 0; + PRTLOGGER pLogger; + int rc; + + if (g_pLogger || !ASMAtomicCmpXchgU32(&fInitializing, 1, 0)) + return g_pLogger; + +#ifdef IN_RING3 + /* + * Assert the group definitions. + */ +#define ASSERT_LOG_GROUP(grp) ASSERT_LOG_GROUP2(LOG_GROUP_##grp, #grp) +#define ASSERT_LOG_GROUP2(def, str) \ + do { if (strcmp(g_apszGroups[def], str)) {printf("%s='%s' expects '%s'\n", #def, g_apszGroups[def], str); RTAssertDoPanic(); } } while (0) + ASSERT_LOG_GROUP(DEFAULT); + ASSERT_LOG_GROUP(AUDIO_MIXER); + ASSERT_LOG_GROUP(AUDIO_MIXER_BUFFER); + ASSERT_LOG_GROUP(CFGM); + ASSERT_LOG_GROUP(CPUM); + ASSERT_LOG_GROUP(CSAM); + ASSERT_LOG_GROUP(DBGC); + ASSERT_LOG_GROUP(DBGF); + ASSERT_LOG_GROUP(DBGF_INFO); + ASSERT_LOG_GROUP(DEV); + ASSERT_LOG_GROUP(DEV_AC97); + ASSERT_LOG_GROUP(DEV_ACPI); + ASSERT_LOG_GROUP(DEV_APIC); + ASSERT_LOG_GROUP(DEV_FDC); + ASSERT_LOG_GROUP(DEV_HDA); + ASSERT_LOG_GROUP(DEV_HDA_CODEC); + ASSERT_LOG_GROUP(DEV_HPET); + ASSERT_LOG_GROUP(DEV_IDE); + ASSERT_LOG_GROUP(DEV_KBD); + ASSERT_LOG_GROUP(DEV_LPC); + ASSERT_LOG_GROUP(DEV_NE2000); + ASSERT_LOG_GROUP(DEV_PC); + ASSERT_LOG_GROUP(DEV_PC_ARCH); + ASSERT_LOG_GROUP(DEV_PC_BIOS); + ASSERT_LOG_GROUP(DEV_PCI); + ASSERT_LOG_GROUP(DEV_PCNET); + ASSERT_LOG_GROUP(DEV_PIC); + ASSERT_LOG_GROUP(DEV_PIT); + ASSERT_LOG_GROUP(DEV_RTC); + ASSERT_LOG_GROUP(DEV_SB16); + ASSERT_LOG_GROUP(DEV_SERIAL); + ASSERT_LOG_GROUP(DEV_SMC); + ASSERT_LOG_GROUP(DEV_VGA); + ASSERT_LOG_GROUP(DEV_VMM); + ASSERT_LOG_GROUP(DEV_VMM_STDERR); + ASSERT_LOG_GROUP(DIS); + ASSERT_LOG_GROUP(DRV); + ASSERT_LOG_GROUP(DRV_ACPI); + ASSERT_LOG_GROUP(DRV_AUDIO); + ASSERT_LOG_GROUP(DRV_BLOCK); + ASSERT_LOG_GROUP(DRV_FLOPPY); + ASSERT_LOG_GROUP(DRV_HOST_AUDIO); + ASSERT_LOG_GROUP(DRV_HOST_DVD); + ASSERT_LOG_GROUP(DRV_HOST_FLOPPY); + ASSERT_LOG_GROUP(DRV_ISO); + ASSERT_LOG_GROUP(DRV_KBD_QUEUE); + ASSERT_LOG_GROUP(DRV_MOUSE_QUEUE); + ASSERT_LOG_GROUP(DRV_NAT); + ASSERT_LOG_GROUP(DRV_RAW_IMAGE); + ASSERT_LOG_GROUP(DRV_TUN); + ASSERT_LOG_GROUP(DRV_USBPROXY); + ASSERT_LOG_GROUP(DRV_VBOXHDD); + ASSERT_LOG_GROUP(DRV_VRDE_AUDIO); + ASSERT_LOG_GROUP(DRV_VSWITCH); + ASSERT_LOG_GROUP(DRV_VUSB); + ASSERT_LOG_GROUP(EM); + ASSERT_LOG_GROUP(GUI); + ASSERT_LOG_GROUP(HGCM); + ASSERT_LOG_GROUP(HM); + ASSERT_LOG_GROUP(IOM); + ASSERT_LOG_GROUP(LWIP); + ASSERT_LOG_GROUP(MAIN); + ASSERT_LOG_GROUP(MM); + ASSERT_LOG_GROUP(MM_HEAP); + ASSERT_LOG_GROUP(MM_HYPER); + ASSERT_LOG_GROUP(MM_HYPER_HEAP); + ASSERT_LOG_GROUP(MM_PHYS); + ASSERT_LOG_GROUP(MM_POOL); + ASSERT_LOG_GROUP(NAT_SERVICE); + ASSERT_LOG_GROUP(NET_SERVICE); + ASSERT_LOG_GROUP(PATM); + ASSERT_LOG_GROUP(PDM); + ASSERT_LOG_GROUP(PDM_DEVICE); + ASSERT_LOG_GROUP(PDM_DRIVER); + ASSERT_LOG_GROUP(PDM_LDR); + ASSERT_LOG_GROUP(PDM_QUEUE); + ASSERT_LOG_GROUP(PGM); + ASSERT_LOG_GROUP(PGM_POOL); + ASSERT_LOG_GROUP(REM); + ASSERT_LOG_GROUP(REM_DISAS); + ASSERT_LOG_GROUP(REM_HANDLER); + ASSERT_LOG_GROUP(REM_IOPORT); + ASSERT_LOG_GROUP(REM_MMIO); + ASSERT_LOG_GROUP(REM_PRINTF); + ASSERT_LOG_GROUP(REM_RUN); + ASSERT_LOG_GROUP(SELM); + ASSERT_LOG_GROUP(SSM); + ASSERT_LOG_GROUP(STAM); + ASSERT_LOG_GROUP(SUP); + ASSERT_LOG_GROUP(TM); + ASSERT_LOG_GROUP(TRPM); + ASSERT_LOG_GROUP(VM); + ASSERT_LOG_GROUP(VMM); + ASSERT_LOG_GROUP(VRDP); +#undef ASSERT_LOG_GROUP +#undef ASSERT_LOG_GROUP2 +#endif /* IN_RING3 */ + + /* + * Create the default logging instance. + */ +#ifdef IN_RING3 +# ifndef IN_GUEST + char szExecName[RTPATH_MAX]; + if (!RTProcGetExecutablePath(szExecName, sizeof(szExecName))) + strcpy(szExecName, "VBox"); + RTTIMESPEC TimeSpec; + RTTIME Time; + RTTimeExplode(&Time, RTTimeNow(&TimeSpec)); + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_FILE, + "./%04d-%02d-%02d-%02d-%02d-%02d.%03d-%s-%d.log", + Time.i32Year, Time.u8Month, Time.u8MonthDay, Time.u8Hour, Time.u8Minute, Time.u8Second, Time.u32Nanosecond / 10000000, + RTPathFilename(szExecName), RTProcSelf()); + if (RT_SUCCESS(rc)) + { + /* + * Write a log header. + */ + char szBuf[RTPATH_MAX]; + RTTimeSpecToString(&TimeSpec, szBuf, sizeof(szBuf)); + RTLogLoggerEx(pLogger, 0, ~0U, "Log created: %s\n", szBuf); + RTLogLoggerEx(pLogger, 0, ~0U, "Executable: %s\n", szExecName); + + /* executable and arguments - tricky and all platform specific. */ +# if defined(RT_OS_WINDOWS) + RTLogLoggerEx(pLogger, 0, ~0U, "Commandline: %ls\n", GetCommandLineW()); + +# elif defined(RT_OS_SOLARIS) + psinfo_t psi; + char szArgFileBuf[80]; + RTStrPrintf(szArgFileBuf, sizeof(szArgFileBuf), "/proc/%ld/psinfo", (long)getpid()); + FILE* pFile = fopen(szArgFileBuf, "rb"); + if (pFile) + { + if (fread(&psi, sizeof(psi), 1, pFile) == 1) + { +# if 0 /* 100% safe:*/ + RTLogLoggerEx(pLogger, 0, ~0U, "Args: %s\n", psi.pr_psargs); +# else /* probably safe: */ + const char * const *argv = (const char * const *)psi.pr_argv; + for (int iArg = 0; iArg < psi.pr_argc; iArg++) + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%d]: %s\n", iArg, argv[iArg]); +# endif + + } + fclose(pFile); + } + +# elif defined(RT_OS_LINUX) + FILE *pFile = fopen("/proc/self/cmdline", "r"); + if (pFile) + { + /* braindead */ + unsigned iArg = 0; + int ch; + bool fNew = true; + while (!feof(pFile) && (ch = fgetc(pFile)) != EOF) + { + if (fNew) + { + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%u]: ", iArg++); + fNew = false; + } + if (ch) + RTLogLoggerEx(pLogger, 0, ~0U, "%c", ch); + else + { + RTLogLoggerEx(pLogger, 0, ~0U, "\n"); + fNew = true; + } + } + if (!fNew) + RTLogLoggerEx(pLogger, 0, ~0U, "\n"); + fclose(pFile); + } + +# elif defined(RT_OS_HAIKU) + team_info info; + if (get_team_info(0, &info) == B_OK) + { + /* there is an info.argc, but no way to know arg boundaries */ + RTLogLoggerEx(pLogger, 0, ~0U, "Commandline: %.64s\n", info.args); + } + +# elif defined(RT_OS_FREEBSD) + /* Retrieve the required length first */ + int aiName[4]; + aiName[0] = CTL_KERN; + aiName[1] = KERN_PROC; + aiName[2] = KERN_PROC_ARGS; /* Introduced in FreeBSD 4.0 */ + aiName[3] = getpid(); + size_t cchArgs = 0; + int rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), NULL, &cchArgs, NULL, 0); + if (cchArgs > 0) + { + char *pszArgFileBuf = (char *)RTMemAllocZ(cchArgs + 1 /* Safety */); + if (pszArgFileBuf) + { + /* Retrieve the argument list */ + rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), pszArgFileBuf, &cchArgs, NULL, 0); + if (!rcBSD) + { + unsigned iArg = 0; + size_t off = 0; + while (off < cchArgs) + { + size_t cchArg = strlen(&pszArgFileBuf[off]); + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%u]: %s\n", iArg, &pszArgFileBuf[off]); + + /* advance */ + off += cchArg + 1; + iArg++; + } + } + RTMemFree(pszArgFileBuf); + } + } + +# elif defined(RT_OS_OS2) || defined(RT_OS_DARWIN) + /* commandline? */ +# else +# error needs porting. +# endif + } + +# else /* IN_GUEST */ + /* The user destination is backdoor logging. */ + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_USER, "VBox.log"); +# endif /* IN_GUEST */ + +#else /* IN_RING0 */ + + /* Some platforms has trouble allocating memory with interrupts and/or + preemption disabled. Check and fail before we panic. */ +# if defined(RT_OS_DARWIN) + if ( !ASMIntAreEnabled() + || !RTThreadPreemptIsEnabled(NIL_RTTHREAD)) + return NULL; +# endif + +# ifndef IN_GUEST + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_FILE, "VBox-ring0.log"); +# else /* IN_GUEST */ + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_USER, "VBox-ring0.log"); +# endif /* IN_GUEST */ + if (RT_SUCCESS(rc)) + { + /* + * This is where you set your ring-0 logging preferences. + * + * On platforms which don't differ between debugger and kernel + * log printing, STDOUT is gonna be a stub and the DEBUGGER + * destination is the one doing all the work. On platforms + * that do differ (like Darwin), STDOUT is the kernel log. + */ +# if defined(DEBUG_bird) + /*RTLogGroupSettings(pLogger, "all=~0 -default.l6.l5.l4.l3");*/ + RTLogFlags(pLogger, "enabled unbuffered pid tid"); +# ifndef IN_GUEST + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# endif +# if defined(DEBUG_sandervl) && !defined(IN_GUEST) + RTLogGroupSettings(pLogger, "+all"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_ramshankar) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_aleksey) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "net_flt_drv.e.l.f.l3.l4.l5 +net_adp_drv.e.l.f.l3.l4.l5"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if defined(DEBUG_andy) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered pid tid"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if defined(DEBUG_misha) /* Guest ring-0 as well */ + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_michael) && defined(IN_GUEST) + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if 0 /* vboxdrv logging - ATTENTION: this is what we're referring to guys! Change to '# if 1'. */ + RTLogGroupSettings(pLogger, "all=~0 -default.l6.l5.l4.l3"); + RTLogFlags(pLogger, "enabled unbuffered tid"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif + } +#endif /* IN_RING0 */ + return g_pLogger = RT_SUCCESS(rc) ? pLogger : NULL; +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBox/logbackdoor.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBox/logbackdoor.c @@ -0,0 +1,94 @@ +/* $Id: logbackdoor.cpp $ */ +/** @file + * VirtualBox Runtime - Guest Backdoor Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" +#include +#include +#ifdef IN_GUEST_R3 +# include +#endif + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static DECLCALLBACK(size_t) rtLogBackdoorOutput(void *pv, const char *pachChars, size_t cbChars); + + +RTDECL(size_t) RTLogBackdoorPrintf(const char *pszFormat, ...) +{ + va_list args; + size_t cb; + + va_start(args, pszFormat); + cb = RTLogBackdoorPrintfV(pszFormat, args); + va_end(args); + + return cb; +} + +RT_EXPORT_SYMBOL(RTLogBackdoorPrintf); + + +RTDECL(size_t) RTLogBackdoorPrintfV(const char *pszFormat, va_list args) +{ + return RTLogFormatV(rtLogBackdoorOutput, NULL, pszFormat, args); +} + +RT_EXPORT_SYMBOL(RTLogBackdoorPrintfV); + + +/** + * Callback for RTLogFormatV which writes to the backdoor. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogBackdoorOutput(void *pv, const char *pachChars, size_t cbChars) +{ + RTLogWriteUser(pachChars, cbChars); + return cbChars; +} + + +RTDECL(void) RTLogWriteUser(const char *pch, size_t cb) +{ +#ifdef IN_GUEST_R3 + VbglR3WriteLog(pch, cb); +#else /* !IN_GUEST_R3 */ + const uint8_t *pau8 = (const uint8_t *)pch; + if (cb > 1) + ASMOutStrU8(RTLOG_DEBUG_PORT, pau8, cb); + else if (cb) + ASMOutU8(RTLOG_DEBUG_PORT, *pau8); +#endif /* !IN_GUEST_R3 */ +} + +RT_EXPORT_SYMBOL(RTLogWriteUser); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBoxGuest-linux.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBoxGuest-linux.c @@ -0,0 +1,1086 @@ +/* $Rev: 103598 $ */ +/** @file + * VBoxGuest - Linux specifics. + * + * Note. Unfortunately, the difference between this and SUPDrv-linux.c is + * a little bit too big to be helpful. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP LOG_GROUP_SUP_DRV + +#include "the-linux-kernel.h" + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15) +# define VBOXGUEST_WITH_INPUT_DRIVER +#endif + +#include "VBoxGuestInternal.h" +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +# include +#endif +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/** The device name. */ +#define DEVICE_NAME "vboxguest" +/** The device name for the device node open to everyone. */ +#define DEVICE_NAME_USER "vboxuser" +/** The name of the PCI driver */ +#define DRIVER_NAME DEVICE_NAME + + +/* 2.4.x compatibility macros that may or may not be defined. */ +#ifndef IRQ_RETVAL +# define irqreturn_t void +# define IRQ_RETVAL(n) +#endif + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static void vgdrvLinuxTermPci(struct pci_dev *pPciDev); +static int vgdrvLinuxProbePci(struct pci_dev *pPciDev, const struct pci_device_id *id); +static int vgdrvLinuxModInit(void); +static void vgdrvLinuxModExit(void); +static int vgdrvLinuxOpen(struct inode *pInode, struct file *pFilp); +static int vgdrvLinuxRelease(struct inode *pInode, struct file *pFilp); +#ifdef HAVE_UNLOCKED_IOCTL +static long vgdrvLinuxIOCtl(struct file *pFilp, unsigned int uCmd, unsigned long ulArg); +#else +static int vgdrvLinuxIOCtl(struct inode *pInode, struct file *pFilp, unsigned int uCmd, unsigned long ulArg); +#endif +static int vgdrvLinuxFAsync(int fd, struct file *pFile, int fOn); +static unsigned int vgdrvLinuxPoll(struct file *pFile, poll_table *pPt); +static ssize_t vgdrvLinuxRead(struct file *pFile, char *pbBuf, size_t cbRead, loff_t *poff); + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** + * Device extention & session data association structure. + */ +static VBOXGUESTDEVEXT g_DevExt; +/** The PCI device. */ +static struct pci_dev *g_pPciDev = NULL; +/** The base of the I/O port range. */ +static RTIOPORT g_IOPortBase; +/** The base of the MMIO range. */ +static RTHCPHYS g_MMIOPhysAddr = NIL_RTHCPHYS; +/** The size of the MMIO range as seen by PCI. */ +static uint32_t g_cbMMIO; +/** The pointer to the mapping of the MMIO range. */ +static void *g_pvMMIOBase; +/** Wait queue used by polling. */ +static wait_queue_head_t g_PollEventQueue; +/** Asynchronous notification stuff. */ +static struct fasync_struct *g_pFAsyncQueue; +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +/** Pre-allocated mouse status VMMDev request for use in the IRQ + * handler. */ +static VMMDevReqMouseStatus *g_pMouseStatusReq; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +/** Whether we've create the logger or not. */ +static volatile bool g_fLoggerCreated; +/** Release logger group settings. */ +static char g_szLogGrp[128]; +/** Release logger flags settings. */ +static char g_szLogFlags[128]; +/** Release logger destination settings. */ +static char g_szLogDst[128]; +# if 0 +/** Debug logger group settings. */ +static char g_szDbgLogGrp[128]; +/** Debug logger flags settings. */ +static char g_szDbgLogFlags[128]; +/** Debug logger destination settings. */ +static char g_szDbgLogDst[128]; +# endif +#endif + +/** The input device handle */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +static struct input_dev *g_pInputDevice = NULL; +#endif + +/** The file_operations structure. */ +static struct file_operations g_FileOps = +{ + owner: THIS_MODULE, + open: vgdrvLinuxOpen, + release: vgdrvLinuxRelease, +#ifdef HAVE_UNLOCKED_IOCTL + unlocked_ioctl: vgdrvLinuxIOCtl, +#else + ioctl: vgdrvLinuxIOCtl, +#endif + fasync: vgdrvLinuxFAsync, + read: vgdrvLinuxRead, + poll: vgdrvLinuxPoll, + llseek: no_llseek, +}; + +/** The miscdevice structure. */ +static struct miscdevice g_MiscDevice = +{ + minor: MISC_DYNAMIC_MINOR, + name: DEVICE_NAME, + fops: &g_FileOps, +}; + +/** The file_operations structure for the user device. + * @remarks For the time being we'll be using the same implementation as + * /dev/vboxguest here. */ +static struct file_operations g_FileOpsUser = +{ + owner: THIS_MODULE, + open: vgdrvLinuxOpen, + release: vgdrvLinuxRelease, +#ifdef HAVE_UNLOCKED_IOCTL + unlocked_ioctl: vgdrvLinuxIOCtl, +#else + ioctl: vgdrvLinuxIOCtl, +#endif +}; + +/** The miscdevice structure for the user device. */ +static struct miscdevice g_MiscDeviceUser = +{ + minor: MISC_DYNAMIC_MINOR, + name: DEVICE_NAME_USER, + fops: &g_FileOpsUser, +}; + + +/** PCI hotplug structure. */ +static const struct pci_device_id +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) +__devinitdata +#endif +g_VBoxGuestPciId[] = +{ + { + vendor: VMMDEV_VENDORID, + device: VMMDEV_DEVICEID + }, + { + /* empty entry */ + } +}; + +MODULE_DEVICE_TABLE(pci, g_VBoxGuestPciId); + +/** Structure for registering the PCI driver. */ +static struct pci_driver g_PciDriver = +{ + name: DRIVER_NAME, + id_table: g_VBoxGuestPciId, + probe: vgdrvLinuxProbePci, + remove: vgdrvLinuxTermPci +}; + +static PVBOXGUESTSESSION g_pKernelSession = NULL; + + + +/** + * Converts a VBox status code to a linux error code. + * + * @returns corresponding negative linux error code. + * @param rc supdrv error code (SUPDRV_ERR_* defines). + */ +static int vgdrvLinuxConvertToNegErrno(int rc) +{ + if ( rc > -1000 + && rc < 1000) + return -RTErrConvertToErrno(rc); + switch (rc) + { + case VERR_HGCM_SERVICE_NOT_FOUND: return -ESRCH; + case VINF_HGCM_CLIENT_REJECTED: return 0; + case VERR_HGCM_INVALID_CMD_ADDRESS: return -EFAULT; + case VINF_HGCM_ASYNC_EXECUTE: return 0; + case VERR_HGCM_INTERNAL: return -EPROTO; + case VERR_HGCM_INVALID_CLIENT_ID: return -EINVAL; + case VINF_HGCM_SAVE_STATE: return 0; + /* No reason to return this to a guest */ + // case VERR_HGCM_SERVICE_EXISTS: return -EEXIST; + default: + AssertMsgFailed(("Unhandled error code %Rrc\n", rc)); + return -EPROTO; + } +} + + +/** + * Does the PCI detection and init of the device. + * + * @returns 0 on success, negated errno on failure. + */ +static int vgdrvLinuxProbePci(struct pci_dev *pPciDev, const struct pci_device_id *id) +{ + int rc; + + NOREF(id); + AssertReturn(!g_pPciDev, -EINVAL); + rc = pci_enable_device(pPciDev); + if (rc >= 0) + { + /* I/O Ports are mandatory, the MMIO bit is not. */ + g_IOPortBase = pci_resource_start(pPciDev, 0); + if (g_IOPortBase != 0) + { + /* + * Map the register address space. + */ + g_MMIOPhysAddr = pci_resource_start(pPciDev, 1); + g_cbMMIO = pci_resource_len(pPciDev, 1); + if (request_mem_region(g_MMIOPhysAddr, g_cbMMIO, DEVICE_NAME) != NULL) + { + g_pvMMIOBase = ioremap(g_MMIOPhysAddr, g_cbMMIO); + if (g_pvMMIOBase) + { + /** @todo why aren't we requesting ownership of the I/O ports as well? */ + g_pPciDev = pPciDev; + return 0; + } + + /* failure cleanup path */ + LogRel((DEVICE_NAME ": ioremap failed; MMIO Addr=%RHp cb=%#x\n", g_MMIOPhysAddr, g_cbMMIO)); + rc = -ENOMEM; + release_mem_region(g_MMIOPhysAddr, g_cbMMIO); + } + else + { + LogRel((DEVICE_NAME ": failed to obtain adapter memory\n")); + rc = -EBUSY; + } + g_MMIOPhysAddr = NIL_RTHCPHYS; + g_cbMMIO = 0; + g_IOPortBase = 0; + } + else + { + LogRel((DEVICE_NAME ": did not find expected hardware resources\n")); + rc = -ENXIO; + } + pci_disable_device(pPciDev); + } + else + LogRel((DEVICE_NAME ": could not enable device: %d\n", rc)); + return rc; +} + + +/** + * Clean up the usage of the PCI device. + */ +static void vgdrvLinuxTermPci(struct pci_dev *pPciDev) +{ + g_pPciDev = NULL; + if (pPciDev) + { + iounmap(g_pvMMIOBase); + g_pvMMIOBase = NULL; + + release_mem_region(g_MMIOPhysAddr, g_cbMMIO); + g_MMIOPhysAddr = NIL_RTHCPHYS; + g_cbMMIO = 0; + + pci_disable_device(pPciDev); + } +} + + +/** + * Interrupt service routine. + * + * @returns In 2.4 it returns void. + * In 2.6 we indicate whether we've handled the IRQ or not. + * + * @param iIrq The IRQ number. + * @param pvDevId The device ID, a pointer to g_DevExt. + * @param pRegs Register set. Removed in 2.6.19. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) && !defined(DOXYGEN_RUNNING) +static irqreturn_t vgdrvLinuxISR(int iIrq, void *pvDevId) +#else +static irqreturn_t vgdrvLinuxISR(int iIrq, void *pvDevId, struct pt_regs *pRegs) +#endif +{ + bool fTaken = VGDrvCommonISR(&g_DevExt); + return IRQ_RETVAL(fTaken); +} + + +/** + * Registers the ISR and initializes the poll wait queue. + */ +static int __init vgdrvLinuxInitISR(void) +{ + int rc; + + init_waitqueue_head(&g_PollEventQueue); + rc = request_irq(g_pPciDev->irq, + vgdrvLinuxISR, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20) + IRQF_SHARED, +#else + SA_SHIRQ, +#endif + DEVICE_NAME, + &g_DevExt); + if (rc) + { + LogRel((DEVICE_NAME ": could not request IRQ %d: err=%d\n", g_pPciDev->irq, rc)); + return rc; + } + return 0; +} + + +/** + * Deregisters the ISR. + */ +static void vgdrvLinuxTermISR(void) +{ + free_irq(g_pPciDev->irq, &g_DevExt); +} + + +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + +/** + * Reports the mouse integration status to the host. + * + * Calls the kernel IOCtl to report mouse status to the host on behalf of + * our kernel session. + * + * @param fStatus The mouse status to report. + */ +static int vgdrvLinuxSetMouseStatus(uint32_t fStatus) +{ + return VGDrvCommonIoCtl(VBOXGUEST_IOCTL_SET_MOUSE_STATUS, &g_DevExt, g_pKernelSession, &fStatus, sizeof(fStatus), NULL); +} + + +/** + * Called when the input device is first opened. + * + * Sets up absolute mouse reporting. + */ +static int vboxguestOpenInputDevice(struct input_dev *pDev) +{ + int rc = vgdrvLinuxSetMouseStatus(VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE | VMMDEV_MOUSE_NEW_PROTOCOL); + if (RT_FAILURE(rc)) + return ENODEV; + NOREF(pDev); + return 0; +} + + +/** + * Called if all open handles to the input device are closed. + * + * Disables absolute reporting. + */ +static void vboxguestCloseInputDevice(struct input_dev *pDev) +{ + NOREF(pDev); + vgdrvLinuxSetMouseStatus(0); +} + + +/** + * Creates the kernel input device. + */ +static int __init vgdrvLinuxCreateInputDevice(void) +{ + int rc = VbglGRAlloc((VMMDevRequestHeader **)&g_pMouseStatusReq, sizeof(*g_pMouseStatusReq), VMMDevReq_GetMouseStatus); + if (RT_SUCCESS(rc)) + { + g_pInputDevice = input_allocate_device(); + if (g_pInputDevice) + { + g_pInputDevice->id.bustype = BUS_PCI; + g_pInputDevice->id.vendor = VMMDEV_VENDORID; + g_pInputDevice->id.product = VMMDEV_DEVICEID; + g_pInputDevice->id.version = VBOX_SHORT_VERSION; + g_pInputDevice->open = vboxguestOpenInputDevice; + g_pInputDevice->close = vboxguestCloseInputDevice; +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) + g_pInputDevice->cdev.dev = &g_pPciDev->dev; +# else + g_pInputDevice->dev.parent = &g_pPciDev->dev; +# endif + rc = input_register_device(g_pInputDevice); + if (rc == 0) + { + /* Do what one of our competitors apparently does as that works. */ + ASMBitSet(g_pInputDevice->evbit, EV_ABS); + ASMBitSet(g_pInputDevice->evbit, EV_KEY); +# ifdef EV_SYN + ASMBitSet(g_pInputDevice->evbit, EV_SYN); +# endif + input_set_abs_params(g_pInputDevice, ABS_X, VMMDEV_MOUSE_RANGE_MIN, VMMDEV_MOUSE_RANGE_MAX, 0, 0); + input_set_abs_params(g_pInputDevice, ABS_Y, VMMDEV_MOUSE_RANGE_MIN, VMMDEV_MOUSE_RANGE_MAX, 0, 0); + ASMBitSet(g_pInputDevice->keybit, BTN_MOUSE); + /** @todo this string should be in a header file somewhere. */ + g_pInputDevice->name = "VirtualBox mouse integration"; + return 0; + } + + input_free_device(g_pInputDevice); + } + else + rc = -ENOMEM; + VbglGRFree(&g_pMouseStatusReq->header); + g_pMouseStatusReq = NULL; + } + else + rc = -ENOMEM; + return rc; +} + + +/** + * Terminates the kernel input device. + */ +static void vgdrvLinuxTermInputDevice(void) +{ + VbglGRFree(&g_pMouseStatusReq->header); + g_pMouseStatusReq = NULL; + + /* See documentation of input_register_device(): input_free_device() + * should not be called after a device has been registered. */ + input_unregister_device(g_pInputDevice); +} + +#endif /* VBOXGUEST_WITH_INPUT_DRIVER */ + + +/** + * Creates the device nodes. + * + * @returns 0 on success, negated errno on failure. + */ +static int __init vgdrvLinuxInitDeviceNodes(void) +{ + /* + * The full feature device node. + */ + int rc = misc_register(&g_MiscDevice); + if (!rc) + { + /* + * The device node intended to be accessible by all users. + */ + rc = misc_register(&g_MiscDeviceUser); + if (!rc) + return 0; + LogRel((DEVICE_NAME ": misc_register failed for %s (rc=%d)\n", DEVICE_NAME_USER, rc)); + misc_deregister(&g_MiscDevice); + } + else + LogRel((DEVICE_NAME ": misc_register failed for %s (rc=%d)\n", DEVICE_NAME, rc)); + return rc; +} + + +/** + * Deregisters the device nodes. + */ +static void vgdrvLinuxTermDeviceNodes(void) +{ + misc_deregister(&g_MiscDevice); + misc_deregister(&g_MiscDeviceUser); +} + + +/** + * Initialize module. + * + * @returns appropriate status code. + */ +static int __init vgdrvLinuxModInit(void) +{ + static const char * const s_apszGroups[] = VBOX_LOGGROUP_NAMES; + PRTLOGGER pRelLogger; + int rc; + + /* + * Initialize IPRT first. + */ + rc = RTR0Init(0); + if (RT_FAILURE(rc)) + { + printk(KERN_ERR DEVICE_NAME ": RTR0Init failed, rc=%d.\n", rc); + return -EINVAL; + } + + /* + * Create the release log. + * (We do that here instead of common code because we want to log + * early failures using the LogRel macro.) + */ + rc = RTLogCreate(&pRelLogger, 0 /* fFlags */, "all", + "VBOX_RELEASE_LOG", RT_ELEMENTS(s_apszGroups), s_apszGroups, + RTLOGDEST_STDOUT | RTLOGDEST_DEBUGGER | RTLOGDEST_USER, NULL); + if (RT_SUCCESS(rc)) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + RTLogGroupSettings(pRelLogger, g_szLogGrp); + RTLogFlags(pRelLogger, g_szLogFlags); + RTLogDestinations(pRelLogger, g_szLogDst); +#endif + RTLogRelSetDefaultInstance(pRelLogger); + } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + g_fLoggerCreated = true; +#endif + + /* + * Locate and initialize the PCI device. + */ + rc = pci_register_driver(&g_PciDriver); + if (rc >= 0 && g_pPciDev) + { + /* + * Register the interrupt service routine for it. + */ + rc = vgdrvLinuxInitISR(); + if (rc >= 0) + { + /* + * Call the common device extension initializer. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_AMD64) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26_x64; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_X86) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_AMD64) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24_x64; +#else +# warning "huh? which arch + version is this?" + VBOXOSTYPE enmOsType = VBOXOSTYPE_Linux; +#endif + rc = VGDrvCommonInitDevExt(&g_DevExt, + g_IOPortBase, + g_pvMMIOBase, + g_cbMMIO, + enmOSType, + VMMDEV_EVENT_MOUSE_POSITION_CHANGED); + if (RT_SUCCESS(rc)) + { + /* + * Create the kernel session for this driver. + */ + rc = VGDrvCommonCreateKernelSession(&g_DevExt, &g_pKernelSession); + if (RT_SUCCESS(rc)) + { + /* + * Create the kernel input device. + */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + rc = vgdrvLinuxCreateInputDevice(); + if (rc >= 0) + { +#endif + /* + * Finally, create the device nodes. + */ + rc = vgdrvLinuxInitDeviceNodes(); + if (rc >= 0) + { + /* some useful information for the user but don't show this on the console */ + LogRel((DEVICE_NAME ": misc device minor %d, IRQ %d, I/O port %RTiop, MMIO at %RHp (size 0x%x)\n", + g_MiscDevice.minor, g_pPciDev->irq, g_IOPortBase, g_MMIOPhysAddr, g_cbMMIO)); + printk(KERN_DEBUG DEVICE_NAME ": Successfully loaded version " + VBOX_VERSION_STRING " (interface " RT_XSTR(VMMDEV_VERSION) ")\n"); + return rc; + } + + /* bail out */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + vgdrvLinuxTermInputDevice(); + } + else + { + LogRel((DEVICE_NAME ": vboxguestCreateInputDevice failed with rc=%Rrc\n", rc)); + rc = RTErrConvertFromErrno(rc); + } +#endif + VGDrvCommonCloseSession(&g_DevExt, g_pKernelSession); + } + VGDrvCommonDeleteDevExt(&g_DevExt); + } + else + { + LogRel((DEVICE_NAME ": VGDrvCommonInitDevExt failed with rc=%Rrc\n", rc)); + rc = RTErrConvertFromErrno(rc); + } + vgdrvLinuxTermISR(); + } + } + else + { + LogRel((DEVICE_NAME ": PCI device not found, probably running on physical hardware.\n")); + rc = -ENODEV; + } + pci_unregister_driver(&g_PciDriver); + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); + RTR0Term(); + return rc; +} + + +/** + * Unload the module. + */ +static void __exit vgdrvLinuxModExit(void) +{ + /* + * Inverse order of init. + */ + vgdrvLinuxTermDeviceNodes(); +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + vgdrvLinuxTermInputDevice(); +#endif + VGDrvCommonCloseSession(&g_DevExt, g_pKernelSession); + VGDrvCommonDeleteDevExt(&g_DevExt); + vgdrvLinuxTermISR(); + pci_unregister_driver(&g_PciDriver); + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); + RTR0Term(); +} + + +/** + * Device open. Called on open /dev/vboxdrv + * + * @param pInode Pointer to inode info structure. + * @param pFilp Associated file pointer. + */ +static int vgdrvLinuxOpen(struct inode *pInode, struct file *pFilp) +{ + int rc; + PVBOXGUESTSESSION pSession; + Log((DEVICE_NAME ": pFilp=%p pid=%d/%d %s\n", pFilp, RTProcSelf(), current->pid, current->comm)); + + /* + * Call common code to create the user session. Associate it with + * the file so we can access it in the other methods. + */ + rc = VGDrvCommonCreateUserSession(&g_DevExt, &pSession); + if (RT_SUCCESS(rc)) + { + pFilp->private_data = pSession; + if (MINOR(pInode->i_rdev) == g_MiscDeviceUser.minor) + pSession->fUserSession = true; + } + + Log(("vgdrvLinuxOpen: g_DevExt=%p pSession=%p rc=%d/%d (pid=%d/%d %s)\n", + &g_DevExt, pSession, rc, vgdrvLinuxConvertToNegErrno(rc), RTProcSelf(), current->pid, current->comm)); + return vgdrvLinuxConvertToNegErrno(rc); +} + + +/** + * Close device. + * + * @param pInode Pointer to inode info structure. + * @param pFilp Associated file pointer. + */ +static int vgdrvLinuxRelease(struct inode *pInode, struct file *pFilp) +{ + Log(("vgdrvLinuxRelease: pFilp=%p pSession=%p pid=%d/%d %s\n", + pFilp, pFilp->private_data, RTProcSelf(), current->pid, current->comm)); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28) + /* This housekeeping was needed in older kernel versions to ensure that + * the file pointer didn't get left on the polling queue. */ + vgdrvLinuxFAsync(-1, pFilp, 0); +#endif + VGDrvCommonCloseSession(&g_DevExt, (PVBOXGUESTSESSION)pFilp->private_data); + pFilp->private_data = NULL; + return 0; +} + + +/** + * Device I/O Control entry point. + * + * @param pInode Associated inode pointer. + * @param pFilp Associated file pointer. + * @param uCmd The function specified to ioctl(). + * @param ulArg The argument specified to ioctl(). + */ +#ifdef HAVE_UNLOCKED_IOCTL +static long vgdrvLinuxIOCtl(struct file *pFilp, unsigned int uCmd, unsigned long ulArg) +#else +static int vgdrvLinuxIOCtl(struct inode *pInode, struct file *pFilp, unsigned int uCmd, unsigned long ulArg) +#endif +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFilp->private_data; + uint32_t cbData = _IOC_SIZE(uCmd); + void *pvBufFree; + void *pvBuf; + int rc; + uint64_t au64Buf[32/sizeof(uint64_t)]; + + Log6(("vgdrvLinuxIOCtl: pFilp=%p uCmd=%#x ulArg=%p pid=%d/%d\n", pFilp, uCmd, (void *)ulArg, RTProcSelf(), current->pid)); + + /* + * Buffer the request. + */ + if (cbData <= sizeof(au64Buf)) + { + pvBufFree = NULL; + pvBuf = &au64Buf[0]; + } + else + { + pvBufFree = pvBuf = RTMemTmpAlloc(cbData); + if (RT_UNLIKELY(!pvBuf)) + { + LogRel((DEVICE_NAME "::IOCtl: RTMemTmpAlloc failed to alloc %u bytes.\n", cbData)); + return -ENOMEM; + } + } + if (RT_LIKELY(copy_from_user(pvBuf, (void *)ulArg, cbData) == 0)) + { + /* + * Process the IOCtl. + */ + size_t cbDataReturned; + rc = VGDrvCommonIoCtl(uCmd, &g_DevExt, pSession, pvBuf, cbData, &cbDataReturned); + + /* + * Copy ioctl data and output buffer back to user space. + */ + if (RT_SUCCESS(rc)) + { + rc = 0; + if (RT_UNLIKELY(cbDataReturned > cbData)) + { + LogRel((DEVICE_NAME "::IOCtl: too much output data %u expected %u\n", cbDataReturned, cbData)); + cbDataReturned = cbData; + } + if (cbDataReturned > 0) + { + if (RT_UNLIKELY(copy_to_user((void *)ulArg, pvBuf, cbDataReturned) != 0)) + { + LogRel((DEVICE_NAME "::IOCtl: copy_to_user failed; pvBuf=%p ulArg=%p cbDataReturned=%u uCmd=%d\n", + pvBuf, (void *)ulArg, cbDataReturned, uCmd, rc)); + rc = -EFAULT; + } + } + } + else + { + Log(("vgdrvLinuxIOCtl: pFilp=%p uCmd=%#x ulArg=%p failed, rc=%d\n", pFilp, uCmd, (void *)ulArg, rc)); + rc = -rc; Assert(rc > 0); /* Positive returns == negated VBox error status codes. */ + } + } + else + { + Log((DEVICE_NAME "::IOCtl: copy_from_user(,%#lx, %#x) failed; uCmd=%#x.\n", ulArg, cbData, uCmd)); + rc = -EFAULT; + } + if (pvBufFree) + RTMemFree(pvBufFree); + + Log6(("vgdrvLinuxIOCtl: returns %d (pid=%d/%d)\n", rc, RTProcSelf(), current->pid)); + return rc; +} + + +/** + * Asynchronous notification activation method. + * + * @returns 0 on success, negative errno on failure. + * + * @param fd The file descriptor. + * @param pFile The file structure. + * @param fOn On/off indicator. + */ +static int vgdrvLinuxFAsync(int fd, struct file *pFile, int fOn) +{ + return fasync_helper(fd, pFile, fOn, &g_pFAsyncQueue); +} + + +/** + * Poll function. + * + * This returns ready to read if the mouse pointer mode or the pointer position + * has changed since last call to read. + * + * @returns 0 if no changes, POLLIN | POLLRDNORM if there are unseen changes. + * + * @param pFile The file structure. + * @param pPt The poll table. + * + * @remarks This is probably not really used, X11 is said to use the fasync + * interface instead. + */ +static unsigned int vgdrvLinuxPoll(struct file *pFile, poll_table *pPt) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFile->private_data; + uint32_t u32CurSeq = ASMAtomicUoReadU32(&g_DevExt.u32MousePosChangedSeq); + unsigned int fMask = pSession->u32MousePosChangedSeq != u32CurSeq + ? POLLIN | POLLRDNORM + : 0; + poll_wait(pFile, &g_PollEventQueue, pPt); + return fMask; +} + + +/** + * Read to go with our poll/fasync response. + * + * @returns 1 or -EINVAL. + * + * @param pFile The file structure. + * @param pbBuf The buffer to read into. + * @param cbRead The max number of bytes to read. + * @param poff The current file position. + * + * @remarks This is probably not really used as X11 lets the driver do its own + * event reading. The poll condition is therefore also cleared when we + * see VMMDevReq_GetMouseStatus in vgdrvIoCtl_VMMRequest. + */ +static ssize_t vgdrvLinuxRead(struct file *pFile, char *pbBuf, size_t cbRead, loff_t *poff) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFile->private_data; + uint32_t u32CurSeq = ASMAtomicUoReadU32(&g_DevExt.u32MousePosChangedSeq); + + if (*poff != 0) + return -EINVAL; + + /* + * Fake a single byte read if we're not up to date with the current mouse position. + */ + if ( pSession->u32MousePosChangedSeq != u32CurSeq + && cbRead > 0) + { + pSession->u32MousePosChangedSeq = u32CurSeq; + pbBuf[0] = 0; + return 1; + } + return 0; +} + + +void VGDrvNativeISRMousePollEvent(PVBOXGUESTDEVEXT pDevExt) +{ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + int rc; +#endif + NOREF(pDevExt); + + /* + * Wake up everyone that's in a poll() and post anyone that has + * subscribed to async notifications. + */ + Log3(("VGDrvNativeISRMousePollEvent: wake_up_all\n")); + wake_up_all(&g_PollEventQueue); + Log3(("VGDrvNativeISRMousePollEvent: kill_fasync\n")); + kill_fasync(&g_pFAsyncQueue, SIGIO, POLL_IN); +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + /* Report events to the kernel input device */ + g_pMouseStatusReq->mouseFeatures = 0; + g_pMouseStatusReq->pointerXPos = 0; + g_pMouseStatusReq->pointerYPos = 0; + rc = VbglGRPerform(&g_pMouseStatusReq->header); + if (RT_SUCCESS(rc)) + { + input_report_abs(g_pInputDevice, ABS_X, + g_pMouseStatusReq->pointerXPos); + input_report_abs(g_pInputDevice, ABS_Y, + g_pMouseStatusReq->pointerYPos); +# ifdef EV_SYN + input_sync(g_pInputDevice); +# endif + } +#endif + Log3(("VGDrvNativeISRMousePollEvent: done\n")); +} + + +/* Common code that depend on g_DevExt. */ +#include "VBoxGuestIDC-unix.c.h" + +EXPORT_SYMBOL(VBoxGuestIDCOpen); +EXPORT_SYMBOL(VBoxGuestIDCClose); +EXPORT_SYMBOL(VBoxGuestIDCCall); + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +/** log and dbg_log parameter setter. */ +static int vgdrvLinuxParamLogGrpSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogGroupSettings(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp)); + + return 0; +} + +/** log and dbg_log parameter getter. */ +static int vgdrvLinuxParamLogGrpGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetGroupSettings(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** log and dbg_log_flags parameter setter. */ +static int vgdrvLinuxParamLogFlagsSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogFlags(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags)); + return 0; +} + +/** log and dbg_log_flags parameter getter. */ +static int vgdrvLinuxParamLogFlagsGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetFlags(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** log and dbg_log_dest parameter setter. */ +static int vgdrvLinuxParamLogDstSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogDestinations(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogDst[0], pszValue, sizeof(g_szLogDst)); + return 0; +} + +/** log and dbg_log_dest parameter getter. */ +static int vgdrvLinuxParamLogDstGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetDestinations(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** r3_log_to_host parameter setter. */ +static int vgdrvLinuxParamR3LogToHostSet(const char *pszValue, struct kernel_param *pParam) +{ + if ( pszValue == NULL + || *pszValue == '\0' + || *pszValue == 'n' + || *pszValue == 'N' + || *pszValue == 'd' + || *pszValue == 'D' + || ( (*pszValue == 'o' || *pszValue == 'O') + && (*pszValue == 'f' || *pszValue == 'F') ) + ) + g_DevExt.fLoggingEnabled = false; + else + g_DevExt.fLoggingEnabled = true; + return 0; +} + +/** r3_log_to_host parameter getter. */ +static int vgdrvLinuxParamR3LogToHostGet(char *pszBuf, struct kernel_param *pParam) +{ + strcpy(pszBuf, g_DevExt.fLoggingEnabled ? "enabled" : "disabled"); + return strlen(pszBuf); +} + + +/* + * Define module parameters. + */ +module_param_call(log, vgdrvLinuxParamLogGrpSet, vgdrvLinuxParamLogGrpGet, NULL, 0664); +module_param_call(log_flags, vgdrvLinuxParamLogFlagsSet, vgdrvLinuxParamLogFlagsGet, NULL, 0664); +module_param_call(log_dest, vgdrvLinuxParamLogDstSet, vgdrvLinuxParamLogDstGet, NULL, 0664); +# ifdef LOG_ENABLED +module_param_call(dbg_log, vgdrvLinuxParamLogGrpSet, vgdrvLinuxParamLogGrpGet, NULL, 0664); +module_param_call(dbg_log_flags, vgdrvLinuxParamLogFlagsSet, vgdrvLinuxParamLogFlagsGet, NULL, 0664); +module_param_call(dbg_log_dest, vgdrvLinuxParamLogDstSet, vgdrvLinuxParamLogDstGet, NULL, 0664); +# endif +module_param_call(r3_log_to_host, vgdrvLinuxParamR3LogToHostSet, vgdrvLinuxParamR3LogToHostGet, NULL, 0664); + +#endif /* 2.6.0 and later */ + + +module_init(vgdrvLinuxModInit); +module_exit(vgdrvLinuxModExit); + +MODULE_AUTHOR(VBOX_VENDOR); +MODULE_DESCRIPTION(VBOX_PRODUCT " Guest Additions for Linux Module"); +MODULE_LICENSE("GPL"); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING); +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBoxGuest.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBoxGuest.c @@ -0,0 +1,3748 @@ +/* $Id: VBoxGuest.cpp $ */ +/** @file + * VBoxGuest - Guest Additions Driver, Common Code. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/** @page pg_vbdrv VBoxGuest + * + * VBoxGuest is the device driver for VMMDev. + * + * The device driver is shipped as part of the guest additions. It has roots in + * the host VMM support driver (usually known as VBoxDrv), so fixes in platform + * specific code may apply to both drivers. + * + * The common code lives in VBoxGuest.cpp and is compiled both as C++ and C. + * The VBoxGuest.cpp source file shall not contain platform specific code, + * though it must occationally do a few \#ifdef RT_OS_XXX tests to cater for + * platform differences. Though, in those cases, it is common that more than + * one platform needs special handling. + * + * On most platforms the device driver should create two device nodes, one for + * full (unrestricted) access to the feature set, and one which only provides a + * restrict set of functions. These are generally referred to as 'vboxguest' + * and 'vboxuser' respectively. Currently, this two device approach is only + * implemented on Linux! + * + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP LOG_GROUP_DEFAULT +#include "VBoxGuestInternal.h" +#include /* for VMMDEV_RAM_SIZE */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef VBOX_WITH_HGCM +# include +#endif +#include "version-generated.h" +#if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) +# include "revision-generated.h" +#endif +#ifdef RT_OS_WINDOWS +# ifndef CTL_CODE +# include +# endif +#endif +#if defined(RT_OS_SOLARIS) || defined(RT_OS_DARWIN) +# include +#endif + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#define VBOXGUEST_ACQUIRE_STYLE_EVENTS (VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST | VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST) + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +#ifdef VBOX_WITH_HGCM +static DECLCALLBACK(int) vgdrvHgcmAsyncWaitCallback(VMMDevHGCMRequestHeader *pHdrNonVolatile, void *pvUser, uint32_t u32User); +#endif +static int vgdrvIoCtl_CancelAllWaitEvents(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +static void vgdrvBitUsageTrackerClear(PVBOXGUESTBITUSAGETRACER pTracker); +static uint32_t vgdrvGetAllowedEventMaskForSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +static int vgdrvResetEventFilterOnHost(PVBOXGUESTDEVEXT pDevExt, uint32_t fFixedEvents); +static int vgdrvResetMouseStatusOnHost(PVBOXGUESTDEVEXT pDevExt); +static int vgdrvResetCapabilitiesOnHost(PVBOXGUESTDEVEXT pDevExt); +static int vgdrvSetSessionEventFilter(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination); +static int vgdrvSetSessionMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination); +static int vgdrvSetSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNoMask, bool fSessionTermination); +static int vgdrvAcquireSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint32_t fOrMask, + uint32_t fNotMask, VBOXGUESTCAPSACQUIRE_FLAGS enmFlags, bool fSessionTermination); +static int vgdrvDispatchEventsLocked(PVBOXGUESTDEVEXT pDevExt, uint32_t fEvents); + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +static const uint32_t g_cbChangeMemBalloonReq = RT_OFFSETOF(VMMDevChangeMemBalloon, aPhysPage[VMMDEV_MEMORY_BALLOON_CHUNK_PAGES]); + +#if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) +/** + * Drag in the rest of IRPT since we share it with the + * rest of the kernel modules on Solaris. + */ +PFNRT g_apfnVBoxGuestIPRTDeps[] = +{ + /* VirtioNet */ + (PFNRT)RTRandBytes, + /* RTSemMutex* */ + (PFNRT)RTSemMutexCreate, + (PFNRT)RTSemMutexDestroy, + (PFNRT)RTSemMutexRequest, + (PFNRT)RTSemMutexRequestNoResume, + (PFNRT)RTSemMutexRequestDebug, + (PFNRT)RTSemMutexRequestNoResumeDebug, + (PFNRT)RTSemMutexRelease, + (PFNRT)RTSemMutexIsOwned, + NULL +}; +#endif /* RT_OS_DARWIN || RT_OS_SOLARIS */ + + +/** + * Reserves memory in which the VMM can relocate any guest mappings + * that are floating around. + * + * This operation is a little bit tricky since the VMM might not accept + * just any address because of address clashes between the three contexts + * it operates in, so use a small stack to perform this operation. + * + * @returns VBox status code (ignored). + * @param pDevExt The device extension. + */ +static int vgdrvInitFixateGuestMappings(PVBOXGUESTDEVEXT pDevExt) +{ + /* + * Query the required space. + */ + VMMDevReqHypervisorInfo *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevReqHypervisorInfo), VMMDevReq_GetHypervisorInfo); + if (RT_FAILURE(rc)) + return rc; + pReq->hypervisorStart = 0; + pReq->hypervisorSize = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) /* this shouldn't happen! */ + { + VbglGRFree(&pReq->header); + return rc; + } + + /* + * The VMM will report back if there is nothing it wants to map, like for + * instance in VT-x and AMD-V mode. + */ + if (pReq->hypervisorSize == 0) + Log(("vgdrvInitFixateGuestMappings: nothing to do\n")); + else + { + /* + * We have to try several times since the host can be picky + * about certain addresses. + */ + RTR0MEMOBJ hFictive = NIL_RTR0MEMOBJ; + uint32_t cbHypervisor = pReq->hypervisorSize; + RTR0MEMOBJ ahTries[5]; + uint32_t iTry; + bool fBitched = false; + Log(("vgdrvInitFixateGuestMappings: cbHypervisor=%#x\n", cbHypervisor)); + for (iTry = 0; iTry < RT_ELEMENTS(ahTries); iTry++) + { + /* + * Reserve space, or if that isn't supported, create a object for + * some fictive physical memory and map that in to kernel space. + * + * To make the code a bit uglier, most systems cannot help with + * 4MB alignment, so we have to deal with that in addition to + * having two ways of getting the memory. + */ + uint32_t uAlignment = _4M; + RTR0MEMOBJ hObj; + rc = RTR0MemObjReserveKernel(&hObj, (void *)-1, RT_ALIGN_32(cbHypervisor, _4M), uAlignment); + if (rc == VERR_NOT_SUPPORTED) + { + uAlignment = PAGE_SIZE; + rc = RTR0MemObjReserveKernel(&hObj, (void *)-1, RT_ALIGN_32(cbHypervisor, _4M) + _4M, uAlignment); + } + /* + * If both RTR0MemObjReserveKernel calls above failed because either not supported or + * not implemented at all at the current platform, try to map the memory object into the + * virtual kernel space. + */ + if (rc == VERR_NOT_SUPPORTED) + { + if (hFictive == NIL_RTR0MEMOBJ) + { + rc = RTR0MemObjEnterPhys(&hObj, VBOXGUEST_HYPERVISOR_PHYSICAL_START, cbHypervisor + _4M, RTMEM_CACHE_POLICY_DONT_CARE); + if (RT_FAILURE(rc)) + break; + hFictive = hObj; + } + uAlignment = _4M; + rc = RTR0MemObjMapKernel(&hObj, hFictive, (void *)-1, uAlignment, RTMEM_PROT_READ | RTMEM_PROT_WRITE); + if (rc == VERR_NOT_SUPPORTED) + { + uAlignment = PAGE_SIZE; + rc = RTR0MemObjMapKernel(&hObj, hFictive, (void *)-1, uAlignment, RTMEM_PROT_READ | RTMEM_PROT_WRITE); + } + } + if (RT_FAILURE(rc)) + { + LogRel(("VBoxGuest: Failed to reserve memory for the hypervisor: rc=%Rrc (cbHypervisor=%#x uAlignment=%#x iTry=%u)\n", + rc, cbHypervisor, uAlignment, iTry)); + fBitched = true; + break; + } + + /* + * Try set it. + */ + pReq->header.requestType = VMMDevReq_SetHypervisorInfo; + pReq->header.rc = VERR_INTERNAL_ERROR; + pReq->hypervisorSize = cbHypervisor; + pReq->hypervisorStart = (RTGCPTR32)(uintptr_t)RTR0MemObjAddress(hObj); + if ( uAlignment == PAGE_SIZE + && pReq->hypervisorStart & (_4M - 1)) + pReq->hypervisorStart = RT_ALIGN_32(pReq->hypervisorStart, _4M); + AssertMsg(RT_ALIGN_32(pReq->hypervisorStart, _4M) == pReq->hypervisorStart, ("%#x\n", pReq->hypervisorStart)); + + rc = VbglGRPerform(&pReq->header); + if (RT_SUCCESS(rc)) + { + pDevExt->hGuestMappings = hFictive != NIL_RTR0MEMOBJ ? hFictive : hObj; + Log(("VBoxGuest: %p LB %#x; uAlignment=%#x iTry=%u hGuestMappings=%p (%s)\n", + RTR0MemObjAddress(pDevExt->hGuestMappings), + RTR0MemObjSize(pDevExt->hGuestMappings), + uAlignment, iTry, pDevExt->hGuestMappings, hFictive != NIL_RTR0PTR ? "fictive" : "reservation")); + break; + } + ahTries[iTry] = hObj; + } + + /* + * Cleanup failed attempts. + */ + while (iTry-- > 0) + RTR0MemObjFree(ahTries[iTry], false /* fFreeMappings */); + if ( RT_FAILURE(rc) + && hFictive != NIL_RTR0PTR) + RTR0MemObjFree(hFictive, false /* fFreeMappings */); + if (RT_FAILURE(rc) && !fBitched) + LogRel(("VBoxGuest: Warning: failed to reserve %#d of memory for guest mappings.\n", cbHypervisor)); + } + VbglGRFree(&pReq->header); + + /* + * We ignore failed attempts for now. + */ + return VINF_SUCCESS; +} + + +/** + * Undo what vgdrvInitFixateGuestMappings did. + * + * @param pDevExt The device extension. + */ +static void vgdrvTermUnfixGuestMappings(PVBOXGUESTDEVEXT pDevExt) +{ + if (pDevExt->hGuestMappings != NIL_RTR0PTR) + { + /* + * Tell the host that we're going to free the memory we reserved for + * it, the free it up. (Leak the memory if anything goes wrong here.) + */ + VMMDevReqHypervisorInfo *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevReqHypervisorInfo), VMMDevReq_SetHypervisorInfo); + if (RT_SUCCESS(rc)) + { + pReq->hypervisorStart = 0; + pReq->hypervisorSize = 0; + rc = VbglGRPerform(&pReq->header); + VbglGRFree(&pReq->header); + } + if (RT_SUCCESS(rc)) + { + rc = RTR0MemObjFree(pDevExt->hGuestMappings, true /* fFreeMappings */); + AssertRC(rc); + } + else + LogRel(("vgdrvTermUnfixGuestMappings: Failed to unfix the guest mappings! rc=%Rrc\n", rc)); + + pDevExt->hGuestMappings = NIL_RTR0MEMOBJ; + } +} + + + +/** + * Report the guest information to the host. + * + * @returns IPRT status code. + * @param enmOSType The OS type to report. + */ +static int vgdrvReportGuestInfo(VBOXOSTYPE enmOSType) +{ + /* + * Allocate and fill in the two guest info reports. + */ + VMMDevReportGuestInfo2 *pReqInfo2 = NULL; + VMMDevReportGuestInfo *pReqInfo1 = NULL; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReqInfo2, sizeof (VMMDevReportGuestInfo2), VMMDevReq_ReportGuestInfo2); + Log(("vgdrvReportGuestInfo: VbglGRAlloc VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReqInfo2->guestInfo.additionsMajor = VBOX_VERSION_MAJOR; + pReqInfo2->guestInfo.additionsMinor = VBOX_VERSION_MINOR; + pReqInfo2->guestInfo.additionsBuild = VBOX_VERSION_BUILD; + pReqInfo2->guestInfo.additionsRevision = VBOX_SVN_REV; + pReqInfo2->guestInfo.additionsFeatures = 0; /* (no features defined yet) */ + RTStrCopy(pReqInfo2->guestInfo.szName, sizeof(pReqInfo2->guestInfo.szName), VBOX_VERSION_STRING); + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReqInfo1, sizeof (VMMDevReportGuestInfo), VMMDevReq_ReportGuestInfo); + Log(("vgdrvReportGuestInfo: VbglGRAlloc VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReqInfo1->guestInfo.interfaceVersion = VMMDEV_VERSION; + pReqInfo1->guestInfo.osType = enmOSType; + + /* + * There are two protocols here: + * 1. Info2 + Info1. Supported by >=3.2.51. + * 2. Info1 and optionally Info2. The old protocol. + * + * We try protocol 1 first. It will fail with VERR_NOT_SUPPORTED + * if not supported by the VMMDev (message ordering requirement). + */ + rc = VbglGRPerform(&pReqInfo2->header); + Log(("vgdrvReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + rc = VbglGRPerform(&pReqInfo1->header); + Log(("vgdrvReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + } + else if ( rc == VERR_NOT_SUPPORTED + || rc == VERR_NOT_IMPLEMENTED) + { + rc = VbglGRPerform(&pReqInfo1->header); + Log(("vgdrvReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + rc = VbglGRPerform(&pReqInfo2->header); + Log(("vgdrvReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (rc == VERR_NOT_IMPLEMENTED) + rc = VINF_SUCCESS; + } + } + VbglGRFree(&pReqInfo1->header); + } + VbglGRFree(&pReqInfo2->header); + } + + return rc; +} + + +/** + * Report the guest driver status to the host. + * + * @returns IPRT status code. + * @param fActive Flag whether the driver is now active or not. + */ +static int vgdrvReportDriverStatus(bool fActive) +{ + /* + * Report guest status of the VBox driver to the host. + */ + VMMDevReportGuestStatus *pReq2 = NULL; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq2, sizeof(*pReq2), VMMDevReq_ReportGuestStatus); + Log(("vgdrvReportDriverStatus: VbglGRAlloc VMMDevReportGuestStatus completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReq2->guestStatus.facility = VBoxGuestFacilityType_VBoxGuestDriver; + pReq2->guestStatus.status = fActive ? + VBoxGuestFacilityStatus_Active + : VBoxGuestFacilityStatus_Inactive; + pReq2->guestStatus.flags = 0; + rc = VbglGRPerform(&pReq2->header); + Log(("vgdrvReportDriverStatus: VbglGRPerform VMMDevReportGuestStatus completed with fActive=%d, rc=%Rrc\n", + fActive ? 1 : 0, rc)); + if (rc == VERR_NOT_IMPLEMENTED) /* Compatibility with older hosts. */ + rc = VINF_SUCCESS; + VbglGRFree(&pReq2->header); + } + + return rc; +} + + +/** @name Memory Ballooning + * @{ + */ + +/** + * Inflate the balloon by one chunk represented by an R0 memory object. + * + * The caller owns the balloon mutex. + * + * @returns IPRT status code. + * @param pMemObj Pointer to the R0 memory object. + * @param pReq The pre-allocated request for performing the VMMDev call. + */ +static int vgdrvBalloonInflate(PRTR0MEMOBJ pMemObj, VMMDevChangeMemBalloon *pReq) +{ + uint32_t iPage; + int rc; + + for (iPage = 0; iPage < VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; iPage++) + { + RTHCPHYS phys = RTR0MemObjGetPagePhysAddr(*pMemObj, iPage); + pReq->aPhysPage[iPage] = phys; + } + + pReq->fInflate = true; + pReq->header.size = g_cbChangeMemBalloonReq; + pReq->cPages = VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; + + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRel(("vgdrvBalloonInflate: VbglGRPerform failed. rc=%Rrc\n", rc)); + return rc; +} + + +/** + * Deflate the balloon by one chunk - info the host and free the memory object. + * + * The caller owns the balloon mutex. + * + * @returns IPRT status code. + * @param pMemObj Pointer to the R0 memory object. + * The memory object will be freed afterwards. + * @param pReq The pre-allocated request for performing the VMMDev call. + */ +static int vgdrvBalloonDeflate(PRTR0MEMOBJ pMemObj, VMMDevChangeMemBalloon *pReq) +{ + uint32_t iPage; + int rc; + + for (iPage = 0; iPage < VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; iPage++) + { + RTHCPHYS phys = RTR0MemObjGetPagePhysAddr(*pMemObj, iPage); + pReq->aPhysPage[iPage] = phys; + } + + pReq->fInflate = false; + pReq->header.size = g_cbChangeMemBalloonReq; + pReq->cPages = VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; + + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + LogRel(("vgdrvBalloonDeflate: VbglGRPerform failed. rc=%Rrc\n", rc)); + return rc; + } + + rc = RTR0MemObjFree(*pMemObj, true); + if (RT_FAILURE(rc)) + { + LogRel(("vgdrvBalloonDeflate: RTR0MemObjFree(%p,true) -> %Rrc; this is *BAD*!\n", *pMemObj, rc)); + return rc; + } + + *pMemObj = NIL_RTR0MEMOBJ; + return VINF_SUCCESS; +} + + +/** + * Inflate/deflate the memory balloon and notify the host. + * + * This is a worker used by vgdrvIoCtl_CheckMemoryBalloon - it takes the mutex. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param cBalloonChunks The new size of the balloon in chunks of 1MB. + * @param pfHandleInR3 Where to return the handle-in-ring3 indicator + * (VINF_SUCCESS if set). + */ +static int vgdrvSetBalloonSizeKernel(PVBOXGUESTDEVEXT pDevExt, uint32_t cBalloonChunks, uint32_t *pfHandleInR3) +{ + int rc = VINF_SUCCESS; + + if (pDevExt->MemBalloon.fUseKernelAPI) + { + VMMDevChangeMemBalloon *pReq; + uint32_t i; + + if (cBalloonChunks > pDevExt->MemBalloon.cMaxChunks) + { + LogRel(("vgdrvSetBalloonSizeKernel: illegal balloon size %u (max=%u)\n", + cBalloonChunks, pDevExt->MemBalloon.cMaxChunks)); + return VERR_INVALID_PARAMETER; + } + + if (cBalloonChunks == pDevExt->MemBalloon.cMaxChunks) + return VINF_SUCCESS; /* nothing to do */ + + if ( cBalloonChunks > pDevExt->MemBalloon.cChunks + && !pDevExt->MemBalloon.paMemObj) + { + pDevExt->MemBalloon.paMemObj = (PRTR0MEMOBJ)RTMemAllocZ(sizeof(RTR0MEMOBJ) * pDevExt->MemBalloon.cMaxChunks); + if (!pDevExt->MemBalloon.paMemObj) + { + LogRel(("vgdrvSetBalloonSizeKernel: no memory for paMemObj!\n")); + return VERR_NO_MEMORY; + } + } + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_FAILURE(rc)) + return rc; + + if (cBalloonChunks > pDevExt->MemBalloon.cChunks) + { + /* inflate */ + for (i = pDevExt->MemBalloon.cChunks; i < cBalloonChunks; i++) + { + rc = RTR0MemObjAllocPhysNC(&pDevExt->MemBalloon.paMemObj[i], + VMMDEV_MEMORY_BALLOON_CHUNK_SIZE, NIL_RTHCPHYS); + if (RT_FAILURE(rc)) + { + if (rc == VERR_NOT_SUPPORTED) + { + /* not supported -- fall back to the R3-allocated memory. */ + rc = VINF_SUCCESS; + pDevExt->MemBalloon.fUseKernelAPI = false; + Assert(pDevExt->MemBalloon.cChunks == 0); + Log(("VBoxGuestSetBalloonSizeKernel: PhysNC allocs not supported, falling back to R3 allocs.\n")); + } + /* else if (rc == VERR_NO_MEMORY || rc == VERR_NO_PHYS_MEMORY): + * cannot allocate more memory => don't try further, just stop here */ + /* else: XXX what else can fail? VERR_MEMOBJ_INIT_FAILED for instance. just stop. */ + break; + } + + rc = vgdrvBalloonInflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + Log(("vboxGuestSetBalloonSize(inflate): failed, rc=%Rrc!\n", rc)); + RTR0MemObjFree(pDevExt->MemBalloon.paMemObj[i], true); + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + break; + } + pDevExt->MemBalloon.cChunks++; + } + } + else + { + /* deflate */ + for (i = pDevExt->MemBalloon.cChunks; i-- > cBalloonChunks;) + { + rc = vgdrvBalloonDeflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + Log(("vboxGuestSetBalloonSize(deflate): failed, rc=%Rrc!\n", rc)); + break; + } + pDevExt->MemBalloon.cChunks--; + } + } + + VbglGRFree(&pReq->header); + } + + /* + * Set the handle-in-ring3 indicator. When set Ring-3 will have to work + * the balloon changes via the other API. + */ + *pfHandleInR3 = pDevExt->MemBalloon.fUseKernelAPI ? false : true; + + return rc; +} + + +/** + * Inflate/deflate the balloon by one chunk. + * + * Worker for vgdrvIoCtl_ChangeMemoryBalloon - it takes the mutex. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param u64ChunkAddr The address of the chunk to add to / remove from the + * balloon. + * @param fInflate Inflate if true, deflate if false. + */ +static int vgdrvSetBalloonSizeFromUser(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint64_t u64ChunkAddr, bool fInflate) +{ + VMMDevChangeMemBalloon *pReq; + int rc = VINF_SUCCESS; + uint32_t i; + PRTR0MEMOBJ pMemObj = NULL; + + if (fInflate) + { + if ( pDevExt->MemBalloon.cChunks > pDevExt->MemBalloon.cMaxChunks - 1 + || pDevExt->MemBalloon.cMaxChunks == 0 /* If called without first querying. */) + { + LogRel(("vboxGuestSetBalloonSize: cannot inflate balloon, already have %u chunks (max=%u)\n", + pDevExt->MemBalloon.cChunks, pDevExt->MemBalloon.cMaxChunks)); + return VERR_INVALID_PARAMETER; + } + + if (!pDevExt->MemBalloon.paMemObj) + { + pDevExt->MemBalloon.paMemObj = (PRTR0MEMOBJ)RTMemAlloc(sizeof(RTR0MEMOBJ) * pDevExt->MemBalloon.cMaxChunks); + if (!pDevExt->MemBalloon.paMemObj) + { + LogRel(("VBoxGuestSetBalloonSizeFromUser: no memory for paMemObj!\n")); + return VERR_NO_MEMORY; + } + for (i = 0; i < pDevExt->MemBalloon.cMaxChunks; i++) + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + } + } + else + { + if (pDevExt->MemBalloon.cChunks == 0) + { + AssertMsgFailed(("vboxGuestSetBalloonSize: cannot decrease balloon, already at size 0\n")); + return VERR_INVALID_PARAMETER; + } + } + + /* + * Enumerate all memory objects and check if the object is already registered. + */ + for (i = 0; i < pDevExt->MemBalloon.cMaxChunks; i++) + { + if ( fInflate + && !pMemObj + && pDevExt->MemBalloon.paMemObj[i] == NIL_RTR0MEMOBJ) + pMemObj = &pDevExt->MemBalloon.paMemObj[i]; /* found free object pointer */ + if (RTR0MemObjAddressR3(pDevExt->MemBalloon.paMemObj[i]) == u64ChunkAddr) + { + if (fInflate) + return VERR_ALREADY_EXISTS; /* don't provide the same memory twice */ + pMemObj = &pDevExt->MemBalloon.paMemObj[i]; + break; + } + } + if (!pMemObj) + { + if (fInflate) + { + /* no free object pointer found -- should not happen */ + return VERR_NO_MEMORY; + } + + /* cannot free this memory as it wasn't provided before */ + return VERR_NOT_FOUND; + } + + /* + * Try inflate / default the balloon as requested. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_FAILURE(rc)) + return rc; + + if (fInflate) + { + rc = RTR0MemObjLockUser(pMemObj, (RTR3PTR)u64ChunkAddr, VMMDEV_MEMORY_BALLOON_CHUNK_SIZE, + RTMEM_PROT_READ | RTMEM_PROT_WRITE, NIL_RTR0PROCESS); + if (RT_SUCCESS(rc)) + { + rc = vgdrvBalloonInflate(pMemObj, pReq); + if (RT_SUCCESS(rc)) + pDevExt->MemBalloon.cChunks++; + else + { + Log(("vboxGuestSetBalloonSize(inflate): failed, rc=%Rrc!\n", rc)); + RTR0MemObjFree(*pMemObj, true); + *pMemObj = NIL_RTR0MEMOBJ; + } + } + } + else + { + rc = vgdrvBalloonDeflate(pMemObj, pReq); + if (RT_SUCCESS(rc)) + pDevExt->MemBalloon.cChunks--; + else + Log(("vboxGuestSetBalloonSize(deflate): failed, rc=%Rrc!\n", rc)); + } + + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Cleanup the memory balloon of a session. + * + * Will request the balloon mutex, so it must be valid and the caller must not + * own it already. + * + * @param pDevExt The device extension. + * @param pSession The session. Can be NULL at unload. + */ +static void vgdrvCloseMemBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + if ( pDevExt->MemBalloon.pOwner == pSession + || pSession == NULL /*unload*/) + { + if (pDevExt->MemBalloon.paMemObj) + { + VMMDevChangeMemBalloon *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_SUCCESS(rc)) + { + uint32_t i; + for (i = pDevExt->MemBalloon.cChunks; i-- > 0;) + { + rc = vgdrvBalloonDeflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + LogRel(("vgdrvCloseMemBalloon: Deflate failed with rc=%Rrc. Will leak %u chunks.\n", + rc, pDevExt->MemBalloon.cChunks)); + break; + } + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + pDevExt->MemBalloon.cChunks--; + } + VbglGRFree(&pReq->header); + } + else + LogRel(("vgdrvCloseMemBalloon: Failed to allocate VMMDev request buffer (rc=%Rrc). Will leak %u chunks.\n", + rc, pDevExt->MemBalloon.cChunks)); + RTMemFree(pDevExt->MemBalloon.paMemObj); + pDevExt->MemBalloon.paMemObj = NULL; + } + + pDevExt->MemBalloon.pOwner = NULL; + } + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); +} + +/** @} */ + + + +/** @name Heartbeat + * @{ + */ + +/** + * Sends heartbeat to host. + * + * @returns VBox status code. + */ +static int vgdrvHeartbeatSend(PVBOXGUESTDEVEXT pDevExt) +{ + int rc; + if (pDevExt->pReqGuestHeartbeat) + { + rc = VbglGRPerform(pDevExt->pReqGuestHeartbeat); + Log(("vgdrvHeartbeatSend: VbglGRPerform vgdrvHeartbeatSend completed with rc=%Rrc\n", rc)); + } + else + rc = VERR_INVALID_STATE; + return rc; +} + + +/** + * Callback for heartbeat timer. + */ +static DECLCALLBACK(void) vgdrvHeartbeatTimerHandler(PRTTIMER hTimer, void *pvUser, uint64_t iTick) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + int rc; + AssertReturnVoid(pDevExt); + + rc = vgdrvHeartbeatSend(pDevExt); + if (RT_FAILURE(rc)) + Log(("HB Timer: vgdrvHeartbeatSend failed: rc=%Rrc\n", rc)); + + NOREF(hTimer); NOREF(iTick); +} + + +/** + * Configure the host to check guest's heartbeat + * and get heartbeat interval from the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param fEnabled Set true to enable guest heartbeat checks on host. + */ +static int vgdrvHeartbeatHostConfigure(PVBOXGUESTDEVEXT pDevExt, bool fEnabled) +{ + VMMDevReqHeartbeat *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_HeartbeatConfigure); + Log(("vgdrvHeartbeatHostConfigure: VbglGRAlloc vgdrvHeartbeatHostConfigure completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReq->fEnabled = fEnabled; + pReq->cNsInterval = 0; + rc = VbglGRPerform(&pReq->header); + Log(("vgdrvHeartbeatHostConfigure: VbglGRPerform vgdrvHeartbeatHostConfigure completed with rc=%Rrc\n", rc)); + pDevExt->cNsHeartbeatInterval = pReq->cNsInterval; + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Initializes the heartbeat timer. + * + * This feature may be disabled by the host. + * + * @returns VBox status (ignored). + * @param pDevExt The device extension. + */ +static int vgdrvHeartbeatInit(PVBOXGUESTDEVEXT pDevExt) +{ + /* + * Make sure that heartbeat checking is disabled. + */ + int rc = vgdrvHeartbeatHostConfigure(pDevExt, false); + if (RT_SUCCESS(rc)) + { + rc = vgdrvHeartbeatHostConfigure(pDevExt, true); + if (RT_SUCCESS(rc)) + { + /* + * Preallocate the request to use it from the timer callback because: + * 1) on Windows VbglGRAlloc must be called at IRQL <= APC_LEVEL + * and the timer callback runs at DISPATCH_LEVEL; + * 2) avoid repeated allocations. + */ + rc = VbglGRAlloc(&pDevExt->pReqGuestHeartbeat, sizeof(*pDevExt->pReqGuestHeartbeat), VMMDevReq_GuestHeartbeat); + if (RT_SUCCESS(rc)) + { + LogRel(("vgdrvHeartbeatInit: Setting up heartbeat to trigger every %RU64 milliseconds\n", + pDevExt->cNsHeartbeatInterval / RT_NS_1MS)); + rc = RTTimerCreateEx(&pDevExt->pHeartbeatTimer, pDevExt->cNsHeartbeatInterval, 0 /*fFlags*/, + (PFNRTTIMER)vgdrvHeartbeatTimerHandler, pDevExt); + if (RT_SUCCESS(rc)) + { + rc = RTTimerStart(pDevExt->pHeartbeatTimer, 0); + if (RT_SUCCESS(rc)) + return VINF_SUCCESS; + + LogRel(("vgdrvHeartbeatInit: Heartbeat timer failed to start, rc=%Rrc\n", rc)); + } + else + LogRel(("vgdrvHeartbeatInit: Failed to create heartbeat timer: %Rrc\n", rc)); + + VbglGRFree(pDevExt->pReqGuestHeartbeat); + pDevExt->pReqGuestHeartbeat = NULL; + } + else + LogRel(("vgdrvHeartbeatInit: VbglGRAlloc(VMMDevReq_GuestHeartbeat): %Rrc\n", rc)); + + LogRel(("vgdrvHeartbeatInit: Failed to set up the timer, guest heartbeat is disabled\n")); + vgdrvHeartbeatHostConfigure(pDevExt, false); + } + else + LogRel(("vgdrvHeartbeatInit: Failed to configure host for heartbeat checking: rc=%Rrc\n", rc)); + } + return rc; +} + +/** @} */ + + +/** + * Helper to reinit the VMMDev communication after hibernation. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param enmOSType The OS type. + * + * @todo Call this on all platforms, not just windows. + */ +int VGDrvCommonReinitDevExtAfterHibernation(PVBOXGUESTDEVEXT pDevExt, VBOXOSTYPE enmOSType) +{ + int rc = vgdrvReportGuestInfo(enmOSType); + if (RT_SUCCESS(rc)) + { + rc = vgdrvReportDriverStatus(true /* Driver is active */); + if (RT_FAILURE(rc)) + Log(("VGDrvCommonReinitDevExtAfterHibernation: could not report guest driver status, rc=%Rrc\n", rc)); + } + else + Log(("VGDrvCommonReinitDevExtAfterHibernation: could not report guest information to host, rc=%Rrc\n", rc)); + LogFlow(("VGDrvCommonReinitDevExtAfterHibernation: returned with rc=%Rrc\n", rc)); + return rc; +} + + +/** + * Initializes the VBoxGuest device extension when the + * device driver is loaded. + * + * The native code locates the VMMDev on the PCI bus and retrieve + * the MMIO and I/O port ranges, this function will take care of + * mapping the MMIO memory (if present). Upon successful return + * the native code should set up the interrupt handler. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. Allocated by the native code. + * @param IOPortBase The base of the I/O port range. + * @param pvMMIOBase The base of the MMIO memory mapping. + * This is optional, pass NULL if not present. + * @param cbMMIO The size of the MMIO memory mapping. + * This is optional, pass 0 if not present. + * @param enmOSType The guest OS type to report to the VMMDev. + * @param fFixedEvents Events that will be enabled upon init and no client + * will ever be allowed to mask. + */ +int VGDrvCommonInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, + void *pvMMIOBase, uint32_t cbMMIO, VBOXOSTYPE enmOSType, uint32_t fFixedEvents) +{ + int rc, rc2; + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + /* + * Create the release log. + */ + static const char * const s_apszGroups[] = VBOX_LOGGROUP_NAMES; + PRTLOGGER pRelLogger; + rc = RTLogCreate(&pRelLogger, 0 /*fFlags*/, "all", "VBOXGUEST_RELEASE_LOG", RT_ELEMENTS(s_apszGroups), s_apszGroups, + RTLOGDEST_STDOUT | RTLOGDEST_DEBUGGER, NULL); + if (RT_SUCCESS(rc)) + RTLogRelSetDefaultInstance(pRelLogger); + /** @todo Add native hook for getting logger config parameters and setting + * them. On linux we should use the module parameter stuff... */ +#endif + + /* + * Adjust fFixedEvents. + */ +#ifdef VBOX_WITH_HGCM + fFixedEvents |= VMMDEV_EVENT_HGCM; +#endif + + /* + * Initialize the data. + */ + pDevExt->IOPortBase = IOPortBase; + pDevExt->pVMMDevMemory = NULL; + pDevExt->hGuestMappings = NIL_RTR0MEMOBJ; + pDevExt->EventSpinlock = NIL_RTSPINLOCK; + pDevExt->pIrqAckEvents = NULL; + pDevExt->PhysIrqAckEvents = NIL_RTCCPHYS; + RTListInit(&pDevExt->WaitList); +#ifdef VBOX_WITH_HGCM + RTListInit(&pDevExt->HGCMWaitList); +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListInit(&pDevExt->WakeUpList); +#endif + RTListInit(&pDevExt->WokenUpList); + RTListInit(&pDevExt->FreeList); + RTListInit(&pDevExt->SessionList); + pDevExt->cSessions = 0; + pDevExt->fLoggingEnabled = false; + pDevExt->f32PendingEvents = 0; + pDevExt->u32MousePosChangedSeq = 0; + pDevExt->SessionSpinlock = NIL_RTSPINLOCK; + pDevExt->MemBalloon.hMtx = NIL_RTSEMFASTMUTEX; + pDevExt->MemBalloon.cChunks = 0; + pDevExt->MemBalloon.cMaxChunks = 0; + pDevExt->MemBalloon.fUseKernelAPI = true; + pDevExt->MemBalloon.paMemObj = NULL; + pDevExt->MemBalloon.pOwner = NULL; + pDevExt->MouseNotifyCallback.pfnNotify = NULL; + pDevExt->MouseNotifyCallback.pvUser = NULL; + pDevExt->pReqGuestHeartbeat = NULL; + + pDevExt->fFixedEvents = fFixedEvents; + vgdrvBitUsageTrackerClear(&pDevExt->EventFilterTracker); + pDevExt->fEventFilterHost = UINT32_MAX; /* forces a report */ + + vgdrvBitUsageTrackerClear(&pDevExt->MouseStatusTracker); + pDevExt->fMouseStatusHost = UINT32_MAX; /* forces a report */ + + pDevExt->fAcquireModeGuestCaps = 0; + pDevExt->fSetModeGuestCaps = 0; + pDevExt->fAcquiredGuestCaps = 0; + vgdrvBitUsageTrackerClear(&pDevExt->SetGuestCapsTracker); + pDevExt->fGuestCapsHost = UINT32_MAX; /* forces a report */ + + /* + * If there is an MMIO region validate the version and size. + */ + if (pvMMIOBase) + { + VMMDevMemory *pVMMDev = (VMMDevMemory *)pvMMIOBase; + Assert(cbMMIO); + if ( pVMMDev->u32Version == VMMDEV_MEMORY_VERSION + && pVMMDev->u32Size >= 32 + && pVMMDev->u32Size <= cbMMIO) + { + pDevExt->pVMMDevMemory = pVMMDev; + Log(("VGDrvCommonInitDevExt: VMMDevMemory: mapping=%p size=%#RX32 (%#RX32) version=%#RX32\n", + pVMMDev, pVMMDev->u32Size, cbMMIO, pVMMDev->u32Version)); + } + else /* try live without it. */ + LogRel(("VGDrvCommonInitDevExt: Bogus VMMDev memory; u32Version=%RX32 (expected %RX32) u32Size=%RX32 (expected <= %RX32)\n", + pVMMDev->u32Version, VMMDEV_MEMORY_VERSION, pVMMDev->u32Size, cbMMIO)); + } + + /* + * Create the wait and session spinlocks as well as the ballooning mutex. + */ + rc = RTSpinlockCreate(&pDevExt->EventSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxGuestEvent"); + if (RT_SUCCESS(rc)) + rc = RTSpinlockCreate(&pDevExt->SessionSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxGuestSession"); + if (RT_FAILURE(rc)) + { + LogRel(("VGDrvCommonInitDevExt: failed to create spinlock, rc=%Rrc!\n", rc)); + if (pDevExt->EventSpinlock != NIL_RTSPINLOCK) + RTSpinlockDestroy(pDevExt->EventSpinlock); + return rc; + } + + rc = RTSemFastMutexCreate(&pDevExt->MemBalloon.hMtx); + if (RT_FAILURE(rc)) + { + LogRel(("VGDrvCommonInitDevExt: failed to create mutex, rc=%Rrc!\n", rc)); + RTSpinlockDestroy(pDevExt->SessionSpinlock); + RTSpinlockDestroy(pDevExt->EventSpinlock); + return rc; + } + + /* + * Initialize the guest library and report the guest info back to VMMDev, + * set the interrupt control filter mask, and fixate the guest mappings + * made by the VMM. + */ + rc = VbglInitPrimary(pDevExt->IOPortBase, (VMMDevMemory *)pDevExt->pVMMDevMemory); + if (RT_SUCCESS(rc)) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pDevExt->pIrqAckEvents, sizeof(VMMDevEvents), VMMDevReq_AcknowledgeEvents); + if (RT_SUCCESS(rc)) + { + pDevExt->PhysIrqAckEvents = VbglPhysHeapGetPhysAddr(pDevExt->pIrqAckEvents); + Assert(pDevExt->PhysIrqAckEvents != 0); + + rc = vgdrvReportGuestInfo(enmOSType); + if (RT_SUCCESS(rc)) + { + /* + * Set the fixed event and make sure the host doesn't have any lingering + * the guest capabilities or mouse status bits set. + */ + rc = vgdrvResetEventFilterOnHost(pDevExt, pDevExt->fFixedEvents); + if (RT_SUCCESS(rc)) + { + rc = vgdrvResetCapabilitiesOnHost(pDevExt); + if (RT_SUCCESS(rc)) + { + rc = vgdrvResetMouseStatusOnHost(pDevExt); + if (RT_SUCCESS(rc)) + { + /* + * Initialize stuff which may fail without requiring the driver init to fail. + */ + vgdrvInitFixateGuestMappings(pDevExt); + vgdrvHeartbeatInit(pDevExt); + + /* + * Done! + */ + rc = vgdrvReportDriverStatus(true /* Driver is active */); + if (RT_FAILURE(rc)) + LogRel(("VGDrvCommonInitDevExt: VBoxReportGuestDriverStatus failed, rc=%Rrc\n", rc)); + + LogFlowFunc(("VGDrvCommonInitDevExt: returns success\n")); + return VINF_SUCCESS; + } + LogRel(("VGDrvCommonInitDevExt: failed to clear mouse status: rc=%Rrc\n", rc)); + } + else + LogRel(("VGDrvCommonInitDevExt: failed to clear guest capabilities: rc=%Rrc\n", rc)); + } + else + LogRel(("VGDrvCommonInitDevExt: failed to set fixed event filter: rc=%Rrc\n", rc)); + } + else + LogRel(("VGDrvCommonInitDevExt: VBoxReportGuestInfo failed: rc=%Rrc\n", rc)); + VbglGRFree((VMMDevRequestHeader *)pDevExt->pIrqAckEvents); + } + else + LogRel(("VGDrvCommonInitDevExt: VBoxGRAlloc failed: rc=%Rrc\n", rc)); + + VbglTerminate(); + } + else + LogRel(("VGDrvCommonInitDevExt: VbglInit failed: rc=%Rrc\n", rc)); + + rc2 = RTSemFastMutexDestroy(pDevExt->MemBalloon.hMtx); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->EventSpinlock); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->SessionSpinlock); AssertRC(rc2); + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); +#endif + return rc; /* (failed) */ +} + + +/** + * Deletes all the items in a wait chain. + * @param pList The head of the chain. + */ +static void vgdrvDeleteWaitList(PRTLISTNODE pList) +{ + while (!RTListIsEmpty(pList)) + { + int rc2; + PVBOXGUESTWAIT pWait = RTListGetFirst(pList, VBOXGUESTWAIT, ListNode); + RTListNodeRemove(&pWait->ListNode); + + rc2 = RTSemEventMultiDestroy(pWait->Event); AssertRC(rc2); + pWait->Event = NIL_RTSEMEVENTMULTI; + pWait->pSession = NULL; + RTMemFree(pWait); + } +} + + +/** + * Destroys the VBoxGuest device extension. + * + * The native code should call this before the driver is loaded, + * but don't call this on shutdown. + * + * @param pDevExt The device extension. + */ +void VGDrvCommonDeleteDevExt(PVBOXGUESTDEVEXT pDevExt) +{ + int rc2; + Log(("VGDrvCommonDeleteDevExt:\n")); + Log(("VBoxGuest: The additions driver is terminating.\n")); + + /* + * Stop and destroy HB timer and + * disable host heartbeat checking. + */ + if (pDevExt->pHeartbeatTimer) + { + RTTimerDestroy(pDevExt->pHeartbeatTimer); + vgdrvHeartbeatHostConfigure(pDevExt, false); + } + + VbglGRFree(pDevExt->pReqGuestHeartbeat); + pDevExt->pReqGuestHeartbeat = NULL; + + /* + * Clean up the bits that involves the host first. + */ + vgdrvTermUnfixGuestMappings(pDevExt); + if (!RTListIsEmpty(&pDevExt->SessionList)) + { + LogRelFunc(("session list not empty!\n")); + RTListInit(&pDevExt->SessionList); + } + /* Update the host flags (mouse status etc) not to reflect this session. */ + pDevExt->fFixedEvents = 0; + vgdrvResetEventFilterOnHost(pDevExt, 0 /*fFixedEvents*/); + vgdrvResetCapabilitiesOnHost(pDevExt); + vgdrvResetMouseStatusOnHost(pDevExt); + + vgdrvCloseMemBalloon(pDevExt, (PVBOXGUESTSESSION)NULL); + + /* + * Cleanup all the other resources. + */ + rc2 = RTSpinlockDestroy(pDevExt->EventSpinlock); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->SessionSpinlock); AssertRC(rc2); + rc2 = RTSemFastMutexDestroy(pDevExt->MemBalloon.hMtx); AssertRC(rc2); + + vgdrvDeleteWaitList(&pDevExt->WaitList); +#ifdef VBOX_WITH_HGCM + vgdrvDeleteWaitList(&pDevExt->HGCMWaitList); +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + vgdrvDeleteWaitList(&pDevExt->WakeUpList); +#endif + vgdrvDeleteWaitList(&pDevExt->WokenUpList); + vgdrvDeleteWaitList(&pDevExt->FreeList); + + VbglTerminate(); + + pDevExt->pVMMDevMemory = NULL; + + pDevExt->IOPortBase = 0; + pDevExt->pIrqAckEvents = NULL; + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); +#endif + +} + + +/** + * Creates a VBoxGuest user session. + * + * The native code calls this when a ring-3 client opens the device. + * Use VGDrvCommonCreateKernelSession when a ring-0 client connects. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param ppSession Where to store the session on success. + */ +int VGDrvCommonCreateUserSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)RTMemAllocZ(sizeof(*pSession)); + if (RT_UNLIKELY(!pSession)) + { + LogRel(("VGDrvCommonCreateUserSession: no memory!\n")); + return VERR_NO_MEMORY; + } + + pSession->Process = RTProcSelf(); + pSession->R0Process = RTR0ProcHandleSelf(); + pSession->pDevExt = pDevExt; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListAppend(&pDevExt->SessionList, &pSession->ListNode); + pDevExt->cSessions++; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + *ppSession = pSession; + LogFlow(("VGDrvCommonCreateUserSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + return VINF_SUCCESS; +} + + +/** + * Creates a VBoxGuest kernel session. + * + * The native code calls this when a ring-0 client connects to the device. + * Use VGDrvCommonCreateUserSession when a ring-3 client opens the device. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param ppSession Where to store the session on success. + */ +int VGDrvCommonCreateKernelSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)RTMemAllocZ(sizeof(*pSession)); + if (RT_UNLIKELY(!pSession)) + { + LogRel(("VGDrvCommonCreateKernelSession: no memory!\n")); + return VERR_NO_MEMORY; + } + + pSession->Process = NIL_RTPROCESS; + pSession->R0Process = NIL_RTR0PROCESS; + pSession->pDevExt = pDevExt; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListAppend(&pDevExt->SessionList, &pSession->ListNode); + pDevExt->cSessions++; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + *ppSession = pSession; + LogFlow(("VGDrvCommonCreateKernelSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + return VINF_SUCCESS; +} + + +/** + * Closes a VBoxGuest session. + * + * @param pDevExt The device extension. + * @param pSession The session to close (and free). + */ +void VGDrvCommonCloseSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ +#ifdef VBOX_WITH_HGCM + unsigned i; +#endif + LogFlow(("VGDrvCommonCloseSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListNodeRemove(&pSession->ListNode); + pDevExt->cSessions--; + RTSpinlockRelease(pDevExt->SessionSpinlock); + vgdrvAcquireSessionCapabilities(pDevExt, pSession, 0, UINT32_MAX, VBOXGUESTCAPSACQUIRE_FLAGS_NONE, + true /*fSessionTermination*/); + vgdrvSetSessionCapabilities(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + vgdrvSetSessionEventFilter(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + vgdrvSetSessionMouseStatus(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + + vgdrvIoCtl_CancelAllWaitEvents(pDevExt, pSession); + +#ifdef VBOX_WITH_HGCM + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i]) + { + VBoxGuestHGCMDisconnectInfo Info; + Info.result = 0; + Info.u32ClientID = pSession->aHGCMClientIds[i]; + pSession->aHGCMClientIds[i] = 0; + Log(("VGDrvCommonCloseSession: disconnecting client id %#RX32\n", Info.u32ClientID)); + VbglR0HGCMInternalDisconnect(&Info, vgdrvHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + } +#endif + + pSession->pDevExt = NULL; + pSession->Process = NIL_RTPROCESS; + pSession->R0Process = NIL_RTR0PROCESS; + vgdrvCloseMemBalloon(pDevExt, pSession); + RTMemFree(pSession); +} + + +/** + * Allocates a wait-for-event entry. + * + * @returns The wait-for-event entry. + * @param pDevExt The device extension. + * @param pSession The session that's allocating this. Can be NULL. + */ +static PVBOXGUESTWAIT vgdrvWaitAlloc(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + /* + * Allocate it one way or the other. + */ + PVBOXGUESTWAIT pWait = RTListGetFirst(&pDevExt->FreeList, VBOXGUESTWAIT, ListNode); + if (pWait) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + + pWait = RTListGetFirst(&pDevExt->FreeList, VBOXGUESTWAIT, ListNode); + if (pWait) + RTListNodeRemove(&pWait->ListNode); + + RTSpinlockRelease(pDevExt->EventSpinlock); + } + if (!pWait) + { + int rc; + + pWait = (PVBOXGUESTWAIT)RTMemAlloc(sizeof(*pWait)); + if (!pWait) + { + LogRelMax(32, ("vgdrvWaitAlloc: out-of-memory!\n")); + return NULL; + } + + rc = RTSemEventMultiCreate(&pWait->Event); + if (RT_FAILURE(rc)) + { + LogRelMax(32, ("vgdrvWaitAlloc: RTSemEventMultiCreate failed with rc=%Rrc!\n", rc)); + RTMemFree(pWait); + return NULL; + } + + pWait->ListNode.pNext = NULL; + pWait->ListNode.pPrev = NULL; + } + + /* + * Zero members just as an precaution. + */ + pWait->fReqEvents = 0; + pWait->fResEvents = 0; +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + pWait->fPendingWakeUp = false; + pWait->fFreeMe = false; +#endif + pWait->pSession = pSession; +#ifdef VBOX_WITH_HGCM + pWait->pHGCMReq = NULL; +#endif + RTSemEventMultiReset(pWait->Event); + return pWait; +} + + +/** + * Frees the wait-for-event entry. + * + * The caller must own the wait spinlock ! + * The entry must be in a list! + * + * @param pDevExt The device extension. + * @param pWait The wait-for-event entry to free. + */ +static void vgdrvWaitFreeLocked(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTWAIT pWait) +{ + pWait->fReqEvents = 0; + pWait->fResEvents = 0; +#ifdef VBOX_WITH_HGCM + pWait->pHGCMReq = NULL; +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + Assert(!pWait->fFreeMe); + if (pWait->fPendingWakeUp) + pWait->fFreeMe = true; + else +#endif + { + RTListNodeRemove(&pWait->ListNode); + RTListAppend(&pDevExt->FreeList, &pWait->ListNode); + } +} + + +/** + * Frees the wait-for-event entry. + * + * @param pDevExt The device extension. + * @param pWait The wait-for-event entry to free. + */ +static void vgdrvWaitFreeUnlocked(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTWAIT pWait) +{ + RTSpinlockAcquire(pDevExt->EventSpinlock); + vgdrvWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); +} + + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP +/** + * Processes the wake-up list. + * + * All entries in the wake-up list gets signalled and moved to the woken-up + * list. + * + * @param pDevExt The device extension. + */ +void VGDrvCommonWaitDoWakeUps(PVBOXGUESTDEVEXT pDevExt) +{ + if (!RTListIsEmpty(&pDevExt->WakeUpList)) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + for (;;) + { + int rc; + PVBOXGUESTWAIT pWait = RTListGetFirst(&pDevExt->WakeUpList, VBOXGUESTWAIT, ListNode); + if (!pWait) + break; + pWait->fPendingWakeUp = true; + RTSpinlockRelease(pDevExt->EventSpinlock); + + rc = RTSemEventMultiSignal(pWait->Event); + AssertRC(rc); + + RTSpinlockAcquire(pDevExt->EventSpinlock); + pWait->fPendingWakeUp = false; + if (!pWait->fFreeMe) + { + RTListNodeRemove(&pWait->ListNode); + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + } + else + { + pWait->fFreeMe = false; + vgdrvWaitFreeLocked(pDevExt, pWait); + } + } + RTSpinlockRelease(pDevExt->EventSpinlock); + } +} +#endif /* VBOXGUEST_USE_DEFERRED_WAKE_UP */ + + +/** + * Implements the fast (no input or output) type of IOCtls. + * + * This is currently just a placeholder stub inherited from the support driver code. + * + * @returns VBox status code. + * @param iFunction The IOCtl function number. + * @param pDevExt The device extension. + * @param pSession The session. + */ +int VGDrvCommonIoCtlFast(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + LogFlow(("VGDrvCommonIoCtlFast: iFunction=%#x pDevExt=%p pSession=%p\n", iFunction, pDevExt, pSession)); + + NOREF(iFunction); + NOREF(pDevExt); + NOREF(pSession); + return VERR_NOT_SUPPORTED; +} + + +/** + * Return the VMM device port. + * + * returns IPRT status code. + * @param pDevExt The device extension. + * @param pInfo The request info. + * @param pcbDataReturned (out) contains the number of bytes to return. + */ +static int vgdrvIoCtl_GetVMMDevPort(PVBOXGUESTDEVEXT pDevExt, VBoxGuestPortInfo *pInfo, size_t *pcbDataReturned) +{ + LogFlow(("VBOXGUEST_IOCTL_GETVMMDEVPORT\n")); + + pInfo->portAddress = pDevExt->IOPortBase; + pInfo->pVMMDevMemory = (VMMDevMemory *)pDevExt->pVMMDevMemory; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + return VINF_SUCCESS; +} + + +#ifndef RT_OS_WINDOWS +/** + * Set the callback for the kernel mouse handler. + * + * returns IPRT status code. + * @param pDevExt The device extension. + * @param pNotify The new callback information. + */ +int vgdrvIoCtl_SetMouseNotifyCallback(PVBOXGUESTDEVEXT pDevExt, VBoxGuestMouseSetNotifyCallback *pNotify) +{ + LogFlow(("VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK: pfnNotify=%p pvUser=%p\n", pNotify->pfnNotify, pNotify->pvUser)); + + RTSpinlockAcquire(pDevExt->EventSpinlock); + pDevExt->MouseNotifyCallback = *pNotify; + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; +} +#endif + + +/** + * Worker vgdrvIoCtl_WaitEvent. + * + * The caller enters the spinlock, we leave it. + * + * @returns VINF_SUCCESS if we've left the spinlock and can return immediately. + */ +DECLINLINE(int) vbdgCheckWaitEventCondition(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestWaitEventInfo *pInfo, int iEvent, const uint32_t fReqEvents) +{ + uint32_t fMatches = pDevExt->f32PendingEvents & fReqEvents; + if (fMatches & VBOXGUEST_ACQUIRE_STYLE_EVENTS) + fMatches &= vgdrvGetAllowedEventMaskForSession(pDevExt, pSession); + if (fMatches || pSession->fPendingCancelWaitEvents) + { + ASMAtomicAndU32(&pDevExt->f32PendingEvents, ~fMatches); + RTSpinlockRelease(pDevExt->EventSpinlock); + + pInfo->u32EventFlagsOut = fMatches; + pInfo->u32Result = VBOXGUEST_WAITEVENT_OK; + if (fReqEvents & ~((uint32_t)1 << iEvent)) + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x\n", pInfo->u32EventFlagsOut)); + else + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x/%d\n", pInfo->u32EventFlagsOut, iEvent)); + pSession->fPendingCancelWaitEvents = false; + return VINF_SUCCESS; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + return VERR_TIMEOUT; +} + + +static int vgdrvIoCtl_WaitEvent(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestWaitEventInfo *pInfo, size_t *pcbDataReturned, bool fInterruptible) +{ + const uint32_t fReqEvents = pInfo->u32EventMaskIn; + uint32_t fResEvents; + int iEvent; + PVBOXGUESTWAIT pWait; + int rc; + + pInfo->u32EventFlagsOut = 0; + pInfo->u32Result = VBOXGUEST_WAITEVENT_ERROR; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + + /* + * Copy and verify the input mask. + */ + iEvent = ASMBitFirstSetU32(fReqEvents) - 1; + if (RT_UNLIKELY(iEvent < 0)) + { + LogRel(("VBOXGUEST_IOCTL_WAITEVENT: Invalid input mask %#x!!\n", fReqEvents)); + return VERR_INVALID_PARAMETER; + } + + /* + * Check the condition up front, before doing the wait-for-event allocations. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + rc = vbdgCheckWaitEventCondition(pDevExt, pSession, pInfo, iEvent, fReqEvents); + if (rc == VINF_SUCCESS) + return rc; + + if (!pInfo->u32TimeoutIn) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_TIMEOUT; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_TIMEOUT\n")); + return VERR_TIMEOUT; + } + + pWait = vgdrvWaitAlloc(pDevExt, pSession); + if (!pWait) + return VERR_NO_MEMORY; + pWait->fReqEvents = fReqEvents; + + /* + * We've got the wait entry now, re-enter the spinlock and check for the condition. + * If the wait condition is met, return. + * Otherwise enter into the list and go to sleep waiting for the ISR to signal us. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListAppend(&pDevExt->WaitList, &pWait->ListNode); + rc = vbdgCheckWaitEventCondition(pDevExt, pSession, pInfo, iEvent, fReqEvents); + if (rc == VINF_SUCCESS) + { + vgdrvWaitFreeUnlocked(pDevExt, pWait); + return rc; + } + + if (fInterruptible) + rc = RTSemEventMultiWaitNoResume(pWait->Event, + pInfo->u32TimeoutIn == UINT32_MAX ? RT_INDEFINITE_WAIT : pInfo->u32TimeoutIn); + else + rc = RTSemEventMultiWait(pWait->Event, + pInfo->u32TimeoutIn == UINT32_MAX ? RT_INDEFINITE_WAIT : pInfo->u32TimeoutIn); + + /* + * There is one special case here and that's when the semaphore is + * destroyed upon device driver unload. This shouldn't happen of course, + * but in case it does, just get out of here ASAP. + */ + if (rc == VERR_SEM_DESTROYED) + return rc; + + /* + * Unlink the wait item and dispose of it. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + fResEvents = pWait->fResEvents; + vgdrvWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); + + /* + * Now deal with the return code. + */ + if ( fResEvents + && fResEvents != UINT32_MAX) + { + pInfo->u32EventFlagsOut = fResEvents; + pInfo->u32Result = VBOXGUEST_WAITEVENT_OK; + if (fReqEvents & ~((uint32_t)1 << iEvent)) + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x\n", pInfo->u32EventFlagsOut)); + else + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x/%d\n", pInfo->u32EventFlagsOut, iEvent)); + rc = VINF_SUCCESS; + } + else if ( fResEvents == UINT32_MAX + || rc == VERR_INTERRUPTED) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_INTERRUPTED; + rc = VERR_INTERRUPTED; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_INTERRUPTED\n")); + } + else if (rc == VERR_TIMEOUT) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_TIMEOUT; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_TIMEOUT (2)\n")); + } + else + { + if (RT_SUCCESS(rc)) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_WAITEVENT: returns %Rrc but no events!\n", rc)); + rc = VERR_INTERNAL_ERROR; + } + pInfo->u32Result = VBOXGUEST_WAITEVENT_ERROR; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %Rrc\n", rc)); + } + + return rc; +} + + +static int vgdrvIoCtl_CancelAllWaitEvents(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + int rc = 0; + /* Was as least one WAITEVENT in process for this session? If not we + * set a flag that the next call should be interrupted immediately. This + * is needed so that a user thread can reliably interrupt another one in a + * WAITEVENT loop. */ + bool fCancelledOne = false; + + LogFlow(("VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS\n")); + + /* + * Walk the event list and wake up anyone with a matching session. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListForEachSafe(&pDevExt->WaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + if (pWait->pSession == pSession) + { + fCancelledOne = true; + pWait->fResEvents = UINT32_MAX; + RTListNodeRemove(&pWait->ListNode); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +#else + rc |= RTSemEventMultiSignal(pWait->Event); + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); +#endif + } + } + if (!fCancelledOne) + pSession->fPendingCancelWaitEvents = true; + RTSpinlockRelease(pDevExt->EventSpinlock); + Assert(rc == 0); + NOREF(rc); + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + VGDrvCommonWaitDoWakeUps(pDevExt); +#endif + + return VINF_SUCCESS; +} + + +/** + * Checks if the VMM request is allowed in the context of the given session. + * + * @returns VINF_SUCCESS or VERR_PERMISSION_DENIED. + * @param pDevExt The device extension. + * @param pSession The calling session. + * @param enmType The request type. + * @param pReqHdr The request. + */ +static int vgdrvCheckIfVmmReqIsAllowed(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VMMDevRequestType enmType, + VMMDevRequestHeader const *pReqHdr) +{ + /* + * Categorize the request being made. + */ + /** @todo This need quite some more work! */ + enum + { + kLevel_Invalid, kLevel_NoOne, kLevel_OnlyVBoxGuest, kLevel_OnlyKernel, kLevel_TrustedUsers, kLevel_AllUsers + } enmRequired; + switch (enmType) + { + /* + * Deny access to anything we don't know or provide specialized I/O controls for. + */ +#ifdef VBOX_WITH_HGCM + case VMMDevReq_HGCMConnect: + case VMMDevReq_HGCMDisconnect: +# ifdef VBOX_WITH_64_BITS_GUESTS + case VMMDevReq_HGCMCall32: + case VMMDevReq_HGCMCall64: +# else + case VMMDevReq_HGCMCall: +# endif /* VBOX_WITH_64_BITS_GUESTS */ + case VMMDevReq_HGCMCancel: + case VMMDevReq_HGCMCancel2: +#endif /* VBOX_WITH_HGCM */ + case VMMDevReq_SetGuestCapabilities: + default: + enmRequired = kLevel_NoOne; + break; + + /* + * There are a few things only this driver can do (and it doesn't use + * the VMMRequst I/O control route anyway, but whatever). + */ + case VMMDevReq_ReportGuestInfo: + case VMMDevReq_ReportGuestInfo2: + case VMMDevReq_GetHypervisorInfo: + case VMMDevReq_SetHypervisorInfo: + case VMMDevReq_RegisterPatchMemory: + case VMMDevReq_DeregisterPatchMemory: + case VMMDevReq_GetMemBalloonChangeRequest: + enmRequired = kLevel_OnlyVBoxGuest; + break; + + /* + * Trusted users apps only. + */ + case VMMDevReq_QueryCredentials: + case VMMDevReq_ReportCredentialsJudgement: + case VMMDevReq_RegisterSharedModule: + case VMMDevReq_UnregisterSharedModule: + case VMMDevReq_WriteCoreDump: + case VMMDevReq_GetCpuHotPlugRequest: + case VMMDevReq_SetCpuHotPlugStatus: + case VMMDevReq_CheckSharedModules: + case VMMDevReq_GetPageSharingStatus: + case VMMDevReq_DebugIsPageShared: + case VMMDevReq_ReportGuestStats: + case VMMDevReq_ReportGuestUserState: + case VMMDevReq_GetStatisticsChangeRequest: + case VMMDevReq_ChangeMemBalloon: + enmRequired = kLevel_TrustedUsers; + break; + + /* + * Anyone. + */ + case VMMDevReq_GetMouseStatus: + case VMMDevReq_SetMouseStatus: + case VMMDevReq_SetPointerShape: + case VMMDevReq_GetHostVersion: + case VMMDevReq_Idle: + case VMMDevReq_GetHostTime: + case VMMDevReq_SetPowerStatus: + case VMMDevReq_AcknowledgeEvents: + case VMMDevReq_CtlGuestFilterMask: + case VMMDevReq_ReportGuestStatus: + case VMMDevReq_GetDisplayChangeRequest: + case VMMDevReq_VideoModeSupported: + case VMMDevReq_GetHeightReduction: + case VMMDevReq_GetDisplayChangeRequest2: + case VMMDevReq_VideoModeSupported2: + case VMMDevReq_VideoAccelEnable: + case VMMDevReq_VideoAccelFlush: + case VMMDevReq_VideoSetVisibleRegion: + case VMMDevReq_GetDisplayChangeRequestEx: + case VMMDevReq_GetSeamlessChangeRequest: + case VMMDevReq_GetVRDPChangeRequest: + case VMMDevReq_LogString: + case VMMDevReq_GetSessionId: + enmRequired = kLevel_AllUsers; + break; + + /* + * Depends on the request parameters... + */ + /** @todo this have to be changed into an I/O control and the facilities + * tracked in the session so they can automatically be failed when the + * session terminates without reporting the new status. + * + * The information presented by IGuest is not reliable without this! */ + case VMMDevReq_ReportGuestCapabilities: + switch (((VMMDevReportGuestStatus const *)pReqHdr)->guestStatus.facility) + { + case VBoxGuestFacilityType_All: + case VBoxGuestFacilityType_VBoxGuestDriver: + enmRequired = kLevel_OnlyVBoxGuest; + break; + case VBoxGuestFacilityType_VBoxService: + enmRequired = kLevel_TrustedUsers; + break; + case VBoxGuestFacilityType_VBoxTrayClient: + case VBoxGuestFacilityType_Seamless: + case VBoxGuestFacilityType_Graphics: + default: + enmRequired = kLevel_AllUsers; + break; + } + break; + } + + /* + * Check against the session. + */ + switch (enmRequired) + { + default: + case kLevel_NoOne: + break; + case kLevel_OnlyVBoxGuest: + case kLevel_OnlyKernel: + if (pSession->R0Process == NIL_RTR0PROCESS) + return VINF_SUCCESS; + break; + case kLevel_TrustedUsers: + case kLevel_AllUsers: + return VINF_SUCCESS; + } + + return VERR_PERMISSION_DENIED; +} + +static int vgdrvIoCtl_VMMRequest(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VMMDevRequestHeader *pReqHdr, size_t cbData, size_t *pcbDataReturned) +{ + int rc; + VMMDevRequestHeader *pReqCopy; + + /* + * Validate the header and request size. + */ + const VMMDevRequestType enmType = pReqHdr->requestType; + const uint32_t cbReq = pReqHdr->size; + const uint32_t cbMinSize = (uint32_t)vmmdevGetRequestSize(enmType); + + LogFlow(("VBOXGUEST_IOCTL_VMMREQUEST: type %d\n", pReqHdr->requestType)); + + if (cbReq < cbMinSize) + { + LogRel(("VBOXGUEST_IOCTL_VMMREQUEST: invalid hdr size %#x, expected >= %#x; type=%#x!!\n", + cbReq, cbMinSize, enmType)); + return VERR_INVALID_PARAMETER; + } + if (cbReq > cbData) + { + LogRel(("VBOXGUEST_IOCTL_VMMREQUEST: invalid size %#x, expected >= %#x (hdr); type=%#x!!\n", + cbData, cbReq, enmType)); + return VERR_INVALID_PARAMETER; + } + rc = VbglGRVerify(pReqHdr, cbData); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: invalid header: size %#x, expected >= %#x (hdr); type=%#x; rc=%Rrc!!\n", + cbData, cbReq, enmType, rc)); + return rc; + } + + rc = vgdrvCheckIfVmmReqIsAllowed(pDevExt, pSession, enmType, pReqHdr); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: Operation not allowed! type=%#x rc=%Rrc\n", enmType, rc)); + return rc; + } + + /* + * Make a copy of the request in the physical memory heap so + * the VBoxGuestLibrary can more easily deal with the request. + * (This is really a waste of time since the OS or the OS specific + * code has already buffered or locked the input/output buffer, but + * it does makes things a bit simpler wrt to phys address.) + */ + rc = VbglGRAlloc(&pReqCopy, cbReq, enmType); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: failed to allocate %u (%#x) bytes to cache the request. rc=%Rrc!!\n", + cbReq, cbReq, rc)); + return rc; + } + memcpy(pReqCopy, pReqHdr, cbReq); + + if (enmType == VMMDevReq_GetMouseStatus) /* clear poll condition. */ + pSession->u32MousePosChangedSeq = ASMAtomicUoReadU32(&pDevExt->u32MousePosChangedSeq); + + rc = VbglGRPerform(pReqCopy); + if ( RT_SUCCESS(rc) + && RT_SUCCESS(pReqCopy->rc)) + { + Assert(rc != VINF_HGCM_ASYNC_EXECUTE); + Assert(pReqCopy->rc != VINF_HGCM_ASYNC_EXECUTE); + + memcpy(pReqHdr, pReqCopy, cbReq); + if (pcbDataReturned) + *pcbDataReturned = cbReq; + } + else if (RT_FAILURE(rc)) + Log(("VBOXGUEST_IOCTL_VMMREQUEST: VbglGRPerform - rc=%Rrc!\n", rc)); + else + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: request execution failed; VMMDev rc=%Rrc!\n", pReqCopy->rc)); + rc = pReqCopy->rc; + } + + VbglGRFree(pReqCopy); + return rc; +} + + +#ifdef VBOX_WITH_HGCM + +AssertCompile(RT_INDEFINITE_WAIT == (uint32_t)RT_INDEFINITE_WAIT); /* assumed by code below */ + +/** Worker for vgdrvHgcmAsyncWaitCallback*. */ +static int vgdrvHgcmAsyncWaitCallbackWorker(VMMDevHGCMRequestHeader volatile *pHdr, PVBOXGUESTDEVEXT pDevExt, + bool fInterruptible, uint32_t cMillies) +{ + int rc; + + /* + * Check to see if the condition was met by the time we got here. + * + * We create a simple poll loop here for dealing with out-of-memory + * conditions since the caller isn't necessarily able to deal with + * us returning too early. + */ + PVBOXGUESTWAIT pWait; + for (;;) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + if ((pHdr->fu32Flags & VBOX_HGCM_REQ_DONE) != 0) + { + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; + } + RTSpinlockRelease(pDevExt->EventSpinlock); + + pWait = vgdrvWaitAlloc(pDevExt, NULL); + if (pWait) + break; + if (fInterruptible) + return VERR_INTERRUPTED; + RTThreadSleep(1); + } + pWait->fReqEvents = VMMDEV_EVENT_HGCM; + pWait->pHGCMReq = pHdr; + + /* + * Re-enter the spinlock and re-check for the condition. + * If the condition is met, return. + * Otherwise link us into the HGCM wait list and go to sleep. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListAppend(&pDevExt->HGCMWaitList, &pWait->ListNode); + if ((pHdr->fu32Flags & VBOX_HGCM_REQ_DONE) != 0) + { + vgdrvWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; + } + RTSpinlockRelease(pDevExt->EventSpinlock); + + if (fInterruptible) + rc = RTSemEventMultiWaitNoResume(pWait->Event, cMillies); + else + rc = RTSemEventMultiWait(pWait->Event, cMillies); + if (rc == VERR_SEM_DESTROYED) + return rc; + + /* + * Unlink, free and return. + */ + if ( RT_FAILURE(rc) + && rc != VERR_TIMEOUT + && ( !fInterruptible + || rc != VERR_INTERRUPTED)) + LogRel(("vgdrvHgcmAsyncWaitCallback: wait failed! %Rrc\n", rc)); + + vgdrvWaitFreeUnlocked(pDevExt, pWait); + return rc; +} + + +/** + * This is a callback for dealing with async waits. + * + * It operates in a manner similar to vgdrvIoCtl_WaitEvent. + */ +static DECLCALLBACK(int) vgdrvHgcmAsyncWaitCallback(VMMDevHGCMRequestHeader *pHdr, void *pvUser, uint32_t u32User) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + LogFlow(("vgdrvHgcmAsyncWaitCallback: requestType=%d\n", pHdr->header.requestType)); + return vgdrvHgcmAsyncWaitCallbackWorker((VMMDevHGCMRequestHeader volatile *)pHdr, pDevExt, + false /* fInterruptible */, u32User /* cMillies */); +} + + +/** + * This is a callback for dealing with async waits with a timeout. + * + * It operates in a manner similar to vgdrvIoCtl_WaitEvent. + */ +static DECLCALLBACK(int) vgdrvHgcmAsyncWaitCallbackInterruptible(VMMDevHGCMRequestHeader *pHdr, void *pvUser, uint32_t u32User) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + LogFlow(("vgdrvHgcmAsyncWaitCallbackInterruptible: requestType=%d\n", pHdr->header.requestType)); + return vgdrvHgcmAsyncWaitCallbackWorker((VMMDevHGCMRequestHeader volatile *)pHdr, pDevExt, + true /* fInterruptible */, u32User /* cMillies */); +} + + +static int vgdrvIoCtl_HGCMConnect(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestHGCMConnectInfo *pInfo, size_t *pcbDataReturned) +{ + int rc; + + /* + * The VbglHGCMConnect call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. The function is not able + * to deal with cancelled requests. + */ + Log(("VBOXGUEST_IOCTL_HGCM_CONNECT: %.128s\n", + pInfo->Loc.type == VMMDevHGCMLoc_LocalHost || pInfo->Loc.type == VMMDevHGCMLoc_LocalHost_Existing + ? pInfo->Loc.u.host.achName : "")); + + rc = VbglR0HGCMInternalConnect(pInfo, vgdrvHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + if (RT_SUCCESS(rc)) + { + Log(("VBOXGUEST_IOCTL_HGCM_CONNECT: u32Client=%RX32 result=%Rrc (rc=%Rrc)\n", + pInfo->u32ClientID, pInfo->result, rc)); + if (RT_SUCCESS(pInfo->result)) + { + /* + * Append the client id to the client id table. + * If the table has somehow become filled up, we'll disconnect the session. + */ + unsigned i; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (!pSession->aHGCMClientIds[i]) + { + pSession->aHGCMClientIds[i] = pInfo->u32ClientID; + break; + } + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (i >= RT_ELEMENTS(pSession->aHGCMClientIds)) + { + VBoxGuestHGCMDisconnectInfo Info; + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CONNECT: too many HGCMConnect calls for one session!\n")); + Info.result = 0; + Info.u32ClientID = pInfo->u32ClientID; + VbglR0HGCMInternalDisconnect(&Info, vgdrvHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + return VERR_TOO_MANY_OPEN_FILES; + } + } + else + rc = pInfo->result; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + } + return rc; +} + + +static int vgdrvIoCtl_HGCMDisconnect(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestHGCMDisconnectInfo *pInfo, size_t *pcbDataReturned) +{ + /* + * Validate the client id and invalidate its entry while we're in the call. + */ + int rc; + const uint32_t u32ClientId = pInfo->u32ClientID; + unsigned i; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i] == u32ClientId) + { + pSession->aHGCMClientIds[i] = UINT32_MAX; + break; + } + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (i >= RT_ELEMENTS(pSession->aHGCMClientIds)) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_DISCONNECT: u32Client=%RX32\n", u32ClientId)); + return VERR_INVALID_HANDLE; + } + + /* + * The VbglHGCMConnect call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. The function is not able + * to deal with cancelled requests. + */ + Log(("VBOXGUEST_IOCTL_HGCM_DISCONNECT: u32Client=%RX32\n", pInfo->u32ClientID)); + rc = VbglR0HGCMInternalDisconnect(pInfo, vgdrvHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + if (RT_SUCCESS(rc)) + { + LogFlow(("VBOXGUEST_IOCTL_HGCM_DISCONNECT: result=%Rrc\n", pInfo->result)); + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + } + + /* Update the client id array according to the result. */ + RTSpinlockAcquire(pDevExt->SessionSpinlock); + if (pSession->aHGCMClientIds[i] == UINT32_MAX) + pSession->aHGCMClientIds[i] = RT_SUCCESS(rc) && RT_SUCCESS(pInfo->result) ? 0 : u32ClientId; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + return rc; +} + + +static int vgdrvIoCtl_HGCMCall(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestHGCMCallInfo *pInfo, + uint32_t cMillies, bool fInterruptible, bool f32bit, bool fUserData, + size_t cbExtra, size_t cbData, size_t *pcbDataReturned) +{ + const uint32_t u32ClientId = pInfo->u32ClientID; + uint32_t fFlags; + size_t cbActual; + unsigned i; + int rc; + + /* + * Some more validations. + */ + if (pInfo->cParms > 4096) /* (Just make sure it doesn't overflow the next check.) */ + { + LogRel(("VBOXGUEST_IOCTL_HGCM_CALL: cParm=%RX32 is not sane\n", pInfo->cParms)); + return VERR_INVALID_PARAMETER; + } + + cbActual = cbExtra + sizeof(*pInfo); +#ifdef RT_ARCH_AMD64 + if (f32bit) + cbActual += pInfo->cParms * sizeof(HGCMFunctionParameter32); + else +#endif + cbActual += pInfo->cParms * sizeof(HGCMFunctionParameter); + if (cbData < cbActual) + { + LogRel(("VBOXGUEST_IOCTL_HGCM_CALL: cbData=%#zx (%zu) required size is %#zx (%zu)\n", + cbData, cbData, cbActual, cbActual)); + return VERR_INVALID_PARAMETER; + } + + /* + * Validate the client id. + */ + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i] == u32ClientId) + break; + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (RT_UNLIKELY(i >= RT_ELEMENTS(pSession->aHGCMClientIds))) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CALL: Invalid handle. u32Client=%RX32\n", u32ClientId)); + return VERR_INVALID_HANDLE; + } + + /* + * The VbglHGCMCall call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. This function can + * deal with cancelled requests, so we let user more requests + * be interruptible (should add a flag for this later I guess). + */ + LogFlow(("VBOXGUEST_IOCTL_HGCM_CALL: u32Client=%RX32\n", pInfo->u32ClientID)); + fFlags = !fUserData && pSession->R0Process == NIL_RTR0PROCESS ? VBGLR0_HGCMCALL_F_KERNEL : VBGLR0_HGCMCALL_F_USER; + uint32_t cbInfo = (uint32_t)(cbData - cbExtra); +#ifdef RT_ARCH_AMD64 + if (f32bit) + { + if (fInterruptible) + rc = VbglR0HGCMInternalCall32(pInfo, cbInfo, fFlags, vgdrvHgcmAsyncWaitCallbackInterruptible, pDevExt, cMillies); + else + rc = VbglR0HGCMInternalCall32(pInfo, cbInfo, fFlags, vgdrvHgcmAsyncWaitCallback, pDevExt, cMillies); + } + else +#endif + { + if (fInterruptible) + rc = VbglR0HGCMInternalCall(pInfo, cbInfo, fFlags, vgdrvHgcmAsyncWaitCallbackInterruptible, pDevExt, cMillies); + else + rc = VbglR0HGCMInternalCall(pInfo, cbInfo, fFlags, vgdrvHgcmAsyncWaitCallback, pDevExt, cMillies); + } + if (RT_SUCCESS(rc)) + { + LogFlow(("VBOXGUEST_IOCTL_HGCM_CALL: result=%Rrc\n", pInfo->result)); + if (pcbDataReturned) + *pcbDataReturned = cbActual; + } + else + { + if ( rc != VERR_INTERRUPTED + && rc != VERR_TIMEOUT) + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CALL: %s Failed. rc=%Rrc.\n", f32bit ? "32" : "64", rc)); + else + Log(("VBOXGUEST_IOCTL_HGCM_CALL: %s Failed. rc=%Rrc.\n", f32bit ? "32" : "64", rc)); + } + return rc; +} + +#endif /* VBOX_WITH_HGCM */ + +/** + * Handle VBOXGUEST_IOCTL_CHECK_BALLOON from R3. + * + * Ask the host for the size of the balloon and try to set it accordingly. If + * this approach fails because it's not supported, return with fHandleInR3 set + * and let the user land supply memory we can lock via the other ioctl. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The output buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can + * be NULL. + */ +static int vgdrvIoCtl_CheckMemoryBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestCheckBalloonInfo *pInfo, size_t *pcbDataReturned) +{ + VMMDevGetMemBalloonChangeRequest *pReq; + int rc; + + LogFlow(("VBOXGUEST_IOCTL_CHECK_BALLOON:\n")); + rc = RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + AssertRCReturn(rc, rc); + + /* + * The first user trying to query/change the balloon becomes the + * owner and owns it until the session is closed (vgdrvCloseMemBalloon). + */ + if ( pDevExt->MemBalloon.pOwner != pSession + && pDevExt->MemBalloon.pOwner == NULL) + pDevExt->MemBalloon.pOwner = pSession; + + if (pDevExt->MemBalloon.pOwner == pSession) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevGetMemBalloonChangeRequest), VMMDevReq_GetMemBalloonChangeRequest); + if (RT_SUCCESS(rc)) + { + /* + * This is a response to that event. Setting this bit means that + * we request the value from the host and change the guest memory + * balloon according to this value. + */ + pReq->eventAck = VMMDEV_EVENT_BALLOON_CHANGE_REQUEST; + rc = VbglGRPerform(&pReq->header); + if (RT_SUCCESS(rc)) + { + Assert(pDevExt->MemBalloon.cMaxChunks == pReq->cPhysMemChunks || pDevExt->MemBalloon.cMaxChunks == 0); + pDevExt->MemBalloon.cMaxChunks = pReq->cPhysMemChunks; + + pInfo->cBalloonChunks = pReq->cBalloonChunks; + pInfo->fHandleInR3 = false; + + rc = vgdrvSetBalloonSizeKernel(pDevExt, pReq->cBalloonChunks, &pInfo->fHandleInR3); + /* Ignore various out of memory failures. */ + if ( rc == VERR_NO_MEMORY + || rc == VERR_NO_PHYS_MEMORY + || rc == VERR_NO_CONT_MEMORY) + rc = VINF_SUCCESS; + + if (pcbDataReturned) + *pcbDataReturned = sizeof(VBoxGuestCheckBalloonInfo); + } + else + LogRel(("VBOXGUEST_IOCTL_CHECK_BALLOON: VbglGRPerform failed. rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + } + else + rc = VERR_PERMISSION_DENIED; + + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); + LogFlow(("VBOXGUEST_IOCTL_CHECK_BALLOON returns %Rrc\n", rc)); + return rc; +} + + +/** + * Handle a request for changing the memory balloon. + * + * @returns VBox status code. + * + * @param pDevExt The device extention. + * @param pSession The session. + * @param pInfo The change request structure (input). + * @param pcbDataReturned Where to store the amount of returned data. Can + * be NULL. + */ +static int vgdrvIoCtl_ChangeMemoryBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestChangeBalloonInfo *pInfo, size_t *pcbDataReturned) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_CHANGE_BALLOON: fInflate=%RTbool u64ChunkAddr=%#RX64\n", pInfo->fInflate, pInfo->u64ChunkAddr)); + + rc = RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + AssertRCReturn(rc, rc); + + if (!pDevExt->MemBalloon.fUseKernelAPI) + { + /* + * The first user trying to query/change the balloon becomes the + * owner and owns it until the session is closed (vgdrvCloseMemBalloon). + */ + if ( pDevExt->MemBalloon.pOwner != pSession + && pDevExt->MemBalloon.pOwner == NULL) + pDevExt->MemBalloon.pOwner = pSession; + + if (pDevExt->MemBalloon.pOwner == pSession) + { + rc = vgdrvSetBalloonSizeFromUser(pDevExt, pSession, pInfo->u64ChunkAddr, !!pInfo->fInflate); + if (pcbDataReturned) + *pcbDataReturned = 0; + } + else + rc = VERR_PERMISSION_DENIED; + } + else + rc = VERR_PERMISSION_DENIED; + + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); + return rc; +} + + +/** + * Handle a request for writing a core dump of the guest on the host. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pInfo The output buffer. + */ +static int vgdrvIoCtl_WriteCoreDump(PVBOXGUESTDEVEXT pDevExt, VBoxGuestWriteCoreDump *pInfo) +{ + VMMDevReqWriteCoreDump *pReq = NULL; + int rc; + LogFlow(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP\n")); + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_WriteCoreDump); + if (RT_SUCCESS(rc)) + { + pReq->fFlags = pInfo->fFlags; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + Log(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP: VbglGRPerform failed, rc=%Rrc!\n", rc)); + + VbglGRFree(&pReq->header); + } + else + Log(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP: failed to allocate %u (%#x) bytes to cache the request. rc=%Rrc!!\n", + sizeof(*pReq), sizeof(*pReq), rc)); + return rc; +} + + +/** + * Guest backdoor logging. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pch The log message (need not be NULL terminated). + * @param cbData Size of the buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can be NULL. + * @param fUserSession Copy of VBOXGUESTSESSION::fUserSession for the + * call. True normal user, false root user. + */ +static int vgdrvIoCtl_Log(PVBOXGUESTDEVEXT pDevExt, const char *pch, size_t cbData, size_t *pcbDataReturned, bool fUserSession) +{ + if (pDevExt->fLoggingEnabled) + RTLogBackdoorPrintf("%.*s", cbData, pch); + else if (!fUserSession) + LogRel(("%.*s", cbData, pch)); + else + Log(("%.*s", cbData, pch)); + if (pcbDataReturned) + *pcbDataReturned = 0; + return VINF_SUCCESS; +} + + +/** @name Guest Capabilities, Mouse Status and Event Filter + * @{ + */ + +/** + * Clears a bit usage tracker (init time). + * + * @param pTracker The tracker to clear. + */ +static void vgdrvBitUsageTrackerClear(PVBOXGUESTBITUSAGETRACER pTracker) +{ + uint32_t iBit; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + for (iBit = 0; iBit < 32; iBit++) + pTracker->acPerBitUsage[iBit] = 0; + pTracker->fMask = 0; +} + + +#ifdef VBOX_STRICT +/** + * Checks that pTracker->fMask is correct and that the usage values are within + * the valid range. + * + * @param pTracker The tracker. + * @param cMax Max valid usage value. + * @param pszWhat Identifies the tracker in assertions. + */ +static void vgdrvBitUsageTrackerCheckMask(PCVBOXGUESTBITUSAGETRACER pTracker, uint32_t cMax, const char *pszWhat) +{ + uint32_t fMask = 0; + uint32_t iBit; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + for (iBit = 0; iBit < 32; iBit++) + if (pTracker->acPerBitUsage[iBit]) + { + fMask |= RT_BIT_32(iBit); + AssertMsg(pTracker->acPerBitUsage[iBit] <= cMax, + ("%s: acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + } + + AssertMsg(fMask == pTracker->fMask, ("%s: %#x vs %#x\n", pszWhat, fMask, pTracker->fMask)); +} +#endif + + +/** + * Applies a change to the bit usage tracker. + * + * + * @returns true if the mask changed, false if not. + * @param pTracker The bit usage tracker. + * @param fChanged The bits to change. + * @param fPrevious The previous value of the bits. + * @param cMax The max valid usage value for assertions. + * @param pszWhat Identifies the tracker in assertions. + */ +static bool vgdrvBitUsageTrackerChange(PVBOXGUESTBITUSAGETRACER pTracker, uint32_t fChanged, uint32_t fPrevious, + uint32_t cMax, const char *pszWhat) +{ + bool fGlobalChange = false; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + while (fChanged) + { + uint32_t const iBit = ASMBitFirstSetU32(fChanged) - 1; + uint32_t const fBitMask = RT_BIT_32(iBit); + Assert(iBit < 32); Assert(fBitMask & fChanged); + + if (fBitMask & fPrevious) + { + pTracker->acPerBitUsage[iBit] -= 1; + AssertMsg(pTracker->acPerBitUsage[iBit] <= cMax, + ("%s: acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + if (pTracker->acPerBitUsage[iBit] == 0) + { + fGlobalChange = true; + pTracker->fMask &= ~fBitMask; + } + } + else + { + pTracker->acPerBitUsage[iBit] += 1; + AssertMsg(pTracker->acPerBitUsage[iBit] > 0 && pTracker->acPerBitUsage[iBit] <= cMax, + ("pTracker->acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + if (pTracker->acPerBitUsage[iBit] == 1) + { + fGlobalChange = true; + pTracker->fMask |= fBitMask; + } + } + + fChanged &= ~fBitMask; + } + +#ifdef VBOX_STRICT + vgdrvBitUsageTrackerCheckMask(pTracker, cMax, pszWhat); +#endif + NOREF(pszWhat); NOREF(cMax); + return fGlobalChange; +} + + +/** + * Init and termination worker for resetting the (host) event filter on the host + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param fFixedEvents Fixed events (init time). + */ +static int vgdrvResetEventFilterOnHost(PVBOXGUESTDEVEXT pDevExt, uint32_t fFixedEvents) +{ + VMMDevCtlGuestFilterMask *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_CtlGuestFilterMask); + if (RT_SUCCESS(rc)) + { + pReq->u32NotMask = UINT32_MAX & ~fFixedEvents; + pReq->u32OrMask = fFixedEvents; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Changes the event filter mask for the given session. + * + * This is called in response to VBOXGUEST_IOCTL_CTL_FILTER_MASK as well as to + * do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The events to add. + * @param fNotMask The events to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vgdrvSetSessionEventFilter(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + VMMDevCtlGuestFilterMask *pReq; + uint32_t fChanged; + uint32_t fPrevious; + int rc; + + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_CtlGuestFilterMask); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vgdrvSetSessionFilterMask: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + + /* + * Apply the changes to the session mask. + */ + fPrevious = pSession->fEventFilter; + pSession->fEventFilter |= fOrMask; + pSession->fEventFilter &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fEventFilter; + if (fChanged) + { + bool fGlobalChange = vgdrvBitUsageTrackerChange(&pDevExt->EventFilterTracker, fChanged, fPrevious, + pDevExt->cSessions, "EventFilterTracker"); + + /* + * If there are global changes, update the event filter on the host. + */ + if (fGlobalChange || pDevExt->fEventFilterHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + pReq->u32OrMask = pDevExt->fFixedEvents | pDevExt->EventFilterTracker.fMask; + if (pReq->u32OrMask == pDevExt->fEventFilterHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fEventFilterHost = pReq->u32OrMask; + pReq->u32NotMask = ~pReq->u32OrMask; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + /* + * Failed, roll back (unless it's session termination time). + */ + pDevExt->fEventFilterHost = UINT32_MAX; + if (!fSessionTermination) + { + vgdrvBitUsageTrackerChange(&pDevExt->EventFilterTracker, fChanged, pSession->fEventFilter, + pDevExt->cSessions, "EventFilterTracker"); + pSession->fEventFilter = fPrevious; + } + } + } + } + else + rc = VINF_SUCCESS; + } + } + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Handle VBOXGUEST_IOCTL_CTL_FILTER_MASK. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The request. + */ +static int vgdrvIoCtl_CtlFilterMask(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestFilterMaskInfo *pInfo) +{ + LogFlow(("VBOXGUEST_IOCTL_CTL_FILTER_MASK: or=%#x not=%#x\n", pInfo->u32OrMask, pInfo->u32NotMask)); + + if ((pInfo->u32OrMask | pInfo->u32NotMask) & ~VMMDEV_EVENT_VALID_EVENT_MASK) + { + Log(("VBOXGUEST_IOCTL_CTL_FILTER_MASK: or=%#x not=%#x: Invalid masks!\n", pInfo->u32OrMask, pInfo->u32NotMask)); + return VERR_INVALID_PARAMETER; + } + + return vgdrvSetSessionEventFilter(pDevExt, pSession, pInfo->u32OrMask, pInfo->u32NotMask, false /*fSessionTermination*/); +} + + +/** + * Init and termination worker for set mouse feature status to zero on the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + */ +static int vgdrvResetMouseStatusOnHost(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevReqMouseStatus *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetMouseStatus); + if (RT_SUCCESS(rc)) + { + pReq->mouseFeatures = 0; + pReq->pointerXPos = 0; + pReq->pointerYPos = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Changes the mouse status mask for the given session. + * + * This is called in response to VBOXGUEST_IOCTL_SET_MOUSE_STATUS as well as to + * do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The status flags to add. + * @param fNotMask The status flags to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vgdrvSetSessionMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + VMMDevReqMouseStatus *pReq; + uint32_t fChanged; + uint32_t fPrevious; + int rc; + + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetMouseStatus); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vgdrvSetSessionMouseStatus: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + + /* + * Apply the changes to the session mask. + */ + fPrevious = pSession->fMouseStatus; + pSession->fMouseStatus |= fOrMask; + pSession->fMouseStatus &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fMouseStatus; + if (fChanged) + { + bool fGlobalChange = vgdrvBitUsageTrackerChange(&pDevExt->MouseStatusTracker, fChanged, fPrevious, + pDevExt->cSessions, "MouseStatusTracker"); + + /* + * If there are global changes, update the event filter on the host. + */ + if (fGlobalChange || pDevExt->fMouseStatusHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + pReq->mouseFeatures = pDevExt->MouseStatusTracker.fMask; + if (pReq->mouseFeatures == pDevExt->fMouseStatusHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fMouseStatusHost = pReq->mouseFeatures; + pReq->pointerXPos = 0; + pReq->pointerYPos = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + /* + * Failed, roll back (unless it's session termination time). + */ + pDevExt->fMouseStatusHost = UINT32_MAX; + if (!fSessionTermination) + { + vgdrvBitUsageTrackerChange(&pDevExt->MouseStatusTracker, fChanged, pSession->fMouseStatus, + pDevExt->cSessions, "MouseStatusTracker"); + pSession->fMouseStatus = fPrevious; + } + } + } + } + else + rc = VINF_SUCCESS; + } + } + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Sets the mouse status features for this session and updates them globally. + * + * @returns VBox status code. + * + * @param pDevExt The device extention. + * @param pSession The session. + * @param fFeatures New bitmap of enabled features. + */ +static int vgdrvIoCtl_SetMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint32_t fFeatures) +{ + LogFlow(("VBOXGUEST_IOCTL_SET_MOUSE_STATUS: features=%#x\n", fFeatures)); + + if (fFeatures & ~VMMDEV_MOUSE_GUEST_MASK) + return VERR_INVALID_PARAMETER; + + return vgdrvSetSessionMouseStatus(pDevExt, pSession, fFeatures, ~fFeatures, false /*fSessionTermination*/); +} + + +/** + * Return the mask of VMM device events that this session is allowed to see (wrt + * to "acquire" mode guest capabilities). + * + * The events associated with guest capabilities in "acquire" mode will be + * restricted to sessions which has acquired the respective capabilities. + * If someone else tries to wait for acquired events, they won't be woken up + * when the event becomes pending. Should some other thread in the session + * acquire the capability while the corresponding event is pending, the waiting + * thread will woken up. + * + * @returns Mask of events valid for the given session. + * @param pDevExt The device extension. + * @param pSession The session. + * + * @remarks Needs only be called when dispatching events in the + * VBOXGUEST_ACQUIRE_STYLE_EVENTS mask. + */ +static uint32_t vgdrvGetAllowedEventMaskForSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + uint32_t fAcquireModeGuestCaps; + uint32_t fAcquiredGuestCaps; + uint32_t fAllowedEvents; + + /* + * Note! Reads pSession->fAcquiredGuestCaps and pDevExt->fAcquireModeGuestCaps + * WITHOUT holding VBOXGUESTDEVEXT::SessionSpinlock. + */ + fAcquireModeGuestCaps = ASMAtomicUoReadU32(&pDevExt->fAcquireModeGuestCaps); + if (fAcquireModeGuestCaps == 0) + return VMMDEV_EVENT_VALID_EVENT_MASK; + fAcquiredGuestCaps = ASMAtomicUoReadU32(&pSession->fAcquiredGuestCaps); + + /* + * Calculate which events to allow according to the cap config and caps + * acquired by the session. + */ + fAllowedEvents = VMMDEV_EVENT_VALID_EVENT_MASK; + if ( !(fAcquiredGuestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS) + && (fAcquireModeGuestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS)) + fAllowedEvents &= ~VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST; + + if ( !(fAcquiredGuestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS) + && (fAcquireModeGuestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS)) + fAllowedEvents &= ~VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; + + return fAllowedEvents; +} + + +/** + * Init and termination worker for set guest capabilities to zero on the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + */ +static int vgdrvResetCapabilitiesOnHost(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevReqGuestCapabilities2 *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { + pReq->u32NotMask = UINT32_MAX; + pReq->u32OrMask = 0; + rc = VbglGRPerform(&pReq->header); + + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Sets the guest capabilities to the host while holding the lock. + * + * This will ASSUME that we're the ones in charge of the mask, so + * we'll simply clear all bits we don't set. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pReq The request. + */ +static int vgdrvUpdateCapabilitiesOnHostWithReqAndLock(PVBOXGUESTDEVEXT pDevExt, VMMDevReqGuestCapabilities2 *pReq) +{ + int rc; + + pReq->u32OrMask = pDevExt->fAcquiredGuestCaps | pDevExt->SetGuestCapsTracker.fMask; + if (pReq->u32OrMask == pDevExt->fGuestCapsHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fGuestCapsHost = pReq->u32OrMask; + pReq->u32NotMask = ~pReq->u32OrMask; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + pDevExt->fGuestCapsHost = UINT32_MAX; + } + + return rc; +} + + +/** + * Switch a set of capabilities into "acquire" mode and (maybe) acquire them for + * the given session. + * + * This is called in response to VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE as well as + * to do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The capabilities to add . + * @param fNotMask The capabilities to remove. Ignored in + * VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE. + * @param enmFlags Confusing operation modifier. + * VBOXGUESTCAPSACQUIRE_FLAGS_NONE means to both + * configure and acquire/release the capabilities. + * VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE + * means only configure capabilities in the + * @a fOrMask capabilities for "acquire" mode. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes both the session and event spinlocks. + */ +static int vgdrvAcquireSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, VBOXGUESTCAPSACQUIRE_FLAGS enmFlags, + bool fSessionTermination) +{ + uint32_t fCurrentOwnedCaps; + uint32_t fSessionRemovedCaps; + uint32_t fSessionAddedCaps; + uint32_t fOtherConflictingCaps; + VMMDevReqGuestCapabilities2 *pReq = NULL; + int rc; + + + /* + * Validate and adjust input. + */ + if (fOrMask & ~( VMMDEV_GUEST_SUPPORTS_SEAMLESS + | VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING + | VMMDEV_GUEST_SUPPORTS_GRAPHICS ) ) + { + LogRel(("vgdrvAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x -- invalid fOrMask\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_PARAMETER; + } + + if ( enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE + && enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_NONE) + { + LogRel(("vgdrvAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: invalid enmFlags %d\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_PARAMETER; + } + Assert(!fOrMask || !fSessionTermination); + + /* The fNotMask no need to have all values valid, invalid ones will simply be ignored. */ + fNotMask &= ~fOrMask; + + /* + * Preallocate a update request if we're about to do more than just configure + * the capability mode. + */ + if (enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { /* do nothing */ } + else if (!fSessionTermination) + { + LogRel(("vgdrvAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: VbglGRAlloc failure: %Rrc\n", + pSession, fOrMask, fNotMask, enmFlags, rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + } + + /* + * Try switch the capabilities in the OR mask into "acquire" mode. + * + * Note! We currently ignore anyone which may already have "set" the capabilities + * in fOrMask. Perhaps not the best way to handle it, but it's simple... + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + + if (!(pDevExt->fSetModeGuestCaps & fOrMask)) + pDevExt->fAcquireModeGuestCaps |= fOrMask; + else + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + if (pReq) + VbglGRFree(&pReq->header); + AssertMsgFailed(("Trying to change caps mode: %#x\n", fOrMask)); + LogRel(("vgdrvAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: calling caps acquire for set caps\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_STATE; + } + + /* + * If we only wanted to switch the capabilities into "acquire" mode, we're done now. + */ + if (enmFlags & VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE) + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + Assert(!pReq); + Log(("vgdrvAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: configured acquire caps: 0x%x\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VINF_SUCCESS; + } + Assert(pReq || fSessionTermination); + + /* + * Caller wants to acquire/release the capabilities too. + * + * Note! The mode change of the capabilities above won't be reverted on + * failure, this is intentional. + */ + fCurrentOwnedCaps = pSession->fAcquiredGuestCaps; + fSessionRemovedCaps = fCurrentOwnedCaps & fNotMask; + fSessionAddedCaps = fOrMask & ~fCurrentOwnedCaps; + fOtherConflictingCaps = pDevExt->fAcquiredGuestCaps & ~fCurrentOwnedCaps; + fOtherConflictingCaps &= fSessionAddedCaps; + + if (!fOtherConflictingCaps) + { + if (fSessionAddedCaps) + { + pSession->fAcquiredGuestCaps |= fSessionAddedCaps; + pDevExt->fAcquiredGuestCaps |= fSessionAddedCaps; + } + + if (fSessionRemovedCaps) + { + pSession->fAcquiredGuestCaps &= ~fSessionRemovedCaps; + pDevExt->fAcquiredGuestCaps &= ~fSessionRemovedCaps; + } + + /* + * If something changes (which is very likely), tell the host. + */ + if (fSessionAddedCaps || fSessionRemovedCaps || pDevExt->fGuestCapsHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + rc = vgdrvUpdateCapabilitiesOnHostWithReqAndLock(pDevExt, pReq); + if (RT_FAILURE(rc) && !fSessionTermination) + { + /* Failed, roll back. */ + if (fSessionAddedCaps) + { + pSession->fAcquiredGuestCaps &= ~fSessionAddedCaps; + pDevExt->fAcquiredGuestCaps &= ~fSessionAddedCaps; + } + if (fSessionRemovedCaps) + { + pSession->fAcquiredGuestCaps |= fSessionRemovedCaps; + pDevExt->fAcquiredGuestCaps |= fSessionRemovedCaps; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + LogRel(("vgdrvAcquireSessionCapabilities: vgdrvUpdateCapabilitiesOnHostWithReqAndLock failed: rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + return rc; + } + } + } + } + else + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + Log(("vgdrvAcquireSessionCapabilities: Caps %#x were busy\n", fOtherConflictingCaps)); + VbglGRFree(&pReq->header); + return VERR_RESOURCE_BUSY; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + + /* + * If we added a capability, check if that means some other thread in our + * session should be unblocked because there are events pending. + * + * HACK ALERT! When the seamless support capability is added we generate a + * seamless change event so that the ring-3 client can sync with + * the seamless state. Although this introduces a spurious + * wakeups of the ring-3 client, it solves the problem of client + * state inconsistency in multiuser environment (on Windows). + */ + if (fSessionAddedCaps) + { + uint32_t fGenFakeEvents = 0; + if (fSessionAddedCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS) + fGenFakeEvents |= VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; + + RTSpinlockAcquire(pDevExt->EventSpinlock); + if (fGenFakeEvents || pDevExt->f32PendingEvents) + vgdrvDispatchEventsLocked(pDevExt, fGenFakeEvents); + RTSpinlockRelease(pDevExt->EventSpinlock); + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + VGDrvCommonWaitDoWakeUps(pDevExt); +#endif + } + + return VINF_SUCCESS; +} + + +/** + * Handle VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pAcquire The request. + */ +static int vgdrvIoCtl_GuestCapsAcquire(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestCapsAquire *pAcquire) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE: or=%#x not=%#x flags=%#x\n", + pAcquire->u32OrMask, pAcquire->u32NotMask, pAcquire->enmFlags)); + + rc = vgdrvAcquireSessionCapabilities(pDevExt, pSession, pAcquire->u32OrMask, pAcquire->u32NotMask, pAcquire->enmFlags, + false /*fSessionTermination*/); + if (RT_FAILURE(rc)) + LogRel(("VGDrvCommonIoCtl: GUEST_CAPS_ACQUIRE failed rc=%Rrc\n", rc)); + pAcquire->rc = rc; + return VINF_SUCCESS; +} + + +/** + * Sets the guest capabilities for a session. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The capabilities to add. + * @param fNotMask The capabilities to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vgdrvSetSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + VMMDevReqGuestCapabilities2 *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vgdrvSetSessionCapabilities: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + +#ifndef VBOXGUEST_DISREGARD_ACQUIRE_MODE_GUEST_CAPS + /* + * Capabilities in "acquire" mode cannot be set via this API. + * (Acquire mode is only used on windows at the time of writing.) + */ + if (!(fOrMask & pDevExt->fAcquireModeGuestCaps)) +#endif + { + /* + * Apply the changes to the session mask. + */ + uint32_t fChanged; + uint32_t fPrevious = pSession->fCapabilities; + pSession->fCapabilities |= fOrMask; + pSession->fCapabilities &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fCapabilities; + if (fChanged) + { + bool fGlobalChange = vgdrvBitUsageTrackerChange(&pDevExt->SetGuestCapsTracker, fChanged, fPrevious, + pDevExt->cSessions, "SetGuestCapsTracker"); + + /* + * If there are global changes, update the capabilities on the host. + */ + if (fGlobalChange || pDevExt->fGuestCapsHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + rc = vgdrvUpdateCapabilitiesOnHostWithReqAndLock(pDevExt, pReq); + + /* On failure, roll back (unless it's session termination time). */ + if (RT_FAILURE(rc) && !fSessionTermination) + { + vgdrvBitUsageTrackerChange(&pDevExt->SetGuestCapsTracker, fChanged, pSession->fCapabilities, + pDevExt->cSessions, "SetGuestCapsTracker"); + pSession->fCapabilities = fPrevious; + } + } + } + } + } +#ifndef VBOXGUEST_DISREGARD_ACQUIRE_MODE_GUEST_CAPS + else + rc = VERR_RESOURCE_BUSY; +#endif + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Handle VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The request. + */ +static int vgdrvIoCtl_SetCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestSetCapabilitiesInfo *pInfo) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES: or=%#x not=%#x\n", pInfo->u32OrMask, pInfo->u32NotMask)); + + if (!((pInfo->u32OrMask | pInfo->u32NotMask) & ~VMMDEV_GUEST_CAPABILITIES_MASK)) + rc = vgdrvSetSessionCapabilities(pDevExt, pSession, pInfo->u32OrMask, pInfo->u32NotMask, false /*fSessionTermination*/); + else + rc = VERR_INVALID_PARAMETER; + + return rc; +} + +/** @} */ + + +/** + * Common IOCtl for user to kernel and kernel to kernel communication. + * + * This function only does the basic validation and then invokes + * worker functions that takes care of each specific function. + * + * @returns VBox status code. + * + * @param iFunction The requested function. + * @param pDevExt The device extension. + * @param pSession The client session. + * @param pvData The input/output data buffer. Can be NULL depending on the function. + * @param cbData The max size of the data buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can be NULL. + */ +int VGDrvCommonIoCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + void *pvData, size_t cbData, size_t *pcbDataReturned) +{ + int rc; + LogFlow(("VGDrvCommonIoCtl: iFunction=%#x pDevExt=%p pSession=%p pvData=%p cbData=%zu\n", + iFunction, pDevExt, pSession, pvData, cbData)); + + /* + * Make sure the returned data size is set to zero. + */ + if (pcbDataReturned) + *pcbDataReturned = 0; + + /* + * Define some helper macros to simplify validation. + */ +#define CHECKRET_RING0(mnemonic) \ + do { \ + if (pSession->R0Process != NIL_RTR0PROCESS) \ + { \ + LogFunc((mnemonic ": Ring-0 only, caller is %RTproc/%p\n", \ + pSession->Process, (uintptr_t)pSession->R0Process)); \ + return VERR_PERMISSION_DENIED; \ + } \ + } while (0) +#define CHECKRET_MIN_SIZE(mnemonic, cbMin) \ + do { \ + if (cbData < (cbMin)) \ + { \ + LogFunc((mnemonic ": cbData=%#zx (%zu) min is %#zx (%zu)\n", \ + cbData, cbData, (size_t)(cbMin), (size_t)(cbMin))); \ + return VERR_BUFFER_OVERFLOW; \ + } \ + if ((cbMin) != 0 && !VALID_PTR(pvData)) \ + { \ + LogFunc((mnemonic ": Invalid pointer %p\n", pvData)); \ + return VERR_INVALID_POINTER; \ + } \ + } while (0) +#define CHECKRET_SIZE(mnemonic, cb) \ + do { \ + if (cbData != (cb)) \ + { \ + LogFunc((mnemonic ": cbData=%#zx (%zu) expected is %#zx (%zu)\n", \ + cbData, cbData, (size_t)(cb), (size_t)(cb))); \ + return VERR_BUFFER_OVERFLOW; \ + } \ + if ((cb) != 0 && !VALID_PTR(pvData)) \ + { \ + LogFunc((mnemonic ": Invalid pointer %p\n", pvData)); \ + return VERR_INVALID_POINTER; \ + } \ + } while (0) + + + /* + * Deal with variably sized requests first. + */ + rc = VINF_SUCCESS; + if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_VMMREQUEST(0))) + { + CHECKRET_MIN_SIZE("VMMREQUEST", sizeof(VMMDevRequestHeader)); + rc = vgdrvIoCtl_VMMRequest(pDevExt, pSession, (VMMDevRequestHeader *)pvData, cbData, pcbDataReturned); + } +#ifdef VBOX_WITH_HGCM + /* + * These ones are a bit tricky. + */ + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL(0))) + { + bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vgdrvIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, false /*f32bit*/, false /* fUserData */, + 0, cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED(0))) + { + VBoxGuestHGCMCallInfoTimed *pInfo = (VBoxGuestHGCMCallInfoTimed *)pvData; + CHECKRET_MIN_SIZE("HGCM_CALL_TIMED", sizeof(VBoxGuestHGCMCallInfoTimed)); + rc = vgdrvIoCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout, + !!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS, + false /*f32bit*/, false /* fUserData */, + RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(0))) + { + bool fInterruptible = true; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vgdrvIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, false /*f32bit*/, true /* fUserData */, + 0, cbData, pcbDataReturned); + } +# ifdef RT_ARCH_AMD64 + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_32(0))) + { + bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vgdrvIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, true /*f32bit*/, false /* fUserData */, + 0, cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED_32(0))) + { + CHECKRET_MIN_SIZE("HGCM_CALL_TIMED", sizeof(VBoxGuestHGCMCallInfoTimed)); + VBoxGuestHGCMCallInfoTimed *pInfo = (VBoxGuestHGCMCallInfoTimed *)pvData; + rc = vgdrvIoCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout, + !!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS, + true /*f32bit*/, false /* fUserData */, + RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned); + } +# endif +#endif /* VBOX_WITH_HGCM */ + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_LOG(0))) + { + CHECKRET_MIN_SIZE("LOG", 1); + rc = vgdrvIoCtl_Log(pDevExt, (char *)pvData, cbData, pcbDataReturned, pSession->fUserSession); + } + else + { + switch (iFunction) + { + case VBOXGUEST_IOCTL_GETVMMDEVPORT: + CHECKRET_RING0("GETVMMDEVPORT"); + CHECKRET_MIN_SIZE("GETVMMDEVPORT", sizeof(VBoxGuestPortInfo)); + rc = vgdrvIoCtl_GetVMMDevPort(pDevExt, (VBoxGuestPortInfo *)pvData, pcbDataReturned); + break; + +#ifndef RT_OS_WINDOWS /* Windows has its own implementation of this. */ + case VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK: + CHECKRET_RING0("SET_MOUSE_NOTIFY_CALLBACK"); + CHECKRET_SIZE("SET_MOUSE_NOTIFY_CALLBACK", sizeof(VBoxGuestMouseSetNotifyCallback)); + rc = vgdrvIoCtl_SetMouseNotifyCallback(pDevExt, (VBoxGuestMouseSetNotifyCallback *)pvData); + break; +#endif + + case VBOXGUEST_IOCTL_WAITEVENT: + CHECKRET_MIN_SIZE("WAITEVENT", sizeof(VBoxGuestWaitEventInfo)); + rc = vgdrvIoCtl_WaitEvent(pDevExt, pSession, (VBoxGuestWaitEventInfo *)pvData, + pcbDataReturned, pSession->R0Process != NIL_RTR0PROCESS); + break; + + case VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS: + CHECKRET_SIZE("CANCEL_ALL_WAITEVENTS", 0); + rc = vgdrvIoCtl_CancelAllWaitEvents(pDevExt, pSession); + break; + + case VBOXGUEST_IOCTL_CTL_FILTER_MASK: + CHECKRET_MIN_SIZE("CTL_FILTER_MASK", sizeof(VBoxGuestFilterMaskInfo)); + rc = vgdrvIoCtl_CtlFilterMask(pDevExt, pSession, (VBoxGuestFilterMaskInfo *)pvData); + break; + +#ifdef VBOX_WITH_HGCM + case VBOXGUEST_IOCTL_HGCM_CONNECT: +# ifdef RT_ARCH_AMD64 + case VBOXGUEST_IOCTL_HGCM_CONNECT_32: +# endif + CHECKRET_MIN_SIZE("HGCM_CONNECT", sizeof(VBoxGuestHGCMConnectInfo)); + rc = vgdrvIoCtl_HGCMConnect(pDevExt, pSession, (VBoxGuestHGCMConnectInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_HGCM_DISCONNECT: +# ifdef RT_ARCH_AMD64 + case VBOXGUEST_IOCTL_HGCM_DISCONNECT_32: +# endif + CHECKRET_MIN_SIZE("HGCM_DISCONNECT", sizeof(VBoxGuestHGCMDisconnectInfo)); + rc = vgdrvIoCtl_HGCMDisconnect(pDevExt, pSession, (VBoxGuestHGCMDisconnectInfo *)pvData, pcbDataReturned); + break; +#endif /* VBOX_WITH_HGCM */ + + case VBOXGUEST_IOCTL_CHECK_BALLOON: + CHECKRET_MIN_SIZE("CHECK_MEMORY_BALLOON", sizeof(VBoxGuestCheckBalloonInfo)); + rc = vgdrvIoCtl_CheckMemoryBalloon(pDevExt, pSession, (VBoxGuestCheckBalloonInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_CHANGE_BALLOON: + CHECKRET_MIN_SIZE("CHANGE_MEMORY_BALLOON", sizeof(VBoxGuestChangeBalloonInfo)); + rc = vgdrvIoCtl_ChangeMemoryBalloon(pDevExt, pSession, (VBoxGuestChangeBalloonInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_WRITE_CORE_DUMP: + CHECKRET_MIN_SIZE("WRITE_CORE_DUMP", sizeof(VBoxGuestWriteCoreDump)); + rc = vgdrvIoCtl_WriteCoreDump(pDevExt, (VBoxGuestWriteCoreDump *)pvData); + break; + + case VBOXGUEST_IOCTL_SET_MOUSE_STATUS: + CHECKRET_SIZE("SET_MOUSE_STATUS", sizeof(uint32_t)); + rc = vgdrvIoCtl_SetMouseStatus(pDevExt, pSession, *(uint32_t *)pvData); + break; + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER + case VBOXGUEST_IOCTL_DPC_LATENCY_CHECKER: + CHECKRET_SIZE("DPC_LATENCY_CHECKER", 0); + rc = VGDrvNtIOCtl_DpcLatencyChecker(); + break; +#endif + + case VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE: + CHECKRET_SIZE("GUEST_CAPS_ACQUIRE", sizeof(VBoxGuestCapsAquire)); + rc = vgdrvIoCtl_GuestCapsAcquire(pDevExt, pSession, (VBoxGuestCapsAquire *)pvData); + *pcbDataReturned = sizeof(VBoxGuestCapsAquire); + break; + + case VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES: + CHECKRET_MIN_SIZE("SET_GUEST_CAPABILITIES", sizeof(VBoxGuestSetCapabilitiesInfo)); + rc = vgdrvIoCtl_SetCapabilities(pDevExt, pSession, (VBoxGuestSetCapabilitiesInfo *)pvData); + break; + + default: + { + LogRel(("VGDrvCommonIoCtl: Unknown request iFunction=%#x stripped size=%#x\n", + iFunction, VBOXGUEST_IOCTL_STRIP_SIZE(iFunction))); + rc = VERR_NOT_SUPPORTED; + break; + } + } + } + + LogFlow(("VGDrvCommonIoCtl: returns %Rrc *pcbDataReturned=%zu\n", rc, pcbDataReturned ? *pcbDataReturned : 0)); + return rc; +} + + +/** + * Used by VGDrvCommonISR as well as the acquire guest capability code. + * + * @returns VINF_SUCCESS on success. On failure, ORed together + * RTSemEventMultiSignal errors (completes processing despite errors). + * @param pDevExt The VBoxGuest device extension. + * @param fEvents The events to dispatch. + */ +static int vgdrvDispatchEventsLocked(PVBOXGUESTDEVEXT pDevExt, uint32_t fEvents) +{ + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + int rc = VINF_SUCCESS; + + fEvents |= pDevExt->f32PendingEvents; + + RTListForEachSafe(&pDevExt->WaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + uint32_t fHandledEvents = pWait->fReqEvents & fEvents; + if ( fHandledEvents != 0 + && !pWait->fResEvents) + { + /* Does this one wait on any of the events we're dispatching? We do a quick + check first, then deal with VBOXGUEST_ACQUIRE_STYLE_EVENTS as applicable. */ + if (fHandledEvents & VBOXGUEST_ACQUIRE_STYLE_EVENTS) + fHandledEvents &= vgdrvGetAllowedEventMaskForSession(pDevExt, pWait->pSession); + if (fHandledEvents) + { + pWait->fResEvents = pWait->fReqEvents & fEvents & fHandledEvents; + fEvents &= ~pWait->fResEvents; + RTListNodeRemove(&pWait->ListNode); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +#else + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + rc |= RTSemEventMultiSignal(pWait->Event); +#endif + if (!fEvents) + break; + } + } + } + + ASMAtomicWriteU32(&pDevExt->f32PendingEvents, fEvents); + return rc; +} + + +/** + * Common interrupt service routine. + * + * This deals with events and with waking up thread waiting for those events. + * + * @returns true if it was our interrupt, false if it wasn't. + * @param pDevExt The VBoxGuest device extension. + */ +bool VGDrvCommonISR(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevEvents volatile *pReq = pDevExt->pIrqAckEvents; + bool fMousePositionChanged = false; + int rc = 0; + bool fOurIrq; + + /* + * Make sure we've initialized the device extension. + */ + if (RT_UNLIKELY(!pReq)) + return false; + + /* + * Enter the spinlock and check if it's our IRQ or not. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + fOurIrq = pDevExt->pVMMDevMemory->V.V1_04.fHaveEvents; + if (fOurIrq) + { + /* + * Acknowlegde events. + * We don't use VbglGRPerform here as it may take another spinlocks. + */ + pReq->header.rc = VERR_INTERNAL_ERROR; + pReq->events = 0; + ASMCompilerBarrier(); + ASMOutU32(pDevExt->IOPortBase + VMMDEV_PORT_OFF_REQUEST, (uint32_t)pDevExt->PhysIrqAckEvents); + ASMCompilerBarrier(); /* paranoia */ + if (RT_SUCCESS(pReq->header.rc)) + { + uint32_t fEvents = pReq->events; + + Log3(("VGDrvCommonISR: acknowledge events succeeded %#RX32\n", fEvents)); + + /* + * VMMDEV_EVENT_MOUSE_POSITION_CHANGED can only be polled for. + */ + if (fEvents & VMMDEV_EVENT_MOUSE_POSITION_CHANGED) + { + fMousePositionChanged = true; + fEvents &= ~VMMDEV_EVENT_MOUSE_POSITION_CHANGED; +#ifndef RT_OS_WINDOWS + if (pDevExt->MouseNotifyCallback.pfnNotify) + pDevExt->MouseNotifyCallback.pfnNotify(pDevExt->MouseNotifyCallback.pvUser); +#endif + } + +#ifdef VBOX_WITH_HGCM + /* + * The HGCM event/list is kind of different in that we evaluate all entries. + */ + if (fEvents & VMMDEV_EVENT_HGCM) + { + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + RTListForEachSafe(&pDevExt->HGCMWaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + if (pWait->pHGCMReq->fu32Flags & VBOX_HGCM_REQ_DONE) + { + pWait->fResEvents = VMMDEV_EVENT_HGCM; + RTListNodeRemove(&pWait->ListNode); +# ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +# else + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + rc |= RTSemEventMultiSignal(pWait->Event); +# endif + } + } + fEvents &= ~VMMDEV_EVENT_HGCM; + } +#endif + + /* + * Normal FIFO waiter evaluation. + */ + rc |= vgdrvDispatchEventsLocked(pDevExt, fEvents); + } + else /* something is serious wrong... */ + Log(("VGDrvCommonISR: acknowledge events failed rc=%Rrc (events=%#x)!!\n", + pReq->header.rc, pReq->events)); + } + else + Log3(("VGDrvCommonISR: not ours\n")); + + RTSpinlockRelease(pDevExt->EventSpinlock); + +#if defined(VBOXGUEST_USE_DEFERRED_WAKE_UP) && !defined(RT_OS_DARWIN) && !defined(RT_OS_WINDOWS) + /* + * Do wake-ups. + * Note. On Windows this isn't possible at this IRQL, so a DPC will take + * care of it. Same on darwin, doing it in the work loop callback. + */ + VGDrvCommonWaitDoWakeUps(pDevExt); +#endif + + /* + * Work the poll and async notification queues on OSes that implements that. + * (Do this outside the spinlock to prevent some recursive spinlocking.) + */ + if (fMousePositionChanged) + { + ASMAtomicIncU32(&pDevExt->u32MousePosChangedSeq); + VGDrvNativeISRMousePollEvent(pDevExt); + } + + Assert(rc == 0); + NOREF(rc); + return fOurIrq; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBoxGuestIDC-unix.c.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBoxGuestIDC-unix.c.h @@ -0,0 +1,147 @@ +/* $Rev: 103598 $ */ +/** @file + * VBoxGuest - Inter Driver Communication, unix implementation. + * + * This file is included by the platform specific source file. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/** @todo Use some header that we have in common with VBoxGuestLib.h... */ +/** @todo fix DECLVBGL usage. */ +RT_C_DECLS_BEGIN +DECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version); +DECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession); +DECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned); +RT_C_DECLS_END + + +/** + * Open a new IDC connection. + * + * @returns Opaque pointer to session object. + * @param pu32Version Where to store VMMDev version. + */ +DECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version) +{ + PVBOXGUESTSESSION pSession; + int rc; + LogFlow(("VBoxGuestIDCOpen: Version=%#x\n", pu32Version ? *pu32Version : 0)); + + AssertPtrReturn(pu32Version, NULL); + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (!g_LdiHandle) + { + ldi_ident_t DevIdent = ldi_ident_from_anon(); + rc = ldi_open_by_name(VBOXGUEST_DEVICE_NAME, FREAD, kcred, &g_LdiHandle, DevIdent); + ldi_ident_release(DevIdent); + if (rc) + { + LogRel(("VBoxGuestIDCOpen: ldi_open_by_name failed. rc=%d\n", rc)); + mutex_exit(&g_LdiMtx); + return NULL; + } + } + ++g_cLdiOpens; + mutex_exit(&g_LdiMtx); +#endif + + rc = VGDrvCommonCreateKernelSession(&g_DevExt, &pSession); + if (RT_SUCCESS(rc)) + { + *pu32Version = VMMDEV_VERSION; + return pSession; + } + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (g_cLdiOpens > 0) + --g_cLdiOpens; + if ( g_cLdiOpens == 0 + && g_LdiHandle) + { + ldi_close(g_LdiHandle, FREAD, kcred); + g_LdiHandle = NULL; + } + mutex_exit(&g_LdiMtx); +#endif + + LogRel(("VBoxGuestIDCOpen: VGDrvCommonCreateKernelSession failed. rc=%d\n", rc)); + return NULL; +} + + +/** + * Close an IDC connection. + * + * @returns VBox error code. + * @param pvSession Opaque pointer to the session object. + */ +DECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession; + LogFlow(("VBoxGuestIDCClose: pvSession=%p\n", pvSession)); + + AssertPtrReturn(pSession, VERR_INVALID_POINTER); + VGDrvCommonCloseSession(&g_DevExt, pSession); + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (g_cLdiOpens > 0) + --g_cLdiOpens; + if ( g_cLdiOpens == 0 + && g_LdiHandle) + { + ldi_close(g_LdiHandle, FREAD, kcred); + g_LdiHandle = NULL; + } + mutex_exit(&g_LdiMtx); +#endif + + return VINF_SUCCESS; +} + + +/** + * Perform an IDC call. + * + * @returns VBox error code. + * @param pvSession Opaque pointer to the session. + * @param iCmd Requested function. + * @param pvData IO data buffer. + * @param cbData Size of the data buffer. + * @param pcbDataReturned Where to store the amount of returned data. + */ +DECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession; + LogFlow(("VBoxGuestIDCCall: %pvSession=%p Cmd=%u pvData=%p cbData=%d\n", pvSession, iCmd, pvData, cbData)); + + AssertPtrReturn(pSession, VERR_INVALID_POINTER); + AssertMsgReturn(pSession->pDevExt == &g_DevExt, ("SC: %p != %p\n", pSession->pDevExt, &g_DevExt), VERR_INVALID_HANDLE); + + return VGDrvCommonIoCtl(iCmd, &g_DevExt, pSession, pvData, cbData, pcbDataReturned); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBoxGuestInternal.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBoxGuestInternal.h @@ -0,0 +1,351 @@ +/* $Id: VBoxGuestInternal.h $ */ +/** @file + * VBoxGuest - Guest Additions Driver, Internal Header. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestInternal_h +#define ___VBoxGuestInternal_h + +#include +#include +#include +#include +#include +#include +#include +#include + +/** @def VBOXGUEST_USE_DEFERRED_WAKE_UP + * Defer wake-up of waiting thread when defined. */ +#if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING) +# define VBOXGUEST_USE_DEFERRED_WAKE_UP +#endif + + +/** Pointer to the VBoxGuest per session data. */ +typedef struct VBOXGUESTSESSION *PVBOXGUESTSESSION; + +/** Pointer to a wait-for-event entry. */ +typedef struct VBOXGUESTWAIT *PVBOXGUESTWAIT; + +/** + * VBox guest wait for event entry. + * + * Each waiting thread allocates one of these items and adds + * it to the wait list before going to sleep on the event sem. + */ +typedef struct VBOXGUESTWAIT +{ + /** The list node. */ + RTLISTNODE ListNode; + /** The events we are waiting on. */ + uint32_t fReqEvents; + /** The events we received. */ + uint32_t volatile fResEvents; +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + /** Set by VGDrvCommonWaitDoWakeUps before leaving the spinlock to call + * RTSemEventMultiSignal. */ + bool volatile fPendingWakeUp; + /** Set by the requestor thread if it got the spinlock before the + * signaller. Deals with the race in VGDrvCommonWaitDoWakeUps. */ + bool volatile fFreeMe; +#endif + /** The event semaphore. */ + RTSEMEVENTMULTI Event; + /** The session that's waiting. */ + PVBOXGUESTSESSION pSession; +#ifdef VBOX_WITH_HGCM + /** The HGCM request we're waiting for to complete. */ + VMMDevHGCMRequestHeader volatile *pHGCMReq; +#endif +} VBOXGUESTWAIT; + + +/** + * VBox guest memory balloon. + */ +typedef struct VBOXGUESTMEMBALLOON +{ + /** Mutex protecting the members below from concurrent access. */ + RTSEMFASTMUTEX hMtx; + /** The current number of chunks in the balloon. */ + uint32_t cChunks; + /** The maximum number of chunks in the balloon (typically the amount of guest + * memory / chunksize). */ + uint32_t cMaxChunks; + /** This is true if we are using RTR0MemObjAllocPhysNC() / RTR0MemObjGetPagePhysAddr() + * and false otherwise. */ + bool fUseKernelAPI; + /** The current owner of the balloon. + * This is automatically assigned to the first session using the ballooning + * API and first released when the session closes. */ + PVBOXGUESTSESSION pOwner; + /** The pointer to the array of memory objects holding the chunks of the + * balloon. This array is cMaxChunks in size when present. */ + PRTR0MEMOBJ paMemObj; +} VBOXGUESTMEMBALLOON; +/** Pointer to a memory balloon. */ +typedef VBOXGUESTMEMBALLOON *PVBOXGUESTMEMBALLOON; + + +/** + * Per bit usage tracker for a uint32_t mask. + * + * Used for optimal handling of guest properties, mouse status and event filter. + */ +typedef struct VBOXGUESTBITUSAGETRACER +{ + /** Per bit usage counters. */ + uint32_t acPerBitUsage[32]; + /** The current mask according to acPerBitUsage. */ + uint32_t fMask; +} VBOXGUESTBITUSAGETRACER; +/** Pointer to a per bit usage tracker. */ +typedef VBOXGUESTBITUSAGETRACER *PVBOXGUESTBITUSAGETRACER; +/** Pointer to a const per bit usage tracker. */ +typedef VBOXGUESTBITUSAGETRACER const *PCVBOXGUESTBITUSAGETRACER; + + +/** + * VBox guest device (data) extension. + */ +typedef struct VBOXGUESTDEVEXT +{ + /** The base of the adapter I/O ports. */ + RTIOPORT IOPortBase; + /** Pointer to the mapping of the VMMDev adapter memory. */ + VMMDevMemory volatile *pVMMDevMemory; + /** The memory object reserving space for the guest mappings. */ + RTR0MEMOBJ hGuestMappings; + /** Spinlock protecting the signaling and resetting of the wait-for-event + * semaphores as well as the event acking in the ISR. */ + RTSPINLOCK EventSpinlock; + /** Preallocated VMMDevEvents for the IRQ handler. */ + VMMDevEvents *pIrqAckEvents; + /** The physical address of pIrqAckEvents. */ + RTCCPHYS PhysIrqAckEvents; + /** Wait-for-event list for threads waiting for multiple events + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WaitList; +#ifdef VBOX_WITH_HGCM + /** Wait-for-event list for threads waiting on HGCM async completion + * (VBOXGUESTWAIT). + * + * The entire list is evaluated upon the arrival of an HGCM event, unlike + * the other lists which are only evaluated till the first thread has + * been woken up. */ + RTLISTANCHOR HGCMWaitList; +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + /** List of wait-for-event entries that needs waking up + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WakeUpList; +#endif + /** List of wait-for-event entries that has been woken up + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WokenUpList; + /** List of free wait-for-event entries (VBOXGUESTWAIT). */ + RTLISTANCHOR FreeList; + /** Mask of pending events. */ + uint32_t volatile f32PendingEvents; + /** Current VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. + * Used to implement polling. */ + uint32_t volatile u32MousePosChangedSeq; + + /** Spinlock various items in the VBOXGUESTSESSION. */ + RTSPINLOCK SessionSpinlock; + /** List of guest sessions (VBOXGUESTSESSION). We currently traverse this + * but do not search it, so a list data type should be fine. Use under the + * #SessionSpinlock lock. */ + RTLISTANCHOR SessionList; + /** Number of session. */ + uint32_t cSessions; + /** Flag indicating whether logging to the release log + * is enabled. */ + bool fLoggingEnabled; + /** Memory balloon information for RTR0MemObjAllocPhysNC(). */ + VBOXGUESTMEMBALLOON MemBalloon; + /** Callback and user data for a kernel mouse handler. */ + VBoxGuestMouseSetNotifyCallback MouseNotifyCallback; + + /** @name Host Event Filtering + * @{ */ + /** Events we won't permit anyone to filter out. */ + uint32_t fFixedEvents; + /** Usage counters for the host events. (Fixed events are not included.) */ + VBOXGUESTBITUSAGETRACER EventFilterTracker; + /** The event filter last reported to the host (UINT32_MAX on failure). */ + uint32_t fEventFilterHost; + /** @} */ + + /** @name Mouse Status + * @{ */ + /** Usage counters for the mouse statuses (VMMDEV_MOUSE_XXX). */ + VBOXGUESTBITUSAGETRACER MouseStatusTracker; + /** The mouse status last reported to the host (UINT32_MAX on failure). */ + uint32_t fMouseStatusHost; + /** @} */ + + /** @name Guest Capabilities + * @{ */ + /** Guest capabilities which have been set to "acquire" mode. This means + * that only one session can use them at a time, and that they will be + * automatically cleaned up if that session exits without doing so. + * + * Protected by VBOXGUESTDEVEXT::SessionSpinlock, but is unfortunately read + * without holding the lock in a couple of places. */ + uint32_t volatile fAcquireModeGuestCaps; + /** Guest capabilities which have been set to "set" mode. This just means + * that they have been blocked from ever being set to "acquire" mode. */ + uint32_t fSetModeGuestCaps; + /** Mask of all capabilities which are currently acquired by some session + * and as such reported to the host. */ + uint32_t fAcquiredGuestCaps; + /** Usage counters for guest capabilities in "set" mode. Indexed by + * capability bit number, one count per session using a capability. */ + VBOXGUESTBITUSAGETRACER SetGuestCapsTracker; + /** The guest capabilities last reported to the host (UINT32_MAX on failure). */ + uint32_t fGuestCapsHost; + /** @} */ + + /** Heartbeat timer which fires with interval + * cNsHearbeatInterval and its handler sends + * VMMDevReq_GuestHeartbeat to VMMDev. */ + PRTTIMER pHeartbeatTimer; + /** Heartbeat timer interval in nanoseconds. */ + uint64_t cNsHeartbeatInterval; + /** Preallocated VMMDevReq_GuestHeartbeat request. */ + VMMDevRequestHeader *pReqGuestHeartbeat; +} VBOXGUESTDEVEXT; +/** Pointer to the VBoxGuest driver data. */ +typedef VBOXGUESTDEVEXT *PVBOXGUESTDEVEXT; + + +/** + * The VBoxGuest per session data. + */ +typedef struct VBOXGUESTSESSION +{ + /** The list node. */ + RTLISTNODE ListNode; +#if defined(RT_OS_DARWIN) || defined(RT_OS_FREEBSD) || defined(RT_OS_OS2) || defined(RT_OS_SOLARIS) + /** Pointer to the next session with the same hash. */ + PVBOXGUESTSESSION pNextHash; +#endif +#if defined(RT_OS_OS2) + /** The system file number of this session. */ + uint16_t sfn; + uint16_t Alignment; /**< Alignment */ +#endif + /** The process (id) of the session. + * This is NIL if it's a kernel session. */ + RTPROCESS Process; + /** Which process this session is associated with. + * This is NIL if it's a kernel session. */ + RTR0PROCESS R0Process; + /** Pointer to the device extension. */ + PVBOXGUESTDEVEXT pDevExt; + +#ifdef VBOX_WITH_HGCM + /** Array containing HGCM client IDs associated with this session. + * This will be automatically disconnected when the session is closed. */ + uint32_t volatile aHGCMClientIds[64]; +#endif + /** The last consumed VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. + * Used to implement polling. */ + uint32_t volatile u32MousePosChangedSeq; + /** Host events requested by the session. + * An event type requested in any guest session will be added to the host + * filter. Protected by VBOXGUESTDEVEXT::SessionSpinlock. */ + uint32_t fEventFilter; + /** Guest capabilities held in "acquired" by this session. + * Protected by VBOXGUESTDEVEXT::SessionSpinlock, but is unfortunately read + * without holding the lock in a couple of places. */ + uint32_t volatile fAcquiredGuestCaps; + /** Guest capabilities in "set" mode for this session. + * These accumulated for sessions via VBOXGUESTDEVEXT::acGuestCapsSet and + * reported to the host. Protected by VBOXGUESTDEVEXT::SessionSpinlock. */ + uint32_t fCapabilities; + /** Mouse features supported. A feature enabled in any guest session will + * be enabled for the host. + * @note We invert the VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR feature in this + * bitmap. The logic of this is that the real feature is when the host + * cursor is not needed, and we tell the host it is not needed if any + * session explicitly fails to assert it. Storing it inverted simplifies + * the checks. + * Use under the VBOXGUESTDEVEXT#SessionSpinlock lock. */ + uint32_t fMouseStatus; +#ifdef RT_OS_DARWIN + /** Pointer to the associated org_virtualbox_VBoxGuestClient object. */ + void *pvVBoxGuestClient; + /** Whether this session has been opened or not. */ + bool fOpened; +#endif + /** Whether a CANCEL_ALL_WAITEVENTS is pending. This happens when + * CANCEL_ALL_WAITEVENTS is called, but no call to WAITEVENT is in process + * in the current session. In that case the next call will be interrupted + * at once. */ + bool volatile fPendingCancelWaitEvents; + /** Does this session belong to a root process or a user one? */ + bool fUserSession; +} VBOXGUESTSESSION; + +RT_C_DECLS_BEGIN + +int VGDrvCommonInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, void *pvMMIOBase, uint32_t cbMMIO, + VBOXOSTYPE enmOSType, uint32_t fEvents); +bool VGDrvCommonISR(PVBOXGUESTDEVEXT pDevExt); +void VGDrvCommonDeleteDevExt(PVBOXGUESTDEVEXT pDevExt); +int VGDrvCommonReinitDevExtAfterHibernation(PVBOXGUESTDEVEXT pDevExt, VBOXOSTYPE enmOSType); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP +void VGDrvCommonWaitDoWakeUps(PVBOXGUESTDEVEXT pDevExt); +#endif + +int VGDrvCommonCreateUserSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession); +int VGDrvCommonCreateKernelSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession); +void VGDrvCommonCloseSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); + +int VGDrvCommonIoCtlFast(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +int VGDrvCommonIoCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + void *pvData, size_t cbData, size_t *pcbDataReturned); + +/** + * ISR callback for notifying threads polling for mouse events. + * + * This is called at the end of the ISR, after leaving the event spinlock, if + * VMMDEV_EVENT_MOUSE_POSITION_CHANGED was raised by the host. + * + * @param pDevExt The device extension. + */ +void VGDrvNativeISRMousePollEvent(PVBOXGUESTDEVEXT pDevExt); + + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER +int VGDrvNtIOCtl_DpcLatencyChecker(void); +#endif + +RT_C_DECLS_END + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VBoxGuestLog.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/VBoxGuestLog.h @@ -0,0 +1,59 @@ +/* $Id: VBoxGuestLog.h $ */ +/** @file + * VBoxGuestLibR0 - Guest Logging facility. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBOXGUESTLOG__H +#define __VBOXGUESTLOG__H + +#ifndef RT_OS_WINDOWS +# error "Don't include this file." +#else /* RT_OS_WINDOWS */ +/* Save LOG_ENABLED state, because "VBox/rt/log.h" + * may undefine it for IN_RING0 code. + */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define __LOG_ENABLED_SAVED__ +# endif + +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# ifdef VBOX_GUEST +# include +# undef Log +# define Log(a) RTLogBackdoorPrintf a +# else +# define Log(a) DbgPrint a +# endif +# else +# define Log(a) +# endif + +# ifdef __LOG_ENABLED_SAVED__ +# define LOG_ENABLED +# undef __LOG_ENABLED_SAVED__ +# endif + +#endif /* RT_OS_WINDOWS */ + +#endif /* !__VBOXGUESTLOG__H */ --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/VMMDev.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/VMMDev.c @@ -0,0 +1,43 @@ +/* $Id: VMMDev.cpp $ */ +/** @file + * VBoxGuestLibR0 - VMMDev device related functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +DECLVBGL(int) VbglQueryVMMDevMemory(VMMDevMemory **ppVMMDevMemory) +{ + int rc = vbglR0Enter(); + if (RT_FAILURE(rc)) + return rc; + + /* If the memory was not found, return an error. */ + if (!g_vbgldata.pVMMDevMemory) + return VERR_NOT_SUPPORTED; + + *ppVMMDevMemory = g_vbgldata.pVMMDevMemory; + return rc; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/alloc/alloc.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/alloc/alloc.c @@ -0,0 +1,63 @@ +/* $Id: alloc.cpp $ */ +/** @file + * IPRT - Memory Allocation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#ifndef RTMEM_NO_WRAP_TO_EF_APIS +# define RTMEM_NO_WRAP_TO_EF_APIS +#endif +#include +#include "internal/iprt.h" + +#include +#include + + + +RTDECL(void *) RTMemDupTag(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW_DEF +{ + void *pvDst = RTMemAllocTag(cb, pszTag); + if (pvDst) + memcpy(pvDst, pvSrc, cb); + return pvDst; +} +RT_EXPORT_SYMBOL(RTMemDupTag); + + +RTDECL(void *) RTMemDupExTag(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW_DEF +{ + void *pvDst = RTMemAllocTag(cbSrc + cbExtra, pszTag); + if (pvDst) + { + memcpy(pvDst, pvSrc, cbSrc); + memset((uint8_t *)pvDst + cbSrc, 0, cbExtra); + } + return pvDst; +} +RT_EXPORT_SYMBOL(RTMemDupExTag); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/alloc/heapsimple.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/alloc/heapsimple.c @@ -0,0 +1,920 @@ +/* $Id: heapsimple.cpp $ */ +/** @file + * IPRT - A Simple Heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_DEFAULT +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include + +#include "internal/magics.h" + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** Pointer to the heap anchor block. */ +typedef struct RTHEAPSIMPLEINTERNAL *PRTHEAPSIMPLEINTERNAL; +/** Pointer to a heap block. */ +typedef struct RTHEAPSIMPLEBLOCK *PRTHEAPSIMPLEBLOCK; +/** Pointer to a free heap block. */ +typedef struct RTHEAPSIMPLEFREE *PRTHEAPSIMPLEFREE; + +/** + * Structure describing a simple heap block. + * If this block is allocated, it is followed by the user data. + * If this block is free, see RTHEAPSIMPLEFREE. + */ +typedef struct RTHEAPSIMPLEBLOCK +{ + /** The next block in the global block list. */ + PRTHEAPSIMPLEBLOCK pNext; + /** The previous block in the global block list. */ + PRTHEAPSIMPLEBLOCK pPrev; + /** Pointer to the heap anchor block. */ + PRTHEAPSIMPLEINTERNAL pHeap; + /** Flags + magic. */ + uintptr_t fFlags; +} RTHEAPSIMPLEBLOCK; +AssertCompileSizeAlignment(RTHEAPSIMPLEBLOCK, 16); + +/** The block is free if this flag is set. When cleared it's allocated. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_FREE ((uintptr_t)RT_BIT(0)) +/** The magic value. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ((uintptr_t)0xabcdef00) +/** The mask that needs to be applied to RTHEAPSIMPLEBLOCK::fFlags to obtain the magic value. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK (~(uintptr_t)RT_BIT(0)) + +/** + * Checks if the specified block is valid or not. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID(pBlock) \ + ( ((pBlock)->fFlags & RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK) == RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ) + +/** + * Checks if the specified block is valid and in use. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID_USED(pBlock) \ + ( ((pBlock)->fFlags & (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK | RTHEAPSIMPLEBLOCK_FLAGS_FREE)) \ + == RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ) + +/** + * Checks if the specified block is valid and free. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID_FREE(pBlock) \ + ( ((pBlock)->fFlags & (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK | RTHEAPSIMPLEBLOCK_FLAGS_FREE)) \ + == (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE) ) + +/** + * Checks if the specified block is free or not. + * @returns boolean answer. + * @param pBlock Pointer to a valid RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_FREE(pBlock) (!!((pBlock)->fFlags & RTHEAPSIMPLEBLOCK_FLAGS_FREE)) + +/** + * A free heap block. + * This is an extended version of RTHEAPSIMPLEBLOCK that takes the unused + * user data to store free list pointers and a cached size value. + */ +typedef struct RTHEAPSIMPLEFREE +{ + /** Core stuff. */ + RTHEAPSIMPLEBLOCK Core; + /** Pointer to the next free block. */ + PRTHEAPSIMPLEFREE pNext; + /** Pointer to the previous free block. */ + PRTHEAPSIMPLEFREE pPrev; + /** The size of the block (excluding the RTHEAPSIMPLEBLOCK part). */ + size_t cb; + /** An alignment filler to make it a multiple of (sizeof(void *) * 2). */ + size_t Alignment; +} RTHEAPSIMPLEFREE; + + +/** + * The heap anchor block. + * This structure is placed at the head of the memory block specified to RTHeapSimpleInit(), + * which means that the first RTHEAPSIMPLEBLOCK appears immediately after this structure. + */ +typedef struct RTHEAPSIMPLEINTERNAL +{ + /** The typical magic (RTHEAPSIMPLE_MAGIC). */ + size_t uMagic; + /** The heap size. (This structure is included!) */ + size_t cbHeap; + /** Pointer to the end of the heap. */ + void *pvEnd; + /** The amount of free memory in the heap. */ + size_t cbFree; + /** Free head pointer. */ + PRTHEAPSIMPLEFREE pFreeHead; + /** Free tail pointer. */ + PRTHEAPSIMPLEFREE pFreeTail; + /** Make the size of this structure is a multiple of 32. */ + size_t auAlignment[2]; +} RTHEAPSIMPLEINTERNAL; +AssertCompileSizeAlignment(RTHEAPSIMPLEINTERNAL, 32); + + +/** The minimum allocation size. */ +#define RTHEAPSIMPLE_MIN_BLOCK (sizeof(RTHEAPSIMPLEBLOCK)) +AssertCompile(RTHEAPSIMPLE_MIN_BLOCK >= sizeof(RTHEAPSIMPLEBLOCK)); +AssertCompile(RTHEAPSIMPLE_MIN_BLOCK >= sizeof(RTHEAPSIMPLEFREE) - sizeof(RTHEAPSIMPLEBLOCK)); + +/** The minimum and default alignment. */ +#define RTHEAPSIMPLE_ALIGNMENT (sizeof(RTHEAPSIMPLEBLOCK)) + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#ifdef RT_STRICT +# define RTHEAPSIMPLE_STRICT 1 +#endif + +#define ASSERT_L(a, b) AssertMsg((uintptr_t)(a) < (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_LE(a, b) AssertMsg((uintptr_t)(a) <= (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_G(a, b) AssertMsg((uintptr_t)(a) > (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_GE(a, b) AssertMsg((uintptr_t)(a) >= (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_ALIGN(a) AssertMsg(!((uintptr_t)(a) & (RTHEAPSIMPLE_ALIGNMENT - 1)), ("a=%p\n", (uintptr_t)(a))) + +#define ASSERT_PREV(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pPrev); \ + if ((pBlock)->pPrev) \ + { \ + ASSERT_L((pBlock)->pPrev, (pBlock)); \ + ASSERT_GE((pBlock)->pPrev, (pHeapInt) + 1); \ + } \ + else \ + Assert((pBlock) == (PRTHEAPSIMPLEBLOCK)((pHeapInt) + 1)); \ + } while (0) + +#define ASSERT_NEXT(pHeap, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pNext); \ + if ((pBlock)->pNext) \ + { \ + ASSERT_L((pBlock)->pNext, (pHeapInt)->pvEnd); \ + ASSERT_G((pBlock)->pNext, (pBlock)); \ + } \ + } while (0) + +#define ASSERT_BLOCK(pHeapInt, pBlock) \ + do { AssertMsg(RTHEAPSIMPLEBLOCK_IS_VALID(pBlock), ("%#x\n", (pBlock)->fFlags)); \ + AssertMsg((pBlock)->pHeap == (pHeapInt), ("%p != %p\n", (pBlock)->pHeap, (pHeapInt))); \ + ASSERT_GE((pBlock), (pHeapInt) + 1); \ + ASSERT_L((pBlock), (pHeapInt)->pvEnd); \ + ASSERT_NEXT(pHeapInt, pBlock); \ + ASSERT_PREV(pHeapInt, pBlock); \ + } while (0) + +#define ASSERT_BLOCK_USED(pHeapInt, pBlock) \ + do { AssertMsg(RTHEAPSIMPLEBLOCK_IS_VALID_USED((pBlock)), ("%#x\n", (pBlock)->fFlags)); \ + AssertMsg((pBlock)->pHeap == (pHeapInt), ("%p != %p\n", (pBlock)->pHeap, (pHeapInt))); \ + ASSERT_GE((pBlock), (pHeapInt) + 1); \ + ASSERT_L((pBlock), (pHeapInt)->pvEnd); \ + ASSERT_NEXT(pHeapInt, pBlock); \ + ASSERT_PREV(pHeapInt, pBlock); \ + } while (0) + +#define ASSERT_FREE_PREV(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pPrev); \ + if ((pBlock)->pPrev) \ + { \ + ASSERT_GE((pBlock)->pPrev, (pHeapInt)->pFreeHead); \ + ASSERT_L((pBlock)->pPrev, (pBlock)); \ + ASSERT_LE((pBlock)->pPrev, (pBlock)->Core.pPrev); \ + } \ + else \ + Assert((pBlock) == (pHeapInt)->pFreeHead); \ + } while (0) + +#define ASSERT_FREE_NEXT(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pNext); \ + if ((pBlock)->pNext) \ + { \ + ASSERT_LE((pBlock)->pNext, (pHeapInt)->pFreeTail); \ + ASSERT_G((pBlock)->pNext, (pBlock)); \ + ASSERT_GE((pBlock)->pNext, (pBlock)->Core.pNext); \ + } \ + else \ + Assert((pBlock) == (pHeapInt)->pFreeTail); \ + } while (0) + +#ifdef RTHEAPSIMPLE_STRICT +# define ASSERT_FREE_CB(pHeapInt, pBlock) \ + do { size_t cbCalc = ((pBlock)->Core.pNext ? (uintptr_t)(pBlock)->Core.pNext : (uintptr_t)(pHeapInt)->pvEnd) \ + - (uintptr_t)(pBlock) - sizeof(RTHEAPSIMPLEBLOCK); \ + AssertMsg((pBlock)->cb == cbCalc, ("cb=%#zx cbCalc=%#zx\n", (pBlock)->cb, cbCalc)); \ + } while (0) +#else +# define ASSERT_FREE_CB(pHeapInt, pBlock) do {} while (0) +#endif + +/** Asserts that a free block is valid. */ +#define ASSERT_BLOCK_FREE(pHeapInt, pBlock) \ + do { ASSERT_BLOCK(pHeapInt, &(pBlock)->Core); \ + Assert(RTHEAPSIMPLEBLOCK_IS_VALID_FREE(&(pBlock)->Core)); \ + ASSERT_GE((pBlock), (pHeapInt)->pFreeHead); \ + ASSERT_LE((pBlock), (pHeapInt)->pFreeTail); \ + ASSERT_FREE_NEXT(pHeapInt, pBlock); \ + ASSERT_FREE_PREV(pHeapInt, pBlock); \ + ASSERT_FREE_CB(pHeapInt, pBlock); \ + } while (0) + +/** Asserts that the heap anchor block is ok. */ +#define ASSERT_ANCHOR(pHeapInt) \ + do { AssertPtr(pHeapInt);\ + Assert((pHeapInt)->uMagic == RTHEAPSIMPLE_MAGIC); \ + } while (0) + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +#ifdef RTHEAPSIMPLE_STRICT +static void rtHeapSimpleAssertAll(PRTHEAPSIMPLEINTERNAL pHeapInt); +#endif +static PRTHEAPSIMPLEBLOCK rtHeapSimpleAllocBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, size_t cb, size_t uAlignment); +static void rtHeapSimpleFreeBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, PRTHEAPSIMPLEBLOCK pBlock); + + +RTDECL(int) RTHeapSimpleInit(PRTHEAPSIMPLE phHeap, void *pvMemory, size_t cbMemory) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEFREE pFree; + unsigned i; + + /* + * Validate input. The imposed minimum heap size is just a convenient value. + */ + AssertReturn(cbMemory >= PAGE_SIZE, VERR_INVALID_PARAMETER); + AssertPtrReturn(pvMemory, VERR_INVALID_POINTER); + AssertReturn((uintptr_t)pvMemory + (cbMemory - 1) > (uintptr_t)cbMemory, VERR_INVALID_PARAMETER); + + /* + * Place the heap anchor block at the start of the heap memory, + * enforce 32 byte alignment of it. Also align the heap size correctly. + */ + pHeapInt = (PRTHEAPSIMPLEINTERNAL)pvMemory; + if ((uintptr_t)pvMemory & 31) + { + const uintptr_t off = 32 - ((uintptr_t)pvMemory & 31); + cbMemory -= off; + pHeapInt = (PRTHEAPSIMPLEINTERNAL)((uintptr_t)pvMemory + off); + } + cbMemory &= ~(RTHEAPSIMPLE_ALIGNMENT - 1); + + + /* Init the heap anchor block. */ + pHeapInt->uMagic = RTHEAPSIMPLE_MAGIC; + pHeapInt->pvEnd = (uint8_t *)pHeapInt + cbMemory; + pHeapInt->cbHeap = cbMemory; + pHeapInt->cbFree = cbMemory + - sizeof(RTHEAPSIMPLEBLOCK) + - sizeof(RTHEAPSIMPLEINTERNAL); + pHeapInt->pFreeTail = pHeapInt->pFreeHead = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + for (i = 0; i < RT_ELEMENTS(pHeapInt->auAlignment); i++) + pHeapInt->auAlignment[i] = ~(size_t)0; + + /* Init the single free block. */ + pFree = pHeapInt->pFreeHead; + pFree->Core.pNext = NULL; + pFree->Core.pPrev = NULL; + pFree->Core.pHeap = pHeapInt; + pFree->Core.fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pNext = NULL; + pFree->pPrev = NULL; + pFree->cb = pHeapInt->cbFree; + + *phHeap = pHeapInt; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTHeapSimpleInit); + + +RTDECL(int) RTHeapSimpleRelocate(RTHEAPSIMPLE hHeap, uintptr_t offDelta) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEFREE pCur; + + /* + * Validate input. + */ + AssertPtrReturn(pHeapInt, VERR_INVALID_HANDLE); + AssertReturn(pHeapInt->uMagic == RTHEAPSIMPLE_MAGIC, VERR_INVALID_HANDLE); + AssertMsgReturn((uintptr_t)pHeapInt - (uintptr_t)pHeapInt->pvEnd + pHeapInt->cbHeap == offDelta, + ("offDelta=%p, expected=%p\n", offDelta, (uintptr_t)pHeapInt->pvEnd - pHeapInt->cbHeap - (uintptr_t)pHeapInt), + VERR_INVALID_PARAMETER); + + /* + * Relocate the heap anchor block. + */ +#define RELOCATE_IT(var, type, offDelta) do { if (RT_UNLIKELY((var) != NULL)) { (var) = (type)((uintptr_t)(var) + offDelta); } } while (0) + RELOCATE_IT(pHeapInt->pvEnd, void *, offDelta); + RELOCATE_IT(pHeapInt->pFreeHead, PRTHEAPSIMPLEFREE, offDelta); + RELOCATE_IT(pHeapInt->pFreeTail, PRTHEAPSIMPLEFREE, offDelta); + + /* + * Walk the heap blocks. + */ + for (pCur = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pCur && (uintptr_t)pCur < (uintptr_t)pHeapInt->pvEnd; + pCur = (PRTHEAPSIMPLEFREE)pCur->Core.pNext) + { + RELOCATE_IT(pCur->Core.pNext, PRTHEAPSIMPLEBLOCK, offDelta); + RELOCATE_IT(pCur->Core.pPrev, PRTHEAPSIMPLEBLOCK, offDelta); + RELOCATE_IT(pCur->Core.pHeap, PRTHEAPSIMPLEINTERNAL, offDelta); + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pCur->Core)) + { + RELOCATE_IT(pCur->pNext, PRTHEAPSIMPLEFREE, offDelta); + RELOCATE_IT(pCur->pPrev, PRTHEAPSIMPLEFREE, offDelta); + } + } +#undef RELOCATE_IT + +#ifdef RTHEAPSIMPLE_STRICT + /* + * Give it a once over before we return. + */ + rtHeapSimpleAssertAll(pHeapInt); +#endif + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTHeapSimpleRelocate); + + +RTDECL(void *) RTHeapSimpleAlloc(RTHEAPSIMPLE hHeap, size_t cb, size_t cbAlignment) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate and adjust the input. + */ + AssertPtrReturn(pHeapInt, NULL); + if (cb < RTHEAPSIMPLE_MIN_BLOCK) + cb = RTHEAPSIMPLE_MIN_BLOCK; + else + cb = RT_ALIGN_Z(cb, RTHEAPSIMPLE_ALIGNMENT); + if (!cbAlignment) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + else + { + Assert(!(cbAlignment & (cbAlignment - 1))); + Assert((cbAlignment & ~(cbAlignment - 1)) == cbAlignment); + if (cbAlignment < RTHEAPSIMPLE_ALIGNMENT) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + } + + /* + * Do the allocation. + */ + pBlock = rtHeapSimpleAllocBlock(pHeapInt, cb, cbAlignment); + if (RT_LIKELY(pBlock)) + { + void *pv = pBlock + 1; + return pv; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTHeapSimpleAlloc); + + +RTDECL(void *) RTHeapSimpleAllocZ(RTHEAPSIMPLE hHeap, size_t cb, size_t cbAlignment) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate and adjust the input. + */ + AssertPtrReturn(pHeapInt, NULL); + if (cb < RTHEAPSIMPLE_MIN_BLOCK) + cb = RTHEAPSIMPLE_MIN_BLOCK; + else + cb = RT_ALIGN_Z(cb, RTHEAPSIMPLE_ALIGNMENT); + if (!cbAlignment) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + else + { + Assert(!(cbAlignment & (cbAlignment - 1))); + Assert((cbAlignment & ~(cbAlignment - 1)) == cbAlignment); + if (cbAlignment < RTHEAPSIMPLE_ALIGNMENT) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + } + + /* + * Do the allocation. + */ + pBlock = rtHeapSimpleAllocBlock(pHeapInt, cb, cbAlignment); + if (RT_LIKELY(pBlock)) + { + void *pv = pBlock + 1; + memset(pv, 0, cb); + return pv; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTHeapSimpleAllocZ); + + +/** + * Allocates a block of memory from the specified heap. + * + * No parameter validation or adjustment is performed. + * + * @returns Pointer to the allocated block. + * @returns NULL on failure. + * + * @param pHeapInt The heap. + * @param cb Size of the memory block to allocate. + * @param uAlignment The alignment specifications for the allocated block. + */ +static PRTHEAPSIMPLEBLOCK rtHeapSimpleAllocBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, size_t cb, size_t uAlignment) +{ + PRTHEAPSIMPLEBLOCK pRet = NULL; + PRTHEAPSIMPLEFREE pFree; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + + /* + * Search for a fitting block from the lower end of the heap. + */ + for (pFree = pHeapInt->pFreeHead; + pFree; + pFree = pFree->pNext) + { + uintptr_t offAlign; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + + /* + * Match for size and alignment. + */ + if (pFree->cb < cb) + continue; + offAlign = (uintptr_t)(&pFree->Core + 1) & (uAlignment - 1); + if (offAlign) + { + RTHEAPSIMPLEFREE Free; + PRTHEAPSIMPLEBLOCK pPrev; + + offAlign = uAlignment - offAlign; + if (pFree->cb - offAlign < cb) + continue; + + /* + * Make a stack copy of the free block header and adjust the pointer. + */ + Free = *pFree; + pFree = (PRTHEAPSIMPLEFREE)((uintptr_t)pFree + offAlign); + + /* + * Donate offAlign bytes to the node in front of us. + * If we're the head node, we'll have to create a fake node. We'll + * mark it USED for simplicity. + * + * (Should this policy of donating memory to the guy in front of us + * cause big 'leaks', we could create a new free node if there is room + * for that.) + */ + pPrev = Free.Core.pPrev; + if (pPrev) + { + AssertMsg(!RTHEAPSIMPLEBLOCK_IS_FREE(pPrev), ("Impossible!\n")); + pPrev->pNext = &pFree->Core; + } + else + { + pPrev = (PRTHEAPSIMPLEBLOCK)(pHeapInt + 1); + Assert(pPrev == &pFree->Core); + pPrev->pPrev = NULL; + pPrev->pNext = &pFree->Core; + pPrev->pHeap = pHeapInt; + pPrev->fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC; + } + pHeapInt->cbFree -= offAlign; + + /* + * Recreate pFree in the new position and adjust the neighbors. + */ + *pFree = Free; + + /* the core */ + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pFree->Core; + pFree->Core.pPrev = pPrev; + + /* the free part */ + pFree->cb -= offAlign; + if (pFree->pNext) + pFree->pNext->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + if (pFree->pPrev) + pFree->pPrev->pNext = pFree; + else + pHeapInt->pFreeHead = pFree; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + ASSERT_BLOCK_USED(pHeapInt, pPrev); + } + + /* + * Split off a new FREE block? + */ + if (pFree->cb >= cb + RT_ALIGN_Z(sizeof(RTHEAPSIMPLEFREE), RTHEAPSIMPLE_ALIGNMENT)) + { + /* + * Move the FREE block up to make room for the new USED block. + */ + PRTHEAPSIMPLEFREE pNew = (PRTHEAPSIMPLEFREE)((uintptr_t)&pFree->Core + cb + sizeof(RTHEAPSIMPLEBLOCK)); + + pNew->Core.pNext = pFree->Core.pNext; + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pNew->Core; + pNew->Core.pPrev = &pFree->Core; + pNew->Core.pHeap = pHeapInt; + pNew->Core.fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE; + + pNew->pNext = pFree->pNext; + if (pNew->pNext) + pNew->pNext->pPrev = pNew; + else + pHeapInt->pFreeTail = pNew; + pNew->pPrev = pFree->pPrev; + if (pNew->pPrev) + pNew->pPrev->pNext = pNew; + else + pHeapInt->pFreeHead = pNew; + pNew->cb = (pNew->Core.pNext ? (uintptr_t)pNew->Core.pNext : (uintptr_t)pHeapInt->pvEnd) \ + - (uintptr_t)pNew - sizeof(RTHEAPSIMPLEBLOCK); + ASSERT_BLOCK_FREE(pHeapInt, pNew); + + /* + * Update the old FREE node making it a USED node. + */ + pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->Core.pNext = &pNew->Core; + pHeapInt->cbFree -= pFree->cb; + pHeapInt->cbFree += pNew->cb; + pRet = &pFree->Core; + ASSERT_BLOCK_USED(pHeapInt, pRet); + } + else + { + /* + * Link it out of the free list. + */ + if (pFree->pNext) + pFree->pNext->pPrev = pFree->pPrev; + else + pHeapInt->pFreeTail = pFree->pPrev; + if (pFree->pPrev) + pFree->pPrev->pNext = pFree->pNext; + else + pHeapInt->pFreeHead = pFree->pNext; + + /* + * Convert it to a used block. + */ + pHeapInt->cbFree -= pFree->cb; + pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pRet = &pFree->Core; + ASSERT_BLOCK_USED(pHeapInt, pRet); + } + break; + } + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + return pRet; +} + + +RTDECL(void) RTHeapSimpleFree(RTHEAPSIMPLE hHeap, void *pv) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate input. + */ + if (!pv) + return; + AssertPtr(pv); + Assert(RT_ALIGN_P(pv, RTHEAPSIMPLE_ALIGNMENT) == pv); + + /* + * Get the block and heap. If in strict mode, validate these. + */ + pBlock = (PRTHEAPSIMPLEBLOCK)pv - 1; + pHeapInt = pBlock->pHeap; + ASSERT_BLOCK_USED(pHeapInt, pBlock); + ASSERT_ANCHOR(pHeapInt); + Assert(pHeapInt == (PRTHEAPSIMPLEINTERNAL)hHeap || !hHeap); + +#ifdef RTHEAPSIMPLE_FREE_POISON + /* + * Poison the block. + */ + const size_t cbBlock = (pBlock->pNext ? (uintptr_t)pBlock->pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock - sizeof(RTHEAPSIMPLEBLOCK); + memset(pBlock + 1, RTHEAPSIMPLE_FREE_POISON, cbBlock); +#endif + + /* + * Call worker which does the actual job. + */ + rtHeapSimpleFreeBlock(pHeapInt, pBlock); +} +RT_EXPORT_SYMBOL(RTHeapSimpleFree); + + +/** + * Free a memory block. + * + * @param pHeapInt The heap. + * @param pBlock The memory block to free. + */ +static void rtHeapSimpleFreeBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, PRTHEAPSIMPLEBLOCK pBlock) +{ + PRTHEAPSIMPLEFREE pFree = (PRTHEAPSIMPLEFREE)pBlock; + PRTHEAPSIMPLEFREE pLeft; + PRTHEAPSIMPLEFREE pRight; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + + /* + * Look for the closest free list blocks by walking the blocks right + * of us (both lists are sorted by address). + */ + pLeft = NULL; + pRight = NULL; + if (pHeapInt->pFreeTail) + { + pRight = (PRTHEAPSIMPLEFREE)pFree->Core.pNext; + while (pRight && !RTHEAPSIMPLEBLOCK_IS_FREE(&pRight->Core)) + { + ASSERT_BLOCK(pHeapInt, &pRight->Core); + pRight = (PRTHEAPSIMPLEFREE)pRight->Core.pNext; + } + if (!pRight) + pLeft = pHeapInt->pFreeTail; + else + { + ASSERT_BLOCK_FREE(pHeapInt, pRight); + pLeft = pRight->pPrev; + } + if (pLeft) + ASSERT_BLOCK_FREE(pHeapInt, pLeft); + } + AssertMsgReturnVoid(pLeft != pFree, ("Freed twice! pv=%p (pBlock=%p)\n", pBlock + 1, pBlock)); + ASSERT_L(pLeft, pFree); + Assert(!pRight || (uintptr_t)pRight > (uintptr_t)pFree); + Assert(!pLeft || pLeft->pNext == pRight); + + /* + * Insert at the head of the free block list? + */ + if (!pLeft) + { + Assert(pRight == pHeapInt->pFreeHead); + pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pPrev = NULL; + pFree->pNext = pRight; + if (pRight) + pRight->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + pHeapInt->pFreeHead = pFree; + } + else + { + /* + * Can we merge with left hand free block? + */ + if (pLeft->Core.pNext == &pFree->Core) + { + pLeft->Core.pNext = pFree->Core.pNext; + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pLeft->Core; + pHeapInt->cbFree -= pLeft->cb; + pFree = pLeft; + } + /* + * No, just link it into the free list then. + */ + else + { + pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pNext = pRight; + pFree->pPrev = pLeft; + pLeft->pNext = pFree; + if (pRight) + pRight->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + } + } + + /* + * Can we merge with right hand free block? + */ + if ( pRight + && pRight->Core.pPrev == &pFree->Core) + { + /* core */ + pFree->Core.pNext = pRight->Core.pNext; + if (pRight->Core.pNext) + pRight->Core.pNext->pPrev = &pFree->Core; + + /* free */ + pFree->pNext = pRight->pNext; + if (pRight->pNext) + pRight->pNext->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + pHeapInt->cbFree -= pRight->cb; + } + + /* + * Calculate the size and update free stats. + */ + pFree->cb = (pFree->Core.pNext ? (uintptr_t)pFree->Core.pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pFree - sizeof(RTHEAPSIMPLEBLOCK); + pHeapInt->cbFree += pFree->cb; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif +} + + +#ifdef RTHEAPSIMPLE_STRICT +/** + * Internal consistency check (relying on assertions). + * @param pHeapInt + */ +static void rtHeapSimpleAssertAll(PRTHEAPSIMPLEINTERNAL pHeapInt) +{ + PRTHEAPSIMPLEFREE pPrev = NULL; + PRTHEAPSIMPLEFREE pPrevFree = NULL; + PRTHEAPSIMPLEFREE pBlock; + for (pBlock = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pBlock; + pBlock = (PRTHEAPSIMPLEFREE)pBlock->Core.pNext) + { + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pBlock->Core)) + { + ASSERT_BLOCK_FREE(pHeapInt, pBlock); + Assert(pBlock->pPrev == pPrevFree); + Assert(pPrevFree || pHeapInt->pFreeHead == pBlock); + pPrevFree = pBlock; + } + else + ASSERT_BLOCK_USED(pHeapInt, &pBlock->Core); + Assert(!pPrev || pPrev == (PRTHEAPSIMPLEFREE)pBlock->Core.pPrev); + pPrev = pBlock; + } + Assert(pHeapInt->pFreeTail == pPrevFree); +} +#endif + + +RTDECL(size_t) RTHeapSimpleSize(RTHEAPSIMPLE hHeap, void *pv) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEBLOCK pBlock; + size_t cbBlock; + + /* + * Validate input. + */ + if (!pv) + return 0; + AssertPtrReturn(pv, 0); + AssertReturn(RT_ALIGN_P(pv, RTHEAPSIMPLE_ALIGNMENT) == pv, 0); + + /* + * Get the block and heap. If in strict mode, validate these. + */ + pBlock = (PRTHEAPSIMPLEBLOCK)pv - 1; + pHeapInt = pBlock->pHeap; + ASSERT_BLOCK_USED(pHeapInt, pBlock); + ASSERT_ANCHOR(pHeapInt); + Assert(pHeapInt == (PRTHEAPSIMPLEINTERNAL)hHeap || !hHeap); + + /* + * Calculate the block size. + */ + cbBlock = (pBlock->pNext ? (uintptr_t)pBlock->pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock- sizeof(RTHEAPSIMPLEBLOCK); + return cbBlock; +} +RT_EXPORT_SYMBOL(RTHeapSimpleSize); + + +RTDECL(size_t) RTHeapSimpleGetHeapSize(RTHEAPSIMPLE hHeap) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + + if (hHeap == NIL_RTHEAPSIMPLE) + return 0; + + pHeapInt = hHeap; + AssertPtrReturn(pHeapInt, 0); + ASSERT_ANCHOR(pHeapInt); + return pHeapInt->cbHeap; +} +RT_EXPORT_SYMBOL(RTHeapSimpleGetHeapSize); + + +RTDECL(size_t) RTHeapSimpleGetFreeSize(RTHEAPSIMPLE hHeap) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + + if (hHeap == NIL_RTHEAPSIMPLE) + return 0; + + pHeapInt = hHeap; + AssertPtrReturn(pHeapInt, 0); + ASSERT_ANCHOR(pHeapInt); + return pHeapInt->cbFree; +} +RT_EXPORT_SYMBOL(RTHeapSimpleGetFreeSize); + + +RTDECL(void) RTHeapSimpleDump(RTHEAPSIMPLE hHeap, PFNRTHEAPSIMPLEPRINTF pfnPrintf) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = (PRTHEAPSIMPLEINTERNAL)hHeap; + PRTHEAPSIMPLEFREE pBlock; + + pfnPrintf("**** Dumping Heap %p - cbHeap=%zx cbFree=%zx ****\n", + hHeap, pHeapInt->cbHeap, pHeapInt->cbFree); + + for (pBlock = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pBlock; + pBlock = (PRTHEAPSIMPLEFREE)pBlock->Core.pNext) + { + size_t cb = (pBlock->pNext ? (uintptr_t)pBlock->Core.pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock - sizeof(RTHEAPSIMPLEBLOCK); + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pBlock->Core)) + pfnPrintf("%p %06x FREE pNext=%p pPrev=%p fFlags=%#x cb=%#06x : cb=%#06x pNext=%p pPrev=%p\n", + pBlock, (uintptr_t)pBlock - (uintptr_t)(pHeapInt + 1), pBlock->Core.pNext, pBlock->Core.pPrev, pBlock->Core.fFlags, cb, + pBlock->cb, pBlock->pNext, pBlock->pPrev); + else + pfnPrintf("%p %06x USED pNext=%p pPrev=%p fFlags=%#x cb=%#06x\n", + pBlock, (uintptr_t)pBlock - (uintptr_t)(pHeapInt + 1), pBlock->Core.pNext, pBlock->Core.pPrev, pBlock->Core.fFlags, cb); + } + pfnPrintf("**** Done dumping Heap %p ****\n", hHeap); +} +RT_EXPORT_SYMBOL(RTHeapSimpleDump); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/err/RTErrConvertFromErrno.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/err/RTErrConvertFromErrno.c @@ -0,0 +1,452 @@ +/* $Id: RTErrConvertFromErrno.cpp $ */ +/** @file + * IPRT - Convert errno to iprt status codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTErrConvertFromErrno(unsigned uNativeCode) +{ + /* very fast check for no error. */ + if (uNativeCode == 0) + return VINF_SUCCESS; + + /* + * Process error codes. + * + * (Use a switch and not a table since the numbers vary among compilers + * and OSes. So we let the compiler switch optimizer handle speed issues.) + * + * This switch is arranged like the Linux i386 errno.h! This switch is mirrored + * by RTErrConvertToErrno. + */ + switch (uNativeCode) + { /* Linux number */ +#ifdef EPERM + case EPERM: return VERR_ACCESS_DENIED; /* 1 */ +#endif +#ifdef ENOENT + case ENOENT: return VERR_FILE_NOT_FOUND; +#endif +#ifdef ESRCH + case ESRCH: return VERR_PROCESS_NOT_FOUND; +#endif +#ifdef EINTR + case EINTR: return VERR_INTERRUPTED; +#endif +#ifdef EIO + case EIO: return VERR_DEV_IO_ERROR; +#endif +#ifdef ENXIO + case ENXIO: return VERR_DEV_IO_ERROR; /**@todo fix this duplicate error */ +#endif +#ifdef E2BIG + case E2BIG: return VERR_TOO_MUCH_DATA; +#endif +#ifdef ENOEXEC + case ENOEXEC: return VERR_BAD_EXE_FORMAT; +#endif +#ifdef EBADF + case EBADF: return VERR_INVALID_HANDLE; +#endif +#ifdef ECHILD + case ECHILD: return VERR_PROCESS_NOT_FOUND; /* 10 */ /**@todo fix duplicate error */ +#endif +#ifdef EAGAIN + case EAGAIN: return VERR_TRY_AGAIN; +#endif +#ifdef ENOMEM + case ENOMEM: return VERR_NO_MEMORY; +#endif +#ifdef EACCES + case EACCES: return VERR_ACCESS_DENIED; /**@todo fix duplicate error */ +#endif +#ifdef EFAULT + case EFAULT: return VERR_INVALID_POINTER; +#endif +#ifdef ENOTBLK + //case ENOTBLK: return VERR_; +#endif +#ifdef EBUSY + case EBUSY: return VERR_RESOURCE_BUSY; +#endif +#ifdef EEXIST + case EEXIST: return VERR_ALREADY_EXISTS; +#endif +#ifdef EXDEV + case EXDEV: return VERR_NOT_SAME_DEVICE; +#endif +#ifdef ENODEV + case ENODEV: return VERR_NOT_SUPPORTED; /**@todo fix duplicate error */ +#endif +#ifdef ENOTDIR + case ENOTDIR: return VERR_PATH_NOT_FOUND; /* 20 */ +#endif +#ifdef EISDIR + case EISDIR: return VERR_IS_A_DIRECTORY; +#endif +#ifdef EINVAL + case EINVAL: return VERR_INVALID_PARAMETER; +#endif +#ifdef ENFILE + case ENFILE: return VERR_TOO_MANY_OPEN_FILES; /** @todo fix duplicate error */ +#endif +#ifdef EMFILE + case EMFILE: return VERR_TOO_MANY_OPEN_FILES; +#endif +#ifdef ENOTTY + case ENOTTY: return VERR_INVALID_FUNCTION; +#endif +#ifdef ETXTBSY + case ETXTBSY: return VERR_SHARING_VIOLATION; +#endif +#ifdef EFBIG + case EFBIG: return VERR_FILE_TOO_BIG; +#endif +#ifdef ENOSPC + case ENOSPC: return VERR_DISK_FULL; +#endif +#ifdef ESPIPE + case ESPIPE: return VERR_SEEK_ON_DEVICE; +#endif +#ifdef EROFS + case EROFS: return VERR_WRITE_PROTECT; /* 30 */ +#endif +#ifdef EMLINK + //case EMLINK: +#endif +#ifdef EPIPE + case EPIPE: return VERR_BROKEN_PIPE; +#endif +#ifdef EDOM + case EDOM: return VERR_INVALID_PARAMETER; /**@todo fix duplicate error */ +#endif +#ifdef ERANGE + case ERANGE: return VERR_INVALID_PARAMETER; /**@todo fix duplicate error */ +#endif +#ifdef EDEADLK + case EDEADLK: return VERR_DEADLOCK; +#endif +#ifdef ENAMETOOLONG + case ENAMETOOLONG: return VERR_FILENAME_TOO_LONG; +#endif +#ifdef ENOLCK + case ENOLCK: return VERR_FILE_LOCK_FAILED; +#endif +#ifdef ENOSYS /** @todo map this differently on solaris. */ + case ENOSYS: return VERR_NOT_SUPPORTED; +#endif +#ifdef ENOTEMPTY + case ENOTEMPTY: return VERR_DIR_NOT_EMPTY; +#endif +#ifdef ELOOP + case ELOOP: return VERR_TOO_MANY_SYMLINKS; /* 40 */ +#endif + //41?? +#ifdef ENOMSG + //case ENOMSG 42 /* No message of desired type */ +#endif +#ifdef EIDRM + //case EIDRM 43 /* Identifier removed */ +#endif +#ifdef ECHRNG + //case ECHRNG 44 /* Channel number out of range */ +#endif +#ifdef EL2NSYNC + //case EL2NSYNC 45 /* Level 2 not synchronized */ +#endif +#ifdef EL3HLT + //case EL3HLT 46 /* Level 3 halted */ +#endif +#ifdef EL3RST + //case EL3RST 47 /* Level 3 reset */ +#endif +#ifdef ELNRNG + //case ELNRNG 48 /* Link number out of range */ +#endif +#ifdef EUNATCH + //case EUNATCH 49 /* Protocol driver not attached */ +#endif +#ifdef ENOCSI + //case ENOCSI 50 /* No CSI structure available */ +#endif +#ifdef EL2HLT + //case EL2HLT 51 /* Level 2 halted */ +#endif +#ifdef EBADE + //case EBADE 52 /* Invalid exchange */ +#endif +#ifdef EBADR + //case EBADR 53 /* Invalid request descriptor */ +#endif +#ifdef EXFULL + //case EXFULL 54 /* Exchange full */ +#endif +#ifdef ENOANO + //case ENOANO 55 /* No anode */ +#endif +#ifdef EBADRQC + //case EBADRQC 56 /* Invalid request code */ +#endif +#ifdef EBADSLT + //case EBADSLT 57 /* Invalid slot */ +#endif + //case 58: +#ifdef EBFONT + //case EBFONT 59 /* Bad font file format */ +#endif +#ifdef ENOSTR + //case ENOSTR 60 /* Device not a stream */ +#endif +#ifdef ENODATA + case ENODATA: return VERR_NO_DATA; +#endif +#ifdef ETIME + //case ETIME 62 /* Timer expired */ +#endif +#ifdef ENOSR + //case ENOSR 63 /* Out of streams resources */ +#endif +#ifdef ENONET + case ENONET: return VERR_NET_NO_NETWORK; +#endif +#ifdef ENOPKG + //case ENOPKG 65 /* Package not installed */ +#endif +#ifdef EREMOTE + //case EREMOTE 66 /* Object is remote */ +#endif +#ifdef ENOLINK + //case ENOLINK 67 /* Link has been severed */ +#endif +#ifdef EADV + //case EADV 68 /* Advertise error */ +#endif +#ifdef ESRMNT + //case ESRMNT 69 /* Srmount error */ +#endif +#ifdef ECOMM + //case ECOMM 70 /* Communication error on send */ +#endif +#ifdef EPROTO + case EPROTO: return VERR_NET_PROTOCOL_ERROR; +#endif +#ifdef EMULTIHOP + //case EMULTIHOP 72 /* Multihop attempted */ +#endif +#ifdef EDOTDOT + //case EDOTDOT 73 /* RFS specific error */ +#endif +#ifdef EBADMSG + //case EBADMSG 74 /* Not a data message */ +#endif +#ifdef EOVERFLOW + case EOVERFLOW: return VERR_TOO_MUCH_DATA; /**@todo fix duplicate error */ +#endif +#ifdef ENOTUNIQ + case ENOTUNIQ: return VERR_NET_NOT_UNIQUE_NAME; +#endif +#ifdef EBADFD + case EBADFD: return VERR_INVALID_HANDLE; /**@todo fix duplicate error? */ +#endif +#ifdef EREMCHG + //case EREMCHG 78 /* Remote address changed */ +#endif +#ifdef ELIBACC + //case ELIBACC 79 /* Can not access a needed shared library */ +#endif +#ifdef ELIBBAD + //case ELIBBAD 80 /* Accessing a corrupted shared library */ +#endif +#ifdef ELIBSCN + //case ELIBSCN 81 /* .lib section in a.out corrupted */ +#endif +#ifdef ELIBMAX + //case ELIBMAX 82 /* Attempting to link in too many shared libraries */ +#endif +#ifdef ELIBEXEC + //case ELIBEXEC 83 /* Cannot exec a shared library directly */ +#endif +#ifdef EILSEQ + case EILSEQ: return VERR_NO_TRANSLATION; +#endif +#ifdef ERESTART + case ERESTART: return VERR_INTERRUPTED;/**@todo fix duplicate error?*/ +#endif +#ifdef ESTRPIPE + //case ESTRPIPE 86 /* Streams pipe error */ +#endif +#ifdef EUSERS + //case EUSERS 87 /* Too many users */ +#endif +#ifdef ENOTSOCK + case ENOTSOCK: return VERR_NET_NOT_SOCKET; +#endif +#ifdef EDESTADDRREQ + case EDESTADDRREQ: return VERR_NET_DEST_ADDRESS_REQUIRED; +#endif +#ifdef EMSGSIZE + case EMSGSIZE: return VERR_NET_MSG_SIZE; +#endif +#ifdef EPROTOTYPE + case EPROTOTYPE: return VERR_NET_PROTOCOL_TYPE; +#endif +#ifdef ENOPROTOOPT + case ENOPROTOOPT: return VERR_NET_PROTOCOL_NOT_AVAILABLE; +#endif +#ifdef EPROTONOSUPPORT + case EPROTONOSUPPORT: return VERR_NET_PROTOCOL_NOT_SUPPORTED; +#endif +#ifdef ESOCKTNOSUPPORT + case ESOCKTNOSUPPORT: return VERR_NET_SOCKET_TYPE_NOT_SUPPORTED; +#endif +#ifdef EOPNOTSUPP /** @todo map this differently on solaris. */ + case EOPNOTSUPP: return VERR_NET_OPERATION_NOT_SUPPORTED; +#endif +#ifdef EPFNOSUPPORT + case EPFNOSUPPORT: return VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED; +#endif +#ifdef EAFNOSUPPORT + case EAFNOSUPPORT: return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; +#endif +#ifdef EADDRINUSE + case EADDRINUSE: return VERR_NET_ADDRESS_IN_USE; +#endif +#ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: return VERR_NET_ADDRESS_NOT_AVAILABLE; +#endif +#ifdef ENETDOWN + case ENETDOWN: return VERR_NET_DOWN; +#endif +#ifdef ENETUNREACH + case ENETUNREACH: return VERR_NET_UNREACHABLE; +#endif +#ifdef ENETRESET + case ENETRESET: return VERR_NET_CONNECTION_RESET; +#endif +#ifdef ECONNABORTED + case ECONNABORTED: return VERR_NET_CONNECTION_ABORTED; +#endif +#ifdef ECONNRESET + case ECONNRESET: return VERR_NET_CONNECTION_RESET_BY_PEER; +#endif +#ifdef ENOBUFS + case ENOBUFS: return VERR_NET_NO_BUFFER_SPACE; +#endif +#ifdef EISCONN + case EISCONN: return VERR_NET_ALREADY_CONNECTED; +#endif +#ifdef ENOTCONN + case ENOTCONN: return VERR_NET_NOT_CONNECTED; +#endif +#ifdef ESHUTDOWN + case ESHUTDOWN: return VERR_NET_SHUTDOWN; +#endif +#ifdef ETOOMANYREFS + case ETOOMANYREFS: return VERR_NET_TOO_MANY_REFERENCES; +#endif +#ifdef ETIMEDOUT + case ETIMEDOUT: return VERR_TIMEOUT; +#endif +#ifdef ECONNREFUSED + case ECONNREFUSED: return VERR_NET_CONNECTION_REFUSED; +#endif +#ifdef EHOSTDOWN + case EHOSTDOWN: return VERR_NET_HOST_DOWN; +#endif +#ifdef EHOSTUNREACH + case EHOSTUNREACH: return VERR_NET_HOST_UNREACHABLE; +#endif +#ifdef EALREADY + case EALREADY: return VERR_NET_ALREADY_IN_PROGRESS; +#endif +#ifdef EINPROGRESS + case EINPROGRESS: return VERR_NET_IN_PROGRESS; +#endif +#ifdef ESTALE + //case ESTALE 116 /* Stale NFS file handle */ +#endif +#ifdef EUCLEAN + //case EUCLEAN 117 /* Structure needs cleaning */ +#endif +#ifdef ENOTNAM + //case ENOTNAM 118 /* Not a XENIX named type file */ +#endif +#ifdef ENAVAIL + //case ENAVAIL 119 /* No XENIX semaphores available */ +#endif +#ifdef EISNAM + //case EISNAM 120 /* Is a named type file */ +#endif +#ifdef EREMOTEIO + //case EREMOTEIO 121 /* Remote I/O error */ +#endif +#ifdef EDQUOT + case EDQUOT: return VERR_DISK_FULL; /**@todo fix duplicate error */ +#endif +#ifdef ENOMEDIUM + case ENOMEDIUM: return VERR_MEDIA_NOT_PRESENT; +#endif +#ifdef EMEDIUMTYPE + case EMEDIUMTYPE: return VERR_MEDIA_NOT_RECOGNIZED; +#endif +#if defined(EWOULDBLOCK) && (EWOULDBLOCK != EAGAIN) + case EWOULDBLOCK: return VERR_TRY_AGAIN; +#endif + + /* Non-linux */ + +#ifdef EPROCLIM + case EPROCLIM: return VERR_MAX_PROCS_REACHED; +#endif +#ifdef EDOOFUS +# if EDOOFUS != EINVAL + case EDOOFUS: return VERR_INTERNAL_ERROR; +# endif +#endif +#ifdef ENOTSUP +# ifndef EOPNOTSUPP + case ENOTSUP: return VERR_NOT_SUPPORTED; +# else +# if ENOTSUP != EOPNOTSUPP + case ENOTSUP: return VERR_NOT_SUPPORTED; +# endif +# endif +#endif + default: + AssertMsgFailed(("Unhandled error code %d\n", uNativeCode)); + return VERR_UNRESOLVED_ERROR; + } +} +RT_EXPORT_SYMBOL(RTErrConvertFromErrno); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/err/RTErrConvertToErrno.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/err/RTErrConvertToErrno.c @@ -0,0 +1,451 @@ +/* $Id: RTErrConvertToErrno.cpp $ */ +/** @file + * IPRT - Convert iprt status codes to errno. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include + + +RTDECL(int) RTErrConvertToErrno(int iErr) +{ + /* very fast check for no error. */ + if (RT_SUCCESS(iErr)) + return 0; + + /* + * Process error codes. + * + * (Use a switch and not a table since the numbers vary among compilers + * and OSes. So we let the compiler switch optimizer handle speed issues.) + * + * This switch is arranged like the Linux i386 errno.h! It also mirrors the + * conversions performed by RTErrConvertFromErrno with a few extra case since + * there are far more IPRT status codes than Unix ones. + */ + switch (iErr) + { +#ifdef EPERM + case VERR_ACCESS_DENIED: return EPERM; +#endif +#ifdef ENOENT + case VERR_FILE_NOT_FOUND: return ENOENT; +#endif +#ifdef ESRCH + case VERR_PROCESS_NOT_FOUND: return ESRCH; +#endif +#ifdef EINTR + case VERR_INTERRUPTED: return EINTR; +#endif +#ifdef EIO + case VERR_DEV_IO_ERROR: return EIO; +#endif +#ifdef ENXIO + //case VERR_DEV_IO_ERROR: return ENXIO; +#endif +#ifdef E2BIG + case VERR_TOO_MUCH_DATA: return E2BIG; +#endif +#ifdef ENOEXEC + case VERR_BAD_EXE_FORMAT: return ENOEXEC; +#endif +#ifdef EBADF + case VERR_INVALID_HANDLE: return EBADF; +#endif +#ifdef ECHILD + //case VERR_PROCESS_NOT_FOUND: return ECHILD; +#endif +#ifdef EAGAIN + case VERR_TRY_AGAIN: return EAGAIN; +#endif +#ifdef ENOMEM + case VERR_NO_MEMORY: return ENOMEM; +#endif +#ifdef EACCES + //case VERR_ACCESS_DENIED: return EACCES; +#endif +#ifdef EFAULT + case VERR_INVALID_POINTER: return EFAULT; +#endif +#ifdef ENOTBLK + //case ENOTBLK: return VERR_; +#endif +#ifdef EBUSY + case VERR_RESOURCE_BUSY: return EBUSY; +#endif +#ifdef EEXIST + case VERR_ALREADY_EXISTS: return EEXIST; +#endif +#ifdef EXDEV + case VERR_NOT_SAME_DEVICE: return EXDEV; +#endif +#ifdef ENODEV + //case VERR_NOT_SUPPORTED: return ENODEV; +#endif +#ifdef ENOTDIR + case VERR_NOT_A_DIRECTORY: + case VERR_PATH_NOT_FOUND: return ENOTDIR; +#endif +#ifdef EISDIR + case VERR_IS_A_DIRECTORY: return EISDIR; +#endif +#ifdef EINVAL + case VERR_INVALID_PARAMETER: return EINVAL; +#endif +#ifdef ENFILE + case VERR_TOO_MANY_OPEN_FILES: return ENFILE; +#endif +#ifdef EMFILE + //case VERR_TOO_MANY_OPEN_FILES: return EMFILE; +#endif +#ifdef ENOTTY + case VERR_INVALID_FUNCTION: return ENOTTY; +#endif +#ifdef ETXTBSY + case VERR_SHARING_VIOLATION: return ETXTBSY; +#endif +#ifdef EFBIG + case VERR_FILE_TOO_BIG: return EFBIG; +#endif +#ifdef ENOSPC + case VERR_DISK_FULL: return ENOSPC; +#endif +#ifdef ESPIPE + case VERR_SEEK_ON_DEVICE: return ESPIPE; +#endif +#ifdef EROFS + case VERR_WRITE_PROTECT: return EROFS; +#endif +#ifdef EMLINK + //case EMLINK: +#endif +#ifdef EPIPE + case VERR_BROKEN_PIPE: return EPIPE; +#endif +#ifdef EDOM + //case VERR_INVALID_PARAMETER: return EDOM; +#endif +#ifdef ERANGE + //case VERR_INVALID_PARAMETER: return ERANGE; +#endif +#ifdef EDEADLK + case VERR_DEADLOCK: return EDEADLK; +#endif +#ifdef ENAMETOOLONG + case VERR_FILENAME_TOO_LONG: return ENAMETOOLONG; +#endif +#ifdef ENOLCK + case VERR_FILE_LOCK_FAILED: return ENOLCK; +#endif +#ifdef ENOSYS + case VERR_NOT_IMPLEMENTED: + case VERR_NOT_SUPPORTED: return ENOSYS; +#endif +#ifdef ENOTEMPTY + case VERR_DIR_NOT_EMPTY: return ENOTEMPTY; +#endif +#ifdef ELOOP + case VERR_TOO_MANY_SYMLINKS: return ELOOP; +#endif + //41?? +#ifdef ENOMSG + //case ENOMSG 42 /* No message of desired type */ +#endif +#ifdef EIDRM + //case EIDRM 43 /* Identifier removed */ +#endif +#ifdef ECHRNG + //case ECHRNG 44 /* Channel number out of range */ +#endif +#ifdef EL2NSYNC + //case EL2NSYNC 45 /* Level 2 not synchronized */ +#endif +#ifdef EL3HLT + //case EL3HLT 46 /* Level 3 halted */ +#endif +#ifdef EL3RST + //case EL3RST 47 /* Level 3 reset */ +#endif +#ifdef ELNRNG + //case ELNRNG 48 /* Link number out of range */ +#endif +#ifdef EUNATCH + //case EUNATCH 49 /* Protocol driver not attached */ +#endif +#ifdef ENOCSI + //case ENOCSI 50 /* No CSI structure available */ +#endif +#ifdef EL2HLT + //case EL2HLT 51 /* Level 2 halted */ +#endif +#ifdef EBADE + //case EBADE 52 /* Invalid exchange */ +#endif +#ifdef EBADR + //case EBADR 53 /* Invalid request descriptor */ +#endif +#ifdef EXFULL + //case EXFULL 54 /* Exchange full */ +#endif +#ifdef ENOANO + //case ENOANO 55 /* No anode */ +#endif +#ifdef EBADRQC + //case EBADRQC 56 /* Invalid request code */ +#endif +#ifdef EBADSLT + //case EBADSLT 57 /* Invalid slot */ +#endif + //case 58: +#ifdef EBFONT + //case EBFONT 59 /* Bad font file format */ +#endif +#ifdef ENOSTR + //case ENOSTR 60 /* Device not a stream */ +#endif +#ifdef ENODATA + case VERR_NO_DATA: return ENODATA; +#endif +#ifdef ETIME + //case ETIME 62 /* Timer expired */ +#endif +#ifdef ENOSR + //case ENOSR 63 /* Out of streams resources */ +#endif +#ifdef ENONET + case VERR_NET_NO_NETWORK: return ENONET; +#endif +#ifdef ENOPKG + //case ENOPKG 65 /* Package not installed */ +#endif +#ifdef EREMOTE + //case EREMOTE 66 /* Object is remote */ +#endif +#ifdef ENOLINK + //case ENOLINK 67 /* Link has been severed */ +#endif +#ifdef EADV + //case EADV 68 /* Advertise error */ +#endif +#ifdef ESRMNT + //case ESRMNT 69 /* Srmount error */ +#endif +#ifdef ECOMM + //case ECOMM 70 /* Communication error on send */ +#endif +#ifdef EPROTO + //case EPROTO 71 /* Protocol error */ +#endif +#ifdef EMULTIHOP + //case EMULTIHOP 72 /* Multihop attempted */ +#endif +#ifdef EDOTDOT + //case EDOTDOT 73 /* RFS specific error */ +#endif +#ifdef EBADMSG + //case EBADMSG 74 /* Not a data message */ +#endif +#ifdef EOVERFLOW + //case VERR_TOO_MUCH_DATA: return EOVERFLOW; +#endif +#ifdef ENOTUNIQ + case VERR_NET_NOT_UNIQUE_NAME: return ENOTUNIQ; +#endif +#ifdef EBADFD + //case VERR_INVALID_HANDLE: return EBADFD; +#endif +#ifdef EREMCHG + //case EREMCHG 78 /* Remote address changed */ +#endif +#ifdef ELIBACC + //case ELIBACC 79 /* Can not access a needed shared library */ +#endif +#ifdef ELIBBAD + //case ELIBBAD 80 /* Accessing a corrupted shared library */ +#endif +#ifdef ELIBSCN + //case ELIBSCN 81 /* .lib section in a.out corrupted */ +#endif +#ifdef ELIBMAX + //case ELIBMAX 82 /* Attempting to link in too many shared libraries */ +#endif +#ifdef ELIBEXEC + //case ELIBEXEC 83 /* Cannot exec a shared library directly */ +#endif +#ifdef EILSEQ + case VERR_NO_TRANSLATION: return EILSEQ; +#endif +#ifdef ERESTART + //case VERR_INTERRUPTED: return ERESTART; +#endif +#ifdef ESTRPIPE + //case ESTRPIPE 86 /* Streams pipe error */ +#endif +#ifdef EUSERS + //case EUSERS 87 /* Too many users */ +#endif +#ifdef ENOTSOCK + case VERR_NET_NOT_SOCKET: return ENOTSOCK; +#endif +#ifdef EDESTADDRREQ + case VERR_NET_DEST_ADDRESS_REQUIRED: return EDESTADDRREQ; +#endif +#ifdef EMSGSIZE + case VERR_NET_MSG_SIZE: return EMSGSIZE; +#endif +#ifdef EPROTOTYPE + case VERR_NET_PROTOCOL_TYPE: return EPROTOTYPE; +#endif +#ifdef ENOPROTOOPT + case VERR_NET_PROTOCOL_NOT_AVAILABLE: return ENOPROTOOPT; +#endif +#ifdef EPROTONOSUPPORT + case VERR_NET_PROTOCOL_NOT_SUPPORTED: return EPROTONOSUPPORT; +#endif +#ifdef ESOCKTNOSUPPORT + case VERR_NET_SOCKET_TYPE_NOT_SUPPORTED: return ESOCKTNOSUPPORT; +#endif +#ifdef EOPNOTSUPP + case VERR_NET_OPERATION_NOT_SUPPORTED: return EOPNOTSUPP; +#endif +#ifdef EPFNOSUPPORT + case VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED: return EPFNOSUPPORT; +#endif +#ifdef EAFNOSUPPORT + case VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED: return EAFNOSUPPORT; +#endif +#ifdef EADDRINUSE + case VERR_NET_ADDRESS_IN_USE: return EADDRINUSE; +#endif +#ifdef EADDRNOTAVAIL + case VERR_NET_ADDRESS_NOT_AVAILABLE: return EADDRNOTAVAIL; +#endif +#ifdef ENETDOWN + case VERR_NET_DOWN: return ENETDOWN; +#endif +#ifdef ENETUNREACH + case VERR_NET_UNREACHABLE: return ENETUNREACH; +#endif +#ifdef ENETRESET + case VERR_NET_CONNECTION_RESET: return ENETRESET; +#endif +#ifdef ECONNABORTED + case VERR_NET_CONNECTION_ABORTED: return ECONNABORTED; +#endif +#ifdef ECONNRESET + case VERR_NET_CONNECTION_RESET_BY_PEER: return ECONNRESET; +#endif +#ifdef ENOBUFS + case VERR_NET_NO_BUFFER_SPACE: return ENOBUFS; +#endif +#ifdef EISCONN + case VERR_NET_ALREADY_CONNECTED: return EISCONN; +#endif +#ifdef ENOTCONN + case VERR_NET_NOT_CONNECTED: return ENOTCONN; +#endif +#ifdef ESHUTDOWN + case VERR_NET_SHUTDOWN: return ESHUTDOWN; +#endif +#ifdef ETOOMANYREFS + case VERR_NET_TOO_MANY_REFERENCES: return ETOOMANYREFS; +#endif +#ifdef ETIMEDOUT + case VERR_TIMEOUT: return ETIMEDOUT; +#endif +#ifdef ECONNREFUSED + case VERR_NET_CONNECTION_REFUSED: return ECONNREFUSED; +#endif +#ifdef EHOSTDOWN + case VERR_NET_HOST_DOWN: return EHOSTDOWN; +#endif +#ifdef EHOSTUNREACH + case VERR_NET_HOST_UNREACHABLE: return EHOSTUNREACH; +#endif +#ifdef EALREADY + case VERR_NET_ALREADY_IN_PROGRESS: return EALREADY; +#endif +#ifdef EINPROGRESS + case VERR_NET_IN_PROGRESS: return EINPROGRESS; +#endif +#ifdef ESTALE + //case ESTALE 116 /* Stale NFS file handle */ +#endif +#ifdef EUCLEAN + //case EUCLEAN 117 /* Structure needs cleaning */ +#endif +#ifdef ENOTNAM + //case ENOTNAM 118 /* Not a XENIX named type file */ +#endif +#ifdef ENAVAIL + //case ENAVAIL 119 /* No XENIX semaphores available */ +#endif +#ifdef EISNAM + //case EISNAM 120 /* Is a named type file */ +#endif +#ifdef EREMOTEIO + //case EREMOTEIO 121 /* Remote I/O error */ +#endif +#ifdef EDQUOT + //case VERR_DISK_FULL: return EDQUOT; +#endif +#ifdef ENOMEDIUM + case VERR_MEDIA_NOT_PRESENT: return ENOMEDIUM; +#endif +#ifdef EMEDIUMTYPE + case VERR_MEDIA_NOT_RECOGNIZED: return EMEDIUMTYPE; +#endif + + /* Non-linux */ + +#ifdef EPROCLIM + case VERR_MAX_PROCS_REACHED: return EPROCLIM; +#endif +#ifdef EDOOFUS + case VERR_INTERNAL_ERROR: + case VERR_INTERNAL_ERROR_2: + case VERR_INTERNAL_ERROR_3: return EDOOFUS; +#endif + + default: + /* The idea here is that if you hit this, you will have to + translate the status code yourself. */ + AssertMsgFailed(("Unhandled error code %Rrc\n", iErr)); +#ifdef EPROTO + return EPROTO; +#else + return EINVAL; +#endif + } +} +RT_EXPORT_SYMBOL(RTErrConvertToErrno); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/log.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/log.c @@ -0,0 +1,3922 @@ +/* $Id: log.cpp $ */ +/** @file + * Runtime VBox - Logger. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#ifndef IN_RC +# include +# include +# include +# include +# include +#endif +#ifdef IN_RING3 +# include +# include +# include +# include +#endif +#include +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/** @def RTLOG_RINGBUF_DEFAULT_SIZE + * The default ring buffer size. */ +/** @def RTLOG_RINGBUF_MAX_SIZE + * The max ring buffer size. */ +/** @def RTLOG_RINGBUF_MIN_SIZE + * The min ring buffer size. */ +#ifdef IN_RING0 +# define RTLOG_RINGBUF_DEFAULT_SIZE _64K +# define RTLOG_RINGBUF_MAX_SIZE _4M +# define RTLOG_RINGBUF_MIN_SIZE _1K +#elif defined(IN_RING3) || defined(DOXYGEN_RUNNING) +# define RTLOG_RINGBUF_DEFAULT_SIZE _512K +# define RTLOG_RINGBUF_MAX_SIZE _1G +# define RTLOG_RINGBUF_MIN_SIZE _4K +#endif +/** The start of ring buffer eye catcher (16 bytes). */ +#define RTLOG_RINGBUF_EYE_CATCHER "START RING BUF\0" +AssertCompile(sizeof(RTLOG_RINGBUF_EYE_CATCHER) == 16); +/** The end of ring buffer eye catcher (16 bytes). This also ensures that the ring buffer + * forms are properly terminated C string (leading zero chars). */ +#define RTLOG_RINGBUF_EYE_CATCHER_END "\0\0\0END RING BUF" +AssertCompile(sizeof(RTLOG_RINGBUF_EYE_CATCHER_END) == 16); + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Arguments passed to the output function. + */ +typedef struct RTLOGOUTPUTPREFIXEDARGS +{ + /** The logger instance. */ + PRTLOGGER pLogger; + /** The flags. (used for prefixing.) */ + unsigned fFlags; + /** The group. (used for prefixing.) */ + unsigned iGroup; +} RTLOGOUTPUTPREFIXEDARGS, *PRTLOGOUTPUTPREFIXEDARGS; + +#ifndef IN_RC + +/** + * Internal logger data. + * + * @remarks Don't make casual changes to this structure. + */ +typedef struct RTLOGGERINTERNAL +{ + /** The structure revision (RTLOGGERINTERNAL_REV). */ + uint32_t uRevision; + /** The size of the internal logger structure. */ + uint32_t cbSelf; + + /** Spinning mutex semaphore. Can be NIL. */ + RTSEMSPINMUTEX hSpinMtx; + /** Pointer to the flush function. */ + PFNRTLOGFLUSH pfnFlush; + + /** Custom prefix callback. */ + PFNRTLOGPREFIX pfnPrefix; + /** Prefix callback argument. */ + void *pvPrefixUserArg; + /** This is set if a prefix is pending. */ + bool fPendingPrefix; + /** Alignment padding. */ + bool afPadding1[2]; + /** Set if fully created. Used to avoid confusing in a few functions used to + * parse logger settings from environment variables. */ + bool fCreated; + + /** The max number of groups that there is room for in afGroups and papszGroups. + * Used by RTLogCopyGroupAndFlags(). */ + uint32_t cMaxGroups; + /** Pointer to the group name array. + * (The data is readonly and provided by the user.) */ + const char * const *papszGroups; + + /** The number of log entries per group. NULL if + * RTLOGFLAGS_RESTRICT_GROUPS is not specified. */ + uint32_t *pacEntriesPerGroup; + /** The max number of entries per group. */ + uint32_t cMaxEntriesPerGroup; + + /** @name Ring buffer logging + * The ring buffer records the last cbRingBuf - 1 of log output. The + * other configured log destinations are not touched until someone calls + * RTLogFlush(), when the ring buffer content is written to them all. + * + * The aim here is a fast logging destination, that avoids wasting storage + * space saving disk space when dealing with huge log volumes where the + * interesting bits usually are found near the end of the log. This is + * typically the case for scenarios that crashes or hits assertions. + * + * RTLogFlush() is called implicitly when hitting an assertion. While on a + * crash the most debuggers are able to make calls these days, it's usually + * possible to view the ring buffer memory. + * + * @{ */ + /** Ring buffer size (including both eye catchers). */ + uint32_t cbRingBuf; + /** Number of bytes passing thru the ring buffer since last RTLogFlush call. + * (This is used to avoid writing out the same bytes twice.) */ + uint64_t volatile cbRingBufUnflushed; + /** Ring buffer pointer (points at RTLOG_RINGBUF_EYE_CATCHER). */ + char *pszRingBuf; + /** Current ring buffer position (where to write the next char). */ + char * volatile pchRingBufCur; + /** @} */ + +# ifdef IN_RING3 /* Note! Must be at the end! */ + /** @name File logging bits for the logger. + * @{ */ + /** Pointer to the function called when starting logging, and when + * ending or starting a new log file as part of history rotation. + * This can be NULL. */ + PFNRTLOGPHASE pfnPhase; + + /** Handle to log file (if open). */ + RTFILE hFile; + /** Log file history settings: maximum amount of data to put in a file. */ + uint64_t cbHistoryFileMax; + /** Log file history settings: current amount of data in a file. */ + uint64_t cbHistoryFileWritten; + /** Log file history settings: maximum time to use a file (in seconds). */ + uint32_t cSecsHistoryTimeSlot; + /** Log file history settings: in what time slot was the file created. */ + uint32_t uHistoryTimeSlotStart; + /** Log file history settings: number of older files to keep. + * 0 means no history. */ + uint32_t cHistory; + /** Pointer to filename. */ + char szFilename[RTPATH_MAX]; + /** @} */ +# endif /* IN_RING3 */ +} RTLOGGERINTERNAL; + +/** The revision of the internal logger structure. */ +# define RTLOGGERINTERNAL_REV UINT32_C(10) + +# ifdef IN_RING3 +/** The size of the RTLOGGERINTERNAL structure in ring-0. */ +# define RTLOGGERINTERNAL_R0_SIZE RT_OFFSETOF(RTLOGGERINTERNAL, pfnPhase) +AssertCompileMemberAlignment(RTLOGGERINTERNAL, hFile, sizeof(void *)); +AssertCompileMemberAlignment(RTLOGGERINTERNAL, cbHistoryFileMax, sizeof(uint64_t)); +# endif +AssertCompileMemberAlignment(RTLOGGERINTERNAL, cbRingBufUnflushed, sizeof(uint64_t)); + +#endif /* !IN_RC */ + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +#ifndef IN_RC +static unsigned rtlogGroupFlags(const char *psz); +#endif +#ifdef IN_RING0 +static void rtR0LogLoggerExFallback(uint32_t fDestFlags, uint32_t fFlags, PRTLOGGERINTERNAL pInt, + const char *pszFormat, va_list va); +#endif +#ifdef IN_RING3 +static int rtlogFileOpen(PRTLOGGER pLogger, char *pszErrorMsg, size_t cchErrorMsg); +static void rtlogRotate(PRTLOGGER pLogger, uint32_t uTimeSlot, bool fFirst); +#endif +#ifndef IN_RC +static void rtLogRingBufFlush(PRTLOGGER pLogger); +#endif +static void rtlogFlush(PRTLOGGER pLogger); +static DECLCALLBACK(size_t) rtLogOutput(void *pv, const char *pachChars, size_t cbChars); +static DECLCALLBACK(size_t) rtLogOutputPrefixed(void *pv, const char *pachChars, size_t cbChars); +static void rtlogLoggerExVLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args); +#ifndef IN_RC +static void rtlogLoggerExFLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#ifdef IN_RC +/** Default logger instance. Make it weak because our RC module loader does not + * necessarily resolve this symbol and the compiler _must_ check if this is + * the case or not. That doesn't work for Darwin (``incompatible feature used: + * .weak_reference (must specify "-dynamic" to be used'') */ +# ifdef RT_OS_DARWIN +extern "C" DECLIMPORT(RTLOGGERRC) g_Logger; +# else +extern "C" DECLWEAK(DECLIMPORT(RTLOGGERRC)) g_Logger; +# endif +#else /* !IN_RC */ +/** Default logger instance. */ +static PRTLOGGER g_pLogger; +#endif /* !IN_RC */ +#ifdef IN_RING3 +/** The RTThreadGetWriteLockCount() change caused by the logger mutex semaphore. */ +static uint32_t volatile g_cLoggerLockCount; +#endif + +#ifdef IN_RING0 +/** Number of per-thread loggers. */ +static int32_t volatile g_cPerThreadLoggers; +/** Per-thread loggers. + * This is just a quick TLS hack suitable for debug logging only. + * If we run out of entries, just unload and reload the driver. */ +static struct RTLOGGERPERTHREAD +{ + /** The thread. */ + RTNATIVETHREAD volatile NativeThread; + /** The (process / session) key. */ + uintptr_t volatile uKey; + /** The logger instance.*/ + PRTLOGGER volatile pLogger; +} g_aPerThreadLoggers[8] = +{ + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0} +}; +#endif /* IN_RING0 */ + +/** + * Logger flags instructions. + */ +static struct +{ + const char *pszInstr; /**< The name */ + size_t cchInstr; /**< The size of the name. */ + uint32_t fFlag; /**< The flag value. */ + bool fInverted; /**< Inverse meaning? */ +} const g_aLogFlags[] = +{ + { "disabled", sizeof("disabled" ) - 1, RTLOGFLAGS_DISABLED, false }, + { "enabled", sizeof("enabled" ) - 1, RTLOGFLAGS_DISABLED, true }, + { "buffered", sizeof("buffered" ) - 1, RTLOGFLAGS_BUFFERED, false }, + { "unbuffered", sizeof("unbuffered" ) - 1, RTLOGFLAGS_BUFFERED, true }, + { "usecrlf", sizeof("usecrlf" ) - 1, RTLOGFLAGS_USECRLF, false }, + { "uself", sizeof("uself" ) - 1, RTLOGFLAGS_USECRLF, true }, + { "append", sizeof("append" ) - 1, RTLOGFLAGS_APPEND, false }, + { "overwrite", sizeof("overwrite" ) - 1, RTLOGFLAGS_APPEND, true }, + { "rel", sizeof("rel" ) - 1, RTLOGFLAGS_REL_TS, false }, + { "abs", sizeof("abs" ) - 1, RTLOGFLAGS_REL_TS, true }, + { "dec", sizeof("dec" ) - 1, RTLOGFLAGS_DECIMAL_TS, false }, + { "hex", sizeof("hex" ) - 1, RTLOGFLAGS_DECIMAL_TS, true }, + { "writethru", sizeof("writethru" ) - 1, RTLOGFLAGS_WRITE_THROUGH, false }, + { "writethrough", sizeof("writethrough") - 1, RTLOGFLAGS_WRITE_THROUGH, false }, + { "flush", sizeof("flush" ) - 1, RTLOGFLAGS_FLUSH, false }, + { "lockcnts", sizeof("lockcnts" ) - 1, RTLOGFLAGS_PREFIX_LOCK_COUNTS, false }, + { "cpuid", sizeof("cpuid" ) - 1, RTLOGFLAGS_PREFIX_CPUID, false }, + { "pid", sizeof("pid" ) - 1, RTLOGFLAGS_PREFIX_PID, false }, + { "flagno", sizeof("flagno" ) - 1, RTLOGFLAGS_PREFIX_FLAG_NO, false }, + { "flag", sizeof("flag" ) - 1, RTLOGFLAGS_PREFIX_FLAG, false }, + { "groupno", sizeof("groupno" ) - 1, RTLOGFLAGS_PREFIX_GROUP_NO, false }, + { "group", sizeof("group" ) - 1, RTLOGFLAGS_PREFIX_GROUP, false }, + { "tid", sizeof("tid" ) - 1, RTLOGFLAGS_PREFIX_TID, false }, + { "thread", sizeof("thread" ) - 1, RTLOGFLAGS_PREFIX_THREAD, false }, + { "custom", sizeof("custom" ) - 1, RTLOGFLAGS_PREFIX_CUSTOM, false }, + { "timeprog", sizeof("timeprog" ) - 1, RTLOGFLAGS_PREFIX_TIME_PROG, false }, + { "time", sizeof("time" ) - 1, RTLOGFLAGS_PREFIX_TIME, false }, + { "msprog", sizeof("msprog" ) - 1, RTLOGFLAGS_PREFIX_MS_PROG, false }, + { "tsc", sizeof("tsc" ) - 1, RTLOGFLAGS_PREFIX_TSC, false }, /* before ts! */ + { "ts", sizeof("ts" ) - 1, RTLOGFLAGS_PREFIX_TS, false }, + /* We intentionally omit RTLOGFLAGS_RESTRICT_GROUPS. */ +}; + +/** + * Logger destination instructions. + */ +static struct +{ + const char *pszInstr; /**< The name. */ + size_t cchInstr; /**< The size of the name. */ + uint32_t fFlag; /**< The corresponding destination flag. */ +} const s_aLogDst[] = +{ + { RT_STR_TUPLE("file"), RTLOGDEST_FILE }, /* Must be 1st! */ + { RT_STR_TUPLE("dir"), RTLOGDEST_FILE }, /* Must be 2nd! */ + { RT_STR_TUPLE("history"), 0 }, /* Must be 3rd! */ + { RT_STR_TUPLE("histsize"), 0 }, /* Must be 4th! */ + { RT_STR_TUPLE("histtime"), 0 }, /* Must be 5th! */ + { RT_STR_TUPLE("ringbuf"), RTLOGDEST_RINGBUF }, /* Must be 6th! */ + { RT_STR_TUPLE("stdout"), RTLOGDEST_STDOUT }, + { RT_STR_TUPLE("stderr"), RTLOGDEST_STDERR }, + { RT_STR_TUPLE("debugger"), RTLOGDEST_DEBUGGER }, + { RT_STR_TUPLE("com"), RTLOGDEST_COM }, + { RT_STR_TUPLE("user"), RTLOGDEST_USER }, +}; + +/** Log rotation backoff table - millisecond sleep intervals. + * Important on Windows host, especially for VBoxSVC release logging. Only a + * medium term solution, until a proper fix for log file handling is available. + * 10 seconds total. + */ +static const uint32_t g_acMsLogBackoff[] = +{ 10, 10, 10, 20, 50, 100, 200, 200, 200, 200, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }; + + +/** + * Locks the logger instance. + * + * @returns See RTSemSpinMutexRequest(). + * @param pLogger The logger instance. + */ +DECLINLINE(int) rtlogLock(PRTLOGGER pLogger) +{ +#ifndef IN_RC + PRTLOGGERINTERNAL pInt = pLogger->pInt; + AssertMsgReturn(pInt->uRevision == RTLOGGERINTERNAL_REV, ("%#x != %#x\n", pInt->uRevision, RTLOGGERINTERNAL_REV), + VERR_LOG_REVISION_MISMATCH); + AssertMsgReturn(pInt->cbSelf == sizeof(*pInt), ("%#x != %#x\n", pInt->cbSelf, sizeof(*pInt)), + VERR_LOG_REVISION_MISMATCH); + if (pInt->hSpinMtx != NIL_RTSEMSPINMUTEX) + { + int rc = RTSemSpinMutexRequest(pInt->hSpinMtx); + if (RT_FAILURE(rc)) + return rc; + } +#else + NOREF(pLogger); +#endif + return VINF_SUCCESS; +} + + +/** + * Unlocks the logger instance. + * @param pLogger The logger instance. + */ +DECLINLINE(void) rtlogUnlock(PRTLOGGER pLogger) +{ +#ifndef IN_RC + if (pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX) + RTSemSpinMutexRelease(pLogger->pInt->hSpinMtx); +#else + NOREF(pLogger); +#endif + return; +} + +#ifndef IN_RC +# ifdef IN_RING3 + +# ifdef SOME_UNUSED_FUNCTION +/** + * Logging to file, output callback. + * + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +static DECLCALLBACK(size_t) rtlogPhaseWrite(void *pvArg, const char *pachChars, size_t cbChars) +{ + PRTLOGGER pLogger = (PRTLOGGER)pvArg; + RTFileWrite(pLogger->pInt->hFile, pachChars, cbChars, NULL); + return cbChars; +} + + +/** + * Callback to format VBox formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +static DECLCALLBACK(size_t) rtlogPhaseFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize) +{ + char ch = *(*ppszFormat)++; + + AssertMsgFailed(("Invalid logger phase format type '%%%c%.10s'!\n", ch, *ppszFormat)); NOREF(ch); + + return 0; +} + +# endif /* SOME_UNUSED_FUNCTION */ + + +/** + * Log phase callback function, assumes the lock is already held + * + * @param pLogger The logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +static DECLCALLBACK(void) rtlogPhaseMsgLocked(PRTLOGGER pLogger, const char *pszFormat, ...) +{ + va_list args; + AssertPtrReturnVoid(pLogger); + AssertPtrReturnVoid(pLogger->pInt); + Assert(pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX); + + va_start(args, pszFormat); + rtlogLoggerExVLocked(pLogger, 0, ~0, pszFormat, args); + va_end(args); +} + + +/** + * Log phase callback function, assumes the lock is not held. + * + * @param pLogger The logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +static DECLCALLBACK(void) rtlogPhaseMsgNormal(PRTLOGGER pLogger, const char *pszFormat, ...) +{ + va_list args; + AssertPtrReturnVoid(pLogger); + AssertPtrReturnVoid(pLogger->pInt); + Assert(pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX); + + va_start(args, pszFormat); + RTLogLoggerExV(pLogger, 0, ~0, pszFormat, args); + va_end(args); +} + +# endif /* IN_RING3 */ + +/** + * Adjusts the ring buffer. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param cbNewSize The new ring buffer size (0 == default). + * @param fForce Whether to do this even if the logger instance hasn't + * really been fully created yet (i.e. during RTLogCreate). + */ +static int rtLogRingBufAdjust(PRTLOGGER pLogger, uint32_t cbNewSize, bool fForce) +{ + /* + * If this is early logger init, don't do anything. + */ + if (!pLogger->pInt->fCreated && !fForce) + return VINF_SUCCESS; + + /* + * Lock the logger and make the necessary changes. + */ + int rc = rtlogLock(pLogger); + if (RT_SUCCESS(rc)) + { + if (cbNewSize == 0) + cbNewSize = RTLOG_RINGBUF_DEFAULT_SIZE; + if ( pLogger->pInt->cbRingBuf != cbNewSize + || !pLogger->pInt->pchRingBufCur) + { + uintptr_t offOld = pLogger->pInt->pchRingBufCur - pLogger->pInt->pszRingBuf; + if (offOld < sizeof(RTLOG_RINGBUF_EYE_CATCHER)) + offOld = sizeof(RTLOG_RINGBUF_EYE_CATCHER); + else if (offOld >= cbNewSize) + { + memmove(pLogger->pInt->pszRingBuf, &pLogger->pInt->pszRingBuf[offOld - cbNewSize], cbNewSize); + offOld = sizeof(RTLOG_RINGBUF_EYE_CATCHER); + } + + void *pvNew = RTMemRealloc(pLogger->pInt->pchRingBufCur, cbNewSize); + if (pvNew) + { + pLogger->pInt->pszRingBuf = (char *)pvNew; + pLogger->pInt->pchRingBufCur = (char *)pvNew + offOld; + pLogger->pInt->cbRingBuf = cbNewSize; + memcpy(pvNew, RTLOG_RINGBUF_EYE_CATCHER, sizeof(RTLOG_RINGBUF_EYE_CATCHER)); + memcpy((char *)pvNew + cbNewSize - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END), + RTLOG_RINGBUF_EYE_CATCHER_END, sizeof(RTLOG_RINGBUF_EYE_CATCHER_END)); + rc = VINF_SUCCESS; + } + else + rc = VERR_NO_MEMORY; + } + rtlogUnlock(pLogger); + } + + return rc; +} + + +/** + * Writes text to the ring buffer. + * + * @param pInt The internal logger data structure. + * @param pachText The text to write. + * @param cchText The number of chars (bytes) to write. + */ +static void rtLogRingBufWrite(PRTLOGGERINTERNAL pInt, const char *pachText, size_t cchText) +{ + /* + * Get the ring buffer data, adjusting it to only describe the writable + * part of the buffer. + */ + char * const pchStart = &pInt->pszRingBuf[sizeof(RTLOG_RINGBUF_EYE_CATCHER)]; + size_t const cchBuf = pInt->cbRingBuf - sizeof(RTLOG_RINGBUF_EYE_CATCHER) - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END); + char *pchCur = pInt->pchRingBufCur; + size_t cchLeft = pchCur - pchStart; + if (RT_LIKELY(cchLeft < cchBuf)) + cchLeft = cchBuf - cchLeft; + else + { + /* May happen in ring-0 where a thread or two went ahead without getting the lock. */ + pchCur = pchStart; + cchLeft = cchBuf; + } + Assert(cchBuf < pInt->cbRingBuf); + + if (cchText < cchLeft) + { + /* + * The text fits in the remaining space. + */ + memcpy(pchCur, pachText, cchText); + pchCur[cchText] = '\0'; + pInt->pchRingBufCur = &pchCur[cchText]; + pInt->cbRingBufUnflushed += cchText; + } + else + { + /* + * The text wraps around. Taking the simple but inefficient approach + * to input texts that are longer than the ring buffer since that + * is unlikely to the be a frequent case. + */ + /* Fill to the end of the buffer. */ + memcpy(pchCur, pachText, cchLeft); + pachText += cchLeft; + cchText -= cchLeft; + pInt->cbRingBufUnflushed += cchLeft; + pInt->pchRingBufCur = pchStart; + + /* Ring buffer overflows (the plainly inefficient bit). */ + while (cchText >= cchBuf) + { + memcpy(pchStart, pachText, cchBuf); + pachText += cchBuf; + cchText -= cchBuf; + pInt->cbRingBufUnflushed += cchBuf; + } + + /* The final bit, if any. */ + if (cchText > 0) + { + memcpy(pchStart, pachText, cchText); + pInt->cbRingBufUnflushed += cchText; + } + pchStart[cchText] = '\0'; + pInt->pchRingBufCur = &pchStart[cchText]; + } +} + + +/** + * Flushes the ring buffer to all the other log destinations. + * + * @param pLogger The logger instance which ring buffer should be flushed. + */ +static void rtLogRingBufFlush(PRTLOGGER pLogger) +{ + const char *pszPreamble; + size_t cchPreamble; + const char *pszFirst; + size_t cchFirst; + const char *pszSecond; + size_t cchSecond; + + /* + * Get the ring buffer data, adjusting it to only describe the writable + * part of the buffer. + */ + uint64_t cchUnflushed = pLogger->pInt->cbRingBufUnflushed; + char * const pszBuf = &pLogger->pInt->pszRingBuf[sizeof(RTLOG_RINGBUF_EYE_CATCHER)]; + size_t const cchBuf = pLogger->pInt->cbRingBuf - sizeof(RTLOG_RINGBUF_EYE_CATCHER) - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END); + size_t offCur = pLogger->pInt->pchRingBufCur - pszBuf; + size_t cchAfter; + if (RT_LIKELY(offCur < cchBuf)) + cchAfter = cchBuf - offCur; + else /* May happen in ring-0 where a thread or two went ahead without getting the lock. */ + { + offCur = 0; + cchAfter = cchBuf; + } + + pLogger->pInt->cbRingBufUnflushed = 0; + + /* + * Figure out whether there are one or two segments that needs writing, + * making the last segment is terminated. (The first is always + * terminated because of the eye-catcher at the end of the buffer.) + */ + if (cchUnflushed == 0) + return; + pszBuf[offCur] = '\0'; + if (cchUnflushed >= cchBuf) + { + pszFirst = &pszBuf[offCur + 1]; + cchFirst = cchAfter ? cchAfter - 1 : 0; + pszSecond = pszBuf; + cchSecond = offCur; + pszPreamble = "\n*FLUSH RING BUF*\n"; + cchPreamble = sizeof("\n*FLUSH RING BUF*\n") - 1; + } + else if ((size_t)cchUnflushed <= offCur) + { + cchFirst = (size_t)cchUnflushed; + pszFirst = &pszBuf[offCur - cchFirst]; + pszSecond = ""; + cchSecond = 0; + pszPreamble = ""; + cchPreamble = 0; + } + else + { + cchFirst = (size_t)cchUnflushed - offCur; + pszFirst = &pszBuf[cchBuf - cchFirst]; + pszSecond = pszBuf; + cchSecond = offCur; + pszPreamble = ""; + cchPreamble = 0; + } + + /* + * Write the ring buffer to all other destiations. + */ + if (pLogger->fDestFlags & RTLOGDEST_USER) + { + if (cchPreamble) + RTLogWriteUser(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteUser(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteUser(pszSecond, cchSecond); + } + + if (pLogger->fDestFlags & RTLOGDEST_DEBUGGER) + { + if (cchPreamble) + RTLogWriteDebugger(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteDebugger(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteDebugger(pszSecond, cchSecond); + } + +# ifdef IN_RING3 + if (pLogger->fDestFlags & RTLOGDEST_FILE) + { + if (pLogger->pInt->hFile != NIL_RTFILE) + { + if (cchPreamble) + RTFileWrite(pLogger->pInt->hFile, pszPreamble, cchPreamble, NULL); + if (cchFirst) + RTFileWrite(pLogger->pInt->hFile, pszFirst, cchFirst, NULL); + if (cchSecond) + RTFileWrite(pLogger->pInt->hFile, pszSecond, cchSecond, NULL); + if (pLogger->fFlags & RTLOGFLAGS_FLUSH) + RTFileFlush(pLogger->pInt->hFile); + } + if (pLogger->pInt->cHistory) + pLogger->pInt->cbHistoryFileWritten += cchFirst + cchSecond; + } +# endif + + if (pLogger->fDestFlags & RTLOGDEST_STDOUT) + { + if (cchPreamble) + RTLogWriteStdOut(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteStdOut(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteStdOut(pszSecond, cchSecond); + } + + if (pLogger->fDestFlags & RTLOGDEST_STDERR) + { + if (cchPreamble) + RTLogWriteStdErr(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteStdErr(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteStdErr(pszSecond, cchSecond); + } + +# if defined(IN_RING0) && !defined(LOG_NO_COM) + if (pLogger->fDestFlags & RTLOGDEST_COM) + { + if (cchPreamble) + RTLogWriteCom(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteCom(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteCom(pszSecond, cchSecond); + } +# endif +} + + + + +RTDECL(int) RTLogCreateExV(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const *papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, va_list args) +{ + int rc; + size_t offInternal; + size_t cbLogger; + PRTLOGGER pLogger; + + /* + * Validate input. + */ + if ( (cGroups && !papszGroups) + || !VALID_PTR(ppLogger) ) + { + AssertMsgFailed(("Invalid parameters!\n")); + return VERR_INVALID_PARAMETER; + } + *ppLogger = NULL; + + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("unknown error")); + + AssertMsgReturn(cHistory < _1M, ("%#x", cHistory), VERR_OUT_OF_RANGE); + + /* + * Allocate a logger instance. + */ + offInternal = RT_OFFSETOF(RTLOGGER, afGroups[cGroups]); + offInternal = RT_ALIGN_Z(offInternal, sizeof(uint64_t)); + cbLogger = offInternal + sizeof(RTLOGGERINTERNAL); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cbLogger += cGroups * sizeof(uint32_t); + pLogger = (PRTLOGGER)RTMemAllocZVar(cbLogger); + if (pLogger) + { +# if defined(RT_ARCH_X86) && (!defined(LOG_USE_C99) || !defined(RT_WITHOUT_EXEC_ALLOC)) + uint8_t *pu8Code; +# endif + pLogger->u32Magic = RTLOGGER_MAGIC; + pLogger->cGroups = cGroups; + pLogger->fFlags = fFlags; + pLogger->fDestFlags = fDestFlags; + pLogger->pInt = (PRTLOGGERINTERNAL)((uintptr_t)pLogger + offInternal); + pLogger->pInt->uRevision = RTLOGGERINTERNAL_REV; + pLogger->pInt->cbSelf = sizeof(RTLOGGERINTERNAL); + pLogger->pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; + pLogger->pInt->pfnFlush = NULL; + pLogger->pInt->pfnPrefix = NULL; + pLogger->pInt->pvPrefixUserArg = NULL; + pLogger->pInt->afPadding1[0] = false; + pLogger->pInt->afPadding1[1] = false; + pLogger->pInt->fCreated = false; + pLogger->pInt->cMaxGroups = cGroups; + pLogger->pInt->papszGroups = papszGroups; + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + pLogger->pInt->pacEntriesPerGroup = (uint32_t *)(pLogger->pInt + 1); + else + pLogger->pInt->pacEntriesPerGroup = NULL; + pLogger->pInt->cMaxEntriesPerGroup = UINT32_MAX; +# ifdef IN_RING3 + pLogger->pInt->pfnPhase = pfnPhase; + pLogger->pInt->hFile = NIL_RTFILE; + pLogger->pInt->cHistory = cHistory; + if (cbHistoryFileMax == 0) + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + else + pLogger->pInt->cbHistoryFileMax = cbHistoryFileMax; + if (cSecsHistoryTimeSlot == 0) + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + else + pLogger->pInt->cSecsHistoryTimeSlot = cSecsHistoryTimeSlot; +# endif /* IN_RING3 */ + if (pszGroupSettings) + RTLogGroupSettings(pLogger, pszGroupSettings); + +# if defined(RT_ARCH_X86) && (!defined(LOG_USE_C99) || !defined(RT_WITHOUT_EXEC_ALLOC)) + /* + * Emit wrapper code. + */ + pu8Code = (uint8_t *)RTMemExecAlloc(64); + if (pu8Code) + { + pLogger->pfnLogger = *(PFNRTLOGGER*)&pu8Code; + *pu8Code++ = 0x68; /* push imm32 */ + *(void **)pu8Code = pLogger; + pu8Code += sizeof(void *); + *pu8Code++ = 0xe8; /* call rel32 */ + *(uint32_t *)pu8Code = (uintptr_t)RTLogLogger - ((uintptr_t)pu8Code + sizeof(uint32_t)); + pu8Code += sizeof(uint32_t); + *pu8Code++ = 0x8d; /* lea esp, [esp + 4] */ + *pu8Code++ = 0x64; + *pu8Code++ = 0x24; + *pu8Code++ = 0x04; + *pu8Code++ = 0xc3; /* ret near */ + AssertMsg((uintptr_t)pu8Code - (uintptr_t)pLogger->pfnLogger <= 64, + ("Wrapper assembly is too big! %d bytes\n", (uintptr_t)pu8Code - (uintptr_t)pLogger->pfnLogger)); + rc = VINF_SUCCESS; + } + else + { +# ifdef RT_OS_LINUX + if (pszErrorMsg) /* Most probably SELinux causing trouble since the larger RTMemAlloc succeeded. */ + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("mmap(PROT_WRITE | PROT_EXEC) failed -- SELinux?")); +# endif + rc = VERR_NO_MEMORY; + } + if (RT_SUCCESS(rc)) +# endif /* X86 wrapper code*/ + { +# ifdef IN_RING3 /* files and env.vars. are only accessible when in R3 at the present time. */ + /* + * Format the filename. + */ + if (pszFilenameFmt) + { + /** @todo validate the length, fail on overflow. */ + RTStrPrintfV(pLogger->pInt->szFilename, sizeof(pLogger->pInt->szFilename), pszFilenameFmt, args); + pLogger->fDestFlags |= RTLOGDEST_FILE; + } + + /* + * Parse the environment variables. + */ + if (pszEnvVarBase) + { + /* make temp copy of environment variable base. */ + size_t cchEnvVarBase = strlen(pszEnvVarBase); + char *pszEnvVar = (char *)alloca(cchEnvVarBase + 16); + memcpy(pszEnvVar, pszEnvVarBase, cchEnvVarBase); + + /* + * Destination. + */ + strcpy(pszEnvVar + cchEnvVarBase, "_DEST"); + const char *pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogDestinations(pLogger, pszValue); + + /* + * The flags. + */ + strcpy(pszEnvVar + cchEnvVarBase, "_FLAGS"); + pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogFlags(pLogger, pszValue); + + /* + * The group settings. + */ + pszEnvVar[cchEnvVarBase] = '\0'; + pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogGroupSettings(pLogger, pszValue); + } +# endif /* IN_RING3 */ + + /* + * Open the destination(s). + */ + rc = VINF_SUCCESS; +# ifdef IN_RING3 + if (pLogger->fDestFlags & RTLOGDEST_FILE) + { + if (pLogger->fFlags & RTLOGFLAGS_APPEND) + { + rc = rtlogFileOpen(pLogger, pszErrorMsg, cchErrorMsg); + + /* Rotate in case of appending to a too big log file, + otherwise this simply doesn't do anything. */ + rtlogRotate(pLogger, 0, true /* fFirst */); + } + else + { + /* Force rotation if it is configured. */ + pLogger->pInt->cbHistoryFileWritten = UINT64_MAX; + rtlogRotate(pLogger, 0, true /* fFirst */); + + /* If the file is not open then rotation is not set up. */ + if (pLogger->pInt->hFile == NIL_RTFILE) + { + pLogger->pInt->cbHistoryFileWritten = 0; + rc = rtlogFileOpen(pLogger, pszErrorMsg, cchErrorMsg); + } + } + } +# endif /* IN_RING3 */ + + if ((pLogger->fDestFlags & RTLOGDEST_RINGBUF) && RT_SUCCESS(rc)) + rc = rtLogRingBufAdjust(pLogger, pLogger->pInt->cbRingBuf, true /*fForce*/); + + /* + * Create mutex and check how much it counts when entering the lock + * so that we can report the values for RTLOGFLAGS_PREFIX_LOCK_COUNTS. + */ + if (RT_SUCCESS(rc)) + { + rc = RTSemSpinMutexCreate(&pLogger->pInt->hSpinMtx, RTSEMSPINMUTEX_FLAGS_IRQ_SAFE); + if (RT_SUCCESS(rc)) + { +# ifdef IN_RING3 /** @todo do counters in ring-0 too? */ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + int32_t c = RTLockValidatorWriteLockGetCount(Thread); + RTSemSpinMutexRequest(pLogger->pInt->hSpinMtx); + c = RTLockValidatorWriteLockGetCount(Thread) - c; + RTSemSpinMutexRelease(pLogger->pInt->hSpinMtx); + ASMAtomicWriteU32(&g_cLoggerLockCount, c); + } + + /* Use the callback to generate some initial log contents. */ + Assert(VALID_PTR(pLogger->pInt->pfnPhase) || pLogger->pInt->pfnPhase == NULL); + if (pLogger->pInt->pfnPhase) + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_BEGIN, rtlogPhaseMsgNormal); +# endif + pLogger->pInt->fCreated = true; + *ppLogger = pLogger; + return VINF_SUCCESS; + } + + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("failed to create semaphore")); + } +# ifdef IN_RING3 + RTFileClose(pLogger->pInt->hFile); +# endif +# if defined(LOG_USE_C99) && defined(RT_WITHOUT_EXEC_ALLOC) + RTMemFree(*(void **)&pLogger->pfnLogger); +# else + RTMemExecFree(*(void **)&pLogger->pfnLogger, 64); +# endif + } + RTMemFree(pLogger); + } + else + rc = VERR_NO_MEMORY; + + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreateExV); + + +RTDECL(int) RTLogCreate(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, const char *pszFilenameFmt, ...) +{ + va_list args; + int rc; + + va_start(args, pszFilenameFmt); + rc = RTLogCreateExV(ppLogger, fFlags, pszGroupSettings, pszEnvVarBase, cGroups, papszGroups, + fDestFlags, NULL /*pfnPhase*/, 0 /*cHistory*/, 0 /*cbHistoryFileMax*/, 0 /*cSecsHistoryTimeSlot*/, + NULL /*pszErrorMsg*/, 0 /*cchErrorMsg*/, pszFilenameFmt, args); + va_end(args); + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreate); + + +RTDECL(int) RTLogCreateEx(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, ...) +{ + va_list args; + int rc; + + va_start(args, pszFilenameFmt); + rc = RTLogCreateExV(ppLogger, fFlags, pszGroupSettings, pszEnvVarBase, cGroups, papszGroups, + fDestFlags, pfnPhase, cHistory, cbHistoryFileMax, cSecsHistoryTimeSlot, + pszErrorMsg, cchErrorMsg, pszFilenameFmt, args); + va_end(args); + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreateEx); + + +/** + * Destroys a logger instance. + * + * The instance is flushed and all output destinations closed (where applicable). + * + * @returns iprt status code. + * @param pLogger The logger instance which close destroyed. NULL is fine. + */ +RTDECL(int) RTLogDestroy(PRTLOGGER pLogger) +{ + int rc; + uint32_t iGroup; + RTSEMSPINMUTEX hSpinMtx; + + /* + * Validate input. + */ + if (!pLogger) + return VINF_SUCCESS; + AssertPtrReturn(pLogger, VERR_INVALID_POINTER); + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + AssertPtrReturn(pLogger->pInt, VERR_INVALID_POINTER); + + /* + * Acquire logger instance sem and disable all logging. (paranoia) + */ + rc = rtlogLock(pLogger); + AssertMsgRCReturn(rc, ("%Rrc\n", rc), rc); + + pLogger->fFlags |= RTLOGFLAGS_DISABLED; + iGroup = pLogger->cGroups; + while (iGroup-- > 0) + pLogger->afGroups[iGroup] = 0; + + /* + * Flush it. + */ + rtlogFlush(pLogger); + +# ifdef IN_RING3 + /* + * Add end of logging message. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_FILE) + && pLogger->pInt->hFile != NIL_RTFILE) + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_END, rtlogPhaseMsgLocked); + + /* + * Close output stuffs. + */ + if (pLogger->pInt->hFile != NIL_RTFILE) + { + int rc2 = RTFileClose(pLogger->pInt->hFile); + AssertRC(rc2); + if (RT_FAILURE(rc2) && RT_SUCCESS(rc)) + rc = rc2; + pLogger->pInt->hFile = NIL_RTFILE; + } +# endif + + /* + * Free the mutex, the wrapper and the instance memory. + */ + hSpinMtx = pLogger->pInt->hSpinMtx; + pLogger->pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; + if (hSpinMtx != NIL_RTSEMSPINMUTEX) + { + int rc2; + RTSemSpinMutexRelease(hSpinMtx); + rc2 = RTSemSpinMutexDestroy(hSpinMtx); + AssertRC(rc2); + if (RT_FAILURE(rc2) && RT_SUCCESS(rc)) + rc = rc2; + } + + if (pLogger->pfnLogger) + { +# if defined(LOG_USE_C99) && defined(RT_WITHOUT_EXEC_ALLOC) + RTMemFree(*(void **)&pLogger->pfnLogger); +# else + RTMemExecFree(*(void **)&pLogger->pfnLogger, 64); +# endif + pLogger->pfnLogger = NULL; + } + RTMemFree(pLogger); + + return rc; +} +RT_EXPORT_SYMBOL(RTLogDestroy); + + +/** + * Create a logger instance clone for RC usage. + * + * @returns iprt status code. + * + * @param pLogger The logger instance to be cloned. + * @param pLoggerRC Where to create the RC logger instance. + * @param cbLoggerRC Amount of memory allocated to for the RC logger + * instance clone. + * @param pfnLoggerRCPtr Pointer to logger wrapper function for this + * instance (RC Ptr). + * @param pfnFlushRCPtr Pointer to flush function (RC Ptr). + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + */ +RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC, + RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, uint32_t fFlags) +{ + /* + * Validate input. + */ + if ( !pLoggerRC + || !pfnFlushRCPtr + || !pfnLoggerRCPtr) + { + AssertMsgFailed(("Invalid parameters!\n")); + return VERR_INVALID_PARAMETER; + } + if (cbLoggerRC < sizeof(*pLoggerRC)) + { + AssertMsgFailed(("%d min=%d\n", cbLoggerRC, sizeof(*pLoggerRC))); + return VERR_INVALID_PARAMETER; + } + + /* + * Initialize GC instance. + */ + pLoggerRC->offScratch = 0; + pLoggerRC->fPendingPrefix = false; + pLoggerRC->pfnLogger = pfnLoggerRCPtr; + pLoggerRC->pfnFlush = pfnFlushRCPtr; + pLoggerRC->u32Magic = RTLOGGERRC_MAGIC; + pLoggerRC->fFlags = fFlags | RTLOGFLAGS_DISABLED; + pLoggerRC->cGroups = 1; + pLoggerRC->afGroups[0] = 0; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Check if there's enough space for the groups. + */ + if (cbLoggerRC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups])) + { + AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerRC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups)); + return VERR_BUFFER_OVERFLOW; + } + memcpy(&pLoggerRC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerRC->afGroups[0])); + pLoggerRC->cGroups = pLogger->cGroups; + + /* + * Copy bits from the HC instance. + */ + pLoggerRC->fPendingPrefix = pLogger->pInt->fPendingPrefix; + pLoggerRC->fFlags |= pLogger->fFlags; + + /* + * Check if we can remove the disabled flag. + */ + if ( pLogger->fDestFlags + && !((pLogger->fFlags | fFlags) & RTLOGFLAGS_DISABLED)) + pLoggerRC->fFlags &= ~RTLOGFLAGS_DISABLED; + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogCloneRC); + + +/** + * Flushes a RC logger instance to a R3 logger. + * + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerRC to. If NULL + * the default logger is used. + * @param pLoggerRC The RC logger instance to flush. + */ +RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + pLoggerRC->offScratch = 0; + return; + } + } + + /* + * Any thing to flush? + */ + if ( pLogger->offScratch + || pLoggerRC->offScratch) + { + /* + * Acquire logger instance sem. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; + + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pLoggerRC->offScratch) + { + rtLogOutput(pLogger, pLoggerRC->achScratch, pLoggerRC->offScratch); + rtLogOutput(pLogger, NULL, 0); + pLoggerRC->offScratch = 0; + } + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushRC); + +# ifdef IN_RING3 + +RTDECL(int) RTLogCreateForR0(PRTLOGGER pLogger, size_t cbLogger, + RTR0PTR pLoggerR0Ptr, RTR0PTR pfnLoggerR0Ptr, RTR0PTR pfnFlushR0Ptr, + uint32_t fFlags, uint32_t fDestFlags) +{ + /* + * Validate input. + */ + AssertPtrReturn(pLogger, VERR_INVALID_PARAMETER); + size_t const cbRequired = sizeof(*pLogger) + RTLOGGERINTERNAL_R0_SIZE; + AssertReturn(cbLogger >= cbRequired, VERR_BUFFER_OVERFLOW); + AssertReturn(pLoggerR0Ptr != NIL_RTR0PTR, VERR_INVALID_PARAMETER); + AssertReturn(pfnLoggerR0Ptr != NIL_RTR0PTR, VERR_INVALID_PARAMETER); + + /* + * Initialize the ring-0 instance. + */ + pLogger->achScratch[0] = 0; + pLogger->offScratch = 0; + pLogger->pfnLogger = (PFNRTLOGGER)pfnLoggerR0Ptr; + pLogger->fFlags = fFlags; + pLogger->fDestFlags = fDestFlags & ~RTLOGDEST_FILE; + pLogger->pInt = NULL; + pLogger->cGroups = 1; + pLogger->afGroups[0] = 0; + + uint32_t cMaxGroups = (uint32_t)((cbLogger - cbRequired) / sizeof(pLogger->afGroups[0])); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cMaxGroups /= 2; + PRTLOGGERINTERNAL pInt; + for (;;) + { + AssertReturn(cMaxGroups > 0, VERR_BUFFER_OVERFLOW); + pInt = (PRTLOGGERINTERNAL)&pLogger->afGroups[cMaxGroups]; + if (!((uintptr_t)pInt & (sizeof(uint64_t) - 1))) + break; + cMaxGroups--; + } + pLogger->pInt = (PRTLOGGERINTERNAL)(pLoggerR0Ptr + (uintptr_t)pInt - (uintptr_t)pLogger); + pInt->uRevision = RTLOGGERINTERNAL_REV; + pInt->cbSelf = RTLOGGERINTERNAL_R0_SIZE; + pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; /* Not serialized. */ + pInt->pfnFlush = (PFNRTLOGFLUSH)pfnFlushR0Ptr; + pInt->pfnPrefix = NULL; + pInt->pvPrefixUserArg = NULL; + pInt->fPendingPrefix = false; + pInt->cMaxGroups = cMaxGroups; + pInt->papszGroups = NULL; + pInt->cMaxEntriesPerGroup = UINT32_MAX; + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + { + memset(pInt + 1, 0, sizeof(uint32_t) * cMaxGroups); + pInt->pacEntriesPerGroup= (uint32_t *)(pLogger->pInt + 1); + } + else + pInt->pacEntriesPerGroup= NULL; + + pInt->fCreated = true; + pLogger->u32Magic = RTLOGGER_MAGIC; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogCreateForR0); + + +RTDECL(size_t) RTLogCalcSizeForR0(uint32_t cGroups, uint32_t fFlags) +{ + size_t cb = RT_OFFSETOF(RTLOGGER, afGroups[cGroups]); + cb = RT_ALIGN_Z(cb, sizeof(uint64_t)); + cb += sizeof(RTLOGGERINTERNAL); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cb += sizeof(uint32_t) * cGroups; + return cb; +} +RT_EXPORT_SYMBOL(RTLogCalcSizeForR0); + + +RTDECL(int) RTLogCopyGroupsAndFlagsForR0(PRTLOGGER pDstLogger, RTR0PTR pDstLoggerR0Ptr, + PCRTLOGGER pSrcLogger, uint32_t fFlagsOr, uint32_t fFlagsAnd) +{ + /* + * Validate input. + */ + AssertPtrReturn(pDstLogger, VERR_INVALID_PARAMETER); + AssertPtrNullReturn(pSrcLogger, VERR_INVALID_PARAMETER); + + /* + * Resolve defaults. + */ + if (!pSrcLogger) + { + pSrcLogger = RTLogDefaultInstance(); + if (!pSrcLogger) + { + pDstLogger->fFlags |= RTLOGFLAGS_DISABLED | fFlagsOr; + pDstLogger->cGroups = 1; + pDstLogger->afGroups[0] = 0; + return VINF_SUCCESS; + } + } + + /* + * Copy flags and group settings. + */ + pDstLogger->fFlags = (pSrcLogger->fFlags & fFlagsAnd & ~RTLOGFLAGS_RESTRICT_GROUPS) | fFlagsOr; + + PRTLOGGERINTERNAL pDstInt = (PRTLOGGERINTERNAL)((uintptr_t)pDstLogger->pInt - pDstLoggerR0Ptr + (uintptr_t)pDstLogger); + int rc = VINF_SUCCESS; + uint32_t cGroups = pSrcLogger->cGroups; + if (cGroups > pDstInt->cMaxGroups) + { + AssertMsgFailed(("cMaxGroups=%zd cGroups=%zd (min size %d)\n", pDstInt->cMaxGroups, + pSrcLogger->cGroups, RT_OFFSETOF(RTLOGGER, afGroups[pSrcLogger->cGroups]) + RTLOGGERINTERNAL_R0_SIZE)); + rc = VERR_INVALID_PARAMETER; + cGroups = pDstInt->cMaxGroups; + } + memcpy(&pDstLogger->afGroups[0], &pSrcLogger->afGroups[0], cGroups * sizeof(pDstLogger->afGroups[0])); + pDstLogger->cGroups = cGroups; + + return rc; +} +RT_EXPORT_SYMBOL(RTLogCopyGroupsAndFlagsForR0); + + +RTDECL(int) RTLogSetCustomPrefixCallbackForR0(PRTLOGGER pLogger, RTR0PTR pLoggerR0Ptr, + RTR0PTR pfnCallbackR0Ptr, RTR0PTR pvUserR0Ptr) +{ + AssertPtrReturn(pLogger, VERR_INVALID_POINTER); + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Do the work. + */ + PRTLOGGERINTERNAL pInt = (PRTLOGGERINTERNAL)((uintptr_t)pLogger->pInt - pLoggerR0Ptr + (uintptr_t)pLogger); + AssertReturn(pInt->uRevision == RTLOGGERINTERNAL_REV, VERR_LOG_REVISION_MISMATCH); + pInt->pvPrefixUserArg = (void *)pvUserR0Ptr; + pInt->pfnPrefix = (PFNRTLOGPREFIX)pfnCallbackR0Ptr; + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogSetCustomPrefixCallbackForR0); + +RTDECL(void) RTLogFlushR0(PRTLOGGER pLogger, PRTLOGGER pLoggerR0) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + /* flushing to "/dev/null". */ + if (pLoggerR0->offScratch) + pLoggerR0->offScratch = 0; + return; + } + } + + /* + * Anything to flush? + */ + if ( pLoggerR0->offScratch + || pLogger->offScratch) + { + /* + * Acquire logger semaphores. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; + if (RT_SUCCESS(rc)) + { + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pLoggerR0->offScratch) + { + rtLogOutput(pLogger, pLoggerR0->achScratch, pLoggerR0->offScratch); + rtLogOutput(pLogger, NULL, 0); + pLoggerR0->offScratch = 0; + } + } + rtlogUnlock(pLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushR0); + +# endif /* IN_RING3 */ + + +/** + * Flushes the buffer in one logger instance onto another logger. + * + * @returns iprt status code. + * + * @param pSrcLogger The logger instance to flush. + * @param pDstLogger The logger instance to flush onto. + * If NULL the default logger will be used. + */ +RTDECL(void) RTLogFlushToLogger(PRTLOGGER pSrcLogger, PRTLOGGER pDstLogger) +{ + /* + * Resolve defaults. + */ + if (!pDstLogger) + { + pDstLogger = RTLogDefaultInstance(); + if (!pDstLogger) + { + /* flushing to "/dev/null". */ + if (pSrcLogger->offScratch) + { + int rc = rtlogLock(pSrcLogger); + if (RT_SUCCESS(rc)) + { + pSrcLogger->offScratch = 0; + rtlogUnlock(pSrcLogger); + } + } + return; + } + } + + /* + * Any thing to flush? + */ + if ( pSrcLogger->offScratch + || pDstLogger->offScratch) + { + /* + * Acquire logger semaphores. + */ + int rc = rtlogLock(pDstLogger); + if (RT_FAILURE(rc)) + return; + rc = rtlogLock(pSrcLogger); + if (RT_SUCCESS(rc)) + { + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pSrcLogger->offScratch) + { + rtLogOutput(pDstLogger, pSrcLogger->achScratch, pSrcLogger->offScratch); + rtLogOutput(pDstLogger, NULL, 0); + pSrcLogger->offScratch = 0; + } + + /* + * Release the semaphores. + */ + rtlogUnlock(pSrcLogger); + } + rtlogUnlock(pDstLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushToLogger); + + +/** + * Sets the custom prefix callback. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pfnCallback The callback. + * @param pvUser The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallback(PRTLOGGER pLogger, PFNRTLOGPREFIX pfnCallback, void *pvUser) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Do the work. + */ + rtlogLock(pLogger); + pLogger->pInt->pvPrefixUserArg = pvUser; + pLogger->pInt->pfnPrefix = pfnCallback; + rtlogUnlock(pLogger); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogSetCustomPrefixCallback); + + +/** + * Matches a group name with a pattern mask in an case insensitive manner (ASCII). + * + * @returns true if matching and *ppachMask set to the end of the pattern. + * @returns false if no match. + * @param pszGrp The group name. + * @param ppachMask Pointer to the pointer to the mask. Only wildcard supported is '*'. + * @param cchMask The length of the mask, including modifiers. The modifiers is why + * we update *ppachMask on match. + */ +static bool rtlogIsGroupMatching(const char *pszGrp, const char **ppachMask, size_t cchMask) +{ + const char *pachMask; + + if (!pszGrp || !*pszGrp) + return false; + pachMask = *ppachMask; + for (;;) + { + if (RT_C_TO_LOWER(*pszGrp) != RT_C_TO_LOWER(*pachMask)) + { + const char *pszTmp; + + /* + * Check for wildcard and do a minimal match if found. + */ + if (*pachMask != '*') + return false; + + /* eat '*'s. */ + do pachMask++; + while (--cchMask && *pachMask == '*'); + + /* is there more to match? */ + if ( !cchMask + || *pachMask == '.' + || *pachMask == '=') + break; /* we're good */ + + /* do extremely minimal matching (fixme) */ + pszTmp = strchr(pszGrp, RT_C_TO_LOWER(*pachMask)); + if (!pszTmp) + pszTmp = strchr(pszGrp, RT_C_TO_UPPER(*pachMask)); + if (!pszTmp) + return false; + pszGrp = pszTmp; + continue; + } + + /* done? */ + if (!*++pszGrp) + { + /* trailing wildcard is ok. */ + do + { + pachMask++; + cchMask--; + } while (cchMask && *pachMask == '*'); + if ( !cchMask + || *pachMask == '.' + || *pachMask == '=') + break; /* we're good */ + return false; + } + + if (!--cchMask) + return false; + pachMask++; + } + + /* match */ + *ppachMask = pachMask; + return true; +} + + +/** + * Updates the group settings for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance. + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogGroupSettings(PRTLOGGER pLogger, const char *pszValue) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Iterate the string. + */ + while (*pszValue) + { + /* + * Skip prefixes (blanks, ;, + and -). + */ + bool fEnabled = true; + char ch; + const char *pszStart; + unsigned i; + size_t cch; + + while ((ch = *pszValue) == '+' || ch == '-' || ch == ' ' || ch == '\t' || ch == '\n' || ch == ';') + { + if (ch == '+' || ch == '-' || ch == ';') + fEnabled = ch != '-'; + pszValue++; + } + if (!*pszValue) + break; + + /* + * Find end. + */ + pszStart = pszValue; + while ((ch = *pszValue) != '\0' && ch != '+' && ch != '-' && ch != ' ' && ch != '\t') + pszValue++; + + /* + * Find the group (ascii case insensitive search). + * Special group 'all'. + */ + cch = pszValue - pszStart; + if ( cch >= 3 + && (pszStart[0] == 'a' || pszStart[0] == 'A') + && (pszStart[1] == 'l' || pszStart[1] == 'L') + && (pszStart[2] == 'l' || pszStart[2] == 'L') + && (cch == 3 || pszStart[3] == '.' || pszStart[3] == '=')) + { + /* + * All. + */ + unsigned fFlags = cch == 3 + ? RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 + : rtlogGroupFlags(&pszStart[3]); + for (i = 0; i < pLogger->cGroups; i++) + { + if (fEnabled) + pLogger->afGroups[i] |= fFlags; + else + pLogger->afGroups[i] &= ~fFlags; + } + } + else + { + /* + * Specific group(s). + */ + for (i = 0; i < pLogger->cGroups; i++) + { + const char *psz2 = (const char*)pszStart; + if (rtlogIsGroupMatching(pLogger->pInt->papszGroups[i], &psz2, cch)) + { + unsigned fFlags = RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1; + if (*psz2 == '.' || *psz2 == '=') + fFlags = rtlogGroupFlags(psz2); + if (fEnabled) + pLogger->afGroups[i] |= fFlags; + else + pLogger->afGroups[i] &= ~fFlags; + } + } /* for each group */ + } + + } /* parse specification */ + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogGroupSettings); + + +/** + * Interprets the group flags suffix. + * + * @returns Flags specified. (0 is possible!) + * @param psz Start of Suffix. (Either dot or equal sign.) + */ +static unsigned rtlogGroupFlags(const char *psz) +{ + unsigned fFlags = 0; + + /* + * Literal flags. + */ + while (*psz == '.') + { + static struct + { + const char *pszFlag; /* lowercase!! */ + unsigned fFlag; + } aFlags[] = + { + { "eo", RTLOGGRPFLAGS_ENABLED }, + { "enabledonly",RTLOGGRPFLAGS_ENABLED }, + { "e", RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN }, + { "enabled", RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN }, + { "l1", RTLOGGRPFLAGS_LEVEL_1 }, + { "level1", RTLOGGRPFLAGS_LEVEL_1 }, + { "l", RTLOGGRPFLAGS_LEVEL_2 }, + { "l2", RTLOGGRPFLAGS_LEVEL_2 }, + { "level2", RTLOGGRPFLAGS_LEVEL_2 }, + { "l3", RTLOGGRPFLAGS_LEVEL_3 }, + { "level3", RTLOGGRPFLAGS_LEVEL_3 }, + { "l4", RTLOGGRPFLAGS_LEVEL_4 }, + { "level4", RTLOGGRPFLAGS_LEVEL_4 }, + { "l5", RTLOGGRPFLAGS_LEVEL_5 }, + { "level5", RTLOGGRPFLAGS_LEVEL_5 }, + { "l6", RTLOGGRPFLAGS_LEVEL_6 }, + { "level6", RTLOGGRPFLAGS_LEVEL_6 }, + { "l7", RTLOGGRPFLAGS_LEVEL_7 }, + { "level7", RTLOGGRPFLAGS_LEVEL_7 }, + { "l8", RTLOGGRPFLAGS_LEVEL_8 }, + { "level8", RTLOGGRPFLAGS_LEVEL_8 }, + { "l9", RTLOGGRPFLAGS_LEVEL_9 }, + { "level9", RTLOGGRPFLAGS_LEVEL_9 }, + { "l10", RTLOGGRPFLAGS_LEVEL_10 }, + { "level10", RTLOGGRPFLAGS_LEVEL_10 }, + { "l11", RTLOGGRPFLAGS_LEVEL_11 }, + { "level11", RTLOGGRPFLAGS_LEVEL_11 }, + { "l12", RTLOGGRPFLAGS_LEVEL_12 }, + { "level12", RTLOGGRPFLAGS_LEVEL_12 }, + { "f", RTLOGGRPFLAGS_FLOW }, + { "flow", RTLOGGRPFLAGS_FLOW }, + { "w", RTLOGGRPFLAGS_WARN }, + { "warn", RTLOGGRPFLAGS_WARN }, + { "warning", RTLOGGRPFLAGS_WARN }, + { "restrict", RTLOGGRPFLAGS_RESTRICT }, + + }; + unsigned i; + bool fFound = false; + psz++; + for (i = 0; i < RT_ELEMENTS(aFlags) && !fFound; i++) + { + const char *psz1 = aFlags[i].pszFlag; + const char *psz2 = psz; + while (*psz1 == RT_C_TO_LOWER(*psz2)) + { + psz1++; + psz2++; + if (!*psz1) + { + if ( (*psz2 >= 'a' && *psz2 <= 'z') + || (*psz2 >= 'A' && *psz2 <= 'Z') + || (*psz2 >= '0' && *psz2 <= '9') ) + break; + fFlags |= aFlags[i].fFlag; + fFound = true; + psz = psz2; + break; + } + } /* strincmp */ + } /* for each flags */ + AssertMsg(fFound, ("%.15s...", psz)); + } + + /* + * Flag value. + */ + if (*psz == '=') + { + psz++; + if (*psz == '~') + fFlags = ~RTStrToInt32(psz + 1); + else + fFlags = RTStrToInt32(psz); + } + + return fFlags; +} + +/** + * Helper for RTLogGetGroupSettings. + */ +static int rtLogGetGroupSettingsAddOne(const char *pszName, uint32_t fGroup, char **ppszBuf, size_t *pcchBuf, bool *pfNotFirst) +{ +# define APPEND_PSZ(psz,cch) do { memcpy(*ppszBuf, (psz), (cch)); *ppszBuf += (cch); *pcchBuf -= (cch); } while (0) +# define APPEND_SZ(sz) APPEND_PSZ(sz, sizeof(sz) - 1) +# define APPEND_CH(ch) do { **ppszBuf = (ch); *ppszBuf += 1; *pcchBuf -= 1; } while (0) + + /* + * Add the name. + */ + size_t cchName = strlen(pszName); + if (cchName + 1 + *pfNotFirst > *pcchBuf) + return VERR_BUFFER_OVERFLOW; + if (*pfNotFirst) + APPEND_CH(' '); + else + *pfNotFirst = true; + APPEND_PSZ(pszName, cchName); + + /* + * Only generate mnemonics for the simple+common bits. + */ + if (fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1)) + /* nothing */; + else if ( fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_LEVEL_2 | RTLOGGRPFLAGS_FLOW) + && *pcchBuf >= sizeof(".e.l.f")) + APPEND_SZ(".e.l.f"); + else if ( fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_FLOW) + && *pcchBuf >= sizeof(".e.f")) + APPEND_SZ(".e.f"); + else if (*pcchBuf >= 1 + 10 + 1) + { + size_t cch; + APPEND_CH('='); + cch = RTStrFormatNumber(*ppszBuf, fGroup, 16, 0, 0, RTSTR_F_SPECIAL | RTSTR_F_32BIT); + *ppszBuf += cch; + *pcchBuf -= cch; + } + else + return VERR_BUFFER_OVERFLOW; + +# undef APPEND_PSZ +# undef APPEND_SZ +# undef APPEND_CH + return VINF_SUCCESS; +} + + +/** + * Get the current log group settings as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetGroupSettings(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t cGroups; + uint32_t fGroup; + uint32_t i; + + Assert(cchBuf); + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + *pszBuf = '\0'; + return VINF_SUCCESS; + } + } + + cGroups = pLogger->cGroups; + + /* + * Check if all are the same. + */ + fGroup = pLogger->afGroups[0]; + for (i = 1; i < cGroups; i++) + if (pLogger->afGroups[i] != fGroup) + break; + if (i >= cGroups) + rc = rtLogGetGroupSettingsAddOne("all", fGroup, &pszBuf, &cchBuf, &fNotFirst); + else + { + + /* + * Iterate all the groups and print all that are enabled. + */ + for (i = 0; i < cGroups; i++) + { + fGroup = pLogger->afGroups[i]; + if (fGroup) + { + const char *pszName = pLogger->pInt->papszGroups[i]; + if (pszName) + { + rc = rtLogGetGroupSettingsAddOne(pszName, fGroup, &pszBuf, &cchBuf, &fNotFirst); + if (rc) + break; + } + } + } + } + + *pszBuf = '\0'; + return rc; +} +RT_EXPORT_SYMBOL(RTLogGetGroupSettings); + +#endif /* !IN_RC */ + +/** + * Updates the flags for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogFlags(PRTLOGGER pLogger, const char *pszValue) +{ + int rc = VINF_SUCCESS; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Iterate the string. + */ + while (*pszValue) + { + /* check no prefix. */ + bool fNo = false; + char ch; + unsigned i; + + /* skip blanks. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (!*pszValue) + return rc; + + while ((ch = *pszValue) != '\0') + { + if (ch == 'n' && pszValue[1] == 'o') + { + pszValue += 2; + fNo = !fNo; + } + else if (ch == '+') + { + pszValue++; + fNo = true; + } + else if (ch == '-' || ch == '!' || ch == '~') + { + pszValue++; + fNo = !fNo; + } + else + break; + } + + /* instruction. */ + for (i = 0; i < RT_ELEMENTS(g_aLogFlags); i++) + { + if (!strncmp(pszValue, g_aLogFlags[i].pszInstr, g_aLogFlags[i].cchInstr)) + { + if (fNo == g_aLogFlags[i].fInverted) + pLogger->fFlags |= g_aLogFlags[i].fFlag; + else + pLogger->fFlags &= ~g_aLogFlags[i].fFlag; + pszValue += g_aLogFlags[i].cchInstr; + break; + } + } + + /* unknown instruction? */ + if (i >= RT_ELEMENTS(g_aLogFlags)) + { + AssertMsgFailed(("Invalid flags! unknown instruction %.20s\n", pszValue)); + pszValue++; + } + + /* skip blanks and delimiters. */ + while (RT_C_IS_SPACE(*pszValue) || *pszValue == ';') + pszValue++; + } /* while more environment variable value left */ + + return rc; +} +RT_EXPORT_SYMBOL(RTLogFlags); + + +/** + * Changes the buffering setting of the specified logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogSetBuffering(PRTLOGGER pLogger, bool fBuffered) +{ + bool fOld; + + /* + * Resolve the logger instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return false; + } + + rtlogLock(pLogger); + fOld = !!(pLogger->fFlags & RTLOGFLAGS_BUFFERED); + if (fBuffered) + pLogger->fFlags |= RTLOGFLAGS_BUFFERED; + else + pLogger->fFlags &= ~RTLOGFLAGS_BUFFERED; + rtlogUnlock(pLogger); + + return fOld; +} +RT_EXPORT_SYMBOL(RTLogSetBuffering); + + +#ifdef IN_RING3 +RTDECL(uint32_t) RTLogSetGroupLimit(PRTLOGGER pLogger, uint32_t cMaxEntriesPerGroup) +{ + /* + * Resolve the logger instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return UINT32_MAX; + } + + rtlogLock(pLogger); + uint32_t cOld = pLogger->pInt->cMaxEntriesPerGroup; + pLogger->pInt->cMaxEntriesPerGroup = cMaxEntriesPerGroup; + rtlogUnlock(pLogger); + + return cOld; +} +#endif + +#ifndef IN_RC + +/** + * Get the current log flags as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetFlags(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t fFlags; + unsigned i; + + Assert(cchBuf); + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + *pszBuf = '\0'; + return VINF_SUCCESS; + } + } + + /* + * Add the flags in the list. + */ + fFlags = pLogger->fFlags; + for (i = 0; i < RT_ELEMENTS(g_aLogFlags); i++) + if ( !g_aLogFlags[i].fInverted + ? (g_aLogFlags[i].fFlag & fFlags) + : !(g_aLogFlags[i].fFlag & fFlags)) + { + size_t cchInstr = g_aLogFlags[i].cchInstr; + if (cchInstr + fNotFirst + 1 > cchBuf) + { + rc = VERR_BUFFER_OVERFLOW; + break; + } + if (fNotFirst) + { + *pszBuf++ = ' '; + cchBuf--; + } + memcpy(pszBuf, g_aLogFlags[i].pszInstr, cchInstr); + pszBuf += cchInstr; + cchBuf -= cchInstr; + fNotFirst = true; + } + *pszBuf = '\0'; + return rc; +} +RT_EXPORT_SYMBOL(RTLogGetFlags); + + +/** + * Updates the logger destination using the specified string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue The value to parse. + */ +RTDECL(int) RTLogDestinations(PRTLOGGER pLogger, char const *pszValue) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Do the parsing. + */ + while (*pszValue) + { + bool fNo; + unsigned i; + + /* skip blanks. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (!*pszValue) + break; + + /* check no prefix. */ + fNo = false; + if (pszValue[0] == 'n' && pszValue[1] == 'o') + { + fNo = true; + pszValue += 2; + } + + /* instruction. */ + for (i = 0; i < RT_ELEMENTS(s_aLogDst); i++) + { + size_t cchInstr = strlen(s_aLogDst[i].pszInstr); + if (!strncmp(pszValue, s_aLogDst[i].pszInstr, cchInstr)) + { + if (!fNo) + pLogger->fDestFlags |= s_aLogDst[i].fFlag; + else + pLogger->fDestFlags &= ~s_aLogDst[i].fFlag; + pszValue += cchInstr; + + /* check for value. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (*pszValue == '=' || *pszValue == ':') + { + const char *pszEnd; + + pszValue++; + pszEnd = strchr(pszValue, ';'); + if (!pszEnd) + pszEnd = strchr(pszValue, '\0'); + size_t cch = pszEnd - pszValue; +# ifdef IN_RING3 + char szTmp[sizeof(pLogger->pInt->szFilename)]; +# else + char szTmp[32]; +# endif + if (0) + { /* nothing */ } +#ifdef IN_RING3 + + /* log file name */ + else if (i == 0 /* file */ && !fNo) + { + AssertReturn(cch < sizeof(pLogger->pInt->szFilename), VERR_OUT_OF_RANGE); + memcpy(pLogger->pInt->szFilename, pszValue, cch); + pLogger->pInt->szFilename[cch] = '\0'; + /** @todo reopen log file if pLogger->pInt->fCreated is true ... */ + } + /* log directory */ + else if (i == 1 /* dir */ && !fNo) + { + const char *pszFile = RTPathFilename(pLogger->pInt->szFilename); + size_t cchFile = pszFile ? strlen(pszFile) : 0; + AssertReturn(cchFile + cch + 1 < sizeof(pLogger->pInt->szFilename), VERR_OUT_OF_RANGE); + memcpy(szTmp, cchFile ? pszFile : "", cchFile + 1); + + memcpy(pLogger->pInt->szFilename, pszValue, cch); + pLogger->pInt->szFilename[cch] = '\0'; + RTPathStripTrailingSlash(pLogger->pInt->szFilename); + + cch = strlen(pLogger->pInt->szFilename); + pLogger->pInt->szFilename[cch++] = '/'; + memcpy(&pLogger->pInt->szFilename[cch], szTmp, cchFile); + pLogger->pInt->szFilename[cch + cchFile] = '\0'; + /** @todo reopen log file if pLogger->pInt->fCreated is true ... */ + } + else if (i == 2 /* history */) + { + if (!fNo) + { + uint32_t cHistory = 0; + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &cHistory); + AssertMsgReturn(RT_SUCCESS(rc) && cHistory < _1M, ("Invalid history value %s (%Rrc)!\n", szTmp, rc), rc); + pLogger->pInt->cHistory = cHistory; + } + else + pLogger->pInt->cHistory = 0; + } + else if (i == 3 /* histsize */) + { + if (!fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt64Full(szTmp, 0, &pLogger->pInt->cbHistoryFileMax); + AssertMsgRCReturn(rc, ("Invalid history file size value %s (%Rrc)!\n", szTmp, rc), rc); + if (pLogger->pInt->cbHistoryFileMax == 0) + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + } + else + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + } + else if (i == 4 /* histtime */) + { + if (!fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &pLogger->pInt->cSecsHistoryTimeSlot); + AssertMsgRCReturn(rc, ("Invalid history time slot value %s (%Rrc)!\n", szTmp, rc), rc); + if (pLogger->pInt->cSecsHistoryTimeSlot == 0) + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + } + else + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + } +# endif /* IN_RING3 */ + else if (i == 5 /* ringbuf */ && !fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + uint32_t cbRingBuf; + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &cbRingBuf); + AssertMsgRCReturn(rc, ("Invalid ring buffer size value '%s' (%Rrc)!\n", szTmp, rc), rc); + + if (cbRingBuf == 0) + cbRingBuf = RTLOG_RINGBUF_DEFAULT_SIZE; + else if (cbRingBuf < RTLOG_RINGBUF_MIN_SIZE) + cbRingBuf = RTLOG_RINGBUF_MIN_SIZE; + else if (cbRingBuf > RTLOG_RINGBUF_MAX_SIZE) + cbRingBuf = RTLOG_RINGBUF_MAX_SIZE; + else + cbRingBuf = RT_ALIGN_32(cbRingBuf, 64); + rc = rtLogRingBufAdjust(pLogger, cbRingBuf, false /*fForce*/); + if (RT_FAILURE(rc)) + return rc; + } + else + AssertMsgFailedReturn(("Invalid destination value! %s%s doesn't take a value!\n", + fNo ? "no" : "", s_aLogDst[i].pszInstr), + VERR_INVALID_PARAMETER); + + pszValue = pszEnd + (*pszEnd != '\0'); + } + else if (i == 5 /* ringbuf */ && !fNo && !pLogger->pInt->pszRingBuf) + { + int rc = rtLogRingBufAdjust(pLogger, pLogger->pInt->cbRingBuf, false /*fForce*/); + if (RT_FAILURE(rc)) + return rc; + } + break; + } + } + + /* assert known instruction */ + AssertMsgReturn(i < RT_ELEMENTS(s_aLogDst), + ("Invalid destination value! unknown instruction %.20s\n", pszValue), + VERR_INVALID_PARAMETER); + + /* skip blanks and delimiters. */ + while (RT_C_IS_SPACE(*pszValue) || *pszValue == ';') + pszValue++; + } /* while more environment variable value left */ + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogDestinations); + + +/** + * Get the current log destinations as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than 0. + */ +RTDECL(int) RTLogGetDestinations(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t fDestFlags; + unsigned i; + + AssertReturn(cchBuf, VERR_INVALID_PARAMETER); + *pszBuf = '\0'; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Add the flags in the list. + */ + fDestFlags = pLogger->fDestFlags; + for (i = 6; i < RT_ELEMENTS(s_aLogDst); i++) + if (s_aLogDst[i].fFlag & fDestFlags) + { + if (fNotFirst) + { + rc = RTStrCopyP(&pszBuf, &cchBuf, " "); + if (RT_FAILURE(rc)) + return rc; + } + rc = RTStrCopyP(&pszBuf, &cchBuf, s_aLogDst[i].pszInstr); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + + char szNum[32]; + +# ifdef IN_RING3 + /* + * Add the filename. + */ + if (fDestFlags & RTLOGDEST_FILE) + { + rc = RTStrCopyP(&pszBuf, &cchBuf, fNotFirst ? " file=" : "file="); + if (RT_FAILURE(rc)) + return rc; + rc = RTStrCopyP(&pszBuf, &cchBuf, pLogger->pInt->szFilename); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + + if (pLogger->pInt->cHistory) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " history=%u" : "history=%u", pLogger->pInt->cHistory); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + if (pLogger->pInt->cbHistoryFileMax != UINT64_MAX) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " histsize=%llu" : "histsize=%llu", pLogger->pInt->cbHistoryFileMax); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + if (pLogger->pInt->cSecsHistoryTimeSlot != UINT32_MAX) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " histtime=%llu" : "histtime=%llu", pLogger->pInt->cSecsHistoryTimeSlot); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + } +# endif /* IN_RING3 */ + + /* + * Add the ring buffer. + */ + if (fDestFlags & RTLOGDEST_RINGBUF) + { + if (pLogger->pInt->cbRingBuf == RTLOG_RINGBUF_DEFAULT_SIZE) + rc = RTStrCopyP(&pszBuf, &cchBuf, fNotFirst ? " ringbuf" : "ringbuf"); + else + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " ringbuf=%#x" : "ringbuf=%#x", pLogger->pInt->cbRingBuf); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + } + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogGetDestinations); + +#endif /* !IN_RC */ + +/** + * Flushes the specified logger. + * + * @param pLogger The logger instance to flush. + * If NULL the default instance is used. The default instance + * will not be initialized by this call. + */ +RTDECL(void) RTLogFlush(PRTLOGGER pLogger) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { +#ifdef IN_RC + pLogger = &g_Logger; +#else + pLogger = g_pLogger; +#endif + if (!pLogger) + return; + } + + /* + * Any thing to flush? + */ + if ( pLogger->offScratch +#ifndef IN_RC + || (pLogger->fDestFlags & RTLOGDEST_RINGBUF) +#endif + ) + { +#ifndef IN_RC + /* + * Acquire logger instance sem. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; +#endif + /* + * Call worker. + */ + rtlogFlush(pLogger); + +#ifndef IN_RC + /* + * Since this is an explicit flush call, the ring buffer content should + * be flushed to the other destinations if active. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_RINGBUF) + && pLogger->pInt->pszRingBuf /* paranoia */) + rtLogRingBufFlush(pLogger); + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); +#endif + } +} +RT_EXPORT_SYMBOL(RTLogFlush); + + +/** + * Common worker for RTLogDefaultInstance and RTLogDefaultInstanceEx. + */ +DECL_FORCE_INLINE(PRTLOGGER) rtLogDefaultInstanceCommon(void) +{ +#ifdef IN_RC + return &g_Logger; + +#else /* !IN_RC */ +# ifdef IN_RING0 + /* + * Check per thread loggers first. + */ + if (g_cPerThreadLoggers) + { + const RTNATIVETHREAD Self = RTThreadNativeSelf(); + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + return g_aPerThreadLoggers[i].pLogger; + } +# endif /* IN_RING0 */ + + /* + * If no per thread logger, use the default one. + */ + if (!g_pLogger) + g_pLogger = RTLogDefaultInit(); + return g_pLogger; +#endif /* !IN_RC */ +} + + +RTDECL(PRTLOGGER) RTLogDefaultInstance(void) +{ + return rtLogDefaultInstanceCommon(); +} +RT_EXPORT_SYMBOL(RTLogDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ + PRTLOGGER pLogger = rtLogDefaultInstanceCommon(); + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogDefaultInstanceEx); + + +/** + * Common worker for RTLogGetDefaultInstance and RTLogGetDefaultInstanceEx. + */ +DECL_FORCE_INLINE(PRTLOGGER) rtLogGetDefaultInstanceCommon(void) +{ +#ifdef IN_RC + return &g_Logger; +#else +# ifdef IN_RING0 + /* + * Check per thread loggers first. + */ + if (g_cPerThreadLoggers) + { + const RTNATIVETHREAD Self = RTThreadNativeSelf(); + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + return g_aPerThreadLoggers[i].pLogger; + } +# endif /* IN_RING0 */ + + return g_pLogger; +#endif +} + + +RTDECL(PRTLOGGER) RTLogGetDefaultInstance(void) +{ + return rtLogGetDefaultInstanceCommon(); +} +RT_EXPORT_SYMBOL(RTLogGetDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ + PRTLOGGER pLogger = rtLogGetDefaultInstanceCommon(); + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint32_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogGetDefaultInstanceEx); + + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns iprt status code. + * @param pLogger The new default logger instance. + */ +RTDECL(PRTLOGGER) RTLogSetDefaultInstance(PRTLOGGER pLogger) +{ + return ASMAtomicXchgPtrT(&g_pLogger, pLogger, PRTLOGGER); +} +RT_EXPORT_SYMBOL(RTLogSetDefaultInstance); +#endif /* !IN_RC */ + + +#ifdef IN_RING0 +/** + * Changes the default logger instance for the current thread. + * + * @returns IPRT status code. + * @param pLogger The logger instance. Pass NULL for deregistration. + * @param uKey Associated key for cleanup purposes. If pLogger is NULL, + * all instances with this key will be deregistered. So in + * order to only deregister the instance associated with the + * current thread use 0. + */ +RTDECL(int) RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey) +{ + int rc; + RTNATIVETHREAD Self = RTThreadNativeSelf(); + if (pLogger) + { + int32_t i; + unsigned j; + + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Iterate the table to see if there is already an entry for this thread. + */ + i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + { + ASMAtomicWritePtr((void * volatile *)&g_aPerThreadLoggers[i].uKey, (void *)uKey); + g_aPerThreadLoggers[i].pLogger = pLogger; + return VINF_SUCCESS; + } + + /* + * Allocate a new table entry. + */ + i = ASMAtomicIncS32(&g_cPerThreadLoggers); + if (i > (int32_t)RT_ELEMENTS(g_aPerThreadLoggers)) + { + ASMAtomicDecS32(&g_cPerThreadLoggers); + return VERR_BUFFER_OVERFLOW; /* horrible error code! */ + } + + for (j = 0; j < 10; j++) + { + i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + { + AssertCompile(sizeof(RTNATIVETHREAD) == sizeof(void*)); + if ( g_aPerThreadLoggers[i].NativeThread == NIL_RTNATIVETHREAD + && ASMAtomicCmpXchgPtr((void * volatile *)&g_aPerThreadLoggers[i].NativeThread, (void *)Self, (void *)NIL_RTNATIVETHREAD)) + { + ASMAtomicWritePtr((void * volatile *)&g_aPerThreadLoggers[i].uKey, (void *)uKey); + ASMAtomicWritePtr(&g_aPerThreadLoggers[i].pLogger, pLogger); + return VINF_SUCCESS; + } + } + } + + ASMAtomicDecS32(&g_cPerThreadLoggers); + rc = VERR_INTERNAL_ERROR; + } + else + { + /* + * Search the array for the current thread. + */ + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if ( g_aPerThreadLoggers[i].NativeThread == Self + || g_aPerThreadLoggers[i].uKey == uKey) + { + ASMAtomicWriteNullPtr((void * volatile *)&g_aPerThreadLoggers[i].uKey); + ASMAtomicWriteNullPtr(&g_aPerThreadLoggers[i].pLogger); + ASMAtomicWriteHandle(&g_aPerThreadLoggers[i].NativeThread, NIL_RTNATIVETHREAD); + ASMAtomicDecS32(&g_cPerThreadLoggers); + } + + rc = VINF_SUCCESS; + } + return rc; +} +RT_EXPORT_SYMBOL(RTLogSetDefaultInstanceThread); +#endif /* IN_RING0 */ + + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerV(PRTLOGGER pLogger, const char *pszFormat, va_list args) +{ + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogLoggerV); + + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerExV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + int rc; + + /* + * A NULL logger means default instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return; + } + + /* + * Validate and correct iGroup. + */ + if (iGroup != ~0U && iGroup >= pLogger->cGroups) + iGroup = 0; + + /* + * If no output, then just skip it. + */ + if ( (pLogger->fFlags & RTLOGFLAGS_DISABLED) +#ifndef IN_RC + || !pLogger->fDestFlags +#endif + || !pszFormat || !*pszFormat) + return; + if ( iGroup != ~0U + && (pLogger->afGroups[iGroup] & (fFlags | RTLOGGRPFLAGS_ENABLED)) != (fFlags | RTLOGGRPFLAGS_ENABLED)) + return; + + /* + * Acquire logger instance sem. + */ + rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + { +#ifdef IN_RING0 + if (pLogger->fDestFlags & ~RTLOGDEST_FILE) + rtR0LogLoggerExFallback(pLogger->fDestFlags, pLogger->fFlags, pLogger->pInt, pszFormat, args); +#endif + return; + } + + /* + * Check restrictions and call worker. + */ +#ifndef IN_RC + if (RT_UNLIKELY( (pLogger->fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + && iGroup < pLogger->cGroups + && (pLogger->afGroups[iGroup] & RTLOGGRPFLAGS_RESTRICT) + && ++pLogger->pInt->pacEntriesPerGroup[iGroup] >= pLogger->pInt->cMaxEntriesPerGroup )) + { + uint32_t cEntries = pLogger->pInt->pacEntriesPerGroup[iGroup]; + if (cEntries > pLogger->pInt->cMaxEntriesPerGroup) + pLogger->pInt->pacEntriesPerGroup[iGroup] = cEntries - 1; + else + { + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, args); + if ( pLogger->pInt->papszGroups + && pLogger->pInt->papszGroups[iGroup]) + rtlogLoggerExFLocked(pLogger, fFlags, iGroup, "%u messages from group %s (#%u), muting it.\n", + cEntries, pLogger->pInt->papszGroups[iGroup], iGroup); + else + rtlogLoggerExFLocked(pLogger, fFlags, iGroup, "%u messages from group #%u, muting it.\n", + cEntries, iGroup); + } + } + else +#endif + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, args); + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); +} +RT_EXPORT_SYMBOL(RTLogLoggerExV); + + +#ifdef IN_RING0 +/** + * For rtR0LogLoggerExFallbackOutput and rtR0LogLoggerExFallbackFlush. + */ +typedef struct RTR0LOGLOGGERFALLBACK +{ + /** The current scratch buffer offset. */ + uint32_t offScratch; + /** The destination flags. */ + uint32_t fDestFlags; + /** For ring buffer output. */ + PRTLOGGERINTERNAL pInt; + /** The scratch buffer. */ + char achScratch[80]; +} RTR0LOGLOGGERFALLBACK; +/** Pointer to RTR0LOGLOGGERFALLBACK which is used by + * rtR0LogLoggerExFallbackOutput. */ +typedef RTR0LOGLOGGERFALLBACK *PRTR0LOGLOGGERFALLBACK; + + +/** + * Flushes the fallback buffer. + * + * @param pThis The scratch buffer. + */ +static void rtR0LogLoggerExFallbackFlush(PRTR0LOGLOGGERFALLBACK pThis) +{ + if (!pThis->offScratch) + return; + + if ( (pThis->fDestFlags & RTLOGDEST_RINGBUF) + && pThis->pInt + && pThis->pInt->pszRingBuf /* paranoia */) + rtLogRingBufWrite(pThis->pInt, pThis->achScratch, pThis->offScratch); + else + { + if (pThis->fDestFlags & RTLOGDEST_USER) + RTLogWriteUser(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_DEBUGGER) + RTLogWriteDebugger(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_STDOUT) + RTLogWriteStdOut(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_STDERR) + RTLogWriteStdErr(pThis->achScratch, pThis->offScratch); + +# ifndef LOG_NO_COM + if (pThis->fDestFlags & RTLOGDEST_COM) + RTLogWriteCom(pThis->achScratch, pThis->offScratch); +# endif + } + + /* empty the buffer. */ + pThis->offScratch = 0; +} + + +/** + * Callback for RTLogFormatV used by rtR0LogLoggerExFallback. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtR0LogLoggerExFallbackOutput(void *pv, const char *pachChars, size_t cbChars) +{ + PRTR0LOGLOGGERFALLBACK pThis = (PRTR0LOGLOGGERFALLBACK)pv; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { + /* how much */ + uint32_t cb = sizeof(pThis->achScratch) - pThis->offScratch - 1; /* minus 1 - for the string terminator. */ + if (cb > cbChars) + cb = (uint32_t)cbChars; + + /* copy */ + memcpy(&pThis->achScratch[pThis->offScratch], pachChars, cb); + + /* advance */ + pThis->offScratch += cb; + cbRet += cb; + cbChars -= cb; + + /* done? */ + if (cbChars <= 0) + return cbRet; + + pachChars += cb; + + /* flush */ + pThis->achScratch[pThis->offScratch] = '\0'; + rtR0LogLoggerExFallbackFlush(pThis); + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call, flush the log. + */ + pThis->achScratch[pThis->offScratch] = '\0'; + rtR0LogLoggerExFallbackFlush(pThis); + return 0; + } +} + + +/** + * Ring-0 fallback for cases where we're unable to grab the lock. + * + * This will happen when we're at a too high IRQL on Windows for instance and + * needs to be dealt with or we'll drop a lot of log output. This fallback will + * only output to some of the log destinations as a few of them may be doing + * dangerous things. We won't be doing any prefixing here either, at least not + * for the present, because it's too much hassle. + * + * @param fDestFlags The destination flags. + * @param fFlags The logger flags. + * @param pInt The internal logger data, for ring buffer output. + * @param pszFormat The format string. + * @param va The format arguments. + */ +static void rtR0LogLoggerExFallback(uint32_t fDestFlags, uint32_t fFlags, PRTLOGGERINTERNAL pInt, + const char *pszFormat, va_list va) +{ + RTR0LOGLOGGERFALLBACK This; + This.fDestFlags = fDestFlags; + This.pInt = pInt; + + /* fallback indicator. */ + This.offScratch = 2; + This.achScratch[0] = '['; + This.achScratch[1] = 'F'; + + /* selected prefixes */ + if (fFlags & RTLOGFLAGS_PREFIX_PID) + { + RTPROCESS Process = RTProcSelf(); + This.achScratch[This.offScratch++] = ' '; + This.offScratch += RTStrFormatNumber(&This.achScratch[This.offScratch], Process, 16, sizeof(RTPROCESS) * 2, 0, RTSTR_F_ZEROPAD); + } + if (fFlags & RTLOGFLAGS_PREFIX_TID) + { + RTNATIVETHREAD Thread = RTThreadNativeSelf(); + This.achScratch[This.offScratch++] = ' '; + This.offScratch += RTStrFormatNumber(&This.achScratch[This.offScratch], Thread, 16, sizeof(RTNATIVETHREAD) * 2, 0, RTSTR_F_ZEROPAD); + } + + This.achScratch[This.offScratch++] = ']'; + This.achScratch[This.offScratch++] = ' '; + + RTLogFormatV(rtR0LogLoggerExFallbackOutput, &This, pszFormat, va); +} +#endif /* IN_RING0 */ + + +/** + * vprintf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param va Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintfV(const char *pszFormat, va_list va) +{ + RTLogLoggerV(NULL, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTLogPrintfV); + + +/** + * Dumper vprintf-like function outputting to a logger. + * + * @param pvUser Pointer to the logger instance to use, NULL for + * default instance. + * @param pszFormat Format string. + * @param va Format arguments. + */ +RTDECL(void) RTLogDumpPrintfV(void *pvUser, const char *pszFormat, va_list va) +{ + RTLogLoggerV((PRTLOGGER)pvUser, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTLogDumpPrintfV); + + +#ifdef IN_RING3 + +/** + * Opens/creates the log file. + * + * @param pLogger The logger instance to update. NULL is not allowed! + * @param pszErrorMsg A buffer which is filled with an error message if + * something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + */ +static int rtlogFileOpen(PRTLOGGER pLogger, char *pszErrorMsg, size_t cchErrorMsg) +{ + uint32_t fOpen = RTFILE_O_WRITE | RTFILE_O_DENY_NONE; + if (pLogger->fFlags & RTLOGFLAGS_APPEND) + fOpen |= RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND; + else + fOpen |= RTFILE_O_CREATE_REPLACE; + if (pLogger->fFlags & RTLOGFLAGS_WRITE_THROUGH) + fOpen |= RTFILE_O_WRITE_THROUGH; + + unsigned cBackoff = 0; + int rc = RTFileOpen(&pLogger->pInt->hFile, pLogger->pInt->szFilename, fOpen); + while ( rc == VERR_SHARING_VIOLATION + && cBackoff < RT_ELEMENTS(g_acMsLogBackoff)) + { + RTThreadSleep(g_acMsLogBackoff[cBackoff++]); + rc = RTFileOpen(&pLogger->pInt->hFile, pLogger->pInt->szFilename, fOpen); + } + if (RT_SUCCESS(rc)) + { + rc = RTFileGetSize(pLogger->pInt->hFile, &pLogger->pInt->cbHistoryFileWritten); + if (RT_FAILURE(rc)) + { + /* Don't complain if this fails, assume the file is empty. */ + pLogger->pInt->cbHistoryFileWritten = 0; + rc = VINF_SUCCESS; + } + } + else + { + pLogger->pInt->hFile = NIL_RTFILE; + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("could not open file '%s' (fOpen=%#x)"), pLogger->pInt->szFilename, fOpen); + } + return rc; +} + + +/** + * Closes, rotates and opens the log files if necessary. + * + * Used by the rtlogFlush() function as well as RTLogCreateExV. + * + * @param pLogger The logger instance to update. NULL is not allowed! + * @param uTimeSlot Current time slot (for tikme based rotation). + * @param fFirst Flag whether this is the beginning of logging, i.e. + * called from RTLogCreateExV. Prevents pfnPhase from + * being called. + */ +static void rtlogRotate(PRTLOGGER pLogger, uint32_t uTimeSlot, bool fFirst) +{ + /* Suppress rotating empty log files simply because the time elapsed. */ + if (RT_UNLIKELY(!pLogger->pInt->cbHistoryFileWritten)) + pLogger->pInt->uHistoryTimeSlotStart = uTimeSlot; + + /* Check rotation condition: file still small enough and not too old? */ + if (RT_LIKELY( pLogger->pInt->cbHistoryFileWritten < pLogger->pInt->cbHistoryFileMax + && uTimeSlot == pLogger->pInt->uHistoryTimeSlotStart)) + return; + + /* + * Save "disabled" log flag and make sure logging is disabled. + * The logging in the functions called during log file history + * rotation would cause severe trouble otherwise. + */ + uint32_t const fSavedFlags = pLogger->fFlags; + pLogger->fFlags |= RTLOGFLAGS_DISABLED; + + /* + * Disable log rotation temporarily, otherwise with extreme settings and + * chatty phase logging we could run into endless rotation. + */ + uint32_t const cSavedHistory = pLogger->pInt->cHistory; + pLogger->pInt->cHistory = 0; + + /* + * Close the old log file. + */ + if (pLogger->pInt->hFile != NIL_RTFILE) + { + /* Use the callback to generate some final log contents, but only if + * this is a rotation with a fully set up logger. Leave the other case + * to the RTLogCreateExV function. */ + if (pLogger->pInt->pfnPhase && !fFirst) + { + uint32_t fODestFlags = pLogger->fDestFlags; + pLogger->fDestFlags &= RTLOGDEST_FILE; + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_PREROTATE, rtlogPhaseMsgLocked); + pLogger->fDestFlags = fODestFlags; + } + RTFileClose(pLogger->pInt->hFile); + pLogger->pInt->hFile = NIL_RTFILE; + } + + if (cSavedHistory) + { + /* + * Rotate the log files. + */ + for (uint32_t i = cSavedHistory - 1; i + 1 > 0; i--) + { + char szOldName[sizeof(pLogger->pInt->szFilename) + 32]; + if (i > 0) + RTStrPrintf(szOldName, sizeof(szOldName), "%s.%u", pLogger->pInt->szFilename, i); + else + RTStrCopy(szOldName, sizeof(szOldName), pLogger->pInt->szFilename); + + char szNewName[sizeof(pLogger->pInt->szFilename) + 32]; + RTStrPrintf(szNewName, sizeof(szNewName), "%s.%u", pLogger->pInt->szFilename, i + 1); + + unsigned cBackoff = 0; + int rc = RTFileRename(szOldName, szNewName, RTFILEMOVE_FLAGS_REPLACE); + while ( rc == VERR_SHARING_VIOLATION + && cBackoff < RT_ELEMENTS(g_acMsLogBackoff)) + { + RTThreadSleep(g_acMsLogBackoff[cBackoff++]); + rc = RTFileRename(szOldName, szNewName, RTFILEMOVE_FLAGS_REPLACE); + } + + if (rc == VERR_FILE_NOT_FOUND) + RTFileDelete(szNewName); + } + + /* + * Delete excess log files. + */ + for (uint32_t i = cSavedHistory + 1; ; i++) + { + char szExcessName[sizeof(pLogger->pInt->szFilename) + 32]; + RTStrPrintf(szExcessName, sizeof(szExcessName), "%s.%u", pLogger->pInt->szFilename, i); + int rc = RTFileDelete(szExcessName); + if (RT_FAILURE(rc)) + break; + } + } + + /* + * Update logger state and create new log file. + */ + pLogger->pInt->cbHistoryFileWritten = 0; + pLogger->pInt->uHistoryTimeSlotStart = uTimeSlot; + rtlogFileOpen(pLogger, NULL, 0); + + /* + * Use the callback to generate some initial log contents, but only if this + * is a rotation with a fully set up logger. Leave the other case to the + * RTLogCreateExV function. + */ + if (pLogger->pInt->pfnPhase && !fFirst) + { + uint32_t const fSavedDestFlags = pLogger->fDestFlags; + pLogger->fDestFlags &= RTLOGDEST_FILE; + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_POSTROTATE, rtlogPhaseMsgLocked); + pLogger->fDestFlags = fSavedDestFlags; + } + + /* Restore saved values. */ + pLogger->pInt->cHistory = cSavedHistory; + pLogger->fFlags = fSavedFlags; +} + +#endif /* IN_RING3 */ + + +/** + * Writes the buffer to the given log device without checking for buffered + * data or anything. + * Used by the RTLogFlush() function. + * + * @param pLogger The logger instance to write to. NULL is not allowed! + */ +static void rtlogFlush(PRTLOGGER pLogger) +{ + uint32_t const cchScratch = pLogger->offScratch; + if (cchScratch == 0) + return; /* nothing to flush. */ + +#ifndef IN_RC + /* + * If the ring buffer is active, the other destinations are only written + * to when the ring buffer is flushed by RTLogFlush(). + */ + if ( (pLogger->fDestFlags & RTLOGDEST_RINGBUF) + && pLogger->pInt + && pLogger->pInt->pszRingBuf /* paraoia */) + { + rtLogRingBufWrite(pLogger->pInt, pLogger->achScratch, pLogger->offScratch); + pLogger->offScratch = 0; /* empty the buffer. */ + } + else +#endif + { + /* Make sure the string is terminated. On Windows, RTLogWriteDebugger + will get upset if it isn't. */ + if (RT_LIKELY(cchScratch < sizeof(pLogger->achScratch))) + pLogger->achScratch[cchScratch] = '\0'; + else + AssertFailed(); + +#ifndef IN_RC + if (pLogger->fDestFlags & RTLOGDEST_USER) + RTLogWriteUser(pLogger->achScratch, cchScratch); + + if (pLogger->fDestFlags & RTLOGDEST_DEBUGGER) + RTLogWriteDebugger(pLogger->achScratch, cchScratch); + +# ifdef IN_RING3 + if ((pLogger->fDestFlags & (RTLOGDEST_FILE | RTLOGDEST_RINGBUF)) == RTLOGDEST_FILE) + { + if (pLogger->pInt->hFile != NIL_RTFILE) + { + RTFileWrite(pLogger->pInt->hFile, pLogger->achScratch, cchScratch, NULL); + if (pLogger->fFlags & RTLOGFLAGS_FLUSH) + RTFileFlush(pLogger->pInt->hFile); + } + if (pLogger->pInt->cHistory) + pLogger->pInt->cbHistoryFileWritten += cchScratch; + } +# endif + + if (pLogger->fDestFlags & RTLOGDEST_STDOUT) + RTLogWriteStdOut(pLogger->achScratch, cchScratch); + + if (pLogger->fDestFlags & RTLOGDEST_STDERR) + RTLogWriteStdErr(pLogger->achScratch, cchScratch); + +# if (defined(IN_RING0) || defined(IN_RC)) && !defined(LOG_NO_COM) + if (pLogger->fDestFlags & RTLOGDEST_COM) + RTLogWriteCom(pLogger->achScratch, cchScratch); +# endif +#endif /* !IN_RC */ + +#ifdef IN_RC + if (pLogger->pfnFlush) + pLogger->pfnFlush(pLogger); +#else + if (pLogger->pInt->pfnFlush) + pLogger->pInt->pfnFlush(pLogger); +#endif + + /* empty the buffer. */ + pLogger->offScratch = 0; + +#ifdef IN_RING3 + /* + * Rotate the log file if configured. Must be done after everything is + * flushed, since this will also use logging/flushing to write the header + * and footer messages. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_FILE) + && pLogger->pInt->cHistory) + rtlogRotate(pLogger, RTTimeProgramSecTS() / pLogger->pInt->cSecsHistoryTimeSlot, false /* fFirst */); +#endif + } +} + + +/** + * Callback for RTLogFormatV which writes to the com port. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogOutput(void *pv, const char *pachChars, size_t cbChars) +{ + PRTLOGGER pLogger = (PRTLOGGER)pv; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* how much */ + size_t cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + if (cb > cbChars) + cb = cbChars; + + /* copy */ + memcpy(&pLogger->achScratch[pLogger->offScratch], pachChars, cb); + + /* advance */ + pLogger->offScratch += (uint32_t)cb; + cbRet += cb; + cbChars -= cb; + + /* done? */ + if (cbChars <= 0) + return cbRet; + + pachChars += cb; + + /* flush */ + rtlogFlush(pLogger); + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call. + * There's always space for a terminator, and it's not counted. + */ + pLogger->achScratch[pLogger->offScratch] = '\0'; + return 0; + } +} + + +/** + * stpncpy implementation for use in rtLogOutputPrefixed w/ padding. + * + * @returns Pointer to the destination buffer byte following the copied string. + * @param pszDst The destination buffer. + * @param pszSrc The source string. + * @param cchSrcMax The maximum number of characters to copy from + * the string. + * @param cchMinWidth The minimum field with, padd with spaces to + * reach this. + */ +DECLINLINE(char *) rtLogStPNCpyPad(char *pszDst, const char *pszSrc, size_t cchSrcMax, size_t cchMinWidth) +{ + size_t cchSrc = 0; + if (pszSrc) + { + cchSrc = strlen(pszSrc); + if (cchSrc > cchSrcMax) + cchSrc = cchSrcMax; + + memcpy(pszDst, pszSrc, cchSrc); + pszDst += cchSrc; + } + do + *pszDst++ = ' '; + while (cchSrc++ < cchMinWidth); + + return pszDst; +} + + + +/** + * Callback for RTLogFormatV which writes to the logger instance. + * This version supports prefixes. + * + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogOutputPrefixed(void *pv, const char *pachChars, size_t cbChars) +{ + PRTLOGOUTPUTPREFIXEDARGS pArgs = (PRTLOGOUTPUTPREFIXEDARGS)pv; + PRTLOGGER pLogger = pArgs->pLogger; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { + size_t cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + const char *pszNewLine; + char *psz; +#ifdef IN_RC + bool *pfPendingPrefix = &pLogger->fPendingPrefix; +#else + bool *pfPendingPrefix = &pLogger->pInt->fPendingPrefix; +#endif + + /* + * Pending prefix? + */ + if (*pfPendingPrefix) + { + *pfPendingPrefix = false; + +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* + * Flush the buffer if there isn't enough room for the maximum prefix config. + * Max is 256, add a couple of extra bytes. See CCH_PREFIX check way below. + */ + if (cb < 256 + 16) + { + rtlogFlush(pLogger); + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + + /* + * Write the prefixes. + * psz is pointing to the current position. + */ + psz = &pLogger->achScratch[pLogger->offScratch]; + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TS) + { + uint64_t u64 = RTTimeNanoTS(); + int iBase = 16; + unsigned int fFlags = RTSTR_F_ZEROPAD; + if (pLogger->fFlags & RTLOGFLAGS_DECIMAL_TS) + { + iBase = 10; + fFlags = 0; + } + if (pLogger->fFlags & RTLOGFLAGS_REL_TS) + { + static volatile uint64_t s_u64LastTs; + uint64_t u64DiffTs = u64 - s_u64LastTs; + s_u64LastTs = u64; + /* We could have been preempted just before reading of s_u64LastTs by + * another thread which wrote s_u64LastTs. In that case the difference + * is negative which we simply ignore. */ + u64 = (int64_t)u64DiffTs < 0 ? 0 : u64DiffTs; + } + /* 1E15 nanoseconds = 11 days */ + psz += RTStrFormatNumber(psz, u64, iBase, 16, 0, fFlags); + *psz++ = ' '; + } +#define CCH_PREFIX_01 0 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TSC) + { +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + uint64_t u64 = ASMReadTSC(); +#else + uint64_t u64 = RTTimeNanoTS(); +#endif + int iBase = 16; + unsigned int fFlags = RTSTR_F_ZEROPAD; + if (pLogger->fFlags & RTLOGFLAGS_DECIMAL_TS) + { + iBase = 10; + fFlags = 0; + } + if (pLogger->fFlags & RTLOGFLAGS_REL_TS) + { + static volatile uint64_t s_u64LastTsc; + int64_t i64DiffTsc = u64 - s_u64LastTsc; + s_u64LastTsc = u64; + /* We could have been preempted just before reading of s_u64LastTsc by + * another thread which wrote s_u64LastTsc. In that case the difference + * is negative which we simply ignore. */ + u64 = i64DiffTsc < 0 ? 0 : i64DiffTsc; + } + /* 1E15 ticks at 4GHz = 69 hours */ + psz += RTStrFormatNumber(psz, u64, iBase, 16, 0, fFlags); + *psz++ = ' '; + } +#define CCH_PREFIX_02 CCH_PREFIX_01 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_MS_PROG) + { +#if defined(IN_RING3) || defined(IN_RC) + uint64_t u64 = RTTimeProgramMilliTS(); +#else + uint64_t u64 = 0; +#endif + /* 1E8 milliseconds = 27 hours */ + psz += RTStrFormatNumber(psz, u64, 10, 9, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_03 CCH_PREFIX_02 + 21 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TIME) + { +#if defined(IN_RING3) || defined(IN_RING0) + RTTIMESPEC TimeSpec; + RTTIME Time; + RTTimeExplode(&Time, RTTimeNow(&TimeSpec)); + psz += RTStrFormatNumber(psz, Time.u8Hour, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + psz += RTStrFormatNumber(psz, Time.u8Minute, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + psz += RTStrFormatNumber(psz, Time.u8Second, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = '.'; + psz += RTStrFormatNumber(psz, Time.u32Nanosecond / 1000, 10, 6, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; +#else + memset(psz, ' ', 16); + psz += 16; +#endif + } +#define CCH_PREFIX_04 CCH_PREFIX_03 + (3+1+3+1+3+1+7+1) + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TIME_PROG) + { + +#if defined(IN_RING3) || defined(IN_RC) + uint64_t u64 = RTTimeProgramMicroTS(); + psz += RTStrFormatNumber(psz, (uint32_t)(u64 / RT_US_1HOUR), 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + uint32_t u32 = (uint32_t)(u64 % RT_US_1HOUR); + psz += RTStrFormatNumber(psz, u32 / RT_US_1MIN, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + u32 %= RT_US_1MIN; + + psz += RTStrFormatNumber(psz, u32 / RT_US_1SEC, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = '.'; + psz += RTStrFormatNumber(psz, u32 % RT_US_1SEC, 10, 6, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; +#else + memset(psz, ' ', 16); + psz += 16; +#endif + } +#define CCH_PREFIX_05 CCH_PREFIX_04 + (9+1+2+1+2+1+6+1) + +# if 0 + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_DATETIME) + { + char szDate[32]; + RTTIMESPEC Time; + RTTimeSpecToString(RTTimeNow(&Time), szDate, sizeof(szDate)); + size_t cch = strlen(szDate); + memcpy(psz, szDate, cch); + psz += cch; + *psz++ = ' '; + } +# define CCH_PREFIX_06 CCH_PREFIX_05 + 32 +# else +# define CCH_PREFIX_06 CCH_PREFIX_05 + 0 +# endif + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_PID) + { +#ifndef IN_RC + RTPROCESS Process = RTProcSelf(); +#else + RTPROCESS Process = NIL_RTPROCESS; +#endif + psz += RTStrFormatNumber(psz, Process, 16, sizeof(RTPROCESS) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_07 CCH_PREFIX_06 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TID) + { +#ifndef IN_RC + RTNATIVETHREAD Thread = RTThreadNativeSelf(); +#else + RTNATIVETHREAD Thread = NIL_RTNATIVETHREAD; +#endif + psz += RTStrFormatNumber(psz, Thread, 16, sizeof(RTNATIVETHREAD) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_08 CCH_PREFIX_07 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_THREAD) + { +#ifdef IN_RING3 + const char *pszName = RTThreadSelfName(); +#elif defined IN_RC + const char *pszName = "EMT-RC"; +#else + const char *pszName = "R0"; +#endif + psz = rtLogStPNCpyPad(psz, pszName, 16, 8); + } +#define CCH_PREFIX_09 CCH_PREFIX_08 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_CPUID) + { +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + const uint8_t idCpu = ASMGetApicId(); +#else + const RTCPUID idCpu = RTMpCpuId(); +#endif + psz += RTStrFormatNumber(psz, idCpu, 16, sizeof(idCpu) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_10 CCH_PREFIX_09 + 17 + +#ifndef IN_RC + if ( (pLogger->fFlags & RTLOGFLAGS_PREFIX_CUSTOM) + && pLogger->pInt->pfnPrefix) + { + psz += pLogger->pInt->pfnPrefix(pLogger, psz, 31, pLogger->pInt->pvPrefixUserArg); + *psz++ = ' '; /* +32 */ + } +#endif +#define CCH_PREFIX_11 CCH_PREFIX_10 + 32 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_LOCK_COUNTS) + { +#ifdef IN_RING3 /** @todo implement these counters in ring-0 too? */ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + uint32_t cReadLocks = RTLockValidatorReadLockGetCount(Thread); + uint32_t cWriteLocks = RTLockValidatorWriteLockGetCount(Thread) - g_cLoggerLockCount; + cReadLocks = RT_MIN(0xfff, cReadLocks); + cWriteLocks = RT_MIN(0xfff, cWriteLocks); + psz += RTStrFormatNumber(psz, cReadLocks, 16, 1, 0, RTSTR_F_ZEROPAD); + *psz++ = '/'; + psz += RTStrFormatNumber(psz, cWriteLocks, 16, 1, 0, RTSTR_F_ZEROPAD); + } + else +#endif + { + *psz++ = '?'; + *psz++ = '/'; + *psz++ = '?'; + } + *psz++ = ' '; + } +#define CCH_PREFIX_12 CCH_PREFIX_11 + 8 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_FLAG_NO) + { + psz += RTStrFormatNumber(psz, pArgs->fFlags, 16, 8, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_13 CCH_PREFIX_12 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_FLAG) + { +#ifdef IN_RING3 + const char *pszGroup = pArgs->iGroup != ~0U ? pLogger->pInt->papszGroups[pArgs->iGroup] : NULL; +#else + const char *pszGroup = NULL; +#endif + psz = rtLogStPNCpyPad(psz, pszGroup, 16, 8); + } +#define CCH_PREFIX_14 CCH_PREFIX_13 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_GROUP_NO) + { + if (pArgs->iGroup != ~0U) + { + psz += RTStrFormatNumber(psz, pArgs->iGroup, 16, 3, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } + else + { + memcpy(psz, "-1 ", sizeof("-1 ") - 1); + psz += sizeof("-1 ") - 1; + } /* +9 */ + } +#define CCH_PREFIX_15 CCH_PREFIX_14 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_GROUP) + { + const unsigned fGrp = pLogger->afGroups[pArgs->iGroup != ~0U ? pArgs->iGroup : 0]; + const char *pszGroup; + size_t cch; + switch (pArgs->fFlags & fGrp) + { + case 0: pszGroup = "--------"; cch = sizeof("--------") - 1; break; + case RTLOGGRPFLAGS_ENABLED: pszGroup = "enabled" ; cch = sizeof("enabled" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_1: pszGroup = "level 1" ; cch = sizeof("level 1" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_2: pszGroup = "level 2" ; cch = sizeof("level 2" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_3: pszGroup = "level 3" ; cch = sizeof("level 3" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_4: pszGroup = "level 4" ; cch = sizeof("level 4" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_5: pszGroup = "level 5" ; cch = sizeof("level 5" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_6: pszGroup = "level 6" ; cch = sizeof("level 6" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_7: pszGroup = "level 7" ; cch = sizeof("level 7" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_8: pszGroup = "level 8" ; cch = sizeof("level 8" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_9: pszGroup = "level 9" ; cch = sizeof("level 9" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_10: pszGroup = "level 10"; cch = sizeof("level 10") - 1; break; + case RTLOGGRPFLAGS_LEVEL_11: pszGroup = "level 11"; cch = sizeof("level 11") - 1; break; + case RTLOGGRPFLAGS_LEVEL_12: pszGroup = "level 12"; cch = sizeof("level 12") - 1; break; + case RTLOGGRPFLAGS_FLOW: pszGroup = "flow" ; cch = sizeof("flow" ) - 1; break; + case RTLOGGRPFLAGS_WARN: pszGroup = "warn" ; cch = sizeof("warn" ) - 1; break; + default: pszGroup = "????????"; cch = sizeof("????????") - 1; break; + } + psz = rtLogStPNCpyPad(psz, pszGroup, 16, 8); + } +#define CCH_PREFIX_16 CCH_PREFIX_15 + 17 + +#define CCH_PREFIX ( CCH_PREFIX_16 ) + { AssertCompile(CCH_PREFIX < 256); } + + /* + * Done, figure what we've used and advance the buffer and free size. + */ + cb = psz - &pLogger->achScratch[pLogger->offScratch]; + AssertMsg(cb <= 223, ("%#zx (%zd) - fFlags=%#x\n", cb, cb, pLogger->fFlags)); + pLogger->offScratch += (uint32_t)cb; + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + else if (cb <= 0) + { + rtlogFlush(pLogger); + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* how much */ + if (cb > cbChars) + cb = cbChars; + + /* have newline? */ + pszNewLine = (const char *)memchr(pachChars, '\n', cb); + if (pszNewLine) + { + if (pLogger->fFlags & RTLOGFLAGS_USECRLF) + cb = pszNewLine - pachChars; + else + { + cb = pszNewLine - pachChars + 1; + *pfPendingPrefix = true; + } + } + + /* copy */ + memcpy(&pLogger->achScratch[pLogger->offScratch], pachChars, cb); + + /* advance */ + pLogger->offScratch += (uint32_t)cb; + cbRet += cb; + cbChars -= cb; + + if ( pszNewLine + && (pLogger->fFlags & RTLOGFLAGS_USECRLF) + && pLogger->offScratch + 2 < sizeof(pLogger->achScratch)) + { + memcpy(&pLogger->achScratch[pLogger->offScratch], "\r\n", 2); + pLogger->offScratch += 2; + cbRet++; + cbChars--; + cb++; + *pfPendingPrefix = true; + } + + /* done? */ + if (cbChars <= 0) + return cbRet; + pachChars += cb; + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call. + * There's always space for a terminator, and it's not counted. + */ + pLogger->achScratch[pLogger->offScratch] = '\0'; + return 0; + } +} + + +/** + * Write to a logger instance (worker function). + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. Must be non-NULL. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +static void rtlogLoggerExVLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + /* + * Format the message and perhaps flush it. + */ + if (pLogger->fFlags & (RTLOGFLAGS_PREFIX_MASK | RTLOGFLAGS_USECRLF)) + { + RTLOGOUTPUTPREFIXEDARGS OutputArgs; + OutputArgs.pLogger = pLogger; + OutputArgs.iGroup = iGroup; + OutputArgs.fFlags = fFlags; + RTLogFormatV(rtLogOutputPrefixed, &OutputArgs, pszFormat, args); + } + else + RTLogFormatV(rtLogOutput, pLogger, pszFormat, args); + if ( !(pLogger->fFlags & RTLOGFLAGS_BUFFERED) + && pLogger->offScratch) + rtlogFlush(pLogger); +} + + +#ifndef IN_RC +/** + * For calling rtlogLoggerExVLocked. + * + * @param pLogger The logger. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + */ +static void rtlogLoggerExFLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, va); + va_end(va); +} +#endif /* !IN_RC */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/logcom.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/logcom.c @@ -0,0 +1,146 @@ +/* $Id: logcom.cpp $ */ +/** @file + * IPRT - Logging to Serial Port. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#ifndef IPRT_UART_BASE +/** The port address of the COM port to log to. + * + * To override the default (COM1) append IPRT_UART_BASE=0xWXYZ to DEFS in your + * LocalConfig.kmk. Alternatively you can edit this file, but the don't forget + * to also update the default found in VBox/asmdefs.h. + * + * Standard port assignments are: COM1=0x3f8, COM2=0x2f8, COM3=0x3e8, COM4=0x2e8. + */ +# define IPRT_UART_BASE 0x3f8 +#endif + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) /** @todo consider fixing the config instead. */ +# include +#endif +#include +#include + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static DECLCALLBACK(size_t) rtLogComOutput(void *pv, const char *pachChars, size_t cbChars); + + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintf(const char *pszFormat, ...) +{ + va_list args; + size_t cb; + va_start(args, pszFormat); + cb = RTLogComPrintfV(pszFormat, args); + va_end(args); + + return cb; +} +RT_EXPORT_SYMBOL(RTLogComPrintf); + + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintfV(const char *pszFormat, va_list args) +{ + return RTLogFormatV(rtLogComOutput, NULL, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogComPrintfV); + + +/** + * Callback for RTLogFormatV which writes to the com port. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogComOutput(void *pv, const char *pachChars, size_t cbChars) +{ + NOREF(pv); + if (cbChars) + RTLogWriteCom(pachChars, cbChars); + return cbChars; +} + + +/** + * Write log buffer to COM port. + * + * @param pach Pointer to the buffer to write. + * @param cb Number of bytes to write. + */ +RTDECL(void) RTLogWriteCom(const char *pach, size_t cb) +{ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + const uint8_t *pu8; + for (pu8 = (const uint8_t *)pach; cb-- > 0; pu8++) + { + register unsigned cMaxWait; + register uint8_t u8; + + /* expand \n -> \r\n */ + if (*pu8 == '\n') + RTLogWriteCom("\r", 1); + + /* Check if port is ready. */ + cMaxWait = ~0U; + do + { + u8 = ASMInU8(IPRT_UART_BASE + 5); + cMaxWait--; + } while (!(u8 & 0x20) && u8 != 0xff && cMaxWait); + + /* write */ + ASMOutU8(IPRT_UART_BASE, *pu8); + } +#else + /* PORTME? */ +#endif +} +RT_EXPORT_SYMBOL(RTLogWriteCom); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/logellipsis.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/logellipsis.c @@ -0,0 +1,105 @@ +/* $Id: logellipsis.cpp $ */ +/** @file + * Runtime VBox - Logger, the ellipsis variants. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include + + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pvCallerRet Ignored. + * @param pszFormat Format string. + * @param ... Format arguments. + */ +RTDECL(void) RTLogLogger(PRTLOGGER pLogger, void *pvCallerRet, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); +#if defined(RT_OS_DARWIN) && defined(RT_ARCH_X86) && defined(IN_RING3) + /* manually align the stack before doing the call. + * We boldly assume that there is a stack frame here! */ + __asm__ __volatile__("andl $-32, %%esp\t\n" ::: "%esp"); + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +#else + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +#endif + va_end(args); + NOREF(pvCallerRet); +} +RT_EXPORT_SYMBOL(RTLogLogger); + + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function of LogIt. + */ +RTDECL(void) RTLogLoggerEx(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogLoggerExV(pLogger, fFlags, iGroup, pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogLoggerEx); + + +/** + * printf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintf(const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogPrintfV(pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogPrintf); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/logformat.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/logformat.c @@ -0,0 +1,100 @@ +/* $Id: logformat.cpp $ */ +/** @file + * IPRT - Log Formatter. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + +#include +#include + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static DECLCALLBACK(size_t) rtlogFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, + void *pvArgOutput, const char **ppszFormat, + va_list *pArgs, int cchWidth, int cchPrecision, + unsigned fFlags, char chArgSize); + + +/** + * Partial vsprintf worker implementation. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArg Argument to output worker. + * @param pszFormat Format string. + * @param args Argument list. + */ +RTDECL(size_t) RTLogFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArg, const char *pszFormat, va_list args) +{ + return RTStrFormatV(pfnOutput, pvArg, rtlogFormatStr, NULL, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogFormatV); + + +/** + * Callback to format VBox formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +static DECLCALLBACK(size_t) rtlogFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize) +{ + char ch = *(*ppszFormat)++; + + AssertMsgFailed(("Invalid logger format type '%%%c%.10s'!\n", ch, *ppszFormat)); NOREF(ch); + + NOREF(pvArg); NOREF(pfnOutput); NOREF(pvArgOutput); NOREF(pArgs); NOREF(cchWidth); + NOREF(cchPrecision); NOREF(fFlags); NOREF(chArgSize); + return 0; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/logrel.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/logrel.c @@ -0,0 +1,185 @@ +/* $Id: logrel.cpp $ */ +/** @file + * Runtime VBox - Release Logger. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#ifndef IN_RC +# include +# include +# include +# include +# include +#endif +#ifdef IN_RING3 +# include +# include +#endif +#include +#include +#include +#include +#include + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#ifdef IN_RC +/** Default release logger instance. */ +extern "C" DECLIMPORT(RTLOGGERRC) g_RelLogger; +#else /* !IN_RC */ +/** Default release logger instance. */ +static PRTLOGGER g_pRelLogger; +#endif /* !IN_RC */ + + +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void) +{ +#ifdef IN_RC + return &g_RelLogger; +#else /* !IN_RC */ + return g_pRelLogger; +#endif /* !IN_RC */ +} +RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ +#ifdef IN_RC + PRTLOGGER pLogger = &g_RelLogger; +#else /* !IN_RC */ + PRTLOGGER pLogger = g_pRelLogger; +#endif /* !IN_RC */ + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstanceEx); + + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns iprt status code. + * @param pLogger The new default release logger instance. + */ +RTDECL(PRTLOGGER) RTLogRelSetDefaultInstance(PRTLOGGER pLogger) +{ + return ASMAtomicXchgPtrT(&g_pRelLogger, pLogger, PRTLOGGER); +} +RT_EXPORT_SYMBOL(RTLogRelSetDefaultInstance); +#endif /* !IN_RC */ + + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default release instance is attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogRelLoggerV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + /* + * A NULL logger means default instance. + */ + if (!pLogger) + { + pLogger = RTLogRelGetDefaultInstance(); + if (!pLogger) + return; + } + RTLogLoggerExV(pLogger, fFlags, iGroup, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogRelLoggerV); + + +/** + * vprintf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintfV(const char *pszFormat, va_list args) +{ + RTLogRelLoggerV(NULL, 0, ~0U, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogRelPrintfV); + + +/** + * Changes the buffering setting of the default release logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogRelSetBuffering(bool fBuffered) +{ + PRTLOGGER pLogger = RTLogRelGetDefaultInstance(); + if (pLogger) + return RTLogSetBuffering(pLogger, fBuffered); + return false; +} +RT_EXPORT_SYMBOL(RTLogRelSetBuffering); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/log/logrelellipsis.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/log/logrelellipsis.c @@ -0,0 +1,78 @@ +/* $Id: logrelellipsis.cpp $ */ +/** @file + * Runtime VBox - Logger, the release ellipsis variants. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function for LogRelIt. + */ +RTDECL(void) RTLogRelLogger(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogRelLoggerV(pLogger, fFlags, iGroup, pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogRelLogger); + + +/** + * printf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintf(const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogRelPrintfV(pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogRelPrintf); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/divdi3.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/divdi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)divdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two signed quads. + * ??? if -1/2 should produce -1 on this machine, this code is wrong + */ +quad_t +__divdi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, uq; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub, neg ^= 1; + + uq = __qdivrem(ua, ub, (u_quad_t *)0); + if (neg) + uq = - uq; + return uq; +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/moddi3.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/moddi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)moddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two signed quads. + * + * XXX we assume a % b < 0 iff a < 0, but this is actually machine-dependent. + */ +quad_t +__moddi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, ur; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub; + (void)__qdivrem(ua, ub, &ur); + if (neg) + ur = -ur; + return (ur); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/qdivrem.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/qdivrem.c @@ -0,0 +1,285 @@ +/* $NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)qdivrem.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +/* + * Multiprecision divide. This algorithm is from Knuth vol. 2 (2nd ed), + * section 4.3.1, pp. 257--259. + */ + +#include "quad.h" + +#define B ((int)1 << HALF_BITS) /* digit base */ + +/* Combine two `digits' to make a single two-digit number. */ +#define COMBINE(a, b) (((u_int)(a) << HALF_BITS) | (b)) + +/* select a type for digits in base B: use unsigned short if they fit */ +#if UINT_MAX == 0xffffffffU && USHRT_MAX >= 0xffff +typedef unsigned short digit; +#else +typedef u_int digit; +#endif + +static void shl __P((digit *p, int len, int sh)); + +/* + * __qdivrem(u, v, rem) returns u/v and, optionally, sets *rem to u%v. + * + * We do this in base 2-sup-HALF_BITS, so that all intermediate products + * fit within u_int. As a consequence, the maximum length dividend and + * divisor are 4 `digits' in this base (they are shorter if they have + * leading zeros). + */ +u_quad_t +__qdivrem(uq, vq, arq) + u_quad_t uq, vq, *arq; +{ + union uu tmp; + digit *u, *v, *q; + digit v1, v2; + u_int qhat, rhat, t; + int m, n, d, j, i; + digit uspace[5], vspace[5], qspace[5]; + + /* + * Take care of special cases: divide by zero, and u < v. + */ + if (vq == 0) { + /* divide by zero. */ + static volatile const unsigned int zero = 0; + + tmp.ul[H] = tmp.ul[L] = 1 / zero; + if (arq) + *arq = uq; + return (tmp.q); + } + if (uq < vq) { + if (arq) + *arq = uq; + return (0); + } + u = &uspace[0]; + v = &vspace[0]; + q = &qspace[0]; + + /* + * Break dividend and divisor into digits in base B, then + * count leading zeros to determine m and n. When done, we + * will have: + * u = (u[1]u[2]...u[m+n]) sub B + * v = (v[1]v[2]...v[n]) sub B + * v[1] != 0 + * 1 < n <= 4 (if n = 1, we use a different division algorithm) + * m >= 0 (otherwise u < v, which we already checked) + * m + n = 4 + * and thus + * m = 4 - n <= 2 + */ + tmp.uq = uq; + u[0] = 0; + u[1] = (digit)HHALF(tmp.ul[H]); + u[2] = (digit)LHALF(tmp.ul[H]); + u[3] = (digit)HHALF(tmp.ul[L]); + u[4] = (digit)LHALF(tmp.ul[L]); + tmp.uq = vq; + v[1] = (digit)HHALF(tmp.ul[H]); + v[2] = (digit)LHALF(tmp.ul[H]); + v[3] = (digit)HHALF(tmp.ul[L]); + v[4] = (digit)LHALF(tmp.ul[L]); + for (n = 4; v[1] == 0; v++) { + if (--n == 1) { + u_int rbj; /* r*B+u[j] (not root boy jim) */ + digit q1, q2, q3, q4; + + /* + * Change of plan, per exercise 16. + * r = 0; + * for j = 1..4: + * q[j] = floor((r*B + u[j]) / v), + * r = (r*B + u[j]) % v; + * We unroll this completely here. + */ + t = v[2]; /* nonzero, by definition */ + q1 = (digit)(u[1] / t); + rbj = COMBINE(u[1] % t, u[2]); + q2 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[3]); + q3 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[4]); + q4 = (digit)(rbj / t); + if (arq) + *arq = rbj % t; + tmp.ul[H] = COMBINE(q1, q2); + tmp.ul[L] = COMBINE(q3, q4); + return (tmp.q); + } + } + + /* + * By adjusting q once we determine m, we can guarantee that + * there is a complete four-digit quotient at &qspace[1] when + * we finally stop. + */ + for (m = 4 - n; u[1] == 0; u++) + m--; + for (i = 4 - m; --i >= 0;) + q[i] = 0; + q += 4 - m; + + /* + * Here we run Program D, translated from MIX to C and acquiring + * a few minor changes. + * + * D1: choose multiplier 1 << d to ensure v[1] >= B/2. + */ + d = 0; + for (t = v[1]; t < B / 2; t <<= 1) + d++; + if (d > 0) { + shl(&u[0], m + n, d); /* u <<= d */ + shl(&v[1], n - 1, d); /* v <<= d */ + } + /* + * D2: j = 0. + */ + j = 0; + v1 = v[1]; /* for D3 -- note that v[1..n] are constant */ + v2 = v[2]; /* for D3 */ + do { + digit uj0, uj1, uj2; + + /* + * D3: Calculate qhat (\^q, in TeX notation). + * Let qhat = min((u[j]*B + u[j+1])/v[1], B-1), and + * let rhat = (u[j]*B + u[j+1]) mod v[1]. + * While rhat < B and v[2]*qhat > rhat*B+u[j+2], + * decrement qhat and increase rhat correspondingly. + * Note that if rhat >= B, v[2]*qhat < rhat*B. + */ + uj0 = u[j + 0]; /* for D3 only -- note that u[j+...] change */ + uj1 = u[j + 1]; /* for D3 only */ + uj2 = u[j + 2]; /* for D3 only */ + if (uj0 == v1) { + qhat = B; + rhat = uj1; + goto qhat_too_big; + } else { + u_int nn = COMBINE(uj0, uj1); + qhat = nn / v1; + rhat = nn % v1; + } + while (v2 * qhat > COMBINE(rhat, uj2)) { + qhat_too_big: + qhat--; + if ((rhat += v1) >= B) + break; + } + /* + * D4: Multiply and subtract. + * The variable `t' holds any borrows across the loop. + * We split this up so that we do not require v[0] = 0, + * and to eliminate a final special case. + */ + for (t = 0, i = n; i > 0; i--) { + t = u[i + j] - v[i] * qhat - t; + u[i + j] = (digit)LHALF(t); + t = (B - HHALF(t)) & (B - 1); + } + t = u[j] - t; + u[j] = (digit)LHALF(t); + /* + * D5: test remainder. + * There is a borrow if and only if HHALF(t) is nonzero; + * in that (rare) case, qhat was too large (by exactly 1). + * Fix it by adding v[1..n] to u[j..j+n]. + */ + if (HHALF(t)) { + qhat--; + for (t = 0, i = n; i > 0; i--) { /* D6: add back. */ + t += u[i + j] + v[i]; + u[i + j] = (digit)LHALF(t); + t = HHALF(t); + } + u[j] = (digit)LHALF(u[j] + t); + } + q[j] = (digit)qhat; + } while (++j <= m); /* D7: loop on j. */ + + /* + * If caller wants the remainder, we have to calculate it as + * u[m..m+n] >> d (this is at most n digits and thus fits in + * u[m+1..m+n], but we may need more source digits). + */ + if (arq) { + if (d) { + for (i = m + n; i > m; --i) + u[i] = (digit)(((u_int)u[i] >> d) | + LHALF((u_int)u[i - 1] << (HALF_BITS - d))); + u[i] = 0; + } + tmp.ul[H] = COMBINE(uspace[1], uspace[2]); + tmp.ul[L] = COMBINE(uspace[3], uspace[4]); + *arq = tmp.q; + } + + tmp.ul[H] = COMBINE(qspace[1], qspace[2]); + tmp.ul[L] = COMBINE(qspace[3], qspace[4]); + return (tmp.q); +} + +/* + * Shift p[0]..p[len] left `sh' bits, ignoring any bits that + * `fall out' the left (there never will be any such anyway). + * We may assume len >= 0. NOTE THAT THIS WRITES len+1 DIGITS. + */ +static void +shl(digit *p, int len, int sh) +{ + int i; + + for (i = 0; i < len; i++) + p[i] = (digit)(LHALF((u_int)p[i] << sh) | + ((u_int)p[i + 1] >> (HALF_BITS - sh))); + p[i] = (digit)(LHALF((u_int)p[i] << sh)); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/quad.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/quad.h @@ -0,0 +1,165 @@ +/* $NetBSD: quad.h,v 1.17 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + * @(#)quad.h 8.1 (Berkeley) 6/4/93 + */ + +/* + * Quad arithmetic. + * + * This library makes the following assumptions: + * + * - The type long long (aka quad_t) exists. + * + * - A quad variable is exactly twice as long as `int'. + * + * - The machine's arithmetic is two's complement. + * + * This library can provide 128-bit arithmetic on a machine with 128-bit + * quads and 64-bit ints, for instance, or 96-bit arithmetic on machines + * with 48-bit ints. + */ + +#if 0 /* iprt */ +#include +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include +#else +#include +#endif +#else /* iprt */ +# include +# include +# undef __P +# define __P(a) a +# undef __GNUC_PREREQ__ +# define __GNUC_PREREQ__(m1,m2) 1 +# if 1 /* ASSUMES: little endian */ +# define _QUAD_HIGHWORD 1 +# define _QUAD_LOWWORD 0 +# else +# define _QUAD_HIGHWORD 0 +# define _QUAD_LOWWORD 1 +# endif +# if !defined(RT_OS_LINUX) || !defined(__KERNEL__) /* (linux/types.h defines u_int) */ + typedef unsigned int u_int; +# endif +# if !defined(RT_OS_SOLARIS) + typedef int64_t quad_t; +# else +# define quad_t int64_t +# endif + typedef uint64_t u_quad_t; + typedef quad_t *qaddr_t; +#endif /* iprt */ + +/* + * Depending on the desired operation, we view a `long long' (aka quad_t) in + * one or more of the following formats. + */ +union uu { + quad_t q; /* as a (signed) quad */ + u_quad_t uq; /* as an unsigned quad */ + int sl[2]; /* as two signed ints */ + u_int ul[2]; /* as two unsigned ints */ +}; + +/* + * Define high and low parts of a quad_t. + */ +#define H _QUAD_HIGHWORD +#define L _QUAD_LOWWORD + +/* + * Total number of bits in a quad_t and in the pieces that make it up. + * These are used for shifting, and also below for halfword extraction + * and assembly. + */ +#define QUAD_BITS (sizeof(quad_t) * CHAR_BIT) +#define INT_BITS (sizeof(int) * CHAR_BIT) +#define HALF_BITS (sizeof(int) * CHAR_BIT / 2) + +/* + * Extract high and low shortwords from longword, and move low shortword of + * longword to upper half of long, i.e., produce the upper longword of + * ((quad_t)(x) << (number_of_bits_in_int/2)). (`x' must actually be u_int.) + * + * These are used in the multiply code, to split a longword into upper + * and lower halves, and to reassemble a product as a quad_t, shifted left + * (sizeof(int)*CHAR_BIT/2). + */ +#define HHALF(x) ((u_int)(x) >> HALF_BITS) +#define LHALF(x) ((u_int)(x) & (((int)1 << HALF_BITS) - 1)) +#define LHUP(x) ((u_int)(x) << HALF_BITS) + +/* + * XXX + * Compensate for gcc 1 vs gcc 2. Gcc 1 defines ?sh?di3's second argument + * as u_quad_t, while gcc 2 correctly uses int. Unfortunately, we still use + * both compilers. + */ +#if __GNUC_PREREQ__(2, 0) || defined(lint) +typedef unsigned int qshift_t; +#else +typedef u_quad_t qshift_t; +#endif + +RT_C_DECLS_BEGIN +quad_t __adddi3 __P((quad_t, quad_t)); +quad_t __anddi3 __P((quad_t, quad_t)); +quad_t __ashldi3 __P((quad_t, qshift_t)); +quad_t __ashrdi3 __P((quad_t, qshift_t)); +int __cmpdi2 __P((quad_t, quad_t )); +quad_t __divdi3 __P((quad_t, quad_t)); +quad_t __fixdfdi __P((double)); +quad_t __fixsfdi __P((float)); +u_quad_t __fixunsdfdi __P((double)); +u_quad_t __fixunssfdi __P((float)); +double __floatdidf __P((quad_t)); +float __floatdisf __P((quad_t)); +double __floatunsdidf __P((u_quad_t)); +quad_t __iordi3 __P((quad_t, quad_t)); +quad_t __lshldi3 __P((quad_t, qshift_t)); +quad_t __lshrdi3 __P((quad_t, qshift_t)); +quad_t __moddi3 __P((quad_t, quad_t)); +quad_t __muldi3 __P((quad_t, quad_t)); +quad_t __negdi2 __P((quad_t)); +quad_t __one_cmpldi2 __P((quad_t)); +u_quad_t __qdivrem __P((u_quad_t, u_quad_t, u_quad_t *)); +quad_t __subdi3 __P((quad_t, quad_t)); +int __ucmpdi2 __P((u_quad_t, u_quad_t)); +u_quad_t __udivdi3 __P((u_quad_t, u_quad_t )); +u_quad_t __umoddi3 __P((u_quad_t, u_quad_t )); +quad_t __xordi3 __P((quad_t, quad_t)); +RT_C_DECLS_END --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/udivdi3.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/udivdi3.c @@ -0,0 +1,56 @@ +/* $NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)udivdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two unsigned quads. + */ +u_quad_t +__udivdi3(a, b) + u_quad_t a, b; +{ + + return (__qdivrem(a, b, (u_quad_t *)0)); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/umoddi3.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/math/gcc/umoddi3.c @@ -0,0 +1,58 @@ +/* $NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)umoddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two unsigned quads. + */ +u_quad_t +__umoddi3(a, b) + u_quad_t a, b; +{ + u_quad_t r; + + (void)__qdivrem(a, b, &r); + return (r); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg1Weak.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg1Weak.c @@ -0,0 +1,42 @@ +/* $Id: RTAssertMsg1Weak.cpp $ */ +/** @file + * IPRT - RTAssertMsg1Weak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg1Weak(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + RTAssertMsg1(pszExpr, uLine, pszFile, pszFunction); +} +RT_EXPORT_SYMBOL(RTAssertMsg1Weak); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2.cpp $ */ +/** @file + * IPRT - RTAssertMsg2. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2V(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Add.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Add.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2Add.cpp $ */ +/** @file + * IPRT - RTAssertMsg2Add. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2Add(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2AddV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2Add); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeak.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeak.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2AddWeak.cpp $ */ +/** @file + * IPRT - RTAssertMsg2AddWeak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2AddWeak(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2AddWeakV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddWeak); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeakV.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeakV.c @@ -0,0 +1,40 @@ +/* $Id: RTAssertMsg2AddWeakV.cpp $ */ +/** @file + * IPRT - RTAssertMsg2AddWeakV. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTAssertMsg2AddWeakV(const char *pszFormat, va_list va) +{ + RTAssertMsg2AddV(pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddWeakV); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Weak.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Weak.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2Weak.cpp $ */ +/** @file + * IPRT - RTAssertMsg2Weak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2Weak(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2WeakV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2Weak); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2WeakV.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2WeakV.c @@ -0,0 +1,40 @@ +/* $Id: RTAssertMsg2WeakV.cpp $ */ +/** @file + * IPRT - RTAssertMsg2WeakV. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTAssertMsg2WeakV(const char *pszFormat, va_list va) +{ + RTAssertMsg2V(pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2WeakV); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/assert.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/assert.c @@ -0,0 +1,307 @@ +/* $Id: assert.cpp $ */ +/** @file + * IPRT - Assertions, common code. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#ifdef IN_RING3 +# include +#endif +#include "internal/assert.h" + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The last assert message, 1st part. */ +RTDATADECL(char) g_szRTAssertMsg1[1024]; +RT_EXPORT_SYMBOL(g_szRTAssertMsg1); +/** The last assert message, 2nd part. */ +RTDATADECL(char) g_szRTAssertMsg2[4096]; +RT_EXPORT_SYMBOL(g_szRTAssertMsg2); +/** The length of the g_szRTAssertMsg2 content. + * @remarks Race. */ +static uint32_t volatile g_cchRTAssertMsg2; +/** The last assert message, expression. */ +RTDATADECL(const char * volatile) g_pszRTAssertExpr; +RT_EXPORT_SYMBOL(g_pszRTAssertExpr); +/** The last assert message, function name. */ +RTDATADECL(const char * volatile) g_pszRTAssertFunction; +RT_EXPORT_SYMBOL(g_pszRTAssertFunction); +/** The last assert message, file name. */ +RTDATADECL(const char * volatile) g_pszRTAssertFile; +RT_EXPORT_SYMBOL(g_pszRTAssertFile); +/** The last assert message, line number. */ +RTDATADECL(uint32_t volatile) g_u32RTAssertLine; +RT_EXPORT_SYMBOL(g_u32RTAssertLine); + + +/** Set if assertions are quiet. */ +static bool volatile g_fQuiet = false; +/** Set if assertions may panic. */ +static bool volatile g_fMayPanic = true; + + +RTDECL(bool) RTAssertSetQuiet(bool fQuiet) +{ + return ASMAtomicXchgBool(&g_fQuiet, fQuiet); +} +RT_EXPORT_SYMBOL(RTAssertSetQuiet); + + +RTDECL(bool) RTAssertAreQuiet(void) +{ + return ASMAtomicUoReadBool(&g_fQuiet); +} +RT_EXPORT_SYMBOL(RTAssertAreQuiet); + + +RTDECL(bool) RTAssertSetMayPanic(bool fMayPanic) +{ + return ASMAtomicXchgBool(&g_fMayPanic, fMayPanic); +} +RT_EXPORT_SYMBOL(RTAssertSetMayPanic); + + +RTDECL(bool) RTAssertMayPanic(void) +{ + return ASMAtomicUoReadBool(&g_fMayPanic); +} +RT_EXPORT_SYMBOL(RTAssertMayPanic); + + +RTDECL(void) RTAssertMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + /* + * Fill in the globals. + */ + ASMAtomicUoWritePtr(&g_pszRTAssertExpr, pszExpr); + ASMAtomicUoWritePtr(&g_pszRTAssertFile, pszFile); + ASMAtomicUoWritePtr(&g_pszRTAssertFunction, pszFunction); + ASMAtomicUoWriteU32(&g_u32RTAssertLine, uLine); + RTStrPrintf(g_szRTAssertMsg1, sizeof(g_szRTAssertMsg1), + "\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); + + /* + * If not quiet, make noise. + */ + if (!RTAssertAreQuiet()) + { + RTERRVARS SavedErrVars; + RTErrVarsSave(&SavedErrVars); + +#ifdef IN_RING0 +# ifdef IN_GUEST_R0 + RTLogBackdoorPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# endif + /** @todo fully integrate this with the logger... play safe a bit for now. */ + rtR0AssertNativeMsg1(pszExpr, uLine, pszFile, pszFunction); + +#else /* !IN_RING0 */ +# if !defined(IN_RING3) && !defined(LOG_NO_COM) +# if 0 /* Enable this iff you have a COM port and really want this debug info. */ + RTLogComPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# endif +# endif + + PRTLOGGER pLog = RTLogRelGetDefaultInstance(); + if (pLog) + { + RTLogRelPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + +# ifndef LOG_ENABLED + if (!pLog) +# endif + { + pLog = RTLogDefaultInstance(); + if (pLog) + { + RTLogPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + } + +# ifdef IN_RING3 + /* print to stderr, helps user and gdb debugging. */ + fprintf(stderr, + "\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + VALID_PTR(pszExpr) ? pszExpr : "", + VALID_PTR(pszFile) ? pszFile : "", + uLine, + VALID_PTR(pszFunction) ? pszFunction : ""); + fflush(stderr); +# endif +#endif /* !IN_RING0 */ + + RTErrVarsRestore(&SavedErrVars); + } +} +RT_EXPORT_SYMBOL(RTAssertMsg1); + + +/** + * Worker for RTAssertMsg2V and RTAssertMsg2AddV + * + * @param fInitial True if it's RTAssertMsg2V, otherwise false. + * @param pszFormat The message format string. + * @param va The format arguments. + */ +static void rtAssertMsg2Worker(bool fInitial, const char *pszFormat, va_list va) +{ + va_list vaCopy; + size_t cch; + + /* + * The global first. + */ + if (fInitial) + { + va_copy(vaCopy, va); + cch = RTStrPrintfV(g_szRTAssertMsg2, sizeof(g_szRTAssertMsg2), pszFormat, vaCopy); + ASMAtomicWriteU32(&g_cchRTAssertMsg2, (uint32_t)cch); + va_end(vaCopy); + } + else + { + cch = ASMAtomicReadU32(&g_cchRTAssertMsg2); + if (cch < sizeof(g_szRTAssertMsg2) - 4) + { + va_copy(vaCopy, va); + cch += RTStrPrintfV(&g_szRTAssertMsg2[cch], sizeof(g_szRTAssertMsg2) - cch, pszFormat, vaCopy); + ASMAtomicWriteU32(&g_cchRTAssertMsg2, (uint32_t)cch); + va_end(vaCopy); + } + } + + /* + * If not quiet, make some noise. + */ + if (!RTAssertAreQuiet()) + { + RTERRVARS SavedErrVars; + RTErrVarsSave(&SavedErrVars); + +#ifdef IN_RING0 +# ifdef IN_GUEST_R0 + va_copy(vaCopy, va); + RTLogBackdoorPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# endif + /** @todo fully integrate this with the logger... play safe a bit for now. */ + rtR0AssertNativeMsg2V(fInitial, pszFormat, va); + +#else /* !IN_RING0 */ +# if !defined(IN_RING3) && !defined(LOG_NO_COM) +# if 0 /* Enable this iff you have a COM port and really want this debug info. */ + va_copy(vaCopy, va); + RTLogComPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# endif +# endif + + PRTLOGGER pLog = RTLogRelGetDefaultInstance(); + if (pLog) + { + va_copy(vaCopy, va); + RTLogRelPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + + pLog = RTLogDefaultInstance(); + if (pLog) + { + va_copy(vaCopy, va); + RTLogPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +#endif + } + +# ifdef IN_RING3 + /* print to stderr, helps user and gdb debugging. */ + char szMsg[sizeof(g_szRTAssertMsg2)]; + va_copy(vaCopy, va); + RTStrPrintfV(szMsg, sizeof(szMsg), pszFormat, vaCopy); + va_end(vaCopy); + fprintf(stderr, "%s", szMsg); + fflush(stderr); +# endif +#endif /* !IN_RING0 */ + + RTErrVarsRestore(&SavedErrVars); + } +} + + +RTDECL(void) RTAssertMsg2V(const char *pszFormat, va_list va) +{ + rtAssertMsg2Worker(true /*fInitial*/, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2V); + + +RTDECL(void) RTAssertMsg2AddV(const char *pszFormat, va_list va) +{ + rtAssertMsg2Worker(false /*fInitial*/, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddV); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/misc/thread.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/misc/thread.c @@ -0,0 +1,1586 @@ +/* $Id: thread.cpp $ */ +/** @file + * IPRT - Threads, common routines. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_THREAD +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#ifdef IN_RING0 +# include +#endif +#include +#include +#include +#include "internal/magics.h" +#include "internal/thread.h" +#include "internal/sched.h" +#include "internal/process.h" +#ifdef RT_WITH_ICONV_CACHE +# include "internal/string.h" +#endif + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#ifdef IN_RING0 +# define RT_THREAD_LOCK_RW() RTSpinlockAcquire(g_ThreadSpinlock) +# define RT_THREAD_UNLOCK_RW() RTSpinlockRelease(g_ThreadSpinlock) +# define RT_THREAD_LOCK_RD() RTSpinlockAcquire(g_ThreadSpinlock) +# define RT_THREAD_UNLOCK_RD() RTSpinlockRelease(g_ThreadSpinlock) +#else +# define RT_THREAD_LOCK_RW() rtThreadLockRW() +# define RT_THREAD_UNLOCK_RW() rtThreadUnLockRW() +# define RT_THREAD_LOCK_RD() rtThreadLockRD() +# define RT_THREAD_UNLOCK_RD() rtThreadUnLockRD() +#endif + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The AVL thread containing the threads. */ +static PAVLPVNODECORE g_ThreadTree; +/** The number of threads in the tree (for ring-0 termination kludge). */ +static uint32_t volatile g_cThreadInTree; +#ifdef IN_RING3 +/** The RW lock protecting the tree. */ +static RTSEMRW g_ThreadRWSem = NIL_RTSEMRW; +#else +/** The spinlocks protecting the tree. */ +static RTSPINLOCK g_ThreadSpinlock = NIL_RTSPINLOCK; +#endif +/** Indicates whether we've been initialized or not. */ +static bool g_frtThreadInitialized; + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static void rtThreadDestroy(PRTTHREADINT pThread); +#ifdef IN_RING3 +static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); +#endif +static void rtThreadRemoveLocked(PRTTHREADINT pThread); +static PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); + + +/** @page pg_rt_thread IPRT Thread Internals + * + * IPRT provides interface to whatever native threading that the host provides, + * preferably using a CRT level interface to better integrate with other libraries. + * + * Internally IPRT keeps track of threads by means of the RTTHREADINT structure. + * All the RTTHREADINT structures are kept in a AVL tree which is protected by a + * read/write lock for efficient access. A thread is inserted into the tree in + * three places in the code. The main thread is 'adopted' by IPRT on rtR3Init() + * by rtThreadAdopt(). When creating a new thread there the child and the parent + * race inserting the thread, this is rtThreadMain() and RTThreadCreate. + * + * RTTHREADINT objects are using reference counting as a mean of sticking around + * till no-one needs them any longer. Waitable threads is created with one extra + * reference so they won't go away until they are waited on. This introduces a + * major problem if we use the host thread identifier as key in the AVL tree - the + * host may reuse the thread identifier before the thread was waited on. So, on + * most platforms we are using the RTTHREADINT pointer as key and not the + * thread id. RTThreadSelf() then have to be implemented using a pointer stored + * in thread local storage (TLS). + * + * In Ring-0 we only try keep track of kernel threads created by RTThreadCreate + * at the moment. There we really only need the 'join' feature, but doing things + * the same way allow us to name threads and similar stuff. + */ + + +/** + * Initializes the thread database. + * + * @returns iprt status code. + */ +DECLHIDDEN(int) rtThreadInit(void) +{ +#ifdef IN_RING3 + int rc = VINF_ALREADY_INITIALIZED; + if (g_ThreadRWSem == NIL_RTSEMRW) + { + /* + * We assume the caller is the 1st thread, which we'll call 'main'. + * But first, we'll create the semaphore. + */ + rc = RTSemRWCreateEx(&g_ThreadRWSem, RTSEMRW_FLAGS_NO_LOCK_VAL, NIL_RTLOCKVALCLASS, RTLOCKVAL_SUB_CLASS_NONE, NULL); + if (RT_SUCCESS(rc)) + { + rc = rtThreadNativeInit(); + if (RT_SUCCESS(rc)) + rc = rtThreadAdopt(RTTHREADTYPE_DEFAULT, 0, RTTHREADINT_FLAGS_MAIN, "main"); + if (RT_SUCCESS(rc)) + rc = rtSchedNativeCalcDefaultPriority(RTTHREADTYPE_DEFAULT); + if (RT_SUCCESS(rc)) + { + g_frtThreadInitialized = true; + return VINF_SUCCESS; + } + + /* failed, clear out */ + RTSemRWDestroy(g_ThreadRWSem); + g_ThreadRWSem = NIL_RTSEMRW; + } + } + +#elif defined(IN_RING0) + int rc; + /* + * Create the spinlock and to native init. + */ + Assert(g_ThreadSpinlock == NIL_RTSPINLOCK); + rc = RTSpinlockCreate(&g_ThreadSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTThread"); + if (RT_SUCCESS(rc)) + { + rc = rtThreadNativeInit(); + if (RT_SUCCESS(rc)) + { + g_frtThreadInitialized = true; + return VINF_SUCCESS; + } + + /* failed, clear out */ + RTSpinlockDestroy(g_ThreadSpinlock); + g_ThreadSpinlock = NIL_RTSPINLOCK; + } +#else +# error "!IN_RING0 && !IN_RING3" +#endif + return rc; +} + + +#ifdef IN_RING3 +/** + * Called when IPRT was first initialized in unobtrusive mode and later changed + * to obtrustive. + * + * This is only applicable in ring-3. + */ +DECLHIDDEN(void) rtThreadReInitObtrusive(void) +{ + rtThreadNativeReInitObtrusive(); +} +#endif + + +/** + * Terminates the thread database. + */ +DECLHIDDEN(void) rtThreadTerm(void) +{ +#ifdef IN_RING3 + /* we don't cleanup here yet */ + +#elif defined(IN_RING0) + /* just destroy the spinlock and assume the thread is fine... */ + RTSpinlockDestroy(g_ThreadSpinlock); + g_ThreadSpinlock = NIL_RTSPINLOCK; + if (g_ThreadTree != NULL) + RTAssertMsg2Weak("WARNING: g_ThreadTree=%p\n", g_ThreadTree); +#endif +} + + +#ifdef IN_RING3 + +DECLINLINE(void) rtThreadLockRW(void) +{ + if (g_ThreadRWSem == NIL_RTSEMRW) + rtThreadInit(); + int rc = RTSemRWRequestWrite(g_ThreadRWSem, RT_INDEFINITE_WAIT); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadLockRD(void) +{ + if (g_ThreadRWSem == NIL_RTSEMRW) + rtThreadInit(); + int rc = RTSemRWRequestRead(g_ThreadRWSem, RT_INDEFINITE_WAIT); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadUnLockRW(void) +{ + int rc = RTSemRWReleaseWrite(g_ThreadRWSem); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadUnLockRD(void) +{ + int rc = RTSemRWReleaseRead(g_ThreadRWSem); + AssertReleaseRC(rc); +} + + +/** + * Adopts the calling thread. + * No locks are taken or released by this function. + */ +static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) +{ + int rc; + PRTTHREADINT pThread; + Assert(!(fFlags & RTTHREADFLAGS_WAITABLE)); + fFlags &= ~RTTHREADFLAGS_WAITABLE; + + /* + * Allocate and insert the thread. + * (It is vital that rtThreadNativeAdopt updates the TLS before + * we try inserting the thread because of locking.) + */ + rc = VERR_NO_MEMORY; + pThread = rtThreadAlloc(enmType, fFlags, RTTHREADINT_FLAGS_ALIEN | fIntFlags, pszName); + if (pThread) + { + RTNATIVETHREAD NativeThread = RTThreadNativeSelf(); + rc = rtThreadNativeAdopt(pThread); + if (RT_SUCCESS(rc)) + { + rtThreadInsert(pThread, NativeThread); + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + rtThreadRelease(pThread); + } + } + return rc; +} + +/** + * Adopts a non-IPRT thread. + * + * @returns IPRT status code. + * @param enmType The thread type. + * @param fFlags The thread flags. RTTHREADFLAGS_WAITABLE is not currently allowed. + * @param pszName The thread name. Optional. + * @param pThread Where to store the thread handle. Optional. + */ +RTDECL(int) RTThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName, PRTTHREAD pThread) +{ + int rc; + RTTHREAD Thread; + + AssertReturn(!(fFlags & RTTHREADFLAGS_WAITABLE), VERR_INVALID_PARAMETER); + AssertReturn(!pszName || VALID_PTR(pszName), VERR_INVALID_POINTER); + AssertReturn(!pThread || VALID_PTR(pThread), VERR_INVALID_POINTER); + + rc = VINF_SUCCESS; + Thread = RTThreadSelf(); + if (Thread == NIL_RTTHREAD) + { + /* generate a name if none was given. */ + char szName[RTTHREAD_NAME_LEN]; + if (!pszName || !*pszName) + { + static uint32_t s_i32AlienId = 0; + uint32_t i32Id = ASMAtomicIncU32(&s_i32AlienId); + RTStrPrintf(szName, sizeof(szName), "ALIEN-%RX32", i32Id); + pszName = szName; + } + + /* try adopt it */ + rc = rtThreadAdopt(enmType, fFlags, 0, pszName); + Thread = RTThreadSelf(); + Log(("RTThreadAdopt: %RTthrd %RTnthrd '%s' enmType=%d fFlags=%#x rc=%Rrc\n", + Thread, RTThreadNativeSelf(), pszName, enmType, fFlags, rc)); + } + else + Log(("RTThreadAdopt: %RTthrd %RTnthrd '%s' enmType=%d fFlags=%#x - already adopted!\n", + Thread, RTThreadNativeSelf(), pszName, enmType, fFlags)); + + if (pThread) + *pThread = Thread; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadAdopt); + + +/** + * Get the thread handle of the current thread, automatically adopting alien + * threads. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelfAutoAdopt(void) +{ + RTTHREAD hSelf = RTThreadSelf(); + if (RT_UNLIKELY(hSelf == NIL_RTTHREAD)) + RTThreadAdopt(RTTHREADTYPE_DEFAULT, 0, NULL, &hSelf); + return hSelf; +} +RT_EXPORT_SYMBOL(RTThreadSelfAutoAdopt); + +#endif /* IN_RING3 */ + +/** + * Allocates a per thread data structure and initializes the basic fields. + * + * @returns Pointer to per thread data structure. + * This is reference once. + * @returns NULL on failure. + * @param enmType The thread type. + * @param fFlags The thread flags. + * @param fIntFlags The internal thread flags. + * @param pszName Pointer to the thread name. + */ +PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) +{ + PRTTHREADINT pThread = (PRTTHREADINT)RTMemAllocZ(sizeof(RTTHREADINT)); + if (pThread) + { + size_t cchName; + int rc; + + pThread->Core.Key = (void*)NIL_RTTHREAD; + pThread->u32Magic = RTTHREADINT_MAGIC; + cchName = strlen(pszName); + if (cchName >= RTTHREAD_NAME_LEN) + cchName = RTTHREAD_NAME_LEN - 1; + memcpy(pThread->szName, pszName, cchName); + pThread->szName[cchName] = '\0'; + pThread->cRefs = 2 + !!(fFlags & RTTHREADFLAGS_WAITABLE); /* And extra reference if waitable. */ + pThread->rc = VERR_PROCESS_RUNNING; /** @todo get a better error code! */ + pThread->enmType = enmType; + pThread->fFlags = fFlags; + pThread->fIntFlags = fIntFlags; + pThread->enmState = RTTHREADSTATE_INITIALIZING; + pThread->fReallySleeping = false; +#ifdef IN_RING3 + rtLockValidatorInitPerThread(&pThread->LockValidator); +#endif +#ifdef RT_WITH_ICONV_CACHE + rtStrIconvCacheInit(pThread); +#endif + rc = RTSemEventMultiCreate(&pThread->EventUser); + if (RT_SUCCESS(rc)) + { + rc = RTSemEventMultiCreate(&pThread->EventTerminated); + if (RT_SUCCESS(rc)) + return pThread; + RTSemEventMultiDestroy(pThread->EventUser); + } + RTMemFree(pThread); + } + return NULL; +} + + +/** + * Insert the per thread data structure into the tree. + * + * This can be called from both the thread it self and the parent, + * thus it must handle insertion failures in a nice manner. + * + * @param pThread Pointer to thread structure allocated by rtThreadAlloc(). + * @param NativeThread The native thread id. + */ +DECLHIDDEN(void) rtThreadInsert(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread) +{ + Assert(pThread); + Assert(pThread->u32Magic == RTTHREADINT_MAGIC); + + { + RT_THREAD_LOCK_RW(); + + /* + * Do not insert a terminated thread. + * + * This may happen if the thread finishes before the RTThreadCreate call + * gets this far. Since the OS may quickly reuse the native thread ID + * it should not be reinserted at this point. + */ + if (rtThreadGetState(pThread) != RTTHREADSTATE_TERMINATED) + { + /* + * Before inserting we must check if there is a thread with this id + * in the tree already. We're racing parent and child on insert here + * so that the handle is valid in both ends when they return / start. + * + * If it's not ourself we find, it's a dead alien thread and we will + * unlink it from the tree. Alien threads will be released at this point. + */ + PRTTHREADINT pThreadOther = (PRTTHREADINT)RTAvlPVGet(&g_ThreadTree, (void *)NativeThread); + if (pThreadOther != pThread) + { + bool fRc; + /* remove dead alien if any */ + if (pThreadOther) + { + AssertMsg(pThreadOther->fIntFlags & RTTHREADINT_FLAGS_ALIEN, ("%p:%s; %p:%s\n", pThread, pThread->szName, pThreadOther, pThreadOther->szName)); + ASMAtomicBitClear(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT); + rtThreadRemoveLocked(pThreadOther); + if (pThreadOther->fIntFlags & RTTHREADINT_FLAGS_ALIEN) + rtThreadRelease(pThreadOther); + } + + /* insert the thread */ + ASMAtomicWritePtr(&pThread->Core.Key, (void *)NativeThread); + fRc = RTAvlPVInsert(&g_ThreadTree, &pThread->Core); + ASMAtomicOrU32(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE); + if (fRc) + ASMAtomicIncU32(&g_cThreadInTree); + + AssertReleaseMsg(fRc, ("Lock problem? %p (%RTnthrd) %s\n", pThread, NativeThread, pThread->szName)); + NOREF(fRc); + } + } + + RT_THREAD_UNLOCK_RW(); + } +} + + +/** + * Removes the thread from the AVL tree, call owns the tree lock + * and has cleared the RTTHREADINT_FLAG_IN_TREE bit. + * + * @param pThread The thread to remove. + */ +static void rtThreadRemoveLocked(PRTTHREADINT pThread) +{ + PRTTHREADINT pThread2 = (PRTTHREADINT)RTAvlPVRemove(&g_ThreadTree, pThread->Core.Key); +#if !defined(RT_OS_OS2) /** @todo this asserts for threads created by NSPR */ + AssertMsg(pThread2 == pThread, ("%p(%s) != %p (%p/%s)\n", pThread2, pThread2 ? pThread2->szName : "", + pThread, pThread->Core.Key, pThread->szName)); +#endif + if (pThread2) + ASMAtomicDecU32(&g_cThreadInTree); +} + + +/** + * Removes the thread from the AVL tree. + * + * @param pThread The thread to remove. + */ +static void rtThreadRemove(PRTTHREADINT pThread) +{ + RT_THREAD_LOCK_RW(); + if (ASMAtomicBitTestAndClear(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT)) + rtThreadRemoveLocked(pThread); + RT_THREAD_UNLOCK_RW(); +} + + +/** + * Checks if a thread is alive or not. + * + * @returns true if the thread is alive (or we don't really know). + * @returns false if the thread has surely terminate. + */ +DECLINLINE(bool) rtThreadIsAlive(PRTTHREADINT pThread) +{ + return !(pThread->fIntFlags & RTTHREADINT_FLAGS_TERMINATED); +} + + +/** + * Gets a thread by it's native ID. + * + * @returns pointer to the thread structure. + * @returns NULL if not a thread IPRT knows. + * @param NativeThread The native thread id. + */ +DECLHIDDEN(PRTTHREADINT) rtThreadGetByNative(RTNATIVETHREAD NativeThread) +{ + PRTTHREADINT pThread; + /* + * Simple tree lookup. + */ + RT_THREAD_LOCK_RD(); + pThread = (PRTTHREADINT)RTAvlPVGet(&g_ThreadTree, (void *)NativeThread); + RT_THREAD_UNLOCK_RD(); + return pThread; +} + + +/** + * Gets the per thread data structure for a thread handle. + * + * @returns Pointer to the per thread data structure for Thread. + * The caller must release the thread using rtThreadRelease(). + * @returns NULL if Thread was not found. + * @param Thread Thread id which structure is to be returned. + */ +DECLHIDDEN(PRTTHREADINT) rtThreadGet(RTTHREAD Thread) +{ + if ( Thread != NIL_RTTHREAD + && VALID_PTR(Thread)) + { + PRTTHREADINT pThread = (PRTTHREADINT)Thread; + if ( pThread->u32Magic == RTTHREADINT_MAGIC + && pThread->cRefs > 0) + { + ASMAtomicIncU32(&pThread->cRefs); + return pThread; + } + } + + AssertMsgFailed(("Thread=%RTthrd\n", Thread)); + return NULL; +} + +/** + * Release a per thread data structure. + * + * @returns New reference count. + * @param pThread The thread structure to release. + */ +DECLHIDDEN(uint32_t) rtThreadRelease(PRTTHREADINT pThread) +{ + uint32_t cRefs; + + Assert(pThread); + if (pThread->cRefs >= 1) + { + cRefs = ASMAtomicDecU32(&pThread->cRefs); + if (!cRefs) + rtThreadDestroy(pThread); + } + else + { + cRefs = 0; + AssertFailed(); + } + return cRefs; +} + + +/** + * Destroys the per thread data. + * + * @param pThread The thread to destroy. + */ +static void rtThreadDestroy(PRTTHREADINT pThread) +{ + RTSEMEVENTMULTI hEvt1, hEvt2; + /* + * Remove it from the tree and mark it as dead. + * + * Threads that has seen rtThreadTerminate and should already have been + * removed from the tree. There is probably no thread that should + * require removing here. However, be careful making sure that cRefs + * isn't 0 if we do or we'll blow up because the strict locking code + * will be calling us back. + */ + if (ASMBitTest(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT)) + { + ASMAtomicIncU32(&pThread->cRefs); + rtThreadRemove(pThread); + ASMAtomicDecU32(&pThread->cRefs); + } + + /* + * Invalidate the thread structure. + */ +#ifdef IN_RING3 + rtLockValidatorSerializeDestructEnter(); + + rtLockValidatorDeletePerThread(&pThread->LockValidator); +#endif +#ifdef RT_WITH_ICONV_CACHE + rtStrIconvCacheDestroy(pThread); +#endif + ASMAtomicXchgU32(&pThread->u32Magic, RTTHREADINT_MAGIC_DEAD); + ASMAtomicWritePtr(&pThread->Core.Key, (void *)NIL_RTTHREAD); + pThread->enmType = RTTHREADTYPE_INVALID; + hEvt1 = pThread->EventUser; + pThread->EventUser = NIL_RTSEMEVENTMULTI; + hEvt2 = pThread->EventTerminated; + pThread->EventTerminated = NIL_RTSEMEVENTMULTI; + +#ifdef IN_RING3 + rtLockValidatorSerializeDestructLeave(); +#endif + + /* + * Destroy semaphore resources and free the bugger. + */ + RTSemEventMultiDestroy(hEvt1); + if (hEvt2 != NIL_RTSEMEVENTMULTI) + RTSemEventMultiDestroy(hEvt2); + + rtThreadNativeDestroy(pThread); + RTMemFree(pThread); +} + + +/** + * Terminates the thread. + * Called by the thread wrapper function when the thread terminates. + * + * @param pThread The thread structure. + * @param rc The thread result code. + */ +DECLHIDDEN(void) rtThreadTerminate(PRTTHREADINT pThread, int rc) +{ + Assert(pThread->cRefs >= 1); + +#ifdef IPRT_WITH_GENERIC_TLS + /* + * Destroy TLS entries. + */ + rtThreadTlsDestruction(pThread); +#endif /* IPRT_WITH_GENERIC_TLS */ + + /* + * Set the rc, mark it terminated and signal anyone waiting. + */ + pThread->rc = rc; + rtThreadSetState(pThread, RTTHREADSTATE_TERMINATED); + ASMAtomicOrU32(&pThread->fIntFlags, RTTHREADINT_FLAGS_TERMINATED); + if (pThread->EventTerminated != NIL_RTSEMEVENTMULTI) + RTSemEventMultiSignal(pThread->EventTerminated); + + /* + * Remove the thread from the tree so that there will be no + * key clashes in the AVL tree and release our reference to ourself. + */ + rtThreadRemove(pThread); + rtThreadRelease(pThread); +} + + +/** + * The common thread main function. + * This is called by rtThreadNativeMain(). + * + * @returns The status code of the thread. + * pThread is dereference by the thread before returning! + * @param pThread The thread structure. + * @param NativeThread The native thread id. + * @param pszThreadName The name of the thread (purely a dummy for backtrace). + */ +DECLCALLBACK(DECLHIDDEN(int)) rtThreadMain(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread, const char *pszThreadName) +{ + int rc; + NOREF(pszThreadName); + rtThreadInsert(pThread, NativeThread); + Log(("rtThreadMain: Starting: pThread=%p NativeThread=%RTnthrd Name=%s pfnThread=%p pvUser=%p\n", + pThread, NativeThread, pThread->szName, pThread->pfnThread, pThread->pvUser)); + + /* + * Change the priority. + */ + rc = rtThreadNativeSetPriority(pThread, pThread->enmType); +#ifdef IN_RING3 + AssertMsgRC(rc, ("Failed to set priority of thread %p (%RTnthrd / %s) to enmType=%d enmPriority=%d rc=%Rrc\n", + pThread, NativeThread, pThread->szName, pThread->enmType, g_enmProcessPriority, rc)); +#else + AssertMsgRC(rc, ("Failed to set priority of thread %p (%RTnthrd / %s) to enmType=%d rc=%Rrc\n", + pThread, NativeThread, pThread->szName, pThread->enmType, rc)); +#endif + + /* + * Call thread function and terminate when it returns. + */ + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + rc = pThread->pfnThread(pThread, pThread->pvUser); + + /* + * Paranoia checks for leftover resources. + */ +#ifdef RTSEMRW_STRICT + int32_t cWrite = ASMAtomicReadS32(&pThread->cWriteLocks); + Assert(!cWrite); + int32_t cRead = ASMAtomicReadS32(&pThread->cReadLocks); + Assert(!cRead); +#endif + + Log(("rtThreadMain: Terminating: rc=%d pThread=%p NativeThread=%RTnthrd Name=%s pfnThread=%p pvUser=%p\n", + rc, pThread, NativeThread, pThread->szName, pThread->pfnThread, pThread->pvUser)); + rtThreadTerminate(pThread, rc); + return rc; +} + + +/** + * Create a new thread. + * + * @returns iprt status code. + * @param pThread Where to store the thread handle to the new thread. (optional) + * @param pfnThread The thread function. + * @param pvUser User argument. + * @param cbStack The size of the stack for the new thread. + * Use 0 for the default stack size. + * @param enmType The thread type. Used for deciding scheduling attributes + * of the thread. + * @param fFlags Flags of the RTTHREADFLAGS type (ORed together). + * @param pszName Thread name. + */ +RTDECL(int) RTThreadCreate(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName) +{ + int rc; + PRTTHREADINT pThreadInt; + + LogFlow(("RTThreadCreate: pThread=%p pfnThread=%p pvUser=%p cbStack=%#x enmType=%d fFlags=%#x pszName=%p:{%s}\n", + pThread, pfnThread, pvUser, cbStack, enmType, fFlags, pszName, pszName)); + + /* + * Validate input. + */ + if (!VALID_PTR(pThread) && pThread) + { + Assert(VALID_PTR(pThread)); + return VERR_INVALID_PARAMETER; + } + if (!VALID_PTR(pfnThread)) + { + Assert(VALID_PTR(pfnThread)); + return VERR_INVALID_PARAMETER; + } + if (!pszName || !*pszName || strlen(pszName) >= RTTHREAD_NAME_LEN) + { + AssertMsgFailed(("pszName=%s (max len is %d because of logging)\n", pszName, RTTHREAD_NAME_LEN - 1)); + return VERR_INVALID_PARAMETER; + } + if (fFlags & ~RTTHREADFLAGS_MASK) + { + AssertMsgFailed(("fFlags=%#x\n", fFlags)); + return VERR_INVALID_PARAMETER; + } + + /* + * Allocate thread argument. + */ + pThreadInt = rtThreadAlloc(enmType, fFlags, 0, pszName); + if (pThreadInt) + { + RTNATIVETHREAD NativeThread; + + pThreadInt->pfnThread = pfnThread; + pThreadInt->pvUser = pvUser; + pThreadInt->cbStack = cbStack; + + rc = rtThreadNativeCreate(pThreadInt, &NativeThread); + if (RT_SUCCESS(rc)) + { + rtThreadInsert(pThreadInt, NativeThread); + rtThreadRelease(pThreadInt); + Log(("RTThreadCreate: Created thread %p (%p) %s\n", pThreadInt, NativeThread, pszName)); + if (pThread) + *pThread = pThreadInt; + return VINF_SUCCESS; + } + + pThreadInt->cRefs = 1; + rtThreadRelease(pThreadInt); + } + else + rc = VERR_NO_TMP_MEMORY; + LogFlow(("RTThreadCreate: Failed to create thread, rc=%Rrc\n", rc)); + AssertReleaseRC(rc); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadCreate); + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintfV form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszNameFmt Thread name format. + * @param va Format arguments. + */ +RTDECL(int) RTThreadCreateV(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, va_list va) +{ + char szName[RTTHREAD_NAME_LEN * 2]; + RTStrPrintfV(szName, sizeof(szName), pszNameFmt, va); + return RTThreadCreate(pThread, pfnThread, pvUser, cbStack, enmType, fFlags, szName); +} +RT_EXPORT_SYMBOL(RTThreadCreateV); + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintf form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszNameFmt Thread name format. + * @param ... Format arguments. + */ +RTDECL(int) RTThreadCreateF(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, ...) +{ + va_list va; + int rc; + va_start(va, pszNameFmt); + rc = RTThreadCreateV(pThread, pfnThread, pvUser, cbStack, enmType, fFlags, pszNameFmt, va); + va_end(va); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadCreateF); + + +/** + * Gets the native thread id of a IPRT thread. + * + * @returns The native thread id. + * @param Thread The IPRT thread. + */ +RTDECL(RTNATIVETHREAD) RTThreadGetNative(RTTHREAD Thread) +{ + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + RTNATIVETHREAD NativeThread = (RTNATIVETHREAD)pThread->Core.Key; + rtThreadRelease(pThread); + return NativeThread; + } + return NIL_RTNATIVETHREAD; +} +RT_EXPORT_SYMBOL(RTThreadGetNative); + + +/** + * Gets the IPRT thread of a native thread. + * + * @returns The IPRT thread handle + * @returns NIL_RTTHREAD if not a thread known to IPRT. + * @param NativeThread The native thread handle/id. + */ +RTDECL(RTTHREAD) RTThreadFromNative(RTNATIVETHREAD NativeThread) +{ + PRTTHREADINT pThread = rtThreadGetByNative(NativeThread); + if (pThread) + return pThread; + return NIL_RTTHREAD; +} +RT_EXPORT_SYMBOL(RTThreadFromNative); + + +/** + * Gets the name of the current thread thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + */ +RTDECL(const char *) RTThreadSelfName(void) +{ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + const char *szName = pThread->szName; + rtThreadRelease(pThread); + return szName; + } + } + return NULL; +} +RT_EXPORT_SYMBOL(RTThreadSelfName); + + +/** + * Gets the name of a thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + * @param Thread Thread handle of the thread to query the name of. + */ +RTDECL(const char *) RTThreadGetName(RTTHREAD Thread) +{ + PRTTHREADINT pThread; + if (Thread == NIL_RTTHREAD) + return NULL; + pThread = rtThreadGet(Thread); + if (pThread) + { + const char *szName = pThread->szName; + rtThreadRelease(pThread); + return szName; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTThreadGetName); + + +/** + * Sets the name of a thread. + * + * @returns iprt status code. + * @param Thread Thread handle of the thread to query the name of. + * @param pszName The thread name. + */ +RTDECL(int) RTThreadSetName(RTTHREAD Thread, const char *pszName) +{ + /* + * Validate input. + */ + PRTTHREADINT pThread; + size_t cchName = strlen(pszName); + if (cchName >= RTTHREAD_NAME_LEN) + { + AssertMsgFailed(("pszName=%s is too long, max is %d\n", pszName, RTTHREAD_NAME_LEN - 1)); + return VERR_INVALID_PARAMETER; + } + pThread = rtThreadGet(Thread); + if (!pThread) + return VERR_INVALID_HANDLE; + + /* + * Update the name. + */ + pThread->szName[cchName] = '\0'; /* paranoia */ + memcpy(pThread->szName, pszName, cchName); + rtThreadRelease(pThread); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTThreadSetName); + + +/** + * Checks if the specified thread is the main thread. + * + * @returns true if it is, false if it isn't. + * + * @param hThread The thread handle. + * + * @remarks This function may not return the correct value when rtR3Init was + * called on a thread of the than the main one. This could for + * instance happen when the DLL/DYLIB/SO containing IPRT is dynamically + * loaded at run time by a different thread. + */ +RTDECL(bool) RTThreadIsMain(RTTHREAD hThread) +{ + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + bool fRc = !!(pThread->fIntFlags & RTTHREADINT_FLAGS_MAIN); + rtThreadRelease(pThread); + return fRc; + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsMain); + + +RTDECL(bool) RTThreadIsSelfAlive(void) +{ + if (g_frtThreadInitialized) + { + RTTHREAD hSelf = RTThreadSelf(); + if (hSelf != NIL_RTTHREAD) + { + /* + * Inspect the thread state. ASSUMES thread state order. + */ + RTTHREADSTATE enmState = rtThreadGetState(hSelf); + if ( enmState >= RTTHREADSTATE_RUNNING + && enmState <= RTTHREADSTATE_END) + return true; + } + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsSelfAlive); + + +RTDECL(bool) RTThreadIsSelfKnown(void) +{ + if (g_frtThreadInitialized) + { + RTTHREAD hSelf = RTThreadSelf(); + if (hSelf != NIL_RTTHREAD) + return true; + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsSelfKnown); + + +RTDECL(bool) RTThreadIsInitialized(void) +{ + return g_frtThreadInitialized; +} +RT_EXPORT_SYMBOL(RTThreadIsInitialized); + + +/** + * Signal the user event. + * + * @returns iprt status code. + */ +RTDECL(int) RTThreadUserSignal(RTTHREAD Thread) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiSignal(pThread->EventUser); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserSignal); + + +/** + * Wait for the user event, resume on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWait(RTTHREAD Thread, RTMSINTERVAL cMillies) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiWait(pThread->EventUser, cMillies); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserWait); + + +/** + * Wait for the user event, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiWaitNoResume(pThread->EventUser, cMillies); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserWaitNoResume); + + +/** + * Reset the user event. + * + * @returns iprt status code. + * @param Thread The thread to reset. + */ +RTDECL(int) RTThreadUserReset(RTTHREAD Thread) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiReset(pThread->EventUser); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserReset); + + +/** + * Wait for the thread to terminate. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + * @param fAutoResume Whether or not to resume the wait on VERR_INTERRUPTED. + */ +static int rtThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc, bool fAutoResume) +{ + int rc = VERR_INVALID_HANDLE; + if (Thread != NIL_RTTHREAD) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + if (pThread->fFlags & RTTHREADFLAGS_WAITABLE) + { + if (fAutoResume) + rc = RTSemEventMultiWait(pThread->EventTerminated, cMillies); + else + rc = RTSemEventMultiWaitNoResume(pThread->EventTerminated, cMillies); + if (RT_SUCCESS(rc)) + { + if (prc) + *prc = pThread->rc; + + /* + * If the thread is marked as waitable, we'll do one additional + * release in order to free up the thread structure (see how we + * init cRef in rtThreadAlloc()). + */ + if (ASMAtomicBitTestAndClear(&pThread->fFlags, RTTHREADFLAGS_WAITABLE_BIT)) + { + rtThreadRelease(pThread); +#ifdef IN_RING0 + /* + * IPRT termination kludge. Call native code to make sure + * the last thread is really out of IPRT to prevent it from + * crashing after we destroyed the spinlock in rtThreadTerm. + */ + if ( ASMAtomicReadU32(&g_cThreadInTree) == 1 + && ASMAtomicReadU32(&pThread->cRefs) > 1) + rtThreadNativeWaitKludge(pThread); +#endif + } + } + } + else + { + rc = VERR_THREAD_NOT_WAITABLE; + AssertRC(rc); + } + rtThreadRelease(pThread); + } + } + return rc; +} + + +/** + * Wait for the thread to terminate, resume on interruption. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc) +{ + int rc = rtThreadWait(Thread, cMillies, prc, true); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadWait); + + +/** + * Wait for the thread to terminate, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc) +{ + return rtThreadWait(Thread, cMillies, prc, false); +} +RT_EXPORT_SYMBOL(RTThreadWaitNoResume); + + +/** + * Changes the type of the specified thread. + * + * @returns iprt status code. + * @param Thread The thread which type should be changed. + * @param enmType The new thread type. + */ +RTDECL(int) RTThreadSetType(RTTHREAD Thread, RTTHREADTYPE enmType) +{ + /* + * Validate input. + */ + int rc; + if ( enmType > RTTHREADTYPE_INVALID + && enmType < RTTHREADTYPE_END) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + if (rtThreadIsAlive(pThread)) + { + /* + * Do the job. + */ + RT_THREAD_LOCK_RW(); + rc = rtThreadNativeSetPriority(pThread, enmType); + if (RT_SUCCESS(rc)) + ASMAtomicXchgSize(&pThread->enmType, enmType); + RT_THREAD_UNLOCK_RW(); + if (RT_FAILURE(rc)) + Log(("RTThreadSetType: failed on thread %p (%s), rc=%Rrc!!!\n", Thread, pThread->szName, rc)); + } + else + rc = VERR_THREAD_IS_DEAD; + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + } + else + { + AssertMsgFailed(("enmType=%d\n", enmType)); + rc = VERR_INVALID_PARAMETER; + } + return rc; +} +RT_EXPORT_SYMBOL(RTThreadSetType); + + +/** + * Gets the type of the specified thread. + * + * @returns The thread type. + * @returns RTTHREADTYPE_INVALID if the thread handle is invalid. + * @param Thread The thread in question. + */ +RTDECL(RTTHREADTYPE) RTThreadGetType(RTTHREAD Thread) +{ + RTTHREADTYPE enmType = RTTHREADTYPE_INVALID; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + enmType = pThread->enmType; + rtThreadRelease(pThread); + } + return enmType; +} +RT_EXPORT_SYMBOL(RTThreadGetType); + +#ifdef IN_RING3 + +/** + * Recalculates scheduling attributes for the default process + * priority using the specified priority type for the calling thread. + * + * The scheduling attributes are targeted at threads and they are protected + * by the thread read-write semaphore, that's why RTProc is forwarding the + * operation to RTThread. + * + * @returns iprt status code. + * @remarks Will only work for strict builds. + */ +int rtThreadDoCalcDefaultPriority(RTTHREADTYPE enmType) +{ + RT_THREAD_LOCK_RW(); + int rc = rtSchedNativeCalcDefaultPriority(enmType); + RT_THREAD_UNLOCK_RW(); + return rc; +} + + +/** + * Thread enumerator - sets the priority of one thread. + * + * @returns 0 to continue. + * @returns !0 to stop. In our case a VERR_ code. + * @param pNode The thread node. + * @param pvUser The new priority. + */ +static DECLCALLBACK(int) rtThreadSetPriorityOne(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + if (!rtThreadIsAlive(pThread)) + return VINF_SUCCESS; + int rc = rtThreadNativeSetPriority(pThread, pThread->enmType); + if (RT_SUCCESS(rc)) /* hide any warnings */ + return VINF_SUCCESS; + NOREF(pvUser); + return rc; +} + + +/** + * Attempts to alter the priority of the current process. + * + * The scheduling attributes are targeted at threads and they are protected + * by the thread read-write semaphore, that's why RTProc is forwarding the + * operation to RTThread. This operation also involves updating all thread + * which is much faster done from RTThread. + * + * @returns iprt status code. + * @param enmPriority The new priority. + */ +DECLHIDDEN(int) rtThreadDoSetProcPriority(RTPROCPRIORITY enmPriority) +{ + LogFlow(("rtThreadDoSetProcPriority: enmPriority=%d\n", enmPriority)); + + /* + * First validate that we're allowed by the OS to use all the + * scheduling attributes defined by the specified process priority. + */ + RT_THREAD_LOCK_RW(); + int rc = rtProcNativeSetPriority(enmPriority); + if (RT_SUCCESS(rc)) + { + /* + * Update the priority of existing thread. + */ + rc = RTAvlPVDoWithAll(&g_ThreadTree, true, rtThreadSetPriorityOne, NULL); + if (RT_SUCCESS(rc)) + ASMAtomicXchgSize(&g_enmProcessPriority, enmPriority); + else + { + /* + * Failed, restore the priority. + */ + rtProcNativeSetPriority(g_enmProcessPriority); + RTAvlPVDoWithAll(&g_ThreadTree, true, rtThreadSetPriorityOne, NULL); + } + } + RT_THREAD_UNLOCK_RW(); + LogFlow(("rtThreadDoSetProcPriority: returns %Rrc\n", rc)); + return rc; +} + + +/** + * Change the thread state to blocking. + * + * @param hThread The current thread. + * @param enmState The sleep state. + * @param fReallySleeping Really going to sleep now. + */ +RTDECL(void) RTThreadBlocking(RTTHREAD hThread, RTTHREADSTATE enmState, bool fReallySleeping) +{ + Assert(RTTHREAD_IS_SLEEPING(enmState)); + PRTTHREADINT pThread = hThread; + if (pThread != NIL_RTTHREAD) + { + Assert(pThread == RTThreadSelf()); + if (rtThreadGetState(pThread) == RTTHREADSTATE_RUNNING) + rtThreadSetState(pThread, enmState); + ASMAtomicWriteBool(&pThread->fReallySleeping, fReallySleeping); + } +} +RT_EXPORT_SYMBOL(RTThreadBlocking); + + +/** + * Unblocks a thread. + * + * This function is paired with rtThreadBlocking. + * + * @param hThread The current thread. + * @param enmCurState The current state, used to check for nested blocking. + * The new state will be running. + */ +RTDECL(void) RTThreadUnblocked(RTTHREAD hThread, RTTHREADSTATE enmCurState) +{ + PRTTHREADINT pThread = hThread; + if (pThread != NIL_RTTHREAD) + { + Assert(pThread == RTThreadSelf()); + ASMAtomicWriteBool(&pThread->fReallySleeping, false); + + RTTHREADSTATE enmActualState = rtThreadGetState(pThread); + if (enmActualState == enmCurState) + { + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + if ( pThread->LockValidator.pRec + && pThread->LockValidator.enmRecState == enmCurState) + ASMAtomicWriteNullPtr(&pThread->LockValidator.pRec); + } + /* This is a bit ugly... :-/ */ + else if ( ( enmActualState == RTTHREADSTATE_TERMINATED + || enmActualState == RTTHREADSTATE_INITIALIZING) + && pThread->LockValidator.pRec) + ASMAtomicWriteNullPtr(&pThread->LockValidator.pRec); + Assert( pThread->LockValidator.pRec == NULL + || RTTHREAD_IS_SLEEPING(enmActualState)); + } +} +RT_EXPORT_SYMBOL(RTThreadUnblocked); + + +/** + * Get the current thread state. + * + * @returns The thread state. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetState(RTTHREAD hThread) +{ + RTTHREADSTATE enmState = RTTHREADSTATE_INVALID; + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + enmState = rtThreadGetState(pThread); + rtThreadRelease(pThread); + } + return enmState; +} +RT_EXPORT_SYMBOL(RTThreadGetState); + + +RTDECL(RTTHREADSTATE) RTThreadGetReallySleeping(RTTHREAD hThread) +{ + RTTHREADSTATE enmState = RTTHREADSTATE_INVALID; + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + enmState = rtThreadGetState(pThread); + if (!ASMAtomicUoReadBool(&pThread->fReallySleeping)) + enmState = RTTHREADSTATE_RUNNING; + rtThreadRelease(pThread); + } + return enmState; +} +RT_EXPORT_SYMBOL(RTThreadGetReallySleeping); + + +/** + * Translate a thread state into a string. + * + * @returns Pointer to a read-only string containing the state name. + * @param enmState The state. + */ +RTDECL(const char *) RTThreadStateName(RTTHREADSTATE enmState) +{ + switch (enmState) + { + case RTTHREADSTATE_INVALID: return "INVALID"; + case RTTHREADSTATE_INITIALIZING: return "INITIALIZING"; + case RTTHREADSTATE_TERMINATED: return "TERMINATED"; + case RTTHREADSTATE_RUNNING: return "RUNNING"; + case RTTHREADSTATE_CRITSECT: return "CRITSECT"; + case RTTHREADSTATE_EVENT: return "EVENT"; + case RTTHREADSTATE_EVENT_MULTI: return "EVENT_MULTI"; + case RTTHREADSTATE_FAST_MUTEX: return "FAST_MUTEX"; + case RTTHREADSTATE_MUTEX: return "MUTEX"; + case RTTHREADSTATE_RW_READ: return "RW_READ"; + case RTTHREADSTATE_RW_WRITE: return "RW_WRITE"; + case RTTHREADSTATE_SLEEP: return "SLEEP"; + case RTTHREADSTATE_SPIN_MUTEX: return "SPIN_MUTEX"; + default: return "UnknownThreadState"; + } +} +RT_EXPORT_SYMBOL(RTThreadStateName); + +#endif /* IN_RING3 */ +#ifdef IPRT_WITH_GENERIC_TLS + +/** + * Thread enumerator - clears a TLS entry. + * + * @returns 0. + * @param pNode The thread node. + * @param pvUser The TLS index. + */ +static DECLCALLBACK(int) rtThreadClearTlsEntryCallback(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + RTTLS iTls = (RTTLS)(uintptr_t)pvUser; + ASMAtomicWriteNullPtr(&pThread->apvTlsEntries[iTls]); + return 0; +} + + +/** + * Helper for the generic TLS implementation that clears a given TLS + * entry on all threads. + * + * @param iTls The TLS entry. (valid) + */ +DECLHIDDEN(void) rtThreadClearTlsEntry(RTTLS iTls) +{ + RT_THREAD_LOCK_RD(); + RTAvlPVDoWithAll(&g_ThreadTree, true /* fFromLeft*/, rtThreadClearTlsEntryCallback, (void *)(uintptr_t)iTls); + RT_THREAD_UNLOCK_RD(); +} + +#endif /* IPRT_WITH_GENERIC_TLS */ + + +#if defined(RT_OS_WINDOWS) && defined(IN_RING3) + +/** + * Thread enumeration callback for RTThreadNameThreads + */ +static DECLCALLBACK(int) rtThreadNameThreadCallback(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + rtThreadNativeInformDebugger(pThread); + return 0; +} + +/** + * A function that can be called from the windows debugger to get the names of + * all threads when attaching to a process. + * + * Usage: .call VBoxRT!RTThreadNameThreads() + * + * @returns 0 + * @remarks Do not call from source code as it skips locks. + */ +extern "C" RTDECL(int) RTThreadNameThreads(void); +RTDECL(int) RTThreadNameThreads(void) +{ + return RTAvlPVDoWithAll(&g_ThreadTree, true /* fFromLeft*/, rtThreadNameThreadCallback, NULL); +} + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopy.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/RTStrCopy.c @@ -0,0 +1,52 @@ +/* $Id: RTStrCopy.cpp $ */ +/** @file + * IPRT - RTStrCopy. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc) +{ + size_t cchSrc = strlen(pszSrc); + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc + 1); + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(pszDst, pszSrc, cbDst - 1); + pszDst[cbDst - 1] = '\0'; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopy); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopyEx.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/RTStrCopyEx.c @@ -0,0 +1,54 @@ +/* $Id: RTStrCopyEx.cpp $ */ +/** @file + * IPRT - RTStrCopyEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopyEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchMaxSrc) +{ + const char *pszSrcEol = RTStrEnd(pszSrc, cchMaxSrc); + size_t cchSrc = pszSrcEol ? (size_t)(pszSrcEol - pszSrc) : cchMaxSrc; + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc); + pszDst[cchSrc] = '\0'; + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(pszDst, pszSrc, cbDst - 1); + pszDst[cbDst - 1] = '\0'; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopyEx); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopyP.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/RTStrCopyP.c @@ -0,0 +1,58 @@ +/* $Id: RTStrCopyP.cpp $ */ +/** @file + * IPRT - RTStrCopyP. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopyP(char **ppszDst, size_t *pcbDst, const char *pszSrc) +{ + size_t const cchSrc = strlen(pszSrc); + size_t const cbDst = *pcbDst; + char *pszDst = *ppszDst; + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc + 1); + *ppszDst = pszDst += cchSrc; + *pcbDst -= cchSrc; + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(*ppszDst, pszSrc, cbDst - 1); + *ppszDst = pszDst += cbDst - 1; + *pszDst = '\0'; + *pcbDst = 1; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopyP); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/strformat.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/strformat.c @@ -0,0 +1,858 @@ +/* $Id: strformat.cpp $ */ +/** @file + * IPRT - String Formatter. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Defined Constants * +*********************************************************************************************************************************/ +#define ISDIGIT(c) ((c) >= '0' && (c) <= '9') +/*#define MAX(a, b) ((a) >= (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#include "internal/iprt.h" + +#include +#ifdef IN_RING3 +# include +# include +# include +#endif +#include +#include +#include "internal/string.h" + +/* Wrappers for converting to iprt facilities. */ +#define SSToDS(ptr) ptr +#define kASSERT Assert +#define KENDIAN_LITTLE 1 +#define KENDIAN KENDIAN_LITTLE +#define KSIZE size_t +typedef struct +{ + uint32_t ulLo; + uint32_t ulHi; +} KSIZE64; + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static unsigned _strnlen(const char *psz, unsigned cchMax); +static unsigned _strnlenUtf16(PCRTUTF16 pwsz, unsigned cchMax); +static int rtStrFormatNumber(char *psz, KSIZE64 ullValue, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, unsigned int fFlags); + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param psz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlen(const char *psz, unsigned cchMax) +{ + const char *pszC = psz; + + while (cchMax-- > 0 && *psz != '\0') + psz++; + + return (unsigned)(psz - pszC); +} + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param pwsz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlenUtf16(PCRTUTF16 pwsz, unsigned cchMax) +{ +#ifdef IN_RING3 + unsigned cwc = 0; + while (cchMax-- > 0) + { + RTUNICP cp; + int rc = RTUtf16GetCpEx(&pwsz, &cp); + AssertRC(rc); + if (RT_FAILURE(rc) || !cp) + break; + cwc++; + } + return cwc; +#else /* !IN_RING3 */ + PCRTUTF16 pwszC = pwsz; + + while (cchMax-- > 0 && *pwsz != '\0') + pwsz++; + + return (unsigned)(pwsz - pwszC); +#endif /* !IN_RING3 */ +} + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param pusz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlenUni(PCRTUNICP pusz, unsigned cchMax) +{ + PCRTUNICP puszC = pusz; + + while (cchMax-- > 0 && *pusz != '\0') + pusz++; + + return (unsigned)(pusz - puszC); +} + + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the formatted number. + * @param psz Pointer to output string buffer of sufficient size. + * @param u64Value Value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + */ +RTDECL(int) RTStrFormatNumber(char *psz, uint64_t u64Value, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, + unsigned int fFlags) +{ + return rtStrFormatNumber(psz, *(KSIZE64 *)(void *)&u64Value, uiBase, cchWidth, cchPrecision, fFlags); +} +RT_EXPORT_SYMBOL(RTStrFormatNumber); + + + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the number. + * @param psz Pointer to output string. + * @param ullValue Value. Using the high part is optional. + * @param uiBase Number representation base. + * @param cchWidth Width + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + */ +static int rtStrFormatNumber(char *psz, KSIZE64 ullValue, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, + unsigned int fFlags) +{ + const char *pachDigits = "0123456789abcdef"; + char *pszStart = psz; + int cchMax; + int cchValue; + unsigned long ul; + int i; + int j; + + /* + * Validate and adjust input... + */ + Assert(uiBase >= 2 && uiBase <= 16); + if (fFlags & RTSTR_F_CAPITAL) + pachDigits = "0123456789ABCDEF"; + if (fFlags & RTSTR_F_LEFT) + fFlags &= ~RTSTR_F_ZEROPAD; + if ( (fFlags & RTSTR_F_THOUSAND_SEP) + && ( uiBase != 10 + || (fFlags & RTSTR_F_ZEROPAD))) /** @todo implement RTSTR_F_ZEROPAD + RTSTR_F_THOUSAND_SEP. */ + fFlags &= ~RTSTR_F_THOUSAND_SEP; + + /* + * Determine value length + */ + cchValue = 0; + if (ullValue.ulHi || (fFlags & RTSTR_F_64BIT)) + { + uint64_t u64 = *(uint64_t *)(void *)&ullValue; + if ((fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulHi & 0x80000000)) + u64 = -(int64_t)u64; + do + { + cchValue++; + u64 /= uiBase; + } while (u64); + } + else + { + ul = (fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulLo & 0x80000000) ? -(int32_t)ullValue.ulLo : ullValue.ulLo; + do + { + cchValue++; + ul /= uiBase; + } while (ul); + } + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + if (cchValue <= 3) + fFlags &= ~RTSTR_F_THOUSAND_SEP; + else + cchValue += cchValue / 3 - (cchValue % 3 == 0); + } + + /* + * Sign (+/-). + */ + i = 0; + if (fFlags & RTSTR_F_VALSIGNED) + { + if ((ullValue.ulHi || (fFlags & RTSTR_F_64BIT) ? ullValue.ulHi : ullValue.ulLo) & 0x80000000) + { + ullValue.ulLo = -(int32_t)ullValue.ulLo; + if (ullValue.ulHi) + ullValue.ulHi = ~ullValue.ulHi; + psz[i++] = '-'; + } + else if (fFlags & (RTSTR_F_PLUS | RTSTR_F_BLANK)) + psz[i++] = (char)(fFlags & RTSTR_F_PLUS ? '+' : ' '); + } + + /* + * Special (0/0x). + */ + if ((fFlags & RTSTR_F_SPECIAL) && (uiBase % 8) == 0) + { + psz[i++] = '0'; + if (uiBase == 16) + psz[i++] = (char)(fFlags & RTSTR_F_CAPITAL ? 'X' : 'x'); + } + + /* + * width - only if ZEROPAD + */ + cchMax = 64 - (cchValue + i + 1); /* HACK! 64 bytes seems to be the usual buffer size... */ + cchWidth -= i + cchValue; + if (fFlags & RTSTR_F_ZEROPAD) + while (--cchWidth >= 0 && i < cchMax) + { + AssertBreak(i < cchMax); + psz[i++] = '0'; + cchPrecision--; + } + else if (!(fFlags & RTSTR_F_LEFT) && cchWidth > 0) + { + AssertStmt(cchWidth < cchMax, cchWidth = cchMax - 1); + for (j = i - 1; j >= 0; j--) + psz[cchWidth + j] = psz[j]; + for (j = 0; j < cchWidth; j++) + psz[j] = ' '; + i += cchWidth; + } + + /* + * precision + */ + while (--cchPrecision >= cchValue) + { + AssertBreak(i < cchMax); + psz[i++] = '0'; + } + + psz += i; + + /* + * write number - not good enough but it works + */ + psz += cchValue; + i = -1; + if (ullValue.ulHi || (fFlags & RTSTR_F_64BIT)) + { + uint64_t u64 = *(uint64_t *)(void *)&ullValue; + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + do + { + if ((-i - 1) % 4 == 3) + psz[i--] = ' '; + psz[i--] = pachDigits[u64 % uiBase]; + u64 /= uiBase; + } while (u64); + } + else + { + do + { + psz[i--] = pachDigits[u64 % uiBase]; + u64 /= uiBase; + } while (u64); + } + } + else + { + ul = (fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulLo & 0x80000000) ? -(int32_t)ullValue.ulLo : ullValue.ulLo; + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + do + { + if ((-i - 1) % 4 == 3) + psz[i--] = ' '; + psz[i--] = pachDigits[ul % uiBase]; + ul /= uiBase; + } while (ul); + } + else + { + do + { + psz[i--] = pachDigits[ul % uiBase]; + ul /= uiBase; + } while (ul); + } + } + + /* + * width if RTSTR_F_LEFT + */ + if (fFlags & RTSTR_F_LEFT) + while (--cchWidth >= 0) + *psz++ = ' '; + + *psz = '\0'; + return (unsigned)(psz - pszStart); +} + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Format string. + * @param InArgs Argument list. + */ +RTDECL(size_t) RTStrFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, + const char *pszFormat, va_list InArgs) +{ + va_list args; + KSIZE cch = 0; + const char *pszStartOutput = pszFormat; + + va_copy(args, InArgs); /* make a copy so we can reference it (AMD64 / gcc). */ + + while (*pszFormat != '\0') + { + if (*pszFormat == '%') + { + /* output pending string. */ + if (pszStartOutput != pszFormat) + cch += pfnOutput(pvArgOutput, pszStartOutput, pszFormat - pszStartOutput); + + /* skip '%' */ + pszFormat++; + if (*pszFormat == '%') /* '%%'-> '%' */ + pszStartOutput = pszFormat++; + else + { + unsigned int fFlags = 0; + int cchWidth = -1; + int cchPrecision = -1; + unsigned int uBase = 10; + char chArgSize; + + /* flags */ + for (;;) + { + switch (*pszFormat++) + { + case '#': fFlags |= RTSTR_F_SPECIAL; continue; + case '-': fFlags |= RTSTR_F_LEFT; continue; + case '+': fFlags |= RTSTR_F_PLUS; continue; + case ' ': fFlags |= RTSTR_F_BLANK; continue; + case '0': fFlags |= RTSTR_F_ZEROPAD; continue; + case '\'': fFlags |= RTSTR_F_THOUSAND_SEP; continue; + } + pszFormat--; + break; + } + + /* width */ + if (ISDIGIT(*pszFormat)) + { + for (cchWidth = 0; ISDIGIT(*pszFormat); pszFormat++) + { + cchWidth *= 10; + cchWidth += *pszFormat - '0'; + } + fFlags |= RTSTR_F_WIDTH; + } + else if (*pszFormat == '*') + { + pszFormat++; + cchWidth = va_arg(args, int); + if (cchWidth < 0) + { + cchWidth = -cchWidth; + fFlags |= RTSTR_F_LEFT; + } + fFlags |= RTSTR_F_WIDTH; + } + + /* precision */ + if (*pszFormat == '.') + { + pszFormat++; + if (ISDIGIT(*pszFormat)) + { + for (cchPrecision = 0; ISDIGIT(*pszFormat); pszFormat++) + { + cchPrecision *= 10; + cchPrecision += *pszFormat - '0'; + } + + } + else if (*pszFormat == '*') + { + pszFormat++; + cchPrecision = va_arg(args, int); + } + if (cchPrecision < 0) + cchPrecision = 0; + fFlags |= RTSTR_F_PRECISION; + } + + /* + * Argument size. + */ + chArgSize = *pszFormat; + switch (chArgSize) + { + default: + chArgSize = 0; + break; + + case 'z': + case 'L': + case 'j': + case 't': + pszFormat++; + break; + + case 'l': + pszFormat++; + if (*pszFormat == 'l') + { + chArgSize = 'L'; + pszFormat++; + } + break; + + case 'h': + pszFormat++; + if (*pszFormat == 'h') + { + chArgSize = 'H'; + pszFormat++; + } + break; + + case 'I': /* Used by Win32/64 compilers. */ + if ( pszFormat[1] == '6' + && pszFormat[2] == '4') + { + pszFormat += 3; + chArgSize = 'L'; + } + else if ( pszFormat[1] == '3' + && pszFormat[2] == '2') + { + pszFormat += 3; + chArgSize = 0; + } + else + { + pszFormat += 1; + chArgSize = 'j'; + } + break; + + case 'q': /* Used on BSD platforms. */ + pszFormat++; + chArgSize = 'L'; + break; + } + + /* + * The type. + */ + switch (*pszFormat++) + { + /* char */ + case 'c': + { + char ch; + + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth > 0) + cch += pfnOutput(pvArgOutput, " ", 1); + + ch = (char)va_arg(args, int); + cch += pfnOutput(pvArgOutput, SSToDS(&ch), 1); + + while (--cchWidth > 0) + cch += pfnOutput(pvArgOutput, " ", 1); + break; + } + + case 'S': /* Legacy, conversion done by streams now. */ + case 's': + { + if (chArgSize == 'l') + { + /* utf-16 -> utf-8 */ + int cchStr; + PCRTUTF16 pwszStr = va_arg(args, PRTUTF16); + + if (!VALID_PTR(pwszStr)) + { + static RTUTF16 s_wszNull[] = {'<', 'N', 'U', 'L', 'L', '>', '\0' }; + pwszStr = s_wszNull; + } + cchStr = _strnlenUtf16(pwszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + cchWidth -= cchStr; + while (cchStr-- > 0) + { +/**@todo \#ifndef IN_RC*/ +#ifdef IN_RING3 + RTUNICP Cp; + RTUtf16GetCpEx(&pwszStr, &Cp); + char szUtf8[8]; /* Cp=0x7fffffff -> 6 bytes. */ + char *pszEnd = RTStrPutCp(szUtf8, Cp); + cch += pfnOutput(pvArgOutput, szUtf8, pszEnd - szUtf8); +#else + char ch = (char)*pwszStr++; + cch += pfnOutput(pvArgOutput, &ch, 1); +#endif + } + while (--cchWidth >= 0) + cch += pfnOutput(pvArgOutput, " ", 1); + } + else if (chArgSize == 'L') + { + /* unicp -> utf8 */ + int cchStr; + PCRTUNICP puszStr = va_arg(args, PCRTUNICP); + + if (!VALID_PTR(puszStr)) + { + static RTUNICP s_uszNull[] = {'<', 'N', 'U', 'L', 'L', '>', '\0' }; + puszStr = s_uszNull; + } + cchStr = _strnlenUni(puszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + + cchWidth -= cchStr; + while (cchStr-- > 0) + { +/**@todo \#ifndef IN_RC*/ +#ifdef IN_RING3 + char szUtf8[8]; /* Cp=0x7fffffff -> 6 bytes. */ + char *pszEnd = RTStrPutCp(szUtf8, *puszStr++); + cch += pfnOutput(pvArgOutput, szUtf8, pszEnd - szUtf8); +#else + char ch = (char)*puszStr++; + cch += pfnOutput(pvArgOutput, &ch, 1); +#endif + } + while (--cchWidth >= 0) + cch += pfnOutput(pvArgOutput, " ", 1); + } + else + { + int cchStr; + const char *pszStr = va_arg(args, char*); + + if (!VALID_PTR(pszStr)) + pszStr = ""; + cchStr = _strnlen(pszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + + cch += pfnOutput(pvArgOutput, pszStr, cchStr); + + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + } + break; + } + + /*-----------------*/ + /* integer/pointer */ + /*-----------------*/ + case 'd': + case 'i': + case 'o': + case 'p': + case 'u': + case 'x': + case 'X': + { + char achNum[64]; /* FIXME */ + int cchNum; + uint64_t u64Value; + + switch (pszFormat[-1]) + { + case 'd': /* signed decimal integer */ + case 'i': + fFlags |= RTSTR_F_VALSIGNED; + break; + + case 'o': + uBase = 8; + break; + + case 'p': + fFlags |= RTSTR_F_ZEROPAD; /* Note not standard behaviour (but I like it this way!) */ + uBase = 16; + if (cchWidth < 0) + cchWidth = sizeof(char *) * 2; + break; + + case 'u': + uBase = 10; + break; + + case 'X': + fFlags |= RTSTR_F_CAPITAL; + case 'x': + uBase = 16; + break; + } + + if (pszFormat[-1] == 'p') + u64Value = va_arg(args, uintptr_t); + else if (fFlags & RTSTR_F_VALSIGNED) + { + if (chArgSize == 'L') + { + u64Value = va_arg(args, int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'l') + { + u64Value = va_arg(args, signed long); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned long); + } + else if (chArgSize == 'h') + { + u64Value = va_arg(args, /* signed short */ int); + fFlags |= RTSTR_GET_BIT_FLAG(signed short); + } + else if (chArgSize == 'H') + { + u64Value = va_arg(args, /* int8_t */ int); + fFlags |= RTSTR_GET_BIT_FLAG(int8_t); + } + else if (chArgSize == 'j') + { + u64Value = va_arg(args, /*intmax_t*/ int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'z') + { + u64Value = va_arg(args, size_t); + fFlags |= RTSTR_GET_BIT_FLAG(size_t); + } + else if (chArgSize == 't') + { + u64Value = va_arg(args, ptrdiff_t); + fFlags |= RTSTR_GET_BIT_FLAG(ptrdiff_t); + } + else + { + u64Value = va_arg(args, signed int); + fFlags |= RTSTR_GET_BIT_FLAG(signed int); + } + } + else + { + if (chArgSize == 'L') + { + u64Value = va_arg(args, uint64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'l') + { + u64Value = va_arg(args, unsigned long); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned long); + } + else if (chArgSize == 'h') + { + u64Value = va_arg(args, /* unsigned short */ int); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned short); + } + else if (chArgSize == 'H') + { + u64Value = va_arg(args, /* uint8_t */ int); + fFlags |= RTSTR_GET_BIT_FLAG(uint8_t); + } + else if (chArgSize == 'j') + { + u64Value = va_arg(args, /*uintmax_t*/ int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'z') + { + u64Value = va_arg(args, size_t); + fFlags |= RTSTR_GET_BIT_FLAG(size_t); + } + else if (chArgSize == 't') + { + u64Value = va_arg(args, ptrdiff_t); + fFlags |= RTSTR_GET_BIT_FLAG(ptrdiff_t); + } + else + { + u64Value = va_arg(args, unsigned int); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned int); + } + } + cchNum = RTStrFormatNumber((char *)SSToDS(&achNum), u64Value, uBase, cchWidth, cchPrecision, fFlags); + cch += pfnOutput(pvArgOutput, (char *)SSToDS(&achNum), cchNum); + break; + } + + /* + * Nested extensions. + */ + case 'M': /* replace the format string (not stacked yet). */ + { + pszStartOutput = pszFormat = va_arg(args, const char *); + AssertPtr(pszStartOutput); + break; + } + + case 'N': /* real nesting. */ + { + const char *pszFormatNested = va_arg(args, const char *); + va_list *pArgsNested = va_arg(args, va_list *); + va_list ArgsNested; + va_copy(ArgsNested, *pArgsNested); + Assert(pszFormatNested); + cch += RTStrFormatV(pfnOutput, pvArgOutput, pfnFormat, pvArgFormat, pszFormatNested, ArgsNested); + va_end(ArgsNested); + break; + } + + /* + * IPRT Extensions. + */ + case 'R': + { + if (*pszFormat != '[') + { + pszFormat--; + cch += rtstrFormatRt(pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + else + { + pszFormat--; + cch += rtstrFormatType(pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + break; + } + + /* + * Custom format. + */ + default: + { + if (pfnFormat) + { + pszFormat--; + cch += pfnFormat(pvArgFormat, pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + break; + } + } + pszStartOutput = pszFormat; + } + } + else + pszFormat++; + } + + /* output pending string. */ + if (pszStartOutput != pszFormat) + cch += pfnOutput(pvArgOutput, pszStartOutput, pszFormat - pszStartOutput); + + /* terminate the output */ + pfnOutput(pvArgOutput, NULL, 0); + + return cch; +} +RT_EXPORT_SYMBOL(RTStrFormatV); + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Format string. + * @param ... Argument list. + */ +RTDECL(size_t) RTStrFormat(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, const char *pszFormat, ...) +{ + size_t cch; + va_list args; + va_start(args, pszFormat); + cch = RTStrFormatV(pfnOutput, pvArgOutput, pfnFormat, pvArgFormat, pszFormat, args); + va_end(args); + return cch; +} +RT_EXPORT_SYMBOL(RTStrFormat); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/strformatrt.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/strformatrt.c @@ -0,0 +1,1238 @@ +/* $Id: strformatrt.cpp $ */ +/** @file + * IPRT - IPRT String Formatter Extensions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#ifndef RT_NO_EXPORT_SYMBOL +# define RT_NO_EXPORT_SYMBOL /* don't slurp which then again + slurps arch-specific headers defining symbols */ +#endif +#include "internal/iprt.h" + +#include +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif +#include +#include +#include +#include +#include +#define STRFORMAT_WITH_X86 +#ifdef STRFORMAT_WITH_X86 +# include +#endif +#include "internal/string.h" + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +static char g_szHexDigits[17] = "0123456789abcdef"; + + +/** + * Helper that formats a 16-bit hex word in a IPv6 address. + * + * @returns Length in chars. + * @param pszDst The output buffer. Written from the start. + * @param uWord The word to format as hex. + */ +static size_t rtstrFormatIPv6HexWord(char *pszDst, uint16_t uWord) +{ + size_t off; + uint16_t cDigits; + + if (uWord & UINT16_C(0xff00)) + cDigits = uWord & UINT16_C(0xf000) ? 4 : 3; + else + cDigits = uWord & UINT16_C(0x00f0) ? 2 : 1; + + off = 0; + switch (cDigits) + { + case 4: pszDst[off++] = g_szHexDigits[(uWord >> 12) & 0xf]; + case 3: pszDst[off++] = g_szHexDigits[(uWord >> 8) & 0xf]; + case 2: pszDst[off++] = g_szHexDigits[(uWord >> 4) & 0xf]; + case 1: pszDst[off++] = g_szHexDigits[(uWord >> 0) & 0xf]; + break; + } + pszDst[off] = '\0'; + return off; +} + + +/** + * Helper function to format IPv6 address according to RFC 5952. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param pIpv6Addr IPv6 address + */ +static size_t rtstrFormatIPv6(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PCRTNETADDRIPV6 pIpv6Addr) +{ + size_t cch; /* result */ + bool fEmbeddedIpv4; + size_t cwHexPart; + size_t cwLongestZeroRun; + size_t iLongestZeroStart; + size_t idx; + char szHexWord[8]; + + Assert(pIpv6Addr != NULL); + + /* + * Check for embedded IPv4 address. + * + * IPv4-compatible - ::11.22.33.44 (obsolete) + * IPv4-mapped - ::ffff:11.22.33.44 + * IPv4-translated - ::ffff:0:11.22.33.44 (RFC 2765) + */ + fEmbeddedIpv4 = false; + cwHexPart = RT_ELEMENTS(pIpv6Addr->au16); + if ( pIpv6Addr->au64[0] == 0 + && ( ( pIpv6Addr->au32[2] == 0 + && pIpv6Addr->au32[3] != 0 + && pIpv6Addr->au32[3] != RT_H2BE_U32_C(1) ) + || pIpv6Addr->au32[2] == RT_H2BE_U32_C(0x0000ffff) + || pIpv6Addr->au32[2] == RT_H2BE_U32_C(0xffff0000) ) ) + { + fEmbeddedIpv4 = true; + cwHexPart -= 2; + } + + /* + * Find the longest sequences of two or more zero words. + */ + cwLongestZeroRun = 0; + iLongestZeroStart = 0; + for (idx = 0; idx < cwHexPart; idx++) + if (pIpv6Addr->au16[idx] == 0) + { + size_t iZeroStart = idx; + size_t cwZeroRun; + do + idx++; + while (idx < cwHexPart && pIpv6Addr->au16[idx] == 0); + cwZeroRun = idx - iZeroStart; + if (cwZeroRun > 1 && cwZeroRun > cwLongestZeroRun) + { + cwLongestZeroRun = cwZeroRun; + iLongestZeroStart = iZeroStart; + if (cwZeroRun >= cwHexPart - idx) + break; + } + } + + /* + * Do the formatting. + */ + cch = 0; + if (cwLongestZeroRun == 0) + { + for (idx = 0; idx < cwHexPart; ++idx) + { + if (idx > 0) + cch += pfnOutput(pvArgOutput, ":", 1); + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + } + + if (fEmbeddedIpv4) + cch += pfnOutput(pvArgOutput, ":", 1); + } + else + { + const size_t iLongestZeroEnd = iLongestZeroStart + cwLongestZeroRun; + + if (iLongestZeroStart == 0) + cch += pfnOutput(pvArgOutput, ":", 1); + else + for (idx = 0; idx < iLongestZeroStart; ++idx) + { + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + cch += pfnOutput(pvArgOutput, ":", 1); + } + + if (iLongestZeroEnd == cwHexPart) + cch += pfnOutput(pvArgOutput, ":", 1); + else + { + for (idx = iLongestZeroEnd; idx < cwHexPart; ++idx) + { + cch += pfnOutput(pvArgOutput, ":", 1); + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + } + + if (fEmbeddedIpv4) + cch += pfnOutput(pvArgOutput, ":", 1); + } + } + + if (fEmbeddedIpv4) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + pIpv6Addr->au8[12], + pIpv6Addr->au8[13], + pIpv6Addr->au8[14], + pIpv6Addr->au8[15]); + + return cch; +} + + +/** + * Callback to format iprt formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize) +{ + const char *pszFormatOrg = *ppszFormat; + char ch = *(*ppszFormat)++; + size_t cch; + char szBuf[80]; + + if (ch == 'R') + { + ch = *(*ppszFormat)++; + switch (ch) + { + /* + * Groups 1 and 2. + */ + case 'T': + case 'G': + case 'H': + case 'R': + case 'C': + case 'I': + case 'X': + case 'U': + { + /* + * Interpret the type. + */ + typedef enum + { + RTSF_INT, + RTSF_INTW, + RTSF_BOOL, + RTSF_FP16, + RTSF_FP32, + RTSF_FP64, + RTSF_IPV4, + RTSF_IPV6, + RTSF_MAC, + RTSF_NETADDR, + RTSF_UUID + } RTSF; + static const struct + { + uint8_t cch; /**< the length of the string. */ + char sz[10]; /**< the part following 'R'. */ + uint8_t cb; /**< the size of the type. */ + uint8_t u8Base; /**< the size of the type. */ + RTSF enmFormat; /**< The way to format it. */ + uint16_t fFlags; /**< additional RTSTR_F_* flags. */ + } + /** Sorted array of types, looked up using binary search! */ + s_aTypes[] = + { +#define STRMEM(str) sizeof(str) - 1, str + { STRMEM("Ci"), sizeof(RTINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Cp"), sizeof(RTCCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Cr"), sizeof(RTCCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Cu"), sizeof(RTUINT), 10, RTSF_INT, 0 }, + { STRMEM("Cv"), sizeof(void *), 16, RTSF_INTW, 0 }, + { STRMEM("Cx"), sizeof(RTUINT), 16, RTSF_INT, 0 }, + { STRMEM("Gi"), sizeof(RTGCINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Gp"), sizeof(RTGCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Gr"), sizeof(RTGCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Gu"), sizeof(RTGCUINT), 10, RTSF_INT, 0 }, + { STRMEM("Gv"), sizeof(RTGCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Gx"), sizeof(RTGCUINT), 16, RTSF_INT, 0 }, + { STRMEM("Hi"), sizeof(RTHCINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Hp"), sizeof(RTHCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Hr"), sizeof(RTHCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Hu"), sizeof(RTHCUINT), 10, RTSF_INT, 0 }, + { STRMEM("Hv"), sizeof(RTHCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Hx"), sizeof(RTHCUINT), 16, RTSF_INT, 0 }, + { STRMEM("I16"), sizeof(int16_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I32"), sizeof(int32_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I64"), sizeof(int64_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I8"), sizeof(int8_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Rv"), sizeof(RTRCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Tbool"), sizeof(bool), 10, RTSF_BOOL, 0 }, + { STRMEM("Tfile"), sizeof(RTFILE), 10, RTSF_INT, 0 }, + { STRMEM("Tfmode"), sizeof(RTFMODE), 16, RTSF_INTW, 0 }, + { STRMEM("Tfoff"), sizeof(RTFOFF), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tfp16"), sizeof(RTFAR16), 16, RTSF_FP16, RTSTR_F_ZEROPAD }, + { STRMEM("Tfp32"), sizeof(RTFAR32), 16, RTSF_FP32, RTSTR_F_ZEROPAD }, + { STRMEM("Tfp64"), sizeof(RTFAR64), 16, RTSF_FP64, RTSTR_F_ZEROPAD }, + { STRMEM("Tgid"), sizeof(RTGID), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tino"), sizeof(RTINODE), 16, RTSF_INTW, 0 }, + { STRMEM("Tint"), sizeof(RTINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tiop"), sizeof(RTIOPORT), 16, RTSF_INTW, 0 }, + { STRMEM("Tldrm"), sizeof(RTLDRMOD), 16, RTSF_INTW, 0 }, + { STRMEM("Tmac"), sizeof(PCRTMAC), 16, RTSF_MAC, 0 }, + { STRMEM("Tnaddr"), sizeof(PCRTNETADDR), 10, RTSF_NETADDR,0 }, + { STRMEM("Tnaipv4"), sizeof(RTNETADDRIPV4), 10, RTSF_IPV4, 0 }, + { STRMEM("Tnaipv6"), sizeof(PCRTNETADDRIPV6),16, RTSF_IPV6, 0 }, + { STRMEM("Tnthrd"), sizeof(RTNATIVETHREAD), 16, RTSF_INTW, 0 }, + { STRMEM("Tproc"), sizeof(RTPROCESS), 16, RTSF_INTW, 0 }, + { STRMEM("Tptr"), sizeof(RTUINTPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Treg"), sizeof(RTCCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Tsel"), sizeof(RTSEL), 16, RTSF_INTW, 0 }, + { STRMEM("Tsem"), sizeof(RTSEMEVENT), 16, RTSF_INTW, 0 }, + { STRMEM("Tsock"), sizeof(RTSOCKET), 10, RTSF_INT, 0 }, + { STRMEM("Tthrd"), sizeof(RTTHREAD), 16, RTSF_INTW, 0 }, + { STRMEM("Tuid"), sizeof(RTUID), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tuint"), sizeof(RTUINT), 10, RTSF_INT, 0 }, + { STRMEM("Tunicp"), sizeof(RTUNICP), 16, RTSF_INTW, RTSTR_F_ZEROPAD }, + { STRMEM("Tutf16"), sizeof(RTUTF16), 16, RTSF_INTW, RTSTR_F_ZEROPAD }, + { STRMEM("Tuuid"), sizeof(PCRTUUID), 16, RTSF_UUID, 0 }, + { STRMEM("Txint"), sizeof(RTUINT), 16, RTSF_INT, 0 }, + { STRMEM("U16"), sizeof(uint16_t), 10, RTSF_INT, 0 }, + { STRMEM("U32"), sizeof(uint32_t), 10, RTSF_INT, 0 }, + { STRMEM("U64"), sizeof(uint64_t), 10, RTSF_INT, 0 }, + { STRMEM("U8"), sizeof(uint8_t), 10, RTSF_INT, 0 }, + { STRMEM("X16"), sizeof(uint16_t), 16, RTSF_INT, 0 }, + { STRMEM("X32"), sizeof(uint32_t), 16, RTSF_INT, 0 }, + { STRMEM("X64"), sizeof(uint64_t), 16, RTSF_INT, 0 }, + { STRMEM("X8"), sizeof(uint8_t), 16, RTSF_INT, 0 }, +#undef STRMEM + }; + static const char s_szNull[] = ""; + + const char *pszType = *ppszFormat - 1; + int iStart = 0; + int iEnd = RT_ELEMENTS(s_aTypes) - 1; + int i = RT_ELEMENTS(s_aTypes) / 2; + + union + { + uint8_t u8; + uint16_t u16; + uint32_t u32; + uint64_t u64; + int8_t i8; + int16_t i16; + int32_t i32; + int64_t i64; + RTFAR16 fp16; + RTFAR32 fp32; + RTFAR64 fp64; + bool fBool; + PCRTMAC pMac; + RTNETADDRIPV4 Ipv4Addr; + PCRTNETADDRIPV6 pIpv6Addr; + PCRTNETADDR pNetAddr; + PCRTUUID pUuid; + } u; + + AssertMsg(!chArgSize, ("Not argument size '%c' for RT types! '%.10s'\n", chArgSize, pszFormatOrg)); + + /* + * Lookup the type - binary search. + */ + for (;;) + { + int iDiff = strncmp(pszType, s_aTypes[i].sz, s_aTypes[i].cch); + if (!iDiff) + break; + if (iEnd == iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + i = iStart + (iEnd - iStart) / 2; + } + + /* + * Advance the format string and merge flags. + */ + *ppszFormat += s_aTypes[i].cch - 1; + fFlags |= s_aTypes[i].fFlags; + + /* + * Fetch the argument. + * It's important that a signed value gets sign-extended up to 64-bit. + */ + RT_ZERO(u); + if (fFlags & RTSTR_F_VALSIGNED) + { + switch (s_aTypes[i].cb) + { + case sizeof(int8_t): + u.i64 = va_arg(*pArgs, /*int8_t*/int); + fFlags |= RTSTR_F_8BIT; + break; + case sizeof(int16_t): + u.i64 = va_arg(*pArgs, /*int16_t*/int); + fFlags |= RTSTR_F_16BIT; + break; + case sizeof(int32_t): + u.i64 = va_arg(*pArgs, int32_t); + fFlags |= RTSTR_F_32BIT; + break; + case sizeof(int64_t): + u.i64 = va_arg(*pArgs, int64_t); + fFlags |= RTSTR_F_64BIT; + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + } + else + { + switch (s_aTypes[i].cb) + { + case sizeof(uint8_t): + u.u8 = va_arg(*pArgs, /*uint8_t*/unsigned); + fFlags |= RTSTR_F_8BIT; + break; + case sizeof(uint16_t): + u.u16 = va_arg(*pArgs, /*uint16_t*/unsigned); + fFlags |= RTSTR_F_16BIT; + break; + case sizeof(uint32_t): + u.u32 = va_arg(*pArgs, uint32_t); + fFlags |= RTSTR_F_32BIT; + break; + case sizeof(uint64_t): + u.u64 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + break; + case sizeof(RTFAR32): + u.fp32 = va_arg(*pArgs, RTFAR32); + break; + case sizeof(RTFAR64): + u.fp64 = va_arg(*pArgs, RTFAR64); + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + } + + /* + * Format the output. + */ + switch (s_aTypes[i].enmFormat) + { + case RTSF_INT: + { + cch = RTStrFormatNumber(szBuf, u.u64, s_aTypes[i].u8Base, cchWidth, cchPrecision, fFlags); + break; + } + + /* hex which defaults to max width. */ + case RTSF_INTW: + { + Assert(s_aTypes[i].u8Base == 16); + if (cchWidth < 0) + { + cchWidth = s_aTypes[i].cb * 2 + (fFlags & RTSTR_F_SPECIAL ? 2 : 0); + fFlags |= RTSTR_F_ZEROPAD; + } + cch = RTStrFormatNumber(szBuf, u.u64, s_aTypes[i].u8Base, cchWidth, cchPrecision, fFlags); + break; + } + + case RTSF_BOOL: + { + static const char s_szTrue[] = "true "; + static const char s_szFalse[] = "false"; + if (u.u64 == 1) + return pfnOutput(pvArgOutput, s_szTrue, sizeof(s_szTrue) - 1); + if (u.u64 == 0) + return pfnOutput(pvArgOutput, s_szFalse, sizeof(s_szFalse) - 1); + /* invalid boolean value */ + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "!%lld!", u.u64); + } + + case RTSF_FP16: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp16.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp16.off, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + cch = 4 + 1 + 4; + break; + } + case RTSF_FP32: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp32.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp32.off, 16, 8, -1, fFlags | RTSTR_F_32BIT); + Assert(cch == 8); + cch = 4 + 1 + 8; + break; + } + case RTSF_FP64: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp64.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp64.off, 16, 16, -1, fFlags | RTSTR_F_64BIT); + Assert(cch == 16); + cch = 4 + 1 + 16; + break; + } + + case RTSF_IPV4: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + u.Ipv4Addr.au8[0], + u.Ipv4Addr.au8[1], + u.Ipv4Addr.au8[2], + u.Ipv4Addr.au8[3]); + + case RTSF_IPV6: + { + if (VALID_PTR(u.pIpv6Addr)) + return rtstrFormatIPv6(pfnOutput, pvArgOutput, u.pIpv6Addr); + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_MAC: + { + if (VALID_PTR(u.pMac)) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x:%02x:%02x:%02x:%02x:%02x", + u.pMac->au8[0], + u.pMac->au8[1], + u.pMac->au8[2], + u.pMac->au8[3], + u.pMac->au8[4], + u.pMac->au8[5]); + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_NETADDR: + { + if (VALID_PTR(u.pNetAddr)) + { + switch (u.pNetAddr->enmType) + { + case RTNETADDRTYPE_IPV4: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3]); + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u:%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3], + u.pNetAddr->uPort); + + case RTNETADDRTYPE_IPV6: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return rtstrFormatIPv6(pfnOutput, pvArgOutput, &u.pNetAddr->uAddr.IPv6); + + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "[%RTnaipv6]:%u", + &u.pNetAddr->uAddr.IPv6, + u.pNetAddr->uPort); + + case RTNETADDRTYPE_MAC: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x:%02x:%02x:%02x:%02x:%02x", + u.pNetAddr->uAddr.Mac.au8[0], + u.pNetAddr->uAddr.Mac.au8[1], + u.pNetAddr->uAddr.Mac.au8[2], + u.pNetAddr->uAddr.Mac.au8[3], + u.pNetAddr->uAddr.Mac.au8[4], + u.pNetAddr->uAddr.Mac.au8[5]); + + default: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "unsupported-netaddr-type=%u", u.pNetAddr->enmType); + + } + } + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_UUID: + { + if (VALID_PTR(u.pUuid)) + { + /* cannot call RTUuidToStr because of GC/R0. */ + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + RT_H2LE_U32(u.pUuid->Gen.u32TimeLow), + RT_H2LE_U16(u.pUuid->Gen.u16TimeMid), + RT_H2LE_U16(u.pUuid->Gen.u16TimeHiAndVersion), + u.pUuid->Gen.u8ClockSeqHiAndReserved, + u.pUuid->Gen.u8ClockSeqLow, + u.pUuid->Gen.au8Node[0], + u.pUuid->Gen.au8Node[1], + u.pUuid->Gen.au8Node[2], + u.pUuid->Gen.au8Node[3], + u.pUuid->Gen.au8Node[4], + u.pUuid->Gen.au8Node[5]); + } + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + default: + AssertMsgFailed(("Internal error %d\n", s_aTypes[i].enmFormat)); + return 0; + } + + /* + * Finally, output the formatted string and return. + */ + return pfnOutput(pvArgOutput, szBuf, cch); + } + + + /* Group 3 */ + + /* + * Base name printing. + */ + case 'b': + { + switch (*(*ppszFormat)++) + { + case 'n': + { + const char *pszLastSep; + const char *psz = pszLastSep = va_arg(*pArgs, const char *); + if (!VALID_PTR(psz)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + while ((ch = *psz) != '\0') + { + if (RTPATH_IS_SEP(ch)) + { + do + psz++; + while ((ch = *psz) != '\0' && RTPATH_IS_SEP(ch)); + if (!ch) + break; + pszLastSep = psz; + } + psz++; + } + + return pfnOutput(pvArgOutput, pszLastSep, psz - pszLastSep); + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + break; + } + + + /* + * Pretty function / method name printing. + */ + case 'f': + { + switch (*(*ppszFormat)++) + { + /* + * Pretty function / method name printing. + * This isn't 100% right (see classic signal prototype) and it assumes + * standardized names, but it'll do for today. + */ + case 'n': + { + const char *pszStart; + const char *psz = pszStart = va_arg(*pArgs, const char *); + if (!VALID_PTR(psz)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + while ((ch = *psz) != '\0' && ch != '(') + { + if (RT_C_IS_BLANK(ch)) + { + psz++; + while ((ch = *psz) != '\0' && (RT_C_IS_BLANK(ch) || ch == '(')) + psz++; + if (ch) + pszStart = psz; + } + else if (ch == '(') + break; + else + psz++; + } + + return pfnOutput(pvArgOutput, pszStart, psz - pszStart); + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + break; + } + + + /* + * hex dumping and COM/XPCOM. + */ + case 'h': + { + switch (*(*ppszFormat)++) + { + /* + * Hex stuff. + */ + case 'x': + { + uint8_t *pu8 = va_arg(*pArgs, uint8_t *); + if (cchPrecision < 0) + cchPrecision = 16; + if (pu8) + { + switch (*(*ppszFormat)++) + { + /* + * Regular hex dump. + */ + case 'd': + { + int off = 0; + cch = 0; + + if (cchWidth <= 0) + cchWidth = 16; + + while (off < cchPrecision) + { + int i; + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s%0*p %04x:", off ? "\n" : "", sizeof(pu8) * 2, (uintptr_t)pu8, off); + for (i = 0; i < cchWidth && off + i < cchPrecision ; i++) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + off + i < cchPrecision ? !(i & 7) && i ? "-%02x" : " %02x" : " ", pu8[i]); + while (i++ < cchWidth) + cch += pfnOutput(pvArgOutput, " ", 3); + + cch += pfnOutput(pvArgOutput, " ", 1); + + for (i = 0; i < cchWidth && off + i < cchPrecision; i++) + { + uint8_t u8 = pu8[i]; + cch += pfnOutput(pvArgOutput, u8 < 127 && u8 >= 32 ? (const char *)&u8 : ".", 1); + } + + /* next */ + pu8 += cchWidth; + off += cchWidth; + } + return cch; + } + + /* + * Hex string. + */ + case 's': + { + if (cchPrecision-- > 0) + { + cch = RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%02x", *pu8++); + for (; cchPrecision > 0; cchPrecision--, pu8++) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, " %02x", *pu8); + return cch; + } + break; + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + } + else + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + break; + } + + +#ifdef IN_RING3 + /* + * XPCOM / COM status code: %Rhrc, %Rhrf, %Rhra + * ASSUMES: If Windows Then COM else XPCOM. + */ + case 'r': + { + uint32_t hrc = va_arg(*pArgs, uint32_t); + PCRTCOMERRMSG pMsg = RTErrCOMGet(hrc); + switch (*(*ppszFormat)++) + { + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull,strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (0x%08X) - %s", pMsg->pszDefine, hrc, pMsg->pszMsgFull); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + break; + } +#endif /* IN_RING3 */ + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + + } + break; + } + + /* + * iprt status code: %Rrc, %Rrs, %Rrf, %Rra. + */ + case 'r': + { + int rc = va_arg(*pArgs, int); +#ifdef IN_RING3 /* we don't want this anywhere else yet. */ + PCRTSTATUSMSG pMsg = RTErrGet(rc); + switch (*(*ppszFormat)++) + { + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 's': + return pfnOutput(pvArgOutput, pMsg->pszMsgShort, strlen(pMsg->pszMsgShort)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull, strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (%d) - %s", pMsg->pszDefine, rc, pMsg->pszMsgFull); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } +#else /* !IN_RING3 */ + switch (*(*ppszFormat)++) + { + case 'c': + case 's': + case 'f': + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%d", rc); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } +#endif /* !IN_RING3 */ + break; + } + +#if defined(IN_RING3) + /* + * Windows status code: %Rwc, %Rwf, %Rwa + */ + case 'w': + { + long rc = va_arg(*pArgs, long); +# if defined(RT_OS_WINDOWS) + PCRTWINERRMSG pMsg = RTErrWinGet(rc); +# endif + switch (*(*ppszFormat)++) + { +# if defined(RT_OS_WINDOWS) + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull,strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (0x%08X) - %s", pMsg->pszDefine, rc, pMsg->pszMsgFull); +# else + case 'c': + case 'f': + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "0x%08X", rc); +# endif + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + break; + } +#endif /* IN_RING3 */ + + /* + * Group 4, structure dumpers. + */ + case 'D': + { + /* + * Interpret the type. + */ + typedef enum + { + RTST_TIMESPEC + } RTST; +/** Set if it's a pointer */ +#define RTST_FLAGS_POINTER RT_BIT(0) + static const struct + { + uint8_t cch; /**< the length of the string. */ + char sz[16-2]; /**< the part following 'R'. */ + uint8_t cb; /**< the size of the argument. */ + uint8_t fFlags; /**< RTST_FLAGS_* */ + RTST enmType; /**< The structure type. */ + } + /** Sorted array of types, looked up using binary search! */ + s_aTypes[] = + { +#define STRMEM(str) sizeof(str) - 1, str + { STRMEM("Dtimespec"), sizeof(PCRTTIMESPEC), RTST_FLAGS_POINTER, RTST_TIMESPEC}, +#undef STRMEM + }; + const char *pszType = *ppszFormat - 1; + int iStart = 0; + int iEnd = RT_ELEMENTS(s_aTypes) - 1; + int i = RT_ELEMENTS(s_aTypes) / 2; + + union + { + const void *pv; + uint64_t u64; + PCRTTIMESPEC pTimeSpec; + } u; + + AssertMsg(!chArgSize, ("Not argument size '%c' for RT types! '%.10s'\n", chArgSize, pszFormatOrg)); + + /* + * Lookup the type - binary search. + */ + for (;;) + { + int iDiff = strncmp(pszType, s_aTypes[i].sz, s_aTypes[i].cch); + if (!iDiff) + break; + if (iEnd == iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + i = iStart + (iEnd - iStart) / 2; + } + *ppszFormat += s_aTypes[i].cch - 1; + + /* + * Fetch the argument. + */ + u.u64 = 0; + switch (s_aTypes[i].cb) + { + case sizeof(const void *): + u.pv = va_arg(*pArgs, const void *); + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + + /* + * If it's a pointer, we'll check if it's valid before going on. + */ + if ((s_aTypes[i].fFlags & RTST_FLAGS_POINTER) && !VALID_PTR(u.pv)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + /* + * Format the output. + */ + switch (s_aTypes[i].enmType) + { + case RTST_TIMESPEC: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, NULL, "%'lld ns", RTTimeSpecGetNano(u.pTimeSpec)); + + default: + AssertMsgFailed(("Invalid/unhandled enmType=%d\n", s_aTypes[i].enmType)); + break; + } + break; + } + +#ifdef IN_RING3 + /* + * Group 5, XML / HTML escapers. + */ + case 'M': + { + char chWhat = (*ppszFormat)[0]; + bool fAttr = chWhat == 'a'; + char chType = (*ppszFormat)[1]; + AssertMsgBreak(chWhat == 'a' || chWhat == 'e', ("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + *ppszFormat += 2; + switch (chType) + { + case 's': + { + static const char s_szElemEscape[] = "<>&\"'"; + static const char s_szAttrEscape[] = "<>&\"\n\r"; /* more? */ + const char * const pszEscape = fAttr ? s_szAttrEscape : s_szElemEscape; + size_t const cchEscape = (fAttr ? RT_ELEMENTS(s_szAttrEscape) : RT_ELEMENTS(s_szElemEscape)) - 1; + size_t cchOutput = 0; + const char *pszStr = va_arg(*pArgs, char *); + ssize_t cchStr; + ssize_t offCur; + ssize_t offLast; + + if (!VALID_PTR(pszStr)) + pszStr = ""; + cchStr = RTStrNLen(pszStr, (unsigned)cchPrecision); + + if (fAttr) + cchOutput += pfnOutput(pvArgOutput, "\"", 1); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cchOutput += pfnOutput(pvArgOutput, " ", 1); + + offLast = offCur = 0; + while (offCur < cchStr) + { + if (memchr(pszEscape, pszStr[offCur], cchEscape)) + { + if (offLast < offCur) + cchOutput += pfnOutput(pvArgOutput, &pszStr[offLast], offCur - offLast); + switch (pszStr[offCur]) + { + case '<': cchOutput += pfnOutput(pvArgOutput, "<", 4); break; + case '>': cchOutput += pfnOutput(pvArgOutput, ">", 4); break; + case '&': cchOutput += pfnOutput(pvArgOutput, "&", 5); break; + case '\'': cchOutput += pfnOutput(pvArgOutput, "'", 6); break; + case '"': cchOutput += pfnOutput(pvArgOutput, """, 6); break; + case '\n': cchOutput += pfnOutput(pvArgOutput, " ", 5); break; + case '\r': cchOutput += pfnOutput(pvArgOutput, " ", 5); break; + default: + AssertFailed(); + } + offLast = offCur + 1; + } + offCur++; + } + if (offLast < offCur) + cchOutput += pfnOutput(pvArgOutput, &pszStr[offLast], offCur - offLast); + + while (--cchWidth >= cchStr) + cchOutput += pfnOutput(pvArgOutput, " ", 1); + if (fAttr) + cchOutput += pfnOutput(pvArgOutput, "\"", 1); + return cchOutput; + } + + default: + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + } + break; + } +#endif /* IN_RING3 */ + + + /* + * Groups 6 - CPU Architecture Register Formatters. + * "%RAarch[reg]" + */ + case 'A': + { + char const * const pszArch = *ppszFormat; + const char *pszReg = pszArch; + size_t cchOutput = 0; + int cPrinted = 0; + size_t cchReg; + + /* Parse out the */ + while ((ch = *pszReg++) && ch != '[') + { /* nothing */ } + AssertMsgBreak(ch == '[', ("Malformed IPRT architecture register format type '%.10s'!\n", pszFormatOrg)); + + cchReg = 0; + while ((ch = pszReg[cchReg]) && ch != ']') + cchReg++; + AssertMsgBreak(ch == ']', ("Malformed IPRT architecture register format type '%.10s'!\n", pszFormatOrg)); + + *ppszFormat = &pszReg[cchReg + 1]; + + +#define REG_EQUALS(a_szReg) (sizeof(a_szReg) - 1 == cchReg && !strncmp(a_szReg, pszReg, sizeof(a_szReg) - 1)) +#define REG_OUT_BIT(a_uVal, a_fBitMask, a_szName) \ + do { \ + if ((a_uVal) & (a_fBitMask)) \ + { \ + if (!cPrinted++) \ + cchOutput += pfnOutput(pvArgOutput, "{" a_szName, sizeof(a_szName)); \ + else \ + cchOutput += pfnOutput(pvArgOutput, "," a_szName, sizeof(a_szName)); \ + (a_uVal) &= ~(a_fBitMask); \ + } \ + } while (0) +#define REG_OUT_CLOSE(a_uVal) \ + do { \ + if ((a_uVal)) \ + { \ + cchOutput += pfnOutput(pvArgOutput, !cPrinted ? "{unkn=" : ",unkn=", 6); \ + cch = RTStrFormatNumber(&szBuf[0], (a_uVal), 16, 1, -1, fFlags); \ + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); \ + cPrinted++; \ + } \ + if (cPrinted) \ + cchOutput += pfnOutput(pvArgOutput, "}", 1); \ + } while (0) + + + if (0) + { /* dummy */ } +#ifdef STRFORMAT_WITH_X86 + /* + * X86 & AMD64. + */ + else if ( pszReg - pszArch == 3 + 1 + && pszArch[0] == 'x' + && pszArch[1] == '8' + && pszArch[2] == '6') + { + if (REG_EQUALS("cr0")) + { + uint64_t cr0 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + cch = RTStrFormatNumber(&szBuf[0], cr0, 16, 8, -1, fFlags | RTSTR_F_ZEROPAD); + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); + REG_OUT_BIT(cr0, X86_CR0_PE, "PE"); + REG_OUT_BIT(cr0, X86_CR0_MP, "MP"); + REG_OUT_BIT(cr0, X86_CR0_EM, "EM"); + REG_OUT_BIT(cr0, X86_CR0_TS, "DE"); + REG_OUT_BIT(cr0, X86_CR0_ET, "ET"); + REG_OUT_BIT(cr0, X86_CR0_NE, "NE"); + REG_OUT_BIT(cr0, X86_CR0_WP, "WP"); + REG_OUT_BIT(cr0, X86_CR0_AM, "AM"); + REG_OUT_BIT(cr0, X86_CR0_NW, "NW"); + REG_OUT_BIT(cr0, X86_CR0_CD, "CD"); + REG_OUT_BIT(cr0, X86_CR0_PG, "PG"); + REG_OUT_CLOSE(cr0); + } + else if (REG_EQUALS("cr4")) + { + uint64_t cr4 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + cch = RTStrFormatNumber(&szBuf[0], cr4, 16, 8, -1, fFlags | RTSTR_F_ZEROPAD); + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); + REG_OUT_BIT(cr4, X86_CR4_VME, "VME"); + REG_OUT_BIT(cr4, X86_CR4_PVI, "PVI"); + REG_OUT_BIT(cr4, X86_CR4_TSD, "TSD"); + REG_OUT_BIT(cr4, X86_CR4_DE, "DE"); + REG_OUT_BIT(cr4, X86_CR4_PSE, "PSE"); + REG_OUT_BIT(cr4, X86_CR4_PAE, "PAE"); + REG_OUT_BIT(cr4, X86_CR4_MCE, "MCE"); + REG_OUT_BIT(cr4, X86_CR4_PGE, "PGE"); + REG_OUT_BIT(cr4, X86_CR4_PCE, "PCE"); + REG_OUT_BIT(cr4, X86_CR4_OSFXSR, "OSFXSR"); + REG_OUT_BIT(cr4, X86_CR4_OSXMMEEXCPT, "OSXMMEEXCPT"); + REG_OUT_BIT(cr4, X86_CR4_VMXE, "VMXE"); + REG_OUT_BIT(cr4, X86_CR4_SMXE, "SMXE"); + REG_OUT_BIT(cr4, X86_CR4_PCIDE, "PCIDE"); + REG_OUT_BIT(cr4, X86_CR4_OSXSAVE, "OSXSAVE"); + REG_OUT_BIT(cr4, X86_CR4_SMEP, "SMEP"); + REG_OUT_BIT(cr4, X86_CR4_SMAP, "SMAP"); + REG_OUT_CLOSE(cr4); + } + else + AssertMsgFailed(("Unknown x86 register specified in '%.10s'!\n", pszFormatOrg)); + } +#endif + else + AssertMsgFailed(("Unknown architecture specified in '%.10s'!\n", pszFormatOrg)); +#undef REG_OUT_BIT +#undef REG_OUT_CLOSE +#undef REG_EQUALS + return cchOutput; + } + + /* + * Invalid/Unknown. Bitch about it. + */ + default: + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + break; + } + } + else + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + + NOREF(pszFormatOrg); + return 0; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/strformattype.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/strformattype.c @@ -0,0 +1,476 @@ +/* $Id: strformattype.cpp $ */ +/** @file + * IPRT - IPRT String Formatter Extensions, Dynamic Types. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/string.h" + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#ifdef RT_STRICT +# define RTSTRFORMATTYPE_WITH_LOCKING +#endif +#ifdef RTSTRFORMATTYPE_WITH_LOCKING +# define RTSTRFORMATTYPE_LOCK_OFFSET 0x7fff0000 +#endif + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** + * Description of a registered formatting type. + * + * In GC we'll be using offsets instead of pointers just to try avoid having to + * do the bothersome relocating. This of course assumes that all the relevant + * code stays within the same mapping. + */ +typedef struct RTSTRDYNFMT +{ + /** The length of the type. */ + uint8_t cchType; + /** The type name. */ + char szType[47]; + /** The handler function. + * In GC the offset is relative to g_aTypes[0], so that &g_aTypes[0] + offHandler + * gives the actual address. */ +#ifdef IN_RC + int32_t offHandler; +#else + PFNRTSTRFORMATTYPE pfnHandler; +#endif + /** Callback argument. */ + void * volatile pvUser; +#if ARCH_BITS == 32 + /** Size alignment padding. */ + char abPadding[8]; +#endif +} RTSTRDYNFMT; +AssertCompileSizeAlignment(RTSTRDYNFMT, 32); +typedef RTSTRDYNFMT *PRTSTRDYNFMT; +typedef RTSTRDYNFMT const *PCRTSTRDYNFMT; + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The registered types, sorted for binary lookup. + * We use a static array here because it avoids RTMemAlloc dependencies+leaks. */ +static RTSTRDYNFMT g_aTypes[64]; +/** The number of registered types. */ +static uint32_t g_cTypes = 0; +#ifdef RTSTRFORMATTYPE_WITH_LOCKING +/** This is just a thing we assert/spin on. + * Zero == unlocked, negative == write locked, positive == read locked. + * + * The user should do all the serialization and we'll smack his fingers in + * strict builds if he doesn't. */ +static int32_t volatile g_i32Spinlock = 0; +#endif + + +/** + * Locks the stuff for updating. + * + * Mostly for check that the caller is doing his job. + */ +DECLINLINE(void) rtstrFormatTypeWriteLock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + if (RT_UNLIKELY(!ASMAtomicCmpXchgS32(&g_i32Spinlock, -RTSTRFORMATTYPE_LOCK_OFFSET, 0))) + { + unsigned volatile i; + + AssertFailed(); + for (i = 0;; i++) + if ( !g_i32Spinlock + && ASMAtomicCmpXchgS32(&g_i32Spinlock, -RTSTRFORMATTYPE_LOCK_OFFSET, 0)) + break; + } +#endif +} + + +/** + * Undoing rtstrFormatTypeWriteLock. + */ +DECLINLINE(void) rtstrFormatTypeWriteUnlock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + Assert(g_i32Spinlock < 0); + ASMAtomicAddS32(&g_i32Spinlock, RTSTRFORMATTYPE_LOCK_OFFSET); +#endif +} + + +/** + * Locks the stuff for reading. + * + * This is just cheap stuff to make sure the caller is doing the right thing. + */ +DECLINLINE(void) rtstrFormatTypeReadLock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + if (RT_UNLIKELY(ASMAtomicIncS32(&g_i32Spinlock) < 0)) + { + unsigned volatile i; + + AssertFailed(); + for (i = 0;; i++) + if (ASMAtomicUoReadS32(&g_i32Spinlock) > 0) + break; + } +#endif +} + + +/** + * Undoing rtstrFormatTypeReadLock. + */ +DECLINLINE(void) rtstrFormatTypeReadUnlock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + Assert(g_i32Spinlock > 0); + ASMAtomicDecS32(&g_i32Spinlock); +#endif +} + + +/** + * Compares a type string with a type entry, the string doesn't need to be terminated. + * + * @returns Same as memcmp. + * @param pszType The type string, doesn't need to be terminated. + * @param cchType The number of chars in @a pszType to compare. + * @param pType The type entry to compare with. + */ +DECLINLINE(int) rtstrFormatTypeCompare(const char *pszType, size_t cchType, PCRTSTRDYNFMT pType) +{ + size_t cch = RT_MIN(cchType, pType->cchType); + int iDiff = memcmp(pszType, pType->szType, cch); + if (!iDiff) + { + if (cchType == pType->cchType) + return 0; + iDiff = cchType < pType->cchType ? -1 : 1; + } + return iDiff; +} + + +/** + * Looks up a type entry. + * + * @returns The type index, -1 on failure. + * @param pszType The type to look up. This doesn't have to be terminated. + * @param cchType The length of the type. + */ +DECLINLINE(int32_t) rtstrFormatTypeLookup(const char *pszType, size_t cchType) +{ + /* + * Lookup the type - binary search. + */ + int32_t iStart = 0; + int32_t iEnd = g_cTypes - 1; + int32_t i = iEnd / 2; + for (;;) + { + int iDiff = rtstrFormatTypeCompare(pszType, cchType, &g_aTypes[i]); + if (!iDiff) + return i; + if (iEnd == iStart) + break; + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + break; + i = iStart + (iEnd - iStart) / 2; + } + return -1; +} + + +/** + * Register a format handler for a type. + * + * The format handler is used to handle '%R[type]' format types, where the argument + * in the vector is a pointer value (a bit restrictive, but keeps it simple). + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_ALREADY_EXISTS if the type has already been registered. + * @retval VERR_TOO_MANY_OPEN_FILES if all the type slots has been allocated already. + * + * @param pszType The type name. + * @param pfnHandler The handler address. See FNRTSTRFORMATTYPE for details. + * @param pvUser The user argument to pass to the handler. See RTStrFormatTypeSetUser + * for how to update this later. + */ +RTDECL(int) RTStrFormatTypeRegister(const char *pszType, PFNRTSTRFORMATTYPE pfnHandler, void *pvUser) +{ + int rc; + size_t cchType; + uint32_t cTypes; + + /* + * Validate input. + */ + AssertPtr(pfnHandler); + AssertPtr(pszType); + cchType = strlen(pszType); + AssertReturn(cchType < RT_SIZEOFMEMB(RTSTRDYNFMT, szType), VERR_INVALID_PARAMETER); + + /* + * Try add it. + */ + rtstrFormatTypeWriteLock(); + + /* check that there are empty slots. */ + cTypes = g_cTypes; + if (cTypes < RT_ELEMENTS(g_aTypes)) + { + /* find where to insert it. */ + uint32_t i = 0; + rc = VINF_SUCCESS; + while (i < cTypes) + { + int iDiff = rtstrFormatTypeCompare(pszType, cchType, &g_aTypes[i]); + if (!iDiff) + { + rc = VERR_ALREADY_EXISTS; + break; + } + if (iDiff < 0) + break; + i++; + } + if (RT_SUCCESS(rc)) + { + /* make room. */ + uint32_t cToMove = cTypes - i; + if (cToMove) + memmove(&g_aTypes[i + 1], &g_aTypes[i], cToMove * sizeof(g_aTypes[i])); + + /* insert the new entry. */ + memset(&g_aTypes[i], 0, sizeof(g_aTypes[i])); + memcpy(&g_aTypes[i].szType[0], pszType, cchType + 1); + g_aTypes[i].cchType = (uint8_t)cchType; + g_aTypes[i].pvUser = pvUser; +#ifdef IN_RC + g_aTypes[i].offHandler = (intptr_t)pfnHandler - (intptr_t)&g_aTypes[0]; +#else + g_aTypes[i].pfnHandler = pfnHandler; +#endif + ASMAtomicIncU32(&g_cTypes); + rc = VINF_SUCCESS; + } + } + else + rc = VERR_TOO_MANY_OPEN_FILES; /** @todo fix error code */ + + rtstrFormatTypeWriteUnlock(); + + return rc; +} +RT_EXPORT_SYMBOL(RTStrFormatTypeRegister); + + +/** + * Deregisters a format type. + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to deregister. + */ +RTDECL(int) RTStrFormatTypeDeregister(const char *pszType) +{ + int32_t i; + + /* + * Validate input. + */ + AssertPtr(pszType); + + /* + * Locate the entry and remove it. + */ + rtstrFormatTypeWriteLock(); + i = rtstrFormatTypeLookup(pszType, strlen(pszType)); + if (i >= 0) + { + const uint32_t cTypes = g_cTypes; + int32_t cToMove = cTypes - i - 1; + if (cToMove > 0) + memmove(&g_aTypes[i], &g_aTypes[i + 1], cToMove * sizeof(g_aTypes[i])); + memset(&g_aTypes[cTypes - 1], 0, sizeof(g_aTypes[0])); + ASMAtomicDecU32(&g_cTypes); + } + rtstrFormatTypeWriteUnlock(); + + Assert(i >= 0); + return i >= 0 + ? VINF_SUCCESS + : VERR_FILE_NOT_FOUND; /** @todo fix status code */ +} +RT_EXPORT_SYMBOL(RTStrFormatTypeDeregister); + + +/** + * Sets the user argument for a type. + * + * This can be used if a user argument needs relocating in GC. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to update. + * @param pvUser The new user argument value. + */ +RTDECL(int) RTStrFormatTypeSetUser(const char *pszType, void *pvUser) +{ + int32_t i; + + /* + * Validate input. + */ + AssertPtr(pszType); + + /* + * Locate the entry and update it. + */ + rtstrFormatTypeReadLock(); + + i = rtstrFormatTypeLookup(pszType, strlen(pszType)); + if (i >= 0) + ASMAtomicWritePtr(&g_aTypes[i].pvUser, pvUser); + + rtstrFormatTypeReadUnlock(); + + Assert(i >= 0); + return i >= 0 + ? VINF_SUCCESS + : VERR_FILE_NOT_FOUND; /** @todo fix status code */ +} +RT_EXPORT_SYMBOL(RTStrFormatTypeSetUser); + + +/** + * Formats a type using a registered callback handler. + * + * This will handle %R[type]. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, + va_list *pArgs, int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize) +{ + size_t cch; + int32_t i; + char const *pszTypeEnd; + char const *pszType; + char ch; + void *pvValue = va_arg(*pArgs, void *); + NOREF(chArgSize); + + /* + * Parse out the type. + */ + pszType = *ppszFormat + 2; + *ppszFormat = pszType; + Assert(pszType[-1] == '['); + Assert(pszType[-2] == 'R'); + pszTypeEnd = pszType; + while ((ch = *pszTypeEnd) != ']') + { + AssertReturn(ch != '\0', 0); + AssertReturn(ch != '%', 0); + AssertReturn(ch != '[', 0); + pszTypeEnd++; + } + *ppszFormat = pszTypeEnd + 1; + + /* + * Locate the entry and call the handler. + */ + rtstrFormatTypeReadLock(); + + i = rtstrFormatTypeLookup(pszType, pszTypeEnd - pszType); + if (RT_LIKELY(i >= 0)) + { +#ifdef IN_RC + PFNRTSTRFORMATTYPE pfnHandler = (PFNRTSTRFORMATTYPE)((intptr_t)&g_aTypes[0] + g_aTypes[i].offHandler); +#else + PFNRTSTRFORMATTYPE pfnHandler = g_aTypes[i].pfnHandler; +#endif + void *pvUser = ASMAtomicReadPtr(&g_aTypes[i].pvUser); + + rtstrFormatTypeReadUnlock(); + + cch = pfnHandler(pfnOutput, pvArgOutput, g_aTypes[i].szType, pvValue, cchWidth, cchPrecision, fFlags, pvUser); + } + else + { + rtstrFormatTypeReadUnlock(); + + cch = pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + } + + return cch; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/strprintf.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/strprintf.c @@ -0,0 +1,129 @@ +/* $Id: strprintf.cpp $ */ +/** @file + * IPRT - String Formatters. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +/********************************************************************************************************************************* +* Structures and Typedefs * +*********************************************************************************************************************************/ +/** strbufoutput() argument structure. */ +typedef struct STRBUFARG +{ + /** Pointer to current buffer position. */ + char *psz; + /** Number of bytes left in the buffer - not including the trailing zero. */ + size_t cch; +} STRBUFARG; +/** Pointer to a strbufoutput() argument structure. */ +typedef STRBUFARG *PSTRBUFARG; + + +/********************************************************************************************************************************* +* Internal Functions * +*********************************************************************************************************************************/ +static DECLCALLBACK(size_t) strbufoutput(void *pvArg, const char *pachChars, size_t cbChars); + + +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg Pointer to a STRBUFARG structure. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +static DECLCALLBACK(size_t) strbufoutput(void *pvArg, const char *pachChars, size_t cbChars) +{ + PSTRBUFARG pArg = (PSTRBUFARG)pvArg; + + cbChars = RT_MIN(pArg->cch, cbChars); + if (cbChars) + { + memcpy(pArg->psz, pachChars, cbChars); + pArg->cch -= cbChars; + pArg->psz += cbChars; + } + *pArg->psz = '\0'; + + return cbChars; +} + + +RTDECL(size_t) RTStrPrintfExV(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) +{ + STRBUFARG Arg; + + if (!cchBuffer) + { + AssertMsgFailed(("Excellent idea! Format a string with no space for the output!\n")); + return 0; + } + + Arg.psz = pszBuffer; + Arg.cch = cchBuffer - 1; + return RTStrFormatV(strbufoutput, &Arg, pfnFormat, pvArg, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTStrPrintfExV); + + +RTDECL(size_t) RTStrPrintfV(char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) +{ + return RTStrPrintfExV(NULL, NULL, pszBuffer, cchBuffer, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTStrPrintfV); + + +RTDECL(size_t) RTStrPrintfEx(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...) +{ + va_list args; + size_t cbRet; + va_start(args, pszFormat); + cbRet = RTStrPrintfExV(pfnFormat, pvArg, pszBuffer, cchBuffer, pszFormat, args); + va_end(args); + return cbRet; +} +RT_EXPORT_SYMBOL(RTStrPrintfEx); + + +RTDECL(size_t) RTStrPrintf(char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...) +{ + va_list args; + size_t cbRet; + va_start(args, pszFormat); + cbRet = RTStrPrintfV(pszBuffer, cchBuffer, pszFormat, args); + va_end(args); + return cbRet; +} +RT_EXPORT_SYMBOL(RTStrPrintf); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/string/strtonum.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/string/strtonum.c @@ -0,0 +1,1013 @@ +/* $Id: strtonum.cpp $ */ +/** @file + * IPRT - String To Number Conversion. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include /* needed for RT_C_IS_DIGIT */ +#include + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** 8-bit char -> digit. */ +static const unsigned char g_auchDigits[256] = +{ + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, + 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,255,255,255,255,255, + 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +}; +/** Approximated overflow shift checks. */ +static const char g_auchShift[36] = +{ + /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 */ + 64, 64, 63, 63, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 59, 59, 59, 59 +}; + +/* +#include +int main() +{ + int i; + printf("static const unsigned char g_auchDigits[256] =\n" + "{"); + for (i = 0; i < 256; i++) + { + int ch = 255; + if (i >= '0' && i <= '9') + ch = i - '0'; + else if (i >= 'a' && i <= 'z') + ch = i - 'a' + 10; + else if (i >= 'A' && i <= 'Z') + ch = i - 'A' + 10; + if (i == 0) + printf("\n %3d", ch); + else if ((i % 32) == 0) + printf(",\n %3d", ch); + else + printf(",%3d", ch); + } + printf("\n" + "};\n"); + return 0; +} +*/ + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint64_t *pu64) +{ + const char *psz = pszValue; + int iShift; + int rc; + uint64_t u64; + unsigned char uch; + + /* + * Positive/Negative stuff. + */ + bool fPositive = true; + for (;; psz++) + { + if (*psz == '+') + fPositive = true; + else if (*psz == '-') + fPositive = !fPositive; + else + break; + } + + /* + * Check for hex prefix. + */ + if (!uBase) + { + if ( psz[0] == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + { + uBase = 16; + psz += 2; + } + else if ( psz[0] == '0' + && g_auchDigits[(unsigned char)psz[1]] < 8) + { + uBase = 8; + psz++; + } + else + uBase = 10; + } + else if ( uBase == 16 + && psz[0] == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + psz += 2; + + /* + * Interpret the value. + * Note: We only support ascii digits at this time... :-) + */ + iShift = g_auchShift[uBase]; + pszValue = psz; /* (Prefix and sign doesn't count in the digit counting.) */ + rc = VINF_SUCCESS; + u64 = 0; + while ((uch = (unsigned char)*psz) != 0) + { + unsigned char chDigit = g_auchDigits[uch]; + uint64_t u64Prev; + + if (chDigit >= uBase) + break; + + u64Prev = u64; + u64 *= uBase; + u64 += chDigit; + if (u64Prev > u64 || (u64Prev >> iShift)) + rc = VWRN_NUMBER_TOO_BIG; + psz++; + } + + if (!fPositive) + { + if (rc == VINF_SUCCESS) + rc = VWRN_NEGATIVE_UNSIGNED; + u64 = -(int64_t)u64; + } + + if (pu64) + *pu64 = u64; + + if (psz == pszValue) + rc = VERR_NO_DIGITS; + + if (ppszNext) + *ppszNext = (char *)psz; + + /* + * Warn about trailing chars/spaces. + */ + if ( rc == VINF_SUCCESS + && *psz) + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt64Ex); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Full(const char *pszValue, unsigned uBase, uint64_t *pu64) +{ + char *psz; + int rc = RTStrToUInt64Ex(pszValue, &psz, uBase, pu64); + if (RT_SUCCESS(rc) && *psz) + { + if (rc == VWRN_TRAILING_CHARS || rc == VWRN_TRAILING_SPACES) + rc = -rc; + else + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VERR_TRAILING_CHARS : VERR_TRAILING_SPACES; + } + } + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt64Full); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 64-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint64_t) RTStrToUInt64(const char *pszValue) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, NULL, 0, &u64); + if (RT_SUCCESS(rc)) + return u64; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt64); + + +/** + * Converts a string representation of a number to a 32-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint32_t *pu32) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu32) + *pu32 = (uint32_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt32Ex); + + +/** + * Converts a string representation of a number to a 32-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Full(const char *pszValue, unsigned uBase, uint32_t *pu32) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu32) + *pu32 = (uint32_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt32Full); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 32-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint32_t) RTStrToUInt32(const char *pszValue) +{ + uint32_t u32; + int rc = RTStrToUInt32Ex(pszValue, NULL, 0, &u32); + if (RT_SUCCESS(rc)) + return u32; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt32); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint16_t *pu16) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu16) + *pu16 = (uint16_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt16Ex); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Full(const char *pszValue, unsigned uBase, uint16_t *pu16) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu16) + *pu16 = (uint16_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt16Full); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * The base is guessed. + * + * @returns 16-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint16_t) RTStrToUInt16(const char *pszValue) +{ + uint16_t u16; + int rc = RTStrToUInt16Ex(pszValue, NULL, 0, &u16); + if (RT_SUCCESS(rc)) + return u16; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt16); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint8_t *pu8) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu8) + *pu8 = (uint8_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt8Ex); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Full(const char *pszValue, unsigned uBase, uint8_t *pu8) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu8) + *pu8 = (uint8_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt8Full); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * The base is guessed. + * + * @returns 8-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint8_t) RTStrToUInt8(const char *pszValue) +{ + uint8_t u8; + int rc = RTStrToUInt8Ex(pszValue, NULL, 0, &u8); + if (RT_SUCCESS(rc)) + return u8; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt8); + + + + + + + +/** + * Converts a string representation of a number to a 64-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, int64_t *pi64) +{ + const char *psz = pszValue; + int iShift; + int rc; + int64_t i64; + unsigned char uch; + + /* + * Positive/Negative stuff. + */ + bool fPositive = true; + for (;; psz++) + { + if (*psz == '+') + fPositive = true; + else if (*psz == '-') + fPositive = !fPositive; + else + break; + } + + /* + * Check for hex prefix. + */ + if (!uBase) + { + if ( *psz == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + { + uBase = 16; + psz += 2; + } + else if ( *psz == '0' + && g_auchDigits[(unsigned char)psz[1]] < 8) + { + uBase = 8; + psz++; + } + else + uBase = 10; + } + else if ( uBase == 16 + && *psz == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + psz += 2; + + /* + * Interpret the value. + * Note: We only support ascii digits at this time... :-) + */ + iShift = g_auchShift[uBase]; /** @todo test this, it's probably not 100% right yet. */ + pszValue = psz; /* (Prefix and sign doesn't count in the digit counting.) */ + rc = VINF_SUCCESS; + i64 = 0; + while ((uch = (unsigned char)*psz) != 0) + { + unsigned char chDigit = g_auchDigits[uch]; + int64_t i64Prev; + + if (chDigit >= uBase) + break; + + i64Prev = i64; + i64 *= uBase; + i64 += chDigit; + if (i64Prev > i64 || (i64Prev >> iShift)) + rc = VWRN_NUMBER_TOO_BIG; + psz++; + } + + if (!fPositive) + i64 = -i64; + + if (pi64) + *pi64 = i64; + + if (psz == pszValue) + rc = VERR_NO_DIGITS; + + if (ppszNext) + *ppszNext = (char *)psz; + + /* + * Warn about trailing chars/spaces. + */ + if ( rc == VINF_SUCCESS + && *psz) + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt64Ex); + + +/** + * Converts a string representation of a number to a 64-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Full(const char *pszValue, unsigned uBase, int64_t *pi64) +{ + char *psz; + int rc = RTStrToInt64Ex(pszValue, &psz, uBase, pi64); + if (RT_SUCCESS(rc) && *psz) + { + if (rc == VWRN_TRAILING_CHARS || rc == VWRN_TRAILING_SPACES) + rc = -rc; + else + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VERR_TRAILING_CHARS : VERR_TRAILING_SPACES; + } + } + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt64Full); + + +/** + * Converts a string representation of a number to a 64-bit signed number. + * The base is guessed. + * + * @returns 64-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int64_t) RTStrToInt64(const char *pszValue) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, NULL, 0, &i64); + if (RT_SUCCESS(rc)) + return i64; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt64); + + +/** + * Converts a string representation of a number to a 32-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, int32_t *pi32) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int32_t i32 = (int32_t)i64; + if (i64 != (int64_t)i32) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi32) + *pi32 = (int32_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt32Ex); + + +/** + * Converts a string representation of a number to a 32-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Full(const char *pszValue, unsigned uBase, int32_t *pi32) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int32_t i32 = (int32_t)i64; + if (i64 != (int64_t)i32) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi32) + *pi32 = (int32_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt32Full); + + +/** + * Converts a string representation of a number to a 32-bit signed number. + * The base is guessed. + * + * @returns 32-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int32_t) RTStrToInt32(const char *pszValue) +{ + int32_t i32; + int rc = RTStrToInt32Ex(pszValue, NULL, 0, &i32); + if (RT_SUCCESS(rc)) + return i32; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt32); + + +/** + * Converts a string representation of a number to a 16-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, int16_t *pi16) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int16_t i16 = (int16_t)i64; + if (i64 != (int64_t)i16) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi16) + *pi16 = (int16_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt16Ex); + + +/** + * Converts a string representation of a number to a 16-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Full(const char *pszValue, unsigned uBase, int16_t *pi16) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int16_t i16 = (int16_t)i64; + if (i64 != (int64_t)i16) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi16) + *pi16 = (int16_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt16Full); + + +/** + * Converts a string representation of a number to a 16-bit signed number. + * The base is guessed. + * + * @returns 16-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int16_t) RTStrToInt16(const char *pszValue) +{ + int16_t i16; + int rc = RTStrToInt16Ex(pszValue, NULL, 0, &i16); + if (RT_SUCCESS(rc)) + return i16; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt16); + + +/** + * Converts a string representation of a number to a 8-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, int8_t *pi8) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int8_t i8 = (int8_t)i64; + if (i64 != (int64_t)i8) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi8) + *pi8 = (int8_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt8Ex); + + +/** + * Converts a string representation of a number to a 8-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Full(const char *pszValue, unsigned uBase, int8_t *pi8) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int8_t i8 = (int8_t)i64; + if (i64 != (int64_t)i8) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi8) + *pi8 = (int8_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt8Full); + + +/** + * Converts a string representation of a number to a 8-bit signed number. + * The base is guessed. + * + * @returns 8-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int8_t) RTStrToInt8(const char *pszValue) +{ + int8_t i8; + int rc = RTStrToInt8Ex(pszValue, NULL, 0, &i8); + if (RT_SUCCESS(rc)) + return i8; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt8); + + +RTDECL(int) RTStrConvertHexBytes(char const *pszHex, void *pv, size_t cb, uint32_t fFlags) +{ + size_t cbDst; + uint8_t *pbDst; + const char *pszSrc; + + AssertPtrReturn(pszHex, VERR_INVALID_POINTER); + AssertReturn(!fFlags, VERR_INVALID_PARAMETER); + + cbDst = cb; + pbDst = (uint8_t *)pv; + pszSrc = pszHex; + for (;;) + { + /* Pick the next two digit from the string. */ + char ch = *pszSrc++; + unsigned char uchDigit1 = g_auchDigits[(unsigned char)ch]; + unsigned char uchDigit2; + if (uchDigit1 >= 16) + { + if (!ch) + return cbDst == 0 ? VINF_SUCCESS : VERR_BUFFER_UNDERFLOW; + + while (ch == ' ' || ch == '\t') + ch = *pszSrc++; + return ch ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + ch = *pszSrc++; + uchDigit2 = g_auchDigits[(unsigned char)ch]; + if (uchDigit2 >= 16) + return VERR_UNEVEN_INPUT; + + /* Add the byte to the output buffer. */ + if (!cbDst) + return VERR_BUFFER_OVERFLOW; + cbDst--; + *pbDst++ = (uchDigit1 << 4) | uchDigit2; + } +} +RT_EXPORT_SYMBOL(RTStrConvertHexBytes); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Base.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_Base.cpp.h @@ -0,0 +1,460 @@ +/* $Id: avl_Base.cpp.h $ */ +/** @file + * kAVLBase - basic routines for all AVL trees. + */ + +/* + * Copyright (C) 2001-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLBase_h_ +#define _kAVLBase_h_ + + +/** @page pg_rt_kAVL kAVL Template configuration. + * @internal + * + * This is a template made to implement multiple AVL trees. The differences + * among the implementations are related to the key used. + * + * \#define KAVL_FN + * Use this to alter the names of the AVL functions. + * Must be defined. + * + * \#define KAVL_EQUAL_ALLOWED + * Define this to tell us that equal keys are allowed. + * Then Equal keys will be put in a list pointed to by pList in the KAVLNODECORE. + * This is by default not defined. + * + * \#define KAVL_CHECK_FOR_EQUAL_INSERT + * Define this to enable insert check for equal nodes. + * This is by default not defined. + * + * \#define KAVL_MAX_STACK + * Use this to specify the number of stack entries the stack will use when inserting + * and removing nodes from the tree. I think the size should be about + * log2() + 3 + * Must be defined. + * + */ + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#define AVL_HEIGHTOF(pNode) ((unsigned char)((pNode) != NULL ? pNode->uchHeight : 0)) + +/** @def KAVL_GET_POINTER + * Reads a 'pointer' value. + * + * @returns The native pointer. + * @param pp Pointer to the pointer to read. + */ + +/** @def KAVL_GET_POINTER_NULL + * Reads a 'pointer' value which can be KAVL_NULL. + * + * @returns The native pointer. + * @returns NULL pointer if KAVL_NULL. + * @param pp Pointer to the pointer to read. + */ + +/** @def KAVL_SET_POINTER + * Writes a 'pointer' value. + * For offset-based schemes offset relative to pp is calculated and assigned to *pp. + * + * @returns stored pointer. + * @param pp Pointer to where to store the pointer. + * @param p Native pointer to assign to *pp. + */ + +/** @def KAVL_SET_POINTER_NULL + * Writes a 'pointer' value which can be KAVL_NULL. + * + * For offset-based schemes offset relative to pp is calculated and assigned to *pp, + * if p is not KAVL_NULL of course. + * + * @returns stored pointer. + * @param pp Pointer to where to store the pointer. + * @param pp2 Pointer to where to pointer to assign to pp. This can be KAVL_NULL + */ + +#ifndef KAVL_GET_POINTER +# ifdef KAVL_OFFSET +# define KAVL_GET_POINTER(pp) ( (PKAVLNODECORE)((intptr_t)(pp) + *(pp)) ) +# define KAVL_GET_POINTER_NULL(pp) ( *(pp) != KAVL_NULL ? KAVL_GET_POINTER(pp) : NULL ) +# define KAVL_SET_POINTER(pp, p) ( (*(pp)) = ((intptr_t)(p) - (intptr_t)(pp)) ) +# define KAVL_SET_POINTER_NULL(pp, pp2) ( (*(pp)) = *(pp2) != KAVL_NULL ? (intptr_t)KAVL_GET_POINTER(pp2) - (intptr_t)(pp) : KAVL_NULL ) +# else +# define KAVL_GET_POINTER(pp) ( *(pp) ) +# define KAVL_GET_POINTER_NULL(pp) ( *(pp) ) +# define KAVL_SET_POINTER(pp, p) ( (*(pp)) = (p) ) +# define KAVL_SET_POINTER_NULL(pp, pp2) ( (*(pp)) = *(pp2) ) +# endif +#endif + + +/** @def KAVL_NULL + * The NULL 'pointer' equivalent. + */ +#ifndef KAVL_NULL +# ifdef KAVL_OFFSET +# define KAVL_NULL 0 +# else +# define KAVL_NULL NULL +# endif +#endif + +#ifndef KAVL_RANGE +# define KAVL_R_IS_INTERSECTING(key1B, key2B, key1E, key2E) KAVL_E(key1B, key2B) +# define KAVL_R_IS_IDENTICAL(key1B, key2B, key1E, key2E) KAVL_E(key1B, key2B) +#endif + +/** @def KAVL_DECL + * Function declation macro in the RTDECL tradition. + * @param a_Type The function return type. */ +#ifndef KAVL_DECL +# define KAVL_DECL(a_Type) RTDECL(a_Type) +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/* + * A stack used to avoid recursive calls... + */ +typedef struct _kAvlStack +{ + unsigned cEntries; + PPKAVLNODECORE aEntries[KAVL_MAX_STACK]; +} KAVLSTACK, *PKAVLSTACK; + +typedef struct _kAvlStack2 +{ + unsigned cEntries; + PKAVLNODECORE aEntries[KAVL_MAX_STACK]; + char achFlags[KAVL_MAX_STACK]; +} KAVLSTACK2, *PLAVLSTACK2; + + + +/** + * Rewinds a stack of pointers to pointers to nodes, rebalancing the tree. + * @param pStack Pointer to stack to rewind. + * @sketch LOOP thru all stack entries + * BEGIN + * Get pointer to pointer to node (and pointer to node) from the stack. + * IF 2 higher left subtree than in right subtree THEN + * BEGIN + * IF higher (or equal) left-sub-subtree than right-sub-subtree THEN + * * n+2|n+3 + * / \ / \ + * n+2 n ==> n+1 n+1|n+2 + * / \ / \ + * n+1 n|n+1 n|n+1 n + * + * Or with keys: + * + * 4 2 + * / \ / \ + * 2 5 ==> 1 4 + * / \ / \ + * 1 3 3 5 + * + * ELSE + * * n+2 + * / \ / \ + * n+2 n n+1 n+1 + * / \ ==> / \ / \ + * n n+1 n L R n + * / \ + * L R + * + * Or with keys: + * 6 4 + * / \ / \ + * 2 7 ==> 2 6 + * / \ / \ / \ + * 1 4 1 3 5 7 + * / \ + * 3 5 + * END + * ELSE IF 2 higher in right subtree than in left subtree THEN + * BEGIN + * Same as above but left <==> right. (invert the picture) + * ELSE + * IF correct height THEN break + * ELSE correct height. + * END + */ +DECLINLINE(void) KAVL_FN(Rebalance)(PKAVLSTACK pStack) +{ + while (pStack->cEntries > 0) + { + /** @todo Perhaps some of these KAVL_SET_POINTER_NULL() cases could be optimized away.. */ + PPKAVLNODECORE ppNode = pStack->aEntries[--pStack->cEntries]; + PKAVLNODECORE pNode = KAVL_GET_POINTER(ppNode); + PKAVLNODECORE pLeftNode = KAVL_GET_POINTER_NULL(&pNode->pLeft); + unsigned char uchLeftHeight = AVL_HEIGHTOF(pLeftNode); + PKAVLNODECORE pRightNode = KAVL_GET_POINTER_NULL(&pNode->pRight); + unsigned char uchRightHeight = AVL_HEIGHTOF(pRightNode); + + if (uchRightHeight + 1 < uchLeftHeight) + { + PKAVLNODECORE pLeftLeftNode = KAVL_GET_POINTER_NULL(&pLeftNode->pLeft); + PKAVLNODECORE pLeftRightNode = KAVL_GET_POINTER_NULL(&pLeftNode->pRight); + unsigned char uchLeftRightHeight = AVL_HEIGHTOF(pLeftRightNode); + + if (AVL_HEIGHTOF(pLeftLeftNode) >= uchLeftRightHeight) + { + KAVL_SET_POINTER_NULL(&pNode->pLeft, &pLeftNode->pRight); + KAVL_SET_POINTER(&pLeftNode->pRight, pNode); + pLeftNode->uchHeight = (unsigned char)(1 + (pNode->uchHeight = (unsigned char)(1 + uchLeftRightHeight))); + KAVL_SET_POINTER(ppNode, pLeftNode); + } + else + { + KAVL_SET_POINTER_NULL(&pLeftNode->pRight, &pLeftRightNode->pLeft); + KAVL_SET_POINTER_NULL(&pNode->pLeft, &pLeftRightNode->pRight); + KAVL_SET_POINTER(&pLeftRightNode->pLeft, pLeftNode); + KAVL_SET_POINTER(&pLeftRightNode->pRight, pNode); + pLeftNode->uchHeight = pNode->uchHeight = uchLeftRightHeight; + pLeftRightNode->uchHeight = uchLeftHeight; + KAVL_SET_POINTER(ppNode, pLeftRightNode); + } + } + else if (uchLeftHeight + 1 < uchRightHeight) + { + PKAVLNODECORE pRightLeftNode = KAVL_GET_POINTER_NULL(&pRightNode->pLeft); + unsigned char uchRightLeftHeight = AVL_HEIGHTOF(pRightLeftNode); + PKAVLNODECORE pRightRightNode = KAVL_GET_POINTER_NULL(&pRightNode->pRight); + + if (AVL_HEIGHTOF(pRightRightNode) >= uchRightLeftHeight) + { + KAVL_SET_POINTER_NULL(&pNode->pRight, &pRightNode->pLeft); + KAVL_SET_POINTER(&pRightNode->pLeft, pNode); + pRightNode->uchHeight = (unsigned char)(1 + (pNode->uchHeight = (unsigned char)(1 + uchRightLeftHeight))); + KAVL_SET_POINTER(ppNode, pRightNode); + } + else + { + KAVL_SET_POINTER_NULL(&pRightNode->pLeft, &pRightLeftNode->pRight); + KAVL_SET_POINTER_NULL(&pNode->pRight, &pRightLeftNode->pLeft); + KAVL_SET_POINTER(&pRightLeftNode->pRight, pRightNode); + KAVL_SET_POINTER(&pRightLeftNode->pLeft, pNode); + pRightNode->uchHeight = pNode->uchHeight = uchRightLeftHeight; + pRightLeftNode->uchHeight = uchRightHeight; + KAVL_SET_POINTER(ppNode, pRightLeftNode); + } + } + else + { + register unsigned char uchHeight = (unsigned char)(KMAX(uchLeftHeight, uchRightHeight) + 1); + if (uchHeight == pNode->uchHeight) + break; + pNode->uchHeight = uchHeight; + } + } + +} + + + + +/** + * Inserts a node into the AVL-tree. + * @returns TRUE if inserted. + * FALSE if node exists in tree. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param pNode Pointer to the node which is to be added. + * @sketch Find the location of the node (using binary tree algorithm.): + * LOOP until KAVL_NULL leaf pointer + * BEGIN + * Add node pointer pointer to the AVL-stack. + * IF new-node-key < node key THEN + * left + * ELSE + * right + * END + * Fill in leaf node and insert it. + * Rebalance the tree. + */ +KAVL_DECL(bool) KAVL_FN(Insert)(PPKAVLNODECORE ppTree, PKAVLNODECORE pNode) +{ + KAVLSTACK AVLStack; + PPKAVLNODECORE ppCurNode = ppTree; + register PKAVLNODECORE pCurNode; + register KAVLKEY Key = pNode->Key; NOREF(Key); +#ifdef KAVL_RANGE + register KAVLKEY KeyLast = pNode->KeyLast; NOREF(KeyLast); +#endif + + AVLStack.cEntries = 0; + +#ifdef KAVL_RANGE + if (Key > KeyLast) + return false; +#endif + + for (;;) + { + if (*ppCurNode != KAVL_NULL) + pCurNode = KAVL_GET_POINTER(ppCurNode); + else + break; + + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppCurNode; +#ifdef KAVL_EQUAL_ALLOWED + if (KAVL_R_IS_IDENTICAL(pCurNode->Key, Key, pCurNode->KeyLast, KeyLast)) + { + /* + * If equal then we'll use a list of equal nodes. + */ + pNode->pLeft = pNode->pRight = KAVL_NULL; + pNode->uchHeight = 0; + KAVL_SET_POINTER_NULL(&pNode->pList, &pCurNode->pList); + KAVL_SET_POINTER(&pCurNode->pList, pNode); + return true; + } +#endif +#ifdef KAVL_CHECK_FOR_EQUAL_INSERT + if (KAVL_R_IS_INTERSECTING(pCurNode->Key, Key, pCurNode->KeyLast, KeyLast)) + return false; +#endif + if (KAVL_G(pCurNode->Key, Key)) + ppCurNode = &pCurNode->pLeft; + else + ppCurNode = &pCurNode->pRight; + } + + pNode->pLeft = pNode->pRight = KAVL_NULL; +#ifdef KAVL_EQUAL_ALLOWED + pNode->pList = KAVL_NULL; +#endif + pNode->uchHeight = 1; + KAVL_SET_POINTER(ppCurNode, pNode); + + KAVL_FN(Rebalance)(SSToDS(&AVLStack)); + return true; +} + + +/** + * Removes a node from the AVL-tree. + * @returns Pointer to the node. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param Key Key value of the node which is to be removed. + * @sketch Find the node which is to be removed: + * LOOP until not found + * BEGIN + * Add node pointer pointer to the AVL-stack. + * IF the keys matches THEN break! + * IF remove key < node key THEN + * left + * ELSE + * right + * END + * IF found THEN + * BEGIN + * IF left node not empty THEN + * BEGIN + * Find the right most node in the left tree while adding the pointer to the pointer to it's parent to the stack: + * Start at left node. + * LOOP until right node is empty + * BEGIN + * Add to stack. + * go right. + * END + * Link out the found node. + * Replace the node which is to be removed with the found node. + * Correct the stack entry for the pointer to the left tree. + * END + * ELSE + * BEGIN + * Move up right node. + * Remove last stack entry. + * END + * Balance tree using stack. + * END + * return pointer to the removed node (if found). + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(Remove)(PPKAVLNODECORE ppTree, KAVLKEY Key) +{ + KAVLSTACK AVLStack; + PPKAVLNODECORE ppDeleteNode = ppTree; + register PKAVLNODECORE pDeleteNode; + + AVLStack.cEntries = 0; + + for (;;) + { + if (*ppDeleteNode != KAVL_NULL) + pDeleteNode = KAVL_GET_POINTER(ppDeleteNode); + else + return NULL; + + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppDeleteNode; + if (KAVL_E(pDeleteNode->Key, Key)) + break; + + if (KAVL_G(pDeleteNode->Key, Key)) + ppDeleteNode = &pDeleteNode->pLeft; + else + ppDeleteNode = &pDeleteNode->pRight; + } + + if (pDeleteNode->pLeft != KAVL_NULL) + { + /* find the rightmost node in the left tree. */ + const unsigned iStackEntry = AVLStack.cEntries; + PPKAVLNODECORE ppLeftLeast = &pDeleteNode->pLeft; + register PKAVLNODECORE pLeftLeast = KAVL_GET_POINTER(ppLeftLeast); + + while (pLeftLeast->pRight != KAVL_NULL) + { + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppLeftLeast; + ppLeftLeast = &pLeftLeast->pRight; + pLeftLeast = KAVL_GET_POINTER(ppLeftLeast); + } + + /* link out pLeftLeast */ + KAVL_SET_POINTER_NULL(ppLeftLeast, &pLeftLeast->pLeft); + + /* link it in place of the delete node. */ + KAVL_SET_POINTER_NULL(&pLeftLeast->pLeft, &pDeleteNode->pLeft); + KAVL_SET_POINTER_NULL(&pLeftLeast->pRight, &pDeleteNode->pRight); + pLeftLeast->uchHeight = pDeleteNode->uchHeight; + KAVL_SET_POINTER(ppDeleteNode, pLeftLeast); + AVLStack.aEntries[iStackEntry] = &pLeftLeast->pLeft; + } + else + { + KAVL_SET_POINTER_NULL(ppDeleteNode, &pDeleteNode->pRight); + AVLStack.cEntries--; + } + + KAVL_FN(Rebalance)(SSToDS(&AVLStack)); + return pDeleteNode; +} + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Destroy.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_Destroy.cpp.h @@ -0,0 +1,110 @@ +/* $Id: avl_Destroy.cpp.h $ */ +/** @file + * kAVLDestroy - Walk the tree calling a callback to destroy all the nodes. + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLDestroy_h_ +#define _kAVLDestroy_h_ + + +/** + * Destroys the specified tree, starting with the root node and working our way down. + * + * @returns 0 on success. + * @returns Return value from callback on failure. On failure, the tree will be in + * an unbalanced condition and only further calls to the Destroy should be + * made on it. Note that the node we fail on will be considered dead and + * no action is taken to link it back into the tree. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param pfnCallBack Pointer to callback function. + * @param pvUser User parameter passed on to the callback function. + */ +KAVL_DECL(int) KAVL_FN(Destroy)(PPKAVLNODECORE ppTree, PKAVLCALLBACK pfnCallBack, void *pvUser) +{ + unsigned cEntries; + PKAVLNODECORE apEntries[KAVL_MAX_STACK]; + int rc; + + if (*ppTree == KAVL_NULL) + return VINF_SUCCESS; + + cEntries = 1; + apEntries[0] = KAVL_GET_POINTER(ppTree); + while (cEntries > 0) + { + /* + * Process the subtrees first. + */ + PKAVLNODECORE pNode = apEntries[cEntries - 1]; + if (pNode->pLeft != KAVL_NULL) + apEntries[cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + else if (pNode->pRight != KAVL_NULL) + apEntries[cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + else + { +#ifdef KAVL_EQUAL_ALLOWED + /* + * Process nodes with the same key. + */ + while (pNode->pList != KAVL_NULL) + { + PKAVLNODECORE pEqual = KAVL_GET_POINTER(&pNode->pList); + KAVL_SET_POINTER(&pNode->pList, KAVL_GET_POINTER_NULL(&pEqual->pList)); + pEqual->pList = KAVL_NULL; + + rc = pfnCallBack(pEqual, pvUser); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* + * Unlink the node. + */ + if (--cEntries > 0) + { + PKAVLNODECORE pParent = apEntries[cEntries - 1]; + if (KAVL_GET_POINTER(&pParent->pLeft) == pNode) + pParent->pLeft = KAVL_NULL; + else + pParent->pRight = KAVL_NULL; + } + else + *ppTree = KAVL_NULL; + + kASSERT(pNode->pLeft == KAVL_NULL); + kASSERT(pNode->pRight == KAVL_NULL); + rc = pfnCallBack(pNode, pvUser); + if (rc != VINF_SUCCESS) + return rc; + } + } /* while */ + + kASSERT(*ppTree == KAVL_NULL); + + return VINF_SUCCESS; +} + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_DoWithAll.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_DoWithAll.cpp.h @@ -0,0 +1,142 @@ +/* $Id: avl_DoWithAll.cpp.h $ */ +/** @file + * kAVLDoWithAll - Do with all nodes routine for AVL trees. + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLDoWithAll_h_ +#define _kAVLDoWithAll_h_ + + +/** + * Iterates thru all nodes in the given tree. + * @returns 0 on success. Return from callback on failure. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param fFromLeft TRUE: Left to right. + * FALSE: Right to left. + * @param pfnCallBack Pointer to callback function. + * @param pvParam Userparameter passed on to the callback function. + */ +KAVL_DECL(int) KAVL_FN(DoWithAll)(PPKAVLNODECORE ppTree, int fFromLeft, PKAVLCALLBACK pfnCallBack, void * pvParam) +{ + KAVLSTACK2 AVLStack; + PKAVLNODECORE pNode; +#ifdef KAVL_EQUAL_ALLOWED + PKAVLNODECORE pEqual; +#endif + int rc; + + if (*ppTree == KAVL_NULL) + return VINF_SUCCESS; + + AVLStack.cEntries = 1; + AVLStack.achFlags[0] = 0; + AVLStack.aEntries[0] = KAVL_GET_POINTER(ppTree); + + if (fFromLeft) + { /* from left */ + while (AVLStack.cEntries > 0) + { + pNode = AVLStack.aEntries[AVLStack.cEntries - 1]; + + /* left */ + if (!AVLStack.achFlags[AVLStack.cEntries - 1]++) + { + if (pNode->pLeft != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; /* 0 first, 1 last */ + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + continue; + } + } + + /* center */ + rc = pfnCallBack(pNode, pvParam); + if (rc != VINF_SUCCESS) + return rc; +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + for (pEqual = KAVL_GET_POINTER(&pNode->pList); pEqual; pEqual = KAVL_GET_POINTER_NULL(&pEqual->pList)) + { + rc = pfnCallBack(pEqual, pvParam); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* right */ + AVLStack.cEntries--; + if (pNode->pRight != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + } + } /* while */ + } + else + { /* from right */ + while (AVLStack.cEntries > 0) + { + pNode = AVLStack.aEntries[AVLStack.cEntries - 1]; + + /* right */ + if (!AVLStack.achFlags[AVLStack.cEntries - 1]++) + { + if (pNode->pRight != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; /* 0 first, 1 last */ + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + continue; + } + } + + /* center */ + rc = pfnCallBack(pNode, pvParam); + if (rc != VINF_SUCCESS) + return rc; +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + for (pEqual = KAVL_GET_POINTER(&pNode->pList); pEqual; pEqual = KAVL_GET_POINTER_NULL(&pEqual->pList)) + { + rc = pfnCallBack(pEqual, pvParam); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* left */ + AVLStack.cEntries--; + if (pNode->pLeft != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + } + } /* while */ + } + + return VINF_SUCCESS; +} + + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Get.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_Get.cpp.h @@ -0,0 +1,67 @@ +/* $Id: avl_Get.cpp.h $ */ +/** @file + * kAVLGet - get routine for AVL trees. + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLGet_h_ +#define _kAVLGet_h_ + + +/** + * Gets a node from the tree (does not remove it!) + * @returns Pointer to the node holding the given key. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param Key Key value of the node which is to be found. + * @author knut st. osmundsen + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(Get)(PPKAVLNODECORE ppTree, KAVLKEY Key) +{ + register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree); + + if (pNode) + { + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pLeft); + else + return NULL; + } + else + { + if (pNode->pRight != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pRight); + else + return NULL; + } + } + } + + return pNode; +} + + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_GetBestFit.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_GetBestFit.cpp.h @@ -0,0 +1,103 @@ +/* $Id: avl_GetBestFit.cpp.h $ */ +/** @file + * kAVLGetBestFit - Get Best Fit routine for AVL trees. + * Intended specially on heaps. The tree should allow duplicate keys. + * + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLGetBestFit_h_ +#define _kAVLGetBestFit_h_ + + +/** + * Finds the best fitting node in the tree for the given Key value. + * @returns Pointer to the best fitting node found. + * @param ppTree Pointer to Pointer to the tree root node. + * @param Key The Key of which is to be found a best fitting match for.. + * @param fAbove TRUE: Returned node is have the closest key to Key from above. + * FALSE: Returned node is have the closest key to Key from below. + * @sketch The best fitting node is always located in the searchpath above you. + * >= (above): The node where you last turned left. + * <= (below): the node where you last turned right. + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(GetBestFit)(PPKAVLNODECORE ppTree, KAVLKEY Key, bool fAbove) +{ + register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree); + if (pNode) + { + PKAVLNODECORE pNodeLast = NULL; + if (fAbove) + { /* pNode->Key >= Key */ + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + { + pNodeLast = pNode; + pNode = KAVL_GET_POINTER(&pNode->pLeft); + } + else + return pNode; + } + else + { + if (pNode->pRight != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pRight); + else + return pNodeLast; + } + } + } + else + { /* pNode->Key <= Key */ + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pLeft); + else + return pNodeLast; + } + else + { + if (pNode->pRight != KAVL_NULL) + { + pNodeLast = pNode; + pNode = KAVL_GET_POINTER(&pNode->pRight); + } + else + return pNode; + } + } + } + } + + /* perfect match or nothing. */ + return pNode; +} + + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avl_RemoveBestFit.cpp.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avl_RemoveBestFit.cpp.h @@ -0,0 +1,70 @@ +/* $Id: avl_RemoveBestFit.cpp.h $ */ +/** @file + * kAVLRemoveBestFit - Remove Best Fit routine for AVL trees. + * Intended specially on heaps. The tree should allow duplicate keys. + * + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLRemoveBestFit_h_ +#define _kAVLRemoveBestFit_h_ + + +/** + * Finds the best fitting node in the tree for the given Key value. + * And removes it. + * @returns Pointer to the best fitting node found. + * @param ppTree Pointer to Pointer to the tree root node. + * @param Key The Key of which is to be found a best fitting match for.. + * @param fAbove TRUE: Returned node is have the closest key to Key from above. + * FALSE: Returned node is have the closest key to Key from below. + * @sketch The best fitting node is always located in the searchpath above you. + * >= (above): The node where you last turned left. + * <= (below): the node where you last turned right. + * @remark This implementation should be speeded up slightly! + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(RemoveBestFit)(PPKAVLNODECORE ppTree, KAVLKEY Key, bool fAbove) +{ + /* + * If we find anything we'll have to remove the node and return it. + * But, if duplicate keys are allowed we'll have to check for multiple + * nodes first and return one of them before doing an expensive remove+insert. + */ + PKAVLNODECORE pNode = KAVL_FN(GetBestFit)(ppTree, Key, fAbove); + if (pNode != NULL) + { +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + { + PKAVLNODECORE pRet = KAVL_GET_POINTER(&pNode->pList); + KAVL_SET_POINTER_NULL(&pNode->pList, &pRet->pList); + return pRet; + } +#endif + pNode = KAVL_FN(Remove)(ppTree, pNode->Key); + } + return pNode; +} + + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/table/avlpv.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/table/avlpv.c @@ -0,0 +1,78 @@ +/* $Id: avlpv.cpp $ */ +/** @file + * IPRT - AVL tree, void *, unique keys. + */ + +/* + * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef NOFILEID +static const char szFileId[] = "Id: kAVLPVInt.c,v 1.5 2003/02/13 02:02:35 bird Exp $"; +#endif + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/* + * AVL configuration. + */ +#define KAVL_FN(a) RTAvlPV##a +#define KAVL_MAX_STACK 27 /* Up to 2^24 nodes. */ +#define KAVL_CHECK_FOR_EQUAL_INSERT 1 /* No duplicate keys! */ +#define KAVLNODECORE AVLPVNODECORE +#define PKAVLNODECORE PAVLPVNODECORE +#define PPKAVLNODECORE PPAVLPVNODECORE +#define KAVLKEY AVLPVKEY +#define PKAVLKEY PAVLPVKEY +#define KAVLENUMDATA AVLPVENUMDATA +#define PKAVLENUMDATA PAVLPVENUMDATA +#define PKAVLCALLBACK PAVLPVCALLBACK + + +/* + * AVL Compare macros + */ +#define KAVL_G(key1, key2) ( (const char*)(key1) > (const char*)(key2) ) +#define KAVL_E(key1, key2) ( (const char*)(key1) == (const char*)(key2) ) +#define KAVL_NE(key1, key2) ( (const char*)(key1) != (const char*)(key2) ) + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include +#include + +/* + * Include the code. + */ +#define SSToDS(ptr) ptr +#define KMAX RT_MAX +#define kASSERT Assert +#include "avl_Base.cpp.h" +#include "avl_Get.cpp.h" +#include "avl_GetBestFit.cpp.h" +#include "avl_RemoveBestFit.cpp.h" +#include "avl_DoWithAll.cpp.h" +#include "avl_Destroy.cpp.h" + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/common/time/time.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/common/time/time.c @@ -0,0 +1,907 @@ +/* $Id: time.cpp $ */ +/** @file + * IPRT - Time. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_TIME +#include +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/time.h" + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +/** The max year we possibly could implode. */ +#define RTTIME_MAX_YEAR (292 + 1970) +/** The min year we possibly could implode. */ +#define RTTIME_MIN_YEAR (-293 + 1970) + +/** The max day supported by our time representation. (2262-04-11T23-47-16.854775807) */ +#define RTTIME_MAX_DAY (365*292+71 + 101-1) +/** The min day supported by our time representation. (1677-09-21T00-12-43.145224192) */ +#define RTTIME_MIN_DAY (365*-293-70 + 264-1) + +/** The max nano second into the max day. (2262-04-11T23-47-16.854775807) */ +#define RTTIME_MAX_DAY_NANO ( INT64_C(1000000000) * (23*3600 + 47*60 + 16) + 854775807 ) +/** The min nano second into the min day. (1677-09-21T00-12-43.145224192) */ +#define RTTIME_MIN_DAY_NANO ( INT64_C(1000000000) * (00*3600 + 12*60 + 43) + 145224192 ) + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** + * Days per month in a common year. + */ +static const uint8_t g_acDaysInMonths[12] = +{ + /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ + 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +}; + +/** + * Days per month in a leap year. + */ +static const uint8_t g_acDaysInMonthsLeap[12] = +{ + /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ + 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +}; + +/** + * The day of year for each month in a common year. + */ +static const uint16_t g_aiDayOfYear[12 + 1] = +{ + 1, /* Jan */ + 1+31, /* Feb */ + 1+31+28, /* Mar */ + 1+31+28+31, /* Apr */ + 1+31+28+31+30, /* May */ + 1+31+28+31+30+31, /* Jun */ + 1+31+28+31+30+31+30, /* Jul */ + 1+31+28+31+30+31+30+31, /* Aug */ + 1+31+28+31+30+31+30+31+31, /* Sep */ + 1+31+28+31+30+31+30+31+31+30, /* Oct */ + 1+31+28+31+30+31+30+31+31+30+31, /* Nov */ + 1+31+28+31+30+31+30+31+31+30+31+30, /* Dec */ + 1+31+28+31+30+31+30+31+31+30+31+30+31 +}; + +/** + * The day of year for each month in a leap year. + */ +static const uint16_t g_aiDayOfYearLeap[12 + 1] = +{ + 1, /* Jan */ + 1+31, /* Feb */ + 1+31+29, /* Mar */ + 1+31+29+31, /* Apr */ + 1+31+29+31+30, /* May */ + 1+31+29+31+30+31, /* Jun */ + 1+31+29+31+30+31+30, /* Jul */ + 1+31+29+31+30+31+30+31, /* Aug */ + 1+31+29+31+30+31+30+31+31, /* Sep */ + 1+31+29+31+30+31+30+31+31+30, /* Oct */ + 1+31+29+31+30+31+30+31+31+30+31, /* Nov */ + 1+31+29+31+30+31+30+31+31+30+31+30, /* Dec */ + 1+31+29+31+30+31+30+31+31+30+31+30+31 +}; + +/** The index of 1970 in g_aoffYear */ +#define OFF_YEAR_IDX_EPOCH 300 +/** The year of the first index. */ +#define OFF_YEAR_IDX_0_YEAR 1670 + +/** + * The number of days the 1st of January a year is offseted from 1970-01-01. + */ +static const int32_t g_aoffYear[] = +{ +/*1670:*/ 365*-300+-72, 365*-299+-72, 365*-298+-72, 365*-297+-71, 365*-296+-71, 365*-295+-71, 365*-294+-71, 365*-293+-70, 365*-292+-70, 365*-291+-70, +/*1680:*/ 365*-290+-70, 365*-289+-69, 365*-288+-69, 365*-287+-69, 365*-286+-69, 365*-285+-68, 365*-284+-68, 365*-283+-68, 365*-282+-68, 365*-281+-67, +/*1690:*/ 365*-280+-67, 365*-279+-67, 365*-278+-67, 365*-277+-66, 365*-276+-66, 365*-275+-66, 365*-274+-66, 365*-273+-65, 365*-272+-65, 365*-271+-65, +/*1700:*/ 365*-270+-65, 365*-269+-65, 365*-268+-65, 365*-267+-65, 365*-266+-65, 365*-265+-64, 365*-264+-64, 365*-263+-64, 365*-262+-64, 365*-261+-63, +/*1710:*/ 365*-260+-63, 365*-259+-63, 365*-258+-63, 365*-257+-62, 365*-256+-62, 365*-255+-62, 365*-254+-62, 365*-253+-61, 365*-252+-61, 365*-251+-61, +/*1720:*/ 365*-250+-61, 365*-249+-60, 365*-248+-60, 365*-247+-60, 365*-246+-60, 365*-245+-59, 365*-244+-59, 365*-243+-59, 365*-242+-59, 365*-241+-58, +/*1730:*/ 365*-240+-58, 365*-239+-58, 365*-238+-58, 365*-237+-57, 365*-236+-57, 365*-235+-57, 365*-234+-57, 365*-233+-56, 365*-232+-56, 365*-231+-56, +/*1740:*/ 365*-230+-56, 365*-229+-55, 365*-228+-55, 365*-227+-55, 365*-226+-55, 365*-225+-54, 365*-224+-54, 365*-223+-54, 365*-222+-54, 365*-221+-53, +/*1750:*/ 365*-220+-53, 365*-219+-53, 365*-218+-53, 365*-217+-52, 365*-216+-52, 365*-215+-52, 365*-214+-52, 365*-213+-51, 365*-212+-51, 365*-211+-51, +/*1760:*/ 365*-210+-51, 365*-209+-50, 365*-208+-50, 365*-207+-50, 365*-206+-50, 365*-205+-49, 365*-204+-49, 365*-203+-49, 365*-202+-49, 365*-201+-48, +/*1770:*/ 365*-200+-48, 365*-199+-48, 365*-198+-48, 365*-197+-47, 365*-196+-47, 365*-195+-47, 365*-194+-47, 365*-193+-46, 365*-192+-46, 365*-191+-46, +/*1780:*/ 365*-190+-46, 365*-189+-45, 365*-188+-45, 365*-187+-45, 365*-186+-45, 365*-185+-44, 365*-184+-44, 365*-183+-44, 365*-182+-44, 365*-181+-43, +/*1790:*/ 365*-180+-43, 365*-179+-43, 365*-178+-43, 365*-177+-42, 365*-176+-42, 365*-175+-42, 365*-174+-42, 365*-173+-41, 365*-172+-41, 365*-171+-41, +/*1800:*/ 365*-170+-41, 365*-169+-41, 365*-168+-41, 365*-167+-41, 365*-166+-41, 365*-165+-40, 365*-164+-40, 365*-163+-40, 365*-162+-40, 365*-161+-39, +/*1810:*/ 365*-160+-39, 365*-159+-39, 365*-158+-39, 365*-157+-38, 365*-156+-38, 365*-155+-38, 365*-154+-38, 365*-153+-37, 365*-152+-37, 365*-151+-37, +/*1820:*/ 365*-150+-37, 365*-149+-36, 365*-148+-36, 365*-147+-36, 365*-146+-36, 365*-145+-35, 365*-144+-35, 365*-143+-35, 365*-142+-35, 365*-141+-34, +/*1830:*/ 365*-140+-34, 365*-139+-34, 365*-138+-34, 365*-137+-33, 365*-136+-33, 365*-135+-33, 365*-134+-33, 365*-133+-32, 365*-132+-32, 365*-131+-32, +/*1840:*/ 365*-130+-32, 365*-129+-31, 365*-128+-31, 365*-127+-31, 365*-126+-31, 365*-125+-30, 365*-124+-30, 365*-123+-30, 365*-122+-30, 365*-121+-29, +/*1850:*/ 365*-120+-29, 365*-119+-29, 365*-118+-29, 365*-117+-28, 365*-116+-28, 365*-115+-28, 365*-114+-28, 365*-113+-27, 365*-112+-27, 365*-111+-27, +/*1860:*/ 365*-110+-27, 365*-109+-26, 365*-108+-26, 365*-107+-26, 365*-106+-26, 365*-105+-25, 365*-104+-25, 365*-103+-25, 365*-102+-25, 365*-101+-24, +/*1870:*/ 365*-100+-24, 365* -99+-24, 365* -98+-24, 365* -97+-23, 365* -96+-23, 365* -95+-23, 365* -94+-23, 365* -93+-22, 365* -92+-22, 365* -91+-22, +/*1880:*/ 365* -90+-22, 365* -89+-21, 365* -88+-21, 365* -87+-21, 365* -86+-21, 365* -85+-20, 365* -84+-20, 365* -83+-20, 365* -82+-20, 365* -81+-19, +/*1890:*/ 365* -80+-19, 365* -79+-19, 365* -78+-19, 365* -77+-18, 365* -76+-18, 365* -75+-18, 365* -74+-18, 365* -73+-17, 365* -72+-17, 365* -71+-17, +/*1900:*/ 365* -70+-17, 365* -69+-17, 365* -68+-17, 365* -67+-17, 365* -66+-17, 365* -65+-16, 365* -64+-16, 365* -63+-16, 365* -62+-16, 365* -61+-15, +/*1910:*/ 365* -60+-15, 365* -59+-15, 365* -58+-15, 365* -57+-14, 365* -56+-14, 365* -55+-14, 365* -54+-14, 365* -53+-13, 365* -52+-13, 365* -51+-13, +/*1920:*/ 365* -50+-13, 365* -49+-12, 365* -48+-12, 365* -47+-12, 365* -46+-12, 365* -45+-11, 365* -44+-11, 365* -43+-11, 365* -42+-11, 365* -41+-10, +/*1930:*/ 365* -40+-10, 365* -39+-10, 365* -38+-10, 365* -37+-9 , 365* -36+-9 , 365* -35+-9 , 365* -34+-9 , 365* -33+-8 , 365* -32+-8 , 365* -31+-8 , +/*1940:*/ 365* -30+-8 , 365* -29+-7 , 365* -28+-7 , 365* -27+-7 , 365* -26+-7 , 365* -25+-6 , 365* -24+-6 , 365* -23+-6 , 365* -22+-6 , 365* -21+-5 , +/*1950:*/ 365* -20+-5 , 365* -19+-5 , 365* -18+-5 , 365* -17+-4 , 365* -16+-4 , 365* -15+-4 , 365* -14+-4 , 365* -13+-3 , 365* -12+-3 , 365* -11+-3 , +/*1960:*/ 365* -10+-3 , 365* -9+-2 , 365* -8+-2 , 365* -7+-2 , 365* -6+-2 , 365* -5+-1 , 365* -4+-1 , 365* -3+-1 , 365* -2+-1 , 365* -1+0 , +/*1970:*/ 365* 0+0 , 365* 1+0 , 365* 2+0 , 365* 3+1 , 365* 4+1 , 365* 5+1 , 365* 6+1 , 365* 7+2 , 365* 8+2 , 365* 9+2 , +/*1980:*/ 365* 10+2 , 365* 11+3 , 365* 12+3 , 365* 13+3 , 365* 14+3 , 365* 15+4 , 365* 16+4 , 365* 17+4 , 365* 18+4 , 365* 19+5 , +/*1990:*/ 365* 20+5 , 365* 21+5 , 365* 22+5 , 365* 23+6 , 365* 24+6 , 365* 25+6 , 365* 26+6 , 365* 27+7 , 365* 28+7 , 365* 29+7 , +/*2000:*/ 365* 30+7 , 365* 31+8 , 365* 32+8 , 365* 33+8 , 365* 34+8 , 365* 35+9 , 365* 36+9 , 365* 37+9 , 365* 38+9 , 365* 39+10 , +/*2010:*/ 365* 40+10 , 365* 41+10 , 365* 42+10 , 365* 43+11 , 365* 44+11 , 365* 45+11 , 365* 46+11 , 365* 47+12 , 365* 48+12 , 365* 49+12 , +/*2020:*/ 365* 50+12 , 365* 51+13 , 365* 52+13 , 365* 53+13 , 365* 54+13 , 365* 55+14 , 365* 56+14 , 365* 57+14 , 365* 58+14 , 365* 59+15 , +/*2030:*/ 365* 60+15 , 365* 61+15 , 365* 62+15 , 365* 63+16 , 365* 64+16 , 365* 65+16 , 365* 66+16 , 365* 67+17 , 365* 68+17 , 365* 69+17 , +/*2040:*/ 365* 70+17 , 365* 71+18 , 365* 72+18 , 365* 73+18 , 365* 74+18 , 365* 75+19 , 365* 76+19 , 365* 77+19 , 365* 78+19 , 365* 79+20 , +/*2050:*/ 365* 80+20 , 365* 81+20 , 365* 82+20 , 365* 83+21 , 365* 84+21 , 365* 85+21 , 365* 86+21 , 365* 87+22 , 365* 88+22 , 365* 89+22 , +/*2060:*/ 365* 90+22 , 365* 91+23 , 365* 92+23 , 365* 93+23 , 365* 94+23 , 365* 95+24 , 365* 96+24 , 365* 97+24 , 365* 98+24 , 365* 99+25 , +/*2070:*/ 365* 100+25 , 365* 101+25 , 365* 102+25 , 365* 103+26 , 365* 104+26 , 365* 105+26 , 365* 106+26 , 365* 107+27 , 365* 108+27 , 365* 109+27 , +/*2080:*/ 365* 110+27 , 365* 111+28 , 365* 112+28 , 365* 113+28 , 365* 114+28 , 365* 115+29 , 365* 116+29 , 365* 117+29 , 365* 118+29 , 365* 119+30 , +/*2090:*/ 365* 120+30 , 365* 121+30 , 365* 122+30 , 365* 123+31 , 365* 124+31 , 365* 125+31 , 365* 126+31 , 365* 127+32 , 365* 128+32 , 365* 129+32 , +/*2100:*/ 365* 130+32 , 365* 131+32 , 365* 132+32 , 365* 133+32 , 365* 134+32 , 365* 135+33 , 365* 136+33 , 365* 137+33 , 365* 138+33 , 365* 139+34 , +/*2110:*/ 365* 140+34 , 365* 141+34 , 365* 142+34 , 365* 143+35 , 365* 144+35 , 365* 145+35 , 365* 146+35 , 365* 147+36 , 365* 148+36 , 365* 149+36 , +/*2120:*/ 365* 150+36 , 365* 151+37 , 365* 152+37 , 365* 153+37 , 365* 154+37 , 365* 155+38 , 365* 156+38 , 365* 157+38 , 365* 158+38 , 365* 159+39 , +/*2130:*/ 365* 160+39 , 365* 161+39 , 365* 162+39 , 365* 163+40 , 365* 164+40 , 365* 165+40 , 365* 166+40 , 365* 167+41 , 365* 168+41 , 365* 169+41 , +/*2140:*/ 365* 170+41 , 365* 171+42 , 365* 172+42 , 365* 173+42 , 365* 174+42 , 365* 175+43 , 365* 176+43 , 365* 177+43 , 365* 178+43 , 365* 179+44 , +/*2150:*/ 365* 180+44 , 365* 181+44 , 365* 182+44 , 365* 183+45 , 365* 184+45 , 365* 185+45 , 365* 186+45 , 365* 187+46 , 365* 188+46 , 365* 189+46 , +/*2160:*/ 365* 190+46 , 365* 191+47 , 365* 192+47 , 365* 193+47 , 365* 194+47 , 365* 195+48 , 365* 196+48 , 365* 197+48 , 365* 198+48 , 365* 199+49 , +/*2170:*/ 365* 200+49 , 365* 201+49 , 365* 202+49 , 365* 203+50 , 365* 204+50 , 365* 205+50 , 365* 206+50 , 365* 207+51 , 365* 208+51 , 365* 209+51 , +/*2180:*/ 365* 210+51 , 365* 211+52 , 365* 212+52 , 365* 213+52 , 365* 214+52 , 365* 215+53 , 365* 216+53 , 365* 217+53 , 365* 218+53 , 365* 219+54 , +/*2190:*/ 365* 220+54 , 365* 221+54 , 365* 222+54 , 365* 223+55 , 365* 224+55 , 365* 225+55 , 365* 226+55 , 365* 227+56 , 365* 228+56 , 365* 229+56 , +/*2200:*/ 365* 230+56 , 365* 231+56 , 365* 232+56 , 365* 233+56 , 365* 234+56 , 365* 235+57 , 365* 236+57 , 365* 237+57 , 365* 238+57 , 365* 239+58 , +/*2210:*/ 365* 240+58 , 365* 241+58 , 365* 242+58 , 365* 243+59 , 365* 244+59 , 365* 245+59 , 365* 246+59 , 365* 247+60 , 365* 248+60 , 365* 249+60 , +/*2220:*/ 365* 250+60 , 365* 251+61 , 365* 252+61 , 365* 253+61 , 365* 254+61 , 365* 255+62 , 365* 256+62 , 365* 257+62 , 365* 258+62 , 365* 259+63 , +/*2230:*/ 365* 260+63 , 365* 261+63 , 365* 262+63 , 365* 263+64 , 365* 264+64 , 365* 265+64 , 365* 266+64 , 365* 267+65 , 365* 268+65 , 365* 269+65 , +/*2240:*/ 365* 270+65 , 365* 271+66 , 365* 272+66 , 365* 273+66 , 365* 274+66 , 365* 275+67 , 365* 276+67 , 365* 277+67 , 365* 278+67 , 365* 279+68 , +/*2250:*/ 365* 280+68 , 365* 281+68 , 365* 282+68 , 365* 283+69 , 365* 284+69 , 365* 285+69 , 365* 286+69 , 365* 287+70 , 365* 288+70 , 365* 289+70 , +/*2260:*/ 365* 290+70 , 365* 291+71 , 365* 292+71 , 365* 293+71 , 365* 294+71 , 365* 295+72 , 365* 296+72 , 365* 297+72 , 365* 298+72 , 365* 299+73 +}; + +/* generator code: +#include +bool isLeapYear(int iYear) +{ + return iYear % 4 == 0 && (iYear % 100 != 0 || iYear % 400 == 0); +} +void printYear(int iYear, int iLeap) +{ + if (!(iYear % 10)) + printf("\n/" "*%d:*" "/", iYear + 1970); + printf(" 365*%4d+%-3d,", iYear, iLeap); +} +int main() +{ + int iYear = 0; + int iLeap = 0; + while (iYear > -300) + iLeap -= isLeapYear(1970 + --iYear); + while (iYear < 300) + { + printYear(iYear, iLeap); + iLeap += isLeapYear(1970 + iYear++); + } + printf("\n"); + return 0; +} +*/ + + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +DECLINLINE(bool) rtTimeIsLeapYear(int32_t i32Year) +{ + return i32Year % 4 == 0 + && ( i32Year % 100 != 0 + || i32Year % 400 == 0); +} + + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +RTDECL(bool) RTTimeIsLeapYear(int32_t i32Year) +{ + return rtTimeIsLeapYear(i32Year); +} +RT_EXPORT_SYMBOL(RTTimeIsLeapYear); + + +/** + * Explodes a time spec (UTC). + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded. + */ +RTDECL(PRTTIME) RTTimeExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec) +{ + int64_t i64Div; + int32_t i32Div; + int32_t i32Rem; + unsigned iYear; + const uint16_t *paiDayOfYear; + int iMonth; + + AssertMsg(VALID_PTR(pTime), ("%p\n", pTime)); + AssertMsg(VALID_PTR(pTimeSpec), ("%p\n", pTime)); + + /* + * The simple stuff first. + */ + pTime->fFlags = RTTIME_FLAGS_TYPE_UTC; + i64Div = pTimeSpec->i64NanosecondsRelativeToUnixEpoch; + i32Rem = (int32_t)(i64Div % 1000000000); + i64Div /= 1000000000; + if (i32Rem < 0) + { + i32Rem += 1000000000; + i64Div--; + } + pTime->u32Nanosecond = i32Rem; + + /* second */ + i32Rem = (int32_t)(i64Div % 60); + i64Div /= 60; + if (i32Rem < 0) + { + i32Rem += 60; + i64Div--; + } + pTime->u8Second = i32Rem; + + /* minute */ + i32Div = (int32_t)i64Div; /* 60,000,000,000 > 33bit, so 31bit suffices. */ + i32Rem = i32Div % 60; + i32Div /= 60; + if (i32Rem < 0) + { + i32Rem += 60; + i32Div--; + } + pTime->u8Minute = i32Rem; + + /* hour */ + i32Rem = i32Div % 24; + i32Div /= 24; /* days relative to 1970-01-01 */ + if (i32Rem < 0) + { + i32Rem += 24; + i32Div--; + } + pTime->u8Hour = i32Rem; + + /* weekday - 1970-01-01 was a Thursday (3) */ + pTime->u8WeekDay = ((int)(i32Div % 7) + 3 + 7) % 7; + + /* + * We've now got a number of days relative to 1970-01-01. + * To get the correct year number we have to mess with leap years. Fortunately, + * the representation we've got only supports a few hundred years, so we can + * generate a table and perform a simple two way search from the modulus 365 derived. + */ + iYear = OFF_YEAR_IDX_EPOCH + i32Div / 365; + while (g_aoffYear[iYear + 1] <= i32Div) + iYear++; + while (g_aoffYear[iYear] > i32Div) + iYear--; + pTime->i32Year = iYear + OFF_YEAR_IDX_0_YEAR; + i32Div -= g_aoffYear[iYear]; + pTime->u16YearDay = i32Div + 1; + + /* + * Figuring out the month is done in a manner similar to the year, only here we + * ensure that the index is matching or too small. + */ + if (rtTimeIsLeapYear(pTime->i32Year)) + { + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + paiDayOfYear = &g_aiDayOfYearLeap[0]; + } + else + { + pTime->fFlags |= RTTIME_FLAGS_COMMON_YEAR; + paiDayOfYear = &g_aiDayOfYear[0]; + } + iMonth = i32Div / 32; + i32Div++; + while (paiDayOfYear[iMonth + 1] <= i32Div) + iMonth++; + pTime->u8Month = iMonth + 1; + i32Div -= paiDayOfYear[iMonth]; + pTime->u8MonthDay = i32Div + 1; + + /* This is for UTC timespecs, so, no offset. */ + pTime->offUTC = 0; + + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeExplode); + + +/** + * Implodes exploded time to a time spec (UTC). + * + * @returns pTime on success. + * @returns NULL if the pTime data is invalid. + * @param pTimeSpec Where to store the imploded UTC time. + * If pTime specifies a time which outside the range, maximum or + * minimum values will be returned. + * @param pTime Pointer to the exploded time to implode. + * The fields u8Month, u8WeekDay and u8MonthDay are not used, + * and all the other fields are expected to be within their + * bounds. Use RTTimeNormalize() to calculate u16YearDay and + * normalize the ranges of the fields. + */ +RTDECL(PRTTIMESPEC) RTTimeImplode(PRTTIMESPEC pTimeSpec, PCRTTIME pTime) +{ + int32_t i32Days; + uint32_t u32Secs; + int64_t i64Nanos; + + /* + * Validate input. + */ + AssertReturn(VALID_PTR(pTimeSpec), NULL); + AssertReturn(VALID_PTR(pTime), NULL); + AssertReturn(pTime->u32Nanosecond < 1000000000, NULL); + AssertReturn(pTime->u8Second < 60, NULL); + AssertReturn(pTime->u8Minute < 60, NULL); + AssertReturn(pTime->u8Hour < 24, NULL); + AssertReturn(pTime->u16YearDay >= 1, NULL); + AssertReturn(pTime->u16YearDay <= (rtTimeIsLeapYear(pTime->i32Year) ? 366 : 365), NULL); + AssertMsgReturn(pTime->i32Year <= RTTIME_MAX_YEAR && pTime->i32Year >= RTTIME_MIN_YEAR, ("%RI32\n", pTime->i32Year), NULL); + + /* + * Do the conversion to nanoseconds. + */ + i32Days = g_aoffYear[pTime->i32Year - OFF_YEAR_IDX_0_YEAR] + + pTime->u16YearDay - 1; + AssertMsgReturn(i32Days <= RTTIME_MAX_DAY && i32Days >= RTTIME_MIN_DAY, ("%RI32\n", i32Days), NULL); + + u32Secs = pTime->u8Second + + pTime->u8Minute * 60 + + pTime->u8Hour * 3600; + i64Nanos = (uint64_t)pTime->u32Nanosecond + + u32Secs * UINT64_C(1000000000); + AssertMsgReturn(i32Days != RTTIME_MAX_DAY || i64Nanos <= RTTIME_MAX_DAY_NANO, ("%RI64\n", i64Nanos), NULL); + AssertMsgReturn(i32Days != RTTIME_MIN_DAY || i64Nanos >= RTTIME_MIN_DAY_NANO, ("%RI64\n", i64Nanos), NULL); + + i64Nanos += i32Days * UINT64_C(86400000000000); + + pTimeSpec->i64NanosecondsRelativeToUnixEpoch = i64Nanos; + return pTimeSpec; +} +RT_EXPORT_SYMBOL(RTTimeImplode); + + +/** + * Internal worker for RTTimeNormalize and RTTimeLocalNormalize. + * It doesn't adjust the UCT offset but leaves that for RTTimeLocalNormalize. + */ +static PRTTIME rtTimeNormalizeInternal(PRTTIME pTime) +{ + unsigned uSecond; + unsigned uMinute; + unsigned uHour; + bool fLeapYear; + + /* + * Fix the YearDay and Month/MonthDay. + */ + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + if (!pTime->u16YearDay) + { + /* + * The Month+MonthDay must present, overflow adjust them and calc the year day. + */ + AssertMsgReturn( pTime->u8Month + && pTime->u8MonthDay, + ("date=%d-%d-%d\n", pTime->i32Year, pTime->u8Month, pTime->u8MonthDay), + NULL); + while (pTime->u8Month > 12) + { + pTime->u8Month -= 12; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + + for (;;) + { + unsigned cDaysInMonth = fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1]; + if (pTime->u8MonthDay <= cDaysInMonth) + break; + pTime->u8MonthDay -= cDaysInMonth; + if (pTime->u8Month != 12) + pTime->u8Month++; + else + { + pTime->u8Month = 1; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + } + + pTime->u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + } + else + { + /* + * Are both YearDay and Month/MonthDay valid? + * Check that they don't overflow and match, if not use YearDay (simpler). + */ + bool fRecalc = true; + if ( pTime->u8Month + && pTime->u8MonthDay) + { + do + { + uint16_t u16YearDay; + + /* If you change one, zero the other to make clear what you mean. */ + AssertBreak(pTime->u8Month <= 12); + AssertBreak(pTime->u8MonthDay <= (fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1])); + u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + AssertBreak(u16YearDay == pTime->u16YearDay); + fRecalc = false; + } while (0); + } + if (fRecalc) + { + const uint16_t *paiDayOfYear; + + /* overflow adjust YearDay */ + while (pTime->u16YearDay > (fLeapYear ? 366 : 365)) + { + pTime->u16YearDay -= fLeapYear ? 366 : 365; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + + /* calc Month and MonthDay */ + paiDayOfYear = fLeapYear + ? &g_aiDayOfYearLeap[0] + : &g_aiDayOfYear[0]; + pTime->u8Month = 1; + while (pTime->u16YearDay > paiDayOfYear[pTime->u8Month]) + pTime->u8Month++; + Assert(pTime->u8Month >= 1 && pTime->u8Month <= 12); + pTime->u8MonthDay = pTime->u16YearDay - paiDayOfYear[pTime->u8Month - 1] + 1; + } + } + + /* + * Fixup time overflows. + * Use unsigned int values internally to avoid overflows. + */ + uSecond = pTime->u8Second; + uMinute = pTime->u8Minute; + uHour = pTime->u8Hour; + + while (pTime->u32Nanosecond >= 1000000000) + { + pTime->u32Nanosecond -= 1000000000; + uSecond++; + } + + while (uSecond >= 60) + { + uSecond -= 60; + uMinute++; + } + + while (uMinute >= 60) + { + uMinute -= 60; + uHour++; + } + + while (uHour >= 24) + { + uHour -= 24; + + /* This is really a RTTimeIncDay kind of thing... */ + if (pTime->u16YearDay + 1 != (fLeapYear ? g_aiDayOfYearLeap[pTime->u8Month] : g_aiDayOfYear[pTime->u8Month])) + { + pTime->u16YearDay++; + pTime->u8MonthDay++; + } + else if (pTime->u8Month != 12) + { + pTime->u16YearDay++; + pTime->u8Month++; + pTime->u8MonthDay = 1; + } + else + { + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + pTime->u16YearDay = 1; + pTime->u8Month = 1; + pTime->u8MonthDay = 1; + } + } + + pTime->u8Second = uSecond; + pTime->u8Minute = uMinute; + pTime->u8Hour = uHour; + + /* + * Correct the leap year flag. + * Assert if it's wrong, but ignore if unset. + */ + if (fLeapYear) + { + Assert(!(pTime->fFlags & RTTIME_FLAGS_COMMON_YEAR)); + pTime->fFlags &= ~RTTIME_FLAGS_COMMON_YEAR; + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + } + else + { + Assert(!(pTime->fFlags & RTTIME_FLAGS_LEAP_YEAR)); + pTime->fFlags &= ~RTTIME_FLAGS_LEAP_YEAR; + pTime->fFlags |= RTTIME_FLAGS_COMMON_YEAR; + } + + + /* + * Calc week day. + * + * 1970-01-01 was a Thursday (3), so find the number of days relative to + * that point. We use the table when possible and a slow+stupid+brute-force + * algorithm for points outside it. Feel free to optimize the latter by + * using some clever formula. + */ + if ( pTime->i32Year >= OFF_YEAR_IDX_0_YEAR + && pTime->i32Year < OFF_YEAR_IDX_0_YEAR + (int32_t)RT_ELEMENTS(g_aoffYear)) + { + int32_t offDays = g_aoffYear[pTime->i32Year - OFF_YEAR_IDX_0_YEAR] + + pTime->u16YearDay -1; + pTime->u8WeekDay = ((offDays % 7) + 3 + 7) % 7; + } + else + { + int32_t i32Year = pTime->i32Year; + if (i32Year >= 1970) + { + uint64_t offDays = pTime->u16YearDay - 1; + while (--i32Year >= 1970) + offDays += rtTimeIsLeapYear(i32Year) ? 366 : 365; + pTime->u8WeekDay = (uint8_t)((offDays + 3) % 7); + } + else + { + int64_t offDays = (fLeapYear ? -366 - 1 : -365 - 1) + pTime->u16YearDay; + while (++i32Year < 1970) + offDays -= rtTimeIsLeapYear(i32Year) ? 366 : 365; + pTime->u8WeekDay = ((int)(offDays % 7) + 3 + 7) % 7; + } + } + return pTime; +} + + +/** + * Normalizes the fields of a time structure. + * + * It is possible to calculate year-day from month/day and vice + * versa. If you adjust any of these, make sure to zero the + * other so you make it clear which of the fields to use. If + * it's ambiguous, the year-day field is used (and you get + * assertions in debug builds). + * + * All the time fields and the year-day or month/day fields will + * be adjusted for overflows. (Since all fields are unsigned, there + * is no underflows.) It is possible to exploit this for simple + * date math, though the recommended way of doing that to implode + * the time into a timespec and do the math on that. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * + * @param pTime The time structure to normalize. + * + * @remarks This function doesn't work with local time, only with UTC time. + */ +RTDECL(PRTTIME) RTTimeNormalize(PRTTIME pTime) +{ + /* + * Validate that we've got the minimum of stuff handy. + */ + AssertReturn(VALID_PTR(pTime), NULL); + AssertMsgReturn(!(pTime->fFlags & ~RTTIME_FLAGS_MASK), ("%#x\n", pTime->fFlags), NULL); + AssertMsgReturn((pTime->fFlags & RTTIME_FLAGS_TYPE_MASK) != RTTIME_FLAGS_TYPE_LOCAL, ("Use RTTimeLocalNormalize!\n"), NULL); + AssertMsgReturn(pTime->offUTC == 0, ("%d; Use RTTimeLocalNormalize!\n", pTime->offUTC), NULL); + + pTime = rtTimeNormalizeInternal(pTime); + if (pTime) + pTime->fFlags |= RTTIME_FLAGS_TYPE_UTC; + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeNormalize); + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time. Caller should've normalized this. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeToString(PCRTTIME pTime, char *psz, size_t cb) +{ + size_t cch; + + /* (Default to UTC if not specified) */ + if ( (pTime->fFlags & RTTIME_FLAGS_TYPE_MASK) == RTTIME_FLAGS_TYPE_LOCAL + && pTime->offUTC) + { + int32_t offUTCHour = pTime->offUTC / 60; + int32_t offUTCMinute = pTime->offUTC % 60; + char chSign; + Assert(pTime->offUTC <= 840 && pTime->offUTC >= -840); + if (pTime->offUTC >= 0) + chSign = '+'; + else + { + chSign = '-'; + offUTCMinute = -offUTCMinute; + offUTCHour = -offUTCHour; + } + cch = RTStrPrintf(psz, cb, + "%RI32-%02u-%02uT%02u:%02u:%02u.%09RU32%c%02d%02d", + pTime->i32Year, pTime->u8Month, pTime->u8MonthDay, + pTime->u8Hour, pTime->u8Minute, pTime->u8Second, pTime->u32Nanosecond, + chSign, offUTCHour, offUTCMinute); + if ( cch <= 15 + || psz[cch - 5] != chSign) + return NULL; + } + else + { + cch = RTStrPrintf(psz, cb, "%RI32-%02u-%02uT%02u:%02u:%02u.%09RU32Z", + pTime->i32Year, pTime->u8Month, pTime->u8MonthDay, + pTime->u8Hour, pTime->u8Minute, pTime->u8Second, pTime->u32Nanosecond); + if ( cch <= 15 + || psz[cch - 1] != 'Z') + return NULL; + } + return psz; +} +RT_EXPORT_SYMBOL(RTTimeToString); + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time spec. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeSpecToString(PCRTTIMESPEC pTime, char *psz, size_t cb) +{ + RTTIME Time; + return RTTimeToString(RTTimeExplode(&Time, pTime), psz, cb); +} +RT_EXPORT_SYMBOL(RTTimeSpecToString); + + + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime Where to store the time on success. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIME) RTTimeFromString(PRTTIME pTime, const char *pszString) +{ + /* Ignore leading spaces. */ + while (RT_C_IS_SPACE(*pszString)) + pszString++; + + /* + * Init non date & time parts. + */ + pTime->fFlags = RTTIME_FLAGS_TYPE_LOCAL; + pTime->offUTC = 0; + + /* + * The day part. + */ + + /* Year */ + int rc = RTStrToInt32Ex(pszString, (char **)&pszString, 10, &pTime->i32Year); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + + bool const fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + if (fLeapYear) + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + + if (*pszString++ != '-') + return NULL; + + /* Month of the year. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Month); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Month == 0 || pTime->u8Month > 12) + return NULL; + if (*pszString++ != '-') + return NULL; + + /* Day of month.*/ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8MonthDay); + if (rc != VWRN_TRAILING_CHARS && rc != VINF_SUCCESS) + return NULL; + unsigned const cDaysInMonth = fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1]; + if (pTime->u8MonthDay == 0 || pTime->u8MonthDay > cDaysInMonth) + return NULL; + + /* Calculate year day. */ + pTime->u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + + /* + * The time part. + */ + if (*pszString++ != 'T') + return NULL; + + /* Hour. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Hour); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Hour > 23) + return NULL; + if (*pszString++ != ':') + return NULL; + + /* Minute. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Minute); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Minute > 59) + return NULL; + if (*pszString++ != ':') + return NULL; + + /* Second. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Minute); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + if (pTime->u8Second > 59) + return NULL; + + /* Nanoseconds is optional and probably non-standard. */ + if (*pszString == '.') + { + rc = RTStrToUInt32Ex(pszString + 1, (char **)&pszString, 10, &pTime->u32Nanosecond); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + if (pTime->u32Nanosecond >= 1000000000) + return NULL; + } + else + pTime->u32Nanosecond = 0; + + /* + * Time zone. + */ + if (*pszString == 'Z') + { + pszString++; + pTime->fFlags &= ~RTTIME_FLAGS_TYPE_MASK; + pTime->fFlags |= ~RTTIME_FLAGS_TYPE_UTC; + pTime->offUTC = 0; + } + else if ( *pszString == '+' + || *pszString == '-') + { + rc = RTStrToInt32Ex(pszString, (char **)&pszString, 10, &pTime->offUTC); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + } + /* else: No time zone given, local with offUTC = 0. */ + + /* + * The rest of the string should be blanks. + */ + char ch; + while ((ch = *pszString++) != '\0') + if (!RT_C_IS_BLANK(ch)) + return NULL; + + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeFromString); + + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime The time spec. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIMESPEC) RTTimeSpecFromString(PRTTIMESPEC pTime, const char *pszString) +{ + RTTIME Time; + if (RTTimeFromString(&Time, pszString)) + return RTTimeImplode(pTime, &Time); + return NULL; +} +RT_EXPORT_SYMBOL(RTTimeSpecFromString); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/do_Module.symvers +++ linux-4.4.0/ubuntu/vbox/vboxguest/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTAssertShouldPanic-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTAssertShouldPanic-generic.c @@ -0,0 +1,44 @@ +/* $Id: RTAssertShouldPanic-generic.cpp $ */ +/** @file + * IPRT - Assertions, generic RTAssertShouldPanic. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(bool) RTAssertShouldPanic(void) +{ +#if 0 /* Enable this to not panic on assertions. (Make sure this code is used!) */ + return false; +#else + return RTAssertMayPanic(); +#endif +} +RT_EXPORT_SYMBOL(RTAssertShouldPanic); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTLogWriteStdErr-stub-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTLogWriteStdErr-stub-generic.c @@ -0,0 +1,42 @@ +/* $Id: RTLogWriteStdErr-stub-generic.cpp $ */ +/** @file + * IPRT - Log To StdErr, Generic Dummy. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTLogWriteStdErr(const char *pch, size_t cb) +{ + NOREF(pch); + NOREF(cb); + return; +} +RT_EXPORT_SYMBOL(RTLogWriteStdErr); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTLogWriteStdOut-stub-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTLogWriteStdOut-stub-generic.c @@ -0,0 +1,42 @@ +/* $Id: RTLogWriteStdOut-stub-generic.cpp $ */ +/** @file + * IPRT - Log To StdOut, Generic Dummy. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTLogWriteStdOut(const char *pch, size_t cb) +{ + NOREF(pch); + NOREF(cb); + return; +} +RT_EXPORT_SYMBOL(RTLogWriteStdOut); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTMpGetCoreCount-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTMpGetCoreCount-generic.c @@ -0,0 +1,40 @@ +/* $Id: RTMpGetCoreCount-generic.cpp $ */ +/** @file + * IPRT - Multiprocessor, Generic RTMpGetCoreCount. + */ + +/* + * Copyright (C) 2013-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(RTCPUID) RTMpGetCoreCount(void) +{ + return RTMpGetCount(); +} +RT_EXPORT_SYMBOL(RTMpGetCoreCount); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWait-2-ex-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWait-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventMultiWait-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventMultiWait, implementation based on RTSemEventMultiWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventMultiWaitEx(hEventMultiSem, RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventMultiWaitEx(hEventMultiSem, + RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventMultiWait); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWaitNoResume-2-ex-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWaitNoResume-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventMultiWaitNoResume-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventMultiWaitNoResume, generic implementation based + * on RTSemEventMultiWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventMultiWaitEx(hEventMultiSem, RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventMultiWaitEx(hEventMultiSem, + RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitNoResume); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventWait-2-ex-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTSemEventWait-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventWait-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventWait, implementation based on RTSemEventWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENT_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventWait(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventWaitEx(hEventSem, RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventWaitEx(hEventSem, + RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventWait); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventWaitNoResume-2-ex-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/RTSemEventWaitNoResume-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventWaitNoResume-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventWaitNoResume, generic implementation based + * on RTSemEventWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENT_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventWaitEx(hEventSem, RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventWaitEx(hEventSem, + RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventWaitNoResume); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/errvars-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/errvars-generic.c @@ -0,0 +1,66 @@ +/* $Id: errvars-generic.cpp $ */ +/** @file + * IPRT - Save and Restore Error Variables, generic stub implementation. + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include "internal/magics.h" + + + +RTDECL(PRTERRVARS) RTErrVarsSave(PRTERRVARS pVars) +{ + pVars->ai32Vars[0] = RTERRVARS_MAGIC; + return pVars; +} + + +RTDECL(void) RTErrVarsRestore(PCRTERRVARS pVars) +{ + Assert(pVars->ai32Vars[0] == RTERRVARS_MAGIC); +} + + +RTDECL(bool) RTErrVarsAreEqual(PCRTERRVARS pVars1, PCRTERRVARS pVars2) +{ + Assert(pVars1->ai32Vars[0] == RTERRVARS_MAGIC); + Assert(pVars2->ai32Vars[0] == RTERRVARS_MAGIC); + + return pVars1->ai32Vars[0] == pVars2->ai32Vars[0]; +} + + +RTDECL(bool) RTErrVarsHaveChanged(PCRTERRVARS pVars) +{ + Assert(pVars->ai32Vars[0] == RTERRVARS_MAGIC); + return false; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/generic/mppresent-generic.c +++ linux-4.4.0/ubuntu/vbox/vboxguest/generic/mppresent-generic.c @@ -0,0 +1,61 @@ +/* $Id: mppresent-generic.cpp $ */ +/** @file + * IPRT - Multiprocessor, Stubs for the RTMp*Present* API. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(PRTCPUSET) RTMpGetPresentSet(PRTCPUSET pSet) +{ + return RTMpGetSet(pSet); +} +RT_EXPORT_SYMBOL(RTMpGetPresentSet); + + +RTDECL(RTCPUID) RTMpGetPresentCount(void) +{ + return RTMpGetCount(); +} +RT_EXPORT_SYMBOL(RTMpGetPresentCount); + + +RTDECL(RTCPUID) RTMpGetPresentCoreCount(void) +{ + return RTMpGetCoreCount(); +} +RT_EXPORT_SYMBOL(RTMpGetPresentCoreCount); + + +RTDECL(bool) RTMpIsCpuPresent(RTCPUID idCpu) +{ + return RTMpIsCpuPossible(idCpu); +} +RT_EXPORT_SYMBOL(RTMpIsCpuPresent); + --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/product-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2016" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/revision-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/revision-generated.h @@ -0,0 +1 @@ +#define VBOX_SVN_REV 105127 --- linux-4.4.0.orig/ubuntu/vbox/vboxguest/version-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxguest/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 14 +#define VBOX_VERSION_STRING_RAW "5.0.14" +#define VBOX_VERSION_STRING "5.0.14_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/GenericRequest.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/GenericRequest.c @@ -0,0 +1,170 @@ +/* $Id: GenericRequest.cpp $ */ +/** @file + * VBoxGuestLibR0 - Generic VMMDev request management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" +#include +#include +#include +#include + + +DECLVBGL(int) VbglGRVerify(const VMMDevRequestHeader *pReq, size_t cbReq) +{ + size_t cbReqExpected; + + if (RT_UNLIKELY(!pReq || cbReq < sizeof(VMMDevRequestHeader))) + { + dprintf(("VbglGRVerify: Invalid parameter: pReq = %p, cbReq = %zu\n", pReq, cbReq)); + return VERR_INVALID_PARAMETER; + } + + if (RT_UNLIKELY(pReq->size > cbReq)) + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_INVALID_PARAMETER; + } + + /* The request size must correspond to the request type. */ + cbReqExpected = vmmdevGetRequestSize(pReq->requestType); + if (RT_UNLIKELY(cbReq < cbReqExpected)) + { + dprintf(("VbglGRVerify: buffer size %zu < expected size %zu\n", cbReq, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + if (cbReqExpected == cbReq) + { + /* + * This is most likely a fixed size request, and in this case the + * request size must be also equal to the expected size. + */ + if (RT_UNLIKELY(pReq->size != cbReqExpected)) + { + dprintf(("VbglGRVerify: request size %u != expected size %zu\n", pReq->size, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + return VINF_SUCCESS; + } + + /* + * This can be a variable size request. Check the request type and limit the size + * to VMMDEV_MAX_VMMDEVREQ_SIZE, which is max size supported by the host. + * + * Note: Keep this list sorted for easier human lookup! + */ + if ( pReq->requestType == VMMDevReq_ChangeMemBalloon +#ifdef VBOX_WITH_64_BITS_GUESTS + || pReq->requestType == VMMDevReq_HGCMCall32 + || pReq->requestType == VMMDevReq_HGCMCall64 +#else + || pReq->requestType == VMMDevReq_HGCMCall +#endif + || pReq->requestType == VMMDevReq_RegisterSharedModule + || pReq->requestType == VMMDevReq_ReportGuestUserState + || pReq->requestType == VMMDevReq_LogString + || pReq->requestType == VMMDevReq_SetPointerShape + || pReq->requestType == VMMDevReq_VideoSetVisibleRegion) + { + if (RT_UNLIKELY(cbReq > VMMDEV_MAX_VMMDEVREQ_SIZE)) + { + dprintf(("VbglGRVerify: VMMDevReq_LogString: buffer size %zu too big\n", cbReq)); + return VERR_BUFFER_OVERFLOW; /** @todo is this error code ok? */ + } + } + else + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_IO_BAD_LENGTH; /** @todo is this error code ok? */ + } + + return VINF_SUCCESS; +} + +DECLVBGL(int) VbglGRAlloc(VMMDevRequestHeader **ppReq, size_t cbReq, VMMDevRequestType enmReqType) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + { + if ( ppReq + && cbReq >= sizeof(VMMDevRequestHeader) + && cbReq == (uint32_t)cbReq) + { + VMMDevRequestHeader *pReq = (VMMDevRequestHeader *)VbglPhysHeapAlloc((uint32_t)cbReq); + AssertMsgReturn(pReq, ("VbglGRAlloc: no memory (cbReq=%u)\n", cbReq), VERR_NO_MEMORY); + memset(pReq, 0xAA, cbReq); + + pReq->size = (uint32_t)cbReq; + pReq->version = VMMDEV_REQUEST_HEADER_VERSION; + pReq->requestType = enmReqType; + pReq->rc = VERR_GENERAL_FAILURE; + pReq->reserved1 = 0; + pReq->reserved2 = 0; + + *ppReq = pReq; + rc = VINF_SUCCESS; + } + else + { + dprintf(("VbglGRAlloc: Invalid parameter: ppReq=%p cbReq=%u\n", ppReq, cbReq)); + rc = VERR_INVALID_PARAMETER; + } + } + return rc; +} + +DECLVBGL(int) VbglGRPerform(VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + { + if (pReq) + { + RTCCPHYS PhysAddr = VbglPhysHeapGetPhysAddr(pReq); + if ( PhysAddr != 0 + && PhysAddr < _4G) /* Port IO is 32 bit. */ + { + ASMOutU32(g_vbgldata.portVMMDev + VMMDEV_PORT_OFF_REQUEST, (uint32_t)PhysAddr); + /* Make the compiler aware that the host has changed memory. */ + ASMCompilerBarrier(); + rc = pReq->rc; + } + else + rc = VERR_VBGL_INVALID_ADDR; + } + else + rc = VERR_INVALID_PARAMETER; + } + return rc; +} + +DECLVBGL(void) VbglGRFree(VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter(); + if (RT_SUCCESS(rc)) + VbglPhysHeapFree(pReq); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/HGCM.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/HGCM.c @@ -0,0 +1,195 @@ +/* $Id: HGCM.cpp $ */ +/** @file + * VBoxGuestLib - Host-Guest Communication Manager. + * + * These public functions can be only used by other drivers. They all + * do an IOCTL to VBoxGuest via IDC. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with !VBGL_VBOXGUEST */ +#ifndef VBGL_VBOXGUEST + +#include "VBGLInternal.h" + +#include +#include +#include + +#define VBGL_HGCM_ASSERT_MSG AssertReleaseMsg + +/** + * Initializes the HGCM VBGL bits. + * + * @return VBox status code. + */ +int vbglR0HGCMInit(void) +{ + return RTSemFastMutexCreate(&g_vbgldata.mutexHGCMHandle); +} + +/** + * Initializes the HGCM VBGL bits. + * + * @return VBox status code. + */ +int vbglR0HGCMTerminate(void) +{ + RTSemFastMutexDestroy(g_vbgldata.mutexHGCMHandle); + g_vbgldata.mutexHGCMHandle = NIL_RTSEMFASTMUTEX; + + return VINF_SUCCESS; +} + +DECLINLINE(int) vbglHandleHeapEnter(void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHGCMHandle); + + VBGL_HGCM_ASSERT_MSG(RT_SUCCESS(rc), ("Failed to request handle heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglHandleHeapLeave(void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHGCMHandle); +} + +struct VBGLHGCMHANDLEDATA *vbglHGCMHandleAlloc(void) +{ + struct VBGLHGCMHANDLEDATA *p = NULL; + int rc = vbglHandleHeapEnter(); + if (RT_SUCCESS(rc)) + { + uint32_t i; + + /* Simple linear search in array. This will be called not so often, only connect/disconnect. */ + /** @todo bitmap for faster search and other obvious optimizations. */ + for (i = 0; i < RT_ELEMENTS(g_vbgldata.aHGCMHandleData); i++) + { + if (!g_vbgldata.aHGCMHandleData[i].fAllocated) + { + p = &g_vbgldata.aHGCMHandleData[i]; + p->fAllocated = 1; + break; + } + } + + vbglHandleHeapLeave(); + + VBGL_HGCM_ASSERT_MSG(p != NULL, ("Not enough HGCM handles.\n")); + } + return p; +} + +void vbglHGCMHandleFree(struct VBGLHGCMHANDLEDATA *pHandle) +{ + if (pHandle) + { + int rc = vbglHandleHeapEnter(); + if (RT_SUCCESS(rc)) + { + VBGL_HGCM_ASSERT_MSG(pHandle->fAllocated, ("Freeing not allocated handle.\n")); + + RT_ZERO(*pHandle); + vbglHandleHeapLeave(); + } + } +} + +DECLVBGL(int) VbglHGCMConnect(VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData) +{ + int rc; + if (pHandle && pData) + { + struct VBGLHGCMHANDLEDATA *pHandleData = vbglHGCMHandleAlloc(); + if (pHandleData) + { + rc = vbglDriverOpen(&pHandleData->driver); + if (RT_SUCCESS(rc)) + { + rc = vbglDriverIOCtl(&pHandleData->driver, VBOXGUEST_IOCTL_HGCM_CONNECT, pData, sizeof(*pData)); + if (RT_SUCCESS(rc)) + rc = pData->result; + if (RT_SUCCESS(rc)) + { + *pHandle = pHandleData; + return rc; + } + + vbglDriverClose(&pHandleData->driver); + } + + vbglHGCMHandleFree(pHandleData); + } + else + rc = VERR_NO_MEMORY; + } + else + rc = VERR_INVALID_PARAMETER; + return rc; +} + +DECLVBGL(int) VbglHGCMDisconnect(VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData) +{ + int rc = vbglDriverIOCtl(&handle->driver, VBOXGUEST_IOCTL_HGCM_DISCONNECT, pData, sizeof(*pData)); + + vbglDriverClose(&handle->driver); + + vbglHGCMHandleFree(handle); + + return rc; +} + +DECLVBGL(int) VbglHGCMCall(VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData) +{ + VBGL_HGCM_ASSERT_MSG(cbData >= sizeof(VBoxGuestHGCMCallInfo) + pData->cParms * sizeof(HGCMFunctionParameter), + ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->cParms, + sizeof(VBoxGuestHGCMCallInfo) + pData->cParms * sizeof(VBoxGuestHGCMCallInfo))); + + return vbglDriverIOCtl(&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL(cbData), pData, cbData); +} + +DECLVBGL(int) VbglHGCMCallUserData (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData) +{ + VBGL_HGCM_ASSERT_MSG(cbData >= sizeof(VBoxGuestHGCMCallInfo) + pData->cParms * sizeof(HGCMFunctionParameter), + ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->cParms, + sizeof(VBoxGuestHGCMCallInfo) + pData->cParms * sizeof(VBoxGuestHGCMCallInfo))); + + return vbglDriverIOCtl(&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(cbData), pData, cbData); +} + + +DECLVBGL(int) VbglHGCMCallTimed(VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfoTimed *pData, uint32_t cbData) +{ + uint32_t cbExpected = sizeof(VBoxGuestHGCMCallInfoTimed) + + pData->info.cParms * sizeof(HGCMFunctionParameter); + VBGL_HGCM_ASSERT_MSG(cbData >= cbExpected, + ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->info.cParms, cbExpected)); + NOREF(cbExpected); + + return vbglDriverIOCtl(&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL_TIMED(cbData), pData, cbData); +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/Init.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/Init.c @@ -0,0 +1,310 @@ +/* $Id: Init.cpp $ */ +/** @file + * VBoxGuestLibR0 - Library initialization. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define VBGL_DECL_DATA +#include "VBGLInternal.h" + +#include +#include +#include + + +/********************************************************************************************************************************* +* Global Variables * +*********************************************************************************************************************************/ +/** The global VBGL instance data. */ +VBGLDATA g_vbgldata; + +/** + * Used by vbglQueryDriverInfo and VbglInit to try get the host feature mask and + * version information (g_vbgldata::hostVersion). + * + * This was first implemented by the host in 3.1 and we quietly ignore failures + * for that reason. + */ +static void vbglR0QueryHostVersion (void) +{ + VMMDevReqHostVersion *pReq; + + int rc = VbglGRAlloc ((VMMDevRequestHeader **) &pReq, sizeof (*pReq), VMMDevReq_GetHostVersion); + + if (RT_SUCCESS (rc)) + { + rc = VbglGRPerform (&pReq->header); + + if (RT_SUCCESS (rc)) + { + g_vbgldata.hostVersion = *pReq; + Log (("vbglR0QueryHostVersion: %u.%u.%ur%u %#x\n", + pReq->major, pReq->minor, pReq->build, pReq->revision, pReq->features)); + } + + VbglGRFree (&pReq->header); + } +} + +#ifndef VBGL_VBOXGUEST +/** + * The guest library uses lazy initialization for VMMDev port and memory, + * because these values are provided by the VBoxGuest driver and it might + * be loaded later than other drivers. + * + * The VbglEnter checks the current library status, tries to retrieve these + * values and fails if they are unavailable. + * + */ +static void vbglQueryDriverInfo (void) +{ + int rc = VINF_SUCCESS; + + rc = RTSemMutexRequest(g_vbgldata.mutexDriverInit, RT_INDEFINITE_WAIT); + + if (RT_FAILURE(rc)) + return; + + if (g_vbgldata.status == VbglStatusReady) + { + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + return; + } + + rc = vbglDriverOpen(&g_vbgldata.driver); + + if (RT_SUCCESS(rc)) + { + /* + * Try query the port info. + */ + VBoxGuestPortInfo port; + + rc = vbglDriverIOCtl (&g_vbgldata.driver, + VBOXGUEST_IOCTL_GETVMMDEVPORT, &port, + sizeof (port)); + + if (RT_SUCCESS (rc)) + { + dprintf (("port = 0x%04X, mem = %p\n", port.portAddress, port.pVMMDevMemory)); + + g_vbgldata.portVMMDev = (RTIOPORT)port.portAddress; + g_vbgldata.pVMMDevMemory = port.pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + } + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + dprintf (("vbglQueryDriverInfo rc = %d\n", rc)); +} +#endif /* !VBGL_VBOXGUEST */ + +/** + * Checks if VBGL has been initialized. + * + * The client library, this will lazily complete the initialization. + * + * @return VINF_SUCCESS or VERR_VBGL_NOT_INITIALIZED. + */ +int vbglR0Enter (void) +{ + int rc; + +#ifndef VBGL_VBOXGUEST + if (g_vbgldata.status == VbglStatusInitializing) + { + vbglQueryDriverInfo (); + } +#endif + + rc = g_vbgldata.status == VbglStatusReady? VINF_SUCCESS: VERR_VBGL_NOT_INITIALIZED; + + // dprintf(("VbglEnter: rc = %d\n", rc)); + + return rc; +} + +int vbglInitCommon (void) +{ + int rc = VINF_SUCCESS; + + RT_ZERO(g_vbgldata); + + g_vbgldata.status = VbglStatusInitializing; + + rc = VbglPhysHeapInit (); + + if (RT_SUCCESS(rc)) + { + /* other subsystems, none yet */ + ; + } + else + { + LogRel(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); + g_vbgldata.status = VbglStatusNotInitialized; + } + + dprintf(("vbglInitCommon: rc = %d\n", rc)); + + return rc; +} + +DECLVBGL(void) vbglTerminateCommon (void) +{ + VbglPhysHeapTerminate (); + g_vbgldata.status = VbglStatusNotInitialized; + + return; +} + +#ifdef VBGL_VBOXGUEST + +DECLVBGL(int) VbglInitPrimary(RTIOPORT portVMMDev, VMMDevMemory *pVMMDevMemory) +{ + int rc = VINF_SUCCESS; + +# ifdef RT_OS_WINDOWS /** @todo r=bird: this doesn't make sense. Is there something special going on on windows? */ + dprintf(("vbglInit: starts g_vbgldata.status %d\n", g_vbgldata.status)); + + if ( g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } +# else + dprintf(("vbglInit: starts\n")); +# endif + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + g_vbgldata.portVMMDev = portVMMDev; + g_vbgldata.pVMMDevMemory = pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + else + { + g_vbgldata.status = VbglStatusNotInitialized; + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ + vbglTerminateCommon (); + + return; +} + + +#else /* !VBGL_VBOXGUEST */ + +DECLVBGL(int) VbglInitClient(void) +{ + int rc = VINF_SUCCESS; + + if ( g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + rc = RTSemMutexCreate(&g_vbgldata.mutexDriverInit); + if (RT_SUCCESS(rc)) + { + /* Try to obtain VMMDev port via IOCTL to VBoxGuest main driver. */ + vbglQueryDriverInfo (); + +# ifdef VBOX_WITH_HGCM + rc = vbglR0HGCMInit (); +# endif /* VBOX_WITH_HGCM */ + + if (RT_FAILURE(rc)) + { + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + } + } + + if (RT_FAILURE(rc)) + { + vbglTerminateCommon (); + } + + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ +# ifdef VBOX_WITH_HGCM + vbglR0HGCMTerminate (); +# endif + + /* driver open could fail, which does not prevent VbglInit from succeeding, + * close the driver only if it is opened */ + if (vbglDriverIsOpened(&g_vbgldata.driver)) + vbglDriverClose(&g_vbgldata.driver); + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + + /* note: do vbglTerminateCommon as a last step since it zeroez up the g_vbgldata + * conceptually, doing vbglTerminateCommon last is correct + * since this is the reverse order to how init is done */ + vbglTerminateCommon (); + + return; +} + +int vbglGetDriver(VBGLDRIVER **ppDriver) +{ + if (g_vbgldata.status != VbglStatusReady) + { + vbglQueryDriverInfo(); + if (g_vbgldata.status != VbglStatusReady) + return VERR_TRY_AGAIN; + } + *ppDriver = &g_vbgldata.driver; + return VINF_SUCCESS; +} + +#endif /* !VBGL_VBOXGUEST */ --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/Makefile +++ linux-4.4.0/ubuntu/vbox/vboxsf/Makefile @@ -0,0 +1,92 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# +# VirtualBox Guest Additions Module Makefile. +# +# (For 2.6.x this file must be 'Makefile'!) +# +# Copyright (C) 2006-2011 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxsf +MOD_OBJS = \ + vfsmod.o \ + dirops.o \ + lnkops.o \ + regops.o \ + utils.o \ + GenericRequest.o \ + SysHlp.o \ + PhysHeap.o \ + Init.o \ + VMMDev.o \ + HGCM.o \ + VBoxGuestR0LibSharedFolders.o \ + VbglR0CanUsePhysPageList.o +ifeq ($(BUILD_TARGET_ARCH),x86) +MOD_OBJS += \ + divdi3.o \ + moddi3.o \ + udivdi3.o \ + umoddi3.o \ + qdivrem.o +endif + +MOD_INCL = \ + $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) \ + $(addprefix -I$(KBUILD_EXTMOD)/vboxsf,/ /include /r0drv/linux) + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxsf),) + MANGLING := $(KBUILD_EXTMOD)/vboxsf/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif + +MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \ + -DIN_SUP_R0 -DVBOX -DVBOX_WITH_HGCM -DIN_MODULE -DIN_GUEST_R0 +# our module does not export any symbol +MOD_DEFS += -DRT_NO_EXPORT_SYMBOL +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS +else + MOD_DEFS += -DRT_ARCH_X86 +endif + +ifeq ($(KERN_VERSION), 24) + MOD_CFLAGS = +else + MOD_CFLAGS = -Wno-declaration-after-statement -fshort-wchar -include $(MANGLING) + +# special hack for Fedora Core 6 2.6.18 (fc6), rhel5 2.6.18 (el5), +# ClarkConnect 4.3 (cc4) and ClarkConnect 5 (v5) + ifeq ($(KERNELRELEASE),) + MOD_EXTRA += $(foreach inc,$(KERN_INCL),\ + $(if $(wildcard $(inc)/linux/utsrelease.h),\ + $(if $(shell grep '"2.6.18.*fc6.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*el5.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*v5.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*cc4.*"' $(inc)/linux/utsrelease.h),\ + -DKERNEL_FC6,),)) + else + MOD_EXTRA += $(if $(shell echo "$(KERNELRELEASE)"|grep '2.6.18.*fc6.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*el5.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*v5.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*cc4.*'),\ + -DKERNEL_FC6,) + endif +endif + +MOD_CLEAN = . linux r0drv r0drv/linux + +include $(obj)/Makefile.include.footer --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/Makefile.include.footer +++ linux-4.4.0/ubuntu/vbox/vboxsf/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/Makefile.include.header +++ linux-4.4.0/ubuntu/vbox/vboxsf/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/PhysHeap.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/PhysHeap.c @@ -0,0 +1,636 @@ +/* $Id: PhysHeap.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + +#include +#include +#include + +/* Physical memory heap consists of double linked list + * of chunks. Memory blocks are allocated inside these chunks + * and are members of Allocated and Free double linked lists. + * + * When allocating a block, we search in Free linked + * list for a suitable free block. If there is no such block, + * a new chunk is allocated and the new block is taken from + * the new chunk as the only chunk-sized free block. + * Allocated block is excluded from the Free list and goes to + * Alloc list. + * + * When freeing block, we check the pointer and then + * exclude block from Alloc list and move it to free list. + * + * For each chunk we maintain the allocated blocks counter. + * if 2 (or more) entire chunks are free they are immediately + * deallocated, so we always have at most 1 free chunk. + * + * When freeing blocks, two subsequent free blocks are always + * merged together. Current implementation merges blocks only + * when there is a block after the just freed one. + * + */ + +#define VBGL_PH_ASSERT Assert +#define VBGL_PH_ASSERTMsg AssertMsg + +// #define DUMPHEAP + +#ifdef DUMPHEAP +# define VBGL_PH_dprintf(a) RTAssertMsg2Weak a +#else +# define VBGL_PH_dprintf(a) +#endif + +/* Heap block signature */ +#define VBGL_PH_BLOCKSIGNATURE (0xADDBBBBB) + + +/* Heap chunk signature */ +#define VBGL_PH_CHUNKSIGNATURE (0xADDCCCCC) +/* Heap chunk allocation unit */ +#define VBGL_PH_CHUNKSIZE (0x10000) + +/* Heap block bit flags */ +#define VBGL_PH_BF_ALLOCATED (0x1) + +struct _VBGLPHYSHEAPBLOCK +{ + uint32_t u32Signature; + + /* Size of user data in the block. Does not include the block header. */ + uint32_t cbDataSize; + + uint32_t fu32Flags; + + struct _VBGLPHYSHEAPBLOCK *pNext; + struct _VBGLPHYSHEAPBLOCK *pPrev; + + struct _VBGLPHYSHEAPCHUNK *pChunk; +}; + +struct _VBGLPHYSHEAPCHUNK +{ + uint32_t u32Signature; + + /* Size of the chunk. Includes the chunk header. */ + uint32_t cbSize; + + /* Physical address of the chunk */ + uint32_t physAddr; + + /* Number of allocated blocks in the chunk */ + int32_t cAllocatedBlocks; + + struct _VBGLPHYSHEAPCHUNK *pNext; + struct _VBGLPHYSHEAPCHUNK *pPrev; +}; + + +#ifndef DUMPHEAP +#define dumpheap(a) +#else +void dumpheap (char *point) +{ + VBGL_PH_dprintf(("VBGL_PH dump at '%s'\n", point)); + + VBGL_PH_dprintf(("Chunks:\n")); + + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + while (pChunk) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, allocated = %8d, phys = %08X\n", + pChunk, pChunk->pNext, pChunk->pPrev, pChunk->u32Signature, pChunk->cbSize, pChunk->cAllocatedBlocks, pChunk->physAddr)); + + pChunk = pChunk->pNext; + } + + VBGL_PH_dprintf(("Allocated blocks:\n")); + + VBGLPHYSHEAPBLOCK *pBlock = g_vbgldata.pAllocBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("Free blocks:\n")); + + pBlock = g_vbgldata.pFreeBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("VBGL_PH dump at '%s' done\n", point)); +} +#endif + + +DECLINLINE(void *) vbglPhysHeapBlock2Data (VBGLPHYSHEAPBLOCK *pBlock) +{ + return (void *)(pBlock? (char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK): NULL); +} + +DECLINLINE(VBGLPHYSHEAPBLOCK *) vbglPhysHeapData2Block (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)(p? (char *)p - sizeof (VBGLPHYSHEAPBLOCK): NULL); + + VBGL_PH_ASSERTMsg(pBlock == NULL || pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock->u32Signature = %08X\n", pBlock->u32Signature)); + + return pBlock; +} + +DECLINLINE(int) vbglPhysHeapEnter (void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHeap); + + VBGL_PH_ASSERTMsg(RT_SUCCESS(rc), + ("Failed to request heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglPhysHeapLeave (void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHeap); +} + + +static void vbglPhysHeapInitBlock (VBGLPHYSHEAPBLOCK *pBlock, VBGLPHYSHEAPCHUNK *pChunk, uint32_t cbDataSize) +{ + VBGL_PH_ASSERT(pBlock != NULL); + VBGL_PH_ASSERT(pChunk != NULL); + + pBlock->u32Signature = VBGL_PH_BLOCKSIGNATURE; + pBlock->cbDataSize = cbDataSize; + pBlock->fu32Flags = 0; + pBlock->pNext = NULL; + pBlock->pPrev = NULL; + pBlock->pChunk = pChunk; +} + + +static void vbglPhysHeapInsertBlock (VBGLPHYSHEAPBLOCK *pInsertAfter, VBGLPHYSHEAPBLOCK *pBlock) +{ + VBGL_PH_ASSERTMsg(pBlock->pNext == NULL, + ("pBlock->pNext = %p\n", pBlock->pNext)); + VBGL_PH_ASSERTMsg(pBlock->pPrev == NULL, + ("pBlock->pPrev = %p\n", pBlock->pPrev)); + + if (pInsertAfter) + { + pBlock->pNext = pInsertAfter->pNext; + pBlock->pPrev = pInsertAfter; + + if (pInsertAfter->pNext) + { + pInsertAfter->pNext->pPrev = pBlock; + } + + pInsertAfter->pNext = pBlock; + } + else + { + /* inserting to head of list */ + pBlock->pPrev = NULL; + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + pBlock->pNext = g_vbgldata.pAllocBlocksHead; + + if (g_vbgldata.pAllocBlocksHead) + { + g_vbgldata.pAllocBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pAllocBlocksHead = pBlock; + } + else + { + pBlock->pNext = g_vbgldata.pFreeBlocksHead; + + if (g_vbgldata.pFreeBlocksHead) + { + g_vbgldata.pFreeBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pFreeBlocksHead = pBlock; + } + } +} + +static void vbglPhysHeapExcludeBlock (VBGLPHYSHEAPBLOCK *pBlock) +{ + if (pBlock->pNext) + { + pBlock->pNext->pPrev = pBlock->pPrev; + } + else + { + /* this is tail of list but we do not maintain tails of block lists. + * so do nothing. + */ + ; + } + + if (pBlock->pPrev) + { + pBlock->pPrev->pNext = pBlock->pNext; + } + else + { + /* this is head of list but we do not maintain tails of block lists. */ + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + g_vbgldata.pAllocBlocksHead = pBlock->pNext; + } + else + { + g_vbgldata.pFreeBlocksHead = pBlock->pNext; + } + } + + pBlock->pNext = NULL; + pBlock->pPrev = NULL; +} + +static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize) +{ + RTCCPHYS physAddr; + VBGLPHYSHEAPCHUNK *pChunk; + VBGLPHYSHEAPBLOCK *pBlock; + VBGL_PH_dprintf(("Allocating new chunk of size %d\n", cbSize)); + + /* Compute chunk size to allocate */ + if (cbSize < VBGL_PH_CHUNKSIZE) + { + /* Includes case of block size 0 during initialization */ + cbSize = VBGL_PH_CHUNKSIZE; + } + else + { + /* Round up to next chunk size, which must be power of 2 */ + cbSize = (cbSize + (VBGL_PH_CHUNKSIZE - 1)) & ~(VBGL_PH_CHUNKSIZE - 1); + } + + physAddr = 0; + /* This function allocates physical contiguous memory (below 4GB) according to the IPRT docs. + * Address < 4G is required for the port IO. + */ + pChunk = (VBGLPHYSHEAPCHUNK *)RTMemContAlloc (&physAddr, cbSize); + + if (!pChunk) + { + LogRel(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); + return NULL; + } + + AssertRelease(physAddr < _4G && physAddr + cbSize <= _4G); + + pChunk->u32Signature = VBGL_PH_CHUNKSIGNATURE; + pChunk->cbSize = cbSize; + pChunk->physAddr = (uint32_t)physAddr; + pChunk->cAllocatedBlocks = 0; + pChunk->pNext = g_vbgldata.pChunkHead; + pChunk->pPrev = NULL; + + /* Initialize the free block, which now occupies entire chunk. */ + pBlock = (VBGLPHYSHEAPBLOCK *)((char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK)); + + vbglPhysHeapInitBlock (pBlock, pChunk, cbSize - sizeof (VBGLPHYSHEAPCHUNK) - sizeof (VBGLPHYSHEAPBLOCK)); + + vbglPhysHeapInsertBlock (NULL, pBlock); + + g_vbgldata.pChunkHead = pChunk; + + VBGL_PH_dprintf(("Allocated chunk %p, block = %p size=%x\n", pChunk, pBlock, cbSize)); + + return pBlock; +} + + +void vbglPhysHeapChunkDelete (VBGLPHYSHEAPCHUNK *pChunk) +{ + char *p; + VBGL_PH_ASSERT(pChunk != NULL); + VBGL_PH_ASSERTMsg(pChunk->u32Signature == VBGL_PH_CHUNKSIGNATURE, + ("pChunk->u32Signature = %08X\n", pChunk->u32Signature)); + + VBGL_PH_dprintf(("Deleting chunk %p size %x\n", pChunk, pChunk->cbSize)); + + /* first scan the chunk and exclude all blocks from lists */ + + p = (char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK); + + while (p < (char *)pChunk + pChunk->cbSize) + { + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)p; + + p += pBlock->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + vbglPhysHeapExcludeBlock (pBlock); + } + + VBGL_PH_ASSERTMsg(p == (char *)pChunk + pChunk->cbSize, + ("p = %p, (char *)pChunk + pChunk->cbSize = %p, pChunk->cbSize = %08X\n", + p, (char *)pChunk + pChunk->cbSize, pChunk->cbSize)); + + /* Exclude chunk from the chunk list */ + if (pChunk->pNext) + { + pChunk->pNext->pPrev = pChunk->pPrev; + } + else + { + /* we do not maintain tail */ + ; + } + + if (pChunk->pPrev) + { + pChunk->pPrev->pNext = pChunk->pNext; + } + else + { + /* the chunk was head */ + g_vbgldata.pChunkHead = pChunk->pNext; + } + + RTMemContFree (pChunk, pChunk->cbSize); +} + + +DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize) +{ + VBGLPHYSHEAPBLOCK *pBlock, *iter; + int rc = vbglPhysHeapEnter (); + + if (RT_FAILURE(rc)) + return NULL; + + dumpheap ("pre alloc"); + + pBlock = NULL; + + /* If there are free blocks in the heap, look at them. */ + iter = g_vbgldata.pFreeBlocksHead; + + /* There will be not many blocks in the heap, so + * linear search would be fast enough. + */ + + while (iter) + { + if (iter->cbDataSize == cbSize) + { + /* exact match */ + pBlock = iter; + break; + } + + /* Looking for a free block with nearest size */ + if (iter->cbDataSize > cbSize) + { + if (pBlock) + { + if (iter->cbDataSize < pBlock->cbDataSize) + { + pBlock = iter; + } + } + else + { + pBlock = iter; + } + } + + iter = iter->pNext; + } + + if (!pBlock) + { + /* No free blocks, allocate a new chunk, + * the only free block of the chunk will + * be returned. + */ + pBlock = vbglPhysHeapChunkAlloc (cbSize); + } + + if (pBlock) + { + VBGL_PH_ASSERTMsg(pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock = %p, pBlock->u32Signature = %08X\n", pBlock, pBlock->u32Signature)); + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* We have a free block, either found or allocated. */ + + if (pBlock->cbDataSize > 2*(cbSize + sizeof (VBGLPHYSHEAPBLOCK))) + { + /* Data will occupy less than a half of the block, + * the block should be split. + */ + iter = (VBGLPHYSHEAPBLOCK *)((char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK) + cbSize); + + /* Init the new 'iter' block, initialized blocks are always marked as free. */ + vbglPhysHeapInitBlock (iter, pBlock->pChunk, pBlock->cbDataSize - cbSize - sizeof (VBGLPHYSHEAPBLOCK)); + + pBlock->cbDataSize = cbSize; + + /* Insert the new 'iter' block after the 'pBlock' in the free list */ + vbglPhysHeapInsertBlock (pBlock, iter); + } + + /* Exclude pBlock from free list */ + vbglPhysHeapExcludeBlock (pBlock); + + /* Mark as allocated */ + pBlock->fu32Flags |= VBGL_PH_BF_ALLOCATED; + + /* Insert to allocated list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks++; + } + + dumpheap ("post alloc"); + + vbglPhysHeapLeave (); + VBGL_PH_dprintf(("VbglPhysHeapAlloc %x size %x\n", vbglPhysHeapBlock2Data (pBlock), pBlock->cbDataSize)); + + return vbglPhysHeapBlock2Data (pBlock); +} + +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p) +{ + uint32_t physAddr = 0; + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapData2Block (p); + + if (pBlock) + { + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + physAddr = pBlock->pChunk->physAddr + (uint32_t)((uintptr_t)p - (uintptr_t)pBlock->pChunk); + } + + return physAddr; +} + +DECLVBGL(void) VbglPhysHeapFree(void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock; + VBGLPHYSHEAPBLOCK *pNeighbour; + + int rc = vbglPhysHeapEnter (); + if (RT_FAILURE(rc)) + return; + + dumpheap ("pre free"); + + pBlock = vbglPhysHeapData2Block (p); + + if (!pBlock) + { + vbglPhysHeapLeave (); + return; + } + + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* Exclude from allocated list */ + vbglPhysHeapExcludeBlock (pBlock); + + dumpheap ("post exclude"); + + VBGL_PH_dprintf(("VbglPhysHeapFree %x size %x\n", p, pBlock->cbDataSize)); + + /* Mark as free */ + pBlock->fu32Flags &= ~VBGL_PH_BF_ALLOCATED; + + /* Insert to free list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + dumpheap ("post insert"); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks--; + + VBGL_PH_ASSERT(pBlock->pChunk->cAllocatedBlocks >= 0); + + /* Check if we can merge 2 free blocks. To simplify heap maintenance, + * we will look at block after the just freed one. + * This will not prevent us from detecting free memory chunks. + * Also in most cases blocks are deallocated in reverse allocation order + * and in that case the merging will work. + */ + + pNeighbour = (VBGLPHYSHEAPBLOCK *)((char *)p + pBlock->cbDataSize); + + if ((char *)pNeighbour < (char *)pBlock->pChunk + pBlock->pChunk->cbSize + && (pNeighbour->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0) + { + /* The next block is free as well. */ + + /* Adjust size of current memory block */ + pBlock->cbDataSize += pNeighbour->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + /* Exclude the next neighbour */ + vbglPhysHeapExcludeBlock (pNeighbour); + } + + dumpheap ("post merge"); + + /* now check if there are 2 or more free chunks */ + if (pBlock->pChunk->cAllocatedBlocks == 0) + { + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + uint32_t u32FreeChunks = 0; + + while (pChunk) + { + if (pChunk->cAllocatedBlocks == 0) + { + u32FreeChunks++; + } + + pChunk = pChunk->pNext; + } + + if (u32FreeChunks > 1) + { + /* Delete current chunk, it will also exclude all free blocks + * remaining in the chunk from the free list, so the pBlock + * will also be invalid after this. + */ + vbglPhysHeapChunkDelete (pBlock->pChunk); + } + } + + dumpheap ("post free"); + + vbglPhysHeapLeave (); +} + +DECLVBGL(int) VbglPhysHeapInit (void) +{ + int rc = VINF_SUCCESS; + + /* Allocate the first chunk of the heap. */ + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapChunkAlloc (0); + + if (!pBlock) + rc = VERR_NO_MEMORY; + + RTSemFastMutexCreate(&g_vbgldata.mutexHeap); + + return rc; +} + +DECLVBGL(void) VbglPhysHeapTerminate (void) +{ + while (g_vbgldata.pChunkHead) + { + vbglPhysHeapChunkDelete (g_vbgldata.pChunkHead); + } + + RTSemFastMutexDestroy(g_vbgldata.mutexHeap); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/SysHlp.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/SysHlp.c @@ -0,0 +1,343 @@ +/* $Id: SysHlp.cpp $ */ +/** @file + * VBoxGuestLibR0 - IDC with VBoxGuest and HGCM helpers. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#define LOG_GROUP LOG_GROUP_HGCM +#include + +#include +#include "SysHlp.h" + +#include + +#ifdef VBGL_VBOXGUEST + +#if !defined (RT_OS_WINDOWS) +# include +# include +#endif + + +/** + * Internal worker for locking a range of linear addresses. + * + * @returns VBox status code. + * @param ppvCtx Where to store context data. + * @param pv The start of the range. + * @param u32Size The size of the range. + * @param fWriteAccess Lock for read-write (true) or readonly (false). + * @param fFlags HGCM call flags, VBGLR0_HGCM_F_XXX. + */ +int vbglLockLinear(void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags) +{ + int rc = VINF_SUCCESS; +#ifndef RT_OS_WINDOWS + RTR0MEMOBJ MemObj = NIL_RTR0MEMOBJ; + uint32_t fAccess = RTMEM_PROT_READ | (fWriteAccess ? RTMEM_PROT_WRITE : 0); +#endif + + /* Zero size buffers shouldn't be locked. */ + if (u32Size == 0) + { + Assert(pv == NULL); +#ifdef RT_OS_WINDOWS + *ppvCtx = NULL; +#else + *ppvCtx = NIL_RTR0MEMOBJ; +#endif + return VINF_SUCCESS; + } + + /** @todo just use IPRT here. the extra allocation shouldn't matter much... + * Then we can move all this up one level even. */ +#ifdef RT_OS_WINDOWS + PMDL pMdl = IoAllocateMdl(pv, u32Size, FALSE, FALSE, NULL); + + if (pMdl == NULL) + { + rc = VERR_NOT_SUPPORTED; + AssertMsgFailed(("IoAllocateMdl %p %x failed!!\n", pv, u32Size)); + } + else + { + __try { + /* Calls to MmProbeAndLockPages must be enclosed in a try/except block. */ + MmProbeAndLockPages(pMdl, + /** @todo (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER? UserMode: KernelMode */ + KernelMode, + (fWriteAccess) ? IoModifyAccess : IoReadAccess); + + *ppvCtx = pMdl; + + } __except(EXCEPTION_EXECUTE_HANDLER) { + + IoFreeMdl(pMdl); + /** @todo */ + rc = VERR_INVALID_PARAMETER; + AssertMsgFailed(("MmProbeAndLockPages %p %x failed!!\n", pv, u32Size)); + } + } + +#else + /* + * Lock depending on context. + * + * Note: We will later use the memory object here to convert the HGCM + * linear buffer parameter into a physical page list. This is why + * we lock both kernel pages on all systems, even those where we + * know they aren't pageable. + */ + if ((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER) + rc = RTR0MemObjLockUser(&MemObj, (RTR3PTR)pv, u32Size, fAccess, NIL_RTR0PROCESS); + else + rc = RTR0MemObjLockKernel(&MemObj, pv, u32Size, fAccess); + if (RT_SUCCESS(rc)) + *ppvCtx = MemObj; + else + *ppvCtx = NIL_RTR0MEMOBJ; + +#endif + + return rc; +} + +void vbglUnlockLinear(void *pvCtx, void *pv, uint32_t u32Size) +{ +#ifdef RT_OS_WINDOWS + PMDL pMdl = (PMDL)pvCtx; + + Assert(pMdl); + if (pMdl != NULL) + { + MmUnlockPages(pMdl); + IoFreeMdl(pMdl); + } + +#else + RTR0MEMOBJ MemObj = (RTR0MEMOBJ)pvCtx; + int rc = RTR0MemObjFree(MemObj, false); + AssertRC(rc); + +#endif + + NOREF(pv); + NOREF(u32Size); +} + +#else /* !VBGL_VBOXGUEST */ + +# ifdef RT_OS_OS2 +# include /* for VBOXGUESTOS2IDCCONNECT */ +RT_C_DECLS_BEGIN +/* + * On OS/2 we'll do the connecting in the assembly code of the + * client driver, exporting a g_VBoxGuestIDC symbol containing + * the connection information obtained from the 16-bit IDC. + */ +extern VBOXGUESTOS2IDCCONNECT g_VBoxGuestIDC; +RT_C_DECLS_END +# endif + +# if !defined(RT_OS_OS2) \ + && !defined(RT_OS_WINDOWS) +RT_C_DECLS_BEGIN +extern DECLVBGL(void *) VBoxGuestIDCOpen(uint32_t *pu32Version); +extern DECLVBGL(void) VBoxGuestIDCClose(void *pvOpaque); +extern DECLVBGL(int) VBoxGuestIDCCall(void *pvOpaque, unsigned int iCmd, void *pvData, size_t cbSize, size_t *pcbReturn); +RT_C_DECLS_END +# endif + +bool vbglDriverIsOpened(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + return pDriver->pFileObject != NULL; +# elif defined (RT_OS_OS2) + return pDriver->u32Session != UINT32_MAX && pDriver->u32Session != 0; +# else + return pDriver->pvOpaque != NULL; +# endif +} + +int vbglDriverOpen(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + UNICODE_STRING uszDeviceName; + RtlInitUnicodeString(&uszDeviceName, L"\\Device\\VBoxGuest"); + + PDEVICE_OBJECT pDeviceObject = NULL; + PFILE_OBJECT pFileObject = NULL; + + NTSTATUS rc = IoGetDeviceObjectPointer(&uszDeviceName, FILE_ALL_ACCESS, &pFileObject, &pDeviceObject); + if (NT_SUCCESS(rc)) + { + Log(("vbglDriverOpen VBoxGuest successful pDeviceObject=%x\n", pDeviceObject)); + pDriver->pDeviceObject = pDeviceObject; + pDriver->pFileObject = pFileObject; + return VINF_SUCCESS; + } + /** @todo return RTErrConvertFromNtStatus(rc)! */ + Log(("vbglDriverOpen VBoxGuest failed with ntstatus=%x\n", rc)); + return rc; + +# elif defined (RT_OS_OS2) + /* + * Just check whether the connection was made or not. + */ + if ( g_VBoxGuestIDC.u32Version == VMMDEV_VERSION + && RT_VALID_PTR(g_VBoxGuestIDC.u32Session) + && RT_VALID_PTR(g_VBoxGuestIDC.pfnServiceEP)) + { + pDriver->u32Session = g_VBoxGuestIDC.u32Session; + return VINF_SUCCESS; + } + pDriver->u32Session = UINT32_MAX; + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; + +# else + uint32_t u32VMMDevVersion; + pDriver->pvOpaque = VBoxGuestIDCOpen(&u32VMMDevVersion); + if ( pDriver->pvOpaque + && u32VMMDevVersion == VMMDEV_VERSION) + return VINF_SUCCESS; + + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; +# endif +} + +# ifdef RT_OS_WINDOWS +static NTSTATUS vbglDriverIOCtlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) +{ + Log(("VBGL completion %x\n", Irp)); + + KEVENT *pEvent = (KEVENT *)Context; + KeSetEvent(pEvent, IO_NO_INCREMENT, FALSE); + + return STATUS_MORE_PROCESSING_REQUIRED; +} +# endif + +int vbglDriverIOCtl(VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData) +{ + Log(("vbglDriverIOCtl: pDriver: %p, Func: %x, pvData: %p, cbData: %d\n", pDriver, u32Function, pvData, cbData)); + +# ifdef RT_OS_WINDOWS + KEVENT Event; + + KeInitializeEvent(&Event, NotificationEvent, FALSE); + + /* Have to use the IoAllocateIRP method because this code is generic and + * must work in any thread context. + * The IoBuildDeviceIoControlRequest, which was used here, does not work + * when APCs are disabled, for example. + */ + PIRP irp = IoAllocateIrp(pDriver->pDeviceObject->StackSize, FALSE); + + Log(("vbglDriverIOCtl: irp %p, IRQL = %d\n", irp, KeGetCurrentIrql())); + + if (irp == NULL) + { + Log(("vbglDriverIOCtl: IRP allocation failed!\n")); + return VERR_NO_MEMORY; + } + + /* + * Setup the IRP_MJ_DEVICE_CONTROL IRP. + */ + + PIO_STACK_LOCATION nextStack = IoGetNextIrpStackLocation(irp); + + nextStack->MajorFunction = IRP_MJ_DEVICE_CONTROL; + nextStack->MinorFunction = 0; + nextStack->DeviceObject = pDriver->pDeviceObject; + nextStack->Parameters.DeviceIoControl.OutputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.InputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.IoControlCode = u32Function; + nextStack->Parameters.DeviceIoControl.Type3InputBuffer = pvData; + + irp->AssociatedIrp.SystemBuffer = pvData; /* Output buffer. */ + irp->MdlAddress = NULL; + + /* A completion routine is required to signal the Event. */ + IoSetCompletionRoutine(irp, vbglDriverIOCtlCompletion, &Event, TRUE, TRUE, TRUE); + + NTSTATUS rc = IoCallDriver(pDriver->pDeviceObject, irp); + + if (NT_SUCCESS (rc)) + { + /* Wait the event to be signalled by the completion routine. */ + KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); + + rc = irp->IoStatus.Status; + + Log(("vbglDriverIOCtl: wait completed IRQL = %d\n", KeGetCurrentIrql())); + } + + IoFreeIrp(irp); + + if (rc != STATUS_SUCCESS) + Log(("vbglDriverIOCtl: ntstatus=%x\n", rc)); + + if (NT_SUCCESS(rc)) + return VINF_SUCCESS; + if (rc == STATUS_INVALID_PARAMETER) + return VERR_INVALID_PARAMETER; + if (rc == STATUS_INVALID_BUFFER_SIZE) + return VERR_OUT_OF_RANGE; + return VERR_VBGL_IOCTL_FAILED; + +# elif defined (RT_OS_OS2) + if ( pDriver->u32Session + && pDriver->u32Session == g_VBoxGuestIDC.u32Session) + return g_VBoxGuestIDC.pfnServiceEP(pDriver->u32Session, u32Function, pvData, cbData, NULL); + + Log(("vbglDriverIOCtl: No connection\n")); + return VERR_WRONG_ORDER; + +# else + return VBoxGuestIDCCall(pDriver->pvOpaque, u32Function, pvData, cbData, NULL); +# endif +} + +void vbglDriverClose(VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + Log(("vbglDriverClose pDeviceObject=%x\n", pDriver->pDeviceObject)); + ObDereferenceObject(pDriver->pFileObject); + pDriver->pFileObject = NULL; + pDriver->pDeviceObject = NULL; + +# elif defined (RT_OS_OS2) + pDriver->u32Session = 0; + +# else + VBoxGuestIDCClose(pDriver->pvOpaque); + pDriver->pvOpaque = NULL; +# endif +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/SysHlp.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/SysHlp.h @@ -0,0 +1,122 @@ +/* $Id: SysHlp.h $ */ +/** @file + * VBoxGuestLibR0 - System dependent helpers internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_SysHlp_h +#define ___VBoxGuestLib_SysHlp_h + +#include + +#ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap +# pragma warning(disable : 4163) +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# endif +/* XP DDK #defines ExFreePool to ExFreePoolWithTag. The latter does not exist on NT4, so... + * The same for ExAllocatePool. + */ +# undef ExAllocatePool +# undef ExFreePool +#endif + +typedef struct _VBGLDRIVER +{ +#ifdef RT_OS_WINDOWS + PDEVICE_OBJECT pDeviceObject; + PFILE_OBJECT pFileObject; +#elif defined (RT_OS_OS2) + uint32_t u32Session; /**< just for sanity checking. */ +#else /* PORTME */ + void *pvOpaque; +#endif +} VBGLDRIVER; + +int vbglLockLinear(void **ppvCtx, void *pv, uint32_t cb, bool fWriteAccess, uint32_t fFlags); +void vbglUnlockLinear(void *pvCtx, void *pv, uint32_t cb); + + +#ifndef VBGL_VBOXGUEST + +/** + * Open VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox status code + */ +int vbglDriverOpen(VBGLDRIVER *pDriver); + +/** + * Answers whether the VBoxGuest driver is opened + * + * @param pDriver Pointer to the driver structure. + * + * @return true - if opened, false - otherwise + */ +bool vbglDriverIsOpened(VBGLDRIVER *pDriver); + +/** + * Call VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * @param u32Function Function code. + * @param pvData Pointer to supplied in/out data buffer. + * @param cbData Size of data buffer. + * + * @returns VBox status code + */ +int vbglDriverIOCtl(VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData); + +/** + * Close VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @returns VBox status code + */ +void vbglDriverClose(VBGLDRIVER *pDriver); + +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VBGLInternal.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/VBGLInternal.h @@ -0,0 +1,173 @@ +/* $Id: VBGLInternal.h $ */ +/** @file + * VBoxGuestLibR0 - Internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBGLInternal_h +#define ___VBoxGuestLib_VBGLInternal_h + +#include +#include +#include + +#include + + +#ifdef RT_OS_WINDOWS /** @todo dprintf() -> Log() */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define dprintf(a) RTLogBackdoorPrintf a +# else +# define dprintf(a) do {} while (0) +# endif +#else +# define dprintf(a) Log(a) +#endif + +#include "SysHlp.h" + +#pragma pack(4) /** @todo r=bird: What do we need packing for here? None of these structures are shared between drivers AFAIK. */ + +struct _VBGLPHYSHEAPBLOCK; +typedef struct _VBGLPHYSHEAPBLOCK VBGLPHYSHEAPBLOCK; +struct _VBGLPHYSHEAPCHUNK; +typedef struct _VBGLPHYSHEAPCHUNK VBGLPHYSHEAPCHUNK; + +#ifndef VBGL_VBOXGUEST +struct VBGLHGCMHANDLEDATA +{ + uint32_t fAllocated; + VBGLDRIVER driver; +}; +#endif + +enum VbglLibStatus +{ + VbglStatusNotInitialized = 0, + VbglStatusInitializing, + VbglStatusReady +}; + +/** + * Global VBGL ring-0 data. + * Lives in VbglR0Init.cpp. + */ +typedef struct VBGLDATA +{ + enum VbglLibStatus status; + + RTIOPORT portVMMDev; + + VMMDevMemory *pVMMDevMemory; + + /** + * Physical memory heap data. + * @{ + */ + + VBGLPHYSHEAPBLOCK *pFreeBlocksHead; + VBGLPHYSHEAPBLOCK *pAllocBlocksHead; + VBGLPHYSHEAPCHUNK *pChunkHead; + + RTSEMFASTMUTEX mutexHeap; + /** @} */ + + /** + * The host version data. + */ + VMMDevReqHostVersion hostVersion; + + +#ifndef VBGL_VBOXGUEST + /** + * Handle for the main driver instance. + * @{ + */ + + RTSEMMUTEX mutexDriverInit; + + VBGLDRIVER driver; + + /** @} */ + + /** + * Fast heap for HGCM handles data. + * @{ + */ + + RTSEMFASTMUTEX mutexHGCMHandle; + + struct VBGLHGCMHANDLEDATA aHGCMHandleData[64]; + + /** @} */ +#endif +} VBGLDATA; + + +#pragma pack() + +#ifndef VBGL_DECL_DATA +extern VBGLDATA g_vbgldata; +#endif + +/** + * Internal macro for checking whether we can pass physical page lists to the + * host. + * + * ASSUMES that vbglR0Enter has been called already. + * + * @param a_fLocked For the windows shared folders workarounds. + * + * @remarks Disabled the PageList feature for locked memory on Windows, + * because a new MDL is created by VBGL to get the page addresses + * and the pages from the MDL are marked as dirty when they should not. + */ +#if defined(RT_OS_WINDOWS) +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !(a_fLocked) && (g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#else +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !!(g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#endif + +int vbglR0Enter (void); + +#ifdef VBOX_WITH_HGCM +# ifndef VBGL_VBOXGUEST +int vbglR0HGCMInit(void); +int vbglR0HGCMTerminate(void); +# endif +struct VBGLHGCMHANDLEDATA *vbglHGCMHandleAlloc(void); +void vbglHGCMHandleFree(struct VBGLHGCMHANDLEDATA *pHandle); +#endif /* VBOX_WITH_HGCM */ + +#ifndef VBGL_VBOXGUEST +/** + * Get a handle to the main VBoxGuest driver. + * @returns VERR_TRY_AGAIN if the main driver has not yet been loaded. + */ +int vbglGetDriver(VBGLDRIVER **ppDriver); +#endif + +#endif /* !___VBoxGuestLib_VBGLInternal_h */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VBoxGuestLog.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/VBoxGuestLog.h @@ -0,0 +1,59 @@ +/* $Id: VBoxGuestLog.h $ */ +/** @file + * VBoxGuestLibR0 - Guest Logging facility. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBOXGUESTLOG__H +#define __VBOXGUESTLOG__H + +#ifndef RT_OS_WINDOWS +# error "Don't include this file." +#else /* RT_OS_WINDOWS */ +/* Save LOG_ENABLED state, because "VBox/rt/log.h" + * may undefine it for IN_RING0 code. + */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define __LOG_ENABLED_SAVED__ +# endif + +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# ifdef VBOX_GUEST +# include +# undef Log +# define Log(a) RTLogBackdoorPrintf a +# else +# define Log(a) DbgPrint a +# endif +# else +# define Log(a) +# endif + +# ifdef __LOG_ENABLED_SAVED__ +# define LOG_ENABLED +# undef __LOG_ENABLED_SAVED__ +# endif + +#endif /* RT_OS_WINDOWS */ + +#endif /* !__VBOXGUESTLOG__H */ --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.c @@ -0,0 +1,746 @@ +/* $Id: VBoxGuestR0LibSharedFolders.c $ */ +/** @file + * VBoxGuestR0LibSharedFolders - Ring 0 Shared Folders calls. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with !VBGL_VBOXGUEST */ +#ifndef VBGL_VBOXGUEST + + +/********************************************************************************************************************************* +* Header Files * +*********************************************************************************************************************************/ +#define LOG_GROUP LOG_GROUP_SHARED_FOLDERS +#include +#include +#include +#include +#include +#include + + +/********************************************************************************************************************************* +* Defined Constants And Macros * +*********************************************************************************************************************************/ +#define SHFL_CPARMS_SET_UTF8 0 +#define SHFL_CPARMS_SET_SYMLINKS 0 + +#define VBOX_INIT_CALL(a, b, c) \ + LogFunc(("%s, idClient=%d\n", "SHFL_FN_" # b, (c)->idClient)); \ + (a)->result = VINF_SUCCESS; \ + (a)->u32ClientID = (c)->idClient; \ + (a)->u32Function = SHFL_FN_##b; \ + (a)->cParms = SHFL_CPARMS_##b + + + +DECLVBGL(int) VbglR0SfInit(void) +{ + return VbglInitClient(); +} + +DECLVBGL(void) VbglR0SfTerm(void) +{ + VbglTerminate(); +} + +DECLVBGL(int) VbglR0SfConnect(PVBGLSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMConnectInfo data; + + pClient->handle = NULL; + + RT_ZERO(data); + data.result = VINF_SUCCESS; + data.Loc.type = VMMDevHGCMLoc_LocalHost_Existing; + strcpy (data.Loc.u.host.achName, "VBoxSharedFolders"); + + rc = VbglHGCMConnect(&pClient->handle, &data); +/* Log(("VBOXSF: VbglR0SfConnect: VbglHGCMConnect rc = %#x, result = %#x\n", rc, data.result)); */ + if (RT_SUCCESS(rc)) + rc = data.result; + if (RT_SUCCESS(rc)) + { + pClient->idClient = data.u32ClientID; + LogFunc(("idClient=%d\n", pClient->idClient)); + } + return rc; +} + +DECLVBGL(void) VbglR0SfDisconnect(PVBGLSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMDisconnectInfo data; + + LogFunc(("u32ClientID=%d\n", pClient->idClient)); + if (pClient->handle == NULL) + return; /* not connected */ + + RT_ZERO(data); + data.result = VINF_SUCCESS; + data.u32ClientID = pClient->idClient; + + rc = VbglHGCMDisconnect(pClient->handle, &data); + NOREF(rc); +/* Log(("VBOXSF: VbglR0SfDisconnect: VbglHGCMDisconnect rc = %#x, result = %#x\n", rc, data.result)); */ + return; +} + +DECLVBGL(int) VbglR0SfQueryMappings(PVBGLSFCLIENT pClient, SHFLMAPPING paMappings[], uint32_t *pcMappings) +{ + int rc; + VBoxSFQueryMappings data; + + VBOX_INIT_CALL(&data.callInfo, QUERY_MAPPINGS, pClient); + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = SHFL_MF_UCS2; + + data.numberOfMappings.type = VMMDevHGCMParmType_32bit; + data.numberOfMappings.u.value32 = *pcMappings; + + data.mappings.type = VMMDevHGCMParmType_LinAddr; + data.mappings.u.Pointer.size = sizeof(SHFLMAPPING) * *pcMappings; + data.mappings.u.Pointer.u.linearAddr = (uintptr_t)&paMappings[0]; + +/* Log(("VBOXSF: in ifs difference %d\n", (char *)&data.flags.type - (char *)&data.callInfo.cParms)); */ + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfQueryMappings: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + if (RT_SUCCESS(rc)) + *pcMappings = data.numberOfMappings.u.value32; + + return rc; +} + +DECLVBGL(int) VbglR0SfQueryMapName(PVBGLSFCLIENT pClient, SHFLROOT root, SHFLSTRING *pString, uint32_t size) +{ + int rc; + VBoxSFQueryMapName data; + + VBOX_INIT_CALL(&data.callInfo, QUERY_MAP_NAME, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = root; + + data.name.type = VMMDevHGCMParmType_LinAddr; + data.name.u.Pointer.size = size; + data.name.u.Pointer.u.linearAddr = (uintptr_t)pString; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfQueryMapName: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + + return rc; +} + +DECLVBGL(int) VbglR0SfMapFolder(PVBGLSFCLIENT pClient, PSHFLSTRING szFolderName, PVBGLSFMAP pMap) +{ + int rc; + VBoxSFMapFolder data; + + VBOX_INIT_CALL(&data.callInfo, MAP_FOLDER, pClient); + + data.path.type = VMMDevHGCMParmType_LinAddr; + data.path.u.Pointer.size = ShflStringSizeOfBuffer(szFolderName); + data.path.u.Pointer.u.linearAddr = (uintptr_t)szFolderName; + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = 0; + + data.delimiter.type = VMMDevHGCMParmType_32bit; + data.delimiter.u.value32 = RTPATH_DELIMITER; + + data.fCaseSensitive.type = VMMDevHGCMParmType_32bit; +#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) + data.fCaseSensitive.u.value32 = 0; +#else + data.fCaseSensitive.u.value32 = 1; +#endif + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfMapFolder: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + pMap->root = data.root.u.value32; + rc = data.callInfo.result; + } + else if (rc == VERR_NOT_IMPLEMENTED) + { + /* try the legacy interface too; temporary to assure backwards compatibility */ + VBoxSFMapFolder_Old OldData; + + VBOX_INIT_CALL(&OldData.callInfo, MAP_FOLDER_OLD, pClient); + + OldData.path.type = VMMDevHGCMParmType_LinAddr; + OldData.path.u.Pointer.size = ShflStringSizeOfBuffer (szFolderName); + OldData.path.u.Pointer.u.linearAddr = (uintptr_t)szFolderName; + + OldData.root.type = VMMDevHGCMParmType_32bit; + OldData.root.u.value32 = 0; + + OldData.delimiter.type = VMMDevHGCMParmType_32bit; + OldData.delimiter.u.value32 = RTPATH_DELIMITER; + + rc = VbglHGCMCall(pClient->handle, &OldData.callInfo, sizeof(OldData)); + if (RT_SUCCESS(rc)) + { + pMap->root = OldData.root.u.value32; + rc = OldData.callInfo.result; + } + } + return rc; +} + +DECLVBGL(int) VbglR0SfUnmapFolder(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap) +{ + int rc; + VBoxSFUnmapFolder data; + + VBOX_INIT_CALL(&data.callInfo, UNMAP_FOLDER, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfUnmapFolder: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfCreate(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pParsedPath, PSHFLCREATEPARMS pCreateParms) +{ + /** @todo copy buffers to physical or mapped memory. */ + int rc; + VBoxSFCreate data; + + VBOX_INIT_CALL(&data.callInfo, CREATE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.parms.type = VMMDevHGCMParmType_LinAddr; + data.parms.u.Pointer.size = sizeof(SHFLCREATEPARMS); + data.parms.u.Pointer.u.linearAddr = (uintptr_t)pCreateParms; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfCreate: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfClose(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE Handle) +{ + int rc; + VBoxSFClose data; + + VBOX_INIT_CALL(&data.callInfo, CLOSE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = Handle; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfClose: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfRemove(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pParsedPath, uint32_t flags) +{ + int rc = VINF_SUCCESS; + + VBoxSFRemove data; + + VBOX_INIT_CALL(&data.callInfo, REMOVE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = ShflStringSizeOfBuffer(pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfRemove: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS (rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfRename(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pSrcPath, PSHFLSTRING pDestPath, uint32_t flags) +{ + int rc; + VBoxSFRename data; + + VBOX_INIT_CALL(&data.callInfo, RENAME, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.src.type = VMMDevHGCMParmType_LinAddr_In; + data.src.u.Pointer.size = ShflStringSizeOfBuffer(pSrcPath); + data.src.u.Pointer.u.linearAddr = (uintptr_t)pSrcPath; + + data.dest.type = VMMDevHGCMParmType_LinAddr_In; + data.dest.u.Pointer.size = ShflStringSizeOfBuffer(pDestPath); + data.dest.u.Pointer.u.linearAddr = (uintptr_t)pDestPath; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfRename: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS (rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfRead(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked) +{ + int rc; + VBoxSFRead data; + + VBOX_INIT_CALL(&data.callInfo, READ, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.buffer.type = (fLocked) ? VMMDevHGCMParmType_LinAddr_Locked_Out : VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfRead: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) VbglR0SfReadPageList(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages) +{ + uint32_t cbToRead = *pcbBuffer; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFRead) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFRead *pData = (VBoxSFRead *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint16_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, READ, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToRead; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToRead; + pData->buffer.u.PageList.offset = sizeof(VBoxSFRead); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST; + pPgLst->offFirstPage = offFirstPage; + pPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pPgLst->aPages[iPage] = paPages[iPage]; + + rc = VbglHGCMCall(pClient->handle, &pData->callInfo, cbData); +/* Log(("VBOXSF: VbglR0SfReadPageList: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; +} + +DECLVBGL(int) VbglR0SfWrite(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked) +{ + int rc; + VBoxSFWrite data; + + VBOX_INIT_CALL(&data.callInfo, WRITE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.buffer.type = fLocked ? VMMDevHGCMParmType_LinAddr_Locked_In : VMMDevHGCMParmType_LinAddr_In; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfWrite: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) VbglR0SfWritePhysCont(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, + uint32_t *pcbBuffer, RTCCPHYS PhysBuffer) +{ + uint32_t cbToWrite = *pcbBuffer; + uint32_t cPages = RT_ALIGN_32((PhysBuffer & PAGE_OFFSET_MASK) + cbToWrite, PAGE_SIZE) >> PAGE_SHIFT; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFWrite) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFWrite *pData = (VBoxSFWrite *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint32_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, WRITE, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToWrite; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToWrite; + pData->buffer.u.PageList.offset = sizeof(VBoxSFWrite); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + pPgLst->offFirstPage = (uint16_t)(PhysBuffer & PAGE_OFFSET_MASK); + pPgLst->cPages = cPages; + PhysBuffer &= ~(RTCCPHYS)PAGE_OFFSET_MASK; + for (iPage = 0; iPage < cPages; iPage++, PhysBuffer += PAGE_SIZE) + pPgLst->aPages[iPage] = PhysBuffer; + + rc = VbglHGCMCall(pClient->handle, &pData->callInfo, cbData); +/* Log(("VBOXSF: VbglR0SfWritePhysCont: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; + +} + +DECLVBGL(int) VbglR0SfWritePageList(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages) +{ + uint32_t cbToWrite = *pcbBuffer; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFWrite) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFWrite *pData = (VBoxSFWrite *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint16_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, WRITE, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToWrite; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToWrite; + pData->buffer.u.PageList.offset = sizeof(VBoxSFWrite); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + pPgLst->offFirstPage = offFirstPage; + pPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pPgLst->aPages[iPage] = paPages[iPage]; + + rc = VbglHGCMCall(pClient->handle, &pData->callInfo, cbData); +/* Log(("VBOXSF: VbglR0SfWritePageList: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; +} + +DECLVBGL(int) VbglR0SfFlush(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile) +{ + int rc; + VBoxSFFlush data; + + VBOX_INIT_CALL(&data.callInfo, FLUSH, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfFlush: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfDirInfo( + PVBGLSFCLIENT pClient, + PVBGLSFMAP pMap, + SHFLHANDLE hFile, + PSHFLSTRING ParsedPath, + uint32_t flags, + uint32_t index, + uint32_t *pcbBuffer, + PSHFLDIRINFO pBuffer, + uint32_t *pcFiles) +{ + int rc; + VBoxSFList data; + + VBOX_INIT_CALL(&data.callInfo, LIST, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = ParsedPath ? ShflStringSizeOfBuffer(ParsedPath) : 0; + data.path.u.Pointer.u.linearAddr = (uintptr_t) ParsedPath; + + data.buffer.type = VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + data.resumePoint.type = VMMDevHGCMParmType_32bit; + data.resumePoint.u.value32 = index; + data.cFiles.type = VMMDevHGCMParmType_32bit; + data.cFiles.u.value32 = 0; /* out parameters only */ + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfDirInfo: rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + *pcFiles = data.cFiles.u.value32; + return rc; +} + +DECLVBGL(int) VbglR0SfFsInfo(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, + uint32_t flags, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer) +{ + int rc; + VBoxSFInformation data; + + VBOX_INIT_CALL(&data.callInfo, INFORMATION, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.info.type = VMMDevHGCMParmType_LinAddr; + data.info.u.Pointer.size = *pcbBuffer; + data.info.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfFsInfo: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) VbglR0SfLock(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint64_t cbSize, uint32_t fLock) +{ + int rc; + VBoxSFLock data; + + VBOX_INIT_CALL(&data.callInfo, LOCK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.length.type = VMMDevHGCMParmType_64bit; + data.length.u.value64 = cbSize; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = fLock; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfLock: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS (rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfSetUtf8(PVBGLSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMCallInfo callInfo; + + VBOX_INIT_CALL(&callInfo, SET_UTF8, pClient); + rc = VbglHGCMCall(pClient->handle, &callInfo, sizeof(callInfo)); +/* Log(("VBOXSF: VbglR0SfSetUtf8: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfReadLink(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pParsedPath, uint32_t cbBuffer, uint8_t *pBuffer) +{ + int rc; + VBoxSFReadLink data; + + VBOX_INIT_CALL(&data.callInfo, READLINK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.buffer.type = VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = cbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfReadLink: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS (rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfSymlink(PVBGLSFCLIENT pClient, PVBGLSFMAP pMap, PSHFLSTRING pNewPath, PSHFLSTRING pOldPath, + PSHFLFSOBJINFO pBuffer) +{ + int rc; + VBoxSFSymlink data; + + VBOX_INIT_CALL(&data.callInfo, SYMLINK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.newPath.type = VMMDevHGCMParmType_LinAddr_In; + data.newPath.u.Pointer.size = ShflStringSizeOfBuffer (pNewPath); + data.newPath.u.Pointer.u.linearAddr = (uintptr_t)pNewPath; + + data.oldPath.type = VMMDevHGCMParmType_LinAddr_In; + data.oldPath.u.Pointer.size = ShflStringSizeOfBuffer (pOldPath); + data.oldPath.u.Pointer.u.linearAddr = (uintptr_t)pOldPath; + + data.info.type = VMMDevHGCMParmType_LinAddr_Out; + data.info.u.Pointer.size = sizeof(SHFLFSOBJINFO); + data.info.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall(pClient->handle, &data.callInfo, sizeof(data)); +/* Log(("VBOXSF: VbglR0SfSymlink: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS (rc)) + rc = data.callInfo.result; + return rc; +} + +DECLVBGL(int) VbglR0SfSetSymlinks(PVBGLSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMCallInfo callInfo; + + VBOX_INIT_CALL(&callInfo, SET_SYMLINKS, pClient); + rc = VbglHGCMCall(pClient->handle, &callInfo, sizeof(callInfo)); +/* Log(("VBOXSF: VbglR0SfSetSymlinks: VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); */ + if (RT_SUCCESS(rc)) + rc = callInfo.result; + return rc; +} + + +#endif /* !VBGL_VBOXGUEST */ --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.h @@ -0,0 +1,200 @@ +/* $Id: VBoxGuestR0LibSharedFolders.h $ */ +/** @file + * VBoxGuestLib - Central calls header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h +#define ___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h + +#include +#ifndef _NTIFS_ +# ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKvsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKvsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKvsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKvsCompilerCrap +# pragma warning(disable : 4163) + RT_C_DECLS_BEGIN +# include + RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else + RT_C_DECLS_BEGIN +# include + RT_C_DECLS_END +# endif +# endif +#endif + +#if defined(RT_OS_WINDOWS) && 0 +/** @todo remove this legacy and use VBox/log.h and/or iprt/log.h. */ +/* => Done. The next person who needs logging in Windows guests will have the + * honour of making it work. */ +# ifdef DEBUG +# define LOG_ENABLED +# endif +# include "VBoxGuestLog.h" +#endif +#if defined(RT_OS_WINDOWS) +# include +#endif + +#include +#define ASSERTVBSF AssertRelease + +#include + +typedef struct _VBSFCLIENT +{ + uint32_t ulClientID; + VBGLHGCMHANDLE handle; +} VBSFCLIENT; +typedef VBSFCLIENT *PVBSFCLIENT; + +typedef struct _VBSFMAP +{ + SHFLROOT root; +} VBSFMAP, *PVBSFMAP; + + +#define VBSF_DRIVE_LETTER_FIRST L'A' +#define VBSF_DRIVE_LETTER_LAST L'Z' + +#define VBSF_MAX_DRIVES (VBSF_DRIVE_LETTER_LAST - VBSF_DRIVE_LETTER_FIRST) + +/* Poller thread flags. */ +#define VBSF_TF_NONE (0x0000) +#define VBSF_TF_STARTED (0x0001) +#define VBSF_TF_TERMINATE (0x0002) +#define VBSF_TF_START_PROCESSING (0x0004) + +#define DRIVE_FLAG_WORKING (0x1) +#define DRIVE_FLAG_LOCKED (0x2) +#define DRIVE_FLAG_WRITE_PROTECTED (0x4) + +#ifdef RT_OS_WINDOWS +/** Device extension structure for each drive letter we created. */ +typedef struct _VBSFDRIVE +{ + /* A pointer to the Driver object we created for the drive. */ + PDEVICE_OBJECT pDeviceObject; + + /** Root handle to access the drive. */ + SHFLROOT root; + + /** Informational string - the resource name on host. */ + WCHAR awcNameHost[256]; + + /** Guest drive letter. */ + WCHAR wcDriveLetter; + + /** DRIVE_FLAG_* */ + uint32_t u32DriveFlags; + + /** Head of FCB list. */ + LIST_ENTRY FCBHead; + + /* Synchronise requests directed to the drive. */ + ERESOURCE DriveResource; +} VBSFDRIVE; +typedef VBSFDRIVE *PVBSFDRIVE; +#endif /* RT_OS_WINDOWS */ + +/* forward decl */ +struct _MRX_VBOX_DEVICE_EXTENSION; +typedef struct _MRX_VBOX_DEVICE_EXTENSION *PMRX_VBOX_DEVICE_EXTENSION; + +DECLVBGL(int) vboxInit (void); +DECLVBGL(void) vboxUninit (void); +DECLVBGL(int) vboxConnect (PVBSFCLIENT pClient); +DECLVBGL(void) vboxDisconnect (PVBSFCLIENT pClient); + +DECLVBGL(int) vboxCallQueryMappings (PVBSFCLIENT pClient, SHFLMAPPING paMappings[], uint32_t *pcMappings); + +DECLVBGL(int) vboxCallQueryMapName (PVBSFCLIENT pClient, SHFLROOT root, SHFLSTRING *pString, uint32_t size); + +/** + * Create a new file or folder or open an existing one in a shared folder. Proxies + * to vbsfCreate in the host shared folder service. + * + * @returns IPRT status code, but see note below + * @param pClient Host-guest communication connection + * @param pMap The mapping for the shared folder in which the file + * or folder is to be created + * @param pParsedPath The path of the file or folder relative to the shared + * folder + * @param pCreateParms Parameters for file/folder creation. See the + * structure description in shflsvc.h + * @retval pCreateParms See the structure description in shflsvc.h + * + * @note This function reports errors as follows. The return value is always + * VINF_SUCCESS unless an exceptional condition occurs - out of + * memory, invalid arguments, etc. If the file or folder could not be + * opened or created, pCreateParms->Handle will be set to + * SHFL_HANDLE_NIL on return. In this case the value in + * pCreateParms->Result provides information as to why (e.g. + * SHFL_FILE_EXISTS). pCreateParms->Result is also set on success + * as additional information. + */ +DECLVBGL(int) vboxCallCreate (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pParsedPath, PSHFLCREATEPARMS pCreateParms); + +DECLVBGL(int) vboxCallClose (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE Handle); +DECLVBGL(int) vboxCallRemove (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pParsedPath, uint32_t flags); +DECLVBGL(int) vboxCallRename (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pSrcPath, PSHFLSTRING pDestPath, uint32_t flags); +DECLVBGL(int) vboxCallFlush (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile); + +DECLVBGL(int) vboxCallRead (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SharedFolderReadPageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); +DECLVBGL(int) vboxCallWrite (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SfWritePhysCont(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, RTCCPHYS PhysBuffer); +DECLVBGL(int) VbglR0SharedFolderWritePageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); + +DECLVBGL(int) vboxCallLock (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint64_t cbSize, uint32_t fLock); + +DECLVBGL(int) vboxCallDirInfo (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile,PSHFLSTRING ParsedPath, uint32_t flags, + uint32_t index, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer, uint32_t *pcFiles); +DECLVBGL(int) vboxCallFSInfo (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint32_t flags, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer); + +DECLVBGL(int) vboxCallMapFolder (PVBSFCLIENT pClient, PSHFLSTRING szFolderName, PVBSFMAP pMap); +DECLVBGL(int) vboxCallUnmapFolder (PVBSFCLIENT pClient, PVBSFMAP pMap); +DECLVBGL(int) vboxCallSetUtf8 (PVBSFCLIENT pClient); + +DECLVBGL(int) vboxReadLink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING ParsedPath, uint32_t pcbBuffer, uint8_t *pBuffer); +DECLVBGL(int) vboxCallSymlink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pNewPath, PSHFLSTRING pOldPath, PSHFLFSOBJINFO pBuffer); +DECLVBGL(int) vboxCallSetSymlinks (PVBSFCLIENT pClient); + +#endif /* !___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h */ + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VMMDev.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/VMMDev.c @@ -0,0 +1,43 @@ +/* $Id: VMMDev.cpp $ */ +/** @file + * VBoxGuestLibR0 - VMMDev device related functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +DECLVBGL(int) VbglQueryVMMDevMemory(VMMDevMemory **ppVMMDevMemory) +{ + int rc = vbglR0Enter(); + if (RT_FAILURE(rc)) + return rc; + + /* If the memory was not found, return an error. */ + if (!g_vbgldata.pVMMDevMemory) + return VERR_NOT_SUPPORTED; + + *ppVMMDevMemory = g_vbgldata.pVMMDevMemory; + return rc; +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/VbglR0CanUsePhysPageList.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/VbglR0CanUsePhysPageList.c @@ -0,0 +1,44 @@ +/* $Id: VbglR0CanUsePhysPageList.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +/** + * Checks whether the host supports physical page lists or not. + * + * @returns true if it does, false if it doesn't. + */ +DECLR0VBGL(bool) VbglR0CanUsePhysPageList(void) +{ + /* a_fLocked is false, because the actual capability of the host is requested. + * See VBGLR0_CAN_USE_PHYS_PAGE_LIST definition. + */ + int rc = vbglR0Enter(); + return RT_SUCCESS(rc) + && VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false); +} + --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/dirops.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/dirops.c @@ -0,0 +1,890 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Directory inode and file operations + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" + +/** + * Open a directory. Read the complete content into a buffer. + * + * @param inode inode + * @param file file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_dir_open(struct inode *inode, struct file *file) +{ + int rc; + int err; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_dir_info *sf_d; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + SHFLCREATEPARMS params; + + TRACE(); + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + if (file->private_data) + { + LogFunc(("sf_dir_open() called on already opened directory '%s'\n", + sf_i->path->String.utf8)); + return 0; + } + + sf_d = sf_dir_info_alloc(); + if (!sf_d) + { + LogRelFunc(("could not allocate directory info for '%s'\n", + sf_i->path->String.utf8)); + return -ENOMEM; + } + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_DIRECTORY + | SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_READ + ; + + LogFunc(("sf_dir_open(): calling VbglR0SfCreate, folder %s, flags %#x\n", + sf_i->path->String.utf8, params.CreateFlags)); + rc = VbglR0SfCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_SUCCESS(rc)) + { + if (params.Result == SHFL_FILE_EXISTS) + { + err = sf_dir_read_all(sf_g, sf_i, sf_d, params.Handle); + if (!err) + file->private_data = sf_d; + } + else + err = -ENOENT; + + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("sf_dir_open(): VbglR0SfClose(%s) after err=%d failed rc=%Rrc\n", + sf_i->path->String.utf8, err, rc)); + } + else + err = -EPERM; + + if (err) + sf_dir_info_free(sf_d); + + return err; +} + + +/** + * This is called when reference count of [file] goes to zero. Notify + * the host that it can free whatever is associated with this directory + * and deallocate our own internal buffers + * + * @param inode inode + * @param file file + * returns 0 on success, Linux error code otherwise + */ +static int sf_dir_release(struct inode *inode, struct file *file) +{ + TRACE(); + + if (file->private_data) + sf_dir_info_free(file->private_data); + + return 0; +} + +/** + * Translate RTFMODE into DT_xxx (in conjunction to rtDirType()) + * @param fMode file mode + * returns d_type + */ +static int sf_get_d_type(RTFMODE fMode) +{ + int d_type; + switch (fMode & RTFS_TYPE_MASK) + { + case RTFS_TYPE_FIFO: d_type = DT_FIFO; break; + case RTFS_TYPE_DEV_CHAR: d_type = DT_CHR; break; + case RTFS_TYPE_DIRECTORY: d_type = DT_DIR; break; + case RTFS_TYPE_DEV_BLOCK: d_type = DT_BLK; break; + case RTFS_TYPE_FILE: d_type = DT_REG; break; + case RTFS_TYPE_SYMLINK: d_type = DT_LNK; break; + case RTFS_TYPE_SOCKET: d_type = DT_SOCK; break; + case RTFS_TYPE_WHITEOUT: d_type = DT_WHT; break; + default: d_type = DT_UNKNOWN; break; + } + return d_type; +} + +/** + * Extract element ([dir]->f_pos) from the directory [dir] into [d_name]. + * + * @returns 0 for success, 1 for end reached, Linux error code otherwise. + */ +static int sf_getdent(struct file *dir, char d_name[NAME_MAX], int *d_type) +{ + loff_t cur; + struct sf_glob_info *sf_g; + struct sf_dir_info *sf_d; + struct sf_inode_info *sf_i; + struct inode *inode; + struct list_head *pos, *list; + + TRACE(); + + inode = GET_F_DENTRY(dir)->d_inode; + sf_i = GET_INODE_INFO(inode); + sf_g = GET_GLOB_INFO(inode->i_sb); + sf_d = dir->private_data; + + BUG_ON(!sf_g); + BUG_ON(!sf_d); + BUG_ON(!sf_i); + + if (sf_i->force_reread) + { + int rc; + int err; + SHFLCREATEPARMS params; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_DIRECTORY + | SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_READ + ; + + LogFunc(("sf_getdent: calling VbglR0SfCreate, folder %s, flags %#x\n", + sf_i->path->String.utf8, params.CreateFlags)); + rc = VbglR0SfCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfCreate(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + return -EPERM; + } + + if (params.Result != SHFL_FILE_EXISTS) + { + LogFunc(("directory %s does not exist\n", sf_i->path->String.utf8)); + sf_dir_info_free(sf_d); + return -ENOENT; + } + + sf_dir_info_empty(sf_d); + err = sf_dir_read_all(sf_g, sf_i, sf_d, params.Handle); + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("VbglR0SfClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + if (err) + return err; + + sf_i->force_reread = 0; + } + + cur = 0; + list = &sf_d->info_list; + list_for_each(pos, list) + { + struct sf_dir_buf *b; + SHFLDIRINFO *info; + loff_t i; + + b = list_entry(pos, struct sf_dir_buf, head); + if (dir->f_pos >= cur + b->cEntries) + { + cur += b->cEntries; + continue; + } + + for (i = 0, info = b->buf; i < dir->f_pos - cur; ++i) + { + size_t size; + + size = offsetof(SHFLDIRINFO, name.String) + info->name.u16Size; + info = (SHFLDIRINFO *) ((uintptr_t) info + size); + } + + *d_type = sf_get_d_type(info->Info.Attr.fMode); + + return sf_nlscpy(sf_g, d_name, NAME_MAX, + info->name.String.utf8, info->name.u16Length); + } + + return 1; +} + +/** + * This is called when vfs wants to populate internal buffers with + * directory [dir]s contents. [opaque] is an argument to the + * [filldir]. [filldir] magically modifies it's argument - [opaque] + * and takes following additional arguments (which i in turn get from + * the host via sf_getdent): + * + * name : name of the entry (i must also supply it's length huh?) + * type : type of the entry (FILE | DIR | etc) (i ellect to use DT_UNKNOWN) + * pos : position/index of the entry + * ino : inode number of the entry (i fake those) + * + * [dir] contains: + * f_pos : cursor into the directory listing + * private_data : mean of communication with the host side + * + * Extract elements from the directory listing (incrementing f_pos + * along the way) and feed them to [filldir] until: + * + * a. there are no more entries (i.e. sf_getdent set done to 1) + * b. failure to compute fake inode number + * c. filldir returns an error (see comment on that) + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) +static int sf_dir_iterate(struct file *dir, struct dir_context *ctx) +#else +static int sf_dir_read(struct file *dir, void *opaque, filldir_t filldir) +#endif +{ + TRACE(); + for (;;) + { + int err; + ino_t fake_ino; + loff_t sanity; + char d_name[NAME_MAX]; + int d_type = DT_UNKNOWN; + + err = sf_getdent(dir, d_name, &d_type); + switch (err) + { + case 1: + return 0; + + case 0: + break; + + case -1: + default: + /* skip erroneous entry and proceed */ + LogFunc(("sf_getdent error %d\n", err)); + dir->f_pos += 1; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + ctx->pos += 1; +#endif + continue; + } + + /* d_name now contains a valid entry name */ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + sanity = ctx->pos + 0xbeef; +#else + sanity = dir->f_pos + 0xbeef; +#endif + fake_ino = sanity; + if (sanity - fake_ino) + { + LogRelFunc(("can not compute ino\n")); + return -EINVAL; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + if (!dir_emit(ctx, d_name, strlen(d_name), fake_ino, d_type)) + { + LogFunc(("dir_emit failed\n")); + return 0; + } +#else + err = filldir(opaque, d_name, strlen(d_name), dir->f_pos, fake_ino, d_type); + if (err) + { + LogFunc(("filldir returned error %d\n", err)); + /* Rely on the fact that filldir returns error + only when it runs out of space in opaque */ + return 0; + } +#endif + + dir->f_pos += 1; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + ctx->pos += 1; +#endif + } + + BUG(); +} + +struct file_operations sf_dir_fops = +{ + .open = sf_dir_open, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + .iterate = sf_dir_iterate, +#else + .readdir = sf_dir_read, +#endif + .release = sf_dir_release, + .read = generic_read_dir +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37) + , .llseek = generic_file_llseek +#endif +}; + + +/* iops */ + +/** + * This is called when vfs failed to locate dentry in the cache. The + * job of this function is to allocate inode and link it to dentry. + * [dentry] contains the name to be looked in the [parent] directory. + * Failure to locate the name is not a "hard" error, in this case NULL + * inode is added to [dentry] and vfs should proceed trying to create + * the entry via other means. NULL(or "positive" pointer) ought to be + * returned in case of success and "negative" pointer on error + */ +static struct dentry *sf_lookup(struct inode *parent, struct dentry *dentry +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) + , unsigned int flags +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + , struct nameidata *nd +#endif + ) +{ + int err; + struct sf_inode_info *sf_i, *sf_new_i; + struct sf_glob_info *sf_g; + SHFLSTRING *path; + struct inode *inode; + ino_t ino; + SHFLFSOBJINFO fsinfo; + + TRACE(); + sf_g = GET_GLOB_INFO(parent->i_sb); + sf_i = GET_INODE_INFO(parent); + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + err = sf_stat(__func__, sf_g, path, &fsinfo, 1); + if (err) + { + if (err == -ENOENT) + { + /* -ENOENT: add NULL inode to dentry so it later can be + created via call to create/mkdir/open */ + kfree(path); + inode = NULL; + } + else + goto fail1; + } + else + { + sf_new_i = kmalloc(sizeof(*sf_new_i), GFP_KERNEL); + if (!sf_new_i) + { + LogRelFunc(("could not allocate memory for new inode info\n")); + err = -ENOMEM; + goto fail1; + } + sf_new_i->handle = SHFL_HANDLE_NIL; + sf_new_i->force_reread = 0; + + ino = iunique(parent->i_sb, 1); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + inode = iget_locked(parent->i_sb, ino); +#else + inode = iget(parent->i_sb, ino); +#endif + if (!inode) + { + LogFunc(("iget failed\n")); + err = -ENOMEM; /* XXX: ??? */ + goto fail2; + } + + SET_INODE_INFO(inode, sf_new_i); + sf_init_inode(sf_g, inode, &fsinfo); + sf_new_i->path = path; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(inode); +#endif + } + + sf_i->force_restat = 0; + dentry->d_time = jiffies; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) + d_set_d_op(dentry, &sf_dentry_ops); +#else + dentry->d_op = &sf_dentry_ops; +#endif + d_add(dentry, inode); + return NULL; + +fail2: + kfree(sf_new_i); + +fail1: + kfree(path); + +fail0: + return ERR_PTR(err); +} + +/** + * This should allocate memory for sf_inode_info, compute a unique inode + * number, get an inode from vfs, initialize inode info, instantiate + * dentry. + * + * @param parent inode entry of the directory + * @param dentry directory cache entry + * @param path path name + * @param info file information + * @param handle handle + * @returns 0 on success, Linux error code otherwise + */ +static int sf_instantiate(struct inode *parent, struct dentry *dentry, + SHFLSTRING *path, PSHFLFSOBJINFO info, SHFLHANDLE handle) +{ + int err; + ino_t ino; + struct inode *inode; + struct sf_inode_info *sf_new_i; + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + + TRACE(); + BUG_ON(!sf_g); + + sf_new_i = kmalloc(sizeof(*sf_new_i), GFP_KERNEL); + if (!sf_new_i) + { + LogRelFunc(("could not allocate inode info.\n")); + err = -ENOMEM; + goto fail0; + } + + ino = iunique(parent->i_sb, 1); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + inode = iget_locked(parent->i_sb, ino); +#else + inode = iget(parent->i_sb, ino); +#endif + if (!inode) + { + LogFunc(("iget failed\n")); + err = -ENOMEM; + goto fail1; + } + + sf_init_inode(sf_g, inode, info); + sf_new_i->path = path; + SET_INODE_INFO(inode, sf_new_i); + sf_new_i->force_restat = 1; + sf_new_i->force_reread = 0; + + d_instantiate(dentry, inode); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(inode); +#endif + + /* Store this handle if we leave the handle open. */ + sf_new_i->handle = handle; + return 0; + +fail1: + kfree(sf_new_i); + +fail0: + return err; + +} + +/** + * Create a new regular file / directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @param fDirectory true if directory, false otherwise + * @returns 0 on success, Linux error code otherwise + */ +static int sf_create_aux(struct inode *parent, struct dentry *dentry, + umode_t mode, int fDirectory) +{ + int rc, err; + SHFLCREATEPARMS params; + SHFLSTRING *path; + struct sf_inode_info *sf_i = GET_INODE_INFO(parent); + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + + TRACE(); + BUG_ON(!sf_i); + BUG_ON(!sf_g); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_ACT_CREATE_IF_NEW + | SHFL_CF_ACT_FAIL_IF_EXISTS + | SHFL_CF_ACCESS_READWRITE + | (fDirectory ? SHFL_CF_DIRECTORY : 0) + ; + params.Info.Attr.fMode = 0 + | (fDirectory ? RTFS_TYPE_DIRECTORY : RTFS_TYPE_FILE) + | (mode & S_IRWXUGO) + ; + params.Info.Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; + + LogFunc(("sf_create_aux: calling VbglR0SfCreate, folder %s, flags %#x\n", + path->String.utf8, params.CreateFlags)); + rc = VbglR0SfCreate(&client_handle, &sf_g->map, path, ¶ms); + if (RT_FAILURE(rc)) + { + if (rc == VERR_WRITE_PROTECT) + { + err = -EROFS; + goto fail1; + } + err = -EPROTO; + LogFunc(("(%d): VbglR0SfCreate(%s) failed rc=%Rrc\n", + fDirectory, sf_i->path->String.utf8, rc)); + goto fail1; + } + + if (params.Result != SHFL_FILE_CREATED) + { + err = -EPERM; + LogFunc(("(%d): could not create file %s result=%d\n", + fDirectory, sf_i->path->String.utf8, params.Result)); + goto fail1; + } + + err = sf_instantiate(parent, dentry, path, ¶ms.Info, + fDirectory ? SHFL_HANDLE_NIL : params.Handle); + if (err) + { + LogFunc(("(%d): could not instantiate dentry for %s err=%d\n", + fDirectory, sf_i->path->String.utf8, err)); + goto fail2; + } + + /* + * Don't close this handle right now. We assume that the same file is + * opened with sf_reg_open() and later closed with sf_reg_close(). Save + * the handle in between. Does not apply to directories. True? + */ + if (fDirectory) + { + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("(%d): VbglR0SfClose failed rc=%Rrc\n", fDirectory, rc)); + } + + sf_i->force_restat = 1; + return 0; + +fail2: + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("(%d): VbglR0SfClose failed rc=%Rrc\n", fDirectory, rc)); + +fail1: + kfree(path); + +fail0: + return err; +} + +/** + * Create a new regular file. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @param excl Possible O_EXCL... + * @returns 0 on success, Linux error code otherwise + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(DOXYGEN_RUNNING) +static int sf_create(struct inode *parent, struct dentry *dentry, umode_t mode, bool excl) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +static int sf_create(struct inode *parent, struct dentry *dentry, umode_t mode, struct nameidata *nd) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_create(struct inode *parent, struct dentry *dentry, int mode, struct nameidata *nd) +#else +static int sf_create(struct inode *parent, struct dentry *dentry, int mode) +#endif +{ + TRACE(); + return sf_create_aux(parent, dentry, mode, 0); +} + +/** + * Create a new directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @returns 0 on success, Linux error code otherwise + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +static int sf_mkdir(struct inode *parent, struct dentry *dentry, umode_t mode) +#else +static int sf_mkdir(struct inode *parent, struct dentry *dentry, int mode) +#endif +{ + TRACE(); + return sf_create_aux(parent, dentry, mode, 1); +} + +/** + * Remove a regular file / directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param fDirectory true if directory, false otherwise + * @returns 0 on success, Linux error code otherwise + */ +static int sf_unlink_aux(struct inode *parent, struct dentry *dentry, int fDirectory) +{ + int rc, err; + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(parent); + SHFLSTRING *path; + uint32_t fFlags; + + TRACE(); + BUG_ON(!sf_g); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + fFlags = fDirectory ? SHFL_REMOVE_DIR : SHFL_REMOVE_FILE; + if ( dentry + && dentry->d_inode + && ((dentry->d_inode->i_mode & S_IFLNK) == S_IFLNK)) + fFlags |= SHFL_REMOVE_SYMLINK; + rc = VbglR0SfRemove(&client_handle, &sf_g->map, path, fFlags); + if (RT_FAILURE(rc)) + { + LogFunc(("(%d): VbglR0SfRemove(%s) failed rc=%Rrc\n", fDirectory, path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + + /* directory access/change time changed */ + sf_i->force_restat = 1; + /* directory content changed */ + sf_i->force_reread = 1; + + err = 0; + +fail1: + kfree(path); + +fail0: + return err; +} + +/** + * Remove a regular file. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_unlink(struct inode *parent, struct dentry *dentry) +{ + TRACE(); + return sf_unlink_aux(parent, dentry, 0); +} + +/** + * Remove a directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_rmdir(struct inode *parent, struct dentry *dentry) +{ + TRACE(); + return sf_unlink_aux(parent, dentry, 1); +} + +/** + * Rename a regular file / directory. + * + * @param old_parent inode of the old parent directory + * @param old_dentry old directory cache entry + * @param new_parent inode of the new parent directory + * @param new_dentry new directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_rename(struct inode *old_parent, struct dentry *old_dentry, + struct inode *new_parent, struct dentry *new_dentry) +{ + int err = 0, rc = VINF_SUCCESS; + struct sf_glob_info *sf_g = GET_GLOB_INFO(old_parent->i_sb); + + TRACE(); + + if (sf_g != GET_GLOB_INFO(new_parent->i_sb)) + { + LogFunc(("rename with different roots\n")); + err = -EINVAL; + } + else + { + struct sf_inode_info *sf_old_i = GET_INODE_INFO(old_parent); + struct sf_inode_info *sf_new_i = GET_INODE_INFO(new_parent); + /* As we save the relative path inside the inode structure, we need to change + this if the rename is successful. */ + struct sf_inode_info *sf_file_i = GET_INODE_INFO(old_dentry->d_inode); + SHFLSTRING *old_path; + SHFLSTRING *new_path; + + BUG_ON(!sf_old_i); + BUG_ON(!sf_new_i); + BUG_ON(!sf_file_i); + + old_path = sf_file_i->path; + err = sf_path_from_dentry(__func__, sf_g, sf_new_i, + new_dentry, &new_path); + if (err) + LogFunc(("failed to create new path\n")); + else + { + int fDir = ((old_dentry->d_inode->i_mode & S_IFDIR) != 0); + + rc = VbglR0SfRename(&client_handle, &sf_g->map, old_path, + new_path, fDir ? 0 : SHFL_RENAME_FILE | SHFL_RENAME_REPLACE_IF_EXISTS); + if (RT_SUCCESS(rc)) + { + kfree(old_path); + sf_new_i->force_restat = 1; + sf_old_i->force_restat = 1; /* XXX: needed? */ + /* Set the new relative path in the inode. */ + sf_file_i->path = new_path; + } + else + { + LogFunc(("VbglR0SfRename failed rc=%Rrc\n", rc)); + err = -RTErrConvertToErrno(rc); + kfree(new_path); + } + } + } + return err; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_symlink(struct inode *parent, struct dentry *dentry, const char *symname) +{ + int err; + int rc; + struct sf_inode_info *sf_i; + struct sf_glob_info *sf_g; + SHFLSTRING *path, *ssymname; + SHFLFSOBJINFO info; + int symname_len = strlen(symname) + 1; + + TRACE(); + sf_g = GET_GLOB_INFO(parent->i_sb); + sf_i = GET_INODE_INFO(parent); + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + ssymname = kmalloc(offsetof(SHFLSTRING, String.utf8) + symname_len, GFP_KERNEL); + if (!ssymname) + { + LogRelFunc(("kmalloc failed, caller=sf_symlink\n")); + err = -ENOMEM; + goto fail1; + } + + ssymname->u16Length = symname_len - 1; + ssymname->u16Size = symname_len; + memcpy(ssymname->String.utf8, symname, symname_len); + + rc = VbglR0SfSymlink(&client_handle, &sf_g->map, path, ssymname, &info); + kfree(ssymname); + + if (RT_FAILURE(rc)) + { + if (rc == VERR_WRITE_PROTECT) + { + err = -EROFS; + goto fail1; + } + LogFunc(("VbglR0SfSymlink(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -EPROTO; + goto fail1; + } + + err = sf_instantiate(parent, dentry, path, &info, SHFL_HANDLE_NIL); + if (err) + { + LogFunc(("could not instantiate dentry for %s err=%d\n", + sf_i->path->String.utf8, err)); + goto fail1; + } + + sf_i->force_restat = 1; + return 0; + +fail1: + kfree(path); +fail0: + return err; +} +#endif + +struct inode_operations sf_dir_iops = +{ + .lookup = sf_lookup, + .create = sf_create, + .mkdir = sf_mkdir, + .rmdir = sf_rmdir, + .unlink = sf_unlink, + .rename = sf_rename, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + .revalidate = sf_inode_revalidate +#else + .getattr = sf_getattr, + .setattr = sf_setattr, + .symlink = sf_symlink +#endif +}; --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/divdi3.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/divdi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)divdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two signed quads. + * ??? if -1/2 should produce -1 on this machine, this code is wrong + */ +quad_t +__divdi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, uq; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub, neg ^= 1; + + uq = __qdivrem(ua, ub, (u_quad_t *)0); + if (neg) + uq = - uq; + return uq; +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/do_Module.symvers +++ linux-4.4.0/ubuntu/vbox/vboxsf/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/lnkops.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/lnkops.c @@ -0,0 +1,105 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Operations for symbolic links. + */ + +/* + * Copyright (C) 2010-2011 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +# if LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) +static const char *sf_follow_link(struct dentry *dentry, void **cookie) +# else +static void *sf_follow_link(struct dentry *dentry, struct nameidata *nd) +# endif +{ + struct inode *inode = dentry->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + int error = -ENOMEM; + char *path = (char*)get_zeroed_page(GFP_KERNEL); + int rc; + + if (path) + { + error = 0; + rc = VbglR0SfReadLink(&client_handle, &sf_g->map, sf_i->path, PATH_MAX, path); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfReadLink failed, caller=%s, rc=%Rrc\n", __func__, rc)); + free_page((unsigned long)path); + error = -EPROTO; + } + } +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + return error ? ERR_PTR(error) : (*cookie = path); +# else + nd_set_link(nd, error ? ERR_PTR(error) : path); + return NULL; +# endif +} + +# if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +static void sf_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) +{ + char *page = nd_get_link(nd); + if (!IS_ERR(page)) + free_page((unsigned long)page); +} +# endif + +# else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) */ +static const char *sf_get_link(struct dentry *dentry, struct inode *inode, + struct delayed_call *done) +{ + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + char *path; + int rc; + + if (!dentry) + return ERR_PTR(-ECHILD); + path = kzalloc(PAGE_SIZE, GFP_KERNEL); + if (!path) + return ERR_PTR(-ENOMEM); + rc = VbglR0SfReadLink(&client_handle, &sf_g->map, sf_i->path, PATH_MAX, path); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfReadLink failed, caller=%s, rc=%Rrc\n", __func__, rc)); + kfree(path); + return ERR_PTR(-EPROTO); + } + set_delayed_call(done, kfree_link, path); + return path; +} +# endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) */ + +struct inode_operations sf_lnk_iops = +{ + .readlink = generic_readlink, +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) + .get_link = sf_get_link +# elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + .follow_link = sf_follow_link, + .put_link = free_page_put_link, +# else + .follow_link = sf_follow_link, + .put_link = sf_put_link +# endif +}; + +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) */ --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/moddi3.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/moddi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)moddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two signed quads. + * + * XXX we assume a % b < 0 iff a < 0, but this is actually machine-dependent. + */ +quad_t +__moddi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, ur; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub; + (void)__qdivrem(ua, ub, &ur); + if (neg) + ur = -ur; + return (ur); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/product-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2016" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/qdivrem.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/qdivrem.c @@ -0,0 +1,285 @@ +/* $NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)qdivrem.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +/* + * Multiprecision divide. This algorithm is from Knuth vol. 2 (2nd ed), + * section 4.3.1, pp. 257--259. + */ + +#include "quad.h" + +#define B ((int)1 << HALF_BITS) /* digit base */ + +/* Combine two `digits' to make a single two-digit number. */ +#define COMBINE(a, b) (((u_int)(a) << HALF_BITS) | (b)) + +/* select a type for digits in base B: use unsigned short if they fit */ +#if UINT_MAX == 0xffffffffU && USHRT_MAX >= 0xffff +typedef unsigned short digit; +#else +typedef u_int digit; +#endif + +static void shl __P((digit *p, int len, int sh)); + +/* + * __qdivrem(u, v, rem) returns u/v and, optionally, sets *rem to u%v. + * + * We do this in base 2-sup-HALF_BITS, so that all intermediate products + * fit within u_int. As a consequence, the maximum length dividend and + * divisor are 4 `digits' in this base (they are shorter if they have + * leading zeros). + */ +u_quad_t +__qdivrem(uq, vq, arq) + u_quad_t uq, vq, *arq; +{ + union uu tmp; + digit *u, *v, *q; + digit v1, v2; + u_int qhat, rhat, t; + int m, n, d, j, i; + digit uspace[5], vspace[5], qspace[5]; + + /* + * Take care of special cases: divide by zero, and u < v. + */ + if (vq == 0) { + /* divide by zero. */ + static volatile const unsigned int zero = 0; + + tmp.ul[H] = tmp.ul[L] = 1 / zero; + if (arq) + *arq = uq; + return (tmp.q); + } + if (uq < vq) { + if (arq) + *arq = uq; + return (0); + } + u = &uspace[0]; + v = &vspace[0]; + q = &qspace[0]; + + /* + * Break dividend and divisor into digits in base B, then + * count leading zeros to determine m and n. When done, we + * will have: + * u = (u[1]u[2]...u[m+n]) sub B + * v = (v[1]v[2]...v[n]) sub B + * v[1] != 0 + * 1 < n <= 4 (if n = 1, we use a different division algorithm) + * m >= 0 (otherwise u < v, which we already checked) + * m + n = 4 + * and thus + * m = 4 - n <= 2 + */ + tmp.uq = uq; + u[0] = 0; + u[1] = (digit)HHALF(tmp.ul[H]); + u[2] = (digit)LHALF(tmp.ul[H]); + u[3] = (digit)HHALF(tmp.ul[L]); + u[4] = (digit)LHALF(tmp.ul[L]); + tmp.uq = vq; + v[1] = (digit)HHALF(tmp.ul[H]); + v[2] = (digit)LHALF(tmp.ul[H]); + v[3] = (digit)HHALF(tmp.ul[L]); + v[4] = (digit)LHALF(tmp.ul[L]); + for (n = 4; v[1] == 0; v++) { + if (--n == 1) { + u_int rbj; /* r*B+u[j] (not root boy jim) */ + digit q1, q2, q3, q4; + + /* + * Change of plan, per exercise 16. + * r = 0; + * for j = 1..4: + * q[j] = floor((r*B + u[j]) / v), + * r = (r*B + u[j]) % v; + * We unroll this completely here. + */ + t = v[2]; /* nonzero, by definition */ + q1 = (digit)(u[1] / t); + rbj = COMBINE(u[1] % t, u[2]); + q2 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[3]); + q3 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[4]); + q4 = (digit)(rbj / t); + if (arq) + *arq = rbj % t; + tmp.ul[H] = COMBINE(q1, q2); + tmp.ul[L] = COMBINE(q3, q4); + return (tmp.q); + } + } + + /* + * By adjusting q once we determine m, we can guarantee that + * there is a complete four-digit quotient at &qspace[1] when + * we finally stop. + */ + for (m = 4 - n; u[1] == 0; u++) + m--; + for (i = 4 - m; --i >= 0;) + q[i] = 0; + q += 4 - m; + + /* + * Here we run Program D, translated from MIX to C and acquiring + * a few minor changes. + * + * D1: choose multiplier 1 << d to ensure v[1] >= B/2. + */ + d = 0; + for (t = v[1]; t < B / 2; t <<= 1) + d++; + if (d > 0) { + shl(&u[0], m + n, d); /* u <<= d */ + shl(&v[1], n - 1, d); /* v <<= d */ + } + /* + * D2: j = 0. + */ + j = 0; + v1 = v[1]; /* for D3 -- note that v[1..n] are constant */ + v2 = v[2]; /* for D3 */ + do { + digit uj0, uj1, uj2; + + /* + * D3: Calculate qhat (\^q, in TeX notation). + * Let qhat = min((u[j]*B + u[j+1])/v[1], B-1), and + * let rhat = (u[j]*B + u[j+1]) mod v[1]. + * While rhat < B and v[2]*qhat > rhat*B+u[j+2], + * decrement qhat and increase rhat correspondingly. + * Note that if rhat >= B, v[2]*qhat < rhat*B. + */ + uj0 = u[j + 0]; /* for D3 only -- note that u[j+...] change */ + uj1 = u[j + 1]; /* for D3 only */ + uj2 = u[j + 2]; /* for D3 only */ + if (uj0 == v1) { + qhat = B; + rhat = uj1; + goto qhat_too_big; + } else { + u_int nn = COMBINE(uj0, uj1); + qhat = nn / v1; + rhat = nn % v1; + } + while (v2 * qhat > COMBINE(rhat, uj2)) { + qhat_too_big: + qhat--; + if ((rhat += v1) >= B) + break; + } + /* + * D4: Multiply and subtract. + * The variable `t' holds any borrows across the loop. + * We split this up so that we do not require v[0] = 0, + * and to eliminate a final special case. + */ + for (t = 0, i = n; i > 0; i--) { + t = u[i + j] - v[i] * qhat - t; + u[i + j] = (digit)LHALF(t); + t = (B - HHALF(t)) & (B - 1); + } + t = u[j] - t; + u[j] = (digit)LHALF(t); + /* + * D5: test remainder. + * There is a borrow if and only if HHALF(t) is nonzero; + * in that (rare) case, qhat was too large (by exactly 1). + * Fix it by adding v[1..n] to u[j..j+n]. + */ + if (HHALF(t)) { + qhat--; + for (t = 0, i = n; i > 0; i--) { /* D6: add back. */ + t += u[i + j] + v[i]; + u[i + j] = (digit)LHALF(t); + t = HHALF(t); + } + u[j] = (digit)LHALF(u[j] + t); + } + q[j] = (digit)qhat; + } while (++j <= m); /* D7: loop on j. */ + + /* + * If caller wants the remainder, we have to calculate it as + * u[m..m+n] >> d (this is at most n digits and thus fits in + * u[m+1..m+n], but we may need more source digits). + */ + if (arq) { + if (d) { + for (i = m + n; i > m; --i) + u[i] = (digit)(((u_int)u[i] >> d) | + LHALF((u_int)u[i - 1] << (HALF_BITS - d))); + u[i] = 0; + } + tmp.ul[H] = COMBINE(uspace[1], uspace[2]); + tmp.ul[L] = COMBINE(uspace[3], uspace[4]); + *arq = tmp.q; + } + + tmp.ul[H] = COMBINE(qspace[1], qspace[2]); + tmp.ul[L] = COMBINE(qspace[3], qspace[4]); + return (tmp.q); +} + +/* + * Shift p[0]..p[len] left `sh' bits, ignoring any bits that + * `fall out' the left (there never will be any such anyway). + * We may assume len >= 0. NOTE THAT THIS WRITES len+1 DIGITS. + */ +static void +shl(digit *p, int len, int sh) +{ + int i; + + for (i = 0; i < len; i++) + p[i] = (digit)(LHALF((u_int)p[i] << sh) | + ((u_int)p[i + 1] >> (HALF_BITS - sh))); + p[i] = (digit)(LHALF((u_int)p[i] << sh)); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/quad.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/quad.h @@ -0,0 +1,165 @@ +/* $NetBSD: quad.h,v 1.17 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + * @(#)quad.h 8.1 (Berkeley) 6/4/93 + */ + +/* + * Quad arithmetic. + * + * This library makes the following assumptions: + * + * - The type long long (aka quad_t) exists. + * + * - A quad variable is exactly twice as long as `int'. + * + * - The machine's arithmetic is two's complement. + * + * This library can provide 128-bit arithmetic on a machine with 128-bit + * quads and 64-bit ints, for instance, or 96-bit arithmetic on machines + * with 48-bit ints. + */ + +#if 0 /* iprt */ +#include +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include +#else +#include +#endif +#else /* iprt */ +# include +# include +# undef __P +# define __P(a) a +# undef __GNUC_PREREQ__ +# define __GNUC_PREREQ__(m1,m2) 1 +# if 1 /* ASSUMES: little endian */ +# define _QUAD_HIGHWORD 1 +# define _QUAD_LOWWORD 0 +# else +# define _QUAD_HIGHWORD 0 +# define _QUAD_LOWWORD 1 +# endif +# if !defined(RT_OS_LINUX) || !defined(__KERNEL__) /* (linux/types.h defines u_int) */ + typedef unsigned int u_int; +# endif +# if !defined(RT_OS_SOLARIS) + typedef int64_t quad_t; +# else +# define quad_t int64_t +# endif + typedef uint64_t u_quad_t; + typedef quad_t *qaddr_t; +#endif /* iprt */ + +/* + * Depending on the desired operation, we view a `long long' (aka quad_t) in + * one or more of the following formats. + */ +union uu { + quad_t q; /* as a (signed) quad */ + u_quad_t uq; /* as an unsigned quad */ + int sl[2]; /* as two signed ints */ + u_int ul[2]; /* as two unsigned ints */ +}; + +/* + * Define high and low parts of a quad_t. + */ +#define H _QUAD_HIGHWORD +#define L _QUAD_LOWWORD + +/* + * Total number of bits in a quad_t and in the pieces that make it up. + * These are used for shifting, and also below for halfword extraction + * and assembly. + */ +#define QUAD_BITS (sizeof(quad_t) * CHAR_BIT) +#define INT_BITS (sizeof(int) * CHAR_BIT) +#define HALF_BITS (sizeof(int) * CHAR_BIT / 2) + +/* + * Extract high and low shortwords from longword, and move low shortword of + * longword to upper half of long, i.e., produce the upper longword of + * ((quad_t)(x) << (number_of_bits_in_int/2)). (`x' must actually be u_int.) + * + * These are used in the multiply code, to split a longword into upper + * and lower halves, and to reassemble a product as a quad_t, shifted left + * (sizeof(int)*CHAR_BIT/2). + */ +#define HHALF(x) ((u_int)(x) >> HALF_BITS) +#define LHALF(x) ((u_int)(x) & (((int)1 << HALF_BITS) - 1)) +#define LHUP(x) ((u_int)(x) << HALF_BITS) + +/* + * XXX + * Compensate for gcc 1 vs gcc 2. Gcc 1 defines ?sh?di3's second argument + * as u_quad_t, while gcc 2 correctly uses int. Unfortunately, we still use + * both compilers. + */ +#if __GNUC_PREREQ__(2, 0) || defined(lint) +typedef unsigned int qshift_t; +#else +typedef u_quad_t qshift_t; +#endif + +RT_C_DECLS_BEGIN +quad_t __adddi3 __P((quad_t, quad_t)); +quad_t __anddi3 __P((quad_t, quad_t)); +quad_t __ashldi3 __P((quad_t, qshift_t)); +quad_t __ashrdi3 __P((quad_t, qshift_t)); +int __cmpdi2 __P((quad_t, quad_t )); +quad_t __divdi3 __P((quad_t, quad_t)); +quad_t __fixdfdi __P((double)); +quad_t __fixsfdi __P((float)); +u_quad_t __fixunsdfdi __P((double)); +u_quad_t __fixunssfdi __P((float)); +double __floatdidf __P((quad_t)); +float __floatdisf __P((quad_t)); +double __floatunsdidf __P((u_quad_t)); +quad_t __iordi3 __P((quad_t, quad_t)); +quad_t __lshldi3 __P((quad_t, qshift_t)); +quad_t __lshrdi3 __P((quad_t, qshift_t)); +quad_t __moddi3 __P((quad_t, quad_t)); +quad_t __muldi3 __P((quad_t, quad_t)); +quad_t __negdi2 __P((quad_t)); +quad_t __one_cmpldi2 __P((quad_t)); +u_quad_t __qdivrem __P((u_quad_t, u_quad_t, u_quad_t *)); +quad_t __subdi3 __P((quad_t, quad_t)); +int __ucmpdi2 __P((u_quad_t, u_quad_t)); +u_quad_t __udivdi3 __P((u_quad_t, u_quad_t )); +u_quad_t __umoddi3 __P((u_quad_t, u_quad_t )); +quad_t __xordi3 __P((quad_t, quad_t)); +RT_C_DECLS_END --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/regops.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/regops.c @@ -0,0 +1,734 @@ +/* $Id: regops.c $ */ +/** @file + * vboxsf - VBox Linux Shared Folders, Regular file inode and file operations. + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +/* + * Limitations: only COW memory mapping is supported + */ + +#include "vfsmod.h" + +static void *alloc_bounce_buffer(size_t *tmp_sizep, PRTCCPHYS physp, size_t + xfer_size, const char *caller) +{ + size_t tmp_size; + void *tmp; + + /* try for big first. */ + tmp_size = RT_ALIGN_Z(xfer_size, PAGE_SIZE); + if (tmp_size > 16U*_1K) + tmp_size = 16U*_1K; + tmp = kmalloc(tmp_size, GFP_KERNEL); + if (!tmp) + { + /* fall back on a page sized buffer. */ + tmp = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!tmp) + { + LogRel(("%s: could not allocate bounce buffer for xfer_size=%zu %s\n", caller, xfer_size)); + return NULL; + } + tmp_size = PAGE_SIZE; + } + + *tmp_sizep = tmp_size; + *physp = virt_to_phys(tmp); + return tmp; +} + +static void free_bounce_buffer(void *tmp) +{ + kfree (tmp); +} + + +/* fops */ +static int sf_reg_read_aux(const char *caller, struct sf_glob_info *sf_g, + struct sf_reg_info *sf_r, void *buf, + uint32_t *nread, uint64_t pos) +{ + /** @todo bird: yes, kmap() and kmalloc() input only. Since the buffer is + * contiguous in physical memory (kmalloc or single page), we should + * use a physical address here to speed things up. */ + int rc = VbglR0SfRead(&client_handle, &sf_g->map, sf_r->handle, + pos, nread, buf, false /* already locked? */); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfRead failed. caller=%s, rc=%Rrc\n", caller, rc)); + return -EPROTO; + } + return 0; +} + +static int sf_reg_write_aux(const char *caller, struct sf_glob_info *sf_g, + struct sf_reg_info *sf_r, void *buf, + uint32_t *nwritten, uint64_t pos) +{ + /** @todo bird: yes, kmap() and kmalloc() input only. Since the buffer is + * contiguous in physical memory (kmalloc or single page), we should + * use a physical address here to speed things up. */ + int rc = VbglR0SfWrite(&client_handle, &sf_g->map, sf_r->handle, + pos, nwritten, buf, false /* already locked? */); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfWrite failed. caller=%s, rc=%Rrc\n", + caller, rc)); + return -EPROTO; + } + return 0; +} + +/** + * Read from a regular file. + * + * @param file the file + * @param buf the buffer + * @param size length of the buffer + * @param off offset within the file + * @returns the number of read bytes on success, Linux error code otherwise + */ +static ssize_t sf_reg_read(struct file *file, char *buf, size_t size, loff_t *off) +{ + int err; + void *tmp; + RTCCPHYS tmp_phys; + size_t tmp_size; + size_t left = size; + ssize_t total_bytes_read = 0; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + loff_t pos = *off; + + TRACE(); + if (!S_ISREG(inode->i_mode)) + { + LogFunc(("read from non regular file %d\n", inode->i_mode)); + return -EINVAL; + } + + /** XXX Check read permission according to inode->i_mode! */ + + if (!size) + return 0; + + tmp = alloc_bounce_buffer(&tmp_size, &tmp_phys, size, __PRETTY_FUNCTION__); + if (!tmp) + return -ENOMEM; + + while (left) + { + uint32_t to_read, nread; + + to_read = tmp_size; + if (to_read > left) + to_read = (uint32_t) left; + + nread = to_read; + + err = sf_reg_read_aux(__func__, sf_g, sf_r, tmp, &nread, pos); + if (err) + goto fail; + + if (copy_to_user(buf, tmp, nread)) + { + err = -EFAULT; + goto fail; + } + + pos += nread; + left -= nread; + buf += nread; + total_bytes_read += nread; + if (nread != to_read) + break; + } + + *off += total_bytes_read; + free_bounce_buffer(tmp); + return total_bytes_read; + +fail: + free_bounce_buffer(tmp); + return err; +} + +/** + * Write to a regular file. + * + * @param file the file + * @param buf the buffer + * @param size length of the buffer + * @param off offset within the file + * @returns the number of written bytes on success, Linux error code otherwise + */ +static ssize_t sf_reg_write(struct file *file, const char *buf, size_t size, loff_t *off) +{ + int err; + void *tmp; + RTCCPHYS tmp_phys; + size_t tmp_size; + size_t left = size; + ssize_t total_bytes_written = 0; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + loff_t pos; + + TRACE(); + BUG_ON(!sf_i); + BUG_ON(!sf_g); + BUG_ON(!sf_r); + + if (!S_ISREG(inode->i_mode)) + { + LogFunc(("write to non regular file %d\n", inode->i_mode)); + return -EINVAL; + } + + pos = *off; + if (file->f_flags & O_APPEND) + { + pos = inode->i_size; + *off = pos; + } + + /** XXX Check write permission according to inode->i_mode! */ + + if (!size) + return 0; + + tmp = alloc_bounce_buffer(&tmp_size, &tmp_phys, size, __PRETTY_FUNCTION__); + if (!tmp) + return -ENOMEM; + + while (left) + { + uint32_t to_write, nwritten; + + to_write = tmp_size; + if (to_write > left) + to_write = (uint32_t) left; + + nwritten = to_write; + + if (copy_from_user(tmp, buf, to_write)) + { + err = -EFAULT; + goto fail; + } + +#if 1 + if (VbglR0CanUsePhysPageList()) + { + err = VbglR0SfWritePhysCont(&client_handle, &sf_g->map, sf_r->handle, + pos, &nwritten, tmp_phys); + err = RT_FAILURE(err) ? -EPROTO : 0; + } + else +#endif + err = sf_reg_write_aux(__func__, sf_g, sf_r, tmp, &nwritten, pos); + if (err) + goto fail; + + pos += nwritten; + left -= nwritten; + buf += nwritten; + total_bytes_written += nwritten; + if (nwritten != to_write) + break; + } + + *off += total_bytes_written; + if (*off > inode->i_size) + inode->i_size = *off; + + sf_i->force_restat = 1; + free_bounce_buffer(tmp); + return total_bytes_written; + +fail: + free_bounce_buffer(tmp); + return err; +} + +/** + * Open a regular file. + * + * @param inode the inode + * @param file the file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_reg_open(struct inode *inode, struct file *file) +{ + int rc, rc_linux = 0; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct sf_reg_info *sf_r; + SHFLCREATEPARMS params; + + TRACE(); + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + LogFunc(("open %s\n", sf_i->path->String.utf8)); + + sf_r = kmalloc(sizeof(*sf_r), GFP_KERNEL); + if (!sf_r) + { + LogRelFunc(("could not allocate reg info\n")); + return -ENOMEM; + } + + /* Already open? */ + if (sf_i->handle != SHFL_HANDLE_NIL) + { + /* + * This inode was created with sf_create_aux(). Check the CreateFlags: + * O_CREAT, O_TRUNC: inherent true (file was just created). Not sure + * about the access flags (SHFL_CF_ACCESS_*). + */ + sf_i->force_restat = 1; + sf_r->handle = sf_i->handle; + sf_i->handle = SHFL_HANDLE_NIL; + sf_i->file = file; + file->private_data = sf_r; + return 0; + } + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + /* We check the value of params.Handle afterwards to find out if + * the call succeeded or failed, as the API does not seem to cleanly + * distinguish error and informational messages. + * + * Furthermore, we must set params.Handle to SHFL_HANDLE_NIL to + * make the shared folders host service use our fMode parameter */ + + if (file->f_flags & O_CREAT) + { + LogFunc(("O_CREAT set\n")); + params.CreateFlags |= SHFL_CF_ACT_CREATE_IF_NEW; + /* We ignore O_EXCL, as the Linux kernel seems to call create + beforehand itself, so O_EXCL should always fail. */ + if (file->f_flags & O_TRUNC) + { + LogFunc(("O_TRUNC set\n")); + params.CreateFlags |= ( SHFL_CF_ACT_OVERWRITE_IF_EXISTS + | SHFL_CF_ACCESS_WRITE); + } + else + params.CreateFlags |= SHFL_CF_ACT_OPEN_IF_EXISTS; + } + else + { + params.CreateFlags |= SHFL_CF_ACT_FAIL_IF_NEW; + if (file->f_flags & O_TRUNC) + { + LogFunc(("O_TRUNC set\n")); + params.CreateFlags |= ( SHFL_CF_ACT_OVERWRITE_IF_EXISTS + | SHFL_CF_ACCESS_WRITE); + } + } + + if (!(params.CreateFlags & SHFL_CF_ACCESS_READWRITE)) + { + switch (file->f_flags & O_ACCMODE) + { + case O_RDONLY: + params.CreateFlags |= SHFL_CF_ACCESS_READ; + break; + + case O_WRONLY: + params.CreateFlags |= SHFL_CF_ACCESS_WRITE; + break; + + case O_RDWR: + params.CreateFlags |= SHFL_CF_ACCESS_READWRITE; + break; + + default: + BUG (); + } + } + + if (file->f_flags & O_APPEND) + { + LogFunc(("O_APPEND set\n")); + params.CreateFlags |= SHFL_CF_ACCESS_APPEND; + } + + params.Info.Attr.fMode = inode->i_mode; + LogFunc(("sf_reg_open: calling VbglR0SfCreate, file %s, flags=%#x, %#x\n", + sf_i->path->String.utf8 , file->f_flags, params.CreateFlags)); + rc = VbglR0SfCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfCreate failed flags=%d,%#x rc=%Rrc\n", + file->f_flags, params.CreateFlags, rc)); + kfree(sf_r); + return -RTErrConvertToErrno(rc); + } + + if (SHFL_HANDLE_NIL == params.Handle) + { + switch (params.Result) + { + case SHFL_PATH_NOT_FOUND: + case SHFL_FILE_NOT_FOUND: + rc_linux = -ENOENT; + break; + case SHFL_FILE_EXISTS: + rc_linux = -EEXIST; + break; + default: + break; + } + } + + sf_i->force_restat = 1; + sf_r->handle = params.Handle; + sf_i->file = file; + file->private_data = sf_r; + return rc_linux; +} + +/** + * Close a regular file. + * + * @param inode the inode + * @param file the file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_reg_release(struct inode *inode, struct file *file) +{ + int rc; + struct sf_reg_info *sf_r; + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + + TRACE(); + sf_g = GET_GLOB_INFO(inode->i_sb); + sf_r = file->private_data; + + BUG_ON(!sf_g); + BUG_ON(!sf_r); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + /* See the smbfs source (file.c). mmap in particular can cause data to be + * written to the file after it is closed, which we can't cope with. We + * copy and paste the body of filemap_write_and_wait() here as it was not + * defined before 2.6.6 and not exported until quite a bit later. */ + /* filemap_write_and_wait(inode->i_mapping); */ + if ( inode->i_mapping->nrpages + && filemap_fdatawrite(inode->i_mapping) != -EIO) + filemap_fdatawait(inode->i_mapping); +#endif + rc = VbglR0SfClose(&client_handle, &sf_g->map, sf_r->handle); + if (RT_FAILURE(rc)) + LogFunc(("VbglR0SfClose failed rc=%Rrc\n", rc)); + + kfree(sf_r); + sf_i->file = NULL; + sf_i->handle = SHFL_HANDLE_NIL; + file->private_data = NULL; + return 0; +} + +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) +static int sf_reg_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int *type) +# define SET_TYPE(t) *type = (t) +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) */ +static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int unused) +# define SET_TYPE(t) +#endif +{ + struct page *page; + char *buf; + loff_t off; + uint32_t nread = PAGE_SIZE; + int err; + struct file *file = vma->vm_file; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + + TRACE(); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + if (vmf->pgoff > vma->vm_end) + return VM_FAULT_SIGBUS; +#else + if (vaddr > vma->vm_end) + { + SET_TYPE(VM_FAULT_SIGBUS); + return NOPAGE_SIGBUS; + } +#endif + + /* Don't use GFP_HIGHUSER as long as sf_reg_read_aux() calls VbglR0SfRead() + * which works on virtual addresses. On Linux cannot reliably determine the + * physical address for high memory, see rtR0MemObjNativeLockKernel(). */ + page = alloc_page(GFP_USER); + if (!page) { + LogRelFunc(("failed to allocate page\n")); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + return VM_FAULT_OOM; +#else + SET_TYPE(VM_FAULT_OOM); + return NOPAGE_OOM; +#endif + } + + buf = kmap(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + off = (vmf->pgoff << PAGE_SHIFT); +#else + off = (vaddr - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); +#endif + err = sf_reg_read_aux(__func__, sf_g, sf_r, buf, &nread, off); + if (err) + { + kunmap(page); + put_page(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + return VM_FAULT_SIGBUS; +#else + SET_TYPE(VM_FAULT_SIGBUS); + return NOPAGE_SIGBUS; +#endif + } + + BUG_ON (nread > PAGE_SIZE); + if (!nread) + { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + clear_user_page(page_address(page), vmf->pgoff, page); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + clear_user_page(page_address(page), vaddr, page); +#else + clear_user_page(page_address(page), vaddr); +#endif + } + else + memset(buf + nread, 0, PAGE_SIZE - nread); + + flush_dcache_page(page); + kunmap(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + vmf->page = page; + return 0; +#else + SET_TYPE(VM_FAULT_MAJOR); + return page; +#endif +} + +static struct vm_operations_struct sf_vma_ops = +{ +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + .fault = sf_reg_fault +#else + .nopage = sf_reg_nopage +#endif +}; + +static int sf_reg_mmap(struct file *file, struct vm_area_struct *vma) +{ + TRACE(); + if (vma->vm_flags & VM_SHARED) + { + LogFunc(("shared mmapping not available\n")); + return -EINVAL; + } + + vma->vm_ops = &sf_vma_ops; + return 0; +} + +struct file_operations sf_reg_fops = +{ + .read = sf_reg_read, + .open = sf_reg_open, + .write = sf_reg_write, + .release = sf_reg_release, + .mmap = sf_reg_mmap, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) + .splice_read = generic_file_splice_read, +# else + .sendfile = generic_file_sendfile, +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) + .read_iter = generic_file_read_iter, + .write_iter = generic_file_write_iter, +# else + .aio_read = generic_file_aio_read, + .aio_write = generic_file_aio_write, +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35) + .fsync = noop_fsync, +# else + .fsync = simple_sync_file, +# endif + .llseek = generic_file_llseek, +#endif +}; + + +struct inode_operations sf_reg_iops = +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + .revalidate = sf_inode_revalidate +#else + .getattr = sf_getattr, + .setattr = sf_setattr +#endif +}; + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_readpage(struct file *file, struct page *page) +{ + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + uint32_t nread = PAGE_SIZE; + char *buf; + loff_t off = ((loff_t)page->index) << PAGE_SHIFT; + int ret; + + TRACE(); + + buf = kmap(page); + ret = sf_reg_read_aux(__func__, sf_g, sf_r, buf, &nread, off); + if (ret) + { + kunmap(page); + if (PageLocked(page)) + unlock_page(page); + return ret; + } + BUG_ON(nread > PAGE_SIZE); + memset(&buf[nread], 0, PAGE_SIZE - nread); + flush_dcache_page(page); + kunmap(page); + SetPageUptodate(page); + unlock_page(page); + return 0; +} + +static int +sf_writepage(struct page *page, struct writeback_control *wbc) +{ + struct address_space *mapping = page->mapping; + struct inode *inode = mapping->host; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct file *file = sf_i->file; + struct sf_reg_info *sf_r = file->private_data; + char *buf; + uint32_t nwritten = PAGE_SIZE; + int end_index = inode->i_size >> PAGE_SHIFT; + loff_t off = ((loff_t) page->index) << PAGE_SHIFT; + int err; + + TRACE(); + + if (page->index >= end_index) + nwritten = inode->i_size & (PAGE_SIZE-1); + + buf = kmap(page); + + err = sf_reg_write_aux(__func__, sf_g, sf_r, buf, &nwritten, off); + if (err < 0) + { + ClearPageUptodate(page); + goto out; + } + + if (off > inode->i_size) + inode->i_size = off; + + if (PageError(page)) + ClearPageError(page); + err = 0; + +out: + kunmap(page); + + unlock_page(page); + return err; +} + +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) +int sf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, unsigned flags, struct page **pagep, void **fsdata) +{ + TRACE(); + + return simple_write_begin(file, mapping, pos, len, flags, pagep, fsdata); +} + +int sf_write_end(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, unsigned copied, struct page *page, void *fsdata) +{ + struct inode *inode = mapping->host; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + void *buf; + unsigned from = pos & (PAGE_SIZE - 1); + uint32_t nwritten = len; + int err; + + TRACE(); + + buf = kmap(page); + err = sf_reg_write_aux(__func__, sf_g, sf_r, buf+from, &nwritten, pos); + kunmap(page); + + if (!PageUptodate(page) && err == PAGE_SIZE) + SetPageUptodate(page); + + if (err >= 0) { + pos += nwritten; + if (pos > inode->i_size) + inode->i_size = pos; + } + + unlock_page(page); + page_cache_release(page); + + return nwritten; +} + +# endif /* KERNEL_VERSION >= 2.6.24 */ + +struct address_space_operations sf_reg_aops = +{ + .readpage = sf_readpage, + .writepage = sf_writepage, +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) + .write_begin = sf_write_begin, + .write_end = sf_write_end, +# else + .prepare_write = simple_prepare_write, + .commit_write = simple_commit_write, +# endif +}; +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/udivdi3.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/udivdi3.c @@ -0,0 +1,56 @@ +/* $NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)udivdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two unsigned quads. + */ +u_quad_t +__udivdi3(a, b) + u_quad_t a, b; +{ + + return (__qdivrem(a, b, (u_quad_t *)0)); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/umoddi3.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/umoddi3.c @@ -0,0 +1,58 @@ +/* $NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)umoddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two unsigned quads. + */ +u_quad_t +__umoddi3(a, b) + u_quad_t a, b; +{ + u_quad_t r; + + (void)__qdivrem(a, b, &r); + return (r); +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/utils.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/utils.c @@ -0,0 +1,900 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Utility functions. + * Mainly conversion from/to VirtualBox/Linux data structures + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" +#include +#include +#include + +/* #define USE_VMALLOC */ + +/* + * sf_reg_aops and sf_backing_dev_info are just quick implementations to make + * sendfile work. For more information have a look at + * + * http://us1.samba.org/samba/ftp/cifs-cvs/ols2006-fs-tutorial-smf.odp + * + * and the sample implementation + * + * http://pserver.samba.org/samba/ftp/cifs-cvs/samplefs.tar.gz + */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static void sf_ftime_from_timespec(time_t *time, RTTIMESPEC *ts) +{ + int64_t t = RTTimeSpecGetNano(ts); + + do_div(t, 1000000000); + *time = t; +} + +static void sf_timespec_from_ftime(RTTIMESPEC *ts, time_t *time) +{ + int64_t t = 1000000000 * *time; + RTTimeSpecSetNano(ts, t); +} +#else /* >= 2.6.0 */ +static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts) +{ + int64_t t = RTTimeSpecGetNano(ts); + int64_t nsec; + + nsec = do_div(t, 1000000000); + tv->tv_sec = t; + tv->tv_nsec = nsec; +} + +static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec *tv) +{ + int64_t t = (int64_t)tv->tv_nsec + (int64_t)tv->tv_sec * 1000000000; + RTTimeSpecSetNano(ts, t); +} +#endif /* >= 2.6.0 */ + +/* set [inode] attributes based on [info], uid/gid based on [sf_g] */ +void sf_init_inode(struct sf_glob_info *sf_g, struct inode *inode, + PSHFLFSOBJINFO info) +{ + PSHFLFSOBJATTR attr; + int mode; + + TRACE(); + + attr = &info->Attr; + +#define mode_set(r) attr->fMode & (RTFS_UNIX_##r) ? (S_##r) : 0; + mode = mode_set(ISUID); + mode |= mode_set(ISGID); + + mode |= mode_set(IRUSR); + mode |= mode_set(IWUSR); + mode |= mode_set(IXUSR); + + mode |= mode_set(IRGRP); + mode |= mode_set(IWGRP); + mode |= mode_set(IXGRP); + + mode |= mode_set(IROTH); + mode |= mode_set(IWOTH); + mode |= mode_set(IXOTH); + +#undef mode_set + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + inode->i_mapping->a_ops = &sf_reg_aops; +# if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + /* XXX Was this ever necessary? */ + inode->i_mapping->backing_dev_info = &sf_g->bdi; +# endif +#endif + + if (RTFS_IS_DIRECTORY(attr->fMode)) + { + inode->i_mode = sf_g->dmode != ~0 ? (sf_g->dmode & 0777) : mode; + inode->i_mode &= ~sf_g->dmask; + inode->i_mode |= S_IFDIR; + inode->i_op = &sf_dir_iops; + inode->i_fop = &sf_dir_fops; + /* XXX: this probably should be set to the number of entries + in the directory plus two (. ..) */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +#else + inode->i_nlink = 1; +#endif + } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + else if (RTFS_IS_SYMLINK(attr->fMode)) + { + inode->i_mode = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode; + inode->i_mode &= ~sf_g->fmask; + inode->i_mode |= S_IFLNK; + inode->i_op = &sf_lnk_iops; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +# else + inode->i_nlink = 1; +# endif + } +#endif + else + { + inode->i_mode = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode; + inode->i_mode &= ~sf_g->fmask; + inode->i_mode |= S_IFREG; + inode->i_op = &sf_reg_iops; + inode->i_fop = &sf_reg_fops; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +#else + inode->i_nlink = 1; +#endif + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + inode->i_uid = make_kuid(current_user_ns(), sf_g->uid); + inode->i_gid = make_kgid(current_user_ns(), sf_g->gid); +#else + inode->i_uid = sf_g->uid; + inode->i_gid = sf_g->gid; +#endif + + inode->i_size = info->cbObject; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19) && !defined(KERNEL_FC6) + inode->i_blksize = 4096; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 11) + inode->i_blkbits = 12; +#endif + /* i_blocks always in units of 512 bytes! */ + inode->i_blocks = (info->cbAllocated + 511) / 512; + + sf_ftime_from_timespec(&inode->i_atime, &info->AccessTime); + sf_ftime_from_timespec(&inode->i_ctime, &info->ChangeTime); + sf_ftime_from_timespec(&inode->i_mtime, &info->ModificationTime); +} + +int sf_stat(const char *caller, struct sf_glob_info *sf_g, + SHFLSTRING *path, PSHFLFSOBJINFO result, int ok_to_fail) +{ + int rc; + SHFLCREATEPARMS params; + NOREF(caller); + + TRACE(); + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; + LogFunc(("sf_stat: calling VbglR0SfCreate, file %s, flags %#x\n", + path->String.utf8, params.CreateFlags)); + rc = VbglR0SfCreate(&client_handle, &sf_g->map, path, ¶ms); + if (rc == VERR_INVALID_NAME) + { + /* this can happen for names like 'foo*' on a Windows host */ + return -ENOENT; + } + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfCreate(%s) failed. caller=%s, rc=%Rrc\n", + path->String.utf8, rc, caller)); + return -EPROTO; + } + if (params.Result != SHFL_FILE_EXISTS) + { + if (!ok_to_fail) + LogFunc(("VbglR0SfCreate(%s) file does not exist. caller=%s, result=%d\n", + path->String.utf8, params.Result, caller)); + return -ENOENT; + } + + *result = params.Info; + return 0; +} + +/* this is called directly as iop on 2.4, indirectly as dop + [sf_dentry_revalidate] on 2.4/2.6, indirectly as iop through + [sf_getattr] on 2.6. the job is to find out whether dentry/inode is + still valid. the test is failed if [dentry] does not have an inode + or [sf_stat] is unsuccessful, otherwise we return success and + update inode attributes */ +int sf_inode_revalidate(struct dentry *dentry) +{ + int err; + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + SHFLFSOBJINFO info; + + TRACE(); + if (!dentry || !dentry->d_inode) + { + LogFunc(("no dentry(%p) or inode(%p)\n", dentry, dentry->d_inode)); + return -EINVAL; + } + + sf_g = GET_GLOB_INFO(dentry->d_inode->i_sb); + sf_i = GET_INODE_INFO(dentry->d_inode); + +#if 0 + printk("%s called by %p:%p\n", + sf_i->path->String.utf8, + __builtin_return_address (0), + __builtin_return_address (1)); +#endif + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + if (!sf_i->force_restat) + { + if (jiffies - dentry->d_time < sf_g->ttl) + return 0; + } + + err = sf_stat(__func__, sf_g, sf_i->path, &info, 1); + if (err) + return err; + + dentry->d_time = jiffies; + sf_init_inode(sf_g, dentry->d_inode, &info); + return 0; +} + +/* this is called during name resolution/lookup to check if the + [dentry] in the cache is still valid. the job is handled by + [sf_inode_revalidate] */ +static int +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) +sf_dentry_revalidate(struct dentry *dentry, unsigned flags) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +sf_dentry_revalidate(struct dentry *dentry, struct nameidata *nd) +#else +sf_dentry_revalidate(struct dentry *dentry, int flags) +#endif +{ + TRACE(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) + if (flags & LOOKUP_RCU) + return -ECHILD; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) + /* see Documentation/filesystems/vfs.txt */ + if (nd && nd->flags & LOOKUP_RCU) + return -ECHILD; +#endif + + if (sf_inode_revalidate(dentry)) + return 0; + + return 1; +} + +/* on 2.6 this is a proxy for [sf_inode_revalidate] which (as a side + effect) updates inode attributes for [dentry] (given that [dentry] + has inode at all) from these new attributes we derive [kstat] via + [generic_fillattr] */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +int sf_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *kstat) +{ + int err; + + TRACE(); + err = sf_inode_revalidate(dentry); + if (err) + return err; + + generic_fillattr(dentry->d_inode, kstat); + return 0; +} + +int sf_setattr(struct dentry *dentry, struct iattr *iattr) +{ + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + SHFLCREATEPARMS params; + SHFLFSOBJINFO info; + uint32_t cbBuffer; + int rc, err; + + TRACE(); + + sf_g = GET_GLOB_INFO(dentry->d_inode->i_sb); + sf_i = GET_INODE_INFO(dentry->d_inode); + err = 0; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_ATTR_WRITE; + + /* this is at least required for Posix hosts */ + if (iattr->ia_valid & ATTR_SIZE) + params.CreateFlags |= SHFL_CF_ACCESS_WRITE; + + rc = VbglR0SfCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfCreate(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail2; + } + if (params.Result != SHFL_FILE_EXISTS) + { + LogFunc(("file %s does not exist\n", sf_i->path->String.utf8)); + err = -ENOENT; + goto fail1; + } + + /* Setting the file size and setting the other attributes has to be + * handled separately, see implementation of vbsfSetFSInfo() in + * vbsf.cpp */ + if (iattr->ia_valid & (ATTR_MODE | ATTR_ATIME | ATTR_MTIME)) + { +#define mode_set(r) ((iattr->ia_mode & (S_##r)) ? RTFS_UNIX_##r : 0) + + RT_ZERO(info); + if (iattr->ia_valid & ATTR_MODE) + { + info.Attr.fMode = mode_set(ISUID); + info.Attr.fMode |= mode_set(ISGID); + info.Attr.fMode |= mode_set(IRUSR); + info.Attr.fMode |= mode_set(IWUSR); + info.Attr.fMode |= mode_set(IXUSR); + info.Attr.fMode |= mode_set(IRGRP); + info.Attr.fMode |= mode_set(IWGRP); + info.Attr.fMode |= mode_set(IXGRP); + info.Attr.fMode |= mode_set(IROTH); + info.Attr.fMode |= mode_set(IWOTH); + info.Attr.fMode |= mode_set(IXOTH); + + if (iattr->ia_mode & S_IFDIR) + info.Attr.fMode |= RTFS_TYPE_DIRECTORY; + else + info.Attr.fMode |= RTFS_TYPE_FILE; + } + + if (iattr->ia_valid & ATTR_ATIME) + sf_timespec_from_ftime(&info.AccessTime, &iattr->ia_atime); + if (iattr->ia_valid & ATTR_MTIME) + sf_timespec_from_ftime(&info.ModificationTime, &iattr->ia_mtime); + /* ignore ctime (inode change time) as it can't be set from userland anyway */ + + cbBuffer = sizeof(info); + rc = VbglR0SfFsInfo(&client_handle, &sf_g->map, params.Handle, + SHFL_INFO_SET | SHFL_INFO_FILE, &cbBuffer, + (PSHFLDIRINFO)&info); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfFsInfo(%s, FILE) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + } + + if (iattr->ia_valid & ATTR_SIZE) + { + RT_ZERO(info); + info.cbObject = iattr->ia_size; + cbBuffer = sizeof(info); + rc = VbglR0SfFsInfo(&client_handle, &sf_g->map, params.Handle, + SHFL_INFO_SET | SHFL_INFO_SIZE, &cbBuffer, + (PSHFLDIRINFO)&info); + if (RT_FAILURE(rc)) + { + LogFunc(("VbglR0SfFsInfo(%s, SIZE) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + } + + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("VbglR0SfClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + + return sf_inode_revalidate(dentry); + +fail1: + rc = VbglR0SfClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("VbglR0SfClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + +fail2: + return err; +} +#endif /* >= 2.6.0 */ + +static int sf_make_path(const char *caller, struct sf_inode_info *sf_i, + const char *d_name, size_t d_len, SHFLSTRING **result) +{ + size_t path_len, shflstring_len; + SHFLSTRING *tmp; + uint16_t p_len; + uint8_t *p_name; + int fRoot = 0; + + TRACE(); + p_len = sf_i->path->u16Length; + p_name = sf_i->path->String.utf8; + + if (p_len == 1 && *p_name == '/') + { + path_len = d_len + 1; + fRoot = 1; + } + else + { + /* lengths of constituents plus terminating zero plus slash */ + path_len = p_len + d_len + 2; + if (path_len > 0xffff) + { + LogFunc(("path too long. caller=%s, path_len=%zu\n", caller, path_len)); + return -ENAMETOOLONG; + } + } + + shflstring_len = offsetof(SHFLSTRING, String.utf8) + path_len; + tmp = kmalloc(shflstring_len, GFP_KERNEL); + if (!tmp) + { + LogRelFunc(("kmalloc failed, caller=%s\n", caller)); + return -ENOMEM; + } + tmp->u16Length = path_len - 1; + tmp->u16Size = path_len; + + if (fRoot) + memcpy(&tmp->String.utf8[0], d_name, d_len + 1); + else + { + memcpy(&tmp->String.utf8[0], p_name, p_len); + tmp->String.utf8[p_len] = '/'; + memcpy(&tmp->String.utf8[p_len + 1], d_name, d_len); + tmp->String.utf8[p_len + 1 + d_len] = '\0'; + } + + *result = tmp; + return 0; +} + +/** + * [dentry] contains string encoded in coding system that corresponds + * to [sf_g]->nls, we must convert it to UTF8 here and pass down to + * [sf_make_path] which will allocate SHFLSTRING and fill it in + */ +int sf_path_from_dentry(const char *caller, struct sf_glob_info *sf_g, + struct sf_inode_info *sf_i, struct dentry *dentry, + SHFLSTRING **result) +{ + int err; + const char *d_name; + size_t d_len; + const char *name; + size_t len = 0; + + TRACE(); + d_name = dentry->d_name.name; + d_len = dentry->d_name.len; + + if (sf_g->nls) + { + size_t in_len, i, out_bound_len; + const char *in; + char *out; + + in = d_name; + in_len = d_len; + + out_bound_len = PATH_MAX; + out = kmalloc(out_bound_len, GFP_KERNEL); + name = out; + + for (i = 0; i < d_len; ++i) + { + /* We renamed the linux kernel wchar_t type to linux_wchar_t in + the-linux-kernel.h, as it conflicts with the C++ type of that name. */ + linux_wchar_t uni; + int nb; + + nb = sf_g->nls->char2uni(in, in_len, &uni); + if (nb < 0) + { + LogFunc(("nls->char2uni failed %x %d\n", + *in, in_len)); + err = -EINVAL; + goto fail1; + } + in_len -= nb; + in += nb; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) + nb = utf32_to_utf8(uni, out, out_bound_len); +#else + nb = utf8_wctomb(out, uni, out_bound_len); +#endif + if (nb < 0) + { + LogFunc(("nls->uni2char failed %x %d\n", + uni, out_bound_len)); + err = -EINVAL; + goto fail1; + } + out_bound_len -= nb; + out += nb; + len += nb; + } + if (len >= PATH_MAX - 1) + { + err = -ENAMETOOLONG; + goto fail1; + } + + LogFunc(("result(%d) = %.*s\n", len, len, name)); + *out = 0; + } + else + { + name = d_name; + len = d_len; + } + + err = sf_make_path(caller, sf_i, name, len, result); + if (name != d_name) + kfree(name); + + return err; + +fail1: + kfree(name); + return err; +} + +int sf_nlscpy(struct sf_glob_info *sf_g, + char *name, size_t name_bound_len, + const unsigned char *utf8_name, size_t utf8_len) +{ + if (sf_g->nls) + { + const char *in; + char *out; + size_t out_len; + size_t out_bound_len; + size_t in_bound_len; + + in = utf8_name; + in_bound_len = utf8_len; + + out = name; + out_len = 0; + out_bound_len = name_bound_len; + + while (in_bound_len) + { + int nb; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) + unicode_t uni; + + nb = utf8_to_utf32(in, in_bound_len, &uni); +#else + linux_wchar_t uni; + + nb = utf8_mbtowc(&uni, in, in_bound_len); +#endif + if (nb < 0) + { + LogFunc(("utf8_mbtowc failed(%s) %x:%d\n", + (const char *) utf8_name, *in, in_bound_len)); + return -EINVAL; + } + in += nb; + in_bound_len -= nb; + + nb = sf_g->nls->uni2char(uni, out, out_bound_len); + if (nb < 0) + { + LogFunc(("nls->uni2char failed(%s) %x:%d\n", + utf8_name, uni, out_bound_len)); + return nb; + } + out += nb; + out_bound_len -= nb; + out_len += nb; + } + + *out = 0; + } + else + { + if (utf8_len + 1 > name_bound_len) + return -ENAMETOOLONG; + + memcpy(name, utf8_name, utf8_len + 1); + } + return 0; +} + +static struct sf_dir_buf *sf_dir_buf_alloc(void) +{ + struct sf_dir_buf *b; + + TRACE(); + b = kmalloc(sizeof(*b), GFP_KERNEL); + if (!b) + { + LogRelFunc(("could not alloc directory buffer\n")); + return NULL; + } + +#ifdef USE_VMALLOC + b->buf = vmalloc(DIR_BUFFER_SIZE); +#else + b->buf = kmalloc(DIR_BUFFER_SIZE, GFP_KERNEL); +#endif + if (!b->buf) + { + kfree(b); + LogRelFunc(("could not alloc directory buffer storage\n")); + return NULL; + } + + INIT_LIST_HEAD(&b->head); + b->cEntries = 0; + b->cbUsed = 0; + b->cbFree = DIR_BUFFER_SIZE; + return b; +} + +static void sf_dir_buf_free(struct sf_dir_buf *b) +{ + BUG_ON(!b || !b->buf); + + TRACE(); + list_del(&b->head); +#ifdef USE_VMALLOC + vfree(b->buf); +#else + kfree(b->buf); +#endif + kfree(b); +} + +/** + * Free the directory buffer. + */ +void sf_dir_info_free(struct sf_dir_info *p) +{ + struct list_head *list, *pos, *tmp; + + TRACE(); + list = &p->info_list; + list_for_each_safe(pos, tmp, list) + { + struct sf_dir_buf *b; + + b = list_entry(pos, struct sf_dir_buf, head); + sf_dir_buf_free(b); + } + kfree(p); +} + +/** + * Empty (but not free) the directory buffer. + */ +void sf_dir_info_empty(struct sf_dir_info *p) +{ + struct list_head *list, *pos, *tmp; + TRACE(); + list = &p->info_list; + list_for_each_safe(pos, tmp, list) + { + struct sf_dir_buf *b; + b = list_entry(pos, struct sf_dir_buf, head); + b->cEntries = 0; + b->cbUsed = 0; + b->cbFree = DIR_BUFFER_SIZE; + } +} + +/** + * Create a new directory buffer descriptor. + */ +struct sf_dir_info *sf_dir_info_alloc(void) +{ + struct sf_dir_info *p; + + TRACE(); + p = kmalloc(sizeof(*p), GFP_KERNEL); + if (!p) + { + LogRelFunc(("could not alloc directory info\n")); + return NULL; + } + + INIT_LIST_HEAD(&p->info_list); + return p; +} + +/** + * Search for an empty directory content buffer. + */ +static struct sf_dir_buf *sf_get_empty_dir_buf(struct sf_dir_info *sf_d) +{ + struct list_head *list, *pos; + + list = &sf_d->info_list; + list_for_each(pos, list) + { + struct sf_dir_buf *b; + + b = list_entry(pos, struct sf_dir_buf, head); + if (!b) + return NULL; + else + { + if (b->cbUsed == 0) + return b; + } + } + + return NULL; +} + +int sf_dir_read_all(struct sf_glob_info *sf_g, struct sf_inode_info *sf_i, + struct sf_dir_info *sf_d, SHFLHANDLE handle) +{ + int err; + SHFLSTRING *mask; + struct sf_dir_buf *b; + + TRACE(); + err = sf_make_path(__func__, sf_i, "*", 1, &mask); + if (err) + goto fail0; + + for (;;) + { + int rc; + void *buf; + uint32_t cbSize; + uint32_t cEntries; + + b = sf_get_empty_dir_buf(sf_d); + if (!b) + { + b = sf_dir_buf_alloc(); + if (!b) + { + err = -ENOMEM; + LogRelFunc(("could not alloc directory buffer\n")); + goto fail1; + } + list_add(&b->head, &sf_d->info_list); + } + + buf = b->buf; + cbSize = b->cbFree; + + rc = VbglR0SfDirInfo(&client_handle, &sf_g->map, handle, mask, + 0, 0, &cbSize, buf, &cEntries); + switch (rc) + { + case VINF_SUCCESS: + /* fallthrough */ + case VERR_NO_MORE_FILES: + break; + case VERR_NO_TRANSLATION: + LogFunc(("host could not translate entry\n")); + /* XXX */ + break; + default: + err = -RTErrConvertToErrno(rc); + LogFunc(("VbglR0SfDirInfo failed rc=%Rrc\n", rc)); + goto fail1; + } + + b->cEntries += cEntries; + b->cbFree -= cbSize; + b->cbUsed += cbSize; + + if (RT_FAILURE(rc)) + break; + } + err = 0; + +fail1: + kfree(mask); + +fail0: + return err; +} + +int sf_get_volume_info(struct super_block *sb, STRUCT_STATFS *stat) +{ + struct sf_glob_info *sf_g; + SHFLVOLINFO SHFLVolumeInfo; + uint32_t cbBuffer; + int rc; + + sf_g = GET_GLOB_INFO(sb); + cbBuffer = sizeof(SHFLVolumeInfo); + rc = VbglR0SfFsInfo(&client_handle, &sf_g->map, 0, SHFL_INFO_GET | SHFL_INFO_VOLUME, + &cbBuffer, (PSHFLDIRINFO)&SHFLVolumeInfo); + if (RT_FAILURE(rc)) + return -RTErrConvertToErrno(rc); + + stat->f_type = NFS_SUPER_MAGIC; /* XXX vboxsf type? */ + stat->f_bsize = SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_blocks = SHFLVolumeInfo.ullTotalAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_bfree = SHFLVolumeInfo.ullAvailableAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_bavail = SHFLVolumeInfo.ullAvailableAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_files = 1000; + stat->f_ffree = 1000; /* don't return 0 here since the guest may think + * that it is not possible to create any more files */ + stat->f_fsid.val[0] = 0; + stat->f_fsid.val[1] = 0; + stat->f_namelen = 255; + return 0; +} + +struct dentry_operations sf_dentry_ops = +{ + .d_revalidate = sf_dentry_revalidate +}; + +int sf_init_backing_dev(struct sf_glob_info *sf_g) +{ + int rc = 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + /* Each new shared folder map gets a new uint64_t identifier, + * allocated in sequence. We ASSUME the sequence will not wrap. */ + static uint64_t s_u64Sequence = 0; + uint64_t u64CurrentSequence = ASMAtomicIncU64(&s_u64Sequence); + + sf_g->bdi.ra_pages = 0; /* No readahead */ +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 12) + sf_g->bdi.capabilities = BDI_CAP_MAP_DIRECT /* MAP_SHARED */ + | BDI_CAP_MAP_COPY /* MAP_PRIVATE */ + | BDI_CAP_READ_MAP /* can be mapped for reading */ + | BDI_CAP_WRITE_MAP /* can be mapped for writing */ + | BDI_CAP_EXEC_MAP; /* can be mapped for execution */ +# endif /* >= 2.6.12 */ +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) + rc = bdi_init(&sf_g->bdi); +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) + if (!rc) + rc = bdi_register(&sf_g->bdi, NULL, "vboxsf-%llu", + (unsigned long long)u64CurrentSequence); +# endif /* >= 2.6.26 */ +# endif /* >= 2.6.24 */ +#endif /* >= 2.6.0 && <= 3.19.0 */ + return rc; +} + +void sf_done_backing_dev(struct sf_glob_info *sf_g) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) && LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + bdi_destroy(&sf_g->bdi); /* includes bdi_unregister() */ +#endif +} --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/vbsfmount.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/vbsfmount.h @@ -0,0 +1,78 @@ +/** @file + * vboxsf -- VirtualBox Guest Additions for Linux: mount(2) parameter structure. + */ + +/* + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VBFS_MOUNT_H +#define VBFS_MOUNT_H + +#define MAX_HOST_NAME 256 +#define MAX_NLS_NAME 32 + +/* Linux constraints the size of data mount argument to PAGE_SIZE - 1. */ +struct vbsf_mount_info_old +{ + char name[MAX_HOST_NAME]; + char nls_name[MAX_NLS_NAME]; + int uid; + int gid; + int ttl; +}; + +#define VBSF_MOUNT_SIGNATURE_BYTE_0 '\377' +#define VBSF_MOUNT_SIGNATURE_BYTE_1 '\376' +#define VBSF_MOUNT_SIGNATURE_BYTE_2 '\375' + +struct vbsf_mount_info_new +{ + char nullchar; /* name cannot be '\0' -- we use this field + to distinguish between the old structure + and the new structure */ + char signature[3]; /* signature */ + int length; /* length of the whole structure */ + char name[MAX_HOST_NAME]; /* share name */ + char nls_name[MAX_NLS_NAME];/* name of an I/O charset */ + int uid; /* user ID for all entries, default 0=root */ + int gid; /* group ID for all entries, default 0=root */ + int ttl; /* time to live */ + int dmode; /* mode for directories if != 0xffffffff */ + int fmode; /* mode for regular files if != 0xffffffff */ + int dmask; /* umask applied to directories */ + int fmask; /* umask applied to regular files */ +}; + +struct vbsf_mount_opts +{ + int uid; + int gid; + int ttl; + int dmode; + int fmode; + int dmask; + int fmask; + int ronly; + int sloppy; + int noexec; + int nodev; + int nosuid; + int remount; + char nls_name[MAX_NLS_NAME]; + char *convertcp; +}; + +/** Completes the mount operation by adding the new mount point to mtab if required. */ +int vbsfmount_complete(const char *host_name, const char *mount_point, + unsigned long flags, struct vbsf_mount_opts *opts); + +#endif /* vbsfmount.h */ --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/version-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 14 +#define VBOX_VERSION_STRING_RAW "5.0.14" +#define VBOX_VERSION_STRING "5.0.14_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/vfsmod.c +++ linux-4.4.0/ubuntu/vbox/vboxsf/vfsmod.c @@ -0,0 +1,664 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Virtual File System for VirtualBox Shared Folders + * + * Module initialization/finalization + * File system registration/deregistration + * Superblock reading + * Few utility functions + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +/** + * @note Anyone wishing to make changes here might wish to take a look at + * http://www.atnf.csiro.au/people/rgooch/linux/vfs.txt + * which seems to be the closest there is to official documentation on + * writing filesystem drivers for Linux. + */ + +#include "vfsmod.h" + +MODULE_DESCRIPTION(VBOX_PRODUCT " VFS Module for Host File System Access"); +MODULE_AUTHOR(VBOX_VENDOR); +MODULE_LICENSE("GPL"); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING " (interface " RT_XSTR(VMMDEV_VERSION) ")"); +#endif + +/* globals */ +VBGLSFCLIENT client_handle; + +/* forward declarations */ +static struct super_operations sf_super_ops; + +/* allocate global info, try to map host share */ +static int sf_glob_alloc(struct vbsf_mount_info_new *info, struct sf_glob_info **sf_gp) +{ + int err, rc; + SHFLSTRING *str_name; + size_t name_len, str_len; + struct sf_glob_info *sf_g; + + TRACE(); + sf_g = kmalloc(sizeof(*sf_g), GFP_KERNEL); + if (!sf_g) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for global info\n")); + goto fail0; + } + + RT_ZERO(*sf_g); + + if ( info->nullchar != '\0' + || info->signature[0] != VBSF_MOUNT_SIGNATURE_BYTE_0 + || info->signature[1] != VBSF_MOUNT_SIGNATURE_BYTE_1 + || info->signature[2] != VBSF_MOUNT_SIGNATURE_BYTE_2) + { + /* An old version of mount.vboxsf made the syscall. Translate the + * old parameters to the new structure. */ + struct vbsf_mount_info_old *info_old = (struct vbsf_mount_info_old *)info; + static struct vbsf_mount_info_new info_compat; + + info = &info_compat; + memset(info, 0, sizeof(*info)); + memcpy(&info->name, &info_old->name, MAX_HOST_NAME); + memcpy(&info->nls_name, &info_old->nls_name, MAX_NLS_NAME); + info->length = offsetof(struct vbsf_mount_info_new, dmode); + info->uid = info_old->uid; + info->gid = info_old->gid; + info->ttl = info_old->ttl; + } + + info->name[sizeof(info->name) - 1] = 0; + info->nls_name[sizeof(info->nls_name) - 1] = 0; + + name_len = strlen(info->name); + if (name_len > 0xfffe) + { + err = -ENAMETOOLONG; + LogFunc(("map name too big\n")); + goto fail1; + } + + str_len = offsetof(SHFLSTRING, String.utf8) + name_len + 1; + str_name = kmalloc(str_len, GFP_KERNEL); + if (!str_name) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for host name\n")); + goto fail1; + } + + str_name->u16Length = name_len; + str_name->u16Size = name_len + 1; + memcpy(str_name->String.utf8, info->name, name_len + 1); + +#define _IS_UTF8(_str) \ + (strcmp(_str, "utf8") == 0) +#define _IS_EMPTY(_str) \ + (strcmp(_str, "") == 0) + + /* Check if NLS charset is valid and not points to UTF8 table */ + if (info->nls_name[0]) + { + if (_IS_UTF8(info->nls_name)) + sf_g->nls = NULL; + else + { + sf_g->nls = load_nls(info->nls_name); + if (!sf_g->nls) + { + err = -EINVAL; + LogFunc(("failed to load nls %s\n", info->nls_name)); + goto fail1; + } + } + } + else + { +#ifdef CONFIG_NLS_DEFAULT + /* If no NLS charset specified, try to load the default + * one if it's not points to UTF8. */ + if (!_IS_UTF8(CONFIG_NLS_DEFAULT) && !_IS_EMPTY(CONFIG_NLS_DEFAULT)) + sf_g->nls = load_nls_default(); + else + sf_g->nls = NULL; +#else + sf_g->nls = NULL; +#endif + +#undef _IS_UTF8 +#undef _IS_EMPTY + } + + rc = VbglR0SfMapFolder(&client_handle, str_name, &sf_g->map); + kfree(str_name); + + if (RT_FAILURE(rc)) + { + err = -EPROTO; + LogFunc(("VbglR0SfMapFolder failed rc=%d\n", rc)); + goto fail2; + } + + sf_g->ttl = info->ttl; + sf_g->uid = info->uid; + sf_g->gid = info->gid; + + if ((unsigned)info->length >= sizeof(struct vbsf_mount_info_new)) + { + /* new fields */ + sf_g->dmode = info->dmode; + sf_g->fmode = info->fmode; + sf_g->dmask = info->dmask; + sf_g->fmask = info->fmask; + } + else + { + sf_g->dmode = ~0; + sf_g->fmode = ~0; + } + + *sf_gp = sf_g; + return 0; + +fail2: + if (sf_g->nls) + unload_nls(sf_g->nls); + +fail1: + kfree(sf_g); + +fail0: + return err; +} + +/* unmap the share and free global info [sf_g] */ +static void +sf_glob_free(struct sf_glob_info *sf_g) +{ + int rc; + + TRACE(); + rc = VbglR0SfUnmapFolder(&client_handle, &sf_g->map); + if (RT_FAILURE(rc)) + LogFunc(("VbglR0SfUnmapFolder failed rc=%d\n", rc)); + + if (sf_g->nls) + unload_nls(sf_g->nls); + + kfree(sf_g); +} + +/** + * This is called (by sf_read_super_[24|26] when vfs mounts the fs and + * wants to read super_block. + * + * calls [sf_glob_alloc] to map the folder and allocate global + * information structure. + * + * initializes [sb], initializes root inode and dentry. + * + * should respect [flags] + */ +static int sf_read_super_aux(struct super_block *sb, void *data, int flags) +{ + int err; + struct dentry *droot; + struct inode *iroot; + struct sf_inode_info *sf_i; + struct sf_glob_info *sf_g; + SHFLFSOBJINFO fsinfo; + struct vbsf_mount_info_new *info; + bool fInodePut = true; + + TRACE(); + if (!data) + { + LogFunc(("no mount info specified\n")); + return -EINVAL; + } + + info = data; + + if (flags & MS_REMOUNT) + { + LogFunc(("remounting is not supported\n")); + return -ENOSYS; + } + + err = sf_glob_alloc(info, &sf_g); + if (err) + goto fail0; + + sf_i = kmalloc(sizeof (*sf_i), GFP_KERNEL); + if (!sf_i) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for root inode info\n")); + goto fail1; + } + + sf_i->handle = SHFL_HANDLE_NIL; + sf_i->path = kmalloc(sizeof(SHFLSTRING) + 1, GFP_KERNEL); + if (!sf_i->path) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for root inode path\n")); + goto fail2; + } + + sf_i->path->u16Length = 1; + sf_i->path->u16Size = 2; + sf_i->path->String.utf8[0] = '/'; + sf_i->path->String.utf8[1] = 0; + sf_i->force_reread = 0; + + err = sf_stat(__func__, sf_g, sf_i->path, &fsinfo, 0); + if (err) + { + LogFunc(("could not stat root of share\n")); + goto fail3; + } + + sb->s_magic = 0xface; + sb->s_blocksize = 1024; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 3) + /* Required for seek/sendfile. + * + * Must by less than or equal to INT64_MAX despite the fact that the + * declaration of this variable is unsigned long long. See determination + * of 'loff_t max' in fs/read_write.c / do_sendfile(). I don't know the + * correct limit but MAX_LFS_FILESIZE (8TB-1 on 32-bit boxes) takes the + * page cache into account and is the suggested limit. */ +# if defined MAX_LFS_FILESIZE + sb->s_maxbytes = MAX_LFS_FILESIZE; +# else + sb->s_maxbytes = 0x7fffffffffffffffULL; +# endif +#endif + sb->s_op = &sf_super_ops; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + iroot = iget_locked(sb, 0); +#else + iroot = iget(sb, 0); +#endif + if (!iroot) + { + err = -ENOMEM; /* XXX */ + LogFunc(("could not get root inode\n")); + goto fail3; + } + + if (sf_init_backing_dev(sf_g)) + { + err = -EINVAL; + LogFunc(("could not init bdi\n")); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(iroot); +#endif + goto fail4; + } + + sf_init_inode(sf_g, iroot, &fsinfo); + SET_INODE_INFO(iroot, sf_i); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(iroot); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) + droot = d_make_root(iroot); +#else + droot = d_alloc_root(iroot); +#endif + if (!droot) + { + err = -ENOMEM; /* XXX */ + LogFunc(("d_alloc_root failed\n")); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) + fInodePut = false; +#endif + goto fail5; + } + + sb->s_root = droot; + SET_GLOB_INFO(sb, sf_g); + return 0; + +fail5: + sf_done_backing_dev(sf_g); + +fail4: + if (fInodePut) + iput(iroot); + +fail3: + kfree(sf_i->path); + +fail2: + kfree(sf_i); + +fail1: + sf_glob_free(sf_g); + +fail0: + return err; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static struct super_block * +sf_read_super_24(struct super_block *sb, void *data, int flags) +{ + int err; + + TRACE(); + err = sf_read_super_aux(sb, data, flags); + if (err) + return NULL; + + return sb; +} +#endif + +/* this is called when vfs is about to destroy the [inode]. all + resources associated with this [inode] must be cleared here */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) +static void sf_clear_inode(struct inode *inode) +{ + struct sf_inode_info *sf_i; + + TRACE(); + sf_i = GET_INODE_INFO(inode); + if (!sf_i) + return; + + BUG_ON(!sf_i->path); + kfree(sf_i->path); + kfree(sf_i); + SET_INODE_INFO(inode, NULL); +} +#else +static void sf_evict_inode(struct inode *inode) +{ + struct sf_inode_info *sf_i; + + TRACE(); + truncate_inode_pages(&inode->i_data, 0); +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + clear_inode(inode); +# else + end_writeback(inode); +# endif + + sf_i = GET_INODE_INFO(inode); + if (!sf_i) + return; + + BUG_ON(!sf_i->path); + kfree(sf_i->path); + kfree(sf_i); + SET_INODE_INFO(inode, NULL); +} +#endif + +/* this is called by vfs when it wants to populate [inode] with data. + the only thing that is known about inode at this point is its index + hence we can't do anything here, and let lookup/whatever with the + job to properly fill then [inode] */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) +static void sf_read_inode(struct inode *inode) +{ +} +#endif + +/* vfs is done with [sb] (umount called) call [sf_glob_free] to unmap + the folder and free [sf_g] */ +static void sf_put_super(struct super_block *sb) +{ + struct sf_glob_info *sf_g; + + sf_g = GET_GLOB_INFO(sb); + BUG_ON(!sf_g); + sf_done_backing_dev(sf_g); + sf_glob_free(sf_g); +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) +static int sf_statfs(struct super_block *sb, STRUCT_STATFS *stat) +{ + return sf_get_volume_info(sb, stat); +} +#else +static int sf_statfs(struct dentry *dentry, STRUCT_STATFS *stat) +{ + struct super_block *sb = dentry->d_inode->i_sb; + return sf_get_volume_info(sb, stat); +} +#endif + +static int sf_remount_fs(struct super_block *sb, int *flags, char *data) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 23) + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + struct inode *iroot; + SHFLFSOBJINFO fsinfo; + int err; + + sf_g = GET_GLOB_INFO(sb); + BUG_ON(!sf_g); + if (data && data[0] != 0) + { + struct vbsf_mount_info_new *info = + (struct vbsf_mount_info_new *)data; + if ( info->signature[0] == VBSF_MOUNT_SIGNATURE_BYTE_0 + && info->signature[1] == VBSF_MOUNT_SIGNATURE_BYTE_1 + && info->signature[2] == VBSF_MOUNT_SIGNATURE_BYTE_2) + { + sf_g->uid = info->uid; + sf_g->gid = info->gid; + sf_g->ttl = info->ttl; + sf_g->dmode = info->dmode; + sf_g->fmode = info->fmode; + sf_g->dmask = info->dmask; + sf_g->fmask = info->fmask; + } + } + + iroot = ilookup(sb, 0); + if (!iroot) + return -ENOSYS; + + sf_i = GET_INODE_INFO(iroot); + err = sf_stat(__func__, sf_g, sf_i->path, &fsinfo, 0); + BUG_ON(err != 0); + sf_init_inode(sf_g, iroot, &fsinfo); + /*unlock_new_inode(iroot);*/ + return 0; +#else + return -ENOSYS; +#endif +} + +static struct super_operations sf_super_ops = +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) + .clear_inode = sf_clear_inode, +#else + .evict_inode = sf_evict_inode, +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) + .read_inode = sf_read_inode, +#endif + .put_super = sf_put_super, + .statfs = sf_statfs, + .remount_fs = sf_remount_fs +}; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static DECLARE_FSTYPE(vboxsf_fs_type, "vboxsf", sf_read_super_24, 0); +#else +static int +sf_read_super_26(struct super_block *sb, void *data, int flags) +{ + int err; + + TRACE(); + err = sf_read_super_aux(sb, data, flags); + if (err) + printk(KERN_DEBUG "sf_read_super_aux err=%d\n", err); + + return err; +} + +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) +static struct super_block *sf_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data) +{ + TRACE(); + return get_sb_nodev(fs_type, flags, data, sf_read_super_26); +} +# elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) +static int sf_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data, struct vfsmount *mnt) +{ + TRACE(); + return get_sb_nodev(fs_type, flags, data, sf_read_super_26, mnt); +} +# else +static struct dentry *sf_mount(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data) +{ + TRACE(); + return mount_nodev(fs_type, flags, data, sf_read_super_26); +} +# endif + +static struct file_system_type vboxsf_fs_type = +{ + .owner = THIS_MODULE, + .name = "vboxsf", +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) + .get_sb = sf_get_sb, +# else + .mount = sf_mount, +# endif + .kill_sb = kill_anon_super +}; +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int follow_symlinks = 0; +module_param(follow_symlinks, int, 0); +MODULE_PARM_DESC(follow_symlinks, "Let host resolve symlinks rather than showing them"); +#endif + +/* Module initialization/finalization handlers */ +static int __init init(void) +{ + int rcVBox; + int rcRet = 0; + int err; + + TRACE(); + + if (sizeof(struct vbsf_mount_info_new) > PAGE_SIZE) + { + printk(KERN_ERR + "Mount information structure is too large %lu\n" + "Must be less than or equal to %lu\n", + (unsigned long)sizeof (struct vbsf_mount_info_new), + (unsigned long)PAGE_SIZE); + return -EINVAL; + } + + err = register_filesystem(&vboxsf_fs_type); + if (err) + { + LogFunc(("register_filesystem err=%d\n", err)); + return err; + } + + rcVBox = VbglR0SfInit(); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("VbglR0SfInit failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail0; + } + + rcVBox = VbglR0SfConnect(&client_handle); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("VbglR0SfConnect failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail1; + } + + rcVBox = VbglR0SfSetUtf8(&client_handle); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("VbglR0SfSetUtf8 failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail2; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (!follow_symlinks) + { + rcVBox = VbglR0SfSetSymlinks(&client_handle); + if (RT_FAILURE(rcVBox)) + { + printk(KERN_WARNING + "vboxsf: Host unable to show symlinks, rc=%d\n", + rcVBox); + } + } +#endif + + printk(KERN_DEBUG + "vboxsf: Successfully loaded version " VBOX_VERSION_STRING + " (interface " RT_XSTR(VMMDEV_VERSION) ")\n"); + + return 0; + +fail2: + VbglR0SfDisconnect(&client_handle); + +fail1: + VbglR0SfTerm(); + +fail0: + unregister_filesystem(&vboxsf_fs_type); + return rcRet; +} + +static void __exit fini(void) +{ + TRACE(); + + VbglR0SfDisconnect(&client_handle); + VbglR0SfTerm(); + unregister_filesystem(&vboxsf_fs_type); +} + +module_init(init); +module_exit(fini); + +/* C++ hack */ +int __gxx_personality_v0 = 0xdeadbeef; --- linux-4.4.0.orig/ubuntu/vbox/vboxsf/vfsmod.h +++ linux-4.4.0/ubuntu/vbox/vboxsf/vfsmod.h @@ -0,0 +1,165 @@ +/** @file + * vboxsf - VirtualBox Guest Additions for Linux. + */ + +/* + * Copyright (C) 2006-2011 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VFSMOD_H +#define VFSMOD_H + +#define LOG_GROUP LOG_GROUP_SHARED_FOLDERS +#include "the-linux-kernel.h" +#include "version-generated.h" +#include "product-generated.h" +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif + +#include +#include "vbsfmount.h" + +#define DIR_BUFFER_SIZE (16*_1K) + +/* per-shared folder information */ +struct sf_glob_info +{ + VBGLSFMAP map; + struct nls_table *nls; + int ttl; + int uid; + int gid; + int dmode; + int fmode; + int dmask; + int fmask; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + struct backing_dev_info bdi; +#endif +}; + +/* per-inode information */ +struct sf_inode_info +{ + /* which file */ + SHFLSTRING *path; + /* some information was changed, update data on next revalidate */ + int force_restat; + /* directory content changed, update the whole directory on next sf_getdent */ + int force_reread; + /* file structure, only valid between open() and release() */ + struct file *file; + /* handle valid if a file was created with sf_create_aux until it will + * be opened with sf_reg_open() */ + SHFLHANDLE handle; +}; + +struct sf_dir_info +{ + struct list_head info_list; +}; + +struct sf_dir_buf +{ + size_t cEntries; + size_t cbFree; + size_t cbUsed; + void *buf; + struct list_head head; +}; + +struct sf_reg_info +{ + SHFLHANDLE handle; +}; + +/* globals */ +extern VBGLSFCLIENT client_handle; + +/* forward declarations */ +extern struct inode_operations sf_dir_iops; +extern struct inode_operations sf_lnk_iops; +extern struct inode_operations sf_reg_iops; +extern struct file_operations sf_dir_fops; +extern struct file_operations sf_reg_fops; +extern struct dentry_operations sf_dentry_ops; +extern struct address_space_operations sf_reg_aops; + +extern void sf_init_inode(struct sf_glob_info *sf_g, struct inode *inode, + PSHFLFSOBJINFO info); +extern int sf_stat(const char *caller, struct sf_glob_info *sf_g, + SHFLSTRING *path, PSHFLFSOBJINFO result, int ok_to_fail); +extern int sf_inode_revalidate(struct dentry *dentry); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +extern int sf_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *kstat); +extern int sf_setattr(struct dentry *dentry, struct iattr *iattr); +#endif +extern int sf_path_from_dentry(const char *caller, struct sf_glob_info *sf_g, + struct sf_inode_info *sf_i, struct dentry *dentry, + SHFLSTRING **result); +extern int sf_nlscpy(struct sf_glob_info *sf_g, + char *name, size_t name_bound_len, + const unsigned char *utf8_name, size_t utf8_len); +extern void sf_dir_info_free(struct sf_dir_info *p); +extern void sf_dir_info_empty(struct sf_dir_info *p); +extern struct sf_dir_info *sf_dir_info_alloc(void); +extern int sf_dir_read_all(struct sf_glob_info *sf_g, struct sf_inode_info *sf_i, + struct sf_dir_info *sf_d, SHFLHANDLE handle); +extern int sf_init_backing_dev(struct sf_glob_info *sf_g); +extern void sf_done_backing_dev(struct sf_glob_info *sf_g); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# define STRUCT_STATFS struct statfs +#else +# define STRUCT_STATFS struct kstatfs +#endif +int sf_get_volume_info(struct super_block *sb,STRUCT_STATFS *stat); + +#ifdef __cplusplus +# define CMC_API __attribute__ ((cdecl, regparm (0))) +#else +# define CMC_API __attribute__ ((regparm (0))) +#endif + +#define TRACE() LogFunc(("tracepoint\n")) + +/* Following casts are here to prevent assignment of void * to + pointers of arbitrary type */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->u.generic_sbp) +# define SET_GLOB_INFO(sb, sf_g) (sb)->u.generic_sbp = sf_g +#else +# define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->s_fs_info) +# define SET_GLOB_INFO(sb, sf_g) (sb)->s_fs_info = sf_g +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) || defined(KERNEL_FC6) +/* FC6 kernel 2.6.18, vanilla kernel 2.6.19+ */ +# define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->i_private) +# define SET_INODE_INFO(i, sf_i) (i)->i_private = sf_i +#else +/* vanilla kernel up to 2.6.18 */ +# define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->u.generic_ip) +# define SET_INODE_INFO(i, sf_i) (i)->u.generic_ip = sf_i +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) +# define GET_F_DENTRY(f) (f->f_path.dentry) +#else +# define GET_F_DENTRY(f) (f->f_dentry) +#endif + +#endif + --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/Makefile +++ linux-4.4.0/ubuntu/vbox/vboxvideo/Makefile @@ -0,0 +1,57 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# $Id: Makefile.module $ +## @file +# VirtualBox Guest Additions Module Makefile. +# +# (For 2.6.x this file must be 'Makefile'!) +# + +# +# Copyright (C) 2006-2011 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxvideo + +MOD_OBJS = vboxvideo_drm.o + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxvideo),) + MANGLING := $(KBUILD_EXTMOD)/vboxvideo/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif +MOD_CFLAGS = -Wno-declaration-after-statement -fshort-wchar -include $(MANGLING) +MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) +# What on earth is this? +MOD_INCL += $(addprefix -I$(KBUILD_EXTMOD)/vboxvideo,/ /include /r0drv/linux) +# Enterprise Linux 6.5 does not include the drm user API headers with the kernel +# headers. +MOD_INCL += $(foreach inc,$(KERN_INCL) include,\ + $(if $(wildcard $(inc)/linux/utsrelease.h),\ + $(if $(shell grep '"2.6.32.*el6.*"' $(inc)/linux/utsrelease.h),\ + -I/usr/include,),)) +MOD_DEFS := -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \ + -DIN_SUP_R0 -DVBOX -DVBOX_WITH_HGCM -DLOG_TO_BACKDOOR -DIN_MODULE \ + -DIN_GUEST_R0 +# our module does not export any symbol +MOD_DEFS += -DRT_NO_EXPORT_SYMBOL +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS +else + MOD_DEFS += -DRT_ARCH_X86 +endif +MOD_CLEAN = . linux r0drv r0drv/linux + +include $(obj)/Makefile.include.footer + --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/Makefile.include.footer +++ linux-4.4.0/ubuntu/vbox/vboxvideo/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/Makefile.include.header +++ linux-4.4.0/ubuntu/vbox/vboxvideo/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/do_Module.symvers +++ linux-4.4.0/ubuntu/vbox/vboxvideo/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/product-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxvideo/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2016" + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/vboxvideo_drm.c +++ linux-4.4.0/ubuntu/vbox/vboxvideo/vboxvideo_drm.c @@ -0,0 +1,200 @@ +/* $Id: vboxvideo_drm.c $ */ +/** @file + * VirtualBox Additions Linux kernel driver, DRM support + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * tdfx_drv.c -- tdfx driver -*- linux-c -*- + * Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com + * + * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. + * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Rickard E. (Rik) Faith + * Daryll Strauss + * Gareth Hughes + */ + +#include "version-generated.h" + +#include +#include +#include +#include "vboxvideo_drm.h" + +/* This definition and the file-operations-as-pointer change were both added in + * kernel 3.3. All back-ports of the structure change to distribution kernels + * that I have checked also back-ported the definition at the same time. */ +#ifdef DRM_IOCTL_MODE_ADDFB2 +# define DRM_FOPS_AS_POINTER +#endif + +/* The first of these was introduced when drm was generalised to work with + * non-PCI buses, but was removed between 3.15 and 3.16. The second is a + * random definition introduced in the mean-time. */ +#if defined(DRIVER_BUS_PCI) || defined(DRIVER_PRIME) +# define DRM_NEW_BUS_INIT 1 +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) +# ifdef RHEL_RELEASE_CODE +# if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7, 2) +# define DRM_HAVE_DRM_MAP +# endif +# else +# define DRM_HAVE_DRM_MAP +# endif +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) +# define DRM_WANTS_SET_BUSID +#else +# ifdef RHEL_RELEASE_CODE +# if RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 2) +# define DRM_WANTS_SET_BUSID +# endif +# endif +#endif + +static struct pci_device_id pciidlist[] = { + vboxvideo_PCI_IDS +}; + +MODULE_DEVICE_TABLE(pci, pciidlist); + +int vboxvideo_driver_load(struct drm_device * dev, unsigned long flags) +{ + return 0; +} + +#ifdef DRM_FOPS_AS_POINTER +/* since linux-3.3.0-rc1 drm_driver::fops is pointer */ +static struct file_operations driver_fops = +{ + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, +# ifdef DRM_HAVE_DRM_MAP + /* This shouldn't be necessary even for old kernels as there is + * nothing sensible to mmap. But we play safe and keep it for + * legacy reasons. */ + .mmap = drm_mmap, +# endif + .poll = drm_poll, +}; +#endif + +static struct drm_driver driver = +{ + /* .driver_features = DRIVER_USE_MTRR, */ + .load = vboxvideo_driver_load, +#ifdef DRM_WANTS_SET_BUSID + /* If this is missing a warning gets printed to dmesg. We will not + * attempt to make kernels work to which the change (915b4d11b) got back- + * ported, as the problem is only cosmetic. */ + .set_busid = drm_pci_set_busid, +#endif +# ifndef DRM_FOPS_AS_POINTER + .fops = + { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + /* This was changed with Linux 2.6.33 but Fedora backported this + * change to their 2.6.32 kernel. */ +#if defined(DRM_UNLOCKED) + .unlocked_ioctl = drm_ioctl, +#else + .ioctl = drm_ioctl, +#endif + .mmap = drm_mmap, + .poll = drm_poll, + }, +#else /* defined(DRM_FOPS_AS_POINTER) */ + .fops = &driver_fops, +#endif +#ifndef DRM_NEW_BUS_INIT + .pci_driver = + { + .name = DRIVER_NAME, + .id_table = pciidlist, + }, +#endif + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, +}; + +#ifdef DRM_NEW_BUS_INIT +static struct pci_driver pci_driver = +{ + .name = DRIVER_NAME, + .id_table = pciidlist, +}; +#endif + +static int __init vboxvideo_init(void) +{ +#ifndef DRM_NEW_BUS_INIT + return drm_init(&driver); +#else + return drm_pci_init(&driver, &pci_driver); +#endif +} + +static void __exit vboxvideo_exit(void) +{ +#ifndef DRM_NEW_BUS_INIT + drm_exit(&driver); +#else + drm_pci_exit(&driver, &pci_driver); +#endif +} + +module_init(vboxvideo_init); +module_exit(vboxvideo_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING); +#endif +MODULE_LICENSE("GPL and additional rights"); --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/vboxvideo_drm.h +++ linux-4.4.0/ubuntu/vbox/vboxvideo/vboxvideo_drm.h @@ -0,0 +1,71 @@ +/* $Id: vboxvideo_drm.h $ */ +/** @file + * VirtualBox Additions Linux kernel driver, DRM support + */ + +/* + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * tdfx.h -- 3dfx DRM template customization -*- linux-c -*- + * Created: Wed Feb 14 12:32:32 2001 by gareth@valinux.com + * + * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Gareth Hughes + */ + +#ifndef __VBOXVIDEO_H__ +#define __VBOXVIDEO_H__ + +/* General customization: + */ + +#include "product-generated.h" + +#define DRIVER_AUTHOR VBOX_VENDOR + +#define DRIVER_NAME "vboxvideo" +#define DRIVER_DESC VBOX_PRODUCT " Graphics Card" +#define DRIVER_DATE "20090303" + +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 0 +#define DRIVER_PATCHLEVEL 0 + +#define vboxvideo_PCI_IDS \ + {0x80ee, 0xbeef, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ + {0, 0, 0} + +#endif --- linux-4.4.0.orig/ubuntu/vbox/vboxvideo/version-generated.h +++ linux-4.4.0/ubuntu/vbox/vboxvideo/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 14 +#define VBOX_VERSION_STRING_RAW "5.0.14" +#define VBOX_VERSION_STRING "5.0.14_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-4.4.0.orig/zfs/AUTHORS +++ linux-4.4.0/zfs/AUTHORS @@ -0,0 +1,95 @@ +Brian Behlendorf is the principal developer of the ZFS on Linux port. +He works full time as a computer scientist at Lawrence Livermore +National Laboratory on the ZFS and Lustre filesystems. However, +this port would not have been possible without the help of many +others who have contributed their time, effort, and insight. + + Brian Behlendorf + +First and foremost the hard working ZFS developers at Sun/Oracle. +They are responsible for the bulk of the code in this project and +without their efforts there never would have been a ZFS filesystem. + + The ZFS Development Team at Sun/Oracle + +Next all the developers at KQ Infotech who implemented a prototype +ZFS Posix Layer (ZPL). Their implementation provided an excellent +reference for adding the ZPL functionality. + + Anand Mitra + Anurag Agarwal + Neependra Khare + Prasad Joshi + Rohan Puri + Sandip Divekar + Shoaib + Shrirang + +Additionally the following individuals have all made contributions +to the project and deserve to be acknowledged. + + Albert Lee + Alejandro R. Sedeño + Alex Zhuravlev + Alexander Eremin + Alexander Stetsenko + Alexey Shvetsov + Andreas Dilger + Andrew Reid + Andrew Stormont + Andrew Tselischev + Andriy Gapon + Aniruddha Shankar + Bill Pijewski + Chris Dunlap + Chris Dunlop + Chris Siden + Chris Wedgwood + Christian Kohlschütter + Christopher Siden + Craig Sanders + Cyril Plisko + Dan McDonald + Daniel Verite + Darik Horn + Eric Schrock + Etienne Dechamps + Fajar A. Nugraha + Frederik Wessels + Garrett D'Amore + George Wilson + Gordon Ross + Gregor Kopka + Gunnar Beutner + James H + Javen Wu + Jeremy Gill + Jorgen Lundman + KORN Andras + Kyle Fuller + Manuel Amador (Rudd-O) + Martin Matuska + Massimo Maggi + Matthew Ahrens + Michael Martin + Mike Harsch + Ned Bass + Oleg Stepura + P.SCH + Pawel Jakub Dawidek + Prakash Surya + Prasad Joshi + Ricardo M. Correia + Richard Laager + Richard Lowe + Richard Yao + Rohan Puri + Shampavman + Simon Klinkert + Suman Chakravartula + Tim Haley + Turbo Fredriksson + Xin Li + Yuxuan Shui + Zachary Bedell + nordaux --- linux-4.4.0.orig/zfs/COPYRIGHT +++ linux-4.4.0/zfs/COPYRIGHT @@ -0,0 +1,33 @@ +The majority of the code in the ZFS on Linux port comes from OpenSolaris +which has been released under the terms of the CDDL open source license. +This includes the core ZFS code, libavl, libnvpair, libefi, libunicode, +and libutil. The original OpenSolaris source can be downloaded from: + +http://dlc.sun.com/osol/on/downloads/b121/on-src.tar.bz2 + +Files which do not originate from OpenSolaris are noted in the file header +and attributed properly. These exceptions include, but are not limited +to, the vdev_disk.c and zvol.c implementation which are licensed under +the CDDL. + +The zpios test code is originally derived from the Lustre pios test code +which is licensed under the GPLv2. As such the heavily modified zpios +kernel test code also remains licensed under the GPLv2. + +The latest stable and development versions of this port can be downloaded +from the official ZFS on Linux site located at: + +http://zfsonlinux.org/ + +This ZFS on Linux port was produced at the Lawrence Livermore National +Laboratory (LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) +between the U.S. Department of Energy (DOE) and Lawrence Livermore +National Security, LLC (LLNS) for the operation of LLNL. It has been +approved for release under LLNL-CODE-403049. + +Unless otherwise noted, all files in this distribution are released +under the Common Development and Distribution License (CDDL). +Exceptions are noted within the associated source files. See the file +OPENSOLARIS.LICENSE for more information. + +Refer to the git commit log for authoritative copyright attribution. --- linux-4.4.0.orig/zfs/DISCLAIMER +++ linux-4.4.0/zfs/DISCLAIMER @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the United States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file OPENSOLARIS.LICENSE. --- linux-4.4.0.orig/zfs/META +++ linux-4.4.0/zfs/META @@ -0,0 +1,8 @@ +Meta: 1 +Name: zfs +Branch: 1.0 +Version: 0.6.5.4 +Release: 0ubuntu2 +Release-Tags: relext +License: CDDL +Author: OpenZFS on Linux --- linux-4.4.0.orig/zfs/Makefile.am +++ linux-4.4.0/zfs/Makefile.am @@ -0,0 +1,70 @@ +ACLOCAL_AMFLAGS = -I config + +include config/rpm.am +include config/deb.am +include config/tgz.am + +SUBDIRS = include rpm +if CONFIG_USER +SUBDIRS += udev etc man scripts lib cmd contrib +endif +if CONFIG_KERNEL +SUBDIRS += module + +extradir = @prefix@/src/zfs-$(VERSION) +extra_HEADERS = zfs.release.in zfs_config.h.in + +kerneldir = @prefix@/src/zfs-$(VERSION)/$(LINUX_VERSION) +nodist_kernel_HEADERS = zfs.release zfs_config.h module/$(LINUX_SYMBOLS) +endif + +AUTOMAKE_OPTIONS = foreign +EXTRA_DIST = autogen.sh copy-builtin +EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am +EXTRA_DIST += META DISCLAIMER COPYRIGHT README.markdown OPENSOLARIS.LICENSE + +distclean-local:: + -$(RM) -R autom4te*.cache + -find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ + -o -name .pc -o -name .hg -o -name .git \) -prune -o \ + \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ + -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ + -o -name '.*.rej' -o -name '.script-config' -o -size 0 \ + -o -name '*%' -o -name '.*.cmd' -o -name 'core' \ + -o -name 'Makefile' -o -name 'Module.symvers' \ + -o -name '*.order' -o -name '*.markers' \) \ + -type f -print | xargs $(RM) + +dist-hook: + sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ + $(distdir)/META + +checkstyle: cstyle shellcheck + +cstyle: + @find ${top_srcdir} -name '*.[hc]' ! -name 'zfs_config.*' \ + ! -name '*.mod.c' -type f -exec scripts/cstyle.pl {} \+ + +shellcheck: + @if type shellcheck > /dev/null 2>&1; then \ + (find ${top_srcdir} -type f -name '*.sh.in' -o -type f \ + -name '*.sh'; find etc/init.d/zfs*.in -type f) | \ + grep -v 'zfs-script-config' | \ + while read file; do \ + shellcheck --format gcc "$$file"; \ + done; \ + fi + +ctags: + $(RM) tags + find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags + +etags: + $(RM) TAGS + find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a + +tags: ctags etags + +pkg: @DEFAULT_PACKAGE@ +pkg-kmod: @DEFAULT_PACKAGE@-kmod +pkg-utils: @DEFAULT_PACKAGE@-utils --- linux-4.4.0.orig/zfs/Makefile.in +++ linux-4.4.0/zfs/Makefile.in @@ -0,0 +1,1305 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +############################################################################### +# Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for RPM packages. +############################################################################### + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@CONFIG_USER_TRUE@am__append_1 = udev etc man scripts lib cmd contrib +@CONFIG_KERNEL_TRUE@am__append_2 = module +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__extra_HEADERS_DIST) \ + $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = zfs_config.h +CONFIG_CLEAN_FILES = module/Makefile module/avl/Makefile \ + module/nvpair/Makefile module/unicode/Makefile \ + module/zcommon/Makefile module/zfs/Makefile \ + module/zpios/Makefile zfs-script-config.sh zfs.release +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_HEADERS_DIST = zfs.release.in zfs_config.h.in +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(extradir)" "$(DESTDIR)$(kerneldir)" +HEADERS = $(extra_HEADERS) $(nodist_kernel_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)zfs_config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = include rpm udev etc man scripts lib cmd contrib module +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config/deb.am \ + $(srcdir)/config/rpm.am $(srcdir)/config/tgz.am \ + $(srcdir)/zfs-script-config.sh.in $(srcdir)/zfs.release.in \ + $(srcdir)/zfs_config.h.in $(top_srcdir)/config/compile \ + $(top_srcdir)/config/config.guess \ + $(top_srcdir)/config/config.sub \ + $(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \ + $(top_srcdir)/config/missing $(top_srcdir)/module/Makefile.in \ + $(top_srcdir)/module/avl/Makefile.in \ + $(top_srcdir)/module/nvpair/Makefile.in \ + $(top_srcdir)/module/unicode/Makefile.in \ + $(top_srcdir)/module/zcommon/Makefile.in \ + $(top_srcdir)/module/zfs/Makefile.in \ + $(top_srcdir)/module/zpios/Makefile.in AUTHORS config/compile \ + config/config.guess config/config.sub config/install-sh \ + config/ltmain.sh config/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +ACLOCAL_AMFLAGS = -I config +SUBDIRS = include rpm $(am__append_1) $(am__append_2) +@CONFIG_KERNEL_TRUE@extradir = @prefix@/src/zfs-$(VERSION) +@CONFIG_KERNEL_TRUE@extra_HEADERS = zfs.release.in zfs_config.h.in +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/$(LINUX_VERSION) +@CONFIG_KERNEL_TRUE@nodist_kernel_HEADERS = zfs.release zfs_config.h module/$(LINUX_SYMBOLS) +AUTOMAKE_OPTIONS = foreign +EXTRA_DIST = autogen.sh copy-builtin config/config.awk config/rpm.am \ + config/deb.am config/tgz.am META DISCLAIMER COPYRIGHT \ + README.markdown OPENSOLARIS.LICENSE +all: zfs_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/config/rpm.am $(srcdir)/config/deb.am $(srcdir)/config/tgz.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/config/rpm.am $(srcdir)/config/deb.am $(srcdir)/config/tgz.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +zfs_config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/zfs_config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status zfs_config.h +$(srcdir)/zfs_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f zfs_config.h stamp-h1 +module/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/avl/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/avl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/nvpair/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/nvpair/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/unicode/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/unicode/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/zcommon/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/zcommon/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/zfs/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/zfs/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +module/zpios/Makefile: $(top_builddir)/config.status $(top_srcdir)/module/zpios/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +zfs-script-config.sh: $(top_builddir)/config.status $(srcdir)/zfs-script-config.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +zfs.release: $(top_builddir)/config.status $(srcdir)/zfs.release.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-extraHEADERS: $(extra_HEADERS) + @$(NORMAL_INSTALL) + @list='$(extra_HEADERS)'; test -n "$(extradir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(extradir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(extradir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(extradir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(extradir)" || exit $$?; \ + done + +uninstall-extraHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(extra_HEADERS)'; test -n "$(extradir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(extradir)'; $(am__uninstall_files_from_dir) +install-nodist_kernelHEADERS: $(nodist_kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-nodist_kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) zfs_config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(extradir)" "$(DESTDIR)$(kerneldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-extraHEADERS install-nodist_kernelHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-extraHEADERS uninstall-nodist_kernelHEADERS + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-local distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am \ + install-extraHEADERS install-html install-html-am install-info \ + install-info-am install-man install-nodist_kernelHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-extraHEADERS uninstall-nodist_kernelHEADERS + +.PRECIOUS: Makefile + + +srpm-kmod: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common + +srpm-dkms: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common + +srpm-utils: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common + +srpm: srpm-kmod srpm-dkms srpm-utils +srpms: srpm-kmod srpm-dkms srpm-utils + +rpm-kmod: srpm-kmod + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common + +rpm-dkms: srpm-dkms + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common + +rpm-utils: srpm-utils + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common + +rpm: rpm-kmod rpm-dkms rpm-utils +rpms: rpm-kmod rpm-dkms rpm-utils + +rpm-local: + @(if test "${HAVE_RPMBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${RPMBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${RPMBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + mkdir -p $(rpmbuild)/TMP && \ + mkdir -p $(rpmbuild)/BUILD && \ + mkdir -p $(rpmbuild)/RPMS && \ + mkdir -p $(rpmbuild)/SRPMS && \ + mkdir -p $(rpmbuild)/SPECS && \ + cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \ + mkdir -p $(rpmbuild)/SOURCES && \ + cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ + cp $(distdir).tar.gz $(rpmbuild)/SOURCES) + +srpm-common: dist + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C $(RPMBUILD) \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ + cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ + rm -R $$rpmbuild) + +rpm-common: + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C ${RPMBUILD} \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) --rebuild $$rpmpkg || exit 1; \ + cp $$rpmbuild/RPMS/*/* . || exit 1; \ + rm -R $$rpmbuild) +deb-local: + @(if test "${HAVE_DPKGBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${DPKGBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${DPKGBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +deb-kmod: deb-local rpm-kmod +@CONFIG_KERNEL_TRUE@ name=${PACKAGE}; \ +@CONFIG_KERNEL_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_KERNEL_TRUE@ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_KERNEL_TRUE@ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ +@CONFIG_KERNEL_TRUE@ fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ +@CONFIG_KERNEL_TRUE@ $(RM) $$pkg1 + +deb-utils: deb-local rpm-utils +@CONFIG_USER_TRUE@ name=${PACKAGE}; \ +@CONFIG_USER_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_USER_TRUE@ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_USER_TRUE@ pkg1=$${name}-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg2=libnvpair1-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg3=libuutil1-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg4=libzfs2-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg5=libzpool2-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg6=libzfs2-devel-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg7=$${name}-test-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg8=$${name}-dracut-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg9=$${name}-initramfs-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ fakeroot $(ALIEN) --bump=0 --scripts --to-deb \ +@CONFIG_USER_TRUE@ $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ +@CONFIG_USER_TRUE@ $$pkg8 $$pkg9; +@CONFIG_USER_TRUE@ $(RM) $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ +@CONFIG_USER_TRUE@ $$pkg8 $$pkg9; + +deb: deb-kmod deb-utils +tgz-local: + @(if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +tgz-kmod: tgz-local rpm-kmod +@CONFIG_KERNEL_TRUE@ name=${PACKAGE}; \ +@CONFIG_KERNEL_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_KERNEL_TRUE@ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_KERNEL_TRUE@ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ +@CONFIG_KERNEL_TRUE@ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ +@CONFIG_KERNEL_TRUE@ $(RM) $$pkg1 + +tgz-utils: tgz-local rpm-utils +@CONFIG_USER_TRUE@ name=${PACKAGE}; \ +@CONFIG_USER_TRUE@ version=${VERSION}-${RELEASE}; \ +@CONFIG_USER_TRUE@ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ +@CONFIG_USER_TRUE@ pkg1=$${name}-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg2=$${name}-devel-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ pkg3=$${name}-test-$${version}.$${arch}.rpm; \ +@CONFIG_USER_TRUE@ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1 $$pkg2 $$pkg3; \ +@CONFIG_USER_TRUE@ $(RM) $$pkg1 $$pkg2 $$pkg3 + +tgz: tgz-kmod tgz-utils + +distclean-local:: + -$(RM) -R autom4te*.cache + -find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ + -o -name .pc -o -name .hg -o -name .git \) -prune -o \ + \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ + -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ + -o -name '.*.rej' -o -name '.script-config' -o -size 0 \ + -o -name '*%' -o -name '.*.cmd' -o -name 'core' \ + -o -name 'Makefile' -o -name 'Module.symvers' \ + -o -name '*.order' -o -name '*.markers' \) \ + -type f -print | xargs $(RM) + +dist-hook: + sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ + $(distdir)/META + +checkstyle: cstyle shellcheck + +cstyle: + @find ${top_srcdir} -name '*.[hc]' ! -name 'zfs_config.*' \ + ! -name '*.mod.c' -type f -exec scripts/cstyle.pl {} \+ + +shellcheck: + @if type shellcheck > /dev/null 2>&1; then \ + (find ${top_srcdir} -type f -name '*.sh.in' -o -type f \ + -name '*.sh'; find etc/init.d/zfs*.in -type f) | \ + grep -v 'zfs-script-config' | \ + while read file; do \ + shellcheck --format gcc "$$file"; \ + done; \ + fi + +ctags: + $(RM) tags + find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags + +etags: + $(RM) TAGS + find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a + +tags: ctags etags + +pkg: @DEFAULT_PACKAGE@ +pkg-kmod: @DEFAULT_PACKAGE@-kmod +pkg-utils: @DEFAULT_PACKAGE@-utils + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/OPENSOLARIS.LICENSE +++ linux-4.4.0/zfs/OPENSOLARIS.LICENSE @@ -0,0 +1,384 @@ +Unless otherwise noted, all files in this distribution are released +under the Common Development and Distribution License (CDDL). +Exceptions are noted within the associated source files. + +-------------------------------------------------------------------- + + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 + +1. Definitions. + + 1.1. "Contributor" means each individual or entity that creates + or contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Software, prior Modifications used by a Contributor (if any), + and the Modifications made by that particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or (b) + Modifications, or (c) the combination of files containing + Original Software with files containing Modifications, in + each case including portions thereof. + + 1.4. "Executable" means the Covered Software in any form other + than Source Code. + + 1.5. "Initial Developer" means the individual or entity that first + makes Original Software available under this License. + + 1.6. "Larger Work" means a work which combines Covered Software or + portions thereof with code not governed by the terms of this + License. + + 1.7. "License" means this document. + + 1.8. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed + herein. + + 1.9. "Modifications" means the Source Code and Executable form of + any of the following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original + Software or previous Modifications; + + B. Any new file that contains any part of the Original + Software or previous Modifications; or + + C. Any new file that is contributed or otherwise made + available under the terms of this License. + + 1.10. "Original Software" means the Source Code and Executable + form of computer software code that is originally released + under this License. + + 1.11. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, + process, and apparatus claims, in any patent Licensable by + grantor. + + 1.12. "Source Code" means (a) the common form of computer software + code in which modifications are made and (b) associated + documentation included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms + of, this License. For legal entities, "You" includes any + entity which controls, is controlled by, or is under common + control with You. For purposes of this definition, + "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty + percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, the Initial + Developer hereby grants You a world-wide, royalty-free, + non-exclusive license: + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer, to use, + reproduce, modify, display, perform, sublicense and + distribute the Original Software (or portions thereof), + with or without Modifications, and/or as part of a Larger + Work; and + + (b) under Patent Claims infringed by the making, using or + selling of Original Software, to make, have made, use, + practice, sell, and offer for sale, and/or otherwise + dispose of the Original Software (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are + effective on the date Initial Developer first distributes + or otherwise makes the Original Software available to a + third party under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: (1) for code that You delete from the Original + Software, or (2) for infringements caused by: (i) the + modification of the Original Software, or (ii) the + combination of the Original Software with other software + or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, each + Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor to use, reproduce, + modify, display, perform, sublicense and distribute the + Modifications created by such Contributor (or portions + thereof), either on an unmodified basis, with other + Modifications, as Covered Software and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either + alone and/or in combination with its Contributor Version + (or portions of such combination), to make, use, sell, + offer for sale, have made, and/or otherwise dispose of: + (1) Modifications made by that Contributor (or portions + thereof); and (2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions + of such combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first distributes or + otherwise makes the Modifications available to a third + party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: (1) for any code that Contributor has deleted + from the Contributor Version; (2) for infringements caused + by: (i) third party modifications of Contributor Version, + or (ii) the combination of Modifications made by that + Contributor with other software (except as part of the + Contributor Version) or other devices; or (3) under Patent + Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make + available in Executable form must also be made available in Source + Code form and that Source Code form must be distributed only under + the terms of this License. You must include a copy of this + License with every copy of the Source Code form of the Covered + Software You distribute or otherwise make available. You must + inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code + form in a reasonable manner on or through a medium customarily + used for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You contribute are + governed by the terms of this License. You represent that You + believe Your Modifications are Your original creation(s) and/or + You have sufficient rights to grant the rights conveyed by this + License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications that + identifies You as the Contributor of the Modification. You may + not remove or alter any copyright, patent or trademark notices + contained within the Covered Software, or any notices of licensing + or any descriptive text giving attribution to any Contributor or + the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in + Source Code form that alters or restricts the applicable version + of this License or the recipients' rights hereunder. You may + choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of + Covered Software. However, you may do so only on Your own behalf, + and not on behalf of the Initial Developer or any Contributor. + You must make it absolutely clear that any such warranty, support, + indemnity or liability obligation is offered by You alone, and You + hereby agree to indemnify the Initial Developer and every + Contributor for any liability incurred by the Initial Developer or + such Contributor as a result of warranty, support, indemnity or + liability terms You offer. + + 3.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software + under the terms of this License or under the terms of a license of + Your choice, which may contain terms different from this License, + provided that You are in compliance with the terms of this License + and that the license for the Executable form does not attempt to + limit or alter the recipient's rights in the Source Code form from + the rights set forth in this License. If You distribute the + Covered Software in Executable form under a different license, You + must make it absolutely clear that any terms which differ from + this License are offered by You alone, not by the Initial + Developer or Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred + by the Initial Developer or such Contributor as a result of any + such terms You offer. + + 3.6. Larger Works. + + You may create a Larger Work by combining Covered Software with + other code not governed by the terms of this License and + distribute the Larger Work as a single product. In such a case, + You must make sure the requirements of this License are fulfilled + for the Covered Software. + +4. Versions of the License. + + 4.1. New Versions. + + Sun Microsystems, Inc. is the initial license steward and may + publish revised and/or new versions of this License from time to + time. Each version will be given a distinguishing version number. + Except as provided in Section 4.3, no one other than the license + steward has the right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the + Covered Software available under the terms of the version of the + License under which You originally received the Covered Software. + If the Initial Developer includes a notice in the Original + Software prohibiting it from being distributed or otherwise made + available under any subsequent version of the License, You must + distribute and make the Covered Software available under the terms + of the version of the License under which You originally received + the Covered Software. Otherwise, You may also choose to use, + distribute or otherwise make the Covered Software available under + the terms of any subsequent version of the License published by + the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new + license for Your Original Software, You may create and use a + modified version of this License if You: (a) rename the license + and remove any references to the name of the license steward + (except to note that the license differs from this License); and + (b) otherwise make it clear that the license contains terms which + differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" + BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, + INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED + SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR + PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY + COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE + INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY + NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF + WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS + DISCLAIMER. + +6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to + cure such breach within 30 days of becoming aware of the breach. + Provisions which, by their nature, must remain in effect beyond + the termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or a + Contributor (the Initial Developer or Contributor against whom You + assert such claim is referred to as "Participant") alleging that + the Participant Software (meaning the Contributor Version where + the Participant is a Contributor or the Original Software where + the Participant is the Initial Developer) directly or indirectly + infringes any patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial Developer (if + the Initial Developer is not the Participant) and all Contributors + under Sections 2.1 and/or 2.2 of this License shall, upon 60 days + notice from Participant terminate prospectively and automatically + at the expiration of such 60 day notice period, unless if within + such 60 day period You withdraw Your claim with respect to the + Participant Software against such Participant either unilaterally + or pursuant to a written agreement with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, + all end user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE + INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF + COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE + LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK + STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL + INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO + NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR + CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT + APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is + defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial + computer software" (as that term is defined at 48 + C.F.R. 252.227-7014(a)(1)) and "commercial computer software + documentation" as such terms are used in 48 C.F.R. 12.212 + (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 + C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all + U.S. Government End Users acquire Covered Software with only those + rights set forth herein. This U.S. Government Rights clause is in + lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software + under this License. + +9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed + by the law of the jurisdiction specified in a notice contained + within the Original Software (except to the extent applicable law, + if any, provides otherwise), excluding such jurisdiction's + conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located + in the jurisdiction and venue specified in a notice contained + within the Original Software, with the losing party responsible + for costs, including, without limitation, court costs and + reasonable attorneys' fees and expenses. The application of the + United Nations Convention on Contracts for the International Sale + of Goods is expressly excluded. Any law or regulation which + provides that the language of a contract shall be construed + against the drafter shall not apply to this License. You agree + that You alone are responsible for compliance with the United + States export administration regulations (and the export control + laws and regulation of any other countries) when You use, + distribute or otherwise make available any Covered Software. + +10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or + indirectly, out of its utilization of rights under this License + and You agree to work with Initial Developer and Contributors to + distribute such responsibility on an equitable basis. Nothing + herein is intended or shall be deemed to constitute any admission + of liability. + +-------------------------------------------------------------------- + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND +DISTRIBUTION LICENSE (CDDL) + +For Covered Software in this distribution, this License shall +be governed by the laws of the State of California (excluding +conflict-of-law provisions). + +Any litigation relating to this License shall be subject to the +jurisdiction of the Federal Courts of the Northern District of +California and the state courts of the State of California, with +venue lying in Santa Clara County, California. --- linux-4.4.0.orig/zfs/README.markdown +++ linux-4.4.0/zfs/README.markdown @@ -0,0 +1,10 @@ +Native ZFS for Linux! + +ZFS is an advanced file system and volume manager which was originally +developed for Solaris and is now maintained by the Illumos community. + +ZFS on Linux, which is also known as ZoL, is currently feature complete. It +includes fully functional and stable SPA, DMU, ZVOL, and ZPL layers. + +Full documentation for installing ZoL on your favorite Linux distribution can +be found at: --- linux-4.4.0.orig/zfs/aclocal.m4 +++ linux-4.4.0/zfs/aclocal.m4 @@ -0,0 +1,1295 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([config/always-no-bool-compare.m4]) +m4_include([config/always-no-unused-but-set-variable.m4]) +m4_include([config/dkms.m4]) +m4_include([config/kernel-acl.m4]) +m4_include([config/kernel-automount.m4]) +m4_include([config/kernel-bdev-block-device-operations.m4]) +m4_include([config/kernel-bdev-logical-size.m4]) +m4_include([config/kernel-bdev-physical-size.m4]) +m4_include([config/kernel-bdi-setup-and-register.m4]) +m4_include([config/kernel-bio-bvec-iter.m4]) +m4_include([config/kernel-bio-end-io-t-args.m4]) +m4_include([config/kernel-bio-failfast.m4]) +m4_include([config/kernel-bio-rw-barrier.m4]) +m4_include([config/kernel-bio-rw-discard.m4]) +m4_include([config/kernel-blk-queue-flush.m4]) +m4_include([config/kernel-blk-queue-max-hw-sectors.m4]) +m4_include([config/kernel-blk-queue-max-segments.m4]) +m4_include([config/kernel-blkdev-get-by-path.m4]) +m4_include([config/kernel-blkdev-get.m4]) +m4_include([config/kernel-block-device-operations-release-void.m4]) +m4_include([config/kernel-check-disk-size-change.m4]) +m4_include([config/kernel-clear-inode.m4]) +m4_include([config/kernel-commit-metadata.m4]) +m4_include([config/kernel-create-nameidata.m4]) +m4_include([config/kernel-current_bio_tail.m4]) +m4_include([config/kernel-d-make-root.m4]) +m4_include([config/kernel-d-obtain-alias.m4]) +m4_include([config/kernel-d-prune-aliases.m4]) +m4_include([config/kernel-declare-event-class.m4]) +m4_include([config/kernel-dentry-operations.m4]) +m4_include([config/kernel-dirty-inode.m4]) +m4_include([config/kernel-discard-granularity.m4]) +m4_include([config/kernel-elevator-change.m4]) +m4_include([config/kernel-encode-fh-inode.m4]) +m4_include([config/kernel-evict-inode.m4]) +m4_include([config/kernel-fallocate.m4]) +m4_include([config/kernel-file-inode.m4]) +m4_include([config/kernel-fmode-t.m4]) +m4_include([config/kernel-follow-down-one.m4]) +m4_include([config/kernel-follow-link-nameidata.m4]) +m4_include([config/kernel-fsync.m4]) +m4_include([config/kernel-generic_io_acct.m4]) +m4_include([config/kernel-get-disk-ro.m4]) +m4_include([config/kernel-get-gendisk.m4]) +m4_include([config/kernel-insert-inode-locked.m4]) +m4_include([config/kernel-invalidate-bdev-args.m4]) +m4_include([config/kernel-is_owner_or_cap.m4]) +m4_include([config/kernel-kmap-atomic-args.m4]) +m4_include([config/kernel-kobj-name-len.m4]) +m4_include([config/kernel-lookup-bdev.m4]) +m4_include([config/kernel-lookup-nameidata.m4]) +m4_include([config/kernel-lseek-execute.m4]) +m4_include([config/kernel-mk-request-fn.m4]) +m4_include([config/kernel-mkdir-umode-t.m4]) +m4_include([config/kernel-mount-nodev.m4]) +m4_include([config/kernel-open-bdev-exclusive.m4]) +m4_include([config/kernel-put-link-nameidata.m4]) +m4_include([config/kernel-security-inode-init.m4]) +m4_include([config/kernel-set-nlink.m4]) +m4_include([config/kernel-sget-args.m4]) +m4_include([config/kernel-show-options.m4]) +m4_include([config/kernel-shrink.m4]) +m4_include([config/kernel-truncate-range.m4]) +m4_include([config/kernel-truncate-setsize.m4]) +m4_include([config/kernel-vfs-iterate.m4]) +m4_include([config/kernel-vfs-rw-iterate.m4]) +m4_include([config/kernel-xattr-handler.m4]) +m4_include([config/kernel.m4]) +m4_include([config/libtool.m4]) +m4_include([config/ltoptions.m4]) +m4_include([config/ltsugar.m4]) +m4_include([config/ltversion.m4]) +m4_include([config/lt~obsolete.m4]) +m4_include([config/mount-helper.m4]) +m4_include([config/user-arch.m4]) +m4_include([config/user-dracut.m4]) +m4_include([config/user-frame-larger-than.m4]) +m4_include([config/user-libblkid.m4]) +m4_include([config/user-libuuid.m4]) +m4_include([config/user-runstatedir.m4]) +m4_include([config/user-systemd.m4]) +m4_include([config/user-sysvinit.m4]) +m4_include([config/user-udev.m4]) +m4_include([config/user-zlib.m4]) +m4_include([config/user.m4]) +m4_include([config/zfs-build.m4]) +m4_include([config/zfs-meta.m4]) --- linux-4.4.0.orig/zfs/autogen.sh +++ linux-4.4.0/zfs/autogen.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +autoreconf -fiv +rm -Rf autom4te.cache --- linux-4.4.0.orig/zfs/cmd/Makefile.in +++ linux-4.4.0/zfs/cmd/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/arc_summary/Makefile.in +++ linux-4.4.0/zfs/cmd/arc_summary/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/arcstat/Makefile.in +++ linux-4.4.0/zfs/cmd/arcstat/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/dbufstat/Makefile.in +++ linux-4.4.0/zfs/cmd/dbufstat/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/fsck_zfs/Makefile.in +++ linux-4.4.0/zfs/cmd/fsck_zfs/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/mount_zfs/Makefile.in +++ linux-4.4.0/zfs/cmd/mount_zfs/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/vdev_id/Makefile.in +++ linux-4.4.0/zfs/cmd/vdev_id/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zdb/Makefile.in +++ linux-4.4.0/zfs/cmd/zdb/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zed/Makefile.in +++ linux-4.4.0/zfs/cmd/zed/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zfs/Makefile.in +++ linux-4.4.0/zfs/cmd/zfs/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zhack/Makefile.in +++ linux-4.4.0/zfs/cmd/zhack/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zinject/Makefile.in +++ linux-4.4.0/zfs/cmd/zinject/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zpios/Makefile.in +++ linux-4.4.0/zfs/cmd/zpios/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zpool/Makefile.in +++ linux-4.4.0/zfs/cmd/zpool/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zstreamdump/Makefile.in +++ linux-4.4.0/zfs/cmd/zstreamdump/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/ztest/Makefile.in +++ linux-4.4.0/zfs/cmd/ztest/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/cmd/zvol_id/Makefile.in +++ linux-4.4.0/zfs/cmd/zvol_id/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/config/Rules.am +++ linux-4.4.0/zfs/config/Rules.am @@ -0,0 +1,14 @@ +DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h + +AM_LIBTOOLFLAGS = --silent +AM_CFLAGS = ${DEBUG_CFLAGS} -Wall -Wstrict-prototypes +AM_CFLAGS += ${NO_UNUSED_BUT_SET_VARIABLE} +AM_CFLAGS += ${NO_BOOL_COMPARE} +AM_CFLAGS += -fno-strict-aliasing +AM_CPPFLAGS = -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT +AM_CPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 +AM_CPPFLAGS += -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" +AM_CPPFLAGS += -DLIBEXECDIR=\"$(libexecdir)\" +AM_CPPFLAGS += -DRUNSTATEDIR=\"$(runstatedir)\" +AM_CPPFLAGS += -DSBINDIR=\"$(sbindir)\" +AM_CPPFLAGS += -DSYSCONFDIR=\"$(sysconfdir)\" --- linux-4.4.0.orig/zfs/config/always-no-bool-compare.m4 +++ linux-4.4.0/zfs/config/always-no-bool-compare.m4 @@ -0,0 +1,27 @@ +dnl # +dnl # Check if gcc supports -Wno-bool-compare option. +dnl # +dnl # We actually invoke gcc with the -Wbool-compare option +dnl # and infer the 'no-' version does or doesn't exist based upon +dnl # the results. This is required because when checking any of +dnl # no- prefixed options gcc always returns success. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE], [ + AC_MSG_CHECKING([for -Wno-bool-compare support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wbool-compare" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], + [ + NO_BOOL_COMPARE=-Wno-bool-compare + AC_MSG_RESULT([yes]) + ], + [ + NO_BOOL_COMPARE= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_BOOL_COMPARE]) +]) --- linux-4.4.0.orig/zfs/config/always-no-unused-but-set-variable.m4 +++ linux-4.4.0/zfs/config/always-no-unused-but-set-variable.m4 @@ -0,0 +1,27 @@ +dnl # +dnl # Check if gcc supports -Wno-unused-but-set-variable option. +dnl # +dnl # We actually invoke gcc with the -Wunused-but-set-variable option +dnl # and infer the 'no-' version does or doesn't exist based upon +dnl # the results. This is required because when checking any of +dnl # no- prefixed options gcc always returns success. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE], [ + AC_MSG_CHECKING([for -Wno-unused-but-set-variable support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wunused-but-set-variable" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], + [ + NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable + AC_MSG_RESULT([yes]) + ], + [ + NO_UNUSED_BUT_SET_VARIABLE= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE]) +]) --- linux-4.4.0.orig/zfs/config/compile +++ linux-4.4.0/zfs/config/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/zfs/config/config.awk +++ linux-4.4.0/zfs/config/config.awk @@ -0,0 +1,15 @@ +# Remove default preprocessor define's from config.h +# PACKAGE +# PACKAGE_BUGREPORT +# PACKAGE_NAME +# PACKAGE_STRING +# PACKAGE_TARNAME +# PACKAGE_VERSION +# STDC_HEADERS +# VERSION + +BEGIN { RS = "" ; FS = "\n" } \ + !/.#define PACKAGE./ && \ + !/.#define VERSION./ && \ + !/.#define STDC_HEADERS./ \ + { print $0"\n" } --- linux-4.4.0.orig/zfs/config/config.guess +++ linux-4.4.0/zfs/config/config.guess @@ -0,0 +1,1441 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: --- linux-4.4.0.orig/zfs/config/config.sub +++ linux-4.4.0/zfs/config/config.sub @@ -0,0 +1,1813 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: --- linux-4.4.0.orig/zfs/config/deb.am +++ linux-4.4.0/zfs/config/deb.am @@ -0,0 +1,48 @@ +deb-local: + @(if test "${HAVE_DPKGBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${DPKGBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${DPKGBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +deb-kmod: deb-local rpm-kmod +if CONFIG_KERNEL + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --bump=0 --scripts --to-deb $$pkg1; \ + $(RM) $$pkg1 +endif + +deb-utils: deb-local rpm-utils +if CONFIG_USER + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + pkg2=libnvpair1-$${version}.$${arch}.rpm; \ + pkg3=libuutil1-$${version}.$${arch}.rpm; \ + pkg4=libzfs2-$${version}.$${arch}.rpm; \ + pkg5=libzpool2-$${version}.$${arch}.rpm; \ + pkg6=libzfs2-devel-$${version}.$${arch}.rpm; \ + pkg7=$${name}-test-$${version}.$${arch}.rpm; \ + pkg8=$${name}-dracut-$${version}.$${arch}.rpm; \ + pkg9=$${name}-initramfs-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --bump=0 --scripts --to-deb \ + $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ + $$pkg8 $$pkg9; + $(RM) $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ + $$pkg8 $$pkg9; +endif + +deb: deb-kmod deb-utils --- linux-4.4.0.orig/zfs/config/depcomp +++ linux-4.4.0/zfs/config/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/zfs/config/dkms.m4 +++ linux-4.4.0/zfs/config/dkms.m4 @@ -0,0 +1,14 @@ +dnl # +dnl # Prevent manual building in DKMS source tree. +dnl # +AC_DEFUN([ZFS_AC_DKMS_INHIBIT], [ + AC_MSG_CHECKING([for dkms.conf file]) + AS_IF([test -e dkms.conf], [ + AC_MSG_ERROR([ + *** ZFS should not be manually built in the DKMS source tree. + *** Remove all ZFS packages before compiling the ZoL sources. + *** Running "make install" breaks ZFS packages.]) + ], [ + AC_MSG_RESULT([not found]) + ]) +]) --- linux-4.4.0.orig/zfs/config/install-sh +++ linux-4.4.0/zfs/config/install-sh @@ -0,0 +1,508 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2014-09-12.12; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # $RANDOM is not portable (e.g. dash); use it when possible to + # lower collision chance + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/zfs/config/kernel-acl.m4 +++ linux-4.4.0/zfs/config/kernel-acl.m4 @@ -0,0 +1,265 @@ +dnl # +dnl # Check if posix_acl_release can be used from a ZFS_META_LICENSED +dnl # module. The is_owner_or_cap macro was replaced by +dnl # inode_owner_or_capable +dnl # +AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_RELEASE], [ + AC_MSG_CHECKING([whether posix_acl_release() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + #include + ],[ + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_RELEASE, 1, + [posix_acl_release() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING([whether posix_acl_release() is GPL-only]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + ],[ + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_RELEASE_GPL_ONLY, 1, + [posix_acl_release() is GPL-only]) + ]) +]) + +dnl # +dnl # 3.1 API change, +dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod() +dnl # was introduced to replace it. +dnl # +dnl # 3.14 API change, +dnl # posix_acl_chmod() is changed to __posix_acl_chmod() +dnl # +AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [ + AC_MSG_CHECKING([whether posix_acl_chmod exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + posix_acl_chmod(NULL, 0, 0) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_CHMOD, 1, [posix_acl_chmod() exists]) + ],[ + AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING([whether __posix_acl_chmod exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + __posix_acl_chmod(NULL, 0, 0) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE___POSIX_ACL_CHMOD, 1, [__posix_acl_chmod() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.30 API change, +dnl # caching of ACL into the inode was added in this version. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CACHING], [ + AC_MSG_CHECKING([whether inode has i_acl and i_default_acl]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode ino; + ino.i_acl = NULL; + ino.i_default_acl = NULL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_CACHING, 1, + [inode contains i_acl and i_default_acl]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.1 API change, +dnl # posix_acl_equiv_mode now wants an umode_t* instead of a mode_t* +dnl # +AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T], [ + AC_MSG_CHECKING([whether posix_acl_equiv_mode() wants umode_t]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + umode_t tmp; + posix_acl_equiv_mode(NULL,&tmp); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T, 1, + [ posix_acl_equiv_mode wants umode_t*]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.27 API change, +dnl # Check if inode_operations contains the function permission +dnl # and expects the nameidata structure to have been removed. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION], [ + AC_MSG_CHECKING([whether iops->permission() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int permission_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PERMISSION, 1, [iops->permission() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.26 API change, +dnl # Check if inode_operations contains the function permission +dnl # and expects the nameidata structure to be passed. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA], [ + AC_MSG_CHECKING([whether iops->permission() wants nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int permission_fn(struct inode *inode, int mask, + struct nameidata *nd) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PERMISSION, 1, [iops->permission() exists]) + AC_DEFINE(HAVE_PERMISSION_WITH_NAMEIDATA, 1, + [iops->permission() with nameidata exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.32 API change, +dnl # Check if inode_operations contains the function check_acl +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL], [ + AC_MSG_CHECKING([whether iops->check_acl() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int check_acl_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CHECK_ACL, 1, [iops->check_acl() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.38 API change, +dnl # The function check_acl gained a new parameter: flags +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS], [ + AC_MSG_CHECKING([whether iops->check_acl() wants flags]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int check_acl_fn(struct inode *inode, int mask, + unsigned int flags) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CHECK_ACL, 1, [iops->check_acl() exists]) + AC_DEFINE(HAVE_CHECK_ACL_WITH_FLAGS, 1, + [iops->check_acl() wants flags]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.1 API change, +dnl # Check if inode_operations contains the function get_acl +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL], [ + AC_MSG_CHECKING([whether iops->get_acl() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + struct posix_acl *get_acl_fn(struct inode *inode, int type) + { return NULL; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .get_acl = get_acl_fn, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_GET_ACL, 1, [iops->get_acl() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.30 API change, +dnl # current_umask exists only since this version. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CURRENT_UMASK], [ + AC_MSG_CHECKING([whether current_umask exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + current_umask(); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CURRENT_UMASK, 1, [current_umask() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-automount.m4 +++ linux-4.4.0/zfs/config/kernel-automount.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 2.6.37 API change +dnl # The dops->d_automount() dentry operation was added as a clean +dnl # solution to handling automounts. Prior to this cifs/nfs clients +dnl # which required automount support would abuse the follow_link() +dnl # operation on directories for this purpose. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_AUTOMOUNT], [ + AC_MSG_CHECKING([whether dops->d_automount() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + struct vfsmount *d_automount(struct path *p) { return NULL; } + struct dentry_operations dops __attribute__ ((unused)) = { + .d_automount = d_automount, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_AUTOMOUNT, 1, [dops->automount() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-bdev-block-device-operations.m4 +++ linux-4.4.0/zfs/config/kernel-bdev-block-device-operations.m4 @@ -0,0 +1,34 @@ +dnl # +dnl # 2.6.x API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS], [ + AC_MSG_CHECKING([block device operation prototypes]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + + int blk_open(struct block_device *bdev, fmode_t mode) + { return 0; } + int blk_ioctl(struct block_device *bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + int blk_compat_ioctl(struct block_device * bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = blk_open, + .release = NULL, + .ioctl = blk_ioctl, + .compat_ioctl = blk_compat_ioctl, + }; + ],[ + ],[ + AC_MSG_RESULT(struct block_device) + AC_DEFINE(HAVE_BDEV_BLOCK_DEVICE_OPERATIONS, 1, + [struct block_device_operations use bdevs]) + ],[ + AC_MSG_RESULT(struct inode) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-bdev-logical-size.m4 +++ linux-4.4.0/zfs/config/kernel-bdev-logical-size.m4 @@ -0,0 +1,25 @@ +dnl # +dnl # 2.6.30 API change +dnl # bdev_hardsect_size() replaced with bdev_logical_block_size(). While +dnl # it has been true for a while that there was no strict 1:1 mapping +dnl # between physical sector size and logical block size this change makes +dnl # it explicit. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE], [ + AC_MSG_CHECKING([whether bdev_logical_block_size() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct block_device *bdev = NULL; + bdev_logical_block_size(bdev); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BDEV_LOGICAL_BLOCK_SIZE, 1, + [bdev_logical_block_size() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-bdev-physical-size.m4 +++ linux-4.4.0/zfs/config/kernel-bdev-physical-size.m4 @@ -0,0 +1,39 @@ +dnl # +dnl # 2.6.30 API change +dnl # +dnl # The bdev_physical_block_size() interface was added to provide a way +dnl # to determine the smallest write which can be performed without a +dnl # read-modify-write operation. From the kernel documentation: +dnl # +dnl # What: /sys/block//queue/physical_block_size +dnl # Date: May 2009 +dnl # Contact: Martin K. Petersen +dnl # Description: +dnl # This is the smallest unit the storage device can write +dnl # without resorting to read-modify-write operation. It is +dnl # usually the same as the logical block size but may be +dnl # bigger. One example is SATA drives with 4KB sectors +dnl # that expose a 512-byte logical block size to the +dnl # operating system. +dnl # +dnl # Unfortunately, this interface isn't entirely reliable because +dnl # drives are sometimes known to misreport this value. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE], [ + AC_MSG_CHECKING([whether bdev_physical_block_size() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct block_device *bdev = NULL; + bdev_physical_block_size(bdev); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BDEV_PHYSICAL_BLOCK_SIZE, 1, + [bdev_physical_block_size() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-bdi-setup-and-register.m4 +++ linux-4.4.0/zfs/config/kernel-bdi-setup-and-register.m4 @@ -0,0 +1,38 @@ +dnl # +dnl # 2.6.32 - 2.6.33, bdi_setup_and_register() is not exported. +dnl # 2.6.34 - 3.19, bdi_setup_and_register() takes 3 arguments. +dnl # 4.0 - x.y, bdi_setup_and_register() takes 2 arguments. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BDI_SETUP_AND_REGISTER], [ + AC_MSG_CHECKING([whether bdi_setup_and_register() wants 2 args]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + struct backing_dev_info bdi; + ], [ + char *name = "bdi"; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name); + ], [bdi_setup_and_register], [mm/backing-dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_2ARGS_BDI_SETUP_AND_REGISTER, 1, + [bdi_setup_and_register() wants 2 args]) + ], [ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether bdi_setup_and_register() wants 3 args]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + struct backing_dev_info bdi; + ], [ + char *name = "bdi"; + unsigned int cap = BDI_CAP_MAP_COPY; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name, cap); + ], [bdi_setup_and_register], [mm/backing-dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_3ARGS_BDI_SETUP_AND_REGISTER, 1, + [bdi_setup_and_register() wants 3 args]) + ], [ + AC_MSG_RESULT(no) + ]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-bio-bvec-iter.m4 +++ linux-4.4.0/zfs/config/kernel-bio-bvec-iter.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 3.14 API change, +dnl # Immutable biovecs. A number of fields of struct bio are moved to +dnl # struct bvec_iter. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BIO_BVEC_ITER], [ + AC_MSG_CHECKING([whether bio has bi_iter]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct bio bio; + bio.bi_iter.bi_sector = 0; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BIO_BVEC_ITER, 1, [bio has bi_iter]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + --- linux-4.4.0.orig/zfs/config/kernel-bio-end-io-t-args.m4 +++ linux-4.4.0/zfs/config/kernel-bio-end-io-t-args.m4 @@ -0,0 +1,24 @@ +dnl # +dnl # 4.3 API change +dnl # Error argument dropped from bio_endio in favor of newly introduced +dnl # bio->bi_error. This also replaces bio->bi_flags value BIO_UPTODATE. +dnl # Introduced by torvalds/linux@4246a0b63bd8f56a1469b12eafeb875b1041a451 +dnl # ("block: add a bi_error field to struct bio"). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [ + AC_MSG_CHECKING([whether bio_end_io_t wants 1 arg]) + ZFS_LINUX_TRY_COMPILE([ + #include + + void wanted_end_io(struct bio *bio) { return; } + + bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_1ARG_BIO_END_IO_T, 1, + [bio_end_io_t wants 1 arg]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-bio-failfast.m4 +++ linux-4.4.0/zfs/config/kernel-bio-failfast.m4 @@ -0,0 +1,39 @@ +dnl # +dnl # Preferred interface for setting FAILFAST on a bio: +dnl # 2.6.28-2.6.35: BIO_RW_FAILFAST_{DEV|TRANSPORT|DRIVER} +dnl # >= 2.6.36: REQ_FAILFAST_{DEV|TRANSPORT|DRIVER} +dnl # + +AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST_DTD], [ + AC_MSG_CHECKING([whether BIO_RW_FAILFAST_* are defined]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int flags __attribute__ ((unused)); + flags = ((1 << BIO_RW_FAILFAST_DEV) | + (1 << BIO_RW_FAILFAST_TRANSPORT) | + (1 << BIO_RW_FAILFAST_DRIVER)); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BIO_RW_FAILFAST_DTD, 1, + [BIO_RW_FAILFAST_* are defined]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_REQ_FAILFAST_MASK], [ + AC_MSG_CHECKING([whether REQ_FAILFAST_MASK is defined]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int flags __attribute__ ((unused)); + flags = REQ_FAILFAST_MASK; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_REQ_FAILFAST_MASK, 1, + [REQ_FAILFAST_MASK is defined]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-bio-rw-barrier.m4 +++ linux-4.4.0/zfs/config/kernel-bio-rw-barrier.m4 @@ -0,0 +1,25 @@ +dnl # +dnl # Interface for issuing a discard bio: +dnl # 2.6.28-2.6.35: BIO_RW_BARRIER +dnl # 2.6.36-3.x: REQ_BARRIER +dnl # + +dnl # Since REQ_BARRIER is a preprocessor definition, there is no need for an +dnl # autotools check for it. Also, REQ_BARRIER existed in the request layer +dnl # until torvalds/linux@7b6d91daee5cac6402186ff224c3af39d79f4a0e unified the +dnl # request layer and bio layer flags, so it would be wrong to assume that +dnl # the APIs are mutually exclusive contrary to the typical case. +AC_DEFUN([ZFS_AC_KERNEL_BIO_RW_BARRIER], [ + AC_MSG_CHECKING([whether BIO_RW_BARRIER is defined]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int flags __attribute__ ((unused)); + flags = BIO_RW_BARRIER; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BIO_RW_BARRIER, 1, [BIO_RW_BARRIER is defined]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-bio-rw-discard.m4 +++ linux-4.4.0/zfs/config/kernel-bio-rw-discard.m4 @@ -0,0 +1,25 @@ +dnl # +dnl # Interface for issuing a discard bio: +dnl # 2.6.28-2.6.35: BIO_RW_DISCARD +dnl # 2.6.36-3.x: REQ_DISCARD +dnl # + +dnl # Since REQ_DISCARD is a preprocessor definition, there is no need for an +dnl # autotools check for it. Also, REQ_DISCARD existed in the request layer +dnl # until torvalds/linux@7b6d91daee5cac6402186ff224c3af39d79f4a0e unified the +dnl # request layer and bio layer flags, so it would be wrong to assume that +dnl # the APIs are mutually exclusive contrary to the typical case. +AC_DEFUN([ZFS_AC_KERNEL_BIO_RW_DISCARD], [ + AC_MSG_CHECKING([whether BIO_RW_DISCARD is defined]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int flags __attribute__ ((unused)); + flags = BIO_RW_DISCARD; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BIO_RW_DISCARD, 1, [BIO_RW_DISCARD is defined]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-blk-queue-flush.m4 +++ linux-4.4.0/zfs/config/kernel-blk-queue-flush.m4 @@ -0,0 +1,46 @@ +dnl # +dnl # 2.6.36 API change +dnl # In 2.6.36 kernels the blk_queue_ordered() interface has been +dnl # replaced by the simpler blk_queue_flush(). However, while the +dnl # old interface was available to all the new one is GPL-only. +dnl # Thus in addition to detecting if this function is available +dnl # we determine if it is GPL-only. If the GPL-only interface is +dnl # there we implement our own compatibility function, otherwise +dnl # we use the function. The hope is that long term this function +dnl # will be opened up. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLUSH], [ + AC_MSG_CHECKING([whether blk_queue_flush() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLK_QUEUE_FLUSH, 1, + [blk_queue_flush() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING([whether blk_queue_flush() is GPL-only]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + ],[ + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY, 1, + [blk_queue_flush() is GPL-only]) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-blk-queue-max-hw-sectors.m4 +++ linux-4.4.0/zfs/config/kernel-blk-queue-max-hw-sectors.m4 @@ -0,0 +1,22 @@ +dnl # +dnl # 2.6.34 API change +dnl # blk_queue_max_hw_sectors() replaces blk_queue_max_sectors(). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_MAX_HW_SECTORS], [ + AC_MSG_CHECKING([whether blk_queue_max_hw_sectors() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct request_queue *q = NULL; + (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLK_QUEUE_MAX_HW_SECTORS, 1, + [blk_queue_max_hw_sectors() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-blk-queue-max-segments.m4 +++ linux-4.4.0/zfs/config/kernel-blk-queue-max-segments.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 2.6.34 API change +dnl # blk_queue_max_segments() consolidates blk_queue_max_hw_segments() +dnl # and blk_queue_max_phys_segments(). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS], [ + AC_MSG_CHECKING([whether blk_queue_max_segments() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct request_queue *q = NULL; + (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLK_QUEUE_MAX_SEGMENTS, 1, + [blk_queue_max_segments() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-blkdev-get-by-path.m4 +++ linux-4.4.0/zfs/config/kernel-blkdev-get-by-path.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 2.6.38 API change +dnl # open_bdev_exclusive() changed to blkdev_get_by_path() +dnl # close_bdev_exclusive() changed to blkdev_put() +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], + [AC_MSG_CHECKING([whether blkdev_get_by_path() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + blkdev_get_by_path(NULL, 0, NULL); + ], [blkdev_get_by_path], [fs/block_dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLKDEV_GET_BY_PATH, 1, + [blkdev_get_by_path() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-blkdev-get.m4 +++ linux-4.4.0/zfs/config/kernel-blkdev-get.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 2.6.37 API change +dnl # Added 3rd argument for the active holder, previously this was +dnl # hardcoded to NULL. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_3ARG_BLKDEV_GET], [ + AC_MSG_CHECKING([whether blkdev_get() wants 3 args]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct block_device *bdev = NULL; + (void) blkdev_get(bdev, 0, NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_3ARG_BLKDEV_GET, 1, [blkdev_get() wants 3 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-block-device-operations-release-void.m4 +++ linux-4.4.0/zfs/config/kernel-block-device-operations-release-void.m4 @@ -0,0 +1,29 @@ +dnl # +dnl # 3.10.x API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [ + AC_MSG_CHECKING([whether block_device_operations.release is void]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + + void blk_release(struct gendisk *g, fmode_t mode) { return; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = NULL, + .release = blk_release, + .ioctl = NULL, + .compat_ioctl = NULL, + }; + ],[ + ],[ + AC_MSG_RESULT(void) + AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID, 1, + [struct block_device_operations.release returns void]) + ],[ + AC_MSG_RESULT(int) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-check-disk-size-change.m4 +++ linux-4.4.0/zfs/config/kernel-check-disk-size-change.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change +dnl # Added check_disk_size_change() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE], + [AC_MSG_CHECKING([whether check_disk_size_change() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + check_disk_size_change(NULL, NULL); + ], [check_disk_size_change], [fs/block_dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CHECK_DISK_SIZE_CHANGE, 1, + [check_disk_size_change() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-clear-inode.m4 +++ linux-4.4.0/zfs/config/kernel-clear-inode.m4 @@ -0,0 +1,34 @@ +dnl # +dnl # 3.5.0 API change +dnl # torvalds/linux@dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430 and +dnl # torvalds/linux@7994e6f7254354e03028a11f98a27bd67dace9f1 reworked +dnl # where inode_sync_wait() is called. +dnl # +dnl # Prior to these changes it would occur in end_writeback() but due +dnl # to various issues (described in the above commits) it has been +dnl # moved to evict(). This changes the ordering is which sync occurs +dnl # but otherwise doesn't impact the zpl implementation. +dnl # +dnl # The major impact here is the renaming of end_writeback() to +dnl # clear_inode(). However, care must be taken when detecting this +dnl # API change because as recently as 2.6.35 there was a clear_inode() +dnl # function. However, it was made obsolete by the evict_inode() API +dnl # change at the same time. +dnl # +dnl # Therefore, to ensure we have the correct API we only allow the +dnl # clear_inode() compatibility code to be defined iff the evict_inode() +dnl # functionality is also detected. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CLEAR_INODE], + [AC_MSG_CHECKING([whether clear_inode() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + clear_inode(NULL); + ], [clear_inode], [fs/inode.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CLEAR_INODE, 1, [clear_inode() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-commit-metadata.m4 +++ linux-4.4.0/zfs/config/kernel-commit-metadata.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 2.6.33 API change +dnl # Added eops->commit_metadata() callback to allow the underlying +dnl # filesystem to determine the most efficient way to commit the inode. +dnl # Prior to this the nfs server would issue an explicit fsync(). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_COMMIT_METADATA], [ + AC_MSG_CHECKING([whether eops->commit_metadata() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + int commit_metadata(struct inode *inode) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .commit_metadata = commit_metadata, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_COMMIT_METADATA, 1, + [eops->commit_metadata() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-create-nameidata.m4 +++ linux-4.4.0/zfs/config/kernel-create-nameidata.m4 @@ -0,0 +1,29 @@ +dnl # +dnl # 3.6 API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [ + AC_MSG_CHECKING([whether iops->create() passes nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + + #ifdef HAVE_MKDIR_UMODE_T + int inode_create(struct inode *inode ,struct dentry *dentry, + umode_t umode, struct nameidata *nidata) { return 0; } + #else + int inode_create(struct inode *inode,struct dentry *dentry, + int umode, struct nameidata * nidata) { return 0; } + #endif + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .create = inode_create, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1, + [iops->create() passes nameidata]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-current_bio_tail.m4 +++ linux-4.4.0/zfs/config/kernel-current_bio_tail.m4 @@ -0,0 +1,33 @@ +dnl # +dnl # 2.6.34 API change +dnl # current->bio_tail and current->bio_list were struct bio pointers prior to +dnl # Linux 2.6.34. They were refactored into a struct bio_list pointer called +dnl # current->bio_list in Linux 2.6.34. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CURRENT_BIO_TAIL], [ + AC_MSG_CHECKING([whether current->bio_tail exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + current->bio_tail = (struct bio **) NULL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CURRENT_BIO_TAIL, 1, + [current->bio_tail exists]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether current->bio_list exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + current->bio_list = (struct bio_list *) NULL; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CURRENT_BIO_LIST, 1, + [current->bio_list exists]) + ],[ + AC_MSG_ERROR(no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new) + ]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-d-make-root.m4 +++ linux-4.4.0/zfs/config/kernel-d-make-root.m4 @@ -0,0 +1,17 @@ +dnl # +dnl # 3.4.0 API change +dnl # Added d_make_root() to replace previous d_alloc_root() function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_D_MAKE_ROOT], + [AC_MSG_CHECKING([whether d_make_root() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + d_make_root(NULL); + ], [d_make_root], [fs/dcache.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_D_MAKE_ROOT, 1, [d_make_root() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-d-obtain-alias.m4 +++ linux-4.4.0/zfs/config/kernel-d-obtain-alias.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change +dnl # Added d_obtain_alias() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_D_OBTAIN_ALIAS], + [AC_MSG_CHECKING([whether d_obtain_alias() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + d_obtain_alias(NULL); + ], [d_obtain_alias], [fs/dcache.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_D_OBTAIN_ALIAS, 1, + [d_obtain_alias() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-d-prune-aliases.m4 +++ linux-4.4.0/zfs/config/kernel-d-prune-aliases.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 2.6.12 API change +dnl # d_prune_aliases() helper function available. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_D_PRUNE_ALIASES], + [AC_MSG_CHECKING([whether d_prune_aliases() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + struct inode *ip = NULL; + d_prune_aliases(ip); + ], [d_prune_aliases], [fs/dcache.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_D_PRUNE_ALIASES, 1, + [d_prune_aliases() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-declare-event-class.m4 +++ linux-4.4.0/zfs/config/kernel-declare-event-class.m4 @@ -0,0 +1,59 @@ +dnl # +dnl # Ensure the DECLARE_EVENT_CLASS macro is available to non-GPL modules. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_DECLARE_EVENT_CLASS], [ + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-I\$(src)" + + AC_MSG_CHECKING([whether DECLARE_EVENT_CLASS() is available]) + ZFS_LINUX_TRY_COMPILE_HEADER([ + #include + MODULE_LICENSE(ZFS_META_LICENSE); + + #define CREATE_TRACE_POINTS + #include "conftest.h" + ],[ + trace_zfs_autoconf_event_one(1UL); + trace_zfs_autoconf_event_two(2UL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DECLARE_EVENT_CLASS, 1, + [DECLARE_EVENT_CLASS() is available]) + ],[ + AC_MSG_RESULT(no) + ],[ + #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) + #define _CONFTEST_H + + #undef TRACE_SYSTEM + #define TRACE_SYSTEM zfs + #include + + DECLARE_EVENT_CLASS(zfs_autoconf_event_class, + TP_PROTO(unsigned long i), + TP_ARGS(i), + TP_STRUCT__entry( + __field(unsigned long, i) + ), + TP_fast_assign( + __entry->i = i; + ), + TP_printk("i = %lu", __entry->i) + ); + + #define DEFINE_AUTOCONF_EVENT(name) \ + DEFINE_EVENT(zfs_autoconf_event_class, name, \ + TP_PROTO(unsigned long i), \ + TP_ARGS(i)) + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); + + #endif /* _CONFTEST_H */ + + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #define TRACE_INCLUDE_FILE conftest + #include + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-dentry-operations.m4 +++ linux-4.4.0/zfs/config/kernel-dentry-operations.m4 @@ -0,0 +1,87 @@ +dnl # +dnl # 3.6 API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [ + AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int revalidate (struct dentry *dentry, + struct nameidata *nidata) { return 0; } + + static const struct dentry_operations + dops __attribute__ ((unused)) = { + .d_revalidate = revalidate, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1, + [dops->d_revalidate() operation takes nameidata]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.30 API change +dnl # The 'struct dentry_operations' was constified in the dentry structure. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS], [ + AC_MSG_CHECKING([whether dentry uses const struct dentry_operations]) + ZFS_LINUX_TRY_COMPILE([ + #include + + const struct dentry_operations test_d_op = { + .d_revalidate = NULL, + }; + ],[ + struct dentry d __attribute__ ((unused)); + + d.d_op = &test_d_op; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CONST_DENTRY_OPERATIONS, 1, + [dentry uses const struct dentry_operations]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.38 API change +dnl # Added d_set_d_op() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_D_SET_D_OP], + [AC_MSG_CHECKING([whether d_set_d_op() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + d_set_d_op(NULL, NULL); + ], [d_set_d_op], [fs/dcache.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_D_SET_D_OP, 1, + [d_set_d_op() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 2.6.38 API chage +dnl # Added sb->s_d_op default dentry_operations member +dnl # +AC_DEFUN([ZFS_AC_KERNEL_S_D_OP], + [AC_MSG_CHECKING([whether super_block has s_d_op]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct super_block sb __attribute__ ((unused)); + sb.s_d_op = NULL; + ], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_S_D_OP, 1, [struct super_block has s_d_op]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-dirty-inode.m4 +++ linux-4.4.0/zfs/config/kernel-dirty-inode.m4 @@ -0,0 +1,26 @@ +dnl # +dnl # 3.0 API change +dnl # The sops->dirty_inode() callbacks were updated to take a flags +dnl # argument. This allows the greater control over whether the +dnl # filesystem needs to push out a transaction or not. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS], [ + AC_MSG_CHECKING([whether sops->dirty_inode() wants flags]) + ZFS_LINUX_TRY_COMPILE([ + #include + + void dirty_inode(struct inode *a, int b) { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .dirty_inode = dirty_inode, + }; + ],[ + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_DIRTY_INODE_WITH_FLAGS, 1, + [sops->dirty_inode() wants flags]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-discard-granularity.m4 +++ linux-4.4.0/zfs/config/kernel-discard-granularity.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 2.6.33 API change +dnl # Discard granularity and alignment restrictions may now be set. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_DISCARD_GRANULARITY], [ + AC_MSG_CHECKING([whether ql->discard_granularity is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct queue_limits ql __attribute__ ((unused)); + + ql.discard_granularity = 0; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DISCARD_GRANULARITY, 1, + [ql->discard_granularity is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-elevator-change.m4 +++ linux-4.4.0/zfs/config/kernel-elevator-change.m4 @@ -0,0 +1,25 @@ +dnl # +dnl # 2.6.36 API change +dnl # Verify the elevator_change() symbol is available. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_ELEVATOR_CHANGE], [ + AC_MSG_CHECKING([whether elevator_change() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + int ret; + struct request_queue *q = NULL; + char *elevator = NULL; + ret = elevator_change(q, elevator); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ELEVATOR_CHANGE, 1, + [elevator_change() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-encode-fh-inode.m4 +++ linux-4.4.0/zfs/config/kernel-encode-fh-inode.m4 @@ -0,0 +1,24 @@ +dnl # +dnl # 3.5.0 API change +dnl # torvalds/linux@b0b0382bb4904965a9e9fca77ad87514dfda0d1c changed the +dnl # ->encode_fh() callback to pass the child inode and its parents inode +dnl # rather than a dentry and a boolean saying whether we want the parent. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE], [ + AC_MSG_CHECKING([whether eops->encode_fh() wants inode]) + ZFS_LINUX_TRY_COMPILE([ + #include + int encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *parent) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .encode_fh = encode_fh, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ENCODE_FH_WITH_INODE, 1, + [eops->encode_fh() wants child and parent inodes]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-evict-inode.m4 +++ linux-4.4.0/zfs/config/kernel-evict-inode.m4 @@ -0,0 +1,21 @@ +dnl # +dnl # 2.6.36 API change +dnl # The sops->delete_inode() and sops->clear_inode() callbacks have +dnl # replaced by a single sops->evict_inode() callback. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_EVICT_INODE], [ + AC_MSG_CHECKING([whether sops->evict_inode() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + void evict_inode (struct inode * t) { return; } + static struct super_operations sops __attribute__ ((unused)) = { + .evict_inode = evict_inode, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-fallocate.m4 +++ linux-4.4.0/zfs/config/kernel-fallocate.m4 @@ -0,0 +1,56 @@ +dnl # +dnl # Linux 2.6.38 - 3.x API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FILE_FALLOCATE], [ + AC_MSG_CHECKING([whether fops->fallocate() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + long test_fallocate(struct file *file, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # Linux 2.6.x - 2.6.37 API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_FALLOCATE], [ + AC_MSG_CHECKING([whether iops->fallocate() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + long test_fallocate(struct inode *inode, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct inode_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # The fallocate callback was moved from the inode_operations +dnl # structure to the file_operations structure. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [ + ZFS_AC_KERNEL_FILE_FALLOCATE + ZFS_AC_KERNEL_INODE_FALLOCATE +]) --- linux-4.4.0.orig/zfs/config/kernel-file-inode.m4 +++ linux-4.4.0/zfs/config/kernel-file-inode.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 3.19 API change +dnl # struct access f->f_dentry->d_inode was replaced by accessor function +dnl # file_inode(f) +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FILE_INODE], [ + AC_MSG_CHECKING([whether file_inode() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct file *f = NULL; + file_inode(f); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FILE_INODE, 1, [file_inode() is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-fmode-t.m4 +++ linux-4.4.0/zfs/config/kernel-fmode-t.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change, +dnl # check if fmode_t typedef is defined +dnl # +AC_DEFUN([ZFS_AC_KERNEL_TYPE_FMODE_T], + [AC_MSG_CHECKING([whether kernel defines fmode_t]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + fmode_t *ptr __attribute__ ((unused)); + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_FMODE_T, 1, + [kernel defines fmode_t]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-follow-down-one.m4 +++ linux-4.4.0/zfs/config/kernel-follow-down-one.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 2.6.38 API change +dnl # follow_down() renamed follow_down_one(). The original follow_down() +dnl # symbol still exists but will traverse down all the layers. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_DOWN_ONE], [ + AC_MSG_CHECKING([whether follow_down_one() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct path *p = NULL; + follow_down_one(p); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FOLLOW_DOWN_ONE, 1, + [follow_down_one() is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-follow-link-nameidata.m4 +++ linux-4.4.0/zfs/config/kernel-follow-link-nameidata.m4 @@ -0,0 +1,24 @@ +dnl # +dnl # 4.2 API change +dnl # This kernel retired the nameidata structure which forced the +dnl # restructuring of the follow_link() prototype and how it is called. +dnl # We check for the new interface rather than detecting the old one. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_LINK], [ + AC_MSG_CHECKING([whether iops->follow_link() passes nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + const char *follow_link(struct dentry *de, void **cookie) + { return "symlink"; } + static struct inode_operations iops __attribute__ ((unused)) = { + .follow_link = follow_link, + }; + ],[ + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FOLLOW_LINK_NAMEIDATA, 1, + [iops->follow_link() nameidata]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-fsync.m4 +++ linux-4.4.0/zfs/config/kernel-fsync.m4 @@ -0,0 +1,74 @@ +dnl # +dnl # Linux 2.6.x - 2.6.34 API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITH_DENTRY], [ + ZFS_LINUX_TRY_COMPILE([ + #include + + int test_fsync(struct file *f, struct dentry *dentry, int x) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ + ],[ + AC_MSG_RESULT([dentry]) + AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1, + [fops->fsync() with dentry]) + ],[ + ]) +]) + +dnl # +dnl # Linux 2.6.35 - Linux 3.0 API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY], [ + ZFS_LINUX_TRY_COMPILE([ + #include + + int test_fsync(struct file *f, int x) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ + ],[ + AC_MSG_RESULT([no dentry]) + AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1, + [fops->fsync() without dentry]) + ],[ + ]) +]) + +dnl # +dnl # Linux 3.1 - 3.x API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_FSYNC_RANGE], [ + ZFS_LINUX_TRY_COMPILE([ + #include + + int test_fsync(struct file *f, loff_t a, loff_t b, int c) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + ],[ + ],[ + AC_MSG_RESULT([range]) + AC_DEFINE(HAVE_FSYNC_RANGE, 1, + [fops->fsync() with range]) + ],[ + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [ + AC_MSG_CHECKING([whether fops->fsync() wants]) + ZFS_AC_KERNEL_FSYNC_WITH_DENTRY + ZFS_AC_KERNEL_FSYNC_WITHOUT_DENTRY + ZFS_AC_KERNEL_FSYNC_RANGE +]) --- linux-4.4.0.orig/zfs/config/kernel-generic_io_acct.m4 +++ linux-4.4.0/zfs/config/kernel-generic_io_acct.m4 @@ -0,0 +1,26 @@ +dnl # +dnl # 3.19 API addition +dnl # +dnl # torvalds/linux@394ffa503bc40e32d7f54a9b817264e81ce131b4 allows us to +dnl # increment iostat counters without generic_make_request(). +dnl # +AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [ + AC_MSG_CHECKING([whether generic IO accounting symbols are avaliable]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + + void (*generic_start_io_acct_f)(int, unsigned long, + struct hd_struct *) = &generic_start_io_acct; + void (*generic_end_io_acct_f)(int, struct hd_struct *, + unsigned long) = &generic_end_io_acct; + ], [ + generic_start_io_acct(0, 0, NULL); + generic_end_io_acct(0, NULL, 0); + ], [generic_start_io_acct], [block/bio.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_GENERIC_IO_ACCT, 1, + [generic_start_io_acct()/generic_end_io_acct() avaliable]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-get-disk-ro.m4 +++ linux-4.4.0/zfs/config/kernel-get-disk-ro.m4 @@ -0,0 +1,21 @@ +dnl # +dnl # 2.6.x API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_GET_DISK_RO], [ + AC_MSG_CHECKING([whether get_disk_ro() is available]) + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct gendisk *disk = NULL; + (void) get_disk_ro(disk); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_GET_DISK_RO, 1, + [blk_disk_ro() is available]) + ],[ + AC_MSG_RESULT(no) + ]) + EXTRA_KCFLAGS="$tmp_flags" +]) --- linux-4.4.0.orig/zfs/config/kernel-get-gendisk.m4 +++ linux-4.4.0/zfs/config/kernel-get-gendisk.m4 @@ -0,0 +1,17 @@ +dnl # +dnl # 2.6.34 API change +dnl # Verify the get_gendisk() symbol is available. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_GET_GENDISK], + [AC_MSG_CHECKING([whether get_gendisk() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + get_gendisk(0, NULL); + ], [get_gendisk], [block/genhd.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_GET_GENDISK, 1, [get_gendisk() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-insert-inode-locked.m4 +++ linux-4.4.0/zfs/config/kernel-insert-inode-locked.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change +dnl # Added insert_inode_locked() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INSERT_INODE_LOCKED], + [AC_MSG_CHECKING([whether insert_inode_locked() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + insert_inode_locked(NULL); + ], [insert_inode_locked], [fs/inode.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INSERT_INODE_LOCKED, 1, + [insert_inode_locked() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-invalidate-bdev-args.m4 +++ linux-4.4.0/zfs/config/kernel-invalidate-bdev-args.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # 2.6.22 API change +dnl # Unused destroy_dirty_buffers arg removed from prototype. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS], [ + AC_MSG_CHECKING([whether invalidate_bdev() wants 1 arg]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct block_device *bdev = NULL; + invalidate_bdev(bdev); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_1ARG_INVALIDATE_BDEV, 1, + [invalidate_bdev() wants 1 arg]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-is_owner_or_cap.m4 +++ linux-4.4.0/zfs/config/kernel-is_owner_or_cap.m4 @@ -0,0 +1,36 @@ +dnl # +dnl # 2.6.39 API change, +dnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(), +dnl # This is used for permission checks in the xattr and file attribute call +dnl # paths. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ + AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode *ip = NULL; + (void) inode_owner_or_capable(ip); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, + [inode_owner_or_capable() exists]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether is_owner_or_cap() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + ],[ + struct inode *ip = NULL; + (void) is_owner_or_cap(ip); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IS_OWNER_OR_CAP, 1, + [is_owner_or_cap() exists]) + ],[ + AC_MSG_ERROR(no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new) + ]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-kmap-atomic-args.m4 +++ linux-4.4.0/zfs/config/kernel-kmap-atomic-args.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 2.6.37 API change +dnl # kmap_atomic changed from assigning hard-coded named slot to using +dnl # push/pop based dynamical allocation. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_KMAP_ATOMIC_ARGS], [ + AC_MSG_CHECKING([whether kmap_atomic wants 1 args]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct page page; + kmap_atomic(&page); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_1ARG_KMAP_ATOMIC, 1, + [kmap_atomic wants 1 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-kobj-name-len.m4 +++ linux-4.4.0/zfs/config/kernel-kobj-name-len.m4 @@ -0,0 +1,21 @@ +dnl # +dnl # 2.6.27 API change, +dnl # kobject KOBJ_NAME_LEN static limit removed. All users of this +dnl # constant were removed prior to 2.6.27, but to be on the safe +dnl # side this check ensures the constant is undefined. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_KOBJ_NAME_LEN], [ + AC_MSG_CHECKING([whether kernel defines KOBJ_NAME_LEN]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + int val __attribute__ ((unused)); + val = KOBJ_NAME_LEN; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_KOBJ_NAME_LEN, 1, + [kernel defines KOBJ_NAME_LEN]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-lookup-bdev.m4 +++ linux-4.4.0/zfs/config/kernel-lookup-bdev.m4 @@ -0,0 +1,17 @@ +dnl # +dnl # 2.6.27 API change +dnl # lookup_bdev() was exported. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_BDEV], + [AC_MSG_CHECKING([whether lookup_bdev() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + lookup_bdev(NULL); + ], [lookup_bdev], [fs/block_dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_LOOKUP_BDEV, 1, [lookup_bdev() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-lookup-nameidata.m4 +++ linux-4.4.0/zfs/config/kernel-lookup-nameidata.m4 @@ -0,0 +1,25 @@ +dnl # +dnl # 3.6 API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [ + AC_MSG_CHECKING([whether iops->lookup() passes nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + + struct dentry *inode_lookup(struct inode *inode, + struct dentry *dentry, struct nameidata *nidata) + { return NULL; } + + static const struct inode_operations iops + __attribute__ ((unused)) = { + .lookup = inode_lookup, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1, + [iops->lookup() passes nameidata]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-lseek-execute.m4 +++ linux-4.4.0/zfs/config/kernel-lseek-execute.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 3.11 API change +dnl # lseek_execute helper exported +dnl # +AC_DEFUN([ZFS_AC_KERNEL_LSEEK_EXECUTE], + [AC_MSG_CHECKING([whether lseek_execute() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + struct file *fp __attribute__ ((unused)) = NULL; + struct inode *ip __attribute__ ((unused)) = NULL; + loff_t offset __attribute__ ((unused)) = 0; + loff_t maxsize __attribute__ ((unused)) = 0; + + lseek_execute(fp, ip, offset, maxsize); + ], [lseek_exclusive], [fs/read_write.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_LSEEK_EXECUTE, 1, + [lseek_execute() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-mk-request-fn.m4 +++ linux-4.4.0/zfs/config/kernel-mk-request-fn.m4 @@ -0,0 +1,65 @@ +dnl # +dnl # Linux 3.2 API Change +dnl # make_request_fn returns void instead of int. +dnl # +dnl # Linux 4.4 API Change +dnl # make_request_fn returns blk_qc_t. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [ + AC_MSG_CHECKING([whether make_request_fn() returns int]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int make_request(struct request_queue *q, struct bio *bio) + { + return (0); + } + ],[ + blk_queue_make_request(NULL, &make_request); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(MAKE_REQUEST_FN_RET, int, + [make_request_fn() returns int]) + AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_INT, 1, + [Noting that make_request_fn() returns int]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether make_request_fn() returns void]) + ZFS_LINUX_TRY_COMPILE([ + #include + + void make_request(struct request_queue *q, struct bio *bio) + { + return; + } + ],[ + blk_queue_make_request(NULL, &make_request); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(MAKE_REQUEST_FN_RET, void, + [make_request_fn() returns void]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether make_request_fn() returns blk_qc_t]) + ZFS_LINUX_TRY_COMPILE([ + #include + + blk_qc_t make_request(struct request_queue *q, struct bio *bio) + { + return (BLK_QC_T_NONE); + } + ],[ + blk_queue_make_request(NULL, &make_request); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(MAKE_REQUEST_FN_RET, blk_qc_t, + [make_request_fn() returns blk_qc_t]) + AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_QC, 1, + [Noting that make_request_fn() returns blk_qc_t]) + ],[ + AC_MSG_ERROR(no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new) + ]) + ]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-mkdir-umode-t.m4 +++ linux-4.4.0/zfs/config/kernel-mkdir-umode-t.m4 @@ -0,0 +1,29 @@ +dnl # +dnl # 3.3 API change +dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a +dnl # umode_t type rather than an int. The expectation is that any backport +dnl # would also change all three prototypes. However, if it turns out that +dnl # some distribution doesn't backport the whole thing this could be +dnl # broken apart in to three seperate checks. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_MKDIR_UMODE_T], [ + AC_MSG_CHECKING([whether iops->create()/mkdir()/mknod() take umode_t]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int mkdir(struct inode *inode, struct dentry *dentry, + umode_t umode) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .mkdir = mkdir, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_MKDIR_UMODE_T, 1, + [iops->create()/mkdir()/mknod() take umode_t]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-mount-nodev.m4 +++ linux-4.4.0/zfs/config/kernel-mount-nodev.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 2.6.39 API change +dnl # The .get_sb callback has been replaced by a .mount callback +dnl # in the file_system_type structure. When using the new +dnl # interface the caller must now use the mount_nodev() helper. +dnl # This updated callback and helper no longer pass the vfsmount. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_MOUNT_NODEV], + [AC_MSG_CHECKING([whether mount_nodev() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + mount_nodev(NULL, 0, NULL, NULL); + ], [mount_nodev], [fs/super.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_MOUNT_NODEV, 1, [mount_nodev() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-open-bdev-exclusive.m4 +++ linux-4.4.0/zfs/config/kernel-open-bdev-exclusive.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.28 API change +dnl # open/close_bdev_excl() renamed to open/close_bdev_exclusive() +dnl # +AC_DEFUN([ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE], + [AC_MSG_CHECKING([whether open_bdev_exclusive() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + open_bdev_exclusive(NULL, 0, NULL); + ], [open_bdev_exclusive], [fs/block_dev.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_OPEN_BDEV_EXCLUSIVE, 1, + [open_bdev_exclusive() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-put-link-nameidata.m4 +++ linux-4.4.0/zfs/config/kernel-put-link-nameidata.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 4.2 API change +dnl # This kernel retired the nameidata structure which forced the +dnl # restructuring of the put_link() prototype and how it is called. +dnl # We check for the new interface rather than detecting the old one. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [ + AC_MSG_CHECKING([whether iops->put_link() passes nameidata]) + ZFS_LINUX_TRY_COMPILE([ + #include + void put_link(struct inode *ip, void *cookie) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .put_link = put_link, + }; + ],[ + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PUT_LINK_NAMEIDATA, 1, + [iops->put_link() nameidata]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-security-inode-init.m4 +++ linux-4.4.0/zfs/config/kernel-security-inode-init.m4 @@ -0,0 +1,55 @@ +dnl # +dnl # 2.6.39 API change +dnl # The security_inode_init_security() function now takes an additional +dnl # qstr argument which must be passed in from the dentry if available. +dnl # Passing a NULL is safe when no qstr is available the relevant +dnl # security checks will just be skipped. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY], [ + AC_MSG_CHECKING([whether security_inode_init_security wants 6 args]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + char *name __attribute__ ((unused)) = NULL; + void *value __attribute__ ((unused)) = NULL; + size_t len __attribute__ ((unused)) = 0; + + security_inode_init_security(ip, dip, str, &name, &value, &len); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY, 1, + [security_inode_init_security wants 6 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.2 API change +dnl # The security_inode_init_security() API has been changed to include +dnl # a filesystem specific callback to write security extended attributes. +dnl # This was done to support the initialization of multiple LSM xattrs +dnl # and the EVM xattr. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CALLBACK_SECURITY_INODE_INIT_SECURITY], [ + AC_MSG_CHECKING([whether security_inode_init_security wants callback]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + initxattrs func __attribute__ ((unused)) = NULL; + + security_inode_init_security(ip, dip, str, func, NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY, 1, + [security_inode_init_security wants callback]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-set-nlink.m4 +++ linux-4.4.0/zfs/config/kernel-set-nlink.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # Linux v3.2-rc1 API change +dnl # SHA: bfe8684869601dacfcb2cd69ef8cfd9045f62170 +dnl # +AC_DEFUN([ZFS_AC_KERNEL_SET_NLINK], [ + AC_MSG_CHECKING([whether set_nlink() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct inode node; + unsigned int link = 0; + (void) set_nlink(&node, link); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SET_NLINK, 1, + [set_nlink() is available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-sget-args.m4 +++ linux-4.4.0/zfs/config/kernel-sget-args.m4 @@ -0,0 +1,23 @@ +dnl # +dnl # 3.6 API change, +dnl # 'sget' now takes the mount flags as an argument. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_5ARG_SGET], + [AC_MSG_CHECKING([whether sget() wants 5 args]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct file_system_type *type = NULL; + int (*test)(struct super_block *,void *) = NULL; + int (*set)(struct super_block *,void *) = NULL; + int flags = 0; + void *data = NULL; + (void) sget(type, test, set, flags, data); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_5ARG_SGET, 1, [sget() wants 5 args]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + --- linux-4.4.0.orig/zfs/config/kernel-show-options.m4 +++ linux-4.4.0/zfs/config/kernel-show-options.m4 @@ -0,0 +1,22 @@ +dnl # +dnl # Linux 3.3 API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_SHOW_OPTIONS], [ + AC_MSG_CHECKING([whether sops->show_options() wants dentry]) + + ZFS_LINUX_TRY_COMPILE([ + #include + + int show_options (struct seq_file * x, struct dentry * y) { return 0; }; + static struct super_operations sops __attribute__ ((unused)) = { + .show_options = show_options, + }; + ],[ + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_SHOW_OPTIONS_WITH_DENTRY, 1, + [sops->show_options() with dentry]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-shrink.m4 +++ linux-4.4.0/zfs/config/kernel-shrink.m4 @@ -0,0 +1,133 @@ +dnl # +dnl # 3.1 API change +dnl # The super_block structure now stores a per-filesystem shrinker. +dnl # This interface is preferable because it can be used to specifically +dnl # target only the zfs filesystem for pruning. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_SHRINK], [ + AC_MSG_CHECKING([whether super_block has s_shrink]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int shrink(struct shrinker *s, struct shrink_control *sc) + { return 0; } + + static const struct super_block + sb __attribute__ ((unused)) = { + .s_shrink.shrink = shrink, + .s_shrink.seeks = DEFAULT_SEEKS, + .s_shrink.batch = 0, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHRINK, 1, [struct super_block has s_shrink]) + + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.3 API change +dnl # The super_block structure was changed to use an hlist_node instead +dnl # of a list_head for the .s_instance linkage. +dnl # +dnl # This was done in part to resolve a race in the iterate_supers_type() +dnl # function which was introduced in Linux 3.0 kernel. The iterator +dnl # was supposed to provide a safe way to call an arbitrary function on +dnl # all super blocks of a specific type. Unfortunately, because a +dnl # list_head was used it was possible for iterate_supers_type() to +dnl # get stuck spinning a super block which was just deactivated. +dnl # +dnl # This can occur because when the list head is removed from the +dnl # fs_supers list it is reinitialized to point to itself. If the +dnl # iterate_supers_type() function happened to be processing the +dnl # removed list_head it will get stuck spinning on that list_head. +dnl # +dnl # To resolve the issue for existing 3.0 - 3.2 kernels we detect when +dnl # a list_head is used. Then to prevent the spinning from occurring +dnl # the .next pointer is set to the fs_supers list_head which ensures +dnl # the iterate_supers_type() function will always terminate. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_S_INSTANCES_LIST_HEAD], [ + AC_MSG_CHECKING([whether super_block has s_instances list_head]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct super_block sb __attribute__ ((unused)); + + INIT_LIST_HEAD(&sb.s_instances); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_S_INSTANCES_LIST_HEAD, 1, + [struct super_block has s_instances list_head]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_NR_CACHED_OBJECTS], [ + AC_MSG_CHECKING([whether sops->nr_cached_objects() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int nr_cached_objects(struct super_block *sb) { return 0; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .nr_cached_objects = nr_cached_objects, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NR_CACHED_OBJECTS, 1, + [sops->nr_cached_objects() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_FREE_CACHED_OBJECTS], [ + AC_MSG_CHECKING([whether sops->free_cached_objects() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + + void free_cached_objects(struct super_block *sb, int x) + { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .free_cached_objects = free_cached_objects, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_FREE_CACHED_OBJECTS, 1, + [sops->free_cached_objects() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # +dnl # 3.12 API change +dnl # The nid member was added to struct shrink_control to support +dnl # NUMA-aware shrinkers. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID], [ + AC_MSG_CHECKING([whether shrink_control has nid]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + struct shrink_control sc __attribute__ ((unused)); + unsigned long scnidsize __attribute__ ((unused)) = + sizeof(sc.nid); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(SHRINK_CONTROL_HAS_NID, 1, + [struct shrink_control has nid]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-truncate-range.m4 +++ linux-4.4.0/zfs/config/kernel-truncate-range.m4 @@ -0,0 +1,24 @@ +dnl # +dnl # 3.5.0 API change +dnl # torvalds/linux@17cf28afea2a1112f240a3a2da8af883be024811 removed +dnl # truncate_range(). The file hole punching functionality is now +dnl # provided by fallocate() +dnl # +AC_DEFUN([ZFS_AC_KERNEL_TRUNCATE_RANGE], [ + AC_MSG_CHECKING([whether iops->truncate_range() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include + void truncate_range(struct inode *inode, loff_t start, + loff_t end) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .truncate_range = truncate_range, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INODE_TRUNCATE_RANGE, 1, + [iops->truncate_range() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-truncate-setsize.m4 +++ linux-4.4.0/zfs/config/kernel-truncate-setsize.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # 2.6.35 API change +dnl # Added truncate_setsize() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_TRUNCATE_SETSIZE], + [AC_MSG_CHECKING([whether truncate_setsize() is available]) + ZFS_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + truncate_setsize(NULL, 0); + ], [truncate_setsize], [mm/truncate.c], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_TRUNCATE_SETSIZE, 1, + [truncate_setsize() is available]) + ], [ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-vfs-iterate.m4 +++ linux-4.4.0/zfs/config/kernel-vfs-iterate.m4 @@ -0,0 +1,43 @@ +dnl # +dnl # 3.11 API change +dnl # +AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [ + AC_MSG_CHECKING([whether fops->iterate() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + int iterate(struct file *filp, struct dir_context * context) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .iterate = iterate, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_VFS_ITERATE, 1, + [fops->iterate() is available]) + ],[ + AC_MSG_RESULT(no) + + AC_MSG_CHECKING([whether fops->readdir() is available]) + ZFS_LINUX_TRY_COMPILE([ + #include + int readdir(struct file *filp, void *entry, filldir_t func) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .readdir = readdir, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_VFS_READDIR, 1, + [fops->readdir() is available]) + ],[ + AC_MSG_ERROR(no; file a bug report with ZFSOnLinux) + ]) + + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-vfs-rw-iterate.m4 +++ linux-4.4.0/zfs/config/kernel-vfs-rw-iterate.m4 @@ -0,0 +1,27 @@ +dnl # +dnl # Linux 4.1.x API +dnl # +AC_DEFUN([ZFS_AC_KERNEL_VFS_RW_ITERATE], + [AC_MSG_CHECKING([whether fops->read/write_iter() are available]) + ZFS_LINUX_TRY_COMPILE([ + #include + + ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) + { return 0; } + ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .read_iter = test_read, + .write_iter = test_write, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_VFS_RW_ITERATE, 1, + [fops->read/write_iter() are available]) + ],[ + AC_MSG_RESULT(no) + ]) +]) --- linux-4.4.0.orig/zfs/config/kernel-xattr-handler.m4 +++ linux-4.4.0/zfs/config/kernel-xattr-handler.m4 @@ -0,0 +1,205 @@ +dnl # +dnl # 2.6.35 API change, +dnl # The 'struct xattr_handler' was constified in the generic +dnl # super_block structure. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CONST_XATTR_HANDLER], + [AC_MSG_CHECKING([whether super_block uses const struct xattr_hander]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + + const struct xattr_handler xattr_test_handler = { + .prefix = "test", + .get = NULL, + .set = NULL, + }; + + const struct xattr_handler *xattr_handlers[] = { + &xattr_test_handler, + }; + + const struct super_block sb __attribute__ ((unused)) = { + .s_xattr = xattr_handlers, + }; + ],[ + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_CONST_XATTR_HANDLER, 1, + [super_block uses const struct xattr_hander]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) + +dnl # +dnl # 2.6.33 API change, +dnl # The xattr_hander->get() callback was changed to take a dentry +dnl # instead of an inode, and a handler_flags argument was added. +dnl # +dnl # 4.4 API change, +dnl # The xattr_hander->get() callback was changed to take a xattr_handler, +dnl # and handler_flags argument was removed and should be accessed by +dnl # handler->flags. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_GET], [ + AC_MSG_CHECKING([whether xattr_handler->get() wants dentry]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int get(struct dentry *dentry, const char *name, + void *buffer, size_t size, int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DENTRY_XATTR_GET, 1, + [xattr_handler->get() wants dentry]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether xattr_handler->get() wants xattr_handler]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int get(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, void *buffer, size_t size) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_HANDLER_XATTR_GET, 1, + [xattr_handler->get() wants xattr_handler]) + ],[ + AC_MSG_RESULT(no) + ]) + ]) +]) + +dnl # +dnl # 2.6.33 API change, +dnl # The xattr_hander->set() callback was changed to take a dentry +dnl # instead of an inode, and a handler_flags argument was added. +dnl # +dnl # 4.4 API change, +dnl # The xattr_hander->set() callback was changed to take a xattr_handler, +dnl # and handler_flags argument was removed and should be accessed by +dnl # handler->flags. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_SET], [ + AC_MSG_CHECKING([whether xattr_handler->set() wants dentry]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int set(struct dentry *dentry, const char *name, + const void *buffer, size_t size, int flags, + int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DENTRY_XATTR_SET, 1, + [xattr_handler->set() wants dentry]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether xattr_handler->set() wants xattr_handler]) + ZFS_LINUX_TRY_COMPILE([ + #include + + int set(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, const void *buffer, size_t size, int flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_HANDLER_XATTR_SET, 1, + [xattr_handler->set() wants xattr_handler]) + ],[ + AC_MSG_RESULT(no) + ]) + ]) +]) + +dnl # +dnl # 2.6.33 API change, +dnl # The xattr_hander->list() callback was changed to take a dentry +dnl # instead of an inode, and a handler_flags argument was added. +dnl # +dnl # 4.4 API change, +dnl # The xattr_hander->list() callback was changed to take a xattr_handler, +dnl # and handler_flags argument was removed and should be accessed by +dnl # handler->flags. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_LIST], [ + AC_MSG_CHECKING([whether xattr_handler->list() wants dentry]) + ZFS_LINUX_TRY_COMPILE([ + #include + + size_t list(struct dentry *dentry, char *list, size_t list_size, + const char *name, size_t name_len, int handler_flags) + { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DENTRY_XATTR_LIST, 1, + [xattr_handler->list() wants dentry]) + ],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether xattr_handler->list() wants xattr_handler]) + ZFS_LINUX_TRY_COMPILE([ + #include + + size_t list(const struct xattr_handler *handler, struct dentry *dentry, + char *list, size_t list_size, const char *name, size_t name_len) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + ],[ + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_HANDLER_XATTR_LIST, 1, + [xattr_handler->list() wants xattr_handler]) + ],[ + AC_MSG_RESULT(no) + ]) + ]) +]) + +dnl # +dnl # 3.7 API change, +dnl # The posix_acl_{from,to}_xattr functions gained a new +dnl # parameter: user_ns +dnl # +AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_FROM_XATTR_USERNS], [ + AC_MSG_CHECKING([whether posix_acl_from_xattr() needs user_ns]) + ZFS_LINUX_TRY_COMPILE([ + #include + #include + #include + ],[ + posix_acl_from_xattr(&init_user_ns, NULL, 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_POSIX_ACL_FROM_XATTR_USERNS, 1, + [posix_acl_from_xattr() needs user_ns]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + --- linux-4.4.0.orig/zfs/config/kernel.m4 +++ linux-4.4.0/zfs/config/kernel.m4 @@ -0,0 +1,654 @@ +dnl # +dnl # Default ZFS kernel configuration +dnl # +AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ + ZFS_AC_KERNEL + ZFS_AC_SPL + ZFS_AC_TEST_MODULE + ZFS_AC_KERNEL_CONFIG + ZFS_AC_KERNEL_DECLARE_EVENT_CLASS + ZFS_AC_KERNEL_CURRENT_BIO_TAIL + ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS + ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID + ZFS_AC_KERNEL_TYPE_FMODE_T + ZFS_AC_KERNEL_KOBJ_NAME_LEN + ZFS_AC_KERNEL_3ARG_BLKDEV_GET + ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH + ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE + ZFS_AC_KERNEL_LOOKUP_BDEV + ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS + ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE + ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE + ZFS_AC_KERNEL_BIO_BVEC_ITER + ZFS_AC_KERNEL_BIO_FAILFAST_DTD + ZFS_AC_KERNEL_REQ_FAILFAST_MASK + ZFS_AC_KERNEL_BIO_END_IO_T_ARGS + ZFS_AC_KERNEL_BIO_RW_BARRIER + ZFS_AC_KERNEL_BIO_RW_DISCARD + ZFS_AC_KERNEL_BLK_QUEUE_FLUSH + ZFS_AC_KERNEL_BLK_QUEUE_MAX_HW_SECTORS + ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS + ZFS_AC_KERNEL_GET_DISK_RO + ZFS_AC_KERNEL_GET_GENDISK + ZFS_AC_KERNEL_DISCARD_GRANULARITY + ZFS_AC_KERNEL_CONST_XATTR_HANDLER + ZFS_AC_KERNEL_XATTR_HANDLER_GET + ZFS_AC_KERNEL_XATTR_HANDLER_SET + ZFS_AC_KERNEL_XATTR_HANDLER_LIST + ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE + ZFS_AC_KERNEL_POSIX_ACL_FROM_XATTR_USERNS + ZFS_AC_KERNEL_POSIX_ACL_RELEASE + ZFS_AC_KERNEL_POSIX_ACL_CHMOD + ZFS_AC_KERNEL_POSIX_ACL_CACHING + ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T + ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION + ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA + ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL + ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS + ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL + ZFS_AC_KERNEL_CURRENT_UMASK + ZFS_AC_KERNEL_SHOW_OPTIONS + ZFS_AC_KERNEL_FILE_INODE + ZFS_AC_KERNEL_FSYNC + ZFS_AC_KERNEL_EVICT_INODE + ZFS_AC_KERNEL_DIRTY_INODE_WITH_FLAGS + ZFS_AC_KERNEL_NR_CACHED_OBJECTS + ZFS_AC_KERNEL_FREE_CACHED_OBJECTS + ZFS_AC_KERNEL_FALLOCATE + ZFS_AC_KERNEL_MKDIR_UMODE_T + ZFS_AC_KERNEL_LOOKUP_NAMEIDATA + ZFS_AC_KERNEL_CREATE_NAMEIDATA + ZFS_AC_KERNEL_FOLLOW_LINK + ZFS_AC_KERNEL_PUT_LINK + ZFS_AC_KERNEL_TRUNCATE_RANGE + ZFS_AC_KERNEL_AUTOMOUNT + ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE + ZFS_AC_KERNEL_COMMIT_METADATA + ZFS_AC_KERNEL_CLEAR_INODE + ZFS_AC_KERNEL_INSERT_INODE_LOCKED + ZFS_AC_KERNEL_D_MAKE_ROOT + ZFS_AC_KERNEL_D_OBTAIN_ALIAS + ZFS_AC_KERNEL_D_PRUNE_ALIASES + ZFS_AC_KERNEL_D_SET_D_OP + ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA + ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS + ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE + ZFS_AC_KERNEL_TRUNCATE_SETSIZE + ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY + ZFS_AC_KERNEL_CALLBACK_SECURITY_INODE_INIT_SECURITY + ZFS_AC_KERNEL_MOUNT_NODEV + ZFS_AC_KERNEL_SHRINK + ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID + ZFS_AC_KERNEL_S_INSTANCES_LIST_HEAD + ZFS_AC_KERNEL_S_D_OP + ZFS_AC_KERNEL_BDI_SETUP_AND_REGISTER + ZFS_AC_KERNEL_SET_NLINK + ZFS_AC_KERNEL_ELEVATOR_CHANGE + ZFS_AC_KERNEL_5ARG_SGET + ZFS_AC_KERNEL_LSEEK_EXECUTE + ZFS_AC_KERNEL_VFS_ITERATE + ZFS_AC_KERNEL_VFS_RW_ITERATE + ZFS_AC_KERNEL_KMAP_ATOMIC_ARGS + ZFS_AC_KERNEL_FOLLOW_DOWN_ONE + ZFS_AC_KERNEL_MAKE_REQUEST_FN + ZFS_AC_KERNEL_GENERIC_IO_ACCT + + AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + ]) + AC_SUBST(KERNELMAKE_PARAMS) + + + dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other + dnl # compiler options are added by the kernel build system. + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE" + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\"" + + AC_SUBST(KERNELCPPFLAGS) +]) + +dnl # +dnl # Detect name used for Module.symvers file in kernel +dnl # +AC_DEFUN([ZFS_AC_MODULE_SYMVERS], [ + modpost=$LINUX/scripts/Makefile.modpost + AC_MSG_CHECKING([kernel file name for module symbols]) + AS_IF([test "x$enable_linux_builtin" != xyes -a -f "$modpost"], [ + AS_IF([grep -q Modules.symvers $modpost], [ + LINUX_SYMBOLS=Modules.symvers + ], [ + LINUX_SYMBOLS=Module.symvers + ]) + + AS_IF([test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"], [ + AC_MSG_ERROR([ + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source.]) + ]) + ], [ + LINUX_SYMBOLS=NONE + ]) + AC_MSG_RESULT($LINUX_SYMBOLS) + AC_SUBST(LINUX_SYMBOLS) +]) + +dnl # +dnl # Detect the kernel to be built against +dnl # +AC_DEFUN([ZFS_AC_KERNEL], [ + AC_ARG_WITH([linux], + AS_HELP_STRING([--with-linux=PATH], + [Path to kernel source]), + [kernelsrc="$withval"]) + + AC_ARG_WITH(linux-obj, + AS_HELP_STRING([--with-linux-obj=PATH], + [Path to kernel build objects]), + [kernelbuild="$withval"]) + + AC_MSG_CHECKING([kernel source directory]) + AS_IF([test -z "$kernelsrc"], [ + AS_IF([test -e "/lib/modules/$(uname -r)/source"], [ + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + ], [test -e "/lib/modules/$(uname -r)/build"], [ + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + ], [ + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + ]) + + AS_IF([test -n "$sourcelink" && test -e ${sourcelink}], [ + kernelsrc=`readlink -f ${sourcelink}` + ], [ + kernelsrc="[Not found]" + ]) + ], [ + AS_IF([test "$kernelsrc" = "NONE"], [ + kernsrcver=NONE + ]) + ]) + + AC_MSG_RESULT([$kernelsrc]) + AS_IF([test ! -d "$kernelsrc"], [ + AC_MSG_ERROR([ + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option.]) + ]) + + AC_MSG_CHECKING([kernel build directory]) + AS_IF([test -z "$kernelbuild"], [ + AS_IF([test -e "/lib/modules/$(uname -r)/build"], [ + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + ], [test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}], [ + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + ], [test -d ${kernelsrc}-obj/${target_cpu}/default], [ + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + ], [test -d `dirname ${kernelsrc}`/build-${target_cpu}], [ + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + ], [ + kernelbuild=${kernelsrc} + ]) + ]) + AC_MSG_RESULT([$kernelbuild]) + + AC_MSG_CHECKING([kernel source version]) + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + AS_IF([test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1], [ + utsrelease=linux/version.h + ], [test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2], [ + utsrelease=linux/utsrelease.h + ], [test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3], [ + utsrelease=generated/utsrelease.h + ]) + + AS_IF([test "$utsrelease"], [ + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + AS_IF([test -z "$kernsrcver"], [ + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([*** Cannot determine kernel version.]) + ]) + ], [ + AC_MSG_RESULT([Not found]) + if test "x$enable_linux_builtin" != xyes; then + AC_MSG_ERROR([*** Cannot find UTS_RELEASE definition.]) + else + AC_MSG_ERROR([ + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree.]) + fi + ]) + + AC_MSG_RESULT([$kernsrcver]) + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + AC_SUBST(LINUX) + AC_SUBST(LINUX_OBJ) + AC_SUBST(LINUX_VERSION) + + ZFS_AC_MODULE_SYMVERS +]) + + +dnl # +dnl # Detect the SPL module to be built against +dnl # +AC_DEFUN([ZFS_AC_SPL], [ + AC_ARG_WITH([spl], + AS_HELP_STRING([--with-spl=PATH], + [Path to spl source]), + [splsrc="$withval"]) + + AC_ARG_WITH([spl-obj], + AS_HELP_STRING([--with-spl-obj=PATH], + [Path to spl build objects]), + [splbuild="$withval"]) + + AC_ARG_WITH([spl-timeout], + AS_HELP_STRING([--with-spl-timeout=SECS], + [Wait SECS for SPL header and symver file @<:@default=0@:>@]), + [timeout="$withval"], [timeout=0]) + + dnl # + dnl # The existence of spl.release.in is used to identify a valid + dnl # source directory. In order of preference: + dnl # + splsrc0="/var/lib/dkms/spl/${VERSION}/build" + splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc2="/usr/local/src/spl-${VERSION}" + splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc4="/usr/src/spl-${VERSION}" + splsrc5="../spl/" + splsrc6="$LINUX" + + AC_MSG_CHECKING([spl source directory]) + AS_IF([test -z "${splsrc}"], [ + AS_IF([ test -e "${splsrc0}/spl.release.in"], [ + splsrc=${splsrc0} + ], [ test -e "${splsrc1}/spl.release.in"], [ + splsrc=${splsrc1} + ], [ test -e "${splsrc2}/spl.release.in"], [ + splsrc=${splsrc2} + ], [ test -e "${splsrc3}/spl.release.in"], [ + splsrc=$(readlink -f "${splsrc3}") + ], [ test -e "${splsrc4}/spl.release.in" ], [ + splsrc=${splsrc4} + ], [ test -e "${splsrc5}/spl.release.in"], [ + splsrc=$(readlink -f "${splsrc5}") + ], [ test -e "${splsrc6}/spl.release.in" ], [ + splsrc=${splsrc6} + ], [ + splsrc="[Not found]" + ]) + ], [ + AS_IF([test "$splsrc" = "NONE"], [ + splbuild=NONE + splsrcver=NONE + ]) + ]) + + AC_MSG_RESULT([$splsrc]) + AS_IF([ test ! -e "$splsrc/spl.release.in"], [ + AC_MSG_ERROR([ + *** Please make sure the kmod spl devel package for your distribution + *** is installed then try again. If that fails you can specify the + *** location of the spl source with the '--with-spl=PATH' option.]) + ]) + + dnl # + dnl # The existence of the spl_config.h is used to identify a valid + dnl # spl object directory. In many cases the object and source + dnl # directory are the same, however the objects may also reside + dnl # is a subdirectory named after the kernel version. + dnl # + dnl # This file is supposed to be available after DKMS finishes + dnl # building the SPL kernel module for the target kernel. The + dnl # '--with-spl-timeout' option can be passed to pause here, + dnl # waiting for the file to appear from a concurrently building + dnl # SPL package. + dnl # + AC_MSG_CHECKING([spl build directory]) + while true; do + AS_IF([test -z "$splbuild"], [ + AS_IF([ test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ], [ + splbuild="${splsrc}/${LINUX_VERSION}" + ], [ test -e "${splsrc}/spl_config.h" ], [ + splbuild="${splsrc}" + ], [ find -L "${splsrc}" -name spl_config.h 2> /dev/null | grep -wq spl_config.h ], [ + splbuild=$(find -L "${splsrc}" -name spl_config.h | sed 's,/spl_config.h,,') + ], [ + splbuild="[Not found]" + ]) + ]) + AS_IF([test -e "$splbuild/spl_config.h" -o $timeout -le 0], [ + break; + ], [ + sleep 1 + timeout=$((timeout-1)) + ]) + done + + AC_MSG_RESULT([$splbuild]) + AS_IF([ ! test -e "$splbuild/spl_config.h"], [ + AC_MSG_ERROR([ + *** Please make sure the kmod spl devel package for your + *** distribution is installed then try again. If that fails you + *** can specify the location of the spl objects with the + *** '--with-spl-obj=PATH' option.]) + ]) + + AC_MSG_CHECKING([spl source version]) + AS_IF([test -r $splbuild/spl_config.h && + fgrep -q SPL_META_VERSION $splbuild/spl_config.h], [ + + splsrcver=`(echo "#include "; + echo "splsrcver=SPL_META_VERSION-SPL_META_RELEASE") | + cpp -I $splbuild | + grep "^splsrcver=" | tr -d \" | cut -d= -f2` + ]) + + AS_IF([test -z "$splsrcver"], [ + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([ + *** Cannot determine the version of the spl source. + *** Please prepare the spl source before running this script]) + ]) + + AC_MSG_RESULT([$splsrcver]) + + SPL=${splsrc} + SPL_OBJ=${splbuild} + SPL_VERSION=${splsrcver} + + AC_SUBST(SPL) + AC_SUBST(SPL_OBJ) + AC_SUBST(SPL_VERSION) + + dnl # + dnl # Detect the name used for the SPL Module.symvers file. If one + dnl # does not exist this is likely because the SPL has been configured + dnl # but not built. The '--with-spl-timeout' option can be passed + dnl # to pause here, waiting for the file to appear from a concurrently + dnl # building SPL package. If the file does not appear in time, a good + dnl # guess is made as to what this file will be named based on what it + dnl # is named in the kernel build products. This file will first be + dnl # used at link time so if the guess is wrong the build will fail + dnl # then. This unfortunately means the ZFS package does not contain a + dnl # reliable mechanism to detect symbols exported by the SPL at + dnl # configure time. + dnl # + AC_MSG_CHECKING([spl file name for module symbols]) + SPL_SYMBOLS=NONE + + while true; do + AS_IF([test -r $SPL_OBJ/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ], [test -r $SPL_OBJ/module/Module.symvers], [ + SPL_SYMBOLS=Module.symvers + ], [test -r $SPL_OBJ/module/Modules.symvers], [ + SPL_SYMBOLS=Modules.symvers + ]) + + AS_IF([test $SPL_SYMBOLS != NONE -o $timeout -le 0], [ + break; + ], [ + sleep 1 + timeout=$((timeout-1)) + ]) + done + + AS_IF([test "$SPL_SYMBOLS" = NONE], [ + SPL_SYMBOLS=$LINUX_SYMBOLS + ]) + + AC_MSG_RESULT([$SPL_SYMBOLS]) + AC_SUBST(SPL_SYMBOLS) +]) + +dnl # +dnl # Basic toolchain sanity check. +dnl # +AC_DEFUN([ZFS_AC_TEST_MODULE], [ + AC_MSG_CHECKING([whether modules can be built]) + ZFS_LINUX_TRY_COMPILE([],[],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + if test "x$enable_linux_builtin" != xyes; then + AC_MSG_ERROR([*** Unable to build an empty module.]) + else + AC_MSG_ERROR([ + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree.]) + fi + ]) +]) + +dnl # +dnl # Certain kernel build options are not supported. These must be +dnl # detected at configure time and cause a build failure. Otherwise +dnl # modules may be successfully built that behave incorrectly. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [ + AS_IF([test "x$cross_compiling" != xyes], [ + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([ + #include "$LINUX/include/linux/license.h" + ], [ + return !license_is_gpl_compatible("$ZFS_META_LICENSE"); + ]) + ], [ + AC_DEFINE([ZFS_IS_GPL_COMPATIBLE], [1], + [Define to 1 if GPL-only symbols can be used]) + ], [ + ]) + ]) + + ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC +]) + +dnl # +dnl # Check CONFIG_DEBUG_LOCK_ALLOC +dnl # +dnl # This is typically only set for debug kernels because it comes with +dnl # a performance penalty. However, when it is set it maps the non-GPL +dnl # symbol mutex_lock() to the GPL-only mutex_lock_nested() symbol. +dnl # This will cause a failure at link time which we'd rather know about +dnl # at compile time. +dnl # +dnl # Since we plan to pursue making mutex_lock_nested() a non-GPL symbol +dnl # with the upstream community we add a check to detect this case. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [ + + ZFS_LINUX_CONFIG([DEBUG_LOCK_ALLOC], [ + AC_MSG_CHECKING([whether mutex_lock() is GPL-only]) + tmp_flags="$EXTRA_KCFLAGS" + ZFS_LINUX_TRY_COMPILE([ + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + ],[ + struct mutex lock; + + mutex_init(&lock); + mutex_lock(&lock); + mutex_unlock(&lock); + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_MSG_ERROR([ + *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible + *** with the CDDL license and will prevent the module linking stage + *** from succeeding. You must rebuild your kernel without this + *** option enabled.]) + ]) + EXTRA_KCFLAGS="$tmp_flags" + ], []) +]) + +dnl # +dnl # ZFS_LINUX_CONFTEST_H +dnl # +AC_DEFUN([ZFS_LINUX_CONFTEST_H], [ +cat - <<_ACEOF >conftest.h +$1 +_ACEOF +]) + +dnl # +dnl # ZFS_LINUX_CONFTEST_C +dnl # +AC_DEFUN([ZFS_LINUX_CONFTEST_C], [ +cat confdefs.h - <<_ACEOF >conftest.c +$1 +_ACEOF +]) + +dnl # +dnl # ZFS_LANG_PROGRAM(C)([PROLOGUE], [BODY]) +dnl # +m4_define([ZFS_LANG_PROGRAM], [ +$1 +int +main (void) +{ +dnl Do *not* indent the following line: there may be CPP directives. +dnl Don't move the `;' right after for the same reason. +$2 + ; + return 0; +} +]) + +dnl # +dnl # ZFS_LINUX_COMPILE_IFELSE / like AC_COMPILE_IFELSE +dnl # +AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [ + m4_ifvaln([$1], [ZFS_LINUX_CONFTEST_C([$1])]) + m4_ifvaln([$6], [ZFS_LINUX_CONFTEST_H([$6])], [ZFS_LINUX_CONFTEST_H([])]) + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + AS_IF( + [AC_TRY_COMMAND(cp conftest.c conftest.h build && make [$2] -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) >/dev/null && AC_TRY_COMMAND([$3])], + [$4], + [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])] + ) + rm -Rf build +]) + +dnl # +dnl # ZFS_LINUX_TRY_COMPILE like AC_TRY_COMPILE +dnl # +AC_DEFUN([ZFS_LINUX_TRY_COMPILE], + [ZFS_LINUX_COMPILE_IFELSE( + [AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])], + [modules], + [test -s build/conftest.o], + [$3], [$4]) +]) + +dnl # +dnl # ZFS_LINUX_CONFIG +dnl # +AC_DEFUN([ZFS_LINUX_CONFIG], + [AC_MSG_CHECKING([whether Linux was built with CONFIG_$1]) + ZFS_LINUX_TRY_COMPILE([ + #include + ],[ + #ifndef CONFIG_$1 + #error CONFIG_$1 not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + $2 + ],[ + AC_MSG_RESULT([no]) + $3 + ]) +]) + +dnl # +dnl # ZFS_CHECK_SYMBOL_EXPORT +dnl # check symbol exported or not +dnl # +AC_DEFUN([ZFS_CHECK_SYMBOL_EXPORT], [ + grep -q -E '[[[:space:]]]$1[[[:space:]]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in $2; do + grep -q -E "EXPORT_SYMBOL.*($1)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + $4 + else : + $3 + fi + else : + $3 + fi +]) + +dnl # +dnl # ZFS_LINUX_TRY_COMPILE_SYMBOL +dnl # like ZFS_LINUX_TRY_COMPILE, except ZFS_CHECK_SYMBOL_EXPORT +dnl # is called if not compiling for builtin +dnl # +AC_DEFUN([ZFS_LINUX_TRY_COMPILE_SYMBOL], [ + ZFS_LINUX_TRY_COMPILE([$1], [$2], [rc=0], [rc=1]) + if test $rc -ne 0; then : + $6 + else + if test "x$enable_linux_builtin" != xyes; then + ZFS_CHECK_SYMBOL_EXPORT([$3], [$4], [rc=0], [rc=1]) + fi + if test $rc -ne 0; then : + $6 + else : + $5 + fi + fi +]) + +dnl # +dnl # ZFS_LINUX_TRY_COMPILE_HEADER +dnl # like ZFS_LINUX_TRY_COMPILE, except the contents conftest.h are +dnl # provided via the fifth parameter +dnl # +AC_DEFUN([ZFS_LINUX_TRY_COMPILE_HEADER], + [ZFS_LINUX_COMPILE_IFELSE( + [AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])], + [modules], + [test -s build/conftest.o], + [$3], [$4], [$5]) +]) --- linux-4.4.0.orig/zfs/config/libtool.m4 +++ linux-4.4.0/zfs/config/libtool.m4 @@ -0,0 +1,8388 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS --- linux-4.4.0.orig/zfs/config/ltmain.sh +++ linux-4.4.0/zfs/config/ltmain.sh @@ -0,0 +1,11156 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-0.1" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: --- linux-4.4.0.orig/zfs/config/ltoptions.m4 +++ linux-4.4.0/zfs/config/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) --- linux-4.4.0.orig/zfs/config/ltsugar.m4 +++ linux-4.4.0/zfs/config/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) --- linux-4.4.0.orig/zfs/config/ltversion.m4 +++ linux-4.4.0/zfs/config/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) --- linux-4.4.0.orig/zfs/config/lt~obsolete.m4 +++ linux-4.4.0/zfs/config/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) --- linux-4.4.0.orig/zfs/config/missing +++ linux-4.4.0/zfs/config/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: --- linux-4.4.0.orig/zfs/config/mount-helper.m4 +++ linux-4.4.0/zfs/config/mount-helper.m4 @@ -0,0 +1,8 @@ +AC_DEFUN([ZFS_AC_CONFIG_USER_MOUNT_HELPER], [ + AC_ARG_WITH(mounthelperdir, + AC_HELP_STRING([--with-mounthelperdir=DIR], + [install mount.zfs in dir [[/sbin]]]), + mounthelperdir=$withval,mounthelperdir=/sbin) + + AC_SUBST(mounthelperdir) +]) --- linux-4.4.0.orig/zfs/config/rpm.am +++ linux-4.4.0/zfs/config/rpm.am @@ -0,0 +1,87 @@ +############################################################################### +# Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. +# Copyright (C) 2007 The Regents of the University of California. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for RPM packages. +############################################################################### + +srpm-kmod: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common + +srpm-dkms: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common + +srpm-utils: + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common + +srpm: srpm-kmod srpm-dkms srpm-utils +srpms: srpm-kmod srpm-dkms srpm-utils + +rpm-kmod: srpm-kmod + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common + +rpm-dkms: srpm-dkms + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common + +rpm-utils: srpm-utils + $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ + def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common + +rpm: rpm-kmod rpm-dkms rpm-utils +rpms: rpm-kmod rpm-dkms rpm-utils + +rpm-local: + @(if test "${HAVE_RPMBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${RPMBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${RPMBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + mkdir -p $(rpmbuild)/TMP && \ + mkdir -p $(rpmbuild)/BUILD && \ + mkdir -p $(rpmbuild)/RPMS && \ + mkdir -p $(rpmbuild)/SRPMS && \ + mkdir -p $(rpmbuild)/SPECS && \ + cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \ + mkdir -p $(rpmbuild)/SOURCES && \ + cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ + cp $(distdir).tar.gz $(rpmbuild)/SOURCES) + +srpm-common: dist + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C $(RPMBUILD) \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ + cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ + rm -R $$rpmbuild) + +rpm-common: + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ + rpmspec=$(pkg).spec; \ + rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ + $(MAKE) $(AM_MAKEFLAGS) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + LANG=C ${RPMBUILD} \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) --rebuild $$rpmpkg || exit 1; \ + cp $$rpmbuild/RPMS/*/* . || exit 1; \ + rm -R $$rpmbuild) --- linux-4.4.0.orig/zfs/config/tgz.am +++ linux-4.4.0/zfs/config/tgz.am @@ -0,0 +1,32 @@ +tgz-local: + @(if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +tgz-kmod: tgz-local rpm-kmod +if CONFIG_KERNEL + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ + $(RM) $$pkg1 +endif + +tgz-utils: tgz-local rpm-utils +if CONFIG_USER + name=${PACKAGE}; \ + version=${VERSION}-${RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + pkg2=$${name}-devel-$${version}.$${arch}.rpm; \ + pkg3=$${name}-test-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1 $$pkg2 $$pkg3; \ + $(RM) $$pkg1 $$pkg2 $$pkg3 +endif + +tgz: tgz-kmod tgz-utils --- linux-4.4.0.orig/zfs/config/user-arch.m4 +++ linux-4.4.0/zfs/config/user-arch.m4 @@ -0,0 +1,19 @@ +dnl # +dnl # Set the target arch for libspl atomic implementation +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER_ARCH], [ + AC_MSG_CHECKING(for target asm dir) + TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/` + + case $TARGET_ARCH in + i386|x86_64) + TARGET_ASM_DIR=asm-${TARGET_ARCH} + ;; + *) + TARGET_ASM_DIR=asm-generic + ;; + esac + + AC_SUBST([TARGET_ASM_DIR]) + AC_MSG_RESULT([$TARGET_ASM_DIR]) +]) --- linux-4.4.0.orig/zfs/config/user-dracut.m4 +++ linux-4.4.0/zfs/config/user-dracut.m4 @@ -0,0 +1,22 @@ +AC_DEFUN([ZFS_AC_CONFIG_USER_DRACUT], [ + AC_MSG_CHECKING(for dracut directory) + AC_ARG_WITH([dracutdir], + AC_HELP_STRING([--with-dracutdir=DIR], + [install dracut helpers @<:@default=check@:>@]), + [dracutdir=$withval], + [dracutdir=check]) + + AS_IF([test "x$dracutdir" = xcheck], [ + path1=/usr/share/dracut + path2=/usr/lib/dracut + default=$path2 + + AS_IF([test -d "$path1"], [dracutdir="$path1"], [ + AS_IF([test -d "$path2"], [dracutdir="$path2"], + [dracutdir="$default"]) + ]) + ]) + + AC_SUBST(dracutdir) + AC_MSG_RESULT([$dracutdir]) +]) --- linux-4.4.0.orig/zfs/config/user-frame-larger-than.m4 +++ linux-4.4.0/zfs/config/user-frame-larger-than.m4 @@ -0,0 +1,22 @@ +dnl # +dnl # Check if gcc supports -Wframe-larger-than= option. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN], [ + AC_MSG_CHECKING([for -Wframe-larger-than= support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wframe-larger-than=1024" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], + [ + FRAME_LARGER_THAN=-Wframe-larger-than=1024 + AC_MSG_RESULT([yes]) + ], + [ + FRAME_LARGER_THAN= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([FRAME_LARGER_THAN]) +]) --- linux-4.4.0.orig/zfs/config/user-libblkid.m4 +++ linux-4.4.0/zfs/config/user-libblkid.m4 @@ -0,0 +1,113 @@ +dnl # +dnl # Check for ZFS support in libblkid. This test needs to check +dnl # more than if the library exists because we expect there are +dnl # at least 3 flavors of the library out in the wild: +dnl # +dnl # 1) blkid which has no ZFS support +dnl # 2) blkid with ZFS support and a flawed method of probing +dnl # 3) blkid with ZFS support and a working method of probing +dnl # +dnl # To handle this the check first validates that there is a version +dnl # of the library installed. If there is it creates a simulated +dnl # ZFS filesystem and then links a small test app which attempts +dnl # to detect the simualated filesystem type. If it correctly +dnl # identifies the filesystem as ZFS we can safely assume case 3). +dnl # Otherwise we disable blkid support and resort to manual probing. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [ + AC_ARG_WITH([blkid], + [AS_HELP_STRING([--with-blkid], + [support blkid caching @<:@default=check@:>@])], + [], + [with_blkid=check]) + + LIBBLKID= + AS_IF([test "x$with_blkid" = xyes], + [ + AC_SUBST([LIBBLKID], ["-lblkid"]) + AC_DEFINE([HAVE_LIBBLKID], 1, + [Define if you have libblkid]) + ]) + + AS_IF([test "x$with_blkid" = xcheck], + [ + AC_CHECK_LIB([blkid], [blkid_get_cache], + [ + AC_MSG_CHECKING([for blkid zfs support]) + + ZFS_DEV=`mktemp` + truncate -s 64M $ZFS_DEV + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=128 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=132 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=136 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=140 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + + saved_LIBS="$LIBS" + LIBS="-lblkid" + + AC_RUN_IFELSE([AC_LANG_PROGRAM( + [ + #include + #include + #include + ], + [ + blkid_cache cache; + char *value; + + if (blkid_get_cache(&cache, NULL) < 0) + return 1; + + value = blkid_get_tag_value(cache, "TYPE", + "$ZFS_DEV"); + if (!value) { + blkid_put_cache(cache); + return 2; + } + + if (strcmp(value, "zfs_member")) { + free(value); + blkid_put_cache(cache); + return 0; + } + + free(value); + blkid_put_cache(cache); + ])], + [ + rm -f $ZFS_DEV + AC_MSG_RESULT([yes]) + AC_SUBST([LIBBLKID], ["-lblkid"]) + AC_DEFINE([HAVE_LIBBLKID], 1, + [Define if you have libblkid]) + ], + [ + rm -f $ZFS_DEV + AC_MSG_RESULT([no]) + AS_IF([test "x$with_blkid" != xcheck], + [AC_MSG_FAILURE( + [--with-blkid given but unavailable])]) + ]) + + LIBS="$saved_LIBS" + ], + [ + AS_IF([test "x$with_blkid" != xcheck], + [AC_MSG_FAILURE( + [--with-blkid given but unavailable])]) + ] + []) + ]) +]) --- linux-4.4.0.orig/zfs/config/user-libuuid.m4 +++ linux-4.4.0/zfs/config/user-libuuid.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # Check for libuuid +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER_LIBUUID], [ + LIBUUID= + + AC_CHECK_HEADER([uuid/uuid.h], [], [AC_MSG_FAILURE([ + *** uuid/uuid.h missing, libuuid-devel package required])]) + + AC_CHECK_LIB([uuid], [uuid_generate], [], [AC_MSG_FAILURE([ + *** uuid_generate() missing, libuuid-devel package required])]) + + AC_CHECK_LIB([uuid], [uuid_is_null], [], [AC_MSG_FAILURE([ + *** uuid_is_null() missing, libuuid-devel package required])]) + + AC_SUBST([LIBUUID], ["-luuid"]) + AC_DEFINE([HAVE_LIBUUID], 1, [Define if you have libuuid]) +]) --- linux-4.4.0.orig/zfs/config/user-runstatedir.m4 +++ linux-4.4.0/zfs/config/user-runstatedir.m4 @@ -0,0 +1,6 @@ +dnl For backwards compatibility; runstatedir added in autoconf 2.70. +AC_DEFUN([ZFS_AC_CONFIG_USER_RUNSTATEDIR], [ + if test "x$runstatedir" = x; then + AC_SUBST([runstatedir], ['${localstatedir}/run']) + fi +]) --- linux-4.4.0.orig/zfs/config/user-systemd.m4 +++ linux-4.4.0/zfs/config/user-systemd.m4 @@ -0,0 +1,35 @@ +AC_DEFUN([ZFS_AC_CONFIG_USER_SYSTEMD], [ + AC_ARG_ENABLE(systemd, + AC_HELP_STRING([--enable-systemd], + [install systemd unit/preset files [[default: yes]]]), + [],enable_systemd=yes) + + AC_ARG_WITH(systemdunitdir, + AC_HELP_STRING([--with-systemdunitdir=DIR], + [install systemd unit files in dir [[/usr/lib/systemd/system]]]), + systemdunitdir=$withval,systemdunitdir=/usr/lib/systemd/system) + + AC_ARG_WITH(systemdpresetdir, + AC_HELP_STRING([--with-systemdpresetdir=DIR], + [install systemd preset files in dir [[/usr/lib/systemd/system-preset]]]), + systemdpresetdir=$withval,systemdpresetdir=/usr/lib/systemd/system-preset) + + AC_ARG_WITH(systemdmodulesloaddir, + AC_HELP_STRING([--with-systemdmodulesloaddir=DIR], + [install systemd module load files into dir [[/usr/lib/modules-load.d]]]), + systemdmoduleloaddir=$withval,systemdmodulesloaddir=/usr/lib/modules-load.d) + + + AS_IF([test "x$enable_systemd" = xyes], + [ + ZFS_INIT_SYSTEMD=systemd + ZFS_MODULE_LOAD=modules-load.d + modulesloaddir=$systemdmodulesloaddir + ]) + + AC_SUBST(ZFS_INIT_SYSTEMD) + AC_SUBST(ZFS_MODULE_LOAD) + AC_SUBST(systemdunitdir) + AC_SUBST(systemdpresetdir) + AC_SUBST(modulesloaddir) +]) --- linux-4.4.0.orig/zfs/config/user-sysvinit.m4 +++ linux-4.4.0/zfs/config/user-sysvinit.m4 @@ -0,0 +1,11 @@ +AC_DEFUN([ZFS_AC_CONFIG_USER_SYSVINIT], [ + AC_ARG_ENABLE(sysvinit, + AC_HELP_STRING([--enable-sysvinit], + [install SysV init scripts [default: yes]]), + [],enable_sysvinit=yes) + + AS_IF([test "x$enable_sysvinit" = xyes], + [ZFS_INIT_SYSV=init.d]) + + AC_SUBST(ZFS_INIT_SYSV) +]) --- linux-4.4.0.orig/zfs/config/user-udev.m4 +++ linux-4.4.0/zfs/config/user-udev.m4 @@ -0,0 +1,29 @@ +AC_DEFUN([ZFS_AC_CONFIG_USER_UDEV], [ + AC_MSG_CHECKING(for udev directories) + AC_ARG_WITH(udevdir, + AC_HELP_STRING([--with-udevdir=DIR], + [install udev helpers @<:@default=check@:>@]), + [udevdir=$withval], + [udevdir=check]) + + AS_IF([test "x$udevdir" = xcheck], [ + path1=/lib/udev + path2=/usr/lib/udev + default=$path2 + + AS_IF([test -d "$path1"], [udevdir="$path1"], [ + AS_IF([test -d "$path2"], [udevdir="$path2"], + [udevdir="$default"]) + ]) + ]) + + AC_ARG_WITH(udevruledir, + AC_HELP_STRING([--with-udevruledir=DIR], + [install udev rules [[UDEVDIR/rules.d]]]), + [udevruledir=$withval], + [udevruledir="${udevdir}/rules.d"]) + + AC_SUBST(udevdir) + AC_SUBST(udevruledir) + AC_MSG_RESULT([$udevdir;$udevruledir]) +]) --- linux-4.4.0.orig/zfs/config/user-zlib.m4 +++ linux-4.4.0/zfs/config/user-zlib.m4 @@ -0,0 +1,21 @@ +dnl # +dnl # Check for zlib +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER_ZLIB], [ + ZLIB= + + AC_CHECK_HEADER([zlib.h], [], [AC_MSG_FAILURE([ + *** zlib.h missing, zlib-devel package required])]) + + AC_CHECK_LIB([z], [compress2], [], [AC_MSG_FAILURE([ + *** compress2() missing, zlib-devel package required])]) + + AC_CHECK_LIB([z], [uncompress], [], [AC_MSG_FAILURE([ + *** uncompress() missing, zlib-devel package required])]) + + AC_CHECK_LIB([z], [crc32], [], [AC_MSG_FAILURE([ + *** crc32() missing, zlib-devel package required])]) + + AC_SUBST([ZLIB], ["-lz"]) + AC_DEFINE([HAVE_ZLIB], 1, [Define if you have zlib]) +]) --- linux-4.4.0.orig/zfs/config/user.m4 +++ linux-4.4.0/zfs/config/user.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # Default ZFS user configuration +dnl # +AC_DEFUN([ZFS_AC_CONFIG_USER], [ + ZFS_AC_DKMS_INHIBIT + ZFS_AC_CONFIG_USER_MOUNT_HELPER + ZFS_AC_CONFIG_USER_UDEV + ZFS_AC_CONFIG_USER_SYSTEMD + ZFS_AC_CONFIG_USER_SYSVINIT + ZFS_AC_CONFIG_USER_DRACUT + ZFS_AC_CONFIG_USER_ARCH + ZFS_AC_CONFIG_USER_ZLIB + ZFS_AC_CONFIG_USER_LIBUUID + ZFS_AC_CONFIG_USER_LIBBLKID + ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN + ZFS_AC_CONFIG_USER_RUNSTATEDIR +dnl # +dnl # Checks for library functions + AC_CHECK_FUNCS([mlockall]) +]) --- linux-4.4.0.orig/zfs/config/zfs-build.m4 +++ linux-4.4.0/zfs/config/zfs-build.m4 @@ -0,0 +1,347 @@ +AC_DEFUN([ZFS_AC_LICENSE], [ + AC_MSG_CHECKING([zfs author]) + AC_MSG_RESULT([$ZFS_META_AUTHOR]) + + AC_MSG_CHECKING([zfs license]) + AC_MSG_RESULT([$ZFS_META_LICENSE]) +]) + +AC_DEFUN([ZFS_AC_DEBUG], [ + AC_MSG_CHECKING([whether debugging is enabled]) + AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [Enable generic debug support @<:@default=no@:>@])], + [], + [enable_debug=no]) + + AS_IF([test "x$enable_debug" = xyes], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" + HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG -Werror" + DEBUG_CFLAGS="-DDEBUG -Werror" + DEBUG_STACKFLAGS="-fstack-check" + DEBUG_ZFS="_with_debug" + AC_DEFINE(ZFS_DEBUG, 1, [zfs debugging enabled]) + ], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG " + HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG " + DEBUG_CFLAGS="-DNDEBUG" + DEBUG_STACKFLAGS="" + DEBUG_ZFS="_without_debug" + ]) + + AC_SUBST(DEBUG_CFLAGS) + AC_SUBST(DEBUG_STACKFLAGS) + AC_SUBST(DEBUG_ZFS) + AC_MSG_RESULT([$enable_debug]) +]) + +AC_DEFUN([ZFS_AC_DEBUG_DMU_TX], [ + AC_ARG_ENABLE([debug-dmu-tx], + [AS_HELP_STRING([--enable-debug-dmu-tx], + [Enable dmu tx validation @<:@default=no@:>@])], + [], + [enable_debug_dmu_tx=no]) + + AS_IF([test "x$enable_debug_dmu_tx" = xyes], + [ + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_DMU_TX" + DEBUG_DMU_TX="_with_debug_dmu_tx" + AC_DEFINE([DEBUG_DMU_TX], [1], + [Define to 1 to enabled dmu tx validation]) + ], + [ + DEBUG_DMU_TX="_without_debug_dmu_tx" + ]) + + AC_SUBST(DEBUG_DMU_TX) + AC_MSG_CHECKING([whether dmu tx validation is enabled]) + AC_MSG_RESULT([$enable_debug_dmu_tx]) +]) + +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [ + ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE + ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE +]) + +AC_DEFUN([ZFS_AC_CONFIG], [ + TARGET_ASM_DIR=asm-generic + AC_SUBST(TARGET_ASM_DIR) + + ZFS_CONFIG=all + AC_ARG_WITH([config], + AS_HELP_STRING([--with-config=CONFIG], + [Config file 'kernel|user|all|srpm']), + [ZFS_CONFIG="$withval"]) + AC_ARG_ENABLE([linux-builtin], + [AC_HELP_STRING([--enable-linux-builtin], + [Configure for builtin in-tree kernel modules @<:@default=no@:>@])], + [], + [enable_linux_builtin=no]) + + AC_MSG_CHECKING([zfs config]) + AC_MSG_RESULT([$ZFS_CONFIG]); + AC_SUBST(ZFS_CONFIG) + + ZFS_AC_CONFIG_ALWAYS + + case "$ZFS_CONFIG" in + user) ZFS_AC_CONFIG_USER ;; + kernel) ZFS_AC_CONFIG_KERNEL ;; + all) ZFS_AC_CONFIG_USER + ZFS_AC_CONFIG_KERNEL ;; + srpm) ;; + *) + AC_MSG_RESULT([Error!]) + AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config, + user kernel|user|all|srpm]) ;; + esac + + AM_CONDITIONAL([CONFIG_USER], + [test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all]) + AM_CONDITIONAL([CONFIG_KERNEL], + [test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] && + [test "x$enable_linux_builtin" != xyes ]) +]) + +dnl # +dnl # Check for rpm+rpmbuild to build RPM packages. If these tools +dnl # are missing it is non-fatal but you will not be able to build +dnl # RPM packages and will be warned if you try too. +dnl # +dnl # By default the generic spec file will be used because it requires +dnl # minimal dependencies. Distribution specific spec files can be +dnl # placed under the 'rpm/' directory and enabled using +dnl # the --with-spec= configure option. +dnl # +AC_DEFUN([ZFS_AC_RPM], [ + RPM=rpm + RPMBUILD=rpmbuild + + AC_MSG_CHECKING([whether $RPM is available]) + AS_IF([tmp=$($RPM --version 2>/dev/null)], [ + RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') + HAVE_RPM=yes + AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)]) + ],[ + HAVE_RPM=no + AC_MSG_RESULT([$HAVE_RPM]) + ]) + + AC_MSG_CHECKING([whether $RPMBUILD is available]) + AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [ + RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') + HAVE_RPMBUILD=yes + AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)]) + ],[ + HAVE_RPMBUILD=no + AC_MSG_RESULT([$HAVE_RPMBUILD]) + ]) + + RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1" --define "$(DEBUG_DMU_TX) 1"' + RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)" --define "_udevdir $(udevdir)" --define "_udevruledir $(udevruledir)" --define "_initconfdir $(DEFAULT_INITCONF_DIR)" $(DEFINE_INITRAMFS)' + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)" --define "require_spldir $(SPL)" --define "require_splobj $(SPL_OBJ)" --define "ksrc $(LINUX)" --define "kobj $(LINUX_OBJ)"' + RPM_DEFINE_DKMS= + + SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' + SRPM_DEFINE_UTIL= + SRPM_DEFINE_KMOD= + SRPM_DEFINE_DKMS= + + RPM_SPEC_DIR="rpm/generic" + AC_ARG_WITH([spec], + AS_HELP_STRING([--with-spec=SPEC], + [Spec files 'generic|redhat']), + [RPM_SPEC_DIR="rpm/$withval"]) + + AC_MSG_CHECKING([whether spec files are available]) + AC_MSG_RESULT([yes ($RPM_SPEC_DIR/*.spec.in)]) + + AC_SUBST(HAVE_RPM) + AC_SUBST(RPM) + AC_SUBST(RPM_VERSION) + + AC_SUBST(HAVE_RPMBUILD) + AC_SUBST(RPMBUILD) + AC_SUBST(RPMBUILD_VERSION) + + AC_SUBST(RPM_SPEC_DIR) + AC_SUBST(RPM_DEFINE_UTIL) + AC_SUBST(RPM_DEFINE_KMOD) + AC_SUBST(RPM_DEFINE_DKMS) + AC_SUBST(RPM_DEFINE_COMMON) + AC_SUBST(SRPM_DEFINE_UTIL) + AC_SUBST(SRPM_DEFINE_KMOD) + AC_SUBST(SRPM_DEFINE_DKMS) + AC_SUBST(SRPM_DEFINE_COMMON) +]) + +dnl # +dnl # Check for dpkg+dpkg-buildpackage to build DEB packages. If these +dnl # tools are missing it is non-fatal but you will not be able to build +dnl # DEB packages and will be warned if you try too. +dnl # +AC_DEFUN([ZFS_AC_DPKG], [ + DPKG=dpkg + DPKGBUILD=dpkg-buildpackage + + AC_MSG_CHECKING([whether $DPKG is available]) + AS_IF([tmp=$($DPKG --version 2>/dev/null)], [ + DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }') + HAVE_DPKG=yes + AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)]) + ],[ + HAVE_DPKG=no + AC_MSG_RESULT([$HAVE_DPKG]) + ]) + + AC_MSG_CHECKING([whether $DPKGBUILD is available]) + AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [ + DPKGBUILD_VERSION=$(echo $tmp | \ + $AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.') + HAVE_DPKGBUILD=yes + AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)]) + ],[ + HAVE_DPKGBUILD=no + AC_MSG_RESULT([$HAVE_DPKGBUILD]) + ]) + + AC_SUBST(HAVE_DPKG) + AC_SUBST(DPKG) + AC_SUBST(DPKG_VERSION) + + AC_SUBST(HAVE_DPKGBUILD) + AC_SUBST(DPKGBUILD) + AC_SUBST(DPKGBUILD_VERSION) +]) + +dnl # +dnl # Until native packaging for various different packing systems +dnl # can be added the least we can do is attempt to use alien to +dnl # convert the RPM packages to the needed package type. This is +dnl # a hack but so far it has worked reasonable well. +dnl # +AC_DEFUN([ZFS_AC_ALIEN], [ + ALIEN=alien + + AC_MSG_CHECKING([whether $ALIEN is available]) + AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [ + ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }') + HAVE_ALIEN=yes + AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)]) + ],[ + HAVE_ALIEN=no + AC_MSG_RESULT([$HAVE_ALIEN]) + ]) + + AC_SUBST(HAVE_ALIEN) + AC_SUBST(ALIEN) + AC_SUBST(ALIEN_VERSION) +]) + +dnl # +dnl # Using the VENDOR tag from config.guess set the default +dnl # package type for 'make pkg': (rpm | deb | tgz) +dnl # +AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ + AC_MSG_CHECKING([linux distribution]) + if test -f /etc/toss-release ; then + VENDOR=toss ; + elif test -f /etc/fedora-release ; then + VENDOR=fedora ; + elif test -f /etc/redhat-release ; then + VENDOR=redhat ; + elif test -f /etc/gentoo-release ; then + VENDOR=gentoo ; + elif test -f /etc/arch-release ; then + VENDOR=arch ; + elif test -f /etc/SuSE-release ; then + VENDOR=sles ; + elif test -f /etc/slackware-version ; then + VENDOR=slackware ; + elif test -f /etc/lunar.release ; then + VENDOR=lunar ; + elif test -f /etc/lsb-release ; then + VENDOR=ubuntu ; + elif test -f /etc/debian_version ; then + VENDOR=debian ; + else + VENDOR= ; + fi + AC_MSG_RESULT([$VENDOR]) + AC_SUBST(VENDOR) + + AC_MSG_CHECKING([default package type]) + case "$VENDOR" in + toss) DEFAULT_PACKAGE=rpm ;; + redhat) DEFAULT_PACKAGE=rpm ;; + fedora) DEFAULT_PACKAGE=rpm ;; + gentoo) DEFAULT_PACKAGE=tgz ;; + arch) DEFAULT_PACKAGE=tgz ;; + sles) DEFAULT_PACKAGE=rpm ;; + slackware) DEFAULT_PACKAGE=tgz ;; + lunar) DEFAULT_PACKAGE=tgz ;; + ubuntu) DEFAULT_PACKAGE=deb ;; + debian) DEFAULT_PACKAGE=deb ;; + *) DEFAULT_PACKAGE=rpm ;; + esac + AC_MSG_RESULT([$DEFAULT_PACKAGE]) + AC_SUBST(DEFAULT_PACKAGE) + + DEFAULT_INIT_DIR=$sysconfdir/init.d + AC_MSG_CHECKING([default init directory]) + AC_MSG_RESULT([$DEFAULT_INIT_DIR]) + AC_SUBST(DEFAULT_INIT_DIR) + + AC_MSG_CHECKING([default init script type]) + case "$VENDOR" in + toss) DEFAULT_INIT_SCRIPT=redhat ;; + redhat) DEFAULT_INIT_SCRIPT=redhat ;; + fedora) DEFAULT_INIT_SCRIPT=fedora ;; + gentoo) DEFAULT_INIT_SCRIPT=gentoo ;; + arch) DEFAULT_INIT_SCRIPT=lsb ;; + sles) DEFAULT_INIT_SCRIPT=lsb ;; + slackware) DEFAULT_INIT_SCRIPT=lsb ;; + lunar) DEFAULT_INIT_SCRIPT=lunar ;; + ubuntu) DEFAULT_INIT_SCRIPT=lsb ;; + debian) DEFAULT_INIT_SCRIPT=lsb ;; + *) DEFAULT_INIT_SCRIPT=lsb ;; + esac + AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT]) + AC_SUBST(DEFAULT_INIT_SCRIPT) + + AC_MSG_CHECKING([default init config direectory]) + case "$VENDOR" in + gentoo) DEFAULT_INITCONF_DIR=/etc/conf.d ;; + toss) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + redhat) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + fedora) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + sles) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + ubuntu) DEFAULT_INITCONF_DIR=/etc/default ;; + debian) DEFAULT_INITCONF_DIR=/etc/default ;; + *) DEFAULT_INITCONF_DIR=/etc/default ;; + esac + AC_MSG_RESULT([$DEFAULT_INITCONF_DIR]) + AC_SUBST(DEFAULT_INITCONF_DIR) + + AC_MSG_CHECKING([whether initramfs-tools is available]) + if test -d /usr/share/initramfs-tools ; then + DEFINE_INITRAMFS='--define "_initramfs 1"' + AC_MSG_RESULT([yes]) + else + DEFINE_INITRAMFS='' + AC_MSG_RESULT([no]) + fi + AC_SUBST(DEFINE_INITRAMFS) +]) + +dnl # +dnl # Default ZFS package configuration +dnl # +AC_DEFUN([ZFS_AC_PACKAGE], [ + ZFS_AC_DEFAULT_PACKAGE + ZFS_AC_RPM + ZFS_AC_DPKG + ZFS_AC_ALIEN +]) --- linux-4.4.0.orig/zfs/config/zfs-meta.m4 +++ linux-4.4.0/zfs/config/zfs-meta.m4 @@ -0,0 +1,197 @@ +dnl # +dnl # DESCRIPTION: +dnl # Read meta data from the META file or the debian/changelog file if it +dnl # exists. When building from a git repository the ZFS_META_RELEASE field +dnl # will be overwritten if there is an annotated tag matching the form +dnl # ZFS_META_NAME-ZFS_META_VERSION-*. This allows for working builds to be +dnl # uniquely identified using the git commit hash. +dnl # +dnl # The META file format is as follows: +dnl # ^[ ]*KEY:[ \t]+VALUE$ +dnl # +dnl # In other words: +dnl # - KEY is separated from VALUE by a colon and one or more spaces/tabs. +dnl # - KEY and VALUE are case sensitive. +dnl # - Leading spaces are ignored. +dnl # - First match wins for duplicate keys. +dnl # +dnl # A line can be commented out by preceding it with a '#' (or technically +dnl # any non-space character since that will prevent the regex from +dnl # matching). +dnl # +dnl # WARNING: +dnl # Placing a colon followed by a space or tab (ie, ":[ \t]+") within the +dnl # VALUE will prematurely terminate the string since that sequence is +dnl # used as the awk field separator. +dnl # +dnl # KEYS: +dnl # The following META keys are recognized: +dnl # Name, Version, Release, Date, Author, LT_Current, LT_Revision, LT_Age +dnl # +dnl # Written by Chris Dunlap . +dnl # Modified by Brian Behlendorf . +dnl # +AC_DEFUN([ZFS_AC_META], [ + + AH_BOTTOM([ +#undef PACKAGE +#undef PACKAGE_BUGREPORT +#undef PACKAGE_NAME +#undef PACKAGE_STRING +#undef PACKAGE_TARNAME +#undef PACKAGE_VERSION +#undef STDC_HEADERS +#undef VERSION]) + + AC_PROG_AWK + AC_MSG_CHECKING([metadata]) + + META="$srcdir/META" + _zfs_ac_meta_type="none" + if test -f "$META"; then + _zfs_ac_meta_type="META file" + _dpkg_parsechangelog=$(dpkg-parsechangelog 2>/dev/null) + + ZFS_META_NAME=_ZFS_AC_META_GETVAL([(Name|Project|Package)]); + if test -n "$ZFS_META_NAME"; then + AC_DEFINE_UNQUOTED([ZFS_META_NAME], ["$ZFS_META_NAME"], + [Define the project name.] + ) + AC_SUBST([ZFS_META_NAME]) + fi + + ZFS_META_VERSION=_ZFS_AC_META_GETVAL([Version]); + if test -n "$ZFS_META_VERSION"; then + AC_DEFINE_UNQUOTED([ZFS_META_VERSION], ["$ZFS_META_VERSION"], + [Define the project version.] + ) + AC_SUBST([ZFS_META_VERSION]) + fi + + if test -n "${_dpkg_parsechangelog}"; then + _dpkg_version=$(echo "${_dpkg_parsechangelog}" \ + | $AWK '$[]1 == "Version:" { print $[]2; }' \ + | cut -d- -f1) + if test "${_dpkg_version}" != "$ZFS_META_VERSION"; then + AC_MSG_ERROR([ + *** Version $ZFS_META_VERSION in the META file is different than + *** version $_dpkg_version in the debian/changelog file. DKMS and DEB + *** packaging require that these files have the same version. + ]) + fi + fi + + ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([Release]); + + if test -n "${_dpkg_parsechangelog}"; then + _dpkg_release=$(echo "${_dpkg_parsechangelog}" \ + | $AWK '$[]1 == "Version:" { print $[]2; }' \ + | cut -d- -f2-) + if test -n "${_dpkg_release}"; then + ZFS_META_RELEASE=${_dpkg_release} + _zfs_ac_meta_type="dpkg-parsechangelog" + fi + elif test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then + _match="${ZFS_META_NAME}-${ZFS_META_VERSION}" + _alias=$(git describe --match=${_match} 2>/dev/null) + _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') + if test -n "${_release}"; then + ZFS_META_RELEASE=${_release} + _zfs_ac_meta_type="git describe" + fi + fi + + if test -n "$ZFS_META_RELEASE"; then + AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"], + [Define the project release.] + ) + AC_SUBST([ZFS_META_RELEASE]) + + RELEASE="$ZFS_META_RELEASE" + AC_SUBST([RELEASE]) + fi + + ZFS_META_LICENSE=_ZFS_AC_META_GETVAL([License]); + if test -n "$ZFS_META_LICENSE"; then + AC_DEFINE_UNQUOTED([ZFS_META_LICENSE], ["$ZFS_META_LICENSE"], + [Define the project license.] + ) + AC_SUBST([ZFS_META_LICENSE]) + fi + + if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then + ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION" + test -n "$ZFS_META_RELEASE" && + ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE" + AC_DEFINE_UNQUOTED([ZFS_META_ALIAS], + ["$ZFS_META_ALIAS"], + [Define the project alias string.] + ) + AC_SUBST([ZFS_META_ALIAS]) + fi + + ZFS_META_DATA=_ZFS_AC_META_GETVAL([Date]); + if test -n "$ZFS_META_DATA"; then + AC_DEFINE_UNQUOTED([ZFS_META_DATA], ["$ZFS_META_DATA"], + [Define the project release date.] + ) + AC_SUBST([ZFS_META_DATA]) + fi + + ZFS_META_AUTHOR=_ZFS_AC_META_GETVAL([Author]); + if test -n "$ZFS_META_AUTHOR"; then + AC_DEFINE_UNQUOTED([ZFS_META_AUTHOR], ["$ZFS_META_AUTHOR"], + [Define the project author.] + ) + AC_SUBST([ZFS_META_AUTHOR]) + fi + + m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$]) + ZFS_META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_Current]); + ZFS_META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_Revision]); + ZFS_META_LT_AGE=_ZFS_AC_META_GETVAL([LT_Age]); + if test -n "$ZFS_META_LT_CURRENT" \ + -o -n "$ZFS_META_LT_REVISION" \ + -o -n "$ZFS_META_LT_AGE"; then + test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0" + test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0" + test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0" + AC_DEFINE_UNQUOTED([ZFS_META_LT_CURRENT], + ["$ZFS_META_LT_CURRENT"], + [Define the libtool library 'current' + version information.] + ) + AC_DEFINE_UNQUOTED([ZFS_META_LT_REVISION], + ["$ZFS_META_LT_REVISION"], + [Define the libtool library 'revision' + version information.] + ) + AC_DEFINE_UNQUOTED([ZFS_META_LT_AGE], ["$ZFS_META_LT_AGE"], + [Define the libtool library 'age' + version information.] + ) + AC_SUBST([ZFS_META_LT_CURRENT]) + AC_SUBST([ZFS_META_LT_REVISION]) + AC_SUBST([ZFS_META_LT_AGE]) + fi + fi + + AC_MSG_RESULT([$_zfs_ac_meta_type]) + ] +) + +dnl # _ZFS_AC_META_GETVAL (KEY_NAME_OR_REGEX) +dnl # +dnl # Returns the META VALUE associated with the given KEY_NAME_OR_REGEX expr. +dnl # +dnl # Despite their resemblance to line noise, +dnl # the "@<:@" and "@:>@" constructs are quadrigraphs for "[" and "]". +dnl # +dnl # +dnl # The "$[]1" and "$[]2" constructs prevent M4 parameter expansion +dnl # so a literal $1 and $2 will be passed to the resulting awk script, +dnl # whereas the "$1" will undergo M4 parameter expansion for the META key. +dnl # +AC_DEFUN([_ZFS_AC_META_GETVAL], + [`$AWK -F ':@<:@ \t@:>@+' '$[]1 ~ /^ *$1$/ { print $[]2; exit }' $META`]dnl +) --- linux-4.4.0.orig/zfs/configure +++ linux-4.4.0/zfs/configure @@ -0,0 +1,33642 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for zfs 0.6.5.4. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='zfs' +PACKAGE_TARNAME='zfs' +PACKAGE_VERSION='0.6.5.4' +PACKAGE_STRING='zfs 0.6.5.4' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +DEBUG_DMU_TX +DEBUG_ZFS +DEBUG_STACKFLAGS +DEBUG_CFLAGS +CONFIG_KERNEL_FALSE +CONFIG_KERNEL_TRUE +CONFIG_USER_FALSE +CONFIG_USER_TRUE +KERNELCPPFLAGS +KERNELMAKE_PARAMS +SPL_SYMBOLS +SPL_VERSION +SPL_OBJ +SPL +LINUX_SYMBOLS +LINUX_VERSION +LINUX_OBJ +LINUX +FRAME_LARGER_THAN +LIBBLKID +LIBUUID +ZLIB +dracutdir +ZFS_INIT_SYSV +modulesloaddir +systemdpresetdir +systemdunitdir +ZFS_MODULE_LOAD +ZFS_INIT_SYSTEMD +udevruledir +udevdir +mounthelperdir +NO_BOOL_COMPARE +NO_UNUSED_BUT_SET_VARIABLE +ZFS_CONFIG +TARGET_ASM_DIR +ALIEN_VERSION +ALIEN +HAVE_ALIEN +DPKGBUILD_VERSION +DPKGBUILD +HAVE_DPKGBUILD +DPKG_VERSION +DPKG +HAVE_DPKG +SRPM_DEFINE_COMMON +SRPM_DEFINE_DKMS +SRPM_DEFINE_KMOD +SRPM_DEFINE_UTIL +RPM_DEFINE_COMMON +RPM_DEFINE_DKMS +RPM_DEFINE_KMOD +RPM_DEFINE_UTIL +RPM_SPEC_DIR +RPMBUILD_VERSION +RPMBUILD +HAVE_RPMBUILD +RPM_VERSION +RPM +HAVE_RPM +DEFINE_INITRAMFS +DEFAULT_INITCONF_DIR +DEFAULT_INIT_SCRIPT +DEFAULT_INIT_DIR +DEFAULT_PACKAGE +VENDOR +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +ZFS_META_LT_AGE +ZFS_META_LT_REVISION +ZFS_META_LT_CURRENT +ZFS_META_AUTHOR +ZFS_META_DATA +ZFS_META_ALIAS +ZFS_META_LICENSE +RELEASE +ZFS_META_RELEASE +ZFS_META_VERSION +ZFS_META_NAME +AWK +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_spec +with_config +enable_linux_builtin +with_mounthelperdir +with_udevdir +with_udevruledir +enable_systemd +with_systemdunitdir +with_systemdpresetdir +with_systemdmodulesloaddir +enable_sysvinit +with_dracutdir +with_blkid +with_linux +with_linux_obj +with_spl +with_spl_obj +with_spl_timeout +enable_debug +enable_debug_dmu_tx +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +LT_SYS_LIBRARY_PATH +CPP +CCAS +CCASFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures zfs 0.6.5.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/zfs] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of zfs 0.6.5.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-linux-builtin Configure for builtin in-tree kernel modules + [default=no] + --enable-systemd install systemd unit/preset files [[default: yes]] + --enable-sysvinit install SysV init scripts [default: yes] + --enable-debug Enable generic debug support [default=no] + --enable-debug-dmu-tx Enable dmu tx validation [default=no] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-spec=SPEC Spec files 'generic|redhat' + --with-config=CONFIG Config file 'kernel|user|all|srpm' + --with-mounthelperdir=DIR + install mount.zfs in dir [[/sbin]] + --with-udevdir=DIR install udev helpers [default=check] + --with-udevruledir=DIR install udev rules [[UDEVDIR/rules.d]] + --with-systemdunitdir=DIR + install systemd unit files in dir + [[/usr/lib/systemd/system]] + --with-systemdpresetdir=DIR + install systemd preset files in dir + [[/usr/lib/systemd/system-preset]] + --with-systemdmodulesloaddir=DIR + install systemd module load files into dir + [[/usr/lib/modules-load.d]] + --with-dracutdir=DIR install dracut helpers [default=check] + --with-blkid support blkid caching [default=check] + --with-linux=PATH Path to kernel source + --with-linux-obj=PATH Path to kernel build objects + --with-spl=PATH Path to spl source + --with-spl-obj=PATH Path to spl build objects + --with-spl-timeout=SECS Wait SECS for SPL header and symver file [default=0] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +zfs configure 0.6.5.4 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by zfs $as_me 0.6.5.4, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking metadata" >&5 +$as_echo_n "checking metadata... " >&6; } + + META="$srcdir/META" + _zfs_ac_meta_type="none" + if test -f "$META"; then + _zfs_ac_meta_type="META file" + _dpkg_parsechangelog=$(dpkg-parsechangelog 2>/dev/null) + + ZFS_META_NAME=`$AWK -F ':[ \t]+' '$1 ~ /^ *(Name|Project|Package)$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_NAME"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_NAME "$ZFS_META_NAME" +_ACEOF + + + fi + + ZFS_META_VERSION=`$AWK -F ':[ \t]+' '$1 ~ /^ *Version$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_VERSION"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_VERSION "$ZFS_META_VERSION" +_ACEOF + + + fi + + if test -n "${_dpkg_parsechangelog}"; then + _dpkg_version=$(echo "${_dpkg_parsechangelog}" \ + | $AWK '$1 == "Version:" { print $2; }' \ + | cut -d- -f1) + if test "${_dpkg_version}" != "$ZFS_META_VERSION"; then + as_fn_error $? " + *** Version $ZFS_META_VERSION in the META file is different than + *** version $_dpkg_version in the debian/changelog file. DKMS and DEB + *** packaging require that these files have the same version. + " "$LINENO" 5 + fi + fi + + ZFS_META_RELEASE=`$AWK -F ':[ \t]+' '$1 ~ /^ *Release$/ { print $2; exit }' $META`; + + if test -n "${_dpkg_parsechangelog}"; then + _dpkg_release=$(echo "${_dpkg_parsechangelog}" \ + | $AWK '$1 == "Version:" { print $2; }' \ + | cut -d- -f2-) + if test -n "${_dpkg_release}"; then + ZFS_META_RELEASE=${_dpkg_release} + _zfs_ac_meta_type="dpkg-parsechangelog" + fi + elif test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then + _match="${ZFS_META_NAME}-${ZFS_META_VERSION}" + _alias=$(git describe --match=${_match} 2>/dev/null) + _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') + if test -n "${_release}"; then + ZFS_META_RELEASE=${_release} + _zfs_ac_meta_type="git describe" + fi + fi + + if test -n "$ZFS_META_RELEASE"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_RELEASE "$ZFS_META_RELEASE" +_ACEOF + + + + RELEASE="$ZFS_META_RELEASE" + + fi + + ZFS_META_LICENSE=`$AWK -F ':[ \t]+' '$1 ~ /^ *License$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_LICENSE"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_LICENSE "$ZFS_META_LICENSE" +_ACEOF + + + fi + + if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then + ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION" + test -n "$ZFS_META_RELEASE" && + ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE" + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_ALIAS "$ZFS_META_ALIAS" +_ACEOF + + + fi + + ZFS_META_DATA=`$AWK -F ':[ \t]+' '$1 ~ /^ *Date$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_DATA"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_DATA "$ZFS_META_DATA" +_ACEOF + + + fi + + ZFS_META_AUTHOR=`$AWK -F ':[ \t]+' '$1 ~ /^ *Author$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_AUTHOR"; then + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_AUTHOR "$ZFS_META_AUTHOR" +_ACEOF + + + fi + + + ZFS_META_LT_CURRENT=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Current$/ { print $2; exit }' $META`; + ZFS_META_LT_REVISION=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Revision$/ { print $2; exit }' $META`; + ZFS_META_LT_AGE=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Age$/ { print $2; exit }' $META`; + if test -n "$ZFS_META_LT_CURRENT" \ + -o -n "$ZFS_META_LT_REVISION" \ + -o -n "$ZFS_META_LT_AGE"; then + test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0" + test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0" + test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0" + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_LT_CURRENT "$ZFS_META_LT_CURRENT" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_LT_REVISION "$ZFS_META_LT_REVISION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define ZFS_META_LT_AGE "$ZFS_META_LT_AGE" +_ACEOF + + + + + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_zfs_ac_meta_type" >&5 +$as_echo "$_zfs_ac_meta_type" >&6; } + + +ac_aux_dir= +for ac_dir in config "$srcdir"/config; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +am__api_version='1.15' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='zfs' + VERSION='0.6.5.4' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +ac_config_headers="$ac_config_headers zfs_config.h" + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zfs author" >&5 +$as_echo_n "checking zfs author... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZFS_META_AUTHOR" >&5 +$as_echo "$ZFS_META_AUTHOR" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zfs license" >&5 +$as_echo_n "checking zfs license... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZFS_META_LICENSE" >&5 +$as_echo "$ZFS_META_LICENSE" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking linux distribution" >&5 +$as_echo_n "checking linux distribution... " >&6; } + if test -f /etc/toss-release ; then + VENDOR=toss ; + elif test -f /etc/fedora-release ; then + VENDOR=fedora ; + elif test -f /etc/redhat-release ; then + VENDOR=redhat ; + elif test -f /etc/gentoo-release ; then + VENDOR=gentoo ; + elif test -f /etc/arch-release ; then + VENDOR=arch ; + elif test -f /etc/SuSE-release ; then + VENDOR=sles ; + elif test -f /etc/slackware-version ; then + VENDOR=slackware ; + elif test -f /etc/lunar.release ; then + VENDOR=lunar ; + elif test -f /etc/lsb-release ; then + VENDOR=ubuntu ; + elif test -f /etc/debian_version ; then + VENDOR=debian ; + else + VENDOR= ; + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VENDOR" >&5 +$as_echo "$VENDOR" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default package type" >&5 +$as_echo_n "checking default package type... " >&6; } + case "$VENDOR" in + toss) DEFAULT_PACKAGE=rpm ;; + redhat) DEFAULT_PACKAGE=rpm ;; + fedora) DEFAULT_PACKAGE=rpm ;; + gentoo) DEFAULT_PACKAGE=tgz ;; + arch) DEFAULT_PACKAGE=tgz ;; + sles) DEFAULT_PACKAGE=rpm ;; + slackware) DEFAULT_PACKAGE=tgz ;; + lunar) DEFAULT_PACKAGE=tgz ;; + ubuntu) DEFAULT_PACKAGE=deb ;; + debian) DEFAULT_PACKAGE=deb ;; + *) DEFAULT_PACKAGE=rpm ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_PACKAGE" >&5 +$as_echo "$DEFAULT_PACKAGE" >&6; } + + + DEFAULT_INIT_DIR=$sysconfdir/init.d + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default init directory" >&5 +$as_echo_n "checking default init directory... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_INIT_DIR" >&5 +$as_echo "$DEFAULT_INIT_DIR" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default init script type" >&5 +$as_echo_n "checking default init script type... " >&6; } + case "$VENDOR" in + toss) DEFAULT_INIT_SCRIPT=redhat ;; + redhat) DEFAULT_INIT_SCRIPT=redhat ;; + fedora) DEFAULT_INIT_SCRIPT=fedora ;; + gentoo) DEFAULT_INIT_SCRIPT=gentoo ;; + arch) DEFAULT_INIT_SCRIPT=lsb ;; + sles) DEFAULT_INIT_SCRIPT=lsb ;; + slackware) DEFAULT_INIT_SCRIPT=lsb ;; + lunar) DEFAULT_INIT_SCRIPT=lunar ;; + ubuntu) DEFAULT_INIT_SCRIPT=lsb ;; + debian) DEFAULT_INIT_SCRIPT=lsb ;; + *) DEFAULT_INIT_SCRIPT=lsb ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_INIT_SCRIPT" >&5 +$as_echo "$DEFAULT_INIT_SCRIPT" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default init config direectory" >&5 +$as_echo_n "checking default init config direectory... " >&6; } + case "$VENDOR" in + gentoo) DEFAULT_INITCONF_DIR=/etc/conf.d ;; + toss) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + redhat) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + fedora) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + sles) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; + ubuntu) DEFAULT_INITCONF_DIR=/etc/default ;; + debian) DEFAULT_INITCONF_DIR=/etc/default ;; + *) DEFAULT_INITCONF_DIR=/etc/default ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_INITCONF_DIR" >&5 +$as_echo "$DEFAULT_INITCONF_DIR" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether initramfs-tools is available" >&5 +$as_echo_n "checking whether initramfs-tools is available... " >&6; } + if test -d /usr/share/initramfs-tools ; then + DEFINE_INITRAMFS='--define "_initramfs 1"' + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + DEFINE_INITRAMFS='' + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + + + RPM=rpm + RPMBUILD=rpmbuild + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $RPM is available" >&5 +$as_echo_n "checking whether $RPM is available... " >&6; } + if tmp=$($RPM --version 2>/dev/null); then : + + RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') + HAVE_RPM=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPM ($RPM_VERSION)" >&5 +$as_echo "$HAVE_RPM ($RPM_VERSION)" >&6; } + +else + + HAVE_RPM=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPM" >&5 +$as_echo "$HAVE_RPM" >&6; } + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $RPMBUILD is available" >&5 +$as_echo_n "checking whether $RPMBUILD is available... " >&6; } + if tmp=$($RPMBUILD --version 2>/dev/null); then : + + RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') + HAVE_RPMBUILD=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&5 +$as_echo "$HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&6; } + +else + + HAVE_RPMBUILD=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_RPMBUILD" >&5 +$as_echo "$HAVE_RPMBUILD" >&6; } + +fi + + RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1" --define "$(DEBUG_DMU_TX) 1"' + RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)" --define "_udevdir $(udevdir)" --define "_udevruledir $(udevruledir)" --define "_initconfdir $(DEFAULT_INITCONF_DIR)" $(DEFINE_INITRAMFS)' + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)" --define "require_spldir $(SPL)" --define "require_splobj $(SPL_OBJ)" --define "ksrc $(LINUX)" --define "kobj $(LINUX_OBJ)"' + RPM_DEFINE_DKMS= + + SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' + SRPM_DEFINE_UTIL= + SRPM_DEFINE_KMOD= + SRPM_DEFINE_DKMS= + + RPM_SPEC_DIR="rpm/generic" + +# Check whether --with-spec was given. +if test "${with_spec+set}" = set; then : + withval=$with_spec; RPM_SPEC_DIR="rpm/$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether spec files are available" >&5 +$as_echo_n "checking whether spec files are available... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($RPM_SPEC_DIR/*.spec.in)" >&5 +$as_echo "yes ($RPM_SPEC_DIR/*.spec.in)" >&6; } + + + + + + + + + + + + + + + + + + + + + DPKG=dpkg + DPKGBUILD=dpkg-buildpackage + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $DPKG is available" >&5 +$as_echo_n "checking whether $DPKG is available... " >&6; } + if tmp=$($DPKG --version 2>/dev/null); then : + + DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $7 }') + HAVE_DPKG=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKG ($DPKG_VERSION)" >&5 +$as_echo "$HAVE_DPKG ($DPKG_VERSION)" >&6; } + +else + + HAVE_DPKG=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKG" >&5 +$as_echo "$HAVE_DPKG" >&6; } + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $DPKGBUILD is available" >&5 +$as_echo_n "checking whether $DPKGBUILD is available... " >&6; } + if tmp=$($DPKGBUILD --version 2>/dev/null); then : + + DPKGBUILD_VERSION=$(echo $tmp | \ + $AWK '/Debian/ { print $4 }' | cut -f-4 -d'.') + HAVE_DPKGBUILD=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&5 +$as_echo "$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&6; } + +else + + HAVE_DPKGBUILD=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DPKGBUILD" >&5 +$as_echo "$HAVE_DPKGBUILD" >&6; } + +fi + + + + + + + + + + + ALIEN=alien + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ALIEN is available" >&5 +$as_echo_n "checking whether $ALIEN is available... " >&6; } + if tmp=$($ALIEN --version 2>/dev/null); then : + + ALIEN_VERSION=$(echo $tmp | $AWK '{ print $3 }') + HAVE_ALIEN=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_ALIEN ($ALIEN_VERSION)" >&5 +$as_echo "$HAVE_ALIEN ($ALIEN_VERSION)" >&6; } + +else + + HAVE_ALIEN=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_ALIEN" >&5 +$as_echo "$HAVE_ALIEN" >&6; } + +fi + + + + + + + + TARGET_ASM_DIR=asm-generic + + + ZFS_CONFIG=all + +# Check whether --with-config was given. +if test "${with_config+set}" = set; then : + withval=$with_config; ZFS_CONFIG="$withval" +fi + + # Check whether --enable-linux-builtin was given. +if test "${enable_linux_builtin+set}" = set; then : + enableval=$enable_linux_builtin; +else + enable_linux_builtin=no +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zfs config" >&5 +$as_echo_n "checking zfs config... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZFS_CONFIG" >&5 +$as_echo "$ZFS_CONFIG" >&6; }; + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wno-unused-but-set-variable support" >&5 +$as_echo_n "checking for -Wno-unused-but-set-variable support... " >&6; } + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wunused-but-set-variable" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + NO_UNUSED_BUT_SET_VARIABLE= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CFLAGS="$saved_flags" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wno-bool-compare support" >&5 +$as_echo_n "checking for -Wno-bool-compare support... " >&6; } + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wbool-compare" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + NO_BOOL_COMPARE=-Wno-bool-compare + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + NO_BOOL_COMPARE= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CFLAGS="$saved_flags" + + + + + case "$ZFS_CONFIG" in + user) + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dkms.conf file" >&5 +$as_echo_n "checking for dkms.conf file... " >&6; } + if test -e dkms.conf; then : + + as_fn_error $? " + *** ZFS should not be manually built in the DKMS source tree. + *** Remove all ZFS packages before compiling the ZoL sources. + *** Running \"make install\" breaks ZFS packages." "$LINENO" 5 + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + +fi + + + +# Check whether --with-mounthelperdir was given. +if test "${with_mounthelperdir+set}" = set; then : + withval=$with_mounthelperdir; mounthelperdir=$withval +else + mounthelperdir=/sbin +fi + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev directories" >&5 +$as_echo_n "checking for udev directories... " >&6; } + +# Check whether --with-udevdir was given. +if test "${with_udevdir+set}" = set; then : + withval=$with_udevdir; udevdir=$withval +else + udevdir=check +fi + + + if test "x$udevdir" = xcheck; then : + + path1=/lib/udev + path2=/usr/lib/udev + default=$path2 + + if test -d "$path1"; then : + udevdir="$path1" +else + + if test -d "$path2"; then : + udevdir="$path2" +else + udevdir="$default" +fi + +fi + +fi + + +# Check whether --with-udevruledir was given. +if test "${with_udevruledir+set}" = set; then : + withval=$with_udevruledir; udevruledir=$withval +else + udevruledir="${udevdir}/rules.d" +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $udevdir;$udevruledir" >&5 +$as_echo "$udevdir;$udevruledir" >&6; } + + + # Check whether --enable-systemd was given. +if test "${enable_systemd+set}" = set; then : + enableval=$enable_systemd; +else + enable_systemd=yes +fi + + + +# Check whether --with-systemdunitdir was given. +if test "${with_systemdunitdir+set}" = set; then : + withval=$with_systemdunitdir; systemdunitdir=$withval +else + systemdunitdir=/usr/lib/systemd/system +fi + + + +# Check whether --with-systemdpresetdir was given. +if test "${with_systemdpresetdir+set}" = set; then : + withval=$with_systemdpresetdir; systemdpresetdir=$withval +else + systemdpresetdir=/usr/lib/systemd/system-preset +fi + + + +# Check whether --with-systemdmodulesloaddir was given. +if test "${with_systemdmodulesloaddir+set}" = set; then : + withval=$with_systemdmodulesloaddir; systemdmoduleloaddir=$withval +else + systemdmodulesloaddir=/usr/lib/modules-load.d +fi + + + + if test "x$enable_systemd" = xyes; then : + + ZFS_INIT_SYSTEMD=systemd + ZFS_MODULE_LOAD=modules-load.d + modulesloaddir=$systemdmodulesloaddir + +fi + + + + + + + + + # Check whether --enable-sysvinit was given. +if test "${enable_sysvinit+set}" = set; then : + enableval=$enable_sysvinit; +else + enable_sysvinit=yes +fi + + + if test "x$enable_sysvinit" = xyes; then : + ZFS_INIT_SYSV=init.d +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dracut directory" >&5 +$as_echo_n "checking for dracut directory... " >&6; } + +# Check whether --with-dracutdir was given. +if test "${with_dracutdir+set}" = set; then : + withval=$with_dracutdir; dracutdir=$withval +else + dracutdir=check +fi + + + if test "x$dracutdir" = xcheck; then : + + path1=/usr/share/dracut + path2=/usr/lib/dracut + default=$path2 + + if test -d "$path1"; then : + dracutdir="$path1" +else + + if test -d "$path2"; then : + dracutdir="$path2" +else + dracutdir="$default" +fi + +fi + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dracutdir" >&5 +$as_echo "$dracutdir" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for target asm dir" >&5 +$as_echo_n "checking for target asm dir... " >&6; } + TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/` + + case $TARGET_ARCH in + i386|x86_64) + TARGET_ASM_DIR=asm-${TARGET_ARCH} + ;; + *) + TARGET_ASM_DIR=asm-generic + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TARGET_ASM_DIR" >&5 +$as_echo "$TARGET_ASM_DIR" >&6; } + + + ZLIB= + + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** zlib.h missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress2 in -lz" >&5 +$as_echo_n "checking for compress2 in -lz... " >&6; } +if ${ac_cv_lib_z_compress2+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char compress2 (); +int +main () +{ +return compress2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_compress2=yes +else + ac_cv_lib_z_compress2=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress2" >&5 +$as_echo "$ac_cv_lib_z_compress2" >&6; } +if test "x$ac_cv_lib_z_compress2" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** compress2() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uncompress in -lz" >&5 +$as_echo_n "checking for uncompress in -lz... " >&6; } +if ${ac_cv_lib_z_uncompress+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uncompress (); +int +main () +{ +return uncompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_uncompress=yes +else + ac_cv_lib_z_uncompress=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_uncompress" >&5 +$as_echo "$ac_cv_lib_z_uncompress" >&6; } +if test "x$ac_cv_lib_z_uncompress" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uncompress() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crc32 in -lz" >&5 +$as_echo_n "checking for crc32 in -lz... " >&6; } +if ${ac_cv_lib_z_crc32+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crc32 (); +int +main () +{ +return crc32 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_crc32=yes +else + ac_cv_lib_z_crc32=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_crc32" >&5 +$as_echo "$ac_cv_lib_z_crc32" >&6; } +if test "x$ac_cv_lib_z_crc32" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** crc32() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + ZLIB="-lz" + + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + + + LIBUUID= + + ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_uuid_h" = xyes; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid/uuid.h missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate in -luuid" >&5 +$as_echo_n "checking for uuid_generate in -luuid... " >&6; } +if ${ac_cv_lib_uuid_uuid_generate+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate (); +int +main () +{ +return uuid_generate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_uuid_uuid_generate=yes +else + ac_cv_lib_uuid_uuid_generate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate" >&5 +$as_echo "$ac_cv_lib_uuid_uuid_generate" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUUID 1 +_ACEOF + + LIBS="-luuid $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid_generate() missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_is_null in -luuid" >&5 +$as_echo_n "checking for uuid_is_null in -luuid... " >&6; } +if ${ac_cv_lib_uuid_uuid_is_null+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_is_null (); +int +main () +{ +return uuid_is_null (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_uuid_uuid_is_null=yes +else + ac_cv_lib_uuid_uuid_is_null=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_is_null" >&5 +$as_echo "$ac_cv_lib_uuid_uuid_is_null" >&6; } +if test "x$ac_cv_lib_uuid_uuid_is_null" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUUID 1 +_ACEOF + + LIBS="-luuid $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid_is_null() missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + LIBUUID="-luuid" + + +$as_echo "#define HAVE_LIBUUID 1" >>confdefs.h + + + + +# Check whether --with-blkid was given. +if test "${with_blkid+set}" = set; then : + withval=$with_blkid; +else + with_blkid=check +fi + + + LIBBLKID= + if test "x$with_blkid" = xyes; then : + + LIBBLKID="-lblkid" + + +$as_echo "#define HAVE_LIBBLKID 1" >>confdefs.h + + +fi + + if test "x$with_blkid" = xcheck; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid_get_cache in -lblkid" >&5 +$as_echo_n "checking for blkid_get_cache in -lblkid... " >&6; } +if ${ac_cv_lib_blkid_blkid_get_cache+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lblkid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char blkid_get_cache (); +int +main () +{ +return blkid_get_cache (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_blkid_blkid_get_cache=yes +else + ac_cv_lib_blkid_blkid_get_cache=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_get_cache" >&5 +$as_echo "$ac_cv_lib_blkid_blkid_get_cache" >&6; } +if test "x$ac_cv_lib_blkid_blkid_get_cache" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid zfs support" >&5 +$as_echo_n "checking for blkid zfs support... " >&6; } + + ZFS_DEV=`mktemp` + truncate -s 64M $ZFS_DEV + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=128 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=132 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=136 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=140 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + + saved_LIBS="$LIBS" + LIBS="-lblkid" + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + +int +main () +{ + + blkid_cache cache; + char *value; + + if (blkid_get_cache(&cache, NULL) < 0) + return 1; + + value = blkid_get_tag_value(cache, "TYPE", + "$ZFS_DEV"); + if (!value) { + blkid_put_cache(cache); + return 2; + } + + if (strcmp(value, "zfs_member")) { + free(value); + blkid_put_cache(cache); + return 0; + } + + free(value); + blkid_put_cache(cache); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + rm -f $ZFS_DEV + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBBLKID="-lblkid" + + +$as_echo "#define HAVE_LIBBLKID 1" >>confdefs.h + + +else + + rm -f $ZFS_DEV + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$with_blkid" != xcheck; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-blkid given but unavailable +See \`config.log' for more details" "$LINENO" 5; } +fi + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + LIBS="$saved_LIBS" + +else + + if test "x$with_blkid" != xcheck; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-blkid given but unavailable +See \`config.log' for more details" "$LINENO" 5; } +fi + + +fi + + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wframe-larger-than= support" >&5 +$as_echo_n "checking for -Wframe-larger-than= support... " >&6; } + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wframe-larger-than=1024" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + FRAME_LARGER_THAN=-Wframe-larger-than=1024 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + FRAME_LARGER_THAN= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CFLAGS="$saved_flags" + + + + if test "x$runstatedir" = x; then + runstatedir='${localstatedir}/run' + + fi + + for ac_func in mlockall +do : + ac_fn_c_check_func "$LINENO" "mlockall" "ac_cv_func_mlockall" +if test "x$ac_cv_func_mlockall" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MLOCKALL 1 +_ACEOF + +fi +done + + ;; + kernel) + + +# Check whether --with-linux was given. +if test "${with_linux+set}" = set; then : + withval=$with_linux; kernelsrc="$withval" +fi + + + +# Check whether --with-linux-obj was given. +if test "${with_linux_obj+set}" = set; then : + withval=$with_linux_obj; kernelbuild="$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source directory" >&5 +$as_echo_n "checking kernel source directory... " >&6; } + if test -z "$kernelsrc"; then : + + if test -e "/lib/modules/$(uname -r)/source"; then : + + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + +elif test -e "/lib/modules/$(uname -r)/build"; then : + + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + +else + + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + +fi + + if test -n "$sourcelink" && test -e ${sourcelink}; then : + + kernelsrc=`readlink -f ${sourcelink}` + +else + + kernelsrc="Not found" + +fi + +else + + if test "$kernelsrc" = "NONE"; then : + + kernsrcver=NONE + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelsrc" >&5 +$as_echo "$kernelsrc" >&6; } + if test ! -d "$kernelsrc"; then : + + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel build directory" >&5 +$as_echo_n "checking kernel build directory... " >&6; } + if test -z "$kernelbuild"; then : + + if test -e "/lib/modules/$(uname -r)/build"; then : + + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + +elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then : + + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + +elif test -d ${kernelsrc}-obj/${target_cpu}/default; then : + + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + +elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then : + + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + +else + + kernelbuild=${kernelsrc} + +fi + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelbuild" >&5 +$as_echo "$kernelbuild" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source version" >&5 +$as_echo_n "checking kernel source version... " >&6; } + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then : + + utsrelease=linux/version.h + +elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then : + + utsrelease=linux/utsrelease.h + +elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then : + + utsrelease=generated/utsrelease.h + +fi + + if test "$utsrelease"; then : + + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + if test -z "$kernsrcver"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? "*** Cannot determine kernel version." "$LINENO" 5 + +fi + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Cannot find UTS_RELEASE definition." "$LINENO" 5 + else + as_fn_error $? " + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree." "$LINENO" 5 + fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernsrcver" >&5 +$as_echo "$kernsrcver" >&6; } + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + + + + + + modpost=$LINUX/scripts/Makefile.modpost + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel file name for module symbols" >&5 +$as_echo_n "checking kernel file name for module symbols... " >&6; } + if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then : + + if grep -q Modules.symvers $modpost; then : + + LINUX_SYMBOLS=Modules.symvers + +else + + LINUX_SYMBOLS=Module.symvers + +fi + + if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then : + + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source." "$LINENO" 5 + +fi + +else + + LINUX_SYMBOLS=NONE + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_SYMBOLS" >&5 +$as_echo "$LINUX_SYMBOLS" >&6; } + + + + + +# Check whether --with-spl was given. +if test "${with_spl+set}" = set; then : + withval=$with_spl; splsrc="$withval" +fi + + + +# Check whether --with-spl-obj was given. +if test "${with_spl_obj+set}" = set; then : + withval=$with_spl_obj; splbuild="$withval" +fi + + + +# Check whether --with-spl-timeout was given. +if test "${with_spl_timeout+set}" = set; then : + withval=$with_spl_timeout; timeout="$withval" +else + timeout=0 +fi + + + splsrc0="/var/lib/dkms/spl/${VERSION}/build" + splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc2="/usr/local/src/spl-${VERSION}" + splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc4="/usr/src/spl-${VERSION}" + splsrc5="../spl/" + splsrc6="$LINUX" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl source directory" >&5 +$as_echo_n "checking spl source directory... " >&6; } + if test -z "${splsrc}"; then : + + if test -e "${splsrc0}/spl.release.in"; then : + + splsrc=${splsrc0} + +elif test -e "${splsrc1}/spl.release.in"; then : + + splsrc=${splsrc1} + +elif test -e "${splsrc2}/spl.release.in"; then : + + splsrc=${splsrc2} + +elif test -e "${splsrc3}/spl.release.in"; then : + + splsrc=$(readlink -f "${splsrc3}") + +elif test -e "${splsrc4}/spl.release.in" ; then : + + splsrc=${splsrc4} + +elif test -e "${splsrc5}/spl.release.in"; then : + + splsrc=$(readlink -f "${splsrc5}") + +elif test -e "${splsrc6}/spl.release.in" ; then : + + splsrc=${splsrc6} + +else + + splsrc="Not found" + +fi + +else + + if test "$splsrc" = "NONE"; then : + + splbuild=NONE + splsrcver=NONE + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splsrc" >&5 +$as_echo "$splsrc" >&6; } + if test ! -e "$splsrc/spl.release.in"; then : + + as_fn_error $? " + *** Please make sure the kmod spl devel package for your distribution + *** is installed then try again. If that fails you can specify the + *** location of the spl source with the '--with-spl=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl build directory" >&5 +$as_echo_n "checking spl build directory... " >&6; } + while true; do + if test -z "$splbuild"; then : + + if test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ; then : + + splbuild="${splsrc}/${LINUX_VERSION}" + +elif test -e "${splsrc}/spl_config.h" ; then : + + splbuild="${splsrc}" + +elif find -L "${splsrc}" -name spl_config.h 2> /dev/null | grep -wq spl_config.h ; then : + + splbuild=$(find -L "${splsrc}" -name spl_config.h | sed 's,/spl_config.h,,') + +else + + splbuild="Not found" + +fi + +fi + if test -e "$splbuild/spl_config.h" -o $timeout -le 0; then : + + break; + +else + + sleep 1 + timeout=$((timeout-1)) + +fi + done + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splbuild" >&5 +$as_echo "$splbuild" >&6; } + if ! test -e "$splbuild/spl_config.h"; then : + + as_fn_error $? " + *** Please make sure the kmod spl devel package for your + *** distribution is installed then try again. If that fails you + *** can specify the location of the spl objects with the + *** '--with-spl-obj=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl source version" >&5 +$as_echo_n "checking spl source version... " >&6; } + if test -r $splbuild/spl_config.h && + fgrep -q SPL_META_VERSION $splbuild/spl_config.h; then : + + + splsrcver=`(echo "#include "; + echo "splsrcver=SPL_META_VERSION-SPL_META_RELEASE") | + cpp -I $splbuild | + grep "^splsrcver=" | tr -d \" | cut -d= -f2` + +fi + + if test -z "$splsrcver"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? " + *** Cannot determine the version of the spl source. + *** Please prepare the spl source before running this script" "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splsrcver" >&5 +$as_echo "$splsrcver" >&6; } + + SPL=${splsrc} + SPL_OBJ=${splbuild} + SPL_VERSION=${splsrcver} + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl file name for module symbols" >&5 +$as_echo_n "checking spl file name for module symbols... " >&6; } + SPL_SYMBOLS=NONE + + while true; do + if test -r $SPL_OBJ/Module.symvers; then : + + SPL_SYMBOLS=Module.symvers + +elif test -r $SPL_OBJ/Modules.symvers; then : + + SPL_SYMBOLS=Modules.symvers + +elif test -r $SPL_OBJ/module/Module.symvers; then : + + SPL_SYMBOLS=Module.symvers + +elif test -r $SPL_OBJ/module/Modules.symvers; then : + + SPL_SYMBOLS=Modules.symvers + +fi + + if test $SPL_SYMBOLS != NONE -o $timeout -le 0; then : + + break; + +else + + sleep 1 + timeout=$((timeout-1)) + +fi + done + + if test "$SPL_SYMBOLS" = NONE; then : + + SPL_SYMBOLS=$LINUX_SYMBOLS + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPL_SYMBOLS" >&5 +$as_echo "$SPL_SYMBOLS" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether modules can be built" >&5 +$as_echo_n "checking whether modules can be built... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Unable to build an empty module." "$LINENO" 5 + else + as_fn_error $? " + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree." "$LINENO" 5 + fi + + + +fi + rm -Rf build + + + + + if test "x$cross_compiling" != xyes; then : + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include "$LINUX/include/linux/license.h" + +int +main () +{ + + return !license_is_gpl_compatible("$ZFS_META_LICENSE"); + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + +$as_echo "#define ZFS_IS_GPL_COMPATIBLE 1" >>confdefs.h + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC" >&5 +$as_echo_n "checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + #ifndef CONFIG_DEBUG_LOCK_ALLOC + #error CONFIG_DEBUG_LOCK_ALLOC not #defined + #endif + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mutex_lock() is GPL-only" >&5 +$as_echo_n "checking whether mutex_lock() is GPL-only... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct mutex lock; + + mutex_init(&lock); + mutex_lock(&lock); + mutex_unlock(&lock); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + as_fn_error $? " + *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible + *** with the CDDL license and will prevent the module linking stage + *** from succeeding. You must rebuild your kernel without this + *** option enabled." "$LINENO" 5 + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + + +fi + rm -Rf build + + + + + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-I\$(src)" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DECLARE_EVENT_CLASS() is available" >&5 +$as_echo_n "checking whether DECLARE_EVENT_CLASS() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + MODULE_LICENSE(ZFS_META_LICENSE); + + #define CREATE_TRACE_POINTS + #include "conftest.h" + +int +main (void) +{ + + trace_zfs_autoconf_event_one(1UL); + trace_zfs_autoconf_event_two(2UL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + + #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) + #define _CONFTEST_H + + #undef TRACE_SYSTEM + #define TRACE_SYSTEM zfs + #include + + DECLARE_EVENT_CLASS(zfs_autoconf_event_class, + TP_PROTO(unsigned long i), + TP_ARGS(i), + TP_STRUCT__entry( + __field(unsigned long, i) + ), + TP_fast_assign( + __entry->i = i; + ), + TP_printk("i = %lu", __entry->i) + ); + + #define DEFINE_AUTOCONF_EVENT(name) \ + DEFINE_EVENT(zfs_autoconf_event_class, name, \ + TP_PROTO(unsigned long i), \ + TP_ARGS(i)) + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); + + #endif /* _CONFTEST_H */ + + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #define TRACE_INCLUDE_FILE conftest + #include + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DECLARE_EVENT_CLASS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current->bio_tail exists" >&5 +$as_echo_n "checking whether current->bio_tail exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current->bio_tail = (struct bio **) NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_BIO_TAIL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current->bio_list exists" >&5 +$as_echo_n "checking whether current->bio_list exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current->bio_list = (struct bio_list *) NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_BIO_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking block device operation prototypes" >&5 +$as_echo_n "checking block device operation prototypes... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int blk_open(struct block_device *bdev, fmode_t mode) + { return 0; } + int blk_ioctl(struct block_device *bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + int blk_compat_ioctl(struct block_device * bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = blk_open, + .release = NULL, + .ioctl = blk_ioctl, + .compat_ioctl = blk_compat_ioctl, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: struct block_device" >&5 +$as_echo "struct block_device" >&6; } + +$as_echo "#define HAVE_BDEV_BLOCK_DEVICE_OPERATIONS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: struct inode" >&5 +$as_echo "struct inode" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether block_device_operations.release is void" >&5 +$as_echo_n "checking whether block_device_operations.release is void... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void blk_release(struct gendisk *g, fmode_t mode) { return; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = NULL, + .release = blk_release, + .ioctl = NULL, + .compat_ioctl = NULL, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: void" >&5 +$as_echo "void" >&6; } + +$as_echo "#define HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5 +$as_echo "int" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines fmode_t" >&5 +$as_echo_n "checking whether kernel defines fmode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + fmode_t *ptr __attribute__ ((unused)); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines KOBJ_NAME_LEN" >&5 +$as_echo_n "checking whether kernel defines KOBJ_NAME_LEN... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int val __attribute__ ((unused)); + val = KOBJ_NAME_LEN; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KOBJ_NAME_LEN 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blkdev_get() wants 3 args" >&5 +$as_echo_n "checking whether blkdev_get() wants 3 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + (void) blkdev_get(bdev, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARG_BLKDEV_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blkdev_get_by_path() is available" >&5 +$as_echo_n "checking whether blkdev_get_by_path() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + blkdev_get_by_path(NULL, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLKDEV_GET_BY_PATH 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether open_bdev_exclusive() is available" >&5 +$as_echo_n "checking whether open_bdev_exclusive() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + open_bdev_exclusive(NULL, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]open_bdev_exclusive[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_OPEN_BDEV_EXCLUSIVE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available" >&5 +$as_echo_n "checking whether lookup_bdev() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + lookup_bdev(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LOOKUP_BDEV 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether invalidate_bdev() wants 1 arg" >&5 +$as_echo_n "checking whether invalidate_bdev() wants 1 arg... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + invalidate_bdev(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_INVALIDATE_BDEV 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdev_logical_block_size() is available" >&5 +$as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + bdev_logical_block_size(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BDEV_LOGICAL_BLOCK_SIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdev_physical_block_size() is available" >&5 +$as_echo_n "checking whether bdev_physical_block_size() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + bdev_physical_block_size(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BDEV_PHYSICAL_BLOCK_SIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio has bi_iter" >&5 +$as_echo_n "checking whether bio has bi_iter... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct bio bio; + bio.bi_iter.bi_sector = 0; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_BVEC_ITER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_FAILFAST_* are defined" >&5 +$as_echo_n "checking whether BIO_RW_FAILFAST_* are defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = ((1 << BIO_RW_FAILFAST_DEV) | + (1 << BIO_RW_FAILFAST_TRANSPORT) | + (1 << BIO_RW_FAILFAST_DRIVER)); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_FAILFAST_DTD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether REQ_FAILFAST_MASK is defined" >&5 +$as_echo_n "checking whether REQ_FAILFAST_MASK is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = REQ_FAILFAST_MASK; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_REQ_FAILFAST_MASK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio_end_io_t wants 1 arg" >&5 +$as_echo_n "checking whether bio_end_io_t wants 1 arg... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void wanted_end_io(struct bio *bio) { return; } + + bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_BIO_END_IO_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_BARRIER is defined" >&5 +$as_echo_n "checking whether BIO_RW_BARRIER is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = BIO_RW_BARRIER; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_BARRIER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_DISCARD is defined" >&5 +$as_echo_n "checking whether BIO_RW_DISCARD is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = BIO_RW_DISCARD; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_DISCARD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_flush() is available" >&5 +$as_echo_n "checking whether blk_queue_flush() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_FLUSH 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_flush() is GPL-only" >&5 +$as_echo_n "checking whether blk_queue_flush() is GPL-only... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_FLUSH_GPL_ONLY 1" >>confdefs.h + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_max_hw_sectors() is available" >&5 +$as_echo_n "checking whether blk_queue_max_hw_sectors() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_MAX_HW_SECTORS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_max_segments() is available" >&5 +$as_echo_n "checking whether blk_queue_max_segments() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_MAX_SEGMENTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether get_disk_ro() is available" >&5 +$as_echo_n "checking whether get_disk_ro() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct gendisk *disk = NULL; + (void) get_disk_ro(disk); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_DISK_RO 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether get_gendisk() is available" >&5 +$as_echo_n "checking whether get_gendisk() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + get_gendisk(0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]get_gendisk[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in block/genhd.c; do + grep -q -E "EXPORT_SYMBOL.*(get_gendisk)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_GENDISK 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ql->discard_granularity is available" >&5 +$as_echo_n "checking whether ql->discard_granularity is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct queue_limits ql __attribute__ ((unused)); + + ql.discard_granularity = 0; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DISCARD_GRANULARITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block uses const struct xattr_hander" >&5 +$as_echo_n "checking whether super_block uses const struct xattr_hander... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + const struct xattr_handler xattr_test_handler = { + .prefix = "test", + .get = NULL, + .set = NULL, + }; + + const struct xattr_handler *xattr_handlers[] = { + &xattr_test_handler, + }; + + const struct super_block sb __attribute__ ((unused)) = { + .s_xattr = xattr_handlers, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CONST_XATTR_HANDLER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->get() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->get() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int get(struct dentry *dentry, const char *name, + void *buffer, size_t size, int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->get() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->get() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int get(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, void *buffer, size_t size) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->set() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->set() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int set(struct dentry *dentry, const char *name, + const void *buffer, size_t size, int flags, + int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_SET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->set() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->set() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int set(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, const void *buffer, size_t size, int flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_SET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->list() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->list() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + size_t list(struct dentry *dentry, char *list, size_t list_size, + const char *name, size_t name_len, int handler_flags) + { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->list() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->list() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + size_t list(const struct xattr_handler *handler, struct dentry *dentry, + char *list, size_t list_size, const char *name, size_t name_len) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether inode_owner_or_capable() exists" >&5 +$as_echo_n "checking whether inode_owner_or_capable() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip = NULL; + (void) inode_owner_or_capable(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_OWNER_OR_CAPABLE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether is_owner_or_cap() exists" >&5 +$as_echo_n "checking whether is_owner_or_cap() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + struct inode *ip = NULL; + (void) is_owner_or_cap(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_IS_OWNER_OR_CAP 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_from_xattr() needs user_ns" >&5 +$as_echo_n "checking whether posix_acl_from_xattr() needs user_ns... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + +int +main (void) +{ + + posix_acl_from_xattr(&init_user_ns, NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_FROM_XATTR_USERNS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_release() is available" >&5 +$as_echo_n "checking whether posix_acl_release() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + +int +main (void) +{ + + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_RELEASE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_release() is GPL-only" >&5 +$as_echo_n "checking whether posix_acl_release() is GPL-only... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_RELEASE_GPL_ONLY 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_chmod exists" >&5 +$as_echo_n "checking whether posix_acl_chmod exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + posix_acl_chmod(NULL, 0, 0) + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_CHMOD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __posix_acl_chmod exists" >&5 +$as_echo_n "checking whether __posix_acl_chmod exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + __posix_acl_chmod(NULL, 0, 0) + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE___POSIX_ACL_CHMOD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether inode has i_acl and i_default_acl" >&5 +$as_echo_n "checking whether inode has i_acl and i_default_acl... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode ino; + ino.i_acl = NULL; + ino.i_default_acl = NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_CACHING 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_equiv_mode() wants umode_t" >&5 +$as_echo_n "checking whether posix_acl_equiv_mode() wants umode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + umode_t tmp; + posix_acl_equiv_mode(NULL,&tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->permission() exists" >&5 +$as_echo_n "checking whether iops->permission() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int permission_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PERMISSION 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->permission() wants nameidata" >&5 +$as_echo_n "checking whether iops->permission() wants nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int permission_fn(struct inode *inode, int mask, + struct nameidata *nd) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PERMISSION 1" >>confdefs.h + + +$as_echo "#define HAVE_PERMISSION_WITH_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->check_acl() exists" >&5 +$as_echo_n "checking whether iops->check_acl() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int check_acl_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_ACL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->check_acl() wants flags" >&5 +$as_echo_n "checking whether iops->check_acl() wants flags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int check_acl_fn(struct inode *inode, int mask, + unsigned int flags) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_ACL 1" >>confdefs.h + + +$as_echo "#define HAVE_CHECK_ACL_WITH_FLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->get_acl() exists" >&5 +$as_echo_n "checking whether iops->get_acl() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + struct posix_acl *get_acl_fn(struct inode *inode, int type) + { return NULL; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .get_acl = get_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_ACL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current_umask exists" >&5 +$as_echo_n "checking whether current_umask exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current_umask(); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_UMASK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->show_options() wants dentry" >&5 +$as_echo_n "checking whether sops->show_options() wants dentry... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int show_options (struct seq_file * x, struct dentry * y) { return 0; }; + static struct super_operations sops __attribute__ ((unused)) = { + .show_options = show_options, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHOW_OPTIONS_WITH_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether file_inode() is available" >&5 +$as_echo_n "checking whether file_inode() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file *f = NULL; + file_inode(f); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fsync() wants" >&5 +$as_echo_n "checking whether fops->fsync() wants... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, struct dentry *dentry, int x) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: dentry" >&5 +$as_echo "dentry" >&6; } + +$as_echo "#define HAVE_FSYNC_WITH_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, int x) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no dentry" >&5 +$as_echo "no dentry" >&6; } + +$as_echo "#define HAVE_FSYNC_WITHOUT_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, loff_t a, loff_t b, int c) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: range" >&5 +$as_echo "range" >&6; } + +$as_echo "#define HAVE_FSYNC_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->evict_inode() exists" >&5 +$as_echo_n "checking whether sops->evict_inode() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void evict_inode (struct inode * t) { return; } + static struct super_operations sops __attribute__ ((unused)) = { + .evict_inode = evict_inode, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_EVICT_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->dirty_inode() wants flags" >&5 +$as_echo_n "checking whether sops->dirty_inode() wants flags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void dirty_inode(struct inode *a, int b) { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .dirty_inode = dirty_inode, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DIRTY_INODE_WITH_FLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->nr_cached_objects() exists" >&5 +$as_echo_n "checking whether sops->nr_cached_objects() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int nr_cached_objects(struct super_block *sb) { return 0; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .nr_cached_objects = nr_cached_objects, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_NR_CACHED_OBJECTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->free_cached_objects() exists" >&5 +$as_echo_n "checking whether sops->free_cached_objects() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void free_cached_objects(struct super_block *sb, int x) + { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .free_cached_objects = free_cached_objects, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FREE_CACHED_OBJECTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + long test_fallocate(struct file *file, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->fallocate() exists" >&5 +$as_echo_n "checking whether iops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + long test_fallocate(struct inode *inode, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct inode_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->create()/mkdir()/mknod() take umode_t" >&5 +$as_echo_n "checking whether iops->create()/mkdir()/mknod() take umode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int mkdir(struct inode *inode, struct dentry *dentry, + umode_t umode) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .mkdir = mkdir, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_MKDIR_UMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->lookup() passes nameidata" >&5 +$as_echo_n "checking whether iops->lookup() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + struct dentry *inode_lookup(struct inode *inode, + struct dentry *dentry, struct nameidata *nidata) + { return NULL; } + + static const struct inode_operations iops + __attribute__ ((unused)) = { + .lookup = inode_lookup, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LOOKUP_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->create() passes nameidata" >&5 +$as_echo_n "checking whether iops->create() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + #ifdef HAVE_MKDIR_UMODE_T + int inode_create(struct inode *inode ,struct dentry *dentry, + umode_t umode, struct nameidata *nidata) { return 0; } + #else + int inode_create(struct inode *inode,struct dentry *dentry, + int umode, struct nameidata * nidata) { return 0; } + #endif + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .create = inode_create, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CREATE_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->follow_link() passes nameidata" >&5 +$as_echo_n "checking whether iops->follow_link() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + const char *follow_link(struct dentry *de, void **cookie) + { return "symlink"; } + static struct inode_operations iops __attribute__ ((unused)) = { + .follow_link = follow_link, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FOLLOW_LINK_NAMEIDATA 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->put_link() passes nameidata" >&5 +$as_echo_n "checking whether iops->put_link() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void put_link(struct inode *ip, void *cookie) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .put_link = put_link, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PUT_LINK_NAMEIDATA 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->truncate_range() exists" >&5 +$as_echo_n "checking whether iops->truncate_range() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void truncate_range(struct inode *inode, loff_t start, + loff_t end) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .truncate_range = truncate_range, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_TRUNCATE_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dops->d_automount() exists" >&5 +$as_echo_n "checking whether dops->d_automount() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct vfsmount *d_automount(struct path *p) { return NULL; } + struct dentry_operations dops __attribute__ ((unused)) = { + .d_automount = d_automount, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_AUTOMOUNT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether eops->encode_fh() wants inode" >&5 +$as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *parent) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .encode_fh = encode_fh, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ENCODE_FH_WITH_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether eops->commit_metadata() exists" >&5 +$as_echo_n "checking whether eops->commit_metadata() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int commit_metadata(struct inode *inode) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .commit_metadata = commit_metadata, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_COMMIT_METADATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether clear_inode() is available" >&5 +$as_echo_n "checking whether clear_inode() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + clear_inode(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]clear_inode[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/inode.c; do + grep -q -E "EXPORT_SYMBOL.*(clear_inode)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CLEAR_INODE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether insert_inode_locked() is available" >&5 +$as_echo_n "checking whether insert_inode_locked() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + insert_inode_locked(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/inode.c; do + grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INSERT_INODE_LOCKED 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_make_root() is available" >&5 +$as_echo_n "checking whether d_make_root() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_make_root(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_make_root[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_make_root)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_MAKE_ROOT 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_obtain_alias() is available" >&5 +$as_echo_n "checking whether d_obtain_alias() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_obtain_alias(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_OBTAIN_ALIAS 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_prune_aliases() is available" >&5 +$as_echo_n "checking whether d_prune_aliases() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip = NULL; + d_prune_aliases(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_prune_aliases[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_prune_aliases)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_PRUNE_ALIASES 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_set_d_op() is available" >&5 +$as_echo_n "checking whether d_set_d_op() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_set_d_op(NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_set_d_op[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_set_d_op)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_SET_D_OP 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dops->d_revalidate() takes struct nameidata" >&5 +$as_echo_n "checking whether dops->d_revalidate() takes struct nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int revalidate (struct dentry *dentry, + struct nameidata *nidata) { return 0; } + + static const struct dentry_operations + dops __attribute__ ((unused)) = { + .d_revalidate = revalidate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_REVALIDATE_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dentry uses const struct dentry_operations" >&5 +$as_echo_n "checking whether dentry uses const struct dentry_operations... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + const struct dentry_operations test_d_op = { + .d_revalidate = NULL, + }; + +int +main (void) +{ + + struct dentry d __attribute__ ((unused)); + + d.d_op = &test_d_op; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CONST_DENTRY_OPERATIONS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether check_disk_size_change() is available" >&5 +$as_echo_n "checking whether check_disk_size_change() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + check_disk_size_change(NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]check_disk_size_change[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(check_disk_size_change)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_DISK_SIZE_CHANGE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether truncate_setsize() is available" >&5 +$as_echo_n "checking whether truncate_setsize() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + truncate_setsize(NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]truncate_setsize[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/truncate.c; do + grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_TRUNCATE_SETSIZE 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether security_inode_init_security wants 6 args" >&5 +$as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + char *name __attribute__ ((unused)) = NULL; + void *value __attribute__ ((unused)) = NULL; + size_t len __attribute__ ((unused)) = 0; + + security_inode_init_security(ip, dip, str, &name, &value, &len); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether security_inode_init_security wants callback" >&5 +$as_echo_n "checking whether security_inode_init_security wants callback... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + initxattrs func __attribute__ ((unused)) = NULL; + + security_inode_init_security(ip, dip, str, func, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mount_nodev() is available" >&5 +$as_echo_n "checking whether mount_nodev() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + mount_nodev(NULL, 0, NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]mount_nodev[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/super.c; do + grep -q -E "EXPORT_SYMBOL.*(mount_nodev)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_MOUNT_NODEV 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_shrink" >&5 +$as_echo_n "checking whether super_block has s_shrink... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrink(struct shrinker *s, struct shrink_control *sc) + { return 0; } + + static const struct super_block + sb __attribute__ ((unused)) = { + .s_shrink.shrink = shrink, + .s_shrink.seeks = DEFAULT_SEEKS, + .s_shrink.batch = 0, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHRINK 1" >>confdefs.h + + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether shrink_control has nid" >&5 +$as_echo_n "checking whether shrink_control has nid... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct shrink_control sc __attribute__ ((unused)); + unsigned long scnidsize __attribute__ ((unused)) = + sizeof(sc.nid); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define SHRINK_CONTROL_HAS_NID 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_instances list_head" >&5 +$as_echo_n "checking whether super_block has s_instances list_head... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct super_block sb __attribute__ ((unused)); + + INIT_LIST_HEAD(&sb.s_instances); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_S_INSTANCES_LIST_HEAD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_d_op" >&5 +$as_echo_n "checking whether super_block has s_d_op... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct super_block sb __attribute__ ((unused)); + sb.s_d_op = NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_S_D_OP 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 2 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 3 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + unsigned int cap = BDI_CAP_MAP_COPY; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name, cap); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 3 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + unsigned int cap = BDI_CAP_MAP_COPY; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name, cap); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether set_nlink() is available" >&5 +$as_echo_n "checking whether set_nlink() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode node; + unsigned int link = 0; + (void) set_nlink(&node, link); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SET_NLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether elevator_change() is available" >&5 +$as_echo_n "checking whether elevator_change() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + int ret; + struct request_queue *q = NULL; + char *elevator = NULL; + ret = elevator_change(q, elevator); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ELEVATOR_CHANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sget() wants 5 args" >&5 +$as_echo_n "checking whether sget() wants 5 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file_system_type *type = NULL; + int (*test)(struct super_block *,void *) = NULL; + int (*set)(struct super_block *,void *) = NULL; + int flags = 0; + void *data = NULL; + (void) sget(type, test, set, flags, data); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_5ARG_SGET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lseek_execute() is available" >&5 +$as_echo_n "checking whether lseek_execute() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file *fp __attribute__ ((unused)) = NULL; + struct inode *ip __attribute__ ((unused)) = NULL; + loff_t offset __attribute__ ((unused)) = 0; + loff_t maxsize __attribute__ ((unused)) = 0; + + lseek_execute(fp, ip, offset, maxsize); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]lseek_exclusive[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/read_write.c; do + grep -q -E "EXPORT_SYMBOL.*(lseek_exclusive)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LSEEK_EXECUTE 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->iterate() is available" >&5 +$as_echo_n "checking whether fops->iterate() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int iterate(struct file *filp, struct dir_context * context) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .iterate = iterate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_ITERATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->readdir() is available" >&5 +$as_echo_n "checking whether fops->readdir() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int readdir(struct file *filp, void *entry, filldir_t func) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .readdir = readdir, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_READDIR 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no; file a bug report with ZFSOnLinux" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->read/write_iter() are available" >&5 +$as_echo_n "checking whether fops->read/write_iter() are available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) + { return 0; } + ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .read_iter = test_read, + .write_iter = test_write, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_RW_ITERATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kmap_atomic wants 1 args" >&5 +$as_echo_n "checking whether kmap_atomic wants 1 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct page page; + kmap_atomic(&page); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_KMAP_ATOMIC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether follow_down_one() is available" >&5 +$as_echo_n "checking whether follow_down_one() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct path *p = NULL; + follow_down_one(p); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FOLLOW_DOWN_ONE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns int" >&5 +$as_echo_n "checking whether make_request_fn() returns int... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int make_request(struct request_queue *q, struct bio *bio) + { + return (0); + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET int" >>confdefs.h + + +$as_echo "#define HAVE_MAKE_REQUEST_FN_RET_INT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns void" >&5 +$as_echo_n "checking whether make_request_fn() returns void... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void make_request(struct request_queue *q, struct bio *bio) + { + return; + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET void" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns blk_qc_t" >&5 +$as_echo_n "checking whether make_request_fn() returns blk_qc_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + blk_qc_t make_request(struct request_queue *q, struct bio *bio) + { + return (BLK_QC_T_NONE); + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET blk_qc_t" >>confdefs.h + + +$as_echo "#define HAVE_MAKE_REQUEST_FN_RET_QC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether generic IO accounting symbols are avaliable" >&5 +$as_echo_n "checking whether generic IO accounting symbols are avaliable... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void (*generic_start_io_acct_f)(int, unsigned long, + struct hd_struct *) = &generic_start_io_acct; + void (*generic_end_io_acct_f)(int, struct hd_struct *, + unsigned long) = &generic_end_io_acct; + +int +main (void) +{ + + generic_start_io_acct(0, 0, NULL); + generic_end_io_acct(0, NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in block/bio.c; do + grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GENERIC_IO_ACCT 1" >>confdefs.h + + + fi + fi + + + + if test "$LINUX_OBJ" != "$LINUX"; then : + + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + +fi + + + + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE" + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\"" + + + ;; + all) + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dkms.conf file" >&5 +$as_echo_n "checking for dkms.conf file... " >&6; } + if test -e dkms.conf; then : + + as_fn_error $? " + *** ZFS should not be manually built in the DKMS source tree. + *** Remove all ZFS packages before compiling the ZoL sources. + *** Running \"make install\" breaks ZFS packages." "$LINENO" 5 + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + +fi + + + +# Check whether --with-mounthelperdir was given. +if test "${with_mounthelperdir+set}" = set; then : + withval=$with_mounthelperdir; mounthelperdir=$withval +else + mounthelperdir=/sbin +fi + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev directories" >&5 +$as_echo_n "checking for udev directories... " >&6; } + +# Check whether --with-udevdir was given. +if test "${with_udevdir+set}" = set; then : + withval=$with_udevdir; udevdir=$withval +else + udevdir=check +fi + + + if test "x$udevdir" = xcheck; then : + + path1=/lib/udev + path2=/usr/lib/udev + default=$path2 + + if test -d "$path1"; then : + udevdir="$path1" +else + + if test -d "$path2"; then : + udevdir="$path2" +else + udevdir="$default" +fi + +fi + +fi + + +# Check whether --with-udevruledir was given. +if test "${with_udevruledir+set}" = set; then : + withval=$with_udevruledir; udevruledir=$withval +else + udevruledir="${udevdir}/rules.d" +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $udevdir;$udevruledir" >&5 +$as_echo "$udevdir;$udevruledir" >&6; } + + + # Check whether --enable-systemd was given. +if test "${enable_systemd+set}" = set; then : + enableval=$enable_systemd; +else + enable_systemd=yes +fi + + + +# Check whether --with-systemdunitdir was given. +if test "${with_systemdunitdir+set}" = set; then : + withval=$with_systemdunitdir; systemdunitdir=$withval +else + systemdunitdir=/usr/lib/systemd/system +fi + + + +# Check whether --with-systemdpresetdir was given. +if test "${with_systemdpresetdir+set}" = set; then : + withval=$with_systemdpresetdir; systemdpresetdir=$withval +else + systemdpresetdir=/usr/lib/systemd/system-preset +fi + + + +# Check whether --with-systemdmodulesloaddir was given. +if test "${with_systemdmodulesloaddir+set}" = set; then : + withval=$with_systemdmodulesloaddir; systemdmoduleloaddir=$withval +else + systemdmodulesloaddir=/usr/lib/modules-load.d +fi + + + + if test "x$enable_systemd" = xyes; then : + + ZFS_INIT_SYSTEMD=systemd + ZFS_MODULE_LOAD=modules-load.d + modulesloaddir=$systemdmodulesloaddir + +fi + + + + + + + + + # Check whether --enable-sysvinit was given. +if test "${enable_sysvinit+set}" = set; then : + enableval=$enable_sysvinit; +else + enable_sysvinit=yes +fi + + + if test "x$enable_sysvinit" = xyes; then : + ZFS_INIT_SYSV=init.d +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dracut directory" >&5 +$as_echo_n "checking for dracut directory... " >&6; } + +# Check whether --with-dracutdir was given. +if test "${with_dracutdir+set}" = set; then : + withval=$with_dracutdir; dracutdir=$withval +else + dracutdir=check +fi + + + if test "x$dracutdir" = xcheck; then : + + path1=/usr/share/dracut + path2=/usr/lib/dracut + default=$path2 + + if test -d "$path1"; then : + dracutdir="$path1" +else + + if test -d "$path2"; then : + dracutdir="$path2" +else + dracutdir="$default" +fi + +fi + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dracutdir" >&5 +$as_echo "$dracutdir" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for target asm dir" >&5 +$as_echo_n "checking for target asm dir... " >&6; } + TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/` + + case $TARGET_ARCH in + i386|x86_64) + TARGET_ASM_DIR=asm-${TARGET_ARCH} + ;; + *) + TARGET_ASM_DIR=asm-generic + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TARGET_ASM_DIR" >&5 +$as_echo "$TARGET_ASM_DIR" >&6; } + + + ZLIB= + + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** zlib.h missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress2 in -lz" >&5 +$as_echo_n "checking for compress2 in -lz... " >&6; } +if ${ac_cv_lib_z_compress2+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char compress2 (); +int +main () +{ +return compress2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_compress2=yes +else + ac_cv_lib_z_compress2=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress2" >&5 +$as_echo "$ac_cv_lib_z_compress2" >&6; } +if test "x$ac_cv_lib_z_compress2" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** compress2() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uncompress in -lz" >&5 +$as_echo_n "checking for uncompress in -lz... " >&6; } +if ${ac_cv_lib_z_uncompress+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uncompress (); +int +main () +{ +return uncompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_uncompress=yes +else + ac_cv_lib_z_uncompress=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_uncompress" >&5 +$as_echo "$ac_cv_lib_z_uncompress" >&6; } +if test "x$ac_cv_lib_z_uncompress" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uncompress() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crc32 in -lz" >&5 +$as_echo_n "checking for crc32 in -lz... " >&6; } +if ${ac_cv_lib_z_crc32+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crc32 (); +int +main () +{ +return crc32 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_crc32=yes +else + ac_cv_lib_z_crc32=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_crc32" >&5 +$as_echo "$ac_cv_lib_z_crc32" >&6; } +if test "x$ac_cv_lib_z_crc32" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** crc32() missing, zlib-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + ZLIB="-lz" + + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + + + LIBUUID= + + ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_uuid_h" = xyes; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid/uuid.h missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate in -luuid" >&5 +$as_echo_n "checking for uuid_generate in -luuid... " >&6; } +if ${ac_cv_lib_uuid_uuid_generate+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate (); +int +main () +{ +return uuid_generate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_uuid_uuid_generate=yes +else + ac_cv_lib_uuid_uuid_generate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate" >&5 +$as_echo "$ac_cv_lib_uuid_uuid_generate" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUUID 1 +_ACEOF + + LIBS="-luuid $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid_generate() missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_is_null in -luuid" >&5 +$as_echo_n "checking for uuid_is_null in -luuid... " >&6; } +if ${ac_cv_lib_uuid_uuid_is_null+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_is_null (); +int +main () +{ +return uuid_is_null (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_uuid_uuid_is_null=yes +else + ac_cv_lib_uuid_uuid_is_null=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_is_null" >&5 +$as_echo "$ac_cv_lib_uuid_uuid_is_null" >&6; } +if test "x$ac_cv_lib_uuid_uuid_is_null" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUUID 1 +_ACEOF + + LIBS="-luuid $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? " + *** uuid_is_null() missing, libuuid-devel package required +See \`config.log' for more details" "$LINENO" 5; } +fi + + + LIBUUID="-luuid" + + +$as_echo "#define HAVE_LIBUUID 1" >>confdefs.h + + + + +# Check whether --with-blkid was given. +if test "${with_blkid+set}" = set; then : + withval=$with_blkid; +else + with_blkid=check +fi + + + LIBBLKID= + if test "x$with_blkid" = xyes; then : + + LIBBLKID="-lblkid" + + +$as_echo "#define HAVE_LIBBLKID 1" >>confdefs.h + + +fi + + if test "x$with_blkid" = xcheck; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid_get_cache in -lblkid" >&5 +$as_echo_n "checking for blkid_get_cache in -lblkid... " >&6; } +if ${ac_cv_lib_blkid_blkid_get_cache+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lblkid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char blkid_get_cache (); +int +main () +{ +return blkid_get_cache (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_blkid_blkid_get_cache=yes +else + ac_cv_lib_blkid_blkid_get_cache=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_get_cache" >&5 +$as_echo "$ac_cv_lib_blkid_blkid_get_cache" >&6; } +if test "x$ac_cv_lib_blkid_blkid_get_cache" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid zfs support" >&5 +$as_echo_n "checking for blkid zfs support... " >&6; } + + ZFS_DEV=`mktemp` + truncate -s 64M $ZFS_DEV + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=128 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=132 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=136 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + echo -en "\x0c\xb1\xba\0\0\0\0\0" | \ + dd of=$ZFS_DEV bs=1k count=8 \ + seek=140 conv=notrunc &>/dev/null \ + >/dev/null 2>/dev/null + + saved_LIBS="$LIBS" + LIBS="-lblkid" + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + +int +main () +{ + + blkid_cache cache; + char *value; + + if (blkid_get_cache(&cache, NULL) < 0) + return 1; + + value = blkid_get_tag_value(cache, "TYPE", + "$ZFS_DEV"); + if (!value) { + blkid_put_cache(cache); + return 2; + } + + if (strcmp(value, "zfs_member")) { + free(value); + blkid_put_cache(cache); + return 0; + } + + free(value); + blkid_put_cache(cache); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + rm -f $ZFS_DEV + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBBLKID="-lblkid" + + +$as_echo "#define HAVE_LIBBLKID 1" >>confdefs.h + + +else + + rm -f $ZFS_DEV + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$with_blkid" != xcheck; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-blkid given but unavailable +See \`config.log' for more details" "$LINENO" 5; } +fi + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + LIBS="$saved_LIBS" + +else + + if test "x$with_blkid" != xcheck; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-blkid given but unavailable +See \`config.log' for more details" "$LINENO" 5; } +fi + + +fi + + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wframe-larger-than= support" >&5 +$as_echo_n "checking for -Wframe-larger-than= support... " >&6; } + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wframe-larger-than=1024" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + FRAME_LARGER_THAN=-Wframe-larger-than=1024 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + FRAME_LARGER_THAN= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CFLAGS="$saved_flags" + + + + if test "x$runstatedir" = x; then + runstatedir='${localstatedir}/run' + + fi + + for ac_func in mlockall +do : + ac_fn_c_check_func "$LINENO" "mlockall" "ac_cv_func_mlockall" +if test "x$ac_cv_func_mlockall" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MLOCKALL 1 +_ACEOF + +fi +done + + + + + +# Check whether --with-linux was given. +if test "${with_linux+set}" = set; then : + withval=$with_linux; kernelsrc="$withval" +fi + + + +# Check whether --with-linux-obj was given. +if test "${with_linux_obj+set}" = set; then : + withval=$with_linux_obj; kernelbuild="$withval" +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source directory" >&5 +$as_echo_n "checking kernel source directory... " >&6; } + if test -z "$kernelsrc"; then : + + if test -e "/lib/modules/$(uname -r)/source"; then : + + headersdir="/lib/modules/$(uname -r)/source" + sourcelink=$(readlink -f "$headersdir") + +elif test -e "/lib/modules/$(uname -r)/build"; then : + + headersdir="/lib/modules/$(uname -r)/build" + sourcelink=$(readlink -f "$headersdir") + +else + + sourcelink=$(ls -1d /usr/src/kernels/* \ + /usr/src/linux-* \ + 2>/dev/null | grep -v obj | tail -1) + +fi + + if test -n "$sourcelink" && test -e ${sourcelink}; then : + + kernelsrc=`readlink -f ${sourcelink}` + +else + + kernelsrc="Not found" + +fi + +else + + if test "$kernelsrc" = "NONE"; then : + + kernsrcver=NONE + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelsrc" >&5 +$as_echo "$kernelsrc" >&6; } + if test ! -d "$kernelsrc"; then : + + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed and then try again. If that fails, you can specify the + *** location of the kernel source with the '--with-linux=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel build directory" >&5 +$as_echo_n "checking kernel build directory... " >&6; } + if test -z "$kernelbuild"; then : + + if test -e "/lib/modules/$(uname -r)/build"; then : + + kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` + +elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then : + + kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} + +elif test -d ${kernelsrc}-obj/${target_cpu}/default; then : + + kernelbuild=${kernelsrc}-obj/${target_cpu}/default + +elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then : + + kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} + +else + + kernelbuild=${kernelsrc} + +fi + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernelbuild" >&5 +$as_echo "$kernelbuild" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source version" >&5 +$as_echo_n "checking kernel source version... " >&6; } + utsrelease1=$kernelbuild/include/linux/version.h + utsrelease2=$kernelbuild/include/linux/utsrelease.h + utsrelease3=$kernelbuild/include/generated/utsrelease.h + if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then : + + utsrelease=linux/version.h + +elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then : + + utsrelease=linux/utsrelease.h + +elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then : + + utsrelease=generated/utsrelease.h + +fi + + if test "$utsrelease"; then : + + kernsrcver=`(echo "#include <$utsrelease>"; + echo "kernsrcver=UTS_RELEASE") | + cpp -I $kernelbuild/include | + grep "^kernsrcver=" | cut -d \" -f 2` + + if test -z "$kernsrcver"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? "*** Cannot determine kernel version." "$LINENO" 5 + +fi + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Cannot find UTS_RELEASE definition." "$LINENO" 5 + else + as_fn_error $? " + *** Cannot find UTS_RELEASE definition. + *** Please run 'make prepare' inside the kernel source tree." "$LINENO" 5 + fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kernsrcver" >&5 +$as_echo "$kernsrcver" >&6; } + + LINUX=${kernelsrc} + LINUX_OBJ=${kernelbuild} + LINUX_VERSION=${kernsrcver} + + + + + + + modpost=$LINUX/scripts/Makefile.modpost + { $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel file name for module symbols" >&5 +$as_echo_n "checking kernel file name for module symbols... " >&6; } + if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then : + + if grep -q Modules.symvers $modpost; then : + + LINUX_SYMBOLS=Modules.symvers + +else + + LINUX_SYMBOLS=Module.symvers + +fi + + if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then : + + as_fn_error $? " + *** Please make sure the kernel devel package for your distribution + *** is installed. If you are building with a custom kernel, make sure the + *** kernel is configured, built, and the '--with-linux=PATH' configure + *** option refers to the location of the kernel source." "$LINENO" 5 + +fi + +else + + LINUX_SYMBOLS=NONE + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_SYMBOLS" >&5 +$as_echo "$LINUX_SYMBOLS" >&6; } + + + + + +# Check whether --with-spl was given. +if test "${with_spl+set}" = set; then : + withval=$with_spl; splsrc="$withval" +fi + + + +# Check whether --with-spl-obj was given. +if test "${with_spl_obj+set}" = set; then : + withval=$with_spl_obj; splbuild="$withval" +fi + + + +# Check whether --with-spl-timeout was given. +if test "${with_spl_timeout+set}" = set; then : + withval=$with_spl_timeout; timeout="$withval" +else + timeout=0 +fi + + + splsrc0="/var/lib/dkms/spl/${VERSION}/build" + splsrc1="/usr/local/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc2="/usr/local/src/spl-${VERSION}" + splsrc3="/usr/src/spl-${VERSION}/${LINUX_VERSION}" + splsrc4="/usr/src/spl-${VERSION}" + splsrc5="../spl/" + splsrc6="$LINUX" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl source directory" >&5 +$as_echo_n "checking spl source directory... " >&6; } + if test -z "${splsrc}"; then : + + if test -e "${splsrc0}/spl.release.in"; then : + + splsrc=${splsrc0} + +elif test -e "${splsrc1}/spl.release.in"; then : + + splsrc=${splsrc1} + +elif test -e "${splsrc2}/spl.release.in"; then : + + splsrc=${splsrc2} + +elif test -e "${splsrc3}/spl.release.in"; then : + + splsrc=$(readlink -f "${splsrc3}") + +elif test -e "${splsrc4}/spl.release.in" ; then : + + splsrc=${splsrc4} + +elif test -e "${splsrc5}/spl.release.in"; then : + + splsrc=$(readlink -f "${splsrc5}") + +elif test -e "${splsrc6}/spl.release.in" ; then : + + splsrc=${splsrc6} + +else + + splsrc="Not found" + +fi + +else + + if test "$splsrc" = "NONE"; then : + + splbuild=NONE + splsrcver=NONE + +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splsrc" >&5 +$as_echo "$splsrc" >&6; } + if test ! -e "$splsrc/spl.release.in"; then : + + as_fn_error $? " + *** Please make sure the kmod spl devel package for your distribution + *** is installed then try again. If that fails you can specify the + *** location of the spl source with the '--with-spl=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl build directory" >&5 +$as_echo_n "checking spl build directory... " >&6; } + while true; do + if test -z "$splbuild"; then : + + if test -e "${splsrc}/${LINUX_VERSION}/spl_config.h" ; then : + + splbuild="${splsrc}/${LINUX_VERSION}" + +elif test -e "${splsrc}/spl_config.h" ; then : + + splbuild="${splsrc}" + +elif find -L "${splsrc}" -name spl_config.h 2> /dev/null | grep -wq spl_config.h ; then : + + splbuild=$(find -L "${splsrc}" -name spl_config.h | sed 's,/spl_config.h,,') + +else + + splbuild="Not found" + +fi + +fi + if test -e "$splbuild/spl_config.h" -o $timeout -le 0; then : + + break; + +else + + sleep 1 + timeout=$((timeout-1)) + +fi + done + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splbuild" >&5 +$as_echo "$splbuild" >&6; } + if ! test -e "$splbuild/spl_config.h"; then : + + as_fn_error $? " + *** Please make sure the kmod spl devel package for your + *** distribution is installed then try again. If that fails you + *** can specify the location of the spl objects with the + *** '--with-spl-obj=PATH' option." "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl source version" >&5 +$as_echo_n "checking spl source version... " >&6; } + if test -r $splbuild/spl_config.h && + fgrep -q SPL_META_VERSION $splbuild/spl_config.h; then : + + + splsrcver=`(echo "#include "; + echo "splsrcver=SPL_META_VERSION-SPL_META_RELEASE") | + cpp -I $splbuild | + grep "^splsrcver=" | tr -d \" | cut -d= -f2` + +fi + + if test -z "$splsrcver"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +$as_echo "Not found" >&6; } + as_fn_error $? " + *** Cannot determine the version of the spl source. + *** Please prepare the spl source before running this script" "$LINENO" 5 + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $splsrcver" >&5 +$as_echo "$splsrcver" >&6; } + + SPL=${splsrc} + SPL_OBJ=${splbuild} + SPL_VERSION=${splsrcver} + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking spl file name for module symbols" >&5 +$as_echo_n "checking spl file name for module symbols... " >&6; } + SPL_SYMBOLS=NONE + + while true; do + if test -r $SPL_OBJ/Module.symvers; then : + + SPL_SYMBOLS=Module.symvers + +elif test -r $SPL_OBJ/Modules.symvers; then : + + SPL_SYMBOLS=Modules.symvers + +elif test -r $SPL_OBJ/module/Module.symvers; then : + + SPL_SYMBOLS=Module.symvers + +elif test -r $SPL_OBJ/module/Modules.symvers; then : + + SPL_SYMBOLS=Modules.symvers + +fi + + if test $SPL_SYMBOLS != NONE -o $timeout -le 0; then : + + break; + +else + + sleep 1 + timeout=$((timeout-1)) + +fi + done + + if test "$SPL_SYMBOLS" = NONE; then : + + SPL_SYMBOLS=$LINUX_SYMBOLS + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPL_SYMBOLS" >&5 +$as_echo "$SPL_SYMBOLS" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether modules can be built" >&5 +$as_echo_n "checking whether modules can be built... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$enable_linux_builtin" != xyes; then + as_fn_error $? "*** Unable to build an empty module." "$LINENO" 5 + else + as_fn_error $? " + *** Unable to build an empty module. + *** Please run 'make scripts' inside the kernel source tree." "$LINENO" 5 + fi + + + +fi + rm -Rf build + + + + + if test "x$cross_compiling" != xyes; then : + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include "$LINUX/include/linux/license.h" + +int +main () +{ + + return !license_is_gpl_compatible("$ZFS_META_LICENSE"); + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + +$as_echo "#define ZFS_IS_GPL_COMPATIBLE 1" >>confdefs.h + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC" >&5 +$as_echo_n "checking whether Linux was built with CONFIG_DEBUG_LOCK_ALLOC... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + #ifndef CONFIG_DEBUG_LOCK_ALLOC + #error CONFIG_DEBUG_LOCK_ALLOC not #defined + #endif + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mutex_lock() is GPL-only" >&5 +$as_echo_n "checking whether mutex_lock() is GPL-only... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct mutex lock; + + mutex_init(&lock); + mutex_lock(&lock); + mutex_unlock(&lock); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + as_fn_error $? " + *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible + *** with the CDDL license and will prevent the module linking stage + *** from succeeding. You must rebuild your kernel without this + *** option enabled." "$LINENO" 5 + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + + +fi + rm -Rf build + + + + + + + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="-I\$(src)" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DECLARE_EVENT_CLASS() is available" >&5 +$as_echo_n "checking whether DECLARE_EVENT_CLASS() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + MODULE_LICENSE(ZFS_META_LICENSE); + + #define CREATE_TRACE_POINTS + #include "conftest.h" + +int +main (void) +{ + + trace_zfs_autoconf_event_one(1UL); + trace_zfs_autoconf_event_two(2UL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + + #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) + #define _CONFTEST_H + + #undef TRACE_SYSTEM + #define TRACE_SYSTEM zfs + #include + + DECLARE_EVENT_CLASS(zfs_autoconf_event_class, + TP_PROTO(unsigned long i), + TP_ARGS(i), + TP_STRUCT__entry( + __field(unsigned long, i) + ), + TP_fast_assign( + __entry->i = i; + ), + TP_printk("i = %lu", __entry->i) + ); + + #define DEFINE_AUTOCONF_EVENT(name) \ + DEFINE_EVENT(zfs_autoconf_event_class, name, \ + TP_PROTO(unsigned long i), \ + TP_ARGS(i)) + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); + DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); + + #endif /* _CONFTEST_H */ + + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #define TRACE_INCLUDE_FILE conftest + #include + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DECLARE_EVENT_CLASS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current->bio_tail exists" >&5 +$as_echo_n "checking whether current->bio_tail exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current->bio_tail = (struct bio **) NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_BIO_TAIL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current->bio_list exists" >&5 +$as_echo_n "checking whether current->bio_list exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current->bio_list = (struct bio_list *) NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_BIO_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking block device operation prototypes" >&5 +$as_echo_n "checking block device operation prototypes... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int blk_open(struct block_device *bdev, fmode_t mode) + { return 0; } + int blk_ioctl(struct block_device *bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + int blk_compat_ioctl(struct block_device * bdev, fmode_t mode, + unsigned x, unsigned long y) { return 0; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = blk_open, + .release = NULL, + .ioctl = blk_ioctl, + .compat_ioctl = blk_compat_ioctl, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: struct block_device" >&5 +$as_echo "struct block_device" >&6; } + +$as_echo "#define HAVE_BDEV_BLOCK_DEVICE_OPERATIONS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: struct inode" >&5 +$as_echo "struct inode" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether block_device_operations.release is void" >&5 +$as_echo_n "checking whether block_device_operations.release is void... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void blk_release(struct gendisk *g, fmode_t mode) { return; } + + static const struct block_device_operations + bops __attribute__ ((unused)) = { + .open = NULL, + .release = blk_release, + .ioctl = NULL, + .compat_ioctl = NULL, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: void" >&5 +$as_echo "void" >&6; } + +$as_echo "#define HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5 +$as_echo "int" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines fmode_t" >&5 +$as_echo_n "checking whether kernel defines fmode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + fmode_t *ptr __attribute__ ((unused)); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kernel defines KOBJ_NAME_LEN" >&5 +$as_echo_n "checking whether kernel defines KOBJ_NAME_LEN... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int val __attribute__ ((unused)); + val = KOBJ_NAME_LEN; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_KOBJ_NAME_LEN 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blkdev_get() wants 3 args" >&5 +$as_echo_n "checking whether blkdev_get() wants 3 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + (void) blkdev_get(bdev, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARG_BLKDEV_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blkdev_get_by_path() is available" >&5 +$as_echo_n "checking whether blkdev_get_by_path() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + blkdev_get_by_path(NULL, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLKDEV_GET_BY_PATH 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether open_bdev_exclusive() is available" >&5 +$as_echo_n "checking whether open_bdev_exclusive() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + open_bdev_exclusive(NULL, 0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]open_bdev_exclusive[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_OPEN_BDEV_EXCLUSIVE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lookup_bdev() is available" >&5 +$as_echo_n "checking whether lookup_bdev() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + lookup_bdev(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LOOKUP_BDEV 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether invalidate_bdev() wants 1 arg" >&5 +$as_echo_n "checking whether invalidate_bdev() wants 1 arg... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + invalidate_bdev(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_INVALIDATE_BDEV 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdev_logical_block_size() is available" >&5 +$as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + bdev_logical_block_size(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BDEV_LOGICAL_BLOCK_SIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdev_physical_block_size() is available" >&5 +$as_echo_n "checking whether bdev_physical_block_size() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct block_device *bdev = NULL; + bdev_physical_block_size(bdev); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BDEV_PHYSICAL_BLOCK_SIZE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio has bi_iter" >&5 +$as_echo_n "checking whether bio has bi_iter... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct bio bio; + bio.bi_iter.bi_sector = 0; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_BVEC_ITER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_FAILFAST_* are defined" >&5 +$as_echo_n "checking whether BIO_RW_FAILFAST_* are defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = ((1 << BIO_RW_FAILFAST_DEV) | + (1 << BIO_RW_FAILFAST_TRANSPORT) | + (1 << BIO_RW_FAILFAST_DRIVER)); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_FAILFAST_DTD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether REQ_FAILFAST_MASK is defined" >&5 +$as_echo_n "checking whether REQ_FAILFAST_MASK is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = REQ_FAILFAST_MASK; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_REQ_FAILFAST_MASK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bio_end_io_t wants 1 arg" >&5 +$as_echo_n "checking whether bio_end_io_t wants 1 arg... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void wanted_end_io(struct bio *bio) { return; } + + bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_BIO_END_IO_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_BARRIER is defined" >&5 +$as_echo_n "checking whether BIO_RW_BARRIER is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = BIO_RW_BARRIER; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_BARRIER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BIO_RW_DISCARD is defined" >&5 +$as_echo_n "checking whether BIO_RW_DISCARD is defined... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + int flags __attribute__ ((unused)); + flags = BIO_RW_DISCARD; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BIO_RW_DISCARD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_flush() is available" >&5 +$as_echo_n "checking whether blk_queue_flush() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_FLUSH 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_flush() is GPL-only" >&5 +$as_echo_n "checking whether blk_queue_flush() is GPL-only... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_flush(q, REQ_FLUSH); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_FLUSH_GPL_ONLY 1" >>confdefs.h + + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_max_hw_sectors() is available" >&5 +$as_echo_n "checking whether blk_queue_max_hw_sectors() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_MAX_HW_SECTORS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether blk_queue_max_segments() is available" >&5 +$as_echo_n "checking whether blk_queue_max_segments() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct request_queue *q = NULL; + (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BLK_QUEUE_MAX_SEGMENTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether get_disk_ro() is available" >&5 +$as_echo_n "checking whether get_disk_ro() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct gendisk *disk = NULL; + (void) get_disk_ro(disk); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_DISK_RO 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether get_gendisk() is available" >&5 +$as_echo_n "checking whether get_gendisk() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + get_gendisk(0, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]get_gendisk[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in block/genhd.c; do + grep -q -E "EXPORT_SYMBOL.*(get_gendisk)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_GENDISK 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ql->discard_granularity is available" >&5 +$as_echo_n "checking whether ql->discard_granularity is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct queue_limits ql __attribute__ ((unused)); + + ql.discard_granularity = 0; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DISCARD_GRANULARITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block uses const struct xattr_hander" >&5 +$as_echo_n "checking whether super_block uses const struct xattr_hander... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + + const struct xattr_handler xattr_test_handler = { + .prefix = "test", + .get = NULL, + .set = NULL, + }; + + const struct xattr_handler *xattr_handlers[] = { + &xattr_test_handler, + }; + + const struct super_block sb __attribute__ ((unused)) = { + .s_xattr = xattr_handlers, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CONST_XATTR_HANDLER 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->get() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->get() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int get(struct dentry *dentry, const char *name, + void *buffer, size_t size, int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->get() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->get() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int get(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, void *buffer, size_t size) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .get = get, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_GET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->set() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->set() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int set(struct dentry *dentry, const char *name, + const void *buffer, size_t size, int flags, + int handler_flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_SET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->set() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->set() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int set(const struct xattr_handler *handler, struct dentry *dentry, + const char *name, const void *buffer, size_t size, int flags) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .set = set, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_SET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->list() wants dentry" >&5 +$as_echo_n "checking whether xattr_handler->list() wants dentry... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + size_t list(struct dentry *dentry, char *list, size_t list_size, + const char *name, size_t name_len, int handler_flags) + { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DENTRY_XATTR_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether xattr_handler->list() wants xattr_handler" >&5 +$as_echo_n "checking whether xattr_handler->list() wants xattr_handler... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + size_t list(const struct xattr_handler *handler, struct dentry *dentry, + char *list, size_t list_size, const char *name, size_t name_len) { return 0; } + static const struct xattr_handler + xops __attribute__ ((unused)) = { + .list = list, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_HANDLER_XATTR_LIST 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether inode_owner_or_capable() exists" >&5 +$as_echo_n "checking whether inode_owner_or_capable() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip = NULL; + (void) inode_owner_or_capable(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_OWNER_OR_CAPABLE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether is_owner_or_cap() exists" >&5 +$as_echo_n "checking whether is_owner_or_cap() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + struct inode *ip = NULL; + (void) is_owner_or_cap(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_IS_OWNER_OR_CAP 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_from_xattr() needs user_ns" >&5 +$as_echo_n "checking whether posix_acl_from_xattr() needs user_ns... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + +int +main (void) +{ + + posix_acl_from_xattr(&init_user_ns, NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_FROM_XATTR_USERNS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_release() is available" >&5 +$as_echo_n "checking whether posix_acl_release() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + +int +main (void) +{ + + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_RELEASE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_release() is GPL-only" >&5 +$as_echo_n "checking whether posix_acl_release() is GPL-only... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + #include + + MODULE_LICENSE("$ZFS_META_LICENSE"); + +int +main (void) +{ + + struct posix_acl* tmp = posix_acl_alloc(1, 0); + posix_acl_release(tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_RELEASE_GPL_ONLY 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_chmod exists" >&5 +$as_echo_n "checking whether posix_acl_chmod exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + posix_acl_chmod(NULL, 0, 0) + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_CHMOD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __posix_acl_chmod exists" >&5 +$as_echo_n "checking whether __posix_acl_chmod exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + __posix_acl_chmod(NULL, 0, 0) + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE___POSIX_ACL_CHMOD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether inode has i_acl and i_default_acl" >&5 +$as_echo_n "checking whether inode has i_acl and i_default_acl... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode ino; + ino.i_acl = NULL; + ino.i_default_acl = NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_CACHING 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_acl_equiv_mode() wants umode_t" >&5 +$as_echo_n "checking whether posix_acl_equiv_mode() wants umode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + umode_t tmp; + posix_acl_equiv_mode(NULL,&tmp); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->permission() exists" >&5 +$as_echo_n "checking whether iops->permission() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int permission_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PERMISSION 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->permission() wants nameidata" >&5 +$as_echo_n "checking whether iops->permission() wants nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int permission_fn(struct inode *inode, int mask, + struct nameidata *nd) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .permission = permission_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PERMISSION 1" >>confdefs.h + + +$as_echo "#define HAVE_PERMISSION_WITH_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->check_acl() exists" >&5 +$as_echo_n "checking whether iops->check_acl() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int check_acl_fn(struct inode *inode, int mask) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_ACL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->check_acl() wants flags" >&5 +$as_echo_n "checking whether iops->check_acl() wants flags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int check_acl_fn(struct inode *inode, int mask, + unsigned int flags) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .check_acl = check_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_ACL 1" >>confdefs.h + + +$as_echo "#define HAVE_CHECK_ACL_WITH_FLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->get_acl() exists" >&5 +$as_echo_n "checking whether iops->get_acl() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + struct posix_acl *get_acl_fn(struct inode *inode, int type) + { return NULL; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .get_acl = get_acl_fn, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GET_ACL 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether current_umask exists" >&5 +$as_echo_n "checking whether current_umask exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + current_umask(); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CURRENT_UMASK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->show_options() wants dentry" >&5 +$as_echo_n "checking whether sops->show_options() wants dentry... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int show_options (struct seq_file * x, struct dentry * y) { return 0; }; + static struct super_operations sops __attribute__ ((unused)) = { + .show_options = show_options, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHOW_OPTIONS_WITH_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether file_inode() is available" >&5 +$as_echo_n "checking whether file_inode() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file *f = NULL; + file_inode(f); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fsync() wants" >&5 +$as_echo_n "checking whether fops->fsync() wants... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, struct dentry *dentry, int x) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: dentry" >&5 +$as_echo "dentry" >&6; } + +$as_echo "#define HAVE_FSYNC_WITH_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, int x) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no dentry" >&5 +$as_echo "no dentry" >&6; } + +$as_echo "#define HAVE_FSYNC_WITHOUT_DENTRY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int test_fsync(struct file *f, loff_t a, loff_t b, int c) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fsync = test_fsync, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: range" >&5 +$as_echo "range" >&6; } + +$as_echo "#define HAVE_FSYNC_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->evict_inode() exists" >&5 +$as_echo_n "checking whether sops->evict_inode() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void evict_inode (struct inode * t) { return; } + static struct super_operations sops __attribute__ ((unused)) = { + .evict_inode = evict_inode, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_EVICT_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->dirty_inode() wants flags" >&5 +$as_echo_n "checking whether sops->dirty_inode() wants flags... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void dirty_inode(struct inode *a, int b) { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .dirty_inode = dirty_inode, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DIRTY_INODE_WITH_FLAGS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->nr_cached_objects() exists" >&5 +$as_echo_n "checking whether sops->nr_cached_objects() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int nr_cached_objects(struct super_block *sb) { return 0; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .nr_cached_objects = nr_cached_objects, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_NR_CACHED_OBJECTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sops->free_cached_objects() exists" >&5 +$as_echo_n "checking whether sops->free_cached_objects() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void free_cached_objects(struct super_block *sb, int x) + { return; } + + static const struct super_operations + sops __attribute__ ((unused)) = { + .free_cached_objects = free_cached_objects, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FREE_CACHED_OBJECTS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->fallocate() exists" >&5 +$as_echo_n "checking whether fops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + long test_fallocate(struct file *file, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FILE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->fallocate() exists" >&5 +$as_echo_n "checking whether iops->fallocate() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + long test_fallocate(struct inode *inode, int mode, + loff_t offset, loff_t len) { return 0; } + + static const struct inode_operations + fops __attribute__ ((unused)) = { + .fallocate = test_fallocate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_FALLOCATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->create()/mkdir()/mknod() take umode_t" >&5 +$as_echo_n "checking whether iops->create()/mkdir()/mknod() take umode_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int mkdir(struct inode *inode, struct dentry *dentry, + umode_t umode) { return 0; } + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .mkdir = mkdir, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_MKDIR_UMODE_T 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->lookup() passes nameidata" >&5 +$as_echo_n "checking whether iops->lookup() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + struct dentry *inode_lookup(struct inode *inode, + struct dentry *dentry, struct nameidata *nidata) + { return NULL; } + + static const struct inode_operations iops + __attribute__ ((unused)) = { + .lookup = inode_lookup, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LOOKUP_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->create() passes nameidata" >&5 +$as_echo_n "checking whether iops->create() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + #ifdef HAVE_MKDIR_UMODE_T + int inode_create(struct inode *inode ,struct dentry *dentry, + umode_t umode, struct nameidata *nidata) { return 0; } + #else + int inode_create(struct inode *inode,struct dentry *dentry, + int umode, struct nameidata * nidata) { return 0; } + #endif + + static const struct inode_operations + iops __attribute__ ((unused)) = { + .create = inode_create, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CREATE_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->follow_link() passes nameidata" >&5 +$as_echo_n "checking whether iops->follow_link() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + const char *follow_link(struct dentry *de, void **cookie) + { return "symlink"; } + static struct inode_operations iops __attribute__ ((unused)) = { + .follow_link = follow_link, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FOLLOW_LINK_NAMEIDATA 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->put_link() passes nameidata" >&5 +$as_echo_n "checking whether iops->put_link() passes nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void put_link(struct inode *ip, void *cookie) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .put_link = put_link, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PUT_LINK_NAMEIDATA 1" >>confdefs.h + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iops->truncate_range() exists" >&5 +$as_echo_n "checking whether iops->truncate_range() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + void truncate_range(struct inode *inode, loff_t start, + loff_t end) { return; } + static struct inode_operations iops __attribute__ ((unused)) = { + .truncate_range = truncate_range, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INODE_TRUNCATE_RANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dops->d_automount() exists" >&5 +$as_echo_n "checking whether dops->d_automount() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct vfsmount *d_automount(struct path *p) { return NULL; } + struct dentry_operations dops __attribute__ ((unused)) = { + .d_automount = d_automount, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_AUTOMOUNT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether eops->encode_fh() wants inode" >&5 +$as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *parent) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .encode_fh = encode_fh, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ENCODE_FH_WITH_INODE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether eops->commit_metadata() exists" >&5 +$as_echo_n "checking whether eops->commit_metadata() exists... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int commit_metadata(struct inode *inode) { return 0; } + static struct export_operations eops __attribute__ ((unused))={ + .commit_metadata = commit_metadata, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_COMMIT_METADATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether clear_inode() is available" >&5 +$as_echo_n "checking whether clear_inode() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + clear_inode(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]clear_inode[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/inode.c; do + grep -q -E "EXPORT_SYMBOL.*(clear_inode)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CLEAR_INODE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether insert_inode_locked() is available" >&5 +$as_echo_n "checking whether insert_inode_locked() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + insert_inode_locked(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/inode.c; do + grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_INSERT_INODE_LOCKED 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_make_root() is available" >&5 +$as_echo_n "checking whether d_make_root() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_make_root(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_make_root[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_make_root)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_MAKE_ROOT 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_obtain_alias() is available" >&5 +$as_echo_n "checking whether d_obtain_alias() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_obtain_alias(NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_OBTAIN_ALIAS 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_prune_aliases() is available" >&5 +$as_echo_n "checking whether d_prune_aliases() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip = NULL; + d_prune_aliases(ip); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_prune_aliases[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_prune_aliases)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_PRUNE_ALIASES 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether d_set_d_op() is available" >&5 +$as_echo_n "checking whether d_set_d_op() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + d_set_d_op(NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]d_set_d_op[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/dcache.c; do + grep -q -E "EXPORT_SYMBOL.*(d_set_d_op)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_SET_D_OP 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dops->d_revalidate() takes struct nameidata" >&5 +$as_echo_n "checking whether dops->d_revalidate() takes struct nameidata... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int revalidate (struct dentry *dentry, + struct nameidata *nidata) { return 0; } + + static const struct dentry_operations + dops __attribute__ ((unused)) = { + .d_revalidate = revalidate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_D_REVALIDATE_NAMEIDATA 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dentry uses const struct dentry_operations" >&5 +$as_echo_n "checking whether dentry uses const struct dentry_operations... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + const struct dentry_operations test_d_op = { + .d_revalidate = NULL, + }; + +int +main (void) +{ + + struct dentry d __attribute__ ((unused)); + + d.d_op = &test_d_op; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CONST_DENTRY_OPERATIONS 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether check_disk_size_change() is available" >&5 +$as_echo_n "checking whether check_disk_size_change() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + check_disk_size_change(NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]check_disk_size_change[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/block_dev.c; do + grep -q -E "EXPORT_SYMBOL.*(check_disk_size_change)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CHECK_DISK_SIZE_CHANGE 1" >>confdefs.h + + + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether truncate_setsize() is available" >&5 +$as_echo_n "checking whether truncate_setsize() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + truncate_setsize(NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]truncate_setsize[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/truncate.c; do + grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_TRUNCATE_SETSIZE 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether security_inode_init_security wants 6 args" >&5 +$as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + char *name __attribute__ ((unused)) = NULL; + void *value __attribute__ ((unused)) = NULL; + size_t len __attribute__ ((unused)) = 0; + + security_inode_init_security(ip, dip, str, &name, &value, &len); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether security_inode_init_security wants callback" >&5 +$as_echo_n "checking whether security_inode_init_security wants callback... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode *ip __attribute__ ((unused)) = NULL; + struct inode *dip __attribute__ ((unused)) = NULL; + const struct qstr *str __attribute__ ((unused)) = NULL; + initxattrs func __attribute__ ((unused)) = NULL; + + security_inode_init_security(ip, dip, str, func, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mount_nodev() is available" >&5 +$as_echo_n "checking whether mount_nodev() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + mount_nodev(NULL, 0, NULL, NULL); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]mount_nodev[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/super.c; do + grep -q -E "EXPORT_SYMBOL.*(mount_nodev)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_MOUNT_NODEV 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_shrink" >&5 +$as_echo_n "checking whether super_block has s_shrink... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int shrink(struct shrinker *s, struct shrink_control *sc) + { return 0; } + + static const struct super_block + sb __attribute__ ((unused)) = { + .s_shrink.shrink = shrink, + .s_shrink.seeks = DEFAULT_SEEKS, + .s_shrink.batch = 0, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SHRINK 1" >>confdefs.h + + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether shrink_control has nid" >&5 +$as_echo_n "checking whether shrink_control has nid... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct shrink_control sc __attribute__ ((unused)); + unsigned long scnidsize __attribute__ ((unused)) = + sizeof(sc.nid); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define SHRINK_CONTROL_HAS_NID 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_instances list_head" >&5 +$as_echo_n "checking whether super_block has s_instances list_head... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct super_block sb __attribute__ ((unused)); + + INIT_LIST_HEAD(&sb.s_instances); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_S_INSTANCES_LIST_HEAD 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether super_block has s_d_op" >&5 +$as_echo_n "checking whether super_block has s_d_op... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct super_block sb __attribute__ ((unused)); + sb.s_d_op = NULL; + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_S_D_OP 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 2 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 3 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + unsigned int cap = BDI_CAP_MAP_COPY; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name, cap); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bdi_setup_and_register() wants 3 args" >&5 +$as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + struct backing_dev_info bdi; + +int +main (void) +{ + + char *name = "bdi"; + unsigned int cap = BDI_CAP_MAP_COPY; + int error __attribute__((unused)) = + bdi_setup_and_register(&bdi, name, cap); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in mm/backing-dev.c; do + grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether set_nlink() is available" >&5 +$as_echo_n "checking whether set_nlink() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct inode node; + unsigned int link = 0; + (void) set_nlink(&node, link); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SET_NLINK 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether elevator_change() is available" >&5 +$as_echo_n "checking whether elevator_change() is available... " >&6; } + tmp_flags="$EXTRA_KCFLAGS" + EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + #include + +int +main (void) +{ + + int ret; + struct request_queue *q = NULL; + char *elevator = NULL; + ret = elevator_change(q, elevator); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ELEVATOR_CHANGE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + EXTRA_KCFLAGS="$tmp_flags" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sget() wants 5 args" >&5 +$as_echo_n "checking whether sget() wants 5 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file_system_type *type = NULL; + int (*test)(struct super_block *,void *) = NULL; + int (*set)(struct super_block *,void *) = NULL; + int flags = 0; + void *data = NULL; + (void) sget(type, test, set, flags, data); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_5ARG_SGET 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lseek_execute() is available" >&5 +$as_echo_n "checking whether lseek_execute() is available... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct file *fp __attribute__ ((unused)) = NULL; + struct inode *ip __attribute__ ((unused)) = NULL; + loff_t offset __attribute__ ((unused)) = 0; + loff_t maxsize __attribute__ ((unused)) = 0; + + lseek_execute(fp, ip, offset, maxsize); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]lseek_exclusive[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in fs/read_write.c; do + grep -q -E "EXPORT_SYMBOL.*(lseek_exclusive)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_LSEEK_EXECUTE 1" >>confdefs.h + + + fi + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->iterate() is available" >&5 +$as_echo_n "checking whether fops->iterate() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int iterate(struct file *filp, struct dir_context * context) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .iterate = iterate, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_ITERATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->readdir() is available" >&5 +$as_echo_n "checking whether fops->readdir() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + int readdir(struct file *filp, void *entry, filldir_t func) + { return 0; } + + static const struct file_operations fops + __attribute__ ((unused)) = { + .readdir = readdir, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_READDIR 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no; file a bug report with ZFSOnLinux" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + + +fi + rm -Rf build + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fops->read/write_iter() are available" >&5 +$as_echo_n "checking whether fops->read/write_iter() are available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) + { return 0; } + ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) + { return 0; } + + static const struct file_operations + fops __attribute__ ((unused)) = { + .read_iter = test_read, + .write_iter = test_write, + }; + +int +main (void) +{ + + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_VFS_RW_ITERATE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether kmap_atomic wants 1 args" >&5 +$as_echo_n "checking whether kmap_atomic wants 1 args... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct page page; + kmap_atomic(&page); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_1ARG_KMAP_ATOMIC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether follow_down_one() is available" >&5 +$as_echo_n "checking whether follow_down_one() is available... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + +int +main (void) +{ + + struct path *p = NULL; + follow_down_one(p); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FOLLOW_DOWN_ONE 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns int" >&5 +$as_echo_n "checking whether make_request_fn() returns int... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + int make_request(struct request_queue *q, struct bio *bio) + { + return (0); + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET int" >>confdefs.h + + +$as_echo "#define HAVE_MAKE_REQUEST_FN_RET_INT 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns void" >&5 +$as_echo_n "checking whether make_request_fn() returns void... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void make_request(struct request_queue *q, struct bio *bio) + { + return; + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET void" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make_request_fn() returns blk_qc_t" >&5 +$as_echo_n "checking whether make_request_fn() returns blk_qc_t... " >&6; } + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + blk_qc_t make_request(struct request_queue *q, struct bio *bio) + { + return (BLK_QC_T_NONE); + } + +int +main (void) +{ + + blk_queue_make_request(NULL, &make_request); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define MAKE_REQUEST_FN_RET blk_qc_t" >>confdefs.h + + +$as_echo "#define HAVE_MAKE_REQUEST_FN_RET_QC 1" >>confdefs.h + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + as_fn_error $? "no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new" "$LINENO" 5 + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + +fi + rm -Rf build + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether generic IO accounting symbols are avaliable" >&5 +$as_echo_n "checking whether generic IO accounting symbols are avaliable... " >&6; } + + + +cat confdefs.h - <<_ACEOF >conftest.c + + + #include + + void (*generic_start_io_acct_f)(int, unsigned long, + struct hd_struct *) = &generic_start_io_acct; + void (*generic_end_io_acct_f)(int, struct hd_struct *, + unsigned long) = &generic_end_io_acct; + +int +main (void) +{ + + generic_start_io_acct(0, 0, NULL); + generic_end_io_acct(0, NULL, 0); + + ; + return 0; +} + +_ACEOF + + + +cat - <<_ACEOF >conftest.h + +_ACEOF + + + rm -Rf build && mkdir -p build && touch build/conftest.mod.c + echo "obj-m := conftest.o" >build/Makefile + modpost_flag='' + test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage + if { ac_try='cp conftest.c conftest.h build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null && { ac_try='test -s build/conftest.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + rc=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + rc=1 + + +fi + rm -Rf build + + + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else + if test "x$enable_linux_builtin" != xyes; then + + grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ + $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in block/bio.c; do + grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ + "$LINUX/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then : + rc=1 + else : + rc=0 + fi + else : + rc=0 + fi + + fi + if test $rc -ne 0; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + else : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GENERIC_IO_ACCT 1" >>confdefs.h + + + fi + fi + + + + if test "$LINUX_OBJ" != "$LINUX"; then : + + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + +fi + + + + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE" + KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL" + KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\"" + + + ;; + srpm) ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Error!" >&5 +$as_echo "Error!" >&6; } + as_fn_error $? "Bad value \"$ZFS_CONFIG\" for --with-config, + user kernel|user|all|srpm" "$LINENO" 5 ;; + esac + + if test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all; then + CONFIG_USER_TRUE= + CONFIG_USER_FALSE='#' +else + CONFIG_USER_TRUE='#' + CONFIG_USER_FALSE= +fi + + if test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all && + test "x$enable_linux_builtin" != xyes ; then + CONFIG_KERNEL_TRUE= + CONFIG_KERNEL_FALSE='#' +else + CONFIG_KERNEL_TRUE='#' + CONFIG_KERNEL_FALSE= +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether debugging is enabled" >&5 +$as_echo_n "checking whether debugging is enabled... " >&6; } + # Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enable_debug=no +fi + + + if test "x$enable_debug" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" + HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG -Werror" + DEBUG_CFLAGS="-DDEBUG -Werror" + DEBUG_STACKFLAGS="-fstack-check" + DEBUG_ZFS="_with_debug" + +$as_echo "#define ZFS_DEBUG 1" >>confdefs.h + + +else + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG " + HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG " + DEBUG_CFLAGS="-DNDEBUG" + DEBUG_STACKFLAGS="" + DEBUG_ZFS="_without_debug" + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 +$as_echo "$enable_debug" >&6; } + + + # Check whether --enable-debug-dmu-tx was given. +if test "${enable_debug_dmu_tx+set}" = set; then : + enableval=$enable_debug_dmu_tx; +else + enable_debug_dmu_tx=no +fi + + + if test "x$enable_debug_dmu_tx" = xyes; then : + + KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_DMU_TX" + DEBUG_DMU_TX="_with_debug_dmu_tx" + +$as_echo "#define DEBUG_DMU_TX 1" >>confdefs.h + + +else + + DEBUG_DMU_TX="_without_debug_dmu_tx" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dmu tx validation is enabled" >&5 +$as_echo_n "checking whether dmu tx validation is enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_dmu_tx" >&5 +$as_echo "$enable_debug_dmu_tx" >&6; } + + +ac_config_files="$ac_config_files Makefile udev/Makefile udev/rules.d/Makefile etc/Makefile etc/init.d/Makefile etc/zfs/Makefile etc/systemd/Makefile etc/systemd/system/Makefile etc/modules-load.d/Makefile man/Makefile man/man1/Makefile man/man5/Makefile man/man8/Makefile lib/Makefile lib/libspl/Makefile lib/libspl/asm-generic/Makefile lib/libspl/asm-i386/Makefile lib/libspl/asm-x86_64/Makefile lib/libspl/include/Makefile lib/libspl/include/ia32/Makefile lib/libspl/include/ia32/sys/Makefile lib/libspl/include/rpc/Makefile lib/libspl/include/sys/Makefile lib/libspl/include/sys/sysevent/Makefile lib/libspl/include/sys/dktp/Makefile lib/libspl/include/util/Makefile lib/libavl/Makefile lib/libefi/Makefile lib/libnvpair/Makefile lib/libunicode/Makefile lib/libuutil/Makefile lib/libzpool/Makefile lib/libzfs/libzfs.pc lib/libzfs/libzfs_core.pc lib/libzfs/Makefile lib/libzfs_core/Makefile lib/libshare/Makefile cmd/Makefile cmd/zdb/Makefile cmd/zhack/Makefile cmd/zfs/Makefile cmd/zinject/Makefile cmd/zpool/Makefile cmd/zstreamdump/Makefile cmd/ztest/Makefile cmd/zpios/Makefile cmd/mount_zfs/Makefile cmd/fsck_zfs/Makefile cmd/zvol_id/Makefile cmd/vdev_id/Makefile cmd/arcstat/Makefile cmd/dbufstat/Makefile cmd/arc_summary/Makefile cmd/zed/Makefile contrib/Makefile contrib/bash_completion.d/Makefile contrib/dracut/Makefile contrib/dracut/90zfs/Makefile contrib/initramfs/Makefile module/Makefile module/avl/Makefile module/nvpair/Makefile module/unicode/Makefile module/zcommon/Makefile module/zfs/Makefile module/zpios/Makefile include/Makefile include/linux/Makefile include/sys/Makefile include/sys/fs/Makefile include/sys/fm/Makefile include/sys/fm/fs/Makefile scripts/Makefile scripts/zpios-profile/Makefile scripts/zpios-test/Makefile scripts/zpool-config/Makefile scripts/common.sh rpm/Makefile rpm/redhat/Makefile rpm/redhat/zfs.spec rpm/redhat/zfs-kmod.spec rpm/redhat/zfs-dkms.spec rpm/generic/Makefile rpm/generic/zfs.spec rpm/generic/zfs-kmod.spec rpm/generic/zfs-dkms.spec zfs-script-config.sh zfs.release" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CONFIG_USER_TRUE}" && test -z "${CONFIG_USER_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_USER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CONFIG_KERNEL_TRUE}" && test -z "${CONFIG_KERNEL_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_KERNEL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by zfs $as_me 0.6.5.4, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +zfs config.status 0.6.5.4 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "zfs_config.h") CONFIG_HEADERS="$CONFIG_HEADERS zfs_config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "udev/Makefile") CONFIG_FILES="$CONFIG_FILES udev/Makefile" ;; + "udev/rules.d/Makefile") CONFIG_FILES="$CONFIG_FILES udev/rules.d/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "etc/init.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/init.d/Makefile" ;; + "etc/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES etc/zfs/Makefile" ;; + "etc/systemd/Makefile") CONFIG_FILES="$CONFIG_FILES etc/systemd/Makefile" ;; + "etc/systemd/system/Makefile") CONFIG_FILES="$CONFIG_FILES etc/systemd/system/Makefile" ;; + "etc/modules-load.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/modules-load.d/Makefile" ;; + "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "man/man1/Makefile") CONFIG_FILES="$CONFIG_FILES man/man1/Makefile" ;; + "man/man5/Makefile") CONFIG_FILES="$CONFIG_FILES man/man5/Makefile" ;; + "man/man8/Makefile") CONFIG_FILES="$CONFIG_FILES man/man8/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "lib/libspl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/Makefile" ;; + "lib/libspl/asm-generic/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-generic/Makefile" ;; + "lib/libspl/asm-i386/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-i386/Makefile" ;; + "lib/libspl/asm-x86_64/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-x86_64/Makefile" ;; + "lib/libspl/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/Makefile" ;; + "lib/libspl/include/ia32/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/ia32/Makefile" ;; + "lib/libspl/include/ia32/sys/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/ia32/sys/Makefile" ;; + "lib/libspl/include/rpc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/rpc/Makefile" ;; + "lib/libspl/include/sys/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/sys/Makefile" ;; + "lib/libspl/include/sys/sysevent/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/sys/sysevent/Makefile" ;; + "lib/libspl/include/sys/dktp/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/sys/dktp/Makefile" ;; + "lib/libspl/include/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/util/Makefile" ;; + "lib/libavl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libavl/Makefile" ;; + "lib/libefi/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libefi/Makefile" ;; + "lib/libnvpair/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libnvpair/Makefile" ;; + "lib/libunicode/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libunicode/Makefile" ;; + "lib/libuutil/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libuutil/Makefile" ;; + "lib/libzpool/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzpool/Makefile" ;; + "lib/libzfs/libzfs.pc") CONFIG_FILES="$CONFIG_FILES lib/libzfs/libzfs.pc" ;; + "lib/libzfs/libzfs_core.pc") CONFIG_FILES="$CONFIG_FILES lib/libzfs/libzfs_core.pc" ;; + "lib/libzfs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzfs/Makefile" ;; + "lib/libzfs_core/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzfs_core/Makefile" ;; + "lib/libshare/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libshare/Makefile" ;; + "cmd/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/Makefile" ;; + "cmd/zdb/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zdb/Makefile" ;; + "cmd/zhack/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zhack/Makefile" ;; + "cmd/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zfs/Makefile" ;; + "cmd/zinject/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zinject/Makefile" ;; + "cmd/zpool/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zpool/Makefile" ;; + "cmd/zstreamdump/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zstreamdump/Makefile" ;; + "cmd/ztest/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/ztest/Makefile" ;; + "cmd/zpios/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zpios/Makefile" ;; + "cmd/mount_zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/mount_zfs/Makefile" ;; + "cmd/fsck_zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/fsck_zfs/Makefile" ;; + "cmd/zvol_id/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zvol_id/Makefile" ;; + "cmd/vdev_id/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/vdev_id/Makefile" ;; + "cmd/arcstat/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/arcstat/Makefile" ;; + "cmd/dbufstat/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/dbufstat/Makefile" ;; + "cmd/arc_summary/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/arc_summary/Makefile" ;; + "cmd/zed/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zed/Makefile" ;; + "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; + "contrib/bash_completion.d/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/bash_completion.d/Makefile" ;; + "contrib/dracut/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dracut/Makefile" ;; + "contrib/dracut/90zfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dracut/90zfs/Makefile" ;; + "contrib/initramfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/initramfs/Makefile" ;; + "module/Makefile") CONFIG_FILES="$CONFIG_FILES module/Makefile" ;; + "module/avl/Makefile") CONFIG_FILES="$CONFIG_FILES module/avl/Makefile" ;; + "module/nvpair/Makefile") CONFIG_FILES="$CONFIG_FILES module/nvpair/Makefile" ;; + "module/unicode/Makefile") CONFIG_FILES="$CONFIG_FILES module/unicode/Makefile" ;; + "module/zcommon/Makefile") CONFIG_FILES="$CONFIG_FILES module/zcommon/Makefile" ;; + "module/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES module/zfs/Makefile" ;; + "module/zpios/Makefile") CONFIG_FILES="$CONFIG_FILES module/zpios/Makefile" ;; + "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/linux/Makefile") CONFIG_FILES="$CONFIG_FILES include/linux/Makefile" ;; + "include/sys/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/Makefile" ;; + "include/sys/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fs/Makefile" ;; + "include/sys/fm/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fm/Makefile" ;; + "include/sys/fm/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fm/fs/Makefile" ;; + "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; + "scripts/zpios-profile/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/zpios-profile/Makefile" ;; + "scripts/zpios-test/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/zpios-test/Makefile" ;; + "scripts/zpool-config/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/zpool-config/Makefile" ;; + "scripts/common.sh") CONFIG_FILES="$CONFIG_FILES scripts/common.sh" ;; + "rpm/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/Makefile" ;; + "rpm/redhat/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/redhat/Makefile" ;; + "rpm/redhat/zfs.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs.spec" ;; + "rpm/redhat/zfs-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs-kmod.spec" ;; + "rpm/redhat/zfs-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs-dkms.spec" ;; + "rpm/generic/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/generic/Makefile" ;; + "rpm/generic/zfs.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs.spec" ;; + "rpm/generic/zfs-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs-kmod.spec" ;; + "rpm/generic/zfs-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs-dkms.spec" ;; + "zfs-script-config.sh") CONFIG_FILES="$CONFIG_FILES zfs-script-config.sh" ;; + "zfs.release") CONFIG_FILES="$CONFIG_FILES zfs.release" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "zfs_config.h":H) + (mv zfs_config.h zfs_config.h.tmp && + awk -f ${ac_srcdir}/config/config.awk zfs_config.h.tmp >zfs_config.h && + rm zfs_config.h.tmp) || exit 1 ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + --- linux-4.4.0.orig/zfs/configure.ac +++ linux-4.4.0/zfs/configure.ac @@ -0,0 +1,150 @@ +/* + * This file is part of the ZFS Linux port. + * + * Copyright (c) 2009 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory + * Written by: + * Brian Behlendorf , + * Herb Wartens , + * Jim Garlick + * LLNL-CODE-403049 + * + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +AC_INIT(m4_esyscmd(grep Name META | cut -d ':' -f 2 | tr -d ' \n'), + m4_esyscmd(grep Version META | cut -d ':' -f 2 | tr -d ' \n')) +AC_LANG(C) +ZFS_AC_META +AC_CONFIG_AUX_DIR([config]) +AC_CONFIG_MACRO_DIR([config]) +AC_CANONICAL_SYSTEM +AM_MAINTAINER_MODE +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AM_INIT_AUTOMAKE +AC_CONFIG_HEADERS([zfs_config.h], [ + (mv zfs_config.h zfs_config.h.tmp && + awk -f ${ac_srcdir}/config/config.awk zfs_config.h.tmp >zfs_config.h && + rm zfs_config.h.tmp) || exit 1]) + +AC_PROG_INSTALL +AC_PROG_CC +AC_PROG_LIBTOOL +AM_PROG_AS + +ZFS_AC_LICENSE +ZFS_AC_PACKAGE +ZFS_AC_CONFIG +ZFS_AC_DEBUG +ZFS_AC_DEBUG_DMU_TX + +AC_CONFIG_FILES([ + Makefile + udev/Makefile + udev/rules.d/Makefile + etc/Makefile + etc/init.d/Makefile + etc/zfs/Makefile + etc/systemd/Makefile + etc/systemd/system/Makefile + etc/modules-load.d/Makefile + man/Makefile + man/man1/Makefile + man/man5/Makefile + man/man8/Makefile + lib/Makefile + lib/libspl/Makefile + lib/libspl/asm-generic/Makefile + lib/libspl/asm-i386/Makefile + lib/libspl/asm-x86_64/Makefile + lib/libspl/include/Makefile + lib/libspl/include/ia32/Makefile + lib/libspl/include/ia32/sys/Makefile + lib/libspl/include/rpc/Makefile + lib/libspl/include/sys/Makefile + lib/libspl/include/sys/sysevent/Makefile + lib/libspl/include/sys/dktp/Makefile + lib/libspl/include/util/Makefile + lib/libavl/Makefile + lib/libefi/Makefile + lib/libnvpair/Makefile + lib/libunicode/Makefile + lib/libuutil/Makefile + lib/libzpool/Makefile + lib/libzfs/libzfs.pc + lib/libzfs/libzfs_core.pc + lib/libzfs/Makefile + lib/libzfs_core/Makefile + lib/libshare/Makefile + cmd/Makefile + cmd/zdb/Makefile + cmd/zhack/Makefile + cmd/zfs/Makefile + cmd/zinject/Makefile + cmd/zpool/Makefile + cmd/zstreamdump/Makefile + cmd/ztest/Makefile + cmd/zpios/Makefile + cmd/mount_zfs/Makefile + cmd/fsck_zfs/Makefile + cmd/zvol_id/Makefile + cmd/vdev_id/Makefile + cmd/arcstat/Makefile + cmd/dbufstat/Makefile + cmd/arc_summary/Makefile + cmd/zed/Makefile + contrib/Makefile + contrib/bash_completion.d/Makefile + contrib/dracut/Makefile + contrib/dracut/90zfs/Makefile + contrib/initramfs/Makefile + module/Makefile + module/avl/Makefile + module/nvpair/Makefile + module/unicode/Makefile + module/zcommon/Makefile + module/zfs/Makefile + module/zpios/Makefile + include/Makefile + include/linux/Makefile + include/sys/Makefile + include/sys/fs/Makefile + include/sys/fm/Makefile + include/sys/fm/fs/Makefile + scripts/Makefile + scripts/zpios-profile/Makefile + scripts/zpios-test/Makefile + scripts/zpool-config/Makefile + scripts/common.sh + rpm/Makefile + rpm/redhat/Makefile + rpm/redhat/zfs.spec + rpm/redhat/zfs-kmod.spec + rpm/redhat/zfs-dkms.spec + rpm/generic/Makefile + rpm/generic/zfs.spec + rpm/generic/zfs-kmod.spec + rpm/generic/zfs-dkms.spec + zfs-script-config.sh + zfs.release +]) + +AC_OUTPUT --- linux-4.4.0.orig/zfs/contrib/Makefile.am +++ linux-4.4.0/zfs/contrib/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = bash_completion.d dracut initramfs +DIST_SUBDIRS = bash_completion.d dracut initramfs --- linux-4.4.0.orig/zfs/contrib/Makefile.in +++ linux-4.4.0/zfs/contrib/Makefile.in @@ -0,0 +1,779 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contrib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +SUBDIRS = bash_completion.d dracut initramfs +DIST_SUBDIRS = bash_completion.d dracut initramfs +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/contrib/bash_completion.d/Makefile.am +++ linux-4.4.0/zfs/contrib/bash_completion.d/Makefile.am @@ -0,0 +1,5 @@ +bashcompletiondir = $(sysconfdir)/bash_completion.d + +noinst_DATA = zfs + +EXTRA_DIST = $(noinst_DATA) --- linux-4.4.0.orig/zfs/contrib/bash_completion.d/Makefile.in +++ linux-4.4.0/zfs/contrib/bash_completion.d/Makefile.in @@ -0,0 +1,603 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contrib/bash_completion.d +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +bashcompletiondir = $(sysconfdir)/bash_completion.d +noinst_DATA = zfs +EXTRA_DIST = $(noinst_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/bash_completion.d/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/bash_completion.d/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/contrib/bash_completion.d/zfs +++ linux-4.4.0/zfs/contrib/bash_completion.d/zfs @@ -0,0 +1,391 @@ +# Copyright (c) 2013, Aneurin Price + +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: + +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +if [[ -w /dev/zfs ]]; then + __ZFS_CMD="zfs" + __ZPOOL_CMD="zpool" +else + __ZFS_CMD="sudo zfs" + __ZPOOL_CMD="sudo zpool" +fi + +__zfs_get_commands() +{ + $__ZFS_CMD 2>&1 | awk '/^\t[a-z]/ {print $1}' | cut -f1 -d '|' | uniq +} + +__zfs_get_properties() +{ + $__ZFS_CMD get 2>&1 | awk '$2 == "YES" || $2 == "NO" {print $1}'; echo all name space +} + +__zfs_get_editable_properties() +{ + $__ZFS_CMD get 2>&1 | awk '$2 == "YES" {print $1"="}' +} + +__zfs_get_inheritable_properties() +{ + $__ZFS_CMD get 2>&1 | awk '$3 == "YES" {print $1}' +} + +__zfs_list_datasets() +{ + $__ZFS_CMD list -H -o name -t filesystem,volume +} + +__zfs_list_filesystems() +{ + $__ZFS_CMD list -H -o name -t filesystem +} + +__zfs_match_snapshot() +{ + local base_dataset=${cur%@*} + if [[ $base_dataset != $cur ]] + then + $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset + else + $__ZFS_CMD list -H -o name -t filesystem,volume | awk '{print $1"@"}' + fi +} + +__zfs_match_explicit_snapshot() +{ + local base_dataset=${cur%@*} + if [[ $base_dataset != $cur ]] + then + $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset + fi +} + +__zfs_match_multiple_snapshots() +{ + local existing_opts=$(expr "$cur" : '\(.*\)[%,]') + if [[ $existing_opts ]] + then + local base_dataset=${cur%@*} + if [[ $base_dataset != $cur ]] + then + local cur=${cur##*,} + if [[ $cur =~ ^%|%.*% ]] + then + # correct range syntax is start%end + return 1 + fi + local range_start=$(expr "$cur" : '\(.*%\)') + $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset | sed 's$.*@$'$range_start'$g' + fi + else + __zfs_match_explicit_snapshot; __zfs_list_datasets + fi +} + +__zfs_list_volumes() +{ + $__ZFS_CMD list -H -o name -t volume +} + +__zfs_argument_chosen() +{ + local word property + for word in $(seq $((COMP_CWORD-1)) -1 2) + do + local prev="${COMP_WORDS[$word]}" + if [[ ${COMP_WORDS[$word-1]} != -[tos] ]] + then + if [[ "$prev" == [^,]*,* ]] || [[ "$prev" == *[@:]* ]] + then + return 0 + fi + for property in $@ + do + if [[ $prev == "$property" ]] + then + return 0 + fi + done + fi + done + return 1 +} + +__zfs_complete_ordered_arguments() +{ + local list1=$1 + local list2=$2 + local cur=$3 + local extra=$4 + if __zfs_argument_chosen $list1 + then + COMPREPLY=($(compgen -W "$list2 $extra" -- "$cur")) + else + COMPREPLY=($(compgen -W "$list1 $extra" -- "$cur")) + fi +} + +__zfs_complete_multiple_options() +{ + local options=$1 + local cur=$2 + + COMPREPLY=($(compgen -W "$options" -- "${cur##*,}")) + local existing_opts=$(expr "$cur" : '\(.*,\)') + if [[ $existing_opts ]] + then + COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" ) + fi +} + +__zfs_complete_switch() +{ + local options=$1 + if [[ ${cur:0:1} == - ]] + then + COMPREPLY=($(compgen -W "-{$options}" -- "$cur")) + return 0 + else + return 1 + fi +} + +__zfs_complete() +{ + local cur prev cmd cmds + COMPREPLY=() + # Don't split on colon + _get_comp_words_by_ref -n : -c cur -p prev -w COMP_WORDS -i COMP_CWORD + cmd="${COMP_WORDS[1]}" + + if [[ ${prev##*/} == zfs ]] + then + cmds=$(__zfs_get_commands) + COMPREPLY=($(compgen -W "$cmds -?" -- "$cur")) + return 0 + fi + + case "${cmd}" in + clone) + case "${prev}" in + -o) + COMPREPLY=($(compgen -W "$(__zfs_get_editable_properties)" -- "$cur")) + ;; + *) + if ! __zfs_complete_switch "o,p" + then + if __zfs_argument_chosen + then + COMPREPLY=($(compgen -W "$(__zfs_list_datasets)" -- "$cur")) + else + COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) + fi + fi + ;; + esac + ;; + get) + case "${prev}" in + -d) + COMPREPLY=($(compgen -W "" -- "$cur")) + ;; + -t) + __zfs_complete_multiple_options "filesystem volume snapshot all" "$cur" + ;; + -s) + __zfs_complete_multiple_options "local default inherited temporary none" "$cur" + ;; + -o) + __zfs_complete_multiple_options "name property value source received all" "$cur" + ;; + *) + if ! __zfs_complete_switch "H,r,p,d,o,t,s" + then + if __zfs_argument_chosen $(__zfs_get_properties) + then + COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) + else + __zfs_complete_multiple_options "$(__zfs_get_properties)" "$cur" + fi + fi + ;; + esac + ;; + inherit) + if ! __zfs_complete_switch "r" + then + __zfs_complete_ordered_arguments "$(__zfs_get_inheritable_properties)" "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" $cur + fi + ;; + list) + case "${prev}" in + -d) + COMPREPLY=($(compgen -W "" -- "$cur")) + ;; + -t) + __zfs_complete_multiple_options "filesystem volume snapshot all" "$cur" + ;; + -o) + __zfs_complete_multiple_options "$(__zfs_get_properties)" "$cur" + ;; + -s|-S) + COMPREPLY=($(compgen -W "$(__zfs_get_properties)" -- "$cur")) + ;; + *) + if ! __zfs_complete_switch "H,r,d,o,t,s,S" + then + COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) + fi + ;; + esac + ;; + promote) + COMPREPLY=($(compgen -W "$(__zfs_list_filesystems)" -- "$cur")) + ;; + rollback) + if ! __zfs_complete_switch "r,R,f" + then + COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) + fi + ;; + send) + if ! __zfs_complete_switch "d,n,P,p,R,v,i,I" + then + COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) + fi + ;; + snapshot) + case "${prev}" in + -o) + COMPREPLY=($(compgen -W "$(__zfs_get_editable_properties)" -- "$cur")) + ;; + *) + if ! __zfs_complete_switch "o,r" + then + COMPREPLY=($(compgen -W "$(__zfs_list_datasets | awk '{print $1"@"}')" -- "$cur")) + fi + ;; + esac + ;; + set) + __zfs_complete_ordered_arguments "$(__zfs_get_editable_properties)" "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" $cur + ;; + upgrade) + case "${prev}" in + -a|-V|-v) + COMPREPLY=($(compgen -W "" -- "$cur")) + ;; + *) + if ! __zfs_complete_switch "a,V,v,r" + then + COMPREPLY=($(compgen -W "$(__zfs_list_filesystems)" -- "$cur")) + fi + ;; + esac + ;; + destroy) + if ! __zfs_complete_switch "d,f,n,p,R,r,v" + then + __zfs_complete_multiple_options "$(__zfs_match_multiple_snapshots)" $cur + fi + ;; + *) + COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) + ;; + esac + __ltrim_colon_completions "$cur" + return 0 +} + +__zpool_get_commands() +{ + $__ZPOOL_CMD 2>&1 | awk '/^\t[a-z]/ {print $1}' | uniq +} + +__zpool_get_properties() +{ + $__ZPOOL_CMD get 2>&1 | awk '$2 == "YES" || $2 == "NO" {print $1}'; echo all +} + +__zpool_get_editable_properties() +{ + $__ZPOOL_CMD get 2>&1 | awk '$2 == "YES" {print $1"="}' +} + +__zpool_list_pools() +{ + $__ZPOOL_CMD list -H -o name +} + +__zpool_complete() +{ + local cur prev cmd cmds + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + cmd="${COMP_WORDS[1]}" + + if [[ ${prev##*/} == zpool ]] + then + cmds=$(__zpool_get_commands) + COMPREPLY=($(compgen -W "$cmds" -- "$cur")) + return 0 + fi + + case "${cmd}" in + get) + __zfs_complete_ordered_arguments "$(__zpool_get_properties)" "$(__zpool_list_pools)" $cur + return 0 + ;; + import) + if [[ $prev == -d ]] + then + _filedir -d + else + COMPREPLY=($(compgen -W "$(__zpool_list_pools) -d" -- "$cur")) + fi + return 0 + ;; + set) + __zfs_complete_ordered_arguments "$(__zpool_get_editable_properties)" "$(__zpool_list_pools)" $cur + return 0 + ;; + add|attach|clear|create|detach|offline|online|remove|replace) + local pools="$(__zpool_list_pools)" + if __zfs_argument_chosen $pools + then + _filedir + else + COMPREPLY=($(compgen -W "$pools" -- "$cur")) + fi + return 0 + ;; + *) + COMPREPLY=($(compgen -W "$(__zpool_list_pools)" -- "$cur")) + return 0 + ;; + esac + +} + +complete -F __zfs_complete zfs +complete -F __zpool_complete zpool --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/Makefile.am +++ linux-4.4.0/zfs/contrib/dracut/90zfs/Makefile.am @@ -0,0 +1,25 @@ +pkgdracutdir = $(dracutdir)/modules.d/90zfs +pkgdracut_SCRIPTS = \ + export-zfs.sh \ + module-setup.sh \ + mount-zfs.sh \ + parse-zfs.sh \ + zfs-lib.sh + +EXTRA_DIST = \ + $(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/mount-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/parse-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in + +$(pkgdracut_SCRIPTS): + -$(SED) -e 's,@bindir\@,$(bindir),g' \ + -e 's,@sbindir\@,$(sbindir),g' \ + -e 's,@udevdir\@,$(udevdir),g' \ + -e 's,@udevruledir\@,$(udevruledir),g' \ + -e 's,@sysconfdir\@,$(sysconfdir),g' \ + "$(top_srcdir)/contrib/dracut/90zfs/$@.in" >'$@' + +distclean-local:: + -$(RM) $(pkgdracut_SCRIPTS) --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/Makefile.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/Makefile.in @@ -0,0 +1,693 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contrib/dracut/90zfs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgdracutdir)" +SCRIPTS = $(pkgdracut_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +pkgdracutdir = $(dracutdir)/modules.d/90zfs +pkgdracut_SCRIPTS = \ + export-zfs.sh \ + module-setup.sh \ + mount-zfs.sh \ + parse-zfs.sh \ + zfs-lib.sh + +EXTRA_DIST = \ + $(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/mount-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/parse-zfs.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/dracut/90zfs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/dracut/90zfs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-pkgdracutSCRIPTS: $(pkgdracut_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdracutdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdracutdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdracutdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdracutdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-pkgdracutSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(pkgdracutdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(pkgdracutdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgdracutSCRIPTS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgdracutSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distclean-local distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgdracutSCRIPTS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am uninstall-pkgdracutSCRIPTS + +.PRECIOUS: Makefile + + +$(pkgdracut_SCRIPTS): + -$(SED) -e 's,@bindir\@,$(bindir),g' \ + -e 's,@sbindir\@,$(sbindir),g' \ + -e 's,@udevdir\@,$(udevdir),g' \ + -e 's,@udevruledir\@,$(udevruledir),g' \ + -e 's,@sysconfdir\@,$(sysconfdir),g' \ + "$(top_srcdir)/contrib/dracut/90zfs/$@.in" >'$@' + +distclean-local:: + -$(RM) $(pkgdracut_SCRIPTS) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/export-zfs.sh.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/export-zfs.sh.in @@ -0,0 +1,29 @@ +#!/bin/sh + +. /lib/dracut-zfs-lib.sh + +_do_zpool_export() { + local ret=0 + local final="${1}" + local opts="" + + if [ "x${final}" != "x" ]; then + opts="-f" + fi + + info "Exporting ZFS storage pools." + export_all ${opts} || ret=$? + + if [ "x${final}" != "x" ]; then + info "zpool list" + zpool list 2>&1 | vinfo + fi + + return ${ret} +} + +if command -v zpool >/dev/null; then + _do_zpool_export "${1}" +else + : +fi --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/module-setup.sh.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/module-setup.sh.in @@ -0,0 +1,61 @@ +#!/bin/sh + +check() { + # We depend on udev-rules being loaded + [ "${1}" = "-d" ] && return 0 + + # Verify the zfs tool chain + which zpool >/dev/null 2>&1 || return 1 + which zfs >/dev/null 2>&1 || return 1 + + return 0 +} + +depends() { + echo udev-rules + return 0 +} + +installkernel() { + instmods zfs + instmods zcommon + instmods znvpair + instmods zavl + instmods zunicode + instmods spl + instmods zlib_deflate + instmods zlib_inflate +} + +install() { + inst_rules @udevruledir@/90-zfs.rules + inst_rules @udevruledir@/69-vdev.rules + inst_rules @udevruledir@/60-zvol.rules + dracut_install @sbindir@/zfs + dracut_install @sbindir@/zpool + dracut_install @udevdir@/vdev_id + dracut_install @udevdir@/zvol_id + dracut_install mount.zfs + dracut_install hostid + dracut_install awk + dracut_install head + inst_hook cmdline 95 "${moddir}/parse-zfs.sh" + inst_hook mount 98 "${moddir}/mount-zfs.sh" + inst_hook shutdown 30 "${moddir}/export-zfs.sh" + + inst_simple "${moddir}/zfs-lib.sh" "/lib/dracut-zfs-lib.sh" + if [ -e @sysconfdir@/zfs/zpool.cache ]; then + inst @sysconfdir@/zfs/zpool.cache + fi + + if [ -e @sysconfdir@/zfs/vdev_id.conf ]; then + inst @sysconfdir@/zfs/vdev_id.conf + fi + + # Synchronize initramfs and system hostid + AA=`hostid | cut -b 1,2` + BB=`hostid | cut -b 3,4` + CC=`hostid | cut -b 5,6` + DD=`hostid | cut -b 7,8` + printf "\x${DD}\x${CC}\x${BB}\x${AA}" > "${initdir}/etc/hostid" +} --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/mount-zfs.sh.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/mount-zfs.sh.in @@ -0,0 +1,44 @@ +#!/bin/sh + +. /lib/dracut-zfs-lib.sh + +ZFS_DATASET="" +ZFS_POOL="" + +case "${root}" in + zfs:*) ;; + *) return ;; +esac + +# Delay until all required block devices are present. +udevadm settle + +if [ "${root}" = "zfs:AUTO" ] ; then + ZFS_DATASET="$(find_bootfs)" + if [ $? -ne 0 ] ; then + zpool import -N -a ${ZPOOL_IMPORT_OPTS} + ZFS_DATASET="$(find_bootfs)" + if [ $? -ne 0 ] ; then + warn "ZFS: No bootfs attribute found in importable pools." + export_all || export_all "-f" + + rootok=0 + return 1 + fi + fi + info "ZFS: Using ${ZFS_DATASET} as root." +fi + +ZFS_DATASET="${ZFS_DATASET:-${root#zfs:}}" +ZFS_POOL="${ZFS_DATASET%%/*}" + +if import_pool "${ZFS_POOL}" ; then + info "ZFS: Mounting dataset ${ZFS_DATASET}..." + if mount_dataset "${ZFS_DATASET}" ; then + ROOTFS_MOUNTED=yes + return 0 + fi +fi + +rootok=0 +need_shutdown --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/parse-zfs.sh.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/parse-zfs.sh.in @@ -0,0 +1,59 @@ +#!/bin/sh + +. /lib/dracut-lib.sh + +# Let the command line override our host id. +spl_hostid=`getarg spl_hostid=` +if [ -n "${spl_hostid}" ] ; then + info "ZFS: Using hostid from command line: ${spl_hostid}" + AA=`echo ${spl_hostid} | cut -b 1,2` + BB=`echo ${spl_hostid} | cut -b 3,4` + CC=`echo ${spl_hostid} | cut -b 5,6` + DD=`echo ${spl_hostid} | cut -b 7,8` + printf "\x${DD}\x${CC}\x${BB}\x${AA}" >/etc/hostid +elif [ -f "/etc/hostid" ] ; then + info "ZFS: Using hostid from /etc/hostid: `hostid`" +else + warn "ZFS: No hostid found on kernel command line or /etc/hostid." + warn "ZFS: Pools may not import correctly." +fi + +wait_for_zfs=0 +case "${root}" in + ""|zfs|zfs:) + # We'll take root unset, root=zfs, or root=zfs: + # No root set, so we want to read the bootfs attribute. We + # can't do that until udev settles so we'll set dummy values + # and hope for the best later on. + root="zfs:AUTO" + rootok=1 + wait_for_zfs=1 + + info "ZFS: Enabling autodetection of bootfs after udev settles." + ;; + + ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*) + # root is explicit ZFS root. Parse it now. We can handle + # a root=... param in any of the following formats: + # root=ZFS=rpool/ROOT + # root=zfs:rpool/ROOT + # root=zfs:FILESYSTEM=rpool/ROOT + # root=FILESYSTEM=rpool/ROOT + + # Strip down to just the pool/fs + root="${root#zfs:}" + root="${root#FILESYSTEM=}" + root="zfs:${root#ZFS=}" + rootok=1 + wait_for_zfs=1 + + info "ZFS: Set ${root} as bootfs." + ;; +esac + +# Make sure Dracut is happy that we have a root and will wait for ZFS +# modules to settle before mounting. +if [ ${wait_for_zfs} -eq 1 ]; then + ln -s /dev/null /dev/root 2>/dev/null + echo '[ -e /dev/zfs ]' > "${hookdir}/initqueue/finished/zfs.sh" +fi --- linux-4.4.0.orig/zfs/contrib/dracut/90zfs/zfs-lib.sh.in +++ linux-4.4.0/zfs/contrib/dracut/90zfs/zfs-lib.sh.in @@ -0,0 +1,87 @@ +#!/bin/sh + +command -v getarg >/dev/null || . /lib/dracut-lib.sh + +OLDIFS="${IFS}" +NEWLINE=" +" + +ZPOOL_IMPORT_OPTS="" +if getargbool 0 zfs_force -y zfs.force -y zfsforce ; then + warn "ZFS: Will force-import pools if necessary." + ZPOOL_IMPORT_OPTS="${ZPOOL_IMPORT_OPTS} -f" +fi + +# find_bootfs +# returns the first dataset with the bootfs attribute. +find_bootfs() { + IFS="${NEWLINE}" + for dataset in $(zpool list -H -o bootfs); do + case "${dataset}" in + "" | "-") + continue + ;; + "no pools available") + IFS="${OLDIFS}" + return 1 + ;; + *) + IFS="${OLDIFS}" + echo "${dataset}" + return 0 + ;; + esac + done + + IFS="${OLDIFS}" + return 1 +} + +# import_pool POOL +# imports the given zfs pool if it isn't imported already. +import_pool() { + local pool="${1}" + + if ! zpool list -H "${pool}" 2>&1 > /dev/null ; then + info "ZFS: Importing pool ${pool}..." + if ! zpool import -N ${ZPOOL_IMPORT_OPTS} "${pool}" ; then + warn "ZFS: Unable to import pool ${pool}" + return 1 + fi + fi + + return 0 +} + +# mount_dataset DATASET +# mounts the given zfs dataset. +mount_dataset() { + local dataset="${1}" + local mountpoint="$(zfs get -H -o value mountpoint "${dataset}")" + + # We need zfsutil for non-legacy mounts and not for legacy mounts. + if [ "${mountpoint}" = "legacy" ] ; then + mount -t zfs "${dataset}" "${NEWROOT}" + else + mount -o zfsutil -t zfs "${dataset}" "${NEWROOT}" + fi + + return $? +} + +# export_all OPTS +# exports all imported zfs pools. +export_all() { + local opts="${1}" + local ret=0 + + IFS="${NEWLINE}" + for pool in `zpool list -H -o name` ; do + if zpool list -H "${pool}" 2>&1 > /dev/null ; then + zpool export "${pool}" ${opts} || ret=$? + fi + done + IFS="${OLDIFS}" + + return ${ret} +} --- linux-4.4.0.orig/zfs/contrib/dracut/Makefile.am +++ linux-4.4.0/zfs/contrib/dracut/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = 90zfs + +EXTRA_DIST = README.dracut.markdown --- linux-4.4.0.orig/zfs/contrib/dracut/Makefile.in +++ linux-4.4.0/zfs/contrib/dracut/Makefile.in @@ -0,0 +1,780 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contrib/dracut +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +SUBDIRS = 90zfs +EXTRA_DIST = README.dracut.markdown +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/dracut/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/dracut/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/contrib/dracut/README.dracut.markdown +++ linux-4.4.0/zfs/contrib/dracut/README.dracut.markdown @@ -0,0 +1,207 @@ +How to setup a zfs root filesystem using dracut +----------------------------------------------- + +1) Install the zfs-dracut package. This package adds a zfs dracut module +to the /usr/share/dracut/modules.d/ directory which allows dracut to +create an initramfs which is zfs aware. + +2) Set the bootfs property for the bootable dataset in the pool. Then set +the dataset mountpoint property to '/'. + + $ zpool set bootfs=pool/dataset pool + $ zfs set mountpoint=/ pool/dataset + +It is also possible to set the bootfs property for an entire pool, just in +case you are not using a dedicated dataset for '/'. + + $ zpool set bootfs=pool pool + $ zfs set mountpoint=/ pool + +Alternately, legacy mountpoints can be used by setting the 'root=' option +on the kernel line of your grub.conf/menu.lst configuration file. Then +set the dataset mountpoint property to 'legacy'. + + $ grub.conf/menu.lst: kernel ... root=ZFS=pool/dataset + $ zfs set mountpoint=legacy pool/dataset + +3) To set zfs module options put them in /etc/modprobe.d/zfs.conf file. +The complete list of zfs module options is available by running the +_modinfo zfs_ command. Commonly set options include: zfs_arc_min, +zfs_arc_max, zfs_prefetch_disable, and zfs_vdev_max_pending. + +4) Finally, create your new initramfs by running dracut. + + $ dracut --force /path/to/initramfs kernel_version + +Kernel Command Line +------------------- + +The initramfs' behavior is influenced by the following kernel command line +parameters passed in from the boot loader: + +* `root=...`: If not set, importable pools are searched for a bootfs +attribute. If an explicitly set root is desired, you may use +`root=ZFS:pool/dataset` + +* `zfs_force=0`: If set to 1, the initramfs will run `zpool import -f` when +attempting to import pools if the required pool isn't automatically imported +by the zfs module. This can save you a trip to a bootcd if hostid has +changed, but is dangerous and can lead to zpool corruption, particularly in +cases where storage is on a shared fabric such as iSCSI where multiple hosts +can access storage devices concurrently. _Please understand the implications +of force-importing a pool before enabling this option!_ + +* `spl_hostid`: By default, the hostid used by the SPL module is read from +/etc/hostid inside the initramfs. This file is placed there from the host +system when the initramfs is built which effectively ties the ramdisk to the +host which builds it. If a different hostid is desired, one may be set in +this attribute and will override any file present in the ramdisk. The +format should be hex exactly as found in the `/etc/hostid` file, IE +`spl_hostid=0x00bab10c`. + +Note that changing the hostid between boots will most likely lead to an +un-importable pool since the last importing hostid won't match. In order +to recover from this, you may use the `zfs_force` option or boot from a +different filesystem and `zpool import -f` then `zpool export` the pool +before rebooting with the new hostid. + +How it Works +============ + +The Dracut module consists of the following files (less Makefile's): + +* `module-setup.sh`: Script run by the initramfs builder to create the +ramdisk. Contains instructions on which files are required by the modules +and z* programs. Also triggers inclusion of `/etc/hostid` and the zpool +cache. This file is not included in the initramfs. + +* `90-zfs.rules`: udev rules which trigger loading of the ZFS modules at boot. + +* `zfs-lib.sh`: Utility functions used by the other files. + +* `parse-zfs.sh`: Run early in the initramfs boot process to parse kernel +command line and determine if ZFS is the active root filesystem. + +* `mount-zfs.sh`: Run later in initramfs boot process after udev has settled +to mount the root dataset. + +* `export-zfs.sh`: Run on shutdown after dracut has restored the initramfs +and pivoted to it, allowing for a clean unmount and export of the ZFS root. + +`zfs-lib.sh` +------------ + +This file provides a few handy functions for working with ZFS. Those +functions are used by the `mount-zfs.sh` and `export-zfs.sh` files. +However, they could be used by any other file as well, as long as the file +sources `/lib/dracut-zfs-lib.sh`. + +`module-setup.sh` +----------------- + +This file is run by the Dracut script within the live system, not at boot +time. It's not included in the final initramfs. Functions in this script +describe which files are needed by ZFS at boot time. + +Currently all the various z* and spl modules are included, a dependency is +asserted on udev-rules, and the various zfs, zpool, etc. helpers are included. +Dracut provides library functions which automatically gather the shared libs +necessary to run each of these binaries, so statically built binaries are +not required. + +The zpool and zvol udev rules files are copied from where they are +installed by the ZFS build. __PACKAGERS TAKE NOTE__: If you move +`/etc/udev/rules/60-z*.rules`, you'll need to update this file to match. + +Currently this file also includes `/etc/hostid` and `/etc/zfs/zpool.cache` +which means the generated ramdisk is specific to the host system which built +it. If a generic initramfs is required, it may be preferable to omit these +files and specify the `spl_hostid` from the boot loader instead. + +`parse-zfs.sh` +-------------- + +Run during the cmdline phase of the initramfs boot process, this script +performs some basic sanity checks on kernel command line parameters to +determine if booting from ZFS is likely to be what is desired. Dracut +requires this script to adjust the `root` variable if required and to set +`rootok=1` if a mountable root filesystem is available. Unfortunately this +script must run before udev is settled and kernel modules are known to be +loaded, so accessing the zpool and zfs commands is unsafe. + +If the root=ZFS... parameter is set on the command line, then it's at least +certain that ZFS is what is desired, though this script is unable to +determine if ZFS is in fact available. This script will alter the `root` +parameter to replace several historical forms of specifying the pool and +dataset name with the canonical form of `zfs:pool/dataset`. + +If no root= parameter is set, the best this script can do is guess that +ZFS is desired. At present, no other known filesystems will work with no +root= parameter, though this might possibly interfere with using the +compiled-in default root in the kernel image. It's considered unlikely +that would ever be the case when an initramfs is in use, so this script +sets `root=zfs:AUTO` and hopes for the best. + +Once the root=... (or lack thereof) parameter is parsed, a dummy symlink +is created from `/dev/root` -> `/dev/null` to satisfy parts of the Dracut +process which check for presence of a single root device node. + +Finally, an initqueue/finished hook is registered which causes the initqueue +phase of Dracut to wait for `/dev/zfs` to become available before attempting +to mount anything. + +`mount-zfs.sh` +-------------- + +This script is run after udev has settled and all tasks in the initqueue +have succeeded. This ensures that `/dev/zfs` is available and that the +various ZFS modules are successfully loaded. As it is now safe to call +zpool and friends, we can proceed to find the bootfs attribute if necessary. + +If the root parameter was explicitly set on the command line, no parsing is +necessary. The list of imported pools is checked to see if the desired pool +is already imported. If it's not, and attempt is made to import the pool +explicitly, though no force is attempted. Finally the specified dataset +is mounted on `$NEWROOT`, first using the `-o zfsutil` option to handle +non-legacy mounts, then if that fails, without zfsutil to handle legacy +mount points. + +If no root parameter was specified, this script attempts to find a pool with +its bootfs attribute set. First, already-imported pools are scanned and if +an appropriate pool is found, no additional pools are imported. If no pool +with bootfs is found, any additional pools in the system are imported with +`zpool import -N -a`, and the scan for bootfs is tried again. If no bootfs +is found with all pools imported, all pools are re-exported, and boot fails. +Assuming a bootfs is found, an attempt is made to mount it to `$NEWROOT`, +first with, then without the zfsutil option as above. + +Ordinarily pools are imported _without_ the force option which may cause +boot to fail if the hostid has changed or a pool has been physically moved +between servers. The `zfs_force` kernel parameter is provided which when +set to `1` causes `zpool import` to be run with the `-f` flag. Forcing pool +import can lead to serious data corruption and loss of pools, so this option +should be used with extreme caution. Note that even with this flag set, if +the required zpool was auto-imported by the kernel module, no additional +`zpool import` commands are run, so nothing is forced. + +`export-zfs.sh` +--------------- + +Normally the zpool containing the root dataset cannot be exported on +shutdown as it is still in use by the init process. To work around this, +Dracut is able to restore the initramfs on shutdown and pivot to it. +All remaining process are then running from a ramdisk, allowing for a +clean unmount and export of the ZFS root. The theory of operation is +described in detail in the [Dracut manual](https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html#_dracut_on_shutdown). + +This script will try to export all remaining zpools after Dracut has +pivoted to the initramfs. If an initial regular export is not successful, +Dracut will call this script once more with the `final` option, +in which case a forceful export is attempted. + +Other Dracut modules include similar shutdown scripts and Dracut +invokes these scripts round-robin until they succeed. In particular, +the `90dm` module installs a script which tries to close and remove +all device mapper targets. Thus, if there are ZVOLs containing +dm-crypt volumes or if the zpool itself is backed by a dm-crypt +volume, the shutdown scripts will try to untangle this. --- linux-4.4.0.orig/zfs/contrib/initramfs/Makefile.am +++ linux-4.4.0/zfs/contrib/initramfs/Makefile.am @@ -0,0 +1,21 @@ +initrddir = $(datarootdir)/initramfs-tools + +initrd_SCRIPTS = conf-hooks.d/zfs hooks/zfs scripts/zfs + +EXTRA_DIST = \ + $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \ + $(top_srcdir)/contrib/initramfs/hooks/zfs \ + $(top_srcdir)/contrib/initramfs/scripts/zfs \ + $(top_srcdir)/contrib/initramfs/README.initramfs.markdown + +install-initrdSCRIPTS: $(EXTRA_DIST) + for d in conf-hooks.d hooks scripts; do \ + $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ + cp $(top_srcdir)/contrib/initramfs/$$d/zfs \ + $(DESTDIR)$(initrddir)/$$d/; \ + done + if [ -f etc/init.d/zfs ]; then \ + $(MKDIR_P) $(DESTDIR)$(DEFAULT_INITCONF_DIR); \ + cp $(top_srcdir)/etc/init.d/zfs \ + $(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \ + fi --- linux-4.4.0.orig/zfs/contrib/initramfs/Makefile.in +++ linux-4.4.0/zfs/contrib/initramfs/Makefile.in @@ -0,0 +1,659 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contrib/initramfs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(initrddir)" +SCRIPTS = $(initrd_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +initrddir = $(datarootdir)/initramfs-tools +initrd_SCRIPTS = conf-hooks.d/zfs hooks/zfs scripts/zfs +EXTRA_DIST = \ + $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \ + $(top_srcdir)/contrib/initramfs/hooks/zfs \ + $(top_srcdir)/contrib/initramfs/scripts/zfs \ + $(top_srcdir)/contrib/initramfs/README.initramfs.markdown + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/initramfs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/initramfs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +uninstall-initrdSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(initrd_SCRIPTS)'; test -n "$(initrddir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(initrddir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(initrddir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-initrdSCRIPTS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-initrdSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-initrdSCRIPTS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-initrdSCRIPTS + +.PRECIOUS: Makefile + + +install-initrdSCRIPTS: $(EXTRA_DIST) + for d in conf-hooks.d hooks scripts; do \ + $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ + cp $(top_srcdir)/contrib/initramfs/$$d/zfs \ + $(DESTDIR)$(initrddir)/$$d/; \ + done + if [ -f etc/init.d/zfs ]; then \ + $(MKDIR_P) $(DESTDIR)$(DEFAULT_INITCONF_DIR); \ + cp $(top_srcdir)/etc/init.d/zfs \ + $(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/contrib/initramfs/README.initramfs.markdown +++ linux-4.4.0/zfs/contrib/initramfs/README.initramfs.markdown @@ -0,0 +1,94 @@ +DESCRIPTION + These scripts is intended to be used with initramfs-tools, which is a similar + software product to "dracut" (which is more used in RedHat based distributions, + and is mainly used by Debian GNU/Linux and derivates to create a initramfs so + that the system can be booted of a ZFS filesystem. If you have no need or + interest for this, then it can safely be ignored. + + These script were written with the primary intention of being portable and + usable on as many systems as possible. + + This is, in practice, usually not possible. But the intention is there. + And it is a good one. + + They have been tested successfully on: + + * Debian GNU/Linux Wheezy + * Debian GNU/Linux Jessie + + It uses some functionality common with the SYSV init scripts, primarily + the "/etc/zfs/zfs-functions" script. + +FUNCTIONALITY + * Supports booting of a ZFS snapshot. + Do this by cloning the snapshot into a dataset. If this, the resulting + dataset, already exists, destroy it. Then mount it as the root filesystem. + * If snapshot does not exist, use base dataset (the part before '@') + as boot filesystem instead. + * Clone with 'mountpoint=none' and 'canmount=noauto' - we mount manually + and explicitly. + * Allow rollback of snapshots instead of clone it and boot from the clone. + * If no snapshot is specified on the 'root=' kernel command line, but + there is an '@', then get a list of snapshots below that filesystem + and ask the user which to use. + + * Support all currently used kernel command line arguments + * Core options: + All the different distributions have their own standard on what to specify + on the kernel command line to boot of a ZFS filesystem. + + Supports the following kernel command line argument combinations + (in this order - first match win): + * rpool= (tries to finds bootfs automatically) + * bootfs=/ (uses this for rpool - first part) + * rpool= bootfs=/ + * -B zfs-bootfs=/ (uses this for rpool - first part) + * rpool=rpool (default if none of the above is used) + * root=/ (uses this for rpool - first part) + * root=ZFS=/ (uses this for rpool - first part, without 'ZFS=') + * root=zfs:AUTO (tries to detect both pool and rootfs + * root=zfs:/ (uses this for rpool - first part, without 'zfs:') + + Option could also be + * Extra (control) options: + * zfsdebug=(on,yes,1) Show extra debugging information + * zfsforce=(on,yes,1) Force import the pool + * rollback=(on,yes,1) Rollback (instead of clone) the snapshot + + * 'Smarter' way to import pools. Don't just try cache file or /dev. + * Try to use /dev/disk/by-vdev (if /etc/zfs/vdev_id.conf exists), + * Try /dev/mapper (to be able to use LUKS backed pools as well as + multi-path devices). + * /dev/disk/by-id and any other /dev/disk/by-* directory that may exist. + * Use /dev as a last ditch attempt. + * Fallback to using the cache file if that exist if nothing else worked. + * Only try to import pool if it haven't already been imported + * This will negate the need to force import a pool that have not been + exported cleanly. + * Support exclusion of pools to import by setting ZFS_POOL_EXCEPTIONS + in /etc/default/zfs. + + Controlling in which order devices is searched for is controlled by + ZPOOL_IMPORT_PATH variable set in /etc/defaults/zfs. + + * Support additional configuration variable ZFS_INITRD_ADDITIONAL_DATASETS + to mount additional filesystems not located under your root dataset. + + For example, if the root fs is specified as 'rpool/ROOT/rootfs', it will + automatically and without specific configuration mount any filesystems + below this on the mount point specified in the 'mountpoint' property. + Such as 'rpool/root/rootfs/var', 'rpool/root/rootfs/usr' etc) + + However, if one prefer to have separate filesystems, not located below + the root fs (such as 'rpool/var', 'rpool/ROOT/opt' etc), special + configuration needs to be done. This is what the variable, set in + /etc/defaults/zfs file, needs to be configured. The 'mountpoint' + property needs to be correct for this to work though. + + * Allows mounting a rootfs with mountpoint=legacy set. + + * Include /etc/modprobe.d/{zfs,spl}.conf in the initrd if it/they exist. + + * Include the udev rule to use by-vdev for pool imports. + + * Include the /etc/default/zfs file to the initrd. --- linux-4.4.0.orig/zfs/contrib/initramfs/conf-hooks.d/zfs +++ linux-4.4.0/zfs/contrib/initramfs/conf-hooks.d/zfs @@ -0,0 +1,2 @@ +# Force the inclusion of Busybox in the initramfs. +BUSYBOX=y --- linux-4.4.0.orig/zfs/contrib/initramfs/hooks/zfs +++ linux-4.4.0/zfs/contrib/initramfs/hooks/zfs @@ -0,0 +1,103 @@ +#!/bin/sh +# +# Add ZoL filesystem capabilities to an initrd, usually for a native ZFS root. +# + +# This hook installs udev rules for ZoL. +PREREQ="zdev" + +# These prerequisites are provided by the zfsutils package. The zdb utility is +# not strictly required, but it can be useful at the initramfs recovery prompt. +COPY_EXEC_LIST="/sbin/zdb /sbin/zpool /sbin/zfs /sbin/mount.zfs" +COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/dirname /lib/udev/vdev_id" +COPY_FILE_LIST="/etc/hostid /etc/zfs/zpool.cache /etc/default/zfs" +COPY_FILE_LIST="$COPY_FILE_LIST /etc/zfs/zfs-functions /etc/zfs/vdev_id.conf" +COPY_FILE_LIST="$COPY_FILE_LIST /lib/udev/rules.d/69-vdev.rules" + +# These prerequisites are provided by the base system. +COPY_EXEC_LIST="$COPY_EXEC_LIST /bin/hostname /sbin/blkid" + +# Explicitly specify all kernel modules because automatic dependency resolution +# is unreliable on many systems. +BASE_MODULES="zlib_deflate spl zavl zcommon znvpair zunicode zfs" +CRPT_MODULES="sun-ccm sun-gcm sun-ctr" +MANUAL_ADD_MODULES_LIST="$BASE_MODULES" + +# Generic result code. +RC=0 + +case $1 in +prereqs) + echo "$PREREQ" + exit 0 + ;; +esac + +for ii in $COPY_EXEC_LIST +do + if [ ! -x "$ii" ] + then + echo "Error: $ii is not executable." + RC=2 + fi +done + +if [ "$RC" -ne 0 ] +then + exit "$RC" +fi + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p "$DESTDIR/etc/" + +# ZDB uses pthreads for some functions, but the library dependency is not +# automatically detected. The `find` utility and extended `cp` options are +# used here because libgcc_s.so could be in a subdirectory of /lib for +# multi-arch installations. +cp --target-directory="$DESTDIR" --parents $(find /lib -type f -name libgcc_s.so.1) + +for ii in $COPY_EXEC_LIST +do + copy_exec "$ii" +done + +for ii in $COPY_FILE_LIST +do + dir=$(dirname "$ii") + [ -d "$dir" ] && mkdir -p "$DESTDIR/$dir" + [ -f "$ii" ] && cp -p "$ii" "$DESTDIR/$ii" +done + +for ii in $MANUAL_ADD_MODULES_LIST +do + manual_add_modules "$ii" +done + +if [ -f "/etc/hostname" ] +then + cp -p "/etc/hostname" "$DESTDIR/etc/" +else + hostname >"$DESTDIR/etc/hostname" +fi + +for ii in zfs zfs.conf spl spl.conf +do + if [ -f "/etc/modprobe.d/$ii" ]; then + if [ ! -d "$DESTDIR/etc/modprobe.d" ]; then + mkdir -p $DESTDIR/etc/modprobe.d + fi + cp -p "/etc/modprobe.d/$ii" $DESTDIR/etc/modprobe.d/ + fi +done + +# With pull request #1476 (not yet merged) comes a verbose warning +# if /usr/bin/net doesn't exist or isn't executable. Just create +# a dummy... +[ ! -d "$DESTDIR/usr/bin" ] && mkdir -p "$DESTDIR/usr/bin" +if [ ! -x "$DESTDIR/usr/bin/net" ]; then + touch "$DESTDIR/usr/bin/net" + chmod +x "$DESTDIR/usr/bin/net" +fi + +exit 0 --- linux-4.4.0.orig/zfs/contrib/initramfs/scripts/zfs +++ linux-4.4.0/zfs/contrib/initramfs/scripts/zfs @@ -0,0 +1,971 @@ +# ZFS boot stub for initramfs-tools. +# +# In the initramfs environment, the /init script sources this stub to +# override the default functions in the /scripts/local script. +# +# Enable this by passing boot=zfs on the kernel command line. +# + +# Source the common init script +. /etc/zfs/zfs-functions + +# Paths to what we need - in the initrd, these paths are hardcoded, +# so override the defines in zfs-functions. +ZFS="/sbin/zfs" +ZPOOL="/sbin/zpool" +ZPOOL_CACHE="/etc/zfs/zpool.cache" +export ZFS ZPOOL ZPOOL_CACHE + +# This runs any scripts that should run before we start importing +# pools and mounting any filesystems. +pre_mountroot() +{ + if type run_scripts > /dev/null 2>&1 && \ + [ -f "/scripts/local-top" -o -d "/scripts/local-top" ] + then + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Running /scripts/local-top" + run_scripts /scripts/local-top + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + if type run_scripts > /dev/null 2>&1 && \ + [ -f "/scripts/local-premount" -o -d "/scripts/local-premount" ] + then + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Running /scripts/local-premount" + run_scripts /scripts/local-premount + [ "$quiet" != "y" ] && zfs_log_end_msg + fi +} + +# If plymouth is availible, hide the splash image. +disable_plymouth() +{ + if [ -x /bin/plymouth ] && /bin/plymouth --ping + then + /bin/plymouth hide-splash >/dev/null 2>&1 + fi +} + +# Get a ZFS filesystem property value. +get_fs_value() +{ + local fs="$1" + local value=$2 + + "${ZFS}" get -H -ovalue $value "$fs" 2> /dev/null +} + +# Find the 'bootfs' property on pool $1. +# If the property does not contain '/', then ignore this +# pool by exporting it again. +find_rootfs() +{ + local pool="$1" + + # If 'POOL_IMPORTED' isn't set, no pool imported and therefor + # we won't be able to find a root fs. + [ -z "${POOL_IMPORTED}" ] && return 1 + + # If it's already specified, just keep it mounted and exit + # User (kernel command line) must be correct. + [ -n "${ZFS_BOOTFS}" ] && return 0 + + # Not set, try to find it in the 'bootfs' property of the pool. + # NOTE: zpool does not support 'get -H -ovalue bootfs'... + ZFS_BOOTFS=$("${ZPOOL}" list -H -obootfs "$pool") + + # Make sure it's not '-' and that it starts with /. + if [ "${ZFS_BOOTFS}" != "-" ] && \ + $(get_fs_value "${ZFS_BOOTFS}" mountpoint | grep -q '^/$') + then + # Keep it mounted + POOL_IMPORTED=1 + return 0 + fi + + # Not boot fs here, export it and later try again.. + "${ZPOOL}" export "$pool" + POOL_IMPORTED="" + + return 1 +} + +# Support function to get a list of all pools, separated with ';' +find_pools() +{ + local CMD="$*" + local pools pool + + pools=$($CMD 2> /dev/null | \ + grep -E "pool:|^[a-zA-Z0-9]" | \ + sed 's@.*: @@' | \ + while read pool; do \ + echo -n "$pool;" + done) + + echo "${pools%%;}" # Return without the last ';'. +} + +# Get a list of all availible pools +get_pools() +{ + local available_pools npools + + if [ -n "${ZFS_POOL_IMPORT}" ]; then + echo "$ZFS_POOL_IMPORT" + return 0 + fi + + # Get the base list of availible pools. + available_pools=$(find_pools "$ZPOOL" import) + + # Just in case - seen it happen (that a pool isn't visable/found + # with a simple "zpool import" but only when using the "-d" + # option or setting ZPOOL_IMPORT_PATH). + if [ -d "/dev/disk/by-id" ] + then + npools=$(find_pools "$ZPOOL" import -d /dev/disk/by-id) + if [ -n "$npools" ] + then + # Because we have found extra pool(s) here, which wasn't + # found 'normaly', we need to force USE_DISK_BY_ID to + # make sure we're able to actually import it/them later. + USE_DISK_BY_ID='yes' + + if [ -n "$available_pools" ] + then + # Filter out duplicates (pools found with the simple + # "zpool import" but which is also found with the + # "zpool import -d ..."). + npools=$(echo "$npools" | sed "s,$available_pools,,") + + # Add the list to the existing list of + # available pools + available_pools="$available_pools;$npools" + else + available_pools="$npools" + fi + fi + fi + + # Filter out any exceptions... + if [ -n "$ZFS_POOL_EXCEPTIONS" ] + then + local found="" + local apools="" + local pool exception + OLD_IFS="$IFS" ; IFS=";" + + for pool in $available_pools + do + for exception in $ZFS_POOL_EXCEPTIONS + do + [ "$pool" = "$exception" ] && continue 2 + found="$pool" + done + + if [ -n "$found" ] + then + if [ -n "$apools" ] + then + apools="$apools;$pool" + else + apools="$pool" + fi + fi + done + + IFS="$OLD_IFS" + available_pools="$apools" + fi + + # Return list of availible pools. + echo "$available_pools" +} + +# Import given pool $1 +import_pool() +{ + local pool="$1" + local dirs dir + + # Verify that the pool isn't already imported + # Make as sure as we can to not require '-f' to import. + "${ZPOOL}" status "$pool" > /dev/null 2>&1 && return 0 + + # For backwards compability, make sure that ZPOOL_IMPORT_PATH is set + # to something we can use later with the real import(s). We want to + # make sure we find all by* dirs, BUT by-vdev should be first (if it + # exists). + if [ -n "$USE_DISK_BY_ID" -a -z "$ZPOOL_IMPORT_PATH" ] + then + dirs="$(for dir in $(echo /dev/disk/by-*) + do + # Ignore by-vdev here - we want it first! + echo "$dir" | grep -q /by-vdev && continue + [ ! -d "$dir" ] && continue + + echo -n "$dir:" + done | sed 's,:$,,g')" + + if [ -d "/dev/disk/by-vdev" ] + then + # Add by-vdev at the beginning. + ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:" + fi + + # ... and /dev at the very end, just for good measure. + ZPOOL_IMPORT_PATH="$ZPOOL_IMPORT_PATH$dirs:/dev" + fi + + # Needs to be exported for "zpool" to catch it. + [ -n "$ZPOOL_IMPORT_PATH" ] && export ZPOOL_IMPORT_PATH + + + [ "$quiet" != "y" ] && zfs_log_begin_msg \ + "Importing pool '${pool}' using defaults" + + ZFS_CMD="${ZPOOL} import -N ${ZPOOL_FORCE} ${ZPOOL_IMPORT_OPTS}" + ZFS_STDERR="$($ZFS_CMD "$pool" 2>&1)" + ZFS_ERROR="$?" + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + if [ -f "${ZPOOL_CACHE}" ] + then + [ "$quiet" != "y" ] && zfs_log_begin_msg \ + "Importing pool '${pool}' using cachefile." + + ZFS_CMD="${ZPOOL} import -c ${ZPOOL_CACHE} -N ${ZPOOL_FORCE} ${ZPOOL_IMPORT_OPTS}" + ZFS_STDERR="$($ZFS_CMD "$pool" 2>&1)" + ZFS_ERROR="$?" + fi + + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: ${ZFS_CMD} '$pool'" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to import pool '$pool'." + echo "Manually import the pool and exit." + /bin/sh + fi + fi + + [ "$quiet" != "y" ] && zfs_log_end_msg + + POOL_IMPORTED=1 + return 0 +} + +# Load ZFS modules +# Loading a module in a initrd require a slightly different approach, +# with more logging etc. +load_module_initrd() +{ + if [ "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" > 0 ] + then + if [ "$quiet" != "y" ]; then + zfs_log_begin_msg "Sleeping for" \ + "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP seconds..." + fi + sleep "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + # Wait for all of the /dev/{hd,sd}[a-z] device nodes to appear. + if type wait_for_udev > /dev/null 2>&1 ; then + wait_for_udev 10 + elif type wait_for_dev > /dev/null 2>&1 ; then + wait_for_dev + fi + + # zpool import refuse to import without a valid mtab + [ ! -f /proc/mounts ] && mount proc /proc + [ ! -f /etc/mtab ] && cat /proc/mounts > /etc/mtab + + # Load the module + load_module "zfs" || return 1 + + if [ "$ZFS_INITRD_POST_MODPROBE_SLEEP" > 0 ] + then + if [ "$quiet" != "y" ]; then + zfs_log_begin_msg "Sleeping for" \ + "$ZFS_INITRD_POST_MODPROBE_SLEEP seconds..." + fi + sleep "$ZFS_INITRD_POST_MODPROBE_SLEEP" + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Mount a given filesystem +mount_fs() +{ + local fs="$1" + local mountpoint + + # Check that the filesystem exists + "${ZFS}" list -oname -tfilesystem -H "${fs}" > /dev/null 2>&1 + [ "$?" -ne 0 ] && return 1 + + # Need the _original_ datasets mountpoint! + mountpoint=$(get_fs_value "$fs" mountpoint) + if [ "$mountpoint" = "legacy" -o "$mountpoint" = "none" ]; then + # Can't use the mountpoint property. Might be one of our + # clones. Check the 'org.zol:mountpoint' property set in + # clone_snap() if that's usable. + mountpoint=$(get_fs_value "$fs" org.zol:mountpoint) + if [ "$mountpoint" = "legacy" -o \ + "$mountpoint" = "none" -o \ + "$mountpoint" = "-" ] + then + if [ "$fs" != "${ZFS_BOOTFS}" ]; then + # We don't have a proper mountpoint, this + # isn't the root fs. So extract the root fs + # value from the filesystem, and we should + # (hopefully!) have a mountpoint we can use. + mountpoint="${fs##$ZFS_BOOTFS}" + else + # Last hail-mary: Hope 'rootmnt' is set! + mountpoint="" + fi + fi + + if [ "$mountpoint" = "legacy" ]; then + ZFS_CMD="mount -t zfs" + else + # If it's not a legacy filesystem, it can only be a + # native one... + ZFS_CMD="mount -o zfsutil -t zfs" + fi + else + ZFS_CMD="mount -o zfsutil -t zfs" + fi + + # Possibly decrypt a filesystem using native encryption. + decrypt_fs "$fs" + + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Mounting '${fs}' on '${rootmnt}/${mountpoint}'" + [ -n "${ZFS_DEBUG}" ] && \ + zfs_log_begin_msg "CMD: '$ZFS_CMD ${fs} ${rootmnt}/${mountpoint}'" + + ZFS_STDERR=$(${ZFS_CMD} "${fs}" "${rootmnt}/${mountpoint}" 2>&1) + ZFS_ERROR=$? + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: ${ZFS_CMD} ${fs} ${rootmnt}/${mountpoint}" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to mount ${fs} on ${rootmnt}/${mountpoint}." + echo "Manually mount the filesystem and exit." + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Unlock a ZFS native crypted filesystem. +decrypt_fs() +{ + local fs="$1" + + # If the 'zfs key' command isn't availible, exit right here. + "${ZFS}" 2>&1 | grep -q 'key -l ' || return 0 + + # Check if filesystem is encrypted. If not, exit right here. + [ "$(get_fs_value "$fs" encryption)" != "off" ] || return 0 + + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Loading crypto wrapper key for $fs" + + # Just make sure that ALL crypto modules module is loaded. + # Simplest just to load all... + for mod in sun-ccm sun-gcm sun-ctr + do + [ "$quiet" != "y" ] && zfs_log_progress_msg "${mod} " + + ZFS_CMD="load_module $mod" + ZFS_STDERR="$(${ZFS_CMD} 2>&1)" + ZFS_ERROR="$?" + + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to load $mod module." + echo "Please verify that it is availible on the initrd image" + echo "(without it it won't be possible to unlock the filesystem)" + echo "and rerun: $ZFS_CMD" + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + done + + # If the key isn't availible, then this will fail! + ZFS_CMD="${ZFS} key -l -r $fs" + ZFS_STDERR="$(${ZFS_CMD} 2>&1)" + ZFS_ERROR="$?" + + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to load zfs encryption wrapper key (s)." + echo "Please verify dataset property 'keysource' for datasets" + echo "and rerun: $ZFS_CMD" + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Destroy a given filesystem. +destroy_fs() +{ + local fs="$1" + + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Destroying '$fs'" + + ZFS_CMD="${ZFS} destroy $fs" + ZFS_STDERR="$(${ZFS_CMD} 2>&1)" + ZFS_ERROR="$?" + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to destroy '$fs'. Please make sure that '$fs' is not availible." + echo "Hint: Try: zfs destroy -Rfn $fs" + echo "If this dryrun looks good, then remove the 'n' from '-Rfn' and try again." + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Clone snapshot $1 to destination filesystem $2 +# Set 'canmount=noauto' and 'mountpoint=none' so that we get to keep +# manual controll over it's mounting (i.e., make sure it's not automatically +# mounted with a 'zfs mount -a' in the init/systemd scripts). +clone_snap() +{ + local snap="$1" + local destfs="$2" + local mountpoint="$3" + + [ "$quiet" != "y" ] && zfs_log_begin_msg "Cloning '$snap' to '$destfs'" + + # Clone the snapshot into a dataset we can boot from + # + We don't want this filesystem to be automatically mounted, we + # want controll over this here and nowhere else. + # + We don't need any mountpoint set for the same reason. + # We use the 'org.zol:mountpoint' property to remember the mountpoint. + ZFS_CMD="${ZFS} clone -o canmount=noauto -o mountpoint=none" + ZFS_CMD="${ZFS_CMD} -o org.zol:mountpoint=${mountpoint}" + ZFS_CMD="${ZFS_CMD} $snap $destfs" + ZFS_STDERR="$(${ZFS_CMD} 2>&1)" + ZFS_ERROR="$?" + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to clone snapshot." + echo "Make sure that the any problems are corrected and then make sure" + echo "that the dataset '$destfs' exists and is bootable." + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Rollback a given snapshot. +rollback_snap() +{ + local snap="$1" + + [ "$quiet" != "y" ] && zfs_log_begin_msg "Rollback $snap" + + ZFS_CMD="${ZFS} rollback -Rf $snap" + ZFS_STDERR="$(${ZFS_CMD} 2>&1)" + ZFS_ERROR="$?" + if [ "${ZFS_ERROR}" != 0 ] + then + [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" + + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "Failed to rollback snapshot." + /bin/sh + else + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + return 0 +} + +# Get a list of snapshots, give them as a numbered list +# to the user to choose from. +ask_user_snap() +{ + local fs="$1" + local i=1 + local SNAP snapnr snap debug + + # We need to temporarily disable debugging. Set 'debug' so we + # remember to enabled it again. + if [ -n "${ZFS_DEBUG}" ]; then + unset ZFS_DEBUG + set +x + debug=1 + fi + + # Because we need the resulting snapshot, which is sent on + # stdout to the caller, we use stderr for our questions. + echo "What snapshot do you want to boot from?" > /dev/stderr + while read snap; do + echo " $i: ${snap}" > /dev/stderr + eval `echo SNAP_$i=$snap` + i=$((i + 1)) + done < /dev/stderr + read snapnr + + # Reenable debugging. + if [ -n "${debug}" ]; then + ZFS_DEBUG=1 + set -x + fi + + echo "$(eval echo "$"SNAP_$snapnr)" +} + +setup_snapshot_booting() +{ + local snap="$1" + local s destfs subfs mountpoint retval=0 filesystems fs + + # Make sure that the snapshot specified actually exist. + if [ ! $(get_fs_value "${snap}" type) ] + then + # Snapshot does not exist (...@ ?) + # ask the user for a snapshot to use. + snap="$(ask_user_snap "${snap%%@*}")" + fi + + # Separate the full snapshot ('$snap') into it's filesystem and + # snapshot names. Would have been nice with a split() function.. + rootfs="${snap%%@*}" + snapname="${snap##*@}" + ZFS_BOOTFS="${rootfs}_${snapname}" + + if ! grep -qiE '(^|[^\\](\\\\)* )(rollback)=(on|yes|1)( |$)' /proc/cmdline + then + # If the destination dataset for the clone + # already exists, destroy it. Recursivly + if [ $(get_fs_value "${rootfs}_${snapname}" type) ]; then + filesystems=$("${ZFS}" list -oname -tfilesystem -H \ + -r -Sname "${ZFS_BOOTFS}") + for fs in $filesystems; do + destroy_fs "${fs}" + done + fi + fi + + # Get all snapshots, recursivly (might need to clone /usr, /var etc + # as well). + for s in $("${ZFS}" list -H -oname -tsnapshot -r "${rootfs}" | \ + grep "${snapname}") + do + if grep -qiE '(^|[^\\](\\\\)* )(rollback)=(on|yes|1)( |$)' /proc/cmdline + then + # Rollback snapshot + rollback_snap "$s" || retval=$((retval + 1)) + else + # Setup a destination filesystem name. + # Ex: Called with 'rpool/ROOT/debian@snap2' + # rpool/ROOT/debian@snap2 => rpool/ROOT/debian_snap2 + # rpool/ROOT/debian/boot@snap2 => rpool/ROOT/debian_snap2/boot + # rpool/ROOT/debian/usr@snap2 => rpool/ROOT/debian_snap2/usr + # rpool/ROOT/debian/var@snap2 => rpool/ROOT/debian_snap2/var + subfs="${s##$rootfs}" + subfs="${subfs%%@$snapname}" + + destfs="${rootfs}_${snapname}" # base fs. + [ -n "$subfs" ] && destfs="${destfs}$subfs" # + sub fs. + + # Get the mountpoint of the filesystem, to be used + # with clone_snap(). If legacy or none, then use + # the sub fs value. + mountpoint=$(get_fs_value "${s%%@*}" mountpoint) + if [ "$mountpoint" = "legacy" -o \ + "$mountpoint" = "none" ] + then + if [ -n "${subfs}" ]; then + mountpoint="${subfs}" + else + mountpoint="/" + fi + fi + + # Clone the snapshot into its own + # filesystem + clone_snap "$s" "${destfs}" "${mountpoint}" || \ + retval=$((retval + 1)) + fi + done + + # If we haven't return yet, we have a problem... + return "${retval}" +} + +# ================================================================ + +# This is the main function. +mountroot() +{ + local snaporig snapsub destfs pool POOLS + + # ---------------------------------------------------------------- + # I N I T I A L S E T U P + + # ------------ + # Run the pre-mount scripts from /scripts/local-top. + pre_mountroot + + # ------------ + # Source the default setup variables. + [ -r '/etc/default/zfs' ] && . /etc/default/zfs + + # ------------ + # Support debug option + if grep -qiE '(^|[^\\](\\\\)* )(zfs_debug|zfs\.debug|zfsdebug)=(on|yes|1)( |$)' /proc/cmdline + then + ZFS_DEBUG=1 + mkdir /var/log + #exec 2> /var/log/boot.debug + set -x + fi + + # ------------ + # Load ZFS module etc. + if ! load_module_initrd; then + disable_plymouth + echo "" + echo "Failed to load ZFS modules." + echo "Manually load the modules and exit." + /bin/sh + fi + + # ------------ + # Look for the cache file (if any). + [ ! -f ${ZPOOL_CACHE} ] && unset ZPOOL_CACHE + + # ------------ + # Compatibility: 'ROOT' is for Debian GNU/Linux (etc), + # 'root' is for Redhat/Fedora (etc), + # 'REAL_ROOT' is for Gentoo + if [ -z "$ROOT" ] + then + [ -n "$root" ] && ROOT=${root} + + [ -n "$REAL_ROOT" ] && ROOT=${REAL_ROOT} + fi + + # ------------ + # Where to mount the root fs in the initrd - set outside this script + # Compatibility: 'rootmnt' is for Debian GNU/Linux (etc), + # 'NEWROOT' is for RedHat/Fedora (etc), + # 'NEW_ROOT' is for Gentoo + if [ -z "$rootmnt" ] + then + [ -n "$NEWROOT" ] && rootmnt=${NEWROOT} + + [ -n "$NEW_ROOT" ] && rootmnt=${NEW_ROOT} + fi + + # ------------ + # No longer set in the defaults file, but it could have been set in + # get_pools() in some circumstances. If it's something, but not 'yes', + # it's no good to us. + [ -n "$USE_DISK_BY_ID" -a "$USE_DISK_BY_ID" != 'yes' ] && \ + unset USE_DISK_BY_ID + + # ---------------------------------------------------------------- + # P A R S E C O M M A N D L I N E O P T I O N S + + # This part is the really ugly part - there's so many options and permutations + # 'out there', and if we should make this the 'primary' source for ZFS initrd + # scripting, we need/should support them all. + # + # Supports the following kernel command line argument combinations + # (in this order - first match win): + # + # rpool= (tries to finds bootfs automatically) + # bootfs=/ (uses this for rpool - first part) + # rpool= bootfs=/ + # -B zfs-bootfs=/ (uses this for rpool - first part) + # rpool=rpool (default if none of the above is used) + # root=/ (uses this for rpool - first part) + # root=ZFS=/ (uses this for rpool - first part, without 'ZFS=') + # root=zfs:AUTO (tries to detect both pool and rootfs + # root=zfs:/ (uses this for rpool - first part, without 'zfs:') + # + # Option could also be + + # ------------ + # Support force option + # In addition, setting one of zfs_force, zfs.force or zfsforce to + # 'yes', 'on' or '1' will make sure we force import the pool. + # This should (almost) never be needed, but it's here for + # completeness. + ZPOOL_FORCE="" + if grep -qiE '(^|[^\\](\\\\)* )(zfs_force|zfs\.force|zfsforce)=(on|yes|1)( |$)' /proc/cmdline + then + ZPOOL_FORCE="-f" + fi + + # ------------ + # Look for 'rpool' and 'bootfs' parameter + [ -n "$rpool" ] && ZFS_RPOOL="${rpool#rpool=}" + [ -n "$bootfs" ] && ZFS_BOOTFS="${bootfs#bootfs=}" + + # ------------ + # If we have 'ROOT' (see above), but not 'ZFS_BOOTFS', then use + # 'ROOT' + [ -n "$ROOT" -a -z "${ZFS_BOOTFS}" ] && ZFS_BOOTFS="$ROOT" + + # ------------ + # Check for the `-B zfs-bootfs=%s/%u,...` kind of parameter. + # NOTE: Only use the pool name and dataset. The rest is not + # supported by ZoL (whatever it's for). + if [ -z "$ZFS_RPOOL" ] + then + # The ${zfs-bootfs} variable is set at the kernel commmand + # line, usually by GRUB, but it cannot be referenced here + # directly because bourne variable names cannot contain a + # hyphen. + # + # Reassign the variable by dumping the environment and + # stripping the zfs-bootfs= prefix. Let the shell handle + # quoting through the eval command. + eval ZFS_RPOOL=$(set | sed -n -e 's,^zfs-bootfs=,,p') + fi + + # ------------ + # No root fs or pool specified - do auto detect. + if [ -z "$ZFS_RPOOL" -a -z "${ZFS_BOOTFS}" ] + then + # Do auto detect. Do this by 'cheating' - set 'root=zfs:AUTO' + # which will be caught later + ROOT=zfs:AUTO + fi + + # ---------------------------------------------------------------- + # F I N D A N D I M P O R T C O R R E C T P O O L + + # ------------ + if [ "$ROOT" = "zfs:AUTO" ] + then + # Try to detect both pool and root fs. + + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Attempting to import additional pools." + + # Get a list of pools available for import + if [ -n "$ZFS_RPOOL" ] + then + # We've specified a pool - check only that + POOLS=$ZFS_RPOOL + else + POOLS=$(get_pools) + fi + + OLD_IFS="$IFS" ; IFS=";" + for pool in $POOLS + do + [ -z "$pool" ] && continue + + import_pool "$pool" + find_rootfs "$pool" + done + IFS="$OLD_IFS" + + [ "$quiet" != "y" ] && zfs_log_end_msg $ZFS_ERROR + else + # No auto - use value from the command line option. + + # Strip 'zfs:' and 'ZFS='. + ZFS_BOOTFS="${ROOT#*[:=]}" + + # Stip everything after the first slash. + ZFS_RPOOL="${ZFS_BOOTFS%%/*}" + fi + + # Import the pool (if not already done so in the AUTO check above). + if [ -n "$ZFS_RPOOL" -a -z "${POOL_IMPORTED}" ] + then + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Importing ZFS root pool '$ZFS_RPOOL'" + + import_pool "${ZFS_RPOOL}" + find_rootfs "${ZFS_RPOOL}" + + [ "$quiet" != "y" ] && zfs_log_end_msg + fi + + if [ -z "${POOL_IMPORTED}" ] + then + # No pool imported, this is serious! + disable_plymouth + echo "" + echo "Command: $ZFS_CMD" + echo "Message: $ZFS_STDERR" + echo "Error: $ZFS_ERROR" + echo "" + echo "No pool imported. Manually import the root pool" + echo "at the command prompt and then exit." + echo "Hint: Try: zpool import -R ${rootmnt} -N ${ZFS_RPOOL}" + /bin/sh + fi + + # ---------------------------------------------------------------- + # P R E P A R E R O O T F I L E S Y S T E M + + if [ -n "${ZFS_BOOTFS}" ] + then + # Booting from a snapshot? + # Will overwrite the ZFS_BOOTFS variable like so: + # rpool/ROOT/debian@snap2 => rpool/ROOT/debian_snap2 + echo "${ZFS_BOOTFS}" | grep -q '@' && \ + setup_snapshot_booting "${ZFS_BOOTFS}" + fi + + if [ -z "${ZFS_BOOTFS}" ] + then + # Still nothing! Let the user sort this out. + disable_plymouth + echo "" + echo "Error: Unknown root filesystem - no 'bootfs' pool property and" + echo " not specified on the kernel command line." + echo "" + echo "Manually mount the root filesystem on $rootmnt and then exit." + echo "Hint: Try: mount -o zfsutil -t zfs ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt" + /bin/sh + fi + + # ---------------------------------------------------------------- + # M O U N T F I L E S Y S T E M S + + # * Ideally, the root filesystem would be mounted like this: + # + # zpool import -R "$rootmnt" -N "$ZFS_RPOOL" + # zfs mount -o mountpoint=/ "${ZFS_BOOTFS}" + # + # but the MOUNTPOINT prefix is preserved on descendent filesystem + # after the pivot into the regular root, which later breaks things + # like `zfs mount -a` and the /etc/mtab refresh. + # + # * Mount additional filesystems required + # Such as /usr, /var, /usr/local etc. + # NOTE: Mounted in the order specified in the + # ZFS_INITRD_ADDITIONAL_DATASETS variable so take care! + + # Go through the complete list (recursivly) of all filesystems below + # the real root dataset + filesystems=$("${ZFS}" list -oname -tfilesystem -H -r "${ZFS_BOOTFS}") + for fs in $filesystems $ZFS_INITRD_ADDITIONAL_DATASETS + do + mount_fs "$fs" + done + + # ------------ + # Debugging information + if [ -n "${ZFS_DEBUG}" ] + then + #exec 2>&1- + + echo "DEBUG: imported pools:" + "${ZPOOL}" list -H + echo + + echo "DEBUG: mounted ZFS filesystems:" + mount | grep zfs + echo + + echo "=> waiting for ENTER before continuing because of 'zfsdebug=1'. " + echo -n " 'c' for shell, 'r' for reboot, 'ENTER' to continue. " + read b + + [ "$b" = "c" ] && /bin/sh + [ "$b" = "r" ] && reboot -f + + set +x + fi + + # ------------ + # Run local bottom script + if type run_scripts > /dev/null 2>&1 && \ + [ -f "/scripts/local-bottom" -o -d "/scripts/local-bottom" ] + then + [ "$quiet" != "y" ] && \ + zfs_log_begin_msg "Running /scripts/local-bottom" + run_scripts /scripts/local-bottom + [ "$quiet" != "y" ] && zfs_log_end_msg + fi +} --- linux-4.4.0.orig/zfs/copy-builtin +++ linux-4.4.0/zfs/copy-builtin @@ -0,0 +1,126 @@ +#!/bin/bash + +set -e + +usage() +{ + echo "usage: $0 " >&2 + exit 1 +} + +[ "$#" -eq 1 ] || usage +KERNEL_DIR="$(readlink --canonicalize-existing "$1")" + +MODULES=() +for MODULE_DIR in module/* +do + [ -d "$MODULE_DIR" ] || continue + MODULES+=("${MODULE_DIR##*/}") +done + +if ! [ -e 'zfs_config.h' ] +then + echo >&2 + echo " $0: you did not run configure, or you're not in the ZFS source directory." >&2 + echo " $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2 + echo >&2 + exit 1 +fi + +make clean || true + +rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs" +cp --recursive include "$KERNEL_DIR/include/zfs" +cp --recursive module "$KERNEL_DIR/fs/zfs" +cp zfs_config.h "$KERNEL_DIR/" + +adjust_obj_paths() +{ + local FILE="$1" + local LINE OBJPATH + + while IFS='' read -r LINE + do + OBJPATH="${LINE#\$(MODULE)-objs += }" + if [ "$OBJPATH" = "$LINE" ] + then + echo "$LINE" + else + echo "\$(MODULE)-objs += ${OBJPATH##*/}" + fi + done < "$FILE" > "$FILE.new" + mv "$FILE.new" "$FILE" +} + +for MODULE in "${MODULES[@]}" +do + adjust_obj_paths "$KERNEL_DIR/fs/zfs/$MODULE/Makefile" + sed -i.bak '/obj =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile" + sed -i.bak '/src =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile" +done + +cat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF" +config ZFS + tristate "ZFS filesystem support" + depends on SPL + depends on EFI_PARTITION + select ZLIB_INFLATE + select ZLIB_DEFLATE + help + This is the ZFS filesystem from the ZFS On Linux project. + + See http://zfsonlinux.org/ + + To compile this file system support as a module, choose M here. + + If unsure, say N. +EOF + +{ + cat <<-"EOF" + ZFS_MODULE_CFLAGS = -I$(srctree)/include/zfs -I$(srctree)/include/spl + ZFS_MODULE_CFLAGS += -include $(srctree)/spl_config.h -include $(srctree)/zfs_config.h + export ZFS_MODULE_CFLAGS + + obj-$(CONFIG_ZFS) := + EOF + + for MODULE in "${MODULES[@]}" + do + echo 'obj-$(CONFIG_ZFS) += ' "$MODULE/" + done +} > "$KERNEL_DIR/fs/zfs/Kbuild" + +add_after() +{ + local FILE="$1" + local MARKER="$2" + local NEW="$3" + local LINE + + while IFS='' read -r LINE + do + echo "$LINE" + + if [ -n "$MARKER" -a "$LINE" = "$MARKER" ] + then + echo "$NEW" + MARKER='' + if IFS='' read -r LINE + then + [ "$LINE" != "$NEW" ] && echo "$LINE" + fi + fi + done < "$FILE" > "$FILE.new" + + mv "$FILE.new" "$FILE" +} + +add_after "$KERNEL_DIR/fs/Kconfig" 'if BLOCK' 'source "fs/zfs/Kconfig"' +add_after "$KERNEL_DIR/fs/Makefile" 'endif' 'obj-$(CONFIG_ZFS) += zfs/' + +echo >&2 +echo " $0: done." >&2 +echo " $0: now you can build the kernel with ZFS support." >&2 +echo " $0: make sure you enable ZFS support (CONFIG_ZFS) before building." >&2 +echo >&2 --- linux-4.4.0.orig/zfs/cp +++ linux-4.4.0/zfs/cp @@ -0,0 +1,2 @@ +#!/bin/sh +cp "$@" --- linux-4.4.0.orig/zfs/dkms.conf +++ linux-4.4.0/zfs/dkms.conf @@ -0,0 +1,88 @@ +BUILD_DEPENDS[0]="spl" +AUTOINSTALL="yes" +PACKAGE_NAME="zfs" +PACKAGE_VERSION="0.6.5.4" +PRE_BUILD="configure + --prefix=/usr + --with-config=kernel + --with-linux=$( + case `lsb_release -is` in + (Debian) + if [[ -e ${kernel_source_dir/%build/source} ]] + then + echo ${kernel_source_dir/%build/source} + else + # A kpkg exception for Proxmox 2.0 + echo ${kernel_source_dir} + fi + ;; + (*) + echo ${kernel_source_dir} + ;; + esac + ) + --with-linux-obj=${kernel_source_dir} + --with-spl=${source_tree}/spl-${PACKAGE_VERSION} + --with-spl-obj=${dkms_tree}/spl/${PACKAGE_VERSION}/${kernelver}/${arch} + $( + [[ -r /etc/default/zfs ]] \ + && source /etc/default/zfs \ + && shopt -q -s extglob \ + && \ + { + if [[ ${ZFS_DKMS_ENABLE_DEBUG,,} == @(y|yes) ]] + then + echo --enable-debug + fi + if [[ ${ZFS_DKMS_ENABLE_DEBUG_DMU_TX,,} == @(y|yes) ]] + then + echo --enable-debug-dmu-tx + fi + } + ) +" +POST_BUILD="cp + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/zfs_config.h + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/module/Module.symvers + ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/${kernelver}/${arch}/ +" +REMAKE_INITRD="$( + if [ -e /usr/share/initramfs-tools/hooks/zfs \ + -o -e /usr/share/dracut/modules.d/90zfs ] + then + echo -n yes + else + echo -n no + fi +)" +MAKE[0]="make" +STRIP[0]="$( + [[ -r /etc/default/zfs ]] \ + && source /etc/default/zfs \ + && shopt -q -s extglob \ + && [[ ${ZFS_DKMS_DISABLE_STRIP,,} == @(y|yes) ]] \ + && echo -n no +)" +STRIP[1]="${STRIP[0]}" +STRIP[2]="${STRIP[0]}" +STRIP[3]="${STRIP[0]}" +STRIP[4]="${STRIP[0]}" +STRIP[5]="${STRIP[0]}" +BUILT_MODULE_NAME[0]="zavl" +BUILT_MODULE_LOCATION[0]="module/avl/" +DEST_MODULE_LOCATION[0]="/extra/zfs/zavl" +BUILT_MODULE_NAME[1]="zcommon" +BUILT_MODULE_LOCATION[1]="module/zcommon/" +DEST_MODULE_LOCATION[1]="/extra/zfs/zcommon" +BUILT_MODULE_NAME[2]="znvpair" +BUILT_MODULE_LOCATION[2]="module/nvpair/" +DEST_MODULE_LOCATION[2]="/extra/zfs/znvpair" +BUILT_MODULE_NAME[3]="zpios" +BUILT_MODULE_LOCATION[3]="module/zpios/" +DEST_MODULE_LOCATION[3]="/extra/zfs/zpios" +BUILT_MODULE_NAME[4]="zunicode" +BUILT_MODULE_LOCATION[4]="module/unicode/" +DEST_MODULE_LOCATION[4]="/extra/zfs/zunicode" +BUILT_MODULE_NAME[5]="zfs" +BUILT_MODULE_LOCATION[5]="module/zfs/" +DEST_MODULE_LOCATION[5]="/extra/zfs/zfs" --- linux-4.4.0.orig/zfs/etc/Makefile.in +++ linux-4.4.0/zfs/etc/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/Makefile.in +++ linux-4.4.0/zfs/etc/init.d/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs-functions.in +++ linux-4.4.0/zfs/etc/init.d/zfs-functions.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs-import.in +++ linux-4.4.0/zfs/etc/init.d/zfs-import.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs-mount.in +++ linux-4.4.0/zfs/etc/init.d/zfs-mount.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs-share.in +++ linux-4.4.0/zfs/etc/init.d/zfs-share.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs-zed.in +++ linux-4.4.0/zfs/etc/init.d/zfs-zed.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/init.d/zfs.in +++ linux-4.4.0/zfs/etc/init.d/zfs.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/modules-load.d/Makefile.in +++ linux-4.4.0/zfs/etc/modules-load.d/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/modules-load.d/zfs.conf.in +++ linux-4.4.0/zfs/etc/modules-load.d/zfs.conf.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/Makefile.in +++ linux-4.4.0/zfs/etc/systemd/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/50-zfs.preset.in +++ linux-4.4.0/zfs/etc/systemd/system/50-zfs.preset.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/Makefile.in +++ linux-4.4.0/zfs/etc/systemd/system/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zed.service.in +++ linux-4.4.0/zfs/etc/systemd/system/zed.service.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zfs-import-cache.service.in +++ linux-4.4.0/zfs/etc/systemd/system/zfs-import-cache.service.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zfs-import-scan.service.in +++ linux-4.4.0/zfs/etc/systemd/system/zfs-import-scan.service.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zfs-mount.service.in +++ linux-4.4.0/zfs/etc/systemd/system/zfs-mount.service.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zfs-share.service.in +++ linux-4.4.0/zfs/etc/systemd/system/zfs-share.service.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/systemd/system/zfs.target.in +++ linux-4.4.0/zfs/etc/systemd/system/zfs.target.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/etc/zfs/Makefile.in +++ linux-4.4.0/zfs/etc/zfs/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/include/Makefile.am +++ linux-4.4.0/zfs/include/Makefile.am @@ -0,0 +1,34 @@ +SUBDIRS = linux sys + +COMMON_H = \ + $(top_srcdir)/include/zfeature_common.h \ + $(top_srcdir)/include/zfs_comutil.h \ + $(top_srcdir)/include/zfs_deleg.h \ + $(top_srcdir)/include/zfs_fletcher.h \ + $(top_srcdir)/include/zfs_namecheck.h \ + $(top_srcdir)/include/zfs_prop.h \ + $(top_srcdir)/include/zpios-ctl.h + +KERNEL_H = \ + $(top_srcdir)/include/zpios-internal.h + +USER_H = \ + $(top_srcdir)/include/libnvpair.h \ + $(top_srcdir)/include/libuutil_common.h \ + $(top_srcdir)/include/libuutil.h \ + $(top_srcdir)/include/libuutil_impl.h \ + $(top_srcdir)/include/libzfs.h \ + $(top_srcdir)/include/libzfs_core.h \ + $(top_srcdir)/include/libzfs_impl.h + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/Makefile.in +++ linux-4.4.0/zfs/include/Makefile.in @@ -0,0 +1,905 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__libzfs_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/zfeature_common.h \ + $(top_srcdir)/include/zfs_comutil.h \ + $(top_srcdir)/include/zfs_deleg.h \ + $(top_srcdir)/include/zfs_fletcher.h \ + $(top_srcdir)/include/zfs_namecheck.h \ + $(top_srcdir)/include/zfs_prop.h \ + $(top_srcdir)/include/zpios-ctl.h \ + $(top_srcdir)/include/zpios-internal.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +am__libzfs_HEADERS_DIST = $(top_srcdir)/include/zfeature_common.h \ + $(top_srcdir)/include/zfs_comutil.h \ + $(top_srcdir)/include/zfs_deleg.h \ + $(top_srcdir)/include/zfs_fletcher.h \ + $(top_srcdir)/include/zfs_namecheck.h \ + $(top_srcdir)/include/zfs_prop.h \ + $(top_srcdir)/include/zpios-ctl.h \ + $(top_srcdir)/include/libnvpair.h \ + $(top_srcdir)/include/libuutil_common.h \ + $(top_srcdir)/include/libuutil.h \ + $(top_srcdir)/include/libuutil_impl.h \ + $(top_srcdir)/include/libzfs.h \ + $(top_srcdir)/include/libzfs_core.h \ + $(top_srcdir)/include/libzfs_impl.h +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +SUBDIRS = linux sys +COMMON_H = \ + $(top_srcdir)/include/zfeature_common.h \ + $(top_srcdir)/include/zfs_comutil.h \ + $(top_srcdir)/include/zfs_deleg.h \ + $(top_srcdir)/include/zfs_fletcher.h \ + $(top_srcdir)/include/zfs_namecheck.h \ + $(top_srcdir)/include/zfs_prop.h \ + $(top_srcdir)/include/zpios-ctl.h + +KERNEL_H = \ + $(top_srcdir)/include/zpios-internal.h + +USER_H = \ + $(top_srcdir)/include/libnvpair.h \ + $(top_srcdir)/include/libuutil_common.h \ + $(top_srcdir)/include/libuutil.h \ + $(top_srcdir)/include/libuutil_impl.h \ + $(top_srcdir)/include/libzfs.h \ + $(top_srcdir)/include/libzfs_core.h \ + $(top_srcdir)/include/libzfs_impl.h + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-kernelHEADERS install-libzfsHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/libnvpair.h +++ linux-4.4.0/zfs/include/libnvpair.h @@ -0,0 +1,194 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _LIBNVPAIR_H +#define _LIBNVPAIR_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All interfaces described in this file are private to Solaris, and + * are subject to change at any time and without notice. The public + * nvlist/nvpair interfaces, as documented in manpage sections 3NVPAIR, + * are all imported from included above. + */ + +extern int nvpair_value_match(nvpair_t *, int, char *, char **); +extern int nvpair_value_match_regex(nvpair_t *, int, char *, regex_t *, + char **); + +extern void nvlist_print(FILE *, nvlist_t *); +extern void dump_nvlist(nvlist_t *, int); + +/* + * Private nvlist printing interface that allows the caller some control + * over output rendering (as opposed to nvlist_print and dump_nvlist). + * + * Obtain an opaque nvlist_prtctl_t cookie using nvlist_prtctl_alloc + * (NULL on failure); on return the cookie is set up for default formatting + * and rendering. Quote the cookie in subsequent customisation functions and + * then pass the cookie to nvlist_prt to render the nvlist. Finally, + * use nvlist_prtctl_free to release the cookie. + * + * For all nvlist_lookup_xxx and nvlist_lookup_xxx_array functions + * we have a corresponding brace of functions that appoint replacement + * rendering functions: + * + * extern void nvlist_prtctl_xxx(nvlist_prtctl_t, + * void (*)(nvlist_prtctl_t ctl, void *private, const char *name, + * xxxtype value)) + * + * and + * + * extern void nvlist_prtctl_xxx_array(nvlist_prtctl_t, + * void (*)(nvlist_prtctl_t ctl, void *private, const char *name, + * xxxtype value, uint_t count)) + * + * where xxxtype is the C datatype corresponding to xxx, eg int8_t for "int8" + * and char * for "string". The function that is appointed to render the + * specified datatype receives as arguments the cookie, the nvlist + * member name, the value of that member (or a pointer for array function), + * and (for array rendering functions) a count of the number of elements. + */ + +typedef struct nvlist_prtctl *nvlist_prtctl_t; /* opaque */ + +enum nvlist_indent_mode { + NVLIST_INDENT_ABS, /* Absolute indentation */ + NVLIST_INDENT_TABBED /* Indent with tabstops */ +}; + +extern nvlist_prtctl_t nvlist_prtctl_alloc(void); +extern void nvlist_prtctl_free(nvlist_prtctl_t); +extern void nvlist_prt(nvlist_t *, nvlist_prtctl_t); + +/* Output stream */ +extern void nvlist_prtctl_setdest(nvlist_prtctl_t, FILE *); +extern FILE *nvlist_prtctl_getdest(nvlist_prtctl_t); + +/* Indentation mode, start indent, indent increment; default tabbed/0/1 */ +extern void nvlist_prtctl_setindent(nvlist_prtctl_t, enum nvlist_indent_mode, + int, int); +extern void nvlist_prtctl_doindent(nvlist_prtctl_t, int); + +enum nvlist_prtctl_fmt { + NVLIST_FMT_MEMBER_NAME, /* name fmt; default "%s = " */ + NVLIST_FMT_MEMBER_POSTAMBLE, /* after nvlist member; default "\n" */ + NVLIST_FMT_BTWN_ARRAY /* between array members; default " " */ +}; + +extern void nvlist_prtctl_setfmt(nvlist_prtctl_t, enum nvlist_prtctl_fmt, + const char *); +extern void nvlist_prtctl_dofmt(nvlist_prtctl_t, enum nvlist_prtctl_fmt, ...); + +/* + * Function prototypes for interfaces that appoint a new rendering function + * for single-valued nvlist members. + * + * A replacement function receives arguments as follows: + * + * nvlist_prtctl_t Print control structure; do not change preferences + * for this object from a print callback function. + * + * void * The function-private cookie argument registered + * when the replacement function was appointed. + * + * nvlist_t * The full nvlist that is being processed. The + * rendering function is called to render a single + * member (name and value passed as below) but it may + * want to reference or incorporate other aspects of + * the full nvlist. + * + * const char * Member name to render + * + * valtype Value of the member to render + * + * The function must return non-zero if it has rendered output for this + * member, or 0 if it wants to default to standard rendering for this + * one member. + */ + +#define NVLIST_PRINTCTL_SVDECL(funcname, valtype) \ + extern void funcname(nvlist_prtctl_t, \ + int (*)(nvlist_prtctl_t, void *, nvlist_t *, const char *, valtype), \ + void *) + +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_boolean, int); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_boolean_value, boolean_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_byte, uchar_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int8, int8_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint8, uint8_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int16, int16_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint16, uint16_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int32, int32_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint32, uint32_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int64, int64_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint64, uint64_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_double, double); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_string, char *); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_hrtime, hrtime_t); +NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_nvlist, nvlist_t *); + +#undef NVLIST_PRINTCTL_SVDECL /* was just for "clarity" above */ + +/* + * Function prototypes for interfaces that appoint a new rendering function + * for array-valued nvlist members. + * + * One additional argument is taken: uint_t for the number of array elements + * + * Return values as above. + */ +#define NVLIST_PRINTCTL_AVDECL(funcname, vtype) \ + extern void funcname(nvlist_prtctl_t, \ + int (*)(nvlist_prtctl_t, void *, nvlist_t *, const char *, vtype, uint_t), \ + void *) + +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_boolean_array, boolean_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_byte_array, uchar_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int8_array, int8_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint8_array, uint8_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int16_array, int16_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint16_array, uint16_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int32_array, int32_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint32_array, uint32_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int64_array, int64_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint64_array, uint64_t *); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_string_array, char **); +NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_nvlist_array, nvlist_t **); + +#undef NVLIST_PRINTCTL_AVDECL /* was just for "clarity" above */ + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBNVPAIR_H */ --- linux-4.4.0.orig/zfs/include/libuutil.h +++ linux-4.4.0/zfs/include/libuutil.h @@ -0,0 +1,390 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _LIBUUTIL_H +#define _LIBUUTIL_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Standard flags codes. + */ +#define UU_DEFAULT 0 + +/* + * Standard error codes. + */ +#define UU_ERROR_NONE 0 /* no error */ +#define UU_ERROR_INVALID_ARGUMENT 1 /* invalid argument */ +#define UU_ERROR_UNKNOWN_FLAG 2 /* passed flag invalid */ +#define UU_ERROR_NO_MEMORY 3 /* out of memory */ +#define UU_ERROR_CALLBACK_FAILED 4 /* callback-initiated error */ +#define UU_ERROR_NOT_SUPPORTED 5 /* operation not supported */ +#define UU_ERROR_EMPTY 6 /* no value provided */ +#define UU_ERROR_UNDERFLOW 7 /* value is too small */ +#define UU_ERROR_OVERFLOW 8 /* value is too value */ +#define UU_ERROR_INVALID_CHAR 9 /* value contains unexpected char */ +#define UU_ERROR_INVALID_DIGIT 10 /* value contains digit not in base */ + +#define UU_ERROR_SYSTEM 99 /* underlying system error */ +#define UU_ERROR_UNKNOWN 100 /* error status not known */ + +/* + * Standard program exit codes. + */ +#define UU_EXIT_OK (*(uu_exit_ok())) +#define UU_EXIT_FATAL (*(uu_exit_fatal())) +#define UU_EXIT_USAGE (*(uu_exit_usage())) + +/* + * Exit status profiles. + */ +#define UU_PROFILE_DEFAULT 0 +#define UU_PROFILE_LAUNCHER 1 + +/* + * Error reporting functions. + */ +uint32_t uu_error(void); +const char *uu_strerror(uint32_t); + +/* + * Program notification functions. + */ +extern void uu_alt_exit(int); +extern const char *uu_setpname(char *); +extern const char *uu_getpname(void); +/*PRINTFLIKE1*/ +extern void uu_warn(const char *, ...); +extern void uu_vwarn(const char *, va_list); +/*PRINTFLIKE1*/ +extern void uu_die(const char *, ...) __NORETURN; +extern void uu_vdie(const char *, va_list) __NORETURN; +/*PRINTFLIKE2*/ +extern void uu_xdie(int, const char *, ...) __NORETURN; +extern void uu_vxdie(int, const char *, va_list) __NORETURN; + +/* + * Exit status functions (not to be used directly) + */ +extern int *uu_exit_ok(void); +extern int *uu_exit_fatal(void); +extern int *uu_exit_usage(void); + +/* + * string->number conversions + */ +extern int uu_strtoint(const char *, void *, size_t, int, int64_t, int64_t); +extern int uu_strtouint(const char *, void *, size_t, int, uint64_t, uint64_t); + +/* + * Debug print facility functions. + */ +typedef struct uu_dprintf uu_dprintf_t; + +typedef enum { + UU_DPRINTF_SILENT, + UU_DPRINTF_FATAL, + UU_DPRINTF_WARNING, + UU_DPRINTF_NOTICE, + UU_DPRINTF_INFO, + UU_DPRINTF_DEBUG +} uu_dprintf_severity_t; + +extern uu_dprintf_t *uu_dprintf_create(const char *, uu_dprintf_severity_t, + uint_t); +/*PRINTFLIKE3*/ +extern void uu_dprintf(uu_dprintf_t *, uu_dprintf_severity_t, + const char *, ...); +extern void uu_dprintf_destroy(uu_dprintf_t *); +extern const char *uu_dprintf_getname(uu_dprintf_t *); + +/* + * Identifier test flags and function. + */ +#define UU_NAME_DOMAIN 0x1 /* allow SUNW, or com.sun, prefix */ +#define UU_NAME_PATH 0x2 /* allow '/'-delimited paths */ + +int uu_check_name(const char *, uint_t); + +/* + * File creation functions. + */ +extern int uu_open_tmp(const char *dir, uint_t uflags); + +/* + * Convenience functions. + */ +#define UU_NELEM(a) (sizeof (a) / sizeof ((a)[0])) + +/*PRINTFLIKE1*/ +extern char *uu_msprintf(const char *format, ...); +extern void *uu_zalloc(size_t); +extern char *uu_strdup(const char *); +extern void uu_free(void *); + +extern boolean_t uu_strcaseeq(const char *a, const char *b); +extern boolean_t uu_streq(const char *a, const char *b); +extern char *uu_strndup(const char *s, size_t n); +extern boolean_t uu_strbw(const char *a, const char *b); +extern void *uu_memdup(const void *buf, size_t sz); +extern void uu_dump(FILE *out, const char *prefix, const void *buf, size_t len); + +/* + * Comparison function type definition. + * Developers should be careful in their use of the _private argument. If you + * break interface guarantees, you get undefined behavior. + */ +typedef int uu_compare_fn_t(const void *__left, const void *__right, + void *__private); + +/* + * Walk variant flags. + * A data structure need not provide support for all variants and + * combinations. Refer to the appropriate documentation. + */ +#define UU_WALK_ROBUST 0x00000001 /* walk can survive removes */ +#define UU_WALK_REVERSE 0x00000002 /* reverse walk order */ + +#define UU_WALK_PREORDER 0x00000010 /* walk tree in pre-order */ +#define UU_WALK_POSTORDER 0x00000020 /* walk tree in post-order */ + +/* + * Walk callback function return codes. + */ +#define UU_WALK_ERROR -1 +#define UU_WALK_NEXT 0 +#define UU_WALK_DONE 1 + +/* + * Walk callback function type definition. + */ +typedef int uu_walk_fn_t(void *_elem, void *_private); + +/* + * lists: opaque structures + */ +typedef struct uu_list_pool uu_list_pool_t; +typedef struct uu_list uu_list_t; + +typedef struct uu_list_node { + uintptr_t uln_opaque[2]; +} uu_list_node_t; + +typedef struct uu_list_walk uu_list_walk_t; + +typedef uintptr_t uu_list_index_t; + +/* + * lists: interface + * + * basic usage: + * typedef struct foo { + * ... + * uu_list_node_t foo_node; + * ... + * } foo_t; + * + * static int + * foo_compare(void *l_arg, void *r_arg, void *private) + * { + * foo_t *l = l_arg; + * foo_t *r = r_arg; + * + * if (... l greater than r ...) + * return (1); + * if (... l less than r ...) + * return (-1); + * return (0); + * } + * + * ... + * // at initialization time + * foo_pool = uu_list_pool_create("foo_pool", + * sizeof (foo_t), offsetof(foo_t, foo_node), foo_compare, + * debugging? 0 : UU_AVL_POOL_DEBUG); + * ... + */ +uu_list_pool_t *uu_list_pool_create(const char *, size_t, size_t, + uu_compare_fn_t *, uint32_t); +#define UU_LIST_POOL_DEBUG 0x00000001 + +void uu_list_pool_destroy(uu_list_pool_t *); + +/* + * usage: + * + * foo_t *a; + * a = malloc(sizeof(*a)); + * uu_list_node_init(a, &a->foo_list, pool); + * ... + * uu_list_node_fini(a, &a->foo_list, pool); + * free(a); + */ +void uu_list_node_init(void *, uu_list_node_t *, uu_list_pool_t *); +void uu_list_node_fini(void *, uu_list_node_t *, uu_list_pool_t *); + +uu_list_t *uu_list_create(uu_list_pool_t *, void *_parent, uint32_t); +#define UU_LIST_DEBUG 0x00000001 +#define UU_LIST_SORTED 0x00000002 /* list is sorted */ + +void uu_list_destroy(uu_list_t *); /* list must be empty */ + +size_t uu_list_numnodes(uu_list_t *); + +void *uu_list_first(uu_list_t *); +void *uu_list_last(uu_list_t *); + +void *uu_list_next(uu_list_t *, void *); +void *uu_list_prev(uu_list_t *, void *); + +int uu_list_walk(uu_list_t *, uu_walk_fn_t *, void *, uint32_t); + +uu_list_walk_t *uu_list_walk_start(uu_list_t *, uint32_t); +void *uu_list_walk_next(uu_list_walk_t *); +void uu_list_walk_end(uu_list_walk_t *); + +void *uu_list_find(uu_list_t *, void *, void *, uu_list_index_t *); +void uu_list_insert(uu_list_t *, void *, uu_list_index_t); + +void *uu_list_nearest_next(uu_list_t *, uu_list_index_t); +void *uu_list_nearest_prev(uu_list_t *, uu_list_index_t); + +void *uu_list_teardown(uu_list_t *, void **); + +void uu_list_remove(uu_list_t *, void *); + +/* + * lists: interfaces for non-sorted lists only + */ +int uu_list_insert_before(uu_list_t *, void *_target, void *_elem); +int uu_list_insert_after(uu_list_t *, void *_target, void *_elem); + +/* + * avl trees: opaque structures + */ +typedef struct uu_avl_pool uu_avl_pool_t; +typedef struct uu_avl uu_avl_t; + +typedef struct uu_avl_node { +#ifdef _LP64 + uintptr_t uan_opaque[3]; +#else + uintptr_t uan_opaque[4]; +#endif +} uu_avl_node_t; + +typedef struct uu_avl_walk uu_avl_walk_t; + +typedef uintptr_t uu_avl_index_t; + +/* + * avl trees: interface + * + * basic usage: + * typedef struct foo { + * ... + * uu_avl_node_t foo_node; + * ... + * } foo_t; + * + * static int + * foo_compare(void *l_arg, void *r_arg, void *private) + * { + * foo_t *l = l_arg; + * foo_t *r = r_arg; + * + * if (... l greater than r ...) + * return (1); + * if (... l less than r ...) + * return (-1); + * return (0); + * } + * + * ... + * // at initialization time + * foo_pool = uu_avl_pool_create("foo_pool", + * sizeof (foo_t), offsetof(foo_t, foo_node), foo_compare, + * debugging? 0 : UU_AVL_POOL_DEBUG); + * ... + */ +uu_avl_pool_t *uu_avl_pool_create(const char *, size_t, size_t, + uu_compare_fn_t *, uint32_t); +#define UU_AVL_POOL_DEBUG 0x00000001 + +void uu_avl_pool_destroy(uu_avl_pool_t *); + +/* + * usage: + * + * foo_t *a; + * a = malloc(sizeof(*a)); + * uu_avl_node_init(a, &a->foo_avl, pool); + * ... + * uu_avl_node_fini(a, &a->foo_avl, pool); + * free(a); + */ +void uu_avl_node_init(void *, uu_avl_node_t *, uu_avl_pool_t *); +void uu_avl_node_fini(void *, uu_avl_node_t *, uu_avl_pool_t *); + +uu_avl_t *uu_avl_create(uu_avl_pool_t *, void *_parent, uint32_t); +#define UU_AVL_DEBUG 0x00000001 + +void uu_avl_destroy(uu_avl_t *); /* list must be empty */ + +size_t uu_avl_numnodes(uu_avl_t *); + +void *uu_avl_first(uu_avl_t *); +void *uu_avl_last(uu_avl_t *); + +void *uu_avl_next(uu_avl_t *, void *); +void *uu_avl_prev(uu_avl_t *, void *); + +int uu_avl_walk(uu_avl_t *, uu_walk_fn_t *, void *, uint32_t); + +uu_avl_walk_t *uu_avl_walk_start(uu_avl_t *, uint32_t); +void *uu_avl_walk_next(uu_avl_walk_t *); +void uu_avl_walk_end(uu_avl_walk_t *); + +void *uu_avl_find(uu_avl_t *, void *, void *, uu_avl_index_t *); +void uu_avl_insert(uu_avl_t *, void *, uu_avl_index_t); + +void *uu_avl_nearest_next(uu_avl_t *, uu_avl_index_t); +void *uu_avl_nearest_prev(uu_avl_t *, uu_avl_index_t); + +void *uu_avl_teardown(uu_avl_t *, void **); + +void uu_avl_remove(uu_avl_t *, void *); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBUUTIL_H */ --- linux-4.4.0.orig/zfs/include/libuutil_common.h +++ linux-4.4.0/zfs/include/libuutil_common.h @@ -0,0 +1,35 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBUUTIL_COMMON_H +#define _LIBUUTIL_COMMON_H + + + +#include +#include + +#endif /* _LIBUUTIL_COMMON_H */ --- linux-4.4.0.orig/zfs/include/libuutil_impl.h +++ linux-4.4.0/zfs/include/libuutil_impl.h @@ -0,0 +1,181 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBUUTIL_IMPL_H +#define _LIBUUTIL_IMPL_H + + + +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void uu_set_error(uint_t); + + +/*PRINTFLIKE1*/ +void uu_panic(const char *format, ...); + + +struct uu_dprintf { + char *uud_name; + uu_dprintf_severity_t uud_severity; + uint_t uud_flags; +}; + +/* + * For debugging purposes, libuutil keeps around linked lists of all uu_lists + * and uu_avls, along with pointers to their parents. These can cause false + * negatives when looking for memory leaks, so we encode the pointers by + * storing them with swapped endianness; this is not perfect, but it's about + * the best we can do without wasting a lot of space. + */ +#ifdef _LP64 +#define UU_PTR_ENCODE(ptr) BSWAP_64((uintptr_t)(void *)(ptr)) +#else +#define UU_PTR_ENCODE(ptr) BSWAP_32((uintptr_t)(void *)(ptr)) +#endif + +#define UU_PTR_DECODE(ptr) ((void *)UU_PTR_ENCODE(ptr)) + +/* + * uu_list structures + */ +typedef struct uu_list_node_impl { + struct uu_list_node_impl *uln_next; + struct uu_list_node_impl *uln_prev; +} uu_list_node_impl_t; + +struct uu_list_walk { + uu_list_walk_t *ulw_next; + uu_list_walk_t *ulw_prev; + + uu_list_t *ulw_list; + int8_t ulw_dir; + uint8_t ulw_robust; + uu_list_node_impl_t *ulw_next_result; +}; + +struct uu_list { + uintptr_t ul_next_enc; + uintptr_t ul_prev_enc; + + uu_list_pool_t *ul_pool; + uintptr_t ul_parent_enc; /* encoded parent pointer */ + size_t ul_offset; + size_t ul_numnodes; + uint8_t ul_debug; + uint8_t ul_sorted; + uint8_t ul_index; /* mark for uu_list_index_ts */ + + uu_list_node_impl_t ul_null_node; + uu_list_walk_t ul_null_walk; /* for robust walkers */ +}; + +#define UU_LIST_PTR(ptr) ((uu_list_t *)UU_PTR_DECODE(ptr)) + +#define UU_LIST_POOL_MAXNAME 64 + +struct uu_list_pool { + uu_list_pool_t *ulp_next; + uu_list_pool_t *ulp_prev; + + char ulp_name[UU_LIST_POOL_MAXNAME]; + size_t ulp_nodeoffset; + size_t ulp_objsize; + uu_compare_fn_t *ulp_cmp; + uint8_t ulp_debug; + uint8_t ulp_last_index; + pthread_mutex_t ulp_lock; /* protects null_list */ + uu_list_t ulp_null_list; +}; + +/* + * uu_avl structures + */ +typedef struct avl_node uu_avl_node_impl_t; + +struct uu_avl_walk { + uu_avl_walk_t *uaw_next; + uu_avl_walk_t *uaw_prev; + + uu_avl_t *uaw_avl; + void *uaw_next_result; + int8_t uaw_dir; + uint8_t uaw_robust; +}; + +struct uu_avl { + uintptr_t ua_next_enc; + uintptr_t ua_prev_enc; + + uu_avl_pool_t *ua_pool; + uintptr_t ua_parent_enc; + uint8_t ua_debug; + uint8_t ua_index; /* mark for uu_avl_index_ts */ + + struct avl_tree ua_tree; + uu_avl_walk_t ua_null_walk; +}; + +#define UU_AVL_PTR(x) ((uu_avl_t *)UU_PTR_DECODE(x)) + +#define UU_AVL_POOL_MAXNAME 64 + +struct uu_avl_pool { + uu_avl_pool_t *uap_next; + uu_avl_pool_t *uap_prev; + + char uap_name[UU_AVL_POOL_MAXNAME]; + size_t uap_nodeoffset; + size_t uap_objsize; + uu_compare_fn_t *uap_cmp; + uint8_t uap_debug; + uint8_t uap_last_index; + pthread_mutex_t uap_lock; /* protects null_avl */ + uu_avl_t uap_null_avl; +}; + +/* + * atfork() handlers + */ +void uu_avl_lockup(void); +void uu_avl_release(void); + +void uu_list_lockup(void); +void uu_list_release(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBUUTIL_IMPL_H */ --- linux-4.4.0.orig/zfs/include/libzfs.h +++ linux-4.4.0/zfs/include/libzfs.h @@ -0,0 +1,797 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + */ + +#ifndef _LIBZFS_H +#define _LIBZFS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Miscellaneous ZFS constants + */ +#define ZFS_MAXNAMELEN MAXNAMELEN +#define ZPOOL_MAXNAMELEN MAXNAMELEN +#define ZFS_MAXPROPLEN MAXPATHLEN +#define ZPOOL_MAXPROPLEN MAXPATHLEN + +/* + * Default device paths + */ +#define DISK_ROOT "/dev" +#define UDISK_ROOT "/dev/disk" + +/* + * Default wait time for a device name to be created. + */ +#define DISK_LABEL_WAIT (30 * 1000) /* 30 seconds */ + +#define DEFAULT_IMPORT_PATH_SIZE 7 +extern char *zpool_default_import_path[DEFAULT_IMPORT_PATH_SIZE]; + +/* + * libzfs errors + */ +typedef enum zfs_error { + EZFS_SUCCESS = 0, /* no error -- success */ + EZFS_NOMEM = 2000, /* out of memory */ + EZFS_BADPROP, /* invalid property value */ + EZFS_PROPREADONLY, /* cannot set readonly property */ + EZFS_PROPTYPE, /* property does not apply to dataset type */ + EZFS_PROPNONINHERIT, /* property is not inheritable */ + EZFS_PROPSPACE, /* bad quota or reservation */ + EZFS_BADTYPE, /* dataset is not of appropriate type */ + EZFS_BUSY, /* pool or dataset is busy */ + EZFS_EXISTS, /* pool or dataset already exists */ + EZFS_NOENT, /* no such pool or dataset */ + EZFS_BADSTREAM, /* bad backup stream */ + EZFS_DSREADONLY, /* dataset is readonly */ + EZFS_VOLTOOBIG, /* volume is too large for 32-bit system */ + EZFS_INVALIDNAME, /* invalid dataset name */ + EZFS_BADRESTORE, /* unable to restore to destination */ + EZFS_BADBACKUP, /* backup failed */ + EZFS_BADTARGET, /* bad attach/detach/replace target */ + EZFS_NODEVICE, /* no such device in pool */ + EZFS_BADDEV, /* invalid device to add */ + EZFS_NOREPLICAS, /* no valid replicas */ + EZFS_RESILVERING, /* currently resilvering */ + EZFS_BADVERSION, /* unsupported version */ + EZFS_POOLUNAVAIL, /* pool is currently unavailable */ + EZFS_DEVOVERFLOW, /* too many devices in one vdev */ + EZFS_BADPATH, /* must be an absolute path */ + EZFS_CROSSTARGET, /* rename or clone across pool or dataset */ + EZFS_ZONED, /* used improperly in local zone */ + EZFS_MOUNTFAILED, /* failed to mount dataset */ + EZFS_UMOUNTFAILED, /* failed to unmount dataset */ + EZFS_UNSHARENFSFAILED, /* unshare(1M) failed */ + EZFS_SHARENFSFAILED, /* share(1M) failed */ + EZFS_PERM, /* permission denied */ + EZFS_NOSPC, /* out of space */ + EZFS_FAULT, /* bad address */ + EZFS_IO, /* I/O error */ + EZFS_INTR, /* signal received */ + EZFS_ISSPARE, /* device is a hot spare */ + EZFS_INVALCONFIG, /* invalid vdev configuration */ + EZFS_RECURSIVE, /* recursive dependency */ + EZFS_NOHISTORY, /* no history object */ + EZFS_POOLPROPS, /* couldn't retrieve pool props */ + EZFS_POOL_NOTSUP, /* ops not supported for this type of pool */ + EZFS_POOL_INVALARG, /* invalid argument for this pool operation */ + EZFS_NAMETOOLONG, /* dataset name is too long */ + EZFS_OPENFAILED, /* open of device failed */ + EZFS_NOCAP, /* couldn't get capacity */ + EZFS_LABELFAILED, /* write of label failed */ + EZFS_BADWHO, /* invalid permission who */ + EZFS_BADPERM, /* invalid permission */ + EZFS_BADPERMSET, /* invalid permission set name */ + EZFS_NODELEGATION, /* delegated administration is disabled */ + EZFS_UNSHARESMBFAILED, /* failed to unshare over smb */ + EZFS_SHARESMBFAILED, /* failed to share over smb */ + EZFS_BADCACHE, /* bad cache file */ + EZFS_ISL2CACHE, /* device is for the level 2 ARC */ + EZFS_VDEVNOTSUP, /* unsupported vdev type */ + EZFS_NOTSUP, /* ops not supported on this dataset */ + EZFS_ACTIVE_SPARE, /* pool has active shared spare devices */ + EZFS_UNPLAYED_LOGS, /* log device has unplayed logs */ + EZFS_REFTAG_RELE, /* snapshot release: tag not found */ + EZFS_REFTAG_HOLD, /* snapshot hold: tag already exists */ + EZFS_TAGTOOLONG, /* snapshot hold/rele: tag too long */ + EZFS_PIPEFAILED, /* pipe create failed */ + EZFS_THREADCREATEFAILED, /* thread create failed */ + EZFS_POSTSPLIT_ONLINE, /* onlining a disk after splitting it */ + EZFS_SCRUBBING, /* currently scrubbing */ + EZFS_NO_SCRUB, /* no active scrub */ + EZFS_DIFF, /* general failure of zfs diff */ + EZFS_DIFFDATA, /* bad zfs diff data */ + EZFS_POOLREADONLY, /* pool is in read-only mode */ + EZFS_UNKNOWN +} zfs_error_t; + +/* + * The following data structures are all part + * of the zfs_allow_t data structure which is + * used for printing 'allow' permissions. + * It is a linked list of zfs_allow_t's which + * then contain avl tree's for user/group/sets/... + * and each one of the entries in those trees have + * avl tree's for the permissions they belong to and + * whether they are local,descendent or local+descendent + * permissions. The AVL trees are used primarily for + * sorting purposes, but also so that we can quickly find + * a given user and or permission. + */ +typedef struct zfs_perm_node { + avl_node_t z_node; + char z_pname[MAXPATHLEN]; +} zfs_perm_node_t; + +typedef struct zfs_allow_node { + avl_node_t z_node; + char z_key[MAXPATHLEN]; /* name, such as joe */ + avl_tree_t z_localdescend; /* local+descendent perms */ + avl_tree_t z_local; /* local permissions */ + avl_tree_t z_descend; /* descendent permissions */ +} zfs_allow_node_t; + +typedef struct zfs_allow { + struct zfs_allow *z_next; + char z_setpoint[MAXPATHLEN]; + avl_tree_t z_sets; + avl_tree_t z_crperms; + avl_tree_t z_user; + avl_tree_t z_group; + avl_tree_t z_everyone; +} zfs_allow_t; + +/* + * Basic handle types + */ +typedef struct zfs_handle zfs_handle_t; +typedef struct zpool_handle zpool_handle_t; +typedef struct libzfs_handle libzfs_handle_t; + +/* + * Library initialization + */ +extern libzfs_handle_t *libzfs_init(void); +extern void libzfs_fini(libzfs_handle_t *); + +extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *); +extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *); + +extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t); + +extern void zfs_save_arguments(int argc, char **, char *, int); +extern int zpool_log_history(libzfs_handle_t *, const char *); + +extern int libzfs_errno(libzfs_handle_t *); +extern const char *libzfs_error_init(int); +extern const char *libzfs_error_action(libzfs_handle_t *); +extern const char *libzfs_error_description(libzfs_handle_t *); +extern int zfs_standard_error(libzfs_handle_t *, int, const char *); +extern void libzfs_mnttab_init(libzfs_handle_t *); +extern void libzfs_mnttab_fini(libzfs_handle_t *); +extern void libzfs_mnttab_cache(libzfs_handle_t *, boolean_t); +extern int libzfs_mnttab_find(libzfs_handle_t *, const char *, + struct mnttab *); +extern void libzfs_mnttab_add(libzfs_handle_t *, const char *, + const char *, const char *); +extern void libzfs_mnttab_remove(libzfs_handle_t *, const char *); + +/* + * Basic handle functions + */ +extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *); +extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *); +extern void zpool_close(zpool_handle_t *); +extern const char *zpool_get_name(zpool_handle_t *); +extern int zpool_get_state(zpool_handle_t *); +extern char *zpool_state_to_name(vdev_state_t, vdev_aux_t); +extern const char *zpool_pool_state_to_name(pool_state_t); +extern void zpool_free_handles(libzfs_handle_t *); + +/* + * Iterate over all active pools in the system. + */ +typedef int (*zpool_iter_f)(zpool_handle_t *, void *); +extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *); + +/* + * Functions to create and destroy pools + */ +extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *, + nvlist_t *, nvlist_t *); +extern int zpool_destroy(zpool_handle_t *, const char *); +extern int zpool_add(zpool_handle_t *, nvlist_t *); + +typedef struct splitflags { + /* do not split, but return the config that would be split off */ + int dryrun : 1; + + /* after splitting, import the pool */ + int import : 1; +} splitflags_t; + +/* + * Functions to manipulate pool and vdev state + */ +extern int zpool_scan(zpool_handle_t *, pool_scan_func_t); +extern int zpool_clear(zpool_handle_t *, const char *, nvlist_t *); +extern int zpool_reguid(zpool_handle_t *); +extern int zpool_reopen(zpool_handle_t *); + +extern int zpool_vdev_online(zpool_handle_t *, const char *, int, + vdev_state_t *); +extern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t); +extern int zpool_vdev_attach(zpool_handle_t *, const char *, + const char *, nvlist_t *, int); +extern int zpool_vdev_detach(zpool_handle_t *, const char *); +extern int zpool_vdev_remove(zpool_handle_t *, const char *); +extern int zpool_vdev_split(zpool_handle_t *, char *, nvlist_t **, nvlist_t *, + splitflags_t); + +extern int zpool_vdev_fault(zpool_handle_t *, uint64_t, vdev_aux_t); +extern int zpool_vdev_degrade(zpool_handle_t *, uint64_t, vdev_aux_t); +extern int zpool_vdev_clear(zpool_handle_t *, uint64_t); + +extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *, + boolean_t *, boolean_t *); +extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *, + boolean_t *, boolean_t *, boolean_t *); +extern int zpool_label_disk_wait(char *, int); +extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *); + +/* + * Functions to manage pool properties + */ +extern int zpool_set_prop(zpool_handle_t *, const char *, const char *); +extern int zpool_get_prop(zpool_handle_t *, zpool_prop_t, char *, + size_t proplen, zprop_source_t *); +extern int zpool_get_prop_literal(zpool_handle_t *, zpool_prop_t, char *, + size_t proplen, zprop_source_t *, boolean_t literal); +extern uint64_t zpool_get_prop_int(zpool_handle_t *, zpool_prop_t, + zprop_source_t *); + +extern const char *zpool_prop_to_name(zpool_prop_t); +extern const char *zpool_prop_values(zpool_prop_t); + +/* + * Pool health statistics. + */ +typedef enum { + /* + * The following correspond to faults as defined in the (fault.fs.zfs.*) + * event namespace. Each is associated with a corresponding message ID. + */ + ZPOOL_STATUS_CORRUPT_CACHE, /* corrupt /kernel/drv/zpool.cache */ + ZPOOL_STATUS_MISSING_DEV_R, /* missing device with replicas */ + ZPOOL_STATUS_MISSING_DEV_NR, /* missing device with no replicas */ + ZPOOL_STATUS_CORRUPT_LABEL_R, /* bad device label with replicas */ + ZPOOL_STATUS_CORRUPT_LABEL_NR, /* bad device label with no replicas */ + ZPOOL_STATUS_BAD_GUID_SUM, /* sum of device guids didn't match */ + ZPOOL_STATUS_CORRUPT_POOL, /* pool metadata is corrupted */ + ZPOOL_STATUS_CORRUPT_DATA, /* data errors in user (meta)data */ + ZPOOL_STATUS_FAILING_DEV, /* device experiencing errors */ + ZPOOL_STATUS_VERSION_NEWER, /* newer on-disk version */ + ZPOOL_STATUS_HOSTID_MISMATCH, /* last accessed by another system */ + ZPOOL_STATUS_IO_FAILURE_WAIT, /* failed I/O, failmode 'wait' */ + ZPOOL_STATUS_IO_FAILURE_CONTINUE, /* failed I/O, failmode 'continue' */ + ZPOOL_STATUS_BAD_LOG, /* cannot read log chain(s) */ + ZPOOL_STATUS_ERRATA, /* informational errata available */ + + /* + * If the pool has unsupported features but can still be opened in + * read-only mode, its status is ZPOOL_STATUS_UNSUP_FEAT_WRITE. If the + * pool has unsupported features but cannot be opened at all, its + * status is ZPOOL_STATUS_UNSUP_FEAT_READ. + */ + ZPOOL_STATUS_UNSUP_FEAT_READ, /* unsupported features for read */ + ZPOOL_STATUS_UNSUP_FEAT_WRITE, /* unsupported features for write */ + + /* + * These faults have no corresponding message ID. At the time we are + * checking the status, the original reason for the FMA fault (I/O or + * checksum errors) has been lost. + */ + ZPOOL_STATUS_FAULTED_DEV_R, /* faulted device with replicas */ + ZPOOL_STATUS_FAULTED_DEV_NR, /* faulted device with no replicas */ + + /* + * The following are not faults per se, but still an error possibly + * requiring administrative attention. There is no corresponding + * message ID. + */ + ZPOOL_STATUS_VERSION_OLDER, /* older legacy on-disk version */ + ZPOOL_STATUS_FEAT_DISABLED, /* supported features are disabled */ + ZPOOL_STATUS_RESILVERING, /* device being resilvered */ + ZPOOL_STATUS_OFFLINE_DEV, /* device online */ + ZPOOL_STATUS_REMOVED_DEV, /* removed device */ + + /* + * Finally, the following indicates a healthy pool. + */ + ZPOOL_STATUS_OK +} zpool_status_t; + +extern unsigned long get_system_hostid(void); +extern zpool_status_t zpool_get_status(zpool_handle_t *, char **, + zpool_errata_t *); +extern zpool_status_t zpool_import_status(nvlist_t *, char **, + zpool_errata_t *); +extern void zpool_dump_ddt(const ddt_stat_t *dds, const ddt_histogram_t *ddh); + +/* + * Statistics and configuration functions. + */ +extern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **); +extern nvlist_t *zpool_get_features(zpool_handle_t *); +extern int zpool_refresh_stats(zpool_handle_t *, boolean_t *); +extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **); + +/* + * Import and export functions + */ +extern int zpool_export(zpool_handle_t *, boolean_t, const char *); +extern int zpool_export_force(zpool_handle_t *, const char *); +extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *, + char *altroot); +extern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *, + nvlist_t *, int); +extern void zpool_print_unsup_feat(nvlist_t *config); + +/* + * Search for pools to import + */ + +typedef struct importargs { + char **path; /* a list of paths to search */ + int paths; /* number of paths to search */ + char *poolname; /* name of a pool to find */ + uint64_t guid; /* guid of a pool to find */ + char *cachefile; /* cachefile to use for import */ + int can_be_active : 1; /* can the pool be active? */ + int unique : 1; /* does 'poolname' already exist? */ + int exists : 1; /* set on return if pool already exists */ +} importargs_t; + +extern nvlist_t *zpool_search_import(libzfs_handle_t *, importargs_t *); + +/* legacy pool search routines */ +extern nvlist_t *zpool_find_import(libzfs_handle_t *, int, char **); +extern nvlist_t *zpool_find_import_cached(libzfs_handle_t *, const char *, + char *, uint64_t); + +/* + * Miscellaneous pool functions + */ +struct zfs_cmd; + +extern const char *zfs_history_event_names[]; + +extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *, + boolean_t verbose); +extern int zpool_upgrade(zpool_handle_t *, uint64_t); +extern int zpool_get_history(zpool_handle_t *, nvlist_t **); +extern int zpool_history_unpack(char *, uint64_t, uint64_t *, + nvlist_t ***, uint_t *); +extern int zpool_events_next(libzfs_handle_t *, nvlist_t **, int *, unsigned, + int); +extern int zpool_events_clear(libzfs_handle_t *, int *); +extern int zpool_events_seek(libzfs_handle_t *, uint64_t, int); +extern void zpool_obj_to_path(zpool_handle_t *, uint64_t, uint64_t, char *, + size_t len); +extern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *); +extern int zpool_get_physpath(zpool_handle_t *, char *, size_t); +extern void zpool_explain_recover(libzfs_handle_t *, const char *, int, + nvlist_t *); + +/* + * Basic handle manipulations. These functions do not create or destroy the + * underlying datasets, only the references to them. + */ +extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int); +extern zfs_handle_t *zfs_handle_dup(zfs_handle_t *); +extern void zfs_close(zfs_handle_t *); +extern zfs_type_t zfs_get_type(const zfs_handle_t *); +extern const char *zfs_get_name(const zfs_handle_t *); +extern zpool_handle_t *zfs_get_pool_handle(const zfs_handle_t *); + +/* + * Property management functions. Some functions are shared with the kernel, + * and are found in sys/fs/zfs.h. + */ + +/* + * zfs dataset property management + */ +extern const char *zfs_prop_default_string(zfs_prop_t); +extern uint64_t zfs_prop_default_numeric(zfs_prop_t); +extern const char *zfs_prop_column_name(zfs_prop_t); +extern boolean_t zfs_prop_align_right(zfs_prop_t); + +extern nvlist_t *zfs_valid_proplist(libzfs_handle_t *, zfs_type_t, + nvlist_t *, uint64_t, zfs_handle_t *, const char *); + +extern const char *zfs_prop_to_name(zfs_prop_t); +extern int zfs_prop_set(zfs_handle_t *, const char *, const char *); +extern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t, + zprop_source_t *, char *, size_t, boolean_t); +extern int zfs_prop_get_recvd(zfs_handle_t *, const char *, char *, size_t, + boolean_t); +extern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *, + zprop_source_t *, char *, size_t); +extern int zfs_prop_get_userquota_int(zfs_handle_t *zhp, const char *propname, + uint64_t *propvalue); +extern int zfs_prop_get_userquota(zfs_handle_t *zhp, const char *propname, + char *propbuf, int proplen, boolean_t literal); +extern int zfs_prop_get_written_int(zfs_handle_t *zhp, const char *propname, + uint64_t *propvalue); +extern int zfs_prop_get_written(zfs_handle_t *zhp, const char *propname, + char *propbuf, int proplen, boolean_t literal); +extern int zfs_prop_get_feature(zfs_handle_t *zhp, const char *propname, + char *buf, size_t len); +extern uint64_t getprop_uint64(zfs_handle_t *, zfs_prop_t, char **); +extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t); +extern int zfs_prop_inherit(zfs_handle_t *, const char *, boolean_t); +extern const char *zfs_prop_values(zfs_prop_t); +extern int zfs_prop_is_string(zfs_prop_t prop); +extern nvlist_t *zfs_get_user_props(zfs_handle_t *); +extern nvlist_t *zfs_get_recvd_props(zfs_handle_t *); +extern nvlist_t *zfs_get_clones_nvl(zfs_handle_t *); + +typedef struct zprop_list { + int pl_prop; + char *pl_user_prop; + struct zprop_list *pl_next; + boolean_t pl_all; + size_t pl_width; + size_t pl_recvd_width; + boolean_t pl_fixed; +} zprop_list_t; + +extern int zfs_expand_proplist(zfs_handle_t *, zprop_list_t **, boolean_t, + boolean_t); +extern void zfs_prune_proplist(zfs_handle_t *, uint8_t *); + +#define ZFS_MOUNTPOINT_NONE "none" +#define ZFS_MOUNTPOINT_LEGACY "legacy" + +#define ZFS_FEATURE_DISABLED "disabled" +#define ZFS_FEATURE_ENABLED "enabled" +#define ZFS_FEATURE_ACTIVE "active" + +#define ZFS_UNSUPPORTED_INACTIVE "inactive" +#define ZFS_UNSUPPORTED_READONLY "readonly" + +/* + * zpool property management + */ +extern int zpool_expand_proplist(zpool_handle_t *, zprop_list_t **); +extern int zpool_prop_get_feature(zpool_handle_t *, const char *, char *, + size_t); +extern const char *zpool_prop_default_string(zpool_prop_t); +extern uint64_t zpool_prop_default_numeric(zpool_prop_t); +extern const char *zpool_prop_column_name(zpool_prop_t); +extern boolean_t zpool_prop_align_right(zpool_prop_t); + +/* + * Functions shared by zfs and zpool property management. + */ +extern int zprop_iter(zprop_func func, void *cb, boolean_t show_all, + boolean_t ordered, zfs_type_t type); +extern int zprop_get_list(libzfs_handle_t *, char *, zprop_list_t **, + zfs_type_t); +extern void zprop_free_list(zprop_list_t *); + +#define ZFS_GET_NCOLS 5 + +typedef enum { + GET_COL_NONE, + GET_COL_NAME, + GET_COL_PROPERTY, + GET_COL_VALUE, + GET_COL_RECVD, + GET_COL_SOURCE +} zfs_get_column_t; + +/* + * Functions for printing zfs or zpool properties + */ +typedef struct zprop_get_cbdata { + int cb_sources; + zfs_get_column_t cb_columns[ZFS_GET_NCOLS]; + int cb_colwidths[ZFS_GET_NCOLS + 1]; + boolean_t cb_scripted; + boolean_t cb_literal; + boolean_t cb_first; + zprop_list_t *cb_proplist; + zfs_type_t cb_type; +} zprop_get_cbdata_t; + +void zprop_print_one_property(const char *, zprop_get_cbdata_t *, + const char *, const char *, zprop_source_t, const char *, + const char *); + +/* + * Iterator functions. + */ +typedef int (*zfs_iter_f)(zfs_handle_t *, void *); +extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *); +extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *); +extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *); +extern int zfs_iter_bookmarks(zfs_handle_t *, zfs_iter_f, void *); + +typedef struct get_all_cb { + zfs_handle_t **cb_handles; + size_t cb_alloc; + size_t cb_used; + boolean_t cb_verbose; + int (*cb_getone)(zfs_handle_t *, void *); +} get_all_cb_t; + +void libzfs_add_handle(get_all_cb_t *, zfs_handle_t *); +int libzfs_dataset_cmp(const void *, const void *); + +/* + * Functions to create and destroy datasets. + */ +extern int zfs_create(libzfs_handle_t *, const char *, zfs_type_t, + nvlist_t *); +extern int zfs_create_ancestors(libzfs_handle_t *, const char *); +extern int zfs_destroy(zfs_handle_t *, boolean_t); +extern int zfs_destroy_snaps(zfs_handle_t *, char *, boolean_t); +extern int zfs_destroy_snaps_nvl(libzfs_handle_t *, nvlist_t *, boolean_t); +extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *); +extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t, nvlist_t *); +extern int zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, + nvlist_t *props); +extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t); +extern int zfs_rename(zfs_handle_t *, const char *, boolean_t, boolean_t); + +typedef struct sendflags { + /* print informational messages (ie, -v was specified) */ + boolean_t verbose; + + /* recursive send (ie, -R) */ + boolean_t replicate; + + /* for incrementals, do all intermediate snapshots */ + boolean_t doall; + + /* if dataset is a clone, do incremental from its origin */ + boolean_t fromorigin; + + /* do deduplication */ + boolean_t dedup; + + /* send properties (ie, -p) */ + boolean_t props; + + /* do not send (no-op, ie. -n) */ + boolean_t dryrun; + + /* parsable verbose output (ie. -P) */ + boolean_t parsable; + + /* show progress (ie. -v) */ + boolean_t progress; + + /* large blocks (>128K) are permitted */ + boolean_t largeblock; + + /* WRITE_EMBEDDED records of type DATA are permitted */ + boolean_t embed_data; +} sendflags_t; + +typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *); + +extern int zfs_send(zfs_handle_t *, const char *, const char *, + sendflags_t *, int, snapfilter_cb_t, void *, nvlist_t **); +extern int zfs_send_one(zfs_handle_t *, const char *, int, enum lzc_send_flags); + +extern int zfs_promote(zfs_handle_t *); +extern int zfs_hold(zfs_handle_t *, const char *, const char *, + boolean_t, int); +extern int zfs_hold_nvl(zfs_handle_t *, int, nvlist_t *); +extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t); +extern int zfs_get_holds(zfs_handle_t *, nvlist_t **); +extern uint64_t zvol_volsize_to_reservation(uint64_t, nvlist_t *); + +typedef int (*zfs_userspace_cb_t)(void *arg, const char *domain, + uid_t rid, uint64_t space); + +extern int zfs_userspace(zfs_handle_t *, zfs_userquota_prop_t, + zfs_userspace_cb_t, void *); + +extern int zfs_get_fsacl(zfs_handle_t *, nvlist_t **); +extern int zfs_set_fsacl(zfs_handle_t *, boolean_t, nvlist_t *); + +typedef struct recvflags { + /* print informational messages (ie, -v was specified) */ + boolean_t verbose; + + /* the destination is a prefix, not the exact fs (ie, -d) */ + boolean_t isprefix; + + /* + * Only the tail of the sent snapshot path is appended to the + * destination to determine the received snapshot name (ie, -e). + */ + boolean_t istail; + + /* do not actually do the recv, just check if it would work (ie, -n) */ + boolean_t dryrun; + + /* rollback/destroy filesystems as necessary (eg, -F) */ + boolean_t force; + + /* set "canmount=off" on all modified filesystems */ + boolean_t canmountoff; + + /* byteswap flag is used internally; callers need not specify */ + boolean_t byteswap; + + /* do not mount file systems as they are extracted (private) */ + boolean_t nomount; +} recvflags_t; + +extern int zfs_receive(libzfs_handle_t *, const char *, recvflags_t *, + int, avl_tree_t *); + +typedef enum diff_flags { + ZFS_DIFF_PARSEABLE = 0x1, + ZFS_DIFF_TIMESTAMP = 0x2, + ZFS_DIFF_CLASSIFY = 0x4 +} diff_flags_t; + +extern int zfs_show_diffs(zfs_handle_t *, int, const char *, const char *, + int); + +/* + * Miscellaneous functions. + */ +extern const char *zfs_type_to_name(zfs_type_t); +extern void zfs_refresh_properties(zfs_handle_t *); +extern int zfs_name_valid(const char *, zfs_type_t); +extern zfs_handle_t *zfs_path_to_zhandle(libzfs_handle_t *, char *, zfs_type_t); +extern boolean_t zfs_dataset_exists(libzfs_handle_t *, const char *, + zfs_type_t); +extern int zfs_spa_version(zfs_handle_t *, int *); +extern boolean_t zfs_bookmark_exists(const char *path); +extern int zfs_append_partition(char *path, size_t max_len); +extern int zfs_resolve_shortname(const char *name, char *path, size_t pathlen); +extern int zfs_strcmp_pathname(char *name, char *cmp_name, int wholedisk); + +/* + * Mount support functions. + */ +extern boolean_t is_mounted(libzfs_handle_t *, const char *special, char **); +extern boolean_t zfs_is_mounted(zfs_handle_t *, char **); +extern int zfs_mount(zfs_handle_t *, const char *, int); +extern int zfs_unmount(zfs_handle_t *, const char *, int); +extern int zfs_unmountall(zfs_handle_t *, int); + +/* + * Share support functions. + */ +extern boolean_t zfs_is_shared(zfs_handle_t *); +extern int zfs_share(zfs_handle_t *); +extern int zfs_unshare(zfs_handle_t *); + +/* + * Protocol-specific share support functions. + */ +extern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **); +extern boolean_t zfs_is_shared_smb(zfs_handle_t *, char **); +extern int zfs_share_nfs(zfs_handle_t *); +extern int zfs_share_smb(zfs_handle_t *); +extern int zfs_shareall(zfs_handle_t *); +extern int zfs_unshare_nfs(zfs_handle_t *, const char *); +extern int zfs_unshare_smb(zfs_handle_t *, const char *); +extern int zfs_unshareall_nfs(zfs_handle_t *); +extern int zfs_unshareall_smb(zfs_handle_t *); +extern int zfs_unshareall_bypath(zfs_handle_t *, const char *); +extern int zfs_unshareall(zfs_handle_t *); +extern int zfs_deleg_share_nfs(libzfs_handle_t *, char *, char *, char *, + void *, void *, int, zfs_share_op_t); + +/* + * Utility function to convert a number to a human-readable form. + */ +extern void zfs_nicenum(uint64_t, char *, size_t); +extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *); + +/* + * Utility functions to run an external process. + */ +#define STDOUT_VERBOSE 0x01 +#define STDERR_VERBOSE 0x02 + +int libzfs_run_process(const char *, char **, int flags); + +/* + * Given a device or file, determine if it is part of a pool. + */ +extern int zpool_in_use(libzfs_handle_t *, int, pool_state_t *, char **, + boolean_t *); + +/* + * Label manipulation. + */ +extern int zpool_read_label(int, nvlist_t **, int *); +extern int zpool_clear_label(int); + +/* + * Management interfaces for SMB ACL files + */ + +int zfs_smb_acl_add(libzfs_handle_t *, char *, char *, char *); +int zfs_smb_acl_remove(libzfs_handle_t *, char *, char *, char *); +int zfs_smb_acl_purge(libzfs_handle_t *, char *, char *); +int zfs_smb_acl_rename(libzfs_handle_t *, char *, char *, char *, char *); + +/* + * Enable and disable datasets within a pool by mounting/unmounting and + * sharing/unsharing them. + */ +extern int zpool_enable_datasets(zpool_handle_t *, const char *, int); +extern int zpool_disable_datasets(zpool_handle_t *, boolean_t); + +/* + * Mappings between vdev and FRU. + */ +extern void libzfs_fru_refresh(libzfs_handle_t *); +extern const char *libzfs_fru_lookup(libzfs_handle_t *, const char *); +extern const char *libzfs_fru_devpath(libzfs_handle_t *, const char *); +extern boolean_t libzfs_fru_compare(libzfs_handle_t *, const char *, + const char *); +extern boolean_t libzfs_fru_notself(libzfs_handle_t *, const char *); +extern int zpool_fru_set(zpool_handle_t *, uint64_t, const char *); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBZFS_H */ --- linux-4.4.0.orig/zfs/include/libzfs_core.h +++ linux-4.4.0/zfs/include/libzfs_core.h @@ -0,0 +1,72 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _LIBZFS_CORE_H +#define _LIBZFS_CORE_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int libzfs_core_init(void); +void libzfs_core_fini(void); + +int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **); +int lzc_create(const char *, dmu_objset_type_t, nvlist_t *); +int lzc_clone(const char *, const char *, nvlist_t *); +int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **); +int lzc_bookmark(nvlist_t *, nvlist_t **); +int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **); +int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **); + +int lzc_snaprange_space(const char *, const char *, uint64_t *); + +int lzc_hold(nvlist_t *, int, nvlist_t **); +int lzc_release(nvlist_t *, nvlist_t **); +int lzc_get_holds(const char *, nvlist_t **); + +enum lzc_send_flags { + LZC_SEND_FLAG_EMBED_DATA = 1 << 0, + LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1 +}; + +int lzc_send(const char *, const char *, int, enum lzc_send_flags); +int lzc_receive(const char *, nvlist_t *, const char *, boolean_t, int); +int lzc_send_space(const char *, const char *, uint64_t *); + +boolean_t lzc_exists(const char *); + +int lzc_rollback(const char *, char *, int); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBZFS_CORE_H */ --- linux-4.4.0.orig/zfs/include/libzfs_impl.h +++ linux-4.4.0/zfs/include/libzfs_impl.h @@ -0,0 +1,222 @@ +/* + * CDDL HEADER SART + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _LIBZFS_IMPL_H +#define _LIBZFS_IMPL_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#if defined(HAVE_LIBTOPO) +#include +#endif /* HAVE_LIBTOPO */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef VERIFY +#undef VERIFY +#endif +#define VERIFY verify + +typedef struct libzfs_fru { + char *zf_device; + char *zf_fru; + struct libzfs_fru *zf_chain; + struct libzfs_fru *zf_next; +} libzfs_fru_t; + +struct libzfs_handle { + int libzfs_error; + int libzfs_fd; + FILE *libzfs_mnttab; + FILE *libzfs_sharetab; + zpool_handle_t *libzfs_pool_handles; + uu_avl_pool_t *libzfs_ns_avlpool; + uu_avl_t *libzfs_ns_avl; + uint64_t libzfs_ns_gen; + int libzfs_desc_active; + char libzfs_action[1024]; + char libzfs_desc[1024]; + int libzfs_printerr; + int libzfs_storeerr; /* stuff error messages into buffer */ + void *libzfs_sharehdl; /* libshare handle */ + uint_t libzfs_shareflags; + boolean_t libzfs_mnttab_enable; + avl_tree_t libzfs_mnttab_cache; + int libzfs_pool_iter; +#if defined(HAVE_LIBTOPO) + topo_hdl_t *libzfs_topo_hdl; + libzfs_fru_t **libzfs_fru_hash; + libzfs_fru_t *libzfs_fru_list; +#endif /* HAVE_LIBTOPO */ + char libzfs_chassis_id[256]; +}; + +#define ZFSSHARE_MISS 0x01 /* Didn't find entry in cache */ + +struct zfs_handle { + libzfs_handle_t *zfs_hdl; + zpool_handle_t *zpool_hdl; + char zfs_name[ZFS_MAXNAMELEN]; + zfs_type_t zfs_type; /* type including snapshot */ + zfs_type_t zfs_head_type; /* type excluding snapshot */ + dmu_objset_stats_t zfs_dmustats; + nvlist_t *zfs_props; + nvlist_t *zfs_user_props; + nvlist_t *zfs_recvd_props; + boolean_t zfs_mntcheck; + char *zfs_mntopts; + uint8_t *zfs_props_table; +}; + +/* + * This is different from checking zfs_type, because it will also catch + * snapshots of volumes. + */ +#define ZFS_IS_VOLUME(zhp) ((zhp)->zfs_head_type == ZFS_TYPE_VOLUME) + +struct zpool_handle { + libzfs_handle_t *zpool_hdl; + zpool_handle_t *zpool_next; + char zpool_name[ZPOOL_MAXNAMELEN]; + int zpool_state; + size_t zpool_config_size; + nvlist_t *zpool_config; + nvlist_t *zpool_old_config; + nvlist_t *zpool_props; + diskaddr_t zpool_start_block; +}; + +typedef enum { + PROTO_NFS = 0, + PROTO_SMB = 1, + PROTO_END = 2 +} zfs_share_proto_t; + +/* + * The following can be used as a bitmask and any new values + * added must preserve that capability. + */ +typedef enum { + SHARED_NOT_SHARED = 0x0, + SHARED_NFS = 0x2, + SHARED_SMB = 0x4 +} zfs_share_type_t; + +int zfs_error(libzfs_handle_t *, int, const char *); +int zfs_error_fmt(libzfs_handle_t *, int, const char *, ...); +void zfs_error_aux(libzfs_handle_t *, const char *, ...); +void *zfs_alloc(libzfs_handle_t *, size_t); +void *zfs_realloc(libzfs_handle_t *, void *, size_t, size_t); +char *zfs_asprintf(libzfs_handle_t *, const char *, ...); +char *zfs_strdup(libzfs_handle_t *, const char *); +int no_memory(libzfs_handle_t *); + +int zfs_standard_error(libzfs_handle_t *, int, const char *); +int zfs_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); +int zpool_standard_error(libzfs_handle_t *, int, const char *); +int zpool_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); + +int get_dependents(libzfs_handle_t *, boolean_t, const char *, char ***, + size_t *); +zfs_handle_t *make_dataset_handle_zc(libzfs_handle_t *, zfs_cmd_t *); +zfs_handle_t *make_dataset_simple_handle_zc(zfs_handle_t *, zfs_cmd_t *); + +int zprop_parse_value(libzfs_handle_t *, nvpair_t *, int, zfs_type_t, + nvlist_t *, char **, uint64_t *, const char *); +int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, + zfs_type_t type); + +/* + * Use this changelist_gather() flag to force attempting mounts + * on each change node regardless of whether or not it is currently + * mounted. + */ +#define CL_GATHER_MOUNT_ALWAYS 1 + +typedef struct prop_changelist prop_changelist_t; + +int zcmd_alloc_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, size_t); +int zcmd_write_src_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); +int zcmd_write_conf_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); +int zcmd_expand_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *); +int zcmd_read_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t **); +void zcmd_free_nvlists(zfs_cmd_t *); + +int changelist_prefix(prop_changelist_t *); +int changelist_postfix(prop_changelist_t *); +void changelist_rename(prop_changelist_t *, const char *, const char *); +void changelist_remove(prop_changelist_t *, const char *); +void changelist_free(prop_changelist_t *); +prop_changelist_t *changelist_gather(zfs_handle_t *, zfs_prop_t, int, int); +int changelist_unshare(prop_changelist_t *, zfs_share_proto_t *); +int changelist_haszonedchild(prop_changelist_t *); + +void remove_mountpoint(zfs_handle_t *); +int create_parents(libzfs_handle_t *, char *, int); +boolean_t isa_child_of(const char *dataset, const char *parent); + +zfs_handle_t *make_dataset_handle(libzfs_handle_t *, const char *); +zfs_handle_t *make_bookmark_handle(zfs_handle_t *, const char *, + nvlist_t *props); + +int zpool_open_silent(libzfs_handle_t *, const char *, zpool_handle_t **); + +boolean_t zpool_name_valid(libzfs_handle_t *, boolean_t, const char *); + +int zfs_validate_name(libzfs_handle_t *hdl, const char *path, int type, + boolean_t modifying); + +void namespace_clear(libzfs_handle_t *); + +/* + * libshare (sharemgr) interfaces used internally. + */ + +extern int zfs_init_libshare(libzfs_handle_t *, int); +extern void zfs_uninit_libshare(libzfs_handle_t *); +extern int zfs_parse_options(char *, zfs_share_proto_t); + +extern int zfs_unshare_proto(zfs_handle_t *, + const char *, zfs_share_proto_t *); + +extern void libzfs_fru_clear(libzfs_handle_t *, boolean_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBZFS_IMPL_H */ --- linux-4.4.0.orig/zfs/include/linux/Makefile.am +++ linux-4.4.0/zfs/include/linux/Makefile.am @@ -0,0 +1,23 @@ +COMMON_H = + +KERNEL_H = \ + $(top_srcdir)/include/linux/dcache_compat.h \ + $(top_srcdir)/include/linux/xattr_compat.h \ + $(top_srcdir)/include/linux/vfs_compat.h \ + $(top_srcdir)/include/linux/blkdev_compat.h \ + $(top_srcdir)/include/linux/utsname_compat.h \ + $(top_srcdir)/include/linux/kmap_compat.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs/linux +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include/linux +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/linux/Makefile.in +++ linux-4.4.0/zfs/include/linux/Makefile.in @@ -0,0 +1,761 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/linux +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(libzfs_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/linux/dcache_compat.h \ + $(top_srcdir)/include/linux/xattr_compat.h \ + $(top_srcdir)/include/linux/vfs_compat.h \ + $(top_srcdir)/include/linux/blkdev_compat.h \ + $(top_srcdir)/include/linux/utsname_compat.h \ + $(top_srcdir)/include/linux/kmap_compat.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +COMMON_H = +KERNEL_H = \ + $(top_srcdir)/include/linux/dcache_compat.h \ + $(top_srcdir)/include/linux/xattr_compat.h \ + $(top_srcdir)/include/linux/vfs_compat.h \ + $(top_srcdir)/include/linux/blkdev_compat.h \ + $(top_srcdir)/include/linux/utsname_compat.h \ + $(top_srcdir)/include/linux/kmap_compat.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/linux +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/linux +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/linux/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/linux/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS \ + install-libzfsHEADERS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/linux/blkdev_compat.h +++ linux-4.4.0/zfs/include/linux/blkdev_compat.h @@ -0,0 +1,348 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * LLNL-CODE-403049. + */ + +#ifndef _ZFS_BLKDEV_H +#define _ZFS_BLKDEV_H + +#include +#include + +#ifndef HAVE_FMODE_T +typedef unsigned __bitwise__ fmode_t; +#endif /* HAVE_FMODE_T */ + +/* + * 2.6.36 API change, + * The blk_queue_flush() interface has replaced blk_queue_ordered() + * interface. However, while the old interface was available to all the + * new one is GPL-only. Thus if the GPL-only version is detected we + * implement our own trivial helper compatibility funcion. The hope is + * that long term this function will be opened up. + */ +#if defined(HAVE_BLK_QUEUE_FLUSH) && defined(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY) +#define blk_queue_flush __blk_queue_flush +static inline void +__blk_queue_flush(struct request_queue *q, unsigned int flags) +{ + q->flush_flags = flags & (REQ_FLUSH | REQ_FUA); +} +#endif /* HAVE_BLK_QUEUE_FLUSH && HAVE_BLK_QUEUE_FLUSH_GPL_ONLY */ +/* + * Most of the blk_* macros were removed in 2.6.36. Ostensibly this was + * done to improve readability and allow easier grepping. However, from + * a portability stand point the macros are helpful. Therefore the needed + * macros are redefined here if they are missing from the kernel. + */ +#ifndef blk_fs_request +#define blk_fs_request(rq) ((rq)->cmd_type == REQ_TYPE_FS) +#endif + +/* + * 2.6.27 API change, + * The blk_queue_stackable() queue flag was added in 2.6.27 to handle dm + * stacking drivers. Prior to this request stacking drivers were detected + * by checking (q->request_fn == NULL), for earlier kernels we revert to + * this legacy behavior. + */ +#ifndef blk_queue_stackable +#define blk_queue_stackable(q) ((q)->request_fn == NULL) +#endif + +/* + * 2.6.34 API change, + * The blk_queue_max_hw_sectors() function replaces blk_queue_max_sectors(). + */ +#ifndef HAVE_BLK_QUEUE_MAX_HW_SECTORS +#define blk_queue_max_hw_sectors __blk_queue_max_hw_sectors +static inline void +__blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_sectors) +{ + blk_queue_max_sectors(q, max_hw_sectors); +} +#endif + +/* + * 2.6.34 API change, + * The blk_queue_max_segments() function consolidates + * blk_queue_max_hw_segments() and blk_queue_max_phys_segments(). + */ +#ifndef HAVE_BLK_QUEUE_MAX_SEGMENTS +#define blk_queue_max_segments __blk_queue_max_segments +static inline void +__blk_queue_max_segments(struct request_queue *q, unsigned short max_segments) +{ + blk_queue_max_phys_segments(q, max_segments); + blk_queue_max_hw_segments(q, max_segments); +} +#endif + +#ifndef HAVE_GET_DISK_RO +static inline int +get_disk_ro(struct gendisk *disk) +{ + int policy = 0; + + if (disk->part[0]) + policy = disk->part[0]->policy; + + return (policy); +} +#endif /* HAVE_GET_DISK_RO */ + +#ifdef HAVE_BIO_BVEC_ITER +#define BIO_BI_SECTOR(bio) (bio)->bi_iter.bi_sector +#define BIO_BI_SIZE(bio) (bio)->bi_iter.bi_size +#define BIO_BI_IDX(bio) (bio)->bi_iter.bi_idx +#define bio_for_each_segment4(bv, bvp, b, i) \ + bio_for_each_segment((bv), (b), (i)) +typedef struct bvec_iter bvec_iterator_t; +#else +#define BIO_BI_SECTOR(bio) (bio)->bi_sector +#define BIO_BI_SIZE(bio) (bio)->bi_size +#define BIO_BI_IDX(bio) (bio)->bi_idx +#define bio_for_each_segment4(bv, bvp, b, i) \ + bio_for_each_segment((bvp), (b), (i)) +typedef int bvec_iterator_t; +#endif + +/* + * Portable helper for correctly setting the FAILFAST flags. The + * correct usage has changed 3 times from 2.6.12 to 2.6.38. + */ +static inline void +bio_set_flags_failfast(struct block_device *bdev, int *flags) +{ +#ifdef CONFIG_BUG + /* + * Disable FAILFAST for loopback devices because of the + * following incorrect BUG_ON() in loop_make_request(). + * This support is also disabled for md devices because the + * test suite layers md devices on top of loopback devices. + * This may be removed when the loopback driver is fixed. + * + * BUG_ON(!lo || (rw != READ && rw != WRITE)); + */ + if ((MAJOR(bdev->bd_dev) == LOOP_MAJOR) || + (MAJOR(bdev->bd_dev) == MD_MAJOR)) + return; + +#ifdef BLOCK_EXT_MAJOR + if (MAJOR(bdev->bd_dev) == BLOCK_EXT_MAJOR) + return; +#endif /* BLOCK_EXT_MAJOR */ +#endif /* CONFIG_BUG */ + +#if defined(HAVE_BIO_RW_FAILFAST_DTD) + /* BIO_RW_FAILFAST_* preferred interface from 2.6.28 - 2.6.35 */ + *flags |= ( + (1 << BIO_RW_FAILFAST_DEV) | + (1 << BIO_RW_FAILFAST_TRANSPORT) | + (1 << BIO_RW_FAILFAST_DRIVER)); +#elif defined(HAVE_REQ_FAILFAST_MASK) + /* + * REQ_FAILFAST_* preferred interface from 2.6.36 - 2.6.xx, + * the BIO_* and REQ_* flags were unified under REQ_* flags. + */ + *flags |= REQ_FAILFAST_MASK; +#else +#error "Undefined block IO FAILFAST interface." +#endif +} + +/* + * Maximum disk label length, it may be undefined for some kernels. + */ +#ifndef DISK_NAME_LEN +#define DISK_NAME_LEN 32 +#endif /* DISK_NAME_LEN */ + +/* + * 4.3 API change + * The bio_endio() prototype changed slightly. These are helper + * macro's to ensure the prototype and invocation are handled. + */ +#ifdef HAVE_1ARG_BIO_END_IO_T +#define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x) +#define BIO_END_IO(bio, error) bio->bi_error = error; bio_endio(bio); +#else +#define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x, int z) +#define BIO_END_IO(bio, error) bio_endio(bio, error); +#endif /* HAVE_1ARG_BIO_END_IO_T */ + +/* + * 2.6.38 - 2.6.x API, + * blkdev_get_by_path() + * blkdev_put() + * + * 2.6.28 - 2.6.37 API, + * open_bdev_exclusive() + * close_bdev_exclusive() + * + * 2.6.12 - 2.6.27 API, + * open_bdev_excl() + * close_bdev_excl() + * + * Used to exclusively open a block device from within the kernel. + */ +#if defined(HAVE_BLKDEV_GET_BY_PATH) +#define vdev_bdev_open(path, md, hld) blkdev_get_by_path(path, \ + (md) | FMODE_EXCL, hld) +#define vdev_bdev_close(bdev, md) blkdev_put(bdev, (md) | FMODE_EXCL) +#elif defined(HAVE_OPEN_BDEV_EXCLUSIVE) +#define vdev_bdev_open(path, md, hld) open_bdev_exclusive(path, md, hld) +#define vdev_bdev_close(bdev, md) close_bdev_exclusive(bdev, md) +#else +#define vdev_bdev_open(path, md, hld) open_bdev_excl(path, md, hld) +#define vdev_bdev_close(bdev, md) close_bdev_excl(bdev) +#endif /* HAVE_BLKDEV_GET_BY_PATH | HAVE_OPEN_BDEV_EXCLUSIVE */ + +/* + * 2.6.22 API change + * The function invalidate_bdev() lost it's second argument because + * it was unused. + */ +#ifdef HAVE_1ARG_INVALIDATE_BDEV +#define vdev_bdev_invalidate(bdev) invalidate_bdev(bdev) +#else +#define vdev_bdev_invalidate(bdev) invalidate_bdev(bdev, 1) +#endif /* HAVE_1ARG_INVALIDATE_BDEV */ + +/* + * 2.6.27 API change + * The function was exported for use, prior to this it existed by the + * symbol was not exported. + */ +#ifndef HAVE_LOOKUP_BDEV +#define lookup_bdev(path) ERR_PTR(-ENOTSUP) +#endif + +/* + * 2.6.30 API change + * To ensure good performance preferentially use the physical block size + * for proper alignment. The physical size is supposed to be the internal + * sector size used by the device. This is often 4096 byte for AF devices, + * while a smaller 512 byte logical size is supported for compatibility. + * + * Unfortunately, many drives still misreport their physical sector size. + * For devices which are known to lie you may need to manually set this + * at pool creation time with 'zpool create -o ashift=12 ...'. + * + * When the physical block size interface isn't available, we fall back to + * the logical block size interface and then the older hard sector size. + */ +#ifdef HAVE_BDEV_PHYSICAL_BLOCK_SIZE +#define vdev_bdev_block_size(bdev) bdev_physical_block_size(bdev) +#else +#ifdef HAVE_BDEV_LOGICAL_BLOCK_SIZE +#define vdev_bdev_block_size(bdev) bdev_logical_block_size(bdev) +#else +#define vdev_bdev_block_size(bdev) bdev_hardsect_size(bdev) +#endif /* HAVE_BDEV_LOGICAL_BLOCK_SIZE */ +#endif /* HAVE_BDEV_PHYSICAL_BLOCK_SIZE */ + +/* + * 2.6.37 API change + * The WRITE_FLUSH, WRITE_FUA, and WRITE_FLUSH_FUA flags have been + * introduced as a replacement for WRITE_BARRIER. This was done to + * allow richer semantics to be expressed to the block layer. It is + * the block layers responsibility to choose the correct way to + * implement these semantics. + * + * The existence of these flags implies that REQ_FLUSH an REQ_FUA are + * defined. Thus we can safely define VDEV_REQ_FLUSH and VDEV_REQ_FUA + * compatibility macros. + */ +#ifdef WRITE_FLUSH_FUA +#define VDEV_WRITE_FLUSH_FUA WRITE_FLUSH_FUA +#define VDEV_REQ_FLUSH REQ_FLUSH +#define VDEV_REQ_FUA REQ_FUA +#else +#define VDEV_WRITE_FLUSH_FUA WRITE_BARRIER +#ifdef HAVE_BIO_RW_BARRIER +#define VDEV_REQ_FLUSH (1 << BIO_RW_BARRIER) +#define VDEV_REQ_FUA (1 << BIO_RW_BARRIER) +#else +#define VDEV_REQ_FLUSH REQ_HARDBARRIER +#define VDEV_REQ_FUA REQ_FUA +#endif +#endif + +/* + * 2.6.32 API change + * Use the normal I/O patch for discards. + */ +#ifdef QUEUE_FLAG_DISCARD +#ifdef HAVE_BIO_RW_DISCARD +#define VDEV_REQ_DISCARD (1 << BIO_RW_DISCARD) +#else +#define VDEV_REQ_DISCARD REQ_DISCARD +#endif +#else +#error "Allowing the build will cause discard requests to become writes " + "potentially triggering the DMU_MAX_ACCESS assertion. Please file a " + "an issue report at: https://github.com/zfsonlinux/zfs/issues/new" +#endif + +/* + * 2.6.33 API change + * Discard granularity and alignment restrictions may now be set. For + * older kernels which do not support this it is safe to skip it. + */ +#ifdef HAVE_DISCARD_GRANULARITY +static inline void +blk_queue_discard_granularity(struct request_queue *q, unsigned int dg) +{ + q->limits.discard_granularity = dg; +} +#else +#define blk_queue_discard_granularity(x, dg) ((void)0) +#endif /* HAVE_DISCARD_GRANULARITY */ + +/* + * Default Linux IO Scheduler, + * Setting the scheduler to noop will allow the Linux IO scheduler to + * still perform front and back merging, while leaving the request + * ordering and prioritization to the ZFS IO scheduler. + */ +#define VDEV_SCHEDULER "noop" + +/* + * A common holder for vdev_bdev_open() is used to relax the exclusive open + * semantics slightly. Internal vdev disk callers may pass VDEV_HOLDER to + * allow them to open the device multiple times. Other kernel callers and + * user space processes which don't pass this value will get EBUSY. This is + * currently required for the correct operation of hot spares. + */ +#define VDEV_HOLDER ((void *)0x2401de7) + +#ifndef HAVE_GENERIC_IO_ACCT +#define generic_start_io_acct(rw, slen, part) ((void)0) +#define generic_end_io_acct(rw, part, start_jiffies) ((void)0) +#endif + +#endif /* _ZFS_BLKDEV_H */ --- linux-4.4.0.orig/zfs/include/linux/dcache_compat.h +++ linux-4.4.0/zfs/include/linux/dcache_compat.h @@ -0,0 +1,83 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + */ + +#ifndef _ZFS_DCACHE_H +#define _ZFS_DCACHE_H + +#include + +#define dname(dentry) ((char *)((dentry)->d_name.name)) +#define dlen(dentry) ((int)((dentry)->d_name.len)) + +#ifndef HAVE_D_MAKE_ROOT +#define d_make_root(inode) d_alloc_root(inode) +#endif /* HAVE_D_MAKE_ROOT */ + +/* + * 2.6.30 API change, + * The const keyword was added to the 'struct dentry_operations' in + * the dentry structure. To handle this we define an appropriate + * dentry_operations_t typedef which can be used. + */ +#ifdef HAVE_CONST_DENTRY_OPERATIONS +typedef const struct dentry_operations dentry_operations_t; +#else +typedef struct dentry_operations dentry_operations_t; +#endif + +/* + * 2.6.38 API change, + * Added d_set_d_op() helper function which sets some flags in + * dentry->d_flags based on which operations are defined. + */ +#ifndef HAVE_D_SET_D_OP +static inline void +d_set_d_op(struct dentry *dentry, dentry_operations_t *op) +{ + dentry->d_op = op; +} +#endif /* HAVE_D_SET_D_OP */ + +/* + * 2.6.38 API addition, + * Added d_clear_d_op() helper function which clears some flags and the + * registered dentry->d_op table. This is required because d_set_d_op() + * issues a warning when the dentry operations table is already set. + * For the .zfs control directory to work properly we must be able to + * override the default operations table and register custom .d_automount + * and .d_revalidate callbacks. + */ +static inline void +d_clear_d_op(struct dentry *dentry) +{ +#ifdef HAVE_D_SET_D_OP + dentry->d_op = NULL; + dentry->d_flags &= ~( + DCACHE_OP_HASH | DCACHE_OP_COMPARE | + DCACHE_OP_REVALIDATE | DCACHE_OP_DELETE); +#endif /* HAVE_D_SET_D_OP */ +} + +#endif /* _ZFS_DCACHE_H */ --- linux-4.4.0.orig/zfs/include/linux/kmap_compat.h +++ linux-4.4.0/zfs/include/linux/kmap_compat.h @@ -0,0 +1,40 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + +#ifndef _ZFS_KMAP_H +#define _ZFS_KMAP_H + +#include + +#ifdef HAVE_1ARG_KMAP_ATOMIC +/* 2.6.37 API change */ +#define zfs_kmap_atomic(page, km_type) kmap_atomic(page) +#define zfs_kunmap_atomic(addr, km_type) kunmap_atomic(addr) +#else +#define zfs_kmap_atomic(page, km_type) kmap_atomic(page, km_type) +#define zfs_kunmap_atomic(addr, km_type) kunmap_atomic(addr, km_type) +#endif + +#endif /* _ZFS_KMAP_H */ --- linux-4.4.0.orig/zfs/include/linux/utsname_compat.h +++ linux-4.4.0/zfs/include/linux/utsname_compat.h @@ -0,0 +1,29 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#ifndef _ZFS_UTSNAME_H +#define _ZFS_UTSNAME_H + +#include + +typedef struct new_utsname utsname_t; + +#endif /* _ZFS_UTSNAME_H */ --- linux-4.4.0.orig/zfs/include/linux/vfs_compat.h +++ linux-4.4.0/zfs/include/linux/vfs_compat.h @@ -0,0 +1,366 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Copyright (C) 2015 Jörg Thalheim. + */ + +#ifndef _ZFS_VFS_H +#define _ZFS_VFS_H + +#include +#include + +/* + * 2.6.28 API change, + * Added insert_inode_locked() helper function, prior to this most callers + * used insert_inode_hash(). The older method doesn't check for collisions + * in the inode_hashtable but it still acceptible for use. + */ +#ifndef HAVE_INSERT_INODE_LOCKED +static inline int +insert_inode_locked(struct inode *ip) +{ + insert_inode_hash(ip); + return (0); +} +#endif /* HAVE_INSERT_INODE_LOCKED */ + +/* + * 2.6.35 API change, + * Add truncate_setsize() if it is not exported by the Linux kernel. + * + * Truncate the inode and pages associated with the inode. The pages are + * unmapped and removed from cache. + */ +#ifndef HAVE_TRUNCATE_SETSIZE +static inline void +truncate_setsize(struct inode *ip, loff_t new) +{ + struct address_space *mapping = ip->i_mapping; + + i_size_write(ip, new); + + unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); + truncate_inode_pages(mapping, new); + unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); +} +#endif /* HAVE_TRUNCATE_SETSIZE */ + +/* + * 2.6.32 - 2.6.33, bdi_setup_and_register() is not available. + * 2.6.34 - 3.19, bdi_setup_and_register() takes 3 arguments. + * 4.0 - x.y, bdi_setup_and_register() takes 2 arguments. + */ +#if defined(HAVE_2ARGS_BDI_SETUP_AND_REGISTER) +static inline int +zpl_bdi_setup_and_register(struct backing_dev_info *bdi, char *name) +{ + return (bdi_setup_and_register(bdi, name)); +} +#elif defined(HAVE_3ARGS_BDI_SETUP_AND_REGISTER) +static inline int +zpl_bdi_setup_and_register(struct backing_dev_info *bdi, char *name) +{ + return (bdi_setup_and_register(bdi, name, BDI_CAP_MAP_COPY)); +} +#else +extern atomic_long_t zfs_bdi_seq; + +static inline int +zpl_bdi_setup_and_register(struct backing_dev_info *bdi, char *name) +{ + char tmp[32]; + int error; + + bdi->name = name; + bdi->capabilities = BDI_CAP_MAP_COPY; + + error = bdi_init(bdi); + if (error) + return (error); + + sprintf(tmp, "%.28s%s", name, "-%d"); + error = bdi_register(bdi, NULL, tmp, + atomic_long_inc_return(&zfs_bdi_seq)); + if (error) { + bdi_destroy(bdi); + return (error); + } + + return (error); +} +#endif + +/* + * 2.6.38 API change, + * LOOKUP_RCU flag introduced to distinguish rcu-walk from ref-walk cases. + */ +#ifndef LOOKUP_RCU +#define LOOKUP_RCU 0x0 +#endif /* LOOKUP_RCU */ + +/* + * 3.2-rc1 API change, + * Add set_nlink() if it is not exported by the Linux kernel. + * + * i_nlink is read-only in Linux 3.2, but it can be set directly in + * earlier kernels. + */ +#ifndef HAVE_SET_NLINK +static inline void +set_nlink(struct inode *inode, unsigned int nlink) +{ + inode->i_nlink = nlink; +} +#endif /* HAVE_SET_NLINK */ + +/* + * 3.3 API change, + * The VFS .create, .mkdir and .mknod callbacks were updated to take a + * umode_t type rather than an int. To cleanly handle both definitions + * the zpl_umode_t type is introduced and set accordingly. + */ +#ifdef HAVE_MKDIR_UMODE_T +typedef umode_t zpl_umode_t; +#else +typedef int zpl_umode_t; +#endif + +/* + * 3.5 API change, + * The clear_inode() function replaces end_writeback() and introduces an + * ordering change regarding when the inode_sync_wait() occurs. See the + * configure check in config/kernel-clear-inode.m4 for full details. + */ +#if defined(HAVE_EVICT_INODE) && !defined(HAVE_CLEAR_INODE) +#define clear_inode(ip) end_writeback(ip) +#endif /* HAVE_EVICT_INODE && !HAVE_CLEAR_INODE */ + +/* + * 3.6 API change, + * The sget() helper function now takes the mount flags as an argument. + */ +#ifdef HAVE_5ARG_SGET +#define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, fl, mtd) +#else +#define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, mtd) +#endif /* HAVE_5ARG_SGET */ + +#if defined(SEEK_HOLE) && defined(SEEK_DATA) && !defined(HAVE_LSEEK_EXECUTE) +static inline loff_t +lseek_execute( + struct file *filp, + struct inode *inode, + loff_t offset, + loff_t maxsize) +{ + if (offset < 0 && !(filp->f_mode & FMODE_UNSIGNED_OFFSET)) + return (-EINVAL); + + if (offset > maxsize) + return (-EINVAL); + + if (offset != filp->f_pos) { + spin_lock(&filp->f_lock); + filp->f_pos = offset; + filp->f_version = 0; + spin_unlock(&filp->f_lock); + } + + return (offset); +} +#endif /* SEEK_HOLE && SEEK_DATA && !HAVE_LSEEK_EXECUTE */ + +#if defined(CONFIG_FS_POSIX_ACL) +/* + * These functions safely approximates the behavior of posix_acl_release() + * which cannot be used because it calls the GPL-only symbol kfree_rcu(). + * The in-kernel version, which can access the RCU, frees the ACLs after + * the grace period expires. Because we're unsure how long that grace + * period may be this implementation conservatively delays for 60 seconds. + * This is several orders of magnitude larger than expected grace period. + * At 60 seconds the kernel will also begin issuing RCU stall warnings. + */ +#include +#ifndef HAVE_POSIX_ACL_CACHING +#define ACL_NOT_CACHED ((void *)(-1)) +#endif /* HAVE_POSIX_ACL_CACHING */ + +#if defined(HAVE_POSIX_ACL_RELEASE) && !defined(HAVE_POSIX_ACL_RELEASE_GPL_ONLY) + +#define zpl_posix_acl_release(arg) posix_acl_release(arg) +#define zpl_set_cached_acl(ip, ty, n) set_cached_acl(ip, ty, n) +#define zpl_forget_cached_acl(ip, ty) forget_cached_acl(ip, ty) + +#else + +static inline void +zpl_posix_acl_free(void *arg) { + kfree(arg); +} + +static inline void +zpl_posix_acl_release(struct posix_acl *acl) +{ + if ((acl == NULL) || (acl == ACL_NOT_CACHED)) + return; + + if (atomic_dec_and_test(&acl->a_refcount)) { + taskq_dispatch_delay(system_taskq, zpl_posix_acl_free, acl, + TQ_SLEEP, ddi_get_lbolt() + 60*HZ); + } +} + +static inline void +zpl_set_cached_acl(struct inode *ip, int type, struct posix_acl *newer) { +#ifdef HAVE_POSIX_ACL_CACHING + struct posix_acl *older = NULL; + + spin_lock(&ip->i_lock); + + if ((newer != ACL_NOT_CACHED) && (newer != NULL)) + posix_acl_dup(newer); + + switch (type) { + case ACL_TYPE_ACCESS: + older = ip->i_acl; + rcu_assign_pointer(ip->i_acl, newer); + break; + case ACL_TYPE_DEFAULT: + older = ip->i_default_acl; + rcu_assign_pointer(ip->i_default_acl, newer); + break; + } + + spin_unlock(&ip->i_lock); + + zpl_posix_acl_release(older); +#endif /* HAVE_POSIX_ACL_CACHING */ +} + +static inline void +zpl_forget_cached_acl(struct inode *ip, int type) { + zpl_set_cached_acl(ip, type, (struct posix_acl *)ACL_NOT_CACHED); +} +#endif /* HAVE_POSIX_ACL_RELEASE */ + +#ifndef HAVE___POSIX_ACL_CHMOD +#ifdef HAVE_POSIX_ACL_CHMOD +#define __posix_acl_chmod(acl, gfp, mode) posix_acl_chmod(acl, gfp, mode) +#define __posix_acl_create(acl, gfp, mode) posix_acl_create(acl, gfp, mode) +#else +static inline int +__posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) { + struct posix_acl *oldacl = *acl; + mode_t mode = umode; + int error; + + *acl = posix_acl_clone(*acl, flags); + zpl_posix_acl_release(oldacl); + + if (!(*acl)) + return (-ENOMEM); + + error = posix_acl_chmod_masq(*acl, mode); + if (error) { + zpl_posix_acl_release(*acl); + *acl = NULL; + } + + return (error); +} + +static inline int +__posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) { + struct posix_acl *oldacl = *acl; + mode_t mode = *umodep; + int error; + + *acl = posix_acl_clone(*acl, flags); + zpl_posix_acl_release(oldacl); + + if (!(*acl)) + return (-ENOMEM); + + error = posix_acl_create_masq(*acl, &mode); + *umodep = mode; + + if (error < 0) { + zpl_posix_acl_release(*acl); + *acl = NULL; + } + + return (error); +} +#endif /* HAVE_POSIX_ACL_CHMOD */ +#endif /* HAVE___POSIX_ACL_CHMOD */ + +#ifdef HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T +typedef umode_t zpl_equivmode_t; +#else +typedef mode_t zpl_equivmode_t; +#endif /* HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T */ +#endif /* CONFIG_FS_POSIX_ACL */ + +#ifndef HAVE_CURRENT_UMASK +static inline int +current_umask(void) +{ + return (current->fs->umask); +} +#endif /* HAVE_CURRENT_UMASK */ + +/* + * 2.6.38 API change, + * The is_owner_or_cap() function was renamed to inode_owner_or_capable(). + */ +#ifdef HAVE_INODE_OWNER_OR_CAPABLE +#define zpl_inode_owner_or_capable(ip) inode_owner_or_capable(ip) +#else +#define zpl_inode_owner_or_capable(ip) is_owner_or_cap(ip) +#endif /* HAVE_INODE_OWNER_OR_CAPABLE */ + +/* + * 3.19 API change + * struct access f->f_dentry->d_inode was replaced by accessor function + * file_inode(f) + */ +#ifndef HAVE_FILE_INODE +static inline struct inode *file_inode(const struct file *f) +{ + return (f->f_dentry->d_inode); +} +#endif /* HAVE_FILE_INODE */ + +/* + * 2.6.38 API change + */ +#ifdef HAVE_FOLLOW_DOWN_ONE +#define zpl_follow_down_one(path) follow_down_one(path) +#define zpl_follow_up(path) follow_up(path) +#else +#define zpl_follow_down_one(path) follow_down(path) +#define zpl_follow_up(path) follow_up(path) +#endif + +#endif /* _ZFS_VFS_H */ --- linux-4.4.0.orig/zfs/include/linux/xattr_compat.h +++ linux-4.4.0/zfs/include/linux/xattr_compat.h @@ -0,0 +1,158 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + */ + +#ifndef _ZFS_XATTR_H +#define _ZFS_XATTR_H + +#include + +/* + * 2.6.35 API change, + * The const keyword was added to the 'struct xattr_handler' in the + * generic Linux super_block structure. To handle this we define an + * appropriate xattr_handler_t typedef which can be used. This was + * the preferred solution because it keeps the code clean and readable. + */ +#ifdef HAVE_CONST_XATTR_HANDLER +typedef const struct xattr_handler xattr_handler_t; +#else +typedef struct xattr_handler xattr_handler_t; +#endif + +/* + * 2.6.33 API change, + * The xattr_hander->get() callback was changed to take a dentry + * instead of an inode, and a handler_flags argument was added. + */ +#ifdef HAVE_DENTRY_XATTR_GET +#define ZPL_XATTR_GET_WRAPPER(fn) \ +static int \ +fn(struct dentry *dentry, const char *name, void *buffer, size_t size, \ + int unused_handler_flags) \ +{ \ + return (__ ## fn(dentry->d_inode, name, buffer, size)); \ +} +/* + * 4.4 API change, + * The xattr_hander->get() callback was changed to take a xattr_handler, + * and handler_flags argument was removed and should be accessed by + * handler->flags. + */ +#elif defined(HAVE_HANDLER_XATTR_GET) +#define ZPL_XATTR_GET_WRAPPER(fn) \ +static int \ +fn(const struct xattr_handler *handler, struct dentry *dentry, \ + const char *name, void *buffer, size_t size) \ +{ \ + return (__ ## fn(dentry->d_inode, name, buffer, size)); \ +} +#else +#define ZPL_XATTR_GET_WRAPPER(fn) \ +static int \ +fn(struct inode *ip, const char *name, void *buffer, size_t size) \ +{ \ + return (__ ## fn(ip, name, buffer, size)); \ +} +#endif /* HAVE_DENTRY_XATTR_GET */ + +/* + * 2.6.33 API change, + * The xattr_hander->set() callback was changed to take a dentry + * instead of an inode, and a handler_flags argument was added. + */ +#ifdef HAVE_DENTRY_XATTR_SET +#define ZPL_XATTR_SET_WRAPPER(fn) \ +static int \ +fn(struct dentry *dentry, const char *name, const void *buffer, \ + size_t size, int flags, int unused_handler_flags) \ +{ \ + return (__ ## fn(dentry->d_inode, name, buffer, size, flags)); \ +} +/* + * 4.4 API change, + * The xattr_hander->set() callback was changed to take a xattr_handler, + * and handler_flags argument was removed and should be accessed by + * handler->flags. + */ +#elif defined(HAVE_HANDLER_XATTR_SET) +#define ZPL_XATTR_SET_WRAPPER(fn) \ +static int \ +fn(const struct xattr_handler *handler, struct dentry *dentry, \ + const char *name, const void *buffer, size_t size, int flags) \ +{ \ + return (__ ## fn(dentry->d_inode, name, buffer, size, flags)); \ +} +#else +#define ZPL_XATTR_SET_WRAPPER(fn) \ +static int \ +fn(struct inode *ip, const char *name, const void *buffer, \ + size_t size, int flags) \ +{ \ + return (__ ## fn(ip, name, buffer, size, flags)); \ +} +#endif /* HAVE_DENTRY_XATTR_SET */ + +#ifdef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY +#define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len) \ + security_inode_init_security(ip, dip, qstr, nm, val, len) +#else +#define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len) \ + security_inode_init_security(ip, dip, nm, val, len) +#endif /* HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY */ + +/* + * Linux 3.7 API change. posix_acl_{from,to}_xattr gained the user_ns + * parameter. For the HAVE_POSIX_ACL_FROM_XATTR_USERNS version the + * userns _may_ not be correct because it's used outside the RCU. + */ +#ifdef HAVE_POSIX_ACL_FROM_XATTR_USERNS +static inline struct posix_acl * +zpl_acl_from_xattr(const void *value, int size) +{ + return (posix_acl_from_xattr(CRED()->user_ns, value, size)); +} + +static inline int +zpl_acl_to_xattr(struct posix_acl *acl, void *value, int size) +{ + return (posix_acl_to_xattr(CRED()->user_ns, acl, value, size)); +} + +#else + +static inline struct posix_acl * +zpl_acl_from_xattr(const void *value, int size) +{ + return (posix_acl_from_xattr(value, size)); +} + +static inline int +zpl_acl_to_xattr(struct posix_acl *acl, void *value, int size) +{ + return (posix_acl_to_xattr(acl, value, size)); +} +#endif /* HAVE_POSIX_ACL_FROM_XATTR_USERNS */ + +#endif /* _ZFS_XATTR_H */ --- linux-4.4.0.orig/zfs/include/sys/Makefile.am +++ linux-4.4.0/zfs/include/sys/Makefile.am @@ -0,0 +1,119 @@ +SUBDIRS = fm fs + +COMMON_H = \ + $(top_srcdir)/include/sys/arc.h \ + $(top_srcdir)/include/sys/arc_impl.h \ + $(top_srcdir)/include/sys/avl.h \ + $(top_srcdir)/include/sys/avl_impl.h \ + $(top_srcdir)/include/sys/blkptr.h \ + $(top_srcdir)/include/sys/bplist.h \ + $(top_srcdir)/include/sys/bpobj.h \ + $(top_srcdir)/include/sys/bptree.h \ + $(top_srcdir)/include/sys/dbuf.h \ + $(top_srcdir)/include/sys/ddt.h \ + $(top_srcdir)/include/sys/dmu.h \ + $(top_srcdir)/include/sys/dmu_impl.h \ + $(top_srcdir)/include/sys/dmu_objset.h \ + $(top_srcdir)/include/sys/dmu_send.h \ + $(top_srcdir)/include/sys/dmu_traverse.h \ + $(top_srcdir)/include/sys/dmu_tx.h \ + $(top_srcdir)/include/sys/dmu_zfetch.h \ + $(top_srcdir)/include/sys/dnode.h \ + $(top_srcdir)/include/sys/dsl_bookmark.h \ + $(top_srcdir)/include/sys/dsl_dataset.h \ + $(top_srcdir)/include/sys/dsl_deadlist.h \ + $(top_srcdir)/include/sys/dsl_deleg.h \ + $(top_srcdir)/include/sys/dsl_destroy.h \ + $(top_srcdir)/include/sys/dsl_dir.h \ + $(top_srcdir)/include/sys/dsl_pool.h \ + $(top_srcdir)/include/sys/dsl_prop.h \ + $(top_srcdir)/include/sys/dsl_scan.h \ + $(top_srcdir)/include/sys/dsl_synctask.h \ + $(top_srcdir)/include/sys/dsl_userhold.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/metaslab.h \ + $(top_srcdir)/include/sys/metaslab_impl.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/multilist.h \ + $(top_srcdir)/include/sys/nvpair.h \ + $(top_srcdir)/include/sys/nvpair_impl.h \ + $(top_srcdir)/include/sys/range_tree.h \ + $(top_srcdir)/include/sys/refcount.h \ + $(top_srcdir)/include/sys/rrwlock.h \ + $(top_srcdir)/include/sys/sa.h \ + $(top_srcdir)/include/sys/sa_impl.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/spa_boot.h \ + $(top_srcdir)/include/sys/space_map.h \ + $(top_srcdir)/include/sys/space_reftree.h \ + $(top_srcdir)/include/sys/spa.h \ + $(top_srcdir)/include/sys/spa_impl.h \ + $(top_srcdir)/include/sys/trace.h \ + $(top_srcdir)/include/sys/trace_acl.h \ + $(top_srcdir)/include/sys/trace_arc.h \ + $(top_srcdir)/include/sys/trace_dbgmsg.h \ + $(top_srcdir)/include/sys/trace_dbuf.h \ + $(top_srcdir)/include/sys/trace_dmu.h \ + $(top_srcdir)/include/sys/trace_dnode.h \ + $(top_srcdir)/include/sys/trace_multilist.h \ + $(top_srcdir)/include/sys/trace_txg.h \ + $(top_srcdir)/include/sys/trace_zil.h \ + $(top_srcdir)/include/sys/trace_zrlock.h \ + $(top_srcdir)/include/sys/txg.h \ + $(top_srcdir)/include/sys/txg_impl.h \ + $(top_srcdir)/include/sys/u8_textprep_data.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uberblock.h \ + $(top_srcdir)/include/sys/uberblock_impl.h \ + $(top_srcdir)/include/sys/uio_impl.h \ + $(top_srcdir)/include/sys/unique.h \ + $(top_srcdir)/include/sys/uuid.h \ + $(top_srcdir)/include/sys/vdev_disk.h \ + $(top_srcdir)/include/sys/vdev_file.h \ + $(top_srcdir)/include/sys/vdev.h \ + $(top_srcdir)/include/sys/vdev_impl.h \ + $(top_srcdir)/include/sys/xvattr.h \ + $(top_srcdir)/include/sys/zap.h \ + $(top_srcdir)/include/sys/zap_impl.h \ + $(top_srcdir)/include/sys/zap_leaf.h \ + $(top_srcdir)/include/sys/zfeature.h \ + $(top_srcdir)/include/sys/zfs_acl.h \ + $(top_srcdir)/include/sys/zfs_context.h \ + $(top_srcdir)/include/sys/zfs_ctldir.h \ + $(top_srcdir)/include/sys/zfs_debug.h \ + $(top_srcdir)/include/sys/zfs_delay.h \ + $(top_srcdir)/include/sys/zfs_dir.h \ + $(top_srcdir)/include/sys/zfs_fuid.h \ + $(top_srcdir)/include/sys/zfs_rlock.h \ + $(top_srcdir)/include/sys/zfs_sa.h \ + $(top_srcdir)/include/sys/zfs_stat.h \ + $(top_srcdir)/include/sys/zfs_vfsops.h \ + $(top_srcdir)/include/sys/zfs_vnops.h \ + $(top_srcdir)/include/sys/zfs_znode.h \ + $(top_srcdir)/include/sys/zil.h \ + $(top_srcdir)/include/sys/zil_impl.h \ + $(top_srcdir)/include/sys/zio_checksum.h \ + $(top_srcdir)/include/sys/zio_compress.h \ + $(top_srcdir)/include/sys/zio.h \ + $(top_srcdir)/include/sys/zio_impl.h \ + $(top_srcdir)/include/sys/zrlock.h + +KERNEL_H = \ + $(top_srcdir)/include/sys/zfs_ioctl.h \ + $(top_srcdir)/include/sys/zfs_onexit.h \ + ${top_srcdir}/include/sys/zpl.h \ + $(top_srcdir)/include/sys/zvol.h + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs/sys +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/sys/Makefile.in +++ linux-4.4.0/zfs/include/sys/Makefile.in @@ -0,0 +1,1163 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__libzfs_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/arc.h \ + $(top_srcdir)/include/sys/arc_impl.h \ + $(top_srcdir)/include/sys/avl.h \ + $(top_srcdir)/include/sys/avl_impl.h \ + $(top_srcdir)/include/sys/blkptr.h \ + $(top_srcdir)/include/sys/bplist.h \ + $(top_srcdir)/include/sys/bpobj.h \ + $(top_srcdir)/include/sys/bptree.h \ + $(top_srcdir)/include/sys/dbuf.h \ + $(top_srcdir)/include/sys/ddt.h \ + $(top_srcdir)/include/sys/dmu.h \ + $(top_srcdir)/include/sys/dmu_impl.h \ + $(top_srcdir)/include/sys/dmu_objset.h \ + $(top_srcdir)/include/sys/dmu_send.h \ + $(top_srcdir)/include/sys/dmu_traverse.h \ + $(top_srcdir)/include/sys/dmu_tx.h \ + $(top_srcdir)/include/sys/dmu_zfetch.h \ + $(top_srcdir)/include/sys/dnode.h \ + $(top_srcdir)/include/sys/dsl_bookmark.h \ + $(top_srcdir)/include/sys/dsl_dataset.h \ + $(top_srcdir)/include/sys/dsl_deadlist.h \ + $(top_srcdir)/include/sys/dsl_deleg.h \ + $(top_srcdir)/include/sys/dsl_destroy.h \ + $(top_srcdir)/include/sys/dsl_dir.h \ + $(top_srcdir)/include/sys/dsl_pool.h \ + $(top_srcdir)/include/sys/dsl_prop.h \ + $(top_srcdir)/include/sys/dsl_scan.h \ + $(top_srcdir)/include/sys/dsl_synctask.h \ + $(top_srcdir)/include/sys/dsl_userhold.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/metaslab.h \ + $(top_srcdir)/include/sys/metaslab_impl.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/multilist.h \ + $(top_srcdir)/include/sys/nvpair.h \ + $(top_srcdir)/include/sys/nvpair_impl.h \ + $(top_srcdir)/include/sys/range_tree.h \ + $(top_srcdir)/include/sys/refcount.h \ + $(top_srcdir)/include/sys/rrwlock.h \ + $(top_srcdir)/include/sys/sa.h \ + $(top_srcdir)/include/sys/sa_impl.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/spa_boot.h \ + $(top_srcdir)/include/sys/space_map.h \ + $(top_srcdir)/include/sys/space_reftree.h \ + $(top_srcdir)/include/sys/spa.h \ + $(top_srcdir)/include/sys/spa_impl.h \ + $(top_srcdir)/include/sys/trace.h \ + $(top_srcdir)/include/sys/trace_acl.h \ + $(top_srcdir)/include/sys/trace_arc.h \ + $(top_srcdir)/include/sys/trace_dbgmsg.h \ + $(top_srcdir)/include/sys/trace_dbuf.h \ + $(top_srcdir)/include/sys/trace_dmu.h \ + $(top_srcdir)/include/sys/trace_dnode.h \ + $(top_srcdir)/include/sys/trace_multilist.h \ + $(top_srcdir)/include/sys/trace_txg.h \ + $(top_srcdir)/include/sys/trace_zil.h \ + $(top_srcdir)/include/sys/trace_zrlock.h \ + $(top_srcdir)/include/sys/txg.h \ + $(top_srcdir)/include/sys/txg_impl.h \ + $(top_srcdir)/include/sys/u8_textprep_data.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uberblock.h \ + $(top_srcdir)/include/sys/uberblock_impl.h \ + $(top_srcdir)/include/sys/uio_impl.h \ + $(top_srcdir)/include/sys/unique.h \ + $(top_srcdir)/include/sys/uuid.h \ + $(top_srcdir)/include/sys/vdev_disk.h \ + $(top_srcdir)/include/sys/vdev_file.h \ + $(top_srcdir)/include/sys/vdev.h \ + $(top_srcdir)/include/sys/vdev_impl.h \ + $(top_srcdir)/include/sys/xvattr.h \ + $(top_srcdir)/include/sys/zap.h \ + $(top_srcdir)/include/sys/zap_impl.h \ + $(top_srcdir)/include/sys/zap_leaf.h \ + $(top_srcdir)/include/sys/zfeature.h \ + $(top_srcdir)/include/sys/zfs_acl.h \ + $(top_srcdir)/include/sys/zfs_context.h \ + $(top_srcdir)/include/sys/zfs_ctldir.h \ + $(top_srcdir)/include/sys/zfs_debug.h \ + $(top_srcdir)/include/sys/zfs_delay.h \ + $(top_srcdir)/include/sys/zfs_dir.h \ + $(top_srcdir)/include/sys/zfs_fuid.h \ + $(top_srcdir)/include/sys/zfs_rlock.h \ + $(top_srcdir)/include/sys/zfs_sa.h \ + $(top_srcdir)/include/sys/zfs_stat.h \ + $(top_srcdir)/include/sys/zfs_vfsops.h \ + $(top_srcdir)/include/sys/zfs_vnops.h \ + $(top_srcdir)/include/sys/zfs_znode.h \ + $(top_srcdir)/include/sys/zil.h \ + $(top_srcdir)/include/sys/zil_impl.h \ + $(top_srcdir)/include/sys/zio_checksum.h \ + $(top_srcdir)/include/sys/zio_compress.h \ + $(top_srcdir)/include/sys/zio.h \ + $(top_srcdir)/include/sys/zio_impl.h \ + $(top_srcdir)/include/sys/zrlock.h \ + $(top_srcdir)/include/sys/zfs_ioctl.h \ + $(top_srcdir)/include/sys/zfs_onexit.h \ + ${top_srcdir}/include/sys/zpl.h \ + $(top_srcdir)/include/sys/zvol.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/arc.h \ + $(top_srcdir)/include/sys/arc_impl.h \ + $(top_srcdir)/include/sys/avl.h \ + $(top_srcdir)/include/sys/avl_impl.h \ + $(top_srcdir)/include/sys/blkptr.h \ + $(top_srcdir)/include/sys/bplist.h \ + $(top_srcdir)/include/sys/bpobj.h \ + $(top_srcdir)/include/sys/bptree.h \ + $(top_srcdir)/include/sys/dbuf.h \ + $(top_srcdir)/include/sys/ddt.h \ + $(top_srcdir)/include/sys/dmu.h \ + $(top_srcdir)/include/sys/dmu_impl.h \ + $(top_srcdir)/include/sys/dmu_objset.h \ + $(top_srcdir)/include/sys/dmu_send.h \ + $(top_srcdir)/include/sys/dmu_traverse.h \ + $(top_srcdir)/include/sys/dmu_tx.h \ + $(top_srcdir)/include/sys/dmu_zfetch.h \ + $(top_srcdir)/include/sys/dnode.h \ + $(top_srcdir)/include/sys/dsl_bookmark.h \ + $(top_srcdir)/include/sys/dsl_dataset.h \ + $(top_srcdir)/include/sys/dsl_deadlist.h \ + $(top_srcdir)/include/sys/dsl_deleg.h \ + $(top_srcdir)/include/sys/dsl_destroy.h \ + $(top_srcdir)/include/sys/dsl_dir.h \ + $(top_srcdir)/include/sys/dsl_pool.h \ + $(top_srcdir)/include/sys/dsl_prop.h \ + $(top_srcdir)/include/sys/dsl_scan.h \ + $(top_srcdir)/include/sys/dsl_synctask.h \ + $(top_srcdir)/include/sys/dsl_userhold.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/metaslab.h \ + $(top_srcdir)/include/sys/metaslab_impl.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/multilist.h \ + $(top_srcdir)/include/sys/nvpair.h \ + $(top_srcdir)/include/sys/nvpair_impl.h \ + $(top_srcdir)/include/sys/range_tree.h \ + $(top_srcdir)/include/sys/refcount.h \ + $(top_srcdir)/include/sys/rrwlock.h \ + $(top_srcdir)/include/sys/sa.h \ + $(top_srcdir)/include/sys/sa_impl.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/spa_boot.h \ + $(top_srcdir)/include/sys/space_map.h \ + $(top_srcdir)/include/sys/space_reftree.h \ + $(top_srcdir)/include/sys/spa.h \ + $(top_srcdir)/include/sys/spa_impl.h \ + $(top_srcdir)/include/sys/trace.h \ + $(top_srcdir)/include/sys/trace_acl.h \ + $(top_srcdir)/include/sys/trace_arc.h \ + $(top_srcdir)/include/sys/trace_dbgmsg.h \ + $(top_srcdir)/include/sys/trace_dbuf.h \ + $(top_srcdir)/include/sys/trace_dmu.h \ + $(top_srcdir)/include/sys/trace_dnode.h \ + $(top_srcdir)/include/sys/trace_multilist.h \ + $(top_srcdir)/include/sys/trace_txg.h \ + $(top_srcdir)/include/sys/trace_zil.h \ + $(top_srcdir)/include/sys/trace_zrlock.h \ + $(top_srcdir)/include/sys/txg.h \ + $(top_srcdir)/include/sys/txg_impl.h \ + $(top_srcdir)/include/sys/u8_textprep_data.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uberblock.h \ + $(top_srcdir)/include/sys/uberblock_impl.h \ + $(top_srcdir)/include/sys/uio_impl.h \ + $(top_srcdir)/include/sys/unique.h \ + $(top_srcdir)/include/sys/uuid.h \ + $(top_srcdir)/include/sys/vdev_disk.h \ + $(top_srcdir)/include/sys/vdev_file.h \ + $(top_srcdir)/include/sys/vdev.h \ + $(top_srcdir)/include/sys/vdev_impl.h \ + $(top_srcdir)/include/sys/xvattr.h \ + $(top_srcdir)/include/sys/zap.h \ + $(top_srcdir)/include/sys/zap_impl.h \ + $(top_srcdir)/include/sys/zap_leaf.h \ + $(top_srcdir)/include/sys/zfeature.h \ + $(top_srcdir)/include/sys/zfs_acl.h \ + $(top_srcdir)/include/sys/zfs_context.h \ + $(top_srcdir)/include/sys/zfs_ctldir.h \ + $(top_srcdir)/include/sys/zfs_debug.h \ + $(top_srcdir)/include/sys/zfs_delay.h \ + $(top_srcdir)/include/sys/zfs_dir.h \ + $(top_srcdir)/include/sys/zfs_fuid.h \ + $(top_srcdir)/include/sys/zfs_rlock.h \ + $(top_srcdir)/include/sys/zfs_sa.h \ + $(top_srcdir)/include/sys/zfs_stat.h \ + $(top_srcdir)/include/sys/zfs_vfsops.h \ + $(top_srcdir)/include/sys/zfs_vnops.h \ + $(top_srcdir)/include/sys/zfs_znode.h \ + $(top_srcdir)/include/sys/zil.h \ + $(top_srcdir)/include/sys/zil_impl.h \ + $(top_srcdir)/include/sys/zio_checksum.h \ + $(top_srcdir)/include/sys/zio_compress.h \ + $(top_srcdir)/include/sys/zio.h \ + $(top_srcdir)/include/sys/zio_impl.h \ + $(top_srcdir)/include/sys/zrlock.h +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +SUBDIRS = fm fs +COMMON_H = \ + $(top_srcdir)/include/sys/arc.h \ + $(top_srcdir)/include/sys/arc_impl.h \ + $(top_srcdir)/include/sys/avl.h \ + $(top_srcdir)/include/sys/avl_impl.h \ + $(top_srcdir)/include/sys/blkptr.h \ + $(top_srcdir)/include/sys/bplist.h \ + $(top_srcdir)/include/sys/bpobj.h \ + $(top_srcdir)/include/sys/bptree.h \ + $(top_srcdir)/include/sys/dbuf.h \ + $(top_srcdir)/include/sys/ddt.h \ + $(top_srcdir)/include/sys/dmu.h \ + $(top_srcdir)/include/sys/dmu_impl.h \ + $(top_srcdir)/include/sys/dmu_objset.h \ + $(top_srcdir)/include/sys/dmu_send.h \ + $(top_srcdir)/include/sys/dmu_traverse.h \ + $(top_srcdir)/include/sys/dmu_tx.h \ + $(top_srcdir)/include/sys/dmu_zfetch.h \ + $(top_srcdir)/include/sys/dnode.h \ + $(top_srcdir)/include/sys/dsl_bookmark.h \ + $(top_srcdir)/include/sys/dsl_dataset.h \ + $(top_srcdir)/include/sys/dsl_deadlist.h \ + $(top_srcdir)/include/sys/dsl_deleg.h \ + $(top_srcdir)/include/sys/dsl_destroy.h \ + $(top_srcdir)/include/sys/dsl_dir.h \ + $(top_srcdir)/include/sys/dsl_pool.h \ + $(top_srcdir)/include/sys/dsl_prop.h \ + $(top_srcdir)/include/sys/dsl_scan.h \ + $(top_srcdir)/include/sys/dsl_synctask.h \ + $(top_srcdir)/include/sys/dsl_userhold.h \ + $(top_srcdir)/include/sys/efi_partition.h \ + $(top_srcdir)/include/sys/metaslab.h \ + $(top_srcdir)/include/sys/metaslab_impl.h \ + $(top_srcdir)/include/sys/mntent.h \ + $(top_srcdir)/include/sys/multilist.h \ + $(top_srcdir)/include/sys/nvpair.h \ + $(top_srcdir)/include/sys/nvpair_impl.h \ + $(top_srcdir)/include/sys/range_tree.h \ + $(top_srcdir)/include/sys/refcount.h \ + $(top_srcdir)/include/sys/rrwlock.h \ + $(top_srcdir)/include/sys/sa.h \ + $(top_srcdir)/include/sys/sa_impl.h \ + $(top_srcdir)/include/sys/sdt.h \ + $(top_srcdir)/include/sys/spa_boot.h \ + $(top_srcdir)/include/sys/space_map.h \ + $(top_srcdir)/include/sys/space_reftree.h \ + $(top_srcdir)/include/sys/spa.h \ + $(top_srcdir)/include/sys/spa_impl.h \ + $(top_srcdir)/include/sys/trace.h \ + $(top_srcdir)/include/sys/trace_acl.h \ + $(top_srcdir)/include/sys/trace_arc.h \ + $(top_srcdir)/include/sys/trace_dbgmsg.h \ + $(top_srcdir)/include/sys/trace_dbuf.h \ + $(top_srcdir)/include/sys/trace_dmu.h \ + $(top_srcdir)/include/sys/trace_dnode.h \ + $(top_srcdir)/include/sys/trace_multilist.h \ + $(top_srcdir)/include/sys/trace_txg.h \ + $(top_srcdir)/include/sys/trace_zil.h \ + $(top_srcdir)/include/sys/trace_zrlock.h \ + $(top_srcdir)/include/sys/txg.h \ + $(top_srcdir)/include/sys/txg_impl.h \ + $(top_srcdir)/include/sys/u8_textprep_data.h \ + $(top_srcdir)/include/sys/u8_textprep.h \ + $(top_srcdir)/include/sys/uberblock.h \ + $(top_srcdir)/include/sys/uberblock_impl.h \ + $(top_srcdir)/include/sys/uio_impl.h \ + $(top_srcdir)/include/sys/unique.h \ + $(top_srcdir)/include/sys/uuid.h \ + $(top_srcdir)/include/sys/vdev_disk.h \ + $(top_srcdir)/include/sys/vdev_file.h \ + $(top_srcdir)/include/sys/vdev.h \ + $(top_srcdir)/include/sys/vdev_impl.h \ + $(top_srcdir)/include/sys/xvattr.h \ + $(top_srcdir)/include/sys/zap.h \ + $(top_srcdir)/include/sys/zap_impl.h \ + $(top_srcdir)/include/sys/zap_leaf.h \ + $(top_srcdir)/include/sys/zfeature.h \ + $(top_srcdir)/include/sys/zfs_acl.h \ + $(top_srcdir)/include/sys/zfs_context.h \ + $(top_srcdir)/include/sys/zfs_ctldir.h \ + $(top_srcdir)/include/sys/zfs_debug.h \ + $(top_srcdir)/include/sys/zfs_delay.h \ + $(top_srcdir)/include/sys/zfs_dir.h \ + $(top_srcdir)/include/sys/zfs_fuid.h \ + $(top_srcdir)/include/sys/zfs_rlock.h \ + $(top_srcdir)/include/sys/zfs_sa.h \ + $(top_srcdir)/include/sys/zfs_stat.h \ + $(top_srcdir)/include/sys/zfs_vfsops.h \ + $(top_srcdir)/include/sys/zfs_vnops.h \ + $(top_srcdir)/include/sys/zfs_znode.h \ + $(top_srcdir)/include/sys/zil.h \ + $(top_srcdir)/include/sys/zil_impl.h \ + $(top_srcdir)/include/sys/zio_checksum.h \ + $(top_srcdir)/include/sys/zio_compress.h \ + $(top_srcdir)/include/sys/zio.h \ + $(top_srcdir)/include/sys/zio_impl.h \ + $(top_srcdir)/include/sys/zrlock.h + +KERNEL_H = \ + $(top_srcdir)/include/sys/zfs_ioctl.h \ + $(top_srcdir)/include/sys/zfs_onexit.h \ + ${top_srcdir}/include/sys/zpl.h \ + $(top_srcdir)/include/sys/zvol.h + +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-kernelHEADERS install-libzfsHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/sys/arc.h +++ linux-4.4.0/zfs/include/sys/arc.h @@ -0,0 +1,230 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +#ifndef _SYS_ARC_H +#define _SYS_ARC_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +/* + * Used by arc_flush() to inform arc_evict_state() that it should evict + * all available buffers from the arc state being passed in. + */ +#define ARC_EVICT_ALL -1ULL + +typedef struct arc_buf_hdr arc_buf_hdr_t; +typedef struct arc_buf arc_buf_t; +typedef struct arc_prune arc_prune_t; +typedef void arc_done_func_t(zio_t *zio, arc_buf_t *buf, void *private); +typedef void arc_prune_func_t(int64_t bytes, void *private); +typedef int arc_evict_func_t(void *private); + +/* Shared module parameters */ +extern int zfs_arc_average_blocksize; + +/* generic arc_done_func_t's which you can use */ +arc_done_func_t arc_bcopy_func; +arc_done_func_t arc_getbuf_func; + +/* generic arc_prune_func_t wrapper for callbacks */ +struct arc_prune { + arc_prune_func_t *p_pfunc; + void *p_private; + uint64_t p_adjust; + list_node_t p_node; + refcount_t p_refcnt; +}; + +typedef enum arc_strategy { + ARC_STRATEGY_META_ONLY = 0, /* Evict only meta data buffers */ + ARC_STRATEGY_META_BALANCED = 1, /* Evict data buffers if needed */ +} arc_strategy_t; + +typedef enum arc_flags +{ + /* + * Public flags that can be passed into the ARC by external consumers. + */ + ARC_FLAG_NONE = 1 << 0, /* No flags set */ + ARC_FLAG_WAIT = 1 << 1, /* perform sync I/O */ + ARC_FLAG_NOWAIT = 1 << 2, /* perform async I/O */ + ARC_FLAG_PREFETCH = 1 << 3, /* I/O is a prefetch */ + ARC_FLAG_CACHED = 1 << 4, /* I/O was in cache */ + ARC_FLAG_L2CACHE = 1 << 5, /* cache in L2ARC */ + ARC_FLAG_L2COMPRESS = 1 << 6, /* compress in L2ARC */ + + /* + * Private ARC flags. These flags are private ARC only flags that + * will show up in b_flags in the arc_hdr_buf_t. These flags should + * only be set by ARC code. + */ + ARC_FLAG_IN_HASH_TABLE = 1 << 7, /* buffer is hashed */ + ARC_FLAG_IO_IN_PROGRESS = 1 << 8, /* I/O in progress */ + ARC_FLAG_IO_ERROR = 1 << 9, /* I/O failed for buf */ + ARC_FLAG_FREED_IN_READ = 1 << 10, /* freed during read */ + ARC_FLAG_BUF_AVAILABLE = 1 << 11, /* block not in use */ + ARC_FLAG_INDIRECT = 1 << 12, /* indirect block */ + ARC_FLAG_L2_WRITING = 1 << 13, /* write in progress */ + ARC_FLAG_L2_EVICTED = 1 << 14, /* evicted during I/O */ + ARC_FLAG_L2_WRITE_HEAD = 1 << 15, /* head of write list */ + /* indicates that the buffer contains metadata (otherwise, data) */ + ARC_FLAG_BUFC_METADATA = 1 << 16, + + /* Flags specifying whether optional hdr struct fields are defined */ + ARC_FLAG_HAS_L1HDR = 1 << 17, + ARC_FLAG_HAS_L2HDR = 1 << 18, +} arc_flags_t; + +struct arc_buf { + arc_buf_hdr_t *b_hdr; + arc_buf_t *b_next; + kmutex_t b_evict_lock; + void *b_data; + arc_evict_func_t *b_efunc; + void *b_private; +}; + +typedef enum arc_buf_contents { + ARC_BUFC_DATA, /* buffer contains data */ + ARC_BUFC_METADATA, /* buffer contains metadata */ + ARC_BUFC_NUMTYPES +} arc_buf_contents_t; + +/* + * The following breakdows of arc_size exist for kstat only. + */ +typedef enum arc_space_type { + ARC_SPACE_DATA, + ARC_SPACE_META, + ARC_SPACE_HDRS, + ARC_SPACE_L2HDRS, + ARC_SPACE_OTHER, + ARC_SPACE_NUMTYPES +} arc_space_type_t; + +typedef enum arc_state_type { + ARC_STATE_ANON, + ARC_STATE_MRU, + ARC_STATE_MRU_GHOST, + ARC_STATE_MFU, + ARC_STATE_MFU_GHOST, + ARC_STATE_L2C_ONLY, + ARC_STATE_NUMTYPES +} arc_state_type_t; + +typedef struct arc_buf_info { + arc_state_type_t abi_state_type; + arc_buf_contents_t abi_state_contents; + uint32_t abi_flags; + uint32_t abi_datacnt; + uint64_t abi_size; + uint64_t abi_spa; + uint64_t abi_access; + uint32_t abi_mru_hits; + uint32_t abi_mru_ghost_hits; + uint32_t abi_mfu_hits; + uint32_t abi_mfu_ghost_hits; + uint32_t abi_l2arc_hits; + uint32_t abi_holds; + uint64_t abi_l2arc_dattr; + uint64_t abi_l2arc_asize; + enum zio_compress abi_l2arc_compress; +} arc_buf_info_t; + +void arc_space_consume(uint64_t space, arc_space_type_t type); +void arc_space_return(uint64_t space, arc_space_type_t type); +arc_buf_t *arc_buf_alloc(spa_t *spa, uint64_t size, void *tag, + arc_buf_contents_t type); +arc_buf_t *arc_loan_buf(spa_t *spa, uint64_t size); +void arc_return_buf(arc_buf_t *buf, void *tag); +void arc_loan_inuse_buf(arc_buf_t *buf, void *tag); +void arc_buf_add_ref(arc_buf_t *buf, void *tag); +boolean_t arc_buf_remove_ref(arc_buf_t *buf, void *tag); +void arc_buf_info(arc_buf_t *buf, arc_buf_info_t *abi, int state_index); +uint64_t arc_buf_size(arc_buf_t *buf); +void arc_release(arc_buf_t *buf, void *tag); +int arc_released(arc_buf_t *buf); +void arc_buf_sigsegv(int sig, siginfo_t *si, void *unused); +void arc_buf_freeze(arc_buf_t *buf); +void arc_buf_thaw(arc_buf_t *buf); +boolean_t arc_buf_eviction_needed(arc_buf_t *buf); +#ifdef ZFS_DEBUG +int arc_referenced(arc_buf_t *buf); +#endif + +int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, + arc_done_func_t *done, void *private, zio_priority_t priority, int flags, + arc_flags_t *arc_flags, const zbookmark_phys_t *zb); +zio_t *arc_write(zio_t *pio, spa_t *spa, uint64_t txg, + blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone, + arc_done_func_t *done, void *private, zio_priority_t priority, + int zio_flags, const zbookmark_phys_t *zb); + +arc_prune_t *arc_add_prune_callback(arc_prune_func_t *func, void *private); +void arc_remove_prune_callback(arc_prune_t *p); +void arc_freed(spa_t *spa, const blkptr_t *bp); + +void arc_set_callback(arc_buf_t *buf, arc_evict_func_t *func, void *private); +boolean_t arc_clear_callback(arc_buf_t *buf); + +void arc_flush(spa_t *spa, boolean_t retry); +void arc_tempreserve_clear(uint64_t reserve); +int arc_tempreserve_space(uint64_t reserve, uint64_t txg); + +void arc_init(void); +void arc_fini(void); + +/* + * Level 2 ARC + */ + +void l2arc_add_vdev(spa_t *spa, vdev_t *vd); +void l2arc_remove_vdev(vdev_t *vd); +boolean_t l2arc_vdev_present(vdev_t *vd); +void l2arc_init(void); +void l2arc_fini(void); +void l2arc_start(void); +void l2arc_stop(void); + +#ifndef _KERNEL +extern boolean_t arc_watch; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ARC_H */ --- linux-4.4.0.orig/zfs/include/sys/arc_impl.h +++ linux-4.4.0/zfs/include/sys/arc_impl.h @@ -0,0 +1,228 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + */ + +#ifndef _SYS_ARC_IMPL_H +#define _SYS_ARC_IMPL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Note that buffers can be in one of 6 states: + * ARC_anon - anonymous (discussed below) + * ARC_mru - recently used, currently cached + * ARC_mru_ghost - recentely used, no longer in cache + * ARC_mfu - frequently used, currently cached + * ARC_mfu_ghost - frequently used, no longer in cache + * ARC_l2c_only - exists in L2ARC but not other states + * When there are no active references to the buffer, they are + * are linked onto a list in one of these arc states. These are + * the only buffers that can be evicted or deleted. Within each + * state there are multiple lists, one for meta-data and one for + * non-meta-data. Meta-data (indirect blocks, blocks of dnodes, + * etc.) is tracked separately so that it can be managed more + * explicitly: favored over data, limited explicitly. + * + * Anonymous buffers are buffers that are not associated with + * a DVA. These are buffers that hold dirty block copies + * before they are written to stable storage. By definition, + * they are "ref'd" and are considered part of arc_mru + * that cannot be freed. Generally, they will aquire a DVA + * as they are written and migrate onto the arc_mru list. + * + * The ARC_l2c_only state is for buffers that are in the second + * level ARC but no longer in any of the ARC_m* lists. The second + * level ARC itself may also contain buffers that are in any of + * the ARC_m* states - meaning that a buffer can exist in two + * places. The reason for the ARC_l2c_only state is to keep the + * buffer header in the hash table, so that reads that hit the + * second level ARC benefit from these fast lookups. + */ + +typedef struct arc_state { + /* + * list of evictable buffers + */ + multilist_t arcs_list[ARC_BUFC_NUMTYPES]; + /* + * total amount of evictable data in this state + */ + uint64_t arcs_lsize[ARC_BUFC_NUMTYPES]; + /* + * total amount of data in this state; this includes: evictable, + * non-evictable, ARC_BUFC_DATA, and ARC_BUFC_METADATA. + */ + refcount_t arcs_size; + /* + * supports the "dbufs" kstat + */ + arc_state_type_t arcs_state; +} arc_state_t; + +typedef struct arc_callback arc_callback_t; + +struct arc_callback { + void *acb_private; + arc_done_func_t *acb_done; + arc_buf_t *acb_buf; + zio_t *acb_zio_dummy; + arc_callback_t *acb_next; +}; + +typedef struct arc_write_callback arc_write_callback_t; + +struct arc_write_callback { + void *awcb_private; + arc_done_func_t *awcb_ready; + arc_done_func_t *awcb_physdone; + arc_done_func_t *awcb_done; + arc_buf_t *awcb_buf; +}; + +/* + * ARC buffers are separated into multiple structs as a memory saving measure: + * - Common fields struct, always defined, and embedded within it: + * - L2-only fields, always allocated but undefined when not in L2ARC + * - L1-only fields, only allocated when in L1ARC + * + * Buffer in L1 Buffer only in L2 + * +------------------------+ +------------------------+ + * | arc_buf_hdr_t | | arc_buf_hdr_t | + * | | | | + * | | | | + * | | | | + * +------------------------+ +------------------------+ + * | l2arc_buf_hdr_t | | l2arc_buf_hdr_t | + * | (undefined if L1-only) | | | + * +------------------------+ +------------------------+ + * | l1arc_buf_hdr_t | + * | | + * | | + * | | + * | | + * +------------------------+ + * + * Because it's possible for the L2ARC to become extremely large, we can wind + * up eating a lot of memory in L2ARC buffer headers, so the size of a header + * is minimized by only allocating the fields necessary for an L1-cached buffer + * when a header is actually in the L1 cache. The sub-headers (l1arc_buf_hdr and + * l2arc_buf_hdr) are embedded rather than allocated separately to save a couple + * words in pointers. arc_hdr_realloc() is used to switch a header between + * these two allocation states. + */ +typedef struct l1arc_buf_hdr { + kmutex_t b_freeze_lock; + + arc_buf_t *b_buf; + uint32_t b_datacnt; + /* for waiting on writes to complete */ + kcondvar_t b_cv; + + + /* protected by arc state mutex */ + arc_state_t *b_state; + multilist_node_t b_arc_node; + + /* updated atomically */ + clock_t b_arc_access; + uint32_t b_mru_hits; + uint32_t b_mru_ghost_hits; + uint32_t b_mfu_hits; + uint32_t b_mfu_ghost_hits; + uint32_t b_l2_hits; + + /* self protecting */ + refcount_t b_refcnt; + + arc_callback_t *b_acb; + /* temporary buffer holder for in-flight compressed data */ + void *b_tmp_cdata; +} l1arc_buf_hdr_t; + +typedef struct l2arc_dev { + vdev_t *l2ad_vdev; /* vdev */ + spa_t *l2ad_spa; /* spa */ + uint64_t l2ad_hand; /* next write location */ + uint64_t l2ad_start; /* first addr on device */ + uint64_t l2ad_end; /* last addr on device */ + boolean_t l2ad_first; /* first sweep through */ + boolean_t l2ad_writing; /* currently writing */ + kmutex_t l2ad_mtx; /* lock for buffer list */ + list_t l2ad_buflist; /* buffer list */ + list_node_t l2ad_node; /* device list node */ + refcount_t l2ad_alloc; /* allocated bytes */ +} l2arc_dev_t; + +typedef struct l2arc_buf_hdr { + /* protected by arc_buf_hdr mutex */ + l2arc_dev_t *b_dev; /* L2ARC device */ + uint64_t b_daddr; /* disk address, offset byte */ + /* real alloc'd buffer size depending on b_compress applied */ + uint32_t b_hits; + int32_t b_asize; + uint8_t b_compress; + + list_node_t b_l2node; +} l2arc_buf_hdr_t; + +typedef struct l2arc_write_callback { + l2arc_dev_t *l2wcb_dev; /* device info */ + arc_buf_hdr_t *l2wcb_head; /* head of write buflist */ +} l2arc_write_callback_t; + +struct arc_buf_hdr { + /* protected by hash lock */ + dva_t b_dva; + uint64_t b_birth; + /* + * Even though this checksum is only set/verified when a buffer is in + * the L1 cache, it needs to be in the set of common fields because it + * must be preserved from the time before a buffer is written out to + * L2ARC until after it is read back in. + */ + zio_cksum_t *b_freeze_cksum; + + arc_buf_hdr_t *b_hash_next; + arc_flags_t b_flags; + + /* immutable */ + int32_t b_size; + uint64_t b_spa; + + /* L2ARC fields. Undefined when not in L2ARC. */ + l2arc_buf_hdr_t b_l2hdr; + /* L1ARC fields. Undefined when in l2arc_only state */ + l1arc_buf_hdr_t b_l1hdr; +}; +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ARC_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/avl.h +++ linux-4.4.0/zfs/include/sys/avl.h @@ -0,0 +1,318 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2014 by Delphix. All rights reserved. + */ + +#ifndef _AVL_H +#define _AVL_H + +/* + * This is a private header file. Applications should not directly include + * this file. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * This is a generic implementation of AVL trees for use in the Solaris kernel. + * The interfaces provide an efficient way of implementing an ordered set of + * data structures. + * + * AVL trees provide an alternative to using an ordered linked list. Using AVL + * trees will usually be faster, however they requires more storage. An ordered + * linked list in general requires 2 pointers in each data structure. The + * AVL tree implementation uses 3 pointers. The following chart gives the + * approximate performance of operations with the different approaches: + * + * Operation Link List AVL tree + * --------- -------- -------- + * lookup O(n) O(log(n)) + * + * insert 1 node constant constant + * + * delete 1 node constant between constant and O(log(n)) + * + * delete all nodes O(n) O(n) + * + * visit the next + * or prev node constant between constant and O(log(n)) + * + * + * The data structure nodes are anchored at an "avl_tree_t" (the equivalent + * of a list header) and the individual nodes will have a field of + * type "avl_node_t" (corresponding to list pointers). + * + * The type "avl_index_t" is used to indicate a position in the list for + * certain calls. + * + * The usage scenario is generally: + * + * 1. Create the list/tree with: avl_create() + * + * followed by any mixture of: + * + * 2a. Insert nodes with: avl_add(), or avl_find() and avl_insert() + * + * 2b. Visited elements with: + * avl_first() - returns the lowest valued node + * avl_last() - returns the highest valued node + * AVL_NEXT() - given a node go to next higher one + * AVL_PREV() - given a node go to previous lower one + * + * 2c. Find the node with the closest value either less than or greater + * than a given value with avl_nearest(). + * + * 2d. Remove individual nodes from the list/tree with avl_remove(). + * + * and finally when the list is being destroyed + * + * 3. Use avl_destroy_nodes() to quickly process/free up any remaining nodes. + * Note that once you use avl_destroy_nodes(), you can no longer + * use any routine except avl_destroy_nodes() and avl_destoy(). + * + * 4. Use avl_destroy() to destroy the AVL tree itself. + * + * Any locking for multiple thread access is up to the user to provide, just + * as is needed for any linked list implementation. + */ + + +/* + * Type used for the root of the AVL tree. + */ +typedef struct avl_tree avl_tree_t; + +/* + * The data nodes in the AVL tree must have a field of this type. + */ +typedef struct avl_node avl_node_t; + +/* + * An opaque type used to locate a position in the tree where a node + * would be inserted. + */ +typedef uintptr_t avl_index_t; + + +/* + * Direction constants used for avl_nearest(). + */ +#define AVL_BEFORE (0) +#define AVL_AFTER (1) + + +/* + * Prototypes + * + * Where not otherwise mentioned, "void *" arguments are a pointer to the + * user data structure which must contain a field of type avl_node_t. + * + * Also assume the user data structures looks like: + * stuct my_type { + * ... + * avl_node_t my_link; + * ... + * }; + */ + +/* + * Initialize an AVL tree. Arguments are: + * + * tree - the tree to be initialized + * compar - function to compare two nodes, it must return exactly: -1, 0, or +1 + * -1 for <, 0 for ==, and +1 for > + * size - the value of sizeof(struct my_type) + * offset - the value of OFFSETOF(struct my_type, my_link) + */ +extern void avl_create(avl_tree_t *tree, + int (*compar) (const void *, const void *), size_t size, size_t offset); + + +/* + * Find a node with a matching value in the tree. Returns the matching node + * found. If not found, it returns NULL and then if "where" is not NULL it sets + * "where" for use with avl_insert() or avl_nearest(). + * + * node - node that has the value being looked for + * where - position for use with avl_nearest() or avl_insert(), may be NULL + */ +extern void *avl_find(avl_tree_t *tree, const void *node, avl_index_t *where); + +/* + * Insert a node into the tree. + * + * node - the node to insert + * where - position as returned from avl_find() + */ +extern void avl_insert(avl_tree_t *tree, void *node, avl_index_t where); + +/* + * Insert "new_data" in "tree" in the given "direction" either after + * or before the data "here". + * + * This might be useful for avl clients caching recently accessed + * data to avoid doing avl_find() again for insertion. + * + * new_data - new data to insert + * here - existing node in "tree" + * direction - either AVL_AFTER or AVL_BEFORE the data "here". + */ +extern void avl_insert_here(avl_tree_t *tree, void *new_data, void *here, + int direction); + + +/* + * Return the first or last valued node in the tree. Will return NULL + * if the tree is empty. + * + */ +extern void *avl_first(avl_tree_t *tree); +extern void *avl_last(avl_tree_t *tree); + + +/* + * Return the next or previous valued node in the tree. + * AVL_NEXT() will return NULL if at the last node. + * AVL_PREV() will return NULL if at the first node. + * + * node - the node from which the next or previous node is found + */ +#define AVL_NEXT(tree, node) avl_walk(tree, node, AVL_AFTER) +#define AVL_PREV(tree, node) avl_walk(tree, node, AVL_BEFORE) + + +/* + * Find the node with the nearest value either greater or less than + * the value from a previous avl_find(). Returns the node or NULL if + * there isn't a matching one. + * + * where - position as returned from avl_find() + * direction - either AVL_BEFORE or AVL_AFTER + * + * EXAMPLE get the greatest node that is less than a given value: + * + * avl_tree_t *tree; + * struct my_data look_for_value = {....}; + * struct my_data *node; + * struct my_data *less; + * avl_index_t where; + * + * node = avl_find(tree, &look_for_value, &where); + * if (node != NULL) + * less = AVL_PREV(tree, node); + * else + * less = avl_nearest(tree, where, AVL_BEFORE); + */ +extern void *avl_nearest(avl_tree_t *tree, avl_index_t where, int direction); + + +/* + * Add a single node to the tree. + * The node must not be in the tree, and it must not + * compare equal to any other node already in the tree. + * + * node - the node to add + */ +extern void avl_add(avl_tree_t *tree, void *node); + + +/* + * Remove a single node from the tree. The node must be in the tree. + * + * node - the node to remove + */ +extern void avl_remove(avl_tree_t *tree, void *node); + +/* + * Reinsert a node only if its order has changed relative to its nearest + * neighbors. To optimize performance avl_update_lt() checks only the previous + * node and avl_update_gt() checks only the next node. Use avl_update_lt() and + * avl_update_gt() only if you know the direction in which the order of the + * node may change. + */ +extern boolean_t avl_update(avl_tree_t *, void *); +extern boolean_t avl_update_lt(avl_tree_t *, void *); +extern boolean_t avl_update_gt(avl_tree_t *, void *); + +/* + * Swaps the contents of the two trees. + */ +extern void avl_swap(avl_tree_t *tree1, avl_tree_t *tree2); + +/* + * Return the number of nodes in the tree + */ +extern ulong_t avl_numnodes(avl_tree_t *tree); + +/* + * Return B_TRUE if there are zero nodes in the tree, B_FALSE otherwise. + */ +extern boolean_t avl_is_empty(avl_tree_t *tree); + +/* + * Used to destroy any remaining nodes in a tree. The cookie argument should + * be initialized to NULL before the first call. Returns a node that has been + * removed from the tree and may be free()'d. Returns NULL when the tree is + * empty. + * + * Once you call avl_destroy_nodes(), you can only continuing calling it and + * finally avl_destroy(). No other AVL routines will be valid. + * + * cookie - a "void *" used to save state between calls to avl_destroy_nodes() + * + * EXAMPLE: + * avl_tree_t *tree; + * struct my_data *node; + * void *cookie; + * + * cookie = NULL; + * while ((node = avl_destroy_nodes(tree, &cookie)) != NULL) + * free(node); + * avl_destroy(tree); + */ +extern void *avl_destroy_nodes(avl_tree_t *tree, void **cookie); + + +/* + * Final destroy of an AVL tree. Arguments are: + * + * tree - the empty tree to destroy + */ +extern void avl_destroy(avl_tree_t *tree); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _AVL_H */ --- linux-4.4.0.orig/zfs/include/sys/avl_impl.h +++ linux-4.4.0/zfs/include/sys/avl_impl.h @@ -0,0 +1,164 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _AVL_IMPL_H +#define _AVL_IMPL_H + + + +/* + * This is a private header file. Applications should not directly include + * this file. + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * generic AVL tree implementation for kernel use + * + * There are 5 pieces of information stored for each node in an AVL tree + * + * pointer to less than child + * pointer to greater than child + * a pointer to the parent of this node + * an indication [0/1] of which child I am of my parent + * a "balance" (-1, 0, +1) indicating which child tree is taller + * + * Since they only need 3 bits, the last two fields are packed into the + * bottom bits of the parent pointer on 64 bit machines to save on space. + */ + +#ifndef _LP64 + +struct avl_node { + struct avl_node *avl_child[2]; /* left/right children */ + struct avl_node *avl_parent; /* this node's parent */ + unsigned short avl_child_index; /* my index in parent's avl_child[] */ + short avl_balance; /* balance value: -1, 0, +1 */ +}; + +#define AVL_XPARENT(n) ((n)->avl_parent) +#define AVL_SETPARENT(n, p) ((n)->avl_parent = (p)) + +#define AVL_XCHILD(n) ((n)->avl_child_index) +#define AVL_SETCHILD(n, c) ((n)->avl_child_index = (unsigned short)(c)) + +#define AVL_XBALANCE(n) ((n)->avl_balance) +#define AVL_SETBALANCE(n, b) ((n)->avl_balance = (short)(b)) + +#else /* _LP64 */ + +/* + * for 64 bit machines, avl_pcb contains parent pointer, balance and child_index + * values packed in the following manner: + * + * |63 3| 2 |1 0 | + * |-------------------------------------|-----------------|-------------| + * | avl_parent hi order bits | avl_child_index | avl_balance | + * | | | + 1 | + * |-------------------------------------|-----------------|-------------| + * + */ +struct avl_node { + struct avl_node *avl_child[2]; /* left/right children nodes */ + uintptr_t avl_pcb; /* parent, child_index, balance */ +}; + +/* + * macros to extract/set fields in avl_pcb + * + * pointer to the parent of the current node is the high order bits + */ +#define AVL_XPARENT(n) ((struct avl_node *)((n)->avl_pcb & ~7)) +#define AVL_SETPARENT(n, p) \ + ((n)->avl_pcb = (((n)->avl_pcb & 7) | (uintptr_t)(p))) + +/* + * index of this node in its parent's avl_child[]: bit #2 + */ +#define AVL_XCHILD(n) (((n)->avl_pcb >> 2) & 1) +#define AVL_SETCHILD(n, c) \ + ((n)->avl_pcb = (uintptr_t)(((n)->avl_pcb & ~4) | ((c) << 2))) + +/* + * balance indication for a node, lowest 2 bits. A valid balance is + * -1, 0, or +1, and is encoded by adding 1 to the value to get the + * unsigned values of 0, 1, 2. + */ +#define AVL_XBALANCE(n) ((int)(((n)->avl_pcb & 3) - 1)) +#define AVL_SETBALANCE(n, b) \ + ((n)->avl_pcb = (uintptr_t)((((n)->avl_pcb & ~3) | ((b) + 1)))) + +#endif /* _LP64 */ + + + +/* + * switch between a node and data pointer for a given tree + * the value of "o" is tree->avl_offset + */ +#define AVL_NODE2DATA(n, o) ((void *)((uintptr_t)(n) - (o))) +#define AVL_DATA2NODE(d, o) ((struct avl_node *)((uintptr_t)(d) + (o))) + + + +/* + * macros used to create/access an avl_index_t + */ +#define AVL_INDEX2NODE(x) ((avl_node_t *)((x) & ~1)) +#define AVL_INDEX2CHILD(x) ((x) & 1) +#define AVL_MKINDEX(n, c) ((avl_index_t)(n) | (c)) + + +/* + * The tree structure. The fields avl_root, avl_compar, and avl_offset come + * first since they are needed for avl_find(). We want them to fit into + * a single 64 byte cache line to make avl_find() as fast as possible. + */ +struct avl_tree { + struct avl_node *avl_root; /* root node in tree */ + int (*avl_compar)(const void *, const void *); + size_t avl_offset; /* offsetof(type, avl_link_t field) */ + ulong_t avl_numnodes; /* number of nodes in the tree */ + size_t avl_size; /* sizeof user type struct */ +}; + + +/* + * This will only by used via AVL_NEXT() or AVL_PREV() + */ +extern void *avl_walk(struct avl_tree *, void *, int); + +#ifdef __cplusplus +} +#endif + +#endif /* _AVL_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/blkptr.h +++ linux-4.4.0/zfs/include/sys/blkptr.h @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_BLKPTR_H +#define _SYS_BLKPTR_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void encode_embedded_bp_compressed(blkptr_t *, void *, + enum zio_compress, int, int); +void decode_embedded_bp_compressed(const blkptr_t *, void *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_BLKPTR_H */ --- linux-4.4.0.orig/zfs/include/sys/bplist.h +++ linux-4.4.0/zfs/include/sys/bplist.h @@ -0,0 +1,57 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_BPLIST_H +#define _SYS_BPLIST_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct bplist_entry { + blkptr_t bpe_blk; + list_node_t bpe_node; +} bplist_entry_t; + +typedef struct bplist { + kmutex_t bpl_lock; + list_t bpl_list; +} bplist_t; + +typedef int bplist_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); + +void bplist_create(bplist_t *bpl); +void bplist_destroy(bplist_t *bpl); +void bplist_append(bplist_t *bpl, const blkptr_t *bp); +void bplist_iterate(bplist_t *bpl, bplist_itor_t *func, + void *arg, dmu_tx_t *tx); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_BPLIST_H */ --- linux-4.4.0.orig/zfs/include/sys/bpobj.h +++ linux-4.4.0/zfs/include/sys/bpobj.h @@ -0,0 +1,93 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_BPOBJ_H +#define _SYS_BPOBJ_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct bpobj_phys { + /* + * This is the bonus buffer for the dead lists. The object's + * contents is an array of bpo_entries blkptr_t's, representing + * a total of bpo_bytes physical space. + */ + uint64_t bpo_num_blkptrs; + uint64_t bpo_bytes; + uint64_t bpo_comp; + uint64_t bpo_uncomp; + uint64_t bpo_subobjs; + uint64_t bpo_num_subobjs; +} bpobj_phys_t; + +#define BPOBJ_SIZE_V0 (2 * sizeof (uint64_t)) +#define BPOBJ_SIZE_V1 (4 * sizeof (uint64_t)) + +typedef struct bpobj { + kmutex_t bpo_lock; + objset_t *bpo_os; + uint64_t bpo_object; + int bpo_epb; + uint8_t bpo_havecomp; + uint8_t bpo_havesubobj; + bpobj_phys_t *bpo_phys; + dmu_buf_t *bpo_dbuf; + dmu_buf_t *bpo_cached_dbuf; +} bpobj_t; + +typedef int bpobj_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); + +uint64_t bpobj_alloc(objset_t *mos, int blocksize, dmu_tx_t *tx); +uint64_t bpobj_alloc_empty(objset_t *os, int blocksize, dmu_tx_t *tx); +void bpobj_free(objset_t *os, uint64_t obj, dmu_tx_t *tx); +void bpobj_decr_empty(objset_t *os, dmu_tx_t *tx); + +int bpobj_open(bpobj_t *bpo, objset_t *mos, uint64_t object); +void bpobj_close(bpobj_t *bpo); + +int bpobj_iterate(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx); +int bpobj_iterate_nofree(bpobj_t *bpo, bpobj_itor_t func, void *, dmu_tx_t *); + +void bpobj_enqueue_subobj(bpobj_t *bpo, uint64_t subobj, dmu_tx_t *tx); +void bpobj_enqueue(bpobj_t *bpo, const blkptr_t *bp, dmu_tx_t *tx); + +int bpobj_space(bpobj_t *bpo, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); +int bpobj_space_range(bpobj_t *bpo, uint64_t mintxg, uint64_t maxtxg, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_BPOBJ_H */ --- linux-4.4.0.orig/zfs/include/sys/bptree.h +++ linux-4.4.0/zfs/include/sys/bptree.h @@ -0,0 +1,65 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_BPTREE_H +#define _SYS_BPTREE_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct bptree_phys { + uint64_t bt_begin; + uint64_t bt_end; + uint64_t bt_bytes; + uint64_t bt_comp; + uint64_t bt_uncomp; +} bptree_phys_t; + +typedef struct bptree_entry_phys { + blkptr_t be_bp; + uint64_t be_birth_txg; /* only delete blocks born after this txg */ + zbookmark_phys_t be_zb; /* holds traversal resume point if needed */ +} bptree_entry_phys_t; + +typedef int bptree_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); + +uint64_t bptree_alloc(objset_t *os, dmu_tx_t *tx); +int bptree_free(objset_t *os, uint64_t obj, dmu_tx_t *tx); +boolean_t bptree_is_empty(objset_t *os, uint64_t obj); + +void bptree_add(objset_t *os, uint64_t obj, blkptr_t *bp, uint64_t birth_txg, + uint64_t bytes, uint64_t comp, uint64_t uncomp, dmu_tx_t *tx); + +int bptree_iterate(objset_t *os, uint64_t obj, boolean_t free, + bptree_itor_t func, void *arg, dmu_tx_t *tx); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_BPTREE_H */ --- linux-4.4.0.orig/zfs/include/sys/dbuf.h +++ linux-4.4.0/zfs/include/sys/dbuf.h @@ -0,0 +1,392 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_DBUF_H +#define _SYS_DBUF_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define IN_DMU_SYNC 2 + +/* + * define flags for dbuf_read + */ + +#define DB_RF_MUST_SUCCEED (1 << 0) +#define DB_RF_CANFAIL (1 << 1) +#define DB_RF_HAVESTRUCT (1 << 2) +#define DB_RF_NOPREFETCH (1 << 3) +#define DB_RF_NEVERWAIT (1 << 4) +#define DB_RF_CACHED (1 << 5) + +/* + * The simplified state transition diagram for dbufs looks like: + * + * +----> READ ----+ + * | | + * | V + * (alloc)-->UNCACHED CACHED-->EVICTING-->(free) + * | ^ ^ + * | | | + * +----> FILL ----+ | + * | | + * | | + * +--------> NOFILL -------+ + * + * DB_SEARCH is an invalid state for a dbuf. It is used by dbuf_free_range + * to find all dbufs in a range of a dnode and must be less than any other + * dbuf_states_t (see comment on dn_dbufs in dnode.h). + */ +typedef enum dbuf_states { + DB_SEARCH = -1, + DB_UNCACHED, + DB_FILL, + DB_NOFILL, + DB_READ, + DB_CACHED, + DB_EVICTING +} dbuf_states_t; + +struct dnode; +struct dmu_tx; + +/* + * level = 0 means the user data + * level = 1 means the single indirect block + * etc. + */ + +struct dmu_buf_impl; + +typedef enum override_states { + DR_NOT_OVERRIDDEN, + DR_IN_DMU_SYNC, + DR_OVERRIDDEN +} override_states_t; + +typedef struct dbuf_dirty_record { + /* link on our parents dirty list */ + list_node_t dr_dirty_node; + + /* transaction group this data will sync in */ + uint64_t dr_txg; + + /* zio of outstanding write IO */ + zio_t *dr_zio; + + /* pointer back to our dbuf */ + struct dmu_buf_impl *dr_dbuf; + + /* pointer to next dirty record */ + struct dbuf_dirty_record *dr_next; + + /* pointer to parent dirty record */ + struct dbuf_dirty_record *dr_parent; + + /* How much space was changed to dsl_pool_dirty_space() for this? */ + unsigned int dr_accounted; + + union dirty_types { + struct dirty_indirect { + + /* protect access to list */ + kmutex_t dr_mtx; + + /* Our list of dirty children */ + list_t dr_children; + } di; + struct dirty_leaf { + + /* + * dr_data is set when we dirty the buffer + * so that we can retain the pointer even if it + * gets COW'd in a subsequent transaction group. + */ + arc_buf_t *dr_data; + blkptr_t dr_overridden_by; + override_states_t dr_override_state; + uint8_t dr_copies; + boolean_t dr_nopwrite; + } dl; + } dt; +} dbuf_dirty_record_t; + +typedef struct dmu_buf_impl { + /* + * The following members are immutable, with the exception of + * db.db_data, which is protected by db_mtx. + */ + + /* the publicly visible structure */ + dmu_buf_t db; + + /* the objset we belong to */ + struct objset *db_objset; + + /* + * handle to safely access the dnode we belong to (NULL when evicted) + */ + struct dnode_handle *db_dnode_handle; + + /* + * our parent buffer; if the dnode points to us directly, + * db_parent == db_dnode_handle->dnh_dnode->dn_dbuf + * only accessed by sync thread ??? + * (NULL when evicted) + * May change from NULL to non-NULL under the protection of db_mtx + * (see dbuf_check_blkptr()) + */ + struct dmu_buf_impl *db_parent; + + /* + * link for hash table of all dmu_buf_impl_t's + */ + struct dmu_buf_impl *db_hash_next; + + /* our block number */ + uint64_t db_blkid; + + /* + * Pointer to the blkptr_t which points to us. May be NULL if we + * don't have one yet. (NULL when evicted) + */ + blkptr_t *db_blkptr; + + /* + * Our indirection level. Data buffers have db_level==0. + * Indirect buffers which point to data buffers have + * db_level==1. etc. Buffers which contain dnodes have + * db_level==0, since the dnodes are stored in a file. + */ + uint8_t db_level; + + /* db_mtx protects the members below */ + kmutex_t db_mtx; + + /* + * Current state of the buffer + */ + dbuf_states_t db_state; + + /* + * Refcount accessed by dmu_buf_{hold,rele}. + * If nonzero, the buffer can't be destroyed. + * Protected by db_mtx. + */ + refcount_t db_holds; + + /* buffer holding our data */ + arc_buf_t *db_buf; + + kcondvar_t db_changed; + dbuf_dirty_record_t *db_data_pending; + + /* pointer to most recent dirty record for this buffer */ + dbuf_dirty_record_t *db_last_dirty; + + /* + * Our link on the owner dnodes's dn_dbufs list. + * Protected by its dn_dbufs_mtx. + */ + avl_node_t db_link; + + /* Data which is unique to data (leaf) blocks: */ + + /* User callback information. */ + dmu_buf_user_t *db_user; + + /* + * Evict user data as soon as the dirty and reference + * counts are equal. + */ + uint8_t db_user_immediate_evict; + + /* + * This block was freed while a read or write was + * active. + */ + uint8_t db_freed_in_flight; + + /* + * dnode_evict_dbufs() or dnode_evict_bonus() tried to + * evict this dbuf, but couldn't due to outstanding + * references. Evict once the refcount drops to 0. + */ + uint8_t db_pending_evict; + + uint8_t db_dirtycnt; +} dmu_buf_impl_t; + +/* Note: the dbuf hash table is exposed only for the mdb module */ +#define DBUF_MUTEXES 8192 +#define DBUF_HASH_MUTEX(h, idx) (&(h)->hash_mutexes[(idx) & (DBUF_MUTEXES-1)]) +typedef struct dbuf_hash_table { + uint64_t hash_table_mask; + dmu_buf_impl_t **hash_table; + kmutex_t hash_mutexes[DBUF_MUTEXES]; +} dbuf_hash_table_t; + + +uint64_t dbuf_whichblock(struct dnode *di, uint64_t offset); + +void dbuf_create_bonus(struct dnode *dn); +int dbuf_spill_set_blksz(dmu_buf_t *db, uint64_t blksz, dmu_tx_t *tx); + +void dbuf_rm_spill(struct dnode *dn, dmu_tx_t *tx); + +dmu_buf_impl_t *dbuf_hold(struct dnode *dn, uint64_t blkid, void *tag); +dmu_buf_impl_t *dbuf_hold_level(struct dnode *dn, int level, uint64_t blkid, + void *tag); +int dbuf_hold_impl(struct dnode *dn, uint8_t level, uint64_t blkid, int create, + void *tag, dmu_buf_impl_t **dbp); + +void dbuf_prefetch(struct dnode *dn, uint64_t blkid, zio_priority_t prio); + +void dbuf_add_ref(dmu_buf_impl_t *db, void *tag); +boolean_t dbuf_try_add_ref(dmu_buf_t *db, objset_t *os, uint64_t obj, + uint64_t blkid, void *tag); +uint64_t dbuf_refcount(dmu_buf_impl_t *db); + +void dbuf_rele(dmu_buf_impl_t *db, void *tag); +void dbuf_rele_and_unlock(dmu_buf_impl_t *db, void *tag); + +dmu_buf_impl_t *dbuf_find(struct objset *os, uint64_t object, uint8_t level, + uint64_t blkid); + +int dbuf_read(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags); +void dmu_buf_will_not_fill(dmu_buf_t *db, dmu_tx_t *tx); +void dmu_buf_will_fill(dmu_buf_t *db, dmu_tx_t *tx); +void dmu_buf_fill_done(dmu_buf_t *db, dmu_tx_t *tx); +void dbuf_assign_arcbuf(dmu_buf_impl_t *db, arc_buf_t *buf, dmu_tx_t *tx); +dbuf_dirty_record_t *dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t *tx); +arc_buf_t *dbuf_loan_arcbuf(dmu_buf_impl_t *db); +void dmu_buf_write_embedded(dmu_buf_t *dbuf, void *data, + bp_embedded_type_t etype, enum zio_compress comp, + int uncompressed_size, int compressed_size, int byteorder, dmu_tx_t *tx); + +void dbuf_clear(dmu_buf_impl_t *db); +void dbuf_evict(dmu_buf_impl_t *db); + +void dbuf_unoverride(dbuf_dirty_record_t *dr); +void dbuf_sync_list(list_t *list, int level, dmu_tx_t *tx); +void dbuf_release_bp(dmu_buf_impl_t *db); + +void dbuf_free_range(struct dnode *dn, uint64_t start, uint64_t end, + struct dmu_tx *); + +void dbuf_new_size(dmu_buf_impl_t *db, int size, dmu_tx_t *tx); + +void dbuf_stats_init(dbuf_hash_table_t *hash); +void dbuf_stats_destroy(void); + +#define DB_DNODE(_db) ((_db)->db_dnode_handle->dnh_dnode) +#define DB_DNODE_LOCK(_db) ((_db)->db_dnode_handle->dnh_zrlock) +#define DB_DNODE_ENTER(_db) (zrl_add(&DB_DNODE_LOCK(_db))) +#define DB_DNODE_EXIT(_db) (zrl_remove(&DB_DNODE_LOCK(_db))) +#define DB_DNODE_HELD(_db) (!zrl_is_zero(&DB_DNODE_LOCK(_db))) + +void dbuf_init(void); +void dbuf_fini(void); + +boolean_t dbuf_is_metadata(dmu_buf_impl_t *db); + +#define DBUF_GET_BUFC_TYPE(_db) \ + (dbuf_is_metadata(_db) ? ARC_BUFC_METADATA : ARC_BUFC_DATA) + +#define DBUF_IS_CACHEABLE(_db) \ + ((_db)->db_objset->os_primary_cache == ZFS_CACHE_ALL || \ + (dbuf_is_metadata(_db) && \ + ((_db)->db_objset->os_primary_cache == ZFS_CACHE_METADATA))) + +#define DBUF_IS_L2CACHEABLE(_db) \ + ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_ALL || \ + (dbuf_is_metadata(_db) && \ + ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) + +#define DBUF_IS_L2COMPRESSIBLE(_db) \ + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF || \ + (dbuf_is_metadata(_db) && zfs_mdcomp_disable == B_FALSE)) + +#ifdef ZFS_DEBUG + +/* + * There should be a ## between the string literal and fmt, to make it + * clear that we're joining two strings together, but gcc does not + * support that preprocessor token. + */ +#define dprintf_dbuf(dbuf, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char __db_buf[32]; \ + uint64_t __db_obj = (dbuf)->db.db_object; \ + if (__db_obj == DMU_META_DNODE_OBJECT) \ + (void) strcpy(__db_buf, "mdn"); \ + else \ + (void) snprintf(__db_buf, sizeof (__db_buf), "%lld", \ + (u_longlong_t)__db_obj); \ + dprintf_ds((dbuf)->db_objset->os_dsl_dataset, \ + "obj=%s lvl=%u blkid=%lld " fmt, \ + __db_buf, (dbuf)->db_level, \ + (u_longlong_t)(dbuf)->db_blkid, __VA_ARGS__); \ + } \ +_NOTE(CONSTCOND) } while (0) + +#define dprintf_dbuf_bp(db, bp, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char *__blkbuf = kmem_alloc(BP_SPRINTF_LEN, KM_SLEEP); \ + snprintf_blkptr(__blkbuf, BP_SPRINTF_LEN, bp); \ + dprintf_dbuf(db, fmt " %s\n", __VA_ARGS__, __blkbuf); \ + kmem_free(__blkbuf, BP_SPRINTF_LEN); \ + } \ +_NOTE(CONSTCOND) } while (0) + +#define DBUF_VERIFY(db) dbuf_verify(db) + +#else + +#define dprintf_dbuf(db, fmt, ...) +#define dprintf_dbuf_bp(db, bp, fmt, ...) +#define DBUF_VERIFY(db) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DBUF_H */ --- linux-4.4.0.orig/zfs/include/sys/ddt.h +++ linux-4.4.0/zfs/include/sys/ddt.h @@ -0,0 +1,247 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_DDT_H +#define _SYS_DDT_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * On-disk DDT formats, in the desired search order (newest version first). + */ +enum ddt_type { + DDT_TYPE_ZAP = 0, + DDT_TYPES +}; + +/* + * DDT classes, in the desired search order (highest replication level first). + */ +enum ddt_class { + DDT_CLASS_DITTO = 0, + DDT_CLASS_DUPLICATE, + DDT_CLASS_UNIQUE, + DDT_CLASSES +}; + +#define DDT_TYPE_CURRENT 0 + +#define DDT_COMPRESS_BYTEORDER_MASK 0x80 +#define DDT_COMPRESS_FUNCTION_MASK 0x7f + +/* + * On-disk ddt entry: key (name) and physical storage (value). + */ +typedef struct ddt_key { + zio_cksum_t ddk_cksum; /* 256-bit block checksum */ + /* + * Encoded with logical & physical size, and compression, as follows: + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * | 0 | 0 | 0 | comp | PSIZE | LSIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + */ + uint64_t ddk_prop; +} ddt_key_t; + +#define DDK_GET_LSIZE(ddk) \ + BF64_GET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1) +#define DDK_SET_LSIZE(ddk, x) \ + BF64_SET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1, x) + +#define DDK_GET_PSIZE(ddk) \ + BF64_GET_SB((ddk)->ddk_prop, 16, 16, SPA_MINBLOCKSHIFT, 1) +#define DDK_SET_PSIZE(ddk, x) \ + BF64_SET_SB((ddk)->ddk_prop, 16, 16, SPA_MINBLOCKSHIFT, 1, x) + +#define DDK_GET_COMPRESS(ddk) BF64_GET((ddk)->ddk_prop, 32, 8) +#define DDK_SET_COMPRESS(ddk, x) BF64_SET((ddk)->ddk_prop, 32, 8, x) + +#define DDT_KEY_WORDS (sizeof (ddt_key_t) / sizeof (uint64_t)) + +typedef struct ddt_phys { + dva_t ddp_dva[SPA_DVAS_PER_BP]; + uint64_t ddp_refcnt; + uint64_t ddp_phys_birth; +} ddt_phys_t; + +enum ddt_phys_type { + DDT_PHYS_DITTO = 0, + DDT_PHYS_SINGLE = 1, + DDT_PHYS_DOUBLE = 2, + DDT_PHYS_TRIPLE = 3, + DDT_PHYS_TYPES +}; + +/* + * In-core ddt entry + */ +struct ddt_entry { + ddt_key_t dde_key; + ddt_phys_t dde_phys[DDT_PHYS_TYPES]; + zio_t *dde_lead_zio[DDT_PHYS_TYPES]; + void *dde_repair_data; + enum ddt_type dde_type; + enum ddt_class dde_class; + uint8_t dde_loading; + uint8_t dde_loaded; + kcondvar_t dde_cv; + avl_node_t dde_node; +}; + +/* + * In-core ddt + */ +struct ddt { + kmutex_t ddt_lock; + avl_tree_t ddt_tree; + avl_tree_t ddt_repair_tree; + enum zio_checksum ddt_checksum; + spa_t *ddt_spa; + objset_t *ddt_os; + uint64_t ddt_stat_object; + uint64_t ddt_object[DDT_TYPES][DDT_CLASSES]; + ddt_histogram_t ddt_histogram[DDT_TYPES][DDT_CLASSES]; + ddt_histogram_t ddt_histogram_cache[DDT_TYPES][DDT_CLASSES]; + ddt_object_t ddt_object_stats[DDT_TYPES][DDT_CLASSES]; + avl_node_t ddt_node; +}; + +/* + * In-core and on-disk bookmark for DDT walks + */ +typedef struct ddt_bookmark { + uint64_t ddb_class; + uint64_t ddb_type; + uint64_t ddb_checksum; + uint64_t ddb_cursor; +} ddt_bookmark_t; + +/* + * Ops vector to access a specific DDT object type. + */ +typedef struct ddt_ops { + char ddt_op_name[32]; + int (*ddt_op_create)(objset_t *os, uint64_t *object, dmu_tx_t *tx, + boolean_t prehash); + int (*ddt_op_destroy)(objset_t *os, uint64_t object, dmu_tx_t *tx); + int (*ddt_op_lookup)(objset_t *os, uint64_t object, ddt_entry_t *dde); + void (*ddt_op_prefetch)(objset_t *os, uint64_t object, + ddt_entry_t *dde); + int (*ddt_op_update)(objset_t *os, uint64_t object, ddt_entry_t *dde, + dmu_tx_t *tx); + int (*ddt_op_remove)(objset_t *os, uint64_t object, ddt_entry_t *dde, + dmu_tx_t *tx); + int (*ddt_op_walk)(objset_t *os, uint64_t object, ddt_entry_t *dde, + uint64_t *walk); + int (*ddt_op_count)(objset_t *os, uint64_t object, uint64_t *count); +} ddt_ops_t; + +#define DDT_NAMELEN 80 + +extern void ddt_object_name(ddt_t *ddt, enum ddt_type type, + enum ddt_class class, char *name); +extern int ddt_object_walk(ddt_t *ddt, enum ddt_type type, + enum ddt_class class, uint64_t *walk, ddt_entry_t *dde); +extern int ddt_object_count(ddt_t *ddt, enum ddt_type type, + enum ddt_class class, uint64_t *count); +extern int ddt_object_info(ddt_t *ddt, enum ddt_type type, + enum ddt_class class, dmu_object_info_t *); +extern boolean_t ddt_object_exists(ddt_t *ddt, enum ddt_type type, + enum ddt_class class); + +extern void ddt_bp_fill(const ddt_phys_t *ddp, blkptr_t *bp, + uint64_t txg); +extern void ddt_bp_create(enum zio_checksum checksum, const ddt_key_t *ddk, + const ddt_phys_t *ddp, blkptr_t *bp); + +extern void ddt_key_fill(ddt_key_t *ddk, const blkptr_t *bp); + +extern void ddt_phys_fill(ddt_phys_t *ddp, const blkptr_t *bp); +extern void ddt_phys_clear(ddt_phys_t *ddp); +extern void ddt_phys_addref(ddt_phys_t *ddp); +extern void ddt_phys_decref(ddt_phys_t *ddp); +extern void ddt_phys_free(ddt_t *ddt, ddt_key_t *ddk, ddt_phys_t *ddp, + uint64_t txg); +extern ddt_phys_t *ddt_phys_select(const ddt_entry_t *dde, const blkptr_t *bp); +extern uint64_t ddt_phys_total_refcnt(const ddt_entry_t *dde); + +extern void ddt_stat_add(ddt_stat_t *dst, const ddt_stat_t *src, uint64_t neg); + +extern void ddt_histogram_add(ddt_histogram_t *dst, const ddt_histogram_t *src); +extern void ddt_histogram_stat(ddt_stat_t *dds, const ddt_histogram_t *ddh); +extern boolean_t ddt_histogram_empty(const ddt_histogram_t *ddh); +extern void ddt_get_dedup_object_stats(spa_t *spa, ddt_object_t *ddo); +extern void ddt_get_dedup_histogram(spa_t *spa, ddt_histogram_t *ddh); +extern void ddt_get_dedup_stats(spa_t *spa, ddt_stat_t *dds_total); + +extern uint64_t ddt_get_dedup_dspace(spa_t *spa); +extern uint64_t ddt_get_pool_dedup_ratio(spa_t *spa); + +extern int ddt_ditto_copies_needed(ddt_t *ddt, ddt_entry_t *dde, + ddt_phys_t *ddp_willref); +extern int ddt_ditto_copies_present(ddt_entry_t *dde); + +extern size_t ddt_compress(void *src, uchar_t *dst, size_t s_len, size_t d_len); +extern void ddt_decompress(uchar_t *src, void *dst, size_t s_len, size_t d_len); + +extern ddt_t *ddt_select(spa_t *spa, const blkptr_t *bp); +extern void ddt_enter(ddt_t *ddt); +extern void ddt_exit(ddt_t *ddt); +extern void ddt_init(void); +extern void ddt_fini(void); +extern ddt_entry_t *ddt_lookup(ddt_t *ddt, const blkptr_t *bp, boolean_t add); +extern void ddt_prefetch(spa_t *spa, const blkptr_t *bp); +extern void ddt_remove(ddt_t *ddt, ddt_entry_t *dde); + +extern boolean_t ddt_class_contains(spa_t *spa, enum ddt_class max_class, + const blkptr_t *bp); + +extern ddt_entry_t *ddt_repair_start(ddt_t *ddt, const blkptr_t *bp); +extern void ddt_repair_done(ddt_t *ddt, ddt_entry_t *dde); + +extern int ddt_entry_compare(const void *x1, const void *x2); + +extern void ddt_create(spa_t *spa); +extern int ddt_load(spa_t *spa); +extern void ddt_unload(spa_t *spa); +extern void ddt_sync(spa_t *spa, uint64_t txg); +extern int ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde); +extern int ddt_object_update(ddt_t *ddt, enum ddt_type type, + enum ddt_class class, ddt_entry_t *dde, dmu_tx_t *tx); + +extern const ddt_ops_t ddt_zap_ops; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DDT_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu.h +++ linux-4.4.0/zfs/include/sys/dmu.h @@ -0,0 +1,934 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2014 HybridCluster. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#ifndef _SYS_DMU_H +#define _SYS_DMU_H + +/* + * This file describes the interface that the DMU provides for its + * consumers. + * + * The DMU also interacts with the SPA. That interface is described in + * dmu_spa.h. + */ + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct page; +struct vnode; +struct spa; +struct zilog; +struct zio; +struct blkptr; +struct zap_cursor; +struct dsl_dataset; +struct dsl_pool; +struct dnode; +struct drr_begin; +struct drr_end; +struct zbookmark_phys; +struct spa; +struct nvlist; +struct arc_buf; +struct zio_prop; +struct sa_handle; + +typedef struct objset objset_t; +typedef struct dmu_tx dmu_tx_t; +typedef struct dsl_dir dsl_dir_t; + +typedef enum dmu_object_byteswap { + DMU_BSWAP_UINT8, + DMU_BSWAP_UINT16, + DMU_BSWAP_UINT32, + DMU_BSWAP_UINT64, + DMU_BSWAP_ZAP, + DMU_BSWAP_DNODE, + DMU_BSWAP_OBJSET, + DMU_BSWAP_ZNODE, + DMU_BSWAP_OLDACL, + DMU_BSWAP_ACL, + /* + * Allocating a new byteswap type number makes the on-disk format + * incompatible with any other format that uses the same number. + * + * Data can usually be structured to work with one of the + * DMU_BSWAP_UINT* or DMU_BSWAP_ZAP types. + */ + DMU_BSWAP_NUMFUNCS +} dmu_object_byteswap_t; + +#define DMU_OT_NEWTYPE 0x80 +#define DMU_OT_METADATA 0x40 +#define DMU_OT_BYTESWAP_MASK 0x3f + +/* + * Defines a uint8_t object type. Object types specify if the data + * in the object is metadata (boolean) and how to byteswap the data + * (dmu_object_byteswap_t). + */ +#define DMU_OT(byteswap, metadata) \ + (DMU_OT_NEWTYPE | \ + ((metadata) ? DMU_OT_METADATA : 0) | \ + ((byteswap) & DMU_OT_BYTESWAP_MASK)) + +#define DMU_OT_IS_VALID(ot) (((ot) & DMU_OT_NEWTYPE) ? \ + ((ot) & DMU_OT_BYTESWAP_MASK) < DMU_BSWAP_NUMFUNCS : \ + (ot) < DMU_OT_NUMTYPES) + +#define DMU_OT_IS_METADATA(ot) (((ot) & DMU_OT_NEWTYPE) ? \ + ((ot) & DMU_OT_METADATA) : \ + dmu_ot[(int)(ot)].ot_metadata) + +/* + * These object types use bp_fill != 1 for their L0 bp's. Therefore they can't + * have their data embedded (i.e. use a BP_IS_EMBEDDED() bp), because bp_fill + * is repurposed for embedded BPs. + */ +#define DMU_OT_HAS_FILL(ot) \ + ((ot) == DMU_OT_DNODE || (ot) == DMU_OT_OBJSET) + +#define DMU_OT_BYTESWAP(ot) (((ot) & DMU_OT_NEWTYPE) ? \ + ((ot) & DMU_OT_BYTESWAP_MASK) : \ + dmu_ot[(int)(ot)].ot_byteswap) + +typedef enum dmu_object_type { + DMU_OT_NONE, + /* general: */ + DMU_OT_OBJECT_DIRECTORY, /* ZAP */ + DMU_OT_OBJECT_ARRAY, /* UINT64 */ + DMU_OT_PACKED_NVLIST, /* UINT8 (XDR by nvlist_pack/unpack) */ + DMU_OT_PACKED_NVLIST_SIZE, /* UINT64 */ + DMU_OT_BPOBJ, /* UINT64 */ + DMU_OT_BPOBJ_HDR, /* UINT64 */ + /* spa: */ + DMU_OT_SPACE_MAP_HEADER, /* UINT64 */ + DMU_OT_SPACE_MAP, /* UINT64 */ + /* zil: */ + DMU_OT_INTENT_LOG, /* UINT64 */ + /* dmu: */ + DMU_OT_DNODE, /* DNODE */ + DMU_OT_OBJSET, /* OBJSET */ + /* dsl: */ + DMU_OT_DSL_DIR, /* UINT64 */ + DMU_OT_DSL_DIR_CHILD_MAP, /* ZAP */ + DMU_OT_DSL_DS_SNAP_MAP, /* ZAP */ + DMU_OT_DSL_PROPS, /* ZAP */ + DMU_OT_DSL_DATASET, /* UINT64 */ + /* zpl: */ + DMU_OT_ZNODE, /* ZNODE */ + DMU_OT_OLDACL, /* Old ACL */ + DMU_OT_PLAIN_FILE_CONTENTS, /* UINT8 */ + DMU_OT_DIRECTORY_CONTENTS, /* ZAP */ + DMU_OT_MASTER_NODE, /* ZAP */ + DMU_OT_UNLINKED_SET, /* ZAP */ + /* zvol: */ + DMU_OT_ZVOL, /* UINT8 */ + DMU_OT_ZVOL_PROP, /* ZAP */ + /* other; for testing only! */ + DMU_OT_PLAIN_OTHER, /* UINT8 */ + DMU_OT_UINT64_OTHER, /* UINT64 */ + DMU_OT_ZAP_OTHER, /* ZAP */ + /* new object types: */ + DMU_OT_ERROR_LOG, /* ZAP */ + DMU_OT_SPA_HISTORY, /* UINT8 */ + DMU_OT_SPA_HISTORY_OFFSETS, /* spa_his_phys_t */ + DMU_OT_POOL_PROPS, /* ZAP */ + DMU_OT_DSL_PERMS, /* ZAP */ + DMU_OT_ACL, /* ACL */ + DMU_OT_SYSACL, /* SYSACL */ + DMU_OT_FUID, /* FUID table (Packed NVLIST UINT8) */ + DMU_OT_FUID_SIZE, /* FUID table size UINT64 */ + DMU_OT_NEXT_CLONES, /* ZAP */ + DMU_OT_SCAN_QUEUE, /* ZAP */ + DMU_OT_USERGROUP_USED, /* ZAP */ + DMU_OT_USERGROUP_QUOTA, /* ZAP */ + DMU_OT_USERREFS, /* ZAP */ + DMU_OT_DDT_ZAP, /* ZAP */ + DMU_OT_DDT_STATS, /* ZAP */ + DMU_OT_SA, /* System attr */ + DMU_OT_SA_MASTER_NODE, /* ZAP */ + DMU_OT_SA_ATTR_REGISTRATION, /* ZAP */ + DMU_OT_SA_ATTR_LAYOUTS, /* ZAP */ + DMU_OT_SCAN_XLATE, /* ZAP */ + DMU_OT_DEDUP, /* fake dedup BP from ddt_bp_create() */ + DMU_OT_DEADLIST, /* ZAP */ + DMU_OT_DEADLIST_HDR, /* UINT64 */ + DMU_OT_DSL_CLONES, /* ZAP */ + DMU_OT_BPOBJ_SUBOBJ, /* UINT64 */ + /* + * Do not allocate new object types here. Doing so makes the on-disk + * format incompatible with any other format that uses the same object + * type number. + * + * When creating an object which does not have one of the above types + * use the DMU_OTN_* type with the correct byteswap and metadata + * values. + * + * The DMU_OTN_* types do not have entries in the dmu_ot table, + * use the DMU_OT_IS_METDATA() and DMU_OT_BYTESWAP() macros instead + * of indexing into dmu_ot directly (this works for both DMU_OT_* types + * and DMU_OTN_* types). + */ + DMU_OT_NUMTYPES, + + /* + * Names for valid types declared with DMU_OT(). + */ + DMU_OTN_UINT8_DATA = DMU_OT(DMU_BSWAP_UINT8, B_FALSE), + DMU_OTN_UINT8_METADATA = DMU_OT(DMU_BSWAP_UINT8, B_TRUE), + DMU_OTN_UINT16_DATA = DMU_OT(DMU_BSWAP_UINT16, B_FALSE), + DMU_OTN_UINT16_METADATA = DMU_OT(DMU_BSWAP_UINT16, B_TRUE), + DMU_OTN_UINT32_DATA = DMU_OT(DMU_BSWAP_UINT32, B_FALSE), + DMU_OTN_UINT32_METADATA = DMU_OT(DMU_BSWAP_UINT32, B_TRUE), + DMU_OTN_UINT64_DATA = DMU_OT(DMU_BSWAP_UINT64, B_FALSE), + DMU_OTN_UINT64_METADATA = DMU_OT(DMU_BSWAP_UINT64, B_TRUE), + DMU_OTN_ZAP_DATA = DMU_OT(DMU_BSWAP_ZAP, B_FALSE), + DMU_OTN_ZAP_METADATA = DMU_OT(DMU_BSWAP_ZAP, B_TRUE), +} dmu_object_type_t; + +typedef enum txg_how { + TXG_WAIT = 1, + TXG_NOWAIT, + TXG_WAITED, +} txg_how_t; + +void byteswap_uint64_array(void *buf, size_t size); +void byteswap_uint32_array(void *buf, size_t size); +void byteswap_uint16_array(void *buf, size_t size); +void byteswap_uint8_array(void *buf, size_t size); +void zap_byteswap(void *buf, size_t size); +void zfs_oldacl_byteswap(void *buf, size_t size); +void zfs_acl_byteswap(void *buf, size_t size); +void zfs_znode_byteswap(void *buf, size_t size); + +#define DS_FIND_SNAPSHOTS (1<<0) +#define DS_FIND_CHILDREN (1<<1) +#define DS_FIND_SERIALIZE (1<<2) + +/* + * The maximum number of bytes that can be accessed as part of one + * operation, including metadata. + */ +#define DMU_MAX_ACCESS (64 * 1024 * 1024) /* 64MB */ +#define DMU_MAX_DELETEBLKCNT (20480) /* ~5MB of indirect blocks */ + +#define DMU_USERUSED_OBJECT (-1ULL) +#define DMU_GROUPUSED_OBJECT (-2ULL) + +/* + * artificial blkids for bonus buffer and spill blocks + */ +#define DMU_BONUS_BLKID (-1ULL) +#define DMU_SPILL_BLKID (-2ULL) +/* + * Public routines to create, destroy, open, and close objsets. + */ +int dmu_objset_hold(const char *name, void *tag, objset_t **osp); +int dmu_objset_own(const char *name, dmu_objset_type_t type, + boolean_t readonly, void *tag, objset_t **osp); +void dmu_objset_rele(objset_t *os, void *tag); +void dmu_objset_disown(objset_t *os, void *tag); +int dmu_objset_open_ds(struct dsl_dataset *ds, objset_t **osp); + +void dmu_objset_evict_dbufs(objset_t *os); +int dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags, + void (*func)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx), void *arg); +int dmu_objset_clone(const char *name, const char *origin); +int dsl_destroy_snapshots_nvl(struct nvlist *snaps, boolean_t defer, + struct nvlist *errlist); +int dmu_objset_snapshot_one(const char *fsname, const char *snapname); +int dmu_objset_snapshot_tmp(const char *, const char *, int); +int dmu_objset_find(char *name, int func(const char *, void *), void *arg, + int flags); +void dmu_objset_byteswap(void *buf, size_t size); +int dsl_dataset_rename_snapshot(const char *fsname, + const char *oldsnapname, const char *newsnapname, boolean_t recursive); + +typedef struct dmu_buf { + uint64_t db_object; /* object that this buffer is part of */ + uint64_t db_offset; /* byte offset in this object */ + uint64_t db_size; /* size of buffer in bytes */ + void *db_data; /* data in buffer */ +} dmu_buf_t; + +/* + * The names of zap entries in the DIRECTORY_OBJECT of the MOS. + */ +#define DMU_POOL_DIRECTORY_OBJECT 1 +#define DMU_POOL_CONFIG "config" +#define DMU_POOL_FEATURES_FOR_WRITE "features_for_write" +#define DMU_POOL_FEATURES_FOR_READ "features_for_read" +#define DMU_POOL_FEATURE_DESCRIPTIONS "feature_descriptions" +#define DMU_POOL_FEATURE_ENABLED_TXG "feature_enabled_txg" +#define DMU_POOL_ROOT_DATASET "root_dataset" +#define DMU_POOL_SYNC_BPOBJ "sync_bplist" +#define DMU_POOL_ERRLOG_SCRUB "errlog_scrub" +#define DMU_POOL_ERRLOG_LAST "errlog_last" +#define DMU_POOL_SPARES "spares" +#define DMU_POOL_DEFLATE "deflate" +#define DMU_POOL_HISTORY "history" +#define DMU_POOL_PROPS "pool_props" +#define DMU_POOL_L2CACHE "l2cache" +#define DMU_POOL_TMP_USERREFS "tmp_userrefs" +#define DMU_POOL_DDT "DDT-%s-%s-%s" +#define DMU_POOL_DDT_STATS "DDT-statistics" +#define DMU_POOL_CREATION_VERSION "creation_version" +#define DMU_POOL_SCAN "scan" +#define DMU_POOL_FREE_BPOBJ "free_bpobj" +#define DMU_POOL_BPTREE_OBJ "bptree_obj" +#define DMU_POOL_EMPTY_BPOBJ "empty_bpobj" + +/* + * Allocate an object from this objset. The range of object numbers + * available is (0, DN_MAX_OBJECT). Object 0 is the meta-dnode. + * + * The transaction must be assigned to a txg. The newly allocated + * object will be "held" in the transaction (ie. you can modify the + * newly allocated object in this transaction). + * + * dmu_object_alloc() chooses an object and returns it in *objectp. + * + * dmu_object_claim() allocates a specific object number. If that + * number is already allocated, it fails and returns EEXIST. + * + * Return 0 on success, or ENOSPC or EEXIST as specified above. + */ +uint64_t dmu_object_alloc(objset_t *os, dmu_object_type_t ot, + int blocksize, dmu_object_type_t bonus_type, int bonus_len, dmu_tx_t *tx); +int dmu_object_claim(objset_t *os, uint64_t object, dmu_object_type_t ot, + int blocksize, dmu_object_type_t bonus_type, int bonus_len, dmu_tx_t *tx); +int dmu_object_reclaim(objset_t *os, uint64_t object, dmu_object_type_t ot, + int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *txp); + +/* + * Free an object from this objset. + * + * The object's data will be freed as well (ie. you don't need to call + * dmu_free(object, 0, -1, tx)). + * + * The object need not be held in the transaction. + * + * If there are any holds on this object's buffers (via dmu_buf_hold()), + * or tx holds on the object (via dmu_tx_hold_object()), you can not + * free it; it fails and returns EBUSY. + * + * If the object is not allocated, it fails and returns ENOENT. + * + * Return 0 on success, or EBUSY or ENOENT as specified above. + */ +int dmu_object_free(objset_t *os, uint64_t object, dmu_tx_t *tx); + +/* + * Find the next allocated or free object. + * + * The objectp parameter is in-out. It will be updated to be the next + * object which is allocated. Ignore objects which have not been + * modified since txg. + * + * XXX Can only be called on a objset with no dirty data. + * + * Returns 0 on success, or ENOENT if there are no more objects. + */ +int dmu_object_next(objset_t *os, uint64_t *objectp, + boolean_t hole, uint64_t txg); + +/* + * Set the data blocksize for an object. + * + * The object cannot have any blocks allcated beyond the first. If + * the first block is allocated already, the new size must be greater + * than the current block size. If these conditions are not met, + * ENOTSUP will be returned. + * + * Returns 0 on success, or EBUSY if there are any holds on the object + * contents, or ENOTSUP as described above. + */ +int dmu_object_set_blocksize(objset_t *os, uint64_t object, uint64_t size, + int ibs, dmu_tx_t *tx); + +/* + * Set the checksum property on a dnode. The new checksum algorithm will + * apply to all newly written blocks; existing blocks will not be affected. + */ +void dmu_object_set_checksum(objset_t *os, uint64_t object, uint8_t checksum, + dmu_tx_t *tx); + +/* + * Set the compress property on a dnode. The new compression algorithm will + * apply to all newly written blocks; existing blocks will not be affected. + */ +void dmu_object_set_compress(objset_t *os, uint64_t object, uint8_t compress, + dmu_tx_t *tx); + +void +dmu_write_embedded(objset_t *os, uint64_t object, uint64_t offset, + void *data, uint8_t etype, uint8_t comp, int uncompressed_size, + int compressed_size, int byteorder, dmu_tx_t *tx); + +/* + * Decide how to write a block: checksum, compression, number of copies, etc. + */ +#define WP_NOFILL 0x1 +#define WP_DMU_SYNC 0x2 +#define WP_SPILL 0x4 + +void dmu_write_policy(objset_t *os, struct dnode *dn, int level, int wp, + struct zio_prop *zp); +/* + * The bonus data is accessed more or less like a regular buffer. + * You must dmu_bonus_hold() to get the buffer, which will give you a + * dmu_buf_t with db_offset==-1ULL, and db_size = the size of the bonus + * data. As with any normal buffer, you must call dmu_buf_read() to + * read db_data, dmu_buf_will_dirty() before modifying it, and the + * object must be held in an assigned transaction before calling + * dmu_buf_will_dirty. You may use dmu_buf_set_user() on the bonus + * buffer as well. You must release what you hold with dmu_buf_rele(). + * + * Returns ENOENT, EIO, or 0. + */ +int dmu_bonus_hold(objset_t *os, uint64_t object, void *tag, dmu_buf_t **); +int dmu_bonus_max(void); +int dmu_set_bonus(dmu_buf_t *, int, dmu_tx_t *); +int dmu_set_bonustype(dmu_buf_t *, dmu_object_type_t, dmu_tx_t *); +dmu_object_type_t dmu_get_bonustype(dmu_buf_t *); +int dmu_rm_spill(objset_t *, uint64_t, dmu_tx_t *); + +/* + * Special spill buffer support used by "SA" framework + */ + +int dmu_spill_hold_by_bonus(dmu_buf_t *bonus, void *tag, dmu_buf_t **dbp); +int dmu_spill_hold_by_dnode(struct dnode *dn, uint32_t flags, + void *tag, dmu_buf_t **dbp); +int dmu_spill_hold_existing(dmu_buf_t *bonus, void *tag, dmu_buf_t **dbp); + +/* + * Obtain the DMU buffer from the specified object which contains the + * specified offset. dmu_buf_hold() puts a "hold" on the buffer, so + * that it will remain in memory. You must release the hold with + * dmu_buf_rele(). You must not access the dmu_buf_t after releasing + * what you hold. You must have a hold on any dmu_buf_t* you pass to the DMU. + * + * You must call dmu_buf_read, dmu_buf_will_dirty, or dmu_buf_will_fill + * on the returned buffer before reading or writing the buffer's + * db_data. The comments for those routines describe what particular + * operations are valid after calling them. + * + * The object number must be a valid, allocated object number. + */ +int dmu_buf_hold(objset_t *os, uint64_t object, uint64_t offset, + void *tag, dmu_buf_t **, int flags); + +/* + * Add a reference to a dmu buffer that has already been held via + * dmu_buf_hold() in the current context. + */ +void dmu_buf_add_ref(dmu_buf_t *db, void* tag); + +/* + * Attempt to add a reference to a dmu buffer that is in an unknown state, + * using a pointer that may have been invalidated by eviction processing. + * The request will succeed if the passed in dbuf still represents the + * same os/object/blkid, is ineligible for eviction, and has at least + * one hold by a user other than the syncer. + */ +boolean_t dmu_buf_try_add_ref(dmu_buf_t *, objset_t *os, uint64_t object, + uint64_t blkid, void *tag); + +void dmu_buf_rele(dmu_buf_t *db, void *tag); +uint64_t dmu_buf_refcount(dmu_buf_t *db); + +/* + * dmu_buf_hold_array holds the DMU buffers which contain all bytes in a + * range of an object. A pointer to an array of dmu_buf_t*'s is + * returned (in *dbpp). + * + * dmu_buf_rele_array releases the hold on an array of dmu_buf_t*'s, and + * frees the array. The hold on the array of buffers MUST be released + * with dmu_buf_rele_array. You can NOT release the hold on each buffer + * individually with dmu_buf_rele. + */ +int dmu_buf_hold_array_by_bonus(dmu_buf_t *db, uint64_t offset, + uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp); +void dmu_buf_rele_array(dmu_buf_t **, int numbufs, void *tag); + +typedef void dmu_buf_evict_func_t(void *user_ptr); + +/* + * A DMU buffer user object may be associated with a dbuf for the + * duration of its lifetime. This allows the user of a dbuf (client) + * to attach private data to a dbuf (e.g. in-core only data such as a + * dnode_children_t, zap_t, or zap_leaf_t) and be optionally notified + * when that dbuf has been evicted. Clients typically respond to the + * eviction notification by freeing their private data, thus ensuring + * the same lifetime for both dbuf and private data. + * + * The mapping from a dmu_buf_user_t to any client private data is the + * client's responsibility. All current consumers of the API with private + * data embed a dmu_buf_user_t as the first member of the structure for + * their private data. This allows conversions between the two types + * with a simple cast. Since the DMU buf user API never needs access + * to the private data, other strategies can be employed if necessary + * or convenient for the client (e.g. using container_of() to do the + * conversion for private data that cannot have the dmu_buf_user_t as + * its first member). + * + * Eviction callbacks are executed without the dbuf mutex held or any + * other type of mechanism to guarantee that the dbuf is still available. + * For this reason, users must assume the dbuf has already been freed + * and not reference the dbuf from the callback context. + * + * Users requesting "immediate eviction" are notified as soon as the dbuf + * is only referenced by dirty records (dirties == holds). Otherwise the + * notification occurs after eviction processing for the dbuf begins. + */ +typedef struct dmu_buf_user { + /* + * Asynchronous user eviction callback state. + */ + taskq_ent_t dbu_tqent; + + /* This instance's eviction function pointer. */ + dmu_buf_evict_func_t *dbu_evict_func; +#ifdef ZFS_DEBUG + /* + * Pointer to user's dbuf pointer. NULL for clients that do + * not associate a dbuf with their user data. + * + * The dbuf pointer is cleared upon eviction so as to catch + * use-after-evict bugs in clients. + */ + dmu_buf_t **dbu_clear_on_evict_dbufp; +#endif +} dmu_buf_user_t; + +/* + * Initialize the given dmu_buf_user_t instance with the eviction function + * evict_func, to be called when the user is evicted. + * + * NOTE: This function should only be called once on a given dmu_buf_user_t. + * To allow enforcement of this, dbu must already be zeroed on entry. + */ +#ifdef __lint +/* Very ugly, but it beats issuing suppression directives in many Makefiles. */ +extern void +dmu_buf_init_user(dmu_buf_user_t *dbu, dmu_buf_evict_func_t *evict_func, + dmu_buf_t **clear_on_evict_dbufp); +#else /* __lint */ +static inline void +dmu_buf_init_user(dmu_buf_user_t *dbu, dmu_buf_evict_func_t *evict_func, + dmu_buf_t **clear_on_evict_dbufp) +{ + ASSERT(dbu->dbu_evict_func == NULL); + ASSERT(evict_func != NULL); + dbu->dbu_evict_func = evict_func; + taskq_init_ent(&dbu->dbu_tqent); +#ifdef ZFS_DEBUG + dbu->dbu_clear_on_evict_dbufp = clear_on_evict_dbufp; +#endif +} +#endif /* __lint */ + +/* + * Attach user data to a dbuf and mark it for normal (when the dbuf's + * data is cleared or its reference count goes to zero) eviction processing. + * + * Returns NULL on success, or the existing user if another user currently + * owns the buffer. + */ +void *dmu_buf_set_user(dmu_buf_t *db, dmu_buf_user_t *user); + +/* + * Attach user data to a dbuf and mark it for immediate (its dirty and + * reference counts are equal) eviction processing. + * + * Returns NULL on success, or the existing user if another user currently + * owns the buffer. + */ +void *dmu_buf_set_user_ie(dmu_buf_t *db, dmu_buf_user_t *user); + +/* + * Replace the current user of a dbuf. + * + * If given the current user of a dbuf, replaces the dbuf's user with + * "new_user" and returns the user data pointer that was replaced. + * Otherwise returns the current, and unmodified, dbuf user pointer. + */ +void *dmu_buf_replace_user(dmu_buf_t *db, + dmu_buf_user_t *old_user, dmu_buf_user_t *new_user); + +/* + * Remove the specified user data for a DMU buffer. + * + * Returns the user that was removed on success, or the current user if + * another user currently owns the buffer. + */ +void *dmu_buf_remove_user(dmu_buf_t *db, dmu_buf_user_t *user); + +/* + * Returns the user data (dmu_buf_user_t *) associated with this dbuf. + */ +void *dmu_buf_get_user(dmu_buf_t *db); + +/* Block until any in-progress dmu buf user evictions complete. */ +void dmu_buf_user_evict_wait(void); + +/* + * Returns the blkptr associated with this dbuf, or NULL if not set. + */ +struct blkptr *dmu_buf_get_blkptr(dmu_buf_t *db); + +/* + * Indicate that you are going to modify the buffer's data (db_data). + * + * The transaction (tx) must be assigned to a txg (ie. you've called + * dmu_tx_assign()). The buffer's object must be held in the tx + * (ie. you've called dmu_tx_hold_object(tx, db->db_object)). + */ +void dmu_buf_will_dirty(dmu_buf_t *db, dmu_tx_t *tx); + +/* + * Tells if the given dbuf is freeable. + */ +boolean_t dmu_buf_freeable(dmu_buf_t *); + +/* + * You must create a transaction, then hold the objects which you will + * (or might) modify as part of this transaction. Then you must assign + * the transaction to a transaction group. Once the transaction has + * been assigned, you can modify buffers which belong to held objects as + * part of this transaction. You can't modify buffers before the + * transaction has been assigned; you can't modify buffers which don't + * belong to objects which this transaction holds; you can't hold + * objects once the transaction has been assigned. You may hold an + * object which you are going to free (with dmu_object_free()), but you + * don't have to. + * + * You can abort the transaction before it has been assigned. + * + * Note that you may hold buffers (with dmu_buf_hold) at any time, + * regardless of transaction state. + */ + +#define DMU_NEW_OBJECT (-1ULL) +#define DMU_OBJECT_END (-1ULL) + +dmu_tx_t *dmu_tx_create(objset_t *os); +void dmu_tx_hold_write(dmu_tx_t *tx, uint64_t object, uint64_t off, int len); +void dmu_tx_hold_free(dmu_tx_t *tx, uint64_t object, uint64_t off, + uint64_t len); +void dmu_tx_hold_zap(dmu_tx_t *tx, uint64_t object, int add, const char *name); +void dmu_tx_hold_bonus(dmu_tx_t *tx, uint64_t object); +void dmu_tx_hold_spill(dmu_tx_t *tx, uint64_t object); +void dmu_tx_hold_sa(dmu_tx_t *tx, struct sa_handle *hdl, boolean_t may_grow); +void dmu_tx_hold_sa_create(dmu_tx_t *tx, int total_size); +void dmu_tx_abort(dmu_tx_t *tx); +int dmu_tx_assign(dmu_tx_t *tx, enum txg_how txg_how); +void dmu_tx_wait(dmu_tx_t *tx); +void dmu_tx_commit(dmu_tx_t *tx); + +/* + * To register a commit callback, dmu_tx_callback_register() must be called. + * + * dcb_data is a pointer to caller private data that is passed on as a + * callback parameter. The caller is responsible for properly allocating and + * freeing it. + * + * When registering a callback, the transaction must be already created, but + * it cannot be committed or aborted. It can be assigned to a txg or not. + * + * The callback will be called after the transaction has been safely written + * to stable storage and will also be called if the dmu_tx is aborted. + * If there is any error which prevents the transaction from being committed to + * disk, the callback will be called with a value of error != 0. + */ +typedef void dmu_tx_callback_func_t(void *dcb_data, int error); + +void dmu_tx_callback_register(dmu_tx_t *tx, dmu_tx_callback_func_t *dcb_func, + void *dcb_data); + +/* + * Free up the data blocks for a defined range of a file. If size is + * -1, the range from offset to end-of-file is freed. + */ +int dmu_free_range(objset_t *os, uint64_t object, uint64_t offset, + uint64_t size, dmu_tx_t *tx); +int dmu_free_long_range(objset_t *os, uint64_t object, uint64_t offset, + uint64_t size); +int dmu_free_long_object(objset_t *os, uint64_t object); + +/* + * Convenience functions. + * + * Canfail routines will return 0 on success, or an errno if there is a + * nonrecoverable I/O error. + */ +#define DMU_READ_PREFETCH 0 /* prefetch */ +#define DMU_READ_NO_PREFETCH 1 /* don't prefetch */ +int dmu_read(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + void *buf, uint32_t flags); +void dmu_write(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + const void *buf, dmu_tx_t *tx); +void dmu_prealloc(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + dmu_tx_t *tx); +#ifdef _KERNEL +#include +int dmu_read_bio(objset_t *os, uint64_t object, struct bio *bio); +int dmu_write_bio(objset_t *os, uint64_t object, struct bio *bio, + dmu_tx_t *tx); +int dmu_read_uio(objset_t *os, uint64_t object, struct uio *uio, uint64_t size); +int dmu_read_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size); +int dmu_write_uio(objset_t *os, uint64_t object, struct uio *uio, uint64_t size, + dmu_tx_t *tx); +int dmu_write_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size, + dmu_tx_t *tx); +#endif +struct arc_buf *dmu_request_arcbuf(dmu_buf_t *handle, int size); +void dmu_return_arcbuf(struct arc_buf *buf); +void dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, struct arc_buf *buf, + dmu_tx_t *tx); +int dmu_xuio_init(struct xuio *uio, int niov); +void dmu_xuio_fini(struct xuio *uio); +int dmu_xuio_add(struct xuio *uio, struct arc_buf *abuf, offset_t off, + size_t n); +int dmu_xuio_cnt(struct xuio *uio); +struct arc_buf *dmu_xuio_arcbuf(struct xuio *uio, int i); +void dmu_xuio_clear(struct xuio *uio, int i); +void xuio_stat_wbuf_copied(void); +void xuio_stat_wbuf_nocopy(void); + +extern int zfs_prefetch_disable; +extern int zfs_max_recordsize; + +/* + * Asynchronously try to read in the data. + */ +void dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, + uint64_t len); + +typedef struct dmu_object_info { + /* All sizes are in bytes unless otherwise indicated. */ + uint32_t doi_data_block_size; + uint32_t doi_metadata_block_size; + dmu_object_type_t doi_type; + dmu_object_type_t doi_bonus_type; + uint64_t doi_bonus_size; + uint8_t doi_indirection; /* 2 = dnode->indirect->data */ + uint8_t doi_checksum; + uint8_t doi_compress; + uint8_t doi_nblkptr; + uint8_t doi_pad[4]; + uint64_t doi_physical_blocks_512; /* data + metadata, 512b blks */ + uint64_t doi_max_offset; + uint64_t doi_fill_count; /* number of non-empty blocks */ +} dmu_object_info_t; + +typedef void (*const arc_byteswap_func_t)(void *buf, size_t size); + +typedef struct dmu_object_type_info { + dmu_object_byteswap_t ot_byteswap; + boolean_t ot_metadata; + char *ot_name; +} dmu_object_type_info_t; + +typedef const struct dmu_object_byteswap_info { + arc_byteswap_func_t ob_func; + char *ob_name; +} dmu_object_byteswap_info_t; + +extern const dmu_object_type_info_t dmu_ot[DMU_OT_NUMTYPES]; +extern const dmu_object_byteswap_info_t dmu_ot_byteswap[DMU_BSWAP_NUMFUNCS]; + +/* + * Get information on a DMU object. + * + * Return 0 on success or ENOENT if object is not allocated. + * + * If doi is NULL, just indicates whether the object exists. + */ +int dmu_object_info(objset_t *os, uint64_t object, dmu_object_info_t *doi); +void __dmu_object_info_from_dnode(struct dnode *dn, dmu_object_info_t *doi); +/* Like dmu_object_info, but faster if you have a held dnode in hand. */ +void dmu_object_info_from_dnode(struct dnode *dn, dmu_object_info_t *doi); +/* Like dmu_object_info, but faster if you have a held dbuf in hand. */ +void dmu_object_info_from_db(dmu_buf_t *db, dmu_object_info_t *doi); +/* + * Like dmu_object_info_from_db, but faster still when you only care about + * the size. This is specifically optimized for zfs_getattr(). + */ +void dmu_object_size_from_db(dmu_buf_t *db, uint32_t *blksize, + u_longlong_t *nblk512); + +typedef struct dmu_objset_stats { + uint64_t dds_num_clones; /* number of clones of this */ + uint64_t dds_creation_txg; + uint64_t dds_guid; + dmu_objset_type_t dds_type; + uint8_t dds_is_snapshot; + uint8_t dds_inconsistent; + char dds_origin[MAXNAMELEN]; +} dmu_objset_stats_t; + +/* + * Get stats on a dataset. + */ +void dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat); + +/* + * Add entries to the nvlist for all the objset's properties. See + * zfs_prop_table[] and zfs(1m) for details on the properties. + */ +void dmu_objset_stats(objset_t *os, struct nvlist *nv); + +/* + * Get the space usage statistics for statvfs(). + * + * refdbytes is the amount of space "referenced" by this objset. + * availbytes is the amount of space available to this objset, taking + * into account quotas & reservations, assuming that no other objsets + * use the space first. These values correspond to the 'referenced' and + * 'available' properties, described in the zfs(1m) manpage. + * + * usedobjs and availobjs are the number of objects currently allocated, + * and available. + */ +void dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, + uint64_t *usedobjsp, uint64_t *availobjsp); + +/* + * The fsid_guid is a 56-bit ID that can change to avoid collisions. + * (Contrast with the ds_guid which is a 64-bit ID that will never + * change, so there is a small probability that it will collide.) + */ +uint64_t dmu_objset_fsid_guid(objset_t *os); + +/* + * Get the [cm]time for an objset's snapshot dir + */ +timestruc_t dmu_objset_snap_cmtime(objset_t *os); + +int dmu_objset_is_snapshot(objset_t *os); + +extern struct spa *dmu_objset_spa(objset_t *os); +extern struct zilog *dmu_objset_zil(objset_t *os); +extern struct dsl_pool *dmu_objset_pool(objset_t *os); +extern struct dsl_dataset *dmu_objset_ds(objset_t *os); +extern void dmu_objset_name(objset_t *os, char *buf); +extern dmu_objset_type_t dmu_objset_type(objset_t *os); +extern uint64_t dmu_objset_id(objset_t *os); +extern zfs_sync_type_t dmu_objset_syncprop(objset_t *os); +extern zfs_logbias_op_t dmu_objset_logbias(objset_t *os); +extern int dmu_snapshot_list_next(objset_t *os, int namelen, char *name, + uint64_t *id, uint64_t *offp, boolean_t *case_conflict); +extern int dmu_snapshot_lookup(objset_t *os, const char *name, uint64_t *val); +extern int dmu_snapshot_realname(objset_t *os, char *name, char *real, + int maxlen, boolean_t *conflict); +extern int dmu_dir_list_next(objset_t *os, int namelen, char *name, + uint64_t *idp, uint64_t *offp); + +typedef int objset_used_cb_t(dmu_object_type_t bonustype, + void *bonus, uint64_t *userp, uint64_t *groupp); +extern void dmu_objset_register_type(dmu_objset_type_t ost, + objset_used_cb_t *cb); +extern void dmu_objset_set_user(objset_t *os, void *user_ptr); +extern void *dmu_objset_get_user(objset_t *os); + +/* + * Return the txg number for the given assigned transaction. + */ +uint64_t dmu_tx_get_txg(dmu_tx_t *tx); + +/* + * Synchronous write. + * If a parent zio is provided this function initiates a write on the + * provided buffer as a child of the parent zio. + * In the absence of a parent zio, the write is completed synchronously. + * At write completion, blk is filled with the bp of the written block. + * Note that while the data covered by this function will be on stable + * storage when the write completes this new data does not become a + * permanent part of the file until the associated transaction commits. + */ + +/* + * {zfs,zvol,ztest}_get_done() args + */ +typedef struct zgd { + struct zilog *zgd_zilog; + struct blkptr *zgd_bp; + dmu_buf_t *zgd_db; + struct rl *zgd_rl; + void *zgd_private; +} zgd_t; + +typedef void dmu_sync_cb_t(zgd_t *arg, int error); +int dmu_sync(struct zio *zio, uint64_t txg, dmu_sync_cb_t *done, zgd_t *zgd); + +/* + * Find the next hole or data block in file starting at *off + * Return found offset in *off. Return ESRCH for end of file. + */ +int dmu_offset_next(objset_t *os, uint64_t object, boolean_t hole, + uint64_t *off); + +/* + * Initial setup and final teardown. + */ +extern void dmu_init(void); +extern void dmu_fini(void); + +typedef void (*dmu_traverse_cb_t)(objset_t *os, void *arg, struct blkptr *bp, + uint64_t object, uint64_t offset, int len); +void dmu_traverse_objset(objset_t *os, uint64_t txg_start, + dmu_traverse_cb_t cb, void *arg); + +int dmu_diff(const char *tosnap_name, const char *fromsnap_name, + struct vnode *vp, offset_t *offp); + +/* CRC64 table */ +#define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ +extern uint64_t zfs_crc64_table[256]; + +extern int zfs_mdcomp_disable; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DMU_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_impl.h +++ linux-4.4.0/zfs/include/sys/dmu_impl.h @@ -0,0 +1,286 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DMU_IMPL_H +#define _SYS_DMU_IMPL_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This is the locking strategy for the DMU. Numbers in parenthesis are + * cases that use that lock order, referenced below: + * + * ARC is self-contained + * bplist is self-contained + * refcount is self-contained + * txg is self-contained (hopefully!) + * zst_lock + * zf_rwlock + * + * XXX try to improve evicting path? + * + * dp_config_rwlock > os_obj_lock > dn_struct_rwlock > + * dn_dbufs_mtx > hash_mutexes > db_mtx > dd_lock > leafs + * + * dp_config_rwlock + * must be held before: everything + * protects dd namespace changes + * protects property changes globally + * held from: + * dsl_dir_open/r: + * dsl_dir_create_sync/w: + * dsl_dir_sync_destroy/w: + * dsl_dir_rename_sync/w: + * dsl_prop_changed_notify/r: + * + * os_obj_lock + * must be held before: + * everything except dp_config_rwlock + * protects os_obj_next + * held from: + * dmu_object_alloc: dn_dbufs_mtx, db_mtx, hash_mutexes, dn_struct_rwlock + * + * dn_struct_rwlock + * must be held before: + * everything except dp_config_rwlock and os_obj_lock + * protects structure of dnode (eg. nlevels) + * db_blkptr can change when syncing out change to nlevels + * dn_maxblkid + * dn_nlevels + * dn_*blksz* + * phys nlevels, maxblkid, physical blkptr_t's (?) + * held from: + * callers of dbuf_read_impl, dbuf_hold[_impl], dbuf_prefetch + * dmu_object_info_from_dnode: dn_dirty_mtx (dn_datablksz) + * dmu_tx_count_free: + * dbuf_read_impl: db_mtx, dmu_zfetch() + * dmu_zfetch: zf_rwlock/r, zst_lock, dbuf_prefetch() + * dbuf_new_size: db_mtx + * dbuf_dirty: db_mtx + * dbuf_findbp: (callers, phys? - the real need) + * dbuf_create: dn_dbufs_mtx, hash_mutexes, db_mtx (phys?) + * dbuf_prefetch: dn_dirty_mtx, hash_mutexes, db_mtx, dn_dbufs_mtx + * dbuf_hold_impl: hash_mutexes, db_mtx, dn_dbufs_mtx, dbuf_findbp() + * dnode_sync/w (increase_indirection): db_mtx (phys) + * dnode_set_blksz/w: dn_dbufs_mtx (dn_*blksz*) + * dnode_new_blkid/w: (dn_maxblkid) + * dnode_free_range/w: dn_dirty_mtx (dn_maxblkid) + * dnode_next_offset: (phys) + * + * dn_dbufs_mtx + * must be held before: + * db_mtx, hash_mutexes + * protects: + * dn_dbufs + * dn_evicted + * held from: + * dmu_evict_user: db_mtx (dn_dbufs) + * dbuf_free_range: db_mtx (dn_dbufs) + * dbuf_remove_ref: db_mtx, callees: + * dbuf_hash_remove: hash_mutexes, db_mtx + * dbuf_create: hash_mutexes, db_mtx (dn_dbufs) + * dnode_set_blksz: (dn_dbufs) + * + * hash_mutexes (global) + * must be held before: + * db_mtx + * protects dbuf_hash_table (global) and db_hash_next + * held from: + * dbuf_find: db_mtx + * dbuf_hash_insert: db_mtx + * dbuf_hash_remove: db_mtx + * + * db_mtx (meta-leaf) + * must be held before: + * dn_mtx, dn_dirty_mtx, dd_lock (leaf mutexes) + * protects: + * db_state + * db_holds + * db_buf + * db_changed + * db_data_pending + * db_dirtied + * db_link + * db_dirty_node (??) + * db_dirtycnt + * db_d.* + * db.* + * held from: + * dbuf_dirty: dn_mtx, dn_dirty_mtx + * dbuf_dirty->dsl_dir_willuse_space: dd_lock + * dbuf_dirty->dbuf_new_block->dsl_dataset_block_freeable: dd_lock + * dbuf_undirty: dn_dirty_mtx (db_d) + * dbuf_write_done: dn_dirty_mtx (db_state) + * dbuf_* + * dmu_buf_update_user: none (db_d) + * dmu_evict_user: none (db_d) (maybe can eliminate) + * dbuf_find: none (db_holds) + * dbuf_hash_insert: none (db_holds) + * dmu_buf_read_array_impl: none (db_state, db_changed) + * dmu_sync: none (db_dirty_node, db_d) + * dnode_reallocate: none (db) + * + * dn_mtx (leaf) + * protects: + * dn_dirty_dbufs + * dn_ranges + * phys accounting + * dn_allocated_txg + * dn_free_txg + * dn_assigned_txg + * dd_assigned_tx + * dn_notxholds + * dn_dirtyctx + * dn_dirtyctx_firstset + * (dn_phys copy fields?) + * (dn_phys contents?) + * held from: + * dnode_* + * dbuf_dirty: none + * dbuf_sync: none (phys accounting) + * dbuf_undirty: none (dn_ranges, dn_dirty_dbufs) + * dbuf_write_done: none (phys accounting) + * dmu_object_info_from_dnode: none (accounting) + * dmu_tx_commit: none + * dmu_tx_hold_object_impl: none + * dmu_tx_try_assign: dn_notxholds(cv) + * dmu_tx_unassign: none + * + * dd_lock + * must be held before: + * ds_lock + * ancestors' dd_lock + * protects: + * dd_prop_cbs + * dd_sync_* + * dd_used_bytes + * dd_tempreserved + * dd_space_towrite + * dd_myname + * dd_phys accounting? + * held from: + * dsl_dir_* + * dsl_prop_changed_notify: none (dd_prop_cbs) + * dsl_prop_register: none (dd_prop_cbs) + * dsl_prop_unregister: none (dd_prop_cbs) + * dsl_dataset_block_freeable: none (dd_sync_*) + * + * os_lock (leaf) + * protects: + * os_dirty_dnodes + * os_free_dnodes + * os_dnodes + * os_downgraded_dbufs + * dn_dirtyblksz + * dn_dirty_link + * held from: + * dnode_create: none (os_dnodes) + * dnode_destroy: none (os_dnodes) + * dnode_setdirty: none (dn_dirtyblksz, os_*_dnodes) + * dnode_free: none (dn_dirtyblksz, os_*_dnodes) + * + * ds_lock + * protects: + * ds_objset + * ds_open_refcount + * ds_snapname + * ds_phys accounting + * ds_phys userrefs zapobj + * ds_reserved + * held from: + * dsl_dataset_* + * + * dr_mtx (leaf) + * protects: + * dr_children + * held from: + * dbuf_dirty + * dbuf_undirty + * dbuf_sync_indirect + * dnode_new_blkid + */ + +struct objset; +struct dmu_pool; + +typedef struct dmu_xuio { + int next; + int cnt; + struct arc_buf **bufs; + iovec_t *iovp; +} dmu_xuio_t; + +/* + * The list of data whose inclusion in a send stream can be pending from + * one call to backup_cb to another. Multiple calls to dump_free() and + * dump_freeobjects() can be aggregated into a single DRR_FREE or + * DRR_FREEOBJECTS replay record. + */ +typedef enum { + PENDING_NONE, + PENDING_FREE, + PENDING_FREEOBJECTS +} dmu_pendop_t; + +typedef struct dmu_sendarg { + list_node_t dsa_link; + dmu_replay_record_t *dsa_drr; + vnode_t *dsa_vp; + int dsa_outfd; + proc_t *dsa_proc; + offset_t *dsa_off; + objset_t *dsa_os; + zio_cksum_t dsa_zc; + uint64_t dsa_toguid; + int dsa_err; + dmu_pendop_t dsa_pending_op; + boolean_t dsa_incremental; + uint64_t dsa_featureflags; + uint64_t dsa_last_data_object; + uint64_t dsa_last_data_offset; +} dmu_sendarg_t; + +void dmu_object_zapify(objset_t *, uint64_t, dmu_object_type_t, dmu_tx_t *); +void dmu_object_free_zapified(objset_t *, uint64_t, dmu_tx_t *); +int dmu_buf_hold_noread(objset_t *, uint64_t, uint64_t, + void *, dmu_buf_t **); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DMU_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_objset.h +++ linux-4.4.0/zfs/include/sys/dmu_objset.h @@ -0,0 +1,186 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#ifndef _SYS_DMU_OBJSET_H +#define _SYS_DMU_OBJSET_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern krwlock_t os_lock; + +struct dsl_pool; +struct dsl_dataset; +struct dmu_tx; + +#define OBJSET_PHYS_SIZE 2048 +#define OBJSET_OLD_PHYS_SIZE 1024 + +#define OBJSET_BUF_HAS_USERUSED(buf) \ + (arc_buf_size(buf) > OBJSET_OLD_PHYS_SIZE) + +#define OBJSET_FLAG_USERACCOUNTING_COMPLETE (1ULL<<0) + +typedef struct objset_phys { + dnode_phys_t os_meta_dnode; + zil_header_t os_zil_header; + uint64_t os_type; + uint64_t os_flags; + char os_pad[OBJSET_PHYS_SIZE - sizeof (dnode_phys_t)*3 - + sizeof (zil_header_t) - sizeof (uint64_t)*2]; + dnode_phys_t os_userused_dnode; + dnode_phys_t os_groupused_dnode; +} objset_phys_t; + +struct objset { + /* Immutable: */ + struct dsl_dataset *os_dsl_dataset; + spa_t *os_spa; + arc_buf_t *os_phys_buf; + objset_phys_t *os_phys; + /* + * The following "special" dnodes have no parent, are exempt + * from dnode_move(), and are not recorded in os_dnodes, but they + * root their descendents in this objset using handles anyway, so + * that all access to dnodes from dbufs consistently uses handles. + */ + dnode_handle_t os_meta_dnode; + dnode_handle_t os_userused_dnode; + dnode_handle_t os_groupused_dnode; + zilog_t *os_zil; + + list_node_t os_evicting_node; + + /* can change, under dsl_dir's locks: */ + enum zio_checksum os_checksum; + enum zio_compress os_compress; + uint8_t os_copies; + enum zio_checksum os_dedup_checksum; + boolean_t os_dedup_verify; + zfs_logbias_op_t os_logbias; + zfs_cache_type_t os_primary_cache; + zfs_cache_type_t os_secondary_cache; + zfs_sync_type_t os_sync; + zfs_redundant_metadata_type_t os_redundant_metadata; + int os_recordsize; + + /* no lock needed: */ + struct dmu_tx *os_synctx; /* XXX sketchy */ + blkptr_t *os_rootbp; + zil_header_t os_zil_header; + list_t os_synced_dnodes; + uint64_t os_flags; + + /* Protected by os_obj_lock */ + kmutex_t os_obj_lock; + uint64_t os_obj_next; + + /* Protected by os_lock */ + kmutex_t os_lock; + list_t os_dirty_dnodes[TXG_SIZE]; + list_t os_free_dnodes[TXG_SIZE]; + list_t os_dnodes; + list_t os_downgraded_dbufs; + + /* stuff we store for the user */ + kmutex_t os_user_ptr_lock; + void *os_user_ptr; + sa_os_t *os_sa; +}; + +#define DMU_META_OBJSET 0 +#define DMU_META_DNODE_OBJECT 0 +#define DMU_OBJECT_IS_SPECIAL(obj) ((int64_t)(obj) <= 0) +#define DMU_META_DNODE(os) ((os)->os_meta_dnode.dnh_dnode) +#define DMU_USERUSED_DNODE(os) ((os)->os_userused_dnode.dnh_dnode) +#define DMU_GROUPUSED_DNODE(os) ((os)->os_groupused_dnode.dnh_dnode) + +#define DMU_OS_IS_L2CACHEABLE(os) \ + ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ + (os)->os_secondary_cache == ZFS_CACHE_METADATA) + +#define DMU_OS_IS_L2COMPRESSIBLE(os) (zfs_mdcomp_disable == B_FALSE) + +/* called from zpl */ +int dmu_objset_hold(const char *name, void *tag, objset_t **osp); +int dmu_objset_own(const char *name, dmu_objset_type_t type, + boolean_t readonly, void *tag, objset_t **osp); +int dmu_objset_own_obj(struct dsl_pool *dp, uint64_t obj, + dmu_objset_type_t type, boolean_t readonly, void *tag, objset_t **osp); +void dmu_objset_refresh_ownership(objset_t *os, void *tag); +void dmu_objset_rele(objset_t *os, void *tag); +void dmu_objset_disown(objset_t *os, void *tag); +int dmu_objset_from_ds(struct dsl_dataset *ds, objset_t **osp); + +void dmu_objset_stats(objset_t *os, nvlist_t *nv); +void dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat); +void dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, + uint64_t *usedobjsp, uint64_t *availobjsp); +uint64_t dmu_objset_fsid_guid(objset_t *os); +int dmu_objset_find_dp(struct dsl_pool *dp, uint64_t ddobj, + int func(struct dsl_pool *, struct dsl_dataset *, void *), + void *arg, int flags); +void dmu_objset_evict_dbufs(objset_t *os); +timestruc_t dmu_objset_snap_cmtime(objset_t *os); + +/* called from dsl */ +void dmu_objset_sync(objset_t *os, zio_t *zio, dmu_tx_t *tx); +boolean_t dmu_objset_is_dirty(objset_t *os, uint64_t txg); +objset_t *dmu_objset_create_impl(spa_t *spa, struct dsl_dataset *ds, + blkptr_t *bp, dmu_objset_type_t type, dmu_tx_t *tx); +int dmu_objset_open_impl(spa_t *spa, struct dsl_dataset *ds, blkptr_t *bp, + objset_t **osp); +void dmu_objset_evict(objset_t *os); +void dmu_objset_do_userquota_updates(objset_t *os, dmu_tx_t *tx); +void dmu_objset_userquota_get_ids(dnode_t *dn, boolean_t before, dmu_tx_t *tx); +boolean_t dmu_objset_userused_enabled(objset_t *os); +int dmu_objset_userspace_upgrade(objset_t *os); +boolean_t dmu_objset_userspace_present(objset_t *os); +int dmu_fsname(const char *snapname, char *buf); + +void dmu_objset_evict_done(objset_t *os); + +void dmu_objset_init(void); +void dmu_objset_fini(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DMU_OBJSET_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_send.h +++ linux-4.4.0/zfs/include/sys/dmu_send.h @@ -0,0 +1,73 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. + */ + +#ifndef _DMU_SEND_H +#define _DMU_SEND_H + +#include +#include + +struct vnode; +struct dsl_dataset; +struct drr_begin; +struct avl_tree; + +int dmu_send(const char *tosnap, const char *fromsnap, + boolean_t embedok, boolean_t large_block_ok, + int outfd, struct vnode *vp, offset_t *off); +int dmu_send_estimate(struct dsl_dataset *ds, struct dsl_dataset *fromds, + uint64_t *sizep); +int dmu_send_estimate_from_txg(struct dsl_dataset *ds, uint64_t fromtxg, + uint64_t *sizep); +int dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, + boolean_t embedok, boolean_t large_block_ok, + int outfd, struct vnode *vp, offset_t *off); + +typedef struct dmu_recv_cookie { + struct dsl_dataset *drc_ds; + struct drr_begin *drc_drrb; + const char *drc_tofs; + const char *drc_tosnap; + boolean_t drc_newfs; + boolean_t drc_byteswap; + boolean_t drc_force; + struct avl_tree *drc_guid_to_ds_map; + zio_cksum_t drc_cksum; + uint64_t drc_newsnapobj; + void *drc_owner; + cred_t *drc_cred; +} dmu_recv_cookie_t; + +int dmu_recv_begin(char *tofs, char *tosnap, struct drr_begin *drrb, + boolean_t force, char *origin, dmu_recv_cookie_t *drc); +int dmu_recv_stream(dmu_recv_cookie_t *drc, struct vnode *vp, offset_t *voffp, + int cleanup_fd, uint64_t *action_handlep); +int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner); +boolean_t dmu_objset_is_receiving(objset_t *os); + +#endif /* _DMU_SEND_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_traverse.h +++ linux-4.4.0/zfs/include/sys/dmu_traverse.h @@ -0,0 +1,67 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DMU_TRAVERSE_H +#define _SYS_DMU_TRAVERSE_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dnode_phys; +struct dsl_dataset; +struct zilog; +struct arc_buf; + +typedef int (blkptr_cb_t)(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const struct dnode_phys *dnp, void *arg); + +#define TRAVERSE_PRE (1<<0) +#define TRAVERSE_POST (1<<1) +#define TRAVERSE_PREFETCH_METADATA (1<<2) +#define TRAVERSE_PREFETCH_DATA (1<<3) +#define TRAVERSE_PREFETCH (TRAVERSE_PREFETCH_METADATA | TRAVERSE_PREFETCH_DATA) +#define TRAVERSE_HARD (1<<4) + +/* Special traverse error return value to indicate skipping of children */ +#define TRAVERSE_VISIT_NO_CHILDREN -1 + +int traverse_dataset(struct dsl_dataset *ds, + uint64_t txg_start, int flags, blkptr_cb_t func, void *arg); +int traverse_dataset_destroyed(spa_t *spa, blkptr_t *blkptr, + uint64_t txg_start, zbookmark_phys_t *resume, int flags, + blkptr_cb_t func, void *arg); +int traverse_pool(spa_t *spa, + uint64_t txg_start, int flags, blkptr_cb_t func, void *arg); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DMU_TRAVERSE_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_tx.h +++ linux-4.4.0/zfs/include/sys/dmu_tx.h @@ -0,0 +1,193 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DMU_TX_H +#define _SYS_DMU_TX_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dmu_buf_impl; +struct dmu_tx_hold; +struct dnode_link; +struct dsl_pool; +struct dnode; +struct dsl_dir; + +struct dmu_tx { + /* + * No synchronization is needed because a tx can only be handled + * by one thread. + */ + list_t tx_holds; /* list of dmu_tx_hold_t */ + objset_t *tx_objset; + struct dsl_dir *tx_dir; + struct dsl_pool *tx_pool; + uint64_t tx_txg; + uint64_t tx_lastsnap_txg; + uint64_t tx_lasttried_txg; + txg_handle_t tx_txgh; + void *tx_tempreserve_cookie; + struct dmu_tx_hold *tx_needassign_txh; + + /* list of dmu_tx_callback_t on this dmu_tx */ + list_t tx_callbacks; + + /* placeholder for syncing context, doesn't need specific holds */ + boolean_t tx_anyobj; + + /* has this transaction already been delayed? */ + boolean_t tx_waited; + + /* time this transaction was created */ + hrtime_t tx_start; + + /* need to wait for sufficient dirty space */ + boolean_t tx_wait_dirty; + + int tx_err; +#ifdef DEBUG_DMU_TX + uint64_t tx_space_towrite; + uint64_t tx_space_tofree; + uint64_t tx_space_tooverwrite; + uint64_t tx_space_tounref; + refcount_t tx_space_written; + refcount_t tx_space_freed; +#endif +}; + +enum dmu_tx_hold_type { + THT_NEWOBJECT, + THT_WRITE, + THT_BONUS, + THT_FREE, + THT_ZAP, + THT_SPACE, + THT_SPILL, + THT_NUMTYPES +}; + +typedef struct dmu_tx_hold { + dmu_tx_t *txh_tx; + list_node_t txh_node; + struct dnode *txh_dnode; + uint64_t txh_space_towrite; + uint64_t txh_space_tofree; + uint64_t txh_space_tooverwrite; + uint64_t txh_space_tounref; + uint64_t txh_memory_tohold; + uint64_t txh_fudge; +#ifdef DEBUG_DMU_TX + enum dmu_tx_hold_type txh_type; + uint64_t txh_arg1; + uint64_t txh_arg2; +#endif +} dmu_tx_hold_t; + +typedef struct dmu_tx_callback { + list_node_t dcb_node; /* linked to tx_callbacks list */ + dmu_tx_callback_func_t *dcb_func; /* caller function pointer */ + void *dcb_data; /* caller private data */ +} dmu_tx_callback_t; + +/* + * Used for dmu tx kstat. + */ +typedef struct dmu_tx_stats { + kstat_named_t dmu_tx_assigned; + kstat_named_t dmu_tx_delay; + kstat_named_t dmu_tx_error; + kstat_named_t dmu_tx_suspended; + kstat_named_t dmu_tx_group; + kstat_named_t dmu_tx_memory_reserve; + kstat_named_t dmu_tx_memory_reclaim; + kstat_named_t dmu_tx_dirty_throttle; + kstat_named_t dmu_tx_dirty_delay; + kstat_named_t dmu_tx_dirty_over_max; + kstat_named_t dmu_tx_quota; +} dmu_tx_stats_t; + +extern dmu_tx_stats_t dmu_tx_stats; + +#define DMU_TX_STAT_INCR(stat, val) \ + atomic_add_64(&dmu_tx_stats.stat.value.ui64, (val)); +#define DMU_TX_STAT_BUMP(stat) \ + DMU_TX_STAT_INCR(stat, 1); + +/* + * These routines are defined in dmu.h, and are called by the user. + */ +dmu_tx_t *dmu_tx_create(objset_t *dd); +int dmu_tx_assign(dmu_tx_t *tx, txg_how_t txg_how); +void dmu_tx_commit(dmu_tx_t *tx); +void dmu_tx_abort(dmu_tx_t *tx); +uint64_t dmu_tx_get_txg(dmu_tx_t *tx); +struct dsl_pool *dmu_tx_pool(dmu_tx_t *tx); +void dmu_tx_wait(dmu_tx_t *tx); + +void dmu_tx_callback_register(dmu_tx_t *tx, dmu_tx_callback_func_t *dcb_func, + void *dcb_data); +void dmu_tx_do_callbacks(list_t *cb_list, int error); + +/* + * These routines are defined in dmu_spa.h, and are called by the SPA. + */ +extern dmu_tx_t *dmu_tx_create_assigned(struct dsl_pool *dp, uint64_t txg); + +/* + * These routines are only called by the DMU. + */ +dmu_tx_t *dmu_tx_create_dd(dsl_dir_t *dd); +int dmu_tx_is_syncing(dmu_tx_t *tx); +int dmu_tx_private_ok(dmu_tx_t *tx); +void dmu_tx_add_new_object(dmu_tx_t *tx, objset_t *os, uint64_t object); +void dmu_tx_willuse_space(dmu_tx_t *tx, int64_t delta); +void dmu_tx_dirty_buf(dmu_tx_t *tx, struct dmu_buf_impl *db); +int dmu_tx_holds(dmu_tx_t *tx, uint64_t object); +void dmu_tx_hold_space(dmu_tx_t *tx, uint64_t space); + +#ifdef DEBUG_DMU_TX +#define DMU_TX_DIRTY_BUF(tx, db) dmu_tx_dirty_buf(tx, db) +#else +#define DMU_TX_DIRTY_BUF(tx, db) +#endif + +void dmu_tx_init(void); +void dmu_tx_fini(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DMU_TX_H */ --- linux-4.4.0.orig/zfs/include/sys/dmu_zfetch.h +++ linux-4.4.0/zfs/include/sys/dmu_zfetch.h @@ -0,0 +1,76 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _DFETCH_H +#define _DFETCH_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern unsigned long zfetch_array_rd_sz; + +struct dnode; /* so we can reference dnode */ + +typedef enum zfetch_dirn { + ZFETCH_FORWARD = 1, /* prefetch increasing block numbers */ + ZFETCH_BACKWARD = -1 /* prefetch decreasing block numbers */ +} zfetch_dirn_t; + +typedef struct zstream { + uint64_t zst_offset; /* offset of starting block in range */ + uint64_t zst_len; /* length of range, in blocks */ + zfetch_dirn_t zst_direction; /* direction of prefetch */ + uint64_t zst_stride; /* length of stride, in blocks */ + uint64_t zst_ph_offset; /* prefetch offset, in blocks */ + uint64_t zst_cap; /* prefetch limit (cap), in blocks */ + kmutex_t zst_lock; /* protects stream */ + clock_t zst_last; /* lbolt of last prefetch */ + list_node_t zst_node; /* next zstream here */ +} zstream_t; + +typedef struct zfetch { + krwlock_t zf_rwlock; /* protects zfetch structure */ + list_t zf_stream; /* AVL tree of zstream_t's */ + struct dnode *zf_dnode; /* dnode that owns this zfetch */ + uint32_t zf_stream_cnt; /* # of active streams */ + uint64_t zf_alloc_fail; /* # of failed attempts to alloc strm */ +} zfetch_t; + +void zfetch_init(void); +void zfetch_fini(void); + +void dmu_zfetch_init(zfetch_t *, struct dnode *); +void dmu_zfetch_rele(zfetch_t *); +void dmu_zfetch(zfetch_t *, uint64_t, uint64_t, int); + + +#ifdef __cplusplus +} +#endif + +#endif /* _DFETCH_H */ --- linux-4.4.0.orig/zfs/include/sys/dnode.h +++ linux-4.4.0/zfs/include/sys/dnode.h @@ -0,0 +1,366 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_DNODE_H +#define _SYS_DNODE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * dnode_hold() flags. + */ +#define DNODE_MUST_BE_ALLOCATED 1 +#define DNODE_MUST_BE_FREE 2 + +/* + * dnode_next_offset() flags. + */ +#define DNODE_FIND_HOLE 1 +#define DNODE_FIND_BACKWARDS 2 +#define DNODE_FIND_HAVELOCK 4 + +/* + * Fixed constants. + */ +#define DNODE_SHIFT 9 /* 512 bytes */ +#define DN_MIN_INDBLKSHIFT 10 /* 1k */ +#define DN_MAX_INDBLKSHIFT 14 /* 16k */ +#define DNODE_BLOCK_SHIFT 14 /* 16k */ +#define DNODE_CORE_SIZE 64 /* 64 bytes for dnode sans blkptrs */ +#define DN_MAX_OBJECT_SHIFT 48 /* 256 trillion (zfs_fid_t limit) */ +#define DN_MAX_OFFSET_SHIFT 64 /* 2^64 bytes in a dnode */ + +/* + * dnode id flags + * + * Note: a file will never ever have its + * ids moved from bonus->spill + * and only in a crypto environment would it be on spill + */ +#define DN_ID_CHKED_BONUS 0x1 +#define DN_ID_CHKED_SPILL 0x2 +#define DN_ID_OLD_EXIST 0x4 +#define DN_ID_NEW_EXIST 0x8 + +/* + * Derived constants. + */ +#define DNODE_SIZE (1 << DNODE_SHIFT) +#define DN_MAX_NBLKPTR ((DNODE_SIZE - DNODE_CORE_SIZE) >> SPA_BLKPTRSHIFT) +#define DN_MAX_BONUSLEN (DNODE_SIZE - DNODE_CORE_SIZE - (1 << SPA_BLKPTRSHIFT)) +#define DN_MAX_OBJECT (1ULL << DN_MAX_OBJECT_SHIFT) +#define DN_ZERO_BONUSLEN (DN_MAX_BONUSLEN + 1) +#define DN_KILL_SPILLBLK (1) + +#define DNODES_PER_BLOCK_SHIFT (DNODE_BLOCK_SHIFT - DNODE_SHIFT) +#define DNODES_PER_BLOCK (1ULL << DNODES_PER_BLOCK_SHIFT) +#define DNODES_PER_LEVEL_SHIFT (DN_MAX_INDBLKSHIFT - SPA_BLKPTRSHIFT) +#define DNODES_PER_LEVEL (1ULL << DNODES_PER_LEVEL_SHIFT) + +/* The +2 here is a cheesy way to round up */ +#define DN_MAX_LEVELS (2 + ((DN_MAX_OFFSET_SHIFT - SPA_MINBLOCKSHIFT) / \ + (DN_MIN_INDBLKSHIFT - SPA_BLKPTRSHIFT))) + +#define DN_BONUS(dnp) ((void*)((dnp)->dn_bonus + \ + (((dnp)->dn_nblkptr - 1) * sizeof (blkptr_t)))) + +#define DN_USED_BYTES(dnp) (((dnp)->dn_flags & DNODE_FLAG_USED_BYTES) ? \ + (dnp)->dn_used : (dnp)->dn_used << SPA_MINBLOCKSHIFT) + +#define EPB(blkshift, typeshift) (1 << (blkshift - typeshift)) + +struct dmu_buf_impl; +struct objset; +struct zio; + +enum dnode_dirtycontext { + DN_UNDIRTIED, + DN_DIRTY_OPEN, + DN_DIRTY_SYNC +}; + +/* Is dn_used in bytes? if not, it's in multiples of SPA_MINBLOCKSIZE */ +#define DNODE_FLAG_USED_BYTES (1<<0) +#define DNODE_FLAG_USERUSED_ACCOUNTED (1<<1) + +/* Does dnode have a SA spill blkptr in bonus? */ +#define DNODE_FLAG_SPILL_BLKPTR (1<<2) + +typedef struct dnode_phys { + uint8_t dn_type; /* dmu_object_type_t */ + uint8_t dn_indblkshift; /* ln2(indirect block size) */ + uint8_t dn_nlevels; /* 1=dn_blkptr->data blocks */ + uint8_t dn_nblkptr; /* length of dn_blkptr */ + uint8_t dn_bonustype; /* type of data in bonus buffer */ + uint8_t dn_checksum; /* ZIO_CHECKSUM type */ + uint8_t dn_compress; /* ZIO_COMPRESS type */ + uint8_t dn_flags; /* DNODE_FLAG_* */ + uint16_t dn_datablkszsec; /* data block size in 512b sectors */ + uint16_t dn_bonuslen; /* length of dn_bonus */ + uint8_t dn_pad2[4]; + + /* accounting is protected by dn_dirty_mtx */ + uint64_t dn_maxblkid; /* largest allocated block ID */ + uint64_t dn_used; /* bytes (or sectors) of disk space */ + + uint64_t dn_pad3[4]; + + /* + * The tail region is 448 bytes, and there are three ways to + * look at it. + * + * 0 64 128 192 256 320 384 448 (offset) + * +---------------+---------------+---------------+-------+ + * | dn_blkptr[0] | dn_blkptr[1] | dn_blkptr[2] | / | + * +---------------+---------------+---------------+-------+ + * | dn_blkptr[0] | dn_bonus[0..319] | + * +---------------+-----------------------+---------------+ + * | dn_blkptr[0] | / | dn_spill | + * +---------------+-----------------------+---------------+ + */ + union { + blkptr_t dn_blkptr[1+DN_MAX_BONUSLEN/sizeof (blkptr_t)]; + struct { + blkptr_t __dn_ignore1; + uint8_t dn_bonus[DN_MAX_BONUSLEN]; + }; + struct { + blkptr_t __dn_ignore2; + uint8_t __dn_ignore3[DN_MAX_BONUSLEN-sizeof (blkptr_t)]; + blkptr_t dn_spill; + }; + }; +} dnode_phys_t; + +typedef struct dnode { + /* + * Protects the structure of the dnode, including the number of levels + * of indirection (dn_nlevels), dn_maxblkid, and dn_next_* + */ + krwlock_t dn_struct_rwlock; + + /* Our link on dn_objset->os_dnodes list; protected by os_lock. */ + list_node_t dn_link; + + /* immutable: */ + struct objset *dn_objset; + uint64_t dn_object; + struct dmu_buf_impl *dn_dbuf; + struct dnode_handle *dn_handle; + dnode_phys_t *dn_phys; /* pointer into dn->dn_dbuf->db.db_data */ + + /* + * Copies of stuff in dn_phys. They're valid in the open + * context (eg. even before the dnode is first synced). + * Where necessary, these are protected by dn_struct_rwlock. + */ + dmu_object_type_t dn_type; /* object type */ + uint16_t dn_bonuslen; /* bonus length */ + uint8_t dn_bonustype; /* bonus type */ + uint8_t dn_nblkptr; /* number of blkptrs (immutable) */ + uint8_t dn_checksum; /* ZIO_CHECKSUM type */ + uint8_t dn_compress; /* ZIO_COMPRESS type */ + uint8_t dn_nlevels; + uint8_t dn_indblkshift; + uint8_t dn_datablkshift; /* zero if blksz not power of 2! */ + uint8_t dn_moved; /* Has this dnode been moved? */ + uint16_t dn_datablkszsec; /* in 512b sectors */ + uint32_t dn_datablksz; /* in bytes */ + uint64_t dn_maxblkid; + uint8_t dn_next_type[TXG_SIZE]; + uint8_t dn_next_nblkptr[TXG_SIZE]; + uint8_t dn_next_nlevels[TXG_SIZE]; + uint8_t dn_next_indblkshift[TXG_SIZE]; + uint8_t dn_next_bonustype[TXG_SIZE]; + uint8_t dn_rm_spillblk[TXG_SIZE]; /* for removing spill blk */ + uint16_t dn_next_bonuslen[TXG_SIZE]; + uint32_t dn_next_blksz[TXG_SIZE]; /* next block size in bytes */ + + /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */ + uint32_t dn_dbufs_count; /* count of dn_dbufs */ + /* There are no level-0 blocks of this blkid or higher in dn_dbufs */ + uint64_t dn_unlisted_l0_blkid; + + /* protected by os_lock: */ + list_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */ + + /* protected by dn_mtx: */ + kmutex_t dn_mtx; + list_t dn_dirty_records[TXG_SIZE]; + struct range_tree *dn_free_ranges[TXG_SIZE]; + uint64_t dn_allocated_txg; + uint64_t dn_free_txg; + uint64_t dn_assigned_txg; + kcondvar_t dn_notxholds; + enum dnode_dirtycontext dn_dirtyctx; + uint8_t *dn_dirtyctx_firstset; /* dbg: contents meaningless */ + + /* protected by own devices */ + refcount_t dn_tx_holds; + refcount_t dn_holds; + + kmutex_t dn_dbufs_mtx; + /* + * Descendent dbufs, ordered by dbuf_compare. Note that dn_dbufs + * can contain multiple dbufs of the same (level, blkid) when a + * dbuf is marked DB_EVICTING without being removed from + * dn_dbufs. To maintain the avl invariant that there cannot be + * duplicate entries, we order the dbufs by an arbitrary value - + * their address in memory. This means that dn_dbufs cannot be used to + * directly look up a dbuf. Instead, callers must use avl_walk, have + * a reference to the dbuf, or look up a non-existant node with + * db_state = DB_SEARCH (see dbuf_free_range for an example). + */ + avl_tree_t dn_dbufs; + + /* protected by dn_struct_rwlock */ + struct dmu_buf_impl *dn_bonus; /* bonus buffer dbuf */ + + boolean_t dn_have_spill; /* have spill or are spilling */ + + /* parent IO for current sync write */ + zio_t *dn_zio; + + /* used in syncing context */ + uint64_t dn_oldused; /* old phys used bytes */ + uint64_t dn_oldflags; /* old phys dn_flags */ + uint64_t dn_olduid, dn_oldgid; + uint64_t dn_newuid, dn_newgid; + int dn_id_flags; + + /* holds prefetch structure */ + struct zfetch dn_zfetch; +} dnode_t; + +/* + * Adds a level of indirection between the dbuf and the dnode to avoid + * iterating descendent dbufs in dnode_move(). Handles are not allocated + * individually, but as an array of child dnodes in dnode_hold_impl(). + */ +typedef struct dnode_handle { + /* Protects dnh_dnode from modification by dnode_move(). */ + zrlock_t dnh_zrlock; + dnode_t *dnh_dnode; +} dnode_handle_t; + +typedef struct dnode_children { + dmu_buf_user_t dnc_dbu; /* User evict data */ + size_t dnc_count; /* number of children */ + dnode_handle_t dnc_children[]; /* sized dynamically */ +} dnode_children_t; + +typedef struct free_range { + avl_node_t fr_node; + uint64_t fr_blkid; + uint64_t fr_nblks; +} free_range_t; + +void dnode_special_open(struct objset *dd, dnode_phys_t *dnp, + uint64_t object, dnode_handle_t *dnh); +void dnode_special_close(dnode_handle_t *dnh); + +void dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx); +void dnode_setbonus_type(dnode_t *dn, dmu_object_type_t, dmu_tx_t *tx); +void dnode_rm_spill(dnode_t *dn, dmu_tx_t *tx); + +int dnode_hold(struct objset *dd, uint64_t object, + void *ref, dnode_t **dnp); +int dnode_hold_impl(struct objset *dd, uint64_t object, int flag, + void *ref, dnode_t **dnp); +boolean_t dnode_add_ref(dnode_t *dn, void *ref); +void dnode_rele(dnode_t *dn, void *ref); +void dnode_rele_and_unlock(dnode_t *dn, void *tag); +void dnode_setdirty(dnode_t *dn, dmu_tx_t *tx); +void dnode_sync(dnode_t *dn, dmu_tx_t *tx); +void dnode_allocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, int ibs, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +void dnode_reallocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +void dnode_free(dnode_t *dn, dmu_tx_t *tx); +void dnode_byteswap(dnode_phys_t *dnp); +void dnode_buf_byteswap(void *buf, size_t size); +void dnode_verify(dnode_t *dn); +int dnode_set_blksz(dnode_t *dn, uint64_t size, int ibs, dmu_tx_t *tx); +void dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx); +void dnode_diduse_space(dnode_t *dn, int64_t space); +void dnode_willuse_space(dnode_t *dn, int64_t space, dmu_tx_t *tx); +void dnode_new_blkid(dnode_t *dn, uint64_t blkid, dmu_tx_t *tx, boolean_t); +uint64_t dnode_block_freed(dnode_t *dn, uint64_t blkid); +void dnode_init(void); +void dnode_fini(void); +int dnode_next_offset(dnode_t *dn, int flags, uint64_t *off, + int minlvl, uint64_t blkfill, uint64_t txg); +void dnode_evict_dbufs(dnode_t *dn); +void dnode_evict_bonus(dnode_t *dn); + +#ifdef ZFS_DEBUG + +/* + * There should be a ## between the string literal and fmt, to make it + * clear that we're joining two strings together, but that piece of shit + * gcc doesn't support that preprocessor token. + */ +#define dprintf_dnode(dn, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char __db_buf[32]; \ + uint64_t __db_obj = (dn)->dn_object; \ + if (__db_obj == DMU_META_DNODE_OBJECT) \ + (void) strcpy(__db_buf, "mdn"); \ + else \ + (void) snprintf(__db_buf, sizeof (__db_buf), "%lld", \ + (u_longlong_t)__db_obj);\ + dprintf_ds((dn)->dn_objset->os_dsl_dataset, "obj=%s " fmt, \ + __db_buf, __VA_ARGS__); \ + } \ +_NOTE(CONSTCOND) } while (0) + +#define DNODE_VERIFY(dn) dnode_verify(dn) +#define FREE_VERIFY(db, start, end, tx) free_verify(db, start, end, tx) + +#else + +#define dprintf_dnode(db, fmt, ...) +#define DNODE_VERIFY(dn) +#define FREE_VERIFY(db, start, end, tx) + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DNODE_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_bookmark.h +++ linux-4.4.0/zfs/include/sys/dsl_bookmark.h @@ -0,0 +1,51 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_BOOKMARK_H +#define _SYS_DSL_BOOKMARK_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_pool; +struct dsl_dataset; + +/* + * On disk zap object. + */ +typedef struct zfs_bookmark_phys { + uint64_t zbm_guid; /* guid of bookmarked dataset */ + uint64_t zbm_creation_txg; /* birth transaction group */ + uint64_t zbm_creation_time; /* bookmark creation time */ +} zfs_bookmark_phys_t; + +int dsl_bookmark_create(nvlist_t *, nvlist_t *); +int dsl_get_bookmarks(const char *, nvlist_t *, nvlist_t *); +int dsl_get_bookmarks_impl(dsl_dataset_t *, nvlist_t *, nvlist_t *); +int dsl_bookmark_destroy(nvlist_t *, nvlist_t *); +int dsl_bookmark_lookup(struct dsl_pool *, const char *, + struct dsl_dataset *, zfs_bookmark_phys_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_BOOKMARK_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_dataset.h +++ linux-4.4.0/zfs/include/sys/dsl_dataset.h @@ -0,0 +1,325 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_DSL_DATASET_H +#define _SYS_DSL_DATASET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_dataset; +struct dsl_dir; +struct dsl_pool; + +#define DS_FLAG_INCONSISTENT (1ULL<<0) +#define DS_IS_INCONSISTENT(ds) \ + (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_INCONSISTENT) + +/* + * Do not allow this dataset to be promoted. + */ +#define DS_FLAG_NOPROMOTE (1ULL<<1) + +/* + * DS_FLAG_UNIQUE_ACCURATE is set if ds_unique_bytes has been correctly + * calculated for head datasets (starting with SPA_VERSION_UNIQUE_ACCURATE, + * refquota/refreservations). + */ +#define DS_FLAG_UNIQUE_ACCURATE (1ULL<<2) + +/* + * DS_FLAG_DEFER_DESTROY is set after 'zfs destroy -d' has been called + * on a dataset. This allows the dataset to be destroyed using 'zfs release'. + */ +#define DS_FLAG_DEFER_DESTROY (1ULL<<3) +#define DS_IS_DEFER_DESTROY(ds) \ + (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_DEFER_DESTROY) + +/* + * DS_FIELD_* are strings that are used in the "extensified" dataset zap object. + * They should be of the format :. + */ + +/* + * This field's value is the object ID of a zap object which contains the + * bookmarks of this dataset. If it is present, then this dataset is counted + * in the refcount of the SPA_FEATURES_BOOKMARKS feature. + */ +#define DS_FIELD_BOOKMARK_NAMES "com.delphix:bookmarks" + +/* + * This field is present (with value=0) if this dataset may contain large + * blocks (>128KB). If it is present, then this dataset + * is counted in the refcount of the SPA_FEATURE_LARGE_BLOCKS feature. + */ +#define DS_FIELD_LARGE_BLOCKS "org.open-zfs:large_blocks" + +/* + * DS_FLAG_CI_DATASET is set if the dataset contains a file system whose + * name lookups should be performed case-insensitively. + */ +#define DS_FLAG_CI_DATASET (1ULL<<16) + +#define DS_CREATE_FLAG_NODIRTY (1ULL<<24) + +typedef struct dsl_dataset_phys { + uint64_t ds_dir_obj; /* DMU_OT_DSL_DIR */ + uint64_t ds_prev_snap_obj; /* DMU_OT_DSL_DATASET */ + uint64_t ds_prev_snap_txg; + uint64_t ds_next_snap_obj; /* DMU_OT_DSL_DATASET */ + uint64_t ds_snapnames_zapobj; /* DMU_OT_DSL_DS_SNAP_MAP 0 for snaps */ + uint64_t ds_num_children; /* clone/snap children; ==0 for head */ + uint64_t ds_creation_time; /* seconds since 1970 */ + uint64_t ds_creation_txg; + uint64_t ds_deadlist_obj; /* DMU_OT_DEADLIST */ + /* + * ds_referenced_bytes, ds_compressed_bytes, and ds_uncompressed_bytes + * include all blocks referenced by this dataset, including those + * shared with any other datasets. + */ + uint64_t ds_referenced_bytes; + uint64_t ds_compressed_bytes; + uint64_t ds_uncompressed_bytes; + uint64_t ds_unique_bytes; /* only relevant to snapshots */ + /* + * The ds_fsid_guid is a 56-bit ID that can change to avoid + * collisions. The ds_guid is a 64-bit ID that will never + * change, so there is a small probability that it will collide. + */ + uint64_t ds_fsid_guid; + uint64_t ds_guid; + uint64_t ds_flags; /* DS_FLAG_* */ + blkptr_t ds_bp; + uint64_t ds_next_clones_obj; /* DMU_OT_DSL_CLONES */ + uint64_t ds_props_obj; /* DMU_OT_DSL_PROPS for snaps */ + uint64_t ds_userrefs_obj; /* DMU_OT_USERREFS */ + uint64_t ds_pad[5]; /* pad out to 320 bytes for good measure */ +} dsl_dataset_phys_t; + +typedef struct dsl_dataset { + dmu_buf_user_t ds_dbu; + + /* Immutable: */ + struct dsl_dir *ds_dir; + dmu_buf_t *ds_dbuf; + uint64_t ds_object; + uint64_t ds_fsid_guid; + boolean_t ds_is_snapshot; + + /* only used in syncing context, only valid for non-snapshots: */ + struct dsl_dataset *ds_prev; + uint64_t ds_bookmarks; /* DMU_OTN_ZAP_METADATA */ + boolean_t ds_large_blocks; + boolean_t ds_need_large_blocks; + + /* has internal locking: */ + dsl_deadlist_t ds_deadlist; + bplist_t ds_pending_deadlist; + + /* protected by lock on pool's dp_dirty_datasets list */ + txg_node_t ds_dirty_link; + list_node_t ds_synced_link; + + /* + * ds_phys->ds_ is also protected by ds_lock. + * Protected by ds_lock: + */ + kmutex_t ds_lock; + objset_t *ds_objset; + uint64_t ds_userrefs; + void *ds_owner; + + /* + * Long holds prevent the ds from being destroyed; they allow the + * ds to remain held even after dropping the dp_config_rwlock. + * Owning counts as a long hold. See the comments above + * dsl_pool_hold() for details. + */ + refcount_t ds_longholds; + + /* no locking; only for making guesses */ + uint64_t ds_trysnap_txg; + + /* for objset_open() */ + kmutex_t ds_opening_lock; + + uint64_t ds_reserved; /* cached refreservation */ + uint64_t ds_quota; /* cached refquota */ + + kmutex_t ds_sendstream_lock; + list_t ds_sendstreams; + + /* Protected by ds_lock; keep at end of struct for better locality */ + char ds_snapname[MAXNAMELEN]; +} dsl_dataset_t; + +static inline dsl_dataset_phys_t * +dsl_dataset_phys(dsl_dataset_t *ds) +{ + return (ds->ds_dbuf->db_data); +} + +/* + * The max length of a temporary tag prefix is the number of hex digits + * required to express UINT64_MAX plus one for the hyphen. + */ +#define MAX_TAG_PREFIX_LEN 17 + +#define dsl_dataset_is_snapshot(ds) \ + (dsl_dataset_phys(ds)->ds_num_children != 0) + +#define DS_UNIQUE_IS_ACCURATE(ds) \ + ((dsl_dataset_phys(ds)->ds_flags & DS_FLAG_UNIQUE_ACCURATE) != 0) + +int dsl_dataset_hold(struct dsl_pool *dp, const char *name, void *tag, + dsl_dataset_t **dsp); +boolean_t dsl_dataset_try_add_ref(struct dsl_pool *dp, dsl_dataset_t *ds, + void *tag); +int dsl_dataset_hold_obj(struct dsl_pool *dp, uint64_t dsobj, void *tag, + dsl_dataset_t **); +void dsl_dataset_rele(dsl_dataset_t *ds, void *tag); +int dsl_dataset_own(struct dsl_pool *dp, const char *name, + void *tag, dsl_dataset_t **dsp); +int dsl_dataset_own_obj(struct dsl_pool *dp, uint64_t dsobj, + void *tag, dsl_dataset_t **dsp); +void dsl_dataset_disown(dsl_dataset_t *ds, void *tag); +void dsl_dataset_name(dsl_dataset_t *ds, char *name); +boolean_t dsl_dataset_tryown(dsl_dataset_t *ds, void *tag); +uint64_t dsl_dataset_create_sync(dsl_dir_t *pds, const char *lastname, + dsl_dataset_t *origin, uint64_t flags, cred_t *, dmu_tx_t *); +uint64_t dsl_dataset_create_sync_dd(dsl_dir_t *dd, dsl_dataset_t *origin, + uint64_t flags, dmu_tx_t *tx); +int dsl_dataset_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t *errors); +int dsl_dataset_promote(const char *name, char *conflsnap); +int dsl_dataset_rename_snapshot(const char *fsname, + const char *oldsnapname, const char *newsnapname, boolean_t recursive); +int dsl_dataset_snapshot_tmp(const char *fsname, const char *snapname, + minor_t cleanup_minor, const char *htag); + +blkptr_t *dsl_dataset_get_blkptr(dsl_dataset_t *ds); +void dsl_dataset_set_blkptr(dsl_dataset_t *ds, blkptr_t *bp, dmu_tx_t *tx); + +spa_t *dsl_dataset_get_spa(dsl_dataset_t *ds); + +boolean_t dsl_dataset_modified_since_snap(dsl_dataset_t *ds, + dsl_dataset_t *snap); + +void dsl_dataset_sync(dsl_dataset_t *os, zio_t *zio, dmu_tx_t *tx); + +void dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, + dmu_tx_t *tx); +int dsl_dataset_block_kill(dsl_dataset_t *ds, const blkptr_t *bp, + dmu_tx_t *tx, boolean_t async); +boolean_t dsl_dataset_block_freeable(dsl_dataset_t *ds, const blkptr_t *bp, + uint64_t blk_birth); +uint64_t dsl_dataset_prev_snap_txg(dsl_dataset_t *ds); +int dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name, + uint64_t *value); + +void dsl_dataset_dirty(dsl_dataset_t *ds, dmu_tx_t *tx); +void dsl_dataset_stats(dsl_dataset_t *os, nvlist_t *nv); +void dsl_dataset_fast_stat(dsl_dataset_t *ds, dmu_objset_stats_t *stat); +void dsl_dataset_space(dsl_dataset_t *ds, + uint64_t *refdbytesp, uint64_t *availbytesp, + uint64_t *usedobjsp, uint64_t *availobjsp); +uint64_t dsl_dataset_fsid_guid(dsl_dataset_t *ds); +int dsl_dataset_space_written(dsl_dataset_t *oldsnap, dsl_dataset_t *new, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); +int dsl_dataset_space_wouldfree(dsl_dataset_t *firstsnap, dsl_dataset_t *last, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); +boolean_t dsl_dataset_is_dirty(dsl_dataset_t *ds); +int dsl_dataset_activate_large_blocks(const char *dsname); +void dsl_dataset_activate_large_blocks_sync_impl(uint64_t dsobj, dmu_tx_t *tx); + +int dsl_dsobj_to_dsname(char *pname, uint64_t obj, char *buf); + +int dsl_dataset_check_quota(dsl_dataset_t *ds, boolean_t check_quota, + uint64_t asize, uint64_t inflight, uint64_t *used, + uint64_t *ref_rsrv); +int dsl_dataset_set_refquota(const char *dsname, zprop_source_t source, + uint64_t quota); +int dsl_dataset_set_refreservation(const char *dsname, zprop_source_t source, + uint64_t reservation); + +boolean_t dsl_dataset_is_before(dsl_dataset_t *later, dsl_dataset_t *earlier, + uint64_t earlier_txg); +void dsl_dataset_long_hold(dsl_dataset_t *ds, void *tag); +void dsl_dataset_long_rele(dsl_dataset_t *ds, void *tag); +boolean_t dsl_dataset_long_held(dsl_dataset_t *ds); + +int dsl_dataset_clone_swap_check_impl(dsl_dataset_t *clone, + dsl_dataset_t *origin_head, boolean_t force, void *owner, dmu_tx_t *tx); +void dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone, + dsl_dataset_t *origin_head, dmu_tx_t *tx); +int dsl_dataset_snapshot_check_impl(dsl_dataset_t *ds, const char *snapname, + dmu_tx_t *tx, boolean_t recv, uint64_t cnt, cred_t *cr); +void dsl_dataset_snapshot_sync_impl(dsl_dataset_t *ds, const char *snapname, + dmu_tx_t *tx); + +void dsl_dataset_remove_from_next_clones(dsl_dataset_t *ds, uint64_t obj, + dmu_tx_t *tx); +void dsl_dataset_recalc_head_uniq(dsl_dataset_t *ds); +int dsl_dataset_get_snapname(dsl_dataset_t *ds); +int dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name, + uint64_t *value); +int dsl_dataset_snap_remove(dsl_dataset_t *ds, const char *name, dmu_tx_t *tx, + boolean_t adj_cnt); +void dsl_dataset_set_refreservation_sync_impl(dsl_dataset_t *ds, + zprop_source_t source, uint64_t value, dmu_tx_t *tx); +void dsl_dataset_zapify(dsl_dataset_t *ds, dmu_tx_t *tx); +int dsl_dataset_rollback(const char *fsname, void *owner, nvlist_t *result); + +#ifdef ZFS_DEBUG +#define dprintf_ds(ds, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char *__ds_name = kmem_alloc(MAXNAMELEN, KM_SLEEP); \ + dsl_dataset_name(ds, __ds_name); \ + dprintf("ds=%s " fmt, __ds_name, __VA_ARGS__); \ + kmem_free(__ds_name, MAXNAMELEN); \ + } \ +_NOTE(CONSTCOND) } while (0) +#else +#define dprintf_ds(dd, fmt, ...) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_DATASET_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_deadlist.h +++ linux-4.4.0/zfs/include/sys/dsl_deadlist.h @@ -0,0 +1,87 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_DSL_DEADLIST_H +#define _SYS_DSL_DEADLIST_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dmu_buf; +struct dsl_dataset; + +typedef struct dsl_deadlist_phys { + uint64_t dl_used; + uint64_t dl_comp; + uint64_t dl_uncomp; + uint64_t dl_pad[37]; /* pad out to 320b for future expansion */ +} dsl_deadlist_phys_t; + +typedef struct dsl_deadlist { + objset_t *dl_os; + uint64_t dl_object; + avl_tree_t dl_tree; + boolean_t dl_havetree; + struct dmu_buf *dl_dbuf; + dsl_deadlist_phys_t *dl_phys; + kmutex_t dl_lock; + + /* if it's the old on-disk format: */ + bpobj_t dl_bpobj; + boolean_t dl_oldfmt; +} dsl_deadlist_t; + +typedef struct dsl_deadlist_entry { + avl_node_t dle_node; + uint64_t dle_mintxg; + bpobj_t dle_bpobj; +} dsl_deadlist_entry_t; + +void dsl_deadlist_open(dsl_deadlist_t *dl, objset_t *os, uint64_t object); +void dsl_deadlist_close(dsl_deadlist_t *dl); +uint64_t dsl_deadlist_alloc(objset_t *os, dmu_tx_t *tx); +void dsl_deadlist_free(objset_t *os, uint64_t dlobj, dmu_tx_t *tx); +void dsl_deadlist_insert(dsl_deadlist_t *dl, const blkptr_t *bp, dmu_tx_t *tx); +void dsl_deadlist_add_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx); +void dsl_deadlist_remove_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx); +uint64_t dsl_deadlist_clone(dsl_deadlist_t *dl, uint64_t maxtxg, + uint64_t mrs_obj, dmu_tx_t *tx); +void dsl_deadlist_space(dsl_deadlist_t *dl, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); +void dsl_deadlist_space_range(dsl_deadlist_t *dl, + uint64_t mintxg, uint64_t maxtxg, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); +void dsl_deadlist_merge(dsl_deadlist_t *dl, uint64_t obj, dmu_tx_t *tx); +void dsl_deadlist_move_bpobj(dsl_deadlist_t *dl, bpobj_t *bpo, uint64_t mintxg, + dmu_tx_t *tx); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_DEADLIST_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_deleg.h +++ linux-4.4.0/zfs/include/sys/dsl_deleg.h @@ -0,0 +1,80 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_DELEG_H +#define _SYS_DSL_DELEG_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZFS_DELEG_PERM_NONE "" +#define ZFS_DELEG_PERM_CREATE "create" +#define ZFS_DELEG_PERM_DESTROY "destroy" +#define ZFS_DELEG_PERM_SNAPSHOT "snapshot" +#define ZFS_DELEG_PERM_ROLLBACK "rollback" +#define ZFS_DELEG_PERM_CLONE "clone" +#define ZFS_DELEG_PERM_PROMOTE "promote" +#define ZFS_DELEG_PERM_RENAME "rename" +#define ZFS_DELEG_PERM_MOUNT "mount" +#define ZFS_DELEG_PERM_SHARE "share" +#define ZFS_DELEG_PERM_SEND "send" +#define ZFS_DELEG_PERM_RECEIVE "receive" +#define ZFS_DELEG_PERM_ALLOW "allow" +#define ZFS_DELEG_PERM_USERPROP "userprop" +#define ZFS_DELEG_PERM_VSCAN "vscan" +#define ZFS_DELEG_PERM_USERQUOTA "userquota" +#define ZFS_DELEG_PERM_GROUPQUOTA "groupquota" +#define ZFS_DELEG_PERM_USERUSED "userused" +#define ZFS_DELEG_PERM_GROUPUSED "groupused" +#define ZFS_DELEG_PERM_HOLD "hold" +#define ZFS_DELEG_PERM_RELEASE "release" +#define ZFS_DELEG_PERM_DIFF "diff" +#define ZFS_DELEG_PERM_BOOKMARK "bookmark" + +/* + * Note: the names of properties that are marked delegatable are also + * valid delegated permissions + */ + +int dsl_deleg_get(const char *ddname, nvlist_t **nvp); +int dsl_deleg_set(const char *ddname, nvlist_t *nvp, boolean_t unset); +int dsl_deleg_access(const char *ddname, const char *perm, cred_t *cr); +int dsl_deleg_access_impl(struct dsl_dataset *ds, const char *perm, cred_t *cr); +void dsl_deleg_set_create_perms(dsl_dir_t *dd, dmu_tx_t *tx, cred_t *cr); +int dsl_deleg_can_allow(char *ddname, nvlist_t *nvp, cred_t *cr); +int dsl_deleg_can_unallow(char *ddname, nvlist_t *nvp, cred_t *cr); +int dsl_deleg_destroy(objset_t *os, uint64_t zapobj, dmu_tx_t *tx); +boolean_t dsl_delegation_on(objset_t *os); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_DELEG_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_destroy.h +++ linux-4.4.0/zfs/include/sys/dsl_destroy.h @@ -0,0 +1,53 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + */ + +#ifndef _SYS_DSL_DESTROY_H +#define _SYS_DSL_DESTROY_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct nvlist; +struct dsl_dataset; +struct dmu_tx; + +int dsl_destroy_snapshots_nvl(struct nvlist *, boolean_t, + struct nvlist *); +int dsl_destroy_snapshot(const char *, boolean_t); +int dsl_destroy_head(const char *); +int dsl_destroy_head_check_impl(struct dsl_dataset *, int); +void dsl_destroy_head_sync_impl(struct dsl_dataset *, struct dmu_tx *); +int dsl_destroy_inconsistent(const char *, void *); +int dsl_destroy_snapshot_check_impl(struct dsl_dataset *, boolean_t); +void dsl_destroy_snapshot_sync_impl(struct dsl_dataset *, + boolean_t, struct dmu_tx *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_DESTROY_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_dir.h +++ linux-4.4.0/zfs/include/sys/dsl_dir.h @@ -0,0 +1,194 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_DSL_DIR_H +#define _SYS_DSL_DIR_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_dataset; + +/* + * DD_FIELD_* are strings that are used in the "extensified" dsl_dir zap object. + * They should be of the format :. + */ + +#define DD_FIELD_FILESYSTEM_COUNT "com.joyent:filesystem_count" +#define DD_FIELD_SNAPSHOT_COUNT "com.joyent:snapshot_count" + +typedef enum dd_used { + DD_USED_HEAD, + DD_USED_SNAP, + DD_USED_CHILD, + DD_USED_CHILD_RSRV, + DD_USED_REFRSRV, + DD_USED_NUM +} dd_used_t; + +#define DD_FLAG_USED_BREAKDOWN (1<<0) + +typedef struct dsl_dir_phys { + uint64_t dd_creation_time; /* not actually used */ + uint64_t dd_head_dataset_obj; + uint64_t dd_parent_obj; + uint64_t dd_origin_obj; + uint64_t dd_child_dir_zapobj; + /* + * how much space our children are accounting for; for leaf + * datasets, == physical space used by fs + snaps + */ + uint64_t dd_used_bytes; + uint64_t dd_compressed_bytes; + uint64_t dd_uncompressed_bytes; + /* Administrative quota setting */ + uint64_t dd_quota; + /* Administrative reservation setting */ + uint64_t dd_reserved; + uint64_t dd_props_zapobj; + uint64_t dd_deleg_zapobj; /* dataset delegation permissions */ + uint64_t dd_flags; + uint64_t dd_used_breakdown[DD_USED_NUM]; + uint64_t dd_clones; /* dsl_dir objects */ + uint64_t dd_pad[13]; /* pad out to 256 bytes for good measure */ +} dsl_dir_phys_t; + +struct dsl_dir { + dmu_buf_user_t dd_dbu; + + /* These are immutable; no lock needed: */ + uint64_t dd_object; + dsl_pool_t *dd_pool; + + /* Stable until user eviction; no lock needed: */ + dmu_buf_t *dd_dbuf; + + /* protected by lock on pool's dp_dirty_dirs list */ + txg_node_t dd_dirty_link; + + /* protected by dp_config_rwlock */ + dsl_dir_t *dd_parent; + + /* Protected by dd_lock */ + kmutex_t dd_lock; + list_t dd_prop_cbs; /* list of dsl_prop_cb_record_t's */ + timestruc_t dd_snap_cmtime; /* last time snapshot namespace changed */ + uint64_t dd_origin_txg; + + /* gross estimate of space used by in-flight tx's */ + uint64_t dd_tempreserved[TXG_SIZE]; + /* amount of space we expect to write; == amount of dirty data */ + int64_t dd_space_towrite[TXG_SIZE]; + + /* protected by dd_lock; keep at end of struct for better locality */ + char dd_myname[MAXNAMELEN]; +}; + +static inline dsl_dir_phys_t * +dsl_dir_phys(dsl_dir_t *dd) +{ + return (dd->dd_dbuf->db_data); +} + +void dsl_dir_rele(dsl_dir_t *dd, void *tag); +void dsl_dir_async_rele(dsl_dir_t *dd, void *tag); +int dsl_dir_hold(dsl_pool_t *dp, const char *name, void *tag, + dsl_dir_t **, const char **tail); +int dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj, + const char *tail, void *tag, dsl_dir_t **); +void dsl_dir_name(dsl_dir_t *dd, char *buf); +int dsl_dir_namelen(dsl_dir_t *dd); +uint64_t dsl_dir_create_sync(dsl_pool_t *dp, dsl_dir_t *pds, + const char *name, dmu_tx_t *tx); +void dsl_dir_stats(dsl_dir_t *dd, nvlist_t *nv); +uint64_t dsl_dir_space_available(dsl_dir_t *dd, + dsl_dir_t *ancestor, int64_t delta, int ondiskonly); +void dsl_dir_dirty(dsl_dir_t *dd, dmu_tx_t *tx); +void dsl_dir_sync(dsl_dir_t *dd, dmu_tx_t *tx); +int dsl_dir_tempreserve_space(dsl_dir_t *dd, uint64_t mem, + uint64_t asize, uint64_t fsize, uint64_t usize, void **tr_cookiep, + dmu_tx_t *tx); +void dsl_dir_tempreserve_clear(void *tr_cookie, dmu_tx_t *tx); +void dsl_dir_willuse_space(dsl_dir_t *dd, int64_t space, dmu_tx_t *tx); +void dsl_dir_diduse_space(dsl_dir_t *dd, dd_used_t type, + int64_t used, int64_t compressed, int64_t uncompressed, dmu_tx_t *tx); +void dsl_dir_transfer_space(dsl_dir_t *dd, int64_t delta, + dd_used_t oldtype, dd_used_t newtype, dmu_tx_t *tx); +int dsl_dir_set_quota(const char *ddname, zprop_source_t source, + uint64_t quota); +int dsl_dir_set_reservation(const char *ddname, zprop_source_t source, + uint64_t reservation); +int dsl_dir_activate_fs_ss_limit(const char *); +int dsl_fs_ss_limit_check(dsl_dir_t *, uint64_t, zfs_prop_t, dsl_dir_t *, + cred_t *); +void dsl_fs_ss_count_adjust(dsl_dir_t *, int64_t, const char *, dmu_tx_t *); +int dsl_dir_rename(const char *oldname, const char *newname); +int dsl_dir_transfer_possible(dsl_dir_t *sdd, dsl_dir_t *tdd, + uint64_t fs_cnt, uint64_t ss_cnt, uint64_t space, cred_t *); +boolean_t dsl_dir_is_clone(dsl_dir_t *dd); +void dsl_dir_new_refreservation(dsl_dir_t *dd, struct dsl_dataset *ds, + uint64_t reservation, cred_t *cr, dmu_tx_t *tx); +void dsl_dir_snap_cmtime_update(dsl_dir_t *dd); +timestruc_t dsl_dir_snap_cmtime(dsl_dir_t *dd); +void dsl_dir_set_reservation_sync_impl(dsl_dir_t *dd, uint64_t value, + dmu_tx_t *tx); +void dsl_dir_zapify(dsl_dir_t *dd, dmu_tx_t *tx); +boolean_t dsl_dir_is_zapified(dsl_dir_t *dd); + +/* internal reserved dir name */ +#define MOS_DIR_NAME "$MOS" +#define ORIGIN_DIR_NAME "$ORIGIN" +#define XLATION_DIR_NAME "$XLATION" +#define FREE_DIR_NAME "$FREE" +#define LEAK_DIR_NAME "$LEAK" + +#ifdef ZFS_DEBUG +#define dprintf_dd(dd, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char *__ds_name = kmem_alloc(MAXNAMELEN + strlen(MOS_DIR_NAME) + 1, \ + KM_SLEEP); \ + dsl_dir_name(dd, __ds_name); \ + dprintf("dd=%s " fmt, __ds_name, __VA_ARGS__); \ + kmem_free(__ds_name, MAXNAMELEN + strlen(MOS_DIR_NAME) + 1); \ + } \ +_NOTE(CONSTCOND) } while (0) +#else +#define dprintf_dd(dd, fmt, ...) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_DIR_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_pool.h +++ linux-4.4.0/zfs/include/sys/dsl_pool.h @@ -0,0 +1,179 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_POOL_H +#define _SYS_DSL_POOL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern int zfs_txg_synctime_ms; + +struct objset; +struct dsl_dir; +struct dsl_dataset; +struct dsl_pool; +struct dmu_tx; +struct dsl_scan; + +extern unsigned long zfs_dirty_data_max; +extern unsigned long zfs_dirty_data_max_max; +extern unsigned long zfs_dirty_data_sync; +extern int zfs_dirty_data_max_percent; +extern int zfs_dirty_data_max_max_percent; +extern int zfs_delay_min_dirty_percent; +extern unsigned long zfs_delay_scale; + +/* These macros are for indexing into the zfs_all_blkstats_t. */ +#define DMU_OT_DEFERRED DMU_OT_NONE +#define DMU_OT_OTHER DMU_OT_NUMTYPES /* place holder for DMU_OT() types */ +#define DMU_OT_TOTAL (DMU_OT_NUMTYPES + 1) + +typedef struct zfs_blkstat { + uint64_t zb_count; + uint64_t zb_asize; + uint64_t zb_lsize; + uint64_t zb_psize; + uint64_t zb_gangs; + uint64_t zb_ditto_2_of_2_samevdev; + uint64_t zb_ditto_2_of_3_samevdev; + uint64_t zb_ditto_3_of_3_samevdev; +} zfs_blkstat_t; + +typedef struct zfs_all_blkstats { + zfs_blkstat_t zab_type[DN_MAX_LEVELS + 1][DMU_OT_TOTAL + 1]; +} zfs_all_blkstats_t; + + +typedef struct dsl_pool { + /* Immutable */ + spa_t *dp_spa; + struct objset *dp_meta_objset; + struct dsl_dir *dp_root_dir; + struct dsl_dir *dp_mos_dir; + struct dsl_dir *dp_free_dir; + struct dsl_dir *dp_leak_dir; + struct dsl_dataset *dp_origin_snap; + uint64_t dp_root_dir_obj; + struct taskq *dp_iput_taskq; + + /* No lock needed - sync context only */ + blkptr_t dp_meta_rootbp; + uint64_t dp_tmp_userrefs_obj; + bpobj_t dp_free_bpobj; + uint64_t dp_bptree_obj; + uint64_t dp_empty_bpobj; + + struct dsl_scan *dp_scan; + + /* Uses dp_lock */ + kmutex_t dp_lock; + kcondvar_t dp_spaceavail_cv; + uint64_t dp_dirty_pertxg[TXG_SIZE]; + uint64_t dp_dirty_total; + uint64_t dp_mos_used_delta; + uint64_t dp_mos_compressed_delta; + uint64_t dp_mos_uncompressed_delta; + + /* + * Time of most recently scheduled (furthest in the future) + * wakeup for delayed transactions. + */ + hrtime_t dp_last_wakeup; + + /* Has its own locking */ + tx_state_t dp_tx; + txg_list_t dp_dirty_datasets; + txg_list_t dp_dirty_zilogs; + txg_list_t dp_dirty_dirs; + txg_list_t dp_sync_tasks; + + /* + * Protects administrative changes (properties, namespace) + * + * It is only held for write in syncing context. Therefore + * syncing context does not need to ever have it for read, since + * nobody else could possibly have it for write. + */ + rrwlock_t dp_config_rwlock; + + zfs_all_blkstats_t *dp_blkstats; +} dsl_pool_t; + +int dsl_pool_init(spa_t *spa, uint64_t txg, dsl_pool_t **dpp); +int dsl_pool_open(dsl_pool_t *dp); +void dsl_pool_close(dsl_pool_t *dp); +dsl_pool_t *dsl_pool_create(spa_t *spa, nvlist_t *zplprops, uint64_t txg); +void dsl_pool_sync(dsl_pool_t *dp, uint64_t txg); +void dsl_pool_sync_done(dsl_pool_t *dp, uint64_t txg); +int dsl_pool_sync_context(dsl_pool_t *dp); +uint64_t dsl_pool_adjustedsize(dsl_pool_t *dp, boolean_t netfree); +uint64_t dsl_pool_adjustedfree(dsl_pool_t *dp, boolean_t netfree); +void dsl_pool_dirty_space(dsl_pool_t *dp, int64_t space, dmu_tx_t *tx); +void dsl_pool_undirty_space(dsl_pool_t *dp, int64_t space, uint64_t txg); +void dsl_free(dsl_pool_t *dp, uint64_t txg, const blkptr_t *bpp); +void dsl_free_sync(zio_t *pio, dsl_pool_t *dp, uint64_t txg, + const blkptr_t *bpp); +void dsl_pool_create_origin(dsl_pool_t *dp, dmu_tx_t *tx); +void dsl_pool_upgrade_clones(dsl_pool_t *dp, dmu_tx_t *tx); +void dsl_pool_upgrade_dir_clones(dsl_pool_t *dp, dmu_tx_t *tx); +void dsl_pool_mos_diduse_space(dsl_pool_t *dp, + int64_t used, int64_t comp, int64_t uncomp); +boolean_t dsl_pool_need_dirty_delay(dsl_pool_t *dp); +void dsl_pool_config_enter(dsl_pool_t *dp, void *tag); +void dsl_pool_config_enter_prio(dsl_pool_t *dp, void *tag); +void dsl_pool_config_exit(dsl_pool_t *dp, void *tag); +boolean_t dsl_pool_config_held(dsl_pool_t *dp); +boolean_t dsl_pool_config_held_writer(dsl_pool_t *dp); + +taskq_t *dsl_pool_iput_taskq(dsl_pool_t *dp); + +int dsl_pool_user_hold(dsl_pool_t *dp, uint64_t dsobj, + const char *tag, uint64_t now, dmu_tx_t *tx); +int dsl_pool_user_release(dsl_pool_t *dp, uint64_t dsobj, + const char *tag, dmu_tx_t *tx); +void dsl_pool_clean_tmp_userrefs(dsl_pool_t *dp); +int dsl_pool_open_special_dir(dsl_pool_t *dp, const char *name, dsl_dir_t **); +int dsl_pool_hold(const char *name, void *tag, dsl_pool_t **dp); +void dsl_pool_rele(dsl_pool_t *dp, void *tag); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_POOL_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_prop.h +++ linux-4.4.0/zfs/include/sys/dsl_prop.h @@ -0,0 +1,107 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_PROP_H +#define _SYS_DSL_PROP_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_dataset; +struct dsl_dir; + +/* The callback func may not call into the DMU or DSL! */ +typedef void (dsl_prop_changed_cb_t)(void *arg, uint64_t newval); + +typedef struct dsl_prop_cb_record { + list_node_t cbr_node; /* link on dd_prop_cbs */ + struct dsl_dataset *cbr_ds; + const char *cbr_propname; + dsl_prop_changed_cb_t *cbr_func; + void *cbr_arg; +} dsl_prop_cb_record_t; + +typedef struct dsl_props_arg { + nvlist_t *pa_props; + zprop_source_t pa_source; +} dsl_props_arg_t; + +int dsl_prop_register(struct dsl_dataset *ds, const char *propname, + dsl_prop_changed_cb_t *callback, void *cbarg); +int dsl_prop_unregister(struct dsl_dataset *ds, const char *propname, + dsl_prop_changed_cb_t *callback, void *cbarg); +void dsl_prop_notify_all(struct dsl_dir *dd); +boolean_t dsl_prop_hascb(struct dsl_dataset *ds); + +int dsl_prop_get(const char *ddname, const char *propname, + int intsz, int numints, void *buf, char *setpoint); +int dsl_prop_get_integer(const char *ddname, const char *propname, + uint64_t *valuep, char *setpoint); +int dsl_prop_get_all(objset_t *os, nvlist_t **nvp); +int dsl_prop_get_received(const char *dsname, nvlist_t **nvp); +int dsl_prop_get_ds(struct dsl_dataset *ds, const char *propname, + int intsz, int numints, void *buf, char *setpoint); +int dsl_prop_get_int_ds(struct dsl_dataset *ds, const char *propname, + uint64_t *valuep); +int dsl_prop_get_dd(struct dsl_dir *dd, const char *propname, + int intsz, int numints, void *buf, char *setpoint, + boolean_t snapshot); + +void dsl_props_set_sync_impl(struct dsl_dataset *ds, zprop_source_t source, + nvlist_t *props, dmu_tx_t *tx); +void dsl_prop_set_sync_impl(struct dsl_dataset *ds, const char *propname, + zprop_source_t source, int intsz, int numints, const void *value, + dmu_tx_t *tx); +int dsl_props_set(const char *dsname, zprop_source_t source, nvlist_t *nvl); +int dsl_prop_set_int(const char *dsname, const char *propname, + zprop_source_t source, uint64_t value); +int dsl_prop_set_string(const char *dsname, const char *propname, + zprop_source_t source, const char *value); +int dsl_prop_inherit(const char *dsname, const char *propname, + zprop_source_t source); + +int dsl_prop_predict(dsl_dir_t *dd, const char *propname, + zprop_source_t source, uint64_t value, uint64_t *newvalp); + +/* flag first receive on or after SPA_VERSION_RECVD_PROPS */ +boolean_t dsl_prop_get_hasrecvd(const char *dsname); +int dsl_prop_set_hasrecvd(const char *dsname); +void dsl_prop_unset_hasrecvd(const char *dsname); + +void dsl_prop_nvlist_add_uint64(nvlist_t *nv, zfs_prop_t prop, uint64_t value); +void dsl_prop_nvlist_add_string(nvlist_t *nv, + zfs_prop_t prop, const char *value); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_PROP_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_scan.h +++ linux-4.4.0/zfs/include/sys/dsl_scan.h @@ -0,0 +1,147 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_SCAN_H +#define _SYS_DSL_SCAN_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct objset; +struct dsl_dir; +struct dsl_dataset; +struct dsl_pool; +struct dmu_tx; + +/* + * All members of this structure must be uint64_t, for byteswap + * purposes. + */ +typedef struct dsl_scan_phys { + uint64_t scn_func; /* pool_scan_func_t */ + uint64_t scn_state; /* dsl_scan_state_t */ + uint64_t scn_queue_obj; + uint64_t scn_min_txg; + uint64_t scn_max_txg; + uint64_t scn_cur_min_txg; + uint64_t scn_cur_max_txg; + uint64_t scn_start_time; + uint64_t scn_end_time; + uint64_t scn_to_examine; /* total bytes to be scanned */ + uint64_t scn_examined; /* bytes scanned so far */ + uint64_t scn_to_process; + uint64_t scn_processed; + uint64_t scn_errors; /* scan I/O error count */ + uint64_t scn_ddt_class_max; + ddt_bookmark_t scn_ddt_bookmark; + zbookmark_phys_t scn_bookmark; + uint64_t scn_flags; /* dsl_scan_flags_t */ +} dsl_scan_phys_t; + +#define SCAN_PHYS_NUMINTS (sizeof (dsl_scan_phys_t) / sizeof (uint64_t)) + +typedef enum dsl_scan_flags { + DSF_VISIT_DS_AGAIN = 1<<0, +} dsl_scan_flags_t; + +#define DSL_SCAN_FLAGS_MASK (DSF_VISIT_DS_AGAIN) + +/* + * Every pool will have one dsl_scan_t and this structure will contain + * in-memory information about the scan and a pointer to the on-disk + * representation (i.e. dsl_scan_phys_t). Most of the state of the scan + * is contained on-disk to allow the scan to resume in the event of a reboot + * or panic. This structure maintains information about the behavior of a + * running scan, some caching information, and how it should traverse the pool. + * + * The following members of this structure direct the behavior of the scan: + * + * scn_pausing - a scan that cannot be completed in a single txg or + * has exceeded its allotted time will need to pause. + * When this flag is set the scanner will stop traversing + * the pool and write out the current state to disk. + * + * scn_restart_txg - directs the scanner to either restart or start a + * a scan at the specified txg value. + * + * scn_done_txg - when a scan completes its traversal it will set + * the completion txg to the next txg. This is necessary + * to ensure that any blocks that were freed during + * the scan but have not yet been processed (i.e deferred + * frees) are accounted for. + * + * This structure also maintains information about deferred frees which are + * a special kind of traversal. Deferred free can exist in either a bptree or + * a bpobj structure. The scn_is_bptree flag will indicate the type of + * deferred free that is in progress. If the deferred free is part of an + * asynchronous destroy then the scn_async_destroying flag will be set. + */ +typedef struct dsl_scan { + struct dsl_pool *scn_dp; + + boolean_t scn_pausing; + uint64_t scn_restart_txg; + uint64_t scn_done_txg; + uint64_t scn_sync_start_time; + zio_t *scn_zio_root; + + /* for freeing blocks */ + boolean_t scn_is_bptree; + boolean_t scn_async_destroying; + boolean_t scn_async_stalled; + + /* for debugging / information */ + uint64_t scn_visited_this_txg; + + dsl_scan_phys_t scn_phys; +} dsl_scan_t; + +int dsl_scan_init(struct dsl_pool *dp, uint64_t txg); +void dsl_scan_fini(struct dsl_pool *dp); +void dsl_scan_sync(struct dsl_pool *, dmu_tx_t *); +int dsl_scan_cancel(struct dsl_pool *); +int dsl_scan(struct dsl_pool *, pool_scan_func_t); +void dsl_resilver_restart(struct dsl_pool *, uint64_t txg); +boolean_t dsl_scan_resilvering(struct dsl_pool *dp); +boolean_t dsl_dataset_unstable(struct dsl_dataset *ds); +void dsl_scan_ddt_entry(dsl_scan_t *scn, enum zio_checksum checksum, + ddt_entry_t *dde, dmu_tx_t *tx); +void dsl_scan_ds_destroyed(struct dsl_dataset *ds, struct dmu_tx *tx); +void dsl_scan_ds_snapshotted(struct dsl_dataset *ds, struct dmu_tx *tx); +void dsl_scan_ds_clone_swapped(struct dsl_dataset *ds1, struct dsl_dataset *ds2, + struct dmu_tx *tx); +boolean_t dsl_scan_active(dsl_scan_t *scn); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_SCAN_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_synctask.h +++ linux-4.4.0/zfs/include/sys/dsl_synctask.h @@ -0,0 +1,93 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_DSL_SYNCTASK_H +#define _SYS_DSL_SYNCTASK_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_pool; + +typedef int (dsl_checkfunc_t)(void *, dmu_tx_t *); +typedef void (dsl_syncfunc_t)(void *, dmu_tx_t *); + +typedef enum zfs_space_check { + /* + * Normal space check: if there is less than 3.2% free space, + * the operation will fail. Operations which are logically + * creating things should use this (e.g. "zfs create", "zfs snapshot"). + * User writes (via the ZPL / ZVOL) also fail at this point. + */ + ZFS_SPACE_CHECK_NORMAL, + + /* + * Space check allows use of half the slop space. If there + * is less than 1.6% free space, the operation will fail. Most + * operations should use this (e.g. "zfs set", "zfs rename"), + * because we want them to succeed even after user writes are failing, + * so that they can be used as part of the space recovery process. + */ + ZFS_SPACE_CHECK_RESERVED, + + /* + * No space check is performed. Only operations which we expect to + * result in a net reduction in space should use this + * (e.g. "zfs destroy". Setting quotas & reservations also uses + * this because it needs to circumvent the quota/reservation checks). + * + * See also the comments above spa_slop_shift. + */ + ZFS_SPACE_CHECK_NONE, +} zfs_space_check_t; + +typedef struct dsl_sync_task { + txg_node_t dst_node; + struct dsl_pool *dst_pool; + uint64_t dst_txg; + int dst_space; + zfs_space_check_t dst_space_check; + dsl_checkfunc_t *dst_checkfunc; + dsl_syncfunc_t *dst_syncfunc; + void *dst_arg; + int dst_error; + boolean_t dst_nowaiter; +} dsl_sync_task_t; + +void dsl_sync_task_sync(dsl_sync_task_t *, dmu_tx_t *); +int dsl_sync_task(const char *, dsl_checkfunc_t *, + dsl_syncfunc_t *, void *, int, zfs_space_check_t); +void dsl_sync_task_nowait(struct dsl_pool *, dsl_syncfunc_t *, + void *, int, zfs_space_check_t, dmu_tx_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_SYNCTASK_H */ --- linux-4.4.0.orig/zfs/include/sys/dsl_userhold.h +++ linux-4.4.0/zfs/include/sys/dsl_userhold.h @@ -0,0 +1,57 @@ + +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + */ + +#ifndef _SYS_DSL_USERHOLD_H +#define _SYS_DSL_USERHOLD_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_pool; +struct dsl_dataset; +struct dmu_tx; + +int dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor, + nvlist_t *errlist); +int dsl_dataset_user_release(nvlist_t *holds, nvlist_t *errlist); +int dsl_dataset_get_holds(const char *dsname, nvlist_t *nvl); +void dsl_dataset_user_release_tmp(struct dsl_pool *dp, nvlist_t *holds); +int dsl_dataset_user_hold_check_one(struct dsl_dataset *ds, const char *htag, + boolean_t temphold, struct dmu_tx *tx); +void dsl_dataset_user_hold_sync_one(struct dsl_dataset *ds, const char *htag, + minor_t minor, uint64_t now, struct dmu_tx *tx); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_DSL_USERHOLD_H */ --- linux-4.4.0.orig/zfs/include/sys/efi_partition.h +++ linux-4.4.0/zfs/include/sys/efi_partition.h @@ -0,0 +1,244 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_EFI_PARTITION_H +#define _SYS_EFI_PARTITION_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * GUID Partition Table Header + */ + +#define EFI_MIN_LABEL_SIZE 92 +#define EFI_LABEL_SIZE 512 +#define LEN_EFI_PAD (EFI_LABEL_SIZE - \ + ((5 * sizeof (diskaddr_t)) + \ + (7 * sizeof (uint_t)) + \ + (8 * sizeof (char)) + \ + (1 * (sizeof (struct uuid))))) + +#define EFI_SIGNATURE 0x5452415020494645ULL + +/* EFI Guid Partition Table Header -- little endian on-disk format */ +typedef struct efi_gpt { + uint64_t efi_gpt_Signature; + uint_t efi_gpt_Revision; + uint_t efi_gpt_HeaderSize; + uint_t efi_gpt_HeaderCRC32; + uint_t efi_gpt_Reserved1; + diskaddr_t efi_gpt_MyLBA; + diskaddr_t efi_gpt_AlternateLBA; + diskaddr_t efi_gpt_FirstUsableLBA; + diskaddr_t efi_gpt_LastUsableLBA; + struct uuid efi_gpt_DiskGUID; + diskaddr_t efi_gpt_PartitionEntryLBA; + uint_t efi_gpt_NumberOfPartitionEntries; + uint_t efi_gpt_SizeOfPartitionEntry; + uint_t efi_gpt_PartitionEntryArrayCRC32; + char efi_gpt_Reserved2[LEN_EFI_PAD]; +} efi_gpt_t; + +/* EFI Guid Partition Entry Attributes -- little endian format */ +typedef struct efi_gpe_Attrs { + uint32_t PartitionAttrs :16, + Reserved2 :16; + uint32_t Reserved1 :31, + RequiredPartition :1; +} efi_gpe_Attrs_t; + +/* + * 6a96237f-1dd2-11b2-99a6-080020736631 V_UNASSIGNED (not used as such) + * 6a82cb45-1dd2-11b2-99a6-080020736631 V_BOOT + * 6a85cf4d-1dd2-11b2-99a6-080020736631 V_ROOT + * 6a87c46f-1dd2-11b2-99a6-080020736631 V_SWAP + * 6a898cc3-1dd2-11b2-99a6-080020736631 V_USR + * 6a8b642b-1dd2-11b2-99a6-080020736631 V_BACKUP + * 6a8d2ac7-1dd2-11b2-99a6-080020736631 V_STAND (not used) + * 6a8ef2e9-1dd2-11b2-99a6-080020736631 V_VAR + * 6a90ba39-1dd2-11b2-99a6-080020736631 V_HOME + * 6a9283a5-1dd2-11b2-99a6-080020736631 V_ALTSCTR + * 6a945a3b-1dd2-11b2-99a6-080020736631 V_CACHE + */ + +#define EFI_UNUSED { 0x00000000, 0x0000, 0x0000, 0x00, 0x00, \ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } +#define EFI_RESV1 { 0x6a96237f, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_BOOT { 0x6a82cb45, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_ROOT { 0x6a85cf4d, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_SWAP { 0x6a87c46f, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_USR { 0x6a898cc3, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_BACKUP { 0x6a8b642b, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_RESV2 { 0x6a8d2ac7, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_VAR { 0x6a8ef2e9, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_HOME { 0x6a90ba39, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_ALTSCTR { 0x6a9283a5, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_RESERVED { 0x6a945a3b, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_SYSTEM { 0xC12A7328, 0xF81F, 0x11d2, 0xBA, 0x4B, \ + { 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B } } +#define EFI_LEGACY_MBR { 0x024DEE41, 0x33E7, 0x11d3, 0x9D, 0x69, \ + { 0x00, 0x08, 0xC7, 0x81, 0xF3, 0x9F } } +#define EFI_SYMC_PUB { 0x6a9630d1, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_SYMC_CDS { 0x6a980767, 0x1dd2, 0x11b2, 0x99, 0xa6, \ + { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } +#define EFI_MSFT_RESV { 0xE3C9E316, 0x0B5C, 0x4DB8, 0x81, 0x7D, \ + { 0xF9, 0x2D, 0xF0, 0x02, 0x15, 0xAE } } +#define EFI_DELL_BASIC { 0xebd0a0a2, 0xb9e5, 0x4433, 0x87, 0xc0, \ + { 0x68, 0xb6, 0xb7, 0x26, 0x99, 0xc7 } } +#define EFI_DELL_RAID { 0xa19d880f, 0x05fc, 0x4d3b, 0xa0, 0x06, \ + { 0x74, 0x3f, 0x0f, 0x84, 0x91, 0x1e } } +#define EFI_DELL_SWAP { 0x0657fd6d, 0xa4ab, 0x43c4, 0x84, 0xe5, \ + { 0x09, 0x33, 0xc8, 0x4b, 0x4f, 0x4f } } +#define EFI_DELL_LVM { 0xe6d6d379, 0xf507, 0x44c2, 0xa2, 0x3c, \ + { 0x23, 0x8f, 0x2a, 0x3d, 0xf9, 0x28 } } +#define EFI_DELL_RESV { 0x8da63339, 0x0007, 0x60c0, 0xc4, 0x36, \ + { 0x08, 0x3a, 0xc8, 0x23, 0x09, 0x08 } } +#define EFI_AAPL_HFS { 0x48465300, 0x0000, 0x11aa, 0xaa, 0x11, \ + { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } +#define EFI_AAPL_UFS { 0x55465300, 0x0000, 0x11aa, 0xaa, 0x11, \ + { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } + +/* minimum # of bytes for partition table entires, per EFI spec */ +#define EFI_MIN_ARRAY_SIZE (16 * 1024) + +#define EFI_PART_NAME_LEN 36 + +/* size of the "reserved" partition, in blocks */ +#define EFI_MIN_RESV_SIZE (16 * 1024) + +/* EFI Guid Partition Entry */ +typedef struct efi_gpe { + struct uuid efi_gpe_PartitionTypeGUID; + struct uuid efi_gpe_UniquePartitionGUID; + diskaddr_t efi_gpe_StartingLBA; + diskaddr_t efi_gpe_EndingLBA; + efi_gpe_Attrs_t efi_gpe_Attributes; + ushort_t efi_gpe_PartitionName[EFI_PART_NAME_LEN]; +} efi_gpe_t; + +/* + * passed to the useful (we hope) routines (efi_alloc_and_read and + * efi_write) that take this VTOC-like struct. These routines handle + * converting this struct into the EFI struct, generate UUIDs and + * checksums, and perform any necessary byte-swapping to the on-disk + * format. + */ +/* Solaris library abstraction for EFI partitons */ +typedef struct dk_part { + diskaddr_t p_start; /* starting LBA */ + diskaddr_t p_size; /* size in blocks */ + struct uuid p_guid; /* partion type GUID */ + ushort_t p_tag; /* converted to part'n type GUID */ + ushort_t p_flag; /* attributes */ + char p_name[EFI_PART_NAME_LEN]; /* partition name */ + struct uuid p_uguid; /* unique partition GUID */ + uint_t p_resv[8]; /* future use - set to zero */ +} dk_part_t; + +/* Solaris library abstraction for an EFI GPT */ +#define EFI_VERSION102 0x00010002 +#define EFI_VERSION100 0x00010000 +#define EFI_VERSION_CURRENT EFI_VERSION100 +typedef struct dk_gpt { + uint_t efi_version; /* set to EFI_VERSION_CURRENT */ + uint_t efi_nparts; /* number of partitions below */ + uint_t efi_part_size; /* size of each partition entry */ + /* efi_part_size is unused */ + uint_t efi_lbasize; /* size of block in bytes */ + diskaddr_t efi_last_lba; /* last block on the disk */ + diskaddr_t efi_first_u_lba; /* first block after labels */ + diskaddr_t efi_last_u_lba; /* last block before backup labels */ + struct uuid efi_disk_uguid; /* unique disk GUID */ + uint_t efi_flags; + uint_t efi_reserved1; /* future use - set to zero */ + diskaddr_t efi_altern_lba; /* lba of alternate GPT header */ + uint_t efi_reserved[12]; /* future use - set to zero */ + struct dk_part efi_parts[1]; /* array of partitions */ +} dk_gpt_t; + +/* possible values for "efi_flags" */ +#define EFI_GPT_PRIMARY_CORRUPT 0x1 /* primary label corrupt */ + +/* the private ioctl between libefi and the driver */ +typedef struct dk_efi { + diskaddr_t dki_lba; /* starting block */ + len_t dki_length; /* length in bytes */ + union { + efi_gpt_t *_dki_data; + uint64_t _dki_data_64; + } dki_un; +#define dki_data dki_un._dki_data +#define dki_data_64 dki_un._dki_data_64 +} dk_efi_t; + +struct partition64 { + struct uuid p_type; + uint_t p_partno; + uint_t p_resv1; + diskaddr_t p_start; + diskaddr_t p_size; +}; + +/* + * Number of EFI partitions + */ +#if defined(__linux__) +#define EFI_NUMPAR 128 /* Expected by parted-1.8.1 */ +#else +#define EFI_NUMPAR 9 +#endif + +#ifndef _KERNEL +extern int efi_alloc_and_init(int, uint32_t, struct dk_gpt **); +extern int efi_alloc_and_read(int, struct dk_gpt **); +extern int efi_write(int, struct dk_gpt *); +extern int efi_rescan(int); +extern void efi_free(struct dk_gpt *); +extern int efi_type(int); +extern void efi_err_check(struct dk_gpt *); +extern int efi_auto_sense(int fd, struct dk_gpt **); +extern int efi_use_whole_disk(int fd); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_EFI_PARTITION_H */ --- linux-4.4.0.orig/zfs/include/sys/fm/Makefile.am +++ linux-4.4.0/zfs/include/sys/fm/Makefile.am @@ -0,0 +1,21 @@ +SUBDIRS = fs + +COMMON_H = \ + $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h + +KERNEL_H = + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs/sys/fm +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/sys/fm/Makefile.in +++ linux-4.4.0/zfs/include/sys/fm/Makefile.in @@ -0,0 +1,872 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/fm +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__libzfs_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +SUBDIRS = fs +COMMON_H = \ + $(top_srcdir)/include/sys/fm/protocol.h \ + $(top_srcdir)/include/sys/fm/util.h + +KERNEL_H = +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fm +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/fm/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-kernelHEADERS install-libzfsHEADERS install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/sys/fm/fs/Makefile.am +++ linux-4.4.0/zfs/include/sys/fm/fs/Makefile.am @@ -0,0 +1,18 @@ +COMMON_H = \ + $(top_srcdir)/include/sys/fm/fs/zfs.h + +KERNEL_H = + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs/sys/fm/fs +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm/fs +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/sys/fm/fs/Makefile.in +++ linux-4.4.0/zfs/include/sys/fm/fs/Makefile.in @@ -0,0 +1,752 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/fm/fs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__libzfs_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fm/fs/zfs.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fm/fs/zfs.h +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +COMMON_H = \ + $(top_srcdir)/include/sys/fm/fs/zfs.h + +KERNEL_H = +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fm/fs +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm/fs +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fm/fs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/fm/fs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS \ + install-libzfsHEADERS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/sys/fm/fs/zfs.h +++ linux-4.4.0/zfs/include/sys/fm/fs/zfs.h @@ -0,0 +1,126 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_FM_FS_ZFS_H +#define _SYS_FM_FS_ZFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZFS_ERROR_CLASS "fs.zfs" + +#define FM_EREPORT_ZFS_CHECKSUM "checksum" +#define FM_EREPORT_ZFS_IO "io" +#define FM_EREPORT_ZFS_DATA "data" +#define FM_EREPORT_ZFS_DELAY "delay" +#define FM_EREPORT_ZFS_CONFIG_SYNC "config.sync" +#define FM_EREPORT_ZFS_POOL "zpool" +#define FM_EREPORT_ZFS_POOL_DESTROY "zpool.destroy" +#define FM_EREPORT_ZFS_POOL_REGUID "zpool.reguid" +#define FM_EREPORT_ZFS_DEVICE_UNKNOWN "vdev.unknown" +#define FM_EREPORT_ZFS_DEVICE_OPEN_FAILED "vdev.open_failed" +#define FM_EREPORT_ZFS_DEVICE_CORRUPT_DATA "vdev.corrupt_data" +#define FM_EREPORT_ZFS_DEVICE_NO_REPLICAS "vdev.no_replicas" +#define FM_EREPORT_ZFS_DEVICE_BAD_GUID_SUM "vdev.bad_guid_sum" +#define FM_EREPORT_ZFS_DEVICE_TOO_SMALL "vdev.too_small" +#define FM_EREPORT_ZFS_DEVICE_BAD_LABEL "vdev.bad_label" +#define FM_EREPORT_ZFS_DEVICE_BAD_ASHIFT "vdev.bad_ashift" +#define FM_EREPORT_ZFS_DEVICE_REMOVE "vdev.remove" +#define FM_EREPORT_ZFS_DEVICE_CLEAR "vdev.clear" +#define FM_EREPORT_ZFS_DEVICE_CHECK "vdev.check" +#define FM_EREPORT_ZFS_DEVICE_SPARE "vdev.spare" +#define FM_EREPORT_ZFS_DEVICE_AUTOEXPAND "vdev.autoexpand" +#define FM_EREPORT_ZFS_IO_FAILURE "io_failure" +#define FM_EREPORT_ZFS_PROBE_FAILURE "probe_failure" +#define FM_EREPORT_ZFS_LOG_REPLAY "log_replay" +#define FM_EREPORT_ZFS_RESILVER_START "resilver.start" +#define FM_EREPORT_ZFS_RESILVER_FINISH "resilver.finish" +#define FM_EREPORT_ZFS_SCRUB_START "scrub.start" +#define FM_EREPORT_ZFS_SCRUB_FINISH "scrub.finish" +#define FM_EREPORT_ZFS_BOOTFS_VDEV_ATTACH "bootfs.vdev.attach" + +#define FM_EREPORT_PAYLOAD_ZFS_POOL "pool" +#define FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE "pool_failmode" +#define FM_EREPORT_PAYLOAD_ZFS_POOL_GUID "pool_guid" +#define FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT "pool_context" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_GUID "vdev_guid" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_TYPE "vdev_type" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_PATH "vdev_path" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_DEVID "vdev_devid" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_FRU "vdev_fru" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_STATE "vdev_state" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_ASHIFT "vdev_ashift" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_COMP_TS "vdev_complete_ts" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_DELTA_TS "vdev_delta_ts" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_PATHS "vdev_spare_paths" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_GUIDS "vdev_spare_guids" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_READ_ERRORS "vdev_read_errors" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_WRITE_ERRORS "vdev_write_errors" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_CKSUM_ERRORS "vdev_cksum_errors" +#define FM_EREPORT_PAYLOAD_ZFS_PARENT_GUID "parent_guid" +#define FM_EREPORT_PAYLOAD_ZFS_PARENT_TYPE "parent_type" +#define FM_EREPORT_PAYLOAD_ZFS_PARENT_PATH "parent_path" +#define FM_EREPORT_PAYLOAD_ZFS_PARENT_DEVID "parent_devid" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJSET "zio_objset" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJECT "zio_object" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_LEVEL "zio_level" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_BLKID "zio_blkid" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_ERR "zio_err" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_OFFSET "zio_offset" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_SIZE "zio_size" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_FLAGS "zio_flags" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_STAGE "zio_stage" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_PIPELINE "zio_pipeline" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELAY "zio_delay" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_TIMESTAMP "zio_timestamp" +#define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELTA "zio_delta" +#define FM_EREPORT_PAYLOAD_ZFS_PREV_STATE "prev_state" +#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_EXPECTED "cksum_expected" +#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ACTUAL "cksum_actual" +#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO "cksum_algorithm" +#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_BYTESWAP "cksum_byteswap" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_OFFSET_RANGES "bad_ranges" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_MIN_GAP "bad_ranges_min_gap" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_SETS "bad_range_sets" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_CLEARS "bad_range_clears" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_SET_BITS "bad_set_bits" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_BITS "bad_cleared_bits" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_SET_HISTOGRAM "bad_set_histogram" +#define FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_HISTOGRAM "bad_cleared_histogram" + +#define FM_EREPORT_FAILMODE_WAIT "wait" +#define FM_EREPORT_FAILMODE_CONTINUE "continue" +#define FM_EREPORT_FAILMODE_PANIC "panic" + +#define FM_EREPORT_RESOURCE_REMOVED "removed" +#define FM_EREPORT_RESOURCE_AUTOREPLACE "autoreplace" +#define FM_EREPORT_RESOURCE_STATECHANGE "statechange" + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FM_FS_ZFS_H */ --- linux-4.4.0.orig/zfs/include/sys/fm/protocol.h +++ linux-4.4.0/zfs/include/sys/fm/protocol.h @@ -0,0 +1,368 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FM_PROTOCOL_H +#define _SYS_FM_PROTOCOL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _KERNEL +#include +#include +#else +#include +#include +#endif +#include + +/* FM common member names */ +#define FM_CLASS "class" +#define FM_VERSION "version" + +/* FM protocol category 1 class names */ +#define FM_EREPORT_CLASS "ereport" +#define FM_FAULT_CLASS "fault" +#define FM_DEFECT_CLASS "defect" +#define FM_RSRC_CLASS "resource" +#define FM_LIST_EVENT "list" +#define FM_IREPORT_CLASS "ireport" + +/* FM list.* event class values */ +#define FM_LIST_SUSPECT_CLASS FM_LIST_EVENT ".suspect" +#define FM_LIST_ISOLATED_CLASS FM_LIST_EVENT ".isolated" +#define FM_LIST_REPAIRED_CLASS FM_LIST_EVENT ".repaired" +#define FM_LIST_UPDATED_CLASS FM_LIST_EVENT ".updated" +#define FM_LIST_RESOLVED_CLASS FM_LIST_EVENT ".resolved" + +/* ereport class subcategory values */ +#define FM_ERROR_CPU "cpu" +#define FM_ERROR_IO "io" + +/* ereport version and payload member names */ +#define FM_EREPORT_VERS0 0 +#define FM_EREPORT_VERSION FM_EREPORT_VERS0 + +/* ereport payload member names */ +#define FM_EREPORT_DETECTOR "detector" +#define FM_EREPORT_ENA "ena" +#define FM_EREPORT_TIME "time" +#define FM_EREPORT_EID "eid" + +/* list.* event payload member names */ +#define FM_LIST_EVENT_SIZE "list-sz" + +/* ireport.* event payload member names */ +#define FM_IREPORT_DETECTOR "detector" +#define FM_IREPORT_UUID "uuid" +#define FM_IREPORT_PRIORITY "pri" +#define FM_IREPORT_ATTRIBUTES "attr" + +/* + * list.suspect, isolated, updated, repaired and resolved + * versions/payload member names. + */ +#define FM_SUSPECT_UUID "uuid" +#define FM_SUSPECT_DIAG_CODE "code" +#define FM_SUSPECT_DIAG_TIME "diag-time" +#define FM_SUSPECT_DE "de" +#define FM_SUSPECT_FAULT_LIST "fault-list" +#define FM_SUSPECT_FAULT_SZ "fault-list-sz" +#define FM_SUSPECT_FAULT_STATUS "fault-status" +#define FM_SUSPECT_INJECTED "__injected" +#define FM_SUSPECT_MESSAGE "message" +#define FM_SUSPECT_RETIRE "retire" +#define FM_SUSPECT_RESPONSE "response" +#define FM_SUSPECT_SEVERITY "severity" + +#define FM_SUSPECT_VERS0 0 +#define FM_SUSPECT_VERSION FM_SUSPECT_VERS0 + +#define FM_SUSPECT_FAULTY 0x1 +#define FM_SUSPECT_UNUSABLE 0x2 +#define FM_SUSPECT_NOT_PRESENT 0x4 +#define FM_SUSPECT_DEGRADED 0x8 +#define FM_SUSPECT_REPAIRED 0x10 +#define FM_SUSPECT_REPLACED 0x20 +#define FM_SUSPECT_ACQUITTED 0x40 + +/* fault event versions and payload member names */ +#define FM_FAULT_VERS0 0 +#define FM_FAULT_VERSION FM_FAULT_VERS0 + +#define FM_FAULT_ASRU "asru" +#define FM_FAULT_FRU "fru" +#define FM_FAULT_FRU_LABEL "fru-label" +#define FM_FAULT_CERTAINTY "certainty" +#define FM_FAULT_RESOURCE "resource" +#define FM_FAULT_LOCATION "location" + +/* resource event versions and payload member names */ +#define FM_RSRC_VERS0 0 +#define FM_RSRC_VERSION FM_RSRC_VERS0 +#define FM_RSRC_RESOURCE "resource" + +/* resource.fm.asru.* payload member names */ +#define FM_RSRC_ASRU_UUID "uuid" +#define FM_RSRC_ASRU_CODE "code" +#define FM_RSRC_ASRU_FAULTY "faulty" +#define FM_RSRC_ASRU_REPAIRED "repaired" +#define FM_RSRC_ASRU_REPLACED "replaced" +#define FM_RSRC_ASRU_ACQUITTED "acquitted" +#define FM_RSRC_ASRU_RESOLVED "resolved" +#define FM_RSRC_ASRU_UNUSABLE "unusable" +#define FM_RSRC_ASRU_EVENT "event" + +/* resource.fm.xprt.* versions and payload member names */ +#define FM_RSRC_XPRT_VERS0 0 +#define FM_RSRC_XPRT_VERSION FM_RSRC_XPRT_VERS0 +#define FM_RSRC_XPRT_UUID "uuid" +#define FM_RSRC_XPRT_SUBCLASS "subclass" +#define FM_RSRC_XPRT_FAULT_STATUS "fault-status" +#define FM_RSRC_XPRT_FAULT_HAS_ASRU "fault-has-asru" + +/* + * FM ENA Format Macros + */ +#define ENA_FORMAT_MASK 0x3 +#define ENA_FORMAT(ena) ((ena) & ENA_FORMAT_MASK) + +/* ENA format types */ +#define FM_ENA_FMT0 0 +#define FM_ENA_FMT1 1 +#define FM_ENA_FMT2 2 + +/* Format 1 */ +#define ENA_FMT1_GEN_MASK 0x00000000000003FCull +#define ENA_FMT1_ID_MASK 0xFFFFFFFFFFFFFC00ull +#define ENA_FMT1_CPUID_MASK 0x00000000000FFC00ull +#define ENA_FMT1_TIME_MASK 0xFFFFFFFFFFF00000ull +#define ENA_FMT1_GEN_SHFT 2 +#define ENA_FMT1_ID_SHFT 10 +#define ENA_FMT1_CPUID_SHFT ENA_FMT1_ID_SHFT +#define ENA_FMT1_TIME_SHFT 20 + +/* Format 2 */ +#define ENA_FMT2_GEN_MASK 0x00000000000003FCull +#define ENA_FMT2_ID_MASK 0xFFFFFFFFFFFFFC00ull +#define ENA_FMT2_TIME_MASK ENA_FMT2_ID_MASK +#define ENA_FMT2_GEN_SHFT 2 +#define ENA_FMT2_ID_SHFT 10 +#define ENA_FMT2_TIME_SHFT ENA_FMT2_ID_SHFT + +/* Common FMRI type names */ +#define FM_FMRI_AUTHORITY "authority" +#define FM_FMRI_SCHEME "scheme" +#define FM_FMRI_SVC_AUTHORITY "svc-authority" +#define FM_FMRI_FACILITY "facility" + +/* FMRI authority-type member names */ +#define FM_FMRI_AUTH_CHASSIS "chassis-id" +#define FM_FMRI_AUTH_PRODUCT_SN "product-sn" +#define FM_FMRI_AUTH_PRODUCT "product-id" +#define FM_FMRI_AUTH_DOMAIN "domain-id" +#define FM_FMRI_AUTH_SERVER "server-id" +#define FM_FMRI_AUTH_HOST "host-id" + +#define FM_AUTH_VERS0 0 +#define FM_FMRI_AUTH_VERSION FM_AUTH_VERS0 + +/* scheme name values */ +#define FM_FMRI_SCHEME_FMD "fmd" +#define FM_FMRI_SCHEME_DEV "dev" +#define FM_FMRI_SCHEME_HC "hc" +#define FM_FMRI_SCHEME_SVC "svc" +#define FM_FMRI_SCHEME_CPU "cpu" +#define FM_FMRI_SCHEME_MEM "mem" +#define FM_FMRI_SCHEME_MOD "mod" +#define FM_FMRI_SCHEME_PKG "pkg" +#define FM_FMRI_SCHEME_LEGACY "legacy-hc" +#define FM_FMRI_SCHEME_ZFS "zfs" +#define FM_FMRI_SCHEME_SW "sw" + +/* Scheme versions */ +#define FMD_SCHEME_VERSION0 0 +#define FM_FMD_SCHEME_VERSION FMD_SCHEME_VERSION0 +#define DEV_SCHEME_VERSION0 0 +#define FM_DEV_SCHEME_VERSION DEV_SCHEME_VERSION0 +#define FM_HC_VERS0 0 +#define FM_HC_SCHEME_VERSION FM_HC_VERS0 +#define CPU_SCHEME_VERSION0 0 +#define CPU_SCHEME_VERSION1 1 +#define FM_CPU_SCHEME_VERSION CPU_SCHEME_VERSION1 +#define MEM_SCHEME_VERSION0 0 +#define FM_MEM_SCHEME_VERSION MEM_SCHEME_VERSION0 +#define MOD_SCHEME_VERSION0 0 +#define FM_MOD_SCHEME_VERSION MOD_SCHEME_VERSION0 +#define PKG_SCHEME_VERSION0 0 +#define FM_PKG_SCHEME_VERSION PKG_SCHEME_VERSION0 +#define LEGACY_SCHEME_VERSION0 0 +#define FM_LEGACY_SCHEME_VERSION LEGACY_SCHEME_VERSION0 +#define SVC_SCHEME_VERSION0 0 +#define FM_SVC_SCHEME_VERSION SVC_SCHEME_VERSION0 +#define ZFS_SCHEME_VERSION0 0 +#define FM_ZFS_SCHEME_VERSION ZFS_SCHEME_VERSION0 +#define SW_SCHEME_VERSION0 0 +#define FM_SW_SCHEME_VERSION SW_SCHEME_VERSION0 + +/* hc scheme member names */ +#define FM_FMRI_HC_SERIAL_ID "serial" +#define FM_FMRI_HC_PART "part" +#define FM_FMRI_HC_REVISION "revision" +#define FM_FMRI_HC_ROOT "hc-root" +#define FM_FMRI_HC_LIST_SZ "hc-list-sz" +#define FM_FMRI_HC_LIST "hc-list" +#define FM_FMRI_HC_SPECIFIC "hc-specific" + +/* facility member names */ +#define FM_FMRI_FACILITY_NAME "facility-name" +#define FM_FMRI_FACILITY_TYPE "facility-type" + +/* hc-list version and member names */ +#define FM_FMRI_HC_NAME "hc-name" +#define FM_FMRI_HC_ID "hc-id" + +#define HC_LIST_VERSION0 0 +#define FM_HC_LIST_VERSION HC_LIST_VERSION0 + +/* hc-specific member names */ +#define FM_FMRI_HC_SPECIFIC_OFFSET "offset" +#define FM_FMRI_HC_SPECIFIC_PHYSADDR "physaddr" + +/* fmd module scheme member names */ +#define FM_FMRI_FMD_NAME "mod-name" +#define FM_FMRI_FMD_VERSION "mod-version" + +/* dev scheme member names */ +#define FM_FMRI_DEV_ID "devid" +#define FM_FMRI_DEV_TGTPTLUN0 "target-port-l0id" +#define FM_FMRI_DEV_PATH "device-path" + +/* pkg scheme member names */ +#define FM_FMRI_PKG_BASEDIR "pkg-basedir" +#define FM_FMRI_PKG_INST "pkg-inst" +#define FM_FMRI_PKG_VERSION "pkg-version" + +/* svc scheme member names */ +#define FM_FMRI_SVC_NAME "svc-name" +#define FM_FMRI_SVC_INSTANCE "svc-instance" +#define FM_FMRI_SVC_CONTRACT_ID "svc-contract-id" + +/* svc-authority member names */ +#define FM_FMRI_SVC_AUTH_SCOPE "scope" +#define FM_FMRI_SVC_AUTH_SYSTEM_FQN "system-fqn" + +/* cpu scheme member names */ +#define FM_FMRI_CPU_ID "cpuid" +#define FM_FMRI_CPU_SERIAL_ID "serial" +#define FM_FMRI_CPU_MASK "cpumask" +#define FM_FMRI_CPU_VID "cpuvid" +#define FM_FMRI_CPU_CPUFRU "cpufru" +#define FM_FMRI_CPU_CACHE_INDEX "cacheindex" +#define FM_FMRI_CPU_CACHE_WAY "cacheway" +#define FM_FMRI_CPU_CACHE_BIT "cachebit" +#define FM_FMRI_CPU_CACHE_TYPE "cachetype" + +#define FM_FMRI_CPU_CACHE_TYPE_L2 0 +#define FM_FMRI_CPU_CACHE_TYPE_L3 1 + +/* legacy-hc scheme member names */ +#define FM_FMRI_LEGACY_HC "component" +#define FM_FMRI_LEGACY_HC_PREFIX FM_FMRI_SCHEME_HC":///" \ + FM_FMRI_LEGACY_HC"=" + +/* mem scheme member names */ +#define FM_FMRI_MEM_UNUM "unum" +#define FM_FMRI_MEM_SERIAL_ID "serial" +#define FM_FMRI_MEM_PHYSADDR "physaddr" +#define FM_FMRI_MEM_MEMCONFIG "memconfig" +#define FM_FMRI_MEM_OFFSET "offset" + +/* mod scheme member names */ +#define FM_FMRI_MOD_PKG "mod-pkg" +#define FM_FMRI_MOD_NAME "mod-name" +#define FM_FMRI_MOD_ID "mod-id" +#define FM_FMRI_MOD_DESC "mod-desc" + +/* zfs scheme member names */ +#define FM_FMRI_ZFS_POOL "pool" +#define FM_FMRI_ZFS_VDEV "vdev" + +/* sw scheme member names - extra indentation for members of an nvlist */ +#define FM_FMRI_SW_OBJ "object" +#define FM_FMRI_SW_OBJ_PATH "path" +#define FM_FMRI_SW_OBJ_ROOT "root" +#define FM_FMRI_SW_OBJ_PKG "pkg" +#define FM_FMRI_SW_SITE "site" +#define FM_FMRI_SW_SITE_TOKEN "token" +#define FM_FMRI_SW_SITE_MODULE "module" +#define FM_FMRI_SW_SITE_FILE "file" +#define FM_FMRI_SW_SITE_LINE "line" +#define FM_FMRI_SW_SITE_FUNC "func" +#define FM_FMRI_SW_CTXT "context" +#define FM_FMRI_SW_CTXT_ORIGIN "origin" +#define FM_FMRI_SW_CTXT_EXECNAME "execname" +#define FM_FMRI_SW_CTXT_PID "pid" +#define FM_FMRI_SW_CTXT_ZONE "zone" +#define FM_FMRI_SW_CTXT_CTID "ctid" +#define FM_FMRI_SW_CTXT_STACK "stack" +#define FM_NVA_FREE 0 /* free allocator on nvlist_destroy */ +#define FM_NVA_RETAIN 1 /* keep allocator on nvlist_destroy */ + +extern nv_alloc_t *fm_nva_xcreate(char *, size_t); +extern void fm_nva_xdestroy(nv_alloc_t *); +extern nvlist_t *fm_nvlist_create(nv_alloc_t *); +extern void fm_nvlist_destroy(nvlist_t *, int); +extern void fm_ereport_set(nvlist_t *, int, const char *, uint64_t, + const nvlist_t *, ...); +extern void fm_payload_set(nvlist_t *, ...); +extern int i_fm_payload_set(nvlist_t *, const char *, va_list); +extern void fm_fmri_hc_set(nvlist_t *, int, const nvlist_t *, nvlist_t *, + int, ...); +extern void fm_fmri_dev_set(nvlist_t *, int, const nvlist_t *, const char *, + const char *, const char *); +extern void fm_fmri_de_set(nvlist_t *, int, const nvlist_t *, const char *); +extern void fm_fmri_cpu_set(nvlist_t *, int, const nvlist_t *, uint32_t, + uint8_t *, const char *); +extern void fm_fmri_mem_set(nvlist_t *, int, const nvlist_t *, const char *, + const char *, uint64_t); +extern void fm_fmri_zfs_set(nvlist_t *, int, uint64_t, uint64_t); +extern void fm_fmri_hc_create(nvlist_t *, int, const nvlist_t *, nvlist_t *, + nvlist_t *, int, ...); + +extern uint64_t fm_ena_increment(uint64_t); +extern uint64_t fm_ena_generate(uint64_t, uchar_t); +extern uint64_t fm_ena_generate_cpu(uint64_t, processorid_t, uchar_t); +extern uint64_t fm_ena_generation_get(uint64_t); +extern uchar_t fm_ena_format_get(uint64_t); +extern uint64_t fm_ena_id_get(uint64_t); +extern uint64_t fm_ena_time_get(uint64_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FM_PROTOCOL_H */ --- linux-4.4.0.orig/zfs/include/sys/fm/util.h +++ linux-4.4.0/zfs/include/sys/fm/util.h @@ -0,0 +1,117 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FM_UTIL_H +#define _SYS_FM_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * Shared user/kernel definitions for class length, error channel name, + * and kernel event publisher string. + */ +#define FM_MAX_CLASS 100 +#define FM_ERROR_CHAN "com.sun:fm:error" +#define FM_PUB "fm" + +/* + * ereport dump device transport support + * + * Ereports are written out to the dump device at a proscribed offset from the + * end, similar to in-transit log messages. The ereports are represented as a + * erpt_dump_t header followed by ed_size bytes of packed native nvlist data. + * + * NOTE: All of these constants and the header must be defined so they have the + * same representation for *both* 32-bit and 64-bit producers and consumers. + */ +#define ERPT_MAGIC 0xf00d4eddU +#define ERPT_MAX_ERRS 16 +#define ERPT_DATA_SZ (6 * 1024) +#define ERPT_EVCH_MAX 256 +#define ERPT_HIWAT 64 + +typedef struct erpt_dump { + uint32_t ed_magic; /* ERPT_MAGIC or zero to indicate end */ + uint32_t ed_chksum; /* checksum32() of packed nvlist data */ + uint32_t ed_size; /* ereport (nvl) fixed buf size */ + uint32_t ed_pad; /* reserved for future use */ + hrtime_t ed_hrt_nsec; /* hrtime of this ereport */ + hrtime_t ed_hrt_base; /* hrtime sample corresponding to ed_tod_base */ + struct { + uint64_t sec; /* seconds since gettimeofday() Epoch */ + uint64_t nsec; /* nanoseconds past ed_tod_base.sec */ + } ed_tod_base; +} erpt_dump_t; + +#ifdef _KERNEL + +#define ZEVENT_SHUTDOWN 0x1 + +typedef void zevent_cb_t(nvlist_t *, nvlist_t *); + +typedef struct zevent_s { + nvlist_t *ev_nvl; /* protected by the zevent_lock */ + nvlist_t *ev_detector; /* " */ + list_t ev_ze_list; /* " */ + list_node_t ev_node; /* " */ + zevent_cb_t *ev_cb; /* " */ + uint64_t ev_eid; +} zevent_t; + +typedef struct zfs_zevent { + zevent_t *ze_zevent; /* protected by the zevent_lock */ + list_node_t ze_node; /* " */ + uint64_t ze_dropped; /* " */ +} zfs_zevent_t; + +extern void fm_init(void); +extern void fm_fini(void); +extern void fm_nvprint(nvlist_t *); +extern int zfs_zevent_post(nvlist_t *, nvlist_t *, zevent_cb_t *); +extern void zfs_zevent_drain_all(int *); +extern int zfs_zevent_fd_hold(int, minor_t *, zfs_zevent_t **); +extern void zfs_zevent_fd_rele(int); +extern int zfs_zevent_next(zfs_zevent_t *, nvlist_t **, uint64_t *, uint64_t *); +extern int zfs_zevent_wait(zfs_zevent_t *); +extern int zfs_zevent_seek(zfs_zevent_t *, uint64_t); +extern void zfs_zevent_init(zfs_zevent_t **); +extern void zfs_zevent_destroy(zfs_zevent_t *); + +#else + +static inline void fm_init(void) { } +static inline void fm_fini(void) { } + +#endif /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FM_UTIL_H */ --- linux-4.4.0.orig/zfs/include/sys/fs/Makefile.am +++ linux-4.4.0/zfs/include/sys/fs/Makefile.am @@ -0,0 +1,18 @@ +COMMON_H = \ + $(top_srcdir)/include/sys/fs/zfs.h + +KERNEL_H = + +USER_H = + +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) + +if CONFIG_USER +libzfsdir = $(includedir)/libzfs/sys/fs +libzfs_HEADERS = $(COMMON_H) $(USER_H) +endif + +if CONFIG_KERNEL +kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fs +kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +endif --- linux-4.4.0.orig/zfs/include/sys/fs/Makefile.in +++ linux-4.4.0/zfs/include/sys/fs/Makefile.in @@ -0,0 +1,752 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include/sys/fs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/always-no-bool-compare.m4 \ + $(top_srcdir)/config/always-no-unused-but-set-variable.m4 \ + $(top_srcdir)/config/dkms.m4 \ + $(top_srcdir)/config/kernel-acl.m4 \ + $(top_srcdir)/config/kernel-automount.m4 \ + $(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \ + $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ + $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ + $(top_srcdir)/config/kernel-bdi-setup-and-register.m4 \ + $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ + $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ + $(top_srcdir)/config/kernel-bio-failfast.m4 \ + $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ + $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ + $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ + $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ + $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ + $(top_srcdir)/config/kernel-blkdev-get.m4 \ + $(top_srcdir)/config/kernel-block-device-operations-release-void.m4 \ + $(top_srcdir)/config/kernel-check-disk-size-change.m4 \ + $(top_srcdir)/config/kernel-clear-inode.m4 \ + $(top_srcdir)/config/kernel-commit-metadata.m4 \ + $(top_srcdir)/config/kernel-create-nameidata.m4 \ + $(top_srcdir)/config/kernel-current_bio_tail.m4 \ + $(top_srcdir)/config/kernel-d-make-root.m4 \ + $(top_srcdir)/config/kernel-d-obtain-alias.m4 \ + $(top_srcdir)/config/kernel-d-prune-aliases.m4 \ + $(top_srcdir)/config/kernel-declare-event-class.m4 \ + $(top_srcdir)/config/kernel-dentry-operations.m4 \ + $(top_srcdir)/config/kernel-dirty-inode.m4 \ + $(top_srcdir)/config/kernel-discard-granularity.m4 \ + $(top_srcdir)/config/kernel-elevator-change.m4 \ + $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ + $(top_srcdir)/config/kernel-evict-inode.m4 \ + $(top_srcdir)/config/kernel-fallocate.m4 \ + $(top_srcdir)/config/kernel-file-inode.m4 \ + $(top_srcdir)/config/kernel-fmode-t.m4 \ + $(top_srcdir)/config/kernel-follow-down-one.m4 \ + $(top_srcdir)/config/kernel-follow-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-fsync.m4 \ + $(top_srcdir)/config/kernel-generic_io_acct.m4 \ + $(top_srcdir)/config/kernel-get-disk-ro.m4 \ + $(top_srcdir)/config/kernel-get-gendisk.m4 \ + $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ + $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ + $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ + $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ + $(top_srcdir)/config/kernel-kobj-name-len.m4 \ + $(top_srcdir)/config/kernel-lookup-bdev.m4 \ + $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ + $(top_srcdir)/config/kernel-lseek-execute.m4 \ + $(top_srcdir)/config/kernel-mk-request-fn.m4 \ + $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ + $(top_srcdir)/config/kernel-mount-nodev.m4 \ + $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ + $(top_srcdir)/config/kernel-put-link-nameidata.m4 \ + $(top_srcdir)/config/kernel-security-inode-init.m4 \ + $(top_srcdir)/config/kernel-set-nlink.m4 \ + $(top_srcdir)/config/kernel-sget-args.m4 \ + $(top_srcdir)/config/kernel-show-options.m4 \ + $(top_srcdir)/config/kernel-shrink.m4 \ + $(top_srcdir)/config/kernel-truncate-range.m4 \ + $(top_srcdir)/config/kernel-truncate-setsize.m4 \ + $(top_srcdir)/config/kernel-vfs-iterate.m4 \ + $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ + $(top_srcdir)/config/kernel-xattr-handler.m4 \ + $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 \ + $(top_srcdir)/config/mount-helper.m4 \ + $(top_srcdir)/config/user-arch.m4 \ + $(top_srcdir)/config/user-dracut.m4 \ + $(top_srcdir)/config/user-frame-larger-than.m4 \ + $(top_srcdir)/config/user-libblkid.m4 \ + $(top_srcdir)/config/user-libuuid.m4 \ + $(top_srcdir)/config/user-runstatedir.m4 \ + $(top_srcdir)/config/user-systemd.m4 \ + $(top_srcdir)/config/user-sysvinit.m4 \ + $(top_srcdir)/config/user-udev.m4 \ + $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ + $(top_srcdir)/config/zfs-build.m4 \ + $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__kernel_HEADERS_DIST) \ + $(am__libzfs_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/zfs_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fs/zfs.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" +am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fs/zfs.h +HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALIEN = @ALIEN@ +ALIEN_VERSION = @ALIEN_VERSION@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DEBUG_DMU_TX = @DEBUG_DMU_TX@ +DEBUG_STACKFLAGS = @DEBUG_STACKFLAGS@ +DEBUG_ZFS = @DEBUG_ZFS@ +DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ +DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ +DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ +DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ +DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DPKG = @DPKG@ +DPKGBUILD = @DPKGBUILD@ +DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ +DPKG_VERSION = @DPKG_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ +GREP = @GREP@ +HAVE_ALIEN = @HAVE_ALIEN@ +HAVE_DPKG = @HAVE_DPKG@ +HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ +HAVE_RPM = @HAVE_RPM@ +HAVE_RPMBUILD = @HAVE_RPMBUILD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KERNELCPPFLAGS = @KERNELCPPFLAGS@ +KERNELMAKE_PARAMS = @KERNELMAKE_PARAMS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBBLKID = @LIBBLKID@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID = @LIBUUID@ +LINUX = @LINUX@ +LINUX_OBJ = @LINUX_OBJ@ +LINUX_SYMBOLS = @LINUX_SYMBOLS@ +LINUX_VERSION = @LINUX_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ +NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASE = @RELEASE@ +RPM = @RPM@ +RPMBUILD = @RPMBUILD@ +RPMBUILD_VERSION = @RPMBUILD_VERSION@ +RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ +RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ +RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ +RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ +RPM_SPEC_DIR = @RPM_SPEC_DIR@ +RPM_VERSION = @RPM_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPL = @SPL@ +SPL_OBJ = @SPL_OBJ@ +SPL_SYMBOLS = @SPL_SYMBOLS@ +SPL_VERSION = @SPL_VERSION@ +SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ +SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ +SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ +SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ +STRIP = @STRIP@ +TARGET_ASM_DIR = @TARGET_ASM_DIR@ +VENDOR = @VENDOR@ +VERSION = @VERSION@ +ZFS_CONFIG = @ZFS_CONFIG@ +ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ +ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ +ZFS_META_ALIAS = @ZFS_META_ALIAS@ +ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ +ZFS_META_DATA = @ZFS_META_DATA@ +ZFS_META_LICENSE = @ZFS_META_LICENSE@ +ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ +ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ +ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ +ZFS_META_NAME = @ZFS_META_NAME@ +ZFS_META_RELEASE = @ZFS_META_RELEASE@ +ZFS_META_VERSION = @ZFS_META_VERSION@ +ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ +ZLIB = @ZLIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dracutdir = @dracutdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +modulesloaddir = @modulesloaddir@ +mounthelperdir = @mounthelperdir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdpresetdir = @systemdpresetdir@ +systemdunitdir = @systemdunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +udevruledir = @udevruledir@ +COMMON_H = \ + $(top_srcdir)/include/sys/fs/zfs.h + +KERNEL_H = +USER_H = +EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) +@CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fs +@CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) +@CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fs +@CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/sys/fs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-kernelHEADERS: $(kernel_HEADERS) + @$(NORMAL_INSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(kerneldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(kerneldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ + done + +uninstall-kernelHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(kerneldir)'; $(am__uninstall_files_from_dir) +install-libzfsHEADERS: $(libzfs_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libzfsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ + done + +uninstall-libzfsHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libzfsdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-kernelHEADERS install-libzfsHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-kernelHEADERS \ + install-libzfsHEADERS install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-kernelHEADERS uninstall-libzfsHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: --- linux-4.4.0.orig/zfs/include/sys/fs/zfs.h +++ linux-4.4.0/zfs/include/sys/fs/zfs.h @@ -0,0 +1,999 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#ifndef _SYS_FS_ZFS_H +#define _SYS_FS_ZFS_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types and constants shared between userland and the kernel. + */ + +/* + * Each dataset can be one of the following types. These constants can be + * combined into masks that can be passed to various functions. + */ +typedef enum { + ZFS_TYPE_FILESYSTEM = (1 << 0), + ZFS_TYPE_SNAPSHOT = (1 << 1), + ZFS_TYPE_VOLUME = (1 << 2), + ZFS_TYPE_POOL = (1 << 3), + ZFS_TYPE_BOOKMARK = (1 << 4) +} zfs_type_t; + +typedef enum dmu_objset_type { + DMU_OST_NONE, + DMU_OST_META, + DMU_OST_ZFS, + DMU_OST_ZVOL, + DMU_OST_OTHER, /* For testing only! */ + DMU_OST_ANY, /* Be careful! */ + DMU_OST_NUMTYPES +} dmu_objset_type_t; + +#define ZFS_TYPE_DATASET \ + (ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME | ZFS_TYPE_SNAPSHOT) + +#define ZAP_MAXNAMELEN 256 +#define ZAP_MAXVALUELEN (1024 * 8) +#define ZAP_OLDMAXVALUELEN 1024 + +/* + * Dataset properties are identified by these constants and must be added to + * the end of this list to ensure that external consumers are not affected + * by the change. If you make any changes to this list, be sure to update + * the property table in module/zcommon/zfs_prop.c. + */ +typedef enum { + ZFS_PROP_TYPE, + ZFS_PROP_CREATION, + ZFS_PROP_USED, + ZFS_PROP_AVAILABLE, + ZFS_PROP_REFERENCED, + ZFS_PROP_COMPRESSRATIO, + ZFS_PROP_MOUNTED, + ZFS_PROP_ORIGIN, + ZFS_PROP_QUOTA, + ZFS_PROP_RESERVATION, + ZFS_PROP_VOLSIZE, + ZFS_PROP_VOLBLOCKSIZE, + ZFS_PROP_RECORDSIZE, + ZFS_PROP_MOUNTPOINT, + ZFS_PROP_SHARENFS, + ZFS_PROP_CHECKSUM, + ZFS_PROP_COMPRESSION, + ZFS_PROP_ATIME, + ZFS_PROP_DEVICES, + ZFS_PROP_EXEC, + ZFS_PROP_SETUID, + ZFS_PROP_READONLY, + ZFS_PROP_ZONED, + ZFS_PROP_SNAPDIR, + ZFS_PROP_PRIVATE, /* not exposed to user, temporary */ + ZFS_PROP_ACLINHERIT, + ZFS_PROP_CREATETXG, /* not exposed to the user */ + ZFS_PROP_NAME, /* not exposed to the user */ + ZFS_PROP_CANMOUNT, + ZFS_PROP_ISCSIOPTIONS, /* not exposed to the user */ + ZFS_PROP_XATTR, + ZFS_PROP_NUMCLONES, /* not exposed to the user */ + ZFS_PROP_COPIES, + ZFS_PROP_VERSION, + ZFS_PROP_UTF8ONLY, + ZFS_PROP_NORMALIZE, + ZFS_PROP_CASE, + ZFS_PROP_VSCAN, + ZFS_PROP_NBMAND, + ZFS_PROP_SHARESMB, + ZFS_PROP_REFQUOTA, + ZFS_PROP_REFRESERVATION, + ZFS_PROP_GUID, + ZFS_PROP_PRIMARYCACHE, + ZFS_PROP_SECONDARYCACHE, + ZFS_PROP_USEDSNAP, + ZFS_PROP_USEDDS, + ZFS_PROP_USEDCHILD, + ZFS_PROP_USEDREFRESERV, + ZFS_PROP_USERACCOUNTING, /* not exposed to the user */ + ZFS_PROP_STMF_SHAREINFO, /* not exposed to the user */ + ZFS_PROP_DEFER_DESTROY, + ZFS_PROP_USERREFS, + ZFS_PROP_LOGBIAS, + ZFS_PROP_UNIQUE, /* not exposed to the user */ + ZFS_PROP_OBJSETID, /* not exposed to the user */ + ZFS_PROP_DEDUP, + ZFS_PROP_MLSLABEL, + ZFS_PROP_SYNC, + ZFS_PROP_REFRATIO, + ZFS_PROP_WRITTEN, + ZFS_PROP_CLONES, + ZFS_PROP_LOGICALUSED, + ZFS_PROP_LOGICALREFERENCED, + ZFS_PROP_INCONSISTENT, /* not exposed to the user */ + ZFS_PROP_FILESYSTEM_LIMIT, + ZFS_PROP_SNAPSHOT_LIMIT, + ZFS_PROP_FILESYSTEM_COUNT, + ZFS_PROP_SNAPSHOT_COUNT, + ZFS_PROP_SNAPDEV, + ZFS_PROP_ACLTYPE, + ZFS_PROP_SELINUX_CONTEXT, + ZFS_PROP_SELINUX_FSCONTEXT, + ZFS_PROP_SELINUX_DEFCONTEXT, + ZFS_PROP_SELINUX_ROOTCONTEXT, + ZFS_PROP_RELATIME, + ZFS_PROP_REDUNDANT_METADATA, + ZFS_PROP_OVERLAY, + ZFS_NUM_PROPS +} zfs_prop_t; + +typedef enum { + ZFS_PROP_USERUSED, + ZFS_PROP_USERQUOTA, + ZFS_PROP_GROUPUSED, + ZFS_PROP_GROUPQUOTA, + ZFS_NUM_USERQUOTA_PROPS +} zfs_userquota_prop_t; + +extern const char *zfs_userquota_prop_prefixes[ZFS_NUM_USERQUOTA_PROPS]; + +/* + * Pool properties are identified by these constants and must be added to the + * end of this list to ensure that external consumers are not affected + * by the change. If you make any changes to this list, be sure to update + * the property table in module/zcommon/zpool_prop.c. + */ +typedef enum { + ZPOOL_PROP_NAME, + ZPOOL_PROP_SIZE, + ZPOOL_PROP_CAPACITY, + ZPOOL_PROP_ALTROOT, + ZPOOL_PROP_HEALTH, + ZPOOL_PROP_GUID, + ZPOOL_PROP_VERSION, + ZPOOL_PROP_BOOTFS, + ZPOOL_PROP_DELEGATION, + ZPOOL_PROP_AUTOREPLACE, + ZPOOL_PROP_CACHEFILE, + ZPOOL_PROP_FAILUREMODE, + ZPOOL_PROP_LISTSNAPS, + ZPOOL_PROP_AUTOEXPAND, + ZPOOL_PROP_DEDUPDITTO, + ZPOOL_PROP_DEDUPRATIO, + ZPOOL_PROP_FREE, + ZPOOL_PROP_ALLOCATED, + ZPOOL_PROP_READONLY, + ZPOOL_PROP_ASHIFT, + ZPOOL_PROP_COMMENT, + ZPOOL_PROP_EXPANDSZ, + ZPOOL_PROP_FREEING, + ZPOOL_PROP_FRAGMENTATION, + ZPOOL_PROP_LEAKED, + ZPOOL_PROP_MAXBLOCKSIZE, + ZPOOL_PROP_TNAME, + ZPOOL_NUM_PROPS +} zpool_prop_t; + +/* Small enough to not hog a whole line of printout in zpool(1M). */ +#define ZPROP_MAX_COMMENT 32 + +#define ZPROP_CONT -2 +#define ZPROP_INVAL -1 + +#define ZPROP_VALUE "value" +#define ZPROP_SOURCE "source" + +typedef enum { + ZPROP_SRC_NONE = 0x1, + ZPROP_SRC_DEFAULT = 0x2, + ZPROP_SRC_TEMPORARY = 0x4, + ZPROP_SRC_LOCAL = 0x8, + ZPROP_SRC_INHERITED = 0x10, + ZPROP_SRC_RECEIVED = 0x20 +} zprop_source_t; + +#define ZPROP_SRC_ALL 0x3f + +#define ZPROP_SOURCE_VAL_RECVD "$recvd" +#define ZPROP_N_MORE_ERRORS "N_MORE_ERRORS" +/* + * Dataset flag implemented as a special entry in the props zap object + * indicating that the dataset has received properties on or after + * SPA_VERSION_RECVD_PROPS. The first such receive blows away local properties + * just as it did in earlier versions, and thereafter, local properties are + * preserved. + */ +#define ZPROP_HAS_RECVD "$hasrecvd" + +typedef enum { + ZPROP_ERR_NOCLEAR = 0x1, /* failure to clear existing props */ + ZPROP_ERR_NORESTORE = 0x2 /* failure to restore props on error */ +} zprop_errflags_t; + +typedef int (*zprop_func)(int, void *); + +/* + * Properties to be set on the root file system of a new pool + * are stuffed into their own nvlist, which is then included in + * the properties nvlist with the pool properties. + */ +#define ZPOOL_ROOTFS_PROPS "root-props-nvl" + +/* + * Dataset property functions shared between libzfs and kernel. + */ +const char *zfs_prop_default_string(zfs_prop_t); +uint64_t zfs_prop_default_numeric(zfs_prop_t); +boolean_t zfs_prop_readonly(zfs_prop_t); +boolean_t zfs_prop_inheritable(zfs_prop_t); +boolean_t zfs_prop_setonce(zfs_prop_t); +const char *zfs_prop_to_name(zfs_prop_t); +zfs_prop_t zfs_name_to_prop(const char *); +boolean_t zfs_prop_user(const char *); +boolean_t zfs_prop_userquota(const char *); +boolean_t zfs_prop_written(const char *); +int zfs_prop_index_to_string(zfs_prop_t, uint64_t, const char **); +int zfs_prop_string_to_index(zfs_prop_t, const char *, uint64_t *); +uint64_t zfs_prop_random_value(zfs_prop_t, uint64_t seed); +boolean_t zfs_prop_valid_for_type(int, zfs_type_t, boolean_t); + +/* + * Pool property functions shared between libzfs and kernel. + */ +zpool_prop_t zpool_name_to_prop(const char *); +const char *zpool_prop_to_name(zpool_prop_t); +const char *zpool_prop_default_string(zpool_prop_t); +uint64_t zpool_prop_default_numeric(zpool_prop_t); +boolean_t zpool_prop_readonly(zpool_prop_t); +boolean_t zpool_prop_feature(const char *); +boolean_t zpool_prop_unsupported(const char *); +int zpool_prop_index_to_string(zpool_prop_t, uint64_t, const char **); +int zpool_prop_string_to_index(zpool_prop_t, const char *, uint64_t *); +uint64_t zpool_prop_random_value(zpool_prop_t, uint64_t seed); + +/* + * Definitions for the Delegation. + */ +typedef enum { + ZFS_DELEG_WHO_UNKNOWN = 0, + ZFS_DELEG_USER = 'u', + ZFS_DELEG_USER_SETS = 'U', + ZFS_DELEG_GROUP = 'g', + ZFS_DELEG_GROUP_SETS = 'G', + ZFS_DELEG_EVERYONE = 'e', + ZFS_DELEG_EVERYONE_SETS = 'E', + ZFS_DELEG_CREATE = 'c', + ZFS_DELEG_CREATE_SETS = 'C', + ZFS_DELEG_NAMED_SET = 's', + ZFS_DELEG_NAMED_SET_SETS = 'S' +} zfs_deleg_who_type_t; + +typedef enum { + ZFS_DELEG_NONE = 0, + ZFS_DELEG_PERM_LOCAL = 1, + ZFS_DELEG_PERM_DESCENDENT = 2, + ZFS_DELEG_PERM_LOCALDESCENDENT = 3, + ZFS_DELEG_PERM_CREATE = 4 +} zfs_deleg_inherit_t; + +#define ZFS_DELEG_PERM_UID "uid" +#define ZFS_DELEG_PERM_GID "gid" +#define ZFS_DELEG_PERM_GROUPS "groups" + +#define ZFS_MLSLABEL_DEFAULT "none" + +#define ZFS_SMB_ACL_SRC "src" +#define ZFS_SMB_ACL_TARGET "target" + +typedef enum { + ZFS_CANMOUNT_OFF = 0, + ZFS_CANMOUNT_ON = 1, + ZFS_CANMOUNT_NOAUTO = 2 +} zfs_canmount_type_t; + +typedef enum { + ZFS_LOGBIAS_LATENCY = 0, + ZFS_LOGBIAS_THROUGHPUT = 1 +} zfs_logbias_op_t; + +typedef enum zfs_share_op { + ZFS_SHARE_NFS = 0, + ZFS_UNSHARE_NFS = 1, + ZFS_SHARE_SMB = 2, + ZFS_UNSHARE_SMB = 3 +} zfs_share_op_t; + +typedef enum zfs_smb_acl_op { + ZFS_SMB_ACL_ADD, + ZFS_SMB_ACL_REMOVE, + ZFS_SMB_ACL_RENAME, + ZFS_SMB_ACL_PURGE +} zfs_smb_acl_op_t; + +typedef enum zfs_cache_type { + ZFS_CACHE_NONE = 0, + ZFS_CACHE_METADATA = 1, + ZFS_CACHE_ALL = 2 +} zfs_cache_type_t; + +typedef enum { + ZFS_SYNC_STANDARD = 0, + ZFS_SYNC_ALWAYS = 1, + ZFS_SYNC_DISABLED = 2 +} zfs_sync_type_t; + +typedef enum { + ZFS_XATTR_OFF = 0, + ZFS_XATTR_DIR = 1, + ZFS_XATTR_SA = 2 +} zfs_xattr_type_t; + +typedef enum { + ZFS_REDUNDANT_METADATA_ALL, + ZFS_REDUNDANT_METADATA_MOST +} zfs_redundant_metadata_type_t; + +/* + * On-disk version number. + */ +#define SPA_VERSION_1 1ULL +#define SPA_VERSION_2 2ULL +#define SPA_VERSION_3 3ULL +#define SPA_VERSION_4 4ULL +#define SPA_VERSION_5 5ULL +#define SPA_VERSION_6 6ULL +#define SPA_VERSION_7 7ULL +#define SPA_VERSION_8 8ULL +#define SPA_VERSION_9 9ULL +#define SPA_VERSION_10 10ULL +#define SPA_VERSION_11 11ULL +#define SPA_VERSION_12 12ULL +#define SPA_VERSION_13 13ULL +#define SPA_VERSION_14 14ULL +#define SPA_VERSION_15 15ULL +#define SPA_VERSION_16 16ULL +#define SPA_VERSION_17 17ULL +#define SPA_VERSION_18 18ULL +#define SPA_VERSION_19 19ULL +#define SPA_VERSION_20 20ULL +#define SPA_VERSION_21 21ULL +#define SPA_VERSION_22 22ULL +#define SPA_VERSION_23 23ULL +#define SPA_VERSION_24 24ULL +#define SPA_VERSION_25 25ULL +#define SPA_VERSION_26 26ULL +#define SPA_VERSION_27 27ULL +#define SPA_VERSION_28 28ULL +#define SPA_VERSION_5000 5000ULL + +/* + * When bumping up SPA_VERSION, make sure GRUB ZFS understands the on-disk + * format change. Go to usr/src/grub/grub-0.97/stage2/{zfs-include/, fsys_zfs*}, + * and do the appropriate changes. Also bump the version number in + * usr/src/grub/capability. + */ +#define SPA_VERSION SPA_VERSION_5000 +#define SPA_VERSION_STRING "5000" + +/* + * Symbolic names for the changes that caused a SPA_VERSION switch. + * Used in the code when checking for presence or absence of a feature. + * Feel free to define multiple symbolic names for each version if there + * were multiple changes to on-disk structures during that version. + * + * NOTE: When checking the current SPA_VERSION in your code, be sure + * to use spa_version() since it reports the version of the + * last synced uberblock. Checking the in-flight version can + * be dangerous in some cases. + */ +#define SPA_VERSION_INITIAL SPA_VERSION_1 +#define SPA_VERSION_DITTO_BLOCKS SPA_VERSION_2 +#define SPA_VERSION_SPARES SPA_VERSION_3 +#define SPA_VERSION_RAIDZ2 SPA_VERSION_3 +#define SPA_VERSION_BPOBJ_ACCOUNT SPA_VERSION_3 +#define SPA_VERSION_RAIDZ_DEFLATE SPA_VERSION_3 +#define SPA_VERSION_DNODE_BYTES SPA_VERSION_3 +#define SPA_VERSION_ZPOOL_HISTORY SPA_VERSION_4 +#define SPA_VERSION_GZIP_COMPRESSION SPA_VERSION_5 +#define SPA_VERSION_BOOTFS SPA_VERSION_6 +#define SPA_VERSION_SLOGS SPA_VERSION_7 +#define SPA_VERSION_DELEGATED_PERMS SPA_VERSION_8 +#define SPA_VERSION_FUID SPA_VERSION_9 +#define SPA_VERSION_REFRESERVATION SPA_VERSION_9 +#define SPA_VERSION_REFQUOTA SPA_VERSION_9 +#define SPA_VERSION_UNIQUE_ACCURATE SPA_VERSION_9 +#define SPA_VERSION_L2CACHE SPA_VERSION_10 +#define SPA_VERSION_NEXT_CLONES SPA_VERSION_11 +#define SPA_VERSION_ORIGIN SPA_VERSION_11 +#define SPA_VERSION_DSL_SCRUB SPA_VERSION_11 +#define SPA_VERSION_SNAP_PROPS SPA_VERSION_12 +#define SPA_VERSION_USED_BREAKDOWN SPA_VERSION_13 +#define SPA_VERSION_PASSTHROUGH_X SPA_VERSION_14 +#define SPA_VERSION_USERSPACE SPA_VERSION_15 +#define SPA_VERSION_STMF_PROP SPA_VERSION_16 +#define SPA_VERSION_RAIDZ3 SPA_VERSION_17 +#define SPA_VERSION_USERREFS SPA_VERSION_18 +#define SPA_VERSION_HOLES SPA_VERSION_19 +#define SPA_VERSION_ZLE_COMPRESSION SPA_VERSION_20 +#define SPA_VERSION_DEDUP SPA_VERSION_21 +#define SPA_VERSION_RECVD_PROPS SPA_VERSION_22 +#define SPA_VERSION_SLIM_ZIL SPA_VERSION_23 +#define SPA_VERSION_SA SPA_VERSION_24 +#define SPA_VERSION_SCAN SPA_VERSION_25 +#define SPA_VERSION_DIR_CLONES SPA_VERSION_26 +#define SPA_VERSION_DEADLISTS SPA_VERSION_26 +#define SPA_VERSION_FAST_SNAP SPA_VERSION_27 +#define SPA_VERSION_MULTI_REPLACE SPA_VERSION_28 +#define SPA_VERSION_BEFORE_FEATURES SPA_VERSION_28 +#define SPA_VERSION_FEATURES SPA_VERSION_5000 + +#define SPA_VERSION_IS_SUPPORTED(v) \ + (((v) >= SPA_VERSION_INITIAL && (v) <= SPA_VERSION_BEFORE_FEATURES) || \ + ((v) >= SPA_VERSION_FEATURES && (v) <= SPA_VERSION)) + +/* + * ZPL version - rev'd whenever an incompatible on-disk format change + * occurs. This is independent of SPA/DMU/ZAP versioning. You must + * also update the version_table[] and help message in zfs_prop.c. + * + * When changing, be sure to teach GRUB how to read the new format! + * See usr/src/grub/grub-0.97/stage2/{zfs-include/,fsys_zfs*} + */ +#define ZPL_VERSION_1 1ULL +#define ZPL_VERSION_2 2ULL +#define ZPL_VERSION_3 3ULL +#define ZPL_VERSION_4 4ULL +#define ZPL_VERSION_5 5ULL +#define ZPL_VERSION ZPL_VERSION_5 +#define ZPL_VERSION_STRING "5" + +#define ZPL_VERSION_INITIAL ZPL_VERSION_1 +#define ZPL_VERSION_DIRENT_TYPE ZPL_VERSION_2 +#define ZPL_VERSION_FUID ZPL_VERSION_3 +#define ZPL_VERSION_NORMALIZATION ZPL_VERSION_3 +#define ZPL_VERSION_SYSATTR ZPL_VERSION_3 +#define ZPL_VERSION_USERSPACE ZPL_VERSION_4 +#define ZPL_VERSION_SA ZPL_VERSION_5 + +/* Rewind request information */ +#define ZPOOL_NO_REWIND 1 /* No policy - default behavior */ +#define ZPOOL_NEVER_REWIND 2 /* Do not search for best txg or rewind */ +#define ZPOOL_TRY_REWIND 4 /* Search for best txg, but do not rewind */ +#define ZPOOL_DO_REWIND 8 /* Rewind to best txg w/in deferred frees */ +#define ZPOOL_EXTREME_REWIND 16 /* Allow extreme measures to find best txg */ +#define ZPOOL_REWIND_MASK 28 /* All the possible rewind bits */ +#define ZPOOL_REWIND_POLICIES 31 /* All the possible policy bits */ + +typedef struct zpool_rewind_policy { + uint32_t zrp_request; /* rewind behavior requested */ + uint64_t zrp_maxmeta; /* max acceptable meta-data errors */ + uint64_t zrp_maxdata; /* max acceptable data errors */ + uint64_t zrp_txg; /* specific txg to load */ +} zpool_rewind_policy_t; + +/* + * The following are configuration names used in the nvlist describing a pool's + * configuration. + */ +#define ZPOOL_CONFIG_VERSION "version" +#define ZPOOL_CONFIG_POOL_NAME "name" +#define ZPOOL_CONFIG_POOL_STATE "state" +#define ZPOOL_CONFIG_POOL_TXG "txg" +#define ZPOOL_CONFIG_POOL_GUID "pool_guid" +#define ZPOOL_CONFIG_CREATE_TXG "create_txg" +#define ZPOOL_CONFIG_TOP_GUID "top_guid" +#define ZPOOL_CONFIG_VDEV_TREE "vdev_tree" +#define ZPOOL_CONFIG_TYPE "type" +#define ZPOOL_CONFIG_CHILDREN "children" +#define ZPOOL_CONFIG_ID "id" +#define ZPOOL_CONFIG_GUID "guid" +#define ZPOOL_CONFIG_PATH "path" +#define ZPOOL_CONFIG_DEVID "devid" +#define ZPOOL_CONFIG_METASLAB_ARRAY "metaslab_array" +#define ZPOOL_CONFIG_METASLAB_SHIFT "metaslab_shift" +#define ZPOOL_CONFIG_ASHIFT "ashift" +#define ZPOOL_CONFIG_ASIZE "asize" +#define ZPOOL_CONFIG_DTL "DTL" +#define ZPOOL_CONFIG_SCAN_STATS "scan_stats" /* not stored on disk */ +#define ZPOOL_CONFIG_VDEV_STATS "vdev_stats" /* not stored on disk */ +#define ZPOOL_CONFIG_WHOLE_DISK "whole_disk" +#define ZPOOL_CONFIG_ERRCOUNT "error_count" +#define ZPOOL_CONFIG_NOT_PRESENT "not_present" +#define ZPOOL_CONFIG_SPARES "spares" +#define ZPOOL_CONFIG_IS_SPARE "is_spare" +#define ZPOOL_CONFIG_NPARITY "nparity" +#define ZPOOL_CONFIG_HOSTID "hostid" +#define ZPOOL_CONFIG_HOSTNAME "hostname" +#define ZPOOL_CONFIG_LOADED_TIME "initial_load_time" +#define ZPOOL_CONFIG_UNSPARE "unspare" +#define ZPOOL_CONFIG_PHYS_PATH "phys_path" +#define ZPOOL_CONFIG_IS_LOG "is_log" +#define ZPOOL_CONFIG_L2CACHE "l2cache" +#define ZPOOL_CONFIG_HOLE_ARRAY "hole_array" +#define ZPOOL_CONFIG_VDEV_CHILDREN "vdev_children" +#define ZPOOL_CONFIG_IS_HOLE "is_hole" +#define ZPOOL_CONFIG_DDT_HISTOGRAM "ddt_histogram" +#define ZPOOL_CONFIG_DDT_OBJ_STATS "ddt_object_stats" +#define ZPOOL_CONFIG_DDT_STATS "ddt_stats" +#define ZPOOL_CONFIG_SPLIT "splitcfg" +#define ZPOOL_CONFIG_ORIG_GUID "orig_guid" +#define ZPOOL_CONFIG_SPLIT_GUID "split_guid" +#define ZPOOL_CONFIG_SPLIT_LIST "guid_list" +#define ZPOOL_CONFIG_REMOVING "removing" +#define ZPOOL_CONFIG_RESILVER_TXG "resilver_txg" +#define ZPOOL_CONFIG_COMMENT "comment" +#define ZPOOL_CONFIG_SUSPENDED "suspended" /* not stored on disk */ +#define ZPOOL_CONFIG_TIMESTAMP "timestamp" /* not stored on disk */ +#define ZPOOL_CONFIG_BOOTFS "bootfs" /* not stored on disk */ +#define ZPOOL_CONFIG_MISSING_DEVICES "missing_vdevs" /* not stored on disk */ +#define ZPOOL_CONFIG_LOAD_INFO "load_info" /* not stored on disk */ +#define ZPOOL_CONFIG_REWIND_INFO "rewind_info" /* not stored on disk */ +#define ZPOOL_CONFIG_UNSUP_FEAT "unsup_feat" /* not stored on disk */ +#define ZPOOL_CONFIG_ENABLED_FEAT "enabled_feat" /* not stored on disk */ +#define ZPOOL_CONFIG_CAN_RDONLY "can_rdonly" /* not stored on disk */ +#define ZPOOL_CONFIG_FEATURES_FOR_READ "features_for_read" +#define ZPOOL_CONFIG_FEATURE_STATS "feature_stats" /* not stored on disk */ +#define ZPOOL_CONFIG_ERRATA "errata" /* not stored on disk */ +/* + * The persistent vdev state is stored as separate values rather than a single + * 'vdev_state' entry. This is because a device can be in multiple states, such + * as offline and degraded. + */ +#define ZPOOL_CONFIG_OFFLINE "offline" +#define ZPOOL_CONFIG_FAULTED "faulted" +#define ZPOOL_CONFIG_DEGRADED "degraded" +#define ZPOOL_CONFIG_REMOVED "removed" +#define ZPOOL_CONFIG_FRU "fru" +#define ZPOOL_CONFIG_AUX_STATE "aux_state" + +/* Rewind policy parameters */ +#define ZPOOL_REWIND_POLICY "rewind-policy" +#define ZPOOL_REWIND_REQUEST "rewind-request" +#define ZPOOL_REWIND_REQUEST_TXG "rewind-request-txg" +#define ZPOOL_REWIND_META_THRESH "rewind-meta-thresh" +#define ZPOOL_REWIND_DATA_THRESH "rewind-data-thresh" + +/* Rewind data discovered */ +#define ZPOOL_CONFIG_LOAD_TIME "rewind_txg_ts" +#define ZPOOL_CONFIG_LOAD_DATA_ERRORS "verify_data_errors" +#define ZPOOL_CONFIG_REWIND_TIME "seconds_of_rewind" + +#define VDEV_TYPE_ROOT "root" +#define VDEV_TYPE_MIRROR "mirror" +#define VDEV_TYPE_REPLACING "replacing" +#define VDEV_TYPE_RAIDZ "raidz" +#define VDEV_TYPE_DISK "disk" +#define VDEV_TYPE_FILE "file" +#define VDEV_TYPE_MISSING "missing" +#define VDEV_TYPE_HOLE "hole" +#define VDEV_TYPE_SPARE "spare" +#define VDEV_TYPE_LOG "log" +#define VDEV_TYPE_L2CACHE "l2cache" + +/* + * This is needed in userland to report the minimum necessary device size. + */ +#define SPA_MINDEVSIZE (64ULL << 20) + +/* + * Set if the fragmentation has not yet been calculated. This can happen + * because the space maps have not been upgraded or the histogram feature + * is not enabled. + */ +#define ZFS_FRAG_INVALID UINT64_MAX + +/* + * The location of the pool configuration repository, shared between kernel and + * userland. + */ +#define ZPOOL_CACHE "/etc/zfs/zpool.cache" + +/* + * vdev states are ordered from least to most healthy. + * A vdev that's CANT_OPEN or below is considered unusable. + */ +typedef enum vdev_state { + VDEV_STATE_UNKNOWN = 0, /* Uninitialized vdev */ + VDEV_STATE_CLOSED, /* Not currently open */ + VDEV_STATE_OFFLINE, /* Not allowed to open */ + VDEV_STATE_REMOVED, /* Explicitly removed from system */ + VDEV_STATE_CANT_OPEN, /* Tried to open, but failed */ + VDEV_STATE_FAULTED, /* External request to fault device */ + VDEV_STATE_DEGRADED, /* Replicated vdev with unhealthy kids */ + VDEV_STATE_HEALTHY /* Presumed good */ +} vdev_state_t; + +#define VDEV_STATE_ONLINE VDEV_STATE_HEALTHY + +/* + * vdev aux states. When a vdev is in the CANT_OPEN state, the aux field + * of the vdev stats structure uses these constants to distinguish why. + */ +typedef enum vdev_aux { + VDEV_AUX_NONE, /* no error */ + VDEV_AUX_OPEN_FAILED, /* ldi_open_*() or vn_open() failed */ + VDEV_AUX_CORRUPT_DATA, /* bad label or disk contents */ + VDEV_AUX_NO_REPLICAS, /* insufficient number of replicas */ + VDEV_AUX_BAD_GUID_SUM, /* vdev guid sum doesn't match */ + VDEV_AUX_TOO_SMALL, /* vdev size is too small */ + VDEV_AUX_BAD_LABEL, /* the label is OK but invalid */ + VDEV_AUX_VERSION_NEWER, /* on-disk version is too new */ + VDEV_AUX_VERSION_OLDER, /* on-disk version is too old */ + VDEV_AUX_UNSUP_FEAT, /* unsupported features */ + VDEV_AUX_SPARED, /* hot spare used in another pool */ + VDEV_AUX_ERR_EXCEEDED, /* too many errors */ + VDEV_AUX_IO_FAILURE, /* experienced I/O failure */ + VDEV_AUX_BAD_LOG, /* cannot read log chain(s) */ + VDEV_AUX_EXTERNAL, /* external diagnosis */ + VDEV_AUX_SPLIT_POOL /* vdev was split off into another pool */ +} vdev_aux_t; + +/* + * pool state. The following states are written to disk as part of the normal + * SPA lifecycle: ACTIVE, EXPORTED, DESTROYED, SPARE, L2CACHE. The remaining + * states are software abstractions used at various levels to communicate + * pool state. + */ +typedef enum pool_state { + POOL_STATE_ACTIVE = 0, /* In active use */ + POOL_STATE_EXPORTED, /* Explicitly exported */ + POOL_STATE_DESTROYED, /* Explicitly destroyed */ + POOL_STATE_SPARE, /* Reserved for hot spare use */ + POOL_STATE_L2CACHE, /* Level 2 ARC device */ + POOL_STATE_UNINITIALIZED, /* Internal spa_t state */ + POOL_STATE_UNAVAIL, /* Internal libzfs state */ + POOL_STATE_POTENTIALLY_ACTIVE /* Internal libzfs state */ +} pool_state_t; + +/* + * Scan Functions. + */ +typedef enum pool_scan_func { + POOL_SCAN_NONE, + POOL_SCAN_SCRUB, + POOL_SCAN_RESILVER, + POOL_SCAN_FUNCS +} pool_scan_func_t; + +/* + * ZIO types. Needed to interpret vdev statistics below. + */ +typedef enum zio_type { + ZIO_TYPE_NULL = 0, + ZIO_TYPE_READ, + ZIO_TYPE_WRITE, + ZIO_TYPE_FREE, + ZIO_TYPE_CLAIM, + ZIO_TYPE_IOCTL, + ZIO_TYPES +} zio_type_t; + +/* + * Pool statistics. Note: all fields should be 64-bit because this + * is passed between kernel and userland as an nvlist uint64 array. + */ +typedef struct pool_scan_stat { + /* values stored on disk */ + uint64_t pss_func; /* pool_scan_func_t */ + uint64_t pss_state; /* dsl_scan_state_t */ + uint64_t pss_start_time; /* scan start time */ + uint64_t pss_end_time; /* scan end time */ + uint64_t pss_to_examine; /* total bytes to scan */ + uint64_t pss_examined; /* total examined bytes */ + uint64_t pss_to_process; /* total bytes to process */ + uint64_t pss_processed; /* total processed bytes */ + uint64_t pss_errors; /* scan errors */ + + /* values not stored on disk */ + uint64_t pss_pass_exam; /* examined bytes per scan pass */ + uint64_t pss_pass_start; /* start time of a scan pass */ +} pool_scan_stat_t; + +typedef enum dsl_scan_state { + DSS_NONE, + DSS_SCANNING, + DSS_FINISHED, + DSS_CANCELED, + DSS_NUM_STATES +} dsl_scan_state_t; + +/* + * Errata described by http://zfsonlinux.org/msg/ZFS-8000-ER. The ordering + * of this enum must be maintained to ensure the errata identifiers map to + * the correct documentation. New errata may only be appended to the list + * and must contain corresponding documentation at the above link. + */ +typedef enum zpool_errata { + ZPOOL_ERRATA_NONE, + ZPOOL_ERRATA_ZOL_2094_SCRUB, + ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY, +} zpool_errata_t; + +/* + * Vdev statistics. Note: all fields should be 64-bit because this + * is passed between kernel and userland as an nvlist uint64 array. + */ +typedef struct vdev_stat { + hrtime_t vs_timestamp; /* time since vdev load */ + uint64_t vs_state; /* vdev state */ + uint64_t vs_aux; /* see vdev_aux_t */ + uint64_t vs_alloc; /* space allocated */ + uint64_t vs_space; /* total capacity */ + uint64_t vs_dspace; /* deflated capacity */ + uint64_t vs_rsize; /* replaceable dev size */ + uint64_t vs_esize; /* expandable dev size */ + uint64_t vs_ops[ZIO_TYPES]; /* operation count */ + uint64_t vs_bytes[ZIO_TYPES]; /* bytes read/written */ + uint64_t vs_read_errors; /* read errors */ + uint64_t vs_write_errors; /* write errors */ + uint64_t vs_checksum_errors; /* checksum errors */ + uint64_t vs_self_healed; /* self-healed bytes */ + uint64_t vs_scan_removing; /* removing? */ + uint64_t vs_scan_processed; /* scan processed bytes */ + uint64_t vs_fragmentation; /* device fragmentation */ +} vdev_stat_t; + +/* + * DDT statistics. Note: all fields should be 64-bit because this + * is passed between kernel and userland as an nvlist uint64 array. + */ +typedef struct ddt_object { + uint64_t ddo_count; /* number of elments in ddt */ + uint64_t ddo_dspace; /* size of ddt on disk */ + uint64_t ddo_mspace; /* size of ddt in-core */ +} ddt_object_t; + +typedef struct ddt_stat { + uint64_t dds_blocks; /* blocks */ + uint64_t dds_lsize; /* logical size */ + uint64_t dds_psize; /* physical size */ + uint64_t dds_dsize; /* deflated allocated size */ + uint64_t dds_ref_blocks; /* referenced blocks */ + uint64_t dds_ref_lsize; /* referenced lsize * refcnt */ + uint64_t dds_ref_psize; /* referenced psize * refcnt */ + uint64_t dds_ref_dsize; /* referenced dsize * refcnt */ +} ddt_stat_t; + +typedef struct ddt_histogram { + ddt_stat_t ddh_stat[64]; /* power-of-two histogram buckets */ +} ddt_histogram_t; + +#define ZVOL_DRIVER "zvol" +#define ZFS_DRIVER "zfs" +#define ZFS_DEV "/dev/zfs" + +/* general zvol path */ +#define ZVOL_DIR "/dev" + +#define ZVOL_MAJOR 230 +#define ZVOL_MINOR_BITS 4 +#define ZVOL_MINOR_MASK ((1U << ZVOL_MINOR_BITS) - 1) +#define ZVOL_MINORS (1 << 4) +#define ZVOL_DEV_NAME "zd" + +#define ZVOL_PROP_NAME "name" +#define ZVOL_DEFAULT_BLOCKSIZE 8192 + +/* + * /dev/zfs ioctl numbers. + */ +typedef enum zfs_ioc { + /* + * Illumos - 70/128 numbers reserved. + */ + ZFS_IOC_FIRST = ('Z' << 8), + ZFS_IOC = ZFS_IOC_FIRST, + ZFS_IOC_POOL_CREATE = ZFS_IOC_FIRST, + ZFS_IOC_POOL_DESTROY, + ZFS_IOC_POOL_IMPORT, + ZFS_IOC_POOL_EXPORT, + ZFS_IOC_POOL_CONFIGS, + ZFS_IOC_POOL_STATS, + ZFS_IOC_POOL_TRYIMPORT, + ZFS_IOC_POOL_SCAN, + ZFS_IOC_POOL_FREEZE, + ZFS_IOC_POOL_UPGRADE, + ZFS_IOC_POOL_GET_HISTORY, + ZFS_IOC_VDEV_ADD, + ZFS_IOC_VDEV_REMOVE, + ZFS_IOC_VDEV_SET_STATE, + ZFS_IOC_VDEV_ATTACH, + ZFS_IOC_VDEV_DETACH, + ZFS_IOC_VDEV_SETPATH, + ZFS_IOC_VDEV_SETFRU, + ZFS_IOC_OBJSET_STATS, + ZFS_IOC_OBJSET_ZPLPROPS, + ZFS_IOC_DATASET_LIST_NEXT, + ZFS_IOC_SNAPSHOT_LIST_NEXT, + ZFS_IOC_SET_PROP, + ZFS_IOC_CREATE, + ZFS_IOC_DESTROY, + ZFS_IOC_ROLLBACK, + ZFS_IOC_RENAME, + ZFS_IOC_RECV, + ZFS_IOC_SEND, + ZFS_IOC_INJECT_FAULT, + ZFS_IOC_CLEAR_FAULT, + ZFS_IOC_INJECT_LIST_NEXT, + ZFS_IOC_ERROR_LOG, + ZFS_IOC_CLEAR, + ZFS_IOC_PROMOTE, + ZFS_IOC_SNAPSHOT, + ZFS_IOC_DSOBJ_TO_DSNAME, + ZFS_IOC_OBJ_TO_PATH, + ZFS_IOC_POOL_SET_PROPS, + ZFS_IOC_POOL_GET_PROPS, + ZFS_IOC_SET_FSACL, + ZFS_IOC_GET_FSACL, + ZFS_IOC_SHARE, + ZFS_IOC_INHERIT_PROP, + ZFS_IOC_SMB_ACL, + ZFS_IOC_USERSPACE_ONE, + ZFS_IOC_USERSPACE_MANY, + ZFS_IOC_USERSPACE_UPGRADE, + ZFS_IOC_HOLD, + ZFS_IOC_RELEASE, + ZFS_IOC_GET_HOLDS, + ZFS_IOC_OBJSET_RECVD_PROPS, + ZFS_IOC_VDEV_SPLIT, + ZFS_IOC_NEXT_OBJ, + ZFS_IOC_DIFF, + ZFS_IOC_TMP_SNAPSHOT, + ZFS_IOC_OBJ_TO_STATS, + ZFS_IOC_SPACE_WRITTEN, + ZFS_IOC_SPACE_SNAPS, + ZFS_IOC_DESTROY_SNAPS, + ZFS_IOC_POOL_REGUID, + ZFS_IOC_POOL_REOPEN, + ZFS_IOC_SEND_PROGRESS, + ZFS_IOC_LOG_HISTORY, + ZFS_IOC_SEND_NEW, + ZFS_IOC_SEND_SPACE, + ZFS_IOC_CLONE, + ZFS_IOC_BOOKMARK, + ZFS_IOC_GET_BOOKMARKS, + ZFS_IOC_DESTROY_BOOKMARKS, + + /* + * Linux - 3/64 numbers reserved. + */ + ZFS_IOC_LINUX = ('Z' << 8) + 0x80, + ZFS_IOC_EVENTS_NEXT, + ZFS_IOC_EVENTS_CLEAR, + ZFS_IOC_EVENTS_SEEK, + + /* + * FreeBSD - 1/64 numbers reserved. + */ + ZFS_IOC_FREEBSD = ('Z' << 8) + 0xC0, + + ZFS_IOC_LAST +} zfs_ioc_t; + +/* + * zvol ioctl to get dataset name + */ +#define BLKZNAME _IOR(0x12, 125, char[ZFS_MAXNAMELEN]) + +/* + * Internal SPA load state. Used by FMA diagnosis engine. + */ +typedef enum { + SPA_LOAD_NONE, /* no load in progress */ + SPA_LOAD_OPEN, /* normal open */ + SPA_LOAD_IMPORT, /* import in progress */ + SPA_LOAD_TRYIMPORT, /* tryimport in progress */ + SPA_LOAD_RECOVER, /* recovery requested */ + SPA_LOAD_ERROR /* load failed */ +} spa_load_state_t; + +/* + * Bookmark name values. + */ +#define ZPOOL_ERR_LIST "error list" +#define ZPOOL_ERR_DATASET "dataset" +#define ZPOOL_ERR_OBJECT "object" + +#define HIS_MAX_RECORD_LEN (MAXPATHLEN + MAXPATHLEN + 1) + +/* + * The following are names used in the nvlist describing + * the pool's history log. + */ +#define ZPOOL_HIST_RECORD "history record" +#define ZPOOL_HIST_TIME "history time" +#define ZPOOL_HIST_CMD "history command" +#define ZPOOL_HIST_WHO "history who" +#define ZPOOL_HIST_ZONE "history zone" +#define ZPOOL_HIST_HOST "history hostname" +#define ZPOOL_HIST_TXG "history txg" +#define ZPOOL_HIST_INT_EVENT "history internal event" +#define ZPOOL_HIST_INT_STR "history internal str" +#define ZPOOL_HIST_INT_NAME "internal_name" +#define ZPOOL_HIST_IOCTL "ioctl" +#define ZPOOL_HIST_INPUT_NVL "in_nvl" +#define ZPOOL_HIST_OUTPUT_NVL "out_nvl" +#define ZPOOL_HIST_DSNAME "dsname" +#define ZPOOL_HIST_DSID "dsid" + +/* + * Flags for ZFS_IOC_VDEV_SET_STATE + */ +#define ZFS_ONLINE_CHECKREMOVE 0x1 +#define ZFS_ONLINE_UNSPARE 0x2 +#define ZFS_ONLINE_FORCEFAULT 0x4 +#define ZFS_ONLINE_EXPAND 0x8 +#define ZFS_OFFLINE_TEMPORARY 0x1 + +/* + * Flags for ZFS_IOC_POOL_IMPORT + */ +#define ZFS_IMPORT_NORMAL 0x0 +#define ZFS_IMPORT_VERBATIM 0x1 +#define ZFS_IMPORT_ANY_HOST 0x2 +#define ZFS_IMPORT_MISSING_LOG 0x4 +#define ZFS_IMPORT_ONLY 0x8 +#define ZFS_IMPORT_TEMP_NAME 0x10 + +/* + * Sysevent payload members. ZFS will generate the following sysevents with the + * given payloads: + * + * ESC_ZFS_RESILVER_START + * ESC_ZFS_RESILVER_END + * ESC_ZFS_POOL_DESTROY + * ESC_ZFS_POOL_REGUID + * + * ZFS_EV_POOL_NAME DATA_TYPE_STRING + * ZFS_EV_POOL_GUID DATA_TYPE_UINT64 + * + * ESC_ZFS_VDEV_REMOVE + * ESC_ZFS_VDEV_CLEAR + * ESC_ZFS_VDEV_CHECK + * + * ZFS_EV_POOL_NAME DATA_TYPE_STRING + * ZFS_EV_POOL_GUID DATA_TYPE_UINT64 + * ZFS_EV_VDEV_PATH DATA_TYPE_STRING (optional) + * ZFS_EV_VDEV_GUID DATA_TYPE_UINT64 + */ +#define ZFS_EV_POOL_NAME "pool_name" +#define ZFS_EV_POOL_GUID "pool_guid" +#define ZFS_EV_VDEV_PATH "vdev_path" +#define ZFS_EV_VDEV_GUID "vdev_guid" + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_H */ --- linux-4.4.0.orig/zfs/include/sys/metaslab.h +++ linux-4.4.0/zfs/include/sys/metaslab.h @@ -0,0 +1,100 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_METASLAB_H +#define _SYS_METASLAB_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct metaslab_ops { + uint64_t (*msop_alloc)(metaslab_t *msp, uint64_t size); +} metaslab_ops_t; + +extern metaslab_ops_t *zfs_metaslab_ops; + +int metaslab_init(metaslab_group_t *, uint64_t, uint64_t, uint64_t, + metaslab_t **); +void metaslab_fini(metaslab_t *); + +void metaslab_load_wait(metaslab_t *); +int metaslab_load(metaslab_t *); +void metaslab_unload(metaslab_t *); + +void metaslab_sync(metaslab_t *, uint64_t); +void metaslab_sync_done(metaslab_t *, uint64_t); +void metaslab_sync_reassess(metaslab_group_t *); +uint64_t metaslab_block_maxsize(metaslab_t *); + +#define METASLAB_HINTBP_FAVOR 0x0 +#define METASLAB_HINTBP_AVOID 0x1 +#define METASLAB_GANG_HEADER 0x2 +#define METASLAB_GANG_CHILD 0x4 +#define METASLAB_GANG_AVOID 0x8 +#define METASLAB_FASTWRITE 0x10 + +int metaslab_alloc(spa_t *, metaslab_class_t *, uint64_t, + blkptr_t *, int, uint64_t, blkptr_t *, int); +void metaslab_free(spa_t *, const blkptr_t *, uint64_t, boolean_t); +int metaslab_claim(spa_t *, const blkptr_t *, uint64_t); +void metaslab_check_free(spa_t *, const blkptr_t *); +void metaslab_fastwrite_mark(spa_t *, const blkptr_t *); +void metaslab_fastwrite_unmark(spa_t *, const blkptr_t *); + +metaslab_class_t *metaslab_class_create(spa_t *, metaslab_ops_t *); +void metaslab_class_destroy(metaslab_class_t *); +int metaslab_class_validate(metaslab_class_t *); +void metaslab_class_histogram_verify(metaslab_class_t *); +uint64_t metaslab_class_fragmentation(metaslab_class_t *); +uint64_t metaslab_class_expandable_space(metaslab_class_t *); + +void metaslab_class_space_update(metaslab_class_t *, int64_t, int64_t, + int64_t, int64_t); +uint64_t metaslab_class_get_alloc(metaslab_class_t *); +uint64_t metaslab_class_get_space(metaslab_class_t *); +uint64_t metaslab_class_get_dspace(metaslab_class_t *); +uint64_t metaslab_class_get_deferred(metaslab_class_t *); + +metaslab_group_t *metaslab_group_create(metaslab_class_t *, vdev_t *); +void metaslab_group_destroy(metaslab_group_t *); +void metaslab_group_activate(metaslab_group_t *); +void metaslab_group_passivate(metaslab_group_t *); +uint64_t metaslab_group_get_space(metaslab_group_t *); +void metaslab_group_histogram_verify(metaslab_group_t *); +uint64_t metaslab_group_fragmentation(metaslab_group_t *); +void metaslab_group_histogram_remove(metaslab_group_t *, metaslab_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_METASLAB_H */ --- linux-4.4.0.orig/zfs/include/sys/metaslab_impl.h +++ linux-4.4.0/zfs/include/sys/metaslab_impl.h @@ -0,0 +1,202 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_METASLAB_IMPL_H +#define _SYS_METASLAB_IMPL_H + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A metaslab class encompasses a category of allocatable top-level vdevs. + * Each top-level vdev is associated with a metaslab group which defines + * the allocatable region for that vdev. Examples of these categories include + * "normal" for data block allocations (i.e. main pool allocations) or "log" + * for allocations designated for intent log devices (i.e. slog devices). + * When a block allocation is requested from the SPA it is associated with a + * metaslab_class_t, and only top-level vdevs (i.e. metaslab groups) belonging + * to the class can be used to satisfy that request. Allocations are done + * by traversing the metaslab groups that are linked off of the mc_rotor field. + * This rotor points to the next metaslab group where allocations will be + * attempted. Allocating a block is a 3 step process -- select the metaslab + * group, select the metaslab, and then allocate the block. The metaslab + * class defines the low-level block allocator that will be used as the + * final step in allocation. These allocators are pluggable allowing each class + * to use a block allocator that best suits that class. + */ +struct metaslab_class { + spa_t *mc_spa; + metaslab_group_t *mc_rotor; + metaslab_ops_t *mc_ops; + uint64_t mc_aliquot; + uint64_t mc_alloc_groups; /* # of allocatable groups */ + uint64_t mc_alloc; /* total allocated space */ + uint64_t mc_deferred; /* total deferred frees */ + uint64_t mc_space; /* total space (alloc + free) */ + uint64_t mc_dspace; /* total deflated space */ + uint64_t mc_histogram[RANGE_TREE_HISTOGRAM_SIZE]; + kmutex_t mc_fastwrite_lock; +}; + +/* + * Metaslab groups encapsulate all the allocatable regions (i.e. metaslabs) + * of a top-level vdev. They are linked togther to form a circular linked + * list and can belong to only one metaslab class. Metaslab groups may become + * ineligible for allocations for a number of reasons such as limited free + * space, fragmentation, or going offline. When this happens the allocator will + * simply find the next metaslab group in the linked list and attempt + * to allocate from that group instead. + */ +struct metaslab_group { + kmutex_t mg_lock; + avl_tree_t mg_metaslab_tree; + uint64_t mg_aliquot; + boolean_t mg_allocatable; /* can we allocate? */ + uint64_t mg_free_capacity; /* percentage free */ + int64_t mg_bias; + int64_t mg_activation_count; + metaslab_class_t *mg_class; + vdev_t *mg_vd; + taskq_t *mg_taskq; + metaslab_group_t *mg_prev; + metaslab_group_t *mg_next; + uint64_t mg_fragmentation; + uint64_t mg_histogram[RANGE_TREE_HISTOGRAM_SIZE]; +}; + +/* + * This value defines the number of elements in the ms_lbas array. The value + * of 64 was chosen as it covers all power of 2 buckets up to UINT64_MAX. + * This is the equivalent of highbit(UINT64_MAX). + */ +#define MAX_LBAS 64 + +/* + * Each metaslab maintains a set of in-core trees to track metaslab operations. + * The in-core free tree (ms_tree) contains the current list of free segments. + * As blocks are allocated, the allocated segment are removed from the ms_tree + * and added to a per txg allocation tree (ms_alloctree). As blocks are freed, + * they are added to the per txg free tree (ms_freetree). These per txg + * trees allow us to process all allocations and frees in syncing context + * where it is safe to update the on-disk space maps. One additional in-core + * tree is maintained to track deferred frees (ms_defertree). Once a block + * is freed it will move from the ms_freetree to the ms_defertree. A deferred + * free means that a block has been freed but cannot be used by the pool + * until TXG_DEFER_SIZE transactions groups later. For example, a block + * that is freed in txg 50 will not be available for reallocation until + * txg 52 (50 + TXG_DEFER_SIZE). This provides a safety net for uberblock + * rollback. A pool could be safely rolled back TXG_DEFERS_SIZE + * transactions groups and ensure that no block has been reallocated. + * + * The simplified transition diagram looks like this: + * + * + * ALLOCATE + * | + * V + * free segment (ms_tree) --------> ms_alloctree ----> (write to space map) + * ^ + * | + * | ms_freetree <--- FREE + * | | + * | | + * | | + * +----------- ms_defertree <-------+---------> (write to space map) + * + * + * Each metaslab's space is tracked in a single space map in the MOS, + * which is only updated in syncing context. Each time we sync a txg, + * we append the allocs and frees from that txg to the space map. + * The pool space is only updated once all metaslabs have finished syncing. + * + * To load the in-core free tree we read the space map from disk. + * This object contains a series of alloc and free records that are + * combined to make up the list of all free segments in this metaslab. These + * segments are represented in-core by the ms_tree and are stored in an + * AVL tree. + * + * As the space map grows (as a result of the appends) it will + * eventually become space-inefficient. When the metaslab's in-core free tree + * is zfs_condense_pct/100 times the size of the minimal on-disk + * representation, we rewrite it in its minimized form. If a metaslab + * needs to condense then we must set the ms_condensing flag to ensure + * that allocations are not performed on the metaslab that is being written. + */ +struct metaslab { + kmutex_t ms_lock; + kcondvar_t ms_load_cv; + space_map_t *ms_sm; + metaslab_ops_t *ms_ops; + uint64_t ms_id; + uint64_t ms_start; + uint64_t ms_size; + uint64_t ms_fragmentation; + + range_tree_t *ms_alloctree[TXG_SIZE]; + range_tree_t *ms_freetree[TXG_SIZE]; + range_tree_t *ms_defertree[TXG_DEFER_SIZE]; + range_tree_t *ms_tree; + + boolean_t ms_condensing; /* condensing? */ + boolean_t ms_condense_wanted; + boolean_t ms_loaded; + boolean_t ms_loading; + + int64_t ms_deferspace; /* sum of ms_defermap[] space */ + uint64_t ms_weight; /* weight vs. others in group */ + uint64_t ms_access_txg; + + /* + * The metaslab block allocators can optionally use a size-ordered + * range tree and/or an array of LBAs. Not all allocators use + * this functionality. The ms_size_tree should always contain the + * same number of segments as the ms_tree. The only difference + * is that the ms_size_tree is ordered by segment sizes. + */ + avl_tree_t ms_size_tree; + uint64_t ms_lbas[MAX_LBAS]; + + metaslab_group_t *ms_group; /* metaslab group */ + avl_node_t ms_group_node; /* node in metaslab group tree */ + txg_node_t ms_txg_node; /* per-txg dirty metaslab links */ +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_METASLAB_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/mntent.h +++ linux-4.4.0/zfs/include/sys/mntent.h @@ -0,0 +1,102 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + * + * Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T + * All Rights Reserved + */ + +#ifndef _SYS_MNTENT_H +#define _SYS_MNTENT_H + +#define MNTTYPE_ZFS "zfs" /* ZFS file system */ + +#define MOUNT_SUCCESS 0x00 /* Success */ +#define MOUNT_USAGE 0x01 /* Invalid invocation or permissions */ +#define MOUNT_SYSERR 0x02 /* System error (ENOMEM, etc) */ +#define MOUNT_SOFTWARE 0x04 /* Internal mount bug */ +#define MOUNT_USER 0x08 /* Interrupted by user (EINTR) */ +#define MOUNT_FILEIO 0x10 /* Error updating/locking /etc/mtab */ +#define MOUNT_FAIL 0x20 /* Mount failed */ +#define MOUNT_SOMEOK 0x40 /* At least on mount succeeded */ +#define MOUNT_BUSY 0x80 /* Mount failed due to EBUSY */ + +#define MNTOPT_ASYNC "async" /* all I/O is asynchronous */ +#define MNTOPT_ATIME "atime" /* update atime for files */ +#define MNTOPT_NOATIME "noatime" /* do not update atime for files */ +#define MNTOPT_AUTO "auto" /* automount */ +#define MNTOPT_NOAUTO "noauto" /* do not automount */ +#define MNTOPT_CONTEXT "context" /* selinux context */ +#define MNTOPT_FSCONTEXT "fscontext" /* selinux fscontext */ +#define MNTOPT_DEFCONTEXT "defcontext" /* selinux defcontext */ +#define MNTOPT_ROOTCONTEXT "rootcontext" /* selinux rootcontext */ +#define MNTOPT_DEFAULTS "defaults" /* defaults */ +#define MNTOPT_DEVICES "dev" /* device-special allowed */ +#define MNTOPT_NODEVICES "nodev" /* device-special disallowed */ +#define MNTOPT_DIRATIME "diratime" /* update atime for dirs */ +#define MNTOPT_NODIRATIME "nodiratime" /* do not update atime for dirs */ +#define MNTOPT_DIRSYNC "dirsync" /* do dir updates synchronously */ +#define MNTOPT_EXEC "exec" /* enable executables */ +#define MNTOPT_NOEXEC "noexec" /* disable executables */ +#define MNTOPT_GROUP "group" /* allow group mount */ +#define MNTOPT_NOGROUP "nogroup" /* do not allow group mount */ +#define MNTOPT_IVERSION "iversion" /* update inode version */ +#define MNTOPT_NOIVERSION "noiversion" /* do not update inode version */ +#define MNTOPT_NBMAND "mand" /* allow non-blocking mandatory locks */ +#define MNTOPT_NONBMAND "nomand" /* deny non-blocking mandatory locks */ +#define MNTOPT_NETDEV "_netdev" /* network device */ +#define MNTOPT_NOFAIL "nofail" /* no failure */ +#define MNTOPT_RELATIME "relatime" /* allow relative time updates */ +#define MNTOPT_NORELATIME "norelatime" /* do not allow relative time updates */ +#define MNTOPT_DFRATIME "strictatime" /* Deferred access time updates */ +#define MNTOPT_NODFRATIME "nostrictatime" /* No Deferred access time updates */ +#define MNTOPT_SETUID "suid" /* Both setuid and devices allowed */ +#define MNTOPT_NOSETUID "nosuid" /* Neither setuid nor devices allowed */ +#define MNTOPT_OWNER "owner" /* allow owner mount */ +#define MNTOPT_NOOWNER "noowner" /* do not allow owner mount */ +#define MNTOPT_REMOUNT "remount" /* change mount options */ +#define MNTOPT_RO "ro" /* read only */ +#define MNTOPT_RW "rw" /* read/write */ +#define MNTOPT_SYNC "sync" /* all I/O is synchronous */ +#define MNTOPT_USER "user" /* allow user mount */ +#define MNTOPT_NOUSER "nouser" /* do not allow user mount */ +#define MNTOPT_USERS "users" /* allow user mount */ +#define MNTOPT_NOUSERS "nousers" /* do not allow user mount */ +#define MNTOPT_SUB "sub" /* allow mounts on subdirs */ +#define MNTOPT_NOSUB "nosub" /* do not allow mounts on subdirs */ +#define MNTOPT_QUIET "quiet" /* quiet mount */ +#define MNTOPT_LOUD "loud" /* verbose mount */ +#define MNTOPT_BIND "bind" /* remount part of a tree */ +#define MNTOPT_RBIND "rbind" /* include subtrees */ +#define MNTOPT_DIRXATTR "dirxattr" /* enable directory xattrs */ +#define MNTOPT_SAXATTR "saxattr" /* enable system-attribute xattrs */ +#define MNTOPT_XATTR "xattr" /* enable extended attributes */ +#define MNTOPT_NOXATTR "noxattr" /* disable extended attributes */ +#define MNTOPT_COMMENT "comment" /* comment */ +#define MNTOPT_ZFSUTIL "zfsutil" /* called by zfs utility */ +#define MNTOPT_ACL "acl" /* passed by util-linux-2.24 mount */ +#define MNTOPT_NOACL "noacl" /* likewise */ +#define MNTOPT_POSIXACL "posixacl" /* likewise */ +#define MNTOPT_MNTPOINT "mntpoint" /* mount point hint */ + +#endif /* _SYS_MNTENT_H */ --- linux-4.4.0.orig/zfs/include/sys/multilist.h +++ linux-4.4.0/zfs/include/sys/multilist.h @@ -0,0 +1,105 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_MULTILIST_H +#define _SYS_MULTILIST_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef list_node_t multilist_node_t; +typedef struct multilist multilist_t; +typedef struct multilist_sublist multilist_sublist_t; +typedef unsigned int multilist_sublist_index_func_t(multilist_t *, void *); + +struct multilist_sublist { + /* + * The mutex used internally to implement thread safe insertions + * and removals to this individual sublist. It can also be locked + * by a consumer using multilist_sublist_{lock,unlock}, which is + * useful if a consumer needs to traverse the list in a thread + * safe manner. + */ + kmutex_t mls_lock; + /* + * The actual list object containing all objects in this sublist. + */ + list_t mls_list; + /* + * Pad to cache line, in an effort to try and prevent cache line + * contention. + */ +} ____cacheline_aligned; + +struct multilist { + /* + * This is used to get to the multilist_node_t structure given + * the void *object contained on the list. + */ + size_t ml_offset; + /* + * The number of sublists used internally by this multilist. + */ + uint64_t ml_num_sublists; + /* + * The array of pointers to the actual sublists. + */ + multilist_sublist_t *ml_sublists; + /* + * Pointer to function which determines the sublist to use + * when inserting and removing objects from this multilist. + * Please see the comment above multilist_create for details. + */ + multilist_sublist_index_func_t *ml_index_func; +}; + +void multilist_destroy(multilist_t *); +void multilist_create(multilist_t *, size_t, size_t, unsigned int, + multilist_sublist_index_func_t *); + +void multilist_insert(multilist_t *, void *); +void multilist_remove(multilist_t *, void *); +int multilist_is_empty(multilist_t *); + +unsigned int multilist_get_num_sublists(multilist_t *); +unsigned int multilist_get_random_index(multilist_t *); + +multilist_sublist_t *multilist_sublist_lock(multilist_t *, unsigned int); +void multilist_sublist_unlock(multilist_sublist_t *); + +void multilist_sublist_insert_head(multilist_sublist_t *, void *); +void multilist_sublist_insert_tail(multilist_sublist_t *, void *); +void multilist_sublist_move_forward(multilist_sublist_t *mls, void *obj); +void multilist_sublist_remove(multilist_sublist_t *, void *); + +void *multilist_sublist_head(multilist_sublist_t *); +void *multilist_sublist_tail(multilist_sublist_t *); +void *multilist_sublist_next(multilist_sublist_t *, void *); +void *multilist_sublist_prev(multilist_sublist_t *, void *); + +void multilist_link_init(multilist_node_t *); +int multilist_link_active(multilist_node_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_MULTILIST_H */ --- linux-4.4.0.orig/zfs/include/sys/nvpair.h +++ linux-4.4.0/zfs/include/sys/nvpair.h @@ -0,0 +1,352 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#ifndef _SYS_NVPAIR_H +#define _SYS_NVPAIR_H + +#include +#include +#include +#include + +#if defined(_KERNEL) && !defined(_BOOT) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + DATA_TYPE_UNKNOWN = 0, + DATA_TYPE_BOOLEAN, + DATA_TYPE_BYTE, + DATA_TYPE_INT16, + DATA_TYPE_UINT16, + DATA_TYPE_INT32, + DATA_TYPE_UINT32, + DATA_TYPE_INT64, + DATA_TYPE_UINT64, + DATA_TYPE_STRING, + DATA_TYPE_BYTE_ARRAY, + DATA_TYPE_INT16_ARRAY, + DATA_TYPE_UINT16_ARRAY, + DATA_TYPE_INT32_ARRAY, + DATA_TYPE_UINT32_ARRAY, + DATA_TYPE_INT64_ARRAY, + DATA_TYPE_UINT64_ARRAY, + DATA_TYPE_STRING_ARRAY, + DATA_TYPE_HRTIME, + DATA_TYPE_NVLIST, + DATA_TYPE_NVLIST_ARRAY, + DATA_TYPE_BOOLEAN_VALUE, + DATA_TYPE_INT8, + DATA_TYPE_UINT8, + DATA_TYPE_BOOLEAN_ARRAY, + DATA_TYPE_INT8_ARRAY, +#if !defined(_KERNEL) + DATA_TYPE_UINT8_ARRAY, + DATA_TYPE_DOUBLE +#else + DATA_TYPE_UINT8_ARRAY +#endif +} data_type_t; + +typedef struct nvpair { + int32_t nvp_size; /* size of this nvpair */ + int16_t nvp_name_sz; /* length of name string */ + int16_t nvp_reserve; /* not used */ + int32_t nvp_value_elem; /* number of elements for array types */ + data_type_t nvp_type; /* type of value */ + /* name string */ + /* aligned ptr array for string arrays */ + /* aligned array of data for value */ +} nvpair_t; + +/* nvlist header */ +typedef struct nvlist { + int32_t nvl_version; + uint32_t nvl_nvflag; /* persistent flags */ + uint64_t nvl_priv; /* ptr to private data if not packed */ + uint32_t nvl_flag; + int32_t nvl_pad; /* currently not used, for alignment */ +} nvlist_t; + +/* nvp implementation version */ +#define NV_VERSION 0 + +/* nvlist pack encoding */ +#define NV_ENCODE_NATIVE 0 +#define NV_ENCODE_XDR 1 + +/* nvlist persistent unique name flags, stored in nvl_nvflags */ +#define NV_UNIQUE_NAME 0x1 +#define NV_UNIQUE_NAME_TYPE 0x2 + +/* nvlist lookup pairs related flags */ +#define NV_FLAG_NOENTOK 0x1 + +/* convenience macros */ +#define NV_ALIGN(x) (((ulong_t)(x) + 7ul) & ~7ul) +#define NV_ALIGN4(x) (((x) + 3) & ~3) + +#define NVP_SIZE(nvp) ((nvp)->nvp_size) +#define NVP_NAME(nvp) ((char *)(nvp) + sizeof (nvpair_t)) +#define NVP_TYPE(nvp) ((nvp)->nvp_type) +#define NVP_NELEM(nvp) ((nvp)->nvp_value_elem) +#define NVP_VALUE(nvp) ((char *)(nvp) + NV_ALIGN(sizeof (nvpair_t) \ + + (nvp)->nvp_name_sz)) + +#define NVL_VERSION(nvl) ((nvl)->nvl_version) +#define NVL_SIZE(nvl) ((nvl)->nvl_size) +#define NVL_FLAG(nvl) ((nvl)->nvl_flag) + +/* NV allocator framework */ +typedef struct nv_alloc_ops nv_alloc_ops_t; + +typedef struct nv_alloc { + const nv_alloc_ops_t *nva_ops; + void *nva_arg; +} nv_alloc_t; + +struct nv_alloc_ops { + int (*nv_ao_init)(nv_alloc_t *, va_list); + void (*nv_ao_fini)(nv_alloc_t *); + void *(*nv_ao_alloc)(nv_alloc_t *, size_t); + void (*nv_ao_free)(nv_alloc_t *, void *, size_t); + void (*nv_ao_reset)(nv_alloc_t *); +}; + +extern const nv_alloc_ops_t *nv_fixed_ops; +extern nv_alloc_t *nv_alloc_nosleep; + +#if defined(_KERNEL) && !defined(_BOOT) +extern nv_alloc_t *nv_alloc_sleep; +extern nv_alloc_t *nv_alloc_pushpage; +#endif + +int nv_alloc_init(nv_alloc_t *, const nv_alloc_ops_t *, /* args */ ...); +void nv_alloc_reset(nv_alloc_t *); +void nv_alloc_fini(nv_alloc_t *); + +/* list management */ +int nvlist_alloc(nvlist_t **, uint_t, int); +void nvlist_free(nvlist_t *); +int nvlist_size(nvlist_t *, size_t *, int); +int nvlist_pack(nvlist_t *, char **, size_t *, int, int); +int nvlist_unpack(char *, size_t, nvlist_t **, int); +int nvlist_dup(nvlist_t *, nvlist_t **, int); +int nvlist_merge(nvlist_t *, nvlist_t *, int); + +uint_t nvlist_nvflag(nvlist_t *); + +int nvlist_xalloc(nvlist_t **, uint_t, nv_alloc_t *); +int nvlist_xpack(nvlist_t *, char **, size_t *, int, nv_alloc_t *); +int nvlist_xunpack(char *, size_t, nvlist_t **, nv_alloc_t *); +int nvlist_xdup(nvlist_t *, nvlist_t **, nv_alloc_t *); +nv_alloc_t *nvlist_lookup_nv_alloc(nvlist_t *); + +int nvlist_add_nvpair(nvlist_t *, nvpair_t *); +int nvlist_add_boolean(nvlist_t *, const char *); +int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); +int nvlist_add_byte(nvlist_t *, const char *, uchar_t); +int nvlist_add_int8(nvlist_t *, const char *, int8_t); +int nvlist_add_uint8(nvlist_t *, const char *, uint8_t); +int nvlist_add_int16(nvlist_t *, const char *, int16_t); +int nvlist_add_uint16(nvlist_t *, const char *, uint16_t); +int nvlist_add_int32(nvlist_t *, const char *, int32_t); +int nvlist_add_uint32(nvlist_t *, const char *, uint32_t); +int nvlist_add_int64(nvlist_t *, const char *, int64_t); +int nvlist_add_uint64(nvlist_t *, const char *, uint64_t); +int nvlist_add_string(nvlist_t *, const char *, const char *); +int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); +int nvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint_t); +int nvlist_add_byte_array(nvlist_t *, const char *, uchar_t *, uint_t); +int nvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint_t); +int nvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint_t); +int nvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint_t); +int nvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint_t); +int nvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint_t); +int nvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint_t); +int nvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint_t); +int nvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint_t); +int nvlist_add_string_array(nvlist_t *, const char *, char *const *, uint_t); +int nvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint_t); +int nvlist_add_hrtime(nvlist_t *, const char *, hrtime_t); +#if !defined(_KERNEL) +int nvlist_add_double(nvlist_t *, const char *, double); +#endif + +int nvlist_remove(nvlist_t *, const char *, data_type_t); +int nvlist_remove_all(nvlist_t *, const char *); +int nvlist_remove_nvpair(nvlist_t *, nvpair_t *); + +int nvlist_lookup_boolean(nvlist_t *, const char *); +int nvlist_lookup_boolean_value(nvlist_t *, const char *, boolean_t *); +int nvlist_lookup_byte(nvlist_t *, const char *, uchar_t *); +int nvlist_lookup_int8(nvlist_t *, const char *, int8_t *); +int nvlist_lookup_uint8(nvlist_t *, const char *, uint8_t *); +int nvlist_lookup_int16(nvlist_t *, const char *, int16_t *); +int nvlist_lookup_uint16(nvlist_t *, const char *, uint16_t *); +int nvlist_lookup_int32(nvlist_t *, const char *, int32_t *); +int nvlist_lookup_uint32(nvlist_t *, const char *, uint32_t *); +int nvlist_lookup_int64(nvlist_t *, const char *, int64_t *); +int nvlist_lookup_uint64(nvlist_t *, const char *, uint64_t *); +int nvlist_lookup_string(nvlist_t *, const char *, char **); +int nvlist_lookup_nvlist(nvlist_t *, const char *, nvlist_t **); +int nvlist_lookup_boolean_array(nvlist_t *, const char *, + boolean_t **, uint_t *); +int nvlist_lookup_byte_array(nvlist_t *, const char *, uchar_t **, uint_t *); +int nvlist_lookup_int8_array(nvlist_t *, const char *, int8_t **, uint_t *); +int nvlist_lookup_uint8_array(nvlist_t *, const char *, uint8_t **, uint_t *); +int nvlist_lookup_int16_array(nvlist_t *, const char *, int16_t **, uint_t *); +int nvlist_lookup_uint16_array(nvlist_t *, const char *, uint16_t **, uint_t *); +int nvlist_lookup_int32_array(nvlist_t *, const char *, int32_t **, uint_t *); +int nvlist_lookup_uint32_array(nvlist_t *, const char *, uint32_t **, uint_t *); +int nvlist_lookup_int64_array(nvlist_t *, const char *, int64_t **, uint_t *); +int nvlist_lookup_uint64_array(nvlist_t *, const char *, uint64_t **, uint_t *); +int nvlist_lookup_string_array(nvlist_t *, const char *, char ***, uint_t *); +int nvlist_lookup_nvlist_array(nvlist_t *, const char *, + nvlist_t ***, uint_t *); +int nvlist_lookup_hrtime(nvlist_t *, const char *, hrtime_t *); +int nvlist_lookup_pairs(nvlist_t *, int, ...); +#if !defined(_KERNEL) +int nvlist_lookup_double(nvlist_t *, const char *, double *); +#endif + +int nvlist_lookup_nvpair(nvlist_t *, const char *, nvpair_t **); +int nvlist_lookup_nvpair_embedded_index(nvlist_t *, const char *, nvpair_t **, + int *, char **); +boolean_t nvlist_exists(nvlist_t *, const char *); +boolean_t nvlist_empty(nvlist_t *); + +/* processing nvpair */ +nvpair_t *nvlist_next_nvpair(nvlist_t *, nvpair_t *); +nvpair_t *nvlist_prev_nvpair(nvlist_t *, nvpair_t *); +char *nvpair_name(nvpair_t *); +data_type_t nvpair_type(nvpair_t *); +int nvpair_type_is_array(nvpair_t *); +int nvpair_value_boolean_value(nvpair_t *, boolean_t *); +int nvpair_value_byte(nvpair_t *, uchar_t *); +int nvpair_value_int8(nvpair_t *, int8_t *); +int nvpair_value_uint8(nvpair_t *, uint8_t *); +int nvpair_value_int16(nvpair_t *, int16_t *); +int nvpair_value_uint16(nvpair_t *, uint16_t *); +int nvpair_value_int32(nvpair_t *, int32_t *); +int nvpair_value_uint32(nvpair_t *, uint32_t *); +int nvpair_value_int64(nvpair_t *, int64_t *); +int nvpair_value_uint64(nvpair_t *, uint64_t *); +int nvpair_value_string(nvpair_t *, char **); +int nvpair_value_nvlist(nvpair_t *, nvlist_t **); +int nvpair_value_boolean_array(nvpair_t *, boolean_t **, uint_t *); +int nvpair_value_byte_array(nvpair_t *, uchar_t **, uint_t *); +int nvpair_value_int8_array(nvpair_t *, int8_t **, uint_t *); +int nvpair_value_uint8_array(nvpair_t *, uint8_t **, uint_t *); +int nvpair_value_int16_array(nvpair_t *, int16_t **, uint_t *); +int nvpair_value_uint16_array(nvpair_t *, uint16_t **, uint_t *); +int nvpair_value_int32_array(nvpair_t *, int32_t **, uint_t *); +int nvpair_value_uint32_array(nvpair_t *, uint32_t **, uint_t *); +int nvpair_value_int64_array(nvpair_t *, int64_t **, uint_t *); +int nvpair_value_uint64_array(nvpair_t *, uint64_t **, uint_t *); +int nvpair_value_string_array(nvpair_t *, char ***, uint_t *); +int nvpair_value_nvlist_array(nvpair_t *, nvlist_t ***, uint_t *); +int nvpair_value_hrtime(nvpair_t *, hrtime_t *); +#if !defined(_KERNEL) +int nvpair_value_double(nvpair_t *, double *); +#endif + +nvlist_t *fnvlist_alloc(void); +void fnvlist_free(nvlist_t *); +size_t fnvlist_size(nvlist_t *); +char *fnvlist_pack(nvlist_t *, size_t *); +void fnvlist_pack_free(char *, size_t); +nvlist_t *fnvlist_unpack(char *, size_t); +nvlist_t *fnvlist_dup(nvlist_t *); +void fnvlist_merge(nvlist_t *, nvlist_t *); +size_t fnvlist_num_pairs(nvlist_t *); + +void fnvlist_add_boolean(nvlist_t *, const char *); +void fnvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); +void fnvlist_add_byte(nvlist_t *, const char *, uchar_t); +void fnvlist_add_int8(nvlist_t *, const char *, int8_t); +void fnvlist_add_uint8(nvlist_t *, const char *, uint8_t); +void fnvlist_add_int16(nvlist_t *, const char *, int16_t); +void fnvlist_add_uint16(nvlist_t *, const char *, uint16_t); +void fnvlist_add_int32(nvlist_t *, const char *, int32_t); +void fnvlist_add_uint32(nvlist_t *, const char *, uint32_t); +void fnvlist_add_int64(nvlist_t *, const char *, int64_t); +void fnvlist_add_uint64(nvlist_t *, const char *, uint64_t); +void fnvlist_add_string(nvlist_t *, const char *, const char *); +void fnvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); +void fnvlist_add_nvpair(nvlist_t *, nvpair_t *); +void fnvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint_t); +void fnvlist_add_byte_array(nvlist_t *, const char *, uchar_t *, uint_t); +void fnvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint_t); +void fnvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint_t); +void fnvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint_t); +void fnvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint_t); +void fnvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint_t); +void fnvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint_t); +void fnvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint_t); +void fnvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint_t); +void fnvlist_add_string_array(nvlist_t *, const char *, char * const *, uint_t); +void fnvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint_t); + +void fnvlist_remove(nvlist_t *, const char *); +void fnvlist_remove_nvpair(nvlist_t *, nvpair_t *); + +nvpair_t *fnvlist_lookup_nvpair(nvlist_t *nvl, const char *name); +boolean_t fnvlist_lookup_boolean(nvlist_t *nvl, const char *name); +boolean_t fnvlist_lookup_boolean_value(nvlist_t *nvl, const char *name); +uchar_t fnvlist_lookup_byte(nvlist_t *nvl, const char *name); +int8_t fnvlist_lookup_int8(nvlist_t *nvl, const char *name); +int16_t fnvlist_lookup_int16(nvlist_t *nvl, const char *name); +int32_t fnvlist_lookup_int32(nvlist_t *nvl, const char *name); +int64_t fnvlist_lookup_int64(nvlist_t *nvl, const char *name); +uint8_t fnvlist_lookup_uint8(nvlist_t *nvl, const char *name); +uint16_t fnvlist_lookup_uint16(nvlist_t *nvl, const char *name); +uint32_t fnvlist_lookup_uint32(nvlist_t *nvl, const char *name); +uint64_t fnvlist_lookup_uint64(nvlist_t *nvl, const char *name); +char *fnvlist_lookup_string(nvlist_t *nvl, const char *name); +nvlist_t *fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name); + +boolean_t fnvpair_value_boolean_value(nvpair_t *nvp); +uchar_t fnvpair_value_byte(nvpair_t *nvp); +int8_t fnvpair_value_int8(nvpair_t *nvp); +int16_t fnvpair_value_int16(nvpair_t *nvp); +int32_t fnvpair_value_int32(nvpair_t *nvp); +int64_t fnvpair_value_int64(nvpair_t *nvp); +uint8_t fnvpair_value_uint8(nvpair_t *nvp); +uint16_t fnvpair_value_uint16(nvpair_t *nvp); +uint32_t fnvpair_value_uint32(nvpair_t *nvp); +uint64_t fnvpair_value_uint64(nvpair_t *nvp); +char *fnvpair_value_string(nvpair_t *nvp); +nvlist_t *fnvpair_value_nvlist(nvpair_t *nvp); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_NVPAIR_H */ --- linux-4.4.0.orig/zfs/include/sys/nvpair_impl.h +++ linux-4.4.0/zfs/include/sys/nvpair_impl.h @@ -0,0 +1,73 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _NVPAIR_IMPL_H +#define _NVPAIR_IMPL_H + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The structures here provided for information and debugging purposes only + * may be changed in the future. + */ + +/* + * implementation linked list for pre-packed data + */ +typedef struct i_nvp i_nvp_t; + +struct i_nvp { + union { + uint64_t _nvi_align; /* ensure alignment */ + struct { + i_nvp_t *_nvi_next; /* pointer to next nvpair */ + i_nvp_t *_nvi_prev; /* pointer to prev nvpair */ + } _nvi; + } _nvi_un; + nvpair_t nvi_nvp; /* nvpair */ +}; +#define nvi_next _nvi_un._nvi._nvi_next +#define nvi_prev _nvi_un._nvi._nvi_prev + +typedef struct { + i_nvp_t *nvp_list; /* linked list of nvpairs */ + i_nvp_t *nvp_last; /* last nvpair */ + i_nvp_t *nvp_curr; /* current walker nvpair */ + nv_alloc_t *nvp_nva; /* pluggable allocator */ + uint32_t nvp_stat; /* internal state */ +} nvpriv_t; + +#ifdef __cplusplus +} +#endif + +#endif /* _NVPAIR_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/range_tree.h +++ linux-4.4.0/zfs/include/sys/range_tree.h @@ -0,0 +1,97 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_RANGE_TREE_H +#define _SYS_RANGE_TREE_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define RANGE_TREE_HISTOGRAM_SIZE 64 + +typedef struct range_tree_ops range_tree_ops_t; + +typedef struct range_tree { + avl_tree_t rt_root; /* offset-ordered segment AVL tree */ + uint64_t rt_space; /* sum of all segments in the map */ + range_tree_ops_t *rt_ops; + void *rt_arg; + + /* + * The rt_histogram maintains a histogram of ranges. Each bucket, + * rt_histogram[i], contains the number of ranges whose size is: + * 2^i <= size of range in bytes < 2^(i+1) + */ + uint64_t rt_histogram[RANGE_TREE_HISTOGRAM_SIZE]; + kmutex_t *rt_lock; /* pointer to lock that protects map */ +} range_tree_t; + +typedef struct range_seg { + avl_node_t rs_node; /* AVL node */ + avl_node_t rs_pp_node; /* AVL picker-private node */ + uint64_t rs_start; /* starting offset of this segment */ + uint64_t rs_end; /* ending offset (non-inclusive) */ +} range_seg_t; + +struct range_tree_ops { + void (*rtop_create)(range_tree_t *rt, void *arg); + void (*rtop_destroy)(range_tree_t *rt, void *arg); + void (*rtop_add)(range_tree_t *rt, range_seg_t *rs, void *arg); + void (*rtop_remove)(range_tree_t *rt, range_seg_t *rs, void *arg); + void (*rtop_vacate)(range_tree_t *rt, void *arg); +}; + +typedef void range_tree_func_t(void *arg, uint64_t start, uint64_t size); + +void range_tree_init(void); +void range_tree_fini(void); +range_tree_t *range_tree_create(range_tree_ops_t *ops, void *arg, kmutex_t *lp); +void range_tree_destroy(range_tree_t *rt); +boolean_t range_tree_contains(range_tree_t *rt, uint64_t start, uint64_t size); +uint64_t range_tree_space(range_tree_t *rt); +void range_tree_verify(range_tree_t *rt, uint64_t start, uint64_t size); +void range_tree_swap(range_tree_t **rtsrc, range_tree_t **rtdst); +void range_tree_stat_verify(range_tree_t *rt); + +void range_tree_add(void *arg, uint64_t start, uint64_t size); +void range_tree_remove(void *arg, uint64_t start, uint64_t size); +void range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t size); + +void range_tree_vacate(range_tree_t *rt, range_tree_func_t *func, void *arg); +void range_tree_walk(range_tree_t *rt, range_tree_func_t *func, void *arg); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_RANGE_TREE_H */ --- linux-4.4.0.orig/zfs/include/sys/refcount.h +++ linux-4.4.0/zfs/include/sys/refcount.h @@ -0,0 +1,110 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_REFCOUNT_H +#define _SYS_REFCOUNT_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * If the reference is held only by the calling function and not any + * particular object, use FTAG (which is a string) for the holder_tag. + * Otherwise, use the object that holds the reference. + */ +#define FTAG ((char *)__func__) + +#ifdef ZFS_DEBUG +typedef struct reference { + list_node_t ref_link; + void *ref_holder; + uint64_t ref_number; + uint8_t *ref_removed; +} reference_t; + +typedef struct refcount { + kmutex_t rc_mtx; + boolean_t rc_tracked; + list_t rc_list; + list_t rc_removed; + int64_t rc_count; + int64_t rc_removed_count; +} refcount_t; + +/* Note: refcount_t must be initialized with refcount_create[_untracked]() */ + +void refcount_create(refcount_t *rc); +void refcount_create_untracked(refcount_t *rc); +void refcount_destroy(refcount_t *rc); +void refcount_destroy_many(refcount_t *rc, uint64_t number); +int refcount_is_zero(refcount_t *rc); +int64_t refcount_count(refcount_t *rc); +int64_t refcount_add(refcount_t *rc, void *holder_tag); +int64_t refcount_remove(refcount_t *rc, void *holder_tag); +int64_t refcount_add_many(refcount_t *rc, uint64_t number, void *holder_tag); +int64_t refcount_remove_many(refcount_t *rc, uint64_t number, void *holder_tag); +void refcount_transfer(refcount_t *dst, refcount_t *src); + +void refcount_init(void); +void refcount_fini(void); + +#else /* ZFS_DEBUG */ + +typedef struct refcount { + uint64_t rc_count; +} refcount_t; + +#define refcount_create(rc) ((rc)->rc_count = 0) +#define refcount_create_untracked(rc) ((rc)->rc_count = 0) +#define refcount_destroy(rc) ((rc)->rc_count = 0) +#define refcount_destroy_many(rc, number) ((rc)->rc_count = 0) +#define refcount_is_zero(rc) ((rc)->rc_count == 0) +#define refcount_count(rc) ((rc)->rc_count) +#define refcount_add(rc, holder) atomic_add_64_nv(&(rc)->rc_count, 1) +#define refcount_remove(rc, holder) atomic_add_64_nv(&(rc)->rc_count, -1) +#define refcount_add_many(rc, number, holder) \ + atomic_add_64_nv(&(rc)->rc_count, number) +#define refcount_remove_many(rc, number, holder) \ + atomic_add_64_nv(&(rc)->rc_count, -number) +#define refcount_transfer(dst, src) { \ + uint64_t __tmp = (src)->rc_count; \ + atomic_add_64(&(src)->rc_count, -__tmp); \ + atomic_add_64(&(dst)->rc_count, __tmp); \ +} + +#define refcount_init() +#define refcount_fini() + +#endif /* ZFS_DEBUG */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_REFCOUNT_H */ --- linux-4.4.0.orig/zfs/include/sys/rrwlock.h +++ linux-4.4.0/zfs/include/sys/rrwlock.h @@ -0,0 +1,115 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#ifndef _SYS_RR_RW_LOCK_H +#define _SYS_RR_RW_LOCK_H + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * A reader-writer lock implementation that allows re-entrant reads, but + * still gives writers priority on "new" reads. + * + * See rrwlock.c for more details about the implementation. + * + * Fields of the rrwlock_t structure: + * - rr_lock: protects modification and reading of rrwlock_t fields + * - rr_cv: cv for waking up readers or waiting writers + * - rr_writer: thread id of the current writer + * - rr_anon_rount: number of active anonymous readers + * - rr_linked_rcount: total number of non-anonymous active readers + * - rr_writer_wanted: a writer wants the lock + */ +typedef struct rrwlock { + kmutex_t rr_lock; + kcondvar_t rr_cv; + kthread_t *rr_writer; + refcount_t rr_anon_rcount; + refcount_t rr_linked_rcount; + boolean_t rr_writer_wanted; + boolean_t rr_track_all; +} rrwlock_t; + +/* + * 'tag' is used in reference counting tracking. The + * 'tag' must be the same in a rrw_enter() as in its + * corresponding rrw_exit(). + */ +void rrw_init(rrwlock_t *rrl, boolean_t track_all); +void rrw_destroy(rrwlock_t *rrl); +void rrw_enter(rrwlock_t *rrl, krw_t rw, void *tag); +void rrw_enter_read(rrwlock_t *rrl, void *tag); +void rrw_enter_read_prio(rrwlock_t *rrl, void *tag); +void rrw_enter_write(rrwlock_t *rrl); +void rrw_exit(rrwlock_t *rrl, void *tag); +boolean_t rrw_held(rrwlock_t *rrl, krw_t rw); +void rrw_tsd_destroy(void *arg); + +#define RRW_READ_HELD(x) rrw_held(x, RW_READER) +#define RRW_WRITE_HELD(x) rrw_held(x, RW_WRITER) +#define RRW_LOCK_HELD(x) \ + (rrw_held(x, RW_WRITER) || rrw_held(x, RW_READER)) + +/* + * A reader-mostly lock implementation, tuning above reader-writer locks + * for hightly parallel read acquisitions, pessimizing write acquisitions. + * + * This should be a prime number. See comment in rrwlock.c near + * RRM_TD_LOCK() for details. + */ +#define RRM_NUM_LOCKS 17 +typedef struct rrmlock { + rrwlock_t locks[RRM_NUM_LOCKS]; +} rrmlock_t; + +void rrm_init(rrmlock_t *rrl, boolean_t track_all); +void rrm_destroy(rrmlock_t *rrl); +void rrm_enter(rrmlock_t *rrl, krw_t rw, void *tag); +void rrm_enter_read(rrmlock_t *rrl, void *tag); +void rrm_enter_write(rrmlock_t *rrl); +void rrm_exit(rrmlock_t *rrl, void *tag); +boolean_t rrm_held(rrmlock_t *rrl, krw_t rw); + +#define RRM_READ_HELD(x) rrm_held(x, RW_READER) +#define RRM_WRITE_HELD(x) rrm_held(x, RW_WRITER) +#define RRM_LOCK_HELD(x) \ + (rrm_held(x, RW_WRITER) || rrm_held(x, RW_READER)) + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_RR_RW_LOCK_H */ --- linux-4.4.0.orig/zfs/include/sys/sa.h +++ linux-4.4.0/zfs/include/sys/sa.h @@ -0,0 +1,170 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_SA_H +#define _SYS_SA_H + +#include + +/* + * Currently available byteswap functions. + * If it all possible new attributes should used + * one of the already defined byteswap functions. + * If a new byteswap function is added then the + * ZPL/Pool version will need to be bumped. + */ + +typedef enum sa_bswap_type { + SA_UINT64_ARRAY, + SA_UINT32_ARRAY, + SA_UINT16_ARRAY, + SA_UINT8_ARRAY, + SA_ACL, +} sa_bswap_type_t; + +typedef uint16_t sa_attr_type_t; + +/* + * Attribute to register support for. + */ +typedef struct sa_attr_reg { + char *sa_name; /* attribute name */ + uint16_t sa_length; + sa_bswap_type_t sa_byteswap; /* bswap functon enum */ + sa_attr_type_t sa_attr; /* filled in during registration */ +} sa_attr_reg_t; + + +typedef void (sa_data_locator_t)(void **, uint32_t *, uint32_t, + boolean_t, void *userptr); + +/* + * array of attributes to store. + * + * This array should be treated as opaque/private data. + * The SA_BULK_ADD_ATTR() macro should be used for manipulating + * the array. + * + * When sa_replace_all_by_template() is used the attributes + * will be stored in the order defined in the array, except that + * the attributes may be split between the bonus and the spill buffer + * + */ +typedef struct sa_bulk_attr { + void *sa_data; + sa_data_locator_t *sa_data_func; + uint16_t sa_length; + sa_attr_type_t sa_attr; + /* the following are private to the sa framework */ + void *sa_addr; + uint16_t sa_buftype; + uint16_t sa_size; +} sa_bulk_attr_t; + + +/* + * special macro for adding entries for bulk attr support + * bulk - sa_bulk_attr_t + * count - integer that will be incremented during each add + * attr - attribute to manipulate + * func - function for accessing data. + * data - pointer to data. + * len - length of data + */ + +#define SA_ADD_BULK_ATTR(b, idx, attr, func, data, len) \ +{ \ + b[idx].sa_attr = attr;\ + b[idx].sa_data_func = func; \ + b[idx].sa_data = data; \ + b[idx++].sa_length = len; \ +} + +typedef struct sa_os sa_os_t; + +typedef enum sa_handle_type { + SA_HDL_SHARED, + SA_HDL_PRIVATE +} sa_handle_type_t; + +struct sa_handle; +typedef void *sa_lookup_tab_t; +typedef struct sa_handle sa_handle_t; + +typedef void (sa_update_cb_t)(sa_handle_t *, dmu_tx_t *tx); + +int sa_handle_get(objset_t *, uint64_t, void *userp, + sa_handle_type_t, sa_handle_t **); +int sa_handle_get_from_db(objset_t *, dmu_buf_t *, void *userp, + sa_handle_type_t, sa_handle_t **); +void sa_handle_destroy(sa_handle_t *); +int sa_buf_hold(objset_t *, uint64_t, void *, dmu_buf_t **); +void sa_buf_rele(dmu_buf_t *, void *); +int sa_lookup(sa_handle_t *, sa_attr_type_t, void *buf, uint32_t buflen); +int sa_update(sa_handle_t *, sa_attr_type_t, void *buf, + uint32_t buflen, dmu_tx_t *); +int sa_remove(sa_handle_t *, sa_attr_type_t, dmu_tx_t *); +int sa_bulk_lookup(sa_handle_t *, sa_bulk_attr_t *, int count); +int sa_bulk_lookup_locked(sa_handle_t *, sa_bulk_attr_t *, int count); +int sa_bulk_update(sa_handle_t *, sa_bulk_attr_t *, int count, dmu_tx_t *); +int sa_size(sa_handle_t *, sa_attr_type_t, int *); +int sa_update_from_cb(sa_handle_t *, sa_attr_type_t, + uint32_t buflen, sa_data_locator_t *, void *userdata, dmu_tx_t *); +void sa_object_info(sa_handle_t *, dmu_object_info_t *); +void sa_object_size(sa_handle_t *, uint32_t *, u_longlong_t *); +void *sa_get_userdata(sa_handle_t *); +void sa_set_userp(sa_handle_t *, void *); +dmu_buf_t *sa_get_db(sa_handle_t *); +uint64_t sa_handle_object(sa_handle_t *); +boolean_t sa_attr_would_spill(sa_handle_t *, sa_attr_type_t, int size); +void sa_spill_rele(sa_handle_t *); +void sa_register_update_callback(objset_t *, sa_update_cb_t *); +int sa_setup(objset_t *, uint64_t, sa_attr_reg_t *, int, sa_attr_type_t **); +void sa_tear_down(objset_t *); +int sa_replace_all_by_template(sa_handle_t *, sa_bulk_attr_t *, + int, dmu_tx_t *); +int sa_replace_all_by_template_locked(sa_handle_t *, sa_bulk_attr_t *, + int, dmu_tx_t *); +boolean_t sa_enabled(objset_t *); +void sa_cache_init(void); +void sa_cache_fini(void); +int sa_set_sa_object(objset_t *, uint64_t); +int sa_hdrsize(void *); +void sa_handle_lock(sa_handle_t *); +void sa_handle_unlock(sa_handle_t *); + +#ifdef _KERNEL +int sa_lookup_uio(sa_handle_t *, sa_attr_type_t, uio_t *); +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SA_H */ --- linux-4.4.0.orig/zfs/include/sys/sa_impl.h +++ linux-4.4.0/zfs/include/sys/sa_impl.h @@ -0,0 +1,289 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_SA_IMPL_H +#define _SYS_SA_IMPL_H + +#include +#include +#include + +/* + * Array of known attributes and their + * various characteristics. + */ +typedef struct sa_attr_table { + sa_attr_type_t sa_attr; + uint8_t sa_registered; + uint16_t sa_length; + sa_bswap_type_t sa_byteswap; + char *sa_name; +} sa_attr_table_t; + +/* + * Zap attribute format for attribute registration + * + * 64 56 48 40 32 24 16 8 0 + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * | unused | len | bswap | attr num | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * + * Zap attribute format for layout information. + * + * layout information is stored as an array of attribute numbers + * The name of the attribute is the layout number (0, 1, 2, ...) + * + * 16 0 + * +---- ---+ + * | attr # | + * +--------+ + * | attr # | + * +--- ----+ + * ...... + * + */ + +#define ATTR_BSWAP(x) BF32_GET(x, 16, 8) +#define ATTR_LENGTH(x) BF32_GET(x, 24, 16) +#define ATTR_NUM(x) BF32_GET(x, 0, 16) +#define ATTR_ENCODE(x, attr, length, bswap) \ +{ \ + BF64_SET(x, 24, 16, length); \ + BF64_SET(x, 16, 8, bswap); \ + BF64_SET(x, 0, 16, attr); \ +} + +#define TOC_OFF(x) BF32_GET(x, 0, 23) +#define TOC_ATTR_PRESENT(x) BF32_GET(x, 31, 1) +#define TOC_LEN_IDX(x) BF32_GET(x, 24, 4) +#define TOC_ATTR_ENCODE(x, len_idx, offset) \ +{ \ + BF32_SET(x, 31, 1, 1); \ + BF32_SET(x, 24, 7, len_idx); \ + BF32_SET(x, 0, 24, offset); \ +} + +#define SA_LAYOUTS "LAYOUTS" +#define SA_REGISTRY "REGISTRY" + +/* + * Each unique layout will have their own table + * sa_lot (layout_table) + */ +typedef struct sa_lot { + avl_node_t lot_num_node; + avl_node_t lot_hash_node; + uint64_t lot_num; + uint64_t lot_hash; + sa_attr_type_t *lot_attrs; /* array of attr #'s */ + uint32_t lot_var_sizes; /* how many aren't fixed size */ + uint32_t lot_attr_count; /* total attr count */ + list_t lot_idx_tab; /* should be only a couple of entries */ + int lot_instance; /* used with lot_hash to identify entry */ +} sa_lot_t; + +/* index table of offsets */ +typedef struct sa_idx_tab { + list_node_t sa_next; + sa_lot_t *sa_layout; + uint16_t *sa_variable_lengths; + refcount_t sa_refcount; + uint32_t *sa_idx_tab; /* array of offsets */ +} sa_idx_tab_t; + +/* + * Since the offset/index information into the actual data + * will usually be identical we can share that information with + * all handles that have the exact same offsets. + * + * You would typically only have a large number of different table of + * contents if you had a several variable sized attributes. + * + * Two AVL trees are used to track the attribute layout numbers. + * one is keyed by number and will be consulted when a DMU_OT_SA + * object is first read. The second tree is keyed by the hash signature + * of the attributes and will be consulted when an attribute is added + * to determine if we already have an instance of that layout. Both + * of these tree's are interconnected. The only difference is that + * when an entry is found in the "hash" tree the list of attributes will + * need to be compared against the list of attributes you have in hand. + * The assumption is that typically attributes will just be updated and + * adding a completely new attribute is a very rare operation. + */ +struct sa_os { + kmutex_t sa_lock; + boolean_t sa_need_attr_registration; + boolean_t sa_force_spill; + uint64_t sa_master_obj; + uint64_t sa_reg_attr_obj; + uint64_t sa_layout_attr_obj; + int sa_num_attrs; + sa_attr_table_t *sa_attr_table; /* private attr table */ + sa_update_cb_t *sa_update_cb; + avl_tree_t sa_layout_num_tree; /* keyed by layout number */ + avl_tree_t sa_layout_hash_tree; /* keyed by layout hash value */ + int sa_user_table_sz; + sa_attr_type_t *sa_user_table; /* user name->attr mapping table */ +}; + +/* + * header for all bonus and spill buffers. + * + * The header has a fixed portion with a variable number + * of "lengths" depending on the number of variable sized + * attributes which are determined by the "layout number" + */ + +#define SA_MAGIC 0x2F505A /* ZFS SA */ +typedef struct sa_hdr_phys { + uint32_t sa_magic; + /* + * Encoded with hdrsize and layout number as follows: + * 16 10 0 + * +--------+-------+ + * | hdrsz |layout | + * +--------+-------+ + * + * Bits 0-10 are the layout number + * Bits 11-16 are the size of the header. + * The hdrsize is the number * 8 + * + * For example. + * hdrsz of 1 ==> 8 byte header + * 2 ==> 16 byte header + * + */ + uint16_t sa_layout_info; + uint16_t sa_lengths[1]; /* optional sizes for variable length attrs */ + /* ... Data follows the lengths. */ +} sa_hdr_phys_t; + +#define SA_HDR_LAYOUT_NUM(hdr) BF32_GET(hdr->sa_layout_info, 0, 10) +#define SA_HDR_SIZE(hdr) BF32_GET_SB(hdr->sa_layout_info, 10, 6, 3, 0) +#define SA_HDR_LAYOUT_INFO_ENCODE(x, num, size) \ +{ \ + BF32_SET_SB(x, 10, 6, 3, 0, size); \ + BF32_SET(x, 0, 10, num); \ +} + +typedef enum sa_buf_type { + SA_BONUS = 1, + SA_SPILL = 2 +} sa_buf_type_t; + +typedef enum sa_data_op { + SA_LOOKUP, + SA_UPDATE, + SA_ADD, + SA_REPLACE, + SA_REMOVE +} sa_data_op_t; + +/* + * Opaque handle used for most sa functions + * + * This needs to be kept as small as possible. + */ + +struct sa_handle { + dmu_buf_user_t sa_dbu; + kmutex_t sa_lock; + dmu_buf_t *sa_bonus; + dmu_buf_t *sa_spill; + objset_t *sa_os; + void *sa_userp; + sa_idx_tab_t *sa_bonus_tab; /* idx of bonus */ + sa_idx_tab_t *sa_spill_tab; /* only present if spill activated */ +}; + +#define SA_GET_DB(hdl, type) \ + (dmu_buf_impl_t *)((type == SA_BONUS) ? hdl->sa_bonus : hdl->sa_spill) + +#define SA_GET_HDR(hdl, type) \ + ((sa_hdr_phys_t *)((dmu_buf_impl_t *)(SA_GET_DB(hdl, \ + type))->db.db_data)) + +#define SA_IDX_TAB_GET(hdl, type) \ + (type == SA_BONUS ? hdl->sa_bonus_tab : hdl->sa_spill_tab) + +#define IS_SA_BONUSTYPE(a) \ + ((a == DMU_OT_SA) ? B_TRUE : B_FALSE) + +#define SA_BONUSTYPE_FROM_DB(db) \ + (dmu_get_bonustype((dmu_buf_t *)db)) + +#define SA_BLKPTR_SPACE (DN_MAX_BONUSLEN - sizeof (blkptr_t)) + +#define SA_LAYOUT_NUM(x, type) \ + ((!IS_SA_BONUSTYPE(type) ? 0 : (((IS_SA_BONUSTYPE(type)) && \ + ((SA_HDR_LAYOUT_NUM(x)) == 0)) ? 1 : SA_HDR_LAYOUT_NUM(x)))) + + +#define SA_REGISTERED_LEN(sa, attr) sa->sa_attr_table[attr].sa_length + +#define SA_ATTR_LEN(sa, idx, attr, hdr) ((SA_REGISTERED_LEN(sa, attr) == 0) ?\ + hdr->sa_lengths[TOC_LEN_IDX(idx->sa_idx_tab[attr])] : \ + SA_REGISTERED_LEN(sa, attr)) + +#define SA_SET_HDR(hdr, num, size) \ + { \ + hdr->sa_magic = SA_MAGIC; \ + SA_HDR_LAYOUT_INFO_ENCODE(hdr->sa_layout_info, num, size); \ + } + +#define SA_ATTR_INFO(sa, idx, hdr, attr, bulk, type, hdl) \ + { \ + bulk.sa_size = SA_ATTR_LEN(sa, idx, attr, hdr); \ + bulk.sa_buftype = type; \ + bulk.sa_addr = \ + (void *)((uintptr_t)TOC_OFF(idx->sa_idx_tab[attr]) + \ + (uintptr_t)hdr); \ +} + +#define SA_HDR_SIZE_MATCH_LAYOUT(hdr, tb) \ + (SA_HDR_SIZE(hdr) == (sizeof (sa_hdr_phys_t) + \ + (tb->lot_var_sizes > 1 ? P2ROUNDUP((tb->lot_var_sizes - 1) * \ + sizeof (uint16_t), 8) : 0))) + +int sa_add_impl(sa_handle_t *, sa_attr_type_t, + uint32_t, sa_data_locator_t, void *, dmu_tx_t *); + +void sa_register_update_callback_locked(objset_t *, sa_update_cb_t *); +int sa_size_locked(sa_handle_t *, sa_attr_type_t, int *); + +void sa_default_locator(void **, uint32_t *, uint32_t, boolean_t, void *); +int sa_attr_size(sa_os_t *, sa_idx_tab_t *, sa_attr_type_t, + uint16_t *, sa_hdr_phys_t *); + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SA_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/sdt.h +++ linux-4.4.0/zfs/include/sys/sdt.h @@ -0,0 +1,70 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_SDT_H +#define _SYS_SDT_H + +#ifndef _KERNEL + +#define ZFS_PROBE(a) ((void) 0) +#define ZFS_PROBE1(a, c) ((void) 0) +#define ZFS_PROBE2(a, c, e) ((void) 0) +#define ZFS_PROBE3(a, c, e, g) ((void) 0) +#define ZFS_PROBE4(a, c, e, g, i) ((void) 0) +#define ZFS_SET_ERROR(err) ((void) 0) + +#else + +#if defined(HAVE_DECLARE_EVENT_CLASS) + +#include + +/* + * The set-error SDT probe is extra static, in that we declare its fake + * function literally, rather than with the DTRACE_PROBE1() macro. This is + * necessary so that SET_ERROR() can evaluate to a value, which wouldn't + * be possible if it required multiple statements (to declare the function + * and then call it). + * + * SET_ERROR() uses the comma operator so that it can be used without much + * additional code. For example, "return (EINVAL);" becomes + * "return (SET_ERROR(EINVAL));". Note that the argument will be evaluated + * twice, so it should not have side effects (e.g. something like: + * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice). + */ +#define SET_ERROR(err) \ + (trace_zfs_set__error(__FILE__, __func__, __LINE__, err), err) + +#else + +#undef SET_ERROR +#define SET_ERROR(err) (err) + +#endif /* HAVE_DECLARE_EVENT_CLASS */ + +#endif /* _KERNEL */ + +#endif /* _SYS_SDT_H */ --- linux-4.4.0.orig/zfs/include/sys/spa.h +++ linux-4.4.0/zfs/include/sys/spa.h @@ -0,0 +1,922 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_SPA_H +#define _SYS_SPA_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Forward references that lots of things need. + */ +typedef struct spa spa_t; +typedef struct vdev vdev_t; +typedef struct metaslab metaslab_t; +typedef struct metaslab_group metaslab_group_t; +typedef struct metaslab_class metaslab_class_t; +typedef struct zio zio_t; +typedef struct zilog zilog_t; +typedef struct spa_aux_vdev spa_aux_vdev_t; +typedef struct ddt ddt_t; +typedef struct ddt_entry ddt_entry_t; +typedef struct zbookmark_phys zbookmark_phys_t; + +struct dsl_pool; +struct dsl_dataset; + +/* + * General-purpose 32-bit and 64-bit bitfield encodings. + */ +#define BF32_DECODE(x, low, len) P2PHASE((x) >> (low), 1U << (len)) +#define BF64_DECODE(x, low, len) P2PHASE((x) >> (low), 1ULL << (len)) +#define BF32_ENCODE(x, low, len) (P2PHASE((x), 1U << (len)) << (low)) +#define BF64_ENCODE(x, low, len) (P2PHASE((x), 1ULL << (len)) << (low)) + +#define BF32_GET(x, low, len) BF32_DECODE(x, low, len) +#define BF64_GET(x, low, len) BF64_DECODE(x, low, len) + +#define BF32_SET(x, low, len, val) do { \ + ASSERT3U(val, <, 1U << (len)); \ + ASSERT3U(low + len, <=, 32); \ + (x) ^= BF32_ENCODE((x >> low) ^ (val), low, len); \ +_NOTE(CONSTCOND) } while (0) + +#define BF64_SET(x, low, len, val) do { \ + ASSERT3U(val, <, 1ULL << (len)); \ + ASSERT3U(low + len, <=, 64); \ + ((x) ^= BF64_ENCODE((x >> low) ^ (val), low, len)); \ +_NOTE(CONSTCOND) } while (0) + +#define BF32_GET_SB(x, low, len, shift, bias) \ + ((BF32_GET(x, low, len) + (bias)) << (shift)) +#define BF64_GET_SB(x, low, len, shift, bias) \ + ((BF64_GET(x, low, len) + (bias)) << (shift)) + +#define BF32_SET_SB(x, low, len, shift, bias, val) do { \ + ASSERT(IS_P2ALIGNED(val, 1U << shift)); \ + ASSERT3S((val) >> (shift), >=, bias); \ + BF32_SET(x, low, len, ((val) >> (shift)) - (bias)); \ +_NOTE(CONSTCOND) } while (0) +#define BF64_SET_SB(x, low, len, shift, bias, val) do { \ + ASSERT(IS_P2ALIGNED(val, 1ULL << shift)); \ + ASSERT3S((val) >> (shift), >=, bias); \ + BF64_SET(x, low, len, ((val) >> (shift)) - (bias)); \ +_NOTE(CONSTCOND) } while (0) + +/* + * We currently support block sizes from 512 bytes to 16MB. + * The benefits of larger blocks, and thus larger IO, need to be weighed + * against the cost of COWing a giant block to modify one byte, and the + * large latency of reading or writing a large block. + * + * Note that although blocks up to 16MB are supported, the recordsize + * property can not be set larger than zfs_max_recordsize (default 1MB). + * See the comment near zfs_max_recordsize in dsl_dataset.c for details. + * + * Note that although the LSIZE field of the blkptr_t can store sizes up + * to 32MB, the dnode's dn_datablkszsec can only store sizes up to + * 32MB - 512 bytes. Therefore, we limit SPA_MAXBLOCKSIZE to 16MB. + */ +#define SPA_MINBLOCKSHIFT 9 +#define SPA_OLD_MAXBLOCKSHIFT 17 +#define SPA_MAXBLOCKSHIFT 24 +#define SPA_MINBLOCKSIZE (1ULL << SPA_MINBLOCKSHIFT) +#define SPA_OLD_MAXBLOCKSIZE (1ULL << SPA_OLD_MAXBLOCKSHIFT) +#define SPA_MAXBLOCKSIZE (1ULL << SPA_MAXBLOCKSHIFT) + +/* + * Size of block to hold the configuration data (a packed nvlist) + */ +#define SPA_CONFIG_BLOCKSIZE (1ULL << 14) + +/* + * The DVA size encodings for LSIZE and PSIZE support blocks up to 32MB. + * The ASIZE encoding should be at least 64 times larger (6 more bits) + * to support up to 4-way RAID-Z mirror mode with worst-case gang block + * overhead, three DVAs per bp, plus one more bit in case we do anything + * else that expands the ASIZE. + */ +#define SPA_LSIZEBITS 16 /* LSIZE up to 32M (2^16 * 512) */ +#define SPA_PSIZEBITS 16 /* PSIZE up to 32M (2^16 * 512) */ +#define SPA_ASIZEBITS 24 /* ASIZE up to 64 times larger */ + +/* + * All SPA data is represented by 128-bit data virtual addresses (DVAs). + * The members of the dva_t should be considered opaque outside the SPA. + */ +typedef struct dva { + uint64_t dva_word[2]; +} dva_t; + +/* + * Each block has a 256-bit checksum -- strong enough for cryptographic hashes. + */ +typedef struct zio_cksum { + uint64_t zc_word[4]; +} zio_cksum_t; + +/* + * Each block is described by its DVAs, time of birth, checksum, etc. + * The word-by-word, bit-by-bit layout of the blkptr is as follows: + * + * 64 56 48 40 32 24 16 8 0 + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 0 | vdev1 | GRID | ASIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 1 |G| offset1 | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 2 | vdev2 | GRID | ASIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 3 |G| offset2 | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 4 | vdev3 | GRID | ASIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 5 |G| offset3 | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 6 |BDX|lvl| type | cksum |E| comp| PSIZE | LSIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 7 | padding | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 8 | padding | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 9 | physical birth txg | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * a | logical birth txg | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * b | fill count | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * c | checksum[0] | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * d | checksum[1] | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * e | checksum[2] | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * f | checksum[3] | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * + * Legend: + * + * vdev virtual device ID + * offset offset into virtual device + * LSIZE logical size + * PSIZE physical size (after compression) + * ASIZE allocated size (including RAID-Z parity and gang block headers) + * GRID RAID-Z layout information (reserved for future use) + * cksum checksum function + * comp compression function + * G gang block indicator + * B byteorder (endianness) + * D dedup + * X encryption (on version 30, which is not supported) + * E blkptr_t contains embedded data (see below) + * lvl level of indirection + * type DMU object type + * phys birth txg of block allocation; zero if same as logical birth txg + * log. birth transaction group in which the block was logically born + * fill count number of non-zero blocks under this bp + * checksum[4] 256-bit checksum of the data this bp describes + */ + +/* + * "Embedded" blkptr_t's don't actually point to a block, instead they + * have a data payload embedded in the blkptr_t itself. See the comment + * in blkptr.c for more details. + * + * The blkptr_t is laid out as follows: + * + * 64 56 48 40 32 24 16 8 0 + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 0 | payload | + * 1 | payload | + * 2 | payload | + * 3 | payload | + * 4 | payload | + * 5 | payload | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 6 |BDX|lvl| type | etype |E| comp| PSIZE| LSIZE | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * 7 | payload | + * 8 | payload | + * 9 | payload | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * a | logical birth txg | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * b | payload | + * c | payload | + * d | payload | + * e | payload | + * f | payload | + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * + * Legend: + * + * payload contains the embedded data + * B (byteorder) byteorder (endianness) + * D (dedup) padding (set to zero) + * X encryption (set to zero; see above) + * E (embedded) set to one + * lvl indirection level + * type DMU object type + * etype how to interpret embedded data (BP_EMBEDDED_TYPE_*) + * comp compression function of payload + * PSIZE size of payload after compression, in bytes + * LSIZE logical size of payload, in bytes + * note that 25 bits is enough to store the largest + * "normal" BP's LSIZE (2^16 * 2^9) in bytes + * log. birth transaction group in which the block was logically born + * + * Note that LSIZE and PSIZE are stored in bytes, whereas for non-embedded + * bp's they are stored in units of SPA_MINBLOCKSHIFT. + * Generally, the generic BP_GET_*() macros can be used on embedded BP's. + * The B, D, X, lvl, type, and comp fields are stored the same as with normal + * BP's so the BP_SET_* macros can be used with them. etype, PSIZE, LSIZE must + * be set with the BPE_SET_* macros. BP_SET_EMBEDDED() should be called before + * other macros, as they assert that they are only used on BP's of the correct + * "embedded-ness". + */ + +#define BPE_GET_ETYPE(bp) \ + (ASSERT(BP_IS_EMBEDDED(bp)), \ + BF64_GET((bp)->blk_prop, 40, 8)) +#define BPE_SET_ETYPE(bp, t) do { \ + ASSERT(BP_IS_EMBEDDED(bp)); \ + BF64_SET((bp)->blk_prop, 40, 8, t); \ +_NOTE(CONSTCOND) } while (0) + +#define BPE_GET_LSIZE(bp) \ + (ASSERT(BP_IS_EMBEDDED(bp)), \ + BF64_GET_SB((bp)->blk_prop, 0, 25, 0, 1)) +#define BPE_SET_LSIZE(bp, x) do { \ + ASSERT(BP_IS_EMBEDDED(bp)); \ + BF64_SET_SB((bp)->blk_prop, 0, 25, 0, 1, x); \ +_NOTE(CONSTCOND) } while (0) + +#define BPE_GET_PSIZE(bp) \ + (ASSERT(BP_IS_EMBEDDED(bp)), \ + BF64_GET_SB((bp)->blk_prop, 25, 7, 0, 1)) +#define BPE_SET_PSIZE(bp, x) do { \ + ASSERT(BP_IS_EMBEDDED(bp)); \ + BF64_SET_SB((bp)->blk_prop, 25, 7, 0, 1, x); \ +_NOTE(CONSTCOND) } while (0) + +typedef enum bp_embedded_type { + BP_EMBEDDED_TYPE_DATA, + BP_EMBEDDED_TYPE_RESERVED, /* Reserved for an unintegrated feature. */ + NUM_BP_EMBEDDED_TYPES = BP_EMBEDDED_TYPE_RESERVED +} bp_embedded_type_t; + +#define BPE_NUM_WORDS 14 +#define BPE_PAYLOAD_SIZE (BPE_NUM_WORDS * sizeof (uint64_t)) +#define BPE_IS_PAYLOADWORD(bp, wp) \ + ((wp) != &(bp)->blk_prop && (wp) != &(bp)->blk_birth) + +#define SPA_BLKPTRSHIFT 7 /* blkptr_t is 128 bytes */ +#define SPA_DVAS_PER_BP 3 /* Number of DVAs in a bp */ + +/* + * A block is a hole when it has either 1) never been written to, or + * 2) is zero-filled. In both cases, ZFS can return all zeroes for all reads + * without physically allocating disk space. Holes are represented in the + * blkptr_t structure by zeroed blk_dva. Correct checking for holes is + * done through the BP_IS_HOLE macro. For holes, the logical size, level, + * DMU object type, and birth times are all also stored for holes that + * were written to at some point (i.e. were punched after having been filled). + */ +typedef struct blkptr { + dva_t blk_dva[SPA_DVAS_PER_BP]; /* Data Virtual Addresses */ + uint64_t blk_prop; /* size, compression, type, etc */ + uint64_t blk_pad[2]; /* Extra space for the future */ + uint64_t blk_phys_birth; /* txg when block was allocated */ + uint64_t blk_birth; /* transaction group at birth */ + uint64_t blk_fill; /* fill count */ + zio_cksum_t blk_cksum; /* 256-bit checksum */ +} blkptr_t; + +/* + * Macros to get and set fields in a bp or DVA. + */ +#define DVA_GET_ASIZE(dva) \ + BF64_GET_SB((dva)->dva_word[0], 0, SPA_ASIZEBITS, SPA_MINBLOCKSHIFT, 0) +#define DVA_SET_ASIZE(dva, x) \ + BF64_SET_SB((dva)->dva_word[0], 0, SPA_ASIZEBITS, \ + SPA_MINBLOCKSHIFT, 0, x) + +#define DVA_GET_GRID(dva) BF64_GET((dva)->dva_word[0], 24, 8) +#define DVA_SET_GRID(dva, x) BF64_SET((dva)->dva_word[0], 24, 8, x) + +#define DVA_GET_VDEV(dva) BF64_GET((dva)->dva_word[0], 32, 32) +#define DVA_SET_VDEV(dva, x) BF64_SET((dva)->dva_word[0], 32, 32, x) + +#define DVA_GET_OFFSET(dva) \ + BF64_GET_SB((dva)->dva_word[1], 0, 63, SPA_MINBLOCKSHIFT, 0) +#define DVA_SET_OFFSET(dva, x) \ + BF64_SET_SB((dva)->dva_word[1], 0, 63, SPA_MINBLOCKSHIFT, 0, x) + +#define DVA_GET_GANG(dva) BF64_GET((dva)->dva_word[1], 63, 1) +#define DVA_SET_GANG(dva, x) BF64_SET((dva)->dva_word[1], 63, 1, x) + +#define BP_GET_LSIZE(bp) \ + (BP_IS_EMBEDDED(bp) ? \ + (BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA ? BPE_GET_LSIZE(bp) : 0): \ + BF64_GET_SB((bp)->blk_prop, 0, SPA_LSIZEBITS, SPA_MINBLOCKSHIFT, 1)) +#define BP_SET_LSIZE(bp, x) do { \ + ASSERT(!BP_IS_EMBEDDED(bp)); \ + BF64_SET_SB((bp)->blk_prop, \ + 0, SPA_LSIZEBITS, SPA_MINBLOCKSHIFT, 1, x); \ +_NOTE(CONSTCOND) } while (0) + +#define BP_GET_PSIZE(bp) \ + (BP_IS_EMBEDDED(bp) ? 0 : \ + BF64_GET_SB((bp)->blk_prop, 16, SPA_PSIZEBITS, SPA_MINBLOCKSHIFT, 1)) +#define BP_SET_PSIZE(bp, x) do { \ + ASSERT(!BP_IS_EMBEDDED(bp)); \ + BF64_SET_SB((bp)->blk_prop, \ + 16, SPA_PSIZEBITS, SPA_MINBLOCKSHIFT, 1, x); \ +_NOTE(CONSTCOND) } while (0) + +#define BP_GET_COMPRESS(bp) BF64_GET((bp)->blk_prop, 32, 7) +#define BP_SET_COMPRESS(bp, x) BF64_SET((bp)->blk_prop, 32, 7, x) + +#define BP_IS_EMBEDDED(bp) BF64_GET((bp)->blk_prop, 39, 1) +#define BP_SET_EMBEDDED(bp, x) BF64_SET((bp)->blk_prop, 39, 1, x) + +#define BP_GET_CHECKSUM(bp) \ + (BP_IS_EMBEDDED(bp) ? ZIO_CHECKSUM_OFF : \ + BF64_GET((bp)->blk_prop, 40, 8)) +#define BP_SET_CHECKSUM(bp, x) do { \ + ASSERT(!BP_IS_EMBEDDED(bp)); \ + BF64_SET((bp)->blk_prop, 40, 8, x); \ +_NOTE(CONSTCOND) } while (0) + +#define BP_GET_TYPE(bp) BF64_GET((bp)->blk_prop, 48, 8) +#define BP_SET_TYPE(bp, x) BF64_SET((bp)->blk_prop, 48, 8, x) + +#define BP_GET_LEVEL(bp) BF64_GET((bp)->blk_prop, 56, 5) +#define BP_SET_LEVEL(bp, x) BF64_SET((bp)->blk_prop, 56, 5, x) + +#define BP_GET_DEDUP(bp) BF64_GET((bp)->blk_prop, 62, 1) +#define BP_SET_DEDUP(bp, x) BF64_SET((bp)->blk_prop, 62, 1, x) + +#define BP_GET_BYTEORDER(bp) BF64_GET((bp)->blk_prop, 63, 1) +#define BP_SET_BYTEORDER(bp, x) BF64_SET((bp)->blk_prop, 63, 1, x) + +#define BP_PHYSICAL_BIRTH(bp) \ + (BP_IS_EMBEDDED(bp) ? 0 : \ + (bp)->blk_phys_birth ? (bp)->blk_phys_birth : (bp)->blk_birth) + +#define BP_SET_BIRTH(bp, logical, physical) \ +{ \ + ASSERT(!BP_IS_EMBEDDED(bp)); \ + (bp)->blk_birth = (logical); \ + (bp)->blk_phys_birth = ((logical) == (physical) ? 0 : (physical)); \ +} + +#define BP_GET_FILL(bp) (BP_IS_EMBEDDED(bp) ? 1 : (bp)->blk_fill) + +#define BP_GET_ASIZE(bp) \ + (BP_IS_EMBEDDED(bp) ? 0 : \ + DVA_GET_ASIZE(&(bp)->blk_dva[0]) + \ + DVA_GET_ASIZE(&(bp)->blk_dva[1]) + \ + DVA_GET_ASIZE(&(bp)->blk_dva[2])) + +#define BP_GET_UCSIZE(bp) \ + ((BP_GET_LEVEL(bp) > 0 || DMU_OT_IS_METADATA(BP_GET_TYPE(bp))) ? \ + BP_GET_PSIZE(bp) : BP_GET_LSIZE(bp)) + +#define BP_GET_NDVAS(bp) \ + (BP_IS_EMBEDDED(bp) ? 0 : \ + !!DVA_GET_ASIZE(&(bp)->blk_dva[0]) + \ + !!DVA_GET_ASIZE(&(bp)->blk_dva[1]) + \ + !!DVA_GET_ASIZE(&(bp)->blk_dva[2])) + +#define BP_COUNT_GANG(bp) \ + (BP_IS_EMBEDDED(bp) ? 0 : \ + (DVA_GET_GANG(&(bp)->blk_dva[0]) + \ + DVA_GET_GANG(&(bp)->blk_dva[1]) + \ + DVA_GET_GANG(&(bp)->blk_dva[2]))) + +#define DVA_EQUAL(dva1, dva2) \ + ((dva1)->dva_word[1] == (dva2)->dva_word[1] && \ + (dva1)->dva_word[0] == (dva2)->dva_word[0]) + +#define BP_EQUAL(bp1, bp2) \ + (BP_PHYSICAL_BIRTH(bp1) == BP_PHYSICAL_BIRTH(bp2) && \ + (bp1)->blk_birth == (bp2)->blk_birth && \ + DVA_EQUAL(&(bp1)->blk_dva[0], &(bp2)->blk_dva[0]) && \ + DVA_EQUAL(&(bp1)->blk_dva[1], &(bp2)->blk_dva[1]) && \ + DVA_EQUAL(&(bp1)->blk_dva[2], &(bp2)->blk_dva[2])) + +#define ZIO_CHECKSUM_EQUAL(zc1, zc2) \ + (0 == (((zc1).zc_word[0] - (zc2).zc_word[0]) | \ + ((zc1).zc_word[1] - (zc2).zc_word[1]) | \ + ((zc1).zc_word[2] - (zc2).zc_word[2]) | \ + ((zc1).zc_word[3] - (zc2).zc_word[3]))) + +#define DVA_IS_VALID(dva) (DVA_GET_ASIZE(dva) != 0) + +#define ZIO_SET_CHECKSUM(zcp, w0, w1, w2, w3) \ +{ \ + (zcp)->zc_word[0] = w0; \ + (zcp)->zc_word[1] = w1; \ + (zcp)->zc_word[2] = w2; \ + (zcp)->zc_word[3] = w3; \ +} + +#define BP_IDENTITY(bp) (ASSERT(!BP_IS_EMBEDDED(bp)), &(bp)->blk_dva[0]) +#define BP_IS_GANG(bp) \ + (BP_IS_EMBEDDED(bp) ? B_FALSE : DVA_GET_GANG(BP_IDENTITY(bp))) +#define DVA_IS_EMPTY(dva) ((dva)->dva_word[0] == 0ULL && \ + (dva)->dva_word[1] == 0ULL) +#define BP_IS_HOLE(bp) \ + (!BP_IS_EMBEDDED(bp) && DVA_IS_EMPTY(BP_IDENTITY(bp))) + +/* BP_IS_RAIDZ(bp) assumes no block compression */ +#define BP_IS_RAIDZ(bp) (DVA_GET_ASIZE(&(bp)->blk_dva[0]) > \ + BP_GET_PSIZE(bp)) + +#define BP_ZERO(bp) \ +{ \ + (bp)->blk_dva[0].dva_word[0] = 0; \ + (bp)->blk_dva[0].dva_word[1] = 0; \ + (bp)->blk_dva[1].dva_word[0] = 0; \ + (bp)->blk_dva[1].dva_word[1] = 0; \ + (bp)->blk_dva[2].dva_word[0] = 0; \ + (bp)->blk_dva[2].dva_word[1] = 0; \ + (bp)->blk_prop = 0; \ + (bp)->blk_pad[0] = 0; \ + (bp)->blk_pad[1] = 0; \ + (bp)->blk_phys_birth = 0; \ + (bp)->blk_birth = 0; \ + (bp)->blk_fill = 0; \ + ZIO_SET_CHECKSUM(&(bp)->blk_cksum, 0, 0, 0, 0); \ +} + +#ifdef _BIG_ENDIAN +#define ZFS_HOST_BYTEORDER (0ULL) +#else +#define ZFS_HOST_BYTEORDER (1ULL) +#endif + +#define BP_SHOULD_BYTESWAP(bp) (BP_GET_BYTEORDER(bp) != ZFS_HOST_BYTEORDER) + +#define BP_SPRINTF_LEN 320 + +/* + * This macro allows code sharing between zfs, libzpool, and mdb. + * 'func' is either snprintf() or mdb_snprintf(). + * 'ws' (whitespace) can be ' ' for single-line format, '\n' for multi-line. + */ +#define SNPRINTF_BLKPTR(func, ws, buf, size, bp, type, checksum, compress) \ +{ \ + static const char *copyname[] = \ + { "zero", "single", "double", "triple" }; \ + int len = 0; \ + int copies = 0; \ + int d; \ + \ + if (bp == NULL) { \ + len += func(buf + len, size - len, ""); \ + } else if (BP_IS_HOLE(bp)) { \ + len += func(buf + len, size - len, \ + "HOLE [L%llu %s] " \ + "size=%llxL birth=%lluL", \ + (u_longlong_t)BP_GET_LEVEL(bp), \ + type, \ + (u_longlong_t)BP_GET_LSIZE(bp), \ + (u_longlong_t)bp->blk_birth); \ + } else if (BP_IS_EMBEDDED(bp)) { \ + len = func(buf + len, size - len, \ + "EMBEDDED [L%llu %s] et=%u %s " \ + "size=%llxL/%llxP birth=%lluL", \ + (u_longlong_t)BP_GET_LEVEL(bp), \ + type, \ + (int)BPE_GET_ETYPE(bp), \ + compress, \ + (u_longlong_t)BPE_GET_LSIZE(bp), \ + (u_longlong_t)BPE_GET_PSIZE(bp), \ + (u_longlong_t)bp->blk_birth); \ + } else { \ + for (d = 0; d < BP_GET_NDVAS(bp); d++) { \ + const dva_t *dva = &bp->blk_dva[d]; \ + if (DVA_IS_VALID(dva)) \ + copies++; \ + len += func(buf + len, size - len, \ + "DVA[%d]=<%llu:%llx:%llx>%c", d, \ + (u_longlong_t)DVA_GET_VDEV(dva), \ + (u_longlong_t)DVA_GET_OFFSET(dva), \ + (u_longlong_t)DVA_GET_ASIZE(dva), \ + ws); \ + } \ + if (BP_IS_GANG(bp) && \ + DVA_GET_ASIZE(&bp->blk_dva[2]) <= \ + DVA_GET_ASIZE(&bp->blk_dva[1]) / 2) \ + copies--; \ + len += func(buf + len, size - len, \ + "[L%llu %s] %s %s %s %s %s %s%c" \ + "size=%llxL/%llxP birth=%lluL/%lluP fill=%llu%c" \ + "cksum=%llx:%llx:%llx:%llx", \ + (u_longlong_t)BP_GET_LEVEL(bp), \ + type, \ + checksum, \ + compress, \ + BP_GET_BYTEORDER(bp) == 0 ? "BE" : "LE", \ + BP_IS_GANG(bp) ? "gang" : "contiguous", \ + BP_GET_DEDUP(bp) ? "dedup" : "unique", \ + copyname[copies], \ + ws, \ + (u_longlong_t)BP_GET_LSIZE(bp), \ + (u_longlong_t)BP_GET_PSIZE(bp), \ + (u_longlong_t)bp->blk_birth, \ + (u_longlong_t)BP_PHYSICAL_BIRTH(bp), \ + (u_longlong_t)BP_GET_FILL(bp), \ + ws, \ + (u_longlong_t)bp->blk_cksum.zc_word[0], \ + (u_longlong_t)bp->blk_cksum.zc_word[1], \ + (u_longlong_t)bp->blk_cksum.zc_word[2], \ + (u_longlong_t)bp->blk_cksum.zc_word[3]); \ + } \ + ASSERT(len < size); \ +} + +#include + +#define BP_GET_BUFC_TYPE(bp) \ + (((BP_GET_LEVEL(bp) > 0) || (DMU_OT_IS_METADATA(BP_GET_TYPE(bp)))) ? \ + ARC_BUFC_METADATA : ARC_BUFC_DATA) + +typedef enum spa_import_type { + SPA_IMPORT_EXISTING, + SPA_IMPORT_ASSEMBLE +} spa_import_type_t; + +/* state manipulation functions */ +extern int spa_open(const char *pool, spa_t **, void *tag); +extern int spa_open_rewind(const char *pool, spa_t **, void *tag, + nvlist_t *policy, nvlist_t **config); +extern int spa_get_stats(const char *pool, nvlist_t **config, char *altroot, + size_t buflen); +extern int spa_create(const char *pool, nvlist_t *config, nvlist_t *props, + nvlist_t *zplprops); +extern int spa_import_rootpool(char *devpath, char *devid); +extern int spa_import(char *pool, nvlist_t *config, nvlist_t *props, + uint64_t flags); +extern nvlist_t *spa_tryimport(nvlist_t *tryconfig); +extern int spa_destroy(char *pool); +extern int spa_export(char *pool, nvlist_t **oldconfig, boolean_t force, + boolean_t hardforce); +extern int spa_reset(char *pool); +extern void spa_async_request(spa_t *spa, int flag); +extern void spa_async_unrequest(spa_t *spa, int flag); +extern void spa_async_suspend(spa_t *spa); +extern void spa_async_resume(spa_t *spa); +extern spa_t *spa_inject_addref(char *pool); +extern void spa_inject_delref(spa_t *spa); +extern void spa_scan_stat_init(spa_t *spa); +extern int spa_scan_get_stats(spa_t *spa, pool_scan_stat_t *ps); + +#define SPA_ASYNC_CONFIG_UPDATE 0x01 +#define SPA_ASYNC_REMOVE 0x02 +#define SPA_ASYNC_PROBE 0x04 +#define SPA_ASYNC_RESILVER_DONE 0x08 +#define SPA_ASYNC_RESILVER 0x10 +#define SPA_ASYNC_AUTOEXPAND 0x20 +#define SPA_ASYNC_REMOVE_DONE 0x40 +#define SPA_ASYNC_REMOVE_STOP 0x80 + +/* + * Controls the behavior of spa_vdev_remove(). + */ +#define SPA_REMOVE_UNSPARE 0x01 +#define SPA_REMOVE_DONE 0x02 + +/* device manipulation */ +extern int spa_vdev_add(spa_t *spa, nvlist_t *nvroot); +extern int spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, + int replacing); +extern int spa_vdev_detach(spa_t *spa, uint64_t guid, uint64_t pguid, + int replace_done); +extern int spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare); +extern boolean_t spa_vdev_remove_active(spa_t *spa); +extern int spa_vdev_setpath(spa_t *spa, uint64_t guid, const char *newpath); +extern int spa_vdev_setfru(spa_t *spa, uint64_t guid, const char *newfru); +extern int spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config, + nvlist_t *props, boolean_t exp); + +/* spare state (which is global across all pools) */ +extern void spa_spare_add(vdev_t *vd); +extern void spa_spare_remove(vdev_t *vd); +extern boolean_t spa_spare_exists(uint64_t guid, uint64_t *pool, int *refcnt); +extern void spa_spare_activate(vdev_t *vd); + +/* L2ARC state (which is global across all pools) */ +extern void spa_l2cache_add(vdev_t *vd); +extern void spa_l2cache_remove(vdev_t *vd); +extern boolean_t spa_l2cache_exists(uint64_t guid, uint64_t *pool); +extern void spa_l2cache_activate(vdev_t *vd); +extern void spa_l2cache_drop(spa_t *spa); + +/* scanning */ +extern int spa_scan(spa_t *spa, pool_scan_func_t func); +extern int spa_scan_stop(spa_t *spa); + +/* spa syncing */ +extern void spa_sync(spa_t *spa, uint64_t txg); /* only for DMU use */ +extern void spa_sync_allpools(void); + +extern int zfs_sync_pass_deferred_free; + +/* spa namespace global mutex */ +extern kmutex_t spa_namespace_lock; + +/* + * SPA configuration functions in spa_config.c + */ + +#define SPA_CONFIG_UPDATE_POOL 0 +#define SPA_CONFIG_UPDATE_VDEVS 1 + +extern void spa_config_sync(spa_t *, boolean_t, boolean_t); +extern void spa_config_load(void); +extern nvlist_t *spa_all_configs(uint64_t *); +extern void spa_config_set(spa_t *spa, nvlist_t *config); +extern nvlist_t *spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, + int getstats); +extern void spa_config_update(spa_t *spa, int what); + +/* + * Miscellaneous SPA routines in spa_misc.c + */ + +/* Namespace manipulation */ +extern spa_t *spa_lookup(const char *name); +extern spa_t *spa_add(const char *name, nvlist_t *config, const char *altroot); +extern void spa_remove(spa_t *spa); +extern spa_t *spa_next(spa_t *prev); + +/* Refcount functions */ +extern void spa_open_ref(spa_t *spa, void *tag); +extern void spa_close(spa_t *spa, void *tag); +extern void spa_async_close(spa_t *spa, void *tag); +extern boolean_t spa_refcount_zero(spa_t *spa); + +#define SCL_NONE 0x00 +#define SCL_CONFIG 0x01 +#define SCL_STATE 0x02 +#define SCL_L2ARC 0x04 /* hack until L2ARC 2.0 */ +#define SCL_ALLOC 0x08 +#define SCL_ZIO 0x10 +#define SCL_FREE 0x20 +#define SCL_VDEV 0x40 +#define SCL_LOCKS 7 +#define SCL_ALL ((1 << SCL_LOCKS) - 1) +#define SCL_STATE_ALL (SCL_STATE | SCL_L2ARC | SCL_ZIO) + +/* Historical pool statistics */ +typedef struct spa_stats_history { + kmutex_t lock; + uint64_t count; + uint64_t size; + kstat_t *kstat; + void *private; + list_t list; +} spa_stats_history_t; + +typedef struct spa_stats { + spa_stats_history_t read_history; + spa_stats_history_t txg_history; + spa_stats_history_t tx_assign_histogram; + spa_stats_history_t io_history; +} spa_stats_t; + +typedef enum txg_state { + TXG_STATE_BIRTH = 0, + TXG_STATE_OPEN = 1, + TXG_STATE_QUIESCED = 2, + TXG_STATE_WAIT_FOR_SYNC = 3, + TXG_STATE_SYNCED = 4, + TXG_STATE_COMMITTED = 5, +} txg_state_t; + +extern void spa_stats_init(spa_t *spa); +extern void spa_stats_destroy(spa_t *spa); +extern void spa_read_history_add(spa_t *spa, const zbookmark_phys_t *zb, + uint32_t aflags); +extern void spa_txg_history_add(spa_t *spa, uint64_t txg, hrtime_t birth_time); +extern int spa_txg_history_set(spa_t *spa, uint64_t txg, + txg_state_t completed_state, hrtime_t completed_time); +extern int spa_txg_history_set_io(spa_t *spa, uint64_t txg, uint64_t nread, + uint64_t nwritten, uint64_t reads, uint64_t writes, uint64_t ndirty); +extern void spa_tx_assign_add_nsecs(spa_t *spa, uint64_t nsecs); + +/* Pool configuration locks */ +extern int spa_config_tryenter(spa_t *spa, int locks, void *tag, krw_t rw); +extern void spa_config_enter(spa_t *spa, int locks, void *tag, krw_t rw); +extern void spa_config_exit(spa_t *spa, int locks, void *tag); +extern int spa_config_held(spa_t *spa, int locks, krw_t rw); + +/* Pool vdev add/remove lock */ +extern uint64_t spa_vdev_enter(spa_t *spa); +extern uint64_t spa_vdev_config_enter(spa_t *spa); +extern void spa_vdev_config_exit(spa_t *spa, vdev_t *vd, uint64_t txg, + int error, char *tag); +extern int spa_vdev_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error); + +/* Pool vdev state change lock */ +extern void spa_vdev_state_enter(spa_t *spa, int oplock); +extern int spa_vdev_state_exit(spa_t *spa, vdev_t *vd, int error); + +/* Log state */ +typedef enum spa_log_state { + SPA_LOG_UNKNOWN = 0, /* unknown log state */ + SPA_LOG_MISSING, /* missing log(s) */ + SPA_LOG_CLEAR, /* clear the log(s) */ + SPA_LOG_GOOD, /* log(s) are good */ +} spa_log_state_t; + +extern spa_log_state_t spa_get_log_state(spa_t *spa); +extern void spa_set_log_state(spa_t *spa, spa_log_state_t state); +extern int spa_offline_log(spa_t *spa); + +/* Log claim callback */ +extern void spa_claim_notify(zio_t *zio); +extern void spa_deadman(void *); + +/* Accessor functions */ +extern boolean_t spa_shutting_down(spa_t *spa); +extern struct dsl_pool *spa_get_dsl(spa_t *spa); +extern boolean_t spa_is_initializing(spa_t *spa); +extern blkptr_t *spa_get_rootblkptr(spa_t *spa); +extern void spa_set_rootblkptr(spa_t *spa, const blkptr_t *bp); +extern void spa_altroot(spa_t *, char *, size_t); +extern int spa_sync_pass(spa_t *spa); +extern char *spa_name(spa_t *spa); +extern uint64_t spa_guid(spa_t *spa); +extern uint64_t spa_load_guid(spa_t *spa); +extern uint64_t spa_last_synced_txg(spa_t *spa); +extern uint64_t spa_first_txg(spa_t *spa); +extern uint64_t spa_syncing_txg(spa_t *spa); +extern uint64_t spa_version(spa_t *spa); +extern pool_state_t spa_state(spa_t *spa); +extern spa_load_state_t spa_load_state(spa_t *spa); +extern uint64_t spa_freeze_txg(spa_t *spa); +extern uint64_t spa_get_asize(spa_t *spa, uint64_t lsize); +extern uint64_t spa_get_dspace(spa_t *spa); +extern uint64_t spa_get_slop_space(spa_t *spa); +extern void spa_update_dspace(spa_t *spa); +extern uint64_t spa_version(spa_t *spa); +extern boolean_t spa_deflate(spa_t *spa); +extern metaslab_class_t *spa_normal_class(spa_t *spa); +extern metaslab_class_t *spa_log_class(spa_t *spa); +extern void spa_evicting_os_register(spa_t *, objset_t *os); +extern void spa_evicting_os_deregister(spa_t *, objset_t *os); +extern void spa_evicting_os_wait(spa_t *spa); +extern int spa_max_replication(spa_t *spa); +extern int spa_prev_software_version(spa_t *spa); +extern uint8_t spa_get_failmode(spa_t *spa); +extern boolean_t spa_suspended(spa_t *spa); +extern uint64_t spa_bootfs(spa_t *spa); +extern uint64_t spa_delegation(spa_t *spa); +extern objset_t *spa_meta_objset(spa_t *spa); +extern uint64_t spa_deadman_synctime(spa_t *spa); + +/* Miscellaneous support routines */ +extern void spa_activate_mos_feature(spa_t *spa, const char *feature, + dmu_tx_t *tx); +extern void spa_deactivate_mos_feature(spa_t *spa, const char *feature); +extern int spa_rename(const char *oldname, const char *newname); +extern spa_t *spa_by_guid(uint64_t pool_guid, uint64_t device_guid); +extern boolean_t spa_guid_exists(uint64_t pool_guid, uint64_t device_guid); +extern char *spa_strdup(const char *); +extern void spa_strfree(char *); +extern uint64_t spa_get_random(uint64_t range); +extern uint64_t spa_generate_guid(spa_t *spa); +extern void snprintf_blkptr(char *buf, size_t buflen, const blkptr_t *bp); +extern void spa_freeze(spa_t *spa); +extern int spa_change_guid(spa_t *spa); +extern void spa_upgrade(spa_t *spa, uint64_t version); +extern void spa_evict_all(void); +extern vdev_t *spa_lookup_by_guid(spa_t *spa, uint64_t guid, + boolean_t l2cache); +extern boolean_t spa_has_spare(spa_t *, uint64_t guid); +extern uint64_t dva_get_dsize_sync(spa_t *spa, const dva_t *dva); +extern uint64_t bp_get_dsize_sync(spa_t *spa, const blkptr_t *bp); +extern uint64_t bp_get_dsize(spa_t *spa, const blkptr_t *bp); +extern boolean_t spa_has_slogs(spa_t *spa); +extern boolean_t spa_is_root(spa_t *spa); +extern boolean_t spa_writeable(spa_t *spa); +extern boolean_t spa_has_pending_synctask(spa_t *spa); +extern int spa_maxblocksize(spa_t *spa); +extern void zfs_blkptr_verify(spa_t *spa, const blkptr_t *bp); + +extern int spa_mode(spa_t *spa); +extern uint64_t strtonum(const char *str, char **nptr); + +extern char *spa_his_ievent_table[]; + +extern void spa_history_create_obj(spa_t *spa, dmu_tx_t *tx); +extern int spa_history_get(spa_t *spa, uint64_t *offset, uint64_t *len_read, + char *his_buf); +extern int spa_history_log(spa_t *spa, const char *his_buf); +extern int spa_history_log_nvl(spa_t *spa, nvlist_t *nvl); +extern void spa_history_log_version(spa_t *spa, const char *operation); +extern void spa_history_log_internal(spa_t *spa, const char *operation, + dmu_tx_t *tx, const char *fmt, ...); +extern void spa_history_log_internal_ds(struct dsl_dataset *ds, const char *op, + dmu_tx_t *tx, const char *fmt, ...); +extern void spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation, + dmu_tx_t *tx, const char *fmt, ...); + +/* error handling */ +struct zbookmark_phys; +extern void spa_log_error(spa_t *spa, zio_t *zio); +extern void zfs_ereport_post(const char *class, spa_t *spa, vdev_t *vd, + zio_t *zio, uint64_t stateoroffset, uint64_t length); +extern void zfs_post_remove(spa_t *spa, vdev_t *vd); +extern void zfs_post_state_change(spa_t *spa, vdev_t *vd); +extern void zfs_post_autoreplace(spa_t *spa, vdev_t *vd); +extern uint64_t spa_get_errlog_size(spa_t *spa); +extern int spa_get_errlog(spa_t *spa, void *uaddr, size_t *count); +extern void spa_errlog_rotate(spa_t *spa); +extern void spa_errlog_drain(spa_t *spa); +extern void spa_errlog_sync(spa_t *spa, uint64_t txg); +extern void spa_get_errlists(spa_t *spa, avl_tree_t *last, avl_tree_t *scrub); + +/* vdev cache */ +extern void vdev_cache_stat_init(void); +extern void vdev_cache_stat_fini(void); + +/* Initialization and termination */ +extern void spa_init(int flags); +extern void spa_fini(void); +extern void spa_boot_init(void); + +/* properties */ +extern int spa_prop_set(spa_t *spa, nvlist_t *nvp); +extern int spa_prop_get(spa_t *spa, nvlist_t **nvp); +extern void spa_prop_clear_bootfs(spa_t *spa, uint64_t obj, dmu_tx_t *tx); +extern void spa_configfile_set(spa_t *, nvlist_t *, boolean_t); + +/* asynchronous event notification */ +extern void spa_event_notify(spa_t *spa, vdev_t *vdev, const char *name); + +#ifdef ZFS_DEBUG +#define dprintf_bp(bp, fmt, ...) do { \ + if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ + char *__blkbuf = kmem_alloc(BP_SPRINTF_LEN, KM_SLEEP); \ + snprintf_blkptr(__blkbuf, BP_SPRINTF_LEN, (bp)); \ + dprintf(fmt " %s\n", __VA_ARGS__, __blkbuf); \ + kmem_free(__blkbuf, BP_SPRINTF_LEN); \ + } \ +_NOTE(CONSTCOND) } while (0) +#else +#define dprintf_bp(bp, fmt, ...) +#endif + +extern boolean_t spa_debug_enabled(spa_t *spa); +#define spa_dbgmsg(spa, ...) \ +{ \ + if (spa_debug_enabled(spa)) \ + zfs_dbgmsg(__VA_ARGS__); \ +} + +extern int spa_mode_global; /* mode, e.g. FREAD | FWRITE */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SPA_H */ --- linux-4.4.0.orig/zfs/include/sys/spa_boot.h +++ linux-4.4.0/zfs/include/sys/spa_boot.h @@ -0,0 +1,42 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_SPA_BOOT_H +#define _SYS_SPA_BOOT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern char *spa_get_bootprop(char *prop); +extern void spa_free_bootprop(char *prop); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SPA_BOOT_H */ --- linux-4.4.0.orig/zfs/include/sys/spa_impl.h +++ linux-4.4.0/zfs/include/sys/spa_impl.h @@ -0,0 +1,278 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_SPA_IMPL_H +#define _SYS_SPA_IMPL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct spa_error_entry { + zbookmark_phys_t se_bookmark; + char *se_name; + avl_node_t se_avl; +} spa_error_entry_t; + +typedef struct spa_history_phys { + uint64_t sh_pool_create_len; /* ending offset of zpool create */ + uint64_t sh_phys_max_off; /* physical EOF */ + uint64_t sh_bof; /* logical BOF */ + uint64_t sh_eof; /* logical EOF */ + uint64_t sh_records_lost; /* num of records overwritten */ +} spa_history_phys_t; + +struct spa_aux_vdev { + uint64_t sav_object; /* MOS object for device list */ + nvlist_t *sav_config; /* cached device config */ + vdev_t **sav_vdevs; /* devices */ + int sav_count; /* number devices */ + boolean_t sav_sync; /* sync the device list */ + nvlist_t **sav_pending; /* pending device additions */ + uint_t sav_npending; /* # pending devices */ +}; + +typedef struct spa_config_lock { + kmutex_t scl_lock; + kthread_t *scl_writer; + int scl_write_wanted; + kcondvar_t scl_cv; + refcount_t scl_count; +} spa_config_lock_t; + +typedef struct spa_config_dirent { + list_node_t scd_link; + char *scd_path; +} spa_config_dirent_t; + +typedef enum zio_taskq_type { + ZIO_TASKQ_ISSUE = 0, + ZIO_TASKQ_ISSUE_HIGH, + ZIO_TASKQ_INTERRUPT, + ZIO_TASKQ_INTERRUPT_HIGH, + ZIO_TASKQ_TYPES +} zio_taskq_type_t; + +/* + * State machine for the zpool-poolname process. The states transitions + * are done as follows: + * + * From To Routine + * PROC_NONE -> PROC_CREATED spa_activate() + * PROC_CREATED -> PROC_ACTIVE spa_thread() + * PROC_ACTIVE -> PROC_DEACTIVATE spa_deactivate() + * PROC_DEACTIVATE -> PROC_GONE spa_thread() + * PROC_GONE -> PROC_NONE spa_deactivate() + */ +typedef enum spa_proc_state { + SPA_PROC_NONE, /* spa_proc = &p0, no process created */ + SPA_PROC_CREATED, /* spa_activate() has proc, is waiting */ + SPA_PROC_ACTIVE, /* taskqs created, spa_proc set */ + SPA_PROC_DEACTIVATE, /* spa_deactivate() requests process exit */ + SPA_PROC_GONE /* spa_thread() is exiting, spa_proc = &p0 */ +} spa_proc_state_t; + +typedef struct spa_taskqs { + uint_t stqs_count; + taskq_t **stqs_taskq; +} spa_taskqs_t; + +struct spa { + /* + * Fields protected by spa_namespace_lock. + */ + char spa_name[MAXNAMELEN]; /* pool name */ + char *spa_comment; /* comment */ + avl_node_t spa_avl; /* node in spa_namespace_avl */ + nvlist_t *spa_config; /* last synced config */ + nvlist_t *spa_config_syncing; /* currently syncing config */ + nvlist_t *spa_config_splitting; /* config for splitting */ + nvlist_t *spa_load_info; /* info and errors from load */ + uint64_t spa_config_txg; /* txg of last config change */ + int spa_sync_pass; /* iterate-to-convergence */ + pool_state_t spa_state; /* pool state */ + int spa_inject_ref; /* injection references */ + uint8_t spa_sync_on; /* sync threads are running */ + spa_load_state_t spa_load_state; /* current load operation */ + uint64_t spa_import_flags; /* import specific flags */ + spa_taskqs_t spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; + dsl_pool_t *spa_dsl_pool; + boolean_t spa_is_initializing; /* true while opening pool */ + metaslab_class_t *spa_normal_class; /* normal data class */ + metaslab_class_t *spa_log_class; /* intent log data class */ + uint64_t spa_first_txg; /* first txg after spa_open() */ + uint64_t spa_final_txg; /* txg of export/destroy */ + uint64_t spa_freeze_txg; /* freeze pool at this txg */ + uint64_t spa_load_max_txg; /* best initial ub_txg */ + uint64_t spa_claim_max_txg; /* highest claimed birth txg */ + timespec_t spa_loaded_ts; /* 1st successful open time */ + objset_t *spa_meta_objset; /* copy of dp->dp_meta_objset */ + kmutex_t spa_evicting_os_lock; /* Evicting objset list lock */ + list_t spa_evicting_os_list; /* Objsets being evicted. */ + kcondvar_t spa_evicting_os_cv; /* Objset Eviction Completion */ + txg_list_t spa_vdev_txg_list; /* per-txg dirty vdev list */ + vdev_t *spa_root_vdev; /* top-level vdev container */ + int spa_min_ashift; /* of vdevs in normal class */ + int spa_max_ashift; /* of vdevs in normal class */ + uint64_t spa_config_guid; /* config pool guid */ + uint64_t spa_load_guid; /* spa_load initialized guid */ + uint64_t spa_last_synced_guid; /* last synced guid */ + list_t spa_config_dirty_list; /* vdevs with dirty config */ + list_t spa_state_dirty_list; /* vdevs with dirty state */ + spa_aux_vdev_t spa_spares; /* hot spares */ + spa_aux_vdev_t spa_l2cache; /* L2ARC cache devices */ + nvlist_t *spa_label_features; /* Features for reading MOS */ + uint64_t spa_config_object; /* MOS object for pool config */ + uint64_t spa_config_generation; /* config generation number */ + uint64_t spa_syncing_txg; /* txg currently syncing */ + bpobj_t spa_deferred_bpobj; /* deferred-free bplist */ + bplist_t spa_free_bplist[TXG_SIZE]; /* bplist of stuff to free */ + uberblock_t spa_ubsync; /* last synced uberblock */ + uberblock_t spa_uberblock; /* current uberblock */ + boolean_t spa_extreme_rewind; /* rewind past deferred frees */ + uint64_t spa_last_io; /* lbolt of last non-scan I/O */ + kmutex_t spa_scrub_lock; /* resilver/scrub lock */ + uint64_t spa_scrub_inflight; /* in-flight scrub I/Os */ + kcondvar_t spa_scrub_io_cv; /* scrub I/O completion */ + uint8_t spa_scrub_active; /* active or suspended? */ + uint8_t spa_scrub_type; /* type of scrub we're doing */ + uint8_t spa_scrub_finished; /* indicator to rotate logs */ + uint8_t spa_scrub_started; /* started since last boot */ + uint8_t spa_scrub_reopen; /* scrub doing vdev_reopen */ + uint64_t spa_scan_pass_start; /* start time per pass/reboot */ + uint64_t spa_scan_pass_exam; /* examined bytes per pass */ + kmutex_t spa_async_lock; /* protect async state */ + kthread_t *spa_async_thread; /* thread doing async task */ + int spa_async_suspended; /* async tasks suspended */ + kcondvar_t spa_async_cv; /* wait for thread_exit() */ + uint16_t spa_async_tasks; /* async task mask */ + char *spa_root; /* alternate root directory */ + uint64_t spa_ena; /* spa-wide ereport ENA */ + int spa_last_open_failed; /* error if last open failed */ + uint64_t spa_last_ubsync_txg; /* "best" uberblock txg */ + uint64_t spa_last_ubsync_txg_ts; /* timestamp from that ub */ + uint64_t spa_load_txg; /* ub txg that loaded */ + uint64_t spa_load_txg_ts; /* timestamp from that ub */ + uint64_t spa_load_meta_errors; /* verify metadata err count */ + uint64_t spa_load_data_errors; /* verify data err count */ + uint64_t spa_verify_min_txg; /* start txg of verify scrub */ + kmutex_t spa_errlog_lock; /* error log lock */ + uint64_t spa_errlog_last; /* last error log object */ + uint64_t spa_errlog_scrub; /* scrub error log object */ + kmutex_t spa_errlist_lock; /* error list/ereport lock */ + avl_tree_t spa_errlist_last; /* last error list */ + avl_tree_t spa_errlist_scrub; /* scrub error list */ + uint64_t spa_deflate; /* should we deflate? */ + uint64_t spa_history; /* history object */ + kmutex_t spa_history_lock; /* history lock */ + vdev_t *spa_pending_vdev; /* pending vdev additions */ + kmutex_t spa_props_lock; /* property lock */ + uint64_t spa_pool_props_object; /* object for properties */ + uint64_t spa_bootfs; /* default boot filesystem */ + uint64_t spa_failmode; /* failure mode for the pool */ + uint64_t spa_delegation; /* delegation on/off */ + list_t spa_config_list; /* previous cache file(s) */ + /* per-CPU array of root of async I/O: */ + zio_t **spa_async_zio_root; + zio_t *spa_suspend_zio_root; /* root of all suspended I/O */ + kmutex_t spa_suspend_lock; /* protects suspend_zio_root */ + kcondvar_t spa_suspend_cv; /* notification of resume */ + uint8_t spa_suspended; /* pool is suspended */ + uint8_t spa_claiming; /* pool is doing zil_claim() */ + boolean_t spa_debug; /* debug enabled? */ + boolean_t spa_is_root; /* pool is root */ + int spa_minref; /* num refs when first opened */ + int spa_mode; /* FREAD | FWRITE */ + spa_log_state_t spa_log_state; /* log state */ + uint64_t spa_autoexpand; /* lun expansion on/off */ + ddt_t *spa_ddt[ZIO_CHECKSUM_FUNCTIONS]; /* in-core DDTs */ + uint64_t spa_ddt_stat_object; /* DDT statistics */ + uint64_t spa_dedup_ditto; /* dedup ditto threshold */ + uint64_t spa_dedup_checksum; /* default dedup checksum */ + uint64_t spa_dspace; /* dspace in normal class */ + kmutex_t spa_vdev_top_lock; /* dueling offline/remove */ + kmutex_t spa_proc_lock; /* protects spa_proc* */ + kcondvar_t spa_proc_cv; /* spa_proc_state transitions */ + spa_proc_state_t spa_proc_state; /* see definition */ + proc_t *spa_proc; /* "zpool-poolname" process */ + uint64_t spa_did; /* if procp != p0, did of t1 */ + boolean_t spa_autoreplace; /* autoreplace set in open */ + int spa_vdev_locks; /* locks grabbed */ + uint64_t spa_creation_version; /* version at pool creation */ + uint64_t spa_prev_software_version; /* See ub_software_version */ + uint64_t spa_feat_for_write_obj; /* required to write to pool */ + uint64_t spa_feat_for_read_obj; /* required to read from pool */ + uint64_t spa_feat_desc_obj; /* Feature descriptions */ + uint64_t spa_feat_enabled_txg_obj; /* Feature enabled txg */ + kmutex_t spa_feat_stats_lock; /* protects spa_feat_stats */ + nvlist_t *spa_feat_stats; /* Cache of enabled features */ + /* cache feature refcounts */ + uint64_t spa_feat_refcount_cache[SPA_FEATURES]; + taskqid_t spa_deadman_tqid; /* Task id */ + uint64_t spa_deadman_calls; /* number of deadman calls */ + hrtime_t spa_sync_starttime; /* starting time of spa_sync */ + uint64_t spa_deadman_synctime; /* deadman expiration timer */ + uint64_t spa_errata; /* errata issues detected */ + spa_stats_t spa_stats; /* assorted spa statistics */ + + /* + * spa_refcount & spa_config_lock must be the last elements + * because refcount_t changes size based on compilation options. + * In order for the MDB module to function correctly, the other + * fields must remain in the same location. + */ + spa_config_lock_t spa_config_lock[SCL_LOCKS]; /* config changes */ + refcount_t spa_refcount; /* number of opens */ +}; + +extern char *spa_config_path; + +extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent); +extern void spa_taskq_dispatch_sync(spa_t *, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags); + + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SPA_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/space_map.h +++ linux-4.4.0/zfs/include/sys/space_map.h @@ -0,0 +1,164 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_SPACE_MAP_H +#define _SYS_SPACE_MAP_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The size of the space map object has increased to include a histogram. + * The SPACE_MAP_SIZE_V0 designates the original size and is used to + * maintain backward compatibility. + */ +#define SPACE_MAP_SIZE_V0 (3 * sizeof (uint64_t)) +#define SPACE_MAP_HISTOGRAM_SIZE 32 + +/* + * The space_map_phys is the on-disk representation of the space map. + * Consumers of space maps should never reference any of the members of this + * structure directly. These members may only be updated in syncing context. + * + * Note the smp_object is no longer used but remains in the structure + * for backward compatibility. + */ +typedef struct space_map_phys { + uint64_t smp_object; /* on-disk space map object */ + uint64_t smp_objsize; /* size of the object */ + uint64_t smp_alloc; /* space allocated from the map */ + uint64_t smp_pad[5]; /* reserved */ + + /* + * The smp_histogram maintains a histogram of free regions. Each + * bucket, smp_histogram[i], contains the number of free regions + * whose size is: + * 2^(i+sm_shift) <= size of free region in bytes < 2^(i+sm_shift+1) + */ + uint64_t smp_histogram[SPACE_MAP_HISTOGRAM_SIZE]; +} space_map_phys_t; + +/* + * The space map object defines a region of space, its size, how much is + * allocated, and the on-disk object that stores this information. + * Consumers of space maps may only access the members of this structure. + */ +typedef struct space_map { + uint64_t sm_start; /* start of map */ + uint64_t sm_size; /* size of map */ + uint8_t sm_shift; /* unit shift */ + uint64_t sm_length; /* synced length */ + uint64_t sm_alloc; /* synced space allocated */ + objset_t *sm_os; /* objset for this map */ + uint64_t sm_object; /* object id for this map */ + uint32_t sm_blksz; /* block size for space map */ + dmu_buf_t *sm_dbuf; /* space_map_phys_t dbuf */ + space_map_phys_t *sm_phys; /* on-disk space map */ + kmutex_t *sm_lock; /* pointer to lock that protects map */ +} space_map_t; + +/* + * debug entry + * + * 1 3 10 50 + * ,---+--------+------------+---------------------------------. + * | 1 | action | syncpass | txg (lower bits) | + * `---+--------+------------+---------------------------------' + * 63 62 60 59 50 49 0 + * + * + * non-debug entry + * + * 1 47 1 15 + * ,-----------------------------------------------------------. + * | 0 | offset (sm_shift units) | type | run | + * `-----------------------------------------------------------' + * 63 62 17 16 15 0 + */ + +/* All this stuff takes and returns bytes */ +#define SM_RUN_DECODE(x) (BF64_DECODE(x, 0, 15) + 1) +#define SM_RUN_ENCODE(x) BF64_ENCODE((x) - 1, 0, 15) +#define SM_TYPE_DECODE(x) BF64_DECODE(x, 15, 1) +#define SM_TYPE_ENCODE(x) BF64_ENCODE(x, 15, 1) +#define SM_OFFSET_DECODE(x) BF64_DECODE(x, 16, 47) +#define SM_OFFSET_ENCODE(x) BF64_ENCODE(x, 16, 47) +#define SM_DEBUG_DECODE(x) BF64_DECODE(x, 63, 1) +#define SM_DEBUG_ENCODE(x) BF64_ENCODE(x, 63, 1) + +#define SM_DEBUG_ACTION_DECODE(x) BF64_DECODE(x, 60, 3) +#define SM_DEBUG_ACTION_ENCODE(x) BF64_ENCODE(x, 60, 3) + +#define SM_DEBUG_SYNCPASS_DECODE(x) BF64_DECODE(x, 50, 10) +#define SM_DEBUG_SYNCPASS_ENCODE(x) BF64_ENCODE(x, 50, 10) + +#define SM_DEBUG_TXG_DECODE(x) BF64_DECODE(x, 0, 50) +#define SM_DEBUG_TXG_ENCODE(x) BF64_ENCODE(x, 0, 50) + +#define SM_RUN_MAX SM_RUN_DECODE(~0ULL) + +typedef enum { + SM_ALLOC, + SM_FREE +} maptype_t; + +int space_map_load(space_map_t *sm, range_tree_t *rt, maptype_t maptype); + +void space_map_histogram_clear(space_map_t *sm); +void space_map_histogram_add(space_map_t *sm, range_tree_t *rt, + dmu_tx_t *tx); + +void space_map_update(space_map_t *sm); + +uint64_t space_map_object(space_map_t *sm); +uint64_t space_map_allocated(space_map_t *sm); +uint64_t space_map_length(space_map_t *sm); + +void space_map_write(space_map_t *sm, range_tree_t *rt, maptype_t maptype, + dmu_tx_t *tx); +void space_map_truncate(space_map_t *sm, dmu_tx_t *tx); +uint64_t space_map_alloc(objset_t *os, dmu_tx_t *tx); +void space_map_free(space_map_t *sm, dmu_tx_t *tx); + +int space_map_open(space_map_t **smp, objset_t *os, uint64_t object, + uint64_t start, uint64_t size, uint8_t shift, kmutex_t *lp); +void space_map_close(space_map_t *sm); + +int64_t space_map_alloc_delta(space_map_t *sm); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SPACE_MAP_H */ --- linux-4.4.0.orig/zfs/include/sys/space_reftree.h +++ linux-4.4.0/zfs/include/sys/space_reftree.h @@ -0,0 +1,57 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_SPACE_REFTREE_H +#define _SYS_SPACE_REFTREE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct space_ref { + avl_node_t sr_node; /* AVL node */ + uint64_t sr_offset; /* range offset (start or end) */ + int64_t sr_refcnt; /* associated reference count */ +} space_ref_t; + +void space_reftree_create(avl_tree_t *t); +void space_reftree_destroy(avl_tree_t *t); +void space_reftree_add_seg(avl_tree_t *t, uint64_t start, uint64_t end, + int64_t refcnt); +void space_reftree_add_map(avl_tree_t *t, range_tree_t *rt, int64_t refcnt); +void space_reftree_generate_map(avl_tree_t *t, range_tree_t *rt, + int64_t minref); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_SPACE_REFTREE_H */ --- linux-4.4.0.orig/zfs/include/sys/trace.h +++ linux-4.4.0/zfs/include/sys/trace.h @@ -0,0 +1,68 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#if !defined(_TRACE_ZFS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ZFS_H + +#include +#include + +/* + * The sys/trace_dbgmsg.h header defines tracepoint events for + * dprintf(), dbgmsg(), and SET_ERROR(). + */ +#define _SYS_TRACE_DBGMSG_INDIRECT +#include +#undef _SYS_TRACE_DBGMSG_INDIRECT + +/* + * Redefine the DTRACE_PROBE* functions to use Linux tracepoints + */ +#undef DTRACE_PROBE1 +#define DTRACE_PROBE1(name, t1, arg1) \ + trace_zfs_##name((arg1)) + +#undef DTRACE_PROBE2 +#define DTRACE_PROBE2(name, t1, arg1, t2, arg2) \ + trace_zfs_##name((arg1), (arg2)) + +#undef DTRACE_PROBE3 +#define DTRACE_PROBE3(name, t1, arg1, t2, arg2, t3, arg3) \ + trace_zfs_##name((arg1), (arg2), (arg3)) + +#undef DTRACE_PROBE4 +#define DTRACE_PROBE4(name, t1, arg1, t2, arg2, t3, arg3, t4, arg4) \ + trace_zfs_##name((arg1), (arg2), (arg3), (arg4)) + +#endif /* _TRACE_ZFS_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_acl.h +++ linux-4.4.0/zfs/include/sys/trace_acl.h @@ -0,0 +1,165 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_acl + +#if !defined(_TRACE_ACL_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ACL_H + +#include +#include + +/* + * Generic support for three argument tracepoints of the form: + * + * DTRACE_PROBE3(..., + * znode_t *, ..., + * zfs_ace_hdr_t *, ..., + * uint32_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_ace_class, + TP_PROTO(znode_t *zn, zfs_ace_hdr_t *ace, uint32_t mask_matched), + TP_ARGS(zn, ace, mask_matched), + TP_STRUCT__entry( + __field(uint64_t, z_id) + __field(uint8_t, z_unlinked) + __field(uint8_t, z_atime_dirty) + __field(uint8_t, z_zn_prefetch) + __field(uint8_t, z_moved) + __field(uint_t, z_blksz) + __field(uint_t, z_seq) + __field(uint64_t, z_mapcnt) + __field(uint64_t, z_gen) + __field(uint64_t, z_size) + __array(uint64_t, z_atime, 2) + __field(uint64_t, z_links) + __field(uint64_t, z_pflags) + __field(uint64_t, z_uid) + __field(uint64_t, z_gid) + __field(uint32_t, z_sync_cnt) + __field(mode_t, z_mode) + __field(boolean_t, z_is_sa) + __field(boolean_t, z_is_zvol) + __field(boolean_t, z_is_mapped) + __field(boolean_t, z_is_ctldir) + __field(boolean_t, z_is_stale) + + __field(unsigned long, i_ino) + __field(unsigned int, i_nlink) + __field(u64, i_version) + __field(loff_t, i_size) + __field(unsigned int, i_blkbits) + __field(unsigned short, i_bytes) + __field(umode_t, i_mode) + __field(__u32, i_generation) + + __field(uint16_t, z_type) + __field(uint16_t, z_flags) + __field(uint32_t, z_access_mask) + + __field(uint32_t, mask_matched) + ), + TP_fast_assign( + __entry->z_id = zn->z_id; + __entry->z_unlinked = zn->z_unlinked; + __entry->z_atime_dirty = zn->z_atime_dirty; + __entry->z_zn_prefetch = zn->z_zn_prefetch; + __entry->z_moved = zn->z_moved; + __entry->z_blksz = zn->z_blksz; + __entry->z_seq = zn->z_seq; + __entry->z_mapcnt = zn->z_mapcnt; + __entry->z_gen = zn->z_gen; + __entry->z_size = zn->z_size; + __entry->z_atime[0] = zn->z_atime[0]; + __entry->z_atime[1] = zn->z_atime[1]; + __entry->z_links = zn->z_links; + __entry->z_pflags = zn->z_pflags; + __entry->z_uid = zn->z_uid; + __entry->z_gid = zn->z_gid; + __entry->z_sync_cnt = zn->z_sync_cnt; + __entry->z_mode = zn->z_mode; + __entry->z_is_sa = zn->z_is_sa; + __entry->z_is_zvol = zn->z_is_zvol; + __entry->z_is_mapped = zn->z_is_mapped; + __entry->z_is_ctldir = zn->z_is_ctldir; + __entry->z_is_stale = zn->z_is_stale; + + __entry->i_ino = zn->z_inode.i_ino; + __entry->i_nlink = zn->z_inode.i_nlink; + __entry->i_version = zn->z_inode.i_version; + __entry->i_size = zn->z_inode.i_size; + __entry->i_blkbits = zn->z_inode.i_blkbits; + __entry->i_bytes = zn->z_inode.i_bytes; + __entry->i_mode = zn->z_inode.i_mode; + __entry->i_generation = zn->z_inode.i_generation; + + __entry->z_type = ace->z_type; + __entry->z_flags = ace->z_flags; + __entry->z_access_mask = ace->z_access_mask; + + __entry->mask_matched = mask_matched; + ), + TP_printk("zn { id %llu unlinked %u atime_dirty %u " + "zn_prefetch %u moved %u blksz %u seq %u " + "mapcnt %llu gen %llu size %llu atime 0x%llx:0x%llx " + "links %llu pflags %llu uid %llu gid %llu " + "sync_cnt %u mode 0x%x is_sa %d is_zvol %d " + "is_mapped %d is_ctldir %d is_stale %d inode { " + "ino %lu nlink %u version %llu size %lli blkbits %u " + "bytes %u mode 0x%x generation %x } } ace { type %u " + "flags %u access_mask %u } mask_matched %u", + __entry->z_id, __entry->z_unlinked, __entry->z_atime_dirty, + __entry->z_zn_prefetch, __entry->z_moved, __entry->z_blksz, + __entry->z_seq, __entry->z_mapcnt, __entry->z_gen, + __entry->z_size, __entry->z_atime[0], __entry->z_atime[1], + __entry->z_links, __entry->z_pflags, __entry->z_uid, + __entry->z_gid, __entry->z_sync_cnt, __entry->z_mode, + __entry->z_is_sa, __entry->z_is_zvol, __entry->z_is_mapped, + __entry->z_is_ctldir, __entry->z_is_stale, __entry->i_ino, + __entry->i_nlink, __entry->i_version, __entry->i_size, + __entry->i_blkbits, __entry->i_bytes, __entry->i_mode, + __entry->i_generation, __entry->z_type, __entry->z_flags, + __entry->z_access_mask, __entry->mask_matched) +); + +#define DEFINE_ACE_EVENT(name) \ +DEFINE_EVENT(zfs_ace_class, name, \ + TP_PROTO(znode_t *zn, zfs_ace_hdr_t *ace, uint32_t mask_matched), \ + TP_ARGS(zn, ace, mask_matched)) +DEFINE_ACE_EVENT(zfs_zfs__ace__denies); +DEFINE_ACE_EVENT(zfs_zfs__ace__allows); + +#endif /* _TRACE_ACL_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_acl +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_arc.h +++ linux-4.4.0/zfs/include/sys/trace_arc.h @@ -0,0 +1,422 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#include + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_arc + +#if !defined(_TRACE_ARC_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ARC_H + +#include +#include + +/* + * Generic support for one argument tracepoints of the form: + * + * DTRACE_PROBE1(..., + * arc_buf_hdr_t *, ...); + */ + +DECLARE_EVENT_CLASS(zfs_arc_buf_hdr_class, + TP_PROTO(arc_buf_hdr_t *ab), + TP_ARGS(ab), + TP_STRUCT__entry( + __array(uint64_t, hdr_dva_word, 2) + __field(uint64_t, hdr_birth) + __field(uint32_t, hdr_flags) + __field(uint32_t, hdr_datacnt) + __field(arc_buf_contents_t, hdr_type) + __field(uint64_t, hdr_size) + __field(uint64_t, hdr_spa) + __field(arc_state_type_t, hdr_state_type) + __field(clock_t, hdr_access) + __field(uint32_t, hdr_mru_hits) + __field(uint32_t, hdr_mru_ghost_hits) + __field(uint32_t, hdr_mfu_hits) + __field(uint32_t, hdr_mfu_ghost_hits) + __field(uint32_t, hdr_l2_hits) + __field(int64_t, hdr_refcount) + ), + TP_fast_assign( + __entry->hdr_dva_word[0] = ab->b_dva.dva_word[0]; + __entry->hdr_dva_word[1] = ab->b_dva.dva_word[1]; + __entry->hdr_birth = ab->b_birth; + __entry->hdr_flags = ab->b_flags; + __entry->hdr_datacnt = ab->b_l1hdr.b_datacnt; + __entry->hdr_size = ab->b_size; + __entry->hdr_spa = ab->b_spa; + __entry->hdr_state_type = ab->b_l1hdr.b_state->arcs_state; + __entry->hdr_access = ab->b_l1hdr.b_arc_access; + __entry->hdr_mru_hits = ab->b_l1hdr.b_mru_hits; + __entry->hdr_mru_ghost_hits = ab->b_l1hdr.b_mru_ghost_hits; + __entry->hdr_mfu_hits = ab->b_l1hdr.b_mfu_hits; + __entry->hdr_mfu_ghost_hits = ab->b_l1hdr.b_mfu_ghost_hits; + __entry->hdr_l2_hits = ab->b_l1hdr.b_l2_hits; + __entry->hdr_refcount = ab->b_l1hdr.b_refcnt.rc_count; + ), + TP_printk("hdr { dva 0x%llx:0x%llx birth %llu " + "flags 0x%x datacnt %u type %u size %llu spa %llu " + "state_type %u access %lu mru_hits %u mru_ghost_hits %u " + "mfu_hits %u mfu_ghost_hits %u l2_hits %u refcount %lli }", + __entry->hdr_dva_word[0], __entry->hdr_dva_word[1], + __entry->hdr_birth, __entry->hdr_flags, + __entry->hdr_datacnt, __entry->hdr_type, __entry->hdr_size, + __entry->hdr_spa, __entry->hdr_state_type, + __entry->hdr_access, __entry->hdr_mru_hits, + __entry->hdr_mru_ghost_hits, __entry->hdr_mfu_hits, + __entry->hdr_mfu_ghost_hits, __entry->hdr_l2_hits, + __entry->hdr_refcount) +); + +#define DEFINE_ARC_BUF_HDR_EVENT(name) \ +DEFINE_EVENT(zfs_arc_buf_hdr_class, name, \ + TP_PROTO(arc_buf_hdr_t *ab), \ + TP_ARGS(ab)) +DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__hit); +DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__evict); +DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__delete); +DEFINE_ARC_BUF_HDR_EVENT(zfs_new_state__mru); +DEFINE_ARC_BUF_HDR_EVENT(zfs_new_state__mfu); +DEFINE_ARC_BUF_HDR_EVENT(zfs_l2arc__hit); +DEFINE_ARC_BUF_HDR_EVENT(zfs_l2arc__miss); + +/* + * Generic support for two argument tracepoints of the form: + * + * DTRACE_PROBE2(..., + * vdev_t *, ..., + * zio_t *, ...); + */ + +#define ZIO_TP_STRUCT_ENTRY \ + __field(zio_type_t, zio_type) \ + __field(int, zio_cmd) \ + __field(zio_priority_t, zio_priority) \ + __field(uint64_t, zio_size) \ + __field(uint64_t, zio_orig_size) \ + __field(uint64_t, zio_offset) \ + __field(hrtime_t, zio_timestamp) \ + __field(hrtime_t, zio_delta) \ + __field(uint64_t, zio_delay) \ + __field(enum zio_flag, zio_flags) \ + __field(enum zio_stage, zio_stage) \ + __field(enum zio_stage, zio_pipeline) \ + __field(enum zio_flag, zio_orig_flags) \ + __field(enum zio_stage, zio_orig_stage) \ + __field(enum zio_stage, zio_orig_pipeline) \ + __field(uint8_t, zio_reexecute) \ + __field(uint64_t, zio_txg) \ + __field(int, zio_error) \ + __field(uint64_t, zio_ena) \ + \ + __field(enum zio_checksum, zp_checksum) \ + __field(enum zio_compress, zp_compress) \ + __field(dmu_object_type_t, zp_type) \ + __field(uint8_t, zp_level) \ + __field(uint8_t, zp_copies) \ + __field(boolean_t, zp_dedup) \ + __field(boolean_t, zp_dedup_verify) \ + __field(boolean_t, zp_nopwrite) + +#define ZIO_TP_FAST_ASSIGN \ + __entry->zio_type = zio->io_type; \ + __entry->zio_cmd = zio->io_cmd; \ + __entry->zio_priority = zio->io_priority; \ + __entry->zio_size = zio->io_size; \ + __entry->zio_orig_size = zio->io_orig_size; \ + __entry->zio_offset = zio->io_offset; \ + __entry->zio_timestamp = zio->io_timestamp; \ + __entry->zio_delta = zio->io_delta; \ + __entry->zio_delay = zio->io_delay; \ + __entry->zio_flags = zio->io_flags; \ + __entry->zio_stage = zio->io_stage; \ + __entry->zio_pipeline = zio->io_pipeline; \ + __entry->zio_orig_flags = zio->io_orig_flags; \ + __entry->zio_orig_stage = zio->io_orig_stage; \ + __entry->zio_orig_pipeline = zio->io_orig_pipeline; \ + __entry->zio_reexecute = zio->io_reexecute; \ + __entry->zio_txg = zio->io_txg; \ + __entry->zio_error = zio->io_error; \ + __entry->zio_ena = zio->io_ena; \ + \ + __entry->zp_checksum = zio->io_prop.zp_checksum; \ + __entry->zp_compress = zio->io_prop.zp_compress; \ + __entry->zp_type = zio->io_prop.zp_type; \ + __entry->zp_level = zio->io_prop.zp_level; \ + __entry->zp_copies = zio->io_prop.zp_copies; \ + __entry->zp_dedup = zio->io_prop.zp_dedup; \ + __entry->zp_nopwrite = zio->io_prop.zp_nopwrite; \ + __entry->zp_dedup_verify = zio->io_prop.zp_dedup_verify; + +#define ZIO_TP_PRINTK_FMT \ + "zio { type %u cmd %i prio %u size %llu orig_size %llu " \ + "offset %llu timestamp %llu delta %llu delay %llu " \ + "flags 0x%x stage 0x%x pipeline 0x%x orig_flags 0x%x " \ + "orig_stage 0x%x orig_pipeline 0x%x reexecute %u " \ + "txg %llu error %d ena %llu prop { checksum %u compress %u " \ + "type %u level %u copies %u dedup %u dedup_verify %u nopwrite %u } }" + +#define ZIO_TP_PRINTK_ARGS \ + __entry->zio_type, __entry->zio_cmd, __entry->zio_priority, \ + __entry->zio_size, __entry->zio_orig_size, __entry->zio_offset, \ + __entry->zio_timestamp, __entry->zio_delta, __entry->zio_delay, \ + __entry->zio_flags, __entry->zio_stage, __entry->zio_pipeline, \ + __entry->zio_orig_flags, __entry->zio_orig_stage, \ + __entry->zio_orig_pipeline, __entry->zio_reexecute, \ + __entry->zio_txg, __entry->zio_error, __entry->zio_ena, \ + __entry->zp_checksum, __entry->zp_compress, __entry->zp_type, \ + __entry->zp_level, __entry->zp_copies, __entry->zp_dedup, \ + __entry->zp_dedup_verify, __entry->zp_nopwrite + +DECLARE_EVENT_CLASS(zfs_l2arc_rw_class, + TP_PROTO(vdev_t *vd, zio_t *zio), + TP_ARGS(vd, zio), + TP_STRUCT__entry( + __field(uint64_t, vdev_id) + __field(uint64_t, vdev_guid) + __field(uint64_t, vdev_state) + ZIO_TP_STRUCT_ENTRY + ), + TP_fast_assign( + __entry->vdev_id = vd->vdev_id; + __entry->vdev_guid = vd->vdev_guid; + __entry->vdev_state = vd->vdev_state; + ZIO_TP_FAST_ASSIGN + ), + TP_printk("vdev { id %llu guid %llu state %llu } " + ZIO_TP_PRINTK_FMT, __entry->vdev_id, __entry->vdev_guid, + __entry->vdev_state, ZIO_TP_PRINTK_ARGS) +); + +#define DEFINE_L2ARC_RW_EVENT(name) \ +DEFINE_EVENT(zfs_l2arc_rw_class, name, \ + TP_PROTO(vdev_t *vd, zio_t *zio), \ + TP_ARGS(vd, zio)) +DEFINE_L2ARC_RW_EVENT(zfs_l2arc__read); +DEFINE_L2ARC_RW_EVENT(zfs_l2arc__write); + + +/* + * Generic support for two argument tracepoints of the form: + * + * DTRACE_PROBE2(..., + * zio_t *, ..., + * l2arc_write_callback_t *, ...); + */ + +DECLARE_EVENT_CLASS(zfs_l2arc_iodone_class, + TP_PROTO(zio_t *zio, l2arc_write_callback_t *cb), + TP_ARGS(zio, cb), + TP_STRUCT__entry(ZIO_TP_STRUCT_ENTRY), + TP_fast_assign(ZIO_TP_FAST_ASSIGN), + TP_printk(ZIO_TP_PRINTK_FMT, ZIO_TP_PRINTK_ARGS) +); + +#define DEFINE_L2ARC_IODONE_EVENT(name) \ +DEFINE_EVENT(zfs_l2arc_iodone_class, name, \ + TP_PROTO(zio_t *zio, l2arc_write_callback_t *cb), \ + TP_ARGS(zio, cb)) +DEFINE_L2ARC_IODONE_EVENT(zfs_l2arc__iodone); + + +/* + * Generic support for four argument tracepoints of the form: + * + * DTRACE_PROBE4(..., + * arc_buf_hdr_t *, ..., + * const blkptr_t *, + * uint64_t, + * const zbookmark_phys_t *); + */ + +DECLARE_EVENT_CLASS(zfs_arc_miss_class, + TP_PROTO(arc_buf_hdr_t *hdr, + const blkptr_t *bp, uint64_t size, const zbookmark_phys_t *zb), + TP_ARGS(hdr, bp, size, zb), + TP_STRUCT__entry( + __array(uint64_t, hdr_dva_word, 2) + __field(uint64_t, hdr_birth) + __field(uint32_t, hdr_flags) + __field(uint32_t, hdr_datacnt) + __field(arc_buf_contents_t, hdr_type) + __field(uint64_t, hdr_size) + __field(uint64_t, hdr_spa) + __field(arc_state_type_t, hdr_state_type) + __field(clock_t, hdr_access) + __field(uint32_t, hdr_mru_hits) + __field(uint32_t, hdr_mru_ghost_hits) + __field(uint32_t, hdr_mfu_hits) + __field(uint32_t, hdr_mfu_ghost_hits) + __field(uint32_t, hdr_l2_hits) + __field(int64_t, hdr_refcount) + + __array(uint64_t, bp_dva0, 2) + __array(uint64_t, bp_dva1, 2) + __array(uint64_t, bp_dva2, 2) + __array(uint64_t, bp_cksum, 4) + + __field(uint64_t, bp_lsize) + + __field(uint64_t, zb_objset) + __field(uint64_t, zb_object) + __field(int64_t, zb_level) + __field(uint64_t, zb_blkid) + ), + TP_fast_assign( + __entry->hdr_dva_word[0] = hdr->b_dva.dva_word[0]; + __entry->hdr_dva_word[1] = hdr->b_dva.dva_word[1]; + __entry->hdr_birth = hdr->b_birth; + __entry->hdr_flags = hdr->b_flags; + __entry->hdr_datacnt = hdr->b_l1hdr.b_datacnt; + __entry->hdr_size = hdr->b_size; + __entry->hdr_spa = hdr->b_spa; + __entry->hdr_state_type = hdr->b_l1hdr.b_state->arcs_state; + __entry->hdr_access = hdr->b_l1hdr.b_arc_access; + __entry->hdr_mru_hits = hdr->b_l1hdr.b_mru_hits; + __entry->hdr_mru_ghost_hits = hdr->b_l1hdr.b_mru_ghost_hits; + __entry->hdr_mfu_hits = hdr->b_l1hdr.b_mfu_hits; + __entry->hdr_mfu_ghost_hits = hdr->b_l1hdr.b_mfu_ghost_hits; + __entry->hdr_l2_hits = hdr->b_l1hdr.b_l2_hits; + __entry->hdr_refcount = hdr->b_l1hdr.b_refcnt.rc_count; + + __entry->bp_dva0[0] = bp->blk_dva[0].dva_word[0]; + __entry->bp_dva0[1] = bp->blk_dva[0].dva_word[1]; + __entry->bp_dva1[0] = bp->blk_dva[1].dva_word[0]; + __entry->bp_dva1[1] = bp->blk_dva[1].dva_word[1]; + __entry->bp_dva2[0] = bp->blk_dva[2].dva_word[0]; + __entry->bp_dva2[1] = bp->blk_dva[2].dva_word[1]; + __entry->bp_cksum[0] = bp->blk_cksum.zc_word[0]; + __entry->bp_cksum[1] = bp->blk_cksum.zc_word[1]; + __entry->bp_cksum[2] = bp->blk_cksum.zc_word[2]; + __entry->bp_cksum[3] = bp->blk_cksum.zc_word[3]; + + __entry->bp_lsize = size; + + __entry->zb_objset = zb->zb_objset; + __entry->zb_object = zb->zb_object; + __entry->zb_level = zb->zb_level; + __entry->zb_blkid = zb->zb_blkid; + ), + TP_printk("hdr { dva 0x%llx:0x%llx birth %llu " + "flags 0x%x datacnt %u size %llu spa %llu state_type %u " + "access %lu mru_hits %u mru_ghost_hits %u mfu_hits %u " + "mfu_ghost_hits %u l2_hits %u refcount %lli } " + "bp { dva0 0x%llx:0x%llx dva1 0x%llx:0x%llx dva2 " + "0x%llx:0x%llx cksum 0x%llx:0x%llx:0x%llx:0x%llx " + "lsize %llu } zb { objset %llu object %llu level %lli " + "blkid %llu }", + __entry->hdr_dva_word[0], __entry->hdr_dva_word[1], + __entry->hdr_birth, __entry->hdr_flags, + __entry->hdr_datacnt, __entry->hdr_size, + __entry->hdr_spa, __entry->hdr_state_type, __entry->hdr_access, + __entry->hdr_mru_hits, __entry->hdr_mru_ghost_hits, + __entry->hdr_mfu_hits, __entry->hdr_mfu_ghost_hits, + __entry->hdr_l2_hits, __entry->hdr_refcount, + __entry->bp_dva0[0], __entry->bp_dva0[1], + __entry->bp_dva1[0], __entry->bp_dva1[1], + __entry->bp_dva2[0], __entry->bp_dva2[1], + __entry->bp_cksum[0], __entry->bp_cksum[1], + __entry->bp_cksum[2], __entry->bp_cksum[3], + __entry->bp_lsize, __entry->zb_objset, __entry->zb_object, + __entry->zb_level, __entry->zb_blkid) +); + +#define DEFINE_ARC_MISS_EVENT(name) \ +DEFINE_EVENT(zfs_arc_miss_class, name, \ + TP_PROTO(arc_buf_hdr_t *hdr, \ + const blkptr_t *bp, uint64_t size, const zbookmark_phys_t *zb), \ + TP_ARGS(hdr, bp, size, zb)) +DEFINE_ARC_MISS_EVENT(zfs_arc__miss); + +/* + * Generic support for four argument tracepoints of the form: + * + * DTRACE_PROBE4(..., + * l2arc_dev_t *, ..., + * list_t *, ..., + * uint64_t, ..., + * boolean_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_l2arc_evict_class, + TP_PROTO(l2arc_dev_t *dev, + list_t *buflist, uint64_t taddr, boolean_t all), + TP_ARGS(dev, buflist, taddr, all), + TP_STRUCT__entry( + __field(uint64_t, vdev_id) + __field(uint64_t, vdev_guid) + __field(uint64_t, vdev_state) + + __field(uint64_t, l2ad_hand) + __field(uint64_t, l2ad_start) + __field(uint64_t, l2ad_end) + __field(boolean_t, l2ad_first) + __field(boolean_t, l2ad_writing) + + __field(uint64_t, taddr) + __field(boolean_t, all) + ), + TP_fast_assign( + __entry->vdev_id = dev->l2ad_vdev->vdev_id; + __entry->vdev_guid = dev->l2ad_vdev->vdev_guid; + __entry->vdev_state = dev->l2ad_vdev->vdev_state; + + __entry->l2ad_hand = dev->l2ad_hand; + __entry->l2ad_start = dev->l2ad_start; + __entry->l2ad_end = dev->l2ad_end; + __entry->l2ad_first = dev->l2ad_first; + __entry->l2ad_writing = dev->l2ad_writing; + + __entry->taddr = taddr; + __entry->all = all; + ), + TP_printk("l2ad { vdev { id %llu guid %llu state %llu } " + "hand %llu start %llu end %llu " + "first %d writing %d } taddr %llu all %d", + __entry->vdev_id, __entry->vdev_guid, __entry->vdev_state, + __entry->l2ad_hand, __entry->l2ad_start, + __entry->l2ad_end, __entry->l2ad_first, __entry->l2ad_writing, + __entry->taddr, __entry->all) +); + +#define DEFINE_L2ARC_EVICT_EVENT(name) \ +DEFINE_EVENT(zfs_l2arc_evict_class, name, \ + TP_PROTO(l2arc_dev_t *dev, \ + list_t *buflist, uint64_t taddr, boolean_t all), \ + TP_ARGS(dev, buflist, taddr, all)) +DEFINE_L2ARC_EVICT_EVENT(zfs_l2arc__evict); + +#endif /* _TRACE_ARC_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_arc +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_dbgmsg.h +++ linux-4.4.0/zfs/include/sys/trace_dbgmsg.h @@ -0,0 +1,111 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* Do not include this file directly. Please use instead. */ +#ifndef _SYS_TRACE_DBGMSG_INDIRECT +#error "trace_dbgmsg.h included directly" +#endif + +/* + * This file defines tracepoint events for use by the dbgmsg(), + * dprintf(), and SET_ERROR() interfaces. These are grouped here because + * they all provide a way to store simple messages in the debug log (as + * opposed to events used by the DTRACE_PROBE interfaces which typically + * dump structured data). + * + * This header is included inside the trace.h multiple inclusion guard, + * and it is guarded above against direct inclusion, so it and need not + * be guarded separately. + */ + +/* + * Generic support for four argument tracepoints of the form: + * + * DTRACE_PROBE4(..., + * const char *, ..., + * const char *, ..., + * int, ..., + * const char *, ...); + */ + +DECLARE_EVENT_CLASS(zfs_dprintf_class, + TP_PROTO(const char *file, const char *function, int line, + const char *msg), + TP_ARGS(file, function, line, msg), + TP_STRUCT__entry( + __field(const char *, file) + __field(const char *, function) + __field(int, line) + __string(msg, msg) + ), + TP_fast_assign( + __entry->file = file; + __entry->function = function; + __entry->line = line; + __assign_str(msg, msg); + ), + TP_printk("%s:%d:%s(): %s", __entry->file, __entry->line, + __entry->function, __get_str(msg)) +); + +#define DEFINE_DPRINTF_EVENT(name) \ +DEFINE_EVENT(zfs_dprintf_class, name, \ + TP_PROTO(const char *file, const char *function, int line, \ + const char *msg), \ + TP_ARGS(file, function, line, msg)) +DEFINE_DPRINTF_EVENT(zfs_zfs__dprintf); + +/* + * Generic support for four argument tracepoints of the form: + * + * DTRACE_PROBE4(..., + * const char *, ..., + * const char *, ..., + * int, ..., + * uintptr_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_set_error_class, + TP_PROTO(const char *file, const char *function, int line, + uintptr_t error), + TP_ARGS(file, function, line, error), + TP_STRUCT__entry( + __field(const char *, file) + __field(const char *, function) + __field(int, line) + __field(uintptr_t, error) + ), + TP_fast_assign( + __entry->file = strchr(file, '/') ? strrchr(file, '/') + 1 : file; + __entry->function = function; + __entry->line = line; + __entry->error = error; + ), + TP_printk("%s:%d:%s(): error 0x%lx", __entry->file, __entry->line, + __entry->function, __entry->error) +); + +#define DEFINE_SET_ERROR_EVENT(name) \ +DEFINE_EVENT(zfs_set_error_class, name, \ + TP_PROTO(const char *file, const char *function, int line, \ + uintptr_t error), \ + TP_ARGS(file, function, line, error)) +DEFINE_SET_ERROR_EVENT(zfs_set__error); --- linux-4.4.0.orig/zfs/include/sys/trace_dbuf.h +++ linux-4.4.0/zfs/include/sys/trace_dbuf.h @@ -0,0 +1,102 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_dbuf + +#if !defined(_TRACE_DBUF_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_DBUF_H + +#include +#include + +/* + * Generic support for two argument tracepoints of the form: + * + * DTRACE_PROBE2(..., + * dmu_buf_impl_t *, ..., + * zio_t *, ...); + */ + +#define DBUF_TP_STRUCT_ENTRY \ + __field(const char *, os_spa) \ + __field(uint64_t, ds_object) \ + __field(uint64_t, db_object) \ + __field(uint64_t, db_level) \ + __field(uint64_t, db_blkid) \ + __field(uint64_t, db_offset) \ + __field(uint64_t, db_size) \ + __field(uint64_t, db_state) \ + __field(int64_t, db_holds) \ + +#define DBUF_TP_FAST_ASSIGN \ + __entry->os_spa = \ + spa_name(DB_DNODE(db)->dn_objset->os_spa); \ + \ + __entry->ds_object = db->db_objset->os_dsl_dataset ? \ + db->db_objset->os_dsl_dataset->ds_object : 0; \ + \ + __entry->db_object = db->db.db_object; \ + __entry->db_level = db->db_level; \ + __entry->db_blkid = db->db_blkid; \ + __entry->db_offset = db->db.db_offset; \ + __entry->db_size = db->db.db_size; \ + __entry->db_state = db->db_state; \ + __entry->db_holds = refcount_count(&db->db_holds); + +#define DBUF_TP_PRINTK_FMT \ + "dbuf { spa \"%s\" objset %llu object %llu level %llu " \ + "blkid %llu offset %llu size %llu state %llu holds %lld }" + +#define DBUF_TP_PRINTK_ARGS \ + __entry->os_spa, __entry->ds_object, \ + __entry->db_object, __entry->db_level, \ + __entry->db_blkid, __entry->db_offset, \ + __entry->db_size, __entry->db_state, __entry->db_holds + +DECLARE_EVENT_CLASS(zfs_dbuf_class, + TP_PROTO(dmu_buf_impl_t *db, zio_t *zio), + TP_ARGS(db, zio), + TP_STRUCT__entry(DBUF_TP_STRUCT_ENTRY), + TP_fast_assign(DBUF_TP_FAST_ASSIGN), + TP_printk(DBUF_TP_PRINTK_FMT, DBUF_TP_PRINTK_ARGS) +); + +#define DEFINE_DBUF_EVENT(name) \ +DEFINE_EVENT(zfs_dbuf_class, name, \ + TP_PROTO(dmu_buf_impl_t *db, zio_t *zio), \ + TP_ARGS(db, zio)) +DEFINE_DBUF_EVENT(zfs_blocked__read); + +#endif /* _TRACE_DBUF_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_dbuf +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_dmu.h +++ linux-4.4.0/zfs/include/sys/trace_dmu.h @@ -0,0 +1,120 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_dmu + +#if !defined(_TRACE_DMU_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_DMU_H + +#include +#include + +/* + * Generic support for three argument tracepoints of the form: + * + * DTRACE_PROBE3(..., + * dmu_tx_t *, ..., + * uint64_t, ..., + * uint64_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_delay_mintime_class, + TP_PROTO(dmu_tx_t *tx, uint64_t dirty, uint64_t min_tx_time), + TP_ARGS(tx, dirty, min_tx_time), + TP_STRUCT__entry( + __field(uint64_t, tx_txg) + __field(uint64_t, tx_lastsnap_txg) + __field(uint64_t, tx_lasttried_txg) + __field(boolean_t, tx_anyobj) + __field(boolean_t, tx_waited) + __field(hrtime_t, tx_start) + __field(boolean_t, tx_wait_dirty) + __field(int, tx_err) +#ifdef DEBUG_DMU_TX + __field(uint64_t, tx_space_towrite) + __field(uint64_t, tx_space_tofree) + __field(uint64_t, tx_space_tooverwrite) + __field(uint64_t, tx_space_tounref) + __field(int64_t, tx_space_written) + __field(int64_t, tx_space_freed) +#endif + __field(uint64_t, min_tx_time) + __field(uint64_t, dirty) + ), + TP_fast_assign( + __entry->tx_txg = tx->tx_txg; + __entry->tx_lastsnap_txg = tx->tx_lastsnap_txg; + __entry->tx_lasttried_txg = tx->tx_lasttried_txg; + __entry->tx_anyobj = tx->tx_anyobj; + __entry->tx_waited = tx->tx_waited; + __entry->tx_start = tx->tx_start; + __entry->tx_wait_dirty = tx->tx_wait_dirty; + __entry->tx_err = tx->tx_err; +#ifdef DEBUG_DMU_TX + __entry->tx_space_towrite = tx->tx_space_towrite; + __entry->tx_space_tofree = tx->tx_space_tofree; + __entry->tx_space_tooverwrite = tx->tx_space_tooverwrite; + __entry->tx_space_tounref = tx->tx_space_tounref; + __entry->tx_space_written = tx->tx_space_written.rc_count; + __entry->tx_space_freed = tx->tx_space_freed.rc_count; +#endif + __entry->dirty = dirty; + __entry->min_tx_time = min_tx_time; + ), + TP_printk("tx { txg %llu lastsnap_txg %llu tx_lasttried_txg %llu " + "anyobj %d waited %d start %llu wait_dirty %d err %i " +#ifdef DEBUG_DMU_TX + "space_towrite %llu space_tofree %llu space_tooverwrite %llu " + "space_tounref %llu space_written %lli space_freed %lli " +#endif + "} dirty %llu min_tx_time %llu", + __entry->tx_txg, __entry->tx_lastsnap_txg, + __entry->tx_lasttried_txg, __entry->tx_anyobj, __entry->tx_waited, + __entry->tx_start, __entry->tx_wait_dirty, __entry->tx_err, +#ifdef DEBUG_DMU_TX + __entry->tx_space_towrite, __entry->tx_space_tofree, + __entry->tx_space_tooverwrite, __entry->tx_space_tounref, + __entry->tx_space_written, __entry->tx_space_freed, +#endif + __entry->dirty, __entry->min_tx_time) +); + +#define DEFINE_DELAY_MINTIME_EVENT(name) \ +DEFINE_EVENT(zfs_delay_mintime_class, name, \ + TP_PROTO(dmu_tx_t *tx, uint64_t dirty, uint64_t min_tx_time), \ + TP_ARGS(tx, dirty, min_tx_time)) +DEFINE_DELAY_MINTIME_EVENT(zfs_delay__mintime); + +#endif /* _TRACE_DMU_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_dmu +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_dnode.h +++ linux-4.4.0/zfs/include/sys/trace_dnode.h @@ -0,0 +1,120 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_dnode + +#if !defined(_TRACE_DNODE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_DNODE_H + +#include +#include + +/* + * Generic support for three argument tracepoints of the form: + * + * DTRACE_PROBE3(..., + * dnode_t *, ..., + * int64_t, ..., + * uint32_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_dnode_move_class, + TP_PROTO(dnode_t *dn, int64_t refcount, uint32_t dbufs), + TP_ARGS(dn, refcount, dbufs), + TP_STRUCT__entry( + __field(uint64_t, dn_object) + __field(dmu_object_type_t, dn_type) + __field(uint16_t, dn_bonuslen) + __field(uint8_t, dn_bonustype) + __field(uint8_t, dn_nblkptr) + __field(uint8_t, dn_checksum) + __field(uint8_t, dn_compress) + __field(uint8_t, dn_nlevels) + __field(uint8_t, dn_indblkshift) + __field(uint8_t, dn_datablkshift) + __field(uint8_t, dn_moved) + __field(uint16_t, dn_datablkszsec) + __field(uint32_t, dn_datablksz) + __field(uint64_t, dn_maxblkid) + __field(int64_t, dn_tx_holds) + __field(int64_t, dn_holds) + __field(boolean_t, dn_have_spill) + + __field(int64_t, refcount) + __field(uint32_t, dbufs) + ), + TP_fast_assign( + __entry->dn_object = dn->dn_object; + __entry->dn_type = dn->dn_type; + __entry->dn_bonuslen = dn->dn_bonuslen; + __entry->dn_bonustype = dn->dn_bonustype; + __entry->dn_nblkptr = dn->dn_nblkptr; + __entry->dn_checksum = dn->dn_checksum; + __entry->dn_compress = dn->dn_compress; + __entry->dn_nlevels = dn->dn_nlevels; + __entry->dn_indblkshift = dn->dn_indblkshift; + __entry->dn_datablkshift = dn->dn_datablkshift; + __entry->dn_moved = dn->dn_moved; + __entry->dn_datablkszsec = dn->dn_datablkszsec; + __entry->dn_datablksz = dn->dn_datablksz; + __entry->dn_maxblkid = dn->dn_maxblkid; + __entry->dn_tx_holds = dn->dn_tx_holds.rc_count; + __entry->dn_holds = dn->dn_holds.rc_count; + __entry->dn_have_spill = dn->dn_have_spill; + + __entry->refcount = refcount; + __entry->dbufs = dbufs; + ), + TP_printk("dn { object %llu type %d bonuslen %u bonustype %u " + "nblkptr %u checksum %u compress %u nlevels %u indblkshift %u " + "datablkshift %u moved %u datablkszsec %u datablksz %u " + "maxblkid %llu tx_holds %lli holds %lli have_spill %d } " + "refcount %lli dbufs %u", + __entry->dn_object, __entry->dn_type, __entry->dn_bonuslen, + __entry->dn_bonustype, __entry->dn_nblkptr, __entry->dn_checksum, + __entry->dn_compress, __entry->dn_nlevels, __entry->dn_indblkshift, + __entry->dn_datablkshift, __entry->dn_moved, + __entry->dn_datablkszsec, __entry->dn_datablksz, + __entry->dn_maxblkid, __entry->dn_tx_holds, __entry->dn_holds, + __entry->dn_have_spill, __entry->refcount, __entry->dbufs) +); + +#define DEFINE_DNODE_MOVE_EVENT(name) \ +DEFINE_EVENT(zfs_dnode_move_class, name, \ + TP_PROTO(dnode_t *dn, int64_t refcount, uint32_t dbufs), \ + TP_ARGS(dn, refcount, dbufs)) +DEFINE_DNODE_MOVE_EVENT(zfs_dnode__move); + +#endif /* _TRACE_DNODE_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_dnode +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_multilist.h +++ linux-4.4.0/zfs/include/sys/trace_multilist.h @@ -0,0 +1,79 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_multilist + +#if !defined(_TRACE_MULTILIST_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_MULTILIST_H + +#include +#include + +/* + * Generic support for three argument tracepoints of the form: + * + * DTRACE_PROBE3(..., + * multilist_t *, ..., + * unsigned int, ..., + * void *, ...); + */ + +DECLARE_EVENT_CLASS(zfs_multilist_insert_remove_class, + TP_PROTO(multilist_t *ml, unsigned sublist_idx, void *obj), + TP_ARGS(ml, sublist_idx, obj), + TP_STRUCT__entry( + __field(size_t, ml_offset) + __field(uint64_t, ml_num_sublists) + + __field(unsigned int, sublist_idx) + ), + TP_fast_assign( + __entry->ml_offset = ml->ml_offset; + __entry->ml_num_sublists = ml->ml_num_sublists; + + __entry->sublist_idx = sublist_idx; + ), + TP_printk("ml { offset %ld numsublists %llu sublistidx %u } ", + __entry->ml_offset, __entry->ml_num_sublists, __entry->sublist_idx) +); + +#define DEFINE_MULTILIST_INSERT_REMOVE_EVENT(name) \ +DEFINE_EVENT(zfs_multilist_insert_remove_class, name, \ + TP_PROTO(multilist_t *ml, unsigned int sublist_idx, void *obj), \ + TP_ARGS(ml, sublist_idx, obj)) +DEFINE_MULTILIST_INSERT_REMOVE_EVENT(zfs_multilist__insert); +DEFINE_MULTILIST_INSERT_REMOVE_EVENT(zfs_multilist__remove); + +#endif /* _TRACE_MULTILIST_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_multilist +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_txg.h +++ linux-4.4.0/zfs/include/sys/trace_txg.h @@ -0,0 +1,75 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_txg + +#if !defined(_TRACE_TXG_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_TXG_H + +#include +#include + +/* + * Generic support for two argument tracepoints of the form: + * + * DTRACE_PROBE2(..., + * dsl_pool_t *, ..., + * uint64_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_txg_class, + TP_PROTO(dsl_pool_t *dp, uint64_t txg), + TP_ARGS(dp, txg), + TP_STRUCT__entry( + __field(uint64_t, txg) + ), + TP_fast_assign( + __entry->txg = txg; + ), + TP_printk("txg %llu", __entry->txg) +); + +#define DEFINE_TXG_EVENT(name) \ +DEFINE_EVENT(zfs_txg_class, name, \ + TP_PROTO(dsl_pool_t *dp, uint64_t txg), \ + TP_ARGS(dp, txg)) +DEFINE_TXG_EVENT(zfs_dsl_pool_sync__done); +DEFINE_TXG_EVENT(zfs_txg__quiescing); +DEFINE_TXG_EVENT(zfs_txg__opened); +DEFINE_TXG_EVENT(zfs_txg__syncing); +DEFINE_TXG_EVENT(zfs_txg__synced); +DEFINE_TXG_EVENT(zfs_txg__quiesced); + +#endif /* _TRACE_TXG_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_txg +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_zil.h +++ linux-4.4.0/zfs/include/sys/trace_zil.h @@ -0,0 +1,130 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_zil + +#if !defined(_TRACE_ZIL_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ZIL_H + +#include +#include + +/* + * Generic support for one argument tracepoints of the form: + * + * DTRACE_PROBE1(..., + * zilog_t *, ...); + */ + +DECLARE_EVENT_CLASS(zfs_zil_class, + TP_PROTO(zilog_t *zilog), + TP_ARGS(zilog), + TP_STRUCT__entry( + __field(uint64_t, zl_lr_seq) + __field(uint64_t, zl_commit_lr_seq) + __field(uint64_t, zl_destroy_txg) + __field(uint64_t, zl_replaying_seq) + __field(uint32_t, zl_suspend) + __field(uint8_t, zl_suspending) + __field(uint8_t, zl_keep_first) + __field(uint8_t, zl_replay) + __field(uint8_t, zl_stop_sync) + __field(uint8_t, zl_writer) + __field(uint8_t, zl_logbias) + __field(uint8_t, zl_sync) + __field(int, zl_parse_error) + __field(uint64_t, zl_parse_blk_seq) + __field(uint64_t, zl_parse_lr_seq) + __field(uint64_t, zl_parse_blk_count) + __field(uint64_t, zl_parse_lr_count) + __field(uint64_t, zl_next_batch) + __field(uint64_t, zl_com_batch) + __field(uint64_t, zl_itx_list_sz) + __field(uint64_t, zl_cur_used) + __field(clock_t, zl_replay_time) + __field(uint64_t, zl_replay_blks) + ), + TP_fast_assign( + __entry->zl_lr_seq = zilog->zl_lr_seq; + __entry->zl_commit_lr_seq = zilog->zl_commit_lr_seq; + __entry->zl_destroy_txg = zilog->zl_destroy_txg; + __entry->zl_replaying_seq = zilog->zl_replaying_seq; + __entry->zl_suspend = zilog->zl_suspend; + __entry->zl_suspending = zilog->zl_suspending; + __entry->zl_keep_first = zilog->zl_keep_first; + __entry->zl_replay = zilog->zl_replay; + __entry->zl_stop_sync = zilog->zl_stop_sync; + __entry->zl_writer = zilog->zl_writer; + __entry->zl_logbias = zilog->zl_logbias; + __entry->zl_sync = zilog->zl_sync; + __entry->zl_parse_error = zilog->zl_parse_error; + __entry->zl_parse_blk_seq = zilog->zl_parse_blk_seq; + __entry->zl_parse_lr_seq = zilog->zl_parse_lr_seq; + __entry->zl_parse_blk_count = zilog->zl_parse_blk_count; + __entry->zl_parse_lr_count = zilog->zl_parse_lr_count; + __entry->zl_next_batch = zilog->zl_next_batch; + __entry->zl_com_batch = zilog->zl_com_batch; + __entry->zl_itx_list_sz = zilog->zl_itx_list_sz; + __entry->zl_cur_used = zilog->zl_cur_used; + __entry->zl_replay_time = zilog->zl_replay_time; + __entry->zl_replay_blks = zilog->zl_replay_blks; + ), + TP_printk("zl { lr_seq %llu commit_lr_seq %llu destroy_txg %llu " + "replaying_seq %llu suspend %u suspending %u keep_first %u " + "replay %u stop_sync %u writer %u logbias %u sync %u " + "parse_error %u parse_blk_seq %llu parse_lr_seq %llu " + "parse_blk_count %llu parse_lr_count %llu next_batch %llu " + "com_batch %llu itx_list_sz %llu cur_used %llu replay_time %lu " + "replay_blks %llu }", + __entry->zl_lr_seq, __entry->zl_commit_lr_seq, + __entry->zl_destroy_txg, __entry->zl_replaying_seq, + __entry->zl_suspend, __entry->zl_suspending, __entry->zl_keep_first, + __entry->zl_replay, __entry->zl_stop_sync, __entry->zl_writer, + __entry->zl_logbias, __entry->zl_sync, __entry->zl_parse_error, + __entry->zl_parse_blk_seq, __entry->zl_parse_lr_seq, + __entry->zl_parse_blk_count, __entry->zl_parse_lr_count, + __entry->zl_next_batch, __entry->zl_com_batch, + __entry->zl_itx_list_sz, __entry->zl_cur_used, + __entry->zl_replay_time, __entry->zl_replay_blks) +); + +#define DEFINE_ZIL_EVENT(name) \ +DEFINE_EVENT(zfs_zil_class, name, \ + TP_PROTO(zilog_t *zilog), \ + TP_ARGS(zilog)) +DEFINE_ZIL_EVENT(zfs_zil__cw1); +DEFINE_ZIL_EVENT(zfs_zil__cw2); + +#endif /* _TRACE_ZIL_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_zil +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/trace_zrlock.h +++ linux-4.4.0/zfs/include/sys/trace_zrlock.h @@ -0,0 +1,87 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM zfs + +#undef TRACE_SYSTEM_VAR +#define TRACE_SYSTEM_VAR zfs_zrlock + +#if !defined(_TRACE_ZRLOCK_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ZRLOCK_H + +#include +#include + +/* + * Generic support for two argument tracepoints of the form: + * + * DTRACE_PROBE2(..., + * zrlock_t *, ..., + * uint32_t, ...); + */ + +DECLARE_EVENT_CLASS(zfs_zrlock_class, + TP_PROTO(zrlock_t *zrl, uint32_t n), + TP_ARGS(zrl, n), + TP_STRUCT__entry( + __field(int32_t, refcount) +#ifdef ZFS_DEBUG + __field(pid_t, owner_pid) + __field(const char *, caller) +#endif + __field(uint32_t, n) + ), + TP_fast_assign( + __entry->refcount = zrl->zr_refcount; +#ifdef ZFS_DEBUG + __entry->owner_pid = zrl->zr_owner ? zrl->zr_owner->pid : 0; + __entry->caller = zrl->zr_caller; +#endif + __entry->n = n; + ), +#ifdef ZFS_DEBUG + TP_printk("zrl { refcount %d owner_pid %d caller %s } n %u", + __entry->refcount, __entry->owner_pid, __entry->caller, + __entry->n) +#else + TP_printk("zrl { refcount %d } n %u", + __entry->refcount, __entry->n) +#endif +); + +#define DEFINE_ZRLOCK_EVENT(name) \ +DEFINE_EVENT(zfs_zrlock_class, name, \ + TP_PROTO(zrlock_t *zrl, uint32_t n), \ + TP_ARGS(zrl, n)) +DEFINE_ZRLOCK_EVENT(zfs_zrlock__reentry); + +#endif /* _TRACE_ZRLOCK_H */ + +#undef TRACE_INCLUDE_PATH +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_PATH sys +#define TRACE_INCLUDE_FILE trace_zrlock +#include + +#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ --- linux-4.4.0.orig/zfs/include/sys/txg.h +++ linux-4.4.0/zfs/include/sys/txg.h @@ -0,0 +1,137 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_TXG_H +#define _SYS_TXG_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define TXG_CONCURRENT_STATES 3 /* open, quiescing, syncing */ +#define TXG_SIZE 4 /* next power of 2 */ +#define TXG_MASK (TXG_SIZE - 1) /* mask for size */ +#define TXG_INITIAL TXG_SIZE /* initial txg */ +#define TXG_IDX (txg & TXG_MASK) + +/* Number of txgs worth of frees we defer adding to in-core spacemaps */ +#define TXG_DEFER_SIZE 2 + +typedef struct tx_cpu tx_cpu_t; + +typedef struct txg_handle { + tx_cpu_t *th_cpu; + uint64_t th_txg; +} txg_handle_t; + +typedef struct txg_node { + struct txg_node *tn_next[TXG_SIZE]; + uint8_t tn_member[TXG_SIZE]; +} txg_node_t; + +typedef struct txg_list { + kmutex_t tl_lock; + size_t tl_offset; + txg_node_t *tl_head[TXG_SIZE]; +} txg_list_t; + +struct dsl_pool; + +extern void txg_init(struct dsl_pool *dp, uint64_t txg); +extern void txg_fini(struct dsl_pool *dp); +extern void txg_sync_start(struct dsl_pool *dp); +extern void txg_sync_stop(struct dsl_pool *dp); +extern uint64_t txg_hold_open(struct dsl_pool *dp, txg_handle_t *txghp); +extern void txg_rele_to_quiesce(txg_handle_t *txghp); +extern void txg_rele_to_sync(txg_handle_t *txghp); +extern void txg_register_callbacks(txg_handle_t *txghp, list_t *tx_callbacks); + +extern void txg_delay(struct dsl_pool *dp, uint64_t txg, hrtime_t delta, + hrtime_t resolution); +extern void txg_kick(struct dsl_pool *dp); + +/* + * Wait until the given transaction group has finished syncing. + * Try to make this happen as soon as possible (eg. kick off any + * necessary syncs immediately). If txg==0, wait for the currently open + * txg to finish syncing. + */ +extern void txg_wait_synced(struct dsl_pool *dp, uint64_t txg); + +/* + * Wait until the given transaction group, or one after it, is + * the open transaction group. Try to make this happen as soon + * as possible (eg. kick off any necessary syncs immediately). + * If txg == 0, wait for the next open txg. + */ +extern void txg_wait_open(struct dsl_pool *dp, uint64_t txg); + +/* + * Returns TRUE if we are "backed up" waiting for the syncing + * transaction to complete; otherwise returns FALSE. + */ +extern boolean_t txg_stalled(struct dsl_pool *dp); + +/* returns TRUE if someone is waiting for the next txg to sync */ +extern boolean_t txg_sync_waiting(struct dsl_pool *dp); + +/* + * Wait for pending commit callbacks of already-synced transactions to finish + * processing. + */ +extern void txg_wait_callbacks(struct dsl_pool *dp); + +/* + * Per-txg object lists. + */ + +#define TXG_CLEAN(txg) ((txg) - 1) + +extern void txg_list_create(txg_list_t *tl, size_t offset); +extern void txg_list_destroy(txg_list_t *tl); +extern boolean_t txg_list_empty(txg_list_t *tl, uint64_t txg); +extern boolean_t txg_all_lists_empty(txg_list_t *tl); +extern boolean_t txg_list_add(txg_list_t *tl, void *p, uint64_t txg); +extern boolean_t txg_list_add_tail(txg_list_t *tl, void *p, uint64_t txg); +extern void *txg_list_remove(txg_list_t *tl, uint64_t txg); +extern void *txg_list_remove_this(txg_list_t *tl, void *p, uint64_t txg); +extern boolean_t txg_list_member(txg_list_t *tl, void *p, uint64_t txg); +extern void *txg_list_head(txg_list_t *tl, uint64_t txg); +extern void *txg_list_next(txg_list_t *tl, void *p, uint64_t txg); + +/* Global tuning */ +extern int zfs_txg_timeout; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_TXG_H */ --- linux-4.4.0.orig/zfs/include/sys/txg_impl.h +++ linux-4.4.0/zfs/include/sys/txg_impl.h @@ -0,0 +1,124 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_TXG_IMPL_H +#define _SYS_TXG_IMPL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The tx_cpu structure is a per-cpu structure that is used to track + * the number of active transaction holds (tc_count). As transactions + * are assigned into a transaction group the appropriate tc_count is + * incremented to indicate that there are pending changes that have yet + * to quiesce. Consumers evenutally call txg_rele_to_sync() to decrement + * the tc_count. A transaction group is not considered quiesced until all + * tx_cpu structures have reached a tc_count of zero. + * + * This structure is a per-cpu structure by design. Updates to this structure + * are frequent and concurrent. Having a single structure would result in + * heavy lock contention so a per-cpu design was implemented. With the fanned + * out mutex design, consumers only need to lock the mutex associated with + * thread's cpu. + * + * The tx_cpu contains two locks, the tc_lock and tc_open_lock. + * The tc_lock is used to protect all members of the tx_cpu structure with + * the exception of the tc_open_lock. This lock should only be held for a + * short period of time, typically when updating the value of tc_count. + * + * The tc_open_lock protects the tx_open_txg member of the tx_state structure. + * This lock is used to ensure that transactions are only assigned into + * the current open transaction group. In order to move the current open + * transaction group to the quiesce phase, the txg_quiesce thread must + * grab all tc_open_locks, increment the tx_open_txg, and drop the locks. + * The tc_open_lock is held until the transaction is assigned into the + * transaction group. Typically, this is a short operation but if throttling + * is occuring it may be held for longer periods of time. + */ +struct tx_cpu { + kmutex_t tc_open_lock; /* protects tx_open_txg */ + kmutex_t tc_lock; /* protects the rest of this struct */ + kcondvar_t tc_cv[TXG_SIZE]; + uint64_t tc_count[TXG_SIZE]; /* tx hold count on each txg */ + list_t tc_callbacks[TXG_SIZE]; /* commit cb list */ + char tc_pad[8]; /* pad to fill 3 cache lines */ +}; + +/* + * The tx_state structure maintains the state information about the different + * stages of the pool's transcation groups. A per pool tx_state structure + * is used to track this information. The tx_state structure also points to + * an array of tx_cpu structures (described above). Although the tx_sync_lock + * is used to protect the members of this structure, it is not used to + * protect the tx_open_txg. Instead a special lock in the tx_cpu structure + * is used. Readers of tx_open_txg must grab the per-cpu tc_open_lock. + * Any thread wishing to update tx_open_txg must grab the tc_open_lock on + * every cpu (see txg_quiesce()). + */ +typedef struct tx_state { + tx_cpu_t *tx_cpu; /* protects access to tx_open_txg */ + kmutex_t tx_sync_lock; /* protects the rest of this struct */ + + uint64_t tx_open_txg; /* currently open txg id */ + uint64_t tx_quiesced_txg; /* quiesced txg waiting for sync */ + uint64_t tx_syncing_txg; /* currently syncing txg id */ + uint64_t tx_synced_txg; /* last synced txg id */ + + hrtime_t tx_open_time; /* start time of tx_open_txg */ + + uint64_t tx_sync_txg_waiting; /* txg we're waiting to sync */ + uint64_t tx_quiesce_txg_waiting; /* txg we're waiting to open */ + + kcondvar_t tx_sync_more_cv; + kcondvar_t tx_sync_done_cv; + kcondvar_t tx_quiesce_more_cv; + kcondvar_t tx_quiesce_done_cv; + kcondvar_t tx_timeout_cv; + kcondvar_t tx_exit_cv; /* wait for all threads to exit */ + + uint8_t tx_threads; /* number of threads */ + uint8_t tx_exiting; /* set when we're exiting */ + + kthread_t *tx_sync_thread; + kthread_t *tx_quiesce_thread; + + taskq_t *tx_commit_cb_taskq; /* commit callback taskq */ +} tx_state_t; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_TXG_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/u8_textprep.h +++ linux-4.4.0/zfs/include/sys/u8_textprep.h @@ -0,0 +1,113 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_U8_TEXTPREP_H +#define _SYS_U8_TEXTPREP_H + + + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Unicode encoding conversion functions and their macros. + */ +#define UCONV_IN_BIG_ENDIAN 0x0001 +#define UCONV_OUT_BIG_ENDIAN 0x0002 +#define UCONV_IN_SYSTEM_ENDIAN 0x0004 +#define UCONV_OUT_SYSTEM_ENDIAN 0x0008 +#define UCONV_IN_LITTLE_ENDIAN 0x0010 +#define UCONV_OUT_LITTLE_ENDIAN 0x0020 +#define UCONV_IGNORE_NULL 0x0040 +#define UCONV_IN_ACCEPT_BOM 0x0080 +#define UCONV_OUT_EMIT_BOM 0x0100 + +extern int uconv_u16tou32(const uint16_t *, size_t *, uint32_t *, size_t *, + int); +extern int uconv_u16tou8(const uint16_t *, size_t *, uchar_t *, size_t *, int); +extern int uconv_u32tou16(const uint32_t *, size_t *, uint16_t *, size_t *, + int); +extern int uconv_u32tou8(const uint32_t *, size_t *, uchar_t *, size_t *, int); +extern int uconv_u8tou16(const uchar_t *, size_t *, uint16_t *, size_t *, int); +extern int uconv_u8tou32(const uchar_t *, size_t *, uint32_t *, size_t *, int); + +/* + * UTF-8 text preparation functions and their macros. + * + * Among the macros defined, U8_CANON_DECOMP, U8_COMPAT_DECOMP, and + * U8_CANON_COMP are not public interfaces and must not be used directly + * at the flag input argument. + */ +#define U8_STRCMP_CS (0x00000001) +#define U8_STRCMP_CI_UPPER (0x00000002) +#define U8_STRCMP_CI_LOWER (0x00000004) + +#define U8_CANON_DECOMP (0x00000010) +#define U8_COMPAT_DECOMP (0x00000020) +#define U8_CANON_COMP (0x00000040) + +#define U8_STRCMP_NFD (U8_CANON_DECOMP) +#define U8_STRCMP_NFC (U8_CANON_DECOMP | U8_CANON_COMP) +#define U8_STRCMP_NFKD (U8_COMPAT_DECOMP) +#define U8_STRCMP_NFKC (U8_COMPAT_DECOMP | U8_CANON_COMP) + +#define U8_TEXTPREP_TOUPPER (U8_STRCMP_CI_UPPER) +#define U8_TEXTPREP_TOLOWER (U8_STRCMP_CI_LOWER) + +#define U8_TEXTPREP_NFD (U8_STRCMP_NFD) +#define U8_TEXTPREP_NFC (U8_STRCMP_NFC) +#define U8_TEXTPREP_NFKD (U8_STRCMP_NFKD) +#define U8_TEXTPREP_NFKC (U8_STRCMP_NFKC) + +#define U8_TEXTPREP_IGNORE_NULL (0x00010000) +#define U8_TEXTPREP_IGNORE_INVALID (0x00020000) +#define U8_TEXTPREP_NOWAIT (0x00040000) + +#define U8_UNICODE_320 (0) +#define U8_UNICODE_500 (1) +#define U8_UNICODE_LATEST (U8_UNICODE_500) + +#define U8_VALIDATE_ENTIRE (0x00100000) +#define U8_VALIDATE_CHECK_ADDITIONAL (0x00200000) +#define U8_VALIDATE_UCS2_RANGE (0x00400000) + +#define U8_ILLEGAL_CHAR (-1) +#define U8_OUT_OF_RANGE_CHAR (-2) + +extern int u8_validate(char *, size_t, char **, int, int *); +extern int u8_strcmp(const char *, const char *, size_t, int, size_t, int *); +extern size_t u8_textprep_str(char *, size_t *, char *, size_t *, int, size_t, + int *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_U8_TEXTPREP_H */ --- linux-4.4.0.orig/zfs/include/sys/u8_textprep_data.h +++ linux-4.4.0/zfs/include/sys/u8_textprep_data.h @@ -0,0 +1,35376 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * COPYRIGHT AND PERMISSION NOTICE + * + * Copyright (c) 1991-2006 Unicode, Inc. All rights reserved. Distributed under + * the Terms of Use in http://www.unicode.org/copyright.html. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of the Unicode data files and any associated documentation (the + * "Data Files") or Unicode software and any associated documentation (the + * "Software") to deal in the Data Files or Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, and/or sell copies of the Data Files or Software, and + * to permit persons to whom the Data Files or Software are furnished to do so, + * provided that (a) the above copyright notice(s) and this permission notice + * appear with all copies of the Data Files or Software, (b) both the above + * copyright notice(s) and this permission notice appear in associated + * documentation, and (c) there is clear notice in each modified Data File or + * in the Software as well as in the documentation associated with the Data + * File(s) or Software that the data or software has been modified. + * + * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR + * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THE DATA FILES OR SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in these Data Files or Software without prior written authorization + * of the copyright holder. + * + * Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be + * registered in some jurisdictions. All other trademarks and registered + * trademarks mentioned herein are the property of their respective owners. + */ +/* + * This file has been modified by Sun Microsystems, Inc. + */ + +#ifndef _SYS_U8_TEXTPREP_DATA_H +#define _SYS_U8_TEXTPREP_DATA_H + + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * To get to the combining class data, composition mappings, decomposition + * mappings, and case conversion mappings of Unicode, the data structures + * formulated and their meanings are like the following: + * + * Each UTF-8 character is seen as a 4-byte entity so that U+0061 (or 0x61 in + * UTF-8) would be seen as 0x00 0x00 0x00 0x61. Similarly, U+1D15E would be + * 0xF0 0x9D 0x85 0x9E in UTF-8. + * + * The first byte (MSB) value is an index to the b1_tbl, such as + * u8_common_b1_tbl and u8_composition_b1_tbl tables. A b1_tbl has + * indices to b2_tbl tables that have indices to b3_tbl. Each b3_tbl has + * either indices to b4_tbl or indices to b4_tbl and base values for + * displacement calculations later by using the u8_displacement_t type at + * below. Each b4_tbl table then has indices to the final tables. + * + * As an example, if we have a character with code value of U+1D15E which is + * 0xF0 0x9D 0x85 0x9E in UTF-8, the target decomposition character bytes + * that will be mapped by the mapping procedure would be the ones between + * the start_index and the end_index computed as like the following: + * + * b2_tbl_id = u8_common_b1_tbl[0][0xF0]; + * b3_tbl_id = u8_decomp_b2_tbl[0][b2_tbl_id][0x9D]; + * b4_tbl_id = u8_decomp_b3_tbl[0][b3_tbl_id][0x85].tbl_id; + * b4_base = u8_decomp_b3_tbl[0][b3_tbl_id][0x85].base; + * if (b4_tbl_id >= 0x8000) { + * b4_tbl_id -= 0x8000; + * start_index = u8_decomp_b4_16bit_tbl[0][b4_tbl_id][0x9E]; + * end_index = u8_decomp_b4_16bit_tbl[0][b4_tbl_id][0x9E + 1]; + * } else { + * start_index = u8_decomp_b4_tbl[0][b4_tbl_id][0x9E]; + * end_index = u8_decomp_b4_tbl[0][b4_tbl_id][0x9E + 1]; + * } + * + * The start_index and the end_index can be used to retrieve the bytes + * possibly of multiple UTF-8 characters from the final tables. + * + * The "[0]" at the above indicates this is for Unicode Version 3.2.0 data + * as of today. Consequently, the "[1]" indicates another Unicode version + * data and it is Unicode 5.0.0 as of today. + * + * The mapping procedures and the data structures are more or less similar or + * alike among different mappings. You might want to read the u8_textprep.c + * for specific details. + * + * The tool programs created and used to generate the tables in this file are + * saved at PSARC/2007/149/materials/ as tools.tar.gz file. + */ + +/* The following is a component type for the b4_tbl vectors. */ +typedef struct { + uint16_t tbl_id; + uint16_t base; +} u8_displacement_t; + +/* + * The U8_TBL_ELEMENT_NOT_DEF macro indicates a byte that is not defined or + * used. The U8_TBL_ELEMENT_FILLER indicates the end of a UTF-8 character at + * the final tables. + */ +#define U8_TBL_ELEMENT_NOT_DEF (0xff) +#define N_ U8_TBL_ELEMENT_NOT_DEF + +#define U8_TBL_ELEMENT_FILLER (0xf7) +#define FIL_ U8_TBL_ELEMENT_FILLER + +/* + * The common b1_tbl for combining class, decompositions, tolower, and + * toupper case conversion mappings. + */ +static const uchar_t u8_common_b1_tbl[2][256] = { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, +}; + +static const uchar_t u8_combining_class_b2_tbl[2][2][256] = { + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 5, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 6, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, 5, N_, N_, N_, N_, 6, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 7, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 8, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + +}; + +static const uchar_t u8_combining_class_b3_tbl[2][9][256] = { + { + { /* Third byte table 0. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 0, 1, N_, N_, + N_, N_, 2, N_, N_, N_, 3, 4, + N_, 5, N_, 6, 7, 8, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 1. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, N_, 19, + N_, 20, N_, 21, N_, 22, N_, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 2. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 32, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 33, N_, N_, 34, + N_, N_, 35, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 3. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, 36, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 4. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 37, N_, 38, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 5. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 39, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 40, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 6. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 41, 42, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 7. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 8. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + }, + { + { /* Third byte table 0. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 0, 1, N_, N_, + N_, N_, 2, N_, N_, N_, 3, 4, + 5, 6, N_, 7, 8, 9, N_, 10, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 1. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, N_, 21, + N_, 22, 23, 24, N_, 25, N_, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 2. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 35, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 36, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 37, N_, N_, 38, + N_, N_, 39, N_, 40, N_, N_, N_, + 41, N_, N_, N_, 42, 43, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 44, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 3. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, 45, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 4. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 46, N_, 47, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 5. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 48, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 6. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, 49, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 50, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 7. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 51, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { /* Third byte table 8. */ + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 52, 53, N_, + N_, 54, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + }, +}; + +/* + * Unlike other b4_tbl, the b4_tbl for combining class data has + * the combining class values not indices to the final tables. + */ +static const uchar_t u8_combining_class_b4_tbl[2][55][256] = { + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 232, 220, 220, + 220, 220, 232, 216, 220, 220, 220, 220, + 220, 202, 202, 220, 220, 220, 220, 202, + 202, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 1, 1, 1, 1, + 1, 220, 220, 220, 220, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 240, 230, 220, + 220, 220, 230, 230, 230, 220, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 234, 234, 233, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 220, 230, 230, 230, 230, 220, 230, + 230, 230, 222, 220, 230, 230, 230, 230, + 230, 230, 0, 220, 220, 220, 220, 220, + 230, 230, 220, 230, 230, 222, 228, 230, + 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 0, 20, 21, 22, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 25, 0, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34, 230, 230, 220, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 230, + 230, 230, 230, 230, 230, 0, 0, 230, + 230, 230, 230, 220, 230, 0, 0, 230, + 230, 0, 220, 230, 230, 220, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 220, 230, 230, 220, 230, 230, 220, + 220, 220, 230, 220, 220, 230, 220, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 220, 230, 220, 230, 220, 230, + 220, 230, 230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 230, 220, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 84, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 103, 103, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 107, 107, 107, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 118, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 122, 122, 122, 122, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 0, 220, + 0, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 129, 130, 0, 132, 0, 0, 0, + 0, 0, 130, 130, 130, 130, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 130, 0, 230, 230, 9, 0, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 1, 1, 230, 230, 230, 230, + 1, 1, 1, 230, 230, 0, 0, 0, + 0, 230, 0, 0, 0, 1, 1, 230, + 220, 230, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 218, 228, 232, 222, 224, 224, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 41. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 216, 1, + 1, 1, 0, 0, 0, 226, 216, 216, + 216, 216, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 220, 220, 220, 220, 220, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 42. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 220, 0, 0, 230, 230, 230, + 230, 230, 220, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 230, 230, 230, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 43. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 44. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 45. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 46. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 47. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 48. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 49. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 50. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 51. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 52. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 53. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 54. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 232, 220, 220, + 220, 220, 232, 216, 220, 220, 220, 220, + 220, 202, 202, 220, 220, 220, 220, 202, + 202, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 1, 1, 1, 1, + 1, 220, 220, 220, 220, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 240, 230, 220, + 220, 220, 230, 230, 230, 220, 220, 0, + 230, 230, 230, 220, 220, 220, 220, 230, + 232, 220, 220, 230, 233, 234, 234, 233, + 234, 234, 233, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 220, 230, 230, 230, 230, 220, 230, + 230, 230, 222, 220, 230, 230, 230, 230, + 230, 230, 220, 220, 220, 220, 220, 220, + 230, 230, 220, 230, 230, 222, 228, 230, + 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 19, 20, 21, 22, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 25, 0, 230, 220, 0, 18, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34, 230, 230, 220, 220, 230, + 230, 230, 230, 230, 220, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 230, + 230, 230, 230, 230, 230, 0, 0, 230, + 230, 230, 230, 220, 230, 0, 0, 230, + 230, 0, 220, 230, 230, 220, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 220, 230, 230, 220, 230, 230, 220, + 220, 220, 230, 220, 220, 230, 220, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 220, 230, 220, 230, 220, 230, + 220, 230, 230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 230, 230, 230, + 230, 230, 220, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 230, 220, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 84, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 103, 103, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 107, 107, 107, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 118, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 122, 122, 122, 122, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 0, 220, + 0, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 129, 130, 0, 132, 0, 0, 0, + 0, 0, 130, 130, 130, 130, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 130, 0, 230, 230, 9, 0, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 222, 230, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 41. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, + 220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 42. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 43. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 220, 230, 230, 230, + 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 44. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 220, 230, 230, 230, 230, 230, + 230, 230, 220, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 220, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 45. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 1, 1, 230, 230, 230, 230, + 1, 1, 1, 230, 230, 0, 0, 0, + 0, 230, 0, 0, 0, 1, 1, 230, + 220, 230, 1, 1, 220, 220, 220, 220, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 46. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 218, 228, 232, 222, 224, 224, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 47. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 48. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 49. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 50. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 51. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 0, 230, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 230, 1, 220, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 52. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 216, 1, + 1, 1, 0, 0, 0, 226, 216, 216, + 216, 216, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 220, 220, 220, 220, 220, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 53. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 220, 0, 0, 230, 230, 230, + 230, 230, 220, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 230, 230, 230, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Fourth byte table 54. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, +}; + +static const uchar_t u8_composition_b1_tbl[2][256] = { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, +}; + +static const uchar_t u8_composition_b2_tbl[2][1][256] = { + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + +}; + +static const u8_displacement_t u8_composition_b3_tbl[2][5][256] = { + { + { /* Third byte table 0. */ + { 0x8000, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 2470 }, + { 0x8001, 2491 }, { 1, 2871 }, { 2, 2959 }, + { 3, 3061 }, { 4, 3212 }, { 5, 3226 }, + { N_, 0 }, { 6, 3270 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0x8002, 3277 }, + { 7, 3774 }, { 8, 3949 }, { 9, 4198 }, + { N_, 0 }, { 10, 4265 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 11, 4293 }, { 12, 4312 }, { N_, 0 }, + { 13, 4326 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 14, 4347 }, + { N_, 0 }, { N_, 0 }, { 15, 4374 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 16, 4391 }, + { 17, 4416 }, { 18, 4425 }, { N_, 0 }, + { 19, 4451 }, { 20, 4460 }, { 21, 4469 }, + { N_, 0 }, { 22, 4503 }, { N_, 0 }, + { 23, 4529 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 24, 4563 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 25, 4572 }, { 26, 4588 }, + { 27, 4620 }, { 28, 4666 }, { 0x8003, 4682 }, + { 0x8004, 5254 }, { 29, 5616 }, { 30, 5646 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 31, 5684 }, + { 32, 5708 }, { 33, 5732 }, { 34, 5780 }, + { 35, 5900 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 36, 6012 }, { 37, 6241 }, { 38, 6358 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + }, + { + { /* Third byte table 0. */ + { 0x8000, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 2470 }, + { 0x8001, 2491 }, { 1, 2871 }, { 2, 2959 }, + { 3, 3061 }, { 4, 3212 }, { 5, 3226 }, + { N_, 0 }, { 6, 3270 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0x8002, 3277 }, + { 7, 3774 }, { 8, 3949 }, { 9, 4198 }, + { N_, 0 }, { 10, 4265 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 11, 4293 }, { 12, 4312 }, { N_, 0 }, + { 13, 4326 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 14, 4347 }, + { N_, 0 }, { N_, 0 }, { 15, 4374 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 16, 4391 }, + { 17, 4416 }, { 18, 4425 }, { N_, 0 }, + { 19, 4451 }, { 20, 4460 }, { 21, 4469 }, + { N_, 0 }, { 22, 4503 }, { N_, 0 }, + { 23, 4529 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 24, 4563 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 25, 4572 }, { 26, 4662 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 27, 4671 }, { 28, 4687 }, + { 29, 4719 }, { 30, 4765 }, { 0x8003, 4781 }, + { 0x8004, 5353 }, { 31, 5715 }, { 32, 5745 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 33, 5783 }, + { 34, 5807 }, { 35, 5831 }, { 36, 5879 }, + { 37, 5999 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 38, 6111 }, { 39, 6340 }, { 40, 6457 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + }, +}; + +static const uchar_t u8_composition_b4_tbl[2][41][257] = { + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 73, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 38, 46, 46, 46, 46, + 46, 54, 62, 62, 62, 62, 62, 62, + 62, 70, 78, 86, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 108, 144, 144, 144, 144, 144, 144, 144, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 14, 22, 30, 30, 30, 30, 30, 37, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 15, 15, 15, 70, 70, + 70, 70, 112, 133, 154, 154, 154, 162, + 162, 162, 162, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 20, 20, 20, 27, 27, 46, 59, + 66, 91, 91, 98, 98, 98, 98, 105, + 105, 105, 105, 105, 130, 130, 130, 130, + 137, 137, 137, 137, 144, 144, 151, 151, + 151, 164, 164, 164, 171, 171, 190, 203, + 210, 235, 235, 242, 242, 242, 242, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 25, 25, 25, + 32, 32, 32, 32, 39, 39, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 60, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 21, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 14, 14, 14, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 9, 9, 9, 9, 9, 9, + 9, 18, 18, 18, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, + 25, 25, 25, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 25, 25, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 16, 16, 16, 16, + 16, 16, 16, 24, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 38, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 16, + 16, 16, 16, 16, 16, 16, 16, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 16, 16, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 16, 16, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 8, 8, 8, + 8, 16, 16, 16, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 32, 32, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 8, 16, 16, + 16, 24, 24, 24, 24, 24, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 40, 40, 40, 48, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 64, 72, 72, 72, 80, + 88, 88, 88, 96, 104, 112, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 16, 16, 16, 24, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 40, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 56, 56, 56, 56, 56, + 56, 64, 72, 72, 80, 80, 80, 80, + 80, 80, 80, 88, 96, 104, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 18, 18, 27, 27, + 36, 36, 45, 45, 54, 54, 63, 63, + 72, 72, 81, 81, 90, 90, 99, 99, + 108, 108, 117, 117, 117, 126, 126, 135, + 135, 144, 144, 144, 144, 144, 144, 144, + 161, 161, 161, 178, 178, 178, 195, 195, + 195, 212, 212, 212, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 18, + 18, 18, 18, 18, 27, 27, 36, 36, + 45, 45, 54, 54, 63, 63, 72, 72, + 81, 81, 90, 90, 99, 99, 108, 108, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 9, 18, 18, 27, + 27, 36, 36, 36, 36, 36, 36, 36, + 53, 53, 53, 70, 70, 70, 87, 87, + 87, 104, 104, 104, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, + 130, 139, 148, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + }, + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 73, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 38, 46, 46, 46, 46, + 46, 54, 62, 62, 62, 62, 62, 62, + 62, 70, 78, 86, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 108, 144, 144, 144, 144, 144, 144, 144, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, + 151, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 14, 22, 30, 30, 30, 30, 30, 37, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 15, 15, 15, 70, 70, + 70, 70, 112, 133, 154, 154, 154, 162, + 162, 162, 162, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 20, 20, 20, 27, 27, 46, 59, + 66, 91, 91, 98, 98, 98, 98, 105, + 105, 105, 105, 105, 130, 130, 130, 130, + 137, 137, 137, 137, 144, 144, 151, 151, + 151, 164, 164, 164, 171, 171, 190, 203, + 210, 235, 235, 242, 242, 242, 242, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, + 249, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 25, 25, 25, + 32, 32, 32, 32, 39, 39, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 60, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 21, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 14, 14, 14, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 9, 9, 9, 9, 9, 9, + 9, 18, 18, 18, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, + 25, 25, 25, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 25, 25, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, + 34, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 18, 18, 27, 27, 36, 36, 45, 45, + 45, 45, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 63, 63, 72, 72, 81, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 16, 16, 16, 16, + 16, 16, 16, 24, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 38, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 16, + 16, 16, 16, 16, 16, 16, 16, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 16, 16, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 8, 16, 16, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 8, 8, 8, + 8, 16, 16, 16, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 32, 32, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 8, 16, 16, + 16, 24, 24, 24, 24, 24, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 40, 40, 40, 48, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 64, 72, 72, 72, 80, + 88, 88, 88, 96, 104, 112, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 16, 16, 16, 24, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 40, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 56, 56, 56, 56, 56, + 56, 64, 72, 72, 80, 80, 80, 80, + 80, 80, 80, 88, 96, 104, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 18, 18, 27, 27, + 36, 36, 45, 45, 54, 54, 63, 63, + 72, 72, 81, 81, 90, 90, 99, 99, + 108, 108, 117, 117, 117, 126, 126, 135, + 135, 144, 144, 144, 144, 144, 144, 144, + 161, 161, 161, 178, 178, 178, 195, 195, + 195, 212, 212, 212, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, + 229, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 18, + 18, 18, 18, 18, 27, 27, 36, 36, + 45, 45, 54, 54, 63, 63, 72, 72, + 81, 81, 90, 90, 99, 99, 108, 108, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, + 117, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 9, 18, 18, 27, + 27, 36, 36, 36, 36, 36, 36, 36, + 53, 53, 53, 70, 70, 70, 87, 87, + 87, 104, 104, 104, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, + 130, 139, 148, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, + }, + }, +}; + +static const uint16_t u8_composition_b4_16bit_tbl[2][5][257] = { + { + { /* Fourth byte 16-bit table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 16, 24, + 24, 24, 124, 146, 177, 219, 327, 335, + 379, 427, 521, 528, 562, 602, 624, 683, + 782, 797, 797, 849, 894, 941, 1061, 1076, + 1118, 1133, 1193, 1233, 1233, 1233, 1233, 1233, + 1233, 1233, 1333, 1355, 1386, 1428, 1536, 1544, + 1588, 1643, 1731, 1744, 1778, 1818, 1840, 1899, + 1998, 2013, 2013, 2065, 2110, 2164, 2284, 2299, + 2348, 2363, 2430, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, + }, + { /* Fourth byte 16-bit table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 29, 36, 43, 56, + 64, 64, 64, 93, 93, 93, 93, 93, + 101, 101, 101, 101, 101, 130, 151, 158, + 158, 165, 165, 165, 165, 190, 190, 190, + 190, 190, 190, 219, 219, 226, 233, 246, + 254, 254, 254, 283, 283, 283, 283, 283, + 291, 291, 291, 291, 291, 320, 341, 348, + 348, 355, 355, 355, 355, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, + }, + { /* Fourth byte 16-bit table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 49, 49, 49, 77, 77, + 112, 112, 160, 160, 160, 160, 160, 160, + 188, 188, 196, 196, 196, 196, 237, 237, + 237, 237, 272, 272, 272, 280, 280, 288, + 288, 288, 344, 344, 344, 344, 372, 372, + 414, 414, 469, 469, 469, 469, 469, 469, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, + }, + { /* Fourth byte 16-bit table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 29, 58, 66, 74, 82, 90, 98, + 106, 135, 164, 172, 180, 188, 196, 204, + 212, 227, 242, 242, 242, 242, 242, 242, + 242, 257, 272, 272, 272, 272, 272, 272, + 272, 301, 330, 338, 346, 354, 362, 370, + 378, 407, 436, 444, 452, 460, 468, 476, + 484, 506, 528, 528, 528, 528, 528, 528, + 528, 550, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, + }, + { /* Fourth byte 16-bit table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 30, 30, 30, 30, 30, 30, + 30, 45, 60, 60, 60, 60, 60, 60, + 60, 82, 104, 104, 104, 104, 104, 104, + 104, 104, 126, 126, 126, 126, 126, 126, + 126, 155, 184, 192, 200, 208, 216, 224, + 232, 261, 290, 298, 306, 314, 322, 330, + 338, 346, 346, 346, 346, 354, 354, 354, + 354, 354, 354, 354, 354, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, + }, + }, + { + { /* Fourth byte 16-bit table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 16, 24, + 24, 24, 124, 146, 177, 219, 327, 335, + 379, 427, 521, 528, 562, 602, 624, 683, + 782, 797, 797, 849, 894, 941, 1061, 1076, + 1118, 1133, 1193, 1233, 1233, 1233, 1233, 1233, + 1233, 1233, 1333, 1355, 1386, 1428, 1536, 1544, + 1588, 1643, 1731, 1744, 1778, 1818, 1840, 1899, + 1998, 2013, 2013, 2065, 2110, 2164, 2284, 2299, + 2348, 2363, 2430, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, + }, + { /* Fourth byte 16-bit table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 29, 36, 43, 56, + 64, 64, 64, 93, 93, 93, 93, 93, + 101, 101, 101, 101, 101, 130, 151, 158, + 158, 165, 165, 165, 165, 190, 190, 190, + 190, 190, 190, 219, 219, 226, 233, 246, + 254, 254, 254, 283, 283, 283, 283, 283, + 291, 291, 291, 291, 291, 320, 341, 348, + 348, 355, 355, 355, 355, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, + 380, + }, + { /* Fourth byte 16-bit table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 49, 49, 49, 77, 77, + 112, 112, 160, 160, 160, 160, 160, 160, + 188, 188, 196, 196, 196, 196, 237, 237, + 237, 237, 272, 272, 272, 280, 280, 288, + 288, 288, 344, 344, 344, 344, 372, 372, + 414, 414, 469, 469, 469, 469, 469, 469, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, + 497, + }, + { /* Fourth byte 16-bit table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 29, 58, 66, 74, 82, 90, 98, + 106, 135, 164, 172, 180, 188, 196, 204, + 212, 227, 242, 242, 242, 242, 242, 242, + 242, 257, 272, 272, 272, 272, 272, 272, + 272, 301, 330, 338, 346, 354, 362, 370, + 378, 407, 436, 444, 452, 460, 468, 476, + 484, 506, 528, 528, 528, 528, 528, 528, + 528, 550, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, + 572, + }, + { /* Fourth byte 16-bit table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 30, 30, 30, 30, 30, 30, + 30, 45, 60, 60, 60, 60, 60, 60, + 60, 82, 104, 104, 104, 104, 104, 104, + 104, 104, 126, 126, 126, 126, 126, 126, + 126, 155, 184, 192, 200, 208, 216, 224, + 232, 261, 290, 298, 306, 314, 322, 330, + 338, 346, 346, 346, 346, 354, 354, 354, + 354, 354, 354, 354, 354, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, + 362, + }, + }, +}; + +static const uchar_t u8_composition_final_tbl[2][6623] = { + { + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAE, FIL_, + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA0, FIL_, + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAF, FIL_, + 0x10, 0xCC, 0x86, FIL_, 0xC4, 0x82, FIL_, 0xCC, + 0x87, FIL_, 0xC8, 0xA6, FIL_, 0xCC, 0x8F, FIL_, + 0xC8, 0x80, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x82, + FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x81, FIL_, 0xCC, + 0x80, FIL_, 0xC3, 0x80, FIL_, 0xCC, 0x83, FIL_, + 0xC3, 0x83, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, + 0xA0, FIL_, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x80, + FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x82, FIL_, 0xCC, + 0x84, FIL_, 0xC4, 0x80, FIL_, 0xCC, 0x88, FIL_, + 0xC3, 0x84, FIL_, 0xCC, 0x8A, FIL_, 0xC3, 0x85, + FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x84, FIL_, 0xCC, + 0x89, FIL_, 0xE1, 0xBA, 0xA2, FIL_, 0xCC, 0x8C, + FIL_, 0xC7, 0x8D, FIL_, 0x03, 0xCC, 0x87, FIL_, + 0xE1, 0xB8, 0x82, FIL_, 0xCC, 0xB1, FIL_, 0xE1, + 0xB8, 0x86, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0x84, FIL_, 0x05, 0xCC, 0xA7, FIL_, 0xC3, 0x87, + FIL_, 0xCC, 0x81, FIL_, 0xC4, 0x86, FIL_, 0xCC, + 0x8C, FIL_, 0xC4, 0x8C, FIL_, 0xCC, 0x87, FIL_, + 0xC4, 0x8A, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x88, + FIL_, 0x06, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8E, + FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x90, FIL_, + 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x92, FIL_, 0xCC, + 0x87, FIL_, 0xE1, 0xB8, 0x8A, FIL_, 0xCC, 0x8C, + FIL_, 0xC4, 0x8E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB8, 0x8C, FIL_, 0x11, 0xCC, 0x80, FIL_, 0xC3, + 0x88, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x89, FIL_, + 0xCC, 0x82, FIL_, 0xC3, 0x8A, FIL_, 0xCC, 0x88, + FIL_, 0xC3, 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xC8, + 0xA8, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x86, FIL_, + 0xCC, 0x8F, FIL_, 0xC8, 0x84, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBA, 0xBA, FIL_, 0xCC, 0xB0, FIL_, + 0xE1, 0xB8, 0x9A, FIL_, 0xCC, 0xAD, FIL_, 0xE1, + 0xB8, 0x98, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, + 0xBC, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB8, + FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x92, FIL_, 0xCC, + 0x86, FIL_, 0xC4, 0x94, FIL_, 0xCC, 0x87, FIL_, + 0xC4, 0x96, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x98, + FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9A, FIL_, 0x01, + 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9E, FIL_, 0x07, + 0xCC, 0x8C, FIL_, 0xC7, 0xA6, FIL_, 0xCC, 0x87, + FIL_, 0xC4, 0xA0, FIL_, 0xCC, 0x84, FIL_, 0xE1, + 0xB8, 0xA0, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9C, + FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xB4, FIL_, 0xCC, + 0xA7, FIL_, 0xC4, 0xA2, FIL_, 0xCC, 0x86, FIL_, + 0xC4, 0x9E, FIL_, 0x07, 0xCC, 0xAE, FIL_, 0xE1, + 0xB8, 0xAA, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, + 0xA2, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA6, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xA4, FIL_, + 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0xA8, FIL_, 0xCC, + 0x8C, FIL_, 0xC8, 0x9E, FIL_, 0xCC, 0x82, FIL_, + 0xC4, 0xA4, FIL_, 0x0F, 0xCC, 0x84, FIL_, 0xC4, + 0xAA, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x8C, FIL_, + 0xCC, 0xA8, FIL_, 0xC4, 0xAE, FIL_, 0xCC, 0x83, + FIL_, 0xC4, 0xA8, FIL_, 0xCC, 0x88, FIL_, 0xC3, + 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x8D, FIL_, + 0xCC, 0x8F, FIL_, 0xC8, 0x88, FIL_, 0xCC, 0x86, + FIL_, 0xC4, 0xAC, FIL_, 0xCC, 0x91, FIL_, 0xC8, + 0x8A, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8F, FIL_, + 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x88, FIL_, 0xCC, + 0x87, FIL_, 0xC4, 0xB0, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xBB, 0x8A, FIL_, 0xCC, 0xB0, FIL_, 0xE1, + 0xB8, 0xAC, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8E, + FIL_, 0x01, 0xCC, 0x82, FIL_, 0xC4, 0xB4, FIL_, + 0x05, 0xCC, 0x8C, FIL_, 0xC7, 0xA8, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB8, 0xB4, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB8, 0xB0, FIL_, 0xCC, 0xA7, FIL_, + 0xC4, 0xB6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB2, FIL_, 0x06, 0xCC, 0xA7, FIL_, 0xC4, 0xBB, + FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBD, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB8, 0xBA, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xB8, 0xB6, FIL_, 0xCC, 0xAD, FIL_, + 0xE1, 0xB8, 0xBC, FIL_, 0xCC, 0x81, FIL_, 0xC4, + 0xB9, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB8, + 0xBE, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x82, + FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x80, FIL_, + 0x09, 0xCC, 0x80, FIL_, 0xC7, 0xB8, FIL_, 0xCC, + 0xAD, FIL_, 0xE1, 0xB9, 0x8A, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0x84, FIL_, 0xCC, 0xB1, FIL_, + 0xE1, 0xB9, 0x88, FIL_, 0xCC, 0x83, FIL_, 0xC3, + 0x91, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x86, + FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x83, FIL_, 0xCC, + 0xA7, FIL_, 0xC5, 0x85, FIL_, 0xCC, 0x8C, FIL_, + 0xC5, 0x87, FIL_, 0x10, 0xCC, 0xA8, FIL_, 0xC7, + 0xAA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8E, FIL_, + 0xCC, 0x80, FIL_, 0xC3, 0x92, FIL_, 0xCC, 0x9B, + FIL_, 0xC6, 0xA0, FIL_, 0xCC, 0x8F, FIL_, 0xC8, + 0x8C, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x93, FIL_, + 0xCC, 0x87, FIL_, 0xC8, 0xAE, FIL_, 0xCC, 0x8C, + FIL_, 0xC7, 0x91, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xBB, 0x8C, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x94, + FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8C, FIL_, 0xCC, + 0x83, FIL_, 0xC3, 0x95, FIL_, 0xCC, 0x86, FIL_, + 0xC5, 0x8E, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x96, + FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x90, FIL_, 0xCC, + 0x89, FIL_, 0xE1, 0xBB, 0x8E, FIL_, 0x02, 0xCC, + 0x87, FIL_, 0xE1, 0xB9, 0x96, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0x94, FIL_, 0x08, 0xCC, 0x91, + FIL_, 0xC8, 0x92, FIL_, 0xCC, 0xA7, FIL_, 0xC5, + 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x98, FIL_, + 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x9E, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xB9, 0x9A, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0x98, FIL_, 0xCC, 0x81, FIL_, + 0xC5, 0x94, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x90, + FIL_, 0x07, 0xCC, 0x81, FIL_, 0xC5, 0x9A, FIL_, + 0xCC, 0x82, FIL_, 0xC5, 0x9C, FIL_, 0xCC, 0xA7, + FIL_, 0xC5, 0x9E, FIL_, 0xCC, 0x8C, FIL_, 0xC5, + 0xA0, FIL_, 0xCC, 0xA6, FIL_, 0xC8, 0x98, FIL_, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA0, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xB9, 0xA2, FIL_, 0x07, 0xCC, + 0x8C, FIL_, 0xC5, 0xA4, FIL_, 0xCC, 0xB1, FIL_, + 0xE1, 0xB9, 0xAE, FIL_, 0xCC, 0xA6, FIL_, 0xC8, + 0x9A, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA2, FIL_, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAA, FIL_, 0xCC, + 0xAD, FIL_, 0xE1, 0xB9, 0xB0, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xB9, 0xAC, FIL_, 0x13, 0xCC, 0xA8, + FIL_, 0xC5, 0xB2, FIL_, 0xCC, 0x83, FIL_, 0xC5, + 0xA8, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAA, FIL_, + 0xCC, 0x81, FIL_, 0xC3, 0x9A, FIL_, 0xCC, 0x86, + FIL_, 0xC5, 0xAC, FIL_, 0xCC, 0x8A, FIL_, 0xC5, + 0xAE, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x99, FIL_, + 0xCC, 0x91, FIL_, 0xC8, 0x96, FIL_, 0xCC, 0x8B, + FIL_, 0xC5, 0xB0, FIL_, 0xCC, 0xA4, FIL_, 0xE1, + 0xB9, 0xB2, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, + 0xB4, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x94, FIL_, + 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB6, FIL_, 0xCC, + 0x9B, FIL_, 0xC6, 0xAF, FIL_, 0xCC, 0x82, FIL_, + 0xC3, 0x9B, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x9C, + FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x93, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBB, 0xA4, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0xA6, FIL_, 0x02, 0xCC, 0x83, + FIL_, 0xE1, 0xB9, 0xBC, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xB9, 0xBE, FIL_, 0x06, 0xCC, 0x82, FIL_, + 0xC5, 0xB4, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, + 0x84, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x86, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x88, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x82, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBA, 0x80, FIL_, 0x02, 0xCC, + 0x87, FIL_, 0xE1, 0xBA, 0x8A, FIL_, 0xCC, 0x88, + FIL_, 0xE1, 0xBA, 0x8C, FIL_, 0x09, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0xB6, FIL_, 0xCC, 0x87, FIL_, + 0xE1, 0xBA, 0x8E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xBB, 0xB4, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9D, + FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB2, FIL_, 0xCC, + 0x82, FIL_, 0xC5, 0xB6, FIL_, 0xCC, 0x88, FIL_, + 0xC5, 0xB8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, + 0xB2, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xB8, + FIL_, 0x06, 0xCC, 0x87, FIL_, 0xC5, 0xBB, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x92, FIL_, 0xCC, + 0x8C, FIL_, 0xC5, 0xBD, FIL_, 0xCC, 0xB1, FIL_, + 0xE1, 0xBA, 0x94, FIL_, 0xCC, 0x82, FIL_, 0xE1, + 0xBA, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xB9, + FIL_, 0x10, 0xCC, 0x8C, FIL_, 0xC7, 0x8E, FIL_, + 0xCC, 0x8F, FIL_, 0xC8, 0x81, FIL_, 0xCC, 0xA8, + FIL_, 0xC4, 0x85, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xBA, 0xA1, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x83, + FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA3, FIL_, + 0xCC, 0x84, FIL_, 0xC4, 0x81, FIL_, 0xCC, 0x91, + FIL_, 0xC8, 0x83, FIL_, 0xCC, 0x8A, FIL_, 0xC3, + 0xA5, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xA4, FIL_, + 0xCC, 0x83, FIL_, 0xC3, 0xA3, FIL_, 0xCC, 0x82, + FIL_, 0xC3, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xC3, + 0xA1, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xA0, FIL_, + 0xCC, 0x87, FIL_, 0xC8, 0xA7, FIL_, 0xCC, 0xA5, + FIL_, 0xE1, 0xB8, 0x81, FIL_, 0x03, 0xCC, 0xB1, + FIL_, 0xE1, 0xB8, 0x87, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xB8, 0x85, FIL_, 0xCC, 0x87, FIL_, 0xE1, + 0xB8, 0x83, FIL_, 0x05, 0xCC, 0x87, FIL_, 0xC4, + 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xC3, 0xA7, FIL_, + 0xCC, 0x82, FIL_, 0xC4, 0x89, FIL_, 0xCC, 0x8C, + FIL_, 0xC4, 0x8D, FIL_, 0xCC, 0x81, FIL_, 0xC4, + 0x87, FIL_, 0x06, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, + 0x93, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x8B, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8D, FIL_, + 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8F, FIL_, 0xCC, + 0xA7, FIL_, 0xE1, 0xB8, 0x91, FIL_, 0xCC, 0x8C, + FIL_, 0xC4, 0x8F, FIL_, 0x11, 0xCC, 0xA8, FIL_, + 0xC4, 0x99, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9B, + FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x97, FIL_, 0xCC, + 0x88, FIL_, 0xC3, 0xAB, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xBA, 0xB9, FIL_, 0xCC, 0xB0, FIL_, 0xE1, + 0xB8, 0x9B, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x93, + FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x99, FIL_, + 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xBD, FIL_, 0xCC, + 0x86, FIL_, 0xC4, 0x95, FIL_, 0xCC, 0xA7, FIL_, + 0xC8, 0xA9, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, + 0xBB, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x85, FIL_, + 0xCC, 0x81, FIL_, 0xC3, 0xA9, FIL_, 0xCC, 0x91, + FIL_, 0xC8, 0x87, FIL_, 0xCC, 0x80, FIL_, 0xC3, + 0xA8, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAA, FIL_, + 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9F, FIL_, + 0x07, 0xCC, 0x86, FIL_, 0xC4, 0x9F, FIL_, 0xCC, + 0xA7, FIL_, 0xC4, 0xA3, FIL_, 0xCC, 0x81, FIL_, + 0xC7, 0xB5, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9D, + FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xA1, FIL_, 0xCC, + 0x8C, FIL_, 0xC7, 0xA7, FIL_, 0xCC, 0x84, FIL_, + 0xE1, 0xB8, 0xA1, FIL_, 0x08, 0xCC, 0x8C, FIL_, + 0xC8, 0x9F, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA5, + FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA7, FIL_, + 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0xA3, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xBA, 0x96, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xB8, 0xA5, FIL_, 0xCC, 0xA7, FIL_, + 0xE1, 0xB8, 0xA9, FIL_, 0xCC, 0xAE, FIL_, 0xE1, + 0xB8, 0xAB, FIL_, 0x0E, 0xCC, 0x81, FIL_, 0xC3, + 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xAC, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8B, FIL_, 0xCC, + 0x8C, FIL_, 0xC7, 0x90, FIL_, 0xCC, 0x89, FIL_, + 0xE1, 0xBB, 0x89, FIL_, 0xCC, 0x91, FIL_, 0xC8, + 0x8B, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x89, FIL_, + 0xCC, 0x82, FIL_, 0xC3, 0xAE, FIL_, 0xCC, 0xB0, + FIL_, 0xE1, 0xB8, 0xAD, FIL_, 0xCC, 0xA8, FIL_, + 0xC4, 0xAF, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0xAD, + FIL_, 0xCC, 0x84, FIL_, 0xC4, 0xAB, FIL_, 0xCC, + 0x83, FIL_, 0xC4, 0xA9, FIL_, 0xCC, 0x88, FIL_, + 0xC3, 0xAF, FIL_, 0x02, 0xCC, 0x82, FIL_, 0xC4, + 0xB5, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xB0, FIL_, + 0x05, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB3, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB1, FIL_, 0xCC, + 0xA7, FIL_, 0xC4, 0xB7, FIL_, 0xCC, 0x8C, FIL_, + 0xC7, 0xA9, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, + 0xB5, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB7, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0xBA, FIL_, + 0xCC, 0xA7, FIL_, 0xC4, 0xBC, FIL_, 0xCC, 0x8C, + FIL_, 0xC4, 0xBE, FIL_, 0xCC, 0xB1, FIL_, 0xE1, + 0xB8, 0xBB, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, + 0xBD, FIL_, 0x03, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, + 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBF, + FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x81, FIL_, + 0x09, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x87, FIL_, + 0xCC, 0x83, FIL_, 0xC3, 0xB1, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0x85, FIL_, 0xCC, 0xB1, FIL_, + 0xE1, 0xB9, 0x89, FIL_, 0xCC, 0x81, FIL_, 0xC5, + 0x84, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x86, FIL_, + 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0x8B, FIL_, 0xCC, + 0x8C, FIL_, 0xC5, 0x88, FIL_, 0xCC, 0x80, FIL_, + 0xC7, 0xB9, FIL_, 0x10, 0xCC, 0x89, FIL_, 0xE1, + 0xBB, 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xB3, + FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB2, FIL_, 0xCC, + 0x87, FIL_, 0xC8, 0xAF, FIL_, 0xCC, 0x8F, FIL_, + 0xC8, 0x8D, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, + 0x8D, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8D, FIL_, + 0xCC, 0x8C, FIL_, 0xC7, 0x92, FIL_, 0xCC, 0x86, + FIL_, 0xC5, 0x8F, FIL_, 0xCC, 0x8B, FIL_, 0xC5, + 0x91, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA1, FIL_, + 0xCC, 0x91, FIL_, 0xC8, 0x8F, FIL_, 0xCC, 0xA8, + FIL_, 0xC7, 0xAB, FIL_, 0xCC, 0x88, FIL_, 0xC3, + 0xB6, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB5, FIL_, + 0xCC, 0x82, FIL_, 0xC3, 0xB4, FIL_, 0x02, 0xCC, + 0x87, FIL_, 0xE1, 0xB9, 0x97, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0x95, FIL_, 0x08, 0xCC, 0xB1, + FIL_, 0xE1, 0xB9, 0x9F, FIL_, 0xCC, 0x87, FIL_, + 0xE1, 0xB9, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC5, + 0x95, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x91, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9B, FIL_, 0xCC, + 0x8C, FIL_, 0xC5, 0x99, FIL_, 0xCC, 0x91, FIL_, + 0xC8, 0x93, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x97, + FIL_, 0x07, 0xCC, 0xA6, FIL_, 0xC8, 0x99, FIL_, + 0xCC, 0x8C, FIL_, 0xC5, 0xA1, FIL_, 0xCC, 0x81, + FIL_, 0xC5, 0x9B, FIL_, 0xCC, 0x87, FIL_, 0xE1, + 0xB9, 0xA1, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0x9D, + FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x9F, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xB9, 0xA3, FIL_, 0x08, 0xCC, + 0x88, FIL_, 0xE1, 0xBA, 0x97, FIL_, 0xCC, 0xAD, + FIL_, 0xE1, 0xB9, 0xB1, FIL_, 0xCC, 0xB1, FIL_, + 0xE1, 0xB9, 0xAF, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB9, 0xAD, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA5, + FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA3, FIL_, 0xCC, + 0x87, FIL_, 0xE1, 0xB9, 0xAB, FIL_, 0xCC, 0xA6, + FIL_, 0xC8, 0x9B, FIL_, 0x13, 0xCC, 0x81, FIL_, + 0xC3, 0xBA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x97, + FIL_, 0xCC, 0x83, FIL_, 0xC5, 0xA9, FIL_, 0xCC, + 0x8F, FIL_, 0xC8, 0x95, FIL_, 0xCC, 0xA8, FIL_, + 0xC5, 0xB3, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xBB, + FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBC, FIL_, 0xCC, + 0x80, FIL_, 0xC3, 0xB9, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xBB, 0xA5, FIL_, 0xCC, 0xA4, FIL_, 0xE1, + 0xB9, 0xB3, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, + 0xA7, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB5, + FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB7, FIL_, + 0xCC, 0x9B, FIL_, 0xC6, 0xB0, FIL_, 0xCC, 0x84, + FIL_, 0xC5, 0xAB, FIL_, 0xCC, 0x8B, FIL_, 0xC5, + 0xB1, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAD, FIL_, + 0xCC, 0x8C, FIL_, 0xC7, 0x94, FIL_, 0xCC, 0x8A, + FIL_, 0xC5, 0xAF, FIL_, 0x02, 0xCC, 0x83, FIL_, + 0xE1, 0xB9, 0xBD, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB9, 0xBF, FIL_, 0x07, 0xCC, 0x82, FIL_, 0xC5, + 0xB5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0x81, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x83, FIL_, + 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x85, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBA, 0x89, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xBA, 0x87, FIL_, 0xCC, 0x8A, FIL_, + 0xE1, 0xBA, 0x98, FIL_, 0x02, 0xCC, 0x87, FIL_, + 0xE1, 0xBA, 0x8B, FIL_, 0xCC, 0x88, FIL_, 0xE1, + 0xBA, 0x8D, FIL_, 0x0A, 0xCC, 0x87, FIL_, 0xE1, + 0xBA, 0x8F, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, + 0xB9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB3, + FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB7, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB5, FIL_, 0xCC, + 0x82, FIL_, 0xC5, 0xB7, FIL_, 0xCC, 0x84, FIL_, + 0xC8, 0xB3, FIL_, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, + 0x99, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBF, FIL_, + 0xCC, 0x81, FIL_, 0xC3, 0xBD, FIL_, 0x06, 0xCC, + 0x8C, FIL_, 0xC5, 0xBE, FIL_, 0xCC, 0x87, FIL_, + 0xC5, 0xBC, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, + 0x95, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x93, + FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xBA, FIL_, 0xCC, + 0x82, FIL_, 0xE1, 0xBA, 0x91, FIL_, 0x03, 0xCC, + 0x80, FIL_, 0xE1, 0xBF, 0xAD, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x81, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x85, FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, + 0xBA, 0xA8, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, + 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA4, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA6, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9E, FIL_, 0x01, + 0xCC, 0x81, FIL_, 0xC7, 0xBA, FIL_, 0x02, 0xCC, + 0x84, FIL_, 0xC7, 0xA2, FIL_, 0xCC, 0x81, FIL_, + 0xC7, 0xBC, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, + 0xB8, 0x88, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, + 0xBA, 0xBE, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, + 0x80, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x84, + FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x82, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAE, FIL_, + 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x96, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x90, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBB, 0x92, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0x94, FIL_, 0x03, 0xCC, 0x84, + FIL_, 0xC8, 0xAC, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xB9, 0x8C, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, + 0x8E, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAA, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBE, FIL_, + 0x04, 0xCC, 0x80, FIL_, 0xC7, 0x9B, FIL_, 0xCC, + 0x84, FIL_, 0xC7, 0x95, FIL_, 0xCC, 0x8C, FIL_, + 0xC7, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x97, + FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA9, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA7, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA5, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBA, 0xAB, FIL_, 0x01, 0xCC, + 0x84, FIL_, 0xC7, 0x9F, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xC7, 0xBB, FIL_, 0x02, 0xCC, 0x84, FIL_, + 0xC7, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xBD, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x89, + FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x83, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBF, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x81, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBB, 0x85, FIL_, 0x01, 0xCC, + 0x81, FIL_, 0xE1, 0xB8, 0xAF, FIL_, 0x04, 0xCC, + 0x83, FIL_, 0xE1, 0xBB, 0x97, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0x95, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBB, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBB, 0x91, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, + 0xB9, 0x8D, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xAD, + FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0x8F, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAB, FIL_, 0x01, + 0xCC, 0x81, FIL_, 0xC7, 0xBF, FIL_, 0x04, 0xCC, + 0x81, FIL_, 0xC7, 0x98, FIL_, 0xCC, 0x84, FIL_, + 0xC7, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x9A, + FIL_, 0xCC, 0x80, FIL_, 0xC7, 0x9C, FIL_, 0x04, + 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xB0, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBA, 0xAE, FIL_, 0xCC, 0x83, + FIL_, 0xE1, 0xBA, 0xB4, FIL_, 0xCC, 0x89, FIL_, + 0xE1, 0xBA, 0xB2, FIL_, 0x04, 0xCC, 0x80, FIL_, + 0xE1, 0xBA, 0xB1, FIL_, 0xCC, 0x83, FIL_, 0xE1, + 0xBA, 0xB5, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, + 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB3, + FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x96, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x94, FIL_, + 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x95, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x97, FIL_, 0x02, + 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x90, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xB9, 0x92, FIL_, 0x02, 0xCC, + 0x80, FIL_, 0xE1, 0xB9, 0x91, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0x93, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA4, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA5, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA6, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA7, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0xB8, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0xB9, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xE1, 0xB9, 0xBA, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xE1, 0xB9, 0xBB, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xBA, 0x9B, FIL_, 0x05, 0xCC, 0x80, + FIL_, 0xE1, 0xBB, 0x9C, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBB, 0x9A, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xBB, 0xA2, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, + 0xA0, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x9E, + FIL_, 0x05, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA1, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9B, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA3, FIL_, 0xCC, + 0x89, FIL_, 0xE1, 0xBB, 0x9F, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBB, 0x9D, FIL_, 0x05, 0xCC, 0x83, + FIL_, 0xE1, 0xBB, 0xAE, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xBB, 0xB0, FIL_, 0xCC, 0x89, FIL_, 0xE1, + 0xBB, 0xAC, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, + 0xA8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAA, + FIL_, 0x05, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB1, + FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAF, FIL_, + 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xAD, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBB, 0xA9, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBB, 0xAB, FIL_, 0x01, 0xCC, 0x8C, + FIL_, 0xC7, 0xAE, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xC7, 0xAC, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, + 0xAD, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA0, + FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA1, FIL_, + 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9C, FIL_, + 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9D, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB0, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xC8, 0xB1, FIL_, 0x01, 0xCC, + 0x8C, FIL_, 0xC7, 0xAF, FIL_, 0x07, 0xCC, 0x93, + FIL_, 0xE1, 0xBC, 0x88, FIL_, 0xCC, 0x94, FIL_, + 0xE1, 0xBC, 0x89, FIL_, 0xCC, 0x81, FIL_, 0xCE, + 0x86, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xBC, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBE, 0xBA, FIL_, + 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB9, FIL_, 0xCC, + 0x86, FIL_, 0xE1, 0xBE, 0xB8, FIL_, 0x04, 0xCC, + 0x81, FIL_, 0xCE, 0x88, FIL_, 0xCC, 0x94, FIL_, + 0xE1, 0xBC, 0x99, FIL_, 0xCC, 0x93, FIL_, 0xE1, + 0xBC, 0x98, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, + 0x88, FIL_, 0x05, 0xCC, 0x94, FIL_, 0xE1, 0xBC, + 0xA9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8A, + FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x89, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBF, 0x8C, FIL_, 0xCC, 0x93, + FIL_, 0xE1, 0xBC, 0xA8, FIL_, 0x07, 0xCC, 0x81, + FIL_, 0xCE, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xCE, + 0xAA, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x98, + FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0x99, FIL_, + 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB8, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBC, 0xB9, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBF, 0x9A, FIL_, 0x04, 0xCC, 0x94, + FIL_, 0xE1, 0xBD, 0x89, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBF, 0xB8, FIL_, 0xCC, 0x81, FIL_, 0xCE, + 0x8C, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x88, + FIL_, 0x01, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xAC, + FIL_, 0x06, 0xCC, 0x81, FIL_, 0xCE, 0x8E, FIL_, + 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA8, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBD, 0x99, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBF, 0xAA, FIL_, 0xCC, 0x84, FIL_, + 0xE1, 0xBF, 0xA9, FIL_, 0xCC, 0x88, FIL_, 0xCE, + 0xAB, FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBF, + 0xBA, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8F, FIL_, + 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xBC, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBD, 0xA9, FIL_, 0xCC, 0x93, + FIL_, 0xE1, 0xBD, 0xA8, FIL_, 0x01, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0xB4, FIL_, 0x01, 0xCD, 0x85, + FIL_, 0xE1, 0xBF, 0x84, FIL_, 0x08, 0xCC, 0x81, + FIL_, 0xCE, 0xAC, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBD, 0xB0, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, + 0x80, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x81, + FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBE, 0xB6, FIL_, + 0xCC, 0x86, FIL_, 0xE1, 0xBE, 0xB0, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xB3, FIL_, 0xCC, 0x84, + FIL_, 0xE1, 0xBE, 0xB1, FIL_, 0x04, 0xCC, 0x81, + FIL_, 0xCE, 0xAD, FIL_, 0xCC, 0x94, FIL_, 0xE1, + 0xBC, 0x91, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, + 0xB2, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x90, + FIL_, 0x06, 0xCC, 0x81, FIL_, 0xCE, 0xAE, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB4, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBF, 0x83, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x86, FIL_, 0xCC, 0x94, FIL_, + 0xE1, 0xBC, 0xA1, FIL_, 0xCC, 0x93, FIL_, 0xE1, + 0xBC, 0xA0, FIL_, 0x08, 0xCD, 0x82, FIL_, 0xE1, + 0xBF, 0x96, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, + 0x90, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB0, + FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAF, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBC, 0xB1, FIL_, 0xCC, 0x84, + FIL_, 0xE1, 0xBF, 0x91, FIL_, 0xCC, 0x88, FIL_, + 0xCF, 0x8A, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, + 0xB6, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xCF, 0x8C, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB8, FIL_, + 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x80, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBD, 0x81, FIL_, 0x02, 0xCC, + 0x93, FIL_, 0xE1, 0xBF, 0xA4, FIL_, 0xCC, 0x94, + FIL_, 0xE1, 0xBF, 0xA5, FIL_, 0x08, 0xCC, 0x93, + FIL_, 0xE1, 0xBD, 0x90, FIL_, 0xCC, 0x94, FIL_, + 0xE1, 0xBD, 0x91, FIL_, 0xCC, 0x86, FIL_, 0xE1, + 0xBF, 0xA0, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, + 0xA6, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA1, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xBA, FIL_, + 0xCC, 0x81, FIL_, 0xCF, 0x8D, FIL_, 0xCC, 0x88, + FIL_, 0xCF, 0x8B, FIL_, 0x06, 0xCC, 0x94, FIL_, + 0xE1, 0xBD, 0xA1, FIL_, 0xCD, 0x85, FIL_, 0xE1, + 0xBF, 0xB3, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, + 0xBC, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xB6, + FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0xA0, FIL_, + 0xCC, 0x81, FIL_, 0xCF, 0x8E, FIL_, 0x03, 0xCD, + 0x82, FIL_, 0xE1, 0xBF, 0x97, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBF, 0x92, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x90, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, + 0xBF, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xB0, + FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xA7, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB4, FIL_, + 0x02, 0xCC, 0x88, FIL_, 0xCF, 0x94, FIL_, 0xCC, + 0x81, FIL_, 0xCF, 0x93, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD0, 0x87, FIL_, 0x02, 0xCC, 0x86, FIL_, + 0xD3, 0x90, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x92, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x83, FIL_, + 0x03, 0xCC, 0x86, FIL_, 0xD3, 0x96, FIL_, 0xCC, + 0x80, FIL_, 0xD0, 0x80, FIL_, 0xCC, 0x88, FIL_, + 0xD0, 0x81, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xD3, + 0x9C, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x81, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9E, FIL_, 0x04, + 0xCC, 0x80, FIL_, 0xD0, 0x8D, FIL_, 0xCC, 0x88, + FIL_, 0xD3, 0xA4, FIL_, 0xCC, 0x86, FIL_, 0xD0, + 0x99, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xA2, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x8C, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xA6, FIL_, 0x04, 0xCC, + 0x86, FIL_, 0xD0, 0x8E, FIL_, 0xCC, 0x8B, FIL_, + 0xD3, 0xB2, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB0, + FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xAE, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xB4, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xB8, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD3, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, + 0xD3, 0x91, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x93, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x93, FIL_, + 0x03, 0xCC, 0x80, FIL_, 0xD1, 0x90, FIL_, 0xCC, + 0x88, FIL_, 0xD1, 0x91, FIL_, 0xCC, 0x86, FIL_, + 0xD3, 0x97, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xD3, + 0x9D, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x82, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9F, FIL_, 0x04, + 0xCC, 0x88, FIL_, 0xD3, 0xA5, FIL_, 0xCC, 0x86, + FIL_, 0xD0, 0xB9, FIL_, 0xCC, 0x80, FIL_, 0xD1, + 0x9D, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xA3, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x9C, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xA7, FIL_, 0x04, 0xCC, + 0x84, FIL_, 0xD3, 0xAF, FIL_, 0xCC, 0x86, FIL_, + 0xD1, 0x9E, FIL_, 0xCC, 0x8B, FIL_, 0xD3, 0xB3, + FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB1, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xB5, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xB9, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD3, 0xAD, FIL_, 0x01, 0xCC, 0x88, FIL_, + 0xD1, 0x97, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, + 0xB6, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB7, + FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9A, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9B, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xAA, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xAB, FIL_, 0x03, 0xD9, 0x94, + FIL_, 0xD8, 0xA3, FIL_, 0xD9, 0x93, FIL_, 0xD8, + 0xA2, FIL_, 0xD9, 0x95, FIL_, 0xD8, 0xA5, FIL_, + 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA4, FIL_, 0x01, + 0xD9, 0x94, FIL_, 0xD8, 0xA6, FIL_, 0x01, 0xD9, + 0x94, FIL_, 0xDB, 0x82, FIL_, 0x01, 0xD9, 0x94, + FIL_, 0xDB, 0x93, FIL_, 0x01, 0xD9, 0x94, FIL_, + 0xDB, 0x80, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, + 0xE0, 0xA4, 0xA9, FIL_, 0x01, 0xE0, 0xA4, 0xBC, + FIL_, 0xE0, 0xA4, 0xB1, FIL_, 0x01, 0xE0, 0xA4, + 0xBC, FIL_, 0xE0, 0xA4, 0xB4, FIL_, 0x02, 0xE0, + 0xA6, 0xBE, FIL_, 0xE0, 0xA7, 0x8B, FIL_, 0xE0, + 0xA7, 0x97, FIL_, 0xE0, 0xA7, 0x8C, FIL_, 0x03, + 0xE0, 0xAD, 0x97, FIL_, 0xE0, 0xAD, 0x8C, FIL_, + 0xE0, 0xAC, 0xBE, FIL_, 0xE0, 0xAD, 0x8B, FIL_, + 0xE0, 0xAD, 0x96, FIL_, 0xE0, 0xAD, 0x88, FIL_, + 0x01, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAE, 0x94, + FIL_, 0x02, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, + 0x8A, FIL_, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAF, + 0x8C, FIL_, 0x01, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, + 0xAF, 0x8B, FIL_, 0x01, 0xE0, 0xB1, 0x96, FIL_, + 0xE0, 0xB1, 0x88, FIL_, 0x01, 0xE0, 0xB3, 0x95, + FIL_, 0xE0, 0xB3, 0x80, FIL_, 0x03, 0xE0, 0xB3, + 0x95, FIL_, 0xE0, 0xB3, 0x87, FIL_, 0xE0, 0xB3, + 0x82, FIL_, 0xE0, 0xB3, 0x8A, FIL_, 0xE0, 0xB3, + 0x96, FIL_, 0xE0, 0xB3, 0x88, FIL_, 0x01, 0xE0, + 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x8B, FIL_, 0x02, + 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8A, FIL_, + 0xE0, 0xB5, 0x97, FIL_, 0xE0, 0xB5, 0x8C, FIL_, + 0x01, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8B, + FIL_, 0x03, 0xE0, 0xB7, 0x8F, FIL_, 0xE0, 0xB7, + 0x9C, FIL_, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, + 0x9A, FIL_, 0xE0, 0xB7, 0x9F, FIL_, 0xE0, 0xB7, + 0x9E, FIL_, 0x01, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, + 0xB7, 0x9D, FIL_, 0x01, 0xE1, 0x80, 0xAE, FIL_, + 0xE1, 0x80, 0xA6, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xE1, 0xB8, 0xB8, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xE1, 0xB8, 0xB9, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xE1, 0xB9, 0x9C, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xE1, 0xB9, 0x9D, FIL_, 0x01, 0xCC, 0x87, FIL_, + 0xE1, 0xB9, 0xA8, FIL_, 0x01, 0xCC, 0x87, FIL_, + 0xE1, 0xB9, 0xA9, FIL_, 0x02, 0xCC, 0x86, FIL_, + 0xE1, 0xBA, 0xB6, FIL_, 0xCC, 0x82, FIL_, 0xE1, + 0xBA, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xE1, + 0xBA, 0xB7, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, + 0xAD, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, + 0x86, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, + 0x87, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, + 0x98, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, + 0x99, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBC, + 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x84, + FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x80, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x86, FIL_, 0x04, + 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x87, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0x83, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBC, 0x85, FIL_, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x81, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x83, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x84, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x85, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x86, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x87, FIL_, 0x04, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x88, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBC, 0x8A, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, + 0x8E, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8C, + FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8D, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x8B, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x8F, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x89, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8A, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8B, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8C, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8D, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8E, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x8F, FIL_, 0x02, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0x92, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBC, 0x94, FIL_, 0x02, 0xCC, 0x80, + FIL_, 0xE1, 0xBC, 0x93, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBC, 0x95, FIL_, 0x02, 0xCC, 0x80, FIL_, + 0xE1, 0xBC, 0x9A, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBC, 0x9C, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, + 0xBC, 0x9B, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, + 0x9D, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, + 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x90, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA4, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA2, FIL_, 0x04, + 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA3, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBC, 0xA5, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBC, 0xA7, FIL_, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x91, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x92, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x93, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x94, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x95, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x96, FIL_, 0x01, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0x97, FIL_, 0x04, 0xCD, 0x82, FIL_, + 0xE1, 0xBC, 0xAE, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBC, 0xAC, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, + 0x98, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAA, + FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xAF, + FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x99, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAD, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0xAB, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9A, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9B, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9C, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9D, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9E, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0x9F, FIL_, 0x03, 0xCC, + 0x81, FIL_, 0xE1, 0xBC, 0xB4, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBC, 0xB6, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBC, 0xB2, FIL_, 0x03, 0xCC, 0x81, FIL_, + 0xE1, 0xBC, 0xB5, FIL_, 0xCD, 0x82, FIL_, 0xE1, + 0xBC, 0xB7, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, + 0xB3, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, + 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBA, + FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBE, FIL_, + 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBB, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBF, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBC, 0xBD, FIL_, 0x02, 0xCC, + 0x80, FIL_, 0xE1, 0xBD, 0x82, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBD, 0x84, FIL_, 0x02, 0xCC, 0x80, + FIL_, 0xE1, 0xBD, 0x83, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBD, 0x85, FIL_, 0x02, 0xCC, 0x81, FIL_, + 0xE1, 0xBD, 0x8C, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBD, 0x8A, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, + 0xBD, 0x8D, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, + 0x8B, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBD, + 0x94, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x96, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x92, FIL_, + 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x97, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x95, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBD, 0x93, FIL_, 0x03, 0xCC, + 0x81, FIL_, 0xE1, 0xBD, 0x9D, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBD, 0x9F, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBD, 0x9B, FIL_, 0x04, 0xCC, 0x81, FIL_, + 0xE1, 0xBD, 0xA4, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBD, 0xA2, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, + 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA0, + FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA7, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xA5, FIL_, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA1, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBD, 0xA3, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA2, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA3, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA4, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA5, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA6, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA7, FIL_, 0x04, 0xCC, + 0x81, FIL_, 0xE1, 0xBD, 0xAC, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBD, 0xAA, FIL_, 0xCD, 0x82, FIL_, + 0xE1, 0xBD, 0xAE, FIL_, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xA8, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, + 0xBD, 0xAD, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, + 0xA9, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAF, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAB, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAA, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAB, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAC, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAD, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAE, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAF, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB2, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x82, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB2, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB7, FIL_, + 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x8F, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8D, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBF, 0x8E, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBF, 0x87, FIL_, 0x01, 0xCD, + 0x85, FIL_, 0xE1, 0xBF, 0xB7, FIL_, 0x03, 0xCC, + 0x80, FIL_, 0xE1, 0xBF, 0x9D, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x9F, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBF, 0x9E, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x86, 0x9A, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x86, 0x9B, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x86, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x87, 0x8D, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x87, 0x8F, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x87, 0x8E, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x88, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x88, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x88, 0x8C, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x88, 0xA4, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x88, 0xA6, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0x87, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB0, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB1, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB4, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB5, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB8, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x89, 0xB9, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x80, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xA0, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xA1, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x85, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x88, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xA3, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8A, 0xAF, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xAA, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xAB, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, + 0xE2, 0x8B, 0xAD, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x82, 0x94, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x81, 0x8C, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8E, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x90, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x92, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, + 0x94, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x81, 0x96, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x81, 0x98, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x81, 0x9A, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x81, 0x9C, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9E, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA0, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA2, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, + 0xA5, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x81, 0xA7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x81, 0xA9, FIL_, 0x02, 0xE3, 0x82, 0x9A, + FIL_, 0xE3, 0x81, 0xB1, FIL_, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x81, 0xB0, FIL_, 0x02, 0xE3, 0x82, + 0x9A, FIL_, 0xE3, 0x81, 0xB4, FIL_, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x81, 0xB3, FIL_, 0x02, 0xE3, + 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB7, FIL_, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB6, FIL_, 0x02, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB9, FIL_, + 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBA, FIL_, + 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xBC, + FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBD, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, + 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x83, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x82, 0xAC, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x82, 0xAE, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x82, 0xB0, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB2, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB4, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB6, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, + 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x82, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x82, 0xBC, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x82, 0xBE, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x83, 0x80, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x83, 0x82, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x85, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x87, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, + 0x89, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x83, 0x90, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, + 0x83, 0x91, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x83, 0x93, FIL_, 0xE3, 0x82, 0x9A, FIL_, + 0xE3, 0x83, 0x94, FIL_, 0x02, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x83, 0x96, FIL_, 0xE3, 0x82, 0x9A, + FIL_, 0xE3, 0x83, 0x97, FIL_, 0x02, 0xE3, 0x82, + 0x9A, FIL_, 0xE3, 0x83, 0x9A, FIL_, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x83, 0x99, FIL_, 0x02, 0xE3, + 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9D, FIL_, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x83, 0x9C, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB7, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB8, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, + 0xB9, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x83, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x83, 0xBE, FIL_, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + }, + { + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAE, FIL_, + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA0, FIL_, + 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAF, FIL_, + 0x10, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x80, FIL_, + 0xCC, 0x87, FIL_, 0xC8, 0xA6, FIL_, 0xCC, 0x83, + FIL_, 0xC3, 0x83, FIL_, 0xCC, 0x91, FIL_, 0xC8, + 0x82, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x80, FIL_, + 0xCC, 0x8A, FIL_, 0xC3, 0x85, FIL_, 0xCC, 0x88, + FIL_, 0xC3, 0x84, FIL_, 0xCC, 0x89, FIL_, 0xE1, + 0xBA, 0xA2, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, + 0xA0, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8D, FIL_, + 0xCC, 0x80, FIL_, 0xC3, 0x80, FIL_, 0xCC, 0x81, + FIL_, 0xC3, 0x81, FIL_, 0xCC, 0x82, FIL_, 0xC3, + 0x82, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x84, FIL_, + 0xCC, 0x86, FIL_, 0xC4, 0x82, FIL_, 0xCC, 0x84, + FIL_, 0xC4, 0x80, FIL_, 0x03, 0xCC, 0xB1, FIL_, + 0xE1, 0xB8, 0x86, FIL_, 0xCC, 0x87, FIL_, 0xE1, + 0xB8, 0x82, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0x84, FIL_, 0x05, 0xCC, 0xA7, FIL_, 0xC3, 0x87, + FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8C, FIL_, 0xCC, + 0x81, FIL_, 0xC4, 0x86, FIL_, 0xCC, 0x82, FIL_, + 0xC4, 0x88, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x8A, + FIL_, 0x06, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x90, + FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8E, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB8, 0x8E, FIL_, 0xCC, 0xAD, + FIL_, 0xE1, 0xB8, 0x92, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xB8, 0x8C, FIL_, 0xCC, 0x87, FIL_, 0xE1, + 0xB8, 0x8A, FIL_, 0x11, 0xCC, 0x84, FIL_, 0xC4, + 0x92, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x94, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB8, FIL_, 0xCC, + 0x91, FIL_, 0xC8, 0x86, FIL_, 0xCC, 0x82, FIL_, + 0xC3, 0x8A, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x84, + FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x98, FIL_, + 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xBA, FIL_, 0xCC, + 0xA7, FIL_, 0xC8, 0xA8, FIL_, 0xCC, 0x8C, FIL_, + 0xC4, 0x9A, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x88, + FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x98, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBA, 0xBC, FIL_, 0xCC, 0x87, + FIL_, 0xC4, 0x96, FIL_, 0xCC, 0x81, FIL_, 0xC3, + 0x89, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8B, FIL_, + 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9A, FIL_, 0x01, + 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9E, FIL_, 0x07, + 0xCC, 0x8C, FIL_, 0xC7, 0xA6, FIL_, 0xCC, 0x86, + FIL_, 0xC4, 0x9E, FIL_, 0xCC, 0x82, FIL_, 0xC4, + 0x9C, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xA2, FIL_, + 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xA0, FIL_, 0xCC, + 0x81, FIL_, 0xC7, 0xB4, FIL_, 0xCC, 0x87, FIL_, + 0xC4, 0xA0, FIL_, 0x07, 0xCC, 0x87, FIL_, 0xE1, + 0xB8, 0xA2, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, + 0xA8, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA4, FIL_, + 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA6, FIL_, 0xCC, + 0x8C, FIL_, 0xC8, 0x9E, FIL_, 0xCC, 0xAE, FIL_, + 0xE1, 0xB8, 0xAA, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB8, 0xA4, FIL_, 0x0F, 0xCC, 0xB0, FIL_, 0xE1, + 0xB8, 0xAC, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8F, + FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x8C, FIL_, 0xCC, + 0x89, FIL_, 0xE1, 0xBB, 0x88, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xBB, 0x8A, FIL_, 0xCC, 0x91, FIL_, + 0xC8, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8F, + FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8E, FIL_, 0xCC, + 0x81, FIL_, 0xC3, 0x8D, FIL_, 0xCC, 0x83, FIL_, + 0xC4, 0xA8, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xB0, + FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x88, FIL_, 0xCC, + 0xA8, FIL_, 0xC4, 0xAE, FIL_, 0xCC, 0x86, FIL_, + 0xC4, 0xAC, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0xAA, + FIL_, 0x01, 0xCC, 0x82, FIL_, 0xC4, 0xB4, FIL_, + 0x05, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB0, FIL_, + 0xCC, 0x8C, FIL_, 0xC7, 0xA8, FIL_, 0xCC, 0xB1, + FIL_, 0xE1, 0xB8, 0xB4, FIL_, 0xCC, 0xA7, FIL_, + 0xC4, 0xB6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB2, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB6, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBD, FIL_, + 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBC, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB8, 0xBA, FIL_, 0xCC, 0xA7, + FIL_, 0xC4, 0xBB, FIL_, 0xCC, 0x81, FIL_, 0xC4, + 0xB9, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB8, + 0xBE, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x80, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x82, FIL_, + 0x09, 0xCC, 0x83, FIL_, 0xC3, 0x91, FIL_, 0xCC, + 0x81, FIL_, 0xC5, 0x83, FIL_, 0xCC, 0xA7, FIL_, + 0xC5, 0x85, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x87, + FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x84, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x86, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB9, 0x88, FIL_, 0xCC, 0xAD, + FIL_, 0xE1, 0xB9, 0x8A, FIL_, 0xCC, 0x80, FIL_, + 0xC7, 0xB8, FIL_, 0x10, 0xCC, 0x89, FIL_, 0xE1, + 0xBB, 0x8E, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8C, + FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x94, FIL_, 0xCC, + 0x86, FIL_, 0xC5, 0x8E, FIL_, 0xCC, 0x83, FIL_, + 0xC3, 0x95, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x90, + FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x96, FIL_, 0xCC, + 0x9B, FIL_, 0xC6, 0xA0, FIL_, 0xCC, 0x91, FIL_, + 0xC8, 0x8E, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x91, + FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x8C, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBB, 0x8C, FIL_, 0xCC, 0x80, + FIL_, 0xC3, 0x92, FIL_, 0xCC, 0xA8, FIL_, 0xC7, + 0xAA, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAE, FIL_, + 0xCC, 0x81, FIL_, 0xC3, 0x93, FIL_, 0x02, 0xCC, + 0x87, FIL_, 0xE1, 0xB9, 0x96, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0x94, FIL_, 0x08, 0xCC, 0xA7, + FIL_, 0xC5, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC5, + 0x98, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x92, FIL_, + 0xCC, 0x8F, FIL_, 0xC8, 0x90, FIL_, 0xCC, 0x81, + FIL_, 0xC5, 0x94, FIL_, 0xCC, 0x87, FIL_, 0xE1, + 0xB9, 0x98, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, + 0x9E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9A, + FIL_, 0x07, 0xCC, 0xA6, FIL_, 0xC8, 0x98, FIL_, + 0xCC, 0x81, FIL_, 0xC5, 0x9A, FIL_, 0xCC, 0x82, + FIL_, 0xC5, 0x9C, FIL_, 0xCC, 0xA7, FIL_, 0xC5, + 0x9E, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA0, FIL_, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA0, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xB9, 0xA2, FIL_, 0x07, 0xCC, + 0xA6, FIL_, 0xC8, 0x9A, FIL_, 0xCC, 0x87, FIL_, + 0xE1, 0xB9, 0xAA, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB9, 0xAC, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, + 0xAE, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB0, + FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA2, FIL_, 0xCC, + 0x8C, FIL_, 0xC5, 0xA4, FIL_, 0x13, 0xCC, 0x8A, + FIL_, 0xC5, 0xAE, FIL_, 0xCC, 0x88, FIL_, 0xC3, + 0x9C, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0xB0, FIL_, + 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB6, FIL_, 0xCC, + 0xA8, FIL_, 0xC5, 0xB2, FIL_, 0xCC, 0x8C, FIL_, + 0xC7, 0x93, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x99, + FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x94, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBB, 0xA4, FIL_, 0xCC, 0xA4, + FIL_, 0xE1, 0xB9, 0xB2, FIL_, 0xCC, 0x81, FIL_, + 0xC3, 0x9A, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x9B, + FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB4, FIL_, + 0xCC, 0x83, FIL_, 0xC5, 0xA8, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0xA6, FIL_, 0xCC, 0x84, FIL_, + 0xC5, 0xAA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x96, + FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAC, FIL_, 0xCC, + 0x9B, FIL_, 0xC6, 0xAF, FIL_, 0x02, 0xCC, 0xA3, + FIL_, 0xE1, 0xB9, 0xBE, FIL_, 0xCC, 0x83, FIL_, + 0xE1, 0xB9, 0xBC, FIL_, 0x06, 0xCC, 0x88, FIL_, + 0xE1, 0xBA, 0x84, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBA, 0x82, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, + 0x80, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x88, + FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB4, FIL_, 0xCC, + 0x87, FIL_, 0xE1, 0xBA, 0x86, FIL_, 0x02, 0xCC, + 0x88, FIL_, 0xE1, 0xBA, 0x8C, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xBA, 0x8A, FIL_, 0x09, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0xB6, FIL_, 0xCC, 0xA3, FIL_, + 0xE1, 0xBB, 0xB4, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBB, 0xB2, FIL_, 0xCC, 0x88, FIL_, 0xC5, 0xB8, + FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9D, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBB, 0xB8, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xBA, 0x8E, FIL_, 0xCC, 0x84, FIL_, + 0xC8, 0xB2, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB6, + FIL_, 0x06, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0x90, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x92, FIL_, + 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x94, FIL_, 0xCC, + 0x8C, FIL_, 0xC5, 0xBD, FIL_, 0xCC, 0x87, FIL_, + 0xC5, 0xBB, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xB9, + FIL_, 0x10, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xA1, + FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x85, FIL_, 0xCC, + 0x81, FIL_, 0xC3, 0xA1, FIL_, 0xCC, 0x82, FIL_, + 0xC3, 0xA2, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, + 0xA3, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xA3, FIL_, + 0xCC, 0x8C, FIL_, 0xC7, 0x8E, FIL_, 0xCC, 0x8A, + FIL_, 0xC3, 0xA5, FIL_, 0xCC, 0x88, FIL_, 0xC3, + 0xA4, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xA7, FIL_, + 0xCC, 0x91, FIL_, 0xC8, 0x83, FIL_, 0xCC, 0xA5, + FIL_, 0xE1, 0xB8, 0x81, FIL_, 0xCC, 0x84, FIL_, + 0xC4, 0x81, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x81, + FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x83, FIL_, 0xCC, + 0x80, FIL_, 0xC3, 0xA0, FIL_, 0x03, 0xCC, 0xA3, + FIL_, 0xE1, 0xB8, 0x85, FIL_, 0xCC, 0x87, FIL_, + 0xE1, 0xB8, 0x83, FIL_, 0xCC, 0xB1, FIL_, 0xE1, + 0xB8, 0x87, FIL_, 0x05, 0xCC, 0x87, FIL_, 0xC4, + 0x8B, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8D, FIL_, + 0xCC, 0x82, FIL_, 0xC4, 0x89, FIL_, 0xCC, 0x81, + FIL_, 0xC4, 0x87, FIL_, 0xCC, 0xA7, FIL_, 0xC3, + 0xA7, FIL_, 0x06, 0xCC, 0x87, FIL_, 0xE1, 0xB8, + 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x91, + FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8F, FIL_, + 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8D, FIL_, 0xCC, + 0x8C, FIL_, 0xC4, 0x8F, FIL_, 0xCC, 0xAD, FIL_, + 0xE1, 0xB8, 0x93, FIL_, 0x11, 0xCC, 0x80, FIL_, + 0xC3, 0xA8, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xA9, + FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAA, FIL_, 0xCC, + 0x88, FIL_, 0xC3, 0xAB, FIL_, 0xCC, 0x84, FIL_, + 0xC4, 0x93, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x95, + FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x97, FIL_, 0xCC, + 0xA8, FIL_, 0xC4, 0x99, FIL_, 0xCC, 0x8C, FIL_, + 0xC4, 0x9B, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x85, + FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x87, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBA, 0xB9, FIL_, 0xCC, 0xA7, + FIL_, 0xC8, 0xA9, FIL_, 0xCC, 0x83, FIL_, 0xE1, + 0xBA, 0xBD, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, + 0xBB, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x99, + FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9B, FIL_, + 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9F, FIL_, + 0x07, 0xCC, 0x86, FIL_, 0xC4, 0x9F, FIL_, 0xCC, + 0x87, FIL_, 0xC4, 0xA1, FIL_, 0xCC, 0x82, FIL_, + 0xC4, 0x9D, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xB8, + 0xA1, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA7, FIL_, + 0xCC, 0xA7, FIL_, 0xC4, 0xA3, FIL_, 0xCC, 0x81, + FIL_, 0xC7, 0xB5, FIL_, 0x08, 0xCC, 0xA7, FIL_, + 0xE1, 0xB8, 0xA9, FIL_, 0xCC, 0xB1, FIL_, 0xE1, + 0xBA, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC8, 0x9F, + FIL_, 0xCC, 0xAE, FIL_, 0xE1, 0xB8, 0xAB, FIL_, + 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA7, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xB8, 0xA5, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB8, 0xA3, FIL_, 0xCC, 0x82, FIL_, + 0xC4, 0xA5, FIL_, 0x0E, 0xCC, 0x88, FIL_, 0xC3, + 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x89, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8B, FIL_, + 0xCC, 0x82, FIL_, 0xC3, 0xAE, FIL_, 0xCC, 0x81, + FIL_, 0xC3, 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xC3, + 0xAC, FIL_, 0xCC, 0x83, FIL_, 0xC4, 0xA9, FIL_, + 0xCC, 0x84, FIL_, 0xC4, 0xAB, FIL_, 0xCC, 0x86, + FIL_, 0xC4, 0xAD, FIL_, 0xCC, 0xA8, FIL_, 0xC4, + 0xAF, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0xAD, + FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x90, FIL_, 0xCC, + 0x91, FIL_, 0xC8, 0x8B, FIL_, 0xCC, 0x8F, FIL_, + 0xC8, 0x89, FIL_, 0x02, 0xCC, 0x8C, FIL_, 0xC7, + 0xB0, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xB5, FIL_, + 0x05, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xB5, FIL_, + 0xCC, 0xA7, FIL_, 0xC4, 0xB7, FIL_, 0xCC, 0x8C, + FIL_, 0xC7, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xB8, 0xB1, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB3, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, + 0xB7, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBD, + FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xBB, FIL_, + 0xCC, 0xA7, FIL_, 0xC4, 0xBC, FIL_, 0xCC, 0x81, + FIL_, 0xC4, 0xBA, FIL_, 0xCC, 0x8C, FIL_, 0xC4, + 0xBE, FIL_, 0x03, 0xCC, 0x87, FIL_, 0xE1, 0xB9, + 0x81, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x83, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBF, FIL_, + 0x09, 0xCC, 0x80, FIL_, 0xC7, 0xB9, FIL_, 0xCC, + 0xAD, FIL_, 0xE1, 0xB9, 0x8B, FIL_, 0xCC, 0x83, + FIL_, 0xC3, 0xB1, FIL_, 0xCC, 0x81, FIL_, 0xC5, + 0x84, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x87, + FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x89, FIL_, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x85, FIL_, 0xCC, + 0xA7, FIL_, 0xC5, 0x86, FIL_, 0xCC, 0x8C, FIL_, + 0xC5, 0x88, FIL_, 0x10, 0xCC, 0xA3, FIL_, 0xE1, + 0xBB, 0x8D, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAF, + FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB2, FIL_, 0xCC, + 0x91, FIL_, 0xC8, 0x8F, FIL_, 0xCC, 0x89, FIL_, + 0xE1, 0xBB, 0x8F, FIL_, 0xCC, 0x88, FIL_, 0xC3, + 0xB6, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB5, FIL_, + 0xCC, 0x81, FIL_, 0xC3, 0xB3, FIL_, 0xCC, 0x8C, + FIL_, 0xC7, 0x92, FIL_, 0xCC, 0xA8, FIL_, 0xC7, + 0xAB, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA1, FIL_, + 0xCC, 0x84, FIL_, 0xC5, 0x8D, FIL_, 0xCC, 0x86, + FIL_, 0xC5, 0x8F, FIL_, 0xCC, 0x8B, FIL_, 0xC5, + 0x91, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xB4, FIL_, + 0xCC, 0x8F, FIL_, 0xC8, 0x8D, FIL_, 0x02, 0xCC, + 0x87, FIL_, 0xE1, 0xB9, 0x97, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0x95, FIL_, 0x08, 0xCC, 0x8C, + FIL_, 0xC5, 0x99, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB9, 0x9B, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x95, + FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x97, FIL_, 0xCC, + 0xB1, FIL_, 0xE1, 0xB9, 0x9F, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0x99, FIL_, 0xCC, 0x91, FIL_, + 0xC8, 0x93, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x91, + FIL_, 0x07, 0xCC, 0xA7, FIL_, 0xC5, 0x9F, FIL_, + 0xCC, 0x82, FIL_, 0xC5, 0x9D, FIL_, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA1, FIL_, 0xCC, 0xA6, FIL_, + 0xC8, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x9B, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xA3, FIL_, + 0xCC, 0x8C, FIL_, 0xC5, 0xA1, FIL_, 0x08, 0xCC, + 0xA6, FIL_, 0xC8, 0x9B, FIL_, 0xCC, 0xAD, FIL_, + 0xE1, 0xB9, 0xB1, FIL_, 0xCC, 0xB1, FIL_, 0xE1, + 0xB9, 0xAF, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, + 0xAD, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAB, + FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA5, FIL_, 0xCC, + 0xA7, FIL_, 0xC5, 0xA3, FIL_, 0xCC, 0x88, FIL_, + 0xE1, 0xBA, 0x97, FIL_, 0x13, 0xCC, 0x8A, FIL_, + 0xC5, 0xAF, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x95, + FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x94, FIL_, 0xCC, + 0x80, FIL_, 0xC3, 0xB9, FIL_, 0xCC, 0x9B, FIL_, + 0xC6, 0xB0, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xBB, + FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xBA, FIL_, 0xCC, + 0x88, FIL_, 0xC3, 0xBC, FIL_, 0xCC, 0x83, FIL_, + 0xC5, 0xA9, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, + 0xA7, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAB, FIL_, + 0xCC, 0x86, FIL_, 0xC5, 0xAD, FIL_, 0xCC, 0xAD, + FIL_, 0xE1, 0xB9, 0xB7, FIL_, 0xCC, 0x8B, FIL_, + 0xC5, 0xB1, FIL_, 0xCC, 0xA8, FIL_, 0xC5, 0xB3, + FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x97, FIL_, 0xCC, + 0xA4, FIL_, 0xE1, 0xB9, 0xB3, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xBB, 0xA5, FIL_, 0xCC, 0xB0, FIL_, + 0xE1, 0xB9, 0xB5, FIL_, 0x02, 0xCC, 0x83, FIL_, + 0xE1, 0xB9, 0xBD, FIL_, 0xCC, 0xA3, FIL_, 0xE1, + 0xB9, 0xBF, FIL_, 0x07, 0xCC, 0x8A, FIL_, 0xE1, + 0xBA, 0x98, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, + 0x87, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x83, + FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB5, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBA, 0x81, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xBA, 0x89, FIL_, 0xCC, 0x88, FIL_, + 0xE1, 0xBA, 0x85, FIL_, 0x02, 0xCC, 0x87, FIL_, + 0xE1, 0xBA, 0x8B, FIL_, 0xCC, 0x88, FIL_, 0xE1, + 0xBA, 0x8D, FIL_, 0x0A, 0xCC, 0x87, FIL_, 0xE1, + 0xBA, 0x8F, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, + 0xB5, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB7, + FIL_, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, 0x99, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB3, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBB, 0xB9, FIL_, 0xCC, 0x88, + FIL_, 0xC3, 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xC3, + 0xBD, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB3, FIL_, + 0xCC, 0x82, FIL_, 0xC5, 0xB7, FIL_, 0x06, 0xCC, + 0xB1, FIL_, 0xE1, 0xBA, 0x95, FIL_, 0xCC, 0xA3, + FIL_, 0xE1, 0xBA, 0x93, FIL_, 0xCC, 0x82, FIL_, + 0xE1, 0xBA, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xC5, + 0xBA, FIL_, 0xCC, 0x87, FIL_, 0xC5, 0xBC, FIL_, + 0xCC, 0x8C, FIL_, 0xC5, 0xBE, FIL_, 0x03, 0xCC, + 0x80, FIL_, 0xE1, 0xBF, 0xAD, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x81, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x85, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, + 0xBA, 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, + 0xA4, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA8, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA6, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9E, FIL_, 0x01, + 0xCC, 0x81, FIL_, 0xC7, 0xBA, FIL_, 0x02, 0xCC, + 0x84, FIL_, 0xC7, 0xA2, FIL_, 0xCC, 0x81, FIL_, + 0xC7, 0xBC, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, + 0xB8, 0x88, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, + 0xBB, 0x84, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, + 0x80, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x82, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBE, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAE, FIL_, + 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x90, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x92, FIL_, 0xCC, + 0x89, FIL_, 0xE1, 0xBB, 0x94, FIL_, 0xCC, 0x83, + FIL_, 0xE1, 0xBB, 0x96, FIL_, 0x03, 0xCC, 0x84, + FIL_, 0xC8, 0xAC, FIL_, 0xCC, 0x88, FIL_, 0xE1, + 0xB9, 0x8E, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, + 0x8C, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAA, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBE, FIL_, + 0x04, 0xCC, 0x80, FIL_, 0xC7, 0x9B, FIL_, 0xCC, + 0x84, FIL_, 0xC7, 0x95, FIL_, 0xCC, 0x8C, FIL_, + 0xC7, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x97, + FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA5, + FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xAB, FIL_, + 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA9, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBA, 0xA7, FIL_, 0x01, 0xCC, + 0x84, FIL_, 0xC7, 0x9F, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xC7, 0xBB, FIL_, 0x02, 0xCC, 0x81, FIL_, + 0xC7, 0xBD, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0xA3, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x89, + FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x83, + FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x85, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x81, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBA, 0xBF, FIL_, 0x01, 0xCC, + 0x81, FIL_, 0xE1, 0xB8, 0xAF, FIL_, 0x04, 0xCC, + 0x80, FIL_, 0xE1, 0xBB, 0x93, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBB, 0x91, FIL_, 0xCC, 0x83, FIL_, + 0xE1, 0xBB, 0x97, FIL_, 0xCC, 0x89, FIL_, 0xE1, + 0xBB, 0x95, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, + 0xB9, 0x8D, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, + 0x8F, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xAD, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAB, FIL_, 0x01, + 0xCC, 0x81, FIL_, 0xC7, 0xBF, FIL_, 0x04, 0xCC, + 0x8C, FIL_, 0xC7, 0x9A, FIL_, 0xCC, 0x84, FIL_, + 0xC7, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xC7, 0x9C, + FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x98, FIL_, 0x04, + 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xAE, FIL_, 0xCC, + 0x83, FIL_, 0xE1, 0xBA, 0xB4, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBA, 0xB2, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBA, 0xB0, FIL_, 0x04, 0xCC, 0x83, FIL_, + 0xE1, 0xBA, 0xB5, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBA, 0xB1, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, + 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB3, + FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x96, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x94, FIL_, + 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x95, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x97, FIL_, 0x02, + 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x90, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xB9, 0x92, FIL_, 0x02, 0xCC, + 0x81, FIL_, 0xE1, 0xB9, 0x93, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xB9, 0x91, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA4, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA5, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA6, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xB9, 0xA7, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0xB8, FIL_, 0x01, 0xCC, 0x81, + FIL_, 0xE1, 0xB9, 0xB9, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xE1, 0xB9, 0xBA, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xE1, 0xB9, 0xBB, FIL_, 0x01, 0xCC, 0x87, + FIL_, 0xE1, 0xBA, 0x9B, FIL_, 0x05, 0xCC, 0x80, + FIL_, 0xE1, 0xBB, 0x9C, FIL_, 0xCC, 0x89, FIL_, + 0xE1, 0xBB, 0x9E, FIL_, 0xCC, 0x83, FIL_, 0xE1, + 0xBB, 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, + 0x9A, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA2, + FIL_, 0x05, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA1, + FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA3, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9B, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBB, 0x9D, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0x9F, FIL_, 0x05, 0xCC, 0x81, + FIL_, 0xE1, 0xBB, 0xA8, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBB, 0xAA, FIL_, 0xCC, 0x89, FIL_, 0xE1, + 0xBB, 0xAC, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, + 0xAE, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB0, + FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAB, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0xA9, FIL_, + 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAF, FIL_, 0xCC, + 0xA3, FIL_, 0xE1, 0xBB, 0xB1, FIL_, 0xCC, 0x89, + FIL_, 0xE1, 0xBB, 0xAD, FIL_, 0x01, 0xCC, 0x8C, + FIL_, 0xC7, 0xAE, FIL_, 0x01, 0xCC, 0x84, FIL_, + 0xC7, 0xAC, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, + 0xAD, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA0, + FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA1, FIL_, + 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9C, FIL_, + 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9D, FIL_, + 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB0, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xC8, 0xB1, FIL_, 0x01, 0xCC, + 0x8C, FIL_, 0xC7, 0xAF, FIL_, 0x07, 0xCC, 0x93, + FIL_, 0xE1, 0xBC, 0x88, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x86, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBE, + 0xB8, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB9, + FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x89, FIL_, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xBC, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBE, 0xBA, FIL_, 0x04, 0xCC, + 0x94, FIL_, 0xE1, 0xBC, 0x99, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBF, 0x88, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x88, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, + 0x98, FIL_, 0x05, 0xCD, 0x85, FIL_, 0xE1, 0xBF, + 0x8C, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x89, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8A, FIL_, 0xCC, + 0x93, FIL_, 0xE1, 0xBC, 0xA8, FIL_, 0xCC, 0x94, + FIL_, 0xE1, 0xBC, 0xA9, FIL_, 0x07, 0xCC, 0x80, + FIL_, 0xE1, 0xBF, 0x9A, FIL_, 0xCC, 0x84, FIL_, + 0xE1, 0xBF, 0x99, FIL_, 0xCC, 0x93, FIL_, 0xE1, + 0xBC, 0xB8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, + 0xB9, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x98, + FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8A, FIL_, 0xCC, + 0x88, FIL_, 0xCE, 0xAA, FIL_, 0x04, 0xCC, 0x81, + FIL_, 0xCE, 0x8C, FIL_, 0xCC, 0x94, FIL_, 0xE1, + 0xBD, 0x89, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, + 0x88, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xB8, + FIL_, 0x01, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xAC, + FIL_, 0x06, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x99, + FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA8, FIL_, + 0xCC, 0x88, FIL_, 0xCE, 0xAB, FIL_, 0xCC, 0x84, + FIL_, 0xE1, 0xBF, 0xA9, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x8E, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, + 0xAA, FIL_, 0x05, 0xCC, 0x93, FIL_, 0xE1, 0xBD, + 0xA8, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xBC, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xBA, FIL_, + 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0xA9, FIL_, 0xCC, + 0x81, FIL_, 0xCE, 0x8F, FIL_, 0x01, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0xB4, FIL_, 0x01, 0xCD, 0x85, + FIL_, 0xE1, 0xBF, 0x84, FIL_, 0x08, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0xB3, FIL_, 0xCC, 0x84, FIL_, + 0xE1, 0xBE, 0xB1, FIL_, 0xCC, 0x86, FIL_, 0xE1, + 0xBE, 0xB0, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, + 0xB0, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAC, FIL_, + 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x81, FIL_, 0xCC, + 0x93, FIL_, 0xE1, 0xBC, 0x80, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBE, 0xB6, FIL_, 0x04, 0xCC, 0x93, + FIL_, 0xE1, 0xBC, 0x90, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBD, 0xB2, FIL_, 0xCC, 0x94, FIL_, 0xE1, + 0xBC, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAD, + FIL_, 0x06, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xA1, + FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAE, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBF, 0x83, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x86, FIL_, 0xCC, 0x93, FIL_, + 0xE1, 0xBC, 0xA0, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBD, 0xB4, FIL_, 0x08, 0xCC, 0x88, FIL_, 0xCF, + 0x8A, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAF, FIL_, + 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB0, FIL_, 0xCC, + 0x94, FIL_, 0xE1, 0xBC, 0xB1, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBD, 0xB6, FIL_, 0xCC, 0x86, FIL_, + 0xE1, 0xBF, 0x90, FIL_, 0xCC, 0x84, FIL_, 0xE1, + 0xBF, 0x91, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, + 0x96, FIL_, 0x04, 0xCC, 0x93, FIL_, 0xE1, 0xBD, + 0x80, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB8, + FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x81, FIL_, + 0xCC, 0x81, FIL_, 0xCF, 0x8C, FIL_, 0x02, 0xCC, + 0x93, FIL_, 0xE1, 0xBF, 0xA4, FIL_, 0xCC, 0x94, + FIL_, 0xE1, 0xBF, 0xA5, FIL_, 0x08, 0xCC, 0x81, + FIL_, 0xCF, 0x8D, FIL_, 0xCC, 0x94, FIL_, 0xE1, + 0xBD, 0x91, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, + 0xA6, FIL_, 0xCC, 0x88, FIL_, 0xCF, 0x8B, FIL_, + 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA1, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBD, 0xBA, FIL_, 0xCC, 0x93, + FIL_, 0xE1, 0xBD, 0x90, FIL_, 0xCC, 0x86, FIL_, + 0xE1, 0xBF, 0xA0, FIL_, 0x06, 0xCC, 0x80, FIL_, + 0xE1, 0xBD, 0xBC, FIL_, 0xCC, 0x94, FIL_, 0xE1, + 0xBD, 0xA1, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, + 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x8E, FIL_, + 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB3, FIL_, 0xCD, + 0x82, FIL_, 0xE1, 0xBF, 0xB6, FIL_, 0x03, 0xCC, + 0x80, FIL_, 0xE1, 0xBF, 0x92, FIL_, 0xCD, 0x82, + FIL_, 0xE1, 0xBF, 0x97, FIL_, 0xCC, 0x81, FIL_, + 0xCE, 0x90, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, + 0xBF, 0xA7, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, + 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xB0, FIL_, + 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB4, FIL_, + 0x02, 0xCC, 0x88, FIL_, 0xCF, 0x94, FIL_, 0xCC, + 0x81, FIL_, 0xCF, 0x93, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD0, 0x87, FIL_, 0x02, 0xCC, 0x88, FIL_, + 0xD3, 0x92, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x90, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x83, FIL_, + 0x03, 0xCC, 0x88, FIL_, 0xD0, 0x81, FIL_, 0xCC, + 0x80, FIL_, 0xD0, 0x80, FIL_, 0xCC, 0x86, FIL_, + 0xD3, 0x96, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, + 0x81, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x9C, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9E, FIL_, 0x04, + 0xCC, 0x84, FIL_, 0xD3, 0xA2, FIL_, 0xCC, 0x88, + FIL_, 0xD3, 0xA4, FIL_, 0xCC, 0x86, FIL_, 0xD0, + 0x99, FIL_, 0xCC, 0x80, FIL_, 0xD0, 0x8D, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x8C, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xA6, FIL_, 0x04, 0xCC, + 0x8B, FIL_, 0xD3, 0xB2, FIL_, 0xCC, 0x88, FIL_, + 0xD3, 0xB0, FIL_, 0xCC, 0x86, FIL_, 0xD0, 0x8E, + FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xAE, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xB4, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xB8, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD3, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, + 0xD3, 0x91, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x93, + FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x93, FIL_, + 0x03, 0xCC, 0x80, FIL_, 0xD1, 0x90, FIL_, 0xCC, + 0x86, FIL_, 0xD3, 0x97, FIL_, 0xCC, 0x88, FIL_, + 0xD1, 0x91, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, + 0x82, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x9D, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9F, FIL_, 0x04, + 0xCC, 0x86, FIL_, 0xD0, 0xB9, FIL_, 0xCC, 0x88, + FIL_, 0xD3, 0xA5, FIL_, 0xCC, 0x84, FIL_, 0xD3, + 0xA3, FIL_, 0xCC, 0x80, FIL_, 0xD1, 0x9D, FIL_, + 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x9C, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xA7, FIL_, 0x04, 0xCC, + 0x8B, FIL_, 0xD3, 0xB3, FIL_, 0xCC, 0x84, FIL_, + 0xD3, 0xAF, FIL_, 0xCC, 0x86, FIL_, 0xD1, 0x9E, + FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB1, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xB5, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xB9, FIL_, 0x01, 0xCC, 0x88, + FIL_, 0xD3, 0xAD, FIL_, 0x01, 0xCC, 0x88, FIL_, + 0xD1, 0x97, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, + 0xB6, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB7, + FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9A, FIL_, + 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9B, FIL_, 0x01, + 0xCC, 0x88, FIL_, 0xD3, 0xAA, FIL_, 0x01, 0xCC, + 0x88, FIL_, 0xD3, 0xAB, FIL_, 0x03, 0xD9, 0x94, + FIL_, 0xD8, 0xA3, FIL_, 0xD9, 0x95, FIL_, 0xD8, + 0xA5, FIL_, 0xD9, 0x93, FIL_, 0xD8, 0xA2, FIL_, + 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA4, FIL_, 0x01, + 0xD9, 0x94, FIL_, 0xD8, 0xA6, FIL_, 0x01, 0xD9, + 0x94, FIL_, 0xDB, 0x82, FIL_, 0x01, 0xD9, 0x94, + FIL_, 0xDB, 0x93, FIL_, 0x01, 0xD9, 0x94, FIL_, + 0xDB, 0x80, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, + 0xE0, 0xA4, 0xA9, FIL_, 0x01, 0xE0, 0xA4, 0xBC, + FIL_, 0xE0, 0xA4, 0xB1, FIL_, 0x01, 0xE0, 0xA4, + 0xBC, FIL_, 0xE0, 0xA4, 0xB4, FIL_, 0x02, 0xE0, + 0xA6, 0xBE, FIL_, 0xE0, 0xA7, 0x8B, FIL_, 0xE0, + 0xA7, 0x97, FIL_, 0xE0, 0xA7, 0x8C, FIL_, 0x03, + 0xE0, 0xAD, 0x96, FIL_, 0xE0, 0xAD, 0x88, FIL_, + 0xE0, 0xAC, 0xBE, FIL_, 0xE0, 0xAD, 0x8B, FIL_, + 0xE0, 0xAD, 0x97, FIL_, 0xE0, 0xAD, 0x8C, FIL_, + 0x01, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAE, 0x94, + FIL_, 0x02, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAF, + 0x8C, FIL_, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, + 0x8A, FIL_, 0x01, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, + 0xAF, 0x8B, FIL_, 0x01, 0xE0, 0xB1, 0x96, FIL_, + 0xE0, 0xB1, 0x88, FIL_, 0x01, 0xE0, 0xB3, 0x95, + FIL_, 0xE0, 0xB3, 0x80, FIL_, 0x03, 0xE0, 0xB3, + 0x82, FIL_, 0xE0, 0xB3, 0x8A, FIL_, 0xE0, 0xB3, + 0x96, FIL_, 0xE0, 0xB3, 0x88, FIL_, 0xE0, 0xB3, + 0x95, FIL_, 0xE0, 0xB3, 0x87, FIL_, 0x01, 0xE0, + 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x8B, FIL_, 0x02, + 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8A, FIL_, + 0xE0, 0xB5, 0x97, FIL_, 0xE0, 0xB5, 0x8C, FIL_, + 0x01, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8B, + FIL_, 0x03, 0xE0, 0xB7, 0x9F, FIL_, 0xE0, 0xB7, + 0x9E, FIL_, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, + 0x9A, FIL_, 0xE0, 0xB7, 0x8F, FIL_, 0xE0, 0xB7, + 0x9C, FIL_, 0x01, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, + 0xB7, 0x9D, FIL_, 0x01, 0xE1, 0x80, 0xAE, FIL_, + 0xE1, 0x80, 0xA6, FIL_, 0x01, 0xE1, 0xAC, 0xB5, + FIL_, 0xE1, 0xAC, 0x86, FIL_, 0x01, 0xE1, 0xAC, + 0xB5, FIL_, 0xE1, 0xAC, 0x88, FIL_, 0x01, 0xE1, + 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8A, FIL_, 0x01, + 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8C, FIL_, + 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8E, + FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, + 0x92, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, + 0xAC, 0xBB, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, + 0xE1, 0xAC, 0xBD, FIL_, 0x01, 0xE1, 0xAC, 0xB5, + FIL_, 0xE1, 0xAD, 0x80, FIL_, 0x01, 0xE1, 0xAC, + 0xB5, FIL_, 0xE1, 0xAD, 0x81, FIL_, 0x01, 0xE1, + 0xAC, 0xB5, FIL_, 0xE1, 0xAD, 0x83, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB8, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB9, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9C, FIL_, 0x01, + 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9D, FIL_, 0x01, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA8, FIL_, 0x01, + 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA9, FIL_, 0x02, + 0xCC, 0x86, FIL_, 0xE1, 0xBA, 0xB6, FIL_, 0xCC, + 0x82, FIL_, 0xE1, 0xBA, 0xAC, FIL_, 0x02, 0xCC, + 0x82, FIL_, 0xE1, 0xBA, 0xAD, FIL_, 0xCC, 0x86, + FIL_, 0xE1, 0xBA, 0xB7, FIL_, 0x01, 0xCC, 0x82, + FIL_, 0xE1, 0xBB, 0x86, FIL_, 0x01, 0xCC, 0x82, + FIL_, 0xE1, 0xBB, 0x87, FIL_, 0x01, 0xCC, 0x82, + FIL_, 0xE1, 0xBB, 0x98, FIL_, 0x01, 0xCC, 0x82, + FIL_, 0xE1, 0xBB, 0x99, FIL_, 0x04, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0x80, FIL_, 0xCD, 0x82, FIL_, + 0xE1, 0xBC, 0x86, FIL_, 0xCC, 0x80, FIL_, 0xE1, + 0xBC, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, + 0x84, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, + 0x87, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x85, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x83, FIL_, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x81, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x82, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x83, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x84, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x85, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x86, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x87, FIL_, 0x04, + 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8C, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0x8A, FIL_, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0x88, FIL_, 0xCD, 0x82, FIL_, + 0xE1, 0xBC, 0x8E, FIL_, 0x04, 0xCC, 0x80, FIL_, + 0xE1, 0xBC, 0x8B, FIL_, 0xCD, 0x82, FIL_, 0xE1, + 0xBC, 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, + 0x8D, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x89, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8A, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8B, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8C, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8D, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8E, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8F, + FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x92, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x94, FIL_, + 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x93, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x95, FIL_, 0x02, + 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x9A, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBC, 0x9C, FIL_, 0x02, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0x9B, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBC, 0x9D, FIL_, 0x04, 0xCC, 0x80, + FIL_, 0xE1, 0xBC, 0xA2, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBC, 0xA4, FIL_, 0xCD, 0x82, FIL_, 0xE1, + 0xBC, 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, + 0x90, FIL_, 0x04, 0xCD, 0x85, FIL_, 0xE1, 0xBE, + 0x91, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA5, + FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xA7, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA3, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x92, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x93, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x94, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x95, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x96, FIL_, 0x01, + 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x97, FIL_, 0x04, + 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAC, FIL_, 0xCC, + 0x80, FIL_, 0xE1, 0xBC, 0xAA, FIL_, 0xCD, 0x85, + FIL_, 0xE1, 0xBE, 0x98, FIL_, 0xCD, 0x82, FIL_, + 0xE1, 0xBC, 0xAE, FIL_, 0x04, 0xCD, 0x82, FIL_, + 0xE1, 0xBC, 0xAF, FIL_, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, + 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAB, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9A, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9B, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9C, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9D, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9E, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9F, + FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xB4, + FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB2, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xB6, FIL_, 0x03, + 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB3, FIL_, 0xCD, + 0x82, FIL_, 0xE1, 0xBC, 0xB7, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBC, 0xB5, FIL_, 0x03, 0xCC, 0x81, + FIL_, 0xE1, 0xBC, 0xBC, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBC, 0xBA, FIL_, 0xCD, 0x82, FIL_, 0xE1, + 0xBC, 0xBE, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, + 0xBC, 0xBB, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, + 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xBD, + FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x82, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x84, FIL_, + 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x85, FIL_, + 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x83, FIL_, 0x02, + 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x8A, FIL_, 0xCC, + 0x81, FIL_, 0xE1, 0xBD, 0x8C, FIL_, 0x02, 0xCC, + 0x80, FIL_, 0xE1, 0xBD, 0x8B, FIL_, 0xCC, 0x81, + FIL_, 0xE1, 0xBD, 0x8D, FIL_, 0x03, 0xCD, 0x82, + FIL_, 0xE1, 0xBD, 0x96, FIL_, 0xCC, 0x80, FIL_, + 0xE1, 0xBD, 0x92, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBD, 0x94, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, + 0xBD, 0x93, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, + 0x97, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x95, + FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x9B, + FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x9F, FIL_, + 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x9D, FIL_, 0x04, + 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA6, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA0, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBD, 0xA2, FIL_, 0xCC, 0x81, FIL_, + 0xE1, 0xBD, 0xA4, FIL_, 0x04, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0xA1, FIL_, 0xCD, 0x82, FIL_, 0xE1, + 0xBD, 0xA7, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, + 0xA5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xA3, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA2, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA3, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA4, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA5, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA6, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA7, + FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAA, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xAC, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAE, FIL_, 0xCD, + 0x85, FIL_, 0xE1, 0xBE, 0xA8, FIL_, 0x04, 0xCD, + 0x82, FIL_, 0xE1, 0xBD, 0xAF, FIL_, 0xCC, 0x80, + FIL_, 0xE1, 0xBD, 0xAB, FIL_, 0xCD, 0x85, FIL_, + 0xE1, 0xBE, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xE1, + 0xBD, 0xAD, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAA, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAC, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAD, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAE, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xAF, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBF, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBF, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, + 0xBE, 0xB7, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, + 0xBF, 0x8E, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, + 0x8D, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x8F, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x87, + FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB7, + FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x9D, + FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBF, 0x9E, FIL_, + 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x9F, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9A, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9B, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0xAE, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8D, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8F, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8E, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x84, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x89, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x8C, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA4, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA6, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x81, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x84, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x87, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x89, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAD, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA2, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB0, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB1, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB4, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB5, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB8, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB9, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x80, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x81, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA0, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA1, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x84, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x85, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x88, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x89, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA2, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA3, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAC, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAD, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAE, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAF, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAA, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAB, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAC, FIL_, 0x01, + 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAD, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0x94, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8C, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, + 0x8E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x81, 0x90, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x81, 0x92, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x81, 0x94, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x81, 0x96, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x81, 0x98, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9A, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9C, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, + 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x81, 0xA0, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x81, 0xA2, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x81, 0xA5, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x81, 0xA7, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA9, FIL_, 0x02, + 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB1, FIL_, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB0, FIL_, + 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB3, + FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB4, + FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, + 0xB6, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, + 0xB7, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, + 0x81, 0xBA, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x81, 0xB9, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, + 0xE3, 0x81, 0xBD, FIL_, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x81, 0xBC, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x82, 0x9E, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x83, 0xB4, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAC, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAE, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB0, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, + 0xB2, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x82, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x82, 0xB6, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x82, 0xB8, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x82, 0xBA, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBC, FIL_, 0x01, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBE, FIL_, + 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x80, + FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, + 0x82, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x83, 0x85, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x83, 0x87, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x83, 0x89, FIL_, 0x02, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x83, 0x90, FIL_, 0xE3, 0x82, + 0x9A, FIL_, 0xE3, 0x83, 0x91, FIL_, 0x02, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x83, 0x93, FIL_, 0xE3, + 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x94, FIL_, 0x02, + 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x97, FIL_, + 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x96, FIL_, + 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9A, + FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x99, + FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, + 0x9C, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, + 0x9D, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, + 0x83, 0xB7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, + 0xE3, 0x83, 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, + FIL_, 0xE3, 0x83, 0xB9, FIL_, 0x01, 0xE3, 0x82, + 0x99, FIL_, 0xE3, 0x83, 0xBA, FIL_, 0x01, 0xE3, + 0x82, 0x99, FIL_, 0xE3, 0x83, 0xBE, FIL_, + }, +}; + +static const uchar_t u8_decomp_b2_tbl[2][2][256] = { + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 5, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 6, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 7, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 1, 2, 3, 4, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 5, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, 6, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 7, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + +}; + +static const u8_displacement_t u8_decomp_b3_tbl[2][8][256] = { + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 0 }, + { 1, 35 }, { 2, 247 }, { 3, 474 }, + { 4, 693 }, { 5, 709 }, { 6, 951 }, + { N_, 0 }, { 7, 1139 }, { 8, 1152 }, + { N_, 0 }, { 9, 1177 }, { 10, 1199 }, + { 11, 1295 }, { 12, 1360 }, { 13, 1405 }, + { N_, 0 }, { 14, 1450 }, { N_, 0 }, + { N_, 0 }, { 15, 1620 }, { N_, 0 }, + { 16, 1624 }, { 17, 1649 }, { N_, 0 }, + { 18, 1665 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 19, 1680 }, + { 20, 1701 }, { N_, 0 }, { 21, 1757 }, + { 22, 1792 }, { 23, 1806 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 24, 1834 }, + { 25, 1869 }, { 26, 1876 }, { N_, 0 }, + { 27, 1897 }, { N_, 0 }, { 28, 1904 }, + { N_, 0 }, { 29, 1942 }, { N_, 0 }, + { 30, 1963 }, { 31, 1994 }, { N_, 0 }, + { 32, 2000 }, { 33, 2006 }, { 34, 2018 }, + { 35, 2021 }, { 36, 2109 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 37, 2158 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 0x8000, 2165 }, { 0x8001, 2445 }, + { 0x8002, 2741 }, { 0x8003, 3029 }, { 0x8004, 3337 }, + { 0x8005, 3725 }, { 0x8006, 4053 }, { 0x8007, 4536 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 38, 4895 }, + { 39, 4964 }, { 40, 4999 }, { N_, 0 }, + { 41, 5018 }, { 42, 5098 }, { 43, 5230 }, + { 44, 5248 }, { 45, 5266 }, { 46, 5326 }, + { 47, 5410 }, { 48, 5470 }, { 49, 5518 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 50, 5526 }, { 51, 5596 }, + { 52, 5767 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 53, 5810 }, { 54, 5822 }, { N_, 0 }, + { 55, 5830 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 56, 5836 }, { 57, 5839 }, { 58, 5842 }, + { 59, 6034 }, { 60, 6226 }, { 61, 6418 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 62, 6484 }, + { 63, 6497 }, { 64, 6672 }, { 65, 6770 }, + { 66, 6923 }, { 67, 6968 }, { 68, 7160 }, + { N_, 0 }, { 0x8008, 7247 }, { 69, 7597 }, + { 70, 7773 }, { 71, 7950 }, { 0x8009, 8142 }, + { 0x800A, 8919 }, { 72, 9351 }, { 73, 9522 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 5. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0x800B, 9743 }, + { 0x800C, 9999 }, { 0x800D, 10255 }, { 0x800E, 10511 }, + { 74, 10767 }, { 75, 10967 }, { N_, 0 }, + { N_, 0 }, { 76, 11139 }, { 77, 11303 }, + { 78, 11468 }, { 79, 11576 }, { 0x800F, 11740 }, + { 0x8010, 12006 }, { 0x8011, 12280 }, { 0x8012, 12546 }, + { 80, 12812 }, { 0x8013, 13060 }, { 0x8014, 13348 }, + { 81, 13720 }, { 82, 13898 }, { 83, 13933 }, + { 84, 14045 }, { 85, 14197 }, { 86, 14347 }, + { 87, 14410 }, { 88, 14540 }, { 89, 14729 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 6. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 90, 14829 }, { 91, 14912 }, + { 92, 14969 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 93, 14982 }, { 94, 15046 }, { 95, 15109 }, + { 96, 15163 }, { 97, 15225 }, { 98, 15282 }, + { 99, 15341 }, { 100, 15405 }, { 101, 15469 }, + { 102, 15533 }, { 103, 15597 }, { 104, 15681 }, + { 105, 15812 }, { 106, 15942 }, { 107, 16072 }, + { 108, 16202 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 7. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 0x8015, 16273 }, { 0x8016, 16536 }, + { 0x8017, 16799 }, { 0x8018, 17064 }, { 0x8019, 17329 }, + { 0x801A, 17601 }, { 0x801B, 17878 }, { 0x801C, 18147 }, + { 109, 18419 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + }, + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 0 }, + { 1, 35 }, { 2, 247 }, { 3, 474 }, + { 4, 693 }, { 5, 709 }, { 6, 951 }, + { N_, 0 }, { 7, 1139 }, { 8, 1152 }, + { N_, 0 }, { 9, 1177 }, { 10, 1199 }, + { 11, 1295 }, { 12, 1362 }, { 13, 1407 }, + { N_, 0 }, { 14, 1452 }, { N_, 0 }, + { N_, 0 }, { 15, 1622 }, { N_, 0 }, + { 16, 1626 }, { 17, 1651 }, { N_, 0 }, + { 18, 1667 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 19, 1682 }, + { 20, 1703 }, { N_, 0 }, { 21, 1759 }, + { 22, 1794 }, { 23, 1808 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 24, 1836 }, + { 25, 1871 }, { 26, 1878 }, { N_, 0 }, + { 27, 1899 }, { N_, 0 }, { 28, 1906 }, + { N_, 0 }, { 29, 1944 }, { N_, 0 }, + { 30, 1965 }, { 31, 1996 }, { N_, 0 }, + { 32, 2002 }, { 33, 2008 }, { 34, 2020 }, + { 35, 2023 }, { 36, 2111 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 37, 2160 }, + { N_, 0 }, { N_, 0 }, { 38, 2167 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 39, 2170 }, { 40, 2226 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 41, 2247 }, { 42, 2268 }, { 43, 2340 }, + { N_, 0 }, { 0x8000, 2414 }, { 0x8001, 2694 }, + { 0x8002, 2990 }, { 0x8003, 3278 }, { 0x8004, 3586 }, + { 0x8005, 3974 }, { 0x8006, 4302 }, { 0x8007, 4785 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 44, 5144 }, + { 45, 5213 }, { 46, 5248 }, { N_, 0 }, + { 47, 5273 }, { 48, 5358 }, { 49, 5490 }, + { 50, 5508 }, { 51, 5526 }, { 52, 5586 }, + { 53, 5670 }, { 54, 5730 }, { 55, 5778 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 56, 5786 }, { 57, 5856 }, + { 58, 6027 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 59, 6070 }, { 60, 6082 }, { N_, 0 }, + { 61, 6090 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 62, 6096 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 63, 6099 }, { 64, 6102 }, { 65, 6105 }, + { 66, 6297 }, { 67, 6489 }, { 68, 6681 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 69, 6747 }, + { 70, 6760 }, { 71, 6935 }, { 72, 7033 }, + { 73, 7186 }, { 74, 7231 }, { 75, 7423 }, + { N_, 0 }, { 0x8008, 7510 }, { 76, 7891 }, + { 77, 8103 }, { 78, 8280 }, { 0x8009, 8482 }, + { 0x800A, 9259 }, { 79, 9701 }, { 80, 9872 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 5. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0x800B, 10106 }, + { 0x800C, 10362 }, { 0x800D, 10618 }, { 0x800E, 10874 }, + { 81, 11130 }, { 82, 11330 }, { 0x800F, 11566 }, + { 83, 11822 }, { 84, 11932 }, { 85, 12096 }, + { 86, 12261 }, { 87, 12369 }, { 0x8010, 12533 }, + { 0x8011, 12799 }, { 0x8012, 13073 }, { 0x8013, 13339 }, + { 88, 13605 }, { 0x8014, 13853 }, { 0x8015, 14141 }, + { 89, 14513 }, { 90, 14691 }, { 91, 14746 }, + { 92, 14860 }, { 93, 15012 }, { 94, 15162 }, + { 95, 15225 }, { 96, 15355 }, { 97, 15544 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 6. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 98, 15644 }, { 99, 15727 }, + { 100, 15784 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 101, 15797 }, { 102, 15861 }, { 103, 15924 }, + { 104, 15978 }, { 105, 16041 }, { 106, 16098 }, + { 107, 16157 }, { 108, 16221 }, { 109, 16285 }, + { 110, 16349 }, { 111, 16413 }, { 112, 16501 }, + { 113, 16632 }, { 114, 16762 }, { 115, 16892 }, + { 116, 17022 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + { /* Third byte table 7. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 0x8016, 17097 }, { 0x8017, 17360 }, + { 0x8018, 17623 }, { 0x8019, 17888 }, { 0x801A, 18153 }, + { 0x801B, 18425 }, { 0x801C, 18702 }, { 0x801D, 18971 }, + { 117, 19243 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, + }, + }, +}; + +static const uchar_t u8_decomp_b4_tbl[2][118][257] = { + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 5, 5, 5, 5, 5, + 8, 8, 8, 9, 10, 13, 15, 15, + 15, 18, 19, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 24, + 28, 32, 36, 40, 44, 48, 52, 56, + 60, 60, 64, 68, 72, 76, 80, 84, + 84, 84, 88, 92, 96, 100, 104, 104, + 104, 108, 112, 116, 120, 124, 128, 128, + 132, 136, 140, 144, 148, 152, 156, 160, + 164, 164, 168, 172, 176, 180, 184, 188, + 188, 188, 192, 196, 200, 204, 208, 208, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 64, 64, 68, 72, 76, 80, 84, + 88, 92, 96, 100, 104, 108, 112, 116, + 120, 124, 128, 132, 136, 140, 144, 144, + 144, 148, 152, 156, 160, 164, 168, 172, + 176, 180, 180, 182, 184, 188, 192, 196, + 200, 200, 204, 208, 212, 216, 220, 224, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 7, 11, 15, 19, + 23, 27, 30, 30, 30, 34, 38, 42, + 46, 50, 54, 54, 54, 58, 62, 66, + 70, 74, 78, 82, 86, 90, 94, 98, + 102, 106, 110, 114, 118, 122, 126, 126, + 126, 130, 134, 138, 142, 146, 150, 154, + 158, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 198, 202, 206, 210, 214, 218, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 12, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 8, 12, + 14, 16, 18, 20, 22, 24, 28, 32, + 36, 40, 44, 48, 52, 56, 62, 68, + 74, 80, 86, 92, 98, 104, 104, 110, + 116, 122, 128, 133, 138, 138, 138, 142, + 146, 150, 154, 158, 162, 168, 174, 179, + 184, 188, 190, 192, 194, 198, 202, 202, + 202, 206, 210, 216, 222, 227, 232, 237, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 112, 112, 116, + 120, 120, 120, 120, 120, 120, 120, 124, + 128, 132, 136, 142, 148, 154, 160, 164, + 168, 174, 180, 184, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 4, 5, 7, 9, 11, + 12, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 20, 21, 22, 23, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 6, 9, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 17, 17, 17, + 17, 17, 17, 20, 20, 20, 20, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 14, 19, + 22, 27, 32, 37, 37, 42, 42, 47, + 52, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 64, 69, 74, 79, 84, + 89, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 10, 15, 20, 25, + 25, 27, 29, 31, 41, 51, 53, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 57, 59, 61, 61, 63, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, + 65, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 15, 15, 15, + 20, 20, 20, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 15, 15, 15, + 20, 20, 20, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 40, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 15, 20, 25, 30, 30, 30, 35, + 40, 40, 40, 45, 50, 55, 60, 65, + 70, 70, 70, 75, 80, 85, 90, 95, + 100, 100, 100, 105, 110, 115, 120, 125, + 130, 135, 140, 145, 150, 155, 160, 160, + 160, 165, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 10, 15, 20, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 8, + 12, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 5, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 14, 14, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 21, 28, 35, 42, 49, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 21, 28, 28, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 14, 21, 21, 21, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 28, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 7, 7, 7, 7, + 14, 21, 21, 28, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 7, 14, 24, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 14, 14, + 14, 14, 14, 21, 21, 21, 21, 21, + 28, 28, 28, 28, 28, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 49, 49, 56, 63, + 72, 79, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 21, 21, + 21, 21, 21, 28, 28, 28, 28, 28, + 35, 35, 35, 35, 35, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 21, 21, 21, 21, + 21, 21, 24, 24, 24, 24, 24, 24, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 28, 30, 33, + 33, 33, 33, 33, 33, 33, 33, 33, + 34, 34, 34, 34, 40, 49, 49, 55, + 64, 64, 64, 64, 64, 66, 66, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 18, 18, 18, 18, 18, 18, 18, 18, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 20, 21, 21, 21, 22, 23, 24, + 25, 26, 27, 28, 31, 32, 33, 34, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 14, 15, 16, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, + }, + { /* Fourth byte table 41. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 7, 10, 10, 13, 16, + 18, 18, 21, 22, 23, 24, 25, 26, + 28, 29, 30, 31, 32, 32, 33, 35, + 35, 35, 36, 37, 38, 39, 40, 40, + 40, 42, 45, 47, 47, 48, 48, 51, + 51, 52, 52, 54, 58, 59, 60, 60, + 61, 62, 63, 63, 64, 65, 67, 69, + 71, 73, 74, 74, 74, 74, 76, 78, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, + }, + { /* Fourth byte table 42. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 3, 4, 5, + 6, 7, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 13, 18, 23, 28, + 33, 38, 43, 48, 53, 58, 63, 68, + 72, 73, 75, 78, 80, 81, 83, 86, + 90, 92, 93, 95, 98, 99, 100, 101, + 102, 103, 105, 108, 110, 111, 113, 116, + 120, 122, 123, 125, 128, 129, 130, 131, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, + }, + { /* Fourth byte table 43. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 44. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 12, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 45. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 6, + 6, 6, 12, 12, 12, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 24, 24, 30, + 30, 30, 30, 30, 30, 36, 45, 45, + 51, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 46. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 6, 6, 12, 12, 12, + 18, 18, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 28, 28, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 40, 44, + 48, 54, 60, 60, 60, 66, 72, 72, + 72, 78, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, + }, + { /* Fourth byte table 47. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 12, 12, 18, 24, 24, + 24, 30, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 42, 48, 54, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 48. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 24, 24, 24, + 24, 24, 24, 30, 36, 42, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 49. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 50. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 11, 13, 15, 17, 19, 21, + 23, 25, 27, 29, 31, 34, 37, 40, + 43, 46, 49, 52, 55, 58, 62, 66, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, + }, + { /* Fourth byte table 51. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 53, 56, 59, 62, 65, 68, + 71, 74, 77, 80, 83, 86, 89, 92, + 95, 98, 101, 104, 107, 110, 113, 116, + 119, 122, 125, 128, 131, 134, 137, 140, + 143, 146, 149, 152, 155, 158, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, + }, + { /* Fourth byte table 52. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, + }, + { /* Fourth byte table 53. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, + }, + { /* Fourth byte table 54. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 5, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 55. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 56. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 57. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 58. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 59. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 60. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 61. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, + }, + { /* Fourth byte table 62. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 4, + 4, 7, 10, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 63. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 14, + 14, 21, 21, 28, 28, 35, 35, 42, + 42, 49, 49, 56, 56, 63, 63, 70, + 70, 77, 77, 84, 84, 84, 91, 91, + 98, 98, 105, 105, 105, 105, 105, 105, + 105, 112, 119, 119, 126, 133, 133, 140, + 147, 147, 154, 161, 161, 168, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, + }, + { /* Fourth byte table 64. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 7, 7, 11, 15, 15, 22, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 35, 35, 42, + 42, 49, 49, 56, 56, 63, 63, 70, + 70, 77, 77, 84, 84, 91, 91, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, + }, + { /* Fourth byte table 65. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 14, 14, 14, 21, 21, + 28, 28, 35, 35, 35, 35, 35, 35, + 35, 42, 49, 49, 56, 63, 63, 70, + 77, 77, 84, 91, 91, 98, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 112, 112, 112, + 119, 126, 133, 140, 140, 140, 140, 147, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, + }, + { /* Fourth byte table 66. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 67. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 68. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 45, 45, 45, 48, 51, 54, 57, 60, + 63, 66, 69, 72, 75, 78, 81, 84, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 69. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 15, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 22, 24, 26, 28, 30, 32, + 34, 36, 38, 40, 42, 44, 46, 48, + 50, 53, 56, 59, 62, 65, 68, 71, + 74, 77, 80, 83, 86, 89, 92, 98, + 104, 110, 116, 122, 128, 134, 140, 146, + 152, 158, 164, 170, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, + 176, + }, + { /* Fourth byte table 70. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 149, 151, 153, 155, 157, 159, + 161, 163, 165, 167, 169, 171, 173, 175, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, + }, + { /* Fourth byte table 71. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 41, 46, 51, 51, 51, 51, + 51, 54, 57, 60, 63, 66, 69, 72, + 75, 78, 81, 84, 87, 90, 93, 96, + 99, 102, 105, 108, 111, 114, 117, 120, + 123, 126, 129, 132, 135, 138, 141, 144, + 147, 150, 153, 156, 159, 162, 165, 168, + 171, 174, 177, 180, 183, 186, 189, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 72. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 7, 9, 11, 13, 15, + 17, 20, 24, 26, 28, 31, 34, 36, + 38, 40, 43, 46, 49, 52, 55, 57, + 59, 61, 63, 65, 68, 70, 72, 74, + 77, 80, 82, 85, 88, 91, 93, 96, + 101, 107, 109, 112, 115, 118, 121, 128, + 136, 138, 140, 143, 145, 147, 149, 152, + 154, 156, 158, 160, 162, 165, 167, 169, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, + }, + { /* Fourth byte table 73. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 10, 12, 14, 16, 22, + 25, 27, 29, 31, 33, 35, 37, 39, + 41, 43, 45, 48, 50, 52, 55, 58, + 60, 64, 67, 69, 71, 73, 75, 75, + 75, 79, 83, 87, 91, 95, 99, 103, + 107, 111, 116, 121, 126, 131, 136, 141, + 146, 151, 156, 161, 166, 171, 176, 181, + 186, 191, 196, 201, 206, 211, 216, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, + }, + { /* Fourth byte table 74. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 56, + 56, 60, 60, 64, 64, 64, 68, 72, + 76, 80, 84, 88, 92, 96, 100, 104, + 104, 108, 108, 112, 112, 112, 116, 120, + 120, 120, 120, 124, 128, 132, 136, 136, + 136, 140, 144, 148, 152, 156, 160, 164, + 168, 172, 176, 180, 184, 188, 192, 196, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, + }, + { /* Fourth byte table 75. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, + }, + { /* Fourth byte table 76. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 9, 12, 14, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 20, 24, 28, 32, + 36, 36, 36, 36, 36, 36, 41, 41, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 64, 65, 70, 75, 82, 89, 94, + 99, 104, 109, 114, 119, 124, 129, 134, + 134, 139, 144, 149, 154, 159, 159, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, + }, + { /* Fourth byte table 77. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 20, 20, 25, + 30, 35, 40, 45, 50, 55, 60, 65, + 69, 71, 73, 75, 77, 79, 81, 83, + 85, 87, 89, 91, 93, 95, 97, 99, + 101, 103, 105, 107, 109, 111, 113, 115, + 117, 119, 121, 123, 125, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 145, 147, + 149, 151, 153, 155, 157, 159, 161, 163, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, + }, + { /* Fourth byte table 78. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 76, 80, 82, + 84, 86, 88, 90, 92, 94, 96, 98, + 100, 104, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, + }, + { /* Fourth byte table 79. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 6, 8, + 10, 12, 14, 16, 18, 20, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 42, + 44, 46, 48, 54, 60, 66, 72, 78, + 84, 90, 96, 102, 108, 114, 120, 126, + 132, 138, 144, 150, 156, 158, 160, 162, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, + }, + { /* Fourth byte table 80. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, + }, + { /* Fourth byte table 81. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 54, 60, 68, 76, 84, 92, 100, + 108, 116, 122, 155, 170, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, + }, + { /* Fourth byte table 82. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 5, 8, 9, 10, 11, 12, + 13, 14, 17, 20, 23, 26, 29, 32, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 83. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 15, 15, + 15, 15, 18, 21, 24, 27, 28, 29, + 30, 31, 34, 35, 35, 36, 37, 38, + 39, 42, 43, 44, 45, 46, 49, 52, + 53, 54, 55, 56, 57, 58, 59, 60, + 60, 61, 62, 63, 64, 64, 64, 64, + 64, 67, 71, 74, 74, 77, 77, 80, + 84, 87, 91, 94, 98, 101, 105, 108, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, + }, + { /* Fourth byte table 84. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 6, 10, 14, 18, 22, 26, + 30, 34, 38, 42, 46, 50, 52, 54, + 56, 58, 60, 62, 64, 66, 68, 70, + 72, 74, 76, 78, 80, 82, 84, 86, + 88, 90, 92, 94, 96, 98, 100, 102, + 104, 106, 108, 110, 112, 114, 116, 118, + 120, 122, 124, 126, 128, 130, 132, 134, + 136, 138, 140, 142, 144, 146, 148, 150, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, + }, + { /* Fourth byte table 85. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, + 96, 98, 100, 102, 104, 106, 112, 118, + 124, 130, 136, 142, 146, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, + }, + { /* Fourth byte table 86. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 87. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 34, 37, 40, 43, 46, 49, 52, 55, + 58, 61, 64, 67, 70, 73, 76, 79, + 82, 85, 88, 91, 94, 97, 100, 103, + 106, 109, 112, 115, 118, 121, 124, 127, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 88. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, + }, + { /* Fourth byte table 89. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 6, 9, 12, 15, + 18, 18, 18, 21, 24, 27, 30, 33, + 36, 36, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 57, 60, 63, 63, 63, + 63, 65, 67, 69, 72, 74, 76, 79, + 79, 82, 85, 88, 91, 94, 97, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, + }, + { /* Fourth byte table 90. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 18, 31, 44, 57, 70, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, + }, + { /* Fourth byte table 91. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 18, 31, 44, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 92. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 93. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 94. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 95. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 29, 30, + 31, 31, 31, 32, 32, 32, 33, 34, + 34, 34, 35, 36, 37, 38, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 50, 51, 51, 52, 53, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 96. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 2, 3, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 97. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 6, + 7, 8, 9, 10, 10, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 18, 19, + 20, 21, 22, 23, 24, 25, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 53, 54, 55, 56, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 98. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 5, 6, + 6, 6, 6, 7, 8, 9, 10, 11, + 12, 13, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, + }, + { /* Fourth byte table 99. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 100. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 101. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 102. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 103. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 36, 36, 36, + 36, 38, 40, 42, 44, 46, 48, 50, + 52, 54, 56, 58, 60, 62, 64, 66, + 68, 70, 72, 74, 76, 78, 80, 82, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, + }, + { /* Fourth byte table 104. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 5, 7, 9, 11, 13, 15, + 17, 19, 21, 23, 25, 27, 29, 31, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 58, 60, 62, 64, + 66, 68, 70, 72, 74, 76, 78, 80, + 82, 84, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 123, 125, 127, 129, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, + }, + { /* Fourth byte table 105. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, + 97, 99, 101, 103, 105, 107, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 106. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 107. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 21, 23, 25, 27, 29, 31, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 108. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 9, 11, 13, 15, + 17, 19, 21, 21, 21, 21, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, + }, + { /* Fourth byte table 109. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 9, 13, 17, 21, 25, 29, + 33, 37, 42, 46, 50, 54, 58, 62, + 66, 71, 75, 80, 85, 90, 94, 98, + 102, 106, 110, 114, 118, 122, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, + }, + { /* Fourth byte table 110. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 111. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 112. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 113. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 114. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 115. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 116. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 117. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + }, + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 5, 5, 5, 5, 5, + 8, 8, 8, 9, 10, 13, 15, 15, + 15, 18, 19, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 24, + 28, 32, 36, 40, 44, 48, 52, 56, + 60, 60, 64, 68, 72, 76, 80, 84, + 84, 84, 88, 92, 96, 100, 104, 104, + 104, 108, 112, 116, 120, 124, 128, 128, + 132, 136, 140, 144, 148, 152, 156, 160, + 164, 164, 168, 172, 176, 180, 184, 188, + 188, 188, 192, 196, 200, 204, 208, 208, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 64, 64, 68, 72, 76, 80, 84, + 88, 92, 96, 100, 104, 108, 112, 116, + 120, 124, 128, 132, 136, 140, 144, 144, + 144, 148, 152, 156, 160, 164, 168, 172, + 176, 180, 180, 182, 184, 188, 192, 196, + 200, 200, 204, 208, 212, 216, 220, 224, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, + 227, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 7, 11, 15, 19, + 23, 27, 30, 30, 30, 34, 38, 42, + 46, 50, 54, 54, 54, 58, 62, 66, + 70, 74, 78, 82, 86, 90, 94, 98, + 102, 106, 110, 114, 118, 122, 126, 126, + 126, 130, 134, 138, 142, 146, 150, 154, + 158, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 198, 202, 206, 210, 214, 218, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, + 219, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 12, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 8, 12, + 14, 16, 18, 20, 22, 24, 28, 32, + 36, 40, 44, 48, 52, 56, 62, 68, + 74, 80, 86, 92, 98, 104, 104, 110, + 116, 122, 128, 133, 138, 138, 138, 142, + 146, 150, 154, 158, 162, 168, 174, 179, + 184, 188, 190, 192, 194, 198, 202, 202, + 202, 206, 210, 216, 222, 227, 232, 237, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, + 242, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 112, 112, 116, + 120, 120, 120, 120, 120, 120, 120, 124, + 128, 132, 136, 142, 148, 154, 160, 164, + 168, 174, 180, 184, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, + 188, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 4, 5, 7, 9, 11, + 12, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 20, 21, 22, 23, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 6, 9, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 17, 17, 17, + 17, 17, 17, 20, 20, 20, 20, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 14, 19, + 22, 27, 32, 37, 37, 42, 42, 47, + 52, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 64, 69, 74, 79, 84, + 89, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 10, 15, 20, 25, + 25, 27, 29, 31, 41, 51, 53, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 57, 59, 61, 61, 63, 65, 65, + 65, 65, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 67, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 15, 15, 15, + 20, 20, 20, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 15, 15, 15, + 20, 20, 20, 20, 20, 25, 30, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 40, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 15, 20, 25, 30, 30, 30, 35, + 40, 40, 40, 45, 50, 55, 60, 65, + 70, 70, 70, 75, 80, 85, 90, 95, + 100, 100, 100, 105, 110, 115, 120, 125, + 130, 135, 140, 145, 150, 155, 160, 160, + 160, 165, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, + 170, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 10, 15, 20, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 8, + 12, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 5, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 14, 14, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 21, 28, 35, 42, 49, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 21, 28, 28, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 14, 21, 21, 21, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 28, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 7, 7, 7, 7, 7, + 14, 21, 21, 28, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 14, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 7, 14, 24, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 14, 14, + 14, 14, 14, 21, 21, 21, 21, 21, + 28, 28, 28, 28, 28, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 49, 49, 56, 63, + 72, 79, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 21, 21, + 21, 21, 21, 28, 28, 28, 28, 28, + 35, 35, 35, 35, 35, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, + 49, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 39. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 14, 14, 21, 21, 28, 28, 35, + 35, 35, 35, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 49, 49, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 40. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 14, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 41. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 3, 4, + 4, 5, 6, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 16, 17, 19, 20, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 42. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 6, 8, 11, + 12, 13, 14, 16, 18, 20, 21, 21, + 22, 23, 25, 26, 28, 31, 34, 35, + 36, 37, 40, 42, 43, 46, 48, 50, + 52, 54, 56, 57, 58, 59, 60, 62, + 64, 66, 68, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, + }, + { /* Fourth byte table 43. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 5, 7, + 9, 10, 12, 14, 16, 18, 20, 22, + 25, 27, 29, 32, 34, 36, 38, 40, + 42, 44, 46, 48, 50, 52, 54, 56, + 58, 61, 63, 65, 66, 68, 70, 72, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, + }, + { /* Fourth byte table 44. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 21, 21, 21, 21, + 21, 21, 24, 24, 24, 24, 24, 24, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 28, 30, 33, + 33, 33, 33, 33, 33, 33, 33, 33, + 34, 34, 34, 34, 40, 49, 49, 55, + 64, 64, 64, 64, 64, 66, 66, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, + }, + { /* Fourth byte table 45. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 18, 18, 18, 18, 18, 18, 18, 18, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 20, 21, 21, 21, 22, 23, 24, + 25, 26, 27, 28, 31, 32, 33, 34, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, + }, + { /* Fourth byte table 46. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 14, 15, 16, 17, + 17, 18, 19, 20, 21, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, + 23, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, + }, + { /* Fourth byte table 47. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 7, 10, 10, 13, 16, + 18, 18, 21, 22, 23, 24, 25, 26, + 28, 29, 30, 31, 32, 32, 33, 35, + 35, 35, 36, 37, 38, 39, 40, 40, + 40, 42, 45, 47, 47, 48, 48, 51, + 51, 52, 52, 54, 58, 59, 60, 60, + 61, 62, 63, 63, 64, 65, 67, 69, + 71, 73, 74, 74, 77, 79, 81, 83, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, + 85, + }, + { /* Fourth byte table 48. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 3, 4, 5, + 6, 7, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 13, 18, 23, 28, + 33, 38, 43, 48, 53, 58, 63, 68, + 72, 73, 75, 78, 80, 81, 83, 86, + 90, 92, 93, 95, 98, 99, 100, 101, + 102, 103, 105, 108, 110, 111, 113, 116, + 120, 122, 123, 125, 128, 129, 130, 131, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, + 132, + }, + { /* Fourth byte table 49. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 50. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 12, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 51. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 6, + 6, 6, 12, 12, 12, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 24, 24, 30, + 30, 30, 30, 30, 30, 36, 45, 45, + 51, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 52. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 6, 6, 12, 12, 12, + 18, 18, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 28, 28, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 40, 44, + 48, 54, 60, 60, 60, 66, 72, 72, + 72, 78, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, + }, + { /* Fourth byte table 53. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 12, 12, 18, 24, 24, + 24, 30, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 42, 48, 54, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 54. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 24, 24, 24, + 24, 24, 24, 30, 36, 42, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 55. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 56. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 11, 13, 15, 17, 19, 21, + 23, 25, 27, 29, 31, 34, 37, 40, + 43, 46, 49, 52, 55, 58, 62, 66, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, + }, + { /* Fourth byte table 57. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 53, 56, 59, 62, 65, 68, + 71, 74, 77, 80, 83, 86, 89, 92, + 95, 98, 101, 104, 107, 110, 113, 116, + 119, 122, 125, 128, 131, 134, 137, 140, + 143, 146, 149, 152, 155, 158, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, + }, + { /* Fourth byte table 58. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, + 43, + }, + { /* Fourth byte table 59. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, + }, + { /* Fourth byte table 60. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 5, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 61. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, + }, + { /* Fourth byte table 62. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 63. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 64. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 65. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 66. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 67. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 68. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, + }, + { /* Fourth byte table 69. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 4, + 4, 7, 10, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 70. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 14, + 14, 21, 21, 28, 28, 35, 35, 42, + 42, 49, 49, 56, 56, 63, 63, 70, + 70, 77, 77, 84, 84, 84, 91, 91, + 98, 98, 105, 105, 105, 105, 105, 105, + 105, 112, 119, 119, 126, 133, 133, 140, + 147, 147, 154, 161, 161, 168, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, + 175, + }, + { /* Fourth byte table 71. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 7, 7, 11, 15, 15, 22, + 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 35, 35, 42, + 42, 49, 49, 56, 56, 63, 63, 70, + 70, 77, 77, 84, 84, 91, 91, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, + 98, + }, + { /* Fourth byte table 72. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 14, 14, 14, 21, 21, + 28, 28, 35, 35, 35, 35, 35, 35, + 35, 42, 49, 49, 56, 63, 63, 70, + 77, 77, 84, 91, 91, 98, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 112, 112, 112, + 119, 126, 133, 140, 140, 140, 140, 147, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, + }, + { /* Fourth byte table 73. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, + }, + { /* Fourth byte table 74. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, + }, + { /* Fourth byte table 75. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 45, 45, 45, 48, 51, 54, 57, 60, + 63, 66, 69, 72, 75, 78, 81, 84, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 76. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 15, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 23, 25, 27, 29, 31, 33, 35, + 37, 39, 41, 43, 45, 47, 49, 51, + 53, 56, 59, 62, 65, 68, 71, 74, + 77, 80, 83, 86, 89, 92, 95, 101, + 107, 113, 119, 125, 131, 137, 143, 149, + 155, 161, 167, 173, 179, 194, 206, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, + 212, + }, + { /* Fourth byte table 77. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 149, 151, 153, 155, 157, 159, + 161, 163, 165, 167, 169, 171, 173, 175, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, + }, + { /* Fourth byte table 78. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 41, 46, 51, 53, 56, 58, + 61, 64, 67, 70, 73, 76, 79, 82, + 85, 88, 91, 94, 97, 100, 103, 106, + 109, 112, 115, 118, 121, 124, 127, 130, + 133, 136, 139, 142, 145, 148, 151, 154, + 157, 160, 163, 166, 169, 172, 175, 178, + 181, 184, 187, 190, 193, 196, 199, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, + 202, + }, + { /* Fourth byte table 79. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 7, 9, 11, 13, 15, + 17, 20, 24, 26, 28, 31, 34, 36, + 38, 40, 43, 46, 49, 52, 55, 57, + 59, 61, 63, 65, 68, 70, 72, 74, + 77, 80, 82, 85, 88, 91, 93, 96, + 101, 107, 109, 112, 115, 118, 121, 128, + 136, 138, 140, 143, 145, 147, 149, 152, + 154, 156, 158, 160, 162, 165, 167, 169, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, + 171, + }, + { /* Fourth byte table 80. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 10, 12, 14, 16, 22, + 25, 27, 29, 31, 33, 35, 37, 39, + 41, 43, 45, 48, 50, 52, 55, 58, + 60, 64, 67, 69, 71, 73, 75, 80, + 85, 89, 93, 97, 101, 105, 109, 113, + 117, 121, 126, 131, 136, 141, 146, 151, + 156, 161, 166, 171, 176, 181, 186, 191, + 196, 201, 206, 211, 216, 221, 226, 231, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, + 234, + }, + { /* Fourth byte table 81. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 56, + 56, 60, 60, 64, 64, 64, 68, 72, + 76, 80, 84, 88, 92, 96, 100, 104, + 104, 108, 108, 112, 112, 112, 116, 120, + 120, 120, 120, 124, 128, 132, 136, 136, + 136, 140, 144, 148, 152, 156, 160, 164, + 168, 172, 176, 180, 184, 188, 192, 196, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, + }, + { /* Fourth byte table 82. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 172, 172, 172, 172, + 172, 176, 180, 184, 188, 192, 196, 200, + 204, 208, 212, 216, 220, 224, 228, 232, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, + 236, + }, + { /* Fourth byte table 83. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 65, 70, 75, 79, 83, 87, 92, 97, + 102, 106, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, + 110, + }, + { /* Fourth byte table 84. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 9, 12, 14, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 20, 24, 28, 32, + 36, 36, 36, 36, 36, 36, 41, 41, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 64, 65, 70, 75, 82, 89, 94, + 99, 104, 109, 114, 119, 124, 129, 134, + 134, 139, 144, 149, 154, 159, 159, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, + }, + { /* Fourth byte table 85. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 10, 15, 20, 20, 25, + 30, 35, 40, 45, 50, 55, 60, 65, + 69, 71, 73, 75, 77, 79, 81, 83, + 85, 87, 89, 91, 93, 95, 97, 99, + 101, 103, 105, 107, 109, 111, 113, 115, + 117, 119, 121, 123, 125, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 145, 147, + 149, 151, 153, 155, 157, 159, 161, 163, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, + }, + { /* Fourth byte table 86. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 76, 80, 82, + 84, 86, 88, 90, 92, 94, 96, 98, + 100, 104, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, + }, + { /* Fourth byte table 87. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 6, 8, + 10, 12, 14, 16, 18, 20, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 42, + 44, 46, 48, 54, 60, 66, 72, 78, + 84, 90, 96, 102, 108, 114, 120, 126, + 132, 138, 144, 150, 156, 158, 160, 162, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, + 164, + }, + { /* Fourth byte table 88. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, + 248, + }, + { /* Fourth byte table 89. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 54, 60, 68, 76, 84, 92, 100, + 108, 116, 122, 155, 170, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, + 178, + }, + { /* Fourth byte table 90. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 4, 7, 8, 9, 10, 11, + 14, 17, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 22, 25, 28, 29, 30, 31, 32, + 33, 34, 37, 40, 43, 46, 49, 52, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, + }, + { /* Fourth byte table 91. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 15, 15, + 16, 17, 20, 23, 26, 29, 30, 31, + 32, 33, 36, 37, 37, 38, 39, 40, + 41, 44, 45, 46, 47, 48, 51, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 62, 63, 64, 65, 66, 66, 66, 66, + 66, 69, 73, 76, 76, 79, 79, 82, + 86, 89, 93, 96, 100, 103, 107, 110, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, + }, + { /* Fourth byte table 92. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 6, 10, 14, 18, 22, 26, + 30, 34, 38, 42, 46, 50, 52, 54, + 56, 58, 60, 62, 64, 66, 68, 70, + 72, 74, 76, 78, 80, 82, 84, 86, + 88, 90, 92, 94, 96, 98, 100, 102, + 104, 106, 108, 110, 112, 114, 116, 118, + 120, 122, 124, 126, 128, 130, 132, 134, + 136, 138, 140, 142, 144, 146, 148, 150, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, + }, + { /* Fourth byte table 93. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, + 96, 98, 100, 102, 104, 106, 112, 118, + 124, 130, 136, 142, 146, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, + 150, + }, + { /* Fourth byte table 94. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 95. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 34, 37, 40, 43, 46, 49, 52, 55, + 58, 61, 64, 67, 70, 73, 76, 79, + 82, 85, 88, 91, 94, 97, 100, 103, + 106, 109, 112, 115, 118, 121, 124, 127, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 96. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, + 168, 171, 174, 177, 180, 183, 186, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + 189, + }, + { /* Fourth byte table 97. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 6, 9, 12, 15, + 18, 18, 18, 21, 24, 27, 30, 33, + 36, 36, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 57, 60, 63, 63, 63, + 63, 65, 67, 69, 72, 74, 76, 79, + 79, 82, 85, 88, 91, 94, 97, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, + }, + { /* Fourth byte table 98. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 18, 31, 44, 57, 70, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, + }, + { /* Fourth byte table 99. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 18, 31, 44, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 100. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, + }, + { /* Fourth byte table 101. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 102. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 103. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 29, 30, + 31, 31, 31, 32, 32, 32, 33, 34, + 34, 34, 35, 36, 37, 38, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 50, 51, 51, 52, 53, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 104. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 105. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 6, + 7, 8, 9, 10, 10, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 18, 19, + 20, 21, 22, 23, 24, 25, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 53, 54, 55, 56, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 106. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 5, 6, + 6, 6, 6, 7, 8, 9, 10, 11, + 12, 13, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, + 59, + }, + { /* Fourth byte table 107. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 108. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 109. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 110. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 111. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 38, 40, 40, + 40, 42, 44, 46, 48, 50, 52, 54, + 56, 58, 60, 62, 64, 66, 68, 70, + 72, 74, 76, 78, 80, 82, 84, 86, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, + 88, + }, + { /* Fourth byte table 112. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 5, 7, 9, 11, 13, 15, + 17, 19, 21, 23, 25, 27, 29, 31, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 58, 60, 62, 64, + 66, 68, 70, 72, 74, 76, 78, 80, + 82, 84, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 123, 125, 127, 129, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, + }, + { /* Fourth byte table 113. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, + 97, 99, 101, 103, 105, 107, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 114. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 115. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 21, 23, 25, 27, 29, 31, + 33, 35, 37, 39, 41, 43, 45, 47, + 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, + 114, 116, 118, 120, 122, 124, 126, 128, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, + 130, + }, + { /* Fourth byte table 116. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 9, 11, 13, 15, + 17, 19, 21, 23, 25, 25, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, + 75, + }, + { /* Fourth byte table 117. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 9, 13, 17, 21, 25, 29, + 33, 37, 42, 46, 50, 54, 58, 62, + 66, 71, 75, 80, 85, 90, 94, 98, + 102, 106, 110, 114, 118, 122, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, + 127, + }, + }, +}; + +static const uint16_t u8_decomp_b4_16bit_tbl[2][30][257] = { + { + { /* Fourth byte 16-bit table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 38, 44, 48, 52, 56, 60, 64, + 68, 72, 76, 80, 84, 90, 96, 102, + 108, 112, 116, 120, 124, 130, 136, 140, + 144, 148, 152, 156, 160, 164, 168, 172, + 176, 180, 184, 188, 192, 196, 200, 206, + 212, 216, 220, 224, 228, 232, 236, 240, + 244, 250, 256, 260, 264, 268, 272, 276, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, + }, + { /* Fourth byte 16-bit table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 54, 60, 66, + 72, 78, 84, 90, 96, 100, 104, 108, + 112, 116, 120, 124, 128, 134, 140, 144, + 148, 152, 156, 160, 164, 170, 176, 182, + 188, 194, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 262, 268, 274, 280, 284, 288, 292, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, + }, + { /* Fourth byte 16-bit table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 107, 116, 116, 116, 116, + 116, 120, 124, 128, 132, 138, 144, 150, + 156, 162, 168, 174, 180, 186, 192, 198, + 204, 210, 216, 222, 228, 234, 240, 246, + 252, 256, 260, 264, 268, 272, 276, 282, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, + }, + { /* Fourth byte 16-bit table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 52, 56, 60, 64, 68, 72, 76, + 80, 86, 92, 98, 104, 110, 116, 122, + 128, 134, 140, 146, 152, 158, 164, 170, + 176, 182, 188, 194, 200, 204, 208, 212, + 216, 222, 228, 234, 240, 246, 252, 258, + 264, 270, 276, 280, 284, 288, 292, 296, + 300, 304, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, + }, + { /* Fourth byte 16-bit table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 17, 24, 31, 38, 45, + 52, 57, 62, 69, 76, 83, 90, 97, + 104, 109, 114, 121, 128, 135, 142, 142, + 142, 147, 152, 159, 166, 173, 180, 180, + 180, 185, 190, 197, 204, 211, 218, 225, + 232, 237, 242, 249, 256, 263, 270, 277, + 284, 289, 294, 301, 308, 315, 322, 329, + 336, 341, 346, 353, 360, 367, 374, 381, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, + }, + { /* Fourth byte 16-bit table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 17, 24, 31, 38, 38, + 38, 43, 48, 55, 62, 69, 76, 76, + 76, 81, 86, 93, 100, 107, 114, 121, + 128, 128, 133, 133, 140, 140, 147, 147, + 154, 159, 164, 171, 178, 185, 192, 199, + 206, 211, 216, 223, 230, 237, 244, 251, + 258, 263, 268, 273, 278, 283, 288, 293, + 298, 303, 308, 313, 318, 323, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, + }, + { /* Fourth byte 16-bit table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 23, 32, 41, 50, 59, + 68, 75, 82, 91, 100, 109, 118, 127, + 136, 143, 150, 159, 168, 177, 186, 195, + 204, 211, 218, 227, 236, 245, 254, 263, + 272, 279, 286, 295, 304, 313, 322, 331, + 340, 347, 354, 363, 372, 381, 390, 399, + 408, 413, 418, 425, 430, 437, 437, 442, + 449, 454, 459, 464, 469, 474, 477, 480, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, + }, + { /* Fourth byte 16-bit table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 14, 21, 26, 33, 33, 38, + 45, 50, 55, 60, 65, 70, 82, 94, + 106, 111, 116, 123, 130, 130, 130, 135, + 142, 147, 152, 157, 162, 162, 174, 186, + 198, 203, 208, 215, 222, 227, 232, 237, + 244, 249, 254, 259, 264, 269, 280, 291, + 293, 293, 293, 300, 305, 312, 312, 317, + 324, 329, 334, 339, 344, 349, 356, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, + }, + { /* Fourth byte 16-bit table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 15, 20, 25, 30, 35, + 40, 45, 50, 55, 60, 65, 70, 78, + 86, 94, 102, 110, 118, 126, 134, 142, + 150, 158, 166, 174, 182, 190, 190, 190, + 190, 195, 200, 205, 210, 215, 220, 225, + 230, 235, 240, 245, 250, 255, 260, 265, + 270, 275, 280, 285, 290, 295, 300, 305, + 310, 315, 320, 325, 330, 335, 340, 345, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, + 350, + }, + { /* Fourth byte 16-bit table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 27, 42, 51, 66, 75, 84, + 102, 114, 123, 132, 141, 153, 165, 177, + 189, 201, 213, 225, 243, 249, 267, 285, + 300, 312, 330, 348, 360, 369, 378, 390, + 402, 417, 432, 441, 450, 462, 471, 480, + 486, 492, 501, 510, 528, 540, 555, 573, + 585, 594, 603, 621, 633, 651, 660, 675, + 684, 696, 705, 717, 732, 744, 759, 771, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, + }, + { /* Fourth byte 16-bit table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 24, 33, 45, 54, 63, 72, + 87, 99, 105, 123, 132, 147, 159, 171, + 180, 189, 201, 207, 219, 234, 240, 258, + 267, 271, 275, 279, 283, 287, 291, 295, + 299, 303, 307, 312, 317, 322, 327, 332, + 337, 342, 347, 352, 357, 362, 367, 372, + 377, 382, 385, 387, 389, 392, 394, 396, + 396, 396, 396, 396, 402, 408, 414, 420, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, + }, + { /* Fourth byte 16-bit table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 34, 38, + 42, 46, 50, 54, 58, 62, 66, 70, + 74, 78, 82, 86, 90, 94, 98, 102, + 106, 110, 114, 118, 122, 126, 130, 134, + 138, 142, 146, 150, 154, 158, 162, 166, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 125, + 130, 135, 140, 145, 150, 156, 162, 168, + 174, 180, 186, 190, 194, 198, 202, 206, + 210, 214, 218, 222, 226, 230, 234, 238, + 242, 246, 250, 254, 258, 262, 266, 270, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, + }, + { /* Fourth byte 16-bit table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 98, 104, 110, 116, 122, 126, 130, 134, + 138, 142, 146, 150, 154, 158, 162, 166, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 130, 136, 140, 144, 148, 152, 156, 160, + 164, 168, 172, 176, 180, 184, 188, 192, + 196, 200, 204, 210, 216, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 54, 60, 66, 72, 78, 84, 90, + 96, 102, 108, 114, 120, 126, 132, 138, + 144, 150, 156, 162, 168, 174, 180, 186, + 192, 198, 204, 210, 216, 222, 228, 234, + 240, 246, 252, 258, 264, 270, 276, 282, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, + }, + { /* Fourth byte 16-bit table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 54, 60, 66, 72, 78, 84, 90, + 96, 96, 96, 102, 108, 114, 120, 126, + 132, 138, 144, 150, 156, 162, 168, 174, + 180, 186, 192, 198, 204, 210, 216, 222, + 228, 234, 240, 246, 252, 258, 264, 270, + 276, 282, 288, 294, 300, 306, 312, 318, + 324, 330, 336, 342, 348, 354, 360, 366, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, + }, + { /* Fourth byte 16-bit table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 17, 21, 25, 29, + 33, 37, 41, 45, 49, 53, 58, 62, + 66, 70, 74, 79, 83, 87, 91, 96, + 100, 104, 108, 112, 116, 121, 125, 129, + 133, 137, 141, 145, 149, 153, 157, 161, + 165, 169, 173, 177, 181, 185, 189, 193, + 197, 201, 205, 209, 213, 218, 222, 226, + 230, 235, 239, 243, 247, 251, 255, 259, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, + }, + { /* Fourth byte 16-bit table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 105, 109, 113, 117, 121, 125, + 129, 134, 139, 143, 147, 151, 155, 159, + 163, 167, 171, 175, 179, 184, 188, 192, + 196, 200, 205, 209, 213, 217, 221, 225, + 229, 233, 237, 241, 246, 250, 255, 259, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, + }, + { /* Fourth byte 16-bit table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 41, 45, 49, 53, 57, 61, + 66, 70, 75, 80, 84, 88, 92, 96, + 101, 106, 110, 114, 118, 122, 126, 130, + 134, 138, 142, 146, 150, 155, 159, 163, + 167, 171, 175, 179, 183, 187, 191, 195, + 199, 203, 207, 211, 215, 219, 223, 227, + 231, 236, 240, 244, 248, 252, 256, 261, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, + }, + { /* Fourth byte 16-bit table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 45, 49, 53, 57, 61, + 65, 69, 73, 77, 81, 85, 89, 93, + 97, 101, 105, 109, 113, 117, 122, 126, + 130, 134, 138, 142, 147, 151, 155, 159, + 163, 167, 171, 175, 179, 184, 188, 192, + 196, 201, 205, 209, 213, 217, 221, 225, + 230, 235, 240, 244, 249, 253, 257, 261, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, + }, + { /* Fourth byte 16-bit table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 29, + 33, 37, 41, 45, 49, 53, 58, 62, + 66, 71, 76, 80, 84, 88, 92, 96, + 100, 104, 108, 112, 117, 121, 126, 130, + 135, 139, 143, 147, 152, 156, 160, 165, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 227, 231, + 236, 240, 245, 249, 254, 259, 264, 268, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, + }, + { /* Fourth byte 16-bit table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 9, 14, 19, 24, 28, 32, + 36, 40, 44, 48, 52, 56, 61, 65, + 69, 73, 77, 82, 86, 91, 96, 100, + 104, 108, 112, 116, 120, 125, 130, 135, + 139, 143, 148, 152, 156, 160, 165, 169, + 173, 177, 181, 185, 190, 194, 198, 202, + 206, 210, 214, 219, 224, 228, 233, 237, + 242, 246, 250, 254, 259, 264, 268, 273, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, + }, + { /* Fourth byte 16-bit table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 9, 13, 17, 21, 25, 29, + 34, 39, 44, 49, 53, 57, 61, 65, + 69, 73, 77, 81, 85, 89, 93, 97, + 102, 106, 110, 114, 118, 122, 126, 130, + 134, 138, 142, 146, 150, 155, 160, 165, + 169, 173, 177, 181, 186, 190, 195, 199, + 203, 208, 213, 217, 221, 225, 229, 233, + 237, 241, 245, 249, 253, 257, 261, 265, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, + }, + { /* Fourth byte 16-bit table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 25, 29, + 33, 37, 41, 45, 50, 55, 59, 63, + 67, 71, 75, 79, 84, 88, 92, 96, + 100, 105, 110, 114, 118, 122, 127, 131, + 135, 140, 145, 149, 153, 157, 162, 166, + 170, 174, 178, 182, 186, 190, 195, 199, + 203, 207, 212, 216, 220, 224, 228, 233, + 238, 242, 246, 250, 255, 259, 264, 268, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, + }, + { /* Fourth byte 16-bit table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + }, + { + { /* Fourth byte 16-bit table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 38, 44, 48, 52, 56, 60, 64, + 68, 72, 76, 80, 84, 90, 96, 102, + 108, 112, 116, 120, 124, 130, 136, 140, + 144, 148, 152, 156, 160, 164, 168, 172, + 176, 180, 184, 188, 192, 196, 200, 206, + 212, 216, 220, 224, 228, 232, 236, 240, + 244, 250, 256, 260, 264, 268, 272, 276, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, + 280, + }, + { /* Fourth byte 16-bit table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 54, 60, 66, + 72, 78, 84, 90, 96, 100, 104, 108, + 112, 116, 120, 124, 128, 134, 140, 144, + 148, 152, 156, 160, 164, 170, 176, 182, + 188, 194, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 262, 268, 274, 280, 284, 288, 292, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, + }, + { /* Fourth byte 16-bit table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 107, 116, 116, 116, 116, + 116, 120, 124, 128, 132, 138, 144, 150, + 156, 162, 168, 174, 180, 186, 192, 198, + 204, 210, 216, 222, 228, 234, 240, 246, + 252, 256, 260, 264, 268, 272, 276, 282, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, + }, + { /* Fourth byte 16-bit table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 52, 56, 60, 64, 68, 72, 76, + 80, 86, 92, 98, 104, 110, 116, 122, + 128, 134, 140, 146, 152, 158, 164, 170, + 176, 182, 188, 194, 200, 204, 208, 212, + 216, 222, 228, 234, 240, 246, 252, 258, + 264, 270, 276, 280, 284, 288, 292, 296, + 300, 304, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, + 308, + }, + { /* Fourth byte 16-bit table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 17, 24, 31, 38, 45, + 52, 57, 62, 69, 76, 83, 90, 97, + 104, 109, 114, 121, 128, 135, 142, 142, + 142, 147, 152, 159, 166, 173, 180, 180, + 180, 185, 190, 197, 204, 211, 218, 225, + 232, 237, 242, 249, 256, 263, 270, 277, + 284, 289, 294, 301, 308, 315, 322, 329, + 336, 341, 346, 353, 360, 367, 374, 381, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, + 388, + }, + { /* Fourth byte 16-bit table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 17, 24, 31, 38, 38, + 38, 43, 48, 55, 62, 69, 76, 76, + 76, 81, 86, 93, 100, 107, 114, 121, + 128, 128, 133, 133, 140, 140, 147, 147, + 154, 159, 164, 171, 178, 185, 192, 199, + 206, 211, 216, 223, 230, 237, 244, 251, + 258, 263, 268, 273, 278, 283, 288, 293, + 298, 303, 308, 313, 318, 323, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, + 328, + }, + { /* Fourth byte 16-bit table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 14, 23, 32, 41, 50, 59, + 68, 75, 82, 91, 100, 109, 118, 127, + 136, 143, 150, 159, 168, 177, 186, 195, + 204, 211, 218, 227, 236, 245, 254, 263, + 272, 279, 286, 295, 304, 313, 322, 331, + 340, 347, 354, 363, 372, 381, 390, 399, + 408, 413, 418, 425, 430, 437, 437, 442, + 449, 454, 459, 464, 469, 474, 477, 480, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, + 483, + }, + { /* Fourth byte 16-bit table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 14, 21, 26, 33, 33, 38, + 45, 50, 55, 60, 65, 70, 82, 94, + 106, 111, 116, 123, 130, 130, 130, 135, + 142, 147, 152, 157, 162, 162, 174, 186, + 198, 203, 208, 215, 222, 227, 232, 237, + 244, 249, 254, 259, 264, 269, 280, 291, + 293, 293, 293, 300, 305, 312, 312, 317, + 324, 329, 334, 339, 344, 349, 356, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, + 359, + }, + { /* Fourth byte 16-bit table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 10, 15, 20, 25, 30, 35, + 40, 45, 50, 55, 60, 65, 70, 78, + 86, 94, 102, 110, 118, 126, 134, 142, + 150, 158, 166, 174, 182, 190, 207, 221, + 221, 226, 231, 236, 241, 246, 251, 256, + 261, 266, 271, 276, 281, 286, 291, 296, + 301, 306, 311, 316, 321, 326, 331, 336, + 341, 346, 351, 356, 361, 366, 371, 376, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 381, + 381, + }, + { /* Fourth byte 16-bit table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 27, 42, 51, 66, 75, 84, + 102, 114, 123, 132, 141, 153, 165, 177, + 189, 201, 213, 225, 243, 249, 267, 285, + 300, 312, 330, 348, 360, 369, 378, 390, + 402, 417, 432, 441, 450, 462, 471, 480, + 486, 492, 501, 510, 528, 540, 555, 573, + 585, 594, 603, 621, 633, 651, 660, 675, + 684, 696, 705, 717, 732, 744, 759, 771, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, + }, + { /* Fourth byte 16-bit table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 24, 33, 45, 54, 63, 72, + 87, 99, 105, 123, 132, 147, 159, 171, + 180, 189, 201, 207, 219, 234, 240, 258, + 267, 271, 275, 279, 283, 287, 291, 295, + 299, 303, 307, 312, 317, 322, 327, 332, + 337, 342, 347, 352, 357, 362, 367, 372, + 377, 382, 385, 387, 389, 392, 394, 396, + 398, 401, 404, 406, 412, 418, 424, 430, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, + }, + { /* Fourth byte 16-bit table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, + 224, 228, 232, 236, 240, 244, 248, 252, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, + }, + { /* Fourth byte 16-bit table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 34, 38, + 42, 46, 50, 54, 58, 62, 66, 70, + 74, 78, 82, 86, 90, 94, 98, 102, + 106, 110, 114, 118, 122, 126, 130, 134, + 138, 142, 146, 150, 154, 158, 162, 166, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 125, + 130, 135, 140, 145, 150, 156, 162, 168, + 174, 180, 186, 190, 194, 198, 202, 206, + 210, 214, 218, 222, 226, 230, 234, 238, + 242, 246, 250, 254, 258, 262, 266, 270, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, + 274, + }, + { /* Fourth byte 16-bit table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 98, 104, 110, 116, 122, 126, 130, 134, + 138, 142, 146, 150, 154, 158, 162, 166, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 130, 136, 140, 144, 148, 152, 156, 160, + 164, 168, 172, 176, 180, 184, 188, 192, + 196, 200, 204, 210, 216, 222, 226, 230, + 234, 238, 242, 246, 250, 254, 258, 262, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, + 266, + }, + { /* Fourth byte 16-bit table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 54, 60, 66, 72, 78, 84, 90, + 96, 102, 108, 114, 120, 126, 132, 138, + 144, 150, 156, 162, 168, 174, 180, 186, + 192, 198, 204, 210, 216, 222, 228, 234, + 240, 246, 252, 258, 264, 270, 276, 282, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, + }, + { /* Fourth byte 16-bit table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 12, 18, 24, 30, 36, 42, + 48, 54, 60, 66, 72, 78, 84, 90, + 96, 96, 96, 102, 108, 114, 120, 126, + 132, 138, 144, 150, 156, 162, 168, 174, + 180, 186, 192, 198, 204, 210, 216, 222, + 228, 234, 240, 246, 252, 258, 264, 270, + 276, 282, 288, 294, 300, 306, 312, 318, + 324, 330, 336, 342, 348, 354, 360, 366, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, + }, + { /* Fourth byte 16-bit table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 17, 21, 25, 29, + 33, 37, 41, 45, 49, 53, 58, 62, + 66, 70, 74, 79, 83, 87, 91, 96, + 100, 104, 108, 112, 116, 121, 125, 129, + 133, 137, 141, 145, 149, 153, 157, 161, + 165, 169, 173, 177, 181, 185, 189, 193, + 197, 201, 205, 209, 213, 218, 222, 226, + 230, 235, 239, 243, 247, 251, 255, 259, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, + }, + { /* Fourth byte 16-bit table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 105, 109, 113, 117, 121, 125, + 129, 134, 139, 143, 147, 151, 155, 159, + 163, 167, 171, 175, 179, 184, 188, 192, + 196, 200, 205, 209, 213, 217, 221, 225, + 229, 233, 237, 241, 246, 250, 255, 259, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, + 263, + }, + { /* Fourth byte 16-bit table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 41, 45, 49, 53, 57, 61, + 66, 70, 75, 80, 84, 88, 92, 96, + 101, 106, 110, 114, 118, 122, 126, 130, + 134, 138, 142, 146, 150, 155, 159, 163, + 167, 171, 175, 179, 183, 187, 191, 195, + 199, 203, 207, 211, 215, 219, 223, 227, + 231, 236, 240, 244, 248, 252, 256, 261, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, + }, + { /* Fourth byte 16-bit table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 45, 49, 53, 57, 61, + 65, 69, 73, 77, 81, 85, 89, 93, + 97, 101, 105, 109, 113, 117, 122, 126, + 130, 134, 138, 142, 147, 151, 155, 159, + 163, 167, 171, 175, 179, 184, 188, 192, + 196, 201, 205, 209, 213, 217, 221, 225, + 230, 235, 240, 244, 249, 253, 257, 261, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, + }, + { /* Fourth byte 16-bit table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 29, + 33, 37, 41, 45, 49, 53, 58, 62, + 66, 71, 76, 80, 84, 88, 92, 96, + 100, 104, 108, 112, 117, 121, 126, 130, + 135, 139, 143, 147, 152, 156, 160, 165, + 170, 174, 178, 182, 186, 190, 194, 198, + 202, 206, 210, 214, 218, 222, 227, 231, + 236, 240, 245, 249, 254, 259, 264, 268, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, + }, + { /* Fourth byte 16-bit table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 9, 14, 19, 24, 28, 32, + 36, 40, 44, 48, 52, 56, 61, 65, + 69, 73, 77, 82, 86, 91, 96, 100, + 104, 108, 112, 116, 120, 125, 130, 135, + 139, 143, 148, 152, 156, 160, 165, 169, + 173, 177, 181, 185, 190, 194, 198, 202, + 206, 210, 214, 219, 224, 228, 233, 237, + 242, 246, 250, 254, 259, 264, 268, 273, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, + 277, + }, + { /* Fourth byte 16-bit table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 9, 13, 17, 21, 25, 29, + 34, 39, 44, 49, 53, 57, 61, 65, + 69, 73, 77, 81, 85, 89, 93, 97, + 102, 106, 110, 114, 118, 122, 126, 130, + 134, 138, 142, 146, 150, 155, 160, 165, + 169, 173, 177, 181, 186, 190, 195, 199, + 203, 208, 213, 217, 221, 225, 229, 233, + 237, 241, 245, 249, 253, 257, 261, 265, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, + }, + { /* Fourth byte 16-bit table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 25, 29, + 33, 37, 41, 45, 50, 55, 59, 63, + 67, 71, 75, 79, 84, 88, 92, 96, + 100, 105, 110, 114, 118, 122, 127, 131, + 135, 140, 145, 149, 153, 157, 162, 166, + 170, 174, 178, 182, 186, 190, 195, 199, + 203, 207, 212, 216, 220, 224, 228, 233, + 238, 242, 246, 250, 255, 259, 264, 268, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, + 272, + }, + }, +}; + +static const uchar_t u8_decomp_final_tbl[2][19370] = { + { + 0x20, 0x20, 0xCC, 0x88, 0x61, 0x20, 0xCC, 0x84, + 0x32, 0x33, 0x20, 0xCC, 0x81, 0xCE, 0xBC, 0x20, + 0xCC, 0xA7, 0x31, 0x6F, 0x31, 0xE2, 0x81, 0x84, + 0x34, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x33, 0xE2, + 0x81, 0x84, 0x34, 0xF6, 0x41, 0xCC, 0x80, 0xF6, + 0x41, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xF6, + 0x41, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0x88, 0xF6, + 0x41, 0xCC, 0x8A, 0xF6, 0x43, 0xCC, 0xA7, 0xF6, + 0x45, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x81, 0xF6, + 0x45, 0xCC, 0x82, 0xF6, 0x45, 0xCC, 0x88, 0xF6, + 0x49, 0xCC, 0x80, 0xF6, 0x49, 0xCC, 0x81, 0xF6, + 0x49, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x88, 0xF6, + 0x4E, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x80, 0xF6, + 0x4F, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xF6, + 0x4F, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x88, 0xF6, + 0x55, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x81, 0xF6, + 0x55, 0xCC, 0x82, 0xF6, 0x55, 0xCC, 0x88, 0xF6, + 0x59, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x80, 0xF6, + 0x61, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xF6, + 0x61, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x88, 0xF6, + 0x61, 0xCC, 0x8A, 0xF6, 0x63, 0xCC, 0xA7, 0xF6, + 0x65, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x81, 0xF6, + 0x65, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0x88, 0xF6, + 0x69, 0xCC, 0x80, 0xF6, 0x69, 0xCC, 0x81, 0xF6, + 0x69, 0xCC, 0x82, 0xF6, 0x69, 0xCC, 0x88, 0xF6, + 0x6E, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x80, 0xF6, + 0x6F, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xF6, + 0x6F, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x88, 0xF6, + 0x75, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x81, 0xF6, + 0x75, 0xCC, 0x82, 0xF6, 0x75, 0xCC, 0x88, 0xF6, + 0x79, 0xCC, 0x81, 0xF6, 0x79, 0xCC, 0x88, 0xF6, + 0x41, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x84, 0xF6, + 0x41, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0x86, 0xF6, + 0x41, 0xCC, 0xA8, 0xF6, 0x61, 0xCC, 0xA8, 0xF6, + 0x43, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0x81, 0xF6, + 0x43, 0xCC, 0x82, 0xF6, 0x63, 0xCC, 0x82, 0xF6, + 0x43, 0xCC, 0x87, 0xF6, 0x63, 0xCC, 0x87, 0xF6, + 0x43, 0xCC, 0x8C, 0xF6, 0x63, 0xCC, 0x8C, 0xF6, + 0x44, 0xCC, 0x8C, 0xF6, 0x64, 0xCC, 0x8C, 0xF6, + 0x45, 0xCC, 0x84, 0xF6, 0x65, 0xCC, 0x84, 0xF6, + 0x45, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0x86, 0xF6, + 0x45, 0xCC, 0x87, 0xF6, 0x65, 0xCC, 0x87, 0xF6, + 0x45, 0xCC, 0xA8, 0xF6, 0x65, 0xCC, 0xA8, 0xF6, + 0x45, 0xCC, 0x8C, 0xF6, 0x65, 0xCC, 0x8C, 0xF6, + 0x47, 0xCC, 0x82, 0xF6, 0x67, 0xCC, 0x82, 0xF6, + 0x47, 0xCC, 0x86, 0xF6, 0x67, 0xCC, 0x86, 0xF6, + 0x47, 0xCC, 0x87, 0xF6, 0x67, 0xCC, 0x87, 0xF6, + 0x47, 0xCC, 0xA7, 0xF6, 0x67, 0xCC, 0xA7, 0xF6, + 0x48, 0xCC, 0x82, 0xF6, 0x68, 0xCC, 0x82, 0xF6, + 0x49, 0xCC, 0x83, 0xF6, 0x69, 0xCC, 0x83, 0xF6, + 0x49, 0xCC, 0x84, 0xF6, 0x69, 0xCC, 0x84, 0xF6, + 0x49, 0xCC, 0x86, 0xF6, 0x69, 0xCC, 0x86, 0xF6, + 0x49, 0xCC, 0xA8, 0xF6, 0x69, 0xCC, 0xA8, 0xF6, + 0x49, 0xCC, 0x87, 0x49, 0x4A, 0x69, 0x6A, 0xF6, + 0x4A, 0xCC, 0x82, 0xF6, 0x6A, 0xCC, 0x82, 0xF6, + 0x4B, 0xCC, 0xA7, 0xF6, 0x6B, 0xCC, 0xA7, 0xF6, + 0x4C, 0xCC, 0x81, 0xF6, 0x6C, 0xCC, 0x81, 0xF6, + 0x4C, 0xCC, 0xA7, 0xF6, 0x6C, 0xCC, 0xA7, 0xF6, + 0x4C, 0xCC, 0x8C, 0xF6, 0x6C, 0xCC, 0x8C, 0x4C, + 0xC2, 0xB7, 0x6C, 0xC2, 0xB7, 0xF6, 0x4E, 0xCC, + 0x81, 0xF6, 0x6E, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, + 0xA7, 0xF6, 0x6E, 0xCC, 0xA7, 0xF6, 0x4E, 0xCC, + 0x8C, 0xF6, 0x6E, 0xCC, 0x8C, 0xCA, 0xBC, 0x6E, + 0xF6, 0x4F, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x84, + 0xF6, 0x4F, 0xCC, 0x86, 0xF6, 0x6F, 0xCC, 0x86, + 0xF6, 0x4F, 0xCC, 0x8B, 0xF6, 0x6F, 0xCC, 0x8B, + 0xF6, 0x52, 0xCC, 0x81, 0xF6, 0x72, 0xCC, 0x81, + 0xF6, 0x52, 0xCC, 0xA7, 0xF6, 0x72, 0xCC, 0xA7, + 0xF6, 0x52, 0xCC, 0x8C, 0xF6, 0x72, 0xCC, 0x8C, + 0xF6, 0x53, 0xCC, 0x81, 0xF6, 0x73, 0xCC, 0x81, + 0xF6, 0x53, 0xCC, 0x82, 0xF6, 0x73, 0xCC, 0x82, + 0xF6, 0x53, 0xCC, 0xA7, 0xF6, 0x73, 0xCC, 0xA7, + 0xF6, 0x53, 0xCC, 0x8C, 0xF6, 0x73, 0xCC, 0x8C, + 0xF6, 0x54, 0xCC, 0xA7, 0xF6, 0x74, 0xCC, 0xA7, + 0xF6, 0x54, 0xCC, 0x8C, 0xF6, 0x74, 0xCC, 0x8C, + 0xF6, 0x55, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x83, + 0xF6, 0x55, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x84, + 0xF6, 0x55, 0xCC, 0x86, 0xF6, 0x75, 0xCC, 0x86, + 0xF6, 0x55, 0xCC, 0x8A, 0xF6, 0x75, 0xCC, 0x8A, + 0xF6, 0x55, 0xCC, 0x8B, 0xF6, 0x75, 0xCC, 0x8B, + 0xF6, 0x55, 0xCC, 0xA8, 0xF6, 0x75, 0xCC, 0xA8, + 0xF6, 0x57, 0xCC, 0x82, 0xF6, 0x77, 0xCC, 0x82, + 0xF6, 0x59, 0xCC, 0x82, 0xF6, 0x79, 0xCC, 0x82, + 0xF6, 0x59, 0xCC, 0x88, 0xF6, 0x5A, 0xCC, 0x81, + 0xF6, 0x7A, 0xCC, 0x81, 0xF6, 0x5A, 0xCC, 0x87, + 0xF6, 0x7A, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x8C, + 0xF6, 0x7A, 0xCC, 0x8C, 0x73, 0xF6, 0x4F, 0xCC, + 0x9B, 0xF6, 0x6F, 0xCC, 0x9B, 0xF6, 0x55, 0xCC, + 0x9B, 0xF6, 0x75, 0xCC, 0x9B, 0x44, 0x5A, 0xCC, + 0x8C, 0x44, 0x7A, 0xCC, 0x8C, 0x64, 0x7A, 0xCC, + 0x8C, 0x4C, 0x4A, 0x4C, 0x6A, 0x6C, 0x6A, 0x4E, + 0x4A, 0x4E, 0x6A, 0x6E, 0x6A, 0xF6, 0x41, 0xCC, + 0x8C, 0xF6, 0x61, 0xCC, 0x8C, 0xF6, 0x49, 0xCC, + 0x8C, 0xF6, 0x69, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, + 0x8C, 0xF6, 0x6F, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, + 0x8C, 0xF6, 0x75, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x88, 0xCC, + 0x84, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x55, 0xCC, + 0x88, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x88, 0xCC, + 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xF6, + 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x41, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x88, 0xCC, + 0x84, 0xF6, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xF6, + 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0xC3, 0x86, + 0xCC, 0x84, 0xF6, 0xC3, 0xA6, 0xCC, 0x84, 0xF6, + 0x47, 0xCC, 0x8C, 0xF6, 0x67, 0xCC, 0x8C, 0xF6, + 0x4B, 0xCC, 0x8C, 0xF6, 0x6B, 0xCC, 0x8C, 0xF6, + 0x4F, 0xCC, 0xA8, 0xF6, 0x6F, 0xCC, 0xA8, 0xF6, + 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0xA8, 0xCC, 0x84, 0xF6, 0xC6, 0xB7, 0xCC, 0x8C, + 0xF6, 0xCA, 0x92, 0xCC, 0x8C, 0xF6, 0x6A, 0xCC, + 0x8C, 0x44, 0x5A, 0x44, 0x7A, 0x64, 0x7A, 0xF6, + 0x47, 0xCC, 0x81, 0xF6, 0x67, 0xCC, 0x81, 0xF6, + 0x4E, 0xCC, 0x80, 0xF6, 0x6E, 0xCC, 0x80, 0xF6, + 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0x61, 0xCC, + 0x8A, 0xCC, 0x81, 0xF6, 0xC3, 0x86, 0xCC, 0x81, + 0xF6, 0xC3, 0xA6, 0xCC, 0x81, 0xF6, 0xC3, 0x98, + 0xCC, 0x81, 0xF6, 0xC3, 0xB8, 0xCC, 0x81, 0xF6, + 0x41, 0xCC, 0x8F, 0xF6, 0x61, 0xCC, 0x8F, 0xF6, + 0x41, 0xCC, 0x91, 0xF6, 0x61, 0xCC, 0x91, 0xF6, + 0x45, 0xCC, 0x8F, 0xF6, 0x65, 0xCC, 0x8F, 0xF6, + 0x45, 0xCC, 0x91, 0xF6, 0x65, 0xCC, 0x91, 0xF6, + 0x49, 0xCC, 0x8F, 0xF6, 0x69, 0xCC, 0x8F, 0xF6, + 0x49, 0xCC, 0x91, 0xF6, 0x69, 0xCC, 0x91, 0xF6, + 0x4F, 0xCC, 0x8F, 0xF6, 0x6F, 0xCC, 0x8F, 0xF6, + 0x4F, 0xCC, 0x91, 0xF6, 0x6F, 0xCC, 0x91, 0xF6, + 0x52, 0xCC, 0x8F, 0xF6, 0x72, 0xCC, 0x8F, 0xF6, + 0x52, 0xCC, 0x91, 0xF6, 0x72, 0xCC, 0x91, 0xF6, + 0x55, 0xCC, 0x8F, 0xF6, 0x75, 0xCC, 0x8F, 0xF6, + 0x55, 0xCC, 0x91, 0xF6, 0x75, 0xCC, 0x91, 0xF6, + 0x53, 0xCC, 0xA6, 0xF6, 0x73, 0xCC, 0xA6, 0xF6, + 0x54, 0xCC, 0xA6, 0xF6, 0x74, 0xCC, 0xA6, 0xF6, + 0x48, 0xCC, 0x8C, 0xF6, 0x68, 0xCC, 0x8C, 0xF6, + 0x41, 0xCC, 0x87, 0xF6, 0x61, 0xCC, 0x87, 0xF6, + 0x45, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0xA7, 0xF6, + 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, + 0x84, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, + 0x4F, 0xCC, 0x87, 0xF6, 0x6F, 0xCC, 0x87, 0xF6, + 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0x87, 0xCC, 0x84, 0xF6, 0x59, 0xCC, 0x84, 0xF6, + 0x79, 0xCC, 0x84, 0x68, 0xC9, 0xA6, 0x6A, 0x72, + 0xC9, 0xB9, 0xC9, 0xBB, 0xCA, 0x81, 0x77, 0x79, + 0x20, 0xCC, 0x86, 0x20, 0xCC, 0x87, 0x20, 0xCC, + 0x8A, 0x20, 0xCC, 0xA8, 0x20, 0xCC, 0x83, 0x20, + 0xCC, 0x8B, 0xC9, 0xA3, 0x6C, 0x73, 0x78, 0xCA, + 0x95, 0xF6, 0xCC, 0x80, 0xF6, 0xCC, 0x81, 0xF6, + 0xCC, 0x93, 0xF6, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0xCA, 0xB9, 0x20, 0xCD, 0x85, 0xF6, 0x3B, 0x20, + 0xCC, 0x81, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, + 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x91, + 0xCC, 0x81, 0xF6, 0xC2, 0xB7, 0xF6, 0xCE, 0x95, + 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, + 0xCE, 0x99, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, + 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, + 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, + 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x88, 0xF6, + 0xCE, 0xA5, 0xCC, 0x88, 0xF6, 0xCE, 0xB1, 0xCC, + 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, + 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, + 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0xCE, 0xB9, 0xCC, 0x88, 0xF6, 0xCF, 0x85, 0xCC, + 0x88, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, + 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x81, + 0xCE, 0xB2, 0xCE, 0xB8, 0xCE, 0xA5, 0xF5, 0x05, + 0xCF, 0x92, 0xCC, 0x81, 0xCE, 0xA5, 0xCC, 0x81, + 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x88, 0xCE, 0xA5, + 0xCC, 0x88, 0xCF, 0x86, 0xCF, 0x80, 0xCE, 0xBA, + 0xCF, 0x81, 0xCF, 0x82, 0xCE, 0x98, 0xCE, 0xB5, + 0xF6, 0xD0, 0x95, 0xCC, 0x80, 0xF6, 0xD0, 0x95, + 0xCC, 0x88, 0xF6, 0xD0, 0x93, 0xCC, 0x81, 0xF6, + 0xD0, 0x86, 0xCC, 0x88, 0xF6, 0xD0, 0x9A, 0xCC, + 0x81, 0xF6, 0xD0, 0x98, 0xCC, 0x80, 0xF6, 0xD0, + 0xA3, 0xCC, 0x86, 0xF6, 0xD0, 0x98, 0xCC, 0x86, + 0xF6, 0xD0, 0xB8, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, + 0xCC, 0x80, 0xF6, 0xD0, 0xB5, 0xCC, 0x88, 0xF6, + 0xD0, 0xB3, 0xCC, 0x81, 0xF6, 0xD1, 0x96, 0xCC, + 0x88, 0xF6, 0xD0, 0xBA, 0xCC, 0x81, 0xF6, 0xD0, + 0xB8, 0xCC, 0x80, 0xF6, 0xD1, 0x83, 0xCC, 0x86, + 0xF6, 0xD1, 0xB4, 0xCC, 0x8F, 0xF6, 0xD1, 0xB5, + 0xCC, 0x8F, 0xF6, 0xD0, 0x96, 0xCC, 0x86, 0xF6, + 0xD0, 0xB6, 0xCC, 0x86, 0xF6, 0xD0, 0x90, 0xCC, + 0x86, 0xF6, 0xD0, 0xB0, 0xCC, 0x86, 0xF6, 0xD0, + 0x90, 0xCC, 0x88, 0xF6, 0xD0, 0xB0, 0xCC, 0x88, + 0xF6, 0xD0, 0x95, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, + 0xCC, 0x86, 0xF6, 0xD3, 0x98, 0xCC, 0x88, 0xF6, + 0xD3, 0x99, 0xCC, 0x88, 0xF6, 0xD0, 0x96, 0xCC, + 0x88, 0xF6, 0xD0, 0xB6, 0xCC, 0x88, 0xF6, 0xD0, + 0x97, 0xCC, 0x88, 0xF6, 0xD0, 0xB7, 0xCC, 0x88, + 0xF6, 0xD0, 0x98, 0xCC, 0x84, 0xF6, 0xD0, 0xB8, + 0xCC, 0x84, 0xF6, 0xD0, 0x98, 0xCC, 0x88, 0xF6, + 0xD0, 0xB8, 0xCC, 0x88, 0xF6, 0xD0, 0x9E, 0xCC, + 0x88, 0xF6, 0xD0, 0xBE, 0xCC, 0x88, 0xF6, 0xD3, + 0xA8, 0xCC, 0x88, 0xF6, 0xD3, 0xA9, 0xCC, 0x88, + 0xF6, 0xD0, 0xAD, 0xCC, 0x88, 0xF6, 0xD1, 0x8D, + 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, 0x84, 0xF6, + 0xD1, 0x83, 0xCC, 0x84, 0xF6, 0xD0, 0xA3, 0xCC, + 0x88, 0xF6, 0xD1, 0x83, 0xCC, 0x88, 0xF6, 0xD0, + 0xA3, 0xCC, 0x8B, 0xF6, 0xD1, 0x83, 0xCC, 0x8B, + 0xF6, 0xD0, 0xA7, 0xCC, 0x88, 0xF6, 0xD1, 0x87, + 0xCC, 0x88, 0xF6, 0xD0, 0xAB, 0xCC, 0x88, 0xF6, + 0xD1, 0x8B, 0xCC, 0x88, 0xD5, 0xA5, 0xD6, 0x82, + 0xF6, 0xD8, 0xA7, 0xD9, 0x93, 0xF6, 0xD8, 0xA7, + 0xD9, 0x94, 0xF6, 0xD9, 0x88, 0xD9, 0x94, 0xF6, + 0xD8, 0xA7, 0xD9, 0x95, 0xF6, 0xD9, 0x8A, 0xD9, + 0x94, 0xD8, 0xA7, 0xD9, 0xB4, 0xD9, 0x88, 0xD9, + 0xB4, 0xDB, 0x87, 0xD9, 0xB4, 0xD9, 0x8A, 0xD9, + 0xB4, 0xF6, 0xDB, 0x95, 0xD9, 0x94, 0xF6, 0xDB, + 0x81, 0xD9, 0x94, 0xF6, 0xDB, 0x92, 0xD9, 0x94, + 0xF6, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0xF6, + 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, + 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, + 0x95, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x96, + 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x97, 0xE0, + 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x9C, 0xE0, 0xA4, + 0xBC, 0xF6, 0xE0, 0xA4, 0xA1, 0xE0, 0xA4, 0xBC, + 0xF6, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0xF6, + 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, + 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA7, + 0x87, 0xE0, 0xA6, 0xBE, 0xF6, 0xE0, 0xA7, 0x87, + 0xE0, 0xA7, 0x97, 0xF6, 0xE0, 0xA6, 0xA1, 0xE0, + 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xA2, 0xE0, 0xA6, + 0xBC, 0xF6, 0xE0, 0xA6, 0xAF, 0xE0, 0xA6, 0xBC, + 0xF6, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0xF6, + 0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, + 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, + 0x97, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x9C, + 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0xAB, 0xE0, + 0xA8, 0xBC, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, + 0x96, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, + 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0xF6, + 0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, + 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, 0xAE, + 0x92, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xAF, 0x86, + 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x87, 0xE0, + 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x86, 0xE0, 0xAF, + 0x97, 0xF6, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, + 0xF6, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0xF6, + 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0xF6, 0xE0, 0xB3, + 0x86, 0xE0, 0xB3, 0x82, 0xF6, 0xE0, 0xB3, 0x86, + 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, + 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, + 0x87, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, 0x86, + 0xE0, 0xB5, 0x97, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, + 0x8F, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, + 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x9F, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, + 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0xE0, 0xBA, + 0xAB, 0xE0, 0xBA, 0x99, 0xE0, 0xBA, 0xAB, 0xE0, + 0xBA, 0xA1, 0xE0, 0xBC, 0x8B, 0xF6, 0xE0, 0xBD, + 0x82, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x8C, + 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x91, 0xE0, + 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, + 0xB7, 0xF6, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, + 0xF6, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0xF6, + 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0xF6, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xF6, 0xE0, 0xBE, + 0xB2, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB2, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, + 0xB3, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB3, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBD, + 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, 0x92, + 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0x9C, 0xE0, + 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE, + 0xB7, 0xF6, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7, + 0xF6, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0xF6, + 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0xF6, 0xE1, + 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0xF6, 0x41, 0xCC, + 0xA5, 0xF6, 0x61, 0xCC, 0xA5, 0xF6, 0x42, 0xCC, + 0x87, 0xF6, 0x62, 0xCC, 0x87, 0xF6, 0x42, 0xCC, + 0xA3, 0xF6, 0x62, 0xCC, 0xA3, 0xF6, 0x42, 0xCC, + 0xB1, 0xF6, 0x62, 0xCC, 0xB1, 0xF6, 0x43, 0xCC, + 0xA7, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0xA7, 0xCC, + 0x81, 0xF6, 0x44, 0xCC, 0x87, 0xF6, 0x64, 0xCC, + 0x87, 0xF6, 0x44, 0xCC, 0xA3, 0xF6, 0x64, 0xCC, + 0xA3, 0xF6, 0x44, 0xCC, 0xB1, 0xF6, 0x64, 0xCC, + 0xB1, 0xF6, 0x44, 0xCC, 0xA7, 0xF6, 0x64, 0xCC, + 0xA7, 0xF6, 0x44, 0xCC, 0xAD, 0xF6, 0x64, 0xCC, + 0xAD, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xF6, + 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x45, 0xCC, + 0x84, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x84, 0xCC, + 0x81, 0xF6, 0x45, 0xCC, 0xAD, 0xF6, 0x65, 0xCC, + 0xAD, 0xF6, 0x45, 0xCC, 0xB0, 0xF6, 0x65, 0xCC, + 0xB0, 0xF6, 0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, + 0x65, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x46, 0xCC, + 0x87, 0xF6, 0x66, 0xCC, 0x87, 0xF6, 0x47, 0xCC, + 0x84, 0xF6, 0x67, 0xCC, 0x84, 0xF6, 0x48, 0xCC, + 0x87, 0xF6, 0x68, 0xCC, 0x87, 0xF6, 0x48, 0xCC, + 0xA3, 0xF6, 0x68, 0xCC, 0xA3, 0xF6, 0x48, 0xCC, + 0x88, 0xF6, 0x68, 0xCC, 0x88, 0xF6, 0x48, 0xCC, + 0xA7, 0xF6, 0x68, 0xCC, 0xA7, 0xF6, 0x48, 0xCC, + 0xAE, 0xF6, 0x68, 0xCC, 0xAE, 0xF6, 0x49, 0xCC, + 0xB0, 0xF6, 0x69, 0xCC, 0xB0, 0xF6, 0x49, 0xCC, + 0x88, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x88, 0xCC, + 0x81, 0xF6, 0x4B, 0xCC, 0x81, 0xF6, 0x6B, 0xCC, + 0x81, 0xF6, 0x4B, 0xCC, 0xA3, 0xF6, 0x6B, 0xCC, + 0xA3, 0xF6, 0x4B, 0xCC, 0xB1, 0xF6, 0x6B, 0xCC, + 0xB1, 0xF6, 0x4C, 0xCC, 0xA3, 0xF6, 0x6C, 0xCC, + 0xA3, 0xF6, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, + 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x4C, 0xCC, + 0xB1, 0xF6, 0x6C, 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, + 0xAD, 0xF6, 0x6C, 0xCC, 0xAD, 0xF6, 0x4D, 0xCC, + 0x81, 0xF6, 0x6D, 0xCC, 0x81, 0xF6, 0x4D, 0xCC, + 0x87, 0xF6, 0x6D, 0xCC, 0x87, 0xF6, 0x4D, 0xCC, + 0xA3, 0xF6, 0x6D, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, + 0x87, 0xF6, 0x6E, 0xCC, 0x87, 0xF6, 0x4E, 0xCC, + 0xA3, 0xF6, 0x6E, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, + 0xB1, 0xF6, 0x6E, 0xCC, 0xB1, 0xF6, 0x4E, 0xCC, + 0xAD, 0xF6, 0x6E, 0xCC, 0xAD, 0xF6, 0x4F, 0xCC, + 0x83, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, + 0x81, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, + 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x4F, 0xCC, + 0x84, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x84, 0xCC, + 0x80, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, + 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x50, 0xCC, + 0x81, 0xF6, 0x70, 0xCC, 0x81, 0xF6, 0x50, 0xCC, + 0x87, 0xF6, 0x70, 0xCC, 0x87, 0xF6, 0x52, 0xCC, + 0x87, 0xF6, 0x72, 0xCC, 0x87, 0xF6, 0x52, 0xCC, + 0xA3, 0xF6, 0x72, 0xCC, 0xA3, 0xF6, 0x52, 0xCC, + 0xA3, 0xCC, 0x84, 0xF6, 0x72, 0xCC, 0xA3, 0xCC, + 0x84, 0xF6, 0x52, 0xCC, 0xB1, 0xF6, 0x72, 0xCC, + 0xB1, 0xF6, 0x53, 0xCC, 0x87, 0xF6, 0x73, 0xCC, + 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xF6, 0x73, 0xCC, + 0xA3, 0xF6, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xF6, + 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x53, 0xCC, + 0x8C, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x8C, 0xCC, + 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, + 0x73, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x54, 0xCC, + 0x87, 0xF6, 0x74, 0xCC, 0x87, 0xF6, 0x54, 0xCC, + 0xA3, 0xF6, 0x74, 0xCC, 0xA3, 0xF6, 0x54, 0xCC, + 0xB1, 0xF6, 0x74, 0xCC, 0xB1, 0xF6, 0x54, 0xCC, + 0xAD, 0xF6, 0x74, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, + 0xA4, 0xF6, 0x75, 0xCC, 0xA4, 0xF6, 0x55, 0xCC, + 0xB0, 0xF6, 0x75, 0xCC, 0xB0, 0xF6, 0x55, 0xCC, + 0xAD, 0xF6, 0x75, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, + 0x83, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x83, 0xCC, + 0x81, 0xF6, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xF6, + 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x56, 0xCC, + 0x83, 0xF6, 0x76, 0xCC, 0x83, 0xF6, 0x56, 0xCC, + 0xA3, 0xF6, 0x76, 0xCC, 0xA3, 0xF6, 0x57, 0xCC, + 0x80, 0xF6, 0x77, 0xCC, 0x80, 0xF6, 0x57, 0xCC, + 0x81, 0xF6, 0x77, 0xCC, 0x81, 0xF6, 0x57, 0xCC, + 0x88, 0xF6, 0x77, 0xCC, 0x88, 0xF6, 0x57, 0xCC, + 0x87, 0xF6, 0x77, 0xCC, 0x87, 0xF6, 0x57, 0xCC, + 0xA3, 0xF6, 0x77, 0xCC, 0xA3, 0xF6, 0x58, 0xCC, + 0x87, 0xF6, 0x78, 0xCC, 0x87, 0xF6, 0x58, 0xCC, + 0x88, 0xF6, 0x78, 0xCC, 0x88, 0xF6, 0x59, 0xCC, + 0x87, 0xF6, 0x79, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, + 0x82, 0xF6, 0x7A, 0xCC, 0x82, 0xF6, 0x5A, 0xCC, + 0xA3, 0xF6, 0x7A, 0xCC, 0xA3, 0xF6, 0x5A, 0xCC, + 0xB1, 0xF6, 0x7A, 0xCC, 0xB1, 0xF6, 0x68, 0xCC, + 0xB1, 0xF6, 0x74, 0xCC, 0x88, 0xF6, 0x77, 0xCC, + 0x8A, 0xF6, 0x79, 0xCC, 0x8A, 0x61, 0xCA, 0xBE, + 0xF5, 0x05, 0xC5, 0xBF, 0xCC, 0x87, 0x73, 0xCC, + 0x87, 0xF6, 0x41, 0xCC, 0xA3, 0xF6, 0x61, 0xCC, + 0xA3, 0xF6, 0x41, 0xCC, 0x89, 0xF6, 0x61, 0xCC, + 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xF6, + 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x41, 0xCC, + 0x82, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x82, 0xCC, + 0x80, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xF6, + 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x41, 0xCC, + 0x82, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x82, 0xCC, + 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, + 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x41, 0xCC, + 0x86, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x86, 0xCC, + 0x81, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xF6, + 0x61, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x41, 0xCC, + 0x86, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x86, 0xCC, + 0x89, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x83, 0xF6, + 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x41, 0xCC, + 0xA3, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0xA3, 0xCC, + 0x86, 0xF6, 0x45, 0xCC, 0xA3, 0xF6, 0x65, 0xCC, + 0xA3, 0xF6, 0x45, 0xCC, 0x89, 0xF6, 0x65, 0xCC, + 0x89, 0xF6, 0x45, 0xCC, 0x83, 0xF6, 0x65, 0xCC, + 0x83, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xF6, + 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x45, 0xCC, + 0x82, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x82, 0xCC, + 0x80, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xF6, + 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x45, 0xCC, + 0x82, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x82, 0xCC, + 0x83, 0xF6, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, + 0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x49, 0xCC, + 0x89, 0xF6, 0x69, 0xCC, 0x89, 0xF6, 0x49, 0xCC, + 0xA3, 0xF6, 0x69, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, + 0xA3, 0xF6, 0x6F, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, + 0x89, 0xF6, 0x6F, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, + 0x82, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, + 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, + 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, + 0x82, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, + 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, + 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, + 0xA3, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0xA3, 0xCC, + 0x82, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, + 0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, + 0x9B, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, + 0x80, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, + 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, + 0x9B, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, + 0x83, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, + 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, + 0xA3, 0xF6, 0x75, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, + 0x89, 0xF6, 0x75, 0xCC, 0x89, 0xF6, 0x55, 0xCC, + 0x9B, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, + 0x81, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, + 0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x55, 0xCC, + 0x9B, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, + 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, + 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x55, 0xCC, + 0x9B, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, + 0xA3, 0xF6, 0x59, 0xCC, 0x80, 0xF6, 0x79, 0xCC, + 0x80, 0xF6, 0x59, 0xCC, 0xA3, 0xF6, 0x79, 0xCC, + 0xA3, 0xF6, 0x59, 0xCC, 0x89, 0xF6, 0x79, 0xCC, + 0x89, 0xF6, 0x59, 0xCC, 0x83, 0xF6, 0x79, 0xCC, + 0x83, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xF6, 0xCE, + 0xB1, 0xCC, 0x94, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, + 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, + 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xF6, + 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, + 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x91, + 0xCC, 0x93, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xF6, + 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x91, + 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, + 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x93, + 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, + 0x82, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xF6, 0xCE, + 0xB5, 0xCC, 0x94, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, + 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, + 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xF6, + 0xCE, 0x95, 0xCC, 0x93, 0xF6, 0xCE, 0x95, 0xCC, + 0x94, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, + 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xF6, + 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, + 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, + 0xCC, 0x93, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xF6, + 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, + 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, + 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, + 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, + 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xF6, 0xCE, + 0x97, 0xCC, 0x94, 0xF6, 0xCE, 0x97, 0xCC, 0x93, + 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, + 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xF6, + 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, + 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, + 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xF6, + 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, + 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, + 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, + 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, + 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, + 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xF6, 0xCE, + 0x99, 0xCC, 0x94, 0xF6, 0xCE, 0x99, 0xCC, 0x93, + 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, + 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xF6, + 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, + 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xBF, + 0xCC, 0x93, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xF6, + 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, + 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, + 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, 0xCC, + 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, + 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xF6, 0xCE, 0x9F, + 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, + 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, + 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, + 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xF6, 0xCF, + 0x85, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCC, 0x93, + 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, + 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xF6, + 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, + 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, + 0xCC, 0x94, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, + 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xF6, + 0xCF, 0x89, 0xCC, 0x93, 0xF6, 0xCF, 0x89, 0xCC, + 0x94, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, + 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xF6, + 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCF, + 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x89, + 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCC, + 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, + 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xF6, 0xCE, 0xA9, + 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, + 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, + 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, + 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, + 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xF6, + 0xCE, 0xB1, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, + 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x80, 0xF6, 0xCE, + 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x80, + 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, + 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, 0xF6, + 0xCE, 0xBF, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, + 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x80, 0xF6, 0xCF, + 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x80, + 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, + 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, + 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, + 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, + 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, + 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xF6, + 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, + 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, + 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, + 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, + 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, + 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, + 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xF6, + 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, + 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, + 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, 0x89, + 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, + 0x94, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, + 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, + 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, + 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xF6, + 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, + 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, + 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, + 0xCC, 0x86, 0xF6, 0xCE, 0xB1, 0xCC, 0x84, 0xF6, + 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, + 0xB1, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, + 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xF6, + 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, + 0x91, 0xCC, 0x86, 0xF6, 0xCE, 0x91, 0xCC, 0x84, + 0xF6, 0xCE, 0x91, 0xCC, 0x80, 0xF6, 0xCE, 0x91, + 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCD, 0x85, 0x20, + 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0x20, 0xCC, 0x93, + 0x20, 0xCD, 0x82, 0xF5, 0x05, 0xC2, 0xA8, 0xCD, + 0x82, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, + 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, + 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, + 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xF6, 0xCE, + 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x95, + 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x81, 0xF6, + 0xCE, 0x97, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, + 0x81, 0xF6, 0xCE, 0x97, 0xCD, 0x85, 0xF5, 0x06, + 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0x20, 0xCC, 0x93, + 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCC, + 0x81, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xF5, 0x06, + 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0x20, 0xCC, 0x93, + 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x86, 0xF6, + 0xCE, 0xB9, 0xCC, 0x84, 0xF6, 0xCE, 0xB9, 0xCC, + 0x88, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, + 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCD, 0x82, 0xF6, + 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, + 0x99, 0xCC, 0x86, 0xF6, 0xCE, 0x99, 0xCC, 0x84, + 0xF6, 0xCE, 0x99, 0xCC, 0x80, 0xF6, 0xCE, 0x99, + 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCC, + 0x80, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xF5, 0x06, + 0xE1, 0xBF, 0xBE, 0xCC, 0x81, 0x20, 0xCC, 0x94, + 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCD, + 0x82, 0x20, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCF, + 0x85, 0xCC, 0x86, 0xF6, 0xCF, 0x85, 0xCC, 0x84, + 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xF6, + 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCF, + 0x81, 0xCC, 0x93, 0xF6, 0xCF, 0x81, 0xCC, 0x94, + 0xF6, 0xCF, 0x85, 0xCD, 0x82, 0xF6, 0xCF, 0x85, + 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, 0xCC, + 0x86, 0xF6, 0xCE, 0xA5, 0xCC, 0x84, 0xF6, 0xCE, + 0xA5, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, + 0xF6, 0xCE, 0xA1, 0xCC, 0x94, 0xF5, 0x05, 0xC2, + 0xA8, 0xCC, 0x80, 0x20, 0xCC, 0x88, 0xCC, 0x80, + 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, 0xCC, + 0x88, 0xCC, 0x81, 0xF6, 0x60, 0xF6, 0xCF, 0x89, + 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCD, + 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, + 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xF6, 0xCF, 0x89, + 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x9F, 0xCC, + 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, 0xCE, + 0xA9, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x81, + 0xF6, 0xCE, 0xA9, 0xCD, 0x85, 0xF5, 0x03, 0xC2, + 0xB4, 0x20, 0xCC, 0x81, 0x20, 0xCC, 0x94, 0xF5, + 0x04, 0xE2, 0x80, 0x82, 0x20, 0xF5, 0x04, 0xE2, + 0x80, 0x83, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xE2, 0x80, 0x90, 0x20, + 0xCC, 0xB3, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, + 0x20, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, + 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x21, + 0x21, 0x20, 0xCC, 0x85, 0x3F, 0x3F, 0x3F, 0x21, + 0x21, 0x3F, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x20, 0x30, + 0x69, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, + 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x6E, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, + 0x52, 0x73, 0x61, 0x2F, 0x63, 0x61, 0x2F, 0x73, + 0x43, 0xC2, 0xB0, 0x43, 0x63, 0x2F, 0x6F, 0x63, + 0x2F, 0x75, 0xC6, 0x90, 0xC2, 0xB0, 0x46, 0x67, + 0x48, 0x48, 0x48, 0x68, 0xC4, 0xA7, 0x49, 0x49, + 0x4C, 0x6C, 0x4E, 0x4E, 0x6F, 0x50, 0x51, 0x52, + 0x52, 0x52, 0x53, 0x4D, 0x54, 0x45, 0x4C, 0x54, + 0x4D, 0x5A, 0xF6, 0xCE, 0xA9, 0x5A, 0xF6, 0x4B, + 0xF6, 0x41, 0xCC, 0x8A, 0x42, 0x43, 0x65, 0x45, + 0x46, 0x4D, 0x6F, 0xD7, 0x90, 0xD7, 0x91, 0xD7, + 0x92, 0xD7, 0x93, 0x69, 0xCE, 0xB3, 0xCE, 0x93, + 0xCE, 0xA0, 0xE2, 0x88, 0x91, 0x44, 0x64, 0x65, + 0x69, 0x6A, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x32, + 0xE2, 0x81, 0x84, 0x33, 0x31, 0xE2, 0x81, 0x84, + 0x35, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x33, 0xE2, + 0x81, 0x84, 0x35, 0x34, 0xE2, 0x81, 0x84, 0x35, + 0x31, 0xE2, 0x81, 0x84, 0x36, 0x35, 0xE2, 0x81, + 0x84, 0x36, 0x31, 0xE2, 0x81, 0x84, 0x38, 0x33, + 0xE2, 0x81, 0x84, 0x38, 0x35, 0xE2, 0x81, 0x84, + 0x38, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x31, 0xE2, + 0x81, 0x84, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x56, 0x56, 0x56, 0x49, 0x56, 0x49, 0x49, + 0x56, 0x49, 0x49, 0x49, 0x49, 0x58, 0x58, 0x58, + 0x49, 0x58, 0x49, 0x49, 0x4C, 0x43, 0x44, 0x4D, + 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x76, + 0x76, 0x76, 0x69, 0x76, 0x69, 0x69, 0x76, 0x69, + 0x69, 0x69, 0x69, 0x78, 0x78, 0x78, 0x69, 0x78, + 0x69, 0x69, 0x6C, 0x63, 0x64, 0x6D, 0xF6, 0xE2, + 0x86, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x92, + 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x94, 0xCC, 0xB8, + 0xF6, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, + 0x87, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x92, + 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x83, 0xCC, 0xB8, + 0xF6, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0xF6, 0xE2, + 0x88, 0x8B, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA3, + 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, + 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, + 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xF6, 0xE2, + 0x88, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x83, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x85, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0x88, 0xCC, 0xB8, 0xF6, 0x3D, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0xF6, 0x3C, + 0xCC, 0xB8, 0xF6, 0x3E, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xA4, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA5, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xB6, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB7, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0x82, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x83, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x86, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0x87, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0xA2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA8, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBD, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB3, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0xF6, 0xE3, + 0x80, 0x88, 0xF6, 0xE3, 0x80, 0x89, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x31, + 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, + 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37, 0x31, + 0x38, 0x31, 0x39, 0x32, 0x30, 0x28, 0x31, 0x29, + 0x28, 0x32, 0x29, 0x28, 0x33, 0x29, 0x28, 0x34, + 0x29, 0x28, 0x35, 0x29, 0x28, 0x36, 0x29, 0x28, + 0x37, 0x29, 0x28, 0x38, 0x29, 0x28, 0x39, 0x29, + 0x28, 0x31, 0x30, 0x29, 0x28, 0x31, 0x31, 0x29, + 0x28, 0x31, 0x32, 0x29, 0x28, 0x31, 0x33, 0x29, + 0x28, 0x31, 0x34, 0x29, 0x28, 0x31, 0x35, 0x29, + 0x28, 0x31, 0x36, 0x29, 0x28, 0x31, 0x37, 0x29, + 0x28, 0x31, 0x38, 0x29, 0x28, 0x31, 0x39, 0x29, + 0x28, 0x32, 0x30, 0x29, 0x31, 0x2E, 0x32, 0x2E, + 0x33, 0x2E, 0x34, 0x2E, 0x35, 0x2E, 0x36, 0x2E, + 0x37, 0x2E, 0x38, 0x2E, 0x39, 0x2E, 0x31, 0x30, + 0x2E, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x2E, 0x31, + 0x33, 0x2E, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x2E, + 0x31, 0x36, 0x2E, 0x31, 0x37, 0x2E, 0x31, 0x38, + 0x2E, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x2E, 0x28, + 0x61, 0x29, 0x28, 0x62, 0x29, 0x28, 0x63, 0x29, + 0x28, 0x64, 0x29, 0x28, 0x65, 0x29, 0x28, 0x66, + 0x29, 0x28, 0x67, 0x29, 0x28, 0x68, 0x29, 0x28, + 0x69, 0x29, 0x28, 0x6A, 0x29, 0x28, 0x6B, 0x29, + 0x28, 0x6C, 0x29, 0x28, 0x6D, 0x29, 0x28, 0x6E, + 0x29, 0x28, 0x6F, 0x29, 0x28, 0x70, 0x29, 0x28, + 0x71, 0x29, 0x28, 0x72, 0x29, 0x28, 0x73, 0x29, + 0x28, 0x74, 0x29, 0x28, 0x75, 0x29, 0x28, 0x76, + 0x29, 0x28, 0x77, 0x29, 0x28, 0x78, 0x29, 0x28, + 0x79, 0x29, 0x28, 0x7A, 0x29, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x30, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x3A, 0x3A, + 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0xF6, 0xE2, + 0xAB, 0x9D, 0xCC, 0xB8, 0xE6, 0xAF, 0x8D, 0xE9, + 0xBE, 0x9F, 0xE4, 0xB8, 0x80, 0xE4, 0xB8, 0xA8, + 0xE4, 0xB8, 0xB6, 0xE4, 0xB8, 0xBF, 0xE4, 0xB9, + 0x99, 0xE4, 0xBA, 0x85, 0xE4, 0xBA, 0x8C, 0xE4, + 0xBA, 0xA0, 0xE4, 0xBA, 0xBA, 0xE5, 0x84, 0xBF, + 0xE5, 0x85, 0xA5, 0xE5, 0x85, 0xAB, 0xE5, 0x86, + 0x82, 0xE5, 0x86, 0x96, 0xE5, 0x86, 0xAB, 0xE5, + 0x87, 0xA0, 0xE5, 0x87, 0xB5, 0xE5, 0x88, 0x80, + 0xE5, 0x8A, 0x9B, 0xE5, 0x8B, 0xB9, 0xE5, 0x8C, + 0x95, 0xE5, 0x8C, 0x9A, 0xE5, 0x8C, 0xB8, 0xE5, + 0x8D, 0x81, 0xE5, 0x8D, 0x9C, 0xE5, 0x8D, 0xA9, + 0xE5, 0x8E, 0x82, 0xE5, 0x8E, 0xB6, 0xE5, 0x8F, + 0x88, 0xE5, 0x8F, 0xA3, 0xE5, 0x9B, 0x97, 0xE5, + 0x9C, 0x9F, 0xE5, 0xA3, 0xAB, 0xE5, 0xA4, 0x82, + 0xE5, 0xA4, 0x8A, 0xE5, 0xA4, 0x95, 0xE5, 0xA4, + 0xA7, 0xE5, 0xA5, 0xB3, 0xE5, 0xAD, 0x90, 0xE5, + 0xAE, 0x80, 0xE5, 0xAF, 0xB8, 0xE5, 0xB0, 0x8F, + 0xE5, 0xB0, 0xA2, 0xE5, 0xB0, 0xB8, 0xE5, 0xB1, + 0xAE, 0xE5, 0xB1, 0xB1, 0xE5, 0xB7, 0x9B, 0xE5, + 0xB7, 0xA5, 0xE5, 0xB7, 0xB1, 0xE5, 0xB7, 0xBE, + 0xE5, 0xB9, 0xB2, 0xE5, 0xB9, 0xBA, 0xE5, 0xB9, + 0xBF, 0xE5, 0xBB, 0xB4, 0xE5, 0xBB, 0xBE, 0xE5, + 0xBC, 0x8B, 0xE5, 0xBC, 0x93, 0xE5, 0xBD, 0x90, + 0xE5, 0xBD, 0xA1, 0xE5, 0xBD, 0xB3, 0xE5, 0xBF, + 0x83, 0xE6, 0x88, 0x88, 0xE6, 0x88, 0xB6, 0xE6, + 0x89, 0x8B, 0xE6, 0x94, 0xAF, 0xE6, 0x94, 0xB4, + 0xE6, 0x96, 0x87, 0xE6, 0x96, 0x97, 0xE6, 0x96, + 0xA4, 0xE6, 0x96, 0xB9, 0xE6, 0x97, 0xA0, 0xE6, + 0x97, 0xA5, 0xE6, 0x9B, 0xB0, 0xE6, 0x9C, 0x88, + 0xE6, 0x9C, 0xA8, 0xE6, 0xAC, 0xA0, 0xE6, 0xAD, + 0xA2, 0xE6, 0xAD, 0xB9, 0xE6, 0xAE, 0xB3, 0xE6, + 0xAF, 0x8B, 0xE6, 0xAF, 0x94, 0xE6, 0xAF, 0x9B, + 0xE6, 0xB0, 0x8F, 0xE6, 0xB0, 0x94, 0xE6, 0xB0, + 0xB4, 0xE7, 0x81, 0xAB, 0xE7, 0x88, 0xAA, 0xE7, + 0x88, 0xB6, 0xE7, 0x88, 0xBB, 0xE7, 0x88, 0xBF, + 0xE7, 0x89, 0x87, 0xE7, 0x89, 0x99, 0xE7, 0x89, + 0x9B, 0xE7, 0x8A, 0xAC, 0xE7, 0x8E, 0x84, 0xE7, + 0x8E, 0x89, 0xE7, 0x93, 0x9C, 0xE7, 0x93, 0xA6, + 0xE7, 0x94, 0x98, 0xE7, 0x94, 0x9F, 0xE7, 0x94, + 0xA8, 0xE7, 0x94, 0xB0, 0xE7, 0x96, 0x8B, 0xE7, + 0x96, 0x92, 0xE7, 0x99, 0xB6, 0xE7, 0x99, 0xBD, + 0xE7, 0x9A, 0xAE, 0xE7, 0x9A, 0xBF, 0xE7, 0x9B, + 0xAE, 0xE7, 0x9F, 0x9B, 0xE7, 0x9F, 0xA2, 0xE7, + 0x9F, 0xB3, 0xE7, 0xA4, 0xBA, 0xE7, 0xA6, 0xB8, + 0xE7, 0xA6, 0xBE, 0xE7, 0xA9, 0xB4, 0xE7, 0xAB, + 0x8B, 0xE7, 0xAB, 0xB9, 0xE7, 0xB1, 0xB3, 0xE7, + 0xB3, 0xB8, 0xE7, 0xBC, 0xB6, 0xE7, 0xBD, 0x91, + 0xE7, 0xBE, 0x8A, 0xE7, 0xBE, 0xBD, 0xE8, 0x80, + 0x81, 0xE8, 0x80, 0x8C, 0xE8, 0x80, 0x92, 0xE8, + 0x80, 0xB3, 0xE8, 0x81, 0xBF, 0xE8, 0x82, 0x89, + 0xE8, 0x87, 0xA3, 0xE8, 0x87, 0xAA, 0xE8, 0x87, + 0xB3, 0xE8, 0x87, 0xBC, 0xE8, 0x88, 0x8C, 0xE8, + 0x88, 0x9B, 0xE8, 0x88, 0x9F, 0xE8, 0x89, 0xAE, + 0xE8, 0x89, 0xB2, 0xE8, 0x89, 0xB8, 0xE8, 0x99, + 0x8D, 0xE8, 0x99, 0xAB, 0xE8, 0xA1, 0x80, 0xE8, + 0xA1, 0x8C, 0xE8, 0xA1, 0xA3, 0xE8, 0xA5, 0xBE, + 0xE8, 0xA6, 0x8B, 0xE8, 0xA7, 0x92, 0xE8, 0xA8, + 0x80, 0xE8, 0xB0, 0xB7, 0xE8, 0xB1, 0x86, 0xE8, + 0xB1, 0x95, 0xE8, 0xB1, 0xB8, 0xE8, 0xB2, 0x9D, + 0xE8, 0xB5, 0xA4, 0xE8, 0xB5, 0xB0, 0xE8, 0xB6, + 0xB3, 0xE8, 0xBA, 0xAB, 0xE8, 0xBB, 0x8A, 0xE8, + 0xBE, 0x9B, 0xE8, 0xBE, 0xB0, 0xE8, 0xBE, 0xB5, + 0xE9, 0x82, 0x91, 0xE9, 0x85, 0x89, 0xE9, 0x87, + 0x86, 0xE9, 0x87, 0x8C, 0xE9, 0x87, 0x91, 0xE9, + 0x95, 0xB7, 0xE9, 0x96, 0x80, 0xE9, 0x98, 0x9C, + 0xE9, 0x9A, 0xB6, 0xE9, 0x9A, 0xB9, 0xE9, 0x9B, + 0xA8, 0xE9, 0x9D, 0x91, 0xE9, 0x9D, 0x9E, 0xE9, + 0x9D, 0xA2, 0xE9, 0x9D, 0xA9, 0xE9, 0x9F, 0x8B, + 0xE9, 0x9F, 0xAD, 0xE9, 0x9F, 0xB3, 0xE9, 0xA0, + 0x81, 0xE9, 0xA2, 0xA8, 0xE9, 0xA3, 0x9B, 0xE9, + 0xA3, 0x9F, 0xE9, 0xA6, 0x96, 0xE9, 0xA6, 0x99, + 0xE9, 0xA6, 0xAC, 0xE9, 0xAA, 0xA8, 0xE9, 0xAB, + 0x98, 0xE9, 0xAB, 0x9F, 0xE9, 0xAC, 0xA5, 0xE9, + 0xAC, 0xAF, 0xE9, 0xAC, 0xB2, 0xE9, 0xAC, 0xBC, + 0xE9, 0xAD, 0x9A, 0xE9, 0xB3, 0xA5, 0xE9, 0xB9, + 0xB5, 0xE9, 0xB9, 0xBF, 0xE9, 0xBA, 0xA5, 0xE9, + 0xBA, 0xBB, 0xE9, 0xBB, 0x83, 0xE9, 0xBB, 0x8D, + 0xE9, 0xBB, 0x91, 0xE9, 0xBB, 0xB9, 0xE9, 0xBB, + 0xBD, 0xE9, 0xBC, 0x8E, 0xE9, 0xBC, 0x93, 0xE9, + 0xBC, 0xA0, 0xE9, 0xBC, 0xBB, 0xE9, 0xBD, 0x8A, + 0xE9, 0xBD, 0x92, 0xE9, 0xBE, 0x8D, 0xE9, 0xBE, + 0x9C, 0xE9, 0xBE, 0xA0, 0x20, 0xE3, 0x80, 0x92, + 0xE5, 0x8D, 0x81, 0xE5, 0x8D, 0x84, 0xE5, 0x8D, + 0x85, 0xF6, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x81, 0x91, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, + 0x93, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x95, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x97, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x99, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x81, 0xA1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, + 0xA4, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA6, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA8, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, + 0xF6, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, + 0x81, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, + 0xB5, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB8, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, + 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, + 0xF6, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x20, + 0xE3, 0x82, 0x99, 0x20, 0xE3, 0x82, 0x9A, 0xF6, + 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0xE3, 0x82, + 0x88, 0xE3, 0x82, 0x8A, 0xF6, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAD, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAF, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, + 0xB9, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBB, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBD, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBF, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x83, 0x88, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x92, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, + 0x9A, 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0xF6, + 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, + 0x9B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0xA6, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xAF, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x83, 0xBD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB3, + 0xE3, 0x83, 0x88, 0xE1, 0x84, 0x80, 0xE1, 0x84, + 0x81, 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, + 0x86, 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, + 0xE1, 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, + 0xB0, 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, + 0x86, 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, + 0xE1, 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, + 0x87, 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, + 0x84, 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, + 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, + 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, + 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, + 0xE1, 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, + 0xA4, 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, + 0x85, 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, + 0xE1, 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, + 0xAC, 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, + 0x85, 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, + 0xE1, 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, + 0xB4, 0xE1, 0x85, 0xB5, 0xE1, 0x85, 0xA0, 0xE1, + 0x84, 0x94, 0xE1, 0x84, 0x95, 0xE1, 0x87, 0x87, + 0xE1, 0x87, 0x88, 0xE1, 0x87, 0x8C, 0xE1, 0x87, + 0x8E, 0xE1, 0x87, 0x93, 0xE1, 0x87, 0x97, 0xE1, + 0x87, 0x99, 0xE1, 0x84, 0x9C, 0xE1, 0x87, 0x9D, + 0xE1, 0x87, 0x9F, 0xE1, 0x84, 0x9D, 0xE1, 0x84, + 0x9E, 0xE1, 0x84, 0xA0, 0xE1, 0x84, 0xA2, 0xE1, + 0x84, 0xA3, 0xE1, 0x84, 0xA7, 0xE1, 0x84, 0xA9, + 0xE1, 0x84, 0xAB, 0xE1, 0x84, 0xAC, 0xE1, 0x84, + 0xAD, 0xE1, 0x84, 0xAE, 0xE1, 0x84, 0xAF, 0xE1, + 0x84, 0xB2, 0xE1, 0x84, 0xB6, 0xE1, 0x85, 0x80, + 0xE1, 0x85, 0x87, 0xE1, 0x85, 0x8C, 0xE1, 0x87, + 0xB1, 0xE1, 0x87, 0xB2, 0xE1, 0x85, 0x97, 0xE1, + 0x85, 0x98, 0xE1, 0x85, 0x99, 0xE1, 0x86, 0x84, + 0xE1, 0x86, 0x85, 0xE1, 0x86, 0x88, 0xE1, 0x86, + 0x91, 0xE1, 0x86, 0x92, 0xE1, 0x86, 0x94, 0xE1, + 0x86, 0x9E, 0xE1, 0x86, 0xA1, 0xE4, 0xB8, 0x80, + 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, + 0x9B, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, + 0xB8, 0x8B, 0xE7, 0x94, 0xB2, 0xE4, 0xB9, 0x99, + 0xE4, 0xB8, 0x99, 0xE4, 0xB8, 0x81, 0xE5, 0xA4, + 0xA9, 0xE5, 0x9C, 0xB0, 0xE4, 0xBA, 0xBA, 0x28, + 0xE1, 0x84, 0x80, 0x29, 0x28, 0xE1, 0x84, 0x82, + 0x29, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x28, 0xE1, + 0x84, 0x85, 0x29, 0x28, 0xE1, 0x84, 0x86, 0x29, + 0x28, 0xE1, 0x84, 0x87, 0x29, 0x28, 0xE1, 0x84, + 0x89, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x28, + 0xE1, 0x84, 0x8C, 0x29, 0x28, 0xE1, 0x84, 0x8E, + 0x29, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x28, 0xE1, + 0x84, 0x90, 0x29, 0x28, 0xE1, 0x84, 0x91, 0x29, + 0x28, 0xE1, 0x84, 0x92, 0x29, 0x28, 0xE1, 0x84, + 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x87, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x89, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x91, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x92, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, + 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x28, 0xE4, 0xB8, + 0x80, 0x29, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x28, + 0xE4, 0xB8, 0x89, 0x29, 0x28, 0xE5, 0x9B, 0x9B, + 0x29, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x28, 0xE5, + 0x85, 0xAD, 0x29, 0x28, 0xE4, 0xB8, 0x83, 0x29, + 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x28, 0xE4, 0xB9, + 0x9D, 0x29, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x28, + 0xE6, 0x9C, 0x88, 0x29, 0x28, 0xE7, 0x81, 0xAB, + 0x29, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x28, 0xE6, + 0x9C, 0xA8, 0x29, 0x28, 0xE9, 0x87, 0x91, 0x29, + 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x28, 0xE6, 0x97, + 0xA5, 0x29, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x28, + 0xE6, 0x9C, 0x89, 0x29, 0x28, 0xE7, 0xA4, 0xBE, + 0x29, 0x28, 0xE5, 0x90, 0x8D, 0x29, 0x28, 0xE7, + 0x89, 0xB9, 0x29, 0x28, 0xE8, 0xB2, 0xA1, 0x29, + 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x28, 0xE5, 0x8A, + 0xB4, 0x29, 0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x28, + 0xE5, 0x91, 0xBC, 0x29, 0x28, 0xE5, 0xAD, 0xA6, + 0x29, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x28, 0xE4, + 0xBC, 0x81, 0x29, 0x28, 0xE8, 0xB3, 0x87, 0x29, + 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x28, 0xE7, 0xA5, + 0xAD, 0x29, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x28, + 0xE8, 0x87, 0xAA, 0x29, 0x28, 0xE8, 0x87, 0xB3, + 0x29, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, 0x32, + 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, + 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, 0x33, + 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0xE1, + 0x84, 0x80, 0xE1, 0x84, 0x82, 0xE1, 0x84, 0x83, + 0xE1, 0x84, 0x85, 0xE1, 0x84, 0x86, 0xE1, 0x84, + 0x87, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8B, 0xE1, + 0x84, 0x8C, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, + 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, + 0x92, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0xE1, + 0x84, 0x82, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x83, + 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x85, 0xE1, 0x85, + 0xA1, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0xE1, + 0x84, 0x87, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x89, + 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8B, 0xE1, 0x85, + 0xA1, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0xE1, + 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8F, + 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x90, 0xE1, 0x85, + 0xA1, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0xE1, + 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE4, 0xB8, 0x80, + 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, + 0x9B, 0xE4, 0xBA, 0x94, 0xE5, 0x85, 0xAD, 0xE4, + 0xB8, 0x83, 0xE5, 0x85, 0xAB, 0xE4, 0xB9, 0x9D, + 0xE5, 0x8D, 0x81, 0xE6, 0x9C, 0x88, 0xE7, 0x81, + 0xAB, 0xE6, 0xB0, 0xB4, 0xE6, 0x9C, 0xA8, 0xE9, + 0x87, 0x91, 0xE5, 0x9C, 0x9F, 0xE6, 0x97, 0xA5, + 0xE6, 0xA0, 0xAA, 0xE6, 0x9C, 0x89, 0xE7, 0xA4, + 0xBE, 0xE5, 0x90, 0x8D, 0xE7, 0x89, 0xB9, 0xE8, + 0xB2, 0xA1, 0xE7, 0xA5, 0x9D, 0xE5, 0x8A, 0xB4, + 0xE7, 0xA7, 0x98, 0xE7, 0x94, 0xB7, 0xE5, 0xA5, + 0xB3, 0xE9, 0x81, 0xA9, 0xE5, 0x84, 0xAA, 0xE5, + 0x8D, 0xB0, 0xE6, 0xB3, 0xA8, 0xE9, 0xA0, 0x85, + 0xE4, 0xBC, 0x91, 0xE5, 0x86, 0x99, 0xE6, 0xAD, + 0xA3, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, + 0xB8, 0x8B, 0xE5, 0xB7, 0xA6, 0xE5, 0x8F, 0xB3, + 0xE5, 0x8C, 0xBB, 0xE5, 0xAE, 0x97, 0xE5, 0xAD, + 0xA6, 0xE7, 0x9B, 0xA3, 0xE4, 0xBC, 0x81, 0xE8, + 0xB3, 0x87, 0xE5, 0x8D, 0x94, 0xE5, 0xA4, 0x9C, + 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, + 0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, + 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, + 0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x31, 0xE6, + 0x9C, 0x88, 0x32, 0xE6, 0x9C, 0x88, 0x33, 0xE6, + 0x9C, 0x88, 0x34, 0xE6, 0x9C, 0x88, 0x35, 0xE6, + 0x9C, 0x88, 0x36, 0xE6, 0x9C, 0x88, 0x37, 0xE6, + 0x9C, 0x88, 0x38, 0xE6, 0x9C, 0x88, 0x39, 0xE6, + 0x9C, 0x88, 0x31, 0x30, 0xE6, 0x9C, 0x88, 0x31, + 0x31, 0xE6, 0x9C, 0x88, 0x31, 0x32, 0xE6, 0x9C, + 0x88, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, + 0x82, 0xA6, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, + 0x82, 0xB5, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, + 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, + 0xBF, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, + 0x83, 0x86, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, + 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, + 0x8D, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, + 0x83, 0x92, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, + 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, + 0x9F, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, + 0x83, 0xA2, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, + 0xE3, 0x83, 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0xAA, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, + 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB0, + 0xE3, 0x83, 0xB1, 0xE3, 0x83, 0xB2, 0xE3, 0x82, + 0xA2, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, + 0xA1, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, + 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, + 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x81, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3, + 0x83, 0xB3, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA8, 0xE3, + 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xB9, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xA0, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, + 0xE3, 0x83, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x83, + 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, + 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xAD, 0xE3, 0x82, + 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, + 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, + 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0xA0, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, + 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, + 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x83, + 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, + 0x83, 0x88, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, + 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, + 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0xE3, 0x82, + 0xB1, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0xE3, + 0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, + 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB5, 0xE3, + 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, + 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, + 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, + 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, + 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xBC, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x86, 0xE3, + 0x82, 0x99, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x8A, 0xE3, + 0x83, 0x8E, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, + 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, + 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, + 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x95, 0xE3, 0x82, + 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x83, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, + 0x82, 0xBD, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, + 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x92, 0xE3, 0x83, + 0x98, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, + 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0xE3, 0x83, + 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0xE3, + 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0x9E, 0xE3, + 0x82, 0xA4, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9E, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0xE3, 0x83, + 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0xE3, + 0x83, 0x9E, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, + 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x9F, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, + 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA1, 0xE3, 0x82, + 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, + 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA6, 0xE3, 0x82, + 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAA, 0xE3, + 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0, 0xE3, + 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, + 0x83, 0x88, 0x30, 0xE7, 0x82, 0xB9, 0x31, 0xE7, + 0x82, 0xB9, 0x32, 0xE7, 0x82, 0xB9, 0x33, 0xE7, + 0x82, 0xB9, 0x34, 0xE7, 0x82, 0xB9, 0x35, 0xE7, + 0x82, 0xB9, 0x36, 0xE7, 0x82, 0xB9, 0x37, 0xE7, + 0x82, 0xB9, 0x38, 0xE7, 0x82, 0xB9, 0x39, 0xE7, + 0x82, 0xB9, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x31, + 0x31, 0xE7, 0x82, 0xB9, 0x31, 0x32, 0xE7, 0x82, + 0xB9, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x31, 0x34, + 0xE7, 0x82, 0xB9, 0x31, 0x35, 0xE7, 0x82, 0xB9, + 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x31, 0x37, 0xE7, + 0x82, 0xB9, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x31, + 0x39, 0xE7, 0x82, 0xB9, 0x32, 0x30, 0xE7, 0x82, + 0xB9, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0x32, + 0xE7, 0x82, 0xB9, 0x32, 0x33, 0xE7, 0x82, 0xB9, + 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x68, 0x50, 0x61, + 0x64, 0x61, 0x41, 0x55, 0x62, 0x61, 0x72, 0x6F, + 0x56, 0x70, 0x63, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, + 0x90, 0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0xE5, + 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0xE6, 0x98, 0x8E, + 0xE6, 0xB2, 0xBB, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, + 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x70, + 0x41, 0x6E, 0x41, 0xCE, 0xBC, 0x41, 0x6D, 0x41, + 0x6B, 0x41, 0x4B, 0x42, 0x4D, 0x42, 0x47, 0x42, + 0x63, 0x61, 0x6C, 0x6B, 0x63, 0x61, 0x6C, 0x70, + 0x46, 0x6E, 0x46, 0xCE, 0xBC, 0x46, 0xCE, 0xBC, + 0x67, 0x6D, 0x67, 0x6B, 0x67, 0x48, 0x7A, 0x6B, + 0x48, 0x7A, 0x4D, 0x48, 0x7A, 0x47, 0x48, 0x7A, + 0x54, 0x48, 0x7A, 0xCE, 0xBC, 0x6C, 0x6D, 0x6C, + 0x64, 0x6C, 0x6B, 0x6C, 0x66, 0x6D, 0x6E, 0x6D, + 0xCE, 0xBC, 0x6D, 0x6D, 0x6D, 0x63, 0x6D, 0x6B, + 0x6D, 0x6D, 0x6D, 0x32, 0x63, 0x6D, 0x32, 0x6D, + 0x32, 0x6B, 0x6D, 0x32, 0x6D, 0x6D, 0x33, 0x63, + 0x6D, 0x33, 0x6D, 0x33, 0x6B, 0x6D, 0x33, 0x6D, + 0xE2, 0x88, 0x95, 0x73, 0x6D, 0xE2, 0x88, 0x95, + 0x73, 0x32, 0x50, 0x61, 0x6B, 0x50, 0x61, 0x4D, + 0x50, 0x61, 0x47, 0x50, 0x61, 0x72, 0x61, 0x64, + 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x72, + 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x70, + 0x73, 0x6E, 0x73, 0xCE, 0xBC, 0x73, 0x6D, 0x73, + 0x70, 0x56, 0x6E, 0x56, 0xCE, 0xBC, 0x56, 0x6D, + 0x56, 0x6B, 0x56, 0x4D, 0x56, 0x70, 0x57, 0x6E, + 0x57, 0xCE, 0xBC, 0x57, 0x6D, 0x57, 0x6B, 0x57, + 0x4D, 0x57, 0x6B, 0xCE, 0xA9, 0x4D, 0xCE, 0xA9, + 0x61, 0x2E, 0x6D, 0x2E, 0x42, 0x71, 0x63, 0x63, + 0x63, 0x64, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, + 0x43, 0x6F, 0x2E, 0x64, 0x42, 0x47, 0x79, 0x68, + 0x61, 0x48, 0x50, 0x69, 0x6E, 0x4B, 0x4B, 0x4B, + 0x4D, 0x6B, 0x74, 0x6C, 0x6D, 0x6C, 0x6E, 0x6C, + 0x6F, 0x67, 0x6C, 0x78, 0x6D, 0x62, 0x6D, 0x69, + 0x6C, 0x6D, 0x6F, 0x6C, 0x50, 0x48, 0x70, 0x2E, + 0x6D, 0x2E, 0x50, 0x50, 0x4D, 0x50, 0x52, 0x73, + 0x72, 0x53, 0x76, 0x57, 0x62, 0x31, 0xE6, 0x97, + 0xA5, 0x32, 0xE6, 0x97, 0xA5, 0x33, 0xE6, 0x97, + 0xA5, 0x34, 0xE6, 0x97, 0xA5, 0x35, 0xE6, 0x97, + 0xA5, 0x36, 0xE6, 0x97, 0xA5, 0x37, 0xE6, 0x97, + 0xA5, 0x38, 0xE6, 0x97, 0xA5, 0x39, 0xE6, 0x97, + 0xA5, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x31, 0x31, + 0xE6, 0x97, 0xA5, 0x31, 0x32, 0xE6, 0x97, 0xA5, + 0x31, 0x33, 0xE6, 0x97, 0xA5, 0x31, 0x34, 0xE6, + 0x97, 0xA5, 0x31, 0x35, 0xE6, 0x97, 0xA5, 0x31, + 0x36, 0xE6, 0x97, 0xA5, 0x31, 0x37, 0xE6, 0x97, + 0xA5, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x31, 0x39, + 0xE6, 0x97, 0xA5, 0x32, 0x30, 0xE6, 0x97, 0xA5, + 0x32, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0x32, 0xE6, + 0x97, 0xA5, 0x32, 0x33, 0xE6, 0x97, 0xA5, 0x32, + 0x34, 0xE6, 0x97, 0xA5, 0x32, 0x35, 0xE6, 0x97, + 0xA5, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x32, 0x37, + 0xE6, 0x97, 0xA5, 0x32, 0x38, 0xE6, 0x97, 0xA5, + 0x32, 0x39, 0xE6, 0x97, 0xA5, 0x33, 0x30, 0xE6, + 0x97, 0xA5, 0x33, 0x31, 0xE6, 0x97, 0xA5, 0xF6, + 0xE8, 0xB1, 0x88, 0xF6, 0xE6, 0x9B, 0xB4, 0xF6, + 0xE8, 0xBB, 0x8A, 0xF6, 0xE8, 0xB3, 0x88, 0xF6, + 0xE6, 0xBB, 0x91, 0xF6, 0xE4, 0xB8, 0xB2, 0xF6, + 0xE5, 0x8F, 0xA5, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, + 0xE9, 0xBE, 0x9C, 0xF6, 0xE5, 0xA5, 0x91, 0xF6, + 0xE9, 0x87, 0x91, 0xF6, 0xE5, 0x96, 0x87, 0xF6, + 0xE5, 0xA5, 0x88, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, + 0xE7, 0x99, 0xA9, 0xF6, 0xE7, 0xBE, 0x85, 0xF6, + 0xE8, 0x98, 0xBF, 0xF6, 0xE8, 0x9E, 0xBA, 0xF6, + 0xE8, 0xA3, 0xB8, 0xF6, 0xE9, 0x82, 0x8F, 0xF6, + 0xE6, 0xA8, 0x82, 0xF6, 0xE6, 0xB4, 0x9B, 0xF6, + 0xE7, 0x83, 0x99, 0xF6, 0xE7, 0x8F, 0x9E, 0xF6, + 0xE8, 0x90, 0xBD, 0xF6, 0xE9, 0x85, 0xAA, 0xF6, + 0xE9, 0xA7, 0xB1, 0xF6, 0xE4, 0xBA, 0x82, 0xF6, + 0xE5, 0x8D, 0xB5, 0xF6, 0xE6, 0xAC, 0x84, 0xF6, + 0xE7, 0x88, 0x9B, 0xF6, 0xE8, 0x98, 0xAD, 0xF6, + 0xE9, 0xB8, 0x9E, 0xF6, 0xE5, 0xB5, 0x90, 0xF6, + 0xE6, 0xBF, 0xAB, 0xF6, 0xE8, 0x97, 0x8D, 0xF6, + 0xE8, 0xA5, 0xA4, 0xF6, 0xE6, 0x8B, 0x89, 0xF6, + 0xE8, 0x87, 0x98, 0xF6, 0xE8, 0xA0, 0x9F, 0xF6, + 0xE5, 0xBB, 0x8A, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, + 0xE6, 0xB5, 0xAA, 0xF6, 0xE7, 0x8B, 0xBC, 0xF6, + 0xE9, 0x83, 0x8E, 0xF6, 0xE4, 0xBE, 0x86, 0xF6, + 0xE5, 0x86, 0xB7, 0xF6, 0xE5, 0x8B, 0x9E, 0xF6, + 0xE6, 0x93, 0x84, 0xF6, 0xE6, 0xAB, 0x93, 0xF6, + 0xE7, 0x88, 0x90, 0xF6, 0xE7, 0x9B, 0xA7, 0xF6, + 0xE8, 0x80, 0x81, 0xF6, 0xE8, 0x98, 0x86, 0xF6, + 0xE8, 0x99, 0x9C, 0xF6, 0xE8, 0xB7, 0xAF, 0xF6, + 0xE9, 0x9C, 0xB2, 0xF6, 0xE9, 0xAD, 0xAF, 0xF6, + 0xE9, 0xB7, 0xBA, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, + 0xE7, 0xA5, 0xBF, 0xF6, 0xE7, 0xB6, 0xA0, 0xF6, + 0xE8, 0x8F, 0x89, 0xF6, 0xE9, 0x8C, 0x84, 0xF6, + 0xE9, 0xB9, 0xBF, 0xF6, 0xE8, 0xAB, 0x96, 0xF6, + 0xE5, 0xA3, 0x9F, 0xF6, 0xE5, 0xBC, 0x84, 0xF6, + 0xE7, 0xB1, 0xA0, 0xF6, 0xE8, 0x81, 0xBE, 0xF6, + 0xE7, 0x89, 0xA2, 0xF6, 0xE7, 0xA3, 0x8A, 0xF6, + 0xE8, 0xB3, 0x82, 0xF6, 0xE9, 0x9B, 0xB7, 0xF6, + 0xE5, 0xA3, 0x98, 0xF6, 0xE5, 0xB1, 0xA2, 0xF6, + 0xE6, 0xA8, 0x93, 0xF6, 0xE6, 0xB7, 0x9A, 0xF6, + 0xE6, 0xBC, 0x8F, 0xF6, 0xE7, 0xB4, 0xAF, 0xF6, + 0xE7, 0xB8, 0xB7, 0xF6, 0xE9, 0x99, 0x8B, 0xF6, + 0xE5, 0x8B, 0x92, 0xF6, 0xE8, 0x82, 0x8B, 0xF6, + 0xE5, 0x87, 0x9C, 0xF6, 0xE5, 0x87, 0x8C, 0xF6, + 0xE7, 0xA8, 0x9C, 0xF6, 0xE7, 0xB6, 0xBE, 0xF6, + 0xE8, 0x8F, 0xB1, 0xF6, 0xE9, 0x99, 0xB5, 0xF6, + 0xE8, 0xAE, 0x80, 0xF6, 0xE6, 0x8B, 0x8F, 0xF6, + 0xE6, 0xA8, 0x82, 0xF6, 0xE8, 0xAB, 0xBE, 0xF6, + 0xE4, 0xB8, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, + 0xE6, 0x80, 0x92, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, + 0xE7, 0x95, 0xB0, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, + 0xE7, 0xA3, 0xBB, 0xF6, 0xE4, 0xBE, 0xBF, 0xF6, + 0xE5, 0xBE, 0xA9, 0xF6, 0xE4, 0xB8, 0x8D, 0xF6, + 0xE6, 0xB3, 0x8C, 0xF6, 0xE6, 0x95, 0xB8, 0xF6, + 0xE7, 0xB4, 0xA2, 0xF6, 0xE5, 0x8F, 0x83, 0xF6, + 0xE5, 0xA1, 0x9E, 0xF6, 0xE7, 0x9C, 0x81, 0xF6, + 0xE8, 0x91, 0x89, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, + 0xE6, 0xAE, 0xBA, 0xF6, 0xE8, 0xBE, 0xB0, 0xF6, + 0xE6, 0xB2, 0x88, 0xF6, 0xE6, 0x8B, 0xBE, 0xF6, + 0xE8, 0x8B, 0xA5, 0xF6, 0xE6, 0x8E, 0xA0, 0xF6, + 0xE7, 0x95, 0xA5, 0xF6, 0xE4, 0xBA, 0xAE, 0xF6, + 0xE5, 0x85, 0xA9, 0xF6, 0xE5, 0x87, 0x89, 0xF6, + 0xE6, 0xA2, 0x81, 0xF6, 0xE7, 0xB3, 0xA7, 0xF6, + 0xE8, 0x89, 0xAF, 0xF6, 0xE8, 0xAB, 0x92, 0xF6, + 0xE9, 0x87, 0x8F, 0xF6, 0xE5, 0x8B, 0xB5, 0xF6, + 0xE5, 0x91, 0x82, 0xF6, 0xE5, 0xA5, 0xB3, 0xF6, + 0xE5, 0xBB, 0xAC, 0xF6, 0xE6, 0x97, 0x85, 0xF6, + 0xE6, 0xBF, 0xBE, 0xF6, 0xE7, 0xA4, 0xAA, 0xF6, + 0xE9, 0x96, 0xAD, 0xF6, 0xE9, 0xA9, 0xAA, 0xF6, + 0xE9, 0xBA, 0x97, 0xF6, 0xE9, 0xBB, 0x8E, 0xF6, + 0xE5, 0x8A, 0x9B, 0xF6, 0xE6, 0x9B, 0x86, 0xF6, + 0xE6, 0xAD, 0xB7, 0xF6, 0xE8, 0xBD, 0xA2, 0xF6, + 0xE5, 0xB9, 0xB4, 0xF6, 0xE6, 0x86, 0x90, 0xF6, + 0xE6, 0x88, 0x80, 0xF6, 0xE6, 0x92, 0x9A, 0xF6, + 0xE6, 0xBC, 0xA3, 0xF6, 0xE7, 0x85, 0x89, 0xF6, + 0xE7, 0x92, 0x89, 0xF6, 0xE7, 0xA7, 0x8A, 0xF6, + 0xE7, 0xB7, 0xB4, 0xF6, 0xE8, 0x81, 0xAF, 0xF6, + 0xE8, 0xBC, 0xA6, 0xF6, 0xE8, 0x93, 0xAE, 0xF6, + 0xE9, 0x80, 0xA3, 0xF6, 0xE9, 0x8D, 0x8A, 0xF6, + 0xE5, 0x88, 0x97, 0xF6, 0xE5, 0x8A, 0xA3, 0xF6, + 0xE5, 0x92, 0xBD, 0xF6, 0xE7, 0x83, 0x88, 0xF6, + 0xE8, 0xA3, 0x82, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, + 0xE5, 0xBB, 0x89, 0xF6, 0xE5, 0xBF, 0xB5, 0xF6, + 0xE6, 0x8D, 0xBB, 0xF6, 0xE6, 0xAE, 0xAE, 0xF6, + 0xE7, 0xB0, 0xBE, 0xF6, 0xE7, 0x8D, 0xB5, 0xF6, + 0xE4, 0xBB, 0xA4, 0xF6, 0xE5, 0x9B, 0xB9, 0xF6, + 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xB6, 0xBA, 0xF6, + 0xE6, 0x80, 0x9C, 0xF6, 0xE7, 0x8E, 0xB2, 0xF6, + 0xE7, 0x91, 0xA9, 0xF6, 0xE7, 0xBE, 0x9A, 0xF6, + 0xE8, 0x81, 0x86, 0xF6, 0xE9, 0x88, 0xB4, 0xF6, + 0xE9, 0x9B, 0xB6, 0xF6, 0xE9, 0x9D, 0x88, 0xF6, + 0xE9, 0xA0, 0x98, 0xF6, 0xE4, 0xBE, 0x8B, 0xF6, + 0xE7, 0xA6, 0xAE, 0xF6, 0xE9, 0x86, 0xB4, 0xF6, + 0xE9, 0x9A, 0xB8, 0xF6, 0xE6, 0x83, 0xA1, 0xF6, + 0xE4, 0xBA, 0x86, 0xF6, 0xE5, 0x83, 0x9A, 0xF6, + 0xE5, 0xAF, 0xAE, 0xF6, 0xE5, 0xB0, 0xBF, 0xF6, + 0xE6, 0x96, 0x99, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, + 0xE7, 0x87, 0x8E, 0xF6, 0xE7, 0x99, 0x82, 0xF6, + 0xE8, 0x93, 0xBC, 0xF6, 0xE9, 0x81, 0xBC, 0xF6, + 0xE9, 0xBE, 0x8D, 0xF6, 0xE6, 0x9A, 0x88, 0xF6, + 0xE9, 0x98, 0xAE, 0xF6, 0xE5, 0x8A, 0x89, 0xF6, + 0xE6, 0x9D, 0xBB, 0xF6, 0xE6, 0x9F, 0xB3, 0xF6, + 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xBA, 0x9C, 0xF6, + 0xE7, 0x90, 0x89, 0xF6, 0xE7, 0x95, 0x99, 0xF6, + 0xE7, 0xA1, 0xAB, 0xF6, 0xE7, 0xB4, 0x90, 0xF6, + 0xE9, 0xA1, 0x9E, 0xF6, 0xE5, 0x85, 0xAD, 0xF6, + 0xE6, 0x88, 0xAE, 0xF6, 0xE9, 0x99, 0xB8, 0xF6, + 0xE5, 0x80, 0xAB, 0xF6, 0xE5, 0xB4, 0x99, 0xF6, + 0xE6, 0xB7, 0xAA, 0xF6, 0xE8, 0xBC, 0xAA, 0xF6, + 0xE5, 0xBE, 0x8B, 0xF6, 0xE6, 0x85, 0x84, 0xF6, + 0xE6, 0xA0, 0x97, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, + 0xE9, 0x9A, 0x86, 0xF6, 0xE5, 0x88, 0xA9, 0xF6, + 0xE5, 0x90, 0x8F, 0xF6, 0xE5, 0xB1, 0xA5, 0xF6, + 0xE6, 0x98, 0x93, 0xF6, 0xE6, 0x9D, 0x8E, 0xF6, + 0xE6, 0xA2, 0xA8, 0xF6, 0xE6, 0xB3, 0xA5, 0xF6, + 0xE7, 0x90, 0x86, 0xF6, 0xE7, 0x97, 0xA2, 0xF6, + 0xE7, 0xBD, 0xB9, 0xF6, 0xE8, 0xA3, 0x8F, 0xF6, + 0xE8, 0xA3, 0xA1, 0xF6, 0xE9, 0x87, 0x8C, 0xF6, + 0xE9, 0x9B, 0xA2, 0xF6, 0xE5, 0x8C, 0xBF, 0xF6, + 0xE6, 0xBA, 0xBA, 0xF6, 0xE5, 0x90, 0x9D, 0xF6, + 0xE7, 0x87, 0x90, 0xF6, 0xE7, 0x92, 0x98, 0xF6, + 0xE8, 0x97, 0xBA, 0xF6, 0xE9, 0x9A, 0xA3, 0xF6, + 0xE9, 0xB1, 0x97, 0xF6, 0xE9, 0xBA, 0x9F, 0xF6, + 0xE6, 0x9E, 0x97, 0xF6, 0xE6, 0xB7, 0x8B, 0xF6, + 0xE8, 0x87, 0xA8, 0xF6, 0xE7, 0xAB, 0x8B, 0xF6, + 0xE7, 0xAC, 0xA0, 0xF6, 0xE7, 0xB2, 0x92, 0xF6, + 0xE7, 0x8B, 0x80, 0xF6, 0xE7, 0x82, 0x99, 0xF6, + 0xE8, 0xAD, 0x98, 0xF6, 0xE4, 0xBB, 0x80, 0xF6, + 0xE8, 0x8C, 0xB6, 0xF6, 0xE5, 0x88, 0xBA, 0xF6, + 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xBA, 0xA6, 0xF6, + 0xE6, 0x8B, 0x93, 0xF6, 0xE7, 0xB3, 0x96, 0xF6, + 0xE5, 0xAE, 0x85, 0xF6, 0xE6, 0xB4, 0x9E, 0xF6, + 0xE6, 0x9A, 0xB4, 0xF6, 0xE8, 0xBC, 0xBB, 0xF6, + 0xE8, 0xA1, 0x8C, 0xF6, 0xE9, 0x99, 0x8D, 0xF6, + 0xE8, 0xA6, 0x8B, 0xF6, 0xE5, 0xBB, 0x93, 0xF6, + 0xE5, 0x85, 0x80, 0xF6, 0xE5, 0x97, 0x80, 0xF6, + 0xE5, 0xA1, 0x9A, 0xF6, 0xE6, 0x99, 0xB4, 0xF6, + 0xE5, 0x87, 0x9E, 0xF6, 0xE7, 0x8C, 0xAA, 0xF6, + 0xE7, 0x9B, 0x8A, 0xF6, 0xE7, 0xA4, 0xBC, 0xF6, + 0xE7, 0xA5, 0x9E, 0xF6, 0xE7, 0xA5, 0xA5, 0xF6, + 0xE7, 0xA6, 0x8F, 0xF6, 0xE9, 0x9D, 0x96, 0xF6, + 0xE7, 0xB2, 0xBE, 0xF6, 0xE7, 0xBE, 0xBD, 0xF6, + 0xE8, 0x98, 0x92, 0xF6, 0xE8, 0xAB, 0xB8, 0xF6, + 0xE9, 0x80, 0xB8, 0xF6, 0xE9, 0x83, 0xBD, 0xF6, + 0xE9, 0xA3, 0xAF, 0xF6, 0xE9, 0xA3, 0xBC, 0xF6, + 0xE9, 0xA4, 0xA8, 0xF6, 0xE9, 0xB6, 0xB4, 0xF6, + 0xE4, 0xBE, 0xAE, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, + 0xE5, 0x85, 0x8D, 0xF6, 0xE5, 0x8B, 0x89, 0xF6, + 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, + 0xE5, 0x96, 0x9D, 0xF6, 0xE5, 0x98, 0x86, 0xF6, + 0xE5, 0x99, 0xA8, 0xF6, 0xE5, 0xA1, 0x80, 0xF6, + 0xE5, 0xA2, 0xA8, 0xF6, 0xE5, 0xB1, 0xA4, 0xF6, + 0xE5, 0xB1, 0xAE, 0xF6, 0xE6, 0x82, 0x94, 0xF6, + 0xE6, 0x85, 0xA8, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, + 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x95, 0x8F, 0xF6, + 0xE6, 0x97, 0xA2, 0xF6, 0xE6, 0x9A, 0x91, 0xF6, + 0xE6, 0xA2, 0x85, 0xF6, 0xE6, 0xB5, 0xB7, 0xF6, + 0xE6, 0xB8, 0x9A, 0xF6, 0xE6, 0xBC, 0xA2, 0xF6, + 0xE7, 0x85, 0xAE, 0xF6, 0xE7, 0x88, 0xAB, 0xF6, + 0xE7, 0x90, 0xA2, 0xF6, 0xE7, 0xA2, 0x91, 0xF6, + 0xE7, 0xA4, 0xBE, 0xF6, 0xE7, 0xA5, 0x89, 0xF6, + 0xE7, 0xA5, 0x88, 0xF6, 0xE7, 0xA5, 0x90, 0xF6, + 0xE7, 0xA5, 0x96, 0xF6, 0xE7, 0xA5, 0x9D, 0xF6, + 0xE7, 0xA6, 0x8D, 0xF6, 0xE7, 0xA6, 0x8E, 0xF6, + 0xE7, 0xA9, 0x80, 0xF6, 0xE7, 0xAA, 0x81, 0xF6, + 0xE7, 0xAF, 0x80, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, + 0xE7, 0xB8, 0x89, 0xF6, 0xE7, 0xB9, 0x81, 0xF6, + 0xE7, 0xBD, 0xB2, 0xF6, 0xE8, 0x80, 0x85, 0xF6, + 0xE8, 0x87, 0xAD, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, + 0xE8, 0x89, 0xB9, 0xF6, 0xE8, 0x91, 0x97, 0xF6, + 0xE8, 0xA4, 0x90, 0xF6, 0xE8, 0xA6, 0x96, 0xF6, + 0xE8, 0xAC, 0x81, 0xF6, 0xE8, 0xAC, 0xB9, 0xF6, + 0xE8, 0xB3, 0x93, 0xF6, 0xE8, 0xB4, 0x88, 0xF6, + 0xE8, 0xBE, 0xB6, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, + 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, 0x9F, 0xBF, 0xF6, + 0xE9, 0xA0, 0xBB, 0x66, 0x66, 0x66, 0x69, 0x66, + 0x6C, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, 0x73, + 0x74, 0x73, 0x74, 0xD5, 0xB4, 0xD5, 0xB6, 0xD5, + 0xB4, 0xD5, 0xA5, 0xD5, 0xB4, 0xD5, 0xAB, 0xD5, + 0xBE, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xAD, 0xF6, + 0xD7, 0x99, 0xD6, 0xB4, 0xF6, 0xD7, 0xB2, 0xD6, + 0xB7, 0xD7, 0xA2, 0xD7, 0x90, 0xD7, 0x93, 0xD7, + 0x94, 0xD7, 0x9B, 0xD7, 0x9C, 0xD7, 0x9D, 0xD7, + 0xA8, 0xD7, 0xAA, 0x2B, 0xF6, 0xD7, 0xA9, 0xD7, + 0x81, 0xF6, 0xD7, 0xA9, 0xD7, 0x82, 0xF6, 0xD7, + 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0xF6, 0xD7, 0xA9, + 0xD6, 0xBC, 0xD7, 0x82, 0xF6, 0xD7, 0x90, 0xD6, + 0xB7, 0xF6, 0xD7, 0x90, 0xD6, 0xB8, 0xF6, 0xD7, + 0x90, 0xD6, 0xBC, 0xF6, 0xD7, 0x91, 0xD6, 0xBC, + 0xF6, 0xD7, 0x92, 0xD6, 0xBC, 0xF6, 0xD7, 0x93, + 0xD6, 0xBC, 0xF6, 0xD7, 0x94, 0xD6, 0xBC, 0xF6, + 0xD7, 0x95, 0xD6, 0xBC, 0xF6, 0xD7, 0x96, 0xD6, + 0xBC, 0xF6, 0xD7, 0x98, 0xD6, 0xBC, 0xF6, 0xD7, + 0x99, 0xD6, 0xBC, 0xF6, 0xD7, 0x9A, 0xD6, 0xBC, + 0xF6, 0xD7, 0x9B, 0xD6, 0xBC, 0xF6, 0xD7, 0x9C, + 0xD6, 0xBC, 0xF6, 0xD7, 0x9E, 0xD6, 0xBC, 0xF6, + 0xD7, 0xA0, 0xD6, 0xBC, 0xF6, 0xD7, 0xA1, 0xD6, + 0xBC, 0xF6, 0xD7, 0xA3, 0xD6, 0xBC, 0xF6, 0xD7, + 0xA4, 0xD6, 0xBC, 0xF6, 0xD7, 0xA6, 0xD6, 0xBC, + 0xF6, 0xD7, 0xA7, 0xD6, 0xBC, 0xF6, 0xD7, 0xA8, + 0xD6, 0xBC, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xF6, + 0xD7, 0xAA, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, 0xD6, + 0xB9, 0xF6, 0xD7, 0x91, 0xD6, 0xBF, 0xF6, 0xD7, + 0x9B, 0xD6, 0xBF, 0xF6, 0xD7, 0xA4, 0xD6, 0xBF, + 0xD7, 0x90, 0xD7, 0x9C, 0xD9, 0xB1, 0xD9, 0xB1, + 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, + 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, + 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, + 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, + 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, + 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, + 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, + 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, + 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, + 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, + 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, + 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, + 0xDA, 0x8D, 0xDA, 0x8D, 0xDA, 0x8C, 0xDA, 0x8C, + 0xDA, 0x8E, 0xDA, 0x8E, 0xDA, 0x88, 0xDA, 0x88, + 0xDA, 0x98, 0xDA, 0x98, 0xDA, 0x91, 0xDA, 0x91, + 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, + 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, + 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, + 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, + 0xDA, 0xBA, 0xDA, 0xBA, 0xDA, 0xBB, 0xDA, 0xBB, + 0xDA, 0xBB, 0xDA, 0xBB, 0xDB, 0x95, 0xD9, 0x94, + 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x81, 0xDB, 0x81, + 0xDB, 0x81, 0xDB, 0x81, 0xDA, 0xBE, 0xDA, 0xBE, + 0xDA, 0xBE, 0xDA, 0xBE, 0xDB, 0x92, 0xDB, 0x92, + 0xDB, 0x92, 0xD9, 0x94, 0xDB, 0x92, 0xD9, 0x94, + 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, + 0xDB, 0x87, 0xDB, 0x87, 0xDB, 0x86, 0xDB, 0x86, + 0xDB, 0x88, 0xDB, 0x88, 0xDB, 0x87, 0xD9, 0xB4, + 0xDB, 0x8B, 0xDB, 0x8B, 0xDB, 0x85, 0xDB, 0x85, + 0xDB, 0x89, 0xDB, 0x89, 0xDB, 0x90, 0xDB, 0x90, + 0xDB, 0x90, 0xDB, 0x90, 0xD9, 0x89, 0xD9, 0x89, + 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, + 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, + 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, + 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, + 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, + 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x89, 0xDB, 0x8C, 0xDB, 0x8C, + 0xDB, 0x8C, 0xDB, 0x8C, 0xD9, 0x8A, 0xD9, 0x94, + 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, + 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, + 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, + 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, + 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, + 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, + 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, 0xAB, + 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, + 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, + 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, + 0xD8, 0xAD, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, + 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, + 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, + 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, 0xB6, + 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, + 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, 0xB7, + 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB8, + 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, + 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, + 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, + 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, + 0xD9, 0x85, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, + 0xD9, 0x8A, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, + 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, + 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, + 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, 0x83, + 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, + 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, 0x83, + 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x84, + 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x84, + 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, + 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, + 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x85, + 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, + 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, + 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, + 0xD9, 0x8A, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, 0x87, + 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0x89, 0xD9, 0x87, + 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, + 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0x8A, + 0xD9, 0x8A, 0xD8, 0xB0, 0xD9, 0xB0, 0xD8, 0xB1, + 0xD9, 0xB0, 0xD9, 0x89, 0xD9, 0xB0, 0x20, 0xD9, + 0x8C, 0xD9, 0x91, 0x20, 0xD9, 0x8D, 0xD9, 0x91, + 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x20, 0xD9, 0x8F, + 0xD9, 0x91, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x20, + 0xD9, 0x91, 0xD9, 0xB0, 0xD9, 0x8A, 0xD9, 0x94, + 0xD8, 0xB1, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, + 0xD8, 0xA8, 0xD8, 0xB1, 0xD8, 0xA8, 0xD8, 0xB2, + 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x86, + 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, 0x8A, + 0xD8, 0xAA, 0xD8, 0xB1, 0xD8, 0xAA, 0xD8, 0xB2, + 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x86, + 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x8A, + 0xD8, 0xAB, 0xD8, 0xB1, 0xD8, 0xAB, 0xD8, 0xB2, + 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x86, + 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, 0x8A, + 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, 0x8A, + 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, 0x8A, + 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD9, 0x84, + 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, + 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, 0x85, + 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, 0x8A, + 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x85, 0xD9, 0x85, + 0xD9, 0x86, 0xD8, 0xB1, 0xD9, 0x86, 0xD8, 0xB2, + 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x86, + 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x8A, + 0xD9, 0x89, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xB1, + 0xD9, 0x8A, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, 0x85, + 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x89, + 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x94, + 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x87, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, + 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, + 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, 0xAA, + 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, + 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, + 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAC, + 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, + 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, + 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, + 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, + 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, + 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAE, 0xD8, 0xB5, + 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, + 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, + 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, 0xB8, + 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, + 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, + 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, + 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, + 0xD9, 0x85, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, + 0xD9, 0x85, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, 0x83, + 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, 0x83, + 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x84, + 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x84, + 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, + 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, + 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, + 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, + 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x87, + 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x87, + 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, + 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x87, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, + 0xD9, 0x87, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, + 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, + 0xD9, 0x87, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB3, + 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, + 0xD9, 0x87, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, + 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x86, + 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x8A, + 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x80, + 0xD9, 0x8E, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x8F, + 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x90, 0xD9, 0x91, + 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, + 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, + 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, + 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, + 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, + 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, + 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, + 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, + 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, + 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, + 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, + 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, + 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, + 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, + 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, + 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, + 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, + 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, + 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, + 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, + 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, + 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, + 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, + 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x87, + 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, + 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, + 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB7, 0xD9, 0x85, + 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x8B, + 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xAA, 0xD8, 0xAC, + 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, + 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAA, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAE, + 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, + 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAA, + 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, + 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, + 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAD, + 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, 0xAD, + 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xB3, + 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, + 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, + 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, + 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, + 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, + 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB4, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, + 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, + 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, + 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xB6, + 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAE, + 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, + 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB7, + 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, + 0xD9, 0x8A, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, + 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, + 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, + 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, + 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xBA, + 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x81, 0xD8, 0xAE, + 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, + 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x82, + 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, + 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, + 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, 0x84, + 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAC, + 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, + 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x84, + 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD9, 0x85, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, + 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x85, + 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, + 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, + 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAC, + 0xD8, 0xAE, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, + 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, + 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAD, + 0xD9, 0x89, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, + 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, + 0xD8, 0xAC, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x85, + 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, + 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, + 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xA8, 0xD8, 0xAE, + 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAA, + 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAE, + 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, + 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xAC, + 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, + 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xB5, + 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, + 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x84, + 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x85, + 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x85, + 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A, + 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, + 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, + 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A, + 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, + 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, + 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, + 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, + 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x81, + 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAD, + 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, + 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xB5, + 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAE, + 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A, + 0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0xD9, 0x82, + 0xD9, 0x84, 0xDB, 0x92, 0xD8, 0xA7, 0xD9, 0x84, + 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xA7, 0xD9, 0x83, + 0xD8, 0xA8, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xAD, + 0xD9, 0x85, 0xD8, 0xAF, 0xD8, 0xB5, 0xD9, 0x84, + 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xB3, + 0xD9, 0x88, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x84, + 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x88, 0xD8, 0xB3, + 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, 0x84, + 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, + 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, + 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, + 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, + 0x84, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x84, 0x20, + 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, + 0xD9, 0x87, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, + 0xD9, 0x84, 0x2E, 0x2E, 0xE2, 0x80, 0x94, 0xE2, + 0x80, 0x93, 0x5F, 0x5F, 0x28, 0x29, 0x7B, 0x7D, + 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, 0xE3, 0x80, + 0x90, 0xE3, 0x80, 0x91, 0xE3, 0x80, 0x8A, 0xE3, + 0x80, 0x8B, 0xE3, 0x80, 0x88, 0xE3, 0x80, 0x89, + 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, 0x80, + 0x8E, 0xE3, 0x80, 0x8F, 0x20, 0xCC, 0x85, 0x20, + 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, + 0x5F, 0x5F, 0x5F, 0x2C, 0xE3, 0x80, 0x81, 0x2E, + 0x3B, 0x3A, 0x3F, 0x21, 0xE2, 0x80, 0x94, 0x28, + 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, + 0x95, 0x23, 0x26, 0x2A, 0x2B, 0x2D, 0x3C, 0x3E, + 0x3D, 0x5C, 0x24, 0x25, 0x40, 0x20, 0xD9, 0x8B, + 0xD9, 0x80, 0xD9, 0x8B, 0x20, 0xD9, 0x8C, 0x20, + 0xD9, 0x8D, 0x20, 0xD9, 0x8E, 0xD9, 0x80, 0xD9, + 0x8E, 0x20, 0xD9, 0x8F, 0xD9, 0x80, 0xD9, 0x8F, + 0x20, 0xD9, 0x90, 0xD9, 0x80, 0xD9, 0x90, 0x20, + 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x91, 0x20, 0xD9, + 0x92, 0xD9, 0x80, 0xD9, 0x92, 0xD8, 0xA1, 0xD8, + 0xA7, 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, + 0xA7, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, + 0x88, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD8, + 0xA7, 0xD9, 0x95, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xA7, 0xD8, 0xA7, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, + 0xA8, 0xD8, 0xA8, 0xD8, 0xA9, 0xD8, 0xA9, 0xD8, + 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, + 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, + 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, + 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, + 0xAF, 0xD8, 0xAF, 0xD8, 0xB0, 0xD8, 0xB0, 0xD8, + 0xB1, 0xD8, 0xB1, 0xD8, 0xB2, 0xD8, 0xB2, 0xD8, + 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, + 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, + 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, + 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, + 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, + 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, + 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, + 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD9, + 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, + 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, + 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, + 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, + 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, + 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, + 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, + 0x88, 0xD9, 0x88, 0xD9, 0x89, 0xD9, 0x89, 0xD9, + 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, + 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, + 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, + 0x94, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, + 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, + 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, + 0x84, 0xD8, 0xA7, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, + 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, + 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, + 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, + 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, + 0x7E, 0xE2, 0xA6, 0x85, 0xE2, 0xA6, 0x86, 0xE3, + 0x80, 0x82, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, + 0xE3, 0x80, 0x81, 0xE3, 0x83, 0xBB, 0xE3, 0x83, + 0xB2, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA3, 0xE3, + 0x82, 0xA5, 0xE3, 0x82, 0xA7, 0xE3, 0x82, 0xA9, + 0xE3, 0x83, 0xA3, 0xE3, 0x83, 0xA5, 0xE3, 0x83, + 0xA7, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, + 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, + 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, + 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, + 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, + 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, + 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, + 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, + 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, + 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, + 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, + 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, + 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0x99, 0xE3, 0x82, 0x9A, 0xE1, 0x85, 0xA0, 0xE1, + 0x84, 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, + 0xE1, 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, + 0xAD, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, + 0x84, 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, + 0xE1, 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, + 0xB4, 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, + 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, + 0xE1, 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, + 0x8A, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, + 0x84, 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, + 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, + 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, + 0x85, 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, + 0xE1, 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, + 0xA8, 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, + 0x85, 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, + 0xE1, 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, + 0xB0, 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, + 0x85, 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, + 0xC2, 0xA2, 0xC2, 0xA3, 0xC2, 0xAC, 0x20, 0xCC, + 0x84, 0xC2, 0xA6, 0xC2, 0xA5, 0xE2, 0x82, 0xA9, + 0xE2, 0x94, 0x82, 0xE2, 0x86, 0x90, 0xE2, 0x86, + 0x91, 0xE2, 0x86, 0x92, 0xE2, 0x86, 0x93, 0xE2, + 0x96, 0xA0, 0xE2, 0x97, 0x8B, 0xF6, 0xF0, 0x9D, + 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, + 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, + 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x85, + 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0xAF, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xF6, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xB1, 0xF6, 0xF0, 0x9D, 0x85, 0x98, + 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, + 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, + 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, + 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, + 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, + 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, + 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0xAF, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, + 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, + 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, + 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, + 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x43, 0x44, 0x47, 0x4A, 0x4B, 0x4E, + 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x66, + 0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, + 0x45, 0x46, 0x47, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, + 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, + 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, + 0x46, 0x47, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4F, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, + 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, + 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, + 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, + 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, + 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, + 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, + 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, + 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, + 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, + 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, + 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, + 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, + 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, + 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, + 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, + 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, + 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, + 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, + 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, + 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, + 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, + 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, + 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, + 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, + 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, + 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, + 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, + 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, + 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, + 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, + 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, + 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, + 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, + 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, + 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, + 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, + 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, + 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, + 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, + 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, + 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, + 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, + 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, + 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, + 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, + 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, + 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, + 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, + 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, + 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, + 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, + 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, + 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, + 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, + 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, + 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, + 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, + 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, + 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, + 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, + 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, + 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, + 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, + 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, + 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, + 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, + 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, + 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, + 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, + 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, + 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, + 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, + 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0xF6, 0xE4, 0xB8, 0xBD, 0xF6, 0xE4, 0xB8, + 0xB8, 0xF6, 0xE4, 0xB9, 0x81, 0xF6, 0xF0, 0xA0, + 0x84, 0xA2, 0xF6, 0xE4, 0xBD, 0xA0, 0xF6, 0xE4, + 0xBE, 0xAE, 0xF6, 0xE4, 0xBE, 0xBB, 0xF6, 0xE5, + 0x80, 0x82, 0xF6, 0xE5, 0x81, 0xBA, 0xF6, 0xE5, + 0x82, 0x99, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, + 0x83, 0x8F, 0xF6, 0xE3, 0x92, 0x9E, 0xF6, 0xF0, + 0xA0, 0x98, 0xBA, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, + 0xE5, 0x85, 0x94, 0xF6, 0xE5, 0x85, 0xA4, 0xF6, + 0xE5, 0x85, 0xB7, 0xF6, 0xF0, 0xA0, 0x94, 0x9C, + 0xF6, 0xE3, 0x92, 0xB9, 0xF6, 0xE5, 0x85, 0xA7, + 0xF6, 0xE5, 0x86, 0x8D, 0xF6, 0xF0, 0xA0, 0x95, + 0x8B, 0xF6, 0xE5, 0x86, 0x97, 0xF6, 0xE5, 0x86, + 0xA4, 0xF6, 0xE4, 0xBB, 0x8C, 0xF6, 0xE5, 0x86, + 0xAC, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xF0, 0xA9, + 0x87, 0x9F, 0xF6, 0xE5, 0x87, 0xB5, 0xF6, 0xE5, + 0x88, 0x83, 0xF6, 0xE3, 0x93, 0x9F, 0xF6, 0xE5, + 0x88, 0xBB, 0xF6, 0xE5, 0x89, 0x86, 0xF6, 0xE5, + 0x89, 0xB2, 0xF6, 0xE5, 0x89, 0xB7, 0xF6, 0xE3, + 0x94, 0x95, 0xF6, 0xE5, 0x8B, 0x87, 0xF6, 0xE5, + 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, + 0x8B, 0xBA, 0xF6, 0xE5, 0x8C, 0x85, 0xF6, 0xE5, + 0x8C, 0x86, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE5, + 0x8D, 0x89, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, + 0x8D, 0x9A, 0xF6, 0xE5, 0x8D, 0xB3, 0xF6, 0xE5, + 0x8D, 0xBD, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, + 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xF0, + 0xA0, 0xA8, 0xAC, 0xF6, 0xE7, 0x81, 0xB0, 0xF6, + 0xE5, 0x8F, 0x8A, 0xF6, 0xE5, 0x8F, 0x9F, 0xF6, + 0xF0, 0xA0, 0xAD, 0xA3, 0xF6, 0xE5, 0x8F, 0xAB, + 0xF6, 0xE5, 0x8F, 0xB1, 0xF6, 0xE5, 0x90, 0x86, + 0xF6, 0xE5, 0x92, 0x9E, 0xF6, 0xE5, 0x90, 0xB8, + 0xF6, 0xE5, 0x91, 0x88, 0xF6, 0xE5, 0x91, 0xA8, + 0xF6, 0xE5, 0x92, 0xA2, 0xF6, 0xE5, 0x93, 0xB6, + 0xF6, 0xE5, 0x94, 0x90, 0xF6, 0xE5, 0x95, 0x93, + 0xF6, 0xE5, 0x95, 0xA3, 0xF6, 0xE5, 0x96, 0x84, + 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x99, + 0xF6, 0xE5, 0x96, 0xAB, 0xF6, 0xE5, 0x96, 0xB3, + 0xF6, 0xE5, 0x97, 0x82, 0xF6, 0xE5, 0x9C, 0x96, + 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x9C, 0x97, + 0xF6, 0xE5, 0x99, 0x91, 0xF6, 0xE5, 0x99, 0xB4, + 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xA3, 0xAE, + 0xF6, 0xE5, 0x9F, 0x8E, 0xF6, 0xE5, 0x9F, 0xB4, + 0xF6, 0xE5, 0xA0, 0x8D, 0xF6, 0xE5, 0x9E, 0x8B, + 0xF6, 0xE5, 0xA0, 0xB2, 0xF6, 0xE5, 0xA0, 0xB1, + 0xF6, 0xE5, 0xA2, 0xAC, 0xF6, 0xF0, 0xA1, 0x93, + 0xA4, 0xF6, 0xE5, 0xA3, 0xB2, 0xF6, 0xE5, 0xA3, + 0xB7, 0xF6, 0xE5, 0xA4, 0x86, 0xF6, 0xE5, 0xA4, + 0x9A, 0xF6, 0xE5, 0xA4, 0xA2, 0xF6, 0xE5, 0xA5, + 0xA2, 0xF6, 0xF0, 0xA1, 0x9A, 0xA8, 0xF6, 0xF0, + 0xA1, 0x9B, 0xAA, 0xF6, 0xE5, 0xA7, 0xAC, 0xF6, + 0xE5, 0xA8, 0x9B, 0xF6, 0xE5, 0xA8, 0xA7, 0xF6, + 0xE5, 0xA7, 0x98, 0xF6, 0xE5, 0xA9, 0xA6, 0xF6, + 0xE3, 0x9B, 0xAE, 0xF6, 0xE3, 0x9B, 0xBC, 0xF6, + 0xE5, 0xAC, 0x88, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, + 0xE5, 0xAC, 0xBE, 0xF6, 0xF0, 0xA1, 0xA7, 0x88, + 0xF6, 0xE5, 0xAF, 0x83, 0xF6, 0xE5, 0xAF, 0x98, + 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xAF, 0xB3, + 0xF6, 0xF0, 0xA1, 0xAC, 0x98, 0xF6, 0xE5, 0xAF, + 0xBF, 0xF6, 0xE5, 0xB0, 0x86, 0xF6, 0xE5, 0xBD, + 0x93, 0xF6, 0xE5, 0xB0, 0xA2, 0xF6, 0xE3, 0x9E, + 0x81, 0xF6, 0xE5, 0xB1, 0xA0, 0xF6, 0xE5, 0xB1, + 0xAE, 0xF6, 0xE5, 0xB3, 0x80, 0xF6, 0xE5, 0xB2, + 0x8D, 0xF6, 0xF0, 0xA1, 0xB7, 0xA4, 0xF6, 0xE5, + 0xB5, 0x83, 0xF6, 0xF0, 0xA1, 0xB7, 0xA6, 0xF6, + 0xE5, 0xB5, 0xAE, 0xF6, 0xE5, 0xB5, 0xAB, 0xF6, + 0xE5, 0xB5, 0xBC, 0xF6, 0xE5, 0xB7, 0xA1, 0xF6, + 0xE5, 0xB7, 0xA2, 0xF6, 0xE3, 0xA0, 0xAF, 0xF6, + 0xE5, 0xB7, 0xBD, 0xF6, 0xE5, 0xB8, 0xA8, 0xF6, + 0xE5, 0xB8, 0xBD, 0xF6, 0xE5, 0xB9, 0xA9, 0xF6, + 0xE3, 0xA1, 0xA2, 0xF6, 0xF0, 0xA2, 0x86, 0x83, + 0xF6, 0xE3, 0xA1, 0xBC, 0xF6, 0xE5, 0xBA, 0xB0, + 0xF6, 0xE5, 0xBA, 0xB3, 0xF6, 0xE5, 0xBA, 0xB6, + 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xF0, 0xAA, 0x8E, + 0x92, 0xF6, 0xE5, 0xBB, 0xBE, 0xF6, 0xF0, 0xA2, + 0x8C, 0xB1, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, + 0xE8, 0x88, 0x81, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, + 0xE5, 0xBC, 0xA2, 0xF6, 0xE3, 0xA3, 0x87, 0xF6, + 0xF0, 0xA3, 0x8A, 0xB8, 0xF6, 0xF0, 0xA6, 0x87, + 0x9A, 0xF6, 0xE5, 0xBD, 0xA2, 0xF6, 0xE5, 0xBD, + 0xAB, 0xF6, 0xE3, 0xA3, 0xA3, 0xF6, 0xE5, 0xBE, + 0x9A, 0xF6, 0xE5, 0xBF, 0x8D, 0xF6, 0xE5, 0xBF, + 0x97, 0xF6, 0xE5, 0xBF, 0xB9, 0xF6, 0xE6, 0x82, + 0x81, 0xF6, 0xE3, 0xA4, 0xBA, 0xF6, 0xE3, 0xA4, + 0x9C, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xF0, 0xA2, + 0x9B, 0x94, 0xF6, 0xE6, 0x83, 0x87, 0xF6, 0xE6, + 0x85, 0x88, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, + 0x85, 0x8E, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, + 0x85, 0xBA, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, + 0x86, 0xB2, 0xF6, 0xE6, 0x86, 0xA4, 0xF6, 0xE6, + 0x86, 0xAF, 0xF6, 0xE6, 0x87, 0x9E, 0xF6, 0xE6, + 0x87, 0xB2, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE6, + 0x88, 0x90, 0xF6, 0xE6, 0x88, 0x9B, 0xF6, 0xE6, + 0x89, 0x9D, 0xF6, 0xE6, 0x8A, 0xB1, 0xF6, 0xE6, + 0x8B, 0x94, 0xF6, 0xE6, 0x8D, 0x90, 0xF6, 0xF0, + 0xA2, 0xAC, 0x8C, 0xF6, 0xE6, 0x8C, 0xBD, 0xF6, + 0xE6, 0x8B, 0xBC, 0xF6, 0xE6, 0x8D, 0xA8, 0xF6, + 0xE6, 0x8E, 0x83, 0xF6, 0xE6, 0x8F, 0xA4, 0xF6, + 0xF0, 0xA2, 0xAF, 0xB1, 0xF6, 0xE6, 0x90, 0xA2, + 0xF6, 0xE6, 0x8F, 0x85, 0xF6, 0xE6, 0x8E, 0xA9, + 0xF6, 0xE3, 0xA8, 0xAE, 0xF6, 0xE6, 0x91, 0xA9, + 0xF6, 0xE6, 0x91, 0xBE, 0xF6, 0xE6, 0x92, 0x9D, + 0xF6, 0xE6, 0x91, 0xB7, 0xF6, 0xE3, 0xA9, 0xAC, + 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x95, 0xAC, + 0xF6, 0xF0, 0xA3, 0x80, 0x8A, 0xF6, 0xE6, 0x97, + 0xA3, 0xF6, 0xE6, 0x9B, 0xB8, 0xF6, 0xE6, 0x99, + 0x89, 0xF6, 0xE3, 0xAC, 0x99, 0xF6, 0xE6, 0x9A, + 0x91, 0xF6, 0xE3, 0xAC, 0x88, 0xF6, 0xE3, 0xAB, + 0xA4, 0xF6, 0xE5, 0x86, 0x92, 0xF6, 0xE5, 0x86, + 0x95, 0xF6, 0xE6, 0x9C, 0x80, 0xF6, 0xE6, 0x9A, + 0x9C, 0xF6, 0xE8, 0x82, 0xAD, 0xF6, 0xE4, 0x8F, + 0x99, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0x9C, + 0x9B, 0xF6, 0xE6, 0x9C, 0xA1, 0xF6, 0xE6, 0x9D, + 0x9E, 0xF6, 0xE6, 0x9D, 0x93, 0xF6, 0xF0, 0xA3, + 0x8F, 0x83, 0xF6, 0xE3, 0xAD, 0x89, 0xF6, 0xE6, + 0x9F, 0xBA, 0xF6, 0xE6, 0x9E, 0x85, 0xF6, 0xE6, + 0xA1, 0x92, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xF0, + 0xA3, 0x91, 0xAD, 0xF6, 0xE6, 0xA2, 0x8E, 0xF6, + 0xE6, 0xA0, 0x9F, 0xF6, 0xE6, 0xA4, 0x94, 0xF6, + 0xE3, 0xAE, 0x9D, 0xF6, 0xE6, 0xA5, 0x82, 0xF6, + 0xE6, 0xA6, 0xA3, 0xF6, 0xE6, 0xA7, 0xAA, 0xF6, + 0xE6, 0xAA, 0xA8, 0xF6, 0xF0, 0xA3, 0x9A, 0xA3, + 0xF6, 0xE6, 0xAB, 0x9B, 0xF6, 0xE3, 0xB0, 0x98, + 0xF6, 0xE6, 0xAC, 0xA1, 0xF6, 0xF0, 0xA3, 0xA2, + 0xA7, 0xF6, 0xE6, 0xAD, 0x94, 0xF6, 0xE3, 0xB1, + 0x8E, 0xF6, 0xE6, 0xAD, 0xB2, 0xF6, 0xE6, 0xAE, + 0x9F, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE6, 0xAE, + 0xBB, 0xF6, 0xF0, 0xA3, 0xAA, 0x8D, 0xF6, 0xF0, + 0xA1, 0xB4, 0x8B, 0xF6, 0xF0, 0xA3, 0xAB, 0xBA, + 0xF6, 0xE6, 0xB1, 0x8E, 0xF6, 0xF0, 0xA3, 0xB2, + 0xBC, 0xF6, 0xE6, 0xB2, 0xBF, 0xF6, 0xE6, 0xB3, + 0x8D, 0xF6, 0xE6, 0xB1, 0xA7, 0xF6, 0xE6, 0xB4, + 0x96, 0xF6, 0xE6, 0xB4, 0xBE, 0xF6, 0xE6, 0xB5, + 0xB7, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xB5, + 0xA9, 0xF6, 0xE6, 0xB5, 0xB8, 0xF6, 0xE6, 0xB6, + 0x85, 0xF6, 0xF0, 0xA3, 0xB4, 0x9E, 0xF6, 0xE6, + 0xB4, 0xB4, 0xF6, 0xE6, 0xB8, 0xAF, 0xF6, 0xE6, + 0xB9, 0xAE, 0xF6, 0xE3, 0xB4, 0xB3, 0xF6, 0xE6, + 0xBB, 0x8B, 0xF6, 0xE6, 0xBB, 0x87, 0xF6, 0xF0, + 0xA3, 0xBB, 0x91, 0xF6, 0xE6, 0xB7, 0xB9, 0xF6, + 0xE6, 0xBD, 0xAE, 0xF6, 0xF0, 0xA3, 0xBD, 0x9E, + 0xF6, 0xF0, 0xA3, 0xBE, 0x8E, 0xF6, 0xE6, 0xBF, + 0x86, 0xF6, 0xE7, 0x80, 0xB9, 0xF6, 0xE7, 0x80, + 0x9E, 0xF6, 0xE7, 0x80, 0x9B, 0xF6, 0xE3, 0xB6, + 0x96, 0xF6, 0xE7, 0x81, 0x8A, 0xF6, 0xE7, 0x81, + 0xBD, 0xF6, 0xE7, 0x81, 0xB7, 0xF6, 0xE7, 0x82, + 0xAD, 0xF6, 0xF0, 0xA0, 0x94, 0xA5, 0xF6, 0xE7, + 0x85, 0x85, 0xF6, 0xF0, 0xA4, 0x89, 0xA3, 0xF6, + 0xE7, 0x86, 0x9C, 0xF6, 0xF0, 0xA4, 0x8E, 0xAB, + 0xF6, 0xE7, 0x88, 0xA8, 0xF6, 0xE7, 0x88, 0xB5, + 0xF6, 0xE7, 0x89, 0x90, 0xF6, 0xF0, 0xA4, 0x98, + 0x88, 0xF6, 0xE7, 0x8A, 0x80, 0xF6, 0xE7, 0x8A, + 0x95, 0xF6, 0xF0, 0xA4, 0x9C, 0xB5, 0xF6, 0xF0, + 0xA4, 0xA0, 0x94, 0xF6, 0xE7, 0x8D, 0xBA, 0xF6, + 0xE7, 0x8E, 0x8B, 0xF6, 0xE3, 0xBA, 0xAC, 0xF6, + 0xE7, 0x8E, 0xA5, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, + 0xE3, 0xBA, 0xB8, 0xF6, 0xE7, 0x91, 0x87, 0xF6, + 0xE7, 0x91, 0x9C, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, + 0xE7, 0x92, 0x85, 0xF6, 0xE7, 0x93, 0x8A, 0xF6, + 0xE3, 0xBC, 0x9B, 0xF6, 0xE7, 0x94, 0xA4, 0xF6, + 0xF0, 0xA4, 0xB0, 0xB6, 0xF6, 0xE7, 0x94, 0xBE, + 0xF6, 0xF0, 0xA4, 0xB2, 0x92, 0xF6, 0xE7, 0x95, + 0xB0, 0xF6, 0xF0, 0xA2, 0x86, 0x9F, 0xF6, 0xE7, + 0x98, 0x90, 0xF6, 0xF0, 0xA4, 0xBE, 0xA1, 0xF6, + 0xF0, 0xA4, 0xBE, 0xB8, 0xF6, 0xF0, 0xA5, 0x81, + 0x84, 0xF6, 0xE3, 0xBF, 0xBC, 0xF6, 0xE4, 0x80, + 0x88, 0xF6, 0xE7, 0x9B, 0xB4, 0xF6, 0xF0, 0xA5, + 0x83, 0xB3, 0xF6, 0xF0, 0xA5, 0x83, 0xB2, 0xF6, + 0xF0, 0xA5, 0x84, 0x99, 0xF6, 0xF0, 0xA5, 0x84, + 0xB3, 0xF6, 0xE7, 0x9C, 0x9E, 0xF6, 0xE7, 0x9C, + 0x9F, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9D, + 0x8A, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xE7, 0x9E, + 0x8B, 0xF6, 0xE4, 0x81, 0x86, 0xF6, 0xE4, 0x82, + 0x96, 0xF6, 0xF0, 0xA5, 0x90, 0x9D, 0xF6, 0xE7, + 0xA1, 0x8E, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, + 0xA3, 0x8C, 0xF6, 0xE4, 0x83, 0xA3, 0xF6, 0xF0, + 0xA5, 0x98, 0xA6, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, + 0xF0, 0xA5, 0x9A, 0x9A, 0xF6, 0xF0, 0xA5, 0x9B, + 0x85, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE7, 0xA7, + 0xAB, 0xF6, 0xE4, 0x84, 0xAF, 0xF6, 0xE7, 0xA9, + 0x80, 0xF6, 0xE7, 0xA9, 0x8A, 0xF6, 0xE7, 0xA9, + 0x8F, 0xF6, 0xF0, 0xA5, 0xA5, 0xBC, 0xF6, 0xF0, + 0xA5, 0xAA, 0xA7, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, + 0xF6, 0xE7, 0xAB, 0xAE, 0xF6, 0xE4, 0x88, 0x82, + 0xF6, 0xF0, 0xA5, 0xAE, 0xAB, 0xF6, 0xE7, 0xAF, + 0x86, 0xF6, 0xE7, 0xAF, 0x89, 0xF6, 0xE4, 0x88, + 0xA7, 0xF6, 0xF0, 0xA5, 0xB2, 0x80, 0xF6, 0xE7, + 0xB3, 0x92, 0xF6, 0xE4, 0x8A, 0xA0, 0xF6, 0xE7, + 0xB3, 0xA8, 0xF6, 0xE7, 0xB3, 0xA3, 0xF6, 0xE7, + 0xB4, 0x80, 0xF6, 0xF0, 0xA5, 0xBE, 0x86, 0xF6, + 0xE7, 0xB5, 0xA3, 0xF6, 0xE4, 0x8C, 0x81, 0xF6, + 0xE7, 0xB7, 0x87, 0xF6, 0xE7, 0xB8, 0x82, 0xF6, + 0xE7, 0xB9, 0x85, 0xF6, 0xE4, 0x8C, 0xB4, 0xF6, + 0xF0, 0xA6, 0x88, 0xA8, 0xF6, 0xF0, 0xA6, 0x89, + 0x87, 0xF6, 0xE4, 0x8D, 0x99, 0xF6, 0xF0, 0xA6, + 0x8B, 0x99, 0xF6, 0xE7, 0xBD, 0xBA, 0xF6, 0xF0, + 0xA6, 0x8C, 0xBE, 0xF6, 0xE7, 0xBE, 0x95, 0xF6, + 0xE7, 0xBF, 0xBA, 0xF6, 0xE8, 0x80, 0x85, 0xF6, + 0xF0, 0xA6, 0x93, 0x9A, 0xF6, 0xF0, 0xA6, 0x94, + 0xA3, 0xF6, 0xE8, 0x81, 0xA0, 0xF6, 0xF0, 0xA6, + 0x96, 0xA8, 0xF6, 0xE8, 0x81, 0xB0, 0xF6, 0xF0, + 0xA3, 0x8D, 0x9F, 0xF6, 0xE4, 0x8F, 0x95, 0xF6, + 0xE8, 0x82, 0xB2, 0xF6, 0xE8, 0x84, 0x83, 0xF6, + 0xE4, 0x90, 0x8B, 0xF6, 0xE8, 0x84, 0xBE, 0xF6, + 0xE5, 0xAA, 0xB5, 0xF6, 0xF0, 0xA6, 0x9E, 0xA7, + 0xF6, 0xF0, 0xA6, 0x9E, 0xB5, 0xF6, 0xF0, 0xA3, + 0x8E, 0x93, 0xF6, 0xF0, 0xA3, 0x8E, 0x9C, 0xF6, + 0xE8, 0x88, 0x81, 0xF6, 0xE8, 0x88, 0x84, 0xF6, + 0xE8, 0xBE, 0x9E, 0xF6, 0xE4, 0x91, 0xAB, 0xF6, + 0xE8, 0x8A, 0x91, 0xF6, 0xE8, 0x8A, 0x8B, 0xF6, + 0xE8, 0x8A, 0x9D, 0xF6, 0xE5, 0x8A, 0xB3, 0xF6, + 0xE8, 0x8A, 0xB1, 0xF6, 0xE8, 0x8A, 0xB3, 0xF6, + 0xE8, 0x8A, 0xBD, 0xF6, 0xE8, 0x8B, 0xA6, 0xF6, + 0xF0, 0xA6, 0xAC, 0xBC, 0xF6, 0xE8, 0x8B, 0xA5, + 0xF6, 0xE8, 0x8C, 0x9D, 0xF6, 0xE8, 0x8D, 0xA3, + 0xF6, 0xE8, 0x8E, 0xAD, 0xF6, 0xE8, 0x8C, 0xA3, + 0xF6, 0xE8, 0x8E, 0xBD, 0xF6, 0xE8, 0x8F, 0xA7, + 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0x8D, 0x93, + 0xF6, 0xE8, 0x8F, 0x8A, 0xF6, 0xE8, 0x8F, 0x8C, + 0xF6, 0xE8, 0x8F, 0x9C, 0xF6, 0xF0, 0xA6, 0xB0, + 0xB6, 0xF6, 0xF0, 0xA6, 0xB5, 0xAB, 0xF6, 0xF0, + 0xA6, 0xB3, 0x95, 0xF6, 0xE4, 0x94, 0xAB, 0xF6, + 0xE8, 0x93, 0xB1, 0xF6, 0xE8, 0x93, 0xB3, 0xF6, + 0xE8, 0x94, 0x96, 0xF6, 0xF0, 0xA7, 0x8F, 0x8A, + 0xF6, 0xE8, 0x95, 0xA4, 0xF6, 0xF0, 0xA6, 0xBC, + 0xAC, 0xF6, 0xE4, 0x95, 0x9D, 0xF6, 0xE4, 0x95, + 0xA1, 0xF6, 0xF0, 0xA6, 0xBE, 0xB1, 0xF6, 0xF0, + 0xA7, 0x83, 0x92, 0xF6, 0xE4, 0x95, 0xAB, 0xF6, + 0xE8, 0x99, 0x90, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, + 0xE8, 0x99, 0xA7, 0xF6, 0xE8, 0x99, 0xA9, 0xF6, + 0xE8, 0x9A, 0xA9, 0xF6, 0xE8, 0x9A, 0x88, 0xF6, + 0xE8, 0x9C, 0x8E, 0xF6, 0xE8, 0x9B, 0xA2, 0xF6, + 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, 0x9C, 0xA8, 0xF6, + 0xE8, 0x9D, 0xAB, 0xF6, 0xE8, 0x9E, 0x86, 0xF6, + 0xE4, 0x97, 0x97, 0xF6, 0xE8, 0x9F, 0xA1, 0xF6, + 0xE8, 0xA0, 0x81, 0xF6, 0xE4, 0x97, 0xB9, 0xF6, + 0xE8, 0xA1, 0xA0, 0xF6, 0xE8, 0xA1, 0xA3, 0xF6, + 0xF0, 0xA7, 0x99, 0xA7, 0xF6, 0xE8, 0xA3, 0x97, + 0xF6, 0xE8, 0xA3, 0x9E, 0xF6, 0xE4, 0x98, 0xB5, + 0xF6, 0xE8, 0xA3, 0xBA, 0xF6, 0xE3, 0x92, 0xBB, + 0xF6, 0xF0, 0xA7, 0xA2, 0xAE, 0xF6, 0xF0, 0xA7, + 0xA5, 0xA6, 0xF6, 0xE4, 0x9A, 0xBE, 0xF6, 0xE4, + 0x9B, 0x87, 0xF6, 0xE8, 0xAA, 0xA0, 0xF6, 0xE8, + 0xAB, 0xAD, 0xF6, 0xE8, 0xAE, 0x8A, 0xF6, 0xE8, + 0xB1, 0x95, 0xF6, 0xF0, 0xA7, 0xB2, 0xA8, 0xF6, + 0xE8, 0xB2, 0xAB, 0xF6, 0xE8, 0xB3, 0x81, 0xF6, + 0xE8, 0xB4, 0x9B, 0xF6, 0xE8, 0xB5, 0xB7, 0xF6, + 0xF0, 0xA7, 0xBC, 0xAF, 0xF6, 0xF0, 0xA0, 0xA0, + 0x84, 0xF6, 0xE8, 0xB7, 0x8B, 0xF6, 0xE8, 0xB6, + 0xBC, 0xF6, 0xE8, 0xB7, 0xB0, 0xF6, 0xF0, 0xA0, + 0xA3, 0x9E, 0xF6, 0xE8, 0xBB, 0x94, 0xF6, 0xE8, + 0xBC, 0xB8, 0xF6, 0xF0, 0xA8, 0x97, 0x92, 0xF6, + 0xF0, 0xA8, 0x97, 0xAD, 0xF6, 0xE9, 0x82, 0x94, + 0xF6, 0xE9, 0x83, 0xB1, 0xF6, 0xE9, 0x84, 0x91, + 0xF6, 0xF0, 0xA8, 0x9C, 0xAE, 0xF6, 0xE9, 0x84, + 0x9B, 0xF6, 0xE9, 0x88, 0xB8, 0xF6, 0xE9, 0x8B, + 0x97, 0xF6, 0xE9, 0x8B, 0x98, 0xF6, 0xE9, 0x89, + 0xBC, 0xF6, 0xE9, 0x8F, 0xB9, 0xF6, 0xE9, 0x90, + 0x95, 0xF6, 0xF0, 0xA8, 0xAF, 0xBA, 0xF6, 0xE9, + 0x96, 0x8B, 0xF6, 0xE4, 0xA6, 0x95, 0xF6, 0xE9, + 0x96, 0xB7, 0xF6, 0xF0, 0xA8, 0xB5, 0xB7, 0xF6, + 0xE4, 0xA7, 0xA6, 0xF6, 0xE9, 0x9B, 0x83, 0xF6, + 0xE5, 0xB6, 0xB2, 0xF6, 0xE9, 0x9C, 0xA3, 0xF6, + 0xF0, 0xA9, 0x85, 0x85, 0xF6, 0xF0, 0xA9, 0x88, + 0x9A, 0xF6, 0xE4, 0xA9, 0xAE, 0xF6, 0xE4, 0xA9, + 0xB6, 0xF6, 0xE9, 0x9F, 0xA0, 0xF6, 0xF0, 0xA9, + 0x90, 0x8A, 0xF6, 0xE4, 0xAA, 0xB2, 0xF6, 0xF0, + 0xA9, 0x92, 0x96, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, + 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0xA9, 0xF6, + 0xF0, 0xA9, 0x96, 0xB6, 0xF6, 0xE9, 0xA3, 0xA2, + 0xF6, 0xE4, 0xAC, 0xB3, 0xF6, 0xE9, 0xA4, 0xA9, + 0xF6, 0xE9, 0xA6, 0xA7, 0xF6, 0xE9, 0xA7, 0x82, + 0xF6, 0xE9, 0xA7, 0xBE, 0xF6, 0xE4, 0xAF, 0x8E, + 0xF6, 0xF0, 0xA9, 0xAC, 0xB0, 0xF6, 0xE9, 0xAC, + 0x92, 0xF6, 0xE9, 0xB1, 0x80, 0xF6, 0xE9, 0xB3, + 0xBD, 0xF6, 0xE4, 0xB3, 0x8E, 0xF6, 0xE4, 0xB3, + 0xAD, 0xF6, 0xE9, 0xB5, 0xA7, 0xF6, 0xF0, 0xAA, + 0x83, 0x8E, 0xF6, 0xE4, 0xB3, 0xB8, 0xF6, 0xF0, + 0xAA, 0x84, 0x85, 0xF6, 0xF0, 0xAA, 0x88, 0x8E, + 0xF6, 0xF0, 0xAA, 0x8A, 0x91, 0xF6, 0xE9, 0xBA, + 0xBB, 0xF6, 0xE4, 0xB5, 0x96, 0xF6, 0xE9, 0xBB, + 0xB9, 0xF6, 0xE9, 0xBB, 0xBE, 0xF6, 0xE9, 0xBC, + 0x85, 0xF6, 0xE9, 0xBC, 0x8F, 0xF6, 0xE9, 0xBC, + 0x96, 0xF6, 0xE9, 0xBC, 0xBB, 0xF6, 0xF0, 0xAA, + 0x98, 0x80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, + }, + { + 0x20, 0x20, 0xCC, 0x88, 0x61, 0x20, 0xCC, 0x84, + 0x32, 0x33, 0x20, 0xCC, 0x81, 0xCE, 0xBC, 0x20, + 0xCC, 0xA7, 0x31, 0x6F, 0x31, 0xE2, 0x81, 0x84, + 0x34, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x33, 0xE2, + 0x81, 0x84, 0x34, 0xF6, 0x41, 0xCC, 0x80, 0xF6, + 0x41, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xF6, + 0x41, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0x88, 0xF6, + 0x41, 0xCC, 0x8A, 0xF6, 0x43, 0xCC, 0xA7, 0xF6, + 0x45, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x81, 0xF6, + 0x45, 0xCC, 0x82, 0xF6, 0x45, 0xCC, 0x88, 0xF6, + 0x49, 0xCC, 0x80, 0xF6, 0x49, 0xCC, 0x81, 0xF6, + 0x49, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x88, 0xF6, + 0x4E, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x80, 0xF6, + 0x4F, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xF6, + 0x4F, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x88, 0xF6, + 0x55, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x81, 0xF6, + 0x55, 0xCC, 0x82, 0xF6, 0x55, 0xCC, 0x88, 0xF6, + 0x59, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x80, 0xF6, + 0x61, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xF6, + 0x61, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x88, 0xF6, + 0x61, 0xCC, 0x8A, 0xF6, 0x63, 0xCC, 0xA7, 0xF6, + 0x65, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x81, 0xF6, + 0x65, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0x88, 0xF6, + 0x69, 0xCC, 0x80, 0xF6, 0x69, 0xCC, 0x81, 0xF6, + 0x69, 0xCC, 0x82, 0xF6, 0x69, 0xCC, 0x88, 0xF6, + 0x6E, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x80, 0xF6, + 0x6F, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xF6, + 0x6F, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x88, 0xF6, + 0x75, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x81, 0xF6, + 0x75, 0xCC, 0x82, 0xF6, 0x75, 0xCC, 0x88, 0xF6, + 0x79, 0xCC, 0x81, 0xF6, 0x79, 0xCC, 0x88, 0xF6, + 0x41, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x84, 0xF6, + 0x41, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0x86, 0xF6, + 0x41, 0xCC, 0xA8, 0xF6, 0x61, 0xCC, 0xA8, 0xF6, + 0x43, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0x81, 0xF6, + 0x43, 0xCC, 0x82, 0xF6, 0x63, 0xCC, 0x82, 0xF6, + 0x43, 0xCC, 0x87, 0xF6, 0x63, 0xCC, 0x87, 0xF6, + 0x43, 0xCC, 0x8C, 0xF6, 0x63, 0xCC, 0x8C, 0xF6, + 0x44, 0xCC, 0x8C, 0xF6, 0x64, 0xCC, 0x8C, 0xF6, + 0x45, 0xCC, 0x84, 0xF6, 0x65, 0xCC, 0x84, 0xF6, + 0x45, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0x86, 0xF6, + 0x45, 0xCC, 0x87, 0xF6, 0x65, 0xCC, 0x87, 0xF6, + 0x45, 0xCC, 0xA8, 0xF6, 0x65, 0xCC, 0xA8, 0xF6, + 0x45, 0xCC, 0x8C, 0xF6, 0x65, 0xCC, 0x8C, 0xF6, + 0x47, 0xCC, 0x82, 0xF6, 0x67, 0xCC, 0x82, 0xF6, + 0x47, 0xCC, 0x86, 0xF6, 0x67, 0xCC, 0x86, 0xF6, + 0x47, 0xCC, 0x87, 0xF6, 0x67, 0xCC, 0x87, 0xF6, + 0x47, 0xCC, 0xA7, 0xF6, 0x67, 0xCC, 0xA7, 0xF6, + 0x48, 0xCC, 0x82, 0xF6, 0x68, 0xCC, 0x82, 0xF6, + 0x49, 0xCC, 0x83, 0xF6, 0x69, 0xCC, 0x83, 0xF6, + 0x49, 0xCC, 0x84, 0xF6, 0x69, 0xCC, 0x84, 0xF6, + 0x49, 0xCC, 0x86, 0xF6, 0x69, 0xCC, 0x86, 0xF6, + 0x49, 0xCC, 0xA8, 0xF6, 0x69, 0xCC, 0xA8, 0xF6, + 0x49, 0xCC, 0x87, 0x49, 0x4A, 0x69, 0x6A, 0xF6, + 0x4A, 0xCC, 0x82, 0xF6, 0x6A, 0xCC, 0x82, 0xF6, + 0x4B, 0xCC, 0xA7, 0xF6, 0x6B, 0xCC, 0xA7, 0xF6, + 0x4C, 0xCC, 0x81, 0xF6, 0x6C, 0xCC, 0x81, 0xF6, + 0x4C, 0xCC, 0xA7, 0xF6, 0x6C, 0xCC, 0xA7, 0xF6, + 0x4C, 0xCC, 0x8C, 0xF6, 0x6C, 0xCC, 0x8C, 0x4C, + 0xC2, 0xB7, 0x6C, 0xC2, 0xB7, 0xF6, 0x4E, 0xCC, + 0x81, 0xF6, 0x6E, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, + 0xA7, 0xF6, 0x6E, 0xCC, 0xA7, 0xF6, 0x4E, 0xCC, + 0x8C, 0xF6, 0x6E, 0xCC, 0x8C, 0xCA, 0xBC, 0x6E, + 0xF6, 0x4F, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x84, + 0xF6, 0x4F, 0xCC, 0x86, 0xF6, 0x6F, 0xCC, 0x86, + 0xF6, 0x4F, 0xCC, 0x8B, 0xF6, 0x6F, 0xCC, 0x8B, + 0xF6, 0x52, 0xCC, 0x81, 0xF6, 0x72, 0xCC, 0x81, + 0xF6, 0x52, 0xCC, 0xA7, 0xF6, 0x72, 0xCC, 0xA7, + 0xF6, 0x52, 0xCC, 0x8C, 0xF6, 0x72, 0xCC, 0x8C, + 0xF6, 0x53, 0xCC, 0x81, 0xF6, 0x73, 0xCC, 0x81, + 0xF6, 0x53, 0xCC, 0x82, 0xF6, 0x73, 0xCC, 0x82, + 0xF6, 0x53, 0xCC, 0xA7, 0xF6, 0x73, 0xCC, 0xA7, + 0xF6, 0x53, 0xCC, 0x8C, 0xF6, 0x73, 0xCC, 0x8C, + 0xF6, 0x54, 0xCC, 0xA7, 0xF6, 0x74, 0xCC, 0xA7, + 0xF6, 0x54, 0xCC, 0x8C, 0xF6, 0x74, 0xCC, 0x8C, + 0xF6, 0x55, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x83, + 0xF6, 0x55, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x84, + 0xF6, 0x55, 0xCC, 0x86, 0xF6, 0x75, 0xCC, 0x86, + 0xF6, 0x55, 0xCC, 0x8A, 0xF6, 0x75, 0xCC, 0x8A, + 0xF6, 0x55, 0xCC, 0x8B, 0xF6, 0x75, 0xCC, 0x8B, + 0xF6, 0x55, 0xCC, 0xA8, 0xF6, 0x75, 0xCC, 0xA8, + 0xF6, 0x57, 0xCC, 0x82, 0xF6, 0x77, 0xCC, 0x82, + 0xF6, 0x59, 0xCC, 0x82, 0xF6, 0x79, 0xCC, 0x82, + 0xF6, 0x59, 0xCC, 0x88, 0xF6, 0x5A, 0xCC, 0x81, + 0xF6, 0x7A, 0xCC, 0x81, 0xF6, 0x5A, 0xCC, 0x87, + 0xF6, 0x7A, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x8C, + 0xF6, 0x7A, 0xCC, 0x8C, 0x73, 0xF6, 0x4F, 0xCC, + 0x9B, 0xF6, 0x6F, 0xCC, 0x9B, 0xF6, 0x55, 0xCC, + 0x9B, 0xF6, 0x75, 0xCC, 0x9B, 0x44, 0x5A, 0xCC, + 0x8C, 0x44, 0x7A, 0xCC, 0x8C, 0x64, 0x7A, 0xCC, + 0x8C, 0x4C, 0x4A, 0x4C, 0x6A, 0x6C, 0x6A, 0x4E, + 0x4A, 0x4E, 0x6A, 0x6E, 0x6A, 0xF6, 0x41, 0xCC, + 0x8C, 0xF6, 0x61, 0xCC, 0x8C, 0xF6, 0x49, 0xCC, + 0x8C, 0xF6, 0x69, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, + 0x8C, 0xF6, 0x6F, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, + 0x8C, 0xF6, 0x75, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x88, 0xCC, + 0x84, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x55, 0xCC, + 0x88, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x88, 0xCC, + 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xF6, + 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x41, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x88, 0xCC, + 0x84, 0xF6, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xF6, + 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0xC3, 0x86, + 0xCC, 0x84, 0xF6, 0xC3, 0xA6, 0xCC, 0x84, 0xF6, + 0x47, 0xCC, 0x8C, 0xF6, 0x67, 0xCC, 0x8C, 0xF6, + 0x4B, 0xCC, 0x8C, 0xF6, 0x6B, 0xCC, 0x8C, 0xF6, + 0x4F, 0xCC, 0xA8, 0xF6, 0x6F, 0xCC, 0xA8, 0xF6, + 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0xA8, 0xCC, 0x84, 0xF6, 0xC6, 0xB7, 0xCC, 0x8C, + 0xF6, 0xCA, 0x92, 0xCC, 0x8C, 0xF6, 0x6A, 0xCC, + 0x8C, 0x44, 0x5A, 0x44, 0x7A, 0x64, 0x7A, 0xF6, + 0x47, 0xCC, 0x81, 0xF6, 0x67, 0xCC, 0x81, 0xF6, + 0x4E, 0xCC, 0x80, 0xF6, 0x6E, 0xCC, 0x80, 0xF6, + 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0x61, 0xCC, + 0x8A, 0xCC, 0x81, 0xF6, 0xC3, 0x86, 0xCC, 0x81, + 0xF6, 0xC3, 0xA6, 0xCC, 0x81, 0xF6, 0xC3, 0x98, + 0xCC, 0x81, 0xF6, 0xC3, 0xB8, 0xCC, 0x81, 0xF6, + 0x41, 0xCC, 0x8F, 0xF6, 0x61, 0xCC, 0x8F, 0xF6, + 0x41, 0xCC, 0x91, 0xF6, 0x61, 0xCC, 0x91, 0xF6, + 0x45, 0xCC, 0x8F, 0xF6, 0x65, 0xCC, 0x8F, 0xF6, + 0x45, 0xCC, 0x91, 0xF6, 0x65, 0xCC, 0x91, 0xF6, + 0x49, 0xCC, 0x8F, 0xF6, 0x69, 0xCC, 0x8F, 0xF6, + 0x49, 0xCC, 0x91, 0xF6, 0x69, 0xCC, 0x91, 0xF6, + 0x4F, 0xCC, 0x8F, 0xF6, 0x6F, 0xCC, 0x8F, 0xF6, + 0x4F, 0xCC, 0x91, 0xF6, 0x6F, 0xCC, 0x91, 0xF6, + 0x52, 0xCC, 0x8F, 0xF6, 0x72, 0xCC, 0x8F, 0xF6, + 0x52, 0xCC, 0x91, 0xF6, 0x72, 0xCC, 0x91, 0xF6, + 0x55, 0xCC, 0x8F, 0xF6, 0x75, 0xCC, 0x8F, 0xF6, + 0x55, 0xCC, 0x91, 0xF6, 0x75, 0xCC, 0x91, 0xF6, + 0x53, 0xCC, 0xA6, 0xF6, 0x73, 0xCC, 0xA6, 0xF6, + 0x54, 0xCC, 0xA6, 0xF6, 0x74, 0xCC, 0xA6, 0xF6, + 0x48, 0xCC, 0x8C, 0xF6, 0x68, 0xCC, 0x8C, 0xF6, + 0x41, 0xCC, 0x87, 0xF6, 0x61, 0xCC, 0x87, 0xF6, + 0x45, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0xA7, 0xF6, + 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0x88, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, + 0x84, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, + 0x4F, 0xCC, 0x87, 0xF6, 0x6F, 0xCC, 0x87, 0xF6, + 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, + 0x87, 0xCC, 0x84, 0xF6, 0x59, 0xCC, 0x84, 0xF6, + 0x79, 0xCC, 0x84, 0x68, 0xC9, 0xA6, 0x6A, 0x72, + 0xC9, 0xB9, 0xC9, 0xBB, 0xCA, 0x81, 0x77, 0x79, + 0x20, 0xCC, 0x86, 0x20, 0xCC, 0x87, 0x20, 0xCC, + 0x8A, 0x20, 0xCC, 0xA8, 0x20, 0xCC, 0x83, 0x20, + 0xCC, 0x8B, 0xC9, 0xA3, 0x6C, 0x73, 0x78, 0xCA, + 0x95, 0xF6, 0xCC, 0x80, 0xF6, 0xCC, 0x81, 0xF6, + 0xCC, 0x93, 0xF6, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0xCA, 0xB9, 0x20, 0xCD, 0x85, 0xF6, 0x3B, 0x20, + 0xCC, 0x81, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, + 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x91, + 0xCC, 0x81, 0xF6, 0xC2, 0xB7, 0xF6, 0xCE, 0x95, + 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, + 0xCE, 0x99, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, + 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, + 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, + 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x88, 0xF6, + 0xCE, 0xA5, 0xCC, 0x88, 0xF6, 0xCE, 0xB1, 0xCC, + 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, + 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, + 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0xCE, 0xB9, 0xCC, 0x88, 0xF6, 0xCF, 0x85, 0xCC, + 0x88, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, + 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x81, + 0xCE, 0xB2, 0xCE, 0xB8, 0xCE, 0xA5, 0xF5, 0x05, + 0xCF, 0x92, 0xCC, 0x81, 0xCE, 0xA5, 0xCC, 0x81, + 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x88, 0xCE, 0xA5, + 0xCC, 0x88, 0xCF, 0x86, 0xCF, 0x80, 0xCE, 0xBA, + 0xCF, 0x81, 0xCF, 0x82, 0xCE, 0x98, 0xCE, 0xB5, + 0xCE, 0xA3, 0xF6, 0xD0, 0x95, 0xCC, 0x80, 0xF6, + 0xD0, 0x95, 0xCC, 0x88, 0xF6, 0xD0, 0x93, 0xCC, + 0x81, 0xF6, 0xD0, 0x86, 0xCC, 0x88, 0xF6, 0xD0, + 0x9A, 0xCC, 0x81, 0xF6, 0xD0, 0x98, 0xCC, 0x80, + 0xF6, 0xD0, 0xA3, 0xCC, 0x86, 0xF6, 0xD0, 0x98, + 0xCC, 0x86, 0xF6, 0xD0, 0xB8, 0xCC, 0x86, 0xF6, + 0xD0, 0xB5, 0xCC, 0x80, 0xF6, 0xD0, 0xB5, 0xCC, + 0x88, 0xF6, 0xD0, 0xB3, 0xCC, 0x81, 0xF6, 0xD1, + 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xBA, 0xCC, 0x81, + 0xF6, 0xD0, 0xB8, 0xCC, 0x80, 0xF6, 0xD1, 0x83, + 0xCC, 0x86, 0xF6, 0xD1, 0xB4, 0xCC, 0x8F, 0xF6, + 0xD1, 0xB5, 0xCC, 0x8F, 0xF6, 0xD0, 0x96, 0xCC, + 0x86, 0xF6, 0xD0, 0xB6, 0xCC, 0x86, 0xF6, 0xD0, + 0x90, 0xCC, 0x86, 0xF6, 0xD0, 0xB0, 0xCC, 0x86, + 0xF6, 0xD0, 0x90, 0xCC, 0x88, 0xF6, 0xD0, 0xB0, + 0xCC, 0x88, 0xF6, 0xD0, 0x95, 0xCC, 0x86, 0xF6, + 0xD0, 0xB5, 0xCC, 0x86, 0xF6, 0xD3, 0x98, 0xCC, + 0x88, 0xF6, 0xD3, 0x99, 0xCC, 0x88, 0xF6, 0xD0, + 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xB6, 0xCC, 0x88, + 0xF6, 0xD0, 0x97, 0xCC, 0x88, 0xF6, 0xD0, 0xB7, + 0xCC, 0x88, 0xF6, 0xD0, 0x98, 0xCC, 0x84, 0xF6, + 0xD0, 0xB8, 0xCC, 0x84, 0xF6, 0xD0, 0x98, 0xCC, + 0x88, 0xF6, 0xD0, 0xB8, 0xCC, 0x88, 0xF6, 0xD0, + 0x9E, 0xCC, 0x88, 0xF6, 0xD0, 0xBE, 0xCC, 0x88, + 0xF6, 0xD3, 0xA8, 0xCC, 0x88, 0xF6, 0xD3, 0xA9, + 0xCC, 0x88, 0xF6, 0xD0, 0xAD, 0xCC, 0x88, 0xF6, + 0xD1, 0x8D, 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, + 0x84, 0xF6, 0xD1, 0x83, 0xCC, 0x84, 0xF6, 0xD0, + 0xA3, 0xCC, 0x88, 0xF6, 0xD1, 0x83, 0xCC, 0x88, + 0xF6, 0xD0, 0xA3, 0xCC, 0x8B, 0xF6, 0xD1, 0x83, + 0xCC, 0x8B, 0xF6, 0xD0, 0xA7, 0xCC, 0x88, 0xF6, + 0xD1, 0x87, 0xCC, 0x88, 0xF6, 0xD0, 0xAB, 0xCC, + 0x88, 0xF6, 0xD1, 0x8B, 0xCC, 0x88, 0xD5, 0xA5, + 0xD6, 0x82, 0xF6, 0xD8, 0xA7, 0xD9, 0x93, 0xF6, + 0xD8, 0xA7, 0xD9, 0x94, 0xF6, 0xD9, 0x88, 0xD9, + 0x94, 0xF6, 0xD8, 0xA7, 0xD9, 0x95, 0xF6, 0xD9, + 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0xB4, 0xD9, + 0x88, 0xD9, 0xB4, 0xDB, 0x87, 0xD9, 0xB4, 0xD9, + 0x8A, 0xD9, 0xB4, 0xF6, 0xDB, 0x95, 0xD9, 0x94, + 0xF6, 0xDB, 0x81, 0xD9, 0x94, 0xF6, 0xDB, 0x92, + 0xD9, 0x94, 0xF6, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, + 0xBC, 0xF6, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, + 0xF6, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0xF6, + 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, + 0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, + 0x97, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x9C, + 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA1, 0xE0, + 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4, + 0xBC, 0xF6, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, + 0xF6, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0xF6, + 0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0xF6, 0xE0, + 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0xF6, 0xE0, 0xA6, + 0xA1, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xA2, + 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xAF, 0xE0, + 0xA6, 0xBC, 0xF6, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8, + 0xBC, 0xF6, 0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, + 0xF6, 0xE0, 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0xF6, + 0xE0, 0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, + 0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, + 0xAB, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xAD, 0x87, + 0xE0, 0xAD, 0x96, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, + 0xAC, 0xBE, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, + 0x97, 0xF6, 0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, + 0xF6, 0xE0, 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0xF6, + 0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, + 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, + 0x87, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x86, + 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xB1, 0x86, 0xE0, + 0xB1, 0x96, 0xF6, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, + 0x95, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, + 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0xF6, + 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xF6, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, + 0xF6, 0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0xF6, + 0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, + 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0xF6, 0xE0, 0xB7, + 0x99, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, + 0xE0, 0xB7, 0x8F, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, + 0x99, 0xE0, 0xB7, 0x9F, 0xE0, 0xB9, 0x8D, 0xE0, + 0xB8, 0xB2, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, + 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0xE0, 0xBA, + 0xAB, 0xE0, 0xBA, 0xA1, 0xE0, 0xBC, 0x8B, 0xF6, + 0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, + 0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, + 0x91, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x96, + 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x9B, 0xE0, + 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, + 0xB5, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, + 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xF6, + 0xE0, 0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, + 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, + 0xE0, 0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, + 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, + 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, + 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, + 0x9C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA1, + 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA6, 0xE0, + 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, + 0xB7, 0xF6, 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, + 0xF6, 0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0xE1, + 0x83, 0x9C, 0xF6, 0xE1, 0xAC, 0x85, 0xE1, 0xAC, + 0xB5, 0xF6, 0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5, + 0xF6, 0xE1, 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0xF6, + 0xE1, 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, + 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, + 0x91, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBA, + 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBC, 0xE1, + 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBE, 0xE1, 0xAC, + 0xB5, 0xF6, 0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, + 0xF6, 0xE1, 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x41, + 0xC3, 0x86, 0x42, 0x44, 0x45, 0xC6, 0x8E, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0xC8, 0xA2, 0x50, 0x52, 0x54, 0x55, 0x57, 0x61, + 0xC9, 0x90, 0xC9, 0x91, 0xE1, 0xB4, 0x82, 0x62, + 0x64, 0x65, 0xC9, 0x99, 0xC9, 0x9B, 0xC9, 0x9C, + 0x67, 0x6B, 0x6D, 0xC5, 0x8B, 0x6F, 0xC9, 0x94, + 0xE1, 0xB4, 0x96, 0xE1, 0xB4, 0x97, 0x70, 0x74, + 0x75, 0xE1, 0xB4, 0x9D, 0xC9, 0xAF, 0x76, 0xE1, + 0xB4, 0xA5, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, + 0xCF, 0x86, 0xCF, 0x87, 0x69, 0x72, 0x75, 0x76, + 0xCE, 0xB2, 0xCE, 0xB3, 0xCF, 0x81, 0xCF, 0x86, + 0xCF, 0x87, 0xD0, 0xBD, 0xC9, 0x92, 0x63, 0xC9, + 0x95, 0xC3, 0xB0, 0xC9, 0x9C, 0x66, 0xC9, 0x9F, + 0xC9, 0xA1, 0xC9, 0xA5, 0xC9, 0xA8, 0xC9, 0xA9, + 0xC9, 0xAA, 0xE1, 0xB5, 0xBB, 0xCA, 0x9D, 0xC9, + 0xAD, 0xE1, 0xB6, 0x85, 0xCA, 0x9F, 0xC9, 0xB1, + 0xC9, 0xB0, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB4, + 0xC9, 0xB5, 0xC9, 0xB8, 0xCA, 0x82, 0xCA, 0x83, + 0xC6, 0xAB, 0xCA, 0x89, 0xCA, 0x8A, 0xE1, 0xB4, + 0x9C, 0xCA, 0x8B, 0xCA, 0x8C, 0x7A, 0xCA, 0x90, + 0xCA, 0x91, 0xCA, 0x92, 0xCE, 0xB8, 0xF6, 0x41, + 0xCC, 0xA5, 0xF6, 0x61, 0xCC, 0xA5, 0xF6, 0x42, + 0xCC, 0x87, 0xF6, 0x62, 0xCC, 0x87, 0xF6, 0x42, + 0xCC, 0xA3, 0xF6, 0x62, 0xCC, 0xA3, 0xF6, 0x42, + 0xCC, 0xB1, 0xF6, 0x62, 0xCC, 0xB1, 0xF6, 0x43, + 0xCC, 0xA7, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0xA7, + 0xCC, 0x81, 0xF6, 0x44, 0xCC, 0x87, 0xF6, 0x64, + 0xCC, 0x87, 0xF6, 0x44, 0xCC, 0xA3, 0xF6, 0x64, + 0xCC, 0xA3, 0xF6, 0x44, 0xCC, 0xB1, 0xF6, 0x64, + 0xCC, 0xB1, 0xF6, 0x44, 0xCC, 0xA7, 0xF6, 0x64, + 0xCC, 0xA7, 0xF6, 0x44, 0xCC, 0xAD, 0xF6, 0x64, + 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x80, + 0xF6, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x45, + 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x84, + 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0xAD, 0xF6, 0x65, + 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0xB0, 0xF6, 0x65, + 0xCC, 0xB0, 0xF6, 0x45, 0xCC, 0xA7, 0xCC, 0x86, + 0xF6, 0x65, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x46, + 0xCC, 0x87, 0xF6, 0x66, 0xCC, 0x87, 0xF6, 0x47, + 0xCC, 0x84, 0xF6, 0x67, 0xCC, 0x84, 0xF6, 0x48, + 0xCC, 0x87, 0xF6, 0x68, 0xCC, 0x87, 0xF6, 0x48, + 0xCC, 0xA3, 0xF6, 0x68, 0xCC, 0xA3, 0xF6, 0x48, + 0xCC, 0x88, 0xF6, 0x68, 0xCC, 0x88, 0xF6, 0x48, + 0xCC, 0xA7, 0xF6, 0x68, 0xCC, 0xA7, 0xF6, 0x48, + 0xCC, 0xAE, 0xF6, 0x68, 0xCC, 0xAE, 0xF6, 0x49, + 0xCC, 0xB0, 0xF6, 0x69, 0xCC, 0xB0, 0xF6, 0x49, + 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x88, + 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0x81, 0xF6, 0x6B, + 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0xA3, 0xF6, 0x6B, + 0xCC, 0xA3, 0xF6, 0x4B, 0xCC, 0xB1, 0xF6, 0x6B, + 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, 0xA3, 0xF6, 0x6C, + 0xCC, 0xA3, 0xF6, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, + 0xF6, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x4C, + 0xCC, 0xB1, 0xF6, 0x6C, 0xCC, 0xB1, 0xF6, 0x4C, + 0xCC, 0xAD, 0xF6, 0x6C, 0xCC, 0xAD, 0xF6, 0x4D, + 0xCC, 0x81, 0xF6, 0x6D, 0xCC, 0x81, 0xF6, 0x4D, + 0xCC, 0x87, 0xF6, 0x6D, 0xCC, 0x87, 0xF6, 0x4D, + 0xCC, 0xA3, 0xF6, 0x6D, 0xCC, 0xA3, 0xF6, 0x4E, + 0xCC, 0x87, 0xF6, 0x6E, 0xCC, 0x87, 0xF6, 0x4E, + 0xCC, 0xA3, 0xF6, 0x6E, 0xCC, 0xA3, 0xF6, 0x4E, + 0xCC, 0xB1, 0xF6, 0x6E, 0xCC, 0xB1, 0xF6, 0x4E, + 0xCC, 0xAD, 0xF6, 0x6E, 0xCC, 0xAD, 0xF6, 0x4F, + 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x83, + 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x88, + 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x4F, + 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x84, + 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x81, + 0xF6, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x50, + 0xCC, 0x81, 0xF6, 0x70, 0xCC, 0x81, 0xF6, 0x50, + 0xCC, 0x87, 0xF6, 0x70, 0xCC, 0x87, 0xF6, 0x52, + 0xCC, 0x87, 0xF6, 0x72, 0xCC, 0x87, 0xF6, 0x52, + 0xCC, 0xA3, 0xF6, 0x72, 0xCC, 0xA3, 0xF6, 0x52, + 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x72, 0xCC, 0xA3, + 0xCC, 0x84, 0xF6, 0x52, 0xCC, 0xB1, 0xF6, 0x72, + 0xCC, 0xB1, 0xF6, 0x53, 0xCC, 0x87, 0xF6, 0x73, + 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xF6, 0x73, + 0xCC, 0xA3, 0xF6, 0x53, 0xCC, 0x81, 0xCC, 0x87, + 0xF6, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x53, + 0xCC, 0x8C, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x8C, + 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xCC, 0x87, + 0xF6, 0x73, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x54, + 0xCC, 0x87, 0xF6, 0x74, 0xCC, 0x87, 0xF6, 0x54, + 0xCC, 0xA3, 0xF6, 0x74, 0xCC, 0xA3, 0xF6, 0x54, + 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0xB1, 0xF6, 0x54, + 0xCC, 0xAD, 0xF6, 0x74, 0xCC, 0xAD, 0xF6, 0x55, + 0xCC, 0xA4, 0xF6, 0x75, 0xCC, 0xA4, 0xF6, 0x55, + 0xCC, 0xB0, 0xF6, 0x75, 0xCC, 0xB0, 0xF6, 0x55, + 0xCC, 0xAD, 0xF6, 0x75, 0xCC, 0xAD, 0xF6, 0x55, + 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x83, + 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x84, 0xCC, 0x88, + 0xF6, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x56, + 0xCC, 0x83, 0xF6, 0x76, 0xCC, 0x83, 0xF6, 0x56, + 0xCC, 0xA3, 0xF6, 0x76, 0xCC, 0xA3, 0xF6, 0x57, + 0xCC, 0x80, 0xF6, 0x77, 0xCC, 0x80, 0xF6, 0x57, + 0xCC, 0x81, 0xF6, 0x77, 0xCC, 0x81, 0xF6, 0x57, + 0xCC, 0x88, 0xF6, 0x77, 0xCC, 0x88, 0xF6, 0x57, + 0xCC, 0x87, 0xF6, 0x77, 0xCC, 0x87, 0xF6, 0x57, + 0xCC, 0xA3, 0xF6, 0x77, 0xCC, 0xA3, 0xF6, 0x58, + 0xCC, 0x87, 0xF6, 0x78, 0xCC, 0x87, 0xF6, 0x58, + 0xCC, 0x88, 0xF6, 0x78, 0xCC, 0x88, 0xF6, 0x59, + 0xCC, 0x87, 0xF6, 0x79, 0xCC, 0x87, 0xF6, 0x5A, + 0xCC, 0x82, 0xF6, 0x7A, 0xCC, 0x82, 0xF6, 0x5A, + 0xCC, 0xA3, 0xF6, 0x7A, 0xCC, 0xA3, 0xF6, 0x5A, + 0xCC, 0xB1, 0xF6, 0x7A, 0xCC, 0xB1, 0xF6, 0x68, + 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0x88, 0xF6, 0x77, + 0xCC, 0x8A, 0xF6, 0x79, 0xCC, 0x8A, 0x61, 0xCA, + 0xBE, 0xF5, 0x05, 0xC5, 0xBF, 0xCC, 0x87, 0x73, + 0xCC, 0x87, 0xF6, 0x41, 0xCC, 0xA3, 0xF6, 0x61, + 0xCC, 0xA3, 0xF6, 0x41, 0xCC, 0x89, 0xF6, 0x61, + 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x81, + 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x41, + 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x82, + 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x89, + 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x41, + 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x82, + 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x82, + 0xF6, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x41, + 0xCC, 0x86, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x86, + 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x80, + 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x41, + 0xCC, 0x86, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x86, + 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x83, + 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x41, + 0xCC, 0xA3, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0xA3, + 0xCC, 0x86, 0xF6, 0x45, 0xCC, 0xA3, 0xF6, 0x65, + 0xCC, 0xA3, 0xF6, 0x45, 0xCC, 0x89, 0xF6, 0x65, + 0xCC, 0x89, 0xF6, 0x45, 0xCC, 0x83, 0xF6, 0x65, + 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x81, + 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x45, + 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x82, + 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x89, + 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x45, + 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x82, + 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0xA3, 0xCC, 0x82, + 0xF6, 0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x49, + 0xCC, 0x89, 0xF6, 0x69, 0xCC, 0x89, 0xF6, 0x49, + 0xCC, 0xA3, 0xF6, 0x69, 0xCC, 0xA3, 0xF6, 0x4F, + 0xCC, 0xA3, 0xF6, 0x6F, 0xCC, 0xA3, 0xF6, 0x4F, + 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x89, 0xF6, 0x4F, + 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, + 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x80, + 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x4F, + 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x82, + 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x83, + 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x4F, + 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0xA3, + 0xCC, 0x82, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, + 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x4F, + 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x9B, + 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x89, + 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x4F, + 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x9B, + 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, + 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x55, + 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0xA3, 0xF6, 0x55, + 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x89, 0xF6, 0x55, + 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x9B, + 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x80, + 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x55, + 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x9B, + 0xCC, 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x83, + 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x55, + 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0x9B, + 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x80, 0xF6, 0x79, + 0xCC, 0x80, 0xF6, 0x59, 0xCC, 0xA3, 0xF6, 0x79, + 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x89, 0xF6, 0x79, + 0xCC, 0x89, 0xF6, 0x59, 0xCC, 0x83, 0xF6, 0x79, + 0xCC, 0x83, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xF6, + 0xCE, 0xB1, 0xCC, 0x94, 0xF6, 0xCE, 0xB1, 0xCC, + 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, + 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xF6, + 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, + 0x91, 0xCC, 0x93, 0xF6, 0xCE, 0x91, 0xCC, 0x94, + 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xF6, + 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, + 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x91, + 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, + 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x94, + 0xCD, 0x82, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xF6, + 0xCE, 0xB5, 0xCC, 0x94, 0xF6, 0xCE, 0xB5, 0xCC, + 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, + 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xF6, 0xCE, 0x95, + 0xCC, 0x94, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, + 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, + 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xF6, + 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, + 0xB7, 0xCC, 0x93, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, + 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xF6, + 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, + 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, + 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, + 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, + 0xCD, 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xF6, + 0xCE, 0x97, 0xCC, 0x94, 0xF6, 0xCE, 0x97, 0xCC, + 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, + 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xF6, + 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, + 0xB9, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, + 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, + 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, + 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, + 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, + 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, + 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xF6, + 0xCE, 0x99, 0xCC, 0x94, 0xF6, 0xCE, 0x99, 0xCC, + 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, + 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xF6, + 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, + 0xBF, 0xCC, 0x93, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, + 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xF6, + 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, + 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, + 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, + 0x93, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xF6, 0xCE, + 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, + 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, + 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, + 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xF6, + 0xCF, 0x85, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCC, + 0x93, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, + 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, + 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xF6, + 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, + 0xA5, 0xCC, 0x94, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, + 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, + 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, + 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xF6, 0xCF, 0x89, + 0xCC, 0x94, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, + 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, + 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xF6, + 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, + 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x89, + 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, + 0x93, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xF6, 0xCE, + 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, + 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, + 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, + 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, + 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, + 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, + 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x80, 0xF6, + 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, + 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, + 0xB9, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, + 0xF6, 0xCE, 0xBF, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, + 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x80, 0xF6, + 0xCF, 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, + 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xF6, 0xCE, + 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, + 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, + 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, + 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, + 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, + 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, + 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, + 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, + 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, + 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, + 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, + 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, + 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, + 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, + 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCF, 0x89, + 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, + 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, + 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, + 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, + 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, + 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, + 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, + 0xB1, 0xCC, 0x86, 0xF6, 0xCE, 0xB1, 0xCC, 0x84, + 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xF6, + 0xCE, 0xB1, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, + 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, + 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xF6, + 0xCE, 0x91, 0xCC, 0x86, 0xF6, 0xCE, 0x91, 0xCC, + 0x84, 0xF6, 0xCE, 0x91, 0xCC, 0x80, 0xF6, 0xCE, + 0x91, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCD, 0x85, + 0x20, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0x20, 0xCC, + 0x93, 0x20, 0xCD, 0x82, 0xF5, 0x05, 0xC2, 0xA8, + 0xCD, 0x82, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xF6, + 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, + 0xB7, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, + 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xF6, + 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, + 0x95, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x81, + 0xF6, 0xCE, 0x97, 0xCC, 0x80, 0xF6, 0xCE, 0x97, + 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCD, 0x85, 0xF5, + 0x06, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0x20, 0xCC, + 0x93, 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, + 0xCC, 0x81, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xF5, + 0x06, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0x20, 0xCC, + 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x86, + 0xF6, 0xCE, 0xB9, 0xCC, 0x84, 0xF6, 0xCE, 0xB9, + 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, + 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCD, 0x82, + 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xF6, + 0xCE, 0x99, 0xCC, 0x86, 0xF6, 0xCE, 0x99, 0xCC, + 0x84, 0xF6, 0xCE, 0x99, 0xCC, 0x80, 0xF6, 0xCE, + 0x99, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, + 0xCC, 0x80, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xF5, + 0x06, 0xE1, 0xBF, 0xBE, 0xCC, 0x81, 0x20, 0xCC, + 0x94, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, + 0xCD, 0x82, 0x20, 0xCC, 0x94, 0xCD, 0x82, 0xF6, + 0xCF, 0x85, 0xCC, 0x86, 0xF6, 0xCF, 0x85, 0xCC, + 0x84, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, + 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, + 0xCF, 0x81, 0xCC, 0x93, 0xF6, 0xCF, 0x81, 0xCC, + 0x94, 0xF6, 0xCF, 0x85, 0xCD, 0x82, 0xF6, 0xCF, + 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, + 0xCC, 0x86, 0xF6, 0xCE, 0xA5, 0xCC, 0x84, 0xF6, + 0xCE, 0xA5, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, + 0x81, 0xF6, 0xCE, 0xA1, 0xCC, 0x94, 0xF5, 0x05, + 0xC2, 0xA8, 0xCC, 0x80, 0x20, 0xCC, 0x88, 0xCC, + 0x80, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, + 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x60, 0xF6, 0xCF, + 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, + 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCD, + 0x85, 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xF6, 0xCF, + 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x9F, + 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, + 0xCE, 0xA9, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, + 0x81, 0xF6, 0xCE, 0xA9, 0xCD, 0x85, 0xF5, 0x03, + 0xC2, 0xB4, 0x20, 0xCC, 0x81, 0x20, 0xCC, 0x94, + 0xF5, 0x04, 0xE2, 0x80, 0x82, 0x20, 0xF5, 0x04, + 0xE2, 0x80, 0x83, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0xE2, 0x80, 0x90, + 0x20, 0xCC, 0xB3, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, + 0x2E, 0x20, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, + 0xB2, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, + 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, + 0x21, 0x21, 0x20, 0xCC, 0x85, 0x3F, 0x3F, 0x3F, + 0x21, 0x21, 0x3F, 0xE2, 0x80, 0xB2, 0xE2, 0x80, + 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x20, + 0x30, 0x69, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x6E, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, + 0x29, 0x61, 0x65, 0x6F, 0x78, 0xC9, 0x99, 0x52, + 0x73, 0x61, 0x2F, 0x63, 0x61, 0x2F, 0x73, 0x43, + 0xC2, 0xB0, 0x43, 0x63, 0x2F, 0x6F, 0x63, 0x2F, + 0x75, 0xC6, 0x90, 0xC2, 0xB0, 0x46, 0x67, 0x48, + 0x48, 0x48, 0x68, 0xC4, 0xA7, 0x49, 0x49, 0x4C, + 0x6C, 0x4E, 0x4E, 0x6F, 0x50, 0x51, 0x52, 0x52, + 0x52, 0x53, 0x4D, 0x54, 0x45, 0x4C, 0x54, 0x4D, + 0x5A, 0xF6, 0xCE, 0xA9, 0x5A, 0xF6, 0x4B, 0xF6, + 0x41, 0xCC, 0x8A, 0x42, 0x43, 0x65, 0x45, 0x46, + 0x4D, 0x6F, 0xD7, 0x90, 0xD7, 0x91, 0xD7, 0x92, + 0xD7, 0x93, 0x69, 0x46, 0x41, 0x58, 0xCF, 0x80, + 0xCE, 0xB3, 0xCE, 0x93, 0xCE, 0xA0, 0xE2, 0x88, + 0x91, 0x44, 0x64, 0x65, 0x69, 0x6A, 0x31, 0xE2, + 0x81, 0x84, 0x33, 0x32, 0xE2, 0x81, 0x84, 0x33, + 0x31, 0xE2, 0x81, 0x84, 0x35, 0x32, 0xE2, 0x81, + 0x84, 0x35, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x34, + 0xE2, 0x81, 0x84, 0x35, 0x31, 0xE2, 0x81, 0x84, + 0x36, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x31, 0xE2, + 0x81, 0x84, 0x38, 0x33, 0xE2, 0x81, 0x84, 0x38, + 0x35, 0xE2, 0x81, 0x84, 0x38, 0x37, 0xE2, 0x81, + 0x84, 0x38, 0x31, 0xE2, 0x81, 0x84, 0x49, 0x49, + 0x49, 0x49, 0x49, 0x49, 0x49, 0x56, 0x56, 0x56, + 0x49, 0x56, 0x49, 0x49, 0x56, 0x49, 0x49, 0x49, + 0x49, 0x58, 0x58, 0x58, 0x49, 0x58, 0x49, 0x49, + 0x4C, 0x43, 0x44, 0x4D, 0x69, 0x69, 0x69, 0x69, + 0x69, 0x69, 0x69, 0x76, 0x76, 0x76, 0x69, 0x76, + 0x69, 0x69, 0x76, 0x69, 0x69, 0x69, 0x69, 0x78, + 0x78, 0x78, 0x69, 0x78, 0x69, 0x69, 0x6C, 0x63, + 0x64, 0x6D, 0xF6, 0xE2, 0x86, 0x90, 0xCC, 0xB8, + 0xF6, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, + 0x86, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x90, + 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x94, 0xCC, 0xB8, + 0xF6, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, + 0x88, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x88, + 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, + 0xF6, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0xF6, 0xE2, + 0x88, 0xA5, 0xCC, 0xB8, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAE, 0xE2, 0x88, + 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, + 0x88, 0xAE, 0xF6, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0x85, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x88, + 0xCC, 0xB8, 0xF6, 0x3D, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xA1, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x8D, + 0xCC, 0xB8, 0xF6, 0x3C, 0xCC, 0xB8, 0xF6, 0x3E, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB3, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB6, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0xB7, 0xCC, 0xB8, 0xF6, 0xE2, + 0x89, 0xBA, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBB, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0x86, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x87, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0xA9, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xAB, + 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, + 0xF6, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0x91, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x92, + 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB2, 0xCC, 0xB8, + 0xF6, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, + 0x8A, 0xB4, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB5, + 0xCC, 0xB8, 0xF6, 0xE3, 0x80, 0x88, 0xF6, 0xE3, + 0x80, 0x89, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, + 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, + 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, + 0x30, 0x28, 0x31, 0x29, 0x28, 0x32, 0x29, 0x28, + 0x33, 0x29, 0x28, 0x34, 0x29, 0x28, 0x35, 0x29, + 0x28, 0x36, 0x29, 0x28, 0x37, 0x29, 0x28, 0x38, + 0x29, 0x28, 0x39, 0x29, 0x28, 0x31, 0x30, 0x29, + 0x28, 0x31, 0x31, 0x29, 0x28, 0x31, 0x32, 0x29, + 0x28, 0x31, 0x33, 0x29, 0x28, 0x31, 0x34, 0x29, + 0x28, 0x31, 0x35, 0x29, 0x28, 0x31, 0x36, 0x29, + 0x28, 0x31, 0x37, 0x29, 0x28, 0x31, 0x38, 0x29, + 0x28, 0x31, 0x39, 0x29, 0x28, 0x32, 0x30, 0x29, + 0x31, 0x2E, 0x32, 0x2E, 0x33, 0x2E, 0x34, 0x2E, + 0x35, 0x2E, 0x36, 0x2E, 0x37, 0x2E, 0x38, 0x2E, + 0x39, 0x2E, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x2E, + 0x31, 0x32, 0x2E, 0x31, 0x33, 0x2E, 0x31, 0x34, + 0x2E, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x2E, 0x31, + 0x37, 0x2E, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x2E, + 0x32, 0x30, 0x2E, 0x28, 0x61, 0x29, 0x28, 0x62, + 0x29, 0x28, 0x63, 0x29, 0x28, 0x64, 0x29, 0x28, + 0x65, 0x29, 0x28, 0x66, 0x29, 0x28, 0x67, 0x29, + 0x28, 0x68, 0x29, 0x28, 0x69, 0x29, 0x28, 0x6A, + 0x29, 0x28, 0x6B, 0x29, 0x28, 0x6C, 0x29, 0x28, + 0x6D, 0x29, 0x28, 0x6E, 0x29, 0x28, 0x6F, 0x29, + 0x28, 0x70, 0x29, 0x28, 0x71, 0x29, 0x28, 0x72, + 0x29, 0x28, 0x73, 0x29, 0x28, 0x74, 0x29, 0x28, + 0x75, 0x29, 0x28, 0x76, 0x29, 0x28, 0x77, 0x29, + 0x28, 0x78, 0x29, 0x28, 0x79, 0x29, 0x28, 0x7A, + 0x29, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0xE2, 0x88, + 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAB, 0x3A, 0x3A, 0x3D, 0x3D, 0x3D, 0x3D, + 0x3D, 0x3D, 0xF6, 0xE2, 0xAB, 0x9D, 0xCC, 0xB8, + 0xE2, 0xB5, 0xA1, 0xE6, 0xAF, 0x8D, 0xE9, 0xBE, + 0x9F, 0xE4, 0xB8, 0x80, 0xE4, 0xB8, 0xA8, 0xE4, + 0xB8, 0xB6, 0xE4, 0xB8, 0xBF, 0xE4, 0xB9, 0x99, + 0xE4, 0xBA, 0x85, 0xE4, 0xBA, 0x8C, 0xE4, 0xBA, + 0xA0, 0xE4, 0xBA, 0xBA, 0xE5, 0x84, 0xBF, 0xE5, + 0x85, 0xA5, 0xE5, 0x85, 0xAB, 0xE5, 0x86, 0x82, + 0xE5, 0x86, 0x96, 0xE5, 0x86, 0xAB, 0xE5, 0x87, + 0xA0, 0xE5, 0x87, 0xB5, 0xE5, 0x88, 0x80, 0xE5, + 0x8A, 0x9B, 0xE5, 0x8B, 0xB9, 0xE5, 0x8C, 0x95, + 0xE5, 0x8C, 0x9A, 0xE5, 0x8C, 0xB8, 0xE5, 0x8D, + 0x81, 0xE5, 0x8D, 0x9C, 0xE5, 0x8D, 0xA9, 0xE5, + 0x8E, 0x82, 0xE5, 0x8E, 0xB6, 0xE5, 0x8F, 0x88, + 0xE5, 0x8F, 0xA3, 0xE5, 0x9B, 0x97, 0xE5, 0x9C, + 0x9F, 0xE5, 0xA3, 0xAB, 0xE5, 0xA4, 0x82, 0xE5, + 0xA4, 0x8A, 0xE5, 0xA4, 0x95, 0xE5, 0xA4, 0xA7, + 0xE5, 0xA5, 0xB3, 0xE5, 0xAD, 0x90, 0xE5, 0xAE, + 0x80, 0xE5, 0xAF, 0xB8, 0xE5, 0xB0, 0x8F, 0xE5, + 0xB0, 0xA2, 0xE5, 0xB0, 0xB8, 0xE5, 0xB1, 0xAE, + 0xE5, 0xB1, 0xB1, 0xE5, 0xB7, 0x9B, 0xE5, 0xB7, + 0xA5, 0xE5, 0xB7, 0xB1, 0xE5, 0xB7, 0xBE, 0xE5, + 0xB9, 0xB2, 0xE5, 0xB9, 0xBA, 0xE5, 0xB9, 0xBF, + 0xE5, 0xBB, 0xB4, 0xE5, 0xBB, 0xBE, 0xE5, 0xBC, + 0x8B, 0xE5, 0xBC, 0x93, 0xE5, 0xBD, 0x90, 0xE5, + 0xBD, 0xA1, 0xE5, 0xBD, 0xB3, 0xE5, 0xBF, 0x83, + 0xE6, 0x88, 0x88, 0xE6, 0x88, 0xB6, 0xE6, 0x89, + 0x8B, 0xE6, 0x94, 0xAF, 0xE6, 0x94, 0xB4, 0xE6, + 0x96, 0x87, 0xE6, 0x96, 0x97, 0xE6, 0x96, 0xA4, + 0xE6, 0x96, 0xB9, 0xE6, 0x97, 0xA0, 0xE6, 0x97, + 0xA5, 0xE6, 0x9B, 0xB0, 0xE6, 0x9C, 0x88, 0xE6, + 0x9C, 0xA8, 0xE6, 0xAC, 0xA0, 0xE6, 0xAD, 0xA2, + 0xE6, 0xAD, 0xB9, 0xE6, 0xAE, 0xB3, 0xE6, 0xAF, + 0x8B, 0xE6, 0xAF, 0x94, 0xE6, 0xAF, 0x9B, 0xE6, + 0xB0, 0x8F, 0xE6, 0xB0, 0x94, 0xE6, 0xB0, 0xB4, + 0xE7, 0x81, 0xAB, 0xE7, 0x88, 0xAA, 0xE7, 0x88, + 0xB6, 0xE7, 0x88, 0xBB, 0xE7, 0x88, 0xBF, 0xE7, + 0x89, 0x87, 0xE7, 0x89, 0x99, 0xE7, 0x89, 0x9B, + 0xE7, 0x8A, 0xAC, 0xE7, 0x8E, 0x84, 0xE7, 0x8E, + 0x89, 0xE7, 0x93, 0x9C, 0xE7, 0x93, 0xA6, 0xE7, + 0x94, 0x98, 0xE7, 0x94, 0x9F, 0xE7, 0x94, 0xA8, + 0xE7, 0x94, 0xB0, 0xE7, 0x96, 0x8B, 0xE7, 0x96, + 0x92, 0xE7, 0x99, 0xB6, 0xE7, 0x99, 0xBD, 0xE7, + 0x9A, 0xAE, 0xE7, 0x9A, 0xBF, 0xE7, 0x9B, 0xAE, + 0xE7, 0x9F, 0x9B, 0xE7, 0x9F, 0xA2, 0xE7, 0x9F, + 0xB3, 0xE7, 0xA4, 0xBA, 0xE7, 0xA6, 0xB8, 0xE7, + 0xA6, 0xBE, 0xE7, 0xA9, 0xB4, 0xE7, 0xAB, 0x8B, + 0xE7, 0xAB, 0xB9, 0xE7, 0xB1, 0xB3, 0xE7, 0xB3, + 0xB8, 0xE7, 0xBC, 0xB6, 0xE7, 0xBD, 0x91, 0xE7, + 0xBE, 0x8A, 0xE7, 0xBE, 0xBD, 0xE8, 0x80, 0x81, + 0xE8, 0x80, 0x8C, 0xE8, 0x80, 0x92, 0xE8, 0x80, + 0xB3, 0xE8, 0x81, 0xBF, 0xE8, 0x82, 0x89, 0xE8, + 0x87, 0xA3, 0xE8, 0x87, 0xAA, 0xE8, 0x87, 0xB3, + 0xE8, 0x87, 0xBC, 0xE8, 0x88, 0x8C, 0xE8, 0x88, + 0x9B, 0xE8, 0x88, 0x9F, 0xE8, 0x89, 0xAE, 0xE8, + 0x89, 0xB2, 0xE8, 0x89, 0xB8, 0xE8, 0x99, 0x8D, + 0xE8, 0x99, 0xAB, 0xE8, 0xA1, 0x80, 0xE8, 0xA1, + 0x8C, 0xE8, 0xA1, 0xA3, 0xE8, 0xA5, 0xBE, 0xE8, + 0xA6, 0x8B, 0xE8, 0xA7, 0x92, 0xE8, 0xA8, 0x80, + 0xE8, 0xB0, 0xB7, 0xE8, 0xB1, 0x86, 0xE8, 0xB1, + 0x95, 0xE8, 0xB1, 0xB8, 0xE8, 0xB2, 0x9D, 0xE8, + 0xB5, 0xA4, 0xE8, 0xB5, 0xB0, 0xE8, 0xB6, 0xB3, + 0xE8, 0xBA, 0xAB, 0xE8, 0xBB, 0x8A, 0xE8, 0xBE, + 0x9B, 0xE8, 0xBE, 0xB0, 0xE8, 0xBE, 0xB5, 0xE9, + 0x82, 0x91, 0xE9, 0x85, 0x89, 0xE9, 0x87, 0x86, + 0xE9, 0x87, 0x8C, 0xE9, 0x87, 0x91, 0xE9, 0x95, + 0xB7, 0xE9, 0x96, 0x80, 0xE9, 0x98, 0x9C, 0xE9, + 0x9A, 0xB6, 0xE9, 0x9A, 0xB9, 0xE9, 0x9B, 0xA8, + 0xE9, 0x9D, 0x91, 0xE9, 0x9D, 0x9E, 0xE9, 0x9D, + 0xA2, 0xE9, 0x9D, 0xA9, 0xE9, 0x9F, 0x8B, 0xE9, + 0x9F, 0xAD, 0xE9, 0x9F, 0xB3, 0xE9, 0xA0, 0x81, + 0xE9, 0xA2, 0xA8, 0xE9, 0xA3, 0x9B, 0xE9, 0xA3, + 0x9F, 0xE9, 0xA6, 0x96, 0xE9, 0xA6, 0x99, 0xE9, + 0xA6, 0xAC, 0xE9, 0xAA, 0xA8, 0xE9, 0xAB, 0x98, + 0xE9, 0xAB, 0x9F, 0xE9, 0xAC, 0xA5, 0xE9, 0xAC, + 0xAF, 0xE9, 0xAC, 0xB2, 0xE9, 0xAC, 0xBC, 0xE9, + 0xAD, 0x9A, 0xE9, 0xB3, 0xA5, 0xE9, 0xB9, 0xB5, + 0xE9, 0xB9, 0xBF, 0xE9, 0xBA, 0xA5, 0xE9, 0xBA, + 0xBB, 0xE9, 0xBB, 0x83, 0xE9, 0xBB, 0x8D, 0xE9, + 0xBB, 0x91, 0xE9, 0xBB, 0xB9, 0xE9, 0xBB, 0xBD, + 0xE9, 0xBC, 0x8E, 0xE9, 0xBC, 0x93, 0xE9, 0xBC, + 0xA0, 0xE9, 0xBC, 0xBB, 0xE9, 0xBD, 0x8A, 0xE9, + 0xBD, 0x92, 0xE9, 0xBE, 0x8D, 0xE9, 0xBE, 0x9C, + 0xE9, 0xBE, 0xA0, 0x20, 0xE3, 0x80, 0x92, 0xE5, + 0x8D, 0x81, 0xE5, 0x8D, 0x84, 0xE5, 0x8D, 0x85, + 0xF6, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x81, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, + 0x91, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x93, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x95, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x97, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x81, 0x9F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, + 0xA1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA4, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA6, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA8, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0xF6, + 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, + 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB5, + 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, 0x82, + 0x9A, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0xF6, + 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x20, 0xE3, + 0x82, 0x99, 0x20, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, + 0x82, 0x9D, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0x88, + 0xE3, 0x82, 0x8A, 0xF6, 0xE3, 0x82, 0xAB, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAD, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x82, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, + 0xB7, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB9, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBB, 0xE3, + 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBD, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x83, 0x86, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, + 0x88, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, 0xE3, + 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, + 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x9B, 0xE3, + 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0xA6, 0xE3, 0x82, + 0x99, 0xF6, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, + 0xF6, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0xF6, + 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, + 0x83, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, + 0xBD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB3, 0xE3, + 0x83, 0x88, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x81, + 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, 0x86, + 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, 0xE1, + 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, 0xB0, + 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, 0x86, + 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, 0xE1, + 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, + 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, 0x84, + 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, 0xE1, + 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, 0x8E, + 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, + 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, + 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, 0xA4, + 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, 0x85, + 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, 0xE1, + 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, 0xAC, + 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, 0x85, + 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, 0xE1, + 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, 0xB4, + 0xE1, 0x85, 0xB5, 0xE1, 0x85, 0xA0, 0xE1, 0x84, + 0x94, 0xE1, 0x84, 0x95, 0xE1, 0x87, 0x87, 0xE1, + 0x87, 0x88, 0xE1, 0x87, 0x8C, 0xE1, 0x87, 0x8E, + 0xE1, 0x87, 0x93, 0xE1, 0x87, 0x97, 0xE1, 0x87, + 0x99, 0xE1, 0x84, 0x9C, 0xE1, 0x87, 0x9D, 0xE1, + 0x87, 0x9F, 0xE1, 0x84, 0x9D, 0xE1, 0x84, 0x9E, + 0xE1, 0x84, 0xA0, 0xE1, 0x84, 0xA2, 0xE1, 0x84, + 0xA3, 0xE1, 0x84, 0xA7, 0xE1, 0x84, 0xA9, 0xE1, + 0x84, 0xAB, 0xE1, 0x84, 0xAC, 0xE1, 0x84, 0xAD, + 0xE1, 0x84, 0xAE, 0xE1, 0x84, 0xAF, 0xE1, 0x84, + 0xB2, 0xE1, 0x84, 0xB6, 0xE1, 0x85, 0x80, 0xE1, + 0x85, 0x87, 0xE1, 0x85, 0x8C, 0xE1, 0x87, 0xB1, + 0xE1, 0x87, 0xB2, 0xE1, 0x85, 0x97, 0xE1, 0x85, + 0x98, 0xE1, 0x85, 0x99, 0xE1, 0x86, 0x84, 0xE1, + 0x86, 0x85, 0xE1, 0x86, 0x88, 0xE1, 0x86, 0x91, + 0xE1, 0x86, 0x92, 0xE1, 0x86, 0x94, 0xE1, 0x86, + 0x9E, 0xE1, 0x86, 0xA1, 0xE4, 0xB8, 0x80, 0xE4, + 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, 0x9B, + 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, 0xB8, + 0x8B, 0xE7, 0x94, 0xB2, 0xE4, 0xB9, 0x99, 0xE4, + 0xB8, 0x99, 0xE4, 0xB8, 0x81, 0xE5, 0xA4, 0xA9, + 0xE5, 0x9C, 0xB0, 0xE4, 0xBA, 0xBA, 0x28, 0xE1, + 0x84, 0x80, 0x29, 0x28, 0xE1, 0x84, 0x82, 0x29, + 0x28, 0xE1, 0x84, 0x83, 0x29, 0x28, 0xE1, 0x84, + 0x85, 0x29, 0x28, 0xE1, 0x84, 0x86, 0x29, 0x28, + 0xE1, 0x84, 0x87, 0x29, 0x28, 0xE1, 0x84, 0x89, + 0x29, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x28, 0xE1, + 0x84, 0x8C, 0x29, 0x28, 0xE1, 0x84, 0x8E, 0x29, + 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x28, 0xE1, 0x84, + 0x90, 0x29, 0x28, 0xE1, 0x84, 0x91, 0x29, 0x28, + 0xE1, 0x84, 0x92, 0x29, 0x28, 0xE1, 0x84, 0x80, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x82, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x83, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x85, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x86, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x87, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x89, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8B, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8E, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8F, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x90, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x91, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x92, + 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, + 0xE1, 0x85, 0xAE, 0x29, 0x28, 0xE1, 0x84, 0x8B, + 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, + 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x28, 0xE1, 0x84, + 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, + 0x85, 0xAE, 0x29, 0x28, 0xE4, 0xB8, 0x80, 0x29, + 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x28, 0xE4, 0xB8, + 0x89, 0x29, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x28, + 0xE4, 0xBA, 0x94, 0x29, 0x28, 0xE5, 0x85, 0xAD, + 0x29, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x28, 0xE5, + 0x85, 0xAB, 0x29, 0x28, 0xE4, 0xB9, 0x9D, 0x29, + 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x28, 0xE6, 0x9C, + 0x88, 0x29, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x28, + 0xE6, 0xB0, 0xB4, 0x29, 0x28, 0xE6, 0x9C, 0xA8, + 0x29, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x28, 0xE5, + 0x9C, 0x9F, 0x29, 0x28, 0xE6, 0x97, 0xA5, 0x29, + 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x28, 0xE6, 0x9C, + 0x89, 0x29, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x28, + 0xE5, 0x90, 0x8D, 0x29, 0x28, 0xE7, 0x89, 0xB9, + 0x29, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x28, 0xE7, + 0xA5, 0x9D, 0x29, 0x28, 0xE5, 0x8A, 0xB4, 0x29, + 0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x28, 0xE5, 0x91, + 0xBC, 0x29, 0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x28, + 0xE7, 0x9B, 0xA3, 0x29, 0x28, 0xE4, 0xBC, 0x81, + 0x29, 0x28, 0xE8, 0xB3, 0x87, 0x29, 0x28, 0xE5, + 0x8D, 0x94, 0x29, 0x28, 0xE7, 0xA5, 0xAD, 0x29, + 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x28, 0xE8, 0x87, + 0xAA, 0x29, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x50, + 0x54, 0x45, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, + 0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, + 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, + 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, + 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x82, 0xE1, 0x84, + 0x83, 0xE1, 0x84, 0x85, 0xE1, 0x84, 0x86, 0xE1, + 0x84, 0x87, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8B, + 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8E, 0xE1, 0x84, + 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, + 0x84, 0x92, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, + 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0xE1, 0x84, + 0x83, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x85, 0xE1, + 0x85, 0xA1, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, + 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0xE1, 0x84, + 0x89, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8B, 0xE1, + 0x85, 0xA1, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, + 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x84, + 0x8F, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x90, 0xE1, + 0x85, 0xA1, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, + 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x84, + 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, + 0x84, 0x80, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, + 0xE1, 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, + 0xB4, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0xE4, + 0xB8, 0x80, 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, + 0xE5, 0x9B, 0x9B, 0xE4, 0xBA, 0x94, 0xE5, 0x85, + 0xAD, 0xE4, 0xB8, 0x83, 0xE5, 0x85, 0xAB, 0xE4, + 0xB9, 0x9D, 0xE5, 0x8D, 0x81, 0xE6, 0x9C, 0x88, + 0xE7, 0x81, 0xAB, 0xE6, 0xB0, 0xB4, 0xE6, 0x9C, + 0xA8, 0xE9, 0x87, 0x91, 0xE5, 0x9C, 0x9F, 0xE6, + 0x97, 0xA5, 0xE6, 0xA0, 0xAA, 0xE6, 0x9C, 0x89, + 0xE7, 0xA4, 0xBE, 0xE5, 0x90, 0x8D, 0xE7, 0x89, + 0xB9, 0xE8, 0xB2, 0xA1, 0xE7, 0xA5, 0x9D, 0xE5, + 0x8A, 0xB4, 0xE7, 0xA7, 0x98, 0xE7, 0x94, 0xB7, + 0xE5, 0xA5, 0xB3, 0xE9, 0x81, 0xA9, 0xE5, 0x84, + 0xAA, 0xE5, 0x8D, 0xB0, 0xE6, 0xB3, 0xA8, 0xE9, + 0xA0, 0x85, 0xE4, 0xBC, 0x91, 0xE5, 0x86, 0x99, + 0xE6, 0xAD, 0xA3, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, + 0xAD, 0xE4, 0xB8, 0x8B, 0xE5, 0xB7, 0xA6, 0xE5, + 0x8F, 0xB3, 0xE5, 0x8C, 0xBB, 0xE5, 0xAE, 0x97, + 0xE5, 0xAD, 0xA6, 0xE7, 0x9B, 0xA3, 0xE4, 0xBC, + 0x81, 0xE8, 0xB3, 0x87, 0xE5, 0x8D, 0x94, 0xE5, + 0xA4, 0x9C, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, + 0x33, 0x39, 0x34, 0x30, 0x34, 0x31, 0x34, 0x32, + 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, + 0x34, 0x37, 0x34, 0x38, 0x34, 0x39, 0x35, 0x30, + 0x31, 0xE6, 0x9C, 0x88, 0x32, 0xE6, 0x9C, 0x88, + 0x33, 0xE6, 0x9C, 0x88, 0x34, 0xE6, 0x9C, 0x88, + 0x35, 0xE6, 0x9C, 0x88, 0x36, 0xE6, 0x9C, 0x88, + 0x37, 0xE6, 0x9C, 0x88, 0x38, 0xE6, 0x9C, 0x88, + 0x39, 0xE6, 0x9C, 0x88, 0x31, 0x30, 0xE6, 0x9C, + 0x88, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x31, 0x32, + 0xE6, 0x9C, 0x88, 0x48, 0x67, 0x65, 0x72, 0x67, + 0x65, 0x56, 0x4C, 0x54, 0x44, 0xE3, 0x82, 0xA2, + 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, 0x82, + 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xB1, + 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, 0x82, + 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, 0xE3, + 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x81, + 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, 0xE3, + 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, 0x8E, + 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, 0x83, + 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, 0xE3, + 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xA0, + 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, 0x83, + 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, 0x83, + 0xAF, 0xE3, 0x83, 0xB0, 0xE3, 0x83, 0xB1, 0xE3, + 0x83, 0xB2, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x88, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA2, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xA4, + 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xA6, + 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, + 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAA, 0xE3, + 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAA, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, 0x82, + 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA, 0xE3, + 0x82, 0xAB, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xAB, 0xE3, 0x83, + 0xAD, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAD, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xAA, + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAD, 0xE3, 0x83, + 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, + 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xA0, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, + 0x83, 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0x8D, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xB3, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x8A, 0xE3, 0x82, 0xB3, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, + 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xB5, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xB7, 0xE3, 0x83, + 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, + 0x82, 0x99, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xBB, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xBF, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, + 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xE3, 0x82, + 0xB7, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0xE3, 0x83, + 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, + 0xBC, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, + 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, + 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, + 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x92, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, + 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x95, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, + 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x98, + 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, + 0x83, 0x92, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xBF, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, + 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9B, 0xE3, 0x82, + 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9B, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, + 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, 0xE3, + 0x83, 0x8F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xAB, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0x9E, 0xE3, 0x83, + 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x9F, 0xE3, + 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, + 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAA, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, + 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, + 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xAC, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAF, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x30, 0xE7, + 0x82, 0xB9, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0xE7, + 0x82, 0xB9, 0x33, 0xE7, 0x82, 0xB9, 0x34, 0xE7, + 0x82, 0xB9, 0x35, 0xE7, 0x82, 0xB9, 0x36, 0xE7, + 0x82, 0xB9, 0x37, 0xE7, 0x82, 0xB9, 0x38, 0xE7, + 0x82, 0xB9, 0x39, 0xE7, 0x82, 0xB9, 0x31, 0x30, + 0xE7, 0x82, 0xB9, 0x31, 0x31, 0xE7, 0x82, 0xB9, + 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x31, 0x33, 0xE7, + 0x82, 0xB9, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x31, + 0x35, 0xE7, 0x82, 0xB9, 0x31, 0x36, 0xE7, 0x82, + 0xB9, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x31, 0x38, + 0xE7, 0x82, 0xB9, 0x31, 0x39, 0xE7, 0x82, 0xB9, + 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x32, 0x31, 0xE7, + 0x82, 0xB9, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x32, + 0x33, 0xE7, 0x82, 0xB9, 0x32, 0x34, 0xE7, 0x82, + 0xB9, 0x68, 0x50, 0x61, 0x64, 0x61, 0x41, 0x55, + 0x62, 0x61, 0x72, 0x6F, 0x56, 0x70, 0x63, 0x64, + 0x6D, 0x64, 0x6D, 0x32, 0x64, 0x6D, 0x33, 0x49, + 0x55, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0xE6, + 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0xE5, 0xA4, 0xA7, + 0xE6, 0xAD, 0xA3, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, + 0xBB, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, + 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x70, 0x41, 0x6E, + 0x41, 0xCE, 0xBC, 0x41, 0x6D, 0x41, 0x6B, 0x41, + 0x4B, 0x42, 0x4D, 0x42, 0x47, 0x42, 0x63, 0x61, + 0x6C, 0x6B, 0x63, 0x61, 0x6C, 0x70, 0x46, 0x6E, + 0x46, 0xCE, 0xBC, 0x46, 0xCE, 0xBC, 0x67, 0x6D, + 0x67, 0x6B, 0x67, 0x48, 0x7A, 0x6B, 0x48, 0x7A, + 0x4D, 0x48, 0x7A, 0x47, 0x48, 0x7A, 0x54, 0x48, + 0x7A, 0xCE, 0xBC, 0x6C, 0x6D, 0x6C, 0x64, 0x6C, + 0x6B, 0x6C, 0x66, 0x6D, 0x6E, 0x6D, 0xCE, 0xBC, + 0x6D, 0x6D, 0x6D, 0x63, 0x6D, 0x6B, 0x6D, 0x6D, + 0x6D, 0x32, 0x63, 0x6D, 0x32, 0x6D, 0x32, 0x6B, + 0x6D, 0x32, 0x6D, 0x6D, 0x33, 0x63, 0x6D, 0x33, + 0x6D, 0x33, 0x6B, 0x6D, 0x33, 0x6D, 0xE2, 0x88, + 0x95, 0x73, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, + 0x50, 0x61, 0x6B, 0x50, 0x61, 0x4D, 0x50, 0x61, + 0x47, 0x50, 0x61, 0x72, 0x61, 0x64, 0x72, 0x61, + 0x64, 0xE2, 0x88, 0x95, 0x73, 0x72, 0x61, 0x64, + 0xE2, 0x88, 0x95, 0x73, 0x32, 0x70, 0x73, 0x6E, + 0x73, 0xCE, 0xBC, 0x73, 0x6D, 0x73, 0x70, 0x56, + 0x6E, 0x56, 0xCE, 0xBC, 0x56, 0x6D, 0x56, 0x6B, + 0x56, 0x4D, 0x56, 0x70, 0x57, 0x6E, 0x57, 0xCE, + 0xBC, 0x57, 0x6D, 0x57, 0x6B, 0x57, 0x4D, 0x57, + 0x6B, 0xCE, 0xA9, 0x4D, 0xCE, 0xA9, 0x61, 0x2E, + 0x6D, 0x2E, 0x42, 0x71, 0x63, 0x63, 0x63, 0x64, + 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x43, 0x6F, + 0x2E, 0x64, 0x42, 0x47, 0x79, 0x68, 0x61, 0x48, + 0x50, 0x69, 0x6E, 0x4B, 0x4B, 0x4B, 0x4D, 0x6B, + 0x74, 0x6C, 0x6D, 0x6C, 0x6E, 0x6C, 0x6F, 0x67, + 0x6C, 0x78, 0x6D, 0x62, 0x6D, 0x69, 0x6C, 0x6D, + 0x6F, 0x6C, 0x50, 0x48, 0x70, 0x2E, 0x6D, 0x2E, + 0x50, 0x50, 0x4D, 0x50, 0x52, 0x73, 0x72, 0x53, + 0x76, 0x57, 0x62, 0x56, 0xE2, 0x88, 0x95, 0x6D, + 0x41, 0xE2, 0x88, 0x95, 0x6D, 0x31, 0xE6, 0x97, + 0xA5, 0x32, 0xE6, 0x97, 0xA5, 0x33, 0xE6, 0x97, + 0xA5, 0x34, 0xE6, 0x97, 0xA5, 0x35, 0xE6, 0x97, + 0xA5, 0x36, 0xE6, 0x97, 0xA5, 0x37, 0xE6, 0x97, + 0xA5, 0x38, 0xE6, 0x97, 0xA5, 0x39, 0xE6, 0x97, + 0xA5, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x31, 0x31, + 0xE6, 0x97, 0xA5, 0x31, 0x32, 0xE6, 0x97, 0xA5, + 0x31, 0x33, 0xE6, 0x97, 0xA5, 0x31, 0x34, 0xE6, + 0x97, 0xA5, 0x31, 0x35, 0xE6, 0x97, 0xA5, 0x31, + 0x36, 0xE6, 0x97, 0xA5, 0x31, 0x37, 0xE6, 0x97, + 0xA5, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x31, 0x39, + 0xE6, 0x97, 0xA5, 0x32, 0x30, 0xE6, 0x97, 0xA5, + 0x32, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0x32, 0xE6, + 0x97, 0xA5, 0x32, 0x33, 0xE6, 0x97, 0xA5, 0x32, + 0x34, 0xE6, 0x97, 0xA5, 0x32, 0x35, 0xE6, 0x97, + 0xA5, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x32, 0x37, + 0xE6, 0x97, 0xA5, 0x32, 0x38, 0xE6, 0x97, 0xA5, + 0x32, 0x39, 0xE6, 0x97, 0xA5, 0x33, 0x30, 0xE6, + 0x97, 0xA5, 0x33, 0x31, 0xE6, 0x97, 0xA5, 0x67, + 0x61, 0x6C, 0xF6, 0xE8, 0xB1, 0x88, 0xF6, 0xE6, + 0x9B, 0xB4, 0xF6, 0xE8, 0xBB, 0x8A, 0xF6, 0xE8, + 0xB3, 0x88, 0xF6, 0xE6, 0xBB, 0x91, 0xF6, 0xE4, + 0xB8, 0xB2, 0xF6, 0xE5, 0x8F, 0xA5, 0xF6, 0xE9, + 0xBE, 0x9C, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xE5, + 0xA5, 0x91, 0xF6, 0xE9, 0x87, 0x91, 0xF6, 0xE5, + 0x96, 0x87, 0xF6, 0xE5, 0xA5, 0x88, 0xF6, 0xE6, + 0x87, 0xB6, 0xF6, 0xE7, 0x99, 0xA9, 0xF6, 0xE7, + 0xBE, 0x85, 0xF6, 0xE8, 0x98, 0xBF, 0xF6, 0xE8, + 0x9E, 0xBA, 0xF6, 0xE8, 0xA3, 0xB8, 0xF6, 0xE9, + 0x82, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE6, + 0xB4, 0x9B, 0xF6, 0xE7, 0x83, 0x99, 0xF6, 0xE7, + 0x8F, 0x9E, 0xF6, 0xE8, 0x90, 0xBD, 0xF6, 0xE9, + 0x85, 0xAA, 0xF6, 0xE9, 0xA7, 0xB1, 0xF6, 0xE4, + 0xBA, 0x82, 0xF6, 0xE5, 0x8D, 0xB5, 0xF6, 0xE6, + 0xAC, 0x84, 0xF6, 0xE7, 0x88, 0x9B, 0xF6, 0xE8, + 0x98, 0xAD, 0xF6, 0xE9, 0xB8, 0x9E, 0xF6, 0xE5, + 0xB5, 0x90, 0xF6, 0xE6, 0xBF, 0xAB, 0xF6, 0xE8, + 0x97, 0x8D, 0xF6, 0xE8, 0xA5, 0xA4, 0xF6, 0xE6, + 0x8B, 0x89, 0xF6, 0xE8, 0x87, 0x98, 0xF6, 0xE8, + 0xA0, 0x9F, 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xE6, + 0x9C, 0x97, 0xF6, 0xE6, 0xB5, 0xAA, 0xF6, 0xE7, + 0x8B, 0xBC, 0xF6, 0xE9, 0x83, 0x8E, 0xF6, 0xE4, + 0xBE, 0x86, 0xF6, 0xE5, 0x86, 0xB7, 0xF6, 0xE5, + 0x8B, 0x9E, 0xF6, 0xE6, 0x93, 0x84, 0xF6, 0xE6, + 0xAB, 0x93, 0xF6, 0xE7, 0x88, 0x90, 0xF6, 0xE7, + 0x9B, 0xA7, 0xF6, 0xE8, 0x80, 0x81, 0xF6, 0xE8, + 0x98, 0x86, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, 0xE8, + 0xB7, 0xAF, 0xF6, 0xE9, 0x9C, 0xB2, 0xF6, 0xE9, + 0xAD, 0xAF, 0xF6, 0xE9, 0xB7, 0xBA, 0xF6, 0xE7, + 0xA2, 0x8C, 0xF6, 0xE7, 0xA5, 0xBF, 0xF6, 0xE7, + 0xB6, 0xA0, 0xF6, 0xE8, 0x8F, 0x89, 0xF6, 0xE9, + 0x8C, 0x84, 0xF6, 0xE9, 0xB9, 0xBF, 0xF6, 0xE8, + 0xAB, 0x96, 0xF6, 0xE5, 0xA3, 0x9F, 0xF6, 0xE5, + 0xBC, 0x84, 0xF6, 0xE7, 0xB1, 0xA0, 0xF6, 0xE8, + 0x81, 0xBE, 0xF6, 0xE7, 0x89, 0xA2, 0xF6, 0xE7, + 0xA3, 0x8A, 0xF6, 0xE8, 0xB3, 0x82, 0xF6, 0xE9, + 0x9B, 0xB7, 0xF6, 0xE5, 0xA3, 0x98, 0xF6, 0xE5, + 0xB1, 0xA2, 0xF6, 0xE6, 0xA8, 0x93, 0xF6, 0xE6, + 0xB7, 0x9A, 0xF6, 0xE6, 0xBC, 0x8F, 0xF6, 0xE7, + 0xB4, 0xAF, 0xF6, 0xE7, 0xB8, 0xB7, 0xF6, 0xE9, + 0x99, 0x8B, 0xF6, 0xE5, 0x8B, 0x92, 0xF6, 0xE8, + 0x82, 0x8B, 0xF6, 0xE5, 0x87, 0x9C, 0xF6, 0xE5, + 0x87, 0x8C, 0xF6, 0xE7, 0xA8, 0x9C, 0xF6, 0xE7, + 0xB6, 0xBE, 0xF6, 0xE8, 0x8F, 0xB1, 0xF6, 0xE9, + 0x99, 0xB5, 0xF6, 0xE8, 0xAE, 0x80, 0xF6, 0xE6, + 0x8B, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE8, + 0xAB, 0xBE, 0xF6, 0xE4, 0xB8, 0xB9, 0xF6, 0xE5, + 0xAF, 0xA7, 0xF6, 0xE6, 0x80, 0x92, 0xF6, 0xE7, + 0x8E, 0x87, 0xF6, 0xE7, 0x95, 0xB0, 0xF6, 0xE5, + 0x8C, 0x97, 0xF6, 0xE7, 0xA3, 0xBB, 0xF6, 0xE4, + 0xBE, 0xBF, 0xF6, 0xE5, 0xBE, 0xA9, 0xF6, 0xE4, + 0xB8, 0x8D, 0xF6, 0xE6, 0xB3, 0x8C, 0xF6, 0xE6, + 0x95, 0xB8, 0xF6, 0xE7, 0xB4, 0xA2, 0xF6, 0xE5, + 0x8F, 0x83, 0xF6, 0xE5, 0xA1, 0x9E, 0xF6, 0xE7, + 0x9C, 0x81, 0xF6, 0xE8, 0x91, 0x89, 0xF6, 0xE8, + 0xAA, 0xAA, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE8, + 0xBE, 0xB0, 0xF6, 0xE6, 0xB2, 0x88, 0xF6, 0xE6, + 0x8B, 0xBE, 0xF6, 0xE8, 0x8B, 0xA5, 0xF6, 0xE6, + 0x8E, 0xA0, 0xF6, 0xE7, 0x95, 0xA5, 0xF6, 0xE4, + 0xBA, 0xAE, 0xF6, 0xE5, 0x85, 0xA9, 0xF6, 0xE5, + 0x87, 0x89, 0xF6, 0xE6, 0xA2, 0x81, 0xF6, 0xE7, + 0xB3, 0xA7, 0xF6, 0xE8, 0x89, 0xAF, 0xF6, 0xE8, + 0xAB, 0x92, 0xF6, 0xE9, 0x87, 0x8F, 0xF6, 0xE5, + 0x8B, 0xB5, 0xF6, 0xE5, 0x91, 0x82, 0xF6, 0xE5, + 0xA5, 0xB3, 0xF6, 0xE5, 0xBB, 0xAC, 0xF6, 0xE6, + 0x97, 0x85, 0xF6, 0xE6, 0xBF, 0xBE, 0xF6, 0xE7, + 0xA4, 0xAA, 0xF6, 0xE9, 0x96, 0xAD, 0xF6, 0xE9, + 0xA9, 0xAA, 0xF6, 0xE9, 0xBA, 0x97, 0xF6, 0xE9, + 0xBB, 0x8E, 0xF6, 0xE5, 0x8A, 0x9B, 0xF6, 0xE6, + 0x9B, 0x86, 0xF6, 0xE6, 0xAD, 0xB7, 0xF6, 0xE8, + 0xBD, 0xA2, 0xF6, 0xE5, 0xB9, 0xB4, 0xF6, 0xE6, + 0x86, 0x90, 0xF6, 0xE6, 0x88, 0x80, 0xF6, 0xE6, + 0x92, 0x9A, 0xF6, 0xE6, 0xBC, 0xA3, 0xF6, 0xE7, + 0x85, 0x89, 0xF6, 0xE7, 0x92, 0x89, 0xF6, 0xE7, + 0xA7, 0x8A, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE8, + 0x81, 0xAF, 0xF6, 0xE8, 0xBC, 0xA6, 0xF6, 0xE8, + 0x93, 0xAE, 0xF6, 0xE9, 0x80, 0xA3, 0xF6, 0xE9, + 0x8D, 0x8A, 0xF6, 0xE5, 0x88, 0x97, 0xF6, 0xE5, + 0x8A, 0xA3, 0xF6, 0xE5, 0x92, 0xBD, 0xF6, 0xE7, + 0x83, 0x88, 0xF6, 0xE8, 0xA3, 0x82, 0xF6, 0xE8, + 0xAA, 0xAA, 0xF6, 0xE5, 0xBB, 0x89, 0xF6, 0xE5, + 0xBF, 0xB5, 0xF6, 0xE6, 0x8D, 0xBB, 0xF6, 0xE6, + 0xAE, 0xAE, 0xF6, 0xE7, 0xB0, 0xBE, 0xF6, 0xE7, + 0x8D, 0xB5, 0xF6, 0xE4, 0xBB, 0xA4, 0xF6, 0xE5, + 0x9B, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, + 0xB6, 0xBA, 0xF6, 0xE6, 0x80, 0x9C, 0xF6, 0xE7, + 0x8E, 0xB2, 0xF6, 0xE7, 0x91, 0xA9, 0xF6, 0xE7, + 0xBE, 0x9A, 0xF6, 0xE8, 0x81, 0x86, 0xF6, 0xE9, + 0x88, 0xB4, 0xF6, 0xE9, 0x9B, 0xB6, 0xF6, 0xE9, + 0x9D, 0x88, 0xF6, 0xE9, 0xA0, 0x98, 0xF6, 0xE4, + 0xBE, 0x8B, 0xF6, 0xE7, 0xA6, 0xAE, 0xF6, 0xE9, + 0x86, 0xB4, 0xF6, 0xE9, 0x9A, 0xB8, 0xF6, 0xE6, + 0x83, 0xA1, 0xF6, 0xE4, 0xBA, 0x86, 0xF6, 0xE5, + 0x83, 0x9A, 0xF6, 0xE5, 0xAF, 0xAE, 0xF6, 0xE5, + 0xB0, 0xBF, 0xF6, 0xE6, 0x96, 0x99, 0xF6, 0xE6, + 0xA8, 0x82, 0xF6, 0xE7, 0x87, 0x8E, 0xF6, 0xE7, + 0x99, 0x82, 0xF6, 0xE8, 0x93, 0xBC, 0xF6, 0xE9, + 0x81, 0xBC, 0xF6, 0xE9, 0xBE, 0x8D, 0xF6, 0xE6, + 0x9A, 0x88, 0xF6, 0xE9, 0x98, 0xAE, 0xF6, 0xE5, + 0x8A, 0x89, 0xF6, 0xE6, 0x9D, 0xBB, 0xF6, 0xE6, + 0x9F, 0xB3, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, + 0xBA, 0x9C, 0xF6, 0xE7, 0x90, 0x89, 0xF6, 0xE7, + 0x95, 0x99, 0xF6, 0xE7, 0xA1, 0xAB, 0xF6, 0xE7, + 0xB4, 0x90, 0xF6, 0xE9, 0xA1, 0x9E, 0xF6, 0xE5, + 0x85, 0xAD, 0xF6, 0xE6, 0x88, 0xAE, 0xF6, 0xE9, + 0x99, 0xB8, 0xF6, 0xE5, 0x80, 0xAB, 0xF6, 0xE5, + 0xB4, 0x99, 0xF6, 0xE6, 0xB7, 0xAA, 0xF6, 0xE8, + 0xBC, 0xAA, 0xF6, 0xE5, 0xBE, 0x8B, 0xF6, 0xE6, + 0x85, 0x84, 0xF6, 0xE6, 0xA0, 0x97, 0xF6, 0xE7, + 0x8E, 0x87, 0xF6, 0xE9, 0x9A, 0x86, 0xF6, 0xE5, + 0x88, 0xA9, 0xF6, 0xE5, 0x90, 0x8F, 0xF6, 0xE5, + 0xB1, 0xA5, 0xF6, 0xE6, 0x98, 0x93, 0xF6, 0xE6, + 0x9D, 0x8E, 0xF6, 0xE6, 0xA2, 0xA8, 0xF6, 0xE6, + 0xB3, 0xA5, 0xF6, 0xE7, 0x90, 0x86, 0xF6, 0xE7, + 0x97, 0xA2, 0xF6, 0xE7, 0xBD, 0xB9, 0xF6, 0xE8, + 0xA3, 0x8F, 0xF6, 0xE8, 0xA3, 0xA1, 0xF6, 0xE9, + 0x87, 0x8C, 0xF6, 0xE9, 0x9B, 0xA2, 0xF6, 0xE5, + 0x8C, 0xBF, 0xF6, 0xE6, 0xBA, 0xBA, 0xF6, 0xE5, + 0x90, 0x9D, 0xF6, 0xE7, 0x87, 0x90, 0xF6, 0xE7, + 0x92, 0x98, 0xF6, 0xE8, 0x97, 0xBA, 0xF6, 0xE9, + 0x9A, 0xA3, 0xF6, 0xE9, 0xB1, 0x97, 0xF6, 0xE9, + 0xBA, 0x9F, 0xF6, 0xE6, 0x9E, 0x97, 0xF6, 0xE6, + 0xB7, 0x8B, 0xF6, 0xE8, 0x87, 0xA8, 0xF6, 0xE7, + 0xAB, 0x8B, 0xF6, 0xE7, 0xAC, 0xA0, 0xF6, 0xE7, + 0xB2, 0x92, 0xF6, 0xE7, 0x8B, 0x80, 0xF6, 0xE7, + 0x82, 0x99, 0xF6, 0xE8, 0xAD, 0x98, 0xF6, 0xE4, + 0xBB, 0x80, 0xF6, 0xE8, 0x8C, 0xB6, 0xF6, 0xE5, + 0x88, 0xBA, 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, + 0xBA, 0xA6, 0xF6, 0xE6, 0x8B, 0x93, 0xF6, 0xE7, + 0xB3, 0x96, 0xF6, 0xE5, 0xAE, 0x85, 0xF6, 0xE6, + 0xB4, 0x9E, 0xF6, 0xE6, 0x9A, 0xB4, 0xF6, 0xE8, + 0xBC, 0xBB, 0xF6, 0xE8, 0xA1, 0x8C, 0xF6, 0xE9, + 0x99, 0x8D, 0xF6, 0xE8, 0xA6, 0x8B, 0xF6, 0xE5, + 0xBB, 0x93, 0xF6, 0xE5, 0x85, 0x80, 0xF6, 0xE5, + 0x97, 0x80, 0xF6, 0xE5, 0xA1, 0x9A, 0xF6, 0xE6, + 0x99, 0xB4, 0xF6, 0xE5, 0x87, 0x9E, 0xF6, 0xE7, + 0x8C, 0xAA, 0xF6, 0xE7, 0x9B, 0x8A, 0xF6, 0xE7, + 0xA4, 0xBC, 0xF6, 0xE7, 0xA5, 0x9E, 0xF6, 0xE7, + 0xA5, 0xA5, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE9, + 0x9D, 0x96, 0xF6, 0xE7, 0xB2, 0xBE, 0xF6, 0xE7, + 0xBE, 0xBD, 0xF6, 0xE8, 0x98, 0x92, 0xF6, 0xE8, + 0xAB, 0xB8, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, 0xE9, + 0x83, 0xBD, 0xF6, 0xE9, 0xA3, 0xAF, 0xF6, 0xE9, + 0xA3, 0xBC, 0xF6, 0xE9, 0xA4, 0xA8, 0xF6, 0xE9, + 0xB6, 0xB4, 0xF6, 0xE4, 0xBE, 0xAE, 0xF6, 0xE5, + 0x83, 0xA7, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, 0xE5, + 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, + 0x8D, 0x91, 0xF6, 0xE5, 0x96, 0x9D, 0xF6, 0xE5, + 0x98, 0x86, 0xF6, 0xE5, 0x99, 0xA8, 0xF6, 0xE5, + 0xA1, 0x80, 0xF6, 0xE5, 0xA2, 0xA8, 0xF6, 0xE5, + 0xB1, 0xA4, 0xF6, 0xE5, 0xB1, 0xAE, 0xF6, 0xE6, + 0x82, 0x94, 0xF6, 0xE6, 0x85, 0xA8, 0xF6, 0xE6, + 0x86, 0x8E, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, + 0x95, 0x8F, 0xF6, 0xE6, 0x97, 0xA2, 0xF6, 0xE6, + 0x9A, 0x91, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xE6, + 0xB5, 0xB7, 0xF6, 0xE6, 0xB8, 0x9A, 0xF6, 0xE6, + 0xBC, 0xA2, 0xF6, 0xE7, 0x85, 0xAE, 0xF6, 0xE7, + 0x88, 0xAB, 0xF6, 0xE7, 0x90, 0xA2, 0xF6, 0xE7, + 0xA2, 0x91, 0xF6, 0xE7, 0xA4, 0xBE, 0xF6, 0xE7, + 0xA5, 0x89, 0xF6, 0xE7, 0xA5, 0x88, 0xF6, 0xE7, + 0xA5, 0x90, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, 0xE7, + 0xA5, 0x9D, 0xF6, 0xE7, 0xA6, 0x8D, 0xF6, 0xE7, + 0xA6, 0x8E, 0xF6, 0xE7, 0xA9, 0x80, 0xF6, 0xE7, + 0xAA, 0x81, 0xF6, 0xE7, 0xAF, 0x80, 0xF6, 0xE7, + 0xB7, 0xB4, 0xF6, 0xE7, 0xB8, 0x89, 0xF6, 0xE7, + 0xB9, 0x81, 0xF6, 0xE7, 0xBD, 0xB2, 0xF6, 0xE8, + 0x80, 0x85, 0xF6, 0xE8, 0x87, 0xAD, 0xF6, 0xE8, + 0x89, 0xB9, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, 0xE8, + 0x91, 0x97, 0xF6, 0xE8, 0xA4, 0x90, 0xF6, 0xE8, + 0xA6, 0x96, 0xF6, 0xE8, 0xAC, 0x81, 0xF6, 0xE8, + 0xAC, 0xB9, 0xF6, 0xE8, 0xB3, 0x93, 0xF6, 0xE8, + 0xB4, 0x88, 0xF6, 0xE8, 0xBE, 0xB6, 0xF6, 0xE9, + 0x80, 0xB8, 0xF6, 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, + 0x9F, 0xBF, 0xF6, 0xE9, 0xA0, 0xBB, 0xF6, 0xE4, + 0xB8, 0xA6, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xE5, + 0x85, 0xA8, 0xF6, 0xE4, 0xBE, 0x80, 0xF6, 0xE5, + 0x85, 0x85, 0xF6, 0xE5, 0x86, 0x80, 0xF6, 0xE5, + 0x8B, 0x87, 0xF6, 0xE5, 0x8B, 0xBA, 0xF6, 0xE5, + 0x96, 0x9D, 0xF6, 0xE5, 0x95, 0x95, 0xF6, 0xE5, + 0x96, 0x99, 0xF6, 0xE5, 0x97, 0xA2, 0xF6, 0xE5, + 0xA1, 0x9A, 0xF6, 0xE5, 0xA2, 0xB3, 0xF6, 0xE5, + 0xA5, 0x84, 0xF6, 0xE5, 0xA5, 0x94, 0xF6, 0xE5, + 0xA9, 0xA2, 0xF6, 0xE5, 0xAC, 0xA8, 0xF6, 0xE5, + 0xBB, 0x92, 0xF6, 0xE5, 0xBB, 0x99, 0xF6, 0xE5, + 0xBD, 0xA9, 0xF6, 0xE5, 0xBE, 0xAD, 0xF6, 0xE6, + 0x83, 0x98, 0xF6, 0xE6, 0x85, 0x8E, 0xF6, 0xE6, + 0x84, 0x88, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, + 0x85, 0xA0, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, + 0x88, 0xB4, 0xF6, 0xE6, 0x8F, 0x84, 0xF6, 0xE6, + 0x90, 0x9C, 0xF6, 0xE6, 0x91, 0x92, 0xF6, 0xE6, + 0x95, 0x96, 0xF6, 0xE6, 0x99, 0xB4, 0xF6, 0xE6, + 0x9C, 0x97, 0xF6, 0xE6, 0x9C, 0x9B, 0xF6, 0xE6, + 0x9D, 0x96, 0xF6, 0xE6, 0xAD, 0xB9, 0xF6, 0xE6, + 0xAE, 0xBA, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, + 0xBB, 0x9B, 0xF6, 0xE6, 0xBB, 0x8B, 0xF6, 0xE6, + 0xBC, 0xA2, 0xF6, 0xE7, 0x80, 0x9E, 0xF6, 0xE7, + 0x85, 0xAE, 0xF6, 0xE7, 0x9E, 0xA7, 0xF6, 0xE7, + 0x88, 0xB5, 0xF6, 0xE7, 0x8A, 0xAF, 0xF6, 0xE7, + 0x8C, 0xAA, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, 0xE7, + 0x94, 0x86, 0xF6, 0xE7, 0x94, 0xBB, 0xF6, 0xE7, + 0x98, 0x9D, 0xF6, 0xE7, 0x98, 0x9F, 0xF6, 0xE7, + 0x9B, 0x8A, 0xF6, 0xE7, 0x9B, 0x9B, 0xF6, 0xE7, + 0x9B, 0xB4, 0xF6, 0xE7, 0x9D, 0x8A, 0xF6, 0xE7, + 0x9D, 0x80, 0xF6, 0xE7, 0xA3, 0x8C, 0xF6, 0xE7, + 0xAA, 0xB1, 0xF6, 0xE7, 0xAF, 0x80, 0xF6, 0xE7, + 0xB1, 0xBB, 0xF6, 0xE7, 0xB5, 0x9B, 0xF6, 0xE7, + 0xB7, 0xB4, 0xF6, 0xE7, 0xBC, 0xBE, 0xF6, 0xE8, + 0x80, 0x85, 0xF6, 0xE8, 0x8D, 0x92, 0xF6, 0xE8, + 0x8F, 0xAF, 0xF6, 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, + 0xA5, 0x81, 0xF6, 0xE8, 0xA6, 0x86, 0xF6, 0xE8, + 0xA6, 0x96, 0xF6, 0xE8, 0xAA, 0xBF, 0xF6, 0xE8, + 0xAB, 0xB8, 0xF6, 0xE8, 0xAB, 0x8B, 0xF6, 0xE8, + 0xAC, 0x81, 0xF6, 0xE8, 0xAB, 0xBE, 0xF6, 0xE8, + 0xAB, 0xAD, 0xF6, 0xE8, 0xAC, 0xB9, 0xF6, 0xE8, + 0xAE, 0x8A, 0xF6, 0xE8, 0xB4, 0x88, 0xF6, 0xE8, + 0xBC, 0xB8, 0xF6, 0xE9, 0x81, 0xB2, 0xF6, 0xE9, + 0x86, 0x99, 0xF6, 0xE9, 0x89, 0xB6, 0xF6, 0xE9, + 0x99, 0xBC, 0xF6, 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, + 0x9D, 0x96, 0xF6, 0xE9, 0x9F, 0x9B, 0xF6, 0xE9, + 0x9F, 0xBF, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, + 0xA0, 0xBB, 0xF6, 0xE9, 0xAC, 0x92, 0xF6, 0xE9, + 0xBE, 0x9C, 0xF6, 0xF0, 0xA2, 0xA1, 0x8A, 0xF6, + 0xF0, 0xA2, 0xA1, 0x84, 0xF6, 0xF0, 0xA3, 0x8F, + 0x95, 0xF6, 0xE3, 0xAE, 0x9D, 0xF6, 0xE4, 0x80, + 0x98, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xF0, 0xA5, + 0x89, 0x89, 0xF6, 0xF0, 0xA5, 0xB3, 0x90, 0xF6, + 0xF0, 0xA7, 0xBB, 0x93, 0xF6, 0xE9, 0xBD, 0x83, + 0xF6, 0xE9, 0xBE, 0x8E, 0x66, 0x66, 0x66, 0x69, + 0x66, 0x6C, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, + 0x73, 0x74, 0x73, 0x74, 0xD5, 0xB4, 0xD5, 0xB6, + 0xD5, 0xB4, 0xD5, 0xA5, 0xD5, 0xB4, 0xD5, 0xAB, + 0xD5, 0xBE, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xAD, + 0xF6, 0xD7, 0x99, 0xD6, 0xB4, 0xF6, 0xD7, 0xB2, + 0xD6, 0xB7, 0xD7, 0xA2, 0xD7, 0x90, 0xD7, 0x93, + 0xD7, 0x94, 0xD7, 0x9B, 0xD7, 0x9C, 0xD7, 0x9D, + 0xD7, 0xA8, 0xD7, 0xAA, 0x2B, 0xF6, 0xD7, 0xA9, + 0xD7, 0x81, 0xF6, 0xD7, 0xA9, 0xD7, 0x82, 0xF6, + 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0xF6, 0xD7, + 0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0xF6, 0xD7, 0x90, + 0xD6, 0xB7, 0xF6, 0xD7, 0x90, 0xD6, 0xB8, 0xF6, + 0xD7, 0x90, 0xD6, 0xBC, 0xF6, 0xD7, 0x91, 0xD6, + 0xBC, 0xF6, 0xD7, 0x92, 0xD6, 0xBC, 0xF6, 0xD7, + 0x93, 0xD6, 0xBC, 0xF6, 0xD7, 0x94, 0xD6, 0xBC, + 0xF6, 0xD7, 0x95, 0xD6, 0xBC, 0xF6, 0xD7, 0x96, + 0xD6, 0xBC, 0xF6, 0xD7, 0x98, 0xD6, 0xBC, 0xF6, + 0xD7, 0x99, 0xD6, 0xBC, 0xF6, 0xD7, 0x9A, 0xD6, + 0xBC, 0xF6, 0xD7, 0x9B, 0xD6, 0xBC, 0xF6, 0xD7, + 0x9C, 0xD6, 0xBC, 0xF6, 0xD7, 0x9E, 0xD6, 0xBC, + 0xF6, 0xD7, 0xA0, 0xD6, 0xBC, 0xF6, 0xD7, 0xA1, + 0xD6, 0xBC, 0xF6, 0xD7, 0xA3, 0xD6, 0xBC, 0xF6, + 0xD7, 0xA4, 0xD6, 0xBC, 0xF6, 0xD7, 0xA6, 0xD6, + 0xBC, 0xF6, 0xD7, 0xA7, 0xD6, 0xBC, 0xF6, 0xD7, + 0xA8, 0xD6, 0xBC, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, + 0xF6, 0xD7, 0xAA, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, + 0xD6, 0xB9, 0xF6, 0xD7, 0x91, 0xD6, 0xBF, 0xF6, + 0xD7, 0x9B, 0xD6, 0xBF, 0xF6, 0xD7, 0xA4, 0xD6, + 0xBF, 0xD7, 0x90, 0xD7, 0x9C, 0xD9, 0xB1, 0xD9, + 0xB1, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, + 0xBB, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, + 0xBE, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xDA, + 0x80, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, + 0xBA, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, + 0xBF, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, + 0xB9, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, + 0xA4, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, + 0xA6, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, + 0x84, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, + 0x83, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, + 0x86, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, + 0x87, 0xDA, 0x8D, 0xDA, 0x8D, 0xDA, 0x8C, 0xDA, + 0x8C, 0xDA, 0x8E, 0xDA, 0x8E, 0xDA, 0x88, 0xDA, + 0x88, 0xDA, 0x98, 0xDA, 0x98, 0xDA, 0x91, 0xDA, + 0x91, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, + 0xA9, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, + 0xAF, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, + 0xB3, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, + 0xB1, 0xDA, 0xBA, 0xDA, 0xBA, 0xDA, 0xBB, 0xDA, + 0xBB, 0xDA, 0xBB, 0xDA, 0xBB, 0xDB, 0x95, 0xD9, + 0x94, 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x81, 0xDB, + 0x81, 0xDB, 0x81, 0xDB, 0x81, 0xDA, 0xBE, 0xDA, + 0xBE, 0xDA, 0xBE, 0xDA, 0xBE, 0xDB, 0x92, 0xDB, + 0x92, 0xDB, 0x92, 0xD9, 0x94, 0xDB, 0x92, 0xD9, + 0x94, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, + 0xAD, 0xDB, 0x87, 0xDB, 0x87, 0xDB, 0x86, 0xDB, + 0x86, 0xDB, 0x88, 0xDB, 0x88, 0xDB, 0x87, 0xD9, + 0xB4, 0xDB, 0x8B, 0xDB, 0x8B, 0xDB, 0x85, 0xDB, + 0x85, 0xDB, 0x89, 0xDB, 0x89, 0xDB, 0x90, 0xDB, + 0x90, 0xDB, 0x90, 0xDB, 0x90, 0xD9, 0x89, 0xD9, + 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, + 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, + 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, + 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xDB, 0x8C, 0xDB, + 0x8C, 0xDB, 0x8C, 0xDB, 0x8C, 0xD9, 0x8A, 0xD9, + 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, + 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, + 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, + 0xA8, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, + 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, + 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, + 0xAA, 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, + 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, + 0xAB, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, + 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, + 0xAE, 0xD8, 0xAD, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, + 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, + 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, + 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, + 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, + 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, + 0xB7, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, + 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, + 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, + 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, + 0x81, 0xD9, 0x85, 0xD9, 0x81, 0xD9, 0x89, 0xD9, + 0x81, 0xD9, 0x8A, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, + 0x82, 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x89, 0xD9, + 0x82, 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, + 0x83, 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, + 0x83, 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, + 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, + 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, + 0x84, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, + 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, + 0x84, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, + 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x89, 0xD9, + 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, + 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, + 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x89, 0xD9, + 0x86, 0xD9, 0x8A, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, + 0x87, 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0x89, 0xD9, + 0x87, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, + 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, + 0x8A, 0xD9, 0x8A, 0xD8, 0xB0, 0xD9, 0xB0, 0xD8, + 0xB1, 0xD9, 0xB0, 0xD9, 0x89, 0xD9, 0xB0, 0x20, + 0xD9, 0x8C, 0xD9, 0x91, 0x20, 0xD9, 0x8D, 0xD9, + 0x91, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x20, 0xD9, + 0x8F, 0xD9, 0x91, 0x20, 0xD9, 0x90, 0xD9, 0x91, + 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0xD9, 0x8A, 0xD9, + 0x94, 0xD8, 0xB1, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xB2, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x8A, 0xD8, 0xA8, 0xD8, 0xB1, 0xD8, 0xA8, 0xD8, + 0xB2, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, + 0x86, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, + 0x8A, 0xD8, 0xAA, 0xD8, 0xB1, 0xD8, 0xAA, 0xD8, + 0xB2, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, + 0x86, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, + 0x8A, 0xD8, 0xAB, 0xD8, 0xB1, 0xD8, 0xAB, 0xD8, + 0xB2, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, + 0x86, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, + 0x8A, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, + 0x8A, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, + 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD9, + 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, + 0x89, 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, + 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, + 0x8A, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x85, 0xD9, + 0x85, 0xD9, 0x86, 0xD8, 0xB1, 0xD9, 0x86, 0xD8, + 0xB2, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, + 0x86, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, + 0x8A, 0xD9, 0x89, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, + 0xB1, 0xD9, 0x8A, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, + 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, + 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, + 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, + 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, + 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, + 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, + 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, + 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, + 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, + 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, + 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, + 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, + 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAE, 0xD8, + 0xB5, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, + 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, + 0xB6, 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, + 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, + 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, + 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, + 0x81, 0xD9, 0x85, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, + 0x82, 0xD9, 0x85, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, + 0x83, 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, + 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, + 0x84, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, + 0x84, 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, + 0x84, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, + 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, + 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, + 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, + 0x87, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, + 0x87, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, + 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, + 0xA8, 0xD9, 0x87, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, + 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, + 0xAB, 0xD9, 0x87, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, + 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, + 0xB4, 0xD9, 0x87, 0xD9, 0x83, 0xD9, 0x84, 0xD9, + 0x83, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD9, + 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, + 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, + 0x80, 0xD9, 0x8E, 0xD9, 0x91, 0xD9, 0x80, 0xD9, + 0x8F, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x90, 0xD9, + 0x91, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, + 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, + 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, + 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, + 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, + 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, + 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, + 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, + 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, + 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, + 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, + 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, + 0xB1, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, + 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, + 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, + 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, + 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, + 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, + 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, + 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, + 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, + 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, + 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, + 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, + 0xB1, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, + 0x85, 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, + 0x87, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, + 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, + 0xAE, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB7, 0xD9, + 0x85, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, + 0x8B, 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xAA, 0xD8, + 0xAC, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, + 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, + 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, + 0xAE, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, + 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, + 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, + 0xAD, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, + 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, + 0xAD, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, + 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, + 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, + 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, + 0xAD, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, + 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, + 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, + 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, + 0x85, 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, + 0x85, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, + 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, + 0xAE, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, + 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, + 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, + 0x85, 0xD9, 0x8A, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, + 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, + 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, + 0x85, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, + 0x85, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x81, 0xD8, + 0xAE, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, + 0x85, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, + 0x82, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, + 0xAD, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, + 0x8A, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, + 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, + 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, + 0x85, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, + 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, + 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, + 0x85, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, + 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAE, 0xD9, 0x87, 0xD9, 0x85, 0xD8, + 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0xD9, + 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x86, 0xD8, + 0xAD, 0xD9, 0x89, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, + 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, + 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0xD9, 0x86, 0xD9, + 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x85, 0xD9, + 0x89, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, + 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xA8, 0xD8, + 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, + 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, + 0xAE, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, + 0x8A, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0xD8, + 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, + 0x89, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, + 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, + 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, + 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, + 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, + 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, + 0x8A, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, + 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, + 0x85, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, + 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, + 0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, + 0xAC, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x85, 0xD9, + 0x85, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, + 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, + 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, + 0xAD, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, + 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, + 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, + 0xAE, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, + 0x8A, 0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0xD9, + 0x82, 0xD9, 0x84, 0xDB, 0x92, 0xD8, 0xA7, 0xD9, + 0x84, 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xA7, 0xD9, + 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, + 0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0xD8, 0xB5, 0xD9, + 0x84, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, + 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, + 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x88, 0xD8, + 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, + 0x84, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, + 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, + 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, + 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, + 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x84, + 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, + 0x84, 0xD9, 0x87, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, + 0xA7, 0xD9, 0x84, 0x2C, 0xE3, 0x80, 0x81, 0xE3, + 0x80, 0x82, 0x3A, 0x3B, 0x21, 0x3F, 0xE3, 0x80, + 0x96, 0xE3, 0x80, 0x97, 0x2E, 0x2E, 0x2E, 0x2E, + 0x2E, 0xE2, 0x80, 0x94, 0xE2, 0x80, 0x93, 0x5F, + 0x5F, 0x28, 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, + 0xE3, 0x80, 0x95, 0xE3, 0x80, 0x90, 0xE3, 0x80, + 0x91, 0xE3, 0x80, 0x8A, 0xE3, 0x80, 0x8B, 0xE3, + 0x80, 0x88, 0xE3, 0x80, 0x89, 0xE3, 0x80, 0x8C, + 0xE3, 0x80, 0x8D, 0xE3, 0x80, 0x8E, 0xE3, 0x80, + 0x8F, 0x5B, 0x5D, 0x20, 0xCC, 0x85, 0x20, 0xCC, + 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x5F, + 0x5F, 0x5F, 0x2C, 0xE3, 0x80, 0x81, 0x2E, 0x3B, + 0x3A, 0x3F, 0x21, 0xE2, 0x80, 0x94, 0x28, 0x29, + 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, + 0x23, 0x26, 0x2A, 0x2B, 0x2D, 0x3C, 0x3E, 0x3D, + 0x5C, 0x24, 0x25, 0x40, 0x20, 0xD9, 0x8B, 0xD9, + 0x80, 0xD9, 0x8B, 0x20, 0xD9, 0x8C, 0x20, 0xD9, + 0x8D, 0x20, 0xD9, 0x8E, 0xD9, 0x80, 0xD9, 0x8E, + 0x20, 0xD9, 0x8F, 0xD9, 0x80, 0xD9, 0x8F, 0x20, + 0xD9, 0x90, 0xD9, 0x80, 0xD9, 0x90, 0x20, 0xD9, + 0x91, 0xD9, 0x80, 0xD9, 0x91, 0x20, 0xD9, 0x92, + 0xD9, 0x80, 0xD9, 0x92, 0xD8, 0xA1, 0xD8, 0xA7, + 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, 0xA7, + 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x88, + 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD8, 0xA7, + 0xD9, 0x95, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, + 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, + 0xD8, 0xA7, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA8, + 0xD8, 0xA8, 0xD8, 0xA9, 0xD8, 0xA9, 0xD8, 0xAA, + 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAB, + 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAC, + 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAE, + 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAF, + 0xD8, 0xAF, 0xD8, 0xB0, 0xD8, 0xB0, 0xD8, 0xB1, + 0xD8, 0xB1, 0xD8, 0xB2, 0xD8, 0xB2, 0xD8, 0xB3, + 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB4, + 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB5, + 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB6, + 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB7, + 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB8, + 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB9, + 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xBA, + 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD9, 0x81, + 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x82, + 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x83, + 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x84, + 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x85, + 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, + 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x87, + 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x88, + 0xD9, 0x88, 0xD9, 0x89, 0xD9, 0x89, 0xD9, 0x8A, + 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x84, + 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, + 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, + 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x84, + 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, + 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, + 0xD8, 0xA7, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, + 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, + 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, + 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, + 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, + 0xE2, 0xA6, 0x85, 0xE2, 0xA6, 0x86, 0xE3, 0x80, + 0x82, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, + 0x80, 0x81, 0xE3, 0x83, 0xBB, 0xE3, 0x83, 0xB2, + 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA3, 0xE3, 0x82, + 0xA5, 0xE3, 0x82, 0xA7, 0xE3, 0x82, 0xA9, 0xE3, + 0x83, 0xA3, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xA7, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0xBC, 0xE3, 0x82, + 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, + 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, + 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, + 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, + 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, + 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, + 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, + 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, + 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, + 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, + 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, + 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, + 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, + 0x83, 0xAF, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0x9A, 0xE1, 0x85, 0xA0, 0xE1, 0x84, + 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, 0xE1, + 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, 0xAD, + 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, 0x84, + 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, 0xE1, + 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, 0xB4, + 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, 0x84, + 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, 0xE1, + 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8A, + 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, + 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, + 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, + 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, 0x85, + 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, 0xE1, + 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, 0xA8, + 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, 0x85, + 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, 0xE1, + 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, 0xB0, + 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, 0x85, + 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, 0xC2, + 0xA2, 0xC2, 0xA3, 0xC2, 0xAC, 0x20, 0xCC, 0x84, + 0xC2, 0xA6, 0xC2, 0xA5, 0xE2, 0x82, 0xA9, 0xE2, + 0x94, 0x82, 0xE2, 0x86, 0x90, 0xE2, 0x86, 0x91, + 0xE2, 0x86, 0x92, 0xE2, 0x86, 0x93, 0xE2, 0x96, + 0xA0, 0xE2, 0x97, 0x8B, 0xF6, 0xF0, 0x9D, 0x85, + 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, + 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x85, 0x98, + 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, + 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xF6, 0xF0, 0x9D, + 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, + 0x85, 0xB1, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xF6, + 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, + 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, + 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, + 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, + 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, + 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, + 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, + 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, + 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, + 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, + 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, + 0x41, 0x43, 0x44, 0x47, 0x4A, 0x4B, 0x4E, 0x4F, + 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x66, 0x68, + 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, + 0x45, 0x46, 0x47, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, + 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, + 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, + 0x46, 0x47, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4F, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, + 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7A, 0xC4, 0xB1, 0xC8, 0xB7, 0xCE, 0x91, 0xCE, + 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, + 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, + 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, + 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, + 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, + 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, + 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, + 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, + 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, + 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, + 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, + 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, + 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, + 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, + 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, + 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, + 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, + 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, + 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, + 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, + 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, + 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, + 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, + 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, + 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, + 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, + 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, + 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, + 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, + 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, + 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, + 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, + 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, + 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, + 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, + 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, + 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, + 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, + 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, + 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, + 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, + 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, + 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, + 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, + 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, + 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, + 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, + 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, + 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, + 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, + 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, + 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, + 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, + 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, + 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, + 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, + 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, + 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, + 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, + 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, + 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, + 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, + 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, + 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, + 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, + 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, + 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, + 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, + 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, + 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, + 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, + 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, + 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, + 0x81, 0xCF, 0x80, 0xCF, 0x9C, 0xCF, 0x9D, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0xF6, 0xE4, 0xB8, 0xBD, 0xF6, 0xE4, 0xB8, + 0xB8, 0xF6, 0xE4, 0xB9, 0x81, 0xF6, 0xF0, 0xA0, + 0x84, 0xA2, 0xF6, 0xE4, 0xBD, 0xA0, 0xF6, 0xE4, + 0xBE, 0xAE, 0xF6, 0xE4, 0xBE, 0xBB, 0xF6, 0xE5, + 0x80, 0x82, 0xF6, 0xE5, 0x81, 0xBA, 0xF6, 0xE5, + 0x82, 0x99, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, + 0x83, 0x8F, 0xF6, 0xE3, 0x92, 0x9E, 0xF6, 0xF0, + 0xA0, 0x98, 0xBA, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, + 0xE5, 0x85, 0x94, 0xF6, 0xE5, 0x85, 0xA4, 0xF6, + 0xE5, 0x85, 0xB7, 0xF6, 0xF0, 0xA0, 0x94, 0x9C, + 0xF6, 0xE3, 0x92, 0xB9, 0xF6, 0xE5, 0x85, 0xA7, + 0xF6, 0xE5, 0x86, 0x8D, 0xF6, 0xF0, 0xA0, 0x95, + 0x8B, 0xF6, 0xE5, 0x86, 0x97, 0xF6, 0xE5, 0x86, + 0xA4, 0xF6, 0xE4, 0xBB, 0x8C, 0xF6, 0xE5, 0x86, + 0xAC, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xF0, 0xA9, + 0x87, 0x9F, 0xF6, 0xE5, 0x87, 0xB5, 0xF6, 0xE5, + 0x88, 0x83, 0xF6, 0xE3, 0x93, 0x9F, 0xF6, 0xE5, + 0x88, 0xBB, 0xF6, 0xE5, 0x89, 0x86, 0xF6, 0xE5, + 0x89, 0xB2, 0xF6, 0xE5, 0x89, 0xB7, 0xF6, 0xE3, + 0x94, 0x95, 0xF6, 0xE5, 0x8B, 0x87, 0xF6, 0xE5, + 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, + 0x8B, 0xBA, 0xF6, 0xE5, 0x8C, 0x85, 0xF6, 0xE5, + 0x8C, 0x86, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE5, + 0x8D, 0x89, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, + 0x8D, 0x9A, 0xF6, 0xE5, 0x8D, 0xB3, 0xF6, 0xE5, + 0x8D, 0xBD, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, + 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xF0, + 0xA0, 0xA8, 0xAC, 0xF6, 0xE7, 0x81, 0xB0, 0xF6, + 0xE5, 0x8F, 0x8A, 0xF6, 0xE5, 0x8F, 0x9F, 0xF6, + 0xF0, 0xA0, 0xAD, 0xA3, 0xF6, 0xE5, 0x8F, 0xAB, + 0xF6, 0xE5, 0x8F, 0xB1, 0xF6, 0xE5, 0x90, 0x86, + 0xF6, 0xE5, 0x92, 0x9E, 0xF6, 0xE5, 0x90, 0xB8, + 0xF6, 0xE5, 0x91, 0x88, 0xF6, 0xE5, 0x91, 0xA8, + 0xF6, 0xE5, 0x92, 0xA2, 0xF6, 0xE5, 0x93, 0xB6, + 0xF6, 0xE5, 0x94, 0x90, 0xF6, 0xE5, 0x95, 0x93, + 0xF6, 0xE5, 0x95, 0xA3, 0xF6, 0xE5, 0x96, 0x84, + 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x99, + 0xF6, 0xE5, 0x96, 0xAB, 0xF6, 0xE5, 0x96, 0xB3, + 0xF6, 0xE5, 0x97, 0x82, 0xF6, 0xE5, 0x9C, 0x96, + 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x9C, 0x97, + 0xF6, 0xE5, 0x99, 0x91, 0xF6, 0xE5, 0x99, 0xB4, + 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xA3, 0xAE, + 0xF6, 0xE5, 0x9F, 0x8E, 0xF6, 0xE5, 0x9F, 0xB4, + 0xF6, 0xE5, 0xA0, 0x8D, 0xF6, 0xE5, 0x9E, 0x8B, + 0xF6, 0xE5, 0xA0, 0xB2, 0xF6, 0xE5, 0xA0, 0xB1, + 0xF6, 0xE5, 0xA2, 0xAC, 0xF6, 0xF0, 0xA1, 0x93, + 0xA4, 0xF6, 0xE5, 0xA3, 0xB2, 0xF6, 0xE5, 0xA3, + 0xB7, 0xF6, 0xE5, 0xA4, 0x86, 0xF6, 0xE5, 0xA4, + 0x9A, 0xF6, 0xE5, 0xA4, 0xA2, 0xF6, 0xE5, 0xA5, + 0xA2, 0xF6, 0xF0, 0xA1, 0x9A, 0xA8, 0xF6, 0xF0, + 0xA1, 0x9B, 0xAA, 0xF6, 0xE5, 0xA7, 0xAC, 0xF6, + 0xE5, 0xA8, 0x9B, 0xF6, 0xE5, 0xA8, 0xA7, 0xF6, + 0xE5, 0xA7, 0x98, 0xF6, 0xE5, 0xA9, 0xA6, 0xF6, + 0xE3, 0x9B, 0xAE, 0xF6, 0xE3, 0x9B, 0xBC, 0xF6, + 0xE5, 0xAC, 0x88, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, + 0xE5, 0xAC, 0xBE, 0xF6, 0xF0, 0xA1, 0xA7, 0x88, + 0xF6, 0xE5, 0xAF, 0x83, 0xF6, 0xE5, 0xAF, 0x98, + 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xAF, 0xB3, + 0xF6, 0xF0, 0xA1, 0xAC, 0x98, 0xF6, 0xE5, 0xAF, + 0xBF, 0xF6, 0xE5, 0xB0, 0x86, 0xF6, 0xE5, 0xBD, + 0x93, 0xF6, 0xE5, 0xB0, 0xA2, 0xF6, 0xE3, 0x9E, + 0x81, 0xF6, 0xE5, 0xB1, 0xA0, 0xF6, 0xE5, 0xB1, + 0xAE, 0xF6, 0xE5, 0xB3, 0x80, 0xF6, 0xE5, 0xB2, + 0x8D, 0xF6, 0xF0, 0xA1, 0xB7, 0xA4, 0xF6, 0xE5, + 0xB5, 0x83, 0xF6, 0xF0, 0xA1, 0xB7, 0xA6, 0xF6, + 0xE5, 0xB5, 0xAE, 0xF6, 0xE5, 0xB5, 0xAB, 0xF6, + 0xE5, 0xB5, 0xBC, 0xF6, 0xE5, 0xB7, 0xA1, 0xF6, + 0xE5, 0xB7, 0xA2, 0xF6, 0xE3, 0xA0, 0xAF, 0xF6, + 0xE5, 0xB7, 0xBD, 0xF6, 0xE5, 0xB8, 0xA8, 0xF6, + 0xE5, 0xB8, 0xBD, 0xF6, 0xE5, 0xB9, 0xA9, 0xF6, + 0xE3, 0xA1, 0xA2, 0xF6, 0xF0, 0xA2, 0x86, 0x83, + 0xF6, 0xE3, 0xA1, 0xBC, 0xF6, 0xE5, 0xBA, 0xB0, + 0xF6, 0xE5, 0xBA, 0xB3, 0xF6, 0xE5, 0xBA, 0xB6, + 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xF0, 0xAA, 0x8E, + 0x92, 0xF6, 0xE5, 0xBB, 0xBE, 0xF6, 0xF0, 0xA2, + 0x8C, 0xB1, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, + 0xE8, 0x88, 0x81, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, + 0xE5, 0xBC, 0xA2, 0xF6, 0xE3, 0xA3, 0x87, 0xF6, + 0xF0, 0xA3, 0x8A, 0xB8, 0xF6, 0xF0, 0xA6, 0x87, + 0x9A, 0xF6, 0xE5, 0xBD, 0xA2, 0xF6, 0xE5, 0xBD, + 0xAB, 0xF6, 0xE3, 0xA3, 0xA3, 0xF6, 0xE5, 0xBE, + 0x9A, 0xF6, 0xE5, 0xBF, 0x8D, 0xF6, 0xE5, 0xBF, + 0x97, 0xF6, 0xE5, 0xBF, 0xB9, 0xF6, 0xE6, 0x82, + 0x81, 0xF6, 0xE3, 0xA4, 0xBA, 0xF6, 0xE3, 0xA4, + 0x9C, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xF0, 0xA2, + 0x9B, 0x94, 0xF6, 0xE6, 0x83, 0x87, 0xF6, 0xE6, + 0x85, 0x88, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, + 0x85, 0x8E, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, + 0x85, 0xBA, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, + 0x86, 0xB2, 0xF6, 0xE6, 0x86, 0xA4, 0xF6, 0xE6, + 0x86, 0xAF, 0xF6, 0xE6, 0x87, 0x9E, 0xF6, 0xE6, + 0x87, 0xB2, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE6, + 0x88, 0x90, 0xF6, 0xE6, 0x88, 0x9B, 0xF6, 0xE6, + 0x89, 0x9D, 0xF6, 0xE6, 0x8A, 0xB1, 0xF6, 0xE6, + 0x8B, 0x94, 0xF6, 0xE6, 0x8D, 0x90, 0xF6, 0xF0, + 0xA2, 0xAC, 0x8C, 0xF6, 0xE6, 0x8C, 0xBD, 0xF6, + 0xE6, 0x8B, 0xBC, 0xF6, 0xE6, 0x8D, 0xA8, 0xF6, + 0xE6, 0x8E, 0x83, 0xF6, 0xE6, 0x8F, 0xA4, 0xF6, + 0xF0, 0xA2, 0xAF, 0xB1, 0xF6, 0xE6, 0x90, 0xA2, + 0xF6, 0xE6, 0x8F, 0x85, 0xF6, 0xE6, 0x8E, 0xA9, + 0xF6, 0xE3, 0xA8, 0xAE, 0xF6, 0xE6, 0x91, 0xA9, + 0xF6, 0xE6, 0x91, 0xBE, 0xF6, 0xE6, 0x92, 0x9D, + 0xF6, 0xE6, 0x91, 0xB7, 0xF6, 0xE3, 0xA9, 0xAC, + 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x95, 0xAC, + 0xF6, 0xF0, 0xA3, 0x80, 0x8A, 0xF6, 0xE6, 0x97, + 0xA3, 0xF6, 0xE6, 0x9B, 0xB8, 0xF6, 0xE6, 0x99, + 0x89, 0xF6, 0xE3, 0xAC, 0x99, 0xF6, 0xE6, 0x9A, + 0x91, 0xF6, 0xE3, 0xAC, 0x88, 0xF6, 0xE3, 0xAB, + 0xA4, 0xF6, 0xE5, 0x86, 0x92, 0xF6, 0xE5, 0x86, + 0x95, 0xF6, 0xE6, 0x9C, 0x80, 0xF6, 0xE6, 0x9A, + 0x9C, 0xF6, 0xE8, 0x82, 0xAD, 0xF6, 0xE4, 0x8F, + 0x99, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0x9C, + 0x9B, 0xF6, 0xE6, 0x9C, 0xA1, 0xF6, 0xE6, 0x9D, + 0x9E, 0xF6, 0xE6, 0x9D, 0x93, 0xF6, 0xF0, 0xA3, + 0x8F, 0x83, 0xF6, 0xE3, 0xAD, 0x89, 0xF6, 0xE6, + 0x9F, 0xBA, 0xF6, 0xE6, 0x9E, 0x85, 0xF6, 0xE6, + 0xA1, 0x92, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xF0, + 0xA3, 0x91, 0xAD, 0xF6, 0xE6, 0xA2, 0x8E, 0xF6, + 0xE6, 0xA0, 0x9F, 0xF6, 0xE6, 0xA4, 0x94, 0xF6, + 0xE3, 0xAE, 0x9D, 0xF6, 0xE6, 0xA5, 0x82, 0xF6, + 0xE6, 0xA6, 0xA3, 0xF6, 0xE6, 0xA7, 0xAA, 0xF6, + 0xE6, 0xAA, 0xA8, 0xF6, 0xF0, 0xA3, 0x9A, 0xA3, + 0xF6, 0xE6, 0xAB, 0x9B, 0xF6, 0xE3, 0xB0, 0x98, + 0xF6, 0xE6, 0xAC, 0xA1, 0xF6, 0xF0, 0xA3, 0xA2, + 0xA7, 0xF6, 0xE6, 0xAD, 0x94, 0xF6, 0xE3, 0xB1, + 0x8E, 0xF6, 0xE6, 0xAD, 0xB2, 0xF6, 0xE6, 0xAE, + 0x9F, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE6, 0xAE, + 0xBB, 0xF6, 0xF0, 0xA3, 0xAA, 0x8D, 0xF6, 0xF0, + 0xA1, 0xB4, 0x8B, 0xF6, 0xF0, 0xA3, 0xAB, 0xBA, + 0xF6, 0xE6, 0xB1, 0x8E, 0xF6, 0xF0, 0xA3, 0xB2, + 0xBC, 0xF6, 0xE6, 0xB2, 0xBF, 0xF6, 0xE6, 0xB3, + 0x8D, 0xF6, 0xE6, 0xB1, 0xA7, 0xF6, 0xE6, 0xB4, + 0x96, 0xF6, 0xE6, 0xB4, 0xBE, 0xF6, 0xE6, 0xB5, + 0xB7, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xB5, + 0xA9, 0xF6, 0xE6, 0xB5, 0xB8, 0xF6, 0xE6, 0xB6, + 0x85, 0xF6, 0xF0, 0xA3, 0xB4, 0x9E, 0xF6, 0xE6, + 0xB4, 0xB4, 0xF6, 0xE6, 0xB8, 0xAF, 0xF6, 0xE6, + 0xB9, 0xAE, 0xF6, 0xE3, 0xB4, 0xB3, 0xF6, 0xE6, + 0xBB, 0x8B, 0xF6, 0xE6, 0xBB, 0x87, 0xF6, 0xF0, + 0xA3, 0xBB, 0x91, 0xF6, 0xE6, 0xB7, 0xB9, 0xF6, + 0xE6, 0xBD, 0xAE, 0xF6, 0xF0, 0xA3, 0xBD, 0x9E, + 0xF6, 0xF0, 0xA3, 0xBE, 0x8E, 0xF6, 0xE6, 0xBF, + 0x86, 0xF6, 0xE7, 0x80, 0xB9, 0xF6, 0xE7, 0x80, + 0x9E, 0xF6, 0xE7, 0x80, 0x9B, 0xF6, 0xE3, 0xB6, + 0x96, 0xF6, 0xE7, 0x81, 0x8A, 0xF6, 0xE7, 0x81, + 0xBD, 0xF6, 0xE7, 0x81, 0xB7, 0xF6, 0xE7, 0x82, + 0xAD, 0xF6, 0xF0, 0xA0, 0x94, 0xA5, 0xF6, 0xE7, + 0x85, 0x85, 0xF6, 0xF0, 0xA4, 0x89, 0xA3, 0xF6, + 0xE7, 0x86, 0x9C, 0xF6, 0xF0, 0xA4, 0x8E, 0xAB, + 0xF6, 0xE7, 0x88, 0xA8, 0xF6, 0xE7, 0x88, 0xB5, + 0xF6, 0xE7, 0x89, 0x90, 0xF6, 0xF0, 0xA4, 0x98, + 0x88, 0xF6, 0xE7, 0x8A, 0x80, 0xF6, 0xE7, 0x8A, + 0x95, 0xF6, 0xF0, 0xA4, 0x9C, 0xB5, 0xF6, 0xF0, + 0xA4, 0xA0, 0x94, 0xF6, 0xE7, 0x8D, 0xBA, 0xF6, + 0xE7, 0x8E, 0x8B, 0xF6, 0xE3, 0xBA, 0xAC, 0xF6, + 0xE7, 0x8E, 0xA5, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, + 0xE3, 0xBA, 0xB8, 0xF6, 0xE7, 0x91, 0x87, 0xF6, + 0xE7, 0x91, 0x9C, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, + 0xE7, 0x92, 0x85, 0xF6, 0xE7, 0x93, 0x8A, 0xF6, + 0xE3, 0xBC, 0x9B, 0xF6, 0xE7, 0x94, 0xA4, 0xF6, + 0xF0, 0xA4, 0xB0, 0xB6, 0xF6, 0xE7, 0x94, 0xBE, + 0xF6, 0xF0, 0xA4, 0xB2, 0x92, 0xF6, 0xE7, 0x95, + 0xB0, 0xF6, 0xF0, 0xA2, 0x86, 0x9F, 0xF6, 0xE7, + 0x98, 0x90, 0xF6, 0xF0, 0xA4, 0xBE, 0xA1, 0xF6, + 0xF0, 0xA4, 0xBE, 0xB8, 0xF6, 0xF0, 0xA5, 0x81, + 0x84, 0xF6, 0xE3, 0xBF, 0xBC, 0xF6, 0xE4, 0x80, + 0x88, 0xF6, 0xE7, 0x9B, 0xB4, 0xF6, 0xF0, 0xA5, + 0x83, 0xB3, 0xF6, 0xF0, 0xA5, 0x83, 0xB2, 0xF6, + 0xF0, 0xA5, 0x84, 0x99, 0xF6, 0xF0, 0xA5, 0x84, + 0xB3, 0xF6, 0xE7, 0x9C, 0x9E, 0xF6, 0xE7, 0x9C, + 0x9F, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9D, + 0x8A, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xE7, 0x9E, + 0x8B, 0xF6, 0xE4, 0x81, 0x86, 0xF6, 0xE4, 0x82, + 0x96, 0xF6, 0xF0, 0xA5, 0x90, 0x9D, 0xF6, 0xE7, + 0xA1, 0x8E, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, + 0xA3, 0x8C, 0xF6, 0xE4, 0x83, 0xA3, 0xF6, 0xF0, + 0xA5, 0x98, 0xA6, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, + 0xF0, 0xA5, 0x9A, 0x9A, 0xF6, 0xF0, 0xA5, 0x9B, + 0x85, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE7, 0xA7, + 0xAB, 0xF6, 0xE4, 0x84, 0xAF, 0xF6, 0xE7, 0xA9, + 0x80, 0xF6, 0xE7, 0xA9, 0x8A, 0xF6, 0xE7, 0xA9, + 0x8F, 0xF6, 0xF0, 0xA5, 0xA5, 0xBC, 0xF6, 0xF0, + 0xA5, 0xAA, 0xA7, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, + 0xF6, 0xE7, 0xAB, 0xAE, 0xF6, 0xE4, 0x88, 0x82, + 0xF6, 0xF0, 0xA5, 0xAE, 0xAB, 0xF6, 0xE7, 0xAF, + 0x86, 0xF6, 0xE7, 0xAF, 0x89, 0xF6, 0xE4, 0x88, + 0xA7, 0xF6, 0xF0, 0xA5, 0xB2, 0x80, 0xF6, 0xE7, + 0xB3, 0x92, 0xF6, 0xE4, 0x8A, 0xA0, 0xF6, 0xE7, + 0xB3, 0xA8, 0xF6, 0xE7, 0xB3, 0xA3, 0xF6, 0xE7, + 0xB4, 0x80, 0xF6, 0xF0, 0xA5, 0xBE, 0x86, 0xF6, + 0xE7, 0xB5, 0xA3, 0xF6, 0xE4, 0x8C, 0x81, 0xF6, + 0xE7, 0xB7, 0x87, 0xF6, 0xE7, 0xB8, 0x82, 0xF6, + 0xE7, 0xB9, 0x85, 0xF6, 0xE4, 0x8C, 0xB4, 0xF6, + 0xF0, 0xA6, 0x88, 0xA8, 0xF6, 0xF0, 0xA6, 0x89, + 0x87, 0xF6, 0xE4, 0x8D, 0x99, 0xF6, 0xF0, 0xA6, + 0x8B, 0x99, 0xF6, 0xE7, 0xBD, 0xBA, 0xF6, 0xF0, + 0xA6, 0x8C, 0xBE, 0xF6, 0xE7, 0xBE, 0x95, 0xF6, + 0xE7, 0xBF, 0xBA, 0xF6, 0xE8, 0x80, 0x85, 0xF6, + 0xF0, 0xA6, 0x93, 0x9A, 0xF6, 0xF0, 0xA6, 0x94, + 0xA3, 0xF6, 0xE8, 0x81, 0xA0, 0xF6, 0xF0, 0xA6, + 0x96, 0xA8, 0xF6, 0xE8, 0x81, 0xB0, 0xF6, 0xF0, + 0xA3, 0x8D, 0x9F, 0xF6, 0xE4, 0x8F, 0x95, 0xF6, + 0xE8, 0x82, 0xB2, 0xF6, 0xE8, 0x84, 0x83, 0xF6, + 0xE4, 0x90, 0x8B, 0xF6, 0xE8, 0x84, 0xBE, 0xF6, + 0xE5, 0xAA, 0xB5, 0xF6, 0xF0, 0xA6, 0x9E, 0xA7, + 0xF6, 0xF0, 0xA6, 0x9E, 0xB5, 0xF6, 0xF0, 0xA3, + 0x8E, 0x93, 0xF6, 0xF0, 0xA3, 0x8E, 0x9C, 0xF6, + 0xE8, 0x88, 0x81, 0xF6, 0xE8, 0x88, 0x84, 0xF6, + 0xE8, 0xBE, 0x9E, 0xF6, 0xE4, 0x91, 0xAB, 0xF6, + 0xE8, 0x8A, 0x91, 0xF6, 0xE8, 0x8A, 0x8B, 0xF6, + 0xE8, 0x8A, 0x9D, 0xF6, 0xE5, 0x8A, 0xB3, 0xF6, + 0xE8, 0x8A, 0xB1, 0xF6, 0xE8, 0x8A, 0xB3, 0xF6, + 0xE8, 0x8A, 0xBD, 0xF6, 0xE8, 0x8B, 0xA6, 0xF6, + 0xF0, 0xA6, 0xAC, 0xBC, 0xF6, 0xE8, 0x8B, 0xA5, + 0xF6, 0xE8, 0x8C, 0x9D, 0xF6, 0xE8, 0x8D, 0xA3, + 0xF6, 0xE8, 0x8E, 0xAD, 0xF6, 0xE8, 0x8C, 0xA3, + 0xF6, 0xE8, 0x8E, 0xBD, 0xF6, 0xE8, 0x8F, 0xA7, + 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0x8D, 0x93, + 0xF6, 0xE8, 0x8F, 0x8A, 0xF6, 0xE8, 0x8F, 0x8C, + 0xF6, 0xE8, 0x8F, 0x9C, 0xF6, 0xF0, 0xA6, 0xB0, + 0xB6, 0xF6, 0xF0, 0xA6, 0xB5, 0xAB, 0xF6, 0xF0, + 0xA6, 0xB3, 0x95, 0xF6, 0xE4, 0x94, 0xAB, 0xF6, + 0xE8, 0x93, 0xB1, 0xF6, 0xE8, 0x93, 0xB3, 0xF6, + 0xE8, 0x94, 0x96, 0xF6, 0xF0, 0xA7, 0x8F, 0x8A, + 0xF6, 0xE8, 0x95, 0xA4, 0xF6, 0xF0, 0xA6, 0xBC, + 0xAC, 0xF6, 0xE4, 0x95, 0x9D, 0xF6, 0xE4, 0x95, + 0xA1, 0xF6, 0xF0, 0xA6, 0xBE, 0xB1, 0xF6, 0xF0, + 0xA7, 0x83, 0x92, 0xF6, 0xE4, 0x95, 0xAB, 0xF6, + 0xE8, 0x99, 0x90, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, + 0xE8, 0x99, 0xA7, 0xF6, 0xE8, 0x99, 0xA9, 0xF6, + 0xE8, 0x9A, 0xA9, 0xF6, 0xE8, 0x9A, 0x88, 0xF6, + 0xE8, 0x9C, 0x8E, 0xF6, 0xE8, 0x9B, 0xA2, 0xF6, + 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, 0x9C, 0xA8, 0xF6, + 0xE8, 0x9D, 0xAB, 0xF6, 0xE8, 0x9E, 0x86, 0xF6, + 0xE4, 0x97, 0x97, 0xF6, 0xE8, 0x9F, 0xA1, 0xF6, + 0xE8, 0xA0, 0x81, 0xF6, 0xE4, 0x97, 0xB9, 0xF6, + 0xE8, 0xA1, 0xA0, 0xF6, 0xE8, 0xA1, 0xA3, 0xF6, + 0xF0, 0xA7, 0x99, 0xA7, 0xF6, 0xE8, 0xA3, 0x97, + 0xF6, 0xE8, 0xA3, 0x9E, 0xF6, 0xE4, 0x98, 0xB5, + 0xF6, 0xE8, 0xA3, 0xBA, 0xF6, 0xE3, 0x92, 0xBB, + 0xF6, 0xF0, 0xA7, 0xA2, 0xAE, 0xF6, 0xF0, 0xA7, + 0xA5, 0xA6, 0xF6, 0xE4, 0x9A, 0xBE, 0xF6, 0xE4, + 0x9B, 0x87, 0xF6, 0xE8, 0xAA, 0xA0, 0xF6, 0xE8, + 0xAB, 0xAD, 0xF6, 0xE8, 0xAE, 0x8A, 0xF6, 0xE8, + 0xB1, 0x95, 0xF6, 0xF0, 0xA7, 0xB2, 0xA8, 0xF6, + 0xE8, 0xB2, 0xAB, 0xF6, 0xE8, 0xB3, 0x81, 0xF6, + 0xE8, 0xB4, 0x9B, 0xF6, 0xE8, 0xB5, 0xB7, 0xF6, + 0xF0, 0xA7, 0xBC, 0xAF, 0xF6, 0xF0, 0xA0, 0xA0, + 0x84, 0xF6, 0xE8, 0xB7, 0x8B, 0xF6, 0xE8, 0xB6, + 0xBC, 0xF6, 0xE8, 0xB7, 0xB0, 0xF6, 0xF0, 0xA0, + 0xA3, 0x9E, 0xF6, 0xE8, 0xBB, 0x94, 0xF6, 0xE8, + 0xBC, 0xB8, 0xF6, 0xF0, 0xA8, 0x97, 0x92, 0xF6, + 0xF0, 0xA8, 0x97, 0xAD, 0xF6, 0xE9, 0x82, 0x94, + 0xF6, 0xE9, 0x83, 0xB1, 0xF6, 0xE9, 0x84, 0x91, + 0xF6, 0xF0, 0xA8, 0x9C, 0xAE, 0xF6, 0xE9, 0x84, + 0x9B, 0xF6, 0xE9, 0x88, 0xB8, 0xF6, 0xE9, 0x8B, + 0x97, 0xF6, 0xE9, 0x8B, 0x98, 0xF6, 0xE9, 0x89, + 0xBC, 0xF6, 0xE9, 0x8F, 0xB9, 0xF6, 0xE9, 0x90, + 0x95, 0xF6, 0xF0, 0xA8, 0xAF, 0xBA, 0xF6, 0xE9, + 0x96, 0x8B, 0xF6, 0xE4, 0xA6, 0x95, 0xF6, 0xE9, + 0x96, 0xB7, 0xF6, 0xF0, 0xA8, 0xB5, 0xB7, 0xF6, + 0xE4, 0xA7, 0xA6, 0xF6, 0xE9, 0x9B, 0x83, 0xF6, + 0xE5, 0xB6, 0xB2, 0xF6, 0xE9, 0x9C, 0xA3, 0xF6, + 0xF0, 0xA9, 0x85, 0x85, 0xF6, 0xF0, 0xA9, 0x88, + 0x9A, 0xF6, 0xE4, 0xA9, 0xAE, 0xF6, 0xE4, 0xA9, + 0xB6, 0xF6, 0xE9, 0x9F, 0xA0, 0xF6, 0xF0, 0xA9, + 0x90, 0x8A, 0xF6, 0xE4, 0xAA, 0xB2, 0xF6, 0xF0, + 0xA9, 0x92, 0x96, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, + 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0xA9, 0xF6, + 0xF0, 0xA9, 0x96, 0xB6, 0xF6, 0xE9, 0xA3, 0xA2, + 0xF6, 0xE4, 0xAC, 0xB3, 0xF6, 0xE9, 0xA4, 0xA9, + 0xF6, 0xE9, 0xA6, 0xA7, 0xF6, 0xE9, 0xA7, 0x82, + 0xF6, 0xE9, 0xA7, 0xBE, 0xF6, 0xE4, 0xAF, 0x8E, + 0xF6, 0xF0, 0xA9, 0xAC, 0xB0, 0xF6, 0xE9, 0xAC, + 0x92, 0xF6, 0xE9, 0xB1, 0x80, 0xF6, 0xE9, 0xB3, + 0xBD, 0xF6, 0xE4, 0xB3, 0x8E, 0xF6, 0xE4, 0xB3, + 0xAD, 0xF6, 0xE9, 0xB5, 0xA7, 0xF6, 0xF0, 0xAA, + 0x83, 0x8E, 0xF6, 0xE4, 0xB3, 0xB8, 0xF6, 0xF0, + 0xAA, 0x84, 0x85, 0xF6, 0xF0, 0xAA, 0x88, 0x8E, + 0xF6, 0xF0, 0xAA, 0x8A, 0x91, 0xF6, 0xE9, 0xBA, + 0xBB, 0xF6, 0xE4, 0xB5, 0x96, 0xF6, 0xE9, 0xBB, + 0xB9, 0xF6, 0xE9, 0xBB, 0xBE, 0xF6, 0xE9, 0xBC, + 0x85, 0xF6, 0xE9, 0xBC, 0x8F, 0xF6, 0xE9, 0xBC, + 0x96, 0xF6, 0xE9, 0xBC, 0xBB, 0xF6, 0xF0, 0xAA, + 0x98, 0x80, + }, +}; + +static const uchar_t u8_case_common_b2_tbl[2][2][256] = { + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, 1, 2, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 3, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 4, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + { + { + 0, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, 1, 2, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, 3, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + { + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + 4, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + N_, N_, N_, N_, N_, N_, N_, N_, + }, + + }, + +}; + +static const u8_displacement_t u8_tolower_b3_tbl[2][5][256] = { + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, + { 1, 60 }, { 2, 123 }, { 3, 185 }, { 4, 257 }, + { 5, 321 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 6, 373 }, { 7, 439 }, + { 8, 465 }, { 9, 561 }, { 10, 593 }, { 11, 649 }, + { 12, 703 }, { 13, 749 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 14, 795 }, { 15, 891 }, { 16, 987 }, { 17, 1068 }, + { 18, 1155 }, { 19, 1245 }, { 20, 1299 }, { 21, 1386 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 22, 1443 }, { 23, 1448 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 24, 1496 }, { 25, 1526 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 26, 1574 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 27, 1652 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + }, + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, + { 1, 60 }, { 2, 123 }, { 3, 185 }, { 4, 257 }, + { 5, 321 }, { 6, 383 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 7, 401 }, { 8, 467 }, + { 9, 505 }, { 10, 601 }, { 11, 633 }, { 12, 689 }, + { 13, 753 }, { 14, 803 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 15, 849 }, { 16, 945 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 17, 963 }, { 18, 1059 }, { 19, 1155 }, { 20, 1236 }, + { 21, 1323 }, { 22, 1413 }, { 23, 1467 }, { 24, 1554 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 25, 1611 }, { 26, 1619 }, { 27, 1667 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 28, 1670 }, { 29, 1700 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 30, 1748 }, { 31, 1889 }, { 32, 1911 }, { 33, 2007 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 34, 2061 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 35, 2139 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + }, +}; + +static const uchar_t u8_tolower_b4_tbl[2][36][257] = { + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 48, 50, 52, 54, 56, 58, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 49, 49, 51, 51, 53, 53, 55, + 55, 55, 57, 57, 59, 59, 61, 61, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 8, 10, 10, 12, 12, 14, + 14, 16, 16, 18, 18, 20, 20, 22, + 22, 24, 24, 26, 26, 28, 28, 30, + 30, 32, 32, 34, 34, 36, 36, 38, + 38, 40, 40, 42, 42, 44, 44, 46, + 46, 48, 48, 50, 50, 52, 52, 54, + 54, 56, 58, 58, 60, 60, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 4, 6, 6, 8, + 10, 10, 12, 14, 16, 16, 16, 18, + 20, 22, 24, 24, 26, 28, 28, 30, + 32, 34, 34, 34, 34, 36, 38, 38, + 40, 42, 42, 44, 44, 46, 46, 48, + 50, 50, 52, 52, 52, 54, 54, 56, + 58, 58, 60, 62, 64, 64, 66, 66, + 68, 70, 70, 70, 70, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 4, + 6, 8, 8, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 28, 30, + 30, 32, 32, 34, 34, 36, 36, 38, + 38, 40, 40, 42, 42, 44, 44, 46, + 46, 46, 48, 50, 50, 52, 52, 54, + 56, 58, 58, 60, 60, 62, 62, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 50, 50, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 2, 4, 6, 8, 8, 10, 10, 12, + 14, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 42, + 44, 46, 48, 48, 50, 52, 54, 56, + 58, 60, 62, 64, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 24, 24, 24, 24, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 50, 50, 52, 52, 54, 54, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 14, 16, 16, 18, 18, 20, 20, 22, + 22, 24, 24, 26, 26, 28, 28, 30, + 30, 32, 32, 34, 34, 36, 36, 38, + 38, 40, 40, 42, 42, 44, 44, 46, + 46, 48, 48, 50, 50, 52, 52, 52, + 52, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 90, 90, 93, 93, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 90, 90, 93, 93, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, + 33, 36, 36, 39, 39, 42, 42, 45, + 45, 48, 48, 51, 51, 54, 54, 57, + 57, 60, 60, 63, 63, 66, 66, 69, + 69, 72, 72, 75, 75, 78, 78, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 60, 63, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 69, 72, 75, 78, 81, 84, 87, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 21, 21, 24, 24, 27, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 33, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 75, 78, 81, 84, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 18, 21, 24, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 30, 33, 36, 39, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 3, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 6, 9, 12, 15, 18, 21, 24, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 48, 51, 54, 57, 60, 63, 66, + 69, 72, 75, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + }, + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 48, 50, 52, 54, 56, 58, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, + 60, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 49, 49, 51, 51, 53, 53, 55, + 55, 55, 57, 57, 59, 59, 61, 61, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 8, 10, 10, 12, 12, 14, + 14, 16, 16, 18, 18, 20, 20, 22, + 22, 24, 24, 26, 26, 28, 28, 30, + 30, 32, 32, 34, 34, 36, 36, 38, + 38, 40, 40, 42, 42, 44, 44, 46, + 46, 48, 48, 50, 50, 52, 52, 54, + 54, 56, 58, 58, 60, 60, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 4, 6, 6, 8, + 10, 10, 12, 14, 16, 16, 16, 18, + 20, 22, 24, 24, 26, 28, 28, 30, + 32, 34, 34, 34, 34, 36, 38, 38, + 40, 42, 42, 44, 44, 46, 46, 48, + 50, 50, 52, 52, 52, 54, 54, 56, + 58, 58, 60, 62, 64, 64, 66, 66, + 68, 70, 70, 70, 70, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 4, + 6, 8, 8, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 28, 30, + 30, 32, 32, 34, 34, 36, 36, 38, + 38, 40, 40, 42, 42, 44, 44, 46, + 46, 46, 48, 50, 50, 52, 52, 54, + 56, 58, 58, 60, 60, 62, 62, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 50, 50, 52, 52, 52, 52, 52, + 52, 52, 52, 55, 57, 57, 59, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 6, 8, 10, + 10, 12, 12, 14, 14, 16, 16, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 2, 4, 6, 8, 8, 10, 10, 12, + 14, 14, 16, 18, 20, 22, 24, 26, + 28, 30, 32, 34, 36, 38, 40, 42, + 44, 46, 48, 48, 50, 52, 54, 56, + 58, 60, 62, 64, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 24, 24, 24, 24, 26, 26, 26, + 28, 28, 30, 32, 32, 32, 34, 36, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 50, 50, 52, 52, 54, 54, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 4, 6, 6, 8, 8, + 10, 10, 12, 12, 14, 14, 16, 16, + 16, 18, 18, 20, 20, 22, 22, 24, + 24, 26, 26, 28, 28, 30, 30, 32, + 32, 34, 34, 36, 36, 38, 38, 40, + 40, 42, 42, 44, 44, 46, 46, 48, + 48, 50, 50, 52, 52, 54, 54, 56, + 56, 58, 58, 60, 60, 62, 62, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 12, 12, 14, 14, 16, + 16, 18, 18, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 22, 24, 26, 28, 30, 32, + 34, 36, 38, 40, 42, 44, 46, 48, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, + 46, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 90, 90, 93, 93, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 90, 90, 93, 93, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, + 33, 36, 36, 39, 39, 42, 42, 45, + 45, 48, 48, 51, 51, 54, 54, 57, + 57, 60, 60, 63, 63, 66, 66, 69, + 69, 72, 72, 75, 75, 78, 78, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, + 81, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 60, 63, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 69, 72, 75, 78, 81, 84, 87, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 21, 21, 24, 24, 27, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 33, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 75, 78, 81, 84, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 18, 21, 24, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, + 27, 30, 33, 36, 39, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 3, 5, 5, 5, 5, + 5, 5, 5, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 6, 9, 12, 15, 18, 21, 24, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 117, + 120, 123, 126, 129, 132, 135, 138, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, + 141, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 5, 8, 10, 10, 10, + 13, 13, 16, 16, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 57, 57, 60, + 60, 63, 63, 66, 66, 69, 69, 72, + 72, 75, 75, 78, 78, 81, 81, 84, + 84, 87, 87, 90, 90, 93, 93, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 6, 6, 9, 9, 12, + 12, 15, 15, 18, 18, 21, 21, 24, + 24, 27, 27, 30, 30, 33, 33, 36, + 36, 39, 39, 42, 42, 45, 45, 48, + 48, 51, 51, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 48, 51, 54, 57, 60, 63, 66, + 69, 72, 75, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, + 128, 132, 136, 140, 144, 148, 152, 156, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, + }, + }, +}; + +static const uchar_t u8_tolower_final_tbl[2][2299] = { + { + 0xC3, 0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0xA3, + 0xC3, 0xA4, 0xC3, 0xA5, 0xC3, 0xA6, 0xC3, 0xA7, + 0xC3, 0xA8, 0xC3, 0xA9, 0xC3, 0xAA, 0xC3, 0xAB, + 0xC3, 0xAC, 0xC3, 0xAD, 0xC3, 0xAE, 0xC3, 0xAF, + 0xC3, 0xB0, 0xC3, 0xB1, 0xC3, 0xB2, 0xC3, 0xB3, + 0xC3, 0xB4, 0xC3, 0xB5, 0xC3, 0xB6, 0xC3, 0xB8, + 0xC3, 0xB9, 0xC3, 0xBA, 0xC3, 0xBB, 0xC3, 0xBC, + 0xC3, 0xBD, 0xC3, 0xBE, 0xC4, 0x81, 0xC4, 0x83, + 0xC4, 0x85, 0xC4, 0x87, 0xC4, 0x89, 0xC4, 0x8B, + 0xC4, 0x8D, 0xC4, 0x8F, 0xC4, 0x91, 0xC4, 0x93, + 0xC4, 0x95, 0xC4, 0x97, 0xC4, 0x99, 0xC4, 0x9B, + 0xC4, 0x9D, 0xC4, 0x9F, 0xC4, 0xA1, 0xC4, 0xA3, + 0xC4, 0xA5, 0xC4, 0xA7, 0xC4, 0xA9, 0xC4, 0xAB, + 0xC4, 0xAD, 0xC4, 0xAF, 0x69, 0xC4, 0xB3, 0xC4, + 0xB5, 0xC4, 0xB7, 0xC4, 0xBA, 0xC4, 0xBC, 0xC4, + 0xBE, 0xC5, 0x80, 0xC5, 0x82, 0xC5, 0x84, 0xC5, + 0x86, 0xC5, 0x88, 0xC5, 0x8B, 0xC5, 0x8D, 0xC5, + 0x8F, 0xC5, 0x91, 0xC5, 0x93, 0xC5, 0x95, 0xC5, + 0x97, 0xC5, 0x99, 0xC5, 0x9B, 0xC5, 0x9D, 0xC5, + 0x9F, 0xC5, 0xA1, 0xC5, 0xA3, 0xC5, 0xA5, 0xC5, + 0xA7, 0xC5, 0xA9, 0xC5, 0xAB, 0xC5, 0xAD, 0xC5, + 0xAF, 0xC5, 0xB1, 0xC5, 0xB3, 0xC5, 0xB5, 0xC5, + 0xB7, 0xC3, 0xBF, 0xC5, 0xBA, 0xC5, 0xBC, 0xC5, + 0xBE, 0xC9, 0x93, 0xC6, 0x83, 0xC6, 0x85, 0xC9, + 0x94, 0xC6, 0x88, 0xC9, 0x96, 0xC9, 0x97, 0xC6, + 0x8C, 0xC7, 0x9D, 0xC9, 0x99, 0xC9, 0x9B, 0xC6, + 0x92, 0xC9, 0xA0, 0xC9, 0xA3, 0xC9, 0xA9, 0xC9, + 0xA8, 0xC6, 0x99, 0xC9, 0xAF, 0xC9, 0xB2, 0xC9, + 0xB5, 0xC6, 0xA1, 0xC6, 0xA3, 0xC6, 0xA5, 0xCA, + 0x80, 0xC6, 0xA8, 0xCA, 0x83, 0xC6, 0xAD, 0xCA, + 0x88, 0xC6, 0xB0, 0xCA, 0x8A, 0xCA, 0x8B, 0xC6, + 0xB4, 0xC6, 0xB6, 0xCA, 0x92, 0xC6, 0xB9, 0xC6, + 0xBD, 0xC7, 0x86, 0xC7, 0x86, 0xC7, 0x89, 0xC7, + 0x89, 0xC7, 0x8C, 0xC7, 0x8C, 0xC7, 0x8E, 0xC7, + 0x90, 0xC7, 0x92, 0xC7, 0x94, 0xC7, 0x96, 0xC7, + 0x98, 0xC7, 0x9A, 0xC7, 0x9C, 0xC7, 0x9F, 0xC7, + 0xA1, 0xC7, 0xA3, 0xC7, 0xA5, 0xC7, 0xA7, 0xC7, + 0xA9, 0xC7, 0xAB, 0xC7, 0xAD, 0xC7, 0xAF, 0xC7, + 0xB3, 0xC7, 0xB3, 0xC7, 0xB5, 0xC6, 0x95, 0xC6, + 0xBF, 0xC7, 0xB9, 0xC7, 0xBB, 0xC7, 0xBD, 0xC7, + 0xBF, 0xC8, 0x81, 0xC8, 0x83, 0xC8, 0x85, 0xC8, + 0x87, 0xC8, 0x89, 0xC8, 0x8B, 0xC8, 0x8D, 0xC8, + 0x8F, 0xC8, 0x91, 0xC8, 0x93, 0xC8, 0x95, 0xC8, + 0x97, 0xC8, 0x99, 0xC8, 0x9B, 0xC8, 0x9D, 0xC8, + 0x9F, 0xC6, 0x9E, 0xC8, 0xA3, 0xC8, 0xA5, 0xC8, + 0xA7, 0xC8, 0xA9, 0xC8, 0xAB, 0xC8, 0xAD, 0xC8, + 0xAF, 0xC8, 0xB1, 0xC8, 0xB3, 0xCE, 0xAC, 0xCE, + 0xAD, 0xCE, 0xAE, 0xCE, 0xAF, 0xCF, 0x8C, 0xCF, + 0x8D, 0xCF, 0x8E, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, + 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, + 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, + 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, + 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x83, 0xCF, + 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, + 0x88, 0xCF, 0x89, 0xCF, 0x8A, 0xCF, 0x8B, 0xCF, + 0x99, 0xCF, 0x9B, 0xCF, 0x9D, 0xCF, 0x9F, 0xCF, + 0xA1, 0xCF, 0xA3, 0xCF, 0xA5, 0xCF, 0xA7, 0xCF, + 0xA9, 0xCF, 0xAB, 0xCF, 0xAD, 0xCF, 0xAF, 0xCE, + 0xB8, 0xD1, 0x90, 0xD1, 0x91, 0xD1, 0x92, 0xD1, + 0x93, 0xD1, 0x94, 0xD1, 0x95, 0xD1, 0x96, 0xD1, + 0x97, 0xD1, 0x98, 0xD1, 0x99, 0xD1, 0x9A, 0xD1, + 0x9B, 0xD1, 0x9C, 0xD1, 0x9D, 0xD1, 0x9E, 0xD1, + 0x9F, 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2, 0xD0, + 0xB3, 0xD0, 0xB4, 0xD0, 0xB5, 0xD0, 0xB6, 0xD0, + 0xB7, 0xD0, 0xB8, 0xD0, 0xB9, 0xD0, 0xBA, 0xD0, + 0xBB, 0xD0, 0xBC, 0xD0, 0xBD, 0xD0, 0xBE, 0xD0, + 0xBF, 0xD1, 0x80, 0xD1, 0x81, 0xD1, 0x82, 0xD1, + 0x83, 0xD1, 0x84, 0xD1, 0x85, 0xD1, 0x86, 0xD1, + 0x87, 0xD1, 0x88, 0xD1, 0x89, 0xD1, 0x8A, 0xD1, + 0x8B, 0xD1, 0x8C, 0xD1, 0x8D, 0xD1, 0x8E, 0xD1, + 0x8F, 0xD1, 0xA1, 0xD1, 0xA3, 0xD1, 0xA5, 0xD1, + 0xA7, 0xD1, 0xA9, 0xD1, 0xAB, 0xD1, 0xAD, 0xD1, + 0xAF, 0xD1, 0xB1, 0xD1, 0xB3, 0xD1, 0xB5, 0xD1, + 0xB7, 0xD1, 0xB9, 0xD1, 0xBB, 0xD1, 0xBD, 0xD1, + 0xBF, 0xD2, 0x81, 0xD2, 0x8B, 0xD2, 0x8D, 0xD2, + 0x8F, 0xD2, 0x91, 0xD2, 0x93, 0xD2, 0x95, 0xD2, + 0x97, 0xD2, 0x99, 0xD2, 0x9B, 0xD2, 0x9D, 0xD2, + 0x9F, 0xD2, 0xA1, 0xD2, 0xA3, 0xD2, 0xA5, 0xD2, + 0xA7, 0xD2, 0xA9, 0xD2, 0xAB, 0xD2, 0xAD, 0xD2, + 0xAF, 0xD2, 0xB1, 0xD2, 0xB3, 0xD2, 0xB5, 0xD2, + 0xB7, 0xD2, 0xB9, 0xD2, 0xBB, 0xD2, 0xBD, 0xD2, + 0xBF, 0xD3, 0x82, 0xD3, 0x84, 0xD3, 0x86, 0xD3, + 0x88, 0xD3, 0x8A, 0xD3, 0x8C, 0xD3, 0x8E, 0xD3, + 0x91, 0xD3, 0x93, 0xD3, 0x95, 0xD3, 0x97, 0xD3, + 0x99, 0xD3, 0x9B, 0xD3, 0x9D, 0xD3, 0x9F, 0xD3, + 0xA1, 0xD3, 0xA3, 0xD3, 0xA5, 0xD3, 0xA7, 0xD3, + 0xA9, 0xD3, 0xAB, 0xD3, 0xAD, 0xD3, 0xAF, 0xD3, + 0xB1, 0xD3, 0xB3, 0xD3, 0xB5, 0xD3, 0xB9, 0xD4, + 0x81, 0xD4, 0x83, 0xD4, 0x85, 0xD4, 0x87, 0xD4, + 0x89, 0xD4, 0x8B, 0xD4, 0x8D, 0xD4, 0x8F, 0xD5, + 0xA1, 0xD5, 0xA2, 0xD5, 0xA3, 0xD5, 0xA4, 0xD5, + 0xA5, 0xD5, 0xA6, 0xD5, 0xA7, 0xD5, 0xA8, 0xD5, + 0xA9, 0xD5, 0xAA, 0xD5, 0xAB, 0xD5, 0xAC, 0xD5, + 0xAD, 0xD5, 0xAE, 0xD5, 0xAF, 0xD5, 0xB0, 0xD5, + 0xB1, 0xD5, 0xB2, 0xD5, 0xB3, 0xD5, 0xB4, 0xD5, + 0xB5, 0xD5, 0xB6, 0xD5, 0xB7, 0xD5, 0xB8, 0xD5, + 0xB9, 0xD5, 0xBA, 0xD5, 0xBB, 0xD5, 0xBC, 0xD5, + 0xBD, 0xD5, 0xBE, 0xD5, 0xBF, 0xD6, 0x80, 0xD6, + 0x81, 0xD6, 0x82, 0xD6, 0x83, 0xD6, 0x84, 0xD6, + 0x85, 0xD6, 0x86, 0xE1, 0xB8, 0x81, 0xE1, 0xB8, + 0x83, 0xE1, 0xB8, 0x85, 0xE1, 0xB8, 0x87, 0xE1, + 0xB8, 0x89, 0xE1, 0xB8, 0x8B, 0xE1, 0xB8, 0x8D, + 0xE1, 0xB8, 0x8F, 0xE1, 0xB8, 0x91, 0xE1, 0xB8, + 0x93, 0xE1, 0xB8, 0x95, 0xE1, 0xB8, 0x97, 0xE1, + 0xB8, 0x99, 0xE1, 0xB8, 0x9B, 0xE1, 0xB8, 0x9D, + 0xE1, 0xB8, 0x9F, 0xE1, 0xB8, 0xA1, 0xE1, 0xB8, + 0xA3, 0xE1, 0xB8, 0xA5, 0xE1, 0xB8, 0xA7, 0xE1, + 0xB8, 0xA9, 0xE1, 0xB8, 0xAB, 0xE1, 0xB8, 0xAD, + 0xE1, 0xB8, 0xAF, 0xE1, 0xB8, 0xB1, 0xE1, 0xB8, + 0xB3, 0xE1, 0xB8, 0xB5, 0xE1, 0xB8, 0xB7, 0xE1, + 0xB8, 0xB9, 0xE1, 0xB8, 0xBB, 0xE1, 0xB8, 0xBD, + 0xE1, 0xB8, 0xBF, 0xE1, 0xB9, 0x81, 0xE1, 0xB9, + 0x83, 0xE1, 0xB9, 0x85, 0xE1, 0xB9, 0x87, 0xE1, + 0xB9, 0x89, 0xE1, 0xB9, 0x8B, 0xE1, 0xB9, 0x8D, + 0xE1, 0xB9, 0x8F, 0xE1, 0xB9, 0x91, 0xE1, 0xB9, + 0x93, 0xE1, 0xB9, 0x95, 0xE1, 0xB9, 0x97, 0xE1, + 0xB9, 0x99, 0xE1, 0xB9, 0x9B, 0xE1, 0xB9, 0x9D, + 0xE1, 0xB9, 0x9F, 0xE1, 0xB9, 0xA1, 0xE1, 0xB9, + 0xA3, 0xE1, 0xB9, 0xA5, 0xE1, 0xB9, 0xA7, 0xE1, + 0xB9, 0xA9, 0xE1, 0xB9, 0xAB, 0xE1, 0xB9, 0xAD, + 0xE1, 0xB9, 0xAF, 0xE1, 0xB9, 0xB1, 0xE1, 0xB9, + 0xB3, 0xE1, 0xB9, 0xB5, 0xE1, 0xB9, 0xB7, 0xE1, + 0xB9, 0xB9, 0xE1, 0xB9, 0xBB, 0xE1, 0xB9, 0xBD, + 0xE1, 0xB9, 0xBF, 0xE1, 0xBA, 0x81, 0xE1, 0xBA, + 0x83, 0xE1, 0xBA, 0x85, 0xE1, 0xBA, 0x87, 0xE1, + 0xBA, 0x89, 0xE1, 0xBA, 0x8B, 0xE1, 0xBA, 0x8D, + 0xE1, 0xBA, 0x8F, 0xE1, 0xBA, 0x91, 0xE1, 0xBA, + 0x93, 0xE1, 0xBA, 0x95, 0xE1, 0xBA, 0xA1, 0xE1, + 0xBA, 0xA3, 0xE1, 0xBA, 0xA5, 0xE1, 0xBA, 0xA7, + 0xE1, 0xBA, 0xA9, 0xE1, 0xBA, 0xAB, 0xE1, 0xBA, + 0xAD, 0xE1, 0xBA, 0xAF, 0xE1, 0xBA, 0xB1, 0xE1, + 0xBA, 0xB3, 0xE1, 0xBA, 0xB5, 0xE1, 0xBA, 0xB7, + 0xE1, 0xBA, 0xB9, 0xE1, 0xBA, 0xBB, 0xE1, 0xBA, + 0xBD, 0xE1, 0xBA, 0xBF, 0xE1, 0xBB, 0x81, 0xE1, + 0xBB, 0x83, 0xE1, 0xBB, 0x85, 0xE1, 0xBB, 0x87, + 0xE1, 0xBB, 0x89, 0xE1, 0xBB, 0x8B, 0xE1, 0xBB, + 0x8D, 0xE1, 0xBB, 0x8F, 0xE1, 0xBB, 0x91, 0xE1, + 0xBB, 0x93, 0xE1, 0xBB, 0x95, 0xE1, 0xBB, 0x97, + 0xE1, 0xBB, 0x99, 0xE1, 0xBB, 0x9B, 0xE1, 0xBB, + 0x9D, 0xE1, 0xBB, 0x9F, 0xE1, 0xBB, 0xA1, 0xE1, + 0xBB, 0xA3, 0xE1, 0xBB, 0xA5, 0xE1, 0xBB, 0xA7, + 0xE1, 0xBB, 0xA9, 0xE1, 0xBB, 0xAB, 0xE1, 0xBB, + 0xAD, 0xE1, 0xBB, 0xAF, 0xE1, 0xBB, 0xB1, 0xE1, + 0xBB, 0xB3, 0xE1, 0xBB, 0xB5, 0xE1, 0xBB, 0xB7, + 0xE1, 0xBB, 0xB9, 0xE1, 0xBC, 0x80, 0xE1, 0xBC, + 0x81, 0xE1, 0xBC, 0x82, 0xE1, 0xBC, 0x83, 0xE1, + 0xBC, 0x84, 0xE1, 0xBC, 0x85, 0xE1, 0xBC, 0x86, + 0xE1, 0xBC, 0x87, 0xE1, 0xBC, 0x90, 0xE1, 0xBC, + 0x91, 0xE1, 0xBC, 0x92, 0xE1, 0xBC, 0x93, 0xE1, + 0xBC, 0x94, 0xE1, 0xBC, 0x95, 0xE1, 0xBC, 0xA0, + 0xE1, 0xBC, 0xA1, 0xE1, 0xBC, 0xA2, 0xE1, 0xBC, + 0xA3, 0xE1, 0xBC, 0xA4, 0xE1, 0xBC, 0xA5, 0xE1, + 0xBC, 0xA6, 0xE1, 0xBC, 0xA7, 0xE1, 0xBC, 0xB0, + 0xE1, 0xBC, 0xB1, 0xE1, 0xBC, 0xB2, 0xE1, 0xBC, + 0xB3, 0xE1, 0xBC, 0xB4, 0xE1, 0xBC, 0xB5, 0xE1, + 0xBC, 0xB6, 0xE1, 0xBC, 0xB7, 0xE1, 0xBD, 0x80, + 0xE1, 0xBD, 0x81, 0xE1, 0xBD, 0x82, 0xE1, 0xBD, + 0x83, 0xE1, 0xBD, 0x84, 0xE1, 0xBD, 0x85, 0xE1, + 0xBD, 0x91, 0xE1, 0xBD, 0x93, 0xE1, 0xBD, 0x95, + 0xE1, 0xBD, 0x97, 0xE1, 0xBD, 0xA0, 0xE1, 0xBD, + 0xA1, 0xE1, 0xBD, 0xA2, 0xE1, 0xBD, 0xA3, 0xE1, + 0xBD, 0xA4, 0xE1, 0xBD, 0xA5, 0xE1, 0xBD, 0xA6, + 0xE1, 0xBD, 0xA7, 0xE1, 0xBE, 0x80, 0xE1, 0xBE, + 0x81, 0xE1, 0xBE, 0x82, 0xE1, 0xBE, 0x83, 0xE1, + 0xBE, 0x84, 0xE1, 0xBE, 0x85, 0xE1, 0xBE, 0x86, + 0xE1, 0xBE, 0x87, 0xE1, 0xBE, 0x90, 0xE1, 0xBE, + 0x91, 0xE1, 0xBE, 0x92, 0xE1, 0xBE, 0x93, 0xE1, + 0xBE, 0x94, 0xE1, 0xBE, 0x95, 0xE1, 0xBE, 0x96, + 0xE1, 0xBE, 0x97, 0xE1, 0xBE, 0xA0, 0xE1, 0xBE, + 0xA1, 0xE1, 0xBE, 0xA2, 0xE1, 0xBE, 0xA3, 0xE1, + 0xBE, 0xA4, 0xE1, 0xBE, 0xA5, 0xE1, 0xBE, 0xA6, + 0xE1, 0xBE, 0xA7, 0xE1, 0xBE, 0xB0, 0xE1, 0xBE, + 0xB1, 0xE1, 0xBD, 0xB0, 0xE1, 0xBD, 0xB1, 0xE1, + 0xBE, 0xB3, 0xE1, 0xBD, 0xB2, 0xE1, 0xBD, 0xB3, + 0xE1, 0xBD, 0xB4, 0xE1, 0xBD, 0xB5, 0xE1, 0xBF, + 0x83, 0xE1, 0xBF, 0x90, 0xE1, 0xBF, 0x91, 0xE1, + 0xBD, 0xB6, 0xE1, 0xBD, 0xB7, 0xE1, 0xBF, 0xA0, + 0xE1, 0xBF, 0xA1, 0xE1, 0xBD, 0xBA, 0xE1, 0xBD, + 0xBB, 0xE1, 0xBF, 0xA5, 0xE1, 0xBD, 0xB8, 0xE1, + 0xBD, 0xB9, 0xE1, 0xBD, 0xBC, 0xE1, 0xBD, 0xBD, + 0xE1, 0xBF, 0xB3, 0xCF, 0x89, 0x6B, 0xC3, 0xA5, + 0xE2, 0x85, 0xB0, 0xE2, 0x85, 0xB1, 0xE2, 0x85, + 0xB2, 0xE2, 0x85, 0xB3, 0xE2, 0x85, 0xB4, 0xE2, + 0x85, 0xB5, 0xE2, 0x85, 0xB6, 0xE2, 0x85, 0xB7, + 0xE2, 0x85, 0xB8, 0xE2, 0x85, 0xB9, 0xE2, 0x85, + 0xBA, 0xE2, 0x85, 0xBB, 0xE2, 0x85, 0xBC, 0xE2, + 0x85, 0xBD, 0xE2, 0x85, 0xBE, 0xE2, 0x85, 0xBF, + 0xE2, 0x93, 0x90, 0xE2, 0x93, 0x91, 0xE2, 0x93, + 0x92, 0xE2, 0x93, 0x93, 0xE2, 0x93, 0x94, 0xE2, + 0x93, 0x95, 0xE2, 0x93, 0x96, 0xE2, 0x93, 0x97, + 0xE2, 0x93, 0x98, 0xE2, 0x93, 0x99, 0xE2, 0x93, + 0x9A, 0xE2, 0x93, 0x9B, 0xE2, 0x93, 0x9C, 0xE2, + 0x93, 0x9D, 0xE2, 0x93, 0x9E, 0xE2, 0x93, 0x9F, + 0xE2, 0x93, 0xA0, 0xE2, 0x93, 0xA1, 0xE2, 0x93, + 0xA2, 0xE2, 0x93, 0xA3, 0xE2, 0x93, 0xA4, 0xE2, + 0x93, 0xA5, 0xE2, 0x93, 0xA6, 0xE2, 0x93, 0xA7, + 0xE2, 0x93, 0xA8, 0xE2, 0x93, 0xA9, 0xEF, 0xBD, + 0x81, 0xEF, 0xBD, 0x82, 0xEF, 0xBD, 0x83, 0xEF, + 0xBD, 0x84, 0xEF, 0xBD, 0x85, 0xEF, 0xBD, 0x86, + 0xEF, 0xBD, 0x87, 0xEF, 0xBD, 0x88, 0xEF, 0xBD, + 0x89, 0xEF, 0xBD, 0x8A, 0xEF, 0xBD, 0x8B, 0xEF, + 0xBD, 0x8C, 0xEF, 0xBD, 0x8D, 0xEF, 0xBD, 0x8E, + 0xEF, 0xBD, 0x8F, 0xEF, 0xBD, 0x90, 0xEF, 0xBD, + 0x91, 0xEF, 0xBD, 0x92, 0xEF, 0xBD, 0x93, 0xEF, + 0xBD, 0x94, 0xEF, 0xBD, 0x95, 0xEF, 0xBD, 0x96, + 0xEF, 0xBD, 0x97, 0xEF, 0xBD, 0x98, 0xEF, 0xBD, + 0x99, 0xEF, 0xBD, 0x9A, 0xF0, 0x90, 0x90, 0xA8, + 0xF0, 0x90, 0x90, 0xA9, 0xF0, 0x90, 0x90, 0xAA, + 0xF0, 0x90, 0x90, 0xAB, 0xF0, 0x90, 0x90, 0xAC, + 0xF0, 0x90, 0x90, 0xAD, 0xF0, 0x90, 0x90, 0xAE, + 0xF0, 0x90, 0x90, 0xAF, 0xF0, 0x90, 0x90, 0xB0, + 0xF0, 0x90, 0x90, 0xB1, 0xF0, 0x90, 0x90, 0xB2, + 0xF0, 0x90, 0x90, 0xB3, 0xF0, 0x90, 0x90, 0xB4, + 0xF0, 0x90, 0x90, 0xB5, 0xF0, 0x90, 0x90, 0xB6, + 0xF0, 0x90, 0x90, 0xB7, 0xF0, 0x90, 0x90, 0xB8, + 0xF0, 0x90, 0x90, 0xB9, 0xF0, 0x90, 0x90, 0xBA, + 0xF0, 0x90, 0x90, 0xBB, 0xF0, 0x90, 0x90, 0xBC, + 0xF0, 0x90, 0x90, 0xBD, 0xF0, 0x90, 0x90, 0xBE, + 0xF0, 0x90, 0x90, 0xBF, 0xF0, 0x90, 0x91, 0x80, + 0xF0, 0x90, 0x91, 0x81, 0xF0, 0x90, 0x91, 0x82, + 0xF0, 0x90, 0x91, 0x83, 0xF0, 0x90, 0x91, 0x84, + 0xF0, 0x90, 0x91, 0x85, 0xF0, 0x90, 0x91, 0x86, + 0xF0, 0x90, 0x91, 0x87, 0xF0, 0x90, 0x91, 0x88, + 0xF0, 0x90, 0x91, 0x89, 0xF0, 0x90, 0x91, 0x8A, + 0xF0, 0x90, 0x91, 0x8B, 0xF0, 0x90, 0x91, 0x8C, + 0xF0, 0x90, 0x91, 0x8D, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + }, + { + 0xC3, 0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0xA3, + 0xC3, 0xA4, 0xC3, 0xA5, 0xC3, 0xA6, 0xC3, 0xA7, + 0xC3, 0xA8, 0xC3, 0xA9, 0xC3, 0xAA, 0xC3, 0xAB, + 0xC3, 0xAC, 0xC3, 0xAD, 0xC3, 0xAE, 0xC3, 0xAF, + 0xC3, 0xB0, 0xC3, 0xB1, 0xC3, 0xB2, 0xC3, 0xB3, + 0xC3, 0xB4, 0xC3, 0xB5, 0xC3, 0xB6, 0xC3, 0xB8, + 0xC3, 0xB9, 0xC3, 0xBA, 0xC3, 0xBB, 0xC3, 0xBC, + 0xC3, 0xBD, 0xC3, 0xBE, 0xC4, 0x81, 0xC4, 0x83, + 0xC4, 0x85, 0xC4, 0x87, 0xC4, 0x89, 0xC4, 0x8B, + 0xC4, 0x8D, 0xC4, 0x8F, 0xC4, 0x91, 0xC4, 0x93, + 0xC4, 0x95, 0xC4, 0x97, 0xC4, 0x99, 0xC4, 0x9B, + 0xC4, 0x9D, 0xC4, 0x9F, 0xC4, 0xA1, 0xC4, 0xA3, + 0xC4, 0xA5, 0xC4, 0xA7, 0xC4, 0xA9, 0xC4, 0xAB, + 0xC4, 0xAD, 0xC4, 0xAF, 0x69, 0xC4, 0xB3, 0xC4, + 0xB5, 0xC4, 0xB7, 0xC4, 0xBA, 0xC4, 0xBC, 0xC4, + 0xBE, 0xC5, 0x80, 0xC5, 0x82, 0xC5, 0x84, 0xC5, + 0x86, 0xC5, 0x88, 0xC5, 0x8B, 0xC5, 0x8D, 0xC5, + 0x8F, 0xC5, 0x91, 0xC5, 0x93, 0xC5, 0x95, 0xC5, + 0x97, 0xC5, 0x99, 0xC5, 0x9B, 0xC5, 0x9D, 0xC5, + 0x9F, 0xC5, 0xA1, 0xC5, 0xA3, 0xC5, 0xA5, 0xC5, + 0xA7, 0xC5, 0xA9, 0xC5, 0xAB, 0xC5, 0xAD, 0xC5, + 0xAF, 0xC5, 0xB1, 0xC5, 0xB3, 0xC5, 0xB5, 0xC5, + 0xB7, 0xC3, 0xBF, 0xC5, 0xBA, 0xC5, 0xBC, 0xC5, + 0xBE, 0xC9, 0x93, 0xC6, 0x83, 0xC6, 0x85, 0xC9, + 0x94, 0xC6, 0x88, 0xC9, 0x96, 0xC9, 0x97, 0xC6, + 0x8C, 0xC7, 0x9D, 0xC9, 0x99, 0xC9, 0x9B, 0xC6, + 0x92, 0xC9, 0xA0, 0xC9, 0xA3, 0xC9, 0xA9, 0xC9, + 0xA8, 0xC6, 0x99, 0xC9, 0xAF, 0xC9, 0xB2, 0xC9, + 0xB5, 0xC6, 0xA1, 0xC6, 0xA3, 0xC6, 0xA5, 0xCA, + 0x80, 0xC6, 0xA8, 0xCA, 0x83, 0xC6, 0xAD, 0xCA, + 0x88, 0xC6, 0xB0, 0xCA, 0x8A, 0xCA, 0x8B, 0xC6, + 0xB4, 0xC6, 0xB6, 0xCA, 0x92, 0xC6, 0xB9, 0xC6, + 0xBD, 0xC7, 0x86, 0xC7, 0x86, 0xC7, 0x89, 0xC7, + 0x89, 0xC7, 0x8C, 0xC7, 0x8C, 0xC7, 0x8E, 0xC7, + 0x90, 0xC7, 0x92, 0xC7, 0x94, 0xC7, 0x96, 0xC7, + 0x98, 0xC7, 0x9A, 0xC7, 0x9C, 0xC7, 0x9F, 0xC7, + 0xA1, 0xC7, 0xA3, 0xC7, 0xA5, 0xC7, 0xA7, 0xC7, + 0xA9, 0xC7, 0xAB, 0xC7, 0xAD, 0xC7, 0xAF, 0xC7, + 0xB3, 0xC7, 0xB3, 0xC7, 0xB5, 0xC6, 0x95, 0xC6, + 0xBF, 0xC7, 0xB9, 0xC7, 0xBB, 0xC7, 0xBD, 0xC7, + 0xBF, 0xC8, 0x81, 0xC8, 0x83, 0xC8, 0x85, 0xC8, + 0x87, 0xC8, 0x89, 0xC8, 0x8B, 0xC8, 0x8D, 0xC8, + 0x8F, 0xC8, 0x91, 0xC8, 0x93, 0xC8, 0x95, 0xC8, + 0x97, 0xC8, 0x99, 0xC8, 0x9B, 0xC8, 0x9D, 0xC8, + 0x9F, 0xC6, 0x9E, 0xC8, 0xA3, 0xC8, 0xA5, 0xC8, + 0xA7, 0xC8, 0xA9, 0xC8, 0xAB, 0xC8, 0xAD, 0xC8, + 0xAF, 0xC8, 0xB1, 0xC8, 0xB3, 0xE2, 0xB1, 0xA5, + 0xC8, 0xBC, 0xC6, 0x9A, 0xE2, 0xB1, 0xA6, 0xC9, + 0x82, 0xC6, 0x80, 0xCA, 0x89, 0xCA, 0x8C, 0xC9, + 0x87, 0xC9, 0x89, 0xC9, 0x8B, 0xC9, 0x8D, 0xC9, + 0x8F, 0xCE, 0xAC, 0xCE, 0xAD, 0xCE, 0xAE, 0xCE, + 0xAF, 0xCF, 0x8C, 0xCF, 0x8D, 0xCF, 0x8E, 0xCE, + 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, + 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, + 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, + 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, + 0x81, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, + 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xCF, + 0x8A, 0xCF, 0x8B, 0xCF, 0x99, 0xCF, 0x9B, 0xCF, + 0x9D, 0xCF, 0x9F, 0xCF, 0xA1, 0xCF, 0xA3, 0xCF, + 0xA5, 0xCF, 0xA7, 0xCF, 0xA9, 0xCF, 0xAB, 0xCF, + 0xAD, 0xCF, 0xAF, 0xCE, 0xB8, 0xCF, 0xB8, 0xCF, + 0xB2, 0xCF, 0xBB, 0xCD, 0xBB, 0xCD, 0xBC, 0xCD, + 0xBD, 0xD1, 0x90, 0xD1, 0x91, 0xD1, 0x92, 0xD1, + 0x93, 0xD1, 0x94, 0xD1, 0x95, 0xD1, 0x96, 0xD1, + 0x97, 0xD1, 0x98, 0xD1, 0x99, 0xD1, 0x9A, 0xD1, + 0x9B, 0xD1, 0x9C, 0xD1, 0x9D, 0xD1, 0x9E, 0xD1, + 0x9F, 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2, 0xD0, + 0xB3, 0xD0, 0xB4, 0xD0, 0xB5, 0xD0, 0xB6, 0xD0, + 0xB7, 0xD0, 0xB8, 0xD0, 0xB9, 0xD0, 0xBA, 0xD0, + 0xBB, 0xD0, 0xBC, 0xD0, 0xBD, 0xD0, 0xBE, 0xD0, + 0xBF, 0xD1, 0x80, 0xD1, 0x81, 0xD1, 0x82, 0xD1, + 0x83, 0xD1, 0x84, 0xD1, 0x85, 0xD1, 0x86, 0xD1, + 0x87, 0xD1, 0x88, 0xD1, 0x89, 0xD1, 0x8A, 0xD1, + 0x8B, 0xD1, 0x8C, 0xD1, 0x8D, 0xD1, 0x8E, 0xD1, + 0x8F, 0xD1, 0xA1, 0xD1, 0xA3, 0xD1, 0xA5, 0xD1, + 0xA7, 0xD1, 0xA9, 0xD1, 0xAB, 0xD1, 0xAD, 0xD1, + 0xAF, 0xD1, 0xB1, 0xD1, 0xB3, 0xD1, 0xB5, 0xD1, + 0xB7, 0xD1, 0xB9, 0xD1, 0xBB, 0xD1, 0xBD, 0xD1, + 0xBF, 0xD2, 0x81, 0xD2, 0x8B, 0xD2, 0x8D, 0xD2, + 0x8F, 0xD2, 0x91, 0xD2, 0x93, 0xD2, 0x95, 0xD2, + 0x97, 0xD2, 0x99, 0xD2, 0x9B, 0xD2, 0x9D, 0xD2, + 0x9F, 0xD2, 0xA1, 0xD2, 0xA3, 0xD2, 0xA5, 0xD2, + 0xA7, 0xD2, 0xA9, 0xD2, 0xAB, 0xD2, 0xAD, 0xD2, + 0xAF, 0xD2, 0xB1, 0xD2, 0xB3, 0xD2, 0xB5, 0xD2, + 0xB7, 0xD2, 0xB9, 0xD2, 0xBB, 0xD2, 0xBD, 0xD2, + 0xBF, 0xD3, 0x8F, 0xD3, 0x82, 0xD3, 0x84, 0xD3, + 0x86, 0xD3, 0x88, 0xD3, 0x8A, 0xD3, 0x8C, 0xD3, + 0x8E, 0xD3, 0x91, 0xD3, 0x93, 0xD3, 0x95, 0xD3, + 0x97, 0xD3, 0x99, 0xD3, 0x9B, 0xD3, 0x9D, 0xD3, + 0x9F, 0xD3, 0xA1, 0xD3, 0xA3, 0xD3, 0xA5, 0xD3, + 0xA7, 0xD3, 0xA9, 0xD3, 0xAB, 0xD3, 0xAD, 0xD3, + 0xAF, 0xD3, 0xB1, 0xD3, 0xB3, 0xD3, 0xB5, 0xD3, + 0xB7, 0xD3, 0xB9, 0xD3, 0xBB, 0xD3, 0xBD, 0xD3, + 0xBF, 0xD4, 0x81, 0xD4, 0x83, 0xD4, 0x85, 0xD4, + 0x87, 0xD4, 0x89, 0xD4, 0x8B, 0xD4, 0x8D, 0xD4, + 0x8F, 0xD4, 0x91, 0xD4, 0x93, 0xD5, 0xA1, 0xD5, + 0xA2, 0xD5, 0xA3, 0xD5, 0xA4, 0xD5, 0xA5, 0xD5, + 0xA6, 0xD5, 0xA7, 0xD5, 0xA8, 0xD5, 0xA9, 0xD5, + 0xAA, 0xD5, 0xAB, 0xD5, 0xAC, 0xD5, 0xAD, 0xD5, + 0xAE, 0xD5, 0xAF, 0xD5, 0xB0, 0xD5, 0xB1, 0xD5, + 0xB2, 0xD5, 0xB3, 0xD5, 0xB4, 0xD5, 0xB5, 0xD5, + 0xB6, 0xD5, 0xB7, 0xD5, 0xB8, 0xD5, 0xB9, 0xD5, + 0xBA, 0xD5, 0xBB, 0xD5, 0xBC, 0xD5, 0xBD, 0xD5, + 0xBE, 0xD5, 0xBF, 0xD6, 0x80, 0xD6, 0x81, 0xD6, + 0x82, 0xD6, 0x83, 0xD6, 0x84, 0xD6, 0x85, 0xD6, + 0x86, 0xE2, 0xB4, 0x80, 0xE2, 0xB4, 0x81, 0xE2, + 0xB4, 0x82, 0xE2, 0xB4, 0x83, 0xE2, 0xB4, 0x84, + 0xE2, 0xB4, 0x85, 0xE2, 0xB4, 0x86, 0xE2, 0xB4, + 0x87, 0xE2, 0xB4, 0x88, 0xE2, 0xB4, 0x89, 0xE2, + 0xB4, 0x8A, 0xE2, 0xB4, 0x8B, 0xE2, 0xB4, 0x8C, + 0xE2, 0xB4, 0x8D, 0xE2, 0xB4, 0x8E, 0xE2, 0xB4, + 0x8F, 0xE2, 0xB4, 0x90, 0xE2, 0xB4, 0x91, 0xE2, + 0xB4, 0x92, 0xE2, 0xB4, 0x93, 0xE2, 0xB4, 0x94, + 0xE2, 0xB4, 0x95, 0xE2, 0xB4, 0x96, 0xE2, 0xB4, + 0x97, 0xE2, 0xB4, 0x98, 0xE2, 0xB4, 0x99, 0xE2, + 0xB4, 0x9A, 0xE2, 0xB4, 0x9B, 0xE2, 0xB4, 0x9C, + 0xE2, 0xB4, 0x9D, 0xE2, 0xB4, 0x9E, 0xE2, 0xB4, + 0x9F, 0xE2, 0xB4, 0xA0, 0xE2, 0xB4, 0xA1, 0xE2, + 0xB4, 0xA2, 0xE2, 0xB4, 0xA3, 0xE2, 0xB4, 0xA4, + 0xE2, 0xB4, 0xA5, 0xE1, 0xB8, 0x81, 0xE1, 0xB8, + 0x83, 0xE1, 0xB8, 0x85, 0xE1, 0xB8, 0x87, 0xE1, + 0xB8, 0x89, 0xE1, 0xB8, 0x8B, 0xE1, 0xB8, 0x8D, + 0xE1, 0xB8, 0x8F, 0xE1, 0xB8, 0x91, 0xE1, 0xB8, + 0x93, 0xE1, 0xB8, 0x95, 0xE1, 0xB8, 0x97, 0xE1, + 0xB8, 0x99, 0xE1, 0xB8, 0x9B, 0xE1, 0xB8, 0x9D, + 0xE1, 0xB8, 0x9F, 0xE1, 0xB8, 0xA1, 0xE1, 0xB8, + 0xA3, 0xE1, 0xB8, 0xA5, 0xE1, 0xB8, 0xA7, 0xE1, + 0xB8, 0xA9, 0xE1, 0xB8, 0xAB, 0xE1, 0xB8, 0xAD, + 0xE1, 0xB8, 0xAF, 0xE1, 0xB8, 0xB1, 0xE1, 0xB8, + 0xB3, 0xE1, 0xB8, 0xB5, 0xE1, 0xB8, 0xB7, 0xE1, + 0xB8, 0xB9, 0xE1, 0xB8, 0xBB, 0xE1, 0xB8, 0xBD, + 0xE1, 0xB8, 0xBF, 0xE1, 0xB9, 0x81, 0xE1, 0xB9, + 0x83, 0xE1, 0xB9, 0x85, 0xE1, 0xB9, 0x87, 0xE1, + 0xB9, 0x89, 0xE1, 0xB9, 0x8B, 0xE1, 0xB9, 0x8D, + 0xE1, 0xB9, 0x8F, 0xE1, 0xB9, 0x91, 0xE1, 0xB9, + 0x93, 0xE1, 0xB9, 0x95, 0xE1, 0xB9, 0x97, 0xE1, + 0xB9, 0x99, 0xE1, 0xB9, 0x9B, 0xE1, 0xB9, 0x9D, + 0xE1, 0xB9, 0x9F, 0xE1, 0xB9, 0xA1, 0xE1, 0xB9, + 0xA3, 0xE1, 0xB9, 0xA5, 0xE1, 0xB9, 0xA7, 0xE1, + 0xB9, 0xA9, 0xE1, 0xB9, 0xAB, 0xE1, 0xB9, 0xAD, + 0xE1, 0xB9, 0xAF, 0xE1, 0xB9, 0xB1, 0xE1, 0xB9, + 0xB3, 0xE1, 0xB9, 0xB5, 0xE1, 0xB9, 0xB7, 0xE1, + 0xB9, 0xB9, 0xE1, 0xB9, 0xBB, 0xE1, 0xB9, 0xBD, + 0xE1, 0xB9, 0xBF, 0xE1, 0xBA, 0x81, 0xE1, 0xBA, + 0x83, 0xE1, 0xBA, 0x85, 0xE1, 0xBA, 0x87, 0xE1, + 0xBA, 0x89, 0xE1, 0xBA, 0x8B, 0xE1, 0xBA, 0x8D, + 0xE1, 0xBA, 0x8F, 0xE1, 0xBA, 0x91, 0xE1, 0xBA, + 0x93, 0xE1, 0xBA, 0x95, 0xE1, 0xBA, 0xA1, 0xE1, + 0xBA, 0xA3, 0xE1, 0xBA, 0xA5, 0xE1, 0xBA, 0xA7, + 0xE1, 0xBA, 0xA9, 0xE1, 0xBA, 0xAB, 0xE1, 0xBA, + 0xAD, 0xE1, 0xBA, 0xAF, 0xE1, 0xBA, 0xB1, 0xE1, + 0xBA, 0xB3, 0xE1, 0xBA, 0xB5, 0xE1, 0xBA, 0xB7, + 0xE1, 0xBA, 0xB9, 0xE1, 0xBA, 0xBB, 0xE1, 0xBA, + 0xBD, 0xE1, 0xBA, 0xBF, 0xE1, 0xBB, 0x81, 0xE1, + 0xBB, 0x83, 0xE1, 0xBB, 0x85, 0xE1, 0xBB, 0x87, + 0xE1, 0xBB, 0x89, 0xE1, 0xBB, 0x8B, 0xE1, 0xBB, + 0x8D, 0xE1, 0xBB, 0x8F, 0xE1, 0xBB, 0x91, 0xE1, + 0xBB, 0x93, 0xE1, 0xBB, 0x95, 0xE1, 0xBB, 0x97, + 0xE1, 0xBB, 0x99, 0xE1, 0xBB, 0x9B, 0xE1, 0xBB, + 0x9D, 0xE1, 0xBB, 0x9F, 0xE1, 0xBB, 0xA1, 0xE1, + 0xBB, 0xA3, 0xE1, 0xBB, 0xA5, 0xE1, 0xBB, 0xA7, + 0xE1, 0xBB, 0xA9, 0xE1, 0xBB, 0xAB, 0xE1, 0xBB, + 0xAD, 0xE1, 0xBB, 0xAF, 0xE1, 0xBB, 0xB1, 0xE1, + 0xBB, 0xB3, 0xE1, 0xBB, 0xB5, 0xE1, 0xBB, 0xB7, + 0xE1, 0xBB, 0xB9, 0xE1, 0xBC, 0x80, 0xE1, 0xBC, + 0x81, 0xE1, 0xBC, 0x82, 0xE1, 0xBC, 0x83, 0xE1, + 0xBC, 0x84, 0xE1, 0xBC, 0x85, 0xE1, 0xBC, 0x86, + 0xE1, 0xBC, 0x87, 0xE1, 0xBC, 0x90, 0xE1, 0xBC, + 0x91, 0xE1, 0xBC, 0x92, 0xE1, 0xBC, 0x93, 0xE1, + 0xBC, 0x94, 0xE1, 0xBC, 0x95, 0xE1, 0xBC, 0xA0, + 0xE1, 0xBC, 0xA1, 0xE1, 0xBC, 0xA2, 0xE1, 0xBC, + 0xA3, 0xE1, 0xBC, 0xA4, 0xE1, 0xBC, 0xA5, 0xE1, + 0xBC, 0xA6, 0xE1, 0xBC, 0xA7, 0xE1, 0xBC, 0xB0, + 0xE1, 0xBC, 0xB1, 0xE1, 0xBC, 0xB2, 0xE1, 0xBC, + 0xB3, 0xE1, 0xBC, 0xB4, 0xE1, 0xBC, 0xB5, 0xE1, + 0xBC, 0xB6, 0xE1, 0xBC, 0xB7, 0xE1, 0xBD, 0x80, + 0xE1, 0xBD, 0x81, 0xE1, 0xBD, 0x82, 0xE1, 0xBD, + 0x83, 0xE1, 0xBD, 0x84, 0xE1, 0xBD, 0x85, 0xE1, + 0xBD, 0x91, 0xE1, 0xBD, 0x93, 0xE1, 0xBD, 0x95, + 0xE1, 0xBD, 0x97, 0xE1, 0xBD, 0xA0, 0xE1, 0xBD, + 0xA1, 0xE1, 0xBD, 0xA2, 0xE1, 0xBD, 0xA3, 0xE1, + 0xBD, 0xA4, 0xE1, 0xBD, 0xA5, 0xE1, 0xBD, 0xA6, + 0xE1, 0xBD, 0xA7, 0xE1, 0xBE, 0x80, 0xE1, 0xBE, + 0x81, 0xE1, 0xBE, 0x82, 0xE1, 0xBE, 0x83, 0xE1, + 0xBE, 0x84, 0xE1, 0xBE, 0x85, 0xE1, 0xBE, 0x86, + 0xE1, 0xBE, 0x87, 0xE1, 0xBE, 0x90, 0xE1, 0xBE, + 0x91, 0xE1, 0xBE, 0x92, 0xE1, 0xBE, 0x93, 0xE1, + 0xBE, 0x94, 0xE1, 0xBE, 0x95, 0xE1, 0xBE, 0x96, + 0xE1, 0xBE, 0x97, 0xE1, 0xBE, 0xA0, 0xE1, 0xBE, + 0xA1, 0xE1, 0xBE, 0xA2, 0xE1, 0xBE, 0xA3, 0xE1, + 0xBE, 0xA4, 0xE1, 0xBE, 0xA5, 0xE1, 0xBE, 0xA6, + 0xE1, 0xBE, 0xA7, 0xE1, 0xBE, 0xB0, 0xE1, 0xBE, + 0xB1, 0xE1, 0xBD, 0xB0, 0xE1, 0xBD, 0xB1, 0xE1, + 0xBE, 0xB3, 0xE1, 0xBD, 0xB2, 0xE1, 0xBD, 0xB3, + 0xE1, 0xBD, 0xB4, 0xE1, 0xBD, 0xB5, 0xE1, 0xBF, + 0x83, 0xE1, 0xBF, 0x90, 0xE1, 0xBF, 0x91, 0xE1, + 0xBD, 0xB6, 0xE1, 0xBD, 0xB7, 0xE1, 0xBF, 0xA0, + 0xE1, 0xBF, 0xA1, 0xE1, 0xBD, 0xBA, 0xE1, 0xBD, + 0xBB, 0xE1, 0xBF, 0xA5, 0xE1, 0xBD, 0xB8, 0xE1, + 0xBD, 0xB9, 0xE1, 0xBD, 0xBC, 0xE1, 0xBD, 0xBD, + 0xE1, 0xBF, 0xB3, 0xCF, 0x89, 0x6B, 0xC3, 0xA5, + 0xE2, 0x85, 0x8E, 0xE2, 0x85, 0xB0, 0xE2, 0x85, + 0xB1, 0xE2, 0x85, 0xB2, 0xE2, 0x85, 0xB3, 0xE2, + 0x85, 0xB4, 0xE2, 0x85, 0xB5, 0xE2, 0x85, 0xB6, + 0xE2, 0x85, 0xB7, 0xE2, 0x85, 0xB8, 0xE2, 0x85, + 0xB9, 0xE2, 0x85, 0xBA, 0xE2, 0x85, 0xBB, 0xE2, + 0x85, 0xBC, 0xE2, 0x85, 0xBD, 0xE2, 0x85, 0xBE, + 0xE2, 0x85, 0xBF, 0xE2, 0x86, 0x84, 0xE2, 0x93, + 0x90, 0xE2, 0x93, 0x91, 0xE2, 0x93, 0x92, 0xE2, + 0x93, 0x93, 0xE2, 0x93, 0x94, 0xE2, 0x93, 0x95, + 0xE2, 0x93, 0x96, 0xE2, 0x93, 0x97, 0xE2, 0x93, + 0x98, 0xE2, 0x93, 0x99, 0xE2, 0x93, 0x9A, 0xE2, + 0x93, 0x9B, 0xE2, 0x93, 0x9C, 0xE2, 0x93, 0x9D, + 0xE2, 0x93, 0x9E, 0xE2, 0x93, 0x9F, 0xE2, 0x93, + 0xA0, 0xE2, 0x93, 0xA1, 0xE2, 0x93, 0xA2, 0xE2, + 0x93, 0xA3, 0xE2, 0x93, 0xA4, 0xE2, 0x93, 0xA5, + 0xE2, 0x93, 0xA6, 0xE2, 0x93, 0xA7, 0xE2, 0x93, + 0xA8, 0xE2, 0x93, 0xA9, 0xE2, 0xB0, 0xB0, 0xE2, + 0xB0, 0xB1, 0xE2, 0xB0, 0xB2, 0xE2, 0xB0, 0xB3, + 0xE2, 0xB0, 0xB4, 0xE2, 0xB0, 0xB5, 0xE2, 0xB0, + 0xB6, 0xE2, 0xB0, 0xB7, 0xE2, 0xB0, 0xB8, 0xE2, + 0xB0, 0xB9, 0xE2, 0xB0, 0xBA, 0xE2, 0xB0, 0xBB, + 0xE2, 0xB0, 0xBC, 0xE2, 0xB0, 0xBD, 0xE2, 0xB0, + 0xBE, 0xE2, 0xB0, 0xBF, 0xE2, 0xB1, 0x80, 0xE2, + 0xB1, 0x81, 0xE2, 0xB1, 0x82, 0xE2, 0xB1, 0x83, + 0xE2, 0xB1, 0x84, 0xE2, 0xB1, 0x85, 0xE2, 0xB1, + 0x86, 0xE2, 0xB1, 0x87, 0xE2, 0xB1, 0x88, 0xE2, + 0xB1, 0x89, 0xE2, 0xB1, 0x8A, 0xE2, 0xB1, 0x8B, + 0xE2, 0xB1, 0x8C, 0xE2, 0xB1, 0x8D, 0xE2, 0xB1, + 0x8E, 0xE2, 0xB1, 0x8F, 0xE2, 0xB1, 0x90, 0xE2, + 0xB1, 0x91, 0xE2, 0xB1, 0x92, 0xE2, 0xB1, 0x93, + 0xE2, 0xB1, 0x94, 0xE2, 0xB1, 0x95, 0xE2, 0xB1, + 0x96, 0xE2, 0xB1, 0x97, 0xE2, 0xB1, 0x98, 0xE2, + 0xB1, 0x99, 0xE2, 0xB1, 0x9A, 0xE2, 0xB1, 0x9B, + 0xE2, 0xB1, 0x9C, 0xE2, 0xB1, 0x9D, 0xE2, 0xB1, + 0x9E, 0xE2, 0xB1, 0xA1, 0xC9, 0xAB, 0xE1, 0xB5, + 0xBD, 0xC9, 0xBD, 0xE2, 0xB1, 0xA8, 0xE2, 0xB1, + 0xAA, 0xE2, 0xB1, 0xAC, 0xE2, 0xB1, 0xB6, 0xE2, + 0xB2, 0x81, 0xE2, 0xB2, 0x83, 0xE2, 0xB2, 0x85, + 0xE2, 0xB2, 0x87, 0xE2, 0xB2, 0x89, 0xE2, 0xB2, + 0x8B, 0xE2, 0xB2, 0x8D, 0xE2, 0xB2, 0x8F, 0xE2, + 0xB2, 0x91, 0xE2, 0xB2, 0x93, 0xE2, 0xB2, 0x95, + 0xE2, 0xB2, 0x97, 0xE2, 0xB2, 0x99, 0xE2, 0xB2, + 0x9B, 0xE2, 0xB2, 0x9D, 0xE2, 0xB2, 0x9F, 0xE2, + 0xB2, 0xA1, 0xE2, 0xB2, 0xA3, 0xE2, 0xB2, 0xA5, + 0xE2, 0xB2, 0xA7, 0xE2, 0xB2, 0xA9, 0xE2, 0xB2, + 0xAB, 0xE2, 0xB2, 0xAD, 0xE2, 0xB2, 0xAF, 0xE2, + 0xB2, 0xB1, 0xE2, 0xB2, 0xB3, 0xE2, 0xB2, 0xB5, + 0xE2, 0xB2, 0xB7, 0xE2, 0xB2, 0xB9, 0xE2, 0xB2, + 0xBB, 0xE2, 0xB2, 0xBD, 0xE2, 0xB2, 0xBF, 0xE2, + 0xB3, 0x81, 0xE2, 0xB3, 0x83, 0xE2, 0xB3, 0x85, + 0xE2, 0xB3, 0x87, 0xE2, 0xB3, 0x89, 0xE2, 0xB3, + 0x8B, 0xE2, 0xB3, 0x8D, 0xE2, 0xB3, 0x8F, 0xE2, + 0xB3, 0x91, 0xE2, 0xB3, 0x93, 0xE2, 0xB3, 0x95, + 0xE2, 0xB3, 0x97, 0xE2, 0xB3, 0x99, 0xE2, 0xB3, + 0x9B, 0xE2, 0xB3, 0x9D, 0xE2, 0xB3, 0x9F, 0xE2, + 0xB3, 0xA1, 0xE2, 0xB3, 0xA3, 0xEF, 0xBD, 0x81, + 0xEF, 0xBD, 0x82, 0xEF, 0xBD, 0x83, 0xEF, 0xBD, + 0x84, 0xEF, 0xBD, 0x85, 0xEF, 0xBD, 0x86, 0xEF, + 0xBD, 0x87, 0xEF, 0xBD, 0x88, 0xEF, 0xBD, 0x89, + 0xEF, 0xBD, 0x8A, 0xEF, 0xBD, 0x8B, 0xEF, 0xBD, + 0x8C, 0xEF, 0xBD, 0x8D, 0xEF, 0xBD, 0x8E, 0xEF, + 0xBD, 0x8F, 0xEF, 0xBD, 0x90, 0xEF, 0xBD, 0x91, + 0xEF, 0xBD, 0x92, 0xEF, 0xBD, 0x93, 0xEF, 0xBD, + 0x94, 0xEF, 0xBD, 0x95, 0xEF, 0xBD, 0x96, 0xEF, + 0xBD, 0x97, 0xEF, 0xBD, 0x98, 0xEF, 0xBD, 0x99, + 0xEF, 0xBD, 0x9A, 0xF0, 0x90, 0x90, 0xA8, 0xF0, + 0x90, 0x90, 0xA9, 0xF0, 0x90, 0x90, 0xAA, 0xF0, + 0x90, 0x90, 0xAB, 0xF0, 0x90, 0x90, 0xAC, 0xF0, + 0x90, 0x90, 0xAD, 0xF0, 0x90, 0x90, 0xAE, 0xF0, + 0x90, 0x90, 0xAF, 0xF0, 0x90, 0x90, 0xB0, 0xF0, + 0x90, 0x90, 0xB1, 0xF0, 0x90, 0x90, 0xB2, 0xF0, + 0x90, 0x90, 0xB3, 0xF0, 0x90, 0x90, 0xB4, 0xF0, + 0x90, 0x90, 0xB5, 0xF0, 0x90, 0x90, 0xB6, 0xF0, + 0x90, 0x90, 0xB7, 0xF0, 0x90, 0x90, 0xB8, 0xF0, + 0x90, 0x90, 0xB9, 0xF0, 0x90, 0x90, 0xBA, 0xF0, + 0x90, 0x90, 0xBB, 0xF0, 0x90, 0x90, 0xBC, 0xF0, + 0x90, 0x90, 0xBD, 0xF0, 0x90, 0x90, 0xBE, 0xF0, + 0x90, 0x90, 0xBF, 0xF0, 0x90, 0x91, 0x80, 0xF0, + 0x90, 0x91, 0x81, 0xF0, 0x90, 0x91, 0x82, 0xF0, + 0x90, 0x91, 0x83, 0xF0, 0x90, 0x91, 0x84, 0xF0, + 0x90, 0x91, 0x85, 0xF0, 0x90, 0x91, 0x86, 0xF0, + 0x90, 0x91, 0x87, 0xF0, 0x90, 0x91, 0x88, 0xF0, + 0x90, 0x91, 0x89, 0xF0, 0x90, 0x91, 0x8A, 0xF0, + 0x90, 0x91, 0x8B, 0xF0, 0x90, 0x91, 0x8C, 0xF0, + 0x90, 0x91, 0x8D, 0xF0, 0x90, 0x91, 0x8E, 0xF0, + 0x90, 0x91, 0x8F, + }, +}; + +static const u8_displacement_t u8_toupper_b3_tbl[2][5][256] = { + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 2 }, + { 2, 64 }, { 3, 125 }, { 4, 188 }, { 5, 226 }, + { 6, 288 }, { 7, 338 }, { 8, 364 }, { N_, 0 }, + { N_, 0 }, { 9, 376 }, { 10, 378 }, { 11, 416 }, + { 12, 486 }, { 13, 518 }, { 14, 614 }, { 15, 670 }, + { 16, 724 }, { 17, 740 }, { 18, 802 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 19, 816 }, { 20, 912 }, { 21, 1008 }, { 22, 1092 }, + { 23, 1179 }, { 24, 1269 }, { 25, 1365 }, { 26, 1448 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 27, 1469 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { 28, 1517 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 29, 1595 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 30, 1673 }, { 31, 1769 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + }, + { + { /* Third byte table 0. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 2 }, + { 2, 64 }, { 3, 125 }, { 4, 188 }, { 5, 230 }, + { 6, 292 }, { 7, 344 }, { 8, 388 }, { N_, 0 }, + { N_, 0 }, { 9, 404 }, { 10, 412 }, { 11, 450 }, + { 12, 524 }, { 13, 556 }, { 14, 652 }, { 15, 708 }, + { 16, 772 }, { 17, 792 }, { 18, 854 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 1. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 19, 868 }, { N_, 0 }, { N_, 0 }, + { 20, 871 }, { 21, 967 }, { 22, 1063 }, { 23, 1147 }, + { 24, 1234 }, { 25, 1324 }, { 26, 1420 }, { 27, 1503 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 2. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 28, 1524 }, { 29, 1575 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { 30, 1578 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 31, 1656 }, { 32, 1704 }, { 33, 1816 }, { 34, 1912 }, + { 35, 1966 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 3. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { 36, 2080 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + { /* Third byte table 4. */ + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { 37, 2158 }, { 38, 2254 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, + }, + }, +}; + +static const uchar_t u8_toupper_b4_tbl[2][39][257] = { + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 49, 49, 51, 51, 53, 53, + 55, 55, 55, 57, 57, 59, 59, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 50, 50, 52, 52, 54, 54, + 56, 56, 56, 58, 58, 60, 60, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 4, 4, + 4, 6, 6, 6, 6, 8, 8, 8, + 8, 8, 8, 10, 10, 10, 12, 12, + 12, 12, 14, 14, 14, 14, 14, 16, + 16, 16, 18, 18, 20, 20, 22, 22, + 22, 24, 24, 24, 24, 24, 26, 26, + 26, 28, 28, 28, 28, 30, 30, 32, + 32, 32, 34, 34, 34, 34, 36, 36, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, + 4, 6, 8, 8, 10, 12, 12, 14, + 14, 16, 16, 18, 18, 20, 20, 22, + 22, 24, 24, 26, 26, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 48, 50, 52, 52, 54, 54, + 54, 54, 56, 56, 58, 58, 60, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 32, 32, 34, 34, 36, 36, + 38, 38, 40, 40, 42, 42, 44, 44, + 46, 46, 48, 48, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 4, 6, + 8, 8, 10, 10, 12, 12, 12, 12, + 12, 14, 14, 14, 16, 16, 16, 16, + 16, 18, 20, 20, 20, 20, 20, 20, + 22, 22, 22, 24, 24, 24, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 4, 4, 4, 4, + 4, 6, 6, 8, 10, 10, 10, 10, + 10, 10, 10, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 6, + 8, 8, 10, 12, 14, 16, 18, 20, + 22, 24, 26, 28, 30, 32, 34, 36, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 30, 32, 34, 34, 34, 34, 36, 38, + 38, 38, 40, 40, 42, 42, 44, 44, + 46, 46, 48, 48, 50, 50, 52, 52, + 54, 54, 56, 56, 58, 58, 60, 60, + 62, 64, 66, 68, 68, 68, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 64, 66, 66, 68, 68, 70, 70, + 72, 72, 74, 74, 76, 76, 78, 78, + 80, 80, 82, 82, 84, 84, 86, 86, + 88, 88, 90, 90, 92, 92, 94, 94, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 50, 50, 52, 52, 54, 54, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 4, 4, 6, + 6, 8, 8, 10, 10, 12, 12, 14, + 14, 14, 16, 16, 18, 18, 20, 20, + 22, 22, 24, 24, 26, 26, 28, 28, + 30, 30, 32, 32, 34, 34, 36, 36, + 38, 38, 40, 40, 42, 42, 44, 44, + 46, 46, 48, 48, 50, 50, 52, 52, + 52, 52, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 6, 8, 10, 12, + 14, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 90, 90, 93, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 90, 90, 93, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 33, 33, 33, 33, 36, 36, 36, 36, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 60, 63, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 69, 72, 75, 78, 81, 84, 87, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 21, 21, 24, 24, 27, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 33, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 57, 60, 63, 66, 69, 72, 75, + 78, 81, 84, 87, 90, 93, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 75, 78, 78, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 6, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 12, 15, 15, 15, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 48, 51, 54, 57, 60, 63, 66, + 69, 72, 75, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, + }, + }, + { + { /* Fourth byte table 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, + }, + { /* Fourth byte table 1. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 2. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 49, 49, 51, 51, 53, 53, + 55, 55, 55, 57, 57, 59, 59, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, + 61, + }, + { /* Fourth byte table 3. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 4, 4, 6, 6, 8, + 8, 10, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 50, 50, 52, 52, 54, 54, + 56, 56, 56, 58, 58, 60, 60, 62, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, + }, + { /* Fourth byte table 4. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 4, 4, 6, 6, + 6, 8, 8, 8, 8, 10, 10, 10, + 10, 10, 10, 12, 12, 12, 14, 14, + 14, 14, 16, 18, 18, 18, 18, 20, + 20, 20, 22, 22, 24, 24, 26, 26, + 26, 28, 28, 28, 28, 28, 30, 30, + 30, 32, 32, 32, 32, 34, 34, 36, + 36, 36, 38, 38, 38, 38, 40, 40, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, + }, + { /* Fourth byte table 5. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, + 4, 6, 8, 8, 10, 12, 12, 14, + 14, 16, 16, 18, 18, 20, 20, 22, + 22, 24, 24, 26, 26, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 48, 50, 52, 52, 54, 54, + 54, 54, 56, 56, 58, 58, 60, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 6. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 32, 32, 34, 34, 36, 36, + 38, 38, 40, 40, 42, 42, 44, 44, + 46, 46, 48, 48, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, + 52, + }, + { /* Fourth byte table 7. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 2, 2, + 4, 4, 6, 6, 8, 8, 10, 10, + 12, 12, 12, 12, 14, 16, 16, 18, + 20, 20, 22, 22, 24, 24, 24, 24, + 24, 26, 26, 26, 28, 28, 28, 28, + 28, 30, 32, 32, 35, 35, 35, 35, + 37, 37, 37, 39, 39, 39, 41, 41, + 41, 41, 41, 41, 41, 41, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, + }, + { /* Fourth byte table 8. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 4, 4, 4, 4, + 4, 6, 8, 10, 12, 14, 14, 14, + 14, 14, 14, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, + }, + { /* Fourth byte table 9. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 6, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, + }, + { /* Fourth byte table 10. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 6, + 8, 8, 10, 12, 14, 16, 18, 20, + 22, 24, 26, 28, 30, 32, 34, 36, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, + }, + { /* Fourth byte table 11. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 30, 32, 34, 34, 34, 34, 36, 38, + 38, 38, 40, 40, 42, 42, 44, 44, + 46, 46, 48, 48, 50, 50, 52, 52, + 54, 54, 56, 56, 58, 58, 60, 60, + 62, 64, 66, 68, 68, 68, 70, 70, + 70, 72, 72, 72, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, + }, + { /* Fourth byte table 12. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, + }, + { /* Fourth byte table 13. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, + 32, 34, 36, 38, 40, 42, 44, 46, + 48, 50, 52, 54, 56, 58, 60, 62, + 64, 64, 66, 66, 68, 68, 70, 70, + 72, 72, 74, 74, 76, 76, 78, 78, + 80, 80, 82, 82, 84, 84, 86, 86, + 88, 88, 90, 90, 92, 92, 94, 94, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 14. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 50, 50, 52, 52, 54, 54, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, + }, + { /* Fourth byte table 15. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 4, 4, 6, + 6, 8, 8, 10, 10, 12, 12, 14, + 16, 16, 18, 18, 20, 20, 22, 22, + 24, 24, 26, 26, 28, 28, 30, 30, + 32, 32, 34, 34, 36, 36, 38, 38, + 40, 40, 42, 42, 44, 44, 46, 46, + 48, 48, 50, 50, 52, 52, 54, 54, + 56, 56, 58, 58, 60, 60, 62, 62, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + { /* Fourth byte table 16. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 6, 6, + 8, 8, 10, 10, 12, 12, 14, 14, + 16, 16, 18, 18, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, + }, + { /* Fourth byte table 17. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 6, 8, 10, 12, + 14, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, + 46, 48, 50, 52, 54, 56, 58, 60, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 62, + }, + { /* Fourth byte table 18. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 6, 8, 10, 12, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, + }, + { /* Fourth byte table 19. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 20. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 90, 90, 93, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 21. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 90, 90, 93, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 22. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 33, 33, 33, 33, 36, 36, 36, 36, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, + 84, + }, + { /* Fourth byte table 23. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, + 87, + }, + { /* Fourth byte table 24. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, + 42, 45, 48, 51, 54, 57, 60, 63, + 66, 66, 66, 66, 66, 66, 66, 66, + 66, 69, 72, 75, 78, 81, 84, 87, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, + 90, + }, + { /* Fourth byte table 25. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 21, 21, 24, 24, 27, 27, + 30, 30, 30, 30, 30, 30, 30, 30, + 30, 33, 36, 39, 42, 45, 48, 51, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 57, 60, 63, 66, 69, 72, 75, + 78, 81, 84, 87, 90, 93, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 26. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 75, 78, 78, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, + 83, + }, + { /* Fourth byte table 27. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 6, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 12, 15, 15, 15, 15, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, + }, + { /* Fourth byte table 28. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 6, 9, 12, 15, 18, 21, 24, + 27, 30, 33, 36, 39, 42, 45, 48, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, + 51, + }, + { /* Fourth byte table 29. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, + }, + { /* Fourth byte table 30. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 31. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, + }, + { /* Fourth byte table 32. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 93, 93, 96, 96, 96, 96, 98, 100, + 100, 103, 103, 106, 106, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, + 112, + }, + { /* Fourth byte table 33. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 57, 57, + 60, 60, 63, 63, 66, 66, 69, 69, + 72, 72, 75, 75, 78, 78, 81, 81, + 84, 84, 87, 87, 90, 90, 93, 93, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 34. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 6, 6, 9, 9, + 12, 12, 15, 15, 18, 18, 21, 21, + 24, 24, 27, 27, 30, 30, 33, 33, + 36, 36, 39, 39, 42, 42, 45, 45, + 48, 48, 51, 51, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + 54, + }, + { /* Fourth byte table 35. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 6, 9, 12, 15, 18, 21, + 24, 27, 30, 33, 36, 39, 42, 45, + 48, 51, 54, 57, 60, 63, 66, 69, + 72, 75, 78, 81, 84, 87, 90, 93, + 96, 99, 102, 105, 108, 111, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, + 114, + }, + { /* Fourth byte table 36. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 6, 9, 12, 15, 18, + 21, 24, 27, 30, 33, 36, 39, 42, + 45, 48, 51, 54, 57, 60, 63, 66, + 69, 72, 75, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, + 78, + }, + { /* Fourth byte table 37. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 68, 72, 76, 80, 84, 88, 92, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, + }, + { /* Fourth byte table 38. */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 8, 12, 16, 20, 24, 28, + 32, 36, 40, 44, 48, 52, 56, 60, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, + }, + }, +}; + +static const uchar_t u8_toupper_final_tbl[2][2318] = { + { + 0xCE, 0x9C, 0xC3, 0x80, 0xC3, 0x81, 0xC3, 0x82, + 0xC3, 0x83, 0xC3, 0x84, 0xC3, 0x85, 0xC3, 0x86, + 0xC3, 0x87, 0xC3, 0x88, 0xC3, 0x89, 0xC3, 0x8A, + 0xC3, 0x8B, 0xC3, 0x8C, 0xC3, 0x8D, 0xC3, 0x8E, + 0xC3, 0x8F, 0xC3, 0x90, 0xC3, 0x91, 0xC3, 0x92, + 0xC3, 0x93, 0xC3, 0x94, 0xC3, 0x95, 0xC3, 0x96, + 0xC3, 0x98, 0xC3, 0x99, 0xC3, 0x9A, 0xC3, 0x9B, + 0xC3, 0x9C, 0xC3, 0x9D, 0xC3, 0x9E, 0xC5, 0xB8, + 0xC4, 0x80, 0xC4, 0x82, 0xC4, 0x84, 0xC4, 0x86, + 0xC4, 0x88, 0xC4, 0x8A, 0xC4, 0x8C, 0xC4, 0x8E, + 0xC4, 0x90, 0xC4, 0x92, 0xC4, 0x94, 0xC4, 0x96, + 0xC4, 0x98, 0xC4, 0x9A, 0xC4, 0x9C, 0xC4, 0x9E, + 0xC4, 0xA0, 0xC4, 0xA2, 0xC4, 0xA4, 0xC4, 0xA6, + 0xC4, 0xA8, 0xC4, 0xAA, 0xC4, 0xAC, 0xC4, 0xAE, + 0x49, 0xC4, 0xB2, 0xC4, 0xB4, 0xC4, 0xB6, 0xC4, + 0xB9, 0xC4, 0xBB, 0xC4, 0xBD, 0xC4, 0xBF, 0xC5, + 0x81, 0xC5, 0x83, 0xC5, 0x85, 0xC5, 0x87, 0xC5, + 0x8A, 0xC5, 0x8C, 0xC5, 0x8E, 0xC5, 0x90, 0xC5, + 0x92, 0xC5, 0x94, 0xC5, 0x96, 0xC5, 0x98, 0xC5, + 0x9A, 0xC5, 0x9C, 0xC5, 0x9E, 0xC5, 0xA0, 0xC5, + 0xA2, 0xC5, 0xA4, 0xC5, 0xA6, 0xC5, 0xA8, 0xC5, + 0xAA, 0xC5, 0xAC, 0xC5, 0xAE, 0xC5, 0xB0, 0xC5, + 0xB2, 0xC5, 0xB4, 0xC5, 0xB6, 0xC5, 0xB9, 0xC5, + 0xBB, 0xC5, 0xBD, 0x53, 0xC6, 0x82, 0xC6, 0x84, + 0xC6, 0x87, 0xC6, 0x8B, 0xC6, 0x91, 0xC7, 0xB6, + 0xC6, 0x98, 0xC8, 0xA0, 0xC6, 0xA0, 0xC6, 0xA2, + 0xC6, 0xA4, 0xC6, 0xA7, 0xC6, 0xAC, 0xC6, 0xAF, + 0xC6, 0xB3, 0xC6, 0xB5, 0xC6, 0xB8, 0xC6, 0xBC, + 0xC7, 0xB7, 0xC7, 0x84, 0xC7, 0x84, 0xC7, 0x87, + 0xC7, 0x87, 0xC7, 0x8A, 0xC7, 0x8A, 0xC7, 0x8D, + 0xC7, 0x8F, 0xC7, 0x91, 0xC7, 0x93, 0xC7, 0x95, + 0xC7, 0x97, 0xC7, 0x99, 0xC7, 0x9B, 0xC6, 0x8E, + 0xC7, 0x9E, 0xC7, 0xA0, 0xC7, 0xA2, 0xC7, 0xA4, + 0xC7, 0xA6, 0xC7, 0xA8, 0xC7, 0xAA, 0xC7, 0xAC, + 0xC7, 0xAE, 0xC7, 0xB1, 0xC7, 0xB1, 0xC7, 0xB4, + 0xC7, 0xB8, 0xC7, 0xBA, 0xC7, 0xBC, 0xC7, 0xBE, + 0xC8, 0x80, 0xC8, 0x82, 0xC8, 0x84, 0xC8, 0x86, + 0xC8, 0x88, 0xC8, 0x8A, 0xC8, 0x8C, 0xC8, 0x8E, + 0xC8, 0x90, 0xC8, 0x92, 0xC8, 0x94, 0xC8, 0x96, + 0xC8, 0x98, 0xC8, 0x9A, 0xC8, 0x9C, 0xC8, 0x9E, + 0xC8, 0xA2, 0xC8, 0xA4, 0xC8, 0xA6, 0xC8, 0xA8, + 0xC8, 0xAA, 0xC8, 0xAC, 0xC8, 0xAE, 0xC8, 0xB0, + 0xC8, 0xB2, 0xC6, 0x81, 0xC6, 0x86, 0xC6, 0x89, + 0xC6, 0x8A, 0xC6, 0x8F, 0xC6, 0x90, 0xC6, 0x93, + 0xC6, 0x94, 0xC6, 0x97, 0xC6, 0x96, 0xC6, 0x9C, + 0xC6, 0x9D, 0xC6, 0x9F, 0xC6, 0xA6, 0xC6, 0xA9, + 0xC6, 0xAE, 0xC6, 0xB1, 0xC6, 0xB2, 0xC6, 0xB7, + 0xCE, 0x99, 0xCE, 0x86, 0xCE, 0x88, 0xCE, 0x89, + 0xCE, 0x8A, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, + 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, + 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, + 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, + 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0xA3, 0xCE, 0xA3, + 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, + 0xCE, 0xA8, 0xCE, 0xA9, 0xCE, 0xAA, 0xCE, 0xAB, + 0xCE, 0x8C, 0xCE, 0x8E, 0xCE, 0x8F, 0xCE, 0x92, + 0xCE, 0x98, 0xCE, 0xA6, 0xCE, 0xA0, 0xCF, 0x98, + 0xCF, 0x9A, 0xCF, 0x9C, 0xCF, 0x9E, 0xCF, 0xA0, + 0xCF, 0xA2, 0xCF, 0xA4, 0xCF, 0xA6, 0xCF, 0xA8, + 0xCF, 0xAA, 0xCF, 0xAC, 0xCF, 0xAE, 0xCE, 0x9A, + 0xCE, 0xA1, 0xCE, 0xA3, 0xCE, 0x95, 0xD0, 0x90, + 0xD0, 0x91, 0xD0, 0x92, 0xD0, 0x93, 0xD0, 0x94, + 0xD0, 0x95, 0xD0, 0x96, 0xD0, 0x97, 0xD0, 0x98, + 0xD0, 0x99, 0xD0, 0x9A, 0xD0, 0x9B, 0xD0, 0x9C, + 0xD0, 0x9D, 0xD0, 0x9E, 0xD0, 0x9F, 0xD0, 0xA0, + 0xD0, 0xA1, 0xD0, 0xA2, 0xD0, 0xA3, 0xD0, 0xA4, + 0xD0, 0xA5, 0xD0, 0xA6, 0xD0, 0xA7, 0xD0, 0xA8, + 0xD0, 0xA9, 0xD0, 0xAA, 0xD0, 0xAB, 0xD0, 0xAC, + 0xD0, 0xAD, 0xD0, 0xAE, 0xD0, 0xAF, 0xD0, 0x80, + 0xD0, 0x81, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0x84, + 0xD0, 0x85, 0xD0, 0x86, 0xD0, 0x87, 0xD0, 0x88, + 0xD0, 0x89, 0xD0, 0x8A, 0xD0, 0x8B, 0xD0, 0x8C, + 0xD0, 0x8D, 0xD0, 0x8E, 0xD0, 0x8F, 0xD1, 0xA0, + 0xD1, 0xA2, 0xD1, 0xA4, 0xD1, 0xA6, 0xD1, 0xA8, + 0xD1, 0xAA, 0xD1, 0xAC, 0xD1, 0xAE, 0xD1, 0xB0, + 0xD1, 0xB2, 0xD1, 0xB4, 0xD1, 0xB6, 0xD1, 0xB8, + 0xD1, 0xBA, 0xD1, 0xBC, 0xD1, 0xBE, 0xD2, 0x80, + 0xD2, 0x8A, 0xD2, 0x8C, 0xD2, 0x8E, 0xD2, 0x90, + 0xD2, 0x92, 0xD2, 0x94, 0xD2, 0x96, 0xD2, 0x98, + 0xD2, 0x9A, 0xD2, 0x9C, 0xD2, 0x9E, 0xD2, 0xA0, + 0xD2, 0xA2, 0xD2, 0xA4, 0xD2, 0xA6, 0xD2, 0xA8, + 0xD2, 0xAA, 0xD2, 0xAC, 0xD2, 0xAE, 0xD2, 0xB0, + 0xD2, 0xB2, 0xD2, 0xB4, 0xD2, 0xB6, 0xD2, 0xB8, + 0xD2, 0xBA, 0xD2, 0xBC, 0xD2, 0xBE, 0xD3, 0x81, + 0xD3, 0x83, 0xD3, 0x85, 0xD3, 0x87, 0xD3, 0x89, + 0xD3, 0x8B, 0xD3, 0x8D, 0xD3, 0x90, 0xD3, 0x92, + 0xD3, 0x94, 0xD3, 0x96, 0xD3, 0x98, 0xD3, 0x9A, + 0xD3, 0x9C, 0xD3, 0x9E, 0xD3, 0xA0, 0xD3, 0xA2, + 0xD3, 0xA4, 0xD3, 0xA6, 0xD3, 0xA8, 0xD3, 0xAA, + 0xD3, 0xAC, 0xD3, 0xAE, 0xD3, 0xB0, 0xD3, 0xB2, + 0xD3, 0xB4, 0xD3, 0xB8, 0xD4, 0x80, 0xD4, 0x82, + 0xD4, 0x84, 0xD4, 0x86, 0xD4, 0x88, 0xD4, 0x8A, + 0xD4, 0x8C, 0xD4, 0x8E, 0xD4, 0xB1, 0xD4, 0xB2, + 0xD4, 0xB3, 0xD4, 0xB4, 0xD4, 0xB5, 0xD4, 0xB6, + 0xD4, 0xB7, 0xD4, 0xB8, 0xD4, 0xB9, 0xD4, 0xBA, + 0xD4, 0xBB, 0xD4, 0xBC, 0xD4, 0xBD, 0xD4, 0xBE, + 0xD4, 0xBF, 0xD5, 0x80, 0xD5, 0x81, 0xD5, 0x82, + 0xD5, 0x83, 0xD5, 0x84, 0xD5, 0x85, 0xD5, 0x86, + 0xD5, 0x87, 0xD5, 0x88, 0xD5, 0x89, 0xD5, 0x8A, + 0xD5, 0x8B, 0xD5, 0x8C, 0xD5, 0x8D, 0xD5, 0x8E, + 0xD5, 0x8F, 0xD5, 0x90, 0xD5, 0x91, 0xD5, 0x92, + 0xD5, 0x93, 0xD5, 0x94, 0xD5, 0x95, 0xD5, 0x96, + 0xE1, 0xB8, 0x80, 0xE1, 0xB8, 0x82, 0xE1, 0xB8, + 0x84, 0xE1, 0xB8, 0x86, 0xE1, 0xB8, 0x88, 0xE1, + 0xB8, 0x8A, 0xE1, 0xB8, 0x8C, 0xE1, 0xB8, 0x8E, + 0xE1, 0xB8, 0x90, 0xE1, 0xB8, 0x92, 0xE1, 0xB8, + 0x94, 0xE1, 0xB8, 0x96, 0xE1, 0xB8, 0x98, 0xE1, + 0xB8, 0x9A, 0xE1, 0xB8, 0x9C, 0xE1, 0xB8, 0x9E, + 0xE1, 0xB8, 0xA0, 0xE1, 0xB8, 0xA2, 0xE1, 0xB8, + 0xA4, 0xE1, 0xB8, 0xA6, 0xE1, 0xB8, 0xA8, 0xE1, + 0xB8, 0xAA, 0xE1, 0xB8, 0xAC, 0xE1, 0xB8, 0xAE, + 0xE1, 0xB8, 0xB0, 0xE1, 0xB8, 0xB2, 0xE1, 0xB8, + 0xB4, 0xE1, 0xB8, 0xB6, 0xE1, 0xB8, 0xB8, 0xE1, + 0xB8, 0xBA, 0xE1, 0xB8, 0xBC, 0xE1, 0xB8, 0xBE, + 0xE1, 0xB9, 0x80, 0xE1, 0xB9, 0x82, 0xE1, 0xB9, + 0x84, 0xE1, 0xB9, 0x86, 0xE1, 0xB9, 0x88, 0xE1, + 0xB9, 0x8A, 0xE1, 0xB9, 0x8C, 0xE1, 0xB9, 0x8E, + 0xE1, 0xB9, 0x90, 0xE1, 0xB9, 0x92, 0xE1, 0xB9, + 0x94, 0xE1, 0xB9, 0x96, 0xE1, 0xB9, 0x98, 0xE1, + 0xB9, 0x9A, 0xE1, 0xB9, 0x9C, 0xE1, 0xB9, 0x9E, + 0xE1, 0xB9, 0xA0, 0xE1, 0xB9, 0xA2, 0xE1, 0xB9, + 0xA4, 0xE1, 0xB9, 0xA6, 0xE1, 0xB9, 0xA8, 0xE1, + 0xB9, 0xAA, 0xE1, 0xB9, 0xAC, 0xE1, 0xB9, 0xAE, + 0xE1, 0xB9, 0xB0, 0xE1, 0xB9, 0xB2, 0xE1, 0xB9, + 0xB4, 0xE1, 0xB9, 0xB6, 0xE1, 0xB9, 0xB8, 0xE1, + 0xB9, 0xBA, 0xE1, 0xB9, 0xBC, 0xE1, 0xB9, 0xBE, + 0xE1, 0xBA, 0x80, 0xE1, 0xBA, 0x82, 0xE1, 0xBA, + 0x84, 0xE1, 0xBA, 0x86, 0xE1, 0xBA, 0x88, 0xE1, + 0xBA, 0x8A, 0xE1, 0xBA, 0x8C, 0xE1, 0xBA, 0x8E, + 0xE1, 0xBA, 0x90, 0xE1, 0xBA, 0x92, 0xE1, 0xBA, + 0x94, 0xE1, 0xB9, 0xA0, 0xE1, 0xBA, 0xA0, 0xE1, + 0xBA, 0xA2, 0xE1, 0xBA, 0xA4, 0xE1, 0xBA, 0xA6, + 0xE1, 0xBA, 0xA8, 0xE1, 0xBA, 0xAA, 0xE1, 0xBA, + 0xAC, 0xE1, 0xBA, 0xAE, 0xE1, 0xBA, 0xB0, 0xE1, + 0xBA, 0xB2, 0xE1, 0xBA, 0xB4, 0xE1, 0xBA, 0xB6, + 0xE1, 0xBA, 0xB8, 0xE1, 0xBA, 0xBA, 0xE1, 0xBA, + 0xBC, 0xE1, 0xBA, 0xBE, 0xE1, 0xBB, 0x80, 0xE1, + 0xBB, 0x82, 0xE1, 0xBB, 0x84, 0xE1, 0xBB, 0x86, + 0xE1, 0xBB, 0x88, 0xE1, 0xBB, 0x8A, 0xE1, 0xBB, + 0x8C, 0xE1, 0xBB, 0x8E, 0xE1, 0xBB, 0x90, 0xE1, + 0xBB, 0x92, 0xE1, 0xBB, 0x94, 0xE1, 0xBB, 0x96, + 0xE1, 0xBB, 0x98, 0xE1, 0xBB, 0x9A, 0xE1, 0xBB, + 0x9C, 0xE1, 0xBB, 0x9E, 0xE1, 0xBB, 0xA0, 0xE1, + 0xBB, 0xA2, 0xE1, 0xBB, 0xA4, 0xE1, 0xBB, 0xA6, + 0xE1, 0xBB, 0xA8, 0xE1, 0xBB, 0xAA, 0xE1, 0xBB, + 0xAC, 0xE1, 0xBB, 0xAE, 0xE1, 0xBB, 0xB0, 0xE1, + 0xBB, 0xB2, 0xE1, 0xBB, 0xB4, 0xE1, 0xBB, 0xB6, + 0xE1, 0xBB, 0xB8, 0xE1, 0xBC, 0x88, 0xE1, 0xBC, + 0x89, 0xE1, 0xBC, 0x8A, 0xE1, 0xBC, 0x8B, 0xE1, + 0xBC, 0x8C, 0xE1, 0xBC, 0x8D, 0xE1, 0xBC, 0x8E, + 0xE1, 0xBC, 0x8F, 0xE1, 0xBC, 0x98, 0xE1, 0xBC, + 0x99, 0xE1, 0xBC, 0x9A, 0xE1, 0xBC, 0x9B, 0xE1, + 0xBC, 0x9C, 0xE1, 0xBC, 0x9D, 0xE1, 0xBC, 0xA8, + 0xE1, 0xBC, 0xA9, 0xE1, 0xBC, 0xAA, 0xE1, 0xBC, + 0xAB, 0xE1, 0xBC, 0xAC, 0xE1, 0xBC, 0xAD, 0xE1, + 0xBC, 0xAE, 0xE1, 0xBC, 0xAF, 0xE1, 0xBC, 0xB8, + 0xE1, 0xBC, 0xB9, 0xE1, 0xBC, 0xBA, 0xE1, 0xBC, + 0xBB, 0xE1, 0xBC, 0xBC, 0xE1, 0xBC, 0xBD, 0xE1, + 0xBC, 0xBE, 0xE1, 0xBC, 0xBF, 0xE1, 0xBD, 0x88, + 0xE1, 0xBD, 0x89, 0xE1, 0xBD, 0x8A, 0xE1, 0xBD, + 0x8B, 0xE1, 0xBD, 0x8C, 0xE1, 0xBD, 0x8D, 0xE1, + 0xBD, 0x99, 0xE1, 0xBD, 0x9B, 0xE1, 0xBD, 0x9D, + 0xE1, 0xBD, 0x9F, 0xE1, 0xBD, 0xA8, 0xE1, 0xBD, + 0xA9, 0xE1, 0xBD, 0xAA, 0xE1, 0xBD, 0xAB, 0xE1, + 0xBD, 0xAC, 0xE1, 0xBD, 0xAD, 0xE1, 0xBD, 0xAE, + 0xE1, 0xBD, 0xAF, 0xE1, 0xBE, 0xBA, 0xE1, 0xBE, + 0xBB, 0xE1, 0xBF, 0x88, 0xE1, 0xBF, 0x89, 0xE1, + 0xBF, 0x8A, 0xE1, 0xBF, 0x8B, 0xE1, 0xBF, 0x9A, + 0xE1, 0xBF, 0x9B, 0xE1, 0xBF, 0xB8, 0xE1, 0xBF, + 0xB9, 0xE1, 0xBF, 0xAA, 0xE1, 0xBF, 0xAB, 0xE1, + 0xBF, 0xBA, 0xE1, 0xBF, 0xBB, 0xE1, 0xBE, 0x88, + 0xE1, 0xBE, 0x89, 0xE1, 0xBE, 0x8A, 0xE1, 0xBE, + 0x8B, 0xE1, 0xBE, 0x8C, 0xE1, 0xBE, 0x8D, 0xE1, + 0xBE, 0x8E, 0xE1, 0xBE, 0x8F, 0xE1, 0xBE, 0x98, + 0xE1, 0xBE, 0x99, 0xE1, 0xBE, 0x9A, 0xE1, 0xBE, + 0x9B, 0xE1, 0xBE, 0x9C, 0xE1, 0xBE, 0x9D, 0xE1, + 0xBE, 0x9E, 0xE1, 0xBE, 0x9F, 0xE1, 0xBE, 0xA8, + 0xE1, 0xBE, 0xA9, 0xE1, 0xBE, 0xAA, 0xE1, 0xBE, + 0xAB, 0xE1, 0xBE, 0xAC, 0xE1, 0xBE, 0xAD, 0xE1, + 0xBE, 0xAE, 0xE1, 0xBE, 0xAF, 0xE1, 0xBE, 0xB8, + 0xE1, 0xBE, 0xB9, 0xE1, 0xBE, 0xBC, 0xCE, 0x99, + 0xE1, 0xBF, 0x8C, 0xE1, 0xBF, 0x98, 0xE1, 0xBF, + 0x99, 0xE1, 0xBF, 0xA8, 0xE1, 0xBF, 0xA9, 0xE1, + 0xBF, 0xAC, 0xE1, 0xBF, 0xBC, 0xE2, 0x85, 0xA0, + 0xE2, 0x85, 0xA1, 0xE2, 0x85, 0xA2, 0xE2, 0x85, + 0xA3, 0xE2, 0x85, 0xA4, 0xE2, 0x85, 0xA5, 0xE2, + 0x85, 0xA6, 0xE2, 0x85, 0xA7, 0xE2, 0x85, 0xA8, + 0xE2, 0x85, 0xA9, 0xE2, 0x85, 0xAA, 0xE2, 0x85, + 0xAB, 0xE2, 0x85, 0xAC, 0xE2, 0x85, 0xAD, 0xE2, + 0x85, 0xAE, 0xE2, 0x85, 0xAF, 0xE2, 0x92, 0xB6, + 0xE2, 0x92, 0xB7, 0xE2, 0x92, 0xB8, 0xE2, 0x92, + 0xB9, 0xE2, 0x92, 0xBA, 0xE2, 0x92, 0xBB, 0xE2, + 0x92, 0xBC, 0xE2, 0x92, 0xBD, 0xE2, 0x92, 0xBE, + 0xE2, 0x92, 0xBF, 0xE2, 0x93, 0x80, 0xE2, 0x93, + 0x81, 0xE2, 0x93, 0x82, 0xE2, 0x93, 0x83, 0xE2, + 0x93, 0x84, 0xE2, 0x93, 0x85, 0xE2, 0x93, 0x86, + 0xE2, 0x93, 0x87, 0xE2, 0x93, 0x88, 0xE2, 0x93, + 0x89, 0xE2, 0x93, 0x8A, 0xE2, 0x93, 0x8B, 0xE2, + 0x93, 0x8C, 0xE2, 0x93, 0x8D, 0xE2, 0x93, 0x8E, + 0xE2, 0x93, 0x8F, 0xEF, 0xBC, 0xA1, 0xEF, 0xBC, + 0xA2, 0xEF, 0xBC, 0xA3, 0xEF, 0xBC, 0xA4, 0xEF, + 0xBC, 0xA5, 0xEF, 0xBC, 0xA6, 0xEF, 0xBC, 0xA7, + 0xEF, 0xBC, 0xA8, 0xEF, 0xBC, 0xA9, 0xEF, 0xBC, + 0xAA, 0xEF, 0xBC, 0xAB, 0xEF, 0xBC, 0xAC, 0xEF, + 0xBC, 0xAD, 0xEF, 0xBC, 0xAE, 0xEF, 0xBC, 0xAF, + 0xEF, 0xBC, 0xB0, 0xEF, 0xBC, 0xB1, 0xEF, 0xBC, + 0xB2, 0xEF, 0xBC, 0xB3, 0xEF, 0xBC, 0xB4, 0xEF, + 0xBC, 0xB5, 0xEF, 0xBC, 0xB6, 0xEF, 0xBC, 0xB7, + 0xEF, 0xBC, 0xB8, 0xEF, 0xBC, 0xB9, 0xEF, 0xBC, + 0xBA, 0xF0, 0x90, 0x90, 0x80, 0xF0, 0x90, 0x90, + 0x81, 0xF0, 0x90, 0x90, 0x82, 0xF0, 0x90, 0x90, + 0x83, 0xF0, 0x90, 0x90, 0x84, 0xF0, 0x90, 0x90, + 0x85, 0xF0, 0x90, 0x90, 0x86, 0xF0, 0x90, 0x90, + 0x87, 0xF0, 0x90, 0x90, 0x88, 0xF0, 0x90, 0x90, + 0x89, 0xF0, 0x90, 0x90, 0x8A, 0xF0, 0x90, 0x90, + 0x8B, 0xF0, 0x90, 0x90, 0x8C, 0xF0, 0x90, 0x90, + 0x8D, 0xF0, 0x90, 0x90, 0x8E, 0xF0, 0x90, 0x90, + 0x8F, 0xF0, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, + 0x91, 0xF0, 0x90, 0x90, 0x92, 0xF0, 0x90, 0x90, + 0x93, 0xF0, 0x90, 0x90, 0x94, 0xF0, 0x90, 0x90, + 0x95, 0xF0, 0x90, 0x90, 0x96, 0xF0, 0x90, 0x90, + 0x97, 0xF0, 0x90, 0x90, 0x98, 0xF0, 0x90, 0x90, + 0x99, 0xF0, 0x90, 0x90, 0x9A, 0xF0, 0x90, 0x90, + 0x9B, 0xF0, 0x90, 0x90, 0x9C, 0xF0, 0x90, 0x90, + 0x9D, 0xF0, 0x90, 0x90, 0x9E, 0xF0, 0x90, 0x90, + 0x9F, 0xF0, 0x90, 0x90, 0xA0, 0xF0, 0x90, 0x90, + 0xA1, 0xF0, 0x90, 0x90, 0xA2, 0xF0, 0x90, 0x90, + 0xA3, 0xF0, 0x90, 0x90, 0xA4, 0xF0, 0x90, 0x90, + 0xA5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + }, + { + 0xCE, 0x9C, 0xC3, 0x80, 0xC3, 0x81, 0xC3, 0x82, + 0xC3, 0x83, 0xC3, 0x84, 0xC3, 0x85, 0xC3, 0x86, + 0xC3, 0x87, 0xC3, 0x88, 0xC3, 0x89, 0xC3, 0x8A, + 0xC3, 0x8B, 0xC3, 0x8C, 0xC3, 0x8D, 0xC3, 0x8E, + 0xC3, 0x8F, 0xC3, 0x90, 0xC3, 0x91, 0xC3, 0x92, + 0xC3, 0x93, 0xC3, 0x94, 0xC3, 0x95, 0xC3, 0x96, + 0xC3, 0x98, 0xC3, 0x99, 0xC3, 0x9A, 0xC3, 0x9B, + 0xC3, 0x9C, 0xC3, 0x9D, 0xC3, 0x9E, 0xC5, 0xB8, + 0xC4, 0x80, 0xC4, 0x82, 0xC4, 0x84, 0xC4, 0x86, + 0xC4, 0x88, 0xC4, 0x8A, 0xC4, 0x8C, 0xC4, 0x8E, + 0xC4, 0x90, 0xC4, 0x92, 0xC4, 0x94, 0xC4, 0x96, + 0xC4, 0x98, 0xC4, 0x9A, 0xC4, 0x9C, 0xC4, 0x9E, + 0xC4, 0xA0, 0xC4, 0xA2, 0xC4, 0xA4, 0xC4, 0xA6, + 0xC4, 0xA8, 0xC4, 0xAA, 0xC4, 0xAC, 0xC4, 0xAE, + 0x49, 0xC4, 0xB2, 0xC4, 0xB4, 0xC4, 0xB6, 0xC4, + 0xB9, 0xC4, 0xBB, 0xC4, 0xBD, 0xC4, 0xBF, 0xC5, + 0x81, 0xC5, 0x83, 0xC5, 0x85, 0xC5, 0x87, 0xC5, + 0x8A, 0xC5, 0x8C, 0xC5, 0x8E, 0xC5, 0x90, 0xC5, + 0x92, 0xC5, 0x94, 0xC5, 0x96, 0xC5, 0x98, 0xC5, + 0x9A, 0xC5, 0x9C, 0xC5, 0x9E, 0xC5, 0xA0, 0xC5, + 0xA2, 0xC5, 0xA4, 0xC5, 0xA6, 0xC5, 0xA8, 0xC5, + 0xAA, 0xC5, 0xAC, 0xC5, 0xAE, 0xC5, 0xB0, 0xC5, + 0xB2, 0xC5, 0xB4, 0xC5, 0xB6, 0xC5, 0xB9, 0xC5, + 0xBB, 0xC5, 0xBD, 0x53, 0xC9, 0x83, 0xC6, 0x82, + 0xC6, 0x84, 0xC6, 0x87, 0xC6, 0x8B, 0xC6, 0x91, + 0xC7, 0xB6, 0xC6, 0x98, 0xC8, 0xBD, 0xC8, 0xA0, + 0xC6, 0xA0, 0xC6, 0xA2, 0xC6, 0xA4, 0xC6, 0xA7, + 0xC6, 0xAC, 0xC6, 0xAF, 0xC6, 0xB3, 0xC6, 0xB5, + 0xC6, 0xB8, 0xC6, 0xBC, 0xC7, 0xB7, 0xC7, 0x84, + 0xC7, 0x84, 0xC7, 0x87, 0xC7, 0x87, 0xC7, 0x8A, + 0xC7, 0x8A, 0xC7, 0x8D, 0xC7, 0x8F, 0xC7, 0x91, + 0xC7, 0x93, 0xC7, 0x95, 0xC7, 0x97, 0xC7, 0x99, + 0xC7, 0x9B, 0xC6, 0x8E, 0xC7, 0x9E, 0xC7, 0xA0, + 0xC7, 0xA2, 0xC7, 0xA4, 0xC7, 0xA6, 0xC7, 0xA8, + 0xC7, 0xAA, 0xC7, 0xAC, 0xC7, 0xAE, 0xC7, 0xB1, + 0xC7, 0xB1, 0xC7, 0xB4, 0xC7, 0xB8, 0xC7, 0xBA, + 0xC7, 0xBC, 0xC7, 0xBE, 0xC8, 0x80, 0xC8, 0x82, + 0xC8, 0x84, 0xC8, 0x86, 0xC8, 0x88, 0xC8, 0x8A, + 0xC8, 0x8C, 0xC8, 0x8E, 0xC8, 0x90, 0xC8, 0x92, + 0xC8, 0x94, 0xC8, 0x96, 0xC8, 0x98, 0xC8, 0x9A, + 0xC8, 0x9C, 0xC8, 0x9E, 0xC8, 0xA2, 0xC8, 0xA4, + 0xC8, 0xA6, 0xC8, 0xA8, 0xC8, 0xAA, 0xC8, 0xAC, + 0xC8, 0xAE, 0xC8, 0xB0, 0xC8, 0xB2, 0xC8, 0xBB, + 0xC9, 0x81, 0xC9, 0x86, 0xC9, 0x88, 0xC9, 0x8A, + 0xC9, 0x8C, 0xC9, 0x8E, 0xC6, 0x81, 0xC6, 0x86, + 0xC6, 0x89, 0xC6, 0x8A, 0xC6, 0x8F, 0xC6, 0x90, + 0xC6, 0x93, 0xC6, 0x94, 0xC6, 0x97, 0xC6, 0x96, + 0xE2, 0xB1, 0xA2, 0xC6, 0x9C, 0xC6, 0x9D, 0xC6, + 0x9F, 0xE2, 0xB1, 0xA4, 0xC6, 0xA6, 0xC6, 0xA9, + 0xC6, 0xAE, 0xC9, 0x84, 0xC6, 0xB1, 0xC6, 0xB2, + 0xC9, 0x85, 0xC6, 0xB7, 0xCE, 0x99, 0xCF, 0xBD, + 0xCF, 0xBE, 0xCF, 0xBF, 0xCE, 0x86, 0xCE, 0x88, + 0xCE, 0x89, 0xCE, 0x8A, 0xCE, 0x91, 0xCE, 0x92, + 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, + 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, + 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, + 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0xA3, + 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, + 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xCE, 0xAA, + 0xCE, 0xAB, 0xCE, 0x8C, 0xCE, 0x8E, 0xCE, 0x8F, + 0xCE, 0x92, 0xCE, 0x98, 0xCE, 0xA6, 0xCE, 0xA0, + 0xCF, 0x98, 0xCF, 0x9A, 0xCF, 0x9C, 0xCF, 0x9E, + 0xCF, 0xA0, 0xCF, 0xA2, 0xCF, 0xA4, 0xCF, 0xA6, + 0xCF, 0xA8, 0xCF, 0xAA, 0xCF, 0xAC, 0xCF, 0xAE, + 0xCE, 0x9A, 0xCE, 0xA1, 0xCF, 0xB9, 0xCE, 0x95, + 0xCF, 0xB7, 0xCF, 0xBA, 0xD0, 0x90, 0xD0, 0x91, + 0xD0, 0x92, 0xD0, 0x93, 0xD0, 0x94, 0xD0, 0x95, + 0xD0, 0x96, 0xD0, 0x97, 0xD0, 0x98, 0xD0, 0x99, + 0xD0, 0x9A, 0xD0, 0x9B, 0xD0, 0x9C, 0xD0, 0x9D, + 0xD0, 0x9E, 0xD0, 0x9F, 0xD0, 0xA0, 0xD0, 0xA1, + 0xD0, 0xA2, 0xD0, 0xA3, 0xD0, 0xA4, 0xD0, 0xA5, + 0xD0, 0xA6, 0xD0, 0xA7, 0xD0, 0xA8, 0xD0, 0xA9, + 0xD0, 0xAA, 0xD0, 0xAB, 0xD0, 0xAC, 0xD0, 0xAD, + 0xD0, 0xAE, 0xD0, 0xAF, 0xD0, 0x80, 0xD0, 0x81, + 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0x84, 0xD0, 0x85, + 0xD0, 0x86, 0xD0, 0x87, 0xD0, 0x88, 0xD0, 0x89, + 0xD0, 0x8A, 0xD0, 0x8B, 0xD0, 0x8C, 0xD0, 0x8D, + 0xD0, 0x8E, 0xD0, 0x8F, 0xD1, 0xA0, 0xD1, 0xA2, + 0xD1, 0xA4, 0xD1, 0xA6, 0xD1, 0xA8, 0xD1, 0xAA, + 0xD1, 0xAC, 0xD1, 0xAE, 0xD1, 0xB0, 0xD1, 0xB2, + 0xD1, 0xB4, 0xD1, 0xB6, 0xD1, 0xB8, 0xD1, 0xBA, + 0xD1, 0xBC, 0xD1, 0xBE, 0xD2, 0x80, 0xD2, 0x8A, + 0xD2, 0x8C, 0xD2, 0x8E, 0xD2, 0x90, 0xD2, 0x92, + 0xD2, 0x94, 0xD2, 0x96, 0xD2, 0x98, 0xD2, 0x9A, + 0xD2, 0x9C, 0xD2, 0x9E, 0xD2, 0xA0, 0xD2, 0xA2, + 0xD2, 0xA4, 0xD2, 0xA6, 0xD2, 0xA8, 0xD2, 0xAA, + 0xD2, 0xAC, 0xD2, 0xAE, 0xD2, 0xB0, 0xD2, 0xB2, + 0xD2, 0xB4, 0xD2, 0xB6, 0xD2, 0xB8, 0xD2, 0xBA, + 0xD2, 0xBC, 0xD2, 0xBE, 0xD3, 0x81, 0xD3, 0x83, + 0xD3, 0x85, 0xD3, 0x87, 0xD3, 0x89, 0xD3, 0x8B, + 0xD3, 0x8D, 0xD3, 0x80, 0xD3, 0x90, 0xD3, 0x92, + 0xD3, 0x94, 0xD3, 0x96, 0xD3, 0x98, 0xD3, 0x9A, + 0xD3, 0x9C, 0xD3, 0x9E, 0xD3, 0xA0, 0xD3, 0xA2, + 0xD3, 0xA4, 0xD3, 0xA6, 0xD3, 0xA8, 0xD3, 0xAA, + 0xD3, 0xAC, 0xD3, 0xAE, 0xD3, 0xB0, 0xD3, 0xB2, + 0xD3, 0xB4, 0xD3, 0xB6, 0xD3, 0xB8, 0xD3, 0xBA, + 0xD3, 0xBC, 0xD3, 0xBE, 0xD4, 0x80, 0xD4, 0x82, + 0xD4, 0x84, 0xD4, 0x86, 0xD4, 0x88, 0xD4, 0x8A, + 0xD4, 0x8C, 0xD4, 0x8E, 0xD4, 0x90, 0xD4, 0x92, + 0xD4, 0xB1, 0xD4, 0xB2, 0xD4, 0xB3, 0xD4, 0xB4, + 0xD4, 0xB5, 0xD4, 0xB6, 0xD4, 0xB7, 0xD4, 0xB8, + 0xD4, 0xB9, 0xD4, 0xBA, 0xD4, 0xBB, 0xD4, 0xBC, + 0xD4, 0xBD, 0xD4, 0xBE, 0xD4, 0xBF, 0xD5, 0x80, + 0xD5, 0x81, 0xD5, 0x82, 0xD5, 0x83, 0xD5, 0x84, + 0xD5, 0x85, 0xD5, 0x86, 0xD5, 0x87, 0xD5, 0x88, + 0xD5, 0x89, 0xD5, 0x8A, 0xD5, 0x8B, 0xD5, 0x8C, + 0xD5, 0x8D, 0xD5, 0x8E, 0xD5, 0x8F, 0xD5, 0x90, + 0xD5, 0x91, 0xD5, 0x92, 0xD5, 0x93, 0xD5, 0x94, + 0xD5, 0x95, 0xD5, 0x96, 0xE2, 0xB1, 0xA3, 0xE1, + 0xB8, 0x80, 0xE1, 0xB8, 0x82, 0xE1, 0xB8, 0x84, + 0xE1, 0xB8, 0x86, 0xE1, 0xB8, 0x88, 0xE1, 0xB8, + 0x8A, 0xE1, 0xB8, 0x8C, 0xE1, 0xB8, 0x8E, 0xE1, + 0xB8, 0x90, 0xE1, 0xB8, 0x92, 0xE1, 0xB8, 0x94, + 0xE1, 0xB8, 0x96, 0xE1, 0xB8, 0x98, 0xE1, 0xB8, + 0x9A, 0xE1, 0xB8, 0x9C, 0xE1, 0xB8, 0x9E, 0xE1, + 0xB8, 0xA0, 0xE1, 0xB8, 0xA2, 0xE1, 0xB8, 0xA4, + 0xE1, 0xB8, 0xA6, 0xE1, 0xB8, 0xA8, 0xE1, 0xB8, + 0xAA, 0xE1, 0xB8, 0xAC, 0xE1, 0xB8, 0xAE, 0xE1, + 0xB8, 0xB0, 0xE1, 0xB8, 0xB2, 0xE1, 0xB8, 0xB4, + 0xE1, 0xB8, 0xB6, 0xE1, 0xB8, 0xB8, 0xE1, 0xB8, + 0xBA, 0xE1, 0xB8, 0xBC, 0xE1, 0xB8, 0xBE, 0xE1, + 0xB9, 0x80, 0xE1, 0xB9, 0x82, 0xE1, 0xB9, 0x84, + 0xE1, 0xB9, 0x86, 0xE1, 0xB9, 0x88, 0xE1, 0xB9, + 0x8A, 0xE1, 0xB9, 0x8C, 0xE1, 0xB9, 0x8E, 0xE1, + 0xB9, 0x90, 0xE1, 0xB9, 0x92, 0xE1, 0xB9, 0x94, + 0xE1, 0xB9, 0x96, 0xE1, 0xB9, 0x98, 0xE1, 0xB9, + 0x9A, 0xE1, 0xB9, 0x9C, 0xE1, 0xB9, 0x9E, 0xE1, + 0xB9, 0xA0, 0xE1, 0xB9, 0xA2, 0xE1, 0xB9, 0xA4, + 0xE1, 0xB9, 0xA6, 0xE1, 0xB9, 0xA8, 0xE1, 0xB9, + 0xAA, 0xE1, 0xB9, 0xAC, 0xE1, 0xB9, 0xAE, 0xE1, + 0xB9, 0xB0, 0xE1, 0xB9, 0xB2, 0xE1, 0xB9, 0xB4, + 0xE1, 0xB9, 0xB6, 0xE1, 0xB9, 0xB8, 0xE1, 0xB9, + 0xBA, 0xE1, 0xB9, 0xBC, 0xE1, 0xB9, 0xBE, 0xE1, + 0xBA, 0x80, 0xE1, 0xBA, 0x82, 0xE1, 0xBA, 0x84, + 0xE1, 0xBA, 0x86, 0xE1, 0xBA, 0x88, 0xE1, 0xBA, + 0x8A, 0xE1, 0xBA, 0x8C, 0xE1, 0xBA, 0x8E, 0xE1, + 0xBA, 0x90, 0xE1, 0xBA, 0x92, 0xE1, 0xBA, 0x94, + 0xE1, 0xB9, 0xA0, 0xE1, 0xBA, 0xA0, 0xE1, 0xBA, + 0xA2, 0xE1, 0xBA, 0xA4, 0xE1, 0xBA, 0xA6, 0xE1, + 0xBA, 0xA8, 0xE1, 0xBA, 0xAA, 0xE1, 0xBA, 0xAC, + 0xE1, 0xBA, 0xAE, 0xE1, 0xBA, 0xB0, 0xE1, 0xBA, + 0xB2, 0xE1, 0xBA, 0xB4, 0xE1, 0xBA, 0xB6, 0xE1, + 0xBA, 0xB8, 0xE1, 0xBA, 0xBA, 0xE1, 0xBA, 0xBC, + 0xE1, 0xBA, 0xBE, 0xE1, 0xBB, 0x80, 0xE1, 0xBB, + 0x82, 0xE1, 0xBB, 0x84, 0xE1, 0xBB, 0x86, 0xE1, + 0xBB, 0x88, 0xE1, 0xBB, 0x8A, 0xE1, 0xBB, 0x8C, + 0xE1, 0xBB, 0x8E, 0xE1, 0xBB, 0x90, 0xE1, 0xBB, + 0x92, 0xE1, 0xBB, 0x94, 0xE1, 0xBB, 0x96, 0xE1, + 0xBB, 0x98, 0xE1, 0xBB, 0x9A, 0xE1, 0xBB, 0x9C, + 0xE1, 0xBB, 0x9E, 0xE1, 0xBB, 0xA0, 0xE1, 0xBB, + 0xA2, 0xE1, 0xBB, 0xA4, 0xE1, 0xBB, 0xA6, 0xE1, + 0xBB, 0xA8, 0xE1, 0xBB, 0xAA, 0xE1, 0xBB, 0xAC, + 0xE1, 0xBB, 0xAE, 0xE1, 0xBB, 0xB0, 0xE1, 0xBB, + 0xB2, 0xE1, 0xBB, 0xB4, 0xE1, 0xBB, 0xB6, 0xE1, + 0xBB, 0xB8, 0xE1, 0xBC, 0x88, 0xE1, 0xBC, 0x89, + 0xE1, 0xBC, 0x8A, 0xE1, 0xBC, 0x8B, 0xE1, 0xBC, + 0x8C, 0xE1, 0xBC, 0x8D, 0xE1, 0xBC, 0x8E, 0xE1, + 0xBC, 0x8F, 0xE1, 0xBC, 0x98, 0xE1, 0xBC, 0x99, + 0xE1, 0xBC, 0x9A, 0xE1, 0xBC, 0x9B, 0xE1, 0xBC, + 0x9C, 0xE1, 0xBC, 0x9D, 0xE1, 0xBC, 0xA8, 0xE1, + 0xBC, 0xA9, 0xE1, 0xBC, 0xAA, 0xE1, 0xBC, 0xAB, + 0xE1, 0xBC, 0xAC, 0xE1, 0xBC, 0xAD, 0xE1, 0xBC, + 0xAE, 0xE1, 0xBC, 0xAF, 0xE1, 0xBC, 0xB8, 0xE1, + 0xBC, 0xB9, 0xE1, 0xBC, 0xBA, 0xE1, 0xBC, 0xBB, + 0xE1, 0xBC, 0xBC, 0xE1, 0xBC, 0xBD, 0xE1, 0xBC, + 0xBE, 0xE1, 0xBC, 0xBF, 0xE1, 0xBD, 0x88, 0xE1, + 0xBD, 0x89, 0xE1, 0xBD, 0x8A, 0xE1, 0xBD, 0x8B, + 0xE1, 0xBD, 0x8C, 0xE1, 0xBD, 0x8D, 0xE1, 0xBD, + 0x99, 0xE1, 0xBD, 0x9B, 0xE1, 0xBD, 0x9D, 0xE1, + 0xBD, 0x9F, 0xE1, 0xBD, 0xA8, 0xE1, 0xBD, 0xA9, + 0xE1, 0xBD, 0xAA, 0xE1, 0xBD, 0xAB, 0xE1, 0xBD, + 0xAC, 0xE1, 0xBD, 0xAD, 0xE1, 0xBD, 0xAE, 0xE1, + 0xBD, 0xAF, 0xE1, 0xBE, 0xBA, 0xE1, 0xBE, 0xBB, + 0xE1, 0xBF, 0x88, 0xE1, 0xBF, 0x89, 0xE1, 0xBF, + 0x8A, 0xE1, 0xBF, 0x8B, 0xE1, 0xBF, 0x9A, 0xE1, + 0xBF, 0x9B, 0xE1, 0xBF, 0xB8, 0xE1, 0xBF, 0xB9, + 0xE1, 0xBF, 0xAA, 0xE1, 0xBF, 0xAB, 0xE1, 0xBF, + 0xBA, 0xE1, 0xBF, 0xBB, 0xE1, 0xBE, 0x88, 0xE1, + 0xBE, 0x89, 0xE1, 0xBE, 0x8A, 0xE1, 0xBE, 0x8B, + 0xE1, 0xBE, 0x8C, 0xE1, 0xBE, 0x8D, 0xE1, 0xBE, + 0x8E, 0xE1, 0xBE, 0x8F, 0xE1, 0xBE, 0x98, 0xE1, + 0xBE, 0x99, 0xE1, 0xBE, 0x9A, 0xE1, 0xBE, 0x9B, + 0xE1, 0xBE, 0x9C, 0xE1, 0xBE, 0x9D, 0xE1, 0xBE, + 0x9E, 0xE1, 0xBE, 0x9F, 0xE1, 0xBE, 0xA8, 0xE1, + 0xBE, 0xA9, 0xE1, 0xBE, 0xAA, 0xE1, 0xBE, 0xAB, + 0xE1, 0xBE, 0xAC, 0xE1, 0xBE, 0xAD, 0xE1, 0xBE, + 0xAE, 0xE1, 0xBE, 0xAF, 0xE1, 0xBE, 0xB8, 0xE1, + 0xBE, 0xB9, 0xE1, 0xBE, 0xBC, 0xCE, 0x99, 0xE1, + 0xBF, 0x8C, 0xE1, 0xBF, 0x98, 0xE1, 0xBF, 0x99, + 0xE1, 0xBF, 0xA8, 0xE1, 0xBF, 0xA9, 0xE1, 0xBF, + 0xAC, 0xE1, 0xBF, 0xBC, 0xE2, 0x84, 0xB2, 0xE2, + 0x85, 0xA0, 0xE2, 0x85, 0xA1, 0xE2, 0x85, 0xA2, + 0xE2, 0x85, 0xA3, 0xE2, 0x85, 0xA4, 0xE2, 0x85, + 0xA5, 0xE2, 0x85, 0xA6, 0xE2, 0x85, 0xA7, 0xE2, + 0x85, 0xA8, 0xE2, 0x85, 0xA9, 0xE2, 0x85, 0xAA, + 0xE2, 0x85, 0xAB, 0xE2, 0x85, 0xAC, 0xE2, 0x85, + 0xAD, 0xE2, 0x85, 0xAE, 0xE2, 0x85, 0xAF, 0xE2, + 0x86, 0x83, 0xE2, 0x92, 0xB6, 0xE2, 0x92, 0xB7, + 0xE2, 0x92, 0xB8, 0xE2, 0x92, 0xB9, 0xE2, 0x92, + 0xBA, 0xE2, 0x92, 0xBB, 0xE2, 0x92, 0xBC, 0xE2, + 0x92, 0xBD, 0xE2, 0x92, 0xBE, 0xE2, 0x92, 0xBF, + 0xE2, 0x93, 0x80, 0xE2, 0x93, 0x81, 0xE2, 0x93, + 0x82, 0xE2, 0x93, 0x83, 0xE2, 0x93, 0x84, 0xE2, + 0x93, 0x85, 0xE2, 0x93, 0x86, 0xE2, 0x93, 0x87, + 0xE2, 0x93, 0x88, 0xE2, 0x93, 0x89, 0xE2, 0x93, + 0x8A, 0xE2, 0x93, 0x8B, 0xE2, 0x93, 0x8C, 0xE2, + 0x93, 0x8D, 0xE2, 0x93, 0x8E, 0xE2, 0x93, 0x8F, + 0xE2, 0xB0, 0x80, 0xE2, 0xB0, 0x81, 0xE2, 0xB0, + 0x82, 0xE2, 0xB0, 0x83, 0xE2, 0xB0, 0x84, 0xE2, + 0xB0, 0x85, 0xE2, 0xB0, 0x86, 0xE2, 0xB0, 0x87, + 0xE2, 0xB0, 0x88, 0xE2, 0xB0, 0x89, 0xE2, 0xB0, + 0x8A, 0xE2, 0xB0, 0x8B, 0xE2, 0xB0, 0x8C, 0xE2, + 0xB0, 0x8D, 0xE2, 0xB0, 0x8E, 0xE2, 0xB0, 0x8F, + 0xE2, 0xB0, 0x90, 0xE2, 0xB0, 0x91, 0xE2, 0xB0, + 0x92, 0xE2, 0xB0, 0x93, 0xE2, 0xB0, 0x94, 0xE2, + 0xB0, 0x95, 0xE2, 0xB0, 0x96, 0xE2, 0xB0, 0x97, + 0xE2, 0xB0, 0x98, 0xE2, 0xB0, 0x99, 0xE2, 0xB0, + 0x9A, 0xE2, 0xB0, 0x9B, 0xE2, 0xB0, 0x9C, 0xE2, + 0xB0, 0x9D, 0xE2, 0xB0, 0x9E, 0xE2, 0xB0, 0x9F, + 0xE2, 0xB0, 0xA0, 0xE2, 0xB0, 0xA1, 0xE2, 0xB0, + 0xA2, 0xE2, 0xB0, 0xA3, 0xE2, 0xB0, 0xA4, 0xE2, + 0xB0, 0xA5, 0xE2, 0xB0, 0xA6, 0xE2, 0xB0, 0xA7, + 0xE2, 0xB0, 0xA8, 0xE2, 0xB0, 0xA9, 0xE2, 0xB0, + 0xAA, 0xE2, 0xB0, 0xAB, 0xE2, 0xB0, 0xAC, 0xE2, + 0xB0, 0xAD, 0xE2, 0xB0, 0xAE, 0xE2, 0xB1, 0xA0, + 0xC8, 0xBA, 0xC8, 0xBE, 0xE2, 0xB1, 0xA7, 0xE2, + 0xB1, 0xA9, 0xE2, 0xB1, 0xAB, 0xE2, 0xB1, 0xB5, + 0xE2, 0xB2, 0x80, 0xE2, 0xB2, 0x82, 0xE2, 0xB2, + 0x84, 0xE2, 0xB2, 0x86, 0xE2, 0xB2, 0x88, 0xE2, + 0xB2, 0x8A, 0xE2, 0xB2, 0x8C, 0xE2, 0xB2, 0x8E, + 0xE2, 0xB2, 0x90, 0xE2, 0xB2, 0x92, 0xE2, 0xB2, + 0x94, 0xE2, 0xB2, 0x96, 0xE2, 0xB2, 0x98, 0xE2, + 0xB2, 0x9A, 0xE2, 0xB2, 0x9C, 0xE2, 0xB2, 0x9E, + 0xE2, 0xB2, 0xA0, 0xE2, 0xB2, 0xA2, 0xE2, 0xB2, + 0xA4, 0xE2, 0xB2, 0xA6, 0xE2, 0xB2, 0xA8, 0xE2, + 0xB2, 0xAA, 0xE2, 0xB2, 0xAC, 0xE2, 0xB2, 0xAE, + 0xE2, 0xB2, 0xB0, 0xE2, 0xB2, 0xB2, 0xE2, 0xB2, + 0xB4, 0xE2, 0xB2, 0xB6, 0xE2, 0xB2, 0xB8, 0xE2, + 0xB2, 0xBA, 0xE2, 0xB2, 0xBC, 0xE2, 0xB2, 0xBE, + 0xE2, 0xB3, 0x80, 0xE2, 0xB3, 0x82, 0xE2, 0xB3, + 0x84, 0xE2, 0xB3, 0x86, 0xE2, 0xB3, 0x88, 0xE2, + 0xB3, 0x8A, 0xE2, 0xB3, 0x8C, 0xE2, 0xB3, 0x8E, + 0xE2, 0xB3, 0x90, 0xE2, 0xB3, 0x92, 0xE2, 0xB3, + 0x94, 0xE2, 0xB3, 0x96, 0xE2, 0xB3, 0x98, 0xE2, + 0xB3, 0x9A, 0xE2, 0xB3, 0x9C, 0xE2, 0xB3, 0x9E, + 0xE2, 0xB3, 0xA0, 0xE2, 0xB3, 0xA2, 0xE1, 0x82, + 0xA0, 0xE1, 0x82, 0xA1, 0xE1, 0x82, 0xA2, 0xE1, + 0x82, 0xA3, 0xE1, 0x82, 0xA4, 0xE1, 0x82, 0xA5, + 0xE1, 0x82, 0xA6, 0xE1, 0x82, 0xA7, 0xE1, 0x82, + 0xA8, 0xE1, 0x82, 0xA9, 0xE1, 0x82, 0xAA, 0xE1, + 0x82, 0xAB, 0xE1, 0x82, 0xAC, 0xE1, 0x82, 0xAD, + 0xE1, 0x82, 0xAE, 0xE1, 0x82, 0xAF, 0xE1, 0x82, + 0xB0, 0xE1, 0x82, 0xB1, 0xE1, 0x82, 0xB2, 0xE1, + 0x82, 0xB3, 0xE1, 0x82, 0xB4, 0xE1, 0x82, 0xB5, + 0xE1, 0x82, 0xB6, 0xE1, 0x82, 0xB7, 0xE1, 0x82, + 0xB8, 0xE1, 0x82, 0xB9, 0xE1, 0x82, 0xBA, 0xE1, + 0x82, 0xBB, 0xE1, 0x82, 0xBC, 0xE1, 0x82, 0xBD, + 0xE1, 0x82, 0xBE, 0xE1, 0x82, 0xBF, 0xE1, 0x83, + 0x80, 0xE1, 0x83, 0x81, 0xE1, 0x83, 0x82, 0xE1, + 0x83, 0x83, 0xE1, 0x83, 0x84, 0xE1, 0x83, 0x85, + 0xEF, 0xBC, 0xA1, 0xEF, 0xBC, 0xA2, 0xEF, 0xBC, + 0xA3, 0xEF, 0xBC, 0xA4, 0xEF, 0xBC, 0xA5, 0xEF, + 0xBC, 0xA6, 0xEF, 0xBC, 0xA7, 0xEF, 0xBC, 0xA8, + 0xEF, 0xBC, 0xA9, 0xEF, 0xBC, 0xAA, 0xEF, 0xBC, + 0xAB, 0xEF, 0xBC, 0xAC, 0xEF, 0xBC, 0xAD, 0xEF, + 0xBC, 0xAE, 0xEF, 0xBC, 0xAF, 0xEF, 0xBC, 0xB0, + 0xEF, 0xBC, 0xB1, 0xEF, 0xBC, 0xB2, 0xEF, 0xBC, + 0xB3, 0xEF, 0xBC, 0xB4, 0xEF, 0xBC, 0xB5, 0xEF, + 0xBC, 0xB6, 0xEF, 0xBC, 0xB7, 0xEF, 0xBC, 0xB8, + 0xEF, 0xBC, 0xB9, 0xEF, 0xBC, 0xBA, 0xF0, 0x90, + 0x90, 0x80, 0xF0, 0x90, 0x90, 0x81, 0xF0, 0x90, + 0x90, 0x82, 0xF0, 0x90, 0x90, 0x83, 0xF0, 0x90, + 0x90, 0x84, 0xF0, 0x90, 0x90, 0x85, 0xF0, 0x90, + 0x90, 0x86, 0xF0, 0x90, 0x90, 0x87, 0xF0, 0x90, + 0x90, 0x88, 0xF0, 0x90, 0x90, 0x89, 0xF0, 0x90, + 0x90, 0x8A, 0xF0, 0x90, 0x90, 0x8B, 0xF0, 0x90, + 0x90, 0x8C, 0xF0, 0x90, 0x90, 0x8D, 0xF0, 0x90, + 0x90, 0x8E, 0xF0, 0x90, 0x90, 0x8F, 0xF0, 0x90, + 0x90, 0x90, 0xF0, 0x90, 0x90, 0x91, 0xF0, 0x90, + 0x90, 0x92, 0xF0, 0x90, 0x90, 0x93, 0xF0, 0x90, + 0x90, 0x94, 0xF0, 0x90, 0x90, 0x95, 0xF0, 0x90, + 0x90, 0x96, 0xF0, 0x90, 0x90, 0x97, 0xF0, 0x90, + 0x90, 0x98, 0xF0, 0x90, 0x90, 0x99, 0xF0, 0x90, + 0x90, 0x9A, 0xF0, 0x90, 0x90, 0x9B, 0xF0, 0x90, + 0x90, 0x9C, 0xF0, 0x90, 0x90, 0x9D, 0xF0, 0x90, + 0x90, 0x9E, 0xF0, 0x90, 0x90, 0x9F, 0xF0, 0x90, + 0x90, 0xA0, 0xF0, 0x90, 0x90, 0xA1, 0xF0, 0x90, + 0x90, 0xA2, 0xF0, 0x90, 0x90, 0xA3, 0xF0, 0x90, + 0x90, 0xA4, 0xF0, 0x90, 0x90, 0xA5, 0xF0, 0x90, + 0x90, 0xA6, 0xF0, 0x90, 0x90, 0xA7, + }, +}; + +#undef N_ +#undef FIL_ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_U8_TEXTPREP_DATA_H */ --- linux-4.4.0.orig/zfs/include/sys/uberblock.h +++ linux-4.4.0/zfs/include/sys/uberblock.h @@ -0,0 +1,49 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_UBERBLOCK_H +#define _SYS_UBERBLOCK_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct uberblock uberblock_t; + +extern int uberblock_verify(uberblock_t *); +extern boolean_t uberblock_update(uberblock_t *, vdev_t *, uint64_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_UBERBLOCK_H */ --- linux-4.4.0.orig/zfs/include/sys/uberblock_impl.h +++ linux-4.4.0/zfs/include/sys/uberblock_impl.h @@ -0,0 +1,63 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_UBERBLOCK_IMPL_H +#define _SYS_UBERBLOCK_IMPL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The uberblock version is incremented whenever an incompatible on-disk + * format change is made to the SPA, DMU, or ZAP. + * + * Note: the first two fields should never be moved. When a storage pool + * is opened, the uberblock must be read off the disk before the version + * can be checked. If the ub_version field is moved, we may not detect + * version mismatch. If the ub_magic field is moved, applications that + * expect the magic number in the first word won't work. + */ +#define UBERBLOCK_MAGIC 0x00bab10c /* oo-ba-bloc! */ +#define UBERBLOCK_SHIFT 10 /* up to 1K */ + +struct uberblock { + uint64_t ub_magic; /* UBERBLOCK_MAGIC */ + uint64_t ub_version; /* SPA_VERSION */ + uint64_t ub_txg; /* txg of last sync */ + uint64_t ub_guid_sum; /* sum of all vdev guids */ + uint64_t ub_timestamp; /* UTC time of last sync */ + blkptr_t ub_rootbp; /* MOS objset_phys_t */ + + /* highest SPA_VERSION supported by software that wrote this txg */ + uint64_t ub_software_version; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_UBERBLOCK_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/uio_impl.h +++ linux-4.4.0/zfs/include/sys/uio_impl.h @@ -0,0 +1,49 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +/* + * University Copyright- Copyright (c) 1982, 1986, 1988 + * The Regents of the University of California + * All Rights Reserved + * + * University Acknowledgment- Portions of this document are derived from + * software developed by the University of California, Berkeley, and its + * contributors. + */ + +#ifndef _SYS_UIO_IMPL_H +#define _SYS_UIO_IMPL_H + +#include + +extern int uiomove(void *, size_t, enum uio_rw, uio_t *); +extern void uio_prefaultpages(ssize_t, uio_t *); +extern int uiocopy(void *, size_t, enum uio_rw, uio_t *, size_t *); +extern void uioskip(uio_t *, size_t); + +#endif /* _SYS_UIO_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/unique.h +++ linux-4.4.0/zfs/include/sys/unique.h @@ -0,0 +1,57 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_UNIQUE_H +#define _SYS_UNIQUE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* The number of significant bits in each unique value. */ +#define UNIQUE_BITS 56 + +void unique_init(void); +void unique_fini(void); + +/* + * Return a new unique value (which will not be uniquified against until + * it is unique_insert()-ed). + */ +uint64_t unique_create(void); + +/* Return a unique value, which equals the one passed in if possible. */ +uint64_t unique_insert(uint64_t value); + +/* Indicate that this value no longer needs to be uniquified against. */ +void unique_remove(uint64_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_UNIQUE_H */ --- linux-4.4.0.orig/zfs/include/sys/uuid.h +++ linux-4.4.0/zfs/include/sys/uuid.h @@ -0,0 +1,94 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_UUID_H +#define _SYS_UUID_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The copyright in this file is taken from the original Leach + * & Salz UUID specification, from which this implementation + * is derived. + */ + +/* + * Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. + * Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & + * Digital Equipment Corporation, Maynard, Mass. Copyright (c) 1998 + * Microsoft. To anyone who acknowledges that this file is provided + * "AS IS" without any express or implied warranty: permission to use, + * copy, modify, and distribute this file for any purpose is hereby + * granted without fee, provided that the above copyright notices and + * this notice appears in all source code copies, and that none of the + * names of Open Software Foundation, Inc., Hewlett-Packard Company, + * or Digital Equipment Corporation be used in advertising or + * publicity pertaining to distribution of the software without + * specific, written prior permission. Neither Open Software + * Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital + * Equipment Corporation makes any representations about the + * suitability of this software for any purpose. + */ + +#include +#include + +typedef struct { + uint8_t nodeID[6]; +} uuid_node_t; + +/* + * The uuid type used throughout when referencing uuids themselves + */ +struct uuid { + uint32_t time_low; + uint16_t time_mid; + uint16_t time_hi_and_version; + uint8_t clock_seq_hi_and_reserved; + uint8_t clock_seq_low; + uint8_t node_addr[6]; +}; + +#define UUID_PRINTABLE_STRING_LENGTH 37 + +/* + * Convert a uuid to/from little-endian format + */ +#define UUID_LE_CONVERT(dest, src) \ +{ \ + (dest) = (src); \ + (dest).time_low = LE_32((dest).time_low); \ + (dest).time_mid = LE_16((dest).time_mid); \ + (dest).time_hi_and_version = LE_16((dest).time_hi_and_version); \ +} + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_UUID_H */ --- linux-4.4.0.orig/zfs/include/sys/vdev.h +++ linux-4.4.0/zfs/include/sys/vdev.h @@ -0,0 +1,164 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_VDEV_H +#define _SYS_VDEV_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum vdev_dtl_type { + DTL_MISSING, /* 0% replication: no copies of the data */ + DTL_PARTIAL, /* less than 100% replication: some copies missing */ + DTL_SCRUB, /* unable to fully repair during scrub/resilver */ + DTL_OUTAGE, /* temporarily missing (used to attempt detach) */ + DTL_TYPES +} vdev_dtl_type_t; + +extern int zfs_nocacheflush; + +extern int vdev_open(vdev_t *); +extern void vdev_open_children(vdev_t *); +extern int vdev_validate(vdev_t *, boolean_t); +extern void vdev_close(vdev_t *); +extern int vdev_create(vdev_t *, uint64_t txg, boolean_t isreplace); +extern void vdev_reopen(vdev_t *); +extern int vdev_validate_aux(vdev_t *vd); +extern zio_t *vdev_probe(vdev_t *vd, zio_t *pio); + +extern boolean_t vdev_is_bootable(vdev_t *vd); +extern vdev_t *vdev_lookup_top(spa_t *spa, uint64_t vdev); +extern vdev_t *vdev_lookup_by_guid(vdev_t *vd, uint64_t guid); +extern int vdev_count_leaves(spa_t *spa); +extern void vdev_dtl_dirty(vdev_t *vd, vdev_dtl_type_t d, + uint64_t txg, uint64_t size); +extern boolean_t vdev_dtl_contains(vdev_t *vd, vdev_dtl_type_t d, + uint64_t txg, uint64_t size); +extern boolean_t vdev_dtl_empty(vdev_t *vd, vdev_dtl_type_t d); +extern void vdev_dtl_reassess(vdev_t *vd, uint64_t txg, uint64_t scrub_txg, + int scrub_done); +extern boolean_t vdev_dtl_required(vdev_t *vd); +extern boolean_t vdev_resilver_needed(vdev_t *vd, + uint64_t *minp, uint64_t *maxp); + +extern void vdev_hold(vdev_t *); +extern void vdev_rele(vdev_t *); + +extern int vdev_metaslab_init(vdev_t *vd, uint64_t txg); +extern void vdev_metaslab_fini(vdev_t *vd); +extern void vdev_metaslab_set_size(vdev_t *); +extern void vdev_expand(vdev_t *vd, uint64_t txg); +extern void vdev_split(vdev_t *vd); +extern void vdev_deadman(vdev_t *vd); + + +extern void vdev_get_stats(vdev_t *vd, vdev_stat_t *vs); +extern void vdev_clear_stats(vdev_t *vd); +extern void vdev_stat_update(zio_t *zio, uint64_t psize); +extern void vdev_scan_stat_init(vdev_t *vd); +extern void vdev_propagate_state(vdev_t *vd); +extern void vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, + vdev_aux_t aux); + +extern void vdev_space_update(vdev_t *vd, + int64_t alloc_delta, int64_t defer_delta, int64_t space_delta); + +extern uint64_t vdev_psize_to_asize(vdev_t *vd, uint64_t psize); + +extern int vdev_fault(spa_t *spa, uint64_t guid, vdev_aux_t aux); +extern int vdev_degrade(spa_t *spa, uint64_t guid, vdev_aux_t aux); +extern int vdev_online(spa_t *spa, uint64_t guid, uint64_t flags, + vdev_state_t *); +extern int vdev_offline(spa_t *spa, uint64_t guid, uint64_t flags); +extern void vdev_clear(spa_t *spa, vdev_t *vd); + +extern boolean_t vdev_is_dead(vdev_t *vd); +extern boolean_t vdev_readable(vdev_t *vd); +extern boolean_t vdev_writeable(vdev_t *vd); +extern boolean_t vdev_allocatable(vdev_t *vd); +extern boolean_t vdev_accessible(vdev_t *vd, zio_t *zio); + +extern void vdev_cache_init(vdev_t *vd); +extern void vdev_cache_fini(vdev_t *vd); +extern boolean_t vdev_cache_read(zio_t *zio); +extern void vdev_cache_write(zio_t *zio); +extern void vdev_cache_purge(vdev_t *vd); + +extern void vdev_queue_init(vdev_t *vd); +extern void vdev_queue_fini(vdev_t *vd); +extern zio_t *vdev_queue_io(zio_t *zio); +extern void vdev_queue_io_done(zio_t *zio); + +extern void vdev_config_dirty(vdev_t *vd); +extern void vdev_config_clean(vdev_t *vd); +extern int vdev_config_sync(vdev_t **svd, int svdcount, uint64_t txg, + boolean_t); + +extern void vdev_state_dirty(vdev_t *vd); +extern void vdev_state_clean(vdev_t *vd); + +typedef enum vdev_config_flag { + VDEV_CONFIG_SPARE = 1 << 0, + VDEV_CONFIG_L2CACHE = 1 << 1, + VDEV_CONFIG_REMOVING = 1 << 2 +} vdev_config_flag_t; + +extern void vdev_top_config_generate(spa_t *spa, nvlist_t *config); +extern nvlist_t *vdev_config_generate(spa_t *spa, vdev_t *vd, + boolean_t getstats, vdev_config_flag_t flags); + +/* + * Label routines + */ +struct uberblock; +extern uint64_t vdev_label_offset(uint64_t psize, int l, uint64_t offset); +extern int vdev_label_number(uint64_t psise, uint64_t offset); +extern nvlist_t *vdev_label_read_config(vdev_t *vd, uint64_t txg); +extern void vdev_uberblock_load(vdev_t *, struct uberblock *, nvlist_t **); + +typedef enum { + VDEV_LABEL_CREATE, /* create/add a new device */ + VDEV_LABEL_REPLACE, /* replace an existing device */ + VDEV_LABEL_SPARE, /* add a new hot spare */ + VDEV_LABEL_REMOVE, /* remove an existing device */ + VDEV_LABEL_L2CACHE, /* add an L2ARC cache device */ + VDEV_LABEL_SPLIT /* generating new label for split-off dev */ +} vdev_labeltype_t; + +extern int vdev_label_init(vdev_t *vd, uint64_t txg, vdev_labeltype_t reason); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_VDEV_H */ --- linux-4.4.0.orig/zfs/include/sys/vdev_disk.h +++ linux-4.4.0/zfs/include/sys/vdev_disk.h @@ -0,0 +1,45 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * LLNL-CODE-403049. + */ + +#ifndef _SYS_VDEV_DISK_H +#define _SYS_VDEV_DISK_H + +#ifdef _KERNEL +#include + +typedef struct vdev_disk { + ddi_devid_t vd_devid; + char *vd_minor; + struct block_device *vd_bdev; +} vdev_disk_t; + +extern int vdev_disk_physio(struct block_device *, caddr_t, + size_t, uint64_t, int); +extern int vdev_disk_read_rootlabel(char *, char *, nvlist_t **); + +#endif /* _KERNEL */ +#endif /* _SYS_VDEV_DISK_H */ --- linux-4.4.0.orig/zfs/include/sys/vdev_file.h +++ linux-4.4.0/zfs/include/sys/vdev_file.h @@ -0,0 +1,44 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_VDEV_FILE_H +#define _SYS_VDEV_FILE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct vdev_file { + vnode_t *vf_vnode; +} vdev_file_t; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_VDEV_FILE_H */ --- linux-4.4.0.orig/zfs/include/sys/vdev_impl.h +++ linux-4.4.0/zfs/include/sys/vdev_impl.h @@ -0,0 +1,351 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + */ + +#ifndef _SYS_VDEV_IMPL_H +#define _SYS_VDEV_IMPL_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Virtual device descriptors. + * + * All storage pool operations go through the virtual device framework, + * which provides data replication and I/O scheduling. + */ + +/* + * Forward declarations that lots of things need. + */ +typedef struct vdev_queue vdev_queue_t; +typedef struct vdev_cache vdev_cache_t; +typedef struct vdev_cache_entry vdev_cache_entry_t; + +/* + * Virtual device operations + */ +typedef int vdev_open_func_t(vdev_t *vd, uint64_t *size, uint64_t *max_size, + uint64_t *ashift); +typedef void vdev_close_func_t(vdev_t *vd); +typedef uint64_t vdev_asize_func_t(vdev_t *vd, uint64_t psize); +typedef void vdev_io_start_func_t(zio_t *zio); +typedef void vdev_io_done_func_t(zio_t *zio); +typedef void vdev_state_change_func_t(vdev_t *vd, int, int); +typedef void vdev_hold_func_t(vdev_t *vd); +typedef void vdev_rele_func_t(vdev_t *vd); + +typedef const struct vdev_ops { + vdev_open_func_t *vdev_op_open; + vdev_close_func_t *vdev_op_close; + vdev_asize_func_t *vdev_op_asize; + vdev_io_start_func_t *vdev_op_io_start; + vdev_io_done_func_t *vdev_op_io_done; + vdev_state_change_func_t *vdev_op_state_change; + vdev_hold_func_t *vdev_op_hold; + vdev_rele_func_t *vdev_op_rele; + char vdev_op_type[16]; + boolean_t vdev_op_leaf; +} vdev_ops_t; + +/* + * Virtual device properties + */ +struct vdev_cache_entry { + char *ve_data; + uint64_t ve_offset; + clock_t ve_lastused; + avl_node_t ve_offset_node; + avl_node_t ve_lastused_node; + uint32_t ve_hits; + uint16_t ve_missed_update; + zio_t *ve_fill_io; +}; + +struct vdev_cache { + avl_tree_t vc_offset_tree; + avl_tree_t vc_lastused_tree; + kmutex_t vc_lock; +}; + +typedef struct vdev_queue_class { + uint32_t vqc_active; + + /* + * Sorted by offset or timestamp, depending on if the queue is + * LBA-ordered vs FIFO. + */ + avl_tree_t vqc_queued_tree; +} vdev_queue_class_t; + +struct vdev_queue { + vdev_t *vq_vdev; + vdev_queue_class_t vq_class[ZIO_PRIORITY_NUM_QUEUEABLE]; + avl_tree_t vq_active_tree; + avl_tree_t vq_read_offset_tree; + avl_tree_t vq_write_offset_tree; + uint64_t vq_last_offset; + hrtime_t vq_io_complete_ts; /* time last i/o completed */ + hrtime_t vq_io_delta_ts; + zio_t vq_io_search; /* used as local for stack reduction */ + kmutex_t vq_lock; +}; + +/* + * Virtual device descriptor + */ +struct vdev { + /* + * Common to all vdev types. + */ + uint64_t vdev_id; /* child number in vdev parent */ + uint64_t vdev_guid; /* unique ID for this vdev */ + uint64_t vdev_guid_sum; /* self guid + all child guids */ + uint64_t vdev_orig_guid; /* orig. guid prior to remove */ + uint64_t vdev_asize; /* allocatable device capacity */ + uint64_t vdev_min_asize; /* min acceptable asize */ + uint64_t vdev_max_asize; /* max acceptable asize */ + uint64_t vdev_ashift; /* block alignment shift */ + uint64_t vdev_state; /* see VDEV_STATE_* #defines */ + uint64_t vdev_prevstate; /* used when reopening a vdev */ + vdev_ops_t *vdev_ops; /* vdev operations */ + spa_t *vdev_spa; /* spa for this vdev */ + void *vdev_tsd; /* type-specific data */ + vnode_t *vdev_name_vp; /* vnode for pathname */ + vnode_t *vdev_devid_vp; /* vnode for devid */ + vdev_t *vdev_top; /* top-level vdev */ + vdev_t *vdev_parent; /* parent vdev */ + vdev_t **vdev_child; /* array of children */ + uint64_t vdev_children; /* number of children */ + vdev_stat_t vdev_stat; /* virtual device statistics */ + boolean_t vdev_expanding; /* expand the vdev? */ + boolean_t vdev_reopening; /* reopen in progress? */ + boolean_t vdev_nonrot; /* true if solid state */ + int vdev_open_error; /* error on last open */ + kthread_t *vdev_open_thread; /* thread opening children */ + uint64_t vdev_crtxg; /* txg when top-level was added */ + + /* + * Top-level vdev state. + */ + uint64_t vdev_ms_array; /* metaslab array object */ + uint64_t vdev_ms_shift; /* metaslab size shift */ + uint64_t vdev_ms_count; /* number of metaslabs */ + metaslab_group_t *vdev_mg; /* metaslab group */ + metaslab_t **vdev_ms; /* metaslab array */ + uint64_t vdev_pending_fastwrite; /* allocated fastwrites */ + txg_list_t vdev_ms_list; /* per-txg dirty metaslab lists */ + txg_list_t vdev_dtl_list; /* per-txg dirty DTL lists */ + txg_node_t vdev_txg_node; /* per-txg dirty vdev linkage */ + boolean_t vdev_remove_wanted; /* async remove wanted? */ + boolean_t vdev_probe_wanted; /* async probe wanted? */ + list_node_t vdev_config_dirty_node; /* config dirty list */ + list_node_t vdev_state_dirty_node; /* state dirty list */ + uint64_t vdev_deflate_ratio; /* deflation ratio (x512) */ + uint64_t vdev_islog; /* is an intent log device */ + uint64_t vdev_removing; /* device is being removed? */ + boolean_t vdev_ishole; /* is a hole in the namespace */ + + /* + * Leaf vdev state. + */ + range_tree_t *vdev_dtl[DTL_TYPES]; /* dirty time logs */ + space_map_t *vdev_dtl_sm; /* dirty time log space map */ + txg_node_t vdev_dtl_node; /* per-txg dirty DTL linkage */ + uint64_t vdev_dtl_object; /* DTL object */ + uint64_t vdev_psize; /* physical device capacity */ + uint64_t vdev_wholedisk; /* true if this is a whole disk */ + uint64_t vdev_offline; /* persistent offline state */ + uint64_t vdev_faulted; /* persistent faulted state */ + uint64_t vdev_degraded; /* persistent degraded state */ + uint64_t vdev_removed; /* persistent removed state */ + uint64_t vdev_resilver_txg; /* persistent resilvering state */ + uint64_t vdev_nparity; /* number of parity devices for raidz */ + char *vdev_path; /* vdev path (if any) */ + char *vdev_devid; /* vdev devid (if any) */ + char *vdev_physpath; /* vdev device path (if any) */ + char *vdev_fru; /* physical FRU location */ + uint64_t vdev_not_present; /* not present during import */ + uint64_t vdev_unspare; /* unspare when resilvering done */ + boolean_t vdev_nowritecache; /* true if flushwritecache failed */ + boolean_t vdev_checkremove; /* temporary online test */ + boolean_t vdev_forcefault; /* force online fault */ + boolean_t vdev_splitting; /* split or repair in progress */ + boolean_t vdev_delayed_close; /* delayed device close? */ + boolean_t vdev_tmpoffline; /* device taken offline temporarily? */ + boolean_t vdev_detached; /* device detached? */ + boolean_t vdev_cant_read; /* vdev is failing all reads */ + boolean_t vdev_cant_write; /* vdev is failing all writes */ + boolean_t vdev_isspare; /* was a hot spare */ + boolean_t vdev_isl2cache; /* was a l2cache device */ + vdev_queue_t vdev_queue; /* I/O deadline schedule queue */ + vdev_cache_t vdev_cache; /* physical block cache */ + spa_aux_vdev_t *vdev_aux; /* for l2cache and spares vdevs */ + zio_t *vdev_probe_zio; /* root of current probe */ + vdev_aux_t vdev_label_aux; /* on-disk aux state */ + + /* + * For DTrace to work in userland (libzpool) context, these fields must + * remain at the end of the structure. DTrace will use the kernel's + * CTF definition for 'struct vdev', and since the size of a kmutex_t is + * larger in userland, the offsets for the rest of the fields would be + * incorrect. + */ + kmutex_t vdev_dtl_lock; /* vdev_dtl_{map,resilver} */ + kmutex_t vdev_stat_lock; /* vdev_stat */ + kmutex_t vdev_probe_lock; /* protects vdev_probe_zio */ +}; + +#define VDEV_RAIDZ_MAXPARITY 3 + +#define VDEV_PAD_SIZE (8 << 10) +/* 2 padding areas (vl_pad1 and vl_pad2) to skip */ +#define VDEV_SKIP_SIZE VDEV_PAD_SIZE * 2 +#define VDEV_PHYS_SIZE (112 << 10) +#define VDEV_UBERBLOCK_RING (128 << 10) + +/* The largest uberblock we support is 8k. */ +#define MAX_UBERBLOCK_SHIFT (13) +#define VDEV_UBERBLOCK_SHIFT(vd) \ + MIN(MAX((vd)->vdev_top->vdev_ashift, UBERBLOCK_SHIFT), \ + MAX_UBERBLOCK_SHIFT) +#define VDEV_UBERBLOCK_COUNT(vd) \ + (VDEV_UBERBLOCK_RING >> VDEV_UBERBLOCK_SHIFT(vd)) +#define VDEV_UBERBLOCK_OFFSET(vd, n) \ + offsetof(vdev_label_t, vl_uberblock[(n) << VDEV_UBERBLOCK_SHIFT(vd)]) +#define VDEV_UBERBLOCK_SIZE(vd) (1ULL << VDEV_UBERBLOCK_SHIFT(vd)) + +typedef struct vdev_phys { + char vp_nvlist[VDEV_PHYS_SIZE - sizeof (zio_eck_t)]; + zio_eck_t vp_zbt; +} vdev_phys_t; + +typedef struct vdev_label { + char vl_pad1[VDEV_PAD_SIZE]; /* 8K */ + char vl_pad2[VDEV_PAD_SIZE]; /* 8K */ + vdev_phys_t vl_vdev_phys; /* 112K */ + char vl_uberblock[VDEV_UBERBLOCK_RING]; /* 128K */ +} vdev_label_t; /* 256K total */ + +/* + * vdev_dirty() flags + */ +#define VDD_METASLAB 0x01 +#define VDD_DTL 0x02 + +/* Offset of embedded boot loader region on each label */ +#define VDEV_BOOT_OFFSET (2 * sizeof (vdev_label_t)) +/* + * Size of embedded boot loader region on each label. + * The total size of the first two labels plus the boot area is 4MB. + */ +#define VDEV_BOOT_SIZE (7ULL << 19) /* 3.5M */ + +/* + * Size of label regions at the start and end of each leaf device. + */ +#define VDEV_LABEL_START_SIZE (2 * sizeof (vdev_label_t) + VDEV_BOOT_SIZE) +#define VDEV_LABEL_END_SIZE (2 * sizeof (vdev_label_t)) +#define VDEV_LABELS 4 +#define VDEV_BEST_LABEL VDEV_LABELS + +#define VDEV_ALLOC_LOAD 0 +#define VDEV_ALLOC_ADD 1 +#define VDEV_ALLOC_SPARE 2 +#define VDEV_ALLOC_L2CACHE 3 +#define VDEV_ALLOC_ROOTPOOL 4 +#define VDEV_ALLOC_SPLIT 5 +#define VDEV_ALLOC_ATTACH 6 + +/* + * Allocate or free a vdev + */ +extern vdev_t *vdev_alloc_common(spa_t *spa, uint_t id, uint64_t guid, + vdev_ops_t *ops); +extern int vdev_alloc(spa_t *spa, vdev_t **vdp, nvlist_t *config, + vdev_t *parent, uint_t id, int alloctype); +extern void vdev_free(vdev_t *vd); + +/* + * Add or remove children and parents + */ +extern void vdev_add_child(vdev_t *pvd, vdev_t *cvd); +extern void vdev_remove_child(vdev_t *pvd, vdev_t *cvd); +extern void vdev_compact_children(vdev_t *pvd); +extern vdev_t *vdev_add_parent(vdev_t *cvd, vdev_ops_t *ops); +extern void vdev_remove_parent(vdev_t *cvd); + +/* + * vdev sync load and sync + */ +extern void vdev_load_log_state(vdev_t *nvd, vdev_t *ovd); +extern boolean_t vdev_log_state_valid(vdev_t *vd); +extern void vdev_load(vdev_t *vd); +extern int vdev_dtl_load(vdev_t *vd); +extern void vdev_sync(vdev_t *vd, uint64_t txg); +extern void vdev_sync_done(vdev_t *vd, uint64_t txg); +extern void vdev_dirty(vdev_t *vd, int flags, void *arg, uint64_t txg); +extern void vdev_dirty_leaves(vdev_t *vd, int flags, uint64_t txg); + +/* + * Available vdev types. + */ +extern vdev_ops_t vdev_root_ops; +extern vdev_ops_t vdev_mirror_ops; +extern vdev_ops_t vdev_replacing_ops; +extern vdev_ops_t vdev_raidz_ops; +extern vdev_ops_t vdev_disk_ops; +extern vdev_ops_t vdev_file_ops; +extern vdev_ops_t vdev_missing_ops; +extern vdev_ops_t vdev_hole_ops; +extern vdev_ops_t vdev_spare_ops; + +/* + * Common size functions + */ +extern uint64_t vdev_default_asize(vdev_t *vd, uint64_t psize); +extern uint64_t vdev_get_min_asize(vdev_t *vd); +extern void vdev_set_min_asize(vdev_t *vd); + +/* + * Global variables + */ +/* zdb uses this tunable, so it must be declared here to make lint happy. */ +extern int zfs_vdev_cache_size; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_VDEV_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/xvattr.h +++ linux-4.4.0/zfs/include/sys/xvattr.h @@ -0,0 +1,330 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +/* + * University Copyright- Copyright (c) 1982, 1986, 1988 + * The Regents of the University of California + * All Rights Reserved + * + * University Acknowledgment- Portions of this document are derived from + * software developed by the University of California, Berkeley, and its + * contributors. + */ + +#ifndef _SYS_XVATTR_H +#define _SYS_XVATTR_H + +#include + +#define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */ + +/* + * Structure of all optional attributes. + */ +typedef struct xoptattr { + timestruc_t xoa_createtime; /* Create time of file */ + uint8_t xoa_archive; + uint8_t xoa_system; + uint8_t xoa_readonly; + uint8_t xoa_hidden; + uint8_t xoa_nounlink; + uint8_t xoa_immutable; + uint8_t xoa_appendonly; + uint8_t xoa_nodump; + uint8_t xoa_opaque; + uint8_t xoa_av_quarantined; + uint8_t xoa_av_modified; + uint8_t xoa_av_scanstamp[AV_SCANSTAMP_SZ]; + uint8_t xoa_reparse; + uint64_t xoa_generation; + uint8_t xoa_offline; + uint8_t xoa_sparse; +} xoptattr_t; + +/* + * The xvattr structure is really a variable length structure that + * is made up of: + * - The classic vattr_t (xva_vattr) + * - a 32 bit quantity (xva_mapsize) that specifies the size of the + * attribute bitmaps in 32 bit words. + * - A pointer to the returned attribute bitmap (needed because the + * previous element, the requested attribute bitmap) is variable lenth. + * - The requested attribute bitmap, which is an array of 32 bit words. + * Callers use the XVA_SET_REQ() macro to set the bits corresponding to + * the attributes that are being requested. + * - The returned attribute bitmap, which is an array of 32 bit words. + * File systems that support optional attributes use the XVA_SET_RTN() + * macro to set the bits corresponding to the attributes that are being + * returned. + * - The xoptattr_t structure which contains the attribute values + * + * xva_mapsize determines how many words in the attribute bitmaps. + * Immediately following the attribute bitmaps is the xoptattr_t. + * xva_getxoptattr() is used to get the pointer to the xoptattr_t + * section. + */ + +#define XVA_MAPSIZE 3 /* Size of attr bitmaps */ +#define XVA_MAGIC 0x78766174 /* Magic # for verification */ + +/* + * The xvattr structure is an extensible structure which permits optional + * attributes to be requested/returned. File systems may or may not support + * optional attributes. They do so at their own discretion but if they do + * support optional attributes, they must register the VFSFT_XVATTR feature + * so that the optional attributes can be set/retrived. + * + * The fields of the xvattr structure are: + * + * xva_vattr - The first element of an xvattr is a legacy vattr structure + * which includes the common attributes. If AT_XVATTR is set in the va_mask + * then the entire structure is treated as an xvattr. If AT_XVATTR is not + * set, then only the xva_vattr structure can be used. + * + * xva_magic - 0x78766174 (hex for "xvat"). Magic number for verification. + * + * xva_mapsize - Size of requested and returned attribute bitmaps. + * + * xva_rtnattrmapp - Pointer to xva_rtnattrmap[]. We need this since the + * size of the array before it, xva_reqattrmap[], could change which means + * the location of xva_rtnattrmap[] could change. This will allow unbundled + * file systems to find the location of xva_rtnattrmap[] when the sizes change. + * + * xva_reqattrmap[] - Array of requested attributes. Attributes are + * represented by a specific bit in a specific element of the attribute + * map array. Callers set the bits corresponding to the attributes + * that the caller wants to get/set. + * + * xva_rtnattrmap[] - Array of attributes that the file system was able to + * process. Not all file systems support all optional attributes. This map + * informs the caller which attributes the underlying file system was able + * to set/get. (Same structure as the requested attributes array in terms + * of each attribute corresponding to specific bits and array elements.) + * + * xva_xoptattrs - Structure containing values of optional attributes. + * These values are only valid if the corresponding bits in xva_reqattrmap + * are set and the underlying file system supports those attributes. + */ +typedef struct xvattr { + vattr_t xva_vattr; /* Embedded vattr structure */ + uint32_t xva_magic; /* Magic Number */ + uint32_t xva_mapsize; /* Size of attr bitmap (32-bit words) */ + uint32_t *xva_rtnattrmapp; /* Ptr to xva_rtnattrmap[] */ + uint32_t xva_reqattrmap[XVA_MAPSIZE]; /* Requested attrs */ + uint32_t xva_rtnattrmap[XVA_MAPSIZE]; /* Returned attrs */ + xoptattr_t xva_xoptattrs; /* Optional attributes */ +} xvattr_t; + +/* + * Attribute bits used in the extensible attribute's (xva's) attribute + * bitmaps. Note that the bitmaps are made up of a variable length number + * of 32-bit words. The convention is to use XAT{n}_{attrname} where "n" + * is the element in the bitmap (starting at 1). This convention is for + * the convenience of the maintainer to keep track of which element each + * attribute belongs to. + * + * NOTE THAT CONSUMERS MUST *NOT* USE THE XATn_* DEFINES DIRECTLY. CONSUMERS + * MUST USE THE XAT_* DEFINES. + */ +#define XAT0_INDEX 0LL /* Index into bitmap for XAT0 attrs */ +#define XAT0_CREATETIME 0x00000001 /* Create time of file */ +#define XAT0_ARCHIVE 0x00000002 /* Archive */ +#define XAT0_SYSTEM 0x00000004 /* System */ +#define XAT0_READONLY 0x00000008 /* Readonly */ +#define XAT0_HIDDEN 0x00000010 /* Hidden */ +#define XAT0_NOUNLINK 0x00000020 /* Nounlink */ +#define XAT0_IMMUTABLE 0x00000040 /* immutable */ +#define XAT0_APPENDONLY 0x00000080 /* appendonly */ +#define XAT0_NODUMP 0x00000100 /* nodump */ +#define XAT0_OPAQUE 0x00000200 /* opaque */ +#define XAT0_AV_QUARANTINED 0x00000400 /* anti-virus quarantine */ +#define XAT0_AV_MODIFIED 0x00000800 /* anti-virus modified */ +#define XAT0_AV_SCANSTAMP 0x00001000 /* anti-virus scanstamp */ +#define XAT0_REPARSE 0x00002000 /* FS reparse point */ +#define XAT0_GEN 0x00004000 /* object generation number */ +#define XAT0_OFFLINE 0x00008000 /* offline */ +#define XAT0_SPARSE 0x00010000 /* sparse */ + +#define XAT0_ALL_ATTRS (XAT0_CREATETIME|XAT0_ARCHIVE|XAT0_SYSTEM| \ + XAT0_READONLY|XAT0_HIDDEN|XAT0_NOUNLINK|XAT0_IMMUTABLE|XAT0_APPENDONLY| \ + XAT0_NODUMP|XAT0_OPAQUE|XAT0_AV_QUARANTINED| XAT0_AV_MODIFIED| \ + XAT0_AV_SCANSTAMP|XAT0_REPARSE|XATO_GEN|XAT0_OFFLINE|XAT0_SPARSE) + +/* Support for XAT_* optional attributes */ +#define XVA_MASK 0xffffffff /* Used to mask off 32 bits */ +#define XVA_SHFT 32 /* Used to shift index */ + +/* + * Used to pry out the index and attribute bits from the XAT_* attributes + * defined below. Note that we're masking things down to 32 bits then + * casting to uint32_t. + */ +#define XVA_INDEX(attr) ((uint32_t)(((attr) >> XVA_SHFT) & XVA_MASK)) +#define XVA_ATTRBIT(attr) ((uint32_t)((attr) & XVA_MASK)) + +/* + * The following defines present a "flat namespace" so that consumers don't + * need to keep track of which element belongs to which bitmap entry. + * + * NOTE THAT THESE MUST NEVER BE OR-ed TOGETHER + */ +#define XAT_CREATETIME ((XAT0_INDEX << XVA_SHFT) | XAT0_CREATETIME) +#define XAT_ARCHIVE ((XAT0_INDEX << XVA_SHFT) | XAT0_ARCHIVE) +#define XAT_SYSTEM ((XAT0_INDEX << XVA_SHFT) | XAT0_SYSTEM) +#define XAT_READONLY ((XAT0_INDEX << XVA_SHFT) | XAT0_READONLY) +#define XAT_HIDDEN ((XAT0_INDEX << XVA_SHFT) | XAT0_HIDDEN) +#define XAT_NOUNLINK ((XAT0_INDEX << XVA_SHFT) | XAT0_NOUNLINK) +#define XAT_IMMUTABLE ((XAT0_INDEX << XVA_SHFT) | XAT0_IMMUTABLE) +#define XAT_APPENDONLY ((XAT0_INDEX << XVA_SHFT) | XAT0_APPENDONLY) +#define XAT_NODUMP ((XAT0_INDEX << XVA_SHFT) | XAT0_NODUMP) +#define XAT_OPAQUE ((XAT0_INDEX << XVA_SHFT) | XAT0_OPAQUE) +#define XAT_AV_QUARANTINED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_QUARANTINED) +#define XAT_AV_MODIFIED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_MODIFIED) +#define XAT_AV_SCANSTAMP ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_SCANSTAMP) +#define XAT_REPARSE ((XAT0_INDEX << XVA_SHFT) | XAT0_REPARSE) +#define XAT_GEN ((XAT0_INDEX << XVA_SHFT) | XAT0_GEN) +#define XAT_OFFLINE ((XAT0_INDEX << XVA_SHFT) | XAT0_OFFLINE) +#define XAT_SPARSE ((XAT0_INDEX << XVA_SHFT) | XAT0_SPARSE) + +/* + * The returned attribute map array (xva_rtnattrmap[]) is located past the + * requested attribute map array (xva_reqattrmap[]). Its location changes + * when the array sizes change. We use a separate pointer in a known location + * (xva_rtnattrmapp) to hold the location of xva_rtnattrmap[]. This is + * set in xva_init() + */ +#define XVA_RTNATTRMAP(xvap) ((xvap)->xva_rtnattrmapp) + +/* + * XVA_SET_REQ() sets an attribute bit in the proper element in the bitmap + * of requested attributes (xva_reqattrmap[]). + */ +#define XVA_SET_REQ(xvap, attr) \ + ASSERT((xvap)->xva_vattr.va_mask | AT_XVATTR); \ + ASSERT((xvap)->xva_magic == XVA_MAGIC); \ + (xvap)->xva_reqattrmap[XVA_INDEX(attr)] |= XVA_ATTRBIT(attr) +/* + * XVA_CLR_REQ() clears an attribute bit in the proper element in the bitmap + * of requested attributes (xva_reqattrmap[]). + */ +#define XVA_CLR_REQ(xvap, attr) \ + ASSERT((xvap)->xva_vattr.va_mask | AT_XVATTR); \ + ASSERT((xvap)->xva_magic == XVA_MAGIC); \ + (xvap)->xva_reqattrmap[XVA_INDEX(attr)] &= ~XVA_ATTRBIT(attr) + +/* + * XVA_SET_RTN() sets an attribute bit in the proper element in the bitmap + * of returned attributes (xva_rtnattrmap[]). + */ +#define XVA_SET_RTN(xvap, attr) \ + ASSERT((xvap)->xva_vattr.va_mask | AT_XVATTR); \ + ASSERT((xvap)->xva_magic == XVA_MAGIC); \ + (XVA_RTNATTRMAP(xvap))[XVA_INDEX(attr)] |= XVA_ATTRBIT(attr) + +/* + * XVA_ISSET_REQ() checks the requested attribute bitmap (xva_reqattrmap[]) + * to see of the corresponding attribute bit is set. If so, returns non-zero. + */ +#define XVA_ISSET_REQ(xvap, attr) \ + ((((xvap)->xva_vattr.va_mask | AT_XVATTR) && \ + ((xvap)->xva_magic == XVA_MAGIC) && \ + ((xvap)->xva_mapsize > XVA_INDEX(attr))) ? \ + ((xvap)->xva_reqattrmap[XVA_INDEX(attr)] & XVA_ATTRBIT(attr)) : 0) + +/* + * XVA_ISSET_RTN() checks the returned attribute bitmap (xva_rtnattrmap[]) + * to see of the corresponding attribute bit is set. If so, returns non-zero. + */ +#define XVA_ISSET_RTN(xvap, attr) \ + ((((xvap)->xva_vattr.va_mask | AT_XVATTR) && \ + ((xvap)->xva_magic == XVA_MAGIC) && \ + ((xvap)->xva_mapsize > XVA_INDEX(attr))) ? \ + ((XVA_RTNATTRMAP(xvap))[XVA_INDEX(attr)] & XVA_ATTRBIT(attr)) : 0) + +/* + * Zero out the structure, set the size of the requested/returned bitmaps, + * set AT_XVATTR in the embedded vattr_t's va_mask, and set up the pointer + * to the returned attributes array. + */ +static inline void +xva_init(xvattr_t *xvap) +{ + bzero(xvap, sizeof (xvattr_t)); + xvap->xva_mapsize = XVA_MAPSIZE; + xvap->xva_magic = XVA_MAGIC; + xvap->xva_vattr.va_mask = ATTR_XVATTR; + xvap->xva_rtnattrmapp = &(xvap->xva_rtnattrmap)[0]; +} + +/* + * If AT_XVATTR is set, returns a pointer to the embedded xoptattr_t + * structure. Otherwise, returns NULL. + */ +static inline xoptattr_t * +xva_getxoptattr(xvattr_t *xvap) +{ + xoptattr_t *xoap = NULL; + if (xvap->xva_vattr.va_mask & AT_XVATTR) + xoap = &xvap->xva_xoptattrs; + return (xoap); +} + +#define MODEMASK 07777 /* mode bits plus permission bits */ +#define PERMMASK 00777 /* permission bits */ + +/* + * VOP_ACCESS flags + */ +#define V_ACE_MASK 0x1 /* mask represents NFSv4 ACE permissions */ +#define V_APPEND 0x2 /* want to do append only check */ + +/* + * Structure used on VOP_GETSECATTR and VOP_SETSECATTR operations + */ + +typedef struct vsecattr { + uint_t vsa_mask; /* See below */ + int vsa_aclcnt; /* ACL entry count */ + void *vsa_aclentp; /* pointer to ACL entries */ + int vsa_dfaclcnt; /* default ACL entry count */ + void *vsa_dfaclentp; /* pointer to default ACL entries */ + size_t vsa_aclentsz; /* ACE size in bytes of vsa_aclentp */ + uint_t vsa_aclflags; /* ACE ACL flags */ +} vsecattr_t; + +/* vsa_mask values */ +#define VSA_ACL 0x0001 +#define VSA_ACLCNT 0x0002 +#define VSA_DFACL 0x0004 +#define VSA_DFACLCNT 0x0008 +#define VSA_ACE 0x0010 +#define VSA_ACECNT 0x0020 +#define VSA_ACE_ALLTYPES 0x0040 +#define VSA_ACE_ACLFLAGS 0x0080 /* get/set ACE ACL flags */ + +#endif /* _SYS_XVATTR_H */ --- linux-4.4.0.orig/zfs/include/sys/zap.h +++ linux-4.4.0/zfs/include/sys/zap.h @@ -0,0 +1,490 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_ZAP_H +#define _SYS_ZAP_H + +/* + * ZAP - ZFS Attribute Processor + * + * The ZAP is a module which sits on top of the DMU (Data Management + * Unit) and implements a higher-level storage primitive using DMU + * objects. Its primary consumer is the ZPL (ZFS Posix Layer). + * + * A "zapobj" is a DMU object which the ZAP uses to stores attributes. + * Users should use only zap routines to access a zapobj - they should + * not access the DMU object directly using DMU routines. + * + * The attributes stored in a zapobj are name-value pairs. The name is + * a zero-terminated string of up to ZAP_MAXNAMELEN bytes (including + * terminating NULL). The value is an array of integers, which may be + * 1, 2, 4, or 8 bytes long. The total space used by the array (number + * of integers * integer length) can be up to ZAP_MAXVALUELEN bytes. + * Note that an 8-byte integer value can be used to store the location + * (object number) of another dmu object (which may be itself a zapobj). + * Note that you can use a zero-length attribute to store a single bit + * of information - the attribute is present or not. + * + * The ZAP routines are thread-safe. However, you must observe the + * DMU's restriction that a transaction may not be operated on + * concurrently. + * + * Any of the routines that return an int may return an I/O error (EIO + * or ECHECKSUM). + * + * + * Implementation / Performance Notes: + * + * The ZAP is intended to operate most efficiently on attributes with + * short (49 bytes or less) names and single 8-byte values, for which + * the microzap will be used. The ZAP should be efficient enough so + * that the user does not need to cache these attributes. + * + * The ZAP's locking scheme makes its routines thread-safe. Operations + * on different zapobjs will be processed concurrently. Operations on + * the same zapobj which only read data will be processed concurrently. + * Operations on the same zapobj which modify data will be processed + * concurrently when there are many attributes in the zapobj (because + * the ZAP uses per-block locking - more than 128 * (number of cpus) + * small attributes will suffice). + */ + +/* + * We're using zero-terminated byte strings (ie. ASCII or UTF-8 C + * strings) for the names of attributes, rather than a byte string + * bounded by an explicit length. If some day we want to support names + * in character sets which have embedded zeros (eg. UTF-16, UTF-32), + * we'll have to add routines for using length-bounded strings. + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Specifies matching criteria for ZAP lookups. + */ +typedef enum matchtype +{ + /* Only find an exact match (non-normalized) */ + MT_EXACT, + /* + * If there is an exact match, find that, otherwise find the + * first normalized match. + */ + MT_BEST, + /* + * Find the "first" normalized (case and Unicode form) match; + * the designated "first" match will not change as long as the + * set of entries with this normalization doesn't change. + */ + MT_FIRST +} matchtype_t; + +typedef enum zap_flags { + /* Use 64-bit hash value (serialized cursors will always use 64-bits) */ + ZAP_FLAG_HASH64 = 1 << 0, + /* Key is binary, not string (zap_add_uint64() can be used) */ + ZAP_FLAG_UINT64_KEY = 1 << 1, + /* + * First word of key (which must be an array of uint64) is + * already randomly distributed. + */ + ZAP_FLAG_PRE_HASHED_KEY = 1 << 2, +} zap_flags_t; + +/* + * Create a new zapobj with no attributes and return its object number. + * MT_EXACT will cause the zap object to only support MT_EXACT lookups, + * otherwise any matchtype can be used for lookups. + * + * normflags specifies what normalization will be done. values are: + * 0: no normalization (legacy on-disk format, supports MT_EXACT matching + * only) + * U8_TEXTPREP_TOLOWER: case normalization will be performed. + * MT_FIRST/MT_BEST matching will find entries that match without + * regard to case (eg. looking for "foo" can find an entry "Foo"). + * Eventually, other flags will permit unicode normalization as well. + */ +uint64_t zap_create(objset_t *ds, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +uint64_t zap_create_norm(objset_t *ds, int normflags, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +uint64_t zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, + dmu_object_type_t ot, int leaf_blockshift, int indirect_blockshift, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +uint64_t zap_create_link(objset_t *os, dmu_object_type_t ot, + uint64_t parent_obj, const char *name, dmu_tx_t *tx); + +/* + * Initialize an already-allocated object. + */ +void mzap_create_impl(objset_t *os, uint64_t obj, int normflags, + zap_flags_t flags, dmu_tx_t *tx); + +/* + * Create a new zapobj with no attributes from the given (unallocated) + * object number. + */ +int zap_create_claim(objset_t *ds, uint64_t obj, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); +int zap_create_claim_norm(objset_t *ds, uint64_t obj, + int normflags, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); + +/* + * The zapobj passed in must be a valid ZAP object for all of the + * following routines. + */ + +/* + * Destroy this zapobj and all its attributes. + * + * Frees the object number using dmu_object_free. + */ +int zap_destroy(objset_t *ds, uint64_t zapobj, dmu_tx_t *tx); + +/* + * Manipulate attributes. + * + * 'integer_size' is in bytes, and must be 1, 2, 4, or 8. + */ + +/* + * Retrieve the contents of the attribute with the given name. + * + * If the requested attribute does not exist, the call will fail and + * return ENOENT. + * + * If 'integer_size' is smaller than the attribute's integer size, the + * call will fail and return EINVAL. + * + * If 'integer_size' is equal to or larger than the attribute's integer + * size, the call will succeed and return 0. + * + * When converting to a larger integer size, the integers will be treated as + * unsigned (ie. no sign-extension will be performed). + * + * 'num_integers' is the length (in integers) of 'buf'. + * + * If the attribute is longer than the buffer, as many integers as will + * fit will be transferred to 'buf'. If the entire attribute was not + * transferred, the call will return EOVERFLOW. + */ +int zap_lookup(objset_t *ds, uint64_t zapobj, const char *name, + uint64_t integer_size, uint64_t num_integers, void *buf); + +/* + * If rn_len is nonzero, realname will be set to the name of the found + * entry (which may be different from the requested name if matchtype is + * not MT_EXACT). + * + * If normalization_conflictp is not NULL, it will be set if there is + * another name with the same case/unicode normalized form. + */ +int zap_lookup_norm(objset_t *ds, uint64_t zapobj, const char *name, + uint64_t integer_size, uint64_t num_integers, void *buf, + matchtype_t mt, char *realname, int rn_len, + boolean_t *normalization_conflictp); +int zap_lookup_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, uint64_t integer_size, uint64_t num_integers, void *buf); +int zap_contains(objset_t *ds, uint64_t zapobj, const char *name); +int zap_prefetch(objset_t *os, uint64_t zapobj, const char *name); +int zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints); + +int zap_count_write(objset_t *os, uint64_t zapobj, const char *name, + int add, uint64_t *towrite, uint64_t *tooverwrite); + +/* + * Create an attribute with the given name and value. + * + * If an attribute with the given name already exists, the call will + * fail and return EEXIST. + */ +int zap_add(objset_t *ds, uint64_t zapobj, const char *key, + int integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx); +int zap_add_uint64(objset_t *ds, uint64_t zapobj, const uint64_t *key, + int key_numints, int integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx); + +/* + * Set the attribute with the given name to the given value. If an + * attribute with the given name does not exist, it will be created. If + * an attribute with the given name already exists, the previous value + * will be overwritten. The integer_size may be different from the + * existing attribute's integer size, in which case the attribute's + * integer size will be updated to the new value. + */ +int zap_update(objset_t *ds, uint64_t zapobj, const char *name, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); +int zap_update_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); + +/* + * Get the length (in integers) and the integer size of the specified + * attribute. + * + * If the requested attribute does not exist, the call will fail and + * return ENOENT. + */ +int zap_length(objset_t *ds, uint64_t zapobj, const char *name, + uint64_t *integer_size, uint64_t *num_integers); +int zap_length_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, uint64_t *integer_size, uint64_t *num_integers); + +/* + * Remove the specified attribute. + * + * If the specified attribute does not exist, the call will fail and + * return ENOENT. + */ +int zap_remove(objset_t *ds, uint64_t zapobj, const char *name, dmu_tx_t *tx); +int zap_remove_norm(objset_t *ds, uint64_t zapobj, const char *name, + matchtype_t mt, dmu_tx_t *tx); +int zap_remove_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, dmu_tx_t *tx); + +/* + * Returns (in *count) the number of attributes in the specified zap + * object. + */ +int zap_count(objset_t *ds, uint64_t zapobj, uint64_t *count); + +/* + * Returns (in name) the name of the entry whose (value & mask) + * (za_first_integer) is value, or ENOENT if not found. The string + * pointed to by name must be at least 256 bytes long. If mask==0, the + * match must be exact (ie, same as mask=-1ULL). + */ +int zap_value_search(objset_t *os, uint64_t zapobj, + uint64_t value, uint64_t mask, char *name); + +/* + * Transfer all the entries from fromobj into intoobj. Only works on + * int_size=8 num_integers=1 values. Fails if there are any duplicated + * entries. + */ +int zap_join(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx); + +/* Same as zap_join, but set the values to 'value'. */ +int zap_join_key(objset_t *os, uint64_t fromobj, uint64_t intoobj, + uint64_t value, dmu_tx_t *tx); + +/* Same as zap_join, but add together any duplicated entries. */ +int zap_join_increment(objset_t *os, uint64_t fromobj, uint64_t intoobj, + dmu_tx_t *tx); + +/* + * Manipulate entries where the name + value are the "same" (the name is + * a stringified version of the value). + */ +int zap_add_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx); +int zap_remove_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx); +int zap_lookup_int(objset_t *os, uint64_t obj, uint64_t value); +int zap_increment_int(objset_t *os, uint64_t obj, uint64_t key, int64_t delta, + dmu_tx_t *tx); + +/* Here the key is an int and the value is a different int. */ +int zap_add_int_key(objset_t *os, uint64_t obj, + uint64_t key, uint64_t value, dmu_tx_t *tx); +int zap_update_int_key(objset_t *os, uint64_t obj, + uint64_t key, uint64_t value, dmu_tx_t *tx); +int zap_lookup_int_key(objset_t *os, uint64_t obj, + uint64_t key, uint64_t *valuep); + +int zap_increment(objset_t *os, uint64_t obj, const char *name, int64_t delta, + dmu_tx_t *tx); + +struct zap; +struct zap_leaf; +typedef struct zap_cursor { + /* This structure is opaque! */ + objset_t *zc_objset; + struct zap *zc_zap; + struct zap_leaf *zc_leaf; + uint64_t zc_zapobj; + uint64_t zc_serialized; + uint64_t zc_hash; + uint32_t zc_cd; +} zap_cursor_t; + +typedef struct { + int za_integer_length; + /* + * za_normalization_conflict will be set if there are additional + * entries with this normalized form (eg, "foo" and "Foo"). + */ + boolean_t za_normalization_conflict; + uint64_t za_num_integers; + uint64_t za_first_integer; /* no sign extension for <8byte ints */ + char za_name[MAXNAMELEN]; +} zap_attribute_t; + +/* + * The interface for listing all the attributes of a zapobj can be + * thought of as cursor moving down a list of the attributes one by + * one. The cookie returned by the zap_cursor_serialize routine is + * persistent across system calls (and across reboot, even). + */ + +/* + * Initialize a zap cursor, pointing to the "first" attribute of the + * zapobj. You must _fini the cursor when you are done with it. + */ +void zap_cursor_init(zap_cursor_t *zc, objset_t *ds, uint64_t zapobj); +void zap_cursor_fini(zap_cursor_t *zc); + +/* + * Get the attribute currently pointed to by the cursor. Returns + * ENOENT if at the end of the attributes. + */ +int zap_cursor_retrieve(zap_cursor_t *zc, zap_attribute_t *za); + +/* + * Advance the cursor to the next attribute. + */ +void zap_cursor_advance(zap_cursor_t *zc); + +/* + * Get a persistent cookie pointing to the current position of the zap + * cursor. The low 4 bits in the cookie are always zero, and thus can + * be used as to differentiate a serialized cookie from a different type + * of value. The cookie will be less than 2^32 as long as there are + * fewer than 2^22 (4.2 million) entries in the zap object. + */ +uint64_t zap_cursor_serialize(zap_cursor_t *zc); + +/* + * Initialize a zap cursor pointing to the position recorded by + * zap_cursor_serialize (in the "serialized" argument). You can also + * use a "serialized" argument of 0 to start at the beginning of the + * zapobj (ie. zap_cursor_init_serialized(..., 0) is equivalent to + * zap_cursor_init(...).) + */ +void zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *ds, + uint64_t zapobj, uint64_t serialized); + + +#define ZAP_HISTOGRAM_SIZE 10 + +typedef struct zap_stats { + /* + * Size of the pointer table (in number of entries). + * This is always a power of 2, or zero if it's a microzap. + * In general, it should be considerably greater than zs_num_leafs. + */ + uint64_t zs_ptrtbl_len; + + uint64_t zs_blocksize; /* size of zap blocks */ + + /* + * The number of blocks used. Note that some blocks may be + * wasted because old ptrtbl's and large name/value blocks are + * not reused. (Although their space is reclaimed, we don't + * reuse those offsets in the object.) + */ + uint64_t zs_num_blocks; + + /* + * Pointer table values from zap_ptrtbl in the zap_phys_t + */ + uint64_t zs_ptrtbl_nextblk; /* next (larger) copy start block */ + uint64_t zs_ptrtbl_blks_copied; /* number source blocks copied */ + uint64_t zs_ptrtbl_zt_blk; /* starting block number */ + uint64_t zs_ptrtbl_zt_numblks; /* number of blocks */ + uint64_t zs_ptrtbl_zt_shift; /* bits to index it */ + + /* + * Values of the other members of the zap_phys_t + */ + uint64_t zs_block_type; /* ZBT_HEADER */ + uint64_t zs_magic; /* ZAP_MAGIC */ + uint64_t zs_num_leafs; /* The number of leaf blocks */ + uint64_t zs_num_entries; /* The number of zap entries */ + uint64_t zs_salt; /* salt to stir into hash function */ + + /* + * Histograms. For all histograms, the last index + * (ZAP_HISTOGRAM_SIZE-1) includes any values which are greater + * than what can be represented. For example + * zs_leafs_with_n5_entries[ZAP_HISTOGRAM_SIZE-1] is the number + * of leafs with more than 45 entries. + */ + + /* + * zs_leafs_with_n_pointers[n] is the number of leafs with + * 2^n pointers to it. + */ + uint64_t zs_leafs_with_2n_pointers[ZAP_HISTOGRAM_SIZE]; + + /* + * zs_leafs_with_n_entries[n] is the number of leafs with + * [n*5, (n+1)*5) entries. In the current implementation, there + * can be at most 55 entries in any block, but there may be + * fewer if the name or value is large, or the block is not + * completely full. + */ + uint64_t zs_blocks_with_n5_entries[ZAP_HISTOGRAM_SIZE]; + + /* + * zs_leafs_n_tenths_full[n] is the number of leafs whose + * fullness is in the range [n/10, (n+1)/10). + */ + uint64_t zs_blocks_n_tenths_full[ZAP_HISTOGRAM_SIZE]; + + /* + * zs_entries_using_n_chunks[n] is the number of entries which + * consume n 24-byte chunks. (Note, large names/values only use + * one chunk, but contribute to zs_num_blocks_large.) + */ + uint64_t zs_entries_using_n_chunks[ZAP_HISTOGRAM_SIZE]; + + /* + * zs_buckets_with_n_entries[n] is the number of buckets (each + * leaf has 64 buckets) with n entries. + * zs_buckets_with_n_entries[1] should be very close to + * zs_num_entries. + */ + uint64_t zs_buckets_with_n_entries[ZAP_HISTOGRAM_SIZE]; +} zap_stats_t; + +/* + * Get statistics about a ZAP object. Note: you need to be aware of the + * internal implementation of the ZAP to correctly interpret some of the + * statistics. This interface shouldn't be relied on unless you really + * know what you're doing. + */ +int zap_get_stats(objset_t *ds, uint64_t zapobj, zap_stats_t *zs); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZAP_H */ --- linux-4.4.0.orig/zfs/include/sys/zap_impl.h +++ linux-4.4.0/zfs/include/sys/zap_impl.h @@ -0,0 +1,237 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_ZAP_IMPL_H +#define _SYS_ZAP_IMPL_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern int fzap_default_block_shift; + +#define ZAP_MAGIC 0x2F52AB2ABULL + +#define FZAP_BLOCK_SHIFT(zap) ((zap)->zap_f.zap_block_shift) + +#define MZAP_ENT_LEN 64 +#define MZAP_NAME_LEN (MZAP_ENT_LEN - 8 - 4 - 2) +#define MZAP_MAX_BLKSZ SPA_OLD_MAXBLOCKSIZE + +#define ZAP_NEED_CD (-1U) + +typedef struct mzap_ent_phys { + uint64_t mze_value; + uint32_t mze_cd; + uint16_t mze_pad; /* in case we want to chain them someday */ + char mze_name[MZAP_NAME_LEN]; +} mzap_ent_phys_t; + +typedef struct mzap_phys { + uint64_t mz_block_type; /* ZBT_MICRO */ + uint64_t mz_salt; + uint64_t mz_normflags; + uint64_t mz_pad[5]; + mzap_ent_phys_t mz_chunk[1]; + /* actually variable size depending on block size */ +} mzap_phys_t; + +typedef struct mzap_ent { + avl_node_t mze_node; + int mze_chunkid; + uint64_t mze_hash; + uint32_t mze_cd; /* copy from mze_phys->mze_cd */ +} mzap_ent_t; + +#define MZE_PHYS(zap, mze) \ + (&zap_m_phys(zap)->mz_chunk[(mze)->mze_chunkid]) + +/* + * The (fat) zap is stored in one object. It is an array of + * 1<= 6] [zap_leaf_t] [ptrtbl] ... + * + */ + +struct dmu_buf; +struct zap_leaf; + +#define ZBT_LEAF ((1ULL << 63) + 0) +#define ZBT_HEADER ((1ULL << 63) + 1) +#define ZBT_MICRO ((1ULL << 63) + 3) +/* any other values are ptrtbl blocks */ + +/* + * the embedded pointer table takes up half a block: + * block size / entry size (2^3) / 2 + */ +#define ZAP_EMBEDDED_PTRTBL_SHIFT(zap) (FZAP_BLOCK_SHIFT(zap) - 3 - 1) + +/* + * The embedded pointer table starts half-way through the block. Since + * the pointer table itself is half the block, it starts at (64-bit) + * word number (1<zap_dbuf->db_data); +} + +static inline mzap_phys_t * +zap_m_phys(zap_t *zap) +{ + return (zap->zap_dbuf->db_data); +} + +typedef struct zap_name { + zap_t *zn_zap; + int zn_key_intlen; + const void *zn_key_orig; + int zn_key_orig_numints; + const void *zn_key_norm; + int zn_key_norm_numints; + uint64_t zn_hash; + matchtype_t zn_matchtype; + char zn_normbuf[ZAP_MAXNAMELEN]; +} zap_name_t; + +#define zap_f zap_u.zap_fat +#define zap_m zap_u.zap_micro + +boolean_t zap_match(zap_name_t *zn, const char *matchname); +int zap_lockdir(objset_t *os, uint64_t obj, dmu_tx_t *tx, + krw_t lti, boolean_t fatreader, boolean_t adding, zap_t **zapp); +void zap_unlockdir(zap_t *zap); +void zap_evict(void *dbu); +zap_name_t *zap_name_alloc(zap_t *zap, const char *key, matchtype_t mt); +void zap_name_free(zap_name_t *zn); +int zap_hashbits(zap_t *zap); +uint32_t zap_maxcd(zap_t *zap); +uint64_t zap_getflags(zap_t *zap); + +#define ZAP_HASH_IDX(hash, n) (((n) == 0) ? 0 : ((hash) >> (64 - (n)))) + +void fzap_byteswap(void *buf, size_t size); +int fzap_count(zap_t *zap, uint64_t *count); +int fzap_lookup(zap_name_t *zn, + uint64_t integer_size, uint64_t num_integers, void *buf, + char *realname, int rn_len, boolean_t *normalization_conflictp); +void fzap_prefetch(zap_name_t *zn); +int fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, + uint64_t *tooverwrite); +int fzap_add(zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx); +int fzap_update(zap_name_t *zn, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); +int fzap_length(zap_name_t *zn, + uint64_t *integer_size, uint64_t *num_integers); +int fzap_remove(zap_name_t *zn, dmu_tx_t *tx); +int fzap_cursor_retrieve(zap_t *zap, zap_cursor_t *zc, zap_attribute_t *za); +void fzap_get_stats(zap_t *zap, zap_stats_t *zs); +void zap_put_leaf(struct zap_leaf *l); + +int fzap_add_cd(zap_name_t *zn, + uint64_t integer_size, uint64_t num_integers, + const void *val, uint32_t cd, dmu_tx_t *tx); +void fzap_upgrade(zap_t *zap, dmu_tx_t *tx, zap_flags_t flags); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZAP_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/zap_leaf.h +++ linux-4.4.0/zfs/include/sys/zap_leaf.h @@ -0,0 +1,248 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#ifndef _SYS_ZAP_LEAF_H +#define _SYS_ZAP_LEAF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct zap; +struct zap_name; +struct zap_stats; + +#define ZAP_LEAF_MAGIC 0x2AB1EAF + +/* chunk size = 24 bytes */ +#define ZAP_LEAF_CHUNKSIZE 24 + +/* + * The amount of space available for chunks is: + * block size (1<l_bs) - hash entry size (2) * number of hash + * entries - header space (2*chunksize) + */ +#define ZAP_LEAF_NUMCHUNKS(l) \ + (((1<<(l)->l_bs) - 2*ZAP_LEAF_HASH_NUMENTRIES(l)) / \ + ZAP_LEAF_CHUNKSIZE - 2) + +/* + * The amount of space within the chunk available for the array is: + * chunk size - space for type (1) - space for next pointer (2) + */ +#define ZAP_LEAF_ARRAY_BYTES (ZAP_LEAF_CHUNKSIZE - 3) + +#define ZAP_LEAF_ARRAY_NCHUNKS(bytes) \ + (((bytes)+ZAP_LEAF_ARRAY_BYTES-1)/ZAP_LEAF_ARRAY_BYTES) + +/* + * Low water mark: when there are only this many chunks free, start + * growing the ptrtbl. Ideally, this should be larger than a + * "reasonably-sized" entry. 20 chunks is more than enough for the + * largest directory entry (MAXNAMELEN (256) byte name, 8-byte value), + * while still being only around 3% for 16k blocks. + */ +#define ZAP_LEAF_LOW_WATER (20) + +/* + * The leaf hash table has block size / 2^5 (32) number of entries, + * which should be more than enough for the maximum number of entries, + * which is less than block size / CHUNKSIZE (24) / minimum number of + * chunks per entry (3). + */ +#define ZAP_LEAF_HASH_SHIFT(l) ((l)->l_bs - 5) +#define ZAP_LEAF_HASH_NUMENTRIES(l) (1 << ZAP_LEAF_HASH_SHIFT(l)) + +/* + * The chunks start immediately after the hash table. The end of the + * hash table is at l_hash + HASH_NUMENTRIES, which we simply cast to a + * chunk_t. + */ +#define ZAP_LEAF_CHUNK(l, idx) \ + ((zap_leaf_chunk_t *) \ + (zap_leaf_phys(l)->l_hash + ZAP_LEAF_HASH_NUMENTRIES(l)))[idx] +#define ZAP_LEAF_ENTRY(l, idx) (&ZAP_LEAF_CHUNK(l, idx).l_entry) + +typedef enum zap_chunk_type { + ZAP_CHUNK_FREE = 253, + ZAP_CHUNK_ENTRY = 252, + ZAP_CHUNK_ARRAY = 251, + ZAP_CHUNK_TYPE_MAX = 250 +} zap_chunk_type_t; + +#define ZLF_ENTRIES_CDSORTED (1<<0) + +/* + * TAKE NOTE: + * If zap_leaf_phys_t is modified, zap_leaf_byteswap() must be modified. + */ +typedef struct zap_leaf_phys { + struct zap_leaf_header { + /* Public to ZAP */ + uint64_t lh_block_type; /* ZBT_LEAF */ + uint64_t lh_pad1; + uint64_t lh_prefix; /* hash prefix of this leaf */ + uint32_t lh_magic; /* ZAP_LEAF_MAGIC */ + uint16_t lh_nfree; /* number free chunks */ + uint16_t lh_nentries; /* number of entries */ + uint16_t lh_prefix_len; /* num bits used to id this */ + + /* Private to zap_leaf */ + uint16_t lh_freelist; /* chunk head of free list */ + uint8_t lh_flags; /* ZLF_* flags */ + uint8_t lh_pad2[11]; + } l_hdr; /* 2 24-byte chunks */ + + /* + * The header is followed by a hash table with + * ZAP_LEAF_HASH_NUMENTRIES(zap) entries. The hash table is + * followed by an array of ZAP_LEAF_NUMCHUNKS(zap) + * zap_leaf_chunk structures. These structures are accessed + * with the ZAP_LEAF_CHUNK() macro. + */ + + uint16_t l_hash[1]; +} zap_leaf_phys_t; + +typedef union zap_leaf_chunk { + struct zap_leaf_entry { + uint8_t le_type; /* always ZAP_CHUNK_ENTRY */ + uint8_t le_value_intlen; /* size of value's ints */ + uint16_t le_next; /* next entry in hash chain */ + uint16_t le_name_chunk; /* first chunk of the name */ + uint16_t le_name_numints; /* ints in name (incl null) */ + uint16_t le_value_chunk; /* first chunk of the value */ + uint16_t le_value_numints; /* value length in ints */ + uint32_t le_cd; /* collision differentiator */ + uint64_t le_hash; /* hash value of the name */ + } l_entry; + struct zap_leaf_array { + uint8_t la_type; /* always ZAP_CHUNK_ARRAY */ + uint8_t la_array[ZAP_LEAF_ARRAY_BYTES]; + uint16_t la_next; /* next blk or CHAIN_END */ + } l_array; + struct zap_leaf_free { + uint8_t lf_type; /* always ZAP_CHUNK_FREE */ + uint8_t lf_pad[ZAP_LEAF_ARRAY_BYTES]; + uint16_t lf_next; /* next in free list, or CHAIN_END */ + } l_free; +} zap_leaf_chunk_t; + +typedef struct zap_leaf { + dmu_buf_user_t l_dbu; + krwlock_t l_rwlock; + uint64_t l_blkid; /* 1<l_dbuf->db_data); +} + +typedef struct zap_entry_handle { + /* Set by zap_leaf and public to ZAP */ + uint64_t zeh_num_integers; + uint64_t zeh_hash; + uint32_t zeh_cd; + uint8_t zeh_integer_size; + + /* Private to zap_leaf */ + uint16_t zeh_fakechunk; + uint16_t *zeh_chunkp; + zap_leaf_t *zeh_leaf; +} zap_entry_handle_t; + +/* + * Return a handle to the named entry, or ENOENT if not found. The hash + * value must equal zap_hash(name). + */ +extern int zap_leaf_lookup(zap_leaf_t *l, + struct zap_name *zn, zap_entry_handle_t *zeh); + +/* + * Return a handle to the entry with this hash+cd, or the entry with the + * next closest hash+cd. + */ +extern int zap_leaf_lookup_closest(zap_leaf_t *l, + uint64_t hash, uint32_t cd, zap_entry_handle_t *zeh); + +/* + * Read the first num_integers in the attribute. Integer size + * conversion will be done without sign extension. Return EINVAL if + * integer_size is too small. Return EOVERFLOW if there are more than + * num_integers in the attribute. + */ +extern int zap_entry_read(const zap_entry_handle_t *zeh, + uint8_t integer_size, uint64_t num_integers, void *buf); + +extern int zap_entry_read_name(struct zap *zap, const zap_entry_handle_t *zeh, + uint16_t buflen, char *buf); + +/* + * Replace the value of an existing entry. + * + * May fail if it runs out of space (ENOSPC). + */ +extern int zap_entry_update(zap_entry_handle_t *zeh, + uint8_t integer_size, uint64_t num_integers, const void *buf); + +/* + * Remove an entry. + */ +extern void zap_entry_remove(zap_entry_handle_t *zeh); + +/* + * Create an entry. An equal entry must not exist, and this entry must + * belong in this leaf (according to its hash value). Fills in the + * entry handle on success. Returns 0 on success or ENOSPC on failure. + */ +extern int zap_entry_create(zap_leaf_t *l, struct zap_name *zn, uint32_t cd, + uint8_t integer_size, uint64_t num_integers, const void *buf, + zap_entry_handle_t *zeh); + +/* Determine whether there is another entry with the same normalized form. */ +extern boolean_t zap_entry_normalization_conflict(zap_entry_handle_t *zeh, + struct zap_name *zn, const char *name, struct zap *zap); + +/* + * Other stuff. + */ + +extern void zap_leaf_init(zap_leaf_t *l, boolean_t sort); +extern void zap_leaf_byteswap(zap_leaf_phys_t *buf, int len); +extern void zap_leaf_split(zap_leaf_t *l, zap_leaf_t *nl, boolean_t sort); +extern void zap_leaf_stats(struct zap *zap, zap_leaf_t *l, + struct zap_stats *zs); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZAP_LEAF_H */ --- linux-4.4.0.orig/zfs/include/sys/zfeature.h +++ linux-4.4.0/zfs/include/sys/zfeature.h @@ -0,0 +1,73 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_ZFEATURE_H +#define _SYS_ZFEATURE_H + +#include +#include +#include "zfeature_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define VALID_FEATURE_FID(fid) ((fid) >= 0 && (fid) < SPA_FEATURES) +#define VALID_FEATURE_OR_NONE(fid) ((fid) == SPA_FEATURE_NONE || \ + VALID_FEATURE_FID(fid)) + +struct spa; +struct dmu_tx; +struct objset; + +extern void spa_feature_create_zap_objects(struct spa *, struct dmu_tx *); +extern void spa_feature_enable(struct spa *, spa_feature_t, + struct dmu_tx *); +extern void spa_feature_incr(struct spa *, spa_feature_t, struct dmu_tx *); +extern void spa_feature_decr(struct spa *, spa_feature_t, struct dmu_tx *); +extern boolean_t spa_feature_is_enabled(struct spa *, spa_feature_t); +extern boolean_t spa_feature_is_active(struct spa *, spa_feature_t); +extern boolean_t spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid, + uint64_t *txg); +extern uint64_t spa_feature_refcount(spa_t *, spa_feature_t, uint64_t); +extern boolean_t spa_features_check(spa_t *, boolean_t, nvlist_t *, nvlist_t *); + +/* + * These functions are only exported for zhack and zdb; normal callers should + * use the above interfaces. + */ +extern int feature_get_refcount(struct spa *, zfeature_info_t *, uint64_t *); +extern int feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature, + uint64_t *res); +extern void feature_enable_sync(struct spa *, zfeature_info_t *, + struct dmu_tx *); +extern void feature_sync(struct spa *, zfeature_info_t *, uint64_t, + struct dmu_tx *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZFEATURE_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_acl.h +++ linux-4.4.0/zfs/include/sys/zfs_acl.h @@ -0,0 +1,247 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FS_ZFS_ACL_H +#define _SYS_FS_ZFS_ACL_H + +#ifdef _KERNEL +#include +#include +#include +#endif +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct znode_phys; + +#define ACE_SLOT_CNT 6 +#define ZFS_ACL_VERSION_INITIAL 0ULL +#define ZFS_ACL_VERSION_FUID 1ULL +#define ZFS_ACL_VERSION ZFS_ACL_VERSION_FUID + +/* + * ZFS ACLs (Access Control Lists) are stored in various forms. + * + * Files created with ACL version ZFS_ACL_VERSION_INITIAL + * will all be created with fixed length ACEs of type + * zfs_oldace_t. + * + * Files with ACL version ZFS_ACL_VERSION_FUID will be created + * with various sized ACEs. The abstraction entries will utilize + * zfs_ace_hdr_t, normal user/group entries will use zfs_ace_t + * and some specialized CIFS ACEs will use zfs_object_ace_t. + */ + +/* + * All ACEs have a common hdr. For + * owner@, group@, and everyone@ this is all + * thats needed. + */ +typedef struct zfs_ace_hdr { + uint16_t z_type; + uint16_t z_flags; + uint32_t z_access_mask; +} zfs_ace_hdr_t; + +typedef zfs_ace_hdr_t zfs_ace_abstract_t; + +/* + * Standard ACE + */ +typedef struct zfs_ace { + zfs_ace_hdr_t z_hdr; + uint64_t z_fuid; +} zfs_ace_t; + +/* + * The following type only applies to ACE_ACCESS_ALLOWED|DENIED_OBJECT_ACE_TYPE + * and will only be set/retrieved in a CIFS context. + */ + +typedef struct zfs_object_ace { + zfs_ace_t z_ace; + uint8_t z_object_type[16]; /* object type */ + uint8_t z_inherit_type[16]; /* inherited object type */ +} zfs_object_ace_t; + +typedef struct zfs_oldace { + uint32_t z_fuid; /* "who" */ + uint32_t z_access_mask; /* access mask */ + uint16_t z_flags; /* flags, i.e inheritance */ + uint16_t z_type; /* type of entry allow/deny */ +} zfs_oldace_t; + +typedef struct zfs_acl_phys_v0 { + uint64_t z_acl_extern_obj; /* ext acl pieces */ + uint32_t z_acl_count; /* Number of ACEs */ + uint16_t z_acl_version; /* acl version */ + uint16_t z_acl_pad; /* pad */ + zfs_oldace_t z_ace_data[ACE_SLOT_CNT]; /* 6 standard ACEs */ +} zfs_acl_phys_v0_t; + +#define ZFS_ACE_SPACE (sizeof (zfs_oldace_t) * ACE_SLOT_CNT) + +/* + * Size of ACL count is always 2 bytes. + * Necessary to for dealing with both V0 ACL and V1 ACL layout + */ +#define ZFS_ACL_COUNT_SIZE (sizeof (uint16_t)) + +typedef struct zfs_acl_phys { + uint64_t z_acl_extern_obj; /* ext acl pieces */ + uint32_t z_acl_size; /* Number of bytes in ACL */ + uint16_t z_acl_version; /* acl version */ + uint16_t z_acl_count; /* ace count */ + uint8_t z_ace_data[ZFS_ACE_SPACE]; /* space for embedded ACEs */ +} zfs_acl_phys_t; + +typedef struct acl_ops { + uint32_t (*ace_mask_get) (void *acep); /* get access mask */ + void (*ace_mask_set) (void *acep, + uint32_t mask); /* set access mask */ + uint16_t (*ace_flags_get) (void *acep); /* get flags */ + void (*ace_flags_set) (void *acep, + uint16_t flags); /* set flags */ + uint16_t (*ace_type_get)(void *acep); /* get type */ + void (*ace_type_set)(void *acep, + uint16_t type); /* set type */ + uint64_t (*ace_who_get)(void *acep); /* get who/fuid */ + void (*ace_who_set)(void *acep, + uint64_t who); /* set who/fuid */ + size_t (*ace_size)(void *acep); /* how big is this ace */ + size_t (*ace_abstract_size)(void); /* sizeof abstract entry */ + int (*ace_mask_off)(void); /* off of access mask in ace */ + /* ptr to data if any */ + int (*ace_data)(void *acep, void **datap); +} acl_ops_t; + +/* + * A zfs_acl_t structure is composed of a list of zfs_acl_node_t's. + * Each node will have one or more ACEs associated with it. You will + * only have multiple nodes during a chmod operation. Normally only + * one node is required. + */ +typedef struct zfs_acl_node { + list_node_t z_next; /* Next chunk of ACEs */ + void *z_acldata; /* pointer into actual ACE(s) */ + void *z_allocdata; /* pointer to kmem allocated memory */ + size_t z_allocsize; /* Size of blob in bytes */ + size_t z_size; /* length of ACL data */ + uint64_t z_ace_count; /* number of ACEs in this acl node */ + int z_ace_idx; /* ace iterator positioned on */ +} zfs_acl_node_t; + +typedef struct zfs_acl { + uint64_t z_acl_count; /* Number of ACEs */ + size_t z_acl_bytes; /* Number of bytes in ACL */ + uint_t z_version; /* version of ACL */ + void *z_next_ace; /* pointer to next ACE */ + uint64_t z_hints; /* ACL hints (ZFS_INHERIT_ACE ...) */ + zfs_acl_node_t *z_curr_node; /* current node iterator is handling */ + list_t z_acl; /* chunks of ACE data */ + acl_ops_t *z_ops; /* ACL operations */ +} zfs_acl_t; + +typedef struct acl_locator_cb { + zfs_acl_t *cb_aclp; + zfs_acl_node_t *cb_acl_node; +} zfs_acl_locator_cb_t; + +#define ACL_DATA_ALLOCED 0x1 +#define ZFS_ACL_SIZE(aclcnt) (sizeof (ace_t) * (aclcnt)) + +struct zfs_fuid_info; + +typedef struct zfs_acl_ids { + uint64_t z_fuid; /* file owner fuid */ + uint64_t z_fgid; /* file group owner fuid */ + uint64_t z_mode; /* mode to set on create */ + zfs_acl_t *z_aclp; /* ACL to create with file */ + struct zfs_fuid_info *z_fuidp; /* for tracking fuids for log */ +} zfs_acl_ids_t; + +/* + * Property values for acl_mode and acl_inherit. + * + * acl_mode can take discard, noallow, groupmask and passthrough. + * whereas acl_inherit has secure instead of groupmask. + */ + +#define ZFS_ACL_DISCARD 0 +#define ZFS_ACL_NOALLOW 1 +#define ZFS_ACL_GROUPMASK 2 +#define ZFS_ACL_PASSTHROUGH 3 +#define ZFS_ACL_RESTRICTED 4 +#define ZFS_ACL_PASSTHROUGH_X 5 + +struct znode; +struct zfs_sb; + +#ifdef _KERNEL +int zfs_acl_ids_create(struct znode *, int, vattr_t *, + cred_t *, vsecattr_t *, zfs_acl_ids_t *); +void zfs_acl_ids_free(zfs_acl_ids_t *); +boolean_t zfs_acl_ids_overquota(struct zfs_sb *, zfs_acl_ids_t *); +int zfs_getacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); +int zfs_setacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); +void zfs_acl_rele(void *); +void zfs_oldace_byteswap(ace_t *, int); +void zfs_ace_byteswap(void *, size_t, boolean_t); +extern boolean_t zfs_has_access(struct znode *zp, cred_t *cr); +extern int zfs_zaccess(struct znode *, int, int, boolean_t, cred_t *); +int zfs_fastaccesschk_execute(struct znode *, cred_t *); +extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *); +extern int zfs_zaccess_unix(struct znode *, mode_t, cred_t *); +extern int zfs_acl_access(struct znode *, int, cred_t *); +void zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t); +int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *); +int zfs_zaccess_rename(struct znode *, struct znode *, + struct znode *, struct znode *, cred_t *cr); +void zfs_acl_free(zfs_acl_t *); +int zfs_vsec_2_aclp(struct zfs_sb *, umode_t, vsecattr_t *, cred_t *, + struct zfs_fuid_info **, zfs_acl_t **); +int zfs_aclset_common(struct znode *, zfs_acl_t *, cred_t *, dmu_tx_t *); +uint64_t zfs_external_acl(struct znode *); +int zfs_znode_acl_version(struct znode *); +int zfs_acl_size(struct znode *, int *); +zfs_acl_t *zfs_acl_alloc(int); +zfs_acl_node_t *zfs_acl_node_alloc(size_t); +void zfs_acl_xform(struct znode *, zfs_acl_t *, cred_t *); +void zfs_acl_data_locator(void **, uint32_t *, uint32_t, boolean_t, void *); +uint64_t zfs_mode_compute(uint64_t, zfs_acl_t *, + uint64_t *, uint64_t, uint64_t); +int zfs_acl_chown_setattr(struct znode *); + +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _SYS_FS_ZFS_ACL_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_context.h +++ linux-4.4.0/zfs/include/sys/zfs_context.h @@ -0,0 +1,753 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_ZFS_CONTEXT_H +#define _SYS_ZFS_CONTEXT_H + +#ifdef __KERNEL__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#else /* _KERNEL */ + +#define _SYS_MUTEX_H +#define _SYS_RWLOCK_H +#define _SYS_CONDVAR_H +#define _SYS_SYSTM_H +#define _SYS_T_LOCK_H +#define _SYS_VNODE_H +#define _SYS_VFS_H +#define _SYS_SUNDDI_H +#define _SYS_CALLB_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Stack + */ + +#define noinline __attribute__((noinline)) + +/* + * Debugging + */ + +/* + * Note that we are not using the debugging levels. + */ + +#define CE_CONT 0 /* continuation */ +#define CE_NOTE 1 /* notice */ +#define CE_WARN 2 /* warning */ +#define CE_PANIC 3 /* panic */ +#define CE_IGNORE 4 /* print nothing */ + +/* + * ZFS debugging + */ + +extern void dprintf_setup(int *argc, char **argv); + +extern void cmn_err(int, const char *, ...); +extern void vcmn_err(int, const char *, va_list); +extern void panic(const char *, ...); +extern void vpanic(const char *, va_list); + +#define fm_panic panic + +extern int aok; + +/* + * DTrace SDT probes have different signatures in userland than they do in + * kernel. If they're being used in kernel code, re-define them out of + * existence for their counterparts in libzpool. + */ + +#ifdef DTRACE_PROBE +#undef DTRACE_PROBE +#endif /* DTRACE_PROBE */ +#define DTRACE_PROBE(a) \ + ZFS_PROBE0(#a) + +#ifdef DTRACE_PROBE1 +#undef DTRACE_PROBE1 +#endif /* DTRACE_PROBE1 */ +#define DTRACE_PROBE1(a, b, c) \ + ZFS_PROBE1(#a, (unsigned long)c) + +#ifdef DTRACE_PROBE2 +#undef DTRACE_PROBE2 +#endif /* DTRACE_PROBE2 */ +#define DTRACE_PROBE2(a, b, c, d, e) \ + ZFS_PROBE2(#a, (unsigned long)c, (unsigned long)e) + +#ifdef DTRACE_PROBE3 +#undef DTRACE_PROBE3 +#endif /* DTRACE_PROBE3 */ +#define DTRACE_PROBE3(a, b, c, d, e, f, g) \ + ZFS_PROBE3(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g) + +#ifdef DTRACE_PROBE4 +#undef DTRACE_PROBE4 +#endif /* DTRACE_PROBE4 */ +#define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) \ + ZFS_PROBE4(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g, \ + (unsigned long)i) + +/* + * We use the comma operator so that this macro can be used without much + * additional code. For example, "return (EINVAL);" becomes + * "return (SET_ERROR(EINVAL));". Note that the argument will be evaluated + * twice, so it should not have side effects (e.g. something like: + * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice). + */ +#define SET_ERROR(err) (ZFS_SET_ERROR(err), err) + +/* + * Threads. TS_STACK_MIN is dictated by the minimum allowed pthread stack + * size. While TS_STACK_MAX is somewhat arbitrary, it was selected to be + * large enough for the expected stack depth while small enough to avoid + * exhausting address space with high thread counts. + */ +#define TS_MAGIC 0x72f158ab4261e538ull +#define TS_RUN 0x00000002 +#define TS_STACK_MIN PTHREAD_STACK_MIN +#define TS_STACK_MAX (256 * 1024) + +/* in libzpool, p0 exists only to have its address taken */ +typedef struct proc { + uintptr_t this_is_never_used_dont_dereference_it; +} proc_t; + +extern struct proc p0; +#define curproc (&p0) + +typedef void (*thread_func_t)(void *); +typedef void (*thread_func_arg_t)(void *); +typedef pthread_t kt_did_t; + +#define kpreempt(x) ((void)0) + +typedef struct kthread { + kt_did_t t_tid; + thread_func_t t_func; + void * t_arg; + pri_t t_pri; +} kthread_t; + +#define curthread zk_thread_current() +#define getcomm() "unknown" +#define thread_exit zk_thread_exit +#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ + zk_thread_create(stk, stksize, (thread_func_t)func, arg, \ + len, NULL, state, pri, PTHREAD_CREATE_DETACHED) +#define thread_join(t) zk_thread_join(t) +#define newproc(f, a, cid, pri, ctp, pid) (ENOSYS) + +extern kthread_t *zk_thread_current(void); +extern void zk_thread_exit(void); +extern kthread_t *zk_thread_create(caddr_t stk, size_t stksize, + thread_func_t func, void *arg, size_t len, + proc_t *pp, int state, pri_t pri, int detachstate); +extern void zk_thread_join(kt_did_t tid); + +#define kpreempt_disable() ((void)0) +#define kpreempt_enable() ((void)0) + +#define PS_NONE -1 + +#define issig(why) (FALSE) +#define ISSIG(thr, why) (FALSE) + +/* + * Mutexes + */ +#define MTX_MAGIC 0x9522f51362a6e326ull +#define MTX_INIT ((void *)NULL) +#define MTX_DEST ((void *)-1UL) + +typedef struct kmutex { + void *m_owner; + uint64_t m_magic; + pthread_mutex_t m_lock; +} kmutex_t; + +#define MUTEX_DEFAULT 0 +#define MUTEX_HELD(m) ((m)->m_owner == curthread) +#define MUTEX_NOT_HELD(m) (!MUTEX_HELD(m)) + +extern void mutex_init(kmutex_t *mp, char *name, int type, void *cookie); +extern void mutex_destroy(kmutex_t *mp); +extern void mutex_enter(kmutex_t *mp); +extern void mutex_exit(kmutex_t *mp); +extern int mutex_tryenter(kmutex_t *mp); +extern void *mutex_owner(kmutex_t *mp); +extern int mutex_held(kmutex_t *mp); + +/* + * RW locks + */ +#define RW_MAGIC 0x4d31fb123648e78aull +#define RW_INIT ((void *)NULL) +#define RW_DEST ((void *)-1UL) + +typedef struct krwlock { + void *rw_owner; + void *rw_wr_owner; + uint64_t rw_magic; + pthread_rwlock_t rw_lock; + uint_t rw_readers; +} krwlock_t; + +typedef int krw_t; + +#define RW_READER 0 +#define RW_WRITER 1 +#define RW_DEFAULT RW_READER + +#define RW_READ_HELD(x) ((x)->rw_readers > 0) +#define RW_WRITE_HELD(x) ((x)->rw_wr_owner == curthread) +#define RW_LOCK_HELD(x) (RW_READ_HELD(x) || RW_WRITE_HELD(x)) + +#undef RW_LOCK_HELD +#define RW_LOCK_HELD(x) (RW_READ_HELD(x) || RW_WRITE_HELD(x)) + +#undef RW_LOCK_HELD +#define RW_LOCK_HELD(x) (RW_READ_HELD(x) || RW_WRITE_HELD(x)) + +extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg); +extern void rw_destroy(krwlock_t *rwlp); +extern void rw_enter(krwlock_t *rwlp, krw_t rw); +extern int rw_tryenter(krwlock_t *rwlp, krw_t rw); +extern int rw_tryupgrade(krwlock_t *rwlp); +extern void rw_exit(krwlock_t *rwlp); +#define rw_downgrade(rwlp) do { } while (0) + +extern uid_t crgetuid(cred_t *cr); +extern uid_t crgetruid(cred_t *cr); +extern gid_t crgetgid(cred_t *cr); +extern int crgetngroups(cred_t *cr); +extern gid_t *crgetgroups(cred_t *cr); + +/* + * Condition variables + */ +#define CV_MAGIC 0xd31ea9a83b1b30c4ull + +typedef struct kcondvar { + uint64_t cv_magic; + pthread_cond_t cv; +} kcondvar_t; + +#define CV_DEFAULT 0 + +extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg); +extern void cv_destroy(kcondvar_t *cv); +extern void cv_wait(kcondvar_t *cv, kmutex_t *mp); +extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime); +extern clock_t cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, + hrtime_t res, int flag); +extern void cv_signal(kcondvar_t *cv); +extern void cv_broadcast(kcondvar_t *cv); +#define cv_timedwait_sig(cv, mp, at) cv_timedwait(cv, mp, at) +#define cv_wait_sig(cv, mp) cv_wait(cv, mp) +#define cv_wait_io(cv, mp) cv_wait(cv, mp) + +/* + * Thread-specific data + */ +#define tsd_get(k) pthread_getspecific(k) +#define tsd_set(k, v) pthread_setspecific(k, v) +#define tsd_create(kp, d) pthread_key_create(kp, d) +#define tsd_destroy(kp) /* nothing */ + +/* + * Thread-specific data + */ +#define tsd_get(k) pthread_getspecific(k) +#define tsd_set(k, v) pthread_setspecific(k, v) +#define tsd_create(kp, d) pthread_key_create(kp, d) +#define tsd_destroy(kp) /* nothing */ + +/* + * kstat creation, installation and deletion + */ +extern kstat_t *kstat_create(const char *, int, + const char *, const char *, uchar_t, ulong_t, uchar_t); +extern void kstat_install(kstat_t *); +extern void kstat_delete(kstat_t *); +extern void kstat_waitq_enter(kstat_io_t *); +extern void kstat_waitq_exit(kstat_io_t *); +extern void kstat_runq_enter(kstat_io_t *); +extern void kstat_runq_exit(kstat_io_t *); +extern void kstat_waitq_to_runq(kstat_io_t *); +extern void kstat_runq_back_to_waitq(kstat_io_t *); +extern void kstat_set_raw_ops(kstat_t *ksp, + int (*headers)(char *buf, size_t size), + int (*data)(char *buf, size_t size, void *data), + void *(*addr)(kstat_t *ksp, loff_t index)); + +/* + * Kernel memory + */ +#define KM_SLEEP UMEM_NOFAIL +#define KM_PUSHPAGE KM_SLEEP +#define KM_NOSLEEP UMEM_DEFAULT +#define KMC_NODEBUG UMC_NODEBUG +#define KMC_KMEM 0x0 +#define KMC_VMEM 0x0 +#define kmem_alloc(_s, _f) umem_alloc(_s, _f) +#define kmem_zalloc(_s, _f) umem_zalloc(_s, _f) +#define kmem_free(_b, _s) umem_free(_b, _s) +#define vmem_alloc(_s, _f) kmem_alloc(_s, _f) +#define vmem_zalloc(_s, _f) kmem_zalloc(_s, _f) +#define vmem_free(_b, _s) kmem_free(_b, _s) +#define kmem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i) \ + umem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i) +#define kmem_cache_destroy(_c) umem_cache_destroy(_c) +#define kmem_cache_alloc(_c, _f) umem_cache_alloc(_c, _f) +#define kmem_cache_free(_c, _b) umem_cache_free(_c, _b) +#define kmem_debugging() 0 +#define kmem_cache_reap_now(_c) umem_cache_reap_now(_c); +#define kmem_cache_set_move(_c, _cb) /* nothing */ +#define vmem_qcache_reap(_v) /* nothing */ +#define POINTER_INVALIDATE(_pp) /* nothing */ +#define POINTER_IS_VALID(_p) 0 + +extern vmem_t *zio_arena; + +typedef umem_cache_t kmem_cache_t; + +typedef enum kmem_cbrc { + KMEM_CBRC_YES, + KMEM_CBRC_NO, + KMEM_CBRC_LATER, + KMEM_CBRC_DONT_NEED, + KMEM_CBRC_DONT_KNOW +} kmem_cbrc_t; + +/* + * Task queues + */ +typedef struct taskq taskq_t; +typedef uintptr_t taskqid_t; +typedef void (task_func_t)(void *); + +typedef struct taskq_ent { + struct taskq_ent *tqent_next; + struct taskq_ent *tqent_prev; + task_func_t *tqent_func; + void *tqent_arg; + uintptr_t tqent_flags; +} taskq_ent_t; + +#define TQENT_FLAG_PREALLOC 0x1 /* taskq_dispatch_ent used */ + +#define TASKQ_PREPOPULATE 0x0001 +#define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ +#define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ +#define TASKQ_THREADS_CPU_PCT 0x0008 /* Scale # threads by # cpus */ +#define TASKQ_DC_BATCH 0x0010 /* Mark threads as batch */ + +#define TQ_SLEEP KM_SLEEP /* Can block for memory */ +#define TQ_NOSLEEP KM_NOSLEEP /* cannot block for memory; may fail */ +#define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ +#define TQ_FRONT 0x08 /* Queue in front */ + +extern taskq_t *system_taskq; + +extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +#define taskq_create_proc(a, b, c, d, e, p, f) \ + (taskq_create(a, b, c, d, e, f)) +#define taskq_create_sysdc(a, b, d, e, p, dc, f) \ + (taskq_create(a, b, maxclsyspri, d, e, f)) +extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +extern taskqid_t taskq_dispatch_delay(taskq_t *, task_func_t, void *, uint_t, + clock_t); +extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); +extern int taskq_empty_ent(taskq_ent_t *); +extern void taskq_init_ent(taskq_ent_t *); +extern void taskq_destroy(taskq_t *); +extern void taskq_wait(taskq_t *); +extern void taskq_wait_id(taskq_t *, taskqid_t); +extern void taskq_wait_outstanding(taskq_t *, taskqid_t); +extern int taskq_member(taskq_t *, kthread_t *); +extern int taskq_cancel_id(taskq_t *, taskqid_t); +extern void system_taskq_init(void); +extern void system_taskq_fini(void); + +#define XVA_MAPSIZE 3 +#define XVA_MAGIC 0x78766174 + +/* + * vnodes + */ +typedef struct vnode { + uint64_t v_size; + int v_fd; + char *v_path; +} vnode_t; + +#define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */ + +typedef struct xoptattr { + timestruc_t xoa_createtime; /* Create time of file */ + uint8_t xoa_archive; + uint8_t xoa_system; + uint8_t xoa_readonly; + uint8_t xoa_hidden; + uint8_t xoa_nounlink; + uint8_t xoa_immutable; + uint8_t xoa_appendonly; + uint8_t xoa_nodump; + uint8_t xoa_settable; + uint8_t xoa_opaque; + uint8_t xoa_av_quarantined; + uint8_t xoa_av_modified; + uint8_t xoa_av_scanstamp[AV_SCANSTAMP_SZ]; + uint8_t xoa_reparse; + uint8_t xoa_offline; + uint8_t xoa_sparse; +} xoptattr_t; + +typedef struct vattr { + uint_t va_mask; /* bit-mask of attributes */ + u_offset_t va_size; /* file size in bytes */ +} vattr_t; + + +typedef struct xvattr { + vattr_t xva_vattr; /* Embedded vattr structure */ + uint32_t xva_magic; /* Magic Number */ + uint32_t xva_mapsize; /* Size of attr bitmap (32-bit words) */ + uint32_t *xva_rtnattrmapp; /* Ptr to xva_rtnattrmap[] */ + uint32_t xva_reqattrmap[XVA_MAPSIZE]; /* Requested attrs */ + uint32_t xva_rtnattrmap[XVA_MAPSIZE]; /* Returned attrs */ + xoptattr_t xva_xoptattrs; /* Optional attributes */ +} xvattr_t; + +typedef struct vsecattr { + uint_t vsa_mask; /* See below */ + int vsa_aclcnt; /* ACL entry count */ + void *vsa_aclentp; /* pointer to ACL entries */ + int vsa_dfaclcnt; /* default ACL entry count */ + void *vsa_dfaclentp; /* pointer to default ACL entries */ + size_t vsa_aclentsz; /* ACE size in bytes of vsa_aclentp */ +} vsecattr_t; + +#define AT_TYPE 0x00001 +#define AT_MODE 0x00002 +#define AT_UID 0x00004 +#define AT_GID 0x00008 +#define AT_FSID 0x00010 +#define AT_NODEID 0x00020 +#define AT_NLINK 0x00040 +#define AT_SIZE 0x00080 +#define AT_ATIME 0x00100 +#define AT_MTIME 0x00200 +#define AT_CTIME 0x00400 +#define AT_RDEV 0x00800 +#define AT_BLKSIZE 0x01000 +#define AT_NBLOCKS 0x02000 +#define AT_SEQ 0x08000 +#define AT_XVATTR 0x10000 + +#define CRCREAT 0 + +extern int fop_getattr(vnode_t *vp, vattr_t *vap); + +#define VOP_CLOSE(vp, f, c, o, cr, ct) vn_close(vp) +#define VOP_PUTPAGE(vp, of, sz, fl, cr, ct) 0 +#define VOP_GETATTR(vp, vap, fl, cr, ct) fop_getattr((vp), (vap)); + +#define VOP_FSYNC(vp, f, cr, ct) fsync((vp)->v_fd) + +#define VN_RELE(vp) vn_close(vp) + +extern int vn_open(char *path, int x1, int oflags, int mode, vnode_t **vpp, + int x2, int x3); +extern int vn_openat(char *path, int x1, int oflags, int mode, vnode_t **vpp, + int x2, int x3, vnode_t *vp, int fd); +extern int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len, + offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp); +extern void vn_close(vnode_t *vp); + +#define vn_remove(path, x1, x2) remove(path) +#define vn_rename(from, to, seg) rename((from), (to)) +#define vn_is_readonly(vp) B_FALSE + +extern vnode_t *rootdir; + +#include /* for FREAD, FWRITE, etc */ + +/* + * Random stuff + */ +#define ddi_get_lbolt() (gethrtime() >> 23) +#define ddi_get_lbolt64() (gethrtime() >> 23) +#define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */ + +#define ddi_time_before(a, b) (a < b) +#define ddi_time_after(a, b) ddi_time_before(b, a) +#define ddi_time_before_eq(a, b) (!ddi_time_after(a, b)) +#define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a) + +#define ddi_time_before64(a, b) (a < b) +#define ddi_time_after64(a, b) ddi_time_before64(b, a) +#define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b)) +#define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a) + +extern void delay(clock_t ticks); + +#define SEC_TO_TICK(sec) ((sec) * hz) +#define MSEC_TO_TICK(msec) ((msec) / (MILLISEC / hz)) +#define USEC_TO_TICK(usec) ((usec) / (MICROSEC / hz)) +#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) + +#define gethrestime_sec() time(NULL) +#define gethrestime(t) \ + do {\ + (t)->tv_sec = gethrestime_sec();\ + (t)->tv_nsec = 0;\ + } while (0); + +#define max_ncpus 64 +#define boot_ncpus (sysconf(_SC_NPROCESSORS_ONLN)) + +/* + * Process priorities as defined by setpriority(2) and getpriority(2). + */ +#define minclsyspri 19 +#define maxclsyspri -20 +#define defclsyspri 0 + +#define CPU_SEQID (pthread_self() & (max_ncpus - 1)) + +#define kcred NULL +#define CRED() NULL + +#define ptob(x) ((x) * PAGESIZE) + +extern uint64_t physmem; + +extern int highbit64(uint64_t i); +extern int random_get_bytes(uint8_t *ptr, size_t len); +extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len); + +extern void kernel_init(int); +extern void kernel_fini(void); + +struct spa; +extern void nicenum(uint64_t num, char *buf); +extern void show_pool_stats(struct spa *); + +typedef struct callb_cpr { + kmutex_t *cc_lockp; +} callb_cpr_t; + +#define CALLB_CPR_INIT(cp, lockp, func, name) { \ + (cp)->cc_lockp = lockp; \ +} + +#define CALLB_CPR_SAFE_BEGIN(cp) { \ + ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ +} + +#define CALLB_CPR_SAFE_END(cp, lockp) { \ + ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ +} + +#define CALLB_CPR_EXIT(cp) { \ + ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ + mutex_exit((cp)->cc_lockp); \ +} + +#define zone_dataset_visible(x, y) (1) +#define INGLOBALZONE(z) (1) + +extern char *kmem_vasprintf(const char *fmt, va_list adx); +extern char *kmem_asprintf(const char *fmt, ...); +#define strfree(str) kmem_free((str), strlen(str) + 1) + +/* + * Hostname information + */ +extern char hw_serial[]; /* for userland-emulated hostid access */ +extern int ddi_strtoul(const char *str, char **nptr, int base, + unsigned long *result); + +extern int ddi_strtoull(const char *str, char **nptr, int base, + u_longlong_t *result); + +typedef struct utsname utsname_t; +extern utsname_t *utsname(void); + +/* ZFS Boot Related stuff. */ + +struct _buf { + intptr_t _fd; +}; + +struct bootstat { + uint64_t st_size; +}; + +typedef struct ace_object { + uid_t a_who; + uint32_t a_access_mask; + uint16_t a_flags; + uint16_t a_type; + uint8_t a_obj_type[16]; + uint8_t a_inherit_obj_type[16]; +} ace_object_t; + + +#define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05 +#define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06 +#define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07 +#define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08 + +extern struct _buf *kobj_open_file(char *name); +extern int kobj_read_file(struct _buf *file, char *buf, unsigned size, + unsigned off); +extern void kobj_close_file(struct _buf *file); +extern int kobj_get_filesize(struct _buf *file, uint64_t *size); +extern int zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr); +extern int zfs_secpolicy_rename_perms(const char *from, const char *to, + cred_t *cr); +extern int zfs_secpolicy_destroy_perms(const char *name, cred_t *cr); +extern zoneid_t getzoneid(void); + +/* SID stuff */ +typedef struct ksiddomain { + uint_t kd_ref; + uint_t kd_len; + char *kd_name; +} ksiddomain_t; + +ksiddomain_t *ksid_lookupdomain(const char *); +void ksiddomain_rele(ksiddomain_t *); + +#define DDI_SLEEP KM_SLEEP +#define ddi_log_sysevent(_a, _b, _c, _d, _e, _f, _g) \ + sysevent_post_event(_c, _d, _b, "libzpool", _e, _f) + +#define zfs_sleep_until(wakeup) \ + do { \ + hrtime_t delta = wakeup - gethrtime(); \ + struct timespec ts; \ + ts.tv_sec = delta / NANOSEC; \ + ts.tv_nsec = delta % NANOSEC; \ + (void) nanosleep(&ts, NULL); \ + } while (0) + +typedef int fstrans_cookie_t; + +extern fstrans_cookie_t spl_fstrans_mark(void); +extern void spl_fstrans_unmark(fstrans_cookie_t); +extern int spl_fstrans_check(void); + +#endif /* _KERNEL */ +#endif /* _SYS_ZFS_CONTEXT_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_ctldir.h +++ linux-4.4.0/zfs/include/sys/zfs_ctldir.h @@ -0,0 +1,104 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * LLNL-CODE-403049. + * Rewritten for Linux by: + * Rohan Puri + * Brian Behlendorf + */ + +#ifndef _ZFS_CTLDIR_H +#define _ZFS_CTLDIR_H + +#include +#include +#include +#include + +#define ZFS_CTLDIR_NAME ".zfs" +#define ZFS_SNAPDIR_NAME "snapshot" +#define ZFS_SHAREDIR_NAME "shares" + +#define zfs_has_ctldir(zdp) \ + ((zdp)->z_id == ZTOZSB(zdp)->z_root && \ + (ZTOZSB(zdp)->z_ctldir != NULL)) +#define zfs_show_ctldir(zdp) \ + (zfs_has_ctldir(zdp) && \ + (ZTOZSB(zdp)->z_show_ctldir)) + +extern int zfs_expire_snapshot; + +/* zfsctl generic functions */ +extern int zfsctl_create(zfs_sb_t *zsb); +extern void zfsctl_destroy(zfs_sb_t *zsb); +extern struct inode *zfsctl_root(znode_t *zp); +extern void zfsctl_init(void); +extern void zfsctl_fini(void); +extern boolean_t zfsctl_is_node(struct inode *ip); +extern boolean_t zfsctl_is_snapdir(struct inode *ip); +extern int zfsctl_fid(struct inode *ip, fid_t *fidp); + +/* zfsctl '.zfs' functions */ +extern int zfsctl_root_lookup(struct inode *dip, char *name, + struct inode **ipp, int flags, cred_t *cr, int *direntflags, + pathname_t *realpnp); + +/* zfsctl '.zfs/snapshot' functions */ +extern int zfsctl_snapdir_lookup(struct inode *dip, char *name, + struct inode **ipp, int flags, cred_t *cr, int *direntflags, + pathname_t *realpnp); +extern int zfsctl_snapdir_rename(struct inode *sdip, char *sname, + struct inode *tdip, char *tname, cred_t *cr, int flags); +extern int zfsctl_snapdir_remove(struct inode *dip, char *name, cred_t *cr, + int flags); +extern int zfsctl_snapdir_mkdir(struct inode *dip, char *dirname, vattr_t *vap, + struct inode **ipp, cred_t *cr, int flags); +extern void zfsctl_snapdir_inactive(struct inode *ip); +extern int zfsctl_snapshot_mount(struct path *path, int flags); +extern int zfsctl_snapshot_unmount(char *snapname, int flags); +extern int zfsctl_snapshot_unmount_delay(spa_t *spa, uint64_t objsetid, + int delay); +extern int zfsctl_lookup_objset(struct super_block *sb, uint64_t objsetid, + zfs_sb_t **zsb); + +/* zfsctl '.zfs/shares' functions */ +extern int zfsctl_shares_lookup(struct inode *dip, char *name, + struct inode **ipp, int flags, cred_t *cr, int *direntflags, + pathname_t *realpnp); + +/* + * These inodes numbers are reserved for the .zfs control directory. + * It is important that they be no larger that 48-bits because only + * 6 bytes are reserved in the NFS file handle for the object number. + * However, they should be as large as possible to avoid conflicts + * with the objects which are assigned monotonically by the dmu. + */ +#define ZFSCTL_INO_ROOT 0x0000FFFFFFFFFFFFULL +#define ZFSCTL_INO_SHARES 0x0000FFFFFFFFFFFEULL +#define ZFSCTL_INO_SNAPDIR 0x0000FFFFFFFFFFFDULL +#define ZFSCTL_INO_SNAPDIRS 0x0000FFFFFFFFFFFCULL + +#define ZFSCTL_EXPIRE_SNAPSHOT 300 + +#endif /* _ZFS_CTLDIR_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_debug.h +++ linux-4.4.0/zfs/include/sys/zfs_debug.h @@ -0,0 +1,81 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#ifndef _SYS_ZFS_DEBUG_H +#define _SYS_ZFS_DEBUG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +extern int zfs_flags; +extern int zfs_recover; +extern int zfs_free_leak_on_eio; + +#define ZFS_DEBUG_DPRINTF (1<<0) +#define ZFS_DEBUG_DBUF_VERIFY (1<<1) +#define ZFS_DEBUG_DNODE_VERIFY (1<<2) +#define ZFS_DEBUG_SNAPNAMES (1<<3) +#define ZFS_DEBUG_MODIFY (1<<4) +#define ZFS_DEBUG_SPA (1<<5) +#define ZFS_DEBUG_ZIO_FREE (1<<6) +#define ZFS_DEBUG_HISTOGRAM_VERIFY (1<<7) + +extern void __dprintf(const char *file, const char *func, + int line, const char *fmt, ...); +#define dprintf(...) \ + __dprintf(__FILE__, __func__, __LINE__, __VA_ARGS__) +#define zfs_dbgmsg(...) \ + __dprintf(__FILE__, __func__, __LINE__, __VA_ARGS__) + +extern void zfs_panic_recover(const char *fmt, ...); + +typedef struct zfs_dbgmsg { + list_node_t zdm_node; + time_t zdm_timestamp; + int zdm_size; + char zdm_msg[1]; /* variable length allocation */ +} zfs_dbgmsg_t; + +extern void zfs_dbgmsg_init(void); +extern void zfs_dbgmsg_fini(void); + +#ifndef _KERNEL +extern int dprintf_find_string(const char *string); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZFS_DEBUG_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_delay.h +++ linux-4.4.0/zfs/include/sys/zfs_delay.h @@ -0,0 +1,41 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#ifndef _SYS_FS_ZFS_DELAY_H +#define _SYS_FS_ZFS_DELAY_H + +#include + +/* + * Generic wrapper to sleep until a given time. + */ +#define zfs_sleep_until(wakeup) \ + do { \ + hrtime_t delta = wakeup - gethrtime(); \ + \ + if (delta > 0) { \ + unsigned long delta_us; \ + delta_us = delta / (NANOSEC / MICROSEC); \ + usleep_range(delta_us, delta_us + 100); \ + } \ + } while (0) + +#endif /* _SYS_FS_ZFS_DELAY_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_dir.h +++ linux-4.4.0/zfs/include/sys/zfs_dir.h @@ -0,0 +1,74 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_FS_ZFS_DIR_H +#define _SYS_FS_ZFS_DIR_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* zfs_dirent_lock() flags */ +#define ZNEW 0x0001 /* entry should not exist */ +#define ZEXISTS 0x0002 /* entry should exist */ +#define ZSHARED 0x0004 /* shared access (zfs_dirlook()) */ +#define ZXATTR 0x0008 /* we want the xattr dir */ +#define ZRENAMING 0x0010 /* znode is being renamed */ +#define ZCILOOK 0x0020 /* case-insensitive lookup requested */ +#define ZCIEXACT 0x0040 /* c-i requires c-s match (rename) */ +#define ZHAVELOCK 0x0080 /* z_name_lock is already held */ + +/* mknode flags */ +#define IS_ROOT_NODE 0x01 /* create a root node */ +#define IS_XATTR 0x02 /* create an extended attribute node */ + +extern int zfs_dirent_lock(zfs_dirlock_t **, znode_t *, char *, znode_t **, + int, int *, pathname_t *); +extern void zfs_dirent_unlock(zfs_dirlock_t *); +extern int zfs_link_create(zfs_dirlock_t *, znode_t *, dmu_tx_t *, int); +extern int zfs_link_destroy(zfs_dirlock_t *, znode_t *, dmu_tx_t *, int, + boolean_t *); +extern int zfs_dirlook(znode_t *, char *, struct inode **, int, int *, + pathname_t *); +extern void zfs_mknode(znode_t *, vattr_t *, dmu_tx_t *, cred_t *, + uint_t, znode_t **, zfs_acl_ids_t *); +extern void zfs_rmnode(znode_t *); +extern void zfs_dl_name_switch(zfs_dirlock_t *dl, char *new, char **old); +extern boolean_t zfs_dirempty(znode_t *); +extern void zfs_unlinked_add(znode_t *, dmu_tx_t *); +extern void zfs_unlinked_drain(zfs_sb_t *); +extern int zfs_sticky_remove_access(znode_t *, znode_t *, cred_t *cr); +extern int zfs_get_xattrdir(znode_t *, struct inode **, cred_t *, int); +extern int zfs_make_xattrdir(znode_t *, vattr_t *, struct inode **, cred_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_DIR_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_fuid.h +++ linux-4.4.0/zfs/include/sys/zfs_fuid.h @@ -0,0 +1,132 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_FS_ZFS_FUID_H +#define _SYS_FS_ZFS_FUID_H + +#ifdef _KERNEL +#include +#include +#include +#include +#endif +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ZFS_OWNER, + ZFS_GROUP, + ZFS_ACE_USER, + ZFS_ACE_GROUP +} zfs_fuid_type_t; + +/* + * Estimate space needed for one more fuid table entry. + * for now assume its current size + 1K + */ +#define FUID_SIZE_ESTIMATE(z) ((z)->z_fuid_size + (SPA_MINBLOCKSIZE << 1)) + +#define FUID_INDEX(x) ((x) >> 32) +#define FUID_RID(x) ((x) & 0xffffffff) +#define FUID_ENCODE(idx, rid) (((uint64_t)(idx) << 32) | (rid)) +/* + * FUIDs cause problems for the intent log + * we need to replay the creation of the FUID, + * but we can't count on the idmapper to be around + * and during replay the FUID index may be different than + * before. Also, if an ACL has 100 ACEs and 12 different + * domains we don't want to log 100 domain strings, but rather + * just the unique 12. + */ + +/* + * The FUIDs in the log will index into + * domain string table and the bottom half will be the rid. + * Used for mapping ephemeral uid/gid during ACL setting to FUIDs + */ +typedef struct zfs_fuid { + list_node_t z_next; + uint64_t z_id; /* uid/gid being converted to fuid */ + uint64_t z_domidx; /* index in AVL domain table */ + uint64_t z_logfuid; /* index for domain in log */ +} zfs_fuid_t; + +/* list of unique domains */ +typedef struct zfs_fuid_domain { + list_node_t z_next; + uint64_t z_domidx; /* AVL tree idx */ + const char *z_domain; /* domain string */ +} zfs_fuid_domain_t; + +/* + * FUID information necessary for logging create, setattr, and setacl. + */ +typedef struct zfs_fuid_info { + list_t z_fuids; + list_t z_domains; + uint64_t z_fuid_owner; + uint64_t z_fuid_group; + char **z_domain_table; /* Used during replay */ + uint32_t z_fuid_cnt; /* How many fuids in z_fuids */ + uint32_t z_domain_cnt; /* How many domains */ + size_t z_domain_str_sz; /* len of domain strings z_domain list */ +} zfs_fuid_info_t; + +#ifdef _KERNEL +struct znode; +extern uid_t zfs_fuid_map_id(zfs_sb_t *, uint64_t, cred_t *, zfs_fuid_type_t); +extern void zfs_fuid_node_add(zfs_fuid_info_t **, const char *, uint32_t, + uint64_t, uint64_t, zfs_fuid_type_t); +extern void zfs_fuid_destroy(zfs_sb_t *); +extern uint64_t zfs_fuid_create_cred(zfs_sb_t *, zfs_fuid_type_t, + cred_t *, zfs_fuid_info_t **); +extern uint64_t zfs_fuid_create(zfs_sb_t *, uint64_t, cred_t *, zfs_fuid_type_t, + zfs_fuid_info_t **); +extern void zfs_fuid_map_ids(struct znode *zp, cred_t *cr, + uid_t *uid, uid_t *gid); +extern zfs_fuid_info_t *zfs_fuid_info_alloc(void); +extern void zfs_fuid_info_free(zfs_fuid_info_t *); +extern boolean_t zfs_groupmember(zfs_sb_t *, uint64_t, cred_t *); +void zfs_fuid_sync(zfs_sb_t *, dmu_tx_t *); +extern int zfs_fuid_find_by_domain(zfs_sb_t *, const char *domain, + char **retdomain, boolean_t addok); +extern const char *zfs_fuid_find_by_idx(zfs_sb_t *zsb, uint32_t idx); +extern void zfs_fuid_txhold(zfs_sb_t *zsb, dmu_tx_t *tx); +#endif + +char *zfs_fuid_idx_domain(avl_tree_t *, uint32_t); +void zfs_fuid_avl_tree_create(avl_tree_t *, avl_tree_t *); +uint64_t zfs_fuid_table_load(objset_t *, uint64_t, avl_tree_t *, avl_tree_t *); +void zfs_fuid_table_destroy(avl_tree_t *, avl_tree_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_FUID_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_ioctl.h +++ linux-4.4.0/zfs/include/sys/zfs_ioctl.h @@ -0,0 +1,419 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _SYS_ZFS_IOCTL_H +#define _SYS_ZFS_IOCTL_H + +#include +#include +#include +#include +#include +#include + +#ifdef _KERNEL +#include +#endif /* _KERNEL */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The structures in this file are passed between userland and the + * kernel. Userland may be running a 32-bit process, while the kernel + * is 64-bit. Therefore, these structures need to compile the same in + * 32-bit and 64-bit. This means not using type "long", and adding + * explicit padding so that the 32-bit structure will not be packed more + * tightly than the 64-bit structure (which requires 64-bit alignment). + */ + +/* + * Property values for snapdir + */ +#define ZFS_SNAPDIR_HIDDEN 0 +#define ZFS_SNAPDIR_VISIBLE 1 + +/* + * Property values for snapdev + */ +#define ZFS_SNAPDEV_HIDDEN 0 +#define ZFS_SNAPDEV_VISIBLE 1 +/* + * Property values for acltype + */ +#define ZFS_ACLTYPE_OFF 0 +#define ZFS_ACLTYPE_POSIXACL 1 + +/* + * Field manipulation macros for the drr_versioninfo field of the + * send stream header. + */ + +/* + * Header types for zfs send streams. + */ +typedef enum drr_headertype { + DMU_SUBSTREAM = 0x1, + DMU_COMPOUNDSTREAM = 0x2 +} drr_headertype_t; + +#define DMU_GET_STREAM_HDRTYPE(vi) BF64_GET((vi), 0, 2) +#define DMU_SET_STREAM_HDRTYPE(vi, x) BF64_SET((vi), 0, 2, x) + +#define DMU_GET_FEATUREFLAGS(vi) BF64_GET((vi), 2, 30) +#define DMU_SET_FEATUREFLAGS(vi, x) BF64_SET((vi), 2, 30, x) + +/* + * Feature flags for zfs send streams (flags in drr_versioninfo) + */ + +#define DMU_BACKUP_FEATURE_DEDUP (1<<0) +#define DMU_BACKUP_FEATURE_DEDUPPROPS (1<<1) +#define DMU_BACKUP_FEATURE_SA_SPILL (1<<2) +/* flags #3 - #15 are reserved for incompatible closed-source implementations */ +#define DMU_BACKUP_FEATURE_EMBED_DATA (1<<16) +#define DMU_BACKUP_FEATURE_EMBED_DATA_LZ4 (1<<17) +/* flag #18 is reserved for a Delphix feature */ +#define DMU_BACKUP_FEATURE_LARGE_BLOCKS (1<<19) + +/* + * Mask of all supported backup features + */ +#define DMU_BACKUP_FEATURE_MASK (DMU_BACKUP_FEATURE_DEDUP | \ + DMU_BACKUP_FEATURE_DEDUPPROPS | DMU_BACKUP_FEATURE_SA_SPILL | \ + DMU_BACKUP_FEATURE_EMBED_DATA | DMU_BACKUP_FEATURE_EMBED_DATA_LZ4 | \ + DMU_BACKUP_FEATURE_LARGE_BLOCKS) + +/* Are all features in the given flag word currently supported? */ +#define DMU_STREAM_SUPPORTED(x) (!((x) & ~DMU_BACKUP_FEATURE_MASK)) + +/* + * The drr_versioninfo field of the dmu_replay_record has the + * following layout: + * + * 64 56 48 40 32 24 16 8 0 + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * | reserved | feature-flags |C|S| + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * + * The low order two bits indicate the header type: SUBSTREAM (0x1) + * or COMPOUNDSTREAM (0x2). Using two bits for this is historical: + * this field used to be a version number, where the two version types + * were 1 and 2. Using two bits for this allows earlier versions of + * the code to be able to recognize send streams that don't use any + * of the features indicated by feature flags. + */ + +#define DMU_BACKUP_MAGIC 0x2F5bacbacULL + +#define DRR_FLAG_CLONE (1<<0) +#define DRR_FLAG_CI_DATA (1<<1) + +/* + * flags in the drr_checksumflags field in the DRR_WRITE and + * DRR_WRITE_BYREF blocks + */ +#define DRR_CHECKSUM_DEDUP (1<<0) + +#define DRR_IS_DEDUP_CAPABLE(flags) ((flags) & DRR_CHECKSUM_DEDUP) + +/* + * zfs ioctl command structure + */ +typedef struct dmu_replay_record { + enum { + DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, + DRR_WRITE, DRR_FREE, DRR_END, DRR_WRITE_BYREF, + DRR_SPILL, DRR_WRITE_EMBEDDED, DRR_NUMTYPES + } drr_type; + uint32_t drr_payloadlen; + union { + struct drr_begin { + uint64_t drr_magic; + uint64_t drr_versioninfo; /* was drr_version */ + uint64_t drr_creation_time; + dmu_objset_type_t drr_type; + uint32_t drr_flags; + uint64_t drr_toguid; + uint64_t drr_fromguid; + char drr_toname[MAXNAMELEN]; + } drr_begin; + struct drr_end { + zio_cksum_t drr_checksum; + uint64_t drr_toguid; + } drr_end; + struct drr_object { + uint64_t drr_object; + dmu_object_type_t drr_type; + dmu_object_type_t drr_bonustype; + uint32_t drr_blksz; + uint32_t drr_bonuslen; + uint8_t drr_checksumtype; + uint8_t drr_compress; + uint8_t drr_pad[6]; + uint64_t drr_toguid; + /* bonus content follows */ + } drr_object; + struct drr_freeobjects { + uint64_t drr_firstobj; + uint64_t drr_numobjs; + uint64_t drr_toguid; + } drr_freeobjects; + struct drr_write { + uint64_t drr_object; + dmu_object_type_t drr_type; + uint32_t drr_pad; + uint64_t drr_offset; + uint64_t drr_length; + uint64_t drr_toguid; + uint8_t drr_checksumtype; + uint8_t drr_checksumflags; + uint8_t drr_pad2[6]; + ddt_key_t drr_key; /* deduplication key */ + /* content follows */ + } drr_write; + struct drr_free { + uint64_t drr_object; + uint64_t drr_offset; + uint64_t drr_length; + uint64_t drr_toguid; + } drr_free; + struct drr_write_byref { + /* where to put the data */ + uint64_t drr_object; + uint64_t drr_offset; + uint64_t drr_length; + uint64_t drr_toguid; + /* where to find the prior copy of the data */ + uint64_t drr_refguid; + uint64_t drr_refobject; + uint64_t drr_refoffset; + /* properties of the data */ + uint8_t drr_checksumtype; + uint8_t drr_checksumflags; + uint8_t drr_pad2[6]; + ddt_key_t drr_key; /* deduplication key */ + } drr_write_byref; + struct drr_spill { + uint64_t drr_object; + uint64_t drr_length; + uint64_t drr_toguid; + uint64_t drr_pad[4]; /* needed for crypto */ + /* spill data follows */ + } drr_spill; + struct drr_write_embedded { + uint64_t drr_object; + uint64_t drr_offset; + /* logical length, should equal blocksize */ + uint64_t drr_length; + uint64_t drr_toguid; + uint8_t drr_compression; + uint8_t drr_etype; + uint8_t drr_pad[6]; + uint32_t drr_lsize; /* uncompressed size of payload */ + uint32_t drr_psize; /* compr. (real) size of payload */ + /* (possibly compressed) content follows */ + } drr_write_embedded; + } drr_u; +} dmu_replay_record_t; + +/* diff record range types */ +typedef enum diff_type { + DDR_NONE = 0x1, + DDR_INUSE = 0x2, + DDR_FREE = 0x4 +} diff_type_t; + +/* + * The diff reports back ranges of free or in-use objects. + */ +typedef struct dmu_diff_record { + uint64_t ddr_type; + uint64_t ddr_first; + uint64_t ddr_last; +} dmu_diff_record_t; + +typedef struct zinject_record { + uint64_t zi_objset; + uint64_t zi_object; + uint64_t zi_start; + uint64_t zi_end; + uint64_t zi_guid; + uint32_t zi_level; + uint32_t zi_error; + uint64_t zi_type; + uint32_t zi_freq; + uint32_t zi_failfast; + char zi_func[MAXNAMELEN]; + uint32_t zi_iotype; + int32_t zi_duration; + uint64_t zi_timer; + uint32_t zi_cmd; + uint32_t zi_pad; +} zinject_record_t; + +#define ZINJECT_NULL 0x1 +#define ZINJECT_FLUSH_ARC 0x2 +#define ZINJECT_UNLOAD_SPA 0x4 + +#define ZEVENT_NONE 0x0 +#define ZEVENT_NONBLOCK 0x1 +#define ZEVENT_SIZE 1024 + +#define ZEVENT_SEEK_START 0 +#define ZEVENT_SEEK_END UINT64_MAX + +typedef enum zinject_type { + ZINJECT_UNINITIALIZED, + ZINJECT_DATA_FAULT, + ZINJECT_DEVICE_FAULT, + ZINJECT_LABEL_FAULT, + ZINJECT_IGNORED_WRITES, + ZINJECT_PANIC, + ZINJECT_DELAY_IO, +} zinject_type_t; + +typedef struct zfs_share { + uint64_t z_exportdata; + uint64_t z_sharedata; + uint64_t z_sharetype; /* 0 = share, 1 = unshare */ + uint64_t z_sharemax; /* max length of share string */ +} zfs_share_t; + +/* + * ZFS file systems may behave the usual, POSIX-compliant way, where + * name lookups are case-sensitive. They may also be set up so that + * all the name lookups are case-insensitive, or so that only some + * lookups, the ones that set an FIGNORECASE flag, are case-insensitive. + */ +typedef enum zfs_case { + ZFS_CASE_SENSITIVE, + ZFS_CASE_INSENSITIVE, + ZFS_CASE_MIXED +} zfs_case_t; + +typedef struct zfs_cmd { + char zc_name[MAXPATHLEN]; /* name of pool or dataset */ + uint64_t zc_nvlist_src; /* really (char *) */ + uint64_t zc_nvlist_src_size; + uint64_t zc_nvlist_dst; /* really (char *) */ + uint64_t zc_nvlist_dst_size; + boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ + int zc_pad2; + + /* + * The following members are for legacy ioctls which haven't been + * converted to the new method. + */ + uint64_t zc_history; /* really (char *) */ + char zc_value[MAXPATHLEN * 2]; + char zc_string[MAXNAMELEN]; + uint64_t zc_guid; + uint64_t zc_nvlist_conf; /* really (char *) */ + uint64_t zc_nvlist_conf_size; + uint64_t zc_cookie; + uint64_t zc_objset_type; + uint64_t zc_perm_action; + uint64_t zc_history_len; + uint64_t zc_history_offset; + uint64_t zc_obj; + uint64_t zc_iflags; /* internal to zfs(7fs) */ + zfs_share_t zc_share; + dmu_objset_stats_t zc_objset_stats; + struct drr_begin zc_begin_record; + zinject_record_t zc_inject_record; + uint32_t zc_defer_destroy; + uint32_t zc_flags; + uint64_t zc_action_handle; + int zc_cleanup_fd; + uint8_t zc_simple; + uint8_t zc_pad[3]; /* alignment */ + uint64_t zc_sendobj; + uint64_t zc_fromobj; + uint64_t zc_createtxg; + zfs_stat_t zc_stat; +} zfs_cmd_t; + +typedef struct zfs_useracct { + char zu_domain[256]; + uid_t zu_rid; + uint32_t zu_pad; + uint64_t zu_space; +} zfs_useracct_t; + +#define ZFSDEV_MAX_MINOR (1 << 16) +#define ZFS_MIN_MINOR (ZFSDEV_MAX_MINOR + 1) + +#define ZPOOL_EXPORT_AFTER_SPLIT 0x1 + +#ifdef _KERNEL + +typedef struct zfs_creat { + nvlist_t *zct_zplprops; + nvlist_t *zct_props; +} zfs_creat_t; + +extern int zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr); +extern int zfs_secpolicy_rename_perms(const char *from, + const char *to, cred_t *cr); +extern int zfs_secpolicy_destroy_perms(const char *name, cred_t *cr); +extern int zfs_unmount_snap(const char *); +extern void zfs_destroy_unmount_origin(const char *); + +extern boolean_t dataset_name_hidden(const char *name); + +enum zfsdev_state_type { + ZST_ONEXIT, + ZST_ZEVENT, + ZST_ALL, +}; + +/* + * The zfsdev_state_t structure is managed as a singly-linked list + * from which items are never deleted. This allows for lock-free + * reading of the list so long as assignments to the zs_next and + * reads from zs_minor are performed atomically. Empty items are + * indicated by storing -1 into zs_minor. + */ +typedef struct zfsdev_state { + struct zfsdev_state *zs_next; /* next zfsdev_state_t link */ + struct file *zs_file; /* associated file struct */ + minor_t zs_minor; /* made up minor number */ + void *zs_onexit; /* onexit data */ + void *zs_zevent; /* zevent data */ +} zfsdev_state_t; + +extern void *zfsdev_get_state(minor_t minor, enum zfsdev_state_type which); +extern int zfsdev_getminor(struct file *filp, minor_t *minorp); +extern minor_t zfsdev_minor_alloc(void); + +#endif /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZFS_IOCTL_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_onexit.h +++ linux-4.4.0/zfs/include/sys/zfs_onexit.h @@ -0,0 +1,66 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_ZFS_ONEXIT_H +#define _SYS_ZFS_ONEXIT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _KERNEL + +typedef struct zfs_onexit { + kmutex_t zo_lock; + list_t zo_actions; +} zfs_onexit_t; + +typedef struct zfs_onexit_action_node { + list_node_t za_link; + void (*za_func)(void *); + void *za_data; +} zfs_onexit_action_node_t; + +extern void zfs_onexit_init(zfs_onexit_t **zo); +extern void zfs_onexit_destroy(zfs_onexit_t *zo); + +#endif + +extern int zfs_onexit_fd_hold(int fd, minor_t *minorp); +extern void zfs_onexit_fd_rele(int fd); +extern int zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, + uint64_t *action_handle); +extern int zfs_onexit_del_cb(minor_t minor, uint64_t action_handle, + boolean_t fire); +extern int zfs_onexit_cb_data(minor_t minor, uint64_t action_handle, + void **data); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZFS_ONEXIT_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_rlock.h +++ linux-4.4.0/zfs/include/sys/zfs_rlock.h @@ -0,0 +1,87 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_FS_ZFS_RLOCK_H +#define _SYS_FS_ZFS_RLOCK_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _KERNEL + +#include + +typedef enum { + RL_READER, + RL_WRITER, + RL_APPEND +} rl_type_t; + +typedef struct rl { + znode_t *r_zp; /* znode this lock applies to */ + avl_node_t r_node; /* avl node link */ + uint64_t r_off; /* file range offset */ + uint64_t r_len; /* file range length */ + uint_t r_cnt; /* range reference count in tree */ + rl_type_t r_type; /* range type */ + kcondvar_t r_wr_cv; /* cv for waiting writers */ + kcondvar_t r_rd_cv; /* cv for waiting readers */ + uint8_t r_proxy; /* acting for original range */ + uint8_t r_write_wanted; /* writer wants to lock this range */ + uint8_t r_read_wanted; /* reader wants to lock this range */ + list_node_t rl_node; /* used for deferred release */ +} rl_t; + +/* + * Lock a range (offset, length) as either shared (RL_READER) + * or exclusive (RL_WRITER or RL_APPEND). RL_APPEND is a special type that + * is converted to RL_WRITER that specified to lock from the start of the + * end of file. Returns the range lock structure. + */ +rl_t *zfs_range_lock(znode_t *zp, uint64_t off, uint64_t len, rl_type_t type); + +/* Unlock range and destroy range lock structure. */ +void zfs_range_unlock(rl_t *rl); + +/* + * Reduce range locked as RW_WRITER from whole file to specified range. + * Asserts the whole file was previously locked. + */ +void zfs_range_reduce(rl_t *rl, uint64_t off, uint64_t len); + +/* + * AVL comparison function used to order range locks + * Locks are ordered on the start offset of the range. + */ +int zfs_range_compare(const void *arg1, const void *arg2); + +#endif /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_RLOCK_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_sa.h +++ linux-4.4.0/zfs/include/sys/zfs_sa.h @@ -0,0 +1,150 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_ZFS_SA_H +#define _SYS_ZFS_SA_H + +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#include + + +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This is the list of known attributes + * to the ZPL. The values of the actual + * attributes are not defined by the order + * the enums. It is controlled by the attribute + * registration mechanism. Two different file system + * could have different numeric values for the same + * attributes. this list is only used for dereferencing + * into the table that will hold the actual numeric value. + */ +typedef enum zpl_attr { + ZPL_ATIME, + ZPL_MTIME, + ZPL_CTIME, + ZPL_CRTIME, + ZPL_GEN, + ZPL_MODE, + ZPL_SIZE, + ZPL_PARENT, + ZPL_LINKS, + ZPL_XATTR, + ZPL_RDEV, + ZPL_FLAGS, + ZPL_UID, + ZPL_GID, + ZPL_PAD, + ZPL_ZNODE_ACL, + ZPL_DACL_COUNT, + ZPL_SYMLINK, + ZPL_SCANSTAMP, + ZPL_DACL_ACES, + ZPL_DXATTR, + ZPL_END +} zpl_attr_t; + +#define ZFS_OLD_ZNODE_PHYS_SIZE 0x108 +#define ZFS_SA_BASE_ATTR_SIZE (ZFS_OLD_ZNODE_PHYS_SIZE - \ + sizeof (zfs_acl_phys_t)) + +#define SA_MODE_OFFSET 0 +#define SA_SIZE_OFFSET 8 +#define SA_GEN_OFFSET 16 +#define SA_UID_OFFSET 24 +#define SA_GID_OFFSET 32 +#define SA_PARENT_OFFSET 40 + +extern sa_attr_reg_t zfs_attr_table[ZPL_END + 1]; +extern sa_attr_reg_t zfs_legacy_attr_table[ZPL_END + 1]; + +/* + * This is a deprecated data structure that only exists for + * dealing with file systems create prior to ZPL version 5. + */ +typedef struct znode_phys { + uint64_t zp_atime[2]; /* 0 - last file access time */ + uint64_t zp_mtime[2]; /* 16 - last file modification time */ + uint64_t zp_ctime[2]; /* 32 - last file change time */ + uint64_t zp_crtime[2]; /* 48 - creation time */ + uint64_t zp_gen; /* 64 - generation (txg of creation) */ + uint64_t zp_mode; /* 72 - file mode bits */ + uint64_t zp_size; /* 80 - size of file */ + uint64_t zp_parent; /* 88 - directory parent (`..') */ + uint64_t zp_links; /* 96 - number of links to file */ + uint64_t zp_xattr; /* 104 - DMU object for xattrs */ + uint64_t zp_rdev; /* 112 - dev_t for VBLK & VCHR files */ + uint64_t zp_flags; /* 120 - persistent flags */ + uint64_t zp_uid; /* 128 - file owner */ + uint64_t zp_gid; /* 136 - owning group */ + uint64_t zp_zap; /* 144 - extra attributes */ + uint64_t zp_pad[3]; /* 152 - future */ + zfs_acl_phys_t zp_acl; /* 176 - 263 ACL */ + /* + * Data may pad out any remaining bytes in the znode buffer, eg: + * + * |<---------------------- dnode_phys (512) ------------------------>| + * |<-- dnode (192) --->|<----------- "bonus" buffer (320) ---------->| + * |<---- znode (264) ---->|<---- data (56) ---->| + * + * At present, we use this space for the following: + * - symbolic links + * - 32-byte anti-virus scanstamp (regular files only) + */ +} znode_phys_t; + +#ifdef _KERNEL + +#define DXATTR_MAX_ENTRY_SIZE (32768) +#define DXATTR_MAX_SA_SIZE (SPA_OLD_MAXBLOCKSIZE >> 1) + +int zfs_sa_readlink(struct znode *, uio_t *); +void zfs_sa_symlink(struct znode *, char *link, int len, dmu_tx_t *); +void zfs_sa_get_scanstamp(struct znode *, xvattr_t *); +void zfs_sa_set_scanstamp(struct znode *, xvattr_t *, dmu_tx_t *); +int zfs_sa_get_xattr(struct znode *); +int zfs_sa_set_xattr(struct znode *); +void zfs_sa_upgrade(struct sa_handle *, dmu_tx_t *); +void zfs_sa_upgrade_txholds(dmu_tx_t *, struct znode *); +void zfs_sa_init(void); +void zfs_sa_fini(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZFS_SA_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_stat.h +++ linux-4.4.0/zfs/include/sys/zfs_stat.h @@ -0,0 +1,56 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FS_ZFS_STAT_H +#define _SYS_FS_ZFS_STAT_H + +#ifdef _KERNEL +#include +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A limited number of zpl level stats are retrievable + * with an ioctl. zfs diff is the current consumer. + */ +typedef struct zfs_stat { + uint64_t zs_gen; + uint64_t zs_mode; + uint64_t zs_links; + uint64_t zs_ctime[2]; +} zfs_stat_t; + +extern int zfs_obj_to_stats(objset_t *osp, uint64_t obj, zfs_stat_t *sb, + char *buf, int len); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_STAT_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_vfsops.h +++ linux-4.4.0/zfs/include/sys/zfs_vfsops.h @@ -0,0 +1,221 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FS_ZFS_VFSOPS_H +#define _SYS_FS_ZFS_VFSOPS_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct zfs_sb; +struct znode; + +typedef struct zfs_mntopts { + char *z_osname; /* Objset name */ + char *z_mntpoint; /* Primary mount point */ + uint64_t z_xattr; + boolean_t z_readonly; + boolean_t z_do_readonly; + boolean_t z_setuid; + boolean_t z_do_setuid; + boolean_t z_exec; + boolean_t z_do_exec; + boolean_t z_devices; + boolean_t z_do_devices; + boolean_t z_do_xattr; + boolean_t z_atime; + boolean_t z_do_atime; + boolean_t z_relatime; + boolean_t z_do_relatime; + boolean_t z_nbmand; + boolean_t z_do_nbmand; +} zfs_mntopts_t; + +typedef struct zfs_sb { + struct super_block *z_sb; /* generic super_block */ + struct backing_dev_info z_bdi; /* generic backing dev info */ + struct zfs_sb *z_parent; /* parent fs */ + objset_t *z_os; /* objset reference */ + zfs_mntopts_t *z_mntopts; /* passed mount options */ + uint64_t z_flags; /* super_block flags */ + uint64_t z_root; /* id of root znode */ + uint64_t z_unlinkedobj; /* id of unlinked zapobj */ + uint64_t z_max_blksz; /* maximum block size for files */ + uint64_t z_fuid_obj; /* fuid table object number */ + uint64_t z_fuid_size; /* fuid table size */ + avl_tree_t z_fuid_idx; /* fuid tree keyed by index */ + avl_tree_t z_fuid_domain; /* fuid tree keyed by domain */ + krwlock_t z_fuid_lock; /* fuid lock */ + boolean_t z_fuid_loaded; /* fuid tables are loaded */ + boolean_t z_fuid_dirty; /* need to sync fuid table ? */ + struct zfs_fuid_info *z_fuid_replay; /* fuid info for replay */ + zilog_t *z_log; /* intent log pointer */ + uint_t z_acl_inherit; /* acl inheritance behavior */ + uint_t z_acl_type; /* type of ACL usable on this FS */ + zfs_case_t z_case; /* case-sense */ + boolean_t z_utf8; /* utf8-only */ + int z_norm; /* normalization flags */ + boolean_t z_atime; /* enable atimes mount option */ + boolean_t z_relatime; /* enable relatime mount option */ + boolean_t z_unmounted; /* unmounted */ + rrmlock_t z_teardown_lock; + krwlock_t z_teardown_inactive_lock; + list_t z_all_znodes; /* all znodes in the fs */ + uint64_t z_nr_znodes; /* number of znodes in the fs */ + unsigned long z_rollback_time; /* last online rollback time */ + unsigned long z_snap_defer_time; /* last snapshot unmount deferal */ + kmutex_t z_znodes_lock; /* lock for z_all_znodes */ + arc_prune_t *z_arc_prune; /* called by ARC to prune caches */ + struct inode *z_ctldir; /* .zfs directory inode */ + boolean_t z_show_ctldir; /* expose .zfs in the root dir */ + boolean_t z_issnap; /* true if this is a snapshot */ + boolean_t z_vscan; /* virus scan on/off */ + boolean_t z_use_fuids; /* version allows fuids */ + boolean_t z_replay; /* set during ZIL replay */ + boolean_t z_use_sa; /* version allow system attributes */ + boolean_t z_xattr_sa; /* allow xattrs to be stores as SA */ + uint64_t z_version; /* ZPL version */ + uint64_t z_shares_dir; /* hidden shares dir */ + kmutex_t z_lock; + uint64_t z_userquota_obj; + uint64_t z_groupquota_obj; + uint64_t z_replay_eof; /* New end of file - replay only */ + sa_attr_type_t *z_attr_table; /* SA attr mapping->id */ +#define ZFS_OBJ_MTX_SZ 256 + kmutex_t *z_hold_mtx; /* znode hold locks */ +} zfs_sb_t; + +#define ZFS_SUPER_MAGIC 0x2fc12fc1 + +#define ZSB_XATTR 0x0001 /* Enable user xattrs */ + +/* + * Allow a maximum number of links. While ZFS does not internally limit + * this the inode->i_nlink member is defined as an unsigned int. To be + * safe we use 2^31-1 as the limit. + */ +#define ZFS_LINK_MAX ((1U << 31) - 1U) + +/* + * Normal filesystems (those not under .zfs/snapshot) have a total + * file ID size limited to 12 bytes (including the length field) due to + * NFSv2 protocol's limitation of 32 bytes for a filehandle. For historical + * reasons, this same limit is being imposed by the Solaris NFSv3 implementation + * (although the NFSv3 protocol actually permits a maximum of 64 bytes). It + * is not possible to expand beyond 12 bytes without abandoning support + * of NFSv2. + * + * For normal filesystems, we partition up the available space as follows: + * 2 bytes fid length (required) + * 6 bytes object number (48 bits) + * 4 bytes generation number (32 bits) + * + * We reserve only 48 bits for the object number, as this is the limit + * currently defined and imposed by the DMU. + */ +typedef struct zfid_short { + uint16_t zf_len; + uint8_t zf_object[6]; /* obj[i] = obj >> (8 * i) */ + uint8_t zf_gen[4]; /* gen[i] = gen >> (8 * i) */ +} zfid_short_t; + +/* + * Filesystems under .zfs/snapshot have a total file ID size of 22 bytes + * (including the length field). This makes files under .zfs/snapshot + * accessible by NFSv3 and NFSv4, but not NFSv2. + * + * For files under .zfs/snapshot, we partition up the available space + * as follows: + * 2 bytes fid length (required) + * 6 bytes object number (48 bits) + * 4 bytes generation number (32 bits) + * 6 bytes objset id (48 bits) + * 4 bytes currently just zero (32 bits) + * + * We reserve only 48 bits for the object number and objset id, as these are + * the limits currently defined and imposed by the DMU. + */ +typedef struct zfid_long { + zfid_short_t z_fid; + uint8_t zf_setid[6]; /* obj[i] = obj >> (8 * i) */ + uint8_t zf_setgen[4]; /* gen[i] = gen >> (8 * i) */ +} zfid_long_t; + +#define SHORT_FID_LEN (sizeof (zfid_short_t) - sizeof (uint16_t)) +#define LONG_FID_LEN (sizeof (zfid_long_t) - sizeof (uint16_t)) + +extern uint_t zfs_fsyncer_key; + +extern int zfs_suspend_fs(zfs_sb_t *zsb); +extern int zfs_resume_fs(zfs_sb_t *zsb, const char *osname); +extern int zfs_userspace_one(zfs_sb_t *zsb, zfs_userquota_prop_t type, + const char *domain, uint64_t rid, uint64_t *valuep); +extern int zfs_userspace_many(zfs_sb_t *zsb, zfs_userquota_prop_t type, + uint64_t *cookiep, void *vbuf, uint64_t *bufsizep); +extern int zfs_set_userquota(zfs_sb_t *zsb, zfs_userquota_prop_t type, + const char *domain, uint64_t rid, uint64_t quota); +extern boolean_t zfs_owner_overquota(zfs_sb_t *zsb, struct znode *, + boolean_t isgroup); +extern boolean_t zfs_fuid_overquota(zfs_sb_t *zsb, boolean_t isgroup, + uint64_t fuid); +extern int zfs_set_version(zfs_sb_t *zsb, uint64_t newvers); +extern int zfs_get_zplprop(objset_t *os, zfs_prop_t prop, + uint64_t *value); +extern zfs_mntopts_t *zfs_mntopts_alloc(void); +extern void zfs_mntopts_free(zfs_mntopts_t *zmo); +extern int zfs_sb_create(const char *name, zfs_mntopts_t *zmo, + zfs_sb_t **zsbp); +extern int zfs_sb_setup(zfs_sb_t *zsb, boolean_t mounting); +extern void zfs_sb_free(zfs_sb_t *zsb); +extern int zfs_sb_prune(struct super_block *sb, unsigned long nr_to_scan, + int *objects); +extern int zfs_sb_teardown(zfs_sb_t *zsb, boolean_t unmounting); +extern int zfs_check_global_label(const char *dsname, const char *hexsl); +extern boolean_t zfs_is_readonly(zfs_sb_t *zsb); + +extern int zfs_register_callbacks(zfs_sb_t *zsb); +extern void zfs_unregister_callbacks(zfs_sb_t *zsb); +extern int zfs_domount(struct super_block *sb, zfs_mntopts_t *zmo, int silent); +extern void zfs_preumount(struct super_block *sb); +extern int zfs_umount(struct super_block *sb); +extern int zfs_remount(struct super_block *sb, int *flags, zfs_mntopts_t *zmo); +extern int zfs_root(zfs_sb_t *zsb, struct inode **ipp); +extern int zfs_statvfs(struct dentry *dentry, struct kstatfs *statp); +extern int zfs_vget(struct super_block *sb, struct inode **ipp, fid_t *fidp); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_VFSOPS_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_vnops.h +++ linux-4.4.0/zfs/include/sys/zfs_vnops.h @@ -0,0 +1,88 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_FS_ZFS_VNOPS_H +#define _SYS_FS_ZFS_VNOPS_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern int zfs_open(struct inode *ip, int mode, int flag, cred_t *cr); +extern int zfs_close(struct inode *ip, int flag, cred_t *cr); +extern int zfs_holey(struct inode *ip, int cmd, loff_t *off); +extern int zfs_read(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr); +extern int zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr); +extern int zfs_access(struct inode *ip, int mode, int flag, cred_t *cr); +extern int zfs_lookup(struct inode *dip, char *nm, struct inode **ipp, + int flags, cred_t *cr, int *direntflags, pathname_t *realpnp); +extern int zfs_create(struct inode *dip, char *name, vattr_t *vap, int excl, + int mode, struct inode **ipp, cred_t *cr, int flag, vsecattr_t *vsecp); +extern int zfs_remove(struct inode *dip, char *name, cred_t *cr); +extern int zfs_mkdir(struct inode *dip, char *dirname, vattr_t *vap, + struct inode **ipp, cred_t *cr, int flags, vsecattr_t *vsecp); +extern int zfs_rmdir(struct inode *dip, char *name, struct inode *cwd, + cred_t *cr, int flags); +extern int zfs_readdir(struct inode *ip, struct dir_context *ctx, cred_t *cr); +extern int zfs_fsync(struct inode *ip, int syncflag, cred_t *cr); +extern int zfs_getattr(struct inode *ip, vattr_t *vap, int flag, cred_t *cr); +extern int zfs_getattr_fast(struct inode *ip, struct kstat *sp); +extern int zfs_setattr(struct inode *ip, vattr_t *vap, int flag, cred_t *cr); +extern int zfs_rename(struct inode *sdip, char *snm, struct inode *tdip, + char *tnm, cred_t *cr, int flags); +extern int zfs_symlink(struct inode *dip, char *name, vattr_t *vap, + char *link, struct inode **ipp, cred_t *cr, int flags); +extern int zfs_follow_link(struct dentry *dentry, struct nameidata *nd); +extern int zfs_readlink(struct inode *ip, uio_t *uio, cred_t *cr); +extern int zfs_link(struct inode *tdip, struct inode *sip, + char *name, cred_t *cr); +extern void zfs_inactive(struct inode *ip); +extern int zfs_space(struct inode *ip, int cmd, flock64_t *bfp, int flag, + offset_t offset, cred_t *cr); +extern int zfs_fid(struct inode *ip, fid_t *fidp); +extern int zfs_getsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, + cred_t *cr); +extern int zfs_setsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, + cred_t *cr); +extern int zfs_getpage(struct inode *ip, struct page *pl[], int nr_pages); +extern int zfs_putpage(struct inode *ip, struct page *pp, + struct writeback_control *wbc); +extern int zfs_dirty_inode(struct inode *ip, int flags); +extern int zfs_map(struct inode *ip, offset_t off, caddr_t *addrp, + size_t len, unsigned long vm_flags); +extern void zfs_iput_async(struct inode *ip); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_VNOPS_H */ --- linux-4.4.0.orig/zfs/include/sys/zfs_znode.h +++ linux-4.4.0/zfs/include/sys/zfs_znode.h @@ -0,0 +1,383 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#ifndef _SYS_FS_ZFS_ZNODE_H +#define _SYS_FS_ZFS_ZNODE_H + +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Additional file level attributes, that are stored + * in the upper half of zp_flags + */ +#define ZFS_READONLY 0x0000000100000000ull +#define ZFS_HIDDEN 0x0000000200000000ull +#define ZFS_SYSTEM 0x0000000400000000ull +#define ZFS_ARCHIVE 0x0000000800000000ull +#define ZFS_IMMUTABLE 0x0000001000000000ull +#define ZFS_NOUNLINK 0x0000002000000000ull +#define ZFS_APPENDONLY 0x0000004000000000ull +#define ZFS_NODUMP 0x0000008000000000ull +#define ZFS_OPAQUE 0x0000010000000000ull +#define ZFS_AV_QUARANTINED 0x0000020000000000ull +#define ZFS_AV_MODIFIED 0x0000040000000000ull +#define ZFS_REPARSE 0x0000080000000000ull +#define ZFS_OFFLINE 0x0000100000000000ull +#define ZFS_SPARSE 0x0000200000000000ull + +#define ZFS_ATTR_SET(zp, attr, value, pflags, tx) \ +{ \ + if (value) \ + pflags |= attr; \ + else \ + pflags &= ~attr; \ + VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_FLAGS(ZTOZSB(zp)), \ + &pflags, sizeof (pflags), tx)); \ +} + +/* + * Define special zfs pflags + */ +#define ZFS_XATTR 0x1 /* is an extended attribute */ +#define ZFS_INHERIT_ACE 0x2 /* ace has inheritable ACEs */ +#define ZFS_ACL_TRIVIAL 0x4 /* files ACL is trivial */ +#define ZFS_ACL_OBJ_ACE 0x8 /* ACL has CMPLX Object ACE */ +#define ZFS_ACL_PROTECTED 0x10 /* ACL protected */ +#define ZFS_ACL_DEFAULTED 0x20 /* ACL should be defaulted */ +#define ZFS_ACL_AUTO_INHERIT 0x40 /* ACL should be inherited */ +#define ZFS_BONUS_SCANSTAMP 0x80 /* Scanstamp in bonus area */ +#define ZFS_NO_EXECS_DENIED 0x100 /* exec was given to everyone */ + +#define SA_ZPL_ATIME(z) z->z_attr_table[ZPL_ATIME] +#define SA_ZPL_MTIME(z) z->z_attr_table[ZPL_MTIME] +#define SA_ZPL_CTIME(z) z->z_attr_table[ZPL_CTIME] +#define SA_ZPL_CRTIME(z) z->z_attr_table[ZPL_CRTIME] +#define SA_ZPL_GEN(z) z->z_attr_table[ZPL_GEN] +#define SA_ZPL_DACL_ACES(z) z->z_attr_table[ZPL_DACL_ACES] +#define SA_ZPL_XATTR(z) z->z_attr_table[ZPL_XATTR] +#define SA_ZPL_SYMLINK(z) z->z_attr_table[ZPL_SYMLINK] +#define SA_ZPL_RDEV(z) z->z_attr_table[ZPL_RDEV] +#define SA_ZPL_SCANSTAMP(z) z->z_attr_table[ZPL_SCANSTAMP] +#define SA_ZPL_UID(z) z->z_attr_table[ZPL_UID] +#define SA_ZPL_GID(z) z->z_attr_table[ZPL_GID] +#define SA_ZPL_PARENT(z) z->z_attr_table[ZPL_PARENT] +#define SA_ZPL_LINKS(z) z->z_attr_table[ZPL_LINKS] +#define SA_ZPL_MODE(z) z->z_attr_table[ZPL_MODE] +#define SA_ZPL_DACL_COUNT(z) z->z_attr_table[ZPL_DACL_COUNT] +#define SA_ZPL_FLAGS(z) z->z_attr_table[ZPL_FLAGS] +#define SA_ZPL_SIZE(z) z->z_attr_table[ZPL_SIZE] +#define SA_ZPL_ZNODE_ACL(z) z->z_attr_table[ZPL_ZNODE_ACL] +#define SA_ZPL_DXATTR(z) z->z_attr_table[ZPL_DXATTR] +#define SA_ZPL_PAD(z) z->z_attr_table[ZPL_PAD] + +/* + * Is ID ephemeral? + */ +#define IS_EPHEMERAL(x) (x > MAXUID) + +/* + * Should we use FUIDs? + */ +#define USE_FUIDS(version, os) (version >= ZPL_VERSION_FUID && \ + spa_version(dmu_objset_spa(os)) >= SPA_VERSION_FUID) +#define USE_SA(version, os) (version >= ZPL_VERSION_SA && \ + spa_version(dmu_objset_spa(os)) >= SPA_VERSION_SA) + +#define MASTER_NODE_OBJ 1 + +/* + * Special attributes for master node. + * "userquota@" and "groupquota@" are also valid (from + * zfs_userquota_prop_prefixes[]). + */ +#define ZFS_FSID "FSID" +#define ZFS_UNLINKED_SET "DELETE_QUEUE" +#define ZFS_ROOT_OBJ "ROOT" +#define ZPL_VERSION_STR "VERSION" +#define ZFS_FUID_TABLES "FUID" +#define ZFS_SHARES_DIR "SHARES" +#define ZFS_SA_ATTRS "SA_ATTRS" + +/* + * Path component length + * + * The generic fs code uses MAXNAMELEN to represent + * what the largest component length is. Unfortunately, + * this length includes the terminating NULL. ZFS needs + * to tell the users via pathconf() and statvfs() what the + * true maximum length of a component is, excluding the NULL. + */ +#define ZFS_MAXNAMELEN (MAXNAMELEN - 1) + +/* + * Convert mode bits (zp_mode) to BSD-style DT_* values for storing in + * the directory entries. On Linux systems this value is already + * defined correctly as part of the /usr/include/dirent.h header file. + */ +#ifndef IFTODT +#define IFTODT(mode) (((mode) & S_IFMT) >> 12) +#endif + +/* + * The directory entry has the type (currently unused on Solaris) in the + * top 4 bits, and the object number in the low 48 bits. The "middle" + * 12 bits are unused. + */ +#define ZFS_DIRENT_TYPE(de) BF64_GET(de, 60, 4) +#define ZFS_DIRENT_OBJ(de) BF64_GET(de, 0, 48) + +/* + * Directory entry locks control access to directory entries. + * They are used to protect creates, deletes, and renames. + * Each directory znode has a mutex and a list of locked names. + */ +#ifdef _KERNEL +typedef struct zfs_dirlock { + char *dl_name; /* directory entry being locked */ + uint32_t dl_sharecnt; /* 0 if exclusive, > 0 if shared */ + uint8_t dl_namelock; /* 1 if z_name_lock is NOT held */ + uint16_t dl_namesize; /* set if dl_name was allocated */ + kcondvar_t dl_cv; /* wait for entry to be unlocked */ + struct znode *dl_dzp; /* directory znode */ + struct zfs_dirlock *dl_next; /* next in z_dirlocks list */ +} zfs_dirlock_t; + +typedef struct znode { + uint64_t z_id; /* object ID for this znode */ + kmutex_t z_lock; /* znode modification lock */ + krwlock_t z_parent_lock; /* parent lock for directories */ + krwlock_t z_name_lock; /* "master" lock for dirent locks */ + zfs_dirlock_t *z_dirlocks; /* directory entry lock list */ + kmutex_t z_range_lock; /* protects changes to z_range_avl */ + avl_tree_t z_range_avl; /* avl tree of file range locks */ + uint8_t z_unlinked; /* file has been unlinked */ + uint8_t z_atime_dirty; /* atime needs to be synced */ + uint8_t z_zn_prefetch; /* Prefetch znodes? */ + uint8_t z_moved; /* Has this znode been moved? */ + uint_t z_blksz; /* block size in bytes */ + uint_t z_seq; /* modification sequence number */ + uint64_t z_mapcnt; /* number of pages mapped to file */ + uint64_t z_gen; /* generation (cached) */ + uint64_t z_size; /* file size (cached) */ + uint64_t z_atime[2]; /* atime (cached) */ + uint64_t z_links; /* file links (cached) */ + uint64_t z_pflags; /* pflags (cached) */ + uint64_t z_uid; /* uid fuid (cached) */ + uint64_t z_gid; /* gid fuid (cached) */ + uint32_t z_sync_cnt; /* synchronous open count */ + mode_t z_mode; /* mode (cached) */ + kmutex_t z_acl_lock; /* acl data lock */ + zfs_acl_t *z_acl_cached; /* cached acl */ + krwlock_t z_xattr_lock; /* xattr data lock */ + nvlist_t *z_xattr_cached; /* cached xattrs */ + struct znode *z_xattr_parent; /* xattr parent znode */ + list_node_t z_link_node; /* all znodes in fs link */ + sa_handle_t *z_sa_hdl; /* handle to sa data */ + boolean_t z_is_sa; /* are we native sa? */ + boolean_t z_is_zvol; /* are we used by the zvol */ + boolean_t z_is_mapped; /* are we mmap'ed */ + boolean_t z_is_ctldir; /* are we .zfs entry */ + boolean_t z_is_stale; /* are we stale due to rollback? */ + struct inode z_inode; /* generic vfs inode */ +} znode_t; + + +/* + * Range locking rules + * -------------------- + * 1. When truncating a file (zfs_create, zfs_setattr, zfs_space) the whole + * file range needs to be locked as RL_WRITER. Only then can the pages be + * freed etc and zp_size reset. zp_size must be set within range lock. + * 2. For writes and punching holes (zfs_write & zfs_space) just the range + * being written or freed needs to be locked as RL_WRITER. + * Multiple writes at the end of the file must coordinate zp_size updates + * to ensure data isn't lost. A compare and swap loop is currently used + * to ensure the file size is at least the offset last written. + * 3. For reads (zfs_read, zfs_get_data & zfs_putapage) just the range being + * read needs to be locked as RL_READER. A check against zp_size can then + * be made for reading beyond end of file. + */ + +/* + * Convert between znode pointers and inode pointers + */ +#define ZTOI(znode) (&((znode)->z_inode)) +#define ITOZ(inode) (container_of((inode), znode_t, z_inode)) +#define ZTOZSB(znode) ((zfs_sb_t *)(ZTOI(znode)->i_sb->s_fs_info)) +#define ITOZSB(inode) ((zfs_sb_t *)((inode)->i_sb->s_fs_info)) + +#define S_ISDEV(mode) (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode)) + +/* Called on entry to each ZFS vnode and vfs operation */ +#define ZFS_ENTER(zsb) \ + { \ + rrm_enter_read(&(zsb)->z_teardown_lock, FTAG); \ + if ((zsb)->z_unmounted) { \ + ZFS_EXIT(zsb); \ + return (EIO); \ + } \ + } + +/* Must be called before exiting the vop */ +#define ZFS_EXIT(zsb) \ + { \ + rrm_exit(&(zsb)->z_teardown_lock, FTAG); \ + } + +/* Verifies the znode is valid */ +#define ZFS_VERIFY_ZP(zp) \ + if ((zp)->z_sa_hdl == NULL) { \ + ZFS_EXIT(ZTOZSB(zp)); \ + return (EIO); \ + } + +/* + * Macros for dealing with dmu_buf_hold + */ +#define ZFS_OBJ_HASH(obj_num) ((obj_num) & (ZFS_OBJ_MTX_SZ - 1)) +#define ZFS_OBJ_MUTEX(zsb, obj_num) \ + (&(zsb)->z_hold_mtx[ZFS_OBJ_HASH(obj_num)]) +#define ZFS_OBJ_HOLD_ENTER(zsb, obj_num) \ + mutex_enter(ZFS_OBJ_MUTEX((zsb), (obj_num))) +#define ZFS_OBJ_HOLD_TRYENTER(zsb, obj_num) \ + mutex_tryenter(ZFS_OBJ_MUTEX((zsb), (obj_num))) +#define ZFS_OBJ_HOLD_EXIT(zsb, obj_num) \ + mutex_exit(ZFS_OBJ_MUTEX((zsb), (obj_num))) +#define ZFS_OBJ_HOLD_OWNED(zsb, obj_num) \ + mutex_owned(ZFS_OBJ_MUTEX((zsb), (obj_num))) + +/* Encode ZFS stored time values from a struct timespec */ +#define ZFS_TIME_ENCODE(tp, stmp) \ +{ \ + (stmp)[0] = (uint64_t)(tp)->tv_sec; \ + (stmp)[1] = (uint64_t)(tp)->tv_nsec; \ +} + +/* Decode ZFS stored time values to a struct timespec */ +#define ZFS_TIME_DECODE(tp, stmp) \ +{ \ + (tp)->tv_sec = (time_t)(stmp)[0]; \ + (tp)->tv_nsec = (long)(stmp)[1]; \ +} + +/* + * Timestamp defines + */ +#define ACCESSED (ATTR_ATIME) +#define STATE_CHANGED (ATTR_CTIME) +#define CONTENT_MODIFIED (ATTR_MTIME | ATTR_CTIME) + +#define ZFS_ACCESSTIME_STAMP(zsb, zp) \ + if ((zsb)->z_atime && !(zfs_is_readonly(zsb))) \ + zfs_tstamp_update_setup(zp, ACCESSED, NULL, NULL, B_FALSE); + +extern int zfs_init_fs(zfs_sb_t *, znode_t **); +extern void zfs_set_dataprop(objset_t *); +extern void zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *, + dmu_tx_t *tx); +extern void zfs_tstamp_update_setup(znode_t *, uint_t, uint64_t [2], + uint64_t [2], boolean_t); +extern void zfs_grow_blocksize(znode_t *, uint64_t, dmu_tx_t *); +extern int zfs_freesp(znode_t *, uint64_t, uint64_t, int, boolean_t); +extern void zfs_znode_init(void); +extern void zfs_znode_fini(void); +extern int zfs_zget(zfs_sb_t *, uint64_t, znode_t **); +extern int zfs_rezget(znode_t *); +extern void zfs_zinactive(znode_t *); +extern void zfs_znode_delete(znode_t *, dmu_tx_t *); +extern void zfs_remove_op_tables(void); +extern int zfs_create_op_tables(void); +extern int zfs_sync(struct super_block *, int, cred_t *); +extern dev_t zfs_cmpldev(uint64_t); +extern int zfs_get_zplprop(objset_t *os, zfs_prop_t prop, uint64_t *value); +extern int zfs_get_stats(objset_t *os, nvlist_t *nv); +extern void zfs_znode_dmu_fini(znode_t *); +extern int zfs_inode_alloc(struct super_block *, struct inode **ip); +extern void zfs_inode_destroy(struct inode *); +extern void zfs_inode_update(znode_t *); +extern void zfs_mark_inode_dirty(struct inode *); + +extern void zfs_log_create(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name, vsecattr_t *, zfs_fuid_info_t *, + vattr_t *vap); +extern int zfs_log_create_txtype(zil_create_t, vsecattr_t *vsecp, + vattr_t *vap); +extern void zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, char *name, uint64_t foid); +#define ZFS_NO_OBJECT 0 /* no object id */ +extern void zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name); +extern void zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name, char *link); +extern void zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *sdzp, char *sname, znode_t *tdzp, char *dname, znode_t *szp); +extern void zfs_log_write(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, offset_t off, ssize_t len, int ioflag, + zil_callback_t callback, void *callback_data); +extern void zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, uint64_t off, uint64_t len); +extern void zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, vattr_t *vap, uint_t mask_applied, zfs_fuid_info_t *fuidp); +extern void zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp, + vsecattr_t *vsecp, zfs_fuid_info_t *fuidp); +extern void zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx); +extern void zfs_upgrade(zfs_sb_t *zsb, dmu_tx_t *tx); +extern int zfs_create_share_dir(zfs_sb_t *zsb, dmu_tx_t *tx); + +#if defined(HAVE_UIO_RW) +extern caddr_t zfs_map_page(page_t *, enum seg_rw); +extern void zfs_unmap_page(page_t *, caddr_t); +#endif /* HAVE_UIO_RW */ + +extern zil_get_data_t zfs_get_data; +extern zil_replay_func_t zfs_replay_vector[TX_MAX_TYPE]; +extern int zfsfstype; + +#endif /* _KERNEL */ + +extern int zfs_obj_to_path(objset_t *osp, uint64_t obj, char *buf, int len); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_FS_ZFS_ZNODE_H */ --- linux-4.4.0.orig/zfs/include/sys/zil.h +++ linux-4.4.0/zfs/include/sys/zil.h @@ -0,0 +1,495 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#ifndef _SYS_ZIL_H +#define _SYS_ZIL_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct dsl_pool; +struct dsl_dataset; + +/* + * Intent log format: + * + * Each objset has its own intent log. The log header (zil_header_t) + * for objset N's intent log is kept in the Nth object of the SPA's + * intent_log objset. The log header points to a chain of log blocks, + * each of which contains log records (i.e., transactions) followed by + * a log block trailer (zil_trailer_t). The format of a log record + * depends on the record (or transaction) type, but all records begin + * with a common structure that defines the type, length, and txg. + */ + +/* + * Intent log header - this on disk structure holds fields to manage + * the log. All fields are 64 bit to easily handle cross architectures. + */ +typedef struct zil_header { + uint64_t zh_claim_txg; /* txg in which log blocks were claimed */ + uint64_t zh_replay_seq; /* highest replayed sequence number */ + blkptr_t zh_log; /* log chain */ + uint64_t zh_claim_blk_seq; /* highest claimed block sequence number */ + uint64_t zh_flags; /* header flags */ + uint64_t zh_claim_lr_seq; /* highest claimed lr sequence number */ + uint64_t zh_pad[3]; +} zil_header_t; + +/* + * zh_flags bit settings + */ +#define ZIL_REPLAY_NEEDED 0x1 /* replay needed - internal only */ +#define ZIL_CLAIM_LR_SEQ_VALID 0x2 /* zh_claim_lr_seq field is valid */ + +/* + * Log block chaining. + * + * Log blocks are chained together. Originally they were chained at the + * end of the block. For performance reasons the chain was moved to the + * beginning of the block which allows writes for only the data being used. + * The older position is supported for backwards compatability. + * + * The zio_eck_t contains a zec_cksum which for the intent log is + * the sequence number of this log block. A seq of 0 is invalid. + * The zec_cksum is checked by the SPA against the sequence + * number passed in the blk_cksum field of the blkptr_t + */ +typedef struct zil_chain { + uint64_t zc_pad; + blkptr_t zc_next_blk; /* next block in chain */ + uint64_t zc_nused; /* bytes in log block used */ + zio_eck_t zc_eck; /* block trailer */ +} zil_chain_t; + +#define ZIL_MIN_BLKSZ 4096ULL + +/* + * The words of a log block checksum. + */ +#define ZIL_ZC_GUID_0 0 +#define ZIL_ZC_GUID_1 1 +#define ZIL_ZC_OBJSET 2 +#define ZIL_ZC_SEQ 3 + +typedef enum zil_create { + Z_FILE, + Z_DIR, + Z_XATTRDIR, +} zil_create_t; + +/* + * size of xvattr log section. + * its composed of lr_attr_t + xvattr bitmap + 2 64 bit timestamps + * for create time and a single 64 bit integer for all of the attributes, + * and 4 64 bit integers (32 bytes) for the scanstamp. + * + */ + +#define ZIL_XVAT_SIZE(mapsize) \ + sizeof (lr_attr_t) + (sizeof (uint32_t) * (mapsize - 1)) + \ + (sizeof (uint64_t) * 7) + +/* + * Size of ACL in log. The ACE data is padded out to properly align + * on 8 byte boundary. + */ + +#define ZIL_ACE_LENGTH(x) (roundup(x, sizeof (uint64_t))) + +/* + * Intent log transaction types and record structures + */ +#define TX_CREATE 1 /* Create file */ +#define TX_MKDIR 2 /* Make directory */ +#define TX_MKXATTR 3 /* Make XATTR directory */ +#define TX_SYMLINK 4 /* Create symbolic link to a file */ +#define TX_REMOVE 5 /* Remove file */ +#define TX_RMDIR 6 /* Remove directory */ +#define TX_LINK 7 /* Create hard link to a file */ +#define TX_RENAME 8 /* Rename a file */ +#define TX_WRITE 9 /* File write */ +#define TX_TRUNCATE 10 /* Truncate a file */ +#define TX_SETATTR 11 /* Set file attributes */ +#define TX_ACL_V0 12 /* Set old formatted ACL */ +#define TX_ACL 13 /* Set ACL */ +#define TX_CREATE_ACL 14 /* create with ACL */ +#define TX_CREATE_ATTR 15 /* create + attrs */ +#define TX_CREATE_ACL_ATTR 16 /* create with ACL + attrs */ +#define TX_MKDIR_ACL 17 /* mkdir with ACL */ +#define TX_MKDIR_ATTR 18 /* mkdir with attr */ +#define TX_MKDIR_ACL_ATTR 19 /* mkdir with ACL + attrs */ +#define TX_WRITE2 20 /* dmu_sync EALREADY write */ +#define TX_MAX_TYPE 21 /* Max transaction type */ + +/* + * The transactions for mkdir, symlink, remove, rmdir, link, and rename + * may have the following bit set, indicating the original request + * specified case-insensitive handling of names. + */ +#define TX_CI ((uint64_t)0x1 << 63) /* case-insensitive behavior requested */ + +/* + * Transactions for write, truncate, setattr, acl_v0, and acl can be logged + * out of order. For convenience in the code, all such records must have + * lr_foid at the same offset. + */ +#define TX_OOO(txtype) \ + ((txtype) == TX_WRITE || \ + (txtype) == TX_TRUNCATE || \ + (txtype) == TX_SETATTR || \ + (txtype) == TX_ACL_V0 || \ + (txtype) == TX_ACL || \ + (txtype) == TX_WRITE2) + +/* + * Format of log records. + * The fields are carefully defined to allow them to be aligned + * and sized the same on sparc & intel architectures. + * Each log record has a common structure at the beginning. + * + * The log record on disk (lrc_seq) holds the sequence number of all log + * records which is used to ensure we don't replay the same record. + */ +typedef struct { /* common log record header */ + uint64_t lrc_txtype; /* intent log transaction type */ + uint64_t lrc_reclen; /* transaction record length */ + uint64_t lrc_txg; /* dmu transaction group number */ + uint64_t lrc_seq; /* see comment above */ +} lr_t; + +/* + * Common start of all out-of-order record types (TX_OOO() above). + */ +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* object id */ +} lr_ooo_t; + +/* + * Handle option extended vattr attributes. + * + * Whenever new attributes are added the version number + * will need to be updated as will code in + * zfs_log.c and zfs_replay.c + */ +typedef struct { + uint32_t lr_attr_masksize; /* number of elements in array */ + uint32_t lr_attr_bitmap; /* First entry of array */ + /* remainder of array and any additional fields */ +} lr_attr_t; + +/* + * log record for creates without optional ACL. + * This log record does support optional xvattr_t attributes. + */ +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_doid; /* object id of directory */ + uint64_t lr_foid; /* object id of created file object */ + uint64_t lr_mode; /* mode of object */ + uint64_t lr_uid; /* uid of object */ + uint64_t lr_gid; /* gid of object */ + uint64_t lr_gen; /* generation (txg of creation) */ + uint64_t lr_crtime[2]; /* creation time */ + uint64_t lr_rdev; /* rdev of object to create */ + /* name of object to create follows this */ + /* for symlinks, link content follows name */ + /* for creates with xvattr data, the name follows the xvattr info */ +} lr_create_t; + +/* + * FUID ACL record will be an array of ACEs from the original ACL. + * If this array includes ephemeral IDs, the record will also include + * an array of log-specific FUIDs to replace the ephemeral IDs. + * Only one copy of each unique domain will be present, so the log-specific + * FUIDs will use an index into a compressed domain table. On replay this + * information will be used to construct real FUIDs (and bypass idmap, + * since it may not be available). + */ + +/* + * Log record for creates with optional ACL + * This log record is also used for recording any FUID + * information needed for replaying the create. If the + * file doesn't have any actual ACEs then the lr_aclcnt + * would be zero. + * + * After lr_acl_flags, there are a lr_acl_bytes number of variable sized ace's. + * If create is also setting xvattr's, then acl data follows xvattr. + * If ACE FUIDs are needed then they will follow the xvattr_t. Following + * the FUIDs will be the domain table information. The FUIDs for the owner + * and group will be in lr_create. Name follows ACL data. + */ +typedef struct { + lr_create_t lr_create; /* common create portion */ + uint64_t lr_aclcnt; /* number of ACEs in ACL */ + uint64_t lr_domcnt; /* number of unique domains */ + uint64_t lr_fuidcnt; /* number of real fuids */ + uint64_t lr_acl_bytes; /* number of bytes in ACL */ + uint64_t lr_acl_flags; /* ACL flags */ +} lr_acl_create_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_doid; /* obj id of directory */ + /* name of object to remove follows this */ +} lr_remove_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_doid; /* obj id of directory */ + uint64_t lr_link_obj; /* obj id of link */ + /* name of object to link follows this */ +} lr_link_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_sdoid; /* obj id of source directory */ + uint64_t lr_tdoid; /* obj id of target directory */ + /* 2 strings: names of source and destination follow this */ +} lr_rename_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* file object to write */ + uint64_t lr_offset; /* offset to write to */ + uint64_t lr_length; /* user data length to write */ + uint64_t lr_blkoff; /* no longer used */ + blkptr_t lr_blkptr; /* spa block pointer for replay */ + /* write data will follow for small writes */ +} lr_write_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* object id of file to truncate */ + uint64_t lr_offset; /* offset to truncate from */ + uint64_t lr_length; /* length to truncate */ +} lr_truncate_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* file object to change attributes */ + uint64_t lr_mask; /* mask of attributes to set */ + uint64_t lr_mode; /* mode to set */ + uint64_t lr_uid; /* uid to set */ + uint64_t lr_gid; /* gid to set */ + uint64_t lr_size; /* size to set */ + uint64_t lr_atime[2]; /* access time */ + uint64_t lr_mtime[2]; /* modification time */ + /* optional attribute lr_attr_t may be here */ +} lr_setattr_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* obj id of file */ + uint64_t lr_aclcnt; /* number of acl entries */ + /* lr_aclcnt number of ace_t entries follow this */ +} lr_acl_v0_t; + +typedef struct { + lr_t lr_common; /* common portion of log record */ + uint64_t lr_foid; /* obj id of file */ + uint64_t lr_aclcnt; /* number of ACEs in ACL */ + uint64_t lr_domcnt; /* number of unique domains */ + uint64_t lr_fuidcnt; /* number of real fuids */ + uint64_t lr_acl_bytes; /* number of bytes in ACL */ + uint64_t lr_acl_flags; /* ACL flags */ + /* lr_acl_bytes number of variable sized ace's follows */ +} lr_acl_t; + +/* + * ZIL structure definitions, interface function prototype and globals. + */ + +/* + * Writes are handled in three different ways: + * + * WR_INDIRECT: + * In this mode, if we need to commit the write later, then the block + * is immediately written into the file system (using dmu_sync), + * and a pointer to the block is put into the log record. + * When the txg commits the block is linked in. + * This saves additionally writing the data into the log record. + * There are a few requirements for this to occur: + * - write is greater than zfs/zvol_immediate_write_sz + * - not using slogs (as slogs are assumed to always be faster + * than writing into the main pool) + * - the write occupies only one block + * WR_COPIED: + * If we know we'll immediately be committing the + * transaction (FSYNC or FDSYNC), the we allocate a larger + * log record here for the data and copy the data in. + * WR_NEED_COPY: + * Otherwise we don't allocate a buffer, and *if* we need to + * flush the write later then a buffer is allocated and + * we retrieve the data using the dmu. + */ +typedef enum { + WR_INDIRECT, /* indirect - a large write (dmu_sync() data */ + /* and put blkptr in log, rather than actual data) */ + WR_COPIED, /* immediate - data is copied into lr_write_t */ + WR_NEED_COPY, /* immediate - data needs to be copied if pushed */ + WR_NUM_STATES /* number of states */ +} itx_wr_state_t; + +typedef void (*zil_callback_t)(void *data); + +typedef struct itx { + list_node_t itx_node; /* linkage on zl_itx_list */ + void *itx_private; /* type-specific opaque data */ + itx_wr_state_t itx_wr_state; /* write state */ + uint8_t itx_sync; /* synchronous transaction */ + zil_callback_t itx_callback; /* Called when the itx is persistent */ + void *itx_callback_data; /* User data for the callback */ + uint64_t itx_sod; /* record size on disk */ + uint64_t itx_oid; /* object id */ + lr_t itx_lr; /* common part of log record */ + /* followed by type-specific part of lr_xx_t and its immediate data */ +} itx_t; + +/* + * Used for zil kstat. + */ +typedef struct zil_stats { + /* + * Number of times a ZIL commit (e.g. fsync) has been requested. + */ + kstat_named_t zil_commit_count; + + /* + * Number of times the ZIL has been flushed to stable storage. + * This is less than zil_commit_count when commits are "merged" + * (see the documentation above zil_commit()). + */ + kstat_named_t zil_commit_writer_count; + + /* + * Number of transactions (reads, writes, renames, etc.) + * that have been commited. + */ + kstat_named_t zil_itx_count; + + /* + * See the documentation for itx_wr_state_t above. + * Note that "bytes" accumulates the length of the transactions + * (i.e. data), not the actual log record sizes. + */ + kstat_named_t zil_itx_indirect_count; + kstat_named_t zil_itx_indirect_bytes; + kstat_named_t zil_itx_copied_count; + kstat_named_t zil_itx_copied_bytes; + kstat_named_t zil_itx_needcopy_count; + kstat_named_t zil_itx_needcopy_bytes; + + /* + * Transactions which have been allocated to the "normal" + * (i.e. not slog) storage pool. Note that "bytes" accumulate + * the actual log record sizes - which do not include the actual + * data in case of indirect writes. + */ + kstat_named_t zil_itx_metaslab_normal_count; + kstat_named_t zil_itx_metaslab_normal_bytes; + + /* + * Transactions which have been allocated to the "slog" storage pool. + * If there are no separate log devices, this is the same as the + * "normal" pool. + */ + kstat_named_t zil_itx_metaslab_slog_count; + kstat_named_t zil_itx_metaslab_slog_bytes; +} zil_stats_t; + +extern zil_stats_t zil_stats; + +#define ZIL_STAT_INCR(stat, val) \ + atomic_add_64(&zil_stats.stat.value.ui64, (val)); +#define ZIL_STAT_BUMP(stat) \ + ZIL_STAT_INCR(stat, 1); + +typedef int zil_parse_blk_func_t(zilog_t *zilog, blkptr_t *bp, void *arg, + uint64_t txg); +typedef int zil_parse_lr_func_t(zilog_t *zilog, lr_t *lr, void *arg, + uint64_t txg); +typedef int (*const zil_replay_func_t)(void *, char *, boolean_t); +typedef int zil_get_data_t(void *arg, lr_write_t *lr, char *dbuf, zio_t *zio); + +extern int zil_parse(zilog_t *zilog, zil_parse_blk_func_t *parse_blk_func, + zil_parse_lr_func_t *parse_lr_func, void *arg, uint64_t txg); + +extern void zil_init(void); +extern void zil_fini(void); + +extern zilog_t *zil_alloc(objset_t *os, zil_header_t *zh_phys); +extern void zil_free(zilog_t *zilog); + +extern zilog_t *zil_open(objset_t *os, zil_get_data_t *get_data); +extern void zil_close(zilog_t *zilog); + +extern void zil_replay(objset_t *os, void *arg, + zil_replay_func_t replay_func[TX_MAX_TYPE]); +extern boolean_t zil_replaying(zilog_t *zilog, dmu_tx_t *tx); +extern void zil_destroy(zilog_t *zilog, boolean_t keep_first); +extern void zil_destroy_sync(zilog_t *zilog, dmu_tx_t *tx); + +extern itx_t *zil_itx_create(uint64_t txtype, size_t lrsize); +extern void zil_itx_destroy(itx_t *itx); +extern void zil_itx_assign(zilog_t *zilog, itx_t *itx, dmu_tx_t *tx); + +extern void zil_commit(zilog_t *zilog, uint64_t oid); + +extern int zil_vdev_offline(const char *osname, void *txarg); +extern int zil_claim(struct dsl_pool *dp, + struct dsl_dataset *ds, void *txarg); +extern int zil_check_log_chain(struct dsl_pool *dp, + struct dsl_dataset *ds, void *tx); +extern void zil_sync(zilog_t *zilog, dmu_tx_t *tx); +extern void zil_clean(zilog_t *zilog, uint64_t synced_txg); + +extern int zil_suspend(const char *osname, void **cookiep); +extern void zil_resume(void *cookie); + +extern void zil_add_block(zilog_t *zilog, const blkptr_t *bp); +extern int zil_bp_tree_add(zilog_t *zilog, const blkptr_t *bp); + +extern void zil_set_sync(zilog_t *zilog, uint64_t syncval); + +extern void zil_set_logbias(zilog_t *zilog, uint64_t slogval); + +extern int zil_replay_disable; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZIL_H */ --- linux-4.4.0.orig/zfs/include/sys/zil_impl.h +++ linux-4.4.0/zfs/include/sys/zil_impl.h @@ -0,0 +1,150 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#ifndef _SYS_ZIL_IMPL_H +#define _SYS_ZIL_IMPL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Log write buffer. + */ +typedef struct lwb { + zilog_t *lwb_zilog; /* back pointer to log struct */ + blkptr_t lwb_blk; /* on disk address of this log blk */ + boolean_t lwb_fastwrite; /* is blk marked for fastwrite? */ + int lwb_nused; /* # used bytes in buffer */ + int lwb_sz; /* size of block and buffer */ + char *lwb_buf; /* log write buffer */ + zio_t *lwb_zio; /* zio for this buffer */ + dmu_tx_t *lwb_tx; /* tx for log block allocation */ + uint64_t lwb_max_txg; /* highest txg in this lwb */ + list_node_t lwb_node; /* zilog->zl_lwb_list linkage */ +} lwb_t; + +/* + * Intent log transaction lists + */ +typedef struct itxs { + list_t i_sync_list; /* list of synchronous itxs */ + avl_tree_t i_async_tree; /* tree of foids for async itxs */ +} itxs_t; + +typedef struct itxg { + kmutex_t itxg_lock; /* lock for this structure */ + uint64_t itxg_txg; /* txg for this chain */ + uint64_t itxg_sod; /* total size on disk for this txg */ + itxs_t *itxg_itxs; /* sync and async itxs */ +} itxg_t; + +/* for async nodes we build up an AVL tree of lists of async itxs per file */ +typedef struct itx_async_node { + uint64_t ia_foid; /* file object id */ + list_t ia_list; /* list of async itxs for this foid */ + avl_node_t ia_node; /* AVL tree linkage */ +} itx_async_node_t; + +/* + * Vdev flushing: during a zil_commit(), we build up an AVL tree of the vdevs + * we've touched so we know which ones need a write cache flush at the end. + */ +typedef struct zil_vdev_node { + uint64_t zv_vdev; /* vdev to be flushed */ + avl_node_t zv_node; /* AVL tree linkage */ +} zil_vdev_node_t; + +#define ZIL_PREV_BLKS 16 + +/* + * Stable storage intent log management structure. One per dataset. + */ +struct zilog { + kmutex_t zl_lock; /* protects most zilog_t fields */ + struct dsl_pool *zl_dmu_pool; /* DSL pool */ + spa_t *zl_spa; /* handle for read/write log */ + const zil_header_t *zl_header; /* log header buffer */ + objset_t *zl_os; /* object set we're logging */ + zil_get_data_t *zl_get_data; /* callback to get object content */ + zio_t *zl_root_zio; /* log writer root zio */ + uint64_t zl_lr_seq; /* on-disk log record sequence number */ + uint64_t zl_commit_lr_seq; /* last committed on-disk lr seq */ + uint64_t zl_destroy_txg; /* txg of last zil_destroy() */ + uint64_t zl_replayed_seq[TXG_SIZE]; /* last replayed rec seq */ + uint64_t zl_replaying_seq; /* current replay seq number */ + uint32_t zl_suspend; /* log suspend count */ + kcondvar_t zl_cv_writer; /* log writer thread completion */ + kcondvar_t zl_cv_suspend; /* log suspend completion */ + uint8_t zl_suspending; /* log is currently suspending */ + uint8_t zl_keep_first; /* keep first log block in destroy */ + uint8_t zl_replay; /* replaying records while set */ + uint8_t zl_stop_sync; /* for debugging */ + uint8_t zl_writer; /* boolean: write setup in progress */ + uint8_t zl_logbias; /* latency or throughput */ + uint8_t zl_sync; /* synchronous or asynchronous */ + int zl_parse_error; /* last zil_parse() error */ + uint64_t zl_parse_blk_seq; /* highest blk seq on last parse */ + uint64_t zl_parse_lr_seq; /* highest lr seq on last parse */ + uint64_t zl_parse_blk_count; /* number of blocks parsed */ + uint64_t zl_parse_lr_count; /* number of log records parsed */ + uint64_t zl_next_batch; /* next batch number */ + uint64_t zl_com_batch; /* committed batch number */ + kcondvar_t zl_cv_batch[2]; /* batch condition variables */ + itxg_t zl_itxg[TXG_SIZE]; /* intent log txg chains */ + list_t zl_itx_commit_list; /* itx list to be committed */ + uint64_t zl_itx_list_sz; /* total size of records on list */ + uint64_t zl_cur_used; /* current commit log size used */ + list_t zl_lwb_list; /* in-flight log write list */ + kmutex_t zl_vdev_lock; /* protects zl_vdev_tree */ + avl_tree_t zl_vdev_tree; /* vdevs to flush in zil_commit() */ + taskq_t *zl_clean_taskq; /* runs lwb and itx clean tasks */ + avl_tree_t zl_bp_tree; /* track bps during log parse */ + clock_t zl_replay_time; /* lbolt of when replay started */ + uint64_t zl_replay_blks; /* number of log blocks replayed */ + zil_header_t zl_old_header; /* debugging aid */ + uint_t zl_prev_blks[ZIL_PREV_BLKS]; /* size - sector rounded */ + uint_t zl_prev_rotor; /* rotor for zl_prev[] */ + txg_node_t zl_dirty_link; /* protected by dp_dirty_zilogs list */ +}; + +typedef struct zil_bp_node { + dva_t zn_dva; + avl_node_t zn_node; +} zil_bp_node_t; + +#define ZIL_MAX_LOG_DATA (SPA_OLD_MAXBLOCKSIZE - sizeof (zil_chain_t) - \ + sizeof (lr_write_t)) + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZIL_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/zio.h +++ linux-4.4.0/zfs/include/sys/zio.h @@ -0,0 +1,609 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +#ifndef _ZIO_H +#define _ZIO_H + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Embedded checksum + */ +#define ZEC_MAGIC 0x210da7ab10c7a11ULL + +typedef struct zio_eck { + uint64_t zec_magic; /* for validation, endianness */ + zio_cksum_t zec_cksum; /* 256-bit checksum */ +} zio_eck_t; + +/* + * Gang block headers are self-checksumming and contain an array + * of block pointers. + */ +#define SPA_GANGBLOCKSIZE SPA_MINBLOCKSIZE +#define SPA_GBH_NBLKPTRS ((SPA_GANGBLOCKSIZE - \ + sizeof (zio_eck_t)) / sizeof (blkptr_t)) +#define SPA_GBH_FILLER ((SPA_GANGBLOCKSIZE - \ + sizeof (zio_eck_t) - \ + (SPA_GBH_NBLKPTRS * sizeof (blkptr_t))) /\ + sizeof (uint64_t)) + +typedef struct zio_gbh { + blkptr_t zg_blkptr[SPA_GBH_NBLKPTRS]; + uint64_t zg_filler[SPA_GBH_FILLER]; + zio_eck_t zg_tail; +} zio_gbh_phys_t; + +enum zio_checksum { + ZIO_CHECKSUM_INHERIT = 0, + ZIO_CHECKSUM_ON, + ZIO_CHECKSUM_OFF, + ZIO_CHECKSUM_LABEL, + ZIO_CHECKSUM_GANG_HEADER, + ZIO_CHECKSUM_ZILOG, + ZIO_CHECKSUM_FLETCHER_2, + ZIO_CHECKSUM_FLETCHER_4, + ZIO_CHECKSUM_SHA256, + ZIO_CHECKSUM_ZILOG2, + ZIO_CHECKSUM_FUNCTIONS +}; + +/* + * The number of "legacy" compression functions which can be set on individual + * objects. + */ +#define ZIO_CHECKSUM_LEGACY_FUNCTIONS ZIO_CHECKSUM_ZILOG2 + +#define ZIO_CHECKSUM_ON_VALUE ZIO_CHECKSUM_FLETCHER_4 +#define ZIO_CHECKSUM_DEFAULT ZIO_CHECKSUM_ON + +#define ZIO_CHECKSUM_MASK 0xffULL +#define ZIO_CHECKSUM_VERIFY (1 << 8) + +#define ZIO_DEDUPCHECKSUM ZIO_CHECKSUM_SHA256 +#define ZIO_DEDUPDITTO_MIN 100 + +enum zio_compress { + ZIO_COMPRESS_INHERIT = 0, + ZIO_COMPRESS_ON, + ZIO_COMPRESS_OFF, + ZIO_COMPRESS_LZJB, + ZIO_COMPRESS_EMPTY, + ZIO_COMPRESS_GZIP_1, + ZIO_COMPRESS_GZIP_2, + ZIO_COMPRESS_GZIP_3, + ZIO_COMPRESS_GZIP_4, + ZIO_COMPRESS_GZIP_5, + ZIO_COMPRESS_GZIP_6, + ZIO_COMPRESS_GZIP_7, + ZIO_COMPRESS_GZIP_8, + ZIO_COMPRESS_GZIP_9, + ZIO_COMPRESS_ZLE, + ZIO_COMPRESS_LZ4, + ZIO_COMPRESS_FUNCTIONS +}; + +/* + * The number of "legacy" compression functions which can be set on individual + * objects. + */ +#define ZIO_COMPRESS_LEGACY_FUNCTIONS ZIO_COMPRESS_LZ4 + +/* + * The meaning of "compress = on" selected by the compression features enabled + * on a given pool. + */ +#define ZIO_COMPRESS_LEGACY_ON_VALUE ZIO_COMPRESS_LZJB +#define ZIO_COMPRESS_LZ4_ON_VALUE ZIO_COMPRESS_LZ4 + +#define ZIO_COMPRESS_DEFAULT ZIO_COMPRESS_OFF + +#define BOOTFS_COMPRESS_VALID(compress) \ + ((compress) == ZIO_COMPRESS_LZJB || \ + (compress) == ZIO_COMPRESS_LZ4 || \ + (compress) == ZIO_COMPRESS_ON || \ + (compress) == ZIO_COMPRESS_OFF) + +/* + * Default Linux timeout for a sd device. + */ +#define ZIO_DELAY_MAX (30 * MILLISEC) + +#define ZIO_FAILURE_MODE_WAIT 0 +#define ZIO_FAILURE_MODE_CONTINUE 1 +#define ZIO_FAILURE_MODE_PANIC 2 + +typedef enum zio_priority { + ZIO_PRIORITY_SYNC_READ, + ZIO_PRIORITY_SYNC_WRITE, /* ZIL */ + ZIO_PRIORITY_ASYNC_READ, /* prefetch */ + ZIO_PRIORITY_ASYNC_WRITE, /* spa_sync() */ + ZIO_PRIORITY_SCRUB, /* asynchronous scrub/resilver reads */ + ZIO_PRIORITY_NUM_QUEUEABLE, + + ZIO_PRIORITY_NOW /* non-queued i/os (e.g. free) */ +} zio_priority_t; + +enum zio_flag { + /* + * Flags inherited by gang, ddt, and vdev children, + * and that must be equal for two zios to aggregate + */ + ZIO_FLAG_DONT_AGGREGATE = 1 << 0, + ZIO_FLAG_IO_REPAIR = 1 << 1, + ZIO_FLAG_SELF_HEAL = 1 << 2, + ZIO_FLAG_RESILVER = 1 << 3, + ZIO_FLAG_SCRUB = 1 << 4, + ZIO_FLAG_SCAN_THREAD = 1 << 5, + ZIO_FLAG_PHYSICAL = 1 << 6, + +#define ZIO_FLAG_AGG_INHERIT (ZIO_FLAG_CANFAIL - 1) + + /* + * Flags inherited by ddt, gang, and vdev children. + */ + ZIO_FLAG_CANFAIL = 1 << 7, /* must be first for INHERIT */ + ZIO_FLAG_SPECULATIVE = 1 << 8, + ZIO_FLAG_CONFIG_WRITER = 1 << 9, + ZIO_FLAG_DONT_RETRY = 1 << 10, + ZIO_FLAG_DONT_CACHE = 1 << 11, + ZIO_FLAG_NODATA = 1 << 12, + ZIO_FLAG_INDUCE_DAMAGE = 1 << 13, + +#define ZIO_FLAG_DDT_INHERIT (ZIO_FLAG_IO_RETRY - 1) +#define ZIO_FLAG_GANG_INHERIT (ZIO_FLAG_IO_RETRY - 1) + + /* + * Flags inherited by vdev children. + */ + ZIO_FLAG_IO_RETRY = 1 << 14, /* must be first for INHERIT */ + ZIO_FLAG_PROBE = 1 << 15, + ZIO_FLAG_TRYHARD = 1 << 16, + ZIO_FLAG_OPTIONAL = 1 << 17, + +#define ZIO_FLAG_VDEV_INHERIT (ZIO_FLAG_DONT_QUEUE - 1) + + /* + * Flags not inherited by any children. + */ + ZIO_FLAG_DONT_QUEUE = 1 << 18, /* must be first for INHERIT */ + ZIO_FLAG_DONT_PROPAGATE = 1 << 19, + ZIO_FLAG_IO_BYPASS = 1 << 20, + ZIO_FLAG_IO_REWRITE = 1 << 21, + ZIO_FLAG_RAW = 1 << 22, + ZIO_FLAG_GANG_CHILD = 1 << 23, + ZIO_FLAG_DDT_CHILD = 1 << 24, + ZIO_FLAG_GODFATHER = 1 << 25, + ZIO_FLAG_NOPWRITE = 1 << 26, + ZIO_FLAG_REEXECUTED = 1 << 27, + ZIO_FLAG_DELEGATED = 1 << 28, + ZIO_FLAG_FASTWRITE = 1 << 29, +}; + +#define ZIO_FLAG_MUSTSUCCEED 0 + +#define ZIO_DDT_CHILD_FLAGS(zio) \ + (((zio)->io_flags & ZIO_FLAG_DDT_INHERIT) | \ + ZIO_FLAG_DDT_CHILD | ZIO_FLAG_CANFAIL) + +#define ZIO_GANG_CHILD_FLAGS(zio) \ + (((zio)->io_flags & ZIO_FLAG_GANG_INHERIT) | \ + ZIO_FLAG_GANG_CHILD | ZIO_FLAG_CANFAIL) + +#define ZIO_VDEV_CHILD_FLAGS(zio) \ + (((zio)->io_flags & ZIO_FLAG_VDEV_INHERIT) | \ + ZIO_FLAG_CANFAIL) + +enum zio_child { + ZIO_CHILD_VDEV = 0, + ZIO_CHILD_GANG, + ZIO_CHILD_DDT, + ZIO_CHILD_LOGICAL, + ZIO_CHILD_TYPES +}; + +enum zio_wait_type { + ZIO_WAIT_READY = 0, + ZIO_WAIT_DONE, + ZIO_WAIT_TYPES +}; + +/* + * We'll take the unused errnos, 'EBADE' and 'EBADR' (from the Convergent + * graveyard) to indicate checksum errors and fragmentation. + */ +#define ECKSUM EBADE +#define EFRAGS EBADR + +typedef void zio_done_func_t(zio_t *zio); + +extern const char *zio_type_name[ZIO_TYPES]; + +/* + * A bookmark is a four-tuple that uniquely + * identifies any block in the pool. By convention, the meta-objset (MOS) + * is objset 0, and the meta-dnode is object 0. This covers all blocks + * except root blocks and ZIL blocks, which are defined as follows: + * + * Root blocks (objset_phys_t) are object 0, level -1: . + * ZIL blocks are bookmarked . + * dmu_sync()ed ZIL data blocks are bookmarked . + * + * Note: this structure is called a bookmark because its original purpose + * was to remember where to resume a pool-wide traverse. + * + * Note: this structure is passed between userland and the kernel, and is + * stored on disk (by virtue of being incorporated into other on-disk + * structures, e.g. dsl_scan_phys_t). + */ +struct zbookmark_phys { + uint64_t zb_objset; + uint64_t zb_object; + int64_t zb_level; + uint64_t zb_blkid; +}; + +#define SET_BOOKMARK(zb, objset, object, level, blkid) \ +{ \ + (zb)->zb_objset = objset; \ + (zb)->zb_object = object; \ + (zb)->zb_level = level; \ + (zb)->zb_blkid = blkid; \ +} + +#define ZB_DESTROYED_OBJSET (-1ULL) + +#define ZB_ROOT_OBJECT (0ULL) +#define ZB_ROOT_LEVEL (-1LL) +#define ZB_ROOT_BLKID (0ULL) + +#define ZB_ZIL_OBJECT (0ULL) +#define ZB_ZIL_LEVEL (-2LL) + +#define ZB_IS_ZERO(zb) \ + ((zb)->zb_objset == 0 && (zb)->zb_object == 0 && \ + (zb)->zb_level == 0 && (zb)->zb_blkid == 0) +#define ZB_IS_ROOT(zb) \ + ((zb)->zb_object == ZB_ROOT_OBJECT && \ + (zb)->zb_level == ZB_ROOT_LEVEL && \ + (zb)->zb_blkid == ZB_ROOT_BLKID) + +typedef struct zio_prop { + enum zio_checksum zp_checksum; + enum zio_compress zp_compress; + dmu_object_type_t zp_type; + uint8_t zp_level; + uint8_t zp_copies; + boolean_t zp_dedup; + boolean_t zp_dedup_verify; + boolean_t zp_nopwrite; +} zio_prop_t; + +typedef struct zio_cksum_report zio_cksum_report_t; + +typedef void zio_cksum_finish_f(zio_cksum_report_t *rep, + const void *good_data); +typedef void zio_cksum_free_f(void *cbdata, size_t size); + +struct zio_bad_cksum; /* defined in zio_checksum.h */ +struct dnode_phys; + +struct zio_cksum_report { + struct zio_cksum_report *zcr_next; + nvlist_t *zcr_ereport; + nvlist_t *zcr_detector; + void *zcr_cbdata; + size_t zcr_cbinfo; /* passed to zcr_free() */ + uint64_t zcr_align; + uint64_t zcr_length; + zio_cksum_finish_f *zcr_finish; + zio_cksum_free_f *zcr_free; + + /* internal use only */ + struct zio_bad_cksum *zcr_ckinfo; /* information from failure */ +}; + +typedef void zio_vsd_cksum_report_f(zio_t *zio, zio_cksum_report_t *zcr, + void *arg); + +zio_vsd_cksum_report_f zio_vsd_default_cksum_report; + +typedef struct zio_vsd_ops { + zio_done_func_t *vsd_free; + zio_vsd_cksum_report_f *vsd_cksum_report; +} zio_vsd_ops_t; + +typedef struct zio_gang_node { + zio_gbh_phys_t *gn_gbh; + struct zio_gang_node *gn_child[SPA_GBH_NBLKPTRS]; +} zio_gang_node_t; + +typedef zio_t *zio_gang_issue_func_t(zio_t *zio, blkptr_t *bp, + zio_gang_node_t *gn, void *data); + +typedef void zio_transform_func_t(zio_t *zio, void *data, uint64_t size); + +typedef struct zio_transform { + void *zt_orig_data; + uint64_t zt_orig_size; + uint64_t zt_bufsize; + zio_transform_func_t *zt_transform; + struct zio_transform *zt_next; +} zio_transform_t; + +typedef int zio_pipe_stage_t(zio_t *zio); + +/* + * The io_reexecute flags are distinct from io_flags because the child must + * be able to propagate them to the parent. The normal io_flags are local + * to the zio, not protected by any lock, and not modifiable by children; + * the reexecute flags are protected by io_lock, modifiable by children, + * and always propagated -- even when ZIO_FLAG_DONT_PROPAGATE is set. + */ +#define ZIO_REEXECUTE_NOW 0x01 +#define ZIO_REEXECUTE_SUSPEND 0x02 + +typedef struct zio_link { + zio_t *zl_parent; + zio_t *zl_child; + list_node_t zl_parent_node; + list_node_t zl_child_node; +} zio_link_t; + +struct zio { + /* Core information about this I/O */ + zbookmark_phys_t io_bookmark; + zio_prop_t io_prop; + zio_type_t io_type; + enum zio_child io_child_type; + int io_cmd; + zio_priority_t io_priority; + uint8_t io_reexecute; + uint8_t io_state[ZIO_WAIT_TYPES]; + uint64_t io_txg; + spa_t *io_spa; + blkptr_t *io_bp; + blkptr_t *io_bp_override; + blkptr_t io_bp_copy; + list_t io_parent_list; + list_t io_child_list; + zio_link_t *io_walk_link; + zio_t *io_logical; + zio_transform_t *io_transform_stack; + + /* Callback info */ + zio_done_func_t *io_ready; + zio_done_func_t *io_physdone; + zio_done_func_t *io_done; + void *io_private; + int64_t io_prev_space_delta; /* DMU private */ + blkptr_t io_bp_orig; + + /* Data represented by this I/O */ + void *io_data; + void *io_orig_data; + uint64_t io_size; + uint64_t io_orig_size; + + /* Stuff for the vdev stack */ + vdev_t *io_vd; + void *io_vsd; + const zio_vsd_ops_t *io_vsd_ops; + + uint64_t io_offset; + hrtime_t io_timestamp; /* submitted at */ + hrtime_t io_delta; /* vdev queue service delta */ + uint64_t io_delay; /* vdev disk service delta (ticks) */ + avl_node_t io_queue_node; + avl_node_t io_offset_node; + + /* Internal pipeline state */ + enum zio_flag io_flags; + enum zio_stage io_stage; + enum zio_stage io_pipeline; + enum zio_flag io_orig_flags; + enum zio_stage io_orig_stage; + enum zio_stage io_orig_pipeline; + int io_error; + int io_child_error[ZIO_CHILD_TYPES]; + uint64_t io_children[ZIO_CHILD_TYPES][ZIO_WAIT_TYPES]; + uint64_t io_child_count; + uint64_t io_phys_children; + uint64_t io_parent_count; + uint64_t *io_stall; + zio_t *io_gang_leader; + zio_gang_node_t *io_gang_tree; + void *io_executor; + void *io_waiter; + kmutex_t io_lock; + kcondvar_t io_cv; + + /* FMA state */ + zio_cksum_report_t *io_cksum_report; + uint64_t io_ena; + + /* Taskq dispatching state */ + taskq_ent_t io_tqent; +}; + +extern zio_t *zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, + zio_done_func_t *done, void *private, enum zio_flag flags); + +extern zio_t *zio_root(spa_t *spa, + zio_done_func_t *done, void *private, enum zio_flag flags); + +extern zio_t *zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, void *data, + uint64_t size, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb); + +extern zio_t *zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, + void *data, uint64_t size, const zio_prop_t *zp, + zio_done_func_t *ready, zio_done_func_t *physdone, zio_done_func_t *done, + void *private, + zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb); + +extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, + void *data, uint64_t size, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, zbookmark_phys_t *zb); + +extern void zio_write_override(zio_t *zio, blkptr_t *bp, int copies, + boolean_t nopwrite); + +extern void zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp); + +extern zio_t *zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, + const blkptr_t *bp, + zio_done_func_t *done, void *private, enum zio_flag flags); + +extern zio_t *zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, + zio_done_func_t *done, void *private, enum zio_flag flags); + +extern zio_t *zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, + uint64_t size, void *data, int checksum, + zio_done_func_t *done, void *private, zio_priority_t priority, + enum zio_flag flags, boolean_t labels); + +extern zio_t *zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, + uint64_t size, void *data, int checksum, + zio_done_func_t *done, void *private, zio_priority_t priority, + enum zio_flag flags, boolean_t labels); + +extern zio_t *zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, + const blkptr_t *bp, enum zio_flag flags); + +extern int zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp, + uint64_t size, boolean_t use_slog); +extern void zio_free_zil(spa_t *spa, uint64_t txg, blkptr_t *bp); +extern void zio_flush(zio_t *zio, vdev_t *vd); +extern void zio_shrink(zio_t *zio, uint64_t size); + +extern int zio_wait(zio_t *zio); +extern void zio_nowait(zio_t *zio); +extern void zio_execute(zio_t *zio); +extern void zio_interrupt(zio_t *zio); + +extern zio_t *zio_walk_parents(zio_t *cio); +extern zio_t *zio_walk_children(zio_t *pio); +extern zio_t *zio_unique_parent(zio_t *cio); +extern void zio_add_child(zio_t *pio, zio_t *cio); + +extern void *zio_buf_alloc(size_t size); +extern void zio_buf_free(void *buf, size_t size); +extern void *zio_data_buf_alloc(size_t size); +extern void zio_data_buf_free(void *buf, size_t size); +extern void *zio_buf_alloc_flags(size_t size, int flags); + +extern void zio_resubmit_stage_async(void *); + +extern zio_t *zio_vdev_child_io(zio_t *zio, blkptr_t *bp, vdev_t *vd, + uint64_t offset, void *data, uint64_t size, int type, + zio_priority_t priority, enum zio_flag flags, + zio_done_func_t *done, void *private); + +extern zio_t *zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, + void *data, uint64_t size, int type, zio_priority_t priority, + enum zio_flag flags, zio_done_func_t *done, void *private); + +extern void zio_vdev_io_bypass(zio_t *zio); +extern void zio_vdev_io_reissue(zio_t *zio); +extern void zio_vdev_io_redone(zio_t *zio); + +extern void zio_checksum_verified(zio_t *zio); +extern int zio_worst_error(int e1, int e2); + +extern enum zio_checksum zio_checksum_select(enum zio_checksum child, + enum zio_checksum parent); +extern enum zio_checksum zio_checksum_dedup_select(spa_t *spa, + enum zio_checksum child, enum zio_checksum parent); +extern enum zio_compress zio_compress_select(spa_t *spa, + enum zio_compress child, enum zio_compress parent); + +extern void zio_suspend(spa_t *spa, zio_t *zio); +extern int zio_resume(spa_t *spa); +extern void zio_resume_wait(spa_t *spa); + +/* + * Initial setup and teardown. + */ +extern void zio_init(void); +extern void zio_fini(void); + +/* + * Fault injection + */ +struct zinject_record; +extern uint32_t zio_injection_enabled; +extern int zio_inject_fault(char *name, int flags, int *id, + struct zinject_record *record); +extern int zio_inject_list_next(int *id, char *name, size_t buflen, + struct zinject_record *record); +extern int zio_clear_fault(int id); +extern void zio_handle_panic_injection(spa_t *spa, char *tag, uint64_t type); +extern int zio_handle_fault_injection(zio_t *zio, int error); +extern int zio_handle_device_injection(vdev_t *vd, zio_t *zio, int error); +extern int zio_handle_label_injection(zio_t *zio, int error); +extern void zio_handle_ignored_writes(zio_t *zio); +extern uint64_t zio_handle_io_delay(zio_t *zio); + +/* + * Checksum ereport functions + */ +extern void zfs_ereport_start_checksum(spa_t *spa, vdev_t *vd, struct zio *zio, + uint64_t offset, uint64_t length, void *arg, struct zio_bad_cksum *info); +extern void zfs_ereport_finish_checksum(zio_cksum_report_t *report, + const void *good_data, const void *bad_data, boolean_t drop_if_identical); + +extern void zfs_ereport_send_interim_checksum(zio_cksum_report_t *report); +extern void zfs_ereport_free_checksum(zio_cksum_report_t *report); + +/* If we have the good data in hand, this function can be used */ +extern void zfs_ereport_post_checksum(spa_t *spa, vdev_t *vd, + struct zio *zio, uint64_t offset, uint64_t length, + const void *good_data, const void *bad_data, struct zio_bad_cksum *info); + +/* Called from spa_sync(), but primarily an injection handler */ +extern void spa_handle_ignored_writes(spa_t *spa); + +/* zbookmark_phys functions */ +boolean_t zbookmark_is_before(const struct dnode_phys *dnp, + const zbookmark_phys_t *zb1, const zbookmark_phys_t *zb2); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZIO_H */ --- linux-4.4.0.orig/zfs/include/sys/zio_checksum.h +++ linux-4.4.0/zfs/include/sys/zio_checksum.h @@ -0,0 +1,75 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_ZIO_CHECKSUM_H +#define _SYS_ZIO_CHECKSUM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signature for checksum functions. + */ +typedef void zio_checksum_t(const void *data, uint64_t size, zio_cksum_t *zcp); + +/* + * Information about each checksum function. + */ +typedef const struct zio_checksum_info { + zio_checksum_t *ci_func[2]; /* checksum function for each byteorder */ + int ci_correctable; /* number of correctable bits */ + int ci_eck; /* uses zio embedded checksum? */ + int ci_dedup; /* strong enough for dedup? */ + char *ci_name; /* descriptive name */ +} zio_checksum_info_t; + +typedef struct zio_bad_cksum { + zio_cksum_t zbc_expected; + zio_cksum_t zbc_actual; + const char *zbc_checksum_name; + uint8_t zbc_byteswapped; + uint8_t zbc_injected; + uint8_t zbc_has_cksum; /* expected/actual valid */ +} zio_bad_cksum_t; + +extern zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS]; + +/* + * Checksum routines. + */ +extern zio_checksum_t zio_checksum_SHA256; + +extern void zio_checksum_compute(zio_t *zio, enum zio_checksum checksum, + void *data, uint64_t size); +extern int zio_checksum_error(zio_t *zio, zio_bad_cksum_t *out); +extern enum zio_checksum spa_dedup_checksum(spa_t *spa); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZIO_CHECKSUM_H */ --- linux-4.4.0.orig/zfs/include/sys/zio_compress.h +++ linux-4.4.0/zfs/include/sys/zio_compress.h @@ -0,0 +1,93 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_ZIO_COMPRESS_H +#define _SYS_ZIO_COMPRESS_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common signature for all zio compress functions. */ +typedef size_t zio_compress_func_t(void *src, void *dst, + size_t s_len, size_t d_len, int); +/* Common signature for all zio decompress functions. */ +typedef int zio_decompress_func_t(void *src, void *dst, + size_t s_len, size_t d_len, int); + +/* + * Information about each compression function. + */ +typedef const struct zio_compress_info { + zio_compress_func_t *ci_compress; /* compression function */ + zio_decompress_func_t *ci_decompress; /* decompression function */ + int ci_level; /* level parameter */ + char *ci_name; /* algorithm name */ +} zio_compress_info_t; + +extern zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS]; + +/* + * lz4 compression init & free + */ +extern void lz4_init(void); +extern void lz4_fini(void); + +/* + * Compression routines. + */ +extern size_t lzjb_compress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern int lzjb_decompress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern size_t gzip_compress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern int gzip_decompress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern size_t zle_compress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern int zle_decompress(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern size_t lz4_compress_zfs(void *src, void *dst, size_t s_len, size_t d_len, + int level); +extern int lz4_decompress_zfs(void *src, void *dst, size_t s_len, size_t d_len, + int level); + +/* + * Compress and decompress data if necessary. + */ +extern size_t zio_compress_data(enum zio_compress c, void *src, void *dst, + size_t s_len); +extern int zio_decompress_data(enum zio_compress c, void *src, void *dst, + size_t s_len, size_t d_len); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZIO_COMPRESS_H */ --- linux-4.4.0.orig/zfs/include/sys/zio_impl.h +++ linux-4.4.0/zfs/include/sys/zio_impl.h @@ -0,0 +1,245 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _ZIO_IMPL_H +#define _ZIO_IMPL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX -- Describe ZFS I/O pipeline here. Fill in as needed. + * + * The ZFS I/O pipeline is comprised of various stages which are defined + * in the zio_stage enum below. The individual stages are used to construct + * these basic I/O operations: Read, Write, Free, Claim, and Ioctl. + * + * I/O operations: (XXX - provide detail for each of the operations) + * + * Read: + * Write: + * Free: + * Claim: + * Ioctl: + * + * Although the most common pipeline are used by the basic I/O operations + * above, there are some helper pipelines (one could consider them + * sub-pipelines) which are used internally by the ZIO module and are + * explained below: + * + * Interlock Pipeline: + * The interlock pipeline is the most basic pipeline and is used by all + * of the I/O operations. The interlock pipeline does not perform any I/O + * and is used to coordinate the dependencies between I/Os that are being + * issued (i.e. the parent/child relationship). + * + * Vdev child Pipeline: + * The vdev child pipeline is responsible for performing the physical I/O. + * It is in this pipeline where the I/O are queued and possibly cached. + * + * In addition to performing I/O, the pipeline is also responsible for + * data transformations. The transformations performed are based on the + * specific properties that user may have selected and modify the + * behavior of the pipeline. Examples of supported transformations are + * compression, dedup, and nop writes. Transformations will either modify + * the data or the pipeline. This list below further describes each of + * the supported transformations: + * + * Compression: + * ZFS supports three different flavors of compression -- gzip, lzjb, and + * zle. Compression occurs as part of the write pipeline and is performed + * in the ZIO_STAGE_WRITE_BP_INIT stage. + * + * Dedup: + * Dedup reads are handled by the ZIO_STAGE_DDT_READ_START and + * ZIO_STAGE_DDT_READ_DONE stages. These stages are added to an existing + * read pipeline if the dedup bit is set on the block pointer. + * Writing a dedup block is performed by the ZIO_STAGE_DDT_WRITE stage + * and added to a write pipeline if a user has enabled dedup on that + * particular dataset. + * + * NOP Write: + * The NOP write feature is performed by the ZIO_STAGE_NOP_WRITE stage + * and is added to an existing write pipeline if a crypographically + * secure checksum (i.e. SHA256) is enabled and compression is turned on. + * The NOP write stage will compare the checksums of the current data + * on-disk (level-0 blocks only) and the data that is currently being written. + * If the checksum values are identical then the pipeline is converted to + * an interlock pipeline skipping block allocation and bypassing the + * physical I/O. The nop write feature can handle writes in either + * syncing or open context (i.e. zil writes) and as a result is mutually + * exclusive with dedup. + */ + +/* + * zio pipeline stage definitions + */ +enum zio_stage { + ZIO_STAGE_OPEN = 1 << 0, /* RWFCI */ + + ZIO_STAGE_READ_BP_INIT = 1 << 1, /* R---- */ + ZIO_STAGE_FREE_BP_INIT = 1 << 2, /* --F-- */ + ZIO_STAGE_ISSUE_ASYNC = 1 << 3, /* RWF-- */ + ZIO_STAGE_WRITE_BP_INIT = 1 << 4, /* -W--- */ + + ZIO_STAGE_CHECKSUM_GENERATE = 1 << 5, /* -W--- */ + + ZIO_STAGE_NOP_WRITE = 1 << 6, /* -W--- */ + + ZIO_STAGE_DDT_READ_START = 1 << 7, /* R---- */ + ZIO_STAGE_DDT_READ_DONE = 1 << 8, /* R---- */ + ZIO_STAGE_DDT_WRITE = 1 << 9, /* -W--- */ + ZIO_STAGE_DDT_FREE = 1 << 10, /* --F-- */ + + ZIO_STAGE_GANG_ASSEMBLE = 1 << 11, /* RWFC- */ + ZIO_STAGE_GANG_ISSUE = 1 << 12, /* RWFC- */ + + ZIO_STAGE_DVA_ALLOCATE = 1 << 13, /* -W--- */ + ZIO_STAGE_DVA_FREE = 1 << 14, /* --F-- */ + ZIO_STAGE_DVA_CLAIM = 1 << 15, /* ---C- */ + + ZIO_STAGE_READY = 1 << 16, /* RWFCI */ + + ZIO_STAGE_VDEV_IO_START = 1 << 17, /* RW--I */ + ZIO_STAGE_VDEV_IO_DONE = 1 << 18, /* RW--I */ + ZIO_STAGE_VDEV_IO_ASSESS = 1 << 19, /* RW--I */ + + ZIO_STAGE_CHECKSUM_VERIFY = 1 << 20, /* R---- */ + + ZIO_STAGE_DONE = 1 << 21 /* RWFCI */ +}; + +#define ZIO_INTERLOCK_STAGES \ + (ZIO_STAGE_READY | \ + ZIO_STAGE_DONE) + +#define ZIO_INTERLOCK_PIPELINE \ + ZIO_INTERLOCK_STAGES + +#define ZIO_VDEV_IO_STAGES \ + (ZIO_STAGE_VDEV_IO_START | \ + ZIO_STAGE_VDEV_IO_DONE | \ + ZIO_STAGE_VDEV_IO_ASSESS) + +#define ZIO_VDEV_CHILD_PIPELINE \ + (ZIO_VDEV_IO_STAGES | \ + ZIO_STAGE_DONE) + +#define ZIO_READ_COMMON_STAGES \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_VDEV_IO_STAGES | \ + ZIO_STAGE_CHECKSUM_VERIFY) + +#define ZIO_READ_PHYS_PIPELINE \ + ZIO_READ_COMMON_STAGES + +#define ZIO_READ_PIPELINE \ + (ZIO_READ_COMMON_STAGES | \ + ZIO_STAGE_READ_BP_INIT) + +#define ZIO_DDT_CHILD_READ_PIPELINE \ + ZIO_READ_COMMON_STAGES + +#define ZIO_DDT_READ_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_READ_BP_INIT | \ + ZIO_STAGE_DDT_READ_START | \ + ZIO_STAGE_DDT_READ_DONE) + +#define ZIO_WRITE_COMMON_STAGES \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_VDEV_IO_STAGES | \ + ZIO_STAGE_ISSUE_ASYNC | \ + ZIO_STAGE_CHECKSUM_GENERATE) + +#define ZIO_WRITE_PHYS_PIPELINE \ + ZIO_WRITE_COMMON_STAGES + +#define ZIO_REWRITE_PIPELINE \ + (ZIO_WRITE_COMMON_STAGES | \ + ZIO_STAGE_WRITE_BP_INIT) + +#define ZIO_WRITE_PIPELINE \ + (ZIO_WRITE_COMMON_STAGES | \ + ZIO_STAGE_WRITE_BP_INIT | \ + ZIO_STAGE_DVA_ALLOCATE) + +#define ZIO_DDT_CHILD_WRITE_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_VDEV_IO_STAGES | \ + ZIO_STAGE_DVA_ALLOCATE) + +#define ZIO_DDT_WRITE_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_ISSUE_ASYNC | \ + ZIO_STAGE_WRITE_BP_INIT | \ + ZIO_STAGE_CHECKSUM_GENERATE | \ + ZIO_STAGE_DDT_WRITE) + +#define ZIO_GANG_STAGES \ + (ZIO_STAGE_GANG_ASSEMBLE | \ + ZIO_STAGE_GANG_ISSUE) + +#define ZIO_FREE_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_FREE_BP_INIT | \ + ZIO_STAGE_DVA_FREE) + +#define ZIO_DDT_FREE_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_FREE_BP_INIT | \ + ZIO_STAGE_ISSUE_ASYNC | \ + ZIO_STAGE_DDT_FREE) + +#define ZIO_CLAIM_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_DVA_CLAIM) + +#define ZIO_IOCTL_PIPELINE \ + (ZIO_INTERLOCK_STAGES | \ + ZIO_STAGE_VDEV_IO_START | \ + ZIO_STAGE_VDEV_IO_ASSESS) + +#define ZIO_BLOCKING_STAGES \ + (ZIO_STAGE_DVA_ALLOCATE | \ + ZIO_STAGE_DVA_CLAIM | \ + ZIO_STAGE_VDEV_IO_START) + +extern void zio_inject_init(void); +extern void zio_inject_fini(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZIO_IMPL_H */ --- linux-4.4.0.orig/zfs/include/sys/zpl.h +++ linux-4.4.0/zfs/include/sys/zpl.h @@ -0,0 +1,186 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011, Lawrence Livermore National Security, LLC. + */ + +#ifndef _SYS_ZPL_H +#define _SYS_ZPL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* zpl_inode.c */ +extern void zpl_vap_init(vattr_t *vap, struct inode *dir, + zpl_umode_t mode, cred_t *cr); + +extern const struct inode_operations zpl_inode_operations; +extern const struct inode_operations zpl_dir_inode_operations; +extern const struct inode_operations zpl_symlink_inode_operations; +extern const struct inode_operations zpl_special_inode_operations; +extern dentry_operations_t zpl_dentry_operations; + +/* zpl_file.c */ +extern ssize_t zpl_read_common(struct inode *ip, const char *buf, + size_t len, loff_t *ppos, uio_seg_t segment, int flags, + cred_t *cr); +extern ssize_t zpl_write_common(struct inode *ip, const char *buf, + size_t len, loff_t *ppos, uio_seg_t segment, int flags, + cred_t *cr); +#if defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) +extern long zpl_fallocate_common(struct inode *ip, int mode, + loff_t offset, loff_t len); +#endif /* defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) */ + +extern const struct address_space_operations zpl_address_space_operations; +extern const struct file_operations zpl_file_operations; +extern const struct file_operations zpl_dir_file_operations; + +/* zpl_super.c */ +extern void zpl_prune_sb(int64_t nr_to_scan, void *arg); + +extern const struct super_operations zpl_super_operations; +extern const struct export_operations zpl_export_operations; +extern struct file_system_type zpl_fs_type; + +/* zpl_xattr.c */ +extern ssize_t zpl_xattr_list(struct dentry *dentry, char *buf, size_t size); +extern int zpl_xattr_security_init(struct inode *ip, struct inode *dip, + const struct qstr *qstr); +#if defined(CONFIG_FS_POSIX_ACL) +extern int zpl_set_acl(struct inode *ip, int type, struct posix_acl *acl); +extern struct posix_acl *zpl_get_acl(struct inode *ip, int type); +#if !defined(HAVE_GET_ACL) +#if defined(HAVE_CHECK_ACL_WITH_FLAGS) +extern int zpl_check_acl(struct inode *inode, int mask, unsigned int flags); +#elif defined(HAVE_CHECK_ACL) +extern int zpl_check_acl(struct inode *inode, int mask); +#elif defined(HAVE_PERMISSION_WITH_NAMEIDATA) +extern int zpl_permission(struct inode *ip, int mask, struct nameidata *nd); +#elif defined(HAVE_PERMISSION) +extern int zpl_permission(struct inode *ip, int mask); +#endif /* HAVE_CHECK_ACL | HAVE_PERMISSION */ +#endif /* HAVE_GET_ACL */ + +extern int zpl_init_acl(struct inode *ip, struct inode *dir); +extern int zpl_chmod_acl(struct inode *ip); +#else +static inline int +zpl_init_acl(struct inode *ip, struct inode *dir) +{ + return (0); +} + +static inline int +zpl_chmod_acl(struct inode *ip) +{ + return (0); +} +#endif /* CONFIG_FS_POSIX_ACL */ + +extern xattr_handler_t *zpl_xattr_handlers[]; + +/* zpl_ctldir.c */ +extern const struct file_operations zpl_fops_root; +extern const struct inode_operations zpl_ops_root; + +extern const struct file_operations zpl_fops_snapdir; +extern const struct inode_operations zpl_ops_snapdir; +#ifdef HAVE_AUTOMOUNT +extern const struct dentry_operations zpl_dops_snapdirs; +#else +extern const struct inode_operations zpl_ops_snapdirs; +#endif /* HAVE_AUTOMOUNT */ + +extern const struct file_operations zpl_fops_shares; +extern const struct inode_operations zpl_ops_shares; + +#ifdef HAVE_VFS_ITERATE + +#define DIR_CONTEXT_INIT(_dirent, _actor, _pos) { \ + .actor = _actor, \ + .pos = _pos, \ +} + +#else + +typedef struct dir_context { + void *dirent; + const filldir_t actor; + loff_t pos; +} dir_context_t; + +#define DIR_CONTEXT_INIT(_dirent, _actor, _pos) { \ + .dirent = _dirent, \ + .actor = _actor, \ + .pos = _pos, \ +} + +static inline bool +dir_emit(struct dir_context *ctx, const char *name, int namelen, + uint64_t ino, unsigned type) +{ + return (ctx->actor(ctx->dirent, name, namelen, ctx->pos, ino, type) + == 0); +} + +static inline bool +dir_emit_dot(struct file *file, struct dir_context *ctx) +{ + return (ctx->actor(ctx->dirent, ".", 1, ctx->pos, + file->f_path.dentry->d_inode->i_ino, DT_DIR) == 0); +} + +static inline bool +dir_emit_dotdot(struct file *file, struct dir_context *ctx) +{ + return (ctx->actor(ctx->dirent, "..", 2, ctx->pos, + parent_ino(file->f_path.dentry), DT_DIR) == 0); +} + +static inline bool +dir_emit_dots(struct file *file, struct dir_context *ctx) +{ + if (ctx->pos == 0) { + if (!dir_emit_dot(file, ctx)) + return (false); + ctx->pos = 1; + } + if (ctx->pos == 1) { + if (!dir_emit_dotdot(file, ctx)) + return (false); + ctx->pos = 2; + } + return (true); +} +#endif /* HAVE_VFS_ITERATE */ + +#endif /* _SYS_ZPL_H */ --- linux-4.4.0.orig/zfs/include/sys/zrlock.h +++ linux-4.4.0/zfs/include/sys/zrlock.h @@ -0,0 +1,66 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_ZRLOCK_H +#define _SYS_ZRLOCK_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct zrlock { + kmutex_t zr_mtx; + volatile int32_t zr_refcount; + kcondvar_t zr_cv; + uint16_t zr_pad; +#ifdef ZFS_DEBUG + kthread_t *zr_owner; + const char *zr_caller; +#endif +} zrlock_t; + +extern void zrl_init(zrlock_t *); +extern void zrl_destroy(zrlock_t *); +#ifdef ZFS_DEBUG +#define zrl_add(_z) zrl_add_debug((_z), __func__) +extern void zrl_add_debug(zrlock_t *, const char *); +#else +extern void zrl_add(zrlock_t *); +#endif +extern void zrl_remove(zrlock_t *); +extern int zrl_tryenter(zrlock_t *); +extern void zrl_exit(zrlock_t *); +extern int zrl_is_zero(zrlock_t *); +extern int zrl_is_locked(zrlock_t *); +#ifdef ZFS_DEBUG +extern kthread_t *zrl_owner(zrlock_t *); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_ZRLOCK_H */ --- linux-4.4.0.orig/zfs/include/sys/zvol.h +++ linux-4.4.0/zfs/include/sys/zvol.h @@ -0,0 +1,54 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef _SYS_ZVOL_H +#define _SYS_ZVOL_H + +#include + +#define ZVOL_OBJ 1ULL +#define ZVOL_ZAP_OBJ 2ULL + +#ifdef _KERNEL + +extern int zvol_check_volsize(uint64_t volsize, uint64_t blocksize); +extern int zvol_check_volblocksize(const char *name, uint64_t volblocksize); +extern int zvol_get_stats(objset_t *os, nvlist_t *nv); +extern boolean_t zvol_is_zvol(const char *); +extern void zvol_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx); +extern int zvol_create_minor(const char *name); +extern int zvol_create_minors(const char *name); +extern int zvol_remove_minor(const char *name); +extern void zvol_remove_minors(const char *name); +extern void zvol_rename_minors(const char *oldname, const char *newname); +extern int zvol_set_volsize(const char *, uint64_t); +extern int zvol_set_volblocksize(const char *, uint64_t); +extern int zvol_set_snapdev(const char *, uint64_t); + +extern int zvol_init(void); +extern void zvol_fini(void); + +#endif /* _KERNEL */ +#endif /* _SYS_ZVOL_H */ --- linux-4.4.0.orig/zfs/include/zfeature_common.h +++ linux-4.4.0/zfs/include/zfeature_common.h @@ -0,0 +1,89 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +#ifndef _ZFEATURE_COMMON_H +#define _ZFEATURE_COMMON_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct zfeature_info; + +typedef enum spa_feature { + SPA_FEATURE_NONE = -1, + SPA_FEATURE_ASYNC_DESTROY, + SPA_FEATURE_EMPTY_BPOBJ, + SPA_FEATURE_LZ4_COMPRESS, + SPA_FEATURE_SPACEMAP_HISTOGRAM, + SPA_FEATURE_ENABLED_TXG, + SPA_FEATURE_HOLE_BIRTH, + SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_EMBEDDED_DATA, + SPA_FEATURE_BOOKMARKS, + SPA_FEATURE_FS_SS_LIMIT, + SPA_FEATURE_LARGE_BLOCKS, + SPA_FEATURES +} spa_feature_t; + +#define SPA_FEATURE_DISABLED (-1ULL) + +typedef struct zfeature_info { + spa_feature_t fi_feature; + const char *fi_uname; /* User-facing feature name */ + const char *fi_guid; /* On-disk feature identifier */ + const char *fi_desc; /* Feature description */ + boolean_t fi_can_readonly; /* Can open pool readonly w/o support? */ + boolean_t fi_mos; /* Is the feature necessary to read the MOS? */ + /* Activate this feature at the same time it is enabled */ + boolean_t fi_activate_on_enable; + /* array of dependencies, terminated by SPA_FEATURE_NONE */ + const spa_feature_t *fi_depends; +} zfeature_info_t; + +typedef int (zfeature_func_t)(zfeature_info_t *, void *); + +#define ZFS_FEATURE_DEBUG + +extern zfeature_info_t spa_feature_table[SPA_FEATURES]; + +extern boolean_t zfeature_is_valid_guid(const char *); + +extern boolean_t zfeature_is_supported(const char *); +extern int zfeature_lookup_name(const char *, spa_feature_t *); +extern boolean_t zfeature_depends_on(spa_feature_t, spa_feature_t); + +extern void zpool_feature_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFEATURE_COMMON_H */ --- linux-4.4.0.orig/zfs/include/zfs_comutil.h +++ linux-4.4.0/zfs/include/zfs_comutil.h @@ -0,0 +1,48 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#ifndef _ZFS_COMUTIL_H +#define _ZFS_COMUTIL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern boolean_t zfs_allocatable_devs(nvlist_t *); +extern void zpool_get_rewind_policy(nvlist_t *, zpool_rewind_policy_t *); + +extern int zfs_zpl_version_map(int spa_version); +extern int zfs_spa_version_map(int zpl_version); +#define ZFS_NUM_LEGACY_HISTORY_EVENTS 41 +extern const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFS_COMUTIL_H */ --- linux-4.4.0.orig/zfs/include/zfs_deleg.h +++ linux-4.4.0/zfs/include/zfs_deleg.h @@ -0,0 +1,89 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2010 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _ZFS_DELEG_H +#define _ZFS_DELEG_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZFS_DELEG_SET_NAME_CHR '@' /* set name lead char */ +#define ZFS_DELEG_FIELD_SEP_CHR '$' /* field separator */ + +/* + * Max name length for a delegation attribute + */ +#define ZFS_MAX_DELEG_NAME 128 + +#define ZFS_DELEG_LOCAL 'l' +#define ZFS_DELEG_DESCENDENT 'd' +#define ZFS_DELEG_NA '-' + +typedef enum { + ZFS_DELEG_NOTE_CREATE, + ZFS_DELEG_NOTE_DESTROY, + ZFS_DELEG_NOTE_SNAPSHOT, + ZFS_DELEG_NOTE_ROLLBACK, + ZFS_DELEG_NOTE_CLONE, + ZFS_DELEG_NOTE_PROMOTE, + ZFS_DELEG_NOTE_RENAME, + ZFS_DELEG_NOTE_SEND, + ZFS_DELEG_NOTE_RECEIVE, + ZFS_DELEG_NOTE_ALLOW, + ZFS_DELEG_NOTE_USERPROP, + ZFS_DELEG_NOTE_MOUNT, + ZFS_DELEG_NOTE_SHARE, + ZFS_DELEG_NOTE_USERQUOTA, + ZFS_DELEG_NOTE_GROUPQUOTA, + ZFS_DELEG_NOTE_USERUSED, + ZFS_DELEG_NOTE_GROUPUSED, + ZFS_DELEG_NOTE_HOLD, + ZFS_DELEG_NOTE_RELEASE, + ZFS_DELEG_NOTE_DIFF, + ZFS_DELEG_NOTE_BOOKMARK, + ZFS_DELEG_NOTE_NONE +} zfs_deleg_note_t; + +typedef struct zfs_deleg_perm_tab { + char *z_perm; + zfs_deleg_note_t z_note; +} zfs_deleg_perm_tab_t; + +extern zfs_deleg_perm_tab_t zfs_deleg_perm_tab[]; + +int zfs_deleg_verify_nvlist(nvlist_t *nvlist); +void zfs_deleg_whokey(char *attr, zfs_deleg_who_type_t type, + char checkflag, void *data); +const char *zfs_deleg_canonicalize_perm(const char *perm); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFS_DELEG_H */ --- linux-4.4.0.orig/zfs/include/zfs_fletcher.h +++ linux-4.4.0/zfs/include/zfs_fletcher.h @@ -0,0 +1,53 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _ZFS_FLETCHER_H +#define _ZFS_FLETCHER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * fletcher checksum functions + */ + +void fletcher_2_native(const void *, uint64_t, zio_cksum_t *); +void fletcher_2_byteswap(const void *, uint64_t, zio_cksum_t *); +void fletcher_4_native(const void *, uint64_t, zio_cksum_t *); +void fletcher_4_byteswap(const void *, uint64_t, zio_cksum_t *); +void fletcher_4_incremental_native(const void *, uint64_t, + zio_cksum_t *); +void fletcher_4_incremental_byteswap(const void *, uint64_t, + zio_cksum_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFS_FLETCHER_H */ --- linux-4.4.0.orig/zfs/include/zfs_namecheck.h +++ linux-4.4.0/zfs/include/zfs_namecheck.h @@ -0,0 +1,61 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#ifndef _ZFS_NAMECHECK_H +#define _ZFS_NAMECHECK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + NAME_ERR_LEADING_SLASH, /* name begins with leading slash */ + NAME_ERR_EMPTY_COMPONENT, /* name contains an empty component */ + NAME_ERR_TRAILING_SLASH, /* name ends with a slash */ + NAME_ERR_INVALCHAR, /* invalid character found */ + NAME_ERR_MULTIPLE_AT, /* multiple '@' characters found */ + NAME_ERR_NOLETTER, /* pool doesn't begin with a letter */ + NAME_ERR_RESERVED, /* entire name is reserved */ + NAME_ERR_DISKLIKE, /* reserved disk name (c[0-9].*) */ + NAME_ERR_TOOLONG, /* name is too long */ + NAME_ERR_NO_AT, /* permission set is missing '@' */ +} namecheck_err_t; + +#define ZFS_PERMSET_MAXLEN 64 + +int pool_namecheck(const char *, namecheck_err_t *, char *); +int dataset_namecheck(const char *, namecheck_err_t *, char *); +int mountpoint_namecheck(const char *, namecheck_err_t *); +int zfs_component_namecheck(const char *, namecheck_err_t *, char *); +int permset_namecheck(const char *, namecheck_err_t *, char *); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFS_NAMECHECK_H */ --- linux-4.4.0.orig/zfs/include/zfs_prop.h +++ linux-4.4.0/zfs/include/zfs_prop.h @@ -0,0 +1,129 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _ZFS_PROP_H +#define _ZFS_PROP_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * For index types (e.g. compression and checksum), we want the numeric value + * in the kernel, but the string value in userland. + */ +typedef enum { + PROP_TYPE_NUMBER, /* numeric value */ + PROP_TYPE_STRING, /* string value */ + PROP_TYPE_INDEX /* numeric value indexed by string */ +} zprop_type_t; + +typedef enum { + PROP_DEFAULT, + PROP_READONLY, + PROP_INHERIT, + /* + * ONETIME properties are a sort of conglomeration of READONLY + * and INHERIT. They can be set only during object creation, + * after that they are READONLY. If not explicitly set during + * creation, they can be inherited. + */ + PROP_ONETIME +} zprop_attr_t; + +typedef struct zfs_index { + const char *pi_name; + uint64_t pi_value; +} zprop_index_t; + +typedef struct { + const char *pd_name; /* human-readable property name */ + int pd_propnum; /* property number */ + zprop_type_t pd_proptype; /* string, boolean, index, number */ + const char *pd_strdefault; /* default for strings */ + uint64_t pd_numdefault; /* for boolean / index / number */ + zprop_attr_t pd_attr; /* default, readonly, inherit */ + int pd_types; /* bitfield of valid dataset types */ + /* fs | vol | snap; or pool */ + const char *pd_values; /* string telling acceptable values */ + const char *pd_colname; /* column header for "zfs list" */ + boolean_t pd_rightalign; /* column alignment for "zfs list" */ + boolean_t pd_visible; /* do we list this property with the */ + /* "zfs get" help message */ + const zprop_index_t *pd_table; /* for index properties, a table */ + /* defining the possible values */ + size_t pd_table_size; /* number of entries in pd_table[] */ +} zprop_desc_t; + +/* + * zfs dataset property functions + */ +void zfs_prop_init(void); +zprop_type_t zfs_prop_get_type(zfs_prop_t); +boolean_t zfs_prop_delegatable(zfs_prop_t prop); +zprop_desc_t *zfs_prop_get_table(void); + +/* + * zpool property functions + */ +void zpool_prop_init(void); +zprop_type_t zpool_prop_get_type(zpool_prop_t); +zprop_desc_t *zpool_prop_get_table(void); + +/* + * Common routines to initialize property tables + */ +void zprop_register_impl(int, const char *, zprop_type_t, uint64_t, + const char *, zprop_attr_t, int, const char *, const char *, + boolean_t, boolean_t, const zprop_index_t *); +void zprop_register_string(int, const char *, const char *, + zprop_attr_t attr, int, const char *, const char *); +void zprop_register_number(int, const char *, uint64_t, zprop_attr_t, int, + const char *, const char *); +void zprop_register_index(int, const char *, uint64_t, zprop_attr_t, int, + const char *, const char *, const zprop_index_t *); +void zprop_register_hidden(int, const char *, zprop_type_t, zprop_attr_t, + int, const char *); + +/* + * Common routines for zfs and zpool property management + */ +int zprop_iter_common(zprop_func, void *, boolean_t, boolean_t, zfs_type_t); +int zprop_name_to_prop(const char *, zfs_type_t); +int zprop_string_to_index(int, const char *, uint64_t *, zfs_type_t); +int zprop_index_to_string(int, uint64_t, const char **, zfs_type_t); +uint64_t zprop_random_value(int, uint64_t, zfs_type_t); +const char *zprop_values(int, zfs_type_t); +size_t zprop_width(int, boolean_t *, zfs_type_t); +boolean_t zprop_valid_for_type(int, zfs_type_t, boolean_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZFS_PROP_H */ --- linux-4.4.0.orig/zfs/include/zpios-ctl.h +++ linux-4.4.0/zfs/include/zpios-ctl.h @@ -0,0 +1,203 @@ +/* + * ZPIOS is a heavily modified version of the original PIOS test code. + * It is designed to have the test code running in the Linux kernel + * against ZFS while still being flexibly controled from user space. + * + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * LLNL-CODE-403049 + * + * Original PIOS Test Code + * Copyright (C) 2004 Cluster File Systems, Inc. + * Written by Peter Braam + * Atul Vidwansa + * Milind Dumbare + * + * This file is part of ZFS on Linux. + * For details, see . + * + * ZPIOS is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * ZPIOS is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with ZPIOS. If not, see . + */ + +#ifndef _ZPIOS_CTL_H +#define _ZPIOS_CTL_H + +/* + * Contains shared definitions which both the userspace + * and kernelspace portions of zpios must agree on. + */ +#ifndef _KERNEL +#include +#endif + +#define ZPIOS_NAME "zpios" +#define ZPIOS_DEV "/dev/zpios" + +#define DMU_IO 0x01 + +#define DMU_WRITE 0x0001 +#define DMU_READ 0x0002 +#define DMU_VERIFY 0x0004 +#define DMU_REMOVE 0x0008 +#define DMU_FPP 0x0010 +#define DMU_WRITE_ZC 0x0020 /* Incompatible w/DMU_VERIFY */ +#define DMU_READ_ZC 0x0040 /* Incompatible w/DMU_VERIFY */ +#define DMU_WRITE_NOWAIT 0x0080 +#define DMU_READ_NOPF 0x0100 + +#define ZPIOS_NAME_SIZE 16 +#define ZPIOS_PATH_SIZE 128 + +#define PHASE_PRE_RUN "pre-run" +#define PHASE_PRE_CREATE "pre-create" +#define PHASE_PRE_WRITE "pre-write" +#define PHASE_PRE_READ "pre-read" +#define PHASE_PRE_REMOVE "pre-remove" +#define PHASE_POST_RUN "post-run" +#define PHASE_POST_CREATE "post-create" +#define PHASE_POST_WRITE "post-write" +#define PHASE_POST_READ "post-read" +#define PHASE_POST_REMOVE "post-remove" + +#define ZPIOS_CFG_MAGIC 0x87237190U +typedef struct zpios_cfg { + uint32_t cfg_magic; /* Unique magic */ + int32_t cfg_cmd; /* Config command */ + int32_t cfg_arg1; /* Config command arg 1 */ + int32_t cfg_rc1; /* Config response 1 */ +} zpios_cfg_t; + +typedef struct zpios_timespec { + uint32_t ts_sec; + uint32_t ts_nsec; +} zpios_timespec_t; + +typedef struct zpios_time { + zpios_timespec_t start; + zpios_timespec_t stop; + zpios_timespec_t delta; +} zpios_time_t; + +typedef struct zpios_stats { + zpios_time_t total_time; + zpios_time_t cr_time; + zpios_time_t rm_time; + zpios_time_t wr_time; + zpios_time_t rd_time; + uint64_t wr_data; + uint64_t wr_chunks; + uint64_t rd_data; + uint64_t rd_chunks; +} zpios_stats_t; + +#define ZPIOS_CMD_MAGIC 0x49715385U +typedef struct zpios_cmd { + uint32_t cmd_magic; /* Unique magic */ + uint32_t cmd_id; /* Run ID */ + char cmd_pool[ZPIOS_NAME_SIZE]; /* Pool name */ + uint64_t cmd_chunk_size; /* Chunk size */ + uint32_t cmd_thread_count; /* Thread count */ + uint32_t cmd_region_count; /* Region count */ + uint64_t cmd_region_size; /* Region size */ + uint64_t cmd_offset; /* Region offset */ + uint32_t cmd_region_noise; /* Region noise */ + uint32_t cmd_chunk_noise; /* Chunk noise */ + uint32_t cmd_thread_delay; /* Thread delay */ + uint32_t cmd_flags; /* Test flags */ + char cmd_pre[ZPIOS_PATH_SIZE]; /* Pre-exec hook */ + char cmd_post[ZPIOS_PATH_SIZE]; /* Post-exec hook */ + char cmd_log[ZPIOS_PATH_SIZE]; /* Requested log dir */ + uint64_t cmd_data_size; /* Opaque data size */ + char cmd_data_str[0]; /* Opaque data region */ +} zpios_cmd_t; + +/* Valid ioctls */ +#define ZPIOS_CFG _IOWR('f', 101, zpios_cfg_t) +#define ZPIOS_CMD _IOWR('f', 102, zpios_cmd_t) + +/* Valid configuration commands */ +#define ZPIOS_CFG_BUFFER_CLEAR 0x001 /* Clear text buffer */ +#define ZPIOS_CFG_BUFFER_SIZE 0x002 /* Resize text buffer */ + +#ifndef NSEC_PER_SEC +#define NSEC_PER_SEC 1000000000L +#endif + +static inline +void +zpios_timespec_normalize(zpios_timespec_t *ts, uint32_t sec, uint32_t nsec) +{ + while (nsec >= NSEC_PER_SEC) { + nsec -= NSEC_PER_SEC; + sec++; + } + while (nsec < 0) { + nsec += NSEC_PER_SEC; + sec--; + } + ts->ts_sec = sec; + ts->ts_nsec = nsec; +} + +static inline +zpios_timespec_t +zpios_timespec_add(zpios_timespec_t lhs, zpios_timespec_t rhs) +{ + zpios_timespec_t ts_delta; + zpios_timespec_normalize(&ts_delta, lhs.ts_sec + rhs.ts_sec, + lhs.ts_nsec + rhs.ts_nsec); + return (ts_delta); +} + +static inline +zpios_timespec_t +zpios_timespec_sub(zpios_timespec_t lhs, zpios_timespec_t rhs) +{ + zpios_timespec_t ts_delta; + zpios_timespec_normalize(&ts_delta, lhs.ts_sec - rhs.ts_sec, + lhs.ts_nsec - rhs.ts_nsec); + return (ts_delta); +} + +#ifdef _KERNEL + +static inline +zpios_timespec_t +zpios_timespec_now(void) +{ + zpios_timespec_t zts_now; + struct timespec ts_now; + + ts_now = current_kernel_time(); + zts_now.ts_sec = ts_now.tv_sec; + zts_now.ts_nsec = ts_now.tv_nsec; + + return (zts_now); +} + +#else + +static inline +double +zpios_timespec_to_double(zpios_timespec_t ts) +{ + return + ((double)(ts.ts_sec) + + ((double)(ts.ts_nsec) / (double)(NSEC_PER_SEC))); +} + +#endif /* _KERNEL */ + +#endif /* _ZPIOS_CTL_H */ --- linux-4.4.0.orig/zfs/include/zpios-internal.h +++ linux-4.4.0/zfs/include/zpios-internal.h @@ -0,0 +1,112 @@ +/* + * ZPIOS is a heavily modified version of the original PIOS test code. + * It is designed to have the test code running in the Linux kernel + * against ZFS while still being flexibly controled from user space. + * + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * LLNL-CODE-403049 + * + * Original PIOS Test Code + * Copyright (C) 2004 Cluster File Systems, Inc. + * Written by Peter Braam + * Atul Vidwansa + * Milind Dumbare + * + * This file is part of ZFS on Linux. + * For details, see . + * + * ZPIOS is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * ZPIOS is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with ZPIOS. If not, see . + */ + +#ifndef _ZPIOS_INTERNAL_H +#define _ZPIOS_INTERNAL_H + +#include "zpios-ctl.h" + +#define OBJ_SIZE 64 + +struct run_args; + +typedef struct dmu_obj { + objset_t *os; + uint64_t obj; +} dmu_obj_t; + +/* thread doing the IO data */ +typedef struct thread_data { + struct run_args *run_args; + int thread_no; + int rc; + zpios_stats_t stats; + kmutex_t lock; +} thread_data_t; + +/* region for IO data */ +typedef struct zpios_region { + __u64 wr_offset; + __u64 rd_offset; + __u64 init_offset; + __u64 max_offset; + dmu_obj_t obj; + zpios_stats_t stats; + kmutex_t lock; +} zpios_region_t; + +/* arguments for one run */ +typedef struct run_args { + /* Config args */ + int id; + char pool[ZPIOS_NAME_SIZE]; + __u64 chunk_size; + __u32 thread_count; + __u32 region_count; + __u64 region_size; + __u64 offset; + __u32 region_noise; + __u32 chunk_noise; + __u32 thread_delay; + __u32 flags; + char pre[ZPIOS_PATH_SIZE]; + char post[ZPIOS_PATH_SIZE]; + char log[ZPIOS_PATH_SIZE]; + + /* Control data */ + objset_t *os; + wait_queue_head_t waitq; + volatile uint64_t threads_done; + kmutex_t lock_work; + kmutex_t lock_ctl; + __u32 region_next; + + /* Results data */ + struct file *file; + zpios_stats_t stats; + + thread_data_t **threads; + zpios_region_t regions[0]; /* Must be last element */ +} run_args_t; + +#define ZPIOS_INFO_BUFFER_SIZE 65536 +#define ZPIOS_INFO_BUFFER_REDZONE 1024 + +typedef struct zpios_info { + spinlock_t info_lock; + int info_size; + char *info_buffer; + char *info_head; /* Internal kernel use only */ +} zpios_info_t; + +#endif /* _ZPIOS_INTERNAL_H */ --- linux-4.4.0.orig/zfs/lib/Makefile.in +++ linux-4.4.0/zfs/lib/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libavl/Makefile.in +++ linux-4.4.0/zfs/lib/libavl/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libefi/Makefile.in +++ linux-4.4.0/zfs/lib/libefi/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libnvpair/Makefile.in +++ linux-4.4.0/zfs/lib/libnvpair/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libshare/Makefile.in +++ linux-4.4.0/zfs/lib/libshare/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/asm-generic/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/asm-generic/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/asm-i386/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/asm-i386/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/asm-x86_64/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/asm-x86_64/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/ia32/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/ia32/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/ia32/sys/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/ia32/sys/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/rpc/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/rpc/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/sys/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/sys/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/sys/dktp/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/sys/dktp/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/sys/sysevent/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/sys/sysevent/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libspl/include/util/Makefile.in +++ linux-4.4.0/zfs/lib/libspl/include/util/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libunicode/Makefile.in +++ linux-4.4.0/zfs/lib/libunicode/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libuutil/Makefile.in +++ linux-4.4.0/zfs/lib/libuutil/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libzfs/Makefile.in +++ linux-4.4.0/zfs/lib/libzfs/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libzfs/libzfs.pc.in +++ linux-4.4.0/zfs/lib/libzfs/libzfs.pc.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libzfs/libzfs_core.pc.in +++ linux-4.4.0/zfs/lib/libzfs/libzfs_core.pc.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libzfs_core/Makefile.in +++ linux-4.4.0/zfs/lib/libzfs_core/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/lib/libzpool/Makefile.in +++ linux-4.4.0/zfs/lib/libzpool/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/man/Makefile.in +++ linux-4.4.0/zfs/man/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/man/man1/Makefile.in +++ linux-4.4.0/zfs/man/man1/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/man/man5/Makefile.in +++ linux-4.4.0/zfs/man/man5/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/man/man8/Makefile.in +++ linux-4.4.0/zfs/man/man8/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/man/man8/zed.8.in +++ linux-4.4.0/zfs/man/man8/zed.8.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/module/Makefile.in +++ linux-4.4.0/zfs/module/Makefile.in @@ -0,0 +1,75 @@ +subdir-m += avl +subdir-m += nvpair +subdir-m += unicode +subdir-m += zcommon +subdir-m += zfs +subdir-m += zpios + +INSTALL_MOD_DIR ?= extra + +ZFS_MODULE_CFLAGS += -include @SPL_OBJ@/spl_config.h +ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h +ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include -I@SPL@/include -I@SPL@ +export ZFS_MODULE_CFLAGS + +modules: + @# Make the exported SPL symbols available to these modules. + @# They may be in the root of SPL_OBJ when building against + @# installed devel headers, or they may be in the module + @# subdirectory when building against the spl source tree. + @if [ -f @SPL_OBJ@/@SPL_SYMBOLS@ ]; then \ + /bin/cp @SPL_OBJ@/@SPL_SYMBOLS@ .; \ + elif [ -f @SPL_OBJ@/module/@SPL_SYMBOLS@ ]; then \ + /bin/cp @SPL_OBJ@/module/@SPL_SYMBOLS@ .; \ + else \ + echo -e "\n" \ + "*** Missing spl symbols ensure you have built the spl:\n" \ + "*** - @SPL_OBJ@/@SPL_SYMBOLS@, or\n" \ + "*** - @SPL_OBJ@/module/@SPL_SYMBOLS@\n"; \ + exit 1; \ + fi + $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ CONFIG_ZFS=m $@ + +clean: + @# Only cleanup the kernel build directories when CONFIG_KERNEL + @# is defined. This indicates that kernel modules should be built. +@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@ + + if [ -f @SPL_SYMBOLS@ ]; then $(RM) @SPL_SYMBOLS@; fi + if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi + if [ -f Module.markers ]; then $(RM) Module.markers; fi + +modules_install: + @# Install the kernel modules + $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` $@ \ + INSTALL_MOD_PATH=$(DESTDIR)$(INSTALL_MOD_PATH) \ + INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \ + KERNELRELEASE=@LINUX_VERSION@ + @# Remove extraneous build products when packaging + kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \ + if [ -n "$(DESTDIR)" ]; then \ + find $$kmoddir -name 'modules.*' | xargs $(RM); \ + fi + sysmap=$(DESTDIR)$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \ + if [ -f $$sysmap ]; then \ + depmod -ae -F $$sysmap @LINUX_VERSION@; \ + fi + +modules_uninstall: + @# Uninstall the kernel modules + kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@ + list='$(subdir-m)'; for subdir in $$list; do \ + $(RM) -R $$kmoddir/$(INSTALL_MOD_DIR)/$$subdir; \ + done + +distdir: + list='$(subdir-m)'; for subdir in $$list; do \ + (find @top_srcdir@/module/$$subdir -name '*.c' -o -name '*.h' |\ + xargs /bin/cp -t $$distdir/$$subdir); \ + done + +distclean maintainer-clean: clean +install: modules_install +uninstall: modules_uninstall +all: modules +check: --- linux-4.4.0.orig/zfs/module/avl/Makefile.in +++ linux-4.4.0/zfs/module/avl/Makefile.in @@ -0,0 +1,10 @@ +src = @abs_top_srcdir@/module/avl +obj = @abs_builddir@ + +MODULE := zavl + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += avl.o --- linux-4.4.0.orig/zfs/module/avl/avl.c +++ linux-4.4.0/zfs/module/avl/avl.c @@ -0,0 +1,1096 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2014 by Delphix. All rights reserved. + */ + +/* + * AVL - generic AVL tree implementation for kernel use + * + * A complete description of AVL trees can be found in many CS textbooks. + * + * Here is a very brief overview. An AVL tree is a binary search tree that is + * almost perfectly balanced. By "almost" perfectly balanced, we mean that at + * any given node, the left and right subtrees are allowed to differ in height + * by at most 1 level. + * + * This relaxation from a perfectly balanced binary tree allows doing + * insertion and deletion relatively efficiently. Searching the tree is + * still a fast operation, roughly O(log(N)). + * + * The key to insertion and deletion is a set of tree manipulations called + * rotations, which bring unbalanced subtrees back into the semi-balanced state. + * + * This implementation of AVL trees has the following peculiarities: + * + * - The AVL specific data structures are physically embedded as fields + * in the "using" data structures. To maintain generality the code + * must constantly translate between "avl_node_t *" and containing + * data structure "void *"s by adding/subtracting the avl_offset. + * + * - Since the AVL data is always embedded in other structures, there is + * no locking or memory allocation in the AVL routines. This must be + * provided for by the enclosing data structure's semantics. Typically, + * avl_insert()/_add()/_remove()/avl_insert_here() require some kind of + * exclusive write lock. Other operations require a read lock. + * + * - The implementation uses iteration instead of explicit recursion, + * since it is intended to run on limited size kernel stacks. Since + * there is no recursion stack present to move "up" in the tree, + * there is an explicit "parent" link in the avl_node_t. + * + * - The left/right children pointers of a node are in an array. + * In the code, variables (instead of constants) are used to represent + * left and right indices. The implementation is written as if it only + * dealt with left handed manipulations. By changing the value assigned + * to "left", the code also works for right handed trees. The + * following variables/terms are frequently used: + * + * int left; // 0 when dealing with left children, + * // 1 for dealing with right children + * + * int left_heavy; // -1 when left subtree is taller at some node, + * // +1 when right subtree is taller + * + * int right; // will be the opposite of left (0 or 1) + * int right_heavy;// will be the opposite of left_heavy (-1 or 1) + * + * int direction; // 0 for "<" (ie. left child); 1 for ">" (right) + * + * Though it is a little more confusing to read the code, the approach + * allows using half as much code (and hence cache footprint) for tree + * manipulations and eliminates many conditional branches. + * + * - The avl_index_t is an opaque "cookie" used to find nodes at or + * adjacent to where a new value would be inserted in the tree. The value + * is a modified "avl_node_t *". The bottom bit (normally 0 for a + * pointer) is set to indicate if that the new node has a value greater + * than the value of the indicated "avl_node_t *". + * + * Note - in addition to userland (e.g. libavl and libutil) and the kernel + * (e.g. genunix), avl.c is compiled into ld.so and kmdb's genunix module, + * which each have their own compilation environments and subsequent + * requirements. Each of these environments must be considered when adding + * dependencies from avl.c. + */ + +#include +#include +#include +#include +#include + +/* + * Small arrays to translate between balance (or diff) values and child indices. + * + * Code that deals with binary tree data structures will randomly use + * left and right children when examining a tree. C "if()" statements + * which evaluate randomly suffer from very poor hardware branch prediction. + * In this code we avoid some of the branch mispredictions by using the + * following translation arrays. They replace random branches with an + * additional memory reference. Since the translation arrays are both very + * small the data should remain efficiently in cache. + */ +static const int avl_child2balance[2] = {-1, 1}; +static const int avl_balance2child[] = {0, 0, 1}; + + +/* + * Walk from one node to the previous valued node (ie. an infix walk + * towards the left). At any given node we do one of 2 things: + * + * - If there is a left child, go to it, then to it's rightmost descendant. + * + * - otherwise we return through parent nodes until we've come from a right + * child. + * + * Return Value: + * NULL - if at the end of the nodes + * otherwise next node + */ +void * +avl_walk(avl_tree_t *tree, void *oldnode, int left) +{ + size_t off = tree->avl_offset; + avl_node_t *node = AVL_DATA2NODE(oldnode, off); + int right = 1 - left; + int was_child; + + + /* + * nowhere to walk to if tree is empty + */ + if (node == NULL) + return (NULL); + + /* + * Visit the previous valued node. There are two possibilities: + * + * If this node has a left child, go down one left, then all + * the way right. + */ + if (node->avl_child[left] != NULL) { + for (node = node->avl_child[left]; + node->avl_child[right] != NULL; + node = node->avl_child[right]) + ; + /* + * Otherwise, return thru left children as far as we can. + */ + } else { + for (;;) { + was_child = AVL_XCHILD(node); + node = AVL_XPARENT(node); + if (node == NULL) + return (NULL); + if (was_child == right) + break; + } + } + + return (AVL_NODE2DATA(node, off)); +} + +/* + * Return the lowest valued node in a tree or NULL. + * (leftmost child from root of tree) + */ +void * +avl_first(avl_tree_t *tree) +{ + avl_node_t *node; + avl_node_t *prev = NULL; + size_t off = tree->avl_offset; + + for (node = tree->avl_root; node != NULL; node = node->avl_child[0]) + prev = node; + + if (prev != NULL) + return (AVL_NODE2DATA(prev, off)); + return (NULL); +} + +/* + * Return the highest valued node in a tree or NULL. + * (rightmost child from root of tree) + */ +void * +avl_last(avl_tree_t *tree) +{ + avl_node_t *node; + avl_node_t *prev = NULL; + size_t off = tree->avl_offset; + + for (node = tree->avl_root; node != NULL; node = node->avl_child[1]) + prev = node; + + if (prev != NULL) + return (AVL_NODE2DATA(prev, off)); + return (NULL); +} + +/* + * Access the node immediately before or after an insertion point. + * + * "avl_index_t" is a (avl_node_t *) with the bottom bit indicating a child + * + * Return value: + * NULL: no node in the given direction + * "void *" of the found tree node + */ +void * +avl_nearest(avl_tree_t *tree, avl_index_t where, int direction) +{ + int child = AVL_INDEX2CHILD(where); + avl_node_t *node = AVL_INDEX2NODE(where); + void *data; + size_t off = tree->avl_offset; + + if (node == NULL) { + ASSERT(tree->avl_root == NULL); + return (NULL); + } + data = AVL_NODE2DATA(node, off); + if (child != direction) + return (data); + + return (avl_walk(tree, data, direction)); +} + + +/* + * Search for the node which contains "value". The algorithm is a + * simple binary tree search. + * + * return value: + * NULL: the value is not in the AVL tree + * *where (if not NULL) is set to indicate the insertion point + * "void *" of the found tree node + */ +void * +avl_find(avl_tree_t *tree, const void *value, avl_index_t *where) +{ + avl_node_t *node; + avl_node_t *prev = NULL; + int child = 0; + int diff; + size_t off = tree->avl_offset; + + for (node = tree->avl_root; node != NULL; + node = node->avl_child[child]) { + + prev = node; + + diff = tree->avl_compar(value, AVL_NODE2DATA(node, off)); + ASSERT(-1 <= diff && diff <= 1); + if (diff == 0) { +#ifdef DEBUG + if (where != NULL) + *where = 0; +#endif + return (AVL_NODE2DATA(node, off)); + } + child = avl_balance2child[1 + diff]; + + } + + if (where != NULL) + *where = AVL_MKINDEX(prev, child); + + return (NULL); +} + + +/* + * Perform a rotation to restore balance at the subtree given by depth. + * + * This routine is used by both insertion and deletion. The return value + * indicates: + * 0 : subtree did not change height + * !0 : subtree was reduced in height + * + * The code is written as if handling left rotations, right rotations are + * symmetric and handled by swapping values of variables right/left[_heavy] + * + * On input balance is the "new" balance at "node". This value is either + * -2 or +2. + */ +static int +avl_rotation(avl_tree_t *tree, avl_node_t *node, int balance) +{ + int left = !(balance < 0); /* when balance = -2, left will be 0 */ + int right = 1 - left; + int left_heavy = balance >> 1; + int right_heavy = -left_heavy; + avl_node_t *parent = AVL_XPARENT(node); + avl_node_t *child = node->avl_child[left]; + avl_node_t *cright; + avl_node_t *gchild; + avl_node_t *gright; + avl_node_t *gleft; + int which_child = AVL_XCHILD(node); + int child_bal = AVL_XBALANCE(child); + + /* BEGIN CSTYLED */ + /* + * case 1 : node is overly left heavy, the left child is balanced or + * also left heavy. This requires the following rotation. + * + * (node bal:-2) + * / \ + * / \ + * (child bal:0 or -1) + * / \ + * / \ + * cright + * + * becomes: + * + * (child bal:1 or 0) + * / \ + * / \ + * (node bal:-1 or 0) + * / \ + * / \ + * cright + * + * we detect this situation by noting that child's balance is not + * right_heavy. + */ + /* END CSTYLED */ + if (child_bal != right_heavy) { + + /* + * compute new balance of nodes + * + * If child used to be left heavy (now balanced) we reduced + * the height of this sub-tree -- used in "return...;" below + */ + child_bal += right_heavy; /* adjust towards right */ + + /* + * move "cright" to be node's left child + */ + cright = child->avl_child[right]; + node->avl_child[left] = cright; + if (cright != NULL) { + AVL_SETPARENT(cright, node); + AVL_SETCHILD(cright, left); + } + + /* + * move node to be child's right child + */ + child->avl_child[right] = node; + AVL_SETBALANCE(node, -child_bal); + AVL_SETCHILD(node, right); + AVL_SETPARENT(node, child); + + /* + * update the pointer into this subtree + */ + AVL_SETBALANCE(child, child_bal); + AVL_SETCHILD(child, which_child); + AVL_SETPARENT(child, parent); + if (parent != NULL) + parent->avl_child[which_child] = child; + else + tree->avl_root = child; + + return (child_bal == 0); + } + + /* BEGIN CSTYLED */ + /* + * case 2 : When node is left heavy, but child is right heavy we use + * a different rotation. + * + * (node b:-2) + * / \ + * / \ + * / \ + * (child b:+1) + * / \ + * / \ + * (gchild b: != 0) + * / \ + * / \ + * gleft gright + * + * becomes: + * + * (gchild b:0) + * / \ + * / \ + * / \ + * (child b:?) (node b:?) + * / \ / \ + * / \ / \ + * gleft gright + * + * computing the new balances is more complicated. As an example: + * if gchild was right_heavy, then child is now left heavy + * else it is balanced + */ + /* END CSTYLED */ + gchild = child->avl_child[right]; + gleft = gchild->avl_child[left]; + gright = gchild->avl_child[right]; + + /* + * move gright to left child of node and + * + * move gleft to right child of node + */ + node->avl_child[left] = gright; + if (gright != NULL) { + AVL_SETPARENT(gright, node); + AVL_SETCHILD(gright, left); + } + + child->avl_child[right] = gleft; + if (gleft != NULL) { + AVL_SETPARENT(gleft, child); + AVL_SETCHILD(gleft, right); + } + + /* + * move child to left child of gchild and + * + * move node to right child of gchild and + * + * fixup parent of all this to point to gchild + */ + balance = AVL_XBALANCE(gchild); + gchild->avl_child[left] = child; + AVL_SETBALANCE(child, (balance == right_heavy ? left_heavy : 0)); + AVL_SETPARENT(child, gchild); + AVL_SETCHILD(child, left); + + gchild->avl_child[right] = node; + AVL_SETBALANCE(node, (balance == left_heavy ? right_heavy : 0)); + AVL_SETPARENT(node, gchild); + AVL_SETCHILD(node, right); + + AVL_SETBALANCE(gchild, 0); + AVL_SETPARENT(gchild, parent); + AVL_SETCHILD(gchild, which_child); + if (parent != NULL) + parent->avl_child[which_child] = gchild; + else + tree->avl_root = gchild; + + return (1); /* the new tree is always shorter */ +} + + +/* + * Insert a new node into an AVL tree at the specified (from avl_find()) place. + * + * Newly inserted nodes are always leaf nodes in the tree, since avl_find() + * searches out to the leaf positions. The avl_index_t indicates the node + * which will be the parent of the new node. + * + * After the node is inserted, a single rotation further up the tree may + * be necessary to maintain an acceptable AVL balance. + */ +void +avl_insert(avl_tree_t *tree, void *new_data, avl_index_t where) +{ + avl_node_t *node; + avl_node_t *parent = AVL_INDEX2NODE(where); + int old_balance; + int new_balance; + int which_child = AVL_INDEX2CHILD(where); + size_t off = tree->avl_offset; + + ASSERT(tree); +#ifdef _LP64 + ASSERT(((uintptr_t)new_data & 0x7) == 0); +#endif + + node = AVL_DATA2NODE(new_data, off); + + /* + * First, add the node to the tree at the indicated position. + */ + ++tree->avl_numnodes; + + node->avl_child[0] = NULL; + node->avl_child[1] = NULL; + + AVL_SETCHILD(node, which_child); + AVL_SETBALANCE(node, 0); + AVL_SETPARENT(node, parent); + if (parent != NULL) { + ASSERT(parent->avl_child[which_child] == NULL); + parent->avl_child[which_child] = node; + } else { + ASSERT(tree->avl_root == NULL); + tree->avl_root = node; + } + /* + * Now, back up the tree modifying the balance of all nodes above the + * insertion point. If we get to a highly unbalanced ancestor, we + * need to do a rotation. If we back out of the tree we are done. + * If we brought any subtree into perfect balance (0), we are also done. + */ + for (;;) { + node = parent; + if (node == NULL) + return; + + /* + * Compute the new balance + */ + old_balance = AVL_XBALANCE(node); + new_balance = old_balance + avl_child2balance[which_child]; + + /* + * If we introduced equal balance, then we are done immediately + */ + if (new_balance == 0) { + AVL_SETBALANCE(node, 0); + return; + } + + /* + * If both old and new are not zero we went + * from -1 to -2 balance, do a rotation. + */ + if (old_balance != 0) + break; + + AVL_SETBALANCE(node, new_balance); + parent = AVL_XPARENT(node); + which_child = AVL_XCHILD(node); + } + + /* + * perform a rotation to fix the tree and return + */ + (void) avl_rotation(tree, node, new_balance); +} + +/* + * Insert "new_data" in "tree" in the given "direction" either after or + * before (AVL_AFTER, AVL_BEFORE) the data "here". + * + * Insertions can only be done at empty leaf points in the tree, therefore + * if the given child of the node is already present we move to either + * the AVL_PREV or AVL_NEXT and reverse the insertion direction. Since + * every other node in the tree is a leaf, this always works. + * + * To help developers using this interface, we assert that the new node + * is correctly ordered at every step of the way in DEBUG kernels. + */ +void +avl_insert_here( + avl_tree_t *tree, + void *new_data, + void *here, + int direction) +{ + avl_node_t *node; + int child = direction; /* rely on AVL_BEFORE == 0, AVL_AFTER == 1 */ +#ifdef DEBUG + int diff; +#endif + + ASSERT(tree != NULL); + ASSERT(new_data != NULL); + ASSERT(here != NULL); + ASSERT(direction == AVL_BEFORE || direction == AVL_AFTER); + + /* + * If corresponding child of node is not NULL, go to the neighboring + * node and reverse the insertion direction. + */ + node = AVL_DATA2NODE(here, tree->avl_offset); + +#ifdef DEBUG + diff = tree->avl_compar(new_data, here); + ASSERT(-1 <= diff && diff <= 1); + ASSERT(diff != 0); + ASSERT(diff > 0 ? child == 1 : child == 0); +#endif + + if (node->avl_child[child] != NULL) { + node = node->avl_child[child]; + child = 1 - child; + while (node->avl_child[child] != NULL) { +#ifdef DEBUG + diff = tree->avl_compar(new_data, + AVL_NODE2DATA(node, tree->avl_offset)); + ASSERT(-1 <= diff && diff <= 1); + ASSERT(diff != 0); + ASSERT(diff > 0 ? child == 1 : child == 0); +#endif + node = node->avl_child[child]; + } +#ifdef DEBUG + diff = tree->avl_compar(new_data, + AVL_NODE2DATA(node, tree->avl_offset)); + ASSERT(-1 <= diff && diff <= 1); + ASSERT(diff != 0); + ASSERT(diff > 0 ? child == 1 : child == 0); +#endif + } + ASSERT(node->avl_child[child] == NULL); + + avl_insert(tree, new_data, AVL_MKINDEX(node, child)); +} + +/* + * Add a new node to an AVL tree. + */ +void +avl_add(avl_tree_t *tree, void *new_node) +{ + avl_index_t where; + + /* + * This is unfortunate. We want to call panic() here, even for + * non-DEBUG kernels. In userland, however, we can't depend on anything + * in libc or else the rtld build process gets confused. So, all we can + * do in userland is resort to a normal ASSERT(). + */ + if (avl_find(tree, new_node, &where) != NULL) +#ifdef _KERNEL + panic("avl_find() succeeded inside avl_add()"); +#else + ASSERT(0); +#endif + avl_insert(tree, new_node, where); +} + +/* + * Delete a node from the AVL tree. Deletion is similar to insertion, but + * with 2 complications. + * + * First, we may be deleting an interior node. Consider the following subtree: + * + * d c c + * / \ / \ / \ + * b e b e b e + * / \ / \ / + * a c a a + * + * When we are deleting node (d), we find and bring up an adjacent valued leaf + * node, say (c), to take the interior node's place. In the code this is + * handled by temporarily swapping (d) and (c) in the tree and then using + * common code to delete (d) from the leaf position. + * + * Secondly, an interior deletion from a deep tree may require more than one + * rotation to fix the balance. This is handled by moving up the tree through + * parents and applying rotations as needed. The return value from + * avl_rotation() is used to detect when a subtree did not change overall + * height due to a rotation. + */ +void +avl_remove(avl_tree_t *tree, void *data) +{ + avl_node_t *delete; + avl_node_t *parent; + avl_node_t *node; + avl_node_t tmp; + int old_balance; + int new_balance; + int left; + int right; + int which_child; + size_t off = tree->avl_offset; + + ASSERT(tree); + + delete = AVL_DATA2NODE(data, off); + + /* + * Deletion is easiest with a node that has at most 1 child. + * We swap a node with 2 children with a sequentially valued + * neighbor node. That node will have at most 1 child. Note this + * has no effect on the ordering of the remaining nodes. + * + * As an optimization, we choose the greater neighbor if the tree + * is right heavy, otherwise the left neighbor. This reduces the + * number of rotations needed. + */ + if (delete->avl_child[0] != NULL && delete->avl_child[1] != NULL) { + + /* + * choose node to swap from whichever side is taller + */ + old_balance = AVL_XBALANCE(delete); + left = avl_balance2child[old_balance + 1]; + right = 1 - left; + + /* + * get to the previous value'd node + * (down 1 left, as far as possible right) + */ + for (node = delete->avl_child[left]; + node->avl_child[right] != NULL; + node = node->avl_child[right]) + ; + + /* + * create a temp placeholder for 'node' + * move 'node' to delete's spot in the tree + */ + tmp = *node; + + *node = *delete; + if (node->avl_child[left] == node) + node->avl_child[left] = &tmp; + + parent = AVL_XPARENT(node); + if (parent != NULL) + parent->avl_child[AVL_XCHILD(node)] = node; + else + tree->avl_root = node; + AVL_SETPARENT(node->avl_child[left], node); + AVL_SETPARENT(node->avl_child[right], node); + + /* + * Put tmp where node used to be (just temporary). + * It always has a parent and at most 1 child. + */ + delete = &tmp; + parent = AVL_XPARENT(delete); + parent->avl_child[AVL_XCHILD(delete)] = delete; + which_child = (delete->avl_child[1] != 0); + if (delete->avl_child[which_child] != NULL) + AVL_SETPARENT(delete->avl_child[which_child], delete); + } + + + /* + * Here we know "delete" is at least partially a leaf node. It can + * be easily removed from the tree. + */ + ASSERT(tree->avl_numnodes > 0); + --tree->avl_numnodes; + parent = AVL_XPARENT(delete); + which_child = AVL_XCHILD(delete); + if (delete->avl_child[0] != NULL) + node = delete->avl_child[0]; + else + node = delete->avl_child[1]; + + /* + * Connect parent directly to node (leaving out delete). + */ + if (node != NULL) { + AVL_SETPARENT(node, parent); + AVL_SETCHILD(node, which_child); + } + if (parent == NULL) { + tree->avl_root = node; + return; + } + parent->avl_child[which_child] = node; + + + /* + * Since the subtree is now shorter, begin adjusting parent balances + * and performing any needed rotations. + */ + do { + + /* + * Move up the tree and adjust the balance + * + * Capture the parent and which_child values for the next + * iteration before any rotations occur. + */ + node = parent; + old_balance = AVL_XBALANCE(node); + new_balance = old_balance - avl_child2balance[which_child]; + parent = AVL_XPARENT(node); + which_child = AVL_XCHILD(node); + + /* + * If a node was in perfect balance but isn't anymore then + * we can stop, since the height didn't change above this point + * due to a deletion. + */ + if (old_balance == 0) { + AVL_SETBALANCE(node, new_balance); + break; + } + + /* + * If the new balance is zero, we don't need to rotate + * else + * need a rotation to fix the balance. + * If the rotation doesn't change the height + * of the sub-tree we have finished adjusting. + */ + if (new_balance == 0) + AVL_SETBALANCE(node, new_balance); + else if (!avl_rotation(tree, node, new_balance)) + break; + } while (parent != NULL); +} + +#define AVL_REINSERT(tree, obj) \ + avl_remove((tree), (obj)); \ + avl_add((tree), (obj)) + +boolean_t +avl_update_lt(avl_tree_t *t, void *obj) +{ + void *neighbor; + + ASSERT(((neighbor = AVL_NEXT(t, obj)) == NULL) || + (t->avl_compar(obj, neighbor) <= 0)); + + neighbor = AVL_PREV(t, obj); + if ((neighbor != NULL) && (t->avl_compar(obj, neighbor) < 0)) { + AVL_REINSERT(t, obj); + return (B_TRUE); + } + + return (B_FALSE); +} + +boolean_t +avl_update_gt(avl_tree_t *t, void *obj) +{ + void *neighbor; + + ASSERT(((neighbor = AVL_PREV(t, obj)) == NULL) || + (t->avl_compar(obj, neighbor) >= 0)); + + neighbor = AVL_NEXT(t, obj); + if ((neighbor != NULL) && (t->avl_compar(obj, neighbor) > 0)) { + AVL_REINSERT(t, obj); + return (B_TRUE); + } + + return (B_FALSE); +} + +boolean_t +avl_update(avl_tree_t *t, void *obj) +{ + void *neighbor; + + neighbor = AVL_PREV(t, obj); + if ((neighbor != NULL) && (t->avl_compar(obj, neighbor) < 0)) { + AVL_REINSERT(t, obj); + return (B_TRUE); + } + + neighbor = AVL_NEXT(t, obj); + if ((neighbor != NULL) && (t->avl_compar(obj, neighbor) > 0)) { + AVL_REINSERT(t, obj); + return (B_TRUE); + } + + return (B_FALSE); +} + +void +avl_swap(avl_tree_t *tree1, avl_tree_t *tree2) +{ + avl_node_t *temp_node; + ulong_t temp_numnodes; + + ASSERT3P(tree1->avl_compar, ==, tree2->avl_compar); + ASSERT3U(tree1->avl_offset, ==, tree2->avl_offset); + ASSERT3U(tree1->avl_size, ==, tree2->avl_size); + + temp_node = tree1->avl_root; + temp_numnodes = tree1->avl_numnodes; + tree1->avl_root = tree2->avl_root; + tree1->avl_numnodes = tree2->avl_numnodes; + tree2->avl_root = temp_node; + tree2->avl_numnodes = temp_numnodes; +} + +/* + * initialize a new AVL tree + */ +void +avl_create(avl_tree_t *tree, int (*compar) (const void *, const void *), + size_t size, size_t offset) +{ + ASSERT(tree); + ASSERT(compar); + ASSERT(size > 0); + ASSERT(size >= offset + sizeof (avl_node_t)); +#ifdef _LP64 + ASSERT((offset & 0x7) == 0); +#endif + + tree->avl_compar = compar; + tree->avl_root = NULL; + tree->avl_numnodes = 0; + tree->avl_size = size; + tree->avl_offset = offset; +} + +/* + * Delete a tree. + */ +/* ARGSUSED */ +void +avl_destroy(avl_tree_t *tree) +{ + ASSERT(tree); + ASSERT(tree->avl_numnodes == 0); + ASSERT(tree->avl_root == NULL); +} + + +/* + * Return the number of nodes in an AVL tree. + */ +ulong_t +avl_numnodes(avl_tree_t *tree) +{ + ASSERT(tree); + return (tree->avl_numnodes); +} + +boolean_t +avl_is_empty(avl_tree_t *tree) +{ + ASSERT(tree); + return (tree->avl_numnodes == 0); +} + +#define CHILDBIT (1L) + +/* + * Post-order tree walk used to visit all tree nodes and destroy the tree + * in post order. This is used for destroying a tree without paying any cost + * for rebalancing it. + * + * example: + * + * void *cookie = NULL; + * my_data_t *node; + * + * while ((node = avl_destroy_nodes(tree, &cookie)) != NULL) + * free(node); + * avl_destroy(tree); + * + * The cookie is really an avl_node_t to the current node's parent and + * an indication of which child you looked at last. + * + * On input, a cookie value of CHILDBIT indicates the tree is done. + */ +void * +avl_destroy_nodes(avl_tree_t *tree, void **cookie) +{ + avl_node_t *node; + avl_node_t *parent; + int child; + void *first; + size_t off = tree->avl_offset; + + /* + * Initial calls go to the first node or it's right descendant. + */ + if (*cookie == NULL) { + first = avl_first(tree); + + /* + * deal with an empty tree + */ + if (first == NULL) { + *cookie = (void *)CHILDBIT; + return (NULL); + } + + node = AVL_DATA2NODE(first, off); + parent = AVL_XPARENT(node); + goto check_right_side; + } + + /* + * If there is no parent to return to we are done. + */ + parent = (avl_node_t *)((uintptr_t)(*cookie) & ~CHILDBIT); + if (parent == NULL) { + if (tree->avl_root != NULL) { + ASSERT(tree->avl_numnodes == 1); + tree->avl_root = NULL; + tree->avl_numnodes = 0; + } + return (NULL); + } + + /* + * Remove the child pointer we just visited from the parent and tree. + */ + child = (uintptr_t)(*cookie) & CHILDBIT; + parent->avl_child[child] = NULL; + ASSERT(tree->avl_numnodes > 1); + --tree->avl_numnodes; + + /* + * If we just did a right child or there isn't one, go up to parent. + */ + if (child == 1 || parent->avl_child[1] == NULL) { + node = parent; + parent = AVL_XPARENT(parent); + goto done; + } + + /* + * Do parent's right child, then leftmost descendent. + */ + node = parent->avl_child[1]; + while (node->avl_child[0] != NULL) { + parent = node; + node = node->avl_child[0]; + } + + /* + * If here, we moved to a left child. It may have one + * child on the right (when balance == +1). + */ +check_right_side: + if (node->avl_child[1] != NULL) { + ASSERT(AVL_XBALANCE(node) == 1); + parent = node; + node = node->avl_child[1]; + ASSERT(node->avl_child[0] == NULL && + node->avl_child[1] == NULL); + } else { + ASSERT(AVL_XBALANCE(node) <= 0); + } + +done: + if (parent == NULL) { + *cookie = (void *)CHILDBIT; + ASSERT(node == tree->avl_root); + } else { + *cookie = (void *)((uintptr_t)parent | AVL_XCHILD(node)); + } + + return (AVL_NODE2DATA(node, off)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +static int __init +avl_init(void) +{ + return (0); +} + +static void __exit +avl_fini(void) +{ +} + +module_init(avl_init); +module_exit(avl_fini); + +MODULE_DESCRIPTION("Generic AVL tree implementation"); +MODULE_AUTHOR(ZFS_META_AUTHOR); +MODULE_LICENSE(ZFS_META_LICENSE); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); + +EXPORT_SYMBOL(avl_create); +EXPORT_SYMBOL(avl_find); +EXPORT_SYMBOL(avl_insert); +EXPORT_SYMBOL(avl_insert_here); +EXPORT_SYMBOL(avl_walk); +EXPORT_SYMBOL(avl_first); +EXPORT_SYMBOL(avl_last); +EXPORT_SYMBOL(avl_nearest); +EXPORT_SYMBOL(avl_add); +EXPORT_SYMBOL(avl_swap); +EXPORT_SYMBOL(avl_is_empty); +EXPORT_SYMBOL(avl_remove); +EXPORT_SYMBOL(avl_numnodes); +EXPORT_SYMBOL(avl_destroy_nodes); +EXPORT_SYMBOL(avl_destroy); +#endif --- linux-4.4.0.orig/zfs/module/nvpair/Makefile.in +++ linux-4.4.0/zfs/module/nvpair/Makefile.in @@ -0,0 +1,13 @@ +src = @abs_top_srcdir@/module/nvpair +obj = @abs_builddir@ + +MODULE := znvpair + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += nvpair.o +$(MODULE)-objs += fnvpair.o +$(MODULE)-objs += nvpair_alloc_spl.o +$(MODULE)-objs += nvpair_alloc_fixed.o --- linux-4.4.0.orig/zfs/module/nvpair/fnvpair.c +++ linux-4.4.0/zfs/module/nvpair/fnvpair.c @@ -0,0 +1,581 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#ifndef _KERNEL +#include +#endif + +/* + * "Force" nvlist wrapper. + * + * These functions wrap the nvlist_* functions with assertions that assume + * the operation is successful. This allows the caller's code to be much + * more readable, especially for the fnvlist_lookup_* and fnvpair_value_* + * functions, which can return the requested value (rather than filling in + * a pointer). + * + * These functions use NV_UNIQUE_NAME, encoding NV_ENCODE_NATIVE, and allocate + * with KM_SLEEP. + * + * More wrappers should be added as needed -- for example + * nvlist_lookup_*_array and nvpair_value_*_array. + */ + +nvlist_t * +fnvlist_alloc(void) +{ + nvlist_t *nvl; + VERIFY0(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP)); + return (nvl); +} + +void +fnvlist_free(nvlist_t *nvl) +{ + nvlist_free(nvl); +} + +size_t +fnvlist_size(nvlist_t *nvl) +{ + size_t size; + VERIFY0(nvlist_size(nvl, &size, NV_ENCODE_NATIVE)); + return (size); +} + +/* + * Returns allocated buffer of size *sizep. Caller must free the buffer with + * fnvlist_pack_free(). + */ +char * +fnvlist_pack(nvlist_t *nvl, size_t *sizep) +{ + char *packed = 0; + VERIFY3U(nvlist_pack(nvl, &packed, sizep, NV_ENCODE_NATIVE, + KM_SLEEP), ==, 0); + return (packed); +} + +/*ARGSUSED*/ +void +fnvlist_pack_free(char *pack, size_t size) +{ +#ifdef _KERNEL + kmem_free(pack, size); +#else + free(pack); +#endif +} + +nvlist_t * +fnvlist_unpack(char *buf, size_t buflen) +{ + nvlist_t *rv; + VERIFY0(nvlist_unpack(buf, buflen, &rv, KM_SLEEP)); + return (rv); +} + +nvlist_t * +fnvlist_dup(nvlist_t *nvl) +{ + nvlist_t *rv; + VERIFY0(nvlist_dup(nvl, &rv, KM_SLEEP)); + return (rv); +} + +void +fnvlist_merge(nvlist_t *dst, nvlist_t *src) +{ + VERIFY0(nvlist_merge(dst, src, KM_SLEEP)); +} + +size_t +fnvlist_num_pairs(nvlist_t *nvl) +{ + size_t count = 0; + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(nvl, 0); pair != NULL; + pair = nvlist_next_nvpair(nvl, pair)) + count++; + return (count); +} + +void +fnvlist_add_boolean(nvlist_t *nvl, const char *name) +{ + VERIFY0(nvlist_add_boolean(nvl, name)); +} + +void +fnvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t val) +{ + VERIFY0(nvlist_add_boolean_value(nvl, name, val)); +} + +void +fnvlist_add_byte(nvlist_t *nvl, const char *name, uchar_t val) +{ + VERIFY0(nvlist_add_byte(nvl, name, val)); +} + +void +fnvlist_add_int8(nvlist_t *nvl, const char *name, int8_t val) +{ + VERIFY0(nvlist_add_int8(nvl, name, val)); +} + +void +fnvlist_add_uint8(nvlist_t *nvl, const char *name, uint8_t val) +{ + VERIFY0(nvlist_add_uint8(nvl, name, val)); +} + +void +fnvlist_add_int16(nvlist_t *nvl, const char *name, int16_t val) +{ + VERIFY0(nvlist_add_int16(nvl, name, val)); +} + +void +fnvlist_add_uint16(nvlist_t *nvl, const char *name, uint16_t val) +{ + VERIFY0(nvlist_add_uint16(nvl, name, val)); +} + +void +fnvlist_add_int32(nvlist_t *nvl, const char *name, int32_t val) +{ + VERIFY0(nvlist_add_int32(nvl, name, val)); +} + +void +fnvlist_add_uint32(nvlist_t *nvl, const char *name, uint32_t val) +{ + VERIFY0(nvlist_add_uint32(nvl, name, val)); +} + +void +fnvlist_add_int64(nvlist_t *nvl, const char *name, int64_t val) +{ + VERIFY0(nvlist_add_int64(nvl, name, val)); +} + +void +fnvlist_add_uint64(nvlist_t *nvl, const char *name, uint64_t val) +{ + VERIFY0(nvlist_add_uint64(nvl, name, val)); +} + +void +fnvlist_add_string(nvlist_t *nvl, const char *name, const char *val) +{ + VERIFY0(nvlist_add_string(nvl, name, val)); +} + +void +fnvlist_add_nvlist(nvlist_t *nvl, const char *name, nvlist_t *val) +{ + VERIFY0(nvlist_add_nvlist(nvl, name, val)); +} + +void +fnvlist_add_nvpair(nvlist_t *nvl, nvpair_t *pair) +{ + VERIFY0(nvlist_add_nvpair(nvl, pair)); +} + +void +fnvlist_add_boolean_array(nvlist_t *nvl, const char *name, + boolean_t *val, uint_t n) +{ + VERIFY0(nvlist_add_boolean_array(nvl, name, val, n)); +} + +void +fnvlist_add_byte_array(nvlist_t *nvl, const char *name, uchar_t *val, uint_t n) +{ + VERIFY0(nvlist_add_byte_array(nvl, name, val, n)); +} + +void +fnvlist_add_int8_array(nvlist_t *nvl, const char *name, int8_t *val, uint_t n) +{ + VERIFY0(nvlist_add_int8_array(nvl, name, val, n)); +} + +void +fnvlist_add_uint8_array(nvlist_t *nvl, const char *name, uint8_t *val, uint_t n) +{ + VERIFY0(nvlist_add_uint8_array(nvl, name, val, n)); +} + +void +fnvlist_add_int16_array(nvlist_t *nvl, const char *name, int16_t *val, uint_t n) +{ + VERIFY0(nvlist_add_int16_array(nvl, name, val, n)); +} + +void +fnvlist_add_uint16_array(nvlist_t *nvl, const char *name, + uint16_t *val, uint_t n) +{ + VERIFY0(nvlist_add_uint16_array(nvl, name, val, n)); +} + +void +fnvlist_add_int32_array(nvlist_t *nvl, const char *name, int32_t *val, uint_t n) +{ + VERIFY0(nvlist_add_int32_array(nvl, name, val, n)); +} + +void +fnvlist_add_uint32_array(nvlist_t *nvl, const char *name, + uint32_t *val, uint_t n) +{ + VERIFY0(nvlist_add_uint32_array(nvl, name, val, n)); +} + +void +fnvlist_add_int64_array(nvlist_t *nvl, const char *name, int64_t *val, uint_t n) +{ + VERIFY0(nvlist_add_int64_array(nvl, name, val, n)); +} + +void +fnvlist_add_uint64_array(nvlist_t *nvl, const char *name, + uint64_t *val, uint_t n) +{ + VERIFY0(nvlist_add_uint64_array(nvl, name, val, n)); +} + +void +fnvlist_add_string_array(nvlist_t *nvl, const char *name, + char * const *val, uint_t n) +{ + VERIFY0(nvlist_add_string_array(nvl, name, val, n)); +} + +void +fnvlist_add_nvlist_array(nvlist_t *nvl, const char *name, + nvlist_t **val, uint_t n) +{ + VERIFY0(nvlist_add_nvlist_array(nvl, name, val, n)); +} + +void +fnvlist_remove(nvlist_t *nvl, const char *name) +{ + VERIFY0(nvlist_remove_all(nvl, name)); +} + +void +fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair) +{ + VERIFY0(nvlist_remove_nvpair(nvl, pair)); +} + +nvpair_t * +fnvlist_lookup_nvpair(nvlist_t *nvl, const char *name) +{ + nvpair_t *rv; + VERIFY0(nvlist_lookup_nvpair(nvl, name, &rv)); + return (rv); +} + +/* returns B_TRUE if the entry exists */ +boolean_t +fnvlist_lookup_boolean(nvlist_t *nvl, const char *name) +{ + return (nvlist_lookup_boolean(nvl, name) == 0); +} + +boolean_t +fnvlist_lookup_boolean_value(nvlist_t *nvl, const char *name) +{ + boolean_t rv; + VERIFY0(nvlist_lookup_boolean_value(nvl, name, &rv)); + return (rv); +} + +uchar_t +fnvlist_lookup_byte(nvlist_t *nvl, const char *name) +{ + uchar_t rv; + VERIFY0(nvlist_lookup_byte(nvl, name, &rv)); + return (rv); +} + +int8_t +fnvlist_lookup_int8(nvlist_t *nvl, const char *name) +{ + int8_t rv; + VERIFY0(nvlist_lookup_int8(nvl, name, &rv)); + return (rv); +} + +int16_t +fnvlist_lookup_int16(nvlist_t *nvl, const char *name) +{ + int16_t rv; + VERIFY0(nvlist_lookup_int16(nvl, name, &rv)); + return (rv); +} + +int32_t +fnvlist_lookup_int32(nvlist_t *nvl, const char *name) +{ + int32_t rv; + VERIFY0(nvlist_lookup_int32(nvl, name, &rv)); + return (rv); +} + +int64_t +fnvlist_lookup_int64(nvlist_t *nvl, const char *name) +{ + int64_t rv; + VERIFY0(nvlist_lookup_int64(nvl, name, &rv)); + return (rv); +} + +uint8_t +fnvlist_lookup_uint8(nvlist_t *nvl, const char *name) +{ + uint8_t rv; + VERIFY0(nvlist_lookup_uint8(nvl, name, &rv)); + return (rv); +} + +uint16_t +fnvlist_lookup_uint16(nvlist_t *nvl, const char *name) +{ + uint16_t rv; + VERIFY0(nvlist_lookup_uint16(nvl, name, &rv)); + return (rv); +} + +uint32_t +fnvlist_lookup_uint32(nvlist_t *nvl, const char *name) +{ + uint32_t rv; + VERIFY0(nvlist_lookup_uint32(nvl, name, &rv)); + return (rv); +} + +uint64_t +fnvlist_lookup_uint64(nvlist_t *nvl, const char *name) +{ + uint64_t rv; + VERIFY0(nvlist_lookup_uint64(nvl, name, &rv)); + return (rv); +} + +char * +fnvlist_lookup_string(nvlist_t *nvl, const char *name) +{ + char *rv; + VERIFY0(nvlist_lookup_string(nvl, name, &rv)); + return (rv); +} + +nvlist_t * +fnvlist_lookup_nvlist(nvlist_t *nvl, const char *name) +{ + nvlist_t *rv; + VERIFY0(nvlist_lookup_nvlist(nvl, name, &rv)); + return (rv); +} + +boolean_t +fnvpair_value_boolean_value(nvpair_t *nvp) +{ + boolean_t rv; + VERIFY0(nvpair_value_boolean_value(nvp, &rv)); + return (rv); +} + +uchar_t +fnvpair_value_byte(nvpair_t *nvp) +{ + uchar_t rv; + VERIFY0(nvpair_value_byte(nvp, &rv)); + return (rv); +} + +int8_t +fnvpair_value_int8(nvpair_t *nvp) +{ + int8_t rv; + VERIFY0(nvpair_value_int8(nvp, &rv)); + return (rv); +} + +int16_t +fnvpair_value_int16(nvpair_t *nvp) +{ + int16_t rv; + VERIFY0(nvpair_value_int16(nvp, &rv)); + return (rv); +} + +int32_t +fnvpair_value_int32(nvpair_t *nvp) +{ + int32_t rv; + VERIFY0(nvpair_value_int32(nvp, &rv)); + return (rv); +} + +int64_t +fnvpair_value_int64(nvpair_t *nvp) +{ + int64_t rv; + VERIFY0(nvpair_value_int64(nvp, &rv)); + return (rv); +} + +uint8_t +fnvpair_value_uint8(nvpair_t *nvp) +{ + uint8_t rv; + VERIFY0(nvpair_value_uint8(nvp, &rv)); + return (rv); +} + +uint16_t +fnvpair_value_uint16(nvpair_t *nvp) +{ + uint16_t rv; + VERIFY0(nvpair_value_uint16(nvp, &rv)); + return (rv); +} + +uint32_t +fnvpair_value_uint32(nvpair_t *nvp) +{ + uint32_t rv; + VERIFY0(nvpair_value_uint32(nvp, &rv)); + return (rv); +} + +uint64_t +fnvpair_value_uint64(nvpair_t *nvp) +{ + uint64_t rv; + VERIFY0(nvpair_value_uint64(nvp, &rv)); + return (rv); +} + +char * +fnvpair_value_string(nvpair_t *nvp) +{ + char *rv; + VERIFY0(nvpair_value_string(nvp, &rv)); + return (rv); +} + +nvlist_t * +fnvpair_value_nvlist(nvpair_t *nvp) +{ + nvlist_t *rv; + VERIFY0(nvpair_value_nvlist(nvp, &rv)); + return (rv); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) + +EXPORT_SYMBOL(fnvlist_alloc); +EXPORT_SYMBOL(fnvlist_free); +EXPORT_SYMBOL(fnvlist_size); +EXPORT_SYMBOL(fnvlist_pack); +EXPORT_SYMBOL(fnvlist_pack_free); +EXPORT_SYMBOL(fnvlist_unpack); +EXPORT_SYMBOL(fnvlist_dup); +EXPORT_SYMBOL(fnvlist_merge); + +EXPORT_SYMBOL(fnvlist_add_nvpair); +EXPORT_SYMBOL(fnvlist_add_boolean); +EXPORT_SYMBOL(fnvlist_add_boolean_value); +EXPORT_SYMBOL(fnvlist_add_byte); +EXPORT_SYMBOL(fnvlist_add_int8); +EXPORT_SYMBOL(fnvlist_add_uint8); +EXPORT_SYMBOL(fnvlist_add_int16); +EXPORT_SYMBOL(fnvlist_add_uint16); +EXPORT_SYMBOL(fnvlist_add_int32); +EXPORT_SYMBOL(fnvlist_add_uint32); +EXPORT_SYMBOL(fnvlist_add_int64); +EXPORT_SYMBOL(fnvlist_add_uint64); +EXPORT_SYMBOL(fnvlist_add_string); +EXPORT_SYMBOL(fnvlist_add_nvlist); +EXPORT_SYMBOL(fnvlist_add_boolean_array); +EXPORT_SYMBOL(fnvlist_add_byte_array); +EXPORT_SYMBOL(fnvlist_add_int8_array); +EXPORT_SYMBOL(fnvlist_add_uint8_array); +EXPORT_SYMBOL(fnvlist_add_int16_array); +EXPORT_SYMBOL(fnvlist_add_uint16_array); +EXPORT_SYMBOL(fnvlist_add_int32_array); +EXPORT_SYMBOL(fnvlist_add_uint32_array); +EXPORT_SYMBOL(fnvlist_add_int64_array); +EXPORT_SYMBOL(fnvlist_add_uint64_array); +EXPORT_SYMBOL(fnvlist_add_string_array); +EXPORT_SYMBOL(fnvlist_add_nvlist_array); + +EXPORT_SYMBOL(fnvlist_remove); +EXPORT_SYMBOL(fnvlist_remove_nvpair); + +EXPORT_SYMBOL(fnvlist_lookup_nvpair); +EXPORT_SYMBOL(fnvlist_lookup_boolean); +EXPORT_SYMBOL(fnvlist_lookup_boolean_value); +EXPORT_SYMBOL(fnvlist_lookup_byte); +EXPORT_SYMBOL(fnvlist_lookup_int8); +EXPORT_SYMBOL(fnvlist_lookup_uint8); +EXPORT_SYMBOL(fnvlist_lookup_int16); +EXPORT_SYMBOL(fnvlist_lookup_uint16); +EXPORT_SYMBOL(fnvlist_lookup_int32); +EXPORT_SYMBOL(fnvlist_lookup_uint32); +EXPORT_SYMBOL(fnvlist_lookup_int64); +EXPORT_SYMBOL(fnvlist_lookup_uint64); +EXPORT_SYMBOL(fnvlist_lookup_string); +EXPORT_SYMBOL(fnvlist_lookup_nvlist); + +EXPORT_SYMBOL(fnvpair_value_boolean_value); +EXPORT_SYMBOL(fnvpair_value_byte); +EXPORT_SYMBOL(fnvpair_value_int8); +EXPORT_SYMBOL(fnvpair_value_uint8); +EXPORT_SYMBOL(fnvpair_value_int16); +EXPORT_SYMBOL(fnvpair_value_uint16); +EXPORT_SYMBOL(fnvpair_value_int32); +EXPORT_SYMBOL(fnvpair_value_uint32); +EXPORT_SYMBOL(fnvpair_value_int64); +EXPORT_SYMBOL(fnvpair_value_uint64); +EXPORT_SYMBOL(fnvpair_value_string); +EXPORT_SYMBOL(fnvpair_value_nvlist); +EXPORT_SYMBOL(fnvlist_num_pairs); + +#endif --- linux-4.4.0.orig/zfs/module/nvpair/nvpair.c +++ linux-4.4.0/zfs/module/nvpair/nvpair.c @@ -0,0 +1,3429 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_KERNEL) && !defined(_BOOT) +#include +#include +#include +#else +#include +#include +#include +#include +#endif + +#ifndef offsetof +#define offsetof(s, m) ((size_t)(&(((s *)0)->m))) +#endif +#define skip_whitespace(p) while ((*(p) == ' ') || (*(p) == '\t')) p++ + +/* + * nvpair.c - Provides kernel & userland interfaces for manipulating + * name-value pairs. + * + * Overview Diagram + * + * +--------------+ + * | nvlist_t | + * |--------------| + * | nvl_version | + * | nvl_nvflag | + * | nvl_priv -+-+ + * | nvl_flag | | + * | nvl_pad | | + * +--------------+ | + * V + * +--------------+ last i_nvp in list + * | nvpriv_t | +---------------------> + * |--------------| | + * +--+- nvp_list | | +------------+ + * | | nvp_last -+--+ + nv_alloc_t | + * | | nvp_curr | |------------| + * | | nvp_nva -+----> | nva_ops | + * | | nvp_stat | | nva_arg | + * | +--------------+ +------------+ + * | + * +-------+ + * V + * +---------------------+ +-------------------+ + * | i_nvp_t | +-->| i_nvp_t | +--> + * |---------------------| | |-------------------| | + * | nvi_next -+--+ | nvi_next -+--+ + * | nvi_prev (NULL) | <----+ nvi_prev | + * | . . . . . . . . . . | | . . . . . . . . . | + * | nvp (nvpair_t) | | nvp (nvpair_t) | + * | - nvp_size | | - nvp_size | + * | - nvp_name_sz | | - nvp_name_sz | + * | - nvp_value_elem | | - nvp_value_elem | + * | - nvp_type | | - nvp_type | + * | - data ... | | - data ... | + * +---------------------+ +-------------------+ + * + * + * + * +---------------------+ +---------------------+ + * | i_nvp_t | +--> +-->| i_nvp_t (last) | + * |---------------------| | | |---------------------| + * | nvi_next -+--+ ... --+ | nvi_next (NULL) | + * <-+- nvi_prev |<-- ... <----+ nvi_prev | + * | . . . . . . . . . | | . . . . . . . . . | + * | nvp (nvpair_t) | | nvp (nvpair_t) | + * | - nvp_size | | - nvp_size | + * | - nvp_name_sz | | - nvp_name_sz | + * | - nvp_value_elem | | - nvp_value_elem | + * | - DATA_TYPE_NVLIST | | - nvp_type | + * | - data (embedded) | | - data ... | + * | nvlist name | +---------------------+ + * | +--------------+ | + * | | nvlist_t | | + * | |--------------| | + * | | nvl_version | | + * | | nvl_nvflag | | + * | | nvl_priv --+---+----> + * | | nvl_flag | | + * | | nvl_pad | | + * | +--------------+ | + * +---------------------+ + * + * + * N.B. nvpair_t may be aligned on 4 byte boundary, so +4 will + * allow value to be aligned on 8 byte boundary + * + * name_len is the length of the name string including the null terminator + * so it must be >= 1 + */ +#define NVP_SIZE_CALC(name_len, data_len) \ + (NV_ALIGN((sizeof (nvpair_t)) + name_len) + NV_ALIGN(data_len)) + +static int i_get_value_size(data_type_t type, const void *data, uint_t nelem); +static int nvlist_add_common(nvlist_t *nvl, const char *name, data_type_t type, + uint_t nelem, const void *data); + +#define NV_STAT_EMBEDDED 0x1 +#define EMBEDDED_NVL(nvp) ((nvlist_t *)(void *)NVP_VALUE(nvp)) +#define EMBEDDED_NVL_ARRAY(nvp) ((nvlist_t **)(void *)NVP_VALUE(nvp)) + +#define NVP_VALOFF(nvp) (NV_ALIGN(sizeof (nvpair_t) + (nvp)->nvp_name_sz)) +#define NVPAIR2I_NVP(nvp) \ + ((i_nvp_t *)((size_t)(nvp) - offsetof(i_nvp_t, nvi_nvp))) + + +int +nv_alloc_init(nv_alloc_t *nva, const nv_alloc_ops_t *nvo, /* args */ ...) +{ + va_list valist; + int err = 0; + + nva->nva_ops = nvo; + nva->nva_arg = NULL; + + va_start(valist, nvo); + if (nva->nva_ops->nv_ao_init != NULL) + err = nva->nva_ops->nv_ao_init(nva, valist); + va_end(valist); + + return (err); +} + +void +nv_alloc_reset(nv_alloc_t *nva) +{ + if (nva->nva_ops->nv_ao_reset != NULL) + nva->nva_ops->nv_ao_reset(nva); +} + +void +nv_alloc_fini(nv_alloc_t *nva) +{ + if (nva->nva_ops->nv_ao_fini != NULL) + nva->nva_ops->nv_ao_fini(nva); +} + +nv_alloc_t * +nvlist_lookup_nv_alloc(nvlist_t *nvl) +{ + nvpriv_t *priv; + + if (nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (NULL); + + return (priv->nvp_nva); +} + +static void * +nv_mem_zalloc(nvpriv_t *nvp, size_t size) +{ + nv_alloc_t *nva = nvp->nvp_nva; + void *buf; + + if ((buf = nva->nva_ops->nv_ao_alloc(nva, size)) != NULL) + bzero(buf, size); + + return (buf); +} + +static void +nv_mem_free(nvpriv_t *nvp, void *buf, size_t size) +{ + nv_alloc_t *nva = nvp->nvp_nva; + + nva->nva_ops->nv_ao_free(nva, buf, size); +} + +static void +nv_priv_init(nvpriv_t *priv, nv_alloc_t *nva, uint32_t stat) +{ + bzero(priv, sizeof (nvpriv_t)); + + priv->nvp_nva = nva; + priv->nvp_stat = stat; +} + +static nvpriv_t * +nv_priv_alloc(nv_alloc_t *nva) +{ + nvpriv_t *priv; + + /* + * nv_mem_alloc() cannot called here because it needs the priv + * argument. + */ + if ((priv = nva->nva_ops->nv_ao_alloc(nva, sizeof (nvpriv_t))) == NULL) + return (NULL); + + nv_priv_init(priv, nva, 0); + + return (priv); +} + +/* + * Embedded lists need their own nvpriv_t's. We create a new + * nvpriv_t using the parameters and allocator from the parent + * list's nvpriv_t. + */ +static nvpriv_t * +nv_priv_alloc_embedded(nvpriv_t *priv) +{ + nvpriv_t *emb_priv; + + if ((emb_priv = nv_mem_zalloc(priv, sizeof (nvpriv_t))) == NULL) + return (NULL); + + nv_priv_init(emb_priv, priv->nvp_nva, NV_STAT_EMBEDDED); + + return (emb_priv); +} + +static void +nvlist_init(nvlist_t *nvl, uint32_t nvflag, nvpriv_t *priv) +{ + nvl->nvl_version = NV_VERSION; + nvl->nvl_nvflag = nvflag & (NV_UNIQUE_NAME|NV_UNIQUE_NAME_TYPE); + nvl->nvl_priv = (uint64_t)(uintptr_t)priv; + nvl->nvl_flag = 0; + nvl->nvl_pad = 0; +} + +uint_t +nvlist_nvflag(nvlist_t *nvl) +{ + return (nvl->nvl_nvflag); +} + +static nv_alloc_t * +nvlist_nv_alloc(int kmflag) +{ +#if defined(_KERNEL) && !defined(_BOOT) + switch (kmflag) { + case KM_SLEEP: + return (nv_alloc_sleep); + case KM_PUSHPAGE: + return (nv_alloc_pushpage); + default: + return (nv_alloc_nosleep); + } +#else + return (nv_alloc_nosleep); +#endif /* _KERNEL && !_BOOT */ +} + +/* + * nvlist_alloc - Allocate nvlist. + */ +int +nvlist_alloc(nvlist_t **nvlp, uint_t nvflag, int kmflag) +{ + return (nvlist_xalloc(nvlp, nvflag, nvlist_nv_alloc(kmflag))); +} + +int +nvlist_xalloc(nvlist_t **nvlp, uint_t nvflag, nv_alloc_t *nva) +{ + nvpriv_t *priv; + + if (nvlp == NULL || nva == NULL) + return (EINVAL); + + if ((priv = nv_priv_alloc(nva)) == NULL) + return (ENOMEM); + + if ((*nvlp = nv_mem_zalloc(priv, + NV_ALIGN(sizeof (nvlist_t)))) == NULL) { + nv_mem_free(priv, priv, sizeof (nvpriv_t)); + return (ENOMEM); + } + + nvlist_init(*nvlp, nvflag, priv); + + return (0); +} + +/* + * nvp_buf_alloc - Allocate i_nvp_t for storing a new nv pair. + */ +static nvpair_t * +nvp_buf_alloc(nvlist_t *nvl, size_t len) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *buf; + nvpair_t *nvp; + size_t nvsize; + + /* + * Allocate the buffer + */ + nvsize = len + offsetof(i_nvp_t, nvi_nvp); + + if ((buf = nv_mem_zalloc(priv, nvsize)) == NULL) + return (NULL); + + nvp = &buf->nvi_nvp; + nvp->nvp_size = len; + + return (nvp); +} + +/* + * nvp_buf_free - de-Allocate an i_nvp_t. + */ +static void +nvp_buf_free(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + size_t nvsize = nvp->nvp_size + offsetof(i_nvp_t, nvi_nvp); + + nv_mem_free(priv, NVPAIR2I_NVP(nvp), nvsize); +} + +/* + * nvp_buf_link - link a new nv pair into the nvlist. + */ +static void +nvp_buf_link(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *curr = NVPAIR2I_NVP(nvp); + + /* Put element at end of nvlist */ + if (priv->nvp_list == NULL) { + priv->nvp_list = priv->nvp_last = curr; + } else { + curr->nvi_prev = priv->nvp_last; + priv->nvp_last->nvi_next = curr; + priv->nvp_last = curr; + } +} + +/* + * nvp_buf_unlink - unlink an removed nvpair out of the nvlist. + */ +static void +nvp_buf_unlink(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *curr = NVPAIR2I_NVP(nvp); + + /* + * protect nvlist_next_nvpair() against walking on freed memory. + */ + if (priv->nvp_curr == curr) + priv->nvp_curr = curr->nvi_next; + + if (curr == priv->nvp_list) + priv->nvp_list = curr->nvi_next; + else + curr->nvi_prev->nvi_next = curr->nvi_next; + + if (curr == priv->nvp_last) + priv->nvp_last = curr->nvi_prev; + else + curr->nvi_next->nvi_prev = curr->nvi_prev; +} + +/* + * take a nvpair type and number of elements and make sure the are valid + */ +static int +i_validate_type_nelem(data_type_t type, uint_t nelem) +{ + switch (type) { + case DATA_TYPE_BOOLEAN: + if (nelem != 0) + return (EINVAL); + break; + case DATA_TYPE_BOOLEAN_VALUE: + case DATA_TYPE_BYTE: + case DATA_TYPE_INT8: + case DATA_TYPE_UINT8: + case DATA_TYPE_INT16: + case DATA_TYPE_UINT16: + case DATA_TYPE_INT32: + case DATA_TYPE_UINT32: + case DATA_TYPE_INT64: + case DATA_TYPE_UINT64: + case DATA_TYPE_STRING: + case DATA_TYPE_HRTIME: + case DATA_TYPE_NVLIST: +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: +#endif + if (nelem != 1) + return (EINVAL); + break; + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_BYTE_ARRAY: + case DATA_TYPE_INT8_ARRAY: + case DATA_TYPE_UINT8_ARRAY: + case DATA_TYPE_INT16_ARRAY: + case DATA_TYPE_UINT16_ARRAY: + case DATA_TYPE_INT32_ARRAY: + case DATA_TYPE_UINT32_ARRAY: + case DATA_TYPE_INT64_ARRAY: + case DATA_TYPE_UINT64_ARRAY: + case DATA_TYPE_STRING_ARRAY: + case DATA_TYPE_NVLIST_ARRAY: + /* we allow arrays with 0 elements */ + break; + default: + return (EINVAL); + } + return (0); +} + +/* + * Verify nvp_name_sz and check the name string length. + */ +static int +i_validate_nvpair_name(nvpair_t *nvp) +{ + if ((nvp->nvp_name_sz <= 0) || + (nvp->nvp_size < NVP_SIZE_CALC(nvp->nvp_name_sz, 0))) + return (EFAULT); + + /* verify the name string, make sure its terminated */ + if (NVP_NAME(nvp)[nvp->nvp_name_sz - 1] != '\0') + return (EFAULT); + + return (strlen(NVP_NAME(nvp)) == nvp->nvp_name_sz - 1 ? 0 : EFAULT); +} + +static int +i_validate_nvpair_value(data_type_t type, uint_t nelem, const void *data) +{ + switch (type) { + case DATA_TYPE_BOOLEAN_VALUE: + if (*(boolean_t *)data != B_TRUE && + *(boolean_t *)data != B_FALSE) + return (EINVAL); + break; + case DATA_TYPE_BOOLEAN_ARRAY: { + int i; + + for (i = 0; i < nelem; i++) + if (((boolean_t *)data)[i] != B_TRUE && + ((boolean_t *)data)[i] != B_FALSE) + return (EINVAL); + break; + } + default: + break; + } + + return (0); +} + +/* + * This function takes a pointer to what should be a nvpair and it's size + * and then verifies that all the nvpair fields make sense and can be + * trusted. This function is used when decoding packed nvpairs. + */ +static int +i_validate_nvpair(nvpair_t *nvp) +{ + data_type_t type = NVP_TYPE(nvp); + int size1, size2; + + /* verify nvp_name_sz, check the name string length */ + if (i_validate_nvpair_name(nvp) != 0) + return (EFAULT); + + if (i_validate_nvpair_value(type, NVP_NELEM(nvp), NVP_VALUE(nvp)) != 0) + return (EFAULT); + + /* + * verify nvp_type, nvp_value_elem, and also possibly + * verify string values and get the value size. + */ + size2 = i_get_value_size(type, NVP_VALUE(nvp), NVP_NELEM(nvp)); + size1 = nvp->nvp_size - NVP_VALOFF(nvp); + if (size2 < 0 || size1 != NV_ALIGN(size2)) + return (EFAULT); + + return (0); +} + +static int +nvlist_copy_pairs(nvlist_t *snvl, nvlist_t *dnvl) +{ + nvpriv_t *priv; + i_nvp_t *curr; + + if ((priv = (nvpriv_t *)(uintptr_t)snvl->nvl_priv) == NULL) + return (EINVAL); + + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) { + nvpair_t *nvp = &curr->nvi_nvp; + int err; + + if ((err = nvlist_add_common(dnvl, NVP_NAME(nvp), NVP_TYPE(nvp), + NVP_NELEM(nvp), NVP_VALUE(nvp))) != 0) + return (err); + } + + return (0); +} + +/* + * Frees all memory allocated for an nvpair (like embedded lists) with + * the exception of the nvpair buffer itself. + */ +static void +nvpair_free(nvpair_t *nvp) +{ + switch (NVP_TYPE(nvp)) { + case DATA_TYPE_NVLIST: + nvlist_free(EMBEDDED_NVL(nvp)); + break; + case DATA_TYPE_NVLIST_ARRAY: { + nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp); + int i; + + for (i = 0; i < NVP_NELEM(nvp); i++) + if (nvlp[i] != NULL) + nvlist_free(nvlp[i]); + break; + } + default: + break; + } +} + +/* + * nvlist_free - free an unpacked nvlist + */ +void +nvlist_free(nvlist_t *nvl) +{ + nvpriv_t *priv; + i_nvp_t *curr; + + if (nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return; + + /* + * Unpacked nvlist are linked through i_nvp_t + */ + curr = priv->nvp_list; + while (curr != NULL) { + nvpair_t *nvp = &curr->nvi_nvp; + curr = curr->nvi_next; + + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + } + + if (!(priv->nvp_stat & NV_STAT_EMBEDDED)) + nv_mem_free(priv, nvl, NV_ALIGN(sizeof (nvlist_t))); + else + nvl->nvl_priv = 0; + + nv_mem_free(priv, priv, sizeof (nvpriv_t)); +} + +static int +nvlist_contains_nvp(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *curr; + + if (nvp == NULL) + return (0); + + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) + if (&curr->nvi_nvp == nvp) + return (1); + + return (0); +} + +/* + * Make a copy of nvlist + */ +int +nvlist_dup(nvlist_t *nvl, nvlist_t **nvlp, int kmflag) +{ + return (nvlist_xdup(nvl, nvlp, nvlist_nv_alloc(kmflag))); +} + +int +nvlist_xdup(nvlist_t *nvl, nvlist_t **nvlp, nv_alloc_t *nva) +{ + int err; + nvlist_t *ret; + + if (nvl == NULL || nvlp == NULL) + return (EINVAL); + + if ((err = nvlist_xalloc(&ret, nvl->nvl_nvflag, nva)) != 0) + return (err); + + if ((err = nvlist_copy_pairs(nvl, ret)) != 0) + nvlist_free(ret); + else + *nvlp = ret; + + return (err); +} + +/* + * Remove all with matching name + */ +int +nvlist_remove_all(nvlist_t *nvl, const char *name) +{ + nvpriv_t *priv; + i_nvp_t *curr; + int error = ENOENT; + + if (nvl == NULL || name == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (EINVAL); + + curr = priv->nvp_list; + while (curr != NULL) { + nvpair_t *nvp = &curr->nvi_nvp; + + curr = curr->nvi_next; + if (strcmp(name, NVP_NAME(nvp)) != 0) + continue; + + nvp_buf_unlink(nvl, nvp); + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + + error = 0; + } + + return (error); +} + +/* + * Remove first one with matching name and type + */ +int +nvlist_remove(nvlist_t *nvl, const char *name, data_type_t type) +{ + nvpriv_t *priv; + i_nvp_t *curr; + + if (nvl == NULL || name == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (EINVAL); + + curr = priv->nvp_list; + while (curr != NULL) { + nvpair_t *nvp = &curr->nvi_nvp; + + if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type) { + nvp_buf_unlink(nvl, nvp); + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + + return (0); + } + curr = curr->nvi_next; + } + + return (ENOENT); +} + +int +nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp) +{ + if (nvl == NULL || nvp == NULL) + return (EINVAL); + + nvp_buf_unlink(nvl, nvp); + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + return (0); +} + +/* + * This function calculates the size of an nvpair value. + * + * The data argument controls the behavior in case of the data types + * DATA_TYPE_STRING and + * DATA_TYPE_STRING_ARRAY + * Is data == NULL then the size of the string(s) is excluded. + */ +static int +i_get_value_size(data_type_t type, const void *data, uint_t nelem) +{ + uint64_t value_sz; + + if (i_validate_type_nelem(type, nelem) != 0) + return (-1); + + /* Calculate required size for holding value */ + switch (type) { + case DATA_TYPE_BOOLEAN: + value_sz = 0; + break; + case DATA_TYPE_BOOLEAN_VALUE: + value_sz = sizeof (boolean_t); + break; + case DATA_TYPE_BYTE: + value_sz = sizeof (uchar_t); + break; + case DATA_TYPE_INT8: + value_sz = sizeof (int8_t); + break; + case DATA_TYPE_UINT8: + value_sz = sizeof (uint8_t); + break; + case DATA_TYPE_INT16: + value_sz = sizeof (int16_t); + break; + case DATA_TYPE_UINT16: + value_sz = sizeof (uint16_t); + break; + case DATA_TYPE_INT32: + value_sz = sizeof (int32_t); + break; + case DATA_TYPE_UINT32: + value_sz = sizeof (uint32_t); + break; + case DATA_TYPE_INT64: + value_sz = sizeof (int64_t); + break; + case DATA_TYPE_UINT64: + value_sz = sizeof (uint64_t); + break; +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: + value_sz = sizeof (double); + break; +#endif + case DATA_TYPE_STRING: + if (data == NULL) + value_sz = 0; + else + value_sz = strlen(data) + 1; + break; + case DATA_TYPE_BOOLEAN_ARRAY: + value_sz = (uint64_t)nelem * sizeof (boolean_t); + break; + case DATA_TYPE_BYTE_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uchar_t); + break; + case DATA_TYPE_INT8_ARRAY: + value_sz = (uint64_t)nelem * sizeof (int8_t); + break; + case DATA_TYPE_UINT8_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint8_t); + break; + case DATA_TYPE_INT16_ARRAY: + value_sz = (uint64_t)nelem * sizeof (int16_t); + break; + case DATA_TYPE_UINT16_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint16_t); + break; + case DATA_TYPE_INT32_ARRAY: + value_sz = (uint64_t)nelem * sizeof (int32_t); + break; + case DATA_TYPE_UINT32_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint32_t); + break; + case DATA_TYPE_INT64_ARRAY: + value_sz = (uint64_t)nelem * sizeof (int64_t); + break; + case DATA_TYPE_UINT64_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint64_t); + break; + case DATA_TYPE_STRING_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint64_t); + + if (data != NULL) { + char *const *strs = data; + uint_t i; + + /* no alignment requirement for strings */ + for (i = 0; i < nelem; i++) { + if (strs[i] == NULL) + return (-1); + value_sz += strlen(strs[i]) + 1; + } + } + break; + case DATA_TYPE_HRTIME: + value_sz = sizeof (hrtime_t); + break; + case DATA_TYPE_NVLIST: + value_sz = NV_ALIGN(sizeof (nvlist_t)); + break; + case DATA_TYPE_NVLIST_ARRAY: + value_sz = (uint64_t)nelem * sizeof (uint64_t) + + (uint64_t)nelem * NV_ALIGN(sizeof (nvlist_t)); + break; + default: + return (-1); + } + + return (value_sz > INT32_MAX ? -1 : (int)value_sz); +} + +static int +nvlist_copy_embedded(nvlist_t *nvl, nvlist_t *onvl, nvlist_t *emb_nvl) +{ + nvpriv_t *priv; + int err; + + if ((priv = nv_priv_alloc_embedded((nvpriv_t *)(uintptr_t) + nvl->nvl_priv)) == NULL) + return (ENOMEM); + + nvlist_init(emb_nvl, onvl->nvl_nvflag, priv); + + if ((err = nvlist_copy_pairs(onvl, emb_nvl)) != 0) { + nvlist_free(emb_nvl); + emb_nvl->nvl_priv = 0; + } + + return (err); +} + +/* + * nvlist_add_common - Add new pair to nvlist + */ +static int +nvlist_add_common(nvlist_t *nvl, const char *name, + data_type_t type, uint_t nelem, const void *data) +{ + nvpair_t *nvp; + uint_t i; + + int nvp_sz, name_sz, value_sz; + int err = 0; + + if (name == NULL || nvl == NULL || nvl->nvl_priv == 0) + return (EINVAL); + + if (nelem != 0 && data == NULL) + return (EINVAL); + + /* + * Verify type and nelem and get the value size. + * In case of data types DATA_TYPE_STRING and DATA_TYPE_STRING_ARRAY + * is the size of the string(s) included. + */ + if ((value_sz = i_get_value_size(type, data, nelem)) < 0) + return (EINVAL); + + if (i_validate_nvpair_value(type, nelem, data) != 0) + return (EINVAL); + + /* + * If we're adding an nvlist or nvlist array, ensure that we are not + * adding the input nvlist to itself, which would cause recursion, + * and ensure that no NULL nvlist pointers are present. + */ + switch (type) { + case DATA_TYPE_NVLIST: + if (data == nvl || data == NULL) + return (EINVAL); + break; + case DATA_TYPE_NVLIST_ARRAY: { + nvlist_t **onvlp = (nvlist_t **)data; + for (i = 0; i < nelem; i++) { + if (onvlp[i] == nvl || onvlp[i] == NULL) + return (EINVAL); + } + break; + } + default: + break; + } + + /* calculate sizes of the nvpair elements and the nvpair itself */ + name_sz = strlen(name) + 1; + + nvp_sz = NVP_SIZE_CALC(name_sz, value_sz); + + if ((nvp = nvp_buf_alloc(nvl, nvp_sz)) == NULL) + return (ENOMEM); + + ASSERT(nvp->nvp_size == nvp_sz); + nvp->nvp_name_sz = name_sz; + nvp->nvp_value_elem = nelem; + nvp->nvp_type = type; + bcopy(name, NVP_NAME(nvp), name_sz); + + switch (type) { + case DATA_TYPE_BOOLEAN: + break; + case DATA_TYPE_STRING_ARRAY: { + char *const *strs = data; + char *buf = NVP_VALUE(nvp); + char **cstrs = (void *)buf; + + /* skip pre-allocated space for pointer array */ + buf += nelem * sizeof (uint64_t); + for (i = 0; i < nelem; i++) { + int slen = strlen(strs[i]) + 1; + bcopy(strs[i], buf, slen); + cstrs[i] = buf; + buf += slen; + } + break; + } + case DATA_TYPE_NVLIST: { + nvlist_t *nnvl = EMBEDDED_NVL(nvp); + nvlist_t *onvl = (nvlist_t *)data; + + if ((err = nvlist_copy_embedded(nvl, onvl, nnvl)) != 0) { + nvp_buf_free(nvl, nvp); + return (err); + } + break; + } + case DATA_TYPE_NVLIST_ARRAY: { + nvlist_t **onvlp = (nvlist_t **)data; + nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp); + nvlist_t *embedded = (nvlist_t *) + ((uintptr_t)nvlp + nelem * sizeof (uint64_t)); + + for (i = 0; i < nelem; i++) { + if ((err = nvlist_copy_embedded(nvl, + onvlp[i], embedded)) != 0) { + /* + * Free any successfully created lists + */ + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + return (err); + } + + nvlp[i] = embedded++; + } + break; + } + default: + bcopy(data, NVP_VALUE(nvp), value_sz); + } + + /* if unique name, remove before add */ + if (nvl->nvl_nvflag & NV_UNIQUE_NAME) + (void) nvlist_remove_all(nvl, name); + else if (nvl->nvl_nvflag & NV_UNIQUE_NAME_TYPE) + (void) nvlist_remove(nvl, name, type); + + nvp_buf_link(nvl, nvp); + + return (0); +} + +int +nvlist_add_boolean(nvlist_t *nvl, const char *name) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_BOOLEAN, 0, NULL)); +} + +int +nvlist_add_boolean_value(nvlist_t *nvl, const char *name, boolean_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_BOOLEAN_VALUE, 1, &val)); +} + +int +nvlist_add_byte(nvlist_t *nvl, const char *name, uchar_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_BYTE, 1, &val)); +} + +int +nvlist_add_int8(nvlist_t *nvl, const char *name, int8_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT8, 1, &val)); +} + +int +nvlist_add_uint8(nvlist_t *nvl, const char *name, uint8_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT8, 1, &val)); +} + +int +nvlist_add_int16(nvlist_t *nvl, const char *name, int16_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT16, 1, &val)); +} + +int +nvlist_add_uint16(nvlist_t *nvl, const char *name, uint16_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT16, 1, &val)); +} + +int +nvlist_add_int32(nvlist_t *nvl, const char *name, int32_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT32, 1, &val)); +} + +int +nvlist_add_uint32(nvlist_t *nvl, const char *name, uint32_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT32, 1, &val)); +} + +int +nvlist_add_int64(nvlist_t *nvl, const char *name, int64_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT64, 1, &val)); +} + +int +nvlist_add_uint64(nvlist_t *nvl, const char *name, uint64_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT64, 1, &val)); +} + +#if !defined(_KERNEL) +int +nvlist_add_double(nvlist_t *nvl, const char *name, double val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_DOUBLE, 1, &val)); +} +#endif + +int +nvlist_add_string(nvlist_t *nvl, const char *name, const char *val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_STRING, 1, (void *)val)); +} + +int +nvlist_add_boolean_array(nvlist_t *nvl, const char *name, + boolean_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_BOOLEAN_ARRAY, n, a)); +} + +int +nvlist_add_byte_array(nvlist_t *nvl, const char *name, uchar_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_BYTE_ARRAY, n, a)); +} + +int +nvlist_add_int8_array(nvlist_t *nvl, const char *name, int8_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT8_ARRAY, n, a)); +} + +int +nvlist_add_uint8_array(nvlist_t *nvl, const char *name, uint8_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT8_ARRAY, n, a)); +} + +int +nvlist_add_int16_array(nvlist_t *nvl, const char *name, int16_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT16_ARRAY, n, a)); +} + +int +nvlist_add_uint16_array(nvlist_t *nvl, const char *name, uint16_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT16_ARRAY, n, a)); +} + +int +nvlist_add_int32_array(nvlist_t *nvl, const char *name, int32_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT32_ARRAY, n, a)); +} + +int +nvlist_add_uint32_array(nvlist_t *nvl, const char *name, uint32_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT32_ARRAY, n, a)); +} + +int +nvlist_add_int64_array(nvlist_t *nvl, const char *name, int64_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_INT64_ARRAY, n, a)); +} + +int +nvlist_add_uint64_array(nvlist_t *nvl, const char *name, uint64_t *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_UINT64_ARRAY, n, a)); +} + +int +nvlist_add_string_array(nvlist_t *nvl, const char *name, + char *const *a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_STRING_ARRAY, n, a)); +} + +int +nvlist_add_hrtime(nvlist_t *nvl, const char *name, hrtime_t val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_HRTIME, 1, &val)); +} + +int +nvlist_add_nvlist(nvlist_t *nvl, const char *name, nvlist_t *val) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_NVLIST, 1, val)); +} + +int +nvlist_add_nvlist_array(nvlist_t *nvl, const char *name, nvlist_t **a, uint_t n) +{ + return (nvlist_add_common(nvl, name, DATA_TYPE_NVLIST_ARRAY, n, a)); +} + +/* reading name-value pairs */ +nvpair_t * +nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv; + i_nvp_t *curr; + + if (nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (NULL); + + curr = NVPAIR2I_NVP(nvp); + + /* + * Ensure that nvp is a valid nvpair on this nvlist. + * NB: nvp_curr is used only as a hint so that we don't always + * have to walk the list to determine if nvp is still on the list. + */ + if (nvp == NULL) + curr = priv->nvp_list; + else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp)) + curr = curr->nvi_next; + else + curr = NULL; + + priv->nvp_curr = curr; + + return (curr != NULL ? &curr->nvi_nvp : NULL); +} + +nvpair_t * +nvlist_prev_nvpair(nvlist_t *nvl, nvpair_t *nvp) +{ + nvpriv_t *priv; + i_nvp_t *curr; + + if (nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (NULL); + + curr = NVPAIR2I_NVP(nvp); + + if (nvp == NULL) + curr = priv->nvp_last; + else if (priv->nvp_curr == curr || nvlist_contains_nvp(nvl, nvp)) + curr = curr->nvi_prev; + else + curr = NULL; + + priv->nvp_curr = curr; + + return (curr != NULL ? &curr->nvi_nvp : NULL); +} + +boolean_t +nvlist_empty(nvlist_t *nvl) +{ + nvpriv_t *priv; + + if (nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (B_TRUE); + + return (priv->nvp_list == NULL); +} + +char * +nvpair_name(nvpair_t *nvp) +{ + return (NVP_NAME(nvp)); +} + +data_type_t +nvpair_type(nvpair_t *nvp) +{ + return (NVP_TYPE(nvp)); +} + +int +nvpair_type_is_array(nvpair_t *nvp) +{ + data_type_t type = NVP_TYPE(nvp); + + if ((type == DATA_TYPE_BYTE_ARRAY) || + (type == DATA_TYPE_UINT8_ARRAY) || + (type == DATA_TYPE_INT16_ARRAY) || + (type == DATA_TYPE_UINT16_ARRAY) || + (type == DATA_TYPE_INT32_ARRAY) || + (type == DATA_TYPE_UINT32_ARRAY) || + (type == DATA_TYPE_INT64_ARRAY) || + (type == DATA_TYPE_UINT64_ARRAY) || + (type == DATA_TYPE_BOOLEAN_ARRAY) || + (type == DATA_TYPE_STRING_ARRAY) || + (type == DATA_TYPE_NVLIST_ARRAY)) + return (1); + return (0); + +} + +static int +nvpair_value_common(nvpair_t *nvp, data_type_t type, uint_t *nelem, void *data) +{ + if (nvp == NULL || nvpair_type(nvp) != type) + return (EINVAL); + + /* + * For non-array types, we copy the data. + * For array types (including string), we set a pointer. + */ + switch (type) { + case DATA_TYPE_BOOLEAN: + if (nelem != NULL) + *nelem = 0; + break; + + case DATA_TYPE_BOOLEAN_VALUE: + case DATA_TYPE_BYTE: + case DATA_TYPE_INT8: + case DATA_TYPE_UINT8: + case DATA_TYPE_INT16: + case DATA_TYPE_UINT16: + case DATA_TYPE_INT32: + case DATA_TYPE_UINT32: + case DATA_TYPE_INT64: + case DATA_TYPE_UINT64: + case DATA_TYPE_HRTIME: +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: +#endif + if (data == NULL) + return (EINVAL); + bcopy(NVP_VALUE(nvp), data, + (size_t)i_get_value_size(type, NULL, 1)); + if (nelem != NULL) + *nelem = 1; + break; + + case DATA_TYPE_NVLIST: + case DATA_TYPE_STRING: + if (data == NULL) + return (EINVAL); + *(void **)data = (void *)NVP_VALUE(nvp); + if (nelem != NULL) + *nelem = 1; + break; + + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_BYTE_ARRAY: + case DATA_TYPE_INT8_ARRAY: + case DATA_TYPE_UINT8_ARRAY: + case DATA_TYPE_INT16_ARRAY: + case DATA_TYPE_UINT16_ARRAY: + case DATA_TYPE_INT32_ARRAY: + case DATA_TYPE_UINT32_ARRAY: + case DATA_TYPE_INT64_ARRAY: + case DATA_TYPE_UINT64_ARRAY: + case DATA_TYPE_STRING_ARRAY: + case DATA_TYPE_NVLIST_ARRAY: + if (nelem == NULL || data == NULL) + return (EINVAL); + if ((*nelem = NVP_NELEM(nvp)) != 0) + *(void **)data = (void *)NVP_VALUE(nvp); + else + *(void **)data = NULL; + break; + + default: + return (ENOTSUP); + } + + return (0); +} + +static int +nvlist_lookup_common(nvlist_t *nvl, const char *name, data_type_t type, + uint_t *nelem, void *data) +{ + nvpriv_t *priv; + nvpair_t *nvp; + i_nvp_t *curr; + + if (name == NULL || nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (EINVAL); + + if (!(nvl->nvl_nvflag & (NV_UNIQUE_NAME | NV_UNIQUE_NAME_TYPE))) + return (ENOTSUP); + + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) { + nvp = &curr->nvi_nvp; + + if (strcmp(name, NVP_NAME(nvp)) == 0 && NVP_TYPE(nvp) == type) + return (nvpair_value_common(nvp, type, nelem, data)); + } + + return (ENOENT); +} + +int +nvlist_lookup_boolean(nvlist_t *nvl, const char *name) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_BOOLEAN, NULL, NULL)); +} + +int +nvlist_lookup_boolean_value(nvlist_t *nvl, const char *name, boolean_t *val) +{ + return (nvlist_lookup_common(nvl, name, + DATA_TYPE_BOOLEAN_VALUE, NULL, val)); +} + +int +nvlist_lookup_byte(nvlist_t *nvl, const char *name, uchar_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_BYTE, NULL, val)); +} + +int +nvlist_lookup_int8(nvlist_t *nvl, const char *name, int8_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT8, NULL, val)); +} + +int +nvlist_lookup_uint8(nvlist_t *nvl, const char *name, uint8_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT8, NULL, val)); +} + +int +nvlist_lookup_int16(nvlist_t *nvl, const char *name, int16_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT16, NULL, val)); +} + +int +nvlist_lookup_uint16(nvlist_t *nvl, const char *name, uint16_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT16, NULL, val)); +} + +int +nvlist_lookup_int32(nvlist_t *nvl, const char *name, int32_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT32, NULL, val)); +} + +int +nvlist_lookup_uint32(nvlist_t *nvl, const char *name, uint32_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT32, NULL, val)); +} + +int +nvlist_lookup_int64(nvlist_t *nvl, const char *name, int64_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT64, NULL, val)); +} + +int +nvlist_lookup_uint64(nvlist_t *nvl, const char *name, uint64_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT64, NULL, val)); +} + +#if !defined(_KERNEL) +int +nvlist_lookup_double(nvlist_t *nvl, const char *name, double *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_DOUBLE, NULL, val)); +} +#endif + +int +nvlist_lookup_string(nvlist_t *nvl, const char *name, char **val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_STRING, NULL, val)); +} + +int +nvlist_lookup_nvlist(nvlist_t *nvl, const char *name, nvlist_t **val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_NVLIST, NULL, val)); +} + +int +nvlist_lookup_boolean_array(nvlist_t *nvl, const char *name, + boolean_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, + DATA_TYPE_BOOLEAN_ARRAY, n, a)); +} + +int +nvlist_lookup_byte_array(nvlist_t *nvl, const char *name, + uchar_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_BYTE_ARRAY, n, a)); +} + +int +nvlist_lookup_int8_array(nvlist_t *nvl, const char *name, int8_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT8_ARRAY, n, a)); +} + +int +nvlist_lookup_uint8_array(nvlist_t *nvl, const char *name, + uint8_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT8_ARRAY, n, a)); +} + +int +nvlist_lookup_int16_array(nvlist_t *nvl, const char *name, + int16_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT16_ARRAY, n, a)); +} + +int +nvlist_lookup_uint16_array(nvlist_t *nvl, const char *name, + uint16_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT16_ARRAY, n, a)); +} + +int +nvlist_lookup_int32_array(nvlist_t *nvl, const char *name, + int32_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT32_ARRAY, n, a)); +} + +int +nvlist_lookup_uint32_array(nvlist_t *nvl, const char *name, + uint32_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT32_ARRAY, n, a)); +} + +int +nvlist_lookup_int64_array(nvlist_t *nvl, const char *name, + int64_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_INT64_ARRAY, n, a)); +} + +int +nvlist_lookup_uint64_array(nvlist_t *nvl, const char *name, + uint64_t **a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_UINT64_ARRAY, n, a)); +} + +int +nvlist_lookup_string_array(nvlist_t *nvl, const char *name, + char ***a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_STRING_ARRAY, n, a)); +} + +int +nvlist_lookup_nvlist_array(nvlist_t *nvl, const char *name, + nvlist_t ***a, uint_t *n) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_NVLIST_ARRAY, n, a)); +} + +int +nvlist_lookup_hrtime(nvlist_t *nvl, const char *name, hrtime_t *val) +{ + return (nvlist_lookup_common(nvl, name, DATA_TYPE_HRTIME, NULL, val)); +} + +int +nvlist_lookup_pairs(nvlist_t *nvl, int flag, ...) +{ + va_list ap; + char *name; + int noentok = (flag & NV_FLAG_NOENTOK ? 1 : 0); + int ret = 0; + + va_start(ap, flag); + while (ret == 0 && (name = va_arg(ap, char *)) != NULL) { + data_type_t type; + void *val; + uint_t *nelem; + + switch (type = va_arg(ap, data_type_t)) { + case DATA_TYPE_BOOLEAN: + ret = nvlist_lookup_common(nvl, name, type, NULL, NULL); + break; + + case DATA_TYPE_BOOLEAN_VALUE: + case DATA_TYPE_BYTE: + case DATA_TYPE_INT8: + case DATA_TYPE_UINT8: + case DATA_TYPE_INT16: + case DATA_TYPE_UINT16: + case DATA_TYPE_INT32: + case DATA_TYPE_UINT32: + case DATA_TYPE_INT64: + case DATA_TYPE_UINT64: + case DATA_TYPE_HRTIME: + case DATA_TYPE_STRING: + case DATA_TYPE_NVLIST: +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: +#endif + val = va_arg(ap, void *); + ret = nvlist_lookup_common(nvl, name, type, NULL, val); + break; + + case DATA_TYPE_BYTE_ARRAY: + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_INT8_ARRAY: + case DATA_TYPE_UINT8_ARRAY: + case DATA_TYPE_INT16_ARRAY: + case DATA_TYPE_UINT16_ARRAY: + case DATA_TYPE_INT32_ARRAY: + case DATA_TYPE_UINT32_ARRAY: + case DATA_TYPE_INT64_ARRAY: + case DATA_TYPE_UINT64_ARRAY: + case DATA_TYPE_STRING_ARRAY: + case DATA_TYPE_NVLIST_ARRAY: + val = va_arg(ap, void *); + nelem = va_arg(ap, uint_t *); + ret = nvlist_lookup_common(nvl, name, type, nelem, val); + break; + + default: + ret = EINVAL; + } + + if (ret == ENOENT && noentok) + ret = 0; + } + va_end(ap); + + return (ret); +} + +/* + * Find the 'name'ed nvpair in the nvlist 'nvl'. If 'name' found, the function + * returns zero and a pointer to the matching nvpair is returned in '*ret' + * (given 'ret' is non-NULL). If 'sep' is specified then 'name' will penitrate + * multiple levels of embedded nvlists, with 'sep' as the separator. As an + * example, if sep is '.', name might look like: "a" or "a.b" or "a.c[3]" or + * "a.d[3].e[1]". This matches the C syntax for array embed (for convience, + * code also supports "a.d[3]e[1]" syntax). + * + * If 'ip' is non-NULL and the last name component is an array, return the + * value of the "...[index]" array index in *ip. For an array reference that + * is not indexed, *ip will be returned as -1. If there is a syntax error in + * 'name', and 'ep' is non-NULL then *ep will be set to point to the location + * inside the 'name' string where the syntax error was detected. + */ +static int +nvlist_lookup_nvpair_ei_sep(nvlist_t *nvl, const char *name, const char sep, + nvpair_t **ret, int *ip, char **ep) +{ + nvpair_t *nvp; + const char *np; + char *sepp = NULL; + char *idxp, *idxep; + nvlist_t **nva; + long idx = 0; + int n; + + if (ip) + *ip = -1; /* not indexed */ + if (ep) + *ep = NULL; + + if ((nvl == NULL) || (name == NULL)) + return (EINVAL); + + /* step through components of name */ + for (np = name; np && *np; np = sepp) { + /* ensure unique names */ + if (!(nvl->nvl_nvflag & NV_UNIQUE_NAME)) + return (ENOTSUP); + + /* skip white space */ + skip_whitespace(np); + if (*np == 0) + break; + + /* set 'sepp' to end of current component 'np' */ + if (sep) + sepp = strchr(np, sep); + else + sepp = NULL; + + /* find start of next "[ index ]..." */ + idxp = strchr(np, '['); + + /* if sepp comes first, set idxp to NULL */ + if (sepp && idxp && (sepp < idxp)) + idxp = NULL; + + /* + * At this point 'idxp' is set if there is an index + * expected for the current component. + */ + if (idxp) { + /* set 'n' to length of current 'np' name component */ + n = idxp++ - np; + + /* keep sepp up to date for *ep use as we advance */ + skip_whitespace(idxp); + sepp = idxp; + + /* determine the index value */ +#if defined(_KERNEL) && !defined(_BOOT) + if (ddi_strtol(idxp, &idxep, 0, &idx)) + goto fail; +#else + idx = strtol(idxp, &idxep, 0); +#endif + if (idxep == idxp) + goto fail; + + /* keep sepp up to date for *ep use as we advance */ + sepp = idxep; + + /* skip white space index value and check for ']' */ + skip_whitespace(sepp); + if (*sepp++ != ']') + goto fail; + + /* for embedded arrays, support C syntax: "a[1].b" */ + skip_whitespace(sepp); + if (sep && (*sepp == sep)) + sepp++; + } else if (sepp) { + n = sepp++ - np; + } else { + n = strlen(np); + } + + /* trim trailing whitespace by reducing length of 'np' */ + if (n == 0) + goto fail; + for (n--; (np[n] == ' ') || (np[n] == '\t'); n--) + ; + n++; + + /* skip whitespace, and set sepp to NULL if complete */ + if (sepp) { + skip_whitespace(sepp); + if (*sepp == 0) + sepp = NULL; + } + + /* + * At this point: + * o 'n' is the length of current 'np' component. + * o 'idxp' is set if there was an index, and value 'idx'. + * o 'sepp' is set to the beginning of the next component, + * and set to NULL if we have no more components. + * + * Search for nvpair with matching component name. + */ + for (nvp = nvlist_next_nvpair(nvl, NULL); nvp != NULL; + nvp = nvlist_next_nvpair(nvl, nvp)) { + + /* continue if no match on name */ + if (strncmp(np, nvpair_name(nvp), n) || + (strlen(nvpair_name(nvp)) != n)) + continue; + + /* if indexed, verify type is array oriented */ + if (idxp && !nvpair_type_is_array(nvp)) + goto fail; + + /* + * Full match found, return nvp and idx if this + * was the last component. + */ + if (sepp == NULL) { + if (ret) + *ret = nvp; + if (ip && idxp) + *ip = (int)idx; /* return index */ + return (0); /* found */ + } + + /* + * More components: current match must be + * of DATA_TYPE_NVLIST or DATA_TYPE_NVLIST_ARRAY + * to support going deeper. + */ + if (nvpair_type(nvp) == DATA_TYPE_NVLIST) { + nvl = EMBEDDED_NVL(nvp); + break; + } else if (nvpair_type(nvp) == DATA_TYPE_NVLIST_ARRAY) { + (void) nvpair_value_nvlist_array(nvp, + &nva, (uint_t *)&n); + if ((n < 0) || (idx >= n)) + goto fail; + nvl = nva[idx]; + break; + } + + /* type does not support more levels */ + goto fail; + } + if (nvp == NULL) + goto fail; /* 'name' not found */ + + /* search for match of next component in embedded 'nvl' list */ + } + +fail: if (ep && sepp) + *ep = sepp; + return (EINVAL); +} + +/* + * Return pointer to nvpair with specified 'name'. + */ +int +nvlist_lookup_nvpair(nvlist_t *nvl, const char *name, nvpair_t **ret) +{ + return (nvlist_lookup_nvpair_ei_sep(nvl, name, 0, ret, NULL, NULL)); +} + +/* + * Determine if named nvpair exists in nvlist (use embedded separator of '.' + * and return array index). See nvlist_lookup_nvpair_ei_sep for more detailed + * description. + */ +int nvlist_lookup_nvpair_embedded_index(nvlist_t *nvl, + const char *name, nvpair_t **ret, int *ip, char **ep) +{ + return (nvlist_lookup_nvpair_ei_sep(nvl, name, '.', ret, ip, ep)); +} + +boolean_t +nvlist_exists(nvlist_t *nvl, const char *name) +{ + nvpriv_t *priv; + nvpair_t *nvp; + i_nvp_t *curr; + + if (name == NULL || nvl == NULL || + (priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (B_FALSE); + + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) { + nvp = &curr->nvi_nvp; + + if (strcmp(name, NVP_NAME(nvp)) == 0) + return (B_TRUE); + } + + return (B_FALSE); +} + +int +nvpair_value_boolean_value(nvpair_t *nvp, boolean_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_VALUE, NULL, val)); +} + +int +nvpair_value_byte(nvpair_t *nvp, uchar_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_BYTE, NULL, val)); +} + +int +nvpair_value_int8(nvpair_t *nvp, int8_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT8, NULL, val)); +} + +int +nvpair_value_uint8(nvpair_t *nvp, uint8_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT8, NULL, val)); +} + +int +nvpair_value_int16(nvpair_t *nvp, int16_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT16, NULL, val)); +} + +int +nvpair_value_uint16(nvpair_t *nvp, uint16_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT16, NULL, val)); +} + +int +nvpair_value_int32(nvpair_t *nvp, int32_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT32, NULL, val)); +} + +int +nvpair_value_uint32(nvpair_t *nvp, uint32_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT32, NULL, val)); +} + +int +nvpair_value_int64(nvpair_t *nvp, int64_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT64, NULL, val)); +} + +int +nvpair_value_uint64(nvpair_t *nvp, uint64_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT64, NULL, val)); +} + +#if !defined(_KERNEL) +int +nvpair_value_double(nvpair_t *nvp, double *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_DOUBLE, NULL, val)); +} +#endif + +int +nvpair_value_string(nvpair_t *nvp, char **val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_STRING, NULL, val)); +} + +int +nvpair_value_nvlist(nvpair_t *nvp, nvlist_t **val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_NVLIST, NULL, val)); +} + +int +nvpair_value_boolean_array(nvpair_t *nvp, boolean_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_BOOLEAN_ARRAY, nelem, val)); +} + +int +nvpair_value_byte_array(nvpair_t *nvp, uchar_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_BYTE_ARRAY, nelem, val)); +} + +int +nvpair_value_int8_array(nvpair_t *nvp, int8_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT8_ARRAY, nelem, val)); +} + +int +nvpair_value_uint8_array(nvpair_t *nvp, uint8_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT8_ARRAY, nelem, val)); +} + +int +nvpair_value_int16_array(nvpair_t *nvp, int16_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT16_ARRAY, nelem, val)); +} + +int +nvpair_value_uint16_array(nvpair_t *nvp, uint16_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT16_ARRAY, nelem, val)); +} + +int +nvpair_value_int32_array(nvpair_t *nvp, int32_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT32_ARRAY, nelem, val)); +} + +int +nvpair_value_uint32_array(nvpair_t *nvp, uint32_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT32_ARRAY, nelem, val)); +} + +int +nvpair_value_int64_array(nvpair_t *nvp, int64_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_INT64_ARRAY, nelem, val)); +} + +int +nvpair_value_uint64_array(nvpair_t *nvp, uint64_t **val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_UINT64_ARRAY, nelem, val)); +} + +int +nvpair_value_string_array(nvpair_t *nvp, char ***val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_STRING_ARRAY, nelem, val)); +} + +int +nvpair_value_nvlist_array(nvpair_t *nvp, nvlist_t ***val, uint_t *nelem) +{ + return (nvpair_value_common(nvp, DATA_TYPE_NVLIST_ARRAY, nelem, val)); +} + +int +nvpair_value_hrtime(nvpair_t *nvp, hrtime_t *val) +{ + return (nvpair_value_common(nvp, DATA_TYPE_HRTIME, NULL, val)); +} + +/* + * Add specified pair to the list. + */ +int +nvlist_add_nvpair(nvlist_t *nvl, nvpair_t *nvp) +{ + if (nvl == NULL || nvp == NULL) + return (EINVAL); + + return (nvlist_add_common(nvl, NVP_NAME(nvp), NVP_TYPE(nvp), + NVP_NELEM(nvp), NVP_VALUE(nvp))); +} + +/* + * Merge the supplied nvlists and put the result in dst. + * The merged list will contain all names specified in both lists, + * the values are taken from nvl in the case of duplicates. + * Return 0 on success. + */ +/*ARGSUSED*/ +int +nvlist_merge(nvlist_t *dst, nvlist_t *nvl, int flag) +{ + if (nvl == NULL || dst == NULL) + return (EINVAL); + + if (dst != nvl) + return (nvlist_copy_pairs(nvl, dst)); + + return (0); +} + +/* + * Encoding related routines + */ +#define NVS_OP_ENCODE 0 +#define NVS_OP_DECODE 1 +#define NVS_OP_GETSIZE 2 + +typedef struct nvs_ops nvs_ops_t; + +typedef struct { + int nvs_op; + const nvs_ops_t *nvs_ops; + void *nvs_private; + nvpriv_t *nvs_priv; +} nvstream_t; + +/* + * nvs operations are: + * - nvs_nvlist + * encoding / decoding of a nvlist header (nvlist_t) + * calculates the size used for header and end detection + * + * - nvs_nvpair + * responsible for the first part of encoding / decoding of an nvpair + * calculates the decoded size of an nvpair + * + * - nvs_nvp_op + * second part of encoding / decoding of an nvpair + * + * - nvs_nvp_size + * calculates the encoding size of an nvpair + * + * - nvs_nvl_fini + * encodes the end detection mark (zeros). + */ +struct nvs_ops { + int (*nvs_nvlist)(nvstream_t *, nvlist_t *, size_t *); + int (*nvs_nvpair)(nvstream_t *, nvpair_t *, size_t *); + int (*nvs_nvp_op)(nvstream_t *, nvpair_t *); + int (*nvs_nvp_size)(nvstream_t *, nvpair_t *, size_t *); + int (*nvs_nvl_fini)(nvstream_t *); +}; + +typedef struct { + char nvh_encoding; /* nvs encoding method */ + char nvh_endian; /* nvs endian */ + char nvh_reserved1; /* reserved for future use */ + char nvh_reserved2; /* reserved for future use */ +} nvs_header_t; + +static int +nvs_encode_pairs(nvstream_t *nvs, nvlist_t *nvl) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *curr; + + /* + * Walk nvpair in list and encode each nvpair + */ + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) + if (nvs->nvs_ops->nvs_nvpair(nvs, &curr->nvi_nvp, NULL) != 0) + return (EFAULT); + + return (nvs->nvs_ops->nvs_nvl_fini(nvs)); +} + +static int +nvs_decode_pairs(nvstream_t *nvs, nvlist_t *nvl) +{ + nvpair_t *nvp; + size_t nvsize; + int err; + + /* + * Get decoded size of next pair in stream, alloc + * memory for nvpair_t, then decode the nvpair + */ + while ((err = nvs->nvs_ops->nvs_nvpair(nvs, NULL, &nvsize)) == 0) { + if (nvsize == 0) /* end of list */ + break; + + /* make sure len makes sense */ + if (nvsize < NVP_SIZE_CALC(1, 0)) + return (EFAULT); + + if ((nvp = nvp_buf_alloc(nvl, nvsize)) == NULL) + return (ENOMEM); + + if ((err = nvs->nvs_ops->nvs_nvp_op(nvs, nvp)) != 0) { + nvp_buf_free(nvl, nvp); + return (err); + } + + if (i_validate_nvpair(nvp) != 0) { + nvpair_free(nvp); + nvp_buf_free(nvl, nvp); + return (EFAULT); + } + + nvp_buf_link(nvl, nvp); + } + return (err); +} + +static int +nvs_getsize_pairs(nvstream_t *nvs, nvlist_t *nvl, size_t *buflen) +{ + nvpriv_t *priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv; + i_nvp_t *curr; + uint64_t nvsize = *buflen; + size_t size; + + /* + * Get encoded size of nvpairs in nvlist + */ + for (curr = priv->nvp_list; curr != NULL; curr = curr->nvi_next) { + if (nvs->nvs_ops->nvs_nvp_size(nvs, &curr->nvi_nvp, &size) != 0) + return (EINVAL); + + if ((nvsize += size) > INT32_MAX) + return (EINVAL); + } + + *buflen = nvsize; + return (0); +} + +static int +nvs_operation(nvstream_t *nvs, nvlist_t *nvl, size_t *buflen) +{ + int err; + + if (nvl->nvl_priv == 0) + return (EFAULT); + + /* + * Perform the operation, starting with header, then each nvpair + */ + if ((err = nvs->nvs_ops->nvs_nvlist(nvs, nvl, buflen)) != 0) + return (err); + + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + err = nvs_encode_pairs(nvs, nvl); + break; + + case NVS_OP_DECODE: + err = nvs_decode_pairs(nvs, nvl); + break; + + case NVS_OP_GETSIZE: + err = nvs_getsize_pairs(nvs, nvl, buflen); + break; + + default: + err = EINVAL; + } + + return (err); +} + +static int +nvs_embedded(nvstream_t *nvs, nvlist_t *embedded) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + return (nvs_operation(nvs, embedded, NULL)); + + case NVS_OP_DECODE: { + nvpriv_t *priv; + int err; + + if (embedded->nvl_version != NV_VERSION) + return (ENOTSUP); + + if ((priv = nv_priv_alloc_embedded(nvs->nvs_priv)) == NULL) + return (ENOMEM); + + nvlist_init(embedded, embedded->nvl_nvflag, priv); + + if ((err = nvs_operation(nvs, embedded, NULL)) != 0) + nvlist_free(embedded); + return (err); + } + default: + break; + } + + return (EINVAL); +} + +static int +nvs_embedded_nvl_array(nvstream_t *nvs, nvpair_t *nvp, size_t *size) +{ + size_t nelem = NVP_NELEM(nvp); + nvlist_t **nvlp = EMBEDDED_NVL_ARRAY(nvp); + int i; + + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + for (i = 0; i < nelem; i++) + if (nvs_embedded(nvs, nvlp[i]) != 0) + return (EFAULT); + break; + + case NVS_OP_DECODE: { + size_t len = nelem * sizeof (uint64_t); + nvlist_t *embedded = (nvlist_t *)((uintptr_t)nvlp + len); + + bzero(nvlp, len); /* don't trust packed data */ + for (i = 0; i < nelem; i++) { + if (nvs_embedded(nvs, embedded) != 0) { + nvpair_free(nvp); + return (EFAULT); + } + + nvlp[i] = embedded++; + } + break; + } + case NVS_OP_GETSIZE: { + uint64_t nvsize = 0; + + for (i = 0; i < nelem; i++) { + size_t nvp_sz = 0; + + if (nvs_operation(nvs, nvlp[i], &nvp_sz) != 0) + return (EINVAL); + + if ((nvsize += nvp_sz) > INT32_MAX) + return (EINVAL); + } + + *size = nvsize; + break; + } + default: + return (EINVAL); + } + + return (0); +} + +static int nvs_native(nvstream_t *, nvlist_t *, char *, size_t *); +static int nvs_xdr(nvstream_t *, nvlist_t *, char *, size_t *); + +/* + * Common routine for nvlist operations: + * encode, decode, getsize (encoded size). + */ +static int +nvlist_common(nvlist_t *nvl, char *buf, size_t *buflen, int encoding, + int nvs_op) +{ + int err = 0; + nvstream_t nvs; + int nvl_endian; +#ifdef _LITTLE_ENDIAN + int host_endian = 1; +#else + int host_endian = 0; +#endif /* _LITTLE_ENDIAN */ + nvs_header_t *nvh = (void *)buf; + + if (buflen == NULL || nvl == NULL || + (nvs.nvs_priv = (nvpriv_t *)(uintptr_t)nvl->nvl_priv) == NULL) + return (EINVAL); + + nvs.nvs_op = nvs_op; + + /* + * For NVS_OP_ENCODE and NVS_OP_DECODE make sure an nvlist and + * a buffer is allocated. The first 4 bytes in the buffer are + * used for encoding method and host endian. + */ + switch (nvs_op) { + case NVS_OP_ENCODE: + if (buf == NULL || *buflen < sizeof (nvs_header_t)) + return (EINVAL); + + nvh->nvh_encoding = encoding; + nvh->nvh_endian = nvl_endian = host_endian; + nvh->nvh_reserved1 = 0; + nvh->nvh_reserved2 = 0; + break; + + case NVS_OP_DECODE: + if (buf == NULL || *buflen < sizeof (nvs_header_t)) + return (EINVAL); + + /* get method of encoding from first byte */ + encoding = nvh->nvh_encoding; + nvl_endian = nvh->nvh_endian; + break; + + case NVS_OP_GETSIZE: + nvl_endian = host_endian; + + /* + * add the size for encoding + */ + *buflen = sizeof (nvs_header_t); + break; + + default: + return (ENOTSUP); + } + + /* + * Create an nvstream with proper encoding method + */ + switch (encoding) { + case NV_ENCODE_NATIVE: + /* + * check endianness, in case we are unpacking + * from a file + */ + if (nvl_endian != host_endian) + return (ENOTSUP); + err = nvs_native(&nvs, nvl, buf, buflen); + break; + case NV_ENCODE_XDR: + err = nvs_xdr(&nvs, nvl, buf, buflen); + break; + default: + err = ENOTSUP; + break; + } + + return (err); +} + +int +nvlist_size(nvlist_t *nvl, size_t *size, int encoding) +{ + return (nvlist_common(nvl, NULL, size, encoding, NVS_OP_GETSIZE)); +} + +/* + * Pack nvlist into contiguous memory + */ +int +nvlist_pack(nvlist_t *nvl, char **bufp, size_t *buflen, int encoding, + int kmflag) +{ + return (nvlist_xpack(nvl, bufp, buflen, encoding, + nvlist_nv_alloc(kmflag))); +} + +int +nvlist_xpack(nvlist_t *nvl, char **bufp, size_t *buflen, int encoding, + nv_alloc_t *nva) +{ + nvpriv_t nvpriv; + size_t alloc_size; + char *buf; + int err; + + if (nva == NULL || nvl == NULL || bufp == NULL || buflen == NULL) + return (EINVAL); + + if (*bufp != NULL) + return (nvlist_common(nvl, *bufp, buflen, encoding, + NVS_OP_ENCODE)); + + /* + * Here is a difficult situation: + * 1. The nvlist has fixed allocator properties. + * All other nvlist routines (like nvlist_add_*, ...) use + * these properties. + * 2. When using nvlist_pack() the user can specify his own + * allocator properties (e.g. by using KM_NOSLEEP). + * + * We use the user specified properties (2). A clearer solution + * will be to remove the kmflag from nvlist_pack(), but we will + * not change the interface. + */ + nv_priv_init(&nvpriv, nva, 0); + + if ((err = nvlist_size(nvl, &alloc_size, encoding))) + return (err); + + if ((buf = nv_mem_zalloc(&nvpriv, alloc_size)) == NULL) + return (ENOMEM); + + if ((err = nvlist_common(nvl, buf, &alloc_size, encoding, + NVS_OP_ENCODE)) != 0) { + nv_mem_free(&nvpriv, buf, alloc_size); + } else { + *buflen = alloc_size; + *bufp = buf; + } + + return (err); +} + +/* + * Unpack buf into an nvlist_t + */ +int +nvlist_unpack(char *buf, size_t buflen, nvlist_t **nvlp, int kmflag) +{ + return (nvlist_xunpack(buf, buflen, nvlp, nvlist_nv_alloc(kmflag))); +} + +int +nvlist_xunpack(char *buf, size_t buflen, nvlist_t **nvlp, nv_alloc_t *nva) +{ + nvlist_t *nvl; + int err; + + if (nvlp == NULL) + return (EINVAL); + + if ((err = nvlist_xalloc(&nvl, 0, nva)) != 0) + return (err); + + if ((err = nvlist_common(nvl, buf, &buflen, 0, NVS_OP_DECODE)) != 0) + nvlist_free(nvl); + else + *nvlp = nvl; + + return (err); +} + +/* + * Native encoding functions + */ +typedef struct { + /* + * This structure is used when decoding a packed nvpair in + * the native format. n_base points to a buffer containing the + * packed nvpair. n_end is a pointer to the end of the buffer. + * (n_end actually points to the first byte past the end of the + * buffer.) n_curr is a pointer that lies between n_base and n_end. + * It points to the current data that we are decoding. + * The amount of data left in the buffer is equal to n_end - n_curr. + * n_flag is used to recognize a packed embedded list. + */ + caddr_t n_base; + caddr_t n_end; + caddr_t n_curr; + uint_t n_flag; +} nvs_native_t; + +static int +nvs_native_create(nvstream_t *nvs, nvs_native_t *native, char *buf, + size_t buflen) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + case NVS_OP_DECODE: + nvs->nvs_private = native; + native->n_curr = native->n_base = buf; + native->n_end = buf + buflen; + native->n_flag = 0; + return (0); + + case NVS_OP_GETSIZE: + nvs->nvs_private = native; + native->n_curr = native->n_base = native->n_end = NULL; + native->n_flag = 0; + return (0); + default: + return (EINVAL); + } +} + +/*ARGSUSED*/ +static void +nvs_native_destroy(nvstream_t *nvs) +{ +} + +static int +native_cp(nvstream_t *nvs, void *buf, size_t size) +{ + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + + if (native->n_curr + size > native->n_end) + return (EFAULT); + + /* + * The bcopy() below eliminates alignment requirement + * on the buffer (stream) and is preferred over direct access. + */ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + bcopy(buf, native->n_curr, size); + break; + case NVS_OP_DECODE: + bcopy(native->n_curr, buf, size); + break; + default: + return (EINVAL); + } + + native->n_curr += size; + return (0); +} + +/* + * operate on nvlist_t header + */ +static int +nvs_native_nvlist(nvstream_t *nvs, nvlist_t *nvl, size_t *size) +{ + nvs_native_t *native = nvs->nvs_private; + + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + case NVS_OP_DECODE: + if (native->n_flag) + return (0); /* packed embedded list */ + + native->n_flag = 1; + + /* copy version and nvflag of the nvlist_t */ + if (native_cp(nvs, &nvl->nvl_version, sizeof (int32_t)) != 0 || + native_cp(nvs, &nvl->nvl_nvflag, sizeof (int32_t)) != 0) + return (EFAULT); + + return (0); + + case NVS_OP_GETSIZE: + /* + * if calculate for packed embedded list + * 4 for end of the embedded list + * else + * 2 * sizeof (int32_t) for nvl_version and nvl_nvflag + * and 4 for end of the entire list + */ + if (native->n_flag) { + *size += 4; + } else { + native->n_flag = 1; + *size += 2 * sizeof (int32_t) + 4; + } + + return (0); + + default: + return (EINVAL); + } +} + +static int +nvs_native_nvl_fini(nvstream_t *nvs) +{ + if (nvs->nvs_op == NVS_OP_ENCODE) { + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + /* + * Add 4 zero bytes at end of nvlist. They are used + * for end detection by the decode routine. + */ + if (native->n_curr + sizeof (int) > native->n_end) + return (EFAULT); + + bzero(native->n_curr, sizeof (int)); + native->n_curr += sizeof (int); + } + + return (0); +} + +static int +nvpair_native_embedded(nvstream_t *nvs, nvpair_t *nvp) +{ + if (nvs->nvs_op == NVS_OP_ENCODE) { + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + nvlist_t *packed = (void *) + (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp)); + /* + * Null out the pointer that is meaningless in the packed + * structure. The address may not be aligned, so we have + * to use bzero. + */ + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); + } + + return (nvs_embedded(nvs, EMBEDDED_NVL(nvp))); +} + +static int +nvpair_native_embedded_array(nvstream_t *nvs, nvpair_t *nvp) +{ + if (nvs->nvs_op == NVS_OP_ENCODE) { + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + char *value = native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp); + size_t len = NVP_NELEM(nvp) * sizeof (uint64_t); + nvlist_t *packed = (nvlist_t *)((uintptr_t)value + len); + int i; + /* + * Null out pointers that are meaningless in the packed + * structure. The addresses may not be aligned, so we have + * to use bzero. + */ + bzero(value, len); + + for (i = 0; i < NVP_NELEM(nvp); i++, packed++) + /* + * Null out the pointer that is meaningless in the + * packed structure. The address may not be aligned, + * so we have to use bzero. + */ + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); + } + + return (nvs_embedded_nvl_array(nvs, nvp, NULL)); +} + +static void +nvpair_native_string_array(nvstream_t *nvs, nvpair_t *nvp) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: { + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + uint64_t *strp = (void *) + (native->n_curr - nvp->nvp_size + NVP_VALOFF(nvp)); + /* + * Null out pointers that are meaningless in the packed + * structure. The addresses may not be aligned, so we have + * to use bzero. + */ + bzero(strp, NVP_NELEM(nvp) * sizeof (uint64_t)); + break; + } + case NVS_OP_DECODE: { + char **strp = (void *)NVP_VALUE(nvp); + char *buf = ((char *)strp + NVP_NELEM(nvp) * sizeof (uint64_t)); + int i; + + for (i = 0; i < NVP_NELEM(nvp); i++) { + strp[i] = buf; + buf += strlen(buf) + 1; + } + break; + } + } +} + +static int +nvs_native_nvp_op(nvstream_t *nvs, nvpair_t *nvp) +{ + data_type_t type; + int value_sz; + int ret = 0; + + /* + * We do the initial bcopy of the data before we look at + * the nvpair type, because when we're decoding, we won't + * have the correct values for the pair until we do the bcopy. + */ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + case NVS_OP_DECODE: + if (native_cp(nvs, nvp, nvp->nvp_size) != 0) + return (EFAULT); + break; + default: + return (EINVAL); + } + + /* verify nvp_name_sz, check the name string length */ + if (i_validate_nvpair_name(nvp) != 0) + return (EFAULT); + + type = NVP_TYPE(nvp); + + /* + * Verify type and nelem and get the value size. + * In case of data types DATA_TYPE_STRING and DATA_TYPE_STRING_ARRAY + * is the size of the string(s) excluded. + */ + if ((value_sz = i_get_value_size(type, NULL, NVP_NELEM(nvp))) < 0) + return (EFAULT); + + if (NVP_SIZE_CALC(nvp->nvp_name_sz, value_sz) > nvp->nvp_size) + return (EFAULT); + + switch (type) { + case DATA_TYPE_NVLIST: + ret = nvpair_native_embedded(nvs, nvp); + break; + case DATA_TYPE_NVLIST_ARRAY: + ret = nvpair_native_embedded_array(nvs, nvp); + break; + case DATA_TYPE_STRING_ARRAY: + nvpair_native_string_array(nvs, nvp); + break; + default: + break; + } + + return (ret); +} + +static int +nvs_native_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size) +{ + uint64_t nvp_sz = nvp->nvp_size; + + switch (NVP_TYPE(nvp)) { + case DATA_TYPE_NVLIST: { + size_t nvsize = 0; + + if (nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize) != 0) + return (EINVAL); + + nvp_sz += nvsize; + break; + } + case DATA_TYPE_NVLIST_ARRAY: { + size_t nvsize; + + if (nvs_embedded_nvl_array(nvs, nvp, &nvsize) != 0) + return (EINVAL); + + nvp_sz += nvsize; + break; + } + default: + break; + } + + if (nvp_sz > INT32_MAX) + return (EINVAL); + + *size = nvp_sz; + + return (0); +} + +static int +nvs_native_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + return (nvs_native_nvp_op(nvs, nvp)); + + case NVS_OP_DECODE: { + nvs_native_t *native = (nvs_native_t *)nvs->nvs_private; + int32_t decode_len; + + /* try to read the size value from the stream */ + if (native->n_curr + sizeof (int32_t) > native->n_end) + return (EFAULT); + bcopy(native->n_curr, &decode_len, sizeof (int32_t)); + + /* sanity check the size value */ + if (decode_len < 0 || + decode_len > native->n_end - native->n_curr) + return (EFAULT); + + *size = decode_len; + + /* + * If at the end of the stream then move the cursor + * forward, otherwise nvpair_native_op() will read + * the entire nvpair at the same cursor position. + */ + if (*size == 0) + native->n_curr += sizeof (int32_t); + break; + } + + default: + return (EINVAL); + } + + return (0); +} + +static const nvs_ops_t nvs_native_ops = { + nvs_native_nvlist, + nvs_native_nvpair, + nvs_native_nvp_op, + nvs_native_nvp_size, + nvs_native_nvl_fini +}; + +static int +nvs_native(nvstream_t *nvs, nvlist_t *nvl, char *buf, size_t *buflen) +{ + nvs_native_t native; + int err; + + nvs->nvs_ops = &nvs_native_ops; + + if ((err = nvs_native_create(nvs, &native, buf + sizeof (nvs_header_t), + *buflen - sizeof (nvs_header_t))) != 0) + return (err); + + err = nvs_operation(nvs, nvl, buflen); + + nvs_native_destroy(nvs); + + return (err); +} + +/* + * XDR encoding functions + * + * An xdr packed nvlist is encoded as: + * + * - encoding methode and host endian (4 bytes) + * - nvl_version (4 bytes) + * - nvl_nvflag (4 bytes) + * + * - encoded nvpairs, the format of one xdr encoded nvpair is: + * - encoded size of the nvpair (4 bytes) + * - decoded size of the nvpair (4 bytes) + * - name string, (4 + sizeof(NV_ALIGN4(string)) + * a string is coded as size (4 bytes) and data + * - data type (4 bytes) + * - number of elements in the nvpair (4 bytes) + * - data + * + * - 2 zero's for end of the entire list (8 bytes) + */ +static int +nvs_xdr_create(nvstream_t *nvs, XDR *xdr, char *buf, size_t buflen) +{ + /* xdr data must be 4 byte aligned */ + if ((ulong_t)buf % 4 != 0) + return (EFAULT); + + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + xdrmem_create(xdr, buf, (uint_t)buflen, XDR_ENCODE); + nvs->nvs_private = xdr; + return (0); + case NVS_OP_DECODE: + xdrmem_create(xdr, buf, (uint_t)buflen, XDR_DECODE); + nvs->nvs_private = xdr; + return (0); + case NVS_OP_GETSIZE: + nvs->nvs_private = NULL; + return (0); + default: + return (EINVAL); + } +} + +static void +nvs_xdr_destroy(nvstream_t *nvs) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + case NVS_OP_DECODE: + xdr_destroy((XDR *)nvs->nvs_private); + break; + default: + break; + } +} + +static int +nvs_xdr_nvlist(nvstream_t *nvs, nvlist_t *nvl, size_t *size) +{ + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: + case NVS_OP_DECODE: { + XDR *xdr = nvs->nvs_private; + + if (!xdr_int(xdr, &nvl->nvl_version) || + !xdr_u_int(xdr, &nvl->nvl_nvflag)) + return (EFAULT); + break; + } + case NVS_OP_GETSIZE: { + /* + * 2 * 4 for nvl_version + nvl_nvflag + * and 8 for end of the entire list + */ + *size += 2 * 4 + 8; + break; + } + default: + return (EINVAL); + } + return (0); +} + +static int +nvs_xdr_nvl_fini(nvstream_t *nvs) +{ + if (nvs->nvs_op == NVS_OP_ENCODE) { + XDR *xdr = nvs->nvs_private; + int zero = 0; + + if (!xdr_int(xdr, &zero) || !xdr_int(xdr, &zero)) + return (EFAULT); + } + + return (0); +} + +/* + * The format of xdr encoded nvpair is: + * encode_size, decode_size, name string, data type, nelem, data + */ +static int +nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t *nvp) +{ + data_type_t type; + char *buf; + char *buf_end = (char *)nvp + nvp->nvp_size; + int value_sz; + uint_t nelem, buflen; + bool_t ret = FALSE; + XDR *xdr = nvs->nvs_private; + + ASSERT(xdr != NULL && nvp != NULL); + + /* name string */ + if ((buf = NVP_NAME(nvp)) >= buf_end) + return (EFAULT); + buflen = buf_end - buf; + + if (!xdr_string(xdr, &buf, buflen - 1)) + return (EFAULT); + nvp->nvp_name_sz = strlen(buf) + 1; + + /* type and nelem */ + if (!xdr_int(xdr, (int *)&nvp->nvp_type) || + !xdr_int(xdr, &nvp->nvp_value_elem)) + return (EFAULT); + + type = NVP_TYPE(nvp); + nelem = nvp->nvp_value_elem; + + /* + * Verify type and nelem and get the value size. + * In case of data types DATA_TYPE_STRING and DATA_TYPE_STRING_ARRAY + * is the size of the string(s) excluded. + */ + if ((value_sz = i_get_value_size(type, NULL, nelem)) < 0) + return (EFAULT); + + /* if there is no data to extract then return */ + if (nelem == 0) + return (0); + + /* value */ + if ((buf = NVP_VALUE(nvp)) >= buf_end) + return (EFAULT); + buflen = buf_end - buf; + + if (buflen < value_sz) + return (EFAULT); + + switch (type) { + case DATA_TYPE_NVLIST: + if (nvs_embedded(nvs, (void *)buf) == 0) + return (0); + break; + + case DATA_TYPE_NVLIST_ARRAY: + if (nvs_embedded_nvl_array(nvs, nvp, NULL) == 0) + return (0); + break; + + case DATA_TYPE_BOOLEAN: + ret = TRUE; + break; + + case DATA_TYPE_BYTE: + case DATA_TYPE_INT8: + case DATA_TYPE_UINT8: + ret = xdr_char(xdr, buf); + break; + + case DATA_TYPE_INT16: + ret = xdr_short(xdr, (void *)buf); + break; + + case DATA_TYPE_UINT16: + ret = xdr_u_short(xdr, (void *)buf); + break; + + case DATA_TYPE_BOOLEAN_VALUE: + case DATA_TYPE_INT32: + ret = xdr_int(xdr, (void *)buf); + break; + + case DATA_TYPE_UINT32: + ret = xdr_u_int(xdr, (void *)buf); + break; + + case DATA_TYPE_INT64: + ret = xdr_longlong_t(xdr, (void *)buf); + break; + + case DATA_TYPE_UINT64: + ret = xdr_u_longlong_t(xdr, (void *)buf); + break; + + case DATA_TYPE_HRTIME: + /* + * NOTE: must expose the definition of hrtime_t here + */ + ret = xdr_longlong_t(xdr, (void *)buf); + break; +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: + ret = xdr_double(xdr, (void *)buf); + break; +#endif + case DATA_TYPE_STRING: + ret = xdr_string(xdr, &buf, buflen - 1); + break; + + case DATA_TYPE_BYTE_ARRAY: + ret = xdr_opaque(xdr, buf, nelem); + break; + + case DATA_TYPE_INT8_ARRAY: + case DATA_TYPE_UINT8_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen, sizeof (int8_t), + (xdrproc_t)xdr_char); + break; + + case DATA_TYPE_INT16_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (int16_t), + sizeof (int16_t), (xdrproc_t)xdr_short); + break; + + case DATA_TYPE_UINT16_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (uint16_t), + sizeof (uint16_t), (xdrproc_t)xdr_u_short); + break; + + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_INT32_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (int32_t), + sizeof (int32_t), (xdrproc_t)xdr_int); + break; + + case DATA_TYPE_UINT32_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (uint32_t), + sizeof (uint32_t), (xdrproc_t)xdr_u_int); + break; + + case DATA_TYPE_INT64_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (int64_t), + sizeof (int64_t), (xdrproc_t)xdr_longlong_t); + break; + + case DATA_TYPE_UINT64_ARRAY: + ret = xdr_array(xdr, &buf, &nelem, buflen / sizeof (uint64_t), + sizeof (uint64_t), (xdrproc_t)xdr_u_longlong_t); + break; + + case DATA_TYPE_STRING_ARRAY: { + size_t len = nelem * sizeof (uint64_t); + char **strp = (void *)buf; + int i; + + if (nvs->nvs_op == NVS_OP_DECODE) + bzero(buf, len); /* don't trust packed data */ + + for (i = 0; i < nelem; i++) { + if (buflen <= len) + return (EFAULT); + + buf += len; + buflen -= len; + + if (xdr_string(xdr, &buf, buflen - 1) != TRUE) + return (EFAULT); + + if (nvs->nvs_op == NVS_OP_DECODE) + strp[i] = buf; + len = strlen(buf) + 1; + } + ret = TRUE; + break; + } + default: + break; + } + + return (ret == TRUE ? 0 : EFAULT); +} + +static int +nvs_xdr_nvp_size(nvstream_t *nvs, nvpair_t *nvp, size_t *size) +{ + data_type_t type = NVP_TYPE(nvp); + /* + * encode_size + decode_size + name string size + data type + nelem + * where name string size = 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + */ + uint64_t nvp_sz = 4 + 4 + 4 + NV_ALIGN4(strlen(NVP_NAME(nvp))) + 4 + 4; + + switch (type) { + case DATA_TYPE_BOOLEAN: + break; + + case DATA_TYPE_BOOLEAN_VALUE: + case DATA_TYPE_BYTE: + case DATA_TYPE_INT8: + case DATA_TYPE_UINT8: + case DATA_TYPE_INT16: + case DATA_TYPE_UINT16: + case DATA_TYPE_INT32: + case DATA_TYPE_UINT32: + nvp_sz += 4; /* 4 is the minimum xdr unit */ + break; + + case DATA_TYPE_INT64: + case DATA_TYPE_UINT64: + case DATA_TYPE_HRTIME: +#if !defined(_KERNEL) + case DATA_TYPE_DOUBLE: +#endif + nvp_sz += 8; + break; + + case DATA_TYPE_STRING: + nvp_sz += 4 + NV_ALIGN4(strlen((char *)NVP_VALUE(nvp))); + break; + + case DATA_TYPE_BYTE_ARRAY: + nvp_sz += NV_ALIGN4(NVP_NELEM(nvp)); + break; + + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_INT8_ARRAY: + case DATA_TYPE_UINT8_ARRAY: + case DATA_TYPE_INT16_ARRAY: + case DATA_TYPE_UINT16_ARRAY: + case DATA_TYPE_INT32_ARRAY: + case DATA_TYPE_UINT32_ARRAY: + nvp_sz += 4 + 4 * (uint64_t)NVP_NELEM(nvp); + break; + + case DATA_TYPE_INT64_ARRAY: + case DATA_TYPE_UINT64_ARRAY: + nvp_sz += 4 + 8 * (uint64_t)NVP_NELEM(nvp); + break; + + case DATA_TYPE_STRING_ARRAY: { + int i; + char **strs = (void *)NVP_VALUE(nvp); + + for (i = 0; i < NVP_NELEM(nvp); i++) + nvp_sz += 4 + NV_ALIGN4(strlen(strs[i])); + + break; + } + + case DATA_TYPE_NVLIST: + case DATA_TYPE_NVLIST_ARRAY: { + size_t nvsize = 0; + int old_nvs_op = nvs->nvs_op; + int err; + + nvs->nvs_op = NVS_OP_GETSIZE; + if (type == DATA_TYPE_NVLIST) + err = nvs_operation(nvs, EMBEDDED_NVL(nvp), &nvsize); + else + err = nvs_embedded_nvl_array(nvs, nvp, &nvsize); + nvs->nvs_op = old_nvs_op; + + if (err != 0) + return (EINVAL); + + nvp_sz += nvsize; + break; + } + + default: + return (EINVAL); + } + + if (nvp_sz > INT32_MAX) + return (EINVAL); + + *size = nvp_sz; + + return (0); +} + + +/* + * The NVS_XDR_MAX_LEN macro takes a packed xdr buffer of size x and estimates + * the largest nvpair that could be encoded in the buffer. + * + * See comments above nvpair_xdr_op() for the format of xdr encoding. + * The size of a xdr packed nvpair without any data is 5 words. + * + * Using the size of the data directly as an estimate would be ok + * in all cases except one. If the data type is of DATA_TYPE_STRING_ARRAY + * then the actual nvpair has space for an array of pointers to index + * the strings. These pointers are not encoded into the packed xdr buffer. + * + * If the data is of type DATA_TYPE_STRING_ARRAY and all the strings are + * of length 0, then each string is endcoded in xdr format as a single word. + * Therefore when expanded to an nvpair there will be 2.25 word used for + * each string. (a int64_t allocated for pointer usage, and a single char + * for the null termination.) + * + * This is the calculation performed by the NVS_XDR_MAX_LEN macro. + */ +#define NVS_XDR_HDR_LEN ((size_t)(5 * 4)) +#define NVS_XDR_DATA_LEN(y) (((size_t)(y) <= NVS_XDR_HDR_LEN) ? \ + 0 : ((size_t)(y) - NVS_XDR_HDR_LEN)) +#define NVS_XDR_MAX_LEN(x) (NVP_SIZE_CALC(1, 0) + \ + (NVS_XDR_DATA_LEN(x) * 2) + \ + NV_ALIGN4((NVS_XDR_DATA_LEN(x) / 4))) + +static int +nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size) +{ + XDR *xdr = nvs->nvs_private; + int32_t encode_len, decode_len; + + switch (nvs->nvs_op) { + case NVS_OP_ENCODE: { + size_t nvsize; + + if (nvs_xdr_nvp_size(nvs, nvp, &nvsize) != 0) + return (EFAULT); + + decode_len = nvp->nvp_size; + encode_len = nvsize; + if (!xdr_int(xdr, &encode_len) || !xdr_int(xdr, &decode_len)) + return (EFAULT); + + return (nvs_xdr_nvp_op(nvs, nvp)); + } + case NVS_OP_DECODE: { + struct xdr_bytesrec bytesrec; + + /* get the encode and decode size */ + if (!xdr_int(xdr, &encode_len) || !xdr_int(xdr, &decode_len)) + return (EFAULT); + *size = decode_len; + + /* are we at the end of the stream? */ + if (*size == 0) + return (0); + + /* sanity check the size parameter */ + if (!xdr_control(xdr, XDR_GET_BYTES_AVAIL, &bytesrec)) + return (EFAULT); + + if (*size > NVS_XDR_MAX_LEN(bytesrec.xc_num_avail)) + return (EFAULT); + break; + } + + default: + return (EINVAL); + } + return (0); +} + +static const struct nvs_ops nvs_xdr_ops = { + nvs_xdr_nvlist, + nvs_xdr_nvpair, + nvs_xdr_nvp_op, + nvs_xdr_nvp_size, + nvs_xdr_nvl_fini +}; + +static int +nvs_xdr(nvstream_t *nvs, nvlist_t *nvl, char *buf, size_t *buflen) +{ + XDR xdr; + int err; + + nvs->nvs_ops = &nvs_xdr_ops; + + if ((err = nvs_xdr_create(nvs, &xdr, buf + sizeof (nvs_header_t), + *buflen - sizeof (nvs_header_t))) != 0) + return (err); + + err = nvs_operation(nvs, nvl, buflen); + + nvs_xdr_destroy(nvs); + + return (err); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +static int __init +nvpair_init(void) +{ + return (0); +} + +static void __exit +nvpair_fini(void) +{ +} + +module_init(nvpair_init); +module_exit(nvpair_fini); + +MODULE_DESCRIPTION("Generic name/value pair implementation"); +MODULE_AUTHOR(ZFS_META_AUTHOR); +MODULE_LICENSE(ZFS_META_LICENSE); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); + +EXPORT_SYMBOL(nv_alloc_init); +EXPORT_SYMBOL(nv_alloc_reset); +EXPORT_SYMBOL(nv_alloc_fini); + +/* list management */ +EXPORT_SYMBOL(nvlist_alloc); +EXPORT_SYMBOL(nvlist_free); +EXPORT_SYMBOL(nvlist_size); +EXPORT_SYMBOL(nvlist_pack); +EXPORT_SYMBOL(nvlist_unpack); +EXPORT_SYMBOL(nvlist_dup); +EXPORT_SYMBOL(nvlist_merge); + +EXPORT_SYMBOL(nvlist_xalloc); +EXPORT_SYMBOL(nvlist_xpack); +EXPORT_SYMBOL(nvlist_xunpack); +EXPORT_SYMBOL(nvlist_xdup); +EXPORT_SYMBOL(nvlist_lookup_nv_alloc); + +EXPORT_SYMBOL(nvlist_add_nvpair); +EXPORT_SYMBOL(nvlist_add_boolean); +EXPORT_SYMBOL(nvlist_add_boolean_value); +EXPORT_SYMBOL(nvlist_add_byte); +EXPORT_SYMBOL(nvlist_add_int8); +EXPORT_SYMBOL(nvlist_add_uint8); +EXPORT_SYMBOL(nvlist_add_int16); +EXPORT_SYMBOL(nvlist_add_uint16); +EXPORT_SYMBOL(nvlist_add_int32); +EXPORT_SYMBOL(nvlist_add_uint32); +EXPORT_SYMBOL(nvlist_add_int64); +EXPORT_SYMBOL(nvlist_add_uint64); +EXPORT_SYMBOL(nvlist_add_string); +EXPORT_SYMBOL(nvlist_add_nvlist); +EXPORT_SYMBOL(nvlist_add_boolean_array); +EXPORT_SYMBOL(nvlist_add_byte_array); +EXPORT_SYMBOL(nvlist_add_int8_array); +EXPORT_SYMBOL(nvlist_add_uint8_array); +EXPORT_SYMBOL(nvlist_add_int16_array); +EXPORT_SYMBOL(nvlist_add_uint16_array); +EXPORT_SYMBOL(nvlist_add_int32_array); +EXPORT_SYMBOL(nvlist_add_uint32_array); +EXPORT_SYMBOL(nvlist_add_int64_array); +EXPORT_SYMBOL(nvlist_add_uint64_array); +EXPORT_SYMBOL(nvlist_add_string_array); +EXPORT_SYMBOL(nvlist_add_nvlist_array); +EXPORT_SYMBOL(nvlist_next_nvpair); +EXPORT_SYMBOL(nvlist_prev_nvpair); +EXPORT_SYMBOL(nvlist_empty); +EXPORT_SYMBOL(nvlist_add_hrtime); + +EXPORT_SYMBOL(nvlist_remove); +EXPORT_SYMBOL(nvlist_remove_nvpair); +EXPORT_SYMBOL(nvlist_remove_all); + +EXPORT_SYMBOL(nvlist_lookup_boolean); +EXPORT_SYMBOL(nvlist_lookup_boolean_value); +EXPORT_SYMBOL(nvlist_lookup_byte); +EXPORT_SYMBOL(nvlist_lookup_int8); +EXPORT_SYMBOL(nvlist_lookup_uint8); +EXPORT_SYMBOL(nvlist_lookup_int16); +EXPORT_SYMBOL(nvlist_lookup_uint16); +EXPORT_SYMBOL(nvlist_lookup_int32); +EXPORT_SYMBOL(nvlist_lookup_uint32); +EXPORT_SYMBOL(nvlist_lookup_int64); +EXPORT_SYMBOL(nvlist_lookup_uint64); +EXPORT_SYMBOL(nvlist_lookup_string); +EXPORT_SYMBOL(nvlist_lookup_nvlist); +EXPORT_SYMBOL(nvlist_lookup_boolean_array); +EXPORT_SYMBOL(nvlist_lookup_byte_array); +EXPORT_SYMBOL(nvlist_lookup_int8_array); +EXPORT_SYMBOL(nvlist_lookup_uint8_array); +EXPORT_SYMBOL(nvlist_lookup_int16_array); +EXPORT_SYMBOL(nvlist_lookup_uint16_array); +EXPORT_SYMBOL(nvlist_lookup_int32_array); +EXPORT_SYMBOL(nvlist_lookup_uint32_array); +EXPORT_SYMBOL(nvlist_lookup_int64_array); +EXPORT_SYMBOL(nvlist_lookup_uint64_array); +EXPORT_SYMBOL(nvlist_lookup_string_array); +EXPORT_SYMBOL(nvlist_lookup_nvlist_array); +EXPORT_SYMBOL(nvlist_lookup_hrtime); +EXPORT_SYMBOL(nvlist_lookup_pairs); + +EXPORT_SYMBOL(nvlist_lookup_nvpair); +EXPORT_SYMBOL(nvlist_exists); + +/* processing nvpair */ +EXPORT_SYMBOL(nvpair_name); +EXPORT_SYMBOL(nvpair_type); +EXPORT_SYMBOL(nvpair_value_boolean_value); +EXPORT_SYMBOL(nvpair_value_byte); +EXPORT_SYMBOL(nvpair_value_int8); +EXPORT_SYMBOL(nvpair_value_uint8); +EXPORT_SYMBOL(nvpair_value_int16); +EXPORT_SYMBOL(nvpair_value_uint16); +EXPORT_SYMBOL(nvpair_value_int32); +EXPORT_SYMBOL(nvpair_value_uint32); +EXPORT_SYMBOL(nvpair_value_int64); +EXPORT_SYMBOL(nvpair_value_uint64); +EXPORT_SYMBOL(nvpair_value_string); +EXPORT_SYMBOL(nvpair_value_nvlist); +EXPORT_SYMBOL(nvpair_value_boolean_array); +EXPORT_SYMBOL(nvpair_value_byte_array); +EXPORT_SYMBOL(nvpair_value_int8_array); +EXPORT_SYMBOL(nvpair_value_uint8_array); +EXPORT_SYMBOL(nvpair_value_int16_array); +EXPORT_SYMBOL(nvpair_value_uint16_array); +EXPORT_SYMBOL(nvpair_value_int32_array); +EXPORT_SYMBOL(nvpair_value_uint32_array); +EXPORT_SYMBOL(nvpair_value_int64_array); +EXPORT_SYMBOL(nvpair_value_uint64_array); +EXPORT_SYMBOL(nvpair_value_string_array); +EXPORT_SYMBOL(nvpair_value_nvlist_array); +EXPORT_SYMBOL(nvpair_value_hrtime); + +#endif --- linux-4.4.0.orig/zfs/module/nvpair/nvpair_alloc_fixed.c +++ linux-4.4.0/zfs/module/nvpair/nvpair_alloc_fixed.c @@ -0,0 +1,124 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + + + +#include +#include +#include +#include +#if defined(_KERNEL) && !defined(_BOOT) +#include +#else +#include +#include +#endif + +/* + * This allocator is very simple. + * - it uses a pre-allocated buffer for memory allocations. + * - it does _not_ free memory in the pre-allocated buffer. + * + * The reason for the selected implemention is simplicity. + * This allocator is designed for the usage in interrupt context when + * the caller may not wait for free memory. + */ + +/* pre-allocated buffer for memory allocations */ +typedef struct nvbuf { + uintptr_t nvb_buf; /* address of pre-allocated buffer */ + uintptr_t nvb_lim; /* limit address in the buffer */ + uintptr_t nvb_cur; /* current address in the buffer */ +} nvbuf_t; + +/* + * Initialize the pre-allocated buffer allocator. The caller needs to supply + * + * buf address of pre-allocated buffer + * bufsz size of pre-allocated buffer + * + * nv_fixed_init() calculates the remaining members of nvbuf_t. + */ +static int +nv_fixed_init(nv_alloc_t *nva, va_list valist) +{ + uintptr_t base = va_arg(valist, uintptr_t); + uintptr_t lim = base + va_arg(valist, size_t); + nvbuf_t *nvb = (nvbuf_t *)P2ROUNDUP(base, sizeof (uintptr_t)); + + if (base == 0 || (uintptr_t)&nvb[1] > lim) + return (EINVAL); + + nvb->nvb_buf = (uintptr_t)&nvb[0]; + nvb->nvb_cur = (uintptr_t)&nvb[1]; + nvb->nvb_lim = lim; + nva->nva_arg = nvb; + + return (0); +} + +static void * +nv_fixed_alloc(nv_alloc_t *nva, size_t size) +{ + nvbuf_t *nvb = nva->nva_arg; + uintptr_t new = nvb->nvb_cur; + + if (size == 0 || new + size > nvb->nvb_lim) + return (NULL); + + nvb->nvb_cur = P2ROUNDUP(new + size, sizeof (uintptr_t)); + + return ((void *)new); +} + +/*ARGSUSED*/ +static void +nv_fixed_free(nv_alloc_t *nva, void *buf, size_t size) +{ + /* don't free memory in the pre-allocated buffer */ +} + +static void +nv_fixed_reset(nv_alloc_t *nva) +{ + nvbuf_t *nvb = nva->nva_arg; + + nvb->nvb_cur = (uintptr_t)&nvb[1]; +} + +const nv_alloc_ops_t nv_fixed_ops_def = { + nv_fixed_init, /* nv_ao_init() */ + NULL, /* nv_ao_fini() */ + nv_fixed_alloc, /* nv_ao_alloc() */ + nv_fixed_free, /* nv_ao_free() */ + nv_fixed_reset /* nv_ao_reset() */ +}; + +const nv_alloc_ops_t *nv_fixed_ops = &nv_fixed_ops_def; + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(nv_fixed_ops); +#endif --- linux-4.4.0.orig/zfs/module/nvpair/nvpair_alloc_spl.c +++ linux-4.4.0/zfs/module/nvpair/nvpair_alloc_spl.c @@ -0,0 +1,96 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at * usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#include +#include +#include + +static void * +nv_alloc_sleep_spl(nv_alloc_t *nva, size_t size) +{ + return (vmem_alloc(size, KM_SLEEP)); +} + +static void * +nv_alloc_pushpage_spl(nv_alloc_t *nva, size_t size) +{ + return (vmem_alloc(size, KM_PUSHPAGE)); +} + +static void * +nv_alloc_nosleep_spl(nv_alloc_t *nva, size_t size) +{ + return (kmem_alloc(size, KM_NOSLEEP)); +} + +static void +nv_free_spl(nv_alloc_t *nva, void *buf, size_t size) +{ + kmem_free(buf, size); +} + +const nv_alloc_ops_t spl_sleep_ops_def = { + NULL, /* nv_ao_init() */ + NULL, /* nv_ao_fini() */ + nv_alloc_sleep_spl, /* nv_ao_alloc() */ + nv_free_spl, /* nv_ao_free() */ + NULL /* nv_ao_reset() */ +}; + +const nv_alloc_ops_t spl_pushpage_ops_def = { + NULL, /* nv_ao_init() */ + NULL, /* nv_ao_fini() */ + nv_alloc_pushpage_spl, /* nv_ao_alloc() */ + nv_free_spl, /* nv_ao_free() */ + NULL /* nv_ao_reset() */ +}; + +const nv_alloc_ops_t spl_nosleep_ops_def = { + NULL, /* nv_ao_init() */ + NULL, /* nv_ao_fini() */ + nv_alloc_nosleep_spl, /* nv_ao_alloc() */ + nv_free_spl, /* nv_ao_free() */ + NULL /* nv_ao_reset() */ +}; + +nv_alloc_t nv_alloc_sleep_def = { + &spl_sleep_ops_def, + NULL +}; + +nv_alloc_t nv_alloc_pushpage_def = { + &spl_pushpage_ops_def, + NULL +}; + +nv_alloc_t nv_alloc_nosleep_def = { + &spl_nosleep_ops_def, + NULL +}; + +nv_alloc_t *nv_alloc_sleep = &nv_alloc_sleep_def; +nv_alloc_t *nv_alloc_pushpage = &nv_alloc_pushpage_def; +nv_alloc_t *nv_alloc_nosleep = &nv_alloc_nosleep_def; --- linux-4.4.0.orig/zfs/module/unicode/Makefile.in +++ linux-4.4.0/zfs/module/unicode/Makefile.in @@ -0,0 +1,11 @@ +src = @abs_top_srcdir@/module/unicode +obj = @abs_builddir@ + +MODULE := zunicode + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += u8_textprep.o +$(MODULE)-objs += uconv.o --- linux-4.4.0.orig/zfs/module/unicode/u8_textprep.c +++ linux-4.4.0/zfs/module/unicode/u8_textprep.c @@ -0,0 +1,2157 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + + + + +/* + * UTF-8 text preparation functions (PSARC/2007/149, PSARC/2007/458). + * + * Man pages: u8_textprep_open(9F), u8_textprep_buf(9F), u8_textprep_close(9F), + * u8_textprep_str(9F), u8_strcmp(9F), and u8_validate(9F). See also + * the section 3C man pages. + * Interface stability: Committed. + */ + +#include +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#endif /* _KERNEL */ +#include +#include +#include + + +/* The maximum possible number of bytes in a UTF-8 character. */ +#define U8_MB_CUR_MAX (4) + +/* + * The maximum number of bytes needed for a UTF-8 character to cover + * U+0000 - U+FFFF, i.e., the coding space of now deprecated UCS-2. + */ +#define U8_MAX_BYTES_UCS2 (3) + +/* The maximum possible number of bytes in a Stream-Safe Text. */ +#define U8_STREAM_SAFE_TEXT_MAX (128) + +/* + * The maximum number of characters in a combining/conjoining sequence and + * the actual upperbound limit of a combining/conjoining sequence. + */ +#define U8_MAX_CHARS_A_SEQ (32) +#define U8_UPPER_LIMIT_IN_A_SEQ (31) + +/* The combining class value for Starter. */ +#define U8_COMBINING_CLASS_STARTER (0) + +/* + * Some Hangul related macros at below. + * + * The first and the last of Hangul syllables, Hangul Jamo Leading consonants, + * Vowels, and optional Trailing consonants in Unicode scalar values. + * + * Please be noted that the U8_HANGUL_JAMO_T_FIRST is 0x11A7 at below not + * the actual U+11A8. This is due to that the trailing consonant is optional + * and thus we are doing a pre-calculation of subtracting one. + * + * Each of 19 modern leading consonants has total 588 possible syllables since + * Hangul has 21 modern vowels and 27 modern trailing consonants plus 1 for + * no trailing consonant case, i.e., 21 x 28 = 588. + * + * We also have bunch of Hangul related macros at below. Please bear in mind + * that the U8_HANGUL_JAMO_1ST_BYTE can be used to check whether it is + * a Hangul Jamo or not but the value does not guarantee that it is a Hangul + * Jamo; it just guarantee that it will be most likely. + */ +#define U8_HANGUL_SYL_FIRST (0xAC00U) +#define U8_HANGUL_SYL_LAST (0xD7A3U) + +#define U8_HANGUL_JAMO_L_FIRST (0x1100U) +#define U8_HANGUL_JAMO_L_LAST (0x1112U) +#define U8_HANGUL_JAMO_V_FIRST (0x1161U) +#define U8_HANGUL_JAMO_V_LAST (0x1175U) +#define U8_HANGUL_JAMO_T_FIRST (0x11A7U) +#define U8_HANGUL_JAMO_T_LAST (0x11C2U) + +#define U8_HANGUL_V_COUNT (21) +#define U8_HANGUL_VT_COUNT (588) +#define U8_HANGUL_T_COUNT (28) + +#define U8_HANGUL_JAMO_1ST_BYTE (0xE1U) + +#define U8_SAVE_HANGUL_AS_UTF8(s, i, j, k, b) \ + (s)[(i)] = (uchar_t)(0xE0U | ((uint32_t)(b) & 0xF000U) >> 12); \ + (s)[(j)] = (uchar_t)(0x80U | ((uint32_t)(b) & 0x0FC0U) >> 6); \ + (s)[(k)] = (uchar_t)(0x80U | ((uint32_t)(b) & 0x003FU)); + +#define U8_HANGUL_JAMO_L(u) \ + ((u) >= U8_HANGUL_JAMO_L_FIRST && (u) <= U8_HANGUL_JAMO_L_LAST) + +#define U8_HANGUL_JAMO_V(u) \ + ((u) >= U8_HANGUL_JAMO_V_FIRST && (u) <= U8_HANGUL_JAMO_V_LAST) + +#define U8_HANGUL_JAMO_T(u) \ + ((u) > U8_HANGUL_JAMO_T_FIRST && (u) <= U8_HANGUL_JAMO_T_LAST) + +#define U8_HANGUL_JAMO(u) \ + ((u) >= U8_HANGUL_JAMO_L_FIRST && (u) <= U8_HANGUL_JAMO_T_LAST) + +#define U8_HANGUL_SYLLABLE(u) \ + ((u) >= U8_HANGUL_SYL_FIRST && (u) <= U8_HANGUL_SYL_LAST) + +#define U8_HANGUL_COMPOSABLE_L_V(s, u) \ + ((s) == U8_STATE_HANGUL_L && U8_HANGUL_JAMO_V((u))) + +#define U8_HANGUL_COMPOSABLE_LV_T(s, u) \ + ((s) == U8_STATE_HANGUL_LV && U8_HANGUL_JAMO_T((u))) + +/* The types of decomposition mappings. */ +#define U8_DECOMP_BOTH (0xF5U) +#define U8_DECOMP_CANONICAL (0xF6U) + +/* The indicator for 16-bit table. */ +#define U8_16BIT_TABLE_INDICATOR (0x8000U) + +/* The following are some convenience macros. */ +#define U8_PUT_3BYTES_INTO_UTF32(u, b1, b2, b3) \ + (u) = ((((uint32_t)(b1) & 0x0F) << 12) | \ + (((uint32_t)(b2) & 0x3F) << 6) | \ + ((uint32_t)(b3) & 0x3F)); + +#define U8_SIMPLE_SWAP(a, b, t) \ + (t) = (a); \ + (a) = (b); \ + (b) = (t); + +#define U8_ASCII_TOUPPER(c) \ + (((c) >= 'a' && (c) <= 'z') ? (c) - 'a' + 'A' : (c)) + +#define U8_ASCII_TOLOWER(c) \ + (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) + +#define U8_ISASCII(c) (((uchar_t)(c)) < 0x80U) +/* + * The following macro assumes that the two characters that are to be + * swapped are adjacent to each other and 'a' comes before 'b'. + * + * If the assumptions are not met, then, the macro will fail. + */ +#define U8_SWAP_COMB_MARKS(a, b) \ + for (k = 0; k < disp[(a)]; k++) \ + u8t[k] = u8s[start[(a)] + k]; \ + for (k = 0; k < disp[(b)]; k++) \ + u8s[start[(a)] + k] = u8s[start[(b)] + k]; \ + start[(b)] = start[(a)] + disp[(b)]; \ + for (k = 0; k < disp[(a)]; k++) \ + u8s[start[(b)] + k] = u8t[k]; \ + U8_SIMPLE_SWAP(comb_class[(a)], comb_class[(b)], tc); \ + U8_SIMPLE_SWAP(disp[(a)], disp[(b)], tc); + +/* The possible states during normalization. */ +typedef enum { + U8_STATE_START = 0, + U8_STATE_HANGUL_L = 1, + U8_STATE_HANGUL_LV = 2, + U8_STATE_HANGUL_LVT = 3, + U8_STATE_HANGUL_V = 4, + U8_STATE_HANGUL_T = 5, + U8_STATE_COMBINING_MARK = 6 +} u8_normalization_states_t; + +/* + * The three vectors at below are used to check bytes of a given UTF-8 + * character are valid and not containing any malformed byte values. + * + * We used to have a quite relaxed UTF-8 binary representation but then there + * was some security related issues and so the Unicode Consortium defined + * and announced the UTF-8 Corrigendum at Unicode 3.1 and then refined it + * one more time at the Unicode 3.2. The following three tables are based on + * that. + */ + +#define U8_ILLEGAL_NEXT_BYTE_COMMON(c) ((c) < 0x80 || (c) > 0xBF) + +#define I_ U8_ILLEGAL_CHAR +#define O_ U8_OUT_OF_RANGE_CHAR + +const int8_t u8_number_of_bytes[0x100] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + +/* 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F */ + I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, + +/* 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F */ + I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, + +/* A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF */ + I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, + +/* B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF */ + I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, I_, + +/* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF */ + I_, I_, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + +/* D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF */ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + +/* E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF */ + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + +/* F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF */ + 4, 4, 4, 4, 4, O_, O_, O_, O_, O_, O_, O_, O_, O_, O_, O_, +}; + +#undef I_ +#undef O_ + +const uint8_t u8_valid_min_2nd_byte[0x100] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/* C0 C1 C2 C3 C4 C5 C6 C7 */ + 0, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* C8 C9 CA CB CC CD CE CF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* D0 D1 D2 D3 D4 D5 D6 D7 */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* D8 D9 DA DB DC DD DE DF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* E0 E1 E2 E3 E4 E5 E6 E7 */ + 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* E8 E9 EA EB EC ED EE EF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* F0 F1 F2 F3 F4 F5 F6 F7 */ + 0x90, 0x80, 0x80, 0x80, 0x80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +const uint8_t u8_valid_max_2nd_byte[0x100] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/* C0 C1 C2 C3 C4 C5 C6 C7 */ + 0, 0, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* C8 C9 CA CB CC CD CE CF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* D0 D1 D2 D3 D4 D5 D6 D7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* D8 D9 DA DB DC DD DE DF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* E0 E1 E2 E3 E4 E5 E6 E7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* E8 E9 EA EB EC ED EE EF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x9f, 0xbf, 0xbf, +/* F0 F1 F2 F3 F4 F5 F6 F7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0x8f, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + + +/* + * The u8_validate() validates on the given UTF-8 character string and + * calculate the byte length. It is quite similar to mblen(3C) except that + * this will validate against the list of characters if required and + * specific to UTF-8 and Unicode. + */ +int +u8_validate(char *u8str, size_t n, char **list, int flag, int *errnum) +{ + uchar_t *ib; + uchar_t *ibtail; + uchar_t **p; + uchar_t *s1; + uchar_t *s2; + uchar_t f; + int sz; + size_t i; + int ret_val; + boolean_t second; + boolean_t no_need_to_validate_entire; + boolean_t check_additional; + boolean_t validate_ucs2_range_only; + + if (! u8str) + return (0); + + ib = (uchar_t *)u8str; + ibtail = ib + n; + + ret_val = 0; + + no_need_to_validate_entire = ! (flag & U8_VALIDATE_ENTIRE); + check_additional = flag & U8_VALIDATE_CHECK_ADDITIONAL; + validate_ucs2_range_only = flag & U8_VALIDATE_UCS2_RANGE; + + while (ib < ibtail) { + /* + * The first byte of a UTF-8 character tells how many + * bytes will follow for the character. If the first byte + * is an illegal byte value or out of range value, we just + * return -1 with an appropriate error number. + */ + sz = u8_number_of_bytes[*ib]; + if (sz == U8_ILLEGAL_CHAR) { + *errnum = EILSEQ; + return (-1); + } + + if (sz == U8_OUT_OF_RANGE_CHAR || + (validate_ucs2_range_only && sz > U8_MAX_BYTES_UCS2)) { + *errnum = ERANGE; + return (-1); + } + + /* + * If we don't have enough bytes to check on, that's also + * an error. As you can see, we give illegal byte sequence + * checking higher priority then EINVAL cases. + */ + if ((ibtail - ib) < sz) { + *errnum = EINVAL; + return (-1); + } + + if (sz == 1) { + ib++; + ret_val++; + } else { + /* + * Check on the multi-byte UTF-8 character. For more + * details on this, see comment added for the used + * data structures at the beginning of the file. + */ + f = *ib++; + ret_val++; + second = B_TRUE; + for (i = 1; i < sz; i++) { + if (second) { + if (*ib < u8_valid_min_2nd_byte[f] || + *ib > u8_valid_max_2nd_byte[f]) { + *errnum = EILSEQ; + return (-1); + } + second = B_FALSE; + } else if (U8_ILLEGAL_NEXT_BYTE_COMMON(*ib)) { + *errnum = EILSEQ; + return (-1); + } + ib++; + ret_val++; + } + } + + if (check_additional) { + for (p = (uchar_t **)list, i = 0; p[i]; i++) { + s1 = ib - sz; + s2 = p[i]; + while (s1 < ib) { + if (*s1 != *s2 || *s2 == '\0') + break; + s1++; + s2++; + } + + if (s1 >= ib && *s2 == '\0') { + *errnum = EBADF; + return (-1); + } + } + } + + if (no_need_to_validate_entire) + break; + } + + return (ret_val); +} + +/* + * The do_case_conv() looks at the mapping tables and returns found + * bytes if any. If not found, the input bytes are returned. The function + * always terminate the return bytes with a null character assuming that + * there are plenty of room to do so. + * + * The case conversions are simple case conversions mapping a character to + * another character as specified in the Unicode data. The byte size of + * the mapped character could be different from that of the input character. + * + * The return value is the byte length of the returned character excluding + * the terminating null byte. + */ +static size_t +do_case_conv(int uv, uchar_t *u8s, uchar_t *s, int sz, boolean_t is_it_toupper) +{ + size_t i; + uint16_t b1 = 0; + uint16_t b2 = 0; + uint16_t b3 = 0; + uint16_t b3_tbl; + uint16_t b3_base; + uint16_t b4 = 0; + size_t start_id; + size_t end_id; + + /* + * At this point, the only possible values for sz are 2, 3, and 4. + * The u8s should point to a vector that is well beyond the size of + * 5 bytes. + */ + if (sz == 2) { + b3 = u8s[0] = s[0]; + b4 = u8s[1] = s[1]; + } else if (sz == 3) { + b2 = u8s[0] = s[0]; + b3 = u8s[1] = s[1]; + b4 = u8s[2] = s[2]; + } else if (sz == 4) { + b1 = u8s[0] = s[0]; + b2 = u8s[1] = s[1]; + b3 = u8s[2] = s[2]; + b4 = u8s[3] = s[3]; + } else { + /* This is not possible but just in case as a fallback. */ + if (is_it_toupper) + *u8s = U8_ASCII_TOUPPER(*s); + else + *u8s = U8_ASCII_TOLOWER(*s); + u8s[1] = '\0'; + + return (1); + } + u8s[sz] = '\0'; + + /* + * Let's find out if we have a corresponding character. + */ + b1 = u8_common_b1_tbl[uv][b1]; + if (b1 == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + b2 = u8_case_common_b2_tbl[uv][b1][b2]; + if (b2 == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + if (is_it_toupper) { + b3_tbl = u8_toupper_b3_tbl[uv][b2][b3].tbl_id; + if (b3_tbl == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + start_id = u8_toupper_b4_tbl[uv][b3_tbl][b4]; + end_id = u8_toupper_b4_tbl[uv][b3_tbl][b4 + 1]; + + /* Either there is no match or an error at the table. */ + if (start_id >= end_id || (end_id - start_id) > U8_MB_CUR_MAX) + return ((size_t)sz); + + b3_base = u8_toupper_b3_tbl[uv][b2][b3].base; + + for (i = 0; start_id < end_id; start_id++) + u8s[i++] = u8_toupper_final_tbl[uv][b3_base + start_id]; + } else { + b3_tbl = u8_tolower_b3_tbl[uv][b2][b3].tbl_id; + if (b3_tbl == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + start_id = u8_tolower_b4_tbl[uv][b3_tbl][b4]; + end_id = u8_tolower_b4_tbl[uv][b3_tbl][b4 + 1]; + + if (start_id >= end_id || (end_id - start_id) > U8_MB_CUR_MAX) + return ((size_t)sz); + + b3_base = u8_tolower_b3_tbl[uv][b2][b3].base; + + for (i = 0; start_id < end_id; start_id++) + u8s[i++] = u8_tolower_final_tbl[uv][b3_base + start_id]; + } + + /* + * If i is still zero, that means there is no corresponding character. + */ + if (i == 0) + return ((size_t)sz); + + u8s[i] = '\0'; + + return (i); +} + +/* + * The do_case_compare() function compares the two input strings, s1 and s2, + * one character at a time doing case conversions if applicable and return + * the comparison result as like strcmp(). + * + * Since, in empirical sense, most of text data are 7-bit ASCII characters, + * we treat the 7-bit ASCII characters as a special case trying to yield + * faster processing time. + */ +static int +do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, + size_t n2, boolean_t is_it_toupper, int *errnum) +{ + int f; + int sz1; + int sz2; + size_t j; + size_t i1; + size_t i2; + uchar_t u8s1[U8_MB_CUR_MAX + 1]; + uchar_t u8s2[U8_MB_CUR_MAX + 1]; + + i1 = i2 = 0; + while (i1 < n1 && i2 < n2) { + /* + * Find out what would be the byte length for this UTF-8 + * character at string s1 and also find out if this is + * an illegal start byte or not and if so, issue a proper + * error number and yet treat this byte as a character. + */ + sz1 = u8_number_of_bytes[*s1]; + if (sz1 < 0) { + *errnum = EILSEQ; + sz1 = 1; + } + + /* + * For 7-bit ASCII characters mainly, we do a quick case + * conversion right at here. + * + * If we don't have enough bytes for this character, issue + * an EINVAL error and use what are available. + * + * If we have enough bytes, find out if there is + * a corresponding uppercase character and if so, copy over + * the bytes for a comparison later. If there is no + * corresponding uppercase character, then, use what we have + * for the comparison. + */ + if (sz1 == 1) { + if (is_it_toupper) + u8s1[0] = U8_ASCII_TOUPPER(*s1); + else + u8s1[0] = U8_ASCII_TOLOWER(*s1); + s1++; + u8s1[1] = '\0'; + } else if ((i1 + sz1) > n1) { + *errnum = EINVAL; + for (j = 0; (i1 + j) < n1; ) + u8s1[j++] = *s1++; + u8s1[j] = '\0'; + } else { + (void) do_case_conv(uv, u8s1, s1, sz1, is_it_toupper); + s1 += sz1; + } + + /* Do the same for the string s2. */ + sz2 = u8_number_of_bytes[*s2]; + if (sz2 < 0) { + *errnum = EILSEQ; + sz2 = 1; + } + + if (sz2 == 1) { + if (is_it_toupper) + u8s2[0] = U8_ASCII_TOUPPER(*s2); + else + u8s2[0] = U8_ASCII_TOLOWER(*s2); + s2++; + u8s2[1] = '\0'; + } else if ((i2 + sz2) > n2) { + *errnum = EINVAL; + for (j = 0; (i2 + j) < n2; ) + u8s2[j++] = *s2++; + u8s2[j] = '\0'; + } else { + (void) do_case_conv(uv, u8s2, s2, sz2, is_it_toupper); + s2 += sz2; + } + + /* Now compare the two characters. */ + if (sz1 == 1 && sz2 == 1) { + if (*u8s1 > *u8s2) + return (1); + if (*u8s1 < *u8s2) + return (-1); + } else { + f = strcmp((const char *)u8s1, (const char *)u8s2); + if (f != 0) + return (f); + } + + /* + * They were the same. Let's move on to the next + * characters then. + */ + i1 += sz1; + i2 += sz2; + } + + /* + * We compared until the end of either or both strings. + * + * If we reached to or went over the ends for the both, that means + * they are the same. + * + * If we reached only one of the two ends, that means the other string + * has something which then the fact can be used to determine + * the return value. + */ + if (i1 >= n1) { + if (i2 >= n2) + return (0); + return (-1); + } + return (1); +} + +/* + * The combining_class() function checks on the given bytes and find out + * the corresponding Unicode combining class value. The return value 0 means + * it is a Starter. Any illegal UTF-8 character will also be treated as + * a Starter. + */ +static uchar_t +combining_class(size_t uv, uchar_t *s, size_t sz) +{ + uint16_t b1 = 0; + uint16_t b2 = 0; + uint16_t b3 = 0; + uint16_t b4 = 0; + + if (sz == 1 || sz > 4) + return (0); + + if (sz == 2) { + b3 = s[0]; + b4 = s[1]; + } else if (sz == 3) { + b2 = s[0]; + b3 = s[1]; + b4 = s[2]; + } else if (sz == 4) { + b1 = s[0]; + b2 = s[1]; + b3 = s[2]; + b4 = s[3]; + } + + b1 = u8_common_b1_tbl[uv][b1]; + if (b1 == U8_TBL_ELEMENT_NOT_DEF) + return (0); + + b2 = u8_combining_class_b2_tbl[uv][b1][b2]; + if (b2 == U8_TBL_ELEMENT_NOT_DEF) + return (0); + + b3 = u8_combining_class_b3_tbl[uv][b2][b3]; + if (b3 == U8_TBL_ELEMENT_NOT_DEF) + return (0); + + return (u8_combining_class_b4_tbl[uv][b3][b4]); +} + +/* + * The do_decomp() function finds out a matching decomposition if any + * and return. If there is no match, the input bytes are copied and returned. + * The function also checks if there is a Hangul, decomposes it if necessary + * and returns. + * + * To save time, a single byte 7-bit ASCII character should be handled by + * the caller. + * + * The function returns the number of bytes returned sans always terminating + * the null byte. It will also return a state that will tell if there was + * a Hangul character decomposed which then will be used by the caller. + */ +static size_t +do_decomp(size_t uv, uchar_t *u8s, uchar_t *s, int sz, + boolean_t canonical_decomposition, u8_normalization_states_t *state) +{ + uint16_t b1 = 0; + uint16_t b2 = 0; + uint16_t b3 = 0; + uint16_t b3_tbl; + uint16_t b3_base; + uint16_t b4 = 0; + size_t start_id; + size_t end_id; + size_t i; + uint32_t u1; + + if (sz == 2) { + b3 = u8s[0] = s[0]; + b4 = u8s[1] = s[1]; + u8s[2] = '\0'; + } else if (sz == 3) { + /* Convert it to a Unicode scalar value. */ + U8_PUT_3BYTES_INTO_UTF32(u1, s[0], s[1], s[2]); + + /* + * If this is a Hangul syllable, we decompose it into + * a leading consonant, a vowel, and an optional trailing + * consonant and then return. + */ + if (U8_HANGUL_SYLLABLE(u1)) { + u1 -= U8_HANGUL_SYL_FIRST; + + b1 = U8_HANGUL_JAMO_L_FIRST + u1 / U8_HANGUL_VT_COUNT; + b2 = U8_HANGUL_JAMO_V_FIRST + (u1 % U8_HANGUL_VT_COUNT) + / U8_HANGUL_T_COUNT; + b3 = u1 % U8_HANGUL_T_COUNT; + + U8_SAVE_HANGUL_AS_UTF8(u8s, 0, 1, 2, b1); + U8_SAVE_HANGUL_AS_UTF8(u8s, 3, 4, 5, b2); + if (b3) { + b3 += U8_HANGUL_JAMO_T_FIRST; + U8_SAVE_HANGUL_AS_UTF8(u8s, 6, 7, 8, b3); + + u8s[9] = '\0'; + *state = U8_STATE_HANGUL_LVT; + return (9); + } + + u8s[6] = '\0'; + *state = U8_STATE_HANGUL_LV; + return (6); + } + + b2 = u8s[0] = s[0]; + b3 = u8s[1] = s[1]; + b4 = u8s[2] = s[2]; + u8s[3] = '\0'; + + /* + * If this is a Hangul Jamo, we know there is nothing + * further that we can decompose. + */ + if (U8_HANGUL_JAMO_L(u1)) { + *state = U8_STATE_HANGUL_L; + return (3); + } + + if (U8_HANGUL_JAMO_V(u1)) { + if (*state == U8_STATE_HANGUL_L) + *state = U8_STATE_HANGUL_LV; + else + *state = U8_STATE_HANGUL_V; + return (3); + } + + if (U8_HANGUL_JAMO_T(u1)) { + if (*state == U8_STATE_HANGUL_LV) + *state = U8_STATE_HANGUL_LVT; + else + *state = U8_STATE_HANGUL_T; + return (3); + } + } else if (sz == 4) { + b1 = u8s[0] = s[0]; + b2 = u8s[1] = s[1]; + b3 = u8s[2] = s[2]; + b4 = u8s[3] = s[3]; + u8s[4] = '\0'; + } else { + /* + * This is a fallback and should not happen if the function + * was called properly. + */ + u8s[0] = s[0]; + u8s[1] = '\0'; + *state = U8_STATE_START; + return (1); + } + + /* + * At this point, this rountine does not know what it would get. + * The caller should sort it out if the state isn't a Hangul one. + */ + *state = U8_STATE_START; + + /* Try to find matching decomposition mapping byte sequence. */ + b1 = u8_common_b1_tbl[uv][b1]; + if (b1 == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + b2 = u8_decomp_b2_tbl[uv][b1][b2]; + if (b2 == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + b3_tbl = u8_decomp_b3_tbl[uv][b2][b3].tbl_id; + if (b3_tbl == U8_TBL_ELEMENT_NOT_DEF) + return ((size_t)sz); + + /* + * If b3_tbl is bigger than or equal to U8_16BIT_TABLE_INDICATOR + * which is 0x8000, this means we couldn't fit the mappings into + * the cardinality of a unsigned byte. + */ + if (b3_tbl >= U8_16BIT_TABLE_INDICATOR) { + b3_tbl -= U8_16BIT_TABLE_INDICATOR; + start_id = u8_decomp_b4_16bit_tbl[uv][b3_tbl][b4]; + end_id = u8_decomp_b4_16bit_tbl[uv][b3_tbl][b4 + 1]; + } else { + start_id = u8_decomp_b4_tbl[uv][b3_tbl][b4]; + end_id = u8_decomp_b4_tbl[uv][b3_tbl][b4 + 1]; + } + + /* This also means there wasn't any matching decomposition. */ + if (start_id >= end_id) + return ((size_t)sz); + + /* + * The final table for decomposition mappings has three types of + * byte sequences depending on whether a mapping is for compatibility + * decomposition, canonical decomposition, or both like the following: + * + * (1) Compatibility decomposition mappings: + * + * +---+---+-...-+---+ + * | B0| B1| ... | Bm| + * +---+---+-...-+---+ + * + * The first byte, B0, is always less then 0xF5 (U8_DECOMP_BOTH). + * + * (2) Canonical decomposition mappings: + * + * +---+---+---+-...-+---+ + * | T | b0| b1| ... | bn| + * +---+---+---+-...-+---+ + * + * where the first byte, T, is 0xF6 (U8_DECOMP_CANONICAL). + * + * (3) Both mappings: + * + * +---+---+---+---+-...-+---+---+---+-...-+---+ + * | T | D | b0| b1| ... | bn| B0| B1| ... | Bm| + * +---+---+---+---+-...-+---+---+---+-...-+---+ + * + * where T is 0xF5 (U8_DECOMP_BOTH) and D is a displacement + * byte, b0 to bn are canonical mapping bytes and B0 to Bm are + * compatibility mapping bytes. + * + * Note that compatibility decomposition means doing recursive + * decompositions using both compatibility decomposition mappings and + * canonical decomposition mappings. On the other hand, canonical + * decomposition means doing recursive decompositions using only + * canonical decomposition mappings. Since the table we have has gone + * through the recursions already, we do not need to do so during + * runtime, i.e., the table has been completely flattened out + * already. + */ + + b3_base = u8_decomp_b3_tbl[uv][b2][b3].base; + + /* Get the type, T, of the byte sequence. */ + b1 = u8_decomp_final_tbl[uv][b3_base + start_id]; + + /* + * If necessary, adjust start_id, end_id, or both. Note that if + * this is compatibility decomposition mapping, there is no + * adjustment. + */ + if (canonical_decomposition) { + /* Is the mapping only for compatibility decomposition? */ + if (b1 < U8_DECOMP_BOTH) + return ((size_t)sz); + + start_id++; + + if (b1 == U8_DECOMP_BOTH) { + end_id = start_id + + u8_decomp_final_tbl[uv][b3_base + start_id]; + start_id++; + } + } else { + /* + * Unless this is a compatibility decomposition mapping, + * we adjust the start_id. + */ + if (b1 == U8_DECOMP_BOTH) { + start_id++; + start_id += u8_decomp_final_tbl[uv][b3_base + start_id]; + } else if (b1 == U8_DECOMP_CANONICAL) { + start_id++; + } + } + + for (i = 0; start_id < end_id; start_id++) + u8s[i++] = u8_decomp_final_tbl[uv][b3_base + start_id]; + u8s[i] = '\0'; + + return (i); +} + +/* + * The find_composition_start() function uses the character bytes given and + * find out the matching composition mappings if any and return the address + * to the composition mappings as explained in the do_composition(). + */ +static uchar_t * +find_composition_start(size_t uv, uchar_t *s, size_t sz) +{ + uint16_t b1 = 0; + uint16_t b2 = 0; + uint16_t b3 = 0; + uint16_t b3_tbl; + uint16_t b3_base; + uint16_t b4 = 0; + size_t start_id; + size_t end_id; + + if (sz == 1) { + b4 = s[0]; + } else if (sz == 2) { + b3 = s[0]; + b4 = s[1]; + } else if (sz == 3) { + b2 = s[0]; + b3 = s[1]; + b4 = s[2]; + } else if (sz == 4) { + b1 = s[0]; + b2 = s[1]; + b3 = s[2]; + b4 = s[3]; + } else { + /* + * This is a fallback and should not happen if the function + * was called properly. + */ + return (NULL); + } + + b1 = u8_composition_b1_tbl[uv][b1]; + if (b1 == U8_TBL_ELEMENT_NOT_DEF) + return (NULL); + + b2 = u8_composition_b2_tbl[uv][b1][b2]; + if (b2 == U8_TBL_ELEMENT_NOT_DEF) + return (NULL); + + b3_tbl = u8_composition_b3_tbl[uv][b2][b3].tbl_id; + if (b3_tbl == U8_TBL_ELEMENT_NOT_DEF) + return (NULL); + + if (b3_tbl >= U8_16BIT_TABLE_INDICATOR) { + b3_tbl -= U8_16BIT_TABLE_INDICATOR; + start_id = u8_composition_b4_16bit_tbl[uv][b3_tbl][b4]; + end_id = u8_composition_b4_16bit_tbl[uv][b3_tbl][b4 + 1]; + } else { + start_id = u8_composition_b4_tbl[uv][b3_tbl][b4]; + end_id = u8_composition_b4_tbl[uv][b3_tbl][b4 + 1]; + } + + if (start_id >= end_id) + return (NULL); + + b3_base = u8_composition_b3_tbl[uv][b2][b3].base; + + return ((uchar_t *)&(u8_composition_final_tbl[uv][b3_base + start_id])); +} + +/* + * The blocked() function checks on the combining class values of previous + * characters in this sequence and return whether it is blocked or not. + */ +static boolean_t +blocked(uchar_t *comb_class, size_t last) +{ + uchar_t my_comb_class; + size_t i; + + my_comb_class = comb_class[last]; + for (i = 1; i < last; i++) + if (comb_class[i] >= my_comb_class || + comb_class[i] == U8_COMBINING_CLASS_STARTER) + return (B_TRUE); + + return (B_FALSE); +} + +/* + * The do_composition() reads the character string pointed by 's' and + * do necessary canonical composition and then copy over the result back to + * the 's'. + * + * The input argument 's' cannot contain more than 32 characters. + */ +static size_t +do_composition(size_t uv, uchar_t *s, uchar_t *comb_class, uchar_t *start, + uchar_t *disp, size_t last, uchar_t **os, uchar_t *oslast) +{ + uchar_t t[U8_STREAM_SAFE_TEXT_MAX + 1]; + uchar_t tc[U8_MB_CUR_MAX]; + uint8_t saved_marks[U8_MAX_CHARS_A_SEQ]; + size_t saved_marks_count; + uchar_t *p; + uchar_t *saved_p; + uchar_t *q; + size_t i; + size_t saved_i; + size_t j; + size_t k; + size_t l; + size_t C; + size_t saved_l; + size_t size; + uint32_t u1; + uint32_t u2; + boolean_t match_not_found = B_TRUE; + + /* + * This should never happen unless the callers are doing some strange + * and unexpected things. + * + * The "last" is the index pointing to the last character not last + 1. + */ + if (last >= U8_MAX_CHARS_A_SEQ) + last = U8_UPPER_LIMIT_IN_A_SEQ; + + for (i = l = 0; i <= last; i++) { + /* + * The last or any non-Starters at the beginning, we don't + * have any chance to do composition and so we just copy them + * to the temporary buffer. + */ + if (i >= last || comb_class[i] != U8_COMBINING_CLASS_STARTER) { +SAVE_THE_CHAR: + p = s + start[i]; + size = disp[i]; + for (k = 0; k < size; k++) + t[l++] = *p++; + continue; + } + + /* + * If this could be a start of Hangul Jamos, then, we try to + * conjoin them. + */ + if (s[start[i]] == U8_HANGUL_JAMO_1ST_BYTE) { + U8_PUT_3BYTES_INTO_UTF32(u1, s[start[i]], + s[start[i] + 1], s[start[i] + 2]); + U8_PUT_3BYTES_INTO_UTF32(u2, s[start[i] + 3], + s[start[i] + 4], s[start[i] + 5]); + + if (U8_HANGUL_JAMO_L(u1) && U8_HANGUL_JAMO_V(u2)) { + u1 -= U8_HANGUL_JAMO_L_FIRST; + u2 -= U8_HANGUL_JAMO_V_FIRST; + u1 = U8_HANGUL_SYL_FIRST + + (u1 * U8_HANGUL_V_COUNT + u2) * + U8_HANGUL_T_COUNT; + + i += 2; + if (i <= last) { + U8_PUT_3BYTES_INTO_UTF32(u2, + s[start[i]], s[start[i] + 1], + s[start[i] + 2]); + + if (U8_HANGUL_JAMO_T(u2)) { + u1 += u2 - + U8_HANGUL_JAMO_T_FIRST; + i++; + } + } + + U8_SAVE_HANGUL_AS_UTF8(t + l, 0, 1, 2, u1); + i--; + l += 3; + continue; + } + } + + /* + * Let's then find out if this Starter has composition + * mapping. + */ + p = find_composition_start(uv, s + start[i], disp[i]); + if (p == NULL) + goto SAVE_THE_CHAR; + + /* + * We have a Starter with composition mapping and the next + * character is a non-Starter. Let's try to find out if + * we can do composition. + */ + + saved_p = p; + saved_i = i; + saved_l = l; + saved_marks_count = 0; + +TRY_THE_NEXT_MARK: + q = s + start[++i]; + size = disp[i]; + + /* + * The next for() loop compares the non-Starter pointed by + * 'q' with the possible (joinable) characters pointed by 'p'. + * + * The composition final table entry pointed by the 'p' + * looks like the following: + * + * +---+---+---+-...-+---+---+---+---+-...-+---+---+ + * | C | b0| b2| ... | bn| F | B0| B1| ... | Bm| F | + * +---+---+---+-...-+---+---+---+---+-...-+---+---+ + * + * where C is the count byte indicating the number of + * mapping pairs where each pair would be look like + * (b0-bn F, B0-Bm F). The b0-bn are the bytes of the second + * character of a canonical decomposition and the B0-Bm are + * the bytes of a matching composite character. The F is + * a filler byte after each character as the separator. + */ + + match_not_found = B_TRUE; + + for (C = *p++; C > 0; C--) { + for (k = 0; k < size; p++, k++) + if (*p != q[k]) + break; + + /* Have we found it? */ + if (k >= size && *p == U8_TBL_ELEMENT_FILLER) { + match_not_found = B_FALSE; + + l = saved_l; + + while (*++p != U8_TBL_ELEMENT_FILLER) + t[l++] = *p; + + break; + } + + /* We didn't find; skip to the next pair. */ + if (*p != U8_TBL_ELEMENT_FILLER) + while (*++p != U8_TBL_ELEMENT_FILLER) + ; + while (*++p != U8_TBL_ELEMENT_FILLER) + ; + p++; + } + + /* + * If there was no match, we will need to save the combining + * mark for later appending. After that, if the next one + * is a non-Starter and not blocked, then, we try once + * again to do composition with the next non-Starter. + * + * If there was no match and this was a Starter, then, + * this is a new start. + * + * If there was a match and a composition done and we have + * more to check on, then, we retrieve a new composition final + * table entry for the composite and then try to do the + * composition again. + */ + + if (match_not_found) { + if (comb_class[i] == U8_COMBINING_CLASS_STARTER) { + i--; + goto SAVE_THE_CHAR; + } + + saved_marks[saved_marks_count++] = i; + } + + if (saved_l == l) { + while (i < last) { + if (blocked(comb_class, i + 1)) + saved_marks[saved_marks_count++] = ++i; + else + break; + } + if (i < last) { + p = saved_p; + goto TRY_THE_NEXT_MARK; + } + } else if (i < last) { + p = find_composition_start(uv, t + saved_l, + l - saved_l); + if (p != NULL) { + saved_p = p; + goto TRY_THE_NEXT_MARK; + } + } + + /* + * There is no more composition possible. + * + * If there was no composition what so ever then we copy + * over the original Starter and then append any non-Starters + * remaining at the target string sequentially after that. + */ + + if (saved_l == l) { + p = s + start[saved_i]; + size = disp[saved_i]; + for (j = 0; j < size; j++) + t[l++] = *p++; + } + + for (k = 0; k < saved_marks_count; k++) { + p = s + start[saved_marks[k]]; + size = disp[saved_marks[k]]; + for (j = 0; j < size; j++) + t[l++] = *p++; + } + } + + /* + * If the last character is a Starter and if we have a character + * (possibly another Starter) that can be turned into a composite, + * we do so and we do so until there is no more of composition + * possible. + */ + if (comb_class[last] == U8_COMBINING_CLASS_STARTER) { + p = *os; + saved_l = l - disp[last]; + + while (p < oslast) { + size = u8_number_of_bytes[*p]; + if (size <= 1 || (p + size) > oslast) + break; + + saved_p = p; + + for (i = 0; i < size; i++) + tc[i] = *p++; + + q = find_composition_start(uv, t + saved_l, + l - saved_l); + if (q == NULL) { + p = saved_p; + break; + } + + match_not_found = B_TRUE; + + for (C = *q++; C > 0; C--) { + for (k = 0; k < size; q++, k++) + if (*q != tc[k]) + break; + + if (k >= size && *q == U8_TBL_ELEMENT_FILLER) { + match_not_found = B_FALSE; + + l = saved_l; + + while (*++q != U8_TBL_ELEMENT_FILLER) { + /* + * This is practically + * impossible but we don't + * want to take any chances. + */ + if (l >= + U8_STREAM_SAFE_TEXT_MAX) { + p = saved_p; + goto SAFE_RETURN; + } + t[l++] = *q; + } + + break; + } + + if (*q != U8_TBL_ELEMENT_FILLER) + while (*++q != U8_TBL_ELEMENT_FILLER) + ; + while (*++q != U8_TBL_ELEMENT_FILLER) + ; + q++; + } + + if (match_not_found) { + p = saved_p; + break; + } + } +SAFE_RETURN: + *os = p; + } + + /* + * Now we copy over the temporary string to the target string. + * Since composition always reduces the number of characters or + * the number of characters stay, we don't need to worry about + * the buffer overflow here. + */ + for (i = 0; i < l; i++) + s[i] = t[i]; + s[l] = '\0'; + + return (l); +} + +/* + * The collect_a_seq() function checks on the given string s, collect + * a sequence of characters at u8s, and return the sequence. While it collects + * a sequence, it also applies case conversion, canonical or compatibility + * decomposition, canonical decomposition, or some or all of them and + * in that order. + * + * The collected sequence cannot be bigger than 32 characters since if + * it is having more than 31 characters, the sequence will be terminated + * with a U+034F COMBINING GRAPHEME JOINER (CGJ) character and turned into + * a Stream-Safe Text. The collected sequence is always terminated with + * a null byte and the return value is the byte length of the sequence + * including 0. The return value does not include the terminating + * null byte. + */ +static size_t +collect_a_seq(size_t uv, uchar_t *u8s, uchar_t **source, uchar_t *slast, + boolean_t is_it_toupper, + boolean_t is_it_tolower, + boolean_t canonical_decomposition, + boolean_t compatibility_decomposition, + boolean_t canonical_composition, + int *errnum, u8_normalization_states_t *state) +{ + uchar_t *s; + int sz; + int saved_sz; + size_t i; + size_t j; + size_t k; + size_t l; + uchar_t comb_class[U8_MAX_CHARS_A_SEQ]; + uchar_t disp[U8_MAX_CHARS_A_SEQ]; + uchar_t start[U8_MAX_CHARS_A_SEQ]; + uchar_t u8t[U8_MB_CUR_MAX]; + uchar_t uts[U8_STREAM_SAFE_TEXT_MAX + 1]; + uchar_t tc; + size_t last; + size_t saved_last; + uint32_t u1; + + /* + * Save the source string pointer which we will return a changed + * pointer if we do processing. + */ + s = *source; + + /* + * The following is a fallback for just in case callers are not + * checking the string boundaries before the calling. + */ + if (s >= slast) { + u8s[0] = '\0'; + + return (0); + } + + /* + * As the first thing, let's collect a character and do case + * conversion if necessary. + */ + + sz = u8_number_of_bytes[*s]; + + if (sz < 0) { + *errnum = EILSEQ; + + u8s[0] = *s++; + u8s[1] = '\0'; + + *source = s; + + return (1); + } + + if (sz == 1) { + if (is_it_toupper) + u8s[0] = U8_ASCII_TOUPPER(*s); + else if (is_it_tolower) + u8s[0] = U8_ASCII_TOLOWER(*s); + else + u8s[0] = *s; + s++; + u8s[1] = '\0'; + } else if ((s + sz) > slast) { + *errnum = EINVAL; + + for (i = 0; s < slast; ) + u8s[i++] = *s++; + u8s[i] = '\0'; + + *source = s; + + return (i); + } else { + if (is_it_toupper || is_it_tolower) { + i = do_case_conv(uv, u8s, s, sz, is_it_toupper); + s += sz; + sz = i; + } else { + for (i = 0; i < sz; ) + u8s[i++] = *s++; + u8s[i] = '\0'; + } + } + + /* + * And then canonical/compatibility decomposition followed by + * an optional canonical composition. Please be noted that + * canonical composition is done only when a decomposition is + * done. + */ + if (canonical_decomposition || compatibility_decomposition) { + if (sz == 1) { + *state = U8_STATE_START; + + saved_sz = 1; + + comb_class[0] = 0; + start[0] = 0; + disp[0] = 1; + + last = 1; + } else { + saved_sz = do_decomp(uv, u8s, u8s, sz, + canonical_decomposition, state); + + last = 0; + + for (i = 0; i < saved_sz; ) { + sz = u8_number_of_bytes[u8s[i]]; + + comb_class[last] = combining_class(uv, + u8s + i, sz); + start[last] = i; + disp[last] = sz; + + last++; + i += sz; + } + + /* + * Decomposition yields various Hangul related + * states but not on combining marks. We need to + * find out at here by checking on the last + * character. + */ + if (*state == U8_STATE_START) { + if (comb_class[last - 1]) + *state = U8_STATE_COMBINING_MARK; + } + } + + saved_last = last; + + while (s < slast) { + sz = u8_number_of_bytes[*s]; + + /* + * If this is an illegal character, an incomplete + * character, or an 7-bit ASCII Starter character, + * then we have collected a sequence; break and let + * the next call deal with the two cases. + * + * Note that this is okay only if you are using this + * function with a fixed length string, not on + * a buffer with multiple calls of one chunk at a time. + */ + if (sz <= 1) { + break; + } else if ((s + sz) > slast) { + break; + } else { + /* + * If the previous character was a Hangul Jamo + * and this character is a Hangul Jamo that + * can be conjoined, we collect the Jamo. + */ + if (*s == U8_HANGUL_JAMO_1ST_BYTE) { + U8_PUT_3BYTES_INTO_UTF32(u1, + *s, *(s + 1), *(s + 2)); + + if (U8_HANGUL_COMPOSABLE_L_V(*state, + u1)) { + i = 0; + *state = U8_STATE_HANGUL_LV; + goto COLLECT_A_HANGUL; + } + + if (U8_HANGUL_COMPOSABLE_LV_T(*state, + u1)) { + i = 0; + *state = U8_STATE_HANGUL_LVT; + goto COLLECT_A_HANGUL; + } + } + + /* + * Regardless of whatever it was, if this is + * a Starter, we don't collect the character + * since that's a new start and we will deal + * with it at the next time. + */ + i = combining_class(uv, s, sz); + if (i == U8_COMBINING_CLASS_STARTER) + break; + + /* + * We know the current character is a combining + * mark. If the previous character wasn't + * a Starter (not Hangul) or a combining mark, + * then, we don't collect this combining mark. + */ + if (*state != U8_STATE_START && + *state != U8_STATE_COMBINING_MARK) + break; + + *state = U8_STATE_COMBINING_MARK; +COLLECT_A_HANGUL: + /* + * If we collected a Starter and combining + * marks up to 30, i.e., total 31 characters, + * then, we terminate this degenerately long + * combining sequence with a U+034F COMBINING + * GRAPHEME JOINER (CGJ) which is 0xCD 0x8F in + * UTF-8 and turn this into a Stream-Safe + * Text. This will be extremely rare but + * possible. + * + * The following will also guarantee that + * we are not writing more than 32 characters + * plus a NULL at u8s[]. + */ + if (last >= U8_UPPER_LIMIT_IN_A_SEQ) { +TURN_STREAM_SAFE: + *state = U8_STATE_START; + comb_class[last] = 0; + start[last] = saved_sz; + disp[last] = 2; + last++; + + u8s[saved_sz++] = 0xCD; + u8s[saved_sz++] = 0x8F; + + break; + } + + /* + * Some combining marks also do decompose into + * another combining mark or marks. + */ + if (*state == U8_STATE_COMBINING_MARK) { + k = last; + l = sz; + i = do_decomp(uv, uts, s, sz, + canonical_decomposition, state); + for (j = 0; j < i; ) { + sz = u8_number_of_bytes[uts[j]]; + + comb_class[last] = + combining_class(uv, + uts + j, sz); + start[last] = saved_sz + j; + disp[last] = sz; + + last++; + if (last >= + U8_UPPER_LIMIT_IN_A_SEQ) { + last = k; + goto TURN_STREAM_SAFE; + } + j += sz; + } + + *state = U8_STATE_COMBINING_MARK; + sz = i; + s += l; + + for (i = 0; i < sz; i++) + u8s[saved_sz++] = uts[i]; + } else { + comb_class[last] = i; + start[last] = saved_sz; + disp[last] = sz; + last++; + + for (i = 0; i < sz; i++) + u8s[saved_sz++] = *s++; + } + + /* + * If this is U+0345 COMBINING GREEK + * YPOGEGRAMMENI (0xCD 0x85 in UTF-8), a.k.a., + * iota subscript, and need to be converted to + * uppercase letter, convert it to U+0399 GREEK + * CAPITAL LETTER IOTA (0xCE 0x99 in UTF-8), + * i.e., convert to capital adscript form as + * specified in the Unicode standard. + * + * This is the only special case of (ambiguous) + * case conversion at combining marks and + * probably the standard will never have + * anything similar like this in future. + */ + if (is_it_toupper && sz >= 2 && + u8s[saved_sz - 2] == 0xCD && + u8s[saved_sz - 1] == 0x85) { + u8s[saved_sz - 2] = 0xCE; + u8s[saved_sz - 1] = 0x99; + } + } + } + + /* + * Let's try to ensure a canonical ordering for the collected + * combining marks. We do this only if we have collected + * at least one more non-Starter. (The decomposition mapping + * data tables have fully (and recursively) expanded and + * canonically ordered decompositions.) + * + * The U8_SWAP_COMB_MARKS() convenience macro has some + * assumptions and we are meeting the assumptions. + */ + last--; + if (last >= saved_last) { + for (i = 0; i < last; i++) + for (j = last; j > i; j--) + if (comb_class[j] && + comb_class[j - 1] > comb_class[j]) { + U8_SWAP_COMB_MARKS(j - 1, j); + } + } + + *source = s; + + if (! canonical_composition) { + u8s[saved_sz] = '\0'; + return (saved_sz); + } + + /* + * Now do the canonical composition. Note that we do this + * only after a canonical or compatibility decomposition to + * finish up NFC or NFKC. + */ + sz = do_composition(uv, u8s, comb_class, start, disp, last, + &s, slast); + } + + *source = s; + + return ((size_t)sz); +} + +/* + * The do_norm_compare() function does string comparion based on Unicode + * simple case mappings and Unicode Normalization definitions. + * + * It does so by collecting a sequence of character at a time and comparing + * the collected sequences from the strings. + * + * The meanings on the return values are the same as the usual strcmp(). + */ +static int +do_norm_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, size_t n2, + int flag, int *errnum) +{ + int result; + size_t sz1; + size_t sz2; + uchar_t u8s1[U8_STREAM_SAFE_TEXT_MAX + 1]; + uchar_t u8s2[U8_STREAM_SAFE_TEXT_MAX + 1]; + uchar_t *s1last; + uchar_t *s2last; + boolean_t is_it_toupper; + boolean_t is_it_tolower; + boolean_t canonical_decomposition; + boolean_t compatibility_decomposition; + boolean_t canonical_composition; + u8_normalization_states_t state; + + s1last = s1 + n1; + s2last = s2 + n2; + + is_it_toupper = flag & U8_TEXTPREP_TOUPPER; + is_it_tolower = flag & U8_TEXTPREP_TOLOWER; + canonical_decomposition = flag & U8_CANON_DECOMP; + compatibility_decomposition = flag & U8_COMPAT_DECOMP; + canonical_composition = flag & U8_CANON_COMP; + + while (s1 < s1last && s2 < s2last) { + /* + * If the current character is a 7-bit ASCII and the last + * character, or, if the current character and the next + * character are both some 7-bit ASCII characters then + * we treat the current character as a sequence. + * + * In any other cases, we need to call collect_a_seq(). + */ + + if (U8_ISASCII(*s1) && ((s1 + 1) >= s1last || + ((s1 + 1) < s1last && U8_ISASCII(*(s1 + 1))))) { + if (is_it_toupper) + u8s1[0] = U8_ASCII_TOUPPER(*s1); + else if (is_it_tolower) + u8s1[0] = U8_ASCII_TOLOWER(*s1); + else + u8s1[0] = *s1; + u8s1[1] = '\0'; + sz1 = 1; + s1++; + } else { + state = U8_STATE_START; + sz1 = collect_a_seq(uv, u8s1, &s1, s1last, + is_it_toupper, is_it_tolower, + canonical_decomposition, + compatibility_decomposition, + canonical_composition, errnum, &state); + } + + if (U8_ISASCII(*s2) && ((s2 + 1) >= s2last || + ((s2 + 1) < s2last && U8_ISASCII(*(s2 + 1))))) { + if (is_it_toupper) + u8s2[0] = U8_ASCII_TOUPPER(*s2); + else if (is_it_tolower) + u8s2[0] = U8_ASCII_TOLOWER(*s2); + else + u8s2[0] = *s2; + u8s2[1] = '\0'; + sz2 = 1; + s2++; + } else { + state = U8_STATE_START; + sz2 = collect_a_seq(uv, u8s2, &s2, s2last, + is_it_toupper, is_it_tolower, + canonical_decomposition, + compatibility_decomposition, + canonical_composition, errnum, &state); + } + + /* + * Now compare the two characters. If they are the same, + * we move on to the next character sequences. + */ + if (sz1 == 1 && sz2 == 1) { + if (*u8s1 > *u8s2) + return (1); + if (*u8s1 < *u8s2) + return (-1); + } else { + result = strcmp((const char *)u8s1, (const char *)u8s2); + if (result != 0) + return (result); + } + } + + /* + * We compared until the end of either or both strings. + * + * If we reached to or went over the ends for the both, that means + * they are the same. + * + * If we reached only one end, that means the other string has + * something which then can be used to determine the return value. + */ + if (s1 >= s1last) { + if (s2 >= s2last) + return (0); + return (-1); + } + return (1); +} + +/* + * The u8_strcmp() function compares two UTF-8 strings quite similar to + * the strcmp(). For the comparison, however, Unicode Normalization specific + * equivalency and Unicode simple case conversion mappings based equivalency + * can be requested and checked against. + */ +int +u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t uv, + int *errnum) +{ + int f; + size_t n1; + size_t n2; + + *errnum = 0; + + /* + * Check on the requested Unicode version, case conversion, and + * normalization flag values. + */ + + if (uv > U8_UNICODE_LATEST) { + *errnum = ERANGE; + uv = U8_UNICODE_LATEST; + } + + if (flag == 0) { + flag = U8_STRCMP_CS; + } else { + f = flag & (U8_STRCMP_CS | U8_STRCMP_CI_UPPER | + U8_STRCMP_CI_LOWER); + if (f == 0) { + flag |= U8_STRCMP_CS; + } else if (f != U8_STRCMP_CS && f != U8_STRCMP_CI_UPPER && + f != U8_STRCMP_CI_LOWER) { + *errnum = EBADF; + flag = U8_STRCMP_CS; + } + + f = flag & (U8_CANON_DECOMP | U8_COMPAT_DECOMP | U8_CANON_COMP); + if (f && f != U8_STRCMP_NFD && f != U8_STRCMP_NFC && + f != U8_STRCMP_NFKD && f != U8_STRCMP_NFKC) { + *errnum = EBADF; + flag = U8_STRCMP_CS; + } + } + + if (flag == U8_STRCMP_CS) { + return (n == 0 ? strcmp(s1, s2) : strncmp(s1, s2, n)); + } + + n1 = strlen(s1); + n2 = strlen(s2); + if (n != 0) { + if (n < n1) + n1 = n; + if (n < n2) + n2 = n; + } + + /* + * Simple case conversion can be done much faster and so we do + * them separately here. + */ + if (flag == U8_STRCMP_CI_UPPER) { + return (do_case_compare(uv, (uchar_t *)s1, (uchar_t *)s2, + n1, n2, B_TRUE, errnum)); + } else if (flag == U8_STRCMP_CI_LOWER) { + return (do_case_compare(uv, (uchar_t *)s1, (uchar_t *)s2, + n1, n2, B_FALSE, errnum)); + } + + return (do_norm_compare(uv, (uchar_t *)s1, (uchar_t *)s2, n1, n2, + flag, errnum)); +} + +size_t +u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen, + int flag, size_t unicode_version, int *errnum) +{ + int f; + int sz; + uchar_t *ib; + uchar_t *ibtail; + uchar_t *ob; + uchar_t *obtail; + boolean_t do_not_ignore_null; + boolean_t do_not_ignore_invalid; + boolean_t is_it_toupper; + boolean_t is_it_tolower; + boolean_t canonical_decomposition; + boolean_t compatibility_decomposition; + boolean_t canonical_composition; + size_t ret_val; + size_t i; + size_t j; + uchar_t u8s[U8_STREAM_SAFE_TEXT_MAX + 1]; + u8_normalization_states_t state; + + if (unicode_version > U8_UNICODE_LATEST) { + *errnum = ERANGE; + return ((size_t)-1); + } + + f = flag & (U8_TEXTPREP_TOUPPER | U8_TEXTPREP_TOLOWER); + if (f == (U8_TEXTPREP_TOUPPER | U8_TEXTPREP_TOLOWER)) { + *errnum = EBADF; + return ((size_t)-1); + } + + f = flag & (U8_CANON_DECOMP | U8_COMPAT_DECOMP | U8_CANON_COMP); + if (f && f != U8_TEXTPREP_NFD && f != U8_TEXTPREP_NFC && + f != U8_TEXTPREP_NFKD && f != U8_TEXTPREP_NFKC) { + *errnum = EBADF; + return ((size_t)-1); + } + + if (inarray == NULL || *inlen == 0) + return (0); + + if (outarray == NULL) { + *errnum = E2BIG; + return ((size_t)-1); + } + + ib = (uchar_t *)inarray; + ob = (uchar_t *)outarray; + ibtail = ib + *inlen; + obtail = ob + *outlen; + + do_not_ignore_null = !(flag & U8_TEXTPREP_IGNORE_NULL); + do_not_ignore_invalid = !(flag & U8_TEXTPREP_IGNORE_INVALID); + is_it_toupper = flag & U8_TEXTPREP_TOUPPER; + is_it_tolower = flag & U8_TEXTPREP_TOLOWER; + + ret_val = 0; + + /* + * If we don't have a normalization flag set, we do the simple case + * conversion based text preparation separately below. Text + * preparation involving Normalization will be done in the false task + * block, again, separately since it will take much more time and + * resource than doing simple case conversions. + */ + if (f == 0) { + while (ib < ibtail) { + if (*ib == '\0' && do_not_ignore_null) + break; + + sz = u8_number_of_bytes[*ib]; + + if (sz < 0) { + if (do_not_ignore_invalid) { + *errnum = EILSEQ; + ret_val = (size_t)-1; + break; + } + + sz = 1; + ret_val++; + } + + if (sz == 1) { + if (ob >= obtail) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + if (is_it_toupper) + *ob = U8_ASCII_TOUPPER(*ib); + else if (is_it_tolower) + *ob = U8_ASCII_TOLOWER(*ib); + else + *ob = *ib; + ib++; + ob++; + } else if ((ib + sz) > ibtail) { + if (do_not_ignore_invalid) { + *errnum = EINVAL; + ret_val = (size_t)-1; + break; + } + + if ((obtail - ob) < (ibtail - ib)) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + /* + * We treat the remaining incomplete character + * bytes as a character. + */ + ret_val++; + + while (ib < ibtail) + *ob++ = *ib++; + } else { + if (is_it_toupper || is_it_tolower) { + i = do_case_conv(unicode_version, u8s, + ib, sz, is_it_toupper); + + if ((obtail - ob) < i) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + ib += sz; + + for (sz = 0; sz < i; sz++) + *ob++ = u8s[sz]; + } else { + if ((obtail - ob) < sz) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + for (i = 0; i < sz; i++) + *ob++ = *ib++; + } + } + } + } else { + canonical_decomposition = flag & U8_CANON_DECOMP; + compatibility_decomposition = flag & U8_COMPAT_DECOMP; + canonical_composition = flag & U8_CANON_COMP; + + while (ib < ibtail) { + if (*ib == '\0' && do_not_ignore_null) + break; + + /* + * If the current character is a 7-bit ASCII + * character and it is the last character, or, + * if the current character is a 7-bit ASCII + * character and the next character is also a 7-bit + * ASCII character, then, we copy over this + * character without going through collect_a_seq(). + * + * In any other cases, we need to look further with + * the collect_a_seq() function. + */ + if (U8_ISASCII(*ib) && ((ib + 1) >= ibtail || + ((ib + 1) < ibtail && U8_ISASCII(*(ib + 1))))) { + if (ob >= obtail) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + if (is_it_toupper) + *ob = U8_ASCII_TOUPPER(*ib); + else if (is_it_tolower) + *ob = U8_ASCII_TOLOWER(*ib); + else + *ob = *ib; + ib++; + ob++; + } else { + *errnum = 0; + state = U8_STATE_START; + + j = collect_a_seq(unicode_version, u8s, + &ib, ibtail, + is_it_toupper, + is_it_tolower, + canonical_decomposition, + compatibility_decomposition, + canonical_composition, + errnum, &state); + + if (*errnum && do_not_ignore_invalid) { + ret_val = (size_t)-1; + break; + } + + if ((obtail - ob) < j) { + *errnum = E2BIG; + ret_val = (size_t)-1; + break; + } + + for (i = 0; i < j; i++) + *ob++ = u8s[i]; + } + } + } + + *inlen = ibtail - ib; + *outlen = obtail - ob; + + return (ret_val); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +static int __init +unicode_init(void) { + return (0); +} + +static void __exit +unicode_fini(void) +{ +} + +module_init(unicode_init); +module_exit(unicode_fini); + +MODULE_DESCRIPTION("Unicode implementation"); +MODULE_AUTHOR(ZFS_META_AUTHOR); +MODULE_LICENSE(ZFS_META_LICENSE); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); + +EXPORT_SYMBOL(u8_validate); +EXPORT_SYMBOL(u8_strcmp); +EXPORT_SYMBOL(u8_textprep_str); +#endif --- linux-4.4.0.orig/zfs/module/unicode/uconv.c +++ linux-4.4.0/zfs/module/unicode/uconv.c @@ -0,0 +1,864 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + + + +/* + * Unicode encoding conversion functions among UTF-8, UTF-16, and UTF-32. + * (PSARC/2005/446, PSARC/2007/038, PSARC/2007/517) + * Man pages: uconv_u16tou32(9F), uconv_u16tou8(9F), uconv_u32tou16(9F), + * uconv_u32tou8(9F), uconv_u8tou16(9F), and uconv_u8tou32(9F). See also + * the section 3C man pages. + * Interface stability: Committed + */ + +#include +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#else +#include +#endif /* _KERNEL */ +#include +#include + + +/* + * The max and min values of high and low surrogate pairs of UTF-16, + * UTF-16 bit shift value, bit mask, and starting value outside of BMP. + */ +#define UCONV_U16_HI_MIN (0xd800U) +#define UCONV_U16_HI_MAX (0xdbffU) +#define UCONV_U16_LO_MIN (0xdc00U) +#define UCONV_U16_LO_MAX (0xdfffU) +#define UCONV_U16_BIT_SHIFT (0x0400U) +#define UCONV_U16_BIT_MASK (0x0fffffU) +#define UCONV_U16_START (0x010000U) + +/* The maximum value of Unicode coding space and ASCII coding space. */ +#define UCONV_UNICODE_MAX (0x10ffffU) +#define UCONV_ASCII_MAX (0x7fU) + +/* The mask values for input and output endians. */ +#define UCONV_IN_ENDIAN_MASKS (UCONV_IN_BIG_ENDIAN | UCONV_IN_LITTLE_ENDIAN) +#define UCONV_OUT_ENDIAN_MASKS (UCONV_OUT_BIG_ENDIAN | UCONV_OUT_LITTLE_ENDIAN) + +/* Native and reversed endian macros. */ +#ifdef _BIG_ENDIAN +#define UCONV_IN_NAT_ENDIAN UCONV_IN_BIG_ENDIAN +#define UCONV_IN_REV_ENDIAN UCONV_IN_LITTLE_ENDIAN +#define UCONV_OUT_NAT_ENDIAN UCONV_OUT_BIG_ENDIAN +#define UCONV_OUT_REV_ENDIAN UCONV_OUT_LITTLE_ENDIAN +#else +#define UCONV_IN_NAT_ENDIAN UCONV_IN_LITTLE_ENDIAN +#define UCONV_IN_REV_ENDIAN UCONV_IN_BIG_ENDIAN +#define UCONV_OUT_NAT_ENDIAN UCONV_OUT_LITTLE_ENDIAN +#define UCONV_OUT_REV_ENDIAN UCONV_OUT_BIG_ENDIAN +#endif /* _BIG_ENDIAN */ + +/* The Byte Order Mark (BOM) character in normal and reversed byte orderings. */ +#define UCONV_BOM_NORMAL (0xfeffU) +#define UCONV_BOM_SWAPPED (0xfffeU) +#define UCONV_BOM_SWAPPED_32 (0xfffe0000U) + +/* UTF-32 boundaries based on UTF-8 character byte lengths. */ +#define UCONV_U8_ONE_BYTE (0x7fU) +#define UCONV_U8_TWO_BYTES (0x7ffU) +#define UCONV_U8_THREE_BYTES (0xffffU) +#define UCONV_U8_FOUR_BYTES (0x10ffffU) + +/* The common minimum and maximum values at the UTF-8 character bytes. */ +#define UCONV_U8_BYTE_MIN (0x80U) +#define UCONV_U8_BYTE_MAX (0xbfU) + +/* + * The following "6" and "0x3f" came from "10xx xxxx" bit representation of + * UTF-8 character bytes. + */ +#define UCONV_U8_BIT_SHIFT 6 +#define UCONV_U8_BIT_MASK 0x3f + +/* + * The following vector shows remaining bytes in a UTF-8 character. + * Index will be the first byte of the character. + */ +static const uchar_t remaining_bytes_tbl[0x100] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + +/* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF */ + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + +/* D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + +/* E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF */ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + +/* F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF */ + 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/* + * The following is a vector of bit-masks to get used bits in + * the first byte of a UTF-8 character. Index is remaining bytes at above of + * the character. + */ +#ifdef _KERNEL +const uchar_t u8_masks_tbl[6] = { 0x00, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; +#else +static const uchar_t u8_masks_tbl[6] = { 0x00, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; +#endif /* _KERNEL */ + +/* + * The following two vectors are to provide valid minimum and + * maximum values for the 2'nd byte of a multibyte UTF-8 character for + * better illegal sequence checking. The index value must be the value of + * the first byte of the UTF-8 character. + */ +static const uchar_t valid_min_2nd_byte[0x100] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + +/* C0 C1 C2 C3 C4 C5 C6 C7 */ + 0, 0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* C8 C9 CA CB CC CD CE CF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* D0 D1 D2 D3 D4 D5 D6 D7 */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* D8 D9 DA DB DC DD DE DF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* E0 E1 E2 E3 E4 E5 E6 E7 */ + 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* E8 E9 EA EB EC ED EE EF */ + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + +/* F0 F1 F2 F3 F4 F5 F6 F7 */ + 0x90, 0x80, 0x80, 0x80, 0x80, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const uchar_t valid_max_2nd_byte[0x100] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + +/* C0 C1 C2 C3 C4 C5 C6 C7 */ + 0, 0, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, + +/* C8 C9 CA CB CC CD CE CF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, + +/* D0 D1 D2 D3 D4 D5 D6 D7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, + +/* D8 D9 DA DB DC DD DE DF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, + +/* E0 E1 E2 E3 E4 E5 E6 E7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, + +/* E8 E9 EA EB EC ED EE EF */ + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x9f, 0xbf, 0xbf, + +/* F0 F1 F2 F3 F4 F5 F6 F7 */ + 0xbf, 0xbf, 0xbf, 0xbf, 0x8f, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0 +}; + + +static int +check_endian(int flag, int *in, int *out) +{ + *in = flag & UCONV_IN_ENDIAN_MASKS; + + /* You cannot have both. */ + if (*in == UCONV_IN_ENDIAN_MASKS) + return (EBADF); + + if (*in == 0) + *in = UCONV_IN_NAT_ENDIAN; + + *out = flag & UCONV_OUT_ENDIAN_MASKS; + + /* You cannot have both. */ + if (*out == UCONV_OUT_ENDIAN_MASKS) + return (EBADF); + + if (*out == 0) + *out = UCONV_OUT_NAT_ENDIAN; + + return (0); +} + +static boolean_t +check_bom16(const uint16_t *u16s, size_t u16l, int *in) +{ + if (u16l > 0) { + if (*u16s == UCONV_BOM_NORMAL) { + *in = UCONV_IN_NAT_ENDIAN; + return (B_TRUE); + } + if (*u16s == UCONV_BOM_SWAPPED) { + *in = UCONV_IN_REV_ENDIAN; + return (B_TRUE); + } + } + + return (B_FALSE); +} + +static boolean_t +check_bom32(const uint32_t *u32s, size_t u32l, int *in) +{ + if (u32l > 0) { + if (*u32s == UCONV_BOM_NORMAL) { + *in = UCONV_IN_NAT_ENDIAN; + return (B_TRUE); + } + if (*u32s == UCONV_BOM_SWAPPED_32) { + *in = UCONV_IN_REV_ENDIAN; + return (B_TRUE); + } + } + + return (B_FALSE); +} + +int +uconv_u16tou32(const uint16_t *u16s, size_t *utf16len, + uint32_t *u32s, size_t *utf32len, int flag) +{ + int inendian; + int outendian; + size_t u16l; + size_t u32l; + uint32_t hi; + uint32_t lo; + boolean_t do_not_ignore_null; + + /* + * Do preliminary validity checks on parameters and collect info on + * endians. + */ + if (u16s == NULL || utf16len == NULL) + return (EILSEQ); + + if (u32s == NULL || utf32len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + /* + * Initialize input and output parameter buffer indices and + * temporary variables. + */ + u16l = u32l = 0; + hi = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + /* + * Check on the BOM at the beginning of the input buffer if required + * and if there is indeed one, process it. + */ + if ((flag & UCONV_IN_ACCEPT_BOM) && + check_bom16(u16s, *utf16len, &inendian)) + u16l++; + + /* + * Reset inendian and outendian so that after this point, those can be + * used as condition values. + */ + inendian &= UCONV_IN_NAT_ENDIAN; + outendian &= UCONV_OUT_NAT_ENDIAN; + + /* + * If there is something in the input buffer and if necessary and + * requested, save the BOM at the output buffer. + */ + if (*utf16len > 0 && *utf32len > 0 && (flag & UCONV_OUT_EMIT_BOM)) + u32s[u32l++] = (outendian) ? UCONV_BOM_NORMAL : + UCONV_BOM_SWAPPED_32; + + /* + * Do conversion; if encounter a surrogate pair, assemble high and + * low pair values to form a UTF-32 character. If a half of a pair + * exists alone, then, either it is an illegal (EILSEQ) or + * invalid (EINVAL) value. + */ + for (; u16l < *utf16len; u16l++) { + if (u16s[u16l] == 0 && do_not_ignore_null) + break; + + lo = (uint32_t)((inendian) ? u16s[u16l] : BSWAP_16(u16s[u16l])); + + if (lo >= UCONV_U16_HI_MIN && lo <= UCONV_U16_HI_MAX) { + if (hi) + return (EILSEQ); + hi = lo; + continue; + } else if (lo >= UCONV_U16_LO_MIN && lo <= UCONV_U16_LO_MAX) { + if (! hi) + return (EILSEQ); + lo = (((hi - UCONV_U16_HI_MIN) * UCONV_U16_BIT_SHIFT + + lo - UCONV_U16_LO_MIN) & UCONV_U16_BIT_MASK) + + UCONV_U16_START; + hi = 0; + } else if (hi) { + return (EILSEQ); + } + + if (u32l >= *utf32len) + return (E2BIG); + + u32s[u32l++] = (outendian) ? lo : BSWAP_32(lo); + } + + /* + * If high half didn't see low half, then, it's most likely the input + * parameter is incomplete. + */ + if (hi) + return (EINVAL); + + /* + * Save the number of consumed and saved characters. They do not + * include terminating NULL character (U+0000) at the end of + * the input buffer (even when UCONV_IGNORE_NULL isn't specified and + * the input buffer length is big enough to include the terminating + * NULL character). + */ + *utf16len = u16l; + *utf32len = u32l; + + return (0); +} + +int +uconv_u16tou8(const uint16_t *u16s, size_t *utf16len, + uchar_t *u8s, size_t *utf8len, int flag) +{ + int inendian; + int outendian; + size_t u16l; + size_t u8l; + uint32_t hi; + uint32_t lo; + boolean_t do_not_ignore_null; + + if (u16s == NULL || utf16len == NULL) + return (EILSEQ); + + if (u8s == NULL || utf8len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + u16l = u8l = 0; + hi = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + if ((flag & UCONV_IN_ACCEPT_BOM) && + check_bom16(u16s, *utf16len, &inendian)) + u16l++; + + inendian &= UCONV_IN_NAT_ENDIAN; + + for (; u16l < *utf16len; u16l++) { + if (u16s[u16l] == 0 && do_not_ignore_null) + break; + + lo = (uint32_t)((inendian) ? u16s[u16l] : BSWAP_16(u16s[u16l])); + + if (lo >= UCONV_U16_HI_MIN && lo <= UCONV_U16_HI_MAX) { + if (hi) + return (EILSEQ); + hi = lo; + continue; + } else if (lo >= UCONV_U16_LO_MIN && lo <= UCONV_U16_LO_MAX) { + if (! hi) + return (EILSEQ); + lo = (((hi - UCONV_U16_HI_MIN) * UCONV_U16_BIT_SHIFT + + lo - UCONV_U16_LO_MIN) & UCONV_U16_BIT_MASK) + + UCONV_U16_START; + hi = 0; + } else if (hi) { + return (EILSEQ); + } + + /* + * Now we convert a UTF-32 character into a UTF-8 character. + * Unicode coding space is between U+0000 and U+10FFFF; + * anything bigger is an illegal character. + */ + if (lo <= UCONV_U8_ONE_BYTE) { + if (u8l >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)lo; + } else if (lo <= UCONV_U8_TWO_BYTES) { + if ((u8l + 1) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xc0 | ((lo & 0x07c0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x003f)); + } else if (lo <= UCONV_U8_THREE_BYTES) { + if ((u8l + 2) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xe0 | ((lo & 0x0f000) >> 12)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x00fc0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x0003f)); + } else if (lo <= UCONV_U8_FOUR_BYTES) { + if ((u8l + 3) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xf0 | ((lo & 0x01c0000) >> 18)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x003f000) >> 12)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x0000fc0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x000003f)); + } else { + return (EILSEQ); + } + } + + if (hi) + return (EINVAL); + + *utf16len = u16l; + *utf8len = u8l; + + return (0); +} + +int +uconv_u32tou16(const uint32_t *u32s, size_t *utf32len, + uint16_t *u16s, size_t *utf16len, int flag) +{ + int inendian; + int outendian; + size_t u16l; + size_t u32l; + uint32_t hi; + uint32_t lo; + boolean_t do_not_ignore_null; + + if (u32s == NULL || utf32len == NULL) + return (EILSEQ); + + if (u16s == NULL || utf16len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + u16l = u32l = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + if ((flag & UCONV_IN_ACCEPT_BOM) && + check_bom32(u32s, *utf32len, &inendian)) + u32l++; + + inendian &= UCONV_IN_NAT_ENDIAN; + outendian &= UCONV_OUT_NAT_ENDIAN; + + if (*utf32len > 0 && *utf16len > 0 && (flag & UCONV_OUT_EMIT_BOM)) + u16s[u16l++] = (outendian) ? UCONV_BOM_NORMAL : + UCONV_BOM_SWAPPED; + + for (; u32l < *utf32len; u32l++) { + if (u32s[u32l] == 0 && do_not_ignore_null) + break; + + hi = (inendian) ? u32s[u32l] : BSWAP_32(u32s[u32l]); + + /* + * Anything bigger than the Unicode coding space, i.e., + * Unicode scalar value bigger than U+10FFFF, is an illegal + * character. + */ + if (hi > UCONV_UNICODE_MAX) + return (EILSEQ); + + /* + * Anything bigger than U+FFFF must be converted into + * a surrogate pair in UTF-16. + */ + if (hi >= UCONV_U16_START) { + lo = ((hi - UCONV_U16_START) % UCONV_U16_BIT_SHIFT) + + UCONV_U16_LO_MIN; + hi = ((hi - UCONV_U16_START) / UCONV_U16_BIT_SHIFT) + + UCONV_U16_HI_MIN; + + if ((u16l + 1) >= *utf16len) + return (E2BIG); + + if (outendian) { + u16s[u16l++] = (uint16_t)hi; + u16s[u16l++] = (uint16_t)lo; + } else { + u16s[u16l++] = BSWAP_16(((uint16_t)hi)); + u16s[u16l++] = BSWAP_16(((uint16_t)lo)); + } + } else { + if (u16l >= *utf16len) + return (E2BIG); + u16s[u16l++] = (outendian) ? (uint16_t)hi : + BSWAP_16(((uint16_t)hi)); + } + } + + *utf16len = u16l; + *utf32len = u32l; + + return (0); +} + +int +uconv_u32tou8(const uint32_t *u32s, size_t *utf32len, + uchar_t *u8s, size_t *utf8len, int flag) +{ + int inendian; + int outendian; + size_t u32l; + size_t u8l; + uint32_t lo; + boolean_t do_not_ignore_null; + + if (u32s == NULL || utf32len == NULL) + return (EILSEQ); + + if (u8s == NULL || utf8len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + u32l = u8l = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + if ((flag & UCONV_IN_ACCEPT_BOM) && + check_bom32(u32s, *utf32len, &inendian)) + u32l++; + + inendian &= UCONV_IN_NAT_ENDIAN; + + for (; u32l < *utf32len; u32l++) { + if (u32s[u32l] == 0 && do_not_ignore_null) + break; + + lo = (inendian) ? u32s[u32l] : BSWAP_32(u32s[u32l]); + + if (lo <= UCONV_U8_ONE_BYTE) { + if (u8l >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)lo; + } else if (lo <= UCONV_U8_TWO_BYTES) { + if ((u8l + 1) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xc0 | ((lo & 0x07c0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x003f)); + } else if (lo <= UCONV_U8_THREE_BYTES) { + if ((u8l + 2) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xe0 | ((lo & 0x0f000) >> 12)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x00fc0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x0003f)); + } else if (lo <= UCONV_U8_FOUR_BYTES) { + if ((u8l + 3) >= *utf8len) + return (E2BIG); + u8s[u8l++] = (uchar_t)(0xf0 | ((lo & 0x01c0000) >> 18)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x003f000) >> 12)); + u8s[u8l++] = (uchar_t)(0x80 | ((lo & 0x0000fc0) >> 6)); + u8s[u8l++] = (uchar_t)(0x80 | (lo & 0x000003f)); + } else { + return (EILSEQ); + } + } + + *utf32len = u32l; + *utf8len = u8l; + + return (0); +} + +int +uconv_u8tou16(const uchar_t *u8s, size_t *utf8len, + uint16_t *u16s, size_t *utf16len, int flag) +{ + int inendian; + int outendian; + size_t u16l; + size_t u8l; + uint32_t hi; + uint32_t lo; + int remaining_bytes; + int first_b; + boolean_t do_not_ignore_null; + + if (u8s == NULL || utf8len == NULL) + return (EILSEQ); + + if (u16s == NULL || utf16len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + u16l = u8l = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + outendian &= UCONV_OUT_NAT_ENDIAN; + + if (*utf8len > 0 && *utf16len > 0 && (flag & UCONV_OUT_EMIT_BOM)) + u16s[u16l++] = (outendian) ? UCONV_BOM_NORMAL : + UCONV_BOM_SWAPPED; + + for (; u8l < *utf8len; ) { + if (u8s[u8l] == 0 && do_not_ignore_null) + break; + + /* + * Collect a UTF-8 character and convert it to a UTF-32 + * character. In doing so, we screen out illegally formed + * UTF-8 characters and treat such as illegal characters. + * The algorithm at below also screens out anything bigger + * than the U+10FFFF. + * + * See Unicode 3.1 UTF-8 Corrigendum and Unicode 3.2 for + * more details on the illegal values of UTF-8 character + * bytes. + */ + hi = (uint32_t)u8s[u8l++]; + + if (hi > UCONV_ASCII_MAX) { + if ((remaining_bytes = remaining_bytes_tbl[hi]) == 0) + return (EILSEQ); + + first_b = hi; + hi = hi & u8_masks_tbl[remaining_bytes]; + + for (; remaining_bytes > 0; remaining_bytes--) { + /* + * If we have no more bytes, the current + * UTF-8 character is incomplete. + */ + if (u8l >= *utf8len) + return (EINVAL); + + lo = (uint32_t)u8s[u8l++]; + + if (first_b) { + if (lo < valid_min_2nd_byte[first_b] || + lo > valid_max_2nd_byte[first_b]) + return (EILSEQ); + first_b = 0; + } else if (lo < UCONV_U8_BYTE_MIN || + lo > UCONV_U8_BYTE_MAX) { + return (EILSEQ); + } + hi = (hi << UCONV_U8_BIT_SHIFT) | + (lo & UCONV_U8_BIT_MASK); + } + } + + if (hi >= UCONV_U16_START) { + lo = ((hi - UCONV_U16_START) % UCONV_U16_BIT_SHIFT) + + UCONV_U16_LO_MIN; + hi = ((hi - UCONV_U16_START) / UCONV_U16_BIT_SHIFT) + + UCONV_U16_HI_MIN; + + if ((u16l + 1) >= *utf16len) + return (E2BIG); + + if (outendian) { + u16s[u16l++] = (uint16_t)hi; + u16s[u16l++] = (uint16_t)lo; + } else { + u16s[u16l++] = BSWAP_16(((uint16_t)hi)); + u16s[u16l++] = BSWAP_16(((uint16_t)lo)); + } + } else { + if (u16l >= *utf16len) + return (E2BIG); + + u16s[u16l++] = (outendian) ? (uint16_t)hi : + BSWAP_16(((uint16_t)hi)); + } + } + + *utf16len = u16l; + *utf8len = u8l; + + return (0); +} + +int +uconv_u8tou32(const uchar_t *u8s, size_t *utf8len, + uint32_t *u32s, size_t *utf32len, int flag) +{ + int inendian; + int outendian; + size_t u32l; + size_t u8l; + uint32_t hi; + uint32_t c; + int remaining_bytes; + int first_b; + boolean_t do_not_ignore_null; + + if (u8s == NULL || utf8len == NULL) + return (EILSEQ); + + if (u32s == NULL || utf32len == NULL) + return (E2BIG); + + if (check_endian(flag, &inendian, &outendian) != 0) + return (EBADF); + + u32l = u8l = 0; + do_not_ignore_null = ((flag & UCONV_IGNORE_NULL) == 0); + + outendian &= UCONV_OUT_NAT_ENDIAN; + + if (*utf8len > 0 && *utf32len > 0 && (flag & UCONV_OUT_EMIT_BOM)) + u32s[u32l++] = (outendian) ? UCONV_BOM_NORMAL : + UCONV_BOM_SWAPPED_32; + + for (; u8l < *utf8len; ) { + if (u8s[u8l] == 0 && do_not_ignore_null) + break; + + hi = (uint32_t)u8s[u8l++]; + + if (hi > UCONV_ASCII_MAX) { + if ((remaining_bytes = remaining_bytes_tbl[hi]) == 0) + return (EILSEQ); + + first_b = hi; + hi = hi & u8_masks_tbl[remaining_bytes]; + + for (; remaining_bytes > 0; remaining_bytes--) { + if (u8l >= *utf8len) + return (EINVAL); + + c = (uint32_t)u8s[u8l++]; + + if (first_b) { + if (c < valid_min_2nd_byte[first_b] || + c > valid_max_2nd_byte[first_b]) + return (EILSEQ); + first_b = 0; + } else if (c < UCONV_U8_BYTE_MIN || + c > UCONV_U8_BYTE_MAX) { + return (EILSEQ); + } + hi = (hi << UCONV_U8_BIT_SHIFT) | + (c & UCONV_U8_BIT_MASK); + } + } + + if (u32l >= *utf32len) + return (E2BIG); + + u32s[u32l++] = (outendian) ? hi : BSWAP_32(hi); + } + + *utf32len = u32l; + *utf8len = u8l; + + return (0); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(uconv_u16tou32); +EXPORT_SYMBOL(uconv_u16tou8); +EXPORT_SYMBOL(uconv_u32tou16); +EXPORT_SYMBOL(uconv_u32tou8); +EXPORT_SYMBOL(uconv_u8tou16); +EXPORT_SYMBOL(uconv_u8tou32); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/Makefile.in +++ linux-4.4.0/zfs/module/zcommon/Makefile.in @@ -0,0 +1,17 @@ +src = @abs_top_srcdir@/module/zcommon +obj = @abs_builddir@ + +MODULE := zcommon + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += zfs_deleg.o +$(MODULE)-objs += zfs_prop.o +$(MODULE)-objs += zprop_common.o +$(MODULE)-objs += zfs_namecheck.o +$(MODULE)-objs += zfs_comutil.o +$(MODULE)-objs += zfs_fletcher.o +$(MODULE)-objs += zfs_uio.o +$(MODULE)-objs += zpool_prop.o --- linux-4.4.0.orig/zfs/module/zcommon/zfs_comutil.c +++ linux-4.4.0/zfs/module/zcommon/zfs_comutil.c @@ -0,0 +1,215 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +/* + * This file is intended for functions that ought to be common between user + * land (libzfs) and the kernel. When many common routines need to be shared + * then a separate file should to be created. + */ + +#if defined(_KERNEL) +#include +#else +#include +#endif + +#include +#include +#include +#include +#include "zfs_comutil.h" + +/* + * Are there allocatable vdevs? + */ +boolean_t +zfs_allocatable_devs(nvlist_t *nv) +{ + uint64_t is_log; + uint_t c; + nvlist_t **child; + uint_t children; + + if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, + &child, &children) != 0) { + return (B_FALSE); + } + for (c = 0; c < children; c++) { + is_log = 0; + (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG, + &is_log); + if (!is_log) + return (B_TRUE); + } + return (B_FALSE); +} + +void +zpool_get_rewind_policy(nvlist_t *nvl, zpool_rewind_policy_t *zrpp) +{ + nvlist_t *policy; + nvpair_t *elem; + char *nm; + + /* Defaults */ + zrpp->zrp_request = ZPOOL_NO_REWIND; + zrpp->zrp_maxmeta = 0; + zrpp->zrp_maxdata = UINT64_MAX; + zrpp->zrp_txg = UINT64_MAX; + + if (nvl == NULL) + return; + + elem = NULL; + while ((elem = nvlist_next_nvpair(nvl, elem)) != NULL) { + nm = nvpair_name(elem); + if (strcmp(nm, ZPOOL_REWIND_POLICY) == 0) { + if (nvpair_value_nvlist(elem, &policy) == 0) + zpool_get_rewind_policy(policy, zrpp); + return; + } else if (strcmp(nm, ZPOOL_REWIND_REQUEST) == 0) { + if (nvpair_value_uint32(elem, &zrpp->zrp_request) == 0) + if (zrpp->zrp_request & ~ZPOOL_REWIND_POLICIES) + zrpp->zrp_request = ZPOOL_NO_REWIND; + } else if (strcmp(nm, ZPOOL_REWIND_REQUEST_TXG) == 0) { + (void) nvpair_value_uint64(elem, &zrpp->zrp_txg); + } else if (strcmp(nm, ZPOOL_REWIND_META_THRESH) == 0) { + (void) nvpair_value_uint64(elem, &zrpp->zrp_maxmeta); + } else if (strcmp(nm, ZPOOL_REWIND_DATA_THRESH) == 0) { + (void) nvpair_value_uint64(elem, &zrpp->zrp_maxdata); + } + } + if (zrpp->zrp_request == 0) + zrpp->zrp_request = ZPOOL_NO_REWIND; +} + +typedef struct zfs_version_spa_map { + int version_zpl; + int version_spa; +} zfs_version_spa_map_t; + +/* + * Keep this table in monotonically increasing version number order. + */ +static zfs_version_spa_map_t zfs_version_table[] = { + {ZPL_VERSION_INITIAL, SPA_VERSION_INITIAL}, + {ZPL_VERSION_DIRENT_TYPE, SPA_VERSION_INITIAL}, + {ZPL_VERSION_FUID, SPA_VERSION_FUID}, + {ZPL_VERSION_USERSPACE, SPA_VERSION_USERSPACE}, + {ZPL_VERSION_SA, SPA_VERSION_SA}, + {0, 0} +}; + +/* + * Return the max zpl version for a corresponding spa version + * -1 is returned if no mapping exists. + */ +int +zfs_zpl_version_map(int spa_version) +{ + int i; + int version = -1; + + for (i = 0; zfs_version_table[i].version_spa; i++) { + if (spa_version >= zfs_version_table[i].version_spa) + version = zfs_version_table[i].version_zpl; + } + + return (version); +} + +/* + * Return the min spa version for a corresponding spa version + * -1 is returned if no mapping exists. + */ +int +zfs_spa_version_map(int zpl_version) +{ + int i; + int version = -1; + + for (i = 0; zfs_version_table[i].version_zpl; i++) { + if (zfs_version_table[i].version_zpl >= zpl_version) + return (zfs_version_table[i].version_spa); + } + + return (version); +} + +/* + * This is the table of legacy internal event names; it should not be modified. + * The internal events are now stored in the history log as strings. + */ +const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS] = { + "invalid event", + "pool create", + "vdev add", + "pool remove", + "pool destroy", + "pool export", + "pool import", + "vdev attach", + "vdev replace", + "vdev detach", + "vdev online", + "vdev offline", + "vdev upgrade", + "pool clear", + "pool scrub", + "pool property set", + "create", + "clone", + "destroy", + "destroy_begin_sync", + "inherit", + "property set", + "quota set", + "permission update", + "permission remove", + "permission who remove", + "promote", + "receive", + "rename", + "reservation set", + "replay_inc_sync", + "replay_full_sync", + "rollback", + "snapshot", + "filesystem version upgrade", + "refquota set", + "refreservation set", + "pool scrub done", + "user hold", + "user release", + "pool split", +}; + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zfs_allocatable_devs); +EXPORT_SYMBOL(zpool_get_rewind_policy); +EXPORT_SYMBOL(zfs_zpl_version_map); +EXPORT_SYMBOL(zfs_spa_version_map); +EXPORT_SYMBOL(zfs_history_event_names); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zfs_deleg.c +++ linux-4.4.0/zfs/module/zcommon/zfs_deleg.c @@ -0,0 +1,238 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2010 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include + +#if defined(_KERNEL) +#include +#include +#include +#else +#include +#include +#include +#include +#include +#endif +#include +#include "zfs_prop.h" +#include "zfs_deleg.h" +#include "zfs_namecheck.h" + +zfs_deleg_perm_tab_t zfs_deleg_perm_tab[] = { + {ZFS_DELEG_PERM_ALLOW}, + {ZFS_DELEG_PERM_BOOKMARK}, + {ZFS_DELEG_PERM_CLONE}, + {ZFS_DELEG_PERM_CREATE}, + {ZFS_DELEG_PERM_DESTROY}, + {ZFS_DELEG_PERM_DIFF}, + {ZFS_DELEG_PERM_MOUNT}, + {ZFS_DELEG_PERM_PROMOTE}, + {ZFS_DELEG_PERM_RECEIVE}, + {ZFS_DELEG_PERM_RENAME}, + {ZFS_DELEG_PERM_ROLLBACK}, + {ZFS_DELEG_PERM_SNAPSHOT}, + {ZFS_DELEG_PERM_SHARE}, + {ZFS_DELEG_PERM_SEND}, + {ZFS_DELEG_PERM_USERPROP}, + {ZFS_DELEG_PERM_USERQUOTA}, + {ZFS_DELEG_PERM_GROUPQUOTA}, + {ZFS_DELEG_PERM_USERUSED}, + {ZFS_DELEG_PERM_GROUPUSED}, + {ZFS_DELEG_PERM_HOLD}, + {ZFS_DELEG_PERM_RELEASE}, + {NULL} +}; + +static int +zfs_valid_permission_name(const char *perm) +{ + if (zfs_deleg_canonicalize_perm(perm)) + return (0); + + return (permset_namecheck(perm, NULL, NULL)); +} + +const char * +zfs_deleg_canonicalize_perm(const char *perm) +{ + int i; + zfs_prop_t prop; + + for (i = 0; zfs_deleg_perm_tab[i].z_perm != NULL; i++) { + if (strcmp(perm, zfs_deleg_perm_tab[i].z_perm) == 0) + return (perm); + } + + prop = zfs_name_to_prop(perm); + if (prop != ZPROP_INVAL && zfs_prop_delegatable(prop)) + return (zfs_prop_to_name(prop)); + return (NULL); + +} + +static int +zfs_validate_who(char *who) +{ + char *p; + + if (who[2] != ZFS_DELEG_FIELD_SEP_CHR) + return (-1); + + switch (who[0]) { + case ZFS_DELEG_USER: + case ZFS_DELEG_GROUP: + case ZFS_DELEG_USER_SETS: + case ZFS_DELEG_GROUP_SETS: + if (who[1] != ZFS_DELEG_LOCAL && who[1] != ZFS_DELEG_DESCENDENT) + return (-1); + for (p = &who[3]; *p; p++) + if (!isdigit(*p)) + return (-1); + break; + + case ZFS_DELEG_NAMED_SET: + case ZFS_DELEG_NAMED_SET_SETS: + if (who[1] != ZFS_DELEG_NA) + return (-1); + return (permset_namecheck(&who[3], NULL, NULL)); + + case ZFS_DELEG_CREATE: + case ZFS_DELEG_CREATE_SETS: + if (who[1] != ZFS_DELEG_NA) + return (-1); + if (who[3] != '\0') + return (-1); + break; + + case ZFS_DELEG_EVERYONE: + case ZFS_DELEG_EVERYONE_SETS: + if (who[1] != ZFS_DELEG_LOCAL && who[1] != ZFS_DELEG_DESCENDENT) + return (-1); + if (who[3] != '\0') + return (-1); + break; + + default: + return (-1); + } + + return (0); +} + +int +zfs_deleg_verify_nvlist(nvlist_t *nvp) +{ + nvpair_t *who, *perm_name; + nvlist_t *perms; + int error; + + if (nvp == NULL) + return (-1); + + who = nvlist_next_nvpair(nvp, NULL); + if (who == NULL) + return (-1); + + do { + if (zfs_validate_who(nvpair_name(who))) + return (-1); + + error = nvlist_lookup_nvlist(nvp, nvpair_name(who), &perms); + + if (error && error != ENOENT) + return (-1); + if (error == ENOENT) + continue; + + perm_name = nvlist_next_nvpair(perms, NULL); + if (perm_name == NULL) { + return (-1); + } + do { + error = zfs_valid_permission_name( + nvpair_name(perm_name)); + if (error) + return (-1); + } while ((perm_name = nvlist_next_nvpair(perms, perm_name))); + } while ((who = nvlist_next_nvpair(nvp, who))); + return (0); +} + +/* + * Construct the base attribute name. The base attribute names + * are the "key" to locate the jump objects which contain the actual + * permissions. The base attribute names are encoded based on + * type of entry and whether it is a local or descendent permission. + * + * Arguments: + * attr - attribute name return string, attribute is assumed to be + * ZFS_MAX_DELEG_NAME long. + * type - type of entry to construct + * inheritchr - inheritance type (local,descendent, or NA for create and + * permission set definitions + * data - is either a permission set name or a 64 bit uid/gid. + */ +void +zfs_deleg_whokey(char *attr, zfs_deleg_who_type_t type, + char inheritchr, void *data) +{ + int len = ZFS_MAX_DELEG_NAME; + uint64_t *id = data; + + switch (type) { + case ZFS_DELEG_USER: + case ZFS_DELEG_GROUP: + case ZFS_DELEG_USER_SETS: + case ZFS_DELEG_GROUP_SETS: + (void) snprintf(attr, len, "%c%c%c%lld", type, inheritchr, + ZFS_DELEG_FIELD_SEP_CHR, (longlong_t)*id); + break; + case ZFS_DELEG_NAMED_SET_SETS: + case ZFS_DELEG_NAMED_SET: + (void) snprintf(attr, len, "%c-%c%s", type, + ZFS_DELEG_FIELD_SEP_CHR, (char *)data); + break; + case ZFS_DELEG_CREATE: + case ZFS_DELEG_CREATE_SETS: + (void) snprintf(attr, len, "%c-%c", type, + ZFS_DELEG_FIELD_SEP_CHR); + break; + case ZFS_DELEG_EVERYONE: + case ZFS_DELEG_EVERYONE_SETS: + (void) snprintf(attr, len, "%c%c%c", type, inheritchr, + ZFS_DELEG_FIELD_SEP_CHR); + break; + default: + cmn_err(CE_PANIC, "bad zfs_deleg_who_type_t %d", type); + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zfs_deleg_verify_nvlist); +EXPORT_SYMBOL(zfs_deleg_whokey); +EXPORT_SYMBOL(zfs_deleg_canonicalize_perm); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zfs_fletcher.c +++ linux-4.4.0/zfs/module/zcommon/zfs_fletcher.c @@ -0,0 +1,255 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Fletcher Checksums + * ------------------ + * + * ZFS's 2nd and 4th order Fletcher checksums are defined by the following + * recurrence relations: + * + * a = a + f + * i i-1 i-1 + * + * b = b + a + * i i-1 i + * + * c = c + b (fletcher-4 only) + * i i-1 i + * + * d = d + c (fletcher-4 only) + * i i-1 i + * + * Where + * a_0 = b_0 = c_0 = d_0 = 0 + * and + * f_0 .. f_(n-1) are the input data. + * + * Using standard techniques, these translate into the following series: + * + * __n_ __n_ + * \ | \ | + * a = > f b = > i * f + * n /___| n - i n /___| n - i + * i = 1 i = 1 + * + * + * __n_ __n_ + * \ | i*(i+1) \ | i*(i+1)*(i+2) + * c = > ------- f d = > ------------- f + * n /___| 2 n - i n /___| 6 n - i + * i = 1 i = 1 + * + * For fletcher-2, the f_is are 64-bit, and [ab]_i are 64-bit accumulators. + * Since the additions are done mod (2^64), errors in the high bits may not + * be noticed. For this reason, fletcher-2 is deprecated. + * + * For fletcher-4, the f_is are 32-bit, and [abcd]_i are 64-bit accumulators. + * A conservative estimate of how big the buffer can get before we overflow + * can be estimated using f_i = 0xffffffff for all i: + * + * % bc + * f=2^32-1;d=0; for (i = 1; d<2^64; i++) { d += f*i*(i+1)*(i+2)/6 }; (i-1)*4 + * 2264 + * quit + * % + * + * So blocks of up to 2k will not overflow. Our largest block size is + * 128k, which has 32k 4-byte words, so we can compute the largest possible + * accumulators, then divide by 2^64 to figure the max amount of overflow: + * + * % bc + * a=b=c=d=0; f=2^32-1; for (i=1; i<=32*1024; i++) { a+=f; b+=a; c+=b; d+=c } + * a/2^64;b/2^64;c/2^64;d/2^64 + * 0 + * 0 + * 1365 + * 11186858 + * quit + * % + * + * So a and b cannot overflow. To make sure each bit of input has some + * effect on the contents of c and d, we can look at what the factors of + * the coefficients in the equations for c_n and d_n are. The number of 2s + * in the factors determines the lowest set bit in the multiplier. Running + * through the cases for n*(n+1)/2 reveals that the highest power of 2 is + * 2^14, and for n*(n+1)*(n+2)/6 it is 2^15. So while some data may overflow + * the 64-bit accumulators, every bit of every f_i effects every accumulator, + * even for 128k blocks. + * + * If we wanted to make a stronger version of fletcher4 (fletcher4c?), + * we could do our calculations mod (2^32 - 1) by adding in the carries + * periodically, and store the number of carries in the top 32-bits. + * + * -------------------- + * Checksum Performance + * -------------------- + * + * There are two interesting components to checksum performance: cached and + * uncached performance. With cached data, fletcher-2 is about four times + * faster than fletcher-4. With uncached data, the performance difference is + * negligible, since the cost of a cache fill dominates the processing time. + * Even though fletcher-4 is slower than fletcher-2, it is still a pretty + * efficient pass over the data. + * + * In normal operation, the data which is being checksummed is in a buffer + * which has been filled either by: + * + * 1. a compression step, which will be mostly cached, or + * 2. a bcopy() or copyin(), which will be uncached (because the + * copy is cache-bypassing). + * + * For both cached and uncached data, both fletcher checksums are much faster + * than sha-256, and slower than 'off', which doesn't touch the data at all. + */ + +#include +#include +#include +#include +#include + +void +fletcher_2_native(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + const uint64_t *ip = buf; + const uint64_t *ipend = ip + (size / sizeof (uint64_t)); + uint64_t a0, b0, a1, b1; + + for (a0 = b0 = a1 = b1 = 0; ip < ipend; ip += 2) { + a0 += ip[0]; + a1 += ip[1]; + b0 += a0; + b1 += a1; + } + + ZIO_SET_CHECKSUM(zcp, a0, a1, b0, b1); +} + +void +fletcher_2_byteswap(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + const uint64_t *ip = buf; + const uint64_t *ipend = ip + (size / sizeof (uint64_t)); + uint64_t a0, b0, a1, b1; + + for (a0 = b0 = a1 = b1 = 0; ip < ipend; ip += 2) { + a0 += BSWAP_64(ip[0]); + a1 += BSWAP_64(ip[1]); + b0 += a0; + b1 += a1; + } + + ZIO_SET_CHECKSUM(zcp, a0, a1, b0, b1); +} + +void +fletcher_4_native(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + const uint32_t *ip = buf; + const uint32_t *ipend = ip + (size / sizeof (uint32_t)); + uint64_t a, b, c, d; + + for (a = b = c = d = 0; ip < ipend; ip++) { + a += ip[0]; + b += a; + c += b; + d += c; + } + + ZIO_SET_CHECKSUM(zcp, a, b, c, d); +} + +void +fletcher_4_byteswap(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + const uint32_t *ip = buf; + const uint32_t *ipend = ip + (size / sizeof (uint32_t)); + uint64_t a, b, c, d; + + for (a = b = c = d = 0; ip < ipend; ip++) { + a += BSWAP_32(ip[0]); + b += a; + c += b; + d += c; + } + + ZIO_SET_CHECKSUM(zcp, a, b, c, d); +} + +void +fletcher_4_incremental_native(const void *buf, uint64_t size, + zio_cksum_t *zcp) +{ + const uint32_t *ip = buf; + const uint32_t *ipend = ip + (size / sizeof (uint32_t)); + uint64_t a, b, c, d; + + a = zcp->zc_word[0]; + b = zcp->zc_word[1]; + c = zcp->zc_word[2]; + d = zcp->zc_word[3]; + + for (; ip < ipend; ip++) { + a += ip[0]; + b += a; + c += b; + d += c; + } + + ZIO_SET_CHECKSUM(zcp, a, b, c, d); +} + +void +fletcher_4_incremental_byteswap(const void *buf, uint64_t size, + zio_cksum_t *zcp) +{ + const uint32_t *ip = buf; + const uint32_t *ipend = ip + (size / sizeof (uint32_t)); + uint64_t a, b, c, d; + + a = zcp->zc_word[0]; + b = zcp->zc_word[1]; + c = zcp->zc_word[2]; + d = zcp->zc_word[3]; + + for (; ip < ipend; ip++) { + a += BSWAP_32(ip[0]); + b += a; + c += b; + d += c; + } + + ZIO_SET_CHECKSUM(zcp, a, b, c, d); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(fletcher_2_native); +EXPORT_SYMBOL(fletcher_2_byteswap); +EXPORT_SYMBOL(fletcher_4_native); +EXPORT_SYMBOL(fletcher_4_byteswap); +EXPORT_SYMBOL(fletcher_4_incremental_native); +EXPORT_SYMBOL(fletcher_4_incremental_byteswap); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zfs_namecheck.c +++ linux-4.4.0/zfs/module/zcommon/zfs_namecheck.c @@ -0,0 +1,381 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +/* + * Common name validation routines for ZFS. These routines are shared by the + * userland code as well as the ioctl() layer to ensure that we don't + * inadvertently expose a hole through direct ioctl()s that never gets tested. + * In userland, however, we want significantly more information about _why_ the + * name is invalid. In the kernel, we only care whether it's valid or not. + * Each routine therefore takes a 'namecheck_err_t' which describes exactly why + * the name failed to validate. + * + * Each function returns 0 on success, -1 on error. + */ + +#if defined(_KERNEL) +#include +#else +#include +#endif + +#include +#include +#include "zfs_namecheck.h" +#include "zfs_deleg.h" + +static int +valid_char(char c) +{ + return ((c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '-' || c == '_' || c == '.' || c == ':' || c == ' '); +} + +/* + * Snapshot names must be made up of alphanumeric characters plus the following + * characters: + * + * [-_.: ] + */ +int +zfs_component_namecheck(const char *path, namecheck_err_t *why, char *what) +{ + const char *loc; + + if (strlen(path) >= MAXNAMELEN) { + if (why) + *why = NAME_ERR_TOOLONG; + return (-1); + } + + if (path[0] == '\0') { + if (why) + *why = NAME_ERR_EMPTY_COMPONENT; + return (-1); + } + + for (loc = path; *loc; loc++) { + if (!valid_char(*loc)) { + if (why) { + *why = NAME_ERR_INVALCHAR; + *what = *loc; + } + return (-1); + } + } + return (0); +} + + +/* + * Permissions set name must start with the letter '@' followed by the + * same character restrictions as snapshot names, except that the name + * cannot exceed 64 characters. + */ +int +permset_namecheck(const char *path, namecheck_err_t *why, char *what) +{ + if (strlen(path) >= ZFS_PERMSET_MAXLEN) { + if (why) + *why = NAME_ERR_TOOLONG; + return (-1); + } + + if (path[0] != '@') { + if (why) { + *why = NAME_ERR_NO_AT; + *what = path[0]; + } + return (-1); + } + + return (zfs_component_namecheck(&path[1], why, what)); +} + +/* + * Dataset names must be of the following form: + * + * [component][/]*[component][@component] + * + * Where each component is made up of alphanumeric characters plus the following + * characters: + * + * [-_.:%] + * + * We allow '%' here as we use that character internally to create unique + * names for temporary clones (for online recv). + */ +int +dataset_namecheck(const char *path, namecheck_err_t *why, char *what) +{ + const char *loc, *end; + int found_snapshot; + + /* + * Make sure the name is not too long. + * + * ZFS_MAXNAMELEN is the maximum dataset length used in the userland + * which is the same as MAXNAMELEN used in the kernel. + * If ZFS_MAXNAMELEN value is changed, make sure to cleanup all + * places using MAXNAMELEN. + * + * When HAVE_KOBJ_NAME_LEN is defined the maximum safe kobject name + * length is 20 bytes. This 20 bytes is broken down as follows to + * provide a maximum safe /[@snapshot] length of only + * 18 bytes. To ensure bytes are left for [@snapshot] the + * portition is futher limited to 9 bytes. For 2.6.27 and + * newer kernels this limit is set to MAXNAMELEN. + * + * / + + + * (18) + (1) + (1) + */ +#ifdef HAVE_KOBJ_NAME_LEN + if (strlen(path) > 18) { +#else + if (strlen(path) >= MAXNAMELEN) { +#endif /* HAVE_KOBJ_NAME_LEN */ + if (why) + *why = NAME_ERR_TOOLONG; + return (-1); + } + + /* Explicitly check for a leading slash. */ + if (path[0] == '/') { + if (why) + *why = NAME_ERR_LEADING_SLASH; + return (-1); + } + + if (path[0] == '\0') { + if (why) + *why = NAME_ERR_EMPTY_COMPONENT; + return (-1); + } + + loc = path; + found_snapshot = 0; + for (;;) { + /* Find the end of this component */ + end = loc; + while (*end != '/' && *end != '@' && *end != '\0') + end++; + + if (*end == '\0' && end[-1] == '/') { + /* trailing slashes are not allowed */ + if (why) + *why = NAME_ERR_TRAILING_SLASH; + return (-1); + } + + /* Zero-length components are not allowed */ + if (loc == end) { + if (why) { + /* + * Make sure this is really a zero-length + * component and not a '@@'. + */ + if (*end == '@' && found_snapshot) { + *why = NAME_ERR_MULTIPLE_AT; + } else { + *why = NAME_ERR_EMPTY_COMPONENT; + } + } + + return (-1); + } + + /* Validate the contents of this component */ + while (loc != end) { + if (!valid_char(*loc) && *loc != '%') { + if (why) { + *why = NAME_ERR_INVALCHAR; + *what = *loc; + } + return (-1); + } + loc++; + } + + /* If we've reached the end of the string, we're OK */ + if (*end == '\0') + return (0); + + if (*end == '@') { + /* + * If we've found an @ symbol, indicate that we're in + * the snapshot component, and report a second '@' + * character as an error. + */ + if (found_snapshot) { + if (why) + *why = NAME_ERR_MULTIPLE_AT; + return (-1); + } + + found_snapshot = 1; + } + + /* + * If there is a '/' in a snapshot name + * then report an error + */ + if (*end == '/' && found_snapshot) { + if (why) + *why = NAME_ERR_TRAILING_SLASH; + return (-1); + } + + /* Update to the next component */ + loc = end + 1; + } +} + + +/* + * mountpoint names must be of the following form: + * + * /[component][/]*[component][/] + */ +int +mountpoint_namecheck(const char *path, namecheck_err_t *why) +{ + const char *start, *end; + + /* + * Make sure none of the mountpoint component names are too long. + * If a component name is too long then the mkdir of the mountpoint + * will fail but then the mountpoint property will be set to a value + * that can never be mounted. Better to fail before setting the prop. + * Extra slashes are OK, they will be tossed by the mountpoint mkdir. + */ + + if (path == NULL || *path != '/') { + if (why) + *why = NAME_ERR_LEADING_SLASH; + return (-1); + } + + /* Skip leading slash */ + start = &path[1]; + do { + end = start; + while (*end != '/' && *end != '\0') + end++; + + if (end - start >= MAXNAMELEN) { + if (why) + *why = NAME_ERR_TOOLONG; + return (-1); + } + start = end + 1; + + } while (*end != '\0'); + + return (0); +} + +/* + * For pool names, we have the same set of valid characters as described in + * dataset names, with the additional restriction that the pool name must begin + * with a letter. The pool names 'raidz' and 'mirror' are also reserved names + * that cannot be used. + */ +int +pool_namecheck(const char *pool, namecheck_err_t *why, char *what) +{ + const char *c; + + /* + * Make sure the name is not too long. + * + * ZPOOL_MAXNAMELEN is the maximum pool length used in the userland + * which is the same as MAXNAMELEN used in the kernel. + * If ZPOOL_MAXNAMELEN value is changed, make sure to cleanup all + * places using MAXNAMELEN. + * + * When HAVE_KOBJ_NAME_LEN is defined the maximum safe kobject name + * length is 20 bytes. This 20 bytes is broken down as follows to + * provide a maximum safe /[@snapshot] length of only + * 18 bytes. To ensure bytes are left for [@snapshot] the + * portition is futher limited to 8 bytes. For 2.6.27 and + * newer kernels this limit is set to MAXNAMELEN. + * + * / + + + * (18) + (1) + (1) + */ +#ifdef HAVE_KOBJ_NAME_LEN + if (strlen(pool) > 8) { +#else + if (strlen(pool) >= MAXNAMELEN) { +#endif /* HAVE_KOBJ_NAME_LEN */ + if (why) + *why = NAME_ERR_TOOLONG; + return (-1); + } + + c = pool; + while (*c != '\0') { + if (!valid_char(*c)) { + if (why) { + *why = NAME_ERR_INVALCHAR; + *what = *c; + } + return (-1); + } + c++; + } + + if (!(*pool >= 'a' && *pool <= 'z') && + !(*pool >= 'A' && *pool <= 'Z')) { + if (why) + *why = NAME_ERR_NOLETTER; + return (-1); + } + + if (strcmp(pool, "mirror") == 0 || strcmp(pool, "raidz") == 0) { + if (why) + *why = NAME_ERR_RESERVED; + return (-1); + } + + if (pool[0] == 'c' && (pool[1] >= '0' && pool[1] <= '9')) { + if (why) + *why = NAME_ERR_DISKLIKE; + return (-1); + } + + return (0); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(pool_namecheck); +EXPORT_SYMBOL(dataset_namecheck); +EXPORT_SYMBOL(zfs_component_namecheck); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zfs_prop.c +++ linux-4.4.0/zfs/module/zcommon/zfs_prop.c @@ -0,0 +1,733 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#include +#include +#include +#include +#include +#include + +#include "zfs_prop.h" +#include "zfs_deleg.h" + +#if defined(_KERNEL) +#include +#else +#include +#include +#include +#endif + +static zprop_desc_t zfs_prop_table[ZFS_NUM_PROPS]; + +/* Note this is indexed by zfs_userquota_prop_t, keep the order the same */ +const char *zfs_userquota_prop_prefixes[] = { + "userused@", + "userquota@", + "groupused@", + "groupquota@" +}; + +zprop_desc_t * +zfs_prop_get_table(void) +{ + return (zfs_prop_table); +} + +void +zfs_prop_init(void) +{ + static zprop_index_t checksum_table[] = { + { "on", ZIO_CHECKSUM_ON }, + { "off", ZIO_CHECKSUM_OFF }, + { "fletcher2", ZIO_CHECKSUM_FLETCHER_2 }, + { "fletcher4", ZIO_CHECKSUM_FLETCHER_4 }, + { "sha256", ZIO_CHECKSUM_SHA256 }, + { NULL } + }; + + static zprop_index_t dedup_table[] = { + { "on", ZIO_CHECKSUM_ON }, + { "off", ZIO_CHECKSUM_OFF }, + { "verify", ZIO_CHECKSUM_ON | ZIO_CHECKSUM_VERIFY }, + { "sha256", ZIO_CHECKSUM_SHA256 }, + { "sha256,verify", + ZIO_CHECKSUM_SHA256 | ZIO_CHECKSUM_VERIFY }, + { NULL } + }; + + static zprop_index_t compress_table[] = { + { "on", ZIO_COMPRESS_ON }, + { "off", ZIO_COMPRESS_OFF }, + { "lzjb", ZIO_COMPRESS_LZJB }, + { "gzip", ZIO_COMPRESS_GZIP_6 }, /* gzip default */ + { "gzip-1", ZIO_COMPRESS_GZIP_1 }, + { "gzip-2", ZIO_COMPRESS_GZIP_2 }, + { "gzip-3", ZIO_COMPRESS_GZIP_3 }, + { "gzip-4", ZIO_COMPRESS_GZIP_4 }, + { "gzip-5", ZIO_COMPRESS_GZIP_5 }, + { "gzip-6", ZIO_COMPRESS_GZIP_6 }, + { "gzip-7", ZIO_COMPRESS_GZIP_7 }, + { "gzip-8", ZIO_COMPRESS_GZIP_8 }, + { "gzip-9", ZIO_COMPRESS_GZIP_9 }, + { "zle", ZIO_COMPRESS_ZLE }, + { "lz4", ZIO_COMPRESS_LZ4 }, + { NULL } + }; + + static zprop_index_t snapdir_table[] = { + { "hidden", ZFS_SNAPDIR_HIDDEN }, + { "visible", ZFS_SNAPDIR_VISIBLE }, + { NULL } + }; + + static zprop_index_t snapdev_table[] = { + { "hidden", ZFS_SNAPDEV_HIDDEN }, + { "visible", ZFS_SNAPDEV_VISIBLE }, + { NULL } + }; + + static zprop_index_t acltype_table[] = { + { "off", ZFS_ACLTYPE_OFF }, + { "disabled", ZFS_ACLTYPE_OFF }, + { "noacl", ZFS_ACLTYPE_OFF }, + { "posixacl", ZFS_ACLTYPE_POSIXACL }, + { NULL } + }; + + static zprop_index_t acl_inherit_table[] = { + { "discard", ZFS_ACL_DISCARD }, + { "noallow", ZFS_ACL_NOALLOW }, + { "restricted", ZFS_ACL_RESTRICTED }, + { "passthrough", ZFS_ACL_PASSTHROUGH }, + { "secure", ZFS_ACL_RESTRICTED }, /* bkwrd compatability */ + { "passthrough-x", ZFS_ACL_PASSTHROUGH_X }, + { NULL } + }; + + static zprop_index_t case_table[] = { + { "sensitive", ZFS_CASE_SENSITIVE }, + { "insensitive", ZFS_CASE_INSENSITIVE }, + { "mixed", ZFS_CASE_MIXED }, + { NULL } + }; + + static zprop_index_t copies_table[] = { + { "1", 1 }, + { "2", 2 }, + { "3", 3 }, + { NULL } + }; + + /* + * Use the unique flags we have to send to u8_strcmp() and/or + * u8_textprep() to represent the various normalization property + * values. + */ + static zprop_index_t normalize_table[] = { + { "none", 0 }, + { "formD", U8_TEXTPREP_NFD }, + { "formKC", U8_TEXTPREP_NFKC }, + { "formC", U8_TEXTPREP_NFC }, + { "formKD", U8_TEXTPREP_NFKD }, + { NULL } + }; + + static zprop_index_t version_table[] = { + { "1", 1 }, + { "2", 2 }, + { "3", 3 }, + { "4", 4 }, + { "5", 5 }, + { "current", ZPL_VERSION }, + { NULL } + }; + + static zprop_index_t boolean_table[] = { + { "off", 0 }, + { "on", 1 }, + { NULL } + }; + + static zprop_index_t logbias_table[] = { + { "latency", ZFS_LOGBIAS_LATENCY }, + { "throughput", ZFS_LOGBIAS_THROUGHPUT }, + { NULL } + }; + + static zprop_index_t canmount_table[] = { + { "off", ZFS_CANMOUNT_OFF }, + { "on", ZFS_CANMOUNT_ON }, + { "noauto", ZFS_CANMOUNT_NOAUTO }, + { NULL } + }; + + static zprop_index_t cache_table[] = { + { "none", ZFS_CACHE_NONE }, + { "metadata", ZFS_CACHE_METADATA }, + { "all", ZFS_CACHE_ALL }, + { NULL } + }; + + static zprop_index_t sync_table[] = { + { "standard", ZFS_SYNC_STANDARD }, + { "always", ZFS_SYNC_ALWAYS }, + { "disabled", ZFS_SYNC_DISABLED }, + { NULL } + }; + + static zprop_index_t xattr_table[] = { + { "off", ZFS_XATTR_OFF }, + { "on", ZFS_XATTR_DIR }, + { "sa", ZFS_XATTR_SA }, + { "dir", ZFS_XATTR_DIR }, + { NULL } + }; + + static zprop_index_t redundant_metadata_table[] = { + { "all", ZFS_REDUNDANT_METADATA_ALL }, + { "most", ZFS_REDUNDANT_METADATA_MOST }, + { NULL } + }; + + /* inherit index properties */ + zprop_register_index(ZFS_PROP_REDUNDANT_METADATA, "redundant_metadata", + ZFS_REDUNDANT_METADATA_ALL, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "all | most", "REDUND_MD", + redundant_metadata_table); + zprop_register_index(ZFS_PROP_SYNC, "sync", ZFS_SYNC_STANDARD, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "standard | always | disabled", "SYNC", + sync_table); + zprop_register_index(ZFS_PROP_CHECKSUM, "checksum", + ZIO_CHECKSUM_DEFAULT, PROP_INHERIT, ZFS_TYPE_FILESYSTEM | + ZFS_TYPE_VOLUME, + "on | off | fletcher2 | fletcher4 | sha256", "CHECKSUM", + checksum_table); + zprop_register_index(ZFS_PROP_DEDUP, "dedup", ZIO_CHECKSUM_OFF, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "on | off | verify | sha256[,verify]", "DEDUP", + dedup_table); + zprop_register_index(ZFS_PROP_COMPRESSION, "compression", + ZIO_COMPRESS_DEFAULT, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "on | off | lzjb | gzip | gzip-[1-9] | zle | lz4", "COMPRESS", + compress_table); + zprop_register_index(ZFS_PROP_SNAPDIR, "snapdir", ZFS_SNAPDIR_HIDDEN, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM, + "hidden | visible", "SNAPDIR", snapdir_table); + zprop_register_index(ZFS_PROP_SNAPDEV, "snapdev", ZFS_SNAPDEV_HIDDEN, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "hidden | visible", "SNAPDEV", snapdev_table); + zprop_register_index(ZFS_PROP_ACLTYPE, "acltype", ZFS_ACLTYPE_OFF, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, + "noacl | posixacl", "ACLTYPE", acltype_table); + zprop_register_index(ZFS_PROP_ACLINHERIT, "aclinherit", + ZFS_ACL_RESTRICTED, PROP_INHERIT, ZFS_TYPE_FILESYSTEM, + "discard | noallow | restricted | passthrough | passthrough-x", + "ACLINHERIT", acl_inherit_table); + zprop_register_index(ZFS_PROP_COPIES, "copies", 1, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "1 | 2 | 3", "COPIES", copies_table); + zprop_register_index(ZFS_PROP_PRIMARYCACHE, "primarycache", + ZFS_CACHE_ALL, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT | ZFS_TYPE_VOLUME, + "all | none | metadata", "PRIMARYCACHE", cache_table); + zprop_register_index(ZFS_PROP_SECONDARYCACHE, "secondarycache", + ZFS_CACHE_ALL, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT | ZFS_TYPE_VOLUME, + "all | none | metadata", "SECONDARYCACHE", cache_table); + zprop_register_index(ZFS_PROP_LOGBIAS, "logbias", ZFS_LOGBIAS_LATENCY, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "latency | throughput", "LOGBIAS", logbias_table); + zprop_register_index(ZFS_PROP_XATTR, "xattr", ZFS_XATTR_DIR, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, + "on | off | dir | sa", "XATTR", xattr_table); + + /* inherit index (boolean) properties */ + zprop_register_index(ZFS_PROP_ATIME, "atime", 1, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "on | off", "ATIME", boolean_table); + zprop_register_index(ZFS_PROP_RELATIME, "relatime", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "on | off", "RELATIME", boolean_table); + zprop_register_index(ZFS_PROP_DEVICES, "devices", 1, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "on | off", "DEVICES", + boolean_table); + zprop_register_index(ZFS_PROP_EXEC, "exec", 1, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "on | off", "EXEC", + boolean_table); + zprop_register_index(ZFS_PROP_SETUID, "setuid", 1, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "on | off", "SETUID", + boolean_table); + zprop_register_index(ZFS_PROP_READONLY, "readonly", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "on | off", "RDONLY", + boolean_table); + zprop_register_index(ZFS_PROP_ZONED, "zoned", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "on | off", "ZONED", boolean_table); + zprop_register_index(ZFS_PROP_VSCAN, "vscan", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "on | off", "VSCAN", boolean_table); + zprop_register_index(ZFS_PROP_NBMAND, "nbmand", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "on | off", "NBMAND", + boolean_table); + zprop_register_index(ZFS_PROP_OVERLAY, "overlay", 0, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "on | off", "OVERLAY", boolean_table); + + /* default index properties */ + zprop_register_index(ZFS_PROP_VERSION, "version", 0, PROP_DEFAULT, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, + "1 | 2 | 3 | 4 | 5 | current", "VERSION", version_table); + zprop_register_index(ZFS_PROP_CANMOUNT, "canmount", ZFS_CANMOUNT_ON, + PROP_DEFAULT, ZFS_TYPE_FILESYSTEM, "on | off | noauto", + "CANMOUNT", canmount_table); + + /* readonly index (boolean) properties */ + zprop_register_index(ZFS_PROP_MOUNTED, "mounted", 0, PROP_READONLY, + ZFS_TYPE_FILESYSTEM, "yes | no", "MOUNTED", boolean_table); + zprop_register_index(ZFS_PROP_DEFER_DESTROY, "defer_destroy", 0, + PROP_READONLY, ZFS_TYPE_SNAPSHOT, "yes | no", "DEFER_DESTROY", + boolean_table); + + /* set once index properties */ + zprop_register_index(ZFS_PROP_NORMALIZE, "normalization", 0, + PROP_ONETIME, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, + "none | formC | formD | formKC | formKD", "NORMALIZATION", + normalize_table); + zprop_register_index(ZFS_PROP_CASE, "casesensitivity", + ZFS_CASE_SENSITIVE, PROP_ONETIME, ZFS_TYPE_FILESYSTEM | + ZFS_TYPE_SNAPSHOT, + "sensitive | insensitive | mixed", "CASE", case_table); + + /* set once index (boolean) properties */ + zprop_register_index(ZFS_PROP_UTF8ONLY, "utf8only", 0, PROP_ONETIME, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, + "on | off", "UTF8ONLY", boolean_table); + + /* string properties */ + zprop_register_string(ZFS_PROP_ORIGIN, "origin", NULL, PROP_READONLY, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", "ORIGIN"); + zprop_register_string(ZFS_PROP_CLONES, "clones", NULL, PROP_READONLY, + ZFS_TYPE_SNAPSHOT, "[,...]", "CLONES"); + zprop_register_string(ZFS_PROP_MOUNTPOINT, "mountpoint", "/", + PROP_INHERIT, ZFS_TYPE_FILESYSTEM, " | legacy | none", + "MOUNTPOINT"); + zprop_register_string(ZFS_PROP_SHARENFS, "sharenfs", "off", + PROP_INHERIT, ZFS_TYPE_FILESYSTEM, "on | off | share(1M) options", + "SHARENFS"); + zprop_register_string(ZFS_PROP_TYPE, "type", NULL, PROP_READONLY, + ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, + "filesystem | volume | snapshot | bookmark", "TYPE"); + zprop_register_string(ZFS_PROP_SHARESMB, "sharesmb", "off", + PROP_INHERIT, ZFS_TYPE_FILESYSTEM, + "on | off | sharemgr(1M) options", "SHARESMB"); + zprop_register_string(ZFS_PROP_MLSLABEL, "mlslabel", + ZFS_MLSLABEL_DEFAULT, PROP_INHERIT, ZFS_TYPE_DATASET, + "", "MLSLABEL"); + zprop_register_string(ZFS_PROP_SELINUX_CONTEXT, "context", + "none", PROP_DEFAULT, ZFS_TYPE_DATASET, "", + "CONTEXT"); + zprop_register_string(ZFS_PROP_SELINUX_FSCONTEXT, "fscontext", + "none", PROP_DEFAULT, ZFS_TYPE_DATASET, "", + "FSCONTEXT"); + zprop_register_string(ZFS_PROP_SELINUX_DEFCONTEXT, "defcontext", + "none", PROP_DEFAULT, ZFS_TYPE_DATASET, "", + "DEFCONTEXT"); + zprop_register_string(ZFS_PROP_SELINUX_ROOTCONTEXT, "rootcontext", + "none", PROP_DEFAULT, ZFS_TYPE_DATASET, "", + "ROOTCONTEXT"); + + /* readonly number properties */ + zprop_register_number(ZFS_PROP_USED, "used", 0, PROP_READONLY, + ZFS_TYPE_DATASET, "", "USED"); + zprop_register_number(ZFS_PROP_AVAILABLE, "available", 0, PROP_READONLY, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", "AVAIL"); + zprop_register_number(ZFS_PROP_REFERENCED, "referenced", 0, + PROP_READONLY, ZFS_TYPE_DATASET, "", "REFER"); + zprop_register_number(ZFS_PROP_COMPRESSRATIO, "compressratio", 0, + PROP_READONLY, ZFS_TYPE_DATASET, + "<1.00x or higher if compressed>", "RATIO"); + zprop_register_number(ZFS_PROP_REFRATIO, "refcompressratio", 0, + PROP_READONLY, ZFS_TYPE_DATASET, + "<1.00x or higher if compressed>", "REFRATIO"); + zprop_register_number(ZFS_PROP_VOLBLOCKSIZE, "volblocksize", + ZVOL_DEFAULT_BLOCKSIZE, PROP_ONETIME, + ZFS_TYPE_VOLUME, "512 to 128k, power of 2", "VOLBLOCK"); + zprop_register_number(ZFS_PROP_USEDSNAP, "usedbysnapshots", 0, + PROP_READONLY, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", + "USEDSNAP"); + zprop_register_number(ZFS_PROP_USEDDS, "usedbydataset", 0, + PROP_READONLY, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", + "USEDDS"); + zprop_register_number(ZFS_PROP_USEDCHILD, "usedbychildren", 0, + PROP_READONLY, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", + "USEDCHILD"); + zprop_register_number(ZFS_PROP_USEDREFRESERV, "usedbyrefreservation", 0, + PROP_READONLY, + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "", "USEDREFRESERV"); + zprop_register_number(ZFS_PROP_USERREFS, "userrefs", 0, PROP_READONLY, + ZFS_TYPE_SNAPSHOT, "", "USERREFS"); + zprop_register_number(ZFS_PROP_WRITTEN, "written", 0, PROP_READONLY, + ZFS_TYPE_DATASET, "", "WRITTEN"); + zprop_register_number(ZFS_PROP_LOGICALUSED, "logicalused", 0, + PROP_READONLY, ZFS_TYPE_DATASET, "", "LUSED"); + zprop_register_number(ZFS_PROP_LOGICALREFERENCED, "logicalreferenced", + 0, PROP_READONLY, ZFS_TYPE_DATASET, "", "LREFER"); + + /* default number properties */ + zprop_register_number(ZFS_PROP_QUOTA, "quota", 0, PROP_DEFAULT, + ZFS_TYPE_FILESYSTEM, " | none", "QUOTA"); + zprop_register_number(ZFS_PROP_RESERVATION, "reservation", 0, + PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + " | none", "RESERV"); + zprop_register_number(ZFS_PROP_VOLSIZE, "volsize", 0, PROP_DEFAULT, + ZFS_TYPE_SNAPSHOT | ZFS_TYPE_VOLUME, "", "VOLSIZE"); + zprop_register_number(ZFS_PROP_REFQUOTA, "refquota", 0, PROP_DEFAULT, + ZFS_TYPE_FILESYSTEM, " | none", "REFQUOTA"); + zprop_register_number(ZFS_PROP_REFRESERVATION, "refreservation", 0, + PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + " | none", "REFRESERV"); + zprop_register_number(ZFS_PROP_FILESYSTEM_LIMIT, "filesystem_limit", + UINT64_MAX, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM, + " | none", "FSLIMIT"); + zprop_register_number(ZFS_PROP_SNAPSHOT_LIMIT, "snapshot_limit", + UINT64_MAX, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + " | none", "SSLIMIT"); + zprop_register_number(ZFS_PROP_FILESYSTEM_COUNT, "filesystem_count", + UINT64_MAX, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM, + "", "FSCOUNT"); + zprop_register_number(ZFS_PROP_SNAPSHOT_COUNT, "snapshot_count", + UINT64_MAX, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, + "", "SSCOUNT"); + + /* inherit number properties */ + zprop_register_number(ZFS_PROP_RECORDSIZE, "recordsize", + SPA_OLD_MAXBLOCKSIZE, PROP_INHERIT, + ZFS_TYPE_FILESYSTEM, "512 to 1M, power of 2", "RECSIZE"); + + /* hidden properties */ + zprop_register_hidden(ZFS_PROP_CREATETXG, "createtxg", PROP_TYPE_NUMBER, + PROP_READONLY, ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, "CREATETXG"); + zprop_register_hidden(ZFS_PROP_NUMCLONES, "numclones", PROP_TYPE_NUMBER, + PROP_READONLY, ZFS_TYPE_SNAPSHOT, "NUMCLONES"); + zprop_register_hidden(ZFS_PROP_NAME, "name", PROP_TYPE_STRING, + PROP_READONLY, ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, "NAME"); + zprop_register_hidden(ZFS_PROP_ISCSIOPTIONS, "iscsioptions", + PROP_TYPE_STRING, PROP_INHERIT, ZFS_TYPE_VOLUME, "ISCSIOPTIONS"); + zprop_register_hidden(ZFS_PROP_STMF_SHAREINFO, "stmf_sbd_lu", + PROP_TYPE_STRING, PROP_INHERIT, ZFS_TYPE_VOLUME, + "STMF_SBD_LU"); + zprop_register_hidden(ZFS_PROP_GUID, "guid", PROP_TYPE_NUMBER, + PROP_READONLY, ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, "GUID"); + zprop_register_hidden(ZFS_PROP_USERACCOUNTING, "useraccounting", + PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_DATASET, + "USERACCOUNTING"); + zprop_register_hidden(ZFS_PROP_UNIQUE, "unique", PROP_TYPE_NUMBER, + PROP_READONLY, ZFS_TYPE_DATASET, "UNIQUE"); + zprop_register_hidden(ZFS_PROP_OBJSETID, "objsetid", PROP_TYPE_NUMBER, + PROP_READONLY, ZFS_TYPE_DATASET, "OBJSETID"); + zprop_register_hidden(ZFS_PROP_INCONSISTENT, "inconsistent", + PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_DATASET, "INCONSISTENT"); + + /* + * Property to be removed once libbe is integrated + */ + zprop_register_hidden(ZFS_PROP_PRIVATE, "priv_prop", + PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_FILESYSTEM, + "PRIV_PROP"); + + /* oddball properties */ + zprop_register_impl(ZFS_PROP_CREATION, "creation", PROP_TYPE_NUMBER, 0, + NULL, PROP_READONLY, ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, + "", "CREATION", B_FALSE, B_TRUE, NULL); +} + +boolean_t +zfs_prop_delegatable(zfs_prop_t prop) +{ + zprop_desc_t *pd = &zfs_prop_table[prop]; + + /* The mlslabel property is never delegatable. */ + if (prop == ZFS_PROP_MLSLABEL) + return (B_FALSE); + + return (pd->pd_attr != PROP_READONLY); +} + +/* + * Given a zfs dataset property name, returns the corresponding property ID. + */ +zfs_prop_t +zfs_name_to_prop(const char *propname) +{ + return (zprop_name_to_prop(propname, ZFS_TYPE_DATASET)); +} + +/* + * For user property names, we allow all lowercase alphanumeric characters, plus + * a few useful punctuation characters. + */ +static int +valid_char(char c) +{ + return ((c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || + c == '-' || c == '_' || c == '.' || c == ':'); +} + +/* + * Returns true if this is a valid user-defined property (one with a ':'). + */ +boolean_t +zfs_prop_user(const char *name) +{ + int i; + char c; + boolean_t foundsep = B_FALSE; + + for (i = 0; i < strlen(name); i++) { + c = name[i]; + if (!valid_char(c)) + return (B_FALSE); + if (c == ':') + foundsep = B_TRUE; + } + + if (!foundsep) + return (B_FALSE); + + return (B_TRUE); +} + +/* + * Returns true if this is a valid userspace-type property (one with a '@'). + * Note that after the @, any character is valid (eg, another @, for SID + * user@domain). + */ +boolean_t +zfs_prop_userquota(const char *name) +{ + zfs_userquota_prop_t prop; + + for (prop = 0; prop < ZFS_NUM_USERQUOTA_PROPS; prop++) { + if (strncmp(name, zfs_userquota_prop_prefixes[prop], + strlen(zfs_userquota_prop_prefixes[prop])) == 0) { + return (B_TRUE); + } + } + + return (B_FALSE); +} + +/* + * Returns true if this is a valid written@ property. + * Note that after the @, any character is valid (eg, another @, for + * written@pool/fs@origin). + */ +boolean_t +zfs_prop_written(const char *name) +{ + static const char *prefix = "written@"; + return (strncmp(name, prefix, strlen(prefix)) == 0); +} + +/* + * Tables of index types, plus functions to convert between the user view + * (strings) and internal representation (uint64_t). + */ +int +zfs_prop_string_to_index(zfs_prop_t prop, const char *string, uint64_t *index) +{ + return (zprop_string_to_index(prop, string, index, ZFS_TYPE_DATASET)); +} + +int +zfs_prop_index_to_string(zfs_prop_t prop, uint64_t index, const char **string) +{ + return (zprop_index_to_string(prop, index, string, ZFS_TYPE_DATASET)); +} + +uint64_t +zfs_prop_random_value(zfs_prop_t prop, uint64_t seed) +{ + return (zprop_random_value(prop, seed, ZFS_TYPE_DATASET)); +} + +/* + * Returns TRUE if the property applies to any of the given dataset types. + */ +boolean_t +zfs_prop_valid_for_type(int prop, zfs_type_t types, boolean_t headcheck) +{ + return (zprop_valid_for_type(prop, types, headcheck)); +} + +zprop_type_t +zfs_prop_get_type(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_proptype); +} + +/* + * Returns TRUE if the property is readonly. + */ +boolean_t +zfs_prop_readonly(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_attr == PROP_READONLY || + zfs_prop_table[prop].pd_attr == PROP_ONETIME); +} + +/* + * Returns TRUE if the property is only allowed to be set once. + */ +boolean_t +zfs_prop_setonce(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_attr == PROP_ONETIME); +} + +const char * +zfs_prop_default_string(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_strdefault); +} + +uint64_t +zfs_prop_default_numeric(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_numdefault); +} + +/* + * Given a dataset property ID, returns the corresponding name. + * Assuming the zfs dataset property ID is valid. + */ +const char * +zfs_prop_to_name(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_name); +} + +/* + * Returns TRUE if the property is inheritable. + */ +boolean_t +zfs_prop_inheritable(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_attr == PROP_INHERIT || + zfs_prop_table[prop].pd_attr == PROP_ONETIME); +} + +#ifndef _KERNEL + +/* + * Returns a string describing the set of acceptable values for the given + * zfs property, or NULL if it cannot be set. + */ +const char * +zfs_prop_values(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_values); +} + +/* + * Returns TRUE if this property is a string type. Note that index types + * (compression, checksum) are treated as strings in userland, even though they + * are stored numerically on disk. + */ +int +zfs_prop_is_string(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_proptype == PROP_TYPE_STRING || + zfs_prop_table[prop].pd_proptype == PROP_TYPE_INDEX); +} + +/* + * Returns the column header for the given property. Used only in + * 'zfs list -o', but centralized here with the other property information. + */ +const char * +zfs_prop_column_name(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_colname); +} + +/* + * Returns whether the given property should be displayed right-justified for + * 'zfs list'. + */ +boolean_t +zfs_prop_align_right(zfs_prop_t prop) +{ + return (zfs_prop_table[prop].pd_rightalign); +} + +#endif + +#if defined(_KERNEL) && defined(HAVE_SPL) +static int __init +zcommon_init(void) +{ + return (0); +} + +static void __exit +zcommon_fini(void) +{ +} + +module_init(zcommon_init); +module_exit(zcommon_fini); + +MODULE_DESCRIPTION("Generic ZFS support"); +MODULE_AUTHOR(ZFS_META_AUTHOR); +MODULE_LICENSE(ZFS_META_LICENSE); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); + +/* zfs dataset property functions */ +EXPORT_SYMBOL(zfs_userquota_prop_prefixes); +EXPORT_SYMBOL(zfs_prop_init); +EXPORT_SYMBOL(zfs_prop_get_type); +EXPORT_SYMBOL(zfs_prop_get_table); +EXPORT_SYMBOL(zfs_prop_delegatable); + +/* Dataset property functions shared between libzfs and kernel. */ +EXPORT_SYMBOL(zfs_prop_default_string); +EXPORT_SYMBOL(zfs_prop_default_numeric); +EXPORT_SYMBOL(zfs_prop_readonly); +EXPORT_SYMBOL(zfs_prop_inheritable); +EXPORT_SYMBOL(zfs_prop_setonce); +EXPORT_SYMBOL(zfs_prop_to_name); +EXPORT_SYMBOL(zfs_name_to_prop); +EXPORT_SYMBOL(zfs_prop_user); +EXPORT_SYMBOL(zfs_prop_userquota); +EXPORT_SYMBOL(zfs_prop_index_to_string); +EXPORT_SYMBOL(zfs_prop_string_to_index); +EXPORT_SYMBOL(zfs_prop_valid_for_type); + +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zfs_uio.c +++ linux-4.4.0/zfs/module/zcommon/zfs_uio.c @@ -0,0 +1,257 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +/* + * University Copyright- Copyright (c) 1982, 1986, 1988 + * The Regents of the University of California + * All Rights Reserved + * + * University Acknowledgment- Portions of this document are derived from + * software developed by the University of California, Berkeley, and its + * contributors. + */ +/* + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + +/* + * The uio support from OpenSolaris has been added as a short term + * work around. The hope is to adopt native Linux type and drop the + * use of uio's entirely. Under Linux they only add overhead and + * when possible we want to use native APIs for the ZPL layer. + */ +#ifdef _KERNEL + +#include +#include +#include + +/* + * Move "n" bytes at byte address "p"; "rw" indicates the direction + * of the move, and the I/O parameters are provided in "uio", which is + * update to reflect the data which was moved. Returns 0 on success or + * a non-zero errno on failure. + */ +static int +uiomove_iov(void *p, size_t n, enum uio_rw rw, struct uio *uio) +{ + const struct iovec *iov = uio->uio_iov; + size_t skip = uio->uio_skip; + ulong_t cnt; + + while (n && uio->uio_resid) { + cnt = MIN(iov->iov_len - skip, n); + switch (uio->uio_segflg) { + case UIO_USERSPACE: + case UIO_USERISPACE: + /* + * p = kernel data pointer + * iov->iov_base = user data pointer + */ + if (rw == UIO_READ) { + if (copy_to_user(iov->iov_base+skip, p, cnt)) + return (EFAULT); + } else { + if (copy_from_user(p, iov->iov_base+skip, cnt)) + return (EFAULT); + } + break; + case UIO_SYSSPACE: + if (rw == UIO_READ) + bcopy(p, iov->iov_base + skip, cnt); + else + bcopy(iov->iov_base + skip, p, cnt); + break; + default: + ASSERT(0); + } + skip += cnt; + if (skip == iov->iov_len) { + skip = 0; + uio->uio_iov = (++iov); + uio->uio_iovcnt--; + } + uio->uio_skip = skip; + uio->uio_resid -= cnt; + uio->uio_loffset += cnt; + p = (caddr_t)p + cnt; + n -= cnt; + } + return (0); +} + +static int +uiomove_bvec(void *p, size_t n, enum uio_rw rw, struct uio *uio) +{ + const struct bio_vec *bv = uio->uio_bvec; + size_t skip = uio->uio_skip; + ulong_t cnt; + + while (n && uio->uio_resid) { + void *paddr; + cnt = MIN(bv->bv_len - skip, n); + + paddr = zfs_kmap_atomic(bv->bv_page, KM_USER1); + if (rw == UIO_READ) + bcopy(p, paddr + bv->bv_offset + skip, cnt); + else + bcopy(paddr + bv->bv_offset + skip, p, cnt); + zfs_kunmap_atomic(paddr, KM_USER1); + + skip += cnt; + if (skip == bv->bv_len) { + skip = 0; + uio->uio_bvec = (++bv); + uio->uio_iovcnt--; + } + uio->uio_skip = skip; + uio->uio_resid -= cnt; + uio->uio_loffset += cnt; + p = (caddr_t)p + cnt; + n -= cnt; + } + return (0); +} + +int +uiomove(void *p, size_t n, enum uio_rw rw, struct uio *uio) +{ + if (uio->uio_segflg != UIO_BVEC) + return (uiomove_iov(p, n, rw, uio)); + else + return (uiomove_bvec(p, n, rw, uio)); +} +EXPORT_SYMBOL(uiomove); + +#define fuword8(uptr, vptr) get_user((*vptr), (uptr)) + +/* + * Fault in the pages of the first n bytes specified by the uio structure. + * 1 byte in each page is touched and the uio struct is unmodified. Any + * error will terminate the process as this is only a best attempt to get + * the pages resident. + */ +void +uio_prefaultpages(ssize_t n, struct uio *uio) +{ + const struct iovec *iov; + ulong_t cnt, incr; + caddr_t p; + uint8_t tmp; + int iovcnt; + size_t skip = uio->uio_skip; + + /* no need to fault in kernel pages */ + switch (uio->uio_segflg) { + case UIO_SYSSPACE: + case UIO_BVEC: + return; + case UIO_USERSPACE: + case UIO_USERISPACE: + break; + default: + ASSERT(0); + } + + iov = uio->uio_iov; + iovcnt = uio->uio_iovcnt; + + while ((n > 0) && (iovcnt > 0)) { + cnt = MIN(iov->iov_len - skip, n); + n -= cnt; + /* + * touch each page in this segment. + */ + p = iov->iov_base + skip; + while (cnt) { + if (fuword8((uint8_t *) p, &tmp)) + return; + incr = MIN(cnt, PAGESIZE); + p += incr; + cnt -= incr; + } + /* + * touch the last byte in case it straddles a page. + */ + p--; + if (fuword8((uint8_t *) p, &tmp)) + return; + iov++; + iovcnt--; + skip = 0; + } +} +EXPORT_SYMBOL(uio_prefaultpages); + +/* + * same as uiomove() but doesn't modify uio structure. + * return in cbytes how many bytes were copied. + */ +int +uiocopy(void *p, size_t n, enum uio_rw rw, struct uio *uio, size_t *cbytes) +{ + struct uio uio_copy; + int ret; + + bcopy(uio, &uio_copy, sizeof (struct uio)); + ret = uiomove(p, n, rw, &uio_copy); + *cbytes = uio->uio_resid - uio_copy.uio_resid; + return (ret); +} +EXPORT_SYMBOL(uiocopy); + +/* + * Drop the next n chars out of *uiop. + */ +void +uioskip(uio_t *uiop, size_t n) +{ + if (n > uiop->uio_resid) + return; + + uiop->uio_skip += n; + if (uiop->uio_segflg != UIO_BVEC) { + while (uiop->uio_iovcnt && + uiop->uio_skip >= uiop->uio_iov->iov_len) { + uiop->uio_skip -= uiop->uio_iov->iov_len; + uiop->uio_iov++; + uiop->uio_iovcnt--; + } + } else { + while (uiop->uio_iovcnt && + uiop->uio_skip >= uiop->uio_bvec->bv_len) { + uiop->uio_skip -= uiop->uio_bvec->bv_len; + uiop->uio_bvec++; + uiop->uio_iovcnt--; + } + } + uiop->uio_loffset += n; + uiop->uio_resid -= n; +} +EXPORT_SYMBOL(uioskip); +#endif /* _KERNEL */ --- linux-4.4.0.orig/zfs/module/zcommon/zpool_prop.c +++ linux-4.4.0/zfs/module/zcommon/zpool_prop.c @@ -0,0 +1,260 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include + +#include "zfs_prop.h" + +#if defined(_KERNEL) +#include +#else +#include +#include +#include +#endif + +static zprop_desc_t zpool_prop_table[ZPOOL_NUM_PROPS]; + +zprop_desc_t * +zpool_prop_get_table(void) +{ + return (zpool_prop_table); +} + +void +zpool_prop_init(void) +{ + static zprop_index_t boolean_table[] = { + { "off", 0}, + { "on", 1}, + { NULL } + }; + + static zprop_index_t failuremode_table[] = { + { "wait", ZIO_FAILURE_MODE_WAIT }, + { "continue", ZIO_FAILURE_MODE_CONTINUE }, + { "panic", ZIO_FAILURE_MODE_PANIC }, + { NULL } + }; + + /* string properties */ + zprop_register_string(ZPOOL_PROP_ALTROOT, "altroot", NULL, PROP_DEFAULT, + ZFS_TYPE_POOL, "", "ALTROOT"); + zprop_register_string(ZPOOL_PROP_BOOTFS, "bootfs", NULL, PROP_DEFAULT, + ZFS_TYPE_POOL, "", "BOOTFS"); + zprop_register_string(ZPOOL_PROP_CACHEFILE, "cachefile", NULL, + PROP_DEFAULT, ZFS_TYPE_POOL, " | none", "CACHEFILE"); + zprop_register_string(ZPOOL_PROP_COMMENT, "comment", NULL, + PROP_DEFAULT, ZFS_TYPE_POOL, "", "COMMENT"); + + /* readonly number properties */ + zprop_register_number(ZPOOL_PROP_SIZE, "size", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "SIZE"); + zprop_register_number(ZPOOL_PROP_FREE, "free", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "FREE"); + zprop_register_number(ZPOOL_PROP_FREEING, "freeing", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "FREEING"); + zprop_register_number(ZPOOL_PROP_LEAKED, "leaked", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "LEAKED"); + zprop_register_number(ZPOOL_PROP_ALLOCATED, "allocated", 0, + PROP_READONLY, ZFS_TYPE_POOL, "", "ALLOC"); + zprop_register_number(ZPOOL_PROP_EXPANDSZ, "expandsize", 0, + PROP_READONLY, ZFS_TYPE_POOL, "", "EXPANDSZ"); + zprop_register_number(ZPOOL_PROP_FRAGMENTATION, "fragmentation", 0, + PROP_READONLY, ZFS_TYPE_POOL, "", "FRAG"); + zprop_register_number(ZPOOL_PROP_CAPACITY, "capacity", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "CAP"); + zprop_register_number(ZPOOL_PROP_GUID, "guid", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "GUID"); + zprop_register_number(ZPOOL_PROP_HEALTH, "health", 0, PROP_READONLY, + ZFS_TYPE_POOL, "", "HEALTH"); + zprop_register_number(ZPOOL_PROP_DEDUPRATIO, "dedupratio", 0, + PROP_READONLY, ZFS_TYPE_POOL, "<1.00x or higher if deduped>", + "DEDUP"); + + /* readonly onetime number properties */ + zprop_register_number(ZPOOL_PROP_ASHIFT, "ashift", 0, PROP_ONETIME, + ZFS_TYPE_POOL, "", "ASHIFT"); + + /* default number properties */ + zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION, + PROP_DEFAULT, ZFS_TYPE_POOL, "", "VERSION"); + zprop_register_number(ZPOOL_PROP_DEDUPDITTO, "dedupditto", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "", "DEDUPDITTO"); + + /* default index (boolean) properties */ + zprop_register_index(ZPOOL_PROP_DELEGATION, "delegation", 1, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "DELEGATION", + boolean_table); + zprop_register_index(ZPOOL_PROP_AUTOREPLACE, "autoreplace", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "REPLACE", boolean_table); + zprop_register_index(ZPOOL_PROP_LISTSNAPS, "listsnapshots", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "LISTSNAPS", + boolean_table); + zprop_register_index(ZPOOL_PROP_AUTOEXPAND, "autoexpand", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "EXPAND", boolean_table); + zprop_register_index(ZPOOL_PROP_READONLY, "readonly", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "RDONLY", boolean_table); + + /* default index properties */ + zprop_register_index(ZPOOL_PROP_FAILUREMODE, "failmode", + ZIO_FAILURE_MODE_WAIT, PROP_DEFAULT, ZFS_TYPE_POOL, + "wait | continue | panic", "FAILMODE", failuremode_table); + + /* hidden properties */ + zprop_register_hidden(ZPOOL_PROP_NAME, "name", PROP_TYPE_STRING, + PROP_READONLY, ZFS_TYPE_POOL, "NAME"); + zprop_register_hidden(ZPOOL_PROP_MAXBLOCKSIZE, "maxblocksize", + PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_POOL, "MAXBLOCKSIZE"); + zprop_register_hidden(ZPOOL_PROP_TNAME, "tname", PROP_TYPE_STRING, + PROP_ONETIME, ZFS_TYPE_POOL, "TNAME"); +} + +/* + * Given a property name and its type, returns the corresponding property ID. + */ +zpool_prop_t +zpool_name_to_prop(const char *propname) +{ + return (zprop_name_to_prop(propname, ZFS_TYPE_POOL)); +} + +/* + * Given a pool property ID, returns the corresponding name. + * Assuming the pool propety ID is valid. + */ +const char * +zpool_prop_to_name(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_name); +} + +zprop_type_t +zpool_prop_get_type(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_proptype); +} + +boolean_t +zpool_prop_readonly(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_attr == PROP_READONLY); +} + +const char * +zpool_prop_default_string(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_strdefault); +} + +uint64_t +zpool_prop_default_numeric(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_numdefault); +} + +/* + * Returns true if this is a valid feature@ property. + */ +boolean_t +zpool_prop_feature(const char *name) +{ + static const char *prefix = "feature@"; + return (strncmp(name, prefix, strlen(prefix)) == 0); +} + +/* + * Returns true if this is a valid unsupported@ property. + */ +boolean_t +zpool_prop_unsupported(const char *name) +{ + static const char *prefix = "unsupported@"; + return (strncmp(name, prefix, strlen(prefix)) == 0); +} + +int +zpool_prop_string_to_index(zpool_prop_t prop, const char *string, + uint64_t *index) +{ + return (zprop_string_to_index(prop, string, index, ZFS_TYPE_POOL)); +} + +int +zpool_prop_index_to_string(zpool_prop_t prop, uint64_t index, + const char **string) +{ + return (zprop_index_to_string(prop, index, string, ZFS_TYPE_POOL)); +} + +uint64_t +zpool_prop_random_value(zpool_prop_t prop, uint64_t seed) +{ + return (zprop_random_value(prop, seed, ZFS_TYPE_POOL)); +} + +#ifndef _KERNEL + +const char * +zpool_prop_values(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_values); +} + +const char * +zpool_prop_column_name(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_colname); +} + +boolean_t +zpool_prop_align_right(zpool_prop_t prop) +{ + return (zpool_prop_table[prop].pd_rightalign); +} +#endif + +#if defined(_KERNEL) && defined(HAVE_SPL) +/* zpool property functions */ +EXPORT_SYMBOL(zpool_prop_init); +EXPORT_SYMBOL(zpool_prop_get_type); +EXPORT_SYMBOL(zpool_prop_get_table); + +/* Pool property functions shared between libzfs and kernel. */ +EXPORT_SYMBOL(zpool_name_to_prop); +EXPORT_SYMBOL(zpool_prop_to_name); +EXPORT_SYMBOL(zpool_prop_default_string); +EXPORT_SYMBOL(zpool_prop_default_numeric); +EXPORT_SYMBOL(zpool_prop_readonly); +EXPORT_SYMBOL(zpool_prop_feature); +EXPORT_SYMBOL(zpool_prop_unsupported); +EXPORT_SYMBOL(zpool_prop_index_to_string); +EXPORT_SYMBOL(zpool_prop_string_to_index); +#endif --- linux-4.4.0.orig/zfs/module/zcommon/zprop_common.c +++ linux-4.4.0/zfs/module/zcommon/zprop_common.c @@ -0,0 +1,454 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +/* + * Common routines used by zfs and zpool property management. + */ + +#include +#include +#include +#include +#include +#include + +#include "zfs_prop.h" +#include "zfs_deleg.h" + +#if defined(_KERNEL) +#include +#include +#else +#include +#include +#include +#endif + +static zprop_desc_t * +zprop_get_proptable(zfs_type_t type) +{ + if (type == ZFS_TYPE_POOL) + return (zpool_prop_get_table()); + else + return (zfs_prop_get_table()); +} + +static int +zprop_get_numprops(zfs_type_t type) +{ + if (type == ZFS_TYPE_POOL) + return (ZPOOL_NUM_PROPS); + else + return (ZFS_NUM_PROPS); +} + +void +zprop_register_impl(int prop, const char *name, zprop_type_t type, + uint64_t numdefault, const char *strdefault, zprop_attr_t attr, + int objset_types, const char *values, const char *colname, + boolean_t rightalign, boolean_t visible, const zprop_index_t *idx_tbl) +{ + zprop_desc_t *prop_tbl = zprop_get_proptable(objset_types); + zprop_desc_t *pd; + + pd = &prop_tbl[prop]; + + ASSERT(pd->pd_name == NULL || pd->pd_name == name); + ASSERT(name != NULL); + ASSERT(colname != NULL); + + pd->pd_name = name; + pd->pd_propnum = prop; + pd->pd_proptype = type; + pd->pd_numdefault = numdefault; + pd->pd_strdefault = strdefault; + pd->pd_attr = attr; + pd->pd_types = objset_types; + pd->pd_values = values; + pd->pd_colname = colname; + pd->pd_rightalign = rightalign; + pd->pd_visible = visible; + pd->pd_table = idx_tbl; + pd->pd_table_size = 0; + while (idx_tbl && (idx_tbl++)->pi_name != NULL) + pd->pd_table_size++; +} + +void +zprop_register_string(int prop, const char *name, const char *def, + zprop_attr_t attr, int objset_types, const char *values, + const char *colname) +{ + zprop_register_impl(prop, name, PROP_TYPE_STRING, 0, def, attr, + objset_types, values, colname, B_FALSE, B_TRUE, NULL); + +} + +void +zprop_register_number(int prop, const char *name, uint64_t def, + zprop_attr_t attr, int objset_types, const char *values, + const char *colname) +{ + zprop_register_impl(prop, name, PROP_TYPE_NUMBER, def, NULL, attr, + objset_types, values, colname, B_TRUE, B_TRUE, NULL); +} + +void +zprop_register_index(int prop, const char *name, uint64_t def, + zprop_attr_t attr, int objset_types, const char *values, + const char *colname, const zprop_index_t *idx_tbl) +{ + zprop_register_impl(prop, name, PROP_TYPE_INDEX, def, NULL, attr, + objset_types, values, colname, B_TRUE, B_TRUE, idx_tbl); +} + +void +zprop_register_hidden(int prop, const char *name, zprop_type_t type, + zprop_attr_t attr, int objset_types, const char *colname) +{ + zprop_register_impl(prop, name, type, 0, NULL, attr, + objset_types, NULL, colname, + type == PROP_TYPE_NUMBER, B_FALSE, NULL); +} + + +/* + * A comparison function we can use to order indexes into property tables. + */ +static int +zprop_compare(const void *arg1, const void *arg2) +{ + const zprop_desc_t *p1 = *((zprop_desc_t **)arg1); + const zprop_desc_t *p2 = *((zprop_desc_t **)arg2); + boolean_t p1ro, p2ro; + + p1ro = (p1->pd_attr == PROP_READONLY); + p2ro = (p2->pd_attr == PROP_READONLY); + + if (p1ro == p2ro) + return (strcmp(p1->pd_name, p2->pd_name)); + + return (p1ro ? -1 : 1); +} + +/* + * Iterate over all properties in the given property table, calling back + * into the specified function for each property. We will continue to + * iterate until we either reach the end or the callback function returns + * something other than ZPROP_CONT. + */ +int +zprop_iter_common(zprop_func func, void *cb, boolean_t show_all, + boolean_t ordered, zfs_type_t type) +{ + int i, j, num_props, size, prop; + zprop_desc_t *prop_tbl; + zprop_desc_t **order; + + prop_tbl = zprop_get_proptable(type); + num_props = zprop_get_numprops(type); + size = num_props * sizeof (zprop_desc_t *); + +#if defined(_KERNEL) + order = kmem_alloc(size, KM_SLEEP); +#else + if ((order = malloc(size)) == NULL) + return (ZPROP_CONT); +#endif + + for (j = 0; j < num_props; j++) + order[j] = &prop_tbl[j]; + + if (ordered) { + qsort((void *)order, num_props, sizeof (zprop_desc_t *), + zprop_compare); + } + + prop = ZPROP_CONT; + for (i = 0; i < num_props; i++) { + if ((order[i]->pd_visible || show_all) && + (func(order[i]->pd_propnum, cb) != ZPROP_CONT)) { + prop = order[i]->pd_propnum; + break; + } + } + +#if defined(_KERNEL) + kmem_free(order, size); +#else + free(order); +#endif + return (prop); +} + +static boolean_t +propname_match(const char *p, size_t len, zprop_desc_t *prop_entry) +{ + const char *propname = prop_entry->pd_name; +#ifndef _KERNEL + const char *colname = prop_entry->pd_colname; + int c; +#endif + + if (len == strlen(propname) && + strncmp(p, propname, len) == 0) + return (B_TRUE); + +#ifndef _KERNEL + if (colname == NULL || len != strlen(colname)) + return (B_FALSE); + + for (c = 0; c < len; c++) + if (p[c] != tolower(colname[c])) + break; + + return (colname[c] == '\0'); +#else + return (B_FALSE); +#endif +} + +typedef struct name_to_prop_cb { + const char *propname; + zprop_desc_t *prop_tbl; +} name_to_prop_cb_t; + +static int +zprop_name_to_prop_cb(int prop, void *cb_data) +{ + name_to_prop_cb_t *data = cb_data; + + if (propname_match(data->propname, strlen(data->propname), + &data->prop_tbl[prop])) + return (prop); + + return (ZPROP_CONT); +} + +int +zprop_name_to_prop(const char *propname, zfs_type_t type) +{ + int prop; + name_to_prop_cb_t cb_data; + + cb_data.propname = propname; + cb_data.prop_tbl = zprop_get_proptable(type); + + prop = zprop_iter_common(zprop_name_to_prop_cb, &cb_data, + B_TRUE, B_FALSE, type); + + return (prop == ZPROP_CONT ? ZPROP_INVAL : prop); +} + +int +zprop_string_to_index(int prop, const char *string, uint64_t *index, + zfs_type_t type) +{ + zprop_desc_t *prop_tbl; + const zprop_index_t *idx_tbl; + int i; + + if (prop == ZPROP_INVAL || prop == ZPROP_CONT) + return (-1); + + ASSERT(prop < zprop_get_numprops(type)); + prop_tbl = zprop_get_proptable(type); + if ((idx_tbl = prop_tbl[prop].pd_table) == NULL) + return (-1); + + for (i = 0; idx_tbl[i].pi_name != NULL; i++) { + if (strcmp(string, idx_tbl[i].pi_name) == 0) { + *index = idx_tbl[i].pi_value; + return (0); + } + } + + return (-1); +} + +int +zprop_index_to_string(int prop, uint64_t index, const char **string, + zfs_type_t type) +{ + zprop_desc_t *prop_tbl; + const zprop_index_t *idx_tbl; + int i; + + if (prop == ZPROP_INVAL || prop == ZPROP_CONT) + return (-1); + + ASSERT(prop < zprop_get_numprops(type)); + prop_tbl = zprop_get_proptable(type); + if ((idx_tbl = prop_tbl[prop].pd_table) == NULL) + return (-1); + + for (i = 0; idx_tbl[i].pi_name != NULL; i++) { + if (idx_tbl[i].pi_value == index) { + *string = idx_tbl[i].pi_name; + return (0); + } + } + + return (-1); +} + +/* + * Return a random valid property value. Used by ztest. + */ +uint64_t +zprop_random_value(int prop, uint64_t seed, zfs_type_t type) +{ + zprop_desc_t *prop_tbl; + const zprop_index_t *idx_tbl; + + ASSERT((uint_t)prop < zprop_get_numprops(type)); + prop_tbl = zprop_get_proptable(type); + idx_tbl = prop_tbl[prop].pd_table; + + if (idx_tbl == NULL) + return (seed); + + return (idx_tbl[seed % prop_tbl[prop].pd_table_size].pi_value); +} + +const char * +zprop_values(int prop, zfs_type_t type) +{ + zprop_desc_t *prop_tbl; + + ASSERT(prop != ZPROP_INVAL && prop != ZPROP_CONT); + ASSERT(prop < zprop_get_numprops(type)); + + prop_tbl = zprop_get_proptable(type); + + return (prop_tbl[prop].pd_values); +} + +/* + * Returns TRUE if the property applies to any of the given dataset types. + * + * If headcheck is set, the check is being made against the head dataset + * type of a snapshot which requires to return B_TRUE when the property + * is only valid for snapshots. + */ +boolean_t +zprop_valid_for_type(int prop, zfs_type_t type, boolean_t headcheck) +{ + zprop_desc_t *prop_tbl; + + if (prop == ZPROP_INVAL || prop == ZPROP_CONT) + return (B_FALSE); + + ASSERT(prop < zprop_get_numprops(type)); + prop_tbl = zprop_get_proptable(type); + if (headcheck && prop_tbl[prop].pd_types == ZFS_TYPE_SNAPSHOT) + return (B_TRUE); + return ((prop_tbl[prop].pd_types & type) != 0); +} + +#ifndef _KERNEL + +/* + * Determines the minimum width for the column, and indicates whether it's fixed + * or not. Only string columns are non-fixed. + */ +size_t +zprop_width(int prop, boolean_t *fixed, zfs_type_t type) +{ + zprop_desc_t *prop_tbl, *pd; + const zprop_index_t *idx; + size_t ret; + int i; + + ASSERT(prop != ZPROP_INVAL && prop != ZPROP_CONT); + ASSERT(prop < zprop_get_numprops(type)); + + prop_tbl = zprop_get_proptable(type); + pd = &prop_tbl[prop]; + + *fixed = B_TRUE; + + /* + * Start with the width of the column name. + */ + ret = strlen(pd->pd_colname); + + /* + * For fixed-width values, make sure the width is large enough to hold + * any possible value. + */ + switch (pd->pd_proptype) { + case PROP_TYPE_NUMBER: + /* + * The maximum length of a human-readable number is 5 characters + * ("20.4M", for example). + */ + if (ret < 5) + ret = 5; + /* + * 'creation' is handled specially because it's a number + * internally, but displayed as a date string. + */ + if (prop == ZFS_PROP_CREATION) + *fixed = B_FALSE; + break; + case PROP_TYPE_INDEX: + idx = prop_tbl[prop].pd_table; + for (i = 0; idx[i].pi_name != NULL; i++) { + if (strlen(idx[i].pi_name) > ret) + ret = strlen(idx[i].pi_name); + } + break; + + case PROP_TYPE_STRING: + *fixed = B_FALSE; + break; + } + + return (ret); +} + +#endif + +#if defined(_KERNEL) && defined(HAVE_SPL) +/* Common routines to initialize property tables */ +EXPORT_SYMBOL(zprop_register_impl); +EXPORT_SYMBOL(zprop_register_string); +EXPORT_SYMBOL(zprop_register_number); +EXPORT_SYMBOL(zprop_register_index); +EXPORT_SYMBOL(zprop_register_hidden); + +/* Common routines for zfs and zpool property management */ +EXPORT_SYMBOL(zprop_iter_common); +EXPORT_SYMBOL(zprop_name_to_prop); +EXPORT_SYMBOL(zprop_string_to_index); +EXPORT_SYMBOL(zprop_index_to_string); +EXPORT_SYMBOL(zprop_random_value); +EXPORT_SYMBOL(zprop_values); +EXPORT_SYMBOL(zprop_valid_for_type); +#endif --- linux-4.4.0.orig/zfs/module/zfs/Makefile.in +++ linux-4.4.0/zfs/module/zfs/Makefile.in @@ -0,0 +1,108 @@ +src = @abs_top_srcdir@/module/zfs +obj = @abs_builddir@ + +MODULE := zfs + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += arc.o +$(MODULE)-objs += blkptr.o +$(MODULE)-objs += bplist.o +$(MODULE)-objs += bpobj.o +$(MODULE)-objs += dbuf.o +$(MODULE)-objs += dbuf_stats.o +$(MODULE)-objs += bptree.o +$(MODULE)-objs += ddt.o +$(MODULE)-objs += ddt_zap.o +$(MODULE)-objs += dmu.o +$(MODULE)-objs += dmu_diff.o +$(MODULE)-objs += dmu_object.o +$(MODULE)-objs += dmu_objset.o +$(MODULE)-objs += dmu_send.o +$(MODULE)-objs += dmu_traverse.o +$(MODULE)-objs += dmu_tx.o +$(MODULE)-objs += dmu_zfetch.o +$(MODULE)-objs += dnode.o +$(MODULE)-objs += dnode_sync.o +$(MODULE)-objs += dsl_dataset.o +$(MODULE)-objs += dsl_deadlist.o +$(MODULE)-objs += dsl_deleg.o +$(MODULE)-objs += dsl_bookmark.o +$(MODULE)-objs += dsl_dir.o +$(MODULE)-objs += dsl_pool.o +$(MODULE)-objs += dsl_prop.o +$(MODULE)-objs += dsl_scan.o +$(MODULE)-objs += dsl_synctask.o +$(MODULE)-objs += fm.o +$(MODULE)-objs += gzip.o +$(MODULE)-objs += lzjb.o +$(MODULE)-objs += lz4.o +$(MODULE)-objs += metaslab.o +$(MODULE)-objs += multilist.o +$(MODULE)-objs += range_tree.o +$(MODULE)-objs += refcount.o +$(MODULE)-objs += rrwlock.o +$(MODULE)-objs += sa.o +$(MODULE)-objs += sha256.o +$(MODULE)-objs += spa.o +$(MODULE)-objs += spa_boot.o +$(MODULE)-objs += spa_config.o +$(MODULE)-objs += spa_errlog.o +$(MODULE)-objs += spa_history.o +$(MODULE)-objs += spa_misc.o +$(MODULE)-objs += spa_stats.o +$(MODULE)-objs += space_map.o +$(MODULE)-objs += space_reftree.o +$(MODULE)-objs += txg.o +$(MODULE)-objs += trace.o +$(MODULE)-objs += uberblock.o +$(MODULE)-objs += unique.o +$(MODULE)-objs += vdev.o +$(MODULE)-objs += vdev_cache.o +$(MODULE)-objs += vdev_disk.o +$(MODULE)-objs += vdev_file.o +$(MODULE)-objs += vdev_label.o +$(MODULE)-objs += vdev_mirror.o +$(MODULE)-objs += vdev_missing.o +$(MODULE)-objs += vdev_queue.o +$(MODULE)-objs += vdev_raidz.o +$(MODULE)-objs += vdev_root.o +$(MODULE)-objs += zap.o +$(MODULE)-objs += zap_leaf.o +$(MODULE)-objs += zap_micro.o +$(MODULE)-objs += zfeature.o +$(MODULE)-objs += zfeature_common.o +$(MODULE)-objs += zfs_acl.o +$(MODULE)-objs += zfs_byteswap.o +$(MODULE)-objs += zfs_ctldir.o +$(MODULE)-objs += zfs_debug.o +$(MODULE)-objs += zfs_dir.o +$(MODULE)-objs += zfs_fm.o +$(MODULE)-objs += zfs_fuid.o +$(MODULE)-objs += zfs_ioctl.o +$(MODULE)-objs += zfs_log.o +$(MODULE)-objs += zfs_onexit.o +$(MODULE)-objs += zfs_replay.o +$(MODULE)-objs += zfs_rlock.o +$(MODULE)-objs += zfs_sa.o +$(MODULE)-objs += zfs_vfsops.o +$(MODULE)-objs += zfs_vnops.o +$(MODULE)-objs += zfs_znode.o +$(MODULE)-objs += zil.o +$(MODULE)-objs += zio.o +$(MODULE)-objs += zio_checksum.o +$(MODULE)-objs += zio_compress.o +$(MODULE)-objs += zio_inject.o +$(MODULE)-objs += zle.o +$(MODULE)-objs += zpl_ctldir.o +$(MODULE)-objs += zpl_export.o +$(MODULE)-objs += zpl_file.o +$(MODULE)-objs += zpl_inode.o +$(MODULE)-objs += zpl_super.o +$(MODULE)-objs += zpl_xattr.o +$(MODULE)-objs += zrlock.o +$(MODULE)-objs += zvol.o +$(MODULE)-objs += dsl_destroy.o +$(MODULE)-objs += dsl_userhold.o --- linux-4.4.0.orig/zfs/module/zfs/arc.c +++ linux-4.4.0/zfs/module/zfs/arc.c @@ -0,0 +1,7092 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright (c) 2014 by Saso Kiselkov. All rights reserved. + * Copyright 2014 Nexenta Systems, Inc. All rights reserved. + */ + +/* + * DVA-based Adjustable Replacement Cache + * + * While much of the theory of operation used here is + * based on the self-tuning, low overhead replacement cache + * presented by Megiddo and Modha at FAST 2003, there are some + * significant differences: + * + * 1. The Megiddo and Modha model assumes any page is evictable. + * Pages in its cache cannot be "locked" into memory. This makes + * the eviction algorithm simple: evict the last page in the list. + * This also make the performance characteristics easy to reason + * about. Our cache is not so simple. At any given moment, some + * subset of the blocks in the cache are un-evictable because we + * have handed out a reference to them. Blocks are only evictable + * when there are no external references active. This makes + * eviction far more problematic: we choose to evict the evictable + * blocks that are the "lowest" in the list. + * + * There are times when it is not possible to evict the requested + * space. In these circumstances we are unable to adjust the cache + * size. To prevent the cache growing unbounded at these times we + * implement a "cache throttle" that slows the flow of new data + * into the cache until we can make space available. + * + * 2. The Megiddo and Modha model assumes a fixed cache size. + * Pages are evicted when the cache is full and there is a cache + * miss. Our model has a variable sized cache. It grows with + * high use, but also tries to react to memory pressure from the + * operating system: decreasing its size when system memory is + * tight. + * + * 3. The Megiddo and Modha model assumes a fixed page size. All + * elements of the cache are therefore exactly the same size. So + * when adjusting the cache size following a cache miss, its simply + * a matter of choosing a single page to evict. In our model, we + * have variable sized cache blocks (rangeing from 512 bytes to + * 128K bytes). We therefore choose a set of blocks to evict to make + * space for a cache miss that approximates as closely as possible + * the space used by the new block. + * + * See also: "ARC: A Self-Tuning, Low Overhead Replacement Cache" + * by N. Megiddo & D. Modha, FAST 2003 + */ + +/* + * The locking model: + * + * A new reference to a cache buffer can be obtained in two + * ways: 1) via a hash table lookup using the DVA as a key, + * or 2) via one of the ARC lists. The arc_read() interface + * uses method 1, while the internal arc algorithms for + * adjusting the cache use method 2. We therefore provide two + * types of locks: 1) the hash table lock array, and 2) the + * arc list locks. + * + * Buffers do not have their own mutexes, rather they rely on the + * hash table mutexes for the bulk of their protection (i.e. most + * fields in the arc_buf_hdr_t are protected by these mutexes). + * + * buf_hash_find() returns the appropriate mutex (held) when it + * locates the requested buffer in the hash table. It returns + * NULL for the mutex if the buffer was not in the table. + * + * buf_hash_remove() expects the appropriate hash mutex to be + * already held before it is invoked. + * + * Each arc state also has a mutex which is used to protect the + * buffer list associated with the state. When attempting to + * obtain a hash table lock while holding an arc list lock you + * must use: mutex_tryenter() to avoid deadlock. Also note that + * the active state mutex must be held before the ghost state mutex. + * + * Arc buffers may have an associated eviction callback function. + * This function will be invoked prior to removing the buffer (e.g. + * in arc_do_user_evicts()). Note however that the data associated + * with the buffer may be evicted prior to the callback. The callback + * must be made with *no locks held* (to prevent deadlock). Additionally, + * the users of callbacks must ensure that their private data is + * protected from simultaneous callbacks from arc_clear_callback() + * and arc_do_user_evicts(). + * + * It as also possible to register a callback which is run when the + * arc_meta_limit is reached and no buffers can be safely evicted. In + * this case the arc user should drop a reference on some arc buffers so + * they can be reclaimed and the arc_meta_limit honored. For example, + * when using the ZPL each dentry holds a references on a znode. These + * dentries must be pruned before the arc buffer holding the znode can + * be safely evicted. + * + * Note that the majority of the performance stats are manipulated + * with atomic operations. + * + * The L2ARC uses the l2ad_mtx on each vdev for the following: + * + * - L2ARC buflist creation + * - L2ARC buflist eviction + * - L2ARC write completion, which walks L2ARC buflists + * - ARC header destruction, as it removes from L2ARC buflists + * - ARC header release, as it removes from L2ARC buflists + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#include +#include + +#ifndef _KERNEL +/* set with ZFS_DEBUG=watch, to enable watchpoints on frozen buffers */ +boolean_t arc_watch = B_FALSE; +#endif + +static kmutex_t arc_reclaim_lock; +static kcondvar_t arc_reclaim_thread_cv; +static boolean_t arc_reclaim_thread_exit; +static kcondvar_t arc_reclaim_waiters_cv; + +static kmutex_t arc_user_evicts_lock; +static kcondvar_t arc_user_evicts_cv; +static boolean_t arc_user_evicts_thread_exit; + +/* + * The number of headers to evict in arc_evict_state_impl() before + * dropping the sublist lock and evicting from another sublist. A lower + * value means we're more likely to evict the "correct" header (i.e. the + * oldest header in the arc state), but comes with higher overhead + * (i.e. more invocations of arc_evict_state_impl()). + */ +int zfs_arc_evict_batch_limit = 10; + +/* + * The number of sublists used for each of the arc state lists. If this + * is not set to a suitable value by the user, it will be configured to + * the number of CPUs on the system in arc_init(). + */ +int zfs_arc_num_sublists_per_state = 0; + +/* number of seconds before growing cache again */ +static int arc_grow_retry = 5; + +/* shift of arc_c for calculating overflow limit in arc_get_data_buf */ +int zfs_arc_overflow_shift = 8; + +/* shift of arc_c for calculating both min and max arc_p */ +static int arc_p_min_shift = 4; + +/* log2(fraction of arc to reclaim) */ +static int arc_shrink_shift = 7; + +/* + * log2(fraction of ARC which must be free to allow growing). + * I.e. If there is less than arc_c >> arc_no_grow_shift free memory, + * when reading a new block into the ARC, we will evict an equal-sized block + * from the ARC. + * + * This must be less than arc_shrink_shift, so that when we shrink the ARC, + * we will still not allow it to grow. + */ +int arc_no_grow_shift = 5; + + +/* + * minimum lifespan of a prefetch block in clock ticks + * (initialized in arc_init()) + */ +static int arc_min_prefetch_lifespan; + +/* + * If this percent of memory is free, don't throttle. + */ +int arc_lotsfree_percent = 10; + +static int arc_dead; + +/* + * The arc has filled available memory and has now warmed up. + */ +static boolean_t arc_warm; + +/* + * These tunables are for performance analysis. + */ +unsigned long zfs_arc_max = 0; +unsigned long zfs_arc_min = 0; +unsigned long zfs_arc_meta_limit = 0; +unsigned long zfs_arc_meta_min = 0; +int zfs_arc_grow_retry = 0; +int zfs_arc_shrink_shift = 0; +int zfs_arc_p_min_shift = 0; +int zfs_disable_dup_eviction = 0; +int zfs_arc_average_blocksize = 8 * 1024; /* 8KB */ + +/* + * These tunables are Linux specific + */ +unsigned long zfs_arc_sys_free = 0; +int zfs_arc_min_prefetch_lifespan = 0; +int zfs_arc_p_aggressive_disable = 1; +int zfs_arc_p_dampener_disable = 1; +int zfs_arc_meta_prune = 10000; +int zfs_arc_meta_strategy = ARC_STRATEGY_META_BALANCED; +int zfs_arc_meta_adjust_restarts = 4096; +int zfs_arc_lotsfree_percent = 10; + +/* The 6 states: */ +static arc_state_t ARC_anon; +static arc_state_t ARC_mru; +static arc_state_t ARC_mru_ghost; +static arc_state_t ARC_mfu; +static arc_state_t ARC_mfu_ghost; +static arc_state_t ARC_l2c_only; + +typedef struct arc_stats { + kstat_named_t arcstat_hits; + kstat_named_t arcstat_misses; + kstat_named_t arcstat_demand_data_hits; + kstat_named_t arcstat_demand_data_misses; + kstat_named_t arcstat_demand_metadata_hits; + kstat_named_t arcstat_demand_metadata_misses; + kstat_named_t arcstat_prefetch_data_hits; + kstat_named_t arcstat_prefetch_data_misses; + kstat_named_t arcstat_prefetch_metadata_hits; + kstat_named_t arcstat_prefetch_metadata_misses; + kstat_named_t arcstat_mru_hits; + kstat_named_t arcstat_mru_ghost_hits; + kstat_named_t arcstat_mfu_hits; + kstat_named_t arcstat_mfu_ghost_hits; + kstat_named_t arcstat_deleted; + /* + * Number of buffers that could not be evicted because the hash lock + * was held by another thread. The lock may not necessarily be held + * by something using the same buffer, since hash locks are shared + * by multiple buffers. + */ + kstat_named_t arcstat_mutex_miss; + /* + * Number of buffers skipped because they have I/O in progress, are + * indrect prefetch buffers that have not lived long enough, or are + * not from the spa we're trying to evict from. + */ + kstat_named_t arcstat_evict_skip; + /* + * Number of times arc_evict_state() was unable to evict enough + * buffers to reach its target amount. + */ + kstat_named_t arcstat_evict_not_enough; + kstat_named_t arcstat_evict_l2_cached; + kstat_named_t arcstat_evict_l2_eligible; + kstat_named_t arcstat_evict_l2_ineligible; + kstat_named_t arcstat_evict_l2_skip; + kstat_named_t arcstat_hash_elements; + kstat_named_t arcstat_hash_elements_max; + kstat_named_t arcstat_hash_collisions; + kstat_named_t arcstat_hash_chains; + kstat_named_t arcstat_hash_chain_max; + kstat_named_t arcstat_p; + kstat_named_t arcstat_c; + kstat_named_t arcstat_c_min; + kstat_named_t arcstat_c_max; + kstat_named_t arcstat_size; + /* + * Number of bytes consumed by internal ARC structures necessary + * for tracking purposes; these structures are not actually + * backed by ARC buffers. This includes arc_buf_hdr_t structures + * (allocated via arc_buf_hdr_t_full and arc_buf_hdr_t_l2only + * caches), and arc_buf_t structures (allocated via arc_buf_t + * cache). + */ + kstat_named_t arcstat_hdr_size; + /* + * Number of bytes consumed by ARC buffers of type equal to + * ARC_BUFC_DATA. This is generally consumed by buffers backing + * on disk user data (e.g. plain file contents). + */ + kstat_named_t arcstat_data_size; + /* + * Number of bytes consumed by ARC buffers of type equal to + * ARC_BUFC_METADATA. This is generally consumed by buffers + * backing on disk data that is used for internal ZFS + * structures (e.g. ZAP, dnode, indirect blocks, etc). + */ + kstat_named_t arcstat_metadata_size; + /* + * Number of bytes consumed by various buffers and structures + * not actually backed with ARC buffers. This includes bonus + * buffers (allocated directly via zio_buf_* functions), + * dmu_buf_impl_t structures (allocated via dmu_buf_impl_t + * cache), and dnode_t structures (allocated via dnode_t cache). + */ + kstat_named_t arcstat_other_size; + /* + * Total number of bytes consumed by ARC buffers residing in the + * arc_anon state. This includes *all* buffers in the arc_anon + * state; e.g. data, metadata, evictable, and unevictable buffers + * are all included in this value. + */ + kstat_named_t arcstat_anon_size; + /* + * Number of bytes consumed by ARC buffers that meet the + * following criteria: backing buffers of type ARC_BUFC_DATA, + * residing in the arc_anon state, and are eligible for eviction + * (e.g. have no outstanding holds on the buffer). + */ + kstat_named_t arcstat_anon_evictable_data; + /* + * Number of bytes consumed by ARC buffers that meet the + * following criteria: backing buffers of type ARC_BUFC_METADATA, + * residing in the arc_anon state, and are eligible for eviction + * (e.g. have no outstanding holds on the buffer). + */ + kstat_named_t arcstat_anon_evictable_metadata; + /* + * Total number of bytes consumed by ARC buffers residing in the + * arc_mru state. This includes *all* buffers in the arc_mru + * state; e.g. data, metadata, evictable, and unevictable buffers + * are all included in this value. + */ + kstat_named_t arcstat_mru_size; + /* + * Number of bytes consumed by ARC buffers that meet the + * following criteria: backing buffers of type ARC_BUFC_DATA, + * residing in the arc_mru state, and are eligible for eviction + * (e.g. have no outstanding holds on the buffer). + */ + kstat_named_t arcstat_mru_evictable_data; + /* + * Number of bytes consumed by ARC buffers that meet the + * following criteria: backing buffers of type ARC_BUFC_METADATA, + * residing in the arc_mru state, and are eligible for eviction + * (e.g. have no outstanding holds on the buffer). + */ + kstat_named_t arcstat_mru_evictable_metadata; + /* + * Total number of bytes that *would have been* consumed by ARC + * buffers in the arc_mru_ghost state. The key thing to note + * here, is the fact that this size doesn't actually indicate + * RAM consumption. The ghost lists only consist of headers and + * don't actually have ARC buffers linked off of these headers. + * Thus, *if* the headers had associated ARC buffers, these + * buffers *would have* consumed this number of bytes. + */ + kstat_named_t arcstat_mru_ghost_size; + /* + * Number of bytes that *would have been* consumed by ARC + * buffers that are eligible for eviction, of type + * ARC_BUFC_DATA, and linked off the arc_mru_ghost state. + */ + kstat_named_t arcstat_mru_ghost_evictable_data; + /* + * Number of bytes that *would have been* consumed by ARC + * buffers that are eligible for eviction, of type + * ARC_BUFC_METADATA, and linked off the arc_mru_ghost state. + */ + kstat_named_t arcstat_mru_ghost_evictable_metadata; + /* + * Total number of bytes consumed by ARC buffers residing in the + * arc_mfu state. This includes *all* buffers in the arc_mfu + * state; e.g. data, metadata, evictable, and unevictable buffers + * are all included in this value. + */ + kstat_named_t arcstat_mfu_size; + /* + * Number of bytes consumed by ARC buffers that are eligible for + * eviction, of type ARC_BUFC_DATA, and reside in the arc_mfu + * state. + */ + kstat_named_t arcstat_mfu_evictable_data; + /* + * Number of bytes consumed by ARC buffers that are eligible for + * eviction, of type ARC_BUFC_METADATA, and reside in the + * arc_mfu state. + */ + kstat_named_t arcstat_mfu_evictable_metadata; + /* + * Total number of bytes that *would have been* consumed by ARC + * buffers in the arc_mfu_ghost state. See the comment above + * arcstat_mru_ghost_size for more details. + */ + kstat_named_t arcstat_mfu_ghost_size; + /* + * Number of bytes that *would have been* consumed by ARC + * buffers that are eligible for eviction, of type + * ARC_BUFC_DATA, and linked off the arc_mfu_ghost state. + */ + kstat_named_t arcstat_mfu_ghost_evictable_data; + /* + * Number of bytes that *would have been* consumed by ARC + * buffers that are eligible for eviction, of type + * ARC_BUFC_METADATA, and linked off the arc_mru_ghost state. + */ + kstat_named_t arcstat_mfu_ghost_evictable_metadata; + kstat_named_t arcstat_l2_hits; + kstat_named_t arcstat_l2_misses; + kstat_named_t arcstat_l2_feeds; + kstat_named_t arcstat_l2_rw_clash; + kstat_named_t arcstat_l2_read_bytes; + kstat_named_t arcstat_l2_write_bytes; + kstat_named_t arcstat_l2_writes_sent; + kstat_named_t arcstat_l2_writes_done; + kstat_named_t arcstat_l2_writes_error; + kstat_named_t arcstat_l2_writes_lock_retry; + kstat_named_t arcstat_l2_evict_lock_retry; + kstat_named_t arcstat_l2_evict_reading; + kstat_named_t arcstat_l2_evict_l1cached; + kstat_named_t arcstat_l2_free_on_write; + kstat_named_t arcstat_l2_cdata_free_on_write; + kstat_named_t arcstat_l2_abort_lowmem; + kstat_named_t arcstat_l2_cksum_bad; + kstat_named_t arcstat_l2_io_error; + kstat_named_t arcstat_l2_size; + kstat_named_t arcstat_l2_asize; + kstat_named_t arcstat_l2_hdr_size; + kstat_named_t arcstat_l2_compress_successes; + kstat_named_t arcstat_l2_compress_zeros; + kstat_named_t arcstat_l2_compress_failures; + kstat_named_t arcstat_memory_throttle_count; + kstat_named_t arcstat_duplicate_buffers; + kstat_named_t arcstat_duplicate_buffers_size; + kstat_named_t arcstat_duplicate_reads; + kstat_named_t arcstat_memory_direct_count; + kstat_named_t arcstat_memory_indirect_count; + kstat_named_t arcstat_no_grow; + kstat_named_t arcstat_tempreserve; + kstat_named_t arcstat_loaned_bytes; + kstat_named_t arcstat_prune; + kstat_named_t arcstat_meta_used; + kstat_named_t arcstat_meta_limit; + kstat_named_t arcstat_meta_max; + kstat_named_t arcstat_meta_min; + kstat_named_t arcstat_need_free; + kstat_named_t arcstat_sys_free; +} arc_stats_t; + +static arc_stats_t arc_stats = { + { "hits", KSTAT_DATA_UINT64 }, + { "misses", KSTAT_DATA_UINT64 }, + { "demand_data_hits", KSTAT_DATA_UINT64 }, + { "demand_data_misses", KSTAT_DATA_UINT64 }, + { "demand_metadata_hits", KSTAT_DATA_UINT64 }, + { "demand_metadata_misses", KSTAT_DATA_UINT64 }, + { "prefetch_data_hits", KSTAT_DATA_UINT64 }, + { "prefetch_data_misses", KSTAT_DATA_UINT64 }, + { "prefetch_metadata_hits", KSTAT_DATA_UINT64 }, + { "prefetch_metadata_misses", KSTAT_DATA_UINT64 }, + { "mru_hits", KSTAT_DATA_UINT64 }, + { "mru_ghost_hits", KSTAT_DATA_UINT64 }, + { "mfu_hits", KSTAT_DATA_UINT64 }, + { "mfu_ghost_hits", KSTAT_DATA_UINT64 }, + { "deleted", KSTAT_DATA_UINT64 }, + { "mutex_miss", KSTAT_DATA_UINT64 }, + { "evict_skip", KSTAT_DATA_UINT64 }, + { "evict_not_enough", KSTAT_DATA_UINT64 }, + { "evict_l2_cached", KSTAT_DATA_UINT64 }, + { "evict_l2_eligible", KSTAT_DATA_UINT64 }, + { "evict_l2_ineligible", KSTAT_DATA_UINT64 }, + { "evict_l2_skip", KSTAT_DATA_UINT64 }, + { "hash_elements", KSTAT_DATA_UINT64 }, + { "hash_elements_max", KSTAT_DATA_UINT64 }, + { "hash_collisions", KSTAT_DATA_UINT64 }, + { "hash_chains", KSTAT_DATA_UINT64 }, + { "hash_chain_max", KSTAT_DATA_UINT64 }, + { "p", KSTAT_DATA_UINT64 }, + { "c", KSTAT_DATA_UINT64 }, + { "c_min", KSTAT_DATA_UINT64 }, + { "c_max", KSTAT_DATA_UINT64 }, + { "size", KSTAT_DATA_UINT64 }, + { "hdr_size", KSTAT_DATA_UINT64 }, + { "data_size", KSTAT_DATA_UINT64 }, + { "metadata_size", KSTAT_DATA_UINT64 }, + { "other_size", KSTAT_DATA_UINT64 }, + { "anon_size", KSTAT_DATA_UINT64 }, + { "anon_evictable_data", KSTAT_DATA_UINT64 }, + { "anon_evictable_metadata", KSTAT_DATA_UINT64 }, + { "mru_size", KSTAT_DATA_UINT64 }, + { "mru_evictable_data", KSTAT_DATA_UINT64 }, + { "mru_evictable_metadata", KSTAT_DATA_UINT64 }, + { "mru_ghost_size", KSTAT_DATA_UINT64 }, + { "mru_ghost_evictable_data", KSTAT_DATA_UINT64 }, + { "mru_ghost_evictable_metadata", KSTAT_DATA_UINT64 }, + { "mfu_size", KSTAT_DATA_UINT64 }, + { "mfu_evictable_data", KSTAT_DATA_UINT64 }, + { "mfu_evictable_metadata", KSTAT_DATA_UINT64 }, + { "mfu_ghost_size", KSTAT_DATA_UINT64 }, + { "mfu_ghost_evictable_data", KSTAT_DATA_UINT64 }, + { "mfu_ghost_evictable_metadata", KSTAT_DATA_UINT64 }, + { "l2_hits", KSTAT_DATA_UINT64 }, + { "l2_misses", KSTAT_DATA_UINT64 }, + { "l2_feeds", KSTAT_DATA_UINT64 }, + { "l2_rw_clash", KSTAT_DATA_UINT64 }, + { "l2_read_bytes", KSTAT_DATA_UINT64 }, + { "l2_write_bytes", KSTAT_DATA_UINT64 }, + { "l2_writes_sent", KSTAT_DATA_UINT64 }, + { "l2_writes_done", KSTAT_DATA_UINT64 }, + { "l2_writes_error", KSTAT_DATA_UINT64 }, + { "l2_writes_lock_retry", KSTAT_DATA_UINT64 }, + { "l2_evict_lock_retry", KSTAT_DATA_UINT64 }, + { "l2_evict_reading", KSTAT_DATA_UINT64 }, + { "l2_evict_l1cached", KSTAT_DATA_UINT64 }, + { "l2_free_on_write", KSTAT_DATA_UINT64 }, + { "l2_cdata_free_on_write", KSTAT_DATA_UINT64 }, + { "l2_abort_lowmem", KSTAT_DATA_UINT64 }, + { "l2_cksum_bad", KSTAT_DATA_UINT64 }, + { "l2_io_error", KSTAT_DATA_UINT64 }, + { "l2_size", KSTAT_DATA_UINT64 }, + { "l2_asize", KSTAT_DATA_UINT64 }, + { "l2_hdr_size", KSTAT_DATA_UINT64 }, + { "l2_compress_successes", KSTAT_DATA_UINT64 }, + { "l2_compress_zeros", KSTAT_DATA_UINT64 }, + { "l2_compress_failures", KSTAT_DATA_UINT64 }, + { "memory_throttle_count", KSTAT_DATA_UINT64 }, + { "duplicate_buffers", KSTAT_DATA_UINT64 }, + { "duplicate_buffers_size", KSTAT_DATA_UINT64 }, + { "duplicate_reads", KSTAT_DATA_UINT64 }, + { "memory_direct_count", KSTAT_DATA_UINT64 }, + { "memory_indirect_count", KSTAT_DATA_UINT64 }, + { "arc_no_grow", KSTAT_DATA_UINT64 }, + { "arc_tempreserve", KSTAT_DATA_UINT64 }, + { "arc_loaned_bytes", KSTAT_DATA_UINT64 }, + { "arc_prune", KSTAT_DATA_UINT64 }, + { "arc_meta_used", KSTAT_DATA_UINT64 }, + { "arc_meta_limit", KSTAT_DATA_UINT64 }, + { "arc_meta_max", KSTAT_DATA_UINT64 }, + { "arc_meta_min", KSTAT_DATA_UINT64 }, + { "arc_need_free", KSTAT_DATA_UINT64 }, + { "arc_sys_free", KSTAT_DATA_UINT64 } +}; + +#define ARCSTAT(stat) (arc_stats.stat.value.ui64) + +#define ARCSTAT_INCR(stat, val) \ + atomic_add_64(&arc_stats.stat.value.ui64, (val)) + +#define ARCSTAT_BUMP(stat) ARCSTAT_INCR(stat, 1) +#define ARCSTAT_BUMPDOWN(stat) ARCSTAT_INCR(stat, -1) + +#define ARCSTAT_MAX(stat, val) { \ + uint64_t m; \ + while ((val) > (m = arc_stats.stat.value.ui64) && \ + (m != atomic_cas_64(&arc_stats.stat.value.ui64, m, (val)))) \ + continue; \ +} + +#define ARCSTAT_MAXSTAT(stat) \ + ARCSTAT_MAX(stat##_max, arc_stats.stat.value.ui64) + +/* + * We define a macro to allow ARC hits/misses to be easily broken down by + * two separate conditions, giving a total of four different subtypes for + * each of hits and misses (so eight statistics total). + */ +#define ARCSTAT_CONDSTAT(cond1, stat1, notstat1, cond2, stat2, notstat2, stat) \ + if (cond1) { \ + if (cond2) { \ + ARCSTAT_BUMP(arcstat_##stat1##_##stat2##_##stat); \ + } else { \ + ARCSTAT_BUMP(arcstat_##stat1##_##notstat2##_##stat); \ + } \ + } else { \ + if (cond2) { \ + ARCSTAT_BUMP(arcstat_##notstat1##_##stat2##_##stat); \ + } else { \ + ARCSTAT_BUMP(arcstat_##notstat1##_##notstat2##_##stat);\ + } \ + } + +kstat_t *arc_ksp; +static arc_state_t *arc_anon; +static arc_state_t *arc_mru; +static arc_state_t *arc_mru_ghost; +static arc_state_t *arc_mfu; +static arc_state_t *arc_mfu_ghost; +static arc_state_t *arc_l2c_only; + +/* + * There are several ARC variables that are critical to export as kstats -- + * but we don't want to have to grovel around in the kstat whenever we wish to + * manipulate them. For these variables, we therefore define them to be in + * terms of the statistic variable. This assures that we are not introducing + * the possibility of inconsistency by having shadow copies of the variables, + * while still allowing the code to be readable. + */ +#define arc_size ARCSTAT(arcstat_size) /* actual total arc size */ +#define arc_p ARCSTAT(arcstat_p) /* target size of MRU */ +#define arc_c ARCSTAT(arcstat_c) /* target size of cache */ +#define arc_c_min ARCSTAT(arcstat_c_min) /* min target cache size */ +#define arc_c_max ARCSTAT(arcstat_c_max) /* max target cache size */ +#define arc_no_grow ARCSTAT(arcstat_no_grow) +#define arc_tempreserve ARCSTAT(arcstat_tempreserve) +#define arc_loaned_bytes ARCSTAT(arcstat_loaned_bytes) +#define arc_meta_limit ARCSTAT(arcstat_meta_limit) /* max size for metadata */ +#define arc_meta_min ARCSTAT(arcstat_meta_min) /* min size for metadata */ +#define arc_meta_used ARCSTAT(arcstat_meta_used) /* size of metadata */ +#define arc_meta_max ARCSTAT(arcstat_meta_max) /* max size of metadata */ +#define arc_need_free ARCSTAT(arcstat_need_free) /* bytes to be freed */ +#define arc_sys_free ARCSTAT(arcstat_sys_free) /* target system free bytes */ + +#define L2ARC_IS_VALID_COMPRESS(_c_) \ + ((_c_) == ZIO_COMPRESS_LZ4 || (_c_) == ZIO_COMPRESS_EMPTY) + +static list_t arc_prune_list; +static kmutex_t arc_prune_mtx; +static taskq_t *arc_prune_taskq; +static arc_buf_t *arc_eviction_list; +static arc_buf_hdr_t arc_eviction_hdr; + +#define GHOST_STATE(state) \ + ((state) == arc_mru_ghost || (state) == arc_mfu_ghost || \ + (state) == arc_l2c_only) + +#define HDR_IN_HASH_TABLE(hdr) ((hdr)->b_flags & ARC_FLAG_IN_HASH_TABLE) +#define HDR_IO_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_FLAG_IO_IN_PROGRESS) +#define HDR_IO_ERROR(hdr) ((hdr)->b_flags & ARC_FLAG_IO_ERROR) +#define HDR_PREFETCH(hdr) ((hdr)->b_flags & ARC_FLAG_PREFETCH) +#define HDR_FREED_IN_READ(hdr) ((hdr)->b_flags & ARC_FLAG_FREED_IN_READ) +#define HDR_BUF_AVAILABLE(hdr) ((hdr)->b_flags & ARC_FLAG_BUF_AVAILABLE) + +#define HDR_L2CACHE(hdr) ((hdr)->b_flags & ARC_FLAG_L2CACHE) +#define HDR_L2COMPRESS(hdr) ((hdr)->b_flags & ARC_FLAG_L2COMPRESS) +#define HDR_L2_READING(hdr) \ + (((hdr)->b_flags & ARC_FLAG_IO_IN_PROGRESS) && \ + ((hdr)->b_flags & ARC_FLAG_HAS_L2HDR)) +#define HDR_L2_WRITING(hdr) ((hdr)->b_flags & ARC_FLAG_L2_WRITING) +#define HDR_L2_EVICTED(hdr) ((hdr)->b_flags & ARC_FLAG_L2_EVICTED) +#define HDR_L2_WRITE_HEAD(hdr) ((hdr)->b_flags & ARC_FLAG_L2_WRITE_HEAD) + +#define HDR_ISTYPE_METADATA(hdr) \ + ((hdr)->b_flags & ARC_FLAG_BUFC_METADATA) +#define HDR_ISTYPE_DATA(hdr) (!HDR_ISTYPE_METADATA(hdr)) + +#define HDR_HAS_L1HDR(hdr) ((hdr)->b_flags & ARC_FLAG_HAS_L1HDR) +#define HDR_HAS_L2HDR(hdr) ((hdr)->b_flags & ARC_FLAG_HAS_L2HDR) + +/* + * Other sizes + */ + +#define HDR_FULL_SIZE ((int64_t)sizeof (arc_buf_hdr_t)) +#define HDR_L2ONLY_SIZE ((int64_t)offsetof(arc_buf_hdr_t, b_l1hdr)) + +/* + * Hash table routines + */ + +#define HT_LOCK_ALIGN 64 +#define HT_LOCK_PAD (P2NPHASE(sizeof (kmutex_t), (HT_LOCK_ALIGN))) + +struct ht_lock { + kmutex_t ht_lock; +#ifdef _KERNEL + unsigned char pad[HT_LOCK_PAD]; +#endif +}; + +#define BUF_LOCKS 8192 +typedef struct buf_hash_table { + uint64_t ht_mask; + arc_buf_hdr_t **ht_table; + struct ht_lock ht_locks[BUF_LOCKS]; +} buf_hash_table_t; + +static buf_hash_table_t buf_hash_table; + +#define BUF_HASH_INDEX(spa, dva, birth) \ + (buf_hash(spa, dva, birth) & buf_hash_table.ht_mask) +#define BUF_HASH_LOCK_NTRY(idx) (buf_hash_table.ht_locks[idx & (BUF_LOCKS-1)]) +#define BUF_HASH_LOCK(idx) (&(BUF_HASH_LOCK_NTRY(idx).ht_lock)) +#define HDR_LOCK(hdr) \ + (BUF_HASH_LOCK(BUF_HASH_INDEX(hdr->b_spa, &hdr->b_dva, hdr->b_birth))) + +uint64_t zfs_crc64_table[256]; + +/* + * Level 2 ARC + */ + +#define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ +#define L2ARC_HEADROOM 2 /* num of writes */ +/* + * If we discover during ARC scan any buffers to be compressed, we boost + * our headroom for the next scanning cycle by this percentage multiple. + */ +#define L2ARC_HEADROOM_BOOST 200 +#define L2ARC_FEED_SECS 1 /* caching interval secs */ +#define L2ARC_FEED_MIN_MS 200 /* min caching interval ms */ + +/* + * Used to distinguish headers that are being process by + * l2arc_write_buffers(), but have yet to be assigned to a l2arc disk + * address. This can happen when the header is added to the l2arc's list + * of buffers to write in the first stage of l2arc_write_buffers(), but + * has not yet been written out which happens in the second stage of + * l2arc_write_buffers(). + */ +#define L2ARC_ADDR_UNSET ((uint64_t)(-1)) + +#define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent) +#define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done) + +/* L2ARC Performance Tunables */ +unsigned long l2arc_write_max = L2ARC_WRITE_SIZE; /* def max write size */ +unsigned long l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra warmup write */ +unsigned long l2arc_headroom = L2ARC_HEADROOM; /* # of dev writes */ +unsigned long l2arc_headroom_boost = L2ARC_HEADROOM_BOOST; +unsigned long l2arc_feed_secs = L2ARC_FEED_SECS; /* interval seconds */ +unsigned long l2arc_feed_min_ms = L2ARC_FEED_MIN_MS; /* min interval msecs */ +int l2arc_noprefetch = B_TRUE; /* don't cache prefetch bufs */ +int l2arc_nocompress = B_FALSE; /* don't compress bufs */ +int l2arc_feed_again = B_TRUE; /* turbo warmup */ +int l2arc_norw = B_FALSE; /* no reads during writes */ + +/* + * L2ARC Internals + */ +static list_t L2ARC_dev_list; /* device list */ +static list_t *l2arc_dev_list; /* device list pointer */ +static kmutex_t l2arc_dev_mtx; /* device list mutex */ +static l2arc_dev_t *l2arc_dev_last; /* last device used */ +static list_t L2ARC_free_on_write; /* free after write buf list */ +static list_t *l2arc_free_on_write; /* free after write list ptr */ +static kmutex_t l2arc_free_on_write_mtx; /* mutex for list */ +static uint64_t l2arc_ndev; /* number of devices */ + +typedef struct l2arc_read_callback { + arc_buf_t *l2rcb_buf; /* read buffer */ + spa_t *l2rcb_spa; /* spa */ + blkptr_t l2rcb_bp; /* original blkptr */ + zbookmark_phys_t l2rcb_zb; /* original bookmark */ + int l2rcb_flags; /* original flags */ + enum zio_compress l2rcb_compress; /* applied compress */ +} l2arc_read_callback_t; + +typedef struct l2arc_data_free { + /* protected by l2arc_free_on_write_mtx */ + void *l2df_data; + size_t l2df_size; + void (*l2df_func)(void *, size_t); + list_node_t l2df_list_node; +} l2arc_data_free_t; + +static kmutex_t l2arc_feed_thr_lock; +static kcondvar_t l2arc_feed_thr_cv; +static uint8_t l2arc_thread_exit; + +static void arc_get_data_buf(arc_buf_t *); +static void arc_access(arc_buf_hdr_t *, kmutex_t *); +static boolean_t arc_is_overflowing(void); +static void arc_buf_watch(arc_buf_t *); +static void arc_tuning_update(void); + +static arc_buf_contents_t arc_buf_type(arc_buf_hdr_t *); +static uint32_t arc_bufc_to_flags(arc_buf_contents_t); + +static boolean_t l2arc_write_eligible(uint64_t, arc_buf_hdr_t *); +static void l2arc_read_done(zio_t *); + +static boolean_t l2arc_compress_buf(arc_buf_hdr_t *); +static void l2arc_decompress_zio(zio_t *, arc_buf_hdr_t *, enum zio_compress); +static void l2arc_release_cdata_buf(arc_buf_hdr_t *); + +static uint64_t +buf_hash(uint64_t spa, const dva_t *dva, uint64_t birth) +{ + uint8_t *vdva = (uint8_t *)dva; + uint64_t crc = -1ULL; + int i; + + ASSERT(zfs_crc64_table[128] == ZFS_CRC64_POLY); + + for (i = 0; i < sizeof (dva_t); i++) + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ vdva[i]) & 0xFF]; + + crc ^= (spa>>8) ^ birth; + + return (crc); +} + +#define BUF_EMPTY(buf) \ + ((buf)->b_dva.dva_word[0] == 0 && \ + (buf)->b_dva.dva_word[1] == 0) + +#define BUF_EQUAL(spa, dva, birth, buf) \ + ((buf)->b_dva.dva_word[0] == (dva)->dva_word[0]) && \ + ((buf)->b_dva.dva_word[1] == (dva)->dva_word[1]) && \ + ((buf)->b_birth == birth) && ((buf)->b_spa == spa) + +static void +buf_discard_identity(arc_buf_hdr_t *hdr) +{ + hdr->b_dva.dva_word[0] = 0; + hdr->b_dva.dva_word[1] = 0; + hdr->b_birth = 0; +} + +static arc_buf_hdr_t * +buf_hash_find(uint64_t spa, const blkptr_t *bp, kmutex_t **lockp) +{ + const dva_t *dva = BP_IDENTITY(bp); + uint64_t birth = BP_PHYSICAL_BIRTH(bp); + uint64_t idx = BUF_HASH_INDEX(spa, dva, birth); + kmutex_t *hash_lock = BUF_HASH_LOCK(idx); + arc_buf_hdr_t *hdr; + + mutex_enter(hash_lock); + for (hdr = buf_hash_table.ht_table[idx]; hdr != NULL; + hdr = hdr->b_hash_next) { + if (BUF_EQUAL(spa, dva, birth, hdr)) { + *lockp = hash_lock; + return (hdr); + } + } + mutex_exit(hash_lock); + *lockp = NULL; + return (NULL); +} + +/* + * Insert an entry into the hash table. If there is already an element + * equal to elem in the hash table, then the already existing element + * will be returned and the new element will not be inserted. + * Otherwise returns NULL. + * If lockp == NULL, the caller is assumed to already hold the hash lock. + */ +static arc_buf_hdr_t * +buf_hash_insert(arc_buf_hdr_t *hdr, kmutex_t **lockp) +{ + uint64_t idx = BUF_HASH_INDEX(hdr->b_spa, &hdr->b_dva, hdr->b_birth); + kmutex_t *hash_lock = BUF_HASH_LOCK(idx); + arc_buf_hdr_t *fhdr; + uint32_t i; + + ASSERT(!DVA_IS_EMPTY(&hdr->b_dva)); + ASSERT(hdr->b_birth != 0); + ASSERT(!HDR_IN_HASH_TABLE(hdr)); + + if (lockp != NULL) { + *lockp = hash_lock; + mutex_enter(hash_lock); + } else { + ASSERT(MUTEX_HELD(hash_lock)); + } + + for (fhdr = buf_hash_table.ht_table[idx], i = 0; fhdr != NULL; + fhdr = fhdr->b_hash_next, i++) { + if (BUF_EQUAL(hdr->b_spa, &hdr->b_dva, hdr->b_birth, fhdr)) + return (fhdr); + } + + hdr->b_hash_next = buf_hash_table.ht_table[idx]; + buf_hash_table.ht_table[idx] = hdr; + hdr->b_flags |= ARC_FLAG_IN_HASH_TABLE; + + /* collect some hash table performance data */ + if (i > 0) { + ARCSTAT_BUMP(arcstat_hash_collisions); + if (i == 1) + ARCSTAT_BUMP(arcstat_hash_chains); + + ARCSTAT_MAX(arcstat_hash_chain_max, i); + } + + ARCSTAT_BUMP(arcstat_hash_elements); + ARCSTAT_MAXSTAT(arcstat_hash_elements); + + return (NULL); +} + +static void +buf_hash_remove(arc_buf_hdr_t *hdr) +{ + arc_buf_hdr_t *fhdr, **hdrp; + uint64_t idx = BUF_HASH_INDEX(hdr->b_spa, &hdr->b_dva, hdr->b_birth); + + ASSERT(MUTEX_HELD(BUF_HASH_LOCK(idx))); + ASSERT(HDR_IN_HASH_TABLE(hdr)); + + hdrp = &buf_hash_table.ht_table[idx]; + while ((fhdr = *hdrp) != hdr) { + ASSERT(fhdr != NULL); + hdrp = &fhdr->b_hash_next; + } + *hdrp = hdr->b_hash_next; + hdr->b_hash_next = NULL; + hdr->b_flags &= ~ARC_FLAG_IN_HASH_TABLE; + + /* collect some hash table performance data */ + ARCSTAT_BUMPDOWN(arcstat_hash_elements); + + if (buf_hash_table.ht_table[idx] && + buf_hash_table.ht_table[idx]->b_hash_next == NULL) + ARCSTAT_BUMPDOWN(arcstat_hash_chains); +} + +/* + * Global data structures and functions for the buf kmem cache. + */ +static kmem_cache_t *hdr_full_cache; +static kmem_cache_t *hdr_l2only_cache; +static kmem_cache_t *buf_cache; + +static void +buf_fini(void) +{ + int i; + +#if defined(_KERNEL) && defined(HAVE_SPL) + /* + * Large allocations which do not require contiguous pages + * should be using vmem_free() in the linux kernel\ + */ + vmem_free(buf_hash_table.ht_table, + (buf_hash_table.ht_mask + 1) * sizeof (void *)); +#else + kmem_free(buf_hash_table.ht_table, + (buf_hash_table.ht_mask + 1) * sizeof (void *)); +#endif + for (i = 0; i < BUF_LOCKS; i++) + mutex_destroy(&buf_hash_table.ht_locks[i].ht_lock); + kmem_cache_destroy(hdr_full_cache); + kmem_cache_destroy(hdr_l2only_cache); + kmem_cache_destroy(buf_cache); +} + +/* + * Constructor callback - called when the cache is empty + * and a new buf is requested. + */ +/* ARGSUSED */ +static int +hdr_full_cons(void *vbuf, void *unused, int kmflag) +{ + arc_buf_hdr_t *hdr = vbuf; + + bzero(hdr, HDR_FULL_SIZE); + cv_init(&hdr->b_l1hdr.b_cv, NULL, CV_DEFAULT, NULL); + refcount_create(&hdr->b_l1hdr.b_refcnt); + mutex_init(&hdr->b_l1hdr.b_freeze_lock, NULL, MUTEX_DEFAULT, NULL); + list_link_init(&hdr->b_l1hdr.b_arc_node); + list_link_init(&hdr->b_l2hdr.b_l2node); + multilist_link_init(&hdr->b_l1hdr.b_arc_node); + arc_space_consume(HDR_FULL_SIZE, ARC_SPACE_HDRS); + + return (0); +} + +/* ARGSUSED */ +static int +hdr_l2only_cons(void *vbuf, void *unused, int kmflag) +{ + arc_buf_hdr_t *hdr = vbuf; + + bzero(hdr, HDR_L2ONLY_SIZE); + arc_space_consume(HDR_L2ONLY_SIZE, ARC_SPACE_L2HDRS); + + return (0); +} + +/* ARGSUSED */ +static int +buf_cons(void *vbuf, void *unused, int kmflag) +{ + arc_buf_t *buf = vbuf; + + bzero(buf, sizeof (arc_buf_t)); + mutex_init(&buf->b_evict_lock, NULL, MUTEX_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_t), ARC_SPACE_HDRS); + + return (0); +} + +/* + * Destructor callback - called when a cached buf is + * no longer required. + */ +/* ARGSUSED */ +static void +hdr_full_dest(void *vbuf, void *unused) +{ + arc_buf_hdr_t *hdr = vbuf; + + ASSERT(BUF_EMPTY(hdr)); + cv_destroy(&hdr->b_l1hdr.b_cv); + refcount_destroy(&hdr->b_l1hdr.b_refcnt); + mutex_destroy(&hdr->b_l1hdr.b_freeze_lock); + ASSERT(!multilist_link_active(&hdr->b_l1hdr.b_arc_node)); + arc_space_return(HDR_FULL_SIZE, ARC_SPACE_HDRS); +} + +/* ARGSUSED */ +static void +hdr_l2only_dest(void *vbuf, void *unused) +{ + ASSERTV(arc_buf_hdr_t *hdr = vbuf); + + ASSERT(BUF_EMPTY(hdr)); + arc_space_return(HDR_L2ONLY_SIZE, ARC_SPACE_L2HDRS); +} + +/* ARGSUSED */ +static void +buf_dest(void *vbuf, void *unused) +{ + arc_buf_t *buf = vbuf; + + mutex_destroy(&buf->b_evict_lock); + arc_space_return(sizeof (arc_buf_t), ARC_SPACE_HDRS); +} + +/* + * Reclaim callback -- invoked when memory is low. + */ +/* ARGSUSED */ +static void +hdr_recl(void *unused) +{ + dprintf("hdr_recl called\n"); + /* + * umem calls the reclaim func when we destroy the buf cache, + * which is after we do arc_fini(). + */ + if (!arc_dead) + cv_signal(&arc_reclaim_thread_cv); +} + +static void +buf_init(void) +{ + uint64_t *ct; + uint64_t hsize = 1ULL << 12; + int i, j; + + /* + * The hash table is big enough to fill all of physical memory + * with an average block size of zfs_arc_average_blocksize (default 8K). + * By default, the table will take up + * totalmem * sizeof(void*) / 8K (1MB per GB with 8-byte pointers). + */ + while (hsize * zfs_arc_average_blocksize < physmem * PAGESIZE) + hsize <<= 1; +retry: + buf_hash_table.ht_mask = hsize - 1; +#if defined(_KERNEL) && defined(HAVE_SPL) + /* + * Large allocations which do not require contiguous pages + * should be using vmem_alloc() in the linux kernel + */ + buf_hash_table.ht_table = + vmem_zalloc(hsize * sizeof (void*), KM_SLEEP); +#else + buf_hash_table.ht_table = + kmem_zalloc(hsize * sizeof (void*), KM_NOSLEEP); +#endif + if (buf_hash_table.ht_table == NULL) { + ASSERT(hsize > (1ULL << 8)); + hsize >>= 1; + goto retry; + } + + hdr_full_cache = kmem_cache_create("arc_buf_hdr_t_full", HDR_FULL_SIZE, + 0, hdr_full_cons, hdr_full_dest, hdr_recl, NULL, NULL, 0); + hdr_l2only_cache = kmem_cache_create("arc_buf_hdr_t_l2only", + HDR_L2ONLY_SIZE, 0, hdr_l2only_cons, hdr_l2only_dest, hdr_recl, + NULL, NULL, 0); + buf_cache = kmem_cache_create("arc_buf_t", sizeof (arc_buf_t), + 0, buf_cons, buf_dest, NULL, NULL, NULL, 0); + + for (i = 0; i < 256; i++) + for (ct = zfs_crc64_table + i, *ct = i, j = 8; j > 0; j--) + *ct = (*ct >> 1) ^ (-(*ct & 1) & ZFS_CRC64_POLY); + + for (i = 0; i < BUF_LOCKS; i++) { + mutex_init(&buf_hash_table.ht_locks[i].ht_lock, + NULL, MUTEX_DEFAULT, NULL); + } +} + +/* + * Transition between the two allocation states for the arc_buf_hdr struct. + * The arc_buf_hdr struct can be allocated with (hdr_full_cache) or without + * (hdr_l2only_cache) the fields necessary for the L1 cache - the smaller + * version is used when a cache buffer is only in the L2ARC in order to reduce + * memory usage. + */ +static arc_buf_hdr_t * +arc_hdr_realloc(arc_buf_hdr_t *hdr, kmem_cache_t *old, kmem_cache_t *new) +{ + arc_buf_hdr_t *nhdr; + l2arc_dev_t *dev; + + ASSERT(HDR_HAS_L2HDR(hdr)); + ASSERT((old == hdr_full_cache && new == hdr_l2only_cache) || + (old == hdr_l2only_cache && new == hdr_full_cache)); + + dev = hdr->b_l2hdr.b_dev; + nhdr = kmem_cache_alloc(new, KM_PUSHPAGE); + + ASSERT(MUTEX_HELD(HDR_LOCK(hdr))); + buf_hash_remove(hdr); + + bcopy(hdr, nhdr, HDR_L2ONLY_SIZE); + + if (new == hdr_full_cache) { + nhdr->b_flags |= ARC_FLAG_HAS_L1HDR; + /* + * arc_access and arc_change_state need to be aware that a + * header has just come out of L2ARC, so we set its state to + * l2c_only even though it's about to change. + */ + nhdr->b_l1hdr.b_state = arc_l2c_only; + + /* Verify previous threads set to NULL before freeing */ + ASSERT3P(nhdr->b_l1hdr.b_tmp_cdata, ==, NULL); + } else { + ASSERT(hdr->b_l1hdr.b_buf == NULL); + ASSERT0(hdr->b_l1hdr.b_datacnt); + + /* + * If we've reached here, We must have been called from + * arc_evict_hdr(), as such we should have already been + * removed from any ghost list we were previously on + * (which protects us from racing with arc_evict_state), + * thus no locking is needed during this check. + */ + ASSERT(!multilist_link_active(&hdr->b_l1hdr.b_arc_node)); + + /* + * A buffer must not be moved into the arc_l2c_only + * state if it's not finished being written out to the + * l2arc device. Otherwise, the b_l1hdr.b_tmp_cdata field + * might try to be accessed, even though it was removed. + */ + VERIFY(!HDR_L2_WRITING(hdr)); + VERIFY3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL); + + nhdr->b_flags &= ~ARC_FLAG_HAS_L1HDR; + } + /* + * The header has been reallocated so we need to re-insert it into any + * lists it was on. + */ + (void) buf_hash_insert(nhdr, NULL); + + ASSERT(list_link_active(&hdr->b_l2hdr.b_l2node)); + + mutex_enter(&dev->l2ad_mtx); + + /* + * We must place the realloc'ed header back into the list at + * the same spot. Otherwise, if it's placed earlier in the list, + * l2arc_write_buffers() could find it during the function's + * write phase, and try to write it out to the l2arc. + */ + list_insert_after(&dev->l2ad_buflist, hdr, nhdr); + list_remove(&dev->l2ad_buflist, hdr); + + mutex_exit(&dev->l2ad_mtx); + + /* + * Since we're using the pointer address as the tag when + * incrementing and decrementing the l2ad_alloc refcount, we + * must remove the old pointer (that we're about to destroy) and + * add the new pointer to the refcount. Otherwise we'd remove + * the wrong pointer address when calling arc_hdr_destroy() later. + */ + + (void) refcount_remove_many(&dev->l2ad_alloc, + hdr->b_l2hdr.b_asize, hdr); + + (void) refcount_add_many(&dev->l2ad_alloc, + nhdr->b_l2hdr.b_asize, nhdr); + + buf_discard_identity(hdr); + hdr->b_freeze_cksum = NULL; + kmem_cache_free(old, hdr); + + return (nhdr); +} + + +#define ARC_MINTIME (hz>>4) /* 62 ms */ + +static void +arc_cksum_verify(arc_buf_t *buf) +{ + zio_cksum_t zc; + + if (!(zfs_flags & ZFS_DEBUG_MODIFY)) + return; + + mutex_enter(&buf->b_hdr->b_l1hdr.b_freeze_lock); + if (buf->b_hdr->b_freeze_cksum == NULL || HDR_IO_ERROR(buf->b_hdr)) { + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); + return; + } + fletcher_2_native(buf->b_data, buf->b_hdr->b_size, &zc); + if (!ZIO_CHECKSUM_EQUAL(*buf->b_hdr->b_freeze_cksum, zc)) + panic("buffer modified while frozen!"); + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); +} + +static int +arc_cksum_equal(arc_buf_t *buf) +{ + zio_cksum_t zc; + int equal; + + mutex_enter(&buf->b_hdr->b_l1hdr.b_freeze_lock); + fletcher_2_native(buf->b_data, buf->b_hdr->b_size, &zc); + equal = ZIO_CHECKSUM_EQUAL(*buf->b_hdr->b_freeze_cksum, zc); + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); + + return (equal); +} + +static void +arc_cksum_compute(arc_buf_t *buf, boolean_t force) +{ + if (!force && !(zfs_flags & ZFS_DEBUG_MODIFY)) + return; + + mutex_enter(&buf->b_hdr->b_l1hdr.b_freeze_lock); + if (buf->b_hdr->b_freeze_cksum != NULL) { + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); + return; + } + buf->b_hdr->b_freeze_cksum = kmem_alloc(sizeof (zio_cksum_t), KM_SLEEP); + fletcher_2_native(buf->b_data, buf->b_hdr->b_size, + buf->b_hdr->b_freeze_cksum); + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); + arc_buf_watch(buf); +} + +#ifndef _KERNEL +void +arc_buf_sigsegv(int sig, siginfo_t *si, void *unused) +{ + panic("Got SIGSEGV at address: 0x%lx\n", (long) si->si_addr); +} +#endif + +/* ARGSUSED */ +static void +arc_buf_unwatch(arc_buf_t *buf) +{ +#ifndef _KERNEL + if (arc_watch) { + ASSERT0(mprotect(buf->b_data, buf->b_hdr->b_size, + PROT_READ | PROT_WRITE)); + } +#endif +} + +/* ARGSUSED */ +static void +arc_buf_watch(arc_buf_t *buf) +{ +#ifndef _KERNEL + if (arc_watch) + ASSERT0(mprotect(buf->b_data, buf->b_hdr->b_size, PROT_READ)); +#endif +} + +static arc_buf_contents_t +arc_buf_type(arc_buf_hdr_t *hdr) +{ + if (HDR_ISTYPE_METADATA(hdr)) { + return (ARC_BUFC_METADATA); + } else { + return (ARC_BUFC_DATA); + } +} + +static uint32_t +arc_bufc_to_flags(arc_buf_contents_t type) +{ + switch (type) { + case ARC_BUFC_DATA: + /* metadata field is 0 if buffer contains normal data */ + return (0); + case ARC_BUFC_METADATA: + return (ARC_FLAG_BUFC_METADATA); + default: + break; + } + panic("undefined ARC buffer type!"); + return ((uint32_t)-1); +} + +void +arc_buf_thaw(arc_buf_t *buf) +{ + if (zfs_flags & ZFS_DEBUG_MODIFY) { + if (buf->b_hdr->b_l1hdr.b_state != arc_anon) + panic("modifying non-anon buffer!"); + if (HDR_IO_IN_PROGRESS(buf->b_hdr)) + panic("modifying buffer while i/o in progress!"); + arc_cksum_verify(buf); + } + + mutex_enter(&buf->b_hdr->b_l1hdr.b_freeze_lock); + if (buf->b_hdr->b_freeze_cksum != NULL) { + kmem_free(buf->b_hdr->b_freeze_cksum, sizeof (zio_cksum_t)); + buf->b_hdr->b_freeze_cksum = NULL; + } + + mutex_exit(&buf->b_hdr->b_l1hdr.b_freeze_lock); + + arc_buf_unwatch(buf); +} + +void +arc_buf_freeze(arc_buf_t *buf) +{ + kmutex_t *hash_lock; + + if (!(zfs_flags & ZFS_DEBUG_MODIFY)) + return; + + hash_lock = HDR_LOCK(buf->b_hdr); + mutex_enter(hash_lock); + + ASSERT(buf->b_hdr->b_freeze_cksum != NULL || + buf->b_hdr->b_l1hdr.b_state == arc_anon); + arc_cksum_compute(buf, B_FALSE); + mutex_exit(hash_lock); + +} + +static void +add_reference(arc_buf_hdr_t *hdr, kmutex_t *hash_lock, void *tag) +{ + arc_state_t *state; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(MUTEX_HELD(hash_lock)); + + state = hdr->b_l1hdr.b_state; + + if ((refcount_add(&hdr->b_l1hdr.b_refcnt, tag) == 1) && + (state != arc_anon)) { + /* We don't use the L2-only state list. */ + if (state != arc_l2c_only) { + arc_buf_contents_t type = arc_buf_type(hdr); + uint64_t delta = hdr->b_size * hdr->b_l1hdr.b_datacnt; + multilist_t *list = &state->arcs_list[type]; + uint64_t *size = &state->arcs_lsize[type]; + + multilist_remove(list, hdr); + + if (GHOST_STATE(state)) { + ASSERT0(hdr->b_l1hdr.b_datacnt); + ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); + delta = hdr->b_size; + } + ASSERT(delta > 0); + ASSERT3U(*size, >=, delta); + atomic_add_64(size, -delta); + } + /* remove the prefetch flag if we get a reference */ + hdr->b_flags &= ~ARC_FLAG_PREFETCH; + } +} + +static int +remove_reference(arc_buf_hdr_t *hdr, kmutex_t *hash_lock, void *tag) +{ + int cnt; + arc_state_t *state = hdr->b_l1hdr.b_state; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(state == arc_anon || MUTEX_HELD(hash_lock)); + ASSERT(!GHOST_STATE(state)); + + /* + * arc_l2c_only counts as a ghost state so we don't need to explicitly + * check to prevent usage of the arc_l2c_only list. + */ + if (((cnt = refcount_remove(&hdr->b_l1hdr.b_refcnt, tag)) == 0) && + (state != arc_anon)) { + arc_buf_contents_t type = arc_buf_type(hdr); + multilist_t *list = &state->arcs_list[type]; + uint64_t *size = &state->arcs_lsize[type]; + + multilist_insert(list, hdr); + + ASSERT(hdr->b_l1hdr.b_datacnt > 0); + atomic_add_64(size, hdr->b_size * + hdr->b_l1hdr.b_datacnt); + } + return (cnt); +} + +/* + * Returns detailed information about a specific arc buffer. When the + * state_index argument is set the function will calculate the arc header + * list position for its arc state. Since this requires a linear traversal + * callers are strongly encourage not to do this. However, it can be helpful + * for targeted analysis so the functionality is provided. + */ +void +arc_buf_info(arc_buf_t *ab, arc_buf_info_t *abi, int state_index) +{ + arc_buf_hdr_t *hdr = ab->b_hdr; + l1arc_buf_hdr_t *l1hdr = NULL; + l2arc_buf_hdr_t *l2hdr = NULL; + arc_state_t *state = NULL; + + if (HDR_HAS_L1HDR(hdr)) { + l1hdr = &hdr->b_l1hdr; + state = l1hdr->b_state; + } + if (HDR_HAS_L2HDR(hdr)) + l2hdr = &hdr->b_l2hdr; + + memset(abi, 0, sizeof (arc_buf_info_t)); + abi->abi_flags = hdr->b_flags; + + if (l1hdr) { + abi->abi_datacnt = l1hdr->b_datacnt; + abi->abi_access = l1hdr->b_arc_access; + abi->abi_mru_hits = l1hdr->b_mru_hits; + abi->abi_mru_ghost_hits = l1hdr->b_mru_ghost_hits; + abi->abi_mfu_hits = l1hdr->b_mfu_hits; + abi->abi_mfu_ghost_hits = l1hdr->b_mfu_ghost_hits; + abi->abi_holds = refcount_count(&l1hdr->b_refcnt); + } + + if (l2hdr) { + abi->abi_l2arc_dattr = l2hdr->b_daddr; + abi->abi_l2arc_asize = l2hdr->b_asize; + abi->abi_l2arc_compress = l2hdr->b_compress; + abi->abi_l2arc_hits = l2hdr->b_hits; + } + + abi->abi_state_type = state ? state->arcs_state : ARC_STATE_ANON; + abi->abi_state_contents = arc_buf_type(hdr); + abi->abi_size = hdr->b_size; +} + +/* + * Move the supplied buffer to the indicated state. The hash lock + * for the buffer must be held by the caller. + */ +static void +arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, + kmutex_t *hash_lock) +{ + arc_state_t *old_state; + int64_t refcnt; + uint32_t datacnt; + uint64_t from_delta, to_delta; + arc_buf_contents_t buftype = arc_buf_type(hdr); + + /* + * We almost always have an L1 hdr here, since we call arc_hdr_realloc() + * in arc_read() when bringing a buffer out of the L2ARC. However, the + * L1 hdr doesn't always exist when we change state to arc_anon before + * destroying a header, in which case reallocating to add the L1 hdr is + * pointless. + */ + if (HDR_HAS_L1HDR(hdr)) { + old_state = hdr->b_l1hdr.b_state; + refcnt = refcount_count(&hdr->b_l1hdr.b_refcnt); + datacnt = hdr->b_l1hdr.b_datacnt; + } else { + old_state = arc_l2c_only; + refcnt = 0; + datacnt = 0; + } + + ASSERT(MUTEX_HELD(hash_lock)); + ASSERT3P(new_state, !=, old_state); + ASSERT(refcnt == 0 || datacnt > 0); + ASSERT(!GHOST_STATE(new_state) || datacnt == 0); + ASSERT(old_state != arc_anon || datacnt <= 1); + + from_delta = to_delta = datacnt * hdr->b_size; + + /* + * If this buffer is evictable, transfer it from the + * old state list to the new state list. + */ + if (refcnt == 0) { + if (old_state != arc_anon && old_state != arc_l2c_only) { + uint64_t *size = &old_state->arcs_lsize[buftype]; + + ASSERT(HDR_HAS_L1HDR(hdr)); + multilist_remove(&old_state->arcs_list[buftype], hdr); + + /* + * If prefetching out of the ghost cache, + * we will have a non-zero datacnt. + */ + if (GHOST_STATE(old_state) && datacnt == 0) { + /* ghost elements have a ghost size */ + ASSERT(hdr->b_l1hdr.b_buf == NULL); + from_delta = hdr->b_size; + } + ASSERT3U(*size, >=, from_delta); + atomic_add_64(size, -from_delta); + } + if (new_state != arc_anon && new_state != arc_l2c_only) { + uint64_t *size = &new_state->arcs_lsize[buftype]; + + /* + * An L1 header always exists here, since if we're + * moving to some L1-cached state (i.e. not l2c_only or + * anonymous), we realloc the header to add an L1hdr + * beforehand. + */ + ASSERT(HDR_HAS_L1HDR(hdr)); + multilist_insert(&new_state->arcs_list[buftype], hdr); + + /* ghost elements have a ghost size */ + if (GHOST_STATE(new_state)) { + ASSERT0(datacnt); + ASSERT(hdr->b_l1hdr.b_buf == NULL); + to_delta = hdr->b_size; + } + atomic_add_64(size, to_delta); + } + } + + ASSERT(!BUF_EMPTY(hdr)); + if (new_state == arc_anon && HDR_IN_HASH_TABLE(hdr)) + buf_hash_remove(hdr); + + /* adjust state sizes (ignore arc_l2c_only) */ + + if (to_delta && new_state != arc_l2c_only) { + ASSERT(HDR_HAS_L1HDR(hdr)); + if (GHOST_STATE(new_state)) { + ASSERT0(datacnt); + + /* + * We moving a header to a ghost state, we first + * remove all arc buffers. Thus, we'll have a + * datacnt of zero, and no arc buffer to use for + * the reference. As a result, we use the arc + * header pointer for the reference. + */ + (void) refcount_add_many(&new_state->arcs_size, + hdr->b_size, hdr); + } else { + arc_buf_t *buf; + ASSERT3U(datacnt, !=, 0); + + /* + * Each individual buffer holds a unique reference, + * thus we must remove each of these references one + * at a time. + */ + for (buf = hdr->b_l1hdr.b_buf; buf != NULL; + buf = buf->b_next) { + (void) refcount_add_many(&new_state->arcs_size, + hdr->b_size, buf); + } + } + } + + if (from_delta && old_state != arc_l2c_only) { + ASSERT(HDR_HAS_L1HDR(hdr)); + if (GHOST_STATE(old_state)) { + /* + * When moving a header off of a ghost state, + * there's the possibility for datacnt to be + * non-zero. This is because we first add the + * arc buffer to the header prior to changing + * the header's state. Since we used the header + * for the reference when putting the header on + * the ghost state, we must balance that and use + * the header when removing off the ghost state + * (even though datacnt is non zero). + */ + + IMPLY(datacnt == 0, new_state == arc_anon || + new_state == arc_l2c_only); + + (void) refcount_remove_many(&old_state->arcs_size, + hdr->b_size, hdr); + } else { + arc_buf_t *buf; + ASSERT3U(datacnt, !=, 0); + + /* + * Each individual buffer holds a unique reference, + * thus we must remove each of these references one + * at a time. + */ + for (buf = hdr->b_l1hdr.b_buf; buf != NULL; + buf = buf->b_next) { + (void) refcount_remove_many( + &old_state->arcs_size, hdr->b_size, buf); + } + } + } + + if (HDR_HAS_L1HDR(hdr)) + hdr->b_l1hdr.b_state = new_state; + + /* + * L2 headers should never be on the L2 state list since they don't + * have L1 headers allocated. + */ + ASSERT(multilist_is_empty(&arc_l2c_only->arcs_list[ARC_BUFC_DATA]) && + multilist_is_empty(&arc_l2c_only->arcs_list[ARC_BUFC_METADATA])); +} + +void +arc_space_consume(uint64_t space, arc_space_type_t type) +{ + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + default: + break; + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, space); + break; + case ARC_SPACE_META: + ARCSTAT_INCR(arcstat_metadata_size, space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, space); + break; + } + + if (type != ARC_SPACE_DATA) + ARCSTAT_INCR(arcstat_meta_used, space); + + atomic_add_64(&arc_size, space); +} + +void +arc_space_return(uint64_t space, arc_space_type_t type) +{ + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + default: + break; + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, -space); + break; + case ARC_SPACE_META: + ARCSTAT_INCR(arcstat_metadata_size, -space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, -space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, -space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, -space); + break; + } + + if (type != ARC_SPACE_DATA) { + ASSERT(arc_meta_used >= space); + if (arc_meta_max < arc_meta_used) + arc_meta_max = arc_meta_used; + ARCSTAT_INCR(arcstat_meta_used, -space); + } + + ASSERT(arc_size >= space); + atomic_add_64(&arc_size, -space); +} + +arc_buf_t * +arc_buf_alloc(spa_t *spa, uint64_t size, void *tag, arc_buf_contents_t type) +{ + arc_buf_hdr_t *hdr; + arc_buf_t *buf; + + VERIFY3U(size, <=, spa_maxblocksize(spa)); + hdr = kmem_cache_alloc(hdr_full_cache, KM_PUSHPAGE); + ASSERT(BUF_EMPTY(hdr)); + ASSERT3P(hdr->b_freeze_cksum, ==, NULL); + hdr->b_size = size; + hdr->b_spa = spa_load_guid(spa); + hdr->b_l1hdr.b_mru_hits = 0; + hdr->b_l1hdr.b_mru_ghost_hits = 0; + hdr->b_l1hdr.b_mfu_hits = 0; + hdr->b_l1hdr.b_mfu_ghost_hits = 0; + hdr->b_l1hdr.b_l2_hits = 0; + + buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); + buf->b_hdr = hdr; + buf->b_data = NULL; + buf->b_efunc = NULL; + buf->b_private = NULL; + buf->b_next = NULL; + + hdr->b_flags = arc_bufc_to_flags(type); + hdr->b_flags |= ARC_FLAG_HAS_L1HDR; + + hdr->b_l1hdr.b_buf = buf; + hdr->b_l1hdr.b_state = arc_anon; + hdr->b_l1hdr.b_arc_access = 0; + hdr->b_l1hdr.b_datacnt = 1; + hdr->b_l1hdr.b_tmp_cdata = NULL; + + arc_get_data_buf(buf); + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + (void) refcount_add(&hdr->b_l1hdr.b_refcnt, tag); + + return (buf); +} + +static char *arc_onloan_tag = "onloan"; + +/* + * Loan out an anonymous arc buffer. Loaned buffers are not counted as in + * flight data by arc_tempreserve_space() until they are "returned". Loaned + * buffers must be returned to the arc before they can be used by the DMU or + * freed. + */ +arc_buf_t * +arc_loan_buf(spa_t *spa, uint64_t size) +{ + arc_buf_t *buf; + + buf = arc_buf_alloc(spa, size, arc_onloan_tag, ARC_BUFC_DATA); + + atomic_add_64(&arc_loaned_bytes, size); + return (buf); +} + +/* + * Return a loaned arc buffer to the arc. + */ +void +arc_return_buf(arc_buf_t *buf, void *tag) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + + ASSERT(buf->b_data != NULL); + ASSERT(HDR_HAS_L1HDR(hdr)); + (void) refcount_add(&hdr->b_l1hdr.b_refcnt, tag); + (void) refcount_remove(&hdr->b_l1hdr.b_refcnt, arc_onloan_tag); + + atomic_add_64(&arc_loaned_bytes, -hdr->b_size); +} + +/* Detach an arc_buf from a dbuf (tag) */ +void +arc_loan_inuse_buf(arc_buf_t *buf, void *tag) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + + ASSERT(buf->b_data != NULL); + ASSERT(HDR_HAS_L1HDR(hdr)); + (void) refcount_add(&hdr->b_l1hdr.b_refcnt, arc_onloan_tag); + (void) refcount_remove(&hdr->b_l1hdr.b_refcnt, tag); + buf->b_efunc = NULL; + buf->b_private = NULL; + + atomic_add_64(&arc_loaned_bytes, hdr->b_size); +} + +static arc_buf_t * +arc_buf_clone(arc_buf_t *from) +{ + arc_buf_t *buf; + arc_buf_hdr_t *hdr = from->b_hdr; + uint64_t size = hdr->b_size; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(hdr->b_l1hdr.b_state != arc_anon); + + buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); + buf->b_hdr = hdr; + buf->b_data = NULL; + buf->b_efunc = NULL; + buf->b_private = NULL; + buf->b_next = hdr->b_l1hdr.b_buf; + hdr->b_l1hdr.b_buf = buf; + arc_get_data_buf(buf); + bcopy(from->b_data, buf->b_data, size); + + /* + * This buffer already exists in the arc so create a duplicate + * copy for the caller. If the buffer is associated with user data + * then track the size and number of duplicates. These stats will be + * updated as duplicate buffers are created and destroyed. + */ + if (HDR_ISTYPE_DATA(hdr)) { + ARCSTAT_BUMP(arcstat_duplicate_buffers); + ARCSTAT_INCR(arcstat_duplicate_buffers_size, size); + } + hdr->b_l1hdr.b_datacnt += 1; + return (buf); +} + +void +arc_buf_add_ref(arc_buf_t *buf, void* tag) +{ + arc_buf_hdr_t *hdr; + kmutex_t *hash_lock; + + /* + * Check to see if this buffer is evicted. Callers + * must verify b_data != NULL to know if the add_ref + * was successful. + */ + mutex_enter(&buf->b_evict_lock); + if (buf->b_data == NULL) { + mutex_exit(&buf->b_evict_lock); + return; + } + hash_lock = HDR_LOCK(buf->b_hdr); + mutex_enter(hash_lock); + hdr = buf->b_hdr; + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + mutex_exit(&buf->b_evict_lock); + + ASSERT(hdr->b_l1hdr.b_state == arc_mru || + hdr->b_l1hdr.b_state == arc_mfu); + + add_reference(hdr, hash_lock, tag); + DTRACE_PROBE1(arc__hit, arc_buf_hdr_t *, hdr); + arc_access(hdr, hash_lock); + mutex_exit(hash_lock); + ARCSTAT_BUMP(arcstat_hits); + ARCSTAT_CONDSTAT(!HDR_PREFETCH(hdr), + demand, prefetch, !HDR_ISTYPE_METADATA(hdr), + data, metadata, hits); +} + +static void +arc_buf_free_on_write(void *data, size_t size, + void (*free_func)(void *, size_t)) +{ + l2arc_data_free_t *df; + + df = kmem_alloc(sizeof (*df), KM_SLEEP); + df->l2df_data = data; + df->l2df_size = size; + df->l2df_func = free_func; + mutex_enter(&l2arc_free_on_write_mtx); + list_insert_head(l2arc_free_on_write, df); + mutex_exit(&l2arc_free_on_write_mtx); +} + +/* + * Free the arc data buffer. If it is an l2arc write in progress, + * the buffer is placed on l2arc_free_on_write to be freed later. + */ +static void +arc_buf_data_free(arc_buf_t *buf, void (*free_func)(void *, size_t)) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + + if (HDR_L2_WRITING(hdr)) { + arc_buf_free_on_write(buf->b_data, hdr->b_size, free_func); + ARCSTAT_BUMP(arcstat_l2_free_on_write); + } else { + free_func(buf->b_data, hdr->b_size); + } +} + +static void +arc_buf_l2_cdata_free(arc_buf_hdr_t *hdr) +{ + ASSERT(HDR_HAS_L2HDR(hdr)); + ASSERT(MUTEX_HELD(&hdr->b_l2hdr.b_dev->l2ad_mtx)); + + /* + * The b_tmp_cdata field is linked off of the b_l1hdr, so if + * that doesn't exist, the header is in the arc_l2c_only state, + * and there isn't anything to free (it's already been freed). + */ + if (!HDR_HAS_L1HDR(hdr)) + return; + + /* + * The header isn't being written to the l2arc device, thus it + * shouldn't have a b_tmp_cdata to free. + */ + if (!HDR_L2_WRITING(hdr)) { + ASSERT3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL); + return; + } + + /* + * The header does not have compression enabled. This can be due + * to the buffer not being compressible, or because we're + * freeing the buffer before the second phase of + * l2arc_write_buffer() has started (which does the compression + * step). In either case, b_tmp_cdata does not point to a + * separately compressed buffer, so there's nothing to free (it + * points to the same buffer as the arc_buf_t's b_data field). + */ + if (hdr->b_l2hdr.b_compress == ZIO_COMPRESS_OFF) { + hdr->b_l1hdr.b_tmp_cdata = NULL; + return; + } + + /* + * There's nothing to free since the buffer was all zero's and + * compressed to a zero length buffer. + */ + if (hdr->b_l2hdr.b_compress == ZIO_COMPRESS_EMPTY) { + ASSERT3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL); + return; + } + + ASSERT(L2ARC_IS_VALID_COMPRESS(hdr->b_l2hdr.b_compress)); + + arc_buf_free_on_write(hdr->b_l1hdr.b_tmp_cdata, + hdr->b_size, zio_data_buf_free); + + ARCSTAT_BUMP(arcstat_l2_cdata_free_on_write); + hdr->b_l1hdr.b_tmp_cdata = NULL; +} + +/* + * Free up buf->b_data and if 'remove' is set, then pull the + * arc_buf_t off of the the arc_buf_hdr_t's list and free it. + */ +static void +arc_buf_destroy(arc_buf_t *buf, boolean_t remove) +{ + arc_buf_t **bufp; + + /* free up data associated with the buf */ + if (buf->b_data != NULL) { + arc_state_t *state = buf->b_hdr->b_l1hdr.b_state; + uint64_t size = buf->b_hdr->b_size; + arc_buf_contents_t type = arc_buf_type(buf->b_hdr); + + arc_cksum_verify(buf); + arc_buf_unwatch(buf); + + if (type == ARC_BUFC_METADATA) { + arc_buf_data_free(buf, zio_buf_free); + arc_space_return(size, ARC_SPACE_META); + } else { + ASSERT(type == ARC_BUFC_DATA); + arc_buf_data_free(buf, zio_data_buf_free); + arc_space_return(size, ARC_SPACE_DATA); + } + + /* protected by hash lock, if in the hash table */ + if (multilist_link_active(&buf->b_hdr->b_l1hdr.b_arc_node)) { + uint64_t *cnt = &state->arcs_lsize[type]; + + ASSERT(refcount_is_zero( + &buf->b_hdr->b_l1hdr.b_refcnt)); + ASSERT(state != arc_anon && state != arc_l2c_only); + + ASSERT3U(*cnt, >=, size); + atomic_add_64(cnt, -size); + } + + (void) refcount_remove_many(&state->arcs_size, size, buf); + buf->b_data = NULL; + + /* + * If we're destroying a duplicate buffer make sure + * that the appropriate statistics are updated. + */ + if (buf->b_hdr->b_l1hdr.b_datacnt > 1 && + HDR_ISTYPE_DATA(buf->b_hdr)) { + ARCSTAT_BUMPDOWN(arcstat_duplicate_buffers); + ARCSTAT_INCR(arcstat_duplicate_buffers_size, -size); + } + ASSERT(buf->b_hdr->b_l1hdr.b_datacnt > 0); + buf->b_hdr->b_l1hdr.b_datacnt -= 1; + } + + /* only remove the buf if requested */ + if (!remove) + return; + + /* remove the buf from the hdr list */ + for (bufp = &buf->b_hdr->b_l1hdr.b_buf; *bufp != buf; + bufp = &(*bufp)->b_next) + continue; + *bufp = buf->b_next; + buf->b_next = NULL; + + ASSERT(buf->b_efunc == NULL); + + /* clean up the buf */ + buf->b_hdr = NULL; + kmem_cache_free(buf_cache, buf); +} + +static void +arc_hdr_l2hdr_destroy(arc_buf_hdr_t *hdr) +{ + l2arc_buf_hdr_t *l2hdr = &hdr->b_l2hdr; + l2arc_dev_t *dev = l2hdr->b_dev; + + ASSERT(MUTEX_HELD(&dev->l2ad_mtx)); + ASSERT(HDR_HAS_L2HDR(hdr)); + + list_remove(&dev->l2ad_buflist, hdr); + + /* + * We don't want to leak the b_tmp_cdata buffer that was + * allocated in l2arc_write_buffers() + */ + arc_buf_l2_cdata_free(hdr); + + /* + * If the l2hdr's b_daddr is equal to L2ARC_ADDR_UNSET, then + * this header is being processed by l2arc_write_buffers() (i.e. + * it's in the first stage of l2arc_write_buffers()). + * Re-affirming that truth here, just to serve as a reminder. If + * b_daddr does not equal L2ARC_ADDR_UNSET, then the header may or + * may not have its HDR_L2_WRITING flag set. (the write may have + * completed, in which case HDR_L2_WRITING will be false and the + * b_daddr field will point to the address of the buffer on disk). + */ + IMPLY(l2hdr->b_daddr == L2ARC_ADDR_UNSET, HDR_L2_WRITING(hdr)); + + /* + * If b_daddr is equal to L2ARC_ADDR_UNSET, we're racing with + * l2arc_write_buffers(). Since we've just removed this header + * from the l2arc buffer list, this header will never reach the + * second stage of l2arc_write_buffers(), which increments the + * accounting stats for this header. Thus, we must be careful + * not to decrement them for this header either. + */ + if (l2hdr->b_daddr != L2ARC_ADDR_UNSET) { + ARCSTAT_INCR(arcstat_l2_asize, -l2hdr->b_asize); + ARCSTAT_INCR(arcstat_l2_size, -hdr->b_size); + + vdev_space_update(dev->l2ad_vdev, + -l2hdr->b_asize, 0, 0); + + (void) refcount_remove_many(&dev->l2ad_alloc, + l2hdr->b_asize, hdr); + } + + hdr->b_flags &= ~ARC_FLAG_HAS_L2HDR; +} + +static void +arc_hdr_destroy(arc_buf_hdr_t *hdr) +{ + if (HDR_HAS_L1HDR(hdr)) { + ASSERT(hdr->b_l1hdr.b_buf == NULL || + hdr->b_l1hdr.b_datacnt > 0); + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + ASSERT3P(hdr->b_l1hdr.b_state, ==, arc_anon); + } + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + ASSERT(!HDR_IN_HASH_TABLE(hdr)); + + if (HDR_HAS_L2HDR(hdr)) { + l2arc_dev_t *dev = hdr->b_l2hdr.b_dev; + boolean_t buflist_held = MUTEX_HELD(&dev->l2ad_mtx); + + if (!buflist_held) + mutex_enter(&dev->l2ad_mtx); + + /* + * Even though we checked this conditional above, we + * need to check this again now that we have the + * l2ad_mtx. This is because we could be racing with + * another thread calling l2arc_evict() which might have + * destroyed this header's L2 portion as we were waiting + * to acquire the l2ad_mtx. If that happens, we don't + * want to re-destroy the header's L2 portion. + */ + if (HDR_HAS_L2HDR(hdr)) + arc_hdr_l2hdr_destroy(hdr); + + if (!buflist_held) + mutex_exit(&dev->l2ad_mtx); + } + + if (!BUF_EMPTY(hdr)) + buf_discard_identity(hdr); + + if (hdr->b_freeze_cksum != NULL) { + kmem_free(hdr->b_freeze_cksum, sizeof (zio_cksum_t)); + hdr->b_freeze_cksum = NULL; + } + + if (HDR_HAS_L1HDR(hdr)) { + while (hdr->b_l1hdr.b_buf) { + arc_buf_t *buf = hdr->b_l1hdr.b_buf; + + if (buf->b_efunc != NULL) { + mutex_enter(&arc_user_evicts_lock); + mutex_enter(&buf->b_evict_lock); + ASSERT(buf->b_hdr != NULL); + arc_buf_destroy(hdr->b_l1hdr.b_buf, FALSE); + hdr->b_l1hdr.b_buf = buf->b_next; + buf->b_hdr = &arc_eviction_hdr; + buf->b_next = arc_eviction_list; + arc_eviction_list = buf; + mutex_exit(&buf->b_evict_lock); + cv_signal(&arc_user_evicts_cv); + mutex_exit(&arc_user_evicts_lock); + } else { + arc_buf_destroy(hdr->b_l1hdr.b_buf, TRUE); + } + } + } + + ASSERT3P(hdr->b_hash_next, ==, NULL); + if (HDR_HAS_L1HDR(hdr)) { + ASSERT(!multilist_link_active(&hdr->b_l1hdr.b_arc_node)); + ASSERT3P(hdr->b_l1hdr.b_acb, ==, NULL); + kmem_cache_free(hdr_full_cache, hdr); + } else { + kmem_cache_free(hdr_l2only_cache, hdr); + } +} + +void +arc_buf_free(arc_buf_t *buf, void *tag) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + int hashed = hdr->b_l1hdr.b_state != arc_anon; + + ASSERT(buf->b_efunc == NULL); + ASSERT(buf->b_data != NULL); + + if (hashed) { + kmutex_t *hash_lock = HDR_LOCK(hdr); + + mutex_enter(hash_lock); + hdr = buf->b_hdr; + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + + (void) remove_reference(hdr, hash_lock, tag); + if (hdr->b_l1hdr.b_datacnt > 1) { + arc_buf_destroy(buf, TRUE); + } else { + ASSERT(buf == hdr->b_l1hdr.b_buf); + ASSERT(buf->b_efunc == NULL); + hdr->b_flags |= ARC_FLAG_BUF_AVAILABLE; + } + mutex_exit(hash_lock); + } else if (HDR_IO_IN_PROGRESS(hdr)) { + int destroy_hdr; + /* + * We are in the middle of an async write. Don't destroy + * this buffer unless the write completes before we finish + * decrementing the reference count. + */ + mutex_enter(&arc_user_evicts_lock); + (void) remove_reference(hdr, NULL, tag); + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + destroy_hdr = !HDR_IO_IN_PROGRESS(hdr); + mutex_exit(&arc_user_evicts_lock); + if (destroy_hdr) + arc_hdr_destroy(hdr); + } else { + if (remove_reference(hdr, NULL, tag) > 0) + arc_buf_destroy(buf, TRUE); + else + arc_hdr_destroy(hdr); + } +} + +boolean_t +arc_buf_remove_ref(arc_buf_t *buf, void* tag) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + kmutex_t *hash_lock = HDR_LOCK(hdr); + boolean_t no_callback = (buf->b_efunc == NULL); + + if (hdr->b_l1hdr.b_state == arc_anon) { + ASSERT(hdr->b_l1hdr.b_datacnt == 1); + arc_buf_free(buf, tag); + return (no_callback); + } + + mutex_enter(hash_lock); + hdr = buf->b_hdr; + ASSERT(hdr->b_l1hdr.b_datacnt > 0); + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + ASSERT(hdr->b_l1hdr.b_state != arc_anon); + ASSERT(buf->b_data != NULL); + + (void) remove_reference(hdr, hash_lock, tag); + if (hdr->b_l1hdr.b_datacnt > 1) { + if (no_callback) + arc_buf_destroy(buf, TRUE); + } else if (no_callback) { + ASSERT(hdr->b_l1hdr.b_buf == buf && buf->b_next == NULL); + ASSERT(buf->b_efunc == NULL); + hdr->b_flags |= ARC_FLAG_BUF_AVAILABLE; + } + ASSERT(no_callback || hdr->b_l1hdr.b_datacnt > 1 || + refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + mutex_exit(hash_lock); + return (no_callback); +} + +uint64_t +arc_buf_size(arc_buf_t *buf) +{ + return (buf->b_hdr->b_size); +} + +/* + * Called from the DMU to determine if the current buffer should be + * evicted. In order to ensure proper locking, the eviction must be initiated + * from the DMU. Return true if the buffer is associated with user data and + * duplicate buffers still exist. + */ +boolean_t +arc_buf_eviction_needed(arc_buf_t *buf) +{ + arc_buf_hdr_t *hdr; + boolean_t evict_needed = B_FALSE; + + if (zfs_disable_dup_eviction) + return (B_FALSE); + + mutex_enter(&buf->b_evict_lock); + hdr = buf->b_hdr; + if (hdr == NULL) { + /* + * We are in arc_do_user_evicts(); let that function + * perform the eviction. + */ + ASSERT(buf->b_data == NULL); + mutex_exit(&buf->b_evict_lock); + return (B_FALSE); + } else if (buf->b_data == NULL) { + /* + * We have already been added to the arc eviction list; + * recommend eviction. + */ + ASSERT3P(hdr, ==, &arc_eviction_hdr); + mutex_exit(&buf->b_evict_lock); + return (B_TRUE); + } + + if (hdr->b_l1hdr.b_datacnt > 1 && HDR_ISTYPE_DATA(hdr)) + evict_needed = B_TRUE; + + mutex_exit(&buf->b_evict_lock); + return (evict_needed); +} + +/* + * Evict the arc_buf_hdr that is provided as a parameter. The resultant + * state of the header is dependent on its state prior to entering this + * function. The following transitions are possible: + * + * - arc_mru -> arc_mru_ghost + * - arc_mfu -> arc_mfu_ghost + * - arc_mru_ghost -> arc_l2c_only + * - arc_mru_ghost -> deleted + * - arc_mfu_ghost -> arc_l2c_only + * - arc_mfu_ghost -> deleted + */ +static int64_t +arc_evict_hdr(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) +{ + arc_state_t *evicted_state, *state; + int64_t bytes_evicted = 0; + + ASSERT(MUTEX_HELD(hash_lock)); + ASSERT(HDR_HAS_L1HDR(hdr)); + + state = hdr->b_l1hdr.b_state; + if (GHOST_STATE(state)) { + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + ASSERT(hdr->b_l1hdr.b_buf == NULL); + + /* + * l2arc_write_buffers() relies on a header's L1 portion + * (i.e. its b_tmp_cdata field) during its write phase. + * Thus, we cannot push a header onto the arc_l2c_only + * state (removing its L1 piece) until the header is + * done being written to the l2arc. + */ + if (HDR_HAS_L2HDR(hdr) && HDR_L2_WRITING(hdr)) { + ARCSTAT_BUMP(arcstat_evict_l2_skip); + return (bytes_evicted); + } + + ARCSTAT_BUMP(arcstat_deleted); + bytes_evicted += hdr->b_size; + + DTRACE_PROBE1(arc__delete, arc_buf_hdr_t *, hdr); + + if (HDR_HAS_L2HDR(hdr)) { + /* + * This buffer is cached on the 2nd Level ARC; + * don't destroy the header. + */ + arc_change_state(arc_l2c_only, hdr, hash_lock); + /* + * dropping from L1+L2 cached to L2-only, + * realloc to remove the L1 header. + */ + hdr = arc_hdr_realloc(hdr, hdr_full_cache, + hdr_l2only_cache); + } else { + arc_change_state(arc_anon, hdr, hash_lock); + arc_hdr_destroy(hdr); + } + return (bytes_evicted); + } + + ASSERT(state == arc_mru || state == arc_mfu); + evicted_state = (state == arc_mru) ? arc_mru_ghost : arc_mfu_ghost; + + /* prefetch buffers have a minimum lifespan */ + if (HDR_IO_IN_PROGRESS(hdr) || + ((hdr->b_flags & (ARC_FLAG_PREFETCH | ARC_FLAG_INDIRECT)) && + ddi_get_lbolt() - hdr->b_l1hdr.b_arc_access < + arc_min_prefetch_lifespan)) { + ARCSTAT_BUMP(arcstat_evict_skip); + return (bytes_evicted); + } + + ASSERT0(refcount_count(&hdr->b_l1hdr.b_refcnt)); + ASSERT3U(hdr->b_l1hdr.b_datacnt, >, 0); + while (hdr->b_l1hdr.b_buf) { + arc_buf_t *buf = hdr->b_l1hdr.b_buf; + if (!mutex_tryenter(&buf->b_evict_lock)) { + ARCSTAT_BUMP(arcstat_mutex_miss); + break; + } + if (buf->b_data != NULL) + bytes_evicted += hdr->b_size; + if (buf->b_efunc != NULL) { + mutex_enter(&arc_user_evicts_lock); + arc_buf_destroy(buf, FALSE); + hdr->b_l1hdr.b_buf = buf->b_next; + buf->b_hdr = &arc_eviction_hdr; + buf->b_next = arc_eviction_list; + arc_eviction_list = buf; + cv_signal(&arc_user_evicts_cv); + mutex_exit(&arc_user_evicts_lock); + mutex_exit(&buf->b_evict_lock); + } else { + mutex_exit(&buf->b_evict_lock); + arc_buf_destroy(buf, TRUE); + } + } + + if (HDR_HAS_L2HDR(hdr)) { + ARCSTAT_INCR(arcstat_evict_l2_cached, hdr->b_size); + } else { + if (l2arc_write_eligible(hdr->b_spa, hdr)) + ARCSTAT_INCR(arcstat_evict_l2_eligible, hdr->b_size); + else + ARCSTAT_INCR(arcstat_evict_l2_ineligible, hdr->b_size); + } + + if (hdr->b_l1hdr.b_datacnt == 0) { + arc_change_state(evicted_state, hdr, hash_lock); + ASSERT(HDR_IN_HASH_TABLE(hdr)); + hdr->b_flags |= ARC_FLAG_IN_HASH_TABLE; + hdr->b_flags &= ~ARC_FLAG_BUF_AVAILABLE; + DTRACE_PROBE1(arc__evict, arc_buf_hdr_t *, hdr); + } + + return (bytes_evicted); +} + +static uint64_t +arc_evict_state_impl(multilist_t *ml, int idx, arc_buf_hdr_t *marker, + uint64_t spa, int64_t bytes) +{ + multilist_sublist_t *mls; + uint64_t bytes_evicted = 0; + arc_buf_hdr_t *hdr; + kmutex_t *hash_lock; + int evict_count = 0; + + ASSERT3P(marker, !=, NULL); + IMPLY(bytes < 0, bytes == ARC_EVICT_ALL); + + mls = multilist_sublist_lock(ml, idx); + + for (hdr = multilist_sublist_prev(mls, marker); hdr != NULL; + hdr = multilist_sublist_prev(mls, marker)) { + if ((bytes != ARC_EVICT_ALL && bytes_evicted >= bytes) || + (evict_count >= zfs_arc_evict_batch_limit)) + break; + + /* + * To keep our iteration location, move the marker + * forward. Since we're not holding hdr's hash lock, we + * must be very careful and not remove 'hdr' from the + * sublist. Otherwise, other consumers might mistake the + * 'hdr' as not being on a sublist when they call the + * multilist_link_active() function (they all rely on + * the hash lock protecting concurrent insertions and + * removals). multilist_sublist_move_forward() was + * specifically implemented to ensure this is the case + * (only 'marker' will be removed and re-inserted). + */ + multilist_sublist_move_forward(mls, marker); + + /* + * The only case where the b_spa field should ever be + * zero, is the marker headers inserted by + * arc_evict_state(). It's possible for multiple threads + * to be calling arc_evict_state() concurrently (e.g. + * dsl_pool_close() and zio_inject_fault()), so we must + * skip any markers we see from these other threads. + */ + if (hdr->b_spa == 0) + continue; + + /* we're only interested in evicting buffers of a certain spa */ + if (spa != 0 && hdr->b_spa != spa) { + ARCSTAT_BUMP(arcstat_evict_skip); + continue; + } + + hash_lock = HDR_LOCK(hdr); + + /* + * We aren't calling this function from any code path + * that would already be holding a hash lock, so we're + * asserting on this assumption to be defensive in case + * this ever changes. Without this check, it would be + * possible to incorrectly increment arcstat_mutex_miss + * below (e.g. if the code changed such that we called + * this function with a hash lock held). + */ + ASSERT(!MUTEX_HELD(hash_lock)); + + if (mutex_tryenter(hash_lock)) { + uint64_t evicted = arc_evict_hdr(hdr, hash_lock); + mutex_exit(hash_lock); + + bytes_evicted += evicted; + + /* + * If evicted is zero, arc_evict_hdr() must have + * decided to skip this header, don't increment + * evict_count in this case. + */ + if (evicted != 0) + evict_count++; + + /* + * If arc_size isn't overflowing, signal any + * threads that might happen to be waiting. + * + * For each header evicted, we wake up a single + * thread. If we used cv_broadcast, we could + * wake up "too many" threads causing arc_size + * to significantly overflow arc_c; since + * arc_get_data_buf() doesn't check for overflow + * when it's woken up (it doesn't because it's + * possible for the ARC to be overflowing while + * full of un-evictable buffers, and the + * function should proceed in this case). + * + * If threads are left sleeping, due to not + * using cv_broadcast, they will be woken up + * just before arc_reclaim_thread() sleeps. + */ + mutex_enter(&arc_reclaim_lock); + if (!arc_is_overflowing()) + cv_signal(&arc_reclaim_waiters_cv); + mutex_exit(&arc_reclaim_lock); + } else { + ARCSTAT_BUMP(arcstat_mutex_miss); + } + } + + multilist_sublist_unlock(mls); + + return (bytes_evicted); +} + +/* + * Evict buffers from the given arc state, until we've removed the + * specified number of bytes. Move the removed buffers to the + * appropriate evict state. + * + * This function makes a "best effort". It skips over any buffers + * it can't get a hash_lock on, and so, may not catch all candidates. + * It may also return without evicting as much space as requested. + * + * If bytes is specified using the special value ARC_EVICT_ALL, this + * will evict all available (i.e. unlocked and evictable) buffers from + * the given arc state; which is used by arc_flush(). + */ +static uint64_t +arc_evict_state(arc_state_t *state, uint64_t spa, int64_t bytes, + arc_buf_contents_t type) +{ + uint64_t total_evicted = 0; + multilist_t *ml = &state->arcs_list[type]; + int num_sublists; + arc_buf_hdr_t **markers; + int i; + + IMPLY(bytes < 0, bytes == ARC_EVICT_ALL); + + num_sublists = multilist_get_num_sublists(ml); + + /* + * If we've tried to evict from each sublist, made some + * progress, but still have not hit the target number of bytes + * to evict, we want to keep trying. The markers allow us to + * pick up where we left off for each individual sublist, rather + * than starting from the tail each time. + */ + markers = kmem_zalloc(sizeof (*markers) * num_sublists, KM_SLEEP); + for (i = 0; i < num_sublists; i++) { + multilist_sublist_t *mls; + + markers[i] = kmem_cache_alloc(hdr_full_cache, KM_SLEEP); + + /* + * A b_spa of 0 is used to indicate that this header is + * a marker. This fact is used in arc_adjust_type() and + * arc_evict_state_impl(). + */ + markers[i]->b_spa = 0; + + mls = multilist_sublist_lock(ml, i); + multilist_sublist_insert_tail(mls, markers[i]); + multilist_sublist_unlock(mls); + } + + /* + * While we haven't hit our target number of bytes to evict, or + * we're evicting all available buffers. + */ + while (total_evicted < bytes || bytes == ARC_EVICT_ALL) { + /* + * Start eviction using a randomly selected sublist, + * this is to try and evenly balance eviction across all + * sublists. Always starting at the same sublist + * (e.g. index 0) would cause evictions to favor certain + * sublists over others. + */ + int sublist_idx = multilist_get_random_index(ml); + uint64_t scan_evicted = 0; + + for (i = 0; i < num_sublists; i++) { + uint64_t bytes_remaining; + uint64_t bytes_evicted; + + if (bytes == ARC_EVICT_ALL) + bytes_remaining = ARC_EVICT_ALL; + else if (total_evicted < bytes) + bytes_remaining = bytes - total_evicted; + else + break; + + bytes_evicted = arc_evict_state_impl(ml, sublist_idx, + markers[sublist_idx], spa, bytes_remaining); + + scan_evicted += bytes_evicted; + total_evicted += bytes_evicted; + + /* we've reached the end, wrap to the beginning */ + if (++sublist_idx >= num_sublists) + sublist_idx = 0; + } + + /* + * If we didn't evict anything during this scan, we have + * no reason to believe we'll evict more during another + * scan, so break the loop. + */ + if (scan_evicted == 0) { + /* This isn't possible, let's make that obvious */ + ASSERT3S(bytes, !=, 0); + + /* + * When bytes is ARC_EVICT_ALL, the only way to + * break the loop is when scan_evicted is zero. + * In that case, we actually have evicted enough, + * so we don't want to increment the kstat. + */ + if (bytes != ARC_EVICT_ALL) { + ASSERT3S(total_evicted, <, bytes); + ARCSTAT_BUMP(arcstat_evict_not_enough); + } + + break; + } + } + + for (i = 0; i < num_sublists; i++) { + multilist_sublist_t *mls = multilist_sublist_lock(ml, i); + multilist_sublist_remove(mls, markers[i]); + multilist_sublist_unlock(mls); + + kmem_cache_free(hdr_full_cache, markers[i]); + } + kmem_free(markers, sizeof (*markers) * num_sublists); + + return (total_evicted); +} + +/* + * Flush all "evictable" data of the given type from the arc state + * specified. This will not evict any "active" buffers (i.e. referenced). + * + * When 'retry' is set to FALSE, the function will make a single pass + * over the state and evict any buffers that it can. Since it doesn't + * continually retry the eviction, it might end up leaving some buffers + * in the ARC due to lock misses. + * + * When 'retry' is set to TRUE, the function will continually retry the + * eviction until *all* evictable buffers have been removed from the + * state. As a result, if concurrent insertions into the state are + * allowed (e.g. if the ARC isn't shutting down), this function might + * wind up in an infinite loop, continually trying to evict buffers. + */ +static uint64_t +arc_flush_state(arc_state_t *state, uint64_t spa, arc_buf_contents_t type, + boolean_t retry) +{ + uint64_t evicted = 0; + + while (state->arcs_lsize[type] != 0) { + evicted += arc_evict_state(state, spa, ARC_EVICT_ALL, type); + + if (!retry) + break; + } + + return (evicted); +} + +/* + * Helper function for arc_prune_async() it is responsible for safely + * handling the execution of a registered arc_prune_func_t. + */ +static void +arc_prune_task(void *ptr) +{ + arc_prune_t *ap = (arc_prune_t *)ptr; + arc_prune_func_t *func = ap->p_pfunc; + + if (func != NULL) + func(ap->p_adjust, ap->p_private); + + /* Callback unregistered concurrently with execution */ + if (refcount_remove(&ap->p_refcnt, func) == 0) { + ASSERT(!list_link_active(&ap->p_node)); + refcount_destroy(&ap->p_refcnt); + kmem_free(ap, sizeof (*ap)); + } +} + +/* + * Notify registered consumers they must drop holds on a portion of the ARC + * buffered they reference. This provides a mechanism to ensure the ARC can + * honor the arc_meta_limit and reclaim otherwise pinned ARC buffers. This + * is analogous to dnlc_reduce_cache() but more generic. + * + * This operation is performed asynchronously so it may be safely called + * in the context of the arc_reclaim_thread(). A reference is taken here + * for each registered arc_prune_t and the arc_prune_task() is responsible + * for releasing it once the registered arc_prune_func_t has completed. + */ +static void +arc_prune_async(int64_t adjust) +{ + arc_prune_t *ap; + + mutex_enter(&arc_prune_mtx); + for (ap = list_head(&arc_prune_list); ap != NULL; + ap = list_next(&arc_prune_list, ap)) { + + if (refcount_count(&ap->p_refcnt) >= 2) + continue; + + refcount_add(&ap->p_refcnt, ap->p_pfunc); + ap->p_adjust = adjust; + taskq_dispatch(arc_prune_taskq, arc_prune_task, ap, TQ_SLEEP); + ARCSTAT_BUMP(arcstat_prune); + } + mutex_exit(&arc_prune_mtx); +} + +/* + * Evict the specified number of bytes from the state specified, + * restricting eviction to the spa and type given. This function + * prevents us from trying to evict more from a state's list than + * is "evictable", and to skip evicting altogether when passed a + * negative value for "bytes". In contrast, arc_evict_state() will + * evict everything it can, when passed a negative value for "bytes". + */ +static uint64_t +arc_adjust_impl(arc_state_t *state, uint64_t spa, int64_t bytes, + arc_buf_contents_t type) +{ + int64_t delta; + + if (bytes > 0 && state->arcs_lsize[type] > 0) { + delta = MIN(state->arcs_lsize[type], bytes); + return (arc_evict_state(state, spa, delta, type)); + } + + return (0); +} + +/* + * The goal of this function is to evict enough meta data buffers from the + * ARC in order to enforce the arc_meta_limit. Achieving this is slightly + * more complicated than it appears because it is common for data buffers + * to have holds on meta data buffers. In addition, dnode meta data buffers + * will be held by the dnodes in the block preventing them from being freed. + * This means we can't simply traverse the ARC and expect to always find + * enough unheld meta data buffer to release. + * + * Therefore, this function has been updated to make alternating passes + * over the ARC releasing data buffers and then newly unheld meta data + * buffers. This ensures forward progress is maintained and arc_meta_used + * will decrease. Normally this is sufficient, but if required the ARC + * will call the registered prune callbacks causing dentry and inodes to + * be dropped from the VFS cache. This will make dnode meta data buffers + * available for reclaim. + */ +static uint64_t +arc_adjust_meta_balanced(void) +{ + int64_t adjustmnt, delta, prune = 0; + uint64_t total_evicted = 0; + arc_buf_contents_t type = ARC_BUFC_DATA; + int restarts = MAX(zfs_arc_meta_adjust_restarts, 0); + +restart: + /* + * This slightly differs than the way we evict from the mru in + * arc_adjust because we don't have a "target" value (i.e. no + * "meta" arc_p). As a result, I think we can completely + * cannibalize the metadata in the MRU before we evict the + * metadata from the MFU. I think we probably need to implement a + * "metadata arc_p" value to do this properly. + */ + adjustmnt = arc_meta_used - arc_meta_limit; + + if (adjustmnt > 0 && arc_mru->arcs_lsize[type] > 0) { + delta = MIN(arc_mru->arcs_lsize[type], adjustmnt); + total_evicted += arc_adjust_impl(arc_mru, 0, delta, type); + adjustmnt -= delta; + } + + /* + * We can't afford to recalculate adjustmnt here. If we do, + * new metadata buffers can sneak into the MRU or ANON lists, + * thus penalize the MFU metadata. Although the fudge factor is + * small, it has been empirically shown to be significant for + * certain workloads (e.g. creating many empty directories). As + * such, we use the original calculation for adjustmnt, and + * simply decrement the amount of data evicted from the MRU. + */ + + if (adjustmnt > 0 && arc_mfu->arcs_lsize[type] > 0) { + delta = MIN(arc_mfu->arcs_lsize[type], adjustmnt); + total_evicted += arc_adjust_impl(arc_mfu, 0, delta, type); + } + + adjustmnt = arc_meta_used - arc_meta_limit; + + if (adjustmnt > 0 && arc_mru_ghost->arcs_lsize[type] > 0) { + delta = MIN(adjustmnt, + arc_mru_ghost->arcs_lsize[type]); + total_evicted += arc_adjust_impl(arc_mru_ghost, 0, delta, type); + adjustmnt -= delta; + } + + if (adjustmnt > 0 && arc_mfu_ghost->arcs_lsize[type] > 0) { + delta = MIN(adjustmnt, + arc_mfu_ghost->arcs_lsize[type]); + total_evicted += arc_adjust_impl(arc_mfu_ghost, 0, delta, type); + } + + /* + * If after attempting to make the requested adjustment to the ARC + * the meta limit is still being exceeded then request that the + * higher layers drop some cached objects which have holds on ARC + * meta buffers. Requests to the upper layers will be made with + * increasingly large scan sizes until the ARC is below the limit. + */ + if (arc_meta_used > arc_meta_limit) { + if (type == ARC_BUFC_DATA) { + type = ARC_BUFC_METADATA; + } else { + type = ARC_BUFC_DATA; + + if (zfs_arc_meta_prune) { + prune += zfs_arc_meta_prune; + arc_prune_async(prune); + } + } + + if (restarts > 0) { + restarts--; + goto restart; + } + } + return (total_evicted); +} + +/* + * Evict metadata buffers from the cache, such that arc_meta_used is + * capped by the arc_meta_limit tunable. + */ +static uint64_t +arc_adjust_meta_only(void) +{ + uint64_t total_evicted = 0; + int64_t target; + + /* + * If we're over the meta limit, we want to evict enough + * metadata to get back under the meta limit. We don't want to + * evict so much that we drop the MRU below arc_p, though. If + * we're over the meta limit more than we're over arc_p, we + * evict some from the MRU here, and some from the MFU below. + */ + target = MIN((int64_t)(arc_meta_used - arc_meta_limit), + (int64_t)(refcount_count(&arc_anon->arcs_size) + + refcount_count(&arc_mru->arcs_size) - arc_p)); + + total_evicted += arc_adjust_impl(arc_mru, 0, target, ARC_BUFC_METADATA); + + /* + * Similar to the above, we want to evict enough bytes to get us + * below the meta limit, but not so much as to drop us below the + * space alloted to the MFU (which is defined as arc_c - arc_p). + */ + target = MIN((int64_t)(arc_meta_used - arc_meta_limit), + (int64_t)(refcount_count(&arc_mfu->arcs_size) - (arc_c - arc_p))); + + total_evicted += arc_adjust_impl(arc_mfu, 0, target, ARC_BUFC_METADATA); + + return (total_evicted); +} + +static uint64_t +arc_adjust_meta(void) +{ + if (zfs_arc_meta_strategy == ARC_STRATEGY_META_ONLY) + return (arc_adjust_meta_only()); + else + return (arc_adjust_meta_balanced()); +} + +/* + * Return the type of the oldest buffer in the given arc state + * + * This function will select a random sublist of type ARC_BUFC_DATA and + * a random sublist of type ARC_BUFC_METADATA. The tail of each sublist + * is compared, and the type which contains the "older" buffer will be + * returned. + */ +static arc_buf_contents_t +arc_adjust_type(arc_state_t *state) +{ + multilist_t *data_ml = &state->arcs_list[ARC_BUFC_DATA]; + multilist_t *meta_ml = &state->arcs_list[ARC_BUFC_METADATA]; + int data_idx = multilist_get_random_index(data_ml); + int meta_idx = multilist_get_random_index(meta_ml); + multilist_sublist_t *data_mls; + multilist_sublist_t *meta_mls; + arc_buf_contents_t type; + arc_buf_hdr_t *data_hdr; + arc_buf_hdr_t *meta_hdr; + + /* + * We keep the sublist lock until we're finished, to prevent + * the headers from being destroyed via arc_evict_state(). + */ + data_mls = multilist_sublist_lock(data_ml, data_idx); + meta_mls = multilist_sublist_lock(meta_ml, meta_idx); + + /* + * These two loops are to ensure we skip any markers that + * might be at the tail of the lists due to arc_evict_state(). + */ + + for (data_hdr = multilist_sublist_tail(data_mls); data_hdr != NULL; + data_hdr = multilist_sublist_prev(data_mls, data_hdr)) { + if (data_hdr->b_spa != 0) + break; + } + + for (meta_hdr = multilist_sublist_tail(meta_mls); meta_hdr != NULL; + meta_hdr = multilist_sublist_prev(meta_mls, meta_hdr)) { + if (meta_hdr->b_spa != 0) + break; + } + + if (data_hdr == NULL && meta_hdr == NULL) { + type = ARC_BUFC_DATA; + } else if (data_hdr == NULL) { + ASSERT3P(meta_hdr, !=, NULL); + type = ARC_BUFC_METADATA; + } else if (meta_hdr == NULL) { + ASSERT3P(data_hdr, !=, NULL); + type = ARC_BUFC_DATA; + } else { + ASSERT3P(data_hdr, !=, NULL); + ASSERT3P(meta_hdr, !=, NULL); + + /* The headers can't be on the sublist without an L1 header */ + ASSERT(HDR_HAS_L1HDR(data_hdr)); + ASSERT(HDR_HAS_L1HDR(meta_hdr)); + + if (data_hdr->b_l1hdr.b_arc_access < + meta_hdr->b_l1hdr.b_arc_access) { + type = ARC_BUFC_DATA; + } else { + type = ARC_BUFC_METADATA; + } + } + + multilist_sublist_unlock(meta_mls); + multilist_sublist_unlock(data_mls); + + return (type); +} + +/* + * Evict buffers from the cache, such that arc_size is capped by arc_c. + */ +static uint64_t +arc_adjust(void) +{ + uint64_t total_evicted = 0; + uint64_t bytes; + int64_t target; + + /* + * If we're over arc_meta_limit, we want to correct that before + * potentially evicting data buffers below. + */ + total_evicted += arc_adjust_meta(); + + /* + * Adjust MRU size + * + * If we're over the target cache size, we want to evict enough + * from the list to get back to our target size. We don't want + * to evict too much from the MRU, such that it drops below + * arc_p. So, if we're over our target cache size more than + * the MRU is over arc_p, we'll evict enough to get back to + * arc_p here, and then evict more from the MFU below. + */ + target = MIN((int64_t)(arc_size - arc_c), + (int64_t)(refcount_count(&arc_anon->arcs_size) + + refcount_count(&arc_mru->arcs_size) + arc_meta_used - arc_p)); + + /* + * If we're below arc_meta_min, always prefer to evict data. + * Otherwise, try to satisfy the requested number of bytes to + * evict from the type which contains older buffers; in an + * effort to keep newer buffers in the cache regardless of their + * type. If we cannot satisfy the number of bytes from this + * type, spill over into the next type. + */ + if (arc_adjust_type(arc_mru) == ARC_BUFC_METADATA && + arc_meta_used > arc_meta_min) { + bytes = arc_adjust_impl(arc_mru, 0, target, ARC_BUFC_METADATA); + total_evicted += bytes; + + /* + * If we couldn't evict our target number of bytes from + * metadata, we try to get the rest from data. + */ + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mru, 0, target, ARC_BUFC_DATA); + } else { + bytes = arc_adjust_impl(arc_mru, 0, target, ARC_BUFC_DATA); + total_evicted += bytes; + + /* + * If we couldn't evict our target number of bytes from + * data, we try to get the rest from metadata. + */ + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mru, 0, target, ARC_BUFC_METADATA); + } + + /* + * Adjust MFU size + * + * Now that we've tried to evict enough from the MRU to get its + * size back to arc_p, if we're still above the target cache + * size, we evict the rest from the MFU. + */ + target = arc_size - arc_c; + + if (arc_adjust_type(arc_mfu) == ARC_BUFC_METADATA && + arc_meta_used > arc_meta_min) { + bytes = arc_adjust_impl(arc_mfu, 0, target, ARC_BUFC_METADATA); + total_evicted += bytes; + + /* + * If we couldn't evict our target number of bytes from + * metadata, we try to get the rest from data. + */ + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mfu, 0, target, ARC_BUFC_DATA); + } else { + bytes = arc_adjust_impl(arc_mfu, 0, target, ARC_BUFC_DATA); + total_evicted += bytes; + + /* + * If we couldn't evict our target number of bytes from + * data, we try to get the rest from data. + */ + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mfu, 0, target, ARC_BUFC_METADATA); + } + + /* + * Adjust ghost lists + * + * In addition to the above, the ARC also defines target values + * for the ghost lists. The sum of the mru list and mru ghost + * list should never exceed the target size of the cache, and + * the sum of the mru list, mfu list, mru ghost list, and mfu + * ghost list should never exceed twice the target size of the + * cache. The following logic enforces these limits on the ghost + * caches, and evicts from them as needed. + */ + target = refcount_count(&arc_mru->arcs_size) + + refcount_count(&arc_mru_ghost->arcs_size) - arc_c; + + bytes = arc_adjust_impl(arc_mru_ghost, 0, target, ARC_BUFC_DATA); + total_evicted += bytes; + + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mru_ghost, 0, target, ARC_BUFC_METADATA); + + /* + * We assume the sum of the mru list and mfu list is less than + * or equal to arc_c (we enforced this above), which means we + * can use the simpler of the two equations below: + * + * mru + mfu + mru ghost + mfu ghost <= 2 * arc_c + * mru ghost + mfu ghost <= arc_c + */ + target = refcount_count(&arc_mru_ghost->arcs_size) + + refcount_count(&arc_mfu_ghost->arcs_size) - arc_c; + + bytes = arc_adjust_impl(arc_mfu_ghost, 0, target, ARC_BUFC_DATA); + total_evicted += bytes; + + target -= bytes; + + total_evicted += + arc_adjust_impl(arc_mfu_ghost, 0, target, ARC_BUFC_METADATA); + + return (total_evicted); +} + +static void +arc_do_user_evicts(void) +{ + mutex_enter(&arc_user_evicts_lock); + while (arc_eviction_list != NULL) { + arc_buf_t *buf = arc_eviction_list; + arc_eviction_list = buf->b_next; + mutex_enter(&buf->b_evict_lock); + buf->b_hdr = NULL; + mutex_exit(&buf->b_evict_lock); + mutex_exit(&arc_user_evicts_lock); + + if (buf->b_efunc != NULL) + VERIFY0(buf->b_efunc(buf->b_private)); + + buf->b_efunc = NULL; + buf->b_private = NULL; + kmem_cache_free(buf_cache, buf); + mutex_enter(&arc_user_evicts_lock); + } + mutex_exit(&arc_user_evicts_lock); +} + +void +arc_flush(spa_t *spa, boolean_t retry) +{ + uint64_t guid = 0; + + /* + * If retry is TRUE, a spa must not be specified since we have + * no good way to determine if all of a spa's buffers have been + * evicted from an arc state. + */ + ASSERT(!retry || spa == 0); + + if (spa != NULL) + guid = spa_load_guid(spa); + + (void) arc_flush_state(arc_mru, guid, ARC_BUFC_DATA, retry); + (void) arc_flush_state(arc_mru, guid, ARC_BUFC_METADATA, retry); + + (void) arc_flush_state(arc_mfu, guid, ARC_BUFC_DATA, retry); + (void) arc_flush_state(arc_mfu, guid, ARC_BUFC_METADATA, retry); + + (void) arc_flush_state(arc_mru_ghost, guid, ARC_BUFC_DATA, retry); + (void) arc_flush_state(arc_mru_ghost, guid, ARC_BUFC_METADATA, retry); + + (void) arc_flush_state(arc_mfu_ghost, guid, ARC_BUFC_DATA, retry); + (void) arc_flush_state(arc_mfu_ghost, guid, ARC_BUFC_METADATA, retry); + + arc_do_user_evicts(); + ASSERT(spa || arc_eviction_list == NULL); +} + +void +arc_shrink(int64_t to_free) +{ + if (arc_c > arc_c_min) { + + if (arc_c > arc_c_min + to_free) + atomic_add_64(&arc_c, -to_free); + else + arc_c = arc_c_min; + + atomic_add_64(&arc_p, -(arc_p >> arc_shrink_shift)); + if (arc_c > arc_size) + arc_c = MAX(arc_size, arc_c_min); + if (arc_p > arc_c) + arc_p = (arc_c >> 1); + ASSERT(arc_c >= arc_c_min); + ASSERT((int64_t)arc_p >= 0); + } + + if (arc_size > arc_c) + (void) arc_adjust(); +} + +typedef enum free_memory_reason_t { + FMR_UNKNOWN, + FMR_NEEDFREE, + FMR_LOTSFREE, + FMR_SWAPFS_MINFREE, + FMR_PAGES_PP_MAXIMUM, + FMR_HEAP_ARENA, + FMR_ZIO_ARENA, +} free_memory_reason_t; + +int64_t last_free_memory; +free_memory_reason_t last_free_reason; + +#ifdef _KERNEL +/* + * Additional reserve of pages for pp_reserve. + */ +int64_t arc_pages_pp_reserve = 64; + +/* + * Additional reserve of pages for swapfs. + */ +int64_t arc_swapfs_reserve = 64; +#endif /* _KERNEL */ + +/* + * Return the amount of memory that can be consumed before reclaim will be + * needed. Positive if there is sufficient free memory, negative indicates + * the amount of memory that needs to be freed up. + */ +static int64_t +arc_available_memory(void) +{ + int64_t lowest = INT64_MAX; + free_memory_reason_t r = FMR_UNKNOWN; +#ifdef _KERNEL + int64_t n; +#ifdef __linux__ + pgcnt_t needfree = btop(arc_need_free); + pgcnt_t lotsfree = btop(arc_sys_free); + pgcnt_t desfree = 0; +#endif + + if (needfree > 0) { + n = PAGESIZE * (-needfree); + if (n < lowest) { + lowest = n; + r = FMR_NEEDFREE; + } + } + + /* + * check that we're out of range of the pageout scanner. It starts to + * schedule paging if freemem is less than lotsfree and needfree. + * lotsfree is the high-water mark for pageout, and needfree is the + * number of needed free pages. We add extra pages here to make sure + * the scanner doesn't start up while we're freeing memory. + */ + n = PAGESIZE * (freemem - lotsfree - needfree - desfree); + if (n < lowest) { + lowest = n; + r = FMR_LOTSFREE; + } + +#ifndef __linux__ + /* + * check to make sure that swapfs has enough space so that anon + * reservations can still succeed. anon_resvmem() checks that the + * availrmem is greater than swapfs_minfree, and the number of reserved + * swap pages. We also add a bit of extra here just to prevent + * circumstances from getting really dire. + */ + n = PAGESIZE * (availrmem - swapfs_minfree - swapfs_reserve - + desfree - arc_swapfs_reserve); + if (n < lowest) { + lowest = n; + r = FMR_SWAPFS_MINFREE; + } + + + /* + * Check that we have enough availrmem that memory locking (e.g., via + * mlock(3C) or memcntl(2)) can still succeed. (pages_pp_maximum + * stores the number of pages that cannot be locked; when availrmem + * drops below pages_pp_maximum, page locking mechanisms such as + * page_pp_lock() will fail.) + */ + n = PAGESIZE * (availrmem - pages_pp_maximum - + arc_pages_pp_reserve); + if (n < lowest) { + lowest = n; + r = FMR_PAGES_PP_MAXIMUM; + } +#endif + +#if defined(__i386) + /* + * If we're on an i386 platform, it's possible that we'll exhaust the + * kernel heap space before we ever run out of available physical + * memory. Most checks of the size of the heap_area compare against + * tune.t_minarmem, which is the minimum available real memory that we + * can have in the system. However, this is generally fixed at 25 pages + * which is so low that it's useless. In this comparison, we seek to + * calculate the total heap-size, and reclaim if more than 3/4ths of the + * heap is allocated. (Or, in the calculation, if less than 1/4th is + * free) + */ + n = vmem_size(heap_arena, VMEM_FREE) - + (vmem_size(heap_arena, VMEM_FREE | VMEM_ALLOC) >> 2); + if (n < lowest) { + lowest = n; + r = FMR_HEAP_ARENA; + } +#endif + + /* + * If zio data pages are being allocated out of a separate heap segment, + * then enforce that the size of available vmem for this arena remains + * above about 1/16th free. + * + * Note: The 1/16th arena free requirement was put in place + * to aggressively evict memory from the arc in order to avoid + * memory fragmentation issues. + */ + if (zio_arena != NULL) { + n = vmem_size(zio_arena, VMEM_FREE) - + (vmem_size(zio_arena, VMEM_ALLOC) >> 4); + if (n < lowest) { + lowest = n; + r = FMR_ZIO_ARENA; + } + } +#else /* _KERNEL */ + /* Every 100 calls, free a small amount */ + if (spa_get_random(100) == 0) + lowest = -1024; +#endif /* _KERNEL */ + + last_free_memory = lowest; + last_free_reason = r; + + return (lowest); +} + +/* + * Determine if the system is under memory pressure and is asking + * to reclaim memory. A return value of TRUE indicates that the system + * is under memory pressure and that the arc should adjust accordingly. + */ +static boolean_t +arc_reclaim_needed(void) +{ + return (arc_available_memory() < 0); +} + +static void +arc_kmem_reap_now(void) +{ + size_t i; + kmem_cache_t *prev_cache = NULL; + kmem_cache_t *prev_data_cache = NULL; + extern kmem_cache_t *zio_buf_cache[]; + extern kmem_cache_t *zio_data_buf_cache[]; + extern kmem_cache_t *range_seg_cache; + + if ((arc_meta_used >= arc_meta_limit) && zfs_arc_meta_prune) { + /* + * We are exceeding our meta-data cache limit. + * Prune some entries to release holds on meta-data. + */ + arc_prune_async(zfs_arc_meta_prune); + } + + for (i = 0; i < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; i++) { +#ifdef _ILP32 + /* reach upper limit of cache size on 32-bit */ + if (zio_buf_cache[i] == NULL) + break; +#endif + if (zio_buf_cache[i] != prev_cache) { + prev_cache = zio_buf_cache[i]; + kmem_cache_reap_now(zio_buf_cache[i]); + } + if (zio_data_buf_cache[i] != prev_data_cache) { + prev_data_cache = zio_data_buf_cache[i]; + kmem_cache_reap_now(zio_data_buf_cache[i]); + } + } + kmem_cache_reap_now(buf_cache); + kmem_cache_reap_now(hdr_full_cache); + kmem_cache_reap_now(hdr_l2only_cache); + kmem_cache_reap_now(range_seg_cache); + + if (zio_arena != NULL) { + /* + * Ask the vmem arena to reclaim unused memory from its + * quantum caches. + */ + vmem_qcache_reap(zio_arena); + } +} + +/* + * Threads can block in arc_get_data_buf() waiting for this thread to evict + * enough data and signal them to proceed. When this happens, the threads in + * arc_get_data_buf() are sleeping while holding the hash lock for their + * particular arc header. Thus, we must be careful to never sleep on a + * hash lock in this thread. This is to prevent the following deadlock: + * + * - Thread A sleeps on CV in arc_get_data_buf() holding hash lock "L", + * waiting for the reclaim thread to signal it. + * + * - arc_reclaim_thread() tries to acquire hash lock "L" using mutex_enter, + * fails, and goes to sleep forever. + * + * This possible deadlock is avoided by always acquiring a hash lock + * using mutex_tryenter() from arc_reclaim_thread(). + */ +static void +arc_reclaim_thread(void) +{ + fstrans_cookie_t cookie = spl_fstrans_mark(); + clock_t growtime = 0; + callb_cpr_t cpr; + + CALLB_CPR_INIT(&cpr, &arc_reclaim_lock, callb_generic_cpr, FTAG); + + mutex_enter(&arc_reclaim_lock); + while (!arc_reclaim_thread_exit) { + int64_t to_free; + int64_t free_memory = arc_available_memory(); + uint64_t evicted = 0; + + arc_tuning_update(); + + mutex_exit(&arc_reclaim_lock); + + if (free_memory < 0) { + + arc_no_grow = B_TRUE; + arc_warm = B_TRUE; + + /* + * Wait at least zfs_grow_retry (default 5) seconds + * before considering growing. + */ + growtime = ddi_get_lbolt() + (arc_grow_retry * hz); + + arc_kmem_reap_now(); + + /* + * If we are still low on memory, shrink the ARC + * so that we have arc_shrink_min free space. + */ + free_memory = arc_available_memory(); + + to_free = (arc_c >> arc_shrink_shift) - free_memory; + if (to_free > 0) { +#ifdef _KERNEL + to_free = MAX(to_free, arc_need_free); +#endif + arc_shrink(to_free); + } + } else if (free_memory < arc_c >> arc_no_grow_shift) { + arc_no_grow = B_TRUE; + } else if (ddi_get_lbolt() >= growtime) { + arc_no_grow = B_FALSE; + } + + evicted = arc_adjust(); + + mutex_enter(&arc_reclaim_lock); + + /* + * If evicted is zero, we couldn't evict anything via + * arc_adjust(). This could be due to hash lock + * collisions, but more likely due to the majority of + * arc buffers being unevictable. Therefore, even if + * arc_size is above arc_c, another pass is unlikely to + * be helpful and could potentially cause us to enter an + * infinite loop. + */ + if (arc_size <= arc_c || evicted == 0) { + /* + * We're either no longer overflowing, or we + * can't evict anything more, so we should wake + * up any threads before we go to sleep and clear + * arc_need_free since nothing more can be done. + */ + cv_broadcast(&arc_reclaim_waiters_cv); + arc_need_free = 0; + + /* + * Block until signaled, or after one second (we + * might need to perform arc_kmem_reap_now() + * even if we aren't being signalled) + */ + CALLB_CPR_SAFE_BEGIN(&cpr); + (void) cv_timedwait_sig(&arc_reclaim_thread_cv, + &arc_reclaim_lock, ddi_get_lbolt() + hz); + CALLB_CPR_SAFE_END(&cpr, &arc_reclaim_lock); + } + } + + arc_reclaim_thread_exit = FALSE; + cv_broadcast(&arc_reclaim_thread_cv); + CALLB_CPR_EXIT(&cpr); /* drops arc_reclaim_lock */ + spl_fstrans_unmark(cookie); + thread_exit(); +} + +static void +arc_user_evicts_thread(void) +{ + fstrans_cookie_t cookie = spl_fstrans_mark(); + callb_cpr_t cpr; + + CALLB_CPR_INIT(&cpr, &arc_user_evicts_lock, callb_generic_cpr, FTAG); + + mutex_enter(&arc_user_evicts_lock); + while (!arc_user_evicts_thread_exit) { + mutex_exit(&arc_user_evicts_lock); + + arc_do_user_evicts(); + + /* + * This is necessary in order for the mdb ::arc dcmd to + * show up to date information. Since the ::arc command + * does not call the kstat's update function, without + * this call, the command may show stale stats for the + * anon, mru, mru_ghost, mfu, and mfu_ghost lists. Even + * with this change, the data might be up to 1 second + * out of date; but that should suffice. The arc_state_t + * structures can be queried directly if more accurate + * information is needed. + */ + if (arc_ksp != NULL) + arc_ksp->ks_update(arc_ksp, KSTAT_READ); + + mutex_enter(&arc_user_evicts_lock); + + /* + * Block until signaled, or after one second (we need to + * call the arc's kstat update function regularly). + */ + CALLB_CPR_SAFE_BEGIN(&cpr); + (void) cv_timedwait_sig(&arc_user_evicts_cv, + &arc_user_evicts_lock, ddi_get_lbolt() + hz); + CALLB_CPR_SAFE_END(&cpr, &arc_user_evicts_lock); + } + + arc_user_evicts_thread_exit = FALSE; + cv_broadcast(&arc_user_evicts_cv); + CALLB_CPR_EXIT(&cpr); /* drops arc_user_evicts_lock */ + spl_fstrans_unmark(cookie); + thread_exit(); +} + +#ifdef _KERNEL +/* + * Determine the amount of memory eligible for eviction contained in the + * ARC. All clean data reported by the ghost lists can always be safely + * evicted. Due to arc_c_min, the same does not hold for all clean data + * contained by the regular mru and mfu lists. + * + * In the case of the regular mru and mfu lists, we need to report as + * much clean data as possible, such that evicting that same reported + * data will not bring arc_size below arc_c_min. Thus, in certain + * circumstances, the total amount of clean data in the mru and mfu + * lists might not actually be evictable. + * + * The following two distinct cases are accounted for: + * + * 1. The sum of the amount of dirty data contained by both the mru and + * mfu lists, plus the ARC's other accounting (e.g. the anon list), + * is greater than or equal to arc_c_min. + * (i.e. amount of dirty data >= arc_c_min) + * + * This is the easy case; all clean data contained by the mru and mfu + * lists is evictable. Evicting all clean data can only drop arc_size + * to the amount of dirty data, which is greater than arc_c_min. + * + * 2. The sum of the amount of dirty data contained by both the mru and + * mfu lists, plus the ARC's other accounting (e.g. the anon list), + * is less than arc_c_min. + * (i.e. arc_c_min > amount of dirty data) + * + * 2.1. arc_size is greater than or equal arc_c_min. + * (i.e. arc_size >= arc_c_min > amount of dirty data) + * + * In this case, not all clean data from the regular mru and mfu + * lists is actually evictable; we must leave enough clean data + * to keep arc_size above arc_c_min. Thus, the maximum amount of + * evictable data from the two lists combined, is exactly the + * difference between arc_size and arc_c_min. + * + * 2.2. arc_size is less than arc_c_min + * (i.e. arc_c_min > arc_size > amount of dirty data) + * + * In this case, none of the data contained in the mru and mfu + * lists is evictable, even if it's clean. Since arc_size is + * already below arc_c_min, evicting any more would only + * increase this negative difference. + */ +static uint64_t +arc_evictable_memory(void) { + uint64_t arc_clean = + arc_mru->arcs_lsize[ARC_BUFC_DATA] + + arc_mru->arcs_lsize[ARC_BUFC_METADATA] + + arc_mfu->arcs_lsize[ARC_BUFC_DATA] + + arc_mfu->arcs_lsize[ARC_BUFC_METADATA]; + uint64_t ghost_clean = + arc_mru_ghost->arcs_lsize[ARC_BUFC_DATA] + + arc_mru_ghost->arcs_lsize[ARC_BUFC_METADATA] + + arc_mfu_ghost->arcs_lsize[ARC_BUFC_DATA] + + arc_mfu_ghost->arcs_lsize[ARC_BUFC_METADATA]; + uint64_t arc_dirty = MAX((int64_t)arc_size - (int64_t)arc_clean, 0); + + if (arc_dirty >= arc_c_min) + return (ghost_clean + arc_clean); + + return (ghost_clean + MAX((int64_t)arc_size - (int64_t)arc_c_min, 0)); +} + +/* + * If sc->nr_to_scan is zero, the caller is requesting a query of the + * number of objects which can potentially be freed. If it is nonzero, + * the request is to free that many objects. + * + * Linux kernels >= 3.12 have the count_objects and scan_objects callbacks + * in struct shrinker and also require the shrinker to return the number + * of objects freed. + * + * Older kernels require the shrinker to return the number of freeable + * objects following the freeing of nr_to_free. + */ +static spl_shrinker_t +__arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc) +{ + int64_t pages; + + /* The arc is considered warm once reclaim has occurred */ + if (unlikely(arc_warm == B_FALSE)) + arc_warm = B_TRUE; + + /* Return the potential number of reclaimable pages */ + pages = btop((int64_t)arc_evictable_memory()); + if (sc->nr_to_scan == 0) + return (pages); + + /* Not allowed to perform filesystem reclaim */ + if (!(sc->gfp_mask & __GFP_FS)) + return (SHRINK_STOP); + + /* Reclaim in progress */ + if (mutex_tryenter(&arc_reclaim_lock) == 0) + return (SHRINK_STOP); + + mutex_exit(&arc_reclaim_lock); + + /* + * Evict the requested number of pages by shrinking arc_c the + * requested amount. If there is nothing left to evict just + * reap whatever we can from the various arc slabs. + */ + if (pages > 0) { + arc_shrink(ptob(sc->nr_to_scan)); + arc_kmem_reap_now(); +#ifdef HAVE_SPLIT_SHRINKER_CALLBACK + pages = MAX(pages - btop(arc_evictable_memory()), 0); +#else + pages = btop(arc_evictable_memory()); +#endif + } else { + arc_kmem_reap_now(); + pages = SHRINK_STOP; + } + + /* + * We've reaped what we can, wake up threads. + */ + cv_broadcast(&arc_reclaim_waiters_cv); + + /* + * When direct reclaim is observed it usually indicates a rapid + * increase in memory pressure. This occurs because the kswapd + * threads were unable to asynchronously keep enough free memory + * available. In this case set arc_no_grow to briefly pause arc + * growth to avoid compounding the memory pressure. + */ + if (current_is_kswapd()) { + ARCSTAT_BUMP(arcstat_memory_indirect_count); + } else { + arc_no_grow = B_TRUE; + arc_need_free = ptob(sc->nr_to_scan); + ARCSTAT_BUMP(arcstat_memory_direct_count); + } + + return (pages); +} +SPL_SHRINKER_CALLBACK_WRAPPER(arc_shrinker_func); + +SPL_SHRINKER_DECLARE(arc_shrinker, arc_shrinker_func, DEFAULT_SEEKS); +#endif /* _KERNEL */ + +/* + * Adapt arc info given the number of bytes we are trying to add and + * the state that we are comming from. This function is only called + * when we are adding new content to the cache. + */ +static void +arc_adapt(int bytes, arc_state_t *state) +{ + int mult; + uint64_t arc_p_min = (arc_c >> arc_p_min_shift); + int64_t mrug_size = refcount_count(&arc_mru_ghost->arcs_size); + int64_t mfug_size = refcount_count(&arc_mfu_ghost->arcs_size); + + if (state == arc_l2c_only) + return; + + ASSERT(bytes > 0); + /* + * Adapt the target size of the MRU list: + * - if we just hit in the MRU ghost list, then increase + * the target size of the MRU list. + * - if we just hit in the MFU ghost list, then increase + * the target size of the MFU list by decreasing the + * target size of the MRU list. + */ + if (state == arc_mru_ghost) { + mult = (mrug_size >= mfug_size) ? 1 : (mfug_size / mrug_size); + if (!zfs_arc_p_dampener_disable) + mult = MIN(mult, 10); /* avoid wild arc_p adjustment */ + + arc_p = MIN(arc_c - arc_p_min, arc_p + bytes * mult); + } else if (state == arc_mfu_ghost) { + uint64_t delta; + + mult = (mfug_size >= mrug_size) ? 1 : (mrug_size / mfug_size); + if (!zfs_arc_p_dampener_disable) + mult = MIN(mult, 10); + + delta = MIN(bytes * mult, arc_p); + arc_p = MAX(arc_p_min, arc_p - delta); + } + ASSERT((int64_t)arc_p >= 0); + + if (arc_reclaim_needed()) { + cv_signal(&arc_reclaim_thread_cv); + return; + } + + if (arc_no_grow) + return; + + if (arc_c >= arc_c_max) + return; + + /* + * If we're within (2 * maxblocksize) bytes of the target + * cache size, increment the target cache size + */ + VERIFY3U(arc_c, >=, 2ULL << SPA_MAXBLOCKSHIFT); + if (arc_size >= arc_c - (2ULL << SPA_MAXBLOCKSHIFT)) { + atomic_add_64(&arc_c, (int64_t)bytes); + if (arc_c > arc_c_max) + arc_c = arc_c_max; + else if (state == arc_anon) + atomic_add_64(&arc_p, (int64_t)bytes); + if (arc_p > arc_c) + arc_p = arc_c; + } + ASSERT((int64_t)arc_p >= 0); +} + +/* + * Check if arc_size has grown past our upper threshold, determined by + * zfs_arc_overflow_shift. + */ +static boolean_t +arc_is_overflowing(void) +{ + /* Always allow at least one block of overflow */ + uint64_t overflow = MAX(SPA_MAXBLOCKSIZE, + arc_c >> zfs_arc_overflow_shift); + + return (arc_size >= arc_c + overflow); +} + +/* + * The buffer, supplied as the first argument, needs a data block. If we + * are hitting the hard limit for the cache size, we must sleep, waiting + * for the eviction thread to catch up. If we're past the target size + * but below the hard limit, we'll only signal the reclaim thread and + * continue on. + */ +static void +arc_get_data_buf(arc_buf_t *buf) +{ + arc_state_t *state = buf->b_hdr->b_l1hdr.b_state; + uint64_t size = buf->b_hdr->b_size; + arc_buf_contents_t type = arc_buf_type(buf->b_hdr); + + arc_adapt(size, state); + + /* + * If arc_size is currently overflowing, and has grown past our + * upper limit, we must be adding data faster than the evict + * thread can evict. Thus, to ensure we don't compound the + * problem by adding more data and forcing arc_size to grow even + * further past it's target size, we halt and wait for the + * eviction thread to catch up. + * + * It's also possible that the reclaim thread is unable to evict + * enough buffers to get arc_size below the overflow limit (e.g. + * due to buffers being un-evictable, or hash lock collisions). + * In this case, we want to proceed regardless if we're + * overflowing; thus we don't use a while loop here. + */ + if (arc_is_overflowing()) { + mutex_enter(&arc_reclaim_lock); + + /* + * Now that we've acquired the lock, we may no longer be + * over the overflow limit, lets check. + * + * We're ignoring the case of spurious wake ups. If that + * were to happen, it'd let this thread consume an ARC + * buffer before it should have (i.e. before we're under + * the overflow limit and were signalled by the reclaim + * thread). As long as that is a rare occurrence, it + * shouldn't cause any harm. + */ + if (arc_is_overflowing()) { + cv_signal(&arc_reclaim_thread_cv); + cv_wait(&arc_reclaim_waiters_cv, &arc_reclaim_lock); + } + + mutex_exit(&arc_reclaim_lock); + } + + if (type == ARC_BUFC_METADATA) { + buf->b_data = zio_buf_alloc(size); + arc_space_consume(size, ARC_SPACE_META); + } else { + ASSERT(type == ARC_BUFC_DATA); + buf->b_data = zio_data_buf_alloc(size); + arc_space_consume(size, ARC_SPACE_DATA); + } + + /* + * Update the state size. Note that ghost states have a + * "ghost size" and so don't need to be updated. + */ + if (!GHOST_STATE(buf->b_hdr->b_l1hdr.b_state)) { + arc_buf_hdr_t *hdr = buf->b_hdr; + arc_state_t *state = hdr->b_l1hdr.b_state; + + (void) refcount_add_many(&state->arcs_size, size, buf); + + /* + * If this is reached via arc_read, the link is + * protected by the hash lock. If reached via + * arc_buf_alloc, the header should not be accessed by + * any other thread. And, if reached via arc_read_done, + * the hash lock will protect it if it's found in the + * hash table; otherwise no other thread should be + * trying to [add|remove]_reference it. + */ + if (multilist_link_active(&hdr->b_l1hdr.b_arc_node)) { + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + atomic_add_64(&hdr->b_l1hdr.b_state->arcs_lsize[type], + size); + } + /* + * If we are growing the cache, and we are adding anonymous + * data, and we have outgrown arc_p, update arc_p + */ + if (arc_size < arc_c && hdr->b_l1hdr.b_state == arc_anon && + (refcount_count(&arc_anon->arcs_size) + + refcount_count(&arc_mru->arcs_size) > arc_p)) + arc_p = MIN(arc_c, arc_p + size); + } +} + +/* + * This routine is called whenever a buffer is accessed. + * NOTE: the hash lock is dropped in this function. + */ +static void +arc_access(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) +{ + clock_t now; + + ASSERT(MUTEX_HELD(hash_lock)); + ASSERT(HDR_HAS_L1HDR(hdr)); + + if (hdr->b_l1hdr.b_state == arc_anon) { + /* + * This buffer is not in the cache, and does not + * appear in our "ghost" list. Add the new buffer + * to the MRU state. + */ + + ASSERT0(hdr->b_l1hdr.b_arc_access); + hdr->b_l1hdr.b_arc_access = ddi_get_lbolt(); + DTRACE_PROBE1(new_state__mru, arc_buf_hdr_t *, hdr); + arc_change_state(arc_mru, hdr, hash_lock); + + } else if (hdr->b_l1hdr.b_state == arc_mru) { + now = ddi_get_lbolt(); + + /* + * If this buffer is here because of a prefetch, then either: + * - clear the flag if this is a "referencing" read + * (any subsequent access will bump this into the MFU state). + * or + * - move the buffer to the head of the list if this is + * another prefetch (to make it less likely to be evicted). + */ + if (HDR_PREFETCH(hdr)) { + if (refcount_count(&hdr->b_l1hdr.b_refcnt) == 0) { + /* link protected by hash lock */ + ASSERT(multilist_link_active( + &hdr->b_l1hdr.b_arc_node)); + } else { + hdr->b_flags &= ~ARC_FLAG_PREFETCH; + atomic_inc_32(&hdr->b_l1hdr.b_mru_hits); + ARCSTAT_BUMP(arcstat_mru_hits); + } + hdr->b_l1hdr.b_arc_access = now; + return; + } + + /* + * This buffer has been "accessed" only once so far, + * but it is still in the cache. Move it to the MFU + * state. + */ + if (ddi_time_after(now, hdr->b_l1hdr.b_arc_access + + ARC_MINTIME)) { + /* + * More than 125ms have passed since we + * instantiated this buffer. Move it to the + * most frequently used state. + */ + hdr->b_l1hdr.b_arc_access = now; + DTRACE_PROBE1(new_state__mfu, arc_buf_hdr_t *, hdr); + arc_change_state(arc_mfu, hdr, hash_lock); + } + atomic_inc_32(&hdr->b_l1hdr.b_mru_hits); + ARCSTAT_BUMP(arcstat_mru_hits); + } else if (hdr->b_l1hdr.b_state == arc_mru_ghost) { + arc_state_t *new_state; + /* + * This buffer has been "accessed" recently, but + * was evicted from the cache. Move it to the + * MFU state. + */ + + if (HDR_PREFETCH(hdr)) { + new_state = arc_mru; + if (refcount_count(&hdr->b_l1hdr.b_refcnt) > 0) + hdr->b_flags &= ~ARC_FLAG_PREFETCH; + DTRACE_PROBE1(new_state__mru, arc_buf_hdr_t *, hdr); + } else { + new_state = arc_mfu; + DTRACE_PROBE1(new_state__mfu, arc_buf_hdr_t *, hdr); + } + + hdr->b_l1hdr.b_arc_access = ddi_get_lbolt(); + arc_change_state(new_state, hdr, hash_lock); + + atomic_inc_32(&hdr->b_l1hdr.b_mru_ghost_hits); + ARCSTAT_BUMP(arcstat_mru_ghost_hits); + } else if (hdr->b_l1hdr.b_state == arc_mfu) { + /* + * This buffer has been accessed more than once and is + * still in the cache. Keep it in the MFU state. + * + * NOTE: an add_reference() that occurred when we did + * the arc_read() will have kicked this off the list. + * If it was a prefetch, we will explicitly move it to + * the head of the list now. + */ + if ((HDR_PREFETCH(hdr)) != 0) { + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + /* link protected by hash_lock */ + ASSERT(multilist_link_active(&hdr->b_l1hdr.b_arc_node)); + } + atomic_inc_32(&hdr->b_l1hdr.b_mfu_hits); + ARCSTAT_BUMP(arcstat_mfu_hits); + hdr->b_l1hdr.b_arc_access = ddi_get_lbolt(); + } else if (hdr->b_l1hdr.b_state == arc_mfu_ghost) { + arc_state_t *new_state = arc_mfu; + /* + * This buffer has been accessed more than once but has + * been evicted from the cache. Move it back to the + * MFU state. + */ + + if (HDR_PREFETCH(hdr)) { + /* + * This is a prefetch access... + * move this block back to the MRU state. + */ + ASSERT0(refcount_count(&hdr->b_l1hdr.b_refcnt)); + new_state = arc_mru; + } + + hdr->b_l1hdr.b_arc_access = ddi_get_lbolt(); + DTRACE_PROBE1(new_state__mfu, arc_buf_hdr_t *, hdr); + arc_change_state(new_state, hdr, hash_lock); + + atomic_inc_32(&hdr->b_l1hdr.b_mfu_ghost_hits); + ARCSTAT_BUMP(arcstat_mfu_ghost_hits); + } else if (hdr->b_l1hdr.b_state == arc_l2c_only) { + /* + * This buffer is on the 2nd Level ARC. + */ + + hdr->b_l1hdr.b_arc_access = ddi_get_lbolt(); + DTRACE_PROBE1(new_state__mfu, arc_buf_hdr_t *, hdr); + arc_change_state(arc_mfu, hdr, hash_lock); + } else { + cmn_err(CE_PANIC, "invalid arc state 0x%p", + hdr->b_l1hdr.b_state); + } +} + +/* a generic arc_done_func_t which you can use */ +/* ARGSUSED */ +void +arc_bcopy_func(zio_t *zio, arc_buf_t *buf, void *arg) +{ + if (zio == NULL || zio->io_error == 0) + bcopy(buf->b_data, arg, buf->b_hdr->b_size); + VERIFY(arc_buf_remove_ref(buf, arg)); +} + +/* a generic arc_done_func_t */ +void +arc_getbuf_func(zio_t *zio, arc_buf_t *buf, void *arg) +{ + arc_buf_t **bufp = arg; + if (zio && zio->io_error) { + VERIFY(arc_buf_remove_ref(buf, arg)); + *bufp = NULL; + } else { + *bufp = buf; + ASSERT(buf->b_data); + } +} + +static void +arc_read_done(zio_t *zio) +{ + arc_buf_hdr_t *hdr; + arc_buf_t *buf; + arc_buf_t *abuf; /* buffer we're assigning to callback */ + kmutex_t *hash_lock = NULL; + arc_callback_t *callback_list, *acb; + int freeable = FALSE; + + buf = zio->io_private; + hdr = buf->b_hdr; + + /* + * The hdr was inserted into hash-table and removed from lists + * prior to starting I/O. We should find this header, since + * it's in the hash table, and it should be legit since it's + * not possible to evict it during the I/O. The only possible + * reason for it not to be found is if we were freed during the + * read. + */ + if (HDR_IN_HASH_TABLE(hdr)) { + arc_buf_hdr_t *found; + + ASSERT3U(hdr->b_birth, ==, BP_PHYSICAL_BIRTH(zio->io_bp)); + ASSERT3U(hdr->b_dva.dva_word[0], ==, + BP_IDENTITY(zio->io_bp)->dva_word[0]); + ASSERT3U(hdr->b_dva.dva_word[1], ==, + BP_IDENTITY(zio->io_bp)->dva_word[1]); + + found = buf_hash_find(hdr->b_spa, zio->io_bp, + &hash_lock); + + ASSERT((found == NULL && HDR_FREED_IN_READ(hdr) && + hash_lock == NULL) || + (found == hdr && + DVA_EQUAL(&hdr->b_dva, BP_IDENTITY(zio->io_bp))) || + (found == hdr && HDR_L2_READING(hdr))); + } + + hdr->b_flags &= ~ARC_FLAG_L2_EVICTED; + if (l2arc_noprefetch && HDR_PREFETCH(hdr)) + hdr->b_flags &= ~ARC_FLAG_L2CACHE; + + /* byteswap if necessary */ + callback_list = hdr->b_l1hdr.b_acb; + ASSERT(callback_list != NULL); + if (BP_SHOULD_BYTESWAP(zio->io_bp) && zio->io_error == 0) { + dmu_object_byteswap_t bswap = + DMU_OT_BYTESWAP(BP_GET_TYPE(zio->io_bp)); + if (BP_GET_LEVEL(zio->io_bp) > 0) + byteswap_uint64_array(buf->b_data, hdr->b_size); + else + dmu_ot_byteswap[bswap].ob_func(buf->b_data, hdr->b_size); + } + + arc_cksum_compute(buf, B_FALSE); + arc_buf_watch(buf); + + if (hash_lock && zio->io_error == 0 && + hdr->b_l1hdr.b_state == arc_anon) { + /* + * Only call arc_access on anonymous buffers. This is because + * if we've issued an I/O for an evicted buffer, we've already + * called arc_access (to prevent any simultaneous readers from + * getting confused). + */ + arc_access(hdr, hash_lock); + } + + /* create copies of the data buffer for the callers */ + abuf = buf; + for (acb = callback_list; acb; acb = acb->acb_next) { + if (acb->acb_done) { + if (abuf == NULL) { + ARCSTAT_BUMP(arcstat_duplicate_reads); + abuf = arc_buf_clone(buf); + } + acb->acb_buf = abuf; + abuf = NULL; + } + } + hdr->b_l1hdr.b_acb = NULL; + hdr->b_flags &= ~ARC_FLAG_IO_IN_PROGRESS; + ASSERT(!HDR_BUF_AVAILABLE(hdr)); + if (abuf == buf) { + ASSERT(buf->b_efunc == NULL); + ASSERT(hdr->b_l1hdr.b_datacnt == 1); + hdr->b_flags |= ARC_FLAG_BUF_AVAILABLE; + } + + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt) || + callback_list != NULL); + + if (zio->io_error != 0) { + hdr->b_flags |= ARC_FLAG_IO_ERROR; + if (hdr->b_l1hdr.b_state != arc_anon) + arc_change_state(arc_anon, hdr, hash_lock); + if (HDR_IN_HASH_TABLE(hdr)) + buf_hash_remove(hdr); + freeable = refcount_is_zero(&hdr->b_l1hdr.b_refcnt); + } + + /* + * Broadcast before we drop the hash_lock to avoid the possibility + * that the hdr (and hence the cv) might be freed before we get to + * the cv_broadcast(). + */ + cv_broadcast(&hdr->b_l1hdr.b_cv); + + if (hash_lock != NULL) { + mutex_exit(hash_lock); + } else { + /* + * This block was freed while we waited for the read to + * complete. It has been removed from the hash table and + * moved to the anonymous state (so that it won't show up + * in the cache). + */ + ASSERT3P(hdr->b_l1hdr.b_state, ==, arc_anon); + freeable = refcount_is_zero(&hdr->b_l1hdr.b_refcnt); + } + + /* execute each callback and free its structure */ + while ((acb = callback_list) != NULL) { + if (acb->acb_done) + acb->acb_done(zio, acb->acb_buf, acb->acb_private); + + if (acb->acb_zio_dummy != NULL) { + acb->acb_zio_dummy->io_error = zio->io_error; + zio_nowait(acb->acb_zio_dummy); + } + + callback_list = acb->acb_next; + kmem_free(acb, sizeof (arc_callback_t)); + } + + if (freeable) + arc_hdr_destroy(hdr); +} + +/* + * "Read" the block at the specified DVA (in bp) via the + * cache. If the block is found in the cache, invoke the provided + * callback immediately and return. Note that the `zio' parameter + * in the callback will be NULL in this case, since no IO was + * required. If the block is not in the cache pass the read request + * on to the spa with a substitute callback function, so that the + * requested block will be added to the cache. + * + * If a read request arrives for a block that has a read in-progress, + * either wait for the in-progress read to complete (and return the + * results); or, if this is a read with a "done" func, add a record + * to the read to invoke the "done" func when the read completes, + * and return; or just return. + * + * arc_read_done() will invoke all the requested "done" functions + * for readers of this block. + */ +int +arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, + void *private, zio_priority_t priority, int zio_flags, + arc_flags_t *arc_flags, const zbookmark_phys_t *zb) +{ + arc_buf_hdr_t *hdr = NULL; + arc_buf_t *buf = NULL; + kmutex_t *hash_lock = NULL; + zio_t *rzio; + uint64_t guid = spa_load_guid(spa); + int rc = 0; + + ASSERT(!BP_IS_EMBEDDED(bp) || + BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA); + +top: + if (!BP_IS_EMBEDDED(bp)) { + /* + * Embedded BP's have no DVA and require no I/O to "read". + * Create an anonymous arc buf to back it. + */ + hdr = buf_hash_find(guid, bp, &hash_lock); + } + + if (hdr != NULL && HDR_HAS_L1HDR(hdr) && hdr->b_l1hdr.b_datacnt > 0) { + + *arc_flags |= ARC_FLAG_CACHED; + + if (HDR_IO_IN_PROGRESS(hdr)) { + + if (*arc_flags & ARC_FLAG_WAIT) { + cv_wait(&hdr->b_l1hdr.b_cv, hash_lock); + mutex_exit(hash_lock); + goto top; + } + ASSERT(*arc_flags & ARC_FLAG_NOWAIT); + + if (done) { + arc_callback_t *acb = NULL; + + acb = kmem_zalloc(sizeof (arc_callback_t), + KM_SLEEP); + acb->acb_done = done; + acb->acb_private = private; + if (pio != NULL) + acb->acb_zio_dummy = zio_null(pio, + spa, NULL, NULL, NULL, zio_flags); + + ASSERT(acb->acb_done != NULL); + acb->acb_next = hdr->b_l1hdr.b_acb; + hdr->b_l1hdr.b_acb = acb; + add_reference(hdr, hash_lock, private); + mutex_exit(hash_lock); + goto out; + } + mutex_exit(hash_lock); + goto out; + } + + ASSERT(hdr->b_l1hdr.b_state == arc_mru || + hdr->b_l1hdr.b_state == arc_mfu); + + if (done) { + add_reference(hdr, hash_lock, private); + /* + * If this block is already in use, create a new + * copy of the data so that we will be guaranteed + * that arc_release() will always succeed. + */ + buf = hdr->b_l1hdr.b_buf; + ASSERT(buf); + ASSERT(buf->b_data); + if (HDR_BUF_AVAILABLE(hdr)) { + ASSERT(buf->b_efunc == NULL); + hdr->b_flags &= ~ARC_FLAG_BUF_AVAILABLE; + } else { + buf = arc_buf_clone(buf); + } + + } else if (*arc_flags & ARC_FLAG_PREFETCH && + refcount_count(&hdr->b_l1hdr.b_refcnt) == 0) { + hdr->b_flags |= ARC_FLAG_PREFETCH; + } + DTRACE_PROBE1(arc__hit, arc_buf_hdr_t *, hdr); + arc_access(hdr, hash_lock); + if (*arc_flags & ARC_FLAG_L2CACHE) + hdr->b_flags |= ARC_FLAG_L2CACHE; + if (*arc_flags & ARC_FLAG_L2COMPRESS) + hdr->b_flags |= ARC_FLAG_L2COMPRESS; + mutex_exit(hash_lock); + ARCSTAT_BUMP(arcstat_hits); + ARCSTAT_CONDSTAT(!HDR_PREFETCH(hdr), + demand, prefetch, !HDR_ISTYPE_METADATA(hdr), + data, metadata, hits); + + if (done) + done(NULL, buf, private); + } else { + uint64_t size = BP_GET_LSIZE(bp); + arc_callback_t *acb; + vdev_t *vd = NULL; + uint64_t addr = 0; + boolean_t devw = B_FALSE; + enum zio_compress b_compress = ZIO_COMPRESS_OFF; + int32_t b_asize = 0; + + /* + * Gracefully handle a damaged logical block size as a + * checksum error by passing a dummy zio to the done callback. + */ + if (size > spa_maxblocksize(spa)) { + if (done) { + rzio = zio_null(pio, spa, NULL, + NULL, NULL, zio_flags); + rzio->io_error = ECKSUM; + done(rzio, buf, private); + zio_nowait(rzio); + } + rc = ECKSUM; + goto out; + } + + if (hdr == NULL) { + /* this block is not in the cache */ + arc_buf_hdr_t *exists = NULL; + arc_buf_contents_t type = BP_GET_BUFC_TYPE(bp); + buf = arc_buf_alloc(spa, size, private, type); + hdr = buf->b_hdr; + if (!BP_IS_EMBEDDED(bp)) { + hdr->b_dva = *BP_IDENTITY(bp); + hdr->b_birth = BP_PHYSICAL_BIRTH(bp); + exists = buf_hash_insert(hdr, &hash_lock); + } + if (exists != NULL) { + /* somebody beat us to the hash insert */ + mutex_exit(hash_lock); + buf_discard_identity(hdr); + (void) arc_buf_remove_ref(buf, private); + goto top; /* restart the IO request */ + } + + /* if this is a prefetch, we don't have a reference */ + if (*arc_flags & ARC_FLAG_PREFETCH) { + (void) remove_reference(hdr, hash_lock, + private); + hdr->b_flags |= ARC_FLAG_PREFETCH; + } + if (*arc_flags & ARC_FLAG_L2CACHE) + hdr->b_flags |= ARC_FLAG_L2CACHE; + if (*arc_flags & ARC_FLAG_L2COMPRESS) + hdr->b_flags |= ARC_FLAG_L2COMPRESS; + if (BP_GET_LEVEL(bp) > 0) + hdr->b_flags |= ARC_FLAG_INDIRECT; + } else { + /* + * This block is in the ghost cache. If it was L2-only + * (and thus didn't have an L1 hdr), we realloc the + * header to add an L1 hdr. + */ + if (!HDR_HAS_L1HDR(hdr)) { + hdr = arc_hdr_realloc(hdr, hdr_l2only_cache, + hdr_full_cache); + } + + ASSERT(GHOST_STATE(hdr->b_l1hdr.b_state)); + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); + + /* if this is a prefetch, we don't have a reference */ + if (*arc_flags & ARC_FLAG_PREFETCH) + hdr->b_flags |= ARC_FLAG_PREFETCH; + else + add_reference(hdr, hash_lock, private); + if (*arc_flags & ARC_FLAG_L2CACHE) + hdr->b_flags |= ARC_FLAG_L2CACHE; + if (*arc_flags & ARC_FLAG_L2COMPRESS) + hdr->b_flags |= ARC_FLAG_L2COMPRESS; + buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); + buf->b_hdr = hdr; + buf->b_data = NULL; + buf->b_efunc = NULL; + buf->b_private = NULL; + buf->b_next = NULL; + hdr->b_l1hdr.b_buf = buf; + ASSERT0(hdr->b_l1hdr.b_datacnt); + hdr->b_l1hdr.b_datacnt = 1; + arc_get_data_buf(buf); + arc_access(hdr, hash_lock); + } + + ASSERT(!GHOST_STATE(hdr->b_l1hdr.b_state)); + + acb = kmem_zalloc(sizeof (arc_callback_t), KM_SLEEP); + acb->acb_done = done; + acb->acb_private = private; + + ASSERT(hdr->b_l1hdr.b_acb == NULL); + hdr->b_l1hdr.b_acb = acb; + hdr->b_flags |= ARC_FLAG_IO_IN_PROGRESS; + + if (HDR_HAS_L2HDR(hdr) && + (vd = hdr->b_l2hdr.b_dev->l2ad_vdev) != NULL) { + devw = hdr->b_l2hdr.b_dev->l2ad_writing; + addr = hdr->b_l2hdr.b_daddr; + b_compress = hdr->b_l2hdr.b_compress; + b_asize = hdr->b_l2hdr.b_asize; + /* + * Lock out device removal. + */ + if (vdev_is_dead(vd) || + !spa_config_tryenter(spa, SCL_L2ARC, vd, RW_READER)) + vd = NULL; + } + + if (hash_lock != NULL) + mutex_exit(hash_lock); + + /* + * At this point, we have a level 1 cache miss. Try again in + * L2ARC if possible. + */ + ASSERT3U(hdr->b_size, ==, size); + DTRACE_PROBE4(arc__miss, arc_buf_hdr_t *, hdr, blkptr_t *, bp, + uint64_t, size, zbookmark_phys_t *, zb); + ARCSTAT_BUMP(arcstat_misses); + ARCSTAT_CONDSTAT(!HDR_PREFETCH(hdr), + demand, prefetch, !HDR_ISTYPE_METADATA(hdr), + data, metadata, misses); + + if (vd != NULL && l2arc_ndev != 0 && !(l2arc_norw && devw)) { + /* + * Read from the L2ARC if the following are true: + * 1. The L2ARC vdev was previously cached. + * 2. This buffer still has L2ARC metadata. + * 3. This buffer isn't currently writing to the L2ARC. + * 4. The L2ARC entry wasn't evicted, which may + * also have invalidated the vdev. + * 5. This isn't prefetch and l2arc_noprefetch is set. + */ + if (HDR_HAS_L2HDR(hdr) && + !HDR_L2_WRITING(hdr) && !HDR_L2_EVICTED(hdr) && + !(l2arc_noprefetch && HDR_PREFETCH(hdr))) { + l2arc_read_callback_t *cb; + + DTRACE_PROBE1(l2arc__hit, arc_buf_hdr_t *, hdr); + ARCSTAT_BUMP(arcstat_l2_hits); + atomic_inc_32(&hdr->b_l2hdr.b_hits); + + cb = kmem_zalloc(sizeof (l2arc_read_callback_t), + KM_SLEEP); + cb->l2rcb_buf = buf; + cb->l2rcb_spa = spa; + cb->l2rcb_bp = *bp; + cb->l2rcb_zb = *zb; + cb->l2rcb_flags = zio_flags; + cb->l2rcb_compress = b_compress; + + ASSERT(addr >= VDEV_LABEL_START_SIZE && + addr + size < vd->vdev_psize - + VDEV_LABEL_END_SIZE); + + /* + * l2arc read. The SCL_L2ARC lock will be + * released by l2arc_read_done(). + * Issue a null zio if the underlying buffer + * was squashed to zero size by compression. + */ + if (b_compress == ZIO_COMPRESS_EMPTY) { + rzio = zio_null(pio, spa, vd, + l2arc_read_done, cb, + zio_flags | ZIO_FLAG_DONT_CACHE | + ZIO_FLAG_CANFAIL | + ZIO_FLAG_DONT_PROPAGATE | + ZIO_FLAG_DONT_RETRY); + } else { + rzio = zio_read_phys(pio, vd, addr, + b_asize, buf->b_data, + ZIO_CHECKSUM_OFF, + l2arc_read_done, cb, priority, + zio_flags | ZIO_FLAG_DONT_CACHE | + ZIO_FLAG_CANFAIL | + ZIO_FLAG_DONT_PROPAGATE | + ZIO_FLAG_DONT_RETRY, B_FALSE); + } + DTRACE_PROBE2(l2arc__read, vdev_t *, vd, + zio_t *, rzio); + ARCSTAT_INCR(arcstat_l2_read_bytes, b_asize); + + if (*arc_flags & ARC_FLAG_NOWAIT) { + zio_nowait(rzio); + goto out; + } + + ASSERT(*arc_flags & ARC_FLAG_WAIT); + if (zio_wait(rzio) == 0) + goto out; + + /* l2arc read error; goto zio_read() */ + } else { + DTRACE_PROBE1(l2arc__miss, + arc_buf_hdr_t *, hdr); + ARCSTAT_BUMP(arcstat_l2_misses); + if (HDR_L2_WRITING(hdr)) + ARCSTAT_BUMP(arcstat_l2_rw_clash); + spa_config_exit(spa, SCL_L2ARC, vd); + } + } else { + if (vd != NULL) + spa_config_exit(spa, SCL_L2ARC, vd); + if (l2arc_ndev != 0) { + DTRACE_PROBE1(l2arc__miss, + arc_buf_hdr_t *, hdr); + ARCSTAT_BUMP(arcstat_l2_misses); + } + } + + rzio = zio_read(pio, spa, bp, buf->b_data, size, + arc_read_done, buf, priority, zio_flags, zb); + + if (*arc_flags & ARC_FLAG_WAIT) { + rc = zio_wait(rzio); + goto out; + } + + ASSERT(*arc_flags & ARC_FLAG_NOWAIT); + zio_nowait(rzio); + } + +out: + spa_read_history_add(spa, zb, *arc_flags); + return (rc); +} + +arc_prune_t * +arc_add_prune_callback(arc_prune_func_t *func, void *private) +{ + arc_prune_t *p; + + p = kmem_alloc(sizeof (*p), KM_SLEEP); + p->p_pfunc = func; + p->p_private = private; + list_link_init(&p->p_node); + refcount_create(&p->p_refcnt); + + mutex_enter(&arc_prune_mtx); + refcount_add(&p->p_refcnt, &arc_prune_list); + list_insert_head(&arc_prune_list, p); + mutex_exit(&arc_prune_mtx); + + return (p); +} + +void +arc_remove_prune_callback(arc_prune_t *p) +{ + mutex_enter(&arc_prune_mtx); + list_remove(&arc_prune_list, p); + if (refcount_remove(&p->p_refcnt, &arc_prune_list) == 0) { + refcount_destroy(&p->p_refcnt); + kmem_free(p, sizeof (*p)); + } + mutex_exit(&arc_prune_mtx); +} + +void +arc_set_callback(arc_buf_t *buf, arc_evict_func_t *func, void *private) +{ + ASSERT(buf->b_hdr != NULL); + ASSERT(buf->b_hdr->b_l1hdr.b_state != arc_anon); + ASSERT(!refcount_is_zero(&buf->b_hdr->b_l1hdr.b_refcnt) || + func == NULL); + ASSERT(buf->b_efunc == NULL); + ASSERT(!HDR_BUF_AVAILABLE(buf->b_hdr)); + + buf->b_efunc = func; + buf->b_private = private; +} + +/* + * Notify the arc that a block was freed, and thus will never be used again. + */ +void +arc_freed(spa_t *spa, const blkptr_t *bp) +{ + arc_buf_hdr_t *hdr; + kmutex_t *hash_lock; + uint64_t guid = spa_load_guid(spa); + + ASSERT(!BP_IS_EMBEDDED(bp)); + + hdr = buf_hash_find(guid, bp, &hash_lock); + if (hdr == NULL) + return; + if (HDR_BUF_AVAILABLE(hdr)) { + arc_buf_t *buf = hdr->b_l1hdr.b_buf; + add_reference(hdr, hash_lock, FTAG); + hdr->b_flags &= ~ARC_FLAG_BUF_AVAILABLE; + mutex_exit(hash_lock); + + arc_release(buf, FTAG); + (void) arc_buf_remove_ref(buf, FTAG); + } else { + mutex_exit(hash_lock); + } + +} + +/* + * Clear the user eviction callback set by arc_set_callback(), first calling + * it if it exists. Because the presence of a callback keeps an arc_buf cached + * clearing the callback may result in the arc_buf being destroyed. However, + * it will not result in the *last* arc_buf being destroyed, hence the data + * will remain cached in the ARC. We make a copy of the arc buffer here so + * that we can process the callback without holding any locks. + * + * It's possible that the callback is already in the process of being cleared + * by another thread. In this case we can not clear the callback. + * + * Returns B_TRUE if the callback was successfully called and cleared. + */ +boolean_t +arc_clear_callback(arc_buf_t *buf) +{ + arc_buf_hdr_t *hdr; + kmutex_t *hash_lock; + arc_evict_func_t *efunc = buf->b_efunc; + void *private = buf->b_private; + + mutex_enter(&buf->b_evict_lock); + hdr = buf->b_hdr; + if (hdr == NULL) { + /* + * We are in arc_do_user_evicts(). + */ + ASSERT(buf->b_data == NULL); + mutex_exit(&buf->b_evict_lock); + return (B_FALSE); + } else if (buf->b_data == NULL) { + /* + * We are on the eviction list; process this buffer now + * but let arc_do_user_evicts() do the reaping. + */ + buf->b_efunc = NULL; + mutex_exit(&buf->b_evict_lock); + VERIFY0(efunc(private)); + return (B_TRUE); + } + hash_lock = HDR_LOCK(hdr); + mutex_enter(hash_lock); + hdr = buf->b_hdr; + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + + ASSERT3U(refcount_count(&hdr->b_l1hdr.b_refcnt), <, + hdr->b_l1hdr.b_datacnt); + ASSERT(hdr->b_l1hdr.b_state == arc_mru || + hdr->b_l1hdr.b_state == arc_mfu); + + buf->b_efunc = NULL; + buf->b_private = NULL; + + if (hdr->b_l1hdr.b_datacnt > 1) { + mutex_exit(&buf->b_evict_lock); + arc_buf_destroy(buf, TRUE); + } else { + ASSERT(buf == hdr->b_l1hdr.b_buf); + hdr->b_flags |= ARC_FLAG_BUF_AVAILABLE; + mutex_exit(&buf->b_evict_lock); + } + + mutex_exit(hash_lock); + VERIFY0(efunc(private)); + return (B_TRUE); +} + +/* + * Release this buffer from the cache, making it an anonymous buffer. This + * must be done after a read and prior to modifying the buffer contents. + * If the buffer has more than one reference, we must make + * a new hdr for the buffer. + */ +void +arc_release(arc_buf_t *buf, void *tag) +{ + kmutex_t *hash_lock; + arc_state_t *state; + arc_buf_hdr_t *hdr = buf->b_hdr; + + /* + * It would be nice to assert that if its DMU metadata (level > + * 0 || it's the dnode file), then it must be syncing context. + * But we don't know that information at this level. + */ + + mutex_enter(&buf->b_evict_lock); + + ASSERT(HDR_HAS_L1HDR(hdr)); + + /* + * We don't grab the hash lock prior to this check, because if + * the buffer's header is in the arc_anon state, it won't be + * linked into the hash table. + */ + if (hdr->b_l1hdr.b_state == arc_anon) { + mutex_exit(&buf->b_evict_lock); + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + ASSERT(!HDR_IN_HASH_TABLE(hdr)); + ASSERT(!HDR_HAS_L2HDR(hdr)); + ASSERT(BUF_EMPTY(hdr)); + + ASSERT3U(hdr->b_l1hdr.b_datacnt, ==, 1); + ASSERT3S(refcount_count(&hdr->b_l1hdr.b_refcnt), ==, 1); + ASSERT(!list_link_active(&hdr->b_l1hdr.b_arc_node)); + + ASSERT3P(buf->b_efunc, ==, NULL); + ASSERT3P(buf->b_private, ==, NULL); + + hdr->b_l1hdr.b_arc_access = 0; + arc_buf_thaw(buf); + + return; + } + + hash_lock = HDR_LOCK(hdr); + mutex_enter(hash_lock); + + /* + * This assignment is only valid as long as the hash_lock is + * held, we must be careful not to reference state or the + * b_state field after dropping the lock. + */ + state = hdr->b_l1hdr.b_state; + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + ASSERT3P(state, !=, arc_anon); + + /* this buffer is not on any list */ + ASSERT(refcount_count(&hdr->b_l1hdr.b_refcnt) > 0); + + if (HDR_HAS_L2HDR(hdr)) { + mutex_enter(&hdr->b_l2hdr.b_dev->l2ad_mtx); + + /* + * We have to recheck this conditional again now that + * we're holding the l2ad_mtx to prevent a race with + * another thread which might be concurrently calling + * l2arc_evict(). In that case, l2arc_evict() might have + * destroyed the header's L2 portion as we were waiting + * to acquire the l2ad_mtx. + */ + if (HDR_HAS_L2HDR(hdr)) + arc_hdr_l2hdr_destroy(hdr); + + mutex_exit(&hdr->b_l2hdr.b_dev->l2ad_mtx); + } + + /* + * Do we have more than one buf? + */ + if (hdr->b_l1hdr.b_datacnt > 1) { + arc_buf_hdr_t *nhdr; + arc_buf_t **bufp; + uint64_t blksz = hdr->b_size; + uint64_t spa = hdr->b_spa; + arc_buf_contents_t type = arc_buf_type(hdr); + uint32_t flags = hdr->b_flags; + + ASSERT(hdr->b_l1hdr.b_buf != buf || buf->b_next != NULL); + /* + * Pull the data off of this hdr and attach it to + * a new anonymous hdr. + */ + (void) remove_reference(hdr, hash_lock, tag); + bufp = &hdr->b_l1hdr.b_buf; + while (*bufp != buf) + bufp = &(*bufp)->b_next; + *bufp = buf->b_next; + buf->b_next = NULL; + + ASSERT3P(state, !=, arc_l2c_only); + + (void) refcount_remove_many( + &state->arcs_size, hdr->b_size, buf); + + if (refcount_is_zero(&hdr->b_l1hdr.b_refcnt)) { + uint64_t *size; + + ASSERT3P(state, !=, arc_l2c_only); + size = &state->arcs_lsize[type]; + ASSERT3U(*size, >=, hdr->b_size); + atomic_add_64(size, -hdr->b_size); + } + + /* + * We're releasing a duplicate user data buffer, update + * our statistics accordingly. + */ + if (HDR_ISTYPE_DATA(hdr)) { + ARCSTAT_BUMPDOWN(arcstat_duplicate_buffers); + ARCSTAT_INCR(arcstat_duplicate_buffers_size, + -hdr->b_size); + } + hdr->b_l1hdr.b_datacnt -= 1; + arc_cksum_verify(buf); + arc_buf_unwatch(buf); + + mutex_exit(hash_lock); + + nhdr = kmem_cache_alloc(hdr_full_cache, KM_PUSHPAGE); + nhdr->b_size = blksz; + nhdr->b_spa = spa; + + nhdr->b_l1hdr.b_mru_hits = 0; + nhdr->b_l1hdr.b_mru_ghost_hits = 0; + nhdr->b_l1hdr.b_mfu_hits = 0; + nhdr->b_l1hdr.b_mfu_ghost_hits = 0; + nhdr->b_l1hdr.b_l2_hits = 0; + nhdr->b_flags = flags & ARC_FLAG_L2_WRITING; + nhdr->b_flags |= arc_bufc_to_flags(type); + nhdr->b_flags |= ARC_FLAG_HAS_L1HDR; + + nhdr->b_l1hdr.b_buf = buf; + nhdr->b_l1hdr.b_datacnt = 1; + nhdr->b_l1hdr.b_state = arc_anon; + nhdr->b_l1hdr.b_arc_access = 0; + nhdr->b_l1hdr.b_tmp_cdata = NULL; + nhdr->b_freeze_cksum = NULL; + + (void) refcount_add(&nhdr->b_l1hdr.b_refcnt, tag); + buf->b_hdr = nhdr; + mutex_exit(&buf->b_evict_lock); + (void) refcount_add_many(&arc_anon->arcs_size, blksz, buf); + } else { + mutex_exit(&buf->b_evict_lock); + ASSERT(refcount_count(&hdr->b_l1hdr.b_refcnt) == 1); + /* protected by hash lock, or hdr is on arc_anon */ + ASSERT(!multilist_link_active(&hdr->b_l1hdr.b_arc_node)); + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + hdr->b_l1hdr.b_mru_hits = 0; + hdr->b_l1hdr.b_mru_ghost_hits = 0; + hdr->b_l1hdr.b_mfu_hits = 0; + hdr->b_l1hdr.b_mfu_ghost_hits = 0; + hdr->b_l1hdr.b_l2_hits = 0; + arc_change_state(arc_anon, hdr, hash_lock); + hdr->b_l1hdr.b_arc_access = 0; + mutex_exit(hash_lock); + + buf_discard_identity(hdr); + arc_buf_thaw(buf); + } + buf->b_efunc = NULL; + buf->b_private = NULL; +} + +int +arc_released(arc_buf_t *buf) +{ + int released; + + mutex_enter(&buf->b_evict_lock); + released = (buf->b_data != NULL && + buf->b_hdr->b_l1hdr.b_state == arc_anon); + mutex_exit(&buf->b_evict_lock); + return (released); +} + +#ifdef ZFS_DEBUG +int +arc_referenced(arc_buf_t *buf) +{ + int referenced; + + mutex_enter(&buf->b_evict_lock); + referenced = (refcount_count(&buf->b_hdr->b_l1hdr.b_refcnt)); + mutex_exit(&buf->b_evict_lock); + return (referenced); +} +#endif + +static void +arc_write_ready(zio_t *zio) +{ + arc_write_callback_t *callback = zio->io_private; + arc_buf_t *buf = callback->awcb_buf; + arc_buf_hdr_t *hdr = buf->b_hdr; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(!refcount_is_zero(&buf->b_hdr->b_l1hdr.b_refcnt)); + ASSERT(hdr->b_l1hdr.b_datacnt > 0); + callback->awcb_ready(zio, buf, callback->awcb_private); + + /* + * If the IO is already in progress, then this is a re-write + * attempt, so we need to thaw and re-compute the cksum. + * It is the responsibility of the callback to handle the + * accounting for any re-write attempt. + */ + if (HDR_IO_IN_PROGRESS(hdr)) { + mutex_enter(&hdr->b_l1hdr.b_freeze_lock); + if (hdr->b_freeze_cksum != NULL) { + kmem_free(hdr->b_freeze_cksum, sizeof (zio_cksum_t)); + hdr->b_freeze_cksum = NULL; + } + mutex_exit(&hdr->b_l1hdr.b_freeze_lock); + } + arc_cksum_compute(buf, B_FALSE); + hdr->b_flags |= ARC_FLAG_IO_IN_PROGRESS; +} + +/* + * The SPA calls this callback for each physical write that happens on behalf + * of a logical write. See the comment in dbuf_write_physdone() for details. + */ +static void +arc_write_physdone(zio_t *zio) +{ + arc_write_callback_t *cb = zio->io_private; + if (cb->awcb_physdone != NULL) + cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private); +} + +static void +arc_write_done(zio_t *zio) +{ + arc_write_callback_t *callback = zio->io_private; + arc_buf_t *buf = callback->awcb_buf; + arc_buf_hdr_t *hdr = buf->b_hdr; + + ASSERT(hdr->b_l1hdr.b_acb == NULL); + + if (zio->io_error == 0) { + if (BP_IS_HOLE(zio->io_bp) || BP_IS_EMBEDDED(zio->io_bp)) { + buf_discard_identity(hdr); + } else { + hdr->b_dva = *BP_IDENTITY(zio->io_bp); + hdr->b_birth = BP_PHYSICAL_BIRTH(zio->io_bp); + } + } else { + ASSERT(BUF_EMPTY(hdr)); + } + + /* + * If the block to be written was all-zero or compressed enough to be + * embedded in the BP, no write was performed so there will be no + * dva/birth/checksum. The buffer must therefore remain anonymous + * (and uncached). + */ + if (!BUF_EMPTY(hdr)) { + arc_buf_hdr_t *exists; + kmutex_t *hash_lock; + + ASSERT(zio->io_error == 0); + + arc_cksum_verify(buf); + + exists = buf_hash_insert(hdr, &hash_lock); + if (exists != NULL) { + /* + * This can only happen if we overwrite for + * sync-to-convergence, because we remove + * buffers from the hash table when we arc_free(). + */ + if (zio->io_flags & ZIO_FLAG_IO_REWRITE) { + if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp)) + panic("bad overwrite, hdr=%p exists=%p", + (void *)hdr, (void *)exists); + ASSERT(refcount_is_zero( + &exists->b_l1hdr.b_refcnt)); + arc_change_state(arc_anon, exists, hash_lock); + mutex_exit(hash_lock); + arc_hdr_destroy(exists); + exists = buf_hash_insert(hdr, &hash_lock); + ASSERT3P(exists, ==, NULL); + } else if (zio->io_flags & ZIO_FLAG_NOPWRITE) { + /* nopwrite */ + ASSERT(zio->io_prop.zp_nopwrite); + if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp)) + panic("bad nopwrite, hdr=%p exists=%p", + (void *)hdr, (void *)exists); + } else { + /* Dedup */ + ASSERT(hdr->b_l1hdr.b_datacnt == 1); + ASSERT(hdr->b_l1hdr.b_state == arc_anon); + ASSERT(BP_GET_DEDUP(zio->io_bp)); + ASSERT(BP_GET_LEVEL(zio->io_bp) == 0); + } + } + hdr->b_flags &= ~ARC_FLAG_IO_IN_PROGRESS; + /* if it's not anon, we are doing a scrub */ + if (exists == NULL && hdr->b_l1hdr.b_state == arc_anon) + arc_access(hdr, hash_lock); + mutex_exit(hash_lock); + } else { + hdr->b_flags &= ~ARC_FLAG_IO_IN_PROGRESS; + } + + ASSERT(!refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); + callback->awcb_done(zio, buf, callback->awcb_private); + + kmem_free(callback, sizeof (arc_write_callback_t)); +} + +zio_t * +arc_write(zio_t *pio, spa_t *spa, uint64_t txg, + blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone, + arc_done_func_t *done, void *private, zio_priority_t priority, + int zio_flags, const zbookmark_phys_t *zb) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + arc_write_callback_t *callback; + zio_t *zio; + + ASSERT(ready != NULL); + ASSERT(done != NULL); + ASSERT(!HDR_IO_ERROR(hdr)); + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + ASSERT(hdr->b_l1hdr.b_acb == NULL); + ASSERT(hdr->b_l1hdr.b_datacnt > 0); + if (l2arc) + hdr->b_flags |= ARC_FLAG_L2CACHE; + if (l2arc_compress) + hdr->b_flags |= ARC_FLAG_L2COMPRESS; + callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); + callback->awcb_ready = ready; + callback->awcb_physdone = physdone; + callback->awcb_done = done; + callback->awcb_private = private; + callback->awcb_buf = buf; + + zio = zio_write(pio, spa, txg, bp, buf->b_data, hdr->b_size, zp, + arc_write_ready, arc_write_physdone, arc_write_done, callback, + priority, zio_flags, zb); + + return (zio); +} + +static int +arc_memory_throttle(uint64_t reserve, uint64_t txg) +{ +#ifdef _KERNEL + uint64_t available_memory = ptob(freemem); + static uint64_t page_load = 0; + static uint64_t last_txg = 0; +#ifdef __linux__ + pgcnt_t minfree = btop(arc_sys_free / 4); +#endif + + if (freemem > physmem * arc_lotsfree_percent / 100) + return (0); + + if (txg > last_txg) { + last_txg = txg; + page_load = 0; + } + + /* + * If we are in pageout, we know that memory is already tight, + * the arc is already going to be evicting, so we just want to + * continue to let page writes occur as quickly as possible. + */ + if (current_is_kswapd()) { + if (page_load > MAX(ptob(minfree), available_memory) / 4) { + DMU_TX_STAT_BUMP(dmu_tx_memory_reclaim); + return (SET_ERROR(ERESTART)); + } + /* Note: reserve is inflated, so we deflate */ + page_load += reserve / 8; + return (0); + } else if (page_load > 0 && arc_reclaim_needed()) { + /* memory is low, delay before restarting */ + ARCSTAT_INCR(arcstat_memory_throttle_count, 1); + DMU_TX_STAT_BUMP(dmu_tx_memory_reclaim); + return (SET_ERROR(EAGAIN)); + } + page_load = 0; +#endif + return (0); +} + +void +arc_tempreserve_clear(uint64_t reserve) +{ + atomic_add_64(&arc_tempreserve, -reserve); + ASSERT((int64_t)arc_tempreserve >= 0); +} + +int +arc_tempreserve_space(uint64_t reserve, uint64_t txg) +{ + int error; + uint64_t anon_size; + + if (reserve > arc_c/4 && !arc_no_grow) + arc_c = MIN(arc_c_max, reserve * 4); + + /* + * Throttle when the calculated memory footprint for the TXG + * exceeds the target ARC size. + */ + if (reserve > arc_c) { + DMU_TX_STAT_BUMP(dmu_tx_memory_reserve); + return (SET_ERROR(ERESTART)); + } + + /* + * Don't count loaned bufs as in flight dirty data to prevent long + * network delays from blocking transactions that are ready to be + * assigned to a txg. + */ + anon_size = MAX((int64_t)(refcount_count(&arc_anon->arcs_size) - + arc_loaned_bytes), 0); + + /* + * Writes will, almost always, require additional memory allocations + * in order to compress/encrypt/etc the data. We therefore need to + * make sure that there is sufficient available memory for this. + */ + error = arc_memory_throttle(reserve, txg); + if (error != 0) + return (error); + + /* + * Throttle writes when the amount of dirty data in the cache + * gets too large. We try to keep the cache less than half full + * of dirty blocks so that our sync times don't grow too large. + * Note: if two requests come in concurrently, we might let them + * both succeed, when one of them should fail. Not a huge deal. + */ + + if (reserve + arc_tempreserve + anon_size > arc_c / 2 && + anon_size > arc_c / 4) { + dprintf("failing, arc_tempreserve=%lluK anon_meta=%lluK " + "anon_data=%lluK tempreserve=%lluK arc_c=%lluK\n", + arc_tempreserve>>10, + arc_anon->arcs_lsize[ARC_BUFC_METADATA]>>10, + arc_anon->arcs_lsize[ARC_BUFC_DATA]>>10, + reserve>>10, arc_c>>10); + DMU_TX_STAT_BUMP(dmu_tx_dirty_throttle); + return (SET_ERROR(ERESTART)); + } + atomic_add_64(&arc_tempreserve, reserve); + return (0); +} + +static void +arc_kstat_update_state(arc_state_t *state, kstat_named_t *size, + kstat_named_t *evict_data, kstat_named_t *evict_metadata) +{ + size->value.ui64 = refcount_count(&state->arcs_size); + evict_data->value.ui64 = state->arcs_lsize[ARC_BUFC_DATA]; + evict_metadata->value.ui64 = state->arcs_lsize[ARC_BUFC_METADATA]; +} + +static int +arc_kstat_update(kstat_t *ksp, int rw) +{ + arc_stats_t *as = ksp->ks_data; + + if (rw == KSTAT_WRITE) { + return (EACCES); + } else { + arc_kstat_update_state(arc_anon, + &as->arcstat_anon_size, + &as->arcstat_anon_evictable_data, + &as->arcstat_anon_evictable_metadata); + arc_kstat_update_state(arc_mru, + &as->arcstat_mru_size, + &as->arcstat_mru_evictable_data, + &as->arcstat_mru_evictable_metadata); + arc_kstat_update_state(arc_mru_ghost, + &as->arcstat_mru_ghost_size, + &as->arcstat_mru_ghost_evictable_data, + &as->arcstat_mru_ghost_evictable_metadata); + arc_kstat_update_state(arc_mfu, + &as->arcstat_mfu_size, + &as->arcstat_mfu_evictable_data, + &as->arcstat_mfu_evictable_metadata); + arc_kstat_update_state(arc_mfu_ghost, + &as->arcstat_mfu_ghost_size, + &as->arcstat_mfu_ghost_evictable_data, + &as->arcstat_mfu_ghost_evictable_metadata); + } + + return (0); +} + +/* + * This function *must* return indices evenly distributed between all + * sublists of the multilist. This is needed due to how the ARC eviction + * code is laid out; arc_evict_state() assumes ARC buffers are evenly + * distributed between all sublists and uses this assumption when + * deciding which sublist to evict from and how much to evict from it. + */ +unsigned int +arc_state_multilist_index_func(multilist_t *ml, void *obj) +{ + arc_buf_hdr_t *hdr = obj; + + /* + * We rely on b_dva to generate evenly distributed index + * numbers using buf_hash below. So, as an added precaution, + * let's make sure we never add empty buffers to the arc lists. + */ + ASSERT(!BUF_EMPTY(hdr)); + + /* + * The assumption here, is the hash value for a given + * arc_buf_hdr_t will remain constant throughout its lifetime + * (i.e. its b_spa, b_dva, and b_birth fields don't change). + * Thus, we don't need to store the header's sublist index + * on insertion, as this index can be recalculated on removal. + * + * Also, the low order bits of the hash value are thought to be + * distributed evenly. Otherwise, in the case that the multilist + * has a power of two number of sublists, each sublists' usage + * would not be evenly distributed. + */ + return (buf_hash(hdr->b_spa, &hdr->b_dva, hdr->b_birth) % + multilist_get_num_sublists(ml)); +} + +/* + * Called during module initialization and periodically thereafter to + * apply reasonable changes to the exposed performance tunings. Non-zero + * zfs_* values which differ from the currently set values will be applied. + */ +static void +arc_tuning_update(void) +{ + /* Valid range: 64M - */ + if ((zfs_arc_max) && (zfs_arc_max != arc_c_max) && + (zfs_arc_max > 64 << 20) && (zfs_arc_max < ptob(physmem)) && + (zfs_arc_max > arc_c_min)) { + arc_c_max = zfs_arc_max; + arc_c = arc_c_max; + arc_p = (arc_c >> 1); + arc_meta_limit = MIN(arc_meta_limit, arc_c_max); + } + + /* Valid range: 32M - */ + if ((zfs_arc_min) && (zfs_arc_min != arc_c_min) && + (zfs_arc_min >= 2ULL << SPA_MAXBLOCKSHIFT) && + (zfs_arc_min <= arc_c_max)) { + arc_c_min = zfs_arc_min; + arc_c = MAX(arc_c, arc_c_min); + } + + /* Valid range: 16M - */ + if ((zfs_arc_meta_min) && (zfs_arc_meta_min != arc_meta_min) && + (zfs_arc_meta_min >= 1ULL << SPA_MAXBLOCKSHIFT) && + (zfs_arc_meta_min <= arc_c_max)) { + arc_meta_min = zfs_arc_meta_min; + arc_meta_limit = MAX(arc_meta_limit, arc_meta_min); + } + + /* Valid range: - */ + if ((zfs_arc_meta_limit) && (zfs_arc_meta_limit != arc_meta_limit) && + (zfs_arc_meta_limit >= zfs_arc_meta_min) && + (zfs_arc_meta_limit <= arc_c_max)) + arc_meta_limit = zfs_arc_meta_limit; + + /* Valid range: 1 - N */ + if (zfs_arc_grow_retry) + arc_grow_retry = zfs_arc_grow_retry; + + /* Valid range: 1 - N */ + if (zfs_arc_shrink_shift) { + arc_shrink_shift = zfs_arc_shrink_shift; + arc_no_grow_shift = MIN(arc_no_grow_shift, arc_shrink_shift -1); + } + + /* Valid range: 1 - N */ + if (zfs_arc_p_min_shift) + arc_p_min_shift = zfs_arc_p_min_shift; + + /* Valid range: 1 - N ticks */ + if (zfs_arc_min_prefetch_lifespan) + arc_min_prefetch_lifespan = zfs_arc_min_prefetch_lifespan; + + /* Valid range: 0 - 100 */ + if ((zfs_arc_lotsfree_percent >= 0) && + (zfs_arc_lotsfree_percent <= 100)) + arc_lotsfree_percent = zfs_arc_lotsfree_percent; + + /* Valid range: 0 - */ + if ((zfs_arc_sys_free) && (zfs_arc_sys_free != arc_sys_free)) + arc_sys_free = MIN(MAX(zfs_arc_sys_free, 0), ptob(physmem)); + +} + +void +arc_init(void) +{ + /* + * allmem is "all memory that we could possibly use". + */ +#ifdef _KERNEL + uint64_t allmem = ptob(physmem); +#else + uint64_t allmem = (physmem * PAGESIZE) / 2; +#endif + + mutex_init(&arc_reclaim_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&arc_reclaim_thread_cv, NULL, CV_DEFAULT, NULL); + cv_init(&arc_reclaim_waiters_cv, NULL, CV_DEFAULT, NULL); + + mutex_init(&arc_user_evicts_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&arc_user_evicts_cv, NULL, CV_DEFAULT, NULL); + + /* Convert seconds to clock ticks */ + arc_min_prefetch_lifespan = 1 * hz; + + /* Start out with 1/8 of all memory */ + arc_c = allmem / 8; + +#ifdef _KERNEL + /* + * On architectures where the physical memory can be larger + * than the addressable space (intel in 32-bit mode), we may + * need to limit the cache to 1/8 of VM size. + */ + arc_c = MIN(arc_c, vmem_size(heap_arena, VMEM_ALLOC | VMEM_FREE) / 8); + + /* + * Register a shrinker to support synchronous (direct) memory + * reclaim from the arc. This is done to prevent kswapd from + * swapping out pages when it is preferable to shrink the arc. + */ + spl_register_shrinker(&arc_shrinker); + + /* Set to 1/64 of all memory or a minimum of 512K */ + arc_sys_free = MAX(ptob(physmem / 64), (512 * 1024)); + arc_need_free = 0; +#endif + + /* Set min cache to allow safe operation of arc_adapt() */ + arc_c_min = 2ULL << SPA_MAXBLOCKSHIFT; + /* Set max to 1/2 of all memory */ + arc_c_max = allmem / 2; + + arc_c = arc_c_max; + arc_p = (arc_c >> 1); + + /* Set min to 1/2 of arc_c_min */ + arc_meta_min = 1ULL << SPA_MAXBLOCKSHIFT; + /* Initialize maximum observed usage to zero */ + arc_meta_max = 0; + /* Set limit to 3/4 of arc_c_max with a floor of arc_meta_min */ + arc_meta_limit = MAX((3 * arc_c_max) / 4, arc_meta_min); + + /* Apply user specified tunings */ + arc_tuning_update(); + + if (zfs_arc_num_sublists_per_state < 1) + zfs_arc_num_sublists_per_state = MAX(boot_ncpus, 1); + + /* if kmem_flags are set, lets try to use less memory */ + if (kmem_debugging()) + arc_c = arc_c / 2; + if (arc_c < arc_c_min) + arc_c = arc_c_min; + + arc_anon = &ARC_anon; + arc_mru = &ARC_mru; + arc_mru_ghost = &ARC_mru_ghost; + arc_mfu = &ARC_mfu; + arc_mfu_ghost = &ARC_mfu_ghost; + arc_l2c_only = &ARC_l2c_only; + arc_size = 0; + + multilist_create(&arc_mru->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mru->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mru_ghost->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mru_ghost->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mfu->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mfu->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mfu_ghost->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_mfu_ghost->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_l2c_only->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + multilist_create(&arc_l2c_only->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l1hdr.b_arc_node), + zfs_arc_num_sublists_per_state, arc_state_multilist_index_func); + + arc_anon->arcs_state = ARC_STATE_ANON; + arc_mru->arcs_state = ARC_STATE_MRU; + arc_mru_ghost->arcs_state = ARC_STATE_MRU_GHOST; + arc_mfu->arcs_state = ARC_STATE_MFU; + arc_mfu_ghost->arcs_state = ARC_STATE_MFU_GHOST; + arc_l2c_only->arcs_state = ARC_STATE_L2C_ONLY; + + refcount_create(&arc_anon->arcs_size); + refcount_create(&arc_mru->arcs_size); + refcount_create(&arc_mru_ghost->arcs_size); + refcount_create(&arc_mfu->arcs_size); + refcount_create(&arc_mfu_ghost->arcs_size); + refcount_create(&arc_l2c_only->arcs_size); + + buf_init(); + + arc_reclaim_thread_exit = FALSE; + arc_user_evicts_thread_exit = FALSE; + list_create(&arc_prune_list, sizeof (arc_prune_t), + offsetof(arc_prune_t, p_node)); + arc_eviction_list = NULL; + mutex_init(&arc_prune_mtx, NULL, MUTEX_DEFAULT, NULL); + bzero(&arc_eviction_hdr, sizeof (arc_buf_hdr_t)); + + arc_prune_taskq = taskq_create("arc_prune", max_ncpus, defclsyspri, + max_ncpus, INT_MAX, TASKQ_PREPOPULATE | TASKQ_DYNAMIC); + + arc_ksp = kstat_create("zfs", 0, "arcstats", "misc", KSTAT_TYPE_NAMED, + sizeof (arc_stats) / sizeof (kstat_named_t), KSTAT_FLAG_VIRTUAL); + + if (arc_ksp != NULL) { + arc_ksp->ks_data = &arc_stats; + arc_ksp->ks_update = arc_kstat_update; + kstat_install(arc_ksp); + } + + (void) thread_create(NULL, 0, arc_reclaim_thread, NULL, 0, &p0, + TS_RUN, defclsyspri); + + (void) thread_create(NULL, 0, arc_user_evicts_thread, NULL, 0, &p0, + TS_RUN, defclsyspri); + + arc_dead = FALSE; + arc_warm = B_FALSE; + + /* + * Calculate maximum amount of dirty data per pool. + * + * If it has been set by a module parameter, take that. + * Otherwise, use a percentage of physical memory defined by + * zfs_dirty_data_max_percent (default 10%) with a cap at + * zfs_dirty_data_max_max (default 25% of physical memory). + */ + if (zfs_dirty_data_max_max == 0) + zfs_dirty_data_max_max = (uint64_t)physmem * PAGESIZE * + zfs_dirty_data_max_max_percent / 100; + + if (zfs_dirty_data_max == 0) { + zfs_dirty_data_max = (uint64_t)physmem * PAGESIZE * + zfs_dirty_data_max_percent / 100; + zfs_dirty_data_max = MIN(zfs_dirty_data_max, + zfs_dirty_data_max_max); + } +} + +void +arc_fini(void) +{ + arc_prune_t *p; + +#ifdef _KERNEL + spl_unregister_shrinker(&arc_shrinker); +#endif /* _KERNEL */ + + mutex_enter(&arc_reclaim_lock); + arc_reclaim_thread_exit = TRUE; + /* + * The reclaim thread will set arc_reclaim_thread_exit back to + * FALSE when it is finished exiting; we're waiting for that. + */ + while (arc_reclaim_thread_exit) { + cv_signal(&arc_reclaim_thread_cv); + cv_wait(&arc_reclaim_thread_cv, &arc_reclaim_lock); + } + mutex_exit(&arc_reclaim_lock); + + mutex_enter(&arc_user_evicts_lock); + arc_user_evicts_thread_exit = TRUE; + /* + * The user evicts thread will set arc_user_evicts_thread_exit + * to FALSE when it is finished exiting; we're waiting for that. + */ + while (arc_user_evicts_thread_exit) { + cv_signal(&arc_user_evicts_cv); + cv_wait(&arc_user_evicts_cv, &arc_user_evicts_lock); + } + mutex_exit(&arc_user_evicts_lock); + + /* Use TRUE to ensure *all* buffers are evicted */ + arc_flush(NULL, TRUE); + + arc_dead = TRUE; + + if (arc_ksp != NULL) { + kstat_delete(arc_ksp); + arc_ksp = NULL; + } + + taskq_wait(arc_prune_taskq); + taskq_destroy(arc_prune_taskq); + + mutex_enter(&arc_prune_mtx); + while ((p = list_head(&arc_prune_list)) != NULL) { + list_remove(&arc_prune_list, p); + refcount_remove(&p->p_refcnt, &arc_prune_list); + refcount_destroy(&p->p_refcnt); + kmem_free(p, sizeof (*p)); + } + mutex_exit(&arc_prune_mtx); + + list_destroy(&arc_prune_list); + mutex_destroy(&arc_prune_mtx); + mutex_destroy(&arc_reclaim_lock); + cv_destroy(&arc_reclaim_thread_cv); + cv_destroy(&arc_reclaim_waiters_cv); + + mutex_destroy(&arc_user_evicts_lock); + cv_destroy(&arc_user_evicts_cv); + + refcount_destroy(&arc_anon->arcs_size); + refcount_destroy(&arc_mru->arcs_size); + refcount_destroy(&arc_mru_ghost->arcs_size); + refcount_destroy(&arc_mfu->arcs_size); + refcount_destroy(&arc_mfu_ghost->arcs_size); + refcount_destroy(&arc_l2c_only->arcs_size); + + multilist_destroy(&arc_mru->arcs_list[ARC_BUFC_METADATA]); + multilist_destroy(&arc_mru_ghost->arcs_list[ARC_BUFC_METADATA]); + multilist_destroy(&arc_mfu->arcs_list[ARC_BUFC_METADATA]); + multilist_destroy(&arc_mfu_ghost->arcs_list[ARC_BUFC_METADATA]); + multilist_destroy(&arc_mru->arcs_list[ARC_BUFC_DATA]); + multilist_destroy(&arc_mru_ghost->arcs_list[ARC_BUFC_DATA]); + multilist_destroy(&arc_mfu->arcs_list[ARC_BUFC_DATA]); + multilist_destroy(&arc_mfu_ghost->arcs_list[ARC_BUFC_DATA]); + multilist_destroy(&arc_l2c_only->arcs_list[ARC_BUFC_METADATA]); + multilist_destroy(&arc_l2c_only->arcs_list[ARC_BUFC_DATA]); + + buf_fini(); + + ASSERT0(arc_loaned_bytes); +} + +/* + * Level 2 ARC + * + * The level 2 ARC (L2ARC) is a cache layer in-between main memory and disk. + * It uses dedicated storage devices to hold cached data, which are populated + * using large infrequent writes. The main role of this cache is to boost + * the performance of random read workloads. The intended L2ARC devices + * include short-stroked disks, solid state disks, and other media with + * substantially faster read latency than disk. + * + * +-----------------------+ + * | ARC | + * +-----------------------+ + * | ^ ^ + * | | | + * l2arc_feed_thread() arc_read() + * | | | + * | l2arc read | + * V | | + * +---------------+ | + * | L2ARC | | + * +---------------+ | + * | ^ | + * l2arc_write() | | + * | | | + * V | | + * +-------+ +-------+ + * | vdev | | vdev | + * | cache | | cache | + * +-------+ +-------+ + * +=========+ .-----. + * : L2ARC : |-_____-| + * : devices : | Disks | + * +=========+ `-_____-' + * + * Read requests are satisfied from the following sources, in order: + * + * 1) ARC + * 2) vdev cache of L2ARC devices + * 3) L2ARC devices + * 4) vdev cache of disks + * 5) disks + * + * Some L2ARC device types exhibit extremely slow write performance. + * To accommodate for this there are some significant differences between + * the L2ARC and traditional cache design: + * + * 1. There is no eviction path from the ARC to the L2ARC. Evictions from + * the ARC behave as usual, freeing buffers and placing headers on ghost + * lists. The ARC does not send buffers to the L2ARC during eviction as + * this would add inflated write latencies for all ARC memory pressure. + * + * 2. The L2ARC attempts to cache data from the ARC before it is evicted. + * It does this by periodically scanning buffers from the eviction-end of + * the MFU and MRU ARC lists, copying them to the L2ARC devices if they are + * not already there. It scans until a headroom of buffers is satisfied, + * which itself is a buffer for ARC eviction. If a compressible buffer is + * found during scanning and selected for writing to an L2ARC device, we + * temporarily boost scanning headroom during the next scan cycle to make + * sure we adapt to compression effects (which might significantly reduce + * the data volume we write to L2ARC). The thread that does this is + * l2arc_feed_thread(), illustrated below; example sizes are included to + * provide a better sense of ratio than this diagram: + * + * head --> tail + * +---------------------+----------+ + * ARC_mfu |:::::#:::::::::::::::|o#o###o###|-->. # already on L2ARC + * +---------------------+----------+ | o L2ARC eligible + * ARC_mru |:#:::::::::::::::::::|#o#ooo####|-->| : ARC buffer + * +---------------------+----------+ | + * 15.9 Gbytes ^ 32 Mbytes | + * headroom | + * l2arc_feed_thread() + * | + * l2arc write hand <--[oooo]--' + * | 8 Mbyte + * | write max + * V + * +==============================+ + * L2ARC dev |####|#|###|###| |####| ... | + * +==============================+ + * 32 Gbytes + * + * 3. If an ARC buffer is copied to the L2ARC but then hit instead of + * evicted, then the L2ARC has cached a buffer much sooner than it probably + * needed to, potentially wasting L2ARC device bandwidth and storage. It is + * safe to say that this is an uncommon case, since buffers at the end of + * the ARC lists have moved there due to inactivity. + * + * 4. If the ARC evicts faster than the L2ARC can maintain a headroom, + * then the L2ARC simply misses copying some buffers. This serves as a + * pressure valve to prevent heavy read workloads from both stalling the ARC + * with waits and clogging the L2ARC with writes. This also helps prevent + * the potential for the L2ARC to churn if it attempts to cache content too + * quickly, such as during backups of the entire pool. + * + * 5. After system boot and before the ARC has filled main memory, there are + * no evictions from the ARC and so the tails of the ARC_mfu and ARC_mru + * lists can remain mostly static. Instead of searching from tail of these + * lists as pictured, the l2arc_feed_thread() will search from the list heads + * for eligible buffers, greatly increasing its chance of finding them. + * + * The L2ARC device write speed is also boosted during this time so that + * the L2ARC warms up faster. Since there have been no ARC evictions yet, + * there are no L2ARC reads, and no fear of degrading read performance + * through increased writes. + * + * 6. Writes to the L2ARC devices are grouped and sent in-sequence, so that + * the vdev queue can aggregate them into larger and fewer writes. Each + * device is written to in a rotor fashion, sweeping writes through + * available space then repeating. + * + * 7. The L2ARC does not store dirty content. It never needs to flush + * write buffers back to disk based storage. + * + * 8. If an ARC buffer is written (and dirtied) which also exists in the + * L2ARC, the now stale L2ARC buffer is immediately dropped. + * + * The performance of the L2ARC can be tweaked by a number of tunables, which + * may be necessary for different workloads: + * + * l2arc_write_max max write bytes per interval + * l2arc_write_boost extra write bytes during device warmup + * l2arc_noprefetch skip caching prefetched buffers + * l2arc_nocompress skip compressing buffers + * l2arc_headroom number of max device writes to precache + * l2arc_headroom_boost when we find compressed buffers during ARC + * scanning, we multiply headroom by this + * percentage factor for the next scan cycle, + * since more compressed buffers are likely to + * be present + * l2arc_feed_secs seconds between L2ARC writing + * + * Tunables may be removed or added as future performance improvements are + * integrated, and also may become zpool properties. + * + * There are three key functions that control how the L2ARC warms up: + * + * l2arc_write_eligible() check if a buffer is eligible to cache + * l2arc_write_size() calculate how much to write + * l2arc_write_interval() calculate sleep delay between writes + * + * These three functions determine what to write, how much, and how quickly + * to send writes. + */ + +static boolean_t +l2arc_write_eligible(uint64_t spa_guid, arc_buf_hdr_t *hdr) +{ + /* + * A buffer is *not* eligible for the L2ARC if it: + * 1. belongs to a different spa. + * 2. is already cached on the L2ARC. + * 3. has an I/O in progress (it may be an incomplete read). + * 4. is flagged not eligible (zfs property). + */ + if (hdr->b_spa != spa_guid || HDR_HAS_L2HDR(hdr) || + HDR_IO_IN_PROGRESS(hdr) || !HDR_L2CACHE(hdr)) + return (B_FALSE); + + return (B_TRUE); +} + +static uint64_t +l2arc_write_size(void) +{ + uint64_t size; + + /* + * Make sure our globals have meaningful values in case the user + * altered them. + */ + size = l2arc_write_max; + if (size == 0) { + cmn_err(CE_NOTE, "Bad value for l2arc_write_max, value must " + "be greater than zero, resetting it to the default (%d)", + L2ARC_WRITE_SIZE); + size = l2arc_write_max = L2ARC_WRITE_SIZE; + } + + if (arc_warm == B_FALSE) + size += l2arc_write_boost; + + return (size); + +} + +static clock_t +l2arc_write_interval(clock_t began, uint64_t wanted, uint64_t wrote) +{ + clock_t interval, next, now; + + /* + * If the ARC lists are busy, increase our write rate; if the + * lists are stale, idle back. This is achieved by checking + * how much we previously wrote - if it was more than half of + * what we wanted, schedule the next write much sooner. + */ + if (l2arc_feed_again && wrote > (wanted / 2)) + interval = (hz * l2arc_feed_min_ms) / 1000; + else + interval = hz * l2arc_feed_secs; + + now = ddi_get_lbolt(); + next = MAX(now, MIN(now + interval, began + interval)); + + return (next); +} + +/* + * Cycle through L2ARC devices. This is how L2ARC load balances. + * If a device is returned, this also returns holding the spa config lock. + */ +static l2arc_dev_t * +l2arc_dev_get_next(void) +{ + l2arc_dev_t *first, *next = NULL; + + /* + * Lock out the removal of spas (spa_namespace_lock), then removal + * of cache devices (l2arc_dev_mtx). Once a device has been selected, + * both locks will be dropped and a spa config lock held instead. + */ + mutex_enter(&spa_namespace_lock); + mutex_enter(&l2arc_dev_mtx); + + /* if there are no vdevs, there is nothing to do */ + if (l2arc_ndev == 0) + goto out; + + first = NULL; + next = l2arc_dev_last; + do { + /* loop around the list looking for a non-faulted vdev */ + if (next == NULL) { + next = list_head(l2arc_dev_list); + } else { + next = list_next(l2arc_dev_list, next); + if (next == NULL) + next = list_head(l2arc_dev_list); + } + + /* if we have come back to the start, bail out */ + if (first == NULL) + first = next; + else if (next == first) + break; + + } while (vdev_is_dead(next->l2ad_vdev)); + + /* if we were unable to find any usable vdevs, return NULL */ + if (vdev_is_dead(next->l2ad_vdev)) + next = NULL; + + l2arc_dev_last = next; + +out: + mutex_exit(&l2arc_dev_mtx); + + /* + * Grab the config lock to prevent the 'next' device from being + * removed while we are writing to it. + */ + if (next != NULL) + spa_config_enter(next->l2ad_spa, SCL_L2ARC, next, RW_READER); + mutex_exit(&spa_namespace_lock); + + return (next); +} + +/* + * Free buffers that were tagged for destruction. + */ +static void +l2arc_do_free_on_write(void) +{ + list_t *buflist; + l2arc_data_free_t *df, *df_prev; + + mutex_enter(&l2arc_free_on_write_mtx); + buflist = l2arc_free_on_write; + + for (df = list_tail(buflist); df; df = df_prev) { + df_prev = list_prev(buflist, df); + ASSERT(df->l2df_data != NULL); + ASSERT(df->l2df_func != NULL); + df->l2df_func(df->l2df_data, df->l2df_size); + list_remove(buflist, df); + kmem_free(df, sizeof (l2arc_data_free_t)); + } + + mutex_exit(&l2arc_free_on_write_mtx); +} + +/* + * A write to a cache device has completed. Update all headers to allow + * reads from these buffers to begin. + */ +static void +l2arc_write_done(zio_t *zio) +{ + l2arc_write_callback_t *cb; + l2arc_dev_t *dev; + list_t *buflist; + arc_buf_hdr_t *head, *hdr, *hdr_prev; + kmutex_t *hash_lock; + int64_t bytes_dropped = 0; + + cb = zio->io_private; + ASSERT(cb != NULL); + dev = cb->l2wcb_dev; + ASSERT(dev != NULL); + head = cb->l2wcb_head; + ASSERT(head != NULL); + buflist = &dev->l2ad_buflist; + ASSERT(buflist != NULL); + DTRACE_PROBE2(l2arc__iodone, zio_t *, zio, + l2arc_write_callback_t *, cb); + + if (zio->io_error != 0) + ARCSTAT_BUMP(arcstat_l2_writes_error); + + /* + * All writes completed, or an error was hit. + */ +top: + mutex_enter(&dev->l2ad_mtx); + for (hdr = list_prev(buflist, head); hdr; hdr = hdr_prev) { + hdr_prev = list_prev(buflist, hdr); + + hash_lock = HDR_LOCK(hdr); + + /* + * We cannot use mutex_enter or else we can deadlock + * with l2arc_write_buffers (due to swapping the order + * the hash lock and l2ad_mtx are taken). + */ + if (!mutex_tryenter(hash_lock)) { + /* + * Missed the hash lock. We must retry so we + * don't leave the ARC_FLAG_L2_WRITING bit set. + */ + ARCSTAT_BUMP(arcstat_l2_writes_lock_retry); + + /* + * We don't want to rescan the headers we've + * already marked as having been written out, so + * we reinsert the head node so we can pick up + * where we left off. + */ + list_remove(buflist, head); + list_insert_after(buflist, hdr, head); + + mutex_exit(&dev->l2ad_mtx); + + /* + * We wait for the hash lock to become available + * to try and prevent busy waiting, and increase + * the chance we'll be able to acquire the lock + * the next time around. + */ + mutex_enter(hash_lock); + mutex_exit(hash_lock); + goto top; + } + + /* + * We could not have been moved into the arc_l2c_only + * state while in-flight due to our ARC_FLAG_L2_WRITING + * bit being set. Let's just ensure that's being enforced. + */ + ASSERT(HDR_HAS_L1HDR(hdr)); + + /* + * We may have allocated a buffer for L2ARC compression, + * we must release it to avoid leaking this data. + */ + l2arc_release_cdata_buf(hdr); + + if (zio->io_error != 0) { + /* + * Error - drop L2ARC entry. + */ + list_remove(buflist, hdr); + hdr->b_flags &= ~ARC_FLAG_HAS_L2HDR; + + ARCSTAT_INCR(arcstat_l2_asize, -hdr->b_l2hdr.b_asize); + ARCSTAT_INCR(arcstat_l2_size, -hdr->b_size); + + bytes_dropped += hdr->b_l2hdr.b_asize; + (void) refcount_remove_many(&dev->l2ad_alloc, + hdr->b_l2hdr.b_asize, hdr); + } + + /* + * Allow ARC to begin reads and ghost list evictions to + * this L2ARC entry. + */ + hdr->b_flags &= ~ARC_FLAG_L2_WRITING; + + mutex_exit(hash_lock); + } + + atomic_inc_64(&l2arc_writes_done); + list_remove(buflist, head); + ASSERT(!HDR_HAS_L1HDR(head)); + kmem_cache_free(hdr_l2only_cache, head); + mutex_exit(&dev->l2ad_mtx); + + vdev_space_update(dev->l2ad_vdev, -bytes_dropped, 0, 0); + + l2arc_do_free_on_write(); + + kmem_free(cb, sizeof (l2arc_write_callback_t)); +} + +/* + * A read to a cache device completed. Validate buffer contents before + * handing over to the regular ARC routines. + */ +static void +l2arc_read_done(zio_t *zio) +{ + l2arc_read_callback_t *cb; + arc_buf_hdr_t *hdr; + arc_buf_t *buf; + kmutex_t *hash_lock; + int equal; + + ASSERT(zio->io_vd != NULL); + ASSERT(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE); + + spa_config_exit(zio->io_spa, SCL_L2ARC, zio->io_vd); + + cb = zio->io_private; + ASSERT(cb != NULL); + buf = cb->l2rcb_buf; + ASSERT(buf != NULL); + + hash_lock = HDR_LOCK(buf->b_hdr); + mutex_enter(hash_lock); + hdr = buf->b_hdr; + ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); + + /* + * If the buffer was compressed, decompress it first. + */ + if (cb->l2rcb_compress != ZIO_COMPRESS_OFF) + l2arc_decompress_zio(zio, hdr, cb->l2rcb_compress); + ASSERT(zio->io_data != NULL); + ASSERT3U(zio->io_size, ==, hdr->b_size); + ASSERT3U(BP_GET_LSIZE(&cb->l2rcb_bp), ==, hdr->b_size); + + /* + * Check this survived the L2ARC journey. + */ + equal = arc_cksum_equal(buf); + if (equal && zio->io_error == 0 && !HDR_L2_EVICTED(hdr)) { + mutex_exit(hash_lock); + zio->io_private = buf; + zio->io_bp_copy = cb->l2rcb_bp; /* XXX fix in L2ARC 2.0 */ + zio->io_bp = &zio->io_bp_copy; /* XXX fix in L2ARC 2.0 */ + arc_read_done(zio); + } else { + mutex_exit(hash_lock); + /* + * Buffer didn't survive caching. Increment stats and + * reissue to the original storage device. + */ + if (zio->io_error != 0) { + ARCSTAT_BUMP(arcstat_l2_io_error); + } else { + zio->io_error = SET_ERROR(EIO); + } + if (!equal) + ARCSTAT_BUMP(arcstat_l2_cksum_bad); + + /* + * If there's no waiter, issue an async i/o to the primary + * storage now. If there *is* a waiter, the caller must + * issue the i/o in a context where it's OK to block. + */ + if (zio->io_waiter == NULL) { + zio_t *pio = zio_unique_parent(zio); + + ASSERT(!pio || pio->io_child_type == ZIO_CHILD_LOGICAL); + + zio_nowait(zio_read(pio, cb->l2rcb_spa, &cb->l2rcb_bp, + buf->b_data, hdr->b_size, arc_read_done, buf, + zio->io_priority, cb->l2rcb_flags, &cb->l2rcb_zb)); + } + } + + kmem_free(cb, sizeof (l2arc_read_callback_t)); +} + +/* + * This is the list priority from which the L2ARC will search for pages to + * cache. This is used within loops (0..3) to cycle through lists in the + * desired order. This order can have a significant effect on cache + * performance. + * + * Currently the metadata lists are hit first, MFU then MRU, followed by + * the data lists. This function returns a locked list, and also returns + * the lock pointer. + */ +static multilist_sublist_t * +l2arc_sublist_lock(int list_num) +{ + multilist_t *ml = NULL; + unsigned int idx; + + ASSERT(list_num >= 0 && list_num <= 3); + + switch (list_num) { + case 0: + ml = &arc_mfu->arcs_list[ARC_BUFC_METADATA]; + break; + case 1: + ml = &arc_mru->arcs_list[ARC_BUFC_METADATA]; + break; + case 2: + ml = &arc_mfu->arcs_list[ARC_BUFC_DATA]; + break; + case 3: + ml = &arc_mru->arcs_list[ARC_BUFC_DATA]; + break; + } + + /* + * Return a randomly-selected sublist. This is acceptable + * because the caller feeds only a little bit of data for each + * call (8MB). Subsequent calls will result in different + * sublists being selected. + */ + idx = multilist_get_random_index(ml); + return (multilist_sublist_lock(ml, idx)); +} + +/* + * Evict buffers from the device write hand to the distance specified in + * bytes. This distance may span populated buffers, it may span nothing. + * This is clearing a region on the L2ARC device ready for writing. + * If the 'all' boolean is set, every buffer is evicted. + */ +static void +l2arc_evict(l2arc_dev_t *dev, uint64_t distance, boolean_t all) +{ + list_t *buflist; + arc_buf_hdr_t *hdr, *hdr_prev; + kmutex_t *hash_lock; + uint64_t taddr; + + buflist = &dev->l2ad_buflist; + + if (!all && dev->l2ad_first) { + /* + * This is the first sweep through the device. There is + * nothing to evict. + */ + return; + } + + if (dev->l2ad_hand >= (dev->l2ad_end - (2 * distance))) { + /* + * When nearing the end of the device, evict to the end + * before the device write hand jumps to the start. + */ + taddr = dev->l2ad_end; + } else { + taddr = dev->l2ad_hand + distance; + } + DTRACE_PROBE4(l2arc__evict, l2arc_dev_t *, dev, list_t *, buflist, + uint64_t, taddr, boolean_t, all); + +top: + mutex_enter(&dev->l2ad_mtx); + for (hdr = list_tail(buflist); hdr; hdr = hdr_prev) { + hdr_prev = list_prev(buflist, hdr); + + hash_lock = HDR_LOCK(hdr); + + /* + * We cannot use mutex_enter or else we can deadlock + * with l2arc_write_buffers (due to swapping the order + * the hash lock and l2ad_mtx are taken). + */ + if (!mutex_tryenter(hash_lock)) { + /* + * Missed the hash lock. Retry. + */ + ARCSTAT_BUMP(arcstat_l2_evict_lock_retry); + mutex_exit(&dev->l2ad_mtx); + mutex_enter(hash_lock); + mutex_exit(hash_lock); + goto top; + } + + if (HDR_L2_WRITE_HEAD(hdr)) { + /* + * We hit a write head node. Leave it for + * l2arc_write_done(). + */ + list_remove(buflist, hdr); + mutex_exit(hash_lock); + continue; + } + + if (!all && HDR_HAS_L2HDR(hdr) && + (hdr->b_l2hdr.b_daddr > taddr || + hdr->b_l2hdr.b_daddr < dev->l2ad_hand)) { + /* + * We've evicted to the target address, + * or the end of the device. + */ + mutex_exit(hash_lock); + break; + } + + ASSERT(HDR_HAS_L2HDR(hdr)); + if (!HDR_HAS_L1HDR(hdr)) { + ASSERT(!HDR_L2_READING(hdr)); + /* + * This doesn't exist in the ARC. Destroy. + * arc_hdr_destroy() will call list_remove() + * and decrement arcstat_l2_size. + */ + arc_change_state(arc_anon, hdr, hash_lock); + arc_hdr_destroy(hdr); + } else { + ASSERT(hdr->b_l1hdr.b_state != arc_l2c_only); + ARCSTAT_BUMP(arcstat_l2_evict_l1cached); + /* + * Invalidate issued or about to be issued + * reads, since we may be about to write + * over this location. + */ + if (HDR_L2_READING(hdr)) { + ARCSTAT_BUMP(arcstat_l2_evict_reading); + hdr->b_flags |= ARC_FLAG_L2_EVICTED; + } + + /* Ensure this header has finished being written */ + ASSERT(!HDR_L2_WRITING(hdr)); + ASSERT3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL); + + arc_hdr_l2hdr_destroy(hdr); + } + mutex_exit(hash_lock); + } + mutex_exit(&dev->l2ad_mtx); +} + +/* + * Find and write ARC buffers to the L2ARC device. + * + * An ARC_FLAG_L2_WRITING flag is set so that the L2ARC buffers are not valid + * for reading until they have completed writing. + * The headroom_boost is an in-out parameter used to maintain headroom boost + * state between calls to this function. + * + * Returns the number of bytes actually written (which may be smaller than + * the delta by which the device hand has changed due to alignment). + */ +static uint64_t +l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz, + boolean_t *headroom_boost) +{ + arc_buf_hdr_t *hdr, *hdr_prev, *head; + uint64_t write_asize, write_sz, headroom, buf_compress_minsz, + stats_size; + void *buf_data; + boolean_t full; + l2arc_write_callback_t *cb; + zio_t *pio, *wzio; + uint64_t guid = spa_load_guid(spa); + int try; + const boolean_t do_headroom_boost = *headroom_boost; + + ASSERT(dev->l2ad_vdev != NULL); + + /* Lower the flag now, we might want to raise it again later. */ + *headroom_boost = B_FALSE; + + pio = NULL; + write_sz = write_asize = 0; + full = B_FALSE; + head = kmem_cache_alloc(hdr_l2only_cache, KM_PUSHPAGE); + head->b_flags |= ARC_FLAG_L2_WRITE_HEAD; + head->b_flags |= ARC_FLAG_HAS_L2HDR; + + /* + * We will want to try to compress buffers that are at least 2x the + * device sector size. + */ + buf_compress_minsz = 2 << dev->l2ad_vdev->vdev_ashift; + + /* + * Copy buffers for L2ARC writing. + */ + for (try = 0; try <= 3; try++) { + multilist_sublist_t *mls = l2arc_sublist_lock(try); + uint64_t passed_sz = 0; + + /* + * L2ARC fast warmup. + * + * Until the ARC is warm and starts to evict, read from the + * head of the ARC lists rather than the tail. + */ + if (arc_warm == B_FALSE) + hdr = multilist_sublist_head(mls); + else + hdr = multilist_sublist_tail(mls); + + headroom = target_sz * l2arc_headroom; + if (do_headroom_boost) + headroom = (headroom * l2arc_headroom_boost) / 100; + + for (; hdr; hdr = hdr_prev) { + kmutex_t *hash_lock; + uint64_t buf_sz; + uint64_t buf_a_sz; + + if (arc_warm == B_FALSE) + hdr_prev = multilist_sublist_next(mls, hdr); + else + hdr_prev = multilist_sublist_prev(mls, hdr); + + hash_lock = HDR_LOCK(hdr); + if (!mutex_tryenter(hash_lock)) { + /* + * Skip this buffer rather than waiting. + */ + continue; + } + + passed_sz += hdr->b_size; + if (passed_sz > headroom) { + /* + * Searched too far. + */ + mutex_exit(hash_lock); + break; + } + + if (!l2arc_write_eligible(guid, hdr)) { + mutex_exit(hash_lock); + continue; + } + + /* + * Assume that the buffer is not going to be compressed + * and could take more space on disk because of a larger + * disk block size. + */ + buf_sz = hdr->b_size; + buf_a_sz = vdev_psize_to_asize(dev->l2ad_vdev, buf_sz); + + if ((write_asize + buf_a_sz) > target_sz) { + full = B_TRUE; + mutex_exit(hash_lock); + break; + } + + if (pio == NULL) { + /* + * Insert a dummy header on the buflist so + * l2arc_write_done() can find where the + * write buffers begin without searching. + */ + mutex_enter(&dev->l2ad_mtx); + list_insert_head(&dev->l2ad_buflist, head); + mutex_exit(&dev->l2ad_mtx); + + cb = kmem_alloc( + sizeof (l2arc_write_callback_t), KM_SLEEP); + cb->l2wcb_dev = dev; + cb->l2wcb_head = head; + pio = zio_root(spa, l2arc_write_done, cb, + ZIO_FLAG_CANFAIL); + } + + /* + * Create and add a new L2ARC header. + */ + hdr->b_l2hdr.b_dev = dev; + hdr->b_flags |= ARC_FLAG_L2_WRITING; + /* + * Temporarily stash the data buffer in b_tmp_cdata. + * The subsequent write step will pick it up from + * there. This is because can't access b_l1hdr.b_buf + * without holding the hash_lock, which we in turn + * can't access without holding the ARC list locks + * (which we want to avoid during compression/writing) + */ + hdr->b_l2hdr.b_compress = ZIO_COMPRESS_OFF; + hdr->b_l2hdr.b_asize = hdr->b_size; + hdr->b_l2hdr.b_hits = 0; + hdr->b_l1hdr.b_tmp_cdata = hdr->b_l1hdr.b_buf->b_data; + + /* + * Explicitly set the b_daddr field to a known + * value which means "invalid address". This + * enables us to differentiate which stage of + * l2arc_write_buffers() the particular header + * is in (e.g. this loop, or the one below). + * ARC_FLAG_L2_WRITING is not enough to make + * this distinction, and we need to know in + * order to do proper l2arc vdev accounting in + * arc_release() and arc_hdr_destroy(). + * + * Note, we can't use a new flag to distinguish + * the two stages because we don't hold the + * header's hash_lock below, in the second stage + * of this function. Thus, we can't simply + * change the b_flags field to denote that the + * IO has been sent. We can change the b_daddr + * field of the L2 portion, though, since we'll + * be holding the l2ad_mtx; which is why we're + * using it to denote the header's state change. + */ + hdr->b_l2hdr.b_daddr = L2ARC_ADDR_UNSET; + hdr->b_flags |= ARC_FLAG_HAS_L2HDR; + + mutex_enter(&dev->l2ad_mtx); + list_insert_head(&dev->l2ad_buflist, hdr); + mutex_exit(&dev->l2ad_mtx); + + /* + * Compute and store the buffer cksum before + * writing. On debug the cksum is verified first. + */ + arc_cksum_verify(hdr->b_l1hdr.b_buf); + arc_cksum_compute(hdr->b_l1hdr.b_buf, B_TRUE); + + mutex_exit(hash_lock); + + write_sz += buf_sz; + write_asize += buf_a_sz; + } + + multilist_sublist_unlock(mls); + + if (full == B_TRUE) + break; + } + + /* No buffers selected for writing? */ + if (pio == NULL) { + ASSERT0(write_sz); + ASSERT(!HDR_HAS_L1HDR(head)); + kmem_cache_free(hdr_l2only_cache, head); + return (0); + } + + mutex_enter(&dev->l2ad_mtx); + + /* + * Note that elsewhere in this file arcstat_l2_asize + * and the used space on l2ad_vdev are updated using b_asize, + * which is not necessarily rounded up to the device block size. + * Too keep accounting consistent we do the same here as well: + * stats_size accumulates the sum of b_asize of the written buffers, + * while write_asize accumulates the sum of b_asize rounded up + * to the device block size. + * The latter sum is used only to validate the corectness of the code. + */ + stats_size = 0; + write_asize = 0; + + /* + * Now start writing the buffers. We're starting at the write head + * and work backwards, retracing the course of the buffer selector + * loop above. + */ + for (hdr = list_prev(&dev->l2ad_buflist, head); hdr; + hdr = list_prev(&dev->l2ad_buflist, hdr)) { + uint64_t buf_sz; + + /* + * We rely on the L1 portion of the header below, so + * it's invalid for this header to have been evicted out + * of the ghost cache, prior to being written out. The + * ARC_FLAG_L2_WRITING bit ensures this won't happen. + */ + ASSERT(HDR_HAS_L1HDR(hdr)); + + /* + * We shouldn't need to lock the buffer here, since we flagged + * it as ARC_FLAG_L2_WRITING in the previous step, but we must + * take care to only access its L2 cache parameters. In + * particular, hdr->l1hdr.b_buf may be invalid by now due to + * ARC eviction. + */ + hdr->b_l2hdr.b_daddr = dev->l2ad_hand; + + if ((!l2arc_nocompress && HDR_L2COMPRESS(hdr)) && + hdr->b_l2hdr.b_asize >= buf_compress_minsz) { + if (l2arc_compress_buf(hdr)) { + /* + * If compression succeeded, enable headroom + * boost on the next scan cycle. + */ + *headroom_boost = B_TRUE; + } + } + + /* + * Pick up the buffer data we had previously stashed away + * (and now potentially also compressed). + */ + buf_data = hdr->b_l1hdr.b_tmp_cdata; + buf_sz = hdr->b_l2hdr.b_asize; + + /* + * We need to do this regardless if buf_sz is zero or + * not, otherwise, when this l2hdr is evicted we'll + * remove a reference that was never added. + */ + (void) refcount_add_many(&dev->l2ad_alloc, buf_sz, hdr); + + /* Compression may have squashed the buffer to zero length. */ + if (buf_sz != 0) { + uint64_t buf_a_sz; + + wzio = zio_write_phys(pio, dev->l2ad_vdev, + dev->l2ad_hand, buf_sz, buf_data, ZIO_CHECKSUM_OFF, + NULL, NULL, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_CANFAIL, B_FALSE); + + DTRACE_PROBE2(l2arc__write, vdev_t *, dev->l2ad_vdev, + zio_t *, wzio); + (void) zio_nowait(wzio); + + stats_size += buf_sz; + + /* + * Keep the clock hand suitably device-aligned. + */ + buf_a_sz = vdev_psize_to_asize(dev->l2ad_vdev, buf_sz); + write_asize += buf_a_sz; + dev->l2ad_hand += buf_a_sz; + } + } + + mutex_exit(&dev->l2ad_mtx); + + ASSERT3U(write_asize, <=, target_sz); + ARCSTAT_BUMP(arcstat_l2_writes_sent); + ARCSTAT_INCR(arcstat_l2_write_bytes, write_asize); + ARCSTAT_INCR(arcstat_l2_size, write_sz); + ARCSTAT_INCR(arcstat_l2_asize, stats_size); + vdev_space_update(dev->l2ad_vdev, stats_size, 0, 0); + + /* + * Bump device hand to the device start if it is approaching the end. + * l2arc_evict() will already have evicted ahead for this case. + */ + if (dev->l2ad_hand >= (dev->l2ad_end - target_sz)) { + dev->l2ad_hand = dev->l2ad_start; + dev->l2ad_first = B_FALSE; + } + + dev->l2ad_writing = B_TRUE; + (void) zio_wait(pio); + dev->l2ad_writing = B_FALSE; + + return (write_asize); +} + +/* + * Compresses an L2ARC buffer. + * The data to be compressed must be prefilled in l1hdr.b_tmp_cdata and its + * size in l2hdr->b_asize. This routine tries to compress the data and + * depending on the compression result there are three possible outcomes: + * *) The buffer was incompressible. The original l2hdr contents were left + * untouched and are ready for writing to an L2 device. + * *) The buffer was all-zeros, so there is no need to write it to an L2 + * device. To indicate this situation b_tmp_cdata is NULL'ed, b_asize is + * set to zero and b_compress is set to ZIO_COMPRESS_EMPTY. + * *) Compression succeeded and b_tmp_cdata was replaced with a temporary + * data buffer which holds the compressed data to be written, and b_asize + * tells us how much data there is. b_compress is set to the appropriate + * compression algorithm. Once writing is done, invoke + * l2arc_release_cdata_buf on this l2hdr to free this temporary buffer. + * + * Returns B_TRUE if compression succeeded, or B_FALSE if it didn't (the + * buffer was incompressible). + */ +static boolean_t +l2arc_compress_buf(arc_buf_hdr_t *hdr) +{ + void *cdata; + size_t csize, len, rounded; + l2arc_buf_hdr_t *l2hdr; + + ASSERT(HDR_HAS_L2HDR(hdr)); + + l2hdr = &hdr->b_l2hdr; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT3U(l2hdr->b_compress, ==, ZIO_COMPRESS_OFF); + ASSERT(hdr->b_l1hdr.b_tmp_cdata != NULL); + + len = l2hdr->b_asize; + cdata = zio_data_buf_alloc(len); + ASSERT3P(cdata, !=, NULL); + csize = zio_compress_data(ZIO_COMPRESS_LZ4, hdr->b_l1hdr.b_tmp_cdata, + cdata, l2hdr->b_asize); + + rounded = P2ROUNDUP(csize, (size_t)SPA_MINBLOCKSIZE); + if (rounded > csize) { + bzero((char *)cdata + csize, rounded - csize); + csize = rounded; + } + + if (csize == 0) { + /* zero block, indicate that there's nothing to write */ + zio_data_buf_free(cdata, len); + l2hdr->b_compress = ZIO_COMPRESS_EMPTY; + l2hdr->b_asize = 0; + hdr->b_l1hdr.b_tmp_cdata = NULL; + ARCSTAT_BUMP(arcstat_l2_compress_zeros); + return (B_TRUE); + } else if (csize > 0 && csize < len) { + /* + * Compression succeeded, we'll keep the cdata around for + * writing and release it afterwards. + */ + l2hdr->b_compress = ZIO_COMPRESS_LZ4; + l2hdr->b_asize = csize; + hdr->b_l1hdr.b_tmp_cdata = cdata; + ARCSTAT_BUMP(arcstat_l2_compress_successes); + return (B_TRUE); + } else { + /* + * Compression failed, release the compressed buffer. + * l2hdr will be left unmodified. + */ + zio_data_buf_free(cdata, len); + ARCSTAT_BUMP(arcstat_l2_compress_failures); + return (B_FALSE); + } +} + +/* + * Decompresses a zio read back from an l2arc device. On success, the + * underlying zio's io_data buffer is overwritten by the uncompressed + * version. On decompression error (corrupt compressed stream), the + * zio->io_error value is set to signal an I/O error. + * + * Please note that the compressed data stream is not checksummed, so + * if the underlying device is experiencing data corruption, we may feed + * corrupt data to the decompressor, so the decompressor needs to be + * able to handle this situation (LZ4 does). + */ +static void +l2arc_decompress_zio(zio_t *zio, arc_buf_hdr_t *hdr, enum zio_compress c) +{ + uint64_t csize; + void *cdata; + + ASSERT(L2ARC_IS_VALID_COMPRESS(c)); + + if (zio->io_error != 0) { + /* + * An io error has occured, just restore the original io + * size in preparation for a main pool read. + */ + zio->io_orig_size = zio->io_size = hdr->b_size; + return; + } + + if (c == ZIO_COMPRESS_EMPTY) { + /* + * An empty buffer results in a null zio, which means we + * need to fill its io_data after we're done restoring the + * buffer's contents. + */ + ASSERT(hdr->b_l1hdr.b_buf != NULL); + bzero(hdr->b_l1hdr.b_buf->b_data, hdr->b_size); + zio->io_data = zio->io_orig_data = hdr->b_l1hdr.b_buf->b_data; + } else { + ASSERT(zio->io_data != NULL); + /* + * We copy the compressed data from the start of the arc buffer + * (the zio_read will have pulled in only what we need, the + * rest is garbage which we will overwrite at decompression) + * and then decompress back to the ARC data buffer. This way we + * can minimize copying by simply decompressing back over the + * original compressed data (rather than decompressing to an + * aux buffer and then copying back the uncompressed buffer, + * which is likely to be much larger). + */ + csize = zio->io_size; + cdata = zio_data_buf_alloc(csize); + bcopy(zio->io_data, cdata, csize); + if (zio_decompress_data(c, cdata, zio->io_data, csize, + hdr->b_size) != 0) + zio->io_error = EIO; + zio_data_buf_free(cdata, csize); + } + + /* Restore the expected uncompressed IO size. */ + zio->io_orig_size = zio->io_size = hdr->b_size; +} + +/* + * Releases the temporary b_tmp_cdata buffer in an l2arc header structure. + * This buffer serves as a temporary holder of compressed data while + * the buffer entry is being written to an l2arc device. Once that is + * done, we can dispose of it. + */ +static void +l2arc_release_cdata_buf(arc_buf_hdr_t *hdr) +{ + enum zio_compress comp; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(HDR_HAS_L2HDR(hdr)); + comp = hdr->b_l2hdr.b_compress; + ASSERT(comp == ZIO_COMPRESS_OFF || L2ARC_IS_VALID_COMPRESS(comp)); + + if (comp == ZIO_COMPRESS_OFF) { + /* + * In this case, b_tmp_cdata points to the same buffer + * as the arc_buf_t's b_data field. We don't want to + * free it, since the arc_buf_t will handle that. + */ + hdr->b_l1hdr.b_tmp_cdata = NULL; + } else if (comp == ZIO_COMPRESS_EMPTY) { + /* + * In this case, b_tmp_cdata was compressed to an empty + * buffer, thus there's nothing to free and b_tmp_cdata + * should have been set to NULL in l2arc_write_buffers(). + */ + ASSERT3P(hdr->b_l1hdr.b_tmp_cdata, ==, NULL); + } else { + /* + * If the data was compressed, then we've allocated a + * temporary buffer for it, so now we need to release it. + */ + ASSERT(hdr->b_l1hdr.b_tmp_cdata != NULL); + zio_data_buf_free(hdr->b_l1hdr.b_tmp_cdata, + hdr->b_size); + hdr->b_l1hdr.b_tmp_cdata = NULL; + } + +} + +/* + * This thread feeds the L2ARC at regular intervals. This is the beating + * heart of the L2ARC. + */ +static void +l2arc_feed_thread(void) +{ + callb_cpr_t cpr; + l2arc_dev_t *dev; + spa_t *spa; + uint64_t size, wrote; + clock_t begin, next = ddi_get_lbolt(); + boolean_t headroom_boost = B_FALSE; + fstrans_cookie_t cookie; + + CALLB_CPR_INIT(&cpr, &l2arc_feed_thr_lock, callb_generic_cpr, FTAG); + + mutex_enter(&l2arc_feed_thr_lock); + + cookie = spl_fstrans_mark(); + while (l2arc_thread_exit == 0) { + CALLB_CPR_SAFE_BEGIN(&cpr); + (void) cv_timedwait_sig(&l2arc_feed_thr_cv, + &l2arc_feed_thr_lock, next); + CALLB_CPR_SAFE_END(&cpr, &l2arc_feed_thr_lock); + next = ddi_get_lbolt() + hz; + + /* + * Quick check for L2ARC devices. + */ + mutex_enter(&l2arc_dev_mtx); + if (l2arc_ndev == 0) { + mutex_exit(&l2arc_dev_mtx); + continue; + } + mutex_exit(&l2arc_dev_mtx); + begin = ddi_get_lbolt(); + + /* + * This selects the next l2arc device to write to, and in + * doing so the next spa to feed from: dev->l2ad_spa. This + * will return NULL if there are now no l2arc devices or if + * they are all faulted. + * + * If a device is returned, its spa's config lock is also + * held to prevent device removal. l2arc_dev_get_next() + * will grab and release l2arc_dev_mtx. + */ + if ((dev = l2arc_dev_get_next()) == NULL) + continue; + + spa = dev->l2ad_spa; + ASSERT(spa != NULL); + + /* + * If the pool is read-only then force the feed thread to + * sleep a little longer. + */ + if (!spa_writeable(spa)) { + next = ddi_get_lbolt() + 5 * l2arc_feed_secs * hz; + spa_config_exit(spa, SCL_L2ARC, dev); + continue; + } + + /* + * Avoid contributing to memory pressure. + */ + if (arc_reclaim_needed()) { + ARCSTAT_BUMP(arcstat_l2_abort_lowmem); + spa_config_exit(spa, SCL_L2ARC, dev); + continue; + } + + ARCSTAT_BUMP(arcstat_l2_feeds); + + size = l2arc_write_size(); + + /* + * Evict L2ARC buffers that will be overwritten. + */ + l2arc_evict(dev, size, B_FALSE); + + /* + * Write ARC buffers. + */ + wrote = l2arc_write_buffers(spa, dev, size, &headroom_boost); + + /* + * Calculate interval between writes. + */ + next = l2arc_write_interval(begin, size, wrote); + spa_config_exit(spa, SCL_L2ARC, dev); + } + spl_fstrans_unmark(cookie); + + l2arc_thread_exit = 0; + cv_broadcast(&l2arc_feed_thr_cv); + CALLB_CPR_EXIT(&cpr); /* drops l2arc_feed_thr_lock */ + thread_exit(); +} + +boolean_t +l2arc_vdev_present(vdev_t *vd) +{ + l2arc_dev_t *dev; + + mutex_enter(&l2arc_dev_mtx); + for (dev = list_head(l2arc_dev_list); dev != NULL; + dev = list_next(l2arc_dev_list, dev)) { + if (dev->l2ad_vdev == vd) + break; + } + mutex_exit(&l2arc_dev_mtx); + + return (dev != NULL); +} + +/* + * Add a vdev for use by the L2ARC. By this point the spa has already + * validated the vdev and opened it. + */ +void +l2arc_add_vdev(spa_t *spa, vdev_t *vd) +{ + l2arc_dev_t *adddev; + + ASSERT(!l2arc_vdev_present(vd)); + + /* + * Create a new l2arc device entry. + */ + adddev = kmem_zalloc(sizeof (l2arc_dev_t), KM_SLEEP); + adddev->l2ad_spa = spa; + adddev->l2ad_vdev = vd; + adddev->l2ad_start = VDEV_LABEL_START_SIZE; + adddev->l2ad_end = VDEV_LABEL_START_SIZE + vdev_get_min_asize(vd); + adddev->l2ad_hand = adddev->l2ad_start; + adddev->l2ad_first = B_TRUE; + adddev->l2ad_writing = B_FALSE; + list_link_init(&adddev->l2ad_node); + + mutex_init(&adddev->l2ad_mtx, NULL, MUTEX_DEFAULT, NULL); + /* + * This is a list of all ARC buffers that are still valid on the + * device. + */ + list_create(&adddev->l2ad_buflist, sizeof (arc_buf_hdr_t), + offsetof(arc_buf_hdr_t, b_l2hdr.b_l2node)); + + vdev_space_update(vd, 0, 0, adddev->l2ad_end - adddev->l2ad_hand); + refcount_create(&adddev->l2ad_alloc); + + /* + * Add device to global list + */ + mutex_enter(&l2arc_dev_mtx); + list_insert_head(l2arc_dev_list, adddev); + atomic_inc_64(&l2arc_ndev); + mutex_exit(&l2arc_dev_mtx); +} + +/* + * Remove a vdev from the L2ARC. + */ +void +l2arc_remove_vdev(vdev_t *vd) +{ + l2arc_dev_t *dev, *nextdev, *remdev = NULL; + + /* + * Find the device by vdev + */ + mutex_enter(&l2arc_dev_mtx); + for (dev = list_head(l2arc_dev_list); dev; dev = nextdev) { + nextdev = list_next(l2arc_dev_list, dev); + if (vd == dev->l2ad_vdev) { + remdev = dev; + break; + } + } + ASSERT(remdev != NULL); + + /* + * Remove device from global list + */ + list_remove(l2arc_dev_list, remdev); + l2arc_dev_last = NULL; /* may have been invalidated */ + atomic_dec_64(&l2arc_ndev); + mutex_exit(&l2arc_dev_mtx); + + /* + * Clear all buflists and ARC references. L2ARC device flush. + */ + l2arc_evict(remdev, 0, B_TRUE); + list_destroy(&remdev->l2ad_buflist); + mutex_destroy(&remdev->l2ad_mtx); + refcount_destroy(&remdev->l2ad_alloc); + kmem_free(remdev, sizeof (l2arc_dev_t)); +} + +void +l2arc_init(void) +{ + l2arc_thread_exit = 0; + l2arc_ndev = 0; + l2arc_writes_sent = 0; + l2arc_writes_done = 0; + + mutex_init(&l2arc_feed_thr_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&l2arc_feed_thr_cv, NULL, CV_DEFAULT, NULL); + mutex_init(&l2arc_dev_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&l2arc_free_on_write_mtx, NULL, MUTEX_DEFAULT, NULL); + + l2arc_dev_list = &L2ARC_dev_list; + l2arc_free_on_write = &L2ARC_free_on_write; + list_create(l2arc_dev_list, sizeof (l2arc_dev_t), + offsetof(l2arc_dev_t, l2ad_node)); + list_create(l2arc_free_on_write, sizeof (l2arc_data_free_t), + offsetof(l2arc_data_free_t, l2df_list_node)); +} + +void +l2arc_fini(void) +{ + /* + * This is called from dmu_fini(), which is called from spa_fini(); + * Because of this, we can assume that all l2arc devices have + * already been removed when the pools themselves were removed. + */ + + l2arc_do_free_on_write(); + + mutex_destroy(&l2arc_feed_thr_lock); + cv_destroy(&l2arc_feed_thr_cv); + mutex_destroy(&l2arc_dev_mtx); + mutex_destroy(&l2arc_free_on_write_mtx); + + list_destroy(l2arc_dev_list); + list_destroy(l2arc_free_on_write); +} + +void +l2arc_start(void) +{ + if (!(spa_mode_global & FWRITE)) + return; + + (void) thread_create(NULL, 0, l2arc_feed_thread, NULL, 0, &p0, + TS_RUN, defclsyspri); +} + +void +l2arc_stop(void) +{ + if (!(spa_mode_global & FWRITE)) + return; + + mutex_enter(&l2arc_feed_thr_lock); + cv_signal(&l2arc_feed_thr_cv); /* kick thread out of startup */ + l2arc_thread_exit = 1; + while (l2arc_thread_exit != 0) + cv_wait(&l2arc_feed_thr_cv, &l2arc_feed_thr_lock); + mutex_exit(&l2arc_feed_thr_lock); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(arc_buf_size); +EXPORT_SYMBOL(arc_write); +EXPORT_SYMBOL(arc_read); +EXPORT_SYMBOL(arc_buf_remove_ref); +EXPORT_SYMBOL(arc_buf_info); +EXPORT_SYMBOL(arc_getbuf_func); +EXPORT_SYMBOL(arc_add_prune_callback); +EXPORT_SYMBOL(arc_remove_prune_callback); + +module_param(zfs_arc_min, ulong, 0644); +MODULE_PARM_DESC(zfs_arc_min, "Min arc size"); + +module_param(zfs_arc_max, ulong, 0644); +MODULE_PARM_DESC(zfs_arc_max, "Max arc size"); + +module_param(zfs_arc_meta_limit, ulong, 0644); +MODULE_PARM_DESC(zfs_arc_meta_limit, "Meta limit for arc size"); + +module_param(zfs_arc_meta_min, ulong, 0644); +MODULE_PARM_DESC(zfs_arc_meta_min, "Min arc metadata"); + +module_param(zfs_arc_meta_prune, int, 0644); +MODULE_PARM_DESC(zfs_arc_meta_prune, "Meta objects to scan for prune"); + +module_param(zfs_arc_meta_adjust_restarts, int, 0644); +MODULE_PARM_DESC(zfs_arc_meta_adjust_restarts, + "Limit number of restarts in arc_adjust_meta"); + +module_param(zfs_arc_meta_strategy, int, 0644); +MODULE_PARM_DESC(zfs_arc_meta_strategy, "Meta reclaim strategy"); + +module_param(zfs_arc_grow_retry, int, 0644); +MODULE_PARM_DESC(zfs_arc_grow_retry, "Seconds before growing arc size"); + +module_param(zfs_arc_p_aggressive_disable, int, 0644); +MODULE_PARM_DESC(zfs_arc_p_aggressive_disable, "disable aggressive arc_p grow"); + +module_param(zfs_arc_p_dampener_disable, int, 0644); +MODULE_PARM_DESC(zfs_arc_p_dampener_disable, "disable arc_p adapt dampener"); + +module_param(zfs_arc_shrink_shift, int, 0644); +MODULE_PARM_DESC(zfs_arc_shrink_shift, "log2(fraction of arc to reclaim)"); + +module_param(zfs_arc_p_min_shift, int, 0644); +MODULE_PARM_DESC(zfs_arc_p_min_shift, "arc_c shift to calc min/max arc_p"); + +module_param(zfs_disable_dup_eviction, int, 0644); +MODULE_PARM_DESC(zfs_disable_dup_eviction, "disable duplicate buffer eviction"); + +module_param(zfs_arc_average_blocksize, int, 0444); +MODULE_PARM_DESC(zfs_arc_average_blocksize, "Target average block size"); + +module_param(zfs_arc_min_prefetch_lifespan, int, 0644); +MODULE_PARM_DESC(zfs_arc_min_prefetch_lifespan, "Min life of prefetch block"); + +module_param(zfs_arc_num_sublists_per_state, int, 0644); +MODULE_PARM_DESC(zfs_arc_num_sublists_per_state, + "Number of sublists used in each of the ARC state lists"); + +module_param(l2arc_write_max, ulong, 0644); +MODULE_PARM_DESC(l2arc_write_max, "Max write bytes per interval"); + +module_param(l2arc_write_boost, ulong, 0644); +MODULE_PARM_DESC(l2arc_write_boost, "Extra write bytes during device warmup"); + +module_param(l2arc_headroom, ulong, 0644); +MODULE_PARM_DESC(l2arc_headroom, "Number of max device writes to precache"); + +module_param(l2arc_headroom_boost, ulong, 0644); +MODULE_PARM_DESC(l2arc_headroom_boost, "Compressed l2arc_headroom multiplier"); + +module_param(l2arc_feed_secs, ulong, 0644); +MODULE_PARM_DESC(l2arc_feed_secs, "Seconds between L2ARC writing"); + +module_param(l2arc_feed_min_ms, ulong, 0644); +MODULE_PARM_DESC(l2arc_feed_min_ms, "Min feed interval in milliseconds"); + +module_param(l2arc_noprefetch, int, 0644); +MODULE_PARM_DESC(l2arc_noprefetch, "Skip caching prefetched buffers"); + +module_param(l2arc_nocompress, int, 0644); +MODULE_PARM_DESC(l2arc_nocompress, "Skip compressing L2ARC buffers"); + +module_param(l2arc_feed_again, int, 0644); +MODULE_PARM_DESC(l2arc_feed_again, "Turbo L2ARC warmup"); + +module_param(l2arc_norw, int, 0644); +MODULE_PARM_DESC(l2arc_norw, "No reads during writes"); + +module_param(zfs_arc_lotsfree_percent, int, 0644); +MODULE_PARM_DESC(zfs_arc_lotsfree_percent, + "System free memory I/O throttle in bytes"); + +module_param(zfs_arc_sys_free, ulong, 0644); +MODULE_PARM_DESC(zfs_arc_sys_free, "System free memory target size in bytes"); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/blkptr.c +++ linux-4.4.0/zfs/module/zfs/blkptr.c @@ -0,0 +1,121 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include + +/* + * Embedded-data Block Pointers + * + * Normally, block pointers point (via their DVAs) to a block which holds data. + * If the data that we need to store is very small, this is an inefficient + * use of space, because a block must be at minimum 1 sector (typically 512 + * bytes or 4KB). Additionally, reading these small blocks tends to generate + * more random reads. + * + * Embedded-data Block Pointers allow small pieces of data (the "payload", + * up to 112 bytes) to be stored in the block pointer itself, instead of + * being pointed to. The "Pointer" part of this name is a bit of a + * misnomer, as nothing is pointed to. + * + * BP_EMBEDDED_TYPE_DATA block pointers allow highly-compressible data to + * be embedded in the block pointer. The logic for this is handled in + * the SPA, by the zio pipeline. Therefore most code outside the zio + * pipeline doesn't need special-cases to handle these block pointers. + * + * See spa.h for details on the exact layout of embedded block pointers. + */ + +void +encode_embedded_bp_compressed(blkptr_t *bp, void *data, + enum zio_compress comp, int uncompressed_size, int compressed_size) +{ + uint64_t *bp64 = (uint64_t *)bp; + uint64_t w = 0; + uint8_t *data8 = data; + int i; + + ASSERT3U(compressed_size, <=, BPE_PAYLOAD_SIZE); + ASSERT(uncompressed_size == compressed_size || + comp != ZIO_COMPRESS_OFF); + ASSERT3U(comp, >=, ZIO_COMPRESS_OFF); + ASSERT3U(comp, <, ZIO_COMPRESS_FUNCTIONS); + + bzero(bp, sizeof (*bp)); + BP_SET_EMBEDDED(bp, B_TRUE); + BP_SET_COMPRESS(bp, comp); + BP_SET_BYTEORDER(bp, ZFS_HOST_BYTEORDER); + BPE_SET_LSIZE(bp, uncompressed_size); + BPE_SET_PSIZE(bp, compressed_size); + + /* + * Encode the byte array into the words of the block pointer. + * First byte goes into low bits of first word (little endian). + */ + for (i = 0; i < compressed_size; i++) { + BF64_SET(w, (i % sizeof (w)) * NBBY, NBBY, data8[i]); + if (i % sizeof (w) == sizeof (w) - 1) { + /* we've reached the end of a word */ + ASSERT3P(bp64, <, bp + 1); + *bp64 = w; + bp64++; + if (!BPE_IS_PAYLOADWORD(bp, bp64)) + bp64++; + w = 0; + } + } + /* write last partial word */ + if (bp64 < (uint64_t *)(bp + 1)) + *bp64 = w; +} + +/* + * buf must be at least BPE_GET_PSIZE(bp) bytes long (which will never be + * more than BPE_PAYLOAD_SIZE bytes). + */ +void +decode_embedded_bp_compressed(const blkptr_t *bp, void *buf) +{ + int psize; + uint8_t *buf8 = buf; + uint64_t w = 0; + const uint64_t *bp64 = (const uint64_t *)bp; + int i; + + ASSERT(BP_IS_EMBEDDED(bp)); + + psize = BPE_GET_PSIZE(bp); + + /* + * Decode the words of the block pointer into the byte array. + * Low bits of first word are the first byte (little endian). + */ + for (i = 0; i < psize; i++) { + if (i % sizeof (w) == 0) { + /* beginning of a word */ + ASSERT3P(bp64, <, bp + 1); + w = *bp64; + bp64++; + if (!BPE_IS_PAYLOADWORD(bp, bp64)) + bp64++; + } + buf8[i] = BF64_GET(w, (i % sizeof (w)) * NBBY, NBBY); + } +} --- linux-4.4.0.orig/zfs/module/zfs/bplist.c +++ linux-4.4.0/zfs/module/zfs/bplist.c @@ -0,0 +1,77 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include + + +void +bplist_create(bplist_t *bpl) +{ + mutex_init(&bpl->bpl_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&bpl->bpl_list, sizeof (bplist_entry_t), + offsetof(bplist_entry_t, bpe_node)); +} + +void +bplist_destroy(bplist_t *bpl) +{ + list_destroy(&bpl->bpl_list); + mutex_destroy(&bpl->bpl_lock); +} + +void +bplist_append(bplist_t *bpl, const blkptr_t *bp) +{ + bplist_entry_t *bpe = kmem_alloc(sizeof (*bpe), KM_SLEEP); + + mutex_enter(&bpl->bpl_lock); + bpe->bpe_blk = *bp; + list_insert_tail(&bpl->bpl_list, bpe); + mutex_exit(&bpl->bpl_lock); +} + +/* + * To aid debugging, we keep the most recently removed entry. This way if + * we are in the callback, we can easily locate the entry. + */ +static bplist_entry_t *bplist_iterate_last_removed; + +void +bplist_iterate(bplist_t *bpl, bplist_itor_t *func, void *arg, dmu_tx_t *tx) +{ + bplist_entry_t *bpe; + + mutex_enter(&bpl->bpl_lock); + while ((bpe = list_head(&bpl->bpl_list))) { + bplist_iterate_last_removed = bpe; + list_remove(&bpl->bpl_list, bpe); + mutex_exit(&bpl->bpl_lock); + func(arg, &bpe->bpe_blk, tx); + kmem_free(bpe, sizeof (*bpe)); + mutex_enter(&bpl->bpl_lock); + } + mutex_exit(&bpl->bpl_lock); +} --- linux-4.4.0.orig/zfs/module/zfs/bpobj.c +++ linux-4.4.0/zfs/module/zfs/bpobj.c @@ -0,0 +1,591 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +/* + * Return an empty bpobj, preferably the empty dummy one (dp_empty_bpobj). + */ +uint64_t +bpobj_alloc_empty(objset_t *os, int blocksize, dmu_tx_t *tx) +{ + spa_t *spa = dmu_objset_spa(os); + dsl_pool_t *dp = dmu_objset_pool(os); + + if (spa_feature_is_enabled(spa, SPA_FEATURE_EMPTY_BPOBJ)) { + if (!spa_feature_is_active(spa, SPA_FEATURE_EMPTY_BPOBJ)) { + ASSERT0(dp->dp_empty_bpobj); + dp->dp_empty_bpobj = + bpobj_alloc(os, SPA_OLD_MAXBLOCKSIZE, tx); + VERIFY(zap_add(os, + DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_EMPTY_BPOBJ, sizeof (uint64_t), 1, + &dp->dp_empty_bpobj, tx) == 0); + } + spa_feature_incr(spa, SPA_FEATURE_EMPTY_BPOBJ, tx); + ASSERT(dp->dp_empty_bpobj != 0); + return (dp->dp_empty_bpobj); + } else { + return (bpobj_alloc(os, blocksize, tx)); + } +} + +void +bpobj_decr_empty(objset_t *os, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dmu_objset_pool(os); + + spa_feature_decr(dmu_objset_spa(os), SPA_FEATURE_EMPTY_BPOBJ, tx); + if (!spa_feature_is_active(dmu_objset_spa(os), + SPA_FEATURE_EMPTY_BPOBJ)) { + VERIFY3U(0, ==, zap_remove(dp->dp_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_EMPTY_BPOBJ, tx)); + VERIFY3U(0, ==, dmu_object_free(os, dp->dp_empty_bpobj, tx)); + dp->dp_empty_bpobj = 0; + } +} + +uint64_t +bpobj_alloc(objset_t *os, int blocksize, dmu_tx_t *tx) +{ + int size; + + if (spa_version(dmu_objset_spa(os)) < SPA_VERSION_BPOBJ_ACCOUNT) + size = BPOBJ_SIZE_V0; + else if (spa_version(dmu_objset_spa(os)) < SPA_VERSION_DEADLISTS) + size = BPOBJ_SIZE_V1; + else + size = sizeof (bpobj_phys_t); + + return (dmu_object_alloc(os, DMU_OT_BPOBJ, blocksize, + DMU_OT_BPOBJ_HDR, size, tx)); +} + +void +bpobj_free(objset_t *os, uint64_t obj, dmu_tx_t *tx) +{ + int64_t i; + bpobj_t bpo; + dmu_object_info_t doi; + int epb; + dmu_buf_t *dbuf = NULL; + + ASSERT(obj != dmu_objset_pool(os)->dp_empty_bpobj); + VERIFY3U(0, ==, bpobj_open(&bpo, os, obj)); + + mutex_enter(&bpo.bpo_lock); + + if (!bpo.bpo_havesubobj || bpo.bpo_phys->bpo_subobjs == 0) + goto out; + + VERIFY3U(0, ==, dmu_object_info(os, bpo.bpo_phys->bpo_subobjs, &doi)); + epb = doi.doi_data_block_size / sizeof (uint64_t); + + for (i = bpo.bpo_phys->bpo_num_subobjs - 1; i >= 0; i--) { + uint64_t *objarray; + uint64_t offset, blkoff; + + offset = i * sizeof (uint64_t); + blkoff = P2PHASE(i, epb); + + if (dbuf == NULL || dbuf->db_offset > offset) { + if (dbuf) + dmu_buf_rele(dbuf, FTAG); + VERIFY3U(0, ==, dmu_buf_hold(os, + bpo.bpo_phys->bpo_subobjs, offset, FTAG, &dbuf, 0)); + } + + ASSERT3U(offset, >=, dbuf->db_offset); + ASSERT3U(offset, <, dbuf->db_offset + dbuf->db_size); + + objarray = dbuf->db_data; + bpobj_free(os, objarray[blkoff], tx); + } + if (dbuf) { + dmu_buf_rele(dbuf, FTAG); + dbuf = NULL; + } + VERIFY3U(0, ==, dmu_object_free(os, bpo.bpo_phys->bpo_subobjs, tx)); + +out: + mutex_exit(&bpo.bpo_lock); + bpobj_close(&bpo); + + VERIFY3U(0, ==, dmu_object_free(os, obj, tx)); +} + +int +bpobj_open(bpobj_t *bpo, objset_t *os, uint64_t object) +{ + dmu_object_info_t doi; + int err; + + err = dmu_object_info(os, object, &doi); + if (err) + return (err); + + bzero(bpo, sizeof (*bpo)); + mutex_init(&bpo->bpo_lock, NULL, MUTEX_DEFAULT, NULL); + + ASSERT(bpo->bpo_dbuf == NULL); + ASSERT(bpo->bpo_phys == NULL); + ASSERT(object != 0); + ASSERT3U(doi.doi_type, ==, DMU_OT_BPOBJ); + ASSERT3U(doi.doi_bonus_type, ==, DMU_OT_BPOBJ_HDR); + + err = dmu_bonus_hold(os, object, bpo, &bpo->bpo_dbuf); + if (err) + return (err); + + bpo->bpo_os = os; + bpo->bpo_object = object; + bpo->bpo_epb = doi.doi_data_block_size >> SPA_BLKPTRSHIFT; + bpo->bpo_havecomp = (doi.doi_bonus_size > BPOBJ_SIZE_V0); + bpo->bpo_havesubobj = (doi.doi_bonus_size > BPOBJ_SIZE_V1); + bpo->bpo_phys = bpo->bpo_dbuf->db_data; + return (0); +} + +void +bpobj_close(bpobj_t *bpo) +{ + /* Lame workaround for closing a bpobj that was never opened. */ + if (bpo->bpo_object == 0) + return; + + dmu_buf_rele(bpo->bpo_dbuf, bpo); + if (bpo->bpo_cached_dbuf != NULL) + dmu_buf_rele(bpo->bpo_cached_dbuf, bpo); + bpo->bpo_dbuf = NULL; + bpo->bpo_phys = NULL; + bpo->bpo_cached_dbuf = NULL; + bpo->bpo_object = 0; + + mutex_destroy(&bpo->bpo_lock); +} + +static boolean_t +bpobj_hasentries(bpobj_t *bpo) +{ + return (bpo->bpo_phys->bpo_num_blkptrs != 0 || + (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_num_subobjs != 0)); +} + +static int +bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx, + boolean_t free) +{ + dmu_object_info_t doi; + int epb; + int64_t i; + int err = 0; + dmu_buf_t *dbuf = NULL; + + mutex_enter(&bpo->bpo_lock); + + if (free) + dmu_buf_will_dirty(bpo->bpo_dbuf, tx); + + for (i = bpo->bpo_phys->bpo_num_blkptrs - 1; i >= 0; i--) { + blkptr_t *bparray; + blkptr_t *bp; + uint64_t offset, blkoff; + + offset = i * sizeof (blkptr_t); + blkoff = P2PHASE(i, bpo->bpo_epb); + + if (dbuf == NULL || dbuf->db_offset > offset) { + if (dbuf) + dmu_buf_rele(dbuf, FTAG); + err = dmu_buf_hold(bpo->bpo_os, bpo->bpo_object, offset, + FTAG, &dbuf, 0); + if (err) + break; + } + + ASSERT3U(offset, >=, dbuf->db_offset); + ASSERT3U(offset, <, dbuf->db_offset + dbuf->db_size); + + bparray = dbuf->db_data; + bp = &bparray[blkoff]; + err = func(arg, bp, tx); + if (err) + break; + if (free) { + bpo->bpo_phys->bpo_bytes -= + bp_get_dsize_sync(dmu_objset_spa(bpo->bpo_os), bp); + ASSERT3S(bpo->bpo_phys->bpo_bytes, >=, 0); + if (bpo->bpo_havecomp) { + bpo->bpo_phys->bpo_comp -= BP_GET_PSIZE(bp); + bpo->bpo_phys->bpo_uncomp -= BP_GET_UCSIZE(bp); + } + bpo->bpo_phys->bpo_num_blkptrs--; + ASSERT3S(bpo->bpo_phys->bpo_num_blkptrs, >=, 0); + } + } + if (dbuf) { + dmu_buf_rele(dbuf, FTAG); + dbuf = NULL; + } + if (free) { + VERIFY3U(0, ==, dmu_free_range(bpo->bpo_os, bpo->bpo_object, + (i + 1) * sizeof (blkptr_t), -1ULL, tx)); + } + if (err || !bpo->bpo_havesubobj || bpo->bpo_phys->bpo_subobjs == 0) + goto out; + + ASSERT(bpo->bpo_havecomp); + err = dmu_object_info(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, &doi); + if (err) { + mutex_exit(&bpo->bpo_lock); + return (err); + } + ASSERT3U(doi.doi_type, ==, DMU_OT_BPOBJ_SUBOBJ); + epb = doi.doi_data_block_size / sizeof (uint64_t); + + for (i = bpo->bpo_phys->bpo_num_subobjs - 1; i >= 0; i--) { + uint64_t *objarray; + uint64_t offset, blkoff; + bpobj_t sublist; + uint64_t used_before, comp_before, uncomp_before; + uint64_t used_after, comp_after, uncomp_after; + + offset = i * sizeof (uint64_t); + blkoff = P2PHASE(i, epb); + + if (dbuf == NULL || dbuf->db_offset > offset) { + if (dbuf) + dmu_buf_rele(dbuf, FTAG); + err = dmu_buf_hold(bpo->bpo_os, + bpo->bpo_phys->bpo_subobjs, offset, FTAG, &dbuf, 0); + if (err) + break; + } + + ASSERT3U(offset, >=, dbuf->db_offset); + ASSERT3U(offset, <, dbuf->db_offset + dbuf->db_size); + + objarray = dbuf->db_data; + err = bpobj_open(&sublist, bpo->bpo_os, objarray[blkoff]); + if (err) + break; + if (free) { + err = bpobj_space(&sublist, + &used_before, &comp_before, &uncomp_before); + if (err != 0) { + bpobj_close(&sublist); + break; + } + } + err = bpobj_iterate_impl(&sublist, func, arg, tx, free); + if (free) { + VERIFY3U(0, ==, bpobj_space(&sublist, + &used_after, &comp_after, &uncomp_after)); + bpo->bpo_phys->bpo_bytes -= used_before - used_after; + ASSERT3S(bpo->bpo_phys->bpo_bytes, >=, 0); + bpo->bpo_phys->bpo_comp -= comp_before - comp_after; + bpo->bpo_phys->bpo_uncomp -= + uncomp_before - uncomp_after; + } + + bpobj_close(&sublist); + if (err) + break; + if (free) { + err = dmu_object_free(bpo->bpo_os, + objarray[blkoff], tx); + if (err) + break; + bpo->bpo_phys->bpo_num_subobjs--; + ASSERT3S(bpo->bpo_phys->bpo_num_subobjs, >=, 0); + } + } + if (dbuf) { + dmu_buf_rele(dbuf, FTAG); + dbuf = NULL; + } + if (free) { + VERIFY3U(0, ==, dmu_free_range(bpo->bpo_os, + bpo->bpo_phys->bpo_subobjs, + (i + 1) * sizeof (uint64_t), -1ULL, tx)); + } + +out: + /* If there are no entries, there should be no bytes. */ + if (!bpobj_hasentries(bpo)) { + ASSERT0(bpo->bpo_phys->bpo_bytes); + ASSERT0(bpo->bpo_phys->bpo_comp); + ASSERT0(bpo->bpo_phys->bpo_uncomp); + } + + mutex_exit(&bpo->bpo_lock); + return (err); +} + +/* + * Iterate and remove the entries. If func returns nonzero, iteration + * will stop and that entry will not be removed. + */ +int +bpobj_iterate(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx) +{ + return (bpobj_iterate_impl(bpo, func, arg, tx, B_TRUE)); +} + +/* + * Iterate the entries. If func returns nonzero, iteration will stop. + */ +int +bpobj_iterate_nofree(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx) +{ + return (bpobj_iterate_impl(bpo, func, arg, tx, B_FALSE)); +} + +void +bpobj_enqueue_subobj(bpobj_t *bpo, uint64_t subobj, dmu_tx_t *tx) +{ + bpobj_t subbpo; + uint64_t used, comp, uncomp, subsubobjs; + ASSERTV(dmu_object_info_t doi); + + ASSERT(bpo->bpo_havesubobj); + ASSERT(bpo->bpo_havecomp); + ASSERT(bpo->bpo_object != dmu_objset_pool(bpo->bpo_os)->dp_empty_bpobj); + + if (subobj == dmu_objset_pool(bpo->bpo_os)->dp_empty_bpobj) { + bpobj_decr_empty(bpo->bpo_os, tx); + return; + } + + VERIFY3U(0, ==, bpobj_open(&subbpo, bpo->bpo_os, subobj)); + VERIFY3U(0, ==, bpobj_space(&subbpo, &used, &comp, &uncomp)); + + if (!bpobj_hasentries(&subbpo)) { + /* No point in having an empty subobj. */ + bpobj_close(&subbpo); + bpobj_free(bpo->bpo_os, subobj, tx); + return; + } + + dmu_buf_will_dirty(bpo->bpo_dbuf, tx); + if (bpo->bpo_phys->bpo_subobjs == 0) { + bpo->bpo_phys->bpo_subobjs = dmu_object_alloc(bpo->bpo_os, + DMU_OT_BPOBJ_SUBOBJ, SPA_OLD_MAXBLOCKSIZE, + DMU_OT_NONE, 0, tx); + } + + ASSERT0(dmu_object_info(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, &doi)); + ASSERT3U(doi.doi_type, ==, DMU_OT_BPOBJ_SUBOBJ); + + mutex_enter(&bpo->bpo_lock); + dmu_write(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, + bpo->bpo_phys->bpo_num_subobjs * sizeof (subobj), + sizeof (subobj), &subobj, tx); + bpo->bpo_phys->bpo_num_subobjs++; + + /* + * If subobj has only one block of subobjs, then move subobj's + * subobjs to bpo's subobj list directly. This reduces + * recursion in bpobj_iterate due to nested subobjs. + */ + subsubobjs = subbpo.bpo_phys->bpo_subobjs; + if (subsubobjs != 0) { + dmu_object_info_t doi; + + VERIFY3U(0, ==, dmu_object_info(bpo->bpo_os, subsubobjs, &doi)); + if (doi.doi_max_offset == doi.doi_data_block_size) { + dmu_buf_t *subdb; + uint64_t numsubsub = subbpo.bpo_phys->bpo_num_subobjs; + + VERIFY3U(0, ==, dmu_buf_hold(bpo->bpo_os, subsubobjs, + 0, FTAG, &subdb, 0)); + /* + * Make sure that we are not asking dmu_write() + * to write more data than we have in our buffer. + */ + VERIFY3U(subdb->db_size, >=, + numsubsub * sizeof (subobj)); + dmu_write(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, + bpo->bpo_phys->bpo_num_subobjs * sizeof (subobj), + numsubsub * sizeof (subobj), subdb->db_data, tx); + dmu_buf_rele(subdb, FTAG); + bpo->bpo_phys->bpo_num_subobjs += numsubsub; + + dmu_buf_will_dirty(subbpo.bpo_dbuf, tx); + subbpo.bpo_phys->bpo_subobjs = 0; + VERIFY3U(0, ==, dmu_object_free(bpo->bpo_os, + subsubobjs, tx)); + } + } + bpo->bpo_phys->bpo_bytes += used; + bpo->bpo_phys->bpo_comp += comp; + bpo->bpo_phys->bpo_uncomp += uncomp; + mutex_exit(&bpo->bpo_lock); + + bpobj_close(&subbpo); +} + +void +bpobj_enqueue(bpobj_t *bpo, const blkptr_t *bp, dmu_tx_t *tx) +{ + blkptr_t stored_bp = *bp; + uint64_t offset; + int blkoff; + blkptr_t *bparray; + + ASSERT(!BP_IS_HOLE(bp)); + ASSERT(bpo->bpo_object != dmu_objset_pool(bpo->bpo_os)->dp_empty_bpobj); + + if (BP_IS_EMBEDDED(bp)) { + /* + * The bpobj will compress better without the payload. + * + * Note that we store EMBEDDED bp's because they have an + * uncompressed size, which must be accounted for. An + * alternative would be to add their size to bpo_uncomp + * without storing the bp, but that would create additional + * complications: bpo_uncomp would be inconsistent with the + * set of BP's stored, and bpobj_iterate() wouldn't visit + * all the space accounted for in the bpobj. + */ + bzero(&stored_bp, sizeof (stored_bp)); + stored_bp.blk_prop = bp->blk_prop; + stored_bp.blk_birth = bp->blk_birth; + } else if (!BP_GET_DEDUP(bp)) { + /* The bpobj will compress better without the checksum */ + bzero(&stored_bp.blk_cksum, sizeof (stored_bp.blk_cksum)); + } + + /* We never need the fill count. */ + stored_bp.blk_fill = 0; + + mutex_enter(&bpo->bpo_lock); + + offset = bpo->bpo_phys->bpo_num_blkptrs * sizeof (stored_bp); + blkoff = P2PHASE(bpo->bpo_phys->bpo_num_blkptrs, bpo->bpo_epb); + + if (bpo->bpo_cached_dbuf == NULL || + offset < bpo->bpo_cached_dbuf->db_offset || + offset >= bpo->bpo_cached_dbuf->db_offset + + bpo->bpo_cached_dbuf->db_size) { + if (bpo->bpo_cached_dbuf) + dmu_buf_rele(bpo->bpo_cached_dbuf, bpo); + VERIFY3U(0, ==, dmu_buf_hold(bpo->bpo_os, bpo->bpo_object, + offset, bpo, &bpo->bpo_cached_dbuf, 0)); + } + + dmu_buf_will_dirty(bpo->bpo_cached_dbuf, tx); + bparray = bpo->bpo_cached_dbuf->db_data; + bparray[blkoff] = stored_bp; + + dmu_buf_will_dirty(bpo->bpo_dbuf, tx); + bpo->bpo_phys->bpo_num_blkptrs++; + bpo->bpo_phys->bpo_bytes += + bp_get_dsize_sync(dmu_objset_spa(bpo->bpo_os), bp); + if (bpo->bpo_havecomp) { + bpo->bpo_phys->bpo_comp += BP_GET_PSIZE(bp); + bpo->bpo_phys->bpo_uncomp += BP_GET_UCSIZE(bp); + } + mutex_exit(&bpo->bpo_lock); +} + +struct space_range_arg { + spa_t *spa; + uint64_t mintxg; + uint64_t maxtxg; + uint64_t used; + uint64_t comp; + uint64_t uncomp; +}; + +/* ARGSUSED */ +static int +space_range_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + struct space_range_arg *sra = arg; + + if (bp->blk_birth > sra->mintxg && bp->blk_birth <= sra->maxtxg) { + if (dsl_pool_sync_context(spa_get_dsl(sra->spa))) + sra->used += bp_get_dsize_sync(sra->spa, bp); + else + sra->used += bp_get_dsize(sra->spa, bp); + sra->comp += BP_GET_PSIZE(bp); + sra->uncomp += BP_GET_UCSIZE(bp); + } + return (0); +} + +int +bpobj_space(bpobj_t *bpo, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + mutex_enter(&bpo->bpo_lock); + + *usedp = bpo->bpo_phys->bpo_bytes; + if (bpo->bpo_havecomp) { + *compp = bpo->bpo_phys->bpo_comp; + *uncompp = bpo->bpo_phys->bpo_uncomp; + mutex_exit(&bpo->bpo_lock); + return (0); + } else { + mutex_exit(&bpo->bpo_lock); + return (bpobj_space_range(bpo, 0, UINT64_MAX, + usedp, compp, uncompp)); + } +} + +/* + * Return the amount of space in the bpobj which is: + * mintxg < blk_birth <= maxtxg + */ +int +bpobj_space_range(bpobj_t *bpo, uint64_t mintxg, uint64_t maxtxg, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + struct space_range_arg sra = { 0 }; + int err; + + /* + * As an optimization, if they want the whole txg range, just + * get bpo_bytes rather than iterating over the bps. + */ + if (mintxg < TXG_INITIAL && maxtxg == UINT64_MAX && bpo->bpo_havecomp) + return (bpobj_space(bpo, usedp, compp, uncompp)); + + sra.spa = dmu_objset_spa(bpo->bpo_os); + sra.mintxg = mintxg; + sra.maxtxg = maxtxg; + + err = bpobj_iterate_nofree(bpo, space_range_cb, &sra, NULL); + *usedp = sra.used; + *compp = sra.comp; + *uncompp = sra.uncomp; + return (err); +} --- linux-4.4.0.orig/zfs/module/zfs/bptree.c +++ linux-4.4.0/zfs/module/zfs/bptree.c @@ -0,0 +1,301 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * A bptree is a queue of root block pointers from destroyed datasets. When a + * dataset is destroyed its root block pointer is put on the end of the pool's + * bptree queue so the dataset's blocks can be freed asynchronously by + * dsl_scan_sync. This allows the delete operation to finish without traversing + * all the dataset's blocks. + * + * Note that while bt_begin and bt_end are only ever incremented in this code, + * they are effectively reset to 0 every time the entire bptree is freed because + * the bptree's object is destroyed and re-created. + */ + +struct bptree_args { + bptree_phys_t *ba_phys; /* data in bonus buffer, dirtied if freeing */ + boolean_t ba_free; /* true if freeing during traversal */ + + bptree_itor_t *ba_func; /* function to call for each blockpointer */ + void *ba_arg; /* caller supplied argument to ba_func */ + dmu_tx_t *ba_tx; /* caller supplied tx, NULL if not freeing */ +} bptree_args_t; + +uint64_t +bptree_alloc(objset_t *os, dmu_tx_t *tx) +{ + uint64_t obj; + dmu_buf_t *db; + bptree_phys_t *bt; + + obj = dmu_object_alloc(os, DMU_OTN_UINT64_METADATA, + SPA_OLD_MAXBLOCKSIZE, DMU_OTN_UINT64_METADATA, + sizeof (bptree_phys_t), tx); + + /* + * Bonus buffer contents are already initialized to 0, but for + * readability we make it explicit. + */ + VERIFY3U(0, ==, dmu_bonus_hold(os, obj, FTAG, &db)); + dmu_buf_will_dirty(db, tx); + bt = db->db_data; + bt->bt_begin = 0; + bt->bt_end = 0; + bt->bt_bytes = 0; + bt->bt_comp = 0; + bt->bt_uncomp = 0; + dmu_buf_rele(db, FTAG); + + return (obj); +} + +int +bptree_free(objset_t *os, uint64_t obj, dmu_tx_t *tx) +{ + dmu_buf_t *db; + bptree_phys_t *bt; + + VERIFY3U(0, ==, dmu_bonus_hold(os, obj, FTAG, &db)); + bt = db->db_data; + ASSERT3U(bt->bt_begin, ==, bt->bt_end); + ASSERT0(bt->bt_bytes); + ASSERT0(bt->bt_comp); + ASSERT0(bt->bt_uncomp); + dmu_buf_rele(db, FTAG); + + return (dmu_object_free(os, obj, tx)); +} + +boolean_t +bptree_is_empty(objset_t *os, uint64_t obj) +{ + dmu_buf_t *db; + bptree_phys_t *bt; + boolean_t rv; + + VERIFY0(dmu_bonus_hold(os, obj, FTAG, &db)); + bt = db->db_data; + rv = (bt->bt_begin == bt->bt_end); + dmu_buf_rele(db, FTAG); + return (rv); +} + +void +bptree_add(objset_t *os, uint64_t obj, blkptr_t *bp, uint64_t birth_txg, + uint64_t bytes, uint64_t comp, uint64_t uncomp, dmu_tx_t *tx) +{ + dmu_buf_t *db; + bptree_phys_t *bt; + bptree_entry_phys_t *bte; + + /* + * bptree objects are in the pool mos, therefore they can only be + * modified in syncing context. Furthermore, this is only modified + * by the sync thread, so no locking is necessary. + */ + ASSERT(dmu_tx_is_syncing(tx)); + + VERIFY3U(0, ==, dmu_bonus_hold(os, obj, FTAG, &db)); + bt = db->db_data; + + bte = kmem_zalloc(sizeof (*bte), KM_SLEEP); + bte->be_birth_txg = birth_txg; + bte->be_bp = *bp; + dmu_write(os, obj, bt->bt_end * sizeof (*bte), sizeof (*bte), bte, tx); + kmem_free(bte, sizeof (*bte)); + + dmu_buf_will_dirty(db, tx); + bt->bt_end++; + bt->bt_bytes += bytes; + bt->bt_comp += comp; + bt->bt_uncomp += uncomp; + dmu_buf_rele(db, FTAG); +} + +/* ARGSUSED */ +static int +bptree_visit_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + int err; + struct bptree_args *ba = arg; + + if (BP_IS_HOLE(bp)) + return (0); + + err = ba->ba_func(ba->ba_arg, bp, ba->ba_tx); + if (err == 0 && ba->ba_free) { + ba->ba_phys->bt_bytes -= bp_get_dsize_sync(spa, bp); + ba->ba_phys->bt_comp -= BP_GET_PSIZE(bp); + ba->ba_phys->bt_uncomp -= BP_GET_UCSIZE(bp); + } + return (err); +} + +/* + * If "free" is set: + * - It is assumed that "func" will be freeing the block pointers. + * - If "func" returns nonzero, the bookmark will be remembered and + * iteration will be restarted from this point on next invocation. + * - If an i/o error is encountered (e.g. "func" returns EIO or ECKSUM), + * bptree_iterate will remember the bookmark, continue traversing + * any additional entries, and return 0. + * + * If "free" is not set, traversal will stop and return an error if + * an i/o error is encountered. + * + * In either case, if zfs_free_leak_on_eio is set, i/o errors will be + * ignored and traversal will continue (i.e. TRAVERSE_HARD will be passed to + * traverse_dataset_destroyed()). + */ +int +bptree_iterate(objset_t *os, uint64_t obj, boolean_t free, bptree_itor_t func, + void *arg, dmu_tx_t *tx) +{ + boolean_t ioerr = B_FALSE; + int err; + uint64_t i; + dmu_buf_t *db; + struct bptree_args ba; + + ASSERT(!free || dmu_tx_is_syncing(tx)); + + err = dmu_bonus_hold(os, obj, FTAG, &db); + if (err != 0) + return (err); + + if (free) + dmu_buf_will_dirty(db, tx); + + ba.ba_phys = db->db_data; + ba.ba_free = free; + ba.ba_func = func; + ba.ba_arg = arg; + ba.ba_tx = tx; + + err = 0; + for (i = ba.ba_phys->bt_begin; i < ba.ba_phys->bt_end; i++) { + bptree_entry_phys_t bte; + int flags = TRAVERSE_PREFETCH_METADATA | TRAVERSE_POST; + + err = dmu_read(os, obj, i * sizeof (bte), sizeof (bte), + &bte, DMU_READ_NO_PREFETCH); + if (err != 0) + break; + + if (zfs_free_leak_on_eio) + flags |= TRAVERSE_HARD; + zfs_dbgmsg("bptree index %lld: traversing from min_txg=%lld " + "bookmark %lld/%lld/%lld/%lld", + i, (longlong_t)bte.be_birth_txg, + (longlong_t)bte.be_zb.zb_objset, + (longlong_t)bte.be_zb.zb_object, + (longlong_t)bte.be_zb.zb_level, + (longlong_t)bte.be_zb.zb_blkid); + err = traverse_dataset_destroyed(os->os_spa, &bte.be_bp, + bte.be_birth_txg, &bte.be_zb, flags, + bptree_visit_cb, &ba); + if (free) { + /* + * The callback has freed the visited block pointers. + * Record our traversal progress on disk, either by + * updating this record's bookmark, or by logically + * removing this record by advancing bt_begin. + */ + if (err != 0) { + /* save bookmark for future resume */ + ASSERT3U(bte.be_zb.zb_objset, ==, + ZB_DESTROYED_OBJSET); + ASSERT0(bte.be_zb.zb_level); + dmu_write(os, obj, i * sizeof (bte), + sizeof (bte), &bte, tx); + if (err == EIO || err == ECKSUM || + err == ENXIO) { + /* + * Skip the rest of this tree and + * continue on to the next entry. + */ + err = 0; + ioerr = B_TRUE; + } else { + break; + } + } else if (ioerr) { + /* + * This entry is finished, but there were + * i/o errors on previous entries, so we + * can't adjust bt_begin. Set this entry's + * be_birth_txg such that it will be + * treated as a no-op in future traversals. + */ + bte.be_birth_txg = UINT64_MAX; + dmu_write(os, obj, i * sizeof (bte), + sizeof (bte), &bte, tx); + } + + if (!ioerr) { + ba.ba_phys->bt_begin++; + (void) dmu_free_range(os, obj, + i * sizeof (bte), sizeof (bte), tx); + } + } else if (err != 0) { + break; + } + } + + ASSERT(!free || err != 0 || ioerr || + ba.ba_phys->bt_begin == ba.ba_phys->bt_end); + + /* if all blocks are free there should be no used space */ + if (ba.ba_phys->bt_begin == ba.ba_phys->bt_end) { + if (zfs_free_leak_on_eio) { + ba.ba_phys->bt_bytes = 0; + ba.ba_phys->bt_comp = 0; + ba.ba_phys->bt_uncomp = 0; + } + + ASSERT0(ba.ba_phys->bt_bytes); + ASSERT0(ba.ba_phys->bt_comp); + ASSERT0(ba.ba_phys->bt_uncomp); + } + + dmu_buf_rele(db, FTAG); + + return (err); +} --- linux-4.4.0.orig/zfs/module/zfs/dbuf.c +++ linux-4.4.0/zfs/module/zfs/dbuf.c @@ -0,0 +1,3148 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, 2015 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct dbuf_hold_impl_data { + /* Function arguments */ + dnode_t *dh_dn; + uint8_t dh_level; + uint64_t dh_blkid; + int dh_fail_sparse; + void *dh_tag; + dmu_buf_impl_t **dh_dbp; + /* Local variables */ + dmu_buf_impl_t *dh_db; + dmu_buf_impl_t *dh_parent; + blkptr_t *dh_bp; + int dh_err; + dbuf_dirty_record_t *dh_dr; + arc_buf_contents_t dh_type; + int dh_depth; +}; + +static void __dbuf_hold_impl_init(struct dbuf_hold_impl_data *dh, + dnode_t *dn, uint8_t level, uint64_t blkid, int fail_sparse, + void *tag, dmu_buf_impl_t **dbp, int depth); +static int __dbuf_hold_impl(struct dbuf_hold_impl_data *dh); + +/* + * Number of times that zfs_free_range() took the slow path while doing + * a zfs receive. A nonzero value indicates a potential performance problem. + */ +uint64_t zfs_free_range_recv_miss; + +static void dbuf_destroy(dmu_buf_impl_t *db); +static boolean_t dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx); +static void dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx); + +#ifndef __lint +extern inline void dmu_buf_init_user(dmu_buf_user_t *dbu, + dmu_buf_evict_func_t *evict_func, dmu_buf_t **clear_on_evict_dbufp); +#endif /* ! __lint */ + +/* + * Global data structures and functions for the dbuf cache. + */ +static kmem_cache_t *dbuf_cache; +static taskq_t *dbu_evict_taskq; + +/* ARGSUSED */ +static int +dbuf_cons(void *vdb, void *unused, int kmflag) +{ + dmu_buf_impl_t *db = vdb; + bzero(db, sizeof (dmu_buf_impl_t)); + + mutex_init(&db->db_mtx, NULL, MUTEX_DEFAULT, NULL); + cv_init(&db->db_changed, NULL, CV_DEFAULT, NULL); + refcount_create(&db->db_holds); + + return (0); +} + +/* ARGSUSED */ +static void +dbuf_dest(void *vdb, void *unused) +{ + dmu_buf_impl_t *db = vdb; + mutex_destroy(&db->db_mtx); + cv_destroy(&db->db_changed); + refcount_destroy(&db->db_holds); +} + +/* + * dbuf hash table routines + */ +static dbuf_hash_table_t dbuf_hash_table; + +static uint64_t dbuf_hash_count; + +static uint64_t +dbuf_hash(void *os, uint64_t obj, uint8_t lvl, uint64_t blkid) +{ + uintptr_t osv = (uintptr_t)os; + uint64_t crc = -1ULL; + + ASSERT(zfs_crc64_table[128] == ZFS_CRC64_POLY); + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (lvl)) & 0xFF]; + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (osv >> 6)) & 0xFF]; + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (obj >> 0)) & 0xFF]; + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (obj >> 8)) & 0xFF]; + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (blkid >> 0)) & 0xFF]; + crc = (crc >> 8) ^ zfs_crc64_table[(crc ^ (blkid >> 8)) & 0xFF]; + + crc ^= (osv>>14) ^ (obj>>16) ^ (blkid>>16); + + return (crc); +} + +#define DBUF_HASH(os, obj, level, blkid) dbuf_hash(os, obj, level, blkid); + +#define DBUF_EQUAL(dbuf, os, obj, level, blkid) \ + ((dbuf)->db.db_object == (obj) && \ + (dbuf)->db_objset == (os) && \ + (dbuf)->db_level == (level) && \ + (dbuf)->db_blkid == (blkid)) + +dmu_buf_impl_t * +dbuf_find(objset_t *os, uint64_t obj, uint8_t level, uint64_t blkid) +{ + dbuf_hash_table_t *h = &dbuf_hash_table; + uint64_t hv; + uint64_t idx; + dmu_buf_impl_t *db; + + hv = DBUF_HASH(os, obj, level, blkid); + idx = hv & h->hash_table_mask; + + mutex_enter(DBUF_HASH_MUTEX(h, idx)); + for (db = h->hash_table[idx]; db != NULL; db = db->db_hash_next) { + if (DBUF_EQUAL(db, os, obj, level, blkid)) { + mutex_enter(&db->db_mtx); + if (db->db_state != DB_EVICTING) { + mutex_exit(DBUF_HASH_MUTEX(h, idx)); + return (db); + } + mutex_exit(&db->db_mtx); + } + } + mutex_exit(DBUF_HASH_MUTEX(h, idx)); + return (NULL); +} + +static dmu_buf_impl_t * +dbuf_find_bonus(objset_t *os, uint64_t object) +{ + dnode_t *dn; + dmu_buf_impl_t *db = NULL; + + if (dnode_hold(os, object, FTAG, &dn) == 0) { + rw_enter(&dn->dn_struct_rwlock, RW_READER); + if (dn->dn_bonus != NULL) { + db = dn->dn_bonus; + mutex_enter(&db->db_mtx); + } + rw_exit(&dn->dn_struct_rwlock); + dnode_rele(dn, FTAG); + } + return (db); +} + +/* + * Insert an entry into the hash table. If there is already an element + * equal to elem in the hash table, then the already existing element + * will be returned and the new element will not be inserted. + * Otherwise returns NULL. + */ +static dmu_buf_impl_t * +dbuf_hash_insert(dmu_buf_impl_t *db) +{ + dbuf_hash_table_t *h = &dbuf_hash_table; + objset_t *os = db->db_objset; + uint64_t obj = db->db.db_object; + int level = db->db_level; + uint64_t blkid, hv, idx; + dmu_buf_impl_t *dbf; + + blkid = db->db_blkid; + hv = DBUF_HASH(os, obj, level, blkid); + idx = hv & h->hash_table_mask; + + mutex_enter(DBUF_HASH_MUTEX(h, idx)); + for (dbf = h->hash_table[idx]; dbf != NULL; dbf = dbf->db_hash_next) { + if (DBUF_EQUAL(dbf, os, obj, level, blkid)) { + mutex_enter(&dbf->db_mtx); + if (dbf->db_state != DB_EVICTING) { + mutex_exit(DBUF_HASH_MUTEX(h, idx)); + return (dbf); + } + mutex_exit(&dbf->db_mtx); + } + } + + mutex_enter(&db->db_mtx); + db->db_hash_next = h->hash_table[idx]; + h->hash_table[idx] = db; + mutex_exit(DBUF_HASH_MUTEX(h, idx)); + atomic_add_64(&dbuf_hash_count, 1); + + return (NULL); +} + +/* + * Remove an entry from the hash table. It must be in the EVICTING state. + */ +static void +dbuf_hash_remove(dmu_buf_impl_t *db) +{ + dbuf_hash_table_t *h = &dbuf_hash_table; + uint64_t hv, idx; + dmu_buf_impl_t *dbf, **dbp; + + hv = DBUF_HASH(db->db_objset, db->db.db_object, + db->db_level, db->db_blkid); + idx = hv & h->hash_table_mask; + + /* + * We musn't hold db_mtx to maintain lock ordering: + * DBUF_HASH_MUTEX > db_mtx. + */ + ASSERT(refcount_is_zero(&db->db_holds)); + ASSERT(db->db_state == DB_EVICTING); + ASSERT(!MUTEX_HELD(&db->db_mtx)); + + mutex_enter(DBUF_HASH_MUTEX(h, idx)); + dbp = &h->hash_table[idx]; + while ((dbf = *dbp) != db) { + dbp = &dbf->db_hash_next; + ASSERT(dbf != NULL); + } + *dbp = db->db_hash_next; + db->db_hash_next = NULL; + mutex_exit(DBUF_HASH_MUTEX(h, idx)); + atomic_add_64(&dbuf_hash_count, -1); +} + +static arc_evict_func_t dbuf_do_evict; + +typedef enum { + DBVU_EVICTING, + DBVU_NOT_EVICTING +} dbvu_verify_type_t; + +static void +dbuf_verify_user(dmu_buf_impl_t *db, dbvu_verify_type_t verify_type) +{ +#ifdef ZFS_DEBUG + int64_t holds; + + if (db->db_user == NULL) + return; + + /* Only data blocks support the attachment of user data. */ + ASSERT(db->db_level == 0); + + /* Clients must resolve a dbuf before attaching user data. */ + ASSERT(db->db.db_data != NULL); + ASSERT3U(db->db_state, ==, DB_CACHED); + + holds = refcount_count(&db->db_holds); + if (verify_type == DBVU_EVICTING) { + /* + * Immediate eviction occurs when holds == dirtycnt. + * For normal eviction buffers, holds is zero on + * eviction, except when dbuf_fix_old_data() calls + * dbuf_clear_data(). However, the hold count can grow + * during eviction even though db_mtx is held (see + * dmu_bonus_hold() for an example), so we can only + * test the generic invariant that holds >= dirtycnt. + */ + ASSERT3U(holds, >=, db->db_dirtycnt); + } else { + if (db->db_user_immediate_evict == TRUE) + ASSERT3U(holds, >=, db->db_dirtycnt); + else + ASSERT3U(holds, >, 0); + } +#endif +} + +static void +dbuf_evict_user(dmu_buf_impl_t *db) +{ + dmu_buf_user_t *dbu = db->db_user; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + + if (dbu == NULL) + return; + + dbuf_verify_user(db, DBVU_EVICTING); + db->db_user = NULL; + +#ifdef ZFS_DEBUG + if (dbu->dbu_clear_on_evict_dbufp != NULL) + *dbu->dbu_clear_on_evict_dbufp = NULL; +#endif + + /* + * Invoke the callback from a taskq to avoid lock order reversals + * and limit stack depth. + */ + taskq_dispatch_ent(dbu_evict_taskq, dbu->dbu_evict_func, dbu, 0, + &dbu->dbu_tqent); +} + +boolean_t +dbuf_is_metadata(dmu_buf_impl_t *db) +{ + /* + * Consider indirect blocks and spill blocks to be meta data. + */ + if (db->db_level > 0 || db->db_blkid == DMU_SPILL_BLKID) { + return (B_TRUE); + } else { + boolean_t is_metadata; + + DB_DNODE_ENTER(db); + is_metadata = DMU_OT_IS_METADATA(DB_DNODE(db)->dn_type); + DB_DNODE_EXIT(db); + + return (is_metadata); + } +} + +void +dbuf_evict(dmu_buf_impl_t *db) +{ + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(db->db_buf == NULL); + ASSERT(db->db_data_pending == NULL); + + dbuf_clear(db); + dbuf_destroy(db); +} + +void +dbuf_init(void) +{ + uint64_t hsize = 1ULL << 16; + dbuf_hash_table_t *h = &dbuf_hash_table; + int i; + + /* + * The hash table is big enough to fill all of physical memory + * with an average block size of zfs_arc_average_blocksize (default 8K). + * By default, the table will take up + * totalmem * sizeof(void*) / 8K (1MB per GB with 8-byte pointers). + */ + while (hsize * zfs_arc_average_blocksize < physmem * PAGESIZE) + hsize <<= 1; + +retry: + h->hash_table_mask = hsize - 1; +#if defined(_KERNEL) && defined(HAVE_SPL) + /* + * Large allocations which do not require contiguous pages + * should be using vmem_alloc() in the linux kernel + */ + h->hash_table = vmem_zalloc(hsize * sizeof (void *), KM_SLEEP); +#else + h->hash_table = kmem_zalloc(hsize * sizeof (void *), KM_NOSLEEP); +#endif + if (h->hash_table == NULL) { + /* XXX - we should really return an error instead of assert */ + ASSERT(hsize > (1ULL << 10)); + hsize >>= 1; + goto retry; + } + + dbuf_cache = kmem_cache_create("dmu_buf_impl_t", + sizeof (dmu_buf_impl_t), + 0, dbuf_cons, dbuf_dest, NULL, NULL, NULL, 0); + + for (i = 0; i < DBUF_MUTEXES; i++) + mutex_init(&h->hash_mutexes[i], NULL, MUTEX_DEFAULT, NULL); + + dbuf_stats_init(h); + + /* + * All entries are queued via taskq_dispatch_ent(), so min/maxalloc + * configuration is not required. + */ + dbu_evict_taskq = taskq_create("dbu_evict", 1, defclsyspri, 0, 0, 0); +} + +void +dbuf_fini(void) +{ + dbuf_hash_table_t *h = &dbuf_hash_table; + int i; + + dbuf_stats_destroy(); + + for (i = 0; i < DBUF_MUTEXES; i++) + mutex_destroy(&h->hash_mutexes[i]); +#if defined(_KERNEL) && defined(HAVE_SPL) + /* + * Large allocations which do not require contiguous pages + * should be using vmem_free() in the linux kernel + */ + vmem_free(h->hash_table, (h->hash_table_mask + 1) * sizeof (void *)); +#else + kmem_free(h->hash_table, (h->hash_table_mask + 1) * sizeof (void *)); +#endif + kmem_cache_destroy(dbuf_cache); + taskq_destroy(dbu_evict_taskq); +} + +/* + * Other stuff. + */ + +#ifdef ZFS_DEBUG +static void +dbuf_verify(dmu_buf_impl_t *db) +{ + dnode_t *dn; + dbuf_dirty_record_t *dr; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + + if (!(zfs_flags & ZFS_DEBUG_DBUF_VERIFY)) + return; + + ASSERT(db->db_objset != NULL); + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + if (dn == NULL) { + ASSERT(db->db_parent == NULL); + ASSERT(db->db_blkptr == NULL); + } else { + ASSERT3U(db->db.db_object, ==, dn->dn_object); + ASSERT3P(db->db_objset, ==, dn->dn_objset); + ASSERT3U(db->db_level, <, dn->dn_nlevels); + ASSERT(db->db_blkid == DMU_BONUS_BLKID || + db->db_blkid == DMU_SPILL_BLKID || + !avl_is_empty(&dn->dn_dbufs)); + } + if (db->db_blkid == DMU_BONUS_BLKID) { + ASSERT(dn != NULL); + ASSERT3U(db->db.db_size, >=, dn->dn_bonuslen); + ASSERT3U(db->db.db_offset, ==, DMU_BONUS_BLKID); + } else if (db->db_blkid == DMU_SPILL_BLKID) { + ASSERT(dn != NULL); + ASSERT3U(db->db.db_size, >=, dn->dn_bonuslen); + ASSERT0(db->db.db_offset); + } else { + ASSERT3U(db->db.db_offset, ==, db->db_blkid * db->db.db_size); + } + + for (dr = db->db_data_pending; dr != NULL; dr = dr->dr_next) + ASSERT(dr->dr_dbuf == db); + + for (dr = db->db_last_dirty; dr != NULL; dr = dr->dr_next) + ASSERT(dr->dr_dbuf == db); + + /* + * We can't assert that db_size matches dn_datablksz because it + * can be momentarily different when another thread is doing + * dnode_set_blksz(). + */ + if (db->db_level == 0 && db->db.db_object == DMU_META_DNODE_OBJECT) { + dr = db->db_data_pending; + /* + * It should only be modified in syncing context, so + * make sure we only have one copy of the data. + */ + ASSERT(dr == NULL || dr->dt.dl.dr_data == db->db_buf); + } + + /* verify db->db_blkptr */ + if (db->db_blkptr) { + if (db->db_parent == dn->dn_dbuf) { + /* db is pointed to by the dnode */ + /* ASSERT3U(db->db_blkid, <, dn->dn_nblkptr); */ + if (DMU_OBJECT_IS_SPECIAL(db->db.db_object)) + ASSERT(db->db_parent == NULL); + else + ASSERT(db->db_parent != NULL); + if (db->db_blkid != DMU_SPILL_BLKID) + ASSERT3P(db->db_blkptr, ==, + &dn->dn_phys->dn_blkptr[db->db_blkid]); + } else { + /* db is pointed to by an indirect block */ + ASSERTV(int epb = db->db_parent->db.db_size >> + SPA_BLKPTRSHIFT); + ASSERT3U(db->db_parent->db_level, ==, db->db_level+1); + ASSERT3U(db->db_parent->db.db_object, ==, + db->db.db_object); + /* + * dnode_grow_indblksz() can make this fail if we don't + * have the struct_rwlock. XXX indblksz no longer + * grows. safe to do this now? + */ + if (RW_WRITE_HELD(&dn->dn_struct_rwlock)) { + ASSERT3P(db->db_blkptr, ==, + ((blkptr_t *)db->db_parent->db.db_data + + db->db_blkid % epb)); + } + } + } + if ((db->db_blkptr == NULL || BP_IS_HOLE(db->db_blkptr)) && + (db->db_buf == NULL || db->db_buf->b_data) && + db->db.db_data && db->db_blkid != DMU_BONUS_BLKID && + db->db_state != DB_FILL && !dn->dn_free_txg) { + /* + * If the blkptr isn't set but they have nonzero data, + * it had better be dirty, otherwise we'll lose that + * data when we evict this buffer. + */ + if (db->db_dirtycnt == 0) { + ASSERTV(uint64_t *buf = db->db.db_data); + int i; + + for (i = 0; i < db->db.db_size >> 3; i++) { + ASSERT(buf[i] == 0); + } + } + } + DB_DNODE_EXIT(db); +} +#endif + +static void +dbuf_clear_data(dmu_buf_impl_t *db) +{ + ASSERT(MUTEX_HELD(&db->db_mtx)); + dbuf_evict_user(db); + db->db_buf = NULL; + db->db.db_data = NULL; + if (db->db_state != DB_NOFILL) + db->db_state = DB_UNCACHED; +} + +static void +dbuf_set_data(dmu_buf_impl_t *db, arc_buf_t *buf) +{ + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(buf != NULL); + + db->db_buf = buf; + ASSERT(buf->b_data != NULL); + db->db.db_data = buf->b_data; + if (!arc_released(buf)) + arc_set_callback(buf, dbuf_do_evict, db); +} + +/* + * Loan out an arc_buf for read. Return the loaned arc_buf. + */ +arc_buf_t * +dbuf_loan_arcbuf(dmu_buf_impl_t *db) +{ + arc_buf_t *abuf; + + mutex_enter(&db->db_mtx); + if (arc_released(db->db_buf) || refcount_count(&db->db_holds) > 1) { + int blksz = db->db.db_size; + spa_t *spa = db->db_objset->os_spa; + + mutex_exit(&db->db_mtx); + abuf = arc_loan_buf(spa, blksz); + bcopy(db->db.db_data, abuf->b_data, blksz); + } else { + abuf = db->db_buf; + arc_loan_inuse_buf(abuf, db); + dbuf_clear_data(db); + mutex_exit(&db->db_mtx); + } + return (abuf); +} + +uint64_t +dbuf_whichblock(dnode_t *dn, uint64_t offset) +{ + if (dn->dn_datablkshift) { + return (offset >> dn->dn_datablkshift); + } else { + ASSERT3U(offset, <, dn->dn_datablksz); + return (0); + } +} + +static void +dbuf_read_done(zio_t *zio, arc_buf_t *buf, void *vdb) +{ + dmu_buf_impl_t *db = vdb; + + mutex_enter(&db->db_mtx); + ASSERT3U(db->db_state, ==, DB_READ); + /* + * All reads are synchronous, so we must have a hold on the dbuf + */ + ASSERT(refcount_count(&db->db_holds) > 0); + ASSERT(db->db_buf == NULL); + ASSERT(db->db.db_data == NULL); + if (db->db_level == 0 && db->db_freed_in_flight) { + /* we were freed in flight; disregard any error */ + arc_release(buf, db); + bzero(buf->b_data, db->db.db_size); + arc_buf_freeze(buf); + db->db_freed_in_flight = FALSE; + dbuf_set_data(db, buf); + db->db_state = DB_CACHED; + } else if (zio == NULL || zio->io_error == 0) { + dbuf_set_data(db, buf); + db->db_state = DB_CACHED; + } else { + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + ASSERT3P(db->db_buf, ==, NULL); + VERIFY(arc_buf_remove_ref(buf, db)); + db->db_state = DB_UNCACHED; + } + cv_broadcast(&db->db_changed); + dbuf_rele_and_unlock(db, NULL); +} + +static int +dbuf_read_impl(dmu_buf_impl_t *db, zio_t *zio, uint32_t *flags) +{ + dnode_t *dn; + zbookmark_phys_t zb; + uint32_t aflags = ARC_FLAG_NOWAIT; + int err; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + ASSERT(!refcount_is_zero(&db->db_holds)); + /* We need the struct_rwlock to prevent db_blkptr from changing. */ + ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(db->db_state == DB_UNCACHED); + ASSERT(db->db_buf == NULL); + + if (db->db_blkid == DMU_BONUS_BLKID) { + int bonuslen = MIN(dn->dn_bonuslen, dn->dn_phys->dn_bonuslen); + + ASSERT3U(bonuslen, <=, db->db.db_size); + db->db.db_data = zio_buf_alloc(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); + if (bonuslen < DN_MAX_BONUSLEN) + bzero(db->db.db_data, DN_MAX_BONUSLEN); + if (bonuslen) + bcopy(DN_BONUS(dn->dn_phys), db->db.db_data, bonuslen); + DB_DNODE_EXIT(db); + db->db_state = DB_CACHED; + mutex_exit(&db->db_mtx); + return (0); + } + + /* + * Recheck BP_IS_HOLE() after dnode_block_freed() in case dnode_sync() + * processes the delete record and clears the bp while we are waiting + * for the dn_mtx (resulting in a "no" from block_freed). + */ + if (db->db_blkptr == NULL || BP_IS_HOLE(db->db_blkptr) || + (db->db_level == 0 && (dnode_block_freed(dn, db->db_blkid) || + BP_IS_HOLE(db->db_blkptr)))) { + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + + DB_DNODE_EXIT(db); + dbuf_set_data(db, arc_buf_alloc(db->db_objset->os_spa, + db->db.db_size, db, type)); + bzero(db->db.db_data, db->db.db_size); + db->db_state = DB_CACHED; + *flags |= DB_RF_CACHED; + mutex_exit(&db->db_mtx); + return (0); + } + + DB_DNODE_EXIT(db); + + db->db_state = DB_READ; + mutex_exit(&db->db_mtx); + + if (DBUF_IS_L2CACHEABLE(db)) + aflags |= ARC_FLAG_L2CACHE; + if (DBUF_IS_L2COMPRESSIBLE(db)) + aflags |= ARC_FLAG_L2COMPRESS; + + SET_BOOKMARK(&zb, db->db_objset->os_dsl_dataset ? + db->db_objset->os_dsl_dataset->ds_object : DMU_META_OBJSET, + db->db.db_object, db->db_level, db->db_blkid); + + dbuf_add_ref(db, NULL); + + err = arc_read(zio, db->db_objset->os_spa, db->db_blkptr, + dbuf_read_done, db, ZIO_PRIORITY_SYNC_READ, + (*flags & DB_RF_CANFAIL) ? ZIO_FLAG_CANFAIL : ZIO_FLAG_MUSTSUCCEED, + &aflags, &zb); + if (aflags & ARC_FLAG_CACHED) + *flags |= DB_RF_CACHED; + + return (SET_ERROR(err)); +} + +int +dbuf_read(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags) +{ + int err = 0; + boolean_t havepzio = (zio != NULL); + boolean_t prefetch; + dnode_t *dn; + + /* + * We don't have to hold the mutex to check db_state because it + * can't be freed while we have a hold on the buffer. + */ + ASSERT(!refcount_is_zero(&db->db_holds)); + + if (db->db_state == DB_NOFILL) + return (SET_ERROR(EIO)); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_enter(&dn->dn_struct_rwlock, RW_READER); + + prefetch = db->db_level == 0 && db->db_blkid != DMU_BONUS_BLKID && + (flags & DB_RF_NOPREFETCH) == 0 && dn != NULL && + DBUF_IS_CACHEABLE(db); + + mutex_enter(&db->db_mtx); + if (db->db_state == DB_CACHED) { + mutex_exit(&db->db_mtx); + if (prefetch) + dmu_zfetch(&dn->dn_zfetch, db->db.db_offset, + db->db.db_size, TRUE); + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_exit(&dn->dn_struct_rwlock); + DB_DNODE_EXIT(db); + } else if (db->db_state == DB_UNCACHED) { + spa_t *spa = dn->dn_objset->os_spa; + + if (zio == NULL) + zio = zio_root(spa, NULL, NULL, ZIO_FLAG_CANFAIL); + + err = dbuf_read_impl(db, zio, &flags); + + /* dbuf_read_impl has dropped db_mtx for us */ + + if (!err && prefetch) + dmu_zfetch(&dn->dn_zfetch, db->db.db_offset, + db->db.db_size, flags & DB_RF_CACHED); + + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_exit(&dn->dn_struct_rwlock); + DB_DNODE_EXIT(db); + + if (!err && !havepzio) + err = zio_wait(zio); + } else { + /* + * Another reader came in while the dbuf was in flight + * between UNCACHED and CACHED. Either a writer will finish + * writing the buffer (sending the dbuf to CACHED) or the + * first reader's request will reach the read_done callback + * and send the dbuf to CACHED. Otherwise, a failure + * occurred and the dbuf went to UNCACHED. + */ + mutex_exit(&db->db_mtx); + if (prefetch) + dmu_zfetch(&dn->dn_zfetch, db->db.db_offset, + db->db.db_size, TRUE); + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_exit(&dn->dn_struct_rwlock); + DB_DNODE_EXIT(db); + + /* Skip the wait per the caller's request. */ + mutex_enter(&db->db_mtx); + if ((flags & DB_RF_NEVERWAIT) == 0) { + while (db->db_state == DB_READ || + db->db_state == DB_FILL) { + ASSERT(db->db_state == DB_READ || + (flags & DB_RF_HAVESTRUCT) == 0); + DTRACE_PROBE2(blocked__read, dmu_buf_impl_t *, + db, zio_t *, zio); + cv_wait(&db->db_changed, &db->db_mtx); + } + if (db->db_state == DB_UNCACHED) + err = SET_ERROR(EIO); + } + mutex_exit(&db->db_mtx); + } + + ASSERT(err || havepzio || db->db_state == DB_CACHED); + return (err); +} + +static void +dbuf_noread(dmu_buf_impl_t *db) +{ + ASSERT(!refcount_is_zero(&db->db_holds)); + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + mutex_enter(&db->db_mtx); + while (db->db_state == DB_READ || db->db_state == DB_FILL) + cv_wait(&db->db_changed, &db->db_mtx); + if (db->db_state == DB_UNCACHED) { + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + spa_t *spa = db->db_objset->os_spa; + + ASSERT(db->db_buf == NULL); + ASSERT(db->db.db_data == NULL); + dbuf_set_data(db, arc_buf_alloc(spa, db->db.db_size, db, type)); + db->db_state = DB_FILL; + } else if (db->db_state == DB_NOFILL) { + dbuf_clear_data(db); + } else { + ASSERT3U(db->db_state, ==, DB_CACHED); + } + mutex_exit(&db->db_mtx); +} + +/* + * This is our just-in-time copy function. It makes a copy of + * buffers, that have been modified in a previous transaction + * group, before we modify them in the current active group. + * + * This function is used in two places: when we are dirtying a + * buffer for the first time in a txg, and when we are freeing + * a range in a dnode that includes this buffer. + * + * Note that when we are called from dbuf_free_range() we do + * not put a hold on the buffer, we just traverse the active + * dbuf list for the dnode. + */ +static void +dbuf_fix_old_data(dmu_buf_impl_t *db, uint64_t txg) +{ + dbuf_dirty_record_t *dr = db->db_last_dirty; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(db->db.db_data != NULL); + ASSERT(db->db_level == 0); + ASSERT(db->db.db_object != DMU_META_DNODE_OBJECT); + + if (dr == NULL || + (dr->dt.dl.dr_data != + ((db->db_blkid == DMU_BONUS_BLKID) ? db->db.db_data : db->db_buf))) + return; + + /* + * If the last dirty record for this dbuf has not yet synced + * and its referencing the dbuf data, either: + * reset the reference to point to a new copy, + * or (if there a no active holders) + * just null out the current db_data pointer. + */ + ASSERT(dr->dr_txg >= txg - 2); + if (db->db_blkid == DMU_BONUS_BLKID) { + /* Note that the data bufs here are zio_bufs */ + dr->dt.dl.dr_data = zio_buf_alloc(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); + bcopy(db->db.db_data, dr->dt.dl.dr_data, DN_MAX_BONUSLEN); + } else if (refcount_count(&db->db_holds) > db->db_dirtycnt) { + int size = db->db.db_size; + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + spa_t *spa = db->db_objset->os_spa; + + dr->dt.dl.dr_data = arc_buf_alloc(spa, size, db, type); + bcopy(db->db.db_data, dr->dt.dl.dr_data->b_data, size); + } else { + dbuf_clear_data(db); + } +} + +void +dbuf_unoverride(dbuf_dirty_record_t *dr) +{ + dmu_buf_impl_t *db = dr->dr_dbuf; + blkptr_t *bp = &dr->dt.dl.dr_overridden_by; + uint64_t txg = dr->dr_txg; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(dr->dt.dl.dr_override_state != DR_IN_DMU_SYNC); + ASSERT(db->db_level == 0); + + if (db->db_blkid == DMU_BONUS_BLKID || + dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN) + return; + + ASSERT(db->db_data_pending != dr); + + /* free this block */ + if (!BP_IS_HOLE(bp) && !dr->dt.dl.dr_nopwrite) + zio_free(db->db_objset->os_spa, txg, bp); + + dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; + dr->dt.dl.dr_nopwrite = B_FALSE; + + /* + * Release the already-written buffer, so we leave it in + * a consistent dirty state. Note that all callers are + * modifying the buffer, so they will immediately do + * another (redundant) arc_release(). Therefore, leave + * the buf thawed to save the effort of freezing & + * immediately re-thawing it. + */ + arc_release(dr->dt.dl.dr_data, db); +} + +/* + * Evict (if its unreferenced) or clear (if its referenced) any level-0 + * data blocks in the free range, so that any future readers will find + * empty blocks. + * + * This is a no-op if the dataset is in the middle of an incremental + * receive; see comment below for details. + */ +void +dbuf_free_range(dnode_t *dn, uint64_t start_blkid, uint64_t end_blkid, + dmu_tx_t *tx) +{ + dmu_buf_impl_t *db_search; + dmu_buf_impl_t *db, *db_next; + uint64_t txg = tx->tx_txg; + avl_index_t where; + boolean_t freespill = + (start_blkid == DMU_SPILL_BLKID || end_blkid == DMU_SPILL_BLKID); + + if (end_blkid > dn->dn_maxblkid && !freespill) + end_blkid = dn->dn_maxblkid; + dprintf_dnode(dn, "start=%llu end=%llu\n", start_blkid, end_blkid); + + db_search = kmem_alloc(sizeof (dmu_buf_impl_t), KM_SLEEP); + db_search->db_level = 0; + db_search->db_blkid = start_blkid; + db_search->db_state = DB_SEARCH; + + mutex_enter(&dn->dn_dbufs_mtx); + if (start_blkid >= dn->dn_unlisted_l0_blkid && !freespill) { + /* There can't be any dbufs in this range; no need to search. */ +#ifdef DEBUG + db = avl_find(&dn->dn_dbufs, db_search, &where); + ASSERT3P(db, ==, NULL); + db = avl_nearest(&dn->dn_dbufs, where, AVL_AFTER); + ASSERT(db == NULL || db->db_level > 0); +#endif + goto out; + } else if (dmu_objset_is_receiving(dn->dn_objset)) { + /* + * If we are receiving, we expect there to be no dbufs in + * the range to be freed, because receive modifies each + * block at most once, and in offset order. If this is + * not the case, it can lead to performance problems, + * so note that we unexpectedly took the slow path. + */ + atomic_inc_64(&zfs_free_range_recv_miss); + } + + db = avl_find(&dn->dn_dbufs, db_search, &where); + ASSERT3P(db, ==, NULL); + db = avl_nearest(&dn->dn_dbufs, where, AVL_AFTER); + + for (; db != NULL; db = db_next) { + db_next = AVL_NEXT(&dn->dn_dbufs, db); + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + + if (db->db_level != 0 || db->db_blkid > end_blkid) { + break; + } + ASSERT3U(db->db_blkid, >=, start_blkid); + + /* found a level 0 buffer in the range */ + mutex_enter(&db->db_mtx); + if (dbuf_undirty(db, tx)) { + /* mutex has been dropped and dbuf destroyed */ + continue; + } + + if (db->db_state == DB_UNCACHED || + db->db_state == DB_NOFILL || + db->db_state == DB_EVICTING) { + ASSERT(db->db.db_data == NULL); + mutex_exit(&db->db_mtx); + continue; + } + if (db->db_state == DB_READ || db->db_state == DB_FILL) { + /* will be handled in dbuf_read_done or dbuf_rele */ + db->db_freed_in_flight = TRUE; + mutex_exit(&db->db_mtx); + continue; + } + if (refcount_count(&db->db_holds) == 0) { + ASSERT(db->db_buf); + dbuf_clear(db); + continue; + } + /* The dbuf is referenced */ + + if (db->db_last_dirty != NULL) { + dbuf_dirty_record_t *dr = db->db_last_dirty; + + if (dr->dr_txg == txg) { + /* + * This buffer is "in-use", re-adjust the file + * size to reflect that this buffer may + * contain new data when we sync. + */ + if (db->db_blkid != DMU_SPILL_BLKID && + db->db_blkid > dn->dn_maxblkid) + dn->dn_maxblkid = db->db_blkid; + dbuf_unoverride(dr); + } else { + /* + * This dbuf is not dirty in the open context. + * Either uncache it (if its not referenced in + * the open context) or reset its contents to + * empty. + */ + dbuf_fix_old_data(db, txg); + } + } + /* clear the contents if its cached */ + if (db->db_state == DB_CACHED) { + ASSERT(db->db.db_data != NULL); + arc_release(db->db_buf, db); + bzero(db->db.db_data, db->db.db_size); + arc_buf_freeze(db->db_buf); + } + + mutex_exit(&db->db_mtx); + } + +out: + kmem_free(db_search, sizeof (dmu_buf_impl_t)); + mutex_exit(&dn->dn_dbufs_mtx); +} + +static int +dbuf_block_freeable(dmu_buf_impl_t *db) +{ + dsl_dataset_t *ds = db->db_objset->os_dsl_dataset; + uint64_t birth_txg = 0; + + /* + * We don't need any locking to protect db_blkptr: + * If it's syncing, then db_last_dirty will be set + * so we'll ignore db_blkptr. + * + * This logic ensures that only block births for + * filled blocks are considered. + */ + ASSERT(MUTEX_HELD(&db->db_mtx)); + if (db->db_last_dirty && (db->db_blkptr == NULL || + !BP_IS_HOLE(db->db_blkptr))) { + birth_txg = db->db_last_dirty->dr_txg; + } else if (db->db_blkptr != NULL && !BP_IS_HOLE(db->db_blkptr)) { + birth_txg = db->db_blkptr->blk_birth; + } + + /* + * If this block don't exist or is in a snapshot, it can't be freed. + * Don't pass the bp to dsl_dataset_block_freeable() since we + * are holding the db_mtx lock and might deadlock if we are + * prefetching a dedup-ed block. + */ + if (birth_txg != 0) + return (ds == NULL || + dsl_dataset_block_freeable(ds, NULL, birth_txg)); + else + return (B_FALSE); +} + +void +dbuf_new_size(dmu_buf_impl_t *db, int size, dmu_tx_t *tx) +{ + arc_buf_t *buf, *obuf; + int osize = db->db.db_size; + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + dnode_t *dn; + + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + /* XXX does *this* func really need the lock? */ + ASSERT(RW_WRITE_HELD(&dn->dn_struct_rwlock)); + + /* + * This call to dmu_buf_will_dirty() with the dn_struct_rwlock held + * is OK, because there can be no other references to the db + * when we are changing its size, so no concurrent DB_FILL can + * be happening. + */ + /* + * XXX we should be doing a dbuf_read, checking the return + * value and returning that up to our callers + */ + dmu_buf_will_dirty(&db->db, tx); + + /* create the data buffer for the new block */ + buf = arc_buf_alloc(dn->dn_objset->os_spa, size, db, type); + + /* copy old block data to the new block */ + obuf = db->db_buf; + bcopy(obuf->b_data, buf->b_data, MIN(osize, size)); + /* zero the remainder */ + if (size > osize) + bzero((uint8_t *)buf->b_data + osize, size - osize); + + mutex_enter(&db->db_mtx); + dbuf_set_data(db, buf); + VERIFY(arc_buf_remove_ref(obuf, db)); + db->db.db_size = size; + + if (db->db_level == 0) { + ASSERT3U(db->db_last_dirty->dr_txg, ==, tx->tx_txg); + db->db_last_dirty->dt.dl.dr_data = buf; + } + mutex_exit(&db->db_mtx); + + dnode_willuse_space(dn, size-osize, tx); + DB_DNODE_EXIT(db); +} + +void +dbuf_release_bp(dmu_buf_impl_t *db) +{ + ASSERTV(objset_t *os = db->db_objset); + + ASSERT(dsl_pool_sync_context(dmu_objset_pool(os))); + ASSERT(arc_released(os->os_phys_buf) || + list_link_active(&os->os_dsl_dataset->ds_synced_link)); + ASSERT(db->db_parent == NULL || arc_released(db->db_parent->db_buf)); + + (void) arc_release(db->db_buf, db); +} + +dbuf_dirty_record_t * +dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t *tx) +{ + dnode_t *dn; + objset_t *os; + dbuf_dirty_record_t **drp, *dr; + int drop_struct_lock = FALSE; + boolean_t do_free_accounting = B_FALSE; + int txgoff = tx->tx_txg & TXG_MASK; + + ASSERT(tx->tx_txg != 0); + ASSERT(!refcount_is_zero(&db->db_holds)); + DMU_TX_DIRTY_BUF(tx, db); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + /* + * Shouldn't dirty a regular buffer in syncing context. Private + * objects may be dirtied in syncing context, but only if they + * were already pre-dirtied in open context. + */ + ASSERT(!dmu_tx_is_syncing(tx) || + BP_IS_HOLE(dn->dn_objset->os_rootbp) || + DMU_OBJECT_IS_SPECIAL(dn->dn_object) || + dn->dn_objset->os_dsl_dataset == NULL); + /* + * We make this assert for private objects as well, but after we + * check if we're already dirty. They are allowed to re-dirty + * in syncing context. + */ + ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT || + dn->dn_dirtyctx == DN_UNDIRTIED || dn->dn_dirtyctx == + (dmu_tx_is_syncing(tx) ? DN_DIRTY_SYNC : DN_DIRTY_OPEN)); + + mutex_enter(&db->db_mtx); + /* + * XXX make this true for indirects too? The problem is that + * transactions created with dmu_tx_create_assigned() from + * syncing context don't bother holding ahead. + */ + ASSERT(db->db_level != 0 || + db->db_state == DB_CACHED || db->db_state == DB_FILL || + db->db_state == DB_NOFILL); + + mutex_enter(&dn->dn_mtx); + /* + * Don't set dirtyctx to SYNC if we're just modifying this as we + * initialize the objset. + */ + if (dn->dn_dirtyctx == DN_UNDIRTIED && + !BP_IS_HOLE(dn->dn_objset->os_rootbp)) { + dn->dn_dirtyctx = + (dmu_tx_is_syncing(tx) ? DN_DIRTY_SYNC : DN_DIRTY_OPEN); + ASSERT(dn->dn_dirtyctx_firstset == NULL); + dn->dn_dirtyctx_firstset = kmem_alloc(1, KM_SLEEP); + } + mutex_exit(&dn->dn_mtx); + + if (db->db_blkid == DMU_SPILL_BLKID) + dn->dn_have_spill = B_TRUE; + + /* + * If this buffer is already dirty, we're done. + */ + drp = &db->db_last_dirty; + ASSERT(*drp == NULL || (*drp)->dr_txg <= tx->tx_txg || + db->db.db_object == DMU_META_DNODE_OBJECT); + while ((dr = *drp) != NULL && dr->dr_txg > tx->tx_txg) + drp = &dr->dr_next; + if (dr && dr->dr_txg == tx->tx_txg) { + DB_DNODE_EXIT(db); + + if (db->db_level == 0 && db->db_blkid != DMU_BONUS_BLKID) { + /* + * If this buffer has already been written out, + * we now need to reset its state. + */ + dbuf_unoverride(dr); + if (db->db.db_object != DMU_META_DNODE_OBJECT && + db->db_state != DB_NOFILL) + arc_buf_thaw(db->db_buf); + } + mutex_exit(&db->db_mtx); + return (dr); + } + + /* + * Only valid if not already dirty. + */ + ASSERT(dn->dn_object == 0 || + dn->dn_dirtyctx == DN_UNDIRTIED || dn->dn_dirtyctx == + (dmu_tx_is_syncing(tx) ? DN_DIRTY_SYNC : DN_DIRTY_OPEN)); + + ASSERT3U(dn->dn_nlevels, >, db->db_level); + ASSERT((dn->dn_phys->dn_nlevels == 0 && db->db_level == 0) || + dn->dn_phys->dn_nlevels > db->db_level || + dn->dn_next_nlevels[txgoff] > db->db_level || + dn->dn_next_nlevels[(tx->tx_txg-1) & TXG_MASK] > db->db_level || + dn->dn_next_nlevels[(tx->tx_txg-2) & TXG_MASK] > db->db_level); + + /* + * We should only be dirtying in syncing context if it's the + * mos or we're initializing the os or it's a special object. + * However, we are allowed to dirty in syncing context provided + * we already dirtied it in open context. Hence we must make + * this assertion only if we're not already dirty. + */ + os = dn->dn_objset; + ASSERT(!dmu_tx_is_syncing(tx) || DMU_OBJECT_IS_SPECIAL(dn->dn_object) || + os->os_dsl_dataset == NULL || BP_IS_HOLE(os->os_rootbp)); + ASSERT(db->db.db_size != 0); + + dprintf_dbuf(db, "size=%llx\n", (u_longlong_t)db->db.db_size); + + if (db->db_blkid != DMU_BONUS_BLKID) { + /* + * Update the accounting. + * Note: we delay "free accounting" until after we drop + * the db_mtx. This keeps us from grabbing other locks + * (and possibly deadlocking) in bp_get_dsize() while + * also holding the db_mtx. + */ + dnode_willuse_space(dn, db->db.db_size, tx); + do_free_accounting = dbuf_block_freeable(db); + } + + /* + * If this buffer is dirty in an old transaction group we need + * to make a copy of it so that the changes we make in this + * transaction group won't leak out when we sync the older txg. + */ + dr = kmem_zalloc(sizeof (dbuf_dirty_record_t), KM_SLEEP); + list_link_init(&dr->dr_dirty_node); + if (db->db_level == 0) { + void *data_old = db->db_buf; + + if (db->db_state != DB_NOFILL) { + if (db->db_blkid == DMU_BONUS_BLKID) { + dbuf_fix_old_data(db, tx->tx_txg); + data_old = db->db.db_data; + } else if (db->db.db_object != DMU_META_DNODE_OBJECT) { + /* + * Release the data buffer from the cache so + * that we can modify it without impacting + * possible other users of this cached data + * block. Note that indirect blocks and + * private objects are not released until the + * syncing state (since they are only modified + * then). + */ + arc_release(db->db_buf, db); + dbuf_fix_old_data(db, tx->tx_txg); + data_old = db->db_buf; + } + ASSERT(data_old != NULL); + } + dr->dt.dl.dr_data = data_old; + } else { + mutex_init(&dr->dt.di.dr_mtx, NULL, MUTEX_DEFAULT, NULL); + list_create(&dr->dt.di.dr_children, + sizeof (dbuf_dirty_record_t), + offsetof(dbuf_dirty_record_t, dr_dirty_node)); + } + if (db->db_blkid != DMU_BONUS_BLKID && os->os_dsl_dataset != NULL) + dr->dr_accounted = db->db.db_size; + dr->dr_dbuf = db; + dr->dr_txg = tx->tx_txg; + dr->dr_next = *drp; + *drp = dr; + + /* + * We could have been freed_in_flight between the dbuf_noread + * and dbuf_dirty. We win, as though the dbuf_noread() had + * happened after the free. + */ + if (db->db_level == 0 && db->db_blkid != DMU_BONUS_BLKID && + db->db_blkid != DMU_SPILL_BLKID) { + mutex_enter(&dn->dn_mtx); + if (dn->dn_free_ranges[txgoff] != NULL) { + range_tree_clear(dn->dn_free_ranges[txgoff], + db->db_blkid, 1); + } + mutex_exit(&dn->dn_mtx); + db->db_freed_in_flight = FALSE; + } + + /* + * This buffer is now part of this txg + */ + dbuf_add_ref(db, (void *)(uintptr_t)tx->tx_txg); + db->db_dirtycnt += 1; + ASSERT3U(db->db_dirtycnt, <=, 3); + + mutex_exit(&db->db_mtx); + + if (db->db_blkid == DMU_BONUS_BLKID || + db->db_blkid == DMU_SPILL_BLKID) { + mutex_enter(&dn->dn_mtx); + ASSERT(!list_link_active(&dr->dr_dirty_node)); + list_insert_tail(&dn->dn_dirty_records[txgoff], dr); + mutex_exit(&dn->dn_mtx); + dnode_setdirty(dn, tx); + DB_DNODE_EXIT(db); + return (dr); + } else if (do_free_accounting) { + blkptr_t *bp = db->db_blkptr; + int64_t willfree = (bp && !BP_IS_HOLE(bp)) ? + bp_get_dsize(os->os_spa, bp) : db->db.db_size; + /* + * This is only a guess -- if the dbuf is dirty + * in a previous txg, we don't know how much + * space it will use on disk yet. We should + * really have the struct_rwlock to access + * db_blkptr, but since this is just a guess, + * it's OK if we get an odd answer. + */ + ddt_prefetch(os->os_spa, bp); + dnode_willuse_space(dn, -willfree, tx); + } + + if (!RW_WRITE_HELD(&dn->dn_struct_rwlock)) { + rw_enter(&dn->dn_struct_rwlock, RW_READER); + drop_struct_lock = TRUE; + } + + if (db->db_level == 0) { + dnode_new_blkid(dn, db->db_blkid, tx, drop_struct_lock); + ASSERT(dn->dn_maxblkid >= db->db_blkid); + } + + if (db->db_level+1 < dn->dn_nlevels) { + dmu_buf_impl_t *parent = db->db_parent; + dbuf_dirty_record_t *di; + int parent_held = FALSE; + + if (db->db_parent == NULL || db->db_parent == dn->dn_dbuf) { + int epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + + parent = dbuf_hold_level(dn, db->db_level+1, + db->db_blkid >> epbs, FTAG); + ASSERT(parent != NULL); + parent_held = TRUE; + } + if (drop_struct_lock) + rw_exit(&dn->dn_struct_rwlock); + ASSERT3U(db->db_level+1, ==, parent->db_level); + di = dbuf_dirty(parent, tx); + if (parent_held) + dbuf_rele(parent, FTAG); + + mutex_enter(&db->db_mtx); + /* + * Since we've dropped the mutex, it's possible that + * dbuf_undirty() might have changed this out from under us. + */ + if (db->db_last_dirty == dr || + dn->dn_object == DMU_META_DNODE_OBJECT) { + mutex_enter(&di->dt.di.dr_mtx); + ASSERT3U(di->dr_txg, ==, tx->tx_txg); + ASSERT(!list_link_active(&dr->dr_dirty_node)); + list_insert_tail(&di->dt.di.dr_children, dr); + mutex_exit(&di->dt.di.dr_mtx); + dr->dr_parent = di; + } + mutex_exit(&db->db_mtx); + } else { + ASSERT(db->db_level+1 == dn->dn_nlevels); + ASSERT(db->db_blkid < dn->dn_nblkptr); + ASSERT(db->db_parent == NULL || db->db_parent == dn->dn_dbuf); + mutex_enter(&dn->dn_mtx); + ASSERT(!list_link_active(&dr->dr_dirty_node)); + list_insert_tail(&dn->dn_dirty_records[txgoff], dr); + mutex_exit(&dn->dn_mtx); + if (drop_struct_lock) + rw_exit(&dn->dn_struct_rwlock); + } + + dnode_setdirty(dn, tx); + DB_DNODE_EXIT(db); + return (dr); +} + +/* + * Undirty a buffer in the transaction group referenced by the given + * transaction. Return whether this evicted the dbuf. + */ +static boolean_t +dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx) +{ + dnode_t *dn; + uint64_t txg = tx->tx_txg; + dbuf_dirty_record_t *dr, **drp; + + ASSERT(txg != 0); + + /* + * Due to our use of dn_nlevels below, this can only be called + * in open context, unless we are operating on the MOS. + * From syncing context, dn_nlevels may be different from the + * dn_nlevels used when dbuf was dirtied. + */ + ASSERT(db->db_objset == + dmu_objset_pool(db->db_objset)->dp_meta_objset || + txg != spa_syncing_txg(dmu_objset_spa(db->db_objset))); + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + ASSERT0(db->db_level); + ASSERT(MUTEX_HELD(&db->db_mtx)); + + /* + * If this buffer is not dirty, we're done. + */ + for (drp = &db->db_last_dirty; (dr = *drp) != NULL; drp = &dr->dr_next) + if (dr->dr_txg <= txg) + break; + if (dr == NULL || dr->dr_txg < txg) + return (B_FALSE); + ASSERT(dr->dr_txg == txg); + ASSERT(dr->dr_dbuf == db); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + dprintf_dbuf(db, "size=%llx\n", (u_longlong_t)db->db.db_size); + + ASSERT(db->db.db_size != 0); + + dsl_pool_undirty_space(dmu_objset_pool(dn->dn_objset), + dr->dr_accounted, txg); + + *drp = dr->dr_next; + + /* + * Note that there are three places in dbuf_dirty() + * where this dirty record may be put on a list. + * Make sure to do a list_remove corresponding to + * every one of those list_insert calls. + */ + if (dr->dr_parent) { + mutex_enter(&dr->dr_parent->dt.di.dr_mtx); + list_remove(&dr->dr_parent->dt.di.dr_children, dr); + mutex_exit(&dr->dr_parent->dt.di.dr_mtx); + } else if (db->db_blkid == DMU_SPILL_BLKID || + db->db_level + 1 == dn->dn_nlevels) { + ASSERT(db->db_blkptr == NULL || db->db_parent == dn->dn_dbuf); + mutex_enter(&dn->dn_mtx); + list_remove(&dn->dn_dirty_records[txg & TXG_MASK], dr); + mutex_exit(&dn->dn_mtx); + } + DB_DNODE_EXIT(db); + + if (db->db_state != DB_NOFILL) { + dbuf_unoverride(dr); + + ASSERT(db->db_buf != NULL); + ASSERT(dr->dt.dl.dr_data != NULL); + if (dr->dt.dl.dr_data != db->db_buf) + VERIFY(arc_buf_remove_ref(dr->dt.dl.dr_data, db)); + } + + kmem_free(dr, sizeof (dbuf_dirty_record_t)); + + ASSERT(db->db_dirtycnt > 0); + db->db_dirtycnt -= 1; + + if (refcount_remove(&db->db_holds, (void *)(uintptr_t)txg) == 0) { + arc_buf_t *buf = db->db_buf; + + ASSERT(db->db_state == DB_NOFILL || arc_released(buf)); + dbuf_clear_data(db); + VERIFY(arc_buf_remove_ref(buf, db)); + dbuf_evict(db); + return (B_TRUE); + } + + return (B_FALSE); +} + +void +dmu_buf_will_dirty(dmu_buf_t *db_fake, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + int rf = DB_RF_MUST_SUCCEED | DB_RF_NOPREFETCH; + + ASSERT(tx->tx_txg != 0); + ASSERT(!refcount_is_zero(&db->db_holds)); + + DB_DNODE_ENTER(db); + if (RW_WRITE_HELD(&DB_DNODE(db)->dn_struct_rwlock)) + rf |= DB_RF_HAVESTRUCT; + DB_DNODE_EXIT(db); + (void) dbuf_read(db, NULL, rf); + (void) dbuf_dirty(db, tx); +} + +void +dmu_buf_will_not_fill(dmu_buf_t *db_fake, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + db->db_state = DB_NOFILL; + + dmu_buf_will_fill(db_fake, tx); +} + +void +dmu_buf_will_fill(dmu_buf_t *db_fake, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + ASSERT(tx->tx_txg != 0); + ASSERT(db->db_level == 0); + ASSERT(!refcount_is_zero(&db->db_holds)); + + ASSERT(db->db.db_object != DMU_META_DNODE_OBJECT || + dmu_tx_private_ok(tx)); + + dbuf_noread(db); + (void) dbuf_dirty(db, tx); +} + +#pragma weak dmu_buf_fill_done = dbuf_fill_done +/* ARGSUSED */ +void +dbuf_fill_done(dmu_buf_impl_t *db, dmu_tx_t *tx) +{ + mutex_enter(&db->db_mtx); + DBUF_VERIFY(db); + + if (db->db_state == DB_FILL) { + if (db->db_level == 0 && db->db_freed_in_flight) { + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + /* we were freed while filling */ + /* XXX dbuf_undirty? */ + bzero(db->db.db_data, db->db.db_size); + db->db_freed_in_flight = FALSE; + } + db->db_state = DB_CACHED; + cv_broadcast(&db->db_changed); + } + mutex_exit(&db->db_mtx); +} + +void +dmu_buf_write_embedded(dmu_buf_t *dbuf, void *data, + bp_embedded_type_t etype, enum zio_compress comp, + int uncompressed_size, int compressed_size, int byteorder, + dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)dbuf; + struct dirty_leaf *dl; + dmu_object_type_t type; + + DB_DNODE_ENTER(db); + type = DB_DNODE(db)->dn_type; + DB_DNODE_EXIT(db); + + ASSERT0(db->db_level); + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + + dmu_buf_will_not_fill(dbuf, tx); + + ASSERT3U(db->db_last_dirty->dr_txg, ==, tx->tx_txg); + dl = &db->db_last_dirty->dt.dl; + encode_embedded_bp_compressed(&dl->dr_overridden_by, + data, comp, uncompressed_size, compressed_size); + BPE_SET_ETYPE(&dl->dr_overridden_by, etype); + BP_SET_TYPE(&dl->dr_overridden_by, type); + BP_SET_LEVEL(&dl->dr_overridden_by, 0); + BP_SET_BYTEORDER(&dl->dr_overridden_by, byteorder); + + dl->dr_override_state = DR_OVERRIDDEN; + dl->dr_overridden_by.blk_birth = db->db_last_dirty->dr_txg; +} + +/* + * Directly assign a provided arc buf to a given dbuf if it's not referenced + * by anybody except our caller. Otherwise copy arcbuf's contents to dbuf. + */ +void +dbuf_assign_arcbuf(dmu_buf_impl_t *db, arc_buf_t *buf, dmu_tx_t *tx) +{ + ASSERT(!refcount_is_zero(&db->db_holds)); + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + ASSERT(db->db_level == 0); + ASSERT(DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA); + ASSERT(buf != NULL); + ASSERT(arc_buf_size(buf) == db->db.db_size); + ASSERT(tx->tx_txg != 0); + + arc_return_buf(buf, db); + ASSERT(arc_released(buf)); + + mutex_enter(&db->db_mtx); + + while (db->db_state == DB_READ || db->db_state == DB_FILL) + cv_wait(&db->db_changed, &db->db_mtx); + + ASSERT(db->db_state == DB_CACHED || db->db_state == DB_UNCACHED); + + if (db->db_state == DB_CACHED && + refcount_count(&db->db_holds) - 1 > db->db_dirtycnt) { + mutex_exit(&db->db_mtx); + (void) dbuf_dirty(db, tx); + bcopy(buf->b_data, db->db.db_data, db->db.db_size); + VERIFY(arc_buf_remove_ref(buf, db)); + xuio_stat_wbuf_copied(); + return; + } + + xuio_stat_wbuf_nocopy(); + if (db->db_state == DB_CACHED) { + dbuf_dirty_record_t *dr = db->db_last_dirty; + + ASSERT(db->db_buf != NULL); + if (dr != NULL && dr->dr_txg == tx->tx_txg) { + ASSERT(dr->dt.dl.dr_data == db->db_buf); + if (!arc_released(db->db_buf)) { + ASSERT(dr->dt.dl.dr_override_state == + DR_OVERRIDDEN); + arc_release(db->db_buf, db); + } + dr->dt.dl.dr_data = buf; + VERIFY(arc_buf_remove_ref(db->db_buf, db)); + } else if (dr == NULL || dr->dt.dl.dr_data != db->db_buf) { + arc_release(db->db_buf, db); + VERIFY(arc_buf_remove_ref(db->db_buf, db)); + } + db->db_buf = NULL; + } + ASSERT(db->db_buf == NULL); + dbuf_set_data(db, buf); + db->db_state = DB_FILL; + mutex_exit(&db->db_mtx); + (void) dbuf_dirty(db, tx); + dmu_buf_fill_done(&db->db, tx); +} + +/* + * "Clear" the contents of this dbuf. This will mark the dbuf + * EVICTING and clear *most* of its references. Unfortunately, + * when we are not holding the dn_dbufs_mtx, we can't clear the + * entry in the dn_dbufs list. We have to wait until dbuf_destroy() + * in this case. For callers from the DMU we will usually see: + * dbuf_clear()->arc_clear_callback()->dbuf_do_evict()->dbuf_destroy() + * For the arc callback, we will usually see: + * dbuf_do_evict()->dbuf_clear();dbuf_destroy() + * Sometimes, though, we will get a mix of these two: + * DMU: dbuf_clear()->arc_clear_callback() + * ARC: dbuf_do_evict()->dbuf_destroy() + * + * This routine will dissociate the dbuf from the arc, by calling + * arc_clear_callback(), but will not evict the data from the ARC. + */ +void +dbuf_clear(dmu_buf_impl_t *db) +{ + dnode_t *dn; + dmu_buf_impl_t *parent = db->db_parent; + dmu_buf_impl_t *dndb; + boolean_t dbuf_gone = B_FALSE; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(refcount_is_zero(&db->db_holds)); + + dbuf_evict_user(db); + + if (db->db_state == DB_CACHED) { + ASSERT(db->db.db_data != NULL); + if (db->db_blkid == DMU_BONUS_BLKID) { + zio_buf_free(db->db.db_data, DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); + } + db->db.db_data = NULL; + db->db_state = DB_UNCACHED; + } + + ASSERT(db->db_state == DB_UNCACHED || db->db_state == DB_NOFILL); + ASSERT(db->db_data_pending == NULL); + + db->db_state = DB_EVICTING; + db->db_blkptr = NULL; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + dndb = dn->dn_dbuf; + if (db->db_blkid != DMU_BONUS_BLKID && MUTEX_HELD(&dn->dn_dbufs_mtx)) { + avl_remove(&dn->dn_dbufs, db); + atomic_dec_32(&dn->dn_dbufs_count); + membar_producer(); + DB_DNODE_EXIT(db); + /* + * Decrementing the dbuf count means that the hold corresponding + * to the removed dbuf is no longer discounted in dnode_move(), + * so the dnode cannot be moved until after we release the hold. + * The membar_producer() ensures visibility of the decremented + * value in dnode_move(), since DB_DNODE_EXIT doesn't actually + * release any lock. + */ + dnode_rele(dn, db); + db->db_dnode_handle = NULL; + } else { + DB_DNODE_EXIT(db); + } + + if (db->db_buf) + dbuf_gone = arc_clear_callback(db->db_buf); + + if (!dbuf_gone) + mutex_exit(&db->db_mtx); + + /* + * If this dbuf is referenced from an indirect dbuf, + * decrement the ref count on the indirect dbuf. + */ + if (parent && parent != dndb) + dbuf_rele(parent, db); +} + +__attribute__((always_inline)) +static inline int +dbuf_findbp(dnode_t *dn, int level, uint64_t blkid, int fail_sparse, + dmu_buf_impl_t **parentp, blkptr_t **bpp, struct dbuf_hold_impl_data *dh) +{ + int nlevels, epbs; + + *parentp = NULL; + *bpp = NULL; + + ASSERT(blkid != DMU_BONUS_BLKID); + + if (blkid == DMU_SPILL_BLKID) { + mutex_enter(&dn->dn_mtx); + if (dn->dn_have_spill && + (dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR)) + *bpp = &dn->dn_phys->dn_spill; + else + *bpp = NULL; + dbuf_add_ref(dn->dn_dbuf, NULL); + *parentp = dn->dn_dbuf; + mutex_exit(&dn->dn_mtx); + return (0); + } + + if (dn->dn_phys->dn_nlevels == 0) + nlevels = 1; + else + nlevels = dn->dn_phys->dn_nlevels; + + epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + + ASSERT3U(level * epbs, <, 64); + ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); + if (level >= nlevels || + (blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs)))) { + /* the buffer has no parent yet */ + return (SET_ERROR(ENOENT)); + } else if (level < nlevels-1) { + /* this block is referenced from an indirect block */ + int err; + if (dh == NULL) { + err = dbuf_hold_impl(dn, level+1, blkid >> epbs, + fail_sparse, NULL, parentp); + } else { + __dbuf_hold_impl_init(dh + 1, dn, dh->dh_level + 1, + blkid >> epbs, fail_sparse, NULL, + parentp, dh->dh_depth + 1); + err = __dbuf_hold_impl(dh + 1); + } + if (err) + return (err); + err = dbuf_read(*parentp, NULL, + (DB_RF_HAVESTRUCT | DB_RF_NOPREFETCH | DB_RF_CANFAIL)); + if (err) { + dbuf_rele(*parentp, NULL); + *parentp = NULL; + return (err); + } + *bpp = ((blkptr_t *)(*parentp)->db.db_data) + + (blkid & ((1ULL << epbs) - 1)); + return (0); + } else { + /* the block is referenced from the dnode */ + ASSERT3U(level, ==, nlevels-1); + ASSERT(dn->dn_phys->dn_nblkptr == 0 || + blkid < dn->dn_phys->dn_nblkptr); + if (dn->dn_dbuf) { + dbuf_add_ref(dn->dn_dbuf, NULL); + *parentp = dn->dn_dbuf; + } + *bpp = &dn->dn_phys->dn_blkptr[blkid]; + return (0); + } +} + +static dmu_buf_impl_t * +dbuf_create(dnode_t *dn, uint8_t level, uint64_t blkid, + dmu_buf_impl_t *parent, blkptr_t *blkptr) +{ + objset_t *os = dn->dn_objset; + dmu_buf_impl_t *db, *odb; + + ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); + ASSERT(dn->dn_type != DMU_OT_NONE); + + db = kmem_cache_alloc(dbuf_cache, KM_SLEEP); + + db->db_objset = os; + db->db.db_object = dn->dn_object; + db->db_level = level; + db->db_blkid = blkid; + db->db_last_dirty = NULL; + db->db_dirtycnt = 0; + db->db_dnode_handle = dn->dn_handle; + db->db_parent = parent; + db->db_blkptr = blkptr; + + db->db_user = NULL; + db->db_user_immediate_evict = FALSE; + db->db_freed_in_flight = FALSE; + db->db_pending_evict = FALSE; + + if (blkid == DMU_BONUS_BLKID) { + ASSERT3P(parent, ==, dn->dn_dbuf); + db->db.db_size = DN_MAX_BONUSLEN - + (dn->dn_nblkptr-1) * sizeof (blkptr_t); + ASSERT3U(db->db.db_size, >=, dn->dn_bonuslen); + db->db.db_offset = DMU_BONUS_BLKID; + db->db_state = DB_UNCACHED; + /* the bonus dbuf is not placed in the hash table */ + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); + return (db); + } else if (blkid == DMU_SPILL_BLKID) { + db->db.db_size = (blkptr != NULL) ? + BP_GET_LSIZE(blkptr) : SPA_MINBLOCKSIZE; + db->db.db_offset = 0; + } else { + int blocksize = + db->db_level ? 1 << dn->dn_indblkshift : dn->dn_datablksz; + db->db.db_size = blocksize; + db->db.db_offset = db->db_blkid * blocksize; + } + + /* + * Hold the dn_dbufs_mtx while we get the new dbuf + * in the hash table *and* added to the dbufs list. + * This prevents a possible deadlock with someone + * trying to look up this dbuf before its added to the + * dn_dbufs list. + */ + mutex_enter(&dn->dn_dbufs_mtx); + db->db_state = DB_EVICTING; + if ((odb = dbuf_hash_insert(db)) != NULL) { + /* someone else inserted it first */ + kmem_cache_free(dbuf_cache, db); + mutex_exit(&dn->dn_dbufs_mtx); + return (odb); + } + avl_add(&dn->dn_dbufs, db); + if (db->db_level == 0 && db->db_blkid >= + dn->dn_unlisted_l0_blkid) + dn->dn_unlisted_l0_blkid = db->db_blkid + 1; + db->db_state = DB_UNCACHED; + mutex_exit(&dn->dn_dbufs_mtx); + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); + + if (parent && parent != dn->dn_dbuf) + dbuf_add_ref(parent, db); + + ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT || + refcount_count(&dn->dn_holds) > 0); + (void) refcount_add(&dn->dn_holds, db); + atomic_inc_32(&dn->dn_dbufs_count); + + dprintf_dbuf(db, "db=%p\n", db); + + return (db); +} + +static int +dbuf_do_evict(void *private) +{ + dmu_buf_impl_t *db = private; + + if (!MUTEX_HELD(&db->db_mtx)) + mutex_enter(&db->db_mtx); + + ASSERT(refcount_is_zero(&db->db_holds)); + + if (db->db_state != DB_EVICTING) { + ASSERT(db->db_state == DB_CACHED); + DBUF_VERIFY(db); + db->db_buf = NULL; + dbuf_evict(db); + } else { + mutex_exit(&db->db_mtx); + dbuf_destroy(db); + } + return (0); +} + +static void +dbuf_destroy(dmu_buf_impl_t *db) +{ + ASSERT(refcount_is_zero(&db->db_holds)); + + if (db->db_blkid != DMU_BONUS_BLKID) { + /* + * If this dbuf is still on the dn_dbufs list, + * remove it from that list. + */ + if (db->db_dnode_handle != NULL) { + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + mutex_enter(&dn->dn_dbufs_mtx); + avl_remove(&dn->dn_dbufs, db); + atomic_dec_32(&dn->dn_dbufs_count); + mutex_exit(&dn->dn_dbufs_mtx); + DB_DNODE_EXIT(db); + /* + * Decrementing the dbuf count means that the hold + * corresponding to the removed dbuf is no longer + * discounted in dnode_move(), so the dnode cannot be + * moved until after we release the hold. + */ + dnode_rele(dn, db); + db->db_dnode_handle = NULL; + } + dbuf_hash_remove(db); + } + db->db_parent = NULL; + db->db_buf = NULL; + + ASSERT(db->db.db_data == NULL); + ASSERT(db->db_hash_next == NULL); + ASSERT(db->db_blkptr == NULL); + ASSERT(db->db_data_pending == NULL); + + kmem_cache_free(dbuf_cache, db); + arc_space_return(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); +} + +void +dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) +{ + dmu_buf_impl_t *db = NULL; + blkptr_t *bp = NULL; + + ASSERT(blkid != DMU_BONUS_BLKID); + ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); + + if (dnode_block_freed(dn, blkid)) + return; + + /* dbuf_find() returns with db_mtx held */ + if ((db = dbuf_find(dn->dn_objset, dn->dn_object, 0, blkid))) { + /* + * This dbuf is already in the cache. We assume that + * it is already CACHED, or else about to be either + * read or filled. + */ + mutex_exit(&db->db_mtx); + return; + } + + if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp, NULL) == 0) { + if (bp && !BP_IS_HOLE(bp) && !BP_IS_EMBEDDED(bp)) { + dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; + arc_flags_t aflags = + ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; + zbookmark_phys_t zb; + + SET_BOOKMARK(&zb, ds ? ds->ds_object : DMU_META_OBJSET, + dn->dn_object, 0, blkid); + + (void) arc_read(NULL, dn->dn_objset->os_spa, + bp, NULL, NULL, prio, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, + &aflags, &zb); + } + if (db) + dbuf_rele(db, NULL); + } +} + +#define DBUF_HOLD_IMPL_MAX_DEPTH 20 + +/* + * Returns with db_holds incremented, and db_mtx not held. + * Note: dn_struct_rwlock must be held. + */ +static int +__dbuf_hold_impl(struct dbuf_hold_impl_data *dh) +{ + ASSERT3S(dh->dh_depth, <, DBUF_HOLD_IMPL_MAX_DEPTH); + dh->dh_parent = NULL; + + ASSERT(dh->dh_blkid != DMU_BONUS_BLKID); + ASSERT(RW_LOCK_HELD(&dh->dh_dn->dn_struct_rwlock)); + ASSERT3U(dh->dh_dn->dn_nlevels, >, dh->dh_level); + + *(dh->dh_dbp) = NULL; +top: + /* dbuf_find() returns with db_mtx held */ + dh->dh_db = dbuf_find(dh->dh_dn->dn_objset, dh->dh_dn->dn_object, + dh->dh_level, dh->dh_blkid); + + if (dh->dh_db == NULL) { + dh->dh_bp = NULL; + + ASSERT3P(dh->dh_parent, ==, NULL); + dh->dh_err = dbuf_findbp(dh->dh_dn, dh->dh_level, dh->dh_blkid, + dh->dh_fail_sparse, &dh->dh_parent, + &dh->dh_bp, dh); + if (dh->dh_fail_sparse) { + if (dh->dh_err == 0 && + dh->dh_bp && BP_IS_HOLE(dh->dh_bp)) + dh->dh_err = SET_ERROR(ENOENT); + if (dh->dh_err) { + if (dh->dh_parent) + dbuf_rele(dh->dh_parent, NULL); + return (dh->dh_err); + } + } + if (dh->dh_err && dh->dh_err != ENOENT) + return (dh->dh_err); + dh->dh_db = dbuf_create(dh->dh_dn, dh->dh_level, dh->dh_blkid, + dh->dh_parent, dh->dh_bp); + } + + if (dh->dh_db->db_buf && refcount_is_zero(&dh->dh_db->db_holds)) { + arc_buf_add_ref(dh->dh_db->db_buf, dh->dh_db); + if (dh->dh_db->db_buf->b_data == NULL) { + dbuf_clear(dh->dh_db); + if (dh->dh_parent) { + dbuf_rele(dh->dh_parent, NULL); + dh->dh_parent = NULL; + } + goto top; + } + ASSERT3P(dh->dh_db->db.db_data, ==, dh->dh_db->db_buf->b_data); + } + + ASSERT(dh->dh_db->db_buf == NULL || arc_referenced(dh->dh_db->db_buf)); + + /* + * If this buffer is currently syncing out, and we are are + * still referencing it from db_data, we need to make a copy + * of it in case we decide we want to dirty it again in this txg. + */ + if (dh->dh_db->db_level == 0 && + dh->dh_db->db_blkid != DMU_BONUS_BLKID && + dh->dh_dn->dn_object != DMU_META_DNODE_OBJECT && + dh->dh_db->db_state == DB_CACHED && dh->dh_db->db_data_pending) { + dh->dh_dr = dh->dh_db->db_data_pending; + + if (dh->dh_dr->dt.dl.dr_data == dh->dh_db->db_buf) { + dh->dh_type = DBUF_GET_BUFC_TYPE(dh->dh_db); + + dbuf_set_data(dh->dh_db, + arc_buf_alloc(dh->dh_dn->dn_objset->os_spa, + dh->dh_db->db.db_size, dh->dh_db, dh->dh_type)); + bcopy(dh->dh_dr->dt.dl.dr_data->b_data, + dh->dh_db->db.db_data, dh->dh_db->db.db_size); + } + } + + (void) refcount_add(&dh->dh_db->db_holds, dh->dh_tag); + DBUF_VERIFY(dh->dh_db); + mutex_exit(&dh->dh_db->db_mtx); + + /* NOTE: we can't rele the parent until after we drop the db_mtx */ + if (dh->dh_parent) + dbuf_rele(dh->dh_parent, NULL); + + ASSERT3P(DB_DNODE(dh->dh_db), ==, dh->dh_dn); + ASSERT3U(dh->dh_db->db_blkid, ==, dh->dh_blkid); + ASSERT3U(dh->dh_db->db_level, ==, dh->dh_level); + *(dh->dh_dbp) = dh->dh_db; + + return (0); +} + +/* + * The following code preserves the recursive function dbuf_hold_impl() + * but moves the local variables AND function arguments to the heap to + * minimize the stack frame size. Enough space is initially allocated + * on the stack for 20 levels of recursion. + */ +int +dbuf_hold_impl(dnode_t *dn, uint8_t level, uint64_t blkid, int fail_sparse, + void *tag, dmu_buf_impl_t **dbp) +{ + struct dbuf_hold_impl_data *dh; + int error; + + dh = kmem_zalloc(sizeof (struct dbuf_hold_impl_data) * + DBUF_HOLD_IMPL_MAX_DEPTH, KM_SLEEP); + __dbuf_hold_impl_init(dh, dn, level, blkid, fail_sparse, tag, dbp, 0); + + error = __dbuf_hold_impl(dh); + + kmem_free(dh, sizeof (struct dbuf_hold_impl_data) * + DBUF_HOLD_IMPL_MAX_DEPTH); + + return (error); +} + +static void +__dbuf_hold_impl_init(struct dbuf_hold_impl_data *dh, + dnode_t *dn, uint8_t level, uint64_t blkid, int fail_sparse, + void *tag, dmu_buf_impl_t **dbp, int depth) +{ + dh->dh_dn = dn; + dh->dh_level = level; + dh->dh_blkid = blkid; + dh->dh_fail_sparse = fail_sparse; + dh->dh_tag = tag; + dh->dh_dbp = dbp; + dh->dh_depth = depth; +} + +dmu_buf_impl_t * +dbuf_hold(dnode_t *dn, uint64_t blkid, void *tag) +{ + dmu_buf_impl_t *db; + int err = dbuf_hold_impl(dn, 0, blkid, FALSE, tag, &db); + return (err ? NULL : db); +} + +dmu_buf_impl_t * +dbuf_hold_level(dnode_t *dn, int level, uint64_t blkid, void *tag) +{ + dmu_buf_impl_t *db; + int err = dbuf_hold_impl(dn, level, blkid, FALSE, tag, &db); + return (err ? NULL : db); +} + +void +dbuf_create_bonus(dnode_t *dn) +{ + ASSERT(RW_WRITE_HELD(&dn->dn_struct_rwlock)); + + ASSERT(dn->dn_bonus == NULL); + dn->dn_bonus = dbuf_create(dn, 0, DMU_BONUS_BLKID, dn->dn_dbuf, NULL); +} + +int +dbuf_spill_set_blksz(dmu_buf_t *db_fake, uint64_t blksz, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + + if (db->db_blkid != DMU_SPILL_BLKID) + return (SET_ERROR(ENOTSUP)); + if (blksz == 0) + blksz = SPA_MINBLOCKSIZE; + ASSERT3U(blksz, <=, spa_maxblocksize(dmu_objset_spa(db->db_objset))); + blksz = P2ROUNDUP(blksz, SPA_MINBLOCKSIZE); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + dbuf_new_size(db, blksz, tx); + rw_exit(&dn->dn_struct_rwlock); + DB_DNODE_EXIT(db); + + return (0); +} + +void +dbuf_rm_spill(dnode_t *dn, dmu_tx_t *tx) +{ + dbuf_free_range(dn, DMU_SPILL_BLKID, DMU_SPILL_BLKID, tx); +} + +#pragma weak dmu_buf_add_ref = dbuf_add_ref +void +dbuf_add_ref(dmu_buf_impl_t *db, void *tag) +{ + VERIFY(refcount_add(&db->db_holds, tag) > 1); +} + +#pragma weak dmu_buf_try_add_ref = dbuf_try_add_ref +boolean_t +dbuf_try_add_ref(dmu_buf_t *db_fake, objset_t *os, uint64_t obj, uint64_t blkid, + void *tag) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dmu_buf_impl_t *found_db; + boolean_t result = B_FALSE; + + if (blkid == DMU_BONUS_BLKID) + found_db = dbuf_find_bonus(os, obj); + else + found_db = dbuf_find(os, obj, 0, blkid); + + if (found_db != NULL) { + if (db == found_db && dbuf_refcount(db) > db->db_dirtycnt) { + (void) refcount_add(&db->db_holds, tag); + result = B_TRUE; + } + mutex_exit(&found_db->db_mtx); + } + return (result); +} + +/* + * If you call dbuf_rele() you had better not be referencing the dnode handle + * unless you have some other direct or indirect hold on the dnode. (An indirect + * hold is a hold on one of the dnode's dbufs, including the bonus buffer.) + * Without that, the dbuf_rele() could lead to a dnode_rele() followed by the + * dnode's parent dbuf evicting its dnode handles. + */ +void +dbuf_rele(dmu_buf_impl_t *db, void *tag) +{ + mutex_enter(&db->db_mtx); + dbuf_rele_and_unlock(db, tag); +} + +void +dmu_buf_rele(dmu_buf_t *db, void *tag) +{ + dbuf_rele((dmu_buf_impl_t *)db, tag); +} + +/* + * dbuf_rele() for an already-locked dbuf. This is necessary to allow + * db_dirtycnt and db_holds to be updated atomically. + */ +void +dbuf_rele_and_unlock(dmu_buf_impl_t *db, void *tag) +{ + int64_t holds; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + DBUF_VERIFY(db); + + /* + * Remove the reference to the dbuf before removing its hold on the + * dnode so we can guarantee in dnode_move() that a referenced bonus + * buffer has a corresponding dnode hold. + */ + holds = refcount_remove(&db->db_holds, tag); + ASSERT(holds >= 0); + + /* + * We can't freeze indirects if there is a possibility that they + * may be modified in the current syncing context. + */ + if (db->db_buf && holds == (db->db_level == 0 ? db->db_dirtycnt : 0)) + arc_buf_freeze(db->db_buf); + + if (holds == db->db_dirtycnt && + db->db_level == 0 && db->db_user_immediate_evict) + dbuf_evict_user(db); + + if (holds == 0) { + if (db->db_blkid == DMU_BONUS_BLKID) { + dnode_t *dn; + boolean_t evict_dbuf = db->db_pending_evict; + + /* + * If the dnode moves here, we cannot cross this + * barrier until the move completes. + */ + DB_DNODE_ENTER(db); + + dn = DB_DNODE(db); + atomic_dec_32(&dn->dn_dbufs_count); + + /* + * Decrementing the dbuf count means that the bonus + * buffer's dnode hold is no longer discounted in + * dnode_move(). The dnode cannot move until after + * the dnode_rele() below. + */ + DB_DNODE_EXIT(db); + + /* + * Do not reference db after its lock is dropped. + * Another thread may evict it. + */ + mutex_exit(&db->db_mtx); + + if (evict_dbuf) + dnode_evict_bonus(dn); + + dnode_rele(dn, db); + } else if (db->db_buf == NULL) { + /* + * This is a special case: we never associated this + * dbuf with any data allocated from the ARC. + */ + ASSERT(db->db_state == DB_UNCACHED || + db->db_state == DB_NOFILL); + dbuf_evict(db); + } else if (arc_released(db->db_buf)) { + arc_buf_t *buf = db->db_buf; + /* + * This dbuf has anonymous data associated with it. + */ + dbuf_clear_data(db); + VERIFY(arc_buf_remove_ref(buf, db)); + dbuf_evict(db); + } else { + VERIFY(!arc_buf_remove_ref(db->db_buf, db)); + + /* + * A dbuf will be eligible for eviction if either the + * 'primarycache' property is set or a duplicate + * copy of this buffer is already cached in the arc. + * + * In the case of the 'primarycache' a buffer + * is considered for eviction if it matches the + * criteria set in the property. + * + * To decide if our buffer is considered a + * duplicate, we must call into the arc to determine + * if multiple buffers are referencing the same + * block on-disk. If so, then we simply evict + * ourselves. + */ + if (!DBUF_IS_CACHEABLE(db)) { + if (db->db_blkptr != NULL && + !BP_IS_HOLE(db->db_blkptr) && + !BP_IS_EMBEDDED(db->db_blkptr)) { + spa_t *spa = + dmu_objset_spa(db->db_objset); + blkptr_t bp = *db->db_blkptr; + dbuf_clear(db); + arc_freed(spa, &bp); + } else { + dbuf_clear(db); + } + } else if (db->db_pending_evict || + arc_buf_eviction_needed(db->db_buf)) { + dbuf_clear(db); + } else { + mutex_exit(&db->db_mtx); + } + } + } else { + mutex_exit(&db->db_mtx); + } +} + +#pragma weak dmu_buf_refcount = dbuf_refcount +uint64_t +dbuf_refcount(dmu_buf_impl_t *db) +{ + return (refcount_count(&db->db_holds)); +} + +void * +dmu_buf_replace_user(dmu_buf_t *db_fake, dmu_buf_user_t *old_user, + dmu_buf_user_t *new_user) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + mutex_enter(&db->db_mtx); + dbuf_verify_user(db, DBVU_NOT_EVICTING); + if (db->db_user == old_user) + db->db_user = new_user; + else + old_user = db->db_user; + dbuf_verify_user(db, DBVU_NOT_EVICTING); + mutex_exit(&db->db_mtx); + + return (old_user); +} + +void * +dmu_buf_set_user(dmu_buf_t *db_fake, dmu_buf_user_t *user) +{ + return (dmu_buf_replace_user(db_fake, NULL, user)); +} + +void * +dmu_buf_set_user_ie(dmu_buf_t *db_fake, dmu_buf_user_t *user) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + db->db_user_immediate_evict = TRUE; + return (dmu_buf_set_user(db_fake, user)); +} + +void * +dmu_buf_remove_user(dmu_buf_t *db_fake, dmu_buf_user_t *user) +{ + return (dmu_buf_replace_user(db_fake, user, NULL)); +} + +void * +dmu_buf_get_user(dmu_buf_t *db_fake) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + dbuf_verify_user(db, DBVU_NOT_EVICTING); + return (db->db_user); +} + +void +dmu_buf_user_evict_wait() +{ + taskq_wait(dbu_evict_taskq); +} + +boolean_t +dmu_buf_freeable(dmu_buf_t *dbuf) +{ + boolean_t res = B_FALSE; + dmu_buf_impl_t *db = (dmu_buf_impl_t *)dbuf; + + if (db->db_blkptr) + res = dsl_dataset_block_freeable(db->db_objset->os_dsl_dataset, + db->db_blkptr, db->db_blkptr->blk_birth); + + return (res); +} + +blkptr_t * +dmu_buf_get_blkptr(dmu_buf_t *db) +{ + dmu_buf_impl_t *dbi = (dmu_buf_impl_t *)db; + return (dbi->db_blkptr); +} + +static void +dbuf_check_blkptr(dnode_t *dn, dmu_buf_impl_t *db) +{ + /* ASSERT(dmu_tx_is_syncing(tx) */ + ASSERT(MUTEX_HELD(&db->db_mtx)); + + if (db->db_blkptr != NULL) + return; + + if (db->db_blkid == DMU_SPILL_BLKID) { + db->db_blkptr = &dn->dn_phys->dn_spill; + BP_ZERO(db->db_blkptr); + return; + } + if (db->db_level == dn->dn_phys->dn_nlevels-1) { + /* + * This buffer was allocated at a time when there was + * no available blkptrs from the dnode, or it was + * inappropriate to hook it in (i.e., nlevels mis-match). + */ + ASSERT(db->db_blkid < dn->dn_phys->dn_nblkptr); + ASSERT(db->db_parent == NULL); + db->db_parent = dn->dn_dbuf; + db->db_blkptr = &dn->dn_phys->dn_blkptr[db->db_blkid]; + DBUF_VERIFY(db); + } else { + dmu_buf_impl_t *parent = db->db_parent; + int epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; + + ASSERT(dn->dn_phys->dn_nlevels > 1); + if (parent == NULL) { + mutex_exit(&db->db_mtx); + rw_enter(&dn->dn_struct_rwlock, RW_READER); + (void) dbuf_hold_impl(dn, db->db_level+1, + db->db_blkid >> epbs, FALSE, db, &parent); + rw_exit(&dn->dn_struct_rwlock); + mutex_enter(&db->db_mtx); + db->db_parent = parent; + } + db->db_blkptr = (blkptr_t *)parent->db.db_data + + (db->db_blkid & ((1ULL << epbs) - 1)); + DBUF_VERIFY(db); + } +} + +/* + * dbuf_sync_indirect() is called recursively from dbuf_sync_list() so it + * is critical the we not allow the compiler to inline this function in to + * dbuf_sync_list() thereby drastically bloating the stack usage. + */ +noinline static void +dbuf_sync_indirect(dbuf_dirty_record_t *dr, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = dr->dr_dbuf; + dnode_t *dn; + zio_t *zio; + + ASSERT(dmu_tx_is_syncing(tx)); + + dprintf_dbuf_bp(db, db->db_blkptr, "blkptr=%p", db->db_blkptr); + + mutex_enter(&db->db_mtx); + + ASSERT(db->db_level > 0); + DBUF_VERIFY(db); + + /* Read the block if it hasn't been read yet. */ + if (db->db_buf == NULL) { + mutex_exit(&db->db_mtx); + (void) dbuf_read(db, NULL, DB_RF_MUST_SUCCEED); + mutex_enter(&db->db_mtx); + } + ASSERT3U(db->db_state, ==, DB_CACHED); + ASSERT(db->db_buf != NULL); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + /* Indirect block size must match what the dnode thinks it is. */ + ASSERT3U(db->db.db_size, ==, 1<dn_phys->dn_indblkshift); + dbuf_check_blkptr(dn, db); + DB_DNODE_EXIT(db); + + /* Provide the pending dirty record to child dbufs */ + db->db_data_pending = dr; + + mutex_exit(&db->db_mtx); + dbuf_write(dr, db->db_buf, tx); + + zio = dr->dr_zio; + mutex_enter(&dr->dt.di.dr_mtx); + dbuf_sync_list(&dr->dt.di.dr_children, db->db_level - 1, tx); + ASSERT(list_head(&dr->dt.di.dr_children) == NULL); + mutex_exit(&dr->dt.di.dr_mtx); + zio_nowait(zio); +} + +/* + * dbuf_sync_leaf() is called recursively from dbuf_sync_list() so it is + * critical the we not allow the compiler to inline this function in to + * dbuf_sync_list() thereby drastically bloating the stack usage. + */ +noinline static void +dbuf_sync_leaf(dbuf_dirty_record_t *dr, dmu_tx_t *tx) +{ + arc_buf_t **datap = &dr->dt.dl.dr_data; + dmu_buf_impl_t *db = dr->dr_dbuf; + dnode_t *dn; + objset_t *os; + uint64_t txg = tx->tx_txg; + + ASSERT(dmu_tx_is_syncing(tx)); + + dprintf_dbuf_bp(db, db->db_blkptr, "blkptr=%p", db->db_blkptr); + + mutex_enter(&db->db_mtx); + /* + * To be synced, we must be dirtied. But we + * might have been freed after the dirty. + */ + if (db->db_state == DB_UNCACHED) { + /* This buffer has been freed since it was dirtied */ + ASSERT(db->db.db_data == NULL); + } else if (db->db_state == DB_FILL) { + /* This buffer was freed and is now being re-filled */ + ASSERT(db->db.db_data != dr->dt.dl.dr_data); + } else { + ASSERT(db->db_state == DB_CACHED || db->db_state == DB_NOFILL); + } + DBUF_VERIFY(db); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + if (db->db_blkid == DMU_SPILL_BLKID) { + mutex_enter(&dn->dn_mtx); + dn->dn_phys->dn_flags |= DNODE_FLAG_SPILL_BLKPTR; + mutex_exit(&dn->dn_mtx); + } + + /* + * If this is a bonus buffer, simply copy the bonus data into the + * dnode. It will be written out when the dnode is synced (and it + * will be synced, since it must have been dirty for dbuf_sync to + * be called). + */ + if (db->db_blkid == DMU_BONUS_BLKID) { + dbuf_dirty_record_t **drp; + + ASSERT(*datap != NULL); + ASSERT0(db->db_level); + ASSERT3U(dn->dn_phys->dn_bonuslen, <=, DN_MAX_BONUSLEN); + bcopy(*datap, DN_BONUS(dn->dn_phys), dn->dn_phys->dn_bonuslen); + DB_DNODE_EXIT(db); + + if (*datap != db->db.db_data) { + zio_buf_free(*datap, DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); + } + db->db_data_pending = NULL; + drp = &db->db_last_dirty; + while (*drp != dr) + drp = &(*drp)->dr_next; + ASSERT(dr->dr_next == NULL); + ASSERT(dr->dr_dbuf == db); + *drp = dr->dr_next; + if (dr->dr_dbuf->db_level != 0) { + mutex_destroy(&dr->dt.di.dr_mtx); + list_destroy(&dr->dt.di.dr_children); + } + kmem_free(dr, sizeof (dbuf_dirty_record_t)); + ASSERT(db->db_dirtycnt > 0); + db->db_dirtycnt -= 1; + dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg); + return; + } + + os = dn->dn_objset; + + /* + * This function may have dropped the db_mtx lock allowing a dmu_sync + * operation to sneak in. As a result, we need to ensure that we + * don't check the dr_override_state until we have returned from + * dbuf_check_blkptr. + */ + dbuf_check_blkptr(dn, db); + + /* + * If this buffer is in the middle of an immediate write, + * wait for the synchronous IO to complete. + */ + while (dr->dt.dl.dr_override_state == DR_IN_DMU_SYNC) { + ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT); + cv_wait(&db->db_changed, &db->db_mtx); + ASSERT(dr->dt.dl.dr_override_state != DR_NOT_OVERRIDDEN); + } + + if (db->db_state != DB_NOFILL && + dn->dn_object != DMU_META_DNODE_OBJECT && + refcount_count(&db->db_holds) > 1 && + dr->dt.dl.dr_override_state != DR_OVERRIDDEN && + *datap == db->db_buf) { + /* + * If this buffer is currently "in use" (i.e., there + * are active holds and db_data still references it), + * then make a copy before we start the write so that + * any modifications from the open txg will not leak + * into this write. + * + * NOTE: this copy does not need to be made for + * objects only modified in the syncing context (e.g. + * DNONE_DNODE blocks). + */ + int blksz = arc_buf_size(*datap); + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + *datap = arc_buf_alloc(os->os_spa, blksz, db, type); + bcopy(db->db.db_data, (*datap)->b_data, blksz); + } + db->db_data_pending = dr; + + mutex_exit(&db->db_mtx); + + dbuf_write(dr, *datap, tx); + + ASSERT(!list_link_active(&dr->dr_dirty_node)); + if (dn->dn_object == DMU_META_DNODE_OBJECT) { + list_insert_tail(&dn->dn_dirty_records[txg&TXG_MASK], dr); + DB_DNODE_EXIT(db); + } else { + /* + * Although zio_nowait() does not "wait for an IO", it does + * initiate the IO. If this is an empty write it seems plausible + * that the IO could actually be completed before the nowait + * returns. We need to DB_DNODE_EXIT() first in case + * zio_nowait() invalidates the dbuf. + */ + DB_DNODE_EXIT(db); + zio_nowait(dr->dr_zio); + } +} + +void +dbuf_sync_list(list_t *list, int level, dmu_tx_t *tx) +{ + dbuf_dirty_record_t *dr; + + while ((dr = list_head(list))) { + if (dr->dr_zio != NULL) { + /* + * If we find an already initialized zio then we + * are processing the meta-dnode, and we have finished. + * The dbufs for all dnodes are put back on the list + * during processing, so that we can zio_wait() + * these IOs after initiating all child IOs. + */ + ASSERT3U(dr->dr_dbuf->db.db_object, ==, + DMU_META_DNODE_OBJECT); + break; + } + if (dr->dr_dbuf->db_blkid != DMU_BONUS_BLKID && + dr->dr_dbuf->db_blkid != DMU_SPILL_BLKID) { + VERIFY3U(dr->dr_dbuf->db_level, ==, level); + } + list_remove(list, dr); + if (dr->dr_dbuf->db_level > 0) + dbuf_sync_indirect(dr, tx); + else + dbuf_sync_leaf(dr, tx); + } +} + +/* ARGSUSED */ +static void +dbuf_write_ready(zio_t *zio, arc_buf_t *buf, void *vdb) +{ + dmu_buf_impl_t *db = vdb; + dnode_t *dn; + blkptr_t *bp = zio->io_bp; + blkptr_t *bp_orig = &zio->io_bp_orig; + spa_t *spa = zio->io_spa; + int64_t delta; + uint64_t fill = 0; + int i; + + ASSERT3P(db->db_blkptr, ==, bp); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + delta = bp_get_dsize_sync(spa, bp) - bp_get_dsize_sync(spa, bp_orig); + dnode_diduse_space(dn, delta - zio->io_prev_space_delta); + zio->io_prev_space_delta = delta; + + if (bp->blk_birth != 0) { + ASSERT((db->db_blkid != DMU_SPILL_BLKID && + BP_GET_TYPE(bp) == dn->dn_type) || + (db->db_blkid == DMU_SPILL_BLKID && + BP_GET_TYPE(bp) == dn->dn_bonustype) || + BP_IS_EMBEDDED(bp)); + ASSERT(BP_GET_LEVEL(bp) == db->db_level); + } + + mutex_enter(&db->db_mtx); + +#ifdef ZFS_DEBUG + if (db->db_blkid == DMU_SPILL_BLKID) { + ASSERT(dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR); + ASSERT(!(BP_IS_HOLE(db->db_blkptr)) && + db->db_blkptr == &dn->dn_phys->dn_spill); + } +#endif + + if (db->db_level == 0) { + mutex_enter(&dn->dn_mtx); + if (db->db_blkid > dn->dn_phys->dn_maxblkid && + db->db_blkid != DMU_SPILL_BLKID) + dn->dn_phys->dn_maxblkid = db->db_blkid; + mutex_exit(&dn->dn_mtx); + + if (dn->dn_type == DMU_OT_DNODE) { + dnode_phys_t *dnp = db->db.db_data; + for (i = db->db.db_size >> DNODE_SHIFT; i > 0; + i--, dnp++) { + if (dnp->dn_type != DMU_OT_NONE) + fill++; + } + } else { + if (BP_IS_HOLE(bp)) { + fill = 0; + } else { + fill = 1; + } + } + } else { + blkptr_t *ibp = db->db.db_data; + ASSERT3U(db->db.db_size, ==, 1<dn_phys->dn_indblkshift); + for (i = db->db.db_size >> SPA_BLKPTRSHIFT; i > 0; i--, ibp++) { + if (BP_IS_HOLE(ibp)) + continue; + fill += BP_GET_FILL(ibp); + } + } + DB_DNODE_EXIT(db); + + if (!BP_IS_EMBEDDED(bp)) + bp->blk_fill = fill; + + mutex_exit(&db->db_mtx); +} + +/* + * The SPA will call this callback several times for each zio - once + * for every physical child i/o (zio->io_phys_children times). This + * allows the DMU to monitor the progress of each logical i/o. For example, + * there may be 2 copies of an indirect block, or many fragments of a RAID-Z + * block. There may be a long delay before all copies/fragments are completed, + * so this callback allows us to retire dirty space gradually, as the physical + * i/os complete. + */ +/* ARGSUSED */ +static void +dbuf_write_physdone(zio_t *zio, arc_buf_t *buf, void *arg) +{ + dmu_buf_impl_t *db = arg; + objset_t *os = db->db_objset; + dsl_pool_t *dp = dmu_objset_pool(os); + dbuf_dirty_record_t *dr; + int delta = 0; + + dr = db->db_data_pending; + ASSERT3U(dr->dr_txg, ==, zio->io_txg); + + /* + * The callback will be called io_phys_children times. Retire one + * portion of our dirty space each time we are called. Any rounding + * error will be cleaned up by dsl_pool_sync()'s call to + * dsl_pool_undirty_space(). + */ + delta = dr->dr_accounted / zio->io_phys_children; + dsl_pool_undirty_space(dp, delta, zio->io_txg); +} + +/* ARGSUSED */ +static void +dbuf_write_done(zio_t *zio, arc_buf_t *buf, void *vdb) +{ + dmu_buf_impl_t *db = vdb; + blkptr_t *bp_orig = &zio->io_bp_orig; + blkptr_t *bp = db->db_blkptr; + objset_t *os = db->db_objset; + dmu_tx_t *tx = os->os_synctx; + dbuf_dirty_record_t **drp, *dr; + + ASSERT0(zio->io_error); + ASSERT(db->db_blkptr == bp); + + /* + * For nopwrites and rewrites we ensure that the bp matches our + * original and bypass all the accounting. + */ + if (zio->io_flags & (ZIO_FLAG_IO_REWRITE | ZIO_FLAG_NOPWRITE)) { + ASSERT(BP_EQUAL(bp, bp_orig)); + } else { + dsl_dataset_t *ds = os->os_dsl_dataset; + (void) dsl_dataset_block_kill(ds, bp_orig, tx, B_TRUE); + dsl_dataset_block_born(ds, bp, tx); + } + + mutex_enter(&db->db_mtx); + + DBUF_VERIFY(db); + + drp = &db->db_last_dirty; + while ((dr = *drp) != db->db_data_pending) + drp = &dr->dr_next; + ASSERT(!list_link_active(&dr->dr_dirty_node)); + ASSERT(dr->dr_dbuf == db); + ASSERT(dr->dr_next == NULL); + *drp = dr->dr_next; + +#ifdef ZFS_DEBUG + if (db->db_blkid == DMU_SPILL_BLKID) { + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + ASSERT(dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR); + ASSERT(!(BP_IS_HOLE(db->db_blkptr)) && + db->db_blkptr == &dn->dn_phys->dn_spill); + DB_DNODE_EXIT(db); + } +#endif + + if (db->db_level == 0) { + ASSERT(db->db_blkid != DMU_BONUS_BLKID); + ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN); + if (db->db_state != DB_NOFILL) { + if (dr->dt.dl.dr_data != db->db_buf) + VERIFY(arc_buf_remove_ref(dr->dt.dl.dr_data, + db)); + else if (!arc_released(db->db_buf)) + arc_set_callback(db->db_buf, dbuf_do_evict, db); + } + } else { + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + ASSERT(list_head(&dr->dt.di.dr_children) == NULL); + ASSERT3U(db->db.db_size, ==, 1 << dn->dn_phys->dn_indblkshift); + if (!BP_IS_HOLE(db->db_blkptr)) { + ASSERTV(int epbs = dn->dn_phys->dn_indblkshift - + SPA_BLKPTRSHIFT); + ASSERT3U(db->db_blkid, <=, + dn->dn_phys->dn_maxblkid >> (db->db_level * epbs)); + ASSERT3U(BP_GET_LSIZE(db->db_blkptr), ==, + db->db.db_size); + if (!arc_released(db->db_buf)) + arc_set_callback(db->db_buf, dbuf_do_evict, db); + } + DB_DNODE_EXIT(db); + mutex_destroy(&dr->dt.di.dr_mtx); + list_destroy(&dr->dt.di.dr_children); + } + kmem_free(dr, sizeof (dbuf_dirty_record_t)); + + cv_broadcast(&db->db_changed); + ASSERT(db->db_dirtycnt > 0); + db->db_dirtycnt -= 1; + db->db_data_pending = NULL; + dbuf_rele_and_unlock(db, (void *)(uintptr_t)tx->tx_txg); +} + +static void +dbuf_write_nofill_ready(zio_t *zio) +{ + dbuf_write_ready(zio, NULL, zio->io_private); +} + +static void +dbuf_write_nofill_done(zio_t *zio) +{ + dbuf_write_done(zio, NULL, zio->io_private); +} + +static void +dbuf_write_override_ready(zio_t *zio) +{ + dbuf_dirty_record_t *dr = zio->io_private; + dmu_buf_impl_t *db = dr->dr_dbuf; + + dbuf_write_ready(zio, NULL, db); +} + +static void +dbuf_write_override_done(zio_t *zio) +{ + dbuf_dirty_record_t *dr = zio->io_private; + dmu_buf_impl_t *db = dr->dr_dbuf; + blkptr_t *obp = &dr->dt.dl.dr_overridden_by; + + mutex_enter(&db->db_mtx); + if (!BP_EQUAL(zio->io_bp, obp)) { + if (!BP_IS_HOLE(obp)) + dsl_free(spa_get_dsl(zio->io_spa), zio->io_txg, obp); + arc_release(dr->dt.dl.dr_data, db); + } + mutex_exit(&db->db_mtx); + + dbuf_write_done(zio, NULL, db); +} + +/* Issue I/O to commit a dirty buffer to disk. */ +static void +dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = dr->dr_dbuf; + dnode_t *dn; + objset_t *os; + dmu_buf_impl_t *parent = db->db_parent; + uint64_t txg = tx->tx_txg; + zbookmark_phys_t zb; + zio_prop_t zp; + zio_t *zio; + int wp_flag = 0; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + os = dn->dn_objset; + + if (db->db_state != DB_NOFILL) { + if (db->db_level > 0 || dn->dn_type == DMU_OT_DNODE) { + /* + * Private object buffers are released here rather + * than in dbuf_dirty() since they are only modified + * in the syncing context and we don't want the + * overhead of making multiple copies of the data. + */ + if (BP_IS_HOLE(db->db_blkptr)) { + arc_buf_thaw(data); + } else { + dbuf_release_bp(db); + } + } + } + + if (parent != dn->dn_dbuf) { + /* Our parent is an indirect block. */ + /* We have a dirty parent that has been scheduled for write. */ + ASSERT(parent && parent->db_data_pending); + /* Our parent's buffer is one level closer to the dnode. */ + ASSERT(db->db_level == parent->db_level-1); + /* + * We're about to modify our parent's db_data by modifying + * our block pointer, so the parent must be released. + */ + ASSERT(arc_released(parent->db_buf)); + zio = parent->db_data_pending->dr_zio; + } else { + /* Our parent is the dnode itself. */ + ASSERT((db->db_level == dn->dn_phys->dn_nlevels-1 && + db->db_blkid != DMU_SPILL_BLKID) || + (db->db_blkid == DMU_SPILL_BLKID && db->db_level == 0)); + if (db->db_blkid != DMU_SPILL_BLKID) + ASSERT3P(db->db_blkptr, ==, + &dn->dn_phys->dn_blkptr[db->db_blkid]); + zio = dn->dn_zio; + } + + ASSERT(db->db_level == 0 || data == db->db_buf); + ASSERT3U(db->db_blkptr->blk_birth, <=, txg); + ASSERT(zio); + + SET_BOOKMARK(&zb, os->os_dsl_dataset ? + os->os_dsl_dataset->ds_object : DMU_META_OBJSET, + db->db.db_object, db->db_level, db->db_blkid); + + if (db->db_blkid == DMU_SPILL_BLKID) + wp_flag = WP_SPILL; + wp_flag |= (db->db_state == DB_NOFILL) ? WP_NOFILL : 0; + + dmu_write_policy(os, dn, db->db_level, wp_flag, &zp); + DB_DNODE_EXIT(db); + + if (db->db_level == 0 && + dr->dt.dl.dr_override_state == DR_OVERRIDDEN) { + /* + * The BP for this block has been provided by open context + * (by dmu_sync() or dmu_buf_write_embedded()). + */ + void *contents = (data != NULL) ? data->b_data : NULL; + + dr->dr_zio = zio_write(zio, os->os_spa, txg, + db->db_blkptr, contents, db->db.db_size, &zp, + dbuf_write_override_ready, NULL, dbuf_write_override_done, + dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + mutex_enter(&db->db_mtx); + dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; + zio_write_override(dr->dr_zio, &dr->dt.dl.dr_overridden_by, + dr->dt.dl.dr_copies, dr->dt.dl.dr_nopwrite); + mutex_exit(&db->db_mtx); + } else if (db->db_state == DB_NOFILL) { + ASSERT(zp.zp_checksum == ZIO_CHECKSUM_OFF); + dr->dr_zio = zio_write(zio, os->os_spa, txg, + db->db_blkptr, NULL, db->db.db_size, &zp, + dbuf_write_nofill_ready, NULL, dbuf_write_nofill_done, db, + ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_MUSTSUCCEED | ZIO_FLAG_NODATA, &zb); + } else { + ASSERT(arc_released(data)); + dr->dr_zio = arc_write(zio, os->os_spa, txg, + db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), + DBUF_IS_L2COMPRESSIBLE(db), &zp, dbuf_write_ready, + dbuf_write_physdone, dbuf_write_done, db, + ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dbuf_find); +EXPORT_SYMBOL(dbuf_is_metadata); +EXPORT_SYMBOL(dbuf_evict); +EXPORT_SYMBOL(dbuf_loan_arcbuf); +EXPORT_SYMBOL(dbuf_whichblock); +EXPORT_SYMBOL(dbuf_read); +EXPORT_SYMBOL(dbuf_unoverride); +EXPORT_SYMBOL(dbuf_free_range); +EXPORT_SYMBOL(dbuf_new_size); +EXPORT_SYMBOL(dbuf_release_bp); +EXPORT_SYMBOL(dbuf_dirty); +EXPORT_SYMBOL(dmu_buf_will_dirty); +EXPORT_SYMBOL(dmu_buf_will_not_fill); +EXPORT_SYMBOL(dmu_buf_will_fill); +EXPORT_SYMBOL(dmu_buf_fill_done); +EXPORT_SYMBOL(dmu_buf_rele); +EXPORT_SYMBOL(dbuf_assign_arcbuf); +EXPORT_SYMBOL(dbuf_clear); +EXPORT_SYMBOL(dbuf_prefetch); +EXPORT_SYMBOL(dbuf_hold_impl); +EXPORT_SYMBOL(dbuf_hold); +EXPORT_SYMBOL(dbuf_hold_level); +EXPORT_SYMBOL(dbuf_create_bonus); +EXPORT_SYMBOL(dbuf_spill_set_blksz); +EXPORT_SYMBOL(dbuf_rm_spill); +EXPORT_SYMBOL(dbuf_add_ref); +EXPORT_SYMBOL(dbuf_rele); +EXPORT_SYMBOL(dbuf_rele_and_unlock); +EXPORT_SYMBOL(dbuf_refcount); +EXPORT_SYMBOL(dbuf_sync_list); +EXPORT_SYMBOL(dmu_buf_set_user); +EXPORT_SYMBOL(dmu_buf_set_user_ie); +EXPORT_SYMBOL(dmu_buf_get_user); +EXPORT_SYMBOL(dmu_buf_freeable); +EXPORT_SYMBOL(dmu_buf_get_blkptr); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dbuf_stats.c +++ linux-4.4.0/zfs/module/zfs/dbuf_stats.c @@ -0,0 +1,233 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#include +#include +#include + +/* + * Calculate the index of the arc header for the state, disabled by default. + */ +int zfs_dbuf_state_index = 0; + +/* + * ========================================================================== + * Dbuf Hash Read Routines + * ========================================================================== + */ +typedef struct dbuf_stats_t { + kmutex_t lock; + kstat_t *kstat; + dbuf_hash_table_t *hash; + int idx; +} dbuf_stats_t; + +static dbuf_stats_t dbuf_stats_hash_table; + +static int +dbuf_stats_hash_table_headers(char *buf, size_t size) +{ + (void) snprintf(buf, size, + "%-88s | %-124s | %s\n" + "%-16s %-8s %-8s %-8s %-8s %-8s %-8s %-5s %-5s %5s | " + "%-5s %-5s %-8s %-6s %-8s %-12s " + "%-6s %-6s %-6s %-6s %-6s %-8s %-8s %-8s %-5s | " + "%-6s %-6s %-8s %-8s %-6s %-6s %-5s %-8s %-8s\n", + "dbuf", "arcbuf", "dnode", "pool", "objset", "object", "level", + "blkid", "offset", "dbsize", "meta", "state", "dbholds", "list", + "atype", "flags", "count", "asize", "access", + "mru", "gmru", "mfu", "gmfu", "l2", "l2_dattr", "l2_asize", + "l2_comp", "aholds", "dtype", "btype", "data_bs", "meta_bs", + "bsize", "lvls", "dholds", "blocks", "dsize"); + + return (0); +} + +int +__dbuf_stats_hash_table_data(char *buf, size_t size, dmu_buf_impl_t *db) +{ + arc_buf_info_t abi = { 0 }; + dmu_object_info_t doi = { 0 }; + dnode_t *dn = DB_DNODE(db); + size_t nwritten; + + if (db->db_buf) + arc_buf_info(db->db_buf, &abi, zfs_dbuf_state_index); + + if (dn) + __dmu_object_info_from_dnode(dn, &doi); + + nwritten = snprintf(buf, size, + "%-16s %-8llu %-8lld %-8lld %-8lld %-8llu %-8llu %-5d %-5d %-5lu | " + "%-5d %-5d 0x%-6x %-6lu %-8llu %-12llu " + "%-6lu %-6lu %-6lu %-6lu %-6lu %-8llu %-8llu %-8d %-5lu | " + "%-6d %-6d %-8lu %-8lu %-6llu %-6lu %-5lu %-8llu %-8llu\n", + /* dmu_buf_impl_t */ + spa_name(dn->dn_objset->os_spa), + (u_longlong_t)dmu_objset_id(db->db_objset), + (longlong_t)db->db.db_object, + (longlong_t)db->db_level, + (longlong_t)db->db_blkid, + (u_longlong_t)db->db.db_offset, + (u_longlong_t)db->db.db_size, + !!dbuf_is_metadata(db), + db->db_state, + (ulong_t)refcount_count(&db->db_holds), + /* arc_buf_info_t */ + abi.abi_state_type, + abi.abi_state_contents, + abi.abi_flags, + (ulong_t)abi.abi_datacnt, + (u_longlong_t)abi.abi_size, + (u_longlong_t)abi.abi_access, + (ulong_t)abi.abi_mru_hits, + (ulong_t)abi.abi_mru_ghost_hits, + (ulong_t)abi.abi_mfu_hits, + (ulong_t)abi.abi_mfu_ghost_hits, + (ulong_t)abi.abi_l2arc_hits, + (u_longlong_t)abi.abi_l2arc_dattr, + (u_longlong_t)abi.abi_l2arc_asize, + abi.abi_l2arc_compress, + (ulong_t)abi.abi_holds, + /* dmu_object_info_t */ + doi.doi_type, + doi.doi_bonus_type, + (ulong_t)doi.doi_data_block_size, + (ulong_t)doi.doi_metadata_block_size, + (u_longlong_t)doi.doi_bonus_size, + (ulong_t)doi.doi_indirection, + (ulong_t)refcount_count(&dn->dn_holds), + (u_longlong_t)doi.doi_fill_count, + (u_longlong_t)doi.doi_max_offset); + + if (nwritten >= size) + return (size); + + return (nwritten + 1); +} + +static int +dbuf_stats_hash_table_data(char *buf, size_t size, void *data) +{ + dbuf_stats_t *dsh = (dbuf_stats_t *)data; + dbuf_hash_table_t *h = dsh->hash; + dmu_buf_impl_t *db; + int length, error = 0; + + ASSERT3S(dsh->idx, >=, 0); + ASSERT3S(dsh->idx, <=, h->hash_table_mask); + memset(buf, 0, size); + + mutex_enter(DBUF_HASH_MUTEX(h, dsh->idx)); + for (db = h->hash_table[dsh->idx]; db != NULL; db = db->db_hash_next) { + /* + * Returning ENOMEM will cause the data and header functions + * to be called with a larger scratch buffers. + */ + if (size < 512) { + error = ENOMEM; + break; + } + + mutex_enter(&db->db_mtx); + mutex_exit(DBUF_HASH_MUTEX(h, dsh->idx)); + + if (db->db_state != DB_EVICTING) { + length = __dbuf_stats_hash_table_data(buf, size, db); + buf += length; + size -= length; + } + + mutex_exit(&db->db_mtx); + mutex_enter(DBUF_HASH_MUTEX(h, dsh->idx)); + } + mutex_exit(DBUF_HASH_MUTEX(h, dsh->idx)); + + return (error); +} + +static void * +dbuf_stats_hash_table_addr(kstat_t *ksp, loff_t n) +{ + dbuf_stats_t *dsh = ksp->ks_private; + + ASSERT(MUTEX_HELD(&dsh->lock)); + + if (n <= dsh->hash->hash_table_mask) { + dsh->idx = n; + return (dsh); + } + + return (NULL); +} + +static void +dbuf_stats_hash_table_init(dbuf_hash_table_t *hash) +{ + dbuf_stats_t *dsh = &dbuf_stats_hash_table; + kstat_t *ksp; + + mutex_init(&dsh->lock, NULL, MUTEX_DEFAULT, NULL); + dsh->hash = hash; + + ksp = kstat_create("zfs", 0, "dbufs", "misc", + KSTAT_TYPE_RAW, 0, KSTAT_FLAG_VIRTUAL); + dsh->kstat = ksp; + + if (ksp) { + ksp->ks_lock = &dsh->lock; + ksp->ks_ndata = UINT32_MAX; + ksp->ks_private = dsh; + kstat_set_raw_ops(ksp, dbuf_stats_hash_table_headers, + dbuf_stats_hash_table_data, dbuf_stats_hash_table_addr); + kstat_install(ksp); + } +} + +static void +dbuf_stats_hash_table_destroy(void) +{ + dbuf_stats_t *dsh = &dbuf_stats_hash_table; + kstat_t *ksp; + + ksp = dsh->kstat; + if (ksp) + kstat_delete(ksp); + + mutex_destroy(&dsh->lock); +} + +void +dbuf_stats_init(dbuf_hash_table_t *hash) +{ + dbuf_stats_hash_table_init(hash); +} + +void +dbuf_stats_destroy(void) +{ + dbuf_stats_hash_table_destroy(); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_dbuf_state_index, int, 0644); +MODULE_PARM_DESC(zfs_dbuf_state_index, "Calculate arc header index"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/ddt.c +++ linux-4.4.0/zfs/module/zfs/ddt.c @@ -0,0 +1,1235 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static kmem_cache_t *ddt_cache; +static kmem_cache_t *ddt_entry_cache; + +/* + * Enable/disable prefetching of dedup-ed blocks which are going to be freed. + */ +int zfs_dedup_prefetch = 0; + +static const ddt_ops_t *ddt_ops[DDT_TYPES] = { + &ddt_zap_ops, +}; + +static const char *ddt_class_name[DDT_CLASSES] = { + "ditto", + "duplicate", + "unique", +}; + +static void +ddt_object_create(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + dmu_tx_t *tx) +{ + spa_t *spa = ddt->ddt_spa; + objset_t *os = ddt->ddt_os; + uint64_t *objectp = &ddt->ddt_object[type][class]; + boolean_t prehash = zio_checksum_table[ddt->ddt_checksum].ci_dedup; + char name[DDT_NAMELEN]; + + ddt_object_name(ddt, type, class, name); + + ASSERT(*objectp == 0); + VERIFY(ddt_ops[type]->ddt_op_create(os, objectp, tx, prehash) == 0); + ASSERT(*objectp != 0); + + VERIFY(zap_add(os, DMU_POOL_DIRECTORY_OBJECT, name, + sizeof (uint64_t), 1, objectp, tx) == 0); + + VERIFY(zap_add(os, spa->spa_ddt_stat_object, name, + sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t), + &ddt->ddt_histogram[type][class], tx) == 0); +} + +static void +ddt_object_destroy(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + dmu_tx_t *tx) +{ + spa_t *spa = ddt->ddt_spa; + objset_t *os = ddt->ddt_os; + uint64_t *objectp = &ddt->ddt_object[type][class]; + uint64_t count; + char name[DDT_NAMELEN]; + + ddt_object_name(ddt, type, class, name); + + ASSERT(*objectp != 0); + ASSERT(ddt_histogram_empty(&ddt->ddt_histogram[type][class])); + VERIFY(ddt_object_count(ddt, type, class, &count) == 0 && count == 0); + VERIFY(zap_remove(os, DMU_POOL_DIRECTORY_OBJECT, name, tx) == 0); + VERIFY(zap_remove(os, spa->spa_ddt_stat_object, name, tx) == 0); + VERIFY(ddt_ops[type]->ddt_op_destroy(os, *objectp, tx) == 0); + bzero(&ddt->ddt_object_stats[type][class], sizeof (ddt_object_t)); + + *objectp = 0; +} + +static int +ddt_object_load(ddt_t *ddt, enum ddt_type type, enum ddt_class class) +{ + ddt_object_t *ddo = &ddt->ddt_object_stats[type][class]; + dmu_object_info_t doi; + uint64_t count; + char name[DDT_NAMELEN]; + int error; + + ddt_object_name(ddt, type, class, name); + + error = zap_lookup(ddt->ddt_os, DMU_POOL_DIRECTORY_OBJECT, name, + sizeof (uint64_t), 1, &ddt->ddt_object[type][class]); + if (error != 0) + return (error); + + error = zap_lookup(ddt->ddt_os, ddt->ddt_spa->spa_ddt_stat_object, name, + sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t), + &ddt->ddt_histogram[type][class]); + if (error != 0) + return (error); + + /* + * Seed the cached statistics. + */ + error = ddt_object_info(ddt, type, class, &doi); + if (error) + return (error); + + error = ddt_object_count(ddt, type, class, &count); + if (error) + return (error); + + ddo->ddo_count = count; + ddo->ddo_dspace = doi.doi_physical_blocks_512 << 9; + ddo->ddo_mspace = doi.doi_fill_count * doi.doi_data_block_size; + + return (0); +} + +static void +ddt_object_sync(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + dmu_tx_t *tx) +{ + ddt_object_t *ddo = &ddt->ddt_object_stats[type][class]; + dmu_object_info_t doi; + uint64_t count; + char name[DDT_NAMELEN]; + + ddt_object_name(ddt, type, class, name); + + VERIFY(zap_update(ddt->ddt_os, ddt->ddt_spa->spa_ddt_stat_object, name, + sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t), + &ddt->ddt_histogram[type][class], tx) == 0); + + /* + * Cache DDT statistics; this is the only time they'll change. + */ + VERIFY(ddt_object_info(ddt, type, class, &doi) == 0); + VERIFY(ddt_object_count(ddt, type, class, &count) == 0); + + ddo->ddo_count = count; + ddo->ddo_dspace = doi.doi_physical_blocks_512 << 9; + ddo->ddo_mspace = doi.doi_fill_count * doi.doi_data_block_size; +} + +static int +ddt_object_lookup(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + ddt_entry_t *dde) +{ + if (!ddt_object_exists(ddt, type, class)) + return (SET_ERROR(ENOENT)); + + return (ddt_ops[type]->ddt_op_lookup(ddt->ddt_os, + ddt->ddt_object[type][class], dde)); +} + +static void +ddt_object_prefetch(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + ddt_entry_t *dde) +{ + if (!ddt_object_exists(ddt, type, class)) + return; + + ddt_ops[type]->ddt_op_prefetch(ddt->ddt_os, + ddt->ddt_object[type][class], dde); +} + +int +ddt_object_update(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + ddt_entry_t *dde, dmu_tx_t *tx) +{ + ASSERT(ddt_object_exists(ddt, type, class)); + + return (ddt_ops[type]->ddt_op_update(ddt->ddt_os, + ddt->ddt_object[type][class], dde, tx)); +} + +static int +ddt_object_remove(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + ddt_entry_t *dde, dmu_tx_t *tx) +{ + ASSERT(ddt_object_exists(ddt, type, class)); + + return (ddt_ops[type]->ddt_op_remove(ddt->ddt_os, + ddt->ddt_object[type][class], dde, tx)); +} + +int +ddt_object_walk(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + uint64_t *walk, ddt_entry_t *dde) +{ + ASSERT(ddt_object_exists(ddt, type, class)); + + return (ddt_ops[type]->ddt_op_walk(ddt->ddt_os, + ddt->ddt_object[type][class], dde, walk)); +} + +int +ddt_object_count(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + uint64_t *count) +{ + ASSERT(ddt_object_exists(ddt, type, class)); + + return (ddt_ops[type]->ddt_op_count(ddt->ddt_os, + ddt->ddt_object[type][class], count)); +} + +int +ddt_object_info(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + dmu_object_info_t *doi) +{ + if (!ddt_object_exists(ddt, type, class)) + return (SET_ERROR(ENOENT)); + + return (dmu_object_info(ddt->ddt_os, ddt->ddt_object[type][class], + doi)); +} + +boolean_t +ddt_object_exists(ddt_t *ddt, enum ddt_type type, enum ddt_class class) +{ + return (!!ddt->ddt_object[type][class]); +} + +void +ddt_object_name(ddt_t *ddt, enum ddt_type type, enum ddt_class class, + char *name) +{ + (void) sprintf(name, DMU_POOL_DDT, + zio_checksum_table[ddt->ddt_checksum].ci_name, + ddt_ops[type]->ddt_op_name, ddt_class_name[class]); +} + +void +ddt_bp_fill(const ddt_phys_t *ddp, blkptr_t *bp, uint64_t txg) +{ + int d; + ASSERT(txg != 0); + + for (d = 0; d < SPA_DVAS_PER_BP; d++) + bp->blk_dva[d] = ddp->ddp_dva[d]; + BP_SET_BIRTH(bp, txg, ddp->ddp_phys_birth); +} + +void +ddt_bp_create(enum zio_checksum checksum, + const ddt_key_t *ddk, const ddt_phys_t *ddp, blkptr_t *bp) +{ + BP_ZERO(bp); + + if (ddp != NULL) + ddt_bp_fill(ddp, bp, ddp->ddp_phys_birth); + + bp->blk_cksum = ddk->ddk_cksum; + bp->blk_fill = 1; + + BP_SET_LSIZE(bp, DDK_GET_LSIZE(ddk)); + BP_SET_PSIZE(bp, DDK_GET_PSIZE(ddk)); + BP_SET_COMPRESS(bp, DDK_GET_COMPRESS(ddk)); + BP_SET_CHECKSUM(bp, checksum); + BP_SET_TYPE(bp, DMU_OT_DEDUP); + BP_SET_LEVEL(bp, 0); + BP_SET_DEDUP(bp, 0); + BP_SET_BYTEORDER(bp, ZFS_HOST_BYTEORDER); +} + +void +ddt_key_fill(ddt_key_t *ddk, const blkptr_t *bp) +{ + ddk->ddk_cksum = bp->blk_cksum; + ddk->ddk_prop = 0; + + DDK_SET_LSIZE(ddk, BP_GET_LSIZE(bp)); + DDK_SET_PSIZE(ddk, BP_GET_PSIZE(bp)); + DDK_SET_COMPRESS(ddk, BP_GET_COMPRESS(bp)); +} + +void +ddt_phys_fill(ddt_phys_t *ddp, const blkptr_t *bp) +{ + int d; + ASSERT(ddp->ddp_phys_birth == 0); + + for (d = 0; d < SPA_DVAS_PER_BP; d++) + ddp->ddp_dva[d] = bp->blk_dva[d]; + ddp->ddp_phys_birth = BP_PHYSICAL_BIRTH(bp); +} + +void +ddt_phys_clear(ddt_phys_t *ddp) +{ + bzero(ddp, sizeof (*ddp)); +} + +void +ddt_phys_addref(ddt_phys_t *ddp) +{ + ddp->ddp_refcnt++; +} + +void +ddt_phys_decref(ddt_phys_t *ddp) +{ + if (ddp) { + ASSERT(ddp->ddp_refcnt > 0); + ddp->ddp_refcnt--; + } +} + +void +ddt_phys_free(ddt_t *ddt, ddt_key_t *ddk, ddt_phys_t *ddp, uint64_t txg) +{ + blkptr_t blk; + + ddt_bp_create(ddt->ddt_checksum, ddk, ddp, &blk); + ddt_phys_clear(ddp); + zio_free(ddt->ddt_spa, txg, &blk); +} + +ddt_phys_t * +ddt_phys_select(const ddt_entry_t *dde, const blkptr_t *bp) +{ + ddt_phys_t *ddp = (ddt_phys_t *)dde->dde_phys; + int p; + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) { + if (DVA_EQUAL(BP_IDENTITY(bp), &ddp->ddp_dva[0]) && + BP_PHYSICAL_BIRTH(bp) == ddp->ddp_phys_birth) + return (ddp); + } + return (NULL); +} + +uint64_t +ddt_phys_total_refcnt(const ddt_entry_t *dde) +{ + uint64_t refcnt = 0; + int p; + + for (p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) + refcnt += dde->dde_phys[p].ddp_refcnt; + + return (refcnt); +} + +static void +ddt_stat_generate(ddt_t *ddt, ddt_entry_t *dde, ddt_stat_t *dds) +{ + spa_t *spa = ddt->ddt_spa; + ddt_phys_t *ddp = dde->dde_phys; + ddt_key_t *ddk = &dde->dde_key; + uint64_t lsize = DDK_GET_LSIZE(ddk); + uint64_t psize = DDK_GET_PSIZE(ddk); + int p, d; + + bzero(dds, sizeof (*dds)); + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) { + uint64_t dsize = 0; + uint64_t refcnt = ddp->ddp_refcnt; + + if (ddp->ddp_phys_birth == 0) + continue; + + for (d = 0; d < SPA_DVAS_PER_BP; d++) + dsize += dva_get_dsize_sync(spa, &ddp->ddp_dva[d]); + + dds->dds_blocks += 1; + dds->dds_lsize += lsize; + dds->dds_psize += psize; + dds->dds_dsize += dsize; + + dds->dds_ref_blocks += refcnt; + dds->dds_ref_lsize += lsize * refcnt; + dds->dds_ref_psize += psize * refcnt; + dds->dds_ref_dsize += dsize * refcnt; + } +} + +void +ddt_stat_add(ddt_stat_t *dst, const ddt_stat_t *src, uint64_t neg) +{ + const uint64_t *s = (const uint64_t *)src; + uint64_t *d = (uint64_t *)dst; + uint64_t *d_end = (uint64_t *)(dst + 1); + + ASSERT(neg == 0 || neg == -1ULL); /* add or subtract */ + + while (d < d_end) + *d++ += (*s++ ^ neg) - neg; +} + +static void +ddt_stat_update(ddt_t *ddt, ddt_entry_t *dde, uint64_t neg) +{ + ddt_stat_t dds; + ddt_histogram_t *ddh; + int bucket; + + ddt_stat_generate(ddt, dde, &dds); + + bucket = highbit64(dds.dds_ref_blocks) - 1; + ASSERT(bucket >= 0); + + ddh = &ddt->ddt_histogram[dde->dde_type][dde->dde_class]; + + ddt_stat_add(&ddh->ddh_stat[bucket], &dds, neg); +} + +void +ddt_histogram_add(ddt_histogram_t *dst, const ddt_histogram_t *src) +{ + int h; + + for (h = 0; h < 64; h++) + ddt_stat_add(&dst->ddh_stat[h], &src->ddh_stat[h], 0); +} + +void +ddt_histogram_stat(ddt_stat_t *dds, const ddt_histogram_t *ddh) +{ + int h; + + bzero(dds, sizeof (*dds)); + + for (h = 0; h < 64; h++) + ddt_stat_add(dds, &ddh->ddh_stat[h], 0); +} + +boolean_t +ddt_histogram_empty(const ddt_histogram_t *ddh) +{ + const uint64_t *s = (const uint64_t *)ddh; + const uint64_t *s_end = (const uint64_t *)(ddh + 1); + + while (s < s_end) + if (*s++ != 0) + return (B_FALSE); + + return (B_TRUE); +} + +void +ddt_get_dedup_object_stats(spa_t *spa, ddt_object_t *ddo_total) +{ + enum zio_checksum c; + enum ddt_type type; + enum ddt_class class; + + /* Sum the statistics we cached in ddt_object_sync(). */ + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) { + ddt_t *ddt = spa->spa_ddt[c]; + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; + class++) { + ddt_object_t *ddo = + &ddt->ddt_object_stats[type][class]; + ddo_total->ddo_count += ddo->ddo_count; + ddo_total->ddo_dspace += ddo->ddo_dspace; + ddo_total->ddo_mspace += ddo->ddo_mspace; + } + } + } + + /* ... and compute the averages. */ + if (ddo_total->ddo_count != 0) { + ddo_total->ddo_dspace /= ddo_total->ddo_count; + ddo_total->ddo_mspace /= ddo_total->ddo_count; + } +} + +void +ddt_get_dedup_histogram(spa_t *spa, ddt_histogram_t *ddh) +{ + enum zio_checksum c; + enum ddt_type type; + enum ddt_class class; + + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) { + ddt_t *ddt = spa->spa_ddt[c]; + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; + class++) { + ddt_histogram_add(ddh, + &ddt->ddt_histogram_cache[type][class]); + } + } + } +} + +void +ddt_get_dedup_stats(spa_t *spa, ddt_stat_t *dds_total) +{ + ddt_histogram_t *ddh_total; + + ddh_total = kmem_zalloc(sizeof (ddt_histogram_t), KM_SLEEP); + ddt_get_dedup_histogram(spa, ddh_total); + ddt_histogram_stat(dds_total, ddh_total); + kmem_free(ddh_total, sizeof (ddt_histogram_t)); +} + +uint64_t +ddt_get_dedup_dspace(spa_t *spa) +{ + ddt_stat_t dds_total = { 0 }; + + ddt_get_dedup_stats(spa, &dds_total); + return (dds_total.dds_ref_dsize - dds_total.dds_dsize); +} + +uint64_t +ddt_get_pool_dedup_ratio(spa_t *spa) +{ + ddt_stat_t dds_total = { 0 }; + + ddt_get_dedup_stats(spa, &dds_total); + if (dds_total.dds_dsize == 0) + return (100); + + return (dds_total.dds_ref_dsize * 100 / dds_total.dds_dsize); +} + +int +ddt_ditto_copies_needed(ddt_t *ddt, ddt_entry_t *dde, ddt_phys_t *ddp_willref) +{ + spa_t *spa = ddt->ddt_spa; + uint64_t total_refcnt = 0; + uint64_t ditto = spa->spa_dedup_ditto; + int total_copies = 0; + int desired_copies = 0; + int p; + + for (p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) { + ddt_phys_t *ddp = &dde->dde_phys[p]; + zio_t *zio = dde->dde_lead_zio[p]; + uint64_t refcnt = ddp->ddp_refcnt; /* committed refs */ + if (zio != NULL) + refcnt += zio->io_parent_count; /* pending refs */ + if (ddp == ddp_willref) + refcnt++; /* caller's ref */ + if (refcnt != 0) { + total_refcnt += refcnt; + total_copies += p; + } + } + + if (ditto == 0 || ditto > UINT32_MAX) + ditto = UINT32_MAX; + + if (total_refcnt >= 1) + desired_copies++; + if (total_refcnt >= ditto) + desired_copies++; + if (total_refcnt >= ditto * ditto) + desired_copies++; + + return (MAX(desired_copies, total_copies) - total_copies); +} + +int +ddt_ditto_copies_present(ddt_entry_t *dde) +{ + ddt_phys_t *ddp = &dde->dde_phys[DDT_PHYS_DITTO]; + dva_t *dva = ddp->ddp_dva; + int copies = 0 - DVA_GET_GANG(dva); + int d; + + for (d = 0; d < SPA_DVAS_PER_BP; d++, dva++) + if (DVA_IS_VALID(dva)) + copies++; + + ASSERT(copies >= 0 && copies < SPA_DVAS_PER_BP); + + return (copies); +} + +size_t +ddt_compress(void *src, uchar_t *dst, size_t s_len, size_t d_len) +{ + uchar_t *version = dst++; + int cpfunc = ZIO_COMPRESS_ZLE; + zio_compress_info_t *ci = &zio_compress_table[cpfunc]; + size_t c_len; + + ASSERT(d_len >= s_len + 1); /* no compression plus version byte */ + + c_len = ci->ci_compress(src, dst, s_len, d_len - 1, ci->ci_level); + + if (c_len == s_len) { + cpfunc = ZIO_COMPRESS_OFF; + bcopy(src, dst, s_len); + } + + *version = cpfunc; + /* CONSTCOND */ + if (ZFS_HOST_BYTEORDER) + *version |= DDT_COMPRESS_BYTEORDER_MASK; + + return (c_len + 1); +} + +void +ddt_decompress(uchar_t *src, void *dst, size_t s_len, size_t d_len) +{ + uchar_t version = *src++; + int cpfunc = version & DDT_COMPRESS_FUNCTION_MASK; + zio_compress_info_t *ci = &zio_compress_table[cpfunc]; + + if (ci->ci_decompress != NULL) + (void) ci->ci_decompress(src, dst, s_len, d_len, ci->ci_level); + else + bcopy(src, dst, d_len); + + if (((version & DDT_COMPRESS_BYTEORDER_MASK) != 0) != + (ZFS_HOST_BYTEORDER != 0)) + byteswap_uint64_array(dst, d_len); +} + +ddt_t * +ddt_select_by_checksum(spa_t *spa, enum zio_checksum c) +{ + return (spa->spa_ddt[c]); +} + +ddt_t * +ddt_select(spa_t *spa, const blkptr_t *bp) +{ + return (spa->spa_ddt[BP_GET_CHECKSUM(bp)]); +} + +void +ddt_enter(ddt_t *ddt) +{ + mutex_enter(&ddt->ddt_lock); +} + +void +ddt_exit(ddt_t *ddt) +{ + mutex_exit(&ddt->ddt_lock); +} + +void +ddt_init(void) +{ + ddt_cache = kmem_cache_create("ddt_cache", + sizeof (ddt_t), 0, NULL, NULL, NULL, NULL, NULL, 0); + ddt_entry_cache = kmem_cache_create("ddt_entry_cache", + sizeof (ddt_entry_t), 0, NULL, NULL, NULL, NULL, NULL, 0); +} + +void +ddt_fini(void) +{ + kmem_cache_destroy(ddt_entry_cache); + kmem_cache_destroy(ddt_cache); +} + +static ddt_entry_t * +ddt_alloc(const ddt_key_t *ddk) +{ + ddt_entry_t *dde; + + dde = kmem_cache_alloc(ddt_entry_cache, KM_SLEEP); + bzero(dde, sizeof (ddt_entry_t)); + cv_init(&dde->dde_cv, NULL, CV_DEFAULT, NULL); + + dde->dde_key = *ddk; + + return (dde); +} + +static void +ddt_free(ddt_entry_t *dde) +{ + int p; + + ASSERT(!dde->dde_loading); + + for (p = 0; p < DDT_PHYS_TYPES; p++) + ASSERT(dde->dde_lead_zio[p] == NULL); + + if (dde->dde_repair_data != NULL) + zio_buf_free(dde->dde_repair_data, + DDK_GET_PSIZE(&dde->dde_key)); + + cv_destroy(&dde->dde_cv); + kmem_cache_free(ddt_entry_cache, dde); +} + +void +ddt_remove(ddt_t *ddt, ddt_entry_t *dde) +{ + ASSERT(MUTEX_HELD(&ddt->ddt_lock)); + + avl_remove(&ddt->ddt_tree, dde); + ddt_free(dde); +} + +ddt_entry_t * +ddt_lookup(ddt_t *ddt, const blkptr_t *bp, boolean_t add) +{ + ddt_entry_t *dde, dde_search; + enum ddt_type type; + enum ddt_class class; + avl_index_t where; + int error; + + ASSERT(MUTEX_HELD(&ddt->ddt_lock)); + + ddt_key_fill(&dde_search.dde_key, bp); + + dde = avl_find(&ddt->ddt_tree, &dde_search, &where); + if (dde == NULL) { + if (!add) + return (NULL); + dde = ddt_alloc(&dde_search.dde_key); + avl_insert(&ddt->ddt_tree, dde, where); + } + + while (dde->dde_loading) + cv_wait(&dde->dde_cv, &ddt->ddt_lock); + + if (dde->dde_loaded) + return (dde); + + dde->dde_loading = B_TRUE; + + ddt_exit(ddt); + + error = ENOENT; + + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; class++) { + error = ddt_object_lookup(ddt, type, class, dde); + if (error != ENOENT) + break; + } + if (error != ENOENT) + break; + } + + ASSERT(error == 0 || error == ENOENT); + + ddt_enter(ddt); + + ASSERT(dde->dde_loaded == B_FALSE); + ASSERT(dde->dde_loading == B_TRUE); + + dde->dde_type = type; /* will be DDT_TYPES if no entry found */ + dde->dde_class = class; /* will be DDT_CLASSES if no entry found */ + dde->dde_loaded = B_TRUE; + dde->dde_loading = B_FALSE; + + if (error == 0) + ddt_stat_update(ddt, dde, -1ULL); + + cv_broadcast(&dde->dde_cv); + + return (dde); +} + +void +ddt_prefetch(spa_t *spa, const blkptr_t *bp) +{ + ddt_t *ddt; + ddt_entry_t dde; + enum ddt_type type; + enum ddt_class class; + + if (!zfs_dedup_prefetch || bp == NULL || !BP_GET_DEDUP(bp)) + return; + + /* + * We only remove the DDT once all tables are empty and only + * prefetch dedup blocks when there are entries in the DDT. + * Thus no locking is required as the DDT can't disappear on us. + */ + ddt = ddt_select(spa, bp); + ddt_key_fill(&dde.dde_key, bp); + + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; class++) { + ddt_object_prefetch(ddt, type, class, &dde); + } + } +} + +int +ddt_entry_compare(const void *x1, const void *x2) +{ + const ddt_entry_t *dde1 = x1; + const ddt_entry_t *dde2 = x2; + const uint64_t *u1 = (const uint64_t *)&dde1->dde_key; + const uint64_t *u2 = (const uint64_t *)&dde2->dde_key; + int i; + + for (i = 0; i < DDT_KEY_WORDS; i++) { + if (u1[i] < u2[i]) + return (-1); + if (u1[i] > u2[i]) + return (1); + } + + return (0); +} + +static ddt_t * +ddt_table_alloc(spa_t *spa, enum zio_checksum c) +{ + ddt_t *ddt; + + ddt = kmem_cache_alloc(ddt_cache, KM_SLEEP); + bzero(ddt, sizeof (ddt_t)); + + mutex_init(&ddt->ddt_lock, NULL, MUTEX_DEFAULT, NULL); + avl_create(&ddt->ddt_tree, ddt_entry_compare, + sizeof (ddt_entry_t), offsetof(ddt_entry_t, dde_node)); + avl_create(&ddt->ddt_repair_tree, ddt_entry_compare, + sizeof (ddt_entry_t), offsetof(ddt_entry_t, dde_node)); + ddt->ddt_checksum = c; + ddt->ddt_spa = spa; + ddt->ddt_os = spa->spa_meta_objset; + + return (ddt); +} + +static void +ddt_table_free(ddt_t *ddt) +{ + ASSERT(avl_numnodes(&ddt->ddt_tree) == 0); + ASSERT(avl_numnodes(&ddt->ddt_repair_tree) == 0); + avl_destroy(&ddt->ddt_tree); + avl_destroy(&ddt->ddt_repair_tree); + mutex_destroy(&ddt->ddt_lock); + kmem_cache_free(ddt_cache, ddt); +} + +void +ddt_create(spa_t *spa) +{ + enum zio_checksum c; + + spa->spa_dedup_checksum = ZIO_DEDUPCHECKSUM; + + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) + spa->spa_ddt[c] = ddt_table_alloc(spa, c); +} + +int +ddt_load(spa_t *spa) +{ + enum zio_checksum c; + enum ddt_type type; + enum ddt_class class; + int error; + + ddt_create(spa); + + error = zap_lookup(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_DDT_STATS, sizeof (uint64_t), 1, + &spa->spa_ddt_stat_object); + + if (error) + return (error == ENOENT ? 0 : error); + + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) { + ddt_t *ddt = spa->spa_ddt[c]; + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; + class++) { + error = ddt_object_load(ddt, type, class); + if (error != 0 && error != ENOENT) + return (error); + } + } + + /* + * Seed the cached histograms. + */ + bcopy(ddt->ddt_histogram, &ddt->ddt_histogram_cache, + sizeof (ddt->ddt_histogram)); + } + + return (0); +} + +void +ddt_unload(spa_t *spa) +{ + enum zio_checksum c; + + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) { + if (spa->spa_ddt[c]) { + ddt_table_free(spa->spa_ddt[c]); + spa->spa_ddt[c] = NULL; + } + } +} + +boolean_t +ddt_class_contains(spa_t *spa, enum ddt_class max_class, const blkptr_t *bp) +{ + ddt_t *ddt; + ddt_entry_t *dde; + enum ddt_type type; + enum ddt_class class; + + if (!BP_GET_DEDUP(bp)) + return (B_FALSE); + + if (max_class == DDT_CLASS_UNIQUE) + return (B_TRUE); + + ddt = spa->spa_ddt[BP_GET_CHECKSUM(bp)]; + dde = kmem_cache_alloc(ddt_entry_cache, KM_SLEEP); + + ddt_key_fill(&(dde->dde_key), bp); + + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class <= max_class; class++) { + if (ddt_object_lookup(ddt, type, class, dde) == 0) { + kmem_cache_free(ddt_entry_cache, dde); + return (B_TRUE); + } + } + } + + kmem_cache_free(ddt_entry_cache, dde); + return (B_FALSE); +} + +ddt_entry_t * +ddt_repair_start(ddt_t *ddt, const blkptr_t *bp) +{ + ddt_key_t ddk; + ddt_entry_t *dde; + enum ddt_type type; + enum ddt_class class; + + ddt_key_fill(&ddk, bp); + + dde = ddt_alloc(&ddk); + + for (type = 0; type < DDT_TYPES; type++) { + for (class = 0; class < DDT_CLASSES; class++) { + /* + * We can only do repair if there are multiple copies + * of the block. For anything in the UNIQUE class, + * there's definitely only one copy, so don't even try. + */ + if (class != DDT_CLASS_UNIQUE && + ddt_object_lookup(ddt, type, class, dde) == 0) + return (dde); + } + } + + bzero(dde->dde_phys, sizeof (dde->dde_phys)); + + return (dde); +} + +void +ddt_repair_done(ddt_t *ddt, ddt_entry_t *dde) +{ + avl_index_t where; + + ddt_enter(ddt); + + if (dde->dde_repair_data != NULL && spa_writeable(ddt->ddt_spa) && + avl_find(&ddt->ddt_repair_tree, dde, &where) == NULL) + avl_insert(&ddt->ddt_repair_tree, dde, where); + else + ddt_free(dde); + + ddt_exit(ddt); +} + +static void +ddt_repair_entry_done(zio_t *zio) +{ + ddt_entry_t *rdde = zio->io_private; + + ddt_free(rdde); +} + +static void +ddt_repair_entry(ddt_t *ddt, ddt_entry_t *dde, ddt_entry_t *rdde, zio_t *rio) +{ + ddt_phys_t *ddp = dde->dde_phys; + ddt_phys_t *rddp = rdde->dde_phys; + ddt_key_t *ddk = &dde->dde_key; + ddt_key_t *rddk = &rdde->dde_key; + zio_t *zio; + blkptr_t blk; + int p; + + zio = zio_null(rio, rio->io_spa, NULL, + ddt_repair_entry_done, rdde, rio->io_flags); + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++, rddp++) { + if (ddp->ddp_phys_birth == 0 || + ddp->ddp_phys_birth != rddp->ddp_phys_birth || + bcmp(ddp->ddp_dva, rddp->ddp_dva, sizeof (ddp->ddp_dva))) + continue; + ddt_bp_create(ddt->ddt_checksum, ddk, ddp, &blk); + zio_nowait(zio_rewrite(zio, zio->io_spa, 0, &blk, + rdde->dde_repair_data, DDK_GET_PSIZE(rddk), NULL, NULL, + ZIO_PRIORITY_SYNC_WRITE, ZIO_DDT_CHILD_FLAGS(zio), NULL)); + } + + zio_nowait(zio); +} + +static void +ddt_repair_table(ddt_t *ddt, zio_t *rio) +{ + spa_t *spa = ddt->ddt_spa; + ddt_entry_t *dde, *rdde_next, *rdde; + avl_tree_t *t = &ddt->ddt_repair_tree; + blkptr_t blk; + + if (spa_sync_pass(spa) > 1) + return; + + ddt_enter(ddt); + for (rdde = avl_first(t); rdde != NULL; rdde = rdde_next) { + rdde_next = AVL_NEXT(t, rdde); + avl_remove(&ddt->ddt_repair_tree, rdde); + ddt_exit(ddt); + ddt_bp_create(ddt->ddt_checksum, &rdde->dde_key, NULL, &blk); + dde = ddt_repair_start(ddt, &blk); + ddt_repair_entry(ddt, dde, rdde, rio); + ddt_repair_done(ddt, dde); + ddt_enter(ddt); + } + ddt_exit(ddt); +} + +static void +ddt_sync_entry(ddt_t *ddt, ddt_entry_t *dde, dmu_tx_t *tx, uint64_t txg) +{ + dsl_pool_t *dp = ddt->ddt_spa->spa_dsl_pool; + ddt_phys_t *ddp = dde->dde_phys; + ddt_key_t *ddk = &dde->dde_key; + enum ddt_type otype = dde->dde_type; + enum ddt_type ntype = DDT_TYPE_CURRENT; + enum ddt_class oclass = dde->dde_class; + enum ddt_class nclass; + uint64_t total_refcnt = 0; + int p; + + ASSERT(dde->dde_loaded); + ASSERT(!dde->dde_loading); + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) { + ASSERT(dde->dde_lead_zio[p] == NULL); + if (ddp->ddp_phys_birth == 0) { + ASSERT(ddp->ddp_refcnt == 0); + continue; + } + if (p == DDT_PHYS_DITTO) { + if (ddt_ditto_copies_needed(ddt, dde, NULL) == 0) + ddt_phys_free(ddt, ddk, ddp, txg); + continue; + } + if (ddp->ddp_refcnt == 0) + ddt_phys_free(ddt, ddk, ddp, txg); + total_refcnt += ddp->ddp_refcnt; + } + + if (dde->dde_phys[DDT_PHYS_DITTO].ddp_phys_birth != 0) + nclass = DDT_CLASS_DITTO; + else if (total_refcnt > 1) + nclass = DDT_CLASS_DUPLICATE; + else + nclass = DDT_CLASS_UNIQUE; + + if (otype != DDT_TYPES && + (otype != ntype || oclass != nclass || total_refcnt == 0)) { + VERIFY(ddt_object_remove(ddt, otype, oclass, dde, tx) == 0); + ASSERT(ddt_object_lookup(ddt, otype, oclass, dde) == ENOENT); + } + + if (total_refcnt != 0) { + dde->dde_type = ntype; + dde->dde_class = nclass; + ddt_stat_update(ddt, dde, 0); + if (!ddt_object_exists(ddt, ntype, nclass)) + ddt_object_create(ddt, ntype, nclass, tx); + VERIFY(ddt_object_update(ddt, ntype, nclass, dde, tx) == 0); + + /* + * If the class changes, the order that we scan this bp + * changes. If it decreases, we could miss it, so + * scan it right now. (This covers both class changing + * while we are doing ddt_walk(), and when we are + * traversing.) + */ + if (nclass < oclass) { + dsl_scan_ddt_entry(dp->dp_scan, + ddt->ddt_checksum, dde, tx); + } + } +} + +static void +ddt_sync_table(ddt_t *ddt, dmu_tx_t *tx, uint64_t txg) +{ + spa_t *spa = ddt->ddt_spa; + ddt_entry_t *dde; + void *cookie = NULL; + enum ddt_type type; + enum ddt_class class; + + if (avl_numnodes(&ddt->ddt_tree) == 0) + return; + + ASSERT(spa->spa_uberblock.ub_version >= SPA_VERSION_DEDUP); + + if (spa->spa_ddt_stat_object == 0) { + spa->spa_ddt_stat_object = zap_create_link(ddt->ddt_os, + DMU_OT_DDT_STATS, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_DDT_STATS, tx); + } + + while ((dde = avl_destroy_nodes(&ddt->ddt_tree, &cookie)) != NULL) { + ddt_sync_entry(ddt, dde, tx, txg); + ddt_free(dde); + } + + for (type = 0; type < DDT_TYPES; type++) { + uint64_t add, count = 0; + for (class = 0; class < DDT_CLASSES; class++) { + if (ddt_object_exists(ddt, type, class)) { + ddt_object_sync(ddt, type, class, tx); + VERIFY(ddt_object_count(ddt, type, class, + &add) == 0); + count += add; + } + } + for (class = 0; class < DDT_CLASSES; class++) { + if (count == 0 && ddt_object_exists(ddt, type, class)) + ddt_object_destroy(ddt, type, class, tx); + } + } + + bcopy(ddt->ddt_histogram, &ddt->ddt_histogram_cache, + sizeof (ddt->ddt_histogram)); +} + +void +ddt_sync(spa_t *spa, uint64_t txg) +{ + dmu_tx_t *tx; + zio_t *rio = zio_root(spa, NULL, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE); + enum zio_checksum c; + + ASSERT(spa_syncing_txg(spa) == txg); + + tx = dmu_tx_create_assigned(spa->spa_dsl_pool, txg); + + for (c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) { + ddt_t *ddt = spa->spa_ddt[c]; + if (ddt == NULL) + continue; + ddt_sync_table(ddt, tx, txg); + ddt_repair_table(ddt, rio); + } + + (void) zio_wait(rio); + + dmu_tx_commit(tx); +} + +int +ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde) +{ + do { + do { + do { + ddt_t *ddt = spa->spa_ddt[ddb->ddb_checksum]; + int error = ENOENT; + if (ddt_object_exists(ddt, ddb->ddb_type, + ddb->ddb_class)) { + error = ddt_object_walk(ddt, + ddb->ddb_type, ddb->ddb_class, + &ddb->ddb_cursor, dde); + } + dde->dde_type = ddb->ddb_type; + dde->dde_class = ddb->ddb_class; + if (error == 0) + return (0); + if (error != ENOENT) + return (error); + ddb->ddb_cursor = 0; + } while (++ddb->ddb_checksum < ZIO_CHECKSUM_FUNCTIONS); + ddb->ddb_checksum = 0; + } while (++ddb->ddb_type < DDT_TYPES); + ddb->ddb_type = 0; + } while (++ddb->ddb_class < DDT_CLASSES); + + return (SET_ERROR(ENOENT)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_dedup_prefetch, int, 0644); +MODULE_PARM_DESC(zfs_dedup_prefetch, "Enable prefetching dedup-ed blks"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/ddt_zap.c +++ linux-4.4.0/zfs/module/zfs/ddt_zap.c @@ -0,0 +1,157 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include + +int ddt_zap_leaf_blockshift = 12; +int ddt_zap_indirect_blockshift = 12; + +static int +ddt_zap_create(objset_t *os, uint64_t *objectp, dmu_tx_t *tx, boolean_t prehash) +{ + zap_flags_t flags = ZAP_FLAG_HASH64 | ZAP_FLAG_UINT64_KEY; + + if (prehash) + flags |= ZAP_FLAG_PRE_HASHED_KEY; + + *objectp = zap_create_flags(os, 0, flags, DMU_OT_DDT_ZAP, + ddt_zap_leaf_blockshift, ddt_zap_indirect_blockshift, + DMU_OT_NONE, 0, tx); + + return (*objectp == 0 ? ENOTSUP : 0); +} + +static int +ddt_zap_destroy(objset_t *os, uint64_t object, dmu_tx_t *tx) +{ + return (zap_destroy(os, object, tx)); +} + +static int +ddt_zap_lookup(objset_t *os, uint64_t object, ddt_entry_t *dde) +{ + uchar_t *cbuf; + uint64_t one, csize; + int error; + + cbuf = kmem_alloc(sizeof (dde->dde_phys) + 1, KM_SLEEP); + + error = zap_length_uint64(os, object, (uint64_t *)&dde->dde_key, + DDT_KEY_WORDS, &one, &csize); + if (error) + goto out; + + ASSERT(one == 1); + ASSERT(csize <= (sizeof (dde->dde_phys) + 1)); + + error = zap_lookup_uint64(os, object, (uint64_t *)&dde->dde_key, + DDT_KEY_WORDS, 1, csize, cbuf); + if (error) + goto out; + + ddt_decompress(cbuf, dde->dde_phys, csize, sizeof (dde->dde_phys)); +out: + kmem_free(cbuf, sizeof (dde->dde_phys) + 1); + + return (error); +} + +static void +ddt_zap_prefetch(objset_t *os, uint64_t object, ddt_entry_t *dde) +{ + (void) zap_prefetch_uint64(os, object, (uint64_t *)&dde->dde_key, + DDT_KEY_WORDS); +} + +static int +ddt_zap_update(objset_t *os, uint64_t object, ddt_entry_t *dde, dmu_tx_t *tx) +{ + uchar_t cbuf[sizeof (dde->dde_phys) + 1]; + uint64_t csize; + + csize = ddt_compress(dde->dde_phys, cbuf, + sizeof (dde->dde_phys), sizeof (cbuf)); + + return (zap_update_uint64(os, object, (uint64_t *)&dde->dde_key, + DDT_KEY_WORDS, 1, csize, cbuf, tx)); +} + +static int +ddt_zap_remove(objset_t *os, uint64_t object, ddt_entry_t *dde, dmu_tx_t *tx) +{ + return (zap_remove_uint64(os, object, (uint64_t *)&dde->dde_key, + DDT_KEY_WORDS, tx)); +} + +static int +ddt_zap_walk(objset_t *os, uint64_t object, ddt_entry_t *dde, uint64_t *walk) +{ + zap_cursor_t zc; + zap_attribute_t za; + int error; + + zap_cursor_init_serialized(&zc, os, object, *walk); + if ((error = zap_cursor_retrieve(&zc, &za)) == 0) { + uchar_t cbuf[sizeof (dde->dde_phys) + 1]; + uint64_t csize = za.za_num_integers; + ASSERT(za.za_integer_length == 1); + error = zap_lookup_uint64(os, object, (uint64_t *)za.za_name, + DDT_KEY_WORDS, 1, csize, cbuf); + ASSERT(error == 0); + if (error == 0) { + ddt_decompress(cbuf, dde->dde_phys, csize, + sizeof (dde->dde_phys)); + dde->dde_key = *(ddt_key_t *)za.za_name; + } + zap_cursor_advance(&zc); + *walk = zap_cursor_serialize(&zc); + } + zap_cursor_fini(&zc); + return (error); +} + +static int +ddt_zap_count(objset_t *os, uint64_t object, uint64_t *count) +{ + return (zap_count(os, object, count)); +} + +const ddt_ops_t ddt_zap_ops = { + "zap", + ddt_zap_create, + ddt_zap_destroy, + ddt_zap_lookup, + ddt_zap_prefetch, + ddt_zap_update, + ddt_zap_remove, + ddt_zap_walk, + ddt_zap_count, +}; --- linux-4.4.0.orig/zfs/module/zfs/dmu.c +++ linux-4.4.0/zfs/module/zfs/dmu.c @@ -0,0 +1,2182 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#include +#endif + +/* + * Enable/disable nopwrite feature. + */ +int zfs_nopwrite_enabled = 1; + +const dmu_object_type_info_t dmu_ot[DMU_OT_NUMTYPES] = { + { DMU_BSWAP_UINT8, TRUE, "unallocated" }, + { DMU_BSWAP_ZAP, TRUE, "object directory" }, + { DMU_BSWAP_UINT64, TRUE, "object array" }, + { DMU_BSWAP_UINT8, TRUE, "packed nvlist" }, + { DMU_BSWAP_UINT64, TRUE, "packed nvlist size" }, + { DMU_BSWAP_UINT64, TRUE, "bpobj" }, + { DMU_BSWAP_UINT64, TRUE, "bpobj header" }, + { DMU_BSWAP_UINT64, TRUE, "SPA space map header" }, + { DMU_BSWAP_UINT64, TRUE, "SPA space map" }, + { DMU_BSWAP_UINT64, TRUE, "ZIL intent log" }, + { DMU_BSWAP_DNODE, TRUE, "DMU dnode" }, + { DMU_BSWAP_OBJSET, TRUE, "DMU objset" }, + { DMU_BSWAP_UINT64, TRUE, "DSL directory" }, + { DMU_BSWAP_ZAP, TRUE, "DSL directory child map"}, + { DMU_BSWAP_ZAP, TRUE, "DSL dataset snap map" }, + { DMU_BSWAP_ZAP, TRUE, "DSL props" }, + { DMU_BSWAP_UINT64, TRUE, "DSL dataset" }, + { DMU_BSWAP_ZNODE, TRUE, "ZFS znode" }, + { DMU_BSWAP_OLDACL, TRUE, "ZFS V0 ACL" }, + { DMU_BSWAP_UINT8, FALSE, "ZFS plain file" }, + { DMU_BSWAP_ZAP, TRUE, "ZFS directory" }, + { DMU_BSWAP_ZAP, TRUE, "ZFS master node" }, + { DMU_BSWAP_ZAP, TRUE, "ZFS delete queue" }, + { DMU_BSWAP_UINT8, FALSE, "zvol object" }, + { DMU_BSWAP_ZAP, TRUE, "zvol prop" }, + { DMU_BSWAP_UINT8, FALSE, "other uint8[]" }, + { DMU_BSWAP_UINT64, FALSE, "other uint64[]" }, + { DMU_BSWAP_ZAP, TRUE, "other ZAP" }, + { DMU_BSWAP_ZAP, TRUE, "persistent error log" }, + { DMU_BSWAP_UINT8, TRUE, "SPA history" }, + { DMU_BSWAP_UINT64, TRUE, "SPA history offsets" }, + { DMU_BSWAP_ZAP, TRUE, "Pool properties" }, + { DMU_BSWAP_ZAP, TRUE, "DSL permissions" }, + { DMU_BSWAP_ACL, TRUE, "ZFS ACL" }, + { DMU_BSWAP_UINT8, TRUE, "ZFS SYSACL" }, + { DMU_BSWAP_UINT8, TRUE, "FUID table" }, + { DMU_BSWAP_UINT64, TRUE, "FUID table size" }, + { DMU_BSWAP_ZAP, TRUE, "DSL dataset next clones"}, + { DMU_BSWAP_ZAP, TRUE, "scan work queue" }, + { DMU_BSWAP_ZAP, TRUE, "ZFS user/group used" }, + { DMU_BSWAP_ZAP, TRUE, "ZFS user/group quota" }, + { DMU_BSWAP_ZAP, TRUE, "snapshot refcount tags"}, + { DMU_BSWAP_ZAP, TRUE, "DDT ZAP algorithm" }, + { DMU_BSWAP_ZAP, TRUE, "DDT statistics" }, + { DMU_BSWAP_UINT8, TRUE, "System attributes" }, + { DMU_BSWAP_ZAP, TRUE, "SA master node" }, + { DMU_BSWAP_ZAP, TRUE, "SA attr registration" }, + { DMU_BSWAP_ZAP, TRUE, "SA attr layouts" }, + { DMU_BSWAP_ZAP, TRUE, "scan translations" }, + { DMU_BSWAP_UINT8, FALSE, "deduplicated block" }, + { DMU_BSWAP_ZAP, TRUE, "DSL deadlist map" }, + { DMU_BSWAP_UINT64, TRUE, "DSL deadlist map hdr" }, + { DMU_BSWAP_ZAP, TRUE, "DSL dir clones" }, + { DMU_BSWAP_UINT64, TRUE, "bpobj subobj" } +}; + +const dmu_object_byteswap_info_t dmu_ot_byteswap[DMU_BSWAP_NUMFUNCS] = { + { byteswap_uint8_array, "uint8" }, + { byteswap_uint16_array, "uint16" }, + { byteswap_uint32_array, "uint32" }, + { byteswap_uint64_array, "uint64" }, + { zap_byteswap, "zap" }, + { dnode_buf_byteswap, "dnode" }, + { dmu_objset_byteswap, "objset" }, + { zfs_znode_byteswap, "znode" }, + { zfs_oldacl_byteswap, "oldacl" }, + { zfs_acl_byteswap, "acl" } +}; + +int +dmu_buf_hold_noread(objset_t *os, uint64_t object, uint64_t offset, + void *tag, dmu_buf_t **dbp) +{ + dnode_t *dn; + uint64_t blkid; + dmu_buf_impl_t *db; + int err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + blkid = dbuf_whichblock(dn, offset); + rw_enter(&dn->dn_struct_rwlock, RW_READER); + db = dbuf_hold(dn, blkid, tag); + rw_exit(&dn->dn_struct_rwlock); + dnode_rele(dn, FTAG); + + if (db == NULL) { + *dbp = NULL; + return (SET_ERROR(EIO)); + } + + *dbp = &db->db; + return (err); +} + +int +dmu_buf_hold(objset_t *os, uint64_t object, uint64_t offset, + void *tag, dmu_buf_t **dbp, int flags) +{ + int err; + int db_flags = DB_RF_CANFAIL; + + if (flags & DMU_READ_NO_PREFETCH) + db_flags |= DB_RF_NOPREFETCH; + + err = dmu_buf_hold_noread(os, object, offset, tag, dbp); + if (err == 0) { + dmu_buf_impl_t *db = (dmu_buf_impl_t *)(*dbp); + err = dbuf_read(db, NULL, db_flags); + if (err != 0) { + dbuf_rele(db, tag); + *dbp = NULL; + } + } + + return (err); +} + +int +dmu_bonus_max(void) +{ + return (DN_MAX_BONUSLEN); +} + +int +dmu_set_bonus(dmu_buf_t *db_fake, int newsize, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + int error; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + if (dn->dn_bonus != db) { + error = SET_ERROR(EINVAL); + } else if (newsize < 0 || newsize > db_fake->db_size) { + error = SET_ERROR(EINVAL); + } else { + dnode_setbonuslen(dn, newsize, tx); + error = 0; + } + + DB_DNODE_EXIT(db); + return (error); +} + +int +dmu_set_bonustype(dmu_buf_t *db_fake, dmu_object_type_t type, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + int error; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + if (!DMU_OT_IS_VALID(type)) { + error = SET_ERROR(EINVAL); + } else if (dn->dn_bonus != db) { + error = SET_ERROR(EINVAL); + } else { + dnode_setbonus_type(dn, type, tx); + error = 0; + } + + DB_DNODE_EXIT(db); + return (error); +} + +dmu_object_type_t +dmu_get_bonustype(dmu_buf_t *db_fake) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + dmu_object_type_t type; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + type = dn->dn_bonustype; + DB_DNODE_EXIT(db); + + return (type); +} + +int +dmu_rm_spill(objset_t *os, uint64_t object, dmu_tx_t *tx) +{ + dnode_t *dn; + int error; + + error = dnode_hold(os, object, FTAG, &dn); + dbuf_rm_spill(dn, tx); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + dnode_rm_spill(dn, tx); + rw_exit(&dn->dn_struct_rwlock); + dnode_rele(dn, FTAG); + return (error); +} + +/* + * returns ENOENT, EIO, or 0. + */ +int +dmu_bonus_hold(objset_t *os, uint64_t object, void *tag, dmu_buf_t **dbp) +{ + dnode_t *dn; + dmu_buf_impl_t *db; + int error; + + error = dnode_hold(os, object, FTAG, &dn); + if (error) + return (error); + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + if (dn->dn_bonus == NULL) { + rw_exit(&dn->dn_struct_rwlock); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + if (dn->dn_bonus == NULL) + dbuf_create_bonus(dn); + } + db = dn->dn_bonus; + + /* as long as the bonus buf is held, the dnode will be held */ + if (refcount_add(&db->db_holds, tag) == 1) { + VERIFY(dnode_add_ref(dn, db)); + atomic_inc_32(&dn->dn_dbufs_count); + } + + /* + * Wait to drop dn_struct_rwlock until after adding the bonus dbuf's + * hold and incrementing the dbuf count to ensure that dnode_move() sees + * a dnode hold for every dbuf. + */ + rw_exit(&dn->dn_struct_rwlock); + + dnode_rele(dn, FTAG); + + VERIFY(0 == dbuf_read(db, NULL, DB_RF_MUST_SUCCEED | DB_RF_NOPREFETCH)); + + *dbp = &db->db; + return (0); +} + +/* + * returns ENOENT, EIO, or 0. + * + * This interface will allocate a blank spill dbuf when a spill blk + * doesn't already exist on the dnode. + * + * if you only want to find an already existing spill db, then + * dmu_spill_hold_existing() should be used. + */ +int +dmu_spill_hold_by_dnode(dnode_t *dn, uint32_t flags, void *tag, dmu_buf_t **dbp) +{ + dmu_buf_impl_t *db = NULL; + int err; + + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_enter(&dn->dn_struct_rwlock, RW_READER); + + db = dbuf_hold(dn, DMU_SPILL_BLKID, tag); + + if ((flags & DB_RF_HAVESTRUCT) == 0) + rw_exit(&dn->dn_struct_rwlock); + + ASSERT(db != NULL); + err = dbuf_read(db, NULL, flags); + if (err == 0) + *dbp = &db->db; + else + dbuf_rele(db, tag); + return (err); +} + +int +dmu_spill_hold_existing(dmu_buf_t *bonus, void *tag, dmu_buf_t **dbp) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)bonus; + dnode_t *dn; + int err; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) { + err = SET_ERROR(EINVAL); + } else { + rw_enter(&dn->dn_struct_rwlock, RW_READER); + + if (!dn->dn_have_spill) { + err = SET_ERROR(ENOENT); + } else { + err = dmu_spill_hold_by_dnode(dn, + DB_RF_HAVESTRUCT | DB_RF_CANFAIL, tag, dbp); + } + + rw_exit(&dn->dn_struct_rwlock); + } + + DB_DNODE_EXIT(db); + return (err); +} + +int +dmu_spill_hold_by_bonus(dmu_buf_t *bonus, void *tag, dmu_buf_t **dbp) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)bonus; + dnode_t *dn; + int err; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + err = dmu_spill_hold_by_dnode(dn, DB_RF_CANFAIL, tag, dbp); + DB_DNODE_EXIT(db); + + return (err); +} + +/* + * Note: longer-term, we should modify all of the dmu_buf_*() interfaces + * to take a held dnode rather than -- the lookup is wasteful, + * and can induce severe lock contention when writing to several files + * whose dnodes are in the same block. + */ +static int +dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, + int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp, uint32_t flags) +{ + dmu_buf_t **dbp; + uint64_t blkid, nblks, i; + uint32_t dbuf_flags; + int err; + zio_t *zio; + + ASSERT(length <= DMU_MAX_ACCESS); + + dbuf_flags = DB_RF_CANFAIL | DB_RF_NEVERWAIT | DB_RF_HAVESTRUCT; + if (flags & DMU_READ_NO_PREFETCH || length > zfetch_array_rd_sz) + dbuf_flags |= DB_RF_NOPREFETCH; + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + if (dn->dn_datablkshift) { + int blkshift = dn->dn_datablkshift; + nblks = (P2ROUNDUP(offset+length, 1ULL<> blkshift; + } else { + if (offset + length > dn->dn_datablksz) { + zfs_panic_recover("zfs: accessing past end of object " + "%llx/%llx (size=%u access=%llu+%llu)", + (longlong_t)dn->dn_objset-> + os_dsl_dataset->ds_object, + (longlong_t)dn->dn_object, dn->dn_datablksz, + (longlong_t)offset, (longlong_t)length); + rw_exit(&dn->dn_struct_rwlock); + return (SET_ERROR(EIO)); + } + nblks = 1; + } + dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); + + zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); + blkid = dbuf_whichblock(dn, offset); + for (i = 0; i < nblks; i++) { + dmu_buf_impl_t *db = dbuf_hold(dn, blkid+i, tag); + if (db == NULL) { + rw_exit(&dn->dn_struct_rwlock); + dmu_buf_rele_array(dbp, nblks, tag); + zio_nowait(zio); + return (SET_ERROR(EIO)); + } + /* initiate async i/o */ + if (read) { + (void) dbuf_read(db, zio, dbuf_flags); + } + dbp[i] = &db->db; + } + rw_exit(&dn->dn_struct_rwlock); + + /* wait for async i/o */ + err = zio_wait(zio); + if (err) { + dmu_buf_rele_array(dbp, nblks, tag); + return (err); + } + + /* wait for other io to complete */ + if (read) { + for (i = 0; i < nblks; i++) { + dmu_buf_impl_t *db = (dmu_buf_impl_t *)dbp[i]; + mutex_enter(&db->db_mtx); + while (db->db_state == DB_READ || + db->db_state == DB_FILL) + cv_wait(&db->db_changed, &db->db_mtx); + if (db->db_state == DB_UNCACHED) + err = SET_ERROR(EIO); + mutex_exit(&db->db_mtx); + if (err) { + dmu_buf_rele_array(dbp, nblks, tag); + return (err); + } + } + } + + *numbufsp = nblks; + *dbpp = dbp; + return (0); +} + +static int +dmu_buf_hold_array(objset_t *os, uint64_t object, uint64_t offset, + uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp) +{ + dnode_t *dn; + int err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + + err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, + numbufsp, dbpp, DMU_READ_PREFETCH); + + dnode_rele(dn, FTAG); + + return (err); +} + +int +dmu_buf_hold_array_by_bonus(dmu_buf_t *db_fake, uint64_t offset, + uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + int err; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, + numbufsp, dbpp, DMU_READ_PREFETCH); + DB_DNODE_EXIT(db); + + return (err); +} + +void +dmu_buf_rele_array(dmu_buf_t **dbp_fake, int numbufs, void *tag) +{ + int i; + dmu_buf_impl_t **dbp = (dmu_buf_impl_t **)dbp_fake; + + if (numbufs == 0) + return; + + for (i = 0; i < numbufs; i++) { + if (dbp[i]) + dbuf_rele(dbp[i], tag); + } + + kmem_free(dbp, sizeof (dmu_buf_t *) * numbufs); +} + +/* + * Issue prefetch i/os for the given blocks. + * + * Note: The assumption is that we *know* these blocks will be needed + * almost immediately. Therefore, the prefetch i/os will be issued at + * ZIO_PRIORITY_SYNC_READ + * + * Note: indirect blocks and other metadata will be read synchronously, + * causing this function to block if they are not already cached. + */ +void +dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) +{ + dnode_t *dn; + uint64_t blkid; + int nblks, err; + + if (zfs_prefetch_disable) + return; + + if (len == 0) { /* they're interested in the bonus buffer */ + dn = DMU_META_DNODE(os); + + if (object == 0 || object >= DN_MAX_OBJECT) + return; + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + blkid = dbuf_whichblock(dn, object * sizeof (dnode_phys_t)); + dbuf_prefetch(dn, blkid, ZIO_PRIORITY_SYNC_READ); + rw_exit(&dn->dn_struct_rwlock); + return; + } + + /* + * XXX - Note, if the dnode for the requested object is not + * already cached, we will do a *synchronous* read in the + * dnode_hold() call. The same is true for any indirects. + */ + err = dnode_hold(os, object, FTAG, &dn); + if (err != 0) + return; + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + if (dn->dn_datablkshift) { + int blkshift = dn->dn_datablkshift; + nblks = (P2ROUNDUP(offset + len, 1 << blkshift) - + P2ALIGN(offset, 1 << blkshift)) >> blkshift; + } else { + nblks = (offset < dn->dn_datablksz); + } + + if (nblks != 0) { + int i; + + blkid = dbuf_whichblock(dn, offset); + for (i = 0; i < nblks; i++) + dbuf_prefetch(dn, blkid + i, ZIO_PRIORITY_SYNC_READ); + } + + rw_exit(&dn->dn_struct_rwlock); + + dnode_rele(dn, FTAG); +} + +/* + * Get the next "chunk" of file data to free. We traverse the file from + * the end so that the file gets shorter over time (if we crashes in the + * middle, this will leave us in a better state). We find allocated file + * data by simply searching the allocated level 1 indirects. + * + * On input, *start should be the first offset that does not need to be + * freed (e.g. "offset + length"). On return, *start will be the first + * offset that should be freed. + */ +static int +get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum) +{ + uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1); + /* bytes of data covered by a level-1 indirect block */ + uint64_t iblkrange = + dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT); + uint64_t blks; + + ASSERT3U(minimum, <=, *start); + + if (*start - minimum <= iblkrange * maxblks) { + *start = minimum; + return (0); + } + ASSERT(ISP2(iblkrange)); + + for (blks = 0; *start > minimum && blks < maxblks; blks++) { + int err; + + /* + * dnode_next_offset(BACKWARDS) will find an allocated L1 + * indirect block at or before the input offset. We must + * decrement *start so that it is at the end of the region + * to search. + */ + (*start)--; + err = dnode_next_offset(dn, + DNODE_FIND_BACKWARDS, start, 2, 1, 0); + + /* if there are no indirect blocks before start, we are done */ + if (err == ESRCH) { + *start = minimum; + break; + } else if (err != 0) { + return (err); + } + + /* set start to the beginning of this L1 indirect */ + *start = P2ALIGN(*start, iblkrange); + } + if (*start < minimum) + *start = minimum; + return (0); +} + +static int +dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, + uint64_t length) +{ + uint64_t object_size; + int err; + + if (dn == NULL) + return (SET_ERROR(EINVAL)); + + object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; + if (offset >= object_size) + return (0); + + if (length == DMU_OBJECT_END || offset + length > object_size) + length = object_size - offset; + + while (length != 0) { + uint64_t chunk_end, chunk_begin; + dmu_tx_t *tx; + + chunk_end = chunk_begin = offset + length; + + /* move chunk_begin backwards to the beginning of this chunk */ + err = get_next_chunk(dn, &chunk_begin, offset); + if (err) + return (err); + ASSERT3U(chunk_begin, >=, offset); + ASSERT3U(chunk_begin, <=, chunk_end); + + tx = dmu_tx_create(os); + dmu_tx_hold_free(tx, dn->dn_object, + chunk_begin, chunk_end - chunk_begin); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) { + dmu_tx_abort(tx); + return (err); + } + dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx); + dmu_tx_commit(tx); + + length -= chunk_end - chunk_begin; + } + return (0); +} + +int +dmu_free_long_range(objset_t *os, uint64_t object, + uint64_t offset, uint64_t length) +{ + dnode_t *dn; + int err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err != 0) + return (err); + err = dmu_free_long_range_impl(os, dn, offset, length); + + /* + * It is important to zero out the maxblkid when freeing the entire + * file, so that (a) subsequent calls to dmu_free_long_range_impl() + * will take the fast path, and (b) dnode_reallocate() can verify + * that the entire file has been freed. + */ + if (err == 0 && offset == 0 && length == DMU_OBJECT_END) + dn->dn_maxblkid = 0; + + dnode_rele(dn, FTAG); + return (err); +} + +int +dmu_free_long_object(objset_t *os, uint64_t object) +{ + dmu_tx_t *tx; + int err; + + err = dmu_free_long_range(os, object, 0, DMU_OBJECT_END); + if (err != 0) + return (err); + + tx = dmu_tx_create(os); + dmu_tx_hold_bonus(tx, object); + dmu_tx_hold_free(tx, object, 0, DMU_OBJECT_END); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err == 0) { + err = dmu_object_free(os, object, tx); + dmu_tx_commit(tx); + } else { + dmu_tx_abort(tx); + } + + return (err); +} + +int +dmu_free_range(objset_t *os, uint64_t object, uint64_t offset, + uint64_t size, dmu_tx_t *tx) +{ + dnode_t *dn; + int err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + ASSERT(offset < UINT64_MAX); + ASSERT(size == -1ULL || size <= UINT64_MAX - offset); + dnode_free_range(dn, offset, size, tx); + dnode_rele(dn, FTAG); + return (0); +} + +int +dmu_read(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + void *buf, uint32_t flags) +{ + dnode_t *dn; + dmu_buf_t **dbp; + int numbufs, err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + + /* + * Deal with odd block sizes, where there can't be data past the first + * block. If we ever do the tail block optimization, we will need to + * handle that here as well. + */ + if (dn->dn_maxblkid == 0) { + uint64_t newsz = offset > dn->dn_datablksz ? 0 : + MIN(size, dn->dn_datablksz - offset); + bzero((char *)buf + newsz, size - newsz); + size = newsz; + } + + while (size > 0) { + uint64_t mylen = MIN(size, DMU_MAX_ACCESS / 2); + int i; + + /* + * NB: we could do this block-at-a-time, but it's nice + * to be reading in parallel. + */ + err = dmu_buf_hold_array_by_dnode(dn, offset, mylen, + TRUE, FTAG, &numbufs, &dbp, flags); + if (err) + break; + + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + dmu_buf_t *db = dbp[i]; + + ASSERT(size > 0); + + bufoff = offset - db->db_offset; + tocpy = MIN(db->db_size - bufoff, size); + + (void) memcpy(buf, (char *)db->db_data + bufoff, tocpy); + + offset += tocpy; + size -= tocpy; + buf = (char *)buf + tocpy; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); + } + dnode_rele(dn, FTAG); + return (err); +} + +void +dmu_write(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + const void *buf, dmu_tx_t *tx) +{ + dmu_buf_t **dbp; + int numbufs, i; + + if (size == 0) + return; + + VERIFY0(dmu_buf_hold_array(os, object, offset, size, + FALSE, FTAG, &numbufs, &dbp)); + + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + dmu_buf_t *db = dbp[i]; + + ASSERT(size > 0); + + bufoff = offset - db->db_offset; + tocpy = MIN(db->db_size - bufoff, size); + + ASSERT(i == 0 || i == numbufs-1 || tocpy == db->db_size); + + if (tocpy == db->db_size) + dmu_buf_will_fill(db, tx); + else + dmu_buf_will_dirty(db, tx); + + (void) memcpy((char *)db->db_data + bufoff, buf, tocpy); + + if (tocpy == db->db_size) + dmu_buf_fill_done(db, tx); + + offset += tocpy; + size -= tocpy; + buf = (char *)buf + tocpy; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); +} + +void +dmu_prealloc(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + dmu_tx_t *tx) +{ + dmu_buf_t **dbp; + int numbufs, i; + + if (size == 0) + return; + + VERIFY(0 == dmu_buf_hold_array(os, object, offset, size, + FALSE, FTAG, &numbufs, &dbp)); + + for (i = 0; i < numbufs; i++) { + dmu_buf_t *db = dbp[i]; + + dmu_buf_will_not_fill(db, tx); + } + dmu_buf_rele_array(dbp, numbufs, FTAG); +} + +void +dmu_write_embedded(objset_t *os, uint64_t object, uint64_t offset, + void *data, uint8_t etype, uint8_t comp, int uncompressed_size, + int compressed_size, int byteorder, dmu_tx_t *tx) +{ + dmu_buf_t *db; + + ASSERT3U(etype, <, NUM_BP_EMBEDDED_TYPES); + ASSERT3U(comp, <, ZIO_COMPRESS_FUNCTIONS); + VERIFY0(dmu_buf_hold_noread(os, object, offset, + FTAG, &db)); + + dmu_buf_write_embedded(db, + data, (bp_embedded_type_t)etype, (enum zio_compress)comp, + uncompressed_size, compressed_size, byteorder, tx); + + dmu_buf_rele(db, FTAG); +} + +/* + * DMU support for xuio + */ +kstat_t *xuio_ksp = NULL; + +typedef struct xuio_stats { + /* loaned yet not returned arc_buf */ + kstat_named_t xuiostat_onloan_rbuf; + kstat_named_t xuiostat_onloan_wbuf; + /* whether a copy is made when loaning out a read buffer */ + kstat_named_t xuiostat_rbuf_copied; + kstat_named_t xuiostat_rbuf_nocopy; + /* whether a copy is made when assigning a write buffer */ + kstat_named_t xuiostat_wbuf_copied; + kstat_named_t xuiostat_wbuf_nocopy; +} xuio_stats_t; + +static xuio_stats_t xuio_stats = { + { "onloan_read_buf", KSTAT_DATA_UINT64 }, + { "onloan_write_buf", KSTAT_DATA_UINT64 }, + { "read_buf_copied", KSTAT_DATA_UINT64 }, + { "read_buf_nocopy", KSTAT_DATA_UINT64 }, + { "write_buf_copied", KSTAT_DATA_UINT64 }, + { "write_buf_nocopy", KSTAT_DATA_UINT64 } +}; + +#define XUIOSTAT_INCR(stat, val) \ + atomic_add_64(&xuio_stats.stat.value.ui64, (val)) +#define XUIOSTAT_BUMP(stat) XUIOSTAT_INCR(stat, 1) + +int +dmu_xuio_init(xuio_t *xuio, int nblk) +{ + dmu_xuio_t *priv; + uio_t *uio = &xuio->xu_uio; + + uio->uio_iovcnt = nblk; + uio->uio_iov = kmem_zalloc(nblk * sizeof (iovec_t), KM_SLEEP); + + priv = kmem_zalloc(sizeof (dmu_xuio_t), KM_SLEEP); + priv->cnt = nblk; + priv->bufs = kmem_zalloc(nblk * sizeof (arc_buf_t *), KM_SLEEP); + priv->iovp = (iovec_t *)uio->uio_iov; + XUIO_XUZC_PRIV(xuio) = priv; + + if (XUIO_XUZC_RW(xuio) == UIO_READ) + XUIOSTAT_INCR(xuiostat_onloan_rbuf, nblk); + else + XUIOSTAT_INCR(xuiostat_onloan_wbuf, nblk); + + return (0); +} + +void +dmu_xuio_fini(xuio_t *xuio) +{ + dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio); + int nblk = priv->cnt; + + kmem_free(priv->iovp, nblk * sizeof (iovec_t)); + kmem_free(priv->bufs, nblk * sizeof (arc_buf_t *)); + kmem_free(priv, sizeof (dmu_xuio_t)); + + if (XUIO_XUZC_RW(xuio) == UIO_READ) + XUIOSTAT_INCR(xuiostat_onloan_rbuf, -nblk); + else + XUIOSTAT_INCR(xuiostat_onloan_wbuf, -nblk); +} + +/* + * Initialize iov[priv->next] and priv->bufs[priv->next] with { off, n, abuf } + * and increase priv->next by 1. + */ +int +dmu_xuio_add(xuio_t *xuio, arc_buf_t *abuf, offset_t off, size_t n) +{ + struct iovec *iov; + uio_t *uio = &xuio->xu_uio; + dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio); + int i = priv->next++; + + ASSERT(i < priv->cnt); + ASSERT(off + n <= arc_buf_size(abuf)); + iov = (iovec_t *)uio->uio_iov + i; + iov->iov_base = (char *)abuf->b_data + off; + iov->iov_len = n; + priv->bufs[i] = abuf; + return (0); +} + +int +dmu_xuio_cnt(xuio_t *xuio) +{ + dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio); + return (priv->cnt); +} + +arc_buf_t * +dmu_xuio_arcbuf(xuio_t *xuio, int i) +{ + dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio); + + ASSERT(i < priv->cnt); + return (priv->bufs[i]); +} + +void +dmu_xuio_clear(xuio_t *xuio, int i) +{ + dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio); + + ASSERT(i < priv->cnt); + priv->bufs[i] = NULL; +} + +static void +xuio_stat_init(void) +{ + xuio_ksp = kstat_create("zfs", 0, "xuio_stats", "misc", + KSTAT_TYPE_NAMED, sizeof (xuio_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + if (xuio_ksp != NULL) { + xuio_ksp->ks_data = &xuio_stats; + kstat_install(xuio_ksp); + } +} + +static void +xuio_stat_fini(void) +{ + if (xuio_ksp != NULL) { + kstat_delete(xuio_ksp); + xuio_ksp = NULL; + } +} + +void +xuio_stat_wbuf_copied() +{ + XUIOSTAT_BUMP(xuiostat_wbuf_copied); +} + +void +xuio_stat_wbuf_nocopy() +{ + XUIOSTAT_BUMP(xuiostat_wbuf_nocopy); +} + +#ifdef _KERNEL + +/* + * Copy up to size bytes between arg_buf and req based on the data direction + * described by the req. If an entire req's data cannot be transfered in one + * pass, you should pass in @req_offset to indicate where to continue. The + * return value is the number of bytes successfully copied to arg_buf. + */ +static int +dmu_bio_copy(void *arg_buf, int size, struct bio *bio, size_t bio_offset) +{ + struct bio_vec bv, *bvp = &bv; + bvec_iterator_t iter; + char *bv_buf; + int tocpy, bv_len, bv_offset; + int offset = 0; + + bio_for_each_segment4(bv, bvp, bio, iter) { + + /* + * Fully consumed the passed arg_buf. We use goto here because + * rq_for_each_segment is a double loop + */ + ASSERT3S(offset, <=, size); + if (size == offset) + goto out; + + /* Skip already copied bvp */ + if (bio_offset >= bvp->bv_len) { + bio_offset -= bvp->bv_len; + continue; + } + + bv_len = bvp->bv_len - bio_offset; + bv_offset = bvp->bv_offset + bio_offset; + bio_offset = 0; + + tocpy = MIN(bv_len, size - offset); + ASSERT3S(tocpy, >=, 0); + + bv_buf = page_address(bvp->bv_page) + bv_offset; + ASSERT3P(bv_buf, !=, NULL); + + if (bio_data_dir(bio) == WRITE) + memcpy(arg_buf + offset, bv_buf, tocpy); + else + memcpy(bv_buf, arg_buf + offset, tocpy); + + offset += tocpy; + } +out: + return (offset); +} + +int +dmu_read_bio(objset_t *os, uint64_t object, struct bio *bio) +{ + uint64_t offset = BIO_BI_SECTOR(bio) << 9; + uint64_t size = BIO_BI_SIZE(bio); + dmu_buf_t **dbp; + int numbufs, i, err; + size_t bio_offset; + + /* + * NB: we could do this block-at-a-time, but it's nice + * to be reading in parallel. + */ + err = dmu_buf_hold_array(os, object, offset, size, TRUE, FTAG, + &numbufs, &dbp); + if (err) + return (err); + + bio_offset = 0; + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + int didcpy; + dmu_buf_t *db = dbp[i]; + + bufoff = offset - db->db_offset; + ASSERT3S(bufoff, >=, 0); + + tocpy = MIN(db->db_size - bufoff, size); + if (tocpy == 0) + break; + + didcpy = dmu_bio_copy(db->db_data + bufoff, tocpy, bio, + bio_offset); + + if (didcpy < tocpy) + err = EIO; + + if (err) + break; + + size -= tocpy; + offset += didcpy; + bio_offset += didcpy; + err = 0; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); + + return (err); +} + +int +dmu_write_bio(objset_t *os, uint64_t object, struct bio *bio, dmu_tx_t *tx) +{ + uint64_t offset = BIO_BI_SECTOR(bio) << 9; + uint64_t size = BIO_BI_SIZE(bio); + dmu_buf_t **dbp; + int numbufs, i, err; + size_t bio_offset; + + if (size == 0) + return (0); + + err = dmu_buf_hold_array(os, object, offset, size, FALSE, FTAG, + &numbufs, &dbp); + if (err) + return (err); + + bio_offset = 0; + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + int didcpy; + dmu_buf_t *db = dbp[i]; + + bufoff = offset - db->db_offset; + ASSERT3S(bufoff, >=, 0); + + tocpy = MIN(db->db_size - bufoff, size); + if (tocpy == 0) + break; + + ASSERT(i == 0 || i == numbufs-1 || tocpy == db->db_size); + + if (tocpy == db->db_size) + dmu_buf_will_fill(db, tx); + else + dmu_buf_will_dirty(db, tx); + + didcpy = dmu_bio_copy(db->db_data + bufoff, tocpy, bio, + bio_offset); + + if (tocpy == db->db_size) + dmu_buf_fill_done(db, tx); + + if (didcpy < tocpy) + err = EIO; + + if (err) + break; + + size -= tocpy; + offset += didcpy; + bio_offset += didcpy; + err = 0; + } + + dmu_buf_rele_array(dbp, numbufs, FTAG); + return (err); +} + +static int +dmu_read_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size) +{ + dmu_buf_t **dbp; + int numbufs, i, err; + xuio_t *xuio = NULL; + + /* + * NB: we could do this block-at-a-time, but it's nice + * to be reading in parallel. + */ + err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, + TRUE, FTAG, &numbufs, &dbp, 0); + if (err) + return (err); + + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + dmu_buf_t *db = dbp[i]; + + ASSERT(size > 0); + + bufoff = uio->uio_loffset - db->db_offset; + tocpy = MIN(db->db_size - bufoff, size); + + if (xuio) { + dmu_buf_impl_t *dbi = (dmu_buf_impl_t *)db; + arc_buf_t *dbuf_abuf = dbi->db_buf; + arc_buf_t *abuf = dbuf_loan_arcbuf(dbi); + err = dmu_xuio_add(xuio, abuf, bufoff, tocpy); + if (!err) { + uio->uio_resid -= tocpy; + uio->uio_loffset += tocpy; + } + + if (abuf == dbuf_abuf) + XUIOSTAT_BUMP(xuiostat_rbuf_nocopy); + else + XUIOSTAT_BUMP(xuiostat_rbuf_copied); + } else { + err = uiomove((char *)db->db_data + bufoff, tocpy, + UIO_READ, uio); + } + if (err) + break; + + size -= tocpy; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); + + return (err); +} + +/* + * Read 'size' bytes into the uio buffer. + * From object zdb->db_object. + * Starting at offset uio->uio_loffset. + * + * If the caller already has a dbuf in the target object + * (e.g. its bonus buffer), this routine is faster than dmu_read_uio(), + * because we don't have to find the dnode_t for the object. + */ +int +dmu_read_uio_dbuf(dmu_buf_t *zdb, uio_t *uio, uint64_t size) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)zdb; + dnode_t *dn; + int err; + + if (size == 0) + return (0); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + err = dmu_read_uio_dnode(dn, uio, size); + DB_DNODE_EXIT(db); + + return (err); +} + +/* + * Read 'size' bytes into the uio buffer. + * From the specified object + * Starting at offset uio->uio_loffset. + */ +int +dmu_read_uio(objset_t *os, uint64_t object, uio_t *uio, uint64_t size) +{ + dnode_t *dn; + int err; + + if (size == 0) + return (0); + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + + err = dmu_read_uio_dnode(dn, uio, size); + + dnode_rele(dn, FTAG); + + return (err); +} + +static int +dmu_write_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size, dmu_tx_t *tx) +{ + dmu_buf_t **dbp; + int numbufs; + int err = 0; + int i; + + err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, + FALSE, FTAG, &numbufs, &dbp, DMU_READ_PREFETCH); + if (err) + return (err); + + for (i = 0; i < numbufs; i++) { + uint64_t tocpy; + int64_t bufoff; + dmu_buf_t *db = dbp[i]; + + ASSERT(size > 0); + + bufoff = uio->uio_loffset - db->db_offset; + tocpy = MIN(db->db_size - bufoff, size); + + ASSERT(i == 0 || i == numbufs-1 || tocpy == db->db_size); + + if (tocpy == db->db_size) + dmu_buf_will_fill(db, tx); + else + dmu_buf_will_dirty(db, tx); + + /* + * XXX uiomove could block forever (eg.nfs-backed + * pages). There needs to be a uiolockdown() function + * to lock the pages in memory, so that uiomove won't + * block. + */ + err = uiomove((char *)db->db_data + bufoff, tocpy, + UIO_WRITE, uio); + + if (tocpy == db->db_size) + dmu_buf_fill_done(db, tx); + + if (err) + break; + + size -= tocpy; + } + + dmu_buf_rele_array(dbp, numbufs, FTAG); + return (err); +} + +/* + * Write 'size' bytes from the uio buffer. + * To object zdb->db_object. + * Starting at offset uio->uio_loffset. + * + * If the caller already has a dbuf in the target object + * (e.g. its bonus buffer), this routine is faster than dmu_write_uio(), + * because we don't have to find the dnode_t for the object. + */ +int +dmu_write_uio_dbuf(dmu_buf_t *zdb, uio_t *uio, uint64_t size, + dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)zdb; + dnode_t *dn; + int err; + + if (size == 0) + return (0); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + err = dmu_write_uio_dnode(dn, uio, size, tx); + DB_DNODE_EXIT(db); + + return (err); +} + +/* + * Write 'size' bytes from the uio buffer. + * To the specified object. + * Starting at offset uio->uio_loffset. + */ +int +dmu_write_uio(objset_t *os, uint64_t object, uio_t *uio, uint64_t size, + dmu_tx_t *tx) +{ + dnode_t *dn; + int err; + + if (size == 0) + return (0); + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + + err = dmu_write_uio_dnode(dn, uio, size, tx); + + dnode_rele(dn, FTAG); + + return (err); +} +#endif /* _KERNEL */ + +/* + * Allocate a loaned anonymous arc buffer. + */ +arc_buf_t * +dmu_request_arcbuf(dmu_buf_t *handle, int size) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)handle; + + return (arc_loan_buf(db->db_objset->os_spa, size)); +} + +/* + * Free a loaned arc buffer. + */ +void +dmu_return_arcbuf(arc_buf_t *buf) +{ + arc_return_buf(buf, FTAG); + VERIFY(arc_buf_remove_ref(buf, FTAG)); +} + +/* + * When possible directly assign passed loaned arc buffer to a dbuf. + * If this is not possible copy the contents of passed arc buf via + * dmu_write(). + */ +void +dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, + dmu_tx_t *tx) +{ + dmu_buf_impl_t *dbuf = (dmu_buf_impl_t *)handle; + dnode_t *dn; + dmu_buf_impl_t *db; + uint32_t blksz = (uint32_t)arc_buf_size(buf); + uint64_t blkid; + + DB_DNODE_ENTER(dbuf); + dn = DB_DNODE(dbuf); + rw_enter(&dn->dn_struct_rwlock, RW_READER); + blkid = dbuf_whichblock(dn, offset); + VERIFY((db = dbuf_hold(dn, blkid, FTAG)) != NULL); + rw_exit(&dn->dn_struct_rwlock); + DB_DNODE_EXIT(dbuf); + + /* + * We can only assign if the offset is aligned, the arc buf is the + * same size as the dbuf, and the dbuf is not metadata. It + * can't be metadata because the loaned arc buf comes from the + * user-data kmem area. + */ + if (offset == db->db.db_offset && blksz == db->db.db_size && + DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA) { + dbuf_assign_arcbuf(db, buf, tx); + dbuf_rele(db, FTAG); + } else { + objset_t *os; + uint64_t object; + + DB_DNODE_ENTER(dbuf); + dn = DB_DNODE(dbuf); + os = dn->dn_objset; + object = dn->dn_object; + DB_DNODE_EXIT(dbuf); + + dbuf_rele(db, FTAG); + dmu_write(os, object, offset, blksz, buf->b_data, tx); + dmu_return_arcbuf(buf); + XUIOSTAT_BUMP(xuiostat_wbuf_copied); + } +} + +typedef struct { + dbuf_dirty_record_t *dsa_dr; + dmu_sync_cb_t *dsa_done; + zgd_t *dsa_zgd; + dmu_tx_t *dsa_tx; +} dmu_sync_arg_t; + +/* ARGSUSED */ +static void +dmu_sync_ready(zio_t *zio, arc_buf_t *buf, void *varg) +{ + dmu_sync_arg_t *dsa = varg; + dmu_buf_t *db = dsa->dsa_zgd->zgd_db; + blkptr_t *bp = zio->io_bp; + + if (zio->io_error == 0) { + if (BP_IS_HOLE(bp)) { + /* + * A block of zeros may compress to a hole, but the + * block size still needs to be known for replay. + */ + BP_SET_LSIZE(bp, db->db_size); + } else if (!BP_IS_EMBEDDED(bp)) { + ASSERT(BP_GET_LEVEL(bp) == 0); + bp->blk_fill = 1; + } + } +} + +static void +dmu_sync_late_arrival_ready(zio_t *zio) +{ + dmu_sync_ready(zio, NULL, zio->io_private); +} + +/* ARGSUSED */ +static void +dmu_sync_done(zio_t *zio, arc_buf_t *buf, void *varg) +{ + dmu_sync_arg_t *dsa = varg; + dbuf_dirty_record_t *dr = dsa->dsa_dr; + dmu_buf_impl_t *db = dr->dr_dbuf; + + mutex_enter(&db->db_mtx); + ASSERT(dr->dt.dl.dr_override_state == DR_IN_DMU_SYNC); + if (zio->io_error == 0) { + dr->dt.dl.dr_nopwrite = !!(zio->io_flags & ZIO_FLAG_NOPWRITE); + if (dr->dt.dl.dr_nopwrite) { + ASSERTV(blkptr_t *bp = zio->io_bp); + ASSERTV(blkptr_t *bp_orig = &zio->io_bp_orig); + ASSERTV(uint8_t chksum = BP_GET_CHECKSUM(bp_orig)); + + ASSERT(BP_EQUAL(bp, bp_orig)); + ASSERT(zio->io_prop.zp_compress != ZIO_COMPRESS_OFF); + ASSERT(zio_checksum_table[chksum].ci_dedup); + } + dr->dt.dl.dr_overridden_by = *zio->io_bp; + dr->dt.dl.dr_override_state = DR_OVERRIDDEN; + dr->dt.dl.dr_copies = zio->io_prop.zp_copies; + + /* + * Old style holes are filled with all zeros, whereas + * new-style holes maintain their lsize, type, level, + * and birth time (see zio_write_compress). While we + * need to reset the BP_SET_LSIZE() call that happened + * in dmu_sync_ready for old style holes, we do *not* + * want to wipe out the information contained in new + * style holes. Thus, only zero out the block pointer if + * it's an old style hole. + */ + if (BP_IS_HOLE(&dr->dt.dl.dr_overridden_by) && + dr->dt.dl.dr_overridden_by.blk_birth == 0) + BP_ZERO(&dr->dt.dl.dr_overridden_by); + } else { + dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; + } + cv_broadcast(&db->db_changed); + mutex_exit(&db->db_mtx); + + dsa->dsa_done(dsa->dsa_zgd, zio->io_error); + + kmem_free(dsa, sizeof (*dsa)); +} + +static void +dmu_sync_late_arrival_done(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + dmu_sync_arg_t *dsa = zio->io_private; + ASSERTV(blkptr_t *bp_orig = &zio->io_bp_orig); + + if (zio->io_error == 0 && !BP_IS_HOLE(bp)) { + /* + * If we didn't allocate a new block (i.e. ZIO_FLAG_NOPWRITE) + * then there is nothing to do here. Otherwise, free the + * newly allocated block in this txg. + */ + if (zio->io_flags & ZIO_FLAG_NOPWRITE) { + ASSERT(BP_EQUAL(bp, bp_orig)); + } else { + ASSERT(BP_IS_HOLE(bp_orig) || !BP_EQUAL(bp, bp_orig)); + ASSERT(zio->io_bp->blk_birth == zio->io_txg); + ASSERT(zio->io_txg > spa_syncing_txg(zio->io_spa)); + zio_free(zio->io_spa, zio->io_txg, zio->io_bp); + } + } + + dmu_tx_commit(dsa->dsa_tx); + + dsa->dsa_done(dsa->dsa_zgd, zio->io_error); + + kmem_free(dsa, sizeof (*dsa)); +} + +static int +dmu_sync_late_arrival(zio_t *pio, objset_t *os, dmu_sync_cb_t *done, zgd_t *zgd, + zio_prop_t *zp, zbookmark_phys_t *zb) +{ + dmu_sync_arg_t *dsa; + dmu_tx_t *tx; + + tx = dmu_tx_create(os); + dmu_tx_hold_space(tx, zgd->zgd_db->db_size); + if (dmu_tx_assign(tx, TXG_WAIT) != 0) { + dmu_tx_abort(tx); + /* Make zl_get_data do txg_waited_synced() */ + return (SET_ERROR(EIO)); + } + + dsa = kmem_alloc(sizeof (dmu_sync_arg_t), KM_SLEEP); + dsa->dsa_dr = NULL; + dsa->dsa_done = done; + dsa->dsa_zgd = zgd; + dsa->dsa_tx = tx; + + zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), zgd->zgd_bp, + zgd->zgd_db->db_data, zgd->zgd_db->db_size, zp, + dmu_sync_late_arrival_ready, NULL, dmu_sync_late_arrival_done, dsa, + ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL|ZIO_FLAG_FASTWRITE, zb)); + + return (0); +} + +/* + * Intent log support: sync the block associated with db to disk. + * N.B. and XXX: the caller is responsible for making sure that the + * data isn't changing while dmu_sync() is writing it. + * + * Return values: + * + * EEXIST: this txg has already been synced, so there's nothing to do. + * The caller should not log the write. + * + * ENOENT: the block was dbuf_free_range()'d, so there's nothing to do. + * The caller should not log the write. + * + * EALREADY: this block is already in the process of being synced. + * The caller should track its progress (somehow). + * + * EIO: could not do the I/O. + * The caller should do a txg_wait_synced(). + * + * 0: the I/O has been initiated. + * The caller should log this blkptr in the done callback. + * It is possible that the I/O will fail, in which case + * the error will be reported to the done callback and + * propagated to pio from zio_done(). + */ +int +dmu_sync(zio_t *pio, uint64_t txg, dmu_sync_cb_t *done, zgd_t *zgd) +{ + blkptr_t *bp = zgd->zgd_bp; + dmu_buf_impl_t *db = (dmu_buf_impl_t *)zgd->zgd_db; + objset_t *os = db->db_objset; + dsl_dataset_t *ds = os->os_dsl_dataset; + dbuf_dirty_record_t *dr; + dmu_sync_arg_t *dsa; + zbookmark_phys_t zb; + zio_prop_t zp; + dnode_t *dn; + + ASSERT(pio != NULL); + ASSERT(txg != 0); + + SET_BOOKMARK(&zb, ds->ds_object, + db->db.db_object, db->db_level, db->db_blkid); + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, &zp); + DB_DNODE_EXIT(db); + + /* + * If we're frozen (running ziltest), we always need to generate a bp. + */ + if (txg > spa_freeze_txg(os->os_spa)) + return (dmu_sync_late_arrival(pio, os, done, zgd, &zp, &zb)); + + /* + * Grabbing db_mtx now provides a barrier between dbuf_sync_leaf() + * and us. If we determine that this txg is not yet syncing, + * but it begins to sync a moment later, that's OK because the + * sync thread will block in dbuf_sync_leaf() until we drop db_mtx. + */ + mutex_enter(&db->db_mtx); + + if (txg <= spa_last_synced_txg(os->os_spa)) { + /* + * This txg has already synced. There's nothing to do. + */ + mutex_exit(&db->db_mtx); + return (SET_ERROR(EEXIST)); + } + + if (txg <= spa_syncing_txg(os->os_spa)) { + /* + * This txg is currently syncing, so we can't mess with + * the dirty record anymore; just write a new log block. + */ + mutex_exit(&db->db_mtx); + return (dmu_sync_late_arrival(pio, os, done, zgd, &zp, &zb)); + } + + dr = db->db_last_dirty; + while (dr && dr->dr_txg != txg) + dr = dr->dr_next; + + if (dr == NULL) { + /* + * There's no dr for this dbuf, so it must have been freed. + * There's no need to log writes to freed blocks, so we're done. + */ + mutex_exit(&db->db_mtx); + return (SET_ERROR(ENOENT)); + } + + ASSERT(dr->dr_next == NULL || dr->dr_next->dr_txg < txg); + + /* + * Assume the on-disk data is X, the current syncing data (in + * txg - 1) is Y, and the current in-memory data is Z (currently + * in dmu_sync). + * + * We usually want to perform a nopwrite if X and Z are the + * same. However, if Y is different (i.e. the BP is going to + * change before this write takes effect), then a nopwrite will + * be incorrect - we would override with X, which could have + * been freed when Y was written. + * + * (Note that this is not a concern when we are nop-writing from + * syncing context, because X and Y must be identical, because + * all previous txgs have been synced.) + * + * Therefore, we disable nopwrite if the current BP could change + * before this TXG. There are two ways it could change: by + * being dirty (dr_next is non-NULL), or by being freed + * (dnode_block_freed()). This behavior is verified by + * zio_done(), which VERIFYs that the override BP is identical + * to the on-disk BP. + */ + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + if (dr->dr_next != NULL || dnode_block_freed(dn, db->db_blkid)) + zp.zp_nopwrite = B_FALSE; + DB_DNODE_EXIT(db); + + ASSERT(dr->dr_txg == txg); + if (dr->dt.dl.dr_override_state == DR_IN_DMU_SYNC || + dr->dt.dl.dr_override_state == DR_OVERRIDDEN) { + /* + * We have already issued a sync write for this buffer, + * or this buffer has already been synced. It could not + * have been dirtied since, or we would have cleared the state. + */ + mutex_exit(&db->db_mtx); + return (SET_ERROR(EALREADY)); + } + + ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN); + dr->dt.dl.dr_override_state = DR_IN_DMU_SYNC; + mutex_exit(&db->db_mtx); + + dsa = kmem_alloc(sizeof (dmu_sync_arg_t), KM_SLEEP); + dsa->dsa_dr = dr; + dsa->dsa_done = done; + dsa->dsa_zgd = zgd; + dsa->dsa_tx = NULL; + + zio_nowait(arc_write(pio, os->os_spa, txg, + bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), + DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, + NULL, dmu_sync_done, dsa, ZIO_PRIORITY_SYNC_WRITE, + ZIO_FLAG_CANFAIL, &zb)); + + return (0); +} + +int +dmu_object_set_blocksize(objset_t *os, uint64_t object, uint64_t size, int ibs, + dmu_tx_t *tx) +{ + dnode_t *dn; + int err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + err = dnode_set_blksz(dn, size, ibs, tx); + dnode_rele(dn, FTAG); + return (err); +} + +void +dmu_object_set_checksum(objset_t *os, uint64_t object, uint8_t checksum, + dmu_tx_t *tx) +{ + dnode_t *dn; + + /* + * Send streams include each object's checksum function. This + * check ensures that the receiving system can understand the + * checksum function transmitted. + */ + ASSERT3U(checksum, <, ZIO_CHECKSUM_LEGACY_FUNCTIONS); + + VERIFY0(dnode_hold(os, object, FTAG, &dn)); + ASSERT3U(checksum, <, ZIO_CHECKSUM_FUNCTIONS); + dn->dn_checksum = checksum; + dnode_setdirty(dn, tx); + dnode_rele(dn, FTAG); +} + +void +dmu_object_set_compress(objset_t *os, uint64_t object, uint8_t compress, + dmu_tx_t *tx) +{ + dnode_t *dn; + + /* + * Send streams include each object's compression function. This + * check ensures that the receiving system can understand the + * compression function transmitted. + */ + ASSERT3U(compress, <, ZIO_COMPRESS_LEGACY_FUNCTIONS); + + VERIFY0(dnode_hold(os, object, FTAG, &dn)); + dn->dn_compress = compress; + dnode_setdirty(dn, tx); + dnode_rele(dn, FTAG); +} + +int zfs_mdcomp_disable = 0; + +/* + * When the "redundant_metadata" property is set to "most", only indirect + * blocks of this level and higher will have an additional ditto block. + */ +int zfs_redundant_metadata_most_ditto_level = 2; + +void +dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) +{ + dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; + boolean_t ismd = (level > 0 || DMU_OT_IS_METADATA(type) || + (wp & WP_SPILL)); + enum zio_checksum checksum = os->os_checksum; + enum zio_compress compress = os->os_compress; + enum zio_checksum dedup_checksum = os->os_dedup_checksum; + boolean_t dedup = B_FALSE; + boolean_t nopwrite = B_FALSE; + boolean_t dedup_verify = os->os_dedup_verify; + int copies = os->os_copies; + + /* + * We maintain different write policies for each of the following + * types of data: + * 1. metadata + * 2. preallocated blocks (i.e. level-0 blocks of a dump device) + * 3. all other level 0 blocks + */ + if (ismd) { + if (zfs_mdcomp_disable) { + compress = ZIO_COMPRESS_EMPTY; + } else { + /* + * XXX -- we should design a compression algorithm + * that specializes in arrays of bps. + */ + compress = zio_compress_select(os->os_spa, + ZIO_COMPRESS_ON, ZIO_COMPRESS_ON); + } + + /* + * Metadata always gets checksummed. If the data + * checksum is multi-bit correctable, and it's not a + * ZBT-style checksum, then it's suitable for metadata + * as well. Otherwise, the metadata checksum defaults + * to fletcher4. + */ + if (zio_checksum_table[checksum].ci_correctable < 1 || + zio_checksum_table[checksum].ci_eck) + checksum = ZIO_CHECKSUM_FLETCHER_4; + + if (os->os_redundant_metadata == ZFS_REDUNDANT_METADATA_ALL || + (os->os_redundant_metadata == + ZFS_REDUNDANT_METADATA_MOST && + (level >= zfs_redundant_metadata_most_ditto_level || + DMU_OT_IS_METADATA(type) || (wp & WP_SPILL)))) + copies++; + } else if (wp & WP_NOFILL) { + ASSERT(level == 0); + + /* + * If we're writing preallocated blocks, we aren't actually + * writing them so don't set any policy properties. These + * blocks are currently only used by an external subsystem + * outside of zfs (i.e. dump) and not written by the zio + * pipeline. + */ + compress = ZIO_COMPRESS_OFF; + checksum = ZIO_CHECKSUM_OFF; + } else { + compress = zio_compress_select(os->os_spa, dn->dn_compress, + compress); + + checksum = (dedup_checksum == ZIO_CHECKSUM_OFF) ? + zio_checksum_select(dn->dn_checksum, checksum) : + dedup_checksum; + + /* + * Determine dedup setting. If we are in dmu_sync(), + * we won't actually dedup now because that's all + * done in syncing context; but we do want to use the + * dedup checkum. If the checksum is not strong + * enough to ensure unique signatures, force + * dedup_verify. + */ + if (dedup_checksum != ZIO_CHECKSUM_OFF) { + dedup = (wp & WP_DMU_SYNC) ? B_FALSE : B_TRUE; + if (!zio_checksum_table[checksum].ci_dedup) + dedup_verify = B_TRUE; + } + + /* + * Enable nopwrite if we have a cryptographically secure + * checksum that has no known collisions (i.e. SHA-256) + * and compression is enabled. We don't enable nopwrite if + * dedup is enabled as the two features are mutually exclusive. + */ + nopwrite = (!dedup && zio_checksum_table[checksum].ci_dedup && + compress != ZIO_COMPRESS_OFF && zfs_nopwrite_enabled); + } + + zp->zp_checksum = checksum; + zp->zp_compress = compress; + zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; + zp->zp_level = level; + zp->zp_copies = MIN(copies, spa_max_replication(os->os_spa)); + zp->zp_dedup = dedup; + zp->zp_dedup_verify = dedup && dedup_verify; + zp->zp_nopwrite = nopwrite; +} + +int +dmu_offset_next(objset_t *os, uint64_t object, boolean_t hole, uint64_t *off) +{ + dnode_t *dn; + int i, err; + + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + /* + * Sync any current changes before + * we go trundling through the block pointers. + */ + for (i = 0; i < TXG_SIZE; i++) { + if (list_link_active(&dn->dn_dirty_link[i])) + break; + } + if (i != TXG_SIZE) { + dnode_rele(dn, FTAG); + txg_wait_synced(dmu_objset_pool(os), 0); + err = dnode_hold(os, object, FTAG, &dn); + if (err) + return (err); + } + + err = dnode_next_offset(dn, (hole ? DNODE_FIND_HOLE : 0), off, 1, 1, 0); + dnode_rele(dn, FTAG); + + return (err); +} + +void +__dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi) +{ + dnode_phys_t *dnp = dn->dn_phys; + int i; + + doi->doi_data_block_size = dn->dn_datablksz; + doi->doi_metadata_block_size = dn->dn_indblkshift ? + 1ULL << dn->dn_indblkshift : 0; + doi->doi_type = dn->dn_type; + doi->doi_bonus_type = dn->dn_bonustype; + doi->doi_bonus_size = dn->dn_bonuslen; + doi->doi_indirection = dn->dn_nlevels; + doi->doi_checksum = dn->dn_checksum; + doi->doi_compress = dn->dn_compress; + doi->doi_nblkptr = dn->dn_nblkptr; + doi->doi_physical_blocks_512 = (DN_USED_BYTES(dnp) + 256) >> 9; + doi->doi_max_offset = (dn->dn_maxblkid + 1) * dn->dn_datablksz; + doi->doi_fill_count = 0; + for (i = 0; i < dnp->dn_nblkptr; i++) + doi->doi_fill_count += BP_GET_FILL(&dnp->dn_blkptr[i]); +} + +void +dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi) +{ + rw_enter(&dn->dn_struct_rwlock, RW_READER); + mutex_enter(&dn->dn_mtx); + + __dmu_object_info_from_dnode(dn, doi); + + mutex_exit(&dn->dn_mtx); + rw_exit(&dn->dn_struct_rwlock); +} + +/* + * Get information on a DMU object. + * If doi is NULL, just indicates whether the object exists. + */ +int +dmu_object_info(objset_t *os, uint64_t object, dmu_object_info_t *doi) +{ + dnode_t *dn; + int err = dnode_hold(os, object, FTAG, &dn); + + if (err) + return (err); + + if (doi != NULL) + dmu_object_info_from_dnode(dn, doi); + + dnode_rele(dn, FTAG); + return (0); +} + +/* + * As above, but faster; can be used when you have a held dbuf in hand. + */ +void +dmu_object_info_from_db(dmu_buf_t *db_fake, dmu_object_info_t *doi) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + + DB_DNODE_ENTER(db); + dmu_object_info_from_dnode(DB_DNODE(db), doi); + DB_DNODE_EXIT(db); +} + +/* + * Faster still when you only care about the size. + * This is specifically optimized for zfs_getattr(). + */ +void +dmu_object_size_from_db(dmu_buf_t *db_fake, uint32_t *blksize, + u_longlong_t *nblk512) +{ + dmu_buf_impl_t *db = (dmu_buf_impl_t *)db_fake; + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + + *blksize = dn->dn_datablksz; + /* add 1 for dnode space */ + *nblk512 = ((DN_USED_BYTES(dn->dn_phys) + SPA_MINBLOCKSIZE/2) >> + SPA_MINBLOCKSHIFT) + 1; + DB_DNODE_EXIT(db); +} + +void +byteswap_uint64_array(void *vbuf, size_t size) +{ + uint64_t *buf = vbuf; + size_t count = size >> 3; + int i; + + ASSERT((size & 7) == 0); + + for (i = 0; i < count; i++) + buf[i] = BSWAP_64(buf[i]); +} + +void +byteswap_uint32_array(void *vbuf, size_t size) +{ + uint32_t *buf = vbuf; + size_t count = size >> 2; + int i; + + ASSERT((size & 3) == 0); + + for (i = 0; i < count; i++) + buf[i] = BSWAP_32(buf[i]); +} + +void +byteswap_uint16_array(void *vbuf, size_t size) +{ + uint16_t *buf = vbuf; + size_t count = size >> 1; + int i; + + ASSERT((size & 1) == 0); + + for (i = 0; i < count; i++) + buf[i] = BSWAP_16(buf[i]); +} + +/* ARGSUSED */ +void +byteswap_uint8_array(void *vbuf, size_t size) +{ +} + +void +dmu_init(void) +{ + zfs_dbgmsg_init(); + sa_cache_init(); + xuio_stat_init(); + dmu_objset_init(); + dnode_init(); + dbuf_init(); + zfetch_init(); + dmu_tx_init(); + l2arc_init(); + arc_init(); +} + +void +dmu_fini(void) +{ + arc_fini(); /* arc depends on l2arc, so arc must go first */ + l2arc_fini(); + dmu_tx_fini(); + zfetch_fini(); + dbuf_fini(); + dnode_fini(); + dmu_objset_fini(); + xuio_stat_fini(); + sa_cache_fini(); + zfs_dbgmsg_fini(); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dmu_bonus_hold); +EXPORT_SYMBOL(dmu_buf_hold_array_by_bonus); +EXPORT_SYMBOL(dmu_buf_rele_array); +EXPORT_SYMBOL(dmu_prefetch); +EXPORT_SYMBOL(dmu_free_range); +EXPORT_SYMBOL(dmu_free_long_range); +EXPORT_SYMBOL(dmu_free_long_object); +EXPORT_SYMBOL(dmu_read); +EXPORT_SYMBOL(dmu_write); +EXPORT_SYMBOL(dmu_prealloc); +EXPORT_SYMBOL(dmu_object_info); +EXPORT_SYMBOL(dmu_object_info_from_dnode); +EXPORT_SYMBOL(dmu_object_info_from_db); +EXPORT_SYMBOL(dmu_object_size_from_db); +EXPORT_SYMBOL(dmu_object_set_blocksize); +EXPORT_SYMBOL(dmu_object_set_checksum); +EXPORT_SYMBOL(dmu_object_set_compress); +EXPORT_SYMBOL(dmu_write_policy); +EXPORT_SYMBOL(dmu_sync); +EXPORT_SYMBOL(dmu_request_arcbuf); +EXPORT_SYMBOL(dmu_return_arcbuf); +EXPORT_SYMBOL(dmu_assign_arcbuf); +EXPORT_SYMBOL(dmu_buf_hold); +EXPORT_SYMBOL(dmu_ot); + +module_param(zfs_mdcomp_disable, int, 0644); +MODULE_PARM_DESC(zfs_mdcomp_disable, "Disable meta data compression"); + +module_param(zfs_nopwrite_enabled, int, 0644); +MODULE_PARM_DESC(zfs_nopwrite_enabled, "Enable NOP writes"); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_diff.c +++ linux-4.4.0/zfs/module/zfs/dmu_diff.c @@ -0,0 +1,223 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct diffarg { + struct vnode *da_vp; /* file to which we are reporting */ + offset_t *da_offp; + int da_err; /* error that stopped diff search */ + dmu_diff_record_t da_ddr; +}; + +static int +write_record(struct diffarg *da) +{ + ssize_t resid; /* have to get resid to get detailed errno */ + + if (da->da_ddr.ddr_type == DDR_NONE) { + da->da_err = 0; + return (0); + } + + da->da_err = vn_rdwr(UIO_WRITE, da->da_vp, (caddr_t)&da->da_ddr, + sizeof (da->da_ddr), 0, UIO_SYSSPACE, FAPPEND, + RLIM64_INFINITY, CRED(), &resid); + *da->da_offp += sizeof (da->da_ddr); + return (da->da_err); +} + +static int +report_free_dnode_range(struct diffarg *da, uint64_t first, uint64_t last) +{ + ASSERT(first <= last); + if (da->da_ddr.ddr_type != DDR_FREE || + first != da->da_ddr.ddr_last + 1) { + if (write_record(da) != 0) + return (da->da_err); + da->da_ddr.ddr_type = DDR_FREE; + da->da_ddr.ddr_first = first; + da->da_ddr.ddr_last = last; + return (0); + } + da->da_ddr.ddr_last = last; + return (0); +} + +static int +report_dnode(struct diffarg *da, uint64_t object, dnode_phys_t *dnp) +{ + ASSERT(dnp != NULL); + if (dnp->dn_type == DMU_OT_NONE) + return (report_free_dnode_range(da, object, object)); + + if (da->da_ddr.ddr_type != DDR_INUSE || + object != da->da_ddr.ddr_last + 1) { + if (write_record(da) != 0) + return (da->da_err); + da->da_ddr.ddr_type = DDR_INUSE; + da->da_ddr.ddr_first = da->da_ddr.ddr_last = object; + return (0); + } + da->da_ddr.ddr_last = object; + return (0); +} + +#define DBP_SPAN(dnp, level) \ + (((uint64_t)dnp->dn_datablkszsec) << (SPA_MINBLOCKSHIFT + \ + (level) * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT))) + +/* ARGSUSED */ +static int +diff_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + struct diffarg *da = arg; + int err = 0; + + if (issig(JUSTLOOKING) && issig(FORREAL)) + return (SET_ERROR(EINTR)); + + if (zb->zb_object != DMU_META_DNODE_OBJECT) + return (0); + + if (BP_IS_HOLE(bp)) { + uint64_t span = DBP_SPAN(dnp, zb->zb_level); + uint64_t dnobj = (zb->zb_blkid * span) >> DNODE_SHIFT; + + err = report_free_dnode_range(da, dnobj, + dnobj + (span >> DNODE_SHIFT) - 1); + if (err) + return (err); + } else if (zb->zb_level == 0) { + dnode_phys_t *blk; + arc_buf_t *abuf; + arc_flags_t aflags = ARC_FLAG_WAIT; + int blksz = BP_GET_LSIZE(bp); + int i; + + if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, + &aflags, zb) != 0) + return (SET_ERROR(EIO)); + + blk = abuf->b_data; + for (i = 0; i < blksz >> DNODE_SHIFT; i++) { + uint64_t dnobj = (zb->zb_blkid << + (DNODE_BLOCK_SHIFT - DNODE_SHIFT)) + i; + err = report_dnode(da, dnobj, blk+i); + if (err) + break; + } + (void) arc_buf_remove_ref(abuf, &abuf); + if (err) + return (err); + /* Don't care about the data blocks */ + return (TRAVERSE_VISIT_NO_CHILDREN); + } + return (0); +} + +int +dmu_diff(const char *tosnap_name, const char *fromsnap_name, + struct vnode *vp, offset_t *offp) +{ + struct diffarg da; + dsl_dataset_t *fromsnap; + dsl_dataset_t *tosnap; + dsl_pool_t *dp; + int error; + uint64_t fromtxg; + + if (strchr(tosnap_name, '@') == NULL || + strchr(fromsnap_name, '@') == NULL) + return (SET_ERROR(EINVAL)); + + error = dsl_pool_hold(tosnap_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, tosnap_name, FTAG, &tosnap); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = dsl_dataset_hold(dp, fromsnap_name, FTAG, &fromsnap); + if (error != 0) { + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); + } + + if (!dsl_dataset_is_before(tosnap, fromsnap, 0)) { + dsl_dataset_rele(fromsnap, FTAG); + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + return (SET_ERROR(EXDEV)); + } + + fromtxg = dsl_dataset_phys(fromsnap)->ds_creation_txg; + dsl_dataset_rele(fromsnap, FTAG); + + dsl_dataset_long_hold(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + + da.da_vp = vp; + da.da_offp = offp; + da.da_ddr.ddr_type = DDR_NONE; + da.da_ddr.ddr_first = da.da_ddr.ddr_last = 0; + da.da_err = 0; + + error = traverse_dataset(tosnap, fromtxg, + TRAVERSE_PRE | TRAVERSE_PREFETCH_METADATA, diff_cb, &da); + + if (error != 0) { + da.da_err = error; + } else { + /* we set the da.da_err we return as side-effect */ + (void) write_record(&da); + } + + dsl_dataset_long_rele(tosnap, FTAG); + dsl_dataset_rele(tosnap, FTAG); + + return (da.da_err); +} --- linux-4.4.0.orig/zfs/module/zfs/dmu_object.c +++ linux-4.4.0/zfs/module/zfs/dmu_object.c @@ -0,0 +1,224 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + * Copyright 2014 HybridCluster. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +uint64_t +dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int blocksize, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + uint64_t object; + uint64_t L2_dnode_count = DNODES_PER_BLOCK << + (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); + dnode_t *dn = NULL; + int restarted = B_FALSE; + + mutex_enter(&os->os_obj_lock); + for (;;) { + object = os->os_obj_next; + /* + * Each time we polish off an L2 bp worth of dnodes + * (2^13 objects), move to another L2 bp that's still + * reasonably sparse (at most 1/4 full). Look from the + * beginning once, but after that keep looking from here. + * If we can't find one, just keep going from here. + */ + if (P2PHASE(object, L2_dnode_count) == 0) { + uint64_t offset = restarted ? object << DNODE_SHIFT : 0; + int error = dnode_next_offset(DMU_META_DNODE(os), + DNODE_FIND_HOLE, + &offset, 2, DNODES_PER_BLOCK >> 2, 0); + restarted = B_TRUE; + if (error == 0) + object = offset >> DNODE_SHIFT; + } + os->os_obj_next = ++object; + + /* + * XXX We should check for an i/o error here and return + * up to our caller. Actually we should pre-read it in + * dmu_tx_assign(), but there is currently no mechanism + * to do so. + */ + (void) dnode_hold_impl(os, object, DNODE_MUST_BE_FREE, + FTAG, &dn); + if (dn) + break; + + if (dmu_object_next(os, &object, B_TRUE, 0) == 0) + os->os_obj_next = object - 1; + } + + dnode_allocate(dn, ot, blocksize, 0, bonustype, bonuslen, tx); + dnode_rele(dn, FTAG); + + mutex_exit(&os->os_obj_lock); + + dmu_tx_add_new_object(tx, os, object); + return (object); +} + +int +dmu_object_claim(objset_t *os, uint64_t object, dmu_object_type_t ot, + int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + dnode_t *dn; + int err; + + if (object == DMU_META_DNODE_OBJECT && !dmu_tx_private_ok(tx)) + return (SET_ERROR(EBADF)); + + err = dnode_hold_impl(os, object, DNODE_MUST_BE_FREE, FTAG, &dn); + if (err) + return (err); + dnode_allocate(dn, ot, blocksize, 0, bonustype, bonuslen, tx); + dnode_rele(dn, FTAG); + + dmu_tx_add_new_object(tx, os, object); + return (0); +} + +int +dmu_object_reclaim(objset_t *os, uint64_t object, dmu_object_type_t ot, + int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + dnode_t *dn; + int err; + + if (object == DMU_META_DNODE_OBJECT) + return (SET_ERROR(EBADF)); + + err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, + FTAG, &dn); + if (err) + return (err); + + dnode_reallocate(dn, ot, blocksize, bonustype, bonuslen, tx); + + dnode_rele(dn, FTAG); + return (err); +} + +int +dmu_object_free(objset_t *os, uint64_t object, dmu_tx_t *tx) +{ + dnode_t *dn; + int err; + + ASSERT(object != DMU_META_DNODE_OBJECT || dmu_tx_private_ok(tx)); + + err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, + FTAG, &dn); + if (err) + return (err); + + ASSERT(dn->dn_type != DMU_OT_NONE); + dnode_free_range(dn, 0, DMU_OBJECT_END, tx); + dnode_free(dn, tx); + dnode_rele(dn, FTAG); + + return (0); +} + +int +dmu_object_next(objset_t *os, uint64_t *objectp, boolean_t hole, uint64_t txg) +{ + uint64_t offset = (*objectp + 1) << DNODE_SHIFT; + int error; + + error = dnode_next_offset(DMU_META_DNODE(os), + (hole ? DNODE_FIND_HOLE : 0), &offset, 0, DNODES_PER_BLOCK, txg); + + *objectp = offset >> DNODE_SHIFT; + + return (error); +} + +/* + * Turn this object from old_type into DMU_OTN_ZAP_METADATA, and bump the + * refcount on SPA_FEATURE_EXTENSIBLE_DATASET. + * + * Only for use from syncing context, on MOS objects. + */ +void +dmu_object_zapify(objset_t *mos, uint64_t object, dmu_object_type_t old_type, + dmu_tx_t *tx) +{ + dnode_t *dn; + + ASSERT(dmu_tx_is_syncing(tx)); + + VERIFY0(dnode_hold(mos, object, FTAG, &dn)); + if (dn->dn_type == DMU_OTN_ZAP_METADATA) { + dnode_rele(dn, FTAG); + return; + } + ASSERT3U(dn->dn_type, ==, old_type); + ASSERT0(dn->dn_maxblkid); + dn->dn_next_type[tx->tx_txg & TXG_MASK] = dn->dn_type = + DMU_OTN_ZAP_METADATA; + dnode_setdirty(dn, tx); + dnode_rele(dn, FTAG); + + mzap_create_impl(mos, object, 0, 0, tx); + + spa_feature_incr(dmu_objset_spa(mos), + SPA_FEATURE_EXTENSIBLE_DATASET, tx); +} + +void +dmu_object_free_zapified(objset_t *mos, uint64_t object, dmu_tx_t *tx) +{ + dnode_t *dn; + dmu_object_type_t t; + + ASSERT(dmu_tx_is_syncing(tx)); + + VERIFY0(dnode_hold(mos, object, FTAG, &dn)); + t = dn->dn_type; + dnode_rele(dn, FTAG); + + if (t == DMU_OTN_ZAP_METADATA) { + spa_feature_decr(dmu_objset_spa(mos), + SPA_FEATURE_EXTENSIBLE_DATASET, tx); + } + VERIFY0(dmu_object_free(mos, object, tx)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dmu_object_alloc); +EXPORT_SYMBOL(dmu_object_claim); +EXPORT_SYMBOL(dmu_object_reclaim); +EXPORT_SYMBOL(dmu_object_free); +EXPORT_SYMBOL(dmu_object_next); +EXPORT_SYMBOL(dmu_object_zapify); +EXPORT_SYMBOL(dmu_object_free_zapified); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_objset.c +++ linux-4.4.0/zfs/module/zfs/dmu_objset.c @@ -0,0 +1,2048 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + * Copyright (c) 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2015, STRATO AG, Inc. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Needed to close a window in dnode_move() that allows the objset to be freed + * before it can be safely accessed. + */ +krwlock_t os_lock; + +/* + * Tunable to overwrite the maximum number of threads for the parallization + * of dmu_objset_find_dp, needed to speed up the import of pools with many + * datasets. + * Default is 4 times the number of leaf vdevs. + */ +int dmu_find_threads = 0; + +static void dmu_objset_find_dp_cb(void *arg); + +void +dmu_objset_init(void) +{ + rw_init(&os_lock, NULL, RW_DEFAULT, NULL); +} + +void +dmu_objset_fini(void) +{ + rw_destroy(&os_lock); +} + +spa_t * +dmu_objset_spa(objset_t *os) +{ + return (os->os_spa); +} + +zilog_t * +dmu_objset_zil(objset_t *os) +{ + return (os->os_zil); +} + +dsl_pool_t * +dmu_objset_pool(objset_t *os) +{ + dsl_dataset_t *ds; + + if ((ds = os->os_dsl_dataset) != NULL && ds->ds_dir) + return (ds->ds_dir->dd_pool); + else + return (spa_get_dsl(os->os_spa)); +} + +dsl_dataset_t * +dmu_objset_ds(objset_t *os) +{ + return (os->os_dsl_dataset); +} + +dmu_objset_type_t +dmu_objset_type(objset_t *os) +{ + return (os->os_phys->os_type); +} + +void +dmu_objset_name(objset_t *os, char *buf) +{ + dsl_dataset_name(os->os_dsl_dataset, buf); +} + +uint64_t +dmu_objset_id(objset_t *os) +{ + dsl_dataset_t *ds = os->os_dsl_dataset; + + return (ds ? ds->ds_object : 0); +} + +zfs_sync_type_t +dmu_objset_syncprop(objset_t *os) +{ + return (os->os_sync); +} + +zfs_logbias_op_t +dmu_objset_logbias(objset_t *os) +{ + return (os->os_logbias); +} + +static void +checksum_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance should have been done by now. + */ + ASSERT(newval != ZIO_CHECKSUM_INHERIT); + + os->os_checksum = zio_checksum_select(newval, ZIO_CHECKSUM_ON_VALUE); +} + +static void +compression_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval != ZIO_COMPRESS_INHERIT); + + os->os_compress = zio_compress_select(os->os_spa, newval, + ZIO_COMPRESS_ON); +} + +static void +copies_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval > 0); + ASSERT(newval <= spa_max_replication(os->os_spa)); + + os->os_copies = newval; +} + +static void +dedup_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + spa_t *spa = os->os_spa; + enum zio_checksum checksum; + + /* + * Inheritance should have been done by now. + */ + ASSERT(newval != ZIO_CHECKSUM_INHERIT); + + checksum = zio_checksum_dedup_select(spa, newval, ZIO_CHECKSUM_OFF); + + os->os_dedup_checksum = checksum & ZIO_CHECKSUM_MASK; + os->os_dedup_verify = !!(checksum & ZIO_CHECKSUM_VERIFY); +} + +static void +primary_cache_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval == ZFS_CACHE_ALL || newval == ZFS_CACHE_NONE || + newval == ZFS_CACHE_METADATA); + + os->os_primary_cache = newval; +} + +static void +secondary_cache_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval == ZFS_CACHE_ALL || newval == ZFS_CACHE_NONE || + newval == ZFS_CACHE_METADATA); + + os->os_secondary_cache = newval; +} + +static void +sync_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval == ZFS_SYNC_STANDARD || newval == ZFS_SYNC_ALWAYS || + newval == ZFS_SYNC_DISABLED); + + os->os_sync = newval; + if (os->os_zil) + zil_set_sync(os->os_zil, newval); +} + +static void +redundant_metadata_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + /* + * Inheritance and range checking should have been done by now. + */ + ASSERT(newval == ZFS_REDUNDANT_METADATA_ALL || + newval == ZFS_REDUNDANT_METADATA_MOST); + + os->os_redundant_metadata = newval; +} + +static void +logbias_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + ASSERT(newval == ZFS_LOGBIAS_LATENCY || + newval == ZFS_LOGBIAS_THROUGHPUT); + os->os_logbias = newval; + if (os->os_zil) + zil_set_logbias(os->os_zil, newval); +} + +static void +recordsize_changed_cb(void *arg, uint64_t newval) +{ + objset_t *os = arg; + + os->os_recordsize = newval; +} + +void +dmu_objset_byteswap(void *buf, size_t size) +{ + objset_phys_t *osp = buf; + + ASSERT(size == OBJSET_OLD_PHYS_SIZE || size == sizeof (objset_phys_t)); + dnode_byteswap(&osp->os_meta_dnode); + byteswap_uint64_array(&osp->os_zil_header, sizeof (zil_header_t)); + osp->os_type = BSWAP_64(osp->os_type); + osp->os_flags = BSWAP_64(osp->os_flags); + if (size == sizeof (objset_phys_t)) { + dnode_byteswap(&osp->os_userused_dnode); + dnode_byteswap(&osp->os_groupused_dnode); + } +} + +int +dmu_objset_open_impl(spa_t *spa, dsl_dataset_t *ds, blkptr_t *bp, + objset_t **osp) +{ + objset_t *os; + int i, err; + + ASSERT(ds == NULL || MUTEX_HELD(&ds->ds_opening_lock)); + + os = kmem_zalloc(sizeof (objset_t), KM_SLEEP); + os->os_dsl_dataset = ds; + os->os_spa = spa; + os->os_rootbp = bp; + if (!BP_IS_HOLE(os->os_rootbp)) { + arc_flags_t aflags = ARC_FLAG_WAIT; + zbookmark_phys_t zb; + SET_BOOKMARK(&zb, ds ? ds->ds_object : DMU_META_OBJSET, + ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); + + if (DMU_OS_IS_L2CACHEABLE(os)) + aflags |= ARC_FLAG_L2CACHE; + if (DMU_OS_IS_L2COMPRESSIBLE(os)) + aflags |= ARC_FLAG_L2COMPRESS; + + dprintf_bp(os->os_rootbp, "reading %s", ""); + err = arc_read(NULL, spa, os->os_rootbp, + arc_getbuf_func, &os->os_phys_buf, + ZIO_PRIORITY_SYNC_READ, ZIO_FLAG_CANFAIL, &aflags, &zb); + if (err != 0) { + kmem_free(os, sizeof (objset_t)); + /* convert checksum errors into IO errors */ + if (err == ECKSUM) + err = SET_ERROR(EIO); + return (err); + } + + /* Increase the blocksize if we are permitted. */ + if (spa_version(spa) >= SPA_VERSION_USERSPACE && + arc_buf_size(os->os_phys_buf) < sizeof (objset_phys_t)) { + arc_buf_t *buf = arc_buf_alloc(spa, + sizeof (objset_phys_t), &os->os_phys_buf, + ARC_BUFC_METADATA); + bzero(buf->b_data, sizeof (objset_phys_t)); + bcopy(os->os_phys_buf->b_data, buf->b_data, + arc_buf_size(os->os_phys_buf)); + (void) arc_buf_remove_ref(os->os_phys_buf, + &os->os_phys_buf); + os->os_phys_buf = buf; + } + + os->os_phys = os->os_phys_buf->b_data; + os->os_flags = os->os_phys->os_flags; + } else { + int size = spa_version(spa) >= SPA_VERSION_USERSPACE ? + sizeof (objset_phys_t) : OBJSET_OLD_PHYS_SIZE; + os->os_phys_buf = arc_buf_alloc(spa, size, + &os->os_phys_buf, ARC_BUFC_METADATA); + os->os_phys = os->os_phys_buf->b_data; + bzero(os->os_phys, size); + } + + /* + * Note: the changed_cb will be called once before the register + * func returns, thus changing the checksum/compression from the + * default (fletcher2/off). Snapshots don't need to know about + * checksum/compression/copies. + */ + if (ds != NULL) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_PRIMARYCACHE), + primary_cache_changed_cb, os); + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_SECONDARYCACHE), + secondary_cache_changed_cb, os); + } + if (!ds->ds_is_snapshot) { + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_CHECKSUM), + checksum_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_COMPRESSION), + compression_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_COPIES), + copies_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_DEDUP), + dedup_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_LOGBIAS), + logbias_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_SYNC), + sync_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name( + ZFS_PROP_REDUNDANT_METADATA), + redundant_metadata_changed_cb, os); + } + if (err == 0) { + err = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_RECORDSIZE), + recordsize_changed_cb, os); + } + } + if (err != 0) { + VERIFY(arc_buf_remove_ref(os->os_phys_buf, + &os->os_phys_buf)); + kmem_free(os, sizeof (objset_t)); + return (err); + } + } else { + /* It's the meta-objset. */ + os->os_checksum = ZIO_CHECKSUM_FLETCHER_4; + os->os_compress = ZIO_COMPRESS_ON; + os->os_copies = spa_max_replication(spa); + os->os_dedup_checksum = ZIO_CHECKSUM_OFF; + os->os_dedup_verify = B_FALSE; + os->os_logbias = ZFS_LOGBIAS_LATENCY; + os->os_sync = ZFS_SYNC_STANDARD; + os->os_primary_cache = ZFS_CACHE_ALL; + os->os_secondary_cache = ZFS_CACHE_ALL; + } + + if (ds == NULL || !ds->ds_is_snapshot) + os->os_zil_header = os->os_phys->os_zil_header; + os->os_zil = zil_alloc(os, &os->os_zil_header); + + for (i = 0; i < TXG_SIZE; i++) { + list_create(&os->os_dirty_dnodes[i], sizeof (dnode_t), + offsetof(dnode_t, dn_dirty_link[i])); + list_create(&os->os_free_dnodes[i], sizeof (dnode_t), + offsetof(dnode_t, dn_dirty_link[i])); + } + list_create(&os->os_dnodes, sizeof (dnode_t), + offsetof(dnode_t, dn_link)); + list_create(&os->os_downgraded_dbufs, sizeof (dmu_buf_impl_t), + offsetof(dmu_buf_impl_t, db_link)); + + list_link_init(&os->os_evicting_node); + + mutex_init(&os->os_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&os->os_obj_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&os->os_user_ptr_lock, NULL, MUTEX_DEFAULT, NULL); + + dnode_special_open(os, &os->os_phys->os_meta_dnode, + DMU_META_DNODE_OBJECT, &os->os_meta_dnode); + if (arc_buf_size(os->os_phys_buf) >= sizeof (objset_phys_t)) { + dnode_special_open(os, &os->os_phys->os_userused_dnode, + DMU_USERUSED_OBJECT, &os->os_userused_dnode); + dnode_special_open(os, &os->os_phys->os_groupused_dnode, + DMU_GROUPUSED_OBJECT, &os->os_groupused_dnode); + } + + *osp = os; + return (0); +} + +int +dmu_objset_from_ds(dsl_dataset_t *ds, objset_t **osp) +{ + int err = 0; + + mutex_enter(&ds->ds_opening_lock); + if (ds->ds_objset == NULL) { + objset_t *os; + err = dmu_objset_open_impl(dsl_dataset_get_spa(ds), + ds, dsl_dataset_get_blkptr(ds), &os); + + if (err == 0) { + mutex_enter(&ds->ds_lock); + ASSERT(ds->ds_objset == NULL); + ds->ds_objset = os; + mutex_exit(&ds->ds_lock); + } + } + *osp = ds->ds_objset; + mutex_exit(&ds->ds_opening_lock); + return (err); +} + +/* + * Holds the pool while the objset is held. Therefore only one objset + * can be held at a time. + */ +int +dmu_objset_hold(const char *name, void *tag, objset_t **osp) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int err; + + err = dsl_pool_hold(name, tag, &dp); + if (err != 0) + return (err); + err = dsl_dataset_hold(dp, name, tag, &ds); + if (err != 0) { + dsl_pool_rele(dp, tag); + return (err); + } + + err = dmu_objset_from_ds(ds, osp); + if (err != 0) { + dsl_dataset_rele(ds, tag); + dsl_pool_rele(dp, tag); + } + + return (err); +} + +static int +dmu_objset_own_impl(dsl_dataset_t *ds, dmu_objset_type_t type, + boolean_t readonly, void *tag, objset_t **osp) +{ + int err; + + err = dmu_objset_from_ds(ds, osp); + if (err != 0) { + dsl_dataset_disown(ds, tag); + } else if (type != DMU_OST_ANY && type != (*osp)->os_phys->os_type) { + dsl_dataset_disown(ds, tag); + return (SET_ERROR(EINVAL)); + } else if (!readonly && dsl_dataset_is_snapshot(ds)) { + dsl_dataset_disown(ds, tag); + return (SET_ERROR(EROFS)); + } + return (err); +} + +/* + * dsl_pool must not be held when this is called. + * Upon successful return, there will be a longhold on the dataset, + * and the dsl_pool will not be held. + */ +int +dmu_objset_own(const char *name, dmu_objset_type_t type, + boolean_t readonly, void *tag, objset_t **osp) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int err; + + err = dsl_pool_hold(name, FTAG, &dp); + if (err != 0) + return (err); + err = dsl_dataset_own(dp, name, tag, &ds); + if (err != 0) { + dsl_pool_rele(dp, FTAG); + return (err); + } + err = dmu_objset_own_impl(ds, type, readonly, tag, osp); + dsl_pool_rele(dp, FTAG); + + return (err); +} + +int +dmu_objset_own_obj(dsl_pool_t *dp, uint64_t obj, dmu_objset_type_t type, + boolean_t readonly, void *tag, objset_t **osp) +{ + dsl_dataset_t *ds; + int err; + + err = dsl_dataset_own_obj(dp, obj, tag, &ds); + if (err != 0) + return (err); + + return (dmu_objset_own_impl(ds, type, readonly, tag, osp)); +} + +void +dmu_objset_rele(objset_t *os, void *tag) +{ + dsl_pool_t *dp = dmu_objset_pool(os); + dsl_dataset_rele(os->os_dsl_dataset, tag); + dsl_pool_rele(dp, tag); +} + +/* + * When we are called, os MUST refer to an objset associated with a dataset + * that is owned by 'tag'; that is, is held and long held by 'tag' and ds_owner + * == tag. We will then release and reacquire ownership of the dataset while + * holding the pool config_rwlock to avoid intervening namespace or ownership + * changes may occur. + * + * This exists solely to accommodate zfs_ioc_userspace_upgrade()'s desire to + * release the hold on its dataset and acquire a new one on the dataset of the + * same name so that it can be partially torn down and reconstructed. + */ +void +dmu_objset_refresh_ownership(objset_t *os, void *tag) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds, *newds; + char name[MAXNAMELEN]; + + ds = os->os_dsl_dataset; + VERIFY3P(ds, !=, NULL); + VERIFY3P(ds->ds_owner, ==, tag); + VERIFY(dsl_dataset_long_held(ds)); + + dsl_dataset_name(ds, name); + dp = dmu_objset_pool(os); + dsl_pool_config_enter(dp, FTAG); + dmu_objset_disown(os, tag); + VERIFY0(dsl_dataset_own(dp, name, tag, &newds)); + VERIFY3P(newds, ==, os->os_dsl_dataset); + dsl_pool_config_exit(dp, FTAG); +} + +void +dmu_objset_disown(objset_t *os, void *tag) +{ + dsl_dataset_disown(os->os_dsl_dataset, tag); +} + +void +dmu_objset_evict_dbufs(objset_t *os) +{ + dnode_t *dn_marker; + dnode_t *dn; + + dn_marker = kmem_alloc(sizeof (dnode_t), KM_SLEEP); + + mutex_enter(&os->os_lock); + dn = list_head(&os->os_dnodes); + while (dn != NULL) { + /* + * Skip dnodes without holds. We have to do this dance + * because dnode_add_ref() only works if there is already a + * hold. If the dnode has no holds, then it has no dbufs. + */ + if (dnode_add_ref(dn, FTAG)) { + list_insert_after(&os->os_dnodes, dn, dn_marker); + mutex_exit(&os->os_lock); + + dnode_evict_dbufs(dn); + dnode_rele(dn, FTAG); + + mutex_enter(&os->os_lock); + dn = list_next(&os->os_dnodes, dn_marker); + list_remove(&os->os_dnodes, dn_marker); + } else { + dn = list_next(&os->os_dnodes, dn); + } + } + mutex_exit(&os->os_lock); + + kmem_free(dn_marker, sizeof (dnode_t)); + + if (DMU_USERUSED_DNODE(os) != NULL) { + dnode_evict_dbufs(DMU_GROUPUSED_DNODE(os)); + dnode_evict_dbufs(DMU_USERUSED_DNODE(os)); + } + dnode_evict_dbufs(DMU_META_DNODE(os)); +} + +/* + * Objset eviction processing is split into into two pieces. + * The first marks the objset as evicting, evicts any dbufs that + * have a refcount of zero, and then queues up the objset for the + * second phase of eviction. Once os->os_dnodes has been cleared by + * dnode_buf_pageout()->dnode_destroy(), the second phase is executed. + * The second phase closes the special dnodes, dequeues the objset from + * the list of those undergoing eviction, and finally frees the objset. + * + * NOTE: Due to asynchronous eviction processing (invocation of + * dnode_buf_pageout()), it is possible for the meta dnode for the + * objset to have no holds even though os->os_dnodes is not empty. + */ +void +dmu_objset_evict(objset_t *os) +{ + int t; + + dsl_dataset_t *ds = os->os_dsl_dataset; + + for (t = 0; t < TXG_SIZE; t++) + ASSERT(!dmu_objset_is_dirty(os, t)); + + if (ds) { + if (!ds->ds_is_snapshot) { + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_CHECKSUM), + checksum_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_COMPRESSION), + compression_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_COPIES), + copies_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_DEDUP), + dedup_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_LOGBIAS), + logbias_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_SYNC), + sync_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_REDUNDANT_METADATA), + redundant_metadata_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_RECORDSIZE), + recordsize_changed_cb, os)); + } + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_PRIMARYCACHE), + primary_cache_changed_cb, os)); + VERIFY0(dsl_prop_unregister(ds, + zfs_prop_to_name(ZFS_PROP_SECONDARYCACHE), + secondary_cache_changed_cb, os)); + } + + if (os->os_sa) + sa_tear_down(os); + + dmu_objset_evict_dbufs(os); + + mutex_enter(&os->os_lock); + spa_evicting_os_register(os->os_spa, os); + if (list_is_empty(&os->os_dnodes)) { + mutex_exit(&os->os_lock); + dmu_objset_evict_done(os); + } else { + mutex_exit(&os->os_lock); + } +} + +void +dmu_objset_evict_done(objset_t *os) +{ + ASSERT3P(list_head(&os->os_dnodes), ==, NULL); + + dnode_special_close(&os->os_meta_dnode); + if (DMU_USERUSED_DNODE(os)) { + dnode_special_close(&os->os_userused_dnode); + dnode_special_close(&os->os_groupused_dnode); + } + zil_free(os->os_zil); + + VERIFY(arc_buf_remove_ref(os->os_phys_buf, &os->os_phys_buf)); + + /* + * This is a barrier to prevent the objset from going away in + * dnode_move() until we can safely ensure that the objset is still in + * use. We consider the objset valid before the barrier and invalid + * after the barrier. + */ + rw_enter(&os_lock, RW_READER); + rw_exit(&os_lock); + + mutex_destroy(&os->os_lock); + mutex_destroy(&os->os_obj_lock); + mutex_destroy(&os->os_user_ptr_lock); + spa_evicting_os_deregister(os->os_spa, os); + kmem_free(os, sizeof (objset_t)); +} + +timestruc_t +dmu_objset_snap_cmtime(objset_t *os) +{ + return (dsl_dir_snap_cmtime(os->os_dsl_dataset->ds_dir)); +} + +/* called from dsl for meta-objset */ +objset_t * +dmu_objset_create_impl(spa_t *spa, dsl_dataset_t *ds, blkptr_t *bp, + dmu_objset_type_t type, dmu_tx_t *tx) +{ + objset_t *os; + dnode_t *mdn; + + ASSERT(dmu_tx_is_syncing(tx)); + + if (ds != NULL) + VERIFY0(dmu_objset_from_ds(ds, &os)); + else + VERIFY0(dmu_objset_open_impl(spa, NULL, bp, &os)); + + mdn = DMU_META_DNODE(os); + + dnode_allocate(mdn, DMU_OT_DNODE, 1 << DNODE_BLOCK_SHIFT, + DN_MAX_INDBLKSHIFT, DMU_OT_NONE, 0, tx); + + /* + * We don't want to have to increase the meta-dnode's nlevels + * later, because then we could do it in quescing context while + * we are also accessing it in open context. + * + * This precaution is not necessary for the MOS (ds == NULL), + * because the MOS is only updated in syncing context. + * This is most fortunate: the MOS is the only objset that + * needs to be synced multiple times as spa_sync() iterates + * to convergence, so minimizing its dn_nlevels matters. + */ + if (ds != NULL) { + int levels = 1; + + /* + * Determine the number of levels necessary for the meta-dnode + * to contain DN_MAX_OBJECT dnodes. + */ + while ((uint64_t)mdn->dn_nblkptr << (mdn->dn_datablkshift + + (levels - 1) * (mdn->dn_indblkshift - SPA_BLKPTRSHIFT)) < + DN_MAX_OBJECT * sizeof (dnode_phys_t)) + levels++; + + mdn->dn_next_nlevels[tx->tx_txg & TXG_MASK] = + mdn->dn_nlevels = levels; + } + + ASSERT(type != DMU_OST_NONE); + ASSERT(type != DMU_OST_ANY); + ASSERT(type < DMU_OST_NUMTYPES); + os->os_phys->os_type = type; + if (dmu_objset_userused_enabled(os)) { + os->os_phys->os_flags |= OBJSET_FLAG_USERACCOUNTING_COMPLETE; + os->os_flags = os->os_phys->os_flags; + } + + dsl_dataset_dirty(ds, tx); + + return (os); +} + +typedef struct dmu_objset_create_arg { + const char *doca_name; + cred_t *doca_cred; + void (*doca_userfunc)(objset_t *os, void *arg, + cred_t *cr, dmu_tx_t *tx); + void *doca_userarg; + dmu_objset_type_t doca_type; + uint64_t doca_flags; +} dmu_objset_create_arg_t; + +/*ARGSUSED*/ +static int +dmu_objset_create_check(void *arg, dmu_tx_t *tx) +{ + dmu_objset_create_arg_t *doca = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dir_t *pdd; + const char *tail; + int error; + + if (strchr(doca->doca_name, '@') != NULL) + return (SET_ERROR(EINVAL)); + + error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail); + if (error != 0) + return (error); + if (tail == NULL) { + dsl_dir_rele(pdd, FTAG); + return (SET_ERROR(EEXIST)); + } + error = dsl_fs_ss_limit_check(pdd, 1, ZFS_PROP_FILESYSTEM_LIMIT, NULL, + doca->doca_cred); + dsl_dir_rele(pdd, FTAG); + + return (error); +} + +static void +dmu_objset_create_sync(void *arg, dmu_tx_t *tx) +{ + dmu_objset_create_arg_t *doca = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dir_t *pdd; + const char *tail; + dsl_dataset_t *ds; + uint64_t obj; + blkptr_t *bp; + objset_t *os; + + VERIFY0(dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail)); + + obj = dsl_dataset_create_sync(pdd, tail, NULL, doca->doca_flags, + doca->doca_cred, tx); + + VERIFY0(dsl_dataset_hold_obj(pdd->dd_pool, obj, FTAG, &ds)); + bp = dsl_dataset_get_blkptr(ds); + os = dmu_objset_create_impl(pdd->dd_pool->dp_spa, + ds, bp, doca->doca_type, tx); + + if (doca->doca_userfunc != NULL) { + doca->doca_userfunc(os, doca->doca_userarg, + doca->doca_cred, tx); + } + + spa_history_log_internal_ds(ds, "create", tx, ""); + dsl_dataset_rele(ds, FTAG); + dsl_dir_rele(pdd, FTAG); +} + +int +dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags, + void (*func)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx), void *arg) +{ + dmu_objset_create_arg_t doca; + + doca.doca_name = name; + doca.doca_cred = CRED(); + doca.doca_flags = flags; + doca.doca_userfunc = func; + doca.doca_userarg = arg; + doca.doca_type = type; + + return (dsl_sync_task(name, + dmu_objset_create_check, dmu_objset_create_sync, &doca, + 5, ZFS_SPACE_CHECK_NORMAL)); +} + +typedef struct dmu_objset_clone_arg { + const char *doca_clone; + const char *doca_origin; + cred_t *doca_cred; +} dmu_objset_clone_arg_t; + +/*ARGSUSED*/ +static int +dmu_objset_clone_check(void *arg, dmu_tx_t *tx) +{ + dmu_objset_clone_arg_t *doca = arg; + dsl_dir_t *pdd; + const char *tail; + int error; + dsl_dataset_t *origin; + dsl_pool_t *dp = dmu_tx_pool(tx); + + if (strchr(doca->doca_clone, '@') != NULL) + return (SET_ERROR(EINVAL)); + + error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail); + if (error != 0) + return (error); + if (tail == NULL) { + dsl_dir_rele(pdd, FTAG); + return (SET_ERROR(EEXIST)); + } + + error = dsl_fs_ss_limit_check(pdd, 1, ZFS_PROP_FILESYSTEM_LIMIT, NULL, + doca->doca_cred); + if (error != 0) { + dsl_dir_rele(pdd, FTAG); + return (SET_ERROR(EDQUOT)); + } + dsl_dir_rele(pdd, FTAG); + + error = dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin); + if (error != 0) + return (error); + + /* You can only clone snapshots, not the head datasets. */ + if (!origin->ds_is_snapshot) { + dsl_dataset_rele(origin, FTAG); + return (SET_ERROR(EINVAL)); + } + dsl_dataset_rele(origin, FTAG); + + return (0); +} + +static void +dmu_objset_clone_sync(void *arg, dmu_tx_t *tx) +{ + dmu_objset_clone_arg_t *doca = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dir_t *pdd; + const char *tail; + dsl_dataset_t *origin, *ds; + uint64_t obj; + char namebuf[MAXNAMELEN]; + + VERIFY0(dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail)); + VERIFY0(dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin)); + + obj = dsl_dataset_create_sync(pdd, tail, origin, 0, + doca->doca_cred, tx); + + VERIFY0(dsl_dataset_hold_obj(pdd->dd_pool, obj, FTAG, &ds)); + dsl_dataset_name(origin, namebuf); + spa_history_log_internal_ds(ds, "clone", tx, + "origin=%s (%llu)", namebuf, origin->ds_object); + dsl_dataset_rele(ds, FTAG); + dsl_dataset_rele(origin, FTAG); + dsl_dir_rele(pdd, FTAG); +} + +int +dmu_objset_clone(const char *clone, const char *origin) +{ + dmu_objset_clone_arg_t doca; + + doca.doca_clone = clone; + doca.doca_origin = origin; + doca.doca_cred = CRED(); + + return (dsl_sync_task(clone, + dmu_objset_clone_check, dmu_objset_clone_sync, &doca, + 5, ZFS_SPACE_CHECK_NORMAL)); +} + +int +dmu_objset_snapshot_one(const char *fsname, const char *snapname) +{ + int err; + char *longsnap = kmem_asprintf("%s@%s", fsname, snapname); + nvlist_t *snaps = fnvlist_alloc(); + + fnvlist_add_boolean(snaps, longsnap); + strfree(longsnap); + err = dsl_dataset_snapshot(snaps, NULL, NULL); + fnvlist_free(snaps); + return (err); +} + +static void +dmu_objset_sync_dnodes(list_t *list, list_t *newlist, dmu_tx_t *tx) +{ + dnode_t *dn; + + while ((dn = list_head(list))) { + ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT); + ASSERT(dn->dn_dbuf->db_data_pending); + /* + * Initialize dn_zio outside dnode_sync() because the + * meta-dnode needs to set it ouside dnode_sync(). + */ + dn->dn_zio = dn->dn_dbuf->db_data_pending->dr_zio; + ASSERT(dn->dn_zio); + + ASSERT3U(dn->dn_nlevels, <=, DN_MAX_LEVELS); + list_remove(list, dn); + + if (newlist) { + (void) dnode_add_ref(dn, newlist); + list_insert_tail(newlist, dn); + } + + dnode_sync(dn, tx); + } +} + +/* ARGSUSED */ +static void +dmu_objset_write_ready(zio_t *zio, arc_buf_t *abuf, void *arg) +{ + int i; + + blkptr_t *bp = zio->io_bp; + objset_t *os = arg; + dnode_phys_t *dnp = &os->os_phys->os_meta_dnode; + + ASSERT(!BP_IS_EMBEDDED(bp)); + ASSERT3P(bp, ==, os->os_rootbp); + ASSERT3U(BP_GET_TYPE(bp), ==, DMU_OT_OBJSET); + ASSERT0(BP_GET_LEVEL(bp)); + + /* + * Update rootbp fill count: it should be the number of objects + * allocated in the object set (not counting the "special" + * objects that are stored in the objset_phys_t -- the meta + * dnode and user/group accounting objects). + */ + bp->blk_fill = 0; + for (i = 0; i < dnp->dn_nblkptr; i++) + bp->blk_fill += BP_GET_FILL(&dnp->dn_blkptr[i]); +} + +/* ARGSUSED */ +static void +dmu_objset_write_done(zio_t *zio, arc_buf_t *abuf, void *arg) +{ + blkptr_t *bp = zio->io_bp; + blkptr_t *bp_orig = &zio->io_bp_orig; + objset_t *os = arg; + + if (zio->io_flags & ZIO_FLAG_IO_REWRITE) { + ASSERT(BP_EQUAL(bp, bp_orig)); + } else { + dsl_dataset_t *ds = os->os_dsl_dataset; + dmu_tx_t *tx = os->os_synctx; + + (void) dsl_dataset_block_kill(ds, bp_orig, tx, B_TRUE); + dsl_dataset_block_born(ds, bp, tx); + } +} + +/* called from dsl */ +void +dmu_objset_sync(objset_t *os, zio_t *pio, dmu_tx_t *tx) +{ + int txgoff; + zbookmark_phys_t zb; + zio_prop_t zp; + zio_t *zio; + list_t *list; + list_t *newlist = NULL; + dbuf_dirty_record_t *dr; + + dprintf_ds(os->os_dsl_dataset, "txg=%llu\n", tx->tx_txg); + + ASSERT(dmu_tx_is_syncing(tx)); + /* XXX the write_done callback should really give us the tx... */ + os->os_synctx = tx; + + if (os->os_dsl_dataset == NULL) { + /* + * This is the MOS. If we have upgraded, + * spa_max_replication() could change, so reset + * os_copies here. + */ + os->os_copies = spa_max_replication(os->os_spa); + } + + /* + * Create the root block IO + */ + SET_BOOKMARK(&zb, os->os_dsl_dataset ? + os->os_dsl_dataset->ds_object : DMU_META_OBJSET, + ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); + arc_release(os->os_phys_buf, &os->os_phys_buf); + + dmu_write_policy(os, NULL, 0, 0, &zp); + + zio = arc_write(pio, os->os_spa, tx->tx_txg, + os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), + DMU_OS_IS_L2COMPRESSIBLE(os), &zp, dmu_objset_write_ready, + NULL, dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_MUSTSUCCEED, &zb); + + /* + * Sync special dnodes - the parent IO for the sync is the root block + */ + DMU_META_DNODE(os)->dn_zio = zio; + dnode_sync(DMU_META_DNODE(os), tx); + + os->os_phys->os_flags = os->os_flags; + + if (DMU_USERUSED_DNODE(os) && + DMU_USERUSED_DNODE(os)->dn_type != DMU_OT_NONE) { + DMU_USERUSED_DNODE(os)->dn_zio = zio; + dnode_sync(DMU_USERUSED_DNODE(os), tx); + DMU_GROUPUSED_DNODE(os)->dn_zio = zio; + dnode_sync(DMU_GROUPUSED_DNODE(os), tx); + } + + txgoff = tx->tx_txg & TXG_MASK; + + if (dmu_objset_userused_enabled(os)) { + newlist = &os->os_synced_dnodes; + /* + * We must create the list here because it uses the + * dn_dirty_link[] of this txg. + */ + list_create(newlist, sizeof (dnode_t), + offsetof(dnode_t, dn_dirty_link[txgoff])); + } + + dmu_objset_sync_dnodes(&os->os_free_dnodes[txgoff], newlist, tx); + dmu_objset_sync_dnodes(&os->os_dirty_dnodes[txgoff], newlist, tx); + + list = &DMU_META_DNODE(os)->dn_dirty_records[txgoff]; + while ((dr = list_head(list))) { + ASSERT0(dr->dr_dbuf->db_level); + list_remove(list, dr); + if (dr->dr_zio) + zio_nowait(dr->dr_zio); + } + /* + * Free intent log blocks up to this tx. + */ + zil_sync(os->os_zil, tx); + os->os_phys->os_zil_header = os->os_zil_header; + zio_nowait(zio); +} + +boolean_t +dmu_objset_is_dirty(objset_t *os, uint64_t txg) +{ + return (!list_is_empty(&os->os_dirty_dnodes[txg & TXG_MASK]) || + !list_is_empty(&os->os_free_dnodes[txg & TXG_MASK])); +} + +static objset_used_cb_t *used_cbs[DMU_OST_NUMTYPES]; + +void +dmu_objset_register_type(dmu_objset_type_t ost, objset_used_cb_t *cb) +{ + used_cbs[ost] = cb; +} + +boolean_t +dmu_objset_userused_enabled(objset_t *os) +{ + return (spa_version(os->os_spa) >= SPA_VERSION_USERSPACE && + used_cbs[os->os_phys->os_type] != NULL && + DMU_USERUSED_DNODE(os) != NULL); +} + +static void +do_userquota_update(objset_t *os, uint64_t used, uint64_t flags, + uint64_t user, uint64_t group, boolean_t subtract, dmu_tx_t *tx) +{ + if ((flags & DNODE_FLAG_USERUSED_ACCOUNTED)) { + int64_t delta = DNODE_SIZE + used; + if (subtract) + delta = -delta; + VERIFY3U(0, ==, zap_increment_int(os, DMU_USERUSED_OBJECT, + user, delta, tx)); + VERIFY3U(0, ==, zap_increment_int(os, DMU_GROUPUSED_OBJECT, + group, delta, tx)); + } +} + +void +dmu_objset_do_userquota_updates(objset_t *os, dmu_tx_t *tx) +{ + dnode_t *dn; + list_t *list = &os->os_synced_dnodes; + + ASSERT(list_head(list) == NULL || dmu_objset_userused_enabled(os)); + + while ((dn = list_head(list))) { + int flags; + ASSERT(!DMU_OBJECT_IS_SPECIAL(dn->dn_object)); + ASSERT(dn->dn_phys->dn_type == DMU_OT_NONE || + dn->dn_phys->dn_flags & + DNODE_FLAG_USERUSED_ACCOUNTED); + + /* Allocate the user/groupused objects if necessary. */ + if (DMU_USERUSED_DNODE(os)->dn_type == DMU_OT_NONE) { + VERIFY(0 == zap_create_claim(os, + DMU_USERUSED_OBJECT, + DMU_OT_USERGROUP_USED, DMU_OT_NONE, 0, tx)); + VERIFY(0 == zap_create_claim(os, + DMU_GROUPUSED_OBJECT, + DMU_OT_USERGROUP_USED, DMU_OT_NONE, 0, tx)); + } + + /* + * We intentionally modify the zap object even if the + * net delta is zero. Otherwise + * the block of the zap obj could be shared between + * datasets but need to be different between them after + * a bprewrite. + */ + + flags = dn->dn_id_flags; + ASSERT(flags); + if (flags & DN_ID_OLD_EXIST) { + do_userquota_update(os, dn->dn_oldused, dn->dn_oldflags, + dn->dn_olduid, dn->dn_oldgid, B_TRUE, tx); + } + if (flags & DN_ID_NEW_EXIST) { + do_userquota_update(os, DN_USED_BYTES(dn->dn_phys), + dn->dn_phys->dn_flags, dn->dn_newuid, + dn->dn_newgid, B_FALSE, tx); + } + + mutex_enter(&dn->dn_mtx); + dn->dn_oldused = 0; + dn->dn_oldflags = 0; + if (dn->dn_id_flags & DN_ID_NEW_EXIST) { + dn->dn_olduid = dn->dn_newuid; + dn->dn_oldgid = dn->dn_newgid; + dn->dn_id_flags |= DN_ID_OLD_EXIST; + if (dn->dn_bonuslen == 0) + dn->dn_id_flags |= DN_ID_CHKED_SPILL; + else + dn->dn_id_flags |= DN_ID_CHKED_BONUS; + } + dn->dn_id_flags &= ~(DN_ID_NEW_EXIST); + mutex_exit(&dn->dn_mtx); + + list_remove(list, dn); + dnode_rele(dn, list); + } +} + +/* + * Returns a pointer to data to find uid/gid from + * + * If a dirty record for transaction group that is syncing can't + * be found then NULL is returned. In the NULL case it is assumed + * the uid/gid aren't changing. + */ +static void * +dmu_objset_userquota_find_data(dmu_buf_impl_t *db, dmu_tx_t *tx) +{ + dbuf_dirty_record_t *dr, **drp; + void *data; + + if (db->db_dirtycnt == 0) + return (db->db.db_data); /* Nothing is changing */ + + for (drp = &db->db_last_dirty; (dr = *drp) != NULL; drp = &dr->dr_next) + if (dr->dr_txg == tx->tx_txg) + break; + + if (dr == NULL) { + data = NULL; + } else { + dnode_t *dn; + + DB_DNODE_ENTER(dr->dr_dbuf); + dn = DB_DNODE(dr->dr_dbuf); + + if (dn->dn_bonuslen == 0 && + dr->dr_dbuf->db_blkid == DMU_SPILL_BLKID) + data = dr->dt.dl.dr_data->b_data; + else + data = dr->dt.dl.dr_data; + + DB_DNODE_EXIT(dr->dr_dbuf); + } + + return (data); +} + +void +dmu_objset_userquota_get_ids(dnode_t *dn, boolean_t before, dmu_tx_t *tx) +{ + objset_t *os = dn->dn_objset; + void *data = NULL; + dmu_buf_impl_t *db = NULL; + uint64_t *user = NULL; + uint64_t *group = NULL; + int flags = dn->dn_id_flags; + int error; + boolean_t have_spill = B_FALSE; + + if (!dmu_objset_userused_enabled(dn->dn_objset)) + return; + + if (before && (flags & (DN_ID_CHKED_BONUS|DN_ID_OLD_EXIST| + DN_ID_CHKED_SPILL))) + return; + + if (before && dn->dn_bonuslen != 0) + data = DN_BONUS(dn->dn_phys); + else if (!before && dn->dn_bonuslen != 0) { + if (dn->dn_bonus) { + db = dn->dn_bonus; + mutex_enter(&db->db_mtx); + data = dmu_objset_userquota_find_data(db, tx); + } else { + data = DN_BONUS(dn->dn_phys); + } + } else if (dn->dn_bonuslen == 0 && dn->dn_bonustype == DMU_OT_SA) { + int rf = 0; + + if (RW_WRITE_HELD(&dn->dn_struct_rwlock)) + rf |= DB_RF_HAVESTRUCT; + error = dmu_spill_hold_by_dnode(dn, + rf | DB_RF_MUST_SUCCEED, + FTAG, (dmu_buf_t **)&db); + ASSERT(error == 0); + mutex_enter(&db->db_mtx); + data = (before) ? db->db.db_data : + dmu_objset_userquota_find_data(db, tx); + have_spill = B_TRUE; + } else { + mutex_enter(&dn->dn_mtx); + dn->dn_id_flags |= DN_ID_CHKED_BONUS; + mutex_exit(&dn->dn_mtx); + return; + } + + if (before) { + ASSERT(data); + user = &dn->dn_olduid; + group = &dn->dn_oldgid; + } else if (data) { + user = &dn->dn_newuid; + group = &dn->dn_newgid; + } + + /* + * Must always call the callback in case the object + * type has changed and that type isn't an object type to track + */ + error = used_cbs[os->os_phys->os_type](dn->dn_bonustype, data, + user, group); + + /* + * Preserve existing uid/gid when the callback can't determine + * what the new uid/gid are and the callback returned EEXIST. + * The EEXIST error tells us to just use the existing uid/gid. + * If we don't know what the old values are then just assign + * them to 0, since that is a new file being created. + */ + if (!before && data == NULL && error == EEXIST) { + if (flags & DN_ID_OLD_EXIST) { + dn->dn_newuid = dn->dn_olduid; + dn->dn_newgid = dn->dn_oldgid; + } else { + dn->dn_newuid = 0; + dn->dn_newgid = 0; + } + error = 0; + } + + if (db) + mutex_exit(&db->db_mtx); + + mutex_enter(&dn->dn_mtx); + if (error == 0 && before) + dn->dn_id_flags |= DN_ID_OLD_EXIST; + if (error == 0 && !before) + dn->dn_id_flags |= DN_ID_NEW_EXIST; + + if (have_spill) { + dn->dn_id_flags |= DN_ID_CHKED_SPILL; + } else { + dn->dn_id_flags |= DN_ID_CHKED_BONUS; + } + mutex_exit(&dn->dn_mtx); + if (have_spill) + dmu_buf_rele((dmu_buf_t *)db, FTAG); +} + +boolean_t +dmu_objset_userspace_present(objset_t *os) +{ + return (os->os_phys->os_flags & + OBJSET_FLAG_USERACCOUNTING_COMPLETE); +} + +int +dmu_objset_userspace_upgrade(objset_t *os) +{ + uint64_t obj; + int err = 0; + + if (dmu_objset_userspace_present(os)) + return (0); + if (!dmu_objset_userused_enabled(os)) + return (SET_ERROR(ENOTSUP)); + if (dmu_objset_is_snapshot(os)) + return (SET_ERROR(EINVAL)); + + /* + * We simply need to mark every object dirty, so that it will be + * synced out and now accounted. If this is called + * concurrently, or if we already did some work before crashing, + * that's fine, since we track each object's accounted state + * independently. + */ + + for (obj = 0; err == 0; err = dmu_object_next(os, &obj, FALSE, 0)) { + dmu_tx_t *tx; + dmu_buf_t *db; + int objerr; + + if (issig(JUSTLOOKING) && issig(FORREAL)) + return (SET_ERROR(EINTR)); + + objerr = dmu_bonus_hold(os, obj, FTAG, &db); + if (objerr != 0) + continue; + tx = dmu_tx_create(os); + dmu_tx_hold_bonus(tx, obj); + objerr = dmu_tx_assign(tx, TXG_WAIT); + if (objerr != 0) { + dmu_tx_abort(tx); + continue; + } + dmu_buf_will_dirty(db, tx); + dmu_buf_rele(db, FTAG); + dmu_tx_commit(tx); + } + + os->os_flags |= OBJSET_FLAG_USERACCOUNTING_COMPLETE; + txg_wait_synced(dmu_objset_pool(os), 0); + return (0); +} + +void +dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, + uint64_t *usedobjsp, uint64_t *availobjsp) +{ + dsl_dataset_space(os->os_dsl_dataset, refdbytesp, availbytesp, + usedobjsp, availobjsp); +} + +uint64_t +dmu_objset_fsid_guid(objset_t *os) +{ + return (dsl_dataset_fsid_guid(os->os_dsl_dataset)); +} + +void +dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat) +{ + stat->dds_type = os->os_phys->os_type; + if (os->os_dsl_dataset) + dsl_dataset_fast_stat(os->os_dsl_dataset, stat); +} + +void +dmu_objset_stats(objset_t *os, nvlist_t *nv) +{ + ASSERT(os->os_dsl_dataset || + os->os_phys->os_type == DMU_OST_META); + + if (os->os_dsl_dataset != NULL) + dsl_dataset_stats(os->os_dsl_dataset, nv); + + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_TYPE, + os->os_phys->os_type); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USERACCOUNTING, + dmu_objset_userspace_present(os)); +} + +int +dmu_objset_is_snapshot(objset_t *os) +{ + if (os->os_dsl_dataset != NULL) + return (os->os_dsl_dataset->ds_is_snapshot); + else + return (B_FALSE); +} + +int +dmu_snapshot_realname(objset_t *os, char *name, char *real, int maxlen, + boolean_t *conflict) +{ + dsl_dataset_t *ds = os->os_dsl_dataset; + uint64_t ignored; + + if (dsl_dataset_phys(ds)->ds_snapnames_zapobj == 0) + return (SET_ERROR(ENOENT)); + + return (zap_lookup_norm(ds->ds_dir->dd_pool->dp_meta_objset, + dsl_dataset_phys(ds)->ds_snapnames_zapobj, name, 8, 1, &ignored, + MT_FIRST, real, maxlen, conflict)); +} + +int +dmu_snapshot_list_next(objset_t *os, int namelen, char *name, + uint64_t *idp, uint64_t *offp, boolean_t *case_conflict) +{ + dsl_dataset_t *ds = os->os_dsl_dataset; + zap_cursor_t cursor; + zap_attribute_t attr; + + ASSERT(dsl_pool_config_held(dmu_objset_pool(os))); + + if (dsl_dataset_phys(ds)->ds_snapnames_zapobj == 0) + return (SET_ERROR(ENOENT)); + + zap_cursor_init_serialized(&cursor, + ds->ds_dir->dd_pool->dp_meta_objset, + dsl_dataset_phys(ds)->ds_snapnames_zapobj, *offp); + + if (zap_cursor_retrieve(&cursor, &attr) != 0) { + zap_cursor_fini(&cursor); + return (SET_ERROR(ENOENT)); + } + + if (strlen(attr.za_name) + 1 > namelen) { + zap_cursor_fini(&cursor); + return (SET_ERROR(ENAMETOOLONG)); + } + + (void) strcpy(name, attr.za_name); + if (idp) + *idp = attr.za_first_integer; + if (case_conflict) + *case_conflict = attr.za_normalization_conflict; + zap_cursor_advance(&cursor); + *offp = zap_cursor_serialize(&cursor); + zap_cursor_fini(&cursor); + + return (0); +} + +int +dmu_snapshot_lookup(objset_t *os, const char *name, uint64_t *value) +{ + return (dsl_dataset_snap_lookup(os->os_dsl_dataset, name, value)); +} + +int +dmu_dir_list_next(objset_t *os, int namelen, char *name, + uint64_t *idp, uint64_t *offp) +{ + dsl_dir_t *dd = os->os_dsl_dataset->ds_dir; + zap_cursor_t cursor; + zap_attribute_t attr; + + /* there is no next dir on a snapshot! */ + if (os->os_dsl_dataset->ds_object != + dsl_dir_phys(dd)->dd_head_dataset_obj) + return (SET_ERROR(ENOENT)); + + zap_cursor_init_serialized(&cursor, + dd->dd_pool->dp_meta_objset, + dsl_dir_phys(dd)->dd_child_dir_zapobj, *offp); + + if (zap_cursor_retrieve(&cursor, &attr) != 0) { + zap_cursor_fini(&cursor); + return (SET_ERROR(ENOENT)); + } + + if (strlen(attr.za_name) + 1 > namelen) { + zap_cursor_fini(&cursor); + return (SET_ERROR(ENAMETOOLONG)); + } + + (void) strcpy(name, attr.za_name); + if (idp) + *idp = attr.za_first_integer; + zap_cursor_advance(&cursor); + *offp = zap_cursor_serialize(&cursor); + zap_cursor_fini(&cursor); + + return (0); +} + +typedef struct dmu_objset_find_ctx { + taskq_t *dc_tq; + dsl_pool_t *dc_dp; + uint64_t dc_ddobj; + int (*dc_func)(dsl_pool_t *, dsl_dataset_t *, void *); + void *dc_arg; + int dc_flags; + kmutex_t *dc_error_lock; + int *dc_error; +} dmu_objset_find_ctx_t; + +static void +dmu_objset_find_dp_impl(dmu_objset_find_ctx_t *dcp) +{ + dsl_pool_t *dp = dcp->dc_dp; + dmu_objset_find_ctx_t *child_dcp; + dsl_dir_t *dd; + dsl_dataset_t *ds; + zap_cursor_t zc; + zap_attribute_t *attr; + uint64_t thisobj; + int err = 0; + + /* don't process if there already was an error */ + if (*dcp->dc_error != 0) + goto out; + + err = dsl_dir_hold_obj(dp, dcp->dc_ddobj, NULL, FTAG, &dd); + if (err != 0) + goto out; + + /* Don't visit hidden ($MOS & $ORIGIN) objsets. */ + if (dd->dd_myname[0] == '$') { + dsl_dir_rele(dd, FTAG); + goto out; + } + + thisobj = dsl_dir_phys(dd)->dd_head_dataset_obj; + attr = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + + /* + * Iterate over all children. + */ + if (dcp->dc_flags & DS_FIND_CHILDREN) { + for (zap_cursor_init(&zc, dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_child_dir_zapobj); + zap_cursor_retrieve(&zc, attr) == 0; + (void) zap_cursor_advance(&zc)) { + ASSERT3U(attr->za_integer_length, ==, + sizeof (uint64_t)); + ASSERT3U(attr->za_num_integers, ==, 1); + + child_dcp = kmem_alloc(sizeof (*child_dcp), KM_SLEEP); + *child_dcp = *dcp; + child_dcp->dc_ddobj = attr->za_first_integer; + if (dcp->dc_tq != NULL) + (void) taskq_dispatch(dcp->dc_tq, + dmu_objset_find_dp_cb, child_dcp, TQ_SLEEP); + else + dmu_objset_find_dp_impl(child_dcp); + } + zap_cursor_fini(&zc); + } + + /* + * Iterate over all snapshots. + */ + if (dcp->dc_flags & DS_FIND_SNAPSHOTS) { + dsl_dataset_t *ds; + err = dsl_dataset_hold_obj(dp, thisobj, FTAG, &ds); + + if (err == 0) { + uint64_t snapobj; + + snapobj = dsl_dataset_phys(ds)->ds_snapnames_zapobj; + dsl_dataset_rele(ds, FTAG); + + for (zap_cursor_init(&zc, dp->dp_meta_objset, snapobj); + zap_cursor_retrieve(&zc, attr) == 0; + (void) zap_cursor_advance(&zc)) { + ASSERT3U(attr->za_integer_length, ==, + sizeof (uint64_t)); + ASSERT3U(attr->za_num_integers, ==, 1); + + err = dsl_dataset_hold_obj(dp, + attr->za_first_integer, FTAG, &ds); + if (err != 0) + break; + err = dcp->dc_func(dp, ds, dcp->dc_arg); + dsl_dataset_rele(ds, FTAG); + if (err != 0) + break; + } + zap_cursor_fini(&zc); + } + } + + dsl_dir_rele(dd, FTAG); + kmem_free(attr, sizeof (zap_attribute_t)); + + if (err != 0) + goto out; + + /* + * Apply to self. + */ + err = dsl_dataset_hold_obj(dp, thisobj, FTAG, &ds); + if (err != 0) + goto out; + err = dcp->dc_func(dp, ds, dcp->dc_arg); + dsl_dataset_rele(ds, FTAG); + +out: + if (err != 0) { + mutex_enter(dcp->dc_error_lock); + /* only keep first error */ + if (*dcp->dc_error == 0) + *dcp->dc_error = err; + mutex_exit(dcp->dc_error_lock); + } + + kmem_free(dcp, sizeof (*dcp)); +} + +static void +dmu_objset_find_dp_cb(void *arg) +{ + dmu_objset_find_ctx_t *dcp = arg; + dsl_pool_t *dp = dcp->dc_dp; + + /* + * We need to get a pool_config_lock here, as there are several + * asssert(pool_config_held) down the stack. Getting a lock via + * dsl_pool_config_enter is risky, as it might be stalled by a + * pending writer. This would deadlock, as the write lock can + * only be granted when our parent thread gives up the lock. + * The _prio interface gives us priority over a pending writer. + */ + dsl_pool_config_enter_prio(dp, FTAG); + + dmu_objset_find_dp_impl(dcp); + + dsl_pool_config_exit(dp, FTAG); +} + +/* + * Find objsets under and including ddobj, call func(ds) on each. + * The order for the enumeration is completely undefined. + * func is called with dsl_pool_config held. + */ +int +dmu_objset_find_dp(dsl_pool_t *dp, uint64_t ddobj, + int func(dsl_pool_t *, dsl_dataset_t *, void *), void *arg, int flags) +{ + int error = 0; + taskq_t *tq = NULL; + int ntasks; + dmu_objset_find_ctx_t *dcp; + kmutex_t err_lock; + + mutex_init(&err_lock, NULL, MUTEX_DEFAULT, NULL); + dcp = kmem_alloc(sizeof (*dcp), KM_SLEEP); + dcp->dc_tq = NULL; + dcp->dc_dp = dp; + dcp->dc_ddobj = ddobj; + dcp->dc_func = func; + dcp->dc_arg = arg; + dcp->dc_flags = flags; + dcp->dc_error_lock = &err_lock; + dcp->dc_error = &error; + + if ((flags & DS_FIND_SERIALIZE) || dsl_pool_config_held_writer(dp)) { + /* + * In case a write lock is held we can't make use of + * parallelism, as down the stack of the worker threads + * the lock is asserted via dsl_pool_config_held. + * In case of a read lock this is solved by getting a read + * lock in each worker thread, which isn't possible in case + * of a writer lock. So we fall back to the synchronous path + * here. + * In the future it might be possible to get some magic into + * dsl_pool_config_held in a way that it returns true for + * the worker threads so that a single lock held from this + * thread suffices. For now, stay single threaded. + */ + dmu_objset_find_dp_impl(dcp); + + return (error); + } + + ntasks = dmu_find_threads; + if (ntasks == 0) + ntasks = vdev_count_leaves(dp->dp_spa) * 4; + tq = taskq_create("dmu_objset_find", ntasks, maxclsyspri, ntasks, + INT_MAX, 0); + if (tq == NULL) { + kmem_free(dcp, sizeof (*dcp)); + return (SET_ERROR(ENOMEM)); + } + dcp->dc_tq = tq; + + /* dcp will be freed by task */ + (void) taskq_dispatch(tq, dmu_objset_find_dp_cb, dcp, TQ_SLEEP); + + /* + * PORTING: this code relies on the property of taskq_wait to wait + * until no more tasks are queued and no more tasks are active. As + * we always queue new tasks from within other tasks, task_wait + * reliably waits for the full recursion to finish, even though we + * enqueue new tasks after taskq_wait has been called. + * On platforms other than illumos, taskq_wait may not have this + * property. + */ + taskq_wait(tq); + taskq_destroy(tq); + mutex_destroy(&err_lock); + + return (error); +} + +/* + * Find all objsets under name, and for each, call 'func(child_name, arg)'. + * The dp_config_rwlock must not be held when this is called, and it + * will not be held when the callback is called. + * Therefore this function should only be used when the pool is not changing + * (e.g. in syncing context), or the callback can deal with the possible races. + */ +static int +dmu_objset_find_impl(spa_t *spa, const char *name, + int func(const char *, void *), void *arg, int flags) +{ + dsl_dir_t *dd; + dsl_pool_t *dp = spa_get_dsl(spa); + dsl_dataset_t *ds; + zap_cursor_t zc; + zap_attribute_t *attr; + char *child; + uint64_t thisobj; + int err; + + dsl_pool_config_enter(dp, FTAG); + + err = dsl_dir_hold(dp, name, FTAG, &dd, NULL); + if (err != 0) { + dsl_pool_config_exit(dp, FTAG); + return (err); + } + + /* Don't visit hidden ($MOS & $ORIGIN) objsets. */ + if (dd->dd_myname[0] == '$') { + dsl_dir_rele(dd, FTAG); + dsl_pool_config_exit(dp, FTAG); + return (0); + } + + thisobj = dsl_dir_phys(dd)->dd_head_dataset_obj; + attr = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + + /* + * Iterate over all children. + */ + if (flags & DS_FIND_CHILDREN) { + for (zap_cursor_init(&zc, dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_child_dir_zapobj); + zap_cursor_retrieve(&zc, attr) == 0; + (void) zap_cursor_advance(&zc)) { + ASSERT3U(attr->za_integer_length, ==, + sizeof (uint64_t)); + ASSERT3U(attr->za_num_integers, ==, 1); + + child = kmem_asprintf("%s/%s", name, attr->za_name); + dsl_pool_config_exit(dp, FTAG); + err = dmu_objset_find_impl(spa, child, + func, arg, flags); + dsl_pool_config_enter(dp, FTAG); + strfree(child); + if (err != 0) + break; + } + zap_cursor_fini(&zc); + + if (err != 0) { + dsl_dir_rele(dd, FTAG); + dsl_pool_config_exit(dp, FTAG); + kmem_free(attr, sizeof (zap_attribute_t)); + return (err); + } + } + + /* + * Iterate over all snapshots. + */ + if (flags & DS_FIND_SNAPSHOTS) { + err = dsl_dataset_hold_obj(dp, thisobj, FTAG, &ds); + + if (err == 0) { + uint64_t snapobj; + + snapobj = dsl_dataset_phys(ds)->ds_snapnames_zapobj; + dsl_dataset_rele(ds, FTAG); + + for (zap_cursor_init(&zc, dp->dp_meta_objset, snapobj); + zap_cursor_retrieve(&zc, attr) == 0; + (void) zap_cursor_advance(&zc)) { + ASSERT3U(attr->za_integer_length, ==, + sizeof (uint64_t)); + ASSERT3U(attr->za_num_integers, ==, 1); + + child = kmem_asprintf("%s@%s", + name, attr->za_name); + dsl_pool_config_exit(dp, FTAG); + err = func(child, arg); + dsl_pool_config_enter(dp, FTAG); + strfree(child); + if (err != 0) + break; + } + zap_cursor_fini(&zc); + } + } + + dsl_dir_rele(dd, FTAG); + kmem_free(attr, sizeof (zap_attribute_t)); + dsl_pool_config_exit(dp, FTAG); + + if (err != 0) + return (err); + + /* Apply to self. */ + return (func(name, arg)); +} + +/* + * See comment above dmu_objset_find_impl(). + */ +int +dmu_objset_find(char *name, int func(const char *, void *), void *arg, + int flags) +{ + spa_t *spa; + int error; + + error = spa_open(name, &spa, FTAG); + if (error != 0) + return (error); + error = dmu_objset_find_impl(spa, name, func, arg, flags); + spa_close(spa, FTAG); + return (error); +} + +void +dmu_objset_set_user(objset_t *os, void *user_ptr) +{ + ASSERT(MUTEX_HELD(&os->os_user_ptr_lock)); + os->os_user_ptr = user_ptr; +} + +void * +dmu_objset_get_user(objset_t *os) +{ + ASSERT(MUTEX_HELD(&os->os_user_ptr_lock)); + return (os->os_user_ptr); +} + +/* + * Determine name of filesystem, given name of snapshot. + * buf must be at least MAXNAMELEN bytes + */ +int +dmu_fsname(const char *snapname, char *buf) +{ + char *atp = strchr(snapname, '@'); + if (atp == NULL) + return (SET_ERROR(EINVAL)); + if (atp - snapname >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + (void) strlcpy(buf, snapname, atp - snapname + 1); + return (0); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dmu_objset_zil); +EXPORT_SYMBOL(dmu_objset_pool); +EXPORT_SYMBOL(dmu_objset_ds); +EXPORT_SYMBOL(dmu_objset_type); +EXPORT_SYMBOL(dmu_objset_name); +EXPORT_SYMBOL(dmu_objset_hold); +EXPORT_SYMBOL(dmu_objset_own); +EXPORT_SYMBOL(dmu_objset_rele); +EXPORT_SYMBOL(dmu_objset_disown); +EXPORT_SYMBOL(dmu_objset_from_ds); +EXPORT_SYMBOL(dmu_objset_create); +EXPORT_SYMBOL(dmu_objset_clone); +EXPORT_SYMBOL(dmu_objset_stats); +EXPORT_SYMBOL(dmu_objset_fast_stat); +EXPORT_SYMBOL(dmu_objset_spa); +EXPORT_SYMBOL(dmu_objset_space); +EXPORT_SYMBOL(dmu_objset_fsid_guid); +EXPORT_SYMBOL(dmu_objset_find); +EXPORT_SYMBOL(dmu_objset_byteswap); +EXPORT_SYMBOL(dmu_objset_evict_dbufs); +EXPORT_SYMBOL(dmu_objset_snap_cmtime); + +EXPORT_SYMBOL(dmu_objset_sync); +EXPORT_SYMBOL(dmu_objset_is_dirty); +EXPORT_SYMBOL(dmu_objset_create_impl); +EXPORT_SYMBOL(dmu_objset_open_impl); +EXPORT_SYMBOL(dmu_objset_evict); +EXPORT_SYMBOL(dmu_objset_register_type); +EXPORT_SYMBOL(dmu_objset_do_userquota_updates); +EXPORT_SYMBOL(dmu_objset_userquota_get_ids); +EXPORT_SYMBOL(dmu_objset_userused_enabled); +EXPORT_SYMBOL(dmu_objset_userspace_upgrade); +EXPORT_SYMBOL(dmu_objset_userspace_present); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_send.c +++ linux-4.4.0/zfs/module/zfs/dmu_send.c @@ -0,0 +1,2274 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Set this tunable to TRUE to replace corrupt data with 0x2f5baddb10c */ +int zfs_send_corrupt_data = B_FALSE; + +static char *dmu_recv_tag = "dmu_recv_tag"; +static const char *recv_clone_name = "%recv"; + +typedef struct dump_bytes_io { + dmu_sendarg_t *dbi_dsp; + void *dbi_buf; + int dbi_len; +} dump_bytes_io_t; + +static void +dump_bytes_strategy(void *arg) +{ + dump_bytes_io_t *dbi = (dump_bytes_io_t *)arg; + dmu_sendarg_t *dsp = dbi->dbi_dsp; + dsl_dataset_t *ds = dsp->dsa_os->os_dsl_dataset; + ssize_t resid; /* have to get resid to get detailed errno */ + ASSERT0(dbi->dbi_len % 8); + + fletcher_4_incremental_native(dbi->dbi_buf, dbi->dbi_len, &dsp->dsa_zc); + dsp->dsa_err = vn_rdwr(UIO_WRITE, dsp->dsa_vp, + (caddr_t)dbi->dbi_buf, dbi->dbi_len, + 0, UIO_SYSSPACE, FAPPEND, RLIM64_INFINITY, CRED(), &resid); + + mutex_enter(&ds->ds_sendstream_lock); + *dsp->dsa_off += dbi->dbi_len; + mutex_exit(&ds->ds_sendstream_lock); +} + +static int +dump_bytes(dmu_sendarg_t *dsp, void *buf, int len) +{ + dump_bytes_io_t dbi; + + dbi.dbi_dsp = dsp; + dbi.dbi_buf = buf; + dbi.dbi_len = len; + + /* + * The vn_rdwr() call is performed in a taskq to ensure that there is + * always enough stack space to write safely to the target filesystem. + * The ZIO_TYPE_FREE threads are used because there can be a lot of + * them and they are used in vdev_file.c for a similar purpose. + */ + spa_taskq_dispatch_sync(dmu_objset_spa(dsp->dsa_os), ZIO_TYPE_FREE, + ZIO_TASKQ_ISSUE, dump_bytes_strategy, &dbi, TQ_SLEEP); + + return (dsp->dsa_err); +} + +static int +dump_free(dmu_sendarg_t *dsp, uint64_t object, uint64_t offset, + uint64_t length) +{ + struct drr_free *drrf = &(dsp->dsa_drr->drr_u.drr_free); + + /* + * When we receive a free record, dbuf_free_range() assumes + * that the receiving system doesn't have any dbufs in the range + * being freed. This is always true because there is a one-record + * constraint: we only send one WRITE record for any given + * object+offset. We know that the one-record constraint is + * true because we always send data in increasing order by + * object,offset. + * + * If the increasing-order constraint ever changes, we should find + * another way to assert that the one-record constraint is still + * satisfied. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + + /* + * If we are doing a non-incremental send, then there can't + * be any data in the dataset we're receiving into. Therefore + * a free record would simply be a no-op. Save space by not + * sending it to begin with. + */ + if (!dsp->dsa_incremental) + return (0); + + if (length != -1ULL && offset + length < offset) + length = -1ULL; + + /* + * If there is a pending op, but it's not PENDING_FREE, push it out, + * since free block aggregation can only be done for blocks of the + * same type (i.e., DRR_FREE records can only be aggregated with + * other DRR_FREE records. DRR_FREEOBJECTS records can only be + * aggregated with other DRR_FREEOBJECTS records. + */ + if (dsp->dsa_pending_op != PENDING_NONE && + dsp->dsa_pending_op != PENDING_FREE) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + + if (dsp->dsa_pending_op == PENDING_FREE) { + /* + * There should never be a PENDING_FREE if length is -1 + * (because dump_dnode is the only place where this + * function is called with a -1, and only after flushing + * any pending record). + */ + ASSERT(length != -1ULL); + /* + * Check to see whether this free block can be aggregated + * with pending one. + */ + if (drrf->drr_object == object && drrf->drr_offset + + drrf->drr_length == offset) { + drrf->drr_length += length; + return (0); + } else { + /* not a continuation. Push out pending record */ + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + } + /* create a FREE record and make it pending */ + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_FREE; + drrf->drr_object = object; + drrf->drr_offset = offset; + drrf->drr_length = length; + drrf->drr_toguid = dsp->dsa_toguid; + if (length == -1ULL) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + } else { + dsp->dsa_pending_op = PENDING_FREE; + } + + return (0); +} + +static int +dump_write(dmu_sendarg_t *dsp, dmu_object_type_t type, + uint64_t object, uint64_t offset, int blksz, const blkptr_t *bp, void *data) +{ + struct drr_write *drrw = &(dsp->dsa_drr->drr_u.drr_write); + + /* + * We send data in increasing object, offset order. + * See comment in dump_free() for details. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + dsp->dsa_last_data_object = object; + dsp->dsa_last_data_offset = offset + blksz - 1; + + /* + * If there is any kind of pending aggregation (currently either + * a grouping of free objects or free blocks), push it out to + * the stream, since aggregation can't be done across operations + * of different types. + */ + if (dsp->dsa_pending_op != PENDING_NONE) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + /* write a DATA record */ + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_WRITE; + drrw->drr_object = object; + drrw->drr_type = type; + drrw->drr_offset = offset; + drrw->drr_length = blksz; + drrw->drr_toguid = dsp->dsa_toguid; + if (bp == NULL || BP_IS_EMBEDDED(bp)) { + /* + * There's no pre-computed checksum for partial-block + * writes or embedded BP's, so (like + * fletcher4-checkummed blocks) userland will have to + * compute a dedup-capable checksum itself. + */ + drrw->drr_checksumtype = ZIO_CHECKSUM_OFF; + } else { + drrw->drr_checksumtype = BP_GET_CHECKSUM(bp); + if (zio_checksum_table[drrw->drr_checksumtype].ci_dedup) + drrw->drr_checksumflags |= DRR_CHECKSUM_DEDUP; + DDK_SET_LSIZE(&drrw->drr_key, BP_GET_LSIZE(bp)); + DDK_SET_PSIZE(&drrw->drr_key, BP_GET_PSIZE(bp)); + DDK_SET_COMPRESS(&drrw->drr_key, BP_GET_COMPRESS(bp)); + drrw->drr_key.ddk_cksum = bp->blk_cksum; + } + + if (dump_bytes(dsp, dsp->dsa_drr, sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + if (dump_bytes(dsp, data, blksz) != 0) + return (SET_ERROR(EINTR)); + return (0); +} + +static int +dump_write_embedded(dmu_sendarg_t *dsp, uint64_t object, uint64_t offset, + int blksz, const blkptr_t *bp) +{ + char buf[BPE_PAYLOAD_SIZE]; + struct drr_write_embedded *drrw = + &(dsp->dsa_drr->drr_u.drr_write_embedded); + + if (dsp->dsa_pending_op != PENDING_NONE) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (EINTR); + dsp->dsa_pending_op = PENDING_NONE; + } + + ASSERT(BP_IS_EMBEDDED(bp)); + + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_WRITE_EMBEDDED; + drrw->drr_object = object; + drrw->drr_offset = offset; + drrw->drr_length = blksz; + drrw->drr_toguid = dsp->dsa_toguid; + drrw->drr_compression = BP_GET_COMPRESS(bp); + drrw->drr_etype = BPE_GET_ETYPE(bp); + drrw->drr_lsize = BPE_GET_LSIZE(bp); + drrw->drr_psize = BPE_GET_PSIZE(bp); + + decode_embedded_bp_compressed(bp, buf); + + if (dump_bytes(dsp, dsp->dsa_drr, sizeof (dmu_replay_record_t)) != 0) + return (EINTR); + if (dump_bytes(dsp, buf, P2ROUNDUP(drrw->drr_psize, 8)) != 0) + return (EINTR); + return (0); +} + +static int +dump_spill(dmu_sendarg_t *dsp, uint64_t object, int blksz, void *data) +{ + struct drr_spill *drrs = &(dsp->dsa_drr->drr_u.drr_spill); + + if (dsp->dsa_pending_op != PENDING_NONE) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + + /* write a SPILL record */ + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_SPILL; + drrs->drr_object = object; + drrs->drr_length = blksz; + drrs->drr_toguid = dsp->dsa_toguid; + + if (dump_bytes(dsp, dsp->dsa_drr, sizeof (dmu_replay_record_t))) + return (SET_ERROR(EINTR)); + if (dump_bytes(dsp, data, blksz)) + return (SET_ERROR(EINTR)); + return (0); +} + +static int +dump_freeobjects(dmu_sendarg_t *dsp, uint64_t firstobj, uint64_t numobjs) +{ + struct drr_freeobjects *drrfo = &(dsp->dsa_drr->drr_u.drr_freeobjects); + + /* See comment in dump_free(). */ + if (!dsp->dsa_incremental) + return (0); + + /* + * If there is a pending op, but it's not PENDING_FREEOBJECTS, + * push it out, since free block aggregation can only be done for + * blocks of the same type (i.e., DRR_FREE records can only be + * aggregated with other DRR_FREE records. DRR_FREEOBJECTS records + * can only be aggregated with other DRR_FREEOBJECTS records. + */ + if (dsp->dsa_pending_op != PENDING_NONE && + dsp->dsa_pending_op != PENDING_FREEOBJECTS) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + if (dsp->dsa_pending_op == PENDING_FREEOBJECTS) { + /* + * See whether this free object array can be aggregated + * with pending one + */ + if (drrfo->drr_firstobj + drrfo->drr_numobjs == firstobj) { + drrfo->drr_numobjs += numobjs; + return (0); + } else { + /* can't be aggregated. Push out pending record */ + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + } + + /* write a FREEOBJECTS record */ + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_FREEOBJECTS; + drrfo->drr_firstobj = firstobj; + drrfo->drr_numobjs = numobjs; + drrfo->drr_toguid = dsp->dsa_toguid; + + dsp->dsa_pending_op = PENDING_FREEOBJECTS; + + return (0); +} + +static int +dump_dnode(dmu_sendarg_t *dsp, uint64_t object, dnode_phys_t *dnp) +{ + struct drr_object *drro = &(dsp->dsa_drr->drr_u.drr_object); + + if (dnp == NULL || dnp->dn_type == DMU_OT_NONE) + return (dump_freeobjects(dsp, object, 1)); + + if (dsp->dsa_pending_op != PENDING_NONE) { + if (dump_bytes(dsp, dsp->dsa_drr, + sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + dsp->dsa_pending_op = PENDING_NONE; + } + + /* write an OBJECT record */ + bzero(dsp->dsa_drr, sizeof (dmu_replay_record_t)); + dsp->dsa_drr->drr_type = DRR_OBJECT; + drro->drr_object = object; + drro->drr_type = dnp->dn_type; + drro->drr_bonustype = dnp->dn_bonustype; + drro->drr_blksz = dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT; + drro->drr_bonuslen = dnp->dn_bonuslen; + drro->drr_checksumtype = dnp->dn_checksum; + drro->drr_compress = dnp->dn_compress; + drro->drr_toguid = dsp->dsa_toguid; + + if (!(dsp->dsa_featureflags & DMU_BACKUP_FEATURE_LARGE_BLOCKS) && + drro->drr_blksz > SPA_OLD_MAXBLOCKSIZE) + drro->drr_blksz = SPA_OLD_MAXBLOCKSIZE; + + if (dump_bytes(dsp, dsp->dsa_drr, sizeof (dmu_replay_record_t)) != 0) + return (SET_ERROR(EINTR)); + + if (dump_bytes(dsp, DN_BONUS(dnp), P2ROUNDUP(dnp->dn_bonuslen, 8)) != 0) + return (SET_ERROR(EINTR)); + + /* Free anything past the end of the file. */ + if (dump_free(dsp, object, (dnp->dn_maxblkid + 1) * + (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT), -1ULL) != 0) + return (SET_ERROR(EINTR)); + if (dsp->dsa_err != 0) + return (SET_ERROR(EINTR)); + return (0); +} + +static boolean_t +backup_do_embed(dmu_sendarg_t *dsp, const blkptr_t *bp) +{ + if (!BP_IS_EMBEDDED(bp)) + return (B_FALSE); + + /* + * Compression function must be legacy, or explicitly enabled. + */ + if ((BP_GET_COMPRESS(bp) >= ZIO_COMPRESS_LEGACY_FUNCTIONS && + !(dsp->dsa_featureflags & DMU_BACKUP_FEATURE_EMBED_DATA_LZ4))) + return (B_FALSE); + + /* + * Embed type must be explicitly enabled. + */ + switch (BPE_GET_ETYPE(bp)) { + case BP_EMBEDDED_TYPE_DATA: + if (dsp->dsa_featureflags & DMU_BACKUP_FEATURE_EMBED_DATA) + return (B_TRUE); + break; + default: + return (B_FALSE); + } + return (B_FALSE); +} + +#define BP_SPAN(dnp, level) \ + (((uint64_t)dnp->dn_datablkszsec) << (SPA_MINBLOCKSHIFT + \ + (level) * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT))) + +/* ARGSUSED */ +static int +backup_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + dmu_sendarg_t *dsp = arg; + dmu_object_type_t type = bp ? BP_GET_TYPE(bp) : DMU_OT_NONE; + int err = 0; + + if (issig(JUSTLOOKING) && issig(FORREAL)) + return (SET_ERROR(EINTR)); + + if (zb->zb_object != DMU_META_DNODE_OBJECT && + DMU_OBJECT_IS_SPECIAL(zb->zb_object)) { + return (0); + } else if (zb->zb_level == ZB_ZIL_LEVEL) { + /* + * If we are sending a non-snapshot (which is allowed on + * read-only pools), it may have a ZIL, which must be ignored. + */ + return (0); + } else if (BP_IS_HOLE(bp) && + zb->zb_object == DMU_META_DNODE_OBJECT) { + uint64_t span = BP_SPAN(dnp, zb->zb_level); + uint64_t dnobj = (zb->zb_blkid * span) >> DNODE_SHIFT; + err = dump_freeobjects(dsp, dnobj, span >> DNODE_SHIFT); + } else if (BP_IS_HOLE(bp)) { + uint64_t span = BP_SPAN(dnp, zb->zb_level); + err = dump_free(dsp, zb->zb_object, zb->zb_blkid * span, span); + } else if (zb->zb_level > 0 || type == DMU_OT_OBJSET) { + return (0); + } else if (type == DMU_OT_DNODE) { + dnode_phys_t *blk; + int i; + int blksz = BP_GET_LSIZE(bp); + arc_flags_t aflags = ARC_FLAG_WAIT; + arc_buf_t *abuf; + + if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, + &aflags, zb) != 0) + return (SET_ERROR(EIO)); + + blk = abuf->b_data; + for (i = 0; i < blksz >> DNODE_SHIFT; i++) { + uint64_t dnobj = (zb->zb_blkid << + (DNODE_BLOCK_SHIFT - DNODE_SHIFT)) + i; + err = dump_dnode(dsp, dnobj, blk+i); + if (err != 0) + break; + } + (void) arc_buf_remove_ref(abuf, &abuf); + } else if (type == DMU_OT_SA) { + arc_flags_t aflags = ARC_FLAG_WAIT; + arc_buf_t *abuf; + int blksz = BP_GET_LSIZE(bp); + + if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, + &aflags, zb) != 0) + return (SET_ERROR(EIO)); + + err = dump_spill(dsp, zb->zb_object, blksz, abuf->b_data); + (void) arc_buf_remove_ref(abuf, &abuf); + } else if (backup_do_embed(dsp, bp)) { + /* it's an embedded level-0 block of a regular object */ + int blksz = dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT; + err = dump_write_embedded(dsp, zb->zb_object, + zb->zb_blkid * blksz, blksz, bp); + } else { /* it's a level-0 block of a regular object */ + uint64_t offset; + arc_flags_t aflags = ARC_FLAG_WAIT; + arc_buf_t *abuf; + int blksz = BP_GET_LSIZE(bp); + + ASSERT3U(blksz, ==, dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT); + ASSERT0(zb->zb_level); + if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, + &aflags, zb) != 0) { + if (zfs_send_corrupt_data) { + uint64_t *ptr; + /* Send a block filled with 0x"zfs badd bloc" */ + abuf = arc_buf_alloc(spa, blksz, &abuf, + ARC_BUFC_DATA); + for (ptr = abuf->b_data; + (char *)ptr < (char *)abuf->b_data + blksz; + ptr++) + *ptr = 0x2f5baddb10cULL; + } else { + return (SET_ERROR(EIO)); + } + } + + offset = zb->zb_blkid * blksz; + + if (!(dsp->dsa_featureflags & + DMU_BACKUP_FEATURE_LARGE_BLOCKS) && + blksz > SPA_OLD_MAXBLOCKSIZE) { + char *buf = abuf->b_data; + while (blksz > 0 && err == 0) { + int n = MIN(blksz, SPA_OLD_MAXBLOCKSIZE); + err = dump_write(dsp, type, zb->zb_object, + offset, n, NULL, buf); + offset += n; + buf += n; + blksz -= n; + } + } else { + err = dump_write(dsp, type, zb->zb_object, + offset, blksz, bp, abuf->b_data); + } + (void) arc_buf_remove_ref(abuf, &abuf); + } + + ASSERT(err == 0 || err == EINTR); + return (err); +} + +/* + * Releases dp using the specified tag. + */ +static int +dmu_send_impl(void *tag, dsl_pool_t *dp, dsl_dataset_t *ds, + zfs_bookmark_phys_t *fromzb, boolean_t is_clone, boolean_t embedok, + boolean_t large_block_ok, int outfd, vnode_t *vp, offset_t *off) +{ + objset_t *os; + dmu_replay_record_t *drr; + dmu_sendarg_t *dsp; + int err; + uint64_t fromtxg = 0; + uint64_t featureflags = 0; + + err = dmu_objset_from_ds(ds, &os); + if (err != 0) { + dsl_pool_rele(dp, tag); + return (err); + } + + drr = kmem_zalloc(sizeof (dmu_replay_record_t), KM_SLEEP); + drr->drr_type = DRR_BEGIN; + drr->drr_u.drr_begin.drr_magic = DMU_BACKUP_MAGIC; + DMU_SET_STREAM_HDRTYPE(drr->drr_u.drr_begin.drr_versioninfo, + DMU_SUBSTREAM); + +#ifdef _KERNEL + if (dmu_objset_type(os) == DMU_OST_ZFS) { + uint64_t version; + if (zfs_get_zplprop(os, ZFS_PROP_VERSION, &version) != 0) { + kmem_free(drr, sizeof (dmu_replay_record_t)); + dsl_pool_rele(dp, tag); + return (SET_ERROR(EINVAL)); + } + if (version >= ZPL_VERSION_SA) { + featureflags |= DMU_BACKUP_FEATURE_SA_SPILL; + } + } +#endif + + if (large_block_ok && ds->ds_large_blocks) + featureflags |= DMU_BACKUP_FEATURE_LARGE_BLOCKS; + if (embedok && + spa_feature_is_active(dp->dp_spa, SPA_FEATURE_EMBEDDED_DATA)) { + featureflags |= DMU_BACKUP_FEATURE_EMBED_DATA; + if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) + featureflags |= DMU_BACKUP_FEATURE_EMBED_DATA_LZ4; + } else { + embedok = B_FALSE; + } + + DMU_SET_FEATUREFLAGS(drr->drr_u.drr_begin.drr_versioninfo, + featureflags); + + drr->drr_u.drr_begin.drr_creation_time = + dsl_dataset_phys(ds)->ds_creation_time; + drr->drr_u.drr_begin.drr_type = dmu_objset_type(os); + if (is_clone) + drr->drr_u.drr_begin.drr_flags |= DRR_FLAG_CLONE; + drr->drr_u.drr_begin.drr_toguid = dsl_dataset_phys(ds)->ds_guid; + if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) + drr->drr_u.drr_begin.drr_flags |= DRR_FLAG_CI_DATA; + + if (fromzb != NULL) { + drr->drr_u.drr_begin.drr_fromguid = fromzb->zbm_guid; + fromtxg = fromzb->zbm_creation_txg; + } + dsl_dataset_name(ds, drr->drr_u.drr_begin.drr_toname); + if (!ds->ds_is_snapshot) { + (void) strlcat(drr->drr_u.drr_begin.drr_toname, "@--head--", + sizeof (drr->drr_u.drr_begin.drr_toname)); + } + + dsp = kmem_zalloc(sizeof (dmu_sendarg_t), KM_SLEEP); + + dsp->dsa_drr = drr; + dsp->dsa_vp = vp; + dsp->dsa_outfd = outfd; + dsp->dsa_proc = curproc; + dsp->dsa_os = os; + dsp->dsa_off = off; + dsp->dsa_toguid = dsl_dataset_phys(ds)->ds_guid; + ZIO_SET_CHECKSUM(&dsp->dsa_zc, 0, 0, 0, 0); + dsp->dsa_pending_op = PENDING_NONE; + dsp->dsa_incremental = (fromzb != NULL); + dsp->dsa_featureflags = featureflags; + + mutex_enter(&ds->ds_sendstream_lock); + list_insert_head(&ds->ds_sendstreams, dsp); + mutex_exit(&ds->ds_sendstream_lock); + + dsl_dataset_long_hold(ds, FTAG); + dsl_pool_rele(dp, tag); + + if (dump_bytes(dsp, drr, sizeof (dmu_replay_record_t)) != 0) { + err = dsp->dsa_err; + goto out; + } + + err = traverse_dataset(ds, fromtxg, TRAVERSE_PRE | TRAVERSE_PREFETCH, + backup_cb, dsp); + + if (dsp->dsa_pending_op != PENDING_NONE) + if (dump_bytes(dsp, drr, sizeof (dmu_replay_record_t)) != 0) + err = SET_ERROR(EINTR); + + if (err != 0) { + if (err == EINTR && dsp->dsa_err != 0) + err = dsp->dsa_err; + goto out; + } + + bzero(drr, sizeof (dmu_replay_record_t)); + drr->drr_type = DRR_END; + drr->drr_u.drr_end.drr_checksum = dsp->dsa_zc; + drr->drr_u.drr_end.drr_toguid = dsp->dsa_toguid; + + if (dump_bytes(dsp, drr, sizeof (dmu_replay_record_t)) != 0) { + err = dsp->dsa_err; + goto out; + } + +out: + mutex_enter(&ds->ds_sendstream_lock); + list_remove(&ds->ds_sendstreams, dsp); + mutex_exit(&ds->ds_sendstream_lock); + + kmem_free(drr, sizeof (dmu_replay_record_t)); + kmem_free(dsp, sizeof (dmu_sendarg_t)); + + dsl_dataset_long_rele(ds, FTAG); + + return (err); +} + +int +dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, + boolean_t embedok, boolean_t large_block_ok, + int outfd, vnode_t *vp, offset_t *off) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + dsl_dataset_t *fromds = NULL; + int err; + + err = dsl_pool_hold(pool, FTAG, &dp); + if (err != 0) + return (err); + + err = dsl_dataset_hold_obj(dp, tosnap, FTAG, &ds); + if (err != 0) { + dsl_pool_rele(dp, FTAG); + return (err); + } + + if (fromsnap != 0) { + zfs_bookmark_phys_t zb; + boolean_t is_clone; + + err = dsl_dataset_hold_obj(dp, fromsnap, FTAG, &fromds); + if (err != 0) { + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (err); + } + if (!dsl_dataset_is_before(ds, fromds, 0)) + err = SET_ERROR(EXDEV); + zb.zbm_creation_time = + dsl_dataset_phys(fromds)->ds_creation_time; + zb.zbm_creation_txg = dsl_dataset_phys(fromds)->ds_creation_txg; + zb.zbm_guid = dsl_dataset_phys(fromds)->ds_guid; + is_clone = (fromds->ds_dir != ds->ds_dir); + dsl_dataset_rele(fromds, FTAG); + err = dmu_send_impl(FTAG, dp, ds, &zb, is_clone, + embedok, large_block_ok, outfd, vp, off); + } else { + err = dmu_send_impl(FTAG, dp, ds, NULL, B_FALSE, + embedok, large_block_ok, outfd, vp, off); + } + dsl_dataset_rele(ds, FTAG); + return (err); +} + +int +dmu_send(const char *tosnap, const char *fromsnap, + boolean_t embedok, boolean_t large_block_ok, + int outfd, vnode_t *vp, offset_t *off) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int err; + boolean_t owned = B_FALSE; + + if (fromsnap != NULL && strpbrk(fromsnap, "@#") == NULL) + return (SET_ERROR(EINVAL)); + + err = dsl_pool_hold(tosnap, FTAG, &dp); + if (err != 0) + return (err); + + if (strchr(tosnap, '@') == NULL && spa_writeable(dp->dp_spa)) { + /* + * We are sending a filesystem or volume. Ensure + * that it doesn't change by owning the dataset. + */ + err = dsl_dataset_own(dp, tosnap, FTAG, &ds); + owned = B_TRUE; + } else { + err = dsl_dataset_hold(dp, tosnap, FTAG, &ds); + } + if (err != 0) { + dsl_pool_rele(dp, FTAG); + return (err); + } + + if (fromsnap != NULL) { + zfs_bookmark_phys_t zb; + boolean_t is_clone = B_FALSE; + int fsnamelen = strchr(tosnap, '@') - tosnap; + + /* + * If the fromsnap is in a different filesystem, then + * mark the send stream as a clone. + */ + if (strncmp(tosnap, fromsnap, fsnamelen) != 0 || + (fromsnap[fsnamelen] != '@' && + fromsnap[fsnamelen] != '#')) { + is_clone = B_TRUE; + } + + if (strchr(fromsnap, '@')) { + dsl_dataset_t *fromds; + err = dsl_dataset_hold(dp, fromsnap, FTAG, &fromds); + if (err == 0) { + if (!dsl_dataset_is_before(ds, fromds, 0)) + err = SET_ERROR(EXDEV); + zb.zbm_creation_time = + dsl_dataset_phys(fromds)->ds_creation_time; + zb.zbm_creation_txg = + dsl_dataset_phys(fromds)->ds_creation_txg; + zb.zbm_guid = dsl_dataset_phys(fromds)->ds_guid; + is_clone = (ds->ds_dir != fromds->ds_dir); + dsl_dataset_rele(fromds, FTAG); + } + } else { + err = dsl_bookmark_lookup(dp, fromsnap, ds, &zb); + } + if (err != 0) { + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (err); + } + err = dmu_send_impl(FTAG, dp, ds, &zb, is_clone, + embedok, large_block_ok, outfd, vp, off); + } else { + err = dmu_send_impl(FTAG, dp, ds, NULL, B_FALSE, + embedok, large_block_ok, outfd, vp, off); + } + if (owned) + dsl_dataset_disown(ds, FTAG); + else + dsl_dataset_rele(ds, FTAG); + return (err); +} + +static int +dmu_adjust_send_estimate_for_indirects(dsl_dataset_t *ds, uint64_t size, + uint64_t *sizep) +{ + int err; + /* + * Assume that space (both on-disk and in-stream) is dominated by + * data. We will adjust for indirect blocks and the copies property, + * but ignore per-object space used (eg, dnodes and DRR_OBJECT records). + */ + + /* + * Subtract out approximate space used by indirect blocks. + * Assume most space is used by data blocks (non-indirect, non-dnode). + * Assume all blocks are recordsize. Assume ditto blocks and + * internal fragmentation counter out compression. + * + * Therefore, space used by indirect blocks is sizeof(blkptr_t) per + * block, which we observe in practice. + */ + uint64_t recordsize; + err = dsl_prop_get_int_ds(ds, "recordsize", &recordsize); + if (err != 0) + return (err); + size -= size / recordsize * sizeof (blkptr_t); + + /* Add in the space for the record associated with each block. */ + size += size / recordsize * sizeof (dmu_replay_record_t); + + *sizep = size; + + return (0); +} + +int +dmu_send_estimate(dsl_dataset_t *ds, dsl_dataset_t *fromds, uint64_t *sizep) +{ + int err; + uint64_t size; + + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + + /* tosnap must be a snapshot */ + if (!ds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + /* fromsnap, if provided, must be a snapshot */ + if (fromds != NULL && !fromds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + /* + * fromsnap must be an earlier snapshot from the same fs as tosnap, + * or the origin's fs. + */ + if (fromds != NULL && !dsl_dataset_is_before(ds, fromds, 0)) + return (SET_ERROR(EXDEV)); + + /* Get uncompressed size estimate of changed data. */ + if (fromds == NULL) { + size = dsl_dataset_phys(ds)->ds_uncompressed_bytes; + } else { + uint64_t used, comp; + err = dsl_dataset_space_written(fromds, ds, + &used, &comp, &size); + if (err != 0) + return (err); + } + + err = dmu_adjust_send_estimate_for_indirects(ds, size, sizep); + return (err); +} + +/* + * Simple callback used to traverse the blocks of a snapshot and sum their + * uncompressed size + */ +/* ARGSUSED */ +static int +dmu_calculate_send_traversal(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + uint64_t *spaceptr = arg; + if (bp != NULL && !BP_IS_HOLE(bp)) { + *spaceptr += BP_GET_UCSIZE(bp); + } + return (0); +} + +/* + * Given a desination snapshot and a TXG, calculate the approximate size of a + * send stream sent from that TXG. from_txg may be zero, indicating that the + * whole snapshot will be sent. + */ +int +dmu_send_estimate_from_txg(dsl_dataset_t *ds, uint64_t from_txg, + uint64_t *sizep) +{ + int err; + uint64_t size = 0; + + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + + /* tosnap must be a snapshot */ + if (!dsl_dataset_is_snapshot(ds)) + return (SET_ERROR(EINVAL)); + + /* verify that from_txg is before the provided snapshot was taken */ + if (from_txg >= dsl_dataset_phys(ds)->ds_creation_txg) { + return (SET_ERROR(EXDEV)); + } + /* + * traverse the blocks of the snapshot with birth times after + * from_txg, summing their uncompressed size + */ + err = traverse_dataset(ds, from_txg, TRAVERSE_POST, + dmu_calculate_send_traversal, &size); + if (err) + return (err); + + err = dmu_adjust_send_estimate_for_indirects(ds, size, sizep); + return (err); +} + +typedef struct dmu_recv_begin_arg { + const char *drba_origin; + dmu_recv_cookie_t *drba_cookie; + cred_t *drba_cred; + uint64_t drba_snapobj; +} dmu_recv_begin_arg_t; + +static int +recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds, + uint64_t fromguid) +{ + uint64_t val; + int error; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + + /* temporary clone name must not exist */ + error = zap_lookup(dp->dp_meta_objset, + dsl_dir_phys(ds->ds_dir)->dd_child_dir_zapobj, recv_clone_name, + 8, 1, &val); + if (error != ENOENT) + return (error == 0 ? EBUSY : error); + + /* new snapshot name must not exist */ + error = zap_lookup(dp->dp_meta_objset, + dsl_dataset_phys(ds)->ds_snapnames_zapobj, + drba->drba_cookie->drc_tosnap, 8, 1, &val); + if (error != ENOENT) + return (error == 0 ? EEXIST : error); + + /* + * Check snapshot limit before receiving. We'll recheck again at the + * end, but might as well abort before receiving if we're already over + * the limit. + * + * Note that we do not check the file system limit with + * dsl_dir_fscount_check because the temporary %clones don't count + * against that limit. + */ + error = dsl_fs_ss_limit_check(ds->ds_dir, 1, ZFS_PROP_SNAPSHOT_LIMIT, + NULL, drba->drba_cred); + if (error != 0) + return (error); + + if (fromguid != 0) { + dsl_dataset_t *snap; + uint64_t obj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + + /* Find snapshot in this dir that matches fromguid. */ + while (obj != 0) { + error = dsl_dataset_hold_obj(dp, obj, FTAG, + &snap); + if (error != 0) + return (SET_ERROR(ENODEV)); + if (snap->ds_dir != ds->ds_dir) { + dsl_dataset_rele(snap, FTAG); + return (SET_ERROR(ENODEV)); + } + if (dsl_dataset_phys(snap)->ds_guid == fromguid) + break; + obj = dsl_dataset_phys(snap)->ds_prev_snap_obj; + dsl_dataset_rele(snap, FTAG); + } + if (obj == 0) + return (SET_ERROR(ENODEV)); + + if (drba->drba_cookie->drc_force) { + drba->drba_snapobj = obj; + } else { + /* + * If we are not forcing, there must be no + * changes since fromsnap. + */ + if (dsl_dataset_modified_since_snap(ds, snap)) { + dsl_dataset_rele(snap, FTAG); + return (SET_ERROR(ETXTBSY)); + } + drba->drba_snapobj = ds->ds_prev->ds_object; + } + + dsl_dataset_rele(snap, FTAG); + } else { + /* if full, then must be forced */ + if (!drba->drba_cookie->drc_force) + return (SET_ERROR(EEXIST)); + /* start from $ORIGIN@$ORIGIN, if supported */ + drba->drba_snapobj = dp->dp_origin_snap != NULL ? + dp->dp_origin_snap->ds_object : 0; + } + + return (0); + +} + +static int +dmu_recv_begin_check(void *arg, dmu_tx_t *tx) +{ + dmu_recv_begin_arg_t *drba = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + struct drr_begin *drrb = drba->drba_cookie->drc_drrb; + uint64_t fromguid = drrb->drr_fromguid; + int flags = drrb->drr_flags; + int error; + uint64_t featureflags = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo); + dsl_dataset_t *ds; + const char *tofs = drba->drba_cookie->drc_tofs; + + /* already checked */ + ASSERT3U(drrb->drr_magic, ==, DMU_BACKUP_MAGIC); + + if (DMU_GET_STREAM_HDRTYPE(drrb->drr_versioninfo) == + DMU_COMPOUNDSTREAM || + drrb->drr_type >= DMU_OST_NUMTYPES || + ((flags & DRR_FLAG_CLONE) && drba->drba_origin == NULL)) + return (SET_ERROR(EINVAL)); + + /* Verify pool version supports SA if SA_SPILL feature set */ + if ((featureflags & DMU_BACKUP_FEATURE_SA_SPILL) && + spa_version(dp->dp_spa) < SPA_VERSION_SA) + return (SET_ERROR(ENOTSUP)); + + /* + * The receiving code doesn't know how to translate a WRITE_EMBEDDED + * record to a plan WRITE record, so the pool must have the + * EMBEDDED_DATA feature enabled if the stream has WRITE_EMBEDDED + * records. Same with WRITE_EMBEDDED records that use LZ4 compression. + */ + if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA) && + !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_EMBEDDED_DATA)) + return (SET_ERROR(ENOTSUP)); + if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA_LZ4) && + !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) + return (SET_ERROR(ENOTSUP)); + + /* + * The receiving code doesn't know how to translate large blocks + * to smaller ones, so the pool must have the LARGE_BLOCKS + * feature enabled if the stream has LARGE_BLOCKS. + */ + if ((featureflags & DMU_BACKUP_FEATURE_LARGE_BLOCKS) && + !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LARGE_BLOCKS)) + return (SET_ERROR(ENOTSUP)); + + error = dsl_dataset_hold(dp, tofs, FTAG, &ds); + if (error == 0) { + /* target fs already exists; recv into temp clone */ + + /* Can't recv a clone into an existing fs */ + if (flags & DRR_FLAG_CLONE) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + + error = recv_begin_check_existing_impl(drba, ds, fromguid); + dsl_dataset_rele(ds, FTAG); + } else if (error == ENOENT) { + /* target fs does not exist; must be a full backup or clone */ + char buf[MAXNAMELEN]; + + /* + * If it's a non-clone incremental, we are missing the + * target fs, so fail the recv. + */ + if (fromguid != 0 && !(flags & DRR_FLAG_CLONE)) + return (SET_ERROR(ENOENT)); + + /* Open the parent of tofs */ + ASSERT3U(strlen(tofs), <, MAXNAMELEN); + (void) strlcpy(buf, tofs, strrchr(tofs, '/') - tofs + 1); + error = dsl_dataset_hold(dp, buf, FTAG, &ds); + if (error != 0) + return (error); + + /* + * Check filesystem and snapshot limits before receiving. We'll + * recheck snapshot limits again at the end (we create the + * filesystems and increment those counts during begin_sync). + */ + error = dsl_fs_ss_limit_check(ds->ds_dir, 1, + ZFS_PROP_FILESYSTEM_LIMIT, NULL, drba->drba_cred); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + error = dsl_fs_ss_limit_check(ds->ds_dir, 1, + ZFS_PROP_SNAPSHOT_LIMIT, NULL, drba->drba_cred); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + if (drba->drba_origin != NULL) { + dsl_dataset_t *origin; + error = dsl_dataset_hold(dp, drba->drba_origin, + FTAG, &origin); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + if (!origin->ds_is_snapshot) { + dsl_dataset_rele(origin, FTAG); + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + if (dsl_dataset_phys(origin)->ds_guid != fromguid) { + dsl_dataset_rele(origin, FTAG); + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENODEV)); + } + dsl_dataset_rele(origin, FTAG); + } + dsl_dataset_rele(ds, FTAG); + error = 0; + } + return (error); +} + +static void +dmu_recv_begin_sync(void *arg, dmu_tx_t *tx) +{ + dmu_recv_begin_arg_t *drba = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + struct drr_begin *drrb = drba->drba_cookie->drc_drrb; + const char *tofs = drba->drba_cookie->drc_tofs; + dsl_dataset_t *ds, *newds; + uint64_t dsobj; + int error; + uint64_t crflags; + + crflags = (drrb->drr_flags & DRR_FLAG_CI_DATA) ? + DS_FLAG_CI_DATASET : 0; + + error = dsl_dataset_hold(dp, tofs, FTAG, &ds); + if (error == 0) { + /* create temporary clone */ + dsl_dataset_t *snap = NULL; + if (drba->drba_snapobj != 0) { + VERIFY0(dsl_dataset_hold_obj(dp, + drba->drba_snapobj, FTAG, &snap)); + } + dsobj = dsl_dataset_create_sync(ds->ds_dir, recv_clone_name, + snap, crflags, drba->drba_cred, tx); + dsl_dataset_rele(snap, FTAG); + dsl_dataset_rele(ds, FTAG); + } else { + dsl_dir_t *dd; + const char *tail; + dsl_dataset_t *origin = NULL; + + VERIFY0(dsl_dir_hold(dp, tofs, FTAG, &dd, &tail)); + + if (drba->drba_origin != NULL) { + VERIFY0(dsl_dataset_hold(dp, drba->drba_origin, + FTAG, &origin)); + } + + /* Create new dataset. */ + dsobj = dsl_dataset_create_sync(dd, + strrchr(tofs, '/') + 1, + origin, crflags, drba->drba_cred, tx); + if (origin != NULL) + dsl_dataset_rele(origin, FTAG); + dsl_dir_rele(dd, FTAG); + drba->drba_cookie->drc_newfs = B_TRUE; + } + VERIFY0(dsl_dataset_own_obj(dp, dsobj, dmu_recv_tag, &newds)); + + if ((DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & + DMU_BACKUP_FEATURE_LARGE_BLOCKS) && + !newds->ds_large_blocks) { + dsl_dataset_activate_large_blocks_sync_impl(dsobj, tx); + newds->ds_large_blocks = B_TRUE; + } + + dmu_buf_will_dirty(newds->ds_dbuf, tx); + dsl_dataset_phys(newds)->ds_flags |= DS_FLAG_INCONSISTENT; + + /* + * If we actually created a non-clone, we need to create the + * objset in our new dataset. + */ + if (BP_IS_HOLE(dsl_dataset_get_blkptr(newds))) { + (void) dmu_objset_create_impl(dp->dp_spa, + newds, dsl_dataset_get_blkptr(newds), drrb->drr_type, tx); + } + + drba->drba_cookie->drc_ds = newds; + + spa_history_log_internal_ds(newds, "receive", tx, ""); +} + +/* + * NB: callers *MUST* call dmu_recv_stream() if dmu_recv_begin() + * succeeds; otherwise we will leak the holds on the datasets. + */ +int +dmu_recv_begin(char *tofs, char *tosnap, struct drr_begin *drrb, + boolean_t force, char *origin, dmu_recv_cookie_t *drc) +{ + dmu_recv_begin_arg_t drba = { 0 }; + dmu_replay_record_t *drr; + + bzero(drc, sizeof (dmu_recv_cookie_t)); + drc->drc_drrb = drrb; + drc->drc_tosnap = tosnap; + drc->drc_tofs = tofs; + drc->drc_force = force; + drc->drc_cred = CRED(); + + if (drrb->drr_magic == BSWAP_64(DMU_BACKUP_MAGIC)) + drc->drc_byteswap = B_TRUE; + else if (drrb->drr_magic != DMU_BACKUP_MAGIC) + return (SET_ERROR(EINVAL)); + + drr = kmem_zalloc(sizeof (dmu_replay_record_t), KM_SLEEP); + drr->drr_type = DRR_BEGIN; + drr->drr_u.drr_begin = *drc->drc_drrb; + if (drc->drc_byteswap) { + fletcher_4_incremental_byteswap(drr, + sizeof (dmu_replay_record_t), &drc->drc_cksum); + } else { + fletcher_4_incremental_native(drr, + sizeof (dmu_replay_record_t), &drc->drc_cksum); + } + kmem_free(drr, sizeof (dmu_replay_record_t)); + + if (drc->drc_byteswap) { + drrb->drr_magic = BSWAP_64(drrb->drr_magic); + drrb->drr_versioninfo = BSWAP_64(drrb->drr_versioninfo); + drrb->drr_creation_time = BSWAP_64(drrb->drr_creation_time); + drrb->drr_type = BSWAP_32(drrb->drr_type); + drrb->drr_toguid = BSWAP_64(drrb->drr_toguid); + drrb->drr_fromguid = BSWAP_64(drrb->drr_fromguid); + } + + drba.drba_origin = origin; + drba.drba_cookie = drc; + drba.drba_cred = CRED(); + + return (dsl_sync_task(tofs, dmu_recv_begin_check, dmu_recv_begin_sync, + &drba, 5, ZFS_SPACE_CHECK_NORMAL)); +} + +struct restorearg { + int err; + boolean_t byteswap; + vnode_t *vp; + char *buf; + uint64_t voff; + int bufsize; /* amount of memory allocated for buf */ + zio_cksum_t cksum; + avl_tree_t *guid_to_ds_map; +}; + +typedef struct guid_map_entry { + uint64_t guid; + dsl_dataset_t *gme_ds; + avl_node_t avlnode; +} guid_map_entry_t; + +static int +guid_compare(const void *arg1, const void *arg2) +{ + const guid_map_entry_t *gmep1 = arg1; + const guid_map_entry_t *gmep2 = arg2; + + if (gmep1->guid < gmep2->guid) + return (-1); + else if (gmep1->guid > gmep2->guid) + return (1); + return (0); +} + +static void +free_guid_map_onexit(void *arg) +{ + avl_tree_t *ca = arg; + void *cookie = NULL; + guid_map_entry_t *gmep; + + while ((gmep = avl_destroy_nodes(ca, &cookie)) != NULL) { + dsl_dataset_long_rele(gmep->gme_ds, gmep); + dsl_dataset_rele(gmep->gme_ds, gmep); + kmem_free(gmep, sizeof (guid_map_entry_t)); + } + avl_destroy(ca); + kmem_free(ca, sizeof (avl_tree_t)); +} + +static void * +restore_read(struct restorearg *ra, int len, char *buf) +{ + int done = 0; + + if (buf == NULL) + buf = ra->buf; + + /* some things will require 8-byte alignment, so everything must */ + ASSERT0(len % 8); + ASSERT3U(len, <=, ra->bufsize); + + while (done < len) { + ssize_t resid; + + ra->err = vn_rdwr(UIO_READ, ra->vp, + buf + done, len - done, + ra->voff, UIO_SYSSPACE, FAPPEND, + RLIM64_INFINITY, CRED(), &resid); + + if (resid == len - done) + ra->err = SET_ERROR(EINVAL); + ra->voff += len - done - resid; + done = len - resid; + if (ra->err != 0) + return (NULL); + } + + ASSERT3U(done, ==, len); + if (ra->byteswap) + fletcher_4_incremental_byteswap(buf, len, &ra->cksum); + else + fletcher_4_incremental_native(buf, len, &ra->cksum); + return (buf); +} + +noinline static void +backup_byteswap(dmu_replay_record_t *drr) +{ +#define DO64(X) (drr->drr_u.X = BSWAP_64(drr->drr_u.X)) +#define DO32(X) (drr->drr_u.X = BSWAP_32(drr->drr_u.X)) + drr->drr_type = BSWAP_32(drr->drr_type); + drr->drr_payloadlen = BSWAP_32(drr->drr_payloadlen); + switch (drr->drr_type) { + case DRR_BEGIN: + DO64(drr_begin.drr_magic); + DO64(drr_begin.drr_versioninfo); + DO64(drr_begin.drr_creation_time); + DO32(drr_begin.drr_type); + DO32(drr_begin.drr_flags); + DO64(drr_begin.drr_toguid); + DO64(drr_begin.drr_fromguid); + break; + case DRR_OBJECT: + DO64(drr_object.drr_object); + DO32(drr_object.drr_type); + DO32(drr_object.drr_bonustype); + DO32(drr_object.drr_blksz); + DO32(drr_object.drr_bonuslen); + DO64(drr_object.drr_toguid); + break; + case DRR_FREEOBJECTS: + DO64(drr_freeobjects.drr_firstobj); + DO64(drr_freeobjects.drr_numobjs); + DO64(drr_freeobjects.drr_toguid); + break; + case DRR_WRITE: + DO64(drr_write.drr_object); + DO32(drr_write.drr_type); + DO64(drr_write.drr_offset); + DO64(drr_write.drr_length); + DO64(drr_write.drr_toguid); + DO64(drr_write.drr_key.ddk_cksum.zc_word[0]); + DO64(drr_write.drr_key.ddk_cksum.zc_word[1]); + DO64(drr_write.drr_key.ddk_cksum.zc_word[2]); + DO64(drr_write.drr_key.ddk_cksum.zc_word[3]); + DO64(drr_write.drr_key.ddk_prop); + break; + case DRR_WRITE_BYREF: + DO64(drr_write_byref.drr_object); + DO64(drr_write_byref.drr_offset); + DO64(drr_write_byref.drr_length); + DO64(drr_write_byref.drr_toguid); + DO64(drr_write_byref.drr_refguid); + DO64(drr_write_byref.drr_refobject); + DO64(drr_write_byref.drr_refoffset); + DO64(drr_write_byref.drr_key.ddk_cksum.zc_word[0]); + DO64(drr_write_byref.drr_key.ddk_cksum.zc_word[1]); + DO64(drr_write_byref.drr_key.ddk_cksum.zc_word[2]); + DO64(drr_write_byref.drr_key.ddk_cksum.zc_word[3]); + DO64(drr_write_byref.drr_key.ddk_prop); + break; + case DRR_WRITE_EMBEDDED: + DO64(drr_write_embedded.drr_object); + DO64(drr_write_embedded.drr_offset); + DO64(drr_write_embedded.drr_length); + DO64(drr_write_embedded.drr_toguid); + DO32(drr_write_embedded.drr_lsize); + DO32(drr_write_embedded.drr_psize); + break; + case DRR_FREE: + DO64(drr_free.drr_object); + DO64(drr_free.drr_offset); + DO64(drr_free.drr_length); + DO64(drr_free.drr_toguid); + break; + case DRR_SPILL: + DO64(drr_spill.drr_object); + DO64(drr_spill.drr_length); + DO64(drr_spill.drr_toguid); + break; + case DRR_END: + DO64(drr_end.drr_checksum.zc_word[0]); + DO64(drr_end.drr_checksum.zc_word[1]); + DO64(drr_end.drr_checksum.zc_word[2]); + DO64(drr_end.drr_checksum.zc_word[3]); + DO64(drr_end.drr_toguid); + break; + default: + break; + } +#undef DO64 +#undef DO32 +} + +static inline uint8_t +deduce_nblkptr(dmu_object_type_t bonus_type, uint64_t bonus_size) +{ + if (bonus_type == DMU_OT_SA) { + return (1); + } else { + return (1 + + ((DN_MAX_BONUSLEN - bonus_size) >> SPA_BLKPTRSHIFT)); + } +} + +noinline static int +restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro) +{ + dmu_object_info_t doi; + dmu_tx_t *tx; + void *data = NULL; + uint64_t object; + int err; + + if (drro->drr_type == DMU_OT_NONE || + !DMU_OT_IS_VALID(drro->drr_type) || + !DMU_OT_IS_VALID(drro->drr_bonustype) || + drro->drr_checksumtype >= ZIO_CHECKSUM_FUNCTIONS || + drro->drr_compress >= ZIO_COMPRESS_FUNCTIONS || + P2PHASE(drro->drr_blksz, SPA_MINBLOCKSIZE) || + drro->drr_blksz < SPA_MINBLOCKSIZE || + drro->drr_blksz > spa_maxblocksize(dmu_objset_spa(os)) || + drro->drr_bonuslen > DN_MAX_BONUSLEN) { + return (SET_ERROR(EINVAL)); + } + + err = dmu_object_info(os, drro->drr_object, &doi); + + if (err != 0 && err != ENOENT) + return (SET_ERROR(EINVAL)); + object = err == 0 ? drro->drr_object : DMU_NEW_OBJECT; + + if (drro->drr_bonuslen) { + data = restore_read(ra, P2ROUNDUP(drro->drr_bonuslen, 8), NULL); + if (ra->err != 0) + return (ra->err); + } + + /* + * If we are losing blkptrs or changing the block size this must + * be a new file instance. We must clear out the previous file + * contents before we can change this type of metadata in the dnode. + */ + if (err == 0) { + int nblkptr; + + nblkptr = deduce_nblkptr(drro->drr_bonustype, + drro->drr_bonuslen); + + if (drro->drr_blksz != doi.doi_data_block_size || + nblkptr < doi.doi_nblkptr) { + err = dmu_free_long_range(os, drro->drr_object, + 0, DMU_OBJECT_END); + if (err != 0) + return (SET_ERROR(EINVAL)); + } + } + + tx = dmu_tx_create(os); + dmu_tx_hold_bonus(tx, object); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err != 0) { + dmu_tx_abort(tx); + return (err); + } + + if (object == DMU_NEW_OBJECT) { + /* currently free, want to be allocated */ + err = dmu_object_claim(os, drro->drr_object, + drro->drr_type, drro->drr_blksz, + drro->drr_bonustype, drro->drr_bonuslen, tx); + } else if (drro->drr_type != doi.doi_type || + drro->drr_blksz != doi.doi_data_block_size || + drro->drr_bonustype != doi.doi_bonus_type || + drro->drr_bonuslen != doi.doi_bonus_size) { + /* currently allocated, but with different properties */ + err = dmu_object_reclaim(os, drro->drr_object, + drro->drr_type, drro->drr_blksz, + drro->drr_bonustype, drro->drr_bonuslen, tx); + } + if (err != 0) { + dmu_tx_commit(tx); + return (SET_ERROR(EINVAL)); + } + + dmu_object_set_checksum(os, drro->drr_object, drro->drr_checksumtype, + tx); + dmu_object_set_compress(os, drro->drr_object, drro->drr_compress, tx); + + if (data != NULL) { + dmu_buf_t *db; + + VERIFY(0 == dmu_bonus_hold(os, drro->drr_object, FTAG, &db)); + dmu_buf_will_dirty(db, tx); + + ASSERT3U(db->db_size, >=, drro->drr_bonuslen); + bcopy(data, db->db_data, drro->drr_bonuslen); + if (ra->byteswap) { + dmu_object_byteswap_t byteswap = + DMU_OT_BYTESWAP(drro->drr_bonustype); + dmu_ot_byteswap[byteswap].ob_func(db->db_data, + drro->drr_bonuslen); + } + dmu_buf_rele(db, FTAG); + } + dmu_tx_commit(tx); + return (0); +} + +/* ARGSUSED */ +noinline static int +restore_freeobjects(struct restorearg *ra, objset_t *os, + struct drr_freeobjects *drrfo) +{ + uint64_t obj; + + if (drrfo->drr_firstobj + drrfo->drr_numobjs < drrfo->drr_firstobj) + return (SET_ERROR(EINVAL)); + + for (obj = drrfo->drr_firstobj; + obj < drrfo->drr_firstobj + drrfo->drr_numobjs; + (void) dmu_object_next(os, &obj, FALSE, 0)) { + int err; + + if (dmu_object_info(os, obj, NULL) != 0) + continue; + + err = dmu_free_long_object(os, obj); + if (err != 0) + return (err); + } + return (0); +} + +noinline static int +restore_write(struct restorearg *ra, objset_t *os, + struct drr_write *drrw) +{ + dmu_tx_t *tx; + dmu_buf_t *bonus; + arc_buf_t *abuf; + void *data; + int err; + + if (drrw->drr_offset + drrw->drr_length < drrw->drr_offset || + !DMU_OT_IS_VALID(drrw->drr_type)) + return (SET_ERROR(EINVAL)); + + if (dmu_object_info(os, drrw->drr_object, NULL) != 0) + return (SET_ERROR(EINVAL)); + + if (dmu_bonus_hold(os, drrw->drr_object, FTAG, &bonus) != 0) + return (SET_ERROR(EINVAL)); + + abuf = dmu_request_arcbuf(bonus, drrw->drr_length); + + data = restore_read(ra, drrw->drr_length, abuf->b_data); + if (data == NULL) { + dmu_return_arcbuf(abuf); + dmu_buf_rele(bonus, FTAG); + return (ra->err); + } + + tx = dmu_tx_create(os); + + dmu_tx_hold_write(tx, drrw->drr_object, + drrw->drr_offset, drrw->drr_length); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err != 0) { + dmu_return_arcbuf(abuf); + dmu_buf_rele(bonus, FTAG); + dmu_tx_abort(tx); + return (err); + } + if (ra->byteswap) { + dmu_object_byteswap_t byteswap = + DMU_OT_BYTESWAP(drrw->drr_type); + dmu_ot_byteswap[byteswap].ob_func(data, drrw->drr_length); + } + dmu_assign_arcbuf(bonus, drrw->drr_offset, abuf, tx); + dmu_tx_commit(tx); + dmu_buf_rele(bonus, FTAG); + return (0); +} + +/* + * Handle a DRR_WRITE_BYREF record. This record is used in dedup'ed + * streams to refer to a copy of the data that is already on the + * system because it came in earlier in the stream. This function + * finds the earlier copy of the data, and uses that copy instead of + * data from the stream to fulfill this write. + */ +static int +restore_write_byref(struct restorearg *ra, objset_t *os, + struct drr_write_byref *drrwbr) +{ + dmu_tx_t *tx; + int err; + guid_map_entry_t gmesrch; + guid_map_entry_t *gmep; + avl_index_t where; + objset_t *ref_os = NULL; + dmu_buf_t *dbp; + + if (drrwbr->drr_offset + drrwbr->drr_length < drrwbr->drr_offset) + return (SET_ERROR(EINVAL)); + + /* + * If the GUID of the referenced dataset is different from the + * GUID of the target dataset, find the referenced dataset. + */ + if (drrwbr->drr_toguid != drrwbr->drr_refguid) { + gmesrch.guid = drrwbr->drr_refguid; + if ((gmep = avl_find(ra->guid_to_ds_map, &gmesrch, + &where)) == NULL) { + return (SET_ERROR(EINVAL)); + } + if (dmu_objset_from_ds(gmep->gme_ds, &ref_os)) + return (SET_ERROR(EINVAL)); + } else { + ref_os = os; + } + + err = dmu_buf_hold(ref_os, drrwbr->drr_refobject, + drrwbr->drr_refoffset, FTAG, &dbp, DMU_READ_PREFETCH); + if (err != 0) + return (err); + + tx = dmu_tx_create(os); + + dmu_tx_hold_write(tx, drrwbr->drr_object, + drrwbr->drr_offset, drrwbr->drr_length); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err != 0) { + dmu_tx_abort(tx); + return (err); + } + dmu_write(os, drrwbr->drr_object, + drrwbr->drr_offset, drrwbr->drr_length, dbp->db_data, tx); + dmu_buf_rele(dbp, FTAG); + dmu_tx_commit(tx); + return (0); +} + +static int +restore_write_embedded(struct restorearg *ra, objset_t *os, + struct drr_write_embedded *drrwnp) +{ + dmu_tx_t *tx; + int err; + void *data; + + if (drrwnp->drr_offset + drrwnp->drr_length < drrwnp->drr_offset) + return (EINVAL); + + if (drrwnp->drr_psize > BPE_PAYLOAD_SIZE) + return (EINVAL); + + if (drrwnp->drr_etype >= NUM_BP_EMBEDDED_TYPES) + return (EINVAL); + if (drrwnp->drr_compression >= ZIO_COMPRESS_FUNCTIONS) + return (EINVAL); + + data = restore_read(ra, P2ROUNDUP(drrwnp->drr_psize, 8), NULL); + if (data == NULL) + return (ra->err); + + tx = dmu_tx_create(os); + + dmu_tx_hold_write(tx, drrwnp->drr_object, + drrwnp->drr_offset, drrwnp->drr_length); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err != 0) { + dmu_tx_abort(tx); + return (err); + } + + dmu_write_embedded(os, drrwnp->drr_object, + drrwnp->drr_offset, data, drrwnp->drr_etype, + drrwnp->drr_compression, drrwnp->drr_lsize, drrwnp->drr_psize, + ra->byteswap ^ ZFS_HOST_BYTEORDER, tx); + + dmu_tx_commit(tx); + return (0); +} + +static int +restore_spill(struct restorearg *ra, objset_t *os, struct drr_spill *drrs) +{ + dmu_tx_t *tx; + void *data; + dmu_buf_t *db, *db_spill; + int err; + + if (drrs->drr_length < SPA_MINBLOCKSIZE || + drrs->drr_length > spa_maxblocksize(dmu_objset_spa(os))) + return (SET_ERROR(EINVAL)); + + data = restore_read(ra, drrs->drr_length, NULL); + if (data == NULL) + return (ra->err); + + if (dmu_object_info(os, drrs->drr_object, NULL) != 0) + return (SET_ERROR(EINVAL)); + + VERIFY(0 == dmu_bonus_hold(os, drrs->drr_object, FTAG, &db)); + if ((err = dmu_spill_hold_by_bonus(db, FTAG, &db_spill)) != 0) { + dmu_buf_rele(db, FTAG); + return (err); + } + + tx = dmu_tx_create(os); + + dmu_tx_hold_spill(tx, db->db_object); + + err = dmu_tx_assign(tx, TXG_WAIT); + if (err != 0) { + dmu_buf_rele(db, FTAG); + dmu_buf_rele(db_spill, FTAG); + dmu_tx_abort(tx); + return (err); + } + dmu_buf_will_dirty(db_spill, tx); + + if (db_spill->db_size < drrs->drr_length) + VERIFY(0 == dbuf_spill_set_blksz(db_spill, + drrs->drr_length, tx)); + bcopy(data, db_spill->db_data, drrs->drr_length); + + dmu_buf_rele(db, FTAG); + dmu_buf_rele(db_spill, FTAG); + + dmu_tx_commit(tx); + return (0); +} + +/* ARGSUSED */ +noinline static int +restore_free(struct restorearg *ra, objset_t *os, + struct drr_free *drrf) +{ + int err; + + if (drrf->drr_length != -1ULL && + drrf->drr_offset + drrf->drr_length < drrf->drr_offset) + return (SET_ERROR(EINVAL)); + + if (dmu_object_info(os, drrf->drr_object, NULL) != 0) + return (SET_ERROR(EINVAL)); + + err = dmu_free_long_range(os, drrf->drr_object, + drrf->drr_offset, drrf->drr_length); + return (err); +} + +/* used to destroy the drc_ds on error */ +static void +dmu_recv_cleanup_ds(dmu_recv_cookie_t *drc) +{ + char name[MAXNAMELEN]; + dsl_dataset_name(drc->drc_ds, name); + dsl_dataset_disown(drc->drc_ds, dmu_recv_tag); + (void) dsl_destroy_head(name); +} + +/* + * NB: callers *must* call dmu_recv_end() if this succeeds. + */ +int +dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, + int cleanup_fd, uint64_t *action_handlep) +{ + struct restorearg ra = { 0 }; + dmu_replay_record_t *drr; + objset_t *os; + zio_cksum_t pcksum; + int featureflags; + + ra.byteswap = drc->drc_byteswap; + ra.cksum = drc->drc_cksum; + ra.vp = vp; + ra.voff = *voffp; + ra.bufsize = SPA_MAXBLOCKSIZE; + ra.buf = vmem_alloc(ra.bufsize, KM_SLEEP); + + /* these were verified in dmu_recv_begin */ + ASSERT3U(DMU_GET_STREAM_HDRTYPE(drc->drc_drrb->drr_versioninfo), ==, + DMU_SUBSTREAM); + ASSERT3U(drc->drc_drrb->drr_type, <, DMU_OST_NUMTYPES); + + /* + * Open the objset we are modifying. + */ + VERIFY0(dmu_objset_from_ds(drc->drc_ds, &os)); + + ASSERT(dsl_dataset_phys(drc->drc_ds)->ds_flags & DS_FLAG_INCONSISTENT); + + featureflags = DMU_GET_FEATUREFLAGS(drc->drc_drrb->drr_versioninfo); + + /* if this stream is dedup'ed, set up the avl tree for guid mapping */ + if (featureflags & DMU_BACKUP_FEATURE_DEDUP) { + minor_t minor; + + if (cleanup_fd == -1) { + ra.err = SET_ERROR(EBADF); + goto out; + } + ra.err = zfs_onexit_fd_hold(cleanup_fd, &minor); + if (ra.err != 0) { + cleanup_fd = -1; + goto out; + } + + if (*action_handlep == 0) { + ra.guid_to_ds_map = + kmem_alloc(sizeof (avl_tree_t), KM_SLEEP); + avl_create(ra.guid_to_ds_map, guid_compare, + sizeof (guid_map_entry_t), + offsetof(guid_map_entry_t, avlnode)); + ra.err = zfs_onexit_add_cb(minor, + free_guid_map_onexit, ra.guid_to_ds_map, + action_handlep); + if (ra.err != 0) + goto out; + } else { + ra.err = zfs_onexit_cb_data(minor, *action_handlep, + (void **)&ra.guid_to_ds_map); + if (ra.err != 0) + goto out; + } + + drc->drc_guid_to_ds_map = ra.guid_to_ds_map; + } + + /* + * Read records and process them. + */ + pcksum = ra.cksum; + while (ra.err == 0 && + NULL != (drr = restore_read(&ra, sizeof (*drr), NULL))) { + if (issig(JUSTLOOKING) && issig(FORREAL)) { + ra.err = SET_ERROR(EINTR); + goto out; + } + + if (ra.byteswap) + backup_byteswap(drr); + + switch (drr->drr_type) { + case DRR_OBJECT: + { + /* + * We need to make a copy of the record header, + * because restore_{object,write} may need to + * restore_read(), which will invalidate drr. + */ + struct drr_object drro = drr->drr_u.drr_object; + ra.err = restore_object(&ra, os, &drro); + break; + } + case DRR_FREEOBJECTS: + { + struct drr_freeobjects drrfo = + drr->drr_u.drr_freeobjects; + ra.err = restore_freeobjects(&ra, os, &drrfo); + break; + } + case DRR_WRITE: + { + struct drr_write drrw = drr->drr_u.drr_write; + ra.err = restore_write(&ra, os, &drrw); + break; + } + case DRR_WRITE_BYREF: + { + struct drr_write_byref drrwbr = + drr->drr_u.drr_write_byref; + ra.err = restore_write_byref(&ra, os, &drrwbr); + break; + } + case DRR_WRITE_EMBEDDED: + { + struct drr_write_embedded drrwe = + drr->drr_u.drr_write_embedded; + ra.err = restore_write_embedded(&ra, os, &drrwe); + break; + } + case DRR_FREE: + { + struct drr_free drrf = drr->drr_u.drr_free; + ra.err = restore_free(&ra, os, &drrf); + break; + } + case DRR_END: + { + struct drr_end drre = drr->drr_u.drr_end; + /* + * We compare against the *previous* checksum + * value, because the stored checksum is of + * everything before the DRR_END record. + */ + if (!ZIO_CHECKSUM_EQUAL(drre.drr_checksum, pcksum)) + ra.err = SET_ERROR(ECKSUM); + goto out; + } + case DRR_SPILL: + { + struct drr_spill drrs = drr->drr_u.drr_spill; + ra.err = restore_spill(&ra, os, &drrs); + break; + } + default: + ra.err = SET_ERROR(EINVAL); + goto out; + } + pcksum = ra.cksum; + } + ASSERT(ra.err != 0); + +out: + if ((featureflags & DMU_BACKUP_FEATURE_DEDUP) && (cleanup_fd != -1)) + zfs_onexit_fd_rele(cleanup_fd); + + if (ra.err != 0) { + /* + * destroy what we created, so we don't leave it in the + * inconsistent restoring state. + */ + dmu_recv_cleanup_ds(drc); + } + + vmem_free(ra.buf, ra.bufsize); + *voffp = ra.voff; + return (ra.err); +} + +static int +dmu_recv_end_check(void *arg, dmu_tx_t *tx) +{ + dmu_recv_cookie_t *drc = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + int error; + + ASSERT3P(drc->drc_ds->ds_owner, ==, dmu_recv_tag); + + if (!drc->drc_newfs) { + dsl_dataset_t *origin_head; + + error = dsl_dataset_hold(dp, drc->drc_tofs, FTAG, &origin_head); + if (error != 0) + return (error); + if (drc->drc_force) { + /* + * We will destroy any snapshots in tofs (i.e. before + * origin_head) that are after the origin (which is + * the snap before drc_ds, because drc_ds can not + * have any snaps of its own). + */ + uint64_t obj; + + obj = dsl_dataset_phys(origin_head)->ds_prev_snap_obj; + while (obj != + dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj) { + dsl_dataset_t *snap; + error = dsl_dataset_hold_obj(dp, obj, FTAG, + &snap); + if (error != 0) + break; + if (snap->ds_dir != origin_head->ds_dir) + error = SET_ERROR(EINVAL); + if (error == 0) { + error = dsl_destroy_snapshot_check_impl( + snap, B_FALSE); + } + obj = dsl_dataset_phys(snap)->ds_prev_snap_obj; + dsl_dataset_rele(snap, FTAG); + if (error != 0) + break; + } + if (error != 0) { + dsl_dataset_rele(origin_head, FTAG); + return (error); + } + } + error = dsl_dataset_clone_swap_check_impl(drc->drc_ds, + origin_head, drc->drc_force, drc->drc_owner, tx); + if (error != 0) { + dsl_dataset_rele(origin_head, FTAG); + return (error); + } + error = dsl_dataset_snapshot_check_impl(origin_head, + drc->drc_tosnap, tx, B_TRUE, 1, drc->drc_cred); + dsl_dataset_rele(origin_head, FTAG); + if (error != 0) + return (error); + + error = dsl_destroy_head_check_impl(drc->drc_ds, 1); + } else { + error = dsl_dataset_snapshot_check_impl(drc->drc_ds, + drc->drc_tosnap, tx, B_TRUE, 1, drc->drc_cred); + } + return (error); +} + +static void +dmu_recv_end_sync(void *arg, dmu_tx_t *tx) +{ + dmu_recv_cookie_t *drc = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + + spa_history_log_internal_ds(drc->drc_ds, "finish receiving", + tx, "snap=%s", drc->drc_tosnap); + + if (!drc->drc_newfs) { + dsl_dataset_t *origin_head; + + VERIFY0(dsl_dataset_hold(dp, drc->drc_tofs, FTAG, + &origin_head)); + + if (drc->drc_force) { + /* + * Destroy any snapshots of drc_tofs (origin_head) + * after the origin (the snap before drc_ds). + */ + uint64_t obj; + + obj = dsl_dataset_phys(origin_head)->ds_prev_snap_obj; + while (obj != + dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj) { + dsl_dataset_t *snap; + VERIFY0(dsl_dataset_hold_obj(dp, obj, FTAG, + &snap)); + ASSERT3P(snap->ds_dir, ==, origin_head->ds_dir); + obj = dsl_dataset_phys(snap)->ds_prev_snap_obj; + dsl_destroy_snapshot_sync_impl(snap, + B_FALSE, tx); + dsl_dataset_rele(snap, FTAG); + } + } + VERIFY3P(drc->drc_ds->ds_prev, ==, + origin_head->ds_prev); + + dsl_dataset_clone_swap_sync_impl(drc->drc_ds, + origin_head, tx); + dsl_dataset_snapshot_sync_impl(origin_head, + drc->drc_tosnap, tx); + + /* set snapshot's creation time and guid */ + dmu_buf_will_dirty(origin_head->ds_prev->ds_dbuf, tx); + dsl_dataset_phys(origin_head->ds_prev)->ds_creation_time = + drc->drc_drrb->drr_creation_time; + dsl_dataset_phys(origin_head->ds_prev)->ds_guid = + drc->drc_drrb->drr_toguid; + dsl_dataset_phys(origin_head->ds_prev)->ds_flags &= + ~DS_FLAG_INCONSISTENT; + + dmu_buf_will_dirty(origin_head->ds_dbuf, tx); + dsl_dataset_phys(origin_head)->ds_flags &= + ~DS_FLAG_INCONSISTENT; + + dsl_dataset_rele(origin_head, FTAG); + dsl_destroy_head_sync_impl(drc->drc_ds, tx); + + if (drc->drc_owner != NULL) + VERIFY3P(origin_head->ds_owner, ==, drc->drc_owner); + } else { + dsl_dataset_t *ds = drc->drc_ds; + + dsl_dataset_snapshot_sync_impl(ds, drc->drc_tosnap, tx); + + /* set snapshot's creation time and guid */ + dmu_buf_will_dirty(ds->ds_prev->ds_dbuf, tx); + dsl_dataset_phys(ds->ds_prev)->ds_creation_time = + drc->drc_drrb->drr_creation_time; + dsl_dataset_phys(ds->ds_prev)->ds_guid = + drc->drc_drrb->drr_toguid; + dsl_dataset_phys(ds->ds_prev)->ds_flags &= + ~DS_FLAG_INCONSISTENT; + + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_flags &= ~DS_FLAG_INCONSISTENT; + } + drc->drc_newsnapobj = dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj; + /* + * Release the hold from dmu_recv_begin. This must be done before + * we return to open context, so that when we free the dataset's dnode, + * we can evict its bonus buffer. + */ + dsl_dataset_disown(drc->drc_ds, dmu_recv_tag); + drc->drc_ds = NULL; +} + +static int +add_ds_to_guidmap(const char *name, avl_tree_t *guid_map, uint64_t snapobj) +{ + dsl_pool_t *dp; + dsl_dataset_t *snapds; + guid_map_entry_t *gmep; + int err; + + ASSERT(guid_map != NULL); + + err = dsl_pool_hold(name, FTAG, &dp); + if (err != 0) + return (err); + gmep = kmem_alloc(sizeof (*gmep), KM_SLEEP); + err = dsl_dataset_hold_obj(dp, snapobj, gmep, &snapds); + if (err == 0) { + gmep->guid = dsl_dataset_phys(snapds)->ds_guid; + gmep->gme_ds = snapds; + avl_add(guid_map, gmep); + dsl_dataset_long_hold(snapds, gmep); + } else { + kmem_free(gmep, sizeof (*gmep)); + } + + dsl_pool_rele(dp, FTAG); + return (err); +} + +static int dmu_recv_end_modified_blocks = 3; + +static int +dmu_recv_existing_end(dmu_recv_cookie_t *drc) +{ + int error; + +#ifdef _KERNEL + char *name; + + /* + * We will be destroying the ds; make sure its origin is unmounted if + * necessary. + */ + name = kmem_alloc(MAXNAMELEN, KM_SLEEP); + dsl_dataset_name(drc->drc_ds, name); + zfs_destroy_unmount_origin(name); + kmem_free(name, MAXNAMELEN); +#endif + + error = dsl_sync_task(drc->drc_tofs, + dmu_recv_end_check, dmu_recv_end_sync, drc, + dmu_recv_end_modified_blocks, ZFS_SPACE_CHECK_NORMAL); + + if (error != 0) + dmu_recv_cleanup_ds(drc); + return (error); +} + +static int +dmu_recv_new_end(dmu_recv_cookie_t *drc) +{ + int error; + + error = dsl_sync_task(drc->drc_tofs, + dmu_recv_end_check, dmu_recv_end_sync, drc, + dmu_recv_end_modified_blocks, ZFS_SPACE_CHECK_NORMAL); + + if (error != 0) { + dmu_recv_cleanup_ds(drc); + } else if (drc->drc_guid_to_ds_map != NULL) { + (void) add_ds_to_guidmap(drc->drc_tofs, + drc->drc_guid_to_ds_map, + drc->drc_newsnapobj); + } + return (error); +} + +int +dmu_recv_end(dmu_recv_cookie_t *drc, void *owner) +{ + drc->drc_owner = owner; + + if (drc->drc_newfs) + return (dmu_recv_new_end(drc)); + else + return (dmu_recv_existing_end(drc)); +} + +/* + * Return TRUE if this objset is currently being received into. + */ +boolean_t +dmu_objset_is_receiving(objset_t *os) +{ + return (os->os_dsl_dataset != NULL && + os->os_dsl_dataset->ds_owner == dmu_recv_tag); +} + +#if defined(_KERNEL) +module_param(zfs_send_corrupt_data, int, 0644); +MODULE_PARM_DESC(zfs_send_corrupt_data, "Allow sending corrupt data"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_traverse.c +++ linux-4.4.0/zfs/module/zfs/dmu_traverse.c @@ -0,0 +1,672 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int32_t zfs_pd_bytes_max = 50 * 1024 * 1024; /* 50MB */ + +typedef struct prefetch_data { + kmutex_t pd_mtx; + kcondvar_t pd_cv; + int32_t pd_bytes_fetched; + int pd_flags; + boolean_t pd_cancel; + boolean_t pd_exited; +} prefetch_data_t; + +typedef struct traverse_data { + spa_t *td_spa; + uint64_t td_objset; + blkptr_t *td_rootbp; + uint64_t td_min_txg; + zbookmark_phys_t *td_resume; + int td_flags; + prefetch_data_t *td_pfd; + boolean_t td_paused; + uint64_t td_hole_birth_enabled_txg; + blkptr_cb_t *td_func; + void *td_arg; +} traverse_data_t; + +static int traverse_dnode(traverse_data_t *td, const dnode_phys_t *dnp, + uint64_t objset, uint64_t object); +static void prefetch_dnode_metadata(traverse_data_t *td, const dnode_phys_t *, + uint64_t objset, uint64_t object); + +static int +traverse_zil_block(zilog_t *zilog, blkptr_t *bp, void *arg, uint64_t claim_txg) +{ + traverse_data_t *td = arg; + zbookmark_phys_t zb; + + if (BP_IS_HOLE(bp)) + return (0); + + if (claim_txg == 0 && bp->blk_birth >= spa_first_txg(td->td_spa)) + return (0); + + SET_BOOKMARK(&zb, td->td_objset, ZB_ZIL_OBJECT, ZB_ZIL_LEVEL, + bp->blk_cksum.zc_word[ZIL_ZC_SEQ]); + + (void) td->td_func(td->td_spa, zilog, bp, &zb, NULL, td->td_arg); + + return (0); +} + +static int +traverse_zil_record(zilog_t *zilog, lr_t *lrc, void *arg, uint64_t claim_txg) +{ + traverse_data_t *td = arg; + + if (lrc->lrc_txtype == TX_WRITE) { + lr_write_t *lr = (lr_write_t *)lrc; + blkptr_t *bp = &lr->lr_blkptr; + zbookmark_phys_t zb; + + if (BP_IS_HOLE(bp)) + return (0); + + if (claim_txg == 0 || bp->blk_birth < claim_txg) + return (0); + + SET_BOOKMARK(&zb, td->td_objset, lr->lr_foid, + ZB_ZIL_LEVEL, lr->lr_offset / BP_GET_LSIZE(bp)); + + (void) td->td_func(td->td_spa, zilog, bp, &zb, NULL, + td->td_arg); + } + return (0); +} + +static void +traverse_zil(traverse_data_t *td, zil_header_t *zh) +{ + uint64_t claim_txg = zh->zh_claim_txg; + zilog_t *zilog; + + /* + * We only want to visit blocks that have been claimed but not yet + * replayed; plus, in read-only mode, blocks that are already stable. + */ + if (claim_txg == 0 && spa_writeable(td->td_spa)) + return; + + zilog = zil_alloc(spa_get_dsl(td->td_spa)->dp_meta_objset, zh); + + (void) zil_parse(zilog, traverse_zil_block, traverse_zil_record, td, + claim_txg); + + zil_free(zilog); +} + +typedef enum resume_skip { + RESUME_SKIP_ALL, + RESUME_SKIP_NONE, + RESUME_SKIP_CHILDREN +} resume_skip_t; + +/* + * Returns RESUME_SKIP_ALL if td indicates that we are resuming a traversal and + * the block indicated by zb does not need to be visited at all. Returns + * RESUME_SKIP_CHILDREN if we are resuming a post traversal and we reach the + * resume point. This indicates that this block should be visited but not its + * children (since they must have been visited in a previous traversal). + * Otherwise returns RESUME_SKIP_NONE. + */ +static resume_skip_t +resume_skip_check(traverse_data_t *td, const dnode_phys_t *dnp, + const zbookmark_phys_t *zb) +{ + if (td->td_resume != NULL && !ZB_IS_ZERO(td->td_resume)) { + /* + * If we already visited this bp & everything below, + * don't bother doing it again. + */ + if (zbookmark_is_before(dnp, zb, td->td_resume)) + return (RESUME_SKIP_ALL); + + /* + * If we found the block we're trying to resume from, zero + * the bookmark out to indicate that we have resumed. + */ + if (bcmp(zb, td->td_resume, sizeof (*zb)) == 0) { + bzero(td->td_resume, sizeof (*zb)); + if (td->td_flags & TRAVERSE_POST) + return (RESUME_SKIP_CHILDREN); + } + } + return (RESUME_SKIP_NONE); +} + +static void +traverse_prefetch_metadata(traverse_data_t *td, + const blkptr_t *bp, const zbookmark_phys_t *zb) +{ + arc_flags_t flags = ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; + + if (!(td->td_flags & TRAVERSE_PREFETCH_METADATA)) + return; + /* + * If we are in the process of resuming, don't prefetch, because + * some children will not be needed (and in fact may have already + * been freed). + */ + if (td->td_resume != NULL && !ZB_IS_ZERO(td->td_resume)) + return; + if (BP_IS_HOLE(bp) || bp->blk_birth <= td->td_min_txg) + return; + if (BP_GET_LEVEL(bp) == 0 && BP_GET_TYPE(bp) != DMU_OT_DNODE) + return; + + (void) arc_read(NULL, td->td_spa, bp, NULL, NULL, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, zb); +} + +static boolean_t +prefetch_needed(prefetch_data_t *pfd, const blkptr_t *bp) +{ + ASSERT(pfd->pd_flags & TRAVERSE_PREFETCH_DATA); + if (BP_IS_HOLE(bp) || BP_IS_EMBEDDED(bp) || + BP_GET_TYPE(bp) == DMU_OT_INTENT_LOG) + return (B_FALSE); + return (B_TRUE); +} + +static int +traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp, + const blkptr_t *bp, const zbookmark_phys_t *zb) +{ + int err = 0; + arc_buf_t *buf = NULL; + prefetch_data_t *pd = td->td_pfd; + + switch (resume_skip_check(td, dnp, zb)) { + case RESUME_SKIP_ALL: + return (0); + case RESUME_SKIP_CHILDREN: + goto post; + case RESUME_SKIP_NONE: + break; + default: + ASSERT(0); + } + + if (bp->blk_birth == 0) { + /* + * Since this block has a birth time of 0 it must be a + * hole created before the SPA_FEATURE_HOLE_BIRTH + * feature was enabled. If SPA_FEATURE_HOLE_BIRTH + * was enabled before the min_txg for this traveral we + * know the hole must have been created before the + * min_txg for this traveral, so we can skip it. If + * SPA_FEATURE_HOLE_BIRTH was enabled after the min_txg + * for this traveral we cannot tell if the hole was + * created before or after the min_txg for this + * traversal, so we cannot skip it. + */ + if (td->td_hole_birth_enabled_txg < td->td_min_txg) + return (0); + } else if (bp->blk_birth <= td->td_min_txg) { + return (0); + } + + if (pd != NULL && !pd->pd_exited && prefetch_needed(pd, bp)) { + uint64_t size = BP_GET_LSIZE(bp); + mutex_enter(&pd->pd_mtx); + ASSERT(pd->pd_bytes_fetched >= 0); + while (pd->pd_bytes_fetched < size && !pd->pd_exited) + cv_wait_sig(&pd->pd_cv, &pd->pd_mtx); + pd->pd_bytes_fetched -= size; + cv_broadcast(&pd->pd_cv); + mutex_exit(&pd->pd_mtx); + } + + if (BP_IS_HOLE(bp)) { + err = td->td_func(td->td_spa, NULL, bp, zb, dnp, td->td_arg); + if (err != 0) + goto post; + return (0); + } + + if (td->td_flags & TRAVERSE_PRE) { + err = td->td_func(td->td_spa, NULL, bp, zb, dnp, + td->td_arg); + if (err == TRAVERSE_VISIT_NO_CHILDREN) + return (0); + if (err != 0) + goto post; + } + + if (BP_GET_LEVEL(bp) > 0) { + uint32_t flags = ARC_FLAG_WAIT; + int32_t i; + int32_t epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT; + zbookmark_phys_t *czb; + + err = arc_read(NULL, td->td_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, zb); + if (err != 0) + goto post; + + czb = kmem_alloc(sizeof (zbookmark_phys_t), KM_SLEEP); + + for (i = 0; i < epb; i++) { + SET_BOOKMARK(czb, zb->zb_objset, zb->zb_object, + zb->zb_level - 1, + zb->zb_blkid * epb + i); + traverse_prefetch_metadata(td, + &((blkptr_t *)buf->b_data)[i], czb); + } + + /* recursively visitbp() blocks below this */ + for (i = 0; i < epb; i++) { + SET_BOOKMARK(czb, zb->zb_objset, zb->zb_object, + zb->zb_level - 1, + zb->zb_blkid * epb + i); + err = traverse_visitbp(td, dnp, + &((blkptr_t *)buf->b_data)[i], czb); + if (err != 0) + break; + } + + kmem_free(czb, sizeof (zbookmark_phys_t)); + + } else if (BP_GET_TYPE(bp) == DMU_OT_DNODE) { + uint32_t flags = ARC_FLAG_WAIT; + int32_t i; + int32_t epb = BP_GET_LSIZE(bp) >> DNODE_SHIFT; + dnode_phys_t *cdnp; + + err = arc_read(NULL, td->td_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, zb); + if (err != 0) + goto post; + cdnp = buf->b_data; + + for (i = 0; i < epb; i++) { + prefetch_dnode_metadata(td, &cdnp[i], zb->zb_objset, + zb->zb_blkid * epb + i); + } + + /* recursively visitbp() blocks below this */ + for (i = 0; i < epb; i++) { + err = traverse_dnode(td, &cdnp[i], zb->zb_objset, + zb->zb_blkid * epb + i); + if (err != 0) + break; + } + } else if (BP_GET_TYPE(bp) == DMU_OT_OBJSET) { + arc_flags_t flags = ARC_FLAG_WAIT; + objset_phys_t *osp; + dnode_phys_t *mdnp, *gdnp, *udnp; + + err = arc_read(NULL, td->td_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, zb); + if (err != 0) + goto post; + + osp = buf->b_data; + mdnp = &osp->os_meta_dnode; + gdnp = &osp->os_groupused_dnode; + udnp = &osp->os_userused_dnode; + + prefetch_dnode_metadata(td, mdnp, zb->zb_objset, + DMU_META_DNODE_OBJECT); + if (arc_buf_size(buf) >= sizeof (objset_phys_t)) { + prefetch_dnode_metadata(td, gdnp, zb->zb_objset, + DMU_GROUPUSED_OBJECT); + prefetch_dnode_metadata(td, udnp, zb->zb_objset, + DMU_USERUSED_OBJECT); + } + + err = traverse_dnode(td, mdnp, zb->zb_objset, + DMU_META_DNODE_OBJECT); + if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { + err = traverse_dnode(td, gdnp, zb->zb_objset, + DMU_GROUPUSED_OBJECT); + } + if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { + err = traverse_dnode(td, udnp, zb->zb_objset, + DMU_USERUSED_OBJECT); + } + } + + if (buf) + (void) arc_buf_remove_ref(buf, &buf); + +post: + if (err == 0 && (td->td_flags & TRAVERSE_POST)) + err = td->td_func(td->td_spa, NULL, bp, zb, dnp, td->td_arg); + + if ((td->td_flags & TRAVERSE_HARD) && (err == EIO || err == ECKSUM)) { + /* + * Ignore this disk error as requested by the HARD flag, + * and continue traversal. + */ + err = 0; + } + + /* + * If we are stopping here, set td_resume. + */ + if (td->td_resume != NULL && err != 0 && !td->td_paused) { + td->td_resume->zb_objset = zb->zb_objset; + td->td_resume->zb_object = zb->zb_object; + td->td_resume->zb_level = 0; + /* + * If we have stopped on an indirect block (e.g. due to + * i/o error), we have not visited anything below it. + * Set the bookmark to the first level-0 block that we need + * to visit. This way, the resuming code does not need to + * deal with resuming from indirect blocks. + */ + td->td_resume->zb_blkid = zb->zb_blkid << + (zb->zb_level * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT)); + td->td_paused = B_TRUE; + } + + return (err); +} + +static void +prefetch_dnode_metadata(traverse_data_t *td, const dnode_phys_t *dnp, + uint64_t objset, uint64_t object) +{ + int j; + zbookmark_phys_t czb; + + for (j = 0; j < dnp->dn_nblkptr; j++) { + SET_BOOKMARK(&czb, objset, object, dnp->dn_nlevels - 1, j); + traverse_prefetch_metadata(td, &dnp->dn_blkptr[j], &czb); + } + + if (dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) { + SET_BOOKMARK(&czb, objset, object, 0, DMU_SPILL_BLKID); + traverse_prefetch_metadata(td, &dnp->dn_spill, &czb); + } +} + +static int +traverse_dnode(traverse_data_t *td, const dnode_phys_t *dnp, + uint64_t objset, uint64_t object) +{ + int j, err = 0; + zbookmark_phys_t czb; + + for (j = 0; j < dnp->dn_nblkptr; j++) { + SET_BOOKMARK(&czb, objset, object, dnp->dn_nlevels - 1, j); + err = traverse_visitbp(td, dnp, &dnp->dn_blkptr[j], &czb); + if (err != 0) + break; + } + + if (err == 0 && dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) { + SET_BOOKMARK(&czb, objset, object, 0, DMU_SPILL_BLKID); + err = traverse_visitbp(td, dnp, &dnp->dn_spill, &czb); + } + return (err); +} + +/* ARGSUSED */ +static int +traverse_prefetcher(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + prefetch_data_t *pfd = arg; + arc_flags_t aflags = ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; + + ASSERT(pfd->pd_bytes_fetched >= 0); + if (pfd->pd_cancel) + return (SET_ERROR(EINTR)); + + if (!prefetch_needed(pfd, bp)) + return (0); + + mutex_enter(&pfd->pd_mtx); + while (!pfd->pd_cancel && pfd->pd_bytes_fetched >= zfs_pd_bytes_max) + cv_wait_sig(&pfd->pd_cv, &pfd->pd_mtx); + pfd->pd_bytes_fetched += BP_GET_LSIZE(bp); + cv_broadcast(&pfd->pd_cv); + mutex_exit(&pfd->pd_mtx); + + (void) arc_read(NULL, spa, bp, NULL, NULL, ZIO_PRIORITY_ASYNC_READ, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, &aflags, zb); + + return (0); +} + +static void +traverse_prefetch_thread(void *arg) +{ + traverse_data_t *td_main = arg; + traverse_data_t td = *td_main; + zbookmark_phys_t czb; + fstrans_cookie_t cookie = spl_fstrans_mark(); + + td.td_func = traverse_prefetcher; + td.td_arg = td_main->td_pfd; + td.td_pfd = NULL; + + SET_BOOKMARK(&czb, td.td_objset, + ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); + (void) traverse_visitbp(&td, NULL, td.td_rootbp, &czb); + + mutex_enter(&td_main->td_pfd->pd_mtx); + td_main->td_pfd->pd_exited = B_TRUE; + cv_broadcast(&td_main->td_pfd->pd_cv); + mutex_exit(&td_main->td_pfd->pd_mtx); + spl_fstrans_unmark(cookie); +} + +/* + * NB: dataset must not be changing on-disk (eg, is a snapshot or we are + * in syncing context). + */ +static int +traverse_impl(spa_t *spa, dsl_dataset_t *ds, uint64_t objset, blkptr_t *rootbp, + uint64_t txg_start, zbookmark_phys_t *resume, int flags, + blkptr_cb_t func, void *arg) +{ + traverse_data_t *td; + prefetch_data_t *pd; + zbookmark_phys_t *czb; + int err; + + ASSERT(ds == NULL || objset == ds->ds_object); + ASSERT(!(flags & TRAVERSE_PRE) || !(flags & TRAVERSE_POST)); + + /* + * The data prefetching mechanism (the prefetch thread) is incompatible + * with resuming from a bookmark. + */ + ASSERT(resume == NULL || !(flags & TRAVERSE_PREFETCH_DATA)); + + td = kmem_alloc(sizeof (traverse_data_t), KM_SLEEP); + pd = kmem_zalloc(sizeof (prefetch_data_t), KM_SLEEP); + czb = kmem_alloc(sizeof (zbookmark_phys_t), KM_SLEEP); + + td->td_spa = spa; + td->td_objset = objset; + td->td_rootbp = rootbp; + td->td_min_txg = txg_start; + td->td_resume = resume; + td->td_func = func; + td->td_arg = arg; + td->td_pfd = pd; + td->td_flags = flags; + td->td_paused = B_FALSE; + + if (spa_feature_is_active(spa, SPA_FEATURE_HOLE_BIRTH)) { + VERIFY(spa_feature_enabled_txg(spa, + SPA_FEATURE_HOLE_BIRTH, &td->td_hole_birth_enabled_txg)); + } else { + td->td_hole_birth_enabled_txg = 0; + } + + pd->pd_flags = flags; + mutex_init(&pd->pd_mtx, NULL, MUTEX_DEFAULT, NULL); + cv_init(&pd->pd_cv, NULL, CV_DEFAULT, NULL); + + SET_BOOKMARK(czb, td->td_objset, + ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); + + /* See comment on ZIL traversal in dsl_scan_visitds. */ + if (ds != NULL && !ds->ds_is_snapshot && !BP_IS_HOLE(rootbp)) { + uint32_t flags = ARC_FLAG_WAIT; + objset_phys_t *osp; + arc_buf_t *buf; + + err = arc_read(NULL, td->td_spa, rootbp, + arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, czb); + if (err != 0) + return (err); + + osp = buf->b_data; + traverse_zil(td, &osp->os_zil_header); + (void) arc_buf_remove_ref(buf, &buf); + } + + if (!(flags & TRAVERSE_PREFETCH_DATA) || + 0 == taskq_dispatch(system_taskq, traverse_prefetch_thread, + td, TQ_NOQUEUE)) + pd->pd_exited = B_TRUE; + + err = traverse_visitbp(td, NULL, rootbp, czb); + + mutex_enter(&pd->pd_mtx); + pd->pd_cancel = B_TRUE; + cv_broadcast(&pd->pd_cv); + while (!pd->pd_exited) + cv_wait_sig(&pd->pd_cv, &pd->pd_mtx); + mutex_exit(&pd->pd_mtx); + + mutex_destroy(&pd->pd_mtx); + cv_destroy(&pd->pd_cv); + + kmem_free(czb, sizeof (zbookmark_phys_t)); + kmem_free(pd, sizeof (struct prefetch_data)); + kmem_free(td, sizeof (struct traverse_data)); + + return (err); +} + +/* + * NB: dataset must not be changing on-disk (eg, is a snapshot or we are + * in syncing context). + */ +int +traverse_dataset(dsl_dataset_t *ds, uint64_t txg_start, int flags, + blkptr_cb_t func, void *arg) +{ + return (traverse_impl(ds->ds_dir->dd_pool->dp_spa, ds, ds->ds_object, + &dsl_dataset_phys(ds)->ds_bp, txg_start, NULL, flags, func, arg)); +} + +int +traverse_dataset_destroyed(spa_t *spa, blkptr_t *blkptr, + uint64_t txg_start, zbookmark_phys_t *resume, int flags, + blkptr_cb_t func, void *arg) +{ + return (traverse_impl(spa, NULL, ZB_DESTROYED_OBJSET, + blkptr, txg_start, resume, flags, func, arg)); +} + +/* + * NB: pool must not be changing on-disk (eg, from zdb or sync context). + */ +int +traverse_pool(spa_t *spa, uint64_t txg_start, int flags, + blkptr_cb_t func, void *arg) +{ + int err; + uint64_t obj; + dsl_pool_t *dp = spa_get_dsl(spa); + objset_t *mos = dp->dp_meta_objset; + boolean_t hard = (flags & TRAVERSE_HARD); + + /* visit the MOS */ + err = traverse_impl(spa, NULL, 0, spa_get_rootblkptr(spa), + txg_start, NULL, flags, func, arg); + if (err != 0) + return (err); + + /* visit each dataset */ + for (obj = 1; err == 0; + err = dmu_object_next(mos, &obj, FALSE, txg_start)) { + dmu_object_info_t doi; + + err = dmu_object_info(mos, obj, &doi); + if (err != 0) { + if (hard) + continue; + break; + } + + if (doi.doi_bonus_type == DMU_OT_DSL_DATASET) { + dsl_dataset_t *ds; + uint64_t txg = txg_start; + + dsl_pool_config_enter(dp, FTAG); + err = dsl_dataset_hold_obj(dp, obj, FTAG, &ds); + dsl_pool_config_exit(dp, FTAG); + if (err != 0) { + if (hard) + continue; + break; + } + if (dsl_dataset_phys(ds)->ds_prev_snap_txg > txg) + txg = dsl_dataset_phys(ds)->ds_prev_snap_txg; + err = traverse_dataset(ds, txg, flags, func, arg); + dsl_dataset_rele(ds, FTAG); + if (err != 0) + break; + } + } + if (err == ESRCH) + err = 0; + return (err); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(traverse_dataset); +EXPORT_SYMBOL(traverse_pool); + +module_param(zfs_pd_bytes_max, int, 0644); +MODULE_PARM_DESC(zfs_pd_bytes_max, "Max number of bytes to prefetch"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_tx.c +++ linux-4.4.0/zfs/module/zfs/dmu_tx.c @@ -0,0 +1,1692 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012, 2015 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include /* for dsl_dataset_block_freeable() */ +#include /* for dsl_dir_tempreserve_*() */ +#include +#include /* for fzap_default_block_shift */ +#include +#include +#include +#include +#include +#include + +typedef void (*dmu_tx_hold_func_t)(dmu_tx_t *tx, struct dnode *dn, + uint64_t arg1, uint64_t arg2); + +dmu_tx_stats_t dmu_tx_stats = { + { "dmu_tx_assigned", KSTAT_DATA_UINT64 }, + { "dmu_tx_delay", KSTAT_DATA_UINT64 }, + { "dmu_tx_error", KSTAT_DATA_UINT64 }, + { "dmu_tx_suspended", KSTAT_DATA_UINT64 }, + { "dmu_tx_group", KSTAT_DATA_UINT64 }, + { "dmu_tx_memory_reserve", KSTAT_DATA_UINT64 }, + { "dmu_tx_memory_reclaim", KSTAT_DATA_UINT64 }, + { "dmu_tx_dirty_throttle", KSTAT_DATA_UINT64 }, + { "dmu_tx_dirty_delay", KSTAT_DATA_UINT64 }, + { "dmu_tx_dirty_over_max", KSTAT_DATA_UINT64 }, + { "dmu_tx_quota", KSTAT_DATA_UINT64 }, +}; + +static kstat_t *dmu_tx_ksp; + +dmu_tx_t * +dmu_tx_create_dd(dsl_dir_t *dd) +{ + dmu_tx_t *tx = kmem_zalloc(sizeof (dmu_tx_t), KM_SLEEP); + tx->tx_dir = dd; + if (dd != NULL) + tx->tx_pool = dd->dd_pool; + list_create(&tx->tx_holds, sizeof (dmu_tx_hold_t), + offsetof(dmu_tx_hold_t, txh_node)); + list_create(&tx->tx_callbacks, sizeof (dmu_tx_callback_t), + offsetof(dmu_tx_callback_t, dcb_node)); + tx->tx_start = gethrtime(); +#ifdef DEBUG_DMU_TX + refcount_create(&tx->tx_space_written); + refcount_create(&tx->tx_space_freed); +#endif + return (tx); +} + +dmu_tx_t * +dmu_tx_create(objset_t *os) +{ + dmu_tx_t *tx = dmu_tx_create_dd(os->os_dsl_dataset->ds_dir); + tx->tx_objset = os; + tx->tx_lastsnap_txg = dsl_dataset_prev_snap_txg(os->os_dsl_dataset); + return (tx); +} + +dmu_tx_t * +dmu_tx_create_assigned(struct dsl_pool *dp, uint64_t txg) +{ + dmu_tx_t *tx = dmu_tx_create_dd(NULL); + + ASSERT3U(txg, <=, dp->dp_tx.tx_open_txg); + tx->tx_pool = dp; + tx->tx_txg = txg; + tx->tx_anyobj = TRUE; + + return (tx); +} + +int +dmu_tx_is_syncing(dmu_tx_t *tx) +{ + return (tx->tx_anyobj); +} + +int +dmu_tx_private_ok(dmu_tx_t *tx) +{ + return (tx->tx_anyobj); +} + +static dmu_tx_hold_t * +dmu_tx_hold_object_impl(dmu_tx_t *tx, objset_t *os, uint64_t object, + enum dmu_tx_hold_type type, uint64_t arg1, uint64_t arg2) +{ + dmu_tx_hold_t *txh; + dnode_t *dn = NULL; + int err; + + if (object != DMU_NEW_OBJECT) { + err = dnode_hold(os, object, tx, &dn); + if (err) { + tx->tx_err = err; + return (NULL); + } + + if (err == 0 && tx->tx_txg != 0) { + mutex_enter(&dn->dn_mtx); + /* + * dn->dn_assigned_txg == tx->tx_txg doesn't pose a + * problem, but there's no way for it to happen (for + * now, at least). + */ + ASSERT(dn->dn_assigned_txg == 0); + dn->dn_assigned_txg = tx->tx_txg; + (void) refcount_add(&dn->dn_tx_holds, tx); + mutex_exit(&dn->dn_mtx); + } + } + + txh = kmem_zalloc(sizeof (dmu_tx_hold_t), KM_SLEEP); + txh->txh_tx = tx; + txh->txh_dnode = dn; +#ifdef DEBUG_DMU_TX + txh->txh_type = type; + txh->txh_arg1 = arg1; + txh->txh_arg2 = arg2; +#endif + list_insert_tail(&tx->tx_holds, txh); + + return (txh); +} + +void +dmu_tx_add_new_object(dmu_tx_t *tx, objset_t *os, uint64_t object) +{ + /* + * If we're syncing, they can manipulate any object anyhow, and + * the hold on the dnode_t can cause problems. + */ + if (!dmu_tx_is_syncing(tx)) { + (void) dmu_tx_hold_object_impl(tx, os, + object, THT_NEWOBJECT, 0, 0); + } +} + +static int +dmu_tx_check_ioerr(zio_t *zio, dnode_t *dn, int level, uint64_t blkid) +{ + int err; + dmu_buf_impl_t *db; + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + db = dbuf_hold_level(dn, level, blkid, FTAG); + rw_exit(&dn->dn_struct_rwlock); + if (db == NULL) + return (SET_ERROR(EIO)); + err = dbuf_read(db, zio, DB_RF_CANFAIL | DB_RF_NOPREFETCH); + dbuf_rele(db, FTAG); + return (err); +} + +static void +dmu_tx_count_twig(dmu_tx_hold_t *txh, dnode_t *dn, dmu_buf_impl_t *db, + int level, uint64_t blkid, boolean_t freeable, uint64_t *history) +{ + objset_t *os = dn->dn_objset; + dsl_dataset_t *ds = os->os_dsl_dataset; + int epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + dmu_buf_impl_t *parent = NULL; + blkptr_t *bp = NULL; + uint64_t space; + + if (level >= dn->dn_nlevels || history[level] == blkid) + return; + + history[level] = blkid; + + space = (level == 0) ? dn->dn_datablksz : (1ULL << dn->dn_indblkshift); + + if (db == NULL || db == dn->dn_dbuf) { + ASSERT(level != 0); + db = NULL; + } else { + ASSERT(DB_DNODE(db) == dn); + ASSERT(db->db_level == level); + ASSERT(db->db.db_size == space); + ASSERT(db->db_blkid == blkid); + bp = db->db_blkptr; + parent = db->db_parent; + } + + freeable = (bp && (freeable || + dsl_dataset_block_freeable(ds, bp, bp->blk_birth))); + + if (freeable) + txh->txh_space_tooverwrite += space; + else + txh->txh_space_towrite += space; + if (bp) + txh->txh_space_tounref += bp_get_dsize(os->os_spa, bp); + + dmu_tx_count_twig(txh, dn, parent, level + 1, + blkid >> epbs, freeable, history); +} + +/* ARGSUSED */ +static void +dmu_tx_count_write(dmu_tx_hold_t *txh, uint64_t off, uint64_t len) +{ + dnode_t *dn = txh->txh_dnode; + uint64_t start, end, i; + int min_bs, max_bs, min_ibs, max_ibs, epbs, bits; + int err = 0; + int l; + + if (len == 0) + return; + + min_bs = SPA_MINBLOCKSHIFT; + max_bs = highbit64(txh->txh_tx->tx_objset->os_recordsize) - 1; + min_ibs = DN_MIN_INDBLKSHIFT; + max_ibs = DN_MAX_INDBLKSHIFT; + + if (dn) { + uint64_t history[DN_MAX_LEVELS]; + int nlvls = dn->dn_nlevels; + int delta; + + /* + * For i/o error checking, read the first and last level-0 + * blocks (if they are not aligned), and all the level-1 blocks. + */ + if (dn->dn_maxblkid == 0) { + delta = dn->dn_datablksz; + start = (off < dn->dn_datablksz) ? 0 : 1; + end = (off+len <= dn->dn_datablksz) ? 0 : 1; + if (start == 0 && (off > 0 || len < dn->dn_datablksz)) { + err = dmu_tx_check_ioerr(NULL, dn, 0, 0); + if (err) + goto out; + delta -= off; + } + } else { + zio_t *zio = zio_root(dn->dn_objset->os_spa, + NULL, NULL, ZIO_FLAG_CANFAIL); + + /* first level-0 block */ + start = off >> dn->dn_datablkshift; + if (P2PHASE(off, dn->dn_datablksz) || + len < dn->dn_datablksz) { + err = dmu_tx_check_ioerr(zio, dn, 0, start); + if (err) + goto out; + } + + /* last level-0 block */ + end = (off+len-1) >> dn->dn_datablkshift; + if (end != start && end <= dn->dn_maxblkid && + P2PHASE(off+len, dn->dn_datablksz)) { + err = dmu_tx_check_ioerr(zio, dn, 0, end); + if (err) + goto out; + } + + /* level-1 blocks */ + if (nlvls > 1) { + int shft = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + for (i = (start>>shft)+1; i < end>>shft; i++) { + err = dmu_tx_check_ioerr(zio, dn, 1, i); + if (err) + goto out; + } + } + + err = zio_wait(zio); + if (err) + goto out; + delta = P2NPHASE(off, dn->dn_datablksz); + } + + min_ibs = max_ibs = dn->dn_indblkshift; + if (dn->dn_maxblkid > 0) { + /* + * The blocksize can't change, + * so we can make a more precise estimate. + */ + ASSERT(dn->dn_datablkshift != 0); + min_bs = max_bs = dn->dn_datablkshift; + } else { + /* + * The blocksize can increase up to the recordsize, + * or if it is already more than the recordsize, + * up to the next power of 2. + */ + min_bs = highbit64(dn->dn_datablksz - 1); + max_bs = MAX(max_bs, highbit64(dn->dn_datablksz - 1)); + } + + /* + * If this write is not off the end of the file + * we need to account for overwrites/unref. + */ + if (start <= dn->dn_maxblkid) { + for (l = 0; l < DN_MAX_LEVELS; l++) + history[l] = -1ULL; + } + while (start <= dn->dn_maxblkid) { + dmu_buf_impl_t *db; + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + err = dbuf_hold_impl(dn, 0, start, FALSE, FTAG, &db); + rw_exit(&dn->dn_struct_rwlock); + + if (err) { + txh->txh_tx->tx_err = err; + return; + } + + dmu_tx_count_twig(txh, dn, db, 0, start, B_FALSE, + history); + dbuf_rele(db, FTAG); + if (++start > end) { + /* + * Account for new indirects appearing + * before this IO gets assigned into a txg. + */ + bits = 64 - min_bs; + epbs = min_ibs - SPA_BLKPTRSHIFT; + for (bits -= epbs * (nlvls - 1); + bits >= 0; bits -= epbs) + txh->txh_fudge += 1ULL << max_ibs; + goto out; + } + off += delta; + if (len >= delta) + len -= delta; + delta = dn->dn_datablksz; + } + } + + /* + * 'end' is the last thing we will access, not one past. + * This way we won't overflow when accessing the last byte. + */ + start = P2ALIGN(off, 1ULL << max_bs); + end = P2ROUNDUP(off + len, 1ULL << max_bs) - 1; + txh->txh_space_towrite += end - start + 1; + + start >>= min_bs; + end >>= min_bs; + + epbs = min_ibs - SPA_BLKPTRSHIFT; + + /* + * The object contains at most 2^(64 - min_bs) blocks, + * and each indirect level maps 2^epbs. + */ + for (bits = 64 - min_bs; bits >= 0; bits -= epbs) { + start >>= epbs; + end >>= epbs; + ASSERT3U(end, >=, start); + txh->txh_space_towrite += (end - start + 1) << max_ibs; + if (start != 0) { + /* + * We also need a new blkid=0 indirect block + * to reference any existing file data. + */ + txh->txh_space_towrite += 1ULL << max_ibs; + } + } + +out: + if (txh->txh_space_towrite + txh->txh_space_tooverwrite > + 2 * DMU_MAX_ACCESS) + err = SET_ERROR(EFBIG); + + if (err) + txh->txh_tx->tx_err = err; +} + +static void +dmu_tx_count_dnode(dmu_tx_hold_t *txh) +{ + dnode_t *dn = txh->txh_dnode; + dnode_t *mdn = DMU_META_DNODE(txh->txh_tx->tx_objset); + uint64_t space = mdn->dn_datablksz + + ((mdn->dn_nlevels-1) << mdn->dn_indblkshift); + + if (dn && dn->dn_dbuf->db_blkptr && + dsl_dataset_block_freeable(dn->dn_objset->os_dsl_dataset, + dn->dn_dbuf->db_blkptr, dn->dn_dbuf->db_blkptr->blk_birth)) { + txh->txh_space_tooverwrite += space; + txh->txh_space_tounref += space; + } else { + txh->txh_space_towrite += space; + if (dn && dn->dn_dbuf->db_blkptr) + txh->txh_space_tounref += space; + } +} + +void +dmu_tx_hold_write(dmu_tx_t *tx, uint64_t object, uint64_t off, int len) +{ + dmu_tx_hold_t *txh; + + ASSERT(tx->tx_txg == 0); + ASSERT(len <= DMU_MAX_ACCESS); + ASSERT(len == 0 || UINT64_MAX - off >= len - 1); + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, + object, THT_WRITE, off, len); + if (txh == NULL) + return; + + dmu_tx_count_write(txh, off, len); + dmu_tx_count_dnode(txh); +} + +static void +dmu_tx_count_free(dmu_tx_hold_t *txh, uint64_t off, uint64_t len) +{ + uint64_t blkid, nblks, lastblk; + uint64_t space = 0, unref = 0, skipped = 0; + dnode_t *dn = txh->txh_dnode; + dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; + spa_t *spa = txh->txh_tx->tx_pool->dp_spa; + int epbs; + uint64_t l0span = 0, nl1blks = 0; + + if (dn->dn_nlevels == 0) + return; + + /* + * The struct_rwlock protects us against dn_nlevels + * changing, in case (against all odds) we manage to dirty & + * sync out the changes after we check for being dirty. + * Also, dbuf_hold_impl() wants us to have the struct_rwlock. + */ + rw_enter(&dn->dn_struct_rwlock, RW_READER); + epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + if (dn->dn_maxblkid == 0) { + if (off == 0 && len >= dn->dn_datablksz) { + blkid = 0; + nblks = 1; + } else { + rw_exit(&dn->dn_struct_rwlock); + return; + } + } else { + blkid = off >> dn->dn_datablkshift; + nblks = (len + dn->dn_datablksz - 1) >> dn->dn_datablkshift; + + if (blkid > dn->dn_maxblkid) { + rw_exit(&dn->dn_struct_rwlock); + return; + } + if (blkid + nblks > dn->dn_maxblkid) + nblks = dn->dn_maxblkid - blkid + 1; + + } + l0span = nblks; /* save for later use to calc level > 1 overhead */ + if (dn->dn_nlevels == 1) { + int i; + for (i = 0; i < nblks; i++) { + blkptr_t *bp = dn->dn_phys->dn_blkptr; + ASSERT3U(blkid + i, <, dn->dn_nblkptr); + bp += blkid + i; + if (dsl_dataset_block_freeable(ds, bp, bp->blk_birth)) { + dprintf_bp(bp, "can free old%s", ""); + space += bp_get_dsize(spa, bp); + } + unref += BP_GET_ASIZE(bp); + } + nl1blks = 1; + nblks = 0; + } + + lastblk = blkid + nblks - 1; + while (nblks) { + dmu_buf_impl_t *dbuf; + uint64_t ibyte, new_blkid; + int epb = 1 << epbs; + int err, i, blkoff, tochk; + blkptr_t *bp; + + ibyte = blkid << dn->dn_datablkshift; + err = dnode_next_offset(dn, + DNODE_FIND_HAVELOCK, &ibyte, 2, 1, 0); + new_blkid = ibyte >> dn->dn_datablkshift; + if (err == ESRCH) { + skipped += (lastblk >> epbs) - (blkid >> epbs) + 1; + break; + } + if (err) { + txh->txh_tx->tx_err = err; + break; + } + if (new_blkid > lastblk) { + skipped += (lastblk >> epbs) - (blkid >> epbs) + 1; + break; + } + + if (new_blkid > blkid) { + ASSERT((new_blkid >> epbs) > (blkid >> epbs)); + skipped += (new_blkid >> epbs) - (blkid >> epbs) - 1; + nblks -= new_blkid - blkid; + blkid = new_blkid; + } + blkoff = P2PHASE(blkid, epb); + tochk = MIN(epb - blkoff, nblks); + + err = dbuf_hold_impl(dn, 1, blkid >> epbs, FALSE, FTAG, &dbuf); + if (err) { + txh->txh_tx->tx_err = err; + break; + } + + txh->txh_memory_tohold += dbuf->db.db_size; + + /* + * We don't check memory_tohold against DMU_MAX_ACCESS because + * memory_tohold is an over-estimation (especially the >L1 + * indirect blocks), so it could fail. Callers should have + * already verified that they will not be holding too much + * memory. + */ + + err = dbuf_read(dbuf, NULL, DB_RF_HAVESTRUCT | DB_RF_CANFAIL); + if (err != 0) { + txh->txh_tx->tx_err = err; + dbuf_rele(dbuf, FTAG); + break; + } + + bp = dbuf->db.db_data; + bp += blkoff; + + for (i = 0; i < tochk; i++) { + if (dsl_dataset_block_freeable(ds, &bp[i], + bp[i].blk_birth)) { + dprintf_bp(&bp[i], "can free old%s", ""); + space += bp_get_dsize(spa, &bp[i]); + } + unref += BP_GET_ASIZE(bp); + } + dbuf_rele(dbuf, FTAG); + + ++nl1blks; + blkid += tochk; + nblks -= tochk; + } + rw_exit(&dn->dn_struct_rwlock); + + /* + * Add in memory requirements of higher-level indirects. + * This assumes a worst-possible scenario for dn_nlevels and a + * worst-possible distribution of l1-blocks over the region to free. + */ + { + uint64_t blkcnt = 1 + ((l0span >> epbs) >> epbs); + int level = 2; + /* + * Here we don't use DN_MAX_LEVEL, but calculate it with the + * given datablkshift and indblkshift. This makes the + * difference between 19 and 8 on large files. + */ + int maxlevel = 2 + (DN_MAX_OFFSET_SHIFT - dn->dn_datablkshift) / + (dn->dn_indblkshift - SPA_BLKPTRSHIFT); + + while (level++ < maxlevel) { + txh->txh_memory_tohold += MAX(MIN(blkcnt, nl1blks), 1) + << dn->dn_indblkshift; + blkcnt = 1 + (blkcnt >> epbs); + } + } + + /* account for new level 1 indirect blocks that might show up */ + if (skipped > 0) { + txh->txh_fudge += skipped << dn->dn_indblkshift; + skipped = MIN(skipped, DMU_MAX_DELETEBLKCNT >> epbs); + txh->txh_memory_tohold += skipped << dn->dn_indblkshift; + } + txh->txh_space_tofree += space; + txh->txh_space_tounref += unref; +} + +void +dmu_tx_hold_free(dmu_tx_t *tx, uint64_t object, uint64_t off, uint64_t len) +{ + dmu_tx_hold_t *txh; + dnode_t *dn; + int err; + zio_t *zio; + + ASSERT(tx->tx_txg == 0); + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, + object, THT_FREE, off, len); + if (txh == NULL) + return; + dn = txh->txh_dnode; + dmu_tx_count_dnode(txh); + + if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) + return; + if (len == DMU_OBJECT_END) + len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; + + dmu_tx_count_dnode(txh); + + /* + * For i/o error checking, we read the first and last level-0 + * blocks if they are not aligned, and all the level-1 blocks. + * + * Note: dbuf_free_range() assumes that we have not instantiated + * any level-0 dbufs that will be completely freed. Therefore we must + * exercise care to not read or count the first and last blocks + * if they are blocksize-aligned. + */ + if (dn->dn_datablkshift == 0) { + if (off != 0 || len < dn->dn_datablksz) + dmu_tx_count_write(txh, 0, dn->dn_datablksz); + } else { + /* first block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off, 1); + /* last block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off + len, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off+len, 1); + } + + /* + * Check level-1 blocks. + */ + if (dn->dn_nlevels > 1) { + int shift = dn->dn_datablkshift + dn->dn_indblkshift - + SPA_BLKPTRSHIFT; + uint64_t start = off >> shift; + uint64_t end = (off + len) >> shift; + uint64_t i; + + ASSERT(dn->dn_indblkshift != 0); + + /* + * dnode_reallocate() can result in an object with indirect + * blocks having an odd data block size. In this case, + * just check the single block. + */ + if (dn->dn_datablkshift == 0) + start = end = 0; + + zio = zio_root(tx->tx_pool->dp_spa, + NULL, NULL, ZIO_FLAG_CANFAIL); + for (i = start; i <= end; i++) { + uint64_t ibyte = i << shift; + err = dnode_next_offset(dn, 0, &ibyte, 2, 1, 0); + i = ibyte >> shift; + if (err == ESRCH || i > end) + break; + if (err) { + tx->tx_err = err; + return; + } + + err = dmu_tx_check_ioerr(zio, dn, 1, i); + if (err) { + tx->tx_err = err; + return; + } + } + err = zio_wait(zio); + if (err) { + tx->tx_err = err; + return; + } + } + + dmu_tx_count_free(txh, off, len); +} + +void +dmu_tx_hold_zap(dmu_tx_t *tx, uint64_t object, int add, const char *name) +{ + dmu_tx_hold_t *txh; + dnode_t *dn; + dsl_dataset_phys_t *ds_phys; + uint64_t nblocks; + int epbs, err; + + ASSERT(tx->tx_txg == 0); + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, + object, THT_ZAP, add, (uintptr_t)name); + if (txh == NULL) + return; + dn = txh->txh_dnode; + + dmu_tx_count_dnode(txh); + + if (dn == NULL) { + /* + * We will be able to fit a new object's entries into one leaf + * block. So there will be at most 2 blocks total, + * including the header block. + */ + dmu_tx_count_write(txh, 0, 2 << fzap_default_block_shift); + return; + } + + ASSERT3U(DMU_OT_BYTESWAP(dn->dn_type), ==, DMU_BSWAP_ZAP); + + if (dn->dn_maxblkid == 0 && !add) { + blkptr_t *bp; + + /* + * If there is only one block (i.e. this is a micro-zap) + * and we are not adding anything, the accounting is simple. + */ + err = dmu_tx_check_ioerr(NULL, dn, 0, 0); + if (err) { + tx->tx_err = err; + return; + } + + /* + * Use max block size here, since we don't know how much + * the size will change between now and the dbuf dirty call. + */ + bp = &dn->dn_phys->dn_blkptr[0]; + if (dsl_dataset_block_freeable(dn->dn_objset->os_dsl_dataset, + bp, bp->blk_birth)) + txh->txh_space_tooverwrite += MZAP_MAX_BLKSZ; + else + txh->txh_space_towrite += MZAP_MAX_BLKSZ; + if (!BP_IS_HOLE(bp)) + txh->txh_space_tounref += MZAP_MAX_BLKSZ; + return; + } + + if (dn->dn_maxblkid > 0 && name) { + /* + * access the name in this fat-zap so that we'll check + * for i/o errors to the leaf blocks, etc. + */ + err = zap_lookup(dn->dn_objset, dn->dn_object, name, + 8, 0, NULL); + if (err == EIO) { + tx->tx_err = err; + return; + } + } + + err = zap_count_write(dn->dn_objset, dn->dn_object, name, add, + &txh->txh_space_towrite, &txh->txh_space_tooverwrite); + + /* + * If the modified blocks are scattered to the four winds, + * we'll have to modify an indirect twig for each. + */ + epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + ds_phys = dsl_dataset_phys(dn->dn_objset->os_dsl_dataset); + for (nblocks = dn->dn_maxblkid >> epbs; nblocks != 0; nblocks >>= epbs) + if (ds_phys->ds_prev_snap_obj) + txh->txh_space_towrite += 3 << dn->dn_indblkshift; + else + txh->txh_space_tooverwrite += 3 << dn->dn_indblkshift; +} + +void +dmu_tx_hold_bonus(dmu_tx_t *tx, uint64_t object) +{ + dmu_tx_hold_t *txh; + + ASSERT(tx->tx_txg == 0); + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, + object, THT_BONUS, 0, 0); + if (txh) + dmu_tx_count_dnode(txh); +} + +void +dmu_tx_hold_space(dmu_tx_t *tx, uint64_t space) +{ + dmu_tx_hold_t *txh; + + ASSERT(tx->tx_txg == 0); + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, + DMU_NEW_OBJECT, THT_SPACE, space, 0); + if (txh) + txh->txh_space_towrite += space; +} + +int +dmu_tx_holds(dmu_tx_t *tx, uint64_t object) +{ + dmu_tx_hold_t *txh; + int holds = 0; + + /* + * By asserting that the tx is assigned, we're counting the + * number of dn_tx_holds, which is the same as the number of + * dn_holds. Otherwise, we'd be counting dn_holds, but + * dn_tx_holds could be 0. + */ + ASSERT(tx->tx_txg != 0); + + /* if (tx->tx_anyobj == TRUE) */ + /* return (0); */ + + for (txh = list_head(&tx->tx_holds); txh; + txh = list_next(&tx->tx_holds, txh)) { + if (txh->txh_dnode && txh->txh_dnode->dn_object == object) + holds++; + } + + return (holds); +} + +#ifdef DEBUG_DMU_TX +void +dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_impl_t *db) +{ + dmu_tx_hold_t *txh; + int match_object = FALSE, match_offset = FALSE; + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + ASSERT(dn != NULL); + ASSERT(tx->tx_txg != 0); + ASSERT(tx->tx_objset == NULL || dn->dn_objset == tx->tx_objset); + ASSERT3U(dn->dn_object, ==, db->db.db_object); + + if (tx->tx_anyobj) { + DB_DNODE_EXIT(db); + return; + } + + /* XXX No checking on the meta dnode for now */ + if (db->db.db_object == DMU_META_DNODE_OBJECT) { + DB_DNODE_EXIT(db); + return; + } + + for (txh = list_head(&tx->tx_holds); txh; + txh = list_next(&tx->tx_holds, txh)) { + ASSERT3U(dn->dn_assigned_txg, ==, tx->tx_txg); + if (txh->txh_dnode == dn && txh->txh_type != THT_NEWOBJECT) + match_object = TRUE; + if (txh->txh_dnode == NULL || txh->txh_dnode == dn) { + int datablkshift = dn->dn_datablkshift ? + dn->dn_datablkshift : SPA_MAXBLOCKSHIFT; + int epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + int shift = datablkshift + epbs * db->db_level; + uint64_t beginblk = shift >= 64 ? 0 : + (txh->txh_arg1 >> shift); + uint64_t endblk = shift >= 64 ? 0 : + ((txh->txh_arg1 + txh->txh_arg2 - 1) >> shift); + uint64_t blkid = db->db_blkid; + + /* XXX txh_arg2 better not be zero... */ + + dprintf("found txh type %x beginblk=%llx endblk=%llx\n", + txh->txh_type, beginblk, endblk); + + switch (txh->txh_type) { + case THT_WRITE: + if (blkid >= beginblk && blkid <= endblk) + match_offset = TRUE; + /* + * We will let this hold work for the bonus + * or spill buffer so that we don't need to + * hold it when creating a new object. + */ + if (blkid == DMU_BONUS_BLKID || + blkid == DMU_SPILL_BLKID) + match_offset = TRUE; + /* + * They might have to increase nlevels, + * thus dirtying the new TLIBs. Or the + * might have to change the block size, + * thus dirying the new lvl=0 blk=0. + */ + if (blkid == 0) + match_offset = TRUE; + break; + case THT_FREE: + /* + * We will dirty all the level 1 blocks in + * the free range and perhaps the first and + * last level 0 block. + */ + if (blkid >= beginblk && (blkid <= endblk || + txh->txh_arg2 == DMU_OBJECT_END)) + match_offset = TRUE; + break; + case THT_SPILL: + if (blkid == DMU_SPILL_BLKID) + match_offset = TRUE; + break; + case THT_BONUS: + if (blkid == DMU_BONUS_BLKID) + match_offset = TRUE; + break; + case THT_ZAP: + match_offset = TRUE; + break; + case THT_NEWOBJECT: + match_object = TRUE; + break; + default: + cmn_err(CE_PANIC, "bad txh_type %d", + txh->txh_type); + } + } + if (match_object && match_offset) { + DB_DNODE_EXIT(db); + return; + } + } + DB_DNODE_EXIT(db); + panic("dirtying dbuf obj=%llx lvl=%u blkid=%llx but not tx_held\n", + (u_longlong_t)db->db.db_object, db->db_level, + (u_longlong_t)db->db_blkid); +} +#endif + +/* + * If we can't do 10 iops, something is wrong. Let us go ahead + * and hit zfs_dirty_data_max. + */ +hrtime_t zfs_delay_max_ns = 100 * MICROSEC; /* 100 milliseconds */ +int zfs_delay_resolution_ns = 100 * 1000; /* 100 microseconds */ + +/* + * We delay transactions when we've determined that the backend storage + * isn't able to accommodate the rate of incoming writes. + * + * If there is already a transaction waiting, we delay relative to when + * that transaction finishes waiting. This way the calculated min_time + * is independent of the number of threads concurrently executing + * transactions. + * + * If we are the only waiter, wait relative to when the transaction + * started, rather than the current time. This credits the transaction for + * "time already served", e.g. reading indirect blocks. + * + * The minimum time for a transaction to take is calculated as: + * min_time = scale * (dirty - min) / (max - dirty) + * min_time is then capped at zfs_delay_max_ns. + * + * The delay has two degrees of freedom that can be adjusted via tunables. + * The percentage of dirty data at which we start to delay is defined by + * zfs_delay_min_dirty_percent. This should typically be at or above + * zfs_vdev_async_write_active_max_dirty_percent so that we only start to + * delay after writing at full speed has failed to keep up with the incoming + * write rate. The scale of the curve is defined by zfs_delay_scale. Roughly + * speaking, this variable determines the amount of delay at the midpoint of + * the curve. + * + * delay + * 10ms +-------------------------------------------------------------*+ + * | *| + * 9ms + *+ + * | *| + * 8ms + *+ + * | * | + * 7ms + * + + * | * | + * 6ms + * + + * | * | + * 5ms + * + + * | * | + * 4ms + * + + * | * | + * 3ms + * + + * | * | + * 2ms + (midpoint) * + + * | | ** | + * 1ms + v *** + + * | zfs_delay_scale ----------> ******** | + * 0 +-------------------------------------*********----------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note that since the delay is added to the outstanding time remaining on the + * most recent transaction, the delay is effectively the inverse of IOPS. + * Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve + * was chosen such that small changes in the amount of accumulated dirty data + * in the first 3/4 of the curve yield relatively small differences in the + * amount of delay. + * + * The effects can be easier to understand when the amount of delay is + * represented on a log scale: + * + * delay + * 100ms +-------------------------------------------------------------++ + * + + + * | | + * + *+ + * 10ms + *+ + * + ** + + * | (midpoint) ** | + * + | ** + + * 1ms + v **** + + * + zfs_delay_scale ----------> ***** + + * | **** | + * + **** + + * 100us + ** + + * + * + + * | * | + * + * + + * 10us + * + + * + + + * | | + * + + + * +--------------------------------------------------------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note here that only as the amount of dirty data approaches its limit does + * the delay start to increase rapidly. The goal of a properly tuned system + * should be to keep the amount of dirty data out of that range by first + * ensuring that the appropriate limits are set for the I/O scheduler to reach + * optimal throughput on the backend storage, and then by changing the value + * of zfs_delay_scale to increase the steepness of the curve. + */ +static void +dmu_tx_delay(dmu_tx_t *tx, uint64_t dirty) +{ + dsl_pool_t *dp = tx->tx_pool; + uint64_t delay_min_bytes = + zfs_dirty_data_max * zfs_delay_min_dirty_percent / 100; + hrtime_t wakeup, min_tx_time, now; + + if (dirty <= delay_min_bytes) + return; + + /* + * The caller has already waited until we are under the max. + * We make them pass us the amount of dirty data so we don't + * have to handle the case of it being >= the max, which could + * cause a divide-by-zero if it's == the max. + */ + ASSERT3U(dirty, <, zfs_dirty_data_max); + + now = gethrtime(); + min_tx_time = zfs_delay_scale * + (dirty - delay_min_bytes) / (zfs_dirty_data_max - dirty); + min_tx_time = MIN(min_tx_time, zfs_delay_max_ns); + if (now > tx->tx_start + min_tx_time) + return; + + DTRACE_PROBE3(delay__mintime, dmu_tx_t *, tx, uint64_t, dirty, + uint64_t, min_tx_time); + + mutex_enter(&dp->dp_lock); + wakeup = MAX(tx->tx_start + min_tx_time, + dp->dp_last_wakeup + min_tx_time); + dp->dp_last_wakeup = wakeup; + mutex_exit(&dp->dp_lock); + + zfs_sleep_until(wakeup); +} + +static int +dmu_tx_try_assign(dmu_tx_t *tx, txg_how_t txg_how) +{ + dmu_tx_hold_t *txh; + spa_t *spa = tx->tx_pool->dp_spa; + uint64_t memory, asize, fsize, usize; + uint64_t towrite, tofree, tooverwrite, tounref, tohold, fudge; + + ASSERT0(tx->tx_txg); + + if (tx->tx_err) { + DMU_TX_STAT_BUMP(dmu_tx_error); + return (tx->tx_err); + } + + if (spa_suspended(spa)) { + DMU_TX_STAT_BUMP(dmu_tx_suspended); + + /* + * If the user has indicated a blocking failure mode + * then return ERESTART which will block in dmu_tx_wait(). + * Otherwise, return EIO so that an error can get + * propagated back to the VOP calls. + * + * Note that we always honor the txg_how flag regardless + * of the failuremode setting. + */ + if (spa_get_failmode(spa) == ZIO_FAILURE_MODE_CONTINUE && + txg_how != TXG_WAIT) + return (SET_ERROR(EIO)); + + return (SET_ERROR(ERESTART)); + } + + if (!tx->tx_waited && + dsl_pool_need_dirty_delay(tx->tx_pool)) { + tx->tx_wait_dirty = B_TRUE; + DMU_TX_STAT_BUMP(dmu_tx_dirty_delay); + return (ERESTART); + } + + tx->tx_txg = txg_hold_open(tx->tx_pool, &tx->tx_txgh); + tx->tx_needassign_txh = NULL; + + /* + * NB: No error returns are allowed after txg_hold_open, but + * before processing the dnode holds, due to the + * dmu_tx_unassign() logic. + */ + + towrite = tofree = tooverwrite = tounref = tohold = fudge = 0; + for (txh = list_head(&tx->tx_holds); txh; + txh = list_next(&tx->tx_holds, txh)) { + dnode_t *dn = txh->txh_dnode; + if (dn != NULL) { + mutex_enter(&dn->dn_mtx); + if (dn->dn_assigned_txg == tx->tx_txg - 1) { + mutex_exit(&dn->dn_mtx); + tx->tx_needassign_txh = txh; + DMU_TX_STAT_BUMP(dmu_tx_group); + return (SET_ERROR(ERESTART)); + } + if (dn->dn_assigned_txg == 0) + dn->dn_assigned_txg = tx->tx_txg; + ASSERT3U(dn->dn_assigned_txg, ==, tx->tx_txg); + (void) refcount_add(&dn->dn_tx_holds, tx); + mutex_exit(&dn->dn_mtx); + } + towrite += txh->txh_space_towrite; + tofree += txh->txh_space_tofree; + tooverwrite += txh->txh_space_tooverwrite; + tounref += txh->txh_space_tounref; + tohold += txh->txh_memory_tohold; + fudge += txh->txh_fudge; + } + + /* + * If a snapshot has been taken since we made our estimates, + * assume that we won't be able to free or overwrite anything. + */ + if (tx->tx_objset && + dsl_dataset_prev_snap_txg(tx->tx_objset->os_dsl_dataset) > + tx->tx_lastsnap_txg) { + towrite += tooverwrite; + tooverwrite = tofree = 0; + } + + /* needed allocation: worst-case estimate of write space */ + asize = spa_get_asize(tx->tx_pool->dp_spa, towrite + tooverwrite); + /* freed space estimate: worst-case overwrite + free estimate */ + fsize = spa_get_asize(tx->tx_pool->dp_spa, tooverwrite) + tofree; + /* convert unrefd space to worst-case estimate */ + usize = spa_get_asize(tx->tx_pool->dp_spa, tounref); + /* calculate memory footprint estimate */ + memory = towrite + tooverwrite + tohold; + +#ifdef DEBUG_DMU_TX + /* + * Add in 'tohold' to account for our dirty holds on this memory + * XXX - the "fudge" factor is to account for skipped blocks that + * we missed because dnode_next_offset() misses in-core-only blocks. + */ + tx->tx_space_towrite = asize + + spa_get_asize(tx->tx_pool->dp_spa, tohold + fudge); + tx->tx_space_tofree = tofree; + tx->tx_space_tooverwrite = tooverwrite; + tx->tx_space_tounref = tounref; +#endif + + if (tx->tx_dir && asize != 0) { + int err = dsl_dir_tempreserve_space(tx->tx_dir, memory, + asize, fsize, usize, &tx->tx_tempreserve_cookie, tx); + if (err) + return (err); + } + + DMU_TX_STAT_BUMP(dmu_tx_assigned); + + return (0); +} + +static void +dmu_tx_unassign(dmu_tx_t *tx) +{ + dmu_tx_hold_t *txh; + + if (tx->tx_txg == 0) + return; + + txg_rele_to_quiesce(&tx->tx_txgh); + + /* + * Walk the transaction's hold list, removing the hold on the + * associated dnode, and notifying waiters if the refcount drops to 0. + */ + for (txh = list_head(&tx->tx_holds); txh != tx->tx_needassign_txh; + txh = list_next(&tx->tx_holds, txh)) { + dnode_t *dn = txh->txh_dnode; + + if (dn == NULL) + continue; + mutex_enter(&dn->dn_mtx); + ASSERT3U(dn->dn_assigned_txg, ==, tx->tx_txg); + + if (refcount_remove(&dn->dn_tx_holds, tx) == 0) { + dn->dn_assigned_txg = 0; + cv_broadcast(&dn->dn_notxholds); + } + mutex_exit(&dn->dn_mtx); + } + + txg_rele_to_sync(&tx->tx_txgh); + + tx->tx_lasttried_txg = tx->tx_txg; + tx->tx_txg = 0; +} + +/* + * Assign tx to a transaction group. txg_how can be one of: + * + * (1) TXG_WAIT. If the current open txg is full, waits until there's + * a new one. This should be used when you're not holding locks. + * It will only fail if we're truly out of space (or over quota). + * + * (2) TXG_NOWAIT. If we can't assign into the current open txg without + * blocking, returns immediately with ERESTART. This should be used + * whenever you're holding locks. On an ERESTART error, the caller + * should drop locks, do a dmu_tx_wait(tx), and try again. + * + * (3) TXG_WAITED. Like TXG_NOWAIT, but indicates that dmu_tx_wait() + * has already been called on behalf of this operation (though + * most likely on a different tx). + */ +int +dmu_tx_assign(dmu_tx_t *tx, txg_how_t txg_how) +{ + int err; + + ASSERT(tx->tx_txg == 0); + ASSERT(txg_how == TXG_WAIT || txg_how == TXG_NOWAIT || + txg_how == TXG_WAITED); + ASSERT(!dsl_pool_sync_context(tx->tx_pool)); + + if (txg_how == TXG_WAITED) + tx->tx_waited = B_TRUE; + + /* If we might wait, we must not hold the config lock. */ + ASSERT(txg_how != TXG_WAIT || !dsl_pool_config_held(tx->tx_pool)); + + while ((err = dmu_tx_try_assign(tx, txg_how)) != 0) { + dmu_tx_unassign(tx); + + if (err != ERESTART || txg_how != TXG_WAIT) + return (err); + + dmu_tx_wait(tx); + } + + txg_rele_to_quiesce(&tx->tx_txgh); + + return (0); +} + +void +dmu_tx_wait(dmu_tx_t *tx) +{ + spa_t *spa = tx->tx_pool->dp_spa; + dsl_pool_t *dp = tx->tx_pool; + hrtime_t before; + + ASSERT(tx->tx_txg == 0); + ASSERT(!dsl_pool_config_held(tx->tx_pool)); + + before = gethrtime(); + + if (tx->tx_wait_dirty) { + uint64_t dirty; + + /* + * dmu_tx_try_assign() has determined that we need to wait + * because we've consumed much or all of the dirty buffer + * space. + */ + mutex_enter(&dp->dp_lock); + if (dp->dp_dirty_total >= zfs_dirty_data_max) + DMU_TX_STAT_BUMP(dmu_tx_dirty_over_max); + while (dp->dp_dirty_total >= zfs_dirty_data_max) + cv_wait(&dp->dp_spaceavail_cv, &dp->dp_lock); + dirty = dp->dp_dirty_total; + mutex_exit(&dp->dp_lock); + + dmu_tx_delay(tx, dirty); + + tx->tx_wait_dirty = B_FALSE; + + /* + * Note: setting tx_waited only has effect if the caller + * used TX_WAIT. Otherwise they are going to destroy + * this tx and try again. The common case, zfs_write(), + * uses TX_WAIT. + */ + tx->tx_waited = B_TRUE; + } else if (spa_suspended(spa) || tx->tx_lasttried_txg == 0) { + /* + * If the pool is suspended we need to wait until it + * is resumed. Note that it's possible that the pool + * has become active after this thread has tried to + * obtain a tx. If that's the case then tx_lasttried_txg + * would not have been set. + */ + txg_wait_synced(dp, spa_last_synced_txg(spa) + 1); + } else if (tx->tx_needassign_txh) { + dnode_t *dn = tx->tx_needassign_txh->txh_dnode; + + mutex_enter(&dn->dn_mtx); + while (dn->dn_assigned_txg == tx->tx_lasttried_txg - 1) + cv_wait(&dn->dn_notxholds, &dn->dn_mtx); + mutex_exit(&dn->dn_mtx); + tx->tx_needassign_txh = NULL; + } else { + /* + * A dnode is assigned to the quiescing txg. Wait for its + * transaction to complete. + */ + txg_wait_open(tx->tx_pool, tx->tx_lasttried_txg + 1); + } + + spa_tx_assign_add_nsecs(spa, gethrtime() - before); +} + +void +dmu_tx_willuse_space(dmu_tx_t *tx, int64_t delta) +{ +#ifdef DEBUG_DMU_TX + if (tx->tx_dir == NULL || delta == 0) + return; + + if (delta > 0) { + ASSERT3U(refcount_count(&tx->tx_space_written) + delta, <=, + tx->tx_space_towrite); + (void) refcount_add_many(&tx->tx_space_written, delta, NULL); + } else { + (void) refcount_add_many(&tx->tx_space_freed, -delta, NULL); + } +#endif +} + +void +dmu_tx_commit(dmu_tx_t *tx) +{ + dmu_tx_hold_t *txh; + + ASSERT(tx->tx_txg != 0); + + /* + * Go through the transaction's hold list and remove holds on + * associated dnodes, notifying waiters if no holds remain. + */ + while ((txh = list_head(&tx->tx_holds))) { + dnode_t *dn = txh->txh_dnode; + + list_remove(&tx->tx_holds, txh); + kmem_free(txh, sizeof (dmu_tx_hold_t)); + if (dn == NULL) + continue; + mutex_enter(&dn->dn_mtx); + ASSERT3U(dn->dn_assigned_txg, ==, tx->tx_txg); + + if (refcount_remove(&dn->dn_tx_holds, tx) == 0) { + dn->dn_assigned_txg = 0; + cv_broadcast(&dn->dn_notxholds); + } + mutex_exit(&dn->dn_mtx); + dnode_rele(dn, tx); + } + + if (tx->tx_tempreserve_cookie) + dsl_dir_tempreserve_clear(tx->tx_tempreserve_cookie, tx); + + if (!list_is_empty(&tx->tx_callbacks)) + txg_register_callbacks(&tx->tx_txgh, &tx->tx_callbacks); + + if (tx->tx_anyobj == FALSE) + txg_rele_to_sync(&tx->tx_txgh); + + list_destroy(&tx->tx_callbacks); + list_destroy(&tx->tx_holds); +#ifdef DEBUG_DMU_TX + dprintf("towrite=%llu written=%llu tofree=%llu freed=%llu\n", + tx->tx_space_towrite, refcount_count(&tx->tx_space_written), + tx->tx_space_tofree, refcount_count(&tx->tx_space_freed)); + refcount_destroy_many(&tx->tx_space_written, + refcount_count(&tx->tx_space_written)); + refcount_destroy_many(&tx->tx_space_freed, + refcount_count(&tx->tx_space_freed)); +#endif + kmem_free(tx, sizeof (dmu_tx_t)); +} + +void +dmu_tx_abort(dmu_tx_t *tx) +{ + dmu_tx_hold_t *txh; + + ASSERT(tx->tx_txg == 0); + + while ((txh = list_head(&tx->tx_holds))) { + dnode_t *dn = txh->txh_dnode; + + list_remove(&tx->tx_holds, txh); + kmem_free(txh, sizeof (dmu_tx_hold_t)); + if (dn != NULL) + dnode_rele(dn, tx); + } + + /* + * Call any registered callbacks with an error code. + */ + if (!list_is_empty(&tx->tx_callbacks)) + dmu_tx_do_callbacks(&tx->tx_callbacks, ECANCELED); + + list_destroy(&tx->tx_callbacks); + list_destroy(&tx->tx_holds); +#ifdef DEBUG_DMU_TX + refcount_destroy_many(&tx->tx_space_written, + refcount_count(&tx->tx_space_written)); + refcount_destroy_many(&tx->tx_space_freed, + refcount_count(&tx->tx_space_freed)); +#endif + kmem_free(tx, sizeof (dmu_tx_t)); +} + +uint64_t +dmu_tx_get_txg(dmu_tx_t *tx) +{ + ASSERT(tx->tx_txg != 0); + return (tx->tx_txg); +} + +dsl_pool_t * +dmu_tx_pool(dmu_tx_t *tx) +{ + ASSERT(tx->tx_pool != NULL); + return (tx->tx_pool); +} + +void +dmu_tx_callback_register(dmu_tx_t *tx, dmu_tx_callback_func_t *func, void *data) +{ + dmu_tx_callback_t *dcb; + + dcb = kmem_alloc(sizeof (dmu_tx_callback_t), KM_SLEEP); + + dcb->dcb_func = func; + dcb->dcb_data = data; + + list_insert_tail(&tx->tx_callbacks, dcb); +} + +/* + * Call all the commit callbacks on a list, with a given error code. + */ +void +dmu_tx_do_callbacks(list_t *cb_list, int error) +{ + dmu_tx_callback_t *dcb; + + while ((dcb = list_head(cb_list))) { + list_remove(cb_list, dcb); + dcb->dcb_func(dcb->dcb_data, error); + kmem_free(dcb, sizeof (dmu_tx_callback_t)); + } +} + +/* + * Interface to hold a bunch of attributes. + * used for creating new files. + * attrsize is the total size of all attributes + * to be added during object creation + * + * For updating/adding a single attribute dmu_tx_hold_sa() should be used. + */ + +/* + * hold necessary attribute name for attribute registration. + * should be a very rare case where this is needed. If it does + * happen it would only happen on the first write to the file system. + */ +static void +dmu_tx_sa_registration_hold(sa_os_t *sa, dmu_tx_t *tx) +{ + int i; + + if (!sa->sa_need_attr_registration) + return; + + for (i = 0; i != sa->sa_num_attrs; i++) { + if (!sa->sa_attr_table[i].sa_registered) { + if (sa->sa_reg_attr_obj) + dmu_tx_hold_zap(tx, sa->sa_reg_attr_obj, + B_TRUE, sa->sa_attr_table[i].sa_name); + else + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, + B_TRUE, sa->sa_attr_table[i].sa_name); + } + } +} + + +void +dmu_tx_hold_spill(dmu_tx_t *tx, uint64_t object) +{ + dnode_t *dn; + dmu_tx_hold_t *txh; + + txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, object, + THT_SPILL, 0, 0); + if (txh == NULL) + return; + + dn = txh->txh_dnode; + + if (dn == NULL) + return; + + /* If blkptr doesn't exist then add space to towrite */ + if (!(dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR)) { + txh->txh_space_towrite += SPA_OLD_MAXBLOCKSIZE; + } else { + blkptr_t *bp; + + bp = &dn->dn_phys->dn_spill; + if (dsl_dataset_block_freeable(dn->dn_objset->os_dsl_dataset, + bp, bp->blk_birth)) + txh->txh_space_tooverwrite += SPA_OLD_MAXBLOCKSIZE; + else + txh->txh_space_towrite += SPA_OLD_MAXBLOCKSIZE; + if (!BP_IS_HOLE(bp)) + txh->txh_space_tounref += SPA_OLD_MAXBLOCKSIZE; + } +} + +void +dmu_tx_hold_sa_create(dmu_tx_t *tx, int attrsize) +{ + sa_os_t *sa = tx->tx_objset->os_sa; + + dmu_tx_hold_bonus(tx, DMU_NEW_OBJECT); + + if (tx->tx_objset->os_sa->sa_master_obj == 0) + return; + + if (tx->tx_objset->os_sa->sa_layout_attr_obj) + dmu_tx_hold_zap(tx, sa->sa_layout_attr_obj, B_TRUE, NULL); + else { + dmu_tx_hold_zap(tx, sa->sa_master_obj, B_TRUE, SA_LAYOUTS); + dmu_tx_hold_zap(tx, sa->sa_master_obj, B_TRUE, SA_REGISTRY); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, B_TRUE, NULL); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, B_TRUE, NULL); + } + + dmu_tx_sa_registration_hold(sa, tx); + + if (attrsize <= DN_MAX_BONUSLEN && !sa->sa_force_spill) + return; + + (void) dmu_tx_hold_object_impl(tx, tx->tx_objset, DMU_NEW_OBJECT, + THT_SPILL, 0, 0); +} + +/* + * Hold SA attribute + * + * dmu_tx_hold_sa(dmu_tx_t *tx, sa_handle_t *, attribute, add, size) + * + * variable_size is the total size of all variable sized attributes + * passed to this function. It is not the total size of all + * variable size attributes that *may* exist on this object. + */ +void +dmu_tx_hold_sa(dmu_tx_t *tx, sa_handle_t *hdl, boolean_t may_grow) +{ + uint64_t object; + sa_os_t *sa = tx->tx_objset->os_sa; + + ASSERT(hdl != NULL); + + object = sa_handle_object(hdl); + + dmu_tx_hold_bonus(tx, object); + + if (tx->tx_objset->os_sa->sa_master_obj == 0) + return; + + if (tx->tx_objset->os_sa->sa_reg_attr_obj == 0 || + tx->tx_objset->os_sa->sa_layout_attr_obj == 0) { + dmu_tx_hold_zap(tx, sa->sa_master_obj, B_TRUE, SA_LAYOUTS); + dmu_tx_hold_zap(tx, sa->sa_master_obj, B_TRUE, SA_REGISTRY); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, B_TRUE, NULL); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, B_TRUE, NULL); + } + + dmu_tx_sa_registration_hold(sa, tx); + + if (may_grow && tx->tx_objset->os_sa->sa_layout_attr_obj) + dmu_tx_hold_zap(tx, sa->sa_layout_attr_obj, B_TRUE, NULL); + + if (sa->sa_force_spill || may_grow || hdl->sa_spill) { + ASSERT(tx->tx_txg == 0); + dmu_tx_hold_spill(tx, object); + } else { + dmu_buf_impl_t *db = (dmu_buf_impl_t *)hdl->sa_bonus; + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + if (dn->dn_have_spill) { + ASSERT(tx->tx_txg == 0); + dmu_tx_hold_spill(tx, object); + } + DB_DNODE_EXIT(db); + } +} + +void +dmu_tx_init(void) +{ + dmu_tx_ksp = kstat_create("zfs", 0, "dmu_tx", "misc", + KSTAT_TYPE_NAMED, sizeof (dmu_tx_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + + if (dmu_tx_ksp != NULL) { + dmu_tx_ksp->ks_data = &dmu_tx_stats; + kstat_install(dmu_tx_ksp); + } +} + +void +dmu_tx_fini(void) +{ + if (dmu_tx_ksp != NULL) { + kstat_delete(dmu_tx_ksp); + dmu_tx_ksp = NULL; + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dmu_tx_create); +EXPORT_SYMBOL(dmu_tx_hold_write); +EXPORT_SYMBOL(dmu_tx_hold_free); +EXPORT_SYMBOL(dmu_tx_hold_zap); +EXPORT_SYMBOL(dmu_tx_hold_bonus); +EXPORT_SYMBOL(dmu_tx_abort); +EXPORT_SYMBOL(dmu_tx_assign); +EXPORT_SYMBOL(dmu_tx_wait); +EXPORT_SYMBOL(dmu_tx_commit); +EXPORT_SYMBOL(dmu_tx_get_txg); +EXPORT_SYMBOL(dmu_tx_callback_register); +EXPORT_SYMBOL(dmu_tx_do_callbacks); +EXPORT_SYMBOL(dmu_tx_hold_spill); +EXPORT_SYMBOL(dmu_tx_hold_sa_create); +EXPORT_SYMBOL(dmu_tx_hold_sa); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dmu_zfetch.c +++ linux-4.4.0/zfs/module/zfs/dmu_zfetch.c @@ -0,0 +1,748 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* + * I'm against tune-ables, but these should probably exist as tweakable globals + * until we can get this working the way we want it to. + */ + +int zfs_prefetch_disable = 0; + +/* max # of streams per zfetch */ +unsigned int zfetch_max_streams = 8; +/* min time before stream reclaim */ +unsigned int zfetch_min_sec_reap = 2; +/* max number of blocks to fetch at a time */ +unsigned int zfetch_block_cap = 256; +/* number of bytes in a array_read at which we stop prefetching (1Mb) */ +unsigned long zfetch_array_rd_sz = 1024 * 1024; + +/* forward decls for static routines */ +static boolean_t dmu_zfetch_colinear(zfetch_t *, zstream_t *); +static void dmu_zfetch_dofetch(zfetch_t *, zstream_t *); +static uint64_t dmu_zfetch_fetch(dnode_t *, uint64_t, uint64_t); +static uint64_t dmu_zfetch_fetchsz(dnode_t *, uint64_t, uint64_t); +static boolean_t dmu_zfetch_find(zfetch_t *, zstream_t *, int); +static int dmu_zfetch_stream_insert(zfetch_t *, zstream_t *); +static zstream_t *dmu_zfetch_stream_reclaim(zfetch_t *); +static void dmu_zfetch_stream_remove(zfetch_t *, zstream_t *); +static int dmu_zfetch_streams_equal(zstream_t *, zstream_t *); + +typedef struct zfetch_stats { + kstat_named_t zfetchstat_hits; + kstat_named_t zfetchstat_misses; + kstat_named_t zfetchstat_colinear_hits; + kstat_named_t zfetchstat_colinear_misses; + kstat_named_t zfetchstat_stride_hits; + kstat_named_t zfetchstat_stride_misses; + kstat_named_t zfetchstat_reclaim_successes; + kstat_named_t zfetchstat_reclaim_failures; + kstat_named_t zfetchstat_stream_resets; + kstat_named_t zfetchstat_stream_noresets; + kstat_named_t zfetchstat_bogus_streams; +} zfetch_stats_t; + +static zfetch_stats_t zfetch_stats = { + { "hits", KSTAT_DATA_UINT64 }, + { "misses", KSTAT_DATA_UINT64 }, + { "colinear_hits", KSTAT_DATA_UINT64 }, + { "colinear_misses", KSTAT_DATA_UINT64 }, + { "stride_hits", KSTAT_DATA_UINT64 }, + { "stride_misses", KSTAT_DATA_UINT64 }, + { "reclaim_successes", KSTAT_DATA_UINT64 }, + { "reclaim_failures", KSTAT_DATA_UINT64 }, + { "streams_resets", KSTAT_DATA_UINT64 }, + { "streams_noresets", KSTAT_DATA_UINT64 }, + { "bogus_streams", KSTAT_DATA_UINT64 }, +}; + +#define ZFETCHSTAT_INCR(stat, val) \ + atomic_add_64(&zfetch_stats.stat.value.ui64, (val)); + +#define ZFETCHSTAT_BUMP(stat) ZFETCHSTAT_INCR(stat, 1); + +kstat_t *zfetch_ksp; + +/* + * Given a zfetch structure and a zstream structure, determine whether the + * blocks to be read are part of a co-linear pair of existing prefetch + * streams. If a set is found, coalesce the streams, removing one, and + * configure the prefetch so it looks for a strided access pattern. + * + * In other words: if we find two sequential access streams that are + * the same length and distance N appart, and this read is N from the + * last stream, then we are probably in a strided access pattern. So + * combine the two sequential streams into a single strided stream. + * + * Returns whether co-linear streams were found. + */ +static boolean_t +dmu_zfetch_colinear(zfetch_t *zf, zstream_t *zh) +{ + zstream_t *z_walk; + zstream_t *z_comp; + + if (! rw_tryenter(&zf->zf_rwlock, RW_WRITER)) + return (0); + + if (zh == NULL) { + rw_exit(&zf->zf_rwlock); + return (0); + } + + for (z_walk = list_head(&zf->zf_stream); z_walk; + z_walk = list_next(&zf->zf_stream, z_walk)) { + for (z_comp = list_next(&zf->zf_stream, z_walk); z_comp; + z_comp = list_next(&zf->zf_stream, z_comp)) { + int64_t diff; + + if (z_walk->zst_len != z_walk->zst_stride || + z_comp->zst_len != z_comp->zst_stride) { + continue; + } + + diff = z_comp->zst_offset - z_walk->zst_offset; + if (z_comp->zst_offset + diff == zh->zst_offset) { + z_walk->zst_offset = zh->zst_offset; + z_walk->zst_direction = diff < 0 ? + ZFETCH_BACKWARD : ZFETCH_FORWARD; + z_walk->zst_stride = + diff * z_walk->zst_direction; + z_walk->zst_ph_offset = + zh->zst_offset + z_walk->zst_stride; + dmu_zfetch_stream_remove(zf, z_comp); + mutex_destroy(&z_comp->zst_lock); + kmem_free(z_comp, sizeof (zstream_t)); + + dmu_zfetch_dofetch(zf, z_walk); + + rw_exit(&zf->zf_rwlock); + return (1); + } + + diff = z_walk->zst_offset - z_comp->zst_offset; + if (z_walk->zst_offset + diff == zh->zst_offset) { + z_walk->zst_offset = zh->zst_offset; + z_walk->zst_direction = diff < 0 ? + ZFETCH_BACKWARD : ZFETCH_FORWARD; + z_walk->zst_stride = + diff * z_walk->zst_direction; + z_walk->zst_ph_offset = + zh->zst_offset + z_walk->zst_stride; + dmu_zfetch_stream_remove(zf, z_comp); + mutex_destroy(&z_comp->zst_lock); + kmem_free(z_comp, sizeof (zstream_t)); + + dmu_zfetch_dofetch(zf, z_walk); + + rw_exit(&zf->zf_rwlock); + return (1); + } + } + } + + rw_exit(&zf->zf_rwlock); + return (0); +} + +/* + * Given a zstream_t, determine the bounds of the prefetch. Then call the + * routine that actually prefetches the individual blocks. + */ +static void +dmu_zfetch_dofetch(zfetch_t *zf, zstream_t *zs) +{ + uint64_t prefetch_tail; + uint64_t prefetch_limit; + uint64_t prefetch_ofst; + uint64_t prefetch_len; + uint64_t blocks_fetched; + + zs->zst_stride = MAX((int64_t)zs->zst_stride, zs->zst_len); + zs->zst_cap = MIN(zfetch_block_cap, 2 * zs->zst_cap); + + prefetch_tail = MAX((int64_t)zs->zst_ph_offset, + (int64_t)(zs->zst_offset + zs->zst_stride)); + /* + * XXX: use a faster division method? + */ + prefetch_limit = zs->zst_offset + zs->zst_len + + (zs->zst_cap * zs->zst_stride) / zs->zst_len; + + while (prefetch_tail < prefetch_limit) { + prefetch_ofst = zs->zst_offset + zs->zst_direction * + (prefetch_tail - zs->zst_offset); + + prefetch_len = zs->zst_len; + + /* + * Don't prefetch beyond the end of the file, if working + * backwards. + */ + if ((zs->zst_direction == ZFETCH_BACKWARD) && + (prefetch_ofst > prefetch_tail)) { + prefetch_len += prefetch_ofst; + prefetch_ofst = 0; + } + + /* don't prefetch more than we're supposed to */ + if (prefetch_len > zs->zst_len) + break; + + blocks_fetched = dmu_zfetch_fetch(zf->zf_dnode, + prefetch_ofst, zs->zst_len); + + prefetch_tail += zs->zst_stride; + /* stop if we've run out of stuff to prefetch */ + if (blocks_fetched < zs->zst_len) + break; + } + zs->zst_ph_offset = prefetch_tail; + zs->zst_last = ddi_get_lbolt(); +} + +void +zfetch_init(void) +{ + + zfetch_ksp = kstat_create("zfs", 0, "zfetchstats", "misc", + KSTAT_TYPE_NAMED, sizeof (zfetch_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + + if (zfetch_ksp != NULL) { + zfetch_ksp->ks_data = &zfetch_stats; + kstat_install(zfetch_ksp); + } +} + +void +zfetch_fini(void) +{ + if (zfetch_ksp != NULL) { + kstat_delete(zfetch_ksp); + zfetch_ksp = NULL; + } +} + +/* + * This takes a pointer to a zfetch structure and a dnode. It performs the + * necessary setup for the zfetch structure, grokking data from the + * associated dnode. + */ +void +dmu_zfetch_init(zfetch_t *zf, dnode_t *dno) +{ + if (zf == NULL) { + return; + } + + zf->zf_dnode = dno; + zf->zf_stream_cnt = 0; + zf->zf_alloc_fail = 0; + + list_create(&zf->zf_stream, sizeof (zstream_t), + offsetof(zstream_t, zst_node)); + + rw_init(&zf->zf_rwlock, NULL, RW_DEFAULT, NULL); +} + +/* + * This function computes the actual size, in blocks, that can be prefetched, + * and fetches it. + */ +static uint64_t +dmu_zfetch_fetch(dnode_t *dn, uint64_t blkid, uint64_t nblks) +{ + uint64_t fetchsz; + uint64_t i; + + fetchsz = dmu_zfetch_fetchsz(dn, blkid, nblks); + + for (i = 0; i < fetchsz; i++) { + dbuf_prefetch(dn, blkid + i, ZIO_PRIORITY_ASYNC_READ); + } + + return (fetchsz); +} + +/* + * this function returns the number of blocks that would be prefetched, based + * upon the supplied dnode, blockid, and nblks. This is used so that we can + * update streams in place, and then prefetch with their old value after the + * fact. This way, we can delay the prefetch, but subsequent accesses to the + * stream won't result in the same data being prefetched multiple times. + */ +static uint64_t +dmu_zfetch_fetchsz(dnode_t *dn, uint64_t blkid, uint64_t nblks) +{ + uint64_t fetchsz; + + if (blkid > dn->dn_maxblkid) { + return (0); + } + + /* compute fetch size */ + if (blkid + nblks + 1 > dn->dn_maxblkid) { + fetchsz = (dn->dn_maxblkid - blkid) + 1; + ASSERT(blkid + fetchsz - 1 <= dn->dn_maxblkid); + } else { + fetchsz = nblks; + } + + + return (fetchsz); +} + +/* + * given a zfetch and a zstream structure, see if there is an associated zstream + * for this block read. If so, it starts a prefetch for the stream it + * located and returns true, otherwise it returns false + */ +static boolean_t +dmu_zfetch_find(zfetch_t *zf, zstream_t *zh, int prefetched) +{ + zstream_t *zs; + int64_t diff; + int reset = !prefetched; + int rc = 0; + + if (zh == NULL) + return (0); + + /* + * XXX: This locking strategy is a bit coarse; however, it's impact has + * yet to be tested. If this turns out to be an issue, it can be + * modified in a number of different ways. + */ + + rw_enter(&zf->zf_rwlock, RW_READER); +top: + + for (zs = list_head(&zf->zf_stream); zs; + zs = list_next(&zf->zf_stream, zs)) { + + /* + * XXX - should this be an assert? + */ + if (zs->zst_len == 0) { + /* bogus stream */ + ZFETCHSTAT_BUMP(zfetchstat_bogus_streams); + continue; + } + + /* + * We hit this case when we are in a strided prefetch stream: + * we will read "len" blocks before "striding". + */ + if (zh->zst_offset >= zs->zst_offset && + zh->zst_offset < zs->zst_offset + zs->zst_len) { + if (prefetched) { + /* already fetched */ + ZFETCHSTAT_BUMP(zfetchstat_stride_hits); + rc = 1; + goto out; + } else { + ZFETCHSTAT_BUMP(zfetchstat_stride_misses); + } + } + + /* + * This is the forward sequential read case: we increment + * len by one each time we hit here, so we will enter this + * case on every read. + */ + if (zh->zst_offset == zs->zst_offset + zs->zst_len) { + + reset = !prefetched && zs->zst_len > 1; + + mutex_enter(&zs->zst_lock); + + if (zh->zst_offset != zs->zst_offset + zs->zst_len) { + mutex_exit(&zs->zst_lock); + goto top; + } + zs->zst_len += zh->zst_len; + diff = zs->zst_len - zfetch_block_cap; + if (diff > 0) { + zs->zst_offset += diff; + zs->zst_len = zs->zst_len > diff ? + zs->zst_len - diff : 0; + } + zs->zst_direction = ZFETCH_FORWARD; + + break; + + /* + * Same as above, but reading backwards through the file. + */ + } else if (zh->zst_offset == zs->zst_offset - zh->zst_len) { + /* backwards sequential access */ + + reset = !prefetched && zs->zst_len > 1; + + mutex_enter(&zs->zst_lock); + + if (zh->zst_offset != zs->zst_offset - zh->zst_len) { + mutex_exit(&zs->zst_lock); + goto top; + } + + zs->zst_offset = zs->zst_offset > zh->zst_len ? + zs->zst_offset - zh->zst_len : 0; + zs->zst_ph_offset = zs->zst_ph_offset > zh->zst_len ? + zs->zst_ph_offset - zh->zst_len : 0; + zs->zst_len += zh->zst_len; + + diff = zs->zst_len - zfetch_block_cap; + if (diff > 0) { + zs->zst_ph_offset = zs->zst_ph_offset > diff ? + zs->zst_ph_offset - diff : 0; + zs->zst_len = zs->zst_len > diff ? + zs->zst_len - diff : zs->zst_len; + } + zs->zst_direction = ZFETCH_BACKWARD; + + break; + + } else if ((zh->zst_offset - zs->zst_offset - zs->zst_stride < + zs->zst_len) && (zs->zst_len != zs->zst_stride)) { + /* strided forward access */ + + mutex_enter(&zs->zst_lock); + + if ((zh->zst_offset - zs->zst_offset - zs->zst_stride >= + zs->zst_len) || (zs->zst_len == zs->zst_stride)) { + mutex_exit(&zs->zst_lock); + goto top; + } + + zs->zst_offset += zs->zst_stride; + zs->zst_direction = ZFETCH_FORWARD; + + break; + + } else if ((zh->zst_offset - zs->zst_offset + zs->zst_stride < + zs->zst_len) && (zs->zst_len != zs->zst_stride)) { + /* strided reverse access */ + + mutex_enter(&zs->zst_lock); + + if ((zh->zst_offset - zs->zst_offset + zs->zst_stride >= + zs->zst_len) || (zs->zst_len == zs->zst_stride)) { + mutex_exit(&zs->zst_lock); + goto top; + } + + zs->zst_offset = zs->zst_offset > zs->zst_stride ? + zs->zst_offset - zs->zst_stride : 0; + zs->zst_ph_offset = (zs->zst_ph_offset > + (2 * zs->zst_stride)) ? + (zs->zst_ph_offset - (2 * zs->zst_stride)) : 0; + zs->zst_direction = ZFETCH_BACKWARD; + + break; + } + } + + if (zs) { + if (reset) { + zstream_t *remove = zs; + + ZFETCHSTAT_BUMP(zfetchstat_stream_resets); + rc = 0; + mutex_exit(&zs->zst_lock); + rw_exit(&zf->zf_rwlock); + rw_enter(&zf->zf_rwlock, RW_WRITER); + /* + * Relocate the stream, in case someone removes + * it while we were acquiring the WRITER lock. + */ + for (zs = list_head(&zf->zf_stream); zs; + zs = list_next(&zf->zf_stream, zs)) { + if (zs == remove) { + dmu_zfetch_stream_remove(zf, zs); + mutex_destroy(&zs->zst_lock); + kmem_free(zs, sizeof (zstream_t)); + break; + } + } + } else { + ZFETCHSTAT_BUMP(zfetchstat_stream_noresets); + rc = 1; + dmu_zfetch_dofetch(zf, zs); + mutex_exit(&zs->zst_lock); + } + } +out: + rw_exit(&zf->zf_rwlock); + return (rc); +} + +/* + * Clean-up state associated with a zfetch structure. This frees allocated + * structure members, empties the zf_stream tree, and generally makes things + * nice. This doesn't free the zfetch_t itself, that's left to the caller. + */ +void +dmu_zfetch_rele(zfetch_t *zf) +{ + zstream_t *zs; + zstream_t *zs_next; + + ASSERT(!RW_LOCK_HELD(&zf->zf_rwlock)); + + for (zs = list_head(&zf->zf_stream); zs; zs = zs_next) { + zs_next = list_next(&zf->zf_stream, zs); + + list_remove(&zf->zf_stream, zs); + mutex_destroy(&zs->zst_lock); + kmem_free(zs, sizeof (zstream_t)); + } + list_destroy(&zf->zf_stream); + rw_destroy(&zf->zf_rwlock); + + zf->zf_dnode = NULL; +} + +/* + * Given a zfetch and zstream structure, insert the zstream structure into the + * AVL tree contained within the zfetch structure. Peform the appropriate + * book-keeping. It is possible that another thread has inserted a stream which + * matches one that we are about to insert, so we must be sure to check for this + * case. If one is found, return failure, and let the caller cleanup the + * duplicates. + */ +static int +dmu_zfetch_stream_insert(zfetch_t *zf, zstream_t *zs) +{ + zstream_t *zs_walk; + zstream_t *zs_next; + + ASSERT(RW_WRITE_HELD(&zf->zf_rwlock)); + + for (zs_walk = list_head(&zf->zf_stream); zs_walk; zs_walk = zs_next) { + zs_next = list_next(&zf->zf_stream, zs_walk); + + if (dmu_zfetch_streams_equal(zs_walk, zs)) { + return (0); + } + } + + list_insert_head(&zf->zf_stream, zs); + zf->zf_stream_cnt++; + return (1); +} + + +/* + * Walk the list of zstreams in the given zfetch, find an old one (by time), and + * reclaim it for use by the caller. + */ +static zstream_t * +dmu_zfetch_stream_reclaim(zfetch_t *zf) +{ + zstream_t *zs; + + if (! rw_tryenter(&zf->zf_rwlock, RW_WRITER)) + return (0); + + for (zs = list_head(&zf->zf_stream); zs; + zs = list_next(&zf->zf_stream, zs)) { + + if (((ddi_get_lbolt() - zs->zst_last)/hz) > zfetch_min_sec_reap) + break; + } + + if (zs) { + dmu_zfetch_stream_remove(zf, zs); + mutex_destroy(&zs->zst_lock); + bzero(zs, sizeof (zstream_t)); + } else { + zf->zf_alloc_fail++; + } + rw_exit(&zf->zf_rwlock); + + return (zs); +} + +/* + * Given a zfetch and zstream structure, remove the zstream structure from its + * container in the zfetch structure. Perform the appropriate book-keeping. + */ +static void +dmu_zfetch_stream_remove(zfetch_t *zf, zstream_t *zs) +{ + ASSERT(RW_WRITE_HELD(&zf->zf_rwlock)); + + list_remove(&zf->zf_stream, zs); + zf->zf_stream_cnt--; +} + +static int +dmu_zfetch_streams_equal(zstream_t *zs1, zstream_t *zs2) +{ + if (zs1->zst_offset != zs2->zst_offset) + return (0); + + if (zs1->zst_len != zs2->zst_len) + return (0); + + if (zs1->zst_stride != zs2->zst_stride) + return (0); + + if (zs1->zst_ph_offset != zs2->zst_ph_offset) + return (0); + + if (zs1->zst_cap != zs2->zst_cap) + return (0); + + if (zs1->zst_direction != zs2->zst_direction) + return (0); + + return (1); +} + +/* + * This is the prefetch entry point. It calls all of the other dmu_zfetch + * routines to create, delete, find, or operate upon prefetch streams. + */ +void +dmu_zfetch(zfetch_t *zf, uint64_t offset, uint64_t size, int prefetched) +{ + zstream_t zst; + zstream_t *newstream; + boolean_t fetched; + int inserted; + unsigned int blkshft; + uint64_t blksz; + + if (zfs_prefetch_disable) + return; + + /* files that aren't ln2 blocksz are only one block -- nothing to do */ + if (!zf->zf_dnode->dn_datablkshift) + return; + + /* convert offset and size, into blockid and nblocks */ + blkshft = zf->zf_dnode->dn_datablkshift; + blksz = (1 << blkshft); + + bzero(&zst, sizeof (zstream_t)); + zst.zst_offset = offset >> blkshft; + zst.zst_len = (P2ROUNDUP(offset + size, blksz) - + P2ALIGN(offset, blksz)) >> blkshft; + + fetched = dmu_zfetch_find(zf, &zst, prefetched); + if (fetched) { + ZFETCHSTAT_BUMP(zfetchstat_hits); + } else { + ZFETCHSTAT_BUMP(zfetchstat_misses); + if ((fetched = dmu_zfetch_colinear(zf, &zst))) { + ZFETCHSTAT_BUMP(zfetchstat_colinear_hits); + } else { + ZFETCHSTAT_BUMP(zfetchstat_colinear_misses); + } + } + + if (!fetched) { + newstream = dmu_zfetch_stream_reclaim(zf); + + /* + * we still couldn't find a stream, drop the lock, and allocate + * one if possible. Otherwise, give up and go home. + */ + if (newstream) { + ZFETCHSTAT_BUMP(zfetchstat_reclaim_successes); + } else { + uint64_t maxblocks; + uint32_t max_streams; + uint32_t cur_streams; + + ZFETCHSTAT_BUMP(zfetchstat_reclaim_failures); + cur_streams = zf->zf_stream_cnt; + maxblocks = zf->zf_dnode->dn_maxblkid; + + max_streams = MIN(zfetch_max_streams, + (maxblocks / zfetch_block_cap)); + if (max_streams == 0) { + max_streams++; + } + + if (cur_streams >= max_streams) { + return; + } + newstream = + kmem_zalloc(sizeof (zstream_t), KM_SLEEP); + } + + newstream->zst_offset = zst.zst_offset; + newstream->zst_len = zst.zst_len; + newstream->zst_stride = zst.zst_len; + newstream->zst_ph_offset = zst.zst_len + zst.zst_offset; + newstream->zst_cap = zst.zst_len; + newstream->zst_direction = ZFETCH_FORWARD; + newstream->zst_last = ddi_get_lbolt(); + + mutex_init(&newstream->zst_lock, NULL, MUTEX_DEFAULT, NULL); + + rw_enter(&zf->zf_rwlock, RW_WRITER); + inserted = dmu_zfetch_stream_insert(zf, newstream); + rw_exit(&zf->zf_rwlock); + + if (!inserted) { + mutex_destroy(&newstream->zst_lock); + kmem_free(newstream, sizeof (zstream_t)); + } + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_prefetch_disable, int, 0644); +MODULE_PARM_DESC(zfs_prefetch_disable, "Disable all ZFS prefetching"); + +module_param(zfetch_max_streams, uint, 0644); +MODULE_PARM_DESC(zfetch_max_streams, "Max number of streams per zfetch"); + +module_param(zfetch_min_sec_reap, uint, 0644); +MODULE_PARM_DESC(zfetch_min_sec_reap, "Min time before stream reclaim"); + +module_param(zfetch_block_cap, uint, 0644); +MODULE_PARM_DESC(zfetch_block_cap, "Max number of blocks to fetch at a time"); + +module_param(zfetch_array_rd_sz, ulong, 0644); +MODULE_PARM_DESC(zfetch_array_rd_sz, "Number of bytes in a array_read"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dnode.c +++ linux-4.4.0/zfs/module/zfs/dnode.c @@ -0,0 +1,2044 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static kmem_cache_t *dnode_cache; +/* + * Define DNODE_STATS to turn on statistic gathering. By default, it is only + * turned on when DEBUG is also defined. + */ +#ifdef DEBUG +#define DNODE_STATS +#endif /* DEBUG */ + +#ifdef DNODE_STATS +#define DNODE_STAT_ADD(stat) ((stat)++) +#else +#define DNODE_STAT_ADD(stat) /* nothing */ +#endif /* DNODE_STATS */ + +ASSERTV(static dnode_phys_t dnode_phys_zero); + +int zfs_default_bs = SPA_MINBLOCKSHIFT; +int zfs_default_ibs = DN_MAX_INDBLKSHIFT; + +#ifdef _KERNEL +static kmem_cbrc_t dnode_move(void *, void *, size_t, void *); +#endif /* _KERNEL */ + +static int +dbuf_compare(const void *x1, const void *x2) +{ + const dmu_buf_impl_t *d1 = x1; + const dmu_buf_impl_t *d2 = x2; + + if (d1->db_level < d2->db_level) { + return (-1); + } + if (d1->db_level > d2->db_level) { + return (1); + } + + if (d1->db_blkid < d2->db_blkid) { + return (-1); + } + if (d1->db_blkid > d2->db_blkid) { + return (1); + } + + if (d1->db_state == DB_SEARCH) { + ASSERT3S(d2->db_state, !=, DB_SEARCH); + return (-1); + } else if (d2->db_state == DB_SEARCH) { + ASSERT3S(d1->db_state, !=, DB_SEARCH); + return (1); + } + + if ((uintptr_t)d1 < (uintptr_t)d2) { + return (-1); + } + if ((uintptr_t)d1 > (uintptr_t)d2) { + return (1); + } + return (0); +} + +/* ARGSUSED */ +static int +dnode_cons(void *arg, void *unused, int kmflag) +{ + dnode_t *dn = arg; + int i; + + rw_init(&dn->dn_struct_rwlock, NULL, RW_DEFAULT, NULL); + mutex_init(&dn->dn_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&dn->dn_dbufs_mtx, NULL, MUTEX_DEFAULT, NULL); + cv_init(&dn->dn_notxholds, NULL, CV_DEFAULT, NULL); + + /* + * Every dbuf has a reference, and dropping a tracked reference is + * O(number of references), so don't track dn_holds. + */ + refcount_create_untracked(&dn->dn_holds); + refcount_create(&dn->dn_tx_holds); + list_link_init(&dn->dn_link); + + bzero(&dn->dn_next_nblkptr[0], sizeof (dn->dn_next_nblkptr)); + bzero(&dn->dn_next_nlevels[0], sizeof (dn->dn_next_nlevels)); + bzero(&dn->dn_next_indblkshift[0], sizeof (dn->dn_next_indblkshift)); + bzero(&dn->dn_next_bonustype[0], sizeof (dn->dn_next_bonustype)); + bzero(&dn->dn_rm_spillblk[0], sizeof (dn->dn_rm_spillblk)); + bzero(&dn->dn_next_bonuslen[0], sizeof (dn->dn_next_bonuslen)); + bzero(&dn->dn_next_blksz[0], sizeof (dn->dn_next_blksz)); + + for (i = 0; i < TXG_SIZE; i++) { + list_link_init(&dn->dn_dirty_link[i]); + dn->dn_free_ranges[i] = NULL; + list_create(&dn->dn_dirty_records[i], + sizeof (dbuf_dirty_record_t), + offsetof(dbuf_dirty_record_t, dr_dirty_node)); + } + + dn->dn_allocated_txg = 0; + dn->dn_free_txg = 0; + dn->dn_assigned_txg = 0; + dn->dn_dirtyctx = 0; + dn->dn_dirtyctx_firstset = NULL; + dn->dn_bonus = NULL; + dn->dn_have_spill = B_FALSE; + dn->dn_zio = NULL; + dn->dn_oldused = 0; + dn->dn_oldflags = 0; + dn->dn_olduid = 0; + dn->dn_oldgid = 0; + dn->dn_newuid = 0; + dn->dn_newgid = 0; + dn->dn_id_flags = 0; + + dn->dn_dbufs_count = 0; + dn->dn_unlisted_l0_blkid = 0; + avl_create(&dn->dn_dbufs, dbuf_compare, sizeof (dmu_buf_impl_t), + offsetof(dmu_buf_impl_t, db_link)); + + dn->dn_moved = 0; + return (0); +} + +/* ARGSUSED */ +static void +dnode_dest(void *arg, void *unused) +{ + int i; + dnode_t *dn = arg; + + rw_destroy(&dn->dn_struct_rwlock); + mutex_destroy(&dn->dn_mtx); + mutex_destroy(&dn->dn_dbufs_mtx); + cv_destroy(&dn->dn_notxholds); + refcount_destroy(&dn->dn_holds); + refcount_destroy(&dn->dn_tx_holds); + ASSERT(!list_link_active(&dn->dn_link)); + + for (i = 0; i < TXG_SIZE; i++) { + ASSERT(!list_link_active(&dn->dn_dirty_link[i])); + ASSERT3P(dn->dn_free_ranges[i], ==, NULL); + list_destroy(&dn->dn_dirty_records[i]); + ASSERT0(dn->dn_next_nblkptr[i]); + ASSERT0(dn->dn_next_nlevels[i]); + ASSERT0(dn->dn_next_indblkshift[i]); + ASSERT0(dn->dn_next_bonustype[i]); + ASSERT0(dn->dn_rm_spillblk[i]); + ASSERT0(dn->dn_next_bonuslen[i]); + ASSERT0(dn->dn_next_blksz[i]); + } + + ASSERT0(dn->dn_allocated_txg); + ASSERT0(dn->dn_free_txg); + ASSERT0(dn->dn_assigned_txg); + ASSERT0(dn->dn_dirtyctx); + ASSERT3P(dn->dn_dirtyctx_firstset, ==, NULL); + ASSERT3P(dn->dn_bonus, ==, NULL); + ASSERT(!dn->dn_have_spill); + ASSERT3P(dn->dn_zio, ==, NULL); + ASSERT0(dn->dn_oldused); + ASSERT0(dn->dn_oldflags); + ASSERT0(dn->dn_olduid); + ASSERT0(dn->dn_oldgid); + ASSERT0(dn->dn_newuid); + ASSERT0(dn->dn_newgid); + ASSERT0(dn->dn_id_flags); + + ASSERT0(dn->dn_dbufs_count); + ASSERT0(dn->dn_unlisted_l0_blkid); + avl_destroy(&dn->dn_dbufs); +} + +void +dnode_init(void) +{ + ASSERT(dnode_cache == NULL); + dnode_cache = kmem_cache_create("dnode_t", sizeof (dnode_t), + 0, dnode_cons, dnode_dest, NULL, NULL, NULL, 0); + kmem_cache_set_move(dnode_cache, dnode_move); +} + +void +dnode_fini(void) +{ + kmem_cache_destroy(dnode_cache); + dnode_cache = NULL; +} + + +#ifdef ZFS_DEBUG +void +dnode_verify(dnode_t *dn) +{ + int drop_struct_lock = FALSE; + + ASSERT(dn->dn_phys); + ASSERT(dn->dn_objset); + ASSERT(dn->dn_handle->dnh_dnode == dn); + + ASSERT(DMU_OT_IS_VALID(dn->dn_phys->dn_type)); + + if (!(zfs_flags & ZFS_DEBUG_DNODE_VERIFY)) + return; + + if (!RW_WRITE_HELD(&dn->dn_struct_rwlock)) { + rw_enter(&dn->dn_struct_rwlock, RW_READER); + drop_struct_lock = TRUE; + } + if (dn->dn_phys->dn_type != DMU_OT_NONE || dn->dn_allocated_txg != 0) { + int i; + ASSERT3U(dn->dn_indblkshift, <=, SPA_MAXBLOCKSHIFT); + if (dn->dn_datablkshift) { + ASSERT3U(dn->dn_datablkshift, >=, SPA_MINBLOCKSHIFT); + ASSERT3U(dn->dn_datablkshift, <=, SPA_MAXBLOCKSHIFT); + ASSERT3U(1<dn_datablkshift, ==, dn->dn_datablksz); + } + ASSERT3U(dn->dn_nlevels, <=, 30); + ASSERT(DMU_OT_IS_VALID(dn->dn_type)); + ASSERT3U(dn->dn_nblkptr, >=, 1); + ASSERT3U(dn->dn_nblkptr, <=, DN_MAX_NBLKPTR); + ASSERT3U(dn->dn_bonuslen, <=, DN_MAX_BONUSLEN); + ASSERT3U(dn->dn_datablksz, ==, + dn->dn_datablkszsec << SPA_MINBLOCKSHIFT); + ASSERT3U(ISP2(dn->dn_datablksz), ==, dn->dn_datablkshift != 0); + ASSERT3U((dn->dn_nblkptr - 1) * sizeof (blkptr_t) + + dn->dn_bonuslen, <=, DN_MAX_BONUSLEN); + for (i = 0; i < TXG_SIZE; i++) { + ASSERT3U(dn->dn_next_nlevels[i], <=, dn->dn_nlevels); + } + } + if (dn->dn_phys->dn_type != DMU_OT_NONE) + ASSERT3U(dn->dn_phys->dn_nlevels, <=, dn->dn_nlevels); + ASSERT(DMU_OBJECT_IS_SPECIAL(dn->dn_object) || dn->dn_dbuf != NULL); + if (dn->dn_dbuf != NULL) { + ASSERT3P(dn->dn_phys, ==, + (dnode_phys_t *)dn->dn_dbuf->db.db_data + + (dn->dn_object % (dn->dn_dbuf->db.db_size >> DNODE_SHIFT))); + } + if (drop_struct_lock) + rw_exit(&dn->dn_struct_rwlock); +} +#endif + +void +dnode_byteswap(dnode_phys_t *dnp) +{ + uint64_t *buf64 = (void*)&dnp->dn_blkptr; + int i; + + if (dnp->dn_type == DMU_OT_NONE) { + bzero(dnp, sizeof (dnode_phys_t)); + return; + } + + dnp->dn_datablkszsec = BSWAP_16(dnp->dn_datablkszsec); + dnp->dn_bonuslen = BSWAP_16(dnp->dn_bonuslen); + dnp->dn_maxblkid = BSWAP_64(dnp->dn_maxblkid); + dnp->dn_used = BSWAP_64(dnp->dn_used); + + /* + * dn_nblkptr is only one byte, so it's OK to read it in either + * byte order. We can't read dn_bouslen. + */ + ASSERT(dnp->dn_indblkshift <= SPA_MAXBLOCKSHIFT); + ASSERT(dnp->dn_nblkptr <= DN_MAX_NBLKPTR); + for (i = 0; i < dnp->dn_nblkptr * sizeof (blkptr_t)/8; i++) + buf64[i] = BSWAP_64(buf64[i]); + + /* + * OK to check dn_bonuslen for zero, because it won't matter if + * we have the wrong byte order. This is necessary because the + * dnode dnode is smaller than a regular dnode. + */ + if (dnp->dn_bonuslen != 0) { + /* + * Note that the bonus length calculated here may be + * longer than the actual bonus buffer. This is because + * we always put the bonus buffer after the last block + * pointer (instead of packing it against the end of the + * dnode buffer). + */ + int off = (dnp->dn_nblkptr-1) * sizeof (blkptr_t); + size_t len = DN_MAX_BONUSLEN - off; + dmu_object_byteswap_t byteswap; + ASSERT(DMU_OT_IS_VALID(dnp->dn_bonustype)); + byteswap = DMU_OT_BYTESWAP(dnp->dn_bonustype); + dmu_ot_byteswap[byteswap].ob_func(dnp->dn_bonus + off, len); + } + + /* Swap SPILL block if we have one */ + if (dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) + byteswap_uint64_array(&dnp->dn_spill, sizeof (blkptr_t)); + +} + +void +dnode_buf_byteswap(void *vbuf, size_t size) +{ + dnode_phys_t *buf = vbuf; + int i; + + ASSERT3U(sizeof (dnode_phys_t), ==, (1<>= DNODE_SHIFT; + for (i = 0; i < size; i++) { + dnode_byteswap(buf); + buf++; + } +} + +void +dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx) +{ + ASSERT3U(refcount_count(&dn->dn_holds), >=, 1); + + dnode_setdirty(dn, tx); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + ASSERT3U(newsize, <=, DN_MAX_BONUSLEN - + (dn->dn_nblkptr-1) * sizeof (blkptr_t)); + dn->dn_bonuslen = newsize; + if (newsize == 0) + dn->dn_next_bonuslen[tx->tx_txg & TXG_MASK] = DN_ZERO_BONUSLEN; + else + dn->dn_next_bonuslen[tx->tx_txg & TXG_MASK] = dn->dn_bonuslen; + rw_exit(&dn->dn_struct_rwlock); +} + +void +dnode_setbonus_type(dnode_t *dn, dmu_object_type_t newtype, dmu_tx_t *tx) +{ + ASSERT3U(refcount_count(&dn->dn_holds), >=, 1); + dnode_setdirty(dn, tx); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + dn->dn_bonustype = newtype; + dn->dn_next_bonustype[tx->tx_txg & TXG_MASK] = dn->dn_bonustype; + rw_exit(&dn->dn_struct_rwlock); +} + +void +dnode_rm_spill(dnode_t *dn, dmu_tx_t *tx) +{ + ASSERT3U(refcount_count(&dn->dn_holds), >=, 1); + ASSERT(RW_WRITE_HELD(&dn->dn_struct_rwlock)); + dnode_setdirty(dn, tx); + dn->dn_rm_spillblk[tx->tx_txg&TXG_MASK] = DN_KILL_SPILLBLK; + dn->dn_have_spill = B_FALSE; +} + +static void +dnode_setdblksz(dnode_t *dn, int size) +{ + ASSERT0(P2PHASE(size, SPA_MINBLOCKSIZE)); + ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); + ASSERT3U(size, >=, SPA_MINBLOCKSIZE); + ASSERT3U(size >> SPA_MINBLOCKSHIFT, <, + 1<<(sizeof (dn->dn_phys->dn_datablkszsec) * 8)); + dn->dn_datablksz = size; + dn->dn_datablkszsec = size >> SPA_MINBLOCKSHIFT; + dn->dn_datablkshift = ISP2(size) ? highbit64(size - 1) : 0; +} + +static dnode_t * +dnode_create(objset_t *os, dnode_phys_t *dnp, dmu_buf_impl_t *db, + uint64_t object, dnode_handle_t *dnh) +{ + dnode_t *dn; + + dn = kmem_cache_alloc(dnode_cache, KM_SLEEP); + ASSERT(!POINTER_IS_VALID(dn->dn_objset)); + dn->dn_moved = 0; + + /* + * Defer setting dn_objset until the dnode is ready to be a candidate + * for the dnode_move() callback. + */ + dn->dn_object = object; + dn->dn_dbuf = db; + dn->dn_handle = dnh; + dn->dn_phys = dnp; + + if (dnp->dn_datablkszsec) { + dnode_setdblksz(dn, dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT); + } else { + dn->dn_datablksz = 0; + dn->dn_datablkszsec = 0; + dn->dn_datablkshift = 0; + } + dn->dn_indblkshift = dnp->dn_indblkshift; + dn->dn_nlevels = dnp->dn_nlevels; + dn->dn_type = dnp->dn_type; + dn->dn_nblkptr = dnp->dn_nblkptr; + dn->dn_checksum = dnp->dn_checksum; + dn->dn_compress = dnp->dn_compress; + dn->dn_bonustype = dnp->dn_bonustype; + dn->dn_bonuslen = dnp->dn_bonuslen; + dn->dn_maxblkid = dnp->dn_maxblkid; + dn->dn_have_spill = ((dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) != 0); + dn->dn_id_flags = 0; + + dmu_zfetch_init(&dn->dn_zfetch, dn); + + ASSERT(DMU_OT_IS_VALID(dn->dn_phys->dn_type)); + + mutex_enter(&os->os_lock); + if (dnh->dnh_dnode != NULL) { + /* Lost the allocation race. */ + mutex_exit(&os->os_lock); + kmem_cache_free(dnode_cache, dn); + return (dnh->dnh_dnode); + } + + /* + * Exclude special dnodes from os_dnodes so an empty os_dnodes + * signifies that the special dnodes have no references from + * their children (the entries in os_dnodes). This allows + * dnode_destroy() to easily determine if the last child has + * been removed and then complete eviction of the objset. + */ + if (!DMU_OBJECT_IS_SPECIAL(object)) + list_insert_head(&os->os_dnodes, dn); + membar_producer(); + + /* + * Everything else must be valid before assigning dn_objset + * makes the dnode eligible for dnode_move(). + */ + dn->dn_objset = os; + + dnh->dnh_dnode = dn; + mutex_exit(&os->os_lock); + + arc_space_consume(sizeof (dnode_t), ARC_SPACE_OTHER); + return (dn); +} + +/* + * Caller must be holding the dnode handle, which is released upon return. + */ +static void +dnode_destroy(dnode_t *dn) +{ + objset_t *os = dn->dn_objset; + boolean_t complete_os_eviction = B_FALSE; + + ASSERT((dn->dn_id_flags & DN_ID_NEW_EXIST) == 0); + + mutex_enter(&os->os_lock); + POINTER_INVALIDATE(&dn->dn_objset); + if (!DMU_OBJECT_IS_SPECIAL(dn->dn_object)) { + list_remove(&os->os_dnodes, dn); + complete_os_eviction = + list_is_empty(&os->os_dnodes) && + list_link_active(&os->os_evicting_node); + } + mutex_exit(&os->os_lock); + + /* the dnode can no longer move, so we can release the handle */ + zrl_remove(&dn->dn_handle->dnh_zrlock); + + dn->dn_allocated_txg = 0; + dn->dn_free_txg = 0; + dn->dn_assigned_txg = 0; + + dn->dn_dirtyctx = 0; + if (dn->dn_dirtyctx_firstset != NULL) { + kmem_free(dn->dn_dirtyctx_firstset, 1); + dn->dn_dirtyctx_firstset = NULL; + } + if (dn->dn_bonus != NULL) { + mutex_enter(&dn->dn_bonus->db_mtx); + dbuf_evict(dn->dn_bonus); + dn->dn_bonus = NULL; + } + dn->dn_zio = NULL; + + dn->dn_have_spill = B_FALSE; + dn->dn_oldused = 0; + dn->dn_oldflags = 0; + dn->dn_olduid = 0; + dn->dn_oldgid = 0; + dn->dn_newuid = 0; + dn->dn_newgid = 0; + dn->dn_id_flags = 0; + dn->dn_unlisted_l0_blkid = 0; + + dmu_zfetch_rele(&dn->dn_zfetch); + kmem_cache_free(dnode_cache, dn); + arc_space_return(sizeof (dnode_t), ARC_SPACE_OTHER); + + if (complete_os_eviction) + dmu_objset_evict_done(os); +} + +void +dnode_allocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, int ibs, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + int i; + + ASSERT3U(blocksize, <=, + spa_maxblocksize(dmu_objset_spa(dn->dn_objset))); + if (blocksize == 0) + blocksize = 1 << zfs_default_bs; + else + blocksize = P2ROUNDUP(blocksize, SPA_MINBLOCKSIZE); + + if (ibs == 0) + ibs = zfs_default_ibs; + + ibs = MIN(MAX(ibs, DN_MIN_INDBLKSHIFT), DN_MAX_INDBLKSHIFT); + + dprintf("os=%p obj=%llu txg=%llu blocksize=%d ibs=%d\n", dn->dn_objset, + dn->dn_object, tx->tx_txg, blocksize, ibs); + + ASSERT(dn->dn_type == DMU_OT_NONE); + ASSERT(bcmp(dn->dn_phys, &dnode_phys_zero, sizeof (dnode_phys_t)) == 0); + ASSERT(dn->dn_phys->dn_type == DMU_OT_NONE); + ASSERT(ot != DMU_OT_NONE); + ASSERT(DMU_OT_IS_VALID(ot)); + ASSERT((bonustype == DMU_OT_NONE && bonuslen == 0) || + (bonustype == DMU_OT_SA && bonuslen == 0) || + (bonustype != DMU_OT_NONE && bonuslen != 0)); + ASSERT(DMU_OT_IS_VALID(bonustype)); + ASSERT3U(bonuslen, <=, DN_MAX_BONUSLEN); + ASSERT(dn->dn_type == DMU_OT_NONE); + ASSERT0(dn->dn_maxblkid); + ASSERT0(dn->dn_allocated_txg); + ASSERT0(dn->dn_assigned_txg); + ASSERT(refcount_is_zero(&dn->dn_tx_holds)); + ASSERT3U(refcount_count(&dn->dn_holds), <=, 1); + ASSERT(avl_is_empty(&dn->dn_dbufs)); + + for (i = 0; i < TXG_SIZE; i++) { + ASSERT0(dn->dn_next_nblkptr[i]); + ASSERT0(dn->dn_next_nlevels[i]); + ASSERT0(dn->dn_next_indblkshift[i]); + ASSERT0(dn->dn_next_bonuslen[i]); + ASSERT0(dn->dn_next_bonustype[i]); + ASSERT0(dn->dn_rm_spillblk[i]); + ASSERT0(dn->dn_next_blksz[i]); + ASSERT(!list_link_active(&dn->dn_dirty_link[i])); + ASSERT3P(list_head(&dn->dn_dirty_records[i]), ==, NULL); + ASSERT3P(dn->dn_free_ranges[i], ==, NULL); + } + + dn->dn_type = ot; + dnode_setdblksz(dn, blocksize); + dn->dn_indblkshift = ibs; + dn->dn_nlevels = 1; + if (bonustype == DMU_OT_SA) /* Maximize bonus space for SA */ + dn->dn_nblkptr = 1; + else + dn->dn_nblkptr = 1 + + ((DN_MAX_BONUSLEN - bonuslen) >> SPA_BLKPTRSHIFT); + dn->dn_bonustype = bonustype; + dn->dn_bonuslen = bonuslen; + dn->dn_checksum = ZIO_CHECKSUM_INHERIT; + dn->dn_compress = ZIO_COMPRESS_INHERIT; + dn->dn_dirtyctx = 0; + + dn->dn_free_txg = 0; + if (dn->dn_dirtyctx_firstset) { + kmem_free(dn->dn_dirtyctx_firstset, 1); + dn->dn_dirtyctx_firstset = NULL; + } + + dn->dn_allocated_txg = tx->tx_txg; + dn->dn_id_flags = 0; + + dnode_setdirty(dn, tx); + dn->dn_next_indblkshift[tx->tx_txg & TXG_MASK] = ibs; + dn->dn_next_bonuslen[tx->tx_txg & TXG_MASK] = dn->dn_bonuslen; + dn->dn_next_bonustype[tx->tx_txg & TXG_MASK] = dn->dn_bonustype; + dn->dn_next_blksz[tx->tx_txg & TXG_MASK] = dn->dn_datablksz; +} + +void +dnode_reallocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + int nblkptr; + + ASSERT3U(blocksize, >=, SPA_MINBLOCKSIZE); + ASSERT3U(blocksize, <=, + spa_maxblocksize(dmu_objset_spa(dn->dn_objset))); + ASSERT0(blocksize % SPA_MINBLOCKSIZE); + ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT || dmu_tx_private_ok(tx)); + ASSERT(tx->tx_txg != 0); + ASSERT((bonustype == DMU_OT_NONE && bonuslen == 0) || + (bonustype != DMU_OT_NONE && bonuslen != 0) || + (bonustype == DMU_OT_SA && bonuslen == 0)); + ASSERT(DMU_OT_IS_VALID(bonustype)); + ASSERT3U(bonuslen, <=, DN_MAX_BONUSLEN); + + /* clean up any unreferenced dbufs */ + dnode_evict_dbufs(dn); + + dn->dn_id_flags = 0; + + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + dnode_setdirty(dn, tx); + if (dn->dn_datablksz != blocksize) { + /* change blocksize */ + ASSERT(dn->dn_maxblkid == 0 && + (BP_IS_HOLE(&dn->dn_phys->dn_blkptr[0]) || + dnode_block_freed(dn, 0))); + dnode_setdblksz(dn, blocksize); + dn->dn_next_blksz[tx->tx_txg&TXG_MASK] = blocksize; + } + if (dn->dn_bonuslen != bonuslen) + dn->dn_next_bonuslen[tx->tx_txg&TXG_MASK] = bonuslen; + + if (bonustype == DMU_OT_SA) /* Maximize bonus space for SA */ + nblkptr = 1; + else + nblkptr = 1 + ((DN_MAX_BONUSLEN - bonuslen) >> SPA_BLKPTRSHIFT); + if (dn->dn_bonustype != bonustype) + dn->dn_next_bonustype[tx->tx_txg&TXG_MASK] = bonustype; + if (dn->dn_nblkptr != nblkptr) + dn->dn_next_nblkptr[tx->tx_txg&TXG_MASK] = nblkptr; + if (dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR) { + dbuf_rm_spill(dn, tx); + dnode_rm_spill(dn, tx); + } + rw_exit(&dn->dn_struct_rwlock); + + /* change type */ + dn->dn_type = ot; + + /* change bonus size and type */ + mutex_enter(&dn->dn_mtx); + dn->dn_bonustype = bonustype; + dn->dn_bonuslen = bonuslen; + dn->dn_nblkptr = nblkptr; + dn->dn_checksum = ZIO_CHECKSUM_INHERIT; + dn->dn_compress = ZIO_COMPRESS_INHERIT; + ASSERT3U(dn->dn_nblkptr, <=, DN_MAX_NBLKPTR); + + /* fix up the bonus db_size */ + if (dn->dn_bonus) { + dn->dn_bonus->db.db_size = + DN_MAX_BONUSLEN - (dn->dn_nblkptr-1) * sizeof (blkptr_t); + ASSERT(dn->dn_bonuslen <= dn->dn_bonus->db.db_size); + } + + dn->dn_allocated_txg = tx->tx_txg; + mutex_exit(&dn->dn_mtx); +} + +#ifdef _KERNEL +#ifdef DNODE_STATS +static struct { + uint64_t dms_dnode_invalid; + uint64_t dms_dnode_recheck1; + uint64_t dms_dnode_recheck2; + uint64_t dms_dnode_special; + uint64_t dms_dnode_handle; + uint64_t dms_dnode_rwlock; + uint64_t dms_dnode_active; +} dnode_move_stats; +#endif /* DNODE_STATS */ + +static void +dnode_move_impl(dnode_t *odn, dnode_t *ndn) +{ + int i; + + ASSERT(!RW_LOCK_HELD(&odn->dn_struct_rwlock)); + ASSERT(MUTEX_NOT_HELD(&odn->dn_mtx)); + ASSERT(MUTEX_NOT_HELD(&odn->dn_dbufs_mtx)); + ASSERT(!RW_LOCK_HELD(&odn->dn_zfetch.zf_rwlock)); + + /* Copy fields. */ + ndn->dn_objset = odn->dn_objset; + ndn->dn_object = odn->dn_object; + ndn->dn_dbuf = odn->dn_dbuf; + ndn->dn_handle = odn->dn_handle; + ndn->dn_phys = odn->dn_phys; + ndn->dn_type = odn->dn_type; + ndn->dn_bonuslen = odn->dn_bonuslen; + ndn->dn_bonustype = odn->dn_bonustype; + ndn->dn_nblkptr = odn->dn_nblkptr; + ndn->dn_checksum = odn->dn_checksum; + ndn->dn_compress = odn->dn_compress; + ndn->dn_nlevels = odn->dn_nlevels; + ndn->dn_indblkshift = odn->dn_indblkshift; + ndn->dn_datablkshift = odn->dn_datablkshift; + ndn->dn_datablkszsec = odn->dn_datablkszsec; + ndn->dn_datablksz = odn->dn_datablksz; + ndn->dn_maxblkid = odn->dn_maxblkid; + bcopy(&odn->dn_next_nblkptr[0], &ndn->dn_next_nblkptr[0], + sizeof (odn->dn_next_nblkptr)); + bcopy(&odn->dn_next_nlevels[0], &ndn->dn_next_nlevels[0], + sizeof (odn->dn_next_nlevels)); + bcopy(&odn->dn_next_indblkshift[0], &ndn->dn_next_indblkshift[0], + sizeof (odn->dn_next_indblkshift)); + bcopy(&odn->dn_next_bonustype[0], &ndn->dn_next_bonustype[0], + sizeof (odn->dn_next_bonustype)); + bcopy(&odn->dn_rm_spillblk[0], &ndn->dn_rm_spillblk[0], + sizeof (odn->dn_rm_spillblk)); + bcopy(&odn->dn_next_bonuslen[0], &ndn->dn_next_bonuslen[0], + sizeof (odn->dn_next_bonuslen)); + bcopy(&odn->dn_next_blksz[0], &ndn->dn_next_blksz[0], + sizeof (odn->dn_next_blksz)); + for (i = 0; i < TXG_SIZE; i++) { + list_move_tail(&ndn->dn_dirty_records[i], + &odn->dn_dirty_records[i]); + } + bcopy(&odn->dn_free_ranges[0], &ndn->dn_free_ranges[0], + sizeof (odn->dn_free_ranges)); + ndn->dn_allocated_txg = odn->dn_allocated_txg; + ndn->dn_free_txg = odn->dn_free_txg; + ndn->dn_assigned_txg = odn->dn_assigned_txg; + ndn->dn_dirtyctx = odn->dn_dirtyctx; + ndn->dn_dirtyctx_firstset = odn->dn_dirtyctx_firstset; + ASSERT(refcount_count(&odn->dn_tx_holds) == 0); + refcount_transfer(&ndn->dn_holds, &odn->dn_holds); + ASSERT(avl_is_empty(&ndn->dn_dbufs)); + avl_swap(&ndn->dn_dbufs, &odn->dn_dbufs); + ndn->dn_dbufs_count = odn->dn_dbufs_count; + ndn->dn_unlisted_l0_blkid = odn->dn_unlisted_l0_blkid; + ndn->dn_bonus = odn->dn_bonus; + ndn->dn_have_spill = odn->dn_have_spill; + ndn->dn_zio = odn->dn_zio; + ndn->dn_oldused = odn->dn_oldused; + ndn->dn_oldflags = odn->dn_oldflags; + ndn->dn_olduid = odn->dn_olduid; + ndn->dn_oldgid = odn->dn_oldgid; + ndn->dn_newuid = odn->dn_newuid; + ndn->dn_newgid = odn->dn_newgid; + ndn->dn_id_flags = odn->dn_id_flags; + dmu_zfetch_init(&ndn->dn_zfetch, NULL); + list_move_tail(&ndn->dn_zfetch.zf_stream, &odn->dn_zfetch.zf_stream); + ndn->dn_zfetch.zf_dnode = odn->dn_zfetch.zf_dnode; + ndn->dn_zfetch.zf_stream_cnt = odn->dn_zfetch.zf_stream_cnt; + ndn->dn_zfetch.zf_alloc_fail = odn->dn_zfetch.zf_alloc_fail; + + /* + * Update back pointers. Updating the handle fixes the back pointer of + * every descendant dbuf as well as the bonus dbuf. + */ + ASSERT(ndn->dn_handle->dnh_dnode == odn); + ndn->dn_handle->dnh_dnode = ndn; + if (ndn->dn_zfetch.zf_dnode == odn) { + ndn->dn_zfetch.zf_dnode = ndn; + } + + /* + * Invalidate the original dnode by clearing all of its back pointers. + */ + odn->dn_dbuf = NULL; + odn->dn_handle = NULL; + avl_create(&odn->dn_dbufs, dbuf_compare, sizeof (dmu_buf_impl_t), + offsetof(dmu_buf_impl_t, db_link)); + odn->dn_dbufs_count = 0; + odn->dn_unlisted_l0_blkid = 0; + odn->dn_bonus = NULL; + odn->dn_zfetch.zf_dnode = NULL; + + /* + * Set the low bit of the objset pointer to ensure that dnode_move() + * recognizes the dnode as invalid in any subsequent callback. + */ + POINTER_INVALIDATE(&odn->dn_objset); + + /* + * Satisfy the destructor. + */ + for (i = 0; i < TXG_SIZE; i++) { + list_create(&odn->dn_dirty_records[i], + sizeof (dbuf_dirty_record_t), + offsetof(dbuf_dirty_record_t, dr_dirty_node)); + odn->dn_free_ranges[i] = NULL; + odn->dn_next_nlevels[i] = 0; + odn->dn_next_indblkshift[i] = 0; + odn->dn_next_bonustype[i] = 0; + odn->dn_rm_spillblk[i] = 0; + odn->dn_next_bonuslen[i] = 0; + odn->dn_next_blksz[i] = 0; + } + odn->dn_allocated_txg = 0; + odn->dn_free_txg = 0; + odn->dn_assigned_txg = 0; + odn->dn_dirtyctx = 0; + odn->dn_dirtyctx_firstset = NULL; + odn->dn_have_spill = B_FALSE; + odn->dn_zio = NULL; + odn->dn_oldused = 0; + odn->dn_oldflags = 0; + odn->dn_olduid = 0; + odn->dn_oldgid = 0; + odn->dn_newuid = 0; + odn->dn_newgid = 0; + odn->dn_id_flags = 0; + + /* + * Mark the dnode. + */ + ndn->dn_moved = 1; + odn->dn_moved = (uint8_t)-1; +} + +/*ARGSUSED*/ +static kmem_cbrc_t +dnode_move(void *buf, void *newbuf, size_t size, void *arg) +{ + dnode_t *odn = buf, *ndn = newbuf; + objset_t *os; + int64_t refcount; + uint32_t dbufs; + + /* + * The dnode is on the objset's list of known dnodes if the objset + * pointer is valid. We set the low bit of the objset pointer when + * freeing the dnode to invalidate it, and the memory patterns written + * by kmem (baddcafe and deadbeef) set at least one of the two low bits. + * A newly created dnode sets the objset pointer last of all to indicate + * that the dnode is known and in a valid state to be moved by this + * function. + */ + os = odn->dn_objset; + if (!POINTER_IS_VALID(os)) { + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_invalid); + return (KMEM_CBRC_DONT_KNOW); + } + + /* + * Ensure that the objset does not go away during the move. + */ + rw_enter(&os_lock, RW_WRITER); + if (os != odn->dn_objset) { + rw_exit(&os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_recheck1); + return (KMEM_CBRC_DONT_KNOW); + } + + /* + * If the dnode is still valid, then so is the objset. We know that no + * valid objset can be freed while we hold os_lock, so we can safely + * ensure that the objset remains in use. + */ + mutex_enter(&os->os_lock); + + /* + * Recheck the objset pointer in case the dnode was removed just before + * acquiring the lock. + */ + if (os != odn->dn_objset) { + mutex_exit(&os->os_lock); + rw_exit(&os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_recheck2); + return (KMEM_CBRC_DONT_KNOW); + } + + /* + * At this point we know that as long as we hold os->os_lock, the dnode + * cannot be freed and fields within the dnode can be safely accessed. + * The objset listing this dnode cannot go away as long as this dnode is + * on its list. + */ + rw_exit(&os_lock); + if (DMU_OBJECT_IS_SPECIAL(odn->dn_object)) { + mutex_exit(&os->os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_special); + return (KMEM_CBRC_NO); + } + ASSERT(odn->dn_dbuf != NULL); /* only "special" dnodes have no parent */ + + /* + * Lock the dnode handle to prevent the dnode from obtaining any new + * holds. This also prevents the descendant dbufs and the bonus dbuf + * from accessing the dnode, so that we can discount their holds. The + * handle is safe to access because we know that while the dnode cannot + * go away, neither can its handle. Once we hold dnh_zrlock, we can + * safely move any dnode referenced only by dbufs. + */ + if (!zrl_tryenter(&odn->dn_handle->dnh_zrlock)) { + mutex_exit(&os->os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_handle); + return (KMEM_CBRC_LATER); + } + + /* + * Ensure a consistent view of the dnode's holds and the dnode's dbufs. + * We need to guarantee that there is a hold for every dbuf in order to + * determine whether the dnode is actively referenced. Falsely matching + * a dbuf to an active hold would lead to an unsafe move. It's possible + * that a thread already having an active dnode hold is about to add a + * dbuf, and we can't compare hold and dbuf counts while the add is in + * progress. + */ + if (!rw_tryenter(&odn->dn_struct_rwlock, RW_WRITER)) { + zrl_exit(&odn->dn_handle->dnh_zrlock); + mutex_exit(&os->os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_rwlock); + return (KMEM_CBRC_LATER); + } + + /* + * A dbuf may be removed (evicted) without an active dnode hold. In that + * case, the dbuf count is decremented under the handle lock before the + * dbuf's hold is released. This order ensures that if we count the hold + * after the dbuf is removed but before its hold is released, we will + * treat the unmatched hold as active and exit safely. If we count the + * hold before the dbuf is removed, the hold is discounted, and the + * removal is blocked until the move completes. + */ + refcount = refcount_count(&odn->dn_holds); + ASSERT(refcount >= 0); + dbufs = odn->dn_dbufs_count; + + /* We can't have more dbufs than dnode holds. */ + ASSERT3U(dbufs, <=, refcount); + DTRACE_PROBE3(dnode__move, dnode_t *, odn, int64_t, refcount, + uint32_t, dbufs); + + if (refcount > dbufs) { + rw_exit(&odn->dn_struct_rwlock); + zrl_exit(&odn->dn_handle->dnh_zrlock); + mutex_exit(&os->os_lock); + DNODE_STAT_ADD(dnode_move_stats.dms_dnode_active); + return (KMEM_CBRC_LATER); + } + + rw_exit(&odn->dn_struct_rwlock); + + /* + * At this point we know that anyone with a hold on the dnode is not + * actively referencing it. The dnode is known and in a valid state to + * move. We're holding the locks needed to execute the critical section. + */ + dnode_move_impl(odn, ndn); + + list_link_replace(&odn->dn_link, &ndn->dn_link); + /* If the dnode was safe to move, the refcount cannot have changed. */ + ASSERT(refcount == refcount_count(&ndn->dn_holds)); + ASSERT(dbufs == ndn->dn_dbufs_count); + zrl_exit(&ndn->dn_handle->dnh_zrlock); /* handle has moved */ + mutex_exit(&os->os_lock); + + return (KMEM_CBRC_YES); +} +#endif /* _KERNEL */ + +void +dnode_special_close(dnode_handle_t *dnh) +{ + dnode_t *dn = dnh->dnh_dnode; + + /* + * Wait for final references to the dnode to clear. This can + * only happen if the arc is asyncronously evicting state that + * has a hold on this dnode while we are trying to evict this + * dnode. + */ + while (refcount_count(&dn->dn_holds) > 0) + delay(1); + ASSERT(dn->dn_dbuf == NULL || + dmu_buf_get_user(&dn->dn_dbuf->db) == NULL); + zrl_add(&dnh->dnh_zrlock); + dnode_destroy(dn); /* implicit zrl_remove() */ + zrl_destroy(&dnh->dnh_zrlock); + dnh->dnh_dnode = NULL; +} + +void +dnode_special_open(objset_t *os, dnode_phys_t *dnp, uint64_t object, + dnode_handle_t *dnh) +{ + dnode_t *dn; + + dn = dnode_create(os, dnp, NULL, object, dnh); + zrl_init(&dnh->dnh_zrlock); + DNODE_VERIFY(dn); +} + +static void +dnode_buf_pageout(void *dbu) +{ + dnode_children_t *children_dnodes = dbu; + int i; + + for (i = 0; i < children_dnodes->dnc_count; i++) { + dnode_handle_t *dnh = &children_dnodes->dnc_children[i]; + dnode_t *dn; + + /* + * The dnode handle lock guards against the dnode moving to + * another valid address, so there is no need here to guard + * against changes to or from NULL. + */ + if (dnh->dnh_dnode == NULL) { + zrl_destroy(&dnh->dnh_zrlock); + continue; + } + + zrl_add(&dnh->dnh_zrlock); + dn = dnh->dnh_dnode; + /* + * If there are holds on this dnode, then there should + * be holds on the dnode's containing dbuf as well; thus + * it wouldn't be eligible for eviction and this function + * would not have been called. + */ + ASSERT(refcount_is_zero(&dn->dn_holds)); + ASSERT(refcount_is_zero(&dn->dn_tx_holds)); + + dnode_destroy(dn); /* implicit zrl_remove() */ + zrl_destroy(&dnh->dnh_zrlock); + dnh->dnh_dnode = NULL; + } + kmem_free(children_dnodes, sizeof (dnode_children_t) + + children_dnodes->dnc_count * sizeof (dnode_handle_t)); +} + +/* + * errors: + * EINVAL - invalid object number. + * EIO - i/o error. + * succeeds even for free dnodes. + */ +int +dnode_hold_impl(objset_t *os, uint64_t object, int flag, + void *tag, dnode_t **dnp) +{ + int epb, idx, err; + int drop_struct_lock = FALSE; + int type; + uint64_t blk; + dnode_t *mdn, *dn; + dmu_buf_impl_t *db; + dnode_children_t *children_dnodes; + dnode_handle_t *dnh; + + /* + * If you are holding the spa config lock as writer, you shouldn't + * be asking the DMU to do *anything* unless it's the root pool + * which may require us to read from the root filesystem while + * holding some (not all) of the locks as writer. + */ + ASSERT(spa_config_held(os->os_spa, SCL_ALL, RW_WRITER) == 0 || + (spa_is_root(os->os_spa) && + spa_config_held(os->os_spa, SCL_STATE, RW_WRITER))); + + if (object == DMU_USERUSED_OBJECT || object == DMU_GROUPUSED_OBJECT) { + dn = (object == DMU_USERUSED_OBJECT) ? + DMU_USERUSED_DNODE(os) : DMU_GROUPUSED_DNODE(os); + if (dn == NULL) + return (SET_ERROR(ENOENT)); + type = dn->dn_type; + if ((flag & DNODE_MUST_BE_ALLOCATED) && type == DMU_OT_NONE) + return (SET_ERROR(ENOENT)); + if ((flag & DNODE_MUST_BE_FREE) && type != DMU_OT_NONE) + return (SET_ERROR(EEXIST)); + DNODE_VERIFY(dn); + (void) refcount_add(&dn->dn_holds, tag); + *dnp = dn; + return (0); + } + + if (object == 0 || object >= DN_MAX_OBJECT) + return (SET_ERROR(EINVAL)); + + mdn = DMU_META_DNODE(os); + ASSERT(mdn->dn_object == DMU_META_DNODE_OBJECT); + + DNODE_VERIFY(mdn); + + if (!RW_WRITE_HELD(&mdn->dn_struct_rwlock)) { + rw_enter(&mdn->dn_struct_rwlock, RW_READER); + drop_struct_lock = TRUE; + } + + blk = dbuf_whichblock(mdn, object * sizeof (dnode_phys_t)); + + db = dbuf_hold(mdn, blk, FTAG); + if (drop_struct_lock) + rw_exit(&mdn->dn_struct_rwlock); + if (db == NULL) + return (SET_ERROR(EIO)); + err = dbuf_read(db, NULL, DB_RF_CANFAIL); + if (err) { + dbuf_rele(db, FTAG); + return (err); + } + + ASSERT3U(db->db.db_size, >=, 1<db.db_size >> DNODE_SHIFT; + + idx = object & (epb-1); + + ASSERT(DB_DNODE(db)->dn_type == DMU_OT_DNODE); + children_dnodes = dmu_buf_get_user(&db->db); + if (children_dnodes == NULL) { + int i; + dnode_children_t *winner; + children_dnodes = kmem_zalloc(sizeof (dnode_children_t) + + epb * sizeof (dnode_handle_t), KM_SLEEP); + children_dnodes->dnc_count = epb; + dnh = &children_dnodes->dnc_children[0]; + for (i = 0; i < epb; i++) { + zrl_init(&dnh[i].dnh_zrlock); + } + dmu_buf_init_user(&children_dnodes->dnc_dbu, + dnode_buf_pageout, NULL); + winner = dmu_buf_set_user(&db->db, &children_dnodes->dnc_dbu); + if (winner != NULL) { + + for (i = 0; i < epb; i++) { + zrl_destroy(&dnh[i].dnh_zrlock); + } + + kmem_free(children_dnodes, sizeof (dnode_children_t) + + epb * sizeof (dnode_handle_t)); + children_dnodes = winner; + } + } + ASSERT(children_dnodes->dnc_count == epb); + + dnh = &children_dnodes->dnc_children[idx]; + zrl_add(&dnh->dnh_zrlock); + dn = dnh->dnh_dnode; + if (dn == NULL) { + dnode_phys_t *phys = (dnode_phys_t *)db->db.db_data+idx; + + dn = dnode_create(os, phys, db, object, dnh); + } + + mutex_enter(&dn->dn_mtx); + type = dn->dn_type; + if (dn->dn_free_txg || + ((flag & DNODE_MUST_BE_ALLOCATED) && type == DMU_OT_NONE) || + ((flag & DNODE_MUST_BE_FREE) && + (type != DMU_OT_NONE || !refcount_is_zero(&dn->dn_holds)))) { + mutex_exit(&dn->dn_mtx); + zrl_remove(&dnh->dnh_zrlock); + dbuf_rele(db, FTAG); + return (type == DMU_OT_NONE ? ENOENT : EEXIST); + } + if (refcount_add(&dn->dn_holds, tag) == 1) + dbuf_add_ref(db, dnh); + mutex_exit(&dn->dn_mtx); + + /* Now we can rely on the hold to prevent the dnode from moving. */ + zrl_remove(&dnh->dnh_zrlock); + + DNODE_VERIFY(dn); + ASSERT3P(dn->dn_dbuf, ==, db); + ASSERT3U(dn->dn_object, ==, object); + dbuf_rele(db, FTAG); + + *dnp = dn; + return (0); +} + +/* + * Return held dnode if the object is allocated, NULL if not. + */ +int +dnode_hold(objset_t *os, uint64_t object, void *tag, dnode_t **dnp) +{ + return (dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, tag, dnp)); +} + +/* + * Can only add a reference if there is already at least one + * reference on the dnode. Returns FALSE if unable to add a + * new reference. + */ +boolean_t +dnode_add_ref(dnode_t *dn, void *tag) +{ + mutex_enter(&dn->dn_mtx); + if (refcount_is_zero(&dn->dn_holds)) { + mutex_exit(&dn->dn_mtx); + return (FALSE); + } + VERIFY(1 < refcount_add(&dn->dn_holds, tag)); + mutex_exit(&dn->dn_mtx); + return (TRUE); +} + +void +dnode_rele(dnode_t *dn, void *tag) +{ + mutex_enter(&dn->dn_mtx); + dnode_rele_and_unlock(dn, tag); +} + +void +dnode_rele_and_unlock(dnode_t *dn, void *tag) +{ + uint64_t refs; + /* Get while the hold prevents the dnode from moving. */ + dmu_buf_impl_t *db = dn->dn_dbuf; + dnode_handle_t *dnh = dn->dn_handle; + + refs = refcount_remove(&dn->dn_holds, tag); + mutex_exit(&dn->dn_mtx); + + /* + * It's unsafe to release the last hold on a dnode by dnode_rele() or + * indirectly by dbuf_rele() while relying on the dnode handle to + * prevent the dnode from moving, since releasing the last hold could + * result in the dnode's parent dbuf evicting its dnode handles. For + * that reason anyone calling dnode_rele() or dbuf_rele() without some + * other direct or indirect hold on the dnode must first drop the dnode + * handle. + */ + ASSERT(refs > 0 || dnh->dnh_zrlock.zr_owner != curthread); + + /* NOTE: the DNODE_DNODE does not have a dn_dbuf */ + if (refs == 0 && db != NULL) { + /* + * Another thread could add a hold to the dnode handle in + * dnode_hold_impl() while holding the parent dbuf. Since the + * hold on the parent dbuf prevents the handle from being + * destroyed, the hold on the handle is OK. We can't yet assert + * that the handle has zero references, but that will be + * asserted anyway when the handle gets destroyed. + */ + dbuf_rele(db, dnh); + } +} + +void +dnode_setdirty(dnode_t *dn, dmu_tx_t *tx) +{ + objset_t *os = dn->dn_objset; + uint64_t txg = tx->tx_txg; + + if (DMU_OBJECT_IS_SPECIAL(dn->dn_object)) { + dsl_dataset_dirty(os->os_dsl_dataset, tx); + return; + } + + DNODE_VERIFY(dn); + +#ifdef ZFS_DEBUG + mutex_enter(&dn->dn_mtx); + ASSERT(dn->dn_phys->dn_type || dn->dn_allocated_txg); + ASSERT(dn->dn_free_txg == 0 || dn->dn_free_txg >= txg); + mutex_exit(&dn->dn_mtx); +#endif + + /* + * Determine old uid/gid when necessary + */ + dmu_objset_userquota_get_ids(dn, B_TRUE, tx); + + mutex_enter(&os->os_lock); + + /* + * If we are already marked dirty, we're done. + */ + if (list_link_active(&dn->dn_dirty_link[txg & TXG_MASK])) { + mutex_exit(&os->os_lock); + return; + } + + ASSERT(!refcount_is_zero(&dn->dn_holds) || + !avl_is_empty(&dn->dn_dbufs)); + ASSERT(dn->dn_datablksz != 0); + ASSERT0(dn->dn_next_bonuslen[txg&TXG_MASK]); + ASSERT0(dn->dn_next_blksz[txg&TXG_MASK]); + ASSERT0(dn->dn_next_bonustype[txg&TXG_MASK]); + + dprintf_ds(os->os_dsl_dataset, "obj=%llu txg=%llu\n", + dn->dn_object, txg); + + if (dn->dn_free_txg > 0 && dn->dn_free_txg <= txg) { + list_insert_tail(&os->os_free_dnodes[txg&TXG_MASK], dn); + } else { + list_insert_tail(&os->os_dirty_dnodes[txg&TXG_MASK], dn); + } + + mutex_exit(&os->os_lock); + + /* + * The dnode maintains a hold on its containing dbuf as + * long as there are holds on it. Each instantiated child + * dbuf maintains a hold on the dnode. When the last child + * drops its hold, the dnode will drop its hold on the + * containing dbuf. We add a "dirty hold" here so that the + * dnode will hang around after we finish processing its + * children. + */ + VERIFY(dnode_add_ref(dn, (void *)(uintptr_t)tx->tx_txg)); + + (void) dbuf_dirty(dn->dn_dbuf, tx); + + dsl_dataset_dirty(os->os_dsl_dataset, tx); +} + +void +dnode_free(dnode_t *dn, dmu_tx_t *tx) +{ + int txgoff = tx->tx_txg & TXG_MASK; + + dprintf("dn=%p txg=%llu\n", dn, tx->tx_txg); + + /* we should be the only holder... hopefully */ + /* ASSERT3U(refcount_count(&dn->dn_holds), ==, 1); */ + + mutex_enter(&dn->dn_mtx); + if (dn->dn_type == DMU_OT_NONE || dn->dn_free_txg) { + mutex_exit(&dn->dn_mtx); + return; + } + dn->dn_free_txg = tx->tx_txg; + mutex_exit(&dn->dn_mtx); + + /* + * If the dnode is already dirty, it needs to be moved from + * the dirty list to the free list. + */ + mutex_enter(&dn->dn_objset->os_lock); + if (list_link_active(&dn->dn_dirty_link[txgoff])) { + list_remove(&dn->dn_objset->os_dirty_dnodes[txgoff], dn); + list_insert_tail(&dn->dn_objset->os_free_dnodes[txgoff], dn); + mutex_exit(&dn->dn_objset->os_lock); + } else { + mutex_exit(&dn->dn_objset->os_lock); + dnode_setdirty(dn, tx); + } +} + +/* + * Try to change the block size for the indicated dnode. This can only + * succeed if there are no blocks allocated or dirty beyond first block + */ +int +dnode_set_blksz(dnode_t *dn, uint64_t size, int ibs, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db; + int err; + + ASSERT3U(size, <=, spa_maxblocksize(dmu_objset_spa(dn->dn_objset))); + if (size == 0) + size = SPA_MINBLOCKSIZE; + else + size = P2ROUNDUP(size, SPA_MINBLOCKSIZE); + + if (ibs == dn->dn_indblkshift) + ibs = 0; + + if (size >> SPA_MINBLOCKSHIFT == dn->dn_datablkszsec && ibs == 0) + return (0); + + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + + /* Check for any allocated blocks beyond the first */ + if (dn->dn_maxblkid != 0) + goto fail; + + mutex_enter(&dn->dn_dbufs_mtx); + for (db = avl_first(&dn->dn_dbufs); db != NULL; + db = AVL_NEXT(&dn->dn_dbufs, db)) { + if (db->db_blkid != 0 && db->db_blkid != DMU_BONUS_BLKID && + db->db_blkid != DMU_SPILL_BLKID) { + mutex_exit(&dn->dn_dbufs_mtx); + goto fail; + } + } + mutex_exit(&dn->dn_dbufs_mtx); + + if (ibs && dn->dn_nlevels != 1) + goto fail; + + /* resize the old block */ + err = dbuf_hold_impl(dn, 0, 0, TRUE, FTAG, &db); + if (err == 0) + dbuf_new_size(db, size, tx); + else if (err != ENOENT) + goto fail; + + dnode_setdblksz(dn, size); + dnode_setdirty(dn, tx); + dn->dn_next_blksz[tx->tx_txg&TXG_MASK] = size; + if (ibs) { + dn->dn_indblkshift = ibs; + dn->dn_next_indblkshift[tx->tx_txg&TXG_MASK] = ibs; + } + /* rele after we have fixed the blocksize in the dnode */ + if (db) + dbuf_rele(db, FTAG); + + rw_exit(&dn->dn_struct_rwlock); + return (0); + +fail: + rw_exit(&dn->dn_struct_rwlock); + return (SET_ERROR(ENOTSUP)); +} + +/* read-holding callers must not rely on the lock being continuously held */ +void +dnode_new_blkid(dnode_t *dn, uint64_t blkid, dmu_tx_t *tx, boolean_t have_read) +{ + uint64_t txgoff = tx->tx_txg & TXG_MASK; + int epbs, new_nlevels; + uint64_t sz; + + ASSERT(blkid != DMU_BONUS_BLKID); + + ASSERT(have_read ? + RW_READ_HELD(&dn->dn_struct_rwlock) : + RW_WRITE_HELD(&dn->dn_struct_rwlock)); + + /* + * if we have a read-lock, check to see if we need to do any work + * before upgrading to a write-lock. + */ + if (have_read) { + if (blkid <= dn->dn_maxblkid) + return; + + if (!rw_tryupgrade(&dn->dn_struct_rwlock)) { + rw_exit(&dn->dn_struct_rwlock); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + } + } + + if (blkid <= dn->dn_maxblkid) + goto out; + + dn->dn_maxblkid = blkid; + + /* + * Compute the number of levels necessary to support the new maxblkid. + */ + new_nlevels = 1; + epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + for (sz = dn->dn_nblkptr; + sz <= blkid && sz >= dn->dn_nblkptr; sz <<= epbs) + new_nlevels++; + + if (new_nlevels > dn->dn_nlevels) { + int old_nlevels = dn->dn_nlevels; + dmu_buf_impl_t *db; + list_t *list; + dbuf_dirty_record_t *new, *dr, *dr_next; + + dn->dn_nlevels = new_nlevels; + + ASSERT3U(new_nlevels, >, dn->dn_next_nlevels[txgoff]); + dn->dn_next_nlevels[txgoff] = new_nlevels; + + /* dirty the left indirects */ + db = dbuf_hold_level(dn, old_nlevels, 0, FTAG); + ASSERT(db != NULL); + new = dbuf_dirty(db, tx); + dbuf_rele(db, FTAG); + + /* transfer the dirty records to the new indirect */ + mutex_enter(&dn->dn_mtx); + mutex_enter(&new->dt.di.dr_mtx); + list = &dn->dn_dirty_records[txgoff]; + for (dr = list_head(list); dr; dr = dr_next) { + dr_next = list_next(&dn->dn_dirty_records[txgoff], dr); + if (dr->dr_dbuf->db_level != new_nlevels-1 && + dr->dr_dbuf->db_blkid != DMU_BONUS_BLKID && + dr->dr_dbuf->db_blkid != DMU_SPILL_BLKID) { + ASSERT(dr->dr_dbuf->db_level == old_nlevels-1); + list_remove(&dn->dn_dirty_records[txgoff], dr); + list_insert_tail(&new->dt.di.dr_children, dr); + dr->dr_parent = new; + } + } + mutex_exit(&new->dt.di.dr_mtx); + mutex_exit(&dn->dn_mtx); + } + +out: + if (have_read) + rw_downgrade(&dn->dn_struct_rwlock); +} + +static void +dnode_dirty_l1(dnode_t *dn, uint64_t l1blkid, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db = dbuf_hold_level(dn, 1, l1blkid, FTAG); + if (db != NULL) { + dmu_buf_will_dirty(&db->db, tx); + dbuf_rele(db, FTAG); + } +} + +void +dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db; + uint64_t blkoff, blkid, nblks; + int blksz, blkshift, head, tail; + int trunc = FALSE; + int epbs; + + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + blksz = dn->dn_datablksz; + blkshift = dn->dn_datablkshift; + epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; + + if (len == DMU_OBJECT_END) { + len = UINT64_MAX - off; + trunc = TRUE; + } + + /* + * First, block align the region to free: + */ + if (ISP2(blksz)) { + head = P2NPHASE(off, blksz); + blkoff = P2PHASE(off, blksz); + if ((off >> blkshift) > dn->dn_maxblkid) + goto out; + } else { + ASSERT(dn->dn_maxblkid == 0); + if (off == 0 && len >= blksz) { + /* + * Freeing the whole block; fast-track this request. + * Note that we won't dirty any indirect blocks, + * which is fine because we will be freeing the entire + * file and thus all indirect blocks will be freed + * by free_children(). + */ + blkid = 0; + nblks = 1; + goto done; + } else if (off >= blksz) { + /* Freeing past end-of-data */ + goto out; + } else { + /* Freeing part of the block. */ + head = blksz - off; + ASSERT3U(head, >, 0); + } + blkoff = off; + } + /* zero out any partial block data at the start of the range */ + if (head) { + ASSERT3U(blkoff + head, ==, blksz); + if (len < head) + head = len; + if (dbuf_hold_impl(dn, 0, dbuf_whichblock(dn, off), TRUE, + FTAG, &db) == 0) { + caddr_t data; + + /* don't dirty if it isn't on disk and isn't dirty */ + if (db->db_last_dirty || + (db->db_blkptr && !BP_IS_HOLE(db->db_blkptr))) { + rw_exit(&dn->dn_struct_rwlock); + dmu_buf_will_dirty(&db->db, tx); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + data = db->db.db_data; + bzero(data + blkoff, head); + } + dbuf_rele(db, FTAG); + } + off += head; + len -= head; + } + + /* If the range was less than one block, we're done */ + if (len == 0) + goto out; + + /* If the remaining range is past end of file, we're done */ + if ((off >> blkshift) > dn->dn_maxblkid) + goto out; + + ASSERT(ISP2(blksz)); + if (trunc) + tail = 0; + else + tail = P2PHASE(len, blksz); + + ASSERT0(P2PHASE(off, blksz)); + /* zero out any partial block data at the end of the range */ + if (tail) { + if (len < tail) + tail = len; + if (dbuf_hold_impl(dn, 0, dbuf_whichblock(dn, off+len), + TRUE, FTAG, &db) == 0) { + /* don't dirty if not on disk and not dirty */ + if (db->db_last_dirty || + (db->db_blkptr && !BP_IS_HOLE(db->db_blkptr))) { + rw_exit(&dn->dn_struct_rwlock); + dmu_buf_will_dirty(&db->db, tx); + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + bzero(db->db.db_data, tail); + } + dbuf_rele(db, FTAG); + } + len -= tail; + } + + /* If the range did not include a full block, we are done */ + if (len == 0) + goto out; + + ASSERT(IS_P2ALIGNED(off, blksz)); + ASSERT(trunc || IS_P2ALIGNED(len, blksz)); + blkid = off >> blkshift; + nblks = len >> blkshift; + if (trunc) + nblks += 1; + + /* + * Dirty all the indirect blocks in this range. Note that only + * the first and last indirect blocks can actually be written + * (if they were partially freed) -- they must be dirtied, even if + * they do not exist on disk yet. The interior blocks will + * be freed by free_children(), so they will not actually be written. + * Even though these interior blocks will not be written, we + * dirty them for two reasons: + * + * - It ensures that the indirect blocks remain in memory until + * syncing context. (They have already been prefetched by + * dmu_tx_hold_free(), so we don't have to worry about reading + * them serially here.) + * + * - The dirty space accounting will put pressure on the txg sync + * mechanism to begin syncing, and to delay transactions if there + * is a large amount of freeing. Even though these indirect + * blocks will not be written, we could need to write the same + * amount of space if we copy the freed BPs into deadlists. + */ + if (dn->dn_nlevels > 1) { + uint64_t first, last, i, ibyte; + int shift, err; + + first = blkid >> epbs; + dnode_dirty_l1(dn, first, tx); + if (trunc) + last = dn->dn_maxblkid >> epbs; + else + last = (blkid + nblks - 1) >> epbs; + if (last != first) + dnode_dirty_l1(dn, last, tx); + + shift = dn->dn_datablkshift + dn->dn_indblkshift - + SPA_BLKPTRSHIFT; + for (i = first + 1; i < last; i++) { + /* + * Set i to the blockid of the next non-hole + * level-1 indirect block at or after i. Note + * that dnode_next_offset() operates in terms of + * level-0-equivalent bytes. + */ + ibyte = i << shift; + err = dnode_next_offset(dn, DNODE_FIND_HAVELOCK, + &ibyte, 2, 1, 0); + i = ibyte >> shift; + if (i >= last) + break; + + /* + * Normally we should not see an error, either + * from dnode_next_offset() or dbuf_hold_level() + * (except for ESRCH from dnode_next_offset). + * If there is an i/o error, then when we read + * this block in syncing context, it will use + * ZIO_FLAG_MUSTSUCCEED, and thus hang/panic according + * to the "failmode" property. dnode_next_offset() + * doesn't have a flag to indicate MUSTSUCCEED. + */ + if (err != 0) + break; + + dnode_dirty_l1(dn, i, tx); + } + } + +done: + /* + * Add this range to the dnode range list. + * We will finish up this free operation in the syncing phase. + */ + mutex_enter(&dn->dn_mtx); + { + int txgoff = tx->tx_txg & TXG_MASK; + if (dn->dn_free_ranges[txgoff] == NULL) { + dn->dn_free_ranges[txgoff] = + range_tree_create(NULL, NULL, &dn->dn_mtx); + } + range_tree_clear(dn->dn_free_ranges[txgoff], blkid, nblks); + range_tree_add(dn->dn_free_ranges[txgoff], blkid, nblks); + } + dprintf_dnode(dn, "blkid=%llu nblks=%llu txg=%llu\n", + blkid, nblks, tx->tx_txg); + mutex_exit(&dn->dn_mtx); + + dbuf_free_range(dn, blkid, blkid + nblks - 1, tx); + dnode_setdirty(dn, tx); +out: + + rw_exit(&dn->dn_struct_rwlock); +} + +static boolean_t +dnode_spill_freed(dnode_t *dn) +{ + int i; + + mutex_enter(&dn->dn_mtx); + for (i = 0; i < TXG_SIZE; i++) { + if (dn->dn_rm_spillblk[i] == DN_KILL_SPILLBLK) + break; + } + mutex_exit(&dn->dn_mtx); + return (i < TXG_SIZE); +} + +/* return TRUE if this blkid was freed in a recent txg, or FALSE if it wasn't */ +uint64_t +dnode_block_freed(dnode_t *dn, uint64_t blkid) +{ + void *dp = spa_get_dsl(dn->dn_objset->os_spa); + int i; + + if (blkid == DMU_BONUS_BLKID) + return (FALSE); + + /* + * If we're in the process of opening the pool, dp will not be + * set yet, but there shouldn't be anything dirty. + */ + if (dp == NULL) + return (FALSE); + + if (dn->dn_free_txg) + return (TRUE); + + if (blkid == DMU_SPILL_BLKID) + return (dnode_spill_freed(dn)); + + mutex_enter(&dn->dn_mtx); + for (i = 0; i < TXG_SIZE; i++) { + if (dn->dn_free_ranges[i] != NULL && + range_tree_contains(dn->dn_free_ranges[i], blkid, 1)) + break; + } + mutex_exit(&dn->dn_mtx); + return (i < TXG_SIZE); +} + +/* call from syncing context when we actually write/free space for this dnode */ +void +dnode_diduse_space(dnode_t *dn, int64_t delta) +{ + uint64_t space; + dprintf_dnode(dn, "dn=%p dnp=%p used=%llu delta=%lld\n", + dn, dn->dn_phys, + (u_longlong_t)dn->dn_phys->dn_used, + (longlong_t)delta); + + mutex_enter(&dn->dn_mtx); + space = DN_USED_BYTES(dn->dn_phys); + if (delta > 0) { + ASSERT3U(space + delta, >=, space); /* no overflow */ + } else { + ASSERT3U(space, >=, -delta); /* no underflow */ + } + space += delta; + if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_DNODE_BYTES) { + ASSERT((dn->dn_phys->dn_flags & DNODE_FLAG_USED_BYTES) == 0); + ASSERT0(P2PHASE(space, 1<dn_phys->dn_used = space >> DEV_BSHIFT; + } else { + dn->dn_phys->dn_used = space; + dn->dn_phys->dn_flags |= DNODE_FLAG_USED_BYTES; + } + mutex_exit(&dn->dn_mtx); +} + +/* + * Call when we think we're going to write/free space in open context to track + * the amount of memory in use by the currently open txg. + */ +void +dnode_willuse_space(dnode_t *dn, int64_t space, dmu_tx_t *tx) +{ + objset_t *os = dn->dn_objset; + dsl_dataset_t *ds = os->os_dsl_dataset; + int64_t aspace = spa_get_asize(os->os_spa, space); + + if (ds != NULL) { + dsl_dir_willuse_space(ds->ds_dir, aspace, tx); + dsl_pool_dirty_space(dmu_tx_pool(tx), space, tx); + } + + dmu_tx_willuse_space(tx, aspace); +} + +/* + * Scans a block at the indicated "level" looking for a hole or data, + * depending on 'flags'. + * + * If level > 0, then we are scanning an indirect block looking at its + * pointers. If level == 0, then we are looking at a block of dnodes. + * + * If we don't find what we are looking for in the block, we return ESRCH. + * Otherwise, return with *offset pointing to the beginning (if searching + * forwards) or end (if searching backwards) of the range covered by the + * block pointer we matched on (or dnode). + * + * The basic search algorithm used below by dnode_next_offset() is to + * use this function to search up the block tree (widen the search) until + * we find something (i.e., we don't return ESRCH) and then search back + * down the tree (narrow the search) until we reach our original search + * level. + */ +static int +dnode_next_offset_level(dnode_t *dn, int flags, uint64_t *offset, + int lvl, uint64_t blkfill, uint64_t txg) +{ + dmu_buf_impl_t *db = NULL; + void *data = NULL; + uint64_t epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; + uint64_t epb = 1ULL << epbs; + uint64_t minfill, maxfill; + boolean_t hole; + int i, inc, error, span; + + dprintf("probing object %llu offset %llx level %d of %u\n", + dn->dn_object, *offset, lvl, dn->dn_phys->dn_nlevels); + + hole = ((flags & DNODE_FIND_HOLE) != 0); + inc = (flags & DNODE_FIND_BACKWARDS) ? -1 : 1; + ASSERT(txg == 0 || !hole); + + if (lvl == dn->dn_phys->dn_nlevels) { + error = 0; + epb = dn->dn_phys->dn_nblkptr; + data = dn->dn_phys->dn_blkptr; + } else { + uint64_t blkid = dbuf_whichblock(dn, *offset) >> (epbs * lvl); + error = dbuf_hold_impl(dn, lvl, blkid, TRUE, FTAG, &db); + if (error) { + if (error != ENOENT) + return (error); + if (hole) + return (0); + /* + * This can only happen when we are searching up + * the block tree for data. We don't really need to + * adjust the offset, as we will just end up looking + * at the pointer to this block in its parent, and its + * going to be unallocated, so we will skip over it. + */ + return (SET_ERROR(ESRCH)); + } + error = dbuf_read(db, NULL, DB_RF_CANFAIL | DB_RF_HAVESTRUCT); + if (error) { + dbuf_rele(db, FTAG); + return (error); + } + data = db->db.db_data; + } + + + if (db != NULL && txg != 0 && (db->db_blkptr == NULL || + db->db_blkptr->blk_birth <= txg || + BP_IS_HOLE(db->db_blkptr))) { + /* + * This can only happen when we are searching up the tree + * and these conditions mean that we need to keep climbing. + */ + error = SET_ERROR(ESRCH); + } else if (lvl == 0) { + dnode_phys_t *dnp = data; + span = DNODE_SHIFT; + ASSERT(dn->dn_type == DMU_OT_DNODE); + + for (i = (*offset >> span) & (blkfill - 1); + i >= 0 && i < blkfill; i += inc) { + if ((dnp[i].dn_type == DMU_OT_NONE) == hole) + break; + *offset += (1ULL << span) * inc; + } + if (i < 0 || i == blkfill) + error = SET_ERROR(ESRCH); + } else { + blkptr_t *bp = data; + uint64_t start = *offset; + span = (lvl - 1) * epbs + dn->dn_datablkshift; + minfill = 0; + maxfill = blkfill << ((lvl - 1) * epbs); + + if (hole) + maxfill--; + else + minfill++; + + *offset = *offset >> span; + for (i = BF64_GET(*offset, 0, epbs); + i >= 0 && i < epb; i += inc) { + if (BP_GET_FILL(&bp[i]) >= minfill && + BP_GET_FILL(&bp[i]) <= maxfill && + (hole || bp[i].blk_birth > txg)) + break; + if (inc > 0 || *offset > 0) + *offset += inc; + } + *offset = *offset << span; + if (inc < 0) { + /* traversing backwards; position offset at the end */ + ASSERT3U(*offset, <=, start); + *offset = MIN(*offset + (1ULL << span) - 1, start); + } else if (*offset < start) { + *offset = start; + } + if (i < 0 || i >= epb) + error = SET_ERROR(ESRCH); + } + + if (db) + dbuf_rele(db, FTAG); + + return (error); +} + +/* + * Find the next hole, data, or sparse region at or after *offset. + * The value 'blkfill' tells us how many items we expect to find + * in an L0 data block; this value is 1 for normal objects, + * DNODES_PER_BLOCK for the meta dnode, and some fraction of + * DNODES_PER_BLOCK when searching for sparse regions thereof. + * + * Examples: + * + * dnode_next_offset(dn, flags, offset, 1, 1, 0); + * Finds the next/previous hole/data in a file. + * Used in dmu_offset_next(). + * + * dnode_next_offset(mdn, flags, offset, 0, DNODES_PER_BLOCK, txg); + * Finds the next free/allocated dnode an objset's meta-dnode. + * Only finds objects that have new contents since txg (ie. + * bonus buffer changes and content removal are ignored). + * Used in dmu_object_next(). + * + * dnode_next_offset(mdn, DNODE_FIND_HOLE, offset, 2, DNODES_PER_BLOCK >> 2, 0); + * Finds the next L2 meta-dnode bp that's at most 1/4 full. + * Used in dmu_object_alloc(). + */ +int +dnode_next_offset(dnode_t *dn, int flags, uint64_t *offset, + int minlvl, uint64_t blkfill, uint64_t txg) +{ + uint64_t initial_offset = *offset; + int lvl, maxlvl; + int error = 0; + + if (!(flags & DNODE_FIND_HAVELOCK)) + rw_enter(&dn->dn_struct_rwlock, RW_READER); + + if (dn->dn_phys->dn_nlevels == 0) { + error = SET_ERROR(ESRCH); + goto out; + } + + if (dn->dn_datablkshift == 0) { + if (*offset < dn->dn_datablksz) { + if (flags & DNODE_FIND_HOLE) + *offset = dn->dn_datablksz; + } else { + error = SET_ERROR(ESRCH); + } + goto out; + } + + maxlvl = dn->dn_phys->dn_nlevels; + + for (lvl = minlvl; lvl <= maxlvl; lvl++) { + error = dnode_next_offset_level(dn, + flags, offset, lvl, blkfill, txg); + if (error != ESRCH) + break; + } + + while (error == 0 && --lvl >= minlvl) { + error = dnode_next_offset_level(dn, + flags, offset, lvl, blkfill, txg); + } + + /* + * There's always a "virtual hole" at the end of the object, even + * if all BP's which physically exist are non-holes. + */ + if ((flags & DNODE_FIND_HOLE) && error == ESRCH && txg == 0 && + minlvl == 1 && blkfill == 1 && !(flags & DNODE_FIND_BACKWARDS)) { + error = 0; + } + + if (error == 0 && (flags & DNODE_FIND_BACKWARDS ? + initial_offset < *offset : initial_offset > *offset)) + error = SET_ERROR(ESRCH); +out: + if (!(flags & DNODE_FIND_HAVELOCK)) + rw_exit(&dn->dn_struct_rwlock); + + return (error); +} --- linux-4.4.0.orig/zfs/module/zfs/dnode_sync.c +++ linux-4.4.0/zfs/module/zfs/dnode_sync.c @@ -0,0 +1,737 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void +dnode_increase_indirection(dnode_t *dn, dmu_tx_t *tx) +{ + dmu_buf_impl_t *db; + int txgoff = tx->tx_txg & TXG_MASK; + int nblkptr = dn->dn_phys->dn_nblkptr; + int old_toplvl = dn->dn_phys->dn_nlevels - 1; + int new_level = dn->dn_next_nlevels[txgoff]; + int i; + + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + + /* this dnode can't be paged out because it's dirty */ + ASSERT(dn->dn_phys->dn_type != DMU_OT_NONE); + ASSERT(RW_WRITE_HELD(&dn->dn_struct_rwlock)); + ASSERT(new_level > 1 && dn->dn_phys->dn_nlevels > 0); + + db = dbuf_hold_level(dn, dn->dn_phys->dn_nlevels, 0, FTAG); + ASSERT(db != NULL); + + dn->dn_phys->dn_nlevels = new_level; + dprintf("os=%p obj=%llu, increase to %d\n", dn->dn_objset, + dn->dn_object, dn->dn_phys->dn_nlevels); + + /* check for existing blkptrs in the dnode */ + for (i = 0; i < nblkptr; i++) + if (!BP_IS_HOLE(&dn->dn_phys->dn_blkptr[i])) + break; + if (i != nblkptr) { + /* transfer dnode's block pointers to new indirect block */ + (void) dbuf_read(db, NULL, DB_RF_MUST_SUCCEED|DB_RF_HAVESTRUCT); + ASSERT(db->db.db_data); + ASSERT(arc_released(db->db_buf)); + ASSERT3U(sizeof (blkptr_t) * nblkptr, <=, db->db.db_size); + bcopy(dn->dn_phys->dn_blkptr, db->db.db_data, + sizeof (blkptr_t) * nblkptr); + arc_buf_freeze(db->db_buf); + } + + /* set dbuf's parent pointers to new indirect buf */ + for (i = 0; i < nblkptr; i++) { + dmu_buf_impl_t *child = + dbuf_find(dn->dn_objset, dn->dn_object, old_toplvl, i); + + if (child == NULL) + continue; +#ifdef DEBUG + DB_DNODE_ENTER(child); + ASSERT3P(DB_DNODE(child), ==, dn); + DB_DNODE_EXIT(child); +#endif /* DEBUG */ + if (child->db_parent && child->db_parent != dn->dn_dbuf) { + ASSERT(child->db_parent->db_level == db->db_level); + ASSERT(child->db_blkptr != + &dn->dn_phys->dn_blkptr[child->db_blkid]); + mutex_exit(&child->db_mtx); + continue; + } + ASSERT(child->db_parent == NULL || + child->db_parent == dn->dn_dbuf); + + child->db_parent = db; + dbuf_add_ref(db, child); + if (db->db.db_data) + child->db_blkptr = (blkptr_t *)db->db.db_data + i; + else + child->db_blkptr = NULL; + dprintf_dbuf_bp(child, child->db_blkptr, + "changed db_blkptr to new indirect %s", ""); + + mutex_exit(&child->db_mtx); + } + + bzero(dn->dn_phys->dn_blkptr, sizeof (blkptr_t) * nblkptr); + + dbuf_rele(db, FTAG); + + rw_exit(&dn->dn_struct_rwlock); +} + +static void +free_blocks(dnode_t *dn, blkptr_t *bp, int num, dmu_tx_t *tx) +{ + dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; + uint64_t bytesfreed = 0; + int i; + + dprintf("ds=%p obj=%llx num=%d\n", ds, dn->dn_object, num); + + for (i = 0; i < num; i++, bp++) { + uint64_t lsize, lvl; + dmu_object_type_t type; + + if (BP_IS_HOLE(bp)) + continue; + + bytesfreed += dsl_dataset_block_kill(ds, bp, tx, B_FALSE); + ASSERT3U(bytesfreed, <=, DN_USED_BYTES(dn->dn_phys)); + + /* + * Save some useful information on the holes being + * punched, including logical size, type, and indirection + * level. Retaining birth time enables detection of when + * holes are punched for reducing the number of free + * records transmitted during a zfs send. + */ + + lsize = BP_GET_LSIZE(bp); + type = BP_GET_TYPE(bp); + lvl = BP_GET_LEVEL(bp); + + bzero(bp, sizeof (blkptr_t)); + + if (spa_feature_is_active(dn->dn_objset->os_spa, + SPA_FEATURE_HOLE_BIRTH)) { + BP_SET_LSIZE(bp, lsize); + BP_SET_TYPE(bp, type); + BP_SET_LEVEL(bp, lvl); + BP_SET_BIRTH(bp, dmu_tx_get_txg(tx), 0); + } + } + dnode_diduse_space(dn, -bytesfreed); +} + +#ifdef ZFS_DEBUG +static void +free_verify(dmu_buf_impl_t *db, uint64_t start, uint64_t end, dmu_tx_t *tx) +{ + int off, num; + int i, err, epbs; + uint64_t txg = tx->tx_txg; + dnode_t *dn; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; + off = start - (db->db_blkid * 1<=, 0); + ASSERT3U(num, >=, 0); + ASSERT3U(db->db_level, >, 0); + ASSERT3U(db->db.db_size, ==, 1 << dn->dn_phys->dn_indblkshift); + ASSERT3U(off+num, <=, db->db.db_size >> SPA_BLKPTRSHIFT); + ASSERT(db->db_blkptr != NULL); + + for (i = off; i < off+num; i++) { + uint64_t *buf; + dmu_buf_impl_t *child; + dbuf_dirty_record_t *dr; + int j; + + ASSERT(db->db_level == 1); + + rw_enter(&dn->dn_struct_rwlock, RW_READER); + err = dbuf_hold_impl(dn, db->db_level-1, + (db->db_blkid << epbs) + i, TRUE, FTAG, &child); + rw_exit(&dn->dn_struct_rwlock); + if (err == ENOENT) + continue; + ASSERT(err == 0); + ASSERT(child->db_level == 0); + dr = child->db_last_dirty; + while (dr && dr->dr_txg > txg) + dr = dr->dr_next; + ASSERT(dr == NULL || dr->dr_txg == txg); + + /* data_old better be zeroed */ + if (dr) { + buf = dr->dt.dl.dr_data->b_data; + for (j = 0; j < child->db.db_size >> 3; j++) { + if (buf[j] != 0) { + panic("freed data not zero: " + "child=%p i=%d off=%d num=%d\n", + (void *)child, i, off, num); + } + } + } + + /* + * db_data better be zeroed unless it's dirty in a + * future txg. + */ + mutex_enter(&child->db_mtx); + buf = child->db.db_data; + if (buf != NULL && child->db_state != DB_FILL && + child->db_last_dirty == NULL) { + for (j = 0; j < child->db.db_size >> 3; j++) { + if (buf[j] != 0) { + panic("freed data not zero: " + "child=%p i=%d off=%d num=%d\n", + (void *)child, i, off, num); + } + } + } + mutex_exit(&child->db_mtx); + + dbuf_rele(child, FTAG); + } + DB_DNODE_EXIT(db); +} +#endif + +static void +free_children(dmu_buf_impl_t *db, uint64_t blkid, uint64_t nblks, + dmu_tx_t *tx) +{ + dnode_t *dn; + blkptr_t *bp; + dmu_buf_impl_t *subdb; + uint64_t start, end, dbstart, dbend, i; + int epbs, shift; + + /* + * There is a small possibility that this block will not be cached: + * 1 - if level > 1 and there are no children with level <= 1 + * 2 - if this block was evicted since we read it from + * dmu_tx_hold_free(). + */ + if (db->db_state != DB_CACHED) + (void) dbuf_read(db, NULL, DB_RF_MUST_SUCCEED); + + dbuf_release_bp(db); + bp = db->db.db_data; + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; + shift = (db->db_level - 1) * epbs; + dbstart = db->db_blkid << epbs; + start = blkid >> shift; + if (dbstart < start) { + bp += start - dbstart; + } else { + start = dbstart; + } + dbend = ((db->db_blkid + 1) << epbs) - 1; + end = (blkid + nblks - 1) >> shift; + if (dbend <= end) + end = dbend; + + ASSERT3U(start, <=, end); + + if (db->db_level == 1) { + FREE_VERIFY(db, start, end, tx); + free_blocks(dn, bp, end-start+1, tx); + } else { + for (i = start; i <= end; i++, bp++) { + if (BP_IS_HOLE(bp)) + continue; + rw_enter(&dn->dn_struct_rwlock, RW_READER); + VERIFY0(dbuf_hold_impl(dn, db->db_level - 1, + i, B_TRUE, FTAG, &subdb)); + rw_exit(&dn->dn_struct_rwlock); + ASSERT3P(bp, ==, subdb->db_blkptr); + + free_children(subdb, blkid, nblks, tx); + dbuf_rele(subdb, FTAG); + } + } + + /* If this whole block is free, free ourself too. */ + for (i = 0, bp = db->db.db_data; i < 1 << epbs; i++, bp++) { + if (!BP_IS_HOLE(bp)) + break; + } + if (i == 1 << epbs) { + /* didn't find any non-holes */ + bzero(db->db.db_data, db->db.db_size); + free_blocks(dn, db->db_blkptr, 1, tx); + } else { + /* + * Partial block free; must be marked dirty so that it + * will be written out. + */ + ASSERT(db->db_dirtycnt > 0); + } + + DB_DNODE_EXIT(db); + arc_buf_freeze(db->db_buf); +} + +/* + * Traverse the indicated range of the provided file + * and "free" all the blocks contained there. + */ +static void +dnode_sync_free_range_impl(dnode_t *dn, uint64_t blkid, uint64_t nblks, + dmu_tx_t *tx) +{ + blkptr_t *bp = dn->dn_phys->dn_blkptr; + int dnlevel = dn->dn_phys->dn_nlevels; + boolean_t trunc = B_FALSE; + + if (blkid > dn->dn_phys->dn_maxblkid) + return; + + ASSERT(dn->dn_phys->dn_maxblkid < UINT64_MAX); + if (blkid + nblks > dn->dn_phys->dn_maxblkid) { + nblks = dn->dn_phys->dn_maxblkid - blkid + 1; + trunc = B_TRUE; + } + + /* There are no indirect blocks in the object */ + if (dnlevel == 1) { + if (blkid >= dn->dn_phys->dn_nblkptr) { + /* this range was never made persistent */ + return; + } + ASSERT3U(blkid + nblks, <=, dn->dn_phys->dn_nblkptr); + free_blocks(dn, bp + blkid, nblks, tx); + } else { + int shift = (dnlevel - 1) * + (dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT); + int start = blkid >> shift; + int end = (blkid + nblks - 1) >> shift; + dmu_buf_impl_t *db; + int i; + + ASSERT(start < dn->dn_phys->dn_nblkptr); + bp += start; + for (i = start; i <= end; i++, bp++) { + if (BP_IS_HOLE(bp)) + continue; + rw_enter(&dn->dn_struct_rwlock, RW_READER); + VERIFY0(dbuf_hold_impl(dn, dnlevel - 1, i, + TRUE, FTAG, &db)); + rw_exit(&dn->dn_struct_rwlock); + + free_children(db, blkid, nblks, tx); + dbuf_rele(db, FTAG); + } + } + + if (trunc) { + ASSERTV(uint64_t off); + dn->dn_phys->dn_maxblkid = blkid == 0 ? 0 : blkid - 1; + + ASSERTV(off = (dn->dn_phys->dn_maxblkid + 1) * + (dn->dn_phys->dn_datablkszsec << SPA_MINBLOCKSHIFT)); + ASSERT(off < dn->dn_phys->dn_maxblkid || + dn->dn_phys->dn_maxblkid == 0 || + dnode_next_offset(dn, 0, &off, 1, 1, 0) != 0); + } +} + +typedef struct dnode_sync_free_range_arg { + dnode_t *dsfra_dnode; + dmu_tx_t *dsfra_tx; +} dnode_sync_free_range_arg_t; + +static void +dnode_sync_free_range(void *arg, uint64_t blkid, uint64_t nblks) +{ + dnode_sync_free_range_arg_t *dsfra = arg; + dnode_t *dn = dsfra->dsfra_dnode; + + mutex_exit(&dn->dn_mtx); + dnode_sync_free_range_impl(dn, blkid, nblks, dsfra->dsfra_tx); + mutex_enter(&dn->dn_mtx); +} + +/* + * Try to kick all the dnode's dbufs out of the cache... + */ +void +dnode_evict_dbufs(dnode_t *dn) +{ + dmu_buf_impl_t *db_marker; + dmu_buf_impl_t *db, *db_next; + + db_marker = kmem_alloc(sizeof (dmu_buf_impl_t), KM_SLEEP); + + mutex_enter(&dn->dn_dbufs_mtx); + for (db = avl_first(&dn->dn_dbufs); db != NULL; db = db_next) { + +#ifdef DEBUG + DB_DNODE_ENTER(db); + ASSERT3P(DB_DNODE(db), ==, dn); + DB_DNODE_EXIT(db); +#endif /* DEBUG */ + + mutex_enter(&db->db_mtx); + if (db->db_state != DB_EVICTING && + refcount_is_zero(&db->db_holds)) { + db_marker->db_level = db->db_level; + db_marker->db_blkid = db->db_blkid; + db_marker->db_state = DB_SEARCH; + avl_insert_here(&dn->dn_dbufs, db_marker, db, + AVL_BEFORE); + + dbuf_clear(db); + + db_next = AVL_NEXT(&dn->dn_dbufs, db_marker); + avl_remove(&dn->dn_dbufs, db_marker); + } else { + db->db_pending_evict = TRUE; + mutex_exit(&db->db_mtx); + db_next = AVL_NEXT(&dn->dn_dbufs, db); + } + } + mutex_exit(&dn->dn_dbufs_mtx); + + kmem_free(db_marker, sizeof (dmu_buf_impl_t)); + + dnode_evict_bonus(dn); +} + +void +dnode_evict_bonus(dnode_t *dn) +{ + rw_enter(&dn->dn_struct_rwlock, RW_WRITER); + if (dn->dn_bonus != NULL) { + if (refcount_is_zero(&dn->dn_bonus->db_holds)) { + mutex_enter(&dn->dn_bonus->db_mtx); + dbuf_evict(dn->dn_bonus); + dn->dn_bonus = NULL; + } else { + dn->dn_bonus->db_pending_evict = TRUE; + } + } + rw_exit(&dn->dn_struct_rwlock); +} + +static void +dnode_undirty_dbufs(list_t *list) +{ + dbuf_dirty_record_t *dr; + + while ((dr = list_head(list))) { + dmu_buf_impl_t *db = dr->dr_dbuf; + uint64_t txg = dr->dr_txg; + + if (db->db_level != 0) + dnode_undirty_dbufs(&dr->dt.di.dr_children); + + mutex_enter(&db->db_mtx); + /* XXX - use dbuf_undirty()? */ + list_remove(list, dr); + ASSERT(db->db_last_dirty == dr); + db->db_last_dirty = NULL; + db->db_dirtycnt -= 1; + if (db->db_level == 0) { + ASSERT(db->db_blkid == DMU_BONUS_BLKID || + dr->dt.dl.dr_data == db->db_buf); + dbuf_unoverride(dr); + } else { + mutex_destroy(&dr->dt.di.dr_mtx); + list_destroy(&dr->dt.di.dr_children); + } + kmem_free(dr, sizeof (dbuf_dirty_record_t)); + dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg); + } +} + +static void +dnode_sync_free(dnode_t *dn, dmu_tx_t *tx) +{ + int txgoff = tx->tx_txg & TXG_MASK; + + ASSERT(dmu_tx_is_syncing(tx)); + + /* + * Our contents should have been freed in dnode_sync() by the + * free range record inserted by the caller of dnode_free(). + */ + ASSERT0(DN_USED_BYTES(dn->dn_phys)); + ASSERT(BP_IS_HOLE(dn->dn_phys->dn_blkptr)); + + dnode_undirty_dbufs(&dn->dn_dirty_records[txgoff]); + dnode_evict_dbufs(dn); + + /* + * XXX - It would be nice to assert this, but we may still + * have residual holds from async evictions from the arc... + * + * zfs_obj_to_path() also depends on this being + * commented out. + * + * ASSERT3U(refcount_count(&dn->dn_holds), ==, 1); + */ + + /* Undirty next bits */ + dn->dn_next_nlevels[txgoff] = 0; + dn->dn_next_indblkshift[txgoff] = 0; + dn->dn_next_blksz[txgoff] = 0; + + /* ASSERT(blkptrs are zero); */ + ASSERT(dn->dn_phys->dn_type != DMU_OT_NONE); + ASSERT(dn->dn_type != DMU_OT_NONE); + + ASSERT(dn->dn_free_txg > 0); + if (dn->dn_allocated_txg != dn->dn_free_txg) + dmu_buf_will_dirty(&dn->dn_dbuf->db, tx); + bzero(dn->dn_phys, sizeof (dnode_phys_t)); + + mutex_enter(&dn->dn_mtx); + dn->dn_type = DMU_OT_NONE; + dn->dn_maxblkid = 0; + dn->dn_allocated_txg = 0; + dn->dn_free_txg = 0; + dn->dn_have_spill = B_FALSE; + mutex_exit(&dn->dn_mtx); + + ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT); + + dnode_rele(dn, (void *)(uintptr_t)tx->tx_txg); + /* + * Now that we've released our hold, the dnode may + * be evicted, so we musn't access it. + */ +} + +/* + * Write out the dnode's dirty buffers. + */ +void +dnode_sync(dnode_t *dn, dmu_tx_t *tx) +{ + dnode_phys_t *dnp = dn->dn_phys; + int txgoff = tx->tx_txg & TXG_MASK; + list_t *list = &dn->dn_dirty_records[txgoff]; + boolean_t kill_spill = B_FALSE; + boolean_t freeing_dnode; + ASSERTV(static const dnode_phys_t zerodn = { 0 }); + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(dnp->dn_type != DMU_OT_NONE || dn->dn_allocated_txg); + ASSERT(dnp->dn_type != DMU_OT_NONE || + bcmp(dnp, &zerodn, DNODE_SIZE) == 0); + DNODE_VERIFY(dn); + + ASSERT(dn->dn_dbuf == NULL || arc_released(dn->dn_dbuf->db_buf)); + + if (dmu_objset_userused_enabled(dn->dn_objset) && + !DMU_OBJECT_IS_SPECIAL(dn->dn_object)) { + mutex_enter(&dn->dn_mtx); + dn->dn_oldused = DN_USED_BYTES(dn->dn_phys); + dn->dn_oldflags = dn->dn_phys->dn_flags; + dn->dn_phys->dn_flags |= DNODE_FLAG_USERUSED_ACCOUNTED; + mutex_exit(&dn->dn_mtx); + dmu_objset_userquota_get_ids(dn, B_FALSE, tx); + } else { + /* Once we account for it, we should always account for it. */ + ASSERT(!(dn->dn_phys->dn_flags & + DNODE_FLAG_USERUSED_ACCOUNTED)); + } + + mutex_enter(&dn->dn_mtx); + if (dn->dn_allocated_txg == tx->tx_txg) { + /* The dnode is newly allocated or reallocated */ + if (dnp->dn_type == DMU_OT_NONE) { + /* this is a first alloc, not a realloc */ + dnp->dn_nlevels = 1; + dnp->dn_nblkptr = dn->dn_nblkptr; + } + + dnp->dn_type = dn->dn_type; + dnp->dn_bonustype = dn->dn_bonustype; + dnp->dn_bonuslen = dn->dn_bonuslen; + } + ASSERT(dnp->dn_nlevels > 1 || + BP_IS_HOLE(&dnp->dn_blkptr[0]) || + BP_IS_EMBEDDED(&dnp->dn_blkptr[0]) || + BP_GET_LSIZE(&dnp->dn_blkptr[0]) == + dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT); + ASSERT(dnp->dn_nlevels < 2 || + BP_IS_HOLE(&dnp->dn_blkptr[0]) || + BP_GET_LSIZE(&dnp->dn_blkptr[0]) == 1 << dnp->dn_indblkshift); + + if (dn->dn_next_type[txgoff] != 0) { + dnp->dn_type = dn->dn_type; + dn->dn_next_type[txgoff] = 0; + } + + if (dn->dn_next_blksz[txgoff] != 0) { + ASSERT(P2PHASE(dn->dn_next_blksz[txgoff], + SPA_MINBLOCKSIZE) == 0); + ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[0]) || + dn->dn_maxblkid == 0 || list_head(list) != NULL || + dn->dn_next_blksz[txgoff] >> SPA_MINBLOCKSHIFT == + dnp->dn_datablkszsec || + range_tree_space(dn->dn_free_ranges[txgoff]) != 0); + dnp->dn_datablkszsec = + dn->dn_next_blksz[txgoff] >> SPA_MINBLOCKSHIFT; + dn->dn_next_blksz[txgoff] = 0; + } + + if (dn->dn_next_bonuslen[txgoff] != 0) { + if (dn->dn_next_bonuslen[txgoff] == DN_ZERO_BONUSLEN) + dnp->dn_bonuslen = 0; + else + dnp->dn_bonuslen = dn->dn_next_bonuslen[txgoff]; + ASSERT(dnp->dn_bonuslen <= DN_MAX_BONUSLEN); + dn->dn_next_bonuslen[txgoff] = 0; + } + + if (dn->dn_next_bonustype[txgoff] != 0) { + ASSERT(DMU_OT_IS_VALID(dn->dn_next_bonustype[txgoff])); + dnp->dn_bonustype = dn->dn_next_bonustype[txgoff]; + dn->dn_next_bonustype[txgoff] = 0; + } + + freeing_dnode = dn->dn_free_txg > 0 && dn->dn_free_txg <= tx->tx_txg; + + /* + * Remove the spill block if we have been explicitly asked to + * remove it, or if the object is being removed. + */ + if (dn->dn_rm_spillblk[txgoff] || freeing_dnode) { + if (dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) + kill_spill = B_TRUE; + dn->dn_rm_spillblk[txgoff] = 0; + } + + if (dn->dn_next_indblkshift[txgoff] != 0) { + ASSERT(dnp->dn_nlevels == 1); + dnp->dn_indblkshift = dn->dn_next_indblkshift[txgoff]; + dn->dn_next_indblkshift[txgoff] = 0; + } + + /* + * Just take the live (open-context) values for checksum and compress. + * Strictly speaking it's a future leak, but nothing bad happens if we + * start using the new checksum or compress algorithm a little early. + */ + dnp->dn_checksum = dn->dn_checksum; + dnp->dn_compress = dn->dn_compress; + + mutex_exit(&dn->dn_mtx); + + if (kill_spill) { + free_blocks(dn, &dn->dn_phys->dn_spill, 1, tx); + mutex_enter(&dn->dn_mtx); + dnp->dn_flags &= ~DNODE_FLAG_SPILL_BLKPTR; + mutex_exit(&dn->dn_mtx); + } + + /* process all the "freed" ranges in the file */ + if (dn->dn_free_ranges[txgoff] != NULL) { + dnode_sync_free_range_arg_t dsfra; + dsfra.dsfra_dnode = dn; + dsfra.dsfra_tx = tx; + mutex_enter(&dn->dn_mtx); + range_tree_vacate(dn->dn_free_ranges[txgoff], + dnode_sync_free_range, &dsfra); + range_tree_destroy(dn->dn_free_ranges[txgoff]); + dn->dn_free_ranges[txgoff] = NULL; + mutex_exit(&dn->dn_mtx); + } + + if (freeing_dnode) { + dnode_sync_free(dn, tx); + return; + } + + if (dn->dn_next_nlevels[txgoff]) { + dnode_increase_indirection(dn, tx); + dn->dn_next_nlevels[txgoff] = 0; + } + + if (dn->dn_next_nblkptr[txgoff]) { + /* this should only happen on a realloc */ + ASSERT(dn->dn_allocated_txg == tx->tx_txg); + if (dn->dn_next_nblkptr[txgoff] > dnp->dn_nblkptr) { + /* zero the new blkptrs we are gaining */ + bzero(dnp->dn_blkptr + dnp->dn_nblkptr, + sizeof (blkptr_t) * + (dn->dn_next_nblkptr[txgoff] - dnp->dn_nblkptr)); +#ifdef ZFS_DEBUG + } else { + int i; + ASSERT(dn->dn_next_nblkptr[txgoff] < dnp->dn_nblkptr); + /* the blkptrs we are losing better be unallocated */ + for (i = 0; i < dnp->dn_nblkptr; i++) { + if (i >= dn->dn_next_nblkptr[txgoff]) + ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[i])); + } +#endif + } + mutex_enter(&dn->dn_mtx); + dnp->dn_nblkptr = dn->dn_next_nblkptr[txgoff]; + dn->dn_next_nblkptr[txgoff] = 0; + mutex_exit(&dn->dn_mtx); + } + + dbuf_sync_list(list, dn->dn_phys->dn_nlevels - 1, tx); + + if (!DMU_OBJECT_IS_SPECIAL(dn->dn_object)) { + ASSERT3P(list_head(list), ==, NULL); + dnode_rele(dn, (void *)(uintptr_t)tx->tx_txg); + } + + /* + * Although we have dropped our reference to the dnode, it + * can't be evicted until its written, and we haven't yet + * initiated the IO for the dnode's dbuf. + */ +} --- linux-4.4.0.orig/zfs/module/zfs/dsl_bookmark.c +++ linux-4.4.0/zfs/module/zfs/dsl_bookmark.c @@ -0,0 +1,462 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int +dsl_bookmark_hold_ds(dsl_pool_t *dp, const char *fullname, + dsl_dataset_t **dsp, void *tag, char **shortnamep) +{ + char buf[MAXNAMELEN]; + char *hashp; + + if (strlen(fullname) >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + hashp = strchr(fullname, '#'); + if (hashp == NULL) + return (SET_ERROR(EINVAL)); + + *shortnamep = hashp + 1; + if (zfs_component_namecheck(*shortnamep, NULL, NULL)) + return (SET_ERROR(EINVAL)); + (void) strlcpy(buf, fullname, hashp - fullname + 1); + return (dsl_dataset_hold(dp, buf, tag, dsp)); +} + +/* + * Returns ESRCH if bookmark is not found. + */ +static int +dsl_dataset_bmark_lookup(dsl_dataset_t *ds, const char *shortname, + zfs_bookmark_phys_t *bmark_phys) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + uint64_t bmark_zapobj = ds->ds_bookmarks; + matchtype_t mt; + int err; + + if (bmark_zapobj == 0) + return (SET_ERROR(ESRCH)); + + if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) + mt = MT_FIRST; + else + mt = MT_EXACT; + + err = zap_lookup_norm(mos, bmark_zapobj, shortname, sizeof (uint64_t), + sizeof (*bmark_phys) / sizeof (uint64_t), bmark_phys, mt, + NULL, 0, NULL); + + return (err == ENOENT ? ESRCH : err); +} + +/* + * If later_ds is non-NULL, this will return EXDEV if the the specified bookmark + * does not represents an earlier point in later_ds's timeline. + * + * Returns ENOENT if the dataset containing the bookmark does not exist. + * Returns ESRCH if the dataset exists but the bookmark was not found in it. + */ +int +dsl_bookmark_lookup(dsl_pool_t *dp, const char *fullname, + dsl_dataset_t *later_ds, zfs_bookmark_phys_t *bmp) +{ + char *shortname; + dsl_dataset_t *ds; + int error; + + error = dsl_bookmark_hold_ds(dp, fullname, &ds, FTAG, &shortname); + if (error != 0) + return (error); + + error = dsl_dataset_bmark_lookup(ds, shortname, bmp); + if (error == 0 && later_ds != NULL) { + if (!dsl_dataset_is_before(later_ds, ds, bmp->zbm_creation_txg)) + error = SET_ERROR(EXDEV); + } + dsl_dataset_rele(ds, FTAG); + return (error); +} + +typedef struct dsl_bookmark_create_arg { + nvlist_t *dbca_bmarks; + nvlist_t *dbca_errors; +} dsl_bookmark_create_arg_t; + +static int +dsl_bookmark_create_check_impl(dsl_dataset_t *snapds, const char *bookmark_name, + dmu_tx_t *tx) +{ + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *bmark_fs; + char *shortname; + int error; + zfs_bookmark_phys_t bmark_phys; + + if (!snapds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + error = dsl_bookmark_hold_ds(dp, bookmark_name, + &bmark_fs, FTAG, &shortname); + if (error != 0) + return (error); + + if (!dsl_dataset_is_before(bmark_fs, snapds, 0)) { + dsl_dataset_rele(bmark_fs, FTAG); + return (SET_ERROR(EINVAL)); + } + + error = dsl_dataset_bmark_lookup(bmark_fs, shortname, + &bmark_phys); + dsl_dataset_rele(bmark_fs, FTAG); + if (error == 0) + return (SET_ERROR(EEXIST)); + if (error == ESRCH) + return (0); + return (error); +} + +static int +dsl_bookmark_create_check(void *arg, dmu_tx_t *tx) +{ + dsl_bookmark_create_arg_t *dbca = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + int rv = 0; + nvpair_t *pair; + + if (!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_BOOKMARKS)) + return (SET_ERROR(ENOTSUP)); + + for (pair = nvlist_next_nvpair(dbca->dbca_bmarks, NULL); + pair != NULL; pair = nvlist_next_nvpair(dbca->dbca_bmarks, pair)) { + dsl_dataset_t *snapds; + int error; + + /* note: validity of nvlist checked by ioctl layer */ + error = dsl_dataset_hold(dp, fnvpair_value_string(pair), + FTAG, &snapds); + if (error == 0) { + error = dsl_bookmark_create_check_impl(snapds, + nvpair_name(pair), tx); + dsl_dataset_rele(snapds, FTAG); + } + if (error != 0) { + fnvlist_add_int32(dbca->dbca_errors, + nvpair_name(pair), error); + rv = error; + } + } + + return (rv); +} + +static void +dsl_bookmark_create_sync(void *arg, dmu_tx_t *tx) +{ + dsl_bookmark_create_arg_t *dbca = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + nvpair_t *pair; + + ASSERT(spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_BOOKMARKS)); + + for (pair = nvlist_next_nvpair(dbca->dbca_bmarks, NULL); + pair != NULL; pair = nvlist_next_nvpair(dbca->dbca_bmarks, pair)) { + dsl_dataset_t *snapds, *bmark_fs; + zfs_bookmark_phys_t bmark_phys; + char *shortname; + + VERIFY0(dsl_dataset_hold(dp, fnvpair_value_string(pair), + FTAG, &snapds)); + VERIFY0(dsl_bookmark_hold_ds(dp, nvpair_name(pair), + &bmark_fs, FTAG, &shortname)); + if (bmark_fs->ds_bookmarks == 0) { + bmark_fs->ds_bookmarks = + zap_create_norm(mos, U8_TEXTPREP_TOUPPER, + DMU_OTN_ZAP_METADATA, DMU_OT_NONE, 0, tx); + spa_feature_incr(dp->dp_spa, SPA_FEATURE_BOOKMARKS, tx); + + dsl_dataset_zapify(bmark_fs, tx); + VERIFY0(zap_add(mos, bmark_fs->ds_object, + DS_FIELD_BOOKMARK_NAMES, + sizeof (bmark_fs->ds_bookmarks), 1, + &bmark_fs->ds_bookmarks, tx)); + } + + bmark_phys.zbm_guid = dsl_dataset_phys(snapds)->ds_guid; + bmark_phys.zbm_creation_txg = + dsl_dataset_phys(snapds)->ds_creation_txg; + bmark_phys.zbm_creation_time = + dsl_dataset_phys(snapds)->ds_creation_time; + + VERIFY0(zap_add(mos, bmark_fs->ds_bookmarks, + shortname, sizeof (uint64_t), + sizeof (zfs_bookmark_phys_t) / sizeof (uint64_t), + &bmark_phys, tx)); + + spa_history_log_internal_ds(bmark_fs, "bookmark", tx, + "name=%s creation_txg=%llu target_snap=%llu", + shortname, + (longlong_t)bmark_phys.zbm_creation_txg, + (longlong_t)snapds->ds_object); + + dsl_dataset_rele(bmark_fs, FTAG); + dsl_dataset_rele(snapds, FTAG); + } +} + +/* + * The bookmarks must all be in the same pool. + */ +int +dsl_bookmark_create(nvlist_t *bmarks, nvlist_t *errors) +{ + nvpair_t *pair; + dsl_bookmark_create_arg_t dbca; + + pair = nvlist_next_nvpair(bmarks, NULL); + if (pair == NULL) + return (0); + + dbca.dbca_bmarks = bmarks; + dbca.dbca_errors = errors; + + return (dsl_sync_task(nvpair_name(pair), dsl_bookmark_create_check, + dsl_bookmark_create_sync, &dbca, + fnvlist_num_pairs(bmarks), ZFS_SPACE_CHECK_NORMAL)); +} + +int +dsl_get_bookmarks_impl(dsl_dataset_t *ds, nvlist_t *props, nvlist_t *outnvl) +{ + int err = 0; + zap_cursor_t zc; + zap_attribute_t attr; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + + uint64_t bmark_zapobj = ds->ds_bookmarks; + if (bmark_zapobj == 0) + return (0); + + for (zap_cursor_init(&zc, dp->dp_meta_objset, bmark_zapobj); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + nvlist_t *out_props; + char *bmark_name = attr.za_name; + zfs_bookmark_phys_t bmark_phys; + + err = dsl_dataset_bmark_lookup(ds, bmark_name, &bmark_phys); + ASSERT3U(err, !=, ENOENT); + if (err != 0) + break; + + out_props = fnvlist_alloc(); + if (nvlist_exists(props, + zfs_prop_to_name(ZFS_PROP_GUID))) { + dsl_prop_nvlist_add_uint64(out_props, + ZFS_PROP_GUID, bmark_phys.zbm_guid); + } + if (nvlist_exists(props, + zfs_prop_to_name(ZFS_PROP_CREATETXG))) { + dsl_prop_nvlist_add_uint64(out_props, + ZFS_PROP_CREATETXG, bmark_phys.zbm_creation_txg); + } + if (nvlist_exists(props, + zfs_prop_to_name(ZFS_PROP_CREATION))) { + dsl_prop_nvlist_add_uint64(out_props, + ZFS_PROP_CREATION, bmark_phys.zbm_creation_time); + } + + fnvlist_add_nvlist(outnvl, bmark_name, out_props); + fnvlist_free(out_props); + } + zap_cursor_fini(&zc); + return (err); +} + +/* + * Retrieve the bookmarks that exist in the specified dataset, and the + * requested properties of each bookmark. + * + * The "props" nvlist specifies which properties are requested. + * See lzc_get_bookmarks() for the list of valid properties. + */ +int +dsl_get_bookmarks(const char *dsname, nvlist_t *props, nvlist_t *outnvl) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int err; + + err = dsl_pool_hold(dsname, FTAG, &dp); + if (err != 0) + return (err); + err = dsl_dataset_hold(dp, dsname, FTAG, &ds); + if (err != 0) { + dsl_pool_rele(dp, FTAG); + return (err); + } + + err = dsl_get_bookmarks_impl(ds, props, outnvl); + + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (err); +} + +typedef struct dsl_bookmark_destroy_arg { + nvlist_t *dbda_bmarks; + nvlist_t *dbda_success; + nvlist_t *dbda_errors; +} dsl_bookmark_destroy_arg_t; + +static int +dsl_dataset_bookmark_remove(dsl_dataset_t *ds, const char *name, dmu_tx_t *tx) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + uint64_t bmark_zapobj = ds->ds_bookmarks; + matchtype_t mt; + + if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) + mt = MT_FIRST; + else + mt = MT_EXACT; + + return (zap_remove_norm(mos, bmark_zapobj, name, mt, tx)); +} + +static int +dsl_bookmark_destroy_check(void *arg, dmu_tx_t *tx) +{ + dsl_bookmark_destroy_arg_t *dbda = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + int rv = 0; + nvpair_t *pair; + + if (!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_BOOKMARKS)) + return (0); + + for (pair = nvlist_next_nvpair(dbda->dbda_bmarks, NULL); + pair != NULL; pair = nvlist_next_nvpair(dbda->dbda_bmarks, pair)) { + const char *fullname = nvpair_name(pair); + dsl_dataset_t *ds; + zfs_bookmark_phys_t bm; + int error; + char *shortname; + + error = dsl_bookmark_hold_ds(dp, fullname, &ds, + FTAG, &shortname); + if (error == ENOENT) { + /* ignore it; the bookmark is "already destroyed" */ + continue; + } + if (error == 0) { + error = dsl_dataset_bmark_lookup(ds, shortname, &bm); + dsl_dataset_rele(ds, FTAG); + if (error == ESRCH) { + /* + * ignore it; the bookmark is + * "already destroyed" + */ + continue; + } + } + if (error == 0) { + fnvlist_add_boolean(dbda->dbda_success, fullname); + } else { + fnvlist_add_int32(dbda->dbda_errors, fullname, error); + rv = error; + } + } + return (rv); +} + +static void +dsl_bookmark_destroy_sync(void *arg, dmu_tx_t *tx) +{ + dsl_bookmark_destroy_arg_t *dbda = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(dbda->dbda_success, NULL); + pair != NULL; pair = nvlist_next_nvpair(dbda->dbda_success, pair)) { + dsl_dataset_t *ds; + char *shortname; + uint64_t zap_cnt; + + VERIFY0(dsl_bookmark_hold_ds(dp, nvpair_name(pair), + &ds, FTAG, &shortname)); + VERIFY0(dsl_dataset_bookmark_remove(ds, shortname, tx)); + + /* + * If all of this dataset's bookmarks have been destroyed, + * free the zap object and decrement the feature's use count. + */ + VERIFY0(zap_count(mos, ds->ds_bookmarks, + &zap_cnt)); + if (zap_cnt == 0) { + dmu_buf_will_dirty(ds->ds_dbuf, tx); + VERIFY0(zap_destroy(mos, ds->ds_bookmarks, tx)); + ds->ds_bookmarks = 0; + spa_feature_decr(dp->dp_spa, SPA_FEATURE_BOOKMARKS, tx); + VERIFY0(zap_remove(mos, ds->ds_object, + DS_FIELD_BOOKMARK_NAMES, tx)); + } + + spa_history_log_internal_ds(ds, "remove bookmark", tx, + "name=%s", shortname); + + dsl_dataset_rele(ds, FTAG); + } +} + +/* + * The bookmarks must all be in the same pool. + */ +int +dsl_bookmark_destroy(nvlist_t *bmarks, nvlist_t *errors) +{ + int rv; + dsl_bookmark_destroy_arg_t dbda; + nvpair_t *pair = nvlist_next_nvpair(bmarks, NULL); + if (pair == NULL) + return (0); + + dbda.dbda_bmarks = bmarks; + dbda.dbda_errors = errors; + dbda.dbda_success = fnvlist_alloc(); + + rv = dsl_sync_task(nvpair_name(pair), dsl_bookmark_destroy_check, + dsl_bookmark_destroy_sync, &dbda, fnvlist_num_pairs(bmarks), + ZFS_SPACE_CHECK_RESERVED); + fnvlist_free(dbda.dbda_success); + return (rv); +} --- linux-4.4.0.orig/zfs/module/zfs/dsl_dataset.c +++ linux-4.4.0/zfs/module/zfs/dsl_dataset.c @@ -0,0 +1,3437 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright (c) 2014 RackTop Systems. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * The SPA supports block sizes up to 16MB. However, very large blocks + * can have an impact on i/o latency (e.g. tying up a spinning disk for + * ~300ms), and also potentially on the memory allocator. Therefore, + * we do not allow the recordsize to be set larger than zfs_max_recordsize + * (default 1MB). Larger blocks can be created by changing this tunable, + * and pools with larger blocks can always be imported and used, regardless + * of this setting. + */ +int zfs_max_recordsize = 1 * 1024 * 1024; + +#define SWITCH64(x, y) \ + { \ + uint64_t __tmp = (x); \ + (x) = (y); \ + (y) = __tmp; \ + } + +#define DS_REF_MAX (1ULL << 62) + +extern inline dsl_dataset_phys_t *dsl_dataset_phys(dsl_dataset_t *ds); + +/* + * Figure out how much of this delta should be propogated to the dsl_dir + * layer. If there's a refreservation, that space has already been + * partially accounted for in our ancestors. + */ +static int64_t +parent_delta(dsl_dataset_t *ds, int64_t delta) +{ + dsl_dataset_phys_t *ds_phys; + uint64_t old_bytes, new_bytes; + + if (ds->ds_reserved == 0) + return (delta); + + ds_phys = dsl_dataset_phys(ds); + old_bytes = MAX(ds_phys->ds_unique_bytes, ds->ds_reserved); + new_bytes = MAX(ds_phys->ds_unique_bytes + delta, ds->ds_reserved); + + ASSERT3U(ABS((int64_t)(new_bytes - old_bytes)), <=, ABS(delta)); + return (new_bytes - old_bytes); +} + +void +dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx) +{ + int used, compressed, uncompressed; + int64_t delta; + + used = bp_get_dsize_sync(tx->tx_pool->dp_spa, bp); + compressed = BP_GET_PSIZE(bp); + uncompressed = BP_GET_UCSIZE(bp); + + dprintf_bp(bp, "ds=%p", ds); + + ASSERT(dmu_tx_is_syncing(tx)); + /* It could have been compressed away to nothing */ + if (BP_IS_HOLE(bp)) + return; + ASSERT(BP_GET_TYPE(bp) != DMU_OT_NONE); + ASSERT(DMU_OT_IS_VALID(BP_GET_TYPE(bp))); + if (ds == NULL) { + dsl_pool_mos_diduse_space(tx->tx_pool, + used, compressed, uncompressed); + return; + } + + dmu_buf_will_dirty(ds->ds_dbuf, tx); + mutex_enter(&ds->ds_lock); + delta = parent_delta(ds, used); + dsl_dataset_phys(ds)->ds_referenced_bytes += used; + dsl_dataset_phys(ds)->ds_compressed_bytes += compressed; + dsl_dataset_phys(ds)->ds_uncompressed_bytes += uncompressed; + dsl_dataset_phys(ds)->ds_unique_bytes += used; + if (BP_GET_LSIZE(bp) > SPA_OLD_MAXBLOCKSIZE) + ds->ds_need_large_blocks = B_TRUE; + mutex_exit(&ds->ds_lock); + dsl_dir_diduse_space(ds->ds_dir, DD_USED_HEAD, delta, + compressed, uncompressed, tx); + dsl_dir_transfer_space(ds->ds_dir, used - delta, + DD_USED_REFRSRV, DD_USED_HEAD, tx); +} + +int +dsl_dataset_block_kill(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx, + boolean_t async) +{ + int used = bp_get_dsize_sync(tx->tx_pool->dp_spa, bp); + int compressed = BP_GET_PSIZE(bp); + int uncompressed = BP_GET_UCSIZE(bp); + + if (BP_IS_HOLE(bp)) + return (0); + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(bp->blk_birth <= tx->tx_txg); + + if (ds == NULL) { + dsl_free(tx->tx_pool, tx->tx_txg, bp); + dsl_pool_mos_diduse_space(tx->tx_pool, + -used, -compressed, -uncompressed); + return (used); + } + ASSERT3P(tx->tx_pool, ==, ds->ds_dir->dd_pool); + + ASSERT(!ds->ds_is_snapshot); + dmu_buf_will_dirty(ds->ds_dbuf, tx); + + if (bp->blk_birth > dsl_dataset_phys(ds)->ds_prev_snap_txg) { + int64_t delta; + + dprintf_bp(bp, "freeing ds=%llu", ds->ds_object); + dsl_free(tx->tx_pool, tx->tx_txg, bp); + + mutex_enter(&ds->ds_lock); + ASSERT(dsl_dataset_phys(ds)->ds_unique_bytes >= used || + !DS_UNIQUE_IS_ACCURATE(ds)); + delta = parent_delta(ds, -used); + dsl_dataset_phys(ds)->ds_unique_bytes -= used; + mutex_exit(&ds->ds_lock); + dsl_dir_diduse_space(ds->ds_dir, DD_USED_HEAD, + delta, -compressed, -uncompressed, tx); + dsl_dir_transfer_space(ds->ds_dir, -used - delta, + DD_USED_REFRSRV, DD_USED_HEAD, tx); + } else { + dprintf_bp(bp, "putting on dead list: %s", ""); + if (async) { + /* + * We are here as part of zio's write done callback, + * which means we're a zio interrupt thread. We can't + * call dsl_deadlist_insert() now because it may block + * waiting for I/O. Instead, put bp on the deferred + * queue and let dsl_pool_sync() finish the job. + */ + bplist_append(&ds->ds_pending_deadlist, bp); + } else { + dsl_deadlist_insert(&ds->ds_deadlist, bp, tx); + } + ASSERT3U(ds->ds_prev->ds_object, ==, + dsl_dataset_phys(ds)->ds_prev_snap_obj); + ASSERT(dsl_dataset_phys(ds->ds_prev)->ds_num_children > 0); + /* if (bp->blk_birth > prev prev snap txg) prev unique += bs */ + if (dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj == + ds->ds_object && bp->blk_birth > + dsl_dataset_phys(ds->ds_prev)->ds_prev_snap_txg) { + dmu_buf_will_dirty(ds->ds_prev->ds_dbuf, tx); + mutex_enter(&ds->ds_prev->ds_lock); + dsl_dataset_phys(ds->ds_prev)->ds_unique_bytes += used; + mutex_exit(&ds->ds_prev->ds_lock); + } + if (bp->blk_birth > ds->ds_dir->dd_origin_txg) { + dsl_dir_transfer_space(ds->ds_dir, used, + DD_USED_HEAD, DD_USED_SNAP, tx); + } + } + mutex_enter(&ds->ds_lock); + ASSERT3U(dsl_dataset_phys(ds)->ds_referenced_bytes, >=, used); + dsl_dataset_phys(ds)->ds_referenced_bytes -= used; + ASSERT3U(dsl_dataset_phys(ds)->ds_compressed_bytes, >=, compressed); + dsl_dataset_phys(ds)->ds_compressed_bytes -= compressed; + ASSERT3U(dsl_dataset_phys(ds)->ds_uncompressed_bytes, >=, uncompressed); + dsl_dataset_phys(ds)->ds_uncompressed_bytes -= uncompressed; + mutex_exit(&ds->ds_lock); + + return (used); +} + +uint64_t +dsl_dataset_prev_snap_txg(dsl_dataset_t *ds) +{ + uint64_t trysnap = 0; + + if (ds == NULL) + return (0); + /* + * The snapshot creation could fail, but that would cause an + * incorrect FALSE return, which would only result in an + * overestimation of the amount of space that an operation would + * consume, which is OK. + * + * There's also a small window where we could miss a pending + * snapshot, because we could set the sync task in the quiescing + * phase. So this should only be used as a guess. + */ + if (ds->ds_trysnap_txg > + spa_last_synced_txg(ds->ds_dir->dd_pool->dp_spa)) + trysnap = ds->ds_trysnap_txg; + return (MAX(dsl_dataset_phys(ds)->ds_prev_snap_txg, trysnap)); +} + +boolean_t +dsl_dataset_block_freeable(dsl_dataset_t *ds, const blkptr_t *bp, + uint64_t blk_birth) +{ + if (blk_birth <= dsl_dataset_prev_snap_txg(ds) || + (bp != NULL && BP_IS_HOLE(bp))) + return (B_FALSE); + + ddt_prefetch(dsl_dataset_get_spa(ds), bp); + + return (B_TRUE); +} + +static void +dsl_dataset_evict(void *dbu) +{ + dsl_dataset_t *ds = dbu; + + ASSERT(ds->ds_owner == NULL); + + ds->ds_dbuf = NULL; + + unique_remove(ds->ds_fsid_guid); + + if (ds->ds_objset != NULL) + dmu_objset_evict(ds->ds_objset); + + if (ds->ds_prev) { + dsl_dataset_rele(ds->ds_prev, ds); + ds->ds_prev = NULL; + } + + bplist_destroy(&ds->ds_pending_deadlist); + if (ds->ds_deadlist.dl_os != NULL) + dsl_deadlist_close(&ds->ds_deadlist); + if (ds->ds_dir) + dsl_dir_async_rele(ds->ds_dir, ds); + + ASSERT(!list_link_active(&ds->ds_synced_link)); + + mutex_destroy(&ds->ds_lock); + mutex_destroy(&ds->ds_opening_lock); + mutex_destroy(&ds->ds_sendstream_lock); + refcount_destroy(&ds->ds_longholds); + + kmem_free(ds, sizeof (dsl_dataset_t)); +} + +int +dsl_dataset_get_snapname(dsl_dataset_t *ds) +{ + dsl_dataset_phys_t *headphys; + int err; + dmu_buf_t *headdbuf; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + objset_t *mos = dp->dp_meta_objset; + + if (ds->ds_snapname[0]) + return (0); + if (dsl_dataset_phys(ds)->ds_next_snap_obj == 0) + return (0); + + err = dmu_bonus_hold(mos, dsl_dir_phys(ds->ds_dir)->dd_head_dataset_obj, + FTAG, &headdbuf); + if (err != 0) + return (err); + headphys = headdbuf->db_data; + err = zap_value_search(dp->dp_meta_objset, + headphys->ds_snapnames_zapobj, ds->ds_object, 0, ds->ds_snapname); + if (err != 0 && zfs_recover == B_TRUE) { + err = 0; + (void) snprintf(ds->ds_snapname, sizeof (ds->ds_snapname), + "SNAPOBJ=%llu-ERR=%d", + (unsigned long long)ds->ds_object, err); + } + dmu_buf_rele(headdbuf, FTAG); + return (err); +} + +int +dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name, uint64_t *value) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + uint64_t snapobj = dsl_dataset_phys(ds)->ds_snapnames_zapobj; + matchtype_t mt; + int err; + + if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) + mt = MT_FIRST; + else + mt = MT_EXACT; + + err = zap_lookup_norm(mos, snapobj, name, 8, 1, + value, mt, NULL, 0, NULL); + if (err == ENOTSUP && mt == MT_FIRST) + err = zap_lookup(mos, snapobj, name, 8, 1, value); + return (err); +} + +int +dsl_dataset_snap_remove(dsl_dataset_t *ds, const char *name, dmu_tx_t *tx, + boolean_t adj_cnt) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + uint64_t snapobj = dsl_dataset_phys(ds)->ds_snapnames_zapobj; + matchtype_t mt; + int err; + + dsl_dir_snap_cmtime_update(ds->ds_dir); + + if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) + mt = MT_FIRST; + else + mt = MT_EXACT; + + err = zap_remove_norm(mos, snapobj, name, mt, tx); + if (err == ENOTSUP && mt == MT_FIRST) + err = zap_remove(mos, snapobj, name, tx); + + if (err == 0 && adj_cnt) + dsl_fs_ss_count_adjust(ds->ds_dir, -1, + DD_FIELD_SNAPSHOT_COUNT, tx); + + return (err); +} + +boolean_t +dsl_dataset_try_add_ref(dsl_pool_t *dp, dsl_dataset_t *ds, void *tag) +{ + dmu_buf_t *dbuf = ds->ds_dbuf; + boolean_t result = B_FALSE; + + if (dbuf != NULL && dmu_buf_try_add_ref(dbuf, dp->dp_meta_objset, + ds->ds_object, DMU_BONUS_BLKID, tag)) { + + if (ds == dmu_buf_get_user(dbuf)) + result = B_TRUE; + else + dmu_buf_rele(dbuf, tag); + } + + return (result); +} + +int +dsl_dataset_hold_obj(dsl_pool_t *dp, uint64_t dsobj, void *tag, + dsl_dataset_t **dsp) +{ + objset_t *mos = dp->dp_meta_objset; + dmu_buf_t *dbuf; + dsl_dataset_t *ds; + int err; + dmu_object_info_t doi; + + ASSERT(dsl_pool_config_held(dp)); + + err = dmu_bonus_hold(mos, dsobj, tag, &dbuf); + if (err != 0) + return (err); + + /* Make sure dsobj has the correct object type. */ + dmu_object_info_from_db(dbuf, &doi); + if (doi.doi_bonus_type != DMU_OT_DSL_DATASET) { + dmu_buf_rele(dbuf, tag); + return (SET_ERROR(EINVAL)); + } + + ds = dmu_buf_get_user(dbuf); + if (ds == NULL) { + dsl_dataset_t *winner = NULL; + + ds = kmem_zalloc(sizeof (dsl_dataset_t), KM_SLEEP); + ds->ds_dbuf = dbuf; + ds->ds_object = dsobj; + ds->ds_is_snapshot = dsl_dataset_phys(ds)->ds_num_children != 0; + list_link_init(&ds->ds_synced_link); + + mutex_init(&ds->ds_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&ds->ds_opening_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&ds->ds_sendstream_lock, NULL, MUTEX_DEFAULT, NULL); + refcount_create(&ds->ds_longholds); + + bplist_create(&ds->ds_pending_deadlist); + dsl_deadlist_open(&ds->ds_deadlist, + mos, dsl_dataset_phys(ds)->ds_deadlist_obj); + + list_create(&ds->ds_sendstreams, sizeof (dmu_sendarg_t), + offsetof(dmu_sendarg_t, dsa_link)); + + if (doi.doi_type == DMU_OTN_ZAP_METADATA) { + int zaperr = zap_contains(mos, dsobj, + DS_FIELD_LARGE_BLOCKS); + if (zaperr != ENOENT) { + VERIFY0(zaperr); + ds->ds_large_blocks = B_TRUE; + } + } + + if (err == 0) { + err = dsl_dir_hold_obj(dp, + dsl_dataset_phys(ds)->ds_dir_obj, NULL, ds, + &ds->ds_dir); + } + if (err != 0) { + mutex_destroy(&ds->ds_lock); + mutex_destroy(&ds->ds_opening_lock); + mutex_destroy(&ds->ds_sendstream_lock); + refcount_destroy(&ds->ds_longholds); + bplist_destroy(&ds->ds_pending_deadlist); + dsl_deadlist_close(&ds->ds_deadlist); + kmem_free(ds, sizeof (dsl_dataset_t)); + dmu_buf_rele(dbuf, tag); + return (err); + } + + if (!ds->ds_is_snapshot) { + ds->ds_snapname[0] = '\0'; + if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, + ds, &ds->ds_prev); + } + if (doi.doi_type == DMU_OTN_ZAP_METADATA) { + int zaperr = zap_lookup(mos, ds->ds_object, + DS_FIELD_BOOKMARK_NAMES, + sizeof (ds->ds_bookmarks), 1, + &ds->ds_bookmarks); + if (zaperr != ENOENT) + VERIFY0(zaperr); + } + } else { + if (zfs_flags & ZFS_DEBUG_SNAPNAMES) + err = dsl_dataset_get_snapname(ds); + if (err == 0 && + dsl_dataset_phys(ds)->ds_userrefs_obj != 0) { + err = zap_count( + ds->ds_dir->dd_pool->dp_meta_objset, + dsl_dataset_phys(ds)->ds_userrefs_obj, + &ds->ds_userrefs); + } + } + + if (err == 0 && !ds->ds_is_snapshot) { + err = dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_REFRESERVATION), + &ds->ds_reserved); + if (err == 0) { + err = dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_REFQUOTA), + &ds->ds_quota); + } + } else { + ds->ds_reserved = ds->ds_quota = 0; + } + + dmu_buf_init_user(&ds->ds_dbu, dsl_dataset_evict, &ds->ds_dbuf); + if (err == 0) + winner = dmu_buf_set_user_ie(dbuf, &ds->ds_dbu); + + if (err != 0 || winner != NULL) { + bplist_destroy(&ds->ds_pending_deadlist); + dsl_deadlist_close(&ds->ds_deadlist); + if (ds->ds_prev) + dsl_dataset_rele(ds->ds_prev, ds); + dsl_dir_rele(ds->ds_dir, ds); + mutex_destroy(&ds->ds_lock); + mutex_destroy(&ds->ds_opening_lock); + mutex_destroy(&ds->ds_sendstream_lock); + refcount_destroy(&ds->ds_longholds); + kmem_free(ds, sizeof (dsl_dataset_t)); + if (err != 0) { + dmu_buf_rele(dbuf, tag); + return (err); + } + ds = winner; + } else { + ds->ds_fsid_guid = + unique_insert(dsl_dataset_phys(ds)->ds_fsid_guid); + } + } + ASSERT3P(ds->ds_dbuf, ==, dbuf); + ASSERT3P(dsl_dataset_phys(ds), ==, dbuf->db_data); + ASSERT(dsl_dataset_phys(ds)->ds_prev_snap_obj != 0 || + spa_version(dp->dp_spa) < SPA_VERSION_ORIGIN || + dp->dp_origin_snap == NULL || ds == dp->dp_origin_snap); + *dsp = ds; + return (0); +} + +int +dsl_dataset_hold(dsl_pool_t *dp, const char *name, + void *tag, dsl_dataset_t **dsp) +{ + dsl_dir_t *dd; + const char *snapname; + uint64_t obj; + int err = 0; + + err = dsl_dir_hold(dp, name, FTAG, &dd, &snapname); + if (err != 0) + return (err); + + ASSERT(dsl_pool_config_held(dp)); + obj = dsl_dir_phys(dd)->dd_head_dataset_obj; + if (obj != 0) + err = dsl_dataset_hold_obj(dp, obj, tag, dsp); + else + err = SET_ERROR(ENOENT); + + /* we may be looking for a snapshot */ + if (err == 0 && snapname != NULL) { + dsl_dataset_t *ds; + + if (*snapname++ != '@') { + dsl_dataset_rele(*dsp, tag); + dsl_dir_rele(dd, FTAG); + return (SET_ERROR(ENOENT)); + } + + dprintf("looking for snapshot '%s'\n", snapname); + err = dsl_dataset_snap_lookup(*dsp, snapname, &obj); + if (err == 0) + err = dsl_dataset_hold_obj(dp, obj, tag, &ds); + dsl_dataset_rele(*dsp, tag); + + if (err == 0) { + mutex_enter(&ds->ds_lock); + if (ds->ds_snapname[0] == 0) + (void) strlcpy(ds->ds_snapname, snapname, + sizeof (ds->ds_snapname)); + mutex_exit(&ds->ds_lock); + *dsp = ds; + } + } + + dsl_dir_rele(dd, FTAG); + return (err); +} + +int +dsl_dataset_own_obj(dsl_pool_t *dp, uint64_t dsobj, + void *tag, dsl_dataset_t **dsp) +{ + int err = dsl_dataset_hold_obj(dp, dsobj, tag, dsp); + if (err != 0) + return (err); + if (!dsl_dataset_tryown(*dsp, tag)) { + dsl_dataset_rele(*dsp, tag); + *dsp = NULL; + return (SET_ERROR(EBUSY)); + } + return (0); +} + +int +dsl_dataset_own(dsl_pool_t *dp, const char *name, + void *tag, dsl_dataset_t **dsp) +{ + int err = dsl_dataset_hold(dp, name, tag, dsp); + if (err != 0) + return (err); + if (!dsl_dataset_tryown(*dsp, tag)) { + dsl_dataset_rele(*dsp, tag); + return (SET_ERROR(EBUSY)); + } + return (0); +} + +/* + * See the comment above dsl_pool_hold() for details. In summary, a long + * hold is used to prevent destruction of a dataset while the pool hold + * is dropped, allowing other concurrent operations (e.g. spa_sync()). + * + * The dataset and pool must be held when this function is called. After it + * is called, the pool hold may be released while the dataset is still held + * and accessed. + */ +void +dsl_dataset_long_hold(dsl_dataset_t *ds, void *tag) +{ + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + (void) refcount_add(&ds->ds_longholds, tag); +} + +void +dsl_dataset_long_rele(dsl_dataset_t *ds, void *tag) +{ + (void) refcount_remove(&ds->ds_longholds, tag); +} + +/* Return B_TRUE if there are any long holds on this dataset. */ +boolean_t +dsl_dataset_long_held(dsl_dataset_t *ds) +{ + return (!refcount_is_zero(&ds->ds_longholds)); +} + +void +dsl_dataset_name(dsl_dataset_t *ds, char *name) +{ + if (ds == NULL) { + (void) strcpy(name, "mos"); + } else { + dsl_dir_name(ds->ds_dir, name); + VERIFY0(dsl_dataset_get_snapname(ds)); + if (ds->ds_snapname[0]) { + (void) strcat(name, "@"); + /* + * We use a "recursive" mutex so that we + * can call dprintf_ds() with ds_lock held. + */ + if (!MUTEX_HELD(&ds->ds_lock)) { + mutex_enter(&ds->ds_lock); + (void) strcat(name, ds->ds_snapname); + mutex_exit(&ds->ds_lock); + } else { + (void) strcat(name, ds->ds_snapname); + } + } + } +} + +void +dsl_dataset_rele(dsl_dataset_t *ds, void *tag) +{ + dmu_buf_rele(ds->ds_dbuf, tag); +} + +void +dsl_dataset_disown(dsl_dataset_t *ds, void *tag) +{ + ASSERT3P(ds->ds_owner, ==, tag); + ASSERT(ds->ds_dbuf != NULL); + + mutex_enter(&ds->ds_lock); + ds->ds_owner = NULL; + mutex_exit(&ds->ds_lock); + dsl_dataset_long_rele(ds, tag); + dsl_dataset_rele(ds, tag); +} + +boolean_t +dsl_dataset_tryown(dsl_dataset_t *ds, void *tag) +{ + boolean_t gotit = FALSE; + + mutex_enter(&ds->ds_lock); + if (ds->ds_owner == NULL && !DS_IS_INCONSISTENT(ds)) { + ds->ds_owner = tag; + dsl_dataset_long_hold(ds, tag); + gotit = TRUE; + } + mutex_exit(&ds->ds_lock); + return (gotit); +} + +uint64_t +dsl_dataset_create_sync_dd(dsl_dir_t *dd, dsl_dataset_t *origin, + uint64_t flags, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dd->dd_pool; + dmu_buf_t *dbuf; + dsl_dataset_phys_t *dsphys; + uint64_t dsobj; + objset_t *mos = dp->dp_meta_objset; + + if (origin == NULL) + origin = dp->dp_origin_snap; + + ASSERT(origin == NULL || origin->ds_dir->dd_pool == dp); + ASSERT(origin == NULL || dsl_dataset_phys(origin)->ds_num_children > 0); + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(dsl_dir_phys(dd)->dd_head_dataset_obj == 0); + + dsobj = dmu_object_alloc(mos, DMU_OT_DSL_DATASET, 0, + DMU_OT_DSL_DATASET, sizeof (dsl_dataset_phys_t), tx); + VERIFY0(dmu_bonus_hold(mos, dsobj, FTAG, &dbuf)); + dmu_buf_will_dirty(dbuf, tx); + dsphys = dbuf->db_data; + bzero(dsphys, sizeof (dsl_dataset_phys_t)); + dsphys->ds_dir_obj = dd->dd_object; + dsphys->ds_flags = flags; + dsphys->ds_fsid_guid = unique_create(); + (void) random_get_pseudo_bytes((void*)&dsphys->ds_guid, + sizeof (dsphys->ds_guid)); + dsphys->ds_snapnames_zapobj = + zap_create_norm(mos, U8_TEXTPREP_TOUPPER, DMU_OT_DSL_DS_SNAP_MAP, + DMU_OT_NONE, 0, tx); + dsphys->ds_creation_time = gethrestime_sec(); + dsphys->ds_creation_txg = tx->tx_txg == TXG_INITIAL ? 1 : tx->tx_txg; + + if (origin == NULL) { + dsphys->ds_deadlist_obj = dsl_deadlist_alloc(mos, tx); + } else { + dsl_dataset_t *ohds; /* head of the origin snapshot */ + + dsphys->ds_prev_snap_obj = origin->ds_object; + dsphys->ds_prev_snap_txg = + dsl_dataset_phys(origin)->ds_creation_txg; + dsphys->ds_referenced_bytes = + dsl_dataset_phys(origin)->ds_referenced_bytes; + dsphys->ds_compressed_bytes = + dsl_dataset_phys(origin)->ds_compressed_bytes; + dsphys->ds_uncompressed_bytes = + dsl_dataset_phys(origin)->ds_uncompressed_bytes; + dsphys->ds_bp = dsl_dataset_phys(origin)->ds_bp; + + /* + * Inherit flags that describe the dataset's contents + * (INCONSISTENT) or properties (Case Insensitive). + */ + dsphys->ds_flags |= dsl_dataset_phys(origin)->ds_flags & + (DS_FLAG_INCONSISTENT | DS_FLAG_CI_DATASET); + + if (origin->ds_large_blocks) + dsl_dataset_activate_large_blocks_sync_impl(dsobj, tx); + + dmu_buf_will_dirty(origin->ds_dbuf, tx); + dsl_dataset_phys(origin)->ds_num_children++; + + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dir_phys(origin->ds_dir)->dd_head_dataset_obj, + FTAG, &ohds)); + dsphys->ds_deadlist_obj = dsl_deadlist_clone(&ohds->ds_deadlist, + dsphys->ds_prev_snap_txg, dsphys->ds_prev_snap_obj, tx); + dsl_dataset_rele(ohds, FTAG); + + if (spa_version(dp->dp_spa) >= SPA_VERSION_NEXT_CLONES) { + if (dsl_dataset_phys(origin)->ds_next_clones_obj == 0) { + dsl_dataset_phys(origin)->ds_next_clones_obj = + zap_create(mos, + DMU_OT_NEXT_CLONES, DMU_OT_NONE, 0, tx); + } + VERIFY0(zap_add_int(mos, + dsl_dataset_phys(origin)->ds_next_clones_obj, + dsobj, tx)); + } + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + dsl_dir_phys(dd)->dd_origin_obj = origin->ds_object; + if (spa_version(dp->dp_spa) >= SPA_VERSION_DIR_CLONES) { + if (dsl_dir_phys(origin->ds_dir)->dd_clones == 0) { + dmu_buf_will_dirty(origin->ds_dir->dd_dbuf, tx); + dsl_dir_phys(origin->ds_dir)->dd_clones = + zap_create(mos, + DMU_OT_DSL_CLONES, DMU_OT_NONE, 0, tx); + } + VERIFY0(zap_add_int(mos, + dsl_dir_phys(origin->ds_dir)->dd_clones, + dsobj, tx)); + } + } + + if (spa_version(dp->dp_spa) >= SPA_VERSION_UNIQUE_ACCURATE) + dsphys->ds_flags |= DS_FLAG_UNIQUE_ACCURATE; + + dmu_buf_rele(dbuf, FTAG); + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + dsl_dir_phys(dd)->dd_head_dataset_obj = dsobj; + + return (dsobj); +} + +static void +dsl_dataset_zero_zil(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + objset_t *os; + + VERIFY0(dmu_objset_from_ds(ds, &os)); + bzero(&os->os_zil_header, sizeof (os->os_zil_header)); + dsl_dataset_dirty(ds, tx); +} + +uint64_t +dsl_dataset_create_sync(dsl_dir_t *pdd, const char *lastname, + dsl_dataset_t *origin, uint64_t flags, cred_t *cr, dmu_tx_t *tx) +{ + dsl_pool_t *dp = pdd->dd_pool; + uint64_t dsobj, ddobj; + dsl_dir_t *dd; + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(lastname[0] != '@'); + + ddobj = dsl_dir_create_sync(dp, pdd, lastname, tx); + VERIFY0(dsl_dir_hold_obj(dp, ddobj, lastname, FTAG, &dd)); + + dsobj = dsl_dataset_create_sync_dd(dd, origin, + flags & ~DS_CREATE_FLAG_NODIRTY, tx); + + dsl_deleg_set_create_perms(dd, tx, cr); + + /* + * Since we're creating a new node we know it's a leaf, so we can + * initialize the counts if the limit feature is active. + */ + if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_FS_SS_LIMIT)) { + uint64_t cnt = 0; + objset_t *os = dd->dd_pool->dp_meta_objset; + + dsl_dir_zapify(dd, tx); + VERIFY0(zap_add(os, dd->dd_object, DD_FIELD_FILESYSTEM_COUNT, + sizeof (cnt), 1, &cnt, tx)); + VERIFY0(zap_add(os, dd->dd_object, DD_FIELD_SNAPSHOT_COUNT, + sizeof (cnt), 1, &cnt, tx)); + } + + dsl_dir_rele(dd, FTAG); + + /* + * If we are creating a clone, make sure we zero out any stale + * data from the origin snapshots zil header. + */ + if (origin != NULL && !(flags & DS_CREATE_FLAG_NODIRTY)) { + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold_obj(dp, dsobj, FTAG, &ds)); + dsl_dataset_zero_zil(ds, tx); + dsl_dataset_rele(ds, FTAG); + } + + return (dsobj); +} + +/* + * The unique space in the head dataset can be calculated by subtracting + * the space used in the most recent snapshot, that is still being used + * in this file system, from the space currently in use. To figure out + * the space in the most recent snapshot still in use, we need to take + * the total space used in the snapshot and subtract out the space that + * has been freed up since the snapshot was taken. + */ +void +dsl_dataset_recalc_head_uniq(dsl_dataset_t *ds) +{ + uint64_t mrs_used; + uint64_t dlused, dlcomp, dluncomp; + + ASSERT(!ds->ds_is_snapshot); + + if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) + mrs_used = dsl_dataset_phys(ds->ds_prev)->ds_referenced_bytes; + else + mrs_used = 0; + + dsl_deadlist_space(&ds->ds_deadlist, &dlused, &dlcomp, &dluncomp); + + ASSERT3U(dlused, <=, mrs_used); + dsl_dataset_phys(ds)->ds_unique_bytes = + dsl_dataset_phys(ds)->ds_referenced_bytes - (mrs_used - dlused); + + if (spa_version(ds->ds_dir->dd_pool->dp_spa) >= + SPA_VERSION_UNIQUE_ACCURATE) + dsl_dataset_phys(ds)->ds_flags |= DS_FLAG_UNIQUE_ACCURATE; +} + +void +dsl_dataset_remove_from_next_clones(dsl_dataset_t *ds, uint64_t obj, + dmu_tx_t *tx) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + int err; + ASSERTV(uint64_t count); + + ASSERT(dsl_dataset_phys(ds)->ds_num_children >= 2); + err = zap_remove_int(mos, dsl_dataset_phys(ds)->ds_next_clones_obj, + obj, tx); + /* + * The err should not be ENOENT, but a bug in a previous version + * of the code could cause upgrade_clones_cb() to not set + * ds_next_snap_obj when it should, leading to a missing entry. + * If we knew that the pool was created after + * SPA_VERSION_NEXT_CLONES, we could assert that it isn't + * ENOENT. However, at least we can check that we don't have + * too many entries in the next_clones_obj even after failing to + * remove this one. + */ + if (err != ENOENT) + VERIFY0(err); + ASSERT0(zap_count(mos, dsl_dataset_phys(ds)->ds_next_clones_obj, + &count)); + ASSERT3U(count, <=, dsl_dataset_phys(ds)->ds_num_children - 2); +} + + +blkptr_t * +dsl_dataset_get_blkptr(dsl_dataset_t *ds) +{ + return (&dsl_dataset_phys(ds)->ds_bp); +} + +void +dsl_dataset_set_blkptr(dsl_dataset_t *ds, blkptr_t *bp, dmu_tx_t *tx) +{ + ASSERT(dmu_tx_is_syncing(tx)); + /* If it's the meta-objset, set dp_meta_rootbp */ + if (ds == NULL) { + tx->tx_pool->dp_meta_rootbp = *bp; + } else { + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_bp = *bp; + } +} + +spa_t * +dsl_dataset_get_spa(dsl_dataset_t *ds) +{ + return (ds->ds_dir->dd_pool->dp_spa); +} + +void +dsl_dataset_dirty(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + dsl_pool_t *dp; + + if (ds == NULL) /* this is the meta-objset */ + return; + + ASSERT(ds->ds_objset != NULL); + + if (dsl_dataset_phys(ds)->ds_next_snap_obj != 0) + panic("dirtying snapshot!"); + + dp = ds->ds_dir->dd_pool; + + if (txg_list_add(&dp->dp_dirty_datasets, ds, tx->tx_txg)) { + /* up the hold count until we can be written out */ + dmu_buf_add_ref(ds->ds_dbuf, ds); + } +} + +boolean_t +dsl_dataset_is_dirty(dsl_dataset_t *ds) +{ + int t; + + for (t = 0; t < TXG_SIZE; t++) { + if (txg_list_member(&ds->ds_dir->dd_pool->dp_dirty_datasets, + ds, t)) + return (B_TRUE); + } + return (B_FALSE); +} + +static int +dsl_dataset_snapshot_reserve_space(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + uint64_t asize; + + if (!dmu_tx_is_syncing(tx)) + return (0); + + /* + * If there's an fs-only reservation, any blocks that might become + * owned by the snapshot dataset must be accommodated by space + * outside of the reservation. + */ + ASSERT(ds->ds_reserved == 0 || DS_UNIQUE_IS_ACCURATE(ds)); + asize = MIN(dsl_dataset_phys(ds)->ds_unique_bytes, ds->ds_reserved); + if (asize > dsl_dir_space_available(ds->ds_dir, NULL, 0, TRUE)) + return (SET_ERROR(ENOSPC)); + + /* + * Propagate any reserved space for this snapshot to other + * snapshot checks in this sync group. + */ + if (asize > 0) + dsl_dir_willuse_space(ds->ds_dir, asize, tx); + + return (0); +} + +typedef struct dsl_dataset_snapshot_arg { + nvlist_t *ddsa_snaps; + nvlist_t *ddsa_props; + nvlist_t *ddsa_errors; + cred_t *ddsa_cr; +} dsl_dataset_snapshot_arg_t; + +int +dsl_dataset_snapshot_check_impl(dsl_dataset_t *ds, const char *snapname, + dmu_tx_t *tx, boolean_t recv, uint64_t cnt, cred_t *cr) +{ + int error; + uint64_t value; + + ds->ds_trysnap_txg = tx->tx_txg; + + if (!dmu_tx_is_syncing(tx)) + return (0); + + /* + * We don't allow multiple snapshots of the same txg. If there + * is already one, try again. + */ + if (dsl_dataset_phys(ds)->ds_prev_snap_txg >= tx->tx_txg) + return (SET_ERROR(EAGAIN)); + + /* + * Check for conflicting snapshot name. + */ + error = dsl_dataset_snap_lookup(ds, snapname, &value); + if (error == 0) + return (SET_ERROR(EEXIST)); + if (error != ENOENT) + return (error); + + /* + * We don't allow taking snapshots of inconsistent datasets, such as + * those into which we are currently receiving. However, if we are + * creating this snapshot as part of a receive, this check will be + * executed atomically with respect to the completion of the receive + * itself but prior to the clearing of DS_FLAG_INCONSISTENT; in this + * case we ignore this, knowing it will be fixed up for us shortly in + * dmu_recv_end_sync(). + */ + if (!recv && DS_IS_INCONSISTENT(ds)) + return (SET_ERROR(EBUSY)); + + /* + * Skip the check for temporary snapshots or if we have already checked + * the counts in dsl_dataset_snapshot_check. This means we really only + * check the count here when we're receiving a stream. + */ + if (cnt != 0 && cr != NULL) { + error = dsl_fs_ss_limit_check(ds->ds_dir, cnt, + ZFS_PROP_SNAPSHOT_LIMIT, NULL, cr); + if (error != 0) + return (error); + } + + error = dsl_dataset_snapshot_reserve_space(ds, tx); + if (error != 0) + return (error); + + return (0); +} + +static int +dsl_dataset_snapshot_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_snapshot_arg_t *ddsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + int rv = 0; + + /* + * Pre-compute how many total new snapshots will be created for each + * level in the tree and below. This is needed for validating the + * snapshot limit when either taking a recursive snapshot or when + * taking multiple snapshots. + * + * The problem is that the counts are not actually adjusted when + * we are checking, only when we finally sync. For a single snapshot, + * this is easy, the count will increase by 1 at each node up the tree, + * but its more complicated for the recursive/multiple snapshot case. + * + * The dsl_fs_ss_limit_check function does recursively check the count + * at each level up the tree but since it is validating each snapshot + * independently we need to be sure that we are validating the complete + * count for the entire set of snapshots. We do this by rolling up the + * counts for each component of the name into an nvlist and then + * checking each of those cases with the aggregated count. + * + * This approach properly handles not only the recursive snapshot + * case (where we get all of those on the ddsa_snaps list) but also + * the sibling case (e.g. snapshot a/b and a/c so that we will also + * validate the limit on 'a' using a count of 2). + * + * We validate the snapshot names in the third loop and only report + * name errors once. + */ + if (dmu_tx_is_syncing(tx)) { + char *nm; + nvlist_t *cnt_track = NULL; + cnt_track = fnvlist_alloc(); + + nm = kmem_alloc(MAXPATHLEN, KM_SLEEP); + + /* Rollup aggregated counts into the cnt_track list */ + for (pair = nvlist_next_nvpair(ddsa->ddsa_snaps, NULL); + pair != NULL; + pair = nvlist_next_nvpair(ddsa->ddsa_snaps, pair)) { + char *pdelim; + uint64_t val; + + (void) strlcpy(nm, nvpair_name(pair), MAXPATHLEN); + pdelim = strchr(nm, '@'); + if (pdelim == NULL) + continue; + *pdelim = '\0'; + + do { + if (nvlist_lookup_uint64(cnt_track, nm, + &val) == 0) { + /* update existing entry */ + fnvlist_add_uint64(cnt_track, nm, + val + 1); + } else { + /* add to list */ + fnvlist_add_uint64(cnt_track, nm, 1); + } + + pdelim = strrchr(nm, '/'); + if (pdelim != NULL) + *pdelim = '\0'; + } while (pdelim != NULL); + } + + kmem_free(nm, MAXPATHLEN); + + /* Check aggregated counts at each level */ + for (pair = nvlist_next_nvpair(cnt_track, NULL); + pair != NULL; pair = nvlist_next_nvpair(cnt_track, pair)) { + int error = 0; + char *name; + uint64_t cnt = 0; + dsl_dataset_t *ds; + + name = nvpair_name(pair); + cnt = fnvpair_value_uint64(pair); + ASSERT(cnt > 0); + + error = dsl_dataset_hold(dp, name, FTAG, &ds); + if (error == 0) { + error = dsl_fs_ss_limit_check(ds->ds_dir, cnt, + ZFS_PROP_SNAPSHOT_LIMIT, NULL, + ddsa->ddsa_cr); + dsl_dataset_rele(ds, FTAG); + } + + if (error != 0) { + if (ddsa->ddsa_errors != NULL) + fnvlist_add_int32(ddsa->ddsa_errors, + name, error); + rv = error; + /* only report one error for this check */ + break; + } + } + nvlist_free(cnt_track); + } + + for (pair = nvlist_next_nvpair(ddsa->ddsa_snaps, NULL); + pair != NULL; pair = nvlist_next_nvpair(ddsa->ddsa_snaps, pair)) { + int error = 0; + dsl_dataset_t *ds; + char *name, *atp; + char dsname[MAXNAMELEN]; + + name = nvpair_name(pair); + if (strlen(name) >= MAXNAMELEN) + error = SET_ERROR(ENAMETOOLONG); + if (error == 0) { + atp = strchr(name, '@'); + if (atp == NULL) + error = SET_ERROR(EINVAL); + if (error == 0) + (void) strlcpy(dsname, name, atp - name + 1); + } + if (error == 0) + error = dsl_dataset_hold(dp, dsname, FTAG, &ds); + if (error == 0) { + /* passing 0/NULL skips dsl_fs_ss_limit_check */ + error = dsl_dataset_snapshot_check_impl(ds, + atp + 1, tx, B_FALSE, 0, NULL); + dsl_dataset_rele(ds, FTAG); + } + + if (error != 0) { + if (ddsa->ddsa_errors != NULL) { + fnvlist_add_int32(ddsa->ddsa_errors, + name, error); + } + rv = error; + } + } + + return (rv); +} + +void +dsl_dataset_snapshot_sync_impl(dsl_dataset_t *ds, const char *snapname, + dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + dmu_buf_t *dbuf; + dsl_dataset_phys_t *dsphys; + uint64_t dsobj, crtxg; + objset_t *mos = dp->dp_meta_objset; + ASSERTV(static zil_header_t zero_zil); + ASSERTV(objset_t *os); + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + + /* + * If we are on an old pool, the zil must not be active, in which + * case it will be zeroed. Usually zil_suspend() accomplishes this. + */ + ASSERT(spa_version(dmu_tx_pool(tx)->dp_spa) >= SPA_VERSION_FAST_SNAP || + dmu_objset_from_ds(ds, &os) != 0 || + bcmp(&os->os_phys->os_zil_header, &zero_zil, + sizeof (zero_zil)) == 0); + + dsl_fs_ss_count_adjust(ds->ds_dir, 1, DD_FIELD_SNAPSHOT_COUNT, tx); + + /* + * The origin's ds_creation_txg has to be < TXG_INITIAL + */ + if (strcmp(snapname, ORIGIN_DIR_NAME) == 0) + crtxg = 1; + else + crtxg = tx->tx_txg; + + dsobj = dmu_object_alloc(mos, DMU_OT_DSL_DATASET, 0, + DMU_OT_DSL_DATASET, sizeof (dsl_dataset_phys_t), tx); + VERIFY0(dmu_bonus_hold(mos, dsobj, FTAG, &dbuf)); + dmu_buf_will_dirty(dbuf, tx); + dsphys = dbuf->db_data; + bzero(dsphys, sizeof (dsl_dataset_phys_t)); + dsphys->ds_dir_obj = ds->ds_dir->dd_object; + dsphys->ds_fsid_guid = unique_create(); + (void) random_get_pseudo_bytes((void*)&dsphys->ds_guid, + sizeof (dsphys->ds_guid)); + dsphys->ds_prev_snap_obj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + dsphys->ds_prev_snap_txg = dsl_dataset_phys(ds)->ds_prev_snap_txg; + dsphys->ds_next_snap_obj = ds->ds_object; + dsphys->ds_num_children = 1; + dsphys->ds_creation_time = gethrestime_sec(); + dsphys->ds_creation_txg = crtxg; + dsphys->ds_deadlist_obj = dsl_dataset_phys(ds)->ds_deadlist_obj; + dsphys->ds_referenced_bytes = dsl_dataset_phys(ds)->ds_referenced_bytes; + dsphys->ds_compressed_bytes = dsl_dataset_phys(ds)->ds_compressed_bytes; + dsphys->ds_uncompressed_bytes = + dsl_dataset_phys(ds)->ds_uncompressed_bytes; + dsphys->ds_flags = dsl_dataset_phys(ds)->ds_flags; + dsphys->ds_bp = dsl_dataset_phys(ds)->ds_bp; + dmu_buf_rele(dbuf, FTAG); + + if (ds->ds_large_blocks) + dsl_dataset_activate_large_blocks_sync_impl(dsobj, tx); + + ASSERT3U(ds->ds_prev != 0, ==, + dsl_dataset_phys(ds)->ds_prev_snap_obj != 0); + if (ds->ds_prev) { + uint64_t next_clones_obj = + dsl_dataset_phys(ds->ds_prev)->ds_next_clones_obj; + ASSERT(dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj == + ds->ds_object || + dsl_dataset_phys(ds->ds_prev)->ds_num_children > 1); + if (dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj == + ds->ds_object) { + dmu_buf_will_dirty(ds->ds_prev->ds_dbuf, tx); + ASSERT3U(dsl_dataset_phys(ds)->ds_prev_snap_txg, ==, + dsl_dataset_phys(ds->ds_prev)->ds_creation_txg); + dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj = dsobj; + } else if (next_clones_obj != 0) { + dsl_dataset_remove_from_next_clones(ds->ds_prev, + dsphys->ds_next_snap_obj, tx); + VERIFY0(zap_add_int(mos, + next_clones_obj, dsobj, tx)); + } + } + + /* + * If we have a reference-reservation on this dataset, we will + * need to increase the amount of refreservation being charged + * since our unique space is going to zero. + */ + if (ds->ds_reserved) { + int64_t delta; + ASSERT(DS_UNIQUE_IS_ACCURATE(ds)); + delta = MIN(dsl_dataset_phys(ds)->ds_unique_bytes, + ds->ds_reserved); + dsl_dir_diduse_space(ds->ds_dir, DD_USED_REFRSRV, + delta, 0, 0, tx); + } + + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_deadlist_obj = + dsl_deadlist_clone(&ds->ds_deadlist, UINT64_MAX, + dsl_dataset_phys(ds)->ds_prev_snap_obj, tx); + dsl_deadlist_close(&ds->ds_deadlist); + dsl_deadlist_open(&ds->ds_deadlist, mos, + dsl_dataset_phys(ds)->ds_deadlist_obj); + dsl_deadlist_add_key(&ds->ds_deadlist, + dsl_dataset_phys(ds)->ds_prev_snap_txg, tx); + + ASSERT3U(dsl_dataset_phys(ds)->ds_prev_snap_txg, <, tx->tx_txg); + dsl_dataset_phys(ds)->ds_prev_snap_obj = dsobj; + dsl_dataset_phys(ds)->ds_prev_snap_txg = crtxg; + dsl_dataset_phys(ds)->ds_unique_bytes = 0; + if (spa_version(dp->dp_spa) >= SPA_VERSION_UNIQUE_ACCURATE) + dsl_dataset_phys(ds)->ds_flags |= DS_FLAG_UNIQUE_ACCURATE; + + VERIFY0(zap_add(mos, dsl_dataset_phys(ds)->ds_snapnames_zapobj, + snapname, 8, 1, &dsobj, tx)); + + if (ds->ds_prev) + dsl_dataset_rele(ds->ds_prev, ds); + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, ds, &ds->ds_prev)); + + dsl_scan_ds_snapshotted(ds, tx); + + dsl_dir_snap_cmtime_update(ds->ds_dir); + + spa_history_log_internal_ds(ds->ds_prev, "snapshot", tx, ""); +} + +static void +dsl_dataset_snapshot_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_snapshot_arg_t *ddsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(ddsa->ddsa_snaps, NULL); + pair != NULL; pair = nvlist_next_nvpair(ddsa->ddsa_snaps, pair)) { + dsl_dataset_t *ds; + char *name, *atp; + char dsname[MAXNAMELEN]; + + name = nvpair_name(pair); + atp = strchr(name, '@'); + (void) strlcpy(dsname, name, atp - name + 1); + VERIFY0(dsl_dataset_hold(dp, dsname, FTAG, &ds)); + + dsl_dataset_snapshot_sync_impl(ds, atp + 1, tx); + if (ddsa->ddsa_props != NULL) { + dsl_props_set_sync_impl(ds->ds_prev, + ZPROP_SRC_LOCAL, ddsa->ddsa_props, tx); + } + dsl_dataset_rele(ds, FTAG); + } +} + +/* + * The snapshots must all be in the same pool. + * All-or-nothing: if there are any failures, nothing will be modified. + */ +int +dsl_dataset_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t *errors) +{ + dsl_dataset_snapshot_arg_t ddsa; + nvpair_t *pair; + boolean_t needsuspend; + int error; + spa_t *spa; + char *firstname; + nvlist_t *suspended = NULL; + + pair = nvlist_next_nvpair(snaps, NULL); + if (pair == NULL) + return (0); + firstname = nvpair_name(pair); + + error = spa_open(firstname, &spa, FTAG); + if (error != 0) + return (error); + needsuspend = (spa_version(spa) < SPA_VERSION_FAST_SNAP); + spa_close(spa, FTAG); + + if (needsuspend) { + suspended = fnvlist_alloc(); + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nvlist_next_nvpair(snaps, pair)) { + char fsname[MAXNAMELEN]; + char *snapname = nvpair_name(pair); + char *atp; + void *cookie; + + atp = strchr(snapname, '@'); + if (atp == NULL) { + error = SET_ERROR(EINVAL); + break; + } + (void) strlcpy(fsname, snapname, atp - snapname + 1); + + error = zil_suspend(fsname, &cookie); + if (error != 0) + break; + fnvlist_add_uint64(suspended, fsname, + (uintptr_t)cookie); + } + } + + ddsa.ddsa_snaps = snaps; + ddsa.ddsa_props = props; + ddsa.ddsa_errors = errors; + ddsa.ddsa_cr = CRED(); + + if (error == 0) { + error = dsl_sync_task(firstname, dsl_dataset_snapshot_check, + dsl_dataset_snapshot_sync, &ddsa, + fnvlist_num_pairs(snaps) * 3, ZFS_SPACE_CHECK_NORMAL); + } + + if (suspended != NULL) { + for (pair = nvlist_next_nvpair(suspended, NULL); pair != NULL; + pair = nvlist_next_nvpair(suspended, pair)) { + zil_resume((void *)(uintptr_t) + fnvpair_value_uint64(pair)); + } + fnvlist_free(suspended); + } + +#ifdef _KERNEL + if (error == 0) { + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nvlist_next_nvpair(snaps, pair)) { + char *snapname = nvpair_name(pair); + zvol_create_minors(snapname); + } + } +#endif + + return (error); +} + +typedef struct dsl_dataset_snapshot_tmp_arg { + const char *ddsta_fsname; + const char *ddsta_snapname; + minor_t ddsta_cleanup_minor; + const char *ddsta_htag; +} dsl_dataset_snapshot_tmp_arg_t; + +static int +dsl_dataset_snapshot_tmp_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_snapshot_tmp_arg_t *ddsta = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int error; + + error = dsl_dataset_hold(dp, ddsta->ddsta_fsname, FTAG, &ds); + if (error != 0) + return (error); + + /* NULL cred means no limit check for tmp snapshot */ + error = dsl_dataset_snapshot_check_impl(ds, ddsta->ddsta_snapname, + tx, B_FALSE, 0, NULL); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + if (spa_version(dp->dp_spa) < SPA_VERSION_USERREFS) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOTSUP)); + } + error = dsl_dataset_user_hold_check_one(NULL, ddsta->ddsta_htag, + B_TRUE, tx); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_dataset_snapshot_tmp_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_snapshot_tmp_arg_t *ddsta = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, ddsta->ddsta_fsname, FTAG, &ds)); + + dsl_dataset_snapshot_sync_impl(ds, ddsta->ddsta_snapname, tx); + dsl_dataset_user_hold_sync_one(ds->ds_prev, ddsta->ddsta_htag, + ddsta->ddsta_cleanup_minor, gethrestime_sec(), tx); + dsl_destroy_snapshot_sync_impl(ds->ds_prev, B_TRUE, tx); + + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dataset_snapshot_tmp(const char *fsname, const char *snapname, + minor_t cleanup_minor, const char *htag) +{ + dsl_dataset_snapshot_tmp_arg_t ddsta; + int error; + spa_t *spa; + boolean_t needsuspend; + void *cookie; + + ddsta.ddsta_fsname = fsname; + ddsta.ddsta_snapname = snapname; + ddsta.ddsta_cleanup_minor = cleanup_minor; + ddsta.ddsta_htag = htag; + + error = spa_open(fsname, &spa, FTAG); + if (error != 0) + return (error); + needsuspend = (spa_version(spa) < SPA_VERSION_FAST_SNAP); + spa_close(spa, FTAG); + + if (needsuspend) { + error = zil_suspend(fsname, &cookie); + if (error != 0) + return (error); + } + + error = dsl_sync_task(fsname, dsl_dataset_snapshot_tmp_check, + dsl_dataset_snapshot_tmp_sync, &ddsta, 3, ZFS_SPACE_CHECK_RESERVED); + + if (needsuspend) + zil_resume(cookie); + return (error); +} + + +void +dsl_dataset_sync(dsl_dataset_t *ds, zio_t *zio, dmu_tx_t *tx) +{ + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(ds->ds_objset != NULL); + ASSERT(dsl_dataset_phys(ds)->ds_next_snap_obj == 0); + + /* + * in case we had to change ds_fsid_guid when we opened it, + * sync it out now. + */ + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_fsid_guid = ds->ds_fsid_guid; + + dmu_objset_sync(ds->ds_objset, zio, tx); + + if (ds->ds_need_large_blocks && !ds->ds_large_blocks) { + dsl_dataset_activate_large_blocks_sync_impl(ds->ds_object, tx); + ds->ds_large_blocks = B_TRUE; + } +} + +static void +get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv) +{ + uint64_t count = 0; + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + zap_cursor_t zc; + zap_attribute_t za; + nvlist_t *propval = fnvlist_alloc(); + nvlist_t *val = fnvlist_alloc(); + + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + + /* + * There may be missing entries in ds_next_clones_obj + * due to a bug in a previous version of the code. + * Only trust it if it has the right number of entries. + */ + if (dsl_dataset_phys(ds)->ds_next_clones_obj != 0) { + VERIFY0(zap_count(mos, dsl_dataset_phys(ds)->ds_next_clones_obj, + &count)); + } + if (count != dsl_dataset_phys(ds)->ds_num_children - 1) + goto fail; + for (zap_cursor_init(&zc, mos, + dsl_dataset_phys(ds)->ds_next_clones_obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + dsl_dataset_t *clone; + char buf[ZFS_MAXNAMELEN]; + VERIFY0(dsl_dataset_hold_obj(ds->ds_dir->dd_pool, + za.za_first_integer, FTAG, &clone)); + dsl_dir_name(clone->ds_dir, buf); + fnvlist_add_boolean(val, buf); + dsl_dataset_rele(clone, FTAG); + } + zap_cursor_fini(&zc); + fnvlist_add_nvlist(propval, ZPROP_VALUE, val); + fnvlist_add_nvlist(nv, zfs_prop_to_name(ZFS_PROP_CLONES), propval); +fail: + nvlist_free(val); + nvlist_free(propval); +} + +void +dsl_dataset_stats(dsl_dataset_t *ds, nvlist_t *nv) +{ + uint64_t refd, avail, uobjs, aobjs, ratio; + ASSERTV(dsl_pool_t *dp = ds->ds_dir->dd_pool); + + ASSERT(dsl_pool_config_held(dp)); + + ratio = dsl_dataset_phys(ds)->ds_compressed_bytes == 0 ? 100 : + (dsl_dataset_phys(ds)->ds_uncompressed_bytes * 100 / + dsl_dataset_phys(ds)->ds_compressed_bytes); + + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_REFRATIO, ratio); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_LOGICALREFERENCED, + dsl_dataset_phys(ds)->ds_uncompressed_bytes); + + if (ds->ds_is_snapshot) { + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_COMPRESSRATIO, ratio); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USED, + dsl_dataset_phys(ds)->ds_unique_bytes); + get_clones_stat(ds, nv); + } else { + dsl_dir_stats(ds->ds_dir, nv); + } + + dsl_dataset_space(ds, &refd, &avail, &uobjs, &aobjs); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_AVAILABLE, avail); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_REFERENCED, refd); + + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_CREATION, + dsl_dataset_phys(ds)->ds_creation_time); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_CREATETXG, + dsl_dataset_phys(ds)->ds_creation_txg); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_REFQUOTA, + ds->ds_quota); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_REFRESERVATION, + ds->ds_reserved); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_GUID, + dsl_dataset_phys(ds)->ds_guid); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_UNIQUE, + dsl_dataset_phys(ds)->ds_unique_bytes); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_OBJSETID, + ds->ds_object); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USERREFS, + ds->ds_userrefs); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_DEFER_DESTROY, + DS_IS_DEFER_DESTROY(ds) ? 1 : 0); + + if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + uint64_t written, comp, uncomp; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + dsl_dataset_t *prev; + int err; + + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, FTAG, &prev); + if (err == 0) { + err = dsl_dataset_space_written(prev, ds, &written, + &comp, &uncomp); + dsl_dataset_rele(prev, FTAG); + if (err == 0) { + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_WRITTEN, + written); + } + } + } + +} + +void +dsl_dataset_fast_stat(dsl_dataset_t *ds, dmu_objset_stats_t *stat) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + ASSERT(dsl_pool_config_held(dp)); + + stat->dds_creation_txg = dsl_dataset_phys(ds)->ds_creation_txg; + stat->dds_inconsistent = + dsl_dataset_phys(ds)->ds_flags & DS_FLAG_INCONSISTENT; + stat->dds_guid = dsl_dataset_phys(ds)->ds_guid; + stat->dds_origin[0] = '\0'; + if (ds->ds_is_snapshot) { + stat->dds_is_snapshot = B_TRUE; + stat->dds_num_clones = + dsl_dataset_phys(ds)->ds_num_children - 1; + } else { + stat->dds_is_snapshot = B_FALSE; + stat->dds_num_clones = 0; + + if (dsl_dir_is_clone(ds->ds_dir)) { + dsl_dataset_t *ods; + + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dir_phys(ds->ds_dir)->dd_origin_obj, + FTAG, &ods)); + dsl_dataset_name(ods, stat->dds_origin); + dsl_dataset_rele(ods, FTAG); + } + } +} + +uint64_t +dsl_dataset_fsid_guid(dsl_dataset_t *ds) +{ + return (ds->ds_fsid_guid); +} + +void +dsl_dataset_space(dsl_dataset_t *ds, + uint64_t *refdbytesp, uint64_t *availbytesp, + uint64_t *usedobjsp, uint64_t *availobjsp) +{ + *refdbytesp = dsl_dataset_phys(ds)->ds_referenced_bytes; + *availbytesp = dsl_dir_space_available(ds->ds_dir, NULL, 0, TRUE); + if (ds->ds_reserved > dsl_dataset_phys(ds)->ds_unique_bytes) + *availbytesp += + ds->ds_reserved - dsl_dataset_phys(ds)->ds_unique_bytes; + if (ds->ds_quota != 0) { + /* + * Adjust available bytes according to refquota + */ + if (*refdbytesp < ds->ds_quota) + *availbytesp = MIN(*availbytesp, + ds->ds_quota - *refdbytesp); + else + *availbytesp = 0; + } + *usedobjsp = BP_GET_FILL(&dsl_dataset_phys(ds)->ds_bp); + *availobjsp = DN_MAX_OBJECT - *usedobjsp; +} + +boolean_t +dsl_dataset_modified_since_snap(dsl_dataset_t *ds, dsl_dataset_t *snap) +{ + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + if (snap == NULL) + return (B_FALSE); + if (dsl_dataset_phys(ds)->ds_bp.blk_birth > + dsl_dataset_phys(snap)->ds_creation_txg) { + objset_t *os, *os_snap; + /* + * It may be that only the ZIL differs, because it was + * reset in the head. Don't count that as being + * modified. + */ + if (dmu_objset_from_ds(ds, &os) != 0) + return (B_TRUE); + if (dmu_objset_from_ds(snap, &os_snap) != 0) + return (B_TRUE); + return (bcmp(&os->os_phys->os_meta_dnode, + &os_snap->os_phys->os_meta_dnode, + sizeof (os->os_phys->os_meta_dnode)) != 0); + } + return (B_FALSE); +} + +typedef struct dsl_dataset_rename_snapshot_arg { + const char *ddrsa_fsname; + const char *ddrsa_oldsnapname; + const char *ddrsa_newsnapname; + boolean_t ddrsa_recursive; + dmu_tx_t *ddrsa_tx; +} dsl_dataset_rename_snapshot_arg_t; + +/* ARGSUSED */ +static int +dsl_dataset_rename_snapshot_check_impl(dsl_pool_t *dp, + dsl_dataset_t *hds, void *arg) +{ + dsl_dataset_rename_snapshot_arg_t *ddrsa = arg; + int error; + uint64_t val; + + error = dsl_dataset_snap_lookup(hds, ddrsa->ddrsa_oldsnapname, &val); + if (error != 0) { + /* ignore nonexistent snapshots */ + return (error == ENOENT ? 0 : error); + } + + /* new name should not exist */ + error = dsl_dataset_snap_lookup(hds, ddrsa->ddrsa_newsnapname, &val); + if (error == 0) + error = SET_ERROR(EEXIST); + else if (error == ENOENT) + error = 0; + + /* dataset name + 1 for the "@" + the new snapshot name must fit */ + if (dsl_dir_namelen(hds->ds_dir) + 1 + + strlen(ddrsa->ddrsa_newsnapname) >= MAXNAMELEN) + error = SET_ERROR(ENAMETOOLONG); + + return (error); +} + +static int +dsl_dataset_rename_snapshot_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_rename_snapshot_arg_t *ddrsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *hds; + int error; + + error = dsl_dataset_hold(dp, ddrsa->ddrsa_fsname, FTAG, &hds); + if (error != 0) + return (error); + + if (ddrsa->ddrsa_recursive) { + error = dmu_objset_find_dp(dp, hds->ds_dir->dd_object, + dsl_dataset_rename_snapshot_check_impl, ddrsa, + DS_FIND_CHILDREN); + } else { + error = dsl_dataset_rename_snapshot_check_impl(dp, hds, ddrsa); + } + dsl_dataset_rele(hds, FTAG); + return (error); +} + +static int +dsl_dataset_rename_snapshot_sync_impl(dsl_pool_t *dp, + dsl_dataset_t *hds, void *arg) +{ + dsl_dataset_rename_snapshot_arg_t *ddrsa = arg; + dsl_dataset_t *ds; + uint64_t val; + dmu_tx_t *tx = ddrsa->ddrsa_tx; + int error; + + error = dsl_dataset_snap_lookup(hds, ddrsa->ddrsa_oldsnapname, &val); + ASSERT(error == 0 || error == ENOENT); + if (error == ENOENT) { + /* ignore nonexistent snapshots */ + return (0); + } + + VERIFY0(dsl_dataset_hold_obj(dp, val, FTAG, &ds)); + + /* log before we change the name */ + spa_history_log_internal_ds(ds, "rename", tx, + "-> @%s", ddrsa->ddrsa_newsnapname); + + VERIFY0(dsl_dataset_snap_remove(hds, ddrsa->ddrsa_oldsnapname, tx, + B_FALSE)); + mutex_enter(&ds->ds_lock); + (void) strcpy(ds->ds_snapname, ddrsa->ddrsa_newsnapname); + mutex_exit(&ds->ds_lock); + VERIFY0(zap_add(dp->dp_meta_objset, + dsl_dataset_phys(hds)->ds_snapnames_zapobj, + ds->ds_snapname, 8, 1, &ds->ds_object, tx)); + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_dataset_rename_snapshot_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_rename_snapshot_arg_t *ddrsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *hds; + + VERIFY0(dsl_dataset_hold(dp, ddrsa->ddrsa_fsname, FTAG, &hds)); + ddrsa->ddrsa_tx = tx; + if (ddrsa->ddrsa_recursive) { + VERIFY0(dmu_objset_find_dp(dp, hds->ds_dir->dd_object, + dsl_dataset_rename_snapshot_sync_impl, ddrsa, + DS_FIND_CHILDREN)); + } else { + VERIFY0(dsl_dataset_rename_snapshot_sync_impl(dp, hds, ddrsa)); + } + dsl_dataset_rele(hds, FTAG); +} + +int +dsl_dataset_rename_snapshot(const char *fsname, + const char *oldsnapname, const char *newsnapname, boolean_t recursive) +{ +#ifdef _KERNEL + char *oldname, *newname; +#endif + int error; + + dsl_dataset_rename_snapshot_arg_t ddrsa; + + ddrsa.ddrsa_fsname = fsname; + ddrsa.ddrsa_oldsnapname = oldsnapname; + ddrsa.ddrsa_newsnapname = newsnapname; + ddrsa.ddrsa_recursive = recursive; + + error = dsl_sync_task(fsname, dsl_dataset_rename_snapshot_check, + dsl_dataset_rename_snapshot_sync, &ddrsa, + 1, ZFS_SPACE_CHECK_RESERVED); + + if (error) + return (SET_ERROR(error)); + +#ifdef _KERNEL + oldname = kmem_asprintf("%s@%s", fsname, oldsnapname); + newname = kmem_asprintf("%s@%s", fsname, newsnapname); + zvol_rename_minors(oldname, newname); + strfree(newname); + strfree(oldname); +#endif + + return (0); +} + +/* + * If we're doing an ownership handoff, we need to make sure that there is + * only one long hold on the dataset. We're not allowed to change anything here + * so we don't permanently release the long hold or regular hold here. We want + * to do this only when syncing to avoid the dataset unexpectedly going away + * when we release the long hold. + */ +static int +dsl_dataset_handoff_check(dsl_dataset_t *ds, void *owner, dmu_tx_t *tx) +{ + boolean_t held; + + if (!dmu_tx_is_syncing(tx)) + return (0); + + if (owner != NULL) { + VERIFY3P(ds->ds_owner, ==, owner); + dsl_dataset_long_rele(ds, owner); + } + + held = dsl_dataset_long_held(ds); + + if (owner != NULL) + dsl_dataset_long_hold(ds, owner); + + if (held) + return (SET_ERROR(EBUSY)); + + return (0); +} + +typedef struct dsl_dataset_rollback_arg { + const char *ddra_fsname; + void *ddra_owner; + nvlist_t *ddra_result; +} dsl_dataset_rollback_arg_t; + +static int +dsl_dataset_rollback_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_rollback_arg_t *ddra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int64_t unused_refres_delta; + int error; + nvpair_t *pair; + nvlist_t *proprequest, *bookmarks; + + error = dsl_dataset_hold(dp, ddra->ddra_fsname, FTAG, &ds); + if (error != 0) + return (error); + + /* must not be a snapshot */ + if (ds->ds_is_snapshot) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + + /* must have a most recent snapshot */ + if (dsl_dataset_phys(ds)->ds_prev_snap_txg < TXG_INITIAL) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + + /* must not have any bookmarks after the most recent snapshot */ + proprequest = fnvlist_alloc(); + fnvlist_add_boolean(proprequest, zfs_prop_to_name(ZFS_PROP_CREATETXG)); + bookmarks = fnvlist_alloc(); + error = dsl_get_bookmarks_impl(ds, proprequest, bookmarks); + fnvlist_free(proprequest); + if (error != 0) + return (error); + for (pair = nvlist_next_nvpair(bookmarks, NULL); + pair != NULL; pair = nvlist_next_nvpair(bookmarks, pair)) { + nvlist_t *valuenv = + fnvlist_lookup_nvlist(fnvpair_value_nvlist(pair), + zfs_prop_to_name(ZFS_PROP_CREATETXG)); + uint64_t createtxg = fnvlist_lookup_uint64(valuenv, "value"); + if (createtxg > dsl_dataset_phys(ds)->ds_prev_snap_txg) { + fnvlist_free(bookmarks); + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EEXIST)); + } + } + fnvlist_free(bookmarks); + + error = dsl_dataset_handoff_check(ds, ddra->ddra_owner, tx); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + /* + * Check if the snap we are rolling back to uses more than + * the refquota. + */ + if (ds->ds_quota != 0 && + dsl_dataset_phys(ds->ds_prev)->ds_referenced_bytes > ds->ds_quota) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EDQUOT)); + } + + /* + * When we do the clone swap, we will temporarily use more space + * due to the refreservation (the head will no longer have any + * unique space, so the entire amount of the refreservation will need + * to be free). We will immediately destroy the clone, freeing + * this space, but the freeing happens over many txg's. + */ + unused_refres_delta = (int64_t)MIN(ds->ds_reserved, + dsl_dataset_phys(ds)->ds_unique_bytes); + + if (unused_refres_delta > 0 && + unused_refres_delta > + dsl_dir_space_available(ds->ds_dir, NULL, 0, TRUE)) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOSPC)); + } + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_dataset_rollback_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_rollback_arg_t *ddra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds, *clone; + uint64_t cloneobj; + char namebuf[ZFS_MAXNAMELEN]; + + VERIFY0(dsl_dataset_hold(dp, ddra->ddra_fsname, FTAG, &ds)); + + dsl_dataset_name(ds->ds_prev, namebuf); + fnvlist_add_string(ddra->ddra_result, "target", namebuf); + + cloneobj = dsl_dataset_create_sync(ds->ds_dir, "%rollback", + ds->ds_prev, DS_CREATE_FLAG_NODIRTY, kcred, tx); + + VERIFY0(dsl_dataset_hold_obj(dp, cloneobj, FTAG, &clone)); + + dsl_dataset_clone_swap_sync_impl(clone, ds, tx); + dsl_dataset_zero_zil(ds, tx); + + dsl_destroy_head_sync_impl(clone, tx); + + dsl_dataset_rele(clone, FTAG); + dsl_dataset_rele(ds, FTAG); +} + +/* + * Rolls back the given filesystem or volume to the most recent snapshot. + * The name of the most recent snapshot will be returned under key "target" + * in the result nvlist. + * + * If owner != NULL: + * - The existing dataset MUST be owned by the specified owner at entry + * - Upon return, dataset will still be held by the same owner, whether we + * succeed or not. + * + * This mode is required any time the existing filesystem is mounted. See + * notes above zfs_suspend_fs() for further details. + */ +int +dsl_dataset_rollback(const char *fsname, void *owner, nvlist_t *result) +{ + dsl_dataset_rollback_arg_t ddra; + + ddra.ddra_fsname = fsname; + ddra.ddra_owner = owner; + ddra.ddra_result = result; + + return (dsl_sync_task(fsname, dsl_dataset_rollback_check, + dsl_dataset_rollback_sync, &ddra, + 1, ZFS_SPACE_CHECK_RESERVED)); +} + +struct promotenode { + list_node_t link; + dsl_dataset_t *ds; +}; + +typedef struct dsl_dataset_promote_arg { + const char *ddpa_clonename; + dsl_dataset_t *ddpa_clone; + list_t shared_snaps, origin_snaps, clone_snaps; + dsl_dataset_t *origin_origin; /* origin of the origin */ + uint64_t used, comp, uncomp, unique, cloneusedsnap, originusedsnap; + char *err_ds; + cred_t *cr; +} dsl_dataset_promote_arg_t; + +static int snaplist_space(list_t *l, uint64_t mintxg, uint64_t *spacep); +static int promote_hold(dsl_dataset_promote_arg_t *ddpa, dsl_pool_t *dp, + void *tag); +static void promote_rele(dsl_dataset_promote_arg_t *ddpa, void *tag); + +static int +dsl_dataset_promote_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_promote_arg_t *ddpa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *hds; + struct promotenode *snap; + dsl_dataset_t *origin_ds; + int err; + uint64_t unused; + uint64_t ss_mv_cnt; + size_t max_snap_len; + + err = promote_hold(ddpa, dp, FTAG); + if (err != 0) + return (err); + + hds = ddpa->ddpa_clone; + max_snap_len = MAXNAMELEN - strlen(ddpa->ddpa_clonename) - 1; + + if (dsl_dataset_phys(hds)->ds_flags & DS_FLAG_NOPROMOTE) { + promote_rele(ddpa, FTAG); + return (SET_ERROR(EXDEV)); + } + + /* + * Compute and check the amount of space to transfer. Since this is + * so expensive, don't do the preliminary check. + */ + if (!dmu_tx_is_syncing(tx)) { + promote_rele(ddpa, FTAG); + return (0); + } + + snap = list_head(&ddpa->shared_snaps); + origin_ds = snap->ds; + + /* compute origin's new unique space */ + snap = list_tail(&ddpa->clone_snaps); + ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==, + origin_ds->ds_object); + dsl_deadlist_space_range(&snap->ds->ds_deadlist, + dsl_dataset_phys(origin_ds)->ds_prev_snap_txg, UINT64_MAX, + &ddpa->unique, &unused, &unused); + + /* + * Walk the snapshots that we are moving + * + * Compute space to transfer. Consider the incremental changes + * to used by each snapshot: + * (my used) = (prev's used) + (blocks born) - (blocks killed) + * So each snapshot gave birth to: + * (blocks born) = (my used) - (prev's used) + (blocks killed) + * So a sequence would look like: + * (uN - u(N-1) + kN) + ... + (u1 - u0 + k1) + (u0 - 0 + k0) + * Which simplifies to: + * uN + kN + kN-1 + ... + k1 + k0 + * Note however, if we stop before we reach the ORIGIN we get: + * uN + kN + kN-1 + ... + kM - uM-1 + */ + ss_mv_cnt = 0; + ddpa->used = dsl_dataset_phys(origin_ds)->ds_referenced_bytes; + ddpa->comp = dsl_dataset_phys(origin_ds)->ds_compressed_bytes; + ddpa->uncomp = dsl_dataset_phys(origin_ds)->ds_uncompressed_bytes; + for (snap = list_head(&ddpa->shared_snaps); snap; + snap = list_next(&ddpa->shared_snaps, snap)) { + uint64_t val, dlused, dlcomp, dluncomp; + dsl_dataset_t *ds = snap->ds; + + ss_mv_cnt++; + + /* + * If there are long holds, we won't be able to evict + * the objset. + */ + if (dsl_dataset_long_held(ds)) { + err = SET_ERROR(EBUSY); + goto out; + } + + /* Check that the snapshot name does not conflict */ + VERIFY0(dsl_dataset_get_snapname(ds)); + if (strlen(ds->ds_snapname) >= max_snap_len) { + err = SET_ERROR(ENAMETOOLONG); + goto out; + } + err = dsl_dataset_snap_lookup(hds, ds->ds_snapname, &val); + if (err == 0) { + (void) strcpy(ddpa->err_ds, snap->ds->ds_snapname); + err = SET_ERROR(EEXIST); + goto out; + } + if (err != ENOENT) + goto out; + + /* The very first snapshot does not have a deadlist */ + if (dsl_dataset_phys(ds)->ds_prev_snap_obj == 0) + continue; + + dsl_deadlist_space(&ds->ds_deadlist, + &dlused, &dlcomp, &dluncomp); + ddpa->used += dlused; + ddpa->comp += dlcomp; + ddpa->uncomp += dluncomp; + } + + /* + * If we are a clone of a clone then we never reached ORIGIN, + * so we need to subtract out the clone origin's used space. + */ + if (ddpa->origin_origin) { + ddpa->used -= + dsl_dataset_phys(ddpa->origin_origin)->ds_referenced_bytes; + ddpa->comp -= + dsl_dataset_phys(ddpa->origin_origin)->ds_compressed_bytes; + ddpa->uncomp -= + dsl_dataset_phys(ddpa->origin_origin)-> + ds_uncompressed_bytes; + } + + /* Check that there is enough space and limit headroom here */ + err = dsl_dir_transfer_possible(origin_ds->ds_dir, hds->ds_dir, + 0, ss_mv_cnt, ddpa->used, ddpa->cr); + if (err != 0) + goto out; + + /* + * Compute the amounts of space that will be used by snapshots + * after the promotion (for both origin and clone). For each, + * it is the amount of space that will be on all of their + * deadlists (that was not born before their new origin). + */ + if (dsl_dir_phys(hds->ds_dir)->dd_flags & DD_FLAG_USED_BREAKDOWN) { + uint64_t space; + + /* + * Note, typically this will not be a clone of a clone, + * so dd_origin_txg will be < TXG_INITIAL, so + * these snaplist_space() -> dsl_deadlist_space_range() + * calls will be fast because they do not have to + * iterate over all bps. + */ + snap = list_head(&ddpa->origin_snaps); + err = snaplist_space(&ddpa->shared_snaps, + snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap); + if (err != 0) + goto out; + + err = snaplist_space(&ddpa->clone_snaps, + snap->ds->ds_dir->dd_origin_txg, &space); + if (err != 0) + goto out; + ddpa->cloneusedsnap += space; + } + if (dsl_dir_phys(origin_ds->ds_dir)->dd_flags & + DD_FLAG_USED_BREAKDOWN) { + err = snaplist_space(&ddpa->origin_snaps, + dsl_dataset_phys(origin_ds)->ds_creation_txg, + &ddpa->originusedsnap); + if (err != 0) + goto out; + } + +out: + promote_rele(ddpa, FTAG); + return (err); +} + +static void +dsl_dataset_promote_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_promote_arg_t *ddpa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *hds; + struct promotenode *snap; + dsl_dataset_t *origin_ds; + dsl_dataset_t *origin_head; + dsl_dir_t *dd; + dsl_dir_t *odd = NULL; + uint64_t oldnext_obj; + int64_t delta; + + VERIFY0(promote_hold(ddpa, dp, FTAG)); + hds = ddpa->ddpa_clone; + + ASSERT0(dsl_dataset_phys(hds)->ds_flags & DS_FLAG_NOPROMOTE); + + snap = list_head(&ddpa->shared_snaps); + origin_ds = snap->ds; + dd = hds->ds_dir; + + snap = list_head(&ddpa->origin_snaps); + origin_head = snap->ds; + + /* + * We need to explicitly open odd, since origin_ds's dd will be + * changing. + */ + VERIFY0(dsl_dir_hold_obj(dp, origin_ds->ds_dir->dd_object, + NULL, FTAG, &odd)); + + /* change origin's next snap */ + dmu_buf_will_dirty(origin_ds->ds_dbuf, tx); + oldnext_obj = dsl_dataset_phys(origin_ds)->ds_next_snap_obj; + snap = list_tail(&ddpa->clone_snaps); + ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==, + origin_ds->ds_object); + dsl_dataset_phys(origin_ds)->ds_next_snap_obj = snap->ds->ds_object; + + /* change the origin's next clone */ + if (dsl_dataset_phys(origin_ds)->ds_next_clones_obj) { + dsl_dataset_remove_from_next_clones(origin_ds, + snap->ds->ds_object, tx); + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dataset_phys(origin_ds)->ds_next_clones_obj, + oldnext_obj, tx)); + } + + /* change origin */ + dmu_buf_will_dirty(dd->dd_dbuf, tx); + ASSERT3U(dsl_dir_phys(dd)->dd_origin_obj, ==, origin_ds->ds_object); + dsl_dir_phys(dd)->dd_origin_obj = dsl_dir_phys(odd)->dd_origin_obj; + dd->dd_origin_txg = origin_head->ds_dir->dd_origin_txg; + dmu_buf_will_dirty(odd->dd_dbuf, tx); + dsl_dir_phys(odd)->dd_origin_obj = origin_ds->ds_object; + origin_head->ds_dir->dd_origin_txg = + dsl_dataset_phys(origin_ds)->ds_creation_txg; + + /* change dd_clone entries */ + if (spa_version(dp->dp_spa) >= SPA_VERSION_DIR_CLONES) { + VERIFY0(zap_remove_int(dp->dp_meta_objset, + dsl_dir_phys(odd)->dd_clones, hds->ds_object, tx)); + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dir_phys(ddpa->origin_origin->ds_dir)->dd_clones, + hds->ds_object, tx)); + + VERIFY0(zap_remove_int(dp->dp_meta_objset, + dsl_dir_phys(ddpa->origin_origin->ds_dir)->dd_clones, + origin_head->ds_object, tx)); + if (dsl_dir_phys(dd)->dd_clones == 0) { + dsl_dir_phys(dd)->dd_clones = + zap_create(dp->dp_meta_objset, DMU_OT_DSL_CLONES, + DMU_OT_NONE, 0, tx); + } + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_clones, origin_head->ds_object, tx)); + } + + /* move snapshots to this dir */ + for (snap = list_head(&ddpa->shared_snaps); snap; + snap = list_next(&ddpa->shared_snaps, snap)) { + dsl_dataset_t *ds = snap->ds; + + /* + * Property callbacks are registered to a particular + * dsl_dir. Since ours is changing, evict the objset + * so that they will be unregistered from the old dsl_dir. + */ + if (ds->ds_objset) { + dmu_objset_evict(ds->ds_objset); + ds->ds_objset = NULL; + } + + /* move snap name entry */ + VERIFY0(dsl_dataset_get_snapname(ds)); + VERIFY0(dsl_dataset_snap_remove(origin_head, + ds->ds_snapname, tx, B_TRUE)); + VERIFY0(zap_add(dp->dp_meta_objset, + dsl_dataset_phys(hds)->ds_snapnames_zapobj, ds->ds_snapname, + 8, 1, &ds->ds_object, tx)); + dsl_fs_ss_count_adjust(hds->ds_dir, 1, + DD_FIELD_SNAPSHOT_COUNT, tx); + + /* change containing dsl_dir */ + dmu_buf_will_dirty(ds->ds_dbuf, tx); + ASSERT3U(dsl_dataset_phys(ds)->ds_dir_obj, ==, odd->dd_object); + dsl_dataset_phys(ds)->ds_dir_obj = dd->dd_object; + ASSERT3P(ds->ds_dir, ==, odd); + dsl_dir_rele(ds->ds_dir, ds); + VERIFY0(dsl_dir_hold_obj(dp, dd->dd_object, + NULL, ds, &ds->ds_dir)); + + /* move any clone references */ + if (dsl_dataset_phys(ds)->ds_next_clones_obj && + spa_version(dp->dp_spa) >= SPA_VERSION_DIR_CLONES) { + zap_cursor_t zc; + zap_attribute_t za; + + for (zap_cursor_init(&zc, dp->dp_meta_objset, + dsl_dataset_phys(ds)->ds_next_clones_obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + dsl_dataset_t *cnds; + uint64_t o; + + if (za.za_first_integer == oldnext_obj) { + /* + * We've already moved the + * origin's reference. + */ + continue; + } + + VERIFY0(dsl_dataset_hold_obj(dp, + za.za_first_integer, FTAG, &cnds)); + o = dsl_dir_phys(cnds->ds_dir)-> + dd_head_dataset_obj; + + VERIFY0(zap_remove_int(dp->dp_meta_objset, + dsl_dir_phys(odd)->dd_clones, o, tx)); + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_clones, o, tx)); + dsl_dataset_rele(cnds, FTAG); + } + zap_cursor_fini(&zc); + } + + ASSERT(!dsl_prop_hascb(ds)); + } + + /* + * Change space accounting. + * Note, pa->*usedsnap and dd_used_breakdown[SNAP] will either + * both be valid, or both be 0 (resulting in delta == 0). This + * is true for each of {clone,origin} independently. + */ + + delta = ddpa->cloneusedsnap - + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_SNAP]; + ASSERT3S(delta, >=, 0); + ASSERT3U(ddpa->used, >=, delta); + dsl_dir_diduse_space(dd, DD_USED_SNAP, delta, 0, 0, tx); + dsl_dir_diduse_space(dd, DD_USED_HEAD, + ddpa->used - delta, ddpa->comp, ddpa->uncomp, tx); + + delta = ddpa->originusedsnap - + dsl_dir_phys(odd)->dd_used_breakdown[DD_USED_SNAP]; + ASSERT3S(delta, <=, 0); + ASSERT3U(ddpa->used, >=, -delta); + dsl_dir_diduse_space(odd, DD_USED_SNAP, delta, 0, 0, tx); + dsl_dir_diduse_space(odd, DD_USED_HEAD, + -ddpa->used - delta, -ddpa->comp, -ddpa->uncomp, tx); + + dsl_dataset_phys(origin_ds)->ds_unique_bytes = ddpa->unique; + + /* log history record */ + spa_history_log_internal_ds(hds, "promote", tx, ""); + + dsl_dir_rele(odd, FTAG); + promote_rele(ddpa, FTAG); +} + +/* + * Make a list of dsl_dataset_t's for the snapshots between first_obj + * (exclusive) and last_obj (inclusive). The list will be in reverse + * order (last_obj will be the list_head()). If first_obj == 0, do all + * snapshots back to this dataset's origin. + */ +static int +snaplist_make(dsl_pool_t *dp, + uint64_t first_obj, uint64_t last_obj, list_t *l, void *tag) +{ + uint64_t obj = last_obj; + + list_create(l, sizeof (struct promotenode), + offsetof(struct promotenode, link)); + + while (obj != first_obj) { + dsl_dataset_t *ds; + struct promotenode *snap; + int err; + + err = dsl_dataset_hold_obj(dp, obj, tag, &ds); + ASSERT(err != ENOENT); + if (err != 0) + return (err); + + if (first_obj == 0) + first_obj = dsl_dir_phys(ds->ds_dir)->dd_origin_obj; + + snap = kmem_alloc(sizeof (*snap), KM_SLEEP); + snap->ds = ds; + list_insert_tail(l, snap); + obj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + } + + return (0); +} + +static int +snaplist_space(list_t *l, uint64_t mintxg, uint64_t *spacep) +{ + struct promotenode *snap; + + *spacep = 0; + for (snap = list_head(l); snap; snap = list_next(l, snap)) { + uint64_t used, comp, uncomp; + dsl_deadlist_space_range(&snap->ds->ds_deadlist, + mintxg, UINT64_MAX, &used, &comp, &uncomp); + *spacep += used; + } + return (0); +} + +static void +snaplist_destroy(list_t *l, void *tag) +{ + struct promotenode *snap; + + if (l == NULL || !list_link_active(&l->list_head)) + return; + + while ((snap = list_tail(l)) != NULL) { + list_remove(l, snap); + dsl_dataset_rele(snap->ds, tag); + kmem_free(snap, sizeof (*snap)); + } + list_destroy(l); +} + +static int +promote_hold(dsl_dataset_promote_arg_t *ddpa, dsl_pool_t *dp, void *tag) +{ + int error; + dsl_dir_t *dd; + struct promotenode *snap; + + error = dsl_dataset_hold(dp, ddpa->ddpa_clonename, tag, + &ddpa->ddpa_clone); + if (error != 0) + return (error); + dd = ddpa->ddpa_clone->ds_dir; + + if (ddpa->ddpa_clone->ds_is_snapshot || + !dsl_dir_is_clone(dd)) { + dsl_dataset_rele(ddpa->ddpa_clone, tag); + return (SET_ERROR(EINVAL)); + } + + error = snaplist_make(dp, 0, dsl_dir_phys(dd)->dd_origin_obj, + &ddpa->shared_snaps, tag); + if (error != 0) + goto out; + + error = snaplist_make(dp, 0, ddpa->ddpa_clone->ds_object, + &ddpa->clone_snaps, tag); + if (error != 0) + goto out; + + snap = list_head(&ddpa->shared_snaps); + ASSERT3U(snap->ds->ds_object, ==, dsl_dir_phys(dd)->dd_origin_obj); + error = snaplist_make(dp, dsl_dir_phys(dd)->dd_origin_obj, + dsl_dir_phys(snap->ds->ds_dir)->dd_head_dataset_obj, + &ddpa->origin_snaps, tag); + if (error != 0) + goto out; + + if (dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj != 0) { + error = dsl_dataset_hold_obj(dp, + dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj, + tag, &ddpa->origin_origin); + if (error != 0) + goto out; + } +out: + if (error != 0) + promote_rele(ddpa, tag); + return (error); +} + +static void +promote_rele(dsl_dataset_promote_arg_t *ddpa, void *tag) +{ + snaplist_destroy(&ddpa->shared_snaps, tag); + snaplist_destroy(&ddpa->clone_snaps, tag); + snaplist_destroy(&ddpa->origin_snaps, tag); + if (ddpa->origin_origin != NULL) + dsl_dataset_rele(ddpa->origin_origin, tag); + dsl_dataset_rele(ddpa->ddpa_clone, tag); +} + +/* + * Promote a clone. + * + * If it fails due to a conflicting snapshot name, "conflsnap" will be filled + * in with the name. (It must be at least MAXNAMELEN bytes long.) + */ +int +dsl_dataset_promote(const char *name, char *conflsnap) +{ + dsl_dataset_promote_arg_t ddpa = { 0 }; + uint64_t numsnaps; + int error; + objset_t *os; + + /* + * We will modify space proportional to the number of + * snapshots. Compute numsnaps. + */ + error = dmu_objset_hold(name, FTAG, &os); + if (error != 0) + return (error); + error = zap_count(dmu_objset_pool(os)->dp_meta_objset, + dsl_dataset_phys(dmu_objset_ds(os))->ds_snapnames_zapobj, + &numsnaps); + dmu_objset_rele(os, FTAG); + if (error != 0) + return (error); + + ddpa.ddpa_clonename = name; + ddpa.err_ds = conflsnap; + ddpa.cr = CRED(); + + return (dsl_sync_task(name, dsl_dataset_promote_check, + dsl_dataset_promote_sync, &ddpa, + 2 + numsnaps, ZFS_SPACE_CHECK_RESERVED)); +} + +int +dsl_dataset_clone_swap_check_impl(dsl_dataset_t *clone, + dsl_dataset_t *origin_head, boolean_t force, void *owner, dmu_tx_t *tx) +{ + int64_t unused_refres_delta; + + /* they should both be heads */ + if (clone->ds_is_snapshot || + origin_head->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + /* if we are not forcing, the branch point should be just before them */ + if (!force && clone->ds_prev != origin_head->ds_prev) + return (SET_ERROR(EINVAL)); + + /* clone should be the clone (unless they are unrelated) */ + if (clone->ds_prev != NULL && + clone->ds_prev != clone->ds_dir->dd_pool->dp_origin_snap && + origin_head->ds_dir != clone->ds_prev->ds_dir) + return (SET_ERROR(EINVAL)); + + /* the clone should be a child of the origin */ + if (clone->ds_dir->dd_parent != origin_head->ds_dir) + return (SET_ERROR(EINVAL)); + + /* origin_head shouldn't be modified unless 'force' */ + if (!force && + dsl_dataset_modified_since_snap(origin_head, origin_head->ds_prev)) + return (SET_ERROR(ETXTBSY)); + + /* origin_head should have no long holds (e.g. is not mounted) */ + if (dsl_dataset_handoff_check(origin_head, owner, tx)) + return (SET_ERROR(EBUSY)); + + /* check amount of any unconsumed refreservation */ + unused_refres_delta = + (int64_t)MIN(origin_head->ds_reserved, + dsl_dataset_phys(origin_head)->ds_unique_bytes) - + (int64_t)MIN(origin_head->ds_reserved, + dsl_dataset_phys(clone)->ds_unique_bytes); + + if (unused_refres_delta > 0 && + unused_refres_delta > + dsl_dir_space_available(origin_head->ds_dir, NULL, 0, TRUE)) + return (SET_ERROR(ENOSPC)); + + /* clone can't be over the head's refquota */ + if (origin_head->ds_quota != 0 && + dsl_dataset_phys(clone)->ds_referenced_bytes > + origin_head->ds_quota) + return (SET_ERROR(EDQUOT)); + + return (0); +} + +void +dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone, + dsl_dataset_t *origin_head, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dmu_tx_pool(tx); + int64_t unused_refres_delta; + + ASSERT(clone->ds_reserved == 0); + ASSERT(origin_head->ds_quota == 0 || + dsl_dataset_phys(clone)->ds_unique_bytes <= origin_head->ds_quota); + ASSERT3P(clone->ds_prev, ==, origin_head->ds_prev); + + dmu_buf_will_dirty(clone->ds_dbuf, tx); + dmu_buf_will_dirty(origin_head->ds_dbuf, tx); + + if (clone->ds_objset != NULL) { + dmu_objset_evict(clone->ds_objset); + clone->ds_objset = NULL; + } + + if (origin_head->ds_objset != NULL) { + dmu_objset_evict(origin_head->ds_objset); + origin_head->ds_objset = NULL; + } + + unused_refres_delta = + (int64_t)MIN(origin_head->ds_reserved, + dsl_dataset_phys(origin_head)->ds_unique_bytes) - + (int64_t)MIN(origin_head->ds_reserved, + dsl_dataset_phys(clone)->ds_unique_bytes); + + /* + * Reset origin's unique bytes, if it exists. + */ + if (clone->ds_prev) { + dsl_dataset_t *origin = clone->ds_prev; + uint64_t comp, uncomp; + + dmu_buf_will_dirty(origin->ds_dbuf, tx); + dsl_deadlist_space_range(&clone->ds_deadlist, + dsl_dataset_phys(origin)->ds_prev_snap_txg, UINT64_MAX, + &dsl_dataset_phys(origin)->ds_unique_bytes, &comp, &uncomp); + } + + /* swap blkptrs */ + { + blkptr_t tmp; + tmp = dsl_dataset_phys(origin_head)->ds_bp; + dsl_dataset_phys(origin_head)->ds_bp = + dsl_dataset_phys(clone)->ds_bp; + dsl_dataset_phys(clone)->ds_bp = tmp; + } + + /* set dd_*_bytes */ + { + int64_t dused, dcomp, duncomp; + uint64_t cdl_used, cdl_comp, cdl_uncomp; + uint64_t odl_used, odl_comp, odl_uncomp; + + ASSERT3U(dsl_dir_phys(clone->ds_dir)-> + dd_used_breakdown[DD_USED_SNAP], ==, 0); + + dsl_deadlist_space(&clone->ds_deadlist, + &cdl_used, &cdl_comp, &cdl_uncomp); + dsl_deadlist_space(&origin_head->ds_deadlist, + &odl_used, &odl_comp, &odl_uncomp); + + dused = dsl_dataset_phys(clone)->ds_referenced_bytes + + cdl_used - + (dsl_dataset_phys(origin_head)->ds_referenced_bytes + + odl_used); + dcomp = dsl_dataset_phys(clone)->ds_compressed_bytes + + cdl_comp - + (dsl_dataset_phys(origin_head)->ds_compressed_bytes + + odl_comp); + duncomp = dsl_dataset_phys(clone)->ds_uncompressed_bytes + + cdl_uncomp - + (dsl_dataset_phys(origin_head)->ds_uncompressed_bytes + + odl_uncomp); + + dsl_dir_diduse_space(origin_head->ds_dir, DD_USED_HEAD, + dused, dcomp, duncomp, tx); + dsl_dir_diduse_space(clone->ds_dir, DD_USED_HEAD, + -dused, -dcomp, -duncomp, tx); + + /* + * The difference in the space used by snapshots is the + * difference in snapshot space due to the head's + * deadlist (since that's the only thing that's + * changing that affects the snapused). + */ + dsl_deadlist_space_range(&clone->ds_deadlist, + origin_head->ds_dir->dd_origin_txg, UINT64_MAX, + &cdl_used, &cdl_comp, &cdl_uncomp); + dsl_deadlist_space_range(&origin_head->ds_deadlist, + origin_head->ds_dir->dd_origin_txg, UINT64_MAX, + &odl_used, &odl_comp, &odl_uncomp); + dsl_dir_transfer_space(origin_head->ds_dir, cdl_used - odl_used, + DD_USED_HEAD, DD_USED_SNAP, tx); + } + + /* swap ds_*_bytes */ + SWITCH64(dsl_dataset_phys(origin_head)->ds_referenced_bytes, + dsl_dataset_phys(clone)->ds_referenced_bytes); + SWITCH64(dsl_dataset_phys(origin_head)->ds_compressed_bytes, + dsl_dataset_phys(clone)->ds_compressed_bytes); + SWITCH64(dsl_dataset_phys(origin_head)->ds_uncompressed_bytes, + dsl_dataset_phys(clone)->ds_uncompressed_bytes); + SWITCH64(dsl_dataset_phys(origin_head)->ds_unique_bytes, + dsl_dataset_phys(clone)->ds_unique_bytes); + + /* apply any parent delta for change in unconsumed refreservation */ + dsl_dir_diduse_space(origin_head->ds_dir, DD_USED_REFRSRV, + unused_refres_delta, 0, 0, tx); + + /* + * Swap deadlists. + */ + dsl_deadlist_close(&clone->ds_deadlist); + dsl_deadlist_close(&origin_head->ds_deadlist); + SWITCH64(dsl_dataset_phys(origin_head)->ds_deadlist_obj, + dsl_dataset_phys(clone)->ds_deadlist_obj); + dsl_deadlist_open(&clone->ds_deadlist, dp->dp_meta_objset, + dsl_dataset_phys(clone)->ds_deadlist_obj); + dsl_deadlist_open(&origin_head->ds_deadlist, dp->dp_meta_objset, + dsl_dataset_phys(origin_head)->ds_deadlist_obj); + + dsl_scan_ds_clone_swapped(origin_head, clone, tx); + + spa_history_log_internal_ds(clone, "clone swap", tx, + "parent=%s", origin_head->ds_dir->dd_myname); +} + +/* + * Given a pool name and a dataset object number in that pool, + * return the name of that dataset. + */ +int +dsl_dsobj_to_dsname(char *pname, uint64_t obj, char *buf) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int error; + + error = dsl_pool_hold(pname, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold_obj(dp, obj, FTAG, &ds); + if (error == 0) { + dsl_dataset_name(ds, buf); + dsl_dataset_rele(ds, FTAG); + } + dsl_pool_rele(dp, FTAG); + + return (error); +} + +int +dsl_dataset_check_quota(dsl_dataset_t *ds, boolean_t check_quota, + uint64_t asize, uint64_t inflight, uint64_t *used, uint64_t *ref_rsrv) +{ + int error = 0; + + ASSERT3S(asize, >, 0); + + /* + * *ref_rsrv is the portion of asize that will come from any + * unconsumed refreservation space. + */ + *ref_rsrv = 0; + + mutex_enter(&ds->ds_lock); + /* + * Make a space adjustment for reserved bytes. + */ + if (ds->ds_reserved > dsl_dataset_phys(ds)->ds_unique_bytes) { + ASSERT3U(*used, >=, + ds->ds_reserved - dsl_dataset_phys(ds)->ds_unique_bytes); + *used -= + (ds->ds_reserved - dsl_dataset_phys(ds)->ds_unique_bytes); + *ref_rsrv = + asize - MIN(asize, parent_delta(ds, asize + inflight)); + } + + if (!check_quota || ds->ds_quota == 0) { + mutex_exit(&ds->ds_lock); + return (0); + } + /* + * If they are requesting more space, and our current estimate + * is over quota, they get to try again unless the actual + * on-disk is over quota and there are no pending changes (which + * may free up space for us). + */ + if (dsl_dataset_phys(ds)->ds_referenced_bytes + inflight >= + ds->ds_quota) { + if (inflight > 0 || + dsl_dataset_phys(ds)->ds_referenced_bytes < ds->ds_quota) + error = SET_ERROR(ERESTART); + else + error = SET_ERROR(EDQUOT); + } + mutex_exit(&ds->ds_lock); + + return (error); +} + +typedef struct dsl_dataset_set_qr_arg { + const char *ddsqra_name; + zprop_source_t ddsqra_source; + uint64_t ddsqra_value; +} dsl_dataset_set_qr_arg_t; + + +/* ARGSUSED */ +static int +dsl_dataset_set_refquota_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int error; + uint64_t newval; + + if (spa_version(dp->dp_spa) < SPA_VERSION_REFQUOTA) + return (SET_ERROR(ENOTSUP)); + + error = dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds); + if (error != 0) + return (error); + + if (ds->ds_is_snapshot) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + + error = dsl_prop_predict(ds->ds_dir, + zfs_prop_to_name(ZFS_PROP_REFQUOTA), + ddsqra->ddsqra_source, ddsqra->ddsqra_value, &newval); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + if (newval == 0) { + dsl_dataset_rele(ds, FTAG); + return (0); + } + + if (newval < dsl_dataset_phys(ds)->ds_referenced_bytes || + newval < ds->ds_reserved) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOSPC)); + } + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_dataset_set_refquota_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + uint64_t newval; + + VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds)); + + dsl_prop_set_sync_impl(ds, + zfs_prop_to_name(ZFS_PROP_REFQUOTA), + ddsqra->ddsqra_source, sizeof (ddsqra->ddsqra_value), 1, + &ddsqra->ddsqra_value, tx); + + VERIFY0(dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_REFQUOTA), &newval)); + + if (ds->ds_quota != newval) { + dmu_buf_will_dirty(ds->ds_dbuf, tx); + ds->ds_quota = newval; + } + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dataset_set_refquota(const char *dsname, zprop_source_t source, + uint64_t refquota) +{ + dsl_dataset_set_qr_arg_t ddsqra; + + ddsqra.ddsqra_name = dsname; + ddsqra.ddsqra_source = source; + ddsqra.ddsqra_value = refquota; + + return (dsl_sync_task(dsname, dsl_dataset_set_refquota_check, + dsl_dataset_set_refquota_sync, &ddsqra, 0, ZFS_SPACE_CHECK_NONE)); +} + +static int +dsl_dataset_set_refreservation_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int error; + uint64_t newval, unique; + + if (spa_version(dp->dp_spa) < SPA_VERSION_REFRESERVATION) + return (SET_ERROR(ENOTSUP)); + + error = dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds); + if (error != 0) + return (error); + + if (ds->ds_is_snapshot) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EINVAL)); + } + + error = dsl_prop_predict(ds->ds_dir, + zfs_prop_to_name(ZFS_PROP_REFRESERVATION), + ddsqra->ddsqra_source, ddsqra->ddsqra_value, &newval); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + /* + * If we are doing the preliminary check in open context, the + * space estimates may be inaccurate. + */ + if (!dmu_tx_is_syncing(tx)) { + dsl_dataset_rele(ds, FTAG); + return (0); + } + + mutex_enter(&ds->ds_lock); + if (!DS_UNIQUE_IS_ACCURATE(ds)) + dsl_dataset_recalc_head_uniq(ds); + unique = dsl_dataset_phys(ds)->ds_unique_bytes; + mutex_exit(&ds->ds_lock); + + if (MAX(unique, newval) > MAX(unique, ds->ds_reserved)) { + uint64_t delta = MAX(unique, newval) - + MAX(unique, ds->ds_reserved); + + if (delta > + dsl_dir_space_available(ds->ds_dir, NULL, 0, B_TRUE) || + (ds->ds_quota > 0 && newval > ds->ds_quota)) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOSPC)); + } + } + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +void +dsl_dataset_set_refreservation_sync_impl(dsl_dataset_t *ds, + zprop_source_t source, uint64_t value, dmu_tx_t *tx) +{ + uint64_t newval; + uint64_t unique; + int64_t delta; + + dsl_prop_set_sync_impl(ds, zfs_prop_to_name(ZFS_PROP_REFRESERVATION), + source, sizeof (value), 1, &value, tx); + + VERIFY0(dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_REFRESERVATION), &newval)); + + dmu_buf_will_dirty(ds->ds_dbuf, tx); + mutex_enter(&ds->ds_dir->dd_lock); + mutex_enter(&ds->ds_lock); + ASSERT(DS_UNIQUE_IS_ACCURATE(ds)); + unique = dsl_dataset_phys(ds)->ds_unique_bytes; + delta = MAX(0, (int64_t)(newval - unique)) - + MAX(0, (int64_t)(ds->ds_reserved - unique)); + ds->ds_reserved = newval; + mutex_exit(&ds->ds_lock); + + dsl_dir_diduse_space(ds->ds_dir, DD_USED_REFRSRV, delta, 0, 0, tx); + mutex_exit(&ds->ds_dir->dd_lock); +} + +static void +dsl_dataset_set_refreservation_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds)); + dsl_dataset_set_refreservation_sync_impl(ds, + ddsqra->ddsqra_source, ddsqra->ddsqra_value, tx); + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dataset_set_refreservation(const char *dsname, zprop_source_t source, + uint64_t refreservation) +{ + dsl_dataset_set_qr_arg_t ddsqra; + + ddsqra.ddsqra_name = dsname; + ddsqra.ddsqra_source = source; + ddsqra.ddsqra_value = refreservation; + + return (dsl_sync_task(dsname, dsl_dataset_set_refreservation_check, + dsl_dataset_set_refreservation_sync, &ddsqra, + 0, ZFS_SPACE_CHECK_NONE)); +} + +/* + * Return (in *usedp) the amount of space written in new that is not + * present in oldsnap. New may be a snapshot or the head. Old must be + * a snapshot before new, in new's filesystem (or its origin). If not then + * fail and return EINVAL. + * + * The written space is calculated by considering two components: First, we + * ignore any freed space, and calculate the written as new's used space + * minus old's used space. Next, we add in the amount of space that was freed + * between the two snapshots, thus reducing new's used space relative to old's. + * Specifically, this is the space that was born before old->ds_creation_txg, + * and freed before new (ie. on new's deadlist or a previous deadlist). + * + * space freed [---------------------] + * snapshots ---O-------O--------O-------O------ + * oldsnap new + */ +int +dsl_dataset_space_written(dsl_dataset_t *oldsnap, dsl_dataset_t *new, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + int err = 0; + uint64_t snapobj; + dsl_pool_t *dp = new->ds_dir->dd_pool; + + ASSERT(dsl_pool_config_held(dp)); + + *usedp = 0; + *usedp += dsl_dataset_phys(new)->ds_referenced_bytes; + *usedp -= dsl_dataset_phys(oldsnap)->ds_referenced_bytes; + + *compp = 0; + *compp += dsl_dataset_phys(new)->ds_compressed_bytes; + *compp -= dsl_dataset_phys(oldsnap)->ds_compressed_bytes; + + *uncompp = 0; + *uncompp += dsl_dataset_phys(new)->ds_uncompressed_bytes; + *uncompp -= dsl_dataset_phys(oldsnap)->ds_uncompressed_bytes; + + snapobj = new->ds_object; + while (snapobj != oldsnap->ds_object) { + dsl_dataset_t *snap; + uint64_t used, comp, uncomp; + + if (snapobj == new->ds_object) { + snap = new; + } else { + err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap); + if (err != 0) + break; + } + + if (dsl_dataset_phys(snap)->ds_prev_snap_txg == + dsl_dataset_phys(oldsnap)->ds_creation_txg) { + /* + * The blocks in the deadlist can not be born after + * ds_prev_snap_txg, so get the whole deadlist space, + * which is more efficient (especially for old-format + * deadlists). Unfortunately the deadlist code + * doesn't have enough information to make this + * optimization itself. + */ + dsl_deadlist_space(&snap->ds_deadlist, + &used, &comp, &uncomp); + } else { + dsl_deadlist_space_range(&snap->ds_deadlist, + 0, dsl_dataset_phys(oldsnap)->ds_creation_txg, + &used, &comp, &uncomp); + } + *usedp += used; + *compp += comp; + *uncompp += uncomp; + + /* + * If we get to the beginning of the chain of snapshots + * (ds_prev_snap_obj == 0) before oldsnap, then oldsnap + * was not a snapshot of/before new. + */ + snapobj = dsl_dataset_phys(snap)->ds_prev_snap_obj; + if (snap != new) + dsl_dataset_rele(snap, FTAG); + if (snapobj == 0) { + err = SET_ERROR(EINVAL); + break; + } + + } + return (err); +} + +/* + * Return (in *usedp) the amount of space that will be reclaimed if firstsnap, + * lastsnap, and all snapshots in between are deleted. + * + * blocks that would be freed [---------------------------] + * snapshots ---O-------O--------O-------O--------O + * firstsnap lastsnap + * + * This is the set of blocks that were born after the snap before firstsnap, + * (birth > firstsnap->prev_snap_txg) and died before the snap after the + * last snap (ie, is on lastsnap->ds_next->ds_deadlist or an earlier deadlist). + * We calculate this by iterating over the relevant deadlists (from the snap + * after lastsnap, backward to the snap after firstsnap), summing up the + * space on the deadlist that was born after the snap before firstsnap. + */ +int +dsl_dataset_space_wouldfree(dsl_dataset_t *firstsnap, + dsl_dataset_t *lastsnap, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + int err = 0; + uint64_t snapobj; + dsl_pool_t *dp = firstsnap->ds_dir->dd_pool; + + ASSERT(firstsnap->ds_is_snapshot); + ASSERT(lastsnap->ds_is_snapshot); + + /* + * Check that the snapshots are in the same dsl_dir, and firstsnap + * is before lastsnap. + */ + if (firstsnap->ds_dir != lastsnap->ds_dir || + dsl_dataset_phys(firstsnap)->ds_creation_txg > + dsl_dataset_phys(lastsnap)->ds_creation_txg) + return (SET_ERROR(EINVAL)); + + *usedp = *compp = *uncompp = 0; + + snapobj = dsl_dataset_phys(lastsnap)->ds_next_snap_obj; + while (snapobj != firstsnap->ds_object) { + dsl_dataset_t *ds; + uint64_t used, comp, uncomp; + + err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &ds); + if (err != 0) + break; + + dsl_deadlist_space_range(&ds->ds_deadlist, + dsl_dataset_phys(firstsnap)->ds_prev_snap_txg, UINT64_MAX, + &used, &comp, &uncomp); + *usedp += used; + *compp += comp; + *uncompp += uncomp; + + snapobj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + ASSERT3U(snapobj, !=, 0); + dsl_dataset_rele(ds, FTAG); + } + return (err); +} + +static int +dsl_dataset_activate_large_blocks_check(void *arg, dmu_tx_t *tx) +{ + const char *dsname = arg; + dsl_dataset_t *ds; + dsl_pool_t *dp = dmu_tx_pool(tx); + int error = 0; + + if (!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LARGE_BLOCKS)) + return (SET_ERROR(ENOTSUP)); + + ASSERT(spa_feature_is_enabled(dp->dp_spa, + SPA_FEATURE_EXTENSIBLE_DATASET)); + + error = dsl_dataset_hold(dp, dsname, FTAG, &ds); + if (error != 0) + return (error); + + if (ds->ds_large_blocks) + error = EALREADY; + dsl_dataset_rele(ds, FTAG); + + return (error); +} + +void +dsl_dataset_activate_large_blocks_sync_impl(uint64_t dsobj, dmu_tx_t *tx) +{ + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + objset_t *mos = dmu_tx_pool(tx)->dp_meta_objset; + uint64_t zero = 0; + + spa_feature_incr(spa, SPA_FEATURE_LARGE_BLOCKS, tx); + dmu_object_zapify(mos, dsobj, DMU_OT_DSL_DATASET, tx); + + VERIFY0(zap_add(mos, dsobj, DS_FIELD_LARGE_BLOCKS, + sizeof (zero), 1, &zero, tx)); +} + +static void +dsl_dataset_activate_large_blocks_sync(void *arg, dmu_tx_t *tx) +{ + const char *dsname = arg; + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dmu_tx_pool(tx), dsname, FTAG, &ds)); + + dsl_dataset_activate_large_blocks_sync_impl(ds->ds_object, tx); + ASSERT(!ds->ds_large_blocks); + ds->ds_large_blocks = B_TRUE; + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dataset_activate_large_blocks(const char *dsname) +{ + int error; + + error = dsl_sync_task(dsname, + dsl_dataset_activate_large_blocks_check, + dsl_dataset_activate_large_blocks_sync, (void *)dsname, + 1, ZFS_SPACE_CHECK_RESERVED); + + /* + * EALREADY indicates that this dataset already supports large blocks. + */ + if (error == EALREADY) + error = 0; + return (error); +} + +/* + * Return TRUE if 'earlier' is an earlier snapshot in 'later's timeline. + * For example, they could both be snapshots of the same filesystem, and + * 'earlier' is before 'later'. Or 'earlier' could be the origin of + * 'later's filesystem. Or 'earlier' could be an older snapshot in the origin's + * filesystem. Or 'earlier' could be the origin's origin. + * + * If non-zero, earlier_txg is used instead of earlier's ds_creation_txg. + */ +boolean_t +dsl_dataset_is_before(dsl_dataset_t *later, dsl_dataset_t *earlier, + uint64_t earlier_txg) +{ + dsl_pool_t *dp = later->ds_dir->dd_pool; + int error; + boolean_t ret; + dsl_dataset_t *origin; + + ASSERT(dsl_pool_config_held(dp)); + ASSERT(earlier->ds_is_snapshot || earlier_txg != 0); + + if (earlier_txg == 0) + earlier_txg = dsl_dataset_phys(earlier)->ds_creation_txg; + + if (later->ds_is_snapshot && + earlier_txg >= dsl_dataset_phys(later)->ds_creation_txg) + return (B_FALSE); + + if (later->ds_dir == earlier->ds_dir) + return (B_TRUE); + if (!dsl_dir_is_clone(later->ds_dir)) + return (B_FALSE); + + if (dsl_dir_phys(later->ds_dir)->dd_origin_obj == earlier->ds_object) + return (B_TRUE); + error = dsl_dataset_hold_obj(dp, + dsl_dir_phys(later->ds_dir)->dd_origin_obj, FTAG, &origin); + if (error != 0) + return (B_FALSE); + ret = dsl_dataset_is_before(origin, earlier, earlier_txg); + dsl_dataset_rele(origin, FTAG); + return (ret); +} + + +void +dsl_dataset_zapify(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + dmu_object_zapify(mos, ds->ds_object, DMU_OT_DSL_DATASET, tx); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +#if defined(_LP64) +module_param(zfs_max_recordsize, int, 0644); +MODULE_PARM_DESC(zfs_max_recordsize, "Max allowed record size"); +#else +/* Limited to 1M on 32-bit platforms due to lack of virtual address space */ +module_param(zfs_max_recordsize, int, 0444); +MODULE_PARM_DESC(zfs_max_recordsize, "Max allowed record size"); +#endif + +EXPORT_SYMBOL(dsl_dataset_hold); +EXPORT_SYMBOL(dsl_dataset_hold_obj); +EXPORT_SYMBOL(dsl_dataset_own); +EXPORT_SYMBOL(dsl_dataset_own_obj); +EXPORT_SYMBOL(dsl_dataset_name); +EXPORT_SYMBOL(dsl_dataset_rele); +EXPORT_SYMBOL(dsl_dataset_disown); +EXPORT_SYMBOL(dsl_dataset_tryown); +EXPORT_SYMBOL(dsl_dataset_create_sync); +EXPORT_SYMBOL(dsl_dataset_create_sync_dd); +EXPORT_SYMBOL(dsl_dataset_snapshot_check); +EXPORT_SYMBOL(dsl_dataset_snapshot_sync); +EXPORT_SYMBOL(dsl_dataset_promote); +EXPORT_SYMBOL(dsl_dataset_user_hold); +EXPORT_SYMBOL(dsl_dataset_user_release); +EXPORT_SYMBOL(dsl_dataset_get_holds); +EXPORT_SYMBOL(dsl_dataset_get_blkptr); +EXPORT_SYMBOL(dsl_dataset_set_blkptr); +EXPORT_SYMBOL(dsl_dataset_get_spa); +EXPORT_SYMBOL(dsl_dataset_modified_since_snap); +EXPORT_SYMBOL(dsl_dataset_space_written); +EXPORT_SYMBOL(dsl_dataset_space_wouldfree); +EXPORT_SYMBOL(dsl_dataset_sync); +EXPORT_SYMBOL(dsl_dataset_block_born); +EXPORT_SYMBOL(dsl_dataset_block_kill); +EXPORT_SYMBOL(dsl_dataset_block_freeable); +EXPORT_SYMBOL(dsl_dataset_prev_snap_txg); +EXPORT_SYMBOL(dsl_dataset_dirty); +EXPORT_SYMBOL(dsl_dataset_stats); +EXPORT_SYMBOL(dsl_dataset_fast_stat); +EXPORT_SYMBOL(dsl_dataset_space); +EXPORT_SYMBOL(dsl_dataset_fsid_guid); +EXPORT_SYMBOL(dsl_dsobj_to_dsname); +EXPORT_SYMBOL(dsl_dataset_check_quota); +EXPORT_SYMBOL(dsl_dataset_clone_swap_check_impl); +EXPORT_SYMBOL(dsl_dataset_clone_swap_sync_impl); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_deadlist.c +++ linux-4.4.0/zfs/module/zfs/dsl_deadlist.c @@ -0,0 +1,540 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +/* + * Deadlist concurrency: + * + * Deadlists can only be modified from the syncing thread. + * + * Except for dsl_deadlist_insert(), it can only be modified with the + * dp_config_rwlock held with RW_WRITER. + * + * The accessors (dsl_deadlist_space() and dsl_deadlist_space_range()) can + * be called concurrently, from open context, with the dl_config_rwlock held + * with RW_READER. + * + * Therefore, we only need to provide locking between dsl_deadlist_insert() and + * the accessors, protecting: + * dl_phys->dl_used,comp,uncomp + * and protecting the dl_tree from being loaded. + * The locking is provided by dl_lock. Note that locking on the bpobj_t + * provides its own locking, and dl_oldfmt is immutable. + */ + +static int +dsl_deadlist_compare(const void *arg1, const void *arg2) +{ + const dsl_deadlist_entry_t *dle1 = arg1; + const dsl_deadlist_entry_t *dle2 = arg2; + + if (dle1->dle_mintxg < dle2->dle_mintxg) + return (-1); + else if (dle1->dle_mintxg > dle2->dle_mintxg) + return (+1); + else + return (0); +} + +static void +dsl_deadlist_load_tree(dsl_deadlist_t *dl) +{ + zap_cursor_t zc; + zap_attribute_t za; + + ASSERT(!dl->dl_oldfmt); + if (dl->dl_havetree) + return; + + avl_create(&dl->dl_tree, dsl_deadlist_compare, + sizeof (dsl_deadlist_entry_t), + offsetof(dsl_deadlist_entry_t, dle_node)); + for (zap_cursor_init(&zc, dl->dl_os, dl->dl_object); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + dsl_deadlist_entry_t *dle; + + dle = kmem_alloc(sizeof (*dle), KM_SLEEP); + dle->dle_mintxg = strtonum(za.za_name, NULL); + VERIFY3U(0, ==, bpobj_open(&dle->dle_bpobj, dl->dl_os, + za.za_first_integer)); + avl_add(&dl->dl_tree, dle); + } + zap_cursor_fini(&zc); + dl->dl_havetree = B_TRUE; +} + +void +dsl_deadlist_open(dsl_deadlist_t *dl, objset_t *os, uint64_t object) +{ + dmu_object_info_t doi; + + mutex_init(&dl->dl_lock, NULL, MUTEX_DEFAULT, NULL); + dl->dl_os = os; + dl->dl_object = object; + VERIFY3U(0, ==, dmu_bonus_hold(os, object, dl, &dl->dl_dbuf)); + dmu_object_info_from_db(dl->dl_dbuf, &doi); + if (doi.doi_type == DMU_OT_BPOBJ) { + dmu_buf_rele(dl->dl_dbuf, dl); + dl->dl_dbuf = NULL; + dl->dl_oldfmt = B_TRUE; + VERIFY3U(0, ==, bpobj_open(&dl->dl_bpobj, os, object)); + return; + } + + dl->dl_oldfmt = B_FALSE; + dl->dl_phys = dl->dl_dbuf->db_data; + dl->dl_havetree = B_FALSE; +} + +void +dsl_deadlist_close(dsl_deadlist_t *dl) +{ + void *cookie = NULL; + dsl_deadlist_entry_t *dle; + + dl->dl_os = NULL; + + if (dl->dl_oldfmt) { + dl->dl_oldfmt = B_FALSE; + bpobj_close(&dl->dl_bpobj); + return; + } + + if (dl->dl_havetree) { + while ((dle = avl_destroy_nodes(&dl->dl_tree, &cookie)) + != NULL) { + bpobj_close(&dle->dle_bpobj); + kmem_free(dle, sizeof (*dle)); + } + avl_destroy(&dl->dl_tree); + } + dmu_buf_rele(dl->dl_dbuf, dl); + mutex_destroy(&dl->dl_lock); + dl->dl_dbuf = NULL; + dl->dl_phys = NULL; +} + +uint64_t +dsl_deadlist_alloc(objset_t *os, dmu_tx_t *tx) +{ + if (spa_version(dmu_objset_spa(os)) < SPA_VERSION_DEADLISTS) + return (bpobj_alloc(os, SPA_OLD_MAXBLOCKSIZE, tx)); + return (zap_create(os, DMU_OT_DEADLIST, DMU_OT_DEADLIST_HDR, + sizeof (dsl_deadlist_phys_t), tx)); +} + +void +dsl_deadlist_free(objset_t *os, uint64_t dlobj, dmu_tx_t *tx) +{ + dmu_object_info_t doi; + zap_cursor_t zc; + zap_attribute_t za; + + VERIFY3U(0, ==, dmu_object_info(os, dlobj, &doi)); + if (doi.doi_type == DMU_OT_BPOBJ) { + bpobj_free(os, dlobj, tx); + return; + } + + for (zap_cursor_init(&zc, os, dlobj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + uint64_t obj = za.za_first_integer; + if (obj == dmu_objset_pool(os)->dp_empty_bpobj) + bpobj_decr_empty(os, tx); + else + bpobj_free(os, obj, tx); + } + zap_cursor_fini(&zc); + VERIFY3U(0, ==, dmu_object_free(os, dlobj, tx)); +} + +static void +dle_enqueue(dsl_deadlist_t *dl, dsl_deadlist_entry_t *dle, + const blkptr_t *bp, dmu_tx_t *tx) +{ + if (dle->dle_bpobj.bpo_object == + dmu_objset_pool(dl->dl_os)->dp_empty_bpobj) { + uint64_t obj = bpobj_alloc(dl->dl_os, SPA_OLD_MAXBLOCKSIZE, tx); + bpobj_close(&dle->dle_bpobj); + bpobj_decr_empty(dl->dl_os, tx); + VERIFY3U(0, ==, bpobj_open(&dle->dle_bpobj, dl->dl_os, obj)); + VERIFY3U(0, ==, zap_update_int_key(dl->dl_os, dl->dl_object, + dle->dle_mintxg, obj, tx)); + } + bpobj_enqueue(&dle->dle_bpobj, bp, tx); +} + +static void +dle_enqueue_subobj(dsl_deadlist_t *dl, dsl_deadlist_entry_t *dle, + uint64_t obj, dmu_tx_t *tx) +{ + if (dle->dle_bpobj.bpo_object != + dmu_objset_pool(dl->dl_os)->dp_empty_bpobj) { + bpobj_enqueue_subobj(&dle->dle_bpobj, obj, tx); + } else { + bpobj_close(&dle->dle_bpobj); + bpobj_decr_empty(dl->dl_os, tx); + VERIFY3U(0, ==, bpobj_open(&dle->dle_bpobj, dl->dl_os, obj)); + VERIFY3U(0, ==, zap_update_int_key(dl->dl_os, dl->dl_object, + dle->dle_mintxg, obj, tx)); + } +} + +void +dsl_deadlist_insert(dsl_deadlist_t *dl, const blkptr_t *bp, dmu_tx_t *tx) +{ + dsl_deadlist_entry_t dle_tofind; + dsl_deadlist_entry_t *dle; + avl_index_t where; + + if (dl->dl_oldfmt) { + bpobj_enqueue(&dl->dl_bpobj, bp, tx); + return; + } + + dsl_deadlist_load_tree(dl); + + dmu_buf_will_dirty(dl->dl_dbuf, tx); + mutex_enter(&dl->dl_lock); + dl->dl_phys->dl_used += + bp_get_dsize_sync(dmu_objset_spa(dl->dl_os), bp); + dl->dl_phys->dl_comp += BP_GET_PSIZE(bp); + dl->dl_phys->dl_uncomp += BP_GET_UCSIZE(bp); + mutex_exit(&dl->dl_lock); + + dle_tofind.dle_mintxg = bp->blk_birth; + dle = avl_find(&dl->dl_tree, &dle_tofind, &where); + if (dle == NULL) + dle = avl_nearest(&dl->dl_tree, where, AVL_BEFORE); + else + dle = AVL_PREV(&dl->dl_tree, dle); + dle_enqueue(dl, dle, bp, tx); +} + +/* + * Insert new key in deadlist, which must be > all current entries. + * mintxg is not inclusive. + */ +void +dsl_deadlist_add_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx) +{ + uint64_t obj; + dsl_deadlist_entry_t *dle; + + if (dl->dl_oldfmt) + return; + + dsl_deadlist_load_tree(dl); + + dle = kmem_alloc(sizeof (*dle), KM_SLEEP); + dle->dle_mintxg = mintxg; + obj = bpobj_alloc_empty(dl->dl_os, SPA_OLD_MAXBLOCKSIZE, tx); + VERIFY3U(0, ==, bpobj_open(&dle->dle_bpobj, dl->dl_os, obj)); + avl_add(&dl->dl_tree, dle); + + VERIFY3U(0, ==, zap_add_int_key(dl->dl_os, dl->dl_object, + mintxg, obj, tx)); +} + +/* + * Remove this key, merging its entries into the previous key. + */ +void +dsl_deadlist_remove_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx) +{ + dsl_deadlist_entry_t dle_tofind; + dsl_deadlist_entry_t *dle, *dle_prev; + + if (dl->dl_oldfmt) + return; + + dsl_deadlist_load_tree(dl); + + dle_tofind.dle_mintxg = mintxg; + dle = avl_find(&dl->dl_tree, &dle_tofind, NULL); + dle_prev = AVL_PREV(&dl->dl_tree, dle); + + dle_enqueue_subobj(dl, dle_prev, dle->dle_bpobj.bpo_object, tx); + + avl_remove(&dl->dl_tree, dle); + bpobj_close(&dle->dle_bpobj); + kmem_free(dle, sizeof (*dle)); + + VERIFY3U(0, ==, zap_remove_int(dl->dl_os, dl->dl_object, mintxg, tx)); +} + +/* + * Walk ds's snapshots to regenerate generate ZAP & AVL. + */ +static void +dsl_deadlist_regenerate(objset_t *os, uint64_t dlobj, + uint64_t mrs_obj, dmu_tx_t *tx) +{ + dsl_deadlist_t dl; + dsl_pool_t *dp = dmu_objset_pool(os); + + dsl_deadlist_open(&dl, os, dlobj); + if (dl.dl_oldfmt) { + dsl_deadlist_close(&dl); + return; + } + + while (mrs_obj != 0) { + dsl_dataset_t *ds; + VERIFY3U(0, ==, dsl_dataset_hold_obj(dp, mrs_obj, FTAG, &ds)); + dsl_deadlist_add_key(&dl, + dsl_dataset_phys(ds)->ds_prev_snap_txg, tx); + mrs_obj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + dsl_dataset_rele(ds, FTAG); + } + dsl_deadlist_close(&dl); +} + +uint64_t +dsl_deadlist_clone(dsl_deadlist_t *dl, uint64_t maxtxg, + uint64_t mrs_obj, dmu_tx_t *tx) +{ + dsl_deadlist_entry_t *dle; + uint64_t newobj; + + newobj = dsl_deadlist_alloc(dl->dl_os, tx); + + if (dl->dl_oldfmt) { + dsl_deadlist_regenerate(dl->dl_os, newobj, mrs_obj, tx); + return (newobj); + } + + dsl_deadlist_load_tree(dl); + + for (dle = avl_first(&dl->dl_tree); dle; + dle = AVL_NEXT(&dl->dl_tree, dle)) { + uint64_t obj; + + if (dle->dle_mintxg >= maxtxg) + break; + + obj = bpobj_alloc_empty(dl->dl_os, SPA_OLD_MAXBLOCKSIZE, tx); + VERIFY3U(0, ==, zap_add_int_key(dl->dl_os, newobj, + dle->dle_mintxg, obj, tx)); + } + return (newobj); +} + +void +dsl_deadlist_space(dsl_deadlist_t *dl, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + if (dl->dl_oldfmt) { + VERIFY3U(0, ==, bpobj_space(&dl->dl_bpobj, + usedp, compp, uncompp)); + return; + } + + mutex_enter(&dl->dl_lock); + *usedp = dl->dl_phys->dl_used; + *compp = dl->dl_phys->dl_comp; + *uncompp = dl->dl_phys->dl_uncomp; + mutex_exit(&dl->dl_lock); +} + +/* + * return space used in the range (mintxg, maxtxg]. + * Includes maxtxg, does not include mintxg. + * mintxg and maxtxg must both be keys in the deadlist (unless maxtxg is + * larger than any bp in the deadlist (eg. UINT64_MAX)). + */ +void +dsl_deadlist_space_range(dsl_deadlist_t *dl, uint64_t mintxg, uint64_t maxtxg, + uint64_t *usedp, uint64_t *compp, uint64_t *uncompp) +{ + dsl_deadlist_entry_t *dle; + dsl_deadlist_entry_t dle_tofind; + avl_index_t where; + + if (dl->dl_oldfmt) { + VERIFY3U(0, ==, bpobj_space_range(&dl->dl_bpobj, + mintxg, maxtxg, usedp, compp, uncompp)); + return; + } + + *usedp = *compp = *uncompp = 0; + + mutex_enter(&dl->dl_lock); + dsl_deadlist_load_tree(dl); + dle_tofind.dle_mintxg = mintxg; + dle = avl_find(&dl->dl_tree, &dle_tofind, &where); + /* + * If we don't find this mintxg, there shouldn't be anything + * after it either. + */ + ASSERT(dle != NULL || + avl_nearest(&dl->dl_tree, where, AVL_AFTER) == NULL); + + for (; dle && dle->dle_mintxg < maxtxg; + dle = AVL_NEXT(&dl->dl_tree, dle)) { + uint64_t used, comp, uncomp; + + VERIFY3U(0, ==, bpobj_space(&dle->dle_bpobj, + &used, &comp, &uncomp)); + + *usedp += used; + *compp += comp; + *uncompp += uncomp; + } + mutex_exit(&dl->dl_lock); +} + +static void +dsl_deadlist_insert_bpobj(dsl_deadlist_t *dl, uint64_t obj, uint64_t birth, + dmu_tx_t *tx) +{ + dsl_deadlist_entry_t dle_tofind; + dsl_deadlist_entry_t *dle; + avl_index_t where; + uint64_t used, comp, uncomp; + bpobj_t bpo; + + VERIFY3U(0, ==, bpobj_open(&bpo, dl->dl_os, obj)); + VERIFY3U(0, ==, bpobj_space(&bpo, &used, &comp, &uncomp)); + bpobj_close(&bpo); + + dsl_deadlist_load_tree(dl); + + dmu_buf_will_dirty(dl->dl_dbuf, tx); + mutex_enter(&dl->dl_lock); + dl->dl_phys->dl_used += used; + dl->dl_phys->dl_comp += comp; + dl->dl_phys->dl_uncomp += uncomp; + mutex_exit(&dl->dl_lock); + + dle_tofind.dle_mintxg = birth; + dle = avl_find(&dl->dl_tree, &dle_tofind, &where); + if (dle == NULL) + dle = avl_nearest(&dl->dl_tree, where, AVL_BEFORE); + dle_enqueue_subobj(dl, dle, obj, tx); +} + +static int +dsl_deadlist_insert_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + dsl_deadlist_t *dl = arg; + dsl_deadlist_insert(dl, bp, tx); + return (0); +} + +/* + * Merge the deadlist pointed to by 'obj' into dl. obj will be left as + * an empty deadlist. + */ +void +dsl_deadlist_merge(dsl_deadlist_t *dl, uint64_t obj, dmu_tx_t *tx) +{ + zap_cursor_t zc; + zap_attribute_t za; + dmu_buf_t *bonus; + dsl_deadlist_phys_t *dlp; + dmu_object_info_t doi; + + VERIFY3U(0, ==, dmu_object_info(dl->dl_os, obj, &doi)); + if (doi.doi_type == DMU_OT_BPOBJ) { + bpobj_t bpo; + VERIFY3U(0, ==, bpobj_open(&bpo, dl->dl_os, obj)); + VERIFY3U(0, ==, bpobj_iterate(&bpo, + dsl_deadlist_insert_cb, dl, tx)); + bpobj_close(&bpo); + return; + } + + for (zap_cursor_init(&zc, dl->dl_os, obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + uint64_t mintxg = strtonum(za.za_name, NULL); + dsl_deadlist_insert_bpobj(dl, za.za_first_integer, mintxg, tx); + VERIFY3U(0, ==, zap_remove_int(dl->dl_os, obj, mintxg, tx)); + } + zap_cursor_fini(&zc); + + VERIFY3U(0, ==, dmu_bonus_hold(dl->dl_os, obj, FTAG, &bonus)); + dlp = bonus->db_data; + dmu_buf_will_dirty(bonus, tx); + bzero(dlp, sizeof (*dlp)); + dmu_buf_rele(bonus, FTAG); +} + +/* + * Remove entries on dl that are >= mintxg, and put them on the bpobj. + */ +void +dsl_deadlist_move_bpobj(dsl_deadlist_t *dl, bpobj_t *bpo, uint64_t mintxg, + dmu_tx_t *tx) +{ + dsl_deadlist_entry_t dle_tofind; + dsl_deadlist_entry_t *dle; + avl_index_t where; + + ASSERT(!dl->dl_oldfmt); + dmu_buf_will_dirty(dl->dl_dbuf, tx); + dsl_deadlist_load_tree(dl); + + dle_tofind.dle_mintxg = mintxg; + dle = avl_find(&dl->dl_tree, &dle_tofind, &where); + if (dle == NULL) + dle = avl_nearest(&dl->dl_tree, where, AVL_AFTER); + while (dle) { + uint64_t used, comp, uncomp; + dsl_deadlist_entry_t *dle_next; + + bpobj_enqueue_subobj(bpo, dle->dle_bpobj.bpo_object, tx); + + VERIFY3U(0, ==, bpobj_space(&dle->dle_bpobj, + &used, &comp, &uncomp)); + mutex_enter(&dl->dl_lock); + ASSERT3U(dl->dl_phys->dl_used, >=, used); + ASSERT3U(dl->dl_phys->dl_comp, >=, comp); + ASSERT3U(dl->dl_phys->dl_uncomp, >=, uncomp); + dl->dl_phys->dl_used -= used; + dl->dl_phys->dl_comp -= comp; + dl->dl_phys->dl_uncomp -= uncomp; + mutex_exit(&dl->dl_lock); + + VERIFY3U(0, ==, zap_remove_int(dl->dl_os, dl->dl_object, + dle->dle_mintxg, tx)); + + dle_next = AVL_NEXT(&dl->dl_tree, dle); + avl_remove(&dl->dl_tree, dle); + bpobj_close(&dle->dle_bpobj); + kmem_free(dle, sizeof (*dle)); + dle = dle_next; + } +} --- linux-4.4.0.orig/zfs/module/zfs/dsl_deleg.c +++ linux-4.4.0/zfs/module/zfs/dsl_deleg.c @@ -0,0 +1,775 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +/* + * DSL permissions are stored in a two level zap attribute + * mechanism. The first level identifies the "class" of + * entry. The class is identified by the first 2 letters of + * the attribute. The second letter "l" or "d" identifies whether + * it is a local or descendent permission. The first letter + * identifies the type of entry. + * + * ul$ identifies permissions granted locally for this userid. + * ud$ identifies permissions granted on descendent datasets for + * this userid. + * Ul$ identifies permission sets granted locally for this userid. + * Ud$ identifies permission sets granted on descendent datasets for + * this userid. + * gl$ identifies permissions granted locally for this groupid. + * gd$ identifies permissions granted on descendent datasets for + * this groupid. + * Gl$ identifies permission sets granted locally for this groupid. + * Gd$ identifies permission sets granted on descendent datasets for + * this groupid. + * el$ identifies permissions granted locally for everyone. + * ed$ identifies permissions granted on descendent datasets + * for everyone. + * El$ identifies permission sets granted locally for everyone. + * Ed$ identifies permission sets granted to descendent datasets for + * everyone. + * c-$ identifies permission to create at dataset creation time. + * C-$ identifies permission sets to grant locally at dataset creation + * time. + * s-$@ permissions defined in specified set @ + * S-$@ Sets defined in named set @ + * + * Each of the above entities points to another zap attribute that contains one + * attribute for each allowed permission, such as create, destroy,... + * All of the "upper" case class types will specify permission set names + * rather than permissions. + * + * Basically it looks something like this: + * ul$12 -> ZAP OBJ -> permissions... + * + * The ZAP OBJ is referred to as the jump object. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "zfs_deleg.h" + +/* + * Validate that user is allowed to delegate specified permissions. + * + * In order to delegate "create" you must have "create" + * and "allow". + */ +int +dsl_deleg_can_allow(char *ddname, nvlist_t *nvp, cred_t *cr) +{ + nvpair_t *whopair = NULL; + int error; + + if ((error = dsl_deleg_access(ddname, ZFS_DELEG_PERM_ALLOW, cr)) != 0) + return (error); + + while ((whopair = nvlist_next_nvpair(nvp, whopair))) { + nvlist_t *perms; + nvpair_t *permpair = NULL; + + VERIFY(nvpair_value_nvlist(whopair, &perms) == 0); + + while ((permpair = nvlist_next_nvpair(perms, permpair))) { + const char *perm = nvpair_name(permpair); + + if (strcmp(perm, ZFS_DELEG_PERM_ALLOW) == 0) + return (SET_ERROR(EPERM)); + + if ((error = dsl_deleg_access(ddname, perm, cr)) != 0) + return (error); + } + } + return (0); +} + +/* + * Validate that user is allowed to unallow specified permissions. They + * must have the 'allow' permission, and even then can only unallow + * perms for their uid. + */ +int +dsl_deleg_can_unallow(char *ddname, nvlist_t *nvp, cred_t *cr) +{ + nvpair_t *whopair = NULL; + int error; + char idstr[32]; + + if ((error = dsl_deleg_access(ddname, ZFS_DELEG_PERM_ALLOW, cr)) != 0) + return (error); + + (void) snprintf(idstr, sizeof (idstr), "%lld", + (longlong_t)crgetuid(cr)); + + while ((whopair = nvlist_next_nvpair(nvp, whopair))) { + zfs_deleg_who_type_t type = nvpair_name(whopair)[0]; + + if (type != ZFS_DELEG_USER && + type != ZFS_DELEG_USER_SETS) + return (SET_ERROR(EPERM)); + + if (strcmp(idstr, &nvpair_name(whopair)[3]) != 0) + return (SET_ERROR(EPERM)); + } + return (0); +} + +typedef struct dsl_deleg_arg { + const char *dda_name; + nvlist_t *dda_nvlist; +} dsl_deleg_arg_t; + +static void +dsl_deleg_set_sync(void *arg, dmu_tx_t *tx) +{ + dsl_deleg_arg_t *dda = arg; + dsl_dir_t *dd; + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + nvpair_t *whopair = NULL; + uint64_t zapobj; + + VERIFY0(dsl_dir_hold(dp, dda->dda_name, FTAG, &dd, NULL)); + + zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj; + if (zapobj == 0) { + dmu_buf_will_dirty(dd->dd_dbuf, tx); + zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj = zap_create(mos, + DMU_OT_DSL_PERMS, DMU_OT_NONE, 0, tx); + } + + while ((whopair = nvlist_next_nvpair(dda->dda_nvlist, whopair))) { + const char *whokey = nvpair_name(whopair); + nvlist_t *perms; + nvpair_t *permpair = NULL; + uint64_t jumpobj; + + perms = fnvpair_value_nvlist(whopair); + + if (zap_lookup(mos, zapobj, whokey, 8, 1, &jumpobj) != 0) { + jumpobj = zap_create_link(mos, DMU_OT_DSL_PERMS, + zapobj, whokey, tx); + } + + while ((permpair = nvlist_next_nvpair(perms, permpair))) { + const char *perm = nvpair_name(permpair); + uint64_t n = 0; + + VERIFY(zap_update(mos, jumpobj, + perm, 8, 1, &n, tx) == 0); + spa_history_log_internal_dd(dd, "permission update", tx, + "%s %s", whokey, perm); + } + } + dsl_dir_rele(dd, FTAG); +} + +static void +dsl_deleg_unset_sync(void *arg, dmu_tx_t *tx) +{ + dsl_deleg_arg_t *dda = arg; + dsl_dir_t *dd; + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + nvpair_t *whopair = NULL; + uint64_t zapobj; + + VERIFY0(dsl_dir_hold(dp, dda->dda_name, FTAG, &dd, NULL)); + zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj; + if (zapobj == 0) { + dsl_dir_rele(dd, FTAG); + return; + } + + while ((whopair = nvlist_next_nvpair(dda->dda_nvlist, whopair))) { + const char *whokey = nvpair_name(whopair); + nvlist_t *perms; + nvpair_t *permpair = NULL; + uint64_t jumpobj; + + if (nvpair_value_nvlist(whopair, &perms) != 0) { + if (zap_lookup(mos, zapobj, whokey, 8, + 1, &jumpobj) == 0) { + (void) zap_remove(mos, zapobj, whokey, tx); + VERIFY(0 == zap_destroy(mos, jumpobj, tx)); + } + spa_history_log_internal_dd(dd, "permission who remove", + tx, "%s", whokey); + continue; + } + + if (zap_lookup(mos, zapobj, whokey, 8, 1, &jumpobj) != 0) + continue; + + while ((permpair = nvlist_next_nvpair(perms, permpair))) { + const char *perm = nvpair_name(permpair); + uint64_t n = 0; + + (void) zap_remove(mos, jumpobj, perm, tx); + if (zap_count(mos, jumpobj, &n) == 0 && n == 0) { + (void) zap_remove(mos, zapobj, + whokey, tx); + VERIFY(0 == zap_destroy(mos, + jumpobj, tx)); + } + spa_history_log_internal_dd(dd, "permission remove", tx, + "%s %s", whokey, perm); + } + } + dsl_dir_rele(dd, FTAG); +} + +static int +dsl_deleg_check(void *arg, dmu_tx_t *tx) +{ + dsl_deleg_arg_t *dda = arg; + dsl_dir_t *dd; + int error; + + if (spa_version(dmu_tx_pool(tx)->dp_spa) < + SPA_VERSION_DELEGATED_PERMS) { + return (SET_ERROR(ENOTSUP)); + } + + error = dsl_dir_hold(dmu_tx_pool(tx), dda->dda_name, FTAG, &dd, NULL); + if (error == 0) + dsl_dir_rele(dd, FTAG); + return (error); +} + +int +dsl_deleg_set(const char *ddname, nvlist_t *nvp, boolean_t unset) +{ + dsl_deleg_arg_t dda; + + /* nvp must already have been verified to be valid */ + + dda.dda_name = ddname; + dda.dda_nvlist = nvp; + + return (dsl_sync_task(ddname, dsl_deleg_check, + unset ? dsl_deleg_unset_sync : dsl_deleg_set_sync, + &dda, fnvlist_num_pairs(nvp), ZFS_SPACE_CHECK_RESERVED)); +} + +/* + * Find all 'allow' permissions from a given point and then continue + * traversing up to the root. + * + * This function constructs an nvlist of nvlists. + * each setpoint is an nvlist composed of an nvlist of an nvlist + * of the individual * users/groups/everyone/create + * permissions. + * + * The nvlist will look like this. + * + * { source fsname -> { whokeys { permissions,...}, ...}} + * + * The fsname nvpairs will be arranged in a bottom up order. For example, + * if we have the following structure a/b/c then the nvpairs for the fsnames + * will be ordered a/b/c, a/b, a. + */ +int +dsl_deleg_get(const char *ddname, nvlist_t **nvp) +{ + dsl_dir_t *dd, *startdd; + dsl_pool_t *dp; + int error; + objset_t *mos; + zap_cursor_t *basezc, *zc; + zap_attribute_t *baseza, *za; + char *source; + + error = dsl_pool_hold(ddname, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dir_hold(dp, ddname, FTAG, &startdd, NULL); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + dp = startdd->dd_pool; + mos = dp->dp_meta_objset; + + zc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + basezc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + baseza = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + source = kmem_alloc(MAXNAMELEN + strlen(MOS_DIR_NAME) + 1, KM_SLEEP); + VERIFY(nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + for (dd = startdd; dd != NULL; dd = dd->dd_parent) { + nvlist_t *sp_nvp; + uint64_t n; + + if (dsl_dir_phys(dd)->dd_deleg_zapobj == 0 || + zap_count(mos, + dsl_dir_phys(dd)->dd_deleg_zapobj, &n) != 0 || n == 0) + continue; + + sp_nvp = fnvlist_alloc(); + for (zap_cursor_init(basezc, mos, + dsl_dir_phys(dd)->dd_deleg_zapobj); + zap_cursor_retrieve(basezc, baseza) == 0; + zap_cursor_advance(basezc)) { + nvlist_t *perms_nvp; + + ASSERT(baseza->za_integer_length == 8); + ASSERT(baseza->za_num_integers == 1); + + perms_nvp = fnvlist_alloc(); + for (zap_cursor_init(zc, mos, baseza->za_first_integer); + zap_cursor_retrieve(zc, za) == 0; + zap_cursor_advance(zc)) { + fnvlist_add_boolean(perms_nvp, za->za_name); + } + zap_cursor_fini(zc); + fnvlist_add_nvlist(sp_nvp, baseza->za_name, perms_nvp); + fnvlist_free(perms_nvp); + } + + zap_cursor_fini(basezc); + + dsl_dir_name(dd, source); + fnvlist_add_nvlist(*nvp, source, sp_nvp); + nvlist_free(sp_nvp); + } + + kmem_free(source, MAXNAMELEN + strlen(MOS_DIR_NAME) + 1); + kmem_free(baseza, sizeof (zap_attribute_t)); + kmem_free(basezc, sizeof (zap_cursor_t)); + kmem_free(za, sizeof (zap_attribute_t)); + kmem_free(zc, sizeof (zap_cursor_t)); + + dsl_dir_rele(startdd, FTAG); + dsl_pool_rele(dp, FTAG); + return (0); +} + +/* + * Routines for dsl_deleg_access() -- access checking. + */ +typedef struct perm_set { + avl_node_t p_node; + boolean_t p_matched; + char p_setname[ZFS_MAX_DELEG_NAME]; +} perm_set_t; + +static int +perm_set_compare(const void *arg1, const void *arg2) +{ + const perm_set_t *node1 = arg1; + const perm_set_t *node2 = arg2; + int val; + + val = strcmp(node1->p_setname, node2->p_setname); + if (val == 0) + return (0); + return (val > 0 ? 1 : -1); +} + +/* + * Determine whether a specified permission exists. + * + * First the base attribute has to be retrieved. i.e. ul$12 + * Once the base object has been retrieved the actual permission + * is lookup up in the zap object the base object points to. + * + * Return 0 if permission exists, ENOENT if there is no whokey, EPERM if + * there is no perm in that jumpobj. + */ +static int +dsl_check_access(objset_t *mos, uint64_t zapobj, + char type, char checkflag, void *valp, const char *perm) +{ + int error; + uint64_t jumpobj, zero; + char whokey[ZFS_MAX_DELEG_NAME]; + + zfs_deleg_whokey(whokey, type, checkflag, valp); + error = zap_lookup(mos, zapobj, whokey, 8, 1, &jumpobj); + if (error == 0) { + error = zap_lookup(mos, jumpobj, perm, 8, 1, &zero); + if (error == ENOENT) + error = SET_ERROR(EPERM); + } + return (error); +} + +/* + * check a specified user/group for a requested permission + */ +static int +dsl_check_user_access(objset_t *mos, uint64_t zapobj, const char *perm, + int checkflag, cred_t *cr) +{ + const gid_t *gids; + int ngids; + int i; + uint64_t id; + + /* check for user */ + id = crgetuid(cr); + if (dsl_check_access(mos, zapobj, + ZFS_DELEG_USER, checkflag, &id, perm) == 0) + return (0); + + /* check for users primary group */ + id = crgetgid(cr); + if (dsl_check_access(mos, zapobj, + ZFS_DELEG_GROUP, checkflag, &id, perm) == 0) + return (0); + + /* check for everyone entry */ + id = -1; + if (dsl_check_access(mos, zapobj, + ZFS_DELEG_EVERYONE, checkflag, &id, perm) == 0) + return (0); + + /* check each supplemental group user is a member of */ + ngids = crgetngroups(cr); + gids = crgetgroups(cr); + for (i = 0; i != ngids; i++) { + id = gids[i]; + if (dsl_check_access(mos, zapobj, + ZFS_DELEG_GROUP, checkflag, &id, perm) == 0) + return (0); + } + + return (SET_ERROR(EPERM)); +} + +/* + * Iterate over the sets specified in the specified zapobj + * and load them into the permsets avl tree. + */ +static int +dsl_load_sets(objset_t *mos, uint64_t zapobj, + char type, char checkflag, void *valp, avl_tree_t *avl) +{ + zap_cursor_t zc; + zap_attribute_t za; + perm_set_t *permnode; + avl_index_t idx; + uint64_t jumpobj; + int error; + char whokey[ZFS_MAX_DELEG_NAME]; + + zfs_deleg_whokey(whokey, type, checkflag, valp); + + error = zap_lookup(mos, zapobj, whokey, 8, 1, &jumpobj); + if (error != 0) + return (error); + + for (zap_cursor_init(&zc, mos, jumpobj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + permnode = kmem_alloc(sizeof (perm_set_t), KM_SLEEP); + (void) strlcpy(permnode->p_setname, za.za_name, + sizeof (permnode->p_setname)); + permnode->p_matched = B_FALSE; + + if (avl_find(avl, permnode, &idx) == NULL) { + avl_insert(avl, permnode, idx); + } else { + kmem_free(permnode, sizeof (perm_set_t)); + } + } + zap_cursor_fini(&zc); + return (0); +} + +/* + * Load all permissions user based on cred belongs to. + */ +static void +dsl_load_user_sets(objset_t *mos, uint64_t zapobj, avl_tree_t *avl, + char checkflag, cred_t *cr) +{ + const gid_t *gids; + int ngids, i; + uint64_t id; + + id = crgetuid(cr); + (void) dsl_load_sets(mos, zapobj, + ZFS_DELEG_USER_SETS, checkflag, &id, avl); + + id = crgetgid(cr); + (void) dsl_load_sets(mos, zapobj, + ZFS_DELEG_GROUP_SETS, checkflag, &id, avl); + + (void) dsl_load_sets(mos, zapobj, + ZFS_DELEG_EVERYONE_SETS, checkflag, NULL, avl); + + ngids = crgetngroups(cr); + gids = crgetgroups(cr); + for (i = 0; i != ngids; i++) { + id = gids[i]; + (void) dsl_load_sets(mos, zapobj, + ZFS_DELEG_GROUP_SETS, checkflag, &id, avl); + } +} + +/* + * Check if user has requested permission. + */ +int +dsl_deleg_access_impl(dsl_dataset_t *ds, const char *perm, cred_t *cr) +{ + dsl_dir_t *dd; + dsl_pool_t *dp; + void *cookie; + int error; + char checkflag; + objset_t *mos; + avl_tree_t permsets; + perm_set_t *setnode; + + dp = ds->ds_dir->dd_pool; + mos = dp->dp_meta_objset; + + if (dsl_delegation_on(mos) == B_FALSE) + return (SET_ERROR(ECANCELED)); + + if (spa_version(dmu_objset_spa(dp->dp_meta_objset)) < + SPA_VERSION_DELEGATED_PERMS) + return (SET_ERROR(EPERM)); + + if (ds->ds_is_snapshot) { + /* + * Snapshots are treated as descendents only, + * local permissions do not apply. + */ + checkflag = ZFS_DELEG_DESCENDENT; + } else { + checkflag = ZFS_DELEG_LOCAL; + } + + avl_create(&permsets, perm_set_compare, sizeof (perm_set_t), + offsetof(perm_set_t, p_node)); + + ASSERT(dsl_pool_config_held(dp)); + for (dd = ds->ds_dir; dd != NULL; dd = dd->dd_parent, + checkflag = ZFS_DELEG_DESCENDENT) { + uint64_t zapobj; + boolean_t expanded; + + /* + * If not in global zone then make sure + * the zoned property is set + */ + if (!INGLOBALZONE(curproc)) { + uint64_t zoned; + + if (dsl_prop_get_dd(dd, + zfs_prop_to_name(ZFS_PROP_ZONED), + 8, 1, &zoned, NULL, B_FALSE) != 0) + break; + if (!zoned) + break; + } + zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj; + + if (zapobj == 0) + continue; + + dsl_load_user_sets(mos, zapobj, &permsets, checkflag, cr); +again: + expanded = B_FALSE; + for (setnode = avl_first(&permsets); setnode; + setnode = AVL_NEXT(&permsets, setnode)) { + if (setnode->p_matched == B_TRUE) + continue; + + /* See if this set directly grants this permission */ + error = dsl_check_access(mos, zapobj, + ZFS_DELEG_NAMED_SET, 0, setnode->p_setname, perm); + if (error == 0) + goto success; + if (error == EPERM) + setnode->p_matched = B_TRUE; + + /* See if this set includes other sets */ + error = dsl_load_sets(mos, zapobj, + ZFS_DELEG_NAMED_SET_SETS, 0, + setnode->p_setname, &permsets); + if (error == 0) + setnode->p_matched = expanded = B_TRUE; + } + /* + * If we expanded any sets, that will define more sets, + * which we need to check. + */ + if (expanded) + goto again; + + error = dsl_check_user_access(mos, zapobj, perm, checkflag, cr); + if (error == 0) + goto success; + } + error = SET_ERROR(EPERM); +success: + + cookie = NULL; + while ((setnode = avl_destroy_nodes(&permsets, &cookie)) != NULL) + kmem_free(setnode, sizeof (perm_set_t)); + + return (error); +} + +int +dsl_deleg_access(const char *dsname, const char *perm, cred_t *cr) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int error; + + error = dsl_pool_hold(dsname, FTAG, &dp); + if (error != 0) + return (error); + error = dsl_dataset_hold(dp, dsname, FTAG, &ds); + if (error == 0) { + error = dsl_deleg_access_impl(ds, perm, cr); + dsl_dataset_rele(ds, FTAG); + } + dsl_pool_rele(dp, FTAG); + + return (error); +} + +/* + * Other routines. + */ + +static void +copy_create_perms(dsl_dir_t *dd, uint64_t pzapobj, + boolean_t dosets, uint64_t uid, dmu_tx_t *tx) +{ + objset_t *mos = dd->dd_pool->dp_meta_objset; + uint64_t jumpobj, pjumpobj; + uint64_t zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj; + zap_cursor_t zc; + zap_attribute_t za; + char whokey[ZFS_MAX_DELEG_NAME]; + + zfs_deleg_whokey(whokey, + dosets ? ZFS_DELEG_CREATE_SETS : ZFS_DELEG_CREATE, + ZFS_DELEG_LOCAL, NULL); + if (zap_lookup(mos, pzapobj, whokey, 8, 1, &pjumpobj) != 0) + return; + + if (zapobj == 0) { + dmu_buf_will_dirty(dd->dd_dbuf, tx); + zapobj = dsl_dir_phys(dd)->dd_deleg_zapobj = zap_create(mos, + DMU_OT_DSL_PERMS, DMU_OT_NONE, 0, tx); + } + + zfs_deleg_whokey(whokey, + dosets ? ZFS_DELEG_USER_SETS : ZFS_DELEG_USER, + ZFS_DELEG_LOCAL, &uid); + if (zap_lookup(mos, zapobj, whokey, 8, 1, &jumpobj) == ENOENT) { + jumpobj = zap_create(mos, DMU_OT_DSL_PERMS, DMU_OT_NONE, 0, tx); + VERIFY(zap_add(mos, zapobj, whokey, 8, 1, &jumpobj, tx) == 0); + } + + for (zap_cursor_init(&zc, mos, pjumpobj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + uint64_t zero = 0; + ASSERT(za.za_integer_length == 8 && za.za_num_integers == 1); + + VERIFY(zap_update(mos, jumpobj, za.za_name, + 8, 1, &zero, tx) == 0); + } + zap_cursor_fini(&zc); +} + +/* + * set all create time permission on new dataset. + */ +void +dsl_deleg_set_create_perms(dsl_dir_t *sdd, dmu_tx_t *tx, cred_t *cr) +{ + dsl_dir_t *dd; + uint64_t uid = crgetuid(cr); + + if (spa_version(dmu_objset_spa(sdd->dd_pool->dp_meta_objset)) < + SPA_VERSION_DELEGATED_PERMS) + return; + + for (dd = sdd->dd_parent; dd != NULL; dd = dd->dd_parent) { + uint64_t pzapobj = dsl_dir_phys(dd)->dd_deleg_zapobj; + + if (pzapobj == 0) + continue; + + copy_create_perms(sdd, pzapobj, B_FALSE, uid, tx); + copy_create_perms(sdd, pzapobj, B_TRUE, uid, tx); + } +} + +int +dsl_deleg_destroy(objset_t *mos, uint64_t zapobj, dmu_tx_t *tx) +{ + zap_cursor_t zc; + zap_attribute_t za; + + if (zapobj == 0) + return (0); + + for (zap_cursor_init(&zc, mos, zapobj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + ASSERT(za.za_integer_length == 8 && za.za_num_integers == 1); + VERIFY(0 == zap_destroy(mos, za.za_first_integer, tx)); + } + zap_cursor_fini(&zc); + VERIFY(0 == zap_destroy(mos, zapobj, tx)); + return (0); +} + +boolean_t +dsl_delegation_on(objset_t *os) +{ + return (!!spa_delegation(os->os_spa)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_deleg_get); +EXPORT_SYMBOL(dsl_deleg_set); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_destroy.c +++ linux-4.4.0/zfs/module/zfs/dsl_destroy.c @@ -0,0 +1,988 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + * Copyright (c) 2013 by Joyent, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct dmu_snapshots_destroy_arg { + nvlist_t *dsda_snaps; + nvlist_t *dsda_successful_snaps; + boolean_t dsda_defer; + nvlist_t *dsda_errlist; +} dmu_snapshots_destroy_arg_t; + +int +dsl_destroy_snapshot_check_impl(dsl_dataset_t *ds, boolean_t defer) +{ + if (!ds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + if (dsl_dataset_long_held(ds)) + return (SET_ERROR(EBUSY)); + + /* + * Only allow deferred destroy on pools that support it. + * NOTE: deferred destroy is only supported on snapshots. + */ + if (defer) { + if (spa_version(ds->ds_dir->dd_pool->dp_spa) < + SPA_VERSION_USERREFS) + return (SET_ERROR(ENOTSUP)); + return (0); + } + + /* + * If this snapshot has an elevated user reference count, + * we can't destroy it yet. + */ + if (ds->ds_userrefs > 0) + return (SET_ERROR(EBUSY)); + + /* + * Can't delete a branch point. + */ + if (dsl_dataset_phys(ds)->ds_num_children > 1) + return (SET_ERROR(EEXIST)); + + return (0); +} + +static int +dsl_destroy_snapshot_check(void *arg, dmu_tx_t *tx) +{ + dmu_snapshots_destroy_arg_t *dsda = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + int error = 0; + + if (!dmu_tx_is_syncing(tx)) + return (0); + + for (pair = nvlist_next_nvpair(dsda->dsda_snaps, NULL); + pair != NULL; pair = nvlist_next_nvpair(dsda->dsda_snaps, pair)) { + dsl_dataset_t *ds; + + error = dsl_dataset_hold(dp, nvpair_name(pair), + FTAG, &ds); + + /* + * If the snapshot does not exist, silently ignore it + * (it's "already destroyed"). + */ + if (error == ENOENT) + continue; + + if (error == 0) { + error = dsl_destroy_snapshot_check_impl(ds, + dsda->dsda_defer); + dsl_dataset_rele(ds, FTAG); + } + + if (error == 0) { + fnvlist_add_boolean(dsda->dsda_successful_snaps, + nvpair_name(pair)); + } else { + fnvlist_add_int32(dsda->dsda_errlist, + nvpair_name(pair), error); + } + } + + pair = nvlist_next_nvpair(dsda->dsda_errlist, NULL); + if (pair != NULL) + return (fnvpair_value_int32(pair)); + + return (0); +} + +struct process_old_arg { + dsl_dataset_t *ds; + dsl_dataset_t *ds_prev; + boolean_t after_branch_point; + zio_t *pio; + uint64_t used, comp, uncomp; +}; + +static int +process_old_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + struct process_old_arg *poa = arg; + dsl_pool_t *dp = poa->ds->ds_dir->dd_pool; + + ASSERT(!BP_IS_HOLE(bp)); + + if (bp->blk_birth <= dsl_dataset_phys(poa->ds)->ds_prev_snap_txg) { + dsl_deadlist_insert(&poa->ds->ds_deadlist, bp, tx); + if (poa->ds_prev && !poa->after_branch_point && + bp->blk_birth > + dsl_dataset_phys(poa->ds_prev)->ds_prev_snap_txg) { + dsl_dataset_phys(poa->ds_prev)->ds_unique_bytes += + bp_get_dsize_sync(dp->dp_spa, bp); + } + } else { + poa->used += bp_get_dsize_sync(dp->dp_spa, bp); + poa->comp += BP_GET_PSIZE(bp); + poa->uncomp += BP_GET_UCSIZE(bp); + dsl_free_sync(poa->pio, dp, tx->tx_txg, bp); + } + return (0); +} + +static void +process_old_deadlist(dsl_dataset_t *ds, dsl_dataset_t *ds_prev, + dsl_dataset_t *ds_next, boolean_t after_branch_point, dmu_tx_t *tx) +{ + struct process_old_arg poa = { 0 }; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + objset_t *mos = dp->dp_meta_objset; + uint64_t deadlist_obj; + + ASSERT(ds->ds_deadlist.dl_oldfmt); + ASSERT(ds_next->ds_deadlist.dl_oldfmt); + + poa.ds = ds; + poa.ds_prev = ds_prev; + poa.after_branch_point = after_branch_point; + poa.pio = zio_root(dp->dp_spa, NULL, NULL, ZIO_FLAG_MUSTSUCCEED); + VERIFY0(bpobj_iterate(&ds_next->ds_deadlist.dl_bpobj, + process_old_cb, &poa, tx)); + VERIFY0(zio_wait(poa.pio)); + ASSERT3U(poa.used, ==, dsl_dataset_phys(ds)->ds_unique_bytes); + + /* change snapused */ + dsl_dir_diduse_space(ds->ds_dir, DD_USED_SNAP, + -poa.used, -poa.comp, -poa.uncomp, tx); + + /* swap next's deadlist to our deadlist */ + dsl_deadlist_close(&ds->ds_deadlist); + dsl_deadlist_close(&ds_next->ds_deadlist); + deadlist_obj = dsl_dataset_phys(ds)->ds_deadlist_obj; + dsl_dataset_phys(ds)->ds_deadlist_obj = + dsl_dataset_phys(ds_next)->ds_deadlist_obj; + dsl_dataset_phys(ds_next)->ds_deadlist_obj = deadlist_obj; + dsl_deadlist_open(&ds->ds_deadlist, mos, + dsl_dataset_phys(ds)->ds_deadlist_obj); + dsl_deadlist_open(&ds_next->ds_deadlist, mos, + dsl_dataset_phys(ds_next)->ds_deadlist_obj); +} + +static void +dsl_dataset_remove_clones_key(dsl_dataset_t *ds, uint64_t mintxg, dmu_tx_t *tx) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + zap_cursor_t *zc; + zap_attribute_t *za; + + /* + * If it is the old version, dd_clones doesn't exist so we can't + * find the clones, but dsl_deadlist_remove_key() is a no-op so it + * doesn't matter. + */ + if (dsl_dir_phys(ds->ds_dir)->dd_clones == 0) + return; + + zc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + + for (zap_cursor_init(zc, mos, dsl_dir_phys(ds->ds_dir)->dd_clones); + zap_cursor_retrieve(zc, za) == 0; + zap_cursor_advance(zc)) { + dsl_dataset_t *clone; + + VERIFY0(dsl_dataset_hold_obj(ds->ds_dir->dd_pool, + za->za_first_integer, FTAG, &clone)); + if (clone->ds_dir->dd_origin_txg > mintxg) { + dsl_deadlist_remove_key(&clone->ds_deadlist, + mintxg, tx); + dsl_dataset_remove_clones_key(clone, mintxg, tx); + } + dsl_dataset_rele(clone, FTAG); + } + zap_cursor_fini(zc); + + kmem_free(za, sizeof (zap_attribute_t)); + kmem_free(zc, sizeof (zap_cursor_t)); +} + +void +dsl_destroy_snapshot_sync_impl(dsl_dataset_t *ds, boolean_t defer, dmu_tx_t *tx) +{ +#ifdef ZFS_DEBUG + int err; +#endif + int after_branch_point = FALSE; + dsl_pool_t *dp = ds->ds_dir->dd_pool; + objset_t *mos = dp->dp_meta_objset; + dsl_dataset_t *ds_prev = NULL; + uint64_t obj, old_unique, used = 0, comp = 0, uncomp = 0; + dsl_dataset_t *ds_next, *ds_head, *hds; + + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + ASSERT3U(dsl_dataset_phys(ds)->ds_bp.blk_birth, <=, tx->tx_txg); + ASSERT(refcount_is_zero(&ds->ds_longholds)); + + if (defer && + (ds->ds_userrefs > 0 || + dsl_dataset_phys(ds)->ds_num_children > 1)) { + ASSERT(spa_version(dp->dp_spa) >= SPA_VERSION_USERREFS); + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_flags |= DS_FLAG_DEFER_DESTROY; + spa_history_log_internal_ds(ds, "defer_destroy", tx, ""); + return; + } + + ASSERT3U(dsl_dataset_phys(ds)->ds_num_children, <=, 1); + + /* We need to log before removing it from the namespace. */ + spa_history_log_internal_ds(ds, "destroy", tx, ""); + + dsl_scan_ds_destroyed(ds, tx); + + obj = ds->ds_object; + + if (ds->ds_large_blocks) { + ASSERT0(zap_contains(mos, obj, DS_FIELD_LARGE_BLOCKS)); + spa_feature_decr(dp->dp_spa, SPA_FEATURE_LARGE_BLOCKS, tx); + } + if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + ASSERT3P(ds->ds_prev, ==, NULL); + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, FTAG, &ds_prev)); + after_branch_point = + (dsl_dataset_phys(ds_prev)->ds_next_snap_obj != obj); + + dmu_buf_will_dirty(ds_prev->ds_dbuf, tx); + if (after_branch_point && + dsl_dataset_phys(ds_prev)->ds_next_clones_obj != 0) { + dsl_dataset_remove_from_next_clones(ds_prev, obj, tx); + if (dsl_dataset_phys(ds)->ds_next_snap_obj != 0) { + VERIFY0(zap_add_int(mos, + dsl_dataset_phys(ds_prev)-> + ds_next_clones_obj, + dsl_dataset_phys(ds)->ds_next_snap_obj, + tx)); + } + } + if (!after_branch_point) { + dsl_dataset_phys(ds_prev)->ds_next_snap_obj = + dsl_dataset_phys(ds)->ds_next_snap_obj; + } + } + + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_next_snap_obj, FTAG, &ds_next)); + ASSERT3U(dsl_dataset_phys(ds_next)->ds_prev_snap_obj, ==, obj); + + old_unique = dsl_dataset_phys(ds_next)->ds_unique_bytes; + + dmu_buf_will_dirty(ds_next->ds_dbuf, tx); + dsl_dataset_phys(ds_next)->ds_prev_snap_obj = + dsl_dataset_phys(ds)->ds_prev_snap_obj; + dsl_dataset_phys(ds_next)->ds_prev_snap_txg = + dsl_dataset_phys(ds)->ds_prev_snap_txg; + ASSERT3U(dsl_dataset_phys(ds)->ds_prev_snap_txg, ==, + ds_prev ? dsl_dataset_phys(ds_prev)->ds_creation_txg : 0); + + if (ds_next->ds_deadlist.dl_oldfmt) { + process_old_deadlist(ds, ds_prev, ds_next, + after_branch_point, tx); + } else { + /* Adjust prev's unique space. */ + if (ds_prev && !after_branch_point) { + dsl_deadlist_space_range(&ds_next->ds_deadlist, + dsl_dataset_phys(ds_prev)->ds_prev_snap_txg, + dsl_dataset_phys(ds)->ds_prev_snap_txg, + &used, &comp, &uncomp); + dsl_dataset_phys(ds_prev)->ds_unique_bytes += used; + } + + /* Adjust snapused. */ + dsl_deadlist_space_range(&ds_next->ds_deadlist, + dsl_dataset_phys(ds)->ds_prev_snap_txg, UINT64_MAX, + &used, &comp, &uncomp); + dsl_dir_diduse_space(ds->ds_dir, DD_USED_SNAP, + -used, -comp, -uncomp, tx); + + /* Move blocks to be freed to pool's free list. */ + dsl_deadlist_move_bpobj(&ds_next->ds_deadlist, + &dp->dp_free_bpobj, dsl_dataset_phys(ds)->ds_prev_snap_txg, + tx); + dsl_dir_diduse_space(tx->tx_pool->dp_free_dir, + DD_USED_HEAD, used, comp, uncomp, tx); + + /* Merge our deadlist into next's and free it. */ + dsl_deadlist_merge(&ds_next->ds_deadlist, + dsl_dataset_phys(ds)->ds_deadlist_obj, tx); + } + dsl_deadlist_close(&ds->ds_deadlist); + dsl_deadlist_free(mos, dsl_dataset_phys(ds)->ds_deadlist_obj, tx); + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_deadlist_obj = 0; + + /* Collapse range in clone heads */ + dsl_dataset_remove_clones_key(ds, + dsl_dataset_phys(ds)->ds_creation_txg, tx); + + if (ds_next->ds_is_snapshot) { + dsl_dataset_t *ds_nextnext; + + /* + * Update next's unique to include blocks which + * were previously shared by only this snapshot + * and it. Those blocks will be born after the + * prev snap and before this snap, and will have + * died after the next snap and before the one + * after that (ie. be on the snap after next's + * deadlist). + */ + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds_next)->ds_next_snap_obj, + FTAG, &ds_nextnext)); + dsl_deadlist_space_range(&ds_nextnext->ds_deadlist, + dsl_dataset_phys(ds)->ds_prev_snap_txg, + dsl_dataset_phys(ds)->ds_creation_txg, + &used, &comp, &uncomp); + dsl_dataset_phys(ds_next)->ds_unique_bytes += used; + dsl_dataset_rele(ds_nextnext, FTAG); + ASSERT3P(ds_next->ds_prev, ==, NULL); + + /* Collapse range in this head. */ + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dir_phys(ds->ds_dir)->dd_head_dataset_obj, FTAG, &hds)); + dsl_deadlist_remove_key(&hds->ds_deadlist, + dsl_dataset_phys(ds)->ds_creation_txg, tx); + dsl_dataset_rele(hds, FTAG); + + } else { + ASSERT3P(ds_next->ds_prev, ==, ds); + dsl_dataset_rele(ds_next->ds_prev, ds_next); + ds_next->ds_prev = NULL; + if (ds_prev) { + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, + ds_next, &ds_next->ds_prev)); + } + + dsl_dataset_recalc_head_uniq(ds_next); + + /* + * Reduce the amount of our unconsumed refreservation + * being charged to our parent by the amount of + * new unique data we have gained. + */ + if (old_unique < ds_next->ds_reserved) { + int64_t mrsdelta; + uint64_t new_unique = + dsl_dataset_phys(ds_next)->ds_unique_bytes; + + ASSERT(old_unique <= new_unique); + mrsdelta = MIN(new_unique - old_unique, + ds_next->ds_reserved - old_unique); + dsl_dir_diduse_space(ds->ds_dir, + DD_USED_REFRSRV, -mrsdelta, 0, 0, tx); + } + } + dsl_dataset_rele(ds_next, FTAG); + + /* + * This must be done after the dsl_traverse(), because it will + * re-open the objset. + */ + if (ds->ds_objset) { + dmu_objset_evict(ds->ds_objset); + ds->ds_objset = NULL; + } + + /* remove from snapshot namespace */ + ASSERT(dsl_dataset_phys(ds)->ds_snapnames_zapobj == 0); + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dir_phys(ds->ds_dir)->dd_head_dataset_obj, FTAG, &ds_head)); + VERIFY0(dsl_dataset_get_snapname(ds)); +#ifdef ZFS_DEBUG + { + uint64_t val; + + err = dsl_dataset_snap_lookup(ds_head, + ds->ds_snapname, &val); + ASSERT0(err); + ASSERT3U(val, ==, obj); + } +#endif + VERIFY0(dsl_dataset_snap_remove(ds_head, ds->ds_snapname, tx, B_TRUE)); + dsl_dataset_rele(ds_head, FTAG); + + if (ds_prev != NULL) + dsl_dataset_rele(ds_prev, FTAG); + + spa_prop_clear_bootfs(dp->dp_spa, ds->ds_object, tx); + + if (dsl_dataset_phys(ds)->ds_next_clones_obj != 0) { + ASSERTV(uint64_t count); + ASSERT0(zap_count(mos, + dsl_dataset_phys(ds)->ds_next_clones_obj, &count) && + count == 0); + VERIFY0(dmu_object_free(mos, + dsl_dataset_phys(ds)->ds_next_clones_obj, tx)); + } + if (dsl_dataset_phys(ds)->ds_props_obj != 0) + VERIFY0(zap_destroy(mos, dsl_dataset_phys(ds)->ds_props_obj, + tx)); + if (dsl_dataset_phys(ds)->ds_userrefs_obj != 0) + VERIFY0(zap_destroy(mos, dsl_dataset_phys(ds)->ds_userrefs_obj, + tx)); + dsl_dir_rele(ds->ds_dir, ds); + ds->ds_dir = NULL; + dmu_object_free_zapified(mos, obj, tx); +} + +static void +dsl_destroy_snapshot_sync(void *arg, dmu_tx_t *tx) +{ + dmu_snapshots_destroy_arg_t *dsda = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(dsda->dsda_successful_snaps, NULL); + pair != NULL; + pair = nvlist_next_nvpair(dsda->dsda_successful_snaps, pair)) { + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, nvpair_name(pair), FTAG, &ds)); + + dsl_destroy_snapshot_sync_impl(ds, dsda->dsda_defer, tx); + dsl_dataset_rele(ds, FTAG); + } +} + +/* + * The semantics of this function are described in the comment above + * lzc_destroy_snaps(). To summarize: + * + * The snapshots must all be in the same pool. + * + * Snapshots that don't exist will be silently ignored (considered to be + * "already deleted"). + * + * On success, all snaps will be destroyed and this will return 0. + * On failure, no snaps will be destroyed, the errlist will be filled in, + * and this will return an errno. + */ +int +dsl_destroy_snapshots_nvl(nvlist_t *snaps, boolean_t defer, + nvlist_t *errlist) +{ + dmu_snapshots_destroy_arg_t dsda; + int error; + nvpair_t *pair; + + pair = nvlist_next_nvpair(snaps, NULL); + if (pair == NULL) + return (0); + + dsda.dsda_snaps = snaps; + VERIFY0(nvlist_alloc(&dsda.dsda_successful_snaps, + NV_UNIQUE_NAME, KM_SLEEP)); + dsda.dsda_defer = defer; + dsda.dsda_errlist = errlist; + + error = dsl_sync_task(nvpair_name(pair), + dsl_destroy_snapshot_check, dsl_destroy_snapshot_sync, + &dsda, 0, ZFS_SPACE_CHECK_NONE); + fnvlist_free(dsda.dsda_successful_snaps); + + return (error); +} + +int +dsl_destroy_snapshot(const char *name, boolean_t defer) +{ + int error; + nvlist_t *nvl = fnvlist_alloc(); + nvlist_t *errlist = fnvlist_alloc(); + + fnvlist_add_boolean(nvl, name); + error = dsl_destroy_snapshots_nvl(nvl, defer, errlist); + fnvlist_free(errlist); + fnvlist_free(nvl); + return (error); +} + +struct killarg { + dsl_dataset_t *ds; + dmu_tx_t *tx; +}; + +/* ARGSUSED */ +static int +kill_blkptr(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + struct killarg *ka = arg; + dmu_tx_t *tx = ka->tx; + + if (BP_IS_HOLE(bp) || BP_IS_EMBEDDED(bp)) + return (0); + + if (zb->zb_level == ZB_ZIL_LEVEL) { + ASSERT(zilog != NULL); + /* + * It's a block in the intent log. It has no + * accounting, so just free it. + */ + dsl_free(ka->tx->tx_pool, ka->tx->tx_txg, bp); + } else { + ASSERT(zilog == NULL); + ASSERT3U(bp->blk_birth, >, + dsl_dataset_phys(ka->ds)->ds_prev_snap_txg); + (void) dsl_dataset_block_kill(ka->ds, bp, tx, B_FALSE); + } + + return (0); +} + +static void +old_synchronous_dataset_destroy(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + struct killarg ka; + + /* + * Free everything that we point to (that's born after + * the previous snapshot, if we are a clone) + * + * NB: this should be very quick, because we already + * freed all the objects in open context. + */ + ka.ds = ds; + ka.tx = tx; + VERIFY0(traverse_dataset(ds, + dsl_dataset_phys(ds)->ds_prev_snap_txg, TRAVERSE_POST, + kill_blkptr, &ka)); + ASSERT(!DS_UNIQUE_IS_ACCURATE(ds) || + dsl_dataset_phys(ds)->ds_unique_bytes == 0); +} + +typedef struct dsl_destroy_head_arg { + const char *ddha_name; +} dsl_destroy_head_arg_t; + +int +dsl_destroy_head_check_impl(dsl_dataset_t *ds, int expected_holds) +{ + int error; + uint64_t count; + objset_t *mos; + + ASSERT(!ds->ds_is_snapshot); + if (ds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + if (refcount_count(&ds->ds_longholds) != expected_holds) + return (SET_ERROR(EBUSY)); + + mos = ds->ds_dir->dd_pool->dp_meta_objset; + + /* + * Can't delete a head dataset if there are snapshots of it. + * (Except if the only snapshots are from the branch we cloned + * from.) + */ + if (ds->ds_prev != NULL && + dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj == ds->ds_object) + return (SET_ERROR(EBUSY)); + + /* + * Can't delete if there are children of this fs. + */ + error = zap_count(mos, + dsl_dir_phys(ds->ds_dir)->dd_child_dir_zapobj, &count); + if (error != 0) + return (error); + if (count != 0) + return (SET_ERROR(EEXIST)); + + if (dsl_dir_is_clone(ds->ds_dir) && DS_IS_DEFER_DESTROY(ds->ds_prev) && + dsl_dataset_phys(ds->ds_prev)->ds_num_children == 2 && + ds->ds_prev->ds_userrefs == 0) { + /* We need to remove the origin snapshot as well. */ + if (!refcount_is_zero(&ds->ds_prev->ds_longholds)) + return (SET_ERROR(EBUSY)); + } + return (0); +} + +static int +dsl_destroy_head_check(void *arg, dmu_tx_t *tx) +{ + dsl_destroy_head_arg_t *ddha = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int error; + + error = dsl_dataset_hold(dp, ddha->ddha_name, FTAG, &ds); + if (error != 0) + return (error); + + error = dsl_destroy_head_check_impl(ds, 0); + dsl_dataset_rele(ds, FTAG); + return (error); +} + +static void +dsl_dir_destroy_sync(uint64_t ddobj, dmu_tx_t *tx) +{ + dsl_dir_t *dd; + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + dd_used_t t; + + ASSERT(RRW_WRITE_HELD(&dmu_tx_pool(tx)->dp_config_rwlock)); + + VERIFY0(dsl_dir_hold_obj(dp, ddobj, NULL, FTAG, &dd)); + + ASSERT0(dsl_dir_phys(dd)->dd_head_dataset_obj); + + /* + * Decrement the filesystem count for all parent filesystems. + * + * When we receive an incremental stream into a filesystem that already + * exists, a temporary clone is created. We never count this temporary + * clone, whose name begins with a '%'. + */ + if (dd->dd_myname[0] != '%' && dd->dd_parent != NULL) + dsl_fs_ss_count_adjust(dd->dd_parent, -1, + DD_FIELD_FILESYSTEM_COUNT, tx); + + /* + * Remove our reservation. The impl() routine avoids setting the + * actual property, which would require the (already destroyed) ds. + */ + dsl_dir_set_reservation_sync_impl(dd, 0, tx); + + ASSERT0(dsl_dir_phys(dd)->dd_used_bytes); + ASSERT0(dsl_dir_phys(dd)->dd_reserved); + for (t = 0; t < DD_USED_NUM; t++) + ASSERT0(dsl_dir_phys(dd)->dd_used_breakdown[t]); + + VERIFY0(zap_destroy(mos, dsl_dir_phys(dd)->dd_child_dir_zapobj, tx)); + VERIFY0(zap_destroy(mos, dsl_dir_phys(dd)->dd_props_zapobj, tx)); + VERIFY0(dsl_deleg_destroy(mos, dsl_dir_phys(dd)->dd_deleg_zapobj, tx)); + VERIFY0(zap_remove(mos, + dsl_dir_phys(dd->dd_parent)->dd_child_dir_zapobj, + dd->dd_myname, tx)); + + dsl_dir_rele(dd, FTAG); + dmu_object_free_zapified(mos, ddobj, tx); +} + +void +dsl_destroy_head_sync_impl(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + uint64_t obj, ddobj, prevobj = 0; + boolean_t rmorigin; + objset_t *os; + + ASSERT3U(dsl_dataset_phys(ds)->ds_num_children, <=, 1); + ASSERT(ds->ds_prev == NULL || + dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj != ds->ds_object); + ASSERT3U(dsl_dataset_phys(ds)->ds_bp.blk_birth, <=, tx->tx_txg); + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + + /* We need to log before removing it from the namespace. */ + spa_history_log_internal_ds(ds, "destroy", tx, ""); + + rmorigin = (dsl_dir_is_clone(ds->ds_dir) && + DS_IS_DEFER_DESTROY(ds->ds_prev) && + dsl_dataset_phys(ds->ds_prev)->ds_num_children == 2 && + ds->ds_prev->ds_userrefs == 0); + + /* Remove our reservation. */ + if (ds->ds_reserved != 0) { + dsl_dataset_set_refreservation_sync_impl(ds, + (ZPROP_SRC_NONE | ZPROP_SRC_LOCAL | ZPROP_SRC_RECEIVED), + 0, tx); + ASSERT0(ds->ds_reserved); + } + + if (ds->ds_large_blocks) + spa_feature_decr(dp->dp_spa, SPA_FEATURE_LARGE_BLOCKS, tx); + + dsl_scan_ds_destroyed(ds, tx); + + obj = ds->ds_object; + + if (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + /* This is a clone */ + ASSERT(ds->ds_prev != NULL); + ASSERT3U(dsl_dataset_phys(ds->ds_prev)->ds_next_snap_obj, !=, + obj); + ASSERT0(dsl_dataset_phys(ds)->ds_next_snap_obj); + + dmu_buf_will_dirty(ds->ds_prev->ds_dbuf, tx); + if (dsl_dataset_phys(ds->ds_prev)->ds_next_clones_obj != 0) { + dsl_dataset_remove_from_next_clones(ds->ds_prev, + obj, tx); + } + + ASSERT3U(dsl_dataset_phys(ds->ds_prev)->ds_num_children, >, 1); + dsl_dataset_phys(ds->ds_prev)->ds_num_children--; + } + + /* + * Destroy the deadlist. Unless it's a clone, the + * deadlist should be empty. (If it's a clone, it's + * safe to ignore the deadlist contents.) + */ + dsl_deadlist_close(&ds->ds_deadlist); + dsl_deadlist_free(mos, dsl_dataset_phys(ds)->ds_deadlist_obj, tx); + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_deadlist_obj = 0; + + VERIFY0(dmu_objset_from_ds(ds, &os)); + + if (!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_ASYNC_DESTROY)) { + old_synchronous_dataset_destroy(ds, tx); + } else { + /* + * Move the bptree into the pool's list of trees to + * clean up and update space accounting information. + */ + uint64_t used, comp, uncomp; + + zil_destroy_sync(dmu_objset_zil(os), tx); + + if (!spa_feature_is_active(dp->dp_spa, + SPA_FEATURE_ASYNC_DESTROY)) { + dsl_scan_t *scn = dp->dp_scan; + spa_feature_incr(dp->dp_spa, SPA_FEATURE_ASYNC_DESTROY, + tx); + dp->dp_bptree_obj = bptree_alloc(mos, tx); + VERIFY0(zap_add(mos, + DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_BPTREE_OBJ, sizeof (uint64_t), 1, + &dp->dp_bptree_obj, tx)); + ASSERT(!scn->scn_async_destroying); + scn->scn_async_destroying = B_TRUE; + } + + used = dsl_dir_phys(ds->ds_dir)->dd_used_bytes; + comp = dsl_dir_phys(ds->ds_dir)->dd_compressed_bytes; + uncomp = dsl_dir_phys(ds->ds_dir)->dd_uncompressed_bytes; + + ASSERT(!DS_UNIQUE_IS_ACCURATE(ds) || + dsl_dataset_phys(ds)->ds_unique_bytes == used); + + bptree_add(mos, dp->dp_bptree_obj, + &dsl_dataset_phys(ds)->ds_bp, + dsl_dataset_phys(ds)->ds_prev_snap_txg, + used, comp, uncomp, tx); + dsl_dir_diduse_space(ds->ds_dir, DD_USED_HEAD, + -used, -comp, -uncomp, tx); + dsl_dir_diduse_space(dp->dp_free_dir, DD_USED_HEAD, + used, comp, uncomp, tx); + } + + if (ds->ds_prev != NULL) { + if (spa_version(dp->dp_spa) >= SPA_VERSION_DIR_CLONES) { + VERIFY0(zap_remove_int(mos, + dsl_dir_phys(ds->ds_prev->ds_dir)->dd_clones, + ds->ds_object, tx)); + } + prevobj = ds->ds_prev->ds_object; + dsl_dataset_rele(ds->ds_prev, ds); + ds->ds_prev = NULL; + } + + /* + * This must be done after the dsl_traverse(), because it will + * re-open the objset. + */ + if (ds->ds_objset) { + dmu_objset_evict(ds->ds_objset); + ds->ds_objset = NULL; + } + + /* Erase the link in the dir */ + dmu_buf_will_dirty(ds->ds_dir->dd_dbuf, tx); + dsl_dir_phys(ds->ds_dir)->dd_head_dataset_obj = 0; + ddobj = ds->ds_dir->dd_object; + ASSERT(dsl_dataset_phys(ds)->ds_snapnames_zapobj != 0); + VERIFY0(zap_destroy(mos, + dsl_dataset_phys(ds)->ds_snapnames_zapobj, tx)); + + if (ds->ds_bookmarks != 0) { + VERIFY0(zap_destroy(mos, ds->ds_bookmarks, tx)); + spa_feature_decr(dp->dp_spa, SPA_FEATURE_BOOKMARKS, tx); + } + + spa_prop_clear_bootfs(dp->dp_spa, ds->ds_object, tx); + + ASSERT0(dsl_dataset_phys(ds)->ds_next_clones_obj); + ASSERT0(dsl_dataset_phys(ds)->ds_props_obj); + ASSERT0(dsl_dataset_phys(ds)->ds_userrefs_obj); + dsl_dir_rele(ds->ds_dir, ds); + ds->ds_dir = NULL; + dmu_object_free_zapified(mos, obj, tx); + + dsl_dir_destroy_sync(ddobj, tx); + + if (rmorigin) { + dsl_dataset_t *prev; + VERIFY0(dsl_dataset_hold_obj(dp, prevobj, FTAG, &prev)); + dsl_destroy_snapshot_sync_impl(prev, B_FALSE, tx); + dsl_dataset_rele(prev, FTAG); + } +} + +static void +dsl_destroy_head_sync(void *arg, dmu_tx_t *tx) +{ + dsl_destroy_head_arg_t *ddha = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, ddha->ddha_name, FTAG, &ds)); + dsl_destroy_head_sync_impl(ds, tx); + dsl_dataset_rele(ds, FTAG); +} + +static void +dsl_destroy_head_begin_sync(void *arg, dmu_tx_t *tx) +{ + dsl_destroy_head_arg_t *ddha = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, ddha->ddha_name, FTAG, &ds)); + + /* Mark it as inconsistent on-disk, in case we crash */ + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_flags |= DS_FLAG_INCONSISTENT; + + spa_history_log_internal_ds(ds, "destroy begin", tx, ""); + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_destroy_head(const char *name) +{ + dsl_destroy_head_arg_t ddha; + int error; + spa_t *spa; + boolean_t isenabled; + +#ifdef _KERNEL + zfs_destroy_unmount_origin(name); +#endif + + error = spa_open(name, &spa, FTAG); + if (error != 0) + return (error); + isenabled = spa_feature_is_enabled(spa, SPA_FEATURE_ASYNC_DESTROY); + spa_close(spa, FTAG); + + ddha.ddha_name = name; + + if (!isenabled) { + objset_t *os; + + error = dsl_sync_task(name, dsl_destroy_head_check, + dsl_destroy_head_begin_sync, &ddha, + 0, ZFS_SPACE_CHECK_NONE); + if (error != 0) + return (error); + + /* + * Head deletion is processed in one txg on old pools; + * remove the objects from open context so that the txg sync + * is not too long. + */ + error = dmu_objset_own(name, DMU_OST_ANY, B_FALSE, FTAG, &os); + if (error == 0) { + uint64_t obj; + uint64_t prev_snap_txg = + dsl_dataset_phys(dmu_objset_ds(os))-> + ds_prev_snap_txg; + for (obj = 0; error == 0; + error = dmu_object_next(os, &obj, FALSE, + prev_snap_txg)) + (void) dmu_free_long_object(os, obj); + /* sync out all frees */ + txg_wait_synced(dmu_objset_pool(os), 0); + dmu_objset_disown(os, FTAG); + } + } + + return (dsl_sync_task(name, dsl_destroy_head_check, + dsl_destroy_head_sync, &ddha, 0, ZFS_SPACE_CHECK_NONE)); +} + +/* + * Note, this function is used as the callback for dmu_objset_find(). We + * always return 0 so that we will continue to find and process + * inconsistent datasets, even if we encounter an error trying to + * process one of them. + */ +/* ARGSUSED */ +int +dsl_destroy_inconsistent(const char *dsname, void *arg) +{ + objset_t *os; + + if (dmu_objset_hold(dsname, FTAG, &os) == 0) { + boolean_t inconsistent = DS_IS_INCONSISTENT(dmu_objset_ds(os)); + dmu_objset_rele(os, FTAG); + if (inconsistent) + (void) dsl_destroy_head(dsname); + } + return (0); +} + + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_destroy_head); +EXPORT_SYMBOL(dsl_destroy_head_sync_impl); +EXPORT_SYMBOL(dsl_dataset_user_hold_check_one); +EXPORT_SYMBOL(dsl_destroy_snapshot_sync_impl); +EXPORT_SYMBOL(dsl_destroy_inconsistent); +EXPORT_SYMBOL(dsl_dataset_user_release_tmp); +EXPORT_SYMBOL(dsl_destroy_head_check_impl); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_dir.c +++ linux-4.4.0/zfs/module/zfs/dsl_dir.c @@ -0,0 +1,2009 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 Martin Matuska. All rights reserved. + * Copyright (c) 2014 Joyent, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "zfs_namecheck.h" +#include "zfs_prop.h" + +/* + * Filesystem and Snapshot Limits + * ------------------------------ + * + * These limits are used to restrict the number of filesystems and/or snapshots + * that can be created at a given level in the tree or below. A typical + * use-case is with a delegated dataset where the administrator wants to ensure + * that a user within the zone is not creating too many additional filesystems + * or snapshots, even though they're not exceeding their space quota. + * + * The filesystem and snapshot counts are stored as extensible properties. This + * capability is controlled by a feature flag and must be enabled to be used. + * Once enabled, the feature is not active until the first limit is set. At + * that point, future operations to create/destroy filesystems or snapshots + * will validate and update the counts. + * + * Because the count properties will not exist before the feature is active, + * the counts are updated when a limit is first set on an uninitialized + * dsl_dir node in the tree (The filesystem/snapshot count on a node includes + * all of the nested filesystems/snapshots. Thus, a new leaf node has a + * filesystem count of 0 and a snapshot count of 0. Non-existent filesystem and + * snapshot count properties on a node indicate uninitialized counts on that + * node.) When first setting a limit on an uninitialized node, the code starts + * at the filesystem with the new limit and descends into all sub-filesystems + * to add the count properties. + * + * In practice this is lightweight since a limit is typically set when the + * filesystem is created and thus has no children. Once valid, changing the + * limit value won't require a re-traversal since the counts are already valid. + * When recursively fixing the counts, if a node with a limit is encountered + * during the descent, the counts are known to be valid and there is no need to + * descend into that filesystem's children. The counts on filesystems above the + * one with the new limit will still be uninitialized, unless a limit is + * eventually set on one of those filesystems. The counts are always recursively + * updated when a limit is set on a dataset, unless there is already a limit. + * When a new limit value is set on a filesystem with an existing limit, it is + * possible for the new limit to be less than the current count at that level + * since a user who can change the limit is also allowed to exceed the limit. + * + * Once the feature is active, then whenever a filesystem or snapshot is + * created, the code recurses up the tree, validating the new count against the + * limit at each initialized level. In practice, most levels will not have a + * limit set. If there is a limit at any initialized level up the tree, the + * check must pass or the creation will fail. Likewise, when a filesystem or + * snapshot is destroyed, the counts are recursively adjusted all the way up + * the initizized nodes in the tree. Renaming a filesystem into different point + * in the tree will first validate, then update the counts on each branch up to + * the common ancestor. A receive will also validate the counts and then update + * them. + * + * An exception to the above behavior is that the limit is not enforced if the + * user has permission to modify the limit. This is primarily so that + * recursive snapshots in the global zone always work. We want to prevent a + * denial-of-service in which a lower level delegated dataset could max out its + * limit and thus block recursive snapshots from being taken in the global zone. + * Because of this, it is possible for the snapshot count to be over the limit + * and snapshots taken in the global zone could cause a lower level dataset to + * hit or exceed its limit. The administrator taking the global zone recursive + * snapshot should be aware of this side-effect and behave accordingly. + * For consistency, the filesystem limit is also not enforced if the user can + * modify the limit. + * + * The filesystem and snapshot limits are validated by dsl_fs_ss_limit_check() + * and updated by dsl_fs_ss_count_adjust(). A new limit value is setup in + * dsl_dir_activate_fs_ss_limit() and the counts are adjusted, if necessary, by + * dsl_dir_init_fs_ss_count(). + * + * There is a special case when we receive a filesystem that already exists. In + * this case a temporary clone name of %X is created (see dmu_recv_begin). We + * never update the filesystem counts for temporary clones. + * + * Likewise, we do not update the snapshot counts for temporary snapshots, + * such as those created by zfs diff. + */ + +extern inline dsl_dir_phys_t *dsl_dir_phys(dsl_dir_t *dd); + +static uint64_t dsl_dir_space_towrite(dsl_dir_t *dd); + +static void +dsl_dir_evict(void *dbu) +{ + dsl_dir_t *dd = dbu; + int t; + ASSERTV(dsl_pool_t *dp = dd->dd_pool); + + dd->dd_dbuf = NULL; + + for (t = 0; t < TXG_SIZE; t++) { + ASSERT(!txg_list_member(&dp->dp_dirty_dirs, dd, t)); + ASSERT(dd->dd_tempreserved[t] == 0); + ASSERT(dd->dd_space_towrite[t] == 0); + } + + if (dd->dd_parent) + dsl_dir_async_rele(dd->dd_parent, dd); + + spa_async_close(dd->dd_pool->dp_spa, dd); + + /* + * The props callback list should have been cleaned up by + * objset_evict(). + */ + list_destroy(&dd->dd_prop_cbs); + mutex_destroy(&dd->dd_lock); + kmem_free(dd, sizeof (dsl_dir_t)); +} + +int +dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj, + const char *tail, void *tag, dsl_dir_t **ddp) +{ + dmu_buf_t *dbuf; + dsl_dir_t *dd; + int err; + + ASSERT(dsl_pool_config_held(dp)); + + err = dmu_bonus_hold(dp->dp_meta_objset, ddobj, tag, &dbuf); + if (err != 0) + return (err); + dd = dmu_buf_get_user(dbuf); +#ifdef ZFS_DEBUG + { + dmu_object_info_t doi; + dmu_object_info_from_db(dbuf, &doi); + ASSERT3U(doi.doi_bonus_type, ==, DMU_OT_DSL_DIR); + ASSERT3U(doi.doi_bonus_size, >=, sizeof (dsl_dir_phys_t)); + } +#endif + if (dd == NULL) { + dsl_dir_t *winner; + + dd = kmem_zalloc(sizeof (dsl_dir_t), KM_SLEEP); + dd->dd_object = ddobj; + dd->dd_dbuf = dbuf; + dd->dd_pool = dp; + mutex_init(&dd->dd_lock, NULL, MUTEX_DEFAULT, NULL); + + list_create(&dd->dd_prop_cbs, sizeof (dsl_prop_cb_record_t), + offsetof(dsl_prop_cb_record_t, cbr_node)); + + dsl_dir_snap_cmtime_update(dd); + + if (dsl_dir_phys(dd)->dd_parent_obj) { + err = dsl_dir_hold_obj(dp, + dsl_dir_phys(dd)->dd_parent_obj, NULL, dd, + &dd->dd_parent); + if (err != 0) + goto errout; + if (tail) { +#ifdef ZFS_DEBUG + uint64_t foundobj; + + err = zap_lookup(dp->dp_meta_objset, + dsl_dir_phys(dd->dd_parent)-> + dd_child_dir_zapobj, tail, + sizeof (foundobj), 1, &foundobj); + ASSERT(err || foundobj == ddobj); +#endif + (void) strcpy(dd->dd_myname, tail); + } else { + err = zap_value_search(dp->dp_meta_objset, + dsl_dir_phys(dd->dd_parent)-> + dd_child_dir_zapobj, + ddobj, 0, dd->dd_myname); + } + if (err != 0) + goto errout; + } else { + (void) strcpy(dd->dd_myname, spa_name(dp->dp_spa)); + } + + if (dsl_dir_is_clone(dd)) { + dmu_buf_t *origin_bonus; + dsl_dataset_phys_t *origin_phys; + + /* + * We can't open the origin dataset, because + * that would require opening this dsl_dir. + * Just look at its phys directly instead. + */ + err = dmu_bonus_hold(dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_origin_obj, FTAG, + &origin_bonus); + if (err != 0) + goto errout; + origin_phys = origin_bonus->db_data; + dd->dd_origin_txg = + origin_phys->ds_creation_txg; + dmu_buf_rele(origin_bonus, FTAG); + } + + dmu_buf_init_user(&dd->dd_dbu, dsl_dir_evict, &dd->dd_dbuf); + winner = dmu_buf_set_user_ie(dbuf, &dd->dd_dbu); + if (winner != NULL) { + if (dd->dd_parent) + dsl_dir_rele(dd->dd_parent, dd); + mutex_destroy(&dd->dd_lock); + kmem_free(dd, sizeof (dsl_dir_t)); + dd = winner; + } else { + spa_open_ref(dp->dp_spa, dd); + } + } + + /* + * The dsl_dir_t has both open-to-close and instantiate-to-evict + * holds on the spa. We need the open-to-close holds because + * otherwise the spa_refcnt wouldn't change when we open a + * dir which the spa also has open, so we could incorrectly + * think it was OK to unload/export/destroy the pool. We need + * the instantiate-to-evict hold because the dsl_dir_t has a + * pointer to the dd_pool, which has a pointer to the spa_t. + */ + spa_open_ref(dp->dp_spa, tag); + ASSERT3P(dd->dd_pool, ==, dp); + ASSERT3U(dd->dd_object, ==, ddobj); + ASSERT3P(dd->dd_dbuf, ==, dbuf); + *ddp = dd; + return (0); + +errout: + if (dd->dd_parent) + dsl_dir_rele(dd->dd_parent, dd); + mutex_destroy(&dd->dd_lock); + kmem_free(dd, sizeof (dsl_dir_t)); + dmu_buf_rele(dbuf, tag); + return (err); +} + +void +dsl_dir_rele(dsl_dir_t *dd, void *tag) +{ + dprintf_dd(dd, "%s\n", ""); + spa_close(dd->dd_pool->dp_spa, tag); + dmu_buf_rele(dd->dd_dbuf, tag); +} + +/* + * Remove a reference to the given dsl dir that is being asynchronously + * released. Async releases occur from a taskq performing eviction of + * dsl datasets and dirs. This process is identical to a normal release + * with the exception of using the async API for releasing the reference on + * the spa. + */ +void +dsl_dir_async_rele(dsl_dir_t *dd, void *tag) +{ + dprintf_dd(dd, "%s\n", ""); + spa_async_close(dd->dd_pool->dp_spa, tag); + dmu_buf_rele(dd->dd_dbuf, tag); +} + +/* buf must be long enough (MAXNAMELEN + strlen(MOS_DIR_NAME) + 1 should do) */ +void +dsl_dir_name(dsl_dir_t *dd, char *buf) +{ + if (dd->dd_parent) { + dsl_dir_name(dd->dd_parent, buf); + (void) strcat(buf, "/"); + } else { + buf[0] = '\0'; + } + if (!MUTEX_HELD(&dd->dd_lock)) { + /* + * recursive mutex so that we can use + * dprintf_dd() with dd_lock held + */ + mutex_enter(&dd->dd_lock); + (void) strcat(buf, dd->dd_myname); + mutex_exit(&dd->dd_lock); + } else { + (void) strcat(buf, dd->dd_myname); + } +} + +/* Calculate name length, avoiding all the strcat calls of dsl_dir_name */ +int +dsl_dir_namelen(dsl_dir_t *dd) +{ + int result = 0; + + if (dd->dd_parent) { + /* parent's name + 1 for the "/" */ + result = dsl_dir_namelen(dd->dd_parent) + 1; + } + + if (!MUTEX_HELD(&dd->dd_lock)) { + /* see dsl_dir_name */ + mutex_enter(&dd->dd_lock); + result += strlen(dd->dd_myname); + mutex_exit(&dd->dd_lock); + } else { + result += strlen(dd->dd_myname); + } + + return (result); +} + +static int +getcomponent(const char *path, char *component, const char **nextp) +{ + char *p; + + if ((path == NULL) || (path[0] == '\0')) + return (SET_ERROR(ENOENT)); + /* This would be a good place to reserve some namespace... */ + p = strpbrk(path, "/@"); + if (p && (p[1] == '/' || p[1] == '@')) { + /* two separators in a row */ + return (SET_ERROR(EINVAL)); + } + if (p == NULL || p == path) { + /* + * if the first thing is an @ or /, it had better be an + * @ and it had better not have any more ats or slashes, + * and it had better have something after the @. + */ + if (p != NULL && + (p[0] != '@' || strpbrk(path+1, "/@") || p[1] == '\0')) + return (SET_ERROR(EINVAL)); + if (strlen(path) >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + (void) strcpy(component, path); + p = NULL; + } else if (p[0] == '/') { + if (p - path >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + (void) strncpy(component, path, p - path); + component[p - path] = '\0'; + p++; + } else if (p[0] == '@') { + /* + * if the next separator is an @, there better not be + * any more slashes. + */ + if (strchr(path, '/')) + return (SET_ERROR(EINVAL)); + if (p - path >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + (void) strncpy(component, path, p - path); + component[p - path] = '\0'; + } else { + panic("invalid p=%p", (void *)p); + } + *nextp = p; + return (0); +} + +/* + * Return the dsl_dir_t, and possibly the last component which couldn't + * be found in *tail. The name must be in the specified dsl_pool_t. This + * thread must hold the dp_config_rwlock for the pool. Returns NULL if the + * path is bogus, or if tail==NULL and we couldn't parse the whole name. + * (*tail)[0] == '@' means that the last component is a snapshot. + */ +int +dsl_dir_hold(dsl_pool_t *dp, const char *name, void *tag, + dsl_dir_t **ddp, const char **tailp) +{ + char *buf; + const char *spaname, *next, *nextnext = NULL; + int err; + dsl_dir_t *dd; + uint64_t ddobj; + + buf = kmem_alloc(MAXNAMELEN, KM_SLEEP); + err = getcomponent(name, buf, &next); + if (err != 0) + goto error; + + /* Make sure the name is in the specified pool. */ + spaname = spa_name(dp->dp_spa); + if (strcmp(buf, spaname) != 0) { + err = SET_ERROR(EXDEV); + goto error; + } + + ASSERT(dsl_pool_config_held(dp)); + + err = dsl_dir_hold_obj(dp, dp->dp_root_dir_obj, NULL, tag, &dd); + if (err != 0) { + goto error; + } + + while (next != NULL) { + dsl_dir_t *child_dd; + err = getcomponent(next, buf, &nextnext); + if (err != 0) + break; + ASSERT(next[0] != '\0'); + if (next[0] == '@') + break; + dprintf("looking up %s in obj%lld\n", + buf, dsl_dir_phys(dd)->dd_child_dir_zapobj); + + err = zap_lookup(dp->dp_meta_objset, + dsl_dir_phys(dd)->dd_child_dir_zapobj, + buf, sizeof (ddobj), 1, &ddobj); + if (err != 0) { + if (err == ENOENT) + err = 0; + break; + } + + err = dsl_dir_hold_obj(dp, ddobj, buf, tag, &child_dd); + if (err != 0) + break; + dsl_dir_rele(dd, tag); + dd = child_dd; + next = nextnext; + } + + if (err != 0) { + dsl_dir_rele(dd, tag); + goto error; + } + + /* + * It's an error if there's more than one component left, or + * tailp==NULL and there's any component left. + */ + if (next != NULL && + (tailp == NULL || (nextnext && nextnext[0] != '\0'))) { + /* bad path name */ + dsl_dir_rele(dd, tag); + dprintf("next=%p (%s) tail=%p\n", next, next?next:"", tailp); + err = SET_ERROR(ENOENT); + } + if (tailp != NULL) + *tailp = next; + *ddp = dd; +error: + kmem_free(buf, MAXNAMELEN); + return (err); +} + +/* + * If the counts are already initialized for this filesystem and its + * descendants then do nothing, otherwise initialize the counts. + * + * The counts on this filesystem, and those below, may be uninitialized due to + * either the use of a pre-existing pool which did not support the + * filesystem/snapshot limit feature, or one in which the feature had not yet + * been enabled. + * + * Recursively descend the filesystem tree and update the filesystem/snapshot + * counts on each filesystem below, then update the cumulative count on the + * current filesystem. If the filesystem already has a count set on it, + * then we know that its counts, and the counts on the filesystems below it, + * are already correct, so we don't have to update this filesystem. + */ +static void +dsl_dir_init_fs_ss_count(dsl_dir_t *dd, dmu_tx_t *tx) +{ + uint64_t my_fs_cnt = 0; + uint64_t my_ss_cnt = 0; + dsl_pool_t *dp = dd->dd_pool; + objset_t *os = dp->dp_meta_objset; + zap_cursor_t *zc; + zap_attribute_t *za; + dsl_dataset_t *ds; + + ASSERT(spa_feature_is_active(dp->dp_spa, SPA_FEATURE_FS_SS_LIMIT)); + ASSERT(dsl_pool_config_held(dp)); + ASSERT(dmu_tx_is_syncing(tx)); + + dsl_dir_zapify(dd, tx); + + /* + * If the filesystem count has already been initialized then we + * don't need to recurse down any further. + */ + if (zap_contains(os, dd->dd_object, DD_FIELD_FILESYSTEM_COUNT) == 0) + return; + + zc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + + /* Iterate my child dirs */ + for (zap_cursor_init(zc, os, dsl_dir_phys(dd)->dd_child_dir_zapobj); + zap_cursor_retrieve(zc, za) == 0; zap_cursor_advance(zc)) { + dsl_dir_t *chld_dd; + uint64_t count; + + VERIFY0(dsl_dir_hold_obj(dp, za->za_first_integer, NULL, FTAG, + &chld_dd)); + + /* + * Ignore hidden ($FREE, $MOS & $ORIGIN) objsets and + * temporary datasets. + */ + if (chld_dd->dd_myname[0] == '$' || + chld_dd->dd_myname[0] == '%') { + dsl_dir_rele(chld_dd, FTAG); + continue; + } + + my_fs_cnt++; /* count this child */ + + dsl_dir_init_fs_ss_count(chld_dd, tx); + + VERIFY0(zap_lookup(os, chld_dd->dd_object, + DD_FIELD_FILESYSTEM_COUNT, sizeof (count), 1, &count)); + my_fs_cnt += count; + VERIFY0(zap_lookup(os, chld_dd->dd_object, + DD_FIELD_SNAPSHOT_COUNT, sizeof (count), 1, &count)); + my_ss_cnt += count; + + dsl_dir_rele(chld_dd, FTAG); + } + zap_cursor_fini(zc); + /* Count my snapshots (we counted children's snapshots above) */ + VERIFY0(dsl_dataset_hold_obj(dd->dd_pool, + dsl_dir_phys(dd)->dd_head_dataset_obj, FTAG, &ds)); + + for (zap_cursor_init(zc, os, dsl_dataset_phys(ds)->ds_snapnames_zapobj); + zap_cursor_retrieve(zc, za) == 0; + zap_cursor_advance(zc)) { + /* Don't count temporary snapshots */ + if (za->za_name[0] != '%') + my_ss_cnt++; + } + zap_cursor_fini(zc); + + dsl_dataset_rele(ds, FTAG); + + kmem_free(zc, sizeof (zap_cursor_t)); + kmem_free(za, sizeof (zap_attribute_t)); + + /* we're in a sync task, update counts */ + dmu_buf_will_dirty(dd->dd_dbuf, tx); + VERIFY0(zap_add(os, dd->dd_object, DD_FIELD_FILESYSTEM_COUNT, + sizeof (my_fs_cnt), 1, &my_fs_cnt, tx)); + VERIFY0(zap_add(os, dd->dd_object, DD_FIELD_SNAPSHOT_COUNT, + sizeof (my_ss_cnt), 1, &my_ss_cnt, tx)); +} + +static int +dsl_dir_actv_fs_ss_limit_check(void *arg, dmu_tx_t *tx) +{ + char *ddname = (char *)arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + dsl_dir_t *dd; + int error; + + error = dsl_dataset_hold(dp, ddname, FTAG, &ds); + if (error != 0) + return (error); + + if (!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_FS_SS_LIMIT)) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOTSUP)); + } + + dd = ds->ds_dir; + if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_FS_SS_LIMIT) && + dsl_dir_is_zapified(dd) && + zap_contains(dp->dp_meta_objset, dd->dd_object, + DD_FIELD_FILESYSTEM_COUNT) == 0) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(EALREADY)); + } + + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_dir_actv_fs_ss_limit_sync(void *arg, dmu_tx_t *tx) +{ + char *ddname = (char *)arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + spa_t *spa; + + VERIFY0(dsl_dataset_hold(dp, ddname, FTAG, &ds)); + + spa = dsl_dataset_get_spa(ds); + + if (!spa_feature_is_active(spa, SPA_FEATURE_FS_SS_LIMIT)) { + /* + * Since the feature was not active and we're now setting a + * limit, increment the feature-active counter so that the + * feature becomes active for the first time. + * + * We are already in a sync task so we can update the MOS. + */ + spa_feature_incr(spa, SPA_FEATURE_FS_SS_LIMIT, tx); + } + + /* + * Since we are now setting a non-UINT64_MAX limit on the filesystem, + * we need to ensure the counts are correct. Descend down the tree from + * this point and update all of the counts to be accurate. + */ + dsl_dir_init_fs_ss_count(ds->ds_dir, tx); + + dsl_dataset_rele(ds, FTAG); +} + +/* + * Make sure the feature is enabled and activate it if necessary. + * Since we're setting a limit, ensure the on-disk counts are valid. + * This is only called by the ioctl path when setting a limit value. + * + * We do not need to validate the new limit, since users who can change the + * limit are also allowed to exceed the limit. + */ +int +dsl_dir_activate_fs_ss_limit(const char *ddname) +{ + int error; + + error = dsl_sync_task(ddname, dsl_dir_actv_fs_ss_limit_check, + dsl_dir_actv_fs_ss_limit_sync, (void *)ddname, 0, + ZFS_SPACE_CHECK_RESERVED); + + if (error == EALREADY) + error = 0; + + return (error); +} + +/* + * Used to determine if the filesystem_limit or snapshot_limit should be + * enforced. We allow the limit to be exceeded if the user has permission to + * write the property value. We pass in the creds that we got in the open + * context since we will always be the GZ root in syncing context. We also have + * to handle the case where we are allowed to change the limit on the current + * dataset, but there may be another limit in the tree above. + * + * We can never modify these two properties within a non-global zone. In + * addition, the other checks are modeled on zfs_secpolicy_write_perms. We + * can't use that function since we are already holding the dp_config_rwlock. + * In addition, we already have the dd and dealing with snapshots is simplified + * in this code. + */ + +typedef enum { + ENFORCE_ALWAYS, + ENFORCE_NEVER, + ENFORCE_ABOVE +} enforce_res_t; + +static enforce_res_t +dsl_enforce_ds_ss_limits(dsl_dir_t *dd, zfs_prop_t prop, cred_t *cr) +{ + enforce_res_t enforce = ENFORCE_ALWAYS; + uint64_t obj; + dsl_dataset_t *ds; + uint64_t zoned; + + ASSERT(prop == ZFS_PROP_FILESYSTEM_LIMIT || + prop == ZFS_PROP_SNAPSHOT_LIMIT); + +#ifdef _KERNEL + if (crgetzoneid(cr) != GLOBAL_ZONEID) + return (ENFORCE_ALWAYS); + + if (secpolicy_zfs(cr) == 0) + return (ENFORCE_NEVER); +#endif + + if ((obj = dsl_dir_phys(dd)->dd_head_dataset_obj) == 0) + return (ENFORCE_ALWAYS); + + ASSERT(dsl_pool_config_held(dd->dd_pool)); + + if (dsl_dataset_hold_obj(dd->dd_pool, obj, FTAG, &ds) != 0) + return (ENFORCE_ALWAYS); + + if (dsl_prop_get_ds(ds, "zoned", 8, 1, &zoned, NULL) || zoned) { + /* Only root can access zoned fs's from the GZ */ + enforce = ENFORCE_ALWAYS; + } else { + if (dsl_deleg_access_impl(ds, zfs_prop_to_name(prop), cr) == 0) + enforce = ENFORCE_ABOVE; + } + + dsl_dataset_rele(ds, FTAG); + return (enforce); +} + +/* + * Check if adding additional child filesystem(s) would exceed any filesystem + * limits or adding additional snapshot(s) would exceed any snapshot limits. + * The prop argument indicates which limit to check. + * + * Note that all filesystem limits up to the root (or the highest + * initialized) filesystem or the given ancestor must be satisfied. + */ +int +dsl_fs_ss_limit_check(dsl_dir_t *dd, uint64_t delta, zfs_prop_t prop, + dsl_dir_t *ancestor, cred_t *cr) +{ + objset_t *os = dd->dd_pool->dp_meta_objset; + uint64_t limit, count; + char *count_prop; + enforce_res_t enforce; + int err = 0; + + ASSERT(dsl_pool_config_held(dd->dd_pool)); + ASSERT(prop == ZFS_PROP_FILESYSTEM_LIMIT || + prop == ZFS_PROP_SNAPSHOT_LIMIT); + + /* + * If we're allowed to change the limit, don't enforce the limit + * e.g. this can happen if a snapshot is taken by an administrative + * user in the global zone (i.e. a recursive snapshot by root). + * However, we must handle the case of delegated permissions where we + * are allowed to change the limit on the current dataset, but there + * is another limit in the tree above. + */ + enforce = dsl_enforce_ds_ss_limits(dd, prop, cr); + if (enforce == ENFORCE_NEVER) + return (0); + + /* + * e.g. if renaming a dataset with no snapshots, count adjustment + * is 0. + */ + if (delta == 0) + return (0); + + if (prop == ZFS_PROP_SNAPSHOT_LIMIT) { + /* + * We don't enforce the limit for temporary snapshots. This is + * indicated by a NULL cred_t argument. + */ + if (cr == NULL) + return (0); + + count_prop = DD_FIELD_SNAPSHOT_COUNT; + } else { + count_prop = DD_FIELD_FILESYSTEM_COUNT; + } + + /* + * If an ancestor has been provided, stop checking the limit once we + * hit that dir. We need this during rename so that we don't overcount + * the check once we recurse up to the common ancestor. + */ + if (ancestor == dd) + return (0); + + /* + * If we hit an uninitialized node while recursing up the tree, we can + * stop since we know there is no limit here (or above). The counts are + * not valid on this node and we know we won't touch this node's counts. + */ + if (!dsl_dir_is_zapified(dd) || zap_lookup(os, dd->dd_object, + count_prop, sizeof (count), 1, &count) == ENOENT) + return (0); + + err = dsl_prop_get_dd(dd, zfs_prop_to_name(prop), 8, 1, &limit, NULL, + B_FALSE); + if (err != 0) + return (err); + + /* Is there a limit which we've hit? */ + if (enforce == ENFORCE_ALWAYS && (count + delta) > limit) + return (SET_ERROR(EDQUOT)); + + if (dd->dd_parent != NULL) + err = dsl_fs_ss_limit_check(dd->dd_parent, delta, prop, + ancestor, cr); + + return (err); +} + +/* + * Adjust the filesystem or snapshot count for the specified dsl_dir_t and all + * parents. When a new filesystem/snapshot is created, increment the count on + * all parents, and when a filesystem/snapshot is destroyed, decrement the + * count. + */ +void +dsl_fs_ss_count_adjust(dsl_dir_t *dd, int64_t delta, const char *prop, + dmu_tx_t *tx) +{ + int err; + objset_t *os = dd->dd_pool->dp_meta_objset; + uint64_t count; + + ASSERT(dsl_pool_config_held(dd->dd_pool)); + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(strcmp(prop, DD_FIELD_FILESYSTEM_COUNT) == 0 || + strcmp(prop, DD_FIELD_SNAPSHOT_COUNT) == 0); + + /* + * When we receive an incremental stream into a filesystem that already + * exists, a temporary clone is created. We don't count this temporary + * clone, whose name begins with a '%'. We also ignore hidden ($FREE, + * $MOS & $ORIGIN) objsets. + */ + if ((dd->dd_myname[0] == '%' || dd->dd_myname[0] == '$') && + strcmp(prop, DD_FIELD_FILESYSTEM_COUNT) == 0) + return; + + /* + * e.g. if renaming a dataset with no snapshots, count adjustment is 0 + */ + if (delta == 0) + return; + + /* + * If we hit an uninitialized node while recursing up the tree, we can + * stop since we know the counts are not valid on this node and we + * know we shouldn't touch this node's counts. An uninitialized count + * on the node indicates that either the feature has not yet been + * activated or there are no limits on this part of the tree. + */ + if (!dsl_dir_is_zapified(dd) || (err = zap_lookup(os, dd->dd_object, + prop, sizeof (count), 1, &count)) == ENOENT) + return; + VERIFY0(err); + + count += delta; + /* Use a signed verify to make sure we're not neg. */ + VERIFY3S(count, >=, 0); + + VERIFY0(zap_update(os, dd->dd_object, prop, sizeof (count), 1, &count, + tx)); + + /* Roll up this additional count into our ancestors */ + if (dd->dd_parent != NULL) + dsl_fs_ss_count_adjust(dd->dd_parent, delta, prop, tx); +} + +uint64_t +dsl_dir_create_sync(dsl_pool_t *dp, dsl_dir_t *pds, const char *name, + dmu_tx_t *tx) +{ + objset_t *mos = dp->dp_meta_objset; + uint64_t ddobj; + dsl_dir_phys_t *ddphys; + dmu_buf_t *dbuf; + + ddobj = dmu_object_alloc(mos, DMU_OT_DSL_DIR, 0, + DMU_OT_DSL_DIR, sizeof (dsl_dir_phys_t), tx); + if (pds) { + VERIFY(0 == zap_add(mos, dsl_dir_phys(pds)->dd_child_dir_zapobj, + name, sizeof (uint64_t), 1, &ddobj, tx)); + } else { + /* it's the root dir */ + VERIFY(0 == zap_add(mos, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_ROOT_DATASET, sizeof (uint64_t), 1, &ddobj, tx)); + } + VERIFY(0 == dmu_bonus_hold(mos, ddobj, FTAG, &dbuf)); + dmu_buf_will_dirty(dbuf, tx); + ddphys = dbuf->db_data; + + ddphys->dd_creation_time = gethrestime_sec(); + if (pds) { + ddphys->dd_parent_obj = pds->dd_object; + + /* update the filesystem counts */ + dsl_fs_ss_count_adjust(pds, 1, DD_FIELD_FILESYSTEM_COUNT, tx); + } + ddphys->dd_props_zapobj = zap_create(mos, + DMU_OT_DSL_PROPS, DMU_OT_NONE, 0, tx); + ddphys->dd_child_dir_zapobj = zap_create(mos, + DMU_OT_DSL_DIR_CHILD_MAP, DMU_OT_NONE, 0, tx); + if (spa_version(dp->dp_spa) >= SPA_VERSION_USED_BREAKDOWN) + ddphys->dd_flags |= DD_FLAG_USED_BREAKDOWN; + dmu_buf_rele(dbuf, FTAG); + + return (ddobj); +} + +boolean_t +dsl_dir_is_clone(dsl_dir_t *dd) +{ + return (dsl_dir_phys(dd)->dd_origin_obj && + (dd->dd_pool->dp_origin_snap == NULL || + dsl_dir_phys(dd)->dd_origin_obj != + dd->dd_pool->dp_origin_snap->ds_object)); +} + +void +dsl_dir_stats(dsl_dir_t *dd, nvlist_t *nv) +{ + mutex_enter(&dd->dd_lock); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USED, + dsl_dir_phys(dd)->dd_used_bytes); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_QUOTA, + dsl_dir_phys(dd)->dd_quota); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_RESERVATION, + dsl_dir_phys(dd)->dd_reserved); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_COMPRESSRATIO, + dsl_dir_phys(dd)->dd_compressed_bytes == 0 ? 100 : + (dsl_dir_phys(dd)->dd_uncompressed_bytes * 100 / + dsl_dir_phys(dd)->dd_compressed_bytes)); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_LOGICALUSED, + dsl_dir_phys(dd)->dd_uncompressed_bytes); + if (dsl_dir_phys(dd)->dd_flags & DD_FLAG_USED_BREAKDOWN) { + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USEDSNAP, + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_SNAP]); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USEDDS, + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_HEAD]); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USEDREFRESERV, + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_REFRSRV]); + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_USEDCHILD, + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_CHILD] + + dsl_dir_phys(dd)->dd_used_breakdown[DD_USED_CHILD_RSRV]); + } + mutex_exit(&dd->dd_lock); + + if (dsl_dir_is_zapified(dd)) { + uint64_t count; + objset_t *os = dd->dd_pool->dp_meta_objset; + + if (zap_lookup(os, dd->dd_object, DD_FIELD_FILESYSTEM_COUNT, + sizeof (count), 1, &count) == 0) { + dsl_prop_nvlist_add_uint64(nv, + ZFS_PROP_FILESYSTEM_COUNT, count); + } + if (zap_lookup(os, dd->dd_object, DD_FIELD_SNAPSHOT_COUNT, + sizeof (count), 1, &count) == 0) { + dsl_prop_nvlist_add_uint64(nv, + ZFS_PROP_SNAPSHOT_COUNT, count); + } + } + + if (dsl_dir_is_clone(dd)) { + dsl_dataset_t *ds; + char buf[MAXNAMELEN]; + + VERIFY0(dsl_dataset_hold_obj(dd->dd_pool, + dsl_dir_phys(dd)->dd_origin_obj, FTAG, &ds)); + dsl_dataset_name(ds, buf); + dsl_dataset_rele(ds, FTAG); + dsl_prop_nvlist_add_string(nv, ZFS_PROP_ORIGIN, buf); + } +} + +void +dsl_dir_dirty(dsl_dir_t *dd, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dd->dd_pool; + + ASSERT(dsl_dir_phys(dd)); + + if (txg_list_add(&dp->dp_dirty_dirs, dd, tx->tx_txg)) { + /* up the hold count until we can be written out */ + dmu_buf_add_ref(dd->dd_dbuf, dd); + } +} + +static int64_t +parent_delta(dsl_dir_t *dd, uint64_t used, int64_t delta) +{ + uint64_t old_accounted = MAX(used, dsl_dir_phys(dd)->dd_reserved); + uint64_t new_accounted = + MAX(used + delta, dsl_dir_phys(dd)->dd_reserved); + return (new_accounted - old_accounted); +} + +void +dsl_dir_sync(dsl_dir_t *dd, dmu_tx_t *tx) +{ + ASSERT(dmu_tx_is_syncing(tx)); + + mutex_enter(&dd->dd_lock); + ASSERT0(dd->dd_tempreserved[tx->tx_txg&TXG_MASK]); + dprintf_dd(dd, "txg=%llu towrite=%lluK\n", tx->tx_txg, + dd->dd_space_towrite[tx->tx_txg&TXG_MASK] / 1024); + dd->dd_space_towrite[tx->tx_txg&TXG_MASK] = 0; + mutex_exit(&dd->dd_lock); + + /* release the hold from dsl_dir_dirty */ + dmu_buf_rele(dd->dd_dbuf, dd); +} + +static uint64_t +dsl_dir_space_towrite(dsl_dir_t *dd) +{ + uint64_t space = 0; + int i; + + ASSERT(MUTEX_HELD(&dd->dd_lock)); + + for (i = 0; i < TXG_SIZE; i++) { + space += dd->dd_space_towrite[i&TXG_MASK]; + ASSERT3U(dd->dd_space_towrite[i&TXG_MASK], >=, 0); + } + return (space); +} + +/* + * How much space would dd have available if ancestor had delta applied + * to it? If ondiskonly is set, we're only interested in what's + * on-disk, not estimated pending changes. + */ +uint64_t +dsl_dir_space_available(dsl_dir_t *dd, + dsl_dir_t *ancestor, int64_t delta, int ondiskonly) +{ + uint64_t parentspace, myspace, quota, used; + + /* + * If there are no restrictions otherwise, assume we have + * unlimited space available. + */ + quota = UINT64_MAX; + parentspace = UINT64_MAX; + + if (dd->dd_parent != NULL) { + parentspace = dsl_dir_space_available(dd->dd_parent, + ancestor, delta, ondiskonly); + } + + mutex_enter(&dd->dd_lock); + if (dsl_dir_phys(dd)->dd_quota != 0) + quota = dsl_dir_phys(dd)->dd_quota; + used = dsl_dir_phys(dd)->dd_used_bytes; + if (!ondiskonly) + used += dsl_dir_space_towrite(dd); + + if (dd->dd_parent == NULL) { + uint64_t poolsize = dsl_pool_adjustedsize(dd->dd_pool, FALSE); + quota = MIN(quota, poolsize); + } + + if (dsl_dir_phys(dd)->dd_reserved > used && parentspace != UINT64_MAX) { + /* + * We have some space reserved, in addition to what our + * parent gave us. + */ + parentspace += dsl_dir_phys(dd)->dd_reserved - used; + } + + if (dd == ancestor) { + ASSERT(delta <= 0); + ASSERT(used >= -delta); + used += delta; + if (parentspace != UINT64_MAX) + parentspace -= delta; + } + + if (used > quota) { + /* over quota */ + myspace = 0; + } else { + /* + * the lesser of the space provided by our parent and + * the space left in our quota + */ + myspace = MIN(parentspace, quota - used); + } + + mutex_exit(&dd->dd_lock); + + return (myspace); +} + +struct tempreserve { + list_node_t tr_node; + dsl_dir_t *tr_ds; + uint64_t tr_size; +}; + +static int +dsl_dir_tempreserve_impl(dsl_dir_t *dd, uint64_t asize, boolean_t netfree, + boolean_t ignorequota, boolean_t checkrefquota, list_t *tr_list, + dmu_tx_t *tx, boolean_t first) +{ + uint64_t txg = tx->tx_txg; + uint64_t est_inflight, used_on_disk, quota, parent_rsrv; + uint64_t deferred = 0; + struct tempreserve *tr; + int retval = EDQUOT; + int txgidx = txg & TXG_MASK; + int i; + uint64_t ref_rsrv = 0; + + ASSERT3U(txg, !=, 0); + ASSERT3S(asize, >, 0); + + mutex_enter(&dd->dd_lock); + + /* + * Check against the dsl_dir's quota. We don't add in the delta + * when checking for over-quota because they get one free hit. + */ + est_inflight = dsl_dir_space_towrite(dd); + for (i = 0; i < TXG_SIZE; i++) + est_inflight += dd->dd_tempreserved[i]; + used_on_disk = dsl_dir_phys(dd)->dd_used_bytes; + + /* + * On the first iteration, fetch the dataset's used-on-disk and + * refreservation values. Also, if checkrefquota is set, test if + * allocating this space would exceed the dataset's refquota. + */ + if (first && tx->tx_objset) { + int error; + dsl_dataset_t *ds = tx->tx_objset->os_dsl_dataset; + + error = dsl_dataset_check_quota(ds, checkrefquota, + asize, est_inflight, &used_on_disk, &ref_rsrv); + if (error) { + mutex_exit(&dd->dd_lock); + DMU_TX_STAT_BUMP(dmu_tx_quota); + return (error); + } + } + + /* + * If this transaction will result in a net free of space, + * we want to let it through. + */ + if (ignorequota || netfree || dsl_dir_phys(dd)->dd_quota == 0) + quota = UINT64_MAX; + else + quota = dsl_dir_phys(dd)->dd_quota; + + /* + * Adjust the quota against the actual pool size at the root + * minus any outstanding deferred frees. + * To ensure that it's possible to remove files from a full + * pool without inducing transient overcommits, we throttle + * netfree transactions against a quota that is slightly larger, + * but still within the pool's allocation slop. In cases where + * we're very close to full, this will allow a steady trickle of + * removes to get through. + */ + if (dd->dd_parent == NULL) { + spa_t *spa = dd->dd_pool->dp_spa; + uint64_t poolsize = dsl_pool_adjustedsize(dd->dd_pool, netfree); + deferred = metaslab_class_get_deferred(spa_normal_class(spa)); + if (poolsize - deferred < quota) { + quota = poolsize - deferred; + retval = ENOSPC; + } + } + + /* + * If they are requesting more space, and our current estimate + * is over quota, they get to try again unless the actual + * on-disk is over quota and there are no pending changes (which + * may free up space for us). + */ + if (used_on_disk + est_inflight >= quota) { + if (est_inflight > 0 || used_on_disk < quota || + (retval == ENOSPC && used_on_disk < quota + deferred)) + retval = ERESTART; + dprintf_dd(dd, "failing: used=%lluK inflight = %lluK " + "quota=%lluK tr=%lluK err=%d\n", + used_on_disk>>10, est_inflight>>10, + quota>>10, asize>>10, retval); + mutex_exit(&dd->dd_lock); + DMU_TX_STAT_BUMP(dmu_tx_quota); + return (SET_ERROR(retval)); + } + + /* We need to up our estimated delta before dropping dd_lock */ + dd->dd_tempreserved[txgidx] += asize; + + parent_rsrv = parent_delta(dd, used_on_disk + est_inflight, + asize - ref_rsrv); + mutex_exit(&dd->dd_lock); + + tr = kmem_zalloc(sizeof (struct tempreserve), KM_SLEEP); + tr->tr_ds = dd; + tr->tr_size = asize; + list_insert_tail(tr_list, tr); + + /* see if it's OK with our parent */ + if (dd->dd_parent && parent_rsrv) { + boolean_t ismos = (dsl_dir_phys(dd)->dd_head_dataset_obj == 0); + + return (dsl_dir_tempreserve_impl(dd->dd_parent, + parent_rsrv, netfree, ismos, TRUE, tr_list, tx, FALSE)); + } else { + return (0); + } +} + +/* + * Reserve space in this dsl_dir, to be used in this tx's txg. + * After the space has been dirtied (and dsl_dir_willuse_space() + * has been called), the reservation should be canceled, using + * dsl_dir_tempreserve_clear(). + */ +int +dsl_dir_tempreserve_space(dsl_dir_t *dd, uint64_t lsize, uint64_t asize, + uint64_t fsize, uint64_t usize, void **tr_cookiep, dmu_tx_t *tx) +{ + int err; + list_t *tr_list; + + if (asize == 0) { + *tr_cookiep = NULL; + return (0); + } + + tr_list = kmem_alloc(sizeof (list_t), KM_SLEEP); + list_create(tr_list, sizeof (struct tempreserve), + offsetof(struct tempreserve, tr_node)); + ASSERT3S(asize, >, 0); + ASSERT3S(fsize, >=, 0); + + err = arc_tempreserve_space(lsize, tx->tx_txg); + if (err == 0) { + struct tempreserve *tr; + + tr = kmem_zalloc(sizeof (struct tempreserve), KM_SLEEP); + tr->tr_size = lsize; + list_insert_tail(tr_list, tr); + } else { + if (err == EAGAIN) { + /* + * If arc_memory_throttle() detected that pageout + * is running and we are low on memory, we delay new + * non-pageout transactions to give pageout an + * advantage. + * + * It is unfortunate to be delaying while the caller's + * locks are held. + */ + txg_delay(dd->dd_pool, tx->tx_txg, + MSEC2NSEC(10), MSEC2NSEC(10)); + err = SET_ERROR(ERESTART); + } + } + + if (err == 0) { + err = dsl_dir_tempreserve_impl(dd, asize, fsize >= asize, + FALSE, asize > usize, tr_list, tx, TRUE); + } + + if (err != 0) + dsl_dir_tempreserve_clear(tr_list, tx); + else + *tr_cookiep = tr_list; + + return (err); +} + +/* + * Clear a temporary reservation that we previously made with + * dsl_dir_tempreserve_space(). + */ +void +dsl_dir_tempreserve_clear(void *tr_cookie, dmu_tx_t *tx) +{ + int txgidx = tx->tx_txg & TXG_MASK; + list_t *tr_list = tr_cookie; + struct tempreserve *tr; + + ASSERT3U(tx->tx_txg, !=, 0); + + if (tr_cookie == NULL) + return; + + while ((tr = list_head(tr_list)) != NULL) { + if (tr->tr_ds) { + mutex_enter(&tr->tr_ds->dd_lock); + ASSERT3U(tr->tr_ds->dd_tempreserved[txgidx], >=, + tr->tr_size); + tr->tr_ds->dd_tempreserved[txgidx] -= tr->tr_size; + mutex_exit(&tr->tr_ds->dd_lock); + } else { + arc_tempreserve_clear(tr->tr_size); + } + list_remove(tr_list, tr); + kmem_free(tr, sizeof (struct tempreserve)); + } + + kmem_free(tr_list, sizeof (list_t)); +} + +/* + * This should be called from open context when we think we're going to write + * or free space, for example when dirtying data. Be conservative; it's okay + * to write less space or free more, but we don't want to write more or free + * less than the amount specified. + * + * NOTE: The behavior of this function is identical to the Illumos / FreeBSD + * version however it has been adjusted to use an iterative rather then + * recursive algorithm to minimize stack usage. + */ +void +dsl_dir_willuse_space(dsl_dir_t *dd, int64_t space, dmu_tx_t *tx) +{ + int64_t parent_space; + uint64_t est_used; + + do { + mutex_enter(&dd->dd_lock); + if (space > 0) + dd->dd_space_towrite[tx->tx_txg & TXG_MASK] += space; + + est_used = dsl_dir_space_towrite(dd) + + dsl_dir_phys(dd)->dd_used_bytes; + parent_space = parent_delta(dd, est_used, space); + mutex_exit(&dd->dd_lock); + + /* Make sure that we clean up dd_space_to* */ + dsl_dir_dirty(dd, tx); + + dd = dd->dd_parent; + space = parent_space; + } while (space && dd); +} + +/* call from syncing context when we actually write/free space for this dd */ +void +dsl_dir_diduse_space(dsl_dir_t *dd, dd_used_t type, + int64_t used, int64_t compressed, int64_t uncompressed, dmu_tx_t *tx) +{ + int64_t accounted_delta; + + /* + * dsl_dataset_set_refreservation_sync_impl() calls this with + * dd_lock held, so that it can atomically update + * ds->ds_reserved and the dsl_dir accounting, so that + * dsl_dataset_check_quota() can see dataset and dir accounting + * consistently. + */ + boolean_t needlock = !MUTEX_HELD(&dd->dd_lock); + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(type < DD_USED_NUM); + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + + if (needlock) + mutex_enter(&dd->dd_lock); + accounted_delta = + parent_delta(dd, dsl_dir_phys(dd)->dd_used_bytes, used); + ASSERT(used >= 0 || dsl_dir_phys(dd)->dd_used_bytes >= -used); + ASSERT(compressed >= 0 || + dsl_dir_phys(dd)->dd_compressed_bytes >= -compressed); + ASSERT(uncompressed >= 0 || + dsl_dir_phys(dd)->dd_uncompressed_bytes >= -uncompressed); + dsl_dir_phys(dd)->dd_used_bytes += used; + dsl_dir_phys(dd)->dd_uncompressed_bytes += uncompressed; + dsl_dir_phys(dd)->dd_compressed_bytes += compressed; + + if (dsl_dir_phys(dd)->dd_flags & DD_FLAG_USED_BREAKDOWN) { + ASSERT(used > 0 || + dsl_dir_phys(dd)->dd_used_breakdown[type] >= -used); + dsl_dir_phys(dd)->dd_used_breakdown[type] += used; +#ifdef DEBUG + { + dd_used_t t; + uint64_t u = 0; + for (t = 0; t < DD_USED_NUM; t++) + u += dsl_dir_phys(dd)->dd_used_breakdown[t]; + ASSERT3U(u, ==, dsl_dir_phys(dd)->dd_used_bytes); + } +#endif + } + if (needlock) + mutex_exit(&dd->dd_lock); + + if (dd->dd_parent != NULL) { + dsl_dir_diduse_space(dd->dd_parent, DD_USED_CHILD, + accounted_delta, compressed, uncompressed, tx); + dsl_dir_transfer_space(dd->dd_parent, + used - accounted_delta, + DD_USED_CHILD_RSRV, DD_USED_CHILD, tx); + } +} + +void +dsl_dir_transfer_space(dsl_dir_t *dd, int64_t delta, + dd_used_t oldtype, dd_used_t newtype, dmu_tx_t *tx) +{ + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(oldtype < DD_USED_NUM); + ASSERT(newtype < DD_USED_NUM); + + if (delta == 0 || + !(dsl_dir_phys(dd)->dd_flags & DD_FLAG_USED_BREAKDOWN)) + return; + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + mutex_enter(&dd->dd_lock); + ASSERT(delta > 0 ? + dsl_dir_phys(dd)->dd_used_breakdown[oldtype] >= delta : + dsl_dir_phys(dd)->dd_used_breakdown[newtype] >= -delta); + ASSERT(dsl_dir_phys(dd)->dd_used_bytes >= ABS(delta)); + dsl_dir_phys(dd)->dd_used_breakdown[oldtype] -= delta; + dsl_dir_phys(dd)->dd_used_breakdown[newtype] += delta; + mutex_exit(&dd->dd_lock); +} + +typedef struct dsl_dir_set_qr_arg { + const char *ddsqra_name; + zprop_source_t ddsqra_source; + uint64_t ddsqra_value; +} dsl_dir_set_qr_arg_t; + +static int +dsl_dir_set_quota_check(void *arg, dmu_tx_t *tx) +{ + dsl_dir_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + int error; + uint64_t towrite, newval; + + error = dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds); + if (error != 0) + return (error); + + error = dsl_prop_predict(ds->ds_dir, "quota", + ddsqra->ddsqra_source, ddsqra->ddsqra_value, &newval); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + if (newval == 0) { + dsl_dataset_rele(ds, FTAG); + return (0); + } + + mutex_enter(&ds->ds_dir->dd_lock); + /* + * If we are doing the preliminary check in open context, and + * there are pending changes, then don't fail it, since the + * pending changes could under-estimate the amount of space to be + * freed up. + */ + towrite = dsl_dir_space_towrite(ds->ds_dir); + if ((dmu_tx_is_syncing(tx) || towrite == 0) && + (newval < dsl_dir_phys(ds->ds_dir)->dd_reserved || + newval < dsl_dir_phys(ds->ds_dir)->dd_used_bytes + towrite)) { + error = SET_ERROR(ENOSPC); + } + mutex_exit(&ds->ds_dir->dd_lock); + dsl_dataset_rele(ds, FTAG); + return (error); +} + +static void +dsl_dir_set_quota_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dir_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + uint64_t newval; + + VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds)); + + if (spa_version(dp->dp_spa) >= SPA_VERSION_RECVD_PROPS) { + dsl_prop_set_sync_impl(ds, zfs_prop_to_name(ZFS_PROP_QUOTA), + ddsqra->ddsqra_source, sizeof (ddsqra->ddsqra_value), 1, + &ddsqra->ddsqra_value, tx); + + VERIFY0(dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_QUOTA), &newval)); + } else { + newval = ddsqra->ddsqra_value; + spa_history_log_internal_ds(ds, "set", tx, "%s=%lld", + zfs_prop_to_name(ZFS_PROP_QUOTA), (longlong_t)newval); + } + + dmu_buf_will_dirty(ds->ds_dir->dd_dbuf, tx); + mutex_enter(&ds->ds_dir->dd_lock); + dsl_dir_phys(ds->ds_dir)->dd_quota = newval; + mutex_exit(&ds->ds_dir->dd_lock); + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dir_set_quota(const char *ddname, zprop_source_t source, uint64_t quota) +{ + dsl_dir_set_qr_arg_t ddsqra; + + ddsqra.ddsqra_name = ddname; + ddsqra.ddsqra_source = source; + ddsqra.ddsqra_value = quota; + + return (dsl_sync_task(ddname, dsl_dir_set_quota_check, + dsl_dir_set_quota_sync, &ddsqra, 0, ZFS_SPACE_CHECK_NONE)); +} + +int +dsl_dir_set_reservation_check(void *arg, dmu_tx_t *tx) +{ + dsl_dir_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + dsl_dir_t *dd; + uint64_t newval, used, avail; + int error; + + error = dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds); + if (error != 0) + return (error); + dd = ds->ds_dir; + + /* + * If we are doing the preliminary check in open context, the + * space estimates may be inaccurate. + */ + if (!dmu_tx_is_syncing(tx)) { + dsl_dataset_rele(ds, FTAG); + return (0); + } + + error = dsl_prop_predict(ds->ds_dir, + zfs_prop_to_name(ZFS_PROP_RESERVATION), + ddsqra->ddsqra_source, ddsqra->ddsqra_value, &newval); + if (error != 0) { + dsl_dataset_rele(ds, FTAG); + return (error); + } + + mutex_enter(&dd->dd_lock); + used = dsl_dir_phys(dd)->dd_used_bytes; + mutex_exit(&dd->dd_lock); + + if (dd->dd_parent) { + avail = dsl_dir_space_available(dd->dd_parent, + NULL, 0, FALSE); + } else { + avail = dsl_pool_adjustedsize(dd->dd_pool, B_FALSE) - used; + } + + if (MAX(used, newval) > MAX(used, dsl_dir_phys(dd)->dd_reserved)) { + uint64_t delta = MAX(used, newval) - + MAX(used, dsl_dir_phys(dd)->dd_reserved); + + if (delta > avail || + (dsl_dir_phys(dd)->dd_quota > 0 && + newval > dsl_dir_phys(dd)->dd_quota)) + error = SET_ERROR(ENOSPC); + } + + dsl_dataset_rele(ds, FTAG); + return (error); +} + +void +dsl_dir_set_reservation_sync_impl(dsl_dir_t *dd, uint64_t value, dmu_tx_t *tx) +{ + uint64_t used; + int64_t delta; + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + + mutex_enter(&dd->dd_lock); + used = dsl_dir_phys(dd)->dd_used_bytes; + delta = MAX(used, value) - MAX(used, dsl_dir_phys(dd)->dd_reserved); + dsl_dir_phys(dd)->dd_reserved = value; + + if (dd->dd_parent != NULL) { + /* Roll up this additional usage into our ancestors */ + dsl_dir_diduse_space(dd->dd_parent, DD_USED_CHILD_RSRV, + delta, 0, 0, tx); + } + mutex_exit(&dd->dd_lock); +} + +static void +dsl_dir_set_reservation_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dir_set_qr_arg_t *ddsqra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + uint64_t newval; + + VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds)); + + if (spa_version(dp->dp_spa) >= SPA_VERSION_RECVD_PROPS) { + dsl_prop_set_sync_impl(ds, + zfs_prop_to_name(ZFS_PROP_RESERVATION), + ddsqra->ddsqra_source, sizeof (ddsqra->ddsqra_value), 1, + &ddsqra->ddsqra_value, tx); + + VERIFY0(dsl_prop_get_int_ds(ds, + zfs_prop_to_name(ZFS_PROP_RESERVATION), &newval)); + } else { + newval = ddsqra->ddsqra_value; + spa_history_log_internal_ds(ds, "set", tx, "%s=%lld", + zfs_prop_to_name(ZFS_PROP_RESERVATION), + (longlong_t)newval); + } + + dsl_dir_set_reservation_sync_impl(ds->ds_dir, newval, tx); + dsl_dataset_rele(ds, FTAG); +} + +int +dsl_dir_set_reservation(const char *ddname, zprop_source_t source, + uint64_t reservation) +{ + dsl_dir_set_qr_arg_t ddsqra; + + ddsqra.ddsqra_name = ddname; + ddsqra.ddsqra_source = source; + ddsqra.ddsqra_value = reservation; + + return (dsl_sync_task(ddname, dsl_dir_set_reservation_check, + dsl_dir_set_reservation_sync, &ddsqra, 0, ZFS_SPACE_CHECK_NONE)); +} + +static dsl_dir_t * +closest_common_ancestor(dsl_dir_t *ds1, dsl_dir_t *ds2) +{ + for (; ds1; ds1 = ds1->dd_parent) { + dsl_dir_t *dd; + for (dd = ds2; dd; dd = dd->dd_parent) { + if (ds1 == dd) + return (dd); + } + } + return (NULL); +} + +/* + * If delta is applied to dd, how much of that delta would be applied to + * ancestor? Syncing context only. + */ +static int64_t +would_change(dsl_dir_t *dd, int64_t delta, dsl_dir_t *ancestor) +{ + if (dd == ancestor) + return (delta); + + mutex_enter(&dd->dd_lock); + delta = parent_delta(dd, dsl_dir_phys(dd)->dd_used_bytes, delta); + mutex_exit(&dd->dd_lock); + return (would_change(dd->dd_parent, delta, ancestor)); +} + +typedef struct dsl_dir_rename_arg { + const char *ddra_oldname; + const char *ddra_newname; + cred_t *ddra_cred; +} dsl_dir_rename_arg_t; + +/* ARGSUSED */ +static int +dsl_valid_rename(dsl_pool_t *dp, dsl_dataset_t *ds, void *arg) +{ + int *deltap = arg; + char namebuf[MAXNAMELEN]; + + dsl_dataset_name(ds, namebuf); + + if (strlen(namebuf) + *deltap >= MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + return (0); +} + +static int +dsl_dir_rename_check(void *arg, dmu_tx_t *tx) +{ + dsl_dir_rename_arg_t *ddra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dir_t *dd, *newparent; + const char *mynewname; + int error; + int delta = strlen(ddra->ddra_newname) - strlen(ddra->ddra_oldname); + + /* target dir should exist */ + error = dsl_dir_hold(dp, ddra->ddra_oldname, FTAG, &dd, NULL); + if (error != 0) + return (error); + + /* new parent should exist */ + error = dsl_dir_hold(dp, ddra->ddra_newname, FTAG, + &newparent, &mynewname); + if (error != 0) { + dsl_dir_rele(dd, FTAG); + return (error); + } + + /* can't rename to different pool */ + if (dd->dd_pool != newparent->dd_pool) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (SET_ERROR(EXDEV)); + } + + /* new name should not already exist */ + if (mynewname == NULL) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (SET_ERROR(EEXIST)); + } + + /* if the name length is growing, validate child name lengths */ + if (delta > 0) { + error = dmu_objset_find_dp(dp, dd->dd_object, dsl_valid_rename, + &delta, DS_FIND_CHILDREN | DS_FIND_SNAPSHOTS); + if (error != 0) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (error); + } + } + + if (dmu_tx_is_syncing(tx)) { + if (spa_feature_is_active(dp->dp_spa, + SPA_FEATURE_FS_SS_LIMIT)) { + /* + * Although this is the check function and we don't + * normally make on-disk changes in check functions, + * we need to do that here. + * + * Ensure this portion of the tree's counts have been + * initialized in case the new parent has limits set. + */ + dsl_dir_init_fs_ss_count(dd, tx); + } + } + + if (newparent != dd->dd_parent) { + /* is there enough space? */ + uint64_t myspace = + MAX(dsl_dir_phys(dd)->dd_used_bytes, + dsl_dir_phys(dd)->dd_reserved); + objset_t *os = dd->dd_pool->dp_meta_objset; + uint64_t fs_cnt = 0; + uint64_t ss_cnt = 0; + + if (dsl_dir_is_zapified(dd)) { + int err; + + err = zap_lookup(os, dd->dd_object, + DD_FIELD_FILESYSTEM_COUNT, sizeof (fs_cnt), 1, + &fs_cnt); + if (err != ENOENT && err != 0) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (err); + } + + /* + * have to add 1 for the filesystem itself that we're + * moving + */ + fs_cnt++; + + err = zap_lookup(os, dd->dd_object, + DD_FIELD_SNAPSHOT_COUNT, sizeof (ss_cnt), 1, + &ss_cnt); + if (err != ENOENT && err != 0) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (err); + } + } + + /* no rename into our descendant */ + if (closest_common_ancestor(dd, newparent) == dd) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (SET_ERROR(EINVAL)); + } + + error = dsl_dir_transfer_possible(dd->dd_parent, + newparent, fs_cnt, ss_cnt, myspace, ddra->ddra_cred); + if (error != 0) { + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (error); + } + } + + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); + return (0); +} + +static void +dsl_dir_rename_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dir_rename_arg_t *ddra = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dir_t *dd, *newparent; + const char *mynewname; + int error; + objset_t *mos = dp->dp_meta_objset; + + VERIFY0(dsl_dir_hold(dp, ddra->ddra_oldname, FTAG, &dd, NULL)); + VERIFY0(dsl_dir_hold(dp, ddra->ddra_newname, FTAG, &newparent, + &mynewname)); + + /* Log this before we change the name. */ + spa_history_log_internal_dd(dd, "rename", tx, + "-> %s", ddra->ddra_newname); + + if (newparent != dd->dd_parent) { + objset_t *os = dd->dd_pool->dp_meta_objset; + uint64_t fs_cnt = 0; + uint64_t ss_cnt = 0; + + /* + * We already made sure the dd counts were initialized in the + * check function. + */ + if (spa_feature_is_active(dp->dp_spa, + SPA_FEATURE_FS_SS_LIMIT)) { + VERIFY0(zap_lookup(os, dd->dd_object, + DD_FIELD_FILESYSTEM_COUNT, sizeof (fs_cnt), 1, + &fs_cnt)); + /* add 1 for the filesystem itself that we're moving */ + fs_cnt++; + + VERIFY0(zap_lookup(os, dd->dd_object, + DD_FIELD_SNAPSHOT_COUNT, sizeof (ss_cnt), 1, + &ss_cnt)); + } + + dsl_fs_ss_count_adjust(dd->dd_parent, -fs_cnt, + DD_FIELD_FILESYSTEM_COUNT, tx); + dsl_fs_ss_count_adjust(newparent, fs_cnt, + DD_FIELD_FILESYSTEM_COUNT, tx); + + dsl_fs_ss_count_adjust(dd->dd_parent, -ss_cnt, + DD_FIELD_SNAPSHOT_COUNT, tx); + dsl_fs_ss_count_adjust(newparent, ss_cnt, + DD_FIELD_SNAPSHOT_COUNT, tx); + + dsl_dir_diduse_space(dd->dd_parent, DD_USED_CHILD, + -dsl_dir_phys(dd)->dd_used_bytes, + -dsl_dir_phys(dd)->dd_compressed_bytes, + -dsl_dir_phys(dd)->dd_uncompressed_bytes, tx); + dsl_dir_diduse_space(newparent, DD_USED_CHILD, + dsl_dir_phys(dd)->dd_used_bytes, + dsl_dir_phys(dd)->dd_compressed_bytes, + dsl_dir_phys(dd)->dd_uncompressed_bytes, tx); + + if (dsl_dir_phys(dd)->dd_reserved > + dsl_dir_phys(dd)->dd_used_bytes) { + uint64_t unused_rsrv = dsl_dir_phys(dd)->dd_reserved - + dsl_dir_phys(dd)->dd_used_bytes; + + dsl_dir_diduse_space(dd->dd_parent, DD_USED_CHILD_RSRV, + -unused_rsrv, 0, 0, tx); + dsl_dir_diduse_space(newparent, DD_USED_CHILD_RSRV, + unused_rsrv, 0, 0, tx); + } + } + + dmu_buf_will_dirty(dd->dd_dbuf, tx); + + /* remove from old parent zapobj */ + error = zap_remove(mos, + dsl_dir_phys(dd->dd_parent)->dd_child_dir_zapobj, + dd->dd_myname, tx); + ASSERT0(error); + + (void) strcpy(dd->dd_myname, mynewname); + dsl_dir_rele(dd->dd_parent, dd); + dsl_dir_phys(dd)->dd_parent_obj = newparent->dd_object; + VERIFY0(dsl_dir_hold_obj(dp, + newparent->dd_object, NULL, dd, &dd->dd_parent)); + + /* add to new parent zapobj */ + VERIFY0(zap_add(mos, dsl_dir_phys(newparent)->dd_child_dir_zapobj, + dd->dd_myname, 8, 1, &dd->dd_object, tx)); + +#ifdef _KERNEL + zvol_rename_minors(ddra->ddra_oldname, ddra->ddra_newname); +#endif + + dsl_prop_notify_all(dd); + + dsl_dir_rele(newparent, FTAG); + dsl_dir_rele(dd, FTAG); +} + +int +dsl_dir_rename(const char *oldname, const char *newname) +{ + dsl_dir_rename_arg_t ddra; + + ddra.ddra_oldname = oldname; + ddra.ddra_newname = newname; + ddra.ddra_cred = CRED(); + + return (dsl_sync_task(oldname, + dsl_dir_rename_check, dsl_dir_rename_sync, &ddra, + 3, ZFS_SPACE_CHECK_RESERVED)); +} + +int +dsl_dir_transfer_possible(dsl_dir_t *sdd, dsl_dir_t *tdd, + uint64_t fs_cnt, uint64_t ss_cnt, uint64_t space, cred_t *cr) +{ + dsl_dir_t *ancestor; + int64_t adelta; + uint64_t avail; + int err; + + ancestor = closest_common_ancestor(sdd, tdd); + adelta = would_change(sdd, -space, ancestor); + avail = dsl_dir_space_available(tdd, ancestor, adelta, FALSE); + if (avail < space) + return (SET_ERROR(ENOSPC)); + + err = dsl_fs_ss_limit_check(tdd, fs_cnt, ZFS_PROP_FILESYSTEM_LIMIT, + ancestor, cr); + if (err != 0) + return (err); + err = dsl_fs_ss_limit_check(tdd, ss_cnt, ZFS_PROP_SNAPSHOT_LIMIT, + ancestor, cr); + if (err != 0) + return (err); + + return (0); +} + +timestruc_t +dsl_dir_snap_cmtime(dsl_dir_t *dd) +{ + timestruc_t t; + + mutex_enter(&dd->dd_lock); + t = dd->dd_snap_cmtime; + mutex_exit(&dd->dd_lock); + + return (t); +} + +void +dsl_dir_snap_cmtime_update(dsl_dir_t *dd) +{ + timestruc_t t; + + gethrestime(&t); + mutex_enter(&dd->dd_lock); + dd->dd_snap_cmtime = t; + mutex_exit(&dd->dd_lock); +} + +void +dsl_dir_zapify(dsl_dir_t *dd, dmu_tx_t *tx) +{ + objset_t *mos = dd->dd_pool->dp_meta_objset; + dmu_object_zapify(mos, dd->dd_object, DMU_OT_DSL_DIR, tx); +} + +boolean_t +dsl_dir_is_zapified(dsl_dir_t *dd) +{ + dmu_object_info_t doi; + + dmu_object_info_from_db(dd->dd_dbuf, &doi); + return (doi.doi_type == DMU_OTN_ZAP_METADATA); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_dir_set_quota); +EXPORT_SYMBOL(dsl_dir_set_reservation); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_pool.c +++ linux-4.4.0/zfs/module/zfs/dsl_pool.c @@ -0,0 +1,1107 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ZFS Write Throttle + * ------------------ + * + * ZFS must limit the rate of incoming writes to the rate at which it is able + * to sync data modifications to the backend storage. Throttling by too much + * creates an artificial limit; throttling by too little can only be sustained + * for short periods and would lead to highly lumpy performance. On a per-pool + * basis, ZFS tracks the amount of modified (dirty) data. As operations change + * data, the amount of dirty data increases; as ZFS syncs out data, the amount + * of dirty data decreases. When the amount of dirty data exceeds a + * predetermined threshold further modifications are blocked until the amount + * of dirty data decreases (as data is synced out). + * + * The limit on dirty data is tunable, and should be adjusted according to + * both the IO capacity and available memory of the system. The larger the + * window, the more ZFS is able to aggregate and amortize metadata (and data) + * changes. However, memory is a limited resource, and allowing for more dirty + * data comes at the cost of keeping other useful data in memory (for example + * ZFS data cached by the ARC). + * + * Implementation + * + * As buffers are modified dsl_pool_willuse_space() increments both the per- + * txg (dp_dirty_pertxg[]) and poolwide (dp_dirty_total) accounting of + * dirty space used; dsl_pool_dirty_space() decrements those values as data + * is synced out from dsl_pool_sync(). While only the poolwide value is + * relevant, the per-txg value is useful for debugging. The tunable + * zfs_dirty_data_max determines the dirty space limit. Once that value is + * exceeded, new writes are halted until space frees up. + * + * The zfs_dirty_data_sync tunable dictates the threshold at which we + * ensure that there is a txg syncing (see the comment in txg.c for a full + * description of transaction group stages). + * + * The IO scheduler uses both the dirty space limit and current amount of + * dirty data as inputs. Those values affect the number of concurrent IOs ZFS + * issues. See the comment in vdev_queue.c for details of the IO scheduler. + * + * The delay is also calculated based on the amount of dirty data. See the + * comment above dmu_tx_delay() for details. + */ + +/* + * zfs_dirty_data_max will be set to zfs_dirty_data_max_percent% of all memory, + * capped at zfs_dirty_data_max_max. It can also be overridden with a module + * parameter. + */ +unsigned long zfs_dirty_data_max = 0; +unsigned long zfs_dirty_data_max_max = 0; +int zfs_dirty_data_max_percent = 10; +int zfs_dirty_data_max_max_percent = 25; + +/* + * If there is at least this much dirty data, push out a txg. + */ +unsigned long zfs_dirty_data_sync = 64 * 1024 * 1024; + +/* + * Once there is this amount of dirty data, the dmu_tx_delay() will kick in + * and delay each transaction. + * This value should be >= zfs_vdev_async_write_active_max_dirty_percent. + */ +int zfs_delay_min_dirty_percent = 60; + +/* + * This controls how quickly the delay approaches infinity. + * Larger values cause it to delay more for a given amount of dirty data. + * Therefore larger values will cause there to be less dirty data for a + * given throughput. + * + * For the smoothest delay, this value should be about 1 billion divided + * by the maximum number of operations per second. This will smoothly + * handle between 10x and 1/10th this number. + * + * Note: zfs_delay_scale * zfs_dirty_data_max must be < 2^64, due to the + * multiply in dmu_tx_delay(). + */ +unsigned long zfs_delay_scale = 1000 * 1000 * 1000 / 2000; + +hrtime_t zfs_throttle_delay = MSEC2NSEC(10); +hrtime_t zfs_throttle_resolution = MSEC2NSEC(10); + +int +dsl_pool_open_special_dir(dsl_pool_t *dp, const char *name, dsl_dir_t **ddp) +{ + uint64_t obj; + int err; + + err = zap_lookup(dp->dp_meta_objset, + dsl_dir_phys(dp->dp_root_dir)->dd_child_dir_zapobj, + name, sizeof (obj), 1, &obj); + if (err) + return (err); + + return (dsl_dir_hold_obj(dp, obj, name, dp, ddp)); +} + +static dsl_pool_t * +dsl_pool_open_impl(spa_t *spa, uint64_t txg) +{ + dsl_pool_t *dp; + blkptr_t *bp = spa_get_rootblkptr(spa); + + dp = kmem_zalloc(sizeof (dsl_pool_t), KM_SLEEP); + dp->dp_spa = spa; + dp->dp_meta_rootbp = *bp; + rrw_init(&dp->dp_config_rwlock, B_TRUE); + txg_init(dp, txg); + + txg_list_create(&dp->dp_dirty_datasets, + offsetof(dsl_dataset_t, ds_dirty_link)); + txg_list_create(&dp->dp_dirty_zilogs, + offsetof(zilog_t, zl_dirty_link)); + txg_list_create(&dp->dp_dirty_dirs, + offsetof(dsl_dir_t, dd_dirty_link)); + txg_list_create(&dp->dp_sync_tasks, + offsetof(dsl_sync_task_t, dst_node)); + + mutex_init(&dp->dp_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&dp->dp_spaceavail_cv, NULL, CV_DEFAULT, NULL); + + dp->dp_iput_taskq = taskq_create("z_iput", max_ncpus, defclsyspri, + max_ncpus * 8, INT_MAX, TASKQ_PREPOPULATE | TASKQ_DYNAMIC); + + return (dp); +} + +int +dsl_pool_init(spa_t *spa, uint64_t txg, dsl_pool_t **dpp) +{ + int err; + dsl_pool_t *dp = dsl_pool_open_impl(spa, txg); + + err = dmu_objset_open_impl(spa, NULL, &dp->dp_meta_rootbp, + &dp->dp_meta_objset); + if (err != 0) + dsl_pool_close(dp); + else + *dpp = dp; + + return (err); +} + +int +dsl_pool_open(dsl_pool_t *dp) +{ + int err; + dsl_dir_t *dd; + dsl_dataset_t *ds; + uint64_t obj; + + rrw_enter(&dp->dp_config_rwlock, RW_WRITER, FTAG); + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_ROOT_DATASET, sizeof (uint64_t), 1, + &dp->dp_root_dir_obj); + if (err) + goto out; + + err = dsl_dir_hold_obj(dp, dp->dp_root_dir_obj, + NULL, dp, &dp->dp_root_dir); + if (err) + goto out; + + err = dsl_pool_open_special_dir(dp, MOS_DIR_NAME, &dp->dp_mos_dir); + if (err) + goto out; + + if (spa_version(dp->dp_spa) >= SPA_VERSION_ORIGIN) { + err = dsl_pool_open_special_dir(dp, ORIGIN_DIR_NAME, &dd); + if (err) + goto out; + err = dsl_dataset_hold_obj(dp, + dsl_dir_phys(dd)->dd_head_dataset_obj, FTAG, &ds); + if (err == 0) { + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, dp, + &dp->dp_origin_snap); + dsl_dataset_rele(ds, FTAG); + } + dsl_dir_rele(dd, dp); + if (err) + goto out; + } + + if (spa_version(dp->dp_spa) >= SPA_VERSION_DEADLISTS) { + err = dsl_pool_open_special_dir(dp, FREE_DIR_NAME, + &dp->dp_free_dir); + if (err) + goto out; + + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FREE_BPOBJ, sizeof (uint64_t), 1, &obj); + if (err) + goto out; + VERIFY0(bpobj_open(&dp->dp_free_bpobj, + dp->dp_meta_objset, obj)); + } + + /* + * Note: errors ignored, because the leak dir will not exist if we + * have not encountered a leak yet. + */ + (void) dsl_pool_open_special_dir(dp, LEAK_DIR_NAME, + &dp->dp_leak_dir); + + if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_ASYNC_DESTROY)) { + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_BPTREE_OBJ, sizeof (uint64_t), 1, + &dp->dp_bptree_obj); + if (err != 0) + goto out; + } + + if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_EMPTY_BPOBJ)) { + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_EMPTY_BPOBJ, sizeof (uint64_t), 1, + &dp->dp_empty_bpobj); + if (err != 0) + goto out; + } + + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_TMP_USERREFS, sizeof (uint64_t), 1, + &dp->dp_tmp_userrefs_obj); + if (err == ENOENT) + err = 0; + if (err) + goto out; + + err = dsl_scan_init(dp, dp->dp_tx.tx_open_txg); + +out: + rrw_exit(&dp->dp_config_rwlock, FTAG); + return (err); +} + +void +dsl_pool_close(dsl_pool_t *dp) +{ + /* + * Drop our references from dsl_pool_open(). + * + * Since we held the origin_snap from "syncing" context (which + * includes pool-opening context), it actually only got a "ref" + * and not a hold, so just drop that here. + */ + if (dp->dp_origin_snap) + dsl_dataset_rele(dp->dp_origin_snap, dp); + if (dp->dp_mos_dir) + dsl_dir_rele(dp->dp_mos_dir, dp); + if (dp->dp_free_dir) + dsl_dir_rele(dp->dp_free_dir, dp); + if (dp->dp_leak_dir) + dsl_dir_rele(dp->dp_leak_dir, dp); + if (dp->dp_root_dir) + dsl_dir_rele(dp->dp_root_dir, dp); + + bpobj_close(&dp->dp_free_bpobj); + + /* undo the dmu_objset_open_impl(mos) from dsl_pool_open() */ + if (dp->dp_meta_objset) + dmu_objset_evict(dp->dp_meta_objset); + + txg_list_destroy(&dp->dp_dirty_datasets); + txg_list_destroy(&dp->dp_dirty_zilogs); + txg_list_destroy(&dp->dp_sync_tasks); + txg_list_destroy(&dp->dp_dirty_dirs); + + /* + * We can't set retry to TRUE since we're explicitly specifying + * a spa to flush. This is good enough; any missed buffers for + * this spa won't cause trouble, and they'll eventually fall + * out of the ARC just like any other unused buffer. + */ + arc_flush(dp->dp_spa, FALSE); + + txg_fini(dp); + dsl_scan_fini(dp); + dmu_buf_user_evict_wait(); + + rrw_destroy(&dp->dp_config_rwlock); + mutex_destroy(&dp->dp_lock); + taskq_destroy(dp->dp_iput_taskq); + if (dp->dp_blkstats) + vmem_free(dp->dp_blkstats, sizeof (zfs_all_blkstats_t)); + kmem_free(dp, sizeof (dsl_pool_t)); +} + +dsl_pool_t * +dsl_pool_create(spa_t *spa, nvlist_t *zplprops, uint64_t txg) +{ + int err; + dsl_pool_t *dp = dsl_pool_open_impl(spa, txg); + dmu_tx_t *tx = dmu_tx_create_assigned(dp, txg); + objset_t *os; + dsl_dataset_t *ds; + uint64_t obj; + + rrw_enter(&dp->dp_config_rwlock, RW_WRITER, FTAG); + + /* create and open the MOS (meta-objset) */ + dp->dp_meta_objset = dmu_objset_create_impl(spa, + NULL, &dp->dp_meta_rootbp, DMU_OST_META, tx); + + /* create the pool directory */ + err = zap_create_claim(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_OT_OBJECT_DIRECTORY, DMU_OT_NONE, 0, tx); + ASSERT0(err); + + /* Initialize scan structures */ + VERIFY0(dsl_scan_init(dp, txg)); + + /* create and open the root dir */ + dp->dp_root_dir_obj = dsl_dir_create_sync(dp, NULL, NULL, tx); + VERIFY0(dsl_dir_hold_obj(dp, dp->dp_root_dir_obj, + NULL, dp, &dp->dp_root_dir)); + + /* create and open the meta-objset dir */ + (void) dsl_dir_create_sync(dp, dp->dp_root_dir, MOS_DIR_NAME, tx); + VERIFY0(dsl_pool_open_special_dir(dp, + MOS_DIR_NAME, &dp->dp_mos_dir)); + + if (spa_version(spa) >= SPA_VERSION_DEADLISTS) { + /* create and open the free dir */ + (void) dsl_dir_create_sync(dp, dp->dp_root_dir, + FREE_DIR_NAME, tx); + VERIFY0(dsl_pool_open_special_dir(dp, + FREE_DIR_NAME, &dp->dp_free_dir)); + + /* create and open the free_bplist */ + obj = bpobj_alloc(dp->dp_meta_objset, SPA_OLD_MAXBLOCKSIZE, tx); + VERIFY(zap_add(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FREE_BPOBJ, sizeof (uint64_t), 1, &obj, tx) == 0); + VERIFY0(bpobj_open(&dp->dp_free_bpobj, + dp->dp_meta_objset, obj)); + } + + if (spa_version(spa) >= SPA_VERSION_DSL_SCRUB) + dsl_pool_create_origin(dp, tx); + + /* create the root dataset */ + obj = dsl_dataset_create_sync_dd(dp->dp_root_dir, NULL, 0, tx); + + /* create the root objset */ + VERIFY0(dsl_dataset_hold_obj(dp, obj, FTAG, &ds)); + VERIFY(NULL != (os = dmu_objset_create_impl(dp->dp_spa, ds, + dsl_dataset_get_blkptr(ds), DMU_OST_ZFS, tx))); +#ifdef _KERNEL + zfs_create_fs(os, kcred, zplprops, tx); +#endif + dsl_dataset_rele(ds, FTAG); + + dmu_tx_commit(tx); + + rrw_exit(&dp->dp_config_rwlock, FTAG); + + return (dp); +} + +/* + * Account for the meta-objset space in its placeholder dsl_dir. + */ +void +dsl_pool_mos_diduse_space(dsl_pool_t *dp, + int64_t used, int64_t comp, int64_t uncomp) +{ + ASSERT3U(comp, ==, uncomp); /* it's all metadata */ + mutex_enter(&dp->dp_lock); + dp->dp_mos_used_delta += used; + dp->dp_mos_compressed_delta += comp; + dp->dp_mos_uncompressed_delta += uncomp; + mutex_exit(&dp->dp_lock); +} + +static int +deadlist_enqueue_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + dsl_deadlist_t *dl = arg; + dsl_deadlist_insert(dl, bp, tx); + return (0); +} + +static void +dsl_pool_sync_mos(dsl_pool_t *dp, dmu_tx_t *tx) +{ + zio_t *zio = zio_root(dp->dp_spa, NULL, NULL, ZIO_FLAG_MUSTSUCCEED); + dmu_objset_sync(dp->dp_meta_objset, zio, tx); + VERIFY0(zio_wait(zio)); + dprintf_bp(&dp->dp_meta_rootbp, "meta objset rootbp is %s", ""); + spa_set_rootblkptr(dp->dp_spa, &dp->dp_meta_rootbp); +} + +static void +dsl_pool_dirty_delta(dsl_pool_t *dp, int64_t delta) +{ + ASSERT(MUTEX_HELD(&dp->dp_lock)); + + if (delta < 0) + ASSERT3U(-delta, <=, dp->dp_dirty_total); + + dp->dp_dirty_total += delta; + + /* + * Note: we signal even when increasing dp_dirty_total. + * This ensures forward progress -- each thread wakes the next waiter. + */ + if (dp->dp_dirty_total <= zfs_dirty_data_max) + cv_signal(&dp->dp_spaceavail_cv); +} + +void +dsl_pool_sync(dsl_pool_t *dp, uint64_t txg) +{ + zio_t *zio; + dmu_tx_t *tx; + dsl_dir_t *dd; + dsl_dataset_t *ds; + objset_t *mos = dp->dp_meta_objset; + list_t synced_datasets; + + list_create(&synced_datasets, sizeof (dsl_dataset_t), + offsetof(dsl_dataset_t, ds_synced_link)); + + tx = dmu_tx_create_assigned(dp, txg); + + /* + * Write out all dirty blocks of dirty datasets. + */ + zio = zio_root(dp->dp_spa, NULL, NULL, ZIO_FLAG_MUSTSUCCEED); + while ((ds = txg_list_remove(&dp->dp_dirty_datasets, txg)) != NULL) { + /* + * We must not sync any non-MOS datasets twice, because + * we may have taken a snapshot of them. However, we + * may sync newly-created datasets on pass 2. + */ + ASSERT(!list_link_active(&ds->ds_synced_link)); + list_insert_tail(&synced_datasets, ds); + dsl_dataset_sync(ds, zio, tx); + } + VERIFY0(zio_wait(zio)); + + /* + * We have written all of the accounted dirty data, so our + * dp_space_towrite should now be zero. However, some seldom-used + * code paths do not adhere to this (e.g. dbuf_undirty(), also + * rounding error in dbuf_write_physdone). + * Shore up the accounting of any dirtied space now. + */ + dsl_pool_undirty_space(dp, dp->dp_dirty_pertxg[txg & TXG_MASK], txg); + + /* + * After the data blocks have been written (ensured by the zio_wait() + * above), update the user/group space accounting. + */ + for (ds = list_head(&synced_datasets); ds != NULL; + ds = list_next(&synced_datasets, ds)) { + dmu_objset_do_userquota_updates(ds->ds_objset, tx); + } + + /* + * Sync the datasets again to push out the changes due to + * userspace updates. This must be done before we process the + * sync tasks, so that any snapshots will have the correct + * user accounting information (and we won't get confused + * about which blocks are part of the snapshot). + */ + zio = zio_root(dp->dp_spa, NULL, NULL, ZIO_FLAG_MUSTSUCCEED); + while ((ds = txg_list_remove(&dp->dp_dirty_datasets, txg)) != NULL) { + ASSERT(list_link_active(&ds->ds_synced_link)); + dmu_buf_rele(ds->ds_dbuf, ds); + dsl_dataset_sync(ds, zio, tx); + } + VERIFY0(zio_wait(zio)); + + /* + * Now that the datasets have been completely synced, we can + * clean up our in-memory structures accumulated while syncing: + * + * - move dead blocks from the pending deadlist to the on-disk deadlist + * - release hold from dsl_dataset_dirty() + */ + while ((ds = list_remove_head(&synced_datasets)) != NULL) { + ASSERTV(objset_t *os = ds->ds_objset); + bplist_iterate(&ds->ds_pending_deadlist, + deadlist_enqueue_cb, &ds->ds_deadlist, tx); + ASSERT(!dmu_objset_is_dirty(os, txg)); + dmu_buf_rele(ds->ds_dbuf, ds); + } + + while ((dd = txg_list_remove(&dp->dp_dirty_dirs, txg)) != NULL) { + dsl_dir_sync(dd, tx); + } + + /* + * The MOS's space is accounted for in the pool/$MOS + * (dp_mos_dir). We can't modify the mos while we're syncing + * it, so we remember the deltas and apply them here. + */ + if (dp->dp_mos_used_delta != 0 || dp->dp_mos_compressed_delta != 0 || + dp->dp_mos_uncompressed_delta != 0) { + dsl_dir_diduse_space(dp->dp_mos_dir, DD_USED_HEAD, + dp->dp_mos_used_delta, + dp->dp_mos_compressed_delta, + dp->dp_mos_uncompressed_delta, tx); + dp->dp_mos_used_delta = 0; + dp->dp_mos_compressed_delta = 0; + dp->dp_mos_uncompressed_delta = 0; + } + + if (list_head(&mos->os_dirty_dnodes[txg & TXG_MASK]) != NULL || + list_head(&mos->os_free_dnodes[txg & TXG_MASK]) != NULL) { + dsl_pool_sync_mos(dp, tx); + } + + /* + * If we modify a dataset in the same txg that we want to destroy it, + * its dsl_dir's dd_dbuf will be dirty, and thus have a hold on it. + * dsl_dir_destroy_check() will fail if there are unexpected holds. + * Therefore, we want to sync the MOS (thus syncing the dd_dbuf + * and clearing the hold on it) before we process the sync_tasks. + * The MOS data dirtied by the sync_tasks will be synced on the next + * pass. + */ + if (!txg_list_empty(&dp->dp_sync_tasks, txg)) { + dsl_sync_task_t *dst; + /* + * No more sync tasks should have been added while we + * were syncing. + */ + ASSERT3U(spa_sync_pass(dp->dp_spa), ==, 1); + while ((dst = txg_list_remove(&dp->dp_sync_tasks, txg)) != NULL) + dsl_sync_task_sync(dst, tx); + } + + dmu_tx_commit(tx); + + DTRACE_PROBE2(dsl_pool_sync__done, dsl_pool_t *dp, dp, uint64_t, txg); +} + +void +dsl_pool_sync_done(dsl_pool_t *dp, uint64_t txg) +{ + zilog_t *zilog; + + while ((zilog = txg_list_remove(&dp->dp_dirty_zilogs, txg))) { + dsl_dataset_t *ds = dmu_objset_ds(zilog->zl_os); + zil_clean(zilog, txg); + ASSERT(!dmu_objset_is_dirty(zilog->zl_os, txg)); + dmu_buf_rele(ds->ds_dbuf, zilog); + } + ASSERT(!dmu_objset_is_dirty(dp->dp_meta_objset, txg)); +} + +/* + * TRUE if the current thread is the tx_sync_thread or if we + * are being called from SPA context during pool initialization. + */ +int +dsl_pool_sync_context(dsl_pool_t *dp) +{ + return (curthread == dp->dp_tx.tx_sync_thread || + spa_is_initializing(dp->dp_spa)); +} + +uint64_t +dsl_pool_adjustedsize(dsl_pool_t *dp, boolean_t netfree) +{ + uint64_t space, resv; + + /* + * If we're trying to assess whether it's OK to do a free, + * cut the reservation in half to allow forward progress + * (e.g. make it possible to rm(1) files from a full pool). + */ + space = spa_get_dspace(dp->dp_spa); + resv = spa_get_slop_space(dp->dp_spa); + if (netfree) + resv >>= 1; + + return (space - resv); +} + +boolean_t +dsl_pool_need_dirty_delay(dsl_pool_t *dp) +{ + uint64_t delay_min_bytes = + zfs_dirty_data_max * zfs_delay_min_dirty_percent / 100; + boolean_t rv; + + mutex_enter(&dp->dp_lock); + if (dp->dp_dirty_total > zfs_dirty_data_sync) + txg_kick(dp); + rv = (dp->dp_dirty_total > delay_min_bytes); + mutex_exit(&dp->dp_lock); + return (rv); +} + +void +dsl_pool_dirty_space(dsl_pool_t *dp, int64_t space, dmu_tx_t *tx) +{ + if (space > 0) { + mutex_enter(&dp->dp_lock); + dp->dp_dirty_pertxg[tx->tx_txg & TXG_MASK] += space; + dsl_pool_dirty_delta(dp, space); + mutex_exit(&dp->dp_lock); + } +} + +void +dsl_pool_undirty_space(dsl_pool_t *dp, int64_t space, uint64_t txg) +{ + ASSERT3S(space, >=, 0); + if (space == 0) + return; + + mutex_enter(&dp->dp_lock); + if (dp->dp_dirty_pertxg[txg & TXG_MASK] < space) { + /* XXX writing something we didn't dirty? */ + space = dp->dp_dirty_pertxg[txg & TXG_MASK]; + } + ASSERT3U(dp->dp_dirty_pertxg[txg & TXG_MASK], >=, space); + dp->dp_dirty_pertxg[txg & TXG_MASK] -= space; + ASSERT3U(dp->dp_dirty_total, >=, space); + dsl_pool_dirty_delta(dp, -space); + mutex_exit(&dp->dp_lock); +} + +/* ARGSUSED */ +static int +upgrade_clones_cb(dsl_pool_t *dp, dsl_dataset_t *hds, void *arg) +{ + dmu_tx_t *tx = arg; + dsl_dataset_t *ds, *prev = NULL; + int err; + + err = dsl_dataset_hold_obj(dp, hds->ds_object, FTAG, &ds); + if (err) + return (err); + + while (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, FTAG, &prev); + if (err) { + dsl_dataset_rele(ds, FTAG); + return (err); + } + + if (dsl_dataset_phys(prev)->ds_next_snap_obj != ds->ds_object) + break; + dsl_dataset_rele(ds, FTAG); + ds = prev; + prev = NULL; + } + + if (prev == NULL) { + prev = dp->dp_origin_snap; + + /* + * The $ORIGIN can't have any data, or the accounting + * will be wrong. + */ + ASSERT0(dsl_dataset_phys(prev)->ds_bp.blk_birth); + + /* The origin doesn't get attached to itself */ + if (ds->ds_object == prev->ds_object) { + dsl_dataset_rele(ds, FTAG); + return (0); + } + + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_prev_snap_obj = prev->ds_object; + dsl_dataset_phys(ds)->ds_prev_snap_txg = + dsl_dataset_phys(prev)->ds_creation_txg; + + dmu_buf_will_dirty(ds->ds_dir->dd_dbuf, tx); + dsl_dir_phys(ds->ds_dir)->dd_origin_obj = prev->ds_object; + + dmu_buf_will_dirty(prev->ds_dbuf, tx); + dsl_dataset_phys(prev)->ds_num_children++; + + if (dsl_dataset_phys(ds)->ds_next_snap_obj == 0) { + ASSERT(ds->ds_prev == NULL); + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, + ds, &ds->ds_prev)); + } + } + + ASSERT3U(dsl_dir_phys(ds->ds_dir)->dd_origin_obj, ==, prev->ds_object); + ASSERT3U(dsl_dataset_phys(ds)->ds_prev_snap_obj, ==, prev->ds_object); + + if (dsl_dataset_phys(prev)->ds_next_clones_obj == 0) { + dmu_buf_will_dirty(prev->ds_dbuf, tx); + dsl_dataset_phys(prev)->ds_next_clones_obj = + zap_create(dp->dp_meta_objset, + DMU_OT_NEXT_CLONES, DMU_OT_NONE, 0, tx); + } + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dataset_phys(prev)->ds_next_clones_obj, ds->ds_object, tx)); + + dsl_dataset_rele(ds, FTAG); + if (prev != dp->dp_origin_snap) + dsl_dataset_rele(prev, FTAG); + return (0); +} + +void +dsl_pool_upgrade_clones(dsl_pool_t *dp, dmu_tx_t *tx) +{ + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(dp->dp_origin_snap != NULL); + + VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, upgrade_clones_cb, + tx, DS_FIND_CHILDREN | DS_FIND_SERIALIZE)); +} + +/* ARGSUSED */ +static int +upgrade_dir_clones_cb(dsl_pool_t *dp, dsl_dataset_t *ds, void *arg) +{ + dmu_tx_t *tx = arg; + objset_t *mos = dp->dp_meta_objset; + + if (dsl_dir_phys(ds->ds_dir)->dd_origin_obj != 0) { + dsl_dataset_t *origin; + + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dir_phys(ds->ds_dir)->dd_origin_obj, FTAG, &origin)); + + if (dsl_dir_phys(origin->ds_dir)->dd_clones == 0) { + dmu_buf_will_dirty(origin->ds_dir->dd_dbuf, tx); + dsl_dir_phys(origin->ds_dir)->dd_clones = + zap_create(mos, DMU_OT_DSL_CLONES, DMU_OT_NONE, + 0, tx); + } + + VERIFY0(zap_add_int(dp->dp_meta_objset, + dsl_dir_phys(origin->ds_dir)->dd_clones, + ds->ds_object, tx)); + + dsl_dataset_rele(origin, FTAG); + } + return (0); +} + +void +dsl_pool_upgrade_dir_clones(dsl_pool_t *dp, dmu_tx_t *tx) +{ + uint64_t obj; + + ASSERT(dmu_tx_is_syncing(tx)); + + (void) dsl_dir_create_sync(dp, dp->dp_root_dir, FREE_DIR_NAME, tx); + VERIFY0(dsl_pool_open_special_dir(dp, + FREE_DIR_NAME, &dp->dp_free_dir)); + + /* + * We can't use bpobj_alloc(), because spa_version() still + * returns the old version, and we need a new-version bpobj with + * subobj support. So call dmu_object_alloc() directly. + */ + obj = dmu_object_alloc(dp->dp_meta_objset, DMU_OT_BPOBJ, + SPA_OLD_MAXBLOCKSIZE, DMU_OT_BPOBJ_HDR, sizeof (bpobj_phys_t), tx); + VERIFY0(zap_add(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FREE_BPOBJ, sizeof (uint64_t), 1, &obj, tx)); + VERIFY0(bpobj_open(&dp->dp_free_bpobj, dp->dp_meta_objset, obj)); + + VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, + upgrade_dir_clones_cb, tx, DS_FIND_CHILDREN | DS_FIND_SERIALIZE)); +} + +void +dsl_pool_create_origin(dsl_pool_t *dp, dmu_tx_t *tx) +{ + uint64_t dsobj; + dsl_dataset_t *ds; + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT(dp->dp_origin_snap == NULL); + ASSERT(rrw_held(&dp->dp_config_rwlock, RW_WRITER)); + + /* create the origin dir, ds, & snap-ds */ + dsobj = dsl_dataset_create_sync(dp->dp_root_dir, ORIGIN_DIR_NAME, + NULL, 0, kcred, tx); + VERIFY0(dsl_dataset_hold_obj(dp, dsobj, FTAG, &ds)); + dsl_dataset_snapshot_sync_impl(ds, ORIGIN_DIR_NAME, tx); + VERIFY0(dsl_dataset_hold_obj(dp, dsl_dataset_phys(ds)->ds_prev_snap_obj, + dp, &dp->dp_origin_snap)); + dsl_dataset_rele(ds, FTAG); +} + +taskq_t * +dsl_pool_iput_taskq(dsl_pool_t *dp) +{ + return (dp->dp_iput_taskq); +} + +/* + * Walk through the pool-wide zap object of temporary snapshot user holds + * and release them. + */ +void +dsl_pool_clean_tmp_userrefs(dsl_pool_t *dp) +{ + zap_attribute_t za; + zap_cursor_t zc; + objset_t *mos = dp->dp_meta_objset; + uint64_t zapobj = dp->dp_tmp_userrefs_obj; + nvlist_t *holds; + + if (zapobj == 0) + return; + ASSERT(spa_version(dp->dp_spa) >= SPA_VERSION_USERREFS); + + holds = fnvlist_alloc(); + + for (zap_cursor_init(&zc, mos, zapobj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + char *htag; + nvlist_t *tags; + + htag = strchr(za.za_name, '-'); + *htag = '\0'; + ++htag; + if (nvlist_lookup_nvlist(holds, za.za_name, &tags) != 0) { + tags = fnvlist_alloc(); + fnvlist_add_boolean(tags, htag); + fnvlist_add_nvlist(holds, za.za_name, tags); + fnvlist_free(tags); + } else { + fnvlist_add_boolean(tags, htag); + } + } + dsl_dataset_user_release_tmp(dp, holds); + fnvlist_free(holds); + zap_cursor_fini(&zc); +} + +/* + * Create the pool-wide zap object for storing temporary snapshot holds. + */ +void +dsl_pool_user_hold_create_obj(dsl_pool_t *dp, dmu_tx_t *tx) +{ + objset_t *mos = dp->dp_meta_objset; + + ASSERT(dp->dp_tmp_userrefs_obj == 0); + ASSERT(dmu_tx_is_syncing(tx)); + + dp->dp_tmp_userrefs_obj = zap_create_link(mos, DMU_OT_USERREFS, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_TMP_USERREFS, tx); +} + +static int +dsl_pool_user_hold_rele_impl(dsl_pool_t *dp, uint64_t dsobj, + const char *tag, uint64_t now, dmu_tx_t *tx, boolean_t holding) +{ + objset_t *mos = dp->dp_meta_objset; + uint64_t zapobj = dp->dp_tmp_userrefs_obj; + char *name; + int error; + + ASSERT(spa_version(dp->dp_spa) >= SPA_VERSION_USERREFS); + ASSERT(dmu_tx_is_syncing(tx)); + + /* + * If the pool was created prior to SPA_VERSION_USERREFS, the + * zap object for temporary holds might not exist yet. + */ + if (zapobj == 0) { + if (holding) { + dsl_pool_user_hold_create_obj(dp, tx); + zapobj = dp->dp_tmp_userrefs_obj; + } else { + return (SET_ERROR(ENOENT)); + } + } + + name = kmem_asprintf("%llx-%s", (u_longlong_t)dsobj, tag); + if (holding) + error = zap_add(mos, zapobj, name, 8, 1, &now, tx); + else + error = zap_remove(mos, zapobj, name, tx); + strfree(name); + + return (error); +} + +/* + * Add a temporary hold for the given dataset object and tag. + */ +int +dsl_pool_user_hold(dsl_pool_t *dp, uint64_t dsobj, const char *tag, + uint64_t now, dmu_tx_t *tx) +{ + return (dsl_pool_user_hold_rele_impl(dp, dsobj, tag, now, tx, B_TRUE)); +} + +/* + * Release a temporary hold for the given dataset object and tag. + */ +int +dsl_pool_user_release(dsl_pool_t *dp, uint64_t dsobj, const char *tag, + dmu_tx_t *tx) +{ + return (dsl_pool_user_hold_rele_impl(dp, dsobj, tag, 0, + tx, B_FALSE)); +} + +/* + * DSL Pool Configuration Lock + * + * The dp_config_rwlock protects against changes to DSL state (e.g. dataset + * creation / destruction / rename / property setting). It must be held for + * read to hold a dataset or dsl_dir. I.e. you must call + * dsl_pool_config_enter() or dsl_pool_hold() before calling + * dsl_{dataset,dir}_hold{_obj}. In most circumstances, the dp_config_rwlock + * must be held continuously until all datasets and dsl_dirs are released. + * + * The only exception to this rule is that if a "long hold" is placed on + * a dataset, then the dp_config_rwlock may be dropped while the dataset + * is still held. The long hold will prevent the dataset from being + * destroyed -- the destroy will fail with EBUSY. A long hold can be + * obtained by calling dsl_dataset_long_hold(), or by "owning" a dataset + * (by calling dsl_{dataset,objset}_{try}own{_obj}). + * + * Legitimate long-holders (including owners) should be long-running, cancelable + * tasks that should cause "zfs destroy" to fail. This includes DMU + * consumers (i.e. a ZPL filesystem being mounted or ZVOL being open), + * "zfs send", and "zfs diff". There are several other long-holders whose + * uses are suboptimal (e.g. "zfs promote", and zil_suspend()). + * + * The usual formula for long-holding would be: + * dsl_pool_hold() + * dsl_dataset_hold() + * ... perform checks ... + * dsl_dataset_long_hold() + * dsl_pool_rele() + * ... perform long-running task ... + * dsl_dataset_long_rele() + * dsl_dataset_rele() + * + * Note that when the long hold is released, the dataset is still held but + * the pool is not held. The dataset may change arbitrarily during this time + * (e.g. it could be destroyed). Therefore you shouldn't do anything to the + * dataset except release it. + * + * User-initiated operations (e.g. ioctls, zfs_ioc_*()) are either read-only + * or modifying operations. + * + * Modifying operations should generally use dsl_sync_task(). The synctask + * infrastructure enforces proper locking strategy with respect to the + * dp_config_rwlock. See the comment above dsl_sync_task() for details. + * + * Read-only operations will manually hold the pool, then the dataset, obtain + * information from the dataset, then release the pool and dataset. + * dmu_objset_{hold,rele}() are convenience routines that also do the pool + * hold/rele. + */ + +int +dsl_pool_hold(const char *name, void *tag, dsl_pool_t **dp) +{ + spa_t *spa; + int error; + + error = spa_open(name, &spa, tag); + if (error == 0) { + *dp = spa_get_dsl(spa); + dsl_pool_config_enter(*dp, tag); + } + return (error); +} + +void +dsl_pool_rele(dsl_pool_t *dp, void *tag) +{ + dsl_pool_config_exit(dp, tag); + spa_close(dp->dp_spa, tag); +} + +void +dsl_pool_config_enter(dsl_pool_t *dp, void *tag) +{ + /* + * We use a "reentrant" reader-writer lock, but not reentrantly. + * + * The rrwlock can (with the track_all flag) track all reading threads, + * which is very useful for debugging which code path failed to release + * the lock, and for verifying that the *current* thread does hold + * the lock. + * + * (Unlike a rwlock, which knows that N threads hold it for + * read, but not *which* threads, so rw_held(RW_READER) returns TRUE + * if any thread holds it for read, even if this thread doesn't). + */ + ASSERT(!rrw_held(&dp->dp_config_rwlock, RW_READER)); + rrw_enter(&dp->dp_config_rwlock, RW_READER, tag); +} + +void +dsl_pool_config_enter_prio(dsl_pool_t *dp, void *tag) +{ + ASSERT(!rrw_held(&dp->dp_config_rwlock, RW_READER)); + rrw_enter_read_prio(&dp->dp_config_rwlock, tag); +} + +void +dsl_pool_config_exit(dsl_pool_t *dp, void *tag) +{ + rrw_exit(&dp->dp_config_rwlock, tag); +} + +boolean_t +dsl_pool_config_held(dsl_pool_t *dp) +{ + return (RRW_LOCK_HELD(&dp->dp_config_rwlock)); +} + +boolean_t +dsl_pool_config_held_writer(dsl_pool_t *dp) +{ + return (RRW_WRITE_HELD(&dp->dp_config_rwlock)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_pool_config_enter); +EXPORT_SYMBOL(dsl_pool_config_exit); + +/* zfs_dirty_data_max_percent only applied at module load in arc_init(). */ +module_param(zfs_dirty_data_max_percent, int, 0444); +MODULE_PARM_DESC(zfs_dirty_data_max_percent, "percent of ram can be dirty"); + +/* zfs_dirty_data_max_max_percent only applied at module load in arc_init(). */ +module_param(zfs_dirty_data_max_max_percent, int, 0444); +MODULE_PARM_DESC(zfs_dirty_data_max_max_percent, + "zfs_dirty_data_max upper bound as % of RAM"); + +module_param(zfs_delay_min_dirty_percent, int, 0644); +MODULE_PARM_DESC(zfs_delay_min_dirty_percent, "transaction delay threshold"); + +module_param(zfs_dirty_data_max, ulong, 0644); +MODULE_PARM_DESC(zfs_dirty_data_max, "determines the dirty space limit"); + +/* zfs_dirty_data_max_max only applied at module load in arc_init(). */ +module_param(zfs_dirty_data_max_max, ulong, 0444); +MODULE_PARM_DESC(zfs_dirty_data_max_max, + "zfs_dirty_data_max upper bound in bytes"); + +module_param(zfs_dirty_data_sync, ulong, 0644); +MODULE_PARM_DESC(zfs_dirty_data_sync, "sync txg when this much dirty data"); + +module_param(zfs_delay_scale, ulong, 0644); +MODULE_PARM_DESC(zfs_delay_scale, "how quickly delay approaches infinity"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_prop.c +++ linux-4.4.0/zfs/module/zfs/dsl_prop.c @@ -0,0 +1,1175 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 Martin Matuska. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "zfs_prop.h" + +#define ZPROP_INHERIT_SUFFIX "$inherit" +#define ZPROP_RECVD_SUFFIX "$recvd" + +static int +dodefault(const char *propname, int intsz, int numints, void *buf) +{ + zfs_prop_t prop; + + /* + * The setonce properties are read-only, BUT they still + * have a default value that can be used as the initial + * value. + */ + if ((prop = zfs_name_to_prop(propname)) == ZPROP_INVAL || + (zfs_prop_readonly(prop) && !zfs_prop_setonce(prop))) + return (SET_ERROR(ENOENT)); + + if (zfs_prop_get_type(prop) == PROP_TYPE_STRING) { + if (intsz != 1) + return (SET_ERROR(EOVERFLOW)); + (void) strncpy(buf, zfs_prop_default_string(prop), + numints); + } else { + if (intsz != 8 || numints < 1) + return (SET_ERROR(EOVERFLOW)); + + *(uint64_t *)buf = zfs_prop_default_numeric(prop); + } + + return (0); +} + +int +dsl_prop_get_dd(dsl_dir_t *dd, const char *propname, + int intsz, int numints, void *buf, char *setpoint, boolean_t snapshot) +{ + int err = ENOENT; + dsl_dir_t *target = dd; + objset_t *mos = dd->dd_pool->dp_meta_objset; + zfs_prop_t prop; + boolean_t inheritable; + boolean_t inheriting = B_FALSE; + char *inheritstr; + char *recvdstr; + + ASSERT(dsl_pool_config_held(dd->dd_pool)); + + if (setpoint) + setpoint[0] = '\0'; + + prop = zfs_name_to_prop(propname); + inheritable = (prop == ZPROP_INVAL || zfs_prop_inheritable(prop)); + inheritstr = kmem_asprintf("%s%s", propname, ZPROP_INHERIT_SUFFIX); + recvdstr = kmem_asprintf("%s%s", propname, ZPROP_RECVD_SUFFIX); + + /* + * Note: dd may become NULL, therefore we shouldn't dereference it + * after this loop. + */ + for (; dd != NULL; dd = dd->dd_parent) { + if (dd != target || snapshot) { + if (!inheritable) + break; + inheriting = B_TRUE; + } + + /* Check for a local value. */ + err = zap_lookup(mos, dsl_dir_phys(dd)->dd_props_zapobj, + propname, intsz, numints, buf); + if (err != ENOENT) { + if (setpoint != NULL && err == 0) + dsl_dir_name(dd, setpoint); + break; + } + + /* + * Skip the check for a received value if there is an explicit + * inheritance entry. + */ + err = zap_contains(mos, dsl_dir_phys(dd)->dd_props_zapobj, + inheritstr); + if (err != 0 && err != ENOENT) + break; + + if (err == ENOENT) { + /* Check for a received value. */ + err = zap_lookup(mos, dsl_dir_phys(dd)->dd_props_zapobj, + recvdstr, intsz, numints, buf); + if (err != ENOENT) { + if (setpoint != NULL && err == 0) { + if (inheriting) { + dsl_dir_name(dd, setpoint); + } else { + (void) strcpy(setpoint, + ZPROP_SOURCE_VAL_RECVD); + } + } + break; + } + } + + /* + * If we found an explicit inheritance entry, err is zero even + * though we haven't yet found the value, so reinitializing err + * at the end of the loop (instead of at the beginning) ensures + * that err has a valid post-loop value. + */ + err = SET_ERROR(ENOENT); + } + + if (err == ENOENT) + err = dodefault(propname, intsz, numints, buf); + + strfree(inheritstr); + strfree(recvdstr); + + return (err); +} + +int +dsl_prop_get_ds(dsl_dataset_t *ds, const char *propname, + int intsz, int numints, void *buf, char *setpoint) +{ + zfs_prop_t prop = zfs_name_to_prop(propname); + boolean_t inheritable; + uint64_t zapobj; + + ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool)); + inheritable = (prop == ZPROP_INVAL || zfs_prop_inheritable(prop)); + zapobj = dsl_dataset_phys(ds)->ds_props_obj; + + if (zapobj != 0) { + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + int err; + + ASSERT(ds->ds_is_snapshot); + + /* Check for a local value. */ + err = zap_lookup(mos, zapobj, propname, intsz, numints, buf); + if (err != ENOENT) { + if (setpoint != NULL && err == 0) + dsl_dataset_name(ds, setpoint); + return (err); + } + + /* + * Skip the check for a received value if there is an explicit + * inheritance entry. + */ + if (inheritable) { + char *inheritstr = kmem_asprintf("%s%s", propname, + ZPROP_INHERIT_SUFFIX); + err = zap_contains(mos, zapobj, inheritstr); + strfree(inheritstr); + if (err != 0 && err != ENOENT) + return (err); + } + + if (err == ENOENT) { + /* Check for a received value. */ + char *recvdstr = kmem_asprintf("%s%s", propname, + ZPROP_RECVD_SUFFIX); + err = zap_lookup(mos, zapobj, recvdstr, + intsz, numints, buf); + strfree(recvdstr); + if (err != ENOENT) { + if (setpoint != NULL && err == 0) + (void) strcpy(setpoint, + ZPROP_SOURCE_VAL_RECVD); + return (err); + } + } + } + + return (dsl_prop_get_dd(ds->ds_dir, propname, + intsz, numints, buf, setpoint, ds->ds_is_snapshot)); +} + +/* + * Register interest in the named property. We'll call the callback + * once to notify it of the current property value, and again each time + * the property changes, until this callback is unregistered. + * + * Return 0 on success, errno if the prop is not an integer value. + */ +int +dsl_prop_register(dsl_dataset_t *ds, const char *propname, + dsl_prop_changed_cb_t *callback, void *cbarg) +{ + dsl_dir_t *dd = ds->ds_dir; + uint64_t value; + dsl_prop_cb_record_t *cbr; + int err; + ASSERTV(dsl_pool_t *dp = dd->dd_pool); + + ASSERT(dsl_pool_config_held(dp)); + + err = dsl_prop_get_int_ds(ds, propname, &value); + if (err != 0) + return (err); + + cbr = kmem_alloc(sizeof (dsl_prop_cb_record_t), KM_SLEEP); + cbr->cbr_ds = ds; + cbr->cbr_propname = kmem_alloc(strlen(propname)+1, KM_SLEEP); + (void) strcpy((char *)cbr->cbr_propname, propname); + cbr->cbr_func = callback; + cbr->cbr_arg = cbarg; + mutex_enter(&dd->dd_lock); + list_insert_head(&dd->dd_prop_cbs, cbr); + mutex_exit(&dd->dd_lock); + + cbr->cbr_func(cbr->cbr_arg, value); + return (0); +} + +int +dsl_prop_get(const char *dsname, const char *propname, + int intsz, int numints, void *buf, char *setpoint) +{ + objset_t *os; + int error; + + error = dmu_objset_hold(dsname, FTAG, &os); + if (error != 0) + return (error); + + error = dsl_prop_get_ds(dmu_objset_ds(os), propname, + intsz, numints, buf, setpoint); + + dmu_objset_rele(os, FTAG); + return (error); +} + +/* + * Get the current property value. It may have changed by the time this + * function returns, so it is NOT safe to follow up with + * dsl_prop_register() and assume that the value has not changed in + * between. + * + * Return 0 on success, ENOENT if ddname is invalid. + */ +int +dsl_prop_get_integer(const char *ddname, const char *propname, + uint64_t *valuep, char *setpoint) +{ + return (dsl_prop_get(ddname, propname, 8, 1, valuep, setpoint)); +} + +int +dsl_prop_get_int_ds(dsl_dataset_t *ds, const char *propname, + uint64_t *valuep) +{ + return (dsl_prop_get_ds(ds, propname, 8, 1, valuep, NULL)); +} + +/* + * Predict the effective value of the given special property if it were set with + * the given value and source. This is not a general purpose function. It exists + * only to handle the special requirements of the quota and reservation + * properties. The fact that these properties are non-inheritable greatly + * simplifies the prediction logic. + * + * Returns 0 on success, a positive error code on failure, or -1 if called with + * a property not handled by this function. + */ +int +dsl_prop_predict(dsl_dir_t *dd, const char *propname, + zprop_source_t source, uint64_t value, uint64_t *newvalp) +{ + zfs_prop_t prop = zfs_name_to_prop(propname); + objset_t *mos; + uint64_t zapobj; + uint64_t version; + char *recvdstr; + int err = 0; + + switch (prop) { + case ZFS_PROP_QUOTA: + case ZFS_PROP_RESERVATION: + case ZFS_PROP_REFQUOTA: + case ZFS_PROP_REFRESERVATION: + break; + default: + return (-1); + } + + mos = dd->dd_pool->dp_meta_objset; + zapobj = dsl_dir_phys(dd)->dd_props_zapobj; + recvdstr = kmem_asprintf("%s%s", propname, ZPROP_RECVD_SUFFIX); + + version = spa_version(dd->dd_pool->dp_spa); + if (version < SPA_VERSION_RECVD_PROPS) { + if (source & ZPROP_SRC_NONE) + source = ZPROP_SRC_NONE; + else if (source & ZPROP_SRC_RECEIVED) + source = ZPROP_SRC_LOCAL; + } + + switch ((int)source) { + case ZPROP_SRC_NONE: + /* Revert to the received value, if any. */ + err = zap_lookup(mos, zapobj, recvdstr, 8, 1, newvalp); + if (err == ENOENT) + *newvalp = 0; + break; + case ZPROP_SRC_LOCAL: + *newvalp = value; + break; + case ZPROP_SRC_RECEIVED: + /* + * If there's no local setting, then the new received value will + * be the effective value. + */ + err = zap_lookup(mos, zapobj, propname, 8, 1, newvalp); + if (err == ENOENT) + *newvalp = value; + break; + case (ZPROP_SRC_NONE | ZPROP_SRC_RECEIVED): + /* + * We're clearing the received value, so the local setting (if + * it exists) remains the effective value. + */ + err = zap_lookup(mos, zapobj, propname, 8, 1, newvalp); + if (err == ENOENT) + *newvalp = 0; + break; + default: + panic("unexpected property source: %d", source); + } + + strfree(recvdstr); + + if (err == ENOENT) + return (0); + + return (err); +} + +/* + * Unregister this callback. Return 0 on success, ENOENT if ddname is + * invalid, or ENOMSG if no matching callback registered. + */ +int +dsl_prop_unregister(dsl_dataset_t *ds, const char *propname, + dsl_prop_changed_cb_t *callback, void *cbarg) +{ + dsl_dir_t *dd = ds->ds_dir; + dsl_prop_cb_record_t *cbr; + + mutex_enter(&dd->dd_lock); + for (cbr = list_head(&dd->dd_prop_cbs); + cbr; cbr = list_next(&dd->dd_prop_cbs, cbr)) { + if (cbr->cbr_ds == ds && + cbr->cbr_func == callback && + cbr->cbr_arg == cbarg && + strcmp(cbr->cbr_propname, propname) == 0) + break; + } + + if (cbr == NULL) { + mutex_exit(&dd->dd_lock); + return (SET_ERROR(ENOMSG)); + } + + list_remove(&dd->dd_prop_cbs, cbr); + mutex_exit(&dd->dd_lock); + kmem_free((void*)cbr->cbr_propname, strlen(cbr->cbr_propname)+1); + kmem_free(cbr, sizeof (dsl_prop_cb_record_t)); + + return (0); +} + +boolean_t +dsl_prop_hascb(dsl_dataset_t *ds) +{ + dsl_dir_t *dd = ds->ds_dir; + boolean_t rv = B_FALSE; + dsl_prop_cb_record_t *cbr; + + mutex_enter(&dd->dd_lock); + for (cbr = list_head(&dd->dd_prop_cbs); cbr; + cbr = list_next(&dd->dd_prop_cbs, cbr)) { + if (cbr->cbr_ds == ds) { + rv = B_TRUE; + break; + } + } + mutex_exit(&dd->dd_lock); + return (rv); +} + +/* ARGSUSED */ +static int +dsl_prop_notify_all_cb(dsl_pool_t *dp, dsl_dataset_t *ds, void *arg) +{ + dsl_dir_t *dd = ds->ds_dir; + dsl_prop_cb_record_t *cbr; + + mutex_enter(&dd->dd_lock); + for (cbr = list_head(&dd->dd_prop_cbs); cbr; + cbr = list_next(&dd->dd_prop_cbs, cbr)) { + uint64_t value; + + /* + * Callback entries do not have holds on their datasets + * so that datasets with registered callbacks are still + * eligible for eviction. Unlike operations on callbacks + * for a single dataset, we are performing a recursive + * descent of related datasets and the calling context + * for this iteration only has a dataset hold on the root. + * Without a hold, the callback's pointer to the dataset + * could be invalidated by eviction at any time. + * + * Use dsl_dataset_try_add_ref() to verify that the + * dataset has not begun eviction processing and to + * prevent eviction from occurring for the duration + * of the callback. If the hold attempt fails, this + * object is already being evicted and the callback can + * be safely ignored. + */ + if (!dsl_dataset_try_add_ref(dp, cbr->cbr_ds, FTAG)) + continue; + + if (dsl_prop_get_ds(cbr->cbr_ds, cbr->cbr_propname, + sizeof (value), 1, &value, NULL) == 0) + cbr->cbr_func(cbr->cbr_arg, value); + + dsl_dataset_rele(cbr->cbr_ds, FTAG); + } + mutex_exit(&dd->dd_lock); + + return (0); +} + +/* + * Update all property values for ddobj & its descendants. This is used + * when renaming the dir. + */ +void +dsl_prop_notify_all(dsl_dir_t *dd) +{ + dsl_pool_t *dp = dd->dd_pool; + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + (void) dmu_objset_find_dp(dp, dd->dd_object, dsl_prop_notify_all_cb, + NULL, DS_FIND_CHILDREN); +} + +static void +dsl_prop_changed_notify(dsl_pool_t *dp, uint64_t ddobj, + const char *propname, uint64_t value, int first) +{ + dsl_dir_t *dd; + dsl_prop_cb_record_t *cbr; + objset_t *mos = dp->dp_meta_objset; + zap_cursor_t zc; + zap_attribute_t *za; + int err; + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + err = dsl_dir_hold_obj(dp, ddobj, NULL, FTAG, &dd); + if (err) + return; + + if (!first) { + /* + * If the prop is set here, then this change is not + * being inherited here or below; stop the recursion. + */ + err = zap_contains(mos, dsl_dir_phys(dd)->dd_props_zapobj, + propname); + if (err == 0) { + dsl_dir_rele(dd, FTAG); + return; + } + ASSERT3U(err, ==, ENOENT); + } + + mutex_enter(&dd->dd_lock); + for (cbr = list_head(&dd->dd_prop_cbs); cbr; + cbr = list_next(&dd->dd_prop_cbs, cbr)) { + uint64_t propobj; + + /* + * cbr->cbf_ds may be invalidated due to eviction, + * requiring the use of dsl_dataset_try_add_ref(). + * See comment block in dsl_prop_notify_all_cb() + * for details. + */ + if (strcmp(cbr->cbr_propname, propname) != 0 || + !dsl_dataset_try_add_ref(dp, cbr->cbr_ds, FTAG)) + continue; + + propobj = dsl_dataset_phys(cbr->cbr_ds)->ds_props_obj; + + /* + * If the property is not set on this ds, then it is + * inherited here; call the callback. + */ + if (propobj == 0 || zap_contains(mos, propobj, propname) != 0) + cbr->cbr_func(cbr->cbr_arg, value); + + dsl_dataset_rele(cbr->cbr_ds, FTAG); + } + mutex_exit(&dd->dd_lock); + + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + for (zap_cursor_init(&zc, mos, + dsl_dir_phys(dd)->dd_child_dir_zapobj); + zap_cursor_retrieve(&zc, za) == 0; + zap_cursor_advance(&zc)) { + dsl_prop_changed_notify(dp, za->za_first_integer, + propname, value, FALSE); + } + kmem_free(za, sizeof (zap_attribute_t)); + zap_cursor_fini(&zc); + dsl_dir_rele(dd, FTAG); +} + +void +dsl_prop_set_sync_impl(dsl_dataset_t *ds, const char *propname, + zprop_source_t source, int intsz, int numints, const void *value, + dmu_tx_t *tx) +{ + objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; + uint64_t zapobj, intval, dummy; + int isint; + char valbuf[32]; + const char *valstr = NULL; + char *inheritstr; + char *recvdstr; + char *tbuf = NULL; + int err; + uint64_t version = spa_version(ds->ds_dir->dd_pool->dp_spa); + + isint = (dodefault(propname, 8, 1, &intval) == 0); + + if (ds->ds_is_snapshot) { + ASSERT(version >= SPA_VERSION_SNAP_PROPS); + if (dsl_dataset_phys(ds)->ds_props_obj == 0) { + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_dataset_phys(ds)->ds_props_obj = + zap_create(mos, + DMU_OT_DSL_PROPS, DMU_OT_NONE, 0, tx); + } + zapobj = dsl_dataset_phys(ds)->ds_props_obj; + } else { + zapobj = dsl_dir_phys(ds->ds_dir)->dd_props_zapobj; + } + + if (version < SPA_VERSION_RECVD_PROPS) { + if (source & ZPROP_SRC_NONE) + source = ZPROP_SRC_NONE; + else if (source & ZPROP_SRC_RECEIVED) + source = ZPROP_SRC_LOCAL; + } + + inheritstr = kmem_asprintf("%s%s", propname, ZPROP_INHERIT_SUFFIX); + recvdstr = kmem_asprintf("%s%s", propname, ZPROP_RECVD_SUFFIX); + + switch ((int)source) { + case ZPROP_SRC_NONE: + /* + * revert to received value, if any (inherit -S) + * - remove propname + * - remove propname$inherit + */ + err = zap_remove(mos, zapobj, propname, tx); + ASSERT(err == 0 || err == ENOENT); + err = zap_remove(mos, zapobj, inheritstr, tx); + ASSERT(err == 0 || err == ENOENT); + break; + case ZPROP_SRC_LOCAL: + /* + * remove propname$inherit + * set propname -> value + */ + err = zap_remove(mos, zapobj, inheritstr, tx); + ASSERT(err == 0 || err == ENOENT); + VERIFY0(zap_update(mos, zapobj, propname, + intsz, numints, value, tx)); + break; + case ZPROP_SRC_INHERITED: + /* + * explicitly inherit + * - remove propname + * - set propname$inherit + */ + err = zap_remove(mos, zapobj, propname, tx); + ASSERT(err == 0 || err == ENOENT); + if (version >= SPA_VERSION_RECVD_PROPS && + dsl_prop_get_int_ds(ds, ZPROP_HAS_RECVD, &dummy) == 0) { + dummy = 0; + VERIFY0(zap_update(mos, zapobj, inheritstr, + 8, 1, &dummy, tx)); + } + break; + case ZPROP_SRC_RECEIVED: + /* + * set propname$recvd -> value + */ + err = zap_update(mos, zapobj, recvdstr, + intsz, numints, value, tx); + ASSERT(err == 0); + break; + case (ZPROP_SRC_NONE | ZPROP_SRC_LOCAL | ZPROP_SRC_RECEIVED): + /* + * clear local and received settings + * - remove propname + * - remove propname$inherit + * - remove propname$recvd + */ + err = zap_remove(mos, zapobj, propname, tx); + ASSERT(err == 0 || err == ENOENT); + err = zap_remove(mos, zapobj, inheritstr, tx); + ASSERT(err == 0 || err == ENOENT); + /* FALLTHRU */ + case (ZPROP_SRC_NONE | ZPROP_SRC_RECEIVED): + /* + * remove propname$recvd + */ + err = zap_remove(mos, zapobj, recvdstr, tx); + ASSERT(err == 0 || err == ENOENT); + break; + default: + cmn_err(CE_PANIC, "unexpected property source: %d", source); + } + + strfree(inheritstr); + strfree(recvdstr); + + if (isint) { + VERIFY0(dsl_prop_get_int_ds(ds, propname, &intval)); + + if (ds->ds_is_snapshot) { + dsl_prop_cb_record_t *cbr; + /* + * It's a snapshot; nothing can inherit this + * property, so just look for callbacks on this + * ds here. + */ + mutex_enter(&ds->ds_dir->dd_lock); + for (cbr = list_head(&ds->ds_dir->dd_prop_cbs); cbr; + cbr = list_next(&ds->ds_dir->dd_prop_cbs, cbr)) { + if (cbr->cbr_ds == ds && + strcmp(cbr->cbr_propname, propname) == 0) + cbr->cbr_func(cbr->cbr_arg, intval); + } + mutex_exit(&ds->ds_dir->dd_lock); + } else { + dsl_prop_changed_notify(ds->ds_dir->dd_pool, + ds->ds_dir->dd_object, propname, intval, TRUE); + } + + (void) snprintf(valbuf, sizeof (valbuf), + "%lld", (longlong_t)intval); + valstr = valbuf; + } else { + if (source == ZPROP_SRC_LOCAL) { + valstr = value; + } else { + tbuf = kmem_alloc(ZAP_MAXVALUELEN, KM_SLEEP); + if (dsl_prop_get_ds(ds, propname, 1, + ZAP_MAXVALUELEN, tbuf, NULL) == 0) + valstr = tbuf; + } + } + + spa_history_log_internal_ds(ds, (source == ZPROP_SRC_NONE || + source == ZPROP_SRC_INHERITED) ? "inherit" : "set", tx, + "%s=%s", propname, (valstr == NULL ? "" : valstr)); + + if (tbuf != NULL) + kmem_free(tbuf, ZAP_MAXVALUELEN); +} + +int +dsl_prop_set_int(const char *dsname, const char *propname, + zprop_source_t source, uint64_t value) +{ + nvlist_t *nvl = fnvlist_alloc(); + int error; + + fnvlist_add_uint64(nvl, propname, value); + error = dsl_props_set(dsname, source, nvl); + fnvlist_free(nvl); + return (error); +} + +int +dsl_prop_set_string(const char *dsname, const char *propname, + zprop_source_t source, const char *value) +{ + nvlist_t *nvl = fnvlist_alloc(); + int error; + + fnvlist_add_string(nvl, propname, value); + error = dsl_props_set(dsname, source, nvl); + fnvlist_free(nvl); + return (error); +} + +int +dsl_prop_inherit(const char *dsname, const char *propname, + zprop_source_t source) +{ + nvlist_t *nvl = fnvlist_alloc(); + int error; + + fnvlist_add_boolean(nvl, propname); + error = dsl_props_set(dsname, source, nvl); + fnvlist_free(nvl); + return (error); +} + +typedef struct dsl_props_set_arg { + const char *dpsa_dsname; + zprop_source_t dpsa_source; + nvlist_t *dpsa_props; +} dsl_props_set_arg_t; + +static int +dsl_props_set_check(void *arg, dmu_tx_t *tx) +{ + dsl_props_set_arg_t *dpsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + uint64_t version; + nvpair_t *elem = NULL; + int err; + + err = dsl_dataset_hold(dp, dpsa->dpsa_dsname, FTAG, &ds); + if (err != 0) + return (err); + + version = spa_version(ds->ds_dir->dd_pool->dp_spa); + while ((elem = nvlist_next_nvpair(dpsa->dpsa_props, elem)) != NULL) { + if (strlen(nvpair_name(elem)) >= ZAP_MAXNAMELEN) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENAMETOOLONG)); + } + if (nvpair_type(elem) == DATA_TYPE_STRING) { + char *valstr = fnvpair_value_string(elem); + if (strlen(valstr) >= (version < + SPA_VERSION_STMF_PROP ? + ZAP_OLDMAXVALUELEN : ZAP_MAXVALUELEN)) { + dsl_dataset_rele(ds, FTAG); + return (E2BIG); + } + } + } + + if (ds->ds_is_snapshot && version < SPA_VERSION_SNAP_PROPS) { + dsl_dataset_rele(ds, FTAG); + return (SET_ERROR(ENOTSUP)); + } + dsl_dataset_rele(ds, FTAG); + return (0); +} + +void +dsl_props_set_sync_impl(dsl_dataset_t *ds, zprop_source_t source, + nvlist_t *props, dmu_tx_t *tx) +{ + nvpair_t *elem = NULL; + + while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { + nvpair_t *pair = elem; + + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + /* + * dsl_prop_get_all_impl() returns properties in this + * format. + */ + nvlist_t *attrs = fnvpair_value_nvlist(pair); + pair = fnvlist_lookup_nvpair(attrs, ZPROP_VALUE); + } + + if (nvpair_type(pair) == DATA_TYPE_STRING) { + const char *value = fnvpair_value_string(pair); + dsl_prop_set_sync_impl(ds, nvpair_name(pair), + source, 1, strlen(value) + 1, value, tx); + } else if (nvpair_type(pair) == DATA_TYPE_UINT64) { + uint64_t intval = fnvpair_value_uint64(pair); + dsl_prop_set_sync_impl(ds, nvpair_name(pair), + source, sizeof (intval), 1, &intval, tx); + } else if (nvpair_type(pair) == DATA_TYPE_BOOLEAN) { + dsl_prop_set_sync_impl(ds, nvpair_name(pair), + source, 0, 0, NULL, tx); + } else { + panic("invalid nvpair type"); + } + } +} + +static void +dsl_props_set_sync(void *arg, dmu_tx_t *tx) +{ + dsl_props_set_arg_t *dpsa = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, dpsa->dpsa_dsname, FTAG, &ds)); + dsl_props_set_sync_impl(ds, dpsa->dpsa_source, dpsa->dpsa_props, tx); + dsl_dataset_rele(ds, FTAG); +} + +/* + * All-or-nothing; if any prop can't be set, nothing will be modified. + */ +int +dsl_props_set(const char *dsname, zprop_source_t source, nvlist_t *props) +{ + dsl_props_set_arg_t dpsa; + int nblks = 0; + + dpsa.dpsa_dsname = dsname; + dpsa.dpsa_source = source; + dpsa.dpsa_props = props; + + /* + * If the source includes NONE, then we will only be removing entries + * from the ZAP object. In that case don't check for ENOSPC. + */ + if ((source & ZPROP_SRC_NONE) == 0) + nblks = 2 * fnvlist_num_pairs(props); + + return (dsl_sync_task(dsname, dsl_props_set_check, dsl_props_set_sync, + &dpsa, nblks, ZFS_SPACE_CHECK_RESERVED)); +} + +typedef enum dsl_prop_getflags { + DSL_PROP_GET_INHERITING = 0x1, /* searching parent of target ds */ + DSL_PROP_GET_SNAPSHOT = 0x2, /* snapshot dataset */ + DSL_PROP_GET_LOCAL = 0x4, /* local properties */ + DSL_PROP_GET_RECEIVED = 0x8 /* received properties */ +} dsl_prop_getflags_t; + +static int +dsl_prop_get_all_impl(objset_t *mos, uint64_t propobj, + const char *setpoint, dsl_prop_getflags_t flags, nvlist_t *nv) +{ + zap_cursor_t zc; + zap_attribute_t za; + int err = 0; + + for (zap_cursor_init(&zc, mos, propobj); + (err = zap_cursor_retrieve(&zc, &za)) == 0; + zap_cursor_advance(&zc)) { + nvlist_t *propval; + zfs_prop_t prop; + char buf[ZAP_MAXNAMELEN]; + char *valstr; + const char *suffix; + const char *propname; + const char *source; + + suffix = strchr(za.za_name, '$'); + + if (suffix == NULL) { + /* + * Skip local properties if we only want received + * properties. + */ + if (flags & DSL_PROP_GET_RECEIVED) + continue; + + propname = za.za_name; + source = setpoint; + } else if (strcmp(suffix, ZPROP_INHERIT_SUFFIX) == 0) { + /* Skip explicitly inherited entries. */ + continue; + } else if (strcmp(suffix, ZPROP_RECVD_SUFFIX) == 0) { + if (flags & DSL_PROP_GET_LOCAL) + continue; + + (void) strncpy(buf, za.za_name, (suffix - za.za_name)); + buf[suffix - za.za_name] = '\0'; + propname = buf; + + if (!(flags & DSL_PROP_GET_RECEIVED)) { + /* Skip if locally overridden. */ + err = zap_contains(mos, propobj, propname); + if (err == 0) + continue; + if (err != ENOENT) + break; + + /* Skip if explicitly inherited. */ + valstr = kmem_asprintf("%s%s", propname, + ZPROP_INHERIT_SUFFIX); + err = zap_contains(mos, propobj, valstr); + strfree(valstr); + if (err == 0) + continue; + if (err != ENOENT) + break; + } + + source = ((flags & DSL_PROP_GET_INHERITING) ? + setpoint : ZPROP_SOURCE_VAL_RECVD); + } else { + /* + * For backward compatibility, skip suffixes we don't + * recognize. + */ + continue; + } + + prop = zfs_name_to_prop(propname); + + /* Skip non-inheritable properties. */ + if ((flags & DSL_PROP_GET_INHERITING) && prop != ZPROP_INVAL && + !zfs_prop_inheritable(prop)) + continue; + + /* Skip properties not valid for this type. */ + if ((flags & DSL_PROP_GET_SNAPSHOT) && prop != ZPROP_INVAL && + !zfs_prop_valid_for_type(prop, ZFS_TYPE_SNAPSHOT, B_FALSE)) + continue; + + /* Skip properties already defined. */ + if (nvlist_exists(nv, propname)) + continue; + + VERIFY(nvlist_alloc(&propval, NV_UNIQUE_NAME, KM_SLEEP) == 0); + if (za.za_integer_length == 1) { + /* + * String property + */ + char *tmp = kmem_alloc(za.za_num_integers, + KM_SLEEP); + err = zap_lookup(mos, propobj, + za.za_name, 1, za.za_num_integers, tmp); + if (err != 0) { + kmem_free(tmp, za.za_num_integers); + break; + } + VERIFY(nvlist_add_string(propval, ZPROP_VALUE, + tmp) == 0); + kmem_free(tmp, za.za_num_integers); + } else { + /* + * Integer property + */ + ASSERT(za.za_integer_length == 8); + (void) nvlist_add_uint64(propval, ZPROP_VALUE, + za.za_first_integer); + } + + VERIFY(nvlist_add_string(propval, ZPROP_SOURCE, source) == 0); + VERIFY(nvlist_add_nvlist(nv, propname, propval) == 0); + nvlist_free(propval); + } + zap_cursor_fini(&zc); + if (err == ENOENT) + err = 0; + return (err); +} + +/* + * Iterate over all properties for this dataset and return them in an nvlist. + */ +static int +dsl_prop_get_all_ds(dsl_dataset_t *ds, nvlist_t **nvp, + dsl_prop_getflags_t flags) +{ + dsl_dir_t *dd = ds->ds_dir; + dsl_pool_t *dp = dd->dd_pool; + objset_t *mos = dp->dp_meta_objset; + int err = 0; + char setpoint[MAXNAMELEN]; + + VERIFY(nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + if (ds->ds_is_snapshot) + flags |= DSL_PROP_GET_SNAPSHOT; + + ASSERT(dsl_pool_config_held(dp)); + + if (dsl_dataset_phys(ds)->ds_props_obj != 0) { + ASSERT(flags & DSL_PROP_GET_SNAPSHOT); + dsl_dataset_name(ds, setpoint); + err = dsl_prop_get_all_impl(mos, + dsl_dataset_phys(ds)->ds_props_obj, setpoint, flags, *nvp); + if (err) + goto out; + } + + for (; dd != NULL; dd = dd->dd_parent) { + if (dd != ds->ds_dir || (flags & DSL_PROP_GET_SNAPSHOT)) { + if (flags & (DSL_PROP_GET_LOCAL | + DSL_PROP_GET_RECEIVED)) + break; + flags |= DSL_PROP_GET_INHERITING; + } + dsl_dir_name(dd, setpoint); + err = dsl_prop_get_all_impl(mos, + dsl_dir_phys(dd)->dd_props_zapobj, setpoint, flags, *nvp); + if (err) + break; + } +out: + return (err); +} + +boolean_t +dsl_prop_get_hasrecvd(const char *dsname) +{ + uint64_t dummy; + + return (0 == + dsl_prop_get_integer(dsname, ZPROP_HAS_RECVD, &dummy, NULL)); +} + +static int +dsl_prop_set_hasrecvd_impl(const char *dsname, zprop_source_t source) +{ + uint64_t version; + spa_t *spa; + int error = 0; + + VERIFY0(spa_open(dsname, &spa, FTAG)); + version = spa_version(spa); + spa_close(spa, FTAG); + + if (version >= SPA_VERSION_RECVD_PROPS) + error = dsl_prop_set_int(dsname, ZPROP_HAS_RECVD, source, 0); + return (error); +} + +/* + * Call after successfully receiving properties to ensure that only the first + * receive on or after SPA_VERSION_RECVD_PROPS blows away local properties. + */ +int +dsl_prop_set_hasrecvd(const char *dsname) +{ + int error = 0; + if (!dsl_prop_get_hasrecvd(dsname)) + error = dsl_prop_set_hasrecvd_impl(dsname, ZPROP_SRC_LOCAL); + return (error); +} + +void +dsl_prop_unset_hasrecvd(const char *dsname) +{ + VERIFY0(dsl_prop_set_hasrecvd_impl(dsname, ZPROP_SRC_NONE)); +} + +int +dsl_prop_get_all(objset_t *os, nvlist_t **nvp) +{ + return (dsl_prop_get_all_ds(os->os_dsl_dataset, nvp, 0)); +} + +int +dsl_prop_get_received(const char *dsname, nvlist_t **nvp) +{ + objset_t *os; + int error; + + /* + * Received properties are not distinguishable from local properties + * until the dataset has received properties on or after + * SPA_VERSION_RECVD_PROPS. + */ + dsl_prop_getflags_t flags = (dsl_prop_get_hasrecvd(dsname) ? + DSL_PROP_GET_RECEIVED : DSL_PROP_GET_LOCAL); + + error = dmu_objset_hold(dsname, FTAG, &os); + if (error != 0) + return (error); + error = dsl_prop_get_all_ds(os->os_dsl_dataset, nvp, flags); + dmu_objset_rele(os, FTAG); + return (error); +} + +void +dsl_prop_nvlist_add_uint64(nvlist_t *nv, zfs_prop_t prop, uint64_t value) +{ + nvlist_t *propval; + const char *propname = zfs_prop_to_name(prop); + uint64_t default_value; + + if (nvlist_lookup_nvlist(nv, propname, &propval) == 0) { + VERIFY(nvlist_add_uint64(propval, ZPROP_VALUE, value) == 0); + return; + } + + VERIFY(nvlist_alloc(&propval, NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_uint64(propval, ZPROP_VALUE, value) == 0); + /* Indicate the default source if we can. */ + if (dodefault(propname, 8, 1, &default_value) == 0 && + value == default_value) { + VERIFY(nvlist_add_string(propval, ZPROP_SOURCE, "") == 0); + } + VERIFY(nvlist_add_nvlist(nv, propname, propval) == 0); + nvlist_free(propval); +} + +void +dsl_prop_nvlist_add_string(nvlist_t *nv, zfs_prop_t prop, const char *value) +{ + nvlist_t *propval; + const char *propname = zfs_prop_to_name(prop); + + if (nvlist_lookup_nvlist(nv, propname, &propval) == 0) { + VERIFY(nvlist_add_string(propval, ZPROP_VALUE, value) == 0); + return; + } + + VERIFY(nvlist_alloc(&propval, NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_string(propval, ZPROP_VALUE, value) == 0); + VERIFY(nvlist_add_nvlist(nv, propname, propval) == 0); + nvlist_free(propval); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_prop_register); +EXPORT_SYMBOL(dsl_prop_unregister); +EXPORT_SYMBOL(dsl_prop_get); +EXPORT_SYMBOL(dsl_prop_get_integer); +EXPORT_SYMBOL(dsl_prop_get_all); +EXPORT_SYMBOL(dsl_prop_get_received); +EXPORT_SYMBOL(dsl_prop_get_ds); +EXPORT_SYMBOL(dsl_prop_get_int_ds); +EXPORT_SYMBOL(dsl_prop_get_dd); +EXPORT_SYMBOL(dsl_props_set); +EXPORT_SYMBOL(dsl_prop_set_int); +EXPORT_SYMBOL(dsl_prop_set_string); +EXPORT_SYMBOL(dsl_prop_inherit); +EXPORT_SYMBOL(dsl_prop_predict); +EXPORT_SYMBOL(dsl_prop_nvlist_add_uint64); +EXPORT_SYMBOL(dsl_prop_nvlist_add_string); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_scan.c +++ linux-4.4.0/zfs/module/zfs/dsl_scan.c @@ -0,0 +1,1907 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#endif + +typedef int (scan_cb_t)(dsl_pool_t *, const blkptr_t *, + const zbookmark_phys_t *); + +static scan_cb_t dsl_scan_scrub_cb; +static void dsl_scan_cancel_sync(void *, dmu_tx_t *); +static void dsl_scan_sync_state(dsl_scan_t *, dmu_tx_t *tx); + +int zfs_top_maxinflight = 32; /* maximum I/Os per top-level */ +int zfs_resilver_delay = 2; /* number of ticks to delay resilver */ +int zfs_scrub_delay = 4; /* number of ticks to delay scrub */ +int zfs_scan_idle = 50; /* idle window in clock ticks */ + +int zfs_scan_min_time_ms = 1000; /* min millisecs to scrub per txg */ +int zfs_free_min_time_ms = 1000; /* min millisecs to free per txg */ +int zfs_resilver_min_time_ms = 3000; /* min millisecs to resilver per txg */ +int zfs_no_scrub_io = B_FALSE; /* set to disable scrub i/o */ +int zfs_no_scrub_prefetch = B_FALSE; /* set to disable scrub prefetch */ +enum ddt_class zfs_scrub_ddt_class_max = DDT_CLASS_DUPLICATE; +int dsl_scan_delay_completion = B_FALSE; /* set to delay scan completion */ +/* max number of blocks to free in a single TXG */ +ulong zfs_free_max_blocks = 100000; + +#define DSL_SCAN_IS_SCRUB_RESILVER(scn) \ + ((scn)->scn_phys.scn_func == POOL_SCAN_SCRUB || \ + (scn)->scn_phys.scn_func == POOL_SCAN_RESILVER) + +/* the order has to match pool_scan_type */ +static scan_cb_t *scan_funcs[POOL_SCAN_FUNCS] = { + NULL, + dsl_scan_scrub_cb, /* POOL_SCAN_SCRUB */ + dsl_scan_scrub_cb, /* POOL_SCAN_RESILVER */ +}; + +int +dsl_scan_init(dsl_pool_t *dp, uint64_t txg) +{ + int err; + dsl_scan_t *scn; + spa_t *spa = dp->dp_spa; + uint64_t f; + + scn = dp->dp_scan = kmem_zalloc(sizeof (dsl_scan_t), KM_SLEEP); + scn->scn_dp = dp; + + /* + * It's possible that we're resuming a scan after a reboot so + * make sure that the scan_async_destroying flag is initialized + * appropriately. + */ + ASSERT(!scn->scn_async_destroying); + scn->scn_async_destroying = spa_feature_is_active(dp->dp_spa, + SPA_FEATURE_ASYNC_DESTROY); + + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + "scrub_func", sizeof (uint64_t), 1, &f); + if (err == 0) { + /* + * There was an old-style scrub in progress. Restart a + * new-style scrub from the beginning. + */ + scn->scn_restart_txg = txg; + zfs_dbgmsg("old-style scrub was in progress; " + "restarting new-style scrub in txg %llu", + scn->scn_restart_txg); + + /* + * Load the queue obj from the old location so that it + * can be freed by dsl_scan_done(). + */ + (void) zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + "scrub_queue", sizeof (uint64_t), 1, + &scn->scn_phys.scn_queue_obj); + } else { + err = zap_lookup(dp->dp_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_SCAN, sizeof (uint64_t), SCAN_PHYS_NUMINTS, + &scn->scn_phys); + /* + * Detect if the pool contains the signature of #2094. If it + * does properly update the scn->scn_phys structure and notify + * the administrator by setting an errata for the pool. + */ + if (err == EOVERFLOW) { + uint64_t zaptmp[SCAN_PHYS_NUMINTS + 1]; + VERIFY3S(SCAN_PHYS_NUMINTS, ==, 24); + VERIFY3S(offsetof(dsl_scan_phys_t, scn_flags), ==, + (23 * sizeof (uint64_t))); + + err = zap_lookup(dp->dp_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_SCAN, + sizeof (uint64_t), SCAN_PHYS_NUMINTS + 1, &zaptmp); + if (err == 0) { + uint64_t overflow = zaptmp[SCAN_PHYS_NUMINTS]; + + if (overflow & ~DSL_SCAN_FLAGS_MASK || + scn->scn_async_destroying) { + spa->spa_errata = + ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY; + return (EOVERFLOW); + } + + bcopy(zaptmp, &scn->scn_phys, + SCAN_PHYS_NUMINTS * sizeof (uint64_t)); + scn->scn_phys.scn_flags = overflow; + + /* Required scrub already in progress. */ + if (scn->scn_phys.scn_state == DSS_FINISHED || + scn->scn_phys.scn_state == DSS_CANCELED) + spa->spa_errata = + ZPOOL_ERRATA_ZOL_2094_SCRUB; + } + } + + if (err == ENOENT) + return (0); + else if (err) + return (err); + + if (scn->scn_phys.scn_state == DSS_SCANNING && + spa_prev_software_version(dp->dp_spa) < SPA_VERSION_SCAN) { + /* + * A new-type scrub was in progress on an old + * pool, and the pool was accessed by old + * software. Restart from the beginning, since + * the old software may have changed the pool in + * the meantime. + */ + scn->scn_restart_txg = txg; + zfs_dbgmsg("new-style scrub was modified " + "by old software; restarting in txg %llu", + scn->scn_restart_txg); + } + } + + spa_scan_stat_init(spa); + return (0); +} + +void +dsl_scan_fini(dsl_pool_t *dp) +{ + if (dp->dp_scan) { + kmem_free(dp->dp_scan, sizeof (dsl_scan_t)); + dp->dp_scan = NULL; + } +} + +/* ARGSUSED */ +static int +dsl_scan_setup_check(void *arg, dmu_tx_t *tx) +{ + dsl_scan_t *scn = dmu_tx_pool(tx)->dp_scan; + + if (scn->scn_phys.scn_state == DSS_SCANNING) + return (SET_ERROR(EBUSY)); + + return (0); +} + +static void +dsl_scan_setup_sync(void *arg, dmu_tx_t *tx) +{ + dsl_scan_t *scn = dmu_tx_pool(tx)->dp_scan; + pool_scan_func_t *funcp = arg; + dmu_object_type_t ot = 0; + dsl_pool_t *dp = scn->scn_dp; + spa_t *spa = dp->dp_spa; + + ASSERT(scn->scn_phys.scn_state != DSS_SCANNING); + ASSERT(*funcp > POOL_SCAN_NONE && *funcp < POOL_SCAN_FUNCS); + bzero(&scn->scn_phys, sizeof (scn->scn_phys)); + scn->scn_phys.scn_func = *funcp; + scn->scn_phys.scn_state = DSS_SCANNING; + scn->scn_phys.scn_min_txg = 0; + scn->scn_phys.scn_max_txg = tx->tx_txg; + scn->scn_phys.scn_ddt_class_max = DDT_CLASSES - 1; /* the entire DDT */ + scn->scn_phys.scn_start_time = gethrestime_sec(); + scn->scn_phys.scn_errors = 0; + scn->scn_phys.scn_to_examine = spa->spa_root_vdev->vdev_stat.vs_alloc; + scn->scn_restart_txg = 0; + scn->scn_done_txg = 0; + spa_scan_stat_init(spa); + + if (DSL_SCAN_IS_SCRUB_RESILVER(scn)) { + scn->scn_phys.scn_ddt_class_max = zfs_scrub_ddt_class_max; + + /* rewrite all disk labels */ + vdev_config_dirty(spa->spa_root_vdev); + + if (vdev_resilver_needed(spa->spa_root_vdev, + &scn->scn_phys.scn_min_txg, &scn->scn_phys.scn_max_txg)) { + spa_event_notify(spa, NULL, + FM_EREPORT_ZFS_RESILVER_START); + } else { + spa_event_notify(spa, NULL, + FM_EREPORT_ZFS_SCRUB_START); + } + + spa->spa_scrub_started = B_TRUE; + /* + * If this is an incremental scrub, limit the DDT scrub phase + * to just the auto-ditto class (for correctness); the rest + * of the scrub should go faster using top-down pruning. + */ + if (scn->scn_phys.scn_min_txg > TXG_INITIAL) + scn->scn_phys.scn_ddt_class_max = DDT_CLASS_DITTO; + + } + + /* back to the generic stuff */ + + if (dp->dp_blkstats == NULL) { + dp->dp_blkstats = + vmem_alloc(sizeof (zfs_all_blkstats_t), KM_SLEEP); + } + bzero(dp->dp_blkstats, sizeof (zfs_all_blkstats_t)); + + if (spa_version(spa) < SPA_VERSION_DSL_SCRUB) + ot = DMU_OT_ZAP_OTHER; + + scn->scn_phys.scn_queue_obj = zap_create(dp->dp_meta_objset, + ot ? ot : DMU_OT_SCAN_QUEUE, DMU_OT_NONE, 0, tx); + + dsl_scan_sync_state(scn, tx); + + spa_history_log_internal(spa, "scan setup", tx, + "func=%u mintxg=%llu maxtxg=%llu", + *funcp, scn->scn_phys.scn_min_txg, scn->scn_phys.scn_max_txg); +} + +/* ARGSUSED */ +static void +dsl_scan_done(dsl_scan_t *scn, boolean_t complete, dmu_tx_t *tx) +{ + static const char *old_names[] = { + "scrub_bookmark", + "scrub_ddt_bookmark", + "scrub_ddt_class_max", + "scrub_queue", + "scrub_min_txg", + "scrub_max_txg", + "scrub_func", + "scrub_errors", + NULL + }; + + dsl_pool_t *dp = scn->scn_dp; + spa_t *spa = dp->dp_spa; + int i; + + /* Remove any remnants of an old-style scrub. */ + for (i = 0; old_names[i]; i++) { + (void) zap_remove(dp->dp_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, old_names[i], tx); + } + + if (scn->scn_phys.scn_queue_obj != 0) { + VERIFY(0 == dmu_object_free(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, tx)); + scn->scn_phys.scn_queue_obj = 0; + } + + /* + * If we were "restarted" from a stopped state, don't bother + * with anything else. + */ + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + if (complete) + scn->scn_phys.scn_state = DSS_FINISHED; + else + scn->scn_phys.scn_state = DSS_CANCELED; + + spa_history_log_internal(spa, "scan done", tx, + "complete=%u", complete); + + if (DSL_SCAN_IS_SCRUB_RESILVER(scn)) { + mutex_enter(&spa->spa_scrub_lock); + while (spa->spa_scrub_inflight > 0) { + cv_wait(&spa->spa_scrub_io_cv, + &spa->spa_scrub_lock); + } + mutex_exit(&spa->spa_scrub_lock); + spa->spa_scrub_started = B_FALSE; + spa->spa_scrub_active = B_FALSE; + + /* + * If the scrub/resilver completed, update all DTLs to + * reflect this. Whether it succeeded or not, vacate + * all temporary scrub DTLs. + */ + vdev_dtl_reassess(spa->spa_root_vdev, tx->tx_txg, + complete ? scn->scn_phys.scn_max_txg : 0, B_TRUE); + if (complete) { + spa_event_notify(spa, NULL, scn->scn_phys.scn_min_txg ? + FM_EREPORT_ZFS_RESILVER_FINISH : + FM_EREPORT_ZFS_SCRUB_FINISH); + } + spa_errlog_rotate(spa); + + /* + * We may have finished replacing a device. + * Let the async thread assess this and handle the detach. + */ + spa_async_request(spa, SPA_ASYNC_RESILVER_DONE); + } + + scn->scn_phys.scn_end_time = gethrestime_sec(); + + if (spa->spa_errata == ZPOOL_ERRATA_ZOL_2094_SCRUB) + spa->spa_errata = 0; +} + +/* ARGSUSED */ +static int +dsl_scan_cancel_check(void *arg, dmu_tx_t *tx) +{ + dsl_scan_t *scn = dmu_tx_pool(tx)->dp_scan; + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return (SET_ERROR(ENOENT)); + return (0); +} + +/* ARGSUSED */ +static void +dsl_scan_cancel_sync(void *arg, dmu_tx_t *tx) +{ + dsl_scan_t *scn = dmu_tx_pool(tx)->dp_scan; + + dsl_scan_done(scn, B_FALSE, tx); + dsl_scan_sync_state(scn, tx); +} + +int +dsl_scan_cancel(dsl_pool_t *dp) +{ + return (dsl_sync_task(spa_name(dp->dp_spa), dsl_scan_cancel_check, + dsl_scan_cancel_sync, NULL, 3, ZFS_SPACE_CHECK_RESERVED)); +} + +static void dsl_scan_visitbp(blkptr_t *bp, const zbookmark_phys_t *zb, + dnode_phys_t *dnp, dsl_dataset_t *ds, dsl_scan_t *scn, + dmu_objset_type_t ostype, dmu_tx_t *tx); +inline __attribute__((always_inline)) static void dsl_scan_visitdnode( + dsl_scan_t *, dsl_dataset_t *ds, dmu_objset_type_t ostype, + dnode_phys_t *dnp, uint64_t object, dmu_tx_t *tx); + +void +dsl_free(dsl_pool_t *dp, uint64_t txg, const blkptr_t *bp) +{ + zio_free(dp->dp_spa, txg, bp); +} + +void +dsl_free_sync(zio_t *pio, dsl_pool_t *dp, uint64_t txg, const blkptr_t *bpp) +{ + ASSERT(dsl_pool_sync_context(dp)); + zio_nowait(zio_free_sync(pio, dp->dp_spa, txg, bpp, pio->io_flags)); +} + +static uint64_t +dsl_scan_ds_maxtxg(dsl_dataset_t *ds) +{ + uint64_t smt = ds->ds_dir->dd_pool->dp_scan->scn_phys.scn_max_txg; + if (ds->ds_is_snapshot) + return (MIN(smt, dsl_dataset_phys(ds)->ds_creation_txg)); + return (smt); +} + +static void +dsl_scan_sync_state(dsl_scan_t *scn, dmu_tx_t *tx) +{ + VERIFY0(zap_update(scn->scn_dp->dp_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_SCAN, sizeof (uint64_t), SCAN_PHYS_NUMINTS, + &scn->scn_phys, tx)); +} + +extern int zfs_vdev_async_write_active_min_dirty_percent; + +static boolean_t +dsl_scan_check_pause(dsl_scan_t *scn, const zbookmark_phys_t *zb) +{ + uint64_t elapsed_nanosecs; + int mintime; + int dirty_pct; + + /* we never skip user/group accounting objects */ + if (zb && (int64_t)zb->zb_object < 0) + return (B_FALSE); + + if (scn->scn_pausing) + return (B_TRUE); /* we're already pausing */ + + if (!ZB_IS_ZERO(&scn->scn_phys.scn_bookmark)) + return (B_FALSE); /* we're resuming */ + + /* We only know how to resume from level-0 blocks. */ + if (zb && zb->zb_level != 0) + return (B_FALSE); + + /* + * We pause if: + * - we have scanned for the maximum time: an entire txg + * timeout (default 5 sec) + * or + * - we have scanned for at least the minimum time (default 1 sec + * for scrub, 3 sec for resilver), and either we have sufficient + * dirty data that we are starting to write more quickly + * (default 30%), or someone is explicitly waiting for this txg + * to complete. + * or + * - the spa is shutting down because this pool is being exported + * or the machine is rebooting. + */ + mintime = (scn->scn_phys.scn_func == POOL_SCAN_RESILVER) ? + zfs_resilver_min_time_ms : zfs_scan_min_time_ms; + elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; + dirty_pct = scn->scn_dp->dp_dirty_total * 100 / zfs_dirty_data_max; + if (elapsed_nanosecs / NANOSEC >= zfs_txg_timeout || + (NSEC2MSEC(elapsed_nanosecs) > mintime && + (txg_sync_waiting(scn->scn_dp) || + dirty_pct >= zfs_vdev_async_write_active_min_dirty_percent)) || + spa_shutting_down(scn->scn_dp->dp_spa)) { + if (zb) { + dprintf("pausing at bookmark %llx/%llx/%llx/%llx\n", + (longlong_t)zb->zb_objset, + (longlong_t)zb->zb_object, + (longlong_t)zb->zb_level, + (longlong_t)zb->zb_blkid); + scn->scn_phys.scn_bookmark = *zb; + } + dprintf("pausing at DDT bookmark %llx/%llx/%llx/%llx\n", + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_class, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_type, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_checksum, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_cursor); + scn->scn_pausing = B_TRUE; + return (B_TRUE); + } + return (B_FALSE); +} + +typedef struct zil_scan_arg { + dsl_pool_t *zsa_dp; + zil_header_t *zsa_zh; +} zil_scan_arg_t; + +/* ARGSUSED */ +static int +dsl_scan_zil_block(zilog_t *zilog, blkptr_t *bp, void *arg, uint64_t claim_txg) +{ + zil_scan_arg_t *zsa = arg; + dsl_pool_t *dp = zsa->zsa_dp; + dsl_scan_t *scn = dp->dp_scan; + zil_header_t *zh = zsa->zsa_zh; + zbookmark_phys_t zb; + + if (BP_IS_HOLE(bp) || bp->blk_birth <= scn->scn_phys.scn_cur_min_txg) + return (0); + + /* + * One block ("stubby") can be allocated a long time ago; we + * want to visit that one because it has been allocated + * (on-disk) even if it hasn't been claimed (even though for + * scrub there's nothing to do to it). + */ + if (claim_txg == 0 && bp->blk_birth >= spa_first_txg(dp->dp_spa)) + return (0); + + SET_BOOKMARK(&zb, zh->zh_log.blk_cksum.zc_word[ZIL_ZC_OBJSET], + ZB_ZIL_OBJECT, ZB_ZIL_LEVEL, bp->blk_cksum.zc_word[ZIL_ZC_SEQ]); + + VERIFY(0 == scan_funcs[scn->scn_phys.scn_func](dp, bp, &zb)); + return (0); +} + +/* ARGSUSED */ +static int +dsl_scan_zil_record(zilog_t *zilog, lr_t *lrc, void *arg, uint64_t claim_txg) +{ + if (lrc->lrc_txtype == TX_WRITE) { + zil_scan_arg_t *zsa = arg; + dsl_pool_t *dp = zsa->zsa_dp; + dsl_scan_t *scn = dp->dp_scan; + zil_header_t *zh = zsa->zsa_zh; + lr_write_t *lr = (lr_write_t *)lrc; + blkptr_t *bp = &lr->lr_blkptr; + zbookmark_phys_t zb; + + if (BP_IS_HOLE(bp) || + bp->blk_birth <= scn->scn_phys.scn_cur_min_txg) + return (0); + + /* + * birth can be < claim_txg if this record's txg is + * already txg sync'ed (but this log block contains + * other records that are not synced) + */ + if (claim_txg == 0 || bp->blk_birth < claim_txg) + return (0); + + SET_BOOKMARK(&zb, zh->zh_log.blk_cksum.zc_word[ZIL_ZC_OBJSET], + lr->lr_foid, ZB_ZIL_LEVEL, + lr->lr_offset / BP_GET_LSIZE(bp)); + + VERIFY(0 == scan_funcs[scn->scn_phys.scn_func](dp, bp, &zb)); + } + return (0); +} + +static void +dsl_scan_zil(dsl_pool_t *dp, zil_header_t *zh) +{ + uint64_t claim_txg = zh->zh_claim_txg; + zil_scan_arg_t zsa = { dp, zh }; + zilog_t *zilog; + + /* + * We only want to visit blocks that have been claimed but not yet + * replayed (or, in read-only mode, blocks that *would* be claimed). + */ + if (claim_txg == 0 && spa_writeable(dp->dp_spa)) + return; + + zilog = zil_alloc(dp->dp_meta_objset, zh); + + (void) zil_parse(zilog, dsl_scan_zil_block, dsl_scan_zil_record, &zsa, + claim_txg); + + zil_free(zilog); +} + +/* ARGSUSED */ +static void +dsl_scan_prefetch(dsl_scan_t *scn, arc_buf_t *buf, blkptr_t *bp, + uint64_t objset, uint64_t object, uint64_t blkid) +{ + zbookmark_phys_t czb; + arc_flags_t flags = ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; + + if (zfs_no_scrub_prefetch) + return; + + if (BP_IS_HOLE(bp) || bp->blk_birth <= scn->scn_phys.scn_min_txg || + (BP_GET_LEVEL(bp) == 0 && BP_GET_TYPE(bp) != DMU_OT_DNODE)) + return; + + SET_BOOKMARK(&czb, objset, object, BP_GET_LEVEL(bp), blkid); + + (void) arc_read(scn->scn_zio_root, scn->scn_dp->dp_spa, bp, + NULL, NULL, ZIO_PRIORITY_ASYNC_READ, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SCAN_THREAD, &flags, &czb); +} + +static boolean_t +dsl_scan_check_resume(dsl_scan_t *scn, const dnode_phys_t *dnp, + const zbookmark_phys_t *zb) +{ + /* + * We never skip over user/group accounting objects (obj<0) + */ + if (!ZB_IS_ZERO(&scn->scn_phys.scn_bookmark) && + (int64_t)zb->zb_object >= 0) { + /* + * If we already visited this bp & everything below (in + * a prior txg sync), don't bother doing it again. + */ + if (zbookmark_is_before(dnp, zb, &scn->scn_phys.scn_bookmark)) + return (B_TRUE); + + /* + * If we found the block we're trying to resume from, or + * we went past it to a different object, zero it out to + * indicate that it's OK to start checking for pausing + * again. + */ + if (bcmp(zb, &scn->scn_phys.scn_bookmark, sizeof (*zb)) == 0 || + zb->zb_object > scn->scn_phys.scn_bookmark.zb_object) { + dprintf("resuming at %llx/%llx/%llx/%llx\n", + (longlong_t)zb->zb_objset, + (longlong_t)zb->zb_object, + (longlong_t)zb->zb_level, + (longlong_t)zb->zb_blkid); + bzero(&scn->scn_phys.scn_bookmark, sizeof (*zb)); + } + } + return (B_FALSE); +} + +/* + * Return nonzero on i/o error. + * Return new buf to write out in *bufp. + */ +inline __attribute__((always_inline)) static int +dsl_scan_recurse(dsl_scan_t *scn, dsl_dataset_t *ds, dmu_objset_type_t ostype, + dnode_phys_t *dnp, const blkptr_t *bp, + const zbookmark_phys_t *zb, dmu_tx_t *tx) +{ + dsl_pool_t *dp = scn->scn_dp; + int zio_flags = ZIO_FLAG_CANFAIL | ZIO_FLAG_SCAN_THREAD; + int err; + + if (BP_GET_LEVEL(bp) > 0) { + arc_flags_t flags = ARC_FLAG_WAIT; + int i; + blkptr_t *cbp; + int epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT; + arc_buf_t *buf; + + err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, zio_flags, &flags, zb); + if (err) { + scn->scn_phys.scn_errors++; + return (err); + } + for (i = 0, cbp = buf->b_data; i < epb; i++, cbp++) { + dsl_scan_prefetch(scn, buf, cbp, zb->zb_objset, + zb->zb_object, zb->zb_blkid * epb + i); + } + for (i = 0, cbp = buf->b_data; i < epb; i++, cbp++) { + zbookmark_phys_t czb; + + SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_object, + zb->zb_level - 1, + zb->zb_blkid * epb + i); + dsl_scan_visitbp(cbp, &czb, dnp, + ds, scn, ostype, tx); + } + (void) arc_buf_remove_ref(buf, &buf); + } else if (BP_GET_TYPE(bp) == DMU_OT_DNODE) { + arc_flags_t flags = ARC_FLAG_WAIT; + dnode_phys_t *cdnp; + int i, j; + int epb = BP_GET_LSIZE(bp) >> DNODE_SHIFT; + arc_buf_t *buf; + + err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, zio_flags, &flags, zb); + if (err) { + scn->scn_phys.scn_errors++; + return (err); + } + for (i = 0, cdnp = buf->b_data; i < epb; i++, cdnp++) { + for (j = 0; j < cdnp->dn_nblkptr; j++) { + blkptr_t *cbp = &cdnp->dn_blkptr[j]; + dsl_scan_prefetch(scn, buf, cbp, + zb->zb_objset, zb->zb_blkid * epb + i, j); + } + } + for (i = 0, cdnp = buf->b_data; i < epb; i++, cdnp++) { + dsl_scan_visitdnode(scn, ds, ostype, + cdnp, zb->zb_blkid * epb + i, tx); + } + + (void) arc_buf_remove_ref(buf, &buf); + } else if (BP_GET_TYPE(bp) == DMU_OT_OBJSET) { + arc_flags_t flags = ARC_FLAG_WAIT; + objset_phys_t *osp; + arc_buf_t *buf; + + err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, &buf, + ZIO_PRIORITY_ASYNC_READ, zio_flags, &flags, zb); + if (err) { + scn->scn_phys.scn_errors++; + return (err); + } + + osp = buf->b_data; + + dsl_scan_visitdnode(scn, ds, osp->os_type, + &osp->os_meta_dnode, DMU_META_DNODE_OBJECT, tx); + + if (OBJSET_BUF_HAS_USERUSED(buf)) { + /* + * We also always visit user/group accounting + * objects, and never skip them, even if we are + * pausing. This is necessary so that the space + * deltas from this txg get integrated. + */ + dsl_scan_visitdnode(scn, ds, osp->os_type, + &osp->os_groupused_dnode, + DMU_GROUPUSED_OBJECT, tx); + dsl_scan_visitdnode(scn, ds, osp->os_type, + &osp->os_userused_dnode, + DMU_USERUSED_OBJECT, tx); + } + (void) arc_buf_remove_ref(buf, &buf); + } + + return (0); +} + +inline __attribute__((always_inline)) static void +dsl_scan_visitdnode(dsl_scan_t *scn, dsl_dataset_t *ds, + dmu_objset_type_t ostype, dnode_phys_t *dnp, + uint64_t object, dmu_tx_t *tx) +{ + int j; + + for (j = 0; j < dnp->dn_nblkptr; j++) { + zbookmark_phys_t czb; + + SET_BOOKMARK(&czb, ds ? ds->ds_object : 0, object, + dnp->dn_nlevels - 1, j); + dsl_scan_visitbp(&dnp->dn_blkptr[j], + &czb, dnp, ds, scn, ostype, tx); + } + + if (dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) { + zbookmark_phys_t czb; + SET_BOOKMARK(&czb, ds ? ds->ds_object : 0, object, + 0, DMU_SPILL_BLKID); + dsl_scan_visitbp(&dnp->dn_spill, + &czb, dnp, ds, scn, ostype, tx); + } +} + +/* + * The arguments are in this order because mdb can only print the + * first 5; we want them to be useful. + */ +static void +dsl_scan_visitbp(blkptr_t *bp, const zbookmark_phys_t *zb, + dnode_phys_t *dnp, dsl_dataset_t *ds, dsl_scan_t *scn, + dmu_objset_type_t ostype, dmu_tx_t *tx) +{ + dsl_pool_t *dp = scn->scn_dp; + blkptr_t *bp_toread; + + bp_toread = kmem_alloc(sizeof (blkptr_t), KM_SLEEP); + *bp_toread = *bp; + + /* ASSERT(pbuf == NULL || arc_released(pbuf)); */ + + if (dsl_scan_check_pause(scn, zb)) + goto out; + + if (dsl_scan_check_resume(scn, dnp, zb)) + goto out; + + if (BP_IS_HOLE(bp)) + goto out; + + scn->scn_visited_this_txg++; + + /* + * This debugging is commented out to conserve stack space. This + * function is called recursively and the debugging addes several + * bytes to the stack for each call. It can be commented back in + * if required to debug an issue in dsl_scan_visitbp(). + * + * dprintf_bp(bp, + * "visiting ds=%p/%llu zb=%llx/%llx/%llx/%llx bp=%p", + * ds, ds ? ds->ds_object : 0, + * zb->zb_objset, zb->zb_object, zb->zb_level, zb->zb_blkid, + * bp); + */ + + if (bp->blk_birth <= scn->scn_phys.scn_cur_min_txg) + goto out; + + if (dsl_scan_recurse(scn, ds, ostype, dnp, bp_toread, zb, tx) != 0) + goto out; + + /* + * If dsl_scan_ddt() has aready visited this block, it will have + * already done any translations or scrubbing, so don't call the + * callback again. + */ + if (ddt_class_contains(dp->dp_spa, + scn->scn_phys.scn_ddt_class_max, bp)) { + goto out; + } + + /* + * If this block is from the future (after cur_max_txg), then we + * are doing this on behalf of a deleted snapshot, and we will + * revisit the future block on the next pass of this dataset. + * Don't scan it now unless we need to because something + * under it was modified. + */ + if (BP_PHYSICAL_BIRTH(bp) <= scn->scn_phys.scn_cur_max_txg) { + scan_funcs[scn->scn_phys.scn_func](dp, bp, zb); + } +out: + kmem_free(bp_toread, sizeof (blkptr_t)); +} + +static void +dsl_scan_visit_rootbp(dsl_scan_t *scn, dsl_dataset_t *ds, blkptr_t *bp, + dmu_tx_t *tx) +{ + zbookmark_phys_t zb; + + SET_BOOKMARK(&zb, ds ? ds->ds_object : DMU_META_OBJSET, + ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); + dsl_scan_visitbp(bp, &zb, NULL, + ds, scn, DMU_OST_NONE, tx); + + dprintf_ds(ds, "finished scan%s", ""); +} + +void +dsl_scan_ds_destroyed(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + dsl_scan_t *scn = dp->dp_scan; + uint64_t mintxg; + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + if (scn->scn_phys.scn_bookmark.zb_objset == ds->ds_object) { + if (ds->ds_is_snapshot) { + /* Note, scn_cur_{min,max}_txg stays the same. */ + scn->scn_phys.scn_bookmark.zb_objset = + dsl_dataset_phys(ds)->ds_next_snap_obj; + zfs_dbgmsg("destroying ds %llu; currently traversing; " + "reset zb_objset to %llu", + (u_longlong_t)ds->ds_object, + (u_longlong_t)dsl_dataset_phys(ds)-> + ds_next_snap_obj); + scn->scn_phys.scn_flags |= DSF_VISIT_DS_AGAIN; + } else { + SET_BOOKMARK(&scn->scn_phys.scn_bookmark, + ZB_DESTROYED_OBJSET, 0, 0, 0); + zfs_dbgmsg("destroying ds %llu; currently traversing; " + "reset bookmark to -1,0,0,0", + (u_longlong_t)ds->ds_object); + } + } else if (zap_lookup_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, &mintxg) == 0) { + ASSERT3U(dsl_dataset_phys(ds)->ds_num_children, <=, 1); + VERIFY3U(0, ==, zap_remove_int(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, tx)); + if (ds->ds_is_snapshot) { + /* + * We keep the same mintxg; it could be > + * ds_creation_txg if the previous snapshot was + * deleted too. + */ + VERIFY(zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, + dsl_dataset_phys(ds)->ds_next_snap_obj, + mintxg, tx) == 0); + zfs_dbgmsg("destroying ds %llu; in queue; " + "replacing with %llu", + (u_longlong_t)ds->ds_object, + (u_longlong_t)dsl_dataset_phys(ds)-> + ds_next_snap_obj); + } else { + zfs_dbgmsg("destroying ds %llu; in queue; removing", + (u_longlong_t)ds->ds_object); + } + } else { + zfs_dbgmsg("destroying ds %llu; ignoring", + (u_longlong_t)ds->ds_object); + } + + /* + * dsl_scan_sync() should be called after this, and should sync + * out our changed state, but just to be safe, do it here. + */ + dsl_scan_sync_state(scn, tx); +} + +void +dsl_scan_ds_snapshotted(dsl_dataset_t *ds, dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + dsl_scan_t *scn = dp->dp_scan; + uint64_t mintxg; + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + ASSERT(dsl_dataset_phys(ds)->ds_prev_snap_obj != 0); + + if (scn->scn_phys.scn_bookmark.zb_objset == ds->ds_object) { + scn->scn_phys.scn_bookmark.zb_objset = + dsl_dataset_phys(ds)->ds_prev_snap_obj; + zfs_dbgmsg("snapshotting ds %llu; currently traversing; " + "reset zb_objset to %llu", + (u_longlong_t)ds->ds_object, + (u_longlong_t)dsl_dataset_phys(ds)->ds_prev_snap_obj); + } else if (zap_lookup_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, &mintxg) == 0) { + VERIFY3U(0, ==, zap_remove_int(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, tx)); + VERIFY(zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, + dsl_dataset_phys(ds)->ds_prev_snap_obj, mintxg, tx) == 0); + zfs_dbgmsg("snapshotting ds %llu; in queue; " + "replacing with %llu", + (u_longlong_t)ds->ds_object, + (u_longlong_t)dsl_dataset_phys(ds)->ds_prev_snap_obj); + } + dsl_scan_sync_state(scn, tx); +} + +void +dsl_scan_ds_clone_swapped(dsl_dataset_t *ds1, dsl_dataset_t *ds2, dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds1->ds_dir->dd_pool; + dsl_scan_t *scn = dp->dp_scan; + uint64_t mintxg; + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + if (scn->scn_phys.scn_bookmark.zb_objset == ds1->ds_object) { + scn->scn_phys.scn_bookmark.zb_objset = ds2->ds_object; + zfs_dbgmsg("clone_swap ds %llu; currently traversing; " + "reset zb_objset to %llu", + (u_longlong_t)ds1->ds_object, + (u_longlong_t)ds2->ds_object); + } else if (scn->scn_phys.scn_bookmark.zb_objset == ds2->ds_object) { + scn->scn_phys.scn_bookmark.zb_objset = ds1->ds_object; + zfs_dbgmsg("clone_swap ds %llu; currently traversing; " + "reset zb_objset to %llu", + (u_longlong_t)ds2->ds_object, + (u_longlong_t)ds1->ds_object); + } + + if (zap_lookup_int_key(dp->dp_meta_objset, scn->scn_phys.scn_queue_obj, + ds1->ds_object, &mintxg) == 0) { + int err; + + ASSERT3U(mintxg, ==, dsl_dataset_phys(ds1)->ds_prev_snap_txg); + ASSERT3U(mintxg, ==, dsl_dataset_phys(ds2)->ds_prev_snap_txg); + VERIFY3U(0, ==, zap_remove_int(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds1->ds_object, tx)); + err = zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds2->ds_object, mintxg, tx); + VERIFY(err == 0 || err == EEXIST); + if (err == EEXIST) { + /* Both were there to begin with */ + VERIFY(0 == zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, + ds1->ds_object, mintxg, tx)); + } + zfs_dbgmsg("clone_swap ds %llu; in queue; " + "replacing with %llu", + (u_longlong_t)ds1->ds_object, + (u_longlong_t)ds2->ds_object); + } else if (zap_lookup_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds2->ds_object, &mintxg) == 0) { + ASSERT3U(mintxg, ==, dsl_dataset_phys(ds1)->ds_prev_snap_txg); + ASSERT3U(mintxg, ==, dsl_dataset_phys(ds2)->ds_prev_snap_txg); + VERIFY3U(0, ==, zap_remove_int(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds2->ds_object, tx)); + VERIFY(0 == zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds1->ds_object, mintxg, tx)); + zfs_dbgmsg("clone_swap ds %llu; in queue; " + "replacing with %llu", + (u_longlong_t)ds2->ds_object, + (u_longlong_t)ds1->ds_object); + } + + dsl_scan_sync_state(scn, tx); +} + +struct enqueue_clones_arg { + dmu_tx_t *tx; + uint64_t originobj; +}; + +/* ARGSUSED */ +static int +enqueue_clones_cb(dsl_pool_t *dp, dsl_dataset_t *hds, void *arg) +{ + struct enqueue_clones_arg *eca = arg; + dsl_dataset_t *ds; + int err; + dsl_scan_t *scn = dp->dp_scan; + + if (dsl_dir_phys(hds->ds_dir)->dd_origin_obj != eca->originobj) + return (0); + + err = dsl_dataset_hold_obj(dp, hds->ds_object, FTAG, &ds); + if (err) + return (err); + + while (dsl_dataset_phys(ds)->ds_prev_snap_obj != eca->originobj) { + dsl_dataset_t *prev; + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, FTAG, &prev); + + dsl_dataset_rele(ds, FTAG); + if (err) + return (err); + ds = prev; + } + VERIFY(zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, + dsl_dataset_phys(ds)->ds_prev_snap_txg, eca->tx) == 0); + dsl_dataset_rele(ds, FTAG); + return (0); +} + +static void +dsl_scan_visitds(dsl_scan_t *scn, uint64_t dsobj, dmu_tx_t *tx) +{ + dsl_pool_t *dp = scn->scn_dp; + dsl_dataset_t *ds; + objset_t *os; + char *dsname; + + VERIFY3U(0, ==, dsl_dataset_hold_obj(dp, dsobj, FTAG, &ds)); + + if (dmu_objset_from_ds(ds, &os)) + goto out; + + /* + * Only the ZIL in the head (non-snapshot) is valid. Even though + * snapshots can have ZIL block pointers (which may be the same + * BP as in the head), they must be ignored. So we traverse the + * ZIL here, rather than in scan_recurse(), because the regular + * snapshot block-sharing rules don't apply to it. + */ + if (DSL_SCAN_IS_SCRUB_RESILVER(scn) && !ds->ds_is_snapshot) + dsl_scan_zil(dp, &os->os_zil_header); + + /* + * Iterate over the bps in this ds. + */ + dmu_buf_will_dirty(ds->ds_dbuf, tx); + dsl_scan_visit_rootbp(scn, ds, &dsl_dataset_phys(ds)->ds_bp, tx); + + dsname = kmem_alloc(ZFS_MAXNAMELEN, KM_SLEEP); + dsl_dataset_name(ds, dsname); + zfs_dbgmsg("scanned dataset %llu (%s) with min=%llu max=%llu; " + "pausing=%u", + (longlong_t)dsobj, dsname, + (longlong_t)scn->scn_phys.scn_cur_min_txg, + (longlong_t)scn->scn_phys.scn_cur_max_txg, + (int)scn->scn_pausing); + kmem_free(dsname, ZFS_MAXNAMELEN); + + if (scn->scn_pausing) + goto out; + + /* + * We've finished this pass over this dataset. + */ + + /* + * If we did not completely visit this dataset, do another pass. + */ + if (scn->scn_phys.scn_flags & DSF_VISIT_DS_AGAIN) { + zfs_dbgmsg("incomplete pass; visiting again"); + scn->scn_phys.scn_flags &= ~DSF_VISIT_DS_AGAIN; + VERIFY(zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, ds->ds_object, + scn->scn_phys.scn_cur_max_txg, tx) == 0); + goto out; + } + + /* + * Add descendent datasets to work queue. + */ + if (dsl_dataset_phys(ds)->ds_next_snap_obj != 0) { + VERIFY(zap_add_int_key(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, + dsl_dataset_phys(ds)->ds_next_snap_obj, + dsl_dataset_phys(ds)->ds_creation_txg, tx) == 0); + } + if (dsl_dataset_phys(ds)->ds_num_children > 1) { + boolean_t usenext = B_FALSE; + if (dsl_dataset_phys(ds)->ds_next_clones_obj != 0) { + uint64_t count; + /* + * A bug in a previous version of the code could + * cause upgrade_clones_cb() to not set + * ds_next_snap_obj when it should, leading to a + * missing entry. Therefore we can only use the + * next_clones_obj when its count is correct. + */ + int err = zap_count(dp->dp_meta_objset, + dsl_dataset_phys(ds)->ds_next_clones_obj, &count); + if (err == 0 && + count == dsl_dataset_phys(ds)->ds_num_children - 1) + usenext = B_TRUE; + } + + if (usenext) { + VERIFY0(zap_join_key(dp->dp_meta_objset, + dsl_dataset_phys(ds)->ds_next_clones_obj, + scn->scn_phys.scn_queue_obj, + dsl_dataset_phys(ds)->ds_creation_txg, tx)); + } else { + struct enqueue_clones_arg eca; + eca.tx = tx; + eca.originobj = ds->ds_object; + + VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, + enqueue_clones_cb, &eca, DS_FIND_CHILDREN)); + } + } + +out: + dsl_dataset_rele(ds, FTAG); +} + +/* ARGSUSED */ +static int +enqueue_cb(dsl_pool_t *dp, dsl_dataset_t *hds, void *arg) +{ + dmu_tx_t *tx = arg; + dsl_dataset_t *ds; + int err; + dsl_scan_t *scn = dp->dp_scan; + + err = dsl_dataset_hold_obj(dp, hds->ds_object, FTAG, &ds); + if (err) + return (err); + + while (dsl_dataset_phys(ds)->ds_prev_snap_obj != 0) { + dsl_dataset_t *prev; + err = dsl_dataset_hold_obj(dp, + dsl_dataset_phys(ds)->ds_prev_snap_obj, FTAG, &prev); + if (err) { + dsl_dataset_rele(ds, FTAG); + return (err); + } + + /* + * If this is a clone, we don't need to worry about it for now. + */ + if (dsl_dataset_phys(prev)->ds_next_snap_obj != ds->ds_object) { + dsl_dataset_rele(ds, FTAG); + dsl_dataset_rele(prev, FTAG); + return (0); + } + dsl_dataset_rele(ds, FTAG); + ds = prev; + } + + VERIFY(zap_add_int_key(dp->dp_meta_objset, scn->scn_phys.scn_queue_obj, + ds->ds_object, dsl_dataset_phys(ds)->ds_prev_snap_txg, tx) == 0); + dsl_dataset_rele(ds, FTAG); + return (0); +} + +/* + * Scrub/dedup interaction. + * + * If there are N references to a deduped block, we don't want to scrub it + * N times -- ideally, we should scrub it exactly once. + * + * We leverage the fact that the dde's replication class (enum ddt_class) + * is ordered from highest replication class (DDT_CLASS_DITTO) to lowest + * (DDT_CLASS_UNIQUE) so that we may walk the DDT in that order. + * + * To prevent excess scrubbing, the scrub begins by walking the DDT + * to find all blocks with refcnt > 1, and scrubs each of these once. + * Since there are two replication classes which contain blocks with + * refcnt > 1, we scrub the highest replication class (DDT_CLASS_DITTO) first. + * Finally the top-down scrub begins, only visiting blocks with refcnt == 1. + * + * There would be nothing more to say if a block's refcnt couldn't change + * during a scrub, but of course it can so we must account for changes + * in a block's replication class. + * + * Here's an example of what can occur: + * + * If a block has refcnt > 1 during the DDT scrub phase, but has refcnt == 1 + * when visited during the top-down scrub phase, it will be scrubbed twice. + * This negates our scrub optimization, but is otherwise harmless. + * + * If a block has refcnt == 1 during the DDT scrub phase, but has refcnt > 1 + * on each visit during the top-down scrub phase, it will never be scrubbed. + * To catch this, ddt_sync_entry() notifies the scrub code whenever a block's + * reference class transitions to a higher level (i.e DDT_CLASS_UNIQUE to + * DDT_CLASS_DUPLICATE); if it transitions from refcnt == 1 to refcnt > 1 + * while a scrub is in progress, it scrubs the block right then. + */ +static void +dsl_scan_ddt(dsl_scan_t *scn, dmu_tx_t *tx) +{ + ddt_bookmark_t *ddb = &scn->scn_phys.scn_ddt_bookmark; + ddt_entry_t dde; + int error; + uint64_t n = 0; + + bzero(&dde, sizeof (ddt_entry_t)); + + while ((error = ddt_walk(scn->scn_dp->dp_spa, ddb, &dde)) == 0) { + ddt_t *ddt; + + if (ddb->ddb_class > scn->scn_phys.scn_ddt_class_max) + break; + dprintf("visiting ddb=%llu/%llu/%llu/%llx\n", + (longlong_t)ddb->ddb_class, + (longlong_t)ddb->ddb_type, + (longlong_t)ddb->ddb_checksum, + (longlong_t)ddb->ddb_cursor); + + /* There should be no pending changes to the dedup table */ + ddt = scn->scn_dp->dp_spa->spa_ddt[ddb->ddb_checksum]; + ASSERT(avl_first(&ddt->ddt_tree) == NULL); + + dsl_scan_ddt_entry(scn, ddb->ddb_checksum, &dde, tx); + n++; + + if (dsl_scan_check_pause(scn, NULL)) + break; + } + + zfs_dbgmsg("scanned %llu ddt entries with class_max = %u; pausing=%u", + (longlong_t)n, (int)scn->scn_phys.scn_ddt_class_max, + (int)scn->scn_pausing); + + ASSERT(error == 0 || error == ENOENT); + ASSERT(error != ENOENT || + ddb->ddb_class > scn->scn_phys.scn_ddt_class_max); +} + +/* ARGSUSED */ +void +dsl_scan_ddt_entry(dsl_scan_t *scn, enum zio_checksum checksum, + ddt_entry_t *dde, dmu_tx_t *tx) +{ + const ddt_key_t *ddk = &dde->dde_key; + ddt_phys_t *ddp = dde->dde_phys; + blkptr_t bp; + zbookmark_phys_t zb = { 0 }; + int p; + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) { + if (ddp->ddp_phys_birth == 0 || + ddp->ddp_phys_birth > scn->scn_phys.scn_max_txg) + continue; + ddt_bp_create(checksum, ddk, ddp, &bp); + + scn->scn_visited_this_txg++; + scan_funcs[scn->scn_phys.scn_func](scn->scn_dp, &bp, &zb); + } +} + +static void +dsl_scan_visit(dsl_scan_t *scn, dmu_tx_t *tx) +{ + dsl_pool_t *dp = scn->scn_dp; + zap_cursor_t *zc; + zap_attribute_t *za; + + if (scn->scn_phys.scn_ddt_bookmark.ddb_class <= + scn->scn_phys.scn_ddt_class_max) { + scn->scn_phys.scn_cur_min_txg = scn->scn_phys.scn_min_txg; + scn->scn_phys.scn_cur_max_txg = scn->scn_phys.scn_max_txg; + dsl_scan_ddt(scn, tx); + if (scn->scn_pausing) + return; + } + + if (scn->scn_phys.scn_bookmark.zb_objset == DMU_META_OBJSET) { + /* First do the MOS & ORIGIN */ + + scn->scn_phys.scn_cur_min_txg = scn->scn_phys.scn_min_txg; + scn->scn_phys.scn_cur_max_txg = scn->scn_phys.scn_max_txg; + dsl_scan_visit_rootbp(scn, NULL, + &dp->dp_meta_rootbp, tx); + spa_set_rootblkptr(dp->dp_spa, &dp->dp_meta_rootbp); + if (scn->scn_pausing) + return; + + if (spa_version(dp->dp_spa) < SPA_VERSION_DSL_SCRUB) { + VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, + enqueue_cb, tx, DS_FIND_CHILDREN)); + } else { + dsl_scan_visitds(scn, + dp->dp_origin_snap->ds_object, tx); + } + ASSERT(!scn->scn_pausing); + } else if (scn->scn_phys.scn_bookmark.zb_objset != + ZB_DESTROYED_OBJSET) { + /* + * If we were paused, continue from here. Note if the + * ds we were paused on was deleted, the zb_objset may + * be -1, so we will skip this and find a new objset + * below. + */ + dsl_scan_visitds(scn, scn->scn_phys.scn_bookmark.zb_objset, tx); + if (scn->scn_pausing) + return; + } + + /* + * In case we were paused right at the end of the ds, zero the + * bookmark so we don't think that we're still trying to resume. + */ + bzero(&scn->scn_phys.scn_bookmark, sizeof (zbookmark_phys_t)); + zc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + + /* keep pulling things out of the zap-object-as-queue */ + while (zap_cursor_init(zc, dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj), + zap_cursor_retrieve(zc, za) == 0) { + dsl_dataset_t *ds; + uint64_t dsobj; + + dsobj = strtonum(za->za_name, NULL); + VERIFY3U(0, ==, zap_remove_int(dp->dp_meta_objset, + scn->scn_phys.scn_queue_obj, dsobj, tx)); + + /* Set up min/max txg */ + VERIFY3U(0, ==, dsl_dataset_hold_obj(dp, dsobj, FTAG, &ds)); + if (za->za_first_integer != 0) { + scn->scn_phys.scn_cur_min_txg = + MAX(scn->scn_phys.scn_min_txg, + za->za_first_integer); + } else { + scn->scn_phys.scn_cur_min_txg = + MAX(scn->scn_phys.scn_min_txg, + dsl_dataset_phys(ds)->ds_prev_snap_txg); + } + scn->scn_phys.scn_cur_max_txg = dsl_scan_ds_maxtxg(ds); + dsl_dataset_rele(ds, FTAG); + + dsl_scan_visitds(scn, dsobj, tx); + zap_cursor_fini(zc); + if (scn->scn_pausing) + goto out; + } + zap_cursor_fini(zc); +out: + kmem_free(za, sizeof (zap_attribute_t)); + kmem_free(zc, sizeof (zap_cursor_t)); +} + +static boolean_t +dsl_scan_free_should_pause(dsl_scan_t *scn) +{ + uint64_t elapsed_nanosecs; + + if (zfs_recover) + return (B_FALSE); + + if (scn->scn_visited_this_txg >= zfs_free_max_blocks) + return (B_TRUE); + + elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; + return (elapsed_nanosecs / NANOSEC > zfs_txg_timeout || + (NSEC2MSEC(elapsed_nanosecs) > zfs_free_min_time_ms && + txg_sync_waiting(scn->scn_dp)) || + spa_shutting_down(scn->scn_dp->dp_spa)); +} + +static int +dsl_scan_free_block_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + dsl_scan_t *scn = arg; + + if (!scn->scn_is_bptree || + (BP_GET_LEVEL(bp) == 0 && BP_GET_TYPE(bp) != DMU_OT_OBJSET)) { + if (dsl_scan_free_should_pause(scn)) + return (SET_ERROR(ERESTART)); + } + + zio_nowait(zio_free_sync(scn->scn_zio_root, scn->scn_dp->dp_spa, + dmu_tx_get_txg(tx), bp, 0)); + dsl_dir_diduse_space(tx->tx_pool->dp_free_dir, DD_USED_HEAD, + -bp_get_dsize_sync(scn->scn_dp->dp_spa, bp), + -BP_GET_PSIZE(bp), -BP_GET_UCSIZE(bp), tx); + scn->scn_visited_this_txg++; + return (0); +} + +boolean_t +dsl_scan_active(dsl_scan_t *scn) +{ + spa_t *spa = scn->scn_dp->dp_spa; + uint64_t used = 0, comp, uncomp; + + if (spa->spa_load_state != SPA_LOAD_NONE) + return (B_FALSE); + if (spa_shutting_down(spa)) + return (B_FALSE); + if (scn->scn_phys.scn_state == DSS_SCANNING || + (scn->scn_async_destroying && !scn->scn_async_stalled)) + return (B_TRUE); + + if (spa_version(scn->scn_dp->dp_spa) >= SPA_VERSION_DEADLISTS) { + (void) bpobj_space(&scn->scn_dp->dp_free_bpobj, + &used, &comp, &uncomp); + } + return (used != 0); +} + +void +dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx) +{ + dsl_scan_t *scn = dp->dp_scan; + spa_t *spa = dp->dp_spa; + int err = 0; + + /* + * Check for scn_restart_txg before checking spa_load_state, so + * that we can restart an old-style scan while the pool is being + * imported (see dsl_scan_init). + */ + if (scn->scn_restart_txg != 0 && + scn->scn_restart_txg <= tx->tx_txg) { + pool_scan_func_t func = POOL_SCAN_SCRUB; + dsl_scan_done(scn, B_FALSE, tx); + if (vdev_resilver_needed(spa->spa_root_vdev, NULL, NULL)) + func = POOL_SCAN_RESILVER; + zfs_dbgmsg("restarting scan func=%u txg=%llu", + func, tx->tx_txg); + dsl_scan_setup_sync(&func, tx); + } + + /* + * If the scan is inactive due to a stalled async destroy, try again. + */ + if ((!scn->scn_async_stalled && !dsl_scan_active(scn)) || + spa_sync_pass(dp->dp_spa) > 1) + return; + + scn->scn_visited_this_txg = 0; + scn->scn_pausing = B_FALSE; + scn->scn_sync_start_time = gethrtime(); + spa->spa_scrub_active = B_TRUE; + + /* + * First process the async destroys. If we pause, don't do + * any scrubbing or resilvering. This ensures that there are no + * async destroys while we are scanning, so the scan code doesn't + * have to worry about traversing it. It is also faster to free the + * blocks than to scrub them. + */ + if (spa_version(dp->dp_spa) >= SPA_VERSION_DEADLISTS) { + scn->scn_is_bptree = B_FALSE; + scn->scn_zio_root = zio_root(dp->dp_spa, NULL, + NULL, ZIO_FLAG_MUSTSUCCEED); + err = bpobj_iterate(&dp->dp_free_bpobj, + dsl_scan_free_block_cb, scn, tx); + VERIFY3U(0, ==, zio_wait(scn->scn_zio_root)); + + if (err != 0 && err != ERESTART) + zfs_panic_recover("error %u from bpobj_iterate()", err); + } + + if (err == 0 && spa_feature_is_active(spa, SPA_FEATURE_ASYNC_DESTROY)) { + ASSERT(scn->scn_async_destroying); + scn->scn_is_bptree = B_TRUE; + scn->scn_zio_root = zio_root(dp->dp_spa, NULL, + NULL, ZIO_FLAG_MUSTSUCCEED); + err = bptree_iterate(dp->dp_meta_objset, + dp->dp_bptree_obj, B_TRUE, dsl_scan_free_block_cb, scn, tx); + VERIFY0(zio_wait(scn->scn_zio_root)); + + if (err == EIO || err == ECKSUM) { + err = 0; + } else if (err != 0 && err != ERESTART) { + zfs_panic_recover("error %u from " + "traverse_dataset_destroyed()", err); + } + + if (bptree_is_empty(dp->dp_meta_objset, dp->dp_bptree_obj)) { + /* finished; deactivate async destroy feature */ + spa_feature_decr(spa, SPA_FEATURE_ASYNC_DESTROY, tx); + ASSERT(!spa_feature_is_active(spa, + SPA_FEATURE_ASYNC_DESTROY)); + VERIFY0(zap_remove(dp->dp_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_BPTREE_OBJ, tx)); + VERIFY0(bptree_free(dp->dp_meta_objset, + dp->dp_bptree_obj, tx)); + dp->dp_bptree_obj = 0; + scn->scn_async_destroying = B_FALSE; + scn->scn_async_stalled = B_FALSE; + } else { + /* + * If we didn't make progress, mark the async + * destroy as stalled, so that we will not initiate + * a spa_sync() on its behalf. Note that we only + * check this if we are not finished, because if the + * bptree had no blocks for us to visit, we can + * finish without "making progress". + */ + scn->scn_async_stalled = + (scn->scn_visited_this_txg == 0); + } + } + if (scn->scn_visited_this_txg) { + zfs_dbgmsg("freed %llu blocks in %llums from " + "free_bpobj/bptree txg %llu; err=%u", + (longlong_t)scn->scn_visited_this_txg, + (longlong_t) + NSEC2MSEC(gethrtime() - scn->scn_sync_start_time), + (longlong_t)tx->tx_txg, err); + scn->scn_visited_this_txg = 0; + + /* + * Write out changes to the DDT that may be required as a + * result of the blocks freed. This ensures that the DDT + * is clean when a scrub/resilver runs. + */ + ddt_sync(spa, tx->tx_txg); + } + if (err != 0) + return; + if (!scn->scn_async_destroying && zfs_free_leak_on_eio && + (dsl_dir_phys(dp->dp_free_dir)->dd_used_bytes != 0 || + dsl_dir_phys(dp->dp_free_dir)->dd_compressed_bytes != 0 || + dsl_dir_phys(dp->dp_free_dir)->dd_uncompressed_bytes != 0)) { + /* + * We have finished background destroying, but there is still + * some space left in the dp_free_dir. Transfer this leaked + * space to the dp_leak_dir. + */ + if (dp->dp_leak_dir == NULL) { + rrw_enter(&dp->dp_config_rwlock, RW_WRITER, FTAG); + (void) dsl_dir_create_sync(dp, dp->dp_root_dir, + LEAK_DIR_NAME, tx); + VERIFY0(dsl_pool_open_special_dir(dp, + LEAK_DIR_NAME, &dp->dp_leak_dir)); + rrw_exit(&dp->dp_config_rwlock, FTAG); + } + dsl_dir_diduse_space(dp->dp_leak_dir, DD_USED_HEAD, + dsl_dir_phys(dp->dp_free_dir)->dd_used_bytes, + dsl_dir_phys(dp->dp_free_dir)->dd_compressed_bytes, + dsl_dir_phys(dp->dp_free_dir)->dd_uncompressed_bytes, tx); + dsl_dir_diduse_space(dp->dp_free_dir, DD_USED_HEAD, + -dsl_dir_phys(dp->dp_free_dir)->dd_used_bytes, + -dsl_dir_phys(dp->dp_free_dir)->dd_compressed_bytes, + -dsl_dir_phys(dp->dp_free_dir)->dd_uncompressed_bytes, tx); + } + if (!scn->scn_async_destroying) { + /* finished; verify that space accounting went to zero */ + ASSERT0(dsl_dir_phys(dp->dp_free_dir)->dd_used_bytes); + ASSERT0(dsl_dir_phys(dp->dp_free_dir)->dd_compressed_bytes); + ASSERT0(dsl_dir_phys(dp->dp_free_dir)->dd_uncompressed_bytes); + } + + if (scn->scn_phys.scn_state != DSS_SCANNING) + return; + + if (scn->scn_done_txg == tx->tx_txg) { + ASSERT(!scn->scn_pausing); + /* finished with scan. */ + zfs_dbgmsg("txg %llu scan complete", tx->tx_txg); + dsl_scan_done(scn, B_TRUE, tx); + ASSERT3U(spa->spa_scrub_inflight, ==, 0); + dsl_scan_sync_state(scn, tx); + return; + } + + if (scn->scn_phys.scn_ddt_bookmark.ddb_class <= + scn->scn_phys.scn_ddt_class_max) { + zfs_dbgmsg("doing scan sync txg %llu; " + "ddt bm=%llu/%llu/%llu/%llx", + (longlong_t)tx->tx_txg, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_class, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_type, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_checksum, + (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_cursor); + ASSERT(scn->scn_phys.scn_bookmark.zb_objset == 0); + ASSERT(scn->scn_phys.scn_bookmark.zb_object == 0); + ASSERT(scn->scn_phys.scn_bookmark.zb_level == 0); + ASSERT(scn->scn_phys.scn_bookmark.zb_blkid == 0); + } else { + zfs_dbgmsg("doing scan sync txg %llu; bm=%llu/%llu/%llu/%llu", + (longlong_t)tx->tx_txg, + (longlong_t)scn->scn_phys.scn_bookmark.zb_objset, + (longlong_t)scn->scn_phys.scn_bookmark.zb_object, + (longlong_t)scn->scn_phys.scn_bookmark.zb_level, + (longlong_t)scn->scn_phys.scn_bookmark.zb_blkid); + } + + scn->scn_zio_root = zio_root(dp->dp_spa, NULL, + NULL, ZIO_FLAG_CANFAIL); + dsl_pool_config_enter(dp, FTAG); + dsl_scan_visit(scn, tx); + dsl_pool_config_exit(dp, FTAG); + (void) zio_wait(scn->scn_zio_root); + scn->scn_zio_root = NULL; + + zfs_dbgmsg("visited %llu blocks in %llums", + (longlong_t)scn->scn_visited_this_txg, + (longlong_t)NSEC2MSEC(gethrtime() - scn->scn_sync_start_time)); + + if (!scn->scn_pausing) { + scn->scn_done_txg = tx->tx_txg + 1; + zfs_dbgmsg("txg %llu traversal complete, waiting till txg %llu", + tx->tx_txg, scn->scn_done_txg); + } + + if (DSL_SCAN_IS_SCRUB_RESILVER(scn)) { + mutex_enter(&spa->spa_scrub_lock); + while (spa->spa_scrub_inflight > 0) { + cv_wait(&spa->spa_scrub_io_cv, + &spa->spa_scrub_lock); + } + mutex_exit(&spa->spa_scrub_lock); + } + + dsl_scan_sync_state(scn, tx); +} + +/* + * This will start a new scan, or restart an existing one. + */ +void +dsl_resilver_restart(dsl_pool_t *dp, uint64_t txg) +{ + if (txg == 0) { + dmu_tx_t *tx; + tx = dmu_tx_create_dd(dp->dp_mos_dir); + VERIFY(0 == dmu_tx_assign(tx, TXG_WAIT)); + + txg = dmu_tx_get_txg(tx); + dp->dp_scan->scn_restart_txg = txg; + dmu_tx_commit(tx); + } else { + dp->dp_scan->scn_restart_txg = txg; + } + zfs_dbgmsg("restarting resilver txg=%llu", txg); +} + +boolean_t +dsl_scan_resilvering(dsl_pool_t *dp) +{ + return (dp->dp_scan->scn_phys.scn_state == DSS_SCANNING && + dp->dp_scan->scn_phys.scn_func == POOL_SCAN_RESILVER); +} + +/* + * scrub consumers + */ + +static void +count_block(zfs_all_blkstats_t *zab, const blkptr_t *bp) +{ + int i; + + /* + * If we resume after a reboot, zab will be NULL; don't record + * incomplete stats in that case. + */ + if (zab == NULL) + return; + + for (i = 0; i < 4; i++) { + int l = (i < 2) ? BP_GET_LEVEL(bp) : DN_MAX_LEVELS; + int t = (i & 1) ? BP_GET_TYPE(bp) : DMU_OT_TOTAL; + int equal; + zfs_blkstat_t *zb; + + if (t & DMU_OT_NEWTYPE) + t = DMU_OT_OTHER; + + zb = &zab->zab_type[l][t]; + zb->zb_count++; + zb->zb_asize += BP_GET_ASIZE(bp); + zb->zb_lsize += BP_GET_LSIZE(bp); + zb->zb_psize += BP_GET_PSIZE(bp); + zb->zb_gangs += BP_COUNT_GANG(bp); + + switch (BP_GET_NDVAS(bp)) { + case 2: + if (DVA_GET_VDEV(&bp->blk_dva[0]) == + DVA_GET_VDEV(&bp->blk_dva[1])) + zb->zb_ditto_2_of_2_samevdev++; + break; + case 3: + equal = (DVA_GET_VDEV(&bp->blk_dva[0]) == + DVA_GET_VDEV(&bp->blk_dva[1])) + + (DVA_GET_VDEV(&bp->blk_dva[0]) == + DVA_GET_VDEV(&bp->blk_dva[2])) + + (DVA_GET_VDEV(&bp->blk_dva[1]) == + DVA_GET_VDEV(&bp->blk_dva[2])); + if (equal == 1) + zb->zb_ditto_2_of_3_samevdev++; + else if (equal == 3) + zb->zb_ditto_3_of_3_samevdev++; + break; + } + } +} + +static void +dsl_scan_scrub_done(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + + zio_data_buf_free(zio->io_data, zio->io_size); + + mutex_enter(&spa->spa_scrub_lock); + spa->spa_scrub_inflight--; + cv_broadcast(&spa->spa_scrub_io_cv); + + if (zio->io_error && (zio->io_error != ECKSUM || + !(zio->io_flags & ZIO_FLAG_SPECULATIVE))) { + spa->spa_dsl_pool->dp_scan->scn_phys.scn_errors++; + } + mutex_exit(&spa->spa_scrub_lock); +} + +static int +dsl_scan_scrub_cb(dsl_pool_t *dp, + const blkptr_t *bp, const zbookmark_phys_t *zb) +{ + dsl_scan_t *scn = dp->dp_scan; + size_t size = BP_GET_PSIZE(bp); + spa_t *spa = dp->dp_spa; + uint64_t phys_birth = BP_PHYSICAL_BIRTH(bp); + boolean_t needs_io = B_FALSE; + int zio_flags = ZIO_FLAG_SCAN_THREAD | ZIO_FLAG_RAW | ZIO_FLAG_CANFAIL; + int scan_delay = 0; + int d; + + if (phys_birth <= scn->scn_phys.scn_min_txg || + phys_birth >= scn->scn_phys.scn_max_txg) + return (0); + + count_block(dp->dp_blkstats, bp); + + if (BP_IS_EMBEDDED(bp)) + return (0); + + ASSERT(DSL_SCAN_IS_SCRUB_RESILVER(scn)); + if (scn->scn_phys.scn_func == POOL_SCAN_SCRUB) { + zio_flags |= ZIO_FLAG_SCRUB; + needs_io = B_TRUE; + scan_delay = zfs_scrub_delay; + } else { + ASSERT3U(scn->scn_phys.scn_func, ==, POOL_SCAN_RESILVER); + zio_flags |= ZIO_FLAG_RESILVER; + needs_io = B_FALSE; + scan_delay = zfs_resilver_delay; + } + + /* If it's an intent log block, failure is expected. */ + if (zb->zb_level == ZB_ZIL_LEVEL) + zio_flags |= ZIO_FLAG_SPECULATIVE; + + for (d = 0; d < BP_GET_NDVAS(bp); d++) { + vdev_t *vd = vdev_lookup_top(spa, + DVA_GET_VDEV(&bp->blk_dva[d])); + + /* + * Keep track of how much data we've examined so that + * zpool(1M) status can make useful progress reports. + */ + scn->scn_phys.scn_examined += DVA_GET_ASIZE(&bp->blk_dva[d]); + spa->spa_scan_pass_exam += DVA_GET_ASIZE(&bp->blk_dva[d]); + + /* if it's a resilver, this may not be in the target range */ + if (!needs_io) { + if (DVA_GET_GANG(&bp->blk_dva[d])) { + /* + * Gang members may be spread across multiple + * vdevs, so the best estimate we have is the + * scrub range, which has already been checked. + * XXX -- it would be better to change our + * allocation policy to ensure that all + * gang members reside on the same vdev. + */ + needs_io = B_TRUE; + } else { + needs_io = vdev_dtl_contains(vd, DTL_PARTIAL, + phys_birth, 1); + } + } + } + + if (needs_io && !zfs_no_scrub_io) { + vdev_t *rvd = spa->spa_root_vdev; + uint64_t maxinflight = rvd->vdev_children * zfs_top_maxinflight; + void *data = zio_data_buf_alloc(size); + + mutex_enter(&spa->spa_scrub_lock); + while (spa->spa_scrub_inflight >= maxinflight) + cv_wait(&spa->spa_scrub_io_cv, &spa->spa_scrub_lock); + spa->spa_scrub_inflight++; + mutex_exit(&spa->spa_scrub_lock); + + /* + * If we're seeing recent (zfs_scan_idle) "important" I/Os + * then throttle our workload to limit the impact of a scan. + */ + if (ddi_get_lbolt64() - spa->spa_last_io <= zfs_scan_idle) + delay(scan_delay); + + zio_nowait(zio_read(NULL, spa, bp, data, size, + dsl_scan_scrub_done, NULL, ZIO_PRIORITY_SCRUB, + zio_flags, zb)); + } + + /* do not relocate this block */ + return (0); +} + +int +dsl_scan(dsl_pool_t *dp, pool_scan_func_t func) +{ + spa_t *spa = dp->dp_spa; + + /* + * Purge all vdev caches and probe all devices. We do this here + * rather than in sync context because this requires a writer lock + * on the spa_config lock, which we can't do from sync context. The + * spa_scrub_reopen flag indicates that vdev_open() should not + * attempt to start another scrub. + */ + spa_vdev_state_enter(spa, SCL_NONE); + spa->spa_scrub_reopen = B_TRUE; + vdev_reopen(spa->spa_root_vdev); + spa->spa_scrub_reopen = B_FALSE; + (void) spa_vdev_state_exit(spa, NULL, 0); + + return (dsl_sync_task(spa_name(spa), dsl_scan_setup_check, + dsl_scan_setup_sync, &func, 0, ZFS_SPACE_CHECK_NONE)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_top_maxinflight, int, 0644); +MODULE_PARM_DESC(zfs_top_maxinflight, "Max I/Os per top-level"); + +module_param(zfs_resilver_delay, int, 0644); +MODULE_PARM_DESC(zfs_resilver_delay, "Number of ticks to delay resilver"); + +module_param(zfs_scrub_delay, int, 0644); +MODULE_PARM_DESC(zfs_scrub_delay, "Number of ticks to delay scrub"); + +module_param(zfs_scan_idle, int, 0644); +MODULE_PARM_DESC(zfs_scan_idle, "Idle window in clock ticks"); + +module_param(zfs_scan_min_time_ms, int, 0644); +MODULE_PARM_DESC(zfs_scan_min_time_ms, "Min millisecs to scrub per txg"); + +module_param(zfs_free_min_time_ms, int, 0644); +MODULE_PARM_DESC(zfs_free_min_time_ms, "Min millisecs to free per txg"); + +module_param(zfs_resilver_min_time_ms, int, 0644); +MODULE_PARM_DESC(zfs_resilver_min_time_ms, "Min millisecs to resilver per txg"); + +module_param(zfs_no_scrub_io, int, 0644); +MODULE_PARM_DESC(zfs_no_scrub_io, "Set to disable scrub I/O"); + +module_param(zfs_no_scrub_prefetch, int, 0644); +MODULE_PARM_DESC(zfs_no_scrub_prefetch, "Set to disable scrub prefetching"); + +module_param(zfs_free_max_blocks, ulong, 0644); +MODULE_PARM_DESC(zfs_free_max_blocks, "Max number of blocks freed in one txg"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_synctask.c +++ linux-4.4.0/zfs/module/zfs/dsl_synctask.c @@ -0,0 +1,191 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +#define DST_AVG_BLKSHIFT 14 + +/* ARGSUSED */ +static int +dsl_null_checkfunc(void *arg, dmu_tx_t *tx) +{ + return (0); +} + +/* + * Called from open context to perform a callback in syncing context. Waits + * for the operation to complete. + * + * The checkfunc will be called from open context as a preliminary check + * which can quickly fail. If it succeeds, it will be called again from + * syncing context. The checkfunc should generally be designed to work + * properly in either context, but if necessary it can check + * dmu_tx_is_syncing(tx). + * + * The synctask infrastructure enforces proper locking strategy with respect + * to the dp_config_rwlock -- the lock will always be held when the callbacks + * are called. It will be held for read during the open-context (preliminary) + * call to the checkfunc, and then held for write from syncing context during + * the calls to the check and sync funcs. + * + * A dataset or pool name can be passed as the first argument. Typically, + * the check func will hold, check the return value of the hold, and then + * release the dataset. The sync func will VERIFYO(hold()) the dataset. + * This is safe because no changes can be made between the check and sync funcs, + * and the sync func will only be called if the check func successfully opened + * the dataset. + */ +int +dsl_sync_task(const char *pool, dsl_checkfunc_t *checkfunc, + dsl_syncfunc_t *syncfunc, void *arg, + int blocks_modified, zfs_space_check_t space_check) +{ + spa_t *spa; + dmu_tx_t *tx; + int err; + dsl_sync_task_t dst = { { { NULL } } }; + dsl_pool_t *dp; + + err = spa_open(pool, &spa, FTAG); + if (err != 0) + return (err); + dp = spa_get_dsl(spa); + +top: + tx = dmu_tx_create_dd(dp->dp_mos_dir); + VERIFY0(dmu_tx_assign(tx, TXG_WAIT)); + + dst.dst_pool = dp; + dst.dst_txg = dmu_tx_get_txg(tx); + dst.dst_space = blocks_modified << DST_AVG_BLKSHIFT; + dst.dst_space_check = space_check; + dst.dst_checkfunc = checkfunc != NULL ? checkfunc : dsl_null_checkfunc; + dst.dst_syncfunc = syncfunc; + dst.dst_arg = arg; + dst.dst_error = 0; + dst.dst_nowaiter = B_FALSE; + + dsl_pool_config_enter(dp, FTAG); + err = dst.dst_checkfunc(arg, tx); + dsl_pool_config_exit(dp, FTAG); + + if (err != 0) { + dmu_tx_commit(tx); + spa_close(spa, FTAG); + return (err); + } + + VERIFY(txg_list_add_tail(&dp->dp_sync_tasks, &dst, dst.dst_txg)); + + dmu_tx_commit(tx); + + txg_wait_synced(dp, dst.dst_txg); + + if (dst.dst_error == EAGAIN) { + txg_wait_synced(dp, dst.dst_txg + TXG_DEFER_SIZE); + goto top; + } + + spa_close(spa, FTAG); + return (dst.dst_error); +} + +void +dsl_sync_task_nowait(dsl_pool_t *dp, dsl_syncfunc_t *syncfunc, void *arg, + int blocks_modified, zfs_space_check_t space_check, dmu_tx_t *tx) +{ + dsl_sync_task_t *dst = kmem_zalloc(sizeof (*dst), KM_SLEEP); + + dst->dst_pool = dp; + dst->dst_txg = dmu_tx_get_txg(tx); + dst->dst_space = blocks_modified << DST_AVG_BLKSHIFT; + dst->dst_space_check = space_check; + dst->dst_checkfunc = dsl_null_checkfunc; + dst->dst_syncfunc = syncfunc; + dst->dst_arg = arg; + dst->dst_error = 0; + dst->dst_nowaiter = B_TRUE; + + VERIFY(txg_list_add_tail(&dp->dp_sync_tasks, dst, dst->dst_txg)); +} + +/* + * Called in syncing context to execute the synctask. + */ +void +dsl_sync_task_sync(dsl_sync_task_t *dst, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dst->dst_pool; + + ASSERT0(dst->dst_error); + + /* + * Check for sufficient space. + * + * When the sync task was created, the caller specified the + * type of space checking required. See the comment in + * zfs_space_check_t for details on the semantics of each + * type of space checking. + * + * We just check against what's on-disk; we don't want any + * in-flight accounting to get in our way, because open context + * may have already used up various in-core limits + * (arc_tempreserve, dsl_pool_tempreserve). + */ + if (dst->dst_space_check != ZFS_SPACE_CHECK_NONE) { + uint64_t quota = dsl_pool_adjustedsize(dp, + dst->dst_space_check == ZFS_SPACE_CHECK_RESERVED) - + metaslab_class_get_deferred(spa_normal_class(dp->dp_spa)); + uint64_t used = dsl_dir_phys(dp->dp_root_dir)->dd_used_bytes; + /* MOS space is triple-dittoed, so we multiply by 3. */ + if (dst->dst_space > 0 && used + dst->dst_space * 3 > quota) { + dst->dst_error = SET_ERROR(ENOSPC); + if (dst->dst_nowaiter) + kmem_free(dst, sizeof (*dst)); + return; + } + } + + /* + * Check for errors by calling checkfunc. + */ + rrw_enter(&dp->dp_config_rwlock, RW_WRITER, FTAG); + dst->dst_error = dst->dst_checkfunc(dst->dst_arg, tx); + if (dst->dst_error == 0) + dst->dst_syncfunc(dst->dst_arg, tx); + rrw_exit(&dp->dp_config_rwlock, FTAG); + if (dst->dst_nowaiter) + kmem_free(dst, sizeof (*dst)); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(dsl_sync_task); +EXPORT_SYMBOL(dsl_sync_task_nowait); +#endif --- linux-4.4.0.orig/zfs/module/zfs/dsl_userhold.c +++ linux-4.4.0/zfs/module/zfs/dsl_userhold.c @@ -0,0 +1,674 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct dsl_dataset_user_hold_arg { + nvlist_t *dduha_holds; + nvlist_t *dduha_chkholds; + nvlist_t *dduha_errlist; + minor_t dduha_minor; +} dsl_dataset_user_hold_arg_t; + +/* + * If you add new checks here, you may need to add additional checks to the + * "temporary" case in snapshot_check() in dmu_objset.c. + */ +int +dsl_dataset_user_hold_check_one(dsl_dataset_t *ds, const char *htag, + boolean_t temphold, dmu_tx_t *tx) +{ + dsl_pool_t *dp = dmu_tx_pool(tx); + objset_t *mos = dp->dp_meta_objset; + int error = 0; + + ASSERT(dsl_pool_config_held(dp)); + + if (strlen(htag) > MAXNAMELEN) + return (SET_ERROR(E2BIG)); + /* Tempholds have a more restricted length */ + if (temphold && strlen(htag) + MAX_TAG_PREFIX_LEN >= MAXNAMELEN) + return (SET_ERROR(E2BIG)); + + /* tags must be unique (if ds already exists) */ + if (ds != NULL && dsl_dataset_phys(ds)->ds_userrefs_obj != 0) { + uint64_t value; + + error = zap_lookup(mos, dsl_dataset_phys(ds)->ds_userrefs_obj, + htag, 8, 1, &value); + if (error == 0) + error = SET_ERROR(EEXIST); + else if (error == ENOENT) + error = 0; + } + + return (error); +} + +static int +dsl_dataset_user_hold_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_user_hold_arg_t *dduha = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + + if (spa_version(dp->dp_spa) < SPA_VERSION_USERREFS) + return (SET_ERROR(ENOTSUP)); + + if (!dmu_tx_is_syncing(tx)) + return (0); + + for (pair = nvlist_next_nvpair(dduha->dduha_holds, NULL); + pair != NULL; pair = nvlist_next_nvpair(dduha->dduha_holds, pair)) { + dsl_dataset_t *ds; + int error = 0; + char *htag, *name; + + /* must be a snapshot */ + name = nvpair_name(pair); + if (strchr(name, '@') == NULL) + error = SET_ERROR(EINVAL); + + if (error == 0) + error = nvpair_value_string(pair, &htag); + + if (error == 0) + error = dsl_dataset_hold(dp, name, FTAG, &ds); + + if (error == 0) { + error = dsl_dataset_user_hold_check_one(ds, htag, + dduha->dduha_minor != 0, tx); + dsl_dataset_rele(ds, FTAG); + } + + if (error == 0) { + fnvlist_add_string(dduha->dduha_chkholds, name, htag); + } else { + /* + * We register ENOENT errors so they can be correctly + * reported if needed, such as when all holds fail. + */ + fnvlist_add_int32(dduha->dduha_errlist, name, error); + if (error != ENOENT) + return (error); + } + } + + return (0); +} + + +static void +dsl_dataset_user_hold_sync_one_impl(nvlist_t *tmpholds, dsl_dataset_t *ds, + const char *htag, minor_t minor, uint64_t now, dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + objset_t *mos = dp->dp_meta_objset; + uint64_t zapobj; + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + + if (dsl_dataset_phys(ds)->ds_userrefs_obj == 0) { + /* + * This is the first user hold for this dataset. Create + * the userrefs zap object. + */ + dmu_buf_will_dirty(ds->ds_dbuf, tx); + zapobj = dsl_dataset_phys(ds)->ds_userrefs_obj = + zap_create(mos, DMU_OT_USERREFS, DMU_OT_NONE, 0, tx); + } else { + zapobj = dsl_dataset_phys(ds)->ds_userrefs_obj; + } + ds->ds_userrefs++; + + VERIFY0(zap_add(mos, zapobj, htag, 8, 1, &now, tx)); + + if (minor != 0) { + char name[MAXNAMELEN]; + nvlist_t *tags; + + VERIFY0(dsl_pool_user_hold(dp, ds->ds_object, + htag, now, tx)); + (void) snprintf(name, sizeof (name), "%llx", + (u_longlong_t)ds->ds_object); + + if (nvlist_lookup_nvlist(tmpholds, name, &tags) != 0) { + tags = fnvlist_alloc(); + fnvlist_add_boolean(tags, htag); + fnvlist_add_nvlist(tmpholds, name, tags); + fnvlist_free(tags); + } else { + fnvlist_add_boolean(tags, htag); + } + } + + spa_history_log_internal_ds(ds, "hold", tx, + "tag=%s temp=%d refs=%llu", + htag, minor != 0, ds->ds_userrefs); +} + +typedef struct zfs_hold_cleanup_arg { + char zhca_spaname[MAXNAMELEN]; + uint64_t zhca_spa_load_guid; + nvlist_t *zhca_holds; +} zfs_hold_cleanup_arg_t; + +static void +dsl_dataset_user_release_onexit(void *arg) +{ + zfs_hold_cleanup_arg_t *ca = arg; + spa_t *spa; + int error; + + error = spa_open(ca->zhca_spaname, &spa, FTAG); + if (error != 0) { + zfs_dbgmsg("couldn't release holds on pool=%s " + "because pool is no longer loaded", + ca->zhca_spaname); + return; + } + if (spa_load_guid(spa) != ca->zhca_spa_load_guid) { + zfs_dbgmsg("couldn't release holds on pool=%s " + "because pool is no longer loaded (guid doesn't match)", + ca->zhca_spaname); + spa_close(spa, FTAG); + return; + } + + (void) dsl_dataset_user_release_tmp(spa_get_dsl(spa), ca->zhca_holds); + fnvlist_free(ca->zhca_holds); + kmem_free(ca, sizeof (zfs_hold_cleanup_arg_t)); + spa_close(spa, FTAG); +} + +static void +dsl_onexit_hold_cleanup(spa_t *spa, nvlist_t *holds, minor_t minor) +{ + zfs_hold_cleanup_arg_t *ca; + + if (minor == 0 || nvlist_empty(holds)) { + fnvlist_free(holds); + return; + } + + ASSERT(spa != NULL); + ca = kmem_alloc(sizeof (*ca), KM_SLEEP); + + (void) strlcpy(ca->zhca_spaname, spa_name(spa), + sizeof (ca->zhca_spaname)); + ca->zhca_spa_load_guid = spa_load_guid(spa); + ca->zhca_holds = holds; + VERIFY0(zfs_onexit_add_cb(minor, + dsl_dataset_user_release_onexit, ca, NULL)); +} + +void +dsl_dataset_user_hold_sync_one(dsl_dataset_t *ds, const char *htag, + minor_t minor, uint64_t now, dmu_tx_t *tx) +{ + nvlist_t *tmpholds; + + if (minor != 0) + tmpholds = fnvlist_alloc(); + else + tmpholds = NULL; + dsl_dataset_user_hold_sync_one_impl(tmpholds, ds, htag, minor, now, tx); + dsl_onexit_hold_cleanup(dsl_dataset_get_spa(ds), tmpholds, minor); +} + +static void +dsl_dataset_user_hold_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_user_hold_arg_t *dduha = arg; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvlist_t *tmpholds; + nvpair_t *pair; + uint64_t now = gethrestime_sec(); + + if (dduha->dduha_minor != 0) + tmpholds = fnvlist_alloc(); + else + tmpholds = NULL; + for (pair = nvlist_next_nvpair(dduha->dduha_chkholds, NULL); + pair != NULL; + pair = nvlist_next_nvpair(dduha->dduha_chkholds, pair)) { + dsl_dataset_t *ds; + + VERIFY0(dsl_dataset_hold(dp, nvpair_name(pair), FTAG, &ds)); + dsl_dataset_user_hold_sync_one_impl(tmpholds, ds, + fnvpair_value_string(pair), dduha->dduha_minor, now, tx); + dsl_dataset_rele(ds, FTAG); + } + dsl_onexit_hold_cleanup(dp->dp_spa, tmpholds, dduha->dduha_minor); +} + +/* + * The full semantics of this function are described in the comment above + * lzc_hold(). + * + * To summarize: + * holds is nvl of snapname -> holdname + * errlist will be filled in with snapname -> error + * + * The snaphosts must all be in the same pool. + * + * Holds for snapshots that don't exist will be skipped. + * + * If none of the snapshots for requested holds exist then ENOENT will be + * returned. + * + * If cleanup_minor is not 0, the holds will be temporary, which will be cleaned + * up when the process exits. + * + * On success all the holds, for snapshots that existed, will be created and 0 + * will be returned. + * + * On failure no holds will be created, the errlist will be filled in, + * and an errno will returned. + * + * In all cases the errlist will contain entries for holds where the snapshot + * didn't exist. + */ +int +dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor, nvlist_t *errlist) +{ + dsl_dataset_user_hold_arg_t dduha; + nvpair_t *pair; + int ret; + + pair = nvlist_next_nvpair(holds, NULL); + if (pair == NULL) + return (0); + + dduha.dduha_holds = holds; + dduha.dduha_chkholds = fnvlist_alloc(); + dduha.dduha_errlist = errlist; + dduha.dduha_minor = cleanup_minor; + + ret = dsl_sync_task(nvpair_name(pair), dsl_dataset_user_hold_check, + dsl_dataset_user_hold_sync, &dduha, + fnvlist_num_pairs(holds), ZFS_SPACE_CHECK_RESERVED); + fnvlist_free(dduha.dduha_chkholds); + + return (ret); +} + +typedef int (dsl_holdfunc_t)(dsl_pool_t *dp, const char *name, void *tag, + dsl_dataset_t **dsp); + +typedef struct dsl_dataset_user_release_arg { + dsl_holdfunc_t *ddura_holdfunc; + nvlist_t *ddura_holds; + nvlist_t *ddura_todelete; + nvlist_t *ddura_errlist; + nvlist_t *ddura_chkholds; +} dsl_dataset_user_release_arg_t; + +/* Place a dataset hold on the snapshot identified by passed dsobj string */ +static int +dsl_dataset_hold_obj_string(dsl_pool_t *dp, const char *dsobj, void *tag, + dsl_dataset_t **dsp) +{ + return (dsl_dataset_hold_obj(dp, strtonum(dsobj, NULL), tag, dsp)); +} + +static int +dsl_dataset_user_release_check_one(dsl_dataset_user_release_arg_t *ddura, + dsl_dataset_t *ds, nvlist_t *holds, const char *snapname) +{ + uint64_t zapobj; + nvlist_t *holds_found; + nvpair_t *pair; + objset_t *mos; + int numholds; + + if (!ds->ds_is_snapshot) + return (SET_ERROR(EINVAL)); + + if (nvlist_empty(holds)) + return (0); + + numholds = 0; + mos = ds->ds_dir->dd_pool->dp_meta_objset; + zapobj = dsl_dataset_phys(ds)->ds_userrefs_obj; + VERIFY0(nvlist_alloc(&holds_found, NV_UNIQUE_NAME, KM_SLEEP)); + + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + uint64_t tmp; + int error; + const char *holdname = nvpair_name(pair); + + if (zapobj != 0) + error = zap_lookup(mos, zapobj, holdname, 8, 1, &tmp); + else + error = SET_ERROR(ENOENT); + + /* + * Non-existent holds are put on the errlist, but don't + * cause an overall failure. + */ + if (error == ENOENT) { + if (ddura->ddura_errlist != NULL) { + char *errtag = kmem_asprintf("%s#%s", + snapname, holdname); + fnvlist_add_int32(ddura->ddura_errlist, errtag, + ENOENT); + strfree(errtag); + } + continue; + } + + if (error != 0) { + fnvlist_free(holds_found); + return (error); + } + + fnvlist_add_boolean(holds_found, holdname); + numholds++; + } + + if (DS_IS_DEFER_DESTROY(ds) && + dsl_dataset_phys(ds)->ds_num_children == 1 && + ds->ds_userrefs == numholds) { + /* we need to destroy the snapshot as well */ + if (dsl_dataset_long_held(ds)) { + fnvlist_free(holds_found); + return (SET_ERROR(EBUSY)); + } + fnvlist_add_boolean(ddura->ddura_todelete, snapname); + } + + if (numholds != 0) { + fnvlist_add_nvlist(ddura->ddura_chkholds, snapname, + holds_found); + } + fnvlist_free(holds_found); + + return (0); +} + +static int +dsl_dataset_user_release_check(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_user_release_arg_t *ddura; + dsl_holdfunc_t *holdfunc; + dsl_pool_t *dp; + nvpair_t *pair; + + if (!dmu_tx_is_syncing(tx)) + return (0); + + dp = dmu_tx_pool(tx); + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + + ddura = arg; + holdfunc = ddura->ddura_holdfunc; + + for (pair = nvlist_next_nvpair(ddura->ddura_holds, NULL); + pair != NULL; pair = nvlist_next_nvpair(ddura->ddura_holds, pair)) { + int error; + dsl_dataset_t *ds; + nvlist_t *holds; + const char *snapname = nvpair_name(pair); + + error = nvpair_value_nvlist(pair, &holds); + if (error != 0) + error = (SET_ERROR(EINVAL)); + else + error = holdfunc(dp, snapname, FTAG, &ds); + if (error == 0) { + error = dsl_dataset_user_release_check_one(ddura, ds, + holds, snapname); + dsl_dataset_rele(ds, FTAG); + } + if (error != 0) { + if (ddura->ddura_errlist != NULL) { + fnvlist_add_int32(ddura->ddura_errlist, + snapname, error); + } + /* + * Non-existent snapshots are put on the errlist, + * but don't cause an overall failure. + */ + if (error != ENOENT) + return (error); + } + } + + return (0); +} + +static void +dsl_dataset_user_release_sync_one(dsl_dataset_t *ds, nvlist_t *holds, + dmu_tx_t *tx) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + objset_t *mos = dp->dp_meta_objset; + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + int error; + const char *holdname = nvpair_name(pair); + + /* Remove temporary hold if one exists. */ + error = dsl_pool_user_release(dp, ds->ds_object, holdname, tx); + VERIFY(error == 0 || error == ENOENT); + + VERIFY0(zap_remove(mos, dsl_dataset_phys(ds)->ds_userrefs_obj, + holdname, tx)); + ds->ds_userrefs--; + + spa_history_log_internal_ds(ds, "release", tx, + "tag=%s refs=%lld", holdname, (longlong_t)ds->ds_userrefs); + } +} + +static void +dsl_dataset_user_release_sync(void *arg, dmu_tx_t *tx) +{ + dsl_dataset_user_release_arg_t *ddura = arg; + dsl_holdfunc_t *holdfunc = ddura->ddura_holdfunc; + dsl_pool_t *dp = dmu_tx_pool(tx); + nvpair_t *pair; + + ASSERT(RRW_WRITE_HELD(&dp->dp_config_rwlock)); + + for (pair = nvlist_next_nvpair(ddura->ddura_chkholds, NULL); + pair != NULL; pair = nvlist_next_nvpair(ddura->ddura_chkholds, + pair)) { + dsl_dataset_t *ds; + const char *name = nvpair_name(pair); + + VERIFY0(holdfunc(dp, name, FTAG, &ds)); + + dsl_dataset_user_release_sync_one(ds, + fnvpair_value_nvlist(pair), tx); + if (nvlist_exists(ddura->ddura_todelete, name)) { + ASSERT(ds->ds_userrefs == 0 && + dsl_dataset_phys(ds)->ds_num_children == 1 && + DS_IS_DEFER_DESTROY(ds)); + dsl_destroy_snapshot_sync_impl(ds, B_FALSE, tx); + } + dsl_dataset_rele(ds, FTAG); + } +} + +/* + * The full semantics of this function are described in the comment above + * lzc_release(). + * + * To summarize: + * Releases holds specified in the nvl holds. + * + * holds is nvl of snapname -> { holdname, ... } + * errlist will be filled in with snapname -> error + * + * If tmpdp is not NULL the names for holds should be the dsobj's of snapshots, + * otherwise they should be the names of shapshots. + * + * As a release may cause snapshots to be destroyed this trys to ensure they + * aren't mounted. + * + * The release of non-existent holds are skipped. + * + * At least one hold must have been released for the this function to succeed + * and return 0. + */ +static int +dsl_dataset_user_release_impl(nvlist_t *holds, nvlist_t *errlist, + dsl_pool_t *tmpdp) +{ + dsl_dataset_user_release_arg_t ddura; + nvpair_t *pair; + char *pool; + int error; + + pair = nvlist_next_nvpair(holds, NULL); + if (pair == NULL) + return (0); + + /* + * The release may cause snapshots to be destroyed; make sure they + * are not mounted. + */ + if (tmpdp != NULL) { + /* Temporary holds are specified by dsobj string. */ + ddura.ddura_holdfunc = dsl_dataset_hold_obj_string; + pool = spa_name(tmpdp->dp_spa); +#ifdef _KERNEL + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + dsl_dataset_t *ds; + + dsl_pool_config_enter(tmpdp, FTAG); + error = dsl_dataset_hold_obj_string(tmpdp, + nvpair_name(pair), FTAG, &ds); + if (error == 0) { + char name[MAXNAMELEN]; + dsl_dataset_name(ds, name); + dsl_pool_config_exit(tmpdp, FTAG); + dsl_dataset_rele(ds, FTAG); + (void) zfs_unmount_snap(name); + } else { + dsl_pool_config_exit(tmpdp, FTAG); + } + } +#endif + } else { + /* Non-temporary holds are specified by name. */ + ddura.ddura_holdfunc = dsl_dataset_hold; + pool = nvpair_name(pair); +#ifdef _KERNEL + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + (void) zfs_unmount_snap(nvpair_name(pair)); + } +#endif + } + + ddura.ddura_holds = holds; + ddura.ddura_errlist = errlist; + VERIFY0(nvlist_alloc(&ddura.ddura_todelete, NV_UNIQUE_NAME, + KM_SLEEP)); + VERIFY0(nvlist_alloc(&ddura.ddura_chkholds, NV_UNIQUE_NAME, + KM_SLEEP)); + + error = dsl_sync_task(pool, dsl_dataset_user_release_check, + dsl_dataset_user_release_sync, &ddura, 0, ZFS_SPACE_CHECK_NONE); + fnvlist_free(ddura.ddura_todelete); + fnvlist_free(ddura.ddura_chkholds); + + return (error); +} + +/* + * holds is nvl of snapname -> { holdname, ... } + * errlist will be filled in with snapname -> error + */ +int +dsl_dataset_user_release(nvlist_t *holds, nvlist_t *errlist) +{ + return (dsl_dataset_user_release_impl(holds, errlist, NULL)); +} + +/* + * holds is nvl of snapdsobj -> { holdname, ... } + */ +void +dsl_dataset_user_release_tmp(struct dsl_pool *dp, nvlist_t *holds) +{ + ASSERT(dp != NULL); + (void) dsl_dataset_user_release_impl(holds, NULL, dp); +} + +int +dsl_dataset_get_holds(const char *dsname, nvlist_t *nvl) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + int err; + + err = dsl_pool_hold(dsname, FTAG, &dp); + if (err != 0) + return (err); + err = dsl_dataset_hold(dp, dsname, FTAG, &ds); + if (err != 0) { + dsl_pool_rele(dp, FTAG); + return (err); + } + + if (dsl_dataset_phys(ds)->ds_userrefs_obj != 0) { + zap_attribute_t *za; + zap_cursor_t zc; + + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + for (zap_cursor_init(&zc, ds->ds_dir->dd_pool->dp_meta_objset, + dsl_dataset_phys(ds)->ds_userrefs_obj); + zap_cursor_retrieve(&zc, za) == 0; + zap_cursor_advance(&zc)) { + fnvlist_add_uint64(nvl, za->za_name, + za->za_first_integer); + } + zap_cursor_fini(&zc); + kmem_free(za, sizeof (zap_attribute_t)); + } + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/fm.c +++ linux-4.4.0/zfs/module/zfs/fm.c @@ -0,0 +1,1660 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +/* + * Fault Management Architecture (FMA) Resource and Protocol Support + * + * The routines contained herein provide services to support kernel subsystems + * in publishing fault management telemetry (see PSARC 2002/412 and 2003/089). + * + * Name-Value Pair Lists + * + * The embodiment of an FMA protocol element (event, fmri or authority) is a + * name-value pair list (nvlist_t). FMA-specific nvlist construtor and + * destructor functions, fm_nvlist_create() and fm_nvlist_destroy(), are used + * to create an nvpair list using custom allocators. Callers may choose to + * allocate either from the kernel memory allocator, or from a preallocated + * buffer, useful in constrained contexts like high-level interrupt routines. + * + * Protocol Event and FMRI Construction + * + * Convenience routines are provided to construct nvlist events according to + * the FMA Event Protocol and Naming Schema specification for ereports and + * FMRIs for the dev, cpu, hc, mem, legacy hc and de schemes. + * + * ENA Manipulation + * + * Routines to generate ENA formats 0, 1 and 2 are available as well as + * routines to increment formats 1 and 2. Individual fields within the + * ENA are extractable via fm_ena_time_get(), fm_ena_id_get(), + * fm_ena_format_get() and fm_ena_gen_get(). + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int zfs_zevent_len_max = 0; +int zfs_zevent_cols = 80; +int zfs_zevent_console = 0; + +static int zevent_len_cur = 0; +static int zevent_waiters = 0; +static int zevent_flags = 0; + +/* + * The EID (Event IDentifier) is used to uniquely tag a zevent when it is + * posted. The posted EIDs are monotonically increasing but not persistent. + * They will be reset to the initial value (1) each time the kernel module is + * loaded. + */ +static uint64_t zevent_eid = 0; + +static kmutex_t zevent_lock; +static list_t zevent_list; +static kcondvar_t zevent_cv; +#endif /* _KERNEL */ + +extern void fastreboot_disable_highpil(void); + +/* + * Common fault management kstats to record event generation failures + */ + +struct erpt_kstat { + kstat_named_t erpt_dropped; /* num erpts dropped on post */ + kstat_named_t erpt_set_failed; /* num erpt set failures */ + kstat_named_t fmri_set_failed; /* num fmri set failures */ + kstat_named_t payload_set_failed; /* num payload set failures */ +}; + +static struct erpt_kstat erpt_kstat_data = { + { "erpt-dropped", KSTAT_DATA_UINT64 }, + { "erpt-set-failed", KSTAT_DATA_UINT64 }, + { "fmri-set-failed", KSTAT_DATA_UINT64 }, + { "payload-set-failed", KSTAT_DATA_UINT64 } +}; + +kstat_t *fm_ksp; + +#ifdef _KERNEL + +/* + * Formatting utility function for fm_nvprintr. We attempt to wrap chunks of + * output so they aren't split across console lines, and return the end column. + */ +/*PRINTFLIKE4*/ +static int +fm_printf(int depth, int c, int cols, const char *format, ...) +{ + va_list ap; + int width; + char c1; + + va_start(ap, format); + width = vsnprintf(&c1, sizeof (c1), format, ap); + va_end(ap); + + if (c + width >= cols) { + console_printf("\n"); + c = 0; + if (format[0] != ' ' && depth > 0) { + console_printf(" "); + c++; + } + } + + va_start(ap, format); + console_vprintf(format, ap); + va_end(ap); + + return ((c + width) % cols); +} + +/* + * Recursively print a nvlist in the specified column width and return the + * column we end up in. This function is called recursively by fm_nvprint(), + * below. We generically format the entire nvpair using hexadecimal + * integers and strings, and elide any integer arrays. Arrays are basically + * used for cache dumps right now, so we suppress them so as not to overwhelm + * the amount of console output we produce at panic time. This can be further + * enhanced as FMA technology grows based upon the needs of consumers. All + * FMA telemetry is logged using the dump device transport, so the console + * output serves only as a fallback in case this procedure is unsuccessful. + */ +static int +fm_nvprintr(nvlist_t *nvl, int d, int c, int cols) +{ + nvpair_t *nvp; + + for (nvp = nvlist_next_nvpair(nvl, NULL); + nvp != NULL; nvp = nvlist_next_nvpair(nvl, nvp)) { + + data_type_t type = nvpair_type(nvp); + const char *name = nvpair_name(nvp); + + boolean_t b; + uint8_t i8; + uint16_t i16; + uint32_t i32; + uint64_t i64; + char *str; + nvlist_t *cnv; + + if (strcmp(name, FM_CLASS) == 0) + continue; /* already printed by caller */ + + c = fm_printf(d, c, cols, " %s=", name); + + switch (type) { + case DATA_TYPE_BOOLEAN: + c = fm_printf(d + 1, c, cols, " 1"); + break; + + case DATA_TYPE_BOOLEAN_VALUE: + (void) nvpair_value_boolean_value(nvp, &b); + c = fm_printf(d + 1, c, cols, b ? "1" : "0"); + break; + + case DATA_TYPE_BYTE: + (void) nvpair_value_byte(nvp, &i8); + c = fm_printf(d + 1, c, cols, "0x%x", i8); + break; + + case DATA_TYPE_INT8: + (void) nvpair_value_int8(nvp, (void *)&i8); + c = fm_printf(d + 1, c, cols, "0x%x", i8); + break; + + case DATA_TYPE_UINT8: + (void) nvpair_value_uint8(nvp, &i8); + c = fm_printf(d + 1, c, cols, "0x%x", i8); + break; + + case DATA_TYPE_INT16: + (void) nvpair_value_int16(nvp, (void *)&i16); + c = fm_printf(d + 1, c, cols, "0x%x", i16); + break; + + case DATA_TYPE_UINT16: + (void) nvpair_value_uint16(nvp, &i16); + c = fm_printf(d + 1, c, cols, "0x%x", i16); + break; + + case DATA_TYPE_INT32: + (void) nvpair_value_int32(nvp, (void *)&i32); + c = fm_printf(d + 1, c, cols, "0x%x", i32); + break; + + case DATA_TYPE_UINT32: + (void) nvpair_value_uint32(nvp, &i32); + c = fm_printf(d + 1, c, cols, "0x%x", i32); + break; + + case DATA_TYPE_INT64: + (void) nvpair_value_int64(nvp, (void *)&i64); + c = fm_printf(d + 1, c, cols, "0x%llx", + (u_longlong_t)i64); + break; + + case DATA_TYPE_UINT64: + (void) nvpair_value_uint64(nvp, &i64); + c = fm_printf(d + 1, c, cols, "0x%llx", + (u_longlong_t)i64); + break; + + case DATA_TYPE_HRTIME: + (void) nvpair_value_hrtime(nvp, (void *)&i64); + c = fm_printf(d + 1, c, cols, "0x%llx", + (u_longlong_t)i64); + break; + + case DATA_TYPE_STRING: + (void) nvpair_value_string(nvp, &str); + c = fm_printf(d + 1, c, cols, "\"%s\"", + str ? str : ""); + break; + + case DATA_TYPE_NVLIST: + c = fm_printf(d + 1, c, cols, "["); + (void) nvpair_value_nvlist(nvp, &cnv); + c = fm_nvprintr(cnv, d + 1, c, cols); + c = fm_printf(d + 1, c, cols, " ]"); + break; + + case DATA_TYPE_NVLIST_ARRAY: { + nvlist_t **val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "["); + (void) nvpair_value_nvlist_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) { + c = fm_nvprintr(val[i], d + 1, c, cols); + } + c = fm_printf(d + 1, c, cols, " ]"); + } + break; + + case DATA_TYPE_INT8_ARRAY: { + int8_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_int8_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_UINT8_ARRAY: { + uint8_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_uint8_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_INT16_ARRAY: { + int16_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_int16_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_UINT16_ARRAY: { + uint16_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_uint16_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_INT32_ARRAY: { + int32_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_int32_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_UINT32_ARRAY: { + uint32_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_uint32_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_INT64_ARRAY: { + int64_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_int64_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_UINT64_ARRAY: { + uint64_t *val; + uint_t i, nelem; + + c = fm_printf(d + 1, c, cols, "[ "); + (void) nvpair_value_uint64_array(nvp, &val, &nelem); + for (i = 0; i < nelem; i++) + c = fm_printf(d + 1, c, cols, "0x%llx ", + (u_longlong_t)val[i]); + + c = fm_printf(d + 1, c, cols, "]"); + break; + } + + case DATA_TYPE_STRING_ARRAY: + case DATA_TYPE_BOOLEAN_ARRAY: + case DATA_TYPE_BYTE_ARRAY: + c = fm_printf(d + 1, c, cols, "[...]"); + break; + + case DATA_TYPE_UNKNOWN: + c = fm_printf(d + 1, c, cols, ""); + break; + } + } + + return (c); +} + +void +fm_nvprint(nvlist_t *nvl) +{ + char *class; + int c = 0; + + console_printf("\n"); + + if (nvlist_lookup_string(nvl, FM_CLASS, &class) == 0) + c = fm_printf(0, c, zfs_zevent_cols, "%s", class); + + if (fm_nvprintr(nvl, 0, c, zfs_zevent_cols) != 0) + console_printf("\n"); + + console_printf("\n"); +} + +static zevent_t * +zfs_zevent_alloc(void) +{ + zevent_t *ev; + + ev = kmem_zalloc(sizeof (zevent_t), KM_SLEEP); + if (ev == NULL) + return (NULL); + + list_create(&ev->ev_ze_list, sizeof (zfs_zevent_t), + offsetof(zfs_zevent_t, ze_node)); + list_link_init(&ev->ev_node); + + return (ev); +} + +static void +zfs_zevent_free(zevent_t *ev) +{ + /* Run provided cleanup callback */ + ev->ev_cb(ev->ev_nvl, ev->ev_detector); + + list_destroy(&ev->ev_ze_list); + kmem_free(ev, sizeof (zevent_t)); +} + +static void +zfs_zevent_drain(zevent_t *ev) +{ + zfs_zevent_t *ze; + + ASSERT(MUTEX_HELD(&zevent_lock)); + list_remove(&zevent_list, ev); + + /* Remove references to this event in all private file data */ + while ((ze = list_head(&ev->ev_ze_list)) != NULL) { + list_remove(&ev->ev_ze_list, ze); + ze->ze_zevent = NULL; + ze->ze_dropped++; + } + + zfs_zevent_free(ev); +} + +void +zfs_zevent_drain_all(int *count) +{ + zevent_t *ev; + + mutex_enter(&zevent_lock); + while ((ev = list_head(&zevent_list)) != NULL) + zfs_zevent_drain(ev); + + *count = zevent_len_cur; + zevent_len_cur = 0; + mutex_exit(&zevent_lock); +} + +/* + * New zevents are inserted at the head. If the maximum queue + * length is exceeded a zevent will be drained from the tail. + * As part of this any user space processes which currently have + * a reference to this zevent_t in their private data will have + * this reference set to NULL. + */ +static void +zfs_zevent_insert(zevent_t *ev) +{ + ASSERT(MUTEX_HELD(&zevent_lock)); + list_insert_head(&zevent_list, ev); + + if (zevent_len_cur >= zfs_zevent_len_max) + zfs_zevent_drain(list_tail(&zevent_list)); + else + zevent_len_cur++; +} + +/* + * Post a zevent. The cb will be called when nvl and detector are no longer + * needed, i.e.: + * - An error happened and a zevent can't be posted. In this case, cb is called + * before zfs_zevent_post() returns. + * - The event is being drained and freed. + */ +int +zfs_zevent_post(nvlist_t *nvl, nvlist_t *detector, zevent_cb_t *cb) +{ + int64_t tv_array[2]; + timestruc_t tv; + uint64_t eid; + size_t nvl_size = 0; + zevent_t *ev; + int error; + + ASSERT(cb != NULL); + + gethrestime(&tv); + tv_array[0] = tv.tv_sec; + tv_array[1] = tv.tv_nsec; + + error = nvlist_add_int64_array(nvl, FM_EREPORT_TIME, tv_array, 2); + if (error) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + goto out; + } + + eid = atomic_inc_64_nv(&zevent_eid); + error = nvlist_add_uint64(nvl, FM_EREPORT_EID, eid); + if (error) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + goto out; + } + + error = nvlist_size(nvl, &nvl_size, NV_ENCODE_NATIVE); + if (error) { + atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1); + goto out; + } + + if (nvl_size > ERPT_DATA_SZ || nvl_size == 0) { + atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1); + error = EOVERFLOW; + goto out; + } + + if (zfs_zevent_console) + fm_nvprint(nvl); + + ev = zfs_zevent_alloc(); + if (ev == NULL) { + atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1); + error = ENOMEM; + goto out; + } + + ev->ev_nvl = nvl; + ev->ev_detector = detector; + ev->ev_cb = cb; + ev->ev_eid = eid; + + mutex_enter(&zevent_lock); + zfs_zevent_insert(ev); + cv_broadcast(&zevent_cv); + mutex_exit(&zevent_lock); + +out: + if (error) + cb(nvl, detector); + + return (error); +} + +static int +zfs_zevent_minor_to_state(minor_t minor, zfs_zevent_t **ze) +{ + *ze = zfsdev_get_state(minor, ZST_ZEVENT); + if (*ze == NULL) + return (EBADF); + + return (0); +} + +int +zfs_zevent_fd_hold(int fd, minor_t *minorp, zfs_zevent_t **ze) +{ + file_t *fp; + int error; + + fp = getf(fd); + if (fp == NULL) + return (EBADF); + + error = zfsdev_getminor(fp->f_file, minorp); + if (error == 0) + error = zfs_zevent_minor_to_state(*minorp, ze); + + if (error) + zfs_zevent_fd_rele(fd); + + return (error); +} + +void +zfs_zevent_fd_rele(int fd) +{ + releasef(fd); +} + +/* + * Get the next zevent in the stream and place a copy in 'event'. This + * may fail with ENOMEM if the encoded nvlist size exceeds the passed + * 'event_size'. In this case the stream pointer is not advanced and + * and 'event_size' is set to the minimum required buffer size. + */ +int +zfs_zevent_next(zfs_zevent_t *ze, nvlist_t **event, uint64_t *event_size, + uint64_t *dropped) +{ + zevent_t *ev; + size_t size; + int error = 0; + + mutex_enter(&zevent_lock); + if (ze->ze_zevent == NULL) { + /* New stream start at the beginning/tail */ + ev = list_tail(&zevent_list); + if (ev == NULL) { + error = ENOENT; + goto out; + } + } else { + /* + * Existing stream continue with the next element and remove + * ourselves from the wait queue for the previous element + */ + ev = list_prev(&zevent_list, ze->ze_zevent); + if (ev == NULL) { + error = ENOENT; + goto out; + } + } + + VERIFY(nvlist_size(ev->ev_nvl, &size, NV_ENCODE_NATIVE) == 0); + if (size > *event_size) { + *event_size = size; + error = ENOMEM; + goto out; + } + + if (ze->ze_zevent) + list_remove(&ze->ze_zevent->ev_ze_list, ze); + + ze->ze_zevent = ev; + list_insert_head(&ev->ev_ze_list, ze); + nvlist_dup(ev->ev_nvl, event, KM_SLEEP); + *dropped = ze->ze_dropped; + ze->ze_dropped = 0; +out: + mutex_exit(&zevent_lock); + + return (error); +} + +int +zfs_zevent_wait(zfs_zevent_t *ze) +{ + int error = 0; + + mutex_enter(&zevent_lock); + + if (zevent_flags & ZEVENT_SHUTDOWN) { + error = ESHUTDOWN; + goto out; + } + + zevent_waiters++; + cv_wait_sig(&zevent_cv, &zevent_lock); + if (issig(JUSTLOOKING)) + error = EINTR; + + zevent_waiters--; +out: + mutex_exit(&zevent_lock); + + return (error); +} + +/* + * The caller may seek to a specific EID by passing that EID. If the EID + * is still available in the posted list of events the cursor is positioned + * there. Otherwise ENOENT is returned and the cursor is not moved. + * + * There are two reserved EIDs which may be passed and will never fail. + * ZEVENT_SEEK_START positions the cursor at the start of the list, and + * ZEVENT_SEEK_END positions the cursor at the end of the list. + */ +int +zfs_zevent_seek(zfs_zevent_t *ze, uint64_t eid) +{ + zevent_t *ev; + int error = 0; + + mutex_enter(&zevent_lock); + + if (eid == ZEVENT_SEEK_START) { + if (ze->ze_zevent) + list_remove(&ze->ze_zevent->ev_ze_list, ze); + + ze->ze_zevent = NULL; + goto out; + } + + if (eid == ZEVENT_SEEK_END) { + if (ze->ze_zevent) + list_remove(&ze->ze_zevent->ev_ze_list, ze); + + ev = list_head(&zevent_list); + if (ev) { + ze->ze_zevent = ev; + list_insert_head(&ev->ev_ze_list, ze); + } else { + ze->ze_zevent = NULL; + } + + goto out; + } + + for (ev = list_tail(&zevent_list); ev != NULL; + ev = list_prev(&zevent_list, ev)) { + if (ev->ev_eid == eid) { + if (ze->ze_zevent) + list_remove(&ze->ze_zevent->ev_ze_list, ze); + + ze->ze_zevent = ev; + list_insert_head(&ev->ev_ze_list, ze); + break; + } + } + + if (ev == NULL) + error = ENOENT; + +out: + mutex_exit(&zevent_lock); + + return (error); +} + +void +zfs_zevent_init(zfs_zevent_t **zep) +{ + zfs_zevent_t *ze; + + ze = *zep = kmem_zalloc(sizeof (zfs_zevent_t), KM_SLEEP); + list_link_init(&ze->ze_node); +} + +void +zfs_zevent_destroy(zfs_zevent_t *ze) +{ + mutex_enter(&zevent_lock); + if (ze->ze_zevent) + list_remove(&ze->ze_zevent->ev_ze_list, ze); + mutex_exit(&zevent_lock); + + kmem_free(ze, sizeof (zfs_zevent_t)); +} +#endif /* _KERNEL */ + +/* + * Wrapppers for FM nvlist allocators + */ +/* ARGSUSED */ +static void * +i_fm_alloc(nv_alloc_t *nva, size_t size) +{ + return (kmem_zalloc(size, KM_SLEEP)); +} + +/* ARGSUSED */ +static void +i_fm_free(nv_alloc_t *nva, void *buf, size_t size) +{ + kmem_free(buf, size); +} + +const nv_alloc_ops_t fm_mem_alloc_ops = { + NULL, + NULL, + i_fm_alloc, + i_fm_free, + NULL +}; + +/* + * Create and initialize a new nv_alloc_t for a fixed buffer, buf. A pointer + * to the newly allocated nv_alloc_t structure is returned upon success or NULL + * is returned to indicate that the nv_alloc structure could not be created. + */ +nv_alloc_t * +fm_nva_xcreate(char *buf, size_t bufsz) +{ + nv_alloc_t *nvhdl = kmem_zalloc(sizeof (nv_alloc_t), KM_SLEEP); + + if (bufsz == 0 || nv_alloc_init(nvhdl, nv_fixed_ops, buf, bufsz) != 0) { + kmem_free(nvhdl, sizeof (nv_alloc_t)); + return (NULL); + } + + return (nvhdl); +} + +/* + * Destroy a previously allocated nv_alloc structure. The fixed buffer + * associated with nva must be freed by the caller. + */ +void +fm_nva_xdestroy(nv_alloc_t *nva) +{ + nv_alloc_fini(nva); + kmem_free(nva, sizeof (nv_alloc_t)); +} + +/* + * Create a new nv list. A pointer to a new nv list structure is returned + * upon success or NULL is returned to indicate that the structure could + * not be created. The newly created nv list is created and managed by the + * operations installed in nva. If nva is NULL, the default FMA nva + * operations are installed and used. + * + * When called from the kernel and nva == NULL, this function must be called + * from passive kernel context with no locks held that can prevent a + * sleeping memory allocation from occurring. Otherwise, this function may + * be called from other kernel contexts as long a valid nva created via + * fm_nva_create() is supplied. + */ +nvlist_t * +fm_nvlist_create(nv_alloc_t *nva) +{ + int hdl_alloced = 0; + nvlist_t *nvl; + nv_alloc_t *nvhdl; + + if (nva == NULL) { + nvhdl = kmem_zalloc(sizeof (nv_alloc_t), KM_SLEEP); + + if (nv_alloc_init(nvhdl, &fm_mem_alloc_ops, NULL, 0) != 0) { + kmem_free(nvhdl, sizeof (nv_alloc_t)); + return (NULL); + } + hdl_alloced = 1; + } else { + nvhdl = nva; + } + + if (nvlist_xalloc(&nvl, NV_UNIQUE_NAME, nvhdl) != 0) { + if (hdl_alloced) { + nv_alloc_fini(nvhdl); + kmem_free(nvhdl, sizeof (nv_alloc_t)); + } + return (NULL); + } + + return (nvl); +} + +/* + * Destroy a previously allocated nvlist structure. flag indicates whether + * or not the associated nva structure should be freed (FM_NVA_FREE) or + * retained (FM_NVA_RETAIN). Retaining the nv alloc structure allows + * it to be re-used for future nvlist creation operations. + */ +void +fm_nvlist_destroy(nvlist_t *nvl, int flag) +{ + nv_alloc_t *nva = nvlist_lookup_nv_alloc(nvl); + + nvlist_free(nvl); + + if (nva != NULL) { + if (flag == FM_NVA_FREE) + fm_nva_xdestroy(nva); + } +} + +int +i_fm_payload_set(nvlist_t *payload, const char *name, va_list ap) +{ + int nelem, ret = 0; + data_type_t type; + + while (ret == 0 && name != NULL) { + type = va_arg(ap, data_type_t); + switch (type) { + case DATA_TYPE_BYTE: + ret = nvlist_add_byte(payload, name, + va_arg(ap, uint_t)); + break; + case DATA_TYPE_BYTE_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_byte_array(payload, name, + va_arg(ap, uchar_t *), nelem); + break; + case DATA_TYPE_BOOLEAN_VALUE: + ret = nvlist_add_boolean_value(payload, name, + va_arg(ap, boolean_t)); + break; + case DATA_TYPE_BOOLEAN_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_boolean_array(payload, name, + va_arg(ap, boolean_t *), nelem); + break; + case DATA_TYPE_INT8: + ret = nvlist_add_int8(payload, name, + va_arg(ap, int)); + break; + case DATA_TYPE_INT8_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_int8_array(payload, name, + va_arg(ap, int8_t *), nelem); + break; + case DATA_TYPE_UINT8: + ret = nvlist_add_uint8(payload, name, + va_arg(ap, uint_t)); + break; + case DATA_TYPE_UINT8_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_uint8_array(payload, name, + va_arg(ap, uint8_t *), nelem); + break; + case DATA_TYPE_INT16: + ret = nvlist_add_int16(payload, name, + va_arg(ap, int)); + break; + case DATA_TYPE_INT16_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_int16_array(payload, name, + va_arg(ap, int16_t *), nelem); + break; + case DATA_TYPE_UINT16: + ret = nvlist_add_uint16(payload, name, + va_arg(ap, uint_t)); + break; + case DATA_TYPE_UINT16_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_uint16_array(payload, name, + va_arg(ap, uint16_t *), nelem); + break; + case DATA_TYPE_INT32: + ret = nvlist_add_int32(payload, name, + va_arg(ap, int32_t)); + break; + case DATA_TYPE_INT32_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_int32_array(payload, name, + va_arg(ap, int32_t *), nelem); + break; + case DATA_TYPE_UINT32: + ret = nvlist_add_uint32(payload, name, + va_arg(ap, uint32_t)); + break; + case DATA_TYPE_UINT32_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_uint32_array(payload, name, + va_arg(ap, uint32_t *), nelem); + break; + case DATA_TYPE_INT64: + ret = nvlist_add_int64(payload, name, + va_arg(ap, int64_t)); + break; + case DATA_TYPE_INT64_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_int64_array(payload, name, + va_arg(ap, int64_t *), nelem); + break; + case DATA_TYPE_UINT64: + ret = nvlist_add_uint64(payload, name, + va_arg(ap, uint64_t)); + break; + case DATA_TYPE_UINT64_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_uint64_array(payload, name, + va_arg(ap, uint64_t *), nelem); + break; + case DATA_TYPE_STRING: + ret = nvlist_add_string(payload, name, + va_arg(ap, char *)); + break; + case DATA_TYPE_STRING_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_string_array(payload, name, + va_arg(ap, char **), nelem); + break; + case DATA_TYPE_NVLIST: + ret = nvlist_add_nvlist(payload, name, + va_arg(ap, nvlist_t *)); + break; + case DATA_TYPE_NVLIST_ARRAY: + nelem = va_arg(ap, int); + ret = nvlist_add_nvlist_array(payload, name, + va_arg(ap, nvlist_t **), nelem); + break; + default: + ret = EINVAL; + } + + name = va_arg(ap, char *); + } + return (ret); +} + +void +fm_payload_set(nvlist_t *payload, ...) +{ + int ret; + const char *name; + va_list ap; + + va_start(ap, payload); + name = va_arg(ap, char *); + ret = i_fm_payload_set(payload, name, ap); + va_end(ap); + + if (ret) + atomic_add_64( + &erpt_kstat_data.payload_set_failed.value.ui64, 1); +} + +/* + * Set-up and validate the members of an ereport event according to: + * + * Member name Type Value + * ==================================================== + * class string ereport + * version uint8_t 0 + * ena uint64_t + * detector nvlist_t + * ereport-payload nvlist_t + * + * We don't actually add a 'version' member to the payload. Really, + * the version quoted to us by our caller is that of the category 1 + * "ereport" event class (and we require FM_EREPORT_VERS0) but + * the payload version of the actual leaf class event under construction + * may be something else. Callers should supply a version in the varargs, + * or (better) we could take two version arguments - one for the + * ereport category 1 classification (expect FM_EREPORT_VERS0) and one + * for the leaf class. + */ +void +fm_ereport_set(nvlist_t *ereport, int version, const char *erpt_class, + uint64_t ena, const nvlist_t *detector, ...) +{ + char ereport_class[FM_MAX_CLASS]; + const char *name; + va_list ap; + int ret; + + if (version != FM_EREPORT_VERS0) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + return; + } + + (void) snprintf(ereport_class, FM_MAX_CLASS, "%s.%s", + FM_EREPORT_CLASS, erpt_class); + if (nvlist_add_string(ereport, FM_CLASS, ereport_class) != 0) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_uint64(ereport, FM_EREPORT_ENA, ena)) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + } + + if (nvlist_add_nvlist(ereport, FM_EREPORT_DETECTOR, + (nvlist_t *)detector) != 0) { + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); + } + + va_start(ap, detector); + name = va_arg(ap, const char *); + ret = i_fm_payload_set(ereport, name, ap); + va_end(ap); + + if (ret) + atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1); +} + +/* + * Set-up and validate the members of an hc fmri according to; + * + * Member name Type Value + * =================================================== + * version uint8_t 0 + * auth nvlist_t + * hc-name string + * hc-id string + * + * Note that auth and hc-id are optional members. + */ + +#define HC_MAXPAIRS 20 +#define HC_MAXNAMELEN 50 + +static int +fm_fmri_hc_set_common(nvlist_t *fmri, int version, const nvlist_t *auth) +{ + if (version != FM_HC_SCHEME_VERSION) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return (0); + } + + if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0 || + nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_HC) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return (0); + } + + if (auth != NULL && nvlist_add_nvlist(fmri, FM_FMRI_AUTHORITY, + (nvlist_t *)auth) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return (0); + } + + return (1); +} + +void +fm_fmri_hc_set(nvlist_t *fmri, int version, const nvlist_t *auth, + nvlist_t *snvl, int npairs, ...) +{ + nv_alloc_t *nva = nvlist_lookup_nv_alloc(fmri); + nvlist_t *pairs[HC_MAXPAIRS]; + va_list ap; + int i; + + if (!fm_fmri_hc_set_common(fmri, version, auth)) + return; + + npairs = MIN(npairs, HC_MAXPAIRS); + + va_start(ap, npairs); + for (i = 0; i < npairs; i++) { + const char *name = va_arg(ap, const char *); + uint32_t id = va_arg(ap, uint32_t); + char idstr[11]; + + (void) snprintf(idstr, sizeof (idstr), "%u", id); + + pairs[i] = fm_nvlist_create(nva); + if (nvlist_add_string(pairs[i], FM_FMRI_HC_NAME, name) != 0 || + nvlist_add_string(pairs[i], FM_FMRI_HC_ID, idstr) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + } + va_end(ap); + + if (nvlist_add_nvlist_array(fmri, FM_FMRI_HC_LIST, pairs, npairs) != 0) + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + + for (i = 0; i < npairs; i++) + fm_nvlist_destroy(pairs[i], FM_NVA_RETAIN); + + if (snvl != NULL) { + if (nvlist_add_nvlist(fmri, FM_FMRI_HC_SPECIFIC, snvl) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + } +} + +void +fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth, + nvlist_t *snvl, nvlist_t *bboard, int npairs, ...) +{ + nv_alloc_t *nva = nvlist_lookup_nv_alloc(fmri); + nvlist_t *pairs[HC_MAXPAIRS]; + nvlist_t **hcl; + uint_t n; + int i, j; + va_list ap; + char *hcname, *hcid; + + if (!fm_fmri_hc_set_common(fmri, version, auth)) + return; + + /* + * copy the bboard nvpairs to the pairs array + */ + if (nvlist_lookup_nvlist_array(bboard, FM_FMRI_HC_LIST, &hcl, &n) + != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + for (i = 0; i < n; i++) { + if (nvlist_lookup_string(hcl[i], FM_FMRI_HC_NAME, + &hcname) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + if (nvlist_lookup_string(hcl[i], FM_FMRI_HC_ID, &hcid) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + pairs[i] = fm_nvlist_create(nva); + if (nvlist_add_string(pairs[i], FM_FMRI_HC_NAME, hcname) != 0 || + nvlist_add_string(pairs[i], FM_FMRI_HC_ID, hcid) != 0) { + for (j = 0; j <= i; j++) { + if (pairs[j] != NULL) + fm_nvlist_destroy(pairs[j], + FM_NVA_RETAIN); + } + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + } + + /* + * create the pairs from passed in pairs + */ + npairs = MIN(npairs, HC_MAXPAIRS); + + va_start(ap, npairs); + for (i = n; i < npairs + n; i++) { + const char *name = va_arg(ap, const char *); + uint32_t id = va_arg(ap, uint32_t); + char idstr[11]; + (void) snprintf(idstr, sizeof (idstr), "%u", id); + pairs[i] = fm_nvlist_create(nva); + if (nvlist_add_string(pairs[i], FM_FMRI_HC_NAME, name) != 0 || + nvlist_add_string(pairs[i], FM_FMRI_HC_ID, idstr) != 0) { + for (j = 0; j <= i; j++) { + if (pairs[j] != NULL) + fm_nvlist_destroy(pairs[j], + FM_NVA_RETAIN); + } + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + } + va_end(ap); + + /* + * Create the fmri hc list + */ + if (nvlist_add_nvlist_array(fmri, FM_FMRI_HC_LIST, pairs, + npairs + n) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + for (i = 0; i < npairs + n; i++) { + fm_nvlist_destroy(pairs[i], FM_NVA_RETAIN); + } + + if (snvl != NULL) { + if (nvlist_add_nvlist(fmri, FM_FMRI_HC_SPECIFIC, snvl) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + } +} + +/* + * Set-up and validate the members of an dev fmri according to: + * + * Member name Type Value + * ==================================================== + * version uint8_t 0 + * auth nvlist_t + * devpath string + * [devid] string + * [target-port-l0id] string + * + * Note that auth and devid are optional members. + */ +void +fm_fmri_dev_set(nvlist_t *fmri_dev, int version, const nvlist_t *auth, + const char *devpath, const char *devid, const char *tpl0) +{ + int err = 0; + + if (version != DEV_SCHEME_VERSION0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + err |= nvlist_add_uint8(fmri_dev, FM_VERSION, version); + err |= nvlist_add_string(fmri_dev, FM_FMRI_SCHEME, FM_FMRI_SCHEME_DEV); + + if (auth != NULL) { + err |= nvlist_add_nvlist(fmri_dev, FM_FMRI_AUTHORITY, + (nvlist_t *)auth); + } + + err |= nvlist_add_string(fmri_dev, FM_FMRI_DEV_PATH, devpath); + + if (devid != NULL) + err |= nvlist_add_string(fmri_dev, FM_FMRI_DEV_ID, devid); + + if (tpl0 != NULL) + err |= nvlist_add_string(fmri_dev, FM_FMRI_DEV_TGTPTLUN0, tpl0); + + if (err) + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + +} + +/* + * Set-up and validate the members of an cpu fmri according to: + * + * Member name Type Value + * ==================================================== + * version uint8_t 0 + * auth nvlist_t + * cpuid uint32_t + * cpumask uint8_t + * serial uint64_t + * + * Note that auth, cpumask, serial are optional members. + * + */ +void +fm_fmri_cpu_set(nvlist_t *fmri_cpu, int version, const nvlist_t *auth, + uint32_t cpu_id, uint8_t *cpu_maskp, const char *serial_idp) +{ + uint64_t *failedp = &erpt_kstat_data.fmri_set_failed.value.ui64; + + if (version < CPU_SCHEME_VERSION1) { + atomic_add_64(failedp, 1); + return; + } + + if (nvlist_add_uint8(fmri_cpu, FM_VERSION, version) != 0) { + atomic_add_64(failedp, 1); + return; + } + + if (nvlist_add_string(fmri_cpu, FM_FMRI_SCHEME, + FM_FMRI_SCHEME_CPU) != 0) { + atomic_add_64(failedp, 1); + return; + } + + if (auth != NULL && nvlist_add_nvlist(fmri_cpu, FM_FMRI_AUTHORITY, + (nvlist_t *)auth) != 0) + atomic_add_64(failedp, 1); + + if (nvlist_add_uint32(fmri_cpu, FM_FMRI_CPU_ID, cpu_id) != 0) + atomic_add_64(failedp, 1); + + if (cpu_maskp != NULL && nvlist_add_uint8(fmri_cpu, FM_FMRI_CPU_MASK, + *cpu_maskp) != 0) + atomic_add_64(failedp, 1); + + if (serial_idp == NULL || nvlist_add_string(fmri_cpu, + FM_FMRI_CPU_SERIAL_ID, (char *)serial_idp) != 0) + atomic_add_64(failedp, 1); +} + +/* + * Set-up and validate the members of a mem according to: + * + * Member name Type Value + * ==================================================== + * version uint8_t 0 + * auth nvlist_t [optional] + * unum string + * serial string [optional*] + * offset uint64_t [optional] + * + * * serial is required if offset is present + */ +void +fm_fmri_mem_set(nvlist_t *fmri, int version, const nvlist_t *auth, + const char *unum, const char *serial, uint64_t offset) +{ + if (version != MEM_SCHEME_VERSION0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (!serial && (offset != (uint64_t)-1)) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_MEM) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (auth != NULL) { + if (nvlist_add_nvlist(fmri, FM_FMRI_AUTHORITY, + (nvlist_t *)auth) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + } + + if (nvlist_add_string(fmri, FM_FMRI_MEM_UNUM, unum) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + + if (serial != NULL) { + if (nvlist_add_string_array(fmri, FM_FMRI_MEM_SERIAL_ID, + (char **)&serial, 1) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + if (offset != (uint64_t)-1) { + if (nvlist_add_uint64(fmri, FM_FMRI_MEM_OFFSET, + offset) != 0) { + atomic_add_64(&erpt_kstat_data. + fmri_set_failed.value.ui64, 1); + } + } + } +} + +void +fm_fmri_zfs_set(nvlist_t *fmri, int version, uint64_t pool_guid, + uint64_t vdev_guid) +{ + if (version != ZFS_SCHEME_VERSION0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_ZFS) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + return; + } + + if (nvlist_add_uint64(fmri, FM_FMRI_ZFS_POOL, pool_guid) != 0) { + atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + + if (vdev_guid != 0) { + if (nvlist_add_uint64(fmri, FM_FMRI_ZFS_VDEV, vdev_guid) != 0) { + atomic_add_64( + &erpt_kstat_data.fmri_set_failed.value.ui64, 1); + } + } +} + +uint64_t +fm_ena_increment(uint64_t ena) +{ + uint64_t new_ena; + + switch (ENA_FORMAT(ena)) { + case FM_ENA_FMT1: + new_ena = ena + (1 << ENA_FMT1_GEN_SHFT); + break; + case FM_ENA_FMT2: + new_ena = ena + (1 << ENA_FMT2_GEN_SHFT); + break; + default: + new_ena = 0; + } + + return (new_ena); +} + +uint64_t +fm_ena_generate_cpu(uint64_t timestamp, processorid_t cpuid, uchar_t format) +{ + uint64_t ena = 0; + + switch (format) { + case FM_ENA_FMT1: + if (timestamp) { + ena = (uint64_t)((format & ENA_FORMAT_MASK) | + ((cpuid << ENA_FMT1_CPUID_SHFT) & + ENA_FMT1_CPUID_MASK) | + ((timestamp << ENA_FMT1_TIME_SHFT) & + ENA_FMT1_TIME_MASK)); + } else { + ena = (uint64_t)((format & ENA_FORMAT_MASK) | + ((cpuid << ENA_FMT1_CPUID_SHFT) & + ENA_FMT1_CPUID_MASK) | + ((gethrtime() << ENA_FMT1_TIME_SHFT) & + ENA_FMT1_TIME_MASK)); + } + break; + case FM_ENA_FMT2: + ena = (uint64_t)((format & ENA_FORMAT_MASK) | + ((timestamp << ENA_FMT2_TIME_SHFT) & ENA_FMT2_TIME_MASK)); + break; + default: + break; + } + + return (ena); +} + +uint64_t +fm_ena_generate(uint64_t timestamp, uchar_t format) +{ + uint64_t ena; + + kpreempt_disable(); + ena = fm_ena_generate_cpu(timestamp, getcpuid(), format); + kpreempt_enable(); + + return (ena); +} + +uint64_t +fm_ena_generation_get(uint64_t ena) +{ + uint64_t gen; + + switch (ENA_FORMAT(ena)) { + case FM_ENA_FMT1: + gen = (ena & ENA_FMT1_GEN_MASK) >> ENA_FMT1_GEN_SHFT; + break; + case FM_ENA_FMT2: + gen = (ena & ENA_FMT2_GEN_MASK) >> ENA_FMT2_GEN_SHFT; + break; + default: + gen = 0; + break; + } + + return (gen); +} + +uchar_t +fm_ena_format_get(uint64_t ena) +{ + + return (ENA_FORMAT(ena)); +} + +uint64_t +fm_ena_id_get(uint64_t ena) +{ + uint64_t id; + + switch (ENA_FORMAT(ena)) { + case FM_ENA_FMT1: + id = (ena & ENA_FMT1_ID_MASK) >> ENA_FMT1_ID_SHFT; + break; + case FM_ENA_FMT2: + id = (ena & ENA_FMT2_ID_MASK) >> ENA_FMT2_ID_SHFT; + break; + default: + id = 0; + } + + return (id); +} + +uint64_t +fm_ena_time_get(uint64_t ena) +{ + uint64_t time; + + switch (ENA_FORMAT(ena)) { + case FM_ENA_FMT1: + time = (ena & ENA_FMT1_TIME_MASK) >> ENA_FMT1_TIME_SHFT; + break; + case FM_ENA_FMT2: + time = (ena & ENA_FMT2_TIME_MASK) >> ENA_FMT2_TIME_SHFT; + break; + default: + time = 0; + } + + return (time); +} + +#ifdef _KERNEL +void +fm_init(void) +{ + zevent_len_cur = 0; + zevent_flags = 0; + + if (zfs_zevent_len_max == 0) + zfs_zevent_len_max = ERPT_MAX_ERRS * MAX(max_ncpus, 4); + + /* Initialize zevent allocation and generation kstats */ + fm_ksp = kstat_create("zfs", 0, "fm", "misc", KSTAT_TYPE_NAMED, + sizeof (struct erpt_kstat) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + + if (fm_ksp != NULL) { + fm_ksp->ks_data = &erpt_kstat_data; + kstat_install(fm_ksp); + } else { + cmn_err(CE_NOTE, "failed to create fm/misc kstat\n"); + } + + mutex_init(&zevent_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&zevent_list, sizeof (zevent_t), + offsetof(zevent_t, ev_node)); + cv_init(&zevent_cv, NULL, CV_DEFAULT, NULL); +} + +void +fm_fini(void) +{ + int count; + + zfs_zevent_drain_all(&count); + + mutex_enter(&zevent_lock); + cv_broadcast(&zevent_cv); + + zevent_flags |= ZEVENT_SHUTDOWN; + while (zevent_waiters > 0) { + mutex_exit(&zevent_lock); + schedule(); + mutex_enter(&zevent_lock); + } + mutex_exit(&zevent_lock); + + cv_destroy(&zevent_cv); + list_destroy(&zevent_list); + mutex_destroy(&zevent_lock); + + if (fm_ksp != NULL) { + kstat_delete(fm_ksp); + fm_ksp = NULL; + } +} + +module_param(zfs_zevent_len_max, int, 0644); +MODULE_PARM_DESC(zfs_zevent_len_max, "Max event queue length"); + +module_param(zfs_zevent_cols, int, 0644); +MODULE_PARM_DESC(zfs_zevent_cols, "Max event column width"); + +module_param(zfs_zevent_console, int, 0644); +MODULE_PARM_DESC(zfs_zevent_console, "Log events to the console"); + +#endif /* _KERNEL */ --- linux-4.4.0.orig/zfs/module/zfs/gzip.c +++ linux-4.4.0/zfs/module/zfs/gzip.c @@ -0,0 +1,82 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + + + +#include +#include + +#ifdef _KERNEL + +#include +#include + +typedef size_t zlen_t; +#define compress_func z_compress_level +#define uncompress_func z_uncompress + +#else /* _KERNEL */ + +#include +#include + +typedef uLongf zlen_t; +#define compress_func compress2 +#define uncompress_func uncompress + +#endif + +size_t +gzip_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + zlen_t dstlen = d_len; + + ASSERT(d_len <= s_len); + + if (compress_func(d_start, &dstlen, s_start, s_len, n) != Z_OK) { + if (d_len != s_len) + return (s_len); + + bcopy(s_start, d_start, s_len); + return (s_len); + } + + return ((size_t) dstlen); +} + +/*ARGSUSED*/ +int +gzip_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + zlen_t dstlen = d_len; + + ASSERT(d_len >= s_len); + + if (uncompress_func(d_start, &dstlen, s_start, s_len) != Z_OK) + return (-1); + + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/lz4.c +++ linux-4.4.0/zfs/module/zfs/lz4.c @@ -0,0 +1,1019 @@ +/* + * LZ4 - Fast LZ compression algorithm + * Header File + * Copyright (C) 2011-2013, Yann Collet. + * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "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 COPYRIGHT + * OWNER OR CONTRIBUTORS 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. + * + * You can contact the author at : + * - LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html + * - LZ4 source repository : http://code.google.com/p/lz4/ + */ + +#include + +static int real_LZ4_compress(const char *source, char *dest, int isize, + int osize); +static int LZ4_uncompress_unknownOutputSize(const char *source, char *dest, + int isize, int maxOutputSize); +static int LZ4_compressCtx(void *ctx, const char *source, char *dest, + int isize, int osize); +static int LZ4_compress64kCtx(void *ctx, const char *source, char *dest, + int isize, int osize); + +static kmem_cache_t *lz4_cache; + +/*ARGSUSED*/ +size_t +lz4_compress_zfs(void *s_start, void *d_start, size_t s_len, + size_t d_len, int n) +{ + uint32_t bufsiz; + char *dest = d_start; + + ASSERT(d_len >= sizeof (bufsiz)); + + bufsiz = real_LZ4_compress(s_start, &dest[sizeof (bufsiz)], s_len, + d_len - sizeof (bufsiz)); + + /* Signal an error if the compression routine returned zero. */ + if (bufsiz == 0) + return (s_len); + + /* + * Encode the compresed buffer size at the start. We'll need this in + * decompression to counter the effects of padding which might be + * added to the compressed buffer and which, if unhandled, would + * confuse the hell out of our decompression function. + */ + *(uint32_t *)dest = BE_32(bufsiz); + + return (bufsiz + sizeof (bufsiz)); +} + +/*ARGSUSED*/ +int +lz4_decompress_zfs(void *s_start, void *d_start, size_t s_len, + size_t d_len, int n) +{ + const char *src = s_start; + uint32_t bufsiz = BE_IN32(src); + + /* invalid compressed buffer size encoded at start */ + if (bufsiz + sizeof (bufsiz) > s_len) + return (1); + + /* + * Returns 0 on success (decompression function returned non-negative) + * and non-zero on failure (decompression function returned negative. + */ + return (LZ4_uncompress_unknownOutputSize(&src[sizeof (bufsiz)], + d_start, bufsiz, d_len) < 0); +} + +/* + * LZ4 API Description: + * + * Simple Functions: + * real_LZ4_compress() : + * isize : is the input size. Max supported value is ~1.9GB + * return : the number of bytes written in buffer dest + * or 0 if the compression fails (if LZ4_COMPRESSMIN is set). + * note : destination buffer must be already allocated. + * destination buffer must be sized to handle worst cases + * situations (input data not compressible) worst case size + * evaluation is provided by function LZ4_compressBound(). + * + * real_LZ4_uncompress() : + * osize : is the output size, therefore the original size + * return : the number of bytes read in the source buffer. + * If the source stream is malformed, the function will stop + * decoding and return a negative result, indicating the byte + * position of the faulty instruction. This function never + * writes beyond dest + osize, and is therefore protected + * against malicious data packets. + * note : destination buffer must be already allocated + * note : real_LZ4_uncompress() is not used in ZFS so its code + * is not present here. + * + * Advanced Functions + * + * LZ4_compressBound() : + * Provides the maximum size that LZ4 may output in a "worst case" + * scenario (input data not compressible) primarily useful for memory + * allocation of output buffer. + * + * isize : is the input size. Max supported value is ~1.9GB + * return : maximum output size in a "worst case" scenario + * note : this function is limited by "int" range (2^31-1) + * + * LZ4_uncompress_unknownOutputSize() : + * isize : is the input size, therefore the compressed size + * maxOutputSize : is the size of the destination buffer (which must be + * already allocated) + * return : the number of bytes decoded in the destination buffer + * (necessarily <= maxOutputSize). If the source stream is + * malformed, the function will stop decoding and return a + * negative result, indicating the byte position of the faulty + * instruction. This function never writes beyond dest + + * maxOutputSize, and is therefore protected against malicious + * data packets. + * note : Destination buffer must be already allocated. + * This version is slightly slower than real_LZ4_uncompress() + * + * LZ4_compressCtx() : + * This function explicitly handles the CTX memory structure. + * + * ILLUMOS CHANGES: the CTX memory structure must be explicitly allocated + * by the caller (either on the stack or using kmem_cache_alloc). Passing + * NULL isn't valid. + * + * LZ4_compress64kCtx() : + * Same as LZ4_compressCtx(), but specific to small inputs (<64KB). + * isize *Must* be <64KB, otherwise the output will be corrupted. + * + * ILLUMOS CHANGES: the CTX memory structure must be explicitly allocated + * by the caller (either on the stack or using kmem_cache_alloc). Passing + * NULL isn't valid. + */ + +/* + * Tuning parameters + */ + +/* + * COMPRESSIONLEVEL: Increasing this value improves compression ratio + * Lowering this value reduces memory usage. Reduced memory usage + * typically improves speed, due to cache effect (ex: L1 32KB for Intel, + * L1 64KB for AMD). Memory usage formula : N->2^(N+2) Bytes + * (examples : 12 -> 16KB ; 17 -> 512KB) + */ +#define COMPRESSIONLEVEL 12 + +/* + * NOTCOMPRESSIBLE_CONFIRMATION: Decreasing this value will make the + * algorithm skip faster data segments considered "incompressible". + * This may decrease compression ratio dramatically, but will be + * faster on incompressible data. Increasing this value will make + * the algorithm search more before declaring a segment "incompressible". + * This could improve compression a bit, but will be slower on + * incompressible data. The default value (6) is recommended. + */ +#define NOTCOMPRESSIBLE_CONFIRMATION 6 + +/* + * BIG_ENDIAN_NATIVE_BUT_INCOMPATIBLE: This will provide a boost to + * performance for big endian cpu, but the resulting compressed stream + * will be incompatible with little-endian CPU. You can set this option + * to 1 in situations where data will stay within closed environment. + * This option is useless on Little_Endian CPU (such as x86). + */ +/* #define BIG_ENDIAN_NATIVE_BUT_INCOMPATIBLE 1 */ + +/* + * CPU Feature Detection + */ + +/* 32 or 64 bits ? */ +#if defined(_LP64) +#define LZ4_ARCH64 1 +#else +#define LZ4_ARCH64 0 +#endif + +/* + * Little Endian or Big Endian? + * Note: overwrite the below #define if you know your architecture endianess. + */ +#if defined(_BIG_ENDIAN) +#define LZ4_BIG_ENDIAN 1 +#else +/* + * Little Endian assumed. PDP Endian and other very rare endian format + * are unsupported. + */ +#undef LZ4_BIG_ENDIAN +#endif + +/* + * Unaligned memory access is automatically enabled for "common" CPU, + * such as x86. For others CPU, the compiler will be more cautious, and + * insert extra code to ensure aligned access is respected. If you know + * your target CPU supports unaligned memory access, you may want to + * force this option manually to improve performance + */ +#if defined(__ARM_FEATURE_UNALIGNED) +#define LZ4_FORCE_UNALIGNED_ACCESS 1 +#endif + +/* + * Illumos : we can't use GCC's __builtin_ctz family of builtins in the + * kernel + * Linux : we can use GCC's __builtin_ctz family of builtins in the + * kernel + */ +#undef LZ4_FORCE_SW_BITCOUNT +#if defined(__sparc) +#define LZ4_FORCE_SW_BITCOUNT +#endif + +/* + * Compiler Options + */ +/* Disable restrict */ +#define restrict + +/* + * Linux : GCC_VERSION is defined as of 3.9-rc1, so undefine it. + * torvalds/linux@3f3f8d2f48acfd8ed3b8e6b7377935da57b27b16 + */ +#ifdef GCC_VERSION +#undef GCC_VERSION +#endif + +#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +#if (GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__) +#define expect(expr, value) (__builtin_expect((expr), (value))) +#else +#define expect(expr, value) (expr) +#endif + +#ifndef likely +#define likely(expr) expect((expr) != 0, 1) +#endif + +#ifndef unlikely +#define unlikely(expr) expect((expr) != 0, 0) +#endif + +#define lz4_bswap16(x) ((unsigned short int) ((((x) >> 8) & 0xffu) | \ + (((x) & 0xffu) << 8))) + +/* Basic types */ +#define BYTE uint8_t +#define U16 uint16_t +#define U32 uint32_t +#define S32 int32_t +#define U64 uint64_t + +#ifndef LZ4_FORCE_UNALIGNED_ACCESS +#pragma pack(1) +#endif + +typedef struct _U16_S { + U16 v; +} U16_S; +typedef struct _U32_S { + U32 v; +} U32_S; +typedef struct _U64_S { + U64 v; +} U64_S; + +#ifndef LZ4_FORCE_UNALIGNED_ACCESS +#pragma pack() +#endif + +#define A64(x) (((U64_S *)(x))->v) +#define A32(x) (((U32_S *)(x))->v) +#define A16(x) (((U16_S *)(x))->v) + +/* + * Constants + */ +#define MINMATCH 4 + +#define HASH_LOG COMPRESSIONLEVEL +#define HASHTABLESIZE (1 << HASH_LOG) +#define HASH_MASK (HASHTABLESIZE - 1) + +#define SKIPSTRENGTH (NOTCOMPRESSIBLE_CONFIRMATION > 2 ? \ + NOTCOMPRESSIBLE_CONFIRMATION : 2) + +#define COPYLENGTH 8 +#define LASTLITERALS 5 +#define MFLIMIT (COPYLENGTH + MINMATCH) +#define MINLENGTH (MFLIMIT + 1) + +#define MAXD_LOG 16 +#define MAX_DISTANCE ((1 << MAXD_LOG) - 1) + +#define ML_BITS 4 +#define ML_MASK ((1U<> ((MINMATCH * 8) - \ + HASH_LOG)) +#define LZ4_HASH_VALUE(p) LZ4_HASH_FUNCTION(A32(p)) +#define LZ4_WILDCOPY(s, d, e) do { LZ4_COPYPACKET(s, d) } while (d < e); +#define LZ4_BLINDCOPY(s, d, l) { BYTE* e = (d) + l; LZ4_WILDCOPY(s, d, e); \ + d = e; } + + +/* Private functions */ +#if LZ4_ARCH64 + +static inline int +LZ4_NbCommonBytes(register U64 val) +{ +#if defined(LZ4_BIG_ENDIAN) +#if defined(__GNUC__) && (GCC_VERSION >= 304) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_clzll(val) >> 3); +#else + int r; + if (!(val >> 32)) { + r = 4; + } else { + r = 0; + val >>= 32; + } + if (!(val >> 16)) { + r += 2; + val >>= 8; + } else { + val >>= 24; + } + r += (!val); + return (r); +#endif +#else +#if defined(__GNUC__) && (GCC_VERSION >= 304) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_ctzll(val) >> 3); +#else + static const int DeBruijnBytePos[64] = + { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, + 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, + 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, + 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 + }; + return DeBruijnBytePos[((U64) ((val & -val) * 0x0218A392CDABBD3F)) >> + 58]; +#endif +#endif +} + +#else + +static inline int +LZ4_NbCommonBytes(register U32 val) +{ +#if defined(LZ4_BIG_ENDIAN) +#if defined(__GNUC__) && (GCC_VERSION >= 304) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_clz(val) >> 3); +#else + int r; + if (!(val >> 16)) { + r = 2; + val >>= 8; + } else { + r = 0; + val >>= 24; + } + r += (!val); + return (r); +#endif +#else +#if defined(__GNUC__) && (GCC_VERSION >= 304) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_ctz(val) >> 3); +#else + static const int DeBruijnBytePos[32] = { + 0, 0, 3, 0, 3, 1, 3, 0, + 3, 2, 2, 1, 3, 2, 0, 1, + 3, 3, 1, 2, 2, 2, 2, 0, + 3, 1, 2, 0, 1, 0, 1, 1 + }; + return DeBruijnBytePos[((U32) ((val & -(S32) val) * 0x077CB531U)) >> + 27]; +#endif +#endif +} + +#endif + +/* Compression functions */ + +/*ARGSUSED*/ +static int +LZ4_compressCtx(void *ctx, const char *source, char *dest, int isize, + int osize) +{ + struct refTables *srt = (struct refTables *)ctx; + HTYPE *HashTable = (HTYPE *) (srt->hashTable); + + const BYTE *ip = (BYTE *) source; + INITBASE(base); + const BYTE *anchor = ip; + const BYTE *const iend = ip + isize; + const BYTE *const oend = (BYTE *) dest + osize; + const BYTE *const mflimit = iend - MFLIMIT; +#define matchlimit (iend - LASTLITERALS) + + BYTE *op = (BYTE *) dest; + + int len, length; + const int skipStrength = SKIPSTRENGTH; + U32 forwardH; + + + /* Init */ + if (isize < MINLENGTH) + goto _last_literals; + + /* First Byte */ + HashTable[LZ4_HASH_VALUE(ip)] = ip - base; + ip++; + forwardH = LZ4_HASH_VALUE(ip); + + /* Main Loop */ + for (;;) { + int findMatchAttempts = (1U << skipStrength) + 3; + const BYTE *forwardIp = ip; + const BYTE *ref; + BYTE *token; + + /* Find a match */ + do { + U32 h = forwardH; + int step = findMatchAttempts++ >> skipStrength; + ip = forwardIp; + forwardIp = ip + step; + + if (unlikely(forwardIp > mflimit)) { + goto _last_literals; + } + + forwardH = LZ4_HASH_VALUE(forwardIp); + ref = base + HashTable[h]; + HashTable[h] = ip - base; + + } while ((ref < ip - MAX_DISTANCE) || (A32(ref) != A32(ip))); + + /* Catch up */ + while ((ip > anchor) && (ref > (BYTE *) source) && + unlikely(ip[-1] == ref[-1])) { + ip--; + ref--; + } + + /* Encode Literal length */ + length = ip - anchor; + token = op++; + + /* Check output limit */ + if (unlikely(op + length + (2 + 1 + LASTLITERALS) + + (length >> 8) > oend)) + return (0); + + if (length >= (int)RUN_MASK) { + *token = (RUN_MASK << ML_BITS); + len = length - RUN_MASK; + for (; len > 254; len -= 255) + *op++ = 255; + *op++ = (BYTE)len; + } else + *token = (length << ML_BITS); + + /* Copy Literals */ + LZ4_BLINDCOPY(anchor, op, length); + + _next_match: + /* Encode Offset */ + LZ4_WRITE_LITTLEENDIAN_16(op, ip - ref); + + /* Start Counting */ + ip += MINMATCH; + ref += MINMATCH; /* MinMatch verified */ + anchor = ip; + while (likely(ip < matchlimit - (STEPSIZE - 1))) { + UARCH diff = AARCH(ref) ^ AARCH(ip); + if (!diff) { + ip += STEPSIZE; + ref += STEPSIZE; + continue; + } + ip += LZ4_NbCommonBytes(diff); + goto _endCount; + } +#if LZ4_ARCH64 + if ((ip < (matchlimit - 3)) && (A32(ref) == A32(ip))) { + ip += 4; + ref += 4; + } +#endif + if ((ip < (matchlimit - 1)) && (A16(ref) == A16(ip))) { + ip += 2; + ref += 2; + } + if ((ip < matchlimit) && (*ref == *ip)) + ip++; + _endCount: + + /* Encode MatchLength */ + len = (ip - anchor); + /* Check output limit */ + if (unlikely(op + (1 + LASTLITERALS) + (len >> 8) > oend)) + return (0); + if (len >= (int)ML_MASK) { + *token += ML_MASK; + len -= ML_MASK; + for (; len > 509; len -= 510) { + *op++ = 255; + *op++ = 255; + } + if (len > 254) { + len -= 255; + *op++ = 255; + } + *op++ = (BYTE)len; + } else + *token += len; + + /* Test end of chunk */ + if (ip > mflimit) { + anchor = ip; + break; + } + /* Fill table */ + HashTable[LZ4_HASH_VALUE(ip - 2)] = ip - 2 - base; + + /* Test next position */ + ref = base + HashTable[LZ4_HASH_VALUE(ip)]; + HashTable[LZ4_HASH_VALUE(ip)] = ip - base; + if ((ref > ip - (MAX_DISTANCE + 1)) && (A32(ref) == A32(ip))) { + token = op++; + *token = 0; + goto _next_match; + } + /* Prepare next loop */ + anchor = ip++; + forwardH = LZ4_HASH_VALUE(ip); + } + + _last_literals: + /* Encode Last Literals */ + { + int lastRun = iend - anchor; + if (op + lastRun + 1 + ((lastRun + 255 - RUN_MASK) / 255) > + oend) + return (0); + if (lastRun >= (int)RUN_MASK) { + *op++ = (RUN_MASK << ML_BITS); + lastRun -= RUN_MASK; + for (; lastRun > 254; lastRun -= 255) { + *op++ = 255; + } + *op++ = (BYTE)lastRun; + } else + *op++ = (lastRun << ML_BITS); + (void) memcpy(op, anchor, iend - anchor); + op += iend - anchor; + } + + /* End */ + return (int)(((char *)op) - dest); +} + + + +/* Note : this function is valid only if isize < LZ4_64KLIMIT */ +#define LZ4_64KLIMIT ((1 << 16) + (MFLIMIT - 1)) +#define HASHLOG64K (HASH_LOG + 1) +#define HASH64KTABLESIZE (1U << HASHLOG64K) +#define LZ4_HASH64K_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8) - \ + HASHLOG64K)) +#define LZ4_HASH64K_VALUE(p) LZ4_HASH64K_FUNCTION(A32(p)) + +/*ARGSUSED*/ +static int +LZ4_compress64kCtx(void *ctx, const char *source, char *dest, int isize, + int osize) +{ + struct refTables *srt = (struct refTables *)ctx; + U16 *HashTable = (U16 *) (srt->hashTable); + + const BYTE *ip = (BYTE *) source; + const BYTE *anchor = ip; + const BYTE *const base = ip; + const BYTE *const iend = ip + isize; + const BYTE *const oend = (BYTE *) dest + osize; + const BYTE *const mflimit = iend - MFLIMIT; +#define matchlimit (iend - LASTLITERALS) + + BYTE *op = (BYTE *) dest; + + int len, length; + const int skipStrength = SKIPSTRENGTH; + U32 forwardH; + + /* Init */ + if (isize < MINLENGTH) + goto _last_literals; + + /* First Byte */ + ip++; + forwardH = LZ4_HASH64K_VALUE(ip); + + /* Main Loop */ + for (;;) { + int findMatchAttempts = (1U << skipStrength) + 3; + const BYTE *forwardIp = ip; + const BYTE *ref; + BYTE *token; + + /* Find a match */ + do { + U32 h = forwardH; + int step = findMatchAttempts++ >> skipStrength; + ip = forwardIp; + forwardIp = ip + step; + + if (forwardIp > mflimit) { + goto _last_literals; + } + + forwardH = LZ4_HASH64K_VALUE(forwardIp); + ref = base + HashTable[h]; + HashTable[h] = ip - base; + + } while (A32(ref) != A32(ip)); + + /* Catch up */ + while ((ip > anchor) && (ref > (BYTE *) source) && + (ip[-1] == ref[-1])) { + ip--; + ref--; + } + + /* Encode Literal length */ + length = ip - anchor; + token = op++; + + /* Check output limit */ + if (unlikely(op + length + (2 + 1 + LASTLITERALS) + + (length >> 8) > oend)) + return (0); + + if (length >= (int)RUN_MASK) { + *token = (RUN_MASK << ML_BITS); + len = length - RUN_MASK; + for (; len > 254; len -= 255) + *op++ = 255; + *op++ = (BYTE)len; + } else + *token = (length << ML_BITS); + + /* Copy Literals */ + LZ4_BLINDCOPY(anchor, op, length); + + _next_match: + /* Encode Offset */ + LZ4_WRITE_LITTLEENDIAN_16(op, ip - ref); + + /* Start Counting */ + ip += MINMATCH; + ref += MINMATCH; /* MinMatch verified */ + anchor = ip; + while (ip < matchlimit - (STEPSIZE - 1)) { + UARCH diff = AARCH(ref) ^ AARCH(ip); + if (!diff) { + ip += STEPSIZE; + ref += STEPSIZE; + continue; + } + ip += LZ4_NbCommonBytes(diff); + goto _endCount; + } +#if LZ4_ARCH64 + if ((ip < (matchlimit - 3)) && (A32(ref) == A32(ip))) { + ip += 4; + ref += 4; + } +#endif + if ((ip < (matchlimit - 1)) && (A16(ref) == A16(ip))) { + ip += 2; + ref += 2; + } + if ((ip < matchlimit) && (*ref == *ip)) + ip++; + _endCount: + + /* Encode MatchLength */ + len = (ip - anchor); + /* Check output limit */ + if (unlikely(op + (1 + LASTLITERALS) + (len >> 8) > oend)) + return (0); + if (len >= (int)ML_MASK) { + *token += ML_MASK; + len -= ML_MASK; + for (; len > 509; len -= 510) { + *op++ = 255; + *op++ = 255; + } + if (len > 254) { + len -= 255; + *op++ = 255; + } + *op++ = (BYTE)len; + } else + *token += len; + + /* Test end of chunk */ + if (ip > mflimit) { + anchor = ip; + break; + } + /* Fill table */ + HashTable[LZ4_HASH64K_VALUE(ip - 2)] = ip - 2 - base; + + /* Test next position */ + ref = base + HashTable[LZ4_HASH64K_VALUE(ip)]; + HashTable[LZ4_HASH64K_VALUE(ip)] = ip - base; + if (A32(ref) == A32(ip)) { + token = op++; + *token = 0; + goto _next_match; + } + /* Prepare next loop */ + anchor = ip++; + forwardH = LZ4_HASH64K_VALUE(ip); + } + + _last_literals: + /* Encode Last Literals */ + { + int lastRun = iend - anchor; + if (op + lastRun + 1 + ((lastRun + 255 - RUN_MASK) / 255) > + oend) + return (0); + if (lastRun >= (int)RUN_MASK) { + *op++ = (RUN_MASK << ML_BITS); + lastRun -= RUN_MASK; + for (; lastRun > 254; lastRun -= 255) + *op++ = 255; + *op++ = (BYTE)lastRun; + } else + *op++ = (lastRun << ML_BITS); + (void) memcpy(op, anchor, iend - anchor); + op += iend - anchor; + } + + /* End */ + return (int)(((char *)op) - dest); +} + +static int +real_LZ4_compress(const char *source, char *dest, int isize, int osize) +{ + void *ctx; + int result; + + ASSERT(lz4_cache != NULL); + ctx = kmem_cache_alloc(lz4_cache, KM_SLEEP); + + /* + * out of kernel memory, gently fall through - this will disable + * compression in zio_compress_data + */ + if (ctx == NULL) + return (0); + + memset(ctx, 0, sizeof (struct refTables)); + + if (isize < LZ4_64KLIMIT) + result = LZ4_compress64kCtx(ctx, source, dest, isize, osize); + else + result = LZ4_compressCtx(ctx, source, dest, isize, osize); + + kmem_cache_free(lz4_cache, ctx); + return (result); +} + +/* Decompression functions */ + +/* + * Note: The decoding functions real_LZ4_uncompress() and + * LZ4_uncompress_unknownOutputSize() are safe against "buffer overflow" + * attack type. They will never write nor read outside of the provided + * output buffers. LZ4_uncompress_unknownOutputSize() also insures that + * it will never read outside of the input buffer. A corrupted input + * will produce an error result, a negative int, indicating the position + * of the error within input stream. + * + * Note[2]: real_LZ4_uncompress(), referred to above, is not used in ZFS so + * its code is not present here. + */ + +static int +LZ4_uncompress_unknownOutputSize(const char *source, char *dest, int isize, + int maxOutputSize) +{ + /* Local Variables */ + const BYTE *restrict ip = (const BYTE *) source; + const BYTE *const iend = ip + isize; + const BYTE *ref; + + BYTE *op = (BYTE *) dest; + BYTE *const oend = op + maxOutputSize; + BYTE *cpy; + + size_t dec32table[] = {0, 3, 2, 3, 0, 0, 0, 0}; +#if LZ4_ARCH64 + size_t dec64table[] = {0, 0, 0, (size_t)-1, 0, 1, 2, 3}; +#endif + + /* Main Loop */ + while (ip < iend) { + unsigned token; + size_t length; + + /* get runlength */ + token = *ip++; + if ((length = (token >> ML_BITS)) == RUN_MASK) { + int s = 255; + while ((ip < iend) && (s == 255)) { + s = *ip++; + length += s; + } + } + /* copy literals */ + cpy = op + length; + /* CORNER-CASE: cpy might overflow. */ + if (cpy < op) + goto _output_error; /* cpy was overflowed, bail! */ + if ((cpy > oend - COPYLENGTH) || + (ip + length > iend - COPYLENGTH)) { + if (cpy > oend) + /* Error: writes beyond output buffer */ + goto _output_error; + if (ip + length != iend) + /* + * Error: LZ4 format requires to consume all + * input at this stage + */ + goto _output_error; + (void) memcpy(op, ip, length); + op += length; + /* Necessarily EOF, due to parsing restrictions */ + break; + } + LZ4_WILDCOPY(ip, op, cpy); + ip -= (op - cpy); + op = cpy; + + /* get offset */ + LZ4_READ_LITTLEENDIAN_16(ref, cpy, ip); + ip += 2; + if (ref < (BYTE * const) dest) + /* + * Error: offset creates reference outside of + * destination buffer + */ + goto _output_error; + + /* get matchlength */ + if ((length = (token & ML_MASK)) == ML_MASK) { + while (ip < iend) { + int s = *ip++; + length += s; + if (s == 255) + continue; + break; + } + } + /* copy repeated sequence */ + if (unlikely(op - ref < STEPSIZE)) { +#if LZ4_ARCH64 + size_t dec64 = dec64table[op-ref]; +#else + const int dec64 = 0; +#endif + op[0] = ref[0]; + op[1] = ref[1]; + op[2] = ref[2]; + op[3] = ref[3]; + op += 4; + ref += 4; + ref -= dec32table[op-ref]; + A32(op) = A32(ref); + op += STEPSIZE - 4; + ref -= dec64; + } else { + LZ4_COPYSTEP(ref, op); + } + cpy = op + length - (STEPSIZE - 4); + if (cpy > oend - COPYLENGTH) { + if (cpy > oend) + /* + * Error: request to write outside of + * destination buffer + */ + goto _output_error; + LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH)); + while (op < cpy) + *op++ = *ref++; + op = cpy; + if (op == oend) + /* + * Check EOF (should never happen, since + * last 5 bytes are supposed to be literals) + */ + goto _output_error; + continue; + } + LZ4_SECURECOPY(ref, op, cpy); + op = cpy; /* correction */ + } + + /* end of decoding */ + return (int)(((char *)op) - dest); + + /* write overflow error detected */ + _output_error: + return (int)(-(((char *)ip) - source)); +} + +void +lz4_init(void) +{ + lz4_cache = kmem_cache_create("lz4_cache", + sizeof (struct refTables), 0, NULL, NULL, NULL, NULL, NULL, 0); +} + +void +lz4_fini(void) +{ + if (lz4_cache) { + kmem_cache_destroy(lz4_cache); + lz4_cache = NULL; + } +} --- linux-4.4.0.orig/zfs/module/zfs/lzjb.c +++ linux-4.4.0/zfs/module/zfs/lzjb.c @@ -0,0 +1,131 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +/* + * We keep our own copy of this algorithm for 3 main reasons: + * 1. If we didn't, anyone modifying common/os/compress.c would + * directly break our on disk format + * 2. Our version of lzjb does not have a number of checks that the + * common/os version needs and uses + * 3. We initialize the lempel to ensure deterministic results, + * so that identical blocks can always be deduplicated. + * In particular, we are adding the "feature" that compress() can + * take a destination buffer size and returns the compressed length, or the + * source length if compression would overflow the destination buffer. + */ + +#include + +#define MATCH_BITS 6 +#define MATCH_MIN 3 +#define MATCH_MAX ((1 << MATCH_BITS) + (MATCH_MIN - 1)) +#define OFFSET_MASK ((1 << (16 - MATCH_BITS)) - 1) +#define LEMPEL_SIZE 1024 + +/*ARGSUSED*/ +size_t +lzjb_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + uchar_t *src = s_start; + uchar_t *dst = d_start; + uchar_t *cpy; + uchar_t *copymap = NULL; + int copymask = 1 << (NBBY - 1); + int mlen, offset, hash; + uint16_t *hp; + uint16_t *lempel; + + lempel = kmem_zalloc(LEMPEL_SIZE * sizeof (uint16_t), KM_SLEEP); + while (src < (uchar_t *)s_start + s_len) { + if ((copymask <<= 1) == (1 << NBBY)) { + if (dst >= (uchar_t *)d_start + d_len - 1 - 2 * NBBY) { + kmem_free(lempel, + LEMPEL_SIZE*sizeof (uint16_t)); + return (s_len); + } + copymask = 1; + copymap = dst; + *dst++ = 0; + } + if (src > (uchar_t *)s_start + s_len - MATCH_MAX) { + *dst++ = *src++; + continue; + } + hash = (src[0] << 16) + (src[1] << 8) + src[2]; + hash += hash >> 9; + hash += hash >> 5; + hp = &lempel[hash & (LEMPEL_SIZE - 1)]; + offset = (intptr_t)(src - *hp) & OFFSET_MASK; + *hp = (uint16_t)(uintptr_t)src; + cpy = src - offset; + if (cpy >= (uchar_t *)s_start && cpy != src && + src[0] == cpy[0] && src[1] == cpy[1] && src[2] == cpy[2]) { + *copymap |= copymask; + for (mlen = MATCH_MIN; mlen < MATCH_MAX; mlen++) + if (src[mlen] != cpy[mlen]) + break; + *dst++ = ((mlen - MATCH_MIN) << (NBBY - MATCH_BITS)) | + (offset >> NBBY); + *dst++ = (uchar_t)offset; + src += mlen; + } else { + *dst++ = *src++; + } + } + + kmem_free(lempel, LEMPEL_SIZE * sizeof (uint16_t)); + return (dst - (uchar_t *)d_start); +} + +/*ARGSUSED*/ +int +lzjb_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + uchar_t *src = s_start; + uchar_t *dst = d_start; + uchar_t *d_end = (uchar_t *)d_start + d_len; + uchar_t *cpy; + uchar_t copymap = 0; + int copymask = 1 << (NBBY - 1); + + while (dst < d_end) { + if ((copymask <<= 1) == (1 << NBBY)) { + copymask = 1; + copymap = *src++; + } + if (copymap & copymask) { + int mlen = (src[0] >> (NBBY - MATCH_BITS)) + MATCH_MIN; + int offset = ((src[0] << NBBY) | src[1]) & OFFSET_MASK; + src += 2; + if ((cpy = dst - offset) < (uchar_t *)d_start) + return (-1); + while (--mlen >= 0 && dst < d_end) + *dst++ = *cpy++; + } else { + *dst++ = *src++; + } + } + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/metaslab.c +++ linux-4.4.0/zfs/module/zfs/metaslab.c @@ -0,0 +1,2745 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define WITH_DF_BLOCK_ALLOCATOR + +/* + * Allow allocations to switch to gang blocks quickly. We do this to + * avoid having to load lots of space_maps in a given txg. There are, + * however, some cases where we want to avoid "fast" ganging and instead + * we want to do an exhaustive search of all metaslabs on this device. + * Currently we don't allow any gang, slog, or dump device related allocations + * to "fast" gang. + */ +#define CAN_FASTGANG(flags) \ + (!((flags) & (METASLAB_GANG_CHILD | METASLAB_GANG_HEADER | \ + METASLAB_GANG_AVOID))) + +#define METASLAB_WEIGHT_PRIMARY (1ULL << 63) +#define METASLAB_WEIGHT_SECONDARY (1ULL << 62) +#define METASLAB_ACTIVE_MASK \ + (METASLAB_WEIGHT_PRIMARY | METASLAB_WEIGHT_SECONDARY) + +/* + * Metaslab granularity, in bytes. This is roughly similar to what would be + * referred to as the "stripe size" in traditional RAID arrays. In normal + * operation, we will try to write this amount of data to a top-level vdev + * before moving on to the next one. + */ +unsigned long metaslab_aliquot = 512 << 10; + +uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1; /* force gang blocks */ + +/* + * The in-core space map representation is more compact than its on-disk form. + * The zfs_condense_pct determines how much more compact the in-core + * space_map representation must be before we compact it on-disk. + * Values should be greater than or equal to 100. + */ +int zfs_condense_pct = 200; + +/* + * Condensing a metaslab is not guaranteed to actually reduce the amount of + * space used on disk. In particular, a space map uses data in increments of + * MAX(1 << ashift, space_map_blksz), so a metaslab might use the + * same number of blocks after condensing. Since the goal of condensing is to + * reduce the number of IOPs required to read the space map, we only want to + * condense when we can be sure we will reduce the number of blocks used by the + * space map. Unfortunately, we cannot precisely compute whether or not this is + * the case in metaslab_should_condense since we are holding ms_lock. Instead, + * we apply the following heuristic: do not condense a spacemap unless the + * uncondensed size consumes greater than zfs_metaslab_condense_block_threshold + * blocks. + */ +int zfs_metaslab_condense_block_threshold = 4; + +/* + * The zfs_mg_noalloc_threshold defines which metaslab groups should + * be eligible for allocation. The value is defined as a percentage of + * free space. Metaslab groups that have more free space than + * zfs_mg_noalloc_threshold are always eligible for allocations. Once + * a metaslab group's free space is less than or equal to the + * zfs_mg_noalloc_threshold the allocator will avoid allocating to that + * group unless all groups in the pool have reached zfs_mg_noalloc_threshold. + * Once all groups in the pool reach zfs_mg_noalloc_threshold then all + * groups are allowed to accept allocations. Gang blocks are always + * eligible to allocate on any metaslab group. The default value of 0 means + * no metaslab group will be excluded based on this criterion. + */ +int zfs_mg_noalloc_threshold = 0; + +/* + * Metaslab groups are considered eligible for allocations if their + * fragmenation metric (measured as a percentage) is less than or equal to + * zfs_mg_fragmentation_threshold. If a metaslab group exceeds this threshold + * then it will be skipped unless all metaslab groups within the metaslab + * class have also crossed this threshold. + */ +int zfs_mg_fragmentation_threshold = 85; + +/* + * Allow metaslabs to keep their active state as long as their fragmentation + * percentage is less than or equal to zfs_metaslab_fragmentation_threshold. An + * active metaslab that exceeds this threshold will no longer keep its active + * status allowing better metaslabs to be selected. + */ +int zfs_metaslab_fragmentation_threshold = 70; + +/* + * When set will load all metaslabs when pool is first opened. + */ +int metaslab_debug_load = 0; + +/* + * When set will prevent metaslabs from being unloaded. + */ +int metaslab_debug_unload = 0; + +/* + * Minimum size which forces the dynamic allocator to change + * it's allocation strategy. Once the space map cannot satisfy + * an allocation of this size then it switches to using more + * aggressive strategy (i.e search by size rather than offset). + */ +uint64_t metaslab_df_alloc_threshold = SPA_MAXBLOCKSIZE; + +/* + * The minimum free space, in percent, which must be available + * in a space map to continue allocations in a first-fit fashion. + * Once the space_map's free space drops below this level we dynamically + * switch to using best-fit allocations. + */ +int metaslab_df_free_pct = 4; + +/* + * Percentage of all cpus that can be used by the metaslab taskq. + */ +int metaslab_load_pct = 50; + +/* + * Determines how many txgs a metaslab may remain loaded without having any + * allocations from it. As long as a metaslab continues to be used we will + * keep it loaded. + */ +int metaslab_unload_delay = TXG_SIZE * 2; + +/* + * Max number of metaslabs per group to preload. + */ +int metaslab_preload_limit = SPA_DVAS_PER_BP; + +/* + * Enable/disable preloading of metaslab. + */ +int metaslab_preload_enabled = B_TRUE; + +/* + * Enable/disable fragmentation weighting on metaslabs. + */ +int metaslab_fragmentation_factor_enabled = B_TRUE; + +/* + * Enable/disable lba weighting (i.e. outer tracks are given preference). + */ +int metaslab_lba_weighting_enabled = B_TRUE; + +/* + * Enable/disable metaslab group biasing. + */ +int metaslab_bias_enabled = B_TRUE; + +static uint64_t metaslab_fragmentation(metaslab_t *); + +/* + * ========================================================================== + * Metaslab classes + * ========================================================================== + */ +metaslab_class_t * +metaslab_class_create(spa_t *spa, metaslab_ops_t *ops) +{ + metaslab_class_t *mc; + + mc = kmem_zalloc(sizeof (metaslab_class_t), KM_SLEEP); + + mc->mc_spa = spa; + mc->mc_rotor = NULL; + mc->mc_ops = ops; + mutex_init(&mc->mc_fastwrite_lock, NULL, MUTEX_DEFAULT, NULL); + + return (mc); +} + +void +metaslab_class_destroy(metaslab_class_t *mc) +{ + ASSERT(mc->mc_rotor == NULL); + ASSERT(mc->mc_alloc == 0); + ASSERT(mc->mc_deferred == 0); + ASSERT(mc->mc_space == 0); + ASSERT(mc->mc_dspace == 0); + + mutex_destroy(&mc->mc_fastwrite_lock); + kmem_free(mc, sizeof (metaslab_class_t)); +} + +int +metaslab_class_validate(metaslab_class_t *mc) +{ + metaslab_group_t *mg; + vdev_t *vd; + + /* + * Must hold one of the spa_config locks. + */ + ASSERT(spa_config_held(mc->mc_spa, SCL_ALL, RW_READER) || + spa_config_held(mc->mc_spa, SCL_ALL, RW_WRITER)); + + if ((mg = mc->mc_rotor) == NULL) + return (0); + + do { + vd = mg->mg_vd; + ASSERT(vd->vdev_mg != NULL); + ASSERT3P(vd->vdev_top, ==, vd); + ASSERT3P(mg->mg_class, ==, mc); + ASSERT3P(vd->vdev_ops, !=, &vdev_hole_ops); + } while ((mg = mg->mg_next) != mc->mc_rotor); + + return (0); +} + +void +metaslab_class_space_update(metaslab_class_t *mc, int64_t alloc_delta, + int64_t defer_delta, int64_t space_delta, int64_t dspace_delta) +{ + atomic_add_64(&mc->mc_alloc, alloc_delta); + atomic_add_64(&mc->mc_deferred, defer_delta); + atomic_add_64(&mc->mc_space, space_delta); + atomic_add_64(&mc->mc_dspace, dspace_delta); +} + +uint64_t +metaslab_class_get_alloc(metaslab_class_t *mc) +{ + return (mc->mc_alloc); +} + +uint64_t +metaslab_class_get_deferred(metaslab_class_t *mc) +{ + return (mc->mc_deferred); +} + +uint64_t +metaslab_class_get_space(metaslab_class_t *mc) +{ + return (mc->mc_space); +} + +uint64_t +metaslab_class_get_dspace(metaslab_class_t *mc) +{ + return (spa_deflate(mc->mc_spa) ? mc->mc_dspace : mc->mc_space); +} + +void +metaslab_class_histogram_verify(metaslab_class_t *mc) +{ + vdev_t *rvd = mc->mc_spa->spa_root_vdev; + uint64_t *mc_hist; + int i, c; + + if ((zfs_flags & ZFS_DEBUG_HISTOGRAM_VERIFY) == 0) + return; + + mc_hist = kmem_zalloc(sizeof (uint64_t) * RANGE_TREE_HISTOGRAM_SIZE, + KM_SLEEP); + + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + metaslab_group_t *mg = tvd->vdev_mg; + + /* + * Skip any holes, uninitialized top-levels, or + * vdevs that are not in this metalab class. + */ + if (tvd->vdev_ishole || tvd->vdev_ms_shift == 0 || + mg->mg_class != mc) { + continue; + } + + for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i++) + mc_hist[i] += mg->mg_histogram[i]; + } + + for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i++) + VERIFY3U(mc_hist[i], ==, mc->mc_histogram[i]); + + kmem_free(mc_hist, sizeof (uint64_t) * RANGE_TREE_HISTOGRAM_SIZE); +} + +/* + * Calculate the metaslab class's fragmentation metric. The metric + * is weighted based on the space contribution of each metaslab group. + * The return value will be a number between 0 and 100 (inclusive), or + * ZFS_FRAG_INVALID if the metric has not been set. See comment above the + * zfs_frag_table for more information about the metric. + */ +uint64_t +metaslab_class_fragmentation(metaslab_class_t *mc) +{ + vdev_t *rvd = mc->mc_spa->spa_root_vdev; + uint64_t fragmentation = 0; + int c; + + spa_config_enter(mc->mc_spa, SCL_VDEV, FTAG, RW_READER); + + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + metaslab_group_t *mg = tvd->vdev_mg; + + /* + * Skip any holes, uninitialized top-levels, or + * vdevs that are not in this metalab class. + */ + if (tvd->vdev_ishole || tvd->vdev_ms_shift == 0 || + mg->mg_class != mc) { + continue; + } + + /* + * If a metaslab group does not contain a fragmentation + * metric then just bail out. + */ + if (mg->mg_fragmentation == ZFS_FRAG_INVALID) { + spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); + return (ZFS_FRAG_INVALID); + } + + /* + * Determine how much this metaslab_group is contributing + * to the overall pool fragmentation metric. + */ + fragmentation += mg->mg_fragmentation * + metaslab_group_get_space(mg); + } + fragmentation /= metaslab_class_get_space(mc); + + ASSERT3U(fragmentation, <=, 100); + spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); + return (fragmentation); +} + +/* + * Calculate the amount of expandable space that is available in + * this metaslab class. If a device is expanded then its expandable + * space will be the amount of allocatable space that is currently not + * part of this metaslab class. + */ +uint64_t +metaslab_class_expandable_space(metaslab_class_t *mc) +{ + vdev_t *rvd = mc->mc_spa->spa_root_vdev; + uint64_t space = 0; + int c; + + spa_config_enter(mc->mc_spa, SCL_VDEV, FTAG, RW_READER); + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + metaslab_group_t *mg = tvd->vdev_mg; + + if (tvd->vdev_ishole || tvd->vdev_ms_shift == 0 || + mg->mg_class != mc) { + continue; + } + + space += tvd->vdev_max_asize - tvd->vdev_asize; + } + spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); + return (space); +} + +/* + * ========================================================================== + * Metaslab groups + * ========================================================================== + */ +static int +metaslab_compare(const void *x1, const void *x2) +{ + const metaslab_t *m1 = x1; + const metaslab_t *m2 = x2; + + if (m1->ms_weight < m2->ms_weight) + return (1); + if (m1->ms_weight > m2->ms_weight) + return (-1); + + /* + * If the weights are identical, use the offset to force uniqueness. + */ + if (m1->ms_start < m2->ms_start) + return (-1); + if (m1->ms_start > m2->ms_start) + return (1); + + ASSERT3P(m1, ==, m2); + + return (0); +} + +/* + * Update the allocatable flag and the metaslab group's capacity. + * The allocatable flag is set to true if the capacity is below + * the zfs_mg_noalloc_threshold. If a metaslab group transitions + * from allocatable to non-allocatable or vice versa then the metaslab + * group's class is updated to reflect the transition. + */ +static void +metaslab_group_alloc_update(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + metaslab_class_t *mc = mg->mg_class; + vdev_stat_t *vs = &vd->vdev_stat; + boolean_t was_allocatable; + + ASSERT(vd == vd->vdev_top); + + mutex_enter(&mg->mg_lock); + was_allocatable = mg->mg_allocatable; + + mg->mg_free_capacity = ((vs->vs_space - vs->vs_alloc) * 100) / + (vs->vs_space + 1); + + /* + * A metaslab group is considered allocatable if it has plenty + * of free space or is not heavily fragmented. We only take + * fragmentation into account if the metaslab group has a valid + * fragmentation metric (i.e. a value between 0 and 100). + */ + mg->mg_allocatable = (mg->mg_free_capacity > zfs_mg_noalloc_threshold && + (mg->mg_fragmentation == ZFS_FRAG_INVALID || + mg->mg_fragmentation <= zfs_mg_fragmentation_threshold)); + + /* + * The mc_alloc_groups maintains a count of the number of + * groups in this metaslab class that are still above the + * zfs_mg_noalloc_threshold. This is used by the allocating + * threads to determine if they should avoid allocations to + * a given group. The allocator will avoid allocations to a group + * if that group has reached or is below the zfs_mg_noalloc_threshold + * and there are still other groups that are above the threshold. + * When a group transitions from allocatable to non-allocatable or + * vice versa we update the metaslab class to reflect that change. + * When the mc_alloc_groups value drops to 0 that means that all + * groups have reached the zfs_mg_noalloc_threshold making all groups + * eligible for allocations. This effectively means that all devices + * are balanced again. + */ + if (was_allocatable && !mg->mg_allocatable) + mc->mc_alloc_groups--; + else if (!was_allocatable && mg->mg_allocatable) + mc->mc_alloc_groups++; + + mutex_exit(&mg->mg_lock); +} + +metaslab_group_t * +metaslab_group_create(metaslab_class_t *mc, vdev_t *vd) +{ + metaslab_group_t *mg; + + mg = kmem_zalloc(sizeof (metaslab_group_t), KM_SLEEP); + mutex_init(&mg->mg_lock, NULL, MUTEX_DEFAULT, NULL); + avl_create(&mg->mg_metaslab_tree, metaslab_compare, + sizeof (metaslab_t), offsetof(struct metaslab, ms_group_node)); + mg->mg_vd = vd; + mg->mg_class = mc; + mg->mg_activation_count = 0; + + mg->mg_taskq = taskq_create("metaslab_group_taskq", metaslab_load_pct, + maxclsyspri, 10, INT_MAX, TASKQ_THREADS_CPU_PCT | TASKQ_DYNAMIC); + + return (mg); +} + +void +metaslab_group_destroy(metaslab_group_t *mg) +{ + ASSERT(mg->mg_prev == NULL); + ASSERT(mg->mg_next == NULL); + /* + * We may have gone below zero with the activation count + * either because we never activated in the first place or + * because we're done, and possibly removing the vdev. + */ + ASSERT(mg->mg_activation_count <= 0); + + taskq_destroy(mg->mg_taskq); + avl_destroy(&mg->mg_metaslab_tree); + mutex_destroy(&mg->mg_lock); + kmem_free(mg, sizeof (metaslab_group_t)); +} + +void +metaslab_group_activate(metaslab_group_t *mg) +{ + metaslab_class_t *mc = mg->mg_class; + metaslab_group_t *mgprev, *mgnext; + + ASSERT(spa_config_held(mc->mc_spa, SCL_ALLOC, RW_WRITER)); + + ASSERT(mc->mc_rotor != mg); + ASSERT(mg->mg_prev == NULL); + ASSERT(mg->mg_next == NULL); + ASSERT(mg->mg_activation_count <= 0); + + if (++mg->mg_activation_count <= 0) + return; + + mg->mg_aliquot = metaslab_aliquot * MAX(1, mg->mg_vd->vdev_children); + metaslab_group_alloc_update(mg); + + if ((mgprev = mc->mc_rotor) == NULL) { + mg->mg_prev = mg; + mg->mg_next = mg; + } else { + mgnext = mgprev->mg_next; + mg->mg_prev = mgprev; + mg->mg_next = mgnext; + mgprev->mg_next = mg; + mgnext->mg_prev = mg; + } + mc->mc_rotor = mg; +} + +void +metaslab_group_passivate(metaslab_group_t *mg) +{ + metaslab_class_t *mc = mg->mg_class; + metaslab_group_t *mgprev, *mgnext; + + ASSERT(spa_config_held(mc->mc_spa, SCL_ALLOC, RW_WRITER)); + + if (--mg->mg_activation_count != 0) { + ASSERT(mc->mc_rotor != mg); + ASSERT(mg->mg_prev == NULL); + ASSERT(mg->mg_next == NULL); + ASSERT(mg->mg_activation_count < 0); + return; + } + + taskq_wait_outstanding(mg->mg_taskq, 0); + metaslab_group_alloc_update(mg); + + mgprev = mg->mg_prev; + mgnext = mg->mg_next; + + if (mg == mgnext) { + mc->mc_rotor = NULL; + } else { + mc->mc_rotor = mgnext; + mgprev->mg_next = mgnext; + mgnext->mg_prev = mgprev; + } + + mg->mg_prev = NULL; + mg->mg_next = NULL; +} + +uint64_t +metaslab_group_get_space(metaslab_group_t *mg) +{ + return ((1ULL << mg->mg_vd->vdev_ms_shift) * mg->mg_vd->vdev_ms_count); +} + +void +metaslab_group_histogram_verify(metaslab_group_t *mg) +{ + uint64_t *mg_hist; + vdev_t *vd = mg->mg_vd; + uint64_t ashift = vd->vdev_ashift; + int i, m; + + if ((zfs_flags & ZFS_DEBUG_HISTOGRAM_VERIFY) == 0) + return; + + mg_hist = kmem_zalloc(sizeof (uint64_t) * RANGE_TREE_HISTOGRAM_SIZE, + KM_SLEEP); + + ASSERT3U(RANGE_TREE_HISTOGRAM_SIZE, >=, + SPACE_MAP_HISTOGRAM_SIZE + ashift); + + for (m = 0; m < vd->vdev_ms_count; m++) { + metaslab_t *msp = vd->vdev_ms[m]; + + if (msp->ms_sm == NULL) + continue; + + for (i = 0; i < SPACE_MAP_HISTOGRAM_SIZE; i++) + mg_hist[i + ashift] += + msp->ms_sm->sm_phys->smp_histogram[i]; + } + + for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i ++) + VERIFY3U(mg_hist[i], ==, mg->mg_histogram[i]); + + kmem_free(mg_hist, sizeof (uint64_t) * RANGE_TREE_HISTOGRAM_SIZE); +} + +static void +metaslab_group_histogram_add(metaslab_group_t *mg, metaslab_t *msp) +{ + metaslab_class_t *mc = mg->mg_class; + uint64_t ashift = mg->mg_vd->vdev_ashift; + int i; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + if (msp->ms_sm == NULL) + return; + + mutex_enter(&mg->mg_lock); + for (i = 0; i < SPACE_MAP_HISTOGRAM_SIZE; i++) { + mg->mg_histogram[i + ashift] += + msp->ms_sm->sm_phys->smp_histogram[i]; + mc->mc_histogram[i + ashift] += + msp->ms_sm->sm_phys->smp_histogram[i]; + } + mutex_exit(&mg->mg_lock); +} + +void +metaslab_group_histogram_remove(metaslab_group_t *mg, metaslab_t *msp) +{ + metaslab_class_t *mc = mg->mg_class; + uint64_t ashift = mg->mg_vd->vdev_ashift; + int i; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + if (msp->ms_sm == NULL) + return; + + mutex_enter(&mg->mg_lock); + for (i = 0; i < SPACE_MAP_HISTOGRAM_SIZE; i++) { + ASSERT3U(mg->mg_histogram[i + ashift], >=, + msp->ms_sm->sm_phys->smp_histogram[i]); + ASSERT3U(mc->mc_histogram[i + ashift], >=, + msp->ms_sm->sm_phys->smp_histogram[i]); + + mg->mg_histogram[i + ashift] -= + msp->ms_sm->sm_phys->smp_histogram[i]; + mc->mc_histogram[i + ashift] -= + msp->ms_sm->sm_phys->smp_histogram[i]; + } + mutex_exit(&mg->mg_lock); +} + +static void +metaslab_group_add(metaslab_group_t *mg, metaslab_t *msp) +{ + ASSERT(msp->ms_group == NULL); + mutex_enter(&mg->mg_lock); + msp->ms_group = mg; + msp->ms_weight = 0; + avl_add(&mg->mg_metaslab_tree, msp); + mutex_exit(&mg->mg_lock); + + mutex_enter(&msp->ms_lock); + metaslab_group_histogram_add(mg, msp); + mutex_exit(&msp->ms_lock); +} + +static void +metaslab_group_remove(metaslab_group_t *mg, metaslab_t *msp) +{ + mutex_enter(&msp->ms_lock); + metaslab_group_histogram_remove(mg, msp); + mutex_exit(&msp->ms_lock); + + mutex_enter(&mg->mg_lock); + ASSERT(msp->ms_group == mg); + avl_remove(&mg->mg_metaslab_tree, msp); + msp->ms_group = NULL; + mutex_exit(&mg->mg_lock); +} + +static void +metaslab_group_sort(metaslab_group_t *mg, metaslab_t *msp, uint64_t weight) +{ + /* + * Although in principle the weight can be any value, in + * practice we do not use values in the range [1, 511]. + */ + ASSERT(weight >= SPA_MINBLOCKSIZE || weight == 0); + ASSERT(MUTEX_HELD(&msp->ms_lock)); + + mutex_enter(&mg->mg_lock); + ASSERT(msp->ms_group == mg); + avl_remove(&mg->mg_metaslab_tree, msp); + msp->ms_weight = weight; + avl_add(&mg->mg_metaslab_tree, msp); + mutex_exit(&mg->mg_lock); +} + +/* + * Calculate the fragmentation for a given metaslab group. We can use + * a simple average here since all metaslabs within the group must have + * the same size. The return value will be a value between 0 and 100 + * (inclusive), or ZFS_FRAG_INVALID if less than half of the metaslab in this + * group have a fragmentation metric. + */ +uint64_t +metaslab_group_fragmentation(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + uint64_t fragmentation = 0; + uint64_t valid_ms = 0; + int m; + + for (m = 0; m < vd->vdev_ms_count; m++) { + metaslab_t *msp = vd->vdev_ms[m]; + + if (msp->ms_fragmentation == ZFS_FRAG_INVALID) + continue; + + valid_ms++; + fragmentation += msp->ms_fragmentation; + } + + if (valid_ms <= vd->vdev_ms_count / 2) + return (ZFS_FRAG_INVALID); + + fragmentation /= valid_ms; + ASSERT3U(fragmentation, <=, 100); + return (fragmentation); +} + +/* + * Determine if a given metaslab group should skip allocations. A metaslab + * group should avoid allocations if its free capacity is less than the + * zfs_mg_noalloc_threshold or its fragmentation metric is greater than + * zfs_mg_fragmentation_threshold and there is at least one metaslab group + * that can still handle allocations. + */ +static boolean_t +metaslab_group_allocatable(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + spa_t *spa = vd->vdev_spa; + metaslab_class_t *mc = mg->mg_class; + + /* + * We use two key metrics to determine if a metaslab group is + * considered allocatable -- free space and fragmentation. If + * the free space is greater than the free space threshold and + * the fragmentation is less than the fragmentation threshold then + * consider the group allocatable. There are two case when we will + * not consider these key metrics. The first is if the group is + * associated with a slog device and the second is if all groups + * in this metaslab class have already been consider ineligible + * for allocations. + */ + return ((mg->mg_free_capacity > zfs_mg_noalloc_threshold && + (mg->mg_fragmentation == ZFS_FRAG_INVALID || + mg->mg_fragmentation <= zfs_mg_fragmentation_threshold)) || + mc != spa_normal_class(spa) || mc->mc_alloc_groups == 0); +} + +/* + * ========================================================================== + * Range tree callbacks + * ========================================================================== + */ + +/* + * Comparison function for the private size-ordered tree. Tree is sorted + * by size, larger sizes at the end of the tree. + */ +static int +metaslab_rangesize_compare(const void *x1, const void *x2) +{ + const range_seg_t *r1 = x1; + const range_seg_t *r2 = x2; + uint64_t rs_size1 = r1->rs_end - r1->rs_start; + uint64_t rs_size2 = r2->rs_end - r2->rs_start; + + if (rs_size1 < rs_size2) + return (-1); + if (rs_size1 > rs_size2) + return (1); + + if (r1->rs_start < r2->rs_start) + return (-1); + + if (r1->rs_start > r2->rs_start) + return (1); + + return (0); +} + +/* + * Create any block allocator specific components. The current allocators + * rely on using both a size-ordered range_tree_t and an array of uint64_t's. + */ +static void +metaslab_rt_create(range_tree_t *rt, void *arg) +{ + metaslab_t *msp = arg; + + ASSERT3P(rt->rt_arg, ==, msp); + ASSERT(msp->ms_tree == NULL); + + avl_create(&msp->ms_size_tree, metaslab_rangesize_compare, + sizeof (range_seg_t), offsetof(range_seg_t, rs_pp_node)); +} + +/* + * Destroy the block allocator specific components. + */ +static void +metaslab_rt_destroy(range_tree_t *rt, void *arg) +{ + metaslab_t *msp = arg; + + ASSERT3P(rt->rt_arg, ==, msp); + ASSERT3P(msp->ms_tree, ==, rt); + ASSERT0(avl_numnodes(&msp->ms_size_tree)); + + avl_destroy(&msp->ms_size_tree); +} + +static void +metaslab_rt_add(range_tree_t *rt, range_seg_t *rs, void *arg) +{ + metaslab_t *msp = arg; + + ASSERT3P(rt->rt_arg, ==, msp); + ASSERT3P(msp->ms_tree, ==, rt); + VERIFY(!msp->ms_condensing); + avl_add(&msp->ms_size_tree, rs); +} + +static void +metaslab_rt_remove(range_tree_t *rt, range_seg_t *rs, void *arg) +{ + metaslab_t *msp = arg; + + ASSERT3P(rt->rt_arg, ==, msp); + ASSERT3P(msp->ms_tree, ==, rt); + VERIFY(!msp->ms_condensing); + avl_remove(&msp->ms_size_tree, rs); +} + +static void +metaslab_rt_vacate(range_tree_t *rt, void *arg) +{ + metaslab_t *msp = arg; + + ASSERT3P(rt->rt_arg, ==, msp); + ASSERT3P(msp->ms_tree, ==, rt); + + /* + * Normally one would walk the tree freeing nodes along the way. + * Since the nodes are shared with the range trees we can avoid + * walking all nodes and just reinitialize the avl tree. The nodes + * will be freed by the range tree, so we don't want to free them here. + */ + avl_create(&msp->ms_size_tree, metaslab_rangesize_compare, + sizeof (range_seg_t), offsetof(range_seg_t, rs_pp_node)); +} + +static range_tree_ops_t metaslab_rt_ops = { + metaslab_rt_create, + metaslab_rt_destroy, + metaslab_rt_add, + metaslab_rt_remove, + metaslab_rt_vacate +}; + +/* + * ========================================================================== + * Metaslab block operations + * ========================================================================== + */ + +/* + * Return the maximum contiguous segment within the metaslab. + */ +uint64_t +metaslab_block_maxsize(metaslab_t *msp) +{ + avl_tree_t *t = &msp->ms_size_tree; + range_seg_t *rs; + + if (t == NULL || (rs = avl_last(t)) == NULL) + return (0ULL); + + return (rs->rs_end - rs->rs_start); +} + +uint64_t +metaslab_block_alloc(metaslab_t *msp, uint64_t size) +{ + uint64_t start; + range_tree_t *rt = msp->ms_tree; + + VERIFY(!msp->ms_condensing); + + start = msp->ms_ops->msop_alloc(msp, size); + if (start != -1ULL) { + vdev_t *vd = msp->ms_group->mg_vd; + + VERIFY0(P2PHASE(start, 1ULL << vd->vdev_ashift)); + VERIFY0(P2PHASE(size, 1ULL << vd->vdev_ashift)); + VERIFY3U(range_tree_space(rt) - size, <=, msp->ms_size); + range_tree_remove(rt, start, size); + } + return (start); +} + +/* + * ========================================================================== + * Common allocator routines + * ========================================================================== + */ + +#if defined(WITH_FF_BLOCK_ALLOCATOR) || \ + defined(WITH_DF_BLOCK_ALLOCATOR) || \ + defined(WITH_CF_BLOCK_ALLOCATOR) +/* + * This is a helper function that can be used by the allocator to find + * a suitable block to allocate. This will search the specified AVL + * tree looking for a block that matches the specified criteria. + */ +static uint64_t +metaslab_block_picker(avl_tree_t *t, uint64_t *cursor, uint64_t size, + uint64_t align) +{ + range_seg_t *rs, rsearch; + avl_index_t where; + + rsearch.rs_start = *cursor; + rsearch.rs_end = *cursor + size; + + rs = avl_find(t, &rsearch, &where); + if (rs == NULL) + rs = avl_nearest(t, where, AVL_AFTER); + + while (rs != NULL) { + uint64_t offset = P2ROUNDUP(rs->rs_start, align); + + if (offset + size <= rs->rs_end) { + *cursor = offset + size; + return (offset); + } + rs = AVL_NEXT(t, rs); + } + + /* + * If we know we've searched the whole map (*cursor == 0), give up. + * Otherwise, reset the cursor to the beginning and try again. + */ + if (*cursor == 0) + return (-1ULL); + + *cursor = 0; + return (metaslab_block_picker(t, cursor, size, align)); +} +#endif /* WITH_FF/DF/CF_BLOCK_ALLOCATOR */ + +#if defined(WITH_FF_BLOCK_ALLOCATOR) +/* + * ========================================================================== + * The first-fit block allocator + * ========================================================================== + */ +static uint64_t +metaslab_ff_alloc(metaslab_t *msp, uint64_t size) +{ + /* + * Find the largest power of 2 block size that evenly divides the + * requested size. This is used to try to allocate blocks with similar + * alignment from the same area of the metaslab (i.e. same cursor + * bucket) but it does not guarantee that other allocations sizes + * may exist in the same region. + */ + uint64_t align = size & -size; + uint64_t *cursor = &msp->ms_lbas[highbit64(align) - 1]; + avl_tree_t *t = &msp->ms_tree->rt_root; + + return (metaslab_block_picker(t, cursor, size, align)); +} + +static metaslab_ops_t metaslab_ff_ops = { + metaslab_ff_alloc +}; + +metaslab_ops_t *zfs_metaslab_ops = &metaslab_ff_ops; +#endif /* WITH_FF_BLOCK_ALLOCATOR */ + +#if defined(WITH_DF_BLOCK_ALLOCATOR) +/* + * ========================================================================== + * Dynamic block allocator - + * Uses the first fit allocation scheme until space get low and then + * adjusts to a best fit allocation method. Uses metaslab_df_alloc_threshold + * and metaslab_df_free_pct to determine when to switch the allocation scheme. + * ========================================================================== + */ +static uint64_t +metaslab_df_alloc(metaslab_t *msp, uint64_t size) +{ + /* + * Find the largest power of 2 block size that evenly divides the + * requested size. This is used to try to allocate blocks with similar + * alignment from the same area of the metaslab (i.e. same cursor + * bucket) but it does not guarantee that other allocations sizes + * may exist in the same region. + */ + uint64_t align = size & -size; + uint64_t *cursor = &msp->ms_lbas[highbit64(align) - 1]; + range_tree_t *rt = msp->ms_tree; + avl_tree_t *t = &rt->rt_root; + uint64_t max_size = metaslab_block_maxsize(msp); + int free_pct = range_tree_space(rt) * 100 / msp->ms_size; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT3U(avl_numnodes(t), ==, avl_numnodes(&msp->ms_size_tree)); + + if (max_size < size) + return (-1ULL); + + /* + * If we're running low on space switch to using the size + * sorted AVL tree (best-fit). + */ + if (max_size < metaslab_df_alloc_threshold || + free_pct < metaslab_df_free_pct) { + t = &msp->ms_size_tree; + *cursor = 0; + } + + return (metaslab_block_picker(t, cursor, size, 1ULL)); +} + +static metaslab_ops_t metaslab_df_ops = { + metaslab_df_alloc +}; + +metaslab_ops_t *zfs_metaslab_ops = &metaslab_df_ops; +#endif /* WITH_DF_BLOCK_ALLOCATOR */ + +#if defined(WITH_CF_BLOCK_ALLOCATOR) +/* + * ========================================================================== + * Cursor fit block allocator - + * Select the largest region in the metaslab, set the cursor to the beginning + * of the range and the cursor_end to the end of the range. As allocations + * are made advance the cursor. Continue allocating from the cursor until + * the range is exhausted and then find a new range. + * ========================================================================== + */ +static uint64_t +metaslab_cf_alloc(metaslab_t *msp, uint64_t size) +{ + range_tree_t *rt = msp->ms_tree; + avl_tree_t *t = &msp->ms_size_tree; + uint64_t *cursor = &msp->ms_lbas[0]; + uint64_t *cursor_end = &msp->ms_lbas[1]; + uint64_t offset = 0; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT3U(avl_numnodes(t), ==, avl_numnodes(&rt->rt_root)); + + ASSERT3U(*cursor_end, >=, *cursor); + + if ((*cursor + size) > *cursor_end) { + range_seg_t *rs; + + rs = avl_last(&msp->ms_size_tree); + if (rs == NULL || (rs->rs_end - rs->rs_start) < size) + return (-1ULL); + + *cursor = rs->rs_start; + *cursor_end = rs->rs_end; + } + + offset = *cursor; + *cursor += size; + + return (offset); +} + +static metaslab_ops_t metaslab_cf_ops = { + metaslab_cf_alloc +}; + +metaslab_ops_t *zfs_metaslab_ops = &metaslab_cf_ops; +#endif /* WITH_CF_BLOCK_ALLOCATOR */ + +#if defined(WITH_NDF_BLOCK_ALLOCATOR) +/* + * ========================================================================== + * New dynamic fit allocator - + * Select a region that is large enough to allocate 2^metaslab_ndf_clump_shift + * contiguous blocks. If no region is found then just use the largest segment + * that remains. + * ========================================================================== + */ + +/* + * Determines desired number of contiguous blocks (2^metaslab_ndf_clump_shift) + * to request from the allocator. + */ +uint64_t metaslab_ndf_clump_shift = 4; + +static uint64_t +metaslab_ndf_alloc(metaslab_t *msp, uint64_t size) +{ + avl_tree_t *t = &msp->ms_tree->rt_root; + avl_index_t where; + range_seg_t *rs, rsearch; + uint64_t hbit = highbit64(size); + uint64_t *cursor = &msp->ms_lbas[hbit - 1]; + uint64_t max_size = metaslab_block_maxsize(msp); + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT3U(avl_numnodes(t), ==, avl_numnodes(&msp->ms_size_tree)); + + if (max_size < size) + return (-1ULL); + + rsearch.rs_start = *cursor; + rsearch.rs_end = *cursor + size; + + rs = avl_find(t, &rsearch, &where); + if (rs == NULL || (rs->rs_end - rs->rs_start) < size) { + t = &msp->ms_size_tree; + + rsearch.rs_start = 0; + rsearch.rs_end = MIN(max_size, + 1ULL << (hbit + metaslab_ndf_clump_shift)); + rs = avl_find(t, &rsearch, &where); + if (rs == NULL) + rs = avl_nearest(t, where, AVL_AFTER); + ASSERT(rs != NULL); + } + + if ((rs->rs_end - rs->rs_start) >= size) { + *cursor = rs->rs_start + size; + return (rs->rs_start); + } + return (-1ULL); +} + +static metaslab_ops_t metaslab_ndf_ops = { + metaslab_ndf_alloc +}; + +metaslab_ops_t *zfs_metaslab_ops = &metaslab_ndf_ops; +#endif /* WITH_NDF_BLOCK_ALLOCATOR */ + + +/* + * ========================================================================== + * Metaslabs + * ========================================================================== + */ + +/* + * Wait for any in-progress metaslab loads to complete. + */ +void +metaslab_load_wait(metaslab_t *msp) +{ + ASSERT(MUTEX_HELD(&msp->ms_lock)); + + while (msp->ms_loading) { + ASSERT(!msp->ms_loaded); + cv_wait(&msp->ms_load_cv, &msp->ms_lock); + } +} + +int +metaslab_load(metaslab_t *msp) +{ + int error = 0; + int t; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT(!msp->ms_loaded); + ASSERT(!msp->ms_loading); + + msp->ms_loading = B_TRUE; + + /* + * If the space map has not been allocated yet, then treat + * all the space in the metaslab as free and add it to the + * ms_tree. + */ + if (msp->ms_sm != NULL) + error = space_map_load(msp->ms_sm, msp->ms_tree, SM_FREE); + else + range_tree_add(msp->ms_tree, msp->ms_start, msp->ms_size); + + msp->ms_loaded = (error == 0); + msp->ms_loading = B_FALSE; + + if (msp->ms_loaded) { + for (t = 0; t < TXG_DEFER_SIZE; t++) { + range_tree_walk(msp->ms_defertree[t], + range_tree_remove, msp->ms_tree); + } + } + cv_broadcast(&msp->ms_load_cv); + return (error); +} + +void +metaslab_unload(metaslab_t *msp) +{ + ASSERT(MUTEX_HELD(&msp->ms_lock)); + range_tree_vacate(msp->ms_tree, NULL, NULL); + msp->ms_loaded = B_FALSE; + msp->ms_weight &= ~METASLAB_ACTIVE_MASK; +} + +int +metaslab_init(metaslab_group_t *mg, uint64_t id, uint64_t object, uint64_t txg, + metaslab_t **msp) +{ + vdev_t *vd = mg->mg_vd; + objset_t *mos = vd->vdev_spa->spa_meta_objset; + metaslab_t *ms; + int error; + + ms = kmem_zalloc(sizeof (metaslab_t), KM_SLEEP); + mutex_init(&ms->ms_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&ms->ms_load_cv, NULL, CV_DEFAULT, NULL); + ms->ms_id = id; + ms->ms_start = id << vd->vdev_ms_shift; + ms->ms_size = 1ULL << vd->vdev_ms_shift; + + /* + * We only open space map objects that already exist. All others + * will be opened when we finally allocate an object for it. + */ + if (object != 0) { + error = space_map_open(&ms->ms_sm, mos, object, ms->ms_start, + ms->ms_size, vd->vdev_ashift, &ms->ms_lock); + + if (error != 0) { + kmem_free(ms, sizeof (metaslab_t)); + return (error); + } + + ASSERT(ms->ms_sm != NULL); + } + + /* + * We create the main range tree here, but we don't create the + * alloctree and freetree until metaslab_sync_done(). This serves + * two purposes: it allows metaslab_sync_done() to detect the + * addition of new space; and for debugging, it ensures that we'd + * data fault on any attempt to use this metaslab before it's ready. + */ + ms->ms_tree = range_tree_create(&metaslab_rt_ops, ms, &ms->ms_lock); + metaslab_group_add(mg, ms); + + ms->ms_fragmentation = metaslab_fragmentation(ms); + ms->ms_ops = mg->mg_class->mc_ops; + + /* + * If we're opening an existing pool (txg == 0) or creating + * a new one (txg == TXG_INITIAL), all space is available now. + * If we're adding space to an existing pool, the new space + * does not become available until after this txg has synced. + */ + if (txg <= TXG_INITIAL) + metaslab_sync_done(ms, 0); + + /* + * If metaslab_debug_load is set and we're initializing a metaslab + * that has an allocated space_map object then load the its space + * map so that can verify frees. + */ + if (metaslab_debug_load && ms->ms_sm != NULL) { + mutex_enter(&ms->ms_lock); + VERIFY0(metaslab_load(ms)); + mutex_exit(&ms->ms_lock); + } + + if (txg != 0) { + vdev_dirty(vd, 0, NULL, txg); + vdev_dirty(vd, VDD_METASLAB, ms, txg); + } + + *msp = ms; + + return (0); +} + +void +metaslab_fini(metaslab_t *msp) +{ + int t; + + metaslab_group_t *mg = msp->ms_group; + + metaslab_group_remove(mg, msp); + + mutex_enter(&msp->ms_lock); + + VERIFY(msp->ms_group == NULL); + vdev_space_update(mg->mg_vd, -space_map_allocated(msp->ms_sm), + 0, -msp->ms_size); + space_map_close(msp->ms_sm); + + metaslab_unload(msp); + range_tree_destroy(msp->ms_tree); + + for (t = 0; t < TXG_SIZE; t++) { + range_tree_destroy(msp->ms_alloctree[t]); + range_tree_destroy(msp->ms_freetree[t]); + } + + for (t = 0; t < TXG_DEFER_SIZE; t++) { + range_tree_destroy(msp->ms_defertree[t]); + } + + ASSERT0(msp->ms_deferspace); + + mutex_exit(&msp->ms_lock); + cv_destroy(&msp->ms_load_cv); + mutex_destroy(&msp->ms_lock); + + kmem_free(msp, sizeof (metaslab_t)); +} + +#define FRAGMENTATION_TABLE_SIZE 17 + +/* + * This table defines a segment size based fragmentation metric that will + * allow each metaslab to derive its own fragmentation value. This is done + * by calculating the space in each bucket of the spacemap histogram and + * multiplying that by the fragmetation metric in this table. Doing + * this for all buckets and dividing it by the total amount of free + * space in this metaslab (i.e. the total free space in all buckets) gives + * us the fragmentation metric. This means that a high fragmentation metric + * equates to most of the free space being comprised of small segments. + * Conversely, if the metric is low, then most of the free space is in + * large segments. A 10% change in fragmentation equates to approximately + * double the number of segments. + * + * This table defines 0% fragmented space using 16MB segments. Testing has + * shown that segments that are greater than or equal to 16MB do not suffer + * from drastic performance problems. Using this value, we derive the rest + * of the table. Since the fragmentation value is never stored on disk, it + * is possible to change these calculations in the future. + */ +int zfs_frag_table[FRAGMENTATION_TABLE_SIZE] = { + 100, /* 512B */ + 100, /* 1K */ + 98, /* 2K */ + 95, /* 4K */ + 90, /* 8K */ + 80, /* 16K */ + 70, /* 32K */ + 60, /* 64K */ + 50, /* 128K */ + 40, /* 256K */ + 30, /* 512K */ + 20, /* 1M */ + 15, /* 2M */ + 10, /* 4M */ + 5, /* 8M */ + 0 /* 16M */ +}; + +/* + * Calclate the metaslab's fragmentation metric. A return value + * of ZFS_FRAG_INVALID means that the metaslab has not been upgraded and does + * not support this metric. Otherwise, the return value should be in the + * range [0, 100]. + */ +static uint64_t +metaslab_fragmentation(metaslab_t *msp) +{ + spa_t *spa = msp->ms_group->mg_vd->vdev_spa; + uint64_t fragmentation = 0; + uint64_t total = 0; + boolean_t feature_enabled = spa_feature_is_enabled(spa, + SPA_FEATURE_SPACEMAP_HISTOGRAM); + int i; + + if (!feature_enabled) + return (ZFS_FRAG_INVALID); + + /* + * A null space map means that the entire metaslab is free + * and thus is not fragmented. + */ + if (msp->ms_sm == NULL) + return (0); + + /* + * If this metaslab's space_map has not been upgraded, flag it + * so that we upgrade next time we encounter it. + */ + if (msp->ms_sm->sm_dbuf->db_size != sizeof (space_map_phys_t)) { + vdev_t *vd = msp->ms_group->mg_vd; + + if (spa_writeable(vd->vdev_spa)) { + uint64_t txg = spa_syncing_txg(spa); + + msp->ms_condense_wanted = B_TRUE; + vdev_dirty(vd, VDD_METASLAB, msp, txg + 1); + spa_dbgmsg(spa, "txg %llu, requesting force condense: " + "msp %p, vd %p", txg, msp, vd); + } + return (ZFS_FRAG_INVALID); + } + + for (i = 0; i < SPACE_MAP_HISTOGRAM_SIZE; i++) { + uint64_t space = 0; + uint8_t shift = msp->ms_sm->sm_shift; + int idx = MIN(shift - SPA_MINBLOCKSHIFT + i, + FRAGMENTATION_TABLE_SIZE - 1); + + if (msp->ms_sm->sm_phys->smp_histogram[i] == 0) + continue; + + space = msp->ms_sm->sm_phys->smp_histogram[i] << (i + shift); + total += space; + + ASSERT3U(idx, <, FRAGMENTATION_TABLE_SIZE); + fragmentation += space * zfs_frag_table[idx]; + } + + if (total > 0) + fragmentation /= total; + ASSERT3U(fragmentation, <=, 100); + return (fragmentation); +} + +/* + * Compute a weight -- a selection preference value -- for the given metaslab. + * This is based on the amount of free space, the level of fragmentation, + * the LBA range, and whether the metaslab is loaded. + */ +static uint64_t +metaslab_weight(metaslab_t *msp) +{ + metaslab_group_t *mg = msp->ms_group; + vdev_t *vd = mg->mg_vd; + uint64_t weight, space; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + + /* + * This vdev is in the process of being removed so there is nothing + * for us to do here. + */ + if (vd->vdev_removing) { + ASSERT0(space_map_allocated(msp->ms_sm)); + ASSERT0(vd->vdev_ms_shift); + return (0); + } + + /* + * The baseline weight is the metaslab's free space. + */ + space = msp->ms_size - space_map_allocated(msp->ms_sm); + + msp->ms_fragmentation = metaslab_fragmentation(msp); + if (metaslab_fragmentation_factor_enabled && + msp->ms_fragmentation != ZFS_FRAG_INVALID) { + /* + * Use the fragmentation information to inversely scale + * down the baseline weight. We need to ensure that we + * don't exclude this metaslab completely when it's 100% + * fragmented. To avoid this we reduce the fragmented value + * by 1. + */ + space = (space * (100 - (msp->ms_fragmentation - 1))) / 100; + + /* + * If space < SPA_MINBLOCKSIZE, then we will not allocate from + * this metaslab again. The fragmentation metric may have + * decreased the space to something smaller than + * SPA_MINBLOCKSIZE, so reset the space to SPA_MINBLOCKSIZE + * so that we can consume any remaining space. + */ + if (space > 0 && space < SPA_MINBLOCKSIZE) + space = SPA_MINBLOCKSIZE; + } + weight = space; + + /* + * Modern disks have uniform bit density and constant angular velocity. + * Therefore, the outer recording zones are faster (higher bandwidth) + * than the inner zones by the ratio of outer to inner track diameter, + * which is typically around 2:1. We account for this by assigning + * higher weight to lower metaslabs (multiplier ranging from 2x to 1x). + * In effect, this means that we'll select the metaslab with the most + * free bandwidth rather than simply the one with the most free space. + */ + if (!vd->vdev_nonrot && metaslab_lba_weighting_enabled) { + weight = 2 * weight - (msp->ms_id * weight) / vd->vdev_ms_count; + ASSERT(weight >= space && weight <= 2 * space); + } + + /* + * If this metaslab is one we're actively using, adjust its + * weight to make it preferable to any inactive metaslab so + * we'll polish it off. If the fragmentation on this metaslab + * has exceed our threshold, then don't mark it active. + */ + if (msp->ms_loaded && msp->ms_fragmentation != ZFS_FRAG_INVALID && + msp->ms_fragmentation <= zfs_metaslab_fragmentation_threshold) { + weight |= (msp->ms_weight & METASLAB_ACTIVE_MASK); + } + + return (weight); +} + +static int +metaslab_activate(metaslab_t *msp, uint64_t activation_weight) +{ + ASSERT(MUTEX_HELD(&msp->ms_lock)); + + if ((msp->ms_weight & METASLAB_ACTIVE_MASK) == 0) { + metaslab_load_wait(msp); + if (!msp->ms_loaded) { + int error = metaslab_load(msp); + if (error) { + metaslab_group_sort(msp->ms_group, msp, 0); + return (error); + } + } + + metaslab_group_sort(msp->ms_group, msp, + msp->ms_weight | activation_weight); + } + ASSERT(msp->ms_loaded); + ASSERT(msp->ms_weight & METASLAB_ACTIVE_MASK); + + return (0); +} + +static void +metaslab_passivate(metaslab_t *msp, uint64_t size) +{ + /* + * If size < SPA_MINBLOCKSIZE, then we will not allocate from + * this metaslab again. In that case, it had better be empty, + * or we would be leaving space on the table. + */ + ASSERT(size >= SPA_MINBLOCKSIZE || range_tree_space(msp->ms_tree) == 0); + metaslab_group_sort(msp->ms_group, msp, MIN(msp->ms_weight, size)); + ASSERT((msp->ms_weight & METASLAB_ACTIVE_MASK) == 0); +} + +static void +metaslab_preload(void *arg) +{ + metaslab_t *msp = arg; + spa_t *spa = msp->ms_group->mg_vd->vdev_spa; + fstrans_cookie_t cookie = spl_fstrans_mark(); + + ASSERT(!MUTEX_HELD(&msp->ms_group->mg_lock)); + + mutex_enter(&msp->ms_lock); + metaslab_load_wait(msp); + if (!msp->ms_loaded) + (void) metaslab_load(msp); + + /* + * Set the ms_access_txg value so that we don't unload it right away. + */ + msp->ms_access_txg = spa_syncing_txg(spa) + metaslab_unload_delay + 1; + mutex_exit(&msp->ms_lock); + spl_fstrans_unmark(cookie); +} + +static void +metaslab_group_preload(metaslab_group_t *mg) +{ + spa_t *spa = mg->mg_vd->vdev_spa; + metaslab_t *msp; + avl_tree_t *t = &mg->mg_metaslab_tree; + int m = 0; + + if (spa_shutting_down(spa) || !metaslab_preload_enabled) { + taskq_wait_outstanding(mg->mg_taskq, 0); + return; + } + + mutex_enter(&mg->mg_lock); + /* + * Load the next potential metaslabs + */ + msp = avl_first(t); + while (msp != NULL) { + metaslab_t *msp_next = AVL_NEXT(t, msp); + + /* + * We preload only the maximum number of metaslabs specified + * by metaslab_preload_limit. If a metaslab is being forced + * to condense then we preload it too. This will ensure + * that force condensing happens in the next txg. + */ + if (++m > metaslab_preload_limit && !msp->ms_condense_wanted) { + msp = msp_next; + continue; + } + + /* + * We must drop the metaslab group lock here to preserve + * lock ordering with the ms_lock (when grabbing both + * the mg_lock and the ms_lock, the ms_lock must be taken + * first). As a result, it is possible that the ordering + * of the metaslabs within the avl tree may change before + * we reacquire the lock. The metaslab cannot be removed from + * the tree while we're in syncing context so it is safe to + * drop the mg_lock here. If the metaslabs are reordered + * nothing will break -- we just may end up loading a + * less than optimal one. + */ + mutex_exit(&mg->mg_lock); + VERIFY(taskq_dispatch(mg->mg_taskq, metaslab_preload, + msp, TQ_SLEEP) != 0); + mutex_enter(&mg->mg_lock); + msp = msp_next; + } + mutex_exit(&mg->mg_lock); +} + +/* + * Determine if the space map's on-disk footprint is past our tolerance + * for inefficiency. We would like to use the following criteria to make + * our decision: + * + * 1. The size of the space map object should not dramatically increase as a + * result of writing out the free space range tree. + * + * 2. The minimal on-disk space map representation is zfs_condense_pct/100 + * times the size than the free space range tree representation + * (i.e. zfs_condense_pct = 110 and in-core = 1MB, minimal = 1.1.MB). + * + * 3. The on-disk size of the space map should actually decrease. + * + * Checking the first condition is tricky since we don't want to walk + * the entire AVL tree calculating the estimated on-disk size. Instead we + * use the size-ordered range tree in the metaslab and calculate the + * size required to write out the largest segment in our free tree. If the + * size required to represent that segment on disk is larger than the space + * map object then we avoid condensing this map. + * + * To determine the second criterion we use a best-case estimate and assume + * each segment can be represented on-disk as a single 64-bit entry. We refer + * to this best-case estimate as the space map's minimal form. + * + * Unfortunately, we cannot compute the on-disk size of the space map in this + * context because we cannot accurately compute the effects of compression, etc. + * Instead, we apply the heuristic described in the block comment for + * zfs_metaslab_condense_block_threshold - we only condense if the space used + * is greater than a threshold number of blocks. + */ +static boolean_t +metaslab_should_condense(metaslab_t *msp) +{ + space_map_t *sm = msp->ms_sm; + range_seg_t *rs; + uint64_t size, entries, segsz, object_size, optimal_size, record_size; + dmu_object_info_t doi; + uint64_t vdev_blocksize = 1 << msp->ms_group->mg_vd->vdev_ashift; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT(msp->ms_loaded); + + /* + * Use the ms_size_tree range tree, which is ordered by size, to + * obtain the largest segment in the free tree. We always condense + * metaslabs that are empty and metaslabs for which a condense + * request has been made. + */ + rs = avl_last(&msp->ms_size_tree); + if (rs == NULL || msp->ms_condense_wanted) + return (B_TRUE); + + /* + * Calculate the number of 64-bit entries this segment would + * require when written to disk. If this single segment would be + * larger on-disk than the entire current on-disk structure, then + * clearly condensing will increase the on-disk structure size. + */ + size = (rs->rs_end - rs->rs_start) >> sm->sm_shift; + entries = size / (MIN(size, SM_RUN_MAX)); + segsz = entries * sizeof (uint64_t); + + optimal_size = sizeof (uint64_t) * avl_numnodes(&msp->ms_tree->rt_root); + object_size = space_map_length(msp->ms_sm); + + dmu_object_info_from_db(sm->sm_dbuf, &doi); + record_size = MAX(doi.doi_data_block_size, vdev_blocksize); + + return (segsz <= object_size && + object_size >= (optimal_size * zfs_condense_pct / 100) && + object_size > zfs_metaslab_condense_block_threshold * record_size); +} + +/* + * Condense the on-disk space map representation to its minimized form. + * The minimized form consists of a small number of allocations followed by + * the entries of the free range tree. + */ +static void +metaslab_condense(metaslab_t *msp, uint64_t txg, dmu_tx_t *tx) +{ + spa_t *spa = msp->ms_group->mg_vd->vdev_spa; + range_tree_t *freetree = msp->ms_freetree[txg & TXG_MASK]; + range_tree_t *condense_tree; + space_map_t *sm = msp->ms_sm; + int t; + + ASSERT(MUTEX_HELD(&msp->ms_lock)); + ASSERT3U(spa_sync_pass(spa), ==, 1); + ASSERT(msp->ms_loaded); + + + spa_dbgmsg(spa, "condensing: txg %llu, msp[%llu] %p, " + "smp size %llu, segments %lu, forcing condense=%s", txg, + msp->ms_id, msp, space_map_length(msp->ms_sm), + avl_numnodes(&msp->ms_tree->rt_root), + msp->ms_condense_wanted ? "TRUE" : "FALSE"); + + msp->ms_condense_wanted = B_FALSE; + + /* + * Create an range tree that is 100% allocated. We remove segments + * that have been freed in this txg, any deferred frees that exist, + * and any allocation in the future. Removing segments should be + * a relatively inexpensive operation since we expect these trees to + * have a small number of nodes. + */ + condense_tree = range_tree_create(NULL, NULL, &msp->ms_lock); + range_tree_add(condense_tree, msp->ms_start, msp->ms_size); + + /* + * Remove what's been freed in this txg from the condense_tree. + * Since we're in sync_pass 1, we know that all the frees from + * this txg are in the freetree. + */ + range_tree_walk(freetree, range_tree_remove, condense_tree); + + for (t = 0; t < TXG_DEFER_SIZE; t++) { + range_tree_walk(msp->ms_defertree[t], + range_tree_remove, condense_tree); + } + + for (t = 1; t < TXG_CONCURRENT_STATES; t++) { + range_tree_walk(msp->ms_alloctree[(txg + t) & TXG_MASK], + range_tree_remove, condense_tree); + } + + /* + * We're about to drop the metaslab's lock thus allowing + * other consumers to change it's content. Set the + * metaslab's ms_condensing flag to ensure that + * allocations on this metaslab do not occur while we're + * in the middle of committing it to disk. This is only critical + * for the ms_tree as all other range trees use per txg + * views of their content. + */ + msp->ms_condensing = B_TRUE; + + mutex_exit(&msp->ms_lock); + space_map_truncate(sm, tx); + mutex_enter(&msp->ms_lock); + + /* + * While we would ideally like to create a space_map representation + * that consists only of allocation records, doing so can be + * prohibitively expensive because the in-core free tree can be + * large, and therefore computationally expensive to subtract + * from the condense_tree. Instead we sync out two trees, a cheap + * allocation only tree followed by the in-core free tree. While not + * optimal, this is typically close to optimal, and much cheaper to + * compute. + */ + space_map_write(sm, condense_tree, SM_ALLOC, tx); + range_tree_vacate(condense_tree, NULL, NULL); + range_tree_destroy(condense_tree); + + space_map_write(sm, msp->ms_tree, SM_FREE, tx); + msp->ms_condensing = B_FALSE; +} + +/* + * Write a metaslab to disk in the context of the specified transaction group. + */ +void +metaslab_sync(metaslab_t *msp, uint64_t txg) +{ + metaslab_group_t *mg = msp->ms_group; + vdev_t *vd = mg->mg_vd; + spa_t *spa = vd->vdev_spa; + objset_t *mos = spa_meta_objset(spa); + range_tree_t *alloctree = msp->ms_alloctree[txg & TXG_MASK]; + range_tree_t **freetree = &msp->ms_freetree[txg & TXG_MASK]; + range_tree_t **freed_tree = + &msp->ms_freetree[TXG_CLEAN(txg) & TXG_MASK]; + dmu_tx_t *tx; + uint64_t object = space_map_object(msp->ms_sm); + + ASSERT(!vd->vdev_ishole); + + /* + * This metaslab has just been added so there's no work to do now. + */ + if (*freetree == NULL) { + ASSERT3P(alloctree, ==, NULL); + return; + } + + ASSERT3P(alloctree, !=, NULL); + ASSERT3P(*freetree, !=, NULL); + ASSERT3P(*freed_tree, !=, NULL); + + /* + * Normally, we don't want to process a metaslab if there + * are no allocations or frees to perform. However, if the metaslab + * is being forced to condense we need to let it through. + */ + if (range_tree_space(alloctree) == 0 && + range_tree_space(*freetree) == 0 && + !msp->ms_condense_wanted) + return; + + /* + * The only state that can actually be changing concurrently with + * metaslab_sync() is the metaslab's ms_tree. No other thread can + * be modifying this txg's alloctree, freetree, freed_tree, or + * space_map_phys_t. Therefore, we only hold ms_lock to satify + * space_map ASSERTs. We drop it whenever we call into the DMU, + * because the DMU can call down to us (e.g. via zio_free()) at + * any time. + */ + + tx = dmu_tx_create_assigned(spa_get_dsl(spa), txg); + + if (msp->ms_sm == NULL) { + uint64_t new_object; + + new_object = space_map_alloc(mos, tx); + VERIFY3U(new_object, !=, 0); + + VERIFY0(space_map_open(&msp->ms_sm, mos, new_object, + msp->ms_start, msp->ms_size, vd->vdev_ashift, + &msp->ms_lock)); + ASSERT(msp->ms_sm != NULL); + } + + mutex_enter(&msp->ms_lock); + + /* + * Note: metaslab_condense() clears the space_map's histogram. + * Therefore we muse verify and remove this histogram before + * condensing. + */ + metaslab_group_histogram_verify(mg); + metaslab_class_histogram_verify(mg->mg_class); + metaslab_group_histogram_remove(mg, msp); + + if (msp->ms_loaded && spa_sync_pass(spa) == 1 && + metaslab_should_condense(msp)) { + metaslab_condense(msp, txg, tx); + } else { + space_map_write(msp->ms_sm, alloctree, SM_ALLOC, tx); + space_map_write(msp->ms_sm, *freetree, SM_FREE, tx); + } + + if (msp->ms_loaded) { + /* + * When the space map is loaded, we have an accruate + * histogram in the range tree. This gives us an opportunity + * to bring the space map's histogram up-to-date so we clear + * it first before updating it. + */ + space_map_histogram_clear(msp->ms_sm); + space_map_histogram_add(msp->ms_sm, msp->ms_tree, tx); + } else { + /* + * Since the space map is not loaded we simply update the + * exisiting histogram with what was freed in this txg. This + * means that the on-disk histogram may not have an accurate + * view of the free space but it's close enough to allow + * us to make allocation decisions. + */ + space_map_histogram_add(msp->ms_sm, *freetree, tx); + } + metaslab_group_histogram_add(mg, msp); + metaslab_group_histogram_verify(mg); + metaslab_class_histogram_verify(mg->mg_class); + + /* + * For sync pass 1, we avoid traversing this txg's free range tree + * and instead will just swap the pointers for freetree and + * freed_tree. We can safely do this since the freed_tree is + * guaranteed to be empty on the initial pass. + */ + if (spa_sync_pass(spa) == 1) { + range_tree_swap(freetree, freed_tree); + } else { + range_tree_vacate(*freetree, range_tree_add, *freed_tree); + } + range_tree_vacate(alloctree, NULL, NULL); + + ASSERT0(range_tree_space(msp->ms_alloctree[txg & TXG_MASK])); + ASSERT0(range_tree_space(msp->ms_freetree[txg & TXG_MASK])); + + mutex_exit(&msp->ms_lock); + + if (object != space_map_object(msp->ms_sm)) { + object = space_map_object(msp->ms_sm); + dmu_write(mos, vd->vdev_ms_array, sizeof (uint64_t) * + msp->ms_id, sizeof (uint64_t), &object, tx); + } + dmu_tx_commit(tx); +} + +/* + * Called after a transaction group has completely synced to mark + * all of the metaslab's free space as usable. + */ +void +metaslab_sync_done(metaslab_t *msp, uint64_t txg) +{ + metaslab_group_t *mg = msp->ms_group; + vdev_t *vd = mg->mg_vd; + range_tree_t **freed_tree; + range_tree_t **defer_tree; + int64_t alloc_delta, defer_delta; + int t; + + ASSERT(!vd->vdev_ishole); + + mutex_enter(&msp->ms_lock); + + /* + * If this metaslab is just becoming available, initialize its + * alloctrees, freetrees, and defertree and add its capacity to + * the vdev. + */ + if (msp->ms_freetree[TXG_CLEAN(txg) & TXG_MASK] == NULL) { + for (t = 0; t < TXG_SIZE; t++) { + ASSERT(msp->ms_alloctree[t] == NULL); + ASSERT(msp->ms_freetree[t] == NULL); + + msp->ms_alloctree[t] = range_tree_create(NULL, msp, + &msp->ms_lock); + msp->ms_freetree[t] = range_tree_create(NULL, msp, + &msp->ms_lock); + } + + for (t = 0; t < TXG_DEFER_SIZE; t++) { + ASSERT(msp->ms_defertree[t] == NULL); + + msp->ms_defertree[t] = range_tree_create(NULL, msp, + &msp->ms_lock); + } + + vdev_space_update(vd, 0, 0, msp->ms_size); + } + + freed_tree = &msp->ms_freetree[TXG_CLEAN(txg) & TXG_MASK]; + defer_tree = &msp->ms_defertree[txg % TXG_DEFER_SIZE]; + + alloc_delta = space_map_alloc_delta(msp->ms_sm); + defer_delta = range_tree_space(*freed_tree) - + range_tree_space(*defer_tree); + + vdev_space_update(vd, alloc_delta + defer_delta, defer_delta, 0); + + ASSERT0(range_tree_space(msp->ms_alloctree[txg & TXG_MASK])); + ASSERT0(range_tree_space(msp->ms_freetree[txg & TXG_MASK])); + + /* + * If there's a metaslab_load() in progress, wait for it to complete + * so that we have a consistent view of the in-core space map. + */ + metaslab_load_wait(msp); + + /* + * Move the frees from the defer_tree back to the free + * range tree (if it's loaded). Swap the freed_tree and the + * defer_tree -- this is safe to do because we've just emptied out + * the defer_tree. + */ + range_tree_vacate(*defer_tree, + msp->ms_loaded ? range_tree_add : NULL, msp->ms_tree); + range_tree_swap(freed_tree, defer_tree); + + space_map_update(msp->ms_sm); + + msp->ms_deferspace += defer_delta; + ASSERT3S(msp->ms_deferspace, >=, 0); + ASSERT3S(msp->ms_deferspace, <=, msp->ms_size); + if (msp->ms_deferspace != 0) { + /* + * Keep syncing this metaslab until all deferred frees + * are back in circulation. + */ + vdev_dirty(vd, VDD_METASLAB, msp, txg + 1); + } + + if (msp->ms_loaded && msp->ms_access_txg < txg) { + for (t = 1; t < TXG_CONCURRENT_STATES; t++) { + VERIFY0(range_tree_space( + msp->ms_alloctree[(txg + t) & TXG_MASK])); + } + + if (!metaslab_debug_unload) + metaslab_unload(msp); + } + + metaslab_group_sort(mg, msp, metaslab_weight(msp)); + mutex_exit(&msp->ms_lock); +} + +void +metaslab_sync_reassess(metaslab_group_t *mg) +{ + metaslab_group_alloc_update(mg); + mg->mg_fragmentation = metaslab_group_fragmentation(mg); + + /* + * Preload the next potential metaslabs + */ + metaslab_group_preload(mg); +} + +static uint64_t +metaslab_distance(metaslab_t *msp, dva_t *dva) +{ + uint64_t ms_shift = msp->ms_group->mg_vd->vdev_ms_shift; + uint64_t offset = DVA_GET_OFFSET(dva) >> ms_shift; + uint64_t start = msp->ms_id; + + if (msp->ms_group->mg_vd->vdev_id != DVA_GET_VDEV(dva)) + return (1ULL << 63); + + if (offset < start) + return ((start - offset) << ms_shift); + if (offset > start) + return ((offset - start) << ms_shift); + return (0); +} + +static uint64_t +metaslab_group_alloc(metaslab_group_t *mg, uint64_t psize, uint64_t asize, + uint64_t txg, uint64_t min_distance, dva_t *dva, int d) +{ + spa_t *spa = mg->mg_vd->vdev_spa; + metaslab_t *msp = NULL; + uint64_t offset = -1ULL; + avl_tree_t *t = &mg->mg_metaslab_tree; + uint64_t activation_weight; + uint64_t target_distance; + int i; + + activation_weight = METASLAB_WEIGHT_PRIMARY; + for (i = 0; i < d; i++) { + if (DVA_GET_VDEV(&dva[i]) == mg->mg_vd->vdev_id) { + activation_weight = METASLAB_WEIGHT_SECONDARY; + break; + } + } + + for (;;) { + boolean_t was_active; + + mutex_enter(&mg->mg_lock); + for (msp = avl_first(t); msp; msp = AVL_NEXT(t, msp)) { + if (msp->ms_weight < asize) { + spa_dbgmsg(spa, "%s: failed to meet weight " + "requirement: vdev %llu, txg %llu, mg %p, " + "msp %p, psize %llu, asize %llu, " + "weight %llu", spa_name(spa), + mg->mg_vd->vdev_id, txg, + mg, msp, psize, asize, msp->ms_weight); + mutex_exit(&mg->mg_lock); + return (-1ULL); + } + + /* + * If the selected metaslab is condensing, skip it. + */ + if (msp->ms_condensing) + continue; + + was_active = msp->ms_weight & METASLAB_ACTIVE_MASK; + if (activation_weight == METASLAB_WEIGHT_PRIMARY) + break; + + target_distance = min_distance + + (space_map_allocated(msp->ms_sm) != 0 ? 0 : + min_distance >> 1); + + for (i = 0; i < d; i++) + if (metaslab_distance(msp, &dva[i]) < + target_distance) + break; + if (i == d) + break; + } + mutex_exit(&mg->mg_lock); + if (msp == NULL) + return (-1ULL); + + mutex_enter(&msp->ms_lock); + + /* + * Ensure that the metaslab we have selected is still + * capable of handling our request. It's possible that + * another thread may have changed the weight while we + * were blocked on the metaslab lock. + */ + if (msp->ms_weight < asize || (was_active && + !(msp->ms_weight & METASLAB_ACTIVE_MASK) && + activation_weight == METASLAB_WEIGHT_PRIMARY)) { + mutex_exit(&msp->ms_lock); + continue; + } + + if ((msp->ms_weight & METASLAB_WEIGHT_SECONDARY) && + activation_weight == METASLAB_WEIGHT_PRIMARY) { + metaslab_passivate(msp, + msp->ms_weight & ~METASLAB_ACTIVE_MASK); + mutex_exit(&msp->ms_lock); + continue; + } + + if (metaslab_activate(msp, activation_weight) != 0) { + mutex_exit(&msp->ms_lock); + continue; + } + + /* + * If this metaslab is currently condensing then pick again as + * we can't manipulate this metaslab until it's committed + * to disk. + */ + if (msp->ms_condensing) { + mutex_exit(&msp->ms_lock); + continue; + } + + if ((offset = metaslab_block_alloc(msp, asize)) != -1ULL) + break; + + metaslab_passivate(msp, metaslab_block_maxsize(msp)); + mutex_exit(&msp->ms_lock); + } + + if (range_tree_space(msp->ms_alloctree[txg & TXG_MASK]) == 0) + vdev_dirty(mg->mg_vd, VDD_METASLAB, msp, txg); + + range_tree_add(msp->ms_alloctree[txg & TXG_MASK], offset, asize); + msp->ms_access_txg = txg + metaslab_unload_delay; + + mutex_exit(&msp->ms_lock); + + return (offset); +} + +/* + * Allocate a block for the specified i/o. + */ +static int +metaslab_alloc_dva(spa_t *spa, metaslab_class_t *mc, uint64_t psize, + dva_t *dva, int d, dva_t *hintdva, uint64_t txg, int flags) +{ + metaslab_group_t *mg, *fast_mg, *rotor; + vdev_t *vd; + int dshift = 3; + int all_zero; + int zio_lock = B_FALSE; + boolean_t allocatable; + uint64_t offset = -1ULL; + uint64_t asize; + uint64_t distance; + + ASSERT(!DVA_IS_VALID(&dva[d])); + + /* + * For testing, make some blocks above a certain size be gang blocks. + */ + if (psize >= metaslab_gang_bang && (ddi_get_lbolt() & 3) == 0) + return (SET_ERROR(ENOSPC)); + + if (flags & METASLAB_FASTWRITE) + mutex_enter(&mc->mc_fastwrite_lock); + + /* + * Start at the rotor and loop through all mgs until we find something. + * Note that there's no locking on mc_rotor or mc_aliquot because + * nothing actually breaks if we miss a few updates -- we just won't + * allocate quite as evenly. It all balances out over time. + * + * If we are doing ditto or log blocks, try to spread them across + * consecutive vdevs. If we're forced to reuse a vdev before we've + * allocated all of our ditto blocks, then try and spread them out on + * that vdev as much as possible. If it turns out to not be possible, + * gradually lower our standards until anything becomes acceptable. + * Also, allocating on consecutive vdevs (as opposed to random vdevs) + * gives us hope of containing our fault domains to something we're + * able to reason about. Otherwise, any two top-level vdev failures + * will guarantee the loss of data. With consecutive allocation, + * only two adjacent top-level vdev failures will result in data loss. + * + * If we are doing gang blocks (hintdva is non-NULL), try to keep + * ourselves on the same vdev as our gang block header. That + * way, we can hope for locality in vdev_cache, plus it makes our + * fault domains something tractable. + */ + if (hintdva) { + vd = vdev_lookup_top(spa, DVA_GET_VDEV(&hintdva[d])); + + /* + * It's possible the vdev we're using as the hint no + * longer exists (i.e. removed). Consult the rotor when + * all else fails. + */ + if (vd != NULL) { + mg = vd->vdev_mg; + + if (flags & METASLAB_HINTBP_AVOID && + mg->mg_next != NULL) + mg = mg->mg_next; + } else { + mg = mc->mc_rotor; + } + } else if (d != 0) { + vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[d - 1])); + mg = vd->vdev_mg->mg_next; + } else if (flags & METASLAB_FASTWRITE) { + mg = fast_mg = mc->mc_rotor; + + do { + if (fast_mg->mg_vd->vdev_pending_fastwrite < + mg->mg_vd->vdev_pending_fastwrite) + mg = fast_mg; + } while ((fast_mg = fast_mg->mg_next) != mc->mc_rotor); + + } else { + mg = mc->mc_rotor; + } + + /* + * If the hint put us into the wrong metaslab class, or into a + * metaslab group that has been passivated, just follow the rotor. + */ + if (mg->mg_class != mc || mg->mg_activation_count <= 0) + mg = mc->mc_rotor; + + rotor = mg; +top: + all_zero = B_TRUE; + do { + ASSERT(mg->mg_activation_count == 1); + + vd = mg->mg_vd; + + /* + * Don't allocate from faulted devices. + */ + if (zio_lock) { + spa_config_enter(spa, SCL_ZIO, FTAG, RW_READER); + allocatable = vdev_allocatable(vd); + spa_config_exit(spa, SCL_ZIO, FTAG); + } else { + allocatable = vdev_allocatable(vd); + } + + /* + * Determine if the selected metaslab group is eligible + * for allocations. If we're ganging or have requested + * an allocation for the smallest gang block size + * then we don't want to avoid allocating to the this + * metaslab group. If we're in this condition we should + * try to allocate from any device possible so that we + * don't inadvertently return ENOSPC and suspend the pool + * even though space is still available. + */ + if (allocatable && CAN_FASTGANG(flags) && + psize > SPA_GANGBLOCKSIZE) + allocatable = metaslab_group_allocatable(mg); + + if (!allocatable) + goto next; + + /* + * Avoid writing single-copy data to a failing vdev + * unless the user instructs us that it is okay. + */ + if ((vd->vdev_stat.vs_write_errors > 0 || + vd->vdev_state < VDEV_STATE_HEALTHY) && + d == 0 && dshift == 3 && vd->vdev_children == 0) { + all_zero = B_FALSE; + goto next; + } + + ASSERT(mg->mg_class == mc); + + distance = vd->vdev_asize >> dshift; + if (distance <= (1ULL << vd->vdev_ms_shift)) + distance = 0; + else + all_zero = B_FALSE; + + asize = vdev_psize_to_asize(vd, psize); + ASSERT(P2PHASE(asize, 1ULL << vd->vdev_ashift) == 0); + + offset = metaslab_group_alloc(mg, psize, asize, txg, distance, + dva, d); + if (offset != -1ULL) { + /* + * If we've just selected this metaslab group, + * figure out whether the corresponding vdev is + * over- or under-used relative to the pool, + * and set an allocation bias to even it out. + * + * Bias is also used to compensate for unequally + * sized vdevs so that space is allocated fairly. + */ + if (mc->mc_aliquot == 0 && metaslab_bias_enabled) { + vdev_stat_t *vs = &vd->vdev_stat; + int64_t vs_free = vs->vs_space - vs->vs_alloc; + int64_t mc_free = mc->mc_space - mc->mc_alloc; + int64_t ratio; + + /* + * Calculate how much more or less we should + * try to allocate from this device during + * this iteration around the rotor. + * + * This basically introduces a zero-centered + * bias towards the devices with the most + * free space, while compensating for vdev + * size differences. + * + * Examples: + * vdev V1 = 16M/128M + * vdev V2 = 16M/128M + * ratio(V1) = 100% ratio(V2) = 100% + * + * vdev V1 = 16M/128M + * vdev V2 = 64M/128M + * ratio(V1) = 127% ratio(V2) = 72% + * + * vdev V1 = 16M/128M + * vdev V2 = 64M/512M + * ratio(V1) = 40% ratio(V2) = 160% + */ + ratio = (vs_free * mc->mc_alloc_groups * 100) / + (mc_free + 1); + mg->mg_bias = ((ratio - 100) * + (int64_t)mg->mg_aliquot) / 100; + } else if (!metaslab_bias_enabled) { + mg->mg_bias = 0; + } + + if ((flags & METASLAB_FASTWRITE) || + atomic_add_64_nv(&mc->mc_aliquot, asize) >= + mg->mg_aliquot + mg->mg_bias) { + mc->mc_rotor = mg->mg_next; + mc->mc_aliquot = 0; + } + + DVA_SET_VDEV(&dva[d], vd->vdev_id); + DVA_SET_OFFSET(&dva[d], offset); + DVA_SET_GANG(&dva[d], !!(flags & METASLAB_GANG_HEADER)); + DVA_SET_ASIZE(&dva[d], asize); + + if (flags & METASLAB_FASTWRITE) { + atomic_add_64(&vd->vdev_pending_fastwrite, + psize); + mutex_exit(&mc->mc_fastwrite_lock); + } + + return (0); + } +next: + mc->mc_rotor = mg->mg_next; + mc->mc_aliquot = 0; + } while ((mg = mg->mg_next) != rotor); + + if (!all_zero) { + dshift++; + ASSERT(dshift < 64); + goto top; + } + + if (!allocatable && !zio_lock) { + dshift = 3; + zio_lock = B_TRUE; + goto top; + } + + bzero(&dva[d], sizeof (dva_t)); + + if (flags & METASLAB_FASTWRITE) + mutex_exit(&mc->mc_fastwrite_lock); + + return (SET_ERROR(ENOSPC)); +} + +/* + * Free the block represented by DVA in the context of the specified + * transaction group. + */ +static void +metaslab_free_dva(spa_t *spa, const dva_t *dva, uint64_t txg, boolean_t now) +{ + uint64_t vdev = DVA_GET_VDEV(dva); + uint64_t offset = DVA_GET_OFFSET(dva); + uint64_t size = DVA_GET_ASIZE(dva); + vdev_t *vd; + metaslab_t *msp; + + if (txg > spa_freeze_txg(spa)) + return; + + if ((vd = vdev_lookup_top(spa, vdev)) == NULL || !DVA_IS_VALID(dva) || + (offset >> vd->vdev_ms_shift) >= vd->vdev_ms_count) { + zfs_panic_recover("metaslab_free_dva(): bad DVA %llu:%llu:%llu", + (u_longlong_t)vdev, (u_longlong_t)offset, + (u_longlong_t)size); + return; + } + + msp = vd->vdev_ms[offset >> vd->vdev_ms_shift]; + + if (DVA_GET_GANG(dva)) + size = vdev_psize_to_asize(vd, SPA_GANGBLOCKSIZE); + + mutex_enter(&msp->ms_lock); + + if (now) { + range_tree_remove(msp->ms_alloctree[txg & TXG_MASK], + offset, size); + + VERIFY(!msp->ms_condensing); + VERIFY3U(offset, >=, msp->ms_start); + VERIFY3U(offset + size, <=, msp->ms_start + msp->ms_size); + VERIFY3U(range_tree_space(msp->ms_tree) + size, <=, + msp->ms_size); + VERIFY0(P2PHASE(offset, 1ULL << vd->vdev_ashift)); + VERIFY0(P2PHASE(size, 1ULL << vd->vdev_ashift)); + range_tree_add(msp->ms_tree, offset, size); + } else { + if (range_tree_space(msp->ms_freetree[txg & TXG_MASK]) == 0) + vdev_dirty(vd, VDD_METASLAB, msp, txg); + range_tree_add(msp->ms_freetree[txg & TXG_MASK], + offset, size); + } + + mutex_exit(&msp->ms_lock); +} + +/* + * Intent log support: upon opening the pool after a crash, notify the SPA + * of blocks that the intent log has allocated for immediate write, but + * which are still considered free by the SPA because the last transaction + * group didn't commit yet. + */ +static int +metaslab_claim_dva(spa_t *spa, const dva_t *dva, uint64_t txg) +{ + uint64_t vdev = DVA_GET_VDEV(dva); + uint64_t offset = DVA_GET_OFFSET(dva); + uint64_t size = DVA_GET_ASIZE(dva); + vdev_t *vd; + metaslab_t *msp; + int error = 0; + + ASSERT(DVA_IS_VALID(dva)); + + if ((vd = vdev_lookup_top(spa, vdev)) == NULL || + (offset >> vd->vdev_ms_shift) >= vd->vdev_ms_count) + return (SET_ERROR(ENXIO)); + + msp = vd->vdev_ms[offset >> vd->vdev_ms_shift]; + + if (DVA_GET_GANG(dva)) + size = vdev_psize_to_asize(vd, SPA_GANGBLOCKSIZE); + + mutex_enter(&msp->ms_lock); + + if ((txg != 0 && spa_writeable(spa)) || !msp->ms_loaded) + error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY); + + if (error == 0 && !range_tree_contains(msp->ms_tree, offset, size)) + error = SET_ERROR(ENOENT); + + if (error || txg == 0) { /* txg == 0 indicates dry run */ + mutex_exit(&msp->ms_lock); + return (error); + } + + VERIFY(!msp->ms_condensing); + VERIFY0(P2PHASE(offset, 1ULL << vd->vdev_ashift)); + VERIFY0(P2PHASE(size, 1ULL << vd->vdev_ashift)); + VERIFY3U(range_tree_space(msp->ms_tree) - size, <=, msp->ms_size); + range_tree_remove(msp->ms_tree, offset, size); + + if (spa_writeable(spa)) { /* don't dirty if we're zdb(1M) */ + if (range_tree_space(msp->ms_alloctree[txg & TXG_MASK]) == 0) + vdev_dirty(vd, VDD_METASLAB, msp, txg); + range_tree_add(msp->ms_alloctree[txg & TXG_MASK], offset, size); + } + + mutex_exit(&msp->ms_lock); + + return (0); +} + +int +metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp, + int ndvas, uint64_t txg, blkptr_t *hintbp, int flags) +{ + dva_t *dva = bp->blk_dva; + dva_t *hintdva = hintbp->blk_dva; + int d, error = 0; + + ASSERT(bp->blk_birth == 0); + ASSERT(BP_PHYSICAL_BIRTH(bp) == 0); + + spa_config_enter(spa, SCL_ALLOC, FTAG, RW_READER); + + if (mc->mc_rotor == NULL) { /* no vdevs in this class */ + spa_config_exit(spa, SCL_ALLOC, FTAG); + return (SET_ERROR(ENOSPC)); + } + + ASSERT(ndvas > 0 && ndvas <= spa_max_replication(spa)); + ASSERT(BP_GET_NDVAS(bp) == 0); + ASSERT(hintbp == NULL || ndvas <= BP_GET_NDVAS(hintbp)); + + for (d = 0; d < ndvas; d++) { + error = metaslab_alloc_dva(spa, mc, psize, dva, d, hintdva, + txg, flags); + if (error != 0) { + for (d--; d >= 0; d--) { + metaslab_free_dva(spa, &dva[d], txg, B_TRUE); + bzero(&dva[d], sizeof (dva_t)); + } + spa_config_exit(spa, SCL_ALLOC, FTAG); + return (error); + } + } + ASSERT(error == 0); + ASSERT(BP_GET_NDVAS(bp) == ndvas); + + spa_config_exit(spa, SCL_ALLOC, FTAG); + + BP_SET_BIRTH(bp, txg, txg); + + return (0); +} + +void +metaslab_free(spa_t *spa, const blkptr_t *bp, uint64_t txg, boolean_t now) +{ + const dva_t *dva = bp->blk_dva; + int d, ndvas = BP_GET_NDVAS(bp); + + ASSERT(!BP_IS_HOLE(bp)); + ASSERT(!now || bp->blk_birth >= spa_syncing_txg(spa)); + + spa_config_enter(spa, SCL_FREE, FTAG, RW_READER); + + for (d = 0; d < ndvas; d++) + metaslab_free_dva(spa, &dva[d], txg, now); + + spa_config_exit(spa, SCL_FREE, FTAG); +} + +int +metaslab_claim(spa_t *spa, const blkptr_t *bp, uint64_t txg) +{ + const dva_t *dva = bp->blk_dva; + int ndvas = BP_GET_NDVAS(bp); + int d, error = 0; + + ASSERT(!BP_IS_HOLE(bp)); + + if (txg != 0) { + /* + * First do a dry run to make sure all DVAs are claimable, + * so we don't have to unwind from partial failures below. + */ + if ((error = metaslab_claim(spa, bp, 0)) != 0) + return (error); + } + + spa_config_enter(spa, SCL_ALLOC, FTAG, RW_READER); + + for (d = 0; d < ndvas; d++) + if ((error = metaslab_claim_dva(spa, &dva[d], txg)) != 0) + break; + + spa_config_exit(spa, SCL_ALLOC, FTAG); + + ASSERT(error == 0 || txg == 0); + + return (error); +} + +void +metaslab_fastwrite_mark(spa_t *spa, const blkptr_t *bp) +{ + const dva_t *dva = bp->blk_dva; + int ndvas = BP_GET_NDVAS(bp); + uint64_t psize = BP_GET_PSIZE(bp); + int d; + vdev_t *vd; + + ASSERT(!BP_IS_HOLE(bp)); + ASSERT(!BP_IS_EMBEDDED(bp)); + ASSERT(psize > 0); + + spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER); + + for (d = 0; d < ndvas; d++) { + if ((vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[d]))) == NULL) + continue; + atomic_add_64(&vd->vdev_pending_fastwrite, psize); + } + + spa_config_exit(spa, SCL_VDEV, FTAG); +} + +void +metaslab_fastwrite_unmark(spa_t *spa, const blkptr_t *bp) +{ + const dva_t *dva = bp->blk_dva; + int ndvas = BP_GET_NDVAS(bp); + uint64_t psize = BP_GET_PSIZE(bp); + int d; + vdev_t *vd; + + ASSERT(!BP_IS_HOLE(bp)); + ASSERT(!BP_IS_EMBEDDED(bp)); + ASSERT(psize > 0); + + spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER); + + for (d = 0; d < ndvas; d++) { + if ((vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[d]))) == NULL) + continue; + ASSERT3U(vd->vdev_pending_fastwrite, >=, psize); + atomic_sub_64(&vd->vdev_pending_fastwrite, psize); + } + + spa_config_exit(spa, SCL_VDEV, FTAG); +} + +void +metaslab_check_free(spa_t *spa, const blkptr_t *bp) +{ + int i, j; + + if ((zfs_flags & ZFS_DEBUG_ZIO_FREE) == 0) + return; + + spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER); + for (i = 0; i < BP_GET_NDVAS(bp); i++) { + uint64_t vdev = DVA_GET_VDEV(&bp->blk_dva[i]); + vdev_t *vd = vdev_lookup_top(spa, vdev); + uint64_t offset = DVA_GET_OFFSET(&bp->blk_dva[i]); + uint64_t size = DVA_GET_ASIZE(&bp->blk_dva[i]); + metaslab_t *msp = vd->vdev_ms[offset >> vd->vdev_ms_shift]; + + if (msp->ms_loaded) + range_tree_verify(msp->ms_tree, offset, size); + + for (j = 0; j < TXG_SIZE; j++) + range_tree_verify(msp->ms_freetree[j], offset, size); + for (j = 0; j < TXG_DEFER_SIZE; j++) + range_tree_verify(msp->ms_defertree[j], offset, size); + } + spa_config_exit(spa, SCL_VDEV, FTAG); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(metaslab_aliquot, ulong, 0644); +module_param(metaslab_debug_load, int, 0644); +module_param(metaslab_debug_unload, int, 0644); +module_param(metaslab_preload_enabled, int, 0644); +module_param(zfs_mg_noalloc_threshold, int, 0644); +module_param(zfs_mg_fragmentation_threshold, int, 0644); +module_param(zfs_metaslab_fragmentation_threshold, int, 0644); +module_param(metaslab_fragmentation_factor_enabled, int, 0644); +module_param(metaslab_lba_weighting_enabled, int, 0644); +module_param(metaslab_bias_enabled, int, 0644); + +MODULE_PARM_DESC(metaslab_aliquot, + "allocation granularity (a.k.a. stripe size)"); +MODULE_PARM_DESC(metaslab_debug_load, + "load all metaslabs when pool is first opened"); +MODULE_PARM_DESC(metaslab_debug_unload, + "prevent metaslabs from being unloaded"); +MODULE_PARM_DESC(metaslab_preload_enabled, + "preload potential metaslabs during reassessment"); + +MODULE_PARM_DESC(zfs_mg_noalloc_threshold, + "percentage of free space for metaslab group to allow allocation"); +MODULE_PARM_DESC(zfs_mg_fragmentation_threshold, + "fragmentation for metaslab group to allow allocation"); + +MODULE_PARM_DESC(zfs_metaslab_fragmentation_threshold, + "fragmentation for metaslab to allow allocation"); +MODULE_PARM_DESC(metaslab_fragmentation_factor_enabled, + "use the fragmentation metric to prefer less fragmented metaslabs"); +MODULE_PARM_DESC(metaslab_lba_weighting_enabled, + "prefer metaslabs with lower LBAs"); +MODULE_PARM_DESC(metaslab_bias_enabled, + "enable metaslab group biasing"); +#endif /* _KERNEL && HAVE_SPL */ --- linux-4.4.0.orig/zfs/module/zfs/multilist.c +++ linux-4.4.0/zfs/module/zfs/multilist.c @@ -0,0 +1,375 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include + +/* needed for spa_get_random() */ +#include + +/* + * Given the object contained on the list, return a pointer to the + * object's multilist_node_t structure it contains. + */ +#ifdef DEBUG +static multilist_node_t * +multilist_d2l(multilist_t *ml, void *obj) +{ + return ((multilist_node_t *)((char *)obj + ml->ml_offset)); +} +#endif + +/* + * Initialize a new mutlilist using the parameters specified. + * + * - 'size' denotes the size of the structure containing the + * multilist_node_t. + * - 'offset' denotes the byte offset of the mutlilist_node_t within + * the structure that contains it. + * - 'num' specifies the number of internal sublists to create. + * - 'index_func' is used to determine which sublist to insert into + * when the multilist_insert() function is called; as well as which + * sublist to remove from when multilist_remove() is called. The + * requirements this function must meet, are the following: + * + * - It must always return the same value when called on the same + * object (to ensure the object is removed from the list it was + * inserted into). + * + * - It must return a value in the range [0, number of sublists). + * The multilist_get_num_sublists() function may be used to + * determine the number of sublists in the multilist. + * + * Also, in order to reduce internal contention between the sublists + * during insertion and removal, this function should choose evenly + * between all available sublists when inserting. This isn't a hard + * requirement, but a general rule of thumb in order to garner the + * best multi-threaded performance out of the data structure. + */ +void +multilist_create(multilist_t *ml, size_t size, size_t offset, unsigned int num, + multilist_sublist_index_func_t *index_func) +{ + int i; + + ASSERT3P(ml, !=, NULL); + ASSERT3U(size, >, 0); + ASSERT3U(size, >=, offset + sizeof (multilist_node_t)); + ASSERT3U(num, >, 0); + ASSERT3P(index_func, !=, NULL); + + ml->ml_offset = offset; + ml->ml_num_sublists = num; + ml->ml_index_func = index_func; + + ml->ml_sublists = kmem_zalloc(sizeof (multilist_sublist_t) * + ml->ml_num_sublists, KM_SLEEP); + + ASSERT3P(ml->ml_sublists, !=, NULL); + + for (i = 0; i < ml->ml_num_sublists; i++) { + multilist_sublist_t *mls = &ml->ml_sublists[i]; + mutex_init(&mls->mls_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&mls->mls_list, size, offset); + } +} + +/* + * Destroy the given multilist object, and free up any memory it holds. + */ +void +multilist_destroy(multilist_t *ml) +{ + int i; + + ASSERT(multilist_is_empty(ml)); + + for (i = 0; i < ml->ml_num_sublists; i++) { + multilist_sublist_t *mls = &ml->ml_sublists[i]; + + ASSERT(list_is_empty(&mls->mls_list)); + + list_destroy(&mls->mls_list); + mutex_destroy(&mls->mls_lock); + } + + ASSERT3P(ml->ml_sublists, !=, NULL); + kmem_free(ml->ml_sublists, + sizeof (multilist_sublist_t) * ml->ml_num_sublists); + + ml->ml_num_sublists = 0; + ml->ml_offset = 0; +} + +/* + * Insert the given object into the multilist. + * + * This function will insert the object specified into the sublist + * determined using the function given at multilist creation time. + * + * The sublist locks are automatically acquired if not already held, to + * ensure consistency when inserting and removing from multiple threads. + */ +void +multilist_insert(multilist_t *ml, void *obj) +{ + unsigned int sublist_idx = ml->ml_index_func(ml, obj); + multilist_sublist_t *mls; + boolean_t need_lock; + + DTRACE_PROBE3(multilist__insert, multilist_t *, ml, + unsigned int, sublist_idx, void *, obj); + + ASSERT3U(sublist_idx, <, ml->ml_num_sublists); + + mls = &ml->ml_sublists[sublist_idx]; + + /* + * Note: Callers may already hold the sublist lock by calling + * multilist_sublist_lock(). Here we rely on MUTEX_HELD() + * returning TRUE if and only if the current thread holds the + * lock. While it's a little ugly to make the lock recursive in + * this way, it works and allows the calling code to be much + * simpler -- otherwise it would have to pass around a flag + * indicating that it already has the lock. + */ + need_lock = !MUTEX_HELD(&mls->mls_lock); + + if (need_lock) + mutex_enter(&mls->mls_lock); + + ASSERT(!multilist_link_active(multilist_d2l(ml, obj))); + + multilist_sublist_insert_head(mls, obj); + + if (need_lock) + mutex_exit(&mls->mls_lock); +} + +/* + * Remove the given object from the multilist. + * + * This function will remove the object specified from the sublist + * determined using the function given at multilist creation time. + * + * The necessary sublist locks are automatically acquired, to ensure + * consistency when inserting and removing from multiple threads. + */ +void +multilist_remove(multilist_t *ml, void *obj) +{ + unsigned int sublist_idx = ml->ml_index_func(ml, obj); + multilist_sublist_t *mls; + boolean_t need_lock; + + DTRACE_PROBE3(multilist__remove, multilist_t *, ml, + unsigned int, sublist_idx, void *, obj); + + ASSERT3U(sublist_idx, <, ml->ml_num_sublists); + + mls = &ml->ml_sublists[sublist_idx]; + /* See comment in multilist_insert(). */ + need_lock = !MUTEX_HELD(&mls->mls_lock); + + if (need_lock) + mutex_enter(&mls->mls_lock); + + ASSERT(multilist_link_active(multilist_d2l(ml, obj))); + + multilist_sublist_remove(mls, obj); + + if (need_lock) + mutex_exit(&mls->mls_lock); +} + +/* + * Check to see if this multilist object is empty. + * + * This will return TRUE if it finds all of the sublists of this + * multilist to be empty, and FALSE otherwise. Each sublist lock will be + * automatically acquired as necessary. + * + * If concurrent insertions and removals are occurring, the semantics + * of this function become a little fuzzy. Instead of locking all + * sublists for the entire call time of the function, each sublist is + * only locked as it is individually checked for emptiness. Thus, it's + * possible for this function to return TRUE with non-empty sublists at + * the time the function returns. This would be due to another thread + * inserting into a given sublist, after that specific sublist was check + * and deemed empty, but before all sublists have been checked. + */ +int +multilist_is_empty(multilist_t *ml) +{ + int i; + + for (i = 0; i < ml->ml_num_sublists; i++) { + multilist_sublist_t *mls = &ml->ml_sublists[i]; + /* See comment in multilist_insert(). */ + boolean_t need_lock = !MUTEX_HELD(&mls->mls_lock); + + if (need_lock) + mutex_enter(&mls->mls_lock); + + if (!list_is_empty(&mls->mls_list)) { + if (need_lock) + mutex_exit(&mls->mls_lock); + + return (FALSE); + } + + if (need_lock) + mutex_exit(&mls->mls_lock); + } + + return (TRUE); +} + +/* Return the number of sublists composing this multilist */ +unsigned int +multilist_get_num_sublists(multilist_t *ml) +{ + return (ml->ml_num_sublists); +} + +/* Return a randomly selected, valid sublist index for this multilist */ +unsigned int +multilist_get_random_index(multilist_t *ml) +{ + return (spa_get_random(ml->ml_num_sublists)); +} + +/* Lock and return the sublist specified at the given index */ +multilist_sublist_t * +multilist_sublist_lock(multilist_t *ml, unsigned int sublist_idx) +{ + multilist_sublist_t *mls; + + ASSERT3U(sublist_idx, <, ml->ml_num_sublists); + mls = &ml->ml_sublists[sublist_idx]; + mutex_enter(&mls->mls_lock); + + return (mls); +} + +void +multilist_sublist_unlock(multilist_sublist_t *mls) +{ + mutex_exit(&mls->mls_lock); +} + +/* + * We're allowing any object to be inserted into this specific sublist, + * but this can lead to trouble if multilist_remove() is called to + * remove this object. Specifically, if calling ml_index_func on this + * object returns an index for sublist different than what is passed as + * a parameter here, any call to multilist_remove() with this newly + * inserted object is undefined! (the call to multilist_remove() will + * remove the object from a list that it isn't contained in) + */ +void +multilist_sublist_insert_head(multilist_sublist_t *mls, void *obj) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + list_insert_head(&mls->mls_list, obj); +} + +/* please see comment above multilist_sublist_insert_head */ +void +multilist_sublist_insert_tail(multilist_sublist_t *mls, void *obj) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + list_insert_tail(&mls->mls_list, obj); +} + +/* + * Move the object one element forward in the list. + * + * This function will move the given object forward in the list (towards + * the head) by one object. So, in essence, it will swap its position in + * the list with its "prev" pointer. If the given object is already at the + * head of the list, it cannot be moved forward any more than it already + * is, so no action is taken. + * + * NOTE: This function **must not** remove any object from the list other + * than the object given as the parameter. This is relied upon in + * arc_evict_state_impl(). + */ +void +multilist_sublist_move_forward(multilist_sublist_t *mls, void *obj) +{ + void *prev = list_prev(&mls->mls_list, obj); + + ASSERT(MUTEX_HELD(&mls->mls_lock)); + ASSERT(!list_is_empty(&mls->mls_list)); + + /* 'obj' must be at the head of the list, nothing to do */ + if (prev == NULL) + return; + + list_remove(&mls->mls_list, obj); + list_insert_before(&mls->mls_list, prev, obj); +} + +void +multilist_sublist_remove(multilist_sublist_t *mls, void *obj) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + list_remove(&mls->mls_list, obj); +} + +void * +multilist_sublist_head(multilist_sublist_t *mls) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + return (list_head(&mls->mls_list)); +} + +void * +multilist_sublist_tail(multilist_sublist_t *mls) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + return (list_tail(&mls->mls_list)); +} + +void * +multilist_sublist_next(multilist_sublist_t *mls, void *obj) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + return (list_next(&mls->mls_list, obj)); +} + +void * +multilist_sublist_prev(multilist_sublist_t *mls, void *obj) +{ + ASSERT(MUTEX_HELD(&mls->mls_lock)); + return (list_prev(&mls->mls_list, obj)); +} + +void +multilist_link_init(multilist_node_t *link) +{ + list_link_init(link); +} + +int +multilist_link_active(multilist_node_t *link) +{ + return (list_link_active(link)); +} --- linux-4.4.0.orig/zfs/module/zfs/range_tree.c +++ linux-4.4.0/zfs/module/zfs/range_tree.c @@ -0,0 +1,411 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +kmem_cache_t *range_seg_cache; + +void +range_tree_init(void) +{ + ASSERT(range_seg_cache == NULL); + range_seg_cache = kmem_cache_create("range_seg_cache", + sizeof (range_seg_t), 0, NULL, NULL, NULL, NULL, NULL, 0); +} + +void +range_tree_fini(void) +{ + kmem_cache_destroy(range_seg_cache); + range_seg_cache = NULL; +} + +void +range_tree_stat_verify(range_tree_t *rt) +{ + range_seg_t *rs; + uint64_t hist[RANGE_TREE_HISTOGRAM_SIZE] = { 0 }; + int i; + + for (rs = avl_first(&rt->rt_root); rs != NULL; + rs = AVL_NEXT(&rt->rt_root, rs)) { + uint64_t size = rs->rs_end - rs->rs_start; + int idx = highbit64(size) - 1; + + hist[idx]++; + ASSERT3U(hist[idx], !=, 0); + } + + for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i++) { + if (hist[i] != rt->rt_histogram[i]) { + zfs_dbgmsg("i=%d, hist=%p, hist=%llu, rt_hist=%llu", + i, hist, hist[i], rt->rt_histogram[i]); + } + VERIFY3U(hist[i], ==, rt->rt_histogram[i]); + } +} + +static void +range_tree_stat_incr(range_tree_t *rt, range_seg_t *rs) +{ + uint64_t size = rs->rs_end - rs->rs_start; + int idx = highbit64(size) - 1; + + ASSERT(size != 0); + ASSERT3U(idx, <, + sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram)); + + ASSERT(MUTEX_HELD(rt->rt_lock)); + rt->rt_histogram[idx]++; + ASSERT3U(rt->rt_histogram[idx], !=, 0); +} + +static void +range_tree_stat_decr(range_tree_t *rt, range_seg_t *rs) +{ + uint64_t size = rs->rs_end - rs->rs_start; + int idx = highbit64(size) - 1; + + ASSERT(size != 0); + ASSERT3U(idx, <, + sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram)); + + ASSERT(MUTEX_HELD(rt->rt_lock)); + ASSERT3U(rt->rt_histogram[idx], !=, 0); + rt->rt_histogram[idx]--; +} + +/* + * NOTE: caller is responsible for all locking. + */ +static int +range_tree_seg_compare(const void *x1, const void *x2) +{ + const range_seg_t *r1 = x1; + const range_seg_t *r2 = x2; + + if (r1->rs_start < r2->rs_start) { + if (r1->rs_end > r2->rs_start) + return (0); + return (-1); + } + if (r1->rs_start > r2->rs_start) { + if (r1->rs_start < r2->rs_end) + return (0); + return (1); + } + return (0); +} + +range_tree_t * +range_tree_create(range_tree_ops_t *ops, void *arg, kmutex_t *lp) +{ + range_tree_t *rt; + + rt = kmem_zalloc(sizeof (range_tree_t), KM_SLEEP); + + avl_create(&rt->rt_root, range_tree_seg_compare, + sizeof (range_seg_t), offsetof(range_seg_t, rs_node)); + + rt->rt_lock = lp; + rt->rt_ops = ops; + rt->rt_arg = arg; + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_create(rt, rt->rt_arg); + + return (rt); +} + +void +range_tree_destroy(range_tree_t *rt) +{ + VERIFY0(rt->rt_space); + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_destroy(rt, rt->rt_arg); + + avl_destroy(&rt->rt_root); + kmem_free(rt, sizeof (*rt)); +} + +void +range_tree_add(void *arg, uint64_t start, uint64_t size) +{ + range_tree_t *rt = arg; + avl_index_t where; + range_seg_t rsearch, *rs_before, *rs_after, *rs; + uint64_t end = start + size; + boolean_t merge_before, merge_after; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + VERIFY(size != 0); + + rsearch.rs_start = start; + rsearch.rs_end = end; + rs = avl_find(&rt->rt_root, &rsearch, &where); + + if (rs != NULL && rs->rs_start <= start && rs->rs_end >= end) { + zfs_panic_recover("zfs: allocating allocated segment" + "(offset=%llu size=%llu)\n", + (longlong_t)start, (longlong_t)size); + return; + } + + /* Make sure we don't overlap with either of our neighbors */ + VERIFY(rs == NULL); + + rs_before = avl_nearest(&rt->rt_root, where, AVL_BEFORE); + rs_after = avl_nearest(&rt->rt_root, where, AVL_AFTER); + + merge_before = (rs_before != NULL && rs_before->rs_end == start); + merge_after = (rs_after != NULL && rs_after->rs_start == end); + + if (merge_before && merge_after) { + avl_remove(&rt->rt_root, rs_before); + if (rt->rt_ops != NULL) { + rt->rt_ops->rtop_remove(rt, rs_before, rt->rt_arg); + rt->rt_ops->rtop_remove(rt, rs_after, rt->rt_arg); + } + + range_tree_stat_decr(rt, rs_before); + range_tree_stat_decr(rt, rs_after); + + rs_after->rs_start = rs_before->rs_start; + kmem_cache_free(range_seg_cache, rs_before); + rs = rs_after; + } else if (merge_before) { + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_remove(rt, rs_before, rt->rt_arg); + + range_tree_stat_decr(rt, rs_before); + + rs_before->rs_end = end; + rs = rs_before; + } else if (merge_after) { + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_remove(rt, rs_after, rt->rt_arg); + + range_tree_stat_decr(rt, rs_after); + + rs_after->rs_start = start; + rs = rs_after; + } else { + rs = kmem_cache_alloc(range_seg_cache, KM_SLEEP); + rs->rs_start = start; + rs->rs_end = end; + avl_insert(&rt->rt_root, rs, where); + } + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); + + range_tree_stat_incr(rt, rs); + rt->rt_space += size; +} + +void +range_tree_remove(void *arg, uint64_t start, uint64_t size) +{ + range_tree_t *rt = arg; + avl_index_t where; + range_seg_t rsearch, *rs, *newseg; + uint64_t end = start + size; + boolean_t left_over, right_over; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + VERIFY3U(size, !=, 0); + VERIFY3U(size, <=, rt->rt_space); + + rsearch.rs_start = start; + rsearch.rs_end = end; + rs = avl_find(&rt->rt_root, &rsearch, &where); + + /* Make sure we completely overlap with someone */ + if (rs == NULL) { + zfs_panic_recover("zfs: freeing free segment " + "(offset=%llu size=%llu)", + (longlong_t)start, (longlong_t)size); + return; + } + VERIFY3U(rs->rs_start, <=, start); + VERIFY3U(rs->rs_end, >=, end); + + left_over = (rs->rs_start != start); + right_over = (rs->rs_end != end); + + range_tree_stat_decr(rt, rs); + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_remove(rt, rs, rt->rt_arg); + + if (left_over && right_over) { + newseg = kmem_cache_alloc(range_seg_cache, KM_SLEEP); + newseg->rs_start = end; + newseg->rs_end = rs->rs_end; + range_tree_stat_incr(rt, newseg); + + rs->rs_end = start; + + avl_insert_here(&rt->rt_root, newseg, rs, AVL_AFTER); + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_add(rt, newseg, rt->rt_arg); + } else if (left_over) { + rs->rs_end = start; + } else if (right_over) { + rs->rs_start = end; + } else { + avl_remove(&rt->rt_root, rs); + kmem_cache_free(range_seg_cache, rs); + rs = NULL; + } + + if (rs != NULL) { + range_tree_stat_incr(rt, rs); + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_add(rt, rs, rt->rt_arg); + } + + rt->rt_space -= size; +} + +static range_seg_t * +range_tree_find_impl(range_tree_t *rt, uint64_t start, uint64_t size) +{ + avl_index_t where; + range_seg_t rsearch; + uint64_t end = start + size; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + VERIFY(size != 0); + + rsearch.rs_start = start; + rsearch.rs_end = end; + return (avl_find(&rt->rt_root, &rsearch, &where)); +} + +static range_seg_t * +range_tree_find(range_tree_t *rt, uint64_t start, uint64_t size) +{ + range_seg_t *rs = range_tree_find_impl(rt, start, size); + if (rs != NULL && rs->rs_start <= start && rs->rs_end >= start + size) + return (rs); + return (NULL); +} + +void +range_tree_verify(range_tree_t *rt, uint64_t off, uint64_t size) +{ + range_seg_t *rs; + + mutex_enter(rt->rt_lock); + rs = range_tree_find(rt, off, size); + if (rs != NULL) + panic("freeing free block; rs=%p", (void *)rs); + mutex_exit(rt->rt_lock); +} + +boolean_t +range_tree_contains(range_tree_t *rt, uint64_t start, uint64_t size) +{ + return (range_tree_find(rt, start, size) != NULL); +} + +/* + * Ensure that this range is not in the tree, regardless of whether + * it is currently in the tree. + */ +void +range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t size) +{ + range_seg_t *rs; + + while ((rs = range_tree_find_impl(rt, start, size)) != NULL) { + uint64_t free_start = MAX(rs->rs_start, start); + uint64_t free_end = MIN(rs->rs_end, start + size); + range_tree_remove(rt, free_start, free_end - free_start); + } +} + +void +range_tree_swap(range_tree_t **rtsrc, range_tree_t **rtdst) +{ + range_tree_t *rt; + + ASSERT(MUTEX_HELD((*rtsrc)->rt_lock)); + ASSERT0(range_tree_space(*rtdst)); + ASSERT0(avl_numnodes(&(*rtdst)->rt_root)); + + rt = *rtsrc; + *rtsrc = *rtdst; + *rtdst = rt; +} + +void +range_tree_vacate(range_tree_t *rt, range_tree_func_t *func, void *arg) +{ + range_seg_t *rs; + void *cookie = NULL; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + + if (rt->rt_ops != NULL) + rt->rt_ops->rtop_vacate(rt, rt->rt_arg); + + while ((rs = avl_destroy_nodes(&rt->rt_root, &cookie)) != NULL) { + if (func != NULL) + func(arg, rs->rs_start, rs->rs_end - rs->rs_start); + kmem_cache_free(range_seg_cache, rs); + } + + bzero(rt->rt_histogram, sizeof (rt->rt_histogram)); + rt->rt_space = 0; +} + +void +range_tree_walk(range_tree_t *rt, range_tree_func_t *func, void *arg) +{ + range_seg_t *rs; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + + for (rs = avl_first(&rt->rt_root); rs; rs = AVL_NEXT(&rt->rt_root, rs)) + func(arg, rs->rs_start, rs->rs_end - rs->rs_start); +} + +uint64_t +range_tree_space(range_tree_t *rt) +{ + return (rt->rt_space); +} --- linux-4.4.0.orig/zfs/module/zfs/refcount.c +++ linux-4.4.0/zfs/module/zfs/refcount.c @@ -0,0 +1,230 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include + +#ifdef ZFS_DEBUG + +#ifdef _KERNEL +int reference_tracking_enable = FALSE; /* runs out of memory too easily */ +#else +int reference_tracking_enable = TRUE; +#endif +int reference_history = 3; /* tunable */ + +static kmem_cache_t *reference_cache; +static kmem_cache_t *reference_history_cache; + +void +refcount_init(void) +{ + reference_cache = kmem_cache_create("reference_cache", + sizeof (reference_t), 0, NULL, NULL, NULL, NULL, NULL, 0); + + reference_history_cache = kmem_cache_create("reference_history_cache", + sizeof (uint64_t), 0, NULL, NULL, NULL, NULL, NULL, 0); +} + +void +refcount_fini(void) +{ + kmem_cache_destroy(reference_cache); + kmem_cache_destroy(reference_history_cache); +} + +void +refcount_create(refcount_t *rc) +{ + mutex_init(&rc->rc_mtx, NULL, MUTEX_DEFAULT, NULL); + list_create(&rc->rc_list, sizeof (reference_t), + offsetof(reference_t, ref_link)); + list_create(&rc->rc_removed, sizeof (reference_t), + offsetof(reference_t, ref_link)); + rc->rc_count = 0; + rc->rc_removed_count = 0; + rc->rc_tracked = reference_tracking_enable; +} + +void +refcount_create_untracked(refcount_t *rc) +{ + refcount_create(rc); + rc->rc_tracked = B_FALSE; +} + +void +refcount_destroy_many(refcount_t *rc, uint64_t number) +{ + reference_t *ref; + + ASSERT(rc->rc_count == number); + while ((ref = list_head(&rc->rc_list))) { + list_remove(&rc->rc_list, ref); + kmem_cache_free(reference_cache, ref); + } + list_destroy(&rc->rc_list); + + while ((ref = list_head(&rc->rc_removed))) { + list_remove(&rc->rc_removed, ref); + kmem_cache_free(reference_history_cache, ref->ref_removed); + kmem_cache_free(reference_cache, ref); + } + list_destroy(&rc->rc_removed); + mutex_destroy(&rc->rc_mtx); +} + +void +refcount_destroy(refcount_t *rc) +{ + refcount_destroy_many(rc, 0); +} + +int +refcount_is_zero(refcount_t *rc) +{ + return (rc->rc_count == 0); +} + +int64_t +refcount_count(refcount_t *rc) +{ + return (rc->rc_count); +} + +int64_t +refcount_add_many(refcount_t *rc, uint64_t number, void *holder) +{ + reference_t *ref = NULL; + int64_t count; + + if (rc->rc_tracked) { + ref = kmem_cache_alloc(reference_cache, KM_SLEEP); + ref->ref_holder = holder; + ref->ref_number = number; + } + mutex_enter(&rc->rc_mtx); + ASSERT(rc->rc_count >= 0); + if (rc->rc_tracked) + list_insert_head(&rc->rc_list, ref); + rc->rc_count += number; + count = rc->rc_count; + mutex_exit(&rc->rc_mtx); + + return (count); +} + +int64_t +refcount_add(refcount_t *rc, void *holder) +{ + return (refcount_add_many(rc, 1, holder)); +} + +int64_t +refcount_remove_many(refcount_t *rc, uint64_t number, void *holder) +{ + reference_t *ref; + int64_t count; + + mutex_enter(&rc->rc_mtx); + ASSERT(rc->rc_count >= number); + + if (!rc->rc_tracked) { + rc->rc_count -= number; + count = rc->rc_count; + mutex_exit(&rc->rc_mtx); + return (count); + } + + for (ref = list_head(&rc->rc_list); ref; + ref = list_next(&rc->rc_list, ref)) { + if (ref->ref_holder == holder && ref->ref_number == number) { + list_remove(&rc->rc_list, ref); + if (reference_history > 0) { + ref->ref_removed = + kmem_cache_alloc(reference_history_cache, + KM_SLEEP); + list_insert_head(&rc->rc_removed, ref); + rc->rc_removed_count++; + if (rc->rc_removed_count > reference_history) { + ref = list_tail(&rc->rc_removed); + list_remove(&rc->rc_removed, ref); + kmem_cache_free(reference_history_cache, + ref->ref_removed); + kmem_cache_free(reference_cache, ref); + rc->rc_removed_count--; + } + } else { + kmem_cache_free(reference_cache, ref); + } + rc->rc_count -= number; + count = rc->rc_count; + mutex_exit(&rc->rc_mtx); + return (count); + } + } + panic("No such hold %p on refcount %llx", holder, + (u_longlong_t)(uintptr_t)rc); + return (-1); +} + +int64_t +refcount_remove(refcount_t *rc, void *holder) +{ + return (refcount_remove_many(rc, 1, holder)); +} + +void +refcount_transfer(refcount_t *dst, refcount_t *src) +{ + int64_t count, removed_count; + list_t list, removed; + + list_create(&list, sizeof (reference_t), + offsetof(reference_t, ref_link)); + list_create(&removed, sizeof (reference_t), + offsetof(reference_t, ref_link)); + + mutex_enter(&src->rc_mtx); + count = src->rc_count; + removed_count = src->rc_removed_count; + src->rc_count = 0; + src->rc_removed_count = 0; + list_move_tail(&list, &src->rc_list); + list_move_tail(&removed, &src->rc_removed); + mutex_exit(&src->rc_mtx); + + mutex_enter(&dst->rc_mtx); + dst->rc_count += count; + dst->rc_removed_count += removed_count; + list_move_tail(&dst->rc_list, &list); + list_move_tail(&dst->rc_removed, &removed); + mutex_exit(&dst->rc_mtx); + + list_destroy(&list); + list_destroy(&removed); +} + +#endif /* ZFS_DEBUG */ --- linux-4.4.0.orig/zfs/module/zfs/rrwlock.c +++ linux-4.4.0/zfs/module/zfs/rrwlock.c @@ -0,0 +1,395 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include + +/* + * This file contains the implementation of a re-entrant read + * reader/writer lock (aka "rrwlock"). + * + * This is a normal reader/writer lock with the additional feature + * of allowing threads who have already obtained a read lock to + * re-enter another read lock (re-entrant read) - even if there are + * waiting writers. + * + * Callers who have not obtained a read lock give waiting writers priority. + * + * The rrwlock_t lock does not allow re-entrant writers, nor does it + * allow a re-entrant mix of reads and writes (that is, it does not + * allow a caller who has already obtained a read lock to be able to + * then grab a write lock without first dropping all read locks, and + * vice versa). + * + * The rrwlock_t uses tsd (thread specific data) to keep a list of + * nodes (rrw_node_t), where each node keeps track of which specific + * lock (rrw_node_t::rn_rrl) the thread has grabbed. Since re-entering + * should be rare, a thread that grabs multiple reads on the same rrwlock_t + * will store multiple rrw_node_ts of the same 'rrn_rrl'. Nodes on the + * tsd list can represent a different rrwlock_t. This allows a thread + * to enter multiple and unique rrwlock_ts for read locks at the same time. + * + * Since using tsd exposes some overhead, the rrwlock_t only needs to + * keep tsd data when writers are waiting. If no writers are waiting, then + * a reader just bumps the anonymous read count (rr_anon_rcount) - no tsd + * is needed. Once a writer attempts to grab the lock, readers then + * keep tsd data and bump the linked readers count (rr_linked_rcount). + * + * If there are waiting writers and there are anonymous readers, then a + * reader doesn't know if it is a re-entrant lock. But since it may be one, + * we allow the read to proceed (otherwise it could deadlock). Since once + * waiting writers are active, readers no longer bump the anonymous count, + * the anonymous readers will eventually flush themselves out. At this point, + * readers will be able to tell if they are a re-entrant lock (have a + * rrw_node_t entry for the lock) or not. If they are a re-entrant lock, then + * we must let the proceed. If they are not, then the reader blocks for the + * waiting writers. Hence, we do not starve writers. + */ + +/* global key for TSD */ +uint_t rrw_tsd_key; + +typedef struct rrw_node { + struct rrw_node *rn_next; + rrwlock_t *rn_rrl; + void *rn_tag; +} rrw_node_t; + +static rrw_node_t * +rrn_find(rrwlock_t *rrl) +{ + rrw_node_t *rn; + + if (refcount_count(&rrl->rr_linked_rcount) == 0) + return (NULL); + + for (rn = tsd_get(rrw_tsd_key); rn != NULL; rn = rn->rn_next) { + if (rn->rn_rrl == rrl) + return (rn); + } + return (NULL); +} + +/* + * Add a node to the head of the singly linked list. + */ +static void +rrn_add(rrwlock_t *rrl, void *tag) +{ + rrw_node_t *rn; + + rn = kmem_alloc(sizeof (*rn), KM_SLEEP); + rn->rn_rrl = rrl; + rn->rn_next = tsd_get(rrw_tsd_key); + rn->rn_tag = tag; + VERIFY(tsd_set(rrw_tsd_key, rn) == 0); +} + +/* + * If a node is found for 'rrl', then remove the node from this + * thread's list and return TRUE; otherwise return FALSE. + */ +static boolean_t +rrn_find_and_remove(rrwlock_t *rrl, void *tag) +{ + rrw_node_t *rn; + rrw_node_t *prev = NULL; + + if (refcount_count(&rrl->rr_linked_rcount) == 0) + return (B_FALSE); + + for (rn = tsd_get(rrw_tsd_key); rn != NULL; rn = rn->rn_next) { + if (rn->rn_rrl == rrl && rn->rn_tag == tag) { + if (prev) + prev->rn_next = rn->rn_next; + else + VERIFY(tsd_set(rrw_tsd_key, rn->rn_next) == 0); + kmem_free(rn, sizeof (*rn)); + return (B_TRUE); + } + prev = rn; + } + return (B_FALSE); +} + +void +rrw_init(rrwlock_t *rrl, boolean_t track_all) +{ + mutex_init(&rrl->rr_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&rrl->rr_cv, NULL, CV_DEFAULT, NULL); + rrl->rr_writer = NULL; + refcount_create(&rrl->rr_anon_rcount); + refcount_create(&rrl->rr_linked_rcount); + rrl->rr_writer_wanted = B_FALSE; + rrl->rr_track_all = track_all; +} + +void +rrw_destroy(rrwlock_t *rrl) +{ + mutex_destroy(&rrl->rr_lock); + cv_destroy(&rrl->rr_cv); + ASSERT(rrl->rr_writer == NULL); + refcount_destroy(&rrl->rr_anon_rcount); + refcount_destroy(&rrl->rr_linked_rcount); +} + +static void +rrw_enter_read_impl(rrwlock_t *rrl, boolean_t prio, void *tag) +{ + mutex_enter(&rrl->rr_lock); +#if !defined(DEBUG) && defined(_KERNEL) + if (rrl->rr_writer == NULL && !rrl->rr_writer_wanted && + !rrl->rr_track_all) { + rrl->rr_anon_rcount.rc_count++; + mutex_exit(&rrl->rr_lock); + return; + } + DTRACE_PROBE(zfs__rrwfastpath__rdmiss); +#endif + ASSERT(rrl->rr_writer != curthread); + ASSERT(refcount_count(&rrl->rr_anon_rcount) >= 0); + + while (rrl->rr_writer != NULL || (rrl->rr_writer_wanted && + refcount_is_zero(&rrl->rr_anon_rcount) && !prio && + rrn_find(rrl) == NULL)) + cv_wait(&rrl->rr_cv, &rrl->rr_lock); + + if (rrl->rr_writer_wanted || rrl->rr_track_all) { + /* may or may not be a re-entrant enter */ + rrn_add(rrl, tag); + (void) refcount_add(&rrl->rr_linked_rcount, tag); + } else { + (void) refcount_add(&rrl->rr_anon_rcount, tag); + } + ASSERT(rrl->rr_writer == NULL); + mutex_exit(&rrl->rr_lock); +} + +void +rrw_enter_read(rrwlock_t *rrl, void *tag) +{ + rrw_enter_read_impl(rrl, B_FALSE, tag); +} + +/* + * take a read lock even if there are pending write lock requests. if we want + * to take a lock reentrantly, but from different threads (that have a + * relationship to each other), the normal detection mechanism to overrule + * the pending writer does not work, so we have to give an explicit hint here. + */ +void +rrw_enter_read_prio(rrwlock_t *rrl, void *tag) +{ + rrw_enter_read_impl(rrl, B_TRUE, tag); +} + + +void +rrw_enter_write(rrwlock_t *rrl) +{ + mutex_enter(&rrl->rr_lock); + ASSERT(rrl->rr_writer != curthread); + + while (refcount_count(&rrl->rr_anon_rcount) > 0 || + refcount_count(&rrl->rr_linked_rcount) > 0 || + rrl->rr_writer != NULL) { + rrl->rr_writer_wanted = B_TRUE; + cv_wait(&rrl->rr_cv, &rrl->rr_lock); + } + rrl->rr_writer_wanted = B_FALSE; + rrl->rr_writer = curthread; + mutex_exit(&rrl->rr_lock); +} + +void +rrw_enter(rrwlock_t *rrl, krw_t rw, void *tag) +{ + if (rw == RW_READER) + rrw_enter_read(rrl, tag); + else + rrw_enter_write(rrl); +} + +void +rrw_exit(rrwlock_t *rrl, void *tag) +{ + mutex_enter(&rrl->rr_lock); +#if !defined(DEBUG) && defined(_KERNEL) + if (!rrl->rr_writer && rrl->rr_linked_rcount.rc_count == 0) { + rrl->rr_anon_rcount.rc_count--; + if (rrl->rr_anon_rcount.rc_count == 0) + cv_broadcast(&rrl->rr_cv); + mutex_exit(&rrl->rr_lock); + return; + } + DTRACE_PROBE(zfs__rrwfastpath__exitmiss); +#endif + ASSERT(!refcount_is_zero(&rrl->rr_anon_rcount) || + !refcount_is_zero(&rrl->rr_linked_rcount) || + rrl->rr_writer != NULL); + + if (rrl->rr_writer == NULL) { + int64_t count; + if (rrn_find_and_remove(rrl, tag)) { + count = refcount_remove(&rrl->rr_linked_rcount, tag); + } else { + ASSERT(!rrl->rr_track_all); + count = refcount_remove(&rrl->rr_anon_rcount, tag); + } + if (count == 0) + cv_broadcast(&rrl->rr_cv); + } else { + ASSERT(rrl->rr_writer == curthread); + ASSERT(refcount_is_zero(&rrl->rr_anon_rcount) && + refcount_is_zero(&rrl->rr_linked_rcount)); + rrl->rr_writer = NULL; + cv_broadcast(&rrl->rr_cv); + } + mutex_exit(&rrl->rr_lock); +} + +/* + * If the lock was created with track_all, rrw_held(RW_READER) will return + * B_TRUE iff the current thread has the lock for reader. Otherwise it may + * return B_TRUE if any thread has the lock for reader. + */ +boolean_t +rrw_held(rrwlock_t *rrl, krw_t rw) +{ + boolean_t held; + + mutex_enter(&rrl->rr_lock); + if (rw == RW_WRITER) { + held = (rrl->rr_writer == curthread); + } else { + held = (!refcount_is_zero(&rrl->rr_anon_rcount) || + rrn_find(rrl) != NULL); + } + mutex_exit(&rrl->rr_lock); + + return (held); +} + +void +rrw_tsd_destroy(void *arg) +{ + rrw_node_t *rn = arg; + if (rn != NULL) { + panic("thread %p terminating with rrw lock %p held", + (void *)curthread, (void *)rn->rn_rrl); + } +} + +/* + * A reader-mostly lock implementation, tuning above reader-writer locks + * for hightly parallel read acquisitions, while pessimizing writes. + * + * The idea is to split single busy lock into array of locks, so that + * each reader can lock only one of them for read, depending on result + * of simple hash function. That proportionally reduces lock congestion. + * Writer same time has to sequentially aquire write on all the locks. + * That makes write aquisition proportionally slower, but in places where + * it is used (filesystem unmount) performance is not critical. + * + * All the functions below are direct wrappers around functions above. + */ +void +rrm_init(rrmlock_t *rrl, boolean_t track_all) +{ + int i; + + for (i = 0; i < RRM_NUM_LOCKS; i++) + rrw_init(&rrl->locks[i], track_all); +} + +void +rrm_destroy(rrmlock_t *rrl) +{ + int i; + + for (i = 0; i < RRM_NUM_LOCKS; i++) + rrw_destroy(&rrl->locks[i]); +} + +void +rrm_enter(rrmlock_t *rrl, krw_t rw, void *tag) +{ + if (rw == RW_READER) + rrm_enter_read(rrl, tag); + else + rrm_enter_write(rrl); +} + +/* + * This maps the current thread to a specific lock. Note that the lock + * must be released by the same thread that acquired it. We do this + * mapping by taking the thread pointer mod a prime number. We examine + * only the low 32 bits of the thread pointer, because 32-bit division + * is faster than 64-bit division, and the high 32 bits have little + * entropy anyway. + */ +#define RRM_TD_LOCK() (((uint32_t)(uintptr_t)(curthread)) % RRM_NUM_LOCKS) + +void +rrm_enter_read(rrmlock_t *rrl, void *tag) +{ + rrw_enter_read(&rrl->locks[RRM_TD_LOCK()], tag); +} + +void +rrm_enter_write(rrmlock_t *rrl) +{ + int i; + + for (i = 0; i < RRM_NUM_LOCKS; i++) + rrw_enter_write(&rrl->locks[i]); +} + +void +rrm_exit(rrmlock_t *rrl, void *tag) +{ + int i; + + if (rrl->locks[0].rr_writer == curthread) { + for (i = 0; i < RRM_NUM_LOCKS; i++) + rrw_exit(&rrl->locks[i], tag); + } else { + rrw_exit(&rrl->locks[RRM_TD_LOCK()], tag); + } +} + +boolean_t +rrm_held(rrmlock_t *rrl, krw_t rw) +{ + if (rw == RW_WRITER) { + return (rrw_held(&rrl->locks[0], rw)); + } else { + return (rrw_held(&rrl->locks[RRM_TD_LOCK()], rw)); + } +} --- linux-4.4.0.orig/zfs/module/zfs/sa.c +++ linux-4.4.0/zfs/module/zfs/sa.c @@ -0,0 +1,2065 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ZFS System attributes: + * + * A generic mechanism to allow for arbitrary attributes + * to be stored in a dnode. The data will be stored in the bonus buffer of + * the dnode and if necessary a special "spill" block will be used to handle + * overflow situations. The spill block will be sized to fit the data + * from 512 - 128K. When a spill block is used the BP (blkptr_t) for the + * spill block is stored at the end of the current bonus buffer. Any + * attributes that would be in the way of the blkptr_t will be relocated + * into the spill block. + * + * Attribute registration: + * + * Stored persistently on a per dataset basis + * a mapping between attribute "string" names and their actual attribute + * numeric values, length, and byteswap function. The names are only used + * during registration. All attributes are known by their unique attribute + * id value. If an attribute can have a variable size then the value + * 0 will be used to indicate this. + * + * Attribute Layout: + * + * Attribute layouts are a way to compactly store multiple attributes, but + * without taking the overhead associated with managing each attribute + * individually. Since you will typically have the same set of attributes + * stored in the same order a single table will be used to represent that + * layout. The ZPL for example will usually have only about 10 different + * layouts (regular files, device files, symlinks, + * regular files + scanstamp, files/dir with extended attributes, and then + * you have the possibility of all of those minus ACL, because it would + * be kicked out into the spill block) + * + * Layouts are simply an array of the attributes and their + * ordering i.e. [0, 1, 4, 5, 2] + * + * Each distinct layout is given a unique layout number and that is whats + * stored in the header at the beginning of the SA data buffer. + * + * A layout only covers a single dbuf (bonus or spill). If a set of + * attributes is split up between the bonus buffer and a spill buffer then + * two different layouts will be used. This allows us to byteswap the + * spill without looking at the bonus buffer and keeps the on disk format of + * the bonus and spill buffer the same. + * + * Adding a single attribute will cause the entire set of attributes to + * be rewritten and could result in a new layout number being constructed + * as part of the rewrite if no such layout exists for the new set of + * attribues. The new attribute will be appended to the end of the already + * existing attributes. + * + * Both the attribute registration and attribute layout information are + * stored in normal ZAP attributes. Their should be a small number of + * known layouts and the set of attributes is assumed to typically be quite + * small. + * + * The registered attributes and layout "table" information is maintained + * in core and a special "sa_os_t" is attached to the objset_t. + * + * A special interface is provided to allow for quickly applying + * a large set of attributes at once. sa_replace_all_by_template() is + * used to set an array of attributes. This is used by the ZPL when + * creating a brand new file. The template that is passed into the function + * specifies the attribute, size for variable length attributes, location of + * data and special "data locator" function if the data isn't in a contiguous + * location. + * + * Byteswap implications: + * + * Since the SA attributes are not entirely self describing we can't do + * the normal byteswap processing. The special ZAP layout attribute and + * attribute registration attributes define the byteswap function and the + * size of the attributes, unless it is variable sized. + * The normal ZFS byteswapping infrastructure assumes you don't need + * to read any objects in order to do the necessary byteswapping. Whereas + * SA attributes can only be properly byteswapped if the dataset is opened + * and the layout/attribute ZAP attributes are available. Because of this + * the SA attributes will be byteswapped when they are first accessed by + * the SA code that will read the SA data. + */ + +typedef void (sa_iterfunc_t)(void *hdr, void *addr, sa_attr_type_t, + uint16_t length, int length_idx, boolean_t, void *userp); + +static int sa_build_index(sa_handle_t *hdl, sa_buf_type_t buftype); +static void sa_idx_tab_hold(objset_t *os, sa_idx_tab_t *idx_tab); +static void *sa_find_idx_tab(objset_t *os, dmu_object_type_t bonustype, + void *data); +static void sa_idx_tab_rele(objset_t *os, void *arg); +static void sa_copy_data(sa_data_locator_t *func, void *start, void *target, + int buflen); +static int sa_modify_attrs(sa_handle_t *hdl, sa_attr_type_t newattr, + sa_data_op_t action, sa_data_locator_t *locator, void *datastart, + uint16_t buflen, dmu_tx_t *tx); + +arc_byteswap_func_t sa_bswap_table[] = { + byteswap_uint64_array, + byteswap_uint32_array, + byteswap_uint16_array, + byteswap_uint8_array, + zfs_acl_byteswap, +}; + +#define SA_COPY_DATA(f, s, t, l) \ + { \ + if (f == NULL) { \ + if (l == 8) { \ + *(uint64_t *)t = *(uint64_t *)s; \ + } else if (l == 16) { \ + *(uint64_t *)t = *(uint64_t *)s; \ + *(uint64_t *)((uintptr_t)t + 8) = \ + *(uint64_t *)((uintptr_t)s + 8); \ + } else { \ + bcopy(s, t, l); \ + } \ + } else \ + sa_copy_data(f, s, t, l); \ + } + +/* + * This table is fixed and cannot be changed. Its purpose is to + * allow the SA code to work with both old/new ZPL file systems. + * It contains the list of legacy attributes. These attributes aren't + * stored in the "attribute" registry zap objects, since older ZPL file systems + * won't have the registry. Only objsets of type ZFS_TYPE_FILESYSTEM will + * use this static table. + */ +sa_attr_reg_t sa_legacy_attrs[] = { + {"ZPL_ATIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 0}, + {"ZPL_MTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 1}, + {"ZPL_CTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 2}, + {"ZPL_CRTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 3}, + {"ZPL_GEN", sizeof (uint64_t), SA_UINT64_ARRAY, 4}, + {"ZPL_MODE", sizeof (uint64_t), SA_UINT64_ARRAY, 5}, + {"ZPL_SIZE", sizeof (uint64_t), SA_UINT64_ARRAY, 6}, + {"ZPL_PARENT", sizeof (uint64_t), SA_UINT64_ARRAY, 7}, + {"ZPL_LINKS", sizeof (uint64_t), SA_UINT64_ARRAY, 8}, + {"ZPL_XATTR", sizeof (uint64_t), SA_UINT64_ARRAY, 9}, + {"ZPL_RDEV", sizeof (uint64_t), SA_UINT64_ARRAY, 10}, + {"ZPL_FLAGS", sizeof (uint64_t), SA_UINT64_ARRAY, 11}, + {"ZPL_UID", sizeof (uint64_t), SA_UINT64_ARRAY, 12}, + {"ZPL_GID", sizeof (uint64_t), SA_UINT64_ARRAY, 13}, + {"ZPL_PAD", sizeof (uint64_t) * 4, SA_UINT64_ARRAY, 14}, + {"ZPL_ZNODE_ACL", 88, SA_UINT8_ARRAY, 15}, +}; + +/* + * This is only used for objects of type DMU_OT_ZNODE + */ +sa_attr_type_t sa_legacy_zpl_layout[] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +}; + +/* + * Special dummy layout used for buffers with no attributes. + */ +sa_attr_type_t sa_dummy_zpl_layout[] = { 0 }; + +static int sa_legacy_attr_count = 16; +static kmem_cache_t *sa_cache = NULL; + +/*ARGSUSED*/ +static int +sa_cache_constructor(void *buf, void *unused, int kmflag) +{ + sa_handle_t *hdl = buf; + + mutex_init(&hdl->sa_lock, NULL, MUTEX_DEFAULT, NULL); + return (0); +} + +/*ARGSUSED*/ +static void +sa_cache_destructor(void *buf, void *unused) +{ + sa_handle_t *hdl = buf; + mutex_destroy(&hdl->sa_lock); +} + +void +sa_cache_init(void) +{ + sa_cache = kmem_cache_create("sa_cache", + sizeof (sa_handle_t), 0, sa_cache_constructor, + sa_cache_destructor, NULL, NULL, NULL, 0); +} + +void +sa_cache_fini(void) +{ + if (sa_cache) + kmem_cache_destroy(sa_cache); +} + +static int +layout_num_compare(const void *arg1, const void *arg2) +{ + const sa_lot_t *node1 = arg1; + const sa_lot_t *node2 = arg2; + + if (node1->lot_num > node2->lot_num) + return (1); + else if (node1->lot_num < node2->lot_num) + return (-1); + return (0); +} + +static int +layout_hash_compare(const void *arg1, const void *arg2) +{ + const sa_lot_t *node1 = arg1; + const sa_lot_t *node2 = arg2; + + if (node1->lot_hash > node2->lot_hash) + return (1); + if (node1->lot_hash < node2->lot_hash) + return (-1); + if (node1->lot_instance > node2->lot_instance) + return (1); + if (node1->lot_instance < node2->lot_instance) + return (-1); + return (0); +} + +boolean_t +sa_layout_equal(sa_lot_t *tbf, sa_attr_type_t *attrs, int count) +{ + int i; + + if (count != tbf->lot_attr_count) + return (1); + + for (i = 0; i != count; i++) { + if (attrs[i] != tbf->lot_attrs[i]) + return (1); + } + return (0); +} + +#define SA_ATTR_HASH(attr) (zfs_crc64_table[(-1ULL ^ attr) & 0xFF]) + +static uint64_t +sa_layout_info_hash(sa_attr_type_t *attrs, int attr_count) +{ + int i; + uint64_t crc = -1ULL; + + for (i = 0; i != attr_count; i++) + crc ^= SA_ATTR_HASH(attrs[i]); + + return (crc); +} + +static int +sa_get_spill(sa_handle_t *hdl) +{ + int rc; + if (hdl->sa_spill == NULL) { + if ((rc = dmu_spill_hold_existing(hdl->sa_bonus, NULL, + &hdl->sa_spill)) == 0) + VERIFY(0 == sa_build_index(hdl, SA_SPILL)); + } else { + rc = 0; + } + + return (rc); +} + +/* + * Main attribute lookup/update function + * returns 0 for success or non zero for failures + * + * Operates on bulk array, first failure will abort further processing + */ +int +sa_attr_op(sa_handle_t *hdl, sa_bulk_attr_t *bulk, int count, + sa_data_op_t data_op, dmu_tx_t *tx) +{ + sa_os_t *sa = hdl->sa_os->os_sa; + int i; + int error = 0; + sa_buf_type_t buftypes; + + buftypes = 0; + + ASSERT(count > 0); + for (i = 0; i != count; i++) { + ASSERT(bulk[i].sa_attr <= hdl->sa_os->os_sa->sa_num_attrs); + + bulk[i].sa_addr = NULL; + /* First check the bonus buffer */ + + if (hdl->sa_bonus_tab && TOC_ATTR_PRESENT( + hdl->sa_bonus_tab->sa_idx_tab[bulk[i].sa_attr])) { + SA_ATTR_INFO(sa, hdl->sa_bonus_tab, + SA_GET_HDR(hdl, SA_BONUS), + bulk[i].sa_attr, bulk[i], SA_BONUS, hdl); + if (tx && !(buftypes & SA_BONUS)) { + dmu_buf_will_dirty(hdl->sa_bonus, tx); + buftypes |= SA_BONUS; + } + } + if (bulk[i].sa_addr == NULL && + ((error = sa_get_spill(hdl)) == 0)) { + if (TOC_ATTR_PRESENT( + hdl->sa_spill_tab->sa_idx_tab[bulk[i].sa_attr])) { + SA_ATTR_INFO(sa, hdl->sa_spill_tab, + SA_GET_HDR(hdl, SA_SPILL), + bulk[i].sa_attr, bulk[i], SA_SPILL, hdl); + if (tx && !(buftypes & SA_SPILL) && + bulk[i].sa_size == bulk[i].sa_length) { + dmu_buf_will_dirty(hdl->sa_spill, tx); + buftypes |= SA_SPILL; + } + } + } + if (error && error != ENOENT) { + return ((error == ECKSUM) ? EIO : error); + } + + switch (data_op) { + case SA_LOOKUP: + if (bulk[i].sa_addr == NULL) + return (SET_ERROR(ENOENT)); + if (bulk[i].sa_data) { + SA_COPY_DATA(bulk[i].sa_data_func, + bulk[i].sa_addr, bulk[i].sa_data, + bulk[i].sa_size); + } + continue; + + case SA_UPDATE: + /* existing rewrite of attr */ + if (bulk[i].sa_addr && + bulk[i].sa_size == bulk[i].sa_length) { + SA_COPY_DATA(bulk[i].sa_data_func, + bulk[i].sa_data, bulk[i].sa_addr, + bulk[i].sa_length); + continue; + } else if (bulk[i].sa_addr) { /* attr size change */ + error = sa_modify_attrs(hdl, bulk[i].sa_attr, + SA_REPLACE, bulk[i].sa_data_func, + bulk[i].sa_data, bulk[i].sa_length, tx); + } else { /* adding new attribute */ + error = sa_modify_attrs(hdl, bulk[i].sa_attr, + SA_ADD, bulk[i].sa_data_func, + bulk[i].sa_data, bulk[i].sa_length, tx); + } + if (error) + return (error); + break; + default: + break; + } + } + return (error); +} + +static sa_lot_t * +sa_add_layout_entry(objset_t *os, sa_attr_type_t *attrs, int attr_count, + uint64_t lot_num, uint64_t hash, boolean_t zapadd, dmu_tx_t *tx) +{ + sa_os_t *sa = os->os_sa; + sa_lot_t *tb, *findtb; + int i; + avl_index_t loc; + + ASSERT(MUTEX_HELD(&sa->sa_lock)); + tb = kmem_zalloc(sizeof (sa_lot_t), KM_SLEEP); + tb->lot_attr_count = attr_count; + tb->lot_attrs = kmem_alloc(sizeof (sa_attr_type_t) * attr_count, + KM_SLEEP); + bcopy(attrs, tb->lot_attrs, sizeof (sa_attr_type_t) * attr_count); + tb->lot_num = lot_num; + tb->lot_hash = hash; + tb->lot_instance = 0; + + if (zapadd) { + char attr_name[8]; + + if (sa->sa_layout_attr_obj == 0) { + sa->sa_layout_attr_obj = zap_create_link(os, + DMU_OT_SA_ATTR_LAYOUTS, + sa->sa_master_obj, SA_LAYOUTS, tx); + } + + (void) snprintf(attr_name, sizeof (attr_name), + "%d", (int)lot_num); + VERIFY(0 == zap_update(os, os->os_sa->sa_layout_attr_obj, + attr_name, 2, attr_count, attrs, tx)); + } + + list_create(&tb->lot_idx_tab, sizeof (sa_idx_tab_t), + offsetof(sa_idx_tab_t, sa_next)); + + for (i = 0; i != attr_count; i++) { + if (sa->sa_attr_table[tb->lot_attrs[i]].sa_length == 0) + tb->lot_var_sizes++; + } + + avl_add(&sa->sa_layout_num_tree, tb); + + /* verify we don't have a hash collision */ + if ((findtb = avl_find(&sa->sa_layout_hash_tree, tb, &loc)) != NULL) { + for (; findtb && findtb->lot_hash == hash; + findtb = AVL_NEXT(&sa->sa_layout_hash_tree, findtb)) { + if (findtb->lot_instance != tb->lot_instance) + break; + tb->lot_instance++; + } + } + avl_add(&sa->sa_layout_hash_tree, tb); + return (tb); +} + +static void +sa_find_layout(objset_t *os, uint64_t hash, sa_attr_type_t *attrs, + int count, dmu_tx_t *tx, sa_lot_t **lot) +{ + sa_lot_t *tb, tbsearch; + avl_index_t loc; + sa_os_t *sa = os->os_sa; + boolean_t found = B_FALSE; + + mutex_enter(&sa->sa_lock); + tbsearch.lot_hash = hash; + tbsearch.lot_instance = 0; + tb = avl_find(&sa->sa_layout_hash_tree, &tbsearch, &loc); + if (tb) { + for (; tb && tb->lot_hash == hash; + tb = AVL_NEXT(&sa->sa_layout_hash_tree, tb)) { + if (sa_layout_equal(tb, attrs, count) == 0) { + found = B_TRUE; + break; + } + } + } + if (!found) { + tb = sa_add_layout_entry(os, attrs, count, + avl_numnodes(&sa->sa_layout_num_tree), hash, B_TRUE, tx); + } + mutex_exit(&sa->sa_lock); + *lot = tb; +} + +static int +sa_resize_spill(sa_handle_t *hdl, uint32_t size, dmu_tx_t *tx) +{ + int error; + uint32_t blocksize; + + if (size == 0) { + blocksize = SPA_MINBLOCKSIZE; + } else if (size > SPA_OLD_MAXBLOCKSIZE) { + ASSERT(0); + return (SET_ERROR(EFBIG)); + } else { + blocksize = P2ROUNDUP_TYPED(size, SPA_MINBLOCKSIZE, uint32_t); + } + + error = dbuf_spill_set_blksz(hdl->sa_spill, blocksize, tx); + ASSERT(error == 0); + return (error); +} + +static void +sa_copy_data(sa_data_locator_t *func, void *datastart, void *target, int buflen) +{ + if (func == NULL) { + bcopy(datastart, target, buflen); + } else { + boolean_t start; + int bytes; + void *dataptr; + void *saptr = target; + uint32_t length; + + start = B_TRUE; + bytes = 0; + while (bytes < buflen) { + func(&dataptr, &length, buflen, start, datastart); + bcopy(dataptr, saptr, length); + saptr = (void *)((caddr_t)saptr + length); + bytes += length; + start = B_FALSE; + } + } +} + +/* + * Determine several different values pertaining to system attribute + * buffers. + * + * Return the size of the sa_hdr_phys_t header for the buffer. Each + * variable length attribute except the first contributes two bytes to + * the header size, which is then rounded up to an 8-byte boundary. + * + * The following output parameters are also computed. + * + * index - The index of the first attribute in attr_desc that will + * spill over. Only valid if will_spill is set. + * + * total - The total number of bytes of all system attributes described + * in attr_desc. + * + * will_spill - Set when spilling is necessary. It is only set when + * the buftype is SA_BONUS. + */ +static int +sa_find_sizes(sa_os_t *sa, sa_bulk_attr_t *attr_desc, int attr_count, + dmu_buf_t *db, sa_buf_type_t buftype, int *index, int *total, + boolean_t *will_spill) +{ + int var_size_count = 0; + int i; + int full_space; + int hdrsize; + int extra_hdrsize; + + if (buftype == SA_BONUS && sa->sa_force_spill) { + *total = 0; + *index = 0; + *will_spill = B_TRUE; + return (0); + } + + *index = -1; + *total = 0; + *will_spill = B_FALSE; + + extra_hdrsize = 0; + hdrsize = (SA_BONUSTYPE_FROM_DB(db) == DMU_OT_ZNODE) ? 0 : + sizeof (sa_hdr_phys_t); + + full_space = (buftype == SA_BONUS) ? DN_MAX_BONUSLEN : db->db_size; + ASSERT(IS_P2ALIGNED(full_space, 8)); + + for (i = 0; i != attr_count; i++) { + boolean_t is_var_sz, might_spill_here; + int tmp_hdrsize; + + *total = P2ROUNDUP(*total, 8); + *total += attr_desc[i].sa_length; + if (*will_spill) + continue; + + is_var_sz = (SA_REGISTERED_LEN(sa, attr_desc[i].sa_attr) == 0); + if (is_var_sz) + var_size_count++; + + /* + * Calculate what the SA header size would be if this + * attribute doesn't spill. + */ + tmp_hdrsize = hdrsize + ((is_var_sz && var_size_count > 1) ? + sizeof (uint16_t) : 0); + + /* + * Check whether this attribute spans into the space + * that would be used by the spill block pointer should + * a spill block be needed. + */ + might_spill_here = + buftype == SA_BONUS && *index == -1 && + (*total + P2ROUNDUP(tmp_hdrsize, 8)) > + (full_space - sizeof (blkptr_t)); + + if (is_var_sz && var_size_count > 1) { + if (buftype == SA_SPILL || + tmp_hdrsize + *total < full_space) { + /* + * Record the extra header size in case this + * increase needs to be reversed due to + * spill-over. + */ + hdrsize = tmp_hdrsize; + if (*index != -1 || might_spill_here) + extra_hdrsize += sizeof (uint16_t); + } else { + ASSERT(buftype == SA_BONUS); + if (*index == -1) + *index = i; + *will_spill = B_TRUE; + continue; + } + } + + /* + * Store index of where spill *could* occur. Then + * continue to count the remaining attribute sizes. The + * sum is used later for sizing bonus and spill buffer. + */ + if (might_spill_here) + *index = i; + + if ((*total + P2ROUNDUP(hdrsize, 8)) > full_space && + buftype == SA_BONUS) + *will_spill = B_TRUE; + } + + if (*will_spill) + hdrsize -= extra_hdrsize; + + hdrsize = P2ROUNDUP(hdrsize, 8); + return (hdrsize); +} + +#define BUF_SPACE_NEEDED(total, header) (total + header) + +/* + * Find layout that corresponds to ordering of attributes + * If not found a new layout number is created and added to + * persistent layout tables. + */ +static int +sa_build_layouts(sa_handle_t *hdl, sa_bulk_attr_t *attr_desc, int attr_count, + dmu_tx_t *tx) +{ + sa_os_t *sa = hdl->sa_os->os_sa; + uint64_t hash; + sa_buf_type_t buftype; + sa_hdr_phys_t *sahdr; + void *data_start; + sa_attr_type_t *attrs, *attrs_start; + int i, lot_count; + int spill_idx; + int hdrsize; + int spillhdrsize = 0; + int used; + dmu_object_type_t bonustype; + sa_lot_t *lot; + int len_idx; + int spill_used; + boolean_t spilling; + + dmu_buf_will_dirty(hdl->sa_bonus, tx); + bonustype = SA_BONUSTYPE_FROM_DB(hdl->sa_bonus); + + /* first determine bonus header size and sum of all attributes */ + hdrsize = sa_find_sizes(sa, attr_desc, attr_count, hdl->sa_bonus, + SA_BONUS, &spill_idx, &used, &spilling); + + if (used > SPA_OLD_MAXBLOCKSIZE) + return (SET_ERROR(EFBIG)); + + VERIFY(0 == dmu_set_bonus(hdl->sa_bonus, spilling ? + MIN(DN_MAX_BONUSLEN - sizeof (blkptr_t), used + hdrsize) : + used + hdrsize, tx)); + + ASSERT((bonustype == DMU_OT_ZNODE && spilling == 0) || + bonustype == DMU_OT_SA); + + /* setup and size spill buffer when needed */ + if (spilling) { + boolean_t dummy; + + if (hdl->sa_spill == NULL) { + VERIFY(dmu_spill_hold_by_bonus(hdl->sa_bonus, NULL, + &hdl->sa_spill) == 0); + } + dmu_buf_will_dirty(hdl->sa_spill, tx); + + spillhdrsize = sa_find_sizes(sa, &attr_desc[spill_idx], + attr_count - spill_idx, hdl->sa_spill, SA_SPILL, &i, + &spill_used, &dummy); + + if (spill_used > SPA_OLD_MAXBLOCKSIZE) + return (SET_ERROR(EFBIG)); + + if (BUF_SPACE_NEEDED(spill_used, spillhdrsize) > + hdl->sa_spill->db_size) + VERIFY(0 == sa_resize_spill(hdl, + BUF_SPACE_NEEDED(spill_used, spillhdrsize), tx)); + } + + /* setup starting pointers to lay down data */ + data_start = (void *)((uintptr_t)hdl->sa_bonus->db_data + hdrsize); + sahdr = (sa_hdr_phys_t *)hdl->sa_bonus->db_data; + buftype = SA_BONUS; + + attrs_start = attrs = kmem_alloc(sizeof (sa_attr_type_t) * attr_count, + KM_SLEEP); + lot_count = 0; + + for (i = 0, len_idx = 0, hash = -1ULL; i != attr_count; i++) { + uint16_t length; + + ASSERT(IS_P2ALIGNED(data_start, 8)); + attrs[i] = attr_desc[i].sa_attr; + length = SA_REGISTERED_LEN(sa, attrs[i]); + if (length == 0) + length = attr_desc[i].sa_length; + + if (spilling && i == spill_idx) { /* switch to spill buffer */ + VERIFY(bonustype == DMU_OT_SA); + if (buftype == SA_BONUS && !sa->sa_force_spill) { + sa_find_layout(hdl->sa_os, hash, attrs_start, + lot_count, tx, &lot); + SA_SET_HDR(sahdr, lot->lot_num, hdrsize); + } + + buftype = SA_SPILL; + hash = -1ULL; + len_idx = 0; + + sahdr = (sa_hdr_phys_t *)hdl->sa_spill->db_data; + sahdr->sa_magic = SA_MAGIC; + data_start = (void *)((uintptr_t)sahdr + + spillhdrsize); + attrs_start = &attrs[i]; + lot_count = 0; + } + hash ^= SA_ATTR_HASH(attrs[i]); + attr_desc[i].sa_addr = data_start; + attr_desc[i].sa_size = length; + SA_COPY_DATA(attr_desc[i].sa_data_func, attr_desc[i].sa_data, + data_start, length); + if (sa->sa_attr_table[attrs[i]].sa_length == 0) { + sahdr->sa_lengths[len_idx++] = length; + } + data_start = (void *)P2ROUNDUP(((uintptr_t)data_start + + length), 8); + lot_count++; + } + + sa_find_layout(hdl->sa_os, hash, attrs_start, lot_count, tx, &lot); + + /* + * Verify that old znodes always have layout number 0. + * Must be DMU_OT_SA for arbitrary layouts + */ + VERIFY((bonustype == DMU_OT_ZNODE && lot->lot_num == 0) || + (bonustype == DMU_OT_SA && lot->lot_num > 1)); + + if (bonustype == DMU_OT_SA) { + SA_SET_HDR(sahdr, lot->lot_num, + buftype == SA_BONUS ? hdrsize : spillhdrsize); + } + + kmem_free(attrs, sizeof (sa_attr_type_t) * attr_count); + if (hdl->sa_bonus_tab) { + sa_idx_tab_rele(hdl->sa_os, hdl->sa_bonus_tab); + hdl->sa_bonus_tab = NULL; + } + if (!sa->sa_force_spill) + VERIFY(0 == sa_build_index(hdl, SA_BONUS)); + if (hdl->sa_spill) { + sa_idx_tab_rele(hdl->sa_os, hdl->sa_spill_tab); + if (!spilling) { + /* + * remove spill block that is no longer needed. + */ + dmu_buf_rele(hdl->sa_spill, NULL); + hdl->sa_spill = NULL; + hdl->sa_spill_tab = NULL; + VERIFY(0 == dmu_rm_spill(hdl->sa_os, + sa_handle_object(hdl), tx)); + } else { + VERIFY(0 == sa_build_index(hdl, SA_SPILL)); + } + } + + return (0); +} + +static void +sa_free_attr_table(sa_os_t *sa) +{ + int i; + + if (sa->sa_attr_table == NULL) + return; + + for (i = 0; i != sa->sa_num_attrs; i++) { + if (sa->sa_attr_table[i].sa_name) + kmem_free(sa->sa_attr_table[i].sa_name, + strlen(sa->sa_attr_table[i].sa_name) + 1); + } + + kmem_free(sa->sa_attr_table, + sizeof (sa_attr_table_t) * sa->sa_num_attrs); + + sa->sa_attr_table = NULL; +} + +static int +sa_attr_table_setup(objset_t *os, sa_attr_reg_t *reg_attrs, int count) +{ + sa_os_t *sa = os->os_sa; + uint64_t sa_attr_count = 0; + uint64_t sa_reg_count = 0; + int error = 0; + uint64_t attr_value; + sa_attr_table_t *tb; + zap_cursor_t zc; + zap_attribute_t za; + int registered_count = 0; + int i; + dmu_objset_type_t ostype = dmu_objset_type(os); + + sa->sa_user_table = + kmem_zalloc(count * sizeof (sa_attr_type_t), KM_SLEEP); + sa->sa_user_table_sz = count * sizeof (sa_attr_type_t); + + if (sa->sa_reg_attr_obj != 0) { + error = zap_count(os, sa->sa_reg_attr_obj, + &sa_attr_count); + + /* + * Make sure we retrieved a count and that it isn't zero + */ + if (error || (error == 0 && sa_attr_count == 0)) { + if (error == 0) + error = SET_ERROR(EINVAL); + goto bail; + } + sa_reg_count = sa_attr_count; + } + + if (ostype == DMU_OST_ZFS && sa_attr_count == 0) + sa_attr_count += sa_legacy_attr_count; + + /* Allocate attribute numbers for attributes that aren't registered */ + for (i = 0; i != count; i++) { + boolean_t found = B_FALSE; + int j; + + if (ostype == DMU_OST_ZFS) { + for (j = 0; j != sa_legacy_attr_count; j++) { + if (strcmp(reg_attrs[i].sa_name, + sa_legacy_attrs[j].sa_name) == 0) { + sa->sa_user_table[i] = + sa_legacy_attrs[j].sa_attr; + found = B_TRUE; + } + } + } + if (found) + continue; + + if (sa->sa_reg_attr_obj) + error = zap_lookup(os, sa->sa_reg_attr_obj, + reg_attrs[i].sa_name, 8, 1, &attr_value); + else + error = SET_ERROR(ENOENT); + switch (error) { + case ENOENT: + sa->sa_user_table[i] = (sa_attr_type_t)sa_attr_count; + sa_attr_count++; + break; + case 0: + sa->sa_user_table[i] = ATTR_NUM(attr_value); + break; + default: + goto bail; + } + } + + sa->sa_num_attrs = sa_attr_count; + tb = sa->sa_attr_table = + kmem_zalloc(sizeof (sa_attr_table_t) * sa_attr_count, KM_SLEEP); + + /* + * Attribute table is constructed from requested attribute list, + * previously foreign registered attributes, and also the legacy + * ZPL set of attributes. + */ + + if (sa->sa_reg_attr_obj) { + for (zap_cursor_init(&zc, os, sa->sa_reg_attr_obj); + (error = zap_cursor_retrieve(&zc, &za)) == 0; + zap_cursor_advance(&zc)) { + uint64_t value; + value = za.za_first_integer; + + registered_count++; + tb[ATTR_NUM(value)].sa_attr = ATTR_NUM(value); + tb[ATTR_NUM(value)].sa_length = ATTR_LENGTH(value); + tb[ATTR_NUM(value)].sa_byteswap = ATTR_BSWAP(value); + tb[ATTR_NUM(value)].sa_registered = B_TRUE; + + if (tb[ATTR_NUM(value)].sa_name) { + continue; + } + tb[ATTR_NUM(value)].sa_name = + kmem_zalloc(strlen(za.za_name) +1, KM_SLEEP); + (void) strlcpy(tb[ATTR_NUM(value)].sa_name, za.za_name, + strlen(za.za_name) +1); + } + zap_cursor_fini(&zc); + /* + * Make sure we processed the correct number of registered + * attributes + */ + if (registered_count != sa_reg_count) { + ASSERT(error != 0); + goto bail; + } + + } + + if (ostype == DMU_OST_ZFS) { + for (i = 0; i != sa_legacy_attr_count; i++) { + if (tb[i].sa_name) + continue; + tb[i].sa_attr = sa_legacy_attrs[i].sa_attr; + tb[i].sa_length = sa_legacy_attrs[i].sa_length; + tb[i].sa_byteswap = sa_legacy_attrs[i].sa_byteswap; + tb[i].sa_registered = B_FALSE; + tb[i].sa_name = + kmem_zalloc(strlen(sa_legacy_attrs[i].sa_name) +1, + KM_SLEEP); + (void) strlcpy(tb[i].sa_name, + sa_legacy_attrs[i].sa_name, + strlen(sa_legacy_attrs[i].sa_name) + 1); + } + } + + for (i = 0; i != count; i++) { + sa_attr_type_t attr_id; + + attr_id = sa->sa_user_table[i]; + if (tb[attr_id].sa_name) + continue; + + tb[attr_id].sa_length = reg_attrs[i].sa_length; + tb[attr_id].sa_byteswap = reg_attrs[i].sa_byteswap; + tb[attr_id].sa_attr = attr_id; + tb[attr_id].sa_name = + kmem_zalloc(strlen(reg_attrs[i].sa_name) + 1, KM_SLEEP); + (void) strlcpy(tb[attr_id].sa_name, reg_attrs[i].sa_name, + strlen(reg_attrs[i].sa_name) + 1); + } + + sa->sa_need_attr_registration = + (sa_attr_count != registered_count); + + return (0); +bail: + kmem_free(sa->sa_user_table, count * sizeof (sa_attr_type_t)); + sa->sa_user_table = NULL; + sa_free_attr_table(sa); + return ((error != 0) ? error : EINVAL); +} + +int +sa_setup(objset_t *os, uint64_t sa_obj, sa_attr_reg_t *reg_attrs, int count, + sa_attr_type_t **user_table) +{ + zap_cursor_t zc; + zap_attribute_t za; + sa_os_t *sa; + dmu_objset_type_t ostype = dmu_objset_type(os); + sa_attr_type_t *tb; + int error; + + mutex_enter(&os->os_user_ptr_lock); + if (os->os_sa) { + mutex_enter(&os->os_sa->sa_lock); + mutex_exit(&os->os_user_ptr_lock); + tb = os->os_sa->sa_user_table; + mutex_exit(&os->os_sa->sa_lock); + *user_table = tb; + return (0); + } + + sa = kmem_zalloc(sizeof (sa_os_t), KM_SLEEP); + mutex_init(&sa->sa_lock, NULL, MUTEX_DEFAULT, NULL); + sa->sa_master_obj = sa_obj; + + os->os_sa = sa; + mutex_enter(&sa->sa_lock); + mutex_exit(&os->os_user_ptr_lock); + avl_create(&sa->sa_layout_num_tree, layout_num_compare, + sizeof (sa_lot_t), offsetof(sa_lot_t, lot_num_node)); + avl_create(&sa->sa_layout_hash_tree, layout_hash_compare, + sizeof (sa_lot_t), offsetof(sa_lot_t, lot_hash_node)); + + if (sa_obj) { + error = zap_lookup(os, sa_obj, SA_LAYOUTS, + 8, 1, &sa->sa_layout_attr_obj); + if (error != 0 && error != ENOENT) + goto fail; + error = zap_lookup(os, sa_obj, SA_REGISTRY, + 8, 1, &sa->sa_reg_attr_obj); + if (error != 0 && error != ENOENT) + goto fail; + } + + if ((error = sa_attr_table_setup(os, reg_attrs, count)) != 0) + goto fail; + + if (sa->sa_layout_attr_obj != 0) { + uint64_t layout_count; + + error = zap_count(os, sa->sa_layout_attr_obj, + &layout_count); + + /* + * Layout number count should be > 0 + */ + if (error || (error == 0 && layout_count == 0)) { + if (error == 0) + error = SET_ERROR(EINVAL); + goto fail; + } + + for (zap_cursor_init(&zc, os, sa->sa_layout_attr_obj); + (error = zap_cursor_retrieve(&zc, &za)) == 0; + zap_cursor_advance(&zc)) { + sa_attr_type_t *lot_attrs; + uint64_t lot_num; + + lot_attrs = kmem_zalloc(sizeof (sa_attr_type_t) * + za.za_num_integers, KM_SLEEP); + + if ((error = (zap_lookup(os, sa->sa_layout_attr_obj, + za.za_name, 2, za.za_num_integers, + lot_attrs))) != 0) { + kmem_free(lot_attrs, sizeof (sa_attr_type_t) * + za.za_num_integers); + break; + } + VERIFY(ddi_strtoull(za.za_name, NULL, 10, + (unsigned long long *)&lot_num) == 0); + + (void) sa_add_layout_entry(os, lot_attrs, + za.za_num_integers, lot_num, + sa_layout_info_hash(lot_attrs, + za.za_num_integers), B_FALSE, NULL); + kmem_free(lot_attrs, sizeof (sa_attr_type_t) * + za.za_num_integers); + } + zap_cursor_fini(&zc); + + /* + * Make sure layout count matches number of entries added + * to AVL tree + */ + if (avl_numnodes(&sa->sa_layout_num_tree) != layout_count) { + ASSERT(error != 0); + goto fail; + } + } + + /* Add special layout number for old ZNODES */ + if (ostype == DMU_OST_ZFS) { + (void) sa_add_layout_entry(os, sa_legacy_zpl_layout, + sa_legacy_attr_count, 0, + sa_layout_info_hash(sa_legacy_zpl_layout, + sa_legacy_attr_count), B_FALSE, NULL); + + (void) sa_add_layout_entry(os, sa_dummy_zpl_layout, 0, 1, + 0, B_FALSE, NULL); + } + *user_table = os->os_sa->sa_user_table; + mutex_exit(&sa->sa_lock); + return (0); +fail: + os->os_sa = NULL; + sa_free_attr_table(sa); + if (sa->sa_user_table) + kmem_free(sa->sa_user_table, sa->sa_user_table_sz); + mutex_exit(&sa->sa_lock); + avl_destroy(&sa->sa_layout_hash_tree); + avl_destroy(&sa->sa_layout_num_tree); + mutex_destroy(&sa->sa_lock); + kmem_free(sa, sizeof (sa_os_t)); + return ((error == ECKSUM) ? EIO : error); +} + +void +sa_tear_down(objset_t *os) +{ + sa_os_t *sa = os->os_sa; + sa_lot_t *layout; + void *cookie; + + kmem_free(sa->sa_user_table, sa->sa_user_table_sz); + + /* Free up attr table */ + + sa_free_attr_table(sa); + + cookie = NULL; + while ((layout = + avl_destroy_nodes(&sa->sa_layout_hash_tree, &cookie))) { + sa_idx_tab_t *tab; + while ((tab = list_head(&layout->lot_idx_tab))) { + ASSERT(refcount_count(&tab->sa_refcount)); + sa_idx_tab_rele(os, tab); + } + } + + cookie = NULL; + while ((layout = avl_destroy_nodes(&sa->sa_layout_num_tree, &cookie))) { + kmem_free(layout->lot_attrs, + sizeof (sa_attr_type_t) * layout->lot_attr_count); + kmem_free(layout, sizeof (sa_lot_t)); + } + + avl_destroy(&sa->sa_layout_hash_tree); + avl_destroy(&sa->sa_layout_num_tree); + mutex_destroy(&sa->sa_lock); + + kmem_free(sa, sizeof (sa_os_t)); + os->os_sa = NULL; +} + +void +sa_build_idx_tab(void *hdr, void *attr_addr, sa_attr_type_t attr, + uint16_t length, int length_idx, boolean_t var_length, void *userp) +{ + sa_idx_tab_t *idx_tab = userp; + + if (var_length) { + ASSERT(idx_tab->sa_variable_lengths); + idx_tab->sa_variable_lengths[length_idx] = length; + } + TOC_ATTR_ENCODE(idx_tab->sa_idx_tab[attr], length_idx, + (uint32_t)((uintptr_t)attr_addr - (uintptr_t)hdr)); +} + +static void +sa_attr_iter(objset_t *os, sa_hdr_phys_t *hdr, dmu_object_type_t type, + sa_iterfunc_t func, sa_lot_t *tab, void *userp) +{ + void *data_start; + sa_lot_t *tb = tab; + sa_lot_t search; + avl_index_t loc; + sa_os_t *sa = os->os_sa; + int i; + uint16_t *length_start = NULL; + uint8_t length_idx = 0; + + if (tab == NULL) { + search.lot_num = SA_LAYOUT_NUM(hdr, type); + tb = avl_find(&sa->sa_layout_num_tree, &search, &loc); + ASSERT(tb); + } + + if (IS_SA_BONUSTYPE(type)) { + data_start = (void *)P2ROUNDUP(((uintptr_t)hdr + + offsetof(sa_hdr_phys_t, sa_lengths) + + (sizeof (uint16_t) * tb->lot_var_sizes)), 8); + length_start = hdr->sa_lengths; + } else { + data_start = hdr; + } + + for (i = 0; i != tb->lot_attr_count; i++) { + int attr_length, reg_length; + uint8_t idx_len; + + reg_length = sa->sa_attr_table[tb->lot_attrs[i]].sa_length; + if (reg_length) { + attr_length = reg_length; + idx_len = 0; + } else { + attr_length = length_start[length_idx]; + idx_len = length_idx++; + } + + func(hdr, data_start, tb->lot_attrs[i], attr_length, + idx_len, reg_length == 0 ? B_TRUE : B_FALSE, userp); + + data_start = (void *)P2ROUNDUP(((uintptr_t)data_start + + attr_length), 8); + } +} + +/*ARGSUSED*/ +void +sa_byteswap_cb(void *hdr, void *attr_addr, sa_attr_type_t attr, + uint16_t length, int length_idx, boolean_t variable_length, void *userp) +{ + sa_handle_t *hdl = userp; + sa_os_t *sa = hdl->sa_os->os_sa; + + sa_bswap_table[sa->sa_attr_table[attr].sa_byteswap](attr_addr, length); +} + +void +sa_byteswap(sa_handle_t *hdl, sa_buf_type_t buftype) +{ + sa_hdr_phys_t *sa_hdr_phys = SA_GET_HDR(hdl, buftype); + dmu_buf_impl_t *db; + int num_lengths = 1; + int i; + ASSERTV(sa_os_t *sa = hdl->sa_os->os_sa); + + ASSERT(MUTEX_HELD(&sa->sa_lock)); + if (sa_hdr_phys->sa_magic == SA_MAGIC) + return; + + db = SA_GET_DB(hdl, buftype); + + if (buftype == SA_SPILL) { + arc_release(db->db_buf, NULL); + arc_buf_thaw(db->db_buf); + } + + sa_hdr_phys->sa_magic = BSWAP_32(sa_hdr_phys->sa_magic); + sa_hdr_phys->sa_layout_info = BSWAP_16(sa_hdr_phys->sa_layout_info); + + /* + * Determine number of variable lenghts in header + * The standard 8 byte header has one for free and a + * 16 byte header would have 4 + 1; + */ + if (SA_HDR_SIZE(sa_hdr_phys) > 8) + num_lengths += (SA_HDR_SIZE(sa_hdr_phys) - 8) >> 1; + for (i = 0; i != num_lengths; i++) + sa_hdr_phys->sa_lengths[i] = + BSWAP_16(sa_hdr_phys->sa_lengths[i]); + + sa_attr_iter(hdl->sa_os, sa_hdr_phys, DMU_OT_SA, + sa_byteswap_cb, NULL, hdl); + + if (buftype == SA_SPILL) + arc_buf_freeze(((dmu_buf_impl_t *)hdl->sa_spill)->db_buf); +} + +static int +sa_build_index(sa_handle_t *hdl, sa_buf_type_t buftype) +{ + sa_hdr_phys_t *sa_hdr_phys; + dmu_buf_impl_t *db = SA_GET_DB(hdl, buftype); + dmu_object_type_t bonustype = SA_BONUSTYPE_FROM_DB(db); + sa_os_t *sa = hdl->sa_os->os_sa; + sa_idx_tab_t *idx_tab; + + sa_hdr_phys = SA_GET_HDR(hdl, buftype); + + mutex_enter(&sa->sa_lock); + + /* Do we need to byteswap? */ + + /* only check if not old znode */ + if (IS_SA_BONUSTYPE(bonustype) && sa_hdr_phys->sa_magic != SA_MAGIC && + sa_hdr_phys->sa_magic != 0) { + VERIFY(BSWAP_32(sa_hdr_phys->sa_magic) == SA_MAGIC); + sa_byteswap(hdl, buftype); + } + + idx_tab = sa_find_idx_tab(hdl->sa_os, bonustype, sa_hdr_phys); + + if (buftype == SA_BONUS) + hdl->sa_bonus_tab = idx_tab; + else + hdl->sa_spill_tab = idx_tab; + + mutex_exit(&sa->sa_lock); + return (0); +} + +/*ARGSUSED*/ +static void +sa_evict(void *dbu) +{ + panic("evicting sa dbuf\n"); +} + +static void +sa_idx_tab_rele(objset_t *os, void *arg) +{ + sa_os_t *sa = os->os_sa; + sa_idx_tab_t *idx_tab = arg; + + if (idx_tab == NULL) + return; + + mutex_enter(&sa->sa_lock); + if (refcount_remove(&idx_tab->sa_refcount, NULL) == 0) { + list_remove(&idx_tab->sa_layout->lot_idx_tab, idx_tab); + if (idx_tab->sa_variable_lengths) + kmem_free(idx_tab->sa_variable_lengths, + sizeof (uint16_t) * + idx_tab->sa_layout->lot_var_sizes); + refcount_destroy(&idx_tab->sa_refcount); + kmem_free(idx_tab->sa_idx_tab, + sizeof (uint32_t) * sa->sa_num_attrs); + kmem_free(idx_tab, sizeof (sa_idx_tab_t)); + } + mutex_exit(&sa->sa_lock); +} + +static void +sa_idx_tab_hold(objset_t *os, sa_idx_tab_t *idx_tab) +{ + ASSERTV(sa_os_t *sa = os->os_sa); + + ASSERT(MUTEX_HELD(&sa->sa_lock)); + (void) refcount_add(&idx_tab->sa_refcount, NULL); +} + +void +sa_spill_rele(sa_handle_t *hdl) +{ + mutex_enter(&hdl->sa_lock); + if (hdl->sa_spill) { + sa_idx_tab_rele(hdl->sa_os, hdl->sa_spill_tab); + dmu_buf_rele(hdl->sa_spill, NULL); + hdl->sa_spill = NULL; + hdl->sa_spill_tab = NULL; + } + mutex_exit(&hdl->sa_lock); +} + +void +sa_handle_destroy(sa_handle_t *hdl) +{ + dmu_buf_t *db = hdl->sa_bonus; + + mutex_enter(&hdl->sa_lock); + (void) dmu_buf_remove_user(db, &hdl->sa_dbu); + + if (hdl->sa_bonus_tab) + sa_idx_tab_rele(hdl->sa_os, hdl->sa_bonus_tab); + + if (hdl->sa_spill_tab) + sa_idx_tab_rele(hdl->sa_os, hdl->sa_spill_tab); + + dmu_buf_rele(hdl->sa_bonus, NULL); + + if (hdl->sa_spill) + dmu_buf_rele((dmu_buf_t *)hdl->sa_spill, NULL); + mutex_exit(&hdl->sa_lock); + + kmem_cache_free(sa_cache, hdl); +} + +int +sa_handle_get_from_db(objset_t *os, dmu_buf_t *db, void *userp, + sa_handle_type_t hdl_type, sa_handle_t **handlepp) +{ + int error = 0; + sa_handle_t *handle = NULL; +#ifdef ZFS_DEBUG + dmu_object_info_t doi; + + dmu_object_info_from_db(db, &doi); + ASSERT(doi.doi_bonus_type == DMU_OT_SA || + doi.doi_bonus_type == DMU_OT_ZNODE); +#endif + /* find handle, if it exists */ + /* if one doesn't exist then create a new one, and initialize it */ + + if (hdl_type == SA_HDL_SHARED) + handle = dmu_buf_get_user(db); + + if (handle == NULL) { + sa_handle_t *winner = NULL; + + handle = kmem_cache_alloc(sa_cache, KM_SLEEP); + handle->sa_dbu.dbu_evict_func = NULL; + handle->sa_userp = userp; + handle->sa_bonus = db; + handle->sa_os = os; + handle->sa_spill = NULL; + handle->sa_bonus_tab = NULL; + handle->sa_spill_tab = NULL; + + error = sa_build_index(handle, SA_BONUS); + + if (hdl_type == SA_HDL_SHARED) { + dmu_buf_init_user(&handle->sa_dbu, sa_evict, NULL); + winner = dmu_buf_set_user_ie(db, &handle->sa_dbu); + } + + if (winner != NULL) { + kmem_cache_free(sa_cache, handle); + handle = winner; + } + } + *handlepp = handle; + + return (error); +} + +int +sa_handle_get(objset_t *objset, uint64_t objid, void *userp, + sa_handle_type_t hdl_type, sa_handle_t **handlepp) +{ + dmu_buf_t *db; + int error; + + if ((error = dmu_bonus_hold(objset, objid, NULL, &db))) + return (error); + + return (sa_handle_get_from_db(objset, db, userp, hdl_type, + handlepp)); +} + +int +sa_buf_hold(objset_t *objset, uint64_t obj_num, void *tag, dmu_buf_t **db) +{ + return (dmu_bonus_hold(objset, obj_num, tag, db)); +} + +void +sa_buf_rele(dmu_buf_t *db, void *tag) +{ + dmu_buf_rele(db, tag); +} + +int +sa_lookup_impl(sa_handle_t *hdl, sa_bulk_attr_t *bulk, int count) +{ + ASSERT(hdl); + ASSERT(MUTEX_HELD(&hdl->sa_lock)); + return (sa_attr_op(hdl, bulk, count, SA_LOOKUP, NULL)); +} + +int +sa_lookup(sa_handle_t *hdl, sa_attr_type_t attr, void *buf, uint32_t buflen) +{ + int error; + sa_bulk_attr_t bulk; + + bulk.sa_attr = attr; + bulk.sa_data = buf; + bulk.sa_length = buflen; + bulk.sa_data_func = NULL; + + ASSERT(hdl); + mutex_enter(&hdl->sa_lock); + error = sa_lookup_impl(hdl, &bulk, 1); + mutex_exit(&hdl->sa_lock); + return (error); +} + +#ifdef _KERNEL +int +sa_lookup_uio(sa_handle_t *hdl, sa_attr_type_t attr, uio_t *uio) +{ + int error; + sa_bulk_attr_t bulk; + + bulk.sa_data = NULL; + bulk.sa_attr = attr; + bulk.sa_data_func = NULL; + + ASSERT(hdl); + + mutex_enter(&hdl->sa_lock); + if ((error = sa_attr_op(hdl, &bulk, 1, SA_LOOKUP, NULL)) == 0) { + error = uiomove((void *)bulk.sa_addr, MIN(bulk.sa_size, + uio->uio_resid), UIO_READ, uio); + } + mutex_exit(&hdl->sa_lock); + return (error); +} +#endif + +void * +sa_find_idx_tab(objset_t *os, dmu_object_type_t bonustype, void *data) +{ + sa_idx_tab_t *idx_tab; + sa_hdr_phys_t *hdr = (sa_hdr_phys_t *)data; + sa_os_t *sa = os->os_sa; + sa_lot_t *tb, search; + avl_index_t loc; + + /* + * Deterimine layout number. If SA node and header == 0 then + * force the index table to the dummy "1" empty layout. + * + * The layout number would only be zero for a newly created file + * that has not added any attributes yet, or with crypto enabled which + * doesn't write any attributes to the bonus buffer. + */ + + search.lot_num = SA_LAYOUT_NUM(hdr, bonustype); + + tb = avl_find(&sa->sa_layout_num_tree, &search, &loc); + + /* Verify header size is consistent with layout information */ + ASSERT(tb); + ASSERT((IS_SA_BONUSTYPE(bonustype) && + SA_HDR_SIZE_MATCH_LAYOUT(hdr, tb)) || !IS_SA_BONUSTYPE(bonustype) || + (IS_SA_BONUSTYPE(bonustype) && hdr->sa_layout_info == 0)); + + /* + * See if any of the already existing TOC entries can be reused? + */ + + for (idx_tab = list_head(&tb->lot_idx_tab); idx_tab; + idx_tab = list_next(&tb->lot_idx_tab, idx_tab)) { + boolean_t valid_idx = B_TRUE; + int i; + + if (tb->lot_var_sizes != 0 && + idx_tab->sa_variable_lengths != NULL) { + for (i = 0; i != tb->lot_var_sizes; i++) { + if (hdr->sa_lengths[i] != + idx_tab->sa_variable_lengths[i]) { + valid_idx = B_FALSE; + break; + } + } + } + if (valid_idx) { + sa_idx_tab_hold(os, idx_tab); + return (idx_tab); + } + } + + /* No such luck, create a new entry */ + idx_tab = kmem_zalloc(sizeof (sa_idx_tab_t), KM_SLEEP); + idx_tab->sa_idx_tab = + kmem_zalloc(sizeof (uint32_t) * sa->sa_num_attrs, KM_SLEEP); + idx_tab->sa_layout = tb; + refcount_create(&idx_tab->sa_refcount); + if (tb->lot_var_sizes) + idx_tab->sa_variable_lengths = kmem_alloc(sizeof (uint16_t) * + tb->lot_var_sizes, KM_SLEEP); + + sa_attr_iter(os, hdr, bonustype, sa_build_idx_tab, + tb, idx_tab); + sa_idx_tab_hold(os, idx_tab); /* one hold for consumer */ + sa_idx_tab_hold(os, idx_tab); /* one for layout */ + list_insert_tail(&tb->lot_idx_tab, idx_tab); + return (idx_tab); +} + +void +sa_default_locator(void **dataptr, uint32_t *len, uint32_t total_len, + boolean_t start, void *userdata) +{ + ASSERT(start); + + *dataptr = userdata; + *len = total_len; +} + +static void +sa_attr_register_sync(sa_handle_t *hdl, dmu_tx_t *tx) +{ + uint64_t attr_value = 0; + sa_os_t *sa = hdl->sa_os->os_sa; + sa_attr_table_t *tb = sa->sa_attr_table; + int i; + + mutex_enter(&sa->sa_lock); + + if (!sa->sa_need_attr_registration || sa->sa_master_obj == 0) { + mutex_exit(&sa->sa_lock); + return; + } + + if (sa->sa_reg_attr_obj == 0) { + sa->sa_reg_attr_obj = zap_create_link(hdl->sa_os, + DMU_OT_SA_ATTR_REGISTRATION, + sa->sa_master_obj, SA_REGISTRY, tx); + } + for (i = 0; i != sa->sa_num_attrs; i++) { + if (sa->sa_attr_table[i].sa_registered) + continue; + ATTR_ENCODE(attr_value, tb[i].sa_attr, tb[i].sa_length, + tb[i].sa_byteswap); + VERIFY(0 == zap_update(hdl->sa_os, sa->sa_reg_attr_obj, + tb[i].sa_name, 8, 1, &attr_value, tx)); + tb[i].sa_registered = B_TRUE; + } + sa->sa_need_attr_registration = B_FALSE; + mutex_exit(&sa->sa_lock); +} + +/* + * Replace all attributes with attributes specified in template. + * If dnode had a spill buffer then those attributes will be + * also be replaced, possibly with just an empty spill block + * + * This interface is intended to only be used for bulk adding of + * attributes for a new file. It will also be used by the ZPL + * when converting and old formatted znode to native SA support. + */ +int +sa_replace_all_by_template_locked(sa_handle_t *hdl, sa_bulk_attr_t *attr_desc, + int attr_count, dmu_tx_t *tx) +{ + sa_os_t *sa = hdl->sa_os->os_sa; + + if (sa->sa_need_attr_registration) + sa_attr_register_sync(hdl, tx); + return (sa_build_layouts(hdl, attr_desc, attr_count, tx)); +} + +int +sa_replace_all_by_template(sa_handle_t *hdl, sa_bulk_attr_t *attr_desc, + int attr_count, dmu_tx_t *tx) +{ + int error; + + mutex_enter(&hdl->sa_lock); + error = sa_replace_all_by_template_locked(hdl, attr_desc, + attr_count, tx); + mutex_exit(&hdl->sa_lock); + return (error); +} + +/* + * add/remove/replace a single attribute and then rewrite the entire set + * of attributes. + */ +static int +sa_modify_attrs(sa_handle_t *hdl, sa_attr_type_t newattr, + sa_data_op_t action, sa_data_locator_t *locator, void *datastart, + uint16_t buflen, dmu_tx_t *tx) +{ + sa_os_t *sa = hdl->sa_os->os_sa; + dmu_buf_impl_t *db = (dmu_buf_impl_t *)hdl->sa_bonus; + dnode_t *dn; + sa_bulk_attr_t *attr_desc; + void *old_data[2]; + int bonus_attr_count = 0; + int bonus_data_size = 0; + int spill_data_size = 0; + int spill_attr_count = 0; + int error; + uint16_t length; + int i, j, k, length_idx; + sa_hdr_phys_t *hdr; + sa_idx_tab_t *idx_tab; + int attr_count; + int count; + + ASSERT(MUTEX_HELD(&hdl->sa_lock)); + + /* First make of copy of the old data */ + + DB_DNODE_ENTER(db); + dn = DB_DNODE(db); + if (dn->dn_bonuslen != 0) { + bonus_data_size = hdl->sa_bonus->db_size; + old_data[0] = kmem_alloc(bonus_data_size, KM_SLEEP); + bcopy(hdl->sa_bonus->db_data, old_data[0], + hdl->sa_bonus->db_size); + bonus_attr_count = hdl->sa_bonus_tab->sa_layout->lot_attr_count; + } else { + old_data[0] = NULL; + } + DB_DNODE_EXIT(db); + + /* Bring spill buffer online if it isn't currently */ + + if ((error = sa_get_spill(hdl)) == 0) { + spill_data_size = hdl->sa_spill->db_size; + old_data[1] = zio_buf_alloc(spill_data_size); + bcopy(hdl->sa_spill->db_data, old_data[1], + hdl->sa_spill->db_size); + spill_attr_count = + hdl->sa_spill_tab->sa_layout->lot_attr_count; + } else if (error && error != ENOENT) { + if (old_data[0]) + kmem_free(old_data[0], bonus_data_size); + return (error); + } else { + old_data[1] = NULL; + } + + /* build descriptor of all attributes */ + + attr_count = bonus_attr_count + spill_attr_count; + if (action == SA_ADD) + attr_count++; + else if (action == SA_REMOVE) + attr_count--; + + attr_desc = kmem_zalloc(sizeof (sa_bulk_attr_t) * attr_count, KM_SLEEP); + + /* + * loop through bonus and spill buffer if it exists, and + * build up new attr_descriptor to reset the attributes + */ + k = j = 0; + count = bonus_attr_count; + hdr = SA_GET_HDR(hdl, SA_BONUS); + idx_tab = SA_IDX_TAB_GET(hdl, SA_BONUS); + for (; k != 2; k++) { + /* + * Iterate over each attribute in layout. Fetch the + * size of variable-length attributes needing rewrite + * from sa_lengths[]. + */ + for (i = 0, length_idx = 0; i != count; i++) { + sa_attr_type_t attr; + + attr = idx_tab->sa_layout->lot_attrs[i]; + length = SA_REGISTERED_LEN(sa, attr); + if (attr == newattr) { + if (length == 0) + ++length_idx; + if (action == SA_REMOVE) + continue; + ASSERT(length == 0); + ASSERT(action == SA_REPLACE); + SA_ADD_BULK_ATTR(attr_desc, j, attr, + locator, datastart, buflen); + } else { + if (length == 0) + length = hdr->sa_lengths[length_idx++]; + + SA_ADD_BULK_ATTR(attr_desc, j, attr, + NULL, (void *) + (TOC_OFF(idx_tab->sa_idx_tab[attr]) + + (uintptr_t)old_data[k]), length); + } + } + if (k == 0 && hdl->sa_spill) { + hdr = SA_GET_HDR(hdl, SA_SPILL); + idx_tab = SA_IDX_TAB_GET(hdl, SA_SPILL); + count = spill_attr_count; + } else { + break; + } + } + if (action == SA_ADD) { + length = SA_REGISTERED_LEN(sa, newattr); + if (length == 0) { + length = buflen; + } + SA_ADD_BULK_ATTR(attr_desc, j, newattr, locator, + datastart, length); + } + + error = sa_build_layouts(hdl, attr_desc, attr_count, tx); + + if (old_data[0]) + kmem_free(old_data[0], bonus_data_size); + if (old_data[1]) + zio_buf_free(old_data[1], spill_data_size); + kmem_free(attr_desc, sizeof (sa_bulk_attr_t) * attr_count); + + return (error); +} + +static int +sa_bulk_update_impl(sa_handle_t *hdl, sa_bulk_attr_t *bulk, int count, + dmu_tx_t *tx) +{ + int error; + sa_os_t *sa = hdl->sa_os->os_sa; + dmu_object_type_t bonustype; + dmu_buf_t *saved_spill; + + ASSERT(hdl); + ASSERT(MUTEX_HELD(&hdl->sa_lock)); + + bonustype = SA_BONUSTYPE_FROM_DB(SA_GET_DB(hdl, SA_BONUS)); + saved_spill = hdl->sa_spill; + + /* sync out registration table if necessary */ + if (sa->sa_need_attr_registration) + sa_attr_register_sync(hdl, tx); + + error = sa_attr_op(hdl, bulk, count, SA_UPDATE, tx); + if (error == 0 && !IS_SA_BONUSTYPE(bonustype) && sa->sa_update_cb) + sa->sa_update_cb(hdl, tx); + + /* + * If saved_spill is NULL and current sa_spill is not NULL that + * means we increased the refcount of the spill buffer through + * sa_get_spill() or dmu_spill_hold_by_dnode(). Therefore we + * must release the hold before calling dmu_tx_commit() to avoid + * making a copy of this buffer in dbuf_sync_leaf() due to the + * reference count now being greater than 1. + */ + if (!saved_spill && hdl->sa_spill) { + if (hdl->sa_spill_tab) { + sa_idx_tab_rele(hdl->sa_os, hdl->sa_spill_tab); + hdl->sa_spill_tab = NULL; + } + + dmu_buf_rele((dmu_buf_t *)hdl->sa_spill, NULL); + hdl->sa_spill = NULL; + } + + return (error); +} + +/* + * update or add new attribute + */ +int +sa_update(sa_handle_t *hdl, sa_attr_type_t type, + void *buf, uint32_t buflen, dmu_tx_t *tx) +{ + int error; + sa_bulk_attr_t bulk; + + bulk.sa_attr = type; + bulk.sa_data_func = NULL; + bulk.sa_length = buflen; + bulk.sa_data = buf; + + mutex_enter(&hdl->sa_lock); + error = sa_bulk_update_impl(hdl, &bulk, 1, tx); + mutex_exit(&hdl->sa_lock); + return (error); +} + +int +sa_update_from_cb(sa_handle_t *hdl, sa_attr_type_t attr, + uint32_t buflen, sa_data_locator_t *locator, void *userdata, dmu_tx_t *tx) +{ + int error; + sa_bulk_attr_t bulk; + + bulk.sa_attr = attr; + bulk.sa_data = userdata; + bulk.sa_data_func = locator; + bulk.sa_length = buflen; + + mutex_enter(&hdl->sa_lock); + error = sa_bulk_update_impl(hdl, &bulk, 1, tx); + mutex_exit(&hdl->sa_lock); + return (error); +} + +/* + * Return size of an attribute + */ + +int +sa_size(sa_handle_t *hdl, sa_attr_type_t attr, int *size) +{ + sa_bulk_attr_t bulk; + int error; + + bulk.sa_data = NULL; + bulk.sa_attr = attr; + bulk.sa_data_func = NULL; + + ASSERT(hdl); + mutex_enter(&hdl->sa_lock); + if ((error = sa_attr_op(hdl, &bulk, 1, SA_LOOKUP, NULL)) != 0) { + mutex_exit(&hdl->sa_lock); + return (error); + } + *size = bulk.sa_size; + + mutex_exit(&hdl->sa_lock); + return (0); +} + +int +sa_bulk_lookup_locked(sa_handle_t *hdl, sa_bulk_attr_t *attrs, int count) +{ + ASSERT(hdl); + ASSERT(MUTEX_HELD(&hdl->sa_lock)); + return (sa_lookup_impl(hdl, attrs, count)); +} + +int +sa_bulk_lookup(sa_handle_t *hdl, sa_bulk_attr_t *attrs, int count) +{ + int error; + + ASSERT(hdl); + mutex_enter(&hdl->sa_lock); + error = sa_bulk_lookup_locked(hdl, attrs, count); + mutex_exit(&hdl->sa_lock); + return (error); +} + +int +sa_bulk_update(sa_handle_t *hdl, sa_bulk_attr_t *attrs, int count, dmu_tx_t *tx) +{ + int error; + + ASSERT(hdl); + mutex_enter(&hdl->sa_lock); + error = sa_bulk_update_impl(hdl, attrs, count, tx); + mutex_exit(&hdl->sa_lock); + return (error); +} + +int +sa_remove(sa_handle_t *hdl, sa_attr_type_t attr, dmu_tx_t *tx) +{ + int error; + + mutex_enter(&hdl->sa_lock); + error = sa_modify_attrs(hdl, attr, SA_REMOVE, NULL, + NULL, 0, tx); + mutex_exit(&hdl->sa_lock); + return (error); +} + +void +sa_object_info(sa_handle_t *hdl, dmu_object_info_t *doi) +{ + dmu_object_info_from_db((dmu_buf_t *)hdl->sa_bonus, doi); +} + +void +sa_object_size(sa_handle_t *hdl, uint32_t *blksize, u_longlong_t *nblocks) +{ + dmu_object_size_from_db((dmu_buf_t *)hdl->sa_bonus, + blksize, nblocks); +} + +void +sa_set_userp(sa_handle_t *hdl, void *ptr) +{ + hdl->sa_userp = ptr; +} + +dmu_buf_t * +sa_get_db(sa_handle_t *hdl) +{ + return ((dmu_buf_t *)hdl->sa_bonus); +} + +void * +sa_get_userdata(sa_handle_t *hdl) +{ + return (hdl->sa_userp); +} + +void +sa_register_update_callback_locked(objset_t *os, sa_update_cb_t *func) +{ + ASSERT(MUTEX_HELD(&os->os_sa->sa_lock)); + os->os_sa->sa_update_cb = func; +} + +void +sa_register_update_callback(objset_t *os, sa_update_cb_t *func) +{ + + mutex_enter(&os->os_sa->sa_lock); + sa_register_update_callback_locked(os, func); + mutex_exit(&os->os_sa->sa_lock); +} + +uint64_t +sa_handle_object(sa_handle_t *hdl) +{ + return (hdl->sa_bonus->db_object); +} + +boolean_t +sa_enabled(objset_t *os) +{ + return (os->os_sa == NULL); +} + +int +sa_set_sa_object(objset_t *os, uint64_t sa_object) +{ + sa_os_t *sa = os->os_sa; + + if (sa->sa_master_obj) + return (1); + + sa->sa_master_obj = sa_object; + + return (0); +} + +int +sa_hdrsize(void *arg) +{ + sa_hdr_phys_t *hdr = arg; + + return (SA_HDR_SIZE(hdr)); +} + +void +sa_handle_lock(sa_handle_t *hdl) +{ + ASSERT(hdl); + mutex_enter(&hdl->sa_lock); +} + +void +sa_handle_unlock(sa_handle_t *hdl) +{ + ASSERT(hdl); + mutex_exit(&hdl->sa_lock); +} + +#ifdef _KERNEL +EXPORT_SYMBOL(sa_handle_get); +EXPORT_SYMBOL(sa_handle_get_from_db); +EXPORT_SYMBOL(sa_handle_destroy); +EXPORT_SYMBOL(sa_buf_hold); +EXPORT_SYMBOL(sa_buf_rele); +EXPORT_SYMBOL(sa_spill_rele); +EXPORT_SYMBOL(sa_lookup); +EXPORT_SYMBOL(sa_update); +EXPORT_SYMBOL(sa_remove); +EXPORT_SYMBOL(sa_bulk_lookup); +EXPORT_SYMBOL(sa_bulk_lookup_locked); +EXPORT_SYMBOL(sa_bulk_update); +EXPORT_SYMBOL(sa_size); +EXPORT_SYMBOL(sa_update_from_cb); +EXPORT_SYMBOL(sa_object_info); +EXPORT_SYMBOL(sa_object_size); +EXPORT_SYMBOL(sa_get_userdata); +EXPORT_SYMBOL(sa_set_userp); +EXPORT_SYMBOL(sa_get_db); +EXPORT_SYMBOL(sa_handle_object); +EXPORT_SYMBOL(sa_register_update_callback); +EXPORT_SYMBOL(sa_setup); +EXPORT_SYMBOL(sa_replace_all_by_template); +EXPORT_SYMBOL(sa_replace_all_by_template_locked); +EXPORT_SYMBOL(sa_enabled); +EXPORT_SYMBOL(sa_cache_init); +EXPORT_SYMBOL(sa_cache_fini); +EXPORT_SYMBOL(sa_set_sa_object); +EXPORT_SYMBOL(sa_hdrsize); +EXPORT_SYMBOL(sa_handle_lock); +EXPORT_SYMBOL(sa_handle_unlock); +EXPORT_SYMBOL(sa_lookup_uio); +#endif /* _KERNEL */ --- linux-4.4.0.orig/zfs/module/zfs/sha256.c +++ linux-4.4.0/zfs/module/zfs/sha256.c @@ -0,0 +1,127 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#include +#include +#include + +/* + * SHA-256 checksum, as specified in FIPS 180-3, available at: + * http://csrc.nist.gov/publications/PubsFIPS.html + * + * This is a very compact implementation of SHA-256. + * It is designed to be simple and portable, not to be fast. + */ + +/* + * The literal definitions of Ch() and Maj() according to FIPS 180-3 are: + * + * Ch(x, y, z) (x & y) ^ (~x & z) + * Maj(x, y, z) (x & y) ^ (x & z) ^ (y & z) + * + * We use equivalent logical reductions here that require one less op. + */ +#define Ch(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) +#define Maj(x, y, z) (((x) & (y)) ^ ((z) & ((x) ^ (y)))) +#define Rot32(x, s) (((x) >> s) | ((x) << (32 - s))) +#define SIGMA0(x) (Rot32(x, 2) ^ Rot32(x, 13) ^ Rot32(x, 22)) +#define SIGMA1(x) (Rot32(x, 6) ^ Rot32(x, 11) ^ Rot32(x, 25)) +#define sigma0(x) (Rot32(x, 7) ^ Rot32(x, 18) ^ ((x) >> 3)) +#define sigma1(x) (Rot32(x, 17) ^ Rot32(x, 19) ^ ((x) >> 10)) + +static const uint32_t SHA256_K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +static void +SHA256Transform(uint32_t *H, const uint8_t *cp) +{ + uint32_t a, b, c, d, e, f, g, h, t, T1, T2, W[64]; + + for (t = 0; t < 16; t++, cp += 4) + W[t] = (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | cp[3]; + + for (t = 16; t < 64; t++) + W[t] = sigma1(W[t - 2]) + W[t - 7] + + sigma0(W[t - 15]) + W[t - 16]; + + a = H[0]; b = H[1]; c = H[2]; d = H[3]; + e = H[4]; f = H[5]; g = H[6]; h = H[7]; + + for (t = 0; t < 64; t++) { + T1 = h + SIGMA1(e) + Ch(e, f, g) + SHA256_K[t] + W[t]; + T2 = SIGMA0(a) + Maj(a, b, c); + h = g; g = f; f = e; e = d + T1; + d = c; c = b; b = a; a = T1 + T2; + } + + H[0] += a; H[1] += b; H[2] += c; H[3] += d; + H[4] += e; H[5] += f; H[6] += g; H[7] += h; +} + +void +zio_checksum_SHA256(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + uint32_t H[8] = { 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 }; + uint8_t pad[128]; + int i, padsize; + + for (i = 0; i < (size & ~63ULL); i += 64) + SHA256Transform(H, (uint8_t *)buf + i); + + for (padsize = 0; i < size; i++) + pad[padsize++] = *((uint8_t *)buf + i); + + for (pad[padsize++] = 0x80; (padsize & 63) != 56; padsize++) + pad[padsize] = 0; + + for (i = 56; i >= 0; i -= 8) + pad[padsize++] = (size << 3) >> i; + + for (i = 0; i < padsize; i += 64) + SHA256Transform(H, pad + i); + + ZIO_SET_CHECKSUM(zcp, + (uint64_t)H[0] << 32 | H[1], + (uint64_t)H[2] << 32 | H[3], + (uint64_t)H[4] << 32 | H[5], + (uint64_t)H[6] << 32 | H[7]); +} --- linux-4.4.0.orig/zfs/module/zfs/spa.c +++ linux-4.4.0/zfs/module/zfs/spa.c @@ -0,0 +1,6812 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013, 2014, Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +/* + * SPA: Storage Pool Allocator + * + * This file contains all the routines used when modifying on-disk SPA state. + * This includes opening, importing, destroying, exporting a pool, and syncing a + * pool. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#endif /* _KERNEL */ + +#include "zfs_prop.h" +#include "zfs_comutil.h" + +typedef enum zti_modes { + ZTI_MODE_FIXED, /* value is # of threads (min 1) */ + ZTI_MODE_BATCH, /* cpu-intensive; value is ignored */ + ZTI_MODE_NULL, /* don't create a taskq */ + ZTI_NMODES +} zti_modes_t; + +#define ZTI_P(n, q) { ZTI_MODE_FIXED, (n), (q) } +#define ZTI_PCT(n) { ZTI_MODE_ONLINE_PERCENT, (n), 1 } +#define ZTI_BATCH { ZTI_MODE_BATCH, 0, 1 } +#define ZTI_NULL { ZTI_MODE_NULL, 0, 0 } + +#define ZTI_N(n) ZTI_P(n, 1) +#define ZTI_ONE ZTI_N(1) + +typedef struct zio_taskq_info { + zti_modes_t zti_mode; + uint_t zti_value; + uint_t zti_count; +} zio_taskq_info_t; + +static const char *const zio_taskq_types[ZIO_TASKQ_TYPES] = { + "iss", "iss_h", "int", "int_h" +}; + +/* + * This table defines the taskq settings for each ZFS I/O type. When + * initializing a pool, we use this table to create an appropriately sized + * taskq. Some operations are low volume and therefore have a small, static + * number of threads assigned to their taskqs using the ZTI_N(#) or ZTI_ONE + * macros. Other operations process a large amount of data; the ZTI_BATCH + * macro causes us to create a taskq oriented for throughput. Some operations + * are so high frequency and short-lived that the taskq itself can become a a + * point of lock contention. The ZTI_P(#, #) macro indicates that we need an + * additional degree of parallelism specified by the number of threads per- + * taskq and the number of taskqs; when dispatching an event in this case, the + * particular taskq is chosen at random. + * + * The different taskq priorities are to handle the different contexts (issue + * and interrupt) and then to reserve threads for ZIO_PRIORITY_NOW I/Os that + * need to be handled with minimum delay. + */ +const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = { + /* ISSUE ISSUE_HIGH INTR INTR_HIGH */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* NULL */ + { ZTI_N(8), ZTI_NULL, ZTI_P(12, 8), ZTI_NULL }, /* READ */ + { ZTI_BATCH, ZTI_N(5), ZTI_P(12, 8), ZTI_N(5) }, /* WRITE */ + { ZTI_P(12, 8), ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* FREE */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* CLAIM */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* IOCTL */ +}; + +static void spa_sync_version(void *arg, dmu_tx_t *tx); +static void spa_sync_props(void *arg, dmu_tx_t *tx); +static boolean_t spa_has_active_shared_spare(spa_t *spa); +static inline int spa_load_impl(spa_t *spa, uint64_t, nvlist_t *config, + spa_load_state_t state, spa_import_type_t type, boolean_t mosconfig, + char **ereport); +static void spa_vdev_resilver_done(spa_t *spa); + +uint_t zio_taskq_batch_pct = 75; /* 1 thread per cpu in pset */ +id_t zio_taskq_psrset_bind = PS_NONE; +boolean_t zio_taskq_sysdc = B_TRUE; /* use SDC scheduling class */ +uint_t zio_taskq_basedc = 80; /* base duty cycle */ + +boolean_t spa_create_process = B_TRUE; /* no process ==> no sysdc */ + +/* + * This (illegal) pool name is used when temporarily importing a spa_t in order + * to get the vdev stats associated with the imported devices. + */ +#define TRYIMPORT_NAME "$import" + +/* + * ========================================================================== + * SPA properties routines + * ========================================================================== + */ + +/* + * Add a (source=src, propname=propval) list to an nvlist. + */ +static void +spa_prop_add_list(nvlist_t *nvl, zpool_prop_t prop, char *strval, + uint64_t intval, zprop_source_t src) +{ + const char *propname = zpool_prop_to_name(prop); + nvlist_t *propval; + + VERIFY(nvlist_alloc(&propval, NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_uint64(propval, ZPROP_SOURCE, src) == 0); + + if (strval != NULL) + VERIFY(nvlist_add_string(propval, ZPROP_VALUE, strval) == 0); + else + VERIFY(nvlist_add_uint64(propval, ZPROP_VALUE, intval) == 0); + + VERIFY(nvlist_add_nvlist(nvl, propname, propval) == 0); + nvlist_free(propval); +} + +/* + * Get property values from the spa configuration. + */ +static void +spa_prop_get_config(spa_t *spa, nvlist_t **nvp) +{ + vdev_t *rvd = spa->spa_root_vdev; + dsl_pool_t *pool = spa->spa_dsl_pool; + uint64_t size, alloc, cap, version; + zprop_source_t src = ZPROP_SRC_NONE; + spa_config_dirent_t *dp; + metaslab_class_t *mc = spa_normal_class(spa); + + ASSERT(MUTEX_HELD(&spa->spa_props_lock)); + + if (rvd != NULL) { + alloc = metaslab_class_get_alloc(spa_normal_class(spa)); + size = metaslab_class_get_space(spa_normal_class(spa)); + spa_prop_add_list(*nvp, ZPOOL_PROP_NAME, spa_name(spa), 0, src); + spa_prop_add_list(*nvp, ZPOOL_PROP_SIZE, NULL, size, src); + spa_prop_add_list(*nvp, ZPOOL_PROP_ALLOCATED, NULL, alloc, src); + spa_prop_add_list(*nvp, ZPOOL_PROP_FREE, NULL, + size - alloc, src); + + spa_prop_add_list(*nvp, ZPOOL_PROP_FRAGMENTATION, NULL, + metaslab_class_fragmentation(mc), src); + spa_prop_add_list(*nvp, ZPOOL_PROP_EXPANDSZ, NULL, + metaslab_class_expandable_space(mc), src); + spa_prop_add_list(*nvp, ZPOOL_PROP_READONLY, NULL, + (spa_mode(spa) == FREAD), src); + + cap = (size == 0) ? 0 : (alloc * 100 / size); + spa_prop_add_list(*nvp, ZPOOL_PROP_CAPACITY, NULL, cap, src); + + spa_prop_add_list(*nvp, ZPOOL_PROP_DEDUPRATIO, NULL, + ddt_get_pool_dedup_ratio(spa), src); + + spa_prop_add_list(*nvp, ZPOOL_PROP_HEALTH, NULL, + rvd->vdev_state, src); + + version = spa_version(spa); + if (version == zpool_prop_default_numeric(ZPOOL_PROP_VERSION)) + src = ZPROP_SRC_DEFAULT; + else + src = ZPROP_SRC_LOCAL; + spa_prop_add_list(*nvp, ZPOOL_PROP_VERSION, NULL, version, src); + } + + if (pool != NULL) { + /* + * The $FREE directory was introduced in SPA_VERSION_DEADLISTS, + * when opening pools before this version freedir will be NULL. + */ + if (pool->dp_free_dir != NULL) { + spa_prop_add_list(*nvp, ZPOOL_PROP_FREEING, NULL, + dsl_dir_phys(pool->dp_free_dir)->dd_used_bytes, + src); + } else { + spa_prop_add_list(*nvp, ZPOOL_PROP_FREEING, + NULL, 0, src); + } + + if (pool->dp_leak_dir != NULL) { + spa_prop_add_list(*nvp, ZPOOL_PROP_LEAKED, NULL, + dsl_dir_phys(pool->dp_leak_dir)->dd_used_bytes, + src); + } else { + spa_prop_add_list(*nvp, ZPOOL_PROP_LEAKED, + NULL, 0, src); + } + } + + spa_prop_add_list(*nvp, ZPOOL_PROP_GUID, NULL, spa_guid(spa), src); + + if (spa->spa_comment != NULL) { + spa_prop_add_list(*nvp, ZPOOL_PROP_COMMENT, spa->spa_comment, + 0, ZPROP_SRC_LOCAL); + } + + if (spa->spa_root != NULL) + spa_prop_add_list(*nvp, ZPOOL_PROP_ALTROOT, spa->spa_root, + 0, ZPROP_SRC_LOCAL); + + if (spa_feature_is_enabled(spa, SPA_FEATURE_LARGE_BLOCKS)) { + spa_prop_add_list(*nvp, ZPOOL_PROP_MAXBLOCKSIZE, NULL, + MIN(zfs_max_recordsize, SPA_MAXBLOCKSIZE), ZPROP_SRC_NONE); + } else { + spa_prop_add_list(*nvp, ZPOOL_PROP_MAXBLOCKSIZE, NULL, + SPA_OLD_MAXBLOCKSIZE, ZPROP_SRC_NONE); + } + + if ((dp = list_head(&spa->spa_config_list)) != NULL) { + if (dp->scd_path == NULL) { + spa_prop_add_list(*nvp, ZPOOL_PROP_CACHEFILE, + "none", 0, ZPROP_SRC_LOCAL); + } else if (strcmp(dp->scd_path, spa_config_path) != 0) { + spa_prop_add_list(*nvp, ZPOOL_PROP_CACHEFILE, + dp->scd_path, 0, ZPROP_SRC_LOCAL); + } + } +} + +/* + * Get zpool property values. + */ +int +spa_prop_get(spa_t *spa, nvlist_t **nvp) +{ + objset_t *mos = spa->spa_meta_objset; + zap_cursor_t zc; + zap_attribute_t za; + int err; + + err = nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP); + if (err) + return (err); + + mutex_enter(&spa->spa_props_lock); + + /* + * Get properties from the spa config. + */ + spa_prop_get_config(spa, nvp); + + /* If no pool property object, no more prop to get. */ + if (mos == NULL || spa->spa_pool_props_object == 0) { + mutex_exit(&spa->spa_props_lock); + goto out; + } + + /* + * Get properties from the MOS pool property object. + */ + for (zap_cursor_init(&zc, mos, spa->spa_pool_props_object); + (err = zap_cursor_retrieve(&zc, &za)) == 0; + zap_cursor_advance(&zc)) { + uint64_t intval = 0; + char *strval = NULL; + zprop_source_t src = ZPROP_SRC_DEFAULT; + zpool_prop_t prop; + + if ((prop = zpool_name_to_prop(za.za_name)) == ZPROP_INVAL) + continue; + + switch (za.za_integer_length) { + case 8: + /* integer property */ + if (za.za_first_integer != + zpool_prop_default_numeric(prop)) + src = ZPROP_SRC_LOCAL; + + if (prop == ZPOOL_PROP_BOOTFS) { + dsl_pool_t *dp; + dsl_dataset_t *ds = NULL; + + dp = spa_get_dsl(spa); + dsl_pool_config_enter(dp, FTAG); + if ((err = dsl_dataset_hold_obj(dp, + za.za_first_integer, FTAG, &ds))) { + dsl_pool_config_exit(dp, FTAG); + break; + } + + strval = kmem_alloc( + MAXNAMELEN + strlen(MOS_DIR_NAME) + 1, + KM_SLEEP); + dsl_dataset_name(ds, strval); + dsl_dataset_rele(ds, FTAG); + dsl_pool_config_exit(dp, FTAG); + } else { + strval = NULL; + intval = za.za_first_integer; + } + + spa_prop_add_list(*nvp, prop, strval, intval, src); + + if (strval != NULL) + kmem_free(strval, + MAXNAMELEN + strlen(MOS_DIR_NAME) + 1); + + break; + + case 1: + /* string property */ + strval = kmem_alloc(za.za_num_integers, KM_SLEEP); + err = zap_lookup(mos, spa->spa_pool_props_object, + za.za_name, 1, za.za_num_integers, strval); + if (err) { + kmem_free(strval, za.za_num_integers); + break; + } + spa_prop_add_list(*nvp, prop, strval, 0, src); + kmem_free(strval, za.za_num_integers); + break; + + default: + break; + } + } + zap_cursor_fini(&zc); + mutex_exit(&spa->spa_props_lock); +out: + if (err && err != ENOENT) { + nvlist_free(*nvp); + *nvp = NULL; + return (err); + } + + return (0); +} + +/* + * Validate the given pool properties nvlist and modify the list + * for the property values to be set. + */ +static int +spa_prop_validate(spa_t *spa, nvlist_t *props) +{ + nvpair_t *elem; + int error = 0, reset_bootfs = 0; + uint64_t objnum = 0; + boolean_t has_feature = B_FALSE; + + elem = NULL; + while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { + uint64_t intval; + char *strval, *slash, *check, *fname; + const char *propname = nvpair_name(elem); + zpool_prop_t prop = zpool_name_to_prop(propname); + + switch ((int)prop) { + case ZPROP_INVAL: + if (!zpool_prop_feature(propname)) { + error = SET_ERROR(EINVAL); + break; + } + + /* + * Sanitize the input. + */ + if (nvpair_type(elem) != DATA_TYPE_UINT64) { + error = SET_ERROR(EINVAL); + break; + } + + if (nvpair_value_uint64(elem, &intval) != 0) { + error = SET_ERROR(EINVAL); + break; + } + + if (intval != 0) { + error = SET_ERROR(EINVAL); + break; + } + + fname = strchr(propname, '@') + 1; + if (zfeature_lookup_name(fname, NULL) != 0) { + error = SET_ERROR(EINVAL); + break; + } + + has_feature = B_TRUE; + break; + + case ZPOOL_PROP_VERSION: + error = nvpair_value_uint64(elem, &intval); + if (!error && + (intval < spa_version(spa) || + intval > SPA_VERSION_BEFORE_FEATURES || + has_feature)) + error = SET_ERROR(EINVAL); + break; + + case ZPOOL_PROP_DELEGATION: + case ZPOOL_PROP_AUTOREPLACE: + case ZPOOL_PROP_LISTSNAPS: + case ZPOOL_PROP_AUTOEXPAND: + error = nvpair_value_uint64(elem, &intval); + if (!error && intval > 1) + error = SET_ERROR(EINVAL); + break; + + case ZPOOL_PROP_BOOTFS: + /* + * If the pool version is less than SPA_VERSION_BOOTFS, + * or the pool is still being created (version == 0), + * the bootfs property cannot be set. + */ + if (spa_version(spa) < SPA_VERSION_BOOTFS) { + error = SET_ERROR(ENOTSUP); + break; + } + + /* + * Make sure the vdev config is bootable + */ + if (!vdev_is_bootable(spa->spa_root_vdev)) { + error = SET_ERROR(ENOTSUP); + break; + } + + reset_bootfs = 1; + + error = nvpair_value_string(elem, &strval); + + if (!error) { + objset_t *os; + uint64_t propval; + + if (strval == NULL || strval[0] == '\0') { + objnum = zpool_prop_default_numeric( + ZPOOL_PROP_BOOTFS); + break; + } + + error = dmu_objset_hold(strval, FTAG, &os); + if (error) + break; + + /* + * Must be ZPL, and its property settings + * must be supported by GRUB (compression + * is not gzip, and large blocks are not used). + */ + + if (dmu_objset_type(os) != DMU_OST_ZFS) { + error = SET_ERROR(ENOTSUP); + } else if ((error = + dsl_prop_get_int_ds(dmu_objset_ds(os), + zfs_prop_to_name(ZFS_PROP_COMPRESSION), + &propval)) == 0 && + !BOOTFS_COMPRESS_VALID(propval)) { + error = SET_ERROR(ENOTSUP); + } else if ((error = + dsl_prop_get_int_ds(dmu_objset_ds(os), + zfs_prop_to_name(ZFS_PROP_RECORDSIZE), + &propval)) == 0 && + propval > SPA_OLD_MAXBLOCKSIZE) { + error = SET_ERROR(ENOTSUP); + } else { + objnum = dmu_objset_id(os); + } + dmu_objset_rele(os, FTAG); + } + break; + + case ZPOOL_PROP_FAILUREMODE: + error = nvpair_value_uint64(elem, &intval); + if (!error && (intval < ZIO_FAILURE_MODE_WAIT || + intval > ZIO_FAILURE_MODE_PANIC)) + error = SET_ERROR(EINVAL); + + /* + * This is a special case which only occurs when + * the pool has completely failed. This allows + * the user to change the in-core failmode property + * without syncing it out to disk (I/Os might + * currently be blocked). We do this by returning + * EIO to the caller (spa_prop_set) to trick it + * into thinking we encountered a property validation + * error. + */ + if (!error && spa_suspended(spa)) { + spa->spa_failmode = intval; + error = SET_ERROR(EIO); + } + break; + + case ZPOOL_PROP_CACHEFILE: + if ((error = nvpair_value_string(elem, &strval)) != 0) + break; + + if (strval[0] == '\0') + break; + + if (strcmp(strval, "none") == 0) + break; + + if (strval[0] != '/') { + error = SET_ERROR(EINVAL); + break; + } + + slash = strrchr(strval, '/'); + ASSERT(slash != NULL); + + if (slash[1] == '\0' || strcmp(slash, "/.") == 0 || + strcmp(slash, "/..") == 0) + error = SET_ERROR(EINVAL); + break; + + case ZPOOL_PROP_COMMENT: + if ((error = nvpair_value_string(elem, &strval)) != 0) + break; + for (check = strval; *check != '\0'; check++) { + if (!isprint(*check)) { + error = SET_ERROR(EINVAL); + break; + } + check++; + } + if (strlen(strval) > ZPROP_MAX_COMMENT) + error = SET_ERROR(E2BIG); + break; + + case ZPOOL_PROP_DEDUPDITTO: + if (spa_version(spa) < SPA_VERSION_DEDUP) + error = SET_ERROR(ENOTSUP); + else + error = nvpair_value_uint64(elem, &intval); + if (error == 0 && + intval != 0 && intval < ZIO_DEDUPDITTO_MIN) + error = SET_ERROR(EINVAL); + break; + + default: + break; + } + + if (error) + break; + } + + if (!error && reset_bootfs) { + error = nvlist_remove(props, + zpool_prop_to_name(ZPOOL_PROP_BOOTFS), DATA_TYPE_STRING); + + if (!error) { + error = nvlist_add_uint64(props, + zpool_prop_to_name(ZPOOL_PROP_BOOTFS), objnum); + } + } + + return (error); +} + +void +spa_configfile_set(spa_t *spa, nvlist_t *nvp, boolean_t need_sync) +{ + char *cachefile; + spa_config_dirent_t *dp; + + if (nvlist_lookup_string(nvp, zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), + &cachefile) != 0) + return; + + dp = kmem_alloc(sizeof (spa_config_dirent_t), + KM_SLEEP); + + if (cachefile[0] == '\0') + dp->scd_path = spa_strdup(spa_config_path); + else if (strcmp(cachefile, "none") == 0) + dp->scd_path = NULL; + else + dp->scd_path = spa_strdup(cachefile); + + list_insert_head(&spa->spa_config_list, dp); + if (need_sync) + spa_async_request(spa, SPA_ASYNC_CONFIG_UPDATE); +} + +int +spa_prop_set(spa_t *spa, nvlist_t *nvp) +{ + int error; + nvpair_t *elem = NULL; + boolean_t need_sync = B_FALSE; + + if ((error = spa_prop_validate(spa, nvp)) != 0) + return (error); + + while ((elem = nvlist_next_nvpair(nvp, elem)) != NULL) { + zpool_prop_t prop = zpool_name_to_prop(nvpair_name(elem)); + + if (prop == ZPOOL_PROP_CACHEFILE || + prop == ZPOOL_PROP_ALTROOT || + prop == ZPOOL_PROP_READONLY) + continue; + + if (prop == ZPOOL_PROP_VERSION || prop == ZPROP_INVAL) { + uint64_t ver; + + if (prop == ZPOOL_PROP_VERSION) { + VERIFY(nvpair_value_uint64(elem, &ver) == 0); + } else { + ASSERT(zpool_prop_feature(nvpair_name(elem))); + ver = SPA_VERSION_FEATURES; + need_sync = B_TRUE; + } + + /* Save time if the version is already set. */ + if (ver == spa_version(spa)) + continue; + + /* + * In addition to the pool directory object, we might + * create the pool properties object, the features for + * read object, the features for write object, or the + * feature descriptions object. + */ + error = dsl_sync_task(spa->spa_name, NULL, + spa_sync_version, &ver, + 6, ZFS_SPACE_CHECK_RESERVED); + if (error) + return (error); + continue; + } + + need_sync = B_TRUE; + break; + } + + if (need_sync) { + return (dsl_sync_task(spa->spa_name, NULL, spa_sync_props, + nvp, 6, ZFS_SPACE_CHECK_RESERVED)); + } + + return (0); +} + +/* + * If the bootfs property value is dsobj, clear it. + */ +void +spa_prop_clear_bootfs(spa_t *spa, uint64_t dsobj, dmu_tx_t *tx) +{ + if (spa->spa_bootfs == dsobj && spa->spa_pool_props_object != 0) { + VERIFY(zap_remove(spa->spa_meta_objset, + spa->spa_pool_props_object, + zpool_prop_to_name(ZPOOL_PROP_BOOTFS), tx) == 0); + spa->spa_bootfs = 0; + } +} + +/*ARGSUSED*/ +static int +spa_change_guid_check(void *arg, dmu_tx_t *tx) +{ + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + vdev_t *rvd = spa->spa_root_vdev; + uint64_t vdev_state; + ASSERTV(uint64_t *newguid = arg); + + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + vdev_state = rvd->vdev_state; + spa_config_exit(spa, SCL_STATE, FTAG); + + if (vdev_state != VDEV_STATE_HEALTHY) + return (SET_ERROR(ENXIO)); + + ASSERT3U(spa_guid(spa), !=, *newguid); + + return (0); +} + +static void +spa_change_guid_sync(void *arg, dmu_tx_t *tx) +{ + uint64_t *newguid = arg; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + uint64_t oldguid; + vdev_t *rvd = spa->spa_root_vdev; + + oldguid = spa_guid(spa); + + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + rvd->vdev_guid = *newguid; + rvd->vdev_guid_sum += (*newguid - oldguid); + vdev_config_dirty(rvd); + spa_config_exit(spa, SCL_STATE, FTAG); + + spa_history_log_internal(spa, "guid change", tx, "old=%llu new=%llu", + oldguid, *newguid); +} + +/* + * Change the GUID for the pool. This is done so that we can later + * re-import a pool built from a clone of our own vdevs. We will modify + * the root vdev's guid, our own pool guid, and then mark all of our + * vdevs dirty. Note that we must make sure that all our vdevs are + * online when we do this, or else any vdevs that weren't present + * would be orphaned from our pool. We are also going to issue a + * sysevent to update any watchers. + */ +int +spa_change_guid(spa_t *spa) +{ + int error; + uint64_t guid; + + mutex_enter(&spa->spa_vdev_top_lock); + mutex_enter(&spa_namespace_lock); + guid = spa_generate_guid(NULL); + + error = dsl_sync_task(spa->spa_name, spa_change_guid_check, + spa_change_guid_sync, &guid, 5, ZFS_SPACE_CHECK_RESERVED); + + if (error == 0) { + spa_config_sync(spa, B_FALSE, B_TRUE); + spa_event_notify(spa, NULL, FM_EREPORT_ZFS_POOL_REGUID); + } + + mutex_exit(&spa_namespace_lock); + mutex_exit(&spa->spa_vdev_top_lock); + + return (error); +} + +/* + * ========================================================================== + * SPA state manipulation (open/create/destroy/import/export) + * ========================================================================== + */ + +static int +spa_error_entry_compare(const void *a, const void *b) +{ + spa_error_entry_t *sa = (spa_error_entry_t *)a; + spa_error_entry_t *sb = (spa_error_entry_t *)b; + int ret; + + ret = bcmp(&sa->se_bookmark, &sb->se_bookmark, + sizeof (zbookmark_phys_t)); + + if (ret < 0) + return (-1); + else if (ret > 0) + return (1); + else + return (0); +} + +/* + * Utility function which retrieves copies of the current logs and + * re-initializes them in the process. + */ +void +spa_get_errlists(spa_t *spa, avl_tree_t *last, avl_tree_t *scrub) +{ + ASSERT(MUTEX_HELD(&spa->spa_errlist_lock)); + + bcopy(&spa->spa_errlist_last, last, sizeof (avl_tree_t)); + bcopy(&spa->spa_errlist_scrub, scrub, sizeof (avl_tree_t)); + + avl_create(&spa->spa_errlist_scrub, + spa_error_entry_compare, sizeof (spa_error_entry_t), + offsetof(spa_error_entry_t, se_avl)); + avl_create(&spa->spa_errlist_last, + spa_error_entry_compare, sizeof (spa_error_entry_t), + offsetof(spa_error_entry_t, se_avl)); +} + +static void +spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) +{ + const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; + enum zti_modes mode = ztip->zti_mode; + uint_t value = ztip->zti_value; + uint_t count = ztip->zti_count; + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + char name[32]; + uint_t i, flags = TASKQ_DYNAMIC; + boolean_t batch = B_FALSE; + + if (mode == ZTI_MODE_NULL) { + tqs->stqs_count = 0; + tqs->stqs_taskq = NULL; + return; + } + + ASSERT3U(count, >, 0); + + tqs->stqs_count = count; + tqs->stqs_taskq = kmem_alloc(count * sizeof (taskq_t *), KM_SLEEP); + + switch (mode) { + case ZTI_MODE_FIXED: + ASSERT3U(value, >=, 1); + value = MAX(value, 1); + break; + + case ZTI_MODE_BATCH: + batch = B_TRUE; + flags |= TASKQ_THREADS_CPU_PCT; + value = MIN(zio_taskq_batch_pct, 100); + break; + + default: + panic("unrecognized mode for %s_%s taskq (%u:%u) in " + "spa_activate()", + zio_type_name[t], zio_taskq_types[q], mode, value); + break; + } + + for (i = 0; i < count; i++) { + taskq_t *tq; + + if (count > 1) { + (void) snprintf(name, sizeof (name), "%s_%s_%u", + zio_type_name[t], zio_taskq_types[q], i); + } else { + (void) snprintf(name, sizeof (name), "%s_%s", + zio_type_name[t], zio_taskq_types[q]); + } + + if (zio_taskq_sysdc && spa->spa_proc != &p0) { + if (batch) + flags |= TASKQ_DC_BATCH; + + tq = taskq_create_sysdc(name, value, 50, INT_MAX, + spa->spa_proc, zio_taskq_basedc, flags); + } else { + pri_t pri = maxclsyspri; + /* + * The write issue taskq can be extremely CPU + * intensive. Run it at slightly less important + * priority than the other taskqs. Under Linux this + * means incrementing the priority value on platforms + * like illumos it should be decremented. + */ + if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) + pri++; + + tq = taskq_create_proc(name, value, pri, 50, + INT_MAX, spa->spa_proc, flags); + } + + tqs->stqs_taskq[i] = tq; + } +} + +static void +spa_taskqs_fini(spa_t *spa, zio_type_t t, zio_taskq_type_t q) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + uint_t i; + + if (tqs->stqs_taskq == NULL) { + ASSERT3U(tqs->stqs_count, ==, 0); + return; + } + + for (i = 0; i < tqs->stqs_count; i++) { + ASSERT3P(tqs->stqs_taskq[i], !=, NULL); + taskq_destroy(tqs->stqs_taskq[i]); + } + + kmem_free(tqs->stqs_taskq, tqs->stqs_count * sizeof (taskq_t *)); + tqs->stqs_taskq = NULL; +} + +/* + * Dispatch a task to the appropriate taskq for the ZFS I/O type and priority. + * Note that a type may have multiple discrete taskqs to avoid lock contention + * on the taskq itself. In that case we choose which taskq at random by using + * the low bits of gethrtime(). + */ +void +spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + taskq_t *tq; + + ASSERT3P(tqs->stqs_taskq, !=, NULL); + ASSERT3U(tqs->stqs_count, !=, 0); + + if (tqs->stqs_count == 1) { + tq = tqs->stqs_taskq[0]; + } else { + tq = tqs->stqs_taskq[((uint64_t)gethrtime()) % tqs->stqs_count]; + } + + taskq_dispatch_ent(tq, func, arg, flags, ent); +} + +/* + * Same as spa_taskq_dispatch_ent() but block on the task until completion. + */ +void +spa_taskq_dispatch_sync(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + taskq_t *tq; + taskqid_t id; + + ASSERT3P(tqs->stqs_taskq, !=, NULL); + ASSERT3U(tqs->stqs_count, !=, 0); + + if (tqs->stqs_count == 1) { + tq = tqs->stqs_taskq[0]; + } else { + tq = tqs->stqs_taskq[((uint64_t)gethrtime()) % tqs->stqs_count]; + } + + id = taskq_dispatch(tq, func, arg, flags); + if (id) + taskq_wait_id(tq, id); +} + +static void +spa_create_zio_taskqs(spa_t *spa) +{ + int t, q; + + for (t = 0; t < ZIO_TYPES; t++) { + for (q = 0; q < ZIO_TASKQ_TYPES; q++) { + spa_taskqs_init(spa, t, q); + } + } +} + +#if defined(_KERNEL) && defined(HAVE_SPA_THREAD) +static void +spa_thread(void *arg) +{ + callb_cpr_t cprinfo; + + spa_t *spa = arg; + user_t *pu = PTOU(curproc); + + CALLB_CPR_INIT(&cprinfo, &spa->spa_proc_lock, callb_generic_cpr, + spa->spa_name); + + ASSERT(curproc != &p0); + (void) snprintf(pu->u_psargs, sizeof (pu->u_psargs), + "zpool-%s", spa->spa_name); + (void) strlcpy(pu->u_comm, pu->u_psargs, sizeof (pu->u_comm)); + + /* bind this thread to the requested psrset */ + if (zio_taskq_psrset_bind != PS_NONE) { + pool_lock(); + mutex_enter(&cpu_lock); + mutex_enter(&pidlock); + mutex_enter(&curproc->p_lock); + + if (cpupart_bind_thread(curthread, zio_taskq_psrset_bind, + 0, NULL, NULL) == 0) { + curthread->t_bind_pset = zio_taskq_psrset_bind; + } else { + cmn_err(CE_WARN, + "Couldn't bind process for zfs pool \"%s\" to " + "pset %d\n", spa->spa_name, zio_taskq_psrset_bind); + } + + mutex_exit(&curproc->p_lock); + mutex_exit(&pidlock); + mutex_exit(&cpu_lock); + pool_unlock(); + } + + if (zio_taskq_sysdc) { + sysdc_thread_enter(curthread, 100, 0); + } + + spa->spa_proc = curproc; + spa->spa_did = curthread->t_did; + + spa_create_zio_taskqs(spa); + + mutex_enter(&spa->spa_proc_lock); + ASSERT(spa->spa_proc_state == SPA_PROC_CREATED); + + spa->spa_proc_state = SPA_PROC_ACTIVE; + cv_broadcast(&spa->spa_proc_cv); + + CALLB_CPR_SAFE_BEGIN(&cprinfo); + while (spa->spa_proc_state == SPA_PROC_ACTIVE) + cv_wait(&spa->spa_proc_cv, &spa->spa_proc_lock); + CALLB_CPR_SAFE_END(&cprinfo, &spa->spa_proc_lock); + + ASSERT(spa->spa_proc_state == SPA_PROC_DEACTIVATE); + spa->spa_proc_state = SPA_PROC_GONE; + spa->spa_proc = &p0; + cv_broadcast(&spa->spa_proc_cv); + CALLB_CPR_EXIT(&cprinfo); /* drops spa_proc_lock */ + + mutex_enter(&curproc->p_lock); + lwp_exit(); +} +#endif + +/* + * Activate an uninitialized pool. + */ +static void +spa_activate(spa_t *spa, int mode) +{ + ASSERT(spa->spa_state == POOL_STATE_UNINITIALIZED); + + spa->spa_state = POOL_STATE_ACTIVE; + spa->spa_mode = mode; + + spa->spa_normal_class = metaslab_class_create(spa, zfs_metaslab_ops); + spa->spa_log_class = metaslab_class_create(spa, zfs_metaslab_ops); + + /* Try to create a covering process */ + mutex_enter(&spa->spa_proc_lock); + ASSERT(spa->spa_proc_state == SPA_PROC_NONE); + ASSERT(spa->spa_proc == &p0); + spa->spa_did = 0; + +#ifdef HAVE_SPA_THREAD + /* Only create a process if we're going to be around a while. */ + if (spa_create_process && strcmp(spa->spa_name, TRYIMPORT_NAME) != 0) { + if (newproc(spa_thread, (caddr_t)spa, syscid, maxclsyspri, + NULL, 0) == 0) { + spa->spa_proc_state = SPA_PROC_CREATED; + while (spa->spa_proc_state == SPA_PROC_CREATED) { + cv_wait(&spa->spa_proc_cv, + &spa->spa_proc_lock); + } + ASSERT(spa->spa_proc_state == SPA_PROC_ACTIVE); + ASSERT(spa->spa_proc != &p0); + ASSERT(spa->spa_did != 0); + } else { +#ifdef _KERNEL + cmn_err(CE_WARN, + "Couldn't create process for zfs pool \"%s\"\n", + spa->spa_name); +#endif + } + } +#endif /* HAVE_SPA_THREAD */ + mutex_exit(&spa->spa_proc_lock); + + /* If we didn't create a process, we need to create our taskqs. */ + if (spa->spa_proc == &p0) { + spa_create_zio_taskqs(spa); + } + + list_create(&spa->spa_config_dirty_list, sizeof (vdev_t), + offsetof(vdev_t, vdev_config_dirty_node)); + list_create(&spa->spa_evicting_os_list, sizeof (objset_t), + offsetof(objset_t, os_evicting_node)); + list_create(&spa->spa_state_dirty_list, sizeof (vdev_t), + offsetof(vdev_t, vdev_state_dirty_node)); + + txg_list_create(&spa->spa_vdev_txg_list, + offsetof(struct vdev, vdev_txg_node)); + + avl_create(&spa->spa_errlist_scrub, + spa_error_entry_compare, sizeof (spa_error_entry_t), + offsetof(spa_error_entry_t, se_avl)); + avl_create(&spa->spa_errlist_last, + spa_error_entry_compare, sizeof (spa_error_entry_t), + offsetof(spa_error_entry_t, se_avl)); +} + +/* + * Opposite of spa_activate(). + */ +static void +spa_deactivate(spa_t *spa) +{ + int t, q; + + ASSERT(spa->spa_sync_on == B_FALSE); + ASSERT(spa->spa_dsl_pool == NULL); + ASSERT(spa->spa_root_vdev == NULL); + ASSERT(spa->spa_async_zio_root == NULL); + ASSERT(spa->spa_state != POOL_STATE_UNINITIALIZED); + + spa_evicting_os_wait(spa); + + txg_list_destroy(&spa->spa_vdev_txg_list); + + list_destroy(&spa->spa_config_dirty_list); + list_destroy(&spa->spa_evicting_os_list); + list_destroy(&spa->spa_state_dirty_list); + + taskq_cancel_id(system_taskq, spa->spa_deadman_tqid); + + for (t = 0; t < ZIO_TYPES; t++) { + for (q = 0; q < ZIO_TASKQ_TYPES; q++) { + spa_taskqs_fini(spa, t, q); + } + } + + metaslab_class_destroy(spa->spa_normal_class); + spa->spa_normal_class = NULL; + + metaslab_class_destroy(spa->spa_log_class); + spa->spa_log_class = NULL; + + /* + * If this was part of an import or the open otherwise failed, we may + * still have errors left in the queues. Empty them just in case. + */ + spa_errlog_drain(spa); + + avl_destroy(&spa->spa_errlist_scrub); + avl_destroy(&spa->spa_errlist_last); + + spa->spa_state = POOL_STATE_UNINITIALIZED; + + mutex_enter(&spa->spa_proc_lock); + if (spa->spa_proc_state != SPA_PROC_NONE) { + ASSERT(spa->spa_proc_state == SPA_PROC_ACTIVE); + spa->spa_proc_state = SPA_PROC_DEACTIVATE; + cv_broadcast(&spa->spa_proc_cv); + while (spa->spa_proc_state == SPA_PROC_DEACTIVATE) { + ASSERT(spa->spa_proc != &p0); + cv_wait(&spa->spa_proc_cv, &spa->spa_proc_lock); + } + ASSERT(spa->spa_proc_state == SPA_PROC_GONE); + spa->spa_proc_state = SPA_PROC_NONE; + } + ASSERT(spa->spa_proc == &p0); + mutex_exit(&spa->spa_proc_lock); + + /* + * We want to make sure spa_thread() has actually exited the ZFS + * module, so that the module can't be unloaded out from underneath + * it. + */ + if (spa->spa_did != 0) { + thread_join(spa->spa_did); + spa->spa_did = 0; + } +} + +/* + * Verify a pool configuration, and construct the vdev tree appropriately. This + * will create all the necessary vdevs in the appropriate layout, with each vdev + * in the CLOSED state. This will prep the pool before open/creation/import. + * All vdev validation is done by the vdev_alloc() routine. + */ +static int +spa_config_parse(spa_t *spa, vdev_t **vdp, nvlist_t *nv, vdev_t *parent, + uint_t id, int atype) +{ + nvlist_t **child; + uint_t children; + int error; + int c; + + if ((error = vdev_alloc(spa, vdp, nv, parent, id, atype)) != 0) + return (error); + + if ((*vdp)->vdev_ops->vdev_op_leaf) + return (0); + + error = nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, + &child, &children); + + if (error == ENOENT) + return (0); + + if (error) { + vdev_free(*vdp); + *vdp = NULL; + return (SET_ERROR(EINVAL)); + } + + for (c = 0; c < children; c++) { + vdev_t *vd; + if ((error = spa_config_parse(spa, &vd, child[c], *vdp, c, + atype)) != 0) { + vdev_free(*vdp); + *vdp = NULL; + return (error); + } + } + + ASSERT(*vdp != NULL); + + return (0); +} + +/* + * Opposite of spa_load(). + */ +static void +spa_unload(spa_t *spa) +{ + int i; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + /* + * Stop async tasks. + */ + spa_async_suspend(spa); + + /* + * Stop syncing. + */ + if (spa->spa_sync_on) { + txg_sync_stop(spa->spa_dsl_pool); + spa->spa_sync_on = B_FALSE; + } + + /* + * Wait for any outstanding async I/O to complete. + */ + if (spa->spa_async_zio_root != NULL) { + for (i = 0; i < max_ncpus; i++) + (void) zio_wait(spa->spa_async_zio_root[i]); + kmem_free(spa->spa_async_zio_root, max_ncpus * sizeof (void *)); + spa->spa_async_zio_root = NULL; + } + + bpobj_close(&spa->spa_deferred_bpobj); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + /* + * Close all vdevs. + */ + if (spa->spa_root_vdev) + vdev_free(spa->spa_root_vdev); + ASSERT(spa->spa_root_vdev == NULL); + + /* + * Close the dsl pool. + */ + if (spa->spa_dsl_pool) { + dsl_pool_close(spa->spa_dsl_pool); + spa->spa_dsl_pool = NULL; + spa->spa_meta_objset = NULL; + } + + ddt_unload(spa); + + + /* + * Drop and purge level 2 cache + */ + spa_l2cache_drop(spa); + + for (i = 0; i < spa->spa_spares.sav_count; i++) + vdev_free(spa->spa_spares.sav_vdevs[i]); + if (spa->spa_spares.sav_vdevs) { + kmem_free(spa->spa_spares.sav_vdevs, + spa->spa_spares.sav_count * sizeof (void *)); + spa->spa_spares.sav_vdevs = NULL; + } + if (spa->spa_spares.sav_config) { + nvlist_free(spa->spa_spares.sav_config); + spa->spa_spares.sav_config = NULL; + } + spa->spa_spares.sav_count = 0; + + for (i = 0; i < spa->spa_l2cache.sav_count; i++) { + vdev_clear_stats(spa->spa_l2cache.sav_vdevs[i]); + vdev_free(spa->spa_l2cache.sav_vdevs[i]); + } + if (spa->spa_l2cache.sav_vdevs) { + kmem_free(spa->spa_l2cache.sav_vdevs, + spa->spa_l2cache.sav_count * sizeof (void *)); + spa->spa_l2cache.sav_vdevs = NULL; + } + if (spa->spa_l2cache.sav_config) { + nvlist_free(spa->spa_l2cache.sav_config); + spa->spa_l2cache.sav_config = NULL; + } + spa->spa_l2cache.sav_count = 0; + + spa->spa_async_suspended = 0; + + if (spa->spa_comment != NULL) { + spa_strfree(spa->spa_comment); + spa->spa_comment = NULL; + } + + spa_config_exit(spa, SCL_ALL, FTAG); +} + +/* + * Load (or re-load) the current list of vdevs describing the active spares for + * this pool. When this is called, we have some form of basic information in + * 'spa_spares.sav_config'. We parse this into vdevs, try to open them, and + * then re-generate a more complete list including status information. + */ +static void +spa_load_spares(spa_t *spa) +{ + nvlist_t **spares; + uint_t nspares; + int i; + vdev_t *vd, *tvd; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + /* + * First, close and free any existing spare vdevs. + */ + for (i = 0; i < spa->spa_spares.sav_count; i++) { + vd = spa->spa_spares.sav_vdevs[i]; + + /* Undo the call to spa_activate() below */ + if ((tvd = spa_lookup_by_guid(spa, vd->vdev_guid, + B_FALSE)) != NULL && tvd->vdev_isspare) + spa_spare_remove(tvd); + vdev_close(vd); + vdev_free(vd); + } + + if (spa->spa_spares.sav_vdevs) + kmem_free(spa->spa_spares.sav_vdevs, + spa->spa_spares.sav_count * sizeof (void *)); + + if (spa->spa_spares.sav_config == NULL) + nspares = 0; + else + VERIFY(nvlist_lookup_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0); + + spa->spa_spares.sav_count = (int)nspares; + spa->spa_spares.sav_vdevs = NULL; + + if (nspares == 0) + return; + + /* + * Construct the array of vdevs, opening them to get status in the + * process. For each spare, there is potentially two different vdev_t + * structures associated with it: one in the list of spares (used only + * for basic validation purposes) and one in the active vdev + * configuration (if it's spared in). During this phase we open and + * validate each vdev on the spare list. If the vdev also exists in the + * active configuration, then we also mark this vdev as an active spare. + */ + spa->spa_spares.sav_vdevs = kmem_zalloc(nspares * sizeof (void *), + KM_SLEEP); + for (i = 0; i < spa->spa_spares.sav_count; i++) { + VERIFY(spa_config_parse(spa, &vd, spares[i], NULL, 0, + VDEV_ALLOC_SPARE) == 0); + ASSERT(vd != NULL); + + spa->spa_spares.sav_vdevs[i] = vd; + + if ((tvd = spa_lookup_by_guid(spa, vd->vdev_guid, + B_FALSE)) != NULL) { + if (!tvd->vdev_isspare) + spa_spare_add(tvd); + + /* + * We only mark the spare active if we were successfully + * able to load the vdev. Otherwise, importing a pool + * with a bad active spare would result in strange + * behavior, because multiple pool would think the spare + * is actively in use. + * + * There is a vulnerability here to an equally bizarre + * circumstance, where a dead active spare is later + * brought back to life (onlined or otherwise). Given + * the rarity of this scenario, and the extra complexity + * it adds, we ignore the possibility. + */ + if (!vdev_is_dead(tvd)) + spa_spare_activate(tvd); + } + + vd->vdev_top = vd; + vd->vdev_aux = &spa->spa_spares; + + if (vdev_open(vd) != 0) + continue; + + if (vdev_validate_aux(vd) == 0) + spa_spare_add(vd); + } + + /* + * Recompute the stashed list of spares, with status information + * this time. + */ + VERIFY(nvlist_remove(spa->spa_spares.sav_config, ZPOOL_CONFIG_SPARES, + DATA_TYPE_NVLIST_ARRAY) == 0); + + spares = kmem_alloc(spa->spa_spares.sav_count * sizeof (void *), + KM_SLEEP); + for (i = 0; i < spa->spa_spares.sav_count; i++) + spares[i] = vdev_config_generate(spa, + spa->spa_spares.sav_vdevs[i], B_TRUE, VDEV_CONFIG_SPARE); + VERIFY(nvlist_add_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, spares, spa->spa_spares.sav_count) == 0); + for (i = 0; i < spa->spa_spares.sav_count; i++) + nvlist_free(spares[i]); + kmem_free(spares, spa->spa_spares.sav_count * sizeof (void *)); +} + +/* + * Load (or re-load) the current list of vdevs describing the active l2cache for + * this pool. When this is called, we have some form of basic information in + * 'spa_l2cache.sav_config'. We parse this into vdevs, try to open them, and + * then re-generate a more complete list including status information. + * Devices which are already active have their details maintained, and are + * not re-opened. + */ +static void +spa_load_l2cache(spa_t *spa) +{ + nvlist_t **l2cache; + uint_t nl2cache; + int i, j, oldnvdevs; + uint64_t guid; + vdev_t *vd, **oldvdevs, **newvdevs; + spa_aux_vdev_t *sav = &spa->spa_l2cache; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + if (sav->sav_config != NULL) { + VERIFY(nvlist_lookup_nvlist_array(sav->sav_config, + ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0); + newvdevs = kmem_alloc(nl2cache * sizeof (void *), KM_SLEEP); + } else { + nl2cache = 0; + newvdevs = NULL; + } + + oldvdevs = sav->sav_vdevs; + oldnvdevs = sav->sav_count; + sav->sav_vdevs = NULL; + sav->sav_count = 0; + + /* + * Process new nvlist of vdevs. + */ + for (i = 0; i < nl2cache; i++) { + VERIFY(nvlist_lookup_uint64(l2cache[i], ZPOOL_CONFIG_GUID, + &guid) == 0); + + newvdevs[i] = NULL; + for (j = 0; j < oldnvdevs; j++) { + vd = oldvdevs[j]; + if (vd != NULL && guid == vd->vdev_guid) { + /* + * Retain previous vdev for add/remove ops. + */ + newvdevs[i] = vd; + oldvdevs[j] = NULL; + break; + } + } + + if (newvdevs[i] == NULL) { + /* + * Create new vdev + */ + VERIFY(spa_config_parse(spa, &vd, l2cache[i], NULL, 0, + VDEV_ALLOC_L2CACHE) == 0); + ASSERT(vd != NULL); + newvdevs[i] = vd; + + /* + * Commit this vdev as an l2cache device, + * even if it fails to open. + */ + spa_l2cache_add(vd); + + vd->vdev_top = vd; + vd->vdev_aux = sav; + + spa_l2cache_activate(vd); + + if (vdev_open(vd) != 0) + continue; + + (void) vdev_validate_aux(vd); + + if (!vdev_is_dead(vd)) + l2arc_add_vdev(spa, vd); + } + } + + /* + * Purge vdevs that were dropped + */ + for (i = 0; i < oldnvdevs; i++) { + uint64_t pool; + + vd = oldvdevs[i]; + if (vd != NULL) { + ASSERT(vd->vdev_isl2cache); + + if (spa_l2cache_exists(vd->vdev_guid, &pool) && + pool != 0ULL && l2arc_vdev_present(vd)) + l2arc_remove_vdev(vd); + vdev_clear_stats(vd); + vdev_free(vd); + } + } + + if (oldvdevs) + kmem_free(oldvdevs, oldnvdevs * sizeof (void *)); + + if (sav->sav_config == NULL) + goto out; + + sav->sav_vdevs = newvdevs; + sav->sav_count = (int)nl2cache; + + /* + * Recompute the stashed list of l2cache devices, with status + * information this time. + */ + VERIFY(nvlist_remove(sav->sav_config, ZPOOL_CONFIG_L2CACHE, + DATA_TYPE_NVLIST_ARRAY) == 0); + + l2cache = kmem_alloc(sav->sav_count * sizeof (void *), KM_SLEEP); + for (i = 0; i < sav->sav_count; i++) + l2cache[i] = vdev_config_generate(spa, + sav->sav_vdevs[i], B_TRUE, VDEV_CONFIG_L2CACHE); + VERIFY(nvlist_add_nvlist_array(sav->sav_config, + ZPOOL_CONFIG_L2CACHE, l2cache, sav->sav_count) == 0); +out: + for (i = 0; i < sav->sav_count; i++) + nvlist_free(l2cache[i]); + if (sav->sav_count) + kmem_free(l2cache, sav->sav_count * sizeof (void *)); +} + +static int +load_nvlist(spa_t *spa, uint64_t obj, nvlist_t **value) +{ + dmu_buf_t *db; + char *packed = NULL; + size_t nvsize = 0; + int error; + *value = NULL; + + error = dmu_bonus_hold(spa->spa_meta_objset, obj, FTAG, &db); + if (error) + return (error); + + nvsize = *(uint64_t *)db->db_data; + dmu_buf_rele(db, FTAG); + + packed = vmem_alloc(nvsize, KM_SLEEP); + error = dmu_read(spa->spa_meta_objset, obj, 0, nvsize, packed, + DMU_READ_PREFETCH); + if (error == 0) + error = nvlist_unpack(packed, nvsize, value, 0); + vmem_free(packed, nvsize); + + return (error); +} + +/* + * Checks to see if the given vdev could not be opened, in which case we post a + * sysevent to notify the autoreplace code that the device has been removed. + */ +static void +spa_check_removed(vdev_t *vd) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + spa_check_removed(vd->vdev_child[c]); + + if (vd->vdev_ops->vdev_op_leaf && vdev_is_dead(vd) && + !vd->vdev_ishole) { + zfs_ereport_post(FM_EREPORT_RESOURCE_AUTOREPLACE, + vd->vdev_spa, vd, NULL, 0, 0); + spa_event_notify(vd->vdev_spa, vd, FM_EREPORT_ZFS_DEVICE_CHECK); + } +} + +/* + * Validate the current config against the MOS config + */ +static boolean_t +spa_config_valid(spa_t *spa, nvlist_t *config) +{ + vdev_t *mrvd, *rvd = spa->spa_root_vdev; + nvlist_t *nv; + int c, i; + + VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nv) == 0); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + VERIFY(spa_config_parse(spa, &mrvd, nv, NULL, 0, VDEV_ALLOC_LOAD) == 0); + + ASSERT3U(rvd->vdev_children, ==, mrvd->vdev_children); + + /* + * If we're doing a normal import, then build up any additional + * diagnostic information about missing devices in this config. + * We'll pass this up to the user for further processing. + */ + if (!(spa->spa_import_flags & ZFS_IMPORT_MISSING_LOG)) { + nvlist_t **child, *nv; + uint64_t idx = 0; + + child = kmem_alloc(rvd->vdev_children * sizeof (nvlist_t **), + KM_SLEEP); + VERIFY(nvlist_alloc(&nv, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + vdev_t *mtvd = mrvd->vdev_child[c]; + + if (tvd->vdev_ops == &vdev_missing_ops && + mtvd->vdev_ops != &vdev_missing_ops && + mtvd->vdev_islog) + child[idx++] = vdev_config_generate(spa, mtvd, + B_FALSE, 0); + } + + if (idx) { + VERIFY(nvlist_add_nvlist_array(nv, + ZPOOL_CONFIG_CHILDREN, child, idx) == 0); + VERIFY(nvlist_add_nvlist(spa->spa_load_info, + ZPOOL_CONFIG_MISSING_DEVICES, nv) == 0); + + for (i = 0; i < idx; i++) + nvlist_free(child[i]); + } + nvlist_free(nv); + kmem_free(child, rvd->vdev_children * sizeof (char **)); + } + + /* + * Compare the root vdev tree with the information we have + * from the MOS config (mrvd). Check each top-level vdev + * with the corresponding MOS config top-level (mtvd). + */ + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + vdev_t *mtvd = mrvd->vdev_child[c]; + + /* + * Resolve any "missing" vdevs in the current configuration. + * If we find that the MOS config has more accurate information + * about the top-level vdev then use that vdev instead. + */ + if (tvd->vdev_ops == &vdev_missing_ops && + mtvd->vdev_ops != &vdev_missing_ops) { + + if (!(spa->spa_import_flags & ZFS_IMPORT_MISSING_LOG)) + continue; + + /* + * Device specific actions. + */ + if (mtvd->vdev_islog) { + spa_set_log_state(spa, SPA_LOG_CLEAR); + } else { + /* + * XXX - once we have 'readonly' pool + * support we should be able to handle + * missing data devices by transitioning + * the pool to readonly. + */ + continue; + } + + /* + * Swap the missing vdev with the data we were + * able to obtain from the MOS config. + */ + vdev_remove_child(rvd, tvd); + vdev_remove_child(mrvd, mtvd); + + vdev_add_child(rvd, mtvd); + vdev_add_child(mrvd, tvd); + + spa_config_exit(spa, SCL_ALL, FTAG); + vdev_load(mtvd); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + vdev_reopen(rvd); + } else if (mtvd->vdev_islog) { + /* + * Load the slog device's state from the MOS config + * since it's possible that the label does not + * contain the most up-to-date information. + */ + vdev_load_log_state(tvd, mtvd); + vdev_reopen(tvd); + } + } + vdev_free(mrvd); + spa_config_exit(spa, SCL_ALL, FTAG); + + /* + * Ensure we were able to validate the config. + */ + return (rvd->vdev_guid_sum == spa->spa_uberblock.ub_guid_sum); +} + +/* + * Check for missing log devices + */ +static boolean_t +spa_check_logs(spa_t *spa) +{ + boolean_t rv = B_FALSE; + dsl_pool_t *dp = spa_get_dsl(spa); + + switch (spa->spa_log_state) { + default: + break; + case SPA_LOG_MISSING: + /* need to recheck in case slog has been restored */ + case SPA_LOG_UNKNOWN: + rv = (dmu_objset_find_dp(dp, dp->dp_root_dir_obj, + zil_check_log_chain, NULL, DS_FIND_CHILDREN) != 0); + if (rv) + spa_set_log_state(spa, SPA_LOG_MISSING); + break; + } + return (rv); +} + +static boolean_t +spa_passivate_log(spa_t *spa) +{ + vdev_t *rvd = spa->spa_root_vdev; + boolean_t slog_found = B_FALSE; + int c; + + ASSERT(spa_config_held(spa, SCL_ALLOC, RW_WRITER)); + + if (!spa_has_slogs(spa)) + return (B_FALSE); + + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + metaslab_group_t *mg = tvd->vdev_mg; + + if (tvd->vdev_islog) { + metaslab_group_passivate(mg); + slog_found = B_TRUE; + } + } + + return (slog_found); +} + +static void +spa_activate_log(spa_t *spa) +{ + vdev_t *rvd = spa->spa_root_vdev; + int c; + + ASSERT(spa_config_held(spa, SCL_ALLOC, RW_WRITER)); + + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + metaslab_group_t *mg = tvd->vdev_mg; + + if (tvd->vdev_islog) + metaslab_group_activate(mg); + } +} + +int +spa_offline_log(spa_t *spa) +{ + int error; + + error = dmu_objset_find(spa_name(spa), zil_vdev_offline, + NULL, DS_FIND_CHILDREN); + if (error == 0) { + /* + * We successfully offlined the log device, sync out the + * current txg so that the "stubby" block can be removed + * by zil_sync(). + */ + txg_wait_synced(spa->spa_dsl_pool, 0); + } + return (error); +} + +static void +spa_aux_check_removed(spa_aux_vdev_t *sav) +{ + int i; + + for (i = 0; i < sav->sav_count; i++) + spa_check_removed(sav->sav_vdevs[i]); +} + +void +spa_claim_notify(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + + if (zio->io_error) + return; + + mutex_enter(&spa->spa_props_lock); /* any mutex will do */ + if (spa->spa_claim_max_txg < zio->io_bp->blk_birth) + spa->spa_claim_max_txg = zio->io_bp->blk_birth; + mutex_exit(&spa->spa_props_lock); +} + +typedef struct spa_load_error { + uint64_t sle_meta_count; + uint64_t sle_data_count; +} spa_load_error_t; + +static void +spa_load_verify_done(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + spa_load_error_t *sle = zio->io_private; + dmu_object_type_t type = BP_GET_TYPE(bp); + int error = zio->io_error; + spa_t *spa = zio->io_spa; + + if (error) { + if ((BP_GET_LEVEL(bp) != 0 || DMU_OT_IS_METADATA(type)) && + type != DMU_OT_INTENT_LOG) + atomic_add_64(&sle->sle_meta_count, 1); + else + atomic_add_64(&sle->sle_data_count, 1); + } + zio_data_buf_free(zio->io_data, zio->io_size); + + mutex_enter(&spa->spa_scrub_lock); + spa->spa_scrub_inflight--; + cv_broadcast(&spa->spa_scrub_io_cv); + mutex_exit(&spa->spa_scrub_lock); +} + +/* + * Maximum number of concurrent scrub i/os to create while verifying + * a pool while importing it. + */ +int spa_load_verify_maxinflight = 10000; +int spa_load_verify_metadata = B_TRUE; +int spa_load_verify_data = B_TRUE; + +/*ARGSUSED*/ +static int +spa_load_verify_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, + const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) +{ + zio_t *rio; + size_t size; + void *data; + + if (BP_IS_HOLE(bp) || BP_IS_EMBEDDED(bp)) + return (0); + /* + * Note: normally this routine will not be called if + * spa_load_verify_metadata is not set. However, it may be useful + * to manually set the flag after the traversal has begun. + */ + if (!spa_load_verify_metadata) + return (0); + if (BP_GET_BUFC_TYPE(bp) == ARC_BUFC_DATA && !spa_load_verify_data) + return (0); + + rio = arg; + size = BP_GET_PSIZE(bp); + data = zio_data_buf_alloc(size); + + mutex_enter(&spa->spa_scrub_lock); + while (spa->spa_scrub_inflight >= spa_load_verify_maxinflight) + cv_wait(&spa->spa_scrub_io_cv, &spa->spa_scrub_lock); + spa->spa_scrub_inflight++; + mutex_exit(&spa->spa_scrub_lock); + + zio_nowait(zio_read(rio, spa, bp, data, size, + spa_load_verify_done, rio->io_private, ZIO_PRIORITY_SCRUB, + ZIO_FLAG_SPECULATIVE | ZIO_FLAG_CANFAIL | + ZIO_FLAG_SCRUB | ZIO_FLAG_RAW, zb)); + return (0); +} + +static int +spa_load_verify(spa_t *spa) +{ + zio_t *rio; + spa_load_error_t sle = { 0 }; + zpool_rewind_policy_t policy; + boolean_t verify_ok = B_FALSE; + int error = 0; + + zpool_get_rewind_policy(spa->spa_config, &policy); + + if (policy.zrp_request & ZPOOL_NEVER_REWIND) + return (0); + + rio = zio_root(spa, NULL, &sle, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE); + + if (spa_load_verify_metadata) { + error = traverse_pool(spa, spa->spa_verify_min_txg, + TRAVERSE_PRE | TRAVERSE_PREFETCH_METADATA, + spa_load_verify_cb, rio); + } + + (void) zio_wait(rio); + + spa->spa_load_meta_errors = sle.sle_meta_count; + spa->spa_load_data_errors = sle.sle_data_count; + + if (!error && sle.sle_meta_count <= policy.zrp_maxmeta && + sle.sle_data_count <= policy.zrp_maxdata) { + int64_t loss = 0; + + verify_ok = B_TRUE; + spa->spa_load_txg = spa->spa_uberblock.ub_txg; + spa->spa_load_txg_ts = spa->spa_uberblock.ub_timestamp; + + loss = spa->spa_last_ubsync_txg_ts - spa->spa_load_txg_ts; + VERIFY(nvlist_add_uint64(spa->spa_load_info, + ZPOOL_CONFIG_LOAD_TIME, spa->spa_load_txg_ts) == 0); + VERIFY(nvlist_add_int64(spa->spa_load_info, + ZPOOL_CONFIG_REWIND_TIME, loss) == 0); + VERIFY(nvlist_add_uint64(spa->spa_load_info, + ZPOOL_CONFIG_LOAD_DATA_ERRORS, sle.sle_data_count) == 0); + } else { + spa->spa_load_max_txg = spa->spa_uberblock.ub_txg; + } + + if (error) { + if (error != ENXIO && error != EIO) + error = SET_ERROR(EIO); + return (error); + } + + return (verify_ok ? 0 : EIO); +} + +/* + * Find a value in the pool props object. + */ +static void +spa_prop_find(spa_t *spa, zpool_prop_t prop, uint64_t *val) +{ + (void) zap_lookup(spa->spa_meta_objset, spa->spa_pool_props_object, + zpool_prop_to_name(prop), sizeof (uint64_t), 1, val); +} + +/* + * Find a value in the pool directory object. + */ +static int +spa_dir_prop(spa_t *spa, const char *name, uint64_t *val) +{ + return (zap_lookup(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + name, sizeof (uint64_t), 1, val)); +} + +static int +spa_vdev_err(vdev_t *vdev, vdev_aux_t aux, int err) +{ + vdev_set_state(vdev, B_TRUE, VDEV_STATE_CANT_OPEN, aux); + return (err); +} + +/* + * Fix up config after a partly-completed split. This is done with the + * ZPOOL_CONFIG_SPLIT nvlist. Both the splitting pool and the split-off + * pool have that entry in their config, but only the splitting one contains + * a list of all the guids of the vdevs that are being split off. + * + * This function determines what to do with that list: either rejoin + * all the disks to the pool, or complete the splitting process. To attempt + * the rejoin, each disk that is offlined is marked online again, and + * we do a reopen() call. If the vdev label for every disk that was + * marked online indicates it was successfully split off (VDEV_AUX_SPLIT_POOL) + * then we call vdev_split() on each disk, and complete the split. + * + * Otherwise we leave the config alone, with all the vdevs in place in + * the original pool. + */ +static void +spa_try_repair(spa_t *spa, nvlist_t *config) +{ + uint_t extracted; + uint64_t *glist; + uint_t i, gcount; + nvlist_t *nvl; + vdev_t **vd; + boolean_t attempt_reopen; + + if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_SPLIT, &nvl) != 0) + return; + + /* check that the config is complete */ + if (nvlist_lookup_uint64_array(nvl, ZPOOL_CONFIG_SPLIT_LIST, + &glist, &gcount) != 0) + return; + + vd = kmem_zalloc(gcount * sizeof (vdev_t *), KM_SLEEP); + + /* attempt to online all the vdevs & validate */ + attempt_reopen = B_TRUE; + for (i = 0; i < gcount; i++) { + if (glist[i] == 0) /* vdev is hole */ + continue; + + vd[i] = spa_lookup_by_guid(spa, glist[i], B_FALSE); + if (vd[i] == NULL) { + /* + * Don't bother attempting to reopen the disks; + * just do the split. + */ + attempt_reopen = B_FALSE; + } else { + /* attempt to re-online it */ + vd[i]->vdev_offline = B_FALSE; + } + } + + if (attempt_reopen) { + vdev_reopen(spa->spa_root_vdev); + + /* check each device to see what state it's in */ + for (extracted = 0, i = 0; i < gcount; i++) { + if (vd[i] != NULL && + vd[i]->vdev_stat.vs_aux != VDEV_AUX_SPLIT_POOL) + break; + ++extracted; + } + } + + /* + * If every disk has been moved to the new pool, or if we never + * even attempted to look at them, then we split them off for + * good. + */ + if (!attempt_reopen || gcount == extracted) { + for (i = 0; i < gcount; i++) + if (vd[i] != NULL) + vdev_split(vd[i]); + vdev_reopen(spa->spa_root_vdev); + } + + kmem_free(vd, gcount * sizeof (vdev_t *)); +} + +static int +spa_load(spa_t *spa, spa_load_state_t state, spa_import_type_t type, + boolean_t mosconfig) +{ + nvlist_t *config = spa->spa_config; + char *ereport = FM_EREPORT_ZFS_POOL; + char *comment; + int error; + uint64_t pool_guid; + nvlist_t *nvl; + + if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &pool_guid)) + return (SET_ERROR(EINVAL)); + + ASSERT(spa->spa_comment == NULL); + if (nvlist_lookup_string(config, ZPOOL_CONFIG_COMMENT, &comment) == 0) + spa->spa_comment = spa_strdup(comment); + + /* + * Versioning wasn't explicitly added to the label until later, so if + * it's not present treat it as the initial version. + */ + if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, + &spa->spa_ubsync.ub_version) != 0) + spa->spa_ubsync.ub_version = SPA_VERSION_INITIAL; + + (void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG, + &spa->spa_config_txg); + + if ((state == SPA_LOAD_IMPORT || state == SPA_LOAD_TRYIMPORT) && + spa_guid_exists(pool_guid, 0)) { + error = SET_ERROR(EEXIST); + } else { + spa->spa_config_guid = pool_guid; + + if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_SPLIT, + &nvl) == 0) { + VERIFY(nvlist_dup(nvl, &spa->spa_config_splitting, + KM_SLEEP) == 0); + } + + nvlist_free(spa->spa_load_info); + spa->spa_load_info = fnvlist_alloc(); + + gethrestime(&spa->spa_loaded_ts); + error = spa_load_impl(spa, pool_guid, config, state, type, + mosconfig, &ereport); + } + + /* + * Don't count references from objsets that are already closed + * and are making their way through the eviction process. + */ + spa_evicting_os_wait(spa); + spa->spa_minref = refcount_count(&spa->spa_refcount); + if (error) { + if (error != EEXIST) { + spa->spa_loaded_ts.tv_sec = 0; + spa->spa_loaded_ts.tv_nsec = 0; + } + if (error != EBADF) { + zfs_ereport_post(ereport, spa, NULL, NULL, 0, 0); + } + } + spa->spa_load_state = error ? SPA_LOAD_ERROR : SPA_LOAD_NONE; + spa->spa_ena = 0; + + return (error); +} + +/* + * Load an existing storage pool, using the pool's builtin spa_config as a + * source of configuration information. + */ +__attribute__((always_inline)) +static inline int +spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config, + spa_load_state_t state, spa_import_type_t type, boolean_t mosconfig, + char **ereport) +{ + int error = 0; + nvlist_t *nvroot = NULL; + nvlist_t *label; + vdev_t *rvd; + uberblock_t *ub = &spa->spa_uberblock; + uint64_t children, config_cache_txg = spa->spa_config_txg; + int orig_mode = spa->spa_mode; + int parse, i; + uint64_t obj; + boolean_t missing_feat_write = B_FALSE; + + /* + * If this is an untrusted config, access the pool in read-only mode. + * This prevents things like resilvering recently removed devices. + */ + if (!mosconfig) + spa->spa_mode = FREAD; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + spa->spa_load_state = state; + + if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvroot)) + return (SET_ERROR(EINVAL)); + + parse = (type == SPA_IMPORT_EXISTING ? + VDEV_ALLOC_LOAD : VDEV_ALLOC_SPLIT); + + /* + * Create "The Godfather" zio to hold all async IOs + */ + spa->spa_async_zio_root = kmem_alloc(max_ncpus * sizeof (void *), + KM_SLEEP); + for (i = 0; i < max_ncpus; i++) { + spa->spa_async_zio_root[i] = zio_root(spa, NULL, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE | + ZIO_FLAG_GODFATHER); + } + + /* + * Parse the configuration into a vdev tree. We explicitly set the + * value that will be returned by spa_version() since parsing the + * configuration requires knowing the version number. + */ + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + error = spa_config_parse(spa, &rvd, nvroot, NULL, 0, parse); + spa_config_exit(spa, SCL_ALL, FTAG); + + if (error != 0) + return (error); + + ASSERT(spa->spa_root_vdev == rvd); + ASSERT3U(spa->spa_min_ashift, >=, SPA_MINBLOCKSHIFT); + ASSERT3U(spa->spa_max_ashift, <=, SPA_MAXBLOCKSHIFT); + + if (type != SPA_IMPORT_ASSEMBLE) { + ASSERT(spa_guid(spa) == pool_guid); + } + + /* + * Try to open all vdevs, loading each label in the process. + */ + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + error = vdev_open(rvd); + spa_config_exit(spa, SCL_ALL, FTAG); + if (error != 0) + return (error); + + /* + * We need to validate the vdev labels against the configuration that + * we have in hand, which is dependent on the setting of mosconfig. If + * mosconfig is true then we're validating the vdev labels based on + * that config. Otherwise, we're validating against the cached config + * (zpool.cache) that was read when we loaded the zfs module, and then + * later we will recursively call spa_load() and validate against + * the vdev config. + * + * If we're assembling a new pool that's been split off from an + * existing pool, the labels haven't yet been updated so we skip + * validation for now. + */ + if (type != SPA_IMPORT_ASSEMBLE) { + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + error = vdev_validate(rvd, mosconfig); + spa_config_exit(spa, SCL_ALL, FTAG); + + if (error != 0) + return (error); + + if (rvd->vdev_state <= VDEV_STATE_CANT_OPEN) + return (SET_ERROR(ENXIO)); + } + + /* + * Find the best uberblock. + */ + vdev_uberblock_load(rvd, ub, &label); + + /* + * If we weren't able to find a single valid uberblock, return failure. + */ + if (ub->ub_txg == 0) { + nvlist_free(label); + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, ENXIO)); + } + + /* + * If the pool has an unsupported version we can't open it. + */ + if (!SPA_VERSION_IS_SUPPORTED(ub->ub_version)) { + nvlist_free(label); + return (spa_vdev_err(rvd, VDEV_AUX_VERSION_NEWER, ENOTSUP)); + } + + if (ub->ub_version >= SPA_VERSION_FEATURES) { + nvlist_t *features; + + /* + * If we weren't able to find what's necessary for reading the + * MOS in the label, return failure. + */ + if (label == NULL || nvlist_lookup_nvlist(label, + ZPOOL_CONFIG_FEATURES_FOR_READ, &features) != 0) { + nvlist_free(label); + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, + ENXIO)); + } + + /* + * Update our in-core representation with the definitive values + * from the label. + */ + nvlist_free(spa->spa_label_features); + VERIFY(nvlist_dup(features, &spa->spa_label_features, 0) == 0); + } + + nvlist_free(label); + + /* + * Look through entries in the label nvlist's features_for_read. If + * there is a feature listed there which we don't understand then we + * cannot open a pool. + */ + if (ub->ub_version >= SPA_VERSION_FEATURES) { + nvlist_t *unsup_feat; + nvpair_t *nvp; + + VERIFY(nvlist_alloc(&unsup_feat, NV_UNIQUE_NAME, KM_SLEEP) == + 0); + + for (nvp = nvlist_next_nvpair(spa->spa_label_features, NULL); + nvp != NULL; + nvp = nvlist_next_nvpair(spa->spa_label_features, nvp)) { + if (!zfeature_is_supported(nvpair_name(nvp))) { + VERIFY(nvlist_add_string(unsup_feat, + nvpair_name(nvp), "") == 0); + } + } + + if (!nvlist_empty(unsup_feat)) { + VERIFY(nvlist_add_nvlist(spa->spa_load_info, + ZPOOL_CONFIG_UNSUP_FEAT, unsup_feat) == 0); + nvlist_free(unsup_feat); + return (spa_vdev_err(rvd, VDEV_AUX_UNSUP_FEAT, + ENOTSUP)); + } + + nvlist_free(unsup_feat); + } + + /* + * If the vdev guid sum doesn't match the uberblock, we have an + * incomplete configuration. We first check to see if the pool + * is aware of the complete config (i.e ZPOOL_CONFIG_VDEV_CHILDREN). + * If it is, defer the vdev_guid_sum check till later so we + * can handle missing vdevs. + */ + if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_VDEV_CHILDREN, + &children) != 0 && mosconfig && type != SPA_IMPORT_ASSEMBLE && + rvd->vdev_guid_sum != ub->ub_guid_sum) + return (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM, ENXIO)); + + if (type != SPA_IMPORT_ASSEMBLE && spa->spa_config_splitting) { + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_try_repair(spa, config); + spa_config_exit(spa, SCL_ALL, FTAG); + nvlist_free(spa->spa_config_splitting); + spa->spa_config_splitting = NULL; + } + + /* + * Initialize internal SPA structures. + */ + spa->spa_state = POOL_STATE_ACTIVE; + spa->spa_ubsync = spa->spa_uberblock; + spa->spa_verify_min_txg = spa->spa_extreme_rewind ? + TXG_INITIAL - 1 : spa_last_synced_txg(spa) - TXG_DEFER_SIZE - 1; + spa->spa_first_txg = spa->spa_last_ubsync_txg ? + spa->spa_last_ubsync_txg : spa_last_synced_txg(spa) + 1; + spa->spa_claim_max_txg = spa->spa_first_txg; + spa->spa_prev_software_version = ub->ub_software_version; + + error = dsl_pool_init(spa, spa->spa_first_txg, &spa->spa_dsl_pool); + if (error) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + spa->spa_meta_objset = spa->spa_dsl_pool->dp_meta_objset; + + if (spa_dir_prop(spa, DMU_POOL_CONFIG, &spa->spa_config_object) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + if (spa_version(spa) >= SPA_VERSION_FEATURES) { + boolean_t missing_feat_read = B_FALSE; + nvlist_t *unsup_feat, *enabled_feat; + spa_feature_t i; + + if (spa_dir_prop(spa, DMU_POOL_FEATURES_FOR_READ, + &spa->spa_feat_for_read_obj) != 0) { + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + } + + if (spa_dir_prop(spa, DMU_POOL_FEATURES_FOR_WRITE, + &spa->spa_feat_for_write_obj) != 0) { + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + } + + if (spa_dir_prop(spa, DMU_POOL_FEATURE_DESCRIPTIONS, + &spa->spa_feat_desc_obj) != 0) { + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + } + + enabled_feat = fnvlist_alloc(); + unsup_feat = fnvlist_alloc(); + + if (!spa_features_check(spa, B_FALSE, + unsup_feat, enabled_feat)) + missing_feat_read = B_TRUE; + + if (spa_writeable(spa) || state == SPA_LOAD_TRYIMPORT) { + if (!spa_features_check(spa, B_TRUE, + unsup_feat, enabled_feat)) { + missing_feat_write = B_TRUE; + } + } + + fnvlist_add_nvlist(spa->spa_load_info, + ZPOOL_CONFIG_ENABLED_FEAT, enabled_feat); + + if (!nvlist_empty(unsup_feat)) { + fnvlist_add_nvlist(spa->spa_load_info, + ZPOOL_CONFIG_UNSUP_FEAT, unsup_feat); + } + + fnvlist_free(enabled_feat); + fnvlist_free(unsup_feat); + + if (!missing_feat_read) { + fnvlist_add_boolean(spa->spa_load_info, + ZPOOL_CONFIG_CAN_RDONLY); + } + + /* + * If the state is SPA_LOAD_TRYIMPORT, our objective is + * twofold: to determine whether the pool is available for + * import in read-write mode and (if it is not) whether the + * pool is available for import in read-only mode. If the pool + * is available for import in read-write mode, it is displayed + * as available in userland; if it is not available for import + * in read-only mode, it is displayed as unavailable in + * userland. If the pool is available for import in read-only + * mode but not read-write mode, it is displayed as unavailable + * in userland with a special note that the pool is actually + * available for open in read-only mode. + * + * As a result, if the state is SPA_LOAD_TRYIMPORT and we are + * missing a feature for write, we must first determine whether + * the pool can be opened read-only before returning to + * userland in order to know whether to display the + * abovementioned note. + */ + if (missing_feat_read || (missing_feat_write && + spa_writeable(spa))) { + return (spa_vdev_err(rvd, VDEV_AUX_UNSUP_FEAT, + ENOTSUP)); + } + + /* + * Load refcounts for ZFS features from disk into an in-memory + * cache during SPA initialization. + */ + for (i = 0; i < SPA_FEATURES; i++) { + uint64_t refcount; + + error = feature_get_refcount_from_disk(spa, + &spa_feature_table[i], &refcount); + if (error == 0) { + spa->spa_feat_refcount_cache[i] = refcount; + } else if (error == ENOTSUP) { + spa->spa_feat_refcount_cache[i] = + SPA_FEATURE_DISABLED; + } else { + return (spa_vdev_err(rvd, + VDEV_AUX_CORRUPT_DATA, EIO)); + } + } + } + + if (spa_feature_is_active(spa, SPA_FEATURE_ENABLED_TXG)) { + if (spa_dir_prop(spa, DMU_POOL_FEATURE_ENABLED_TXG, + &spa->spa_feat_enabled_txg_obj) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + } + + spa->spa_is_initializing = B_TRUE; + error = dsl_pool_open(spa->spa_dsl_pool); + spa->spa_is_initializing = B_FALSE; + if (error != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + if (!mosconfig) { + uint64_t hostid; + nvlist_t *policy = NULL, *nvconfig; + + if (load_nvlist(spa, spa->spa_config_object, &nvconfig) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + if (!spa_is_root(spa) && nvlist_lookup_uint64(nvconfig, + ZPOOL_CONFIG_HOSTID, &hostid) == 0) { + char *hostname; + unsigned long myhostid = 0; + + VERIFY(nvlist_lookup_string(nvconfig, + ZPOOL_CONFIG_HOSTNAME, &hostname) == 0); + +#ifdef _KERNEL + myhostid = zone_get_hostid(NULL); +#else /* _KERNEL */ + /* + * We're emulating the system's hostid in userland, so + * we can't use zone_get_hostid(). + */ + (void) ddi_strtoul(hw_serial, NULL, 10, &myhostid); +#endif /* _KERNEL */ + if (hostid != 0 && myhostid != 0 && + hostid != myhostid) { + nvlist_free(nvconfig); + cmn_err(CE_WARN, "pool '%s' could not be " + "loaded as it was last accessed by another " + "system (host: %s hostid: 0x%lx). See: " + "http://zfsonlinux.org/msg/ZFS-8000-EY", + spa_name(spa), hostname, + (unsigned long)hostid); + return (SET_ERROR(EBADF)); + } + } + if (nvlist_lookup_nvlist(spa->spa_config, + ZPOOL_REWIND_POLICY, &policy) == 0) + VERIFY(nvlist_add_nvlist(nvconfig, + ZPOOL_REWIND_POLICY, policy) == 0); + + spa_config_set(spa, nvconfig); + spa_unload(spa); + spa_deactivate(spa); + spa_activate(spa, orig_mode); + + return (spa_load(spa, state, SPA_IMPORT_EXISTING, B_TRUE)); + } + + if (spa_dir_prop(spa, DMU_POOL_SYNC_BPOBJ, &obj) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + error = bpobj_open(&spa->spa_deferred_bpobj, spa->spa_meta_objset, obj); + if (error != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + /* + * Load the bit that tells us to use the new accounting function + * (raid-z deflation). If we have an older pool, this will not + * be present. + */ + error = spa_dir_prop(spa, DMU_POOL_DEFLATE, &spa->spa_deflate); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + error = spa_dir_prop(spa, DMU_POOL_CREATION_VERSION, + &spa->spa_creation_version); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + /* + * Load the persistent error log. If we have an older pool, this will + * not be present. + */ + error = spa_dir_prop(spa, DMU_POOL_ERRLOG_LAST, &spa->spa_errlog_last); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + error = spa_dir_prop(spa, DMU_POOL_ERRLOG_SCRUB, + &spa->spa_errlog_scrub); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + /* + * Load the history object. If we have an older pool, this + * will not be present. + */ + error = spa_dir_prop(spa, DMU_POOL_HISTORY, &spa->spa_history); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + /* + * If we're assembling the pool from the split-off vdevs of + * an existing pool, we don't want to attach the spares & cache + * devices. + */ + + /* + * Load any hot spares for this pool. + */ + error = spa_dir_prop(spa, DMU_POOL_SPARES, &spa->spa_spares.sav_object); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + if (error == 0 && type != SPA_IMPORT_ASSEMBLE) { + ASSERT(spa_version(spa) >= SPA_VERSION_SPARES); + if (load_nvlist(spa, spa->spa_spares.sav_object, + &spa->spa_spares.sav_config) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_spares(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + } else if (error == 0) { + spa->spa_spares.sav_sync = B_TRUE; + } + + /* + * Load any level 2 ARC devices for this pool. + */ + error = spa_dir_prop(spa, DMU_POOL_L2CACHE, + &spa->spa_l2cache.sav_object); + if (error != 0 && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + if (error == 0 && type != SPA_IMPORT_ASSEMBLE) { + ASSERT(spa_version(spa) >= SPA_VERSION_L2CACHE); + if (load_nvlist(spa, spa->spa_l2cache.sav_object, + &spa->spa_l2cache.sav_config) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_l2cache(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + } else if (error == 0) { + spa->spa_l2cache.sav_sync = B_TRUE; + } + + spa->spa_delegation = zpool_prop_default_numeric(ZPOOL_PROP_DELEGATION); + + error = spa_dir_prop(spa, DMU_POOL_PROPS, &spa->spa_pool_props_object); + if (error && error != ENOENT) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + if (error == 0) { + uint64_t autoreplace = 0; + + spa_prop_find(spa, ZPOOL_PROP_BOOTFS, &spa->spa_bootfs); + spa_prop_find(spa, ZPOOL_PROP_AUTOREPLACE, &autoreplace); + spa_prop_find(spa, ZPOOL_PROP_DELEGATION, &spa->spa_delegation); + spa_prop_find(spa, ZPOOL_PROP_FAILUREMODE, &spa->spa_failmode); + spa_prop_find(spa, ZPOOL_PROP_AUTOEXPAND, &spa->spa_autoexpand); + spa_prop_find(spa, ZPOOL_PROP_DEDUPDITTO, + &spa->spa_dedup_ditto); + + spa->spa_autoreplace = (autoreplace != 0); + } + + /* + * If the 'autoreplace' property is set, then post a resource notifying + * the ZFS DE that it should not issue any faults for unopenable + * devices. We also iterate over the vdevs, and post a sysevent for any + * unopenable vdevs so that the normal autoreplace handler can take + * over. + */ + if (spa->spa_autoreplace && state != SPA_LOAD_TRYIMPORT) { + spa_check_removed(spa->spa_root_vdev); + /* + * For the import case, this is done in spa_import(), because + * at this point we're using the spare definitions from + * the MOS config, not necessarily from the userland config. + */ + if (state != SPA_LOAD_IMPORT) { + spa_aux_check_removed(&spa->spa_spares); + spa_aux_check_removed(&spa->spa_l2cache); + } + } + + /* + * Load the vdev state for all toplevel vdevs. + */ + vdev_load(rvd); + + /* + * Propagate the leaf DTLs we just loaded all the way up the tree. + */ + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + vdev_dtl_reassess(rvd, 0, 0, B_FALSE); + spa_config_exit(spa, SCL_ALL, FTAG); + + /* + * Load the DDTs (dedup tables). + */ + error = ddt_load(spa); + if (error != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + spa_update_dspace(spa); + + /* + * Validate the config, using the MOS config to fill in any + * information which might be missing. If we fail to validate + * the config then declare the pool unfit for use. If we're + * assembling a pool from a split, the log is not transferred + * over. + */ + if (type != SPA_IMPORT_ASSEMBLE) { + nvlist_t *nvconfig; + + if (load_nvlist(spa, spa->spa_config_object, &nvconfig) != 0) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); + + if (!spa_config_valid(spa, nvconfig)) { + nvlist_free(nvconfig); + return (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM, + ENXIO)); + } + nvlist_free(nvconfig); + + /* + * Now that we've validated the config, check the state of the + * root vdev. If it can't be opened, it indicates one or + * more toplevel vdevs are faulted. + */ + if (rvd->vdev_state <= VDEV_STATE_CANT_OPEN) + return (SET_ERROR(ENXIO)); + + if (spa_writeable(spa) && spa_check_logs(spa)) { + *ereport = FM_EREPORT_ZFS_LOG_REPLAY; + return (spa_vdev_err(rvd, VDEV_AUX_BAD_LOG, ENXIO)); + } + } + + if (missing_feat_write) { + ASSERT(state == SPA_LOAD_TRYIMPORT); + + /* + * At this point, we know that we can open the pool in + * read-only mode but not read-write mode. We now have enough + * information and can return to userland. + */ + return (spa_vdev_err(rvd, VDEV_AUX_UNSUP_FEAT, ENOTSUP)); + } + + /* + * We've successfully opened the pool, verify that we're ready + * to start pushing transactions. + */ + if (state != SPA_LOAD_TRYIMPORT) { + if ((error = spa_load_verify(spa))) + return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, + error)); + } + + if (spa_writeable(spa) && (state == SPA_LOAD_RECOVER || + spa->spa_load_max_txg == UINT64_MAX)) { + dmu_tx_t *tx; + int need_update = B_FALSE; + dsl_pool_t *dp = spa_get_dsl(spa); + int c; + + ASSERT(state != SPA_LOAD_TRYIMPORT); + + /* + * Claim log blocks that haven't been committed yet. + * This must all happen in a single txg. + * Note: spa_claim_max_txg is updated by spa_claim_notify(), + * invoked from zil_claim_log_block()'s i/o done callback. + * Price of rollback is that we abandon the log. + */ + spa->spa_claiming = B_TRUE; + + tx = dmu_tx_create_assigned(dp, spa_first_txg(spa)); + (void) dmu_objset_find_dp(dp, dp->dp_root_dir_obj, + zil_claim, tx, DS_FIND_CHILDREN); + dmu_tx_commit(tx); + + spa->spa_claiming = B_FALSE; + + spa_set_log_state(spa, SPA_LOG_GOOD); + spa->spa_sync_on = B_TRUE; + txg_sync_start(spa->spa_dsl_pool); + + /* + * Wait for all claims to sync. We sync up to the highest + * claimed log block birth time so that claimed log blocks + * don't appear to be from the future. spa_claim_max_txg + * will have been set for us by either zil_check_log_chain() + * (invoked from spa_check_logs()) or zil_claim() above. + */ + txg_wait_synced(spa->spa_dsl_pool, spa->spa_claim_max_txg); + + /* + * If the config cache is stale, or we have uninitialized + * metaslabs (see spa_vdev_add()), then update the config. + * + * If this is a verbatim import, trust the current + * in-core spa_config and update the disk labels. + */ + if (config_cache_txg != spa->spa_config_txg || + state == SPA_LOAD_IMPORT || + state == SPA_LOAD_RECOVER || + (spa->spa_import_flags & ZFS_IMPORT_VERBATIM)) + need_update = B_TRUE; + + for (c = 0; c < rvd->vdev_children; c++) + if (rvd->vdev_child[c]->vdev_ms_array == 0) + need_update = B_TRUE; + + /* + * Update the config cache asychronously in case we're the + * root pool, in which case the config cache isn't writable yet. + */ + if (need_update) + spa_async_request(spa, SPA_ASYNC_CONFIG_UPDATE); + + /* + * Check all DTLs to see if anything needs resilvering. + */ + if (!dsl_scan_resilvering(spa->spa_dsl_pool) && + vdev_resilver_needed(rvd, NULL, NULL)) + spa_async_request(spa, SPA_ASYNC_RESILVER); + + /* + * Log the fact that we booted up (so that we can detect if + * we rebooted in the middle of an operation). + */ + spa_history_log_version(spa, "open"); + + /* + * Delete any inconsistent datasets. + */ + (void) dmu_objset_find(spa_name(spa), + dsl_destroy_inconsistent, NULL, DS_FIND_CHILDREN); + + /* + * Clean up any stale temporary dataset userrefs. + */ + dsl_pool_clean_tmp_userrefs(spa->spa_dsl_pool); + } + + return (0); +} + +static int +spa_load_retry(spa_t *spa, spa_load_state_t state, int mosconfig) +{ + int mode = spa->spa_mode; + + spa_unload(spa); + spa_deactivate(spa); + + spa->spa_load_max_txg = spa->spa_uberblock.ub_txg - 1; + + spa_activate(spa, mode); + spa_async_suspend(spa); + + return (spa_load(spa, state, SPA_IMPORT_EXISTING, mosconfig)); +} + +/* + * If spa_load() fails this function will try loading prior txg's. If + * 'state' is SPA_LOAD_RECOVER and one of these loads succeeds the pool + * will be rewound to that txg. If 'state' is not SPA_LOAD_RECOVER this + * function will not rewind the pool and will return the same error as + * spa_load(). + */ +static int +spa_load_best(spa_t *spa, spa_load_state_t state, int mosconfig, + uint64_t max_request, int rewind_flags) +{ + nvlist_t *loadinfo = NULL; + nvlist_t *config = NULL; + int load_error, rewind_error; + uint64_t safe_rewind_txg; + uint64_t min_txg; + + if (spa->spa_load_txg && state == SPA_LOAD_RECOVER) { + spa->spa_load_max_txg = spa->spa_load_txg; + spa_set_log_state(spa, SPA_LOG_CLEAR); + } else { + spa->spa_load_max_txg = max_request; + if (max_request != UINT64_MAX) + spa->spa_extreme_rewind = B_TRUE; + } + + load_error = rewind_error = spa_load(spa, state, SPA_IMPORT_EXISTING, + mosconfig); + if (load_error == 0) + return (0); + + if (spa->spa_root_vdev != NULL) + config = spa_config_generate(spa, NULL, -1ULL, B_TRUE); + + spa->spa_last_ubsync_txg = spa->spa_uberblock.ub_txg; + spa->spa_last_ubsync_txg_ts = spa->spa_uberblock.ub_timestamp; + + if (rewind_flags & ZPOOL_NEVER_REWIND) { + nvlist_free(config); + return (load_error); + } + + if (state == SPA_LOAD_RECOVER) { + /* Price of rolling back is discarding txgs, including log */ + spa_set_log_state(spa, SPA_LOG_CLEAR); + } else { + /* + * If we aren't rolling back save the load info from our first + * import attempt so that we can restore it after attempting + * to rewind. + */ + loadinfo = spa->spa_load_info; + spa->spa_load_info = fnvlist_alloc(); + } + + spa->spa_load_max_txg = spa->spa_last_ubsync_txg; + safe_rewind_txg = spa->spa_last_ubsync_txg - TXG_DEFER_SIZE; + min_txg = (rewind_flags & ZPOOL_EXTREME_REWIND) ? + TXG_INITIAL : safe_rewind_txg; + + /* + * Continue as long as we're finding errors, we're still within + * the acceptable rewind range, and we're still finding uberblocks + */ + while (rewind_error && spa->spa_uberblock.ub_txg >= min_txg && + spa->spa_uberblock.ub_txg <= spa->spa_load_max_txg) { + if (spa->spa_load_max_txg < safe_rewind_txg) + spa->spa_extreme_rewind = B_TRUE; + rewind_error = spa_load_retry(spa, state, mosconfig); + } + + spa->spa_extreme_rewind = B_FALSE; + spa->spa_load_max_txg = UINT64_MAX; + + if (config && (rewind_error || state != SPA_LOAD_RECOVER)) + spa_config_set(spa, config); + + if (state == SPA_LOAD_RECOVER) { + ASSERT3P(loadinfo, ==, NULL); + return (rewind_error); + } else { + /* Store the rewind info as part of the initial load info */ + fnvlist_add_nvlist(loadinfo, ZPOOL_CONFIG_REWIND_INFO, + spa->spa_load_info); + + /* Restore the initial load info */ + fnvlist_free(spa->spa_load_info); + spa->spa_load_info = loadinfo; + + return (load_error); + } +} + +/* + * Pool Open/Import + * + * The import case is identical to an open except that the configuration is sent + * down from userland, instead of grabbed from the configuration cache. For the + * case of an open, the pool configuration will exist in the + * POOL_STATE_UNINITIALIZED state. + * + * The stats information (gen/count/ustats) is used to gather vdev statistics at + * the same time open the pool, without having to keep around the spa_t in some + * ambiguous state. + */ +static int +spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, + nvlist_t **config) +{ + spa_t *spa; + spa_load_state_t state = SPA_LOAD_OPEN; + int error; + int locked = B_FALSE; + int firstopen = B_FALSE; + + *spapp = NULL; + + /* + * As disgusting as this is, we need to support recursive calls to this + * function because dsl_dir_open() is called during spa_load(), and ends + * up calling spa_open() again. The real fix is to figure out how to + * avoid dsl_dir_open() calling this in the first place. + */ + if (mutex_owner(&spa_namespace_lock) != curthread) { + mutex_enter(&spa_namespace_lock); + locked = B_TRUE; + } + + if ((spa = spa_lookup(pool)) == NULL) { + if (locked) + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(ENOENT)); + } + + if (spa->spa_state == POOL_STATE_UNINITIALIZED) { + zpool_rewind_policy_t policy; + + firstopen = B_TRUE; + + zpool_get_rewind_policy(nvpolicy ? nvpolicy : spa->spa_config, + &policy); + if (policy.zrp_request & ZPOOL_DO_REWIND) + state = SPA_LOAD_RECOVER; + + spa_activate(spa, spa_mode_global); + + if (state != SPA_LOAD_RECOVER) + spa->spa_last_ubsync_txg = spa->spa_load_txg = 0; + + error = spa_load_best(spa, state, B_FALSE, policy.zrp_txg, + policy.zrp_request); + + if (error == EBADF) { + /* + * If vdev_validate() returns failure (indicated by + * EBADF), it indicates that one of the vdevs indicates + * that the pool has been exported or destroyed. If + * this is the case, the config cache is out of sync and + * we should remove the pool from the namespace. + */ + spa_unload(spa); + spa_deactivate(spa); + spa_config_sync(spa, B_TRUE, B_TRUE); + spa_remove(spa); + if (locked) + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(ENOENT)); + } + + if (error) { + /* + * We can't open the pool, but we still have useful + * information: the state of each vdev after the + * attempted vdev_open(). Return this to the user. + */ + if (config != NULL && spa->spa_config) { + VERIFY(nvlist_dup(spa->spa_config, config, + KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist(*config, + ZPOOL_CONFIG_LOAD_INFO, + spa->spa_load_info) == 0); + } + spa_unload(spa); + spa_deactivate(spa); + spa->spa_last_open_failed = error; + if (locked) + mutex_exit(&spa_namespace_lock); + *spapp = NULL; + return (error); + } + } + + spa_open_ref(spa, tag); + + if (config != NULL) + *config = spa_config_generate(spa, NULL, -1ULL, B_TRUE); + + /* + * If we've recovered the pool, pass back any information we + * gathered while doing the load. + */ + if (state == SPA_LOAD_RECOVER) { + VERIFY(nvlist_add_nvlist(*config, ZPOOL_CONFIG_LOAD_INFO, + spa->spa_load_info) == 0); + } + + if (locked) { + spa->spa_last_open_failed = 0; + spa->spa_last_ubsync_txg = 0; + spa->spa_load_txg = 0; + mutex_exit(&spa_namespace_lock); + } + +#ifdef _KERNEL + if (firstopen) + zvol_create_minors(spa->spa_name); +#endif + + *spapp = spa; + + return (0); +} + +int +spa_open_rewind(const char *name, spa_t **spapp, void *tag, nvlist_t *policy, + nvlist_t **config) +{ + return (spa_open_common(name, spapp, tag, policy, config)); +} + +int +spa_open(const char *name, spa_t **spapp, void *tag) +{ + return (spa_open_common(name, spapp, tag, NULL, NULL)); +} + +/* + * Lookup the given spa_t, incrementing the inject count in the process, + * preventing it from being exported or destroyed. + */ +spa_t * +spa_inject_addref(char *name) +{ + spa_t *spa; + + mutex_enter(&spa_namespace_lock); + if ((spa = spa_lookup(name)) == NULL) { + mutex_exit(&spa_namespace_lock); + return (NULL); + } + spa->spa_inject_ref++; + mutex_exit(&spa_namespace_lock); + + return (spa); +} + +void +spa_inject_delref(spa_t *spa) +{ + mutex_enter(&spa_namespace_lock); + spa->spa_inject_ref--; + mutex_exit(&spa_namespace_lock); +} + +/* + * Add spares device information to the nvlist. + */ +static void +spa_add_spares(spa_t *spa, nvlist_t *config) +{ + nvlist_t **spares; + uint_t i, nspares; + nvlist_t *nvroot; + uint64_t guid; + vdev_stat_t *vs; + uint_t vsc; + uint64_t pool; + + ASSERT(spa_config_held(spa, SCL_CONFIG, RW_READER)); + + if (spa->spa_spares.sav_count == 0) + return; + + VERIFY(nvlist_lookup_nvlist(config, + ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); + VERIFY(nvlist_lookup_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0); + if (nspares != 0) { + VERIFY(nvlist_add_nvlist_array(nvroot, + ZPOOL_CONFIG_SPARES, spares, nspares) == 0); + VERIFY(nvlist_lookup_nvlist_array(nvroot, + ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0); + + /* + * Go through and find any spares which have since been + * repurposed as an active spare. If this is the case, update + * their status appropriately. + */ + for (i = 0; i < nspares; i++) { + VERIFY(nvlist_lookup_uint64(spares[i], + ZPOOL_CONFIG_GUID, &guid) == 0); + if (spa_spare_exists(guid, &pool, NULL) && + pool != 0ULL) { + VERIFY(nvlist_lookup_uint64_array( + spares[i], ZPOOL_CONFIG_VDEV_STATS, + (uint64_t **)&vs, &vsc) == 0); + vs->vs_state = VDEV_STATE_CANT_OPEN; + vs->vs_aux = VDEV_AUX_SPARED; + } + } + } +} + +/* + * Add l2cache device information to the nvlist, including vdev stats. + */ +static void +spa_add_l2cache(spa_t *spa, nvlist_t *config) +{ + nvlist_t **l2cache; + uint_t i, j, nl2cache; + nvlist_t *nvroot; + uint64_t guid; + vdev_t *vd; + vdev_stat_t *vs; + uint_t vsc; + + ASSERT(spa_config_held(spa, SCL_CONFIG, RW_READER)); + + if (spa->spa_l2cache.sav_count == 0) + return; + + VERIFY(nvlist_lookup_nvlist(config, + ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); + VERIFY(nvlist_lookup_nvlist_array(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0); + if (nl2cache != 0) { + VERIFY(nvlist_add_nvlist_array(nvroot, + ZPOOL_CONFIG_L2CACHE, l2cache, nl2cache) == 0); + VERIFY(nvlist_lookup_nvlist_array(nvroot, + ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0); + + /* + * Update level 2 cache device stats. + */ + + for (i = 0; i < nl2cache; i++) { + VERIFY(nvlist_lookup_uint64(l2cache[i], + ZPOOL_CONFIG_GUID, &guid) == 0); + + vd = NULL; + for (j = 0; j < spa->spa_l2cache.sav_count; j++) { + if (guid == + spa->spa_l2cache.sav_vdevs[j]->vdev_guid) { + vd = spa->spa_l2cache.sav_vdevs[j]; + break; + } + } + ASSERT(vd != NULL); + + VERIFY(nvlist_lookup_uint64_array(l2cache[i], + ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &vsc) + == 0); + vdev_get_stats(vd, vs); + } + } +} + +static void +spa_feature_stats_from_disk(spa_t *spa, nvlist_t *features) +{ + zap_cursor_t zc; + zap_attribute_t za; + + if (spa->spa_feat_for_read_obj != 0) { + for (zap_cursor_init(&zc, spa->spa_meta_objset, + spa->spa_feat_for_read_obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + ASSERT(za.za_integer_length == sizeof (uint64_t) && + za.za_num_integers == 1); + VERIFY0(nvlist_add_uint64(features, za.za_name, + za.za_first_integer)); + } + zap_cursor_fini(&zc); + } + + if (spa->spa_feat_for_write_obj != 0) { + for (zap_cursor_init(&zc, spa->spa_meta_objset, + spa->spa_feat_for_write_obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + ASSERT(za.za_integer_length == sizeof (uint64_t) && + za.za_num_integers == 1); + VERIFY0(nvlist_add_uint64(features, za.za_name, + za.za_first_integer)); + } + zap_cursor_fini(&zc); + } +} + +static void +spa_feature_stats_from_cache(spa_t *spa, nvlist_t *features) +{ + int i; + + for (i = 0; i < SPA_FEATURES; i++) { + zfeature_info_t feature = spa_feature_table[i]; + uint64_t refcount; + + if (feature_get_refcount(spa, &feature, &refcount) != 0) + continue; + + VERIFY0(nvlist_add_uint64(features, feature.fi_guid, refcount)); + } +} + +/* + * Store a list of pool features and their reference counts in the + * config. + * + * The first time this is called on a spa, allocate a new nvlist, fetch + * the pool features and reference counts from disk, then save the list + * in the spa. In subsequent calls on the same spa use the saved nvlist + * and refresh its values from the cached reference counts. This + * ensures we don't block here on I/O on a suspended pool so 'zpool + * clear' can resume the pool. + */ +static void +spa_add_feature_stats(spa_t *spa, nvlist_t *config) +{ + nvlist_t *features; + + ASSERT(spa_config_held(spa, SCL_CONFIG, RW_READER)); + + mutex_enter(&spa->spa_feat_stats_lock); + features = spa->spa_feat_stats; + + if (features != NULL) { + spa_feature_stats_from_cache(spa, features); + } else { + VERIFY0(nvlist_alloc(&features, NV_UNIQUE_NAME, KM_SLEEP)); + spa->spa_feat_stats = features; + spa_feature_stats_from_disk(spa, features); + } + + VERIFY0(nvlist_add_nvlist(config, ZPOOL_CONFIG_FEATURE_STATS, + features)); + + mutex_exit(&spa->spa_feat_stats_lock); +} + +int +spa_get_stats(const char *name, nvlist_t **config, + char *altroot, size_t buflen) +{ + int error; + spa_t *spa; + + *config = NULL; + error = spa_open_common(name, &spa, FTAG, NULL, config); + + if (spa != NULL) { + /* + * This still leaves a window of inconsistency where the spares + * or l2cache devices could change and the config would be + * self-inconsistent. + */ + spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER); + + if (*config != NULL) { + uint64_t loadtimes[2]; + + loadtimes[0] = spa->spa_loaded_ts.tv_sec; + loadtimes[1] = spa->spa_loaded_ts.tv_nsec; + VERIFY(nvlist_add_uint64_array(*config, + ZPOOL_CONFIG_LOADED_TIME, loadtimes, 2) == 0); + + VERIFY(nvlist_add_uint64(*config, + ZPOOL_CONFIG_ERRCOUNT, + spa_get_errlog_size(spa)) == 0); + + if (spa_suspended(spa)) + VERIFY(nvlist_add_uint64(*config, + ZPOOL_CONFIG_SUSPENDED, + spa->spa_failmode) == 0); + + spa_add_spares(spa, *config); + spa_add_l2cache(spa, *config); + spa_add_feature_stats(spa, *config); + } + } + + /* + * We want to get the alternate root even for faulted pools, so we cheat + * and call spa_lookup() directly. + */ + if (altroot) { + if (spa == NULL) { + mutex_enter(&spa_namespace_lock); + spa = spa_lookup(name); + if (spa) + spa_altroot(spa, altroot, buflen); + else + altroot[0] = '\0'; + spa = NULL; + mutex_exit(&spa_namespace_lock); + } else { + spa_altroot(spa, altroot, buflen); + } + } + + if (spa != NULL) { + spa_config_exit(spa, SCL_CONFIG, FTAG); + spa_close(spa, FTAG); + } + + return (error); +} + +/* + * Validate that the auxiliary device array is well formed. We must have an + * array of nvlists, each which describes a valid leaf vdev. If this is an + * import (mode is VDEV_ALLOC_SPARE), then we allow corrupted spares to be + * specified, as long as they are well-formed. + */ +static int +spa_validate_aux_devs(spa_t *spa, nvlist_t *nvroot, uint64_t crtxg, int mode, + spa_aux_vdev_t *sav, const char *config, uint64_t version, + vdev_labeltype_t label) +{ + nvlist_t **dev; + uint_t i, ndev; + vdev_t *vd; + int error; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + /* + * It's acceptable to have no devs specified. + */ + if (nvlist_lookup_nvlist_array(nvroot, config, &dev, &ndev) != 0) + return (0); + + if (ndev == 0) + return (SET_ERROR(EINVAL)); + + /* + * Make sure the pool is formatted with a version that supports this + * device type. + */ + if (spa_version(spa) < version) + return (SET_ERROR(ENOTSUP)); + + /* + * Set the pending device list so we correctly handle device in-use + * checking. + */ + sav->sav_pending = dev; + sav->sav_npending = ndev; + + for (i = 0; i < ndev; i++) { + if ((error = spa_config_parse(spa, &vd, dev[i], NULL, 0, + mode)) != 0) + goto out; + + if (!vd->vdev_ops->vdev_op_leaf) { + vdev_free(vd); + error = SET_ERROR(EINVAL); + goto out; + } + + /* + * The L2ARC currently only supports disk devices in + * kernel context. For user-level testing, we allow it. + */ +#ifdef _KERNEL + if ((strcmp(config, ZPOOL_CONFIG_L2CACHE) == 0) && + strcmp(vd->vdev_ops->vdev_op_type, VDEV_TYPE_DISK) != 0) { + error = SET_ERROR(ENOTBLK); + vdev_free(vd); + goto out; + } +#endif + vd->vdev_top = vd; + + if ((error = vdev_open(vd)) == 0 && + (error = vdev_label_init(vd, crtxg, label)) == 0) { + VERIFY(nvlist_add_uint64(dev[i], ZPOOL_CONFIG_GUID, + vd->vdev_guid) == 0); + } + + vdev_free(vd); + + if (error && + (mode != VDEV_ALLOC_SPARE && mode != VDEV_ALLOC_L2CACHE)) + goto out; + else + error = 0; + } + +out: + sav->sav_pending = NULL; + sav->sav_npending = 0; + return (error); +} + +static int +spa_validate_aux(spa_t *spa, nvlist_t *nvroot, uint64_t crtxg, int mode) +{ + int error; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + if ((error = spa_validate_aux_devs(spa, nvroot, crtxg, mode, + &spa->spa_spares, ZPOOL_CONFIG_SPARES, SPA_VERSION_SPARES, + VDEV_LABEL_SPARE)) != 0) { + return (error); + } + + return (spa_validate_aux_devs(spa, nvroot, crtxg, mode, + &spa->spa_l2cache, ZPOOL_CONFIG_L2CACHE, SPA_VERSION_L2CACHE, + VDEV_LABEL_L2CACHE)); +} + +static void +spa_set_aux_vdevs(spa_aux_vdev_t *sav, nvlist_t **devs, int ndevs, + const char *config) +{ + int i; + + if (sav->sav_config != NULL) { + nvlist_t **olddevs; + uint_t oldndevs; + nvlist_t **newdevs; + + /* + * Generate new dev list by concatentating with the + * current dev list. + */ + VERIFY(nvlist_lookup_nvlist_array(sav->sav_config, config, + &olddevs, &oldndevs) == 0); + + newdevs = kmem_alloc(sizeof (void *) * + (ndevs + oldndevs), KM_SLEEP); + for (i = 0; i < oldndevs; i++) + VERIFY(nvlist_dup(olddevs[i], &newdevs[i], + KM_SLEEP) == 0); + for (i = 0; i < ndevs; i++) + VERIFY(nvlist_dup(devs[i], &newdevs[i + oldndevs], + KM_SLEEP) == 0); + + VERIFY(nvlist_remove(sav->sav_config, config, + DATA_TYPE_NVLIST_ARRAY) == 0); + + VERIFY(nvlist_add_nvlist_array(sav->sav_config, + config, newdevs, ndevs + oldndevs) == 0); + for (i = 0; i < oldndevs + ndevs; i++) + nvlist_free(newdevs[i]); + kmem_free(newdevs, (oldndevs + ndevs) * sizeof (void *)); + } else { + /* + * Generate a new dev list. + */ + VERIFY(nvlist_alloc(&sav->sav_config, NV_UNIQUE_NAME, + KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist_array(sav->sav_config, config, + devs, ndevs) == 0); + } +} + +/* + * Stop and drop level 2 ARC devices + */ +void +spa_l2cache_drop(spa_t *spa) +{ + vdev_t *vd; + int i; + spa_aux_vdev_t *sav = &spa->spa_l2cache; + + for (i = 0; i < sav->sav_count; i++) { + uint64_t pool; + + vd = sav->sav_vdevs[i]; + ASSERT(vd != NULL); + + if (spa_l2cache_exists(vd->vdev_guid, &pool) && + pool != 0ULL && l2arc_vdev_present(vd)) + l2arc_remove_vdev(vd); + } +} + +/* + * Pool Creation + */ +int +spa_create(const char *pool, nvlist_t *nvroot, nvlist_t *props, + nvlist_t *zplprops) +{ + spa_t *spa; + char *altroot = NULL; + vdev_t *rvd; + dsl_pool_t *dp; + dmu_tx_t *tx; + int error = 0; + uint64_t txg = TXG_INITIAL; + nvlist_t **spares, **l2cache; + uint_t nspares, nl2cache; + uint64_t version, obj; + boolean_t has_features; + nvpair_t *elem; + int c, i; + char *poolname; + nvlist_t *nvl; + + if (nvlist_lookup_string(props, "tname", &poolname) != 0) + poolname = (char *)pool; + + /* + * If this pool already exists, return failure. + */ + mutex_enter(&spa_namespace_lock); + if (spa_lookup(poolname) != NULL) { + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(EEXIST)); + } + + /* + * Allocate a new spa_t structure. + */ + nvl = fnvlist_alloc(); + fnvlist_add_string(nvl, ZPOOL_CONFIG_POOL_NAME, pool); + (void) nvlist_lookup_string(props, + zpool_prop_to_name(ZPOOL_PROP_ALTROOT), &altroot); + spa = spa_add(poolname, nvl, altroot); + fnvlist_free(nvl); + spa_activate(spa, spa_mode_global); + + if (props && (error = spa_prop_validate(spa, props))) { + spa_deactivate(spa); + spa_remove(spa); + mutex_exit(&spa_namespace_lock); + return (error); + } + + /* + * Temporary pool names should never be written to disk. + */ + if (poolname != pool) + spa->spa_import_flags |= ZFS_IMPORT_TEMP_NAME; + + has_features = B_FALSE; + for (elem = nvlist_next_nvpair(props, NULL); + elem != NULL; elem = nvlist_next_nvpair(props, elem)) { + if (zpool_prop_feature(nvpair_name(elem))) + has_features = B_TRUE; + } + + if (has_features || nvlist_lookup_uint64(props, + zpool_prop_to_name(ZPOOL_PROP_VERSION), &version) != 0) { + version = SPA_VERSION; + } + ASSERT(SPA_VERSION_IS_SUPPORTED(version)); + + spa->spa_first_txg = txg; + spa->spa_uberblock.ub_txg = txg - 1; + spa->spa_uberblock.ub_version = version; + spa->spa_ubsync = spa->spa_uberblock; + + /* + * Create "The Godfather" zio to hold all async IOs + */ + spa->spa_async_zio_root = kmem_alloc(max_ncpus * sizeof (void *), + KM_SLEEP); + for (i = 0; i < max_ncpus; i++) { + spa->spa_async_zio_root[i] = zio_root(spa, NULL, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE | + ZIO_FLAG_GODFATHER); + } + + /* + * Create the root vdev. + */ + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + error = spa_config_parse(spa, &rvd, nvroot, NULL, 0, VDEV_ALLOC_ADD); + + ASSERT(error != 0 || rvd != NULL); + ASSERT(error != 0 || spa->spa_root_vdev == rvd); + + if (error == 0 && !zfs_allocatable_devs(nvroot)) + error = SET_ERROR(EINVAL); + + if (error == 0 && + (error = vdev_create(rvd, txg, B_FALSE)) == 0 && + (error = spa_validate_aux(spa, nvroot, txg, + VDEV_ALLOC_ADD)) == 0) { + for (c = 0; c < rvd->vdev_children; c++) { + vdev_metaslab_set_size(rvd->vdev_child[c]); + vdev_expand(rvd->vdev_child[c], txg); + } + } + + spa_config_exit(spa, SCL_ALL, FTAG); + + if (error != 0) { + spa_unload(spa); + spa_deactivate(spa); + spa_remove(spa); + mutex_exit(&spa_namespace_lock); + return (error); + } + + /* + * Get the list of spares, if specified. + */ + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_SPARES, + &spares, &nspares) == 0) { + VERIFY(nvlist_alloc(&spa->spa_spares.sav_config, NV_UNIQUE_NAME, + KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, spares, nspares) == 0); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_spares(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + spa->spa_spares.sav_sync = B_TRUE; + } + + /* + * Get the list of level 2 cache devices, if specified. + */ + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_L2CACHE, + &l2cache, &nl2cache) == 0) { + VERIFY(nvlist_alloc(&spa->spa_l2cache.sav_config, + NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist_array(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, l2cache, nl2cache) == 0); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_l2cache(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + spa->spa_l2cache.sav_sync = B_TRUE; + } + + spa->spa_is_initializing = B_TRUE; + spa->spa_dsl_pool = dp = dsl_pool_create(spa, zplprops, txg); + spa->spa_meta_objset = dp->dp_meta_objset; + spa->spa_is_initializing = B_FALSE; + + /* + * Create DDTs (dedup tables). + */ + ddt_create(spa); + + spa_update_dspace(spa); + + tx = dmu_tx_create_assigned(dp, txg); + + /* + * Create the pool config object. + */ + spa->spa_config_object = dmu_object_alloc(spa->spa_meta_objset, + DMU_OT_PACKED_NVLIST, SPA_CONFIG_BLOCKSIZE, + DMU_OT_PACKED_NVLIST_SIZE, sizeof (uint64_t), tx); + + if (zap_add(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_CONFIG, + sizeof (uint64_t), 1, &spa->spa_config_object, tx) != 0) { + cmn_err(CE_PANIC, "failed to add pool config"); + } + + if (spa_version(spa) >= SPA_VERSION_FEATURES) + spa_feature_create_zap_objects(spa, tx); + + if (zap_add(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_CREATION_VERSION, + sizeof (uint64_t), 1, &version, tx) != 0) { + cmn_err(CE_PANIC, "failed to add pool version"); + } + + /* Newly created pools with the right version are always deflated. */ + if (version >= SPA_VERSION_RAIDZ_DEFLATE) { + spa->spa_deflate = TRUE; + if (zap_add(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_DEFLATE, + sizeof (uint64_t), 1, &spa->spa_deflate, tx) != 0) { + cmn_err(CE_PANIC, "failed to add deflate"); + } + } + + /* + * Create the deferred-free bpobj. Turn off compression + * because sync-to-convergence takes longer if the blocksize + * keeps changing. + */ + obj = bpobj_alloc(spa->spa_meta_objset, 1 << 14, tx); + dmu_object_set_compress(spa->spa_meta_objset, obj, + ZIO_COMPRESS_OFF, tx); + if (zap_add(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_SYNC_BPOBJ, + sizeof (uint64_t), 1, &obj, tx) != 0) { + cmn_err(CE_PANIC, "failed to add bpobj"); + } + VERIFY3U(0, ==, bpobj_open(&spa->spa_deferred_bpobj, + spa->spa_meta_objset, obj)); + + /* + * Create the pool's history object. + */ + if (version >= SPA_VERSION_ZPOOL_HISTORY) + spa_history_create_obj(spa, tx); + + /* + * Set pool properties. + */ + spa->spa_bootfs = zpool_prop_default_numeric(ZPOOL_PROP_BOOTFS); + spa->spa_delegation = zpool_prop_default_numeric(ZPOOL_PROP_DELEGATION); + spa->spa_failmode = zpool_prop_default_numeric(ZPOOL_PROP_FAILUREMODE); + spa->spa_autoexpand = zpool_prop_default_numeric(ZPOOL_PROP_AUTOEXPAND); + + if (props != NULL) { + spa_configfile_set(spa, props, B_FALSE); + spa_sync_props(props, tx); + } + + dmu_tx_commit(tx); + + spa->spa_sync_on = B_TRUE; + txg_sync_start(spa->spa_dsl_pool); + + /* + * We explicitly wait for the first transaction to complete so that our + * bean counters are appropriately updated. + */ + txg_wait_synced(spa->spa_dsl_pool, txg); + + spa_config_sync(spa, B_FALSE, B_TRUE); + + spa_history_log_version(spa, "create"); + + /* + * Don't count references from objsets that are already closed + * and are making their way through the eviction process. + */ + spa_evicting_os_wait(spa); + spa->spa_minref = refcount_count(&spa->spa_refcount); + + mutex_exit(&spa_namespace_lock); + + return (0); +} + +#ifdef _KERNEL +/* + * Get the root pool information from the root disk, then import the root pool + * during the system boot up time. + */ +extern int vdev_disk_read_rootlabel(char *, char *, nvlist_t **); + +static nvlist_t * +spa_generate_rootconf(char *devpath, char *devid, uint64_t *guid) +{ + nvlist_t *config; + nvlist_t *nvtop, *nvroot; + uint64_t pgid; + + if (vdev_disk_read_rootlabel(devpath, devid, &config) != 0) + return (NULL); + + /* + * Add this top-level vdev to the child array. + */ + VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, + &nvtop) == 0); + VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, + &pgid) == 0); + VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, guid) == 0); + + /* + * Put this pool's top-level vdevs into a root vdev. + */ + VERIFY(nvlist_alloc(&nvroot, NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_string(nvroot, ZPOOL_CONFIG_TYPE, + VDEV_TYPE_ROOT) == 0); + VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_ID, 0ULL) == 0); + VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_GUID, pgid) == 0); + VERIFY(nvlist_add_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, + &nvtop, 1) == 0); + + /* + * Replace the existing vdev_tree with the new root vdev in + * this pool's configuration (remove the old, add the new). + */ + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, nvroot) == 0); + nvlist_free(nvroot); + return (config); +} + +/* + * Walk the vdev tree and see if we can find a device with "better" + * configuration. A configuration is "better" if the label on that + * device has a more recent txg. + */ +static void +spa_alt_rootvdev(vdev_t *vd, vdev_t **avd, uint64_t *txg) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + spa_alt_rootvdev(vd->vdev_child[c], avd, txg); + + if (vd->vdev_ops->vdev_op_leaf) { + nvlist_t *label; + uint64_t label_txg; + + if (vdev_disk_read_rootlabel(vd->vdev_physpath, vd->vdev_devid, + &label) != 0) + return; + + VERIFY(nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_TXG, + &label_txg) == 0); + + /* + * Do we have a better boot device? + */ + if (label_txg > *txg) { + *txg = label_txg; + *avd = vd; + } + nvlist_free(label); + } +} + +/* + * Import a root pool. + * + * For x86. devpath_list will consist of devid and/or physpath name of + * the vdev (e.g. "id1,sd@SSEAGATE..." or "/pci@1f,0/ide@d/disk@0,0:a"). + * The GRUB "findroot" command will return the vdev we should boot. + * + * For Sparc, devpath_list consists the physpath name of the booting device + * no matter the rootpool is a single device pool or a mirrored pool. + * e.g. + * "/pci@1f,0/ide@d/disk@0,0:a" + */ +int +spa_import_rootpool(char *devpath, char *devid) +{ + spa_t *spa; + vdev_t *rvd, *bvd, *avd = NULL; + nvlist_t *config, *nvtop; + uint64_t guid, txg; + char *pname; + int error; + + /* + * Read the label from the boot device and generate a configuration. + */ + config = spa_generate_rootconf(devpath, devid, &guid); +#if defined(_OBP) && defined(_KERNEL) + if (config == NULL) { + if (strstr(devpath, "/iscsi/ssd") != NULL) { + /* iscsi boot */ + get_iscsi_bootpath_phy(devpath); + config = spa_generate_rootconf(devpath, devid, &guid); + } + } +#endif + if (config == NULL) { + cmn_err(CE_NOTE, "Cannot read the pool label from '%s'", + devpath); + return (SET_ERROR(EIO)); + } + + VERIFY(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, + &pname) == 0); + VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG, &txg) == 0); + + mutex_enter(&spa_namespace_lock); + if ((spa = spa_lookup(pname)) != NULL) { + /* + * Remove the existing root pool from the namespace so that we + * can replace it with the correct config we just read in. + */ + spa_remove(spa); + } + + spa = spa_add(pname, config, NULL); + spa->spa_is_root = B_TRUE; + spa->spa_import_flags = ZFS_IMPORT_VERBATIM; + + /* + * Build up a vdev tree based on the boot device's label config. + */ + VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, + &nvtop) == 0); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + error = spa_config_parse(spa, &rvd, nvtop, NULL, 0, + VDEV_ALLOC_ROOTPOOL); + spa_config_exit(spa, SCL_ALL, FTAG); + if (error) { + mutex_exit(&spa_namespace_lock); + nvlist_free(config); + cmn_err(CE_NOTE, "Can not parse the config for pool '%s'", + pname); + return (error); + } + + /* + * Get the boot vdev. + */ + if ((bvd = vdev_lookup_by_guid(rvd, guid)) == NULL) { + cmn_err(CE_NOTE, "Can not find the boot vdev for guid %llu", + (u_longlong_t)guid); + error = SET_ERROR(ENOENT); + goto out; + } + + /* + * Determine if there is a better boot device. + */ + avd = bvd; + spa_alt_rootvdev(rvd, &avd, &txg); + if (avd != bvd) { + cmn_err(CE_NOTE, "The boot device is 'degraded'. Please " + "try booting from '%s'", avd->vdev_path); + error = SET_ERROR(EINVAL); + goto out; + } + + /* + * If the boot device is part of a spare vdev then ensure that + * we're booting off the active spare. + */ + if (bvd->vdev_parent->vdev_ops == &vdev_spare_ops && + !bvd->vdev_isspare) { + cmn_err(CE_NOTE, "The boot device is currently spared. Please " + "try booting from '%s'", + bvd->vdev_parent-> + vdev_child[bvd->vdev_parent->vdev_children - 1]->vdev_path); + error = SET_ERROR(EINVAL); + goto out; + } + + error = 0; +out: + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + vdev_free(rvd); + spa_config_exit(spa, SCL_ALL, FTAG); + mutex_exit(&spa_namespace_lock); + + nvlist_free(config); + return (error); +} + +#endif + +/* + * Import a non-root pool into the system. + */ +int +spa_import(char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags) +{ + spa_t *spa; + char *altroot = NULL; + spa_load_state_t state = SPA_LOAD_IMPORT; + zpool_rewind_policy_t policy; + uint64_t mode = spa_mode_global; + uint64_t readonly = B_FALSE; + int error; + nvlist_t *nvroot; + nvlist_t **spares, **l2cache; + uint_t nspares, nl2cache; + + /* + * If a pool with this name exists, return failure. + */ + mutex_enter(&spa_namespace_lock); + if (spa_lookup(pool) != NULL) { + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(EEXIST)); + } + + /* + * Create and initialize the spa structure. + */ + (void) nvlist_lookup_string(props, + zpool_prop_to_name(ZPOOL_PROP_ALTROOT), &altroot); + (void) nvlist_lookup_uint64(props, + zpool_prop_to_name(ZPOOL_PROP_READONLY), &readonly); + if (readonly) + mode = FREAD; + spa = spa_add(pool, config, altroot); + spa->spa_import_flags = flags; + + /* + * Verbatim import - Take a pool and insert it into the namespace + * as if it had been loaded at boot. + */ + if (spa->spa_import_flags & ZFS_IMPORT_VERBATIM) { + if (props != NULL) + spa_configfile_set(spa, props, B_FALSE); + + spa_config_sync(spa, B_FALSE, B_TRUE); + + mutex_exit(&spa_namespace_lock); + return (0); + } + + spa_activate(spa, mode); + + /* + * Don't start async tasks until we know everything is healthy. + */ + spa_async_suspend(spa); + + zpool_get_rewind_policy(config, &policy); + if (policy.zrp_request & ZPOOL_DO_REWIND) + state = SPA_LOAD_RECOVER; + + /* + * Pass off the heavy lifting to spa_load(). Pass TRUE for mosconfig + * because the user-supplied config is actually the one to trust when + * doing an import. + */ + if (state != SPA_LOAD_RECOVER) + spa->spa_last_ubsync_txg = spa->spa_load_txg = 0; + + error = spa_load_best(spa, state, B_TRUE, policy.zrp_txg, + policy.zrp_request); + + /* + * Propagate anything learned while loading the pool and pass it + * back to caller (i.e. rewind info, missing devices, etc). + */ + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, + spa->spa_load_info) == 0); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + /* + * Toss any existing sparelist, as it doesn't have any validity + * anymore, and conflicts with spa_has_spare(). + */ + if (spa->spa_spares.sav_config) { + nvlist_free(spa->spa_spares.sav_config); + spa->spa_spares.sav_config = NULL; + spa_load_spares(spa); + } + if (spa->spa_l2cache.sav_config) { + nvlist_free(spa->spa_l2cache.sav_config); + spa->spa_l2cache.sav_config = NULL; + spa_load_l2cache(spa); + } + + VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, + &nvroot) == 0); + if (error == 0) + error = spa_validate_aux(spa, nvroot, -1ULL, + VDEV_ALLOC_SPARE); + if (error == 0) + error = spa_validate_aux(spa, nvroot, -1ULL, + VDEV_ALLOC_L2CACHE); + spa_config_exit(spa, SCL_ALL, FTAG); + + if (props != NULL) + spa_configfile_set(spa, props, B_FALSE); + + if (error != 0 || (props && spa_writeable(spa) && + (error = spa_prop_set(spa, props)))) { + spa_unload(spa); + spa_deactivate(spa); + spa_remove(spa); + mutex_exit(&spa_namespace_lock); + return (error); + } + + spa_async_resume(spa); + + /* + * Override any spares and level 2 cache devices as specified by + * the user, as these may have correct device names/devids, etc. + */ + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_SPARES, + &spares, &nspares) == 0) { + if (spa->spa_spares.sav_config) + VERIFY(nvlist_remove(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, DATA_TYPE_NVLIST_ARRAY) == 0); + else + VERIFY(nvlist_alloc(&spa->spa_spares.sav_config, + NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, spares, nspares) == 0); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_spares(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + spa->spa_spares.sav_sync = B_TRUE; + } + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_L2CACHE, + &l2cache, &nl2cache) == 0) { + if (spa->spa_l2cache.sav_config) + VERIFY(nvlist_remove(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, DATA_TYPE_NVLIST_ARRAY) == 0); + else + VERIFY(nvlist_alloc(&spa->spa_l2cache.sav_config, + NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_nvlist_array(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, l2cache, nl2cache) == 0); + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa_load_l2cache(spa); + spa_config_exit(spa, SCL_ALL, FTAG); + spa->spa_l2cache.sav_sync = B_TRUE; + } + + /* + * Check for any removed devices. + */ + if (spa->spa_autoreplace) { + spa_aux_check_removed(&spa->spa_spares); + spa_aux_check_removed(&spa->spa_l2cache); + } + + if (spa_writeable(spa)) { + /* + * Update the config cache to include the newly-imported pool. + */ + spa_config_update(spa, SPA_CONFIG_UPDATE_POOL); + } + + /* + * It's possible that the pool was expanded while it was exported. + * We kick off an async task to handle this for us. + */ + spa_async_request(spa, SPA_ASYNC_AUTOEXPAND); + + mutex_exit(&spa_namespace_lock); + spa_history_log_version(spa, "import"); + +#ifdef _KERNEL + zvol_create_minors(pool); +#endif + + return (0); +} + +nvlist_t * +spa_tryimport(nvlist_t *tryconfig) +{ + nvlist_t *config = NULL; + char *poolname; + spa_t *spa; + uint64_t state; + int error; + + if (nvlist_lookup_string(tryconfig, ZPOOL_CONFIG_POOL_NAME, &poolname)) + return (NULL); + + if (nvlist_lookup_uint64(tryconfig, ZPOOL_CONFIG_POOL_STATE, &state)) + return (NULL); + + /* + * Create and initialize the spa structure. + */ + mutex_enter(&spa_namespace_lock); + spa = spa_add(TRYIMPORT_NAME, tryconfig, NULL); + spa_activate(spa, FREAD); + + /* + * Pass off the heavy lifting to spa_load(). + * Pass TRUE for mosconfig because the user-supplied config + * is actually the one to trust when doing an import. + */ + error = spa_load(spa, SPA_LOAD_TRYIMPORT, SPA_IMPORT_EXISTING, B_TRUE); + + /* + * If 'tryconfig' was at least parsable, return the current config. + */ + if (spa->spa_root_vdev != NULL) { + config = spa_config_generate(spa, NULL, -1ULL, B_TRUE); + VERIFY(nvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, + poolname) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, + state) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_TIMESTAMP, + spa->spa_uberblock.ub_timestamp) == 0); + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, + spa->spa_load_info) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_ERRATA, + spa->spa_errata) == 0); + + /* + * If the bootfs property exists on this pool then we + * copy it out so that external consumers can tell which + * pools are bootable. + */ + if ((!error || error == EEXIST) && spa->spa_bootfs) { + char *tmpname = kmem_alloc(MAXPATHLEN, KM_SLEEP); + + /* + * We have to play games with the name since the + * pool was opened as TRYIMPORT_NAME. + */ + if (dsl_dsobj_to_dsname(spa_name(spa), + spa->spa_bootfs, tmpname) == 0) { + char *cp; + char *dsname; + + dsname = kmem_alloc(MAXPATHLEN, KM_SLEEP); + + cp = strchr(tmpname, '/'); + if (cp == NULL) { + (void) strlcpy(dsname, tmpname, + MAXPATHLEN); + } else { + (void) snprintf(dsname, MAXPATHLEN, + "%s/%s", poolname, ++cp); + } + VERIFY(nvlist_add_string(config, + ZPOOL_CONFIG_BOOTFS, dsname) == 0); + kmem_free(dsname, MAXPATHLEN); + } + kmem_free(tmpname, MAXPATHLEN); + } + + /* + * Add the list of hot spares and level 2 cache devices. + */ + spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER); + spa_add_spares(spa, config); + spa_add_l2cache(spa, config); + spa_config_exit(spa, SCL_CONFIG, FTAG); + } + + spa_unload(spa); + spa_deactivate(spa); + spa_remove(spa); + mutex_exit(&spa_namespace_lock); + + return (config); +} + +/* + * Pool export/destroy + * + * The act of destroying or exporting a pool is very simple. We make sure there + * is no more pending I/O and any references to the pool are gone. Then, we + * update the pool state and sync all the labels to disk, removing the + * configuration from the cache afterwards. If the 'hardforce' flag is set, then + * we don't sync the labels or remove the configuration cache. + */ +static int +spa_export_common(char *pool, int new_state, nvlist_t **oldconfig, + boolean_t force, boolean_t hardforce) +{ + spa_t *spa; + + if (oldconfig) + *oldconfig = NULL; + + if (!(spa_mode_global & FWRITE)) + return (SET_ERROR(EROFS)); + + mutex_enter(&spa_namespace_lock); + if ((spa = spa_lookup(pool)) == NULL) { + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(ENOENT)); + } + + /* + * Put a hold on the pool, drop the namespace lock, stop async tasks, + * reacquire the namespace lock, and see if we can export. + */ + spa_open_ref(spa, FTAG); + mutex_exit(&spa_namespace_lock); + spa_async_suspend(spa); + mutex_enter(&spa_namespace_lock); + spa_close(spa, FTAG); + + if (spa->spa_state == POOL_STATE_UNINITIALIZED) + goto export_spa; + /* + * The pool will be in core if it's openable, in which case we can + * modify its state. Objsets may be open only because they're dirty, + * so we have to force it to sync before checking spa_refcnt. + */ + if (spa->spa_sync_on) { + txg_wait_synced(spa->spa_dsl_pool, 0); + spa_evicting_os_wait(spa); + } + + /* + * A pool cannot be exported or destroyed if there are active + * references. If we are resetting a pool, allow references by + * fault injection handlers. + */ + if (!spa_refcount_zero(spa) || + (spa->spa_inject_ref != 0 && + new_state != POOL_STATE_UNINITIALIZED)) { + spa_async_resume(spa); + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(EBUSY)); + } + + if (spa->spa_sync_on) { + /* + * A pool cannot be exported if it has an active shared spare. + * This is to prevent other pools stealing the active spare + * from an exported pool. At user's own will, such pool can + * be forcedly exported. + */ + if (!force && new_state == POOL_STATE_EXPORTED && + spa_has_active_shared_spare(spa)) { + spa_async_resume(spa); + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(EXDEV)); + } + + /* + * We want this to be reflected on every label, + * so mark them all dirty. spa_unload() will do the + * final sync that pushes these changes out. + */ + if (new_state != POOL_STATE_UNINITIALIZED && !hardforce) { + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + spa->spa_state = new_state; + spa->spa_final_txg = spa_last_synced_txg(spa) + + TXG_DEFER_SIZE + 1; + vdev_config_dirty(spa->spa_root_vdev); + spa_config_exit(spa, SCL_ALL, FTAG); + } + } + +export_spa: + spa_event_notify(spa, NULL, FM_EREPORT_ZFS_POOL_DESTROY); + + if (spa->spa_state != POOL_STATE_UNINITIALIZED) { + spa_unload(spa); + spa_deactivate(spa); + } + + if (oldconfig && spa->spa_config) + VERIFY(nvlist_dup(spa->spa_config, oldconfig, 0) == 0); + + if (new_state != POOL_STATE_UNINITIALIZED) { + if (!hardforce) + spa_config_sync(spa, B_TRUE, B_TRUE); + spa_remove(spa); + } + mutex_exit(&spa_namespace_lock); + + return (0); +} + +/* + * Destroy a storage pool. + */ +int +spa_destroy(char *pool) +{ + return (spa_export_common(pool, POOL_STATE_DESTROYED, NULL, + B_FALSE, B_FALSE)); +} + +/* + * Export a storage pool. + */ +int +spa_export(char *pool, nvlist_t **oldconfig, boolean_t force, + boolean_t hardforce) +{ + return (spa_export_common(pool, POOL_STATE_EXPORTED, oldconfig, + force, hardforce)); +} + +/* + * Similar to spa_export(), this unloads the spa_t without actually removing it + * from the namespace in any way. + */ +int +spa_reset(char *pool) +{ + return (spa_export_common(pool, POOL_STATE_UNINITIALIZED, NULL, + B_FALSE, B_FALSE)); +} + +/* + * ========================================================================== + * Device manipulation + * ========================================================================== + */ + +/* + * Add a device to a storage pool. + */ +int +spa_vdev_add(spa_t *spa, nvlist_t *nvroot) +{ + uint64_t txg, id; + int error; + vdev_t *rvd = spa->spa_root_vdev; + vdev_t *vd, *tvd; + nvlist_t **spares, **l2cache; + uint_t nspares, nl2cache; + int c; + + ASSERT(spa_writeable(spa)); + + txg = spa_vdev_enter(spa); + + if ((error = spa_config_parse(spa, &vd, nvroot, NULL, 0, + VDEV_ALLOC_ADD)) != 0) + return (spa_vdev_exit(spa, NULL, txg, error)); + + spa->spa_pending_vdev = vd; /* spa_vdev_exit() will clear this */ + + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_SPARES, &spares, + &nspares) != 0) + nspares = 0; + + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_L2CACHE, &l2cache, + &nl2cache) != 0) + nl2cache = 0; + + if (vd->vdev_children == 0 && nspares == 0 && nl2cache == 0) + return (spa_vdev_exit(spa, vd, txg, EINVAL)); + + if (vd->vdev_children != 0 && + (error = vdev_create(vd, txg, B_FALSE)) != 0) + return (spa_vdev_exit(spa, vd, txg, error)); + + /* + * We must validate the spares and l2cache devices after checking the + * children. Otherwise, vdev_inuse() will blindly overwrite the spare. + */ + if ((error = spa_validate_aux(spa, nvroot, txg, VDEV_ALLOC_ADD)) != 0) + return (spa_vdev_exit(spa, vd, txg, error)); + + /* + * Transfer each new top-level vdev from vd to rvd. + */ + for (c = 0; c < vd->vdev_children; c++) { + + /* + * Set the vdev id to the first hole, if one exists. + */ + for (id = 0; id < rvd->vdev_children; id++) { + if (rvd->vdev_child[id]->vdev_ishole) { + vdev_free(rvd->vdev_child[id]); + break; + } + } + tvd = vd->vdev_child[c]; + vdev_remove_child(vd, tvd); + tvd->vdev_id = id; + vdev_add_child(rvd, tvd); + vdev_config_dirty(tvd); + } + + if (nspares != 0) { + spa_set_aux_vdevs(&spa->spa_spares, spares, nspares, + ZPOOL_CONFIG_SPARES); + spa_load_spares(spa); + spa->spa_spares.sav_sync = B_TRUE; + } + + if (nl2cache != 0) { + spa_set_aux_vdevs(&spa->spa_l2cache, l2cache, nl2cache, + ZPOOL_CONFIG_L2CACHE); + spa_load_l2cache(spa); + spa->spa_l2cache.sav_sync = B_TRUE; + } + + /* + * We have to be careful when adding new vdevs to an existing pool. + * If other threads start allocating from these vdevs before we + * sync the config cache, and we lose power, then upon reboot we may + * fail to open the pool because there are DVAs that the config cache + * can't translate. Therefore, we first add the vdevs without + * initializing metaslabs; sync the config cache (via spa_vdev_exit()); + * and then let spa_config_update() initialize the new metaslabs. + * + * spa_load() checks for added-but-not-initialized vdevs, so that + * if we lose power at any point in this sequence, the remaining + * steps will be completed the next time we load the pool. + */ + (void) spa_vdev_exit(spa, vd, txg, 0); + + mutex_enter(&spa_namespace_lock); + spa_config_update(spa, SPA_CONFIG_UPDATE_POOL); + mutex_exit(&spa_namespace_lock); + + return (0); +} + +/* + * Attach a device to a mirror. The arguments are the path to any device + * in the mirror, and the nvroot for the new device. If the path specifies + * a device that is not mirrored, we automatically insert the mirror vdev. + * + * If 'replacing' is specified, the new device is intended to replace the + * existing device; in this case the two devices are made into their own + * mirror using the 'replacing' vdev, which is functionally identical to + * the mirror vdev (it actually reuses all the same ops) but has a few + * extra rules: you can't attach to it after it's been created, and upon + * completion of resilvering, the first disk (the one being replaced) + * is automatically detached. + */ +int +spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing) +{ + uint64_t txg, dtl_max_txg; + vdev_t *oldvd, *newvd, *newrootvd, *pvd, *tvd; + vdev_ops_t *pvops; + char *oldvdpath, *newvdpath; + int newvd_isspare; + int error; + ASSERTV(vdev_t *rvd = spa->spa_root_vdev); + + ASSERT(spa_writeable(spa)); + + txg = spa_vdev_enter(spa); + + oldvd = spa_lookup_by_guid(spa, guid, B_FALSE); + + if (oldvd == NULL) + return (spa_vdev_exit(spa, NULL, txg, ENODEV)); + + if (!oldvd->vdev_ops->vdev_op_leaf) + return (spa_vdev_exit(spa, NULL, txg, ENOTSUP)); + + pvd = oldvd->vdev_parent; + + if ((error = spa_config_parse(spa, &newrootvd, nvroot, NULL, 0, + VDEV_ALLOC_ATTACH)) != 0) + return (spa_vdev_exit(spa, NULL, txg, EINVAL)); + + if (newrootvd->vdev_children != 1) + return (spa_vdev_exit(spa, newrootvd, txg, EINVAL)); + + newvd = newrootvd->vdev_child[0]; + + if (!newvd->vdev_ops->vdev_op_leaf) + return (spa_vdev_exit(spa, newrootvd, txg, EINVAL)); + + if ((error = vdev_create(newrootvd, txg, replacing)) != 0) + return (spa_vdev_exit(spa, newrootvd, txg, error)); + + /* + * Spares can't replace logs + */ + if (oldvd->vdev_top->vdev_islog && newvd->vdev_isspare) + return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + + if (!replacing) { + /* + * For attach, the only allowable parent is a mirror or the root + * vdev. + */ + if (pvd->vdev_ops != &vdev_mirror_ops && + pvd->vdev_ops != &vdev_root_ops) + return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + + pvops = &vdev_mirror_ops; + } else { + /* + * Active hot spares can only be replaced by inactive hot + * spares. + */ + if (pvd->vdev_ops == &vdev_spare_ops && + oldvd->vdev_isspare && + !spa_has_spare(spa, newvd->vdev_guid)) + return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + + /* + * If the source is a hot spare, and the parent isn't already a + * spare, then we want to create a new hot spare. Otherwise, we + * want to create a replacing vdev. The user is not allowed to + * attach to a spared vdev child unless the 'isspare' state is + * the same (spare replaces spare, non-spare replaces + * non-spare). + */ + if (pvd->vdev_ops == &vdev_replacing_ops && + spa_version(spa) < SPA_VERSION_MULTI_REPLACE) { + return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + } else if (pvd->vdev_ops == &vdev_spare_ops && + newvd->vdev_isspare != oldvd->vdev_isspare) { + return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + } + + if (newvd->vdev_isspare) + pvops = &vdev_spare_ops; + else + pvops = &vdev_replacing_ops; + } + + /* + * Make sure the new device is big enough. + */ + if (newvd->vdev_asize < vdev_get_min_asize(oldvd)) + return (spa_vdev_exit(spa, newrootvd, txg, EOVERFLOW)); + + /* + * The new device cannot have a higher alignment requirement + * than the top-level vdev. + */ + if (newvd->vdev_ashift > oldvd->vdev_top->vdev_ashift) + return (spa_vdev_exit(spa, newrootvd, txg, EDOM)); + + /* + * If this is an in-place replacement, update oldvd's path and devid + * to make it distinguishable from newvd, and unopenable from now on. + */ + if (strcmp(oldvd->vdev_path, newvd->vdev_path) == 0) { + spa_strfree(oldvd->vdev_path); + oldvd->vdev_path = kmem_alloc(strlen(newvd->vdev_path) + 5, + KM_SLEEP); + (void) sprintf(oldvd->vdev_path, "%s/%s", + newvd->vdev_path, "old"); + if (oldvd->vdev_devid != NULL) { + spa_strfree(oldvd->vdev_devid); + oldvd->vdev_devid = NULL; + } + } + + /* mark the device being resilvered */ + newvd->vdev_resilver_txg = txg; + + /* + * If the parent is not a mirror, or if we're replacing, insert the new + * mirror/replacing/spare vdev above oldvd. + */ + if (pvd->vdev_ops != pvops) + pvd = vdev_add_parent(oldvd, pvops); + + ASSERT(pvd->vdev_top->vdev_parent == rvd); + ASSERT(pvd->vdev_ops == pvops); + ASSERT(oldvd->vdev_parent == pvd); + + /* + * Extract the new device from its root and add it to pvd. + */ + vdev_remove_child(newrootvd, newvd); + newvd->vdev_id = pvd->vdev_children; + newvd->vdev_crtxg = oldvd->vdev_crtxg; + vdev_add_child(pvd, newvd); + + tvd = newvd->vdev_top; + ASSERT(pvd->vdev_top == tvd); + ASSERT(tvd->vdev_parent == rvd); + + vdev_config_dirty(tvd); + + /* + * Set newvd's DTL to [TXG_INITIAL, dtl_max_txg) so that we account + * for any dmu_sync-ed blocks. It will propagate upward when + * spa_vdev_exit() calls vdev_dtl_reassess(). + */ + dtl_max_txg = txg + TXG_CONCURRENT_STATES; + + vdev_dtl_dirty(newvd, DTL_MISSING, TXG_INITIAL, + dtl_max_txg - TXG_INITIAL); + + if (newvd->vdev_isspare) { + spa_spare_activate(newvd); + spa_event_notify(spa, newvd, FM_EREPORT_ZFS_DEVICE_SPARE); + } + + oldvdpath = spa_strdup(oldvd->vdev_path); + newvdpath = spa_strdup(newvd->vdev_path); + newvd_isspare = newvd->vdev_isspare; + + /* + * Mark newvd's DTL dirty in this txg. + */ + vdev_dirty(tvd, VDD_DTL, newvd, txg); + + /* + * Schedule the resilver to restart in the future. We do this to + * ensure that dmu_sync-ed blocks have been stitched into the + * respective datasets. + */ + dsl_resilver_restart(spa->spa_dsl_pool, dtl_max_txg); + + /* + * Commit the config + */ + (void) spa_vdev_exit(spa, newrootvd, dtl_max_txg, 0); + + spa_history_log_internal(spa, "vdev attach", NULL, + "%s vdev=%s %s vdev=%s", + replacing && newvd_isspare ? "spare in" : + replacing ? "replace" : "attach", newvdpath, + replacing ? "for" : "to", oldvdpath); + + spa_strfree(oldvdpath); + spa_strfree(newvdpath); + + if (spa->spa_bootfs) + spa_event_notify(spa, newvd, FM_EREPORT_ZFS_BOOTFS_VDEV_ATTACH); + + return (0); +} + +/* + * Detach a device from a mirror or replacing vdev. + * + * If 'replace_done' is specified, only detach if the parent + * is a replacing vdev. + */ +int +spa_vdev_detach(spa_t *spa, uint64_t guid, uint64_t pguid, int replace_done) +{ + uint64_t txg; + int error; + vdev_t *vd, *pvd, *cvd, *tvd; + boolean_t unspare = B_FALSE; + uint64_t unspare_guid = 0; + char *vdpath; + int c, t; + ASSERTV(vdev_t *rvd = spa->spa_root_vdev); + ASSERT(spa_writeable(spa)); + + txg = spa_vdev_enter(spa); + + vd = spa_lookup_by_guid(spa, guid, B_FALSE); + + if (vd == NULL) + return (spa_vdev_exit(spa, NULL, txg, ENODEV)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_exit(spa, NULL, txg, ENOTSUP)); + + pvd = vd->vdev_parent; + + /* + * If the parent/child relationship is not as expected, don't do it. + * Consider M(A,R(B,C)) -- that is, a mirror of A with a replacing + * vdev that's replacing B with C. The user's intent in replacing + * is to go from M(A,B) to M(A,C). If the user decides to cancel + * the replace by detaching C, the expected behavior is to end up + * M(A,B). But suppose that right after deciding to detach C, + * the replacement of B completes. We would have M(A,C), and then + * ask to detach C, which would leave us with just A -- not what + * the user wanted. To prevent this, we make sure that the + * parent/child relationship hasn't changed -- in this example, + * that C's parent is still the replacing vdev R. + */ + if (pvd->vdev_guid != pguid && pguid != 0) + return (spa_vdev_exit(spa, NULL, txg, EBUSY)); + + /* + * Only 'replacing' or 'spare' vdevs can be replaced. + */ + if (replace_done && pvd->vdev_ops != &vdev_replacing_ops && + pvd->vdev_ops != &vdev_spare_ops) + return (spa_vdev_exit(spa, NULL, txg, ENOTSUP)); + + ASSERT(pvd->vdev_ops != &vdev_spare_ops || + spa_version(spa) >= SPA_VERSION_SPARES); + + /* + * Only mirror, replacing, and spare vdevs support detach. + */ + if (pvd->vdev_ops != &vdev_replacing_ops && + pvd->vdev_ops != &vdev_mirror_ops && + pvd->vdev_ops != &vdev_spare_ops) + return (spa_vdev_exit(spa, NULL, txg, ENOTSUP)); + + /* + * If this device has the only valid copy of some data, + * we cannot safely detach it. + */ + if (vdev_dtl_required(vd)) + return (spa_vdev_exit(spa, NULL, txg, EBUSY)); + + ASSERT(pvd->vdev_children >= 2); + + /* + * If we are detaching the second disk from a replacing vdev, then + * check to see if we changed the original vdev's path to have "/old" + * at the end in spa_vdev_attach(). If so, undo that change now. + */ + if (pvd->vdev_ops == &vdev_replacing_ops && vd->vdev_id > 0 && + vd->vdev_path != NULL) { + size_t len = strlen(vd->vdev_path); + + for (c = 0; c < pvd->vdev_children; c++) { + cvd = pvd->vdev_child[c]; + + if (cvd == vd || cvd->vdev_path == NULL) + continue; + + if (strncmp(cvd->vdev_path, vd->vdev_path, len) == 0 && + strcmp(cvd->vdev_path + len, "/old") == 0) { + spa_strfree(cvd->vdev_path); + cvd->vdev_path = spa_strdup(vd->vdev_path); + break; + } + } + } + + /* + * If we are detaching the original disk from a spare, then it implies + * that the spare should become a real disk, and be removed from the + * active spare list for the pool. + */ + if (pvd->vdev_ops == &vdev_spare_ops && + vd->vdev_id == 0 && + pvd->vdev_child[pvd->vdev_children - 1]->vdev_isspare) + unspare = B_TRUE; + + /* + * Erase the disk labels so the disk can be used for other things. + * This must be done after all other error cases are handled, + * but before we disembowel vd (so we can still do I/O to it). + * But if we can't do it, don't treat the error as fatal -- + * it may be that the unwritability of the disk is the reason + * it's being detached! + */ + error = vdev_label_init(vd, 0, VDEV_LABEL_REMOVE); + + /* + * Remove vd from its parent and compact the parent's children. + */ + vdev_remove_child(pvd, vd); + vdev_compact_children(pvd); + + /* + * Remember one of the remaining children so we can get tvd below. + */ + cvd = pvd->vdev_child[pvd->vdev_children - 1]; + + /* + * If we need to remove the remaining child from the list of hot spares, + * do it now, marking the vdev as no longer a spare in the process. + * We must do this before vdev_remove_parent(), because that can + * change the GUID if it creates a new toplevel GUID. For a similar + * reason, we must remove the spare now, in the same txg as the detach; + * otherwise someone could attach a new sibling, change the GUID, and + * the subsequent attempt to spa_vdev_remove(unspare_guid) would fail. + */ + if (unspare) { + ASSERT(cvd->vdev_isspare); + spa_spare_remove(cvd); + unspare_guid = cvd->vdev_guid; + (void) spa_vdev_remove(spa, unspare_guid, B_TRUE); + cvd->vdev_unspare = B_TRUE; + } + + /* + * If the parent mirror/replacing vdev only has one child, + * the parent is no longer needed. Remove it from the tree. + */ + if (pvd->vdev_children == 1) { + if (pvd->vdev_ops == &vdev_spare_ops) + cvd->vdev_unspare = B_FALSE; + vdev_remove_parent(cvd); + } + + + /* + * We don't set tvd until now because the parent we just removed + * may have been the previous top-level vdev. + */ + tvd = cvd->vdev_top; + ASSERT(tvd->vdev_parent == rvd); + + /* + * Reevaluate the parent vdev state. + */ + vdev_propagate_state(cvd); + + /* + * If the 'autoexpand' property is set on the pool then automatically + * try to expand the size of the pool. For example if the device we + * just detached was smaller than the others, it may be possible to + * add metaslabs (i.e. grow the pool). We need to reopen the vdev + * first so that we can obtain the updated sizes of the leaf vdevs. + */ + if (spa->spa_autoexpand) { + vdev_reopen(tvd); + vdev_expand(tvd, txg); + } + + vdev_config_dirty(tvd); + + /* + * Mark vd's DTL as dirty in this txg. vdev_dtl_sync() will see that + * vd->vdev_detached is set and free vd's DTL object in syncing context. + * But first make sure we're not on any *other* txg's DTL list, to + * prevent vd from being accessed after it's freed. + */ + vdpath = spa_strdup(vd->vdev_path); + for (t = 0; t < TXG_SIZE; t++) + (void) txg_list_remove_this(&tvd->vdev_dtl_list, vd, t); + vd->vdev_detached = B_TRUE; + vdev_dirty(tvd, VDD_DTL, vd, txg); + + spa_event_notify(spa, vd, FM_EREPORT_ZFS_DEVICE_REMOVE); + + /* hang on to the spa before we release the lock */ + spa_open_ref(spa, FTAG); + + error = spa_vdev_exit(spa, vd, txg, 0); + + spa_history_log_internal(spa, "detach", NULL, + "vdev=%s", vdpath); + spa_strfree(vdpath); + + /* + * If this was the removal of the original device in a hot spare vdev, + * then we want to go through and remove the device from the hot spare + * list of every other pool. + */ + if (unspare) { + spa_t *altspa = NULL; + + mutex_enter(&spa_namespace_lock); + while ((altspa = spa_next(altspa)) != NULL) { + if (altspa->spa_state != POOL_STATE_ACTIVE || + altspa == spa) + continue; + + spa_open_ref(altspa, FTAG); + mutex_exit(&spa_namespace_lock); + (void) spa_vdev_remove(altspa, unspare_guid, B_TRUE); + mutex_enter(&spa_namespace_lock); + spa_close(altspa, FTAG); + } + mutex_exit(&spa_namespace_lock); + + /* search the rest of the vdevs for spares to remove */ + spa_vdev_resilver_done(spa); + } + + /* all done with the spa; OK to release */ + mutex_enter(&spa_namespace_lock); + spa_close(spa, FTAG); + mutex_exit(&spa_namespace_lock); + + return (error); +} + +/* + * Split a set of devices from their mirrors, and create a new pool from them. + */ +int +spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config, + nvlist_t *props, boolean_t exp) +{ + int error = 0; + uint64_t txg, *glist; + spa_t *newspa; + uint_t c, children, lastlog; + nvlist_t **child, *nvl, *tmp; + dmu_tx_t *tx; + char *altroot = NULL; + vdev_t *rvd, **vml = NULL; /* vdev modify list */ + boolean_t activate_slog; + + ASSERT(spa_writeable(spa)); + + txg = spa_vdev_enter(spa); + + /* clear the log and flush everything up to now */ + activate_slog = spa_passivate_log(spa); + (void) spa_vdev_config_exit(spa, NULL, txg, 0, FTAG); + error = spa_offline_log(spa); + txg = spa_vdev_config_enter(spa); + + if (activate_slog) + spa_activate_log(spa); + + if (error != 0) + return (spa_vdev_exit(spa, NULL, txg, error)); + + /* check new spa name before going any further */ + if (spa_lookup(newname) != NULL) + return (spa_vdev_exit(spa, NULL, txg, EEXIST)); + + /* + * scan through all the children to ensure they're all mirrors + */ + if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvl) != 0 || + nvlist_lookup_nvlist_array(nvl, ZPOOL_CONFIG_CHILDREN, &child, + &children) != 0) + return (spa_vdev_exit(spa, NULL, txg, EINVAL)); + + /* first, check to ensure we've got the right child count */ + rvd = spa->spa_root_vdev; + lastlog = 0; + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *vd = rvd->vdev_child[c]; + + /* don't count the holes & logs as children */ + if (vd->vdev_islog || vd->vdev_ishole) { + if (lastlog == 0) + lastlog = c; + continue; + } + + lastlog = 0; + } + if (children != (lastlog != 0 ? lastlog : rvd->vdev_children)) + return (spa_vdev_exit(spa, NULL, txg, EINVAL)); + + /* next, ensure no spare or cache devices are part of the split */ + if (nvlist_lookup_nvlist(nvl, ZPOOL_CONFIG_SPARES, &tmp) == 0 || + nvlist_lookup_nvlist(nvl, ZPOOL_CONFIG_L2CACHE, &tmp) == 0) + return (spa_vdev_exit(spa, NULL, txg, EINVAL)); + + vml = kmem_zalloc(children * sizeof (vdev_t *), KM_SLEEP); + glist = kmem_zalloc(children * sizeof (uint64_t), KM_SLEEP); + + /* then, loop over each vdev and validate it */ + for (c = 0; c < children; c++) { + uint64_t is_hole = 0; + + (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_HOLE, + &is_hole); + + if (is_hole != 0) { + if (spa->spa_root_vdev->vdev_child[c]->vdev_ishole || + spa->spa_root_vdev->vdev_child[c]->vdev_islog) { + continue; + } else { + error = SET_ERROR(EINVAL); + break; + } + } + + /* which disk is going to be split? */ + if (nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_GUID, + &glist[c]) != 0) { + error = SET_ERROR(EINVAL); + break; + } + + /* look it up in the spa */ + vml[c] = spa_lookup_by_guid(spa, glist[c], B_FALSE); + if (vml[c] == NULL) { + error = SET_ERROR(ENODEV); + break; + } + + /* make sure there's nothing stopping the split */ + if (vml[c]->vdev_parent->vdev_ops != &vdev_mirror_ops || + vml[c]->vdev_islog || + vml[c]->vdev_ishole || + vml[c]->vdev_isspare || + vml[c]->vdev_isl2cache || + !vdev_writeable(vml[c]) || + vml[c]->vdev_children != 0 || + vml[c]->vdev_state != VDEV_STATE_HEALTHY || + c != spa->spa_root_vdev->vdev_child[c]->vdev_id) { + error = SET_ERROR(EINVAL); + break; + } + + if (vdev_dtl_required(vml[c])) { + error = SET_ERROR(EBUSY); + break; + } + + /* we need certain info from the top level */ + VERIFY(nvlist_add_uint64(child[c], ZPOOL_CONFIG_METASLAB_ARRAY, + vml[c]->vdev_top->vdev_ms_array) == 0); + VERIFY(nvlist_add_uint64(child[c], ZPOOL_CONFIG_METASLAB_SHIFT, + vml[c]->vdev_top->vdev_ms_shift) == 0); + VERIFY(nvlist_add_uint64(child[c], ZPOOL_CONFIG_ASIZE, + vml[c]->vdev_top->vdev_asize) == 0); + VERIFY(nvlist_add_uint64(child[c], ZPOOL_CONFIG_ASHIFT, + vml[c]->vdev_top->vdev_ashift) == 0); + } + + if (error != 0) { + kmem_free(vml, children * sizeof (vdev_t *)); + kmem_free(glist, children * sizeof (uint64_t)); + return (spa_vdev_exit(spa, NULL, txg, error)); + } + + /* stop writers from using the disks */ + for (c = 0; c < children; c++) { + if (vml[c] != NULL) + vml[c]->vdev_offline = B_TRUE; + } + vdev_reopen(spa->spa_root_vdev); + + /* + * Temporarily record the splitting vdevs in the spa config. This + * will disappear once the config is regenerated. + */ + VERIFY(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_uint64_array(nvl, ZPOOL_CONFIG_SPLIT_LIST, + glist, children) == 0); + kmem_free(glist, children * sizeof (uint64_t)); + + mutex_enter(&spa->spa_props_lock); + VERIFY(nvlist_add_nvlist(spa->spa_config, ZPOOL_CONFIG_SPLIT, + nvl) == 0); + mutex_exit(&spa->spa_props_lock); + spa->spa_config_splitting = nvl; + vdev_config_dirty(spa->spa_root_vdev); + + /* configure and create the new pool */ + VERIFY(nvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, newname) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, + exp ? POOL_STATE_EXPORTED : POOL_STATE_ACTIVE) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, + spa_version(spa)) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, + spa->spa_config_txg) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, + spa_generate_guid(NULL)) == 0); + (void) nvlist_lookup_string(props, + zpool_prop_to_name(ZPOOL_PROP_ALTROOT), &altroot); + + /* add the new pool to the namespace */ + newspa = spa_add(newname, config, altroot); + newspa->spa_config_txg = spa->spa_config_txg; + spa_set_log_state(newspa, SPA_LOG_CLEAR); + + /* release the spa config lock, retaining the namespace lock */ + spa_vdev_config_exit(spa, NULL, txg, 0, FTAG); + + if (zio_injection_enabled) + zio_handle_panic_injection(spa, FTAG, 1); + + spa_activate(newspa, spa_mode_global); + spa_async_suspend(newspa); + + /* create the new pool from the disks of the original pool */ + error = spa_load(newspa, SPA_LOAD_IMPORT, SPA_IMPORT_ASSEMBLE, B_TRUE); + if (error) + goto out; + + /* if that worked, generate a real config for the new pool */ + if (newspa->spa_root_vdev != NULL) { + VERIFY(nvlist_alloc(&newspa->spa_config_splitting, + NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_uint64(newspa->spa_config_splitting, + ZPOOL_CONFIG_SPLIT_GUID, spa_guid(spa)) == 0); + spa_config_set(newspa, spa_config_generate(newspa, NULL, -1ULL, + B_TRUE)); + } + + /* set the props */ + if (props != NULL) { + spa_configfile_set(newspa, props, B_FALSE); + error = spa_prop_set(newspa, props); + if (error) + goto out; + } + + /* flush everything */ + txg = spa_vdev_config_enter(newspa); + vdev_config_dirty(newspa->spa_root_vdev); + (void) spa_vdev_config_exit(newspa, NULL, txg, 0, FTAG); + + if (zio_injection_enabled) + zio_handle_panic_injection(spa, FTAG, 2); + + spa_async_resume(newspa); + + /* finally, update the original pool's config */ + txg = spa_vdev_config_enter(spa); + tx = dmu_tx_create_dd(spa_get_dsl(spa)->dp_mos_dir); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error != 0) + dmu_tx_abort(tx); + for (c = 0; c < children; c++) { + if (vml[c] != NULL) { + vdev_split(vml[c]); + if (error == 0) + spa_history_log_internal(spa, "detach", tx, + "vdev=%s", vml[c]->vdev_path); + vdev_free(vml[c]); + } + } + vdev_config_dirty(spa->spa_root_vdev); + spa->spa_config_splitting = NULL; + nvlist_free(nvl); + if (error == 0) + dmu_tx_commit(tx); + (void) spa_vdev_exit(spa, NULL, txg, 0); + + if (zio_injection_enabled) + zio_handle_panic_injection(spa, FTAG, 3); + + /* split is complete; log a history record */ + spa_history_log_internal(newspa, "split", NULL, + "from pool %s", spa_name(spa)); + + kmem_free(vml, children * sizeof (vdev_t *)); + + /* if we're not going to mount the filesystems in userland, export */ + if (exp) + error = spa_export_common(newname, POOL_STATE_EXPORTED, NULL, + B_FALSE, B_FALSE); + + return (error); + +out: + spa_unload(newspa); + spa_deactivate(newspa); + spa_remove(newspa); + + txg = spa_vdev_config_enter(spa); + + /* re-online all offlined disks */ + for (c = 0; c < children; c++) { + if (vml[c] != NULL) + vml[c]->vdev_offline = B_FALSE; + } + vdev_reopen(spa->spa_root_vdev); + + nvlist_free(spa->spa_config_splitting); + spa->spa_config_splitting = NULL; + (void) spa_vdev_exit(spa, NULL, txg, error); + + kmem_free(vml, children * sizeof (vdev_t *)); + return (error); +} + +static nvlist_t * +spa_nvlist_lookup_by_guid(nvlist_t **nvpp, int count, uint64_t target_guid) +{ + int i; + + for (i = 0; i < count; i++) { + uint64_t guid; + + VERIFY(nvlist_lookup_uint64(nvpp[i], ZPOOL_CONFIG_GUID, + &guid) == 0); + + if (guid == target_guid) + return (nvpp[i]); + } + + return (NULL); +} + +static void +spa_vdev_remove_aux(nvlist_t *config, char *name, nvlist_t **dev, int count, + nvlist_t *dev_to_remove) +{ + nvlist_t **newdev = NULL; + int i, j; + + if (count > 1) + newdev = kmem_alloc((count - 1) * sizeof (void *), KM_SLEEP); + + for (i = 0, j = 0; i < count; i++) { + if (dev[i] == dev_to_remove) + continue; + VERIFY(nvlist_dup(dev[i], &newdev[j++], KM_SLEEP) == 0); + } + + VERIFY(nvlist_remove(config, name, DATA_TYPE_NVLIST_ARRAY) == 0); + VERIFY(nvlist_add_nvlist_array(config, name, newdev, count - 1) == 0); + + for (i = 0; i < count - 1; i++) + nvlist_free(newdev[i]); + + if (count > 1) + kmem_free(newdev, (count - 1) * sizeof (void *)); +} + +/* + * Evacuate the device. + */ +static int +spa_vdev_remove_evacuate(spa_t *spa, vdev_t *vd) +{ + uint64_t txg; + int error = 0; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0); + ASSERT(vd == vd->vdev_top); + + /* + * Evacuate the device. We don't hold the config lock as writer + * since we need to do I/O but we do keep the + * spa_namespace_lock held. Once this completes the device + * should no longer have any blocks allocated on it. + */ + if (vd->vdev_islog) { + if (vd->vdev_stat.vs_alloc != 0) + error = spa_offline_log(spa); + } else { + error = SET_ERROR(ENOTSUP); + } + + if (error) + return (error); + + /* + * The evacuation succeeded. Remove any remaining MOS metadata + * associated with this vdev, and wait for these changes to sync. + */ + ASSERT0(vd->vdev_stat.vs_alloc); + txg = spa_vdev_config_enter(spa); + vd->vdev_removing = B_TRUE; + vdev_dirty_leaves(vd, VDD_DTL, txg); + vdev_config_dirty(vd); + spa_vdev_config_exit(spa, NULL, txg, 0, FTAG); + + return (0); +} + +/* + * Complete the removal by cleaning up the namespace. + */ +static void +spa_vdev_remove_from_namespace(spa_t *spa, vdev_t *vd) +{ + vdev_t *rvd = spa->spa_root_vdev; + uint64_t id = vd->vdev_id; + boolean_t last_vdev = (id == (rvd->vdev_children - 1)); + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + ASSERT(vd == vd->vdev_top); + + /* + * Only remove any devices which are empty. + */ + if (vd->vdev_stat.vs_alloc != 0) + return; + + (void) vdev_label_init(vd, 0, VDEV_LABEL_REMOVE); + + if (list_link_active(&vd->vdev_state_dirty_node)) + vdev_state_clean(vd); + if (list_link_active(&vd->vdev_config_dirty_node)) + vdev_config_clean(vd); + + vdev_free(vd); + + if (last_vdev) { + vdev_compact_children(rvd); + } else { + vd = vdev_alloc_common(spa, id, 0, &vdev_hole_ops); + vdev_add_child(rvd, vd); + } + vdev_config_dirty(rvd); + + /* + * Reassess the health of our root vdev. + */ + vdev_reopen(rvd); +} + +/* + * Remove a device from the pool - + * + * Removing a device from the vdev namespace requires several steps + * and can take a significant amount of time. As a result we use + * the spa_vdev_config_[enter/exit] functions which allow us to + * grab and release the spa_config_lock while still holding the namespace + * lock. During each step the configuration is synced out. + * + * Currently, this supports removing only hot spares, slogs, and level 2 ARC + * devices. + */ +int +spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare) +{ + vdev_t *vd; + metaslab_group_t *mg; + nvlist_t **spares, **l2cache, *nv; + uint64_t txg = 0; + uint_t nspares, nl2cache; + int error = 0; + boolean_t locked = MUTEX_HELD(&spa_namespace_lock); + + ASSERT(spa_writeable(spa)); + + if (!locked) + txg = spa_vdev_enter(spa); + + vd = spa_lookup_by_guid(spa, guid, B_FALSE); + + if (spa->spa_spares.sav_vdevs != NULL && + nvlist_lookup_nvlist_array(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0 && + (nv = spa_nvlist_lookup_by_guid(spares, nspares, guid)) != NULL) { + /* + * Only remove the hot spare if it's not currently in use + * in this pool. + */ + if (vd == NULL || unspare) { + spa_vdev_remove_aux(spa->spa_spares.sav_config, + ZPOOL_CONFIG_SPARES, spares, nspares, nv); + spa_load_spares(spa); + spa->spa_spares.sav_sync = B_TRUE; + } else { + error = SET_ERROR(EBUSY); + } + } else if (spa->spa_l2cache.sav_vdevs != NULL && + nvlist_lookup_nvlist_array(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0 && + (nv = spa_nvlist_lookup_by_guid(l2cache, nl2cache, guid)) != NULL) { + /* + * Cache devices can always be removed. + */ + spa_vdev_remove_aux(spa->spa_l2cache.sav_config, + ZPOOL_CONFIG_L2CACHE, l2cache, nl2cache, nv); + spa_load_l2cache(spa); + spa->spa_l2cache.sav_sync = B_TRUE; + } else if (vd != NULL && vd->vdev_islog) { + ASSERT(!locked); + ASSERT(vd == vd->vdev_top); + + mg = vd->vdev_mg; + + /* + * Stop allocating from this vdev. + */ + metaslab_group_passivate(mg); + + /* + * Wait for the youngest allocations and frees to sync, + * and then wait for the deferral of those frees to finish. + */ + spa_vdev_config_exit(spa, NULL, + txg + TXG_CONCURRENT_STATES + TXG_DEFER_SIZE, 0, FTAG); + + /* + * Attempt to evacuate the vdev. + */ + error = spa_vdev_remove_evacuate(spa, vd); + + txg = spa_vdev_config_enter(spa); + + /* + * If we couldn't evacuate the vdev, unwind. + */ + if (error) { + metaslab_group_activate(mg); + return (spa_vdev_exit(spa, NULL, txg, error)); + } + + /* + * Clean up the vdev namespace. + */ + spa_vdev_remove_from_namespace(spa, vd); + + } else if (vd != NULL) { + /* + * Normal vdevs cannot be removed (yet). + */ + error = SET_ERROR(ENOTSUP); + } else { + /* + * There is no vdev of any kind with the specified guid. + */ + error = SET_ERROR(ENOENT); + } + + if (!locked) + return (spa_vdev_exit(spa, NULL, txg, error)); + + return (error); +} + +/* + * Find any device that's done replacing, or a vdev marked 'unspare' that's + * currently spared, so we can detach it. + */ +static vdev_t * +spa_vdev_resilver_done_hunt(vdev_t *vd) +{ + vdev_t *newvd, *oldvd; + int c; + + for (c = 0; c < vd->vdev_children; c++) { + oldvd = spa_vdev_resilver_done_hunt(vd->vdev_child[c]); + if (oldvd != NULL) + return (oldvd); + } + + /* + * Check for a completed replacement. We always consider the first + * vdev in the list to be the oldest vdev, and the last one to be + * the newest (see spa_vdev_attach() for how that works). In + * the case where the newest vdev is faulted, we will not automatically + * remove it after a resilver completes. This is OK as it will require + * user intervention to determine which disk the admin wishes to keep. + */ + if (vd->vdev_ops == &vdev_replacing_ops) { + ASSERT(vd->vdev_children > 1); + + newvd = vd->vdev_child[vd->vdev_children - 1]; + oldvd = vd->vdev_child[0]; + + if (vdev_dtl_empty(newvd, DTL_MISSING) && + vdev_dtl_empty(newvd, DTL_OUTAGE) && + !vdev_dtl_required(oldvd)) + return (oldvd); + } + + /* + * Check for a completed resilver with the 'unspare' flag set. + */ + if (vd->vdev_ops == &vdev_spare_ops) { + vdev_t *first = vd->vdev_child[0]; + vdev_t *last = vd->vdev_child[vd->vdev_children - 1]; + + if (last->vdev_unspare) { + oldvd = first; + newvd = last; + } else if (first->vdev_unspare) { + oldvd = last; + newvd = first; + } else { + oldvd = NULL; + } + + if (oldvd != NULL && + vdev_dtl_empty(newvd, DTL_MISSING) && + vdev_dtl_empty(newvd, DTL_OUTAGE) && + !vdev_dtl_required(oldvd)) + return (oldvd); + + /* + * If there are more than two spares attached to a disk, + * and those spares are not required, then we want to + * attempt to free them up now so that they can be used + * by other pools. Once we're back down to a single + * disk+spare, we stop removing them. + */ + if (vd->vdev_children > 2) { + newvd = vd->vdev_child[1]; + + if (newvd->vdev_isspare && last->vdev_isspare && + vdev_dtl_empty(last, DTL_MISSING) && + vdev_dtl_empty(last, DTL_OUTAGE) && + !vdev_dtl_required(newvd)) + return (newvd); + } + } + + return (NULL); +} + +static void +spa_vdev_resilver_done(spa_t *spa) +{ + vdev_t *vd, *pvd, *ppvd; + uint64_t guid, sguid, pguid, ppguid; + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + while ((vd = spa_vdev_resilver_done_hunt(spa->spa_root_vdev)) != NULL) { + pvd = vd->vdev_parent; + ppvd = pvd->vdev_parent; + guid = vd->vdev_guid; + pguid = pvd->vdev_guid; + ppguid = ppvd->vdev_guid; + sguid = 0; + /* + * If we have just finished replacing a hot spared device, then + * we need to detach the parent's first child (the original hot + * spare) as well. + */ + if (ppvd->vdev_ops == &vdev_spare_ops && pvd->vdev_id == 0 && + ppvd->vdev_children == 2) { + ASSERT(pvd->vdev_ops == &vdev_replacing_ops); + sguid = ppvd->vdev_child[1]->vdev_guid; + } + ASSERT(vd->vdev_resilver_txg == 0 || !vdev_dtl_required(vd)); + + spa_config_exit(spa, SCL_ALL, FTAG); + if (spa_vdev_detach(spa, guid, pguid, B_TRUE) != 0) + return; + if (sguid && spa_vdev_detach(spa, sguid, ppguid, B_TRUE) != 0) + return; + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + } + + spa_config_exit(spa, SCL_ALL, FTAG); +} + +/* + * Update the stored path or FRU for this vdev. + */ +int +spa_vdev_set_common(spa_t *spa, uint64_t guid, const char *value, + boolean_t ispath) +{ + vdev_t *vd; + boolean_t sync = B_FALSE; + + ASSERT(spa_writeable(spa)); + + spa_vdev_state_enter(spa, SCL_ALL); + + if ((vd = spa_lookup_by_guid(spa, guid, B_TRUE)) == NULL) + return (spa_vdev_state_exit(spa, NULL, ENOENT)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_state_exit(spa, NULL, ENOTSUP)); + + if (ispath) { + if (strcmp(value, vd->vdev_path) != 0) { + spa_strfree(vd->vdev_path); + vd->vdev_path = spa_strdup(value); + sync = B_TRUE; + } + } else { + if (vd->vdev_fru == NULL) { + vd->vdev_fru = spa_strdup(value); + sync = B_TRUE; + } else if (strcmp(value, vd->vdev_fru) != 0) { + spa_strfree(vd->vdev_fru); + vd->vdev_fru = spa_strdup(value); + sync = B_TRUE; + } + } + + return (spa_vdev_state_exit(spa, sync ? vd : NULL, 0)); +} + +int +spa_vdev_setpath(spa_t *spa, uint64_t guid, const char *newpath) +{ + return (spa_vdev_set_common(spa, guid, newpath, B_TRUE)); +} + +int +spa_vdev_setfru(spa_t *spa, uint64_t guid, const char *newfru) +{ + return (spa_vdev_set_common(spa, guid, newfru, B_FALSE)); +} + +/* + * ========================================================================== + * SPA Scanning + * ========================================================================== + */ + +int +spa_scan_stop(spa_t *spa) +{ + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0); + if (dsl_scan_resilvering(spa->spa_dsl_pool)) + return (SET_ERROR(EBUSY)); + return (dsl_scan_cancel(spa->spa_dsl_pool)); +} + +int +spa_scan(spa_t *spa, pool_scan_func_t func) +{ + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0); + + if (func >= POOL_SCAN_FUNCS || func == POOL_SCAN_NONE) + return (SET_ERROR(ENOTSUP)); + + /* + * If a resilver was requested, but there is no DTL on a + * writeable leaf device, we have nothing to do. + */ + if (func == POOL_SCAN_RESILVER && + !vdev_resilver_needed(spa->spa_root_vdev, NULL, NULL)) { + spa_async_request(spa, SPA_ASYNC_RESILVER_DONE); + return (0); + } + + return (dsl_scan(spa->spa_dsl_pool, func)); +} + +/* + * ========================================================================== + * SPA async task processing + * ========================================================================== + */ + +static void +spa_async_remove(spa_t *spa, vdev_t *vd) +{ + int c; + + if (vd->vdev_remove_wanted) { + vd->vdev_remove_wanted = B_FALSE; + vd->vdev_delayed_close = B_FALSE; + vdev_set_state(vd, B_FALSE, VDEV_STATE_REMOVED, VDEV_AUX_NONE); + + /* + * We want to clear the stats, but we don't want to do a full + * vdev_clear() as that will cause us to throw away + * degraded/faulted state as well as attempt to reopen the + * device, all of which is a waste. + */ + vd->vdev_stat.vs_read_errors = 0; + vd->vdev_stat.vs_write_errors = 0; + vd->vdev_stat.vs_checksum_errors = 0; + + vdev_state_dirty(vd->vdev_top); + } + + for (c = 0; c < vd->vdev_children; c++) + spa_async_remove(spa, vd->vdev_child[c]); +} + +static void +spa_async_probe(spa_t *spa, vdev_t *vd) +{ + int c; + + if (vd->vdev_probe_wanted) { + vd->vdev_probe_wanted = B_FALSE; + vdev_reopen(vd); /* vdev_open() does the actual probe */ + } + + for (c = 0; c < vd->vdev_children; c++) + spa_async_probe(spa, vd->vdev_child[c]); +} + +static void +spa_async_autoexpand(spa_t *spa, vdev_t *vd) +{ + int c; + + if (!spa->spa_autoexpand) + return; + + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + spa_async_autoexpand(spa, cvd); + } + + if (!vd->vdev_ops->vdev_op_leaf || vd->vdev_physpath == NULL) + return; + + spa_event_notify(vd->vdev_spa, vd, FM_EREPORT_ZFS_DEVICE_AUTOEXPAND); +} + +static void +spa_async_thread(spa_t *spa) +{ + int tasks, i; + + ASSERT(spa->spa_sync_on); + + mutex_enter(&spa->spa_async_lock); + tasks = spa->spa_async_tasks; + spa->spa_async_tasks = 0; + mutex_exit(&spa->spa_async_lock); + + /* + * See if the config needs to be updated. + */ + if (tasks & SPA_ASYNC_CONFIG_UPDATE) { + uint64_t old_space, new_space; + + mutex_enter(&spa_namespace_lock); + old_space = metaslab_class_get_space(spa_normal_class(spa)); + spa_config_update(spa, SPA_CONFIG_UPDATE_POOL); + new_space = metaslab_class_get_space(spa_normal_class(spa)); + mutex_exit(&spa_namespace_lock); + + /* + * If the pool grew as a result of the config update, + * then log an internal history event. + */ + if (new_space != old_space) { + spa_history_log_internal(spa, "vdev online", NULL, + "pool '%s' size: %llu(+%llu)", + spa_name(spa), new_space, new_space - old_space); + } + } + + /* + * See if any devices need to be marked REMOVED. + */ + if (tasks & SPA_ASYNC_REMOVE) { + spa_vdev_state_enter(spa, SCL_NONE); + spa_async_remove(spa, spa->spa_root_vdev); + for (i = 0; i < spa->spa_l2cache.sav_count; i++) + spa_async_remove(spa, spa->spa_l2cache.sav_vdevs[i]); + for (i = 0; i < spa->spa_spares.sav_count; i++) + spa_async_remove(spa, spa->spa_spares.sav_vdevs[i]); + (void) spa_vdev_state_exit(spa, NULL, 0); + } + + if ((tasks & SPA_ASYNC_AUTOEXPAND) && !spa_suspended(spa)) { + spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER); + spa_async_autoexpand(spa, spa->spa_root_vdev); + spa_config_exit(spa, SCL_CONFIG, FTAG); + } + + /* + * See if any devices need to be probed. + */ + if (tasks & SPA_ASYNC_PROBE) { + spa_vdev_state_enter(spa, SCL_NONE); + spa_async_probe(spa, spa->spa_root_vdev); + (void) spa_vdev_state_exit(spa, NULL, 0); + } + + /* + * If any devices are done replacing, detach them. + */ + if (tasks & SPA_ASYNC_RESILVER_DONE) + spa_vdev_resilver_done(spa); + + /* + * Kick off a resilver. + */ + if (tasks & SPA_ASYNC_RESILVER) + dsl_resilver_restart(spa->spa_dsl_pool, 0); + + /* + * Let the world know that we're done. + */ + mutex_enter(&spa->spa_async_lock); + spa->spa_async_thread = NULL; + cv_broadcast(&spa->spa_async_cv); + mutex_exit(&spa->spa_async_lock); + thread_exit(); +} + +void +spa_async_suspend(spa_t *spa) +{ + mutex_enter(&spa->spa_async_lock); + spa->spa_async_suspended++; + while (spa->spa_async_thread != NULL) + cv_wait(&spa->spa_async_cv, &spa->spa_async_lock); + mutex_exit(&spa->spa_async_lock); +} + +void +spa_async_resume(spa_t *spa) +{ + mutex_enter(&spa->spa_async_lock); + ASSERT(spa->spa_async_suspended != 0); + spa->spa_async_suspended--; + mutex_exit(&spa->spa_async_lock); +} + +static void +spa_async_dispatch(spa_t *spa) +{ + mutex_enter(&spa->spa_async_lock); + if (spa->spa_async_tasks && !spa->spa_async_suspended && + spa->spa_async_thread == NULL && + rootdir != NULL && !vn_is_readonly(rootdir)) + spa->spa_async_thread = thread_create(NULL, 0, + spa_async_thread, spa, 0, &p0, TS_RUN, maxclsyspri); + mutex_exit(&spa->spa_async_lock); +} + +void +spa_async_request(spa_t *spa, int task) +{ + zfs_dbgmsg("spa=%s async request task=%u", spa->spa_name, task); + mutex_enter(&spa->spa_async_lock); + spa->spa_async_tasks |= task; + mutex_exit(&spa->spa_async_lock); +} + +/* + * ========================================================================== + * SPA syncing routines + * ========================================================================== + */ + +static int +bpobj_enqueue_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + bpobj_t *bpo = arg; + bpobj_enqueue(bpo, bp, tx); + return (0); +} + +static int +spa_free_sync_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + zio_t *zio = arg; + + zio_nowait(zio_free_sync(zio, zio->io_spa, dmu_tx_get_txg(tx), bp, + zio->io_flags)); + return (0); +} + +/* + * Note: this simple function is not inlined to make it easier to dtrace the + * amount of time spent syncing frees. + */ +static void +spa_sync_frees(spa_t *spa, bplist_t *bpl, dmu_tx_t *tx) +{ + zio_t *zio = zio_root(spa, NULL, NULL, 0); + bplist_iterate(bpl, spa_free_sync_cb, zio, tx); + VERIFY(zio_wait(zio) == 0); +} + +/* + * Note: this simple function is not inlined to make it easier to dtrace the + * amount of time spent syncing deferred frees. + */ +static void +spa_sync_deferred_frees(spa_t *spa, dmu_tx_t *tx) +{ + zio_t *zio = zio_root(spa, NULL, NULL, 0); + VERIFY3U(bpobj_iterate(&spa->spa_deferred_bpobj, + spa_free_sync_cb, zio, tx), ==, 0); + VERIFY0(zio_wait(zio)); +} + +static void +spa_sync_nvlist(spa_t *spa, uint64_t obj, nvlist_t *nv, dmu_tx_t *tx) +{ + char *packed = NULL; + size_t bufsize; + size_t nvsize = 0; + dmu_buf_t *db; + + VERIFY(nvlist_size(nv, &nvsize, NV_ENCODE_XDR) == 0); + + /* + * Write full (SPA_CONFIG_BLOCKSIZE) blocks of configuration + * information. This avoids the dmu_buf_will_dirty() path and + * saves us a pre-read to get data we don't actually care about. + */ + bufsize = P2ROUNDUP((uint64_t)nvsize, SPA_CONFIG_BLOCKSIZE); + packed = vmem_alloc(bufsize, KM_SLEEP); + + VERIFY(nvlist_pack(nv, &packed, &nvsize, NV_ENCODE_XDR, + KM_SLEEP) == 0); + bzero(packed + nvsize, bufsize - nvsize); + + dmu_write(spa->spa_meta_objset, obj, 0, bufsize, packed, tx); + + vmem_free(packed, bufsize); + + VERIFY(0 == dmu_bonus_hold(spa->spa_meta_objset, obj, FTAG, &db)); + dmu_buf_will_dirty(db, tx); + *(uint64_t *)db->db_data = nvsize; + dmu_buf_rele(db, FTAG); +} + +static void +spa_sync_aux_dev(spa_t *spa, spa_aux_vdev_t *sav, dmu_tx_t *tx, + const char *config, const char *entry) +{ + nvlist_t *nvroot; + nvlist_t **list; + int i; + + if (!sav->sav_sync) + return; + + /* + * Update the MOS nvlist describing the list of available devices. + * spa_validate_aux() will have already made sure this nvlist is + * valid and the vdevs are labeled appropriately. + */ + if (sav->sav_object == 0) { + sav->sav_object = dmu_object_alloc(spa->spa_meta_objset, + DMU_OT_PACKED_NVLIST, 1 << 14, DMU_OT_PACKED_NVLIST_SIZE, + sizeof (uint64_t), tx); + VERIFY(zap_update(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, entry, sizeof (uint64_t), 1, + &sav->sav_object, tx) == 0); + } + + VERIFY(nvlist_alloc(&nvroot, NV_UNIQUE_NAME, KM_SLEEP) == 0); + if (sav->sav_count == 0) { + VERIFY(nvlist_add_nvlist_array(nvroot, config, NULL, 0) == 0); + } else { + list = kmem_alloc(sav->sav_count*sizeof (void *), KM_SLEEP); + for (i = 0; i < sav->sav_count; i++) + list[i] = vdev_config_generate(spa, sav->sav_vdevs[i], + B_FALSE, VDEV_CONFIG_L2CACHE); + VERIFY(nvlist_add_nvlist_array(nvroot, config, list, + sav->sav_count) == 0); + for (i = 0; i < sav->sav_count; i++) + nvlist_free(list[i]); + kmem_free(list, sav->sav_count * sizeof (void *)); + } + + spa_sync_nvlist(spa, sav->sav_object, nvroot, tx); + nvlist_free(nvroot); + + sav->sav_sync = B_FALSE; +} + +static void +spa_sync_config_object(spa_t *spa, dmu_tx_t *tx) +{ + nvlist_t *config; + + if (list_is_empty(&spa->spa_config_dirty_list)) + return; + + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + + config = spa_config_generate(spa, spa->spa_root_vdev, + dmu_tx_get_txg(tx), B_FALSE); + + /* + * If we're upgrading the spa version then make sure that + * the config object gets updated with the correct version. + */ + if (spa->spa_ubsync.ub_version < spa->spa_uberblock.ub_version) + fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, + spa->spa_uberblock.ub_version); + + spa_config_exit(spa, SCL_STATE, FTAG); + + if (spa->spa_config_syncing) + nvlist_free(spa->spa_config_syncing); + spa->spa_config_syncing = config; + + spa_sync_nvlist(spa, spa->spa_config_object, config, tx); +} + +static void +spa_sync_version(void *arg, dmu_tx_t *tx) +{ + uint64_t *versionp = arg; + uint64_t version = *versionp; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + + /* + * Setting the version is special cased when first creating the pool. + */ + ASSERT(tx->tx_txg != TXG_INITIAL); + + ASSERT(SPA_VERSION_IS_SUPPORTED(version)); + ASSERT(version >= spa_version(spa)); + + spa->spa_uberblock.ub_version = version; + vdev_config_dirty(spa->spa_root_vdev); + spa_history_log_internal(spa, "set", tx, "version=%lld", version); +} + +/* + * Set zpool properties. + */ +static void +spa_sync_props(void *arg, dmu_tx_t *tx) +{ + nvlist_t *nvp = arg; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + objset_t *mos = spa->spa_meta_objset; + nvpair_t *elem = NULL; + + mutex_enter(&spa->spa_props_lock); + + while ((elem = nvlist_next_nvpair(nvp, elem))) { + uint64_t intval; + char *strval, *fname; + zpool_prop_t prop; + const char *propname; + zprop_type_t proptype; + spa_feature_t fid; + + prop = zpool_name_to_prop(nvpair_name(elem)); + switch ((int)prop) { + case ZPROP_INVAL: + /* + * We checked this earlier in spa_prop_validate(). + */ + ASSERT(zpool_prop_feature(nvpair_name(elem))); + + fname = strchr(nvpair_name(elem), '@') + 1; + VERIFY0(zfeature_lookup_name(fname, &fid)); + + spa_feature_enable(spa, fid, tx); + spa_history_log_internal(spa, "set", tx, + "%s=enabled", nvpair_name(elem)); + break; + + case ZPOOL_PROP_VERSION: + intval = fnvpair_value_uint64(elem); + /* + * The version is synced seperatly before other + * properties and should be correct by now. + */ + ASSERT3U(spa_version(spa), >=, intval); + break; + + case ZPOOL_PROP_ALTROOT: + /* + * 'altroot' is a non-persistent property. It should + * have been set temporarily at creation or import time. + */ + ASSERT(spa->spa_root != NULL); + break; + + case ZPOOL_PROP_READONLY: + case ZPOOL_PROP_CACHEFILE: + /* + * 'readonly' and 'cachefile' are also non-persisitent + * properties. + */ + break; + case ZPOOL_PROP_COMMENT: + strval = fnvpair_value_string(elem); + if (spa->spa_comment != NULL) + spa_strfree(spa->spa_comment); + spa->spa_comment = spa_strdup(strval); + /* + * We need to dirty the configuration on all the vdevs + * so that their labels get updated. It's unnecessary + * to do this for pool creation since the vdev's + * configuratoin has already been dirtied. + */ + if (tx->tx_txg != TXG_INITIAL) + vdev_config_dirty(spa->spa_root_vdev); + spa_history_log_internal(spa, "set", tx, + "%s=%s", nvpair_name(elem), strval); + break; + default: + /* + * Set pool property values in the poolprops mos object. + */ + if (spa->spa_pool_props_object == 0) { + spa->spa_pool_props_object = + zap_create_link(mos, DMU_OT_POOL_PROPS, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_PROPS, + tx); + } + + /* normalize the property name */ + propname = zpool_prop_to_name(prop); + proptype = zpool_prop_get_type(prop); + + if (nvpair_type(elem) == DATA_TYPE_STRING) { + ASSERT(proptype == PROP_TYPE_STRING); + strval = fnvpair_value_string(elem); + VERIFY0(zap_update(mos, + spa->spa_pool_props_object, propname, + 1, strlen(strval) + 1, strval, tx)); + spa_history_log_internal(spa, "set", tx, + "%s=%s", nvpair_name(elem), strval); + } else if (nvpair_type(elem) == DATA_TYPE_UINT64) { + intval = fnvpair_value_uint64(elem); + + if (proptype == PROP_TYPE_INDEX) { + const char *unused; + VERIFY0(zpool_prop_index_to_string( + prop, intval, &unused)); + } + VERIFY0(zap_update(mos, + spa->spa_pool_props_object, propname, + 8, 1, &intval, tx)); + spa_history_log_internal(spa, "set", tx, + "%s=%lld", nvpair_name(elem), intval); + } else { + ASSERT(0); /* not allowed */ + } + + switch (prop) { + case ZPOOL_PROP_DELEGATION: + spa->spa_delegation = intval; + break; + case ZPOOL_PROP_BOOTFS: + spa->spa_bootfs = intval; + break; + case ZPOOL_PROP_FAILUREMODE: + spa->spa_failmode = intval; + break; + case ZPOOL_PROP_AUTOEXPAND: + spa->spa_autoexpand = intval; + if (tx->tx_txg != TXG_INITIAL) + spa_async_request(spa, + SPA_ASYNC_AUTOEXPAND); + break; + case ZPOOL_PROP_DEDUPDITTO: + spa->spa_dedup_ditto = intval; + break; + default: + break; + } + } + + } + + mutex_exit(&spa->spa_props_lock); +} + +/* + * Perform one-time upgrade on-disk changes. spa_version() does not + * reflect the new version this txg, so there must be no changes this + * txg to anything that the upgrade code depends on after it executes. + * Therefore this must be called after dsl_pool_sync() does the sync + * tasks. + */ +static void +spa_sync_upgrades(spa_t *spa, dmu_tx_t *tx) +{ + dsl_pool_t *dp = spa->spa_dsl_pool; + + ASSERT(spa->spa_sync_pass == 1); + + rrw_enter(&dp->dp_config_rwlock, RW_WRITER, FTAG); + + if (spa->spa_ubsync.ub_version < SPA_VERSION_ORIGIN && + spa->spa_uberblock.ub_version >= SPA_VERSION_ORIGIN) { + dsl_pool_create_origin(dp, tx); + + /* Keeping the origin open increases spa_minref */ + spa->spa_minref += 3; + } + + if (spa->spa_ubsync.ub_version < SPA_VERSION_NEXT_CLONES && + spa->spa_uberblock.ub_version >= SPA_VERSION_NEXT_CLONES) { + dsl_pool_upgrade_clones(dp, tx); + } + + if (spa->spa_ubsync.ub_version < SPA_VERSION_DIR_CLONES && + spa->spa_uberblock.ub_version >= SPA_VERSION_DIR_CLONES) { + dsl_pool_upgrade_dir_clones(dp, tx); + + /* Keeping the freedir open increases spa_minref */ + spa->spa_minref += 3; + } + + if (spa->spa_ubsync.ub_version < SPA_VERSION_FEATURES && + spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) { + spa_feature_create_zap_objects(spa, tx); + } + + /* + * LZ4_COMPRESS feature's behaviour was changed to activate_on_enable + * when possibility to use lz4 compression for metadata was added + * Old pools that have this feature enabled must be upgraded to have + * this feature active + */ + if (spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) { + boolean_t lz4_en = spa_feature_is_enabled(spa, + SPA_FEATURE_LZ4_COMPRESS); + boolean_t lz4_ac = spa_feature_is_active(spa, + SPA_FEATURE_LZ4_COMPRESS); + + if (lz4_en && !lz4_ac) + spa_feature_incr(spa, SPA_FEATURE_LZ4_COMPRESS, tx); + } + rrw_exit(&dp->dp_config_rwlock, FTAG); +} + +/* + * Sync the specified transaction group. New blocks may be dirtied as + * part of the process, so we iterate until it converges. + */ +void +spa_sync(spa_t *spa, uint64_t txg) +{ + dsl_pool_t *dp = spa->spa_dsl_pool; + objset_t *mos = spa->spa_meta_objset; + bplist_t *free_bpl = &spa->spa_free_bplist[txg & TXG_MASK]; + vdev_t *rvd = spa->spa_root_vdev; + vdev_t *vd; + dmu_tx_t *tx; + int error; + int c; + + VERIFY(spa_writeable(spa)); + + /* + * Lock out configuration changes. + */ + spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER); + + spa->spa_syncing_txg = txg; + spa->spa_sync_pass = 0; + + /* + * If there are any pending vdev state changes, convert them + * into config changes that go out with this transaction group. + */ + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + while (list_head(&spa->spa_state_dirty_list) != NULL) { + /* + * We need the write lock here because, for aux vdevs, + * calling vdev_config_dirty() modifies sav_config. + * This is ugly and will become unnecessary when we + * eliminate the aux vdev wart by integrating all vdevs + * into the root vdev tree. + */ + spa_config_exit(spa, SCL_CONFIG | SCL_STATE, FTAG); + spa_config_enter(spa, SCL_CONFIG | SCL_STATE, FTAG, RW_WRITER); + while ((vd = list_head(&spa->spa_state_dirty_list)) != NULL) { + vdev_state_clean(vd); + vdev_config_dirty(vd); + } + spa_config_exit(spa, SCL_CONFIG | SCL_STATE, FTAG); + spa_config_enter(spa, SCL_CONFIG | SCL_STATE, FTAG, RW_READER); + } + spa_config_exit(spa, SCL_STATE, FTAG); + + tx = dmu_tx_create_assigned(dp, txg); + + spa->spa_sync_starttime = gethrtime(); + taskq_cancel_id(system_taskq, spa->spa_deadman_tqid); + spa->spa_deadman_tqid = taskq_dispatch_delay(system_taskq, + spa_deadman, spa, TQ_SLEEP, ddi_get_lbolt() + + NSEC_TO_TICK(spa->spa_deadman_synctime)); + + /* + * If we are upgrading to SPA_VERSION_RAIDZ_DEFLATE this txg, + * set spa_deflate if we have no raid-z vdevs. + */ + if (spa->spa_ubsync.ub_version < SPA_VERSION_RAIDZ_DEFLATE && + spa->spa_uberblock.ub_version >= SPA_VERSION_RAIDZ_DEFLATE) { + int i; + + for (i = 0; i < rvd->vdev_children; i++) { + vd = rvd->vdev_child[i]; + if (vd->vdev_deflate_ratio != SPA_MINBLOCKSIZE) + break; + } + if (i == rvd->vdev_children) { + spa->spa_deflate = TRUE; + VERIFY(0 == zap_add(spa->spa_meta_objset, + DMU_POOL_DIRECTORY_OBJECT, DMU_POOL_DEFLATE, + sizeof (uint64_t), 1, &spa->spa_deflate, tx)); + } + } + + /* + * Iterate to convergence. + */ + do { + int pass = ++spa->spa_sync_pass; + + spa_sync_config_object(spa, tx); + spa_sync_aux_dev(spa, &spa->spa_spares, tx, + ZPOOL_CONFIG_SPARES, DMU_POOL_SPARES); + spa_sync_aux_dev(spa, &spa->spa_l2cache, tx, + ZPOOL_CONFIG_L2CACHE, DMU_POOL_L2CACHE); + spa_errlog_sync(spa, txg); + dsl_pool_sync(dp, txg); + + if (pass < zfs_sync_pass_deferred_free) { + spa_sync_frees(spa, free_bpl, tx); + } else { + /* + * We can not defer frees in pass 1, because + * we sync the deferred frees later in pass 1. + */ + ASSERT3U(pass, >, 1); + bplist_iterate(free_bpl, bpobj_enqueue_cb, + &spa->spa_deferred_bpobj, tx); + } + + ddt_sync(spa, txg); + dsl_scan_sync(dp, tx); + + while ((vd = txg_list_remove(&spa->spa_vdev_txg_list, txg))) + vdev_sync(vd, txg); + + if (pass == 1) { + spa_sync_upgrades(spa, tx); + ASSERT3U(txg, >=, + spa->spa_uberblock.ub_rootbp.blk_birth); + /* + * Note: We need to check if the MOS is dirty + * because we could have marked the MOS dirty + * without updating the uberblock (e.g. if we + * have sync tasks but no dirty user data). We + * need to check the uberblock's rootbp because + * it is updated if we have synced out dirty + * data (though in this case the MOS will most + * likely also be dirty due to second order + * effects, we don't want to rely on that here). + */ + if (spa->spa_uberblock.ub_rootbp.blk_birth < txg && + !dmu_objset_is_dirty(mos, txg)) { + /* + * Nothing changed on the first pass, + * therefore this TXG is a no-op. Avoid + * syncing deferred frees, so that we + * can keep this TXG as a no-op. + */ + ASSERT(txg_list_empty(&dp->dp_dirty_datasets, + txg)); + ASSERT(txg_list_empty(&dp->dp_dirty_dirs, txg)); + ASSERT(txg_list_empty(&dp->dp_sync_tasks, txg)); + break; + } + spa_sync_deferred_frees(spa, tx); + } + + } while (dmu_objset_is_dirty(mos, txg)); + + /* + * Rewrite the vdev configuration (which includes the uberblock) + * to commit the transaction group. + * + * If there are no dirty vdevs, we sync the uberblock to a few + * random top-level vdevs that are known to be visible in the + * config cache (see spa_vdev_add() for a complete description). + * If there *are* dirty vdevs, sync the uberblock to all vdevs. + */ + for (;;) { + /* + * We hold SCL_STATE to prevent vdev open/close/etc. + * while we're attempting to write the vdev labels. + */ + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + + if (list_is_empty(&spa->spa_config_dirty_list)) { + vdev_t *svd[SPA_DVAS_PER_BP]; + int svdcount = 0; + int children = rvd->vdev_children; + int c0 = spa_get_random(children); + + for (c = 0; c < children; c++) { + vd = rvd->vdev_child[(c0 + c) % children]; + if (vd->vdev_ms_array == 0 || vd->vdev_islog) + continue; + svd[svdcount++] = vd; + if (svdcount == SPA_DVAS_PER_BP) + break; + } + error = vdev_config_sync(svd, svdcount, txg, B_FALSE); + if (error != 0) + error = vdev_config_sync(svd, svdcount, txg, + B_TRUE); + } else { + error = vdev_config_sync(rvd->vdev_child, + rvd->vdev_children, txg, B_FALSE); + if (error != 0) + error = vdev_config_sync(rvd->vdev_child, + rvd->vdev_children, txg, B_TRUE); + } + + if (error == 0) + spa->spa_last_synced_guid = rvd->vdev_guid; + + spa_config_exit(spa, SCL_STATE, FTAG); + + if (error == 0) + break; + zio_suspend(spa, NULL); + zio_resume_wait(spa); + } + dmu_tx_commit(tx); + + taskq_cancel_id(system_taskq, spa->spa_deadman_tqid); + spa->spa_deadman_tqid = 0; + + /* + * Clear the dirty config list. + */ + while ((vd = list_head(&spa->spa_config_dirty_list)) != NULL) + vdev_config_clean(vd); + + /* + * Now that the new config has synced transactionally, + * let it become visible to the config cache. + */ + if (spa->spa_config_syncing != NULL) { + spa_config_set(spa, spa->spa_config_syncing); + spa->spa_config_txg = txg; + spa->spa_config_syncing = NULL; + } + + spa->spa_ubsync = spa->spa_uberblock; + + dsl_pool_sync_done(dp, txg); + + /* + * Update usable space statistics. + */ + while ((vd = txg_list_remove(&spa->spa_vdev_txg_list, TXG_CLEAN(txg)))) + vdev_sync_done(vd, txg); + + spa_update_dspace(spa); + + /* + * It had better be the case that we didn't dirty anything + * since vdev_config_sync(). + */ + ASSERT(txg_list_empty(&dp->dp_dirty_datasets, txg)); + ASSERT(txg_list_empty(&dp->dp_dirty_dirs, txg)); + ASSERT(txg_list_empty(&spa->spa_vdev_txg_list, txg)); + + spa->spa_sync_pass = 0; + + spa_config_exit(spa, SCL_CONFIG, FTAG); + + spa_handle_ignored_writes(spa); + + /* + * If any async tasks have been requested, kick them off. + */ + spa_async_dispatch(spa); +} + +/* + * Sync all pools. We don't want to hold the namespace lock across these + * operations, so we take a reference on the spa_t and drop the lock during the + * sync. + */ +void +spa_sync_allpools(void) +{ + spa_t *spa = NULL; + mutex_enter(&spa_namespace_lock); + while ((spa = spa_next(spa)) != NULL) { + if (spa_state(spa) != POOL_STATE_ACTIVE || + !spa_writeable(spa) || spa_suspended(spa)) + continue; + spa_open_ref(spa, FTAG); + mutex_exit(&spa_namespace_lock); + txg_wait_synced(spa_get_dsl(spa), 0); + mutex_enter(&spa_namespace_lock); + spa_close(spa, FTAG); + } + mutex_exit(&spa_namespace_lock); +} + +/* + * ========================================================================== + * Miscellaneous routines + * ========================================================================== + */ + +/* + * Remove all pools in the system. + */ +void +spa_evict_all(void) +{ + spa_t *spa; + + /* + * Remove all cached state. All pools should be closed now, + * so every spa in the AVL tree should be unreferenced. + */ + mutex_enter(&spa_namespace_lock); + while ((spa = spa_next(NULL)) != NULL) { + /* + * Stop async tasks. The async thread may need to detach + * a device that's been replaced, which requires grabbing + * spa_namespace_lock, so we must drop it here. + */ + spa_open_ref(spa, FTAG); + mutex_exit(&spa_namespace_lock); + spa_async_suspend(spa); + mutex_enter(&spa_namespace_lock); + spa_close(spa, FTAG); + + if (spa->spa_state != POOL_STATE_UNINITIALIZED) { + spa_unload(spa); + spa_deactivate(spa); + } + spa_remove(spa); + } + mutex_exit(&spa_namespace_lock); +} + +vdev_t * +spa_lookup_by_guid(spa_t *spa, uint64_t guid, boolean_t aux) +{ + vdev_t *vd; + int i; + + if ((vd = vdev_lookup_by_guid(spa->spa_root_vdev, guid)) != NULL) + return (vd); + + if (aux) { + for (i = 0; i < spa->spa_l2cache.sav_count; i++) { + vd = spa->spa_l2cache.sav_vdevs[i]; + if (vd->vdev_guid == guid) + return (vd); + } + + for (i = 0; i < spa->spa_spares.sav_count; i++) { + vd = spa->spa_spares.sav_vdevs[i]; + if (vd->vdev_guid == guid) + return (vd); + } + } + + return (NULL); +} + +void +spa_upgrade(spa_t *spa, uint64_t version) +{ + ASSERT(spa_writeable(spa)); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + /* + * This should only be called for a non-faulted pool, and since a + * future version would result in an unopenable pool, this shouldn't be + * possible. + */ + ASSERT(SPA_VERSION_IS_SUPPORTED(spa->spa_uberblock.ub_version)); + ASSERT3U(version, >=, spa->spa_uberblock.ub_version); + + spa->spa_uberblock.ub_version = version; + vdev_config_dirty(spa->spa_root_vdev); + + spa_config_exit(spa, SCL_ALL, FTAG); + + txg_wait_synced(spa_get_dsl(spa), 0); +} + +boolean_t +spa_has_spare(spa_t *spa, uint64_t guid) +{ + int i; + uint64_t spareguid; + spa_aux_vdev_t *sav = &spa->spa_spares; + + for (i = 0; i < sav->sav_count; i++) + if (sav->sav_vdevs[i]->vdev_guid == guid) + return (B_TRUE); + + for (i = 0; i < sav->sav_npending; i++) { + if (nvlist_lookup_uint64(sav->sav_pending[i], ZPOOL_CONFIG_GUID, + &spareguid) == 0 && spareguid == guid) + return (B_TRUE); + } + + return (B_FALSE); +} + +/* + * Check if a pool has an active shared spare device. + * Note: reference count of an active spare is 2, as a spare and as a replace + */ +static boolean_t +spa_has_active_shared_spare(spa_t *spa) +{ + int i, refcnt; + uint64_t pool; + spa_aux_vdev_t *sav = &spa->spa_spares; + + for (i = 0; i < sav->sav_count; i++) { + if (spa_spare_exists(sav->sav_vdevs[i]->vdev_guid, &pool, + &refcnt) && pool != 0ULL && pool == spa_guid(spa) && + refcnt > 2) + return (B_TRUE); + } + + return (B_FALSE); +} + +/* + * Post a FM_EREPORT_ZFS_* event from sys/fm/fs/zfs.h. The payload will be + * filled in from the spa and (optionally) the vdev. This doesn't do anything + * in the userland libzpool, as we don't want consumers to misinterpret ztest + * or zdb as real changes. + */ +void +spa_event_notify(spa_t *spa, vdev_t *vd, const char *name) +{ +#ifdef _KERNEL + zfs_ereport_post(name, spa, vd, NULL, 0, 0); +#endif +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +/* state manipulation functions */ +EXPORT_SYMBOL(spa_open); +EXPORT_SYMBOL(spa_open_rewind); +EXPORT_SYMBOL(spa_get_stats); +EXPORT_SYMBOL(spa_create); +EXPORT_SYMBOL(spa_import_rootpool); +EXPORT_SYMBOL(spa_import); +EXPORT_SYMBOL(spa_tryimport); +EXPORT_SYMBOL(spa_destroy); +EXPORT_SYMBOL(spa_export); +EXPORT_SYMBOL(spa_reset); +EXPORT_SYMBOL(spa_async_request); +EXPORT_SYMBOL(spa_async_suspend); +EXPORT_SYMBOL(spa_async_resume); +EXPORT_SYMBOL(spa_inject_addref); +EXPORT_SYMBOL(spa_inject_delref); +EXPORT_SYMBOL(spa_scan_stat_init); +EXPORT_SYMBOL(spa_scan_get_stats); + +/* device maniion */ +EXPORT_SYMBOL(spa_vdev_add); +EXPORT_SYMBOL(spa_vdev_attach); +EXPORT_SYMBOL(spa_vdev_detach); +EXPORT_SYMBOL(spa_vdev_remove); +EXPORT_SYMBOL(spa_vdev_setpath); +EXPORT_SYMBOL(spa_vdev_setfru); +EXPORT_SYMBOL(spa_vdev_split_mirror); + +/* spare statech is global across all pools) */ +EXPORT_SYMBOL(spa_spare_add); +EXPORT_SYMBOL(spa_spare_remove); +EXPORT_SYMBOL(spa_spare_exists); +EXPORT_SYMBOL(spa_spare_activate); + +/* L2ARC statech is global across all pools) */ +EXPORT_SYMBOL(spa_l2cache_add); +EXPORT_SYMBOL(spa_l2cache_remove); +EXPORT_SYMBOL(spa_l2cache_exists); +EXPORT_SYMBOL(spa_l2cache_activate); +EXPORT_SYMBOL(spa_l2cache_drop); + +/* scanning */ +EXPORT_SYMBOL(spa_scan); +EXPORT_SYMBOL(spa_scan_stop); + +/* spa syncing */ +EXPORT_SYMBOL(spa_sync); /* only for DMU use */ +EXPORT_SYMBOL(spa_sync_allpools); + +/* properties */ +EXPORT_SYMBOL(spa_prop_set); +EXPORT_SYMBOL(spa_prop_get); +EXPORT_SYMBOL(spa_prop_clear_bootfs); + +/* asynchronous event notification */ +EXPORT_SYMBOL(spa_event_notify); +#endif + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(spa_load_verify_maxinflight, int, 0644); +MODULE_PARM_DESC(spa_load_verify_maxinflight, + "Max concurrent traversal I/Os while verifying pool during import -X"); + +module_param(spa_load_verify_metadata, int, 0644); +MODULE_PARM_DESC(spa_load_verify_metadata, + "Set to traverse metadata on pool import"); + +module_param(spa_load_verify_data, int, 0644); +MODULE_PARM_DESC(spa_load_verify_data, + "Set to traverse data on pool import"); + +module_param(zio_taskq_batch_pct, uint, 0444); +MODULE_PARM_DESC(zio_taskq_batch_pct, + "Percentage of CPUs to run an IO worker thread"); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/spa_boot.c +++ linux-4.4.0/zfs/module/zfs/spa_boot.c @@ -0,0 +1,50 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifdef _KERNEL + +#include +#include +#include + +char * +spa_get_bootprop(char *propname) +{ + char *value; + + if (ddi_prop_lookup_string(DDI_DEV_T_ANY, ddi_root_node(), + DDI_PROP_DONTPASS, propname, &value) != DDI_SUCCESS) + return (NULL); + return (value); +} + +void +spa_free_bootprop(char *value) +{ + ddi_prop_free(value); +} + +#endif /* _KERNEL */ --- linux-4.4.0.orig/zfs/module/zfs/spa_config.c +++ linux-4.4.0/zfs/module/zfs/spa_config.c @@ -0,0 +1,582 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#include +#endif + +/* + * Pool configuration repository. + * + * Pool configuration is stored as a packed nvlist on the filesystem. By + * default, all pools are stored in /etc/zfs/zpool.cache and loaded on boot + * (when the ZFS module is loaded). Pools can also have the 'cachefile' + * property set that allows them to be stored in an alternate location until + * the control of external software. + * + * For each cache file, we have a single nvlist which holds all the + * configuration information. When the module loads, we read this information + * from /etc/zfs/zpool.cache and populate the SPA namespace. This namespace is + * maintained independently in spa.c. Whenever the namespace is modified, or + * the configuration of a pool is changed, we call spa_config_sync(), which + * walks through all the active pools and writes the configuration to disk. + */ + +static uint64_t spa_config_generation = 1; + +/* + * This can be overridden in userland to preserve an alternate namespace for + * userland pools when doing testing. + */ +char *spa_config_path = ZPOOL_CACHE; +int zfs_autoimport_disable = 1; + +/* + * Called when the module is first loaded, this routine loads the configuration + * file into the SPA namespace. It does not actually open or load the pools; it + * only populates the namespace. + */ +void +spa_config_load(void) +{ + void *buf = NULL; + nvlist_t *nvlist, *child; + nvpair_t *nvpair; + char *pathname; + struct _buf *file; + uint64_t fsize; + +#ifdef _KERNEL + if (zfs_autoimport_disable) + return; +#endif + + /* + * Open the configuration file. + */ + pathname = kmem_alloc(MAXPATHLEN, KM_SLEEP); + + (void) snprintf(pathname, MAXPATHLEN, "%s%s", + (rootdir != NULL) ? "./" : "", spa_config_path); + + file = kobj_open_file(pathname); + + kmem_free(pathname, MAXPATHLEN); + + if (file == (struct _buf *)-1) + return; + + if (kobj_get_filesize(file, &fsize) != 0) + goto out; + + buf = kmem_alloc(fsize, KM_SLEEP); + + /* + * Read the nvlist from the file. + */ + if (kobj_read_file(file, buf, fsize, 0) < 0) + goto out; + + /* + * Unpack the nvlist. + */ + if (nvlist_unpack(buf, fsize, &nvlist, KM_SLEEP) != 0) + goto out; + + /* + * Iterate over all elements in the nvlist, creating a new spa_t for + * each one with the specified configuration. + */ + mutex_enter(&spa_namespace_lock); + nvpair = NULL; + while ((nvpair = nvlist_next_nvpair(nvlist, nvpair)) != NULL) { + if (nvpair_type(nvpair) != DATA_TYPE_NVLIST) + continue; + + VERIFY(nvpair_value_nvlist(nvpair, &child) == 0); + + if (spa_lookup(nvpair_name(nvpair)) != NULL) + continue; + (void) spa_add(nvpair_name(nvpair), child, NULL); + } + mutex_exit(&spa_namespace_lock); + + nvlist_free(nvlist); + +out: + if (buf != NULL) + kmem_free(buf, fsize); + + kobj_close_file(file); +} + +static void +spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) +{ + size_t buflen; + char *buf; + vnode_t *vp; + int oflags = FWRITE | FTRUNC | FCREAT | FOFFMAX; + int error; + char *temp; + + /* + * If the nvlist is empty (NULL), then remove the old cachefile. + */ + if (nvl == NULL) { + (void) vn_remove(dp->scd_path, UIO_SYSSPACE, RMFILE); + return; + } + + /* + * Pack the configuration into a buffer. + */ + VERIFY(nvlist_size(nvl, &buflen, NV_ENCODE_XDR) == 0); + + buf = vmem_alloc(buflen, KM_SLEEP); + temp = kmem_zalloc(MAXPATHLEN, KM_SLEEP); + + VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, + KM_SLEEP) == 0); + +#ifdef __linux__ + /* + * Write the configuration to disk. Due to the complexity involved + * in performing a rename from within the kernel the file is truncated + * and overwritten in place. In the event of an error the file is + * unlinked to make sure we always have a consistent view of the data. + */ + error = vn_open(dp->scd_path, UIO_SYSSPACE, oflags, 0644, &vp, 0, 0); + if (error == 0) { + error = vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, + UIO_SYSSPACE, 0, RLIM64_INFINITY, kcred, NULL); + if (error == 0) + error = VOP_FSYNC(vp, FSYNC, kcred, NULL); + + (void) VOP_CLOSE(vp, oflags, 1, 0, kcred, NULL); + + if (error) + (void) vn_remove(dp->scd_path, UIO_SYSSPACE, RMFILE); + } +#else + /* + * Write the configuration to disk. We need to do the traditional + * 'write to temporary file, sync, move over original' to make sure we + * always have a consistent view of the data. + */ + (void) snprintf(temp, MAXPATHLEN, "%s.tmp", dp->scd_path); + + if (vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0) == 0) { + if (vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, UIO_SYSSPACE, + 0, RLIM64_INFINITY, kcred, NULL) == 0 && + VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { + (void) vn_rename(temp, dp->scd_path, UIO_SYSSPACE); + } + (void) VOP_CLOSE(vp, oflags, 1, 0, kcred, NULL); + } + + (void) vn_remove(temp, UIO_SYSSPACE, RMFILE); +#endif + + vmem_free(buf, buflen); + kmem_free(temp, MAXPATHLEN); +} + +/* + * Synchronize pool configuration to disk. This must be called with the + * namespace lock held. Synchronizing the pool cache is typically done after + * the configuration has been synced to the MOS. This exposes a window where + * the MOS config will have been updated but the cache file has not. If + * the system were to crash at that instant then the cached config may not + * contain the correct information to open the pool and an explicity import + * would be required. + */ +void +spa_config_sync(spa_t *target, boolean_t removing, boolean_t postsysevent) +{ + spa_config_dirent_t *dp, *tdp; + nvlist_t *nvl; + char *pool_name; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + if (rootdir == NULL || !(spa_mode_global & FWRITE)) + return; + + /* + * Iterate over all cachefiles for the pool, past or present. When the + * cachefile is changed, the new one is pushed onto this list, allowing + * us to update previous cachefiles that no longer contain this pool. + */ + for (dp = list_head(&target->spa_config_list); dp != NULL; + dp = list_next(&target->spa_config_list, dp)) { + spa_t *spa = NULL; + if (dp->scd_path == NULL) + continue; + + /* + * Iterate over all pools, adding any matching pools to 'nvl'. + */ + nvl = NULL; + while ((spa = spa_next(spa)) != NULL) { + /* + * Skip over our own pool if we're about to remove + * ourselves from the spa namespace or any pool that + * is readonly. Since we cannot guarantee that a + * readonly pool would successfully import upon reboot, + * we don't allow them to be written to the cache file. + */ + if ((spa == target && removing) || + !spa_writeable(spa)) + continue; + + mutex_enter(&spa->spa_props_lock); + tdp = list_head(&spa->spa_config_list); + if (spa->spa_config == NULL || + tdp->scd_path == NULL || + strcmp(tdp->scd_path, dp->scd_path) != 0) { + mutex_exit(&spa->spa_props_lock); + continue; + } + + if (nvl == NULL) + VERIFY(nvlist_alloc(&nvl, NV_UNIQUE_NAME, + KM_SLEEP) == 0); + + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + VERIFY0(nvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME, &pool_name)); + } else + pool_name = spa_name(spa); + + VERIFY(nvlist_add_nvlist(nvl, pool_name, + spa->spa_config) == 0); + mutex_exit(&spa->spa_props_lock); + } + + spa_config_write(dp, nvl); + nvlist_free(nvl); + } + + /* + * Remove any config entries older than the current one. + */ + dp = list_head(&target->spa_config_list); + while ((tdp = list_next(&target->spa_config_list, dp)) != NULL) { + list_remove(&target->spa_config_list, tdp); + if (tdp->scd_path != NULL) + spa_strfree(tdp->scd_path); + kmem_free(tdp, sizeof (spa_config_dirent_t)); + } + + spa_config_generation++; + + if (postsysevent) + spa_event_notify(target, NULL, FM_EREPORT_ZFS_CONFIG_SYNC); +} + +/* + * Sigh. Inside a local zone, we don't have access to /etc/zfs/zpool.cache, + * and we don't want to allow the local zone to see all the pools anyway. + * So we have to invent the ZFS_IOC_CONFIG ioctl to grab the configuration + * information for all pool visible within the zone. + */ +nvlist_t * +spa_all_configs(uint64_t *generation) +{ + nvlist_t *pools; + spa_t *spa = NULL; + + if (*generation == spa_config_generation) + return (NULL); + + VERIFY(nvlist_alloc(&pools, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + mutex_enter(&spa_namespace_lock); + while ((spa = spa_next(spa)) != NULL) { + if (INGLOBALZONE(curproc) || + zone_dataset_visible(spa_name(spa), NULL)) { + mutex_enter(&spa->spa_props_lock); + VERIFY(nvlist_add_nvlist(pools, spa_name(spa), + spa->spa_config) == 0); + mutex_exit(&spa->spa_props_lock); + } + } + *generation = spa_config_generation; + mutex_exit(&spa_namespace_lock); + + return (pools); +} + +void +spa_config_set(spa_t *spa, nvlist_t *config) +{ + mutex_enter(&spa->spa_props_lock); + if (spa->spa_config != NULL) + nvlist_free(spa->spa_config); + spa->spa_config = config; + mutex_exit(&spa->spa_props_lock); +} + +/* + * Generate the pool's configuration based on the current in-core state. + * + * We infer whether to generate a complete config or just one top-level config + * based on whether vd is the root vdev. + */ +nvlist_t * +spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, int getstats) +{ + nvlist_t *config, *nvroot; + vdev_t *rvd = spa->spa_root_vdev; + unsigned long hostid = 0; + boolean_t locked = B_FALSE; + uint64_t split_guid; + char *pool_name; + + if (vd == NULL) { + vd = rvd; + locked = B_TRUE; + spa_config_enter(spa, SCL_CONFIG | SCL_STATE, FTAG, RW_READER); + } + + ASSERT(spa_config_held(spa, SCL_CONFIG | SCL_STATE, RW_READER) == + (SCL_CONFIG | SCL_STATE)); + + /* + * If txg is -1, report the current value of spa->spa_config_txg. + */ + if (txg == -1ULL) + txg = spa->spa_config_txg; + + /* + * Originally, users had to handle spa namespace collisions by either + * exporting the already imported pool or by specifying a new name for + * the pool with a conflicting name. In the case of root pools from + * virtual guests, neither approach to collision resolution is + * reasonable. This is addressed by extending the new name syntax with + * an option to specify that the new name is temporary. When specified, + * ZFS_IMPORT_TEMP_NAME will be set in spa->spa_import_flags to tell us + * to use the previous name, which we do below. + */ + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + VERIFY0(nvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME, &pool_name)); + } else + pool_name = spa_name(spa); + + VERIFY(nvlist_alloc(&config, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, + spa_version(spa)) == 0); + VERIFY(nvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, + pool_name) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, + spa_state(spa)) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, + txg) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, + spa_guid(spa)) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_ERRATA, + spa->spa_errata) == 0); + VERIFY(spa->spa_comment == NULL || nvlist_add_string(config, + ZPOOL_CONFIG_COMMENT, spa->spa_comment) == 0); + + +#ifdef _KERNEL + hostid = zone_get_hostid(NULL); +#else /* _KERNEL */ + /* + * We're emulating the system's hostid in userland, so we can't use + * zone_get_hostid(). + */ + (void) ddi_strtoul(hw_serial, NULL, 10, &hostid); +#endif /* _KERNEL */ + if (hostid != 0) { + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_HOSTID, + hostid) == 0); + } + VERIFY0(nvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME, + utsname()->nodename)); + + if (vd != rvd) { + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_TOP_GUID, + vd->vdev_top->vdev_guid) == 0); + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_GUID, + vd->vdev_guid) == 0); + if (vd->vdev_isspare) + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_IS_SPARE, + 1ULL) == 0); + if (vd->vdev_islog) + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_IS_LOG, + 1ULL) == 0); + vd = vd->vdev_top; /* label contains top config */ + } else { + /* + * Only add the (potentially large) split information + * in the mos config, and not in the vdev labels + */ + if (spa->spa_config_splitting != NULL) + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_SPLIT, + spa->spa_config_splitting) == 0); + } + + /* + * Add the top-level config. We even add this on pools which + * don't support holes in the namespace. + */ + vdev_top_config_generate(spa, config); + + /* + * If we're splitting, record the original pool's guid. + */ + if (spa->spa_config_splitting != NULL && + nvlist_lookup_uint64(spa->spa_config_splitting, + ZPOOL_CONFIG_SPLIT_GUID, &split_guid) == 0) { + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_SPLIT_GUID, + split_guid) == 0); + } + + nvroot = vdev_config_generate(spa, vd, getstats, 0); + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, nvroot) == 0); + nvlist_free(nvroot); + + /* + * Store what's necessary for reading the MOS in the label. + */ + VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_FEATURES_FOR_READ, + spa->spa_label_features) == 0); + + if (getstats && spa_load_state(spa) == SPA_LOAD_NONE) { + ddt_histogram_t *ddh; + ddt_stat_t *dds; + ddt_object_t *ddo; + + ddh = kmem_zalloc(sizeof (ddt_histogram_t), KM_SLEEP); + ddt_get_dedup_histogram(spa, ddh); + VERIFY(nvlist_add_uint64_array(config, + ZPOOL_CONFIG_DDT_HISTOGRAM, + (uint64_t *)ddh, sizeof (*ddh) / sizeof (uint64_t)) == 0); + kmem_free(ddh, sizeof (ddt_histogram_t)); + + ddo = kmem_zalloc(sizeof (ddt_object_t), KM_SLEEP); + ddt_get_dedup_object_stats(spa, ddo); + VERIFY(nvlist_add_uint64_array(config, + ZPOOL_CONFIG_DDT_OBJ_STATS, + (uint64_t *)ddo, sizeof (*ddo) / sizeof (uint64_t)) == 0); + kmem_free(ddo, sizeof (ddt_object_t)); + + dds = kmem_zalloc(sizeof (ddt_stat_t), KM_SLEEP); + ddt_get_dedup_stats(spa, dds); + VERIFY(nvlist_add_uint64_array(config, + ZPOOL_CONFIG_DDT_STATS, + (uint64_t *)dds, sizeof (*dds) / sizeof (uint64_t)) == 0); + kmem_free(dds, sizeof (ddt_stat_t)); + } + + if (locked) + spa_config_exit(spa, SCL_CONFIG | SCL_STATE, FTAG); + + return (config); +} + +/* + * Update all disk labels, generate a fresh config based on the current + * in-core state, and sync the global config cache (do not sync the config + * cache if this is a booting rootpool). + */ +void +spa_config_update(spa_t *spa, int what) +{ + vdev_t *rvd = spa->spa_root_vdev; + uint64_t txg; + int c; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + txg = spa_last_synced_txg(spa) + 1; + if (what == SPA_CONFIG_UPDATE_POOL) { + vdev_config_dirty(rvd); + } else { + /* + * If we have top-level vdevs that were added but have + * not yet been prepared for allocation, do that now. + * (It's safe now because the config cache is up to date, + * so it will be able to translate the new DVAs.) + * See comments in spa_vdev_add() for full details. + */ + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + if (tvd->vdev_ms_array == 0) + vdev_metaslab_set_size(tvd); + vdev_expand(tvd, txg); + } + } + spa_config_exit(spa, SCL_ALL, FTAG); + + /* + * Wait for the mosconfig to be regenerated and synced. + */ + txg_wait_synced(spa->spa_dsl_pool, txg); + + /* + * Update the global config cache to reflect the new mosconfig. + */ + if (!spa->spa_is_root) + spa_config_sync(spa, B_FALSE, what != SPA_CONFIG_UPDATE_POOL); + + if (what == SPA_CONFIG_UPDATE_POOL) + spa_config_update(spa, SPA_CONFIG_UPDATE_VDEVS); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(spa_config_sync); +EXPORT_SYMBOL(spa_config_load); +EXPORT_SYMBOL(spa_all_configs); +EXPORT_SYMBOL(spa_config_set); +EXPORT_SYMBOL(spa_config_generate); +EXPORT_SYMBOL(spa_config_update); + +module_param(spa_config_path, charp, 0444); +MODULE_PARM_DESC(spa_config_path, "SPA config file (/etc/zfs/zpool.cache)"); + +module_param(zfs_autoimport_disable, int, 0644); +MODULE_PARM_DESC(zfs_autoimport_disable, "Disable pool import at module load"); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/spa_errlog.c +++ linux-4.4.0/zfs/module/zfs/spa_errlog.c @@ -0,0 +1,417 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +/* + * Routines to manage the on-disk persistent error log. + * + * Each pool stores a log of all logical data errors seen during normal + * operation. This is actually the union of two distinct logs: the last log, + * and the current log. All errors seen are logged to the current log. When a + * scrub completes, the current log becomes the last log, the last log is thrown + * out, and the current log is reinitialized. This way, if an error is somehow + * corrected, a new scrub will show that that it no longer exists, and will be + * deleted from the log when the scrub completes. + * + * The log is stored using a ZAP object whose key is a string form of the + * zbookmark_phys tuple (objset, object, level, blkid), and whose contents is an + * optional 'objset:object' human-readable string describing the data. When an + * error is first logged, this string will be empty, indicating that no name is + * known. This prevents us from having to issue a potentially large amount of + * I/O to discover the object name during an error path. Instead, we do the + * calculation when the data is requested, storing the result so future queries + * will be faster. + * + * This log is then shipped into an nvlist where the key is the dataset name and + * the value is the object name. Userland is then responsible for uniquifying + * this list and displaying it to the user. + */ + +#include +#include +#include +#include +#include + + +/* + * Convert a bookmark to a string. + */ +static void +bookmark_to_name(zbookmark_phys_t *zb, char *buf, size_t len) +{ + (void) snprintf(buf, len, "%llx:%llx:%llx:%llx", + (u_longlong_t)zb->zb_objset, (u_longlong_t)zb->zb_object, + (u_longlong_t)zb->zb_level, (u_longlong_t)zb->zb_blkid); +} + +/* + * Convert a string to a bookmark + */ +#ifdef _KERNEL +static void +name_to_bookmark(char *buf, zbookmark_phys_t *zb) +{ + zb->zb_objset = strtonum(buf, &buf); + ASSERT(*buf == ':'); + zb->zb_object = strtonum(buf + 1, &buf); + ASSERT(*buf == ':'); + zb->zb_level = (int)strtonum(buf + 1, &buf); + ASSERT(*buf == ':'); + zb->zb_blkid = strtonum(buf + 1, &buf); + ASSERT(*buf == '\0'); +} +#endif + +/* + * Log an uncorrectable error to the persistent error log. We add it to the + * spa's list of pending errors. The changes are actually synced out to disk + * during spa_errlog_sync(). + */ +void +spa_log_error(spa_t *spa, zio_t *zio) +{ + zbookmark_phys_t *zb = &zio->io_logical->io_bookmark; + spa_error_entry_t search; + spa_error_entry_t *new; + avl_tree_t *tree; + avl_index_t where; + + /* + * If we are trying to import a pool, ignore any errors, as we won't be + * writing to the pool any time soon. + */ + if (spa_load_state(spa) == SPA_LOAD_TRYIMPORT) + return; + + mutex_enter(&spa->spa_errlist_lock); + + /* + * If we have had a request to rotate the log, log it to the next list + * instead of the current one. + */ + if (spa->spa_scrub_active || spa->spa_scrub_finished) + tree = &spa->spa_errlist_scrub; + else + tree = &spa->spa_errlist_last; + + search.se_bookmark = *zb; + if (avl_find(tree, &search, &where) != NULL) { + mutex_exit(&spa->spa_errlist_lock); + return; + } + + new = kmem_zalloc(sizeof (spa_error_entry_t), KM_SLEEP); + new->se_bookmark = *zb; + avl_insert(tree, new, where); + + mutex_exit(&spa->spa_errlist_lock); +} + +/* + * Return the number of errors currently in the error log. This is actually the + * sum of both the last log and the current log, since we don't know the union + * of these logs until we reach userland. + */ +uint64_t +spa_get_errlog_size(spa_t *spa) +{ + uint64_t total = 0, count; + + mutex_enter(&spa->spa_errlog_lock); + if (spa->spa_errlog_scrub != 0 && + zap_count(spa->spa_meta_objset, spa->spa_errlog_scrub, + &count) == 0) + total += count; + + if (spa->spa_errlog_last != 0 && !spa->spa_scrub_finished && + zap_count(spa->spa_meta_objset, spa->spa_errlog_last, + &count) == 0) + total += count; + mutex_exit(&spa->spa_errlog_lock); + + mutex_enter(&spa->spa_errlist_lock); + total += avl_numnodes(&spa->spa_errlist_last); + total += avl_numnodes(&spa->spa_errlist_scrub); + mutex_exit(&spa->spa_errlist_lock); + + return (total); +} + +#ifdef _KERNEL +static int +process_error_log(spa_t *spa, uint64_t obj, void *addr, size_t *count) +{ + zap_cursor_t zc; + zap_attribute_t za; + zbookmark_phys_t zb; + + if (obj == 0) + return (0); + + for (zap_cursor_init(&zc, spa->spa_meta_objset, obj); + zap_cursor_retrieve(&zc, &za) == 0; + zap_cursor_advance(&zc)) { + + if (*count == 0) { + zap_cursor_fini(&zc); + return (SET_ERROR(ENOMEM)); + } + + name_to_bookmark(za.za_name, &zb); + + if (copyout(&zb, (char *)addr + + (*count - 1) * sizeof (zbookmark_phys_t), + sizeof (zbookmark_phys_t)) != 0) { + zap_cursor_fini(&zc); + return (SET_ERROR(EFAULT)); + } + + *count -= 1; + } + + zap_cursor_fini(&zc); + + return (0); +} + +static int +process_error_list(avl_tree_t *list, void *addr, size_t *count) +{ + spa_error_entry_t *se; + + for (se = avl_first(list); se != NULL; se = AVL_NEXT(list, se)) { + + if (*count == 0) + return (SET_ERROR(ENOMEM)); + + if (copyout(&se->se_bookmark, (char *)addr + + (*count - 1) * sizeof (zbookmark_phys_t), + sizeof (zbookmark_phys_t)) != 0) + return (SET_ERROR(EFAULT)); + + *count -= 1; + } + + return (0); +} +#endif + +/* + * Copy all known errors to userland as an array of bookmarks. This is + * actually a union of the on-disk last log and current log, as well as any + * pending error requests. + * + * Because the act of reading the on-disk log could cause errors to be + * generated, we have two separate locks: one for the error log and one for the + * in-core error lists. We only need the error list lock to log and error, so + * we grab the error log lock while we read the on-disk logs, and only pick up + * the error list lock when we are finished. + */ +int +spa_get_errlog(spa_t *spa, void *uaddr, size_t *count) +{ + int ret = 0; + +#ifdef _KERNEL + mutex_enter(&spa->spa_errlog_lock); + + ret = process_error_log(spa, spa->spa_errlog_scrub, uaddr, count); + + if (!ret && !spa->spa_scrub_finished) + ret = process_error_log(spa, spa->spa_errlog_last, uaddr, + count); + + mutex_enter(&spa->spa_errlist_lock); + if (!ret) + ret = process_error_list(&spa->spa_errlist_scrub, uaddr, + count); + if (!ret) + ret = process_error_list(&spa->spa_errlist_last, uaddr, + count); + mutex_exit(&spa->spa_errlist_lock); + + mutex_exit(&spa->spa_errlog_lock); +#endif + + return (ret); +} + +/* + * Called when a scrub completes. This simply set a bit which tells which AVL + * tree to add new errors. spa_errlog_sync() is responsible for actually + * syncing the changes to the underlying objects. + */ +void +spa_errlog_rotate(spa_t *spa) +{ + mutex_enter(&spa->spa_errlist_lock); + spa->spa_scrub_finished = B_TRUE; + mutex_exit(&spa->spa_errlist_lock); +} + +/* + * Discard any pending errors from the spa_t. Called when unloading a faulted + * pool, as the errors encountered during the open cannot be synced to disk. + */ +void +spa_errlog_drain(spa_t *spa) +{ + spa_error_entry_t *se; + void *cookie; + + mutex_enter(&spa->spa_errlist_lock); + + cookie = NULL; + while ((se = avl_destroy_nodes(&spa->spa_errlist_last, + &cookie)) != NULL) + kmem_free(se, sizeof (spa_error_entry_t)); + cookie = NULL; + while ((se = avl_destroy_nodes(&spa->spa_errlist_scrub, + &cookie)) != NULL) + kmem_free(se, sizeof (spa_error_entry_t)); + + mutex_exit(&spa->spa_errlist_lock); +} + +/* + * Process a list of errors into the current on-disk log. + */ +static void +sync_error_list(spa_t *spa, avl_tree_t *t, uint64_t *obj, dmu_tx_t *tx) +{ + spa_error_entry_t *se; + char buf[64]; + void *cookie; + + if (avl_numnodes(t) != 0) { + /* create log if necessary */ + if (*obj == 0) + *obj = zap_create(spa->spa_meta_objset, + DMU_OT_ERROR_LOG, DMU_OT_NONE, + 0, tx); + + /* add errors to the current log */ + for (se = avl_first(t); se != NULL; se = AVL_NEXT(t, se)) { + char *name = se->se_name ? se->se_name : ""; + + bookmark_to_name(&se->se_bookmark, buf, sizeof (buf)); + + (void) zap_update(spa->spa_meta_objset, + *obj, buf, 1, strlen(name) + 1, name, tx); + } + + /* purge the error list */ + cookie = NULL; + while ((se = avl_destroy_nodes(t, &cookie)) != NULL) + kmem_free(se, sizeof (spa_error_entry_t)); + } +} + +/* + * Sync the error log out to disk. This is a little tricky because the act of + * writing the error log requires the spa_errlist_lock. So, we need to lock the + * error lists, take a copy of the lists, and then reinitialize them. Then, we + * drop the error list lock and take the error log lock, at which point we + * do the errlog processing. Then, if we encounter an I/O error during this + * process, we can successfully add the error to the list. Note that this will + * result in the perpetual recycling of errors, but it is an unlikely situation + * and not a performance critical operation. + */ +void +spa_errlog_sync(spa_t *spa, uint64_t txg) +{ + dmu_tx_t *tx; + avl_tree_t scrub, last; + int scrub_finished; + + mutex_enter(&spa->spa_errlist_lock); + + /* + * Bail out early under normal circumstances. + */ + if (avl_numnodes(&spa->spa_errlist_scrub) == 0 && + avl_numnodes(&spa->spa_errlist_last) == 0 && + !spa->spa_scrub_finished) { + mutex_exit(&spa->spa_errlist_lock); + return; + } + + spa_get_errlists(spa, &last, &scrub); + scrub_finished = spa->spa_scrub_finished; + spa->spa_scrub_finished = B_FALSE; + + mutex_exit(&spa->spa_errlist_lock); + mutex_enter(&spa->spa_errlog_lock); + + tx = dmu_tx_create_assigned(spa->spa_dsl_pool, txg); + + /* + * Sync out the current list of errors. + */ + sync_error_list(spa, &last, &spa->spa_errlog_last, tx); + + /* + * Rotate the log if necessary. + */ + if (scrub_finished) { + if (spa->spa_errlog_last != 0) + VERIFY(dmu_object_free(spa->spa_meta_objset, + spa->spa_errlog_last, tx) == 0); + spa->spa_errlog_last = spa->spa_errlog_scrub; + spa->spa_errlog_scrub = 0; + + sync_error_list(spa, &scrub, &spa->spa_errlog_last, tx); + } + + /* + * Sync out any pending scrub errors. + */ + sync_error_list(spa, &scrub, &spa->spa_errlog_scrub, tx); + + /* + * Update the MOS to reflect the new values. + */ + (void) zap_update(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_ERRLOG_LAST, sizeof (uint64_t), 1, + &spa->spa_errlog_last, tx); + (void) zap_update(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_ERRLOG_SCRUB, sizeof (uint64_t), 1, + &spa->spa_errlog_scrub, tx); + + dmu_tx_commit(tx); + + mutex_exit(&spa->spa_errlog_lock); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +/* error handling */ +EXPORT_SYMBOL(spa_log_error); +EXPORT_SYMBOL(spa_get_errlog_size); +EXPORT_SYMBOL(spa_get_errlog); +EXPORT_SYMBOL(spa_errlog_rotate); +EXPORT_SYMBOL(spa_errlog_drain); +EXPORT_SYMBOL(spa_errlog_sync); +EXPORT_SYMBOL(spa_get_errlists); +#endif --- linux-4.4.0.orig/zfs/module/zfs/spa_history.c +++ linux-4.4.0/zfs/module/zfs/spa_history.c @@ -0,0 +1,547 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "zfs_comutil.h" +#ifdef _KERNEL +#include +#endif + +/* + * Routines to manage the on-disk history log. + * + * The history log is stored as a dmu object containing + * tuples. + * + * Where "record nvlist" is a nvlist containing uint64_ts and strings, and + * "packed record length" is the packed length of the "record nvlist" stored + * as a little endian uint64_t. + * + * The log is implemented as a ring buffer, though the original creation + * of the pool ('zpool create') is never overwritten. + * + * The history log is tracked as object 'spa_t::spa_history'. The bonus buffer + * of 'spa_history' stores the offsets for logging/retrieving history as + * 'spa_history_phys_t'. 'sh_pool_create_len' is the ending offset in bytes of + * where the 'zpool create' record is stored. This allows us to never + * overwrite the original creation of the pool. 'sh_phys_max_off' is the + * physical ending offset in bytes of the log. This tells you the length of + * the buffer. 'sh_eof' is the logical EOF (in bytes). Whenever a record + * is added, 'sh_eof' is incremented by the the size of the record. + * 'sh_eof' is never decremented. 'sh_bof' is the logical BOF (in bytes). + * This is where the consumer should start reading from after reading in + * the 'zpool create' portion of the log. + * + * 'sh_records_lost' keeps track of how many records have been overwritten + * and permanently lost. + */ + +/* convert a logical offset to physical */ +static uint64_t +spa_history_log_to_phys(uint64_t log_off, spa_history_phys_t *shpp) +{ + uint64_t phys_len; + + phys_len = shpp->sh_phys_max_off - shpp->sh_pool_create_len; + return ((log_off - shpp->sh_pool_create_len) % phys_len + + shpp->sh_pool_create_len); +} + +void +spa_history_create_obj(spa_t *spa, dmu_tx_t *tx) +{ + dmu_buf_t *dbp; + spa_history_phys_t *shpp; + objset_t *mos = spa->spa_meta_objset; + + ASSERT(spa->spa_history == 0); + spa->spa_history = dmu_object_alloc(mos, DMU_OT_SPA_HISTORY, + SPA_OLD_MAXBLOCKSIZE, DMU_OT_SPA_HISTORY_OFFSETS, + sizeof (spa_history_phys_t), tx); + + VERIFY(zap_add(mos, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_HISTORY, sizeof (uint64_t), 1, + &spa->spa_history, tx) == 0); + + VERIFY(0 == dmu_bonus_hold(mos, spa->spa_history, FTAG, &dbp)); + ASSERT(dbp->db_size >= sizeof (spa_history_phys_t)); + + shpp = dbp->db_data; + dmu_buf_will_dirty(dbp, tx); + + /* + * Figure out maximum size of history log. We set it at + * 0.1% of pool size, with a max of 1G and min of 128KB. + */ + shpp->sh_phys_max_off = + metaslab_class_get_dspace(spa_normal_class(spa)) / 1000; + shpp->sh_phys_max_off = MIN(shpp->sh_phys_max_off, 1<<30); + shpp->sh_phys_max_off = MAX(shpp->sh_phys_max_off, 128<<10); + + dmu_buf_rele(dbp, FTAG); +} + +/* + * Change 'sh_bof' to the beginning of the next record. + */ +static int +spa_history_advance_bof(spa_t *spa, spa_history_phys_t *shpp) +{ + objset_t *mos = spa->spa_meta_objset; + uint64_t firstread, reclen, phys_bof; + char buf[sizeof (reclen)]; + int err; + + phys_bof = spa_history_log_to_phys(shpp->sh_bof, shpp); + firstread = MIN(sizeof (reclen), shpp->sh_phys_max_off - phys_bof); + + if ((err = dmu_read(mos, spa->spa_history, phys_bof, firstread, + buf, DMU_READ_PREFETCH)) != 0) + return (err); + if (firstread != sizeof (reclen)) { + if ((err = dmu_read(mos, spa->spa_history, + shpp->sh_pool_create_len, sizeof (reclen) - firstread, + buf + firstread, DMU_READ_PREFETCH)) != 0) + return (err); + } + + reclen = LE_64(*((uint64_t *)buf)); + shpp->sh_bof += reclen + sizeof (reclen); + shpp->sh_records_lost++; + return (0); +} + +static int +spa_history_write(spa_t *spa, void *buf, uint64_t len, spa_history_phys_t *shpp, + dmu_tx_t *tx) +{ + uint64_t firstwrite, phys_eof; + objset_t *mos = spa->spa_meta_objset; + int err; + + ASSERT(MUTEX_HELD(&spa->spa_history_lock)); + + /* see if we need to reset logical BOF */ + while (shpp->sh_phys_max_off - shpp->sh_pool_create_len - + (shpp->sh_eof - shpp->sh_bof) <= len) { + if ((err = spa_history_advance_bof(spa, shpp)) != 0) { + return (err); + } + } + + phys_eof = spa_history_log_to_phys(shpp->sh_eof, shpp); + firstwrite = MIN(len, shpp->sh_phys_max_off - phys_eof); + shpp->sh_eof += len; + dmu_write(mos, spa->spa_history, phys_eof, firstwrite, buf, tx); + + len -= firstwrite; + if (len > 0) { + /* write out the rest at the beginning of physical file */ + dmu_write(mos, spa->spa_history, shpp->sh_pool_create_len, + len, (char *)buf + firstwrite, tx); + } + + return (0); +} + +static char * +spa_history_zone(void) +{ +#ifdef _KERNEL +#ifdef HAVE_SPL + return ("linux"); +#else + return (curproc->p_zone->zone_name); +#endif +#else + return (NULL); +#endif +} + +/* + * Write out a history event. + */ +/*ARGSUSED*/ +static void +spa_history_log_sync(void *arg, dmu_tx_t *tx) +{ + nvlist_t *nvl = arg; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + objset_t *mos = spa->spa_meta_objset; + dmu_buf_t *dbp; + spa_history_phys_t *shpp; + size_t reclen; + uint64_t le_len; + char *record_packed = NULL; + int ret; + + /* + * If we have an older pool that doesn't have a command + * history object, create it now. + */ + mutex_enter(&spa->spa_history_lock); + if (!spa->spa_history) + spa_history_create_obj(spa, tx); + mutex_exit(&spa->spa_history_lock); + + /* + * Get the offset of where we need to write via the bonus buffer. + * Update the offset when the write completes. + */ + VERIFY0(dmu_bonus_hold(mos, spa->spa_history, FTAG, &dbp)); + shpp = dbp->db_data; + + dmu_buf_will_dirty(dbp, tx); + +#ifdef ZFS_DEBUG + { + dmu_object_info_t doi; + dmu_object_info_from_db(dbp, &doi); + ASSERT3U(doi.doi_bonus_type, ==, DMU_OT_SPA_HISTORY_OFFSETS); + } +#endif + + fnvlist_add_uint64(nvl, ZPOOL_HIST_TIME, gethrestime_sec()); + fnvlist_add_string(nvl, ZPOOL_HIST_HOST, utsname()->nodename); + + if (nvlist_exists(nvl, ZPOOL_HIST_CMD)) { + zfs_dbgmsg("command: %s", + fnvlist_lookup_string(nvl, ZPOOL_HIST_CMD)); + } else if (nvlist_exists(nvl, ZPOOL_HIST_INT_NAME)) { + if (nvlist_exists(nvl, ZPOOL_HIST_DSNAME)) { + zfs_dbgmsg("txg %lld %s %s (id %llu) %s", + fnvlist_lookup_uint64(nvl, ZPOOL_HIST_TXG), + fnvlist_lookup_string(nvl, ZPOOL_HIST_INT_NAME), + fnvlist_lookup_string(nvl, ZPOOL_HIST_DSNAME), + fnvlist_lookup_uint64(nvl, ZPOOL_HIST_DSID), + fnvlist_lookup_string(nvl, ZPOOL_HIST_INT_STR)); + } else { + zfs_dbgmsg("txg %lld %s %s", + fnvlist_lookup_uint64(nvl, ZPOOL_HIST_TXG), + fnvlist_lookup_string(nvl, ZPOOL_HIST_INT_NAME), + fnvlist_lookup_string(nvl, ZPOOL_HIST_INT_STR)); + } + } else if (nvlist_exists(nvl, ZPOOL_HIST_IOCTL)) { + zfs_dbgmsg("ioctl %s", + fnvlist_lookup_string(nvl, ZPOOL_HIST_IOCTL)); + } + + VERIFY3U(nvlist_pack(nvl, &record_packed, &reclen, NV_ENCODE_NATIVE, + KM_SLEEP), ==, 0); + + mutex_enter(&spa->spa_history_lock); + + /* write out the packed length as little endian */ + le_len = LE_64((uint64_t)reclen); + ret = spa_history_write(spa, &le_len, sizeof (le_len), shpp, tx); + if (!ret) + ret = spa_history_write(spa, record_packed, reclen, shpp, tx); + + /* The first command is the create, which we keep forever */ + if (ret == 0 && shpp->sh_pool_create_len == 0 && + nvlist_exists(nvl, ZPOOL_HIST_CMD)) { + shpp->sh_pool_create_len = shpp->sh_bof = shpp->sh_eof; + } + + mutex_exit(&spa->spa_history_lock); + fnvlist_pack_free(record_packed, reclen); + dmu_buf_rele(dbp, FTAG); + fnvlist_free(nvl); +} + +/* + * Write out a history event. + */ +int +spa_history_log(spa_t *spa, const char *msg) +{ + int err; + nvlist_t *nvl = fnvlist_alloc(); + + fnvlist_add_string(nvl, ZPOOL_HIST_CMD, msg); + err = spa_history_log_nvl(spa, nvl); + fnvlist_free(nvl); + return (err); +} + +int +spa_history_log_nvl(spa_t *spa, nvlist_t *nvl) +{ + int err = 0; + dmu_tx_t *tx; + nvlist_t *nvarg; + + if (spa_version(spa) < SPA_VERSION_ZPOOL_HISTORY || !spa_writeable(spa)) + return (SET_ERROR(EINVAL)); + + tx = dmu_tx_create_dd(spa_get_dsl(spa)->dp_mos_dir); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) { + dmu_tx_abort(tx); + return (err); + } + + VERIFY0(nvlist_dup(nvl, &nvarg, KM_SLEEP)); + if (spa_history_zone() != NULL) { + fnvlist_add_string(nvarg, ZPOOL_HIST_ZONE, + spa_history_zone()); + } + fnvlist_add_uint64(nvarg, ZPOOL_HIST_WHO, crgetruid(CRED())); + + /* Kick this off asynchronously; errors are ignored. */ + dsl_sync_task_nowait(spa_get_dsl(spa), spa_history_log_sync, + nvarg, 0, ZFS_SPACE_CHECK_NONE, tx); + dmu_tx_commit(tx); + + /* spa_history_log_sync will free nvl */ + return (err); + +} + +/* + * Read out the command history. + */ +int +spa_history_get(spa_t *spa, uint64_t *offp, uint64_t *len, char *buf) +{ + objset_t *mos = spa->spa_meta_objset; + dmu_buf_t *dbp; + uint64_t read_len, phys_read_off, phys_eof; + uint64_t leftover = 0; + spa_history_phys_t *shpp; + int err; + + /* + * If the command history doesn't exist (older pool), + * that's ok, just return ENOENT. + */ + if (!spa->spa_history) + return (SET_ERROR(ENOENT)); + + /* + * The history is logged asynchronously, so when they request + * the first chunk of history, make sure everything has been + * synced to disk so that we get it. + */ + if (*offp == 0 && spa_writeable(spa)) + txg_wait_synced(spa_get_dsl(spa), 0); + + if ((err = dmu_bonus_hold(mos, spa->spa_history, FTAG, &dbp)) != 0) + return (err); + shpp = dbp->db_data; + +#ifdef ZFS_DEBUG + { + dmu_object_info_t doi; + dmu_object_info_from_db(dbp, &doi); + ASSERT3U(doi.doi_bonus_type, ==, DMU_OT_SPA_HISTORY_OFFSETS); + } +#endif + + mutex_enter(&spa->spa_history_lock); + phys_eof = spa_history_log_to_phys(shpp->sh_eof, shpp); + + if (*offp < shpp->sh_pool_create_len) { + /* read in just the zpool create history */ + phys_read_off = *offp; + read_len = MIN(*len, shpp->sh_pool_create_len - + phys_read_off); + } else { + /* + * Need to reset passed in offset to BOF if the passed in + * offset has since been overwritten. + */ + *offp = MAX(*offp, shpp->sh_bof); + phys_read_off = spa_history_log_to_phys(*offp, shpp); + + /* + * Read up to the minimum of what the user passed down or + * the EOF (physical or logical). If we hit physical EOF, + * use 'leftover' to read from the physical BOF. + */ + if (phys_read_off <= phys_eof) { + read_len = MIN(*len, phys_eof - phys_read_off); + } else { + read_len = MIN(*len, + shpp->sh_phys_max_off - phys_read_off); + if (phys_read_off + *len > shpp->sh_phys_max_off) { + leftover = MIN(*len - read_len, + phys_eof - shpp->sh_pool_create_len); + } + } + } + + /* offset for consumer to use next */ + *offp += read_len + leftover; + + /* tell the consumer how much you actually read */ + *len = read_len + leftover; + + if (read_len == 0) { + mutex_exit(&spa->spa_history_lock); + dmu_buf_rele(dbp, FTAG); + return (0); + } + + err = dmu_read(mos, spa->spa_history, phys_read_off, read_len, buf, + DMU_READ_PREFETCH); + if (leftover && err == 0) { + err = dmu_read(mos, spa->spa_history, shpp->sh_pool_create_len, + leftover, buf + read_len, DMU_READ_PREFETCH); + } + mutex_exit(&spa->spa_history_lock); + + dmu_buf_rele(dbp, FTAG); + return (err); +} + +/* + * The nvlist will be consumed by this call. + */ +static void +log_internal(nvlist_t *nvl, const char *operation, spa_t *spa, + dmu_tx_t *tx, const char *fmt, va_list adx) +{ + char *msg; + + /* + * If this is part of creating a pool, not everything is + * initialized yet, so don't bother logging the internal events. + * Likewise if the pool is not writeable. + */ + if (tx->tx_txg == TXG_INITIAL || !spa_writeable(spa)) { + fnvlist_free(nvl); + return; + } + + msg = kmem_vasprintf(fmt, adx); + fnvlist_add_string(nvl, ZPOOL_HIST_INT_STR, msg); + strfree(msg); + + fnvlist_add_string(nvl, ZPOOL_HIST_INT_NAME, operation); + fnvlist_add_uint64(nvl, ZPOOL_HIST_TXG, tx->tx_txg); + + if (dmu_tx_is_syncing(tx)) { + spa_history_log_sync(nvl, tx); + } else { + dsl_sync_task_nowait(spa_get_dsl(spa), + spa_history_log_sync, nvl, 0, ZFS_SPACE_CHECK_NONE, tx); + } + /* spa_history_log_sync() will free nvl */ +} + +void +spa_history_log_internal(spa_t *spa, const char *operation, + dmu_tx_t *tx, const char *fmt, ...) +{ + dmu_tx_t *htx = tx; + va_list adx; + + /* create a tx if we didn't get one */ + if (tx == NULL) { + htx = dmu_tx_create_dd(spa_get_dsl(spa)->dp_mos_dir); + if (dmu_tx_assign(htx, TXG_WAIT) != 0) { + dmu_tx_abort(htx); + return; + } + } + + va_start(adx, fmt); + log_internal(fnvlist_alloc(), operation, spa, htx, fmt, adx); + va_end(adx); + + /* if we didn't get a tx from the caller, commit the one we made */ + if (tx == NULL) + dmu_tx_commit(htx); +} + +void +spa_history_log_internal_ds(dsl_dataset_t *ds, const char *operation, + dmu_tx_t *tx, const char *fmt, ...) +{ + va_list adx; + char namebuf[MAXNAMELEN]; + nvlist_t *nvl = fnvlist_alloc(); + + ASSERT(tx != NULL); + + dsl_dataset_name(ds, namebuf); + fnvlist_add_string(nvl, ZPOOL_HIST_DSNAME, namebuf); + fnvlist_add_uint64(nvl, ZPOOL_HIST_DSID, ds->ds_object); + + va_start(adx, fmt); + log_internal(nvl, operation, dsl_dataset_get_spa(ds), tx, fmt, adx); + va_end(adx); +} + +void +spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation, + dmu_tx_t *tx, const char *fmt, ...) +{ + va_list adx; + char namebuf[MAXNAMELEN]; + nvlist_t *nvl = fnvlist_alloc(); + + ASSERT(tx != NULL); + + dsl_dir_name(dd, namebuf); + fnvlist_add_string(nvl, ZPOOL_HIST_DSNAME, namebuf); + fnvlist_add_uint64(nvl, ZPOOL_HIST_DSID, + dsl_dir_phys(dd)->dd_head_dataset_obj); + + va_start(adx, fmt); + log_internal(nvl, operation, dd->dd_pool->dp_spa, tx, fmt, adx); + va_end(adx); +} + +void +spa_history_log_version(spa_t *spa, const char *operation) +{ + utsname_t *u = utsname(); + + spa_history_log_internal(spa, operation, NULL, + "pool version %llu; software version %llu/%d; uts %s %s %s %s", + (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION, + u->nodename, u->release, u->version, u->machine); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(spa_history_create_obj); +EXPORT_SYMBOL(spa_history_get); +EXPORT_SYMBOL(spa_history_log); +EXPORT_SYMBOL(spa_history_log_internal); +EXPORT_SYMBOL(spa_history_log_version); +#endif --- linux-4.4.0.orig/zfs/module/zfs/spa_misc.c +++ linux-4.4.0/zfs/module/zfs/spa_misc.c @@ -0,0 +1,2100 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "zfs_prop.h" +#include "zfeature_common.h" + +/* + * SPA locking + * + * There are four basic locks for managing spa_t structures: + * + * spa_namespace_lock (global mutex) + * + * This lock must be acquired to do any of the following: + * + * - Lookup a spa_t by name + * - Add or remove a spa_t from the namespace + * - Increase spa_refcount from non-zero + * - Check if spa_refcount is zero + * - Rename a spa_t + * - add/remove/attach/detach devices + * - Held for the duration of create/destroy/import/export + * + * It does not need to handle recursion. A create or destroy may + * reference objects (files or zvols) in other pools, but by + * definition they must have an existing reference, and will never need + * to lookup a spa_t by name. + * + * spa_refcount (per-spa refcount_t protected by mutex) + * + * This reference count keep track of any active users of the spa_t. The + * spa_t cannot be destroyed or freed while this is non-zero. Internally, + * the refcount is never really 'zero' - opening a pool implicitly keeps + * some references in the DMU. Internally we check against spa_minref, but + * present the image of a zero/non-zero value to consumers. + * + * spa_config_lock[] (per-spa array of rwlocks) + * + * This protects the spa_t from config changes, and must be held in + * the following circumstances: + * + * - RW_READER to perform I/O to the spa + * - RW_WRITER to change the vdev config + * + * The locking order is fairly straightforward: + * + * spa_namespace_lock -> spa_refcount + * + * The namespace lock must be acquired to increase the refcount from 0 + * or to check if it is zero. + * + * spa_refcount -> spa_config_lock[] + * + * There must be at least one valid reference on the spa_t to acquire + * the config lock. + * + * spa_namespace_lock -> spa_config_lock[] + * + * The namespace lock must always be taken before the config lock. + * + * + * The spa_namespace_lock can be acquired directly and is globally visible. + * + * The namespace is manipulated using the following functions, all of which + * require the spa_namespace_lock to be held. + * + * spa_lookup() Lookup a spa_t by name. + * + * spa_add() Create a new spa_t in the namespace. + * + * spa_remove() Remove a spa_t from the namespace. This also + * frees up any memory associated with the spa_t. + * + * spa_next() Returns the next spa_t in the system, or the + * first if NULL is passed. + * + * spa_evict_all() Shutdown and remove all spa_t structures in + * the system. + * + * spa_guid_exists() Determine whether a pool/device guid exists. + * + * The spa_refcount is manipulated using the following functions: + * + * spa_open_ref() Adds a reference to the given spa_t. Must be + * called with spa_namespace_lock held if the + * refcount is currently zero. + * + * spa_close() Remove a reference from the spa_t. This will + * not free the spa_t or remove it from the + * namespace. No locking is required. + * + * spa_refcount_zero() Returns true if the refcount is currently + * zero. Must be called with spa_namespace_lock + * held. + * + * The spa_config_lock[] is an array of rwlocks, ordered as follows: + * SCL_CONFIG > SCL_STATE > SCL_ALLOC > SCL_ZIO > SCL_FREE > SCL_VDEV. + * spa_config_lock[] is manipulated with spa_config_{enter,exit,held}(). + * + * To read the configuration, it suffices to hold one of these locks as reader. + * To modify the configuration, you must hold all locks as writer. To modify + * vdev state without altering the vdev tree's topology (e.g. online/offline), + * you must hold SCL_STATE and SCL_ZIO as writer. + * + * We use these distinct config locks to avoid recursive lock entry. + * For example, spa_sync() (which holds SCL_CONFIG as reader) induces + * block allocations (SCL_ALLOC), which may require reading space maps + * from disk (dmu_read() -> zio_read() -> SCL_ZIO). + * + * The spa config locks cannot be normal rwlocks because we need the + * ability to hand off ownership. For example, SCL_ZIO is acquired + * by the issuing thread and later released by an interrupt thread. + * They do, however, obey the usual write-wanted semantics to prevent + * writer (i.e. system administrator) starvation. + * + * The lock acquisition rules are as follows: + * + * SCL_CONFIG + * Protects changes to the vdev tree topology, such as vdev + * add/remove/attach/detach. Protects the dirty config list + * (spa_config_dirty_list) and the set of spares and l2arc devices. + * + * SCL_STATE + * Protects changes to pool state and vdev state, such as vdev + * online/offline/fault/degrade/clear. Protects the dirty state list + * (spa_state_dirty_list) and global pool state (spa_state). + * + * SCL_ALLOC + * Protects changes to metaslab groups and classes. + * Held as reader by metaslab_alloc() and metaslab_claim(). + * + * SCL_ZIO + * Held by bp-level zios (those which have no io_vd upon entry) + * to prevent changes to the vdev tree. The bp-level zio implicitly + * protects all of its vdev child zios, which do not hold SCL_ZIO. + * + * SCL_FREE + * Protects changes to metaslab groups and classes. + * Held as reader by metaslab_free(). SCL_FREE is distinct from + * SCL_ALLOC, and lower than SCL_ZIO, so that we can safely free + * blocks in zio_done() while another i/o that holds either + * SCL_ALLOC or SCL_ZIO is waiting for this i/o to complete. + * + * SCL_VDEV + * Held as reader to prevent changes to the vdev tree during trivial + * inquiries such as bp_get_dsize(). SCL_VDEV is distinct from the + * other locks, and lower than all of them, to ensure that it's safe + * to acquire regardless of caller context. + * + * In addition, the following rules apply: + * + * (a) spa_props_lock protects pool properties, spa_config and spa_config_list. + * The lock ordering is SCL_CONFIG > spa_props_lock. + * + * (b) I/O operations on leaf vdevs. For any zio operation that takes + * an explicit vdev_t argument -- such as zio_ioctl(), zio_read_phys(), + * or zio_write_phys() -- the caller must ensure that the config cannot + * cannot change in the interim, and that the vdev cannot be reopened. + * SCL_STATE as reader suffices for both. + * + * The vdev configuration is protected by spa_vdev_enter() / spa_vdev_exit(). + * + * spa_vdev_enter() Acquire the namespace lock and the config lock + * for writing. + * + * spa_vdev_exit() Release the config lock, wait for all I/O + * to complete, sync the updated configs to the + * cache, and release the namespace lock. + * + * vdev state is protected by spa_vdev_state_enter() / spa_vdev_state_exit(). + * Like spa_vdev_enter/exit, these are convenience wrappers -- the actual + * locking is, always, based on spa_namespace_lock and spa_config_lock[]. + * + * spa_rename() is also implemented within this file since it requires + * manipulation of the namespace. + */ + +static avl_tree_t spa_namespace_avl; +kmutex_t spa_namespace_lock; +static kcondvar_t spa_namespace_cv; +int spa_max_replication_override = SPA_DVAS_PER_BP; + +static kmutex_t spa_spare_lock; +static avl_tree_t spa_spare_avl; +static kmutex_t spa_l2cache_lock; +static avl_tree_t spa_l2cache_avl; + +kmem_cache_t *spa_buffer_pool; +int spa_mode_global; + +#ifdef ZFS_DEBUG +/* Everything except dprintf and spa is on by default in debug builds */ +int zfs_flags = ~(ZFS_DEBUG_DPRINTF | ZFS_DEBUG_SPA); +#else +int zfs_flags = 0; +#endif + +/* + * zfs_recover can be set to nonzero to attempt to recover from + * otherwise-fatal errors, typically caused by on-disk corruption. When + * set, calls to zfs_panic_recover() will turn into warning messages. + * This should only be used as a last resort, as it typically results + * in leaked space, or worse. + */ +int zfs_recover = B_FALSE; + +/* + * If destroy encounters an EIO while reading metadata (e.g. indirect + * blocks), space referenced by the missing metadata can not be freed. + * Normally this causes the background destroy to become "stalled", as + * it is unable to make forward progress. While in this stalled state, + * all remaining space to free from the error-encountering filesystem is + * "temporarily leaked". Set this flag to cause it to ignore the EIO, + * permanently leak the space from indirect blocks that can not be read, + * and continue to free everything else that it can. + * + * The default, "stalling" behavior is useful if the storage partially + * fails (i.e. some but not all i/os fail), and then later recovers. In + * this case, we will be able to continue pool operations while it is + * partially failed, and when it recovers, we can continue to free the + * space, with no leaks. However, note that this case is actually + * fairly rare. + * + * Typically pools either (a) fail completely (but perhaps temporarily, + * e.g. a top-level vdev going offline), or (b) have localized, + * permanent errors (e.g. disk returns the wrong data due to bit flip or + * firmware bug). In case (a), this setting does not matter because the + * pool will be suspended and the sync thread will not be able to make + * forward progress regardless. In case (b), because the error is + * permanent, the best we can do is leak the minimum amount of space, + * which is what setting this flag will do. Therefore, it is reasonable + * for this flag to normally be set, but we chose the more conservative + * approach of not setting it, so that there is no possibility of + * leaking space in the "partial temporary" failure case. + */ +int zfs_free_leak_on_eio = B_FALSE; + +/* + * Expiration time in milliseconds. This value has two meanings. First it is + * used to determine when the spa_deadman() logic should fire. By default the + * spa_deadman() will fire if spa_sync() has not completed in 1000 seconds. + * Secondly, the value determines if an I/O is considered "hung". Any I/O that + * has not completed in zfs_deadman_synctime_ms is considered "hung" resulting + * in a system panic. + */ +unsigned long zfs_deadman_synctime_ms = 1000000ULL; + +/* + * By default the deadman is enabled. + */ +int zfs_deadman_enabled = 1; + +/* + * The worst case is single-sector max-parity RAID-Z blocks, in which + * case the space requirement is exactly (VDEV_RAIDZ_MAXPARITY + 1) + * times the size; so just assume that. Add to this the fact that + * we can have up to 3 DVAs per bp, and one more factor of 2 because + * the block may be dittoed with up to 3 DVAs by ddt_sync(). All together, + * the worst case is: + * (VDEV_RAIDZ_MAXPARITY + 1) * SPA_DVAS_PER_BP * 2 == 24 + */ +int spa_asize_inflation = 24; + +/* + * Normally, we don't allow the last 3.2% (1/(2^spa_slop_shift)) of space in + * the pool to be consumed. This ensures that we don't run the pool + * completely out of space, due to unaccounted changes (e.g. to the MOS). + * It also limits the worst-case time to allocate space. If we have + * less than this amount of free space, most ZPL operations (e.g. write, + * create) will return ENOSPC. + * + * Certain operations (e.g. file removal, most administrative actions) can + * use half the slop space. They will only return ENOSPC if less than half + * the slop space is free. Typically, once the pool has less than the slop + * space free, the user will use these operations to free up space in the pool. + * These are the operations that call dsl_pool_adjustedsize() with the netfree + * argument set to TRUE. + * + * A very restricted set of operations are always permitted, regardless of + * the amount of free space. These are the operations that call + * dsl_sync_task(ZFS_SPACE_CHECK_NONE), e.g. "zfs destroy". If these + * operations result in a net increase in the amount of space used, + * it is possible to run the pool completely out of space, causing it to + * be permanently read-only. + * + * See also the comments in zfs_space_check_t. + */ +int spa_slop_shift = 5; + +/* + * ========================================================================== + * SPA config locking + * ========================================================================== + */ +static void +spa_config_lock_init(spa_t *spa) +{ + int i; + + for (i = 0; i < SCL_LOCKS; i++) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + mutex_init(&scl->scl_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&scl->scl_cv, NULL, CV_DEFAULT, NULL); + refcount_create_untracked(&scl->scl_count); + scl->scl_writer = NULL; + scl->scl_write_wanted = 0; + } +} + +static void +spa_config_lock_destroy(spa_t *spa) +{ + int i; + + for (i = 0; i < SCL_LOCKS; i++) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + mutex_destroy(&scl->scl_lock); + cv_destroy(&scl->scl_cv); + refcount_destroy(&scl->scl_count); + ASSERT(scl->scl_writer == NULL); + ASSERT(scl->scl_write_wanted == 0); + } +} + +int +spa_config_tryenter(spa_t *spa, int locks, void *tag, krw_t rw) +{ + int i; + + for (i = 0; i < SCL_LOCKS; i++) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + if (!(locks & (1 << i))) + continue; + mutex_enter(&scl->scl_lock); + if (rw == RW_READER) { + if (scl->scl_writer || scl->scl_write_wanted) { + mutex_exit(&scl->scl_lock); + spa_config_exit(spa, locks ^ (1 << i), tag); + return (0); + } + } else { + ASSERT(scl->scl_writer != curthread); + if (!refcount_is_zero(&scl->scl_count)) { + mutex_exit(&scl->scl_lock); + spa_config_exit(spa, locks ^ (1 << i), tag); + return (0); + } + scl->scl_writer = curthread; + } + (void) refcount_add(&scl->scl_count, tag); + mutex_exit(&scl->scl_lock); + } + return (1); +} + +void +spa_config_enter(spa_t *spa, int locks, void *tag, krw_t rw) +{ + int wlocks_held = 0; + int i; + + ASSERT3U(SCL_LOCKS, <, sizeof (wlocks_held) * NBBY); + + for (i = 0; i < SCL_LOCKS; i++) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + if (scl->scl_writer == curthread) + wlocks_held |= (1 << i); + if (!(locks & (1 << i))) + continue; + mutex_enter(&scl->scl_lock); + if (rw == RW_READER) { + while (scl->scl_writer || scl->scl_write_wanted) { + cv_wait(&scl->scl_cv, &scl->scl_lock); + } + } else { + ASSERT(scl->scl_writer != curthread); + while (!refcount_is_zero(&scl->scl_count)) { + scl->scl_write_wanted++; + cv_wait(&scl->scl_cv, &scl->scl_lock); + scl->scl_write_wanted--; + } + scl->scl_writer = curthread; + } + (void) refcount_add(&scl->scl_count, tag); + mutex_exit(&scl->scl_lock); + } + ASSERT(wlocks_held <= locks); +} + +void +spa_config_exit(spa_t *spa, int locks, void *tag) +{ + int i; + + for (i = SCL_LOCKS - 1; i >= 0; i--) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + if (!(locks & (1 << i))) + continue; + mutex_enter(&scl->scl_lock); + ASSERT(!refcount_is_zero(&scl->scl_count)); + if (refcount_remove(&scl->scl_count, tag) == 0) { + ASSERT(scl->scl_writer == NULL || + scl->scl_writer == curthread); + scl->scl_writer = NULL; /* OK in either case */ + cv_broadcast(&scl->scl_cv); + } + mutex_exit(&scl->scl_lock); + } +} + +int +spa_config_held(spa_t *spa, int locks, krw_t rw) +{ + int i, locks_held = 0; + + for (i = 0; i < SCL_LOCKS; i++) { + spa_config_lock_t *scl = &spa->spa_config_lock[i]; + if (!(locks & (1 << i))) + continue; + if ((rw == RW_READER && !refcount_is_zero(&scl->scl_count)) || + (rw == RW_WRITER && scl->scl_writer == curthread)) + locks_held |= 1 << i; + } + + return (locks_held); +} + +/* + * ========================================================================== + * SPA namespace functions + * ========================================================================== + */ + +/* + * Lookup the named spa_t in the AVL tree. The spa_namespace_lock must be held. + * Returns NULL if no matching spa_t is found. + */ +spa_t * +spa_lookup(const char *name) +{ + static spa_t search; /* spa_t is large; don't allocate on stack */ + spa_t *spa; + avl_index_t where; + char *cp; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + (void) strlcpy(search.spa_name, name, sizeof (search.spa_name)); + + /* + * If it's a full dataset name, figure out the pool name and + * just use that. + */ + cp = strpbrk(search.spa_name, "/@#"); + if (cp != NULL) + *cp = '\0'; + + spa = avl_find(&spa_namespace_avl, &search, &where); + + return (spa); +} + +/* + * Fires when spa_sync has not completed within zfs_deadman_synctime_ms. + * If the zfs_deadman_enabled flag is set then it inspects all vdev queues + * looking for potentially hung I/Os. + */ +void +spa_deadman(void *arg) +{ + spa_t *spa = arg; + + zfs_dbgmsg("slow spa_sync: started %llu seconds ago, calls %llu", + (gethrtime() - spa->spa_sync_starttime) / NANOSEC, + ++spa->spa_deadman_calls); + if (zfs_deadman_enabled) + vdev_deadman(spa->spa_root_vdev); + + spa->spa_deadman_tqid = taskq_dispatch_delay(system_taskq, + spa_deadman, spa, KM_SLEEP, ddi_get_lbolt() + + NSEC_TO_TICK(spa->spa_deadman_synctime)); +} + +/* + * Create an uninitialized spa_t with the given name. Requires + * spa_namespace_lock. The caller must ensure that the spa_t doesn't already + * exist by calling spa_lookup() first. + */ +spa_t * +spa_add(const char *name, nvlist_t *config, const char *altroot) +{ + spa_t *spa; + spa_config_dirent_t *dp; + int t; + int i; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + spa = kmem_zalloc(sizeof (spa_t), KM_SLEEP); + + mutex_init(&spa->spa_async_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_errlist_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_errlog_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_evicting_os_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_history_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_proc_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_props_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_scrub_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_suspend_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_vdev_top_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa->spa_feat_stats_lock, NULL, MUTEX_DEFAULT, NULL); + + cv_init(&spa->spa_async_cv, NULL, CV_DEFAULT, NULL); + cv_init(&spa->spa_evicting_os_cv, NULL, CV_DEFAULT, NULL); + cv_init(&spa->spa_proc_cv, NULL, CV_DEFAULT, NULL); + cv_init(&spa->spa_scrub_io_cv, NULL, CV_DEFAULT, NULL); + cv_init(&spa->spa_suspend_cv, NULL, CV_DEFAULT, NULL); + + for (t = 0; t < TXG_SIZE; t++) + bplist_create(&spa->spa_free_bplist[t]); + + (void) strlcpy(spa->spa_name, name, sizeof (spa->spa_name)); + spa->spa_state = POOL_STATE_UNINITIALIZED; + spa->spa_freeze_txg = UINT64_MAX; + spa->spa_final_txg = UINT64_MAX; + spa->spa_load_max_txg = UINT64_MAX; + spa->spa_proc = &p0; + spa->spa_proc_state = SPA_PROC_NONE; + + spa->spa_deadman_synctime = MSEC2NSEC(zfs_deadman_synctime_ms); + + refcount_create(&spa->spa_refcount); + spa_config_lock_init(spa); + spa_stats_init(spa); + + avl_add(&spa_namespace_avl, spa); + + /* + * Set the alternate root, if there is one. + */ + if (altroot) + spa->spa_root = spa_strdup(altroot); + + /* + * Every pool starts with the default cachefile + */ + list_create(&spa->spa_config_list, sizeof (spa_config_dirent_t), + offsetof(spa_config_dirent_t, scd_link)); + + dp = kmem_zalloc(sizeof (spa_config_dirent_t), KM_SLEEP); + dp->scd_path = altroot ? NULL : spa_strdup(spa_config_path); + list_insert_head(&spa->spa_config_list, dp); + + VERIFY(nvlist_alloc(&spa->spa_load_info, NV_UNIQUE_NAME, + KM_SLEEP) == 0); + + if (config != NULL) { + nvlist_t *features; + + if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_FEATURES_FOR_READ, + &features) == 0) { + VERIFY(nvlist_dup(features, &spa->spa_label_features, + 0) == 0); + } + + VERIFY(nvlist_dup(config, &spa->spa_config, 0) == 0); + } + + if (spa->spa_label_features == NULL) { + VERIFY(nvlist_alloc(&spa->spa_label_features, NV_UNIQUE_NAME, + KM_SLEEP) == 0); + } + + spa->spa_debug = ((zfs_flags & ZFS_DEBUG_SPA) != 0); + + spa->spa_min_ashift = INT_MAX; + spa->spa_max_ashift = 0; + + /* + * As a pool is being created, treat all features as disabled by + * setting SPA_FEATURE_DISABLED for all entries in the feature + * refcount cache. + */ + for (i = 0; i < SPA_FEATURES; i++) { + spa->spa_feat_refcount_cache[i] = SPA_FEATURE_DISABLED; + } + + return (spa); +} + +/* + * Removes a spa_t from the namespace, freeing up any memory used. Requires + * spa_namespace_lock. This is called only after the spa_t has been closed and + * deactivated. + */ +void +spa_remove(spa_t *spa) +{ + spa_config_dirent_t *dp; + int t; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + ASSERT(spa->spa_state == POOL_STATE_UNINITIALIZED); + ASSERT3U(refcount_count(&spa->spa_refcount), ==, 0); + + nvlist_free(spa->spa_config_splitting); + + avl_remove(&spa_namespace_avl, spa); + cv_broadcast(&spa_namespace_cv); + + if (spa->spa_root) + spa_strfree(spa->spa_root); + + while ((dp = list_head(&spa->spa_config_list)) != NULL) { + list_remove(&spa->spa_config_list, dp); + if (dp->scd_path != NULL) + spa_strfree(dp->scd_path); + kmem_free(dp, sizeof (spa_config_dirent_t)); + } + + list_destroy(&spa->spa_config_list); + + nvlist_free(spa->spa_label_features); + nvlist_free(spa->spa_load_info); + nvlist_free(spa->spa_feat_stats); + spa_config_set(spa, NULL); + + refcount_destroy(&spa->spa_refcount); + + spa_stats_destroy(spa); + spa_config_lock_destroy(spa); + + for (t = 0; t < TXG_SIZE; t++) + bplist_destroy(&spa->spa_free_bplist[t]); + + cv_destroy(&spa->spa_async_cv); + cv_destroy(&spa->spa_evicting_os_cv); + cv_destroy(&spa->spa_proc_cv); + cv_destroy(&spa->spa_scrub_io_cv); + cv_destroy(&spa->spa_suspend_cv); + + mutex_destroy(&spa->spa_async_lock); + mutex_destroy(&spa->spa_errlist_lock); + mutex_destroy(&spa->spa_errlog_lock); + mutex_destroy(&spa->spa_evicting_os_lock); + mutex_destroy(&spa->spa_history_lock); + mutex_destroy(&spa->spa_proc_lock); + mutex_destroy(&spa->spa_props_lock); + mutex_destroy(&spa->spa_scrub_lock); + mutex_destroy(&spa->spa_suspend_lock); + mutex_destroy(&spa->spa_vdev_top_lock); + mutex_destroy(&spa->spa_feat_stats_lock); + + kmem_free(spa, sizeof (spa_t)); +} + +/* + * Given a pool, return the next pool in the namespace, or NULL if there is + * none. If 'prev' is NULL, return the first pool. + */ +spa_t * +spa_next(spa_t *prev) +{ + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + if (prev) + return (AVL_NEXT(&spa_namespace_avl, prev)); + else + return (avl_first(&spa_namespace_avl)); +} + +/* + * ========================================================================== + * SPA refcount functions + * ========================================================================== + */ + +/* + * Add a reference to the given spa_t. Must have at least one reference, or + * have the namespace lock held. + */ +void +spa_open_ref(spa_t *spa, void *tag) +{ + ASSERT(refcount_count(&spa->spa_refcount) >= spa->spa_minref || + MUTEX_HELD(&spa_namespace_lock)); + (void) refcount_add(&spa->spa_refcount, tag); +} + +/* + * Remove a reference to the given spa_t. Must have at least one reference, or + * have the namespace lock held. + */ +void +spa_close(spa_t *spa, void *tag) +{ + ASSERT(refcount_count(&spa->spa_refcount) > spa->spa_minref || + MUTEX_HELD(&spa_namespace_lock)); + (void) refcount_remove(&spa->spa_refcount, tag); +} + +/* + * Remove a reference to the given spa_t held by a dsl dir that is + * being asynchronously released. Async releases occur from a taskq + * performing eviction of dsl datasets and dirs. The namespace lock + * isn't held and the hold by the object being evicted may contribute to + * spa_minref (e.g. dataset or directory released during pool export), + * so the asserts in spa_close() do not apply. + */ +void +spa_async_close(spa_t *spa, void *tag) +{ + (void) refcount_remove(&spa->spa_refcount, tag); +} + +/* + * Check to see if the spa refcount is zero. Must be called with + * spa_namespace_lock held. We really compare against spa_minref, which is the + * number of references acquired when opening a pool + */ +boolean_t +spa_refcount_zero(spa_t *spa) +{ + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + return (refcount_count(&spa->spa_refcount) == spa->spa_minref); +} + +/* + * ========================================================================== + * SPA spare and l2cache tracking + * ========================================================================== + */ + +/* + * Hot spares and cache devices are tracked using the same code below, + * for 'auxiliary' devices. + */ + +typedef struct spa_aux { + uint64_t aux_guid; + uint64_t aux_pool; + avl_node_t aux_avl; + int aux_count; +} spa_aux_t; + +static int +spa_aux_compare(const void *a, const void *b) +{ + const spa_aux_t *sa = a; + const spa_aux_t *sb = b; + + if (sa->aux_guid < sb->aux_guid) + return (-1); + else if (sa->aux_guid > sb->aux_guid) + return (1); + else + return (0); +} + +void +spa_aux_add(vdev_t *vd, avl_tree_t *avl) +{ + avl_index_t where; + spa_aux_t search; + spa_aux_t *aux; + + search.aux_guid = vd->vdev_guid; + if ((aux = avl_find(avl, &search, &where)) != NULL) { + aux->aux_count++; + } else { + aux = kmem_zalloc(sizeof (spa_aux_t), KM_SLEEP); + aux->aux_guid = vd->vdev_guid; + aux->aux_count = 1; + avl_insert(avl, aux, where); + } +} + +void +spa_aux_remove(vdev_t *vd, avl_tree_t *avl) +{ + spa_aux_t search; + spa_aux_t *aux; + avl_index_t where; + + search.aux_guid = vd->vdev_guid; + aux = avl_find(avl, &search, &where); + + ASSERT(aux != NULL); + + if (--aux->aux_count == 0) { + avl_remove(avl, aux); + kmem_free(aux, sizeof (spa_aux_t)); + } else if (aux->aux_pool == spa_guid(vd->vdev_spa)) { + aux->aux_pool = 0ULL; + } +} + +boolean_t +spa_aux_exists(uint64_t guid, uint64_t *pool, int *refcnt, avl_tree_t *avl) +{ + spa_aux_t search, *found; + + search.aux_guid = guid; + found = avl_find(avl, &search, NULL); + + if (pool) { + if (found) + *pool = found->aux_pool; + else + *pool = 0ULL; + } + + if (refcnt) { + if (found) + *refcnt = found->aux_count; + else + *refcnt = 0; + } + + return (found != NULL); +} + +void +spa_aux_activate(vdev_t *vd, avl_tree_t *avl) +{ + spa_aux_t search, *found; + avl_index_t where; + + search.aux_guid = vd->vdev_guid; + found = avl_find(avl, &search, &where); + ASSERT(found != NULL); + ASSERT(found->aux_pool == 0ULL); + + found->aux_pool = spa_guid(vd->vdev_spa); +} + +/* + * Spares are tracked globally due to the following constraints: + * + * - A spare may be part of multiple pools. + * - A spare may be added to a pool even if it's actively in use within + * another pool. + * - A spare in use in any pool can only be the source of a replacement if + * the target is a spare in the same pool. + * + * We keep track of all spares on the system through the use of a reference + * counted AVL tree. When a vdev is added as a spare, or used as a replacement + * spare, then we bump the reference count in the AVL tree. In addition, we set + * the 'vdev_isspare' member to indicate that the device is a spare (active or + * inactive). When a spare is made active (used to replace a device in the + * pool), we also keep track of which pool its been made a part of. + * + * The 'spa_spare_lock' protects the AVL tree. These functions are normally + * called under the spa_namespace lock as part of vdev reconfiguration. The + * separate spare lock exists for the status query path, which does not need to + * be completely consistent with respect to other vdev configuration changes. + */ + +static int +spa_spare_compare(const void *a, const void *b) +{ + return (spa_aux_compare(a, b)); +} + +void +spa_spare_add(vdev_t *vd) +{ + mutex_enter(&spa_spare_lock); + ASSERT(!vd->vdev_isspare); + spa_aux_add(vd, &spa_spare_avl); + vd->vdev_isspare = B_TRUE; + mutex_exit(&spa_spare_lock); +} + +void +spa_spare_remove(vdev_t *vd) +{ + mutex_enter(&spa_spare_lock); + ASSERT(vd->vdev_isspare); + spa_aux_remove(vd, &spa_spare_avl); + vd->vdev_isspare = B_FALSE; + mutex_exit(&spa_spare_lock); +} + +boolean_t +spa_spare_exists(uint64_t guid, uint64_t *pool, int *refcnt) +{ + boolean_t found; + + mutex_enter(&spa_spare_lock); + found = spa_aux_exists(guid, pool, refcnt, &spa_spare_avl); + mutex_exit(&spa_spare_lock); + + return (found); +} + +void +spa_spare_activate(vdev_t *vd) +{ + mutex_enter(&spa_spare_lock); + ASSERT(vd->vdev_isspare); + spa_aux_activate(vd, &spa_spare_avl); + mutex_exit(&spa_spare_lock); +} + +/* + * Level 2 ARC devices are tracked globally for the same reasons as spares. + * Cache devices currently only support one pool per cache device, and so + * for these devices the aux reference count is currently unused beyond 1. + */ + +static int +spa_l2cache_compare(const void *a, const void *b) +{ + return (spa_aux_compare(a, b)); +} + +void +spa_l2cache_add(vdev_t *vd) +{ + mutex_enter(&spa_l2cache_lock); + ASSERT(!vd->vdev_isl2cache); + spa_aux_add(vd, &spa_l2cache_avl); + vd->vdev_isl2cache = B_TRUE; + mutex_exit(&spa_l2cache_lock); +} + +void +spa_l2cache_remove(vdev_t *vd) +{ + mutex_enter(&spa_l2cache_lock); + ASSERT(vd->vdev_isl2cache); + spa_aux_remove(vd, &spa_l2cache_avl); + vd->vdev_isl2cache = B_FALSE; + mutex_exit(&spa_l2cache_lock); +} + +boolean_t +spa_l2cache_exists(uint64_t guid, uint64_t *pool) +{ + boolean_t found; + + mutex_enter(&spa_l2cache_lock); + found = spa_aux_exists(guid, pool, NULL, &spa_l2cache_avl); + mutex_exit(&spa_l2cache_lock); + + return (found); +} + +void +spa_l2cache_activate(vdev_t *vd) +{ + mutex_enter(&spa_l2cache_lock); + ASSERT(vd->vdev_isl2cache); + spa_aux_activate(vd, &spa_l2cache_avl); + mutex_exit(&spa_l2cache_lock); +} + +/* + * ========================================================================== + * SPA vdev locking + * ========================================================================== + */ + +/* + * Lock the given spa_t for the purpose of adding or removing a vdev. + * Grabs the global spa_namespace_lock plus the spa config lock for writing. + * It returns the next transaction group for the spa_t. + */ +uint64_t +spa_vdev_enter(spa_t *spa) +{ + mutex_enter(&spa->spa_vdev_top_lock); + mutex_enter(&spa_namespace_lock); + return (spa_vdev_config_enter(spa)); +} + +/* + * Internal implementation for spa_vdev_enter(). Used when a vdev + * operation requires multiple syncs (i.e. removing a device) while + * keeping the spa_namespace_lock held. + */ +uint64_t +spa_vdev_config_enter(spa_t *spa) +{ + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + spa_config_enter(spa, SCL_ALL, spa, RW_WRITER); + + return (spa_last_synced_txg(spa) + 1); +} + +/* + * Used in combination with spa_vdev_config_enter() to allow the syncing + * of multiple transactions without releasing the spa_namespace_lock. + */ +void +spa_vdev_config_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error, char *tag) +{ + int config_changed = B_FALSE; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + ASSERT(txg > spa_last_synced_txg(spa)); + + spa->spa_pending_vdev = NULL; + + /* + * Reassess the DTLs. + */ + vdev_dtl_reassess(spa->spa_root_vdev, 0, 0, B_FALSE); + + if (error == 0 && !list_is_empty(&spa->spa_config_dirty_list)) { + config_changed = B_TRUE; + spa->spa_config_generation++; + } + + /* + * Verify the metaslab classes. + */ + ASSERT(metaslab_class_validate(spa_normal_class(spa)) == 0); + ASSERT(metaslab_class_validate(spa_log_class(spa)) == 0); + + spa_config_exit(spa, SCL_ALL, spa); + + /* + * Panic the system if the specified tag requires it. This + * is useful for ensuring that configurations are updated + * transactionally. + */ + if (zio_injection_enabled) + zio_handle_panic_injection(spa, tag, 0); + + /* + * Note: this txg_wait_synced() is important because it ensures + * that there won't be more than one config change per txg. + * This allows us to use the txg as the generation number. + */ + if (error == 0) + txg_wait_synced(spa->spa_dsl_pool, txg); + + if (vd != NULL) { + ASSERT(!vd->vdev_detached || vd->vdev_dtl_sm == NULL); + spa_config_enter(spa, SCL_ALL, spa, RW_WRITER); + vdev_free(vd); + spa_config_exit(spa, SCL_ALL, spa); + } + + /* + * If the config changed, update the config cache. + */ + if (config_changed) + spa_config_sync(spa, B_FALSE, B_TRUE); +} + +/* + * Unlock the spa_t after adding or removing a vdev. Besides undoing the + * locking of spa_vdev_enter(), we also want make sure the transactions have + * synced to disk, and then update the global configuration cache with the new + * information. + */ +int +spa_vdev_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error) +{ + spa_vdev_config_exit(spa, vd, txg, error, FTAG); + mutex_exit(&spa_namespace_lock); + mutex_exit(&spa->spa_vdev_top_lock); + + return (error); +} + +/* + * Lock the given spa_t for the purpose of changing vdev state. + */ +void +spa_vdev_state_enter(spa_t *spa, int oplocks) +{ + int locks = SCL_STATE_ALL | oplocks; + + /* + * Root pools may need to read of the underlying devfs filesystem + * when opening up a vdev. Unfortunately if we're holding the + * SCL_ZIO lock it will result in a deadlock when we try to issue + * the read from the root filesystem. Instead we "prefetch" + * the associated vnodes that we need prior to opening the + * underlying devices and cache them so that we can prevent + * any I/O when we are doing the actual open. + */ + if (spa_is_root(spa)) { + int low = locks & ~(SCL_ZIO - 1); + int high = locks & ~low; + + spa_config_enter(spa, high, spa, RW_WRITER); + vdev_hold(spa->spa_root_vdev); + spa_config_enter(spa, low, spa, RW_WRITER); + } else { + spa_config_enter(spa, locks, spa, RW_WRITER); + } + spa->spa_vdev_locks = locks; +} + +int +spa_vdev_state_exit(spa_t *spa, vdev_t *vd, int error) +{ + boolean_t config_changed = B_FALSE; + + if (vd != NULL || error == 0) + vdev_dtl_reassess(vd ? vd->vdev_top : spa->spa_root_vdev, + 0, 0, B_FALSE); + + if (vd != NULL) { + vdev_state_dirty(vd->vdev_top); + config_changed = B_TRUE; + spa->spa_config_generation++; + } + + if (spa_is_root(spa)) + vdev_rele(spa->spa_root_vdev); + + ASSERT3U(spa->spa_vdev_locks, >=, SCL_STATE_ALL); + spa_config_exit(spa, spa->spa_vdev_locks, spa); + + /* + * If anything changed, wait for it to sync. This ensures that, + * from the system administrator's perspective, zpool(1M) commands + * are synchronous. This is important for things like zpool offline: + * when the command completes, you expect no further I/O from ZFS. + */ + if (vd != NULL) + txg_wait_synced(spa->spa_dsl_pool, 0); + + /* + * If the config changed, update the config cache. + */ + if (config_changed) { + mutex_enter(&spa_namespace_lock); + spa_config_sync(spa, B_FALSE, B_TRUE); + mutex_exit(&spa_namespace_lock); + } + + return (error); +} + +/* + * ========================================================================== + * Miscellaneous functions + * ========================================================================== + */ + +void +spa_activate_mos_feature(spa_t *spa, const char *feature, dmu_tx_t *tx) +{ + if (!nvlist_exists(spa->spa_label_features, feature)) { + fnvlist_add_boolean(spa->spa_label_features, feature); + /* + * When we are creating the pool (tx_txg==TXG_INITIAL), we can't + * dirty the vdev config because lock SCL_CONFIG is not held. + * Thankfully, in this case we don't need to dirty the config + * because it will be written out anyway when we finish + * creating the pool. + */ + if (tx->tx_txg != TXG_INITIAL) + vdev_config_dirty(spa->spa_root_vdev); + } +} + +void +spa_deactivate_mos_feature(spa_t *spa, const char *feature) +{ + if (nvlist_remove_all(spa->spa_label_features, feature) == 0) + vdev_config_dirty(spa->spa_root_vdev); +} + +/* + * Rename a spa_t. + */ +int +spa_rename(const char *name, const char *newname) +{ + spa_t *spa; + int err; + + /* + * Lookup the spa_t and grab the config lock for writing. We need to + * actually open the pool so that we can sync out the necessary labels. + * It's OK to call spa_open() with the namespace lock held because we + * allow recursive calls for other reasons. + */ + mutex_enter(&spa_namespace_lock); + if ((err = spa_open(name, &spa, FTAG)) != 0) { + mutex_exit(&spa_namespace_lock); + return (err); + } + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + + avl_remove(&spa_namespace_avl, spa); + (void) strlcpy(spa->spa_name, newname, sizeof (spa->spa_name)); + avl_add(&spa_namespace_avl, spa); + + /* + * Sync all labels to disk with the new names by marking the root vdev + * dirty and waiting for it to sync. It will pick up the new pool name + * during the sync. + */ + vdev_config_dirty(spa->spa_root_vdev); + + spa_config_exit(spa, SCL_ALL, FTAG); + + txg_wait_synced(spa->spa_dsl_pool, 0); + + /* + * Sync the updated config cache. + */ + spa_config_sync(spa, B_FALSE, B_TRUE); + + spa_close(spa, FTAG); + + mutex_exit(&spa_namespace_lock); + + return (0); +} + +/* + * Return the spa_t associated with given pool_guid, if it exists. If + * device_guid is non-zero, determine whether the pool exists *and* contains + * a device with the specified device_guid. + */ +spa_t * +spa_by_guid(uint64_t pool_guid, uint64_t device_guid) +{ + spa_t *spa; + avl_tree_t *t = &spa_namespace_avl; + + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + + for (spa = avl_first(t); spa != NULL; spa = AVL_NEXT(t, spa)) { + if (spa->spa_state == POOL_STATE_UNINITIALIZED) + continue; + if (spa->spa_root_vdev == NULL) + continue; + if (spa_guid(spa) == pool_guid) { + if (device_guid == 0) + break; + + if (vdev_lookup_by_guid(spa->spa_root_vdev, + device_guid) != NULL) + break; + + /* + * Check any devices we may be in the process of adding. + */ + if (spa->spa_pending_vdev) { + if (vdev_lookup_by_guid(spa->spa_pending_vdev, + device_guid) != NULL) + break; + } + } + } + + return (spa); +} + +/* + * Determine whether a pool with the given pool_guid exists. + */ +boolean_t +spa_guid_exists(uint64_t pool_guid, uint64_t device_guid) +{ + return (spa_by_guid(pool_guid, device_guid) != NULL); +} + +char * +spa_strdup(const char *s) +{ + size_t len; + char *new; + + len = strlen(s); + new = kmem_alloc(len + 1, KM_SLEEP); + bcopy(s, new, len); + new[len] = '\0'; + + return (new); +} + +void +spa_strfree(char *s) +{ + kmem_free(s, strlen(s) + 1); +} + +uint64_t +spa_get_random(uint64_t range) +{ + uint64_t r; + + ASSERT(range != 0); + + (void) random_get_pseudo_bytes((void *)&r, sizeof (uint64_t)); + + return (r % range); +} + +uint64_t +spa_generate_guid(spa_t *spa) +{ + uint64_t guid = spa_get_random(-1ULL); + + if (spa != NULL) { + while (guid == 0 || spa_guid_exists(spa_guid(spa), guid)) + guid = spa_get_random(-1ULL); + } else { + while (guid == 0 || spa_guid_exists(guid, 0)) + guid = spa_get_random(-1ULL); + } + + return (guid); +} + +void +snprintf_blkptr(char *buf, size_t buflen, const blkptr_t *bp) +{ + char type[256]; + char *checksum = NULL; + char *compress = NULL; + + if (bp != NULL) { + if (BP_GET_TYPE(bp) & DMU_OT_NEWTYPE) { + dmu_object_byteswap_t bswap = + DMU_OT_BYTESWAP(BP_GET_TYPE(bp)); + (void) snprintf(type, sizeof (type), "bswap %s %s", + DMU_OT_IS_METADATA(BP_GET_TYPE(bp)) ? + "metadata" : "data", + dmu_ot_byteswap[bswap].ob_name); + } else { + (void) strlcpy(type, dmu_ot[BP_GET_TYPE(bp)].ot_name, + sizeof (type)); + } + if (!BP_IS_EMBEDDED(bp)) { + checksum = + zio_checksum_table[BP_GET_CHECKSUM(bp)].ci_name; + } + compress = zio_compress_table[BP_GET_COMPRESS(bp)].ci_name; + } + + SNPRINTF_BLKPTR(snprintf, ' ', buf, buflen, bp, type, checksum, + compress); +} + +void +spa_freeze(spa_t *spa) +{ + uint64_t freeze_txg = 0; + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + if (spa->spa_freeze_txg == UINT64_MAX) { + freeze_txg = spa_last_synced_txg(spa) + TXG_SIZE; + spa->spa_freeze_txg = freeze_txg; + } + spa_config_exit(spa, SCL_ALL, FTAG); + if (freeze_txg != 0) + txg_wait_synced(spa_get_dsl(spa), freeze_txg); +} + +void +zfs_panic_recover(const char *fmt, ...) +{ + va_list adx; + + va_start(adx, fmt); + vcmn_err(zfs_recover ? CE_WARN : CE_PANIC, fmt, adx); + va_end(adx); +} + +/* + * This is a stripped-down version of strtoull, suitable only for converting + * lowercase hexadecimal numbers that don't overflow. + */ +uint64_t +strtonum(const char *str, char **nptr) +{ + uint64_t val = 0; + char c; + int digit; + + while ((c = *str) != '\0') { + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'a' && c <= 'f') + digit = 10 + c - 'a'; + else + break; + + val *= 16; + val += digit; + + str++; + } + + if (nptr) + *nptr = (char *)str; + + return (val); +} + +/* + * ========================================================================== + * Accessor functions + * ========================================================================== + */ + +boolean_t +spa_shutting_down(spa_t *spa) +{ + return (spa->spa_async_suspended); +} + +dsl_pool_t * +spa_get_dsl(spa_t *spa) +{ + return (spa->spa_dsl_pool); +} + +boolean_t +spa_is_initializing(spa_t *spa) +{ + return (spa->spa_is_initializing); +} + +blkptr_t * +spa_get_rootblkptr(spa_t *spa) +{ + return (&spa->spa_ubsync.ub_rootbp); +} + +void +spa_set_rootblkptr(spa_t *spa, const blkptr_t *bp) +{ + spa->spa_uberblock.ub_rootbp = *bp; +} + +void +spa_altroot(spa_t *spa, char *buf, size_t buflen) +{ + if (spa->spa_root == NULL) + buf[0] = '\0'; + else + (void) strncpy(buf, spa->spa_root, buflen); +} + +int +spa_sync_pass(spa_t *spa) +{ + return (spa->spa_sync_pass); +} + +char * +spa_name(spa_t *spa) +{ + return (spa->spa_name); +} + +uint64_t +spa_guid(spa_t *spa) +{ + dsl_pool_t *dp = spa_get_dsl(spa); + uint64_t guid; + + /* + * If we fail to parse the config during spa_load(), we can go through + * the error path (which posts an ereport) and end up here with no root + * vdev. We stash the original pool guid in 'spa_config_guid' to handle + * this case. + */ + if (spa->spa_root_vdev == NULL) + return (spa->spa_config_guid); + + guid = spa->spa_last_synced_guid != 0 ? + spa->spa_last_synced_guid : spa->spa_root_vdev->vdev_guid; + + /* + * Return the most recently synced out guid unless we're + * in syncing context. + */ + if (dp && dsl_pool_sync_context(dp)) + return (spa->spa_root_vdev->vdev_guid); + else + return (guid); +} + +uint64_t +spa_load_guid(spa_t *spa) +{ + /* + * This is a GUID that exists solely as a reference for the + * purposes of the arc. It is generated at load time, and + * is never written to persistent storage. + */ + return (spa->spa_load_guid); +} + +uint64_t +spa_last_synced_txg(spa_t *spa) +{ + return (spa->spa_ubsync.ub_txg); +} + +uint64_t +spa_first_txg(spa_t *spa) +{ + return (spa->spa_first_txg); +} + +uint64_t +spa_syncing_txg(spa_t *spa) +{ + return (spa->spa_syncing_txg); +} + +pool_state_t +spa_state(spa_t *spa) +{ + return (spa->spa_state); +} + +spa_load_state_t +spa_load_state(spa_t *spa) +{ + return (spa->spa_load_state); +} + +uint64_t +spa_freeze_txg(spa_t *spa) +{ + return (spa->spa_freeze_txg); +} + +/* ARGSUSED */ +uint64_t +spa_get_asize(spa_t *spa, uint64_t lsize) +{ + return (lsize * spa_asize_inflation); +} + +/* + * Return the amount of slop space in bytes. It is 1/32 of the pool (3.2%), + * or at least 32MB. + * + * See the comment above spa_slop_shift for details. + */ +uint64_t +spa_get_slop_space(spa_t *spa) { + uint64_t space = spa_get_dspace(spa); + return (MAX(space >> spa_slop_shift, SPA_MINDEVSIZE >> 1)); +} + +uint64_t +spa_get_dspace(spa_t *spa) +{ + return (spa->spa_dspace); +} + +void +spa_update_dspace(spa_t *spa) +{ + spa->spa_dspace = metaslab_class_get_dspace(spa_normal_class(spa)) + + ddt_get_dedup_dspace(spa); +} + +/* + * Return the failure mode that has been set to this pool. The default + * behavior will be to block all I/Os when a complete failure occurs. + */ +uint8_t +spa_get_failmode(spa_t *spa) +{ + return (spa->spa_failmode); +} + +boolean_t +spa_suspended(spa_t *spa) +{ + return (spa->spa_suspended); +} + +uint64_t +spa_version(spa_t *spa) +{ + return (spa->spa_ubsync.ub_version); +} + +boolean_t +spa_deflate(spa_t *spa) +{ + return (spa->spa_deflate); +} + +metaslab_class_t * +spa_normal_class(spa_t *spa) +{ + return (spa->spa_normal_class); +} + +metaslab_class_t * +spa_log_class(spa_t *spa) +{ + return (spa->spa_log_class); +} + +void +spa_evicting_os_register(spa_t *spa, objset_t *os) +{ + mutex_enter(&spa->spa_evicting_os_lock); + list_insert_head(&spa->spa_evicting_os_list, os); + mutex_exit(&spa->spa_evicting_os_lock); +} + +void +spa_evicting_os_deregister(spa_t *spa, objset_t *os) +{ + mutex_enter(&spa->spa_evicting_os_lock); + list_remove(&spa->spa_evicting_os_list, os); + cv_broadcast(&spa->spa_evicting_os_cv); + mutex_exit(&spa->spa_evicting_os_lock); +} + +void +spa_evicting_os_wait(spa_t *spa) +{ + mutex_enter(&spa->spa_evicting_os_lock); + while (!list_is_empty(&spa->spa_evicting_os_list)) + cv_wait(&spa->spa_evicting_os_cv, &spa->spa_evicting_os_lock); + mutex_exit(&spa->spa_evicting_os_lock); + + dmu_buf_user_evict_wait(); +} + +int +spa_max_replication(spa_t *spa) +{ + /* + * As of SPA_VERSION == SPA_VERSION_DITTO_BLOCKS, we are able to + * handle BPs with more than one DVA allocated. Set our max + * replication level accordingly. + */ + if (spa_version(spa) < SPA_VERSION_DITTO_BLOCKS) + return (1); + return (MIN(SPA_DVAS_PER_BP, spa_max_replication_override)); +} + +int +spa_prev_software_version(spa_t *spa) +{ + return (spa->spa_prev_software_version); +} + +uint64_t +spa_deadman_synctime(spa_t *spa) +{ + return (spa->spa_deadman_synctime); +} + +uint64_t +dva_get_dsize_sync(spa_t *spa, const dva_t *dva) +{ + uint64_t asize = DVA_GET_ASIZE(dva); + uint64_t dsize = asize; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_READER) != 0); + + if (asize != 0 && spa->spa_deflate) { + vdev_t *vd = vdev_lookup_top(spa, DVA_GET_VDEV(dva)); + if (vd != NULL) + dsize = (asize >> SPA_MINBLOCKSHIFT) * + vd->vdev_deflate_ratio; + } + + return (dsize); +} + +uint64_t +bp_get_dsize_sync(spa_t *spa, const blkptr_t *bp) +{ + uint64_t dsize = 0; + int d; + + for (d = 0; d < BP_GET_NDVAS(bp); d++) + dsize += dva_get_dsize_sync(spa, &bp->blk_dva[d]); + + return (dsize); +} + +uint64_t +bp_get_dsize(spa_t *spa, const blkptr_t *bp) +{ + uint64_t dsize = 0; + int d; + + spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER); + + for (d = 0; d < BP_GET_NDVAS(bp); d++) + dsize += dva_get_dsize_sync(spa, &bp->blk_dva[d]); + + spa_config_exit(spa, SCL_VDEV, FTAG); + + return (dsize); +} + +/* + * ========================================================================== + * Initialization and Termination + * ========================================================================== + */ + +static int +spa_name_compare(const void *a1, const void *a2) +{ + const spa_t *s1 = a1; + const spa_t *s2 = a2; + int s; + + s = strcmp(s1->spa_name, s2->spa_name); + if (s > 0) + return (1); + if (s < 0) + return (-1); + return (0); +} + +void +spa_boot_init(void) +{ + spa_config_load(); +} + +void +spa_init(int mode) +{ + mutex_init(&spa_namespace_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa_spare_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&spa_l2cache_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&spa_namespace_cv, NULL, CV_DEFAULT, NULL); + + avl_create(&spa_namespace_avl, spa_name_compare, sizeof (spa_t), + offsetof(spa_t, spa_avl)); + + avl_create(&spa_spare_avl, spa_spare_compare, sizeof (spa_aux_t), + offsetof(spa_aux_t, aux_avl)); + + avl_create(&spa_l2cache_avl, spa_l2cache_compare, sizeof (spa_aux_t), + offsetof(spa_aux_t, aux_avl)); + + spa_mode_global = mode; + +#ifndef _KERNEL + if (spa_mode_global != FREAD && dprintf_find_string("watch")) { + struct sigaction sa; + + sa.sa_flags = SA_SIGINFO; + sigemptyset(&sa.sa_mask); + sa.sa_sigaction = arc_buf_sigsegv; + + if (sigaction(SIGSEGV, &sa, NULL) == -1) { + perror("could not enable watchpoints: " + "sigaction(SIGSEGV, ...) = "); + } else { + arc_watch = B_TRUE; + } + } +#endif + + fm_init(); + refcount_init(); + unique_init(); + range_tree_init(); + ddt_init(); + zio_init(); + dmu_init(); + zil_init(); + vdev_cache_stat_init(); + zfs_prop_init(); + zpool_prop_init(); + zpool_feature_init(); + spa_config_load(); + l2arc_start(); +} + +void +spa_fini(void) +{ + l2arc_stop(); + + spa_evict_all(); + + vdev_cache_stat_fini(); + zil_fini(); + dmu_fini(); + zio_fini(); + ddt_fini(); + range_tree_fini(); + unique_fini(); + refcount_fini(); + fm_fini(); + + avl_destroy(&spa_namespace_avl); + avl_destroy(&spa_spare_avl); + avl_destroy(&spa_l2cache_avl); + + cv_destroy(&spa_namespace_cv); + mutex_destroy(&spa_namespace_lock); + mutex_destroy(&spa_spare_lock); + mutex_destroy(&spa_l2cache_lock); +} + +/* + * Return whether this pool has slogs. No locking needed. + * It's not a problem if the wrong answer is returned as it's only for + * performance and not correctness + */ +boolean_t +spa_has_slogs(spa_t *spa) +{ + return (spa->spa_log_class->mc_rotor != NULL); +} + +spa_log_state_t +spa_get_log_state(spa_t *spa) +{ + return (spa->spa_log_state); +} + +void +spa_set_log_state(spa_t *spa, spa_log_state_t state) +{ + spa->spa_log_state = state; +} + +boolean_t +spa_is_root(spa_t *spa) +{ + return (spa->spa_is_root); +} + +boolean_t +spa_writeable(spa_t *spa) +{ + return (!!(spa->spa_mode & FWRITE)); +} + +/* + * Returns true if there is a pending sync task in any of the current + * syncing txg, the current quiescing txg, or the current open txg. + */ +boolean_t +spa_has_pending_synctask(spa_t *spa) +{ + return (!txg_all_lists_empty(&spa->spa_dsl_pool->dp_sync_tasks)); +} + +int +spa_mode(spa_t *spa) +{ + return (spa->spa_mode); +} + +uint64_t +spa_bootfs(spa_t *spa) +{ + return (spa->spa_bootfs); +} + +uint64_t +spa_delegation(spa_t *spa) +{ + return (spa->spa_delegation); +} + +objset_t * +spa_meta_objset(spa_t *spa) +{ + return (spa->spa_meta_objset); +} + +enum zio_checksum +spa_dedup_checksum(spa_t *spa) +{ + return (spa->spa_dedup_checksum); +} + +/* + * Reset pool scan stat per scan pass (or reboot). + */ +void +spa_scan_stat_init(spa_t *spa) +{ + /* data not stored on disk */ + spa->spa_scan_pass_start = gethrestime_sec(); + spa->spa_scan_pass_exam = 0; + vdev_scan_stat_init(spa->spa_root_vdev); +} + +/* + * Get scan stats for zpool status reports + */ +int +spa_scan_get_stats(spa_t *spa, pool_scan_stat_t *ps) +{ + dsl_scan_t *scn = spa->spa_dsl_pool ? spa->spa_dsl_pool->dp_scan : NULL; + + if (scn == NULL || scn->scn_phys.scn_func == POOL_SCAN_NONE) + return (SET_ERROR(ENOENT)); + bzero(ps, sizeof (pool_scan_stat_t)); + + /* data stored on disk */ + ps->pss_func = scn->scn_phys.scn_func; + ps->pss_start_time = scn->scn_phys.scn_start_time; + ps->pss_end_time = scn->scn_phys.scn_end_time; + ps->pss_to_examine = scn->scn_phys.scn_to_examine; + ps->pss_examined = scn->scn_phys.scn_examined; + ps->pss_to_process = scn->scn_phys.scn_to_process; + ps->pss_processed = scn->scn_phys.scn_processed; + ps->pss_errors = scn->scn_phys.scn_errors; + ps->pss_state = scn->scn_phys.scn_state; + + /* data not stored on disk */ + ps->pss_pass_start = spa->spa_scan_pass_start; + ps->pss_pass_exam = spa->spa_scan_pass_exam; + + return (0); +} + +boolean_t +spa_debug_enabled(spa_t *spa) +{ + return (spa->spa_debug); +} + +int +spa_maxblocksize(spa_t *spa) +{ + if (spa_feature_is_enabled(spa, SPA_FEATURE_LARGE_BLOCKS)) + return (SPA_MAXBLOCKSIZE); + else + return (SPA_OLD_MAXBLOCKSIZE); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +/* Namespace manipulation */ +EXPORT_SYMBOL(spa_lookup); +EXPORT_SYMBOL(spa_add); +EXPORT_SYMBOL(spa_remove); +EXPORT_SYMBOL(spa_next); + +/* Refcount functions */ +EXPORT_SYMBOL(spa_open_ref); +EXPORT_SYMBOL(spa_close); +EXPORT_SYMBOL(spa_refcount_zero); + +/* Pool configuration lock */ +EXPORT_SYMBOL(spa_config_tryenter); +EXPORT_SYMBOL(spa_config_enter); +EXPORT_SYMBOL(spa_config_exit); +EXPORT_SYMBOL(spa_config_held); + +/* Pool vdev add/remove lock */ +EXPORT_SYMBOL(spa_vdev_enter); +EXPORT_SYMBOL(spa_vdev_exit); + +/* Pool vdev state change lock */ +EXPORT_SYMBOL(spa_vdev_state_enter); +EXPORT_SYMBOL(spa_vdev_state_exit); + +/* Accessor functions */ +EXPORT_SYMBOL(spa_shutting_down); +EXPORT_SYMBOL(spa_get_dsl); +EXPORT_SYMBOL(spa_get_rootblkptr); +EXPORT_SYMBOL(spa_set_rootblkptr); +EXPORT_SYMBOL(spa_altroot); +EXPORT_SYMBOL(spa_sync_pass); +EXPORT_SYMBOL(spa_name); +EXPORT_SYMBOL(spa_guid); +EXPORT_SYMBOL(spa_last_synced_txg); +EXPORT_SYMBOL(spa_first_txg); +EXPORT_SYMBOL(spa_syncing_txg); +EXPORT_SYMBOL(spa_version); +EXPORT_SYMBOL(spa_state); +EXPORT_SYMBOL(spa_load_state); +EXPORT_SYMBOL(spa_freeze_txg); +EXPORT_SYMBOL(spa_get_asize); +EXPORT_SYMBOL(spa_get_dspace); +EXPORT_SYMBOL(spa_update_dspace); +EXPORT_SYMBOL(spa_deflate); +EXPORT_SYMBOL(spa_normal_class); +EXPORT_SYMBOL(spa_log_class); +EXPORT_SYMBOL(spa_max_replication); +EXPORT_SYMBOL(spa_prev_software_version); +EXPORT_SYMBOL(spa_get_failmode); +EXPORT_SYMBOL(spa_suspended); +EXPORT_SYMBOL(spa_bootfs); +EXPORT_SYMBOL(spa_delegation); +EXPORT_SYMBOL(spa_meta_objset); +EXPORT_SYMBOL(spa_maxblocksize); + +/* Miscellaneous support routines */ +EXPORT_SYMBOL(spa_rename); +EXPORT_SYMBOL(spa_guid_exists); +EXPORT_SYMBOL(spa_strdup); +EXPORT_SYMBOL(spa_strfree); +EXPORT_SYMBOL(spa_get_random); +EXPORT_SYMBOL(spa_generate_guid); +EXPORT_SYMBOL(snprintf_blkptr); +EXPORT_SYMBOL(spa_freeze); +EXPORT_SYMBOL(spa_upgrade); +EXPORT_SYMBOL(spa_evict_all); +EXPORT_SYMBOL(spa_lookup_by_guid); +EXPORT_SYMBOL(spa_has_spare); +EXPORT_SYMBOL(dva_get_dsize_sync); +EXPORT_SYMBOL(bp_get_dsize_sync); +EXPORT_SYMBOL(bp_get_dsize); +EXPORT_SYMBOL(spa_has_slogs); +EXPORT_SYMBOL(spa_is_root); +EXPORT_SYMBOL(spa_writeable); +EXPORT_SYMBOL(spa_mode); + +EXPORT_SYMBOL(spa_namespace_lock); + +module_param(zfs_flags, uint, 0644); +MODULE_PARM_DESC(zfs_flags, "Set additional debugging flags"); + +module_param(zfs_recover, int, 0644); +MODULE_PARM_DESC(zfs_recover, "Set to attempt to recover from fatal errors"); + +module_param(zfs_free_leak_on_eio, int, 0644); +MODULE_PARM_DESC(zfs_free_leak_on_eio, + "Set to ignore IO errors during free and permanently leak the space"); + +module_param(zfs_deadman_synctime_ms, ulong, 0644); +MODULE_PARM_DESC(zfs_deadman_synctime_ms, "Expiration time in milliseconds"); + +module_param(zfs_deadman_enabled, int, 0644); +MODULE_PARM_DESC(zfs_deadman_enabled, "Enable deadman timer"); + +module_param(spa_asize_inflation, int, 0644); +MODULE_PARM_DESC(spa_asize_inflation, + "SPA size estimate multiplication factor"); + +module_param(spa_slop_shift, int, 0644); +MODULE_PARM_DESC(spa_slop_shift, "Reserved free space in pool"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/spa_stats.c +++ linux-4.4.0/zfs/module/zfs/spa_stats.c @@ -0,0 +1,683 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#include +#include + +/* + * Keeps stats on last N reads per spa_t, disabled by default. + */ +int zfs_read_history = 0; + +/* + * Include cache hits in history, disabled by default. + */ +int zfs_read_history_hits = 0; + +/* + * Keeps stats on the last N txgs, disabled by default. + */ +int zfs_txg_history = 0; + +/* + * ========================================================================== + * SPA Read History Routines + * ========================================================================== + */ + +/* + * Read statistics - Information exported regarding each arc_read call + */ +typedef struct spa_read_history { + uint64_t uid; /* unique identifier */ + hrtime_t start; /* time read completed */ + uint64_t objset; /* read from this objset */ + uint64_t object; /* read of this object number */ + uint64_t level; /* block's indirection level */ + uint64_t blkid; /* read of this block id */ + char origin[24]; /* read originated from here */ + uint32_t aflags; /* ARC flags (cached, prefetch, etc.) */ + pid_t pid; /* PID of task doing read */ + char comm[16]; /* process name of task doing read */ + list_node_t srh_link; +} spa_read_history_t; + +static int +spa_read_history_headers(char *buf, size_t size) +{ + (void) snprintf(buf, size, "%-8s %-16s %-8s %-8s %-8s %-8s %-8s " + "%-24s %-8s %-16s\n", "UID", "start", "objset", "object", + "level", "blkid", "aflags", "origin", "pid", "process"); + + return (0); +} + +static int +spa_read_history_data(char *buf, size_t size, void *data) +{ + spa_read_history_t *srh = (spa_read_history_t *)data; + + (void) snprintf(buf, size, "%-8llu %-16llu 0x%-6llx " + "%-8lli %-8lli %-8lli 0x%-6x %-24s %-8i %-16s\n", + (u_longlong_t)srh->uid, srh->start, + (longlong_t)srh->objset, (longlong_t)srh->object, + (longlong_t)srh->level, (longlong_t)srh->blkid, + srh->aflags, srh->origin, srh->pid, srh->comm); + + return (0); +} + +/* + * Calculate the address for the next spa_stats_history_t entry. The + * ssh->lock will be held until ksp->ks_ndata entries are processed. + */ +static void * +spa_read_history_addr(kstat_t *ksp, loff_t n) +{ + spa_t *spa = ksp->ks_private; + spa_stats_history_t *ssh = &spa->spa_stats.read_history; + + ASSERT(MUTEX_HELD(&ssh->lock)); + + if (n == 0) + ssh->private = list_tail(&ssh->list); + else if (ssh->private) + ssh->private = list_prev(&ssh->list, ssh->private); + + return (ssh->private); +} + +/* + * When the kstat is written discard all spa_read_history_t entires. The + * ssh->lock will be held until ksp->ks_ndata entries are processed. + */ +static int +spa_read_history_update(kstat_t *ksp, int rw) +{ + spa_t *spa = ksp->ks_private; + spa_stats_history_t *ssh = &spa->spa_stats.read_history; + + if (rw == KSTAT_WRITE) { + spa_read_history_t *srh; + + while ((srh = list_remove_head(&ssh->list))) { + ssh->size--; + kmem_free(srh, sizeof (spa_read_history_t)); + } + + ASSERT3U(ssh->size, ==, 0); + } + + ksp->ks_ndata = ssh->size; + ksp->ks_data_size = ssh->size * sizeof (spa_read_history_t); + + return (0); +} + +static void +spa_read_history_init(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.read_history; + char name[KSTAT_STRLEN]; + kstat_t *ksp; + + mutex_init(&ssh->lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&ssh->list, sizeof (spa_read_history_t), + offsetof(spa_read_history_t, srh_link)); + + ssh->count = 0; + ssh->size = 0; + ssh->private = NULL; + + (void) snprintf(name, KSTAT_STRLEN, "zfs/%s", spa_name(spa)); + + ksp = kstat_create(name, 0, "reads", "misc", + KSTAT_TYPE_RAW, 0, KSTAT_FLAG_VIRTUAL); + ssh->kstat = ksp; + + if (ksp) { + ksp->ks_lock = &ssh->lock; + ksp->ks_data = NULL; + ksp->ks_private = spa; + ksp->ks_update = spa_read_history_update; + kstat_set_raw_ops(ksp, spa_read_history_headers, + spa_read_history_data, spa_read_history_addr); + kstat_install(ksp); + } +} + +static void +spa_read_history_destroy(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.read_history; + spa_read_history_t *srh; + kstat_t *ksp; + + ksp = ssh->kstat; + if (ksp) + kstat_delete(ksp); + + mutex_enter(&ssh->lock); + while ((srh = list_remove_head(&ssh->list))) { + ssh->size--; + kmem_free(srh, sizeof (spa_read_history_t)); + } + + ASSERT3U(ssh->size, ==, 0); + list_destroy(&ssh->list); + mutex_exit(&ssh->lock); + + mutex_destroy(&ssh->lock); +} + +void +spa_read_history_add(spa_t *spa, const zbookmark_phys_t *zb, uint32_t aflags) +{ + spa_stats_history_t *ssh = &spa->spa_stats.read_history; + spa_read_history_t *srh, *rm; + + ASSERT3P(spa, !=, NULL); + ASSERT3P(zb, !=, NULL); + + if (zfs_read_history == 0 && ssh->size == 0) + return; + + if (zfs_read_history_hits == 0 && (aflags & ARC_FLAG_CACHED)) + return; + + srh = kmem_zalloc(sizeof (spa_read_history_t), KM_SLEEP); + strlcpy(srh->comm, getcomm(), sizeof (srh->comm)); + srh->start = gethrtime(); + srh->objset = zb->zb_objset; + srh->object = zb->zb_object; + srh->level = zb->zb_level; + srh->blkid = zb->zb_blkid; + srh->aflags = aflags; + srh->pid = getpid(); + + mutex_enter(&ssh->lock); + + srh->uid = ssh->count++; + list_insert_head(&ssh->list, srh); + ssh->size++; + + while (ssh->size > zfs_read_history) { + ssh->size--; + rm = list_remove_tail(&ssh->list); + kmem_free(rm, sizeof (spa_read_history_t)); + } + + mutex_exit(&ssh->lock); +} + +/* + * ========================================================================== + * SPA TXG History Routines + * ========================================================================== + */ + +/* + * Txg statistics - Information exported regarding each txg sync + */ + +typedef struct spa_txg_history { + uint64_t txg; /* txg id */ + txg_state_t state; /* active txg state */ + uint64_t nread; /* number of bytes read */ + uint64_t nwritten; /* number of bytes written */ + uint64_t reads; /* number of read operations */ + uint64_t writes; /* number of write operations */ + uint64_t ndirty; /* number of dirty bytes */ + hrtime_t times[TXG_STATE_COMMITTED]; /* completion times */ + list_node_t sth_link; +} spa_txg_history_t; + +static int +spa_txg_history_headers(char *buf, size_t size) +{ + (void) snprintf(buf, size, "%-8s %-16s %-5s %-12s %-12s %-12s " + "%-8s %-8s %-12s %-12s %-12s %-12s\n", "txg", "birth", "state", + "ndirty", "nread", "nwritten", "reads", "writes", + "otime", "qtime", "wtime", "stime"); + + return (0); +} + +static int +spa_txg_history_data(char *buf, size_t size, void *data) +{ + spa_txg_history_t *sth = (spa_txg_history_t *)data; + uint64_t open = 0, quiesce = 0, wait = 0, sync = 0; + char state; + + switch (sth->state) { + case TXG_STATE_BIRTH: state = 'B'; break; + case TXG_STATE_OPEN: state = 'O'; break; + case TXG_STATE_QUIESCED: state = 'Q'; break; + case TXG_STATE_WAIT_FOR_SYNC: state = 'W'; break; + case TXG_STATE_SYNCED: state = 'S'; break; + case TXG_STATE_COMMITTED: state = 'C'; break; + default: state = '?'; break; + } + + if (sth->times[TXG_STATE_OPEN]) + open = sth->times[TXG_STATE_OPEN] - + sth->times[TXG_STATE_BIRTH]; + + if (sth->times[TXG_STATE_QUIESCED]) + quiesce = sth->times[TXG_STATE_QUIESCED] - + sth->times[TXG_STATE_OPEN]; + + if (sth->times[TXG_STATE_WAIT_FOR_SYNC]) + wait = sth->times[TXG_STATE_WAIT_FOR_SYNC] - + sth->times[TXG_STATE_QUIESCED]; + + if (sth->times[TXG_STATE_SYNCED]) + sync = sth->times[TXG_STATE_SYNCED] - + sth->times[TXG_STATE_WAIT_FOR_SYNC]; + + (void) snprintf(buf, size, "%-8llu %-16llu %-5c %-12llu " + "%-12llu %-12llu %-8llu %-8llu %-12llu %-12llu %-12llu %-12llu\n", + (longlong_t)sth->txg, sth->times[TXG_STATE_BIRTH], state, + (u_longlong_t)sth->ndirty, + (u_longlong_t)sth->nread, (u_longlong_t)sth->nwritten, + (u_longlong_t)sth->reads, (u_longlong_t)sth->writes, + (u_longlong_t)open, (u_longlong_t)quiesce, (u_longlong_t)wait, + (u_longlong_t)sync); + + return (0); +} + +/* + * Calculate the address for the next spa_stats_history_t entry. The + * ssh->lock will be held until ksp->ks_ndata entries are processed. + */ +static void * +spa_txg_history_addr(kstat_t *ksp, loff_t n) +{ + spa_t *spa = ksp->ks_private; + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + + ASSERT(MUTEX_HELD(&ssh->lock)); + + if (n == 0) + ssh->private = list_tail(&ssh->list); + else if (ssh->private) + ssh->private = list_prev(&ssh->list, ssh->private); + + return (ssh->private); +} + +/* + * When the kstat is written discard all spa_txg_history_t entires. The + * ssh->lock will be held until ksp->ks_ndata entries are processed. + */ +static int +spa_txg_history_update(kstat_t *ksp, int rw) +{ + spa_t *spa = ksp->ks_private; + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + + ASSERT(MUTEX_HELD(&ssh->lock)); + + if (rw == KSTAT_WRITE) { + spa_txg_history_t *sth; + + while ((sth = list_remove_head(&ssh->list))) { + ssh->size--; + kmem_free(sth, sizeof (spa_txg_history_t)); + } + + ASSERT3U(ssh->size, ==, 0); + } + + ksp->ks_ndata = ssh->size; + ksp->ks_data_size = ssh->size * sizeof (spa_txg_history_t); + + return (0); +} + +static void +spa_txg_history_init(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + char name[KSTAT_STRLEN]; + kstat_t *ksp; + + mutex_init(&ssh->lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&ssh->list, sizeof (spa_txg_history_t), + offsetof(spa_txg_history_t, sth_link)); + + ssh->count = 0; + ssh->size = 0; + ssh->private = NULL; + + (void) snprintf(name, KSTAT_STRLEN, "zfs/%s", spa_name(spa)); + + ksp = kstat_create(name, 0, "txgs", "misc", + KSTAT_TYPE_RAW, 0, KSTAT_FLAG_VIRTUAL); + ssh->kstat = ksp; + + if (ksp) { + ksp->ks_lock = &ssh->lock; + ksp->ks_data = NULL; + ksp->ks_private = spa; + ksp->ks_update = spa_txg_history_update; + kstat_set_raw_ops(ksp, spa_txg_history_headers, + spa_txg_history_data, spa_txg_history_addr); + kstat_install(ksp); + } +} + +static void +spa_txg_history_destroy(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + spa_txg_history_t *sth; + kstat_t *ksp; + + ksp = ssh->kstat; + if (ksp) + kstat_delete(ksp); + + mutex_enter(&ssh->lock); + while ((sth = list_remove_head(&ssh->list))) { + ssh->size--; + kmem_free(sth, sizeof (spa_txg_history_t)); + } + + ASSERT3U(ssh->size, ==, 0); + list_destroy(&ssh->list); + mutex_exit(&ssh->lock); + + mutex_destroy(&ssh->lock); +} + +/* + * Add a new txg to historical record. + */ +void +spa_txg_history_add(spa_t *spa, uint64_t txg, hrtime_t birth_time) +{ + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + spa_txg_history_t *sth, *rm; + + if (zfs_txg_history == 0 && ssh->size == 0) + return; + + sth = kmem_zalloc(sizeof (spa_txg_history_t), KM_SLEEP); + sth->txg = txg; + sth->state = TXG_STATE_OPEN; + sth->times[TXG_STATE_BIRTH] = birth_time; + + mutex_enter(&ssh->lock); + + list_insert_head(&ssh->list, sth); + ssh->size++; + + while (ssh->size > zfs_txg_history) { + ssh->size--; + rm = list_remove_tail(&ssh->list); + kmem_free(rm, sizeof (spa_txg_history_t)); + } + + mutex_exit(&ssh->lock); +} + +/* + * Set txg state completion time and increment current state. + */ +int +spa_txg_history_set(spa_t *spa, uint64_t txg, txg_state_t completed_state, + hrtime_t completed_time) +{ + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + spa_txg_history_t *sth; + int error = ENOENT; + + if (zfs_txg_history == 0) + return (0); + + mutex_enter(&ssh->lock); + for (sth = list_head(&ssh->list); sth != NULL; + sth = list_next(&ssh->list, sth)) { + if (sth->txg == txg) { + sth->times[completed_state] = completed_time; + sth->state++; + error = 0; + break; + } + } + mutex_exit(&ssh->lock); + + return (error); +} + +/* + * Set txg IO stats. + */ +int +spa_txg_history_set_io(spa_t *spa, uint64_t txg, uint64_t nread, + uint64_t nwritten, uint64_t reads, uint64_t writes, uint64_t ndirty) +{ + spa_stats_history_t *ssh = &spa->spa_stats.txg_history; + spa_txg_history_t *sth; + int error = ENOENT; + + if (zfs_txg_history == 0) + return (0); + + mutex_enter(&ssh->lock); + for (sth = list_head(&ssh->list); sth != NULL; + sth = list_next(&ssh->list, sth)) { + if (sth->txg == txg) { + sth->nread = nread; + sth->nwritten = nwritten; + sth->reads = reads; + sth->writes = writes; + sth->ndirty = ndirty; + error = 0; + break; + } + } + mutex_exit(&ssh->lock); + + return (error); +} + +/* + * ========================================================================== + * SPA TX Assign Histogram Routines + * ========================================================================== + */ + +/* + * Tx statistics - Information exported regarding dmu_tx_assign time. + */ + +/* + * When the kstat is written zero all buckets. When the kstat is read + * count the number of trailing buckets set to zero and update ks_ndata + * such that they are not output. + */ +static int +spa_tx_assign_update(kstat_t *ksp, int rw) +{ + spa_t *spa = ksp->ks_private; + spa_stats_history_t *ssh = &spa->spa_stats.tx_assign_histogram; + int i; + + if (rw == KSTAT_WRITE) { + for (i = 0; i < ssh->count; i++) + ((kstat_named_t *)ssh->private)[i].value.ui64 = 0; + } + + for (i = ssh->count; i > 0; i--) + if (((kstat_named_t *)ssh->private)[i-1].value.ui64 != 0) + break; + + ksp->ks_ndata = i; + ksp->ks_data_size = i * sizeof (kstat_named_t); + + return (0); +} + +static void +spa_tx_assign_init(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.tx_assign_histogram; + char name[KSTAT_STRLEN]; + kstat_named_t *ks; + kstat_t *ksp; + int i; + + mutex_init(&ssh->lock, NULL, MUTEX_DEFAULT, NULL); + + ssh->count = 42; /* power of two buckets for 1ns to 2,199s */ + ssh->size = ssh->count * sizeof (kstat_named_t); + ssh->private = kmem_alloc(ssh->size, KM_SLEEP); + + (void) snprintf(name, KSTAT_STRLEN, "zfs/%s", spa_name(spa)); + + for (i = 0; i < ssh->count; i++) { + ks = &((kstat_named_t *)ssh->private)[i]; + ks->data_type = KSTAT_DATA_UINT64; + ks->value.ui64 = 0; + (void) snprintf(ks->name, KSTAT_STRLEN, "%llu ns", + (u_longlong_t)1 << i); + } + + ksp = kstat_create(name, 0, "dmu_tx_assign", "misc", + KSTAT_TYPE_NAMED, 0, KSTAT_FLAG_VIRTUAL); + ssh->kstat = ksp; + + if (ksp) { + ksp->ks_lock = &ssh->lock; + ksp->ks_data = ssh->private; + ksp->ks_ndata = ssh->count; + ksp->ks_data_size = ssh->size; + ksp->ks_private = spa; + ksp->ks_update = spa_tx_assign_update; + kstat_install(ksp); + } +} + +static void +spa_tx_assign_destroy(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.tx_assign_histogram; + kstat_t *ksp; + + ksp = ssh->kstat; + if (ksp) + kstat_delete(ksp); + + kmem_free(ssh->private, ssh->size); + mutex_destroy(&ssh->lock); +} + +void +spa_tx_assign_add_nsecs(spa_t *spa, uint64_t nsecs) +{ + spa_stats_history_t *ssh = &spa->spa_stats.tx_assign_histogram; + uint64_t idx = 0; + + while (((1 << idx) < nsecs) && (idx < ssh->size - 1)) + idx++; + + atomic_inc_64(&((kstat_named_t *)ssh->private)[idx].value.ui64); +} + +/* + * ========================================================================== + * SPA IO History Routines + * ========================================================================== + */ +static int +spa_io_history_update(kstat_t *ksp, int rw) +{ + if (rw == KSTAT_WRITE) + memset(ksp->ks_data, 0, ksp->ks_data_size); + + return (0); +} + +static void +spa_io_history_init(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + char name[KSTAT_STRLEN]; + kstat_t *ksp; + + mutex_init(&ssh->lock, NULL, MUTEX_DEFAULT, NULL); + + (void) snprintf(name, KSTAT_STRLEN, "zfs/%s", spa_name(spa)); + + ksp = kstat_create(name, 0, "io", "disk", KSTAT_TYPE_IO, 1, 0); + ssh->kstat = ksp; + + if (ksp) { + ksp->ks_lock = &ssh->lock; + ksp->ks_private = spa; + ksp->ks_update = spa_io_history_update; + kstat_install(ksp); + } +} + +static void +spa_io_history_destroy(spa_t *spa) +{ + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + + if (ssh->kstat) + kstat_delete(ssh->kstat); + + mutex_destroy(&ssh->lock); +} + +void +spa_stats_init(spa_t *spa) +{ + spa_read_history_init(spa); + spa_txg_history_init(spa); + spa_tx_assign_init(spa); + spa_io_history_init(spa); +} + +void +spa_stats_destroy(spa_t *spa) +{ + spa_tx_assign_destroy(spa); + spa_txg_history_destroy(spa); + spa_read_history_destroy(spa); + spa_io_history_destroy(spa); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_read_history, int, 0644); +MODULE_PARM_DESC(zfs_read_history, "Historic statistics for the last N reads"); + +module_param(zfs_read_history_hits, int, 0644); +MODULE_PARM_DESC(zfs_read_history_hits, "Include cache hits in read history"); + +module_param(zfs_txg_history, int, 0644); +MODULE_PARM_DESC(zfs_txg_history, "Historic statistics for the last N txgs"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/space_map.c +++ linux-4.4.0/zfs/module/zfs/space_map.c @@ -0,0 +1,551 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * The data for a given space map can be kept on blocks of any size. + * Larger blocks entail fewer i/o operations, but they also cause the + * DMU to keep more data in-core, and also to waste more i/o bandwidth + * when only a few blocks have changed since the last transaction group. + */ +int space_map_blksz = (1 << 12); + +/* + * Load the space map disk into the specified range tree. Segments of maptype + * are added to the range tree, other segment types are removed. + * + * Note: space_map_load() will drop sm_lock across dmu_read() calls. + * The caller must be OK with this. + */ +int +space_map_load(space_map_t *sm, range_tree_t *rt, maptype_t maptype) +{ + uint64_t *entry, *entry_map, *entry_map_end; + uint64_t bufsize, size, offset, end, space; + int error = 0; + + ASSERT(MUTEX_HELD(sm->sm_lock)); + + end = space_map_length(sm); + space = space_map_allocated(sm); + + VERIFY0(range_tree_space(rt)); + + if (maptype == SM_FREE) { + range_tree_add(rt, sm->sm_start, sm->sm_size); + space = sm->sm_size - space; + } + + bufsize = MAX(sm->sm_blksz, SPA_MINBLOCKSIZE); + entry_map = zio_buf_alloc(bufsize); + + mutex_exit(sm->sm_lock); + if (end > bufsize) { + dmu_prefetch(sm->sm_os, space_map_object(sm), bufsize, + end - bufsize); + } + mutex_enter(sm->sm_lock); + + for (offset = 0; offset < end; offset += bufsize) { + size = MIN(end - offset, bufsize); + VERIFY(P2PHASE(size, sizeof (uint64_t)) == 0); + VERIFY(size != 0); + ASSERT3U(sm->sm_blksz, !=, 0); + + dprintf("object=%llu offset=%llx size=%llx\n", + space_map_object(sm), offset, size); + + mutex_exit(sm->sm_lock); + error = dmu_read(sm->sm_os, space_map_object(sm), offset, size, + entry_map, DMU_READ_PREFETCH); + mutex_enter(sm->sm_lock); + if (error != 0) + break; + + entry_map_end = entry_map + (size / sizeof (uint64_t)); + for (entry = entry_map; entry < entry_map_end; entry++) { + uint64_t e = *entry; + uint64_t offset, size; + + if (SM_DEBUG_DECODE(e)) /* Skip debug entries */ + continue; + + offset = (SM_OFFSET_DECODE(e) << sm->sm_shift) + + sm->sm_start; + size = SM_RUN_DECODE(e) << sm->sm_shift; + + VERIFY0(P2PHASE(offset, 1ULL << sm->sm_shift)); + VERIFY0(P2PHASE(size, 1ULL << sm->sm_shift)); + VERIFY3U(offset, >=, sm->sm_start); + VERIFY3U(offset + size, <=, sm->sm_start + sm->sm_size); + if (SM_TYPE_DECODE(e) == maptype) { + VERIFY3U(range_tree_space(rt) + size, <=, + sm->sm_size); + range_tree_add(rt, offset, size); + } else { + range_tree_remove(rt, offset, size); + } + } + } + + if (error == 0) + VERIFY3U(range_tree_space(rt), ==, space); + else + range_tree_vacate(rt, NULL, NULL); + + zio_buf_free(entry_map, bufsize); + return (error); +} + +void +space_map_histogram_clear(space_map_t *sm) +{ + if (sm->sm_dbuf->db_size != sizeof (space_map_phys_t)) + return; + + bzero(sm->sm_phys->smp_histogram, sizeof (sm->sm_phys->smp_histogram)); +} + +boolean_t +space_map_histogram_verify(space_map_t *sm, range_tree_t *rt) +{ + int i; + + /* + * Verify that the in-core range tree does not have any + * ranges smaller than our sm_shift size. + */ + for (i = 0; i < sm->sm_shift; i++) { + if (rt->rt_histogram[i] != 0) + return (B_FALSE); + } + return (B_TRUE); +} + +void +space_map_histogram_add(space_map_t *sm, range_tree_t *rt, dmu_tx_t *tx) +{ + int idx = 0; + int i; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + ASSERT(dmu_tx_is_syncing(tx)); + VERIFY3U(space_map_object(sm), !=, 0); + + if (sm->sm_dbuf->db_size != sizeof (space_map_phys_t)) + return; + + dmu_buf_will_dirty(sm->sm_dbuf, tx); + + ASSERT(space_map_histogram_verify(sm, rt)); + + /* + * Transfer the content of the range tree histogram to the space + * map histogram. The space map histogram contains 32 buckets ranging + * between 2^sm_shift to 2^(32+sm_shift-1). The range tree, + * however, can represent ranges from 2^0 to 2^63. Since the space + * map only cares about allocatable blocks (minimum of sm_shift) we + * can safely ignore all ranges in the range tree smaller than sm_shift. + */ + for (i = sm->sm_shift; i < RANGE_TREE_HISTOGRAM_SIZE; i++) { + + /* + * Since the largest histogram bucket in the space map is + * 2^(32+sm_shift-1), we need to normalize the values in + * the range tree for any bucket larger than that size. For + * example given an sm_shift of 9, ranges larger than 2^40 + * would get normalized as if they were 1TB ranges. Assume + * the range tree had a count of 5 in the 2^44 (16TB) bucket, + * the calculation below would normalize this to 5 * 2^4 (16). + */ + ASSERT3U(i, >=, idx + sm->sm_shift); + sm->sm_phys->smp_histogram[idx] += + rt->rt_histogram[i] << (i - idx - sm->sm_shift); + + /* + * Increment the space map's index as long as we haven't + * reached the maximum bucket size. Accumulate all ranges + * larger than the max bucket size into the last bucket. + */ + if (idx < SPACE_MAP_HISTOGRAM_SIZE - 1) { + ASSERT3U(idx + sm->sm_shift, ==, i); + idx++; + ASSERT3U(idx, <, SPACE_MAP_HISTOGRAM_SIZE); + } + } +} + +uint64_t +space_map_entries(space_map_t *sm, range_tree_t *rt) +{ + avl_tree_t *t = &rt->rt_root; + range_seg_t *rs; + uint64_t size, entries; + + /* + * All space_maps always have a debug entry so account for it here. + */ + entries = 1; + + /* + * Traverse the range tree and calculate the number of space map + * entries that would be required to write out the range tree. + */ + for (rs = avl_first(t); rs != NULL; rs = AVL_NEXT(t, rs)) { + size = (rs->rs_end - rs->rs_start) >> sm->sm_shift; + entries += howmany(size, SM_RUN_MAX); + } + return (entries); +} + +/* + * Note: space_map_write() will drop sm_lock across dmu_write() calls. + */ +void +space_map_write(space_map_t *sm, range_tree_t *rt, maptype_t maptype, + dmu_tx_t *tx) +{ + objset_t *os = sm->sm_os; + spa_t *spa = dmu_objset_spa(os); + avl_tree_t *t = &rt->rt_root; + range_seg_t *rs; + uint64_t size, total, rt_space, nodes; + uint64_t *entry, *entry_map, *entry_map_end; + uint64_t expected_entries, actual_entries = 1; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + ASSERT(dsl_pool_sync_context(dmu_objset_pool(os))); + VERIFY3U(space_map_object(sm), !=, 0); + dmu_buf_will_dirty(sm->sm_dbuf, tx); + + /* + * This field is no longer necessary since the in-core space map + * now contains the object number but is maintained for backwards + * compatibility. + */ + sm->sm_phys->smp_object = sm->sm_object; + + if (range_tree_space(rt) == 0) { + VERIFY3U(sm->sm_object, ==, sm->sm_phys->smp_object); + return; + } + + if (maptype == SM_ALLOC) + sm->sm_phys->smp_alloc += range_tree_space(rt); + else + sm->sm_phys->smp_alloc -= range_tree_space(rt); + + expected_entries = space_map_entries(sm, rt); + + entry_map = zio_buf_alloc(sm->sm_blksz); + entry_map_end = entry_map + (sm->sm_blksz / sizeof (uint64_t)); + entry = entry_map; + + *entry++ = SM_DEBUG_ENCODE(1) | + SM_DEBUG_ACTION_ENCODE(maptype) | + SM_DEBUG_SYNCPASS_ENCODE(spa_sync_pass(spa)) | + SM_DEBUG_TXG_ENCODE(dmu_tx_get_txg(tx)); + + total = 0; + nodes = avl_numnodes(&rt->rt_root); + rt_space = range_tree_space(rt); + for (rs = avl_first(t); rs != NULL; rs = AVL_NEXT(t, rs)) { + uint64_t start; + + size = (rs->rs_end - rs->rs_start) >> sm->sm_shift; + start = (rs->rs_start - sm->sm_start) >> sm->sm_shift; + + total += size << sm->sm_shift; + + while (size != 0) { + uint64_t run_len; + + run_len = MIN(size, SM_RUN_MAX); + + if (entry == entry_map_end) { + mutex_exit(rt->rt_lock); + dmu_write(os, space_map_object(sm), + sm->sm_phys->smp_objsize, sm->sm_blksz, + entry_map, tx); + mutex_enter(rt->rt_lock); + sm->sm_phys->smp_objsize += sm->sm_blksz; + entry = entry_map; + } + + *entry++ = SM_OFFSET_ENCODE(start) | + SM_TYPE_ENCODE(maptype) | + SM_RUN_ENCODE(run_len); + + start += run_len; + size -= run_len; + actual_entries++; + } + } + + if (entry != entry_map) { + size = (entry - entry_map) * sizeof (uint64_t); + mutex_exit(rt->rt_lock); + dmu_write(os, space_map_object(sm), sm->sm_phys->smp_objsize, + size, entry_map, tx); + mutex_enter(rt->rt_lock); + sm->sm_phys->smp_objsize += size; + } + ASSERT3U(expected_entries, ==, actual_entries); + + /* + * Ensure that the space_map's accounting wasn't changed + * while we were in the middle of writing it out. + */ + VERIFY3U(nodes, ==, avl_numnodes(&rt->rt_root)); + VERIFY3U(range_tree_space(rt), ==, rt_space); + VERIFY3U(range_tree_space(rt), ==, total); + + zio_buf_free(entry_map, sm->sm_blksz); +} + +static int +space_map_open_impl(space_map_t *sm) +{ + int error; + u_longlong_t blocks; + + error = dmu_bonus_hold(sm->sm_os, sm->sm_object, sm, &sm->sm_dbuf); + if (error) + return (error); + + dmu_object_size_from_db(sm->sm_dbuf, &sm->sm_blksz, &blocks); + sm->sm_phys = sm->sm_dbuf->db_data; + return (0); +} + +int +space_map_open(space_map_t **smp, objset_t *os, uint64_t object, + uint64_t start, uint64_t size, uint8_t shift, kmutex_t *lp) +{ + space_map_t *sm; + int error; + + ASSERT(*smp == NULL); + ASSERT(os != NULL); + ASSERT(object != 0); + + sm = kmem_alloc(sizeof (space_map_t), KM_SLEEP); + + sm->sm_start = start; + sm->sm_size = size; + sm->sm_shift = shift; + sm->sm_lock = lp; + sm->sm_os = os; + sm->sm_object = object; + sm->sm_length = 0; + sm->sm_alloc = 0; + sm->sm_blksz = 0; + sm->sm_dbuf = NULL; + sm->sm_phys = NULL; + + error = space_map_open_impl(sm); + if (error != 0) { + space_map_close(sm); + return (error); + } + + *smp = sm; + + return (0); +} + +void +space_map_close(space_map_t *sm) +{ + if (sm == NULL) + return; + + if (sm->sm_dbuf != NULL) + dmu_buf_rele(sm->sm_dbuf, sm); + sm->sm_dbuf = NULL; + sm->sm_phys = NULL; + + kmem_free(sm, sizeof (*sm)); +} + +void +space_map_truncate(space_map_t *sm, dmu_tx_t *tx) +{ + objset_t *os = sm->sm_os; + spa_t *spa = dmu_objset_spa(os); + dmu_object_info_t doi; + + ASSERT(dsl_pool_sync_context(dmu_objset_pool(os))); + ASSERT(dmu_tx_is_syncing(tx)); + + dmu_object_info_from_db(sm->sm_dbuf, &doi); + + /* + * If the space map has the wrong bonus size (because + * SPA_FEATURE_SPACEMAP_HISTOGRAM has recently been enabled), or + * the wrong block size (because space_map_blksz has changed), + * free and re-allocate its object with the updated sizes. + * + * Otherwise, just truncate the current object. + */ + if ((spa_feature_is_enabled(spa, SPA_FEATURE_SPACEMAP_HISTOGRAM) && + doi.doi_bonus_size != sizeof (space_map_phys_t)) || + doi.doi_data_block_size != space_map_blksz) { + zfs_dbgmsg("txg %llu, spa %s, reallocating: " + "old bonus %llu, old blocksz %u", dmu_tx_get_txg(tx), + spa_name(spa), doi.doi_bonus_size, doi.doi_data_block_size); + + space_map_free(sm, tx); + dmu_buf_rele(sm->sm_dbuf, sm); + + sm->sm_object = space_map_alloc(sm->sm_os, tx); + VERIFY0(space_map_open_impl(sm)); + } else { + VERIFY0(dmu_free_range(os, space_map_object(sm), 0, -1ULL, tx)); + + /* + * If the spacemap is reallocated, its histogram + * will be reset. Do the same in the common case so that + * bugs related to the uncommon case do not go unnoticed. + */ + bzero(sm->sm_phys->smp_histogram, + sizeof (sm->sm_phys->smp_histogram)); + } + + dmu_buf_will_dirty(sm->sm_dbuf, tx); + sm->sm_phys->smp_objsize = 0; + sm->sm_phys->smp_alloc = 0; +} + +/* + * Update the in-core space_map allocation and length values. + */ +void +space_map_update(space_map_t *sm) +{ + if (sm == NULL) + return; + + ASSERT(MUTEX_HELD(sm->sm_lock)); + + sm->sm_alloc = sm->sm_phys->smp_alloc; + sm->sm_length = sm->sm_phys->smp_objsize; +} + +uint64_t +space_map_alloc(objset_t *os, dmu_tx_t *tx) +{ + spa_t *spa = dmu_objset_spa(os); + uint64_t object; + int bonuslen; + + if (spa_feature_is_enabled(spa, SPA_FEATURE_SPACEMAP_HISTOGRAM)) { + spa_feature_incr(spa, SPA_FEATURE_SPACEMAP_HISTOGRAM, tx); + bonuslen = sizeof (space_map_phys_t); + ASSERT3U(bonuslen, <=, dmu_bonus_max()); + } else { + bonuslen = SPACE_MAP_SIZE_V0; + } + + object = dmu_object_alloc(os, + DMU_OT_SPACE_MAP, space_map_blksz, + DMU_OT_SPACE_MAP_HEADER, bonuslen, tx); + + return (object); +} + +void +space_map_free(space_map_t *sm, dmu_tx_t *tx) +{ + spa_t *spa; + + if (sm == NULL) + return; + + spa = dmu_objset_spa(sm->sm_os); + if (spa_feature_is_enabled(spa, SPA_FEATURE_SPACEMAP_HISTOGRAM)) { + dmu_object_info_t doi; + + dmu_object_info_from_db(sm->sm_dbuf, &doi); + if (doi.doi_bonus_size != SPACE_MAP_SIZE_V0) { + VERIFY(spa_feature_is_active(spa, + SPA_FEATURE_SPACEMAP_HISTOGRAM)); + spa_feature_decr(spa, + SPA_FEATURE_SPACEMAP_HISTOGRAM, tx); + } + } + + VERIFY3U(dmu_object_free(sm->sm_os, space_map_object(sm), tx), ==, 0); + sm->sm_object = 0; +} + +uint64_t +space_map_object(space_map_t *sm) +{ + return (sm != NULL ? sm->sm_object : 0); +} + +/* + * Returns the already synced, on-disk allocated space. + */ +uint64_t +space_map_allocated(space_map_t *sm) +{ + return (sm != NULL ? sm->sm_alloc : 0); +} + +/* + * Returns the already synced, on-disk length; + */ +uint64_t +space_map_length(space_map_t *sm) +{ + return (sm != NULL ? sm->sm_length : 0); +} + +/* + * Returns the allocated space that is currently syncing. + */ +int64_t +space_map_alloc_delta(space_map_t *sm) +{ + if (sm == NULL) + return (0); + ASSERT(sm->sm_dbuf != NULL); + return (sm->sm_phys->smp_alloc - space_map_allocated(sm)); +} --- linux-4.4.0.orig/zfs/module/zfs/space_reftree.c +++ linux-4.4.0/zfs/module/zfs/space_reftree.c @@ -0,0 +1,159 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include + +/* + * Space reference trees. + * + * A range tree is a collection of integers. Every integer is either + * in the tree, or it's not. A space reference tree generalizes + * the idea: it allows its members to have arbitrary reference counts, + * as opposed to the implicit reference count of 0 or 1 in a range tree. + * This representation comes in handy when computing the union or + * intersection of multiple space maps. For example, the union of + * N range trees is the subset of the reference tree with refcnt >= 1. + * The intersection of N range trees is the subset with refcnt >= N. + * + * [It's very much like a Fourier transform. Unions and intersections + * are hard to perform in the 'range tree domain', so we convert the trees + * into the 'reference count domain', where it's trivial, then invert.] + * + * vdev_dtl_reassess() uses computations of this form to determine + * DTL_MISSING and DTL_OUTAGE for interior vdevs -- e.g. a RAID-Z vdev + * has an outage wherever refcnt >= vdev_nparity + 1, and a mirror vdev + * has an outage wherever refcnt >= vdev_children. + */ +static int +space_reftree_compare(const void *x1, const void *x2) +{ + const space_ref_t *sr1 = x1; + const space_ref_t *sr2 = x2; + + if (sr1->sr_offset < sr2->sr_offset) + return (-1); + if (sr1->sr_offset > sr2->sr_offset) + return (1); + + if (sr1 < sr2) + return (-1); + if (sr1 > sr2) + return (1); + + return (0); +} + +void +space_reftree_create(avl_tree_t *t) +{ + avl_create(t, space_reftree_compare, + sizeof (space_ref_t), offsetof(space_ref_t, sr_node)); +} + +void +space_reftree_destroy(avl_tree_t *t) +{ + space_ref_t *sr; + void *cookie = NULL; + + while ((sr = avl_destroy_nodes(t, &cookie)) != NULL) + kmem_free(sr, sizeof (*sr)); + + avl_destroy(t); +} + +static void +space_reftree_add_node(avl_tree_t *t, uint64_t offset, int64_t refcnt) +{ + space_ref_t *sr; + + sr = kmem_alloc(sizeof (*sr), KM_SLEEP); + sr->sr_offset = offset; + sr->sr_refcnt = refcnt; + + avl_add(t, sr); +} + +void +space_reftree_add_seg(avl_tree_t *t, uint64_t start, uint64_t end, + int64_t refcnt) +{ + space_reftree_add_node(t, start, refcnt); + space_reftree_add_node(t, end, -refcnt); +} + +/* + * Convert (or add) a range tree into a reference tree. + */ +void +space_reftree_add_map(avl_tree_t *t, range_tree_t *rt, int64_t refcnt) +{ + range_seg_t *rs; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + + for (rs = avl_first(&rt->rt_root); rs; rs = AVL_NEXT(&rt->rt_root, rs)) + space_reftree_add_seg(t, rs->rs_start, rs->rs_end, refcnt); +} + +/* + * Convert a reference tree into a range tree. The range tree will contain + * all members of the reference tree for which refcnt >= minref. + */ +void +space_reftree_generate_map(avl_tree_t *t, range_tree_t *rt, int64_t minref) +{ + uint64_t start = -1ULL; + int64_t refcnt = 0; + space_ref_t *sr; + + ASSERT(MUTEX_HELD(rt->rt_lock)); + + range_tree_vacate(rt, NULL, NULL); + + for (sr = avl_first(t); sr != NULL; sr = AVL_NEXT(t, sr)) { + refcnt += sr->sr_refcnt; + if (refcnt >= minref) { + if (start == -1ULL) { + start = sr->sr_offset; + } + } else { + if (start != -1ULL) { + uint64_t end = sr->sr_offset; + ASSERT(start <= end); + if (end > start) + range_tree_add(rt, start, end - start); + start = -1ULL; + } + } + } + ASSERT(refcnt == 0); + ASSERT(start == -1ULL); +} --- linux-4.4.0.orig/zfs/module/zfs/trace.c +++ linux-4.4.0/zfs/module/zfs/trace.c @@ -0,0 +1,50 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Each Linux tracepoints subsystem must define CREATE_TRACE_POINTS in one + * (and only one) C file, so this dummy file exists for that purpose. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CREATE_TRACE_POINTS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include --- linux-4.4.0.orig/zfs/module/zfs/txg.c +++ linux-4.4.0/zfs/module/zfs/txg.c @@ -0,0 +1,952 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Portions Copyright 2011 Martin Matuska + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ZFS Transaction Groups + * ---------------------- + * + * ZFS transaction groups are, as the name implies, groups of transactions + * that act on persistent state. ZFS asserts consistency at the granularity of + * these transaction groups. Each successive transaction group (txg) is + * assigned a 64-bit consecutive identifier. There are three active + * transaction group states: open, quiescing, or syncing. At any given time, + * there may be an active txg associated with each state; each active txg may + * either be processing, or blocked waiting to enter the next state. There may + * be up to three active txgs, and there is always a txg in the open state + * (though it may be blocked waiting to enter the quiescing state). In broad + * strokes, transactions -- operations that change in-memory structures -- are + * accepted into the txg in the open state, and are completed while the txg is + * in the open or quiescing states. The accumulated changes are written to + * disk in the syncing state. + * + * Open + * + * When a new txg becomes active, it first enters the open state. New + * transactions -- updates to in-memory structures -- are assigned to the + * currently open txg. There is always a txg in the open state so that ZFS can + * accept new changes (though the txg may refuse new changes if it has hit + * some limit). ZFS advances the open txg to the next state for a variety of + * reasons such as it hitting a time or size threshold, or the execution of an + * administrative action that must be completed in the syncing state. + * + * Quiescing + * + * After a txg exits the open state, it enters the quiescing state. The + * quiescing state is intended to provide a buffer between accepting new + * transactions in the open state and writing them out to stable storage in + * the syncing state. While quiescing, transactions can continue their + * operation without delaying either of the other states. Typically, a txg is + * in the quiescing state very briefly since the operations are bounded by + * software latencies rather than, say, slower I/O latencies. After all + * transactions complete, the txg is ready to enter the next state. + * + * Syncing + * + * In the syncing state, the in-memory state built up during the open and (to + * a lesser degree) the quiescing states is written to stable storage. The + * process of writing out modified data can, in turn modify more data. For + * example when we write new blocks, we need to allocate space for them; those + * allocations modify metadata (space maps)... which themselves must be + * written to stable storage. During the sync state, ZFS iterates, writing out + * data until it converges and all in-memory changes have been written out. + * The first such pass is the largest as it encompasses all the modified user + * data (as opposed to filesystem metadata). Subsequent passes typically have + * far less data to write as they consist exclusively of filesystem metadata. + * + * To ensure convergence, after a certain number of passes ZFS begins + * overwriting locations on stable storage that had been allocated earlier in + * the syncing state (and subsequently freed). ZFS usually allocates new + * blocks to optimize for large, continuous, writes. For the syncing state to + * converge however it must complete a pass where no new blocks are allocated + * since each allocation requires a modification of persistent metadata. + * Further, to hasten convergence, after a prescribed number of passes, ZFS + * also defers frees, and stops compressing. + * + * In addition to writing out user data, we must also execute synctasks during + * the syncing context. A synctask is the mechanism by which some + * administrative activities work such as creating and destroying snapshots or + * datasets. Note that when a synctask is initiated it enters the open txg, + * and ZFS then pushes that txg as quickly as possible to completion of the + * syncing state in order to reduce the latency of the administrative + * activity. To complete the syncing state, ZFS writes out a new uberblock, + * the root of the tree of blocks that comprise all state stored on the ZFS + * pool. Finally, if there is a quiesced txg waiting, we signal that it can + * now transition to the syncing state. + */ + +static void txg_sync_thread(dsl_pool_t *dp); +static void txg_quiesce_thread(dsl_pool_t *dp); + +int zfs_txg_timeout = 5; /* max seconds worth of delta per txg */ + +/* + * Prepare the txg subsystem. + */ +void +txg_init(dsl_pool_t *dp, uint64_t txg) +{ + tx_state_t *tx = &dp->dp_tx; + int c; + bzero(tx, sizeof (tx_state_t)); + + tx->tx_cpu = vmem_zalloc(max_ncpus * sizeof (tx_cpu_t), KM_SLEEP); + + for (c = 0; c < max_ncpus; c++) { + int i; + + mutex_init(&tx->tx_cpu[c].tc_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&tx->tx_cpu[c].tc_open_lock, NULL, MUTEX_DEFAULT, + NULL); + for (i = 0; i < TXG_SIZE; i++) { + cv_init(&tx->tx_cpu[c].tc_cv[i], NULL, CV_DEFAULT, + NULL); + list_create(&tx->tx_cpu[c].tc_callbacks[i], + sizeof (dmu_tx_callback_t), + offsetof(dmu_tx_callback_t, dcb_node)); + } + } + + mutex_init(&tx->tx_sync_lock, NULL, MUTEX_DEFAULT, NULL); + + cv_init(&tx->tx_sync_more_cv, NULL, CV_DEFAULT, NULL); + cv_init(&tx->tx_sync_done_cv, NULL, CV_DEFAULT, NULL); + cv_init(&tx->tx_quiesce_more_cv, NULL, CV_DEFAULT, NULL); + cv_init(&tx->tx_quiesce_done_cv, NULL, CV_DEFAULT, NULL); + cv_init(&tx->tx_exit_cv, NULL, CV_DEFAULT, NULL); + + tx->tx_open_txg = txg; +} + +/* + * Close down the txg subsystem. + */ +void +txg_fini(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + int c; + + ASSERT(tx->tx_threads == 0); + + mutex_destroy(&tx->tx_sync_lock); + + cv_destroy(&tx->tx_sync_more_cv); + cv_destroy(&tx->tx_sync_done_cv); + cv_destroy(&tx->tx_quiesce_more_cv); + cv_destroy(&tx->tx_quiesce_done_cv); + cv_destroy(&tx->tx_exit_cv); + + for (c = 0; c < max_ncpus; c++) { + int i; + + mutex_destroy(&tx->tx_cpu[c].tc_open_lock); + mutex_destroy(&tx->tx_cpu[c].tc_lock); + for (i = 0; i < TXG_SIZE; i++) { + cv_destroy(&tx->tx_cpu[c].tc_cv[i]); + list_destroy(&tx->tx_cpu[c].tc_callbacks[i]); + } + } + + if (tx->tx_commit_cb_taskq != NULL) + taskq_destroy(tx->tx_commit_cb_taskq); + + vmem_free(tx->tx_cpu, max_ncpus * sizeof (tx_cpu_t)); + + bzero(tx, sizeof (tx_state_t)); +} + +/* + * Start syncing transaction groups. + */ +void +txg_sync_start(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + + mutex_enter(&tx->tx_sync_lock); + + dprintf("pool %p\n", dp); + + ASSERT(tx->tx_threads == 0); + + tx->tx_threads = 2; + + tx->tx_quiesce_thread = thread_create(NULL, 0, txg_quiesce_thread, + dp, 0, &p0, TS_RUN, defclsyspri); + + /* + * The sync thread can need a larger-than-default stack size on + * 32-bit x86. This is due in part to nested pools and + * scrub_visitbp() recursion. + */ + tx->tx_sync_thread = thread_create(NULL, 32<<10, txg_sync_thread, + dp, 0, &p0, TS_RUN, defclsyspri); + + mutex_exit(&tx->tx_sync_lock); +} + +static void +txg_thread_enter(tx_state_t *tx, callb_cpr_t *cpr) +{ + CALLB_CPR_INIT(cpr, &tx->tx_sync_lock, callb_generic_cpr, FTAG); + mutex_enter(&tx->tx_sync_lock); +} + +static void +txg_thread_exit(tx_state_t *tx, callb_cpr_t *cpr, kthread_t **tpp) +{ + ASSERT(*tpp != NULL); + *tpp = NULL; + tx->tx_threads--; + cv_broadcast(&tx->tx_exit_cv); + CALLB_CPR_EXIT(cpr); /* drops &tx->tx_sync_lock */ + thread_exit(); +} + +static void +txg_thread_wait(tx_state_t *tx, callb_cpr_t *cpr, kcondvar_t *cv, clock_t time) +{ + CALLB_CPR_SAFE_BEGIN(cpr); + + if (time) + (void) cv_timedwait_sig(cv, &tx->tx_sync_lock, + ddi_get_lbolt() + time); + else + cv_wait_sig(cv, &tx->tx_sync_lock); + + CALLB_CPR_SAFE_END(cpr, &tx->tx_sync_lock); +} + +/* + * Stop syncing transaction groups. + */ +void +txg_sync_stop(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + + dprintf("pool %p\n", dp); + /* + * Finish off any work in progress. + */ + ASSERT(tx->tx_threads == 2); + + /* + * We need to ensure that we've vacated the deferred space_maps. + */ + txg_wait_synced(dp, tx->tx_open_txg + TXG_DEFER_SIZE); + + /* + * Wake all sync threads and wait for them to die. + */ + mutex_enter(&tx->tx_sync_lock); + + ASSERT(tx->tx_threads == 2); + + tx->tx_exiting = 1; + + cv_broadcast(&tx->tx_quiesce_more_cv); + cv_broadcast(&tx->tx_quiesce_done_cv); + cv_broadcast(&tx->tx_sync_more_cv); + + while (tx->tx_threads != 0) + cv_wait(&tx->tx_exit_cv, &tx->tx_sync_lock); + + tx->tx_exiting = 0; + + mutex_exit(&tx->tx_sync_lock); +} + +uint64_t +txg_hold_open(dsl_pool_t *dp, txg_handle_t *th) +{ + tx_state_t *tx = &dp->dp_tx; + tx_cpu_t *tc; + uint64_t txg; + + /* + * It appears the processor id is simply used as a "random" + * number to index into the array, and there isn't any other + * significance to the chosen tx_cpu. Because.. Why not use + * the current cpu to index into the array? + */ + kpreempt_disable(); + tc = &tx->tx_cpu[CPU_SEQID]; + kpreempt_enable(); + + mutex_enter(&tc->tc_open_lock); + txg = tx->tx_open_txg; + + mutex_enter(&tc->tc_lock); + tc->tc_count[txg & TXG_MASK]++; + mutex_exit(&tc->tc_lock); + + th->th_cpu = tc; + th->th_txg = txg; + + return (txg); +} + +void +txg_rele_to_quiesce(txg_handle_t *th) +{ + tx_cpu_t *tc = th->th_cpu; + + ASSERT(!MUTEX_HELD(&tc->tc_lock)); + mutex_exit(&tc->tc_open_lock); +} + +void +txg_register_callbacks(txg_handle_t *th, list_t *tx_callbacks) +{ + tx_cpu_t *tc = th->th_cpu; + int g = th->th_txg & TXG_MASK; + + mutex_enter(&tc->tc_lock); + list_move_tail(&tc->tc_callbacks[g], tx_callbacks); + mutex_exit(&tc->tc_lock); +} + +void +txg_rele_to_sync(txg_handle_t *th) +{ + tx_cpu_t *tc = th->th_cpu; + int g = th->th_txg & TXG_MASK; + + mutex_enter(&tc->tc_lock); + ASSERT(tc->tc_count[g] != 0); + if (--tc->tc_count[g] == 0) + cv_broadcast(&tc->tc_cv[g]); + mutex_exit(&tc->tc_lock); + + th->th_cpu = NULL; /* defensive */ +} + +/* + * Blocks until all transactions in the group are committed. + * + * On return, the transaction group has reached a stable state in which it can + * then be passed off to the syncing context. + */ +static void +txg_quiesce(dsl_pool_t *dp, uint64_t txg) +{ + tx_state_t *tx = &dp->dp_tx; + int g = txg & TXG_MASK; + int c; + + /* + * Grab all tc_open_locks so nobody else can get into this txg. + */ + for (c = 0; c < max_ncpus; c++) + mutex_enter(&tx->tx_cpu[c].tc_open_lock); + + ASSERT(txg == tx->tx_open_txg); + tx->tx_open_txg++; + tx->tx_open_time = gethrtime(); + + spa_txg_history_set(dp->dp_spa, txg, TXG_STATE_OPEN, tx->tx_open_time); + spa_txg_history_add(dp->dp_spa, tx->tx_open_txg, tx->tx_open_time); + + DTRACE_PROBE2(txg__quiescing, dsl_pool_t *, dp, uint64_t, txg); + DTRACE_PROBE2(txg__opened, dsl_pool_t *, dp, uint64_t, tx->tx_open_txg); + + /* + * Now that we've incremented tx_open_txg, we can let threads + * enter the next transaction group. + */ + for (c = 0; c < max_ncpus; c++) + mutex_exit(&tx->tx_cpu[c].tc_open_lock); + + /* + * Quiesce the transaction group by waiting for everyone to txg_exit(). + */ + for (c = 0; c < max_ncpus; c++) { + tx_cpu_t *tc = &tx->tx_cpu[c]; + mutex_enter(&tc->tc_lock); + while (tc->tc_count[g] != 0) + cv_wait(&tc->tc_cv[g], &tc->tc_lock); + mutex_exit(&tc->tc_lock); + } + + spa_txg_history_set(dp->dp_spa, txg, TXG_STATE_QUIESCED, gethrtime()); +} + +static void +txg_do_callbacks(list_t *cb_list) +{ + dmu_tx_do_callbacks(cb_list, 0); + + list_destroy(cb_list); + + kmem_free(cb_list, sizeof (list_t)); +} + +/* + * Dispatch the commit callbacks registered on this txg to worker threads. + * + * If no callbacks are registered for a given TXG, nothing happens. + * This function creates a taskq for the associated pool, if needed. + */ +static void +txg_dispatch_callbacks(dsl_pool_t *dp, uint64_t txg) +{ + int c; + tx_state_t *tx = &dp->dp_tx; + list_t *cb_list; + + for (c = 0; c < max_ncpus; c++) { + tx_cpu_t *tc = &tx->tx_cpu[c]; + /* + * No need to lock tx_cpu_t at this point, since this can + * only be called once a txg has been synced. + */ + + int g = txg & TXG_MASK; + + if (list_is_empty(&tc->tc_callbacks[g])) + continue; + + if (tx->tx_commit_cb_taskq == NULL) { + /* + * Commit callback taskq hasn't been created yet. + */ + tx->tx_commit_cb_taskq = taskq_create("tx_commit_cb", + max_ncpus, defclsyspri, max_ncpus, max_ncpus * 2, + TASKQ_PREPOPULATE | TASKQ_DYNAMIC); + } + + cb_list = kmem_alloc(sizeof (list_t), KM_SLEEP); + list_create(cb_list, sizeof (dmu_tx_callback_t), + offsetof(dmu_tx_callback_t, dcb_node)); + + list_move_tail(cb_list, &tc->tc_callbacks[g]); + + (void) taskq_dispatch(tx->tx_commit_cb_taskq, (task_func_t *) + txg_do_callbacks, cb_list, TQ_SLEEP); + } +} + +/* + * Wait for pending commit callbacks of already-synced transactions to finish + * processing. + * Calling this function from within a commit callback will deadlock. + */ +void +txg_wait_callbacks(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + + if (tx->tx_commit_cb_taskq != NULL) + taskq_wait_outstanding(tx->tx_commit_cb_taskq, 0); +} + +static void +txg_sync_thread(dsl_pool_t *dp) +{ + spa_t *spa = dp->dp_spa; + tx_state_t *tx = &dp->dp_tx; + callb_cpr_t cpr; + vdev_stat_t *vs1, *vs2; + clock_t start, delta; + + (void) spl_fstrans_mark(); + txg_thread_enter(tx, &cpr); + + vs1 = kmem_alloc(sizeof (vdev_stat_t), KM_SLEEP); + vs2 = kmem_alloc(sizeof (vdev_stat_t), KM_SLEEP); + + start = delta = 0; + for (;;) { + clock_t timer, timeout; + uint64_t txg; + uint64_t ndirty; + + timeout = zfs_txg_timeout * hz; + + /* + * We sync when we're scanning, there's someone waiting + * on us, or the quiesce thread has handed off a txg to + * us, or we have reached our timeout. + */ + timer = (delta >= timeout ? 0 : timeout - delta); + while (!dsl_scan_active(dp->dp_scan) && + !tx->tx_exiting && timer > 0 && + tx->tx_synced_txg >= tx->tx_sync_txg_waiting && + tx->tx_quiesced_txg == 0 && + dp->dp_dirty_total < zfs_dirty_data_sync) { + dprintf("waiting; tx_synced=%llu waiting=%llu dp=%p\n", + tx->tx_synced_txg, tx->tx_sync_txg_waiting, dp); + txg_thread_wait(tx, &cpr, &tx->tx_sync_more_cv, timer); + delta = ddi_get_lbolt() - start; + timer = (delta > timeout ? 0 : timeout - delta); + } + + /* + * Wait until the quiesce thread hands off a txg to us, + * prompting it to do so if necessary. + */ + while (!tx->tx_exiting && tx->tx_quiesced_txg == 0) { + if (tx->tx_quiesce_txg_waiting < tx->tx_open_txg+1) + tx->tx_quiesce_txg_waiting = tx->tx_open_txg+1; + cv_broadcast(&tx->tx_quiesce_more_cv); + txg_thread_wait(tx, &cpr, &tx->tx_quiesce_done_cv, 0); + } + + if (tx->tx_exiting) { + kmem_free(vs2, sizeof (vdev_stat_t)); + kmem_free(vs1, sizeof (vdev_stat_t)); + txg_thread_exit(tx, &cpr, &tx->tx_sync_thread); + } + + spa_config_enter(spa, SCL_ALL, FTAG, RW_READER); + vdev_get_stats(spa->spa_root_vdev, vs1); + spa_config_exit(spa, SCL_ALL, FTAG); + + /* + * Consume the quiesced txg which has been handed off to + * us. This may cause the quiescing thread to now be + * able to quiesce another txg, so we must signal it. + */ + txg = tx->tx_quiesced_txg; + tx->tx_quiesced_txg = 0; + tx->tx_syncing_txg = txg; + DTRACE_PROBE2(txg__syncing, dsl_pool_t *, dp, uint64_t, txg); + cv_broadcast(&tx->tx_quiesce_more_cv); + + dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", + txg, tx->tx_quiesce_txg_waiting, tx->tx_sync_txg_waiting); + mutex_exit(&tx->tx_sync_lock); + + spa_txg_history_set(spa, txg, TXG_STATE_WAIT_FOR_SYNC, + gethrtime()); + ndirty = dp->dp_dirty_pertxg[txg & TXG_MASK]; + + start = ddi_get_lbolt(); + spa_sync(spa, txg); + delta = ddi_get_lbolt() - start; + + mutex_enter(&tx->tx_sync_lock); + tx->tx_synced_txg = txg; + tx->tx_syncing_txg = 0; + DTRACE_PROBE2(txg__synced, dsl_pool_t *, dp, uint64_t, txg); + cv_broadcast(&tx->tx_sync_done_cv); + + /* + * Dispatch commit callbacks to worker threads. + */ + txg_dispatch_callbacks(dp, txg); + + spa_config_enter(spa, SCL_ALL, FTAG, RW_READER); + vdev_get_stats(spa->spa_root_vdev, vs2); + spa_config_exit(spa, SCL_ALL, FTAG); + spa_txg_history_set_io(spa, txg, + vs2->vs_bytes[ZIO_TYPE_READ]-vs1->vs_bytes[ZIO_TYPE_READ], + vs2->vs_bytes[ZIO_TYPE_WRITE]-vs1->vs_bytes[ZIO_TYPE_WRITE], + vs2->vs_ops[ZIO_TYPE_READ]-vs1->vs_ops[ZIO_TYPE_READ], + vs2->vs_ops[ZIO_TYPE_WRITE]-vs1->vs_ops[ZIO_TYPE_WRITE], + ndirty); + spa_txg_history_set(spa, txg, TXG_STATE_SYNCED, gethrtime()); + } +} + +static void +txg_quiesce_thread(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + callb_cpr_t cpr; + + txg_thread_enter(tx, &cpr); + + for (;;) { + uint64_t txg; + + /* + * We quiesce when there's someone waiting on us. + * However, we can only have one txg in "quiescing" or + * "quiesced, waiting to sync" state. So we wait until + * the "quiesced, waiting to sync" txg has been consumed + * by the sync thread. + */ + while (!tx->tx_exiting && + (tx->tx_open_txg >= tx->tx_quiesce_txg_waiting || + tx->tx_quiesced_txg != 0)) + txg_thread_wait(tx, &cpr, &tx->tx_quiesce_more_cv, 0); + + if (tx->tx_exiting) + txg_thread_exit(tx, &cpr, &tx->tx_quiesce_thread); + + txg = tx->tx_open_txg; + dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", + txg, tx->tx_quiesce_txg_waiting, + tx->tx_sync_txg_waiting); + mutex_exit(&tx->tx_sync_lock); + txg_quiesce(dp, txg); + mutex_enter(&tx->tx_sync_lock); + + /* + * Hand this txg off to the sync thread. + */ + dprintf("quiesce done, handing off txg %llu\n", txg); + tx->tx_quiesced_txg = txg; + DTRACE_PROBE2(txg__quiesced, dsl_pool_t *, dp, uint64_t, txg); + cv_broadcast(&tx->tx_sync_more_cv); + cv_broadcast(&tx->tx_quiesce_done_cv); + } +} + +/* + * Delay this thread by delay nanoseconds if we are still in the open + * transaction group and there is already a waiting txg quiesing or quiesced. + * Abort the delay if this txg stalls or enters the quiesing state. + */ +void +txg_delay(dsl_pool_t *dp, uint64_t txg, hrtime_t delay, hrtime_t resolution) +{ + tx_state_t *tx = &dp->dp_tx; + hrtime_t start = gethrtime(); + + /* don't delay if this txg could transition to quiescing immediately */ + if (tx->tx_open_txg > txg || + tx->tx_syncing_txg == txg-1 || tx->tx_synced_txg == txg-1) + return; + + mutex_enter(&tx->tx_sync_lock); + if (tx->tx_open_txg > txg || tx->tx_synced_txg == txg-1) { + mutex_exit(&tx->tx_sync_lock); + return; + } + + while (gethrtime() - start < delay && + tx->tx_syncing_txg < txg-1 && !txg_stalled(dp)) { + (void) cv_timedwait_hires(&tx->tx_quiesce_more_cv, + &tx->tx_sync_lock, delay, resolution, 0); + } + + DMU_TX_STAT_BUMP(dmu_tx_delay); + + mutex_exit(&tx->tx_sync_lock); +} + +void +txg_wait_synced(dsl_pool_t *dp, uint64_t txg) +{ + tx_state_t *tx = &dp->dp_tx; + + ASSERT(!dsl_pool_config_held(dp)); + + mutex_enter(&tx->tx_sync_lock); + ASSERT(tx->tx_threads == 2); + if (txg == 0) + txg = tx->tx_open_txg + TXG_DEFER_SIZE; + if (tx->tx_sync_txg_waiting < txg) + tx->tx_sync_txg_waiting = txg; + dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", + txg, tx->tx_quiesce_txg_waiting, tx->tx_sync_txg_waiting); + while (tx->tx_synced_txg < txg) { + dprintf("broadcasting sync more " + "tx_synced=%llu waiting=%llu dp=%p\n", + tx->tx_synced_txg, tx->tx_sync_txg_waiting, dp); + cv_broadcast(&tx->tx_sync_more_cv); + cv_wait(&tx->tx_sync_done_cv, &tx->tx_sync_lock); + } + mutex_exit(&tx->tx_sync_lock); +} + +void +txg_wait_open(dsl_pool_t *dp, uint64_t txg) +{ + tx_state_t *tx = &dp->dp_tx; + + ASSERT(!dsl_pool_config_held(dp)); + + mutex_enter(&tx->tx_sync_lock); + ASSERT(tx->tx_threads == 2); + if (txg == 0) + txg = tx->tx_open_txg + 1; + if (tx->tx_quiesce_txg_waiting < txg) + tx->tx_quiesce_txg_waiting = txg; + dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", + txg, tx->tx_quiesce_txg_waiting, tx->tx_sync_txg_waiting); + while (tx->tx_open_txg < txg) { + cv_broadcast(&tx->tx_quiesce_more_cv); + cv_wait(&tx->tx_quiesce_done_cv, &tx->tx_sync_lock); + } + mutex_exit(&tx->tx_sync_lock); +} + +/* + * If there isn't a txg syncing or in the pipeline, push another txg through + * the pipeline by queiscing the open txg. + */ +void +txg_kick(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + + ASSERT(!dsl_pool_config_held(dp)); + + mutex_enter(&tx->tx_sync_lock); + if (tx->tx_syncing_txg == 0 && + tx->tx_quiesce_txg_waiting <= tx->tx_open_txg && + tx->tx_sync_txg_waiting <= tx->tx_synced_txg && + tx->tx_quiesced_txg <= tx->tx_synced_txg) { + tx->tx_quiesce_txg_waiting = tx->tx_open_txg + 1; + cv_broadcast(&tx->tx_quiesce_more_cv); + } + mutex_exit(&tx->tx_sync_lock); +} + +boolean_t +txg_stalled(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + return (tx->tx_quiesce_txg_waiting > tx->tx_open_txg); +} + +boolean_t +txg_sync_waiting(dsl_pool_t *dp) +{ + tx_state_t *tx = &dp->dp_tx; + + return (tx->tx_syncing_txg <= tx->tx_sync_txg_waiting || + tx->tx_quiesced_txg != 0); +} + +/* + * Per-txg object lists. + */ +void +txg_list_create(txg_list_t *tl, size_t offset) +{ + int t; + + mutex_init(&tl->tl_lock, NULL, MUTEX_DEFAULT, NULL); + + tl->tl_offset = offset; + + for (t = 0; t < TXG_SIZE; t++) + tl->tl_head[t] = NULL; +} + +void +txg_list_destroy(txg_list_t *tl) +{ + int t; + + for (t = 0; t < TXG_SIZE; t++) + ASSERT(txg_list_empty(tl, t)); + + mutex_destroy(&tl->tl_lock); +} + +boolean_t +txg_list_empty(txg_list_t *tl, uint64_t txg) +{ + return (tl->tl_head[txg & TXG_MASK] == NULL); +} + +/* + * Returns true if all txg lists are empty. + * + * Warning: this is inherently racy (an item could be added immediately + * after this function returns). We don't bother with the lock because + * it wouldn't change the semantics. + */ +boolean_t +txg_all_lists_empty(txg_list_t *tl) +{ + int i; + + for (i = 0; i < TXG_SIZE; i++) { + if (!txg_list_empty(tl, i)) { + return (B_FALSE); + } + } + return (B_TRUE); +} + +/* + * Add an entry to the list (unless it's already on the list). + * Returns B_TRUE if it was actually added. + */ +boolean_t +txg_list_add(txg_list_t *tl, void *p, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn = (txg_node_t *)((char *)p + tl->tl_offset); + boolean_t add; + + mutex_enter(&tl->tl_lock); + add = (tn->tn_member[t] == 0); + if (add) { + tn->tn_member[t] = 1; + tn->tn_next[t] = tl->tl_head[t]; + tl->tl_head[t] = tn; + } + mutex_exit(&tl->tl_lock); + + return (add); +} + +/* + * Add an entry to the end of the list, unless it's already on the list. + * (walks list to find end) + * Returns B_TRUE if it was actually added. + */ +boolean_t +txg_list_add_tail(txg_list_t *tl, void *p, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn = (txg_node_t *)((char *)p + tl->tl_offset); + boolean_t add; + + mutex_enter(&tl->tl_lock); + add = (tn->tn_member[t] == 0); + if (add) { + txg_node_t **tp; + + for (tp = &tl->tl_head[t]; *tp != NULL; tp = &(*tp)->tn_next[t]) + continue; + + tn->tn_member[t] = 1; + tn->tn_next[t] = NULL; + *tp = tn; + } + mutex_exit(&tl->tl_lock); + + return (add); +} + +/* + * Remove the head of the list and return it. + */ +void * +txg_list_remove(txg_list_t *tl, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn; + void *p = NULL; + + mutex_enter(&tl->tl_lock); + if ((tn = tl->tl_head[t]) != NULL) { + p = (char *)tn - tl->tl_offset; + tl->tl_head[t] = tn->tn_next[t]; + tn->tn_next[t] = NULL; + tn->tn_member[t] = 0; + } + mutex_exit(&tl->tl_lock); + + return (p); +} + +/* + * Remove a specific item from the list and return it. + */ +void * +txg_list_remove_this(txg_list_t *tl, void *p, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn, **tp; + + mutex_enter(&tl->tl_lock); + + for (tp = &tl->tl_head[t]; (tn = *tp) != NULL; tp = &tn->tn_next[t]) { + if ((char *)tn - tl->tl_offset == p) { + *tp = tn->tn_next[t]; + tn->tn_next[t] = NULL; + tn->tn_member[t] = 0; + mutex_exit(&tl->tl_lock); + return (p); + } + } + + mutex_exit(&tl->tl_lock); + + return (NULL); +} + +boolean_t +txg_list_member(txg_list_t *tl, void *p, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn = (txg_node_t *)((char *)p + tl->tl_offset); + + return (tn->tn_member[t] != 0); +} + +/* + * Walk a txg list -- only safe if you know it's not changing. + */ +void * +txg_list_head(txg_list_t *tl, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn = tl->tl_head[t]; + + return (tn == NULL ? NULL : (char *)tn - tl->tl_offset); +} + +void * +txg_list_next(txg_list_t *tl, void *p, uint64_t txg) +{ + int t = txg & TXG_MASK; + txg_node_t *tn = (txg_node_t *)((char *)p + tl->tl_offset); + + tn = tn->tn_next[t]; + + return (tn == NULL ? NULL : (char *)tn - tl->tl_offset); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(txg_init); +EXPORT_SYMBOL(txg_fini); +EXPORT_SYMBOL(txg_sync_start); +EXPORT_SYMBOL(txg_sync_stop); +EXPORT_SYMBOL(txg_hold_open); +EXPORT_SYMBOL(txg_rele_to_quiesce); +EXPORT_SYMBOL(txg_rele_to_sync); +EXPORT_SYMBOL(txg_register_callbacks); +EXPORT_SYMBOL(txg_delay); +EXPORT_SYMBOL(txg_wait_synced); +EXPORT_SYMBOL(txg_wait_open); +EXPORT_SYMBOL(txg_wait_callbacks); +EXPORT_SYMBOL(txg_stalled); +EXPORT_SYMBOL(txg_sync_waiting); + +module_param(zfs_txg_timeout, int, 0644); +MODULE_PARM_DESC(zfs_txg_timeout, "Max seconds worth of delta per txg"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/uberblock.c +++ linux-4.4.0/zfs/module/zfs/uberblock.c @@ -0,0 +1,62 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include + +int +uberblock_verify(uberblock_t *ub) +{ + if (ub->ub_magic == BSWAP_64((uint64_t)UBERBLOCK_MAGIC)) + byteswap_uint64_array(ub, sizeof (uberblock_t)); + + if (ub->ub_magic != UBERBLOCK_MAGIC) + return (SET_ERROR(EINVAL)); + + return (0); +} + +/* + * Update the uberblock and return TRUE if anything changed in this + * transaction group. + */ +boolean_t +uberblock_update(uberblock_t *ub, vdev_t *rvd, uint64_t txg) +{ + ASSERT(ub->ub_txg < txg); + + /* + * We explicitly do not set ub_version here, so that older versions + * continue to be written with the previous uberblock version. + */ + ub->ub_magic = UBERBLOCK_MAGIC; + ub->ub_txg = txg; + ub->ub_guid_sum = rvd->vdev_guid_sum; + ub->ub_timestamp = gethrestime_sec(); + ub->ub_software_version = SPA_VERSION; + + return (ub->ub_rootbp.blk_birth == txg); +} --- linux-4.4.0.orig/zfs/module/zfs/unique.c +++ linux-4.4.0/zfs/module/zfs/unique.c @@ -0,0 +1,116 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + + + +#include +#include +#include + +static avl_tree_t unique_avl; +static kmutex_t unique_mtx; + +typedef struct unique { + avl_node_t un_link; + uint64_t un_value; +} unique_t; + +#define UNIQUE_MASK ((1ULL << UNIQUE_BITS) - 1) + +static int +unique_compare(const void *a, const void *b) +{ + const unique_t *una = a; + const unique_t *unb = b; + + if (una->un_value < unb->un_value) + return (-1); + if (una->un_value > unb->un_value) + return (+1); + return (0); +} + +void +unique_init(void) +{ + avl_create(&unique_avl, unique_compare, + sizeof (unique_t), offsetof(unique_t, un_link)); + mutex_init(&unique_mtx, NULL, MUTEX_DEFAULT, NULL); +} + +void +unique_fini(void) +{ + avl_destroy(&unique_avl); + mutex_destroy(&unique_mtx); +} + +uint64_t +unique_create(void) +{ + uint64_t value = unique_insert(0); + unique_remove(value); + return (value); +} + +uint64_t +unique_insert(uint64_t value) +{ + avl_index_t idx; + unique_t *un = kmem_alloc(sizeof (unique_t), KM_SLEEP); + + un->un_value = value; + + mutex_enter(&unique_mtx); + while (un->un_value == 0 || un->un_value & ~UNIQUE_MASK || + avl_find(&unique_avl, un, &idx)) { + mutex_exit(&unique_mtx); + (void) random_get_pseudo_bytes((void*)&un->un_value, + sizeof (un->un_value)); + un->un_value &= UNIQUE_MASK; + mutex_enter(&unique_mtx); + } + + avl_insert(&unique_avl, un, idx); + mutex_exit(&unique_mtx); + + return (un->un_value); +} + +void +unique_remove(uint64_t value) +{ + unique_t un_tofind; + unique_t *un; + + un_tofind.un_value = value; + mutex_enter(&unique_mtx); + un = avl_find(&unique_avl, &un_tofind, NULL); + if (un != NULL) { + avl_remove(&unique_avl, un); + kmem_free(un, sizeof (unique_t)); + } + mutex_exit(&unique_mtx); +} --- linux-4.4.0.orig/zfs/module/zfs/vdev.c +++ linux-4.4.0/zfs/module/zfs/vdev.c @@ -0,0 +1,3445 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * When a vdev is added, it will be divided into approximately (but no + * more than) this number of metaslabs. + */ +int metaslabs_per_vdev = 200; + +/* + * Virtual device management. + */ + +static vdev_ops_t *vdev_ops_table[] = { + &vdev_root_ops, + &vdev_raidz_ops, + &vdev_mirror_ops, + &vdev_replacing_ops, + &vdev_spare_ops, + &vdev_disk_ops, + &vdev_file_ops, + &vdev_missing_ops, + &vdev_hole_ops, + NULL +}; + +/* + * Given a vdev type, return the appropriate ops vector. + */ +static vdev_ops_t * +vdev_getops(const char *type) +{ + vdev_ops_t *ops, **opspp; + + for (opspp = vdev_ops_table; (ops = *opspp) != NULL; opspp++) + if (strcmp(ops->vdev_op_type, type) == 0) + break; + + return (ops); +} + +/* + * Default asize function: return the MAX of psize with the asize of + * all children. This is what's used by anything other than RAID-Z. + */ +uint64_t +vdev_default_asize(vdev_t *vd, uint64_t psize) +{ + uint64_t asize = P2ROUNDUP(psize, 1ULL << vd->vdev_top->vdev_ashift); + uint64_t csize; + int c; + + for (c = 0; c < vd->vdev_children; c++) { + csize = vdev_psize_to_asize(vd->vdev_child[c], psize); + asize = MAX(asize, csize); + } + + return (asize); +} + +/* + * Get the minimum allocatable size. We define the allocatable size as + * the vdev's asize rounded to the nearest metaslab. This allows us to + * replace or attach devices which don't have the same physical size but + * can still satisfy the same number of allocations. + */ +uint64_t +vdev_get_min_asize(vdev_t *vd) +{ + vdev_t *pvd = vd->vdev_parent; + + /* + * If our parent is NULL (inactive spare or cache) or is the root, + * just return our own asize. + */ + if (pvd == NULL) + return (vd->vdev_asize); + + /* + * The top-level vdev just returns the allocatable size rounded + * to the nearest metaslab. + */ + if (vd == vd->vdev_top) + return (P2ALIGN(vd->vdev_asize, 1ULL << vd->vdev_ms_shift)); + + /* + * The allocatable space for a raidz vdev is N * sizeof(smallest child), + * so each child must provide at least 1/Nth of its asize. + */ + if (pvd->vdev_ops == &vdev_raidz_ops) + return (pvd->vdev_min_asize / pvd->vdev_children); + + return (pvd->vdev_min_asize); +} + +void +vdev_set_min_asize(vdev_t *vd) +{ + int c; + vd->vdev_min_asize = vdev_get_min_asize(vd); + + for (c = 0; c < vd->vdev_children; c++) + vdev_set_min_asize(vd->vdev_child[c]); +} + +vdev_t * +vdev_lookup_top(spa_t *spa, uint64_t vdev) +{ + vdev_t *rvd = spa->spa_root_vdev; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_READER) != 0); + + if (vdev < rvd->vdev_children) { + ASSERT(rvd->vdev_child[vdev] != NULL); + return (rvd->vdev_child[vdev]); + } + + return (NULL); +} + +vdev_t * +vdev_lookup_by_guid(vdev_t *vd, uint64_t guid) +{ + vdev_t *mvd; + int c; + + if (vd->vdev_guid == guid) + return (vd); + + for (c = 0; c < vd->vdev_children; c++) + if ((mvd = vdev_lookup_by_guid(vd->vdev_child[c], guid)) != + NULL) + return (mvd); + + return (NULL); +} + +static int +vdev_count_leaves_impl(vdev_t *vd) +{ + int n = 0; + int c; + + if (vd->vdev_ops->vdev_op_leaf) + return (1); + + for (c = 0; c < vd->vdev_children; c++) + n += vdev_count_leaves_impl(vd->vdev_child[c]); + + return (n); +} + +int +vdev_count_leaves(spa_t *spa) +{ + return (vdev_count_leaves_impl(spa->spa_root_vdev)); +} + +void +vdev_add_child(vdev_t *pvd, vdev_t *cvd) +{ + size_t oldsize, newsize; + uint64_t id = cvd->vdev_id; + vdev_t **newchild; + + ASSERT(spa_config_held(cvd->vdev_spa, SCL_ALL, RW_WRITER) == SCL_ALL); + ASSERT(cvd->vdev_parent == NULL); + + cvd->vdev_parent = pvd; + + if (pvd == NULL) + return; + + ASSERT(id >= pvd->vdev_children || pvd->vdev_child[id] == NULL); + + oldsize = pvd->vdev_children * sizeof (vdev_t *); + pvd->vdev_children = MAX(pvd->vdev_children, id + 1); + newsize = pvd->vdev_children * sizeof (vdev_t *); + + newchild = kmem_alloc(newsize, KM_SLEEP); + if (pvd->vdev_child != NULL) { + bcopy(pvd->vdev_child, newchild, oldsize); + kmem_free(pvd->vdev_child, oldsize); + } + + pvd->vdev_child = newchild; + pvd->vdev_child[id] = cvd; + + cvd->vdev_top = (pvd->vdev_top ? pvd->vdev_top: cvd); + ASSERT(cvd->vdev_top->vdev_parent->vdev_parent == NULL); + + /* + * Walk up all ancestors to update guid sum. + */ + for (; pvd != NULL; pvd = pvd->vdev_parent) + pvd->vdev_guid_sum += cvd->vdev_guid_sum; +} + +void +vdev_remove_child(vdev_t *pvd, vdev_t *cvd) +{ + int c; + uint_t id = cvd->vdev_id; + + ASSERT(cvd->vdev_parent == pvd); + + if (pvd == NULL) + return; + + ASSERT(id < pvd->vdev_children); + ASSERT(pvd->vdev_child[id] == cvd); + + pvd->vdev_child[id] = NULL; + cvd->vdev_parent = NULL; + + for (c = 0; c < pvd->vdev_children; c++) + if (pvd->vdev_child[c]) + break; + + if (c == pvd->vdev_children) { + kmem_free(pvd->vdev_child, c * sizeof (vdev_t *)); + pvd->vdev_child = NULL; + pvd->vdev_children = 0; + } + + /* + * Walk up all ancestors to update guid sum. + */ + for (; pvd != NULL; pvd = pvd->vdev_parent) + pvd->vdev_guid_sum -= cvd->vdev_guid_sum; +} + +/* + * Remove any holes in the child array. + */ +void +vdev_compact_children(vdev_t *pvd) +{ + vdev_t **newchild, *cvd; + int oldc = pvd->vdev_children; + int newc; + int c; + + ASSERT(spa_config_held(pvd->vdev_spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + for (c = newc = 0; c < oldc; c++) + if (pvd->vdev_child[c]) + newc++; + + newchild = kmem_zalloc(newc * sizeof (vdev_t *), KM_SLEEP); + + for (c = newc = 0; c < oldc; c++) { + if ((cvd = pvd->vdev_child[c]) != NULL) { + newchild[newc] = cvd; + cvd->vdev_id = newc++; + } + } + + kmem_free(pvd->vdev_child, oldc * sizeof (vdev_t *)); + pvd->vdev_child = newchild; + pvd->vdev_children = newc; +} + +/* + * Allocate and minimally initialize a vdev_t. + */ +vdev_t * +vdev_alloc_common(spa_t *spa, uint_t id, uint64_t guid, vdev_ops_t *ops) +{ + vdev_t *vd; + int t; + + vd = kmem_zalloc(sizeof (vdev_t), KM_SLEEP); + + if (spa->spa_root_vdev == NULL) { + ASSERT(ops == &vdev_root_ops); + spa->spa_root_vdev = vd; + spa->spa_load_guid = spa_generate_guid(NULL); + } + + if (guid == 0 && ops != &vdev_hole_ops) { + if (spa->spa_root_vdev == vd) { + /* + * The root vdev's guid will also be the pool guid, + * which must be unique among all pools. + */ + guid = spa_generate_guid(NULL); + } else { + /* + * Any other vdev's guid must be unique within the pool. + */ + guid = spa_generate_guid(spa); + } + ASSERT(!spa_guid_exists(spa_guid(spa), guid)); + } + + vd->vdev_spa = spa; + vd->vdev_id = id; + vd->vdev_guid = guid; + vd->vdev_guid_sum = guid; + vd->vdev_ops = ops; + vd->vdev_state = VDEV_STATE_CLOSED; + vd->vdev_ishole = (ops == &vdev_hole_ops); + + list_link_init(&vd->vdev_config_dirty_node); + list_link_init(&vd->vdev_state_dirty_node); + mutex_init(&vd->vdev_dtl_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&vd->vdev_stat_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&vd->vdev_probe_lock, NULL, MUTEX_DEFAULT, NULL); + for (t = 0; t < DTL_TYPES; t++) { + vd->vdev_dtl[t] = range_tree_create(NULL, NULL, + &vd->vdev_dtl_lock); + } + txg_list_create(&vd->vdev_ms_list, + offsetof(struct metaslab, ms_txg_node)); + txg_list_create(&vd->vdev_dtl_list, + offsetof(struct vdev, vdev_dtl_node)); + vd->vdev_stat.vs_timestamp = gethrtime(); + vdev_queue_init(vd); + vdev_cache_init(vd); + + return (vd); +} + +/* + * Allocate a new vdev. The 'alloctype' is used to control whether we are + * creating a new vdev or loading an existing one - the behavior is slightly + * different for each case. + */ +int +vdev_alloc(spa_t *spa, vdev_t **vdp, nvlist_t *nv, vdev_t *parent, uint_t id, + int alloctype) +{ + vdev_ops_t *ops; + char *type; + uint64_t guid = 0, islog, nparity; + vdev_t *vd; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) != 0) + return (SET_ERROR(EINVAL)); + + if ((ops = vdev_getops(type)) == NULL) + return (SET_ERROR(EINVAL)); + + /* + * If this is a load, get the vdev guid from the nvlist. + * Otherwise, vdev_alloc_common() will generate one for us. + */ + if (alloctype == VDEV_ALLOC_LOAD) { + uint64_t label_id; + + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_ID, &label_id) || + label_id != id) + return (SET_ERROR(EINVAL)); + + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &guid) != 0) + return (SET_ERROR(EINVAL)); + } else if (alloctype == VDEV_ALLOC_SPARE) { + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &guid) != 0) + return (SET_ERROR(EINVAL)); + } else if (alloctype == VDEV_ALLOC_L2CACHE) { + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &guid) != 0) + return (SET_ERROR(EINVAL)); + } else if (alloctype == VDEV_ALLOC_ROOTPOOL) { + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &guid) != 0) + return (SET_ERROR(EINVAL)); + } + + /* + * The first allocated vdev must be of type 'root'. + */ + if (ops != &vdev_root_ops && spa->spa_root_vdev == NULL) + return (SET_ERROR(EINVAL)); + + /* + * Determine whether we're a log vdev. + */ + islog = 0; + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_LOG, &islog); + if (islog && spa_version(spa) < SPA_VERSION_SLOGS) + return (SET_ERROR(ENOTSUP)); + + if (ops == &vdev_hole_ops && spa_version(spa) < SPA_VERSION_HOLES) + return (SET_ERROR(ENOTSUP)); + + /* + * Set the nparity property for RAID-Z vdevs. + */ + nparity = -1ULL; + if (ops == &vdev_raidz_ops) { + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NPARITY, + &nparity) == 0) { + if (nparity == 0 || nparity > VDEV_RAIDZ_MAXPARITY) + return (SET_ERROR(EINVAL)); + /* + * Previous versions could only support 1 or 2 parity + * device. + */ + if (nparity > 1 && + spa_version(spa) < SPA_VERSION_RAIDZ2) + return (SET_ERROR(ENOTSUP)); + if (nparity > 2 && + spa_version(spa) < SPA_VERSION_RAIDZ3) + return (SET_ERROR(ENOTSUP)); + } else { + /* + * We require the parity to be specified for SPAs that + * support multiple parity levels. + */ + if (spa_version(spa) >= SPA_VERSION_RAIDZ2) + return (SET_ERROR(EINVAL)); + /* + * Otherwise, we default to 1 parity device for RAID-Z. + */ + nparity = 1; + } + } else { + nparity = 0; + } + ASSERT(nparity != -1ULL); + + vd = vdev_alloc_common(spa, id, guid, ops); + + vd->vdev_islog = islog; + vd->vdev_nparity = nparity; + + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &vd->vdev_path) == 0) + vd->vdev_path = spa_strdup(vd->vdev_path); + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_DEVID, &vd->vdev_devid) == 0) + vd->vdev_devid = spa_strdup(vd->vdev_devid); + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PHYS_PATH, + &vd->vdev_physpath) == 0) + vd->vdev_physpath = spa_strdup(vd->vdev_physpath); + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_FRU, &vd->vdev_fru) == 0) + vd->vdev_fru = spa_strdup(vd->vdev_fru); + + /* + * Set the whole_disk property. If it's not specified, leave the value + * as -1. + */ + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, + &vd->vdev_wholedisk) != 0) + vd->vdev_wholedisk = -1ULL; + + /* + * Look for the 'not present' flag. This will only be set if the device + * was not present at the time of import. + */ + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, + &vd->vdev_not_present); + + /* + * Get the alignment requirement. + */ + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_ASHIFT, &vd->vdev_ashift); + + /* + * Retrieve the vdev creation time. + */ + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_CREATE_TXG, + &vd->vdev_crtxg); + + /* + * If we're a top-level vdev, try to load the allocation parameters. + */ + if (parent && !parent->vdev_parent && + (alloctype == VDEV_ALLOC_LOAD || alloctype == VDEV_ALLOC_SPLIT)) { + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_METASLAB_ARRAY, + &vd->vdev_ms_array); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_METASLAB_SHIFT, + &vd->vdev_ms_shift); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_ASIZE, + &vd->vdev_asize); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_REMOVING, + &vd->vdev_removing); + } + + if (parent && !parent->vdev_parent && alloctype != VDEV_ALLOC_ATTACH) { + ASSERT(alloctype == VDEV_ALLOC_LOAD || + alloctype == VDEV_ALLOC_ADD || + alloctype == VDEV_ALLOC_SPLIT || + alloctype == VDEV_ALLOC_ROOTPOOL); + vd->vdev_mg = metaslab_group_create(islog ? + spa_log_class(spa) : spa_normal_class(spa), vd); + } + + /* + * If we're a leaf vdev, try to load the DTL object and other state. + */ + if (vd->vdev_ops->vdev_op_leaf && + (alloctype == VDEV_ALLOC_LOAD || alloctype == VDEV_ALLOC_L2CACHE || + alloctype == VDEV_ALLOC_ROOTPOOL)) { + if (alloctype == VDEV_ALLOC_LOAD) { + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_DTL, + &vd->vdev_dtl_object); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_UNSPARE, + &vd->vdev_unspare); + } + + if (alloctype == VDEV_ALLOC_ROOTPOOL) { + uint64_t spare = 0; + + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_SPARE, + &spare) == 0 && spare) + spa_spare_add(vd); + } + + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_OFFLINE, + &vd->vdev_offline); + + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_RESILVER_TXG, + &vd->vdev_resilver_txg); + + /* + * When importing a pool, we want to ignore the persistent fault + * state, as the diagnosis made on another system may not be + * valid in the current context. Local vdevs will + * remain in the faulted state. + */ + if (spa_load_state(spa) == SPA_LOAD_OPEN) { + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_FAULTED, + &vd->vdev_faulted); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_DEGRADED, + &vd->vdev_degraded); + (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_REMOVED, + &vd->vdev_removed); + + if (vd->vdev_faulted || vd->vdev_degraded) { + char *aux; + + vd->vdev_label_aux = + VDEV_AUX_ERR_EXCEEDED; + if (nvlist_lookup_string(nv, + ZPOOL_CONFIG_AUX_STATE, &aux) == 0 && + strcmp(aux, "external") == 0) + vd->vdev_label_aux = VDEV_AUX_EXTERNAL; + } + } + } + + /* + * Add ourselves to the parent's list of children. + */ + vdev_add_child(parent, vd); + + *vdp = vd; + + return (0); +} + +void +vdev_free(vdev_t *vd) +{ + int c, t; + spa_t *spa = vd->vdev_spa; + + /* + * vdev_free() implies closing the vdev first. This is simpler than + * trying to ensure complicated semantics for all callers. + */ + vdev_close(vd); + + ASSERT(!list_link_active(&vd->vdev_config_dirty_node)); + ASSERT(!list_link_active(&vd->vdev_state_dirty_node)); + + /* + * Free all children. + */ + for (c = 0; c < vd->vdev_children; c++) + vdev_free(vd->vdev_child[c]); + + ASSERT(vd->vdev_child == NULL); + ASSERT(vd->vdev_guid_sum == vd->vdev_guid); + + /* + * Discard allocation state. + */ + if (vd->vdev_mg != NULL) { + vdev_metaslab_fini(vd); + metaslab_group_destroy(vd->vdev_mg); + } + + ASSERT0(vd->vdev_stat.vs_space); + ASSERT0(vd->vdev_stat.vs_dspace); + ASSERT0(vd->vdev_stat.vs_alloc); + + /* + * Remove this vdev from its parent's child list. + */ + vdev_remove_child(vd->vdev_parent, vd); + + ASSERT(vd->vdev_parent == NULL); + + /* + * Clean up vdev structure. + */ + vdev_queue_fini(vd); + vdev_cache_fini(vd); + + if (vd->vdev_path) + spa_strfree(vd->vdev_path); + if (vd->vdev_devid) + spa_strfree(vd->vdev_devid); + if (vd->vdev_physpath) + spa_strfree(vd->vdev_physpath); + if (vd->vdev_fru) + spa_strfree(vd->vdev_fru); + + if (vd->vdev_isspare) + spa_spare_remove(vd); + if (vd->vdev_isl2cache) + spa_l2cache_remove(vd); + + txg_list_destroy(&vd->vdev_ms_list); + txg_list_destroy(&vd->vdev_dtl_list); + + mutex_enter(&vd->vdev_dtl_lock); + space_map_close(vd->vdev_dtl_sm); + for (t = 0; t < DTL_TYPES; t++) { + range_tree_vacate(vd->vdev_dtl[t], NULL, NULL); + range_tree_destroy(vd->vdev_dtl[t]); + } + mutex_exit(&vd->vdev_dtl_lock); + + mutex_destroy(&vd->vdev_dtl_lock); + mutex_destroy(&vd->vdev_stat_lock); + mutex_destroy(&vd->vdev_probe_lock); + + if (vd == spa->spa_root_vdev) + spa->spa_root_vdev = NULL; + + kmem_free(vd, sizeof (vdev_t)); +} + +/* + * Transfer top-level vdev state from svd to tvd. + */ +static void +vdev_top_transfer(vdev_t *svd, vdev_t *tvd) +{ + spa_t *spa = svd->vdev_spa; + metaslab_t *msp; + vdev_t *vd; + int t; + + ASSERT(tvd == tvd->vdev_top); + + tvd->vdev_ms_array = svd->vdev_ms_array; + tvd->vdev_ms_shift = svd->vdev_ms_shift; + tvd->vdev_ms_count = svd->vdev_ms_count; + + svd->vdev_ms_array = 0; + svd->vdev_ms_shift = 0; + svd->vdev_ms_count = 0; + + if (tvd->vdev_mg) + ASSERT3P(tvd->vdev_mg, ==, svd->vdev_mg); + tvd->vdev_mg = svd->vdev_mg; + tvd->vdev_ms = svd->vdev_ms; + + svd->vdev_mg = NULL; + svd->vdev_ms = NULL; + + if (tvd->vdev_mg != NULL) + tvd->vdev_mg->mg_vd = tvd; + + tvd->vdev_stat.vs_alloc = svd->vdev_stat.vs_alloc; + tvd->vdev_stat.vs_space = svd->vdev_stat.vs_space; + tvd->vdev_stat.vs_dspace = svd->vdev_stat.vs_dspace; + + svd->vdev_stat.vs_alloc = 0; + svd->vdev_stat.vs_space = 0; + svd->vdev_stat.vs_dspace = 0; + + for (t = 0; t < TXG_SIZE; t++) { + while ((msp = txg_list_remove(&svd->vdev_ms_list, t)) != NULL) + (void) txg_list_add(&tvd->vdev_ms_list, msp, t); + while ((vd = txg_list_remove(&svd->vdev_dtl_list, t)) != NULL) + (void) txg_list_add(&tvd->vdev_dtl_list, vd, t); + if (txg_list_remove_this(&spa->spa_vdev_txg_list, svd, t)) + (void) txg_list_add(&spa->spa_vdev_txg_list, tvd, t); + } + + if (list_link_active(&svd->vdev_config_dirty_node)) { + vdev_config_clean(svd); + vdev_config_dirty(tvd); + } + + if (list_link_active(&svd->vdev_state_dirty_node)) { + vdev_state_clean(svd); + vdev_state_dirty(tvd); + } + + tvd->vdev_deflate_ratio = svd->vdev_deflate_ratio; + svd->vdev_deflate_ratio = 0; + + tvd->vdev_islog = svd->vdev_islog; + svd->vdev_islog = 0; +} + +static void +vdev_top_update(vdev_t *tvd, vdev_t *vd) +{ + int c; + + if (vd == NULL) + return; + + vd->vdev_top = tvd; + + for (c = 0; c < vd->vdev_children; c++) + vdev_top_update(tvd, vd->vdev_child[c]); +} + +/* + * Add a mirror/replacing vdev above an existing vdev. + */ +vdev_t * +vdev_add_parent(vdev_t *cvd, vdev_ops_t *ops) +{ + spa_t *spa = cvd->vdev_spa; + vdev_t *pvd = cvd->vdev_parent; + vdev_t *mvd; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + mvd = vdev_alloc_common(spa, cvd->vdev_id, 0, ops); + + mvd->vdev_asize = cvd->vdev_asize; + mvd->vdev_min_asize = cvd->vdev_min_asize; + mvd->vdev_max_asize = cvd->vdev_max_asize; + mvd->vdev_ashift = cvd->vdev_ashift; + mvd->vdev_state = cvd->vdev_state; + mvd->vdev_crtxg = cvd->vdev_crtxg; + + vdev_remove_child(pvd, cvd); + vdev_add_child(pvd, mvd); + cvd->vdev_id = mvd->vdev_children; + vdev_add_child(mvd, cvd); + vdev_top_update(cvd->vdev_top, cvd->vdev_top); + + if (mvd == mvd->vdev_top) + vdev_top_transfer(cvd, mvd); + + return (mvd); +} + +/* + * Remove a 1-way mirror/replacing vdev from the tree. + */ +void +vdev_remove_parent(vdev_t *cvd) +{ + vdev_t *mvd = cvd->vdev_parent; + vdev_t *pvd = mvd->vdev_parent; + + ASSERT(spa_config_held(cvd->vdev_spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + ASSERT(mvd->vdev_children == 1); + ASSERT(mvd->vdev_ops == &vdev_mirror_ops || + mvd->vdev_ops == &vdev_replacing_ops || + mvd->vdev_ops == &vdev_spare_ops); + cvd->vdev_ashift = mvd->vdev_ashift; + + vdev_remove_child(mvd, cvd); + vdev_remove_child(pvd, mvd); + + /* + * If cvd will replace mvd as a top-level vdev, preserve mvd's guid. + * Otherwise, we could have detached an offline device, and when we + * go to import the pool we'll think we have two top-level vdevs, + * instead of a different version of the same top-level vdev. + */ + if (mvd->vdev_top == mvd) { + uint64_t guid_delta = mvd->vdev_guid - cvd->vdev_guid; + cvd->vdev_orig_guid = cvd->vdev_guid; + cvd->vdev_guid += guid_delta; + cvd->vdev_guid_sum += guid_delta; + + /* + * If pool not set for autoexpand, we need to also preserve + * mvd's asize to prevent automatic expansion of cvd. + * Otherwise if we are adjusting the mirror by attaching and + * detaching children of non-uniform sizes, the mirror could + * autoexpand, unexpectedly requiring larger devices to + * re-establish the mirror. + */ + if (!cvd->vdev_spa->spa_autoexpand) + cvd->vdev_asize = mvd->vdev_asize; + } + cvd->vdev_id = mvd->vdev_id; + vdev_add_child(pvd, cvd); + vdev_top_update(cvd->vdev_top, cvd->vdev_top); + + if (cvd == cvd->vdev_top) + vdev_top_transfer(mvd, cvd); + + ASSERT(mvd->vdev_children == 0); + vdev_free(mvd); +} + +int +vdev_metaslab_init(vdev_t *vd, uint64_t txg) +{ + spa_t *spa = vd->vdev_spa; + objset_t *mos = spa->spa_meta_objset; + uint64_t m; + uint64_t oldc = vd->vdev_ms_count; + uint64_t newc = vd->vdev_asize >> vd->vdev_ms_shift; + metaslab_t **mspp; + int error; + + ASSERT(txg == 0 || spa_config_held(spa, SCL_ALLOC, RW_WRITER)); + + /* + * This vdev is not being allocated from yet or is a hole. + */ + if (vd->vdev_ms_shift == 0) + return (0); + + ASSERT(!vd->vdev_ishole); + + /* + * Compute the raidz-deflation ratio. Note, we hard-code + * in 128k (1 << 17) because it is the "typical" blocksize. + * Even though SPA_MAXBLOCKSIZE changed, this algorithm can not change, + * otherwise it would inconsistently account for existing bp's. + */ + vd->vdev_deflate_ratio = (1 << 17) / + (vdev_psize_to_asize(vd, 1 << 17) >> SPA_MINBLOCKSHIFT); + + ASSERT(oldc <= newc); + + mspp = kmem_zalloc(newc * sizeof (*mspp), KM_SLEEP); + + if (oldc != 0) { + bcopy(vd->vdev_ms, mspp, oldc * sizeof (*mspp)); + kmem_free(vd->vdev_ms, oldc * sizeof (*mspp)); + } + + vd->vdev_ms = mspp; + vd->vdev_ms_count = newc; + + for (m = oldc; m < newc; m++) { + uint64_t object = 0; + + if (txg == 0) { + error = dmu_read(mos, vd->vdev_ms_array, + m * sizeof (uint64_t), sizeof (uint64_t), &object, + DMU_READ_PREFETCH); + if (error) + return (error); + } + + error = metaslab_init(vd->vdev_mg, m, object, txg, + &(vd->vdev_ms[m])); + if (error) + return (error); + } + + if (txg == 0) + spa_config_enter(spa, SCL_ALLOC, FTAG, RW_WRITER); + + /* + * If the vdev is being removed we don't activate + * the metaslabs since we want to ensure that no new + * allocations are performed on this device. + */ + if (oldc == 0 && !vd->vdev_removing) + metaslab_group_activate(vd->vdev_mg); + + if (txg == 0) + spa_config_exit(spa, SCL_ALLOC, FTAG); + + return (0); +} + +void +vdev_metaslab_fini(vdev_t *vd) +{ + uint64_t m; + uint64_t count = vd->vdev_ms_count; + + if (vd->vdev_ms != NULL) { + metaslab_group_passivate(vd->vdev_mg); + for (m = 0; m < count; m++) { + metaslab_t *msp = vd->vdev_ms[m]; + + if (msp != NULL) + metaslab_fini(msp); + } + kmem_free(vd->vdev_ms, count * sizeof (metaslab_t *)); + vd->vdev_ms = NULL; + } + + ASSERT3U(vd->vdev_pending_fastwrite, ==, 0); +} + +typedef struct vdev_probe_stats { + boolean_t vps_readable; + boolean_t vps_writeable; + int vps_flags; +} vdev_probe_stats_t; + +static void +vdev_probe_done(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + vdev_t *vd = zio->io_vd; + vdev_probe_stats_t *vps = zio->io_private; + + ASSERT(vd->vdev_probe_zio != NULL); + + if (zio->io_type == ZIO_TYPE_READ) { + if (zio->io_error == 0) + vps->vps_readable = 1; + if (zio->io_error == 0 && spa_writeable(spa)) { + zio_nowait(zio_write_phys(vd->vdev_probe_zio, vd, + zio->io_offset, zio->io_size, zio->io_data, + ZIO_CHECKSUM_OFF, vdev_probe_done, vps, + ZIO_PRIORITY_SYNC_WRITE, vps->vps_flags, B_TRUE)); + } else { + zio_buf_free(zio->io_data, zio->io_size); + } + } else if (zio->io_type == ZIO_TYPE_WRITE) { + if (zio->io_error == 0) + vps->vps_writeable = 1; + zio_buf_free(zio->io_data, zio->io_size); + } else if (zio->io_type == ZIO_TYPE_NULL) { + zio_t *pio; + + vd->vdev_cant_read |= !vps->vps_readable; + vd->vdev_cant_write |= !vps->vps_writeable; + + if (vdev_readable(vd) && + (vdev_writeable(vd) || !spa_writeable(spa))) { + zio->io_error = 0; + } else { + ASSERT(zio->io_error != 0); + zfs_ereport_post(FM_EREPORT_ZFS_PROBE_FAILURE, + spa, vd, NULL, 0, 0); + zio->io_error = SET_ERROR(ENXIO); + } + + mutex_enter(&vd->vdev_probe_lock); + ASSERT(vd->vdev_probe_zio == zio); + vd->vdev_probe_zio = NULL; + mutex_exit(&vd->vdev_probe_lock); + + while ((pio = zio_walk_parents(zio)) != NULL) + if (!vdev_accessible(vd, pio)) + pio->io_error = SET_ERROR(ENXIO); + + kmem_free(vps, sizeof (*vps)); + } +} + +/* + * Determine whether this device is accessible. + * + * Read and write to several known locations: the pad regions of each + * vdev label but the first, which we leave alone in case it contains + * a VTOC. + */ +zio_t * +vdev_probe(vdev_t *vd, zio_t *zio) +{ + spa_t *spa = vd->vdev_spa; + vdev_probe_stats_t *vps = NULL; + zio_t *pio; + int l; + + ASSERT(vd->vdev_ops->vdev_op_leaf); + + /* + * Don't probe the probe. + */ + if (zio && (zio->io_flags & ZIO_FLAG_PROBE)) + return (NULL); + + /* + * To prevent 'probe storms' when a device fails, we create + * just one probe i/o at a time. All zios that want to probe + * this vdev will become parents of the probe io. + */ + mutex_enter(&vd->vdev_probe_lock); + + if ((pio = vd->vdev_probe_zio) == NULL) { + vps = kmem_zalloc(sizeof (*vps), KM_SLEEP); + + vps->vps_flags = ZIO_FLAG_CANFAIL | ZIO_FLAG_PROBE | + ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_AGGREGATE | + ZIO_FLAG_TRYHARD; + + if (spa_config_held(spa, SCL_ZIO, RW_WRITER)) { + /* + * vdev_cant_read and vdev_cant_write can only + * transition from TRUE to FALSE when we have the + * SCL_ZIO lock as writer; otherwise they can only + * transition from FALSE to TRUE. This ensures that + * any zio looking at these values can assume that + * failures persist for the life of the I/O. That's + * important because when a device has intermittent + * connectivity problems, we want to ensure that + * they're ascribed to the device (ENXIO) and not + * the zio (EIO). + * + * Since we hold SCL_ZIO as writer here, clear both + * values so the probe can reevaluate from first + * principles. + */ + vps->vps_flags |= ZIO_FLAG_CONFIG_WRITER; + vd->vdev_cant_read = B_FALSE; + vd->vdev_cant_write = B_FALSE; + } + + vd->vdev_probe_zio = pio = zio_null(NULL, spa, vd, + vdev_probe_done, vps, + vps->vps_flags | ZIO_FLAG_DONT_PROPAGATE); + + /* + * We can't change the vdev state in this context, so we + * kick off an async task to do it on our behalf. + */ + if (zio != NULL) { + vd->vdev_probe_wanted = B_TRUE; + spa_async_request(spa, SPA_ASYNC_PROBE); + } + } + + if (zio != NULL) + zio_add_child(zio, pio); + + mutex_exit(&vd->vdev_probe_lock); + + if (vps == NULL) { + ASSERT(zio != NULL); + return (NULL); + } + + for (l = 1; l < VDEV_LABELS; l++) { + zio_nowait(zio_read_phys(pio, vd, + vdev_label_offset(vd->vdev_psize, l, + offsetof(vdev_label_t, vl_pad2)), + VDEV_PAD_SIZE, zio_buf_alloc(VDEV_PAD_SIZE), + ZIO_CHECKSUM_OFF, vdev_probe_done, vps, + ZIO_PRIORITY_SYNC_READ, vps->vps_flags, B_TRUE)); + } + + if (zio == NULL) + return (pio); + + zio_nowait(pio); + return (NULL); +} + +static void +vdev_open_child(void *arg) +{ + vdev_t *vd = arg; + + vd->vdev_open_thread = curthread; + vd->vdev_open_error = vdev_open(vd); + vd->vdev_open_thread = NULL; + vd->vdev_parent->vdev_nonrot &= vd->vdev_nonrot; +} + +static boolean_t +vdev_uses_zvols(vdev_t *vd) +{ + int c; + +#ifdef _KERNEL + if (zvol_is_zvol(vd->vdev_path)) + return (B_TRUE); +#endif + + for (c = 0; c < vd->vdev_children; c++) + if (vdev_uses_zvols(vd->vdev_child[c])) + return (B_TRUE); + + return (B_FALSE); +} + +void +vdev_open_children(vdev_t *vd) +{ + taskq_t *tq; + int children = vd->vdev_children; + int c; + + vd->vdev_nonrot = B_TRUE; + + /* + * in order to handle pools on top of zvols, do the opens + * in a single thread so that the same thread holds the + * spa_namespace_lock + */ + if (vdev_uses_zvols(vd)) { + for (c = 0; c < children; c++) { + vd->vdev_child[c]->vdev_open_error = + vdev_open(vd->vdev_child[c]); + vd->vdev_nonrot &= vd->vdev_child[c]->vdev_nonrot; + } + return; + } + tq = taskq_create("vdev_open", children, minclsyspri, + children, children, TASKQ_PREPOPULATE); + + for (c = 0; c < children; c++) + VERIFY(taskq_dispatch(tq, vdev_open_child, vd->vdev_child[c], + TQ_SLEEP) != 0); + + taskq_destroy(tq); + + for (c = 0; c < children; c++) + vd->vdev_nonrot &= vd->vdev_child[c]->vdev_nonrot; +} + +/* + * Prepare a virtual device for access. + */ +int +vdev_open(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + int error; + uint64_t osize = 0; + uint64_t max_osize = 0; + uint64_t asize, max_asize, psize; + uint64_t ashift = 0; + int c; + + ASSERT(vd->vdev_open_thread == curthread || + spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + ASSERT(vd->vdev_state == VDEV_STATE_CLOSED || + vd->vdev_state == VDEV_STATE_CANT_OPEN || + vd->vdev_state == VDEV_STATE_OFFLINE); + + vd->vdev_stat.vs_aux = VDEV_AUX_NONE; + vd->vdev_cant_read = B_FALSE; + vd->vdev_cant_write = B_FALSE; + vd->vdev_min_asize = vdev_get_min_asize(vd); + + /* + * If this vdev is not removed, check its fault status. If it's + * faulted, bail out of the open. + */ + if (!vd->vdev_removed && vd->vdev_faulted) { + ASSERT(vd->vdev_children == 0); + ASSERT(vd->vdev_label_aux == VDEV_AUX_ERR_EXCEEDED || + vd->vdev_label_aux == VDEV_AUX_EXTERNAL); + vdev_set_state(vd, B_TRUE, VDEV_STATE_FAULTED, + vd->vdev_label_aux); + return (SET_ERROR(ENXIO)); + } else if (vd->vdev_offline) { + ASSERT(vd->vdev_children == 0); + vdev_set_state(vd, B_TRUE, VDEV_STATE_OFFLINE, VDEV_AUX_NONE); + return (SET_ERROR(ENXIO)); + } + + error = vd->vdev_ops->vdev_op_open(vd, &osize, &max_osize, &ashift); + + /* + * Reset the vdev_reopening flag so that we actually close + * the vdev on error. + */ + vd->vdev_reopening = B_FALSE; + if (zio_injection_enabled && error == 0) + error = zio_handle_device_injection(vd, NULL, ENXIO); + + if (error) { + if (vd->vdev_removed && + vd->vdev_stat.vs_aux != VDEV_AUX_OPEN_FAILED) + vd->vdev_removed = B_FALSE; + + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + vd->vdev_stat.vs_aux); + return (error); + } + + vd->vdev_removed = B_FALSE; + + /* + * Recheck the faulted flag now that we have confirmed that + * the vdev is accessible. If we're faulted, bail. + */ + if (vd->vdev_faulted) { + ASSERT(vd->vdev_children == 0); + ASSERT(vd->vdev_label_aux == VDEV_AUX_ERR_EXCEEDED || + vd->vdev_label_aux == VDEV_AUX_EXTERNAL); + vdev_set_state(vd, B_TRUE, VDEV_STATE_FAULTED, + vd->vdev_label_aux); + return (SET_ERROR(ENXIO)); + } + + if (vd->vdev_degraded) { + ASSERT(vd->vdev_children == 0); + vdev_set_state(vd, B_TRUE, VDEV_STATE_DEGRADED, + VDEV_AUX_ERR_EXCEEDED); + } else { + vdev_set_state(vd, B_TRUE, VDEV_STATE_HEALTHY, 0); + } + + /* + * For hole or missing vdevs we just return success. + */ + if (vd->vdev_ishole || vd->vdev_ops == &vdev_missing_ops) + return (0); + + for (c = 0; c < vd->vdev_children; c++) { + if (vd->vdev_child[c]->vdev_state != VDEV_STATE_HEALTHY) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_DEGRADED, + VDEV_AUX_NONE); + break; + } + } + + osize = P2ALIGN(osize, (uint64_t)sizeof (vdev_label_t)); + max_osize = P2ALIGN(max_osize, (uint64_t)sizeof (vdev_label_t)); + + if (vd->vdev_children == 0) { + if (osize < SPA_MINDEVSIZE) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_TOO_SMALL); + return (SET_ERROR(EOVERFLOW)); + } + psize = osize; + asize = osize - (VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE); + max_asize = max_osize - (VDEV_LABEL_START_SIZE + + VDEV_LABEL_END_SIZE); + } else { + if (vd->vdev_parent != NULL && osize < SPA_MINDEVSIZE - + (VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE)) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_TOO_SMALL); + return (SET_ERROR(EOVERFLOW)); + } + psize = 0; + asize = osize; + max_asize = max_osize; + } + + vd->vdev_psize = psize; + + /* + * Make sure the allocatable size hasn't shrunk. + */ + if (asize < vd->vdev_min_asize) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_BAD_LABEL); + return (SET_ERROR(EINVAL)); + } + + if (vd->vdev_asize == 0) { + /* + * This is the first-ever open, so use the computed values. + * For compatibility, a different ashift can be requested. + */ + vd->vdev_asize = asize; + vd->vdev_max_asize = max_asize; + if (vd->vdev_ashift == 0) + vd->vdev_ashift = ashift; + } else { + /* + * Detect if the alignment requirement has increased. + * We don't want to make the pool unavailable, just + * post an event instead. + */ + if (ashift > vd->vdev_top->vdev_ashift && + vd->vdev_ops->vdev_op_leaf) { + zfs_ereport_post(FM_EREPORT_ZFS_DEVICE_BAD_ASHIFT, + spa, vd, NULL, 0, 0); + } + + vd->vdev_max_asize = max_asize; + } + + /* + * If all children are healthy and the asize has increased, + * then we've experienced dynamic LUN growth. If automatic + * expansion is enabled then use the additional space. + */ + if (vd->vdev_state == VDEV_STATE_HEALTHY && asize > vd->vdev_asize && + (vd->vdev_expanding || spa->spa_autoexpand)) + vd->vdev_asize = asize; + + vdev_set_min_asize(vd); + + /* + * Ensure we can issue some IO before declaring the + * vdev open for business. + */ + if (vd->vdev_ops->vdev_op_leaf && + (error = zio_wait(vdev_probe(vd, NULL))) != 0) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_FAULTED, + VDEV_AUX_ERR_EXCEEDED); + return (error); + } + + /* + * Track the min and max ashift values for normal data devices. + */ + if (vd->vdev_top == vd && vd->vdev_ashift != 0 && + !vd->vdev_islog && vd->vdev_aux == NULL) { + if (vd->vdev_ashift > spa->spa_max_ashift) + spa->spa_max_ashift = vd->vdev_ashift; + if (vd->vdev_ashift < spa->spa_min_ashift) + spa->spa_min_ashift = vd->vdev_ashift; + } + + /* + * If a leaf vdev has a DTL, and seems healthy, then kick off a + * resilver. But don't do this if we are doing a reopen for a scrub, + * since this would just restart the scrub we are already doing. + */ + if (vd->vdev_ops->vdev_op_leaf && !spa->spa_scrub_reopen && + vdev_resilver_needed(vd, NULL, NULL)) + spa_async_request(spa, SPA_ASYNC_RESILVER); + + return (0); +} + +/* + * Called once the vdevs are all opened, this routine validates the label + * contents. This needs to be done before vdev_load() so that we don't + * inadvertently do repair I/Os to the wrong device. + * + * If 'strict' is false ignore the spa guid check. This is necessary because + * if the machine crashed during a re-guid the new guid might have been written + * to all of the vdev labels, but not the cached config. The strict check + * will be performed when the pool is opened again using the mos config. + * + * This function will only return failure if one of the vdevs indicates that it + * has since been destroyed or exported. This is only possible if + * /etc/zfs/zpool.cache was readonly at the time. Otherwise, the vdev state + * will be updated but the function will return 0. + */ +int +vdev_validate(vdev_t *vd, boolean_t strict) +{ + spa_t *spa = vd->vdev_spa; + nvlist_t *label; + uint64_t guid = 0, top_guid; + uint64_t state; + int c; + + for (c = 0; c < vd->vdev_children; c++) + if (vdev_validate(vd->vdev_child[c], strict) != 0) + return (SET_ERROR(EBADF)); + + /* + * If the device has already failed, or was marked offline, don't do + * any further validation. Otherwise, label I/O will fail and we will + * overwrite the previous state. + */ + if (vd->vdev_ops->vdev_op_leaf && vdev_readable(vd)) { + uint64_t aux_guid = 0; + nvlist_t *nvl; + uint64_t txg = spa_last_synced_txg(spa) != 0 ? + spa_last_synced_txg(spa) : -1ULL; + + if ((label = vdev_label_read_config(vd, txg)) == NULL) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_BAD_LABEL); + return (0); + } + + /* + * Determine if this vdev has been split off into another + * pool. If so, then refuse to open it. + */ + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_SPLIT_GUID, + &aux_guid) == 0 && aux_guid == spa_guid(spa)) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_SPLIT_POOL); + nvlist_free(label); + return (0); + } + + if (strict && (nvlist_lookup_uint64(label, + ZPOOL_CONFIG_POOL_GUID, &guid) != 0 || + guid != spa_guid(spa))) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + nvlist_free(label); + return (0); + } + + if (nvlist_lookup_nvlist(label, ZPOOL_CONFIG_VDEV_TREE, &nvl) + != 0 || nvlist_lookup_uint64(nvl, ZPOOL_CONFIG_ORIG_GUID, + &aux_guid) != 0) + aux_guid = 0; + + /* + * If this vdev just became a top-level vdev because its + * sibling was detached, it will have adopted the parent's + * vdev guid -- but the label may or may not be on disk yet. + * Fortunately, either version of the label will have the + * same top guid, so if we're a top-level vdev, we can + * safely compare to that instead. + * + * If we split this vdev off instead, then we also check the + * original pool's guid. We don't want to consider the vdev + * corrupt if it is partway through a split operation. + */ + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, + &guid) != 0 || + nvlist_lookup_uint64(label, ZPOOL_CONFIG_TOP_GUID, + &top_guid) != 0 || + ((vd->vdev_guid != guid && vd->vdev_guid != aux_guid) && + (vd->vdev_guid != top_guid || vd != vd->vdev_top))) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + nvlist_free(label); + return (0); + } + + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_STATE, + &state) != 0) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + nvlist_free(label); + return (0); + } + + nvlist_free(label); + + /* + * If this is a verbatim import, no need to check the + * state of the pool. + */ + if (!(spa->spa_import_flags & ZFS_IMPORT_VERBATIM) && + spa_load_state(spa) == SPA_LOAD_OPEN && + state != POOL_STATE_ACTIVE) + return (SET_ERROR(EBADF)); + + /* + * If we were able to open and validate a vdev that was + * previously marked permanently unavailable, clear that state + * now. + */ + if (vd->vdev_not_present) + vd->vdev_not_present = 0; + } + + return (0); +} + +/* + * Close a virtual device. + */ +void +vdev_close(vdev_t *vd) +{ + vdev_t *pvd = vd->vdev_parent; + ASSERTV(spa_t *spa = vd->vdev_spa); + + ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + + /* + * If our parent is reopening, then we are as well, unless we are + * going offline. + */ + if (pvd != NULL && pvd->vdev_reopening) + vd->vdev_reopening = (pvd->vdev_reopening && !vd->vdev_offline); + + vd->vdev_ops->vdev_op_close(vd); + + vdev_cache_purge(vd); + + /* + * We record the previous state before we close it, so that if we are + * doing a reopen(), we don't generate FMA ereports if we notice that + * it's still faulted. + */ + vd->vdev_prevstate = vd->vdev_state; + + if (vd->vdev_offline) + vd->vdev_state = VDEV_STATE_OFFLINE; + else + vd->vdev_state = VDEV_STATE_CLOSED; + vd->vdev_stat.vs_aux = VDEV_AUX_NONE; +} + +void +vdev_hold(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + int c; + + ASSERT(spa_is_root(spa)); + if (spa->spa_state == POOL_STATE_UNINITIALIZED) + return; + + for (c = 0; c < vd->vdev_children; c++) + vdev_hold(vd->vdev_child[c]); + + if (vd->vdev_ops->vdev_op_leaf) + vd->vdev_ops->vdev_op_hold(vd); +} + +void +vdev_rele(vdev_t *vd) +{ + int c; + + ASSERT(spa_is_root(vd->vdev_spa)); + for (c = 0; c < vd->vdev_children; c++) + vdev_rele(vd->vdev_child[c]); + + if (vd->vdev_ops->vdev_op_leaf) + vd->vdev_ops->vdev_op_rele(vd); +} + +/* + * Reopen all interior vdevs and any unopened leaves. We don't actually + * reopen leaf vdevs which had previously been opened as they might deadlock + * on the spa_config_lock. Instead we only obtain the leaf's physical size. + * If the leaf has never been opened then open it, as usual. + */ +void +vdev_reopen(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + + ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + + /* set the reopening flag unless we're taking the vdev offline */ + vd->vdev_reopening = !vd->vdev_offline; + vdev_close(vd); + (void) vdev_open(vd); + + /* + * Call vdev_validate() here to make sure we have the same device. + * Otherwise, a device with an invalid label could be successfully + * opened in response to vdev_reopen(). + */ + if (vd->vdev_aux) { + (void) vdev_validate_aux(vd); + if (vdev_readable(vd) && vdev_writeable(vd) && + vd->vdev_aux == &spa->spa_l2cache && + !l2arc_vdev_present(vd)) + l2arc_add_vdev(spa, vd); + } else { + (void) vdev_validate(vd, B_TRUE); + } + + /* + * Reassess parent vdev's health. + */ + vdev_propagate_state(vd); +} + +int +vdev_create(vdev_t *vd, uint64_t txg, boolean_t isreplacing) +{ + int error; + + /* + * Normally, partial opens (e.g. of a mirror) are allowed. + * For a create, however, we want to fail the request if + * there are any components we can't open. + */ + error = vdev_open(vd); + + if (error || vd->vdev_state != VDEV_STATE_HEALTHY) { + vdev_close(vd); + return (error ? error : ENXIO); + } + + /* + * Recursively load DTLs and initialize all labels. + */ + if ((error = vdev_dtl_load(vd)) != 0 || + (error = vdev_label_init(vd, txg, isreplacing ? + VDEV_LABEL_REPLACE : VDEV_LABEL_CREATE)) != 0) { + vdev_close(vd); + return (error); + } + + return (0); +} + +void +vdev_metaslab_set_size(vdev_t *vd) +{ + /* + * Aim for roughly metaslabs_per_vdev (default 200) metaslabs per vdev. + */ + vd->vdev_ms_shift = highbit64(vd->vdev_asize / metaslabs_per_vdev); + vd->vdev_ms_shift = MAX(vd->vdev_ms_shift, SPA_MAXBLOCKSHIFT); +} + +void +vdev_dirty(vdev_t *vd, int flags, void *arg, uint64_t txg) +{ + ASSERT(vd == vd->vdev_top); + ASSERT(!vd->vdev_ishole); + ASSERT(ISP2(flags)); + ASSERT(spa_writeable(vd->vdev_spa)); + + if (flags & VDD_METASLAB) + (void) txg_list_add(&vd->vdev_ms_list, arg, txg); + + if (flags & VDD_DTL) + (void) txg_list_add(&vd->vdev_dtl_list, arg, txg); + + (void) txg_list_add(&vd->vdev_spa->spa_vdev_txg_list, vd, txg); +} + +void +vdev_dirty_leaves(vdev_t *vd, int flags, uint64_t txg) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_dirty_leaves(vd->vdev_child[c], flags, txg); + + if (vd->vdev_ops->vdev_op_leaf) + vdev_dirty(vd->vdev_top, flags, vd, txg); +} + +/* + * DTLs. + * + * A vdev's DTL (dirty time log) is the set of transaction groups for which + * the vdev has less than perfect replication. There are four kinds of DTL: + * + * DTL_MISSING: txgs for which the vdev has no valid copies of the data + * + * DTL_PARTIAL: txgs for which data is available, but not fully replicated + * + * DTL_SCRUB: the txgs that could not be repaired by the last scrub; upon + * scrub completion, DTL_SCRUB replaces DTL_MISSING in the range of + * txgs that was scrubbed. + * + * DTL_OUTAGE: txgs which cannot currently be read, whether due to + * persistent errors or just some device being offline. + * Unlike the other three, the DTL_OUTAGE map is not generally + * maintained; it's only computed when needed, typically to + * determine whether a device can be detached. + * + * For leaf vdevs, DTL_MISSING and DTL_PARTIAL are identical: the device + * either has the data or it doesn't. + * + * For interior vdevs such as mirror and RAID-Z the picture is more complex. + * A vdev's DTL_PARTIAL is the union of its children's DTL_PARTIALs, because + * if any child is less than fully replicated, then so is its parent. + * A vdev's DTL_MISSING is a modified union of its children's DTL_MISSINGs, + * comprising only those txgs which appear in 'maxfaults' or more children; + * those are the txgs we don't have enough replication to read. For example, + * double-parity RAID-Z can tolerate up to two missing devices (maxfaults == 2); + * thus, its DTL_MISSING consists of the set of txgs that appear in more than + * two child DTL_MISSING maps. + * + * It should be clear from the above that to compute the DTLs and outage maps + * for all vdevs, it suffices to know just the leaf vdevs' DTL_MISSING maps. + * Therefore, that is all we keep on disk. When loading the pool, or after + * a configuration change, we generate all other DTLs from first principles. + */ +void +vdev_dtl_dirty(vdev_t *vd, vdev_dtl_type_t t, uint64_t txg, uint64_t size) +{ + range_tree_t *rt = vd->vdev_dtl[t]; + + ASSERT(t < DTL_TYPES); + ASSERT(vd != vd->vdev_spa->spa_root_vdev); + ASSERT(spa_writeable(vd->vdev_spa)); + + mutex_enter(rt->rt_lock); + if (!range_tree_contains(rt, txg, size)) + range_tree_add(rt, txg, size); + mutex_exit(rt->rt_lock); +} + +boolean_t +vdev_dtl_contains(vdev_t *vd, vdev_dtl_type_t t, uint64_t txg, uint64_t size) +{ + range_tree_t *rt = vd->vdev_dtl[t]; + boolean_t dirty = B_FALSE; + + ASSERT(t < DTL_TYPES); + ASSERT(vd != vd->vdev_spa->spa_root_vdev); + + mutex_enter(rt->rt_lock); + if (range_tree_space(rt) != 0) + dirty = range_tree_contains(rt, txg, size); + mutex_exit(rt->rt_lock); + + return (dirty); +} + +boolean_t +vdev_dtl_empty(vdev_t *vd, vdev_dtl_type_t t) +{ + range_tree_t *rt = vd->vdev_dtl[t]; + boolean_t empty; + + mutex_enter(rt->rt_lock); + empty = (range_tree_space(rt) == 0); + mutex_exit(rt->rt_lock); + + return (empty); +} + +/* + * Returns the lowest txg in the DTL range. + */ +static uint64_t +vdev_dtl_min(vdev_t *vd) +{ + range_seg_t *rs; + + ASSERT(MUTEX_HELD(&vd->vdev_dtl_lock)); + ASSERT3U(range_tree_space(vd->vdev_dtl[DTL_MISSING]), !=, 0); + ASSERT0(vd->vdev_children); + + rs = avl_first(&vd->vdev_dtl[DTL_MISSING]->rt_root); + return (rs->rs_start - 1); +} + +/* + * Returns the highest txg in the DTL. + */ +static uint64_t +vdev_dtl_max(vdev_t *vd) +{ + range_seg_t *rs; + + ASSERT(MUTEX_HELD(&vd->vdev_dtl_lock)); + ASSERT3U(range_tree_space(vd->vdev_dtl[DTL_MISSING]), !=, 0); + ASSERT0(vd->vdev_children); + + rs = avl_last(&vd->vdev_dtl[DTL_MISSING]->rt_root); + return (rs->rs_end); +} + +/* + * Determine if a resilvering vdev should remove any DTL entries from + * its range. If the vdev was resilvering for the entire duration of the + * scan then it should excise that range from its DTLs. Otherwise, this + * vdev is considered partially resilvered and should leave its DTL + * entries intact. The comment in vdev_dtl_reassess() describes how we + * excise the DTLs. + */ +static boolean_t +vdev_dtl_should_excise(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + dsl_scan_t *scn = spa->spa_dsl_pool->dp_scan; + + ASSERT0(scn->scn_phys.scn_errors); + ASSERT0(vd->vdev_children); + + if (vd->vdev_resilver_txg == 0 || + range_tree_space(vd->vdev_dtl[DTL_MISSING]) == 0) + return (B_TRUE); + + /* + * When a resilver is initiated the scan will assign the scn_max_txg + * value to the highest txg value that exists in all DTLs. If this + * device's max DTL is not part of this scan (i.e. it is not in + * the range (scn_min_txg, scn_max_txg] then it is not eligible + * for excision. + */ + if (vdev_dtl_max(vd) <= scn->scn_phys.scn_max_txg) { + ASSERT3U(scn->scn_phys.scn_min_txg, <=, vdev_dtl_min(vd)); + ASSERT3U(scn->scn_phys.scn_min_txg, <, vd->vdev_resilver_txg); + ASSERT3U(vd->vdev_resilver_txg, <=, scn->scn_phys.scn_max_txg); + return (B_TRUE); + } + return (B_FALSE); +} + +/* + * Reassess DTLs after a config change or scrub completion. + */ +void +vdev_dtl_reassess(vdev_t *vd, uint64_t txg, uint64_t scrub_txg, int scrub_done) +{ + spa_t *spa = vd->vdev_spa; + avl_tree_t reftree; + int c, t, minref; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_READER) != 0); + + for (c = 0; c < vd->vdev_children; c++) + vdev_dtl_reassess(vd->vdev_child[c], txg, + scrub_txg, scrub_done); + + if (vd == spa->spa_root_vdev || vd->vdev_ishole || vd->vdev_aux) + return; + + if (vd->vdev_ops->vdev_op_leaf) { + dsl_scan_t *scn = spa->spa_dsl_pool->dp_scan; + + mutex_enter(&vd->vdev_dtl_lock); + + /* + * If we've completed a scan cleanly then determine + * if this vdev should remove any DTLs. We only want to + * excise regions on vdevs that were available during + * the entire duration of this scan. + */ + if (scrub_txg != 0 && + (spa->spa_scrub_started || + (scn != NULL && scn->scn_phys.scn_errors == 0)) && + vdev_dtl_should_excise(vd)) { + /* + * We completed a scrub up to scrub_txg. If we + * did it without rebooting, then the scrub dtl + * will be valid, so excise the old region and + * fold in the scrub dtl. Otherwise, leave the + * dtl as-is if there was an error. + * + * There's little trick here: to excise the beginning + * of the DTL_MISSING map, we put it into a reference + * tree and then add a segment with refcnt -1 that + * covers the range [0, scrub_txg). This means + * that each txg in that range has refcnt -1 or 0. + * We then add DTL_SCRUB with a refcnt of 2, so that + * entries in the range [0, scrub_txg) will have a + * positive refcnt -- either 1 or 2. We then convert + * the reference tree into the new DTL_MISSING map. + */ + space_reftree_create(&reftree); + space_reftree_add_map(&reftree, + vd->vdev_dtl[DTL_MISSING], 1); + space_reftree_add_seg(&reftree, 0, scrub_txg, -1); + space_reftree_add_map(&reftree, + vd->vdev_dtl[DTL_SCRUB], 2); + space_reftree_generate_map(&reftree, + vd->vdev_dtl[DTL_MISSING], 1); + space_reftree_destroy(&reftree); + } + range_tree_vacate(vd->vdev_dtl[DTL_PARTIAL], NULL, NULL); + range_tree_walk(vd->vdev_dtl[DTL_MISSING], + range_tree_add, vd->vdev_dtl[DTL_PARTIAL]); + if (scrub_done) + range_tree_vacate(vd->vdev_dtl[DTL_SCRUB], NULL, NULL); + range_tree_vacate(vd->vdev_dtl[DTL_OUTAGE], NULL, NULL); + if (!vdev_readable(vd)) + range_tree_add(vd->vdev_dtl[DTL_OUTAGE], 0, -1ULL); + else + range_tree_walk(vd->vdev_dtl[DTL_MISSING], + range_tree_add, vd->vdev_dtl[DTL_OUTAGE]); + + /* + * If the vdev was resilvering and no longer has any + * DTLs then reset its resilvering flag. + */ + if (vd->vdev_resilver_txg != 0 && + range_tree_space(vd->vdev_dtl[DTL_MISSING]) == 0 && + range_tree_space(vd->vdev_dtl[DTL_OUTAGE]) == 0) + vd->vdev_resilver_txg = 0; + + mutex_exit(&vd->vdev_dtl_lock); + + if (txg != 0) + vdev_dirty(vd->vdev_top, VDD_DTL, vd, txg); + return; + } + + mutex_enter(&vd->vdev_dtl_lock); + for (t = 0; t < DTL_TYPES; t++) { + int c; + + /* account for child's outage in parent's missing map */ + int s = (t == DTL_MISSING) ? DTL_OUTAGE: t; + if (t == DTL_SCRUB) + continue; /* leaf vdevs only */ + if (t == DTL_PARTIAL) + minref = 1; /* i.e. non-zero */ + else if (vd->vdev_nparity != 0) + minref = vd->vdev_nparity + 1; /* RAID-Z */ + else + minref = vd->vdev_children; /* any kind of mirror */ + space_reftree_create(&reftree); + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + mutex_enter(&cvd->vdev_dtl_lock); + space_reftree_add_map(&reftree, cvd->vdev_dtl[s], 1); + mutex_exit(&cvd->vdev_dtl_lock); + } + space_reftree_generate_map(&reftree, vd->vdev_dtl[t], minref); + space_reftree_destroy(&reftree); + } + mutex_exit(&vd->vdev_dtl_lock); +} + +int +vdev_dtl_load(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + objset_t *mos = spa->spa_meta_objset; + int error = 0; + int c; + + if (vd->vdev_ops->vdev_op_leaf && vd->vdev_dtl_object != 0) { + ASSERT(!vd->vdev_ishole); + + error = space_map_open(&vd->vdev_dtl_sm, mos, + vd->vdev_dtl_object, 0, -1ULL, 0, &vd->vdev_dtl_lock); + if (error) + return (error); + ASSERT(vd->vdev_dtl_sm != NULL); + + mutex_enter(&vd->vdev_dtl_lock); + + /* + * Now that we've opened the space_map we need to update + * the in-core DTL. + */ + space_map_update(vd->vdev_dtl_sm); + + error = space_map_load(vd->vdev_dtl_sm, + vd->vdev_dtl[DTL_MISSING], SM_ALLOC); + mutex_exit(&vd->vdev_dtl_lock); + + return (error); + } + + for (c = 0; c < vd->vdev_children; c++) { + error = vdev_dtl_load(vd->vdev_child[c]); + if (error != 0) + break; + } + + return (error); +} + +void +vdev_dtl_sync(vdev_t *vd, uint64_t txg) +{ + spa_t *spa = vd->vdev_spa; + range_tree_t *rt = vd->vdev_dtl[DTL_MISSING]; + objset_t *mos = spa->spa_meta_objset; + range_tree_t *rtsync; + kmutex_t rtlock; + dmu_tx_t *tx; + uint64_t object = space_map_object(vd->vdev_dtl_sm); + + ASSERT(!vd->vdev_ishole); + ASSERT(vd->vdev_ops->vdev_op_leaf); + + tx = dmu_tx_create_assigned(spa->spa_dsl_pool, txg); + + if (vd->vdev_detached || vd->vdev_top->vdev_removing) { + mutex_enter(&vd->vdev_dtl_lock); + space_map_free(vd->vdev_dtl_sm, tx); + space_map_close(vd->vdev_dtl_sm); + vd->vdev_dtl_sm = NULL; + mutex_exit(&vd->vdev_dtl_lock); + dmu_tx_commit(tx); + return; + } + + if (vd->vdev_dtl_sm == NULL) { + uint64_t new_object; + + new_object = space_map_alloc(mos, tx); + VERIFY3U(new_object, !=, 0); + + VERIFY0(space_map_open(&vd->vdev_dtl_sm, mos, new_object, + 0, -1ULL, 0, &vd->vdev_dtl_lock)); + ASSERT(vd->vdev_dtl_sm != NULL); + } + + mutex_init(&rtlock, NULL, MUTEX_DEFAULT, NULL); + + rtsync = range_tree_create(NULL, NULL, &rtlock); + + mutex_enter(&rtlock); + + mutex_enter(&vd->vdev_dtl_lock); + range_tree_walk(rt, range_tree_add, rtsync); + mutex_exit(&vd->vdev_dtl_lock); + + space_map_truncate(vd->vdev_dtl_sm, tx); + space_map_write(vd->vdev_dtl_sm, rtsync, SM_ALLOC, tx); + range_tree_vacate(rtsync, NULL, NULL); + + range_tree_destroy(rtsync); + + mutex_exit(&rtlock); + mutex_destroy(&rtlock); + + /* + * If the object for the space map has changed then dirty + * the top level so that we update the config. + */ + if (object != space_map_object(vd->vdev_dtl_sm)) { + zfs_dbgmsg("txg %llu, spa %s, DTL old object %llu, " + "new object %llu", txg, spa_name(spa), object, + space_map_object(vd->vdev_dtl_sm)); + vdev_config_dirty(vd->vdev_top); + } + + dmu_tx_commit(tx); + + mutex_enter(&vd->vdev_dtl_lock); + space_map_update(vd->vdev_dtl_sm); + mutex_exit(&vd->vdev_dtl_lock); +} + +/* + * Determine whether the specified vdev can be offlined/detached/removed + * without losing data. + */ +boolean_t +vdev_dtl_required(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + vdev_t *tvd = vd->vdev_top; + uint8_t cant_read = vd->vdev_cant_read; + boolean_t required; + + ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + + if (vd == spa->spa_root_vdev || vd == tvd) + return (B_TRUE); + + /* + * Temporarily mark the device as unreadable, and then determine + * whether this results in any DTL outages in the top-level vdev. + * If not, we can safely offline/detach/remove the device. + */ + vd->vdev_cant_read = B_TRUE; + vdev_dtl_reassess(tvd, 0, 0, B_FALSE); + required = !vdev_dtl_empty(tvd, DTL_OUTAGE); + vd->vdev_cant_read = cant_read; + vdev_dtl_reassess(tvd, 0, 0, B_FALSE); + + if (!required && zio_injection_enabled) + required = !!zio_handle_device_injection(vd, NULL, ECHILD); + + return (required); +} + +/* + * Determine if resilver is needed, and if so the txg range. + */ +boolean_t +vdev_resilver_needed(vdev_t *vd, uint64_t *minp, uint64_t *maxp) +{ + boolean_t needed = B_FALSE; + uint64_t thismin = UINT64_MAX; + uint64_t thismax = 0; + int c; + + if (vd->vdev_children == 0) { + mutex_enter(&vd->vdev_dtl_lock); + if (range_tree_space(vd->vdev_dtl[DTL_MISSING]) != 0 && + vdev_writeable(vd)) { + + thismin = vdev_dtl_min(vd); + thismax = vdev_dtl_max(vd); + needed = B_TRUE; + } + mutex_exit(&vd->vdev_dtl_lock); + } else { + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + uint64_t cmin, cmax; + + if (vdev_resilver_needed(cvd, &cmin, &cmax)) { + thismin = MIN(thismin, cmin); + thismax = MAX(thismax, cmax); + needed = B_TRUE; + } + } + } + + if (needed && minp) { + *minp = thismin; + *maxp = thismax; + } + return (needed); +} + +void +vdev_load(vdev_t *vd) +{ + int c; + + /* + * Recursively load all children. + */ + for (c = 0; c < vd->vdev_children; c++) + vdev_load(vd->vdev_child[c]); + + /* + * If this is a top-level vdev, initialize its metaslabs. + */ + if (vd == vd->vdev_top && !vd->vdev_ishole && + (vd->vdev_ashift == 0 || vd->vdev_asize == 0 || + vdev_metaslab_init(vd, 0) != 0)) + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + + /* + * If this is a leaf vdev, load its DTL. + */ + if (vd->vdev_ops->vdev_op_leaf && vdev_dtl_load(vd) != 0) + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); +} + +/* + * The special vdev case is used for hot spares and l2cache devices. Its + * sole purpose it to set the vdev state for the associated vdev. To do this, + * we make sure that we can open the underlying device, then try to read the + * label, and make sure that the label is sane and that it hasn't been + * repurposed to another pool. + */ +int +vdev_validate_aux(vdev_t *vd) +{ + nvlist_t *label; + uint64_t guid, version; + uint64_t state; + + if (!vdev_readable(vd)) + return (0); + + if ((label = vdev_label_read_config(vd, -1ULL)) == NULL) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + return (-1); + } + + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_VERSION, &version) != 0 || + !SPA_VERSION_IS_SUPPORTED(version) || + nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, &guid) != 0 || + guid != vd->vdev_guid || + nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_STATE, &state) != 0) { + vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + nvlist_free(label); + return (-1); + } + + /* + * We don't actually check the pool state here. If it's in fact in + * use by another pool, we update this fact on the fly when requested. + */ + nvlist_free(label); + return (0); +} + +void +vdev_remove(vdev_t *vd, uint64_t txg) +{ + spa_t *spa = vd->vdev_spa; + objset_t *mos = spa->spa_meta_objset; + dmu_tx_t *tx; + int m, i; + + tx = dmu_tx_create_assigned(spa_get_dsl(spa), txg); + + if (vd->vdev_ms != NULL) { + metaslab_group_t *mg = vd->vdev_mg; + + metaslab_group_histogram_verify(mg); + metaslab_class_histogram_verify(mg->mg_class); + + for (m = 0; m < vd->vdev_ms_count; m++) { + metaslab_t *msp = vd->vdev_ms[m]; + + if (msp == NULL || msp->ms_sm == NULL) + continue; + + mutex_enter(&msp->ms_lock); + /* + * If the metaslab was not loaded when the vdev + * was removed then the histogram accounting may + * not be accurate. Update the histogram information + * here so that we ensure that the metaslab group + * and metaslab class are up-to-date. + */ + metaslab_group_histogram_remove(mg, msp); + + VERIFY0(space_map_allocated(msp->ms_sm)); + space_map_free(msp->ms_sm, tx); + space_map_close(msp->ms_sm); + msp->ms_sm = NULL; + mutex_exit(&msp->ms_lock); + } + + metaslab_group_histogram_verify(mg); + metaslab_class_histogram_verify(mg->mg_class); + for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i++) + ASSERT0(mg->mg_histogram[i]); + + } + + if (vd->vdev_ms_array) { + (void) dmu_object_free(mos, vd->vdev_ms_array, tx); + vd->vdev_ms_array = 0; + } + dmu_tx_commit(tx); +} + +void +vdev_sync_done(vdev_t *vd, uint64_t txg) +{ + metaslab_t *msp; + boolean_t reassess = !txg_list_empty(&vd->vdev_ms_list, TXG_CLEAN(txg)); + + ASSERT(!vd->vdev_ishole); + + while ((msp = txg_list_remove(&vd->vdev_ms_list, TXG_CLEAN(txg)))) + metaslab_sync_done(msp, txg); + + if (reassess) + metaslab_sync_reassess(vd->vdev_mg); +} + +void +vdev_sync(vdev_t *vd, uint64_t txg) +{ + spa_t *spa = vd->vdev_spa; + vdev_t *lvd; + metaslab_t *msp; + dmu_tx_t *tx; + + ASSERT(!vd->vdev_ishole); + + if (vd->vdev_ms_array == 0 && vd->vdev_ms_shift != 0) { + ASSERT(vd == vd->vdev_top); + tx = dmu_tx_create_assigned(spa->spa_dsl_pool, txg); + vd->vdev_ms_array = dmu_object_alloc(spa->spa_meta_objset, + DMU_OT_OBJECT_ARRAY, 0, DMU_OT_NONE, 0, tx); + ASSERT(vd->vdev_ms_array != 0); + vdev_config_dirty(vd); + dmu_tx_commit(tx); + } + + /* + * Remove the metadata associated with this vdev once it's empty. + */ + if (vd->vdev_stat.vs_alloc == 0 && vd->vdev_removing) + vdev_remove(vd, txg); + + while ((msp = txg_list_remove(&vd->vdev_ms_list, txg)) != NULL) { + metaslab_sync(msp, txg); + (void) txg_list_add(&vd->vdev_ms_list, msp, TXG_CLEAN(txg)); + } + + while ((lvd = txg_list_remove(&vd->vdev_dtl_list, txg)) != NULL) + vdev_dtl_sync(lvd, txg); + + (void) txg_list_add(&spa->spa_vdev_txg_list, vd, TXG_CLEAN(txg)); +} + +uint64_t +vdev_psize_to_asize(vdev_t *vd, uint64_t psize) +{ + return (vd->vdev_ops->vdev_op_asize(vd, psize)); +} + +/* + * Mark the given vdev faulted. A faulted vdev behaves as if the device could + * not be opened, and no I/O is attempted. + */ +int +vdev_fault(spa_t *spa, uint64_t guid, vdev_aux_t aux) +{ + vdev_t *vd, *tvd; + + spa_vdev_state_enter(spa, SCL_NONE); + + if ((vd = spa_lookup_by_guid(spa, guid, B_TRUE)) == NULL) + return (spa_vdev_state_exit(spa, NULL, ENODEV)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_state_exit(spa, NULL, ENOTSUP)); + + tvd = vd->vdev_top; + + /* + * We don't directly use the aux state here, but if we do a + * vdev_reopen(), we need this value to be present to remember why we + * were faulted. + */ + vd->vdev_label_aux = aux; + + /* + * Faulted state takes precedence over degraded. + */ + vd->vdev_delayed_close = B_FALSE; + vd->vdev_faulted = 1ULL; + vd->vdev_degraded = 0ULL; + vdev_set_state(vd, B_FALSE, VDEV_STATE_FAULTED, aux); + + /* + * If this device has the only valid copy of the data, then + * back off and simply mark the vdev as degraded instead. + */ + if (!tvd->vdev_islog && vd->vdev_aux == NULL && vdev_dtl_required(vd)) { + vd->vdev_degraded = 1ULL; + vd->vdev_faulted = 0ULL; + + /* + * If we reopen the device and it's not dead, only then do we + * mark it degraded. + */ + vdev_reopen(tvd); + + if (vdev_readable(vd)) + vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, aux); + } + + return (spa_vdev_state_exit(spa, vd, 0)); +} + +/* + * Mark the given vdev degraded. A degraded vdev is purely an indication to the + * user that something is wrong. The vdev continues to operate as normal as far + * as I/O is concerned. + */ +int +vdev_degrade(spa_t *spa, uint64_t guid, vdev_aux_t aux) +{ + vdev_t *vd; + + spa_vdev_state_enter(spa, SCL_NONE); + + if ((vd = spa_lookup_by_guid(spa, guid, B_TRUE)) == NULL) + return (spa_vdev_state_exit(spa, NULL, ENODEV)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_state_exit(spa, NULL, ENOTSUP)); + + /* + * If the vdev is already faulted, then don't do anything. + */ + if (vd->vdev_faulted || vd->vdev_degraded) + return (spa_vdev_state_exit(spa, NULL, 0)); + + vd->vdev_degraded = 1ULL; + if (!vdev_is_dead(vd)) + vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, + aux); + + return (spa_vdev_state_exit(spa, vd, 0)); +} + +/* + * Online the given vdev. + * + * If 'ZFS_ONLINE_UNSPARE' is set, it implies two things. First, any attached + * spare device should be detached when the device finishes resilvering. + * Second, the online should be treated like a 'test' online case, so no FMA + * events are generated if the device fails to open. + */ +int +vdev_online(spa_t *spa, uint64_t guid, uint64_t flags, vdev_state_t *newstate) +{ + vdev_t *vd, *tvd, *pvd, *rvd = spa->spa_root_vdev; + + spa_vdev_state_enter(spa, SCL_NONE); + + if ((vd = spa_lookup_by_guid(spa, guid, B_TRUE)) == NULL) + return (spa_vdev_state_exit(spa, NULL, ENODEV)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_state_exit(spa, NULL, ENOTSUP)); + + tvd = vd->vdev_top; + vd->vdev_offline = B_FALSE; + vd->vdev_tmpoffline = B_FALSE; + vd->vdev_checkremove = !!(flags & ZFS_ONLINE_CHECKREMOVE); + vd->vdev_forcefault = !!(flags & ZFS_ONLINE_FORCEFAULT); + + /* XXX - L2ARC 1.0 does not support expansion */ + if (!vd->vdev_aux) { + for (pvd = vd; pvd != rvd; pvd = pvd->vdev_parent) + pvd->vdev_expanding = !!(flags & ZFS_ONLINE_EXPAND); + } + + vdev_reopen(tvd); + vd->vdev_checkremove = vd->vdev_forcefault = B_FALSE; + + if (!vd->vdev_aux) { + for (pvd = vd; pvd != rvd; pvd = pvd->vdev_parent) + pvd->vdev_expanding = B_FALSE; + } + + if (newstate) + *newstate = vd->vdev_state; + if ((flags & ZFS_ONLINE_UNSPARE) && + !vdev_is_dead(vd) && vd->vdev_parent && + vd->vdev_parent->vdev_ops == &vdev_spare_ops && + vd->vdev_parent->vdev_child[0] == vd) + vd->vdev_unspare = B_TRUE; + + if ((flags & ZFS_ONLINE_EXPAND) || spa->spa_autoexpand) { + + /* XXX - L2ARC 1.0 does not support expansion */ + if (vd->vdev_aux) + return (spa_vdev_state_exit(spa, vd, ENOTSUP)); + spa_async_request(spa, SPA_ASYNC_CONFIG_UPDATE); + } + return (spa_vdev_state_exit(spa, vd, 0)); +} + +static int +vdev_offline_locked(spa_t *spa, uint64_t guid, uint64_t flags) +{ + vdev_t *vd, *tvd; + int error = 0; + uint64_t generation; + metaslab_group_t *mg; + +top: + spa_vdev_state_enter(spa, SCL_ALLOC); + + if ((vd = spa_lookup_by_guid(spa, guid, B_TRUE)) == NULL) + return (spa_vdev_state_exit(spa, NULL, ENODEV)); + + if (!vd->vdev_ops->vdev_op_leaf) + return (spa_vdev_state_exit(spa, NULL, ENOTSUP)); + + tvd = vd->vdev_top; + mg = tvd->vdev_mg; + generation = spa->spa_config_generation + 1; + + /* + * If the device isn't already offline, try to offline it. + */ + if (!vd->vdev_offline) { + /* + * If this device has the only valid copy of some data, + * don't allow it to be offlined. Log devices are always + * expendable. + */ + if (!tvd->vdev_islog && vd->vdev_aux == NULL && + vdev_dtl_required(vd)) + return (spa_vdev_state_exit(spa, NULL, EBUSY)); + + /* + * If the top-level is a slog and it has had allocations + * then proceed. We check that the vdev's metaslab group + * is not NULL since it's possible that we may have just + * added this vdev but not yet initialized its metaslabs. + */ + if (tvd->vdev_islog && mg != NULL) { + /* + * Prevent any future allocations. + */ + metaslab_group_passivate(mg); + (void) spa_vdev_state_exit(spa, vd, 0); + + error = spa_offline_log(spa); + + spa_vdev_state_enter(spa, SCL_ALLOC); + + /* + * Check to see if the config has changed. + */ + if (error || generation != spa->spa_config_generation) { + metaslab_group_activate(mg); + if (error) + return (spa_vdev_state_exit(spa, + vd, error)); + (void) spa_vdev_state_exit(spa, vd, 0); + goto top; + } + ASSERT0(tvd->vdev_stat.vs_alloc); + } + + /* + * Offline this device and reopen its top-level vdev. + * If the top-level vdev is a log device then just offline + * it. Otherwise, if this action results in the top-level + * vdev becoming unusable, undo it and fail the request. + */ + vd->vdev_offline = B_TRUE; + vdev_reopen(tvd); + + if (!tvd->vdev_islog && vd->vdev_aux == NULL && + vdev_is_dead(tvd)) { + vd->vdev_offline = B_FALSE; + vdev_reopen(tvd); + return (spa_vdev_state_exit(spa, NULL, EBUSY)); + } + + /* + * Add the device back into the metaslab rotor so that + * once we online the device it's open for business. + */ + if (tvd->vdev_islog && mg != NULL) + metaslab_group_activate(mg); + } + + vd->vdev_tmpoffline = !!(flags & ZFS_OFFLINE_TEMPORARY); + + return (spa_vdev_state_exit(spa, vd, 0)); +} + +int +vdev_offline(spa_t *spa, uint64_t guid, uint64_t flags) +{ + int error; + + mutex_enter(&spa->spa_vdev_top_lock); + error = vdev_offline_locked(spa, guid, flags); + mutex_exit(&spa->spa_vdev_top_lock); + + return (error); +} + +/* + * Clear the error counts associated with this vdev. Unlike vdev_online() and + * vdev_offline(), we assume the spa config is locked. We also clear all + * children. If 'vd' is NULL, then the user wants to clear all vdevs. + */ +void +vdev_clear(spa_t *spa, vdev_t *vd) +{ + vdev_t *rvd = spa->spa_root_vdev; + int c; + + ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + + if (vd == NULL) + vd = rvd; + + vd->vdev_stat.vs_read_errors = 0; + vd->vdev_stat.vs_write_errors = 0; + vd->vdev_stat.vs_checksum_errors = 0; + + for (c = 0; c < vd->vdev_children; c++) + vdev_clear(spa, vd->vdev_child[c]); + + /* + * If we're in the FAULTED state or have experienced failed I/O, then + * clear the persistent state and attempt to reopen the device. We + * also mark the vdev config dirty, so that the new faulted state is + * written out to disk. + */ + if (vd->vdev_faulted || vd->vdev_degraded || + !vdev_readable(vd) || !vdev_writeable(vd)) { + + /* + * When reopening in reponse to a clear event, it may be due to + * a fmadm repair request. In this case, if the device is + * still broken, we want to still post the ereport again. + */ + vd->vdev_forcefault = B_TRUE; + + vd->vdev_faulted = vd->vdev_degraded = 0ULL; + vd->vdev_cant_read = B_FALSE; + vd->vdev_cant_write = B_FALSE; + + vdev_reopen(vd == rvd ? rvd : vd->vdev_top); + + vd->vdev_forcefault = B_FALSE; + + if (vd != rvd && vdev_writeable(vd->vdev_top)) + vdev_state_dirty(vd->vdev_top); + + if (vd->vdev_aux == NULL && !vdev_is_dead(vd)) + spa_async_request(spa, SPA_ASYNC_RESILVER); + + spa_event_notify(spa, vd, FM_EREPORT_ZFS_DEVICE_CLEAR); + } + + /* + * When clearing a FMA-diagnosed fault, we always want to + * unspare the device, as we assume that the original spare was + * done in response to the FMA fault. + */ + if (!vdev_is_dead(vd) && vd->vdev_parent != NULL && + vd->vdev_parent->vdev_ops == &vdev_spare_ops && + vd->vdev_parent->vdev_child[0] == vd) + vd->vdev_unspare = B_TRUE; +} + +boolean_t +vdev_is_dead(vdev_t *vd) +{ + /* + * Holes and missing devices are always considered "dead". + * This simplifies the code since we don't have to check for + * these types of devices in the various code paths. + * Instead we rely on the fact that we skip over dead devices + * before issuing I/O to them. + */ + return (vd->vdev_state < VDEV_STATE_DEGRADED || vd->vdev_ishole || + vd->vdev_ops == &vdev_missing_ops); +} + +boolean_t +vdev_readable(vdev_t *vd) +{ + return (!vdev_is_dead(vd) && !vd->vdev_cant_read); +} + +boolean_t +vdev_writeable(vdev_t *vd) +{ + return (!vdev_is_dead(vd) && !vd->vdev_cant_write); +} + +boolean_t +vdev_allocatable(vdev_t *vd) +{ + uint64_t state = vd->vdev_state; + + /* + * We currently allow allocations from vdevs which may be in the + * process of reopening (i.e. VDEV_STATE_CLOSED). If the device + * fails to reopen then we'll catch it later when we're holding + * the proper locks. Note that we have to get the vdev state + * in a local variable because although it changes atomically, + * we're asking two separate questions about it. + */ + return (!(state < VDEV_STATE_DEGRADED && state != VDEV_STATE_CLOSED) && + !vd->vdev_cant_write && !vd->vdev_ishole); +} + +boolean_t +vdev_accessible(vdev_t *vd, zio_t *zio) +{ + ASSERT(zio->io_vd == vd); + + if (vdev_is_dead(vd) || vd->vdev_remove_wanted) + return (B_FALSE); + + if (zio->io_type == ZIO_TYPE_READ) + return (!vd->vdev_cant_read); + + if (zio->io_type == ZIO_TYPE_WRITE) + return (!vd->vdev_cant_write); + + return (B_TRUE); +} + +/* + * Get statistics for the given vdev. + */ +void +vdev_get_stats(vdev_t *vd, vdev_stat_t *vs) +{ + spa_t *spa = vd->vdev_spa; + vdev_t *rvd = spa->spa_root_vdev; + int c, t; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_READER) != 0); + + mutex_enter(&vd->vdev_stat_lock); + bcopy(&vd->vdev_stat, vs, sizeof (*vs)); + vs->vs_timestamp = gethrtime() - vs->vs_timestamp; + vs->vs_state = vd->vdev_state; + vs->vs_rsize = vdev_get_min_asize(vd); + if (vd->vdev_ops->vdev_op_leaf) + vs->vs_rsize += VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; + vs->vs_esize = vd->vdev_max_asize - vd->vdev_asize; + if (vd->vdev_aux == NULL && vd == vd->vdev_top && !vd->vdev_ishole) { + vs->vs_fragmentation = vd->vdev_mg->mg_fragmentation; + } + + /* + * If we're getting stats on the root vdev, aggregate the I/O counts + * over all top-level vdevs (i.e. the direct children of the root). + */ + if (vd == rvd) { + for (c = 0; c < rvd->vdev_children; c++) { + vdev_t *cvd = rvd->vdev_child[c]; + vdev_stat_t *cvs = &cvd->vdev_stat; + + for (t = 0; t < ZIO_TYPES; t++) { + vs->vs_ops[t] += cvs->vs_ops[t]; + vs->vs_bytes[t] += cvs->vs_bytes[t]; + } + cvs->vs_scan_removing = cvd->vdev_removing; + } + } + mutex_exit(&vd->vdev_stat_lock); +} + +void +vdev_clear_stats(vdev_t *vd) +{ + mutex_enter(&vd->vdev_stat_lock); + vd->vdev_stat.vs_space = 0; + vd->vdev_stat.vs_dspace = 0; + vd->vdev_stat.vs_alloc = 0; + mutex_exit(&vd->vdev_stat_lock); +} + +void +vdev_scan_stat_init(vdev_t *vd) +{ + vdev_stat_t *vs = &vd->vdev_stat; + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_scan_stat_init(vd->vdev_child[c]); + + mutex_enter(&vd->vdev_stat_lock); + vs->vs_scan_processed = 0; + mutex_exit(&vd->vdev_stat_lock); +} + +void +vdev_stat_update(zio_t *zio, uint64_t psize) +{ + spa_t *spa = zio->io_spa; + vdev_t *rvd = spa->spa_root_vdev; + vdev_t *vd = zio->io_vd ? zio->io_vd : rvd; + vdev_t *pvd; + uint64_t txg = zio->io_txg; + vdev_stat_t *vs = &vd->vdev_stat; + zio_type_t type = zio->io_type; + int flags = zio->io_flags; + + /* + * If this i/o is a gang leader, it didn't do any actual work. + */ + if (zio->io_gang_tree) + return; + + if (zio->io_error == 0) { + /* + * If this is a root i/o, don't count it -- we've already + * counted the top-level vdevs, and vdev_get_stats() will + * aggregate them when asked. This reduces contention on + * the root vdev_stat_lock and implicitly handles blocks + * that compress away to holes, for which there is no i/o. + * (Holes never create vdev children, so all the counters + * remain zero, which is what we want.) + * + * Note: this only applies to successful i/o (io_error == 0) + * because unlike i/o counts, errors are not additive. + * When reading a ditto block, for example, failure of + * one top-level vdev does not imply a root-level error. + */ + if (vd == rvd) + return; + + ASSERT(vd == zio->io_vd); + + if (flags & ZIO_FLAG_IO_BYPASS) + return; + + mutex_enter(&vd->vdev_stat_lock); + + if (flags & ZIO_FLAG_IO_REPAIR) { + if (flags & ZIO_FLAG_SCAN_THREAD) { + dsl_scan_phys_t *scn_phys = + &spa->spa_dsl_pool->dp_scan->scn_phys; + uint64_t *processed = &scn_phys->scn_processed; + + /* XXX cleanup? */ + if (vd->vdev_ops->vdev_op_leaf) + atomic_add_64(processed, psize); + vs->vs_scan_processed += psize; + } + + if (flags & ZIO_FLAG_SELF_HEAL) + vs->vs_self_healed += psize; + } + + vs->vs_ops[type]++; + vs->vs_bytes[type] += psize; + + mutex_exit(&vd->vdev_stat_lock); + return; + } + + if (flags & ZIO_FLAG_SPECULATIVE) + return; + + /* + * If this is an I/O error that is going to be retried, then ignore the + * error. Otherwise, the user may interpret B_FAILFAST I/O errors as + * hard errors, when in reality they can happen for any number of + * innocuous reasons (bus resets, MPxIO link failure, etc). + */ + if (zio->io_error == EIO && + !(zio->io_flags & ZIO_FLAG_IO_RETRY)) + return; + + /* + * Intent logs writes won't propagate their error to the root + * I/O so don't mark these types of failures as pool-level + * errors. + */ + if (zio->io_vd == NULL && (zio->io_flags & ZIO_FLAG_DONT_PROPAGATE)) + return; + + mutex_enter(&vd->vdev_stat_lock); + if (type == ZIO_TYPE_READ && !vdev_is_dead(vd)) { + if (zio->io_error == ECKSUM) + vs->vs_checksum_errors++; + else + vs->vs_read_errors++; + } + if (type == ZIO_TYPE_WRITE && !vdev_is_dead(vd)) + vs->vs_write_errors++; + mutex_exit(&vd->vdev_stat_lock); + + if (type == ZIO_TYPE_WRITE && txg != 0 && + (!(flags & ZIO_FLAG_IO_REPAIR) || + (flags & ZIO_FLAG_SCAN_THREAD) || + spa->spa_claiming)) { + /* + * This is either a normal write (not a repair), or it's + * a repair induced by the scrub thread, or it's a repair + * made by zil_claim() during spa_load() in the first txg. + * In the normal case, we commit the DTL change in the same + * txg as the block was born. In the scrub-induced repair + * case, we know that scrubs run in first-pass syncing context, + * so we commit the DTL change in spa_syncing_txg(spa). + * In the zil_claim() case, we commit in spa_first_txg(spa). + * + * We currently do not make DTL entries for failed spontaneous + * self-healing writes triggered by normal (non-scrubbing) + * reads, because we have no transactional context in which to + * do so -- and it's not clear that it'd be desirable anyway. + */ + if (vd->vdev_ops->vdev_op_leaf) { + uint64_t commit_txg = txg; + if (flags & ZIO_FLAG_SCAN_THREAD) { + ASSERT(flags & ZIO_FLAG_IO_REPAIR); + ASSERT(spa_sync_pass(spa) == 1); + vdev_dtl_dirty(vd, DTL_SCRUB, txg, 1); + commit_txg = spa_syncing_txg(spa); + } else if (spa->spa_claiming) { + ASSERT(flags & ZIO_FLAG_IO_REPAIR); + commit_txg = spa_first_txg(spa); + } + ASSERT(commit_txg >= spa_syncing_txg(spa)); + if (vdev_dtl_contains(vd, DTL_MISSING, txg, 1)) + return; + for (pvd = vd; pvd != rvd; pvd = pvd->vdev_parent) + vdev_dtl_dirty(pvd, DTL_PARTIAL, txg, 1); + vdev_dirty(vd->vdev_top, VDD_DTL, vd, commit_txg); + } + if (vd != rvd) + vdev_dtl_dirty(vd, DTL_MISSING, txg, 1); + } +} + +/* + * Update the in-core space usage stats for this vdev, its metaslab class, + * and the root vdev. + */ +void +vdev_space_update(vdev_t *vd, int64_t alloc_delta, int64_t defer_delta, + int64_t space_delta) +{ + int64_t dspace_delta = space_delta; + spa_t *spa = vd->vdev_spa; + vdev_t *rvd = spa->spa_root_vdev; + metaslab_group_t *mg = vd->vdev_mg; + metaslab_class_t *mc = mg ? mg->mg_class : NULL; + + ASSERT(vd == vd->vdev_top); + + /* + * Apply the inverse of the psize-to-asize (ie. RAID-Z) space-expansion + * factor. We must calculate this here and not at the root vdev + * because the root vdev's psize-to-asize is simply the max of its + * childrens', thus not accurate enough for us. + */ + ASSERT((dspace_delta & (SPA_MINBLOCKSIZE-1)) == 0); + ASSERT(vd->vdev_deflate_ratio != 0 || vd->vdev_isl2cache); + dspace_delta = (dspace_delta >> SPA_MINBLOCKSHIFT) * + vd->vdev_deflate_ratio; + + mutex_enter(&vd->vdev_stat_lock); + vd->vdev_stat.vs_alloc += alloc_delta; + vd->vdev_stat.vs_space += space_delta; + vd->vdev_stat.vs_dspace += dspace_delta; + mutex_exit(&vd->vdev_stat_lock); + + if (mc == spa_normal_class(spa)) { + mutex_enter(&rvd->vdev_stat_lock); + rvd->vdev_stat.vs_alloc += alloc_delta; + rvd->vdev_stat.vs_space += space_delta; + rvd->vdev_stat.vs_dspace += dspace_delta; + mutex_exit(&rvd->vdev_stat_lock); + } + + if (mc != NULL) { + ASSERT(rvd == vd->vdev_parent); + ASSERT(vd->vdev_ms_count != 0); + + metaslab_class_space_update(mc, + alloc_delta, defer_delta, space_delta, dspace_delta); + } +} + +/* + * Mark a top-level vdev's config as dirty, placing it on the dirty list + * so that it will be written out next time the vdev configuration is synced. + * If the root vdev is specified (vdev_top == NULL), dirty all top-level vdevs. + */ +void +vdev_config_dirty(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + vdev_t *rvd = spa->spa_root_vdev; + int c; + + ASSERT(spa_writeable(spa)); + + /* + * If this is an aux vdev (as with l2cache and spare devices), then we + * update the vdev config manually and set the sync flag. + */ + if (vd->vdev_aux != NULL) { + spa_aux_vdev_t *sav = vd->vdev_aux; + nvlist_t **aux; + uint_t naux; + + for (c = 0; c < sav->sav_count; c++) { + if (sav->sav_vdevs[c] == vd) + break; + } + + if (c == sav->sav_count) { + /* + * We're being removed. There's nothing more to do. + */ + ASSERT(sav->sav_sync == B_TRUE); + return; + } + + sav->sav_sync = B_TRUE; + + if (nvlist_lookup_nvlist_array(sav->sav_config, + ZPOOL_CONFIG_L2CACHE, &aux, &naux) != 0) { + VERIFY(nvlist_lookup_nvlist_array(sav->sav_config, + ZPOOL_CONFIG_SPARES, &aux, &naux) == 0); + } + + ASSERT(c < naux); + + /* + * Setting the nvlist in the middle if the array is a little + * sketchy, but it will work. + */ + nvlist_free(aux[c]); + aux[c] = vdev_config_generate(spa, vd, B_TRUE, 0); + + return; + } + + /* + * The dirty list is protected by the SCL_CONFIG lock. The caller + * must either hold SCL_CONFIG as writer, or must be the sync thread + * (which holds SCL_CONFIG as reader). There's only one sync thread, + * so this is sufficient to ensure mutual exclusion. + */ + ASSERT(spa_config_held(spa, SCL_CONFIG, RW_WRITER) || + (dsl_pool_sync_context(spa_get_dsl(spa)) && + spa_config_held(spa, SCL_CONFIG, RW_READER))); + + if (vd == rvd) { + for (c = 0; c < rvd->vdev_children; c++) + vdev_config_dirty(rvd->vdev_child[c]); + } else { + ASSERT(vd == vd->vdev_top); + + if (!list_link_active(&vd->vdev_config_dirty_node) && + !vd->vdev_ishole) + list_insert_head(&spa->spa_config_dirty_list, vd); + } +} + +void +vdev_config_clean(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + + ASSERT(spa_config_held(spa, SCL_CONFIG, RW_WRITER) || + (dsl_pool_sync_context(spa_get_dsl(spa)) && + spa_config_held(spa, SCL_CONFIG, RW_READER))); + + ASSERT(list_link_active(&vd->vdev_config_dirty_node)); + list_remove(&spa->spa_config_dirty_list, vd); +} + +/* + * Mark a top-level vdev's state as dirty, so that the next pass of + * spa_sync() can convert this into vdev_config_dirty(). We distinguish + * the state changes from larger config changes because they require + * much less locking, and are often needed for administrative actions. + */ +void +vdev_state_dirty(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + + ASSERT(spa_writeable(spa)); + ASSERT(vd == vd->vdev_top); + + /* + * The state list is protected by the SCL_STATE lock. The caller + * must either hold SCL_STATE as writer, or must be the sync thread + * (which holds SCL_STATE as reader). There's only one sync thread, + * so this is sufficient to ensure mutual exclusion. + */ + ASSERT(spa_config_held(spa, SCL_STATE, RW_WRITER) || + (dsl_pool_sync_context(spa_get_dsl(spa)) && + spa_config_held(spa, SCL_STATE, RW_READER))); + + if (!list_link_active(&vd->vdev_state_dirty_node) && !vd->vdev_ishole) + list_insert_head(&spa->spa_state_dirty_list, vd); +} + +void +vdev_state_clean(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + + ASSERT(spa_config_held(spa, SCL_STATE, RW_WRITER) || + (dsl_pool_sync_context(spa_get_dsl(spa)) && + spa_config_held(spa, SCL_STATE, RW_READER))); + + ASSERT(list_link_active(&vd->vdev_state_dirty_node)); + list_remove(&spa->spa_state_dirty_list, vd); +} + +/* + * Propagate vdev state up from children to parent. + */ +void +vdev_propagate_state(vdev_t *vd) +{ + spa_t *spa = vd->vdev_spa; + vdev_t *rvd = spa->spa_root_vdev; + int degraded = 0, faulted = 0; + int corrupted = 0; + vdev_t *child; + int c; + + if (vd->vdev_children > 0) { + for (c = 0; c < vd->vdev_children; c++) { + child = vd->vdev_child[c]; + + /* + * Don't factor holes into the decision. + */ + if (child->vdev_ishole) + continue; + + if (!vdev_readable(child) || + (!vdev_writeable(child) && spa_writeable(spa))) { + /* + * Root special: if there is a top-level log + * device, treat the root vdev as if it were + * degraded. + */ + if (child->vdev_islog && vd == rvd) + degraded++; + else + faulted++; + } else if (child->vdev_state <= VDEV_STATE_DEGRADED) { + degraded++; + } + + if (child->vdev_stat.vs_aux == VDEV_AUX_CORRUPT_DATA) + corrupted++; + } + + vd->vdev_ops->vdev_op_state_change(vd, faulted, degraded); + + /* + * Root special: if there is a top-level vdev that cannot be + * opened due to corrupted metadata, then propagate the root + * vdev's aux state as 'corrupt' rather than 'insufficient + * replicas'. + */ + if (corrupted && vd == rvd && + rvd->vdev_state == VDEV_STATE_CANT_OPEN) + vdev_set_state(rvd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_CORRUPT_DATA); + } + + if (vd->vdev_parent) + vdev_propagate_state(vd->vdev_parent); +} + +/* + * Set a vdev's state. If this is during an open, we don't update the parent + * state, because we're in the process of opening children depth-first. + * Otherwise, we propagate the change to the parent. + * + * If this routine places a device in a faulted state, an appropriate ereport is + * generated. + */ +void +vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, vdev_aux_t aux) +{ + uint64_t save_state; + spa_t *spa = vd->vdev_spa; + + if (state == vd->vdev_state) { + vd->vdev_stat.vs_aux = aux; + return; + } + + save_state = vd->vdev_state; + + vd->vdev_state = state; + vd->vdev_stat.vs_aux = aux; + + /* + * If we are setting the vdev state to anything but an open state, then + * always close the underlying device unless the device has requested + * a delayed close (i.e. we're about to remove or fault the device). + * Otherwise, we keep accessible but invalid devices open forever. + * We don't call vdev_close() itself, because that implies some extra + * checks (offline, etc) that we don't want here. This is limited to + * leaf devices, because otherwise closing the device will affect other + * children. + */ + if (!vd->vdev_delayed_close && vdev_is_dead(vd) && + vd->vdev_ops->vdev_op_leaf) + vd->vdev_ops->vdev_op_close(vd); + + /* + * If we have brought this vdev back into service, we need + * to notify fmd so that it can gracefully repair any outstanding + * cases due to a missing device. We do this in all cases, even those + * that probably don't correlate to a repaired fault. This is sure to + * catch all cases, and we let the zfs-retire agent sort it out. If + * this is a transient state it's OK, as the retire agent will + * double-check the state of the vdev before repairing it. + */ + if (state == VDEV_STATE_HEALTHY && vd->vdev_ops->vdev_op_leaf && + vd->vdev_prevstate != state) + zfs_post_state_change(spa, vd); + + if (vd->vdev_removed && + state == VDEV_STATE_CANT_OPEN && + (aux == VDEV_AUX_OPEN_FAILED || vd->vdev_checkremove)) { + /* + * If the previous state is set to VDEV_STATE_REMOVED, then this + * device was previously marked removed and someone attempted to + * reopen it. If this failed due to a nonexistent device, then + * keep the device in the REMOVED state. We also let this be if + * it is one of our special test online cases, which is only + * attempting to online the device and shouldn't generate an FMA + * fault. + */ + vd->vdev_state = VDEV_STATE_REMOVED; + vd->vdev_stat.vs_aux = VDEV_AUX_NONE; + } else if (state == VDEV_STATE_REMOVED) { + vd->vdev_removed = B_TRUE; + } else if (state == VDEV_STATE_CANT_OPEN) { + /* + * If we fail to open a vdev during an import or recovery, we + * mark it as "not available", which signifies that it was + * never there to begin with. Failure to open such a device + * is not considered an error. + */ + if ((spa_load_state(spa) == SPA_LOAD_IMPORT || + spa_load_state(spa) == SPA_LOAD_RECOVER) && + vd->vdev_ops->vdev_op_leaf) + vd->vdev_not_present = 1; + + /* + * Post the appropriate ereport. If the 'prevstate' field is + * set to something other than VDEV_STATE_UNKNOWN, it indicates + * that this is part of a vdev_reopen(). In this case, we don't + * want to post the ereport if the device was already in the + * CANT_OPEN state beforehand. + * + * If the 'checkremove' flag is set, then this is an attempt to + * online the device in response to an insertion event. If we + * hit this case, then we have detected an insertion event for a + * faulted or offline device that wasn't in the removed state. + * In this scenario, we don't post an ereport because we are + * about to replace the device, or attempt an online with + * vdev_forcefault, which will generate the fault for us. + */ + if ((vd->vdev_prevstate != state || vd->vdev_forcefault) && + !vd->vdev_not_present && !vd->vdev_checkremove && + vd != spa->spa_root_vdev) { + const char *class; + + switch (aux) { + case VDEV_AUX_OPEN_FAILED: + class = FM_EREPORT_ZFS_DEVICE_OPEN_FAILED; + break; + case VDEV_AUX_CORRUPT_DATA: + class = FM_EREPORT_ZFS_DEVICE_CORRUPT_DATA; + break; + case VDEV_AUX_NO_REPLICAS: + class = FM_EREPORT_ZFS_DEVICE_NO_REPLICAS; + break; + case VDEV_AUX_BAD_GUID_SUM: + class = FM_EREPORT_ZFS_DEVICE_BAD_GUID_SUM; + break; + case VDEV_AUX_TOO_SMALL: + class = FM_EREPORT_ZFS_DEVICE_TOO_SMALL; + break; + case VDEV_AUX_BAD_LABEL: + class = FM_EREPORT_ZFS_DEVICE_BAD_LABEL; + break; + default: + class = FM_EREPORT_ZFS_DEVICE_UNKNOWN; + } + + zfs_ereport_post(class, spa, vd, NULL, save_state, 0); + } + + /* Erase any notion of persistent removed state */ + vd->vdev_removed = B_FALSE; + } else { + vd->vdev_removed = B_FALSE; + } + + if (!isopen && vd->vdev_parent) + vdev_propagate_state(vd->vdev_parent); +} + +/* + * Check the vdev configuration to ensure that it's capable of supporting + * a root pool. + */ +boolean_t +vdev_is_bootable(vdev_t *vd) +{ +#if defined(__sun__) || defined(__sun) + /* + * Currently, we do not support RAID-Z or partial configuration. + * In addition, only a single top-level vdev is allowed and none of the + * leaves can be wholedisks. + */ + int c; + + if (!vd->vdev_ops->vdev_op_leaf) { + char *vdev_type = vd->vdev_ops->vdev_op_type; + + if (strcmp(vdev_type, VDEV_TYPE_ROOT) == 0 && + vd->vdev_children > 1) { + return (B_FALSE); + } else if (strcmp(vdev_type, VDEV_TYPE_RAIDZ) == 0 || + strcmp(vdev_type, VDEV_TYPE_MISSING) == 0) { + return (B_FALSE); + } + } else if (vd->vdev_wholedisk == 1) { + return (B_FALSE); + } + + for (c = 0; c < vd->vdev_children; c++) { + if (!vdev_is_bootable(vd->vdev_child[c])) + return (B_FALSE); + } +#endif /* __sun__ || __sun */ + return (B_TRUE); +} + +/* + * Load the state from the original vdev tree (ovd) which + * we've retrieved from the MOS config object. If the original + * vdev was offline or faulted then we transfer that state to the + * device in the current vdev tree (nvd). + */ +void +vdev_load_log_state(vdev_t *nvd, vdev_t *ovd) +{ + int c; + + ASSERT(nvd->vdev_top->vdev_islog); + ASSERT(spa_config_held(nvd->vdev_spa, + SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + ASSERT3U(nvd->vdev_guid, ==, ovd->vdev_guid); + + for (c = 0; c < nvd->vdev_children; c++) + vdev_load_log_state(nvd->vdev_child[c], ovd->vdev_child[c]); + + if (nvd->vdev_ops->vdev_op_leaf) { + /* + * Restore the persistent vdev state + */ + nvd->vdev_offline = ovd->vdev_offline; + nvd->vdev_faulted = ovd->vdev_faulted; + nvd->vdev_degraded = ovd->vdev_degraded; + nvd->vdev_removed = ovd->vdev_removed; + } +} + +/* + * Determine if a log device has valid content. If the vdev was + * removed or faulted in the MOS config then we know that + * the content on the log device has already been written to the pool. + */ +boolean_t +vdev_log_state_valid(vdev_t *vd) +{ + int c; + + if (vd->vdev_ops->vdev_op_leaf && !vd->vdev_faulted && + !vd->vdev_removed) + return (B_TRUE); + + for (c = 0; c < vd->vdev_children; c++) + if (vdev_log_state_valid(vd->vdev_child[c])) + return (B_TRUE); + + return (B_FALSE); +} + +/* + * Expand a vdev if possible. + */ +void +vdev_expand(vdev_t *vd, uint64_t txg) +{ + ASSERT(vd->vdev_top == vd); + ASSERT(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + if ((vd->vdev_asize >> vd->vdev_ms_shift) > vd->vdev_ms_count) { + VERIFY(vdev_metaslab_init(vd, txg) == 0); + vdev_config_dirty(vd); + } +} + +/* + * Split a vdev. + */ +void +vdev_split(vdev_t *vd) +{ + vdev_t *cvd, *pvd = vd->vdev_parent; + + vdev_remove_child(pvd, vd); + vdev_compact_children(pvd); + + cvd = pvd->vdev_child[0]; + if (pvd->vdev_children == 1) { + vdev_remove_parent(cvd); + cvd->vdev_splitting = B_TRUE; + } + vdev_propagate_state(cvd); +} + +void +vdev_deadman(vdev_t *vd) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + + vdev_deadman(cvd); + } + + if (vd->vdev_ops->vdev_op_leaf) { + vdev_queue_t *vq = &vd->vdev_queue; + + mutex_enter(&vq->vq_lock); + if (avl_numnodes(&vq->vq_active_tree) > 0) { + spa_t *spa = vd->vdev_spa; + zio_t *fio; + uint64_t delta; + + /* + * Look at the head of all the pending queues, + * if any I/O has been outstanding for longer than + * the spa_deadman_synctime we log a zevent. + */ + fio = avl_first(&vq->vq_active_tree); + delta = gethrtime() - fio->io_timestamp; + if (delta > spa_deadman_synctime(spa)) { + zfs_dbgmsg("SLOW IO: zio timestamp %lluns, " + "delta %lluns, last io %lluns", + fio->io_timestamp, delta, + vq->vq_io_complete_ts); + zfs_ereport_post(FM_EREPORT_ZFS_DELAY, + spa, vd, fio, 0, 0); + } + } + mutex_exit(&vq->vq_lock); + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(vdev_fault); +EXPORT_SYMBOL(vdev_degrade); +EXPORT_SYMBOL(vdev_online); +EXPORT_SYMBOL(vdev_offline); +EXPORT_SYMBOL(vdev_clear); + +module_param(metaslabs_per_vdev, int, 0644); +MODULE_PARM_DESC(metaslabs_per_vdev, + "Divide added vdev into approximately (but no more than) this number " + "of metaslabs"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/vdev_cache.c +++ linux-4.4.0/zfs/module/zfs/vdev_cache.c @@ -0,0 +1,439 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include + +/* + * Virtual device read-ahead caching. + * + * This file implements a simple LRU read-ahead cache. When the DMU reads + * a given block, it will often want other, nearby blocks soon thereafter. + * We take advantage of this by reading a larger disk region and caching + * the result. In the best case, this can turn 128 back-to-back 512-byte + * reads into a single 64k read followed by 127 cache hits; this reduces + * latency dramatically. In the worst case, it can turn an isolated 512-byte + * read into a 64k read, which doesn't affect latency all that much but is + * terribly wasteful of bandwidth. A more intelligent version of the cache + * could keep track of access patterns and not do read-ahead unless it sees + * at least two temporally close I/Os to the same region. Currently, only + * metadata I/O is inflated. A futher enhancement could take advantage of + * more semantic information about the I/O. And it could use something + * faster than an AVL tree; that was chosen solely for convenience. + * + * There are five cache operations: allocate, fill, read, write, evict. + * + * (1) Allocate. This reserves a cache entry for the specified region. + * We separate the allocate and fill operations so that multiple threads + * don't generate I/O for the same cache miss. + * + * (2) Fill. When the I/O for a cache miss completes, the fill routine + * places the data in the previously allocated cache entry. + * + * (3) Read. Read data from the cache. + * + * (4) Write. Update cache contents after write completion. + * + * (5) Evict. When allocating a new entry, we evict the oldest (LRU) entry + * if the total cache size exceeds zfs_vdev_cache_size. + */ + +/* + * These tunables are for performance analysis. + */ +/* + * All i/os smaller than zfs_vdev_cache_max will be turned into + * 1<ve_offset < ve2->ve_offset) + return (-1); + if (ve1->ve_offset > ve2->ve_offset) + return (1); + return (0); +} + +static int +vdev_cache_lastused_compare(const void *a1, const void *a2) +{ + const vdev_cache_entry_t *ve1 = a1; + const vdev_cache_entry_t *ve2 = a2; + + if (ddi_time_before(ve1->ve_lastused, ve2->ve_lastused)) + return (-1); + if (ddi_time_after(ve1->ve_lastused, ve2->ve_lastused)) + return (1); + + /* + * Among equally old entries, sort by offset to ensure uniqueness. + */ + return (vdev_cache_offset_compare(a1, a2)); +} + +/* + * Evict the specified entry from the cache. + */ +static void +vdev_cache_evict(vdev_cache_t *vc, vdev_cache_entry_t *ve) +{ + ASSERT(MUTEX_HELD(&vc->vc_lock)); + ASSERT(ve->ve_fill_io == NULL); + ASSERT(ve->ve_data != NULL); + + avl_remove(&vc->vc_lastused_tree, ve); + avl_remove(&vc->vc_offset_tree, ve); + zio_buf_free(ve->ve_data, VCBS); + kmem_free(ve, sizeof (vdev_cache_entry_t)); +} + +/* + * Allocate an entry in the cache. At the point we don't have the data, + * we're just creating a placeholder so that multiple threads don't all + * go off and read the same blocks. + */ +static vdev_cache_entry_t * +vdev_cache_allocate(zio_t *zio) +{ + vdev_cache_t *vc = &zio->io_vd->vdev_cache; + uint64_t offset = P2ALIGN(zio->io_offset, VCBS); + vdev_cache_entry_t *ve; + + ASSERT(MUTEX_HELD(&vc->vc_lock)); + + if (zfs_vdev_cache_size == 0) + return (NULL); + + /* + * If adding a new entry would exceed the cache size, + * evict the oldest entry (LRU). + */ + if ((avl_numnodes(&vc->vc_lastused_tree) << zfs_vdev_cache_bshift) > + zfs_vdev_cache_size) { + ve = avl_first(&vc->vc_lastused_tree); + if (ve->ve_fill_io != NULL) + return (NULL); + ASSERT(ve->ve_hits != 0); + vdev_cache_evict(vc, ve); + } + + ve = kmem_zalloc(sizeof (vdev_cache_entry_t), KM_SLEEP); + ve->ve_offset = offset; + ve->ve_lastused = ddi_get_lbolt(); + ve->ve_data = zio_buf_alloc(VCBS); + + avl_add(&vc->vc_offset_tree, ve); + avl_add(&vc->vc_lastused_tree, ve); + + return (ve); +} + +static void +vdev_cache_hit(vdev_cache_t *vc, vdev_cache_entry_t *ve, zio_t *zio) +{ + uint64_t cache_phase = P2PHASE(zio->io_offset, VCBS); + + ASSERT(MUTEX_HELD(&vc->vc_lock)); + ASSERT(ve->ve_fill_io == NULL); + + if (ve->ve_lastused != ddi_get_lbolt()) { + avl_remove(&vc->vc_lastused_tree, ve); + ve->ve_lastused = ddi_get_lbolt(); + avl_add(&vc->vc_lastused_tree, ve); + } + + ve->ve_hits++; + bcopy(ve->ve_data + cache_phase, zio->io_data, zio->io_size); +} + +/* + * Fill a previously allocated cache entry with data. + */ +static void +vdev_cache_fill(zio_t *fio) +{ + vdev_t *vd = fio->io_vd; + vdev_cache_t *vc = &vd->vdev_cache; + vdev_cache_entry_t *ve = fio->io_private; + zio_t *pio; + + ASSERT(fio->io_size == VCBS); + + /* + * Add data to the cache. + */ + mutex_enter(&vc->vc_lock); + + ASSERT(ve->ve_fill_io == fio); + ASSERT(ve->ve_offset == fio->io_offset); + ASSERT(ve->ve_data == fio->io_data); + + ve->ve_fill_io = NULL; + + /* + * Even if this cache line was invalidated by a missed write update, + * any reads that were queued up before the missed update are still + * valid, so we can satisfy them from this line before we evict it. + */ + while ((pio = zio_walk_parents(fio)) != NULL) + vdev_cache_hit(vc, ve, pio); + + if (fio->io_error || ve->ve_missed_update) + vdev_cache_evict(vc, ve); + + mutex_exit(&vc->vc_lock); +} + +/* + * Read data from the cache. Returns B_TRUE cache hit, B_FALSE on miss. + */ +boolean_t +vdev_cache_read(zio_t *zio) +{ + vdev_cache_t *vc = &zio->io_vd->vdev_cache; + vdev_cache_entry_t *ve, *ve_search; + uint64_t cache_offset = P2ALIGN(zio->io_offset, VCBS); + zio_t *fio; + ASSERTV(uint64_t cache_phase = P2PHASE(zio->io_offset, VCBS)); + + ASSERT(zio->io_type == ZIO_TYPE_READ); + + if (zio->io_flags & ZIO_FLAG_DONT_CACHE) + return (B_FALSE); + + if (zio->io_size > zfs_vdev_cache_max) + return (B_FALSE); + + /* + * If the I/O straddles two or more cache blocks, don't cache it. + */ + if (P2BOUNDARY(zio->io_offset, zio->io_size, VCBS)) + return (B_FALSE); + + ASSERT(cache_phase + zio->io_size <= VCBS); + + mutex_enter(&vc->vc_lock); + + ve_search = kmem_alloc(sizeof (vdev_cache_entry_t), KM_SLEEP); + ve_search->ve_offset = cache_offset; + ve = avl_find(&vc->vc_offset_tree, ve_search, NULL); + kmem_free(ve_search, sizeof (vdev_cache_entry_t)); + + if (ve != NULL) { + if (ve->ve_missed_update) { + mutex_exit(&vc->vc_lock); + return (B_FALSE); + } + + if ((fio = ve->ve_fill_io) != NULL) { + zio_vdev_io_bypass(zio); + zio_add_child(zio, fio); + mutex_exit(&vc->vc_lock); + VDCSTAT_BUMP(vdc_stat_delegations); + return (B_TRUE); + } + + vdev_cache_hit(vc, ve, zio); + zio_vdev_io_bypass(zio); + + mutex_exit(&vc->vc_lock); + VDCSTAT_BUMP(vdc_stat_hits); + return (B_TRUE); + } + + ve = vdev_cache_allocate(zio); + + if (ve == NULL) { + mutex_exit(&vc->vc_lock); + return (B_FALSE); + } + + fio = zio_vdev_delegated_io(zio->io_vd, cache_offset, + ve->ve_data, VCBS, ZIO_TYPE_READ, ZIO_PRIORITY_NOW, + ZIO_FLAG_DONT_CACHE, vdev_cache_fill, ve); + + ve->ve_fill_io = fio; + zio_vdev_io_bypass(zio); + zio_add_child(zio, fio); + + mutex_exit(&vc->vc_lock); + zio_nowait(fio); + VDCSTAT_BUMP(vdc_stat_misses); + + return (B_TRUE); +} + +/* + * Update cache contents upon write completion. + */ +void +vdev_cache_write(zio_t *zio) +{ + vdev_cache_t *vc = &zio->io_vd->vdev_cache; + vdev_cache_entry_t *ve, ve_search; + uint64_t io_start = zio->io_offset; + uint64_t io_end = io_start + zio->io_size; + uint64_t min_offset = P2ALIGN(io_start, VCBS); + uint64_t max_offset = P2ROUNDUP(io_end, VCBS); + avl_index_t where; + + ASSERT(zio->io_type == ZIO_TYPE_WRITE); + + mutex_enter(&vc->vc_lock); + + ve_search.ve_offset = min_offset; + ve = avl_find(&vc->vc_offset_tree, &ve_search, &where); + + if (ve == NULL) + ve = avl_nearest(&vc->vc_offset_tree, where, AVL_AFTER); + + while (ve != NULL && ve->ve_offset < max_offset) { + uint64_t start = MAX(ve->ve_offset, io_start); + uint64_t end = MIN(ve->ve_offset + VCBS, io_end); + + if (ve->ve_fill_io != NULL) { + ve->ve_missed_update = 1; + } else { + bcopy((char *)zio->io_data + start - io_start, + ve->ve_data + start - ve->ve_offset, end - start); + } + ve = AVL_NEXT(&vc->vc_offset_tree, ve); + } + mutex_exit(&vc->vc_lock); +} + +void +vdev_cache_purge(vdev_t *vd) +{ + vdev_cache_t *vc = &vd->vdev_cache; + vdev_cache_entry_t *ve; + + mutex_enter(&vc->vc_lock); + while ((ve = avl_first(&vc->vc_offset_tree)) != NULL) + vdev_cache_evict(vc, ve); + mutex_exit(&vc->vc_lock); +} + +void +vdev_cache_init(vdev_t *vd) +{ + vdev_cache_t *vc = &vd->vdev_cache; + + mutex_init(&vc->vc_lock, NULL, MUTEX_DEFAULT, NULL); + + avl_create(&vc->vc_offset_tree, vdev_cache_offset_compare, + sizeof (vdev_cache_entry_t), + offsetof(struct vdev_cache_entry, ve_offset_node)); + + avl_create(&vc->vc_lastused_tree, vdev_cache_lastused_compare, + sizeof (vdev_cache_entry_t), + offsetof(struct vdev_cache_entry, ve_lastused_node)); +} + +void +vdev_cache_fini(vdev_t *vd) +{ + vdev_cache_t *vc = &vd->vdev_cache; + + vdev_cache_purge(vd); + + avl_destroy(&vc->vc_offset_tree); + avl_destroy(&vc->vc_lastused_tree); + + mutex_destroy(&vc->vc_lock); +} + +void +vdev_cache_stat_init(void) +{ + vdc_ksp = kstat_create("zfs", 0, "vdev_cache_stats", "misc", + KSTAT_TYPE_NAMED, sizeof (vdc_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + if (vdc_ksp != NULL) { + vdc_ksp->ks_data = &vdc_stats; + kstat_install(vdc_ksp); + } +} + +void +vdev_cache_stat_fini(void) +{ + if (vdc_ksp != NULL) { + kstat_delete(vdc_ksp); + vdc_ksp = NULL; + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_vdev_cache_max, int, 0644); +MODULE_PARM_DESC(zfs_vdev_cache_max, "Inflate reads small than max"); + +module_param(zfs_vdev_cache_size, int, 0444); +MODULE_PARM_DESC(zfs_vdev_cache_size, "Total size of the per-disk cache"); + +module_param(zfs_vdev_cache_bshift, int, 0644); +MODULE_PARM_DESC(zfs_vdev_cache_bshift, "Shift size to inflate reads too"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/vdev_disk.c +++ linux-4.4.0/zfs/module/zfs/vdev_disk.c @@ -0,0 +1,850 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Rewritten for Linux by Brian Behlendorf . + * LLNL-CODE-403049. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include + +char *zfs_vdev_scheduler = VDEV_SCHEDULER; +static void *zfs_vdev_holder = VDEV_HOLDER; + +/* + * Virtual device vector for disks. + */ +typedef struct dio_request { + struct completion dr_comp; /* Completion for sync IO */ + zio_t *dr_zio; /* Parent ZIO */ + atomic_t dr_ref; /* References */ + int dr_wait; /* Wait for IO */ + int dr_error; /* Bio error */ + int dr_bio_count; /* Count of bio's */ + struct bio *dr_bio[0]; /* Attached bio's */ +} dio_request_t; + + +#ifdef HAVE_OPEN_BDEV_EXCLUSIVE +static fmode_t +vdev_bdev_mode(int smode) +{ + fmode_t mode = 0; + + ASSERT3S(smode & (FREAD | FWRITE), !=, 0); + + if (smode & FREAD) + mode |= FMODE_READ; + + if (smode & FWRITE) + mode |= FMODE_WRITE; + + return (mode); +} +#else +static int +vdev_bdev_mode(int smode) +{ + int mode = 0; + + ASSERT3S(smode & (FREAD | FWRITE), !=, 0); + + if ((smode & FREAD) && !(smode & FWRITE)) + mode = MS_RDONLY; + + return (mode); +} +#endif /* HAVE_OPEN_BDEV_EXCLUSIVE */ + +static uint64_t +bdev_capacity(struct block_device *bdev) +{ + struct hd_struct *part = bdev->bd_part; + + /* The partition capacity referenced by the block device */ + if (part) + return (part->nr_sects << 9); + + /* Otherwise assume the full device capacity */ + return (get_capacity(bdev->bd_disk) << 9); +} + +static void +vdev_disk_error(zio_t *zio) +{ +#ifdef ZFS_DEBUG + printk("ZFS: zio error=%d type=%d offset=%llu size=%llu " + "flags=%x delay=%llu\n", zio->io_error, zio->io_type, + (u_longlong_t)zio->io_offset, (u_longlong_t)zio->io_size, + zio->io_flags, (u_longlong_t)zio->io_delay); +#endif +} + +/* + * Use the Linux 'noop' elevator for zfs managed block devices. This + * strikes the ideal balance by allowing the zfs elevator to do all + * request ordering and prioritization. While allowing the Linux + * elevator to do the maximum front/back merging allowed by the + * physical device. This yields the largest possible requests for + * the device with the lowest total overhead. + */ +static int +vdev_elevator_switch(vdev_t *v, char *elevator) +{ + vdev_disk_t *vd = v->vdev_tsd; + struct block_device *bdev = vd->vd_bdev; + struct request_queue *q = bdev_get_queue(bdev); + char *device = bdev->bd_disk->disk_name; + int error; + + /* + * Skip devices which are not whole disks (partitions). + * Device-mapper devices are excepted since they may be whole + * disks despite the vdev_wholedisk flag, in which case we can + * and should switch the elevator. If the device-mapper device + * does not have an elevator (i.e. dm-raid, dm-crypt, etc.) the + * "Skip devices without schedulers" check below will fail. + */ + if (!v->vdev_wholedisk && strncmp(device, "dm-", 3) != 0) + return (0); + + /* Skip devices without schedulers (loop, ram, dm, etc) */ + if (!q->elevator || !blk_queue_stackable(q)) + return (0); + + /* Leave existing scheduler when set to "none" */ + if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0) + return (0); + +#ifdef HAVE_ELEVATOR_CHANGE + error = elevator_change(q, elevator); +#else + /* + * For pre-2.6.36 kernels elevator_change() is not available. + * Therefore we fall back to using a usermodehelper to echo the + * elevator into sysfs; This requires /bin/echo and sysfs to be + * mounted which may not be true early in the boot process. + */ +#define SET_SCHEDULER_CMD \ + "exec 0/sys/block/%s/queue/scheduler " \ + " 2>/dev/null; " \ + "echo %s" + + { + char *argv[] = { "/bin/sh", "-c", NULL, NULL }; + char *envp[] = { NULL }; + + argv[2] = kmem_asprintf(SET_SCHEDULER_CMD, device, elevator); + error = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); + strfree(argv[2]); + } +#endif /* HAVE_ELEVATOR_CHANGE */ + if (error) + printk("ZFS: Unable to set \"%s\" scheduler for %s (%s): %d\n", + elevator, v->vdev_path, device, error); + + return (error); +} + +/* + * Expanding a whole disk vdev involves invoking BLKRRPART on the + * whole disk device. This poses a problem, because BLKRRPART will + * return EBUSY if one of the disk's partitions is open. That's why + * we have to do it here, just before opening the data partition. + * Unfortunately, BLKRRPART works by dropping all partitions and + * recreating them, which means that for a short time window, all + * /dev/sdxN device files disappear (until udev recreates them). + * This means two things: + * - When we open the data partition just after a BLKRRPART, we + * can't do it using the normal device file path because of the + * obvious race condition with udev. Instead, we use reliable + * kernel APIs to get a handle to the new partition device from + * the whole disk device. + * - Because vdev_disk_open() initially needs to find the device + * using its path, multiple vdev_disk_open() invocations in + * short succession on the same disk with BLKRRPARTs in the + * middle have a high probability of failure (because of the + * race condition with udev). A typical situation where this + * might happen is when the zpool userspace tool does a + * TRYIMPORT immediately followed by an IMPORT. For this + * reason, we only invoke BLKRRPART in the module when strictly + * necessary (zpool online -e case), and rely on userspace to + * do it when possible. + */ +static struct block_device * +vdev_disk_rrpart(const char *path, int mode, vdev_disk_t *vd) +{ +#if defined(HAVE_3ARG_BLKDEV_GET) && defined(HAVE_GET_GENDISK) + struct block_device *bdev, *result = ERR_PTR(-ENXIO); + struct gendisk *disk; + int error, partno; + + bdev = vdev_bdev_open(path, vdev_bdev_mode(mode), zfs_vdev_holder); + if (IS_ERR(bdev)) + return (bdev); + + disk = get_gendisk(bdev->bd_dev, &partno); + vdev_bdev_close(bdev, vdev_bdev_mode(mode)); + + if (disk) { + bdev = bdget(disk_devt(disk)); + if (bdev) { + error = blkdev_get(bdev, vdev_bdev_mode(mode), vd); + if (error == 0) + error = ioctl_by_bdev(bdev, BLKRRPART, 0); + vdev_bdev_close(bdev, vdev_bdev_mode(mode)); + } + + bdev = bdget_disk(disk, partno); + if (bdev) { + error = blkdev_get(bdev, + vdev_bdev_mode(mode) | FMODE_EXCL, vd); + if (error == 0) + result = bdev; + } + put_disk(disk); + } + + return (result); +#else + return (ERR_PTR(-EOPNOTSUPP)); +#endif /* defined(HAVE_3ARG_BLKDEV_GET) && defined(HAVE_GET_GENDISK) */ +} + +static int +vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, + uint64_t *ashift) +{ + struct block_device *bdev = ERR_PTR(-ENXIO); + vdev_disk_t *vd; + int mode, block_size; + + /* Must have a pathname and it must be absolute. */ + if (v->vdev_path == NULL || v->vdev_path[0] != '/') { + v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; + return (EINVAL); + } + + /* + * Reopen the device if it's not currently open. Otherwise, + * just update the physical size of the device. + */ + if (v->vdev_tsd != NULL) { + ASSERT(v->vdev_reopening); + vd = v->vdev_tsd; + goto skip_open; + } + + vd = kmem_zalloc(sizeof (vdev_disk_t), KM_SLEEP); + if (vd == NULL) + return (ENOMEM); + + /* + * Devices are always opened by the path provided at configuration + * time. This means that if the provided path is a udev by-id path + * then drives may be recabled without an issue. If the provided + * path is a udev by-path path, then the physical location information + * will be preserved. This can be critical for more complicated + * configurations where drives are located in specific physical + * locations to maximize the systems tolerence to component failure. + * Alternatively, you can provide your own udev rule to flexibly map + * the drives as you see fit. It is not advised that you use the + * /dev/[hd]d devices which may be reordered due to probing order. + * Devices in the wrong locations will be detected by the higher + * level vdev validation. + */ + mode = spa_mode(v->vdev_spa); + if (v->vdev_wholedisk && v->vdev_expanding) + bdev = vdev_disk_rrpart(v->vdev_path, mode, vd); + if (IS_ERR(bdev)) + bdev = vdev_bdev_open(v->vdev_path, + vdev_bdev_mode(mode), zfs_vdev_holder); + if (IS_ERR(bdev)) { + kmem_free(vd, sizeof (vdev_disk_t)); + return (-PTR_ERR(bdev)); + } + + v->vdev_tsd = vd; + vd->vd_bdev = bdev; + +skip_open: + /* Determine the physical block size */ + block_size = vdev_bdev_block_size(vd->vd_bdev); + + /* Clear the nowritecache bit, causes vdev_reopen() to try again. */ + v->vdev_nowritecache = B_FALSE; + + /* Inform the ZIO pipeline that we are non-rotational */ + v->vdev_nonrot = blk_queue_nonrot(bdev_get_queue(vd->vd_bdev)); + + /* Physical volume size in bytes */ + *psize = bdev_capacity(vd->vd_bdev); + + /* TODO: report possible expansion size */ + *max_psize = *psize; + + /* Based on the minimum sector size set the block size */ + *ashift = highbit64(MAX(block_size, SPA_MINBLOCKSIZE)) - 1; + + /* Try to set the io scheduler elevator algorithm */ + (void) vdev_elevator_switch(v, zfs_vdev_scheduler); + + return (0); +} + +static void +vdev_disk_close(vdev_t *v) +{ + vdev_disk_t *vd = v->vdev_tsd; + + if (v->vdev_reopening || vd == NULL) + return; + + if (vd->vd_bdev != NULL) + vdev_bdev_close(vd->vd_bdev, + vdev_bdev_mode(spa_mode(v->vdev_spa))); + + kmem_free(vd, sizeof (vdev_disk_t)); + v->vdev_tsd = NULL; +} + +static dio_request_t * +vdev_disk_dio_alloc(int bio_count) +{ + dio_request_t *dr; + int i; + + dr = kmem_zalloc(sizeof (dio_request_t) + + sizeof (struct bio *) * bio_count, KM_SLEEP); + if (dr) { + init_completion(&dr->dr_comp); + atomic_set(&dr->dr_ref, 0); + dr->dr_bio_count = bio_count; + dr->dr_error = 0; + + for (i = 0; i < dr->dr_bio_count; i++) + dr->dr_bio[i] = NULL; + } + + return (dr); +} + +static void +vdev_disk_dio_free(dio_request_t *dr) +{ + int i; + + for (i = 0; i < dr->dr_bio_count; i++) + if (dr->dr_bio[i]) + bio_put(dr->dr_bio[i]); + + kmem_free(dr, sizeof (dio_request_t) + + sizeof (struct bio *) * dr->dr_bio_count); +} + +static void +vdev_disk_dio_get(dio_request_t *dr) +{ + atomic_inc(&dr->dr_ref); +} + +static int +vdev_disk_dio_put(dio_request_t *dr) +{ + int rc = atomic_dec_return(&dr->dr_ref); + + /* + * Free the dio_request when the last reference is dropped and + * ensure zio_interpret is called only once with the correct zio + */ + if (rc == 0) { + zio_t *zio = dr->dr_zio; + int error = dr->dr_error; + + vdev_disk_dio_free(dr); + + if (zio) { + zio->io_delay = jiffies_64 - zio->io_delay; + zio->io_error = error; + ASSERT3S(zio->io_error, >=, 0); + if (zio->io_error) + vdev_disk_error(zio); + zio_interrupt(zio); + } + } + + return (rc); +} + +BIO_END_IO_PROTO(vdev_disk_physio_completion, bio, error) +{ + dio_request_t *dr = bio->bi_private; + int rc; + int wait; + + if (dr->dr_error == 0) { +#ifdef HAVE_1ARG_BIO_END_IO_T + dr->dr_error = -(bio->bi_error); +#else + if (error) + dr->dr_error = -(error); + else if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) + dr->dr_error = EIO; +#endif + } + + wait = dr->dr_wait; + /* Drop reference aquired by __vdev_disk_physio */ + rc = vdev_disk_dio_put(dr); + + /* Wake up synchronous waiter this is the last outstanding bio */ + if (wait && rc == 1) + complete(&dr->dr_comp); +} + +static inline unsigned long +bio_nr_pages(void *bio_ptr, unsigned int bio_size) +{ + return ((((unsigned long)bio_ptr + bio_size + PAGE_SIZE - 1) >> + PAGE_SHIFT) - ((unsigned long)bio_ptr >> PAGE_SHIFT)); +} + +static unsigned int +bio_map(struct bio *bio, void *bio_ptr, unsigned int bio_size) +{ + unsigned int offset, size, i; + struct page *page; + + offset = offset_in_page(bio_ptr); + for (i = 0; i < bio->bi_max_vecs; i++) { + size = PAGE_SIZE - offset; + + if (bio_size <= 0) + break; + + if (size > bio_size) + size = bio_size; + + if (is_vmalloc_addr(bio_ptr)) + page = vmalloc_to_page(bio_ptr); + else + page = virt_to_page(bio_ptr); + + /* + * Some network related block device uses tcp_sendpage, which + * doesn't behave well when using 0-count page, this is a + * safety net to catch them. + */ + ASSERT3S(page_count(page), >, 0); + + if (bio_add_page(bio, page, size, offset) != size) + break; + + bio_ptr += size; + bio_size -= size; + offset = 0; + } + + return (bio_size); +} + +static inline void +vdev_submit_bio(int rw, struct bio *bio) +{ +#ifdef HAVE_CURRENT_BIO_TAIL + struct bio **bio_tail = current->bio_tail; + current->bio_tail = NULL; + submit_bio(rw, bio); + current->bio_tail = bio_tail; +#else + struct bio_list *bio_list = current->bio_list; + current->bio_list = NULL; + submit_bio(rw, bio); + current->bio_list = bio_list; +#endif +} + +static int +__vdev_disk_physio(struct block_device *bdev, zio_t *zio, caddr_t kbuf_ptr, + size_t kbuf_size, uint64_t kbuf_offset, int flags, int wait) +{ + dio_request_t *dr; + caddr_t bio_ptr; + uint64_t bio_offset; + int rw, bio_size, bio_count = 16; + int i = 0, error = 0; + + ASSERT3U(kbuf_offset + kbuf_size, <=, bdev->bd_inode->i_size); + +retry: + dr = vdev_disk_dio_alloc(bio_count); + if (dr == NULL) + return (ENOMEM); + + if (zio && !(zio->io_flags & (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD))) + bio_set_flags_failfast(bdev, &flags); + + rw = flags; + dr->dr_zio = zio; + dr->dr_wait = wait; + + /* + * When the IO size exceeds the maximum bio size for the request + * queue we are forced to break the IO in multiple bio's and wait + * for them all to complete. Ideally, all pool users will set + * their volume block size to match the maximum request size and + * the common case will be one bio per vdev IO request. + */ + bio_ptr = kbuf_ptr; + bio_offset = kbuf_offset; + bio_size = kbuf_size; + for (i = 0; i <= dr->dr_bio_count; i++) { + + /* Finished constructing bio's for given buffer */ + if (bio_size <= 0) + break; + + /* + * By default only 'bio_count' bio's per dio are allowed. + * However, if we find ourselves in a situation where more + * are needed we allocate a larger dio and warn the user. + */ + if (dr->dr_bio_count == i) { + vdev_disk_dio_free(dr); + bio_count *= 2; + goto retry; + } + + /* bio_alloc() with __GFP_WAIT never returns NULL */ + dr->dr_bio[i] = bio_alloc(GFP_NOIO, + MIN(bio_nr_pages(bio_ptr, bio_size), BIO_MAX_PAGES)); + if (unlikely(dr->dr_bio[i] == NULL)) { + vdev_disk_dio_free(dr); + return (ENOMEM); + } + + /* Matching put called by vdev_disk_physio_completion */ + vdev_disk_dio_get(dr); + + dr->dr_bio[i]->bi_bdev = bdev; + BIO_BI_SECTOR(dr->dr_bio[i]) = bio_offset >> 9; + dr->dr_bio[i]->bi_rw = rw; + dr->dr_bio[i]->bi_end_io = vdev_disk_physio_completion; + dr->dr_bio[i]->bi_private = dr; + + /* Remaining size is returned to become the new size */ + bio_size = bio_map(dr->dr_bio[i], bio_ptr, bio_size); + + /* Advance in buffer and construct another bio if needed */ + bio_ptr += BIO_BI_SIZE(dr->dr_bio[i]); + bio_offset += BIO_BI_SIZE(dr->dr_bio[i]); + } + + /* Extra reference to protect dio_request during vdev_submit_bio */ + vdev_disk_dio_get(dr); + if (zio) + zio->io_delay = jiffies_64; + + /* Submit all bio's associated with this dio */ + for (i = 0; i < dr->dr_bio_count; i++) + if (dr->dr_bio[i]) + vdev_submit_bio(rw, dr->dr_bio[i]); + + /* + * On synchronous blocking requests we wait for all bio the completion + * callbacks to run. We will be woken when the last callback runs + * for this dio. We are responsible for putting the last dio_request + * reference will in turn put back the last bio references. The + * only synchronous consumer is vdev_disk_read_rootlabel() all other + * IO originating from vdev_disk_io_start() is asynchronous. + */ + if (wait) { + wait_for_completion(&dr->dr_comp); + error = dr->dr_error; + ASSERT3S(atomic_read(&dr->dr_ref), ==, 1); + } + + (void) vdev_disk_dio_put(dr); + + return (error); +} + +int +vdev_disk_physio(struct block_device *bdev, caddr_t kbuf, + size_t size, uint64_t offset, int flags) +{ + bio_set_flags_failfast(bdev, &flags); + return (__vdev_disk_physio(bdev, NULL, kbuf, size, offset, flags, 1)); +} + +BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, rc) +{ + zio_t *zio = bio->bi_private; +#ifdef HAVE_1ARG_BIO_END_IO_T + int rc = bio->bi_error; +#endif + + zio->io_delay = jiffies_64 - zio->io_delay; + zio->io_error = -rc; + if (rc && (rc == -EOPNOTSUPP)) + zio->io_vd->vdev_nowritecache = B_TRUE; + + bio_put(bio); + ASSERT3S(zio->io_error, >=, 0); + if (zio->io_error) + vdev_disk_error(zio); + zio_interrupt(zio); +} + +static int +vdev_disk_io_flush(struct block_device *bdev, zio_t *zio) +{ + struct request_queue *q; + struct bio *bio; + + q = bdev_get_queue(bdev); + if (!q) + return (ENXIO); + + bio = bio_alloc(GFP_NOIO, 0); + /* bio_alloc() with __GFP_WAIT never returns NULL */ + if (unlikely(bio == NULL)) + return (ENOMEM); + + bio->bi_end_io = vdev_disk_io_flush_completion; + bio->bi_private = zio; + bio->bi_bdev = bdev; + zio->io_delay = jiffies_64; + vdev_submit_bio(VDEV_WRITE_FLUSH_FUA, bio); + invalidate_bdev(bdev); + + return (0); +} + +static void +vdev_disk_io_start(zio_t *zio) +{ + vdev_t *v = zio->io_vd; + vdev_disk_t *vd = v->vdev_tsd; + zio_priority_t pri = zio->io_priority; + int flags, error; + + switch (zio->io_type) { + case ZIO_TYPE_IOCTL: + + if (!vdev_readable(v)) { + zio->io_error = SET_ERROR(ENXIO); + zio_interrupt(zio); + return; + } + + switch (zio->io_cmd) { + case DKIOCFLUSHWRITECACHE: + + if (zfs_nocacheflush) + break; + + if (v->vdev_nowritecache) { + zio->io_error = SET_ERROR(ENOTSUP); + break; + } + + error = vdev_disk_io_flush(vd->vd_bdev, zio); + if (error == 0) + return; + + zio->io_error = error; + if (error == ENOTSUP) + v->vdev_nowritecache = B_TRUE; + + break; + + default: + zio->io_error = SET_ERROR(ENOTSUP); + } + + zio_execute(zio); + return; + case ZIO_TYPE_WRITE: + if ((pri == ZIO_PRIORITY_SYNC_WRITE) && (v->vdev_nonrot)) + flags = WRITE_SYNC; + else + flags = WRITE; + break; + + case ZIO_TYPE_READ: + if ((pri == ZIO_PRIORITY_SYNC_READ) && (v->vdev_nonrot)) + flags = READ_SYNC; + else + flags = READ; + break; + + default: + zio->io_error = SET_ERROR(ENOTSUP); + zio_interrupt(zio); + return; + } + + error = __vdev_disk_physio(vd->vd_bdev, zio, zio->io_data, + zio->io_size, zio->io_offset, flags, 0); + if (error) { + zio->io_error = error; + zio_interrupt(zio); + return; + } +} + +static void +vdev_disk_io_done(zio_t *zio) +{ + /* + * If the device returned EIO, we revalidate the media. If it is + * determined the media has changed this triggers the asynchronous + * removal of the device from the configuration. + */ + if (zio->io_error == EIO) { + vdev_t *v = zio->io_vd; + vdev_disk_t *vd = v->vdev_tsd; + + if (check_disk_change(vd->vd_bdev)) { + vdev_bdev_invalidate(vd->vd_bdev); + v->vdev_remove_wanted = B_TRUE; + spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); + } + } +} + +static void +vdev_disk_hold(vdev_t *vd) +{ + ASSERT(spa_config_held(vd->vdev_spa, SCL_STATE, RW_WRITER)); + + /* We must have a pathname, and it must be absolute. */ + if (vd->vdev_path == NULL || vd->vdev_path[0] != '/') + return; + + /* + * Only prefetch path and devid info if the device has + * never been opened. + */ + if (vd->vdev_tsd != NULL) + return; + + /* XXX: Implement me as a vnode lookup for the device */ + vd->vdev_name_vp = NULL; + vd->vdev_devid_vp = NULL; +} + +static void +vdev_disk_rele(vdev_t *vd) +{ + ASSERT(spa_config_held(vd->vdev_spa, SCL_STATE, RW_WRITER)); + + /* XXX: Implement me as a vnode rele for the device */ +} + +vdev_ops_t vdev_disk_ops = { + vdev_disk_open, + vdev_disk_close, + vdev_default_asize, + vdev_disk_io_start, + vdev_disk_io_done, + NULL, + vdev_disk_hold, + vdev_disk_rele, + VDEV_TYPE_DISK, /* name of this vdev type */ + B_TRUE /* leaf vdev */ +}; + +/* + * Given the root disk device devid or pathname, read the label from + * the device, and construct a configuration nvlist. + */ +int +vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config) +{ + struct block_device *bdev; + vdev_label_t *label; + uint64_t s, size; + int i; + + bdev = vdev_bdev_open(devpath, vdev_bdev_mode(FREAD), zfs_vdev_holder); + if (IS_ERR(bdev)) + return (-PTR_ERR(bdev)); + + s = bdev_capacity(bdev); + if (s == 0) { + vdev_bdev_close(bdev, vdev_bdev_mode(FREAD)); + return (EIO); + } + + size = P2ALIGN_TYPED(s, sizeof (vdev_label_t), uint64_t); + label = vmem_alloc(sizeof (vdev_label_t), KM_SLEEP); + + for (i = 0; i < VDEV_LABELS; i++) { + uint64_t offset, state, txg = 0; + + /* read vdev label */ + offset = vdev_label_offset(size, i, 0); + if (vdev_disk_physio(bdev, (caddr_t)label, + VDEV_SKIP_SIZE + VDEV_PHYS_SIZE, offset, READ_SYNC) != 0) + continue; + + if (nvlist_unpack(label->vl_vdev_phys.vp_nvlist, + sizeof (label->vl_vdev_phys.vp_nvlist), config, 0) != 0) { + *config = NULL; + continue; + } + + if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_STATE, + &state) != 0 || state >= POOL_STATE_DESTROYED) { + nvlist_free(*config); + *config = NULL; + continue; + } + + if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_TXG, + &txg) != 0 || txg == 0) { + nvlist_free(*config); + *config = NULL; + continue; + } + + break; + } + + vmem_free(label, sizeof (vdev_label_t)); + vdev_bdev_close(bdev, vdev_bdev_mode(FREAD)); + + return (0); +} + +module_param(zfs_vdev_scheduler, charp, 0644); +MODULE_PARM_DESC(zfs_vdev_scheduler, "I/O scheduler"); --- linux-4.4.0.orig/zfs/module/zfs/vdev_file.c +++ linux-4.4.0/zfs/module/zfs/vdev_file.c @@ -0,0 +1,261 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Virtual device vector for files. + */ + +static void +vdev_file_hold(vdev_t *vd) +{ + ASSERT(vd->vdev_path != NULL); +} + +static void +vdev_file_rele(vdev_t *vd) +{ + ASSERT(vd->vdev_path != NULL); +} + +static int +vdev_file_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, + uint64_t *ashift) +{ + vdev_file_t *vf; + vnode_t *vp; + vattr_t vattr; + int error; + + /* Rotational optimizations only make sense on block devices */ + vd->vdev_nonrot = B_TRUE; + + /* + * We must have a pathname, and it must be absolute. + */ + if (vd->vdev_path == NULL || vd->vdev_path[0] != '/') { + vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; + return (SET_ERROR(EINVAL)); + } + + /* + * Reopen the device if it's not currently open. Otherwise, + * just update the physical size of the device. + */ + if (vd->vdev_tsd != NULL) { + ASSERT(vd->vdev_reopening); + vf = vd->vdev_tsd; + goto skip_open; + } + + vf = vd->vdev_tsd = kmem_zalloc(sizeof (vdev_file_t), KM_SLEEP); + + /* + * We always open the files from the root of the global zone, even if + * we're in a local zone. If the user has gotten to this point, the + * administrator has already decided that the pool should be available + * to local zone users, so the underlying devices should be as well. + */ + ASSERT(vd->vdev_path != NULL && vd->vdev_path[0] == '/'); + error = vn_openat(vd->vdev_path + 1, UIO_SYSSPACE, + spa_mode(vd->vdev_spa) | FOFFMAX, 0, &vp, 0, 0, rootdir, -1); + + if (error) { + vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; + return (error); + } + + vf->vf_vnode = vp; + +#ifdef _KERNEL + /* + * Make sure it's a regular file. + */ + if (vp->v_type != VREG) { + vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; + return (SET_ERROR(ENODEV)); + } +#endif + +skip_open: + /* + * Determine the physical size of the file. + */ + vattr.va_mask = AT_SIZE; + error = VOP_GETATTR(vf->vf_vnode, &vattr, 0, kcred, NULL); + if (error) { + vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; + return (error); + } + + *max_psize = *psize = vattr.va_size; + *ashift = SPA_MINBLOCKSHIFT; + + return (0); +} + +static void +vdev_file_close(vdev_t *vd) +{ + vdev_file_t *vf = vd->vdev_tsd; + + if (vd->vdev_reopening || vf == NULL) + return; + + if (vf->vf_vnode != NULL) { + (void) VOP_PUTPAGE(vf->vf_vnode, 0, 0, B_INVAL, kcred, NULL); + (void) VOP_CLOSE(vf->vf_vnode, spa_mode(vd->vdev_spa), 1, 0, + kcred, NULL); + } + + vd->vdev_delayed_close = B_FALSE; + kmem_free(vf, sizeof (vdev_file_t)); + vd->vdev_tsd = NULL; +} + +static void +vdev_file_io_strategy(void *arg) +{ + zio_t *zio = (zio_t *)arg; + vdev_t *vd = zio->io_vd; + vdev_file_t *vf = vd->vdev_tsd; + ssize_t resid; + + zio->io_error = vn_rdwr(zio->io_type == ZIO_TYPE_READ ? + UIO_READ : UIO_WRITE, vf->vf_vnode, zio->io_data, + zio->io_size, zio->io_offset, UIO_SYSSPACE, + 0, RLIM64_INFINITY, kcred, &resid); + + if (resid != 0 && zio->io_error == 0) + zio->io_error = SET_ERROR(ENOSPC); + + zio_interrupt(zio); +} + +static void +vdev_file_io_fsync(void *arg) +{ + zio_t *zio = (zio_t *)arg; + vdev_file_t *vf = zio->io_vd->vdev_tsd; + + zio->io_error = VOP_FSYNC(vf->vf_vnode, FSYNC | FDSYNC, kcred, NULL); + + zio_interrupt(zio); +} + +static void +vdev_file_io_start(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + vdev_file_t *vf = vd->vdev_tsd; + + if (zio->io_type == ZIO_TYPE_IOCTL) { + /* XXPOLICY */ + if (!vdev_readable(vd)) { + zio->io_error = SET_ERROR(ENXIO); + zio_interrupt(zio); + return; + } + + switch (zio->io_cmd) { + case DKIOCFLUSHWRITECACHE: + + if (zfs_nocacheflush) + break; + + /* + * We cannot safely call vfs_fsync() when PF_FSTRANS + * is set in the current context. Filesystems like + * XFS include sanity checks to verify it is not + * already set, see xfs_vm_writepage(). Therefore + * the sync must be dispatched to a different context. + */ + if (spl_fstrans_check()) { + VERIFY3U(taskq_dispatch(system_taskq, + vdev_file_io_fsync, zio, TQ_SLEEP), !=, 0); + return; + } + + zio->io_error = VOP_FSYNC(vf->vf_vnode, FSYNC | FDSYNC, + kcred, NULL); + break; + default: + zio->io_error = SET_ERROR(ENOTSUP); + } + + zio_execute(zio); + return; + } + + VERIFY3U(taskq_dispatch(system_taskq, vdev_file_io_strategy, zio, + TQ_SLEEP), !=, 0); +} + +/* ARGSUSED */ +static void +vdev_file_io_done(zio_t *zio) +{ +} + +vdev_ops_t vdev_file_ops = { + vdev_file_open, + vdev_file_close, + vdev_default_asize, + vdev_file_io_start, + vdev_file_io_done, + NULL, + vdev_file_hold, + vdev_file_rele, + VDEV_TYPE_FILE, /* name of this vdev type */ + B_TRUE /* leaf vdev */ +}; + +/* + * From userland we access disks just like files. + */ +#ifndef _KERNEL + +vdev_ops_t vdev_disk_ops = { + vdev_file_open, + vdev_file_close, + vdev_default_asize, + vdev_file_io_start, + vdev_file_io_done, + NULL, + vdev_file_hold, + vdev_file_rele, + VDEV_TYPE_DISK, /* name of this vdev type */ + B_TRUE /* leaf vdev */ +}; + +#endif --- linux-4.4.0.orig/zfs/module/zfs/vdev_label.c +++ linux-4.4.0/zfs/module/zfs/vdev_label.c @@ -0,0 +1,1282 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +/* + * Virtual Device Labels + * --------------------- + * + * The vdev label serves several distinct purposes: + * + * 1. Uniquely identify this device as part of a ZFS pool and confirm its + * identity within the pool. + * + * 2. Verify that all the devices given in a configuration are present + * within the pool. + * + * 3. Determine the uberblock for the pool. + * + * 4. In case of an import operation, determine the configuration of the + * toplevel vdev of which it is a part. + * + * 5. If an import operation cannot find all the devices in the pool, + * provide enough information to the administrator to determine which + * devices are missing. + * + * It is important to note that while the kernel is responsible for writing the + * label, it only consumes the information in the first three cases. The + * latter information is only consumed in userland when determining the + * configuration to import a pool. + * + * + * Label Organization + * ------------------ + * + * Before describing the contents of the label, it's important to understand how + * the labels are written and updated with respect to the uberblock. + * + * When the pool configuration is altered, either because it was newly created + * or a device was added, we want to update all the labels such that we can deal + * with fatal failure at any point. To this end, each disk has two labels which + * are updated before and after the uberblock is synced. Assuming we have + * labels and an uberblock with the following transaction groups: + * + * L1 UB L2 + * +------+ +------+ +------+ + * | | | | | | + * | t10 | | t10 | | t10 | + * | | | | | | + * +------+ +------+ +------+ + * + * In this stable state, the labels and the uberblock were all updated within + * the same transaction group (10). Each label is mirrored and checksummed, so + * that we can detect when we fail partway through writing the label. + * + * In order to identify which labels are valid, the labels are written in the + * following manner: + * + * 1. For each vdev, update 'L1' to the new label + * 2. Update the uberblock + * 3. For each vdev, update 'L2' to the new label + * + * Given arbitrary failure, we can determine the correct label to use based on + * the transaction group. If we fail after updating L1 but before updating the + * UB, we will notice that L1's transaction group is greater than the uberblock, + * so L2 must be valid. If we fail after writing the uberblock but before + * writing L2, we will notice that L2's transaction group is less than L1, and + * therefore L1 is valid. + * + * Another added complexity is that not every label is updated when the config + * is synced. If we add a single device, we do not want to have to re-write + * every label for every device in the pool. This means that both L1 and L2 may + * be older than the pool uberblock, because the necessary information is stored + * on another vdev. + * + * + * On-disk Format + * -------------- + * + * The vdev label consists of two distinct parts, and is wrapped within the + * vdev_label_t structure. The label includes 8k of padding to permit legacy + * VTOC disk labels, but is otherwise ignored. + * + * The first half of the label is a packed nvlist which contains pool wide + * properties, per-vdev properties, and configuration information. It is + * described in more detail below. + * + * The latter half of the label consists of a redundant array of uberblocks. + * These uberblocks are updated whenever a transaction group is committed, + * or when the configuration is updated. When a pool is loaded, we scan each + * vdev for the 'best' uberblock. + * + * + * Configuration Information + * ------------------------- + * + * The nvlist describing the pool and vdev contains the following elements: + * + * version ZFS on-disk version + * name Pool name + * state Pool state + * txg Transaction group in which this label was written + * pool_guid Unique identifier for this pool + * vdev_tree An nvlist describing vdev tree. + * features_for_read + * An nvlist of the features necessary for reading the MOS. + * + * Each leaf device label also contains the following: + * + * top_guid Unique ID for top-level vdev in which this is contained + * guid Unique ID for the leaf vdev + * + * The 'vs' configuration follows the format described in 'spa_config.c'. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Basic routines to read and write from a vdev label. + * Used throughout the rest of this file. + */ +uint64_t +vdev_label_offset(uint64_t psize, int l, uint64_t offset) +{ + ASSERT(offset < sizeof (vdev_label_t)); + ASSERT(P2PHASE_TYPED(psize, sizeof (vdev_label_t), uint64_t) == 0); + + return (offset + l * sizeof (vdev_label_t) + (l < VDEV_LABELS / 2 ? + 0 : psize - VDEV_LABELS * sizeof (vdev_label_t))); +} + +/* + * Returns back the vdev label associated with the passed in offset. + */ +int +vdev_label_number(uint64_t psize, uint64_t offset) +{ + int l; + + if (offset >= psize - VDEV_LABEL_END_SIZE) { + offset -= psize - VDEV_LABEL_END_SIZE; + offset += (VDEV_LABELS / 2) * sizeof (vdev_label_t); + } + l = offset / sizeof (vdev_label_t); + return (l < VDEV_LABELS ? l : -1); +} + +static void +vdev_label_read(zio_t *zio, vdev_t *vd, int l, void *buf, uint64_t offset, + uint64_t size, zio_done_func_t *done, void *private, int flags) +{ + ASSERT(spa_config_held(zio->io_spa, SCL_STATE_ALL, RW_WRITER) == + SCL_STATE_ALL); + ASSERT(flags & ZIO_FLAG_CONFIG_WRITER); + + zio_nowait(zio_read_phys(zio, vd, + vdev_label_offset(vd->vdev_psize, l, offset), + size, buf, ZIO_CHECKSUM_LABEL, done, private, + ZIO_PRIORITY_SYNC_READ, flags, B_TRUE)); +} + +static void +vdev_label_write(zio_t *zio, vdev_t *vd, int l, void *buf, uint64_t offset, + uint64_t size, zio_done_func_t *done, void *private, int flags) +{ + ASSERT(spa_config_held(zio->io_spa, SCL_ALL, RW_WRITER) == SCL_ALL || + (spa_config_held(zio->io_spa, SCL_CONFIG | SCL_STATE, RW_READER) == + (SCL_CONFIG | SCL_STATE) && + dsl_pool_sync_context(spa_get_dsl(zio->io_spa)))); + ASSERT(flags & ZIO_FLAG_CONFIG_WRITER); + + zio_nowait(zio_write_phys(zio, vd, + vdev_label_offset(vd->vdev_psize, l, offset), + size, buf, ZIO_CHECKSUM_LABEL, done, private, + ZIO_PRIORITY_SYNC_WRITE, flags, B_TRUE)); +} + +/* + * Generate the nvlist representing this vdev's config. + */ +nvlist_t * +vdev_config_generate(spa_t *spa, vdev_t *vd, boolean_t getstats, + vdev_config_flag_t flags) +{ + nvlist_t *nv = NULL; + + nv = fnvlist_alloc(); + + fnvlist_add_string(nv, ZPOOL_CONFIG_TYPE, vd->vdev_ops->vdev_op_type); + if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE))) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_ID, vd->vdev_id); + fnvlist_add_uint64(nv, ZPOOL_CONFIG_GUID, vd->vdev_guid); + + if (vd->vdev_path != NULL) + fnvlist_add_string(nv, ZPOOL_CONFIG_PATH, vd->vdev_path); + + if (vd->vdev_devid != NULL) + fnvlist_add_string(nv, ZPOOL_CONFIG_DEVID, vd->vdev_devid); + + if (vd->vdev_physpath != NULL) + fnvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH, + vd->vdev_physpath); + + if (vd->vdev_fru != NULL) + fnvlist_add_string(nv, ZPOOL_CONFIG_FRU, vd->vdev_fru); + + if (vd->vdev_nparity != 0) { + ASSERT(strcmp(vd->vdev_ops->vdev_op_type, + VDEV_TYPE_RAIDZ) == 0); + + /* + * Make sure someone hasn't managed to sneak a fancy new vdev + * into a crufty old storage pool. + */ + ASSERT(vd->vdev_nparity == 1 || + (vd->vdev_nparity <= 2 && + spa_version(spa) >= SPA_VERSION_RAIDZ2) || + (vd->vdev_nparity <= 3 && + spa_version(spa) >= SPA_VERSION_RAIDZ3)); + + /* + * Note that we'll add the nparity tag even on storage pools + * that only support a single parity device -- older software + * will just ignore it. + */ + fnvlist_add_uint64(nv, ZPOOL_CONFIG_NPARITY, vd->vdev_nparity); + } + + if (vd->vdev_wholedisk != -1ULL) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, + vd->vdev_wholedisk); + + if (vd->vdev_not_present) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, 1); + + if (vd->vdev_isspare) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_SPARE, 1); + + if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE)) && + vd == vd->vdev_top) { + fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_ARRAY, + vd->vdev_ms_array); + fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_SHIFT, + vd->vdev_ms_shift); + fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASHIFT, vd->vdev_ashift); + fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASIZE, + vd->vdev_asize); + fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_LOG, vd->vdev_islog); + if (vd->vdev_removing) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVING, + vd->vdev_removing); + } + + if (vd->vdev_dtl_sm != NULL) { + fnvlist_add_uint64(nv, ZPOOL_CONFIG_DTL, + space_map_object(vd->vdev_dtl_sm)); + } + + if (vd->vdev_crtxg) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_CREATE_TXG, vd->vdev_crtxg); + + if (getstats) { + vdev_stat_t vs; + pool_scan_stat_t ps; + + vdev_get_stats(vd, &vs); + fnvlist_add_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS, + (uint64_t *)&vs, sizeof (vs) / sizeof (uint64_t)); + + /* provide either current or previous scan information */ + if (spa_scan_get_stats(spa, &ps) == 0) { + fnvlist_add_uint64_array(nv, + ZPOOL_CONFIG_SCAN_STATS, (uint64_t *)&ps, + sizeof (pool_scan_stat_t) / sizeof (uint64_t)); + } + } + + if (!vd->vdev_ops->vdev_op_leaf) { + nvlist_t **child; + int c, idx; + + ASSERT(!vd->vdev_ishole); + + child = kmem_alloc(vd->vdev_children * sizeof (nvlist_t *), + KM_SLEEP); + + for (c = 0, idx = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + + /* + * If we're generating an nvlist of removing + * vdevs then skip over any device which is + * not being removed. + */ + if ((flags & VDEV_CONFIG_REMOVING) && + !cvd->vdev_removing) + continue; + + child[idx++] = vdev_config_generate(spa, cvd, + getstats, flags); + } + + if (idx) { + fnvlist_add_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, + child, idx); + } + + for (c = 0; c < idx; c++) + nvlist_free(child[c]); + + kmem_free(child, vd->vdev_children * sizeof (nvlist_t *)); + + } else { + const char *aux = NULL; + + if (vd->vdev_offline && !vd->vdev_tmpoffline) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_OFFLINE, B_TRUE); + if (vd->vdev_resilver_txg != 0) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_RESILVER_TXG, + vd->vdev_resilver_txg); + if (vd->vdev_faulted) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_FAULTED, B_TRUE); + if (vd->vdev_degraded) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_DEGRADED, B_TRUE); + if (vd->vdev_removed) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVED, B_TRUE); + if (vd->vdev_unspare) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_UNSPARE, B_TRUE); + if (vd->vdev_ishole) + fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_HOLE, B_TRUE); + + switch (vd->vdev_stat.vs_aux) { + case VDEV_AUX_ERR_EXCEEDED: + aux = "err_exceeded"; + break; + + case VDEV_AUX_EXTERNAL: + aux = "external"; + break; + } + + if (aux != NULL) + fnvlist_add_string(nv, ZPOOL_CONFIG_AUX_STATE, aux); + + if (vd->vdev_splitting && vd->vdev_orig_guid != 0LL) { + fnvlist_add_uint64(nv, ZPOOL_CONFIG_ORIG_GUID, + vd->vdev_orig_guid); + } + } + + return (nv); +} + +/* + * Generate a view of the top-level vdevs. If we currently have holes + * in the namespace, then generate an array which contains a list of holey + * vdevs. Additionally, add the number of top-level children that currently + * exist. + */ +void +vdev_top_config_generate(spa_t *spa, nvlist_t *config) +{ + vdev_t *rvd = spa->spa_root_vdev; + uint64_t *array; + uint_t c, idx; + + array = kmem_alloc(rvd->vdev_children * sizeof (uint64_t), KM_SLEEP); + + for (c = 0, idx = 0; c < rvd->vdev_children; c++) { + vdev_t *tvd = rvd->vdev_child[c]; + + if (tvd->vdev_ishole) + array[idx++] = c; + } + + if (idx) { + VERIFY(nvlist_add_uint64_array(config, ZPOOL_CONFIG_HOLE_ARRAY, + array, idx) == 0); + } + + VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_VDEV_CHILDREN, + rvd->vdev_children) == 0); + + kmem_free(array, rvd->vdev_children * sizeof (uint64_t)); +} + +/* + * Returns the configuration from the label of the given vdev. For vdevs + * which don't have a txg value stored on their label (i.e. spares/cache) + * or have not been completely initialized (txg = 0) just return + * the configuration from the first valid label we find. Otherwise, + * find the most up-to-date label that does not exceed the specified + * 'txg' value. + */ +nvlist_t * +vdev_label_read_config(vdev_t *vd, uint64_t txg) +{ + spa_t *spa = vd->vdev_spa; + nvlist_t *config = NULL; + vdev_phys_t *vp; + zio_t *zio; + uint64_t best_txg = 0; + int error = 0; + int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL | + ZIO_FLAG_SPECULATIVE; + int l; + + ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL); + + if (!vdev_readable(vd)) + return (NULL); + + vp = zio_buf_alloc(sizeof (vdev_phys_t)); + +retry: + for (l = 0; l < VDEV_LABELS; l++) { + nvlist_t *label = NULL; + + zio = zio_root(spa, NULL, NULL, flags); + + vdev_label_read(zio, vd, l, vp, + offsetof(vdev_label_t, vl_vdev_phys), + sizeof (vdev_phys_t), NULL, NULL, flags); + + if (zio_wait(zio) == 0 && + nvlist_unpack(vp->vp_nvlist, sizeof (vp->vp_nvlist), + &label, 0) == 0) { + uint64_t label_txg = 0; + + /* + * Auxiliary vdevs won't have txg values in their + * labels and newly added vdevs may not have been + * completely initialized so just return the + * configuration from the first valid label we + * encounter. + */ + error = nvlist_lookup_uint64(label, + ZPOOL_CONFIG_POOL_TXG, &label_txg); + if ((error || label_txg == 0) && !config) { + config = label; + break; + } else if (label_txg <= txg && label_txg > best_txg) { + best_txg = label_txg; + nvlist_free(config); + config = fnvlist_dup(label); + } + } + + if (label != NULL) { + nvlist_free(label); + label = NULL; + } + } + + if (config == NULL && !(flags & ZIO_FLAG_TRYHARD)) { + flags |= ZIO_FLAG_TRYHARD; + goto retry; + } + + zio_buf_free(vp, sizeof (vdev_phys_t)); + + return (config); +} + +/* + * Determine if a device is in use. The 'spare_guid' parameter will be filled + * in with the device guid if this spare is active elsewhere on the system. + */ +static boolean_t +vdev_inuse(vdev_t *vd, uint64_t crtxg, vdev_labeltype_t reason, + uint64_t *spare_guid, uint64_t *l2cache_guid) +{ + spa_t *spa = vd->vdev_spa; + uint64_t state, pool_guid, device_guid, txg, spare_pool; + uint64_t vdtxg = 0; + nvlist_t *label; + + if (spare_guid) + *spare_guid = 0ULL; + if (l2cache_guid) + *l2cache_guid = 0ULL; + + /* + * Read the label, if any, and perform some basic sanity checks. + */ + if ((label = vdev_label_read_config(vd, -1ULL)) == NULL) + return (B_FALSE); + + (void) nvlist_lookup_uint64(label, ZPOOL_CONFIG_CREATE_TXG, + &vdtxg); + + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_STATE, + &state) != 0 || + nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, + &device_guid) != 0) { + nvlist_free(label); + return (B_FALSE); + } + + if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && + (nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_GUID, + &pool_guid) != 0 || + nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_TXG, + &txg) != 0)) { + nvlist_free(label); + return (B_FALSE); + } + + nvlist_free(label); + + /* + * Check to see if this device indeed belongs to the pool it claims to + * be a part of. The only way this is allowed is if the device is a hot + * spare (which we check for later on). + */ + if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && + !spa_guid_exists(pool_guid, device_guid) && + !spa_spare_exists(device_guid, NULL, NULL) && + !spa_l2cache_exists(device_guid, NULL)) + return (B_FALSE); + + /* + * If the transaction group is zero, then this an initialized (but + * unused) label. This is only an error if the create transaction + * on-disk is the same as the one we're using now, in which case the + * user has attempted to add the same vdev multiple times in the same + * transaction. + */ + if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && + txg == 0 && vdtxg == crtxg) + return (B_TRUE); + + /* + * Check to see if this is a spare device. We do an explicit check for + * spa_has_spare() here because it may be on our pending list of spares + * to add. We also check if it is an l2cache device. + */ + if (spa_spare_exists(device_guid, &spare_pool, NULL) || + spa_has_spare(spa, device_guid)) { + if (spare_guid) + *spare_guid = device_guid; + + switch (reason) { + case VDEV_LABEL_CREATE: + case VDEV_LABEL_L2CACHE: + return (B_TRUE); + + case VDEV_LABEL_REPLACE: + return (!spa_has_spare(spa, device_guid) || + spare_pool != 0ULL); + + case VDEV_LABEL_SPARE: + return (spa_has_spare(spa, device_guid)); + default: + break; + } + } + + /* + * Check to see if this is an l2cache device. + */ + if (spa_l2cache_exists(device_guid, NULL)) + return (B_TRUE); + + /* + * We can't rely on a pool's state if it's been imported + * read-only. Instead we look to see if the pools is marked + * read-only in the namespace and set the state to active. + */ + if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && + (spa = spa_by_guid(pool_guid, device_guid)) != NULL && + spa_mode(spa) == FREAD) + state = POOL_STATE_ACTIVE; + + /* + * If the device is marked ACTIVE, then this device is in use by another + * pool on the system. + */ + return (state == POOL_STATE_ACTIVE); +} + +/* + * Initialize a vdev label. We check to make sure each leaf device is not in + * use, and writable. We put down an initial label which we will later + * overwrite with a complete label. Note that it's important to do this + * sequentially, not in parallel, so that we catch cases of multiple use of the + * same leaf vdev in the vdev we're creating -- e.g. mirroring a disk with + * itself. + */ +int +vdev_label_init(vdev_t *vd, uint64_t crtxg, vdev_labeltype_t reason) +{ + spa_t *spa = vd->vdev_spa; + nvlist_t *label; + vdev_phys_t *vp; + char *pad2; + uberblock_t *ub; + zio_t *zio; + char *buf; + size_t buflen; + int error; + uint64_t spare_guid = 0, l2cache_guid = 0; + int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL; + int c, l; + vdev_t *pvd; + + ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL); + + for (c = 0; c < vd->vdev_children; c++) + if ((error = vdev_label_init(vd->vdev_child[c], + crtxg, reason)) != 0) + return (error); + + /* Track the creation time for this vdev */ + vd->vdev_crtxg = crtxg; + + if (!vd->vdev_ops->vdev_op_leaf || !spa_writeable(spa)) + return (0); + + /* + * Dead vdevs cannot be initialized. + */ + if (vdev_is_dead(vd)) + return (SET_ERROR(EIO)); + + /* + * Determine if the vdev is in use. + */ + if (reason != VDEV_LABEL_REMOVE && reason != VDEV_LABEL_SPLIT && + vdev_inuse(vd, crtxg, reason, &spare_guid, &l2cache_guid)) + return (SET_ERROR(EBUSY)); + + /* + * If this is a request to add or replace a spare or l2cache device + * that is in use elsewhere on the system, then we must update the + * guid (which was initialized to a random value) to reflect the + * actual GUID (which is shared between multiple pools). + */ + if (reason != VDEV_LABEL_REMOVE && reason != VDEV_LABEL_L2CACHE && + spare_guid != 0ULL) { + uint64_t guid_delta = spare_guid - vd->vdev_guid; + + vd->vdev_guid += guid_delta; + + for (pvd = vd; pvd != NULL; pvd = pvd->vdev_parent) + pvd->vdev_guid_sum += guid_delta; + + /* + * If this is a replacement, then we want to fallthrough to the + * rest of the code. If we're adding a spare, then it's already + * labeled appropriately and we can just return. + */ + if (reason == VDEV_LABEL_SPARE) + return (0); + ASSERT(reason == VDEV_LABEL_REPLACE || + reason == VDEV_LABEL_SPLIT); + } + + if (reason != VDEV_LABEL_REMOVE && reason != VDEV_LABEL_SPARE && + l2cache_guid != 0ULL) { + uint64_t guid_delta = l2cache_guid - vd->vdev_guid; + + vd->vdev_guid += guid_delta; + + for (pvd = vd; pvd != NULL; pvd = pvd->vdev_parent) + pvd->vdev_guid_sum += guid_delta; + + /* + * If this is a replacement, then we want to fallthrough to the + * rest of the code. If we're adding an l2cache, then it's + * already labeled appropriately and we can just return. + */ + if (reason == VDEV_LABEL_L2CACHE) + return (0); + ASSERT(reason == VDEV_LABEL_REPLACE); + } + + /* + * Initialize its label. + */ + vp = zio_buf_alloc(sizeof (vdev_phys_t)); + bzero(vp, sizeof (vdev_phys_t)); + + /* + * Generate a label describing the pool and our top-level vdev. + * We mark it as being from txg 0 to indicate that it's not + * really part of an active pool just yet. The labels will + * be written again with a meaningful txg by spa_sync(). + */ + if (reason == VDEV_LABEL_SPARE || + (reason == VDEV_LABEL_REMOVE && vd->vdev_isspare)) { + /* + * For inactive hot spares, we generate a special label that + * identifies as a mutually shared hot spare. We write the + * label if we are adding a hot spare, or if we are removing an + * active hot spare (in which case we want to revert the + * labels). + */ + VERIFY(nvlist_alloc(&label, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_VERSION, + spa_version(spa)) == 0); + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_POOL_STATE, + POOL_STATE_SPARE) == 0); + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_GUID, + vd->vdev_guid) == 0); + } else if (reason == VDEV_LABEL_L2CACHE || + (reason == VDEV_LABEL_REMOVE && vd->vdev_isl2cache)) { + /* + * For level 2 ARC devices, add a special label. + */ + VERIFY(nvlist_alloc(&label, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_VERSION, + spa_version(spa)) == 0); + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_POOL_STATE, + POOL_STATE_L2CACHE) == 0); + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_GUID, + vd->vdev_guid) == 0); + } else { + uint64_t txg = 0ULL; + + if (reason == VDEV_LABEL_SPLIT) + txg = spa->spa_uberblock.ub_txg; + label = spa_config_generate(spa, vd, txg, B_FALSE); + + /* + * Add our creation time. This allows us to detect multiple + * vdev uses as described above, and automatically expires if we + * fail. + */ + VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_CREATE_TXG, + crtxg) == 0); + } + + buf = vp->vp_nvlist; + buflen = sizeof (vp->vp_nvlist); + + error = nvlist_pack(label, &buf, &buflen, NV_ENCODE_XDR, KM_SLEEP); + if (error != 0) { + nvlist_free(label); + zio_buf_free(vp, sizeof (vdev_phys_t)); + /* EFAULT means nvlist_pack ran out of room */ + return (error == EFAULT ? ENAMETOOLONG : EINVAL); + } + + /* + * Initialize uberblock template. + */ + ub = zio_buf_alloc(VDEV_UBERBLOCK_RING); + bzero(ub, VDEV_UBERBLOCK_RING); + *ub = spa->spa_uberblock; + ub->ub_txg = 0; + + /* Initialize the 2nd padding area. */ + pad2 = zio_buf_alloc(VDEV_PAD_SIZE); + bzero(pad2, VDEV_PAD_SIZE); + + /* + * Write everything in parallel. + */ +retry: + zio = zio_root(spa, NULL, NULL, flags); + + for (l = 0; l < VDEV_LABELS; l++) { + + vdev_label_write(zio, vd, l, vp, + offsetof(vdev_label_t, vl_vdev_phys), + sizeof (vdev_phys_t), NULL, NULL, flags); + + /* + * Skip the 1st padding area. + * Zero out the 2nd padding area where it might have + * left over data from previous filesystem format. + */ + vdev_label_write(zio, vd, l, pad2, + offsetof(vdev_label_t, vl_pad2), + VDEV_PAD_SIZE, NULL, NULL, flags); + + vdev_label_write(zio, vd, l, ub, + offsetof(vdev_label_t, vl_uberblock), + VDEV_UBERBLOCK_RING, NULL, NULL, flags); + } + + error = zio_wait(zio); + + if (error != 0 && !(flags & ZIO_FLAG_TRYHARD)) { + flags |= ZIO_FLAG_TRYHARD; + goto retry; + } + + nvlist_free(label); + zio_buf_free(pad2, VDEV_PAD_SIZE); + zio_buf_free(ub, VDEV_UBERBLOCK_RING); + zio_buf_free(vp, sizeof (vdev_phys_t)); + + /* + * If this vdev hasn't been previously identified as a spare, then we + * mark it as such only if a) we are labeling it as a spare, or b) it + * exists as a spare elsewhere in the system. Do the same for + * level 2 ARC devices. + */ + if (error == 0 && !vd->vdev_isspare && + (reason == VDEV_LABEL_SPARE || + spa_spare_exists(vd->vdev_guid, NULL, NULL))) + spa_spare_add(vd); + + if (error == 0 && !vd->vdev_isl2cache && + (reason == VDEV_LABEL_L2CACHE || + spa_l2cache_exists(vd->vdev_guid, NULL))) + spa_l2cache_add(vd); + + return (error); +} + +/* + * ========================================================================== + * uberblock load/sync + * ========================================================================== + */ + +/* + * Consider the following situation: txg is safely synced to disk. We've + * written the first uberblock for txg + 1, and then we lose power. When we + * come back up, we fail to see the uberblock for txg + 1 because, say, + * it was on a mirrored device and the replica to which we wrote txg + 1 + * is now offline. If we then make some changes and sync txg + 1, and then + * the missing replica comes back, then for a few seconds we'll have two + * conflicting uberblocks on disk with the same txg. The solution is simple: + * among uberblocks with equal txg, choose the one with the latest timestamp. + */ +static int +vdev_uberblock_compare(uberblock_t *ub1, uberblock_t *ub2) +{ + if (ub1->ub_txg < ub2->ub_txg) + return (-1); + if (ub1->ub_txg > ub2->ub_txg) + return (1); + + if (ub1->ub_timestamp < ub2->ub_timestamp) + return (-1); + if (ub1->ub_timestamp > ub2->ub_timestamp) + return (1); + + return (0); +} + +struct ubl_cbdata { + uberblock_t *ubl_ubbest; /* Best uberblock */ + vdev_t *ubl_vd; /* vdev associated with the above */ +}; + +static void +vdev_uberblock_load_done(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + spa_t *spa = zio->io_spa; + zio_t *rio = zio->io_private; + uberblock_t *ub = zio->io_data; + struct ubl_cbdata *cbp = rio->io_private; + + ASSERT3U(zio->io_size, ==, VDEV_UBERBLOCK_SIZE(vd)); + + if (zio->io_error == 0 && uberblock_verify(ub) == 0) { + mutex_enter(&rio->io_lock); + if (ub->ub_txg <= spa->spa_load_max_txg && + vdev_uberblock_compare(ub, cbp->ubl_ubbest) > 0) { + /* + * Keep track of the vdev in which this uberblock + * was found. We will use this information later + * to obtain the config nvlist associated with + * this uberblock. + */ + *cbp->ubl_ubbest = *ub; + cbp->ubl_vd = vd; + } + mutex_exit(&rio->io_lock); + } + + zio_buf_free(zio->io_data, zio->io_size); +} + +static void +vdev_uberblock_load_impl(zio_t *zio, vdev_t *vd, int flags, + struct ubl_cbdata *cbp) +{ + int c, l, n; + + for (c = 0; c < vd->vdev_children; c++) + vdev_uberblock_load_impl(zio, vd->vdev_child[c], flags, cbp); + + if (vd->vdev_ops->vdev_op_leaf && vdev_readable(vd)) { + for (l = 0; l < VDEV_LABELS; l++) { + for (n = 0; n < VDEV_UBERBLOCK_COUNT(vd); n++) { + vdev_label_read(zio, vd, l, + zio_buf_alloc(VDEV_UBERBLOCK_SIZE(vd)), + VDEV_UBERBLOCK_OFFSET(vd, n), + VDEV_UBERBLOCK_SIZE(vd), + vdev_uberblock_load_done, zio, flags); + } + } + } +} + +/* + * Reads the 'best' uberblock from disk along with its associated + * configuration. First, we read the uberblock array of each label of each + * vdev, keeping track of the uberblock with the highest txg in each array. + * Then, we read the configuration from the same vdev as the best uberblock. + */ +void +vdev_uberblock_load(vdev_t *rvd, uberblock_t *ub, nvlist_t **config) +{ + zio_t *zio; + spa_t *spa = rvd->vdev_spa; + struct ubl_cbdata cb; + int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL | + ZIO_FLAG_SPECULATIVE | ZIO_FLAG_TRYHARD; + + ASSERT(ub); + ASSERT(config); + + bzero(ub, sizeof (uberblock_t)); + *config = NULL; + + cb.ubl_ubbest = ub; + cb.ubl_vd = NULL; + + spa_config_enter(spa, SCL_ALL, FTAG, RW_WRITER); + zio = zio_root(spa, NULL, &cb, flags); + vdev_uberblock_load_impl(zio, rvd, flags, &cb); + (void) zio_wait(zio); + + /* + * It's possible that the best uberblock was discovered on a label + * that has a configuration which was written in a future txg. + * Search all labels on this vdev to find the configuration that + * matches the txg for our uberblock. + */ + if (cb.ubl_vd != NULL) + *config = vdev_label_read_config(cb.ubl_vd, ub->ub_txg); + spa_config_exit(spa, SCL_ALL, FTAG); +} + +/* + * On success, increment root zio's count of good writes. + * We only get credit for writes to known-visible vdevs; see spa_vdev_add(). + */ +static void +vdev_uberblock_sync_done(zio_t *zio) +{ + uint64_t *good_writes = zio->io_private; + + if (zio->io_error == 0 && zio->io_vd->vdev_top->vdev_ms_array != 0) + atomic_add_64(good_writes, 1); +} + +/* + * Write the uberblock to all labels of all leaves of the specified vdev. + */ +static void +vdev_uberblock_sync(zio_t *zio, uberblock_t *ub, vdev_t *vd, int flags) +{ + uberblock_t *ubbuf; + int c, l, n; + + for (c = 0; c < vd->vdev_children; c++) + vdev_uberblock_sync(zio, ub, vd->vdev_child[c], flags); + + if (!vd->vdev_ops->vdev_op_leaf) + return; + + if (!vdev_writeable(vd)) + return; + + n = ub->ub_txg & (VDEV_UBERBLOCK_COUNT(vd) - 1); + + ubbuf = zio_buf_alloc(VDEV_UBERBLOCK_SIZE(vd)); + bzero(ubbuf, VDEV_UBERBLOCK_SIZE(vd)); + *ubbuf = *ub; + + for (l = 0; l < VDEV_LABELS; l++) + vdev_label_write(zio, vd, l, ubbuf, + VDEV_UBERBLOCK_OFFSET(vd, n), VDEV_UBERBLOCK_SIZE(vd), + vdev_uberblock_sync_done, zio->io_private, + flags | ZIO_FLAG_DONT_PROPAGATE); + + zio_buf_free(ubbuf, VDEV_UBERBLOCK_SIZE(vd)); +} + +/* Sync the uberblocks to all vdevs in svd[] */ +int +vdev_uberblock_sync_list(vdev_t **svd, int svdcount, uberblock_t *ub, int flags) +{ + spa_t *spa = svd[0]->vdev_spa; + zio_t *zio; + uint64_t good_writes = 0; + int v; + + zio = zio_root(spa, NULL, &good_writes, flags); + + for (v = 0; v < svdcount; v++) + vdev_uberblock_sync(zio, ub, svd[v], flags); + + (void) zio_wait(zio); + + /* + * Flush the uberblocks to disk. This ensures that the odd labels + * are no longer needed (because the new uberblocks and the even + * labels are safely on disk), so it is safe to overwrite them. + */ + zio = zio_root(spa, NULL, NULL, flags); + + for (v = 0; v < svdcount; v++) + zio_flush(zio, svd[v]); + + (void) zio_wait(zio); + + return (good_writes >= 1 ? 0 : EIO); +} + +/* + * On success, increment the count of good writes for our top-level vdev. + */ +static void +vdev_label_sync_done(zio_t *zio) +{ + uint64_t *good_writes = zio->io_private; + + if (zio->io_error == 0) + atomic_add_64(good_writes, 1); +} + +/* + * If there weren't enough good writes, indicate failure to the parent. + */ +static void +vdev_label_sync_top_done(zio_t *zio) +{ + uint64_t *good_writes = zio->io_private; + + if (*good_writes == 0) + zio->io_error = SET_ERROR(EIO); + + kmem_free(good_writes, sizeof (uint64_t)); +} + +/* + * We ignore errors for log and cache devices, simply free the private data. + */ +static void +vdev_label_sync_ignore_done(zio_t *zio) +{ + kmem_free(zio->io_private, sizeof (uint64_t)); +} + +/* + * Write all even or odd labels to all leaves of the specified vdev. + */ +static void +vdev_label_sync(zio_t *zio, vdev_t *vd, int l, uint64_t txg, int flags) +{ + nvlist_t *label; + vdev_phys_t *vp; + char *buf; + size_t buflen; + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_label_sync(zio, vd->vdev_child[c], l, txg, flags); + + if (!vd->vdev_ops->vdev_op_leaf) + return; + + if (!vdev_writeable(vd)) + return; + + /* + * Generate a label describing the top-level config to which we belong. + */ + label = spa_config_generate(vd->vdev_spa, vd, txg, B_FALSE); + + vp = zio_buf_alloc(sizeof (vdev_phys_t)); + bzero(vp, sizeof (vdev_phys_t)); + + buf = vp->vp_nvlist; + buflen = sizeof (vp->vp_nvlist); + + if (!nvlist_pack(label, &buf, &buflen, NV_ENCODE_XDR, KM_SLEEP)) { + for (; l < VDEV_LABELS; l += 2) { + vdev_label_write(zio, vd, l, vp, + offsetof(vdev_label_t, vl_vdev_phys), + sizeof (vdev_phys_t), + vdev_label_sync_done, zio->io_private, + flags | ZIO_FLAG_DONT_PROPAGATE); + } + } + + zio_buf_free(vp, sizeof (vdev_phys_t)); + nvlist_free(label); +} + +int +vdev_label_sync_list(spa_t *spa, int l, uint64_t txg, int flags) +{ + list_t *dl = &spa->spa_config_dirty_list; + vdev_t *vd; + zio_t *zio; + int error; + + /* + * Write the new labels to disk. + */ + zio = zio_root(spa, NULL, NULL, flags); + + for (vd = list_head(dl); vd != NULL; vd = list_next(dl, vd)) { + uint64_t *good_writes; + zio_t *vio; + + ASSERT(!vd->vdev_ishole); + + good_writes = kmem_zalloc(sizeof (uint64_t), KM_SLEEP); + vio = zio_null(zio, spa, NULL, + (vd->vdev_islog || vd->vdev_aux != NULL) ? + vdev_label_sync_ignore_done : vdev_label_sync_top_done, + good_writes, flags); + vdev_label_sync(vio, vd, l, txg, flags); + zio_nowait(vio); + } + + error = zio_wait(zio); + + /* + * Flush the new labels to disk. + */ + zio = zio_root(spa, NULL, NULL, flags); + + for (vd = list_head(dl); vd != NULL; vd = list_next(dl, vd)) + zio_flush(zio, vd); + + (void) zio_wait(zio); + + return (error); +} + +/* + * Sync the uberblock and any changes to the vdev configuration. + * + * The order of operations is carefully crafted to ensure that + * if the system panics or loses power at any time, the state on disk + * is still transactionally consistent. The in-line comments below + * describe the failure semantics at each stage. + * + * Moreover, vdev_config_sync() is designed to be idempotent: if it fails + * at any time, you can just call it again, and it will resume its work. + */ +int +vdev_config_sync(vdev_t **svd, int svdcount, uint64_t txg, boolean_t tryhard) +{ + spa_t *spa = svd[0]->vdev_spa; + uberblock_t *ub = &spa->spa_uberblock; + vdev_t *vd; + zio_t *zio; + int error; + int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL; + + /* + * Normally, we don't want to try too hard to write every label and + * uberblock. If there is a flaky disk, we don't want the rest of the + * sync process to block while we retry. But if we can't write a + * single label out, we should retry with ZIO_FLAG_TRYHARD before + * bailing out and declaring the pool faulted. + */ + if (tryhard) + flags |= ZIO_FLAG_TRYHARD; + + ASSERT(ub->ub_txg <= txg); + + /* + * If this isn't a resync due to I/O errors, + * and nothing changed in this transaction group, + * and the vdev configuration hasn't changed, + * then there's nothing to do. + */ + if (ub->ub_txg < txg && + uberblock_update(ub, spa->spa_root_vdev, txg) == B_FALSE && + list_is_empty(&spa->spa_config_dirty_list)) + return (0); + + if (txg > spa_freeze_txg(spa)) + return (0); + + ASSERT(txg <= spa->spa_final_txg); + + /* + * Flush the write cache of every disk that's been written to + * in this transaction group. This ensures that all blocks + * written in this txg will be committed to stable storage + * before any uberblock that references them. + */ + zio = zio_root(spa, NULL, NULL, flags); + + for (vd = txg_list_head(&spa->spa_vdev_txg_list, TXG_CLEAN(txg)); vd; + vd = txg_list_next(&spa->spa_vdev_txg_list, vd, TXG_CLEAN(txg))) + zio_flush(zio, vd); + + (void) zio_wait(zio); + + /* + * Sync out the even labels (L0, L2) for every dirty vdev. If the + * system dies in the middle of this process, that's OK: all of the + * even labels that made it to disk will be newer than any uberblock, + * and will therefore be considered invalid. The odd labels (L1, L3), + * which have not yet been touched, will still be valid. We flush + * the new labels to disk to ensure that all even-label updates + * are committed to stable storage before the uberblock update. + */ + if ((error = vdev_label_sync_list(spa, 0, txg, flags)) != 0) + return (error); + + /* + * Sync the uberblocks to all vdevs in svd[]. + * If the system dies in the middle of this step, there are two cases + * to consider, and the on-disk state is consistent either way: + * + * (1) If none of the new uberblocks made it to disk, then the + * previous uberblock will be the newest, and the odd labels + * (which had not yet been touched) will be valid with respect + * to that uberblock. + * + * (2) If one or more new uberblocks made it to disk, then they + * will be the newest, and the even labels (which had all + * been successfully committed) will be valid with respect + * to the new uberblocks. + */ + if ((error = vdev_uberblock_sync_list(svd, svdcount, ub, flags)) != 0) + return (error); + + /* + * Sync out odd labels for every dirty vdev. If the system dies + * in the middle of this process, the even labels and the new + * uberblocks will suffice to open the pool. The next time + * the pool is opened, the first thing we'll do -- before any + * user data is modified -- is mark every vdev dirty so that + * all labels will be brought up to date. We flush the new labels + * to disk to ensure that all odd-label updates are committed to + * stable storage before the next transaction group begins. + */ + return (vdev_label_sync_list(spa, 1, txg, flags)); +} --- linux-4.4.0.orig/zfs/module/zfs/vdev_mirror.c +++ linux-4.4.0/zfs/module/zfs/vdev_mirror.c @@ -0,0 +1,564 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include + +/* + * Virtual device vector for mirroring. + */ + +typedef struct mirror_child { + vdev_t *mc_vd; + uint64_t mc_offset; + int mc_error; + int mc_pending; + uint8_t mc_tried; + uint8_t mc_skipped; + uint8_t mc_speculative; +} mirror_child_t; + +typedef struct mirror_map { + int mm_children; + int mm_replacing; + int mm_preferred; + int mm_root; + mirror_child_t mm_child[1]; +} mirror_map_t; + +/* + * When the children are equally busy queue incoming requests to a single + * child for N microseconds. This is done to maximize the likelihood that + * the Linux elevator will be able to merge requests while it is plugged. + * Otherwise, requests are queued to the least busy device. + * + * For rotational disks the Linux elevator will plug for 10ms which is + * why zfs_vdev_mirror_switch_us is set to 10ms by default. For non- + * rotational disks the elevator will not plug, but 10ms is still a small + * enough value that the requests will get spread over all the children. + * + * For fast SSDs it may make sense to decrease zfs_vdev_mirror_switch_us + * significantly to bound the worst case latencies. It would probably be + * ideal to calculate a decaying average of the last observed latencies and + * use that to dynamically adjust the zfs_vdev_mirror_switch_us time. + */ +int zfs_vdev_mirror_switch_us = 10000; + +static void +vdev_mirror_map_free(zio_t *zio) +{ + mirror_map_t *mm = zio->io_vsd; + + kmem_free(mm, offsetof(mirror_map_t, mm_child[mm->mm_children])); +} + +static const zio_vsd_ops_t vdev_mirror_vsd_ops = { + vdev_mirror_map_free, + zio_vsd_default_cksum_report +}; + +static int +vdev_mirror_pending(vdev_t *vd) +{ + return (avl_numnodes(&vd->vdev_queue.vq_active_tree)); +} + +/* + * Avoid inlining the function to keep vdev_mirror_io_start(), which + * is this functions only caller, as small as possible on the stack. + */ +noinline static mirror_map_t * +vdev_mirror_map_alloc(zio_t *zio) +{ + mirror_map_t *mm = NULL; + mirror_child_t *mc; + vdev_t *vd = zio->io_vd; + int c, d; + + if (vd == NULL) { + dva_t *dva = zio->io_bp->blk_dva; + spa_t *spa = zio->io_spa; + + c = BP_GET_NDVAS(zio->io_bp); + + mm = kmem_zalloc(offsetof(mirror_map_t, mm_child[c]), + KM_SLEEP); + mm->mm_children = c; + mm->mm_replacing = B_FALSE; + mm->mm_preferred = spa_get_random(c); + mm->mm_root = B_TRUE; + + /* + * Check the other, lower-index DVAs to see if they're on + * the same vdev as the child we picked. If they are, use + * them since they are likely to have been allocated from + * the primary metaslab in use at the time, and hence are + * more likely to have locality with single-copy data. + */ + for (c = mm->mm_preferred, d = c - 1; d >= 0; d--) { + if (DVA_GET_VDEV(&dva[d]) == DVA_GET_VDEV(&dva[c])) + mm->mm_preferred = d; + } + + for (c = 0; c < mm->mm_children; c++) { + mc = &mm->mm_child[c]; + + mc->mc_vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[c])); + mc->mc_offset = DVA_GET_OFFSET(&dva[c]); + } + } else { + int lowest_pending = INT_MAX; + int lowest_nr = 1; + + c = vd->vdev_children; + + mm = kmem_zalloc(offsetof(mirror_map_t, mm_child[c]), + KM_SLEEP); + mm->mm_children = c; + mm->mm_replacing = (vd->vdev_ops == &vdev_replacing_ops || + vd->vdev_ops == &vdev_spare_ops); + mm->mm_preferred = 0; + mm->mm_root = B_FALSE; + + for (c = 0; c < mm->mm_children; c++) { + mc = &mm->mm_child[c]; + mc->mc_vd = vd->vdev_child[c]; + mc->mc_offset = zio->io_offset; + + if (mm->mm_replacing) + continue; + + if (!vdev_readable(mc->mc_vd)) { + mc->mc_error = SET_ERROR(ENXIO); + mc->mc_tried = 1; + mc->mc_skipped = 1; + mc->mc_pending = INT_MAX; + continue; + } + + mc->mc_pending = vdev_mirror_pending(mc->mc_vd); + if (mc->mc_pending < lowest_pending) { + lowest_pending = mc->mc_pending; + lowest_nr = 1; + } else if (mc->mc_pending == lowest_pending) { + lowest_nr++; + } + } + + d = gethrtime() / (NSEC_PER_USEC * zfs_vdev_mirror_switch_us); + d = (d % lowest_nr) + 1; + + for (c = 0; c < mm->mm_children; c++) { + mc = &mm->mm_child[c]; + + if (mm->mm_child[c].mc_pending == lowest_pending) { + if (--d == 0) { + mm->mm_preferred = c; + break; + } + } + } + } + + zio->io_vsd = mm; + zio->io_vsd_ops = &vdev_mirror_vsd_ops; + return (mm); +} + +static int +vdev_mirror_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize, + uint64_t *ashift) +{ + int numerrors = 0; + int lasterror = 0; + int c; + + if (vd->vdev_children == 0) { + vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; + return (SET_ERROR(EINVAL)); + } + + vdev_open_children(vd); + + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + + if (cvd->vdev_open_error) { + lasterror = cvd->vdev_open_error; + numerrors++; + continue; + } + + *asize = MIN(*asize - 1, cvd->vdev_asize - 1) + 1; + *max_asize = MIN(*max_asize - 1, cvd->vdev_max_asize - 1) + 1; + *ashift = MAX(*ashift, cvd->vdev_ashift); + } + + if (numerrors == vd->vdev_children) { + vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS; + return (lasterror); + } + + return (0); +} + +static void +vdev_mirror_close(vdev_t *vd) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_close(vd->vdev_child[c]); +} + +static void +vdev_mirror_child_done(zio_t *zio) +{ + mirror_child_t *mc = zio->io_private; + + mc->mc_error = zio->io_error; + mc->mc_tried = 1; + mc->mc_skipped = 0; +} + +static void +vdev_mirror_scrub_done(zio_t *zio) +{ + mirror_child_t *mc = zio->io_private; + + if (zio->io_error == 0) { + zio_t *pio; + + mutex_enter(&zio->io_lock); + while ((pio = zio_walk_parents(zio)) != NULL) { + mutex_enter(&pio->io_lock); + ASSERT3U(zio->io_size, >=, pio->io_size); + bcopy(zio->io_data, pio->io_data, pio->io_size); + mutex_exit(&pio->io_lock); + } + mutex_exit(&zio->io_lock); + } + + zio_buf_free(zio->io_data, zio->io_size); + + mc->mc_error = zio->io_error; + mc->mc_tried = 1; + mc->mc_skipped = 0; +} + +/* + * Try to find a child whose DTL doesn't contain the block we want to read. + * If we can't, try the read on any vdev we haven't already tried. + */ +static int +vdev_mirror_child_select(zio_t *zio) +{ + mirror_map_t *mm = zio->io_vsd; + mirror_child_t *mc; + uint64_t txg = zio->io_txg; + int i, c; + + ASSERT(zio->io_bp == NULL || BP_PHYSICAL_BIRTH(zio->io_bp) == txg); + + /* + * Try to find a child whose DTL doesn't contain the block to read. + * If a child is known to be completely inaccessible (indicated by + * vdev_readable() returning B_FALSE), don't even try. + */ + for (i = 0, c = mm->mm_preferred; i < mm->mm_children; i++, c++) { + if (c >= mm->mm_children) + c = 0; + mc = &mm->mm_child[c]; + if (mc->mc_tried || mc->mc_skipped) + continue; + if (mc->mc_vd == NULL || !vdev_readable(mc->mc_vd)) { + mc->mc_error = SET_ERROR(ENXIO); + mc->mc_tried = 1; /* don't even try */ + mc->mc_skipped = 1; + continue; + } + if (!vdev_dtl_contains(mc->mc_vd, DTL_MISSING, txg, 1)) + return (c); + mc->mc_error = SET_ERROR(ESTALE); + mc->mc_skipped = 1; + mc->mc_speculative = 1; + } + + /* + * Every device is either missing or has this txg in its DTL. + * Look for any child we haven't already tried before giving up. + */ + for (c = 0; c < mm->mm_children; c++) + if (!mm->mm_child[c].mc_tried) + return (c); + + /* + * Every child failed. There's no place left to look. + */ + return (-1); +} + +static void +vdev_mirror_io_start(zio_t *zio) +{ + mirror_map_t *mm; + mirror_child_t *mc; + int c, children; + + mm = vdev_mirror_map_alloc(zio); + + if (zio->io_type == ZIO_TYPE_READ) { + if ((zio->io_flags & ZIO_FLAG_SCRUB) && !mm->mm_replacing) { + /* + * For scrubbing reads we need to allocate a read + * buffer for each child and issue reads to all + * children. If any child succeeds, it will copy its + * data into zio->io_data in vdev_mirror_scrub_done. + */ + for (c = 0; c < mm->mm_children; c++) { + mc = &mm->mm_child[c]; + zio_nowait(zio_vdev_child_io(zio, zio->io_bp, + mc->mc_vd, mc->mc_offset, + zio_buf_alloc(zio->io_size), zio->io_size, + zio->io_type, zio->io_priority, 0, + vdev_mirror_scrub_done, mc)); + } + zio_execute(zio); + return; + } + /* + * For normal reads just pick one child. + */ + c = vdev_mirror_child_select(zio); + children = (c >= 0); + } else { + ASSERT(zio->io_type == ZIO_TYPE_WRITE); + + /* + * Writes go to all children. + */ + c = 0; + children = mm->mm_children; + } + + while (children--) { + mc = &mm->mm_child[c]; + zio_nowait(zio_vdev_child_io(zio, zio->io_bp, + mc->mc_vd, mc->mc_offset, zio->io_data, zio->io_size, + zio->io_type, zio->io_priority, 0, + vdev_mirror_child_done, mc)); + c++; + } + + zio_execute(zio); +} + +static int +vdev_mirror_worst_error(mirror_map_t *mm) +{ + int c, error[2] = { 0, 0 }; + + for (c = 0; c < mm->mm_children; c++) { + mirror_child_t *mc = &mm->mm_child[c]; + int s = mc->mc_speculative; + error[s] = zio_worst_error(error[s], mc->mc_error); + } + + return (error[0] ? error[0] : error[1]); +} + +static void +vdev_mirror_io_done(zio_t *zio) +{ + mirror_map_t *mm = zio->io_vsd; + mirror_child_t *mc; + int c; + int good_copies = 0; + int unexpected_errors = 0; + + for (c = 0; c < mm->mm_children; c++) { + mc = &mm->mm_child[c]; + + if (mc->mc_error) { + if (!mc->mc_skipped) + unexpected_errors++; + } else if (mc->mc_tried) { + good_copies++; + } + } + + if (zio->io_type == ZIO_TYPE_WRITE) { + /* + * XXX -- for now, treat partial writes as success. + * + * Now that we support write reallocation, it would be better + * to treat partial failure as real failure unless there are + * no non-degraded top-level vdevs left, and not update DTLs + * if we intend to reallocate. + */ + /* XXPOLICY */ + if (good_copies != mm->mm_children) { + /* + * Always require at least one good copy. + * + * For ditto blocks (io_vd == NULL), require + * all copies to be good. + * + * XXX -- for replacing vdevs, there's no great answer. + * If the old device is really dead, we may not even + * be able to access it -- so we only want to + * require good writes to the new device. But if + * the new device turns out to be flaky, we want + * to be able to detach it -- which requires all + * writes to the old device to have succeeded. + */ + if (good_copies == 0 || zio->io_vd == NULL) + zio->io_error = vdev_mirror_worst_error(mm); + } + return; + } + + ASSERT(zio->io_type == ZIO_TYPE_READ); + + /* + * If we don't have a good copy yet, keep trying other children. + */ + /* XXPOLICY */ + if (good_copies == 0 && (c = vdev_mirror_child_select(zio)) != -1) { + ASSERT(c >= 0 && c < mm->mm_children); + mc = &mm->mm_child[c]; + zio_vdev_io_redone(zio); + zio_nowait(zio_vdev_child_io(zio, zio->io_bp, + mc->mc_vd, mc->mc_offset, zio->io_data, zio->io_size, + ZIO_TYPE_READ, zio->io_priority, 0, + vdev_mirror_child_done, mc)); + return; + } + + /* XXPOLICY */ + if (good_copies == 0) { + zio->io_error = vdev_mirror_worst_error(mm); + ASSERT(zio->io_error != 0); + } + + if (good_copies && spa_writeable(zio->io_spa) && + (unexpected_errors || + (zio->io_flags & ZIO_FLAG_RESILVER) || + ((zio->io_flags & ZIO_FLAG_SCRUB) && mm->mm_replacing))) { + /* + * Use the good data we have in hand to repair damaged children. + */ + for (c = 0; c < mm->mm_children; c++) { + /* + * Don't rewrite known good children. + * Not only is it unnecessary, it could + * actually be harmful: if the system lost + * power while rewriting the only good copy, + * there would be no good copies left! + */ + mc = &mm->mm_child[c]; + + if (mc->mc_error == 0) { + if (mc->mc_tried) + continue; + if (!(zio->io_flags & ZIO_FLAG_SCRUB) && + !vdev_dtl_contains(mc->mc_vd, DTL_PARTIAL, + zio->io_txg, 1)) + continue; + mc->mc_error = SET_ERROR(ESTALE); + } + + zio_nowait(zio_vdev_child_io(zio, zio->io_bp, + mc->mc_vd, mc->mc_offset, + zio->io_data, zio->io_size, + ZIO_TYPE_WRITE, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_IO_REPAIR | (unexpected_errors ? + ZIO_FLAG_SELF_HEAL : 0), NULL, NULL)); + } + } +} + +static void +vdev_mirror_state_change(vdev_t *vd, int faulted, int degraded) +{ + if (faulted == vd->vdev_children) + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_NO_REPLICAS); + else if (degraded + faulted != 0) + vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE); + else + vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE); +} + +vdev_ops_t vdev_mirror_ops = { + vdev_mirror_open, + vdev_mirror_close, + vdev_default_asize, + vdev_mirror_io_start, + vdev_mirror_io_done, + vdev_mirror_state_change, + NULL, + NULL, + VDEV_TYPE_MIRROR, /* name of this vdev type */ + B_FALSE /* not a leaf vdev */ +}; + +vdev_ops_t vdev_replacing_ops = { + vdev_mirror_open, + vdev_mirror_close, + vdev_default_asize, + vdev_mirror_io_start, + vdev_mirror_io_done, + vdev_mirror_state_change, + NULL, + NULL, + VDEV_TYPE_REPLACING, /* name of this vdev type */ + B_FALSE /* not a leaf vdev */ +}; + +vdev_ops_t vdev_spare_ops = { + vdev_mirror_open, + vdev_mirror_close, + vdev_default_asize, + vdev_mirror_io_start, + vdev_mirror_io_done, + vdev_mirror_state_change, + NULL, + NULL, + VDEV_TYPE_SPARE, /* name of this vdev type */ + B_FALSE /* not a leaf vdev */ +}; + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_vdev_mirror_switch_us, int, 0644); +MODULE_PARM_DESC(zfs_vdev_mirror_switch_us, "Switch mirrors every N usecs"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/vdev_missing.c +++ linux-4.4.0/zfs/module/zfs/vdev_missing.c @@ -0,0 +1,106 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +/* + * The 'missing' vdev is a special vdev type used only during import. It + * signifies a placeholder in the root vdev for some vdev that we know is + * missing. We pass it down to the kernel to allow the rest of the + * configuration to parsed and an attempt made to open all available devices. + * Because its GUID is always 0, we know that the guid sum will mismatch and we + * won't be able to open the pool anyway. + */ + +#include +#include +#include +#include +#include + +/* ARGSUSED */ +static int +vdev_missing_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, + uint64_t *ashift) +{ + /* + * Really this should just fail. But then the root vdev will be in the + * faulted state with VDEV_AUX_NO_REPLICAS, when what we really want is + * VDEV_AUX_BAD_GUID_SUM. So we pretend to succeed, knowing that we + * will fail the GUID sum check before ever trying to open the pool. + */ + *psize = 0; + *max_psize = 0; + *ashift = 0; + return (0); +} + +/* ARGSUSED */ +static void +vdev_missing_close(vdev_t *vd) +{ +} + +/* ARGSUSED */ +static void +vdev_missing_io_start(zio_t *zio) +{ + zio->io_error = SET_ERROR(ENOTSUP); + zio_execute(zio); +} + +/* ARGSUSED */ +static void +vdev_missing_io_done(zio_t *zio) +{ +} + +vdev_ops_t vdev_missing_ops = { + vdev_missing_open, + vdev_missing_close, + vdev_default_asize, + vdev_missing_io_start, + vdev_missing_io_done, + NULL, + NULL, + NULL, + VDEV_TYPE_MISSING, /* name of this vdev type */ + B_TRUE /* leaf vdev */ +}; + +vdev_ops_t vdev_hole_ops = { + vdev_missing_open, + vdev_missing_close, + vdev_default_asize, + vdev_missing_io_start, + vdev_missing_io_done, + NULL, + NULL, + NULL, + VDEV_TYPE_HOLE, /* name of this vdev type */ + B_TRUE /* leaf vdev */ +}; --- linux-4.4.0.orig/zfs/module/zfs/vdev_queue.c +++ linux-4.4.0/zfs/module/zfs/vdev_queue.c @@ -0,0 +1,840 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ZFS I/O Scheduler + * --------------- + * + * ZFS issues I/O operations to leaf vdevs to satisfy and complete zios. The + * I/O scheduler determines when and in what order those operations are + * issued. The I/O scheduler divides operations into five I/O classes + * prioritized in the following order: sync read, sync write, async read, + * async write, and scrub/resilver. Each queue defines the minimum and + * maximum number of concurrent operations that may be issued to the device. + * In addition, the device has an aggregate maximum. Note that the sum of the + * per-queue minimums must not exceed the aggregate maximum. If the + * sum of the per-queue maximums exceeds the aggregate maximum, then the + * number of active i/os may reach zfs_vdev_max_active, in which case no + * further i/os will be issued regardless of whether all per-queue + * minimums have been met. + * + * For many physical devices, throughput increases with the number of + * concurrent operations, but latency typically suffers. Further, physical + * devices typically have a limit at which more concurrent operations have no + * effect on throughput or can actually cause it to decrease. + * + * The scheduler selects the next operation to issue by first looking for an + * I/O class whose minimum has not been satisfied. Once all are satisfied and + * the aggregate maximum has not been hit, the scheduler looks for classes + * whose maximum has not been satisfied. Iteration through the I/O classes is + * done in the order specified above. No further operations are issued if the + * aggregate maximum number of concurrent operations has been hit or if there + * are no operations queued for an I/O class that has not hit its maximum. + * Every time an i/o is queued or an operation completes, the I/O scheduler + * looks for new operations to issue. + * + * All I/O classes have a fixed maximum number of outstanding operations + * except for the async write class. Asynchronous writes represent the data + * that is committed to stable storage during the syncing stage for + * transaction groups (see txg.c). Transaction groups enter the syncing state + * periodically so the number of queued async writes will quickly burst up and + * then bleed down to zero. Rather than servicing them as quickly as possible, + * the I/O scheduler changes the maximum number of active async write i/os + * according to the amount of dirty data in the pool (see dsl_pool.c). Since + * both throughput and latency typically increase with the number of + * concurrent operations issued to physical devices, reducing the burstiness + * in the number of concurrent operations also stabilizes the response time of + * operations from other -- and in particular synchronous -- queues. In broad + * strokes, the I/O scheduler will issue more concurrent operations from the + * async write queue as there's more dirty data in the pool. + * + * Async Writes + * + * The number of concurrent operations issued for the async write I/O class + * follows a piece-wise linear function defined by a few adjustable points. + * + * | o---------| <-- zfs_vdev_async_write_max_active + * ^ | /^ | + * | | / | | + * active | / | | + * I/O | / | | + * count | / | | + * | / | | + * |------------o | | <-- zfs_vdev_async_write_min_active + * 0|____________^______|_________| + * 0% | | 100% of zfs_dirty_data_max + * | | + * | `-- zfs_vdev_async_write_active_max_dirty_percent + * `--------- zfs_vdev_async_write_active_min_dirty_percent + * + * Until the amount of dirty data exceeds a minimum percentage of the dirty + * data allowed in the pool, the I/O scheduler will limit the number of + * concurrent operations to the minimum. As that threshold is crossed, the + * number of concurrent operations issued increases linearly to the maximum at + * the specified maximum percentage of the dirty data allowed in the pool. + * + * Ideally, the amount of dirty data on a busy pool will stay in the sloped + * part of the function between zfs_vdev_async_write_active_min_dirty_percent + * and zfs_vdev_async_write_active_max_dirty_percent. If it exceeds the + * maximum percentage, this indicates that the rate of incoming data is + * greater than the rate that the backend storage can handle. In this case, we + * must further throttle incoming writes (see dmu_tx_delay() for details). + */ + +/* + * The maximum number of i/os active to each device. Ideally, this will be >= + * the sum of each queue's max_active. It must be at least the sum of each + * queue's min_active. + */ +uint32_t zfs_vdev_max_active = 1000; + +/* + * Per-queue limits on the number of i/os active to each device. If the + * number of active i/os is < zfs_vdev_max_active, then the min_active comes + * into play. We will send min_active from each queue, and then select from + * queues in the order defined by zio_priority_t. + * + * In general, smaller max_active's will lead to lower latency of synchronous + * operations. Larger max_active's may lead to higher overall throughput, + * depending on underlying storage. + * + * The ratio of the queues' max_actives determines the balance of performance + * between reads, writes, and scrubs. E.g., increasing + * zfs_vdev_scrub_max_active will cause the scrub or resilver to complete + * more quickly, but reads and writes to have higher latency and lower + * throughput. + */ +uint32_t zfs_vdev_sync_read_min_active = 10; +uint32_t zfs_vdev_sync_read_max_active = 10; +uint32_t zfs_vdev_sync_write_min_active = 10; +uint32_t zfs_vdev_sync_write_max_active = 10; +uint32_t zfs_vdev_async_read_min_active = 1; +uint32_t zfs_vdev_async_read_max_active = 3; +uint32_t zfs_vdev_async_write_min_active = 1; +uint32_t zfs_vdev_async_write_max_active = 10; +uint32_t zfs_vdev_scrub_min_active = 1; +uint32_t zfs_vdev_scrub_max_active = 2; + +/* + * When the pool has less than zfs_vdev_async_write_active_min_dirty_percent + * dirty data, use zfs_vdev_async_write_min_active. When it has more than + * zfs_vdev_async_write_active_max_dirty_percent, use + * zfs_vdev_async_write_max_active. The value is linearly interpolated + * between min and max. + */ +int zfs_vdev_async_write_active_min_dirty_percent = 30; +int zfs_vdev_async_write_active_max_dirty_percent = 60; + +/* + * To reduce IOPs, we aggregate small adjacent I/Os into one large I/O. + * For read I/Os, we also aggregate across small adjacency gaps; for writes + * we include spans of optional I/Os to aid aggregation at the disk even when + * they aren't able to help us aggregate at this level. + */ +int zfs_vdev_aggregation_limit = SPA_OLD_MAXBLOCKSIZE; +int zfs_vdev_read_gap_limit = 32 << 10; +int zfs_vdev_write_gap_limit = 4 << 10; + +int +vdev_queue_offset_compare(const void *x1, const void *x2) +{ + const zio_t *z1 = x1; + const zio_t *z2 = x2; + + if (z1->io_offset < z2->io_offset) + return (-1); + if (z1->io_offset > z2->io_offset) + return (1); + + if (z1 < z2) + return (-1); + if (z1 > z2) + return (1); + + return (0); +} + +static inline avl_tree_t * +vdev_queue_class_tree(vdev_queue_t *vq, zio_priority_t p) +{ + return (&vq->vq_class[p].vqc_queued_tree); +} + +static inline avl_tree_t * +vdev_queue_type_tree(vdev_queue_t *vq, zio_type_t t) +{ + ASSERT(t == ZIO_TYPE_READ || t == ZIO_TYPE_WRITE); + if (t == ZIO_TYPE_READ) + return (&vq->vq_read_offset_tree); + else + return (&vq->vq_write_offset_tree); +} + +int +vdev_queue_timestamp_compare(const void *x1, const void *x2) +{ + const zio_t *z1 = x1; + const zio_t *z2 = x2; + + if (z1->io_timestamp < z2->io_timestamp) + return (-1); + if (z1->io_timestamp > z2->io_timestamp) + return (1); + + if (z1 < z2) + return (-1); + if (z1 > z2) + return (1); + + return (0); +} + +static int +vdev_queue_class_min_active(zio_priority_t p) +{ + switch (p) { + case ZIO_PRIORITY_SYNC_READ: + return (zfs_vdev_sync_read_min_active); + case ZIO_PRIORITY_SYNC_WRITE: + return (zfs_vdev_sync_write_min_active); + case ZIO_PRIORITY_ASYNC_READ: + return (zfs_vdev_async_read_min_active); + case ZIO_PRIORITY_ASYNC_WRITE: + return (zfs_vdev_async_write_min_active); + case ZIO_PRIORITY_SCRUB: + return (zfs_vdev_scrub_min_active); + default: + panic("invalid priority %u", p); + return (0); + } +} + +static int +vdev_queue_max_async_writes(spa_t *spa) +{ + int writes; + uint64_t dirty = spa->spa_dsl_pool->dp_dirty_total; + uint64_t min_bytes = zfs_dirty_data_max * + zfs_vdev_async_write_active_min_dirty_percent / 100; + uint64_t max_bytes = zfs_dirty_data_max * + zfs_vdev_async_write_active_max_dirty_percent / 100; + + /* + * Sync tasks correspond to interactive user actions. To reduce the + * execution time of those actions we push data out as fast as possible. + */ + if (spa_has_pending_synctask(spa)) { + return (zfs_vdev_async_write_max_active); + } + + if (dirty < min_bytes) + return (zfs_vdev_async_write_min_active); + if (dirty > max_bytes) + return (zfs_vdev_async_write_max_active); + + /* + * linear interpolation: + * slope = (max_writes - min_writes) / (max_bytes - min_bytes) + * move right by min_bytes + * move up by min_writes + */ + writes = (dirty - min_bytes) * + (zfs_vdev_async_write_max_active - + zfs_vdev_async_write_min_active) / + (max_bytes - min_bytes) + + zfs_vdev_async_write_min_active; + ASSERT3U(writes, >=, zfs_vdev_async_write_min_active); + ASSERT3U(writes, <=, zfs_vdev_async_write_max_active); + return (writes); +} + +static int +vdev_queue_class_max_active(spa_t *spa, zio_priority_t p) +{ + switch (p) { + case ZIO_PRIORITY_SYNC_READ: + return (zfs_vdev_sync_read_max_active); + case ZIO_PRIORITY_SYNC_WRITE: + return (zfs_vdev_sync_write_max_active); + case ZIO_PRIORITY_ASYNC_READ: + return (zfs_vdev_async_read_max_active); + case ZIO_PRIORITY_ASYNC_WRITE: + return (vdev_queue_max_async_writes(spa)); + case ZIO_PRIORITY_SCRUB: + return (zfs_vdev_scrub_max_active); + default: + panic("invalid priority %u", p); + return (0); + } +} + +/* + * Return the i/o class to issue from, or ZIO_PRIORITY_MAX_QUEUEABLE if + * there is no eligible class. + */ +static zio_priority_t +vdev_queue_class_to_issue(vdev_queue_t *vq) +{ + spa_t *spa = vq->vq_vdev->vdev_spa; + zio_priority_t p; + + if (avl_numnodes(&vq->vq_active_tree) >= zfs_vdev_max_active) + return (ZIO_PRIORITY_NUM_QUEUEABLE); + + /* find a queue that has not reached its minimum # outstanding i/os */ + for (p = 0; p < ZIO_PRIORITY_NUM_QUEUEABLE; p++) { + if (avl_numnodes(vdev_queue_class_tree(vq, p)) > 0 && + vq->vq_class[p].vqc_active < + vdev_queue_class_min_active(p)) + return (p); + } + + /* + * If we haven't found a queue, look for one that hasn't reached its + * maximum # outstanding i/os. + */ + for (p = 0; p < ZIO_PRIORITY_NUM_QUEUEABLE; p++) { + if (avl_numnodes(vdev_queue_class_tree(vq, p)) > 0 && + vq->vq_class[p].vqc_active < + vdev_queue_class_max_active(spa, p)) + return (p); + } + + /* No eligible queued i/os */ + return (ZIO_PRIORITY_NUM_QUEUEABLE); +} + +void +vdev_queue_init(vdev_t *vd) +{ + vdev_queue_t *vq = &vd->vdev_queue; + zio_priority_t p; + + mutex_init(&vq->vq_lock, NULL, MUTEX_DEFAULT, NULL); + vq->vq_vdev = vd; + taskq_init_ent(&vd->vdev_queue.vq_io_search.io_tqent); + + avl_create(&vq->vq_active_tree, vdev_queue_offset_compare, + sizeof (zio_t), offsetof(struct zio, io_queue_node)); + avl_create(vdev_queue_type_tree(vq, ZIO_TYPE_READ), + vdev_queue_offset_compare, sizeof (zio_t), + offsetof(struct zio, io_offset_node)); + avl_create(vdev_queue_type_tree(vq, ZIO_TYPE_WRITE), + vdev_queue_offset_compare, sizeof (zio_t), + offsetof(struct zio, io_offset_node)); + + for (p = 0; p < ZIO_PRIORITY_NUM_QUEUEABLE; p++) { + int (*compfn) (const void *, const void *); + + /* + * The synchronous i/o queues are dispatched in FIFO rather + * than LBA order. This provides more consistent latency for + * these i/os. + */ + if (p == ZIO_PRIORITY_SYNC_READ || p == ZIO_PRIORITY_SYNC_WRITE) + compfn = vdev_queue_timestamp_compare; + else + compfn = vdev_queue_offset_compare; + avl_create(vdev_queue_class_tree(vq, p), compfn, + sizeof (zio_t), offsetof(struct zio, io_queue_node)); + } +} + +void +vdev_queue_fini(vdev_t *vd) +{ + vdev_queue_t *vq = &vd->vdev_queue; + zio_priority_t p; + + for (p = 0; p < ZIO_PRIORITY_NUM_QUEUEABLE; p++) + avl_destroy(vdev_queue_class_tree(vq, p)); + avl_destroy(&vq->vq_active_tree); + avl_destroy(vdev_queue_type_tree(vq, ZIO_TYPE_READ)); + avl_destroy(vdev_queue_type_tree(vq, ZIO_TYPE_WRITE)); + + mutex_destroy(&vq->vq_lock); +} + +static void +vdev_queue_io_add(vdev_queue_t *vq, zio_t *zio) +{ + spa_t *spa = zio->io_spa; + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + + ASSERT3U(zio->io_priority, <, ZIO_PRIORITY_NUM_QUEUEABLE); + avl_add(vdev_queue_class_tree(vq, zio->io_priority), zio); + avl_add(vdev_queue_type_tree(vq, zio->io_type), zio); + + if (ssh->kstat != NULL) { + mutex_enter(&ssh->lock); + kstat_waitq_enter(ssh->kstat->ks_data); + mutex_exit(&ssh->lock); + } +} + +static void +vdev_queue_io_remove(vdev_queue_t *vq, zio_t *zio) +{ + spa_t *spa = zio->io_spa; + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + + ASSERT3U(zio->io_priority, <, ZIO_PRIORITY_NUM_QUEUEABLE); + avl_remove(vdev_queue_class_tree(vq, zio->io_priority), zio); + avl_remove(vdev_queue_type_tree(vq, zio->io_type), zio); + + if (ssh->kstat != NULL) { + mutex_enter(&ssh->lock); + kstat_waitq_exit(ssh->kstat->ks_data); + mutex_exit(&ssh->lock); + } +} + +static void +vdev_queue_pending_add(vdev_queue_t *vq, zio_t *zio) +{ + spa_t *spa = zio->io_spa; + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + + ASSERT(MUTEX_HELD(&vq->vq_lock)); + ASSERT3U(zio->io_priority, <, ZIO_PRIORITY_NUM_QUEUEABLE); + vq->vq_class[zio->io_priority].vqc_active++; + avl_add(&vq->vq_active_tree, zio); + + if (ssh->kstat != NULL) { + mutex_enter(&ssh->lock); + kstat_runq_enter(ssh->kstat->ks_data); + mutex_exit(&ssh->lock); + } +} + +static void +vdev_queue_pending_remove(vdev_queue_t *vq, zio_t *zio) +{ + spa_t *spa = zio->io_spa; + spa_stats_history_t *ssh = &spa->spa_stats.io_history; + + ASSERT(MUTEX_HELD(&vq->vq_lock)); + ASSERT3U(zio->io_priority, <, ZIO_PRIORITY_NUM_QUEUEABLE); + vq->vq_class[zio->io_priority].vqc_active--; + avl_remove(&vq->vq_active_tree, zio); + + if (ssh->kstat != NULL) { + kstat_io_t *ksio = ssh->kstat->ks_data; + + mutex_enter(&ssh->lock); + kstat_runq_exit(ksio); + if (zio->io_type == ZIO_TYPE_READ) { + ksio->reads++; + ksio->nread += zio->io_size; + } else if (zio->io_type == ZIO_TYPE_WRITE) { + ksio->writes++; + ksio->nwritten += zio->io_size; + } + mutex_exit(&ssh->lock); + } +} + +static void +vdev_queue_agg_io_done(zio_t *aio) +{ + if (aio->io_type == ZIO_TYPE_READ) { + zio_t *pio; + while ((pio = zio_walk_parents(aio)) != NULL) { + bcopy((char *)aio->io_data + (pio->io_offset - + aio->io_offset), pio->io_data, pio->io_size); + } + } + + zio_buf_free(aio->io_data, aio->io_size); +} + +/* + * Compute the range spanned by two i/os, which is the endpoint of the last + * (lio->io_offset + lio->io_size) minus start of the first (fio->io_offset). + * Conveniently, the gap between fio and lio is given by -IO_SPAN(lio, fio); + * thus fio and lio are adjacent if and only if IO_SPAN(lio, fio) == 0. + */ +#define IO_SPAN(fio, lio) ((lio)->io_offset + (lio)->io_size - (fio)->io_offset) +#define IO_GAP(fio, lio) (-IO_SPAN(lio, fio)) + +static zio_t * +vdev_queue_aggregate(vdev_queue_t *vq, zio_t *zio) +{ + zio_t *first, *last, *aio, *dio, *mandatory, *nio; + uint64_t maxgap = 0; + uint64_t size; + boolean_t stretch = B_FALSE; + avl_tree_t *t = vdev_queue_type_tree(vq, zio->io_type); + enum zio_flag flags = zio->io_flags & ZIO_FLAG_AGG_INHERIT; + void *buf; + + if (zio->io_flags & ZIO_FLAG_DONT_AGGREGATE) + return (NULL); + + /* + * Prevent users from setting the zfs_vdev_aggregation_limit + * tuning larger than SPA_MAXBLOCKSIZE. + */ + zfs_vdev_aggregation_limit = + MIN(zfs_vdev_aggregation_limit, SPA_MAXBLOCKSIZE); + + first = last = zio; + + if (zio->io_type == ZIO_TYPE_READ) + maxgap = zfs_vdev_read_gap_limit; + + /* + * We can aggregate I/Os that are sufficiently adjacent and of + * the same flavor, as expressed by the AGG_INHERIT flags. + * The latter requirement is necessary so that certain + * attributes of the I/O, such as whether it's a normal I/O + * or a scrub/resilver, can be preserved in the aggregate. + * We can include optional I/Os, but don't allow them + * to begin a range as they add no benefit in that situation. + */ + + /* + * We keep track of the last non-optional I/O. + */ + mandatory = (first->io_flags & ZIO_FLAG_OPTIONAL) ? NULL : first; + + /* + * Walk backwards through sufficiently contiguous I/Os + * recording the last non-option I/O. + */ + while ((dio = AVL_PREV(t, first)) != NULL && + (dio->io_flags & ZIO_FLAG_AGG_INHERIT) == flags && + IO_SPAN(dio, last) <= zfs_vdev_aggregation_limit && + IO_GAP(dio, first) <= maxgap) { + first = dio; + if (mandatory == NULL && !(first->io_flags & ZIO_FLAG_OPTIONAL)) + mandatory = first; + } + + /* + * Skip any initial optional I/Os. + */ + while ((first->io_flags & ZIO_FLAG_OPTIONAL) && first != last) { + first = AVL_NEXT(t, first); + ASSERT(first != NULL); + } + + + /* + * Walk forward through sufficiently contiguous I/Os. + */ + while ((dio = AVL_NEXT(t, last)) != NULL && + (dio->io_flags & ZIO_FLAG_AGG_INHERIT) == flags && + IO_SPAN(first, dio) <= zfs_vdev_aggregation_limit && + IO_GAP(last, dio) <= maxgap) { + last = dio; + if (!(last->io_flags & ZIO_FLAG_OPTIONAL)) + mandatory = last; + } + + /* + * Now that we've established the range of the I/O aggregation + * we must decide what to do with trailing optional I/Os. + * For reads, there's nothing to do. While we are unable to + * aggregate further, it's possible that a trailing optional + * I/O would allow the underlying device to aggregate with + * subsequent I/Os. We must therefore determine if the next + * non-optional I/O is close enough to make aggregation + * worthwhile. + */ + if (zio->io_type == ZIO_TYPE_WRITE && mandatory != NULL) { + zio_t *nio = last; + while ((dio = AVL_NEXT(t, nio)) != NULL && + IO_GAP(nio, dio) == 0 && + IO_GAP(mandatory, dio) <= zfs_vdev_write_gap_limit) { + nio = dio; + if (!(nio->io_flags & ZIO_FLAG_OPTIONAL)) { + stretch = B_TRUE; + break; + } + } + } + + if (stretch) { + /* This may be a no-op. */ + dio = AVL_NEXT(t, last); + dio->io_flags &= ~ZIO_FLAG_OPTIONAL; + } else { + while (last != mandatory && last != first) { + ASSERT(last->io_flags & ZIO_FLAG_OPTIONAL); + last = AVL_PREV(t, last); + ASSERT(last != NULL); + } + } + + if (first == last) + return (NULL); + + size = IO_SPAN(first, last); + ASSERT3U(size, <=, zfs_vdev_aggregation_limit); + + buf = zio_buf_alloc_flags(size, KM_NOSLEEP); + if (buf == NULL) + return (NULL); + + aio = zio_vdev_delegated_io(first->io_vd, first->io_offset, + buf, size, first->io_type, zio->io_priority, + flags | ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_QUEUE, + vdev_queue_agg_io_done, NULL); + aio->io_timestamp = first->io_timestamp; + + nio = first; + do { + dio = nio; + nio = AVL_NEXT(t, dio); + ASSERT3U(dio->io_type, ==, aio->io_type); + + if (dio->io_flags & ZIO_FLAG_NODATA) { + ASSERT3U(dio->io_type, ==, ZIO_TYPE_WRITE); + bzero((char *)aio->io_data + (dio->io_offset - + aio->io_offset), dio->io_size); + } else if (dio->io_type == ZIO_TYPE_WRITE) { + bcopy(dio->io_data, (char *)aio->io_data + + (dio->io_offset - aio->io_offset), + dio->io_size); + } + + zio_add_child(dio, aio); + vdev_queue_io_remove(vq, dio); + zio_vdev_io_bypass(dio); + zio_execute(dio); + } while (dio != last); + + return (aio); +} + +static zio_t * +vdev_queue_io_to_issue(vdev_queue_t *vq) +{ + zio_t *zio, *aio; + zio_priority_t p; + avl_index_t idx; + avl_tree_t *tree; + +again: + ASSERT(MUTEX_HELD(&vq->vq_lock)); + + p = vdev_queue_class_to_issue(vq); + + if (p == ZIO_PRIORITY_NUM_QUEUEABLE) { + /* No eligible queued i/os */ + return (NULL); + } + + /* + * For LBA-ordered queues (async / scrub), issue the i/o which follows + * the most recently issued i/o in LBA (offset) order. + * + * For FIFO queues (sync), issue the i/o with the lowest timestamp. + */ + tree = vdev_queue_class_tree(vq, p); + vq->vq_io_search.io_timestamp = 0; + vq->vq_io_search.io_offset = vq->vq_last_offset + 1; + VERIFY3P(avl_find(tree, &vq->vq_io_search, + &idx), ==, NULL); + zio = avl_nearest(tree, idx, AVL_AFTER); + if (zio == NULL) + zio = avl_first(tree); + ASSERT3U(zio->io_priority, ==, p); + + aio = vdev_queue_aggregate(vq, zio); + if (aio != NULL) + zio = aio; + else + vdev_queue_io_remove(vq, zio); + + /* + * If the I/O is or was optional and therefore has no data, we need to + * simply discard it. We need to drop the vdev queue's lock to avoid a + * deadlock that we could encounter since this I/O will complete + * immediately. + */ + if (zio->io_flags & ZIO_FLAG_NODATA) { + mutex_exit(&vq->vq_lock); + zio_vdev_io_bypass(zio); + zio_execute(zio); + mutex_enter(&vq->vq_lock); + goto again; + } + + vdev_queue_pending_add(vq, zio); + vq->vq_last_offset = zio->io_offset; + + return (zio); +} + +zio_t * +vdev_queue_io(zio_t *zio) +{ + vdev_queue_t *vq = &zio->io_vd->vdev_queue; + zio_t *nio; + + if (zio->io_flags & ZIO_FLAG_DONT_QUEUE) + return (zio); + + /* + * Children i/os inherent their parent's priority, which might + * not match the child's i/o type. Fix it up here. + */ + if (zio->io_type == ZIO_TYPE_READ) { + if (zio->io_priority != ZIO_PRIORITY_SYNC_READ && + zio->io_priority != ZIO_PRIORITY_ASYNC_READ && + zio->io_priority != ZIO_PRIORITY_SCRUB) + zio->io_priority = ZIO_PRIORITY_ASYNC_READ; + } else { + ASSERT(zio->io_type == ZIO_TYPE_WRITE); + if (zio->io_priority != ZIO_PRIORITY_SYNC_WRITE && + zio->io_priority != ZIO_PRIORITY_ASYNC_WRITE) + zio->io_priority = ZIO_PRIORITY_ASYNC_WRITE; + } + + zio->io_flags |= ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_QUEUE; + + mutex_enter(&vq->vq_lock); + zio->io_timestamp = gethrtime(); + vdev_queue_io_add(vq, zio); + nio = vdev_queue_io_to_issue(vq); + mutex_exit(&vq->vq_lock); + + if (nio == NULL) + return (NULL); + + if (nio->io_done == vdev_queue_agg_io_done) { + zio_nowait(nio); + return (NULL); + } + + return (nio); +} + +void +vdev_queue_io_done(zio_t *zio) +{ + vdev_queue_t *vq = &zio->io_vd->vdev_queue; + zio_t *nio; + + if (zio_injection_enabled) + delay(SEC_TO_TICK(zio_handle_io_delay(zio))); + + mutex_enter(&vq->vq_lock); + + vdev_queue_pending_remove(vq, zio); + + zio->io_delta = gethrtime() - zio->io_timestamp; + vq->vq_io_complete_ts = gethrtime(); + vq->vq_io_delta_ts = vq->vq_io_complete_ts - zio->io_timestamp; + + while ((nio = vdev_queue_io_to_issue(vq)) != NULL) { + mutex_exit(&vq->vq_lock); + if (nio->io_done == vdev_queue_agg_io_done) { + zio_nowait(nio); + } else { + zio_vdev_io_reissue(nio); + zio_execute(nio); + } + mutex_enter(&vq->vq_lock); + } + + mutex_exit(&vq->vq_lock); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_vdev_aggregation_limit, int, 0644); +MODULE_PARM_DESC(zfs_vdev_aggregation_limit, "Max vdev I/O aggregation size"); + +module_param(zfs_vdev_read_gap_limit, int, 0644); +MODULE_PARM_DESC(zfs_vdev_read_gap_limit, "Aggregate read I/O over gap"); + +module_param(zfs_vdev_write_gap_limit, int, 0644); +MODULE_PARM_DESC(zfs_vdev_write_gap_limit, "Aggregate write I/O over gap"); + +module_param(zfs_vdev_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_max_active, "Maximum number of active I/Os per vdev"); + +module_param(zfs_vdev_async_write_active_max_dirty_percent, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_write_active_max_dirty_percent, + "Async write concurrency max threshold"); + +module_param(zfs_vdev_async_write_active_min_dirty_percent, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_write_active_min_dirty_percent, + "Async write concurrency min threshold"); + +module_param(zfs_vdev_async_read_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_read_max_active, + "Max active async read I/Os per vdev"); + +module_param(zfs_vdev_async_read_min_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_read_min_active, + "Min active async read I/Os per vdev"); + +module_param(zfs_vdev_async_write_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_write_max_active, + "Max active async write I/Os per vdev"); + +module_param(zfs_vdev_async_write_min_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_async_write_min_active, + "Min active async write I/Os per vdev"); + +module_param(zfs_vdev_scrub_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_scrub_max_active, "Max active scrub I/Os per vdev"); + +module_param(zfs_vdev_scrub_min_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_scrub_min_active, "Min active scrub I/Os per vdev"); + +module_param(zfs_vdev_sync_read_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_sync_read_max_active, + "Max active sync read I/Os per vdev"); + +module_param(zfs_vdev_sync_read_min_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_sync_read_min_active, + "Min active sync read I/Os per vdev"); + +module_param(zfs_vdev_sync_write_max_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_sync_write_max_active, + "Max active sync write I/Os per vdev"); + +module_param(zfs_vdev_sync_write_min_active, int, 0644); +MODULE_PARM_DESC(zfs_vdev_sync_write_min_active, + "Min active sync write I/Os per vdev"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/vdev_raidz.c +++ linux-4.4.0/zfs/module/zfs/vdev_raidz.c @@ -0,0 +1,2222 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* + * Virtual device vector for RAID-Z. + * + * This vdev supports single, double, and triple parity. For single parity, + * we use a simple XOR of all the data columns. For double or triple parity, + * we use a special case of Reed-Solomon coding. This extends the + * technique described in "The mathematics of RAID-6" by H. Peter Anvin by + * drawing on the system described in "A Tutorial on Reed-Solomon Coding for + * Fault-Tolerance in RAID-like Systems" by James S. Plank on which the + * former is also based. The latter is designed to provide higher performance + * for writes. + * + * Note that the Plank paper claimed to support arbitrary N+M, but was then + * amended six years later identifying a critical flaw that invalidates its + * claims. Nevertheless, the technique can be adapted to work for up to + * triple parity. For additional parity, the amendment "Note: Correction to + * the 1997 Tutorial on Reed-Solomon Coding" by James S. Plank and Ying Ding + * is viable, but the additional complexity means that write performance will + * suffer. + * + * All of the methods above operate on a Galois field, defined over the + * integers mod 2^N. In our case we choose N=8 for GF(8) so that all elements + * can be expressed with a single byte. Briefly, the operations on the + * field are defined as follows: + * + * o addition (+) is represented by a bitwise XOR + * o subtraction (-) is therefore identical to addition: A + B = A - B + * o multiplication of A by 2 is defined by the following bitwise expression: + * + * (A * 2)_7 = A_6 + * (A * 2)_6 = A_5 + * (A * 2)_5 = A_4 + * (A * 2)_4 = A_3 + A_7 + * (A * 2)_3 = A_2 + A_7 + * (A * 2)_2 = A_1 + A_7 + * (A * 2)_1 = A_0 + * (A * 2)_0 = A_7 + * + * In C, multiplying by 2 is therefore ((a << 1) ^ ((a & 0x80) ? 0x1d : 0)). + * As an aside, this multiplication is derived from the error correcting + * primitive polynomial x^8 + x^4 + x^3 + x^2 + 1. + * + * Observe that any number in the field (except for 0) can be expressed as a + * power of 2 -- a generator for the field. We store a table of the powers of + * 2 and logs base 2 for quick look ups, and exploit the fact that A * B can + * be rewritten as 2^(log_2(A) + log_2(B)) (where '+' is normal addition rather + * than field addition). The inverse of a field element A (A^-1) is therefore + * A ^ (255 - 1) = A^254. + * + * The up-to-three parity columns, P, Q, R over several data columns, + * D_0, ... D_n-1, can be expressed by field operations: + * + * P = D_0 + D_1 + ... + D_n-2 + D_n-1 + * Q = 2^n-1 * D_0 + 2^n-2 * D_1 + ... + 2^1 * D_n-2 + 2^0 * D_n-1 + * = ((...((D_0) * 2 + D_1) * 2 + ...) * 2 + D_n-2) * 2 + D_n-1 + * R = 4^n-1 * D_0 + 4^n-2 * D_1 + ... + 4^1 * D_n-2 + 4^0 * D_n-1 + * = ((...((D_0) * 4 + D_1) * 4 + ...) * 4 + D_n-2) * 4 + D_n-1 + * + * We chose 1, 2, and 4 as our generators because 1 corresponds to the trival + * XOR operation, and 2 and 4 can be computed quickly and generate linearly- + * independent coefficients. (There are no additional coefficients that have + * this property which is why the uncorrected Plank method breaks down.) + * + * See the reconstruction code below for how P, Q and R can used individually + * or in concert to recover missing data columns. + */ + +typedef struct raidz_col { + uint64_t rc_devidx; /* child device index for I/O */ + uint64_t rc_offset; /* device offset */ + uint64_t rc_size; /* I/O size */ + void *rc_data; /* I/O data */ + void *rc_gdata; /* used to store the "good" version */ + int rc_error; /* I/O error for this device */ + uint8_t rc_tried; /* Did we attempt this I/O column? */ + uint8_t rc_skipped; /* Did we skip this I/O column? */ +} raidz_col_t; + +typedef struct raidz_map { + uint64_t rm_cols; /* Regular column count */ + uint64_t rm_scols; /* Count including skipped columns */ + uint64_t rm_bigcols; /* Number of oversized columns */ + uint64_t rm_asize; /* Actual total I/O size */ + uint64_t rm_missingdata; /* Count of missing data devices */ + uint64_t rm_missingparity; /* Count of missing parity devices */ + uint64_t rm_firstdatacol; /* First data column/parity count */ + uint64_t rm_nskip; /* Skipped sectors for padding */ + uint64_t rm_skipstart; /* Column index of padding start */ + void *rm_datacopy; /* rm_asize-buffer of copied data */ + uintptr_t rm_reports; /* # of referencing checksum reports */ + uint8_t rm_freed; /* map no longer has referencing ZIO */ + uint8_t rm_ecksuminjected; /* checksum error was injected */ + raidz_col_t rm_col[1]; /* Flexible array of I/O columns */ +} raidz_map_t; + +#define VDEV_RAIDZ_P 0 +#define VDEV_RAIDZ_Q 1 +#define VDEV_RAIDZ_R 2 + +#define VDEV_RAIDZ_MUL_2(x) (((x) << 1) ^ (((x) & 0x80) ? 0x1d : 0)) +#define VDEV_RAIDZ_MUL_4(x) (VDEV_RAIDZ_MUL_2(VDEV_RAIDZ_MUL_2(x))) + +/* + * We provide a mechanism to perform the field multiplication operation on a + * 64-bit value all at once rather than a byte at a time. This works by + * creating a mask from the top bit in each byte and using that to + * conditionally apply the XOR of 0x1d. + */ +#define VDEV_RAIDZ_64MUL_2(x, mask) \ +{ \ + (mask) = (x) & 0x8080808080808080ULL; \ + (mask) = ((mask) << 1) - ((mask) >> 7); \ + (x) = (((x) << 1) & 0xfefefefefefefefeULL) ^ \ + ((mask) & 0x1d1d1d1d1d1d1d1dULL); \ +} + +#define VDEV_RAIDZ_64MUL_4(x, mask) \ +{ \ + VDEV_RAIDZ_64MUL_2((x), mask); \ + VDEV_RAIDZ_64MUL_2((x), mask); \ +} + +/* + * Force reconstruction to use the general purpose method. + */ +int vdev_raidz_default_to_general; + +/* Powers of 2 in the Galois field defined above. */ +static const uint8_t vdev_raidz_pow2[256] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, + 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, + 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, + 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, + 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, + 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, + 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, + 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, + 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, + 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, + 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, + 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, + 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, + 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, + 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, + 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, + 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, + 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, + 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, + 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, + 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, + 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, + 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, + 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, + 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, + 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, + 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09, + 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, + 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16, + 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, + 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x01 +}; +/* Logs of 2 in the Galois field defined above. */ +static const uint8_t vdev_raidz_log2[256] = { + 0x00, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, + 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, + 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, + 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71, + 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, + 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45, + 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, + 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6, + 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, + 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88, + 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, + 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40, + 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, + 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d, + 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, + 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57, + 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, + 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18, + 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, + 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e, + 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, + 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61, + 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, + 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2, + 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, + 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6, + 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, + 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a, + 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, + 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7, + 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, + 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf, +}; + +static void vdev_raidz_generate_parity(raidz_map_t *rm); + +/* + * Multiply a given number by 2 raised to the given power. + */ +static uint8_t +vdev_raidz_exp2(uint_t a, int exp) +{ + if (a == 0) + return (0); + + ASSERT(exp >= 0); + ASSERT(vdev_raidz_log2[a] > 0 || a == 1); + + exp += vdev_raidz_log2[a]; + if (exp > 255) + exp -= 255; + + return (vdev_raidz_pow2[exp]); +} + +static void +vdev_raidz_map_free(raidz_map_t *rm) +{ + int c; + size_t size; + + for (c = 0; c < rm->rm_firstdatacol; c++) { + zio_buf_free(rm->rm_col[c].rc_data, rm->rm_col[c].rc_size); + + if (rm->rm_col[c].rc_gdata != NULL) + zio_buf_free(rm->rm_col[c].rc_gdata, + rm->rm_col[c].rc_size); + } + + size = 0; + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) + size += rm->rm_col[c].rc_size; + + if (rm->rm_datacopy != NULL) + zio_buf_free(rm->rm_datacopy, size); + + kmem_free(rm, offsetof(raidz_map_t, rm_col[rm->rm_scols])); +} + +static void +vdev_raidz_map_free_vsd(zio_t *zio) +{ + raidz_map_t *rm = zio->io_vsd; + + ASSERT0(rm->rm_freed); + rm->rm_freed = 1; + + if (rm->rm_reports == 0) + vdev_raidz_map_free(rm); +} + +/*ARGSUSED*/ +static void +vdev_raidz_cksum_free(void *arg, size_t ignored) +{ + raidz_map_t *rm = arg; + + ASSERT3U(rm->rm_reports, >, 0); + + if (--rm->rm_reports == 0 && rm->rm_freed != 0) + vdev_raidz_map_free(rm); +} + +static void +vdev_raidz_cksum_finish(zio_cksum_report_t *zcr, const void *good_data) +{ + raidz_map_t *rm = zcr->zcr_cbdata; + size_t c = zcr->zcr_cbinfo; + size_t x; + + const char *good = NULL; + const char *bad = rm->rm_col[c].rc_data; + + if (good_data == NULL) { + zfs_ereport_finish_checksum(zcr, NULL, NULL, B_FALSE); + return; + } + + if (c < rm->rm_firstdatacol) { + /* + * The first time through, calculate the parity blocks for + * the good data (this relies on the fact that the good + * data never changes for a given logical ZIO) + */ + if (rm->rm_col[0].rc_gdata == NULL) { + char *bad_parity[VDEV_RAIDZ_MAXPARITY]; + char *buf; + + /* + * Set up the rm_col[]s to generate the parity for + * good_data, first saving the parity bufs and + * replacing them with buffers to hold the result. + */ + for (x = 0; x < rm->rm_firstdatacol; x++) { + bad_parity[x] = rm->rm_col[x].rc_data; + rm->rm_col[x].rc_data = rm->rm_col[x].rc_gdata = + zio_buf_alloc(rm->rm_col[x].rc_size); + } + + /* fill in the data columns from good_data */ + buf = (char *)good_data; + for (; x < rm->rm_cols; x++) { + rm->rm_col[x].rc_data = buf; + buf += rm->rm_col[x].rc_size; + } + + /* + * Construct the parity from the good data. + */ + vdev_raidz_generate_parity(rm); + + /* restore everything back to its original state */ + for (x = 0; x < rm->rm_firstdatacol; x++) + rm->rm_col[x].rc_data = bad_parity[x]; + + buf = rm->rm_datacopy; + for (x = rm->rm_firstdatacol; x < rm->rm_cols; x++) { + rm->rm_col[x].rc_data = buf; + buf += rm->rm_col[x].rc_size; + } + } + + ASSERT3P(rm->rm_col[c].rc_gdata, !=, NULL); + good = rm->rm_col[c].rc_gdata; + } else { + /* adjust good_data to point at the start of our column */ + good = good_data; + + for (x = rm->rm_firstdatacol; x < c; x++) + good += rm->rm_col[x].rc_size; + } + + /* we drop the ereport if it ends up that the data was good */ + zfs_ereport_finish_checksum(zcr, good, bad, B_TRUE); +} + +/* + * Invoked indirectly by zfs_ereport_start_checksum(), called + * below when our read operation fails completely. The main point + * is to keep a copy of everything we read from disk, so that at + * vdev_raidz_cksum_finish() time we can compare it with the good data. + */ +static void +vdev_raidz_cksum_report(zio_t *zio, zio_cksum_report_t *zcr, void *arg) +{ + size_t c = (size_t)(uintptr_t)arg; + caddr_t buf; + + raidz_map_t *rm = zio->io_vsd; + size_t size; + + /* set up the report and bump the refcount */ + zcr->zcr_cbdata = rm; + zcr->zcr_cbinfo = c; + zcr->zcr_finish = vdev_raidz_cksum_finish; + zcr->zcr_free = vdev_raidz_cksum_free; + + rm->rm_reports++; + ASSERT3U(rm->rm_reports, >, 0); + + if (rm->rm_datacopy != NULL) + return; + + /* + * It's the first time we're called for this raidz_map_t, so we need + * to copy the data aside; there's no guarantee that our zio's buffer + * won't be re-used for something else. + * + * Our parity data is already in separate buffers, so there's no need + * to copy them. + */ + + size = 0; + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) + size += rm->rm_col[c].rc_size; + + buf = rm->rm_datacopy = zio_buf_alloc(size); + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + raidz_col_t *col = &rm->rm_col[c]; + + bcopy(col->rc_data, buf, col->rc_size); + col->rc_data = buf; + + buf += col->rc_size; + } + ASSERT3P(buf - (caddr_t)rm->rm_datacopy, ==, size); +} + +static const zio_vsd_ops_t vdev_raidz_vsd_ops = { + vdev_raidz_map_free_vsd, + vdev_raidz_cksum_report +}; + +/* + * Divides the IO evenly across all child vdevs; usually, dcols is + * the number of children in the target vdev. + * + * Avoid inlining the function to keep vdev_raidz_io_start(), which + * is this functions only caller, as small as possible on the stack. + */ +noinline static raidz_map_t * +vdev_raidz_map_alloc(zio_t *zio, uint64_t unit_shift, uint64_t dcols, + uint64_t nparity) +{ + raidz_map_t *rm; + /* The starting RAIDZ (parent) vdev sector of the block. */ + uint64_t b = zio->io_offset >> unit_shift; + /* The zio's size in units of the vdev's minimum sector size. */ + uint64_t s = zio->io_size >> unit_shift; + /* The first column for this stripe. */ + uint64_t f = b % dcols; + /* The starting byte offset on each child vdev. */ + uint64_t o = (b / dcols) << unit_shift; + uint64_t q, r, c, bc, col, acols, scols, coff, devidx, asize, tot; + + /* + * "Quotient": The number of data sectors for this stripe on all but + * the "big column" child vdevs that also contain "remainder" data. + */ + q = s / (dcols - nparity); + + /* + * "Remainder": The number of partial stripe data sectors in this I/O. + * This will add a sector to some, but not all, child vdevs. + */ + r = s - q * (dcols - nparity); + + /* The number of "big columns" - those which contain remainder data. */ + bc = (r == 0 ? 0 : r + nparity); + + /* + * The total number of data and parity sectors associated with + * this I/O. + */ + tot = s + nparity * (q + (r == 0 ? 0 : 1)); + + /* acols: The columns that will be accessed. */ + /* scols: The columns that will be accessed or skipped. */ + if (q == 0) { + /* Our I/O request doesn't span all child vdevs. */ + acols = bc; + scols = MIN(dcols, roundup(bc, nparity + 1)); + } else { + acols = dcols; + scols = dcols; + } + + ASSERT3U(acols, <=, scols); + + rm = kmem_alloc(offsetof(raidz_map_t, rm_col[scols]), KM_SLEEP); + + rm->rm_cols = acols; + rm->rm_scols = scols; + rm->rm_bigcols = bc; + rm->rm_skipstart = bc; + rm->rm_missingdata = 0; + rm->rm_missingparity = 0; + rm->rm_firstdatacol = nparity; + rm->rm_datacopy = NULL; + rm->rm_reports = 0; + rm->rm_freed = 0; + rm->rm_ecksuminjected = 0; + + asize = 0; + + for (c = 0; c < scols; c++) { + col = f + c; + coff = o; + if (col >= dcols) { + col -= dcols; + coff += 1ULL << unit_shift; + } + rm->rm_col[c].rc_devidx = col; + rm->rm_col[c].rc_offset = coff; + rm->rm_col[c].rc_data = NULL; + rm->rm_col[c].rc_gdata = NULL; + rm->rm_col[c].rc_error = 0; + rm->rm_col[c].rc_tried = 0; + rm->rm_col[c].rc_skipped = 0; + + if (c >= acols) + rm->rm_col[c].rc_size = 0; + else if (c < bc) + rm->rm_col[c].rc_size = (q + 1) << unit_shift; + else + rm->rm_col[c].rc_size = q << unit_shift; + + asize += rm->rm_col[c].rc_size; + } + + ASSERT3U(asize, ==, tot << unit_shift); + rm->rm_asize = roundup(asize, (nparity + 1) << unit_shift); + rm->rm_nskip = roundup(tot, nparity + 1) - tot; + ASSERT3U(rm->rm_asize - asize, ==, rm->rm_nskip << unit_shift); + ASSERT3U(rm->rm_nskip, <=, nparity); + + for (c = 0; c < rm->rm_firstdatacol; c++) + rm->rm_col[c].rc_data = zio_buf_alloc(rm->rm_col[c].rc_size); + + rm->rm_col[c].rc_data = zio->io_data; + + for (c = c + 1; c < acols; c++) + rm->rm_col[c].rc_data = (char *)rm->rm_col[c - 1].rc_data + + rm->rm_col[c - 1].rc_size; + + /* + * If all data stored spans all columns, there's a danger that parity + * will always be on the same device and, since parity isn't read + * during normal operation, that that device's I/O bandwidth won't be + * used effectively. We therefore switch the parity every 1MB. + * + * ... at least that was, ostensibly, the theory. As a practical + * matter unless we juggle the parity between all devices evenly, we + * won't see any benefit. Further, occasional writes that aren't a + * multiple of the LCM of the number of children and the minimum + * stripe width are sufficient to avoid pessimal behavior. + * Unfortunately, this decision created an implicit on-disk format + * requirement that we need to support for all eternity, but only + * for single-parity RAID-Z. + * + * If we intend to skip a sector in the zeroth column for padding + * we must make sure to note this swap. We will never intend to + * skip the first column since at least one data and one parity + * column must appear in each row. + */ + ASSERT(rm->rm_cols >= 2); + ASSERT(rm->rm_col[0].rc_size == rm->rm_col[1].rc_size); + + if (rm->rm_firstdatacol == 1 && (zio->io_offset & (1ULL << 20))) { + devidx = rm->rm_col[0].rc_devidx; + o = rm->rm_col[0].rc_offset; + rm->rm_col[0].rc_devidx = rm->rm_col[1].rc_devidx; + rm->rm_col[0].rc_offset = rm->rm_col[1].rc_offset; + rm->rm_col[1].rc_devidx = devidx; + rm->rm_col[1].rc_offset = o; + + if (rm->rm_skipstart == 0) + rm->rm_skipstart = 1; + } + + zio->io_vsd = rm; + zio->io_vsd_ops = &vdev_raidz_vsd_ops; + return (rm); +} + +static void +vdev_raidz_generate_parity_p(raidz_map_t *rm) +{ + uint64_t *p, *src, pcount, ccount, i; + int c; + + pcount = rm->rm_col[VDEV_RAIDZ_P].rc_size / sizeof (src[0]); + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + src = rm->rm_col[c].rc_data; + p = rm->rm_col[VDEV_RAIDZ_P].rc_data; + ccount = rm->rm_col[c].rc_size / sizeof (src[0]); + + if (c == rm->rm_firstdatacol) { + ASSERT(ccount == pcount); + for (i = 0; i < ccount; i++, src++, p++) { + *p = *src; + } + } else { + ASSERT(ccount <= pcount); + for (i = 0; i < ccount; i++, src++, p++) { + *p ^= *src; + } + } + } +} + +static void +vdev_raidz_generate_parity_pq(raidz_map_t *rm) +{ + uint64_t *p, *q, *src, pcnt, ccnt, mask, i; + int c; + + pcnt = rm->rm_col[VDEV_RAIDZ_P].rc_size / sizeof (src[0]); + ASSERT(rm->rm_col[VDEV_RAIDZ_P].rc_size == + rm->rm_col[VDEV_RAIDZ_Q].rc_size); + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + src = rm->rm_col[c].rc_data; + p = rm->rm_col[VDEV_RAIDZ_P].rc_data; + q = rm->rm_col[VDEV_RAIDZ_Q].rc_data; + + ccnt = rm->rm_col[c].rc_size / sizeof (src[0]); + + if (c == rm->rm_firstdatacol) { + ASSERT(ccnt == pcnt || ccnt == 0); + for (i = 0; i < ccnt; i++, src++, p++, q++) { + *p = *src; + *q = *src; + } + for (; i < pcnt; i++, src++, p++, q++) { + *p = 0; + *q = 0; + } + } else { + ASSERT(ccnt <= pcnt); + + /* + * Apply the algorithm described above by multiplying + * the previous result and adding in the new value. + */ + for (i = 0; i < ccnt; i++, src++, p++, q++) { + *p ^= *src; + + VDEV_RAIDZ_64MUL_2(*q, mask); + *q ^= *src; + } + + /* + * Treat short columns as though they are full of 0s. + * Note that there's therefore nothing needed for P. + */ + for (; i < pcnt; i++, q++) { + VDEV_RAIDZ_64MUL_2(*q, mask); + } + } + } +} + +static void +vdev_raidz_generate_parity_pqr(raidz_map_t *rm) +{ + uint64_t *p, *q, *r, *src, pcnt, ccnt, mask, i; + int c; + + pcnt = rm->rm_col[VDEV_RAIDZ_P].rc_size / sizeof (src[0]); + ASSERT(rm->rm_col[VDEV_RAIDZ_P].rc_size == + rm->rm_col[VDEV_RAIDZ_Q].rc_size); + ASSERT(rm->rm_col[VDEV_RAIDZ_P].rc_size == + rm->rm_col[VDEV_RAIDZ_R].rc_size); + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + src = rm->rm_col[c].rc_data; + p = rm->rm_col[VDEV_RAIDZ_P].rc_data; + q = rm->rm_col[VDEV_RAIDZ_Q].rc_data; + r = rm->rm_col[VDEV_RAIDZ_R].rc_data; + + ccnt = rm->rm_col[c].rc_size / sizeof (src[0]); + + if (c == rm->rm_firstdatacol) { + ASSERT(ccnt == pcnt || ccnt == 0); + for (i = 0; i < ccnt; i++, src++, p++, q++, r++) { + *p = *src; + *q = *src; + *r = *src; + } + for (; i < pcnt; i++, src++, p++, q++, r++) { + *p = 0; + *q = 0; + *r = 0; + } + } else { + ASSERT(ccnt <= pcnt); + + /* + * Apply the algorithm described above by multiplying + * the previous result and adding in the new value. + */ + for (i = 0; i < ccnt; i++, src++, p++, q++, r++) { + *p ^= *src; + + VDEV_RAIDZ_64MUL_2(*q, mask); + *q ^= *src; + + VDEV_RAIDZ_64MUL_4(*r, mask); + *r ^= *src; + } + + /* + * Treat short columns as though they are full of 0s. + * Note that there's therefore nothing needed for P. + */ + for (; i < pcnt; i++, q++, r++) { + VDEV_RAIDZ_64MUL_2(*q, mask); + VDEV_RAIDZ_64MUL_4(*r, mask); + } + } + } +} + +/* + * Generate RAID parity in the first virtual columns according to the number of + * parity columns available. + */ +static void +vdev_raidz_generate_parity(raidz_map_t *rm) +{ + switch (rm->rm_firstdatacol) { + case 1: + vdev_raidz_generate_parity_p(rm); + break; + case 2: + vdev_raidz_generate_parity_pq(rm); + break; + case 3: + vdev_raidz_generate_parity_pqr(rm); + break; + default: + cmn_err(CE_PANIC, "invalid RAID-Z configuration"); + } +} + +static int +vdev_raidz_reconstruct_p(raidz_map_t *rm, int *tgts, int ntgts) +{ + uint64_t *dst, *src, xcount, ccount, count, i; + int x = tgts[0]; + int c; + + ASSERT(ntgts == 1); + ASSERT(x >= rm->rm_firstdatacol); + ASSERT(x < rm->rm_cols); + + xcount = rm->rm_col[x].rc_size / sizeof (src[0]); + ASSERT(xcount <= rm->rm_col[VDEV_RAIDZ_P].rc_size / sizeof (src[0])); + ASSERT(xcount > 0); + + src = rm->rm_col[VDEV_RAIDZ_P].rc_data; + dst = rm->rm_col[x].rc_data; + for (i = 0; i < xcount; i++, dst++, src++) { + *dst = *src; + } + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + src = rm->rm_col[c].rc_data; + dst = rm->rm_col[x].rc_data; + + if (c == x) + continue; + + ccount = rm->rm_col[c].rc_size / sizeof (src[0]); + count = MIN(ccount, xcount); + + for (i = 0; i < count; i++, dst++, src++) { + *dst ^= *src; + } + } + + return (1 << VDEV_RAIDZ_P); +} + +static int +vdev_raidz_reconstruct_q(raidz_map_t *rm, int *tgts, int ntgts) +{ + uint64_t *dst, *src, xcount, ccount, count, mask, i; + uint8_t *b; + int x = tgts[0]; + int c, j, exp; + + ASSERT(ntgts == 1); + + xcount = rm->rm_col[x].rc_size / sizeof (src[0]); + ASSERT(xcount <= rm->rm_col[VDEV_RAIDZ_Q].rc_size / sizeof (src[0])); + + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + src = rm->rm_col[c].rc_data; + dst = rm->rm_col[x].rc_data; + + if (c == x) + ccount = 0; + else + ccount = rm->rm_col[c].rc_size / sizeof (src[0]); + + count = MIN(ccount, xcount); + + if (c == rm->rm_firstdatacol) { + for (i = 0; i < count; i++, dst++, src++) { + *dst = *src; + } + for (; i < xcount; i++, dst++) { + *dst = 0; + } + + } else { + for (i = 0; i < count; i++, dst++, src++) { + VDEV_RAIDZ_64MUL_2(*dst, mask); + *dst ^= *src; + } + + for (; i < xcount; i++, dst++) { + VDEV_RAIDZ_64MUL_2(*dst, mask); + } + } + } + + src = rm->rm_col[VDEV_RAIDZ_Q].rc_data; + dst = rm->rm_col[x].rc_data; + exp = 255 - (rm->rm_cols - 1 - x); + + for (i = 0; i < xcount; i++, dst++, src++) { + *dst ^= *src; + for (j = 0, b = (uint8_t *)dst; j < 8; j++, b++) { + *b = vdev_raidz_exp2(*b, exp); + } + } + + return (1 << VDEV_RAIDZ_Q); +} + +static int +vdev_raidz_reconstruct_pq(raidz_map_t *rm, int *tgts, int ntgts) +{ + uint8_t *p, *q, *pxy, *qxy, *xd, *yd, tmp, a, b, aexp, bexp; + void *pdata, *qdata; + uint64_t xsize, ysize, i; + int x = tgts[0]; + int y = tgts[1]; + + ASSERT(ntgts == 2); + ASSERT(x < y); + ASSERT(x >= rm->rm_firstdatacol); + ASSERT(y < rm->rm_cols); + + ASSERT(rm->rm_col[x].rc_size >= rm->rm_col[y].rc_size); + + /* + * Move the parity data aside -- we're going to compute parity as + * though columns x and y were full of zeros -- Pxy and Qxy. We want to + * reuse the parity generation mechanism without trashing the actual + * parity so we make those columns appear to be full of zeros by + * setting their lengths to zero. + */ + pdata = rm->rm_col[VDEV_RAIDZ_P].rc_data; + qdata = rm->rm_col[VDEV_RAIDZ_Q].rc_data; + xsize = rm->rm_col[x].rc_size; + ysize = rm->rm_col[y].rc_size; + + rm->rm_col[VDEV_RAIDZ_P].rc_data = + zio_buf_alloc(rm->rm_col[VDEV_RAIDZ_P].rc_size); + rm->rm_col[VDEV_RAIDZ_Q].rc_data = + zio_buf_alloc(rm->rm_col[VDEV_RAIDZ_Q].rc_size); + rm->rm_col[x].rc_size = 0; + rm->rm_col[y].rc_size = 0; + + vdev_raidz_generate_parity_pq(rm); + + rm->rm_col[x].rc_size = xsize; + rm->rm_col[y].rc_size = ysize; + + p = pdata; + q = qdata; + pxy = rm->rm_col[VDEV_RAIDZ_P].rc_data; + qxy = rm->rm_col[VDEV_RAIDZ_Q].rc_data; + xd = rm->rm_col[x].rc_data; + yd = rm->rm_col[y].rc_data; + + /* + * We now have: + * Pxy = P + D_x + D_y + * Qxy = Q + 2^(ndevs - 1 - x) * D_x + 2^(ndevs - 1 - y) * D_y + * + * We can then solve for D_x: + * D_x = A * (P + Pxy) + B * (Q + Qxy) + * where + * A = 2^(x - y) * (2^(x - y) + 1)^-1 + * B = 2^(ndevs - 1 - x) * (2^(x - y) + 1)^-1 + * + * With D_x in hand, we can easily solve for D_y: + * D_y = P + Pxy + D_x + */ + + a = vdev_raidz_pow2[255 + x - y]; + b = vdev_raidz_pow2[255 - (rm->rm_cols - 1 - x)]; + tmp = 255 - vdev_raidz_log2[a ^ 1]; + + aexp = vdev_raidz_log2[vdev_raidz_exp2(a, tmp)]; + bexp = vdev_raidz_log2[vdev_raidz_exp2(b, tmp)]; + + for (i = 0; i < xsize; i++, p++, q++, pxy++, qxy++, xd++, yd++) { + *xd = vdev_raidz_exp2(*p ^ *pxy, aexp) ^ + vdev_raidz_exp2(*q ^ *qxy, bexp); + + if (i < ysize) + *yd = *p ^ *pxy ^ *xd; + } + + zio_buf_free(rm->rm_col[VDEV_RAIDZ_P].rc_data, + rm->rm_col[VDEV_RAIDZ_P].rc_size); + zio_buf_free(rm->rm_col[VDEV_RAIDZ_Q].rc_data, + rm->rm_col[VDEV_RAIDZ_Q].rc_size); + + /* + * Restore the saved parity data. + */ + rm->rm_col[VDEV_RAIDZ_P].rc_data = pdata; + rm->rm_col[VDEV_RAIDZ_Q].rc_data = qdata; + + return ((1 << VDEV_RAIDZ_P) | (1 << VDEV_RAIDZ_Q)); +} + +/* BEGIN CSTYLED */ +/* + * In the general case of reconstruction, we must solve the system of linear + * equations defined by the coeffecients used to generate parity as well as + * the contents of the data and parity disks. This can be expressed with + * vectors for the original data (D) and the actual data (d) and parity (p) + * and a matrix composed of the identity matrix (I) and a dispersal matrix (V): + * + * __ __ __ __ + * | | __ __ | p_0 | + * | V | | D_0 | | p_m-1 | + * | | x | : | = | d_0 | + * | I | | D_n-1 | | : | + * | | ~~ ~~ | d_n-1 | + * ~~ ~~ ~~ ~~ + * + * I is simply a square identity matrix of size n, and V is a vandermonde + * matrix defined by the coeffecients we chose for the various parity columns + * (1, 2, 4). Note that these values were chosen both for simplicity, speedy + * computation as well as linear separability. + * + * __ __ __ __ + * | 1 .. 1 1 1 | | p_0 | + * | 2^n-1 .. 4 2 1 | __ __ | : | + * | 4^n-1 .. 16 4 1 | | D_0 | | p_m-1 | + * | 1 .. 0 0 0 | | D_1 | | d_0 | + * | 0 .. 0 0 0 | x | D_2 | = | d_1 | + * | : : : : | | : | | d_2 | + * | 0 .. 1 0 0 | | D_n-1 | | : | + * | 0 .. 0 1 0 | ~~ ~~ | : | + * | 0 .. 0 0 1 | | d_n-1 | + * ~~ ~~ ~~ ~~ + * + * Note that I, V, d, and p are known. To compute D, we must invert the + * matrix and use the known data and parity values to reconstruct the unknown + * data values. We begin by removing the rows in V|I and d|p that correspond + * to failed or missing columns; we then make V|I square (n x n) and d|p + * sized n by removing rows corresponding to unused parity from the bottom up + * to generate (V|I)' and (d|p)'. We can then generate the inverse of (V|I)' + * using Gauss-Jordan elimination. In the example below we use m=3 parity + * columns, n=8 data columns, with errors in d_1, d_2, and p_1: + * __ __ + * | 1 1 1 1 1 1 1 1 | + * | 128 64 32 16 8 4 2 1 | <-----+-+-- missing disks + * | 19 205 116 29 64 16 4 1 | / / + * | 1 0 0 0 0 0 0 0 | / / + * | 0 1 0 0 0 0 0 0 | <--' / + * (V|I) = | 0 0 1 0 0 0 0 0 | <---' + * | 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 1 1 1 1 1 1 1 | + * | 128 64 32 16 8 4 2 1 | + * | 19 205 116 29 64 16 4 1 | + * | 1 0 0 0 0 0 0 0 | + * | 0 1 0 0 0 0 0 0 | + * (V|I)' = | 0 0 1 0 0 0 0 0 | + * | 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * + * Here we employ Gauss-Jordan elimination to find the inverse of (V|I)'. We + * have carefully chosen the seed values 1, 2, and 4 to ensure that this + * matrix is not singular. + * __ __ + * | 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 | + * | 19 205 116 29 64 16 4 1 0 1 0 0 0 0 0 0 | + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 | + * | 19 205 116 29 64 16 4 1 0 1 0 0 0 0 0 0 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 | + * | 0 205 116 0 0 0 0 0 0 1 19 29 64 16 4 1 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 | + * | 0 0 185 0 0 0 0 0 205 1 222 208 141 221 201 204 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 | + * | 0 0 1 0 0 0 0 0 166 100 4 40 158 168 216 209 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 | + * | 0 1 0 0 0 0 0 0 167 100 5 41 159 169 217 208 | + * | 0 0 1 0 0 0 0 0 166 100 4 40 158 168 216 209 | + * | 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * __ __ + * | 0 0 1 0 0 0 0 0 | + * | 167 100 5 41 159 169 217 208 | + * | 166 100 4 40 158 168 216 209 | + * (V|I)'^-1 = | 0 0 0 1 0 0 0 0 | + * | 0 0 0 0 1 0 0 0 | + * | 0 0 0 0 0 1 0 0 | + * | 0 0 0 0 0 0 1 0 | + * | 0 0 0 0 0 0 0 1 | + * ~~ ~~ + * + * We can then simply compute D = (V|I)'^-1 x (d|p)' to discover the values + * of the missing data. + * + * As is apparent from the example above, the only non-trivial rows in the + * inverse matrix correspond to the data disks that we're trying to + * reconstruct. Indeed, those are the only rows we need as the others would + * only be useful for reconstructing data known or assumed to be valid. For + * that reason, we only build the coefficients in the rows that correspond to + * targeted columns. + */ +/* END CSTYLED */ + +static void +vdev_raidz_matrix_init(raidz_map_t *rm, int n, int nmap, int *map, + uint8_t **rows) +{ + int i, j; + int pow; + + ASSERT(n == rm->rm_cols - rm->rm_firstdatacol); + + /* + * Fill in the missing rows of interest. + */ + for (i = 0; i < nmap; i++) { + ASSERT3S(0, <=, map[i]); + ASSERT3S(map[i], <=, 2); + + pow = map[i] * n; + if (pow > 255) + pow -= 255; + ASSERT(pow <= 255); + + for (j = 0; j < n; j++) { + pow -= map[i]; + if (pow < 0) + pow += 255; + rows[i][j] = vdev_raidz_pow2[pow]; + } + } +} + +static void +vdev_raidz_matrix_invert(raidz_map_t *rm, int n, int nmissing, int *missing, + uint8_t **rows, uint8_t **invrows, const uint8_t *used) +{ + int i, j, ii, jj; + uint8_t log; + + /* + * Assert that the first nmissing entries from the array of used + * columns correspond to parity columns and that subsequent entries + * correspond to data columns. + */ + for (i = 0; i < nmissing; i++) { + ASSERT3S(used[i], <, rm->rm_firstdatacol); + } + for (; i < n; i++) { + ASSERT3S(used[i], >=, rm->rm_firstdatacol); + } + + /* + * First initialize the storage where we'll compute the inverse rows. + */ + for (i = 0; i < nmissing; i++) { + for (j = 0; j < n; j++) { + invrows[i][j] = (i == j) ? 1 : 0; + } + } + + /* + * Subtract all trivial rows from the rows of consequence. + */ + for (i = 0; i < nmissing; i++) { + for (j = nmissing; j < n; j++) { + ASSERT3U(used[j], >=, rm->rm_firstdatacol); + jj = used[j] - rm->rm_firstdatacol; + ASSERT3S(jj, <, n); + invrows[i][j] = rows[i][jj]; + rows[i][jj] = 0; + } + } + + /* + * For each of the rows of interest, we must normalize it and subtract + * a multiple of it from the other rows. + */ + for (i = 0; i < nmissing; i++) { + for (j = 0; j < missing[i]; j++) { + ASSERT0(rows[i][j]); + } + ASSERT3U(rows[i][missing[i]], !=, 0); + + /* + * Compute the inverse of the first element and multiply each + * element in the row by that value. + */ + log = 255 - vdev_raidz_log2[rows[i][missing[i]]]; + + for (j = 0; j < n; j++) { + rows[i][j] = vdev_raidz_exp2(rows[i][j], log); + invrows[i][j] = vdev_raidz_exp2(invrows[i][j], log); + } + + for (ii = 0; ii < nmissing; ii++) { + if (i == ii) + continue; + + ASSERT3U(rows[ii][missing[i]], !=, 0); + + log = vdev_raidz_log2[rows[ii][missing[i]]]; + + for (j = 0; j < n; j++) { + rows[ii][j] ^= + vdev_raidz_exp2(rows[i][j], log); + invrows[ii][j] ^= + vdev_raidz_exp2(invrows[i][j], log); + } + } + } + + /* + * Verify that the data that is left in the rows are properly part of + * an identity matrix. + */ + for (i = 0; i < nmissing; i++) { + for (j = 0; j < n; j++) { + if (j == missing[i]) { + ASSERT3U(rows[i][j], ==, 1); + } else { + ASSERT0(rows[i][j]); + } + } + } +} + +static void +vdev_raidz_matrix_reconstruct(raidz_map_t *rm, int n, int nmissing, + int *missing, uint8_t **invrows, const uint8_t *used) +{ + int i, j, x, cc, c; + uint8_t *src; + uint64_t ccount; + uint8_t *dst[VDEV_RAIDZ_MAXPARITY]; + uint64_t dcount[VDEV_RAIDZ_MAXPARITY]; + uint8_t log = 0; + uint8_t val; + int ll; + uint8_t *invlog[VDEV_RAIDZ_MAXPARITY]; + uint8_t *p, *pp; + size_t psize; + + psize = sizeof (invlog[0][0]) * n * nmissing; + p = kmem_alloc(psize, KM_SLEEP); + + for (pp = p, i = 0; i < nmissing; i++) { + invlog[i] = pp; + pp += n; + } + + for (i = 0; i < nmissing; i++) { + for (j = 0; j < n; j++) { + ASSERT3U(invrows[i][j], !=, 0); + invlog[i][j] = vdev_raidz_log2[invrows[i][j]]; + } + } + + for (i = 0; i < n; i++) { + c = used[i]; + ASSERT3U(c, <, rm->rm_cols); + + src = rm->rm_col[c].rc_data; + ccount = rm->rm_col[c].rc_size; + for (j = 0; j < nmissing; j++) { + cc = missing[j] + rm->rm_firstdatacol; + ASSERT3U(cc, >=, rm->rm_firstdatacol); + ASSERT3U(cc, <, rm->rm_cols); + ASSERT3U(cc, !=, c); + + dst[j] = rm->rm_col[cc].rc_data; + dcount[j] = rm->rm_col[cc].rc_size; + } + + ASSERT(ccount >= rm->rm_col[missing[0]].rc_size || i > 0); + + for (x = 0; x < ccount; x++, src++) { + if (*src != 0) + log = vdev_raidz_log2[*src]; + + for (cc = 0; cc < nmissing; cc++) { + if (x >= dcount[cc]) + continue; + + if (*src == 0) { + val = 0; + } else { + if ((ll = log + invlog[cc][i]) >= 255) + ll -= 255; + val = vdev_raidz_pow2[ll]; + } + + if (i == 0) + dst[cc][x] = val; + else + dst[cc][x] ^= val; + } + } + } + + kmem_free(p, psize); +} + +static int +vdev_raidz_reconstruct_general(raidz_map_t *rm, int *tgts, int ntgts) +{ + int n, i, c, t, tt; + int nmissing_rows; + int missing_rows[VDEV_RAIDZ_MAXPARITY]; + int parity_map[VDEV_RAIDZ_MAXPARITY]; + + uint8_t *p, *pp; + size_t psize; + + uint8_t *rows[VDEV_RAIDZ_MAXPARITY]; + uint8_t *invrows[VDEV_RAIDZ_MAXPARITY]; + uint8_t *used; + + int code = 0; + + + n = rm->rm_cols - rm->rm_firstdatacol; + + /* + * Figure out which data columns are missing. + */ + nmissing_rows = 0; + for (t = 0; t < ntgts; t++) { + if (tgts[t] >= rm->rm_firstdatacol) { + missing_rows[nmissing_rows++] = + tgts[t] - rm->rm_firstdatacol; + } + } + + /* + * Figure out which parity columns to use to help generate the missing + * data columns. + */ + for (tt = 0, c = 0, i = 0; i < nmissing_rows; c++) { + ASSERT(tt < ntgts); + ASSERT(c < rm->rm_firstdatacol); + + /* + * Skip any targeted parity columns. + */ + if (c == tgts[tt]) { + tt++; + continue; + } + + code |= 1 << c; + + parity_map[i] = c; + i++; + } + + ASSERT(code != 0); + ASSERT3U(code, <, 1 << VDEV_RAIDZ_MAXPARITY); + + psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) * + nmissing_rows * n + sizeof (used[0]) * n; + p = kmem_alloc(psize, KM_SLEEP); + + for (pp = p, i = 0; i < nmissing_rows; i++) { + rows[i] = pp; + pp += n; + invrows[i] = pp; + pp += n; + } + used = pp; + + for (i = 0; i < nmissing_rows; i++) { + used[i] = parity_map[i]; + } + + for (tt = 0, c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + if (tt < nmissing_rows && + c == missing_rows[tt] + rm->rm_firstdatacol) { + tt++; + continue; + } + + ASSERT3S(i, <, n); + used[i] = c; + i++; + } + + /* + * Initialize the interesting rows of the matrix. + */ + vdev_raidz_matrix_init(rm, n, nmissing_rows, parity_map, rows); + + /* + * Invert the matrix. + */ + vdev_raidz_matrix_invert(rm, n, nmissing_rows, missing_rows, rows, + invrows, used); + + /* + * Reconstruct the missing data using the generated matrix. + */ + vdev_raidz_matrix_reconstruct(rm, n, nmissing_rows, missing_rows, + invrows, used); + + kmem_free(p, psize); + + return (code); +} + +static int +vdev_raidz_reconstruct(raidz_map_t *rm, int *t, int nt) +{ + int tgts[VDEV_RAIDZ_MAXPARITY], *dt; + int ntgts; + int i, c; + int code; + int nbadparity, nbaddata; + int parity_valid[VDEV_RAIDZ_MAXPARITY]; + + /* + * The tgts list must already be sorted. + */ + for (i = 1; i < nt; i++) { + ASSERT(t[i] > t[i - 1]); + } + + nbadparity = rm->rm_firstdatacol; + nbaddata = rm->rm_cols - nbadparity; + ntgts = 0; + for (i = 0, c = 0; c < rm->rm_cols; c++) { + if (c < rm->rm_firstdatacol) + parity_valid[c] = B_FALSE; + + if (i < nt && c == t[i]) { + tgts[ntgts++] = c; + i++; + } else if (rm->rm_col[c].rc_error != 0) { + tgts[ntgts++] = c; + } else if (c >= rm->rm_firstdatacol) { + nbaddata--; + } else { + parity_valid[c] = B_TRUE; + nbadparity--; + } + } + + ASSERT(ntgts >= nt); + ASSERT(nbaddata >= 0); + ASSERT(nbaddata + nbadparity == ntgts); + + dt = &tgts[nbadparity]; + + /* + * See if we can use any of our optimized reconstruction routines. + */ + if (!vdev_raidz_default_to_general) { + switch (nbaddata) { + case 1: + if (parity_valid[VDEV_RAIDZ_P]) + return (vdev_raidz_reconstruct_p(rm, dt, 1)); + + ASSERT(rm->rm_firstdatacol > 1); + + if (parity_valid[VDEV_RAIDZ_Q]) + return (vdev_raidz_reconstruct_q(rm, dt, 1)); + + ASSERT(rm->rm_firstdatacol > 2); + break; + + case 2: + ASSERT(rm->rm_firstdatacol > 1); + + if (parity_valid[VDEV_RAIDZ_P] && + parity_valid[VDEV_RAIDZ_Q]) + return (vdev_raidz_reconstruct_pq(rm, dt, 2)); + + ASSERT(rm->rm_firstdatacol > 2); + + break; + } + } + + code = vdev_raidz_reconstruct_general(rm, tgts, ntgts); + ASSERT(code < (1 << VDEV_RAIDZ_MAXPARITY)); + ASSERT(code > 0); + return (code); +} + +static int +vdev_raidz_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize, + uint64_t *ashift) +{ + vdev_t *cvd; + uint64_t nparity = vd->vdev_nparity; + int c; + int lasterror = 0; + int numerrors = 0; + + ASSERT(nparity > 0); + + if (nparity > VDEV_RAIDZ_MAXPARITY || + vd->vdev_children < nparity + 1) { + vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; + return (SET_ERROR(EINVAL)); + } + + vdev_open_children(vd); + + for (c = 0; c < vd->vdev_children; c++) { + cvd = vd->vdev_child[c]; + + if (cvd->vdev_open_error != 0) { + lasterror = cvd->vdev_open_error; + numerrors++; + continue; + } + + *asize = MIN(*asize - 1, cvd->vdev_asize - 1) + 1; + *max_asize = MIN(*max_asize - 1, cvd->vdev_max_asize - 1) + 1; + *ashift = MAX(*ashift, cvd->vdev_ashift); + } + + *asize *= vd->vdev_children; + *max_asize *= vd->vdev_children; + + if (numerrors > nparity) { + vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS; + return (lasterror); + } + + return (0); +} + +static void +vdev_raidz_close(vdev_t *vd) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_close(vd->vdev_child[c]); +} + +static uint64_t +vdev_raidz_asize(vdev_t *vd, uint64_t psize) +{ + uint64_t asize; + uint64_t ashift = vd->vdev_top->vdev_ashift; + uint64_t cols = vd->vdev_children; + uint64_t nparity = vd->vdev_nparity; + + asize = ((psize - 1) >> ashift) + 1; + asize += nparity * ((asize + cols - nparity - 1) / (cols - nparity)); + asize = roundup(asize, nparity + 1) << ashift; + + return (asize); +} + +static void +vdev_raidz_child_done(zio_t *zio) +{ + raidz_col_t *rc = zio->io_private; + + rc->rc_error = zio->io_error; + rc->rc_tried = 1; + rc->rc_skipped = 0; +} + +/* + * Start an IO operation on a RAIDZ VDev + * + * Outline: + * - For write operations: + * 1. Generate the parity data + * 2. Create child zio write operations to each column's vdev, for both + * data and parity. + * 3. If the column skips any sectors for padding, create optional dummy + * write zio children for those areas to improve aggregation continuity. + * - For read operations: + * 1. Create child zio read operations to each data column's vdev to read + * the range of data required for zio. + * 2. If this is a scrub or resilver operation, or if any of the data + * vdevs have had errors, then create zio read operations to the parity + * columns' VDevs as well. + */ +static void +vdev_raidz_io_start(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + vdev_t *tvd = vd->vdev_top; + vdev_t *cvd; + raidz_map_t *rm; + raidz_col_t *rc; + int c, i; + + rm = vdev_raidz_map_alloc(zio, tvd->vdev_ashift, vd->vdev_children, + vd->vdev_nparity); + + ASSERT3U(rm->rm_asize, ==, vdev_psize_to_asize(vd, zio->io_size)); + + if (zio->io_type == ZIO_TYPE_WRITE) { + vdev_raidz_generate_parity(rm); + + for (c = 0; c < rm->rm_cols; c++) { + rc = &rm->rm_col[c]; + cvd = vd->vdev_child[rc->rc_devidx]; + zio_nowait(zio_vdev_child_io(zio, NULL, cvd, + rc->rc_offset, rc->rc_data, rc->rc_size, + zio->io_type, zio->io_priority, 0, + vdev_raidz_child_done, rc)); + } + + /* + * Generate optional I/Os for any skipped sectors to improve + * aggregation contiguity. + */ + for (c = rm->rm_skipstart, i = 0; i < rm->rm_nskip; c++, i++) { + ASSERT(c <= rm->rm_scols); + if (c == rm->rm_scols) + c = 0; + rc = &rm->rm_col[c]; + cvd = vd->vdev_child[rc->rc_devidx]; + zio_nowait(zio_vdev_child_io(zio, NULL, cvd, + rc->rc_offset + rc->rc_size, NULL, + 1 << tvd->vdev_ashift, + zio->io_type, zio->io_priority, + ZIO_FLAG_NODATA | ZIO_FLAG_OPTIONAL, NULL, NULL)); + } + + zio_execute(zio); + return; + } + + ASSERT(zio->io_type == ZIO_TYPE_READ); + + /* + * Iterate over the columns in reverse order so that we hit the parity + * last -- any errors along the way will force us to read the parity. + */ + for (c = rm->rm_cols - 1; c >= 0; c--) { + rc = &rm->rm_col[c]; + cvd = vd->vdev_child[rc->rc_devidx]; + if (!vdev_readable(cvd)) { + if (c >= rm->rm_firstdatacol) + rm->rm_missingdata++; + else + rm->rm_missingparity++; + rc->rc_error = SET_ERROR(ENXIO); + rc->rc_tried = 1; /* don't even try */ + rc->rc_skipped = 1; + continue; + } + if (vdev_dtl_contains(cvd, DTL_MISSING, zio->io_txg, 1)) { + if (c >= rm->rm_firstdatacol) + rm->rm_missingdata++; + else + rm->rm_missingparity++; + rc->rc_error = SET_ERROR(ESTALE); + rc->rc_skipped = 1; + continue; + } + if (c >= rm->rm_firstdatacol || rm->rm_missingdata > 0 || + (zio->io_flags & (ZIO_FLAG_SCRUB | ZIO_FLAG_RESILVER))) { + zio_nowait(zio_vdev_child_io(zio, NULL, cvd, + rc->rc_offset, rc->rc_data, rc->rc_size, + zio->io_type, zio->io_priority, 0, + vdev_raidz_child_done, rc)); + } + } + + zio_execute(zio); +} + + +/* + * Report a checksum error for a child of a RAID-Z device. + */ +static void +raidz_checksum_error(zio_t *zio, raidz_col_t *rc, void *bad_data) +{ + vdev_t *vd = zio->io_vd->vdev_child[rc->rc_devidx]; + + if (!(zio->io_flags & ZIO_FLAG_SPECULATIVE)) { + zio_bad_cksum_t zbc; + raidz_map_t *rm = zio->io_vsd; + + mutex_enter(&vd->vdev_stat_lock); + vd->vdev_stat.vs_checksum_errors++; + mutex_exit(&vd->vdev_stat_lock); + + zbc.zbc_has_cksum = 0; + zbc.zbc_injected = rm->rm_ecksuminjected; + + zfs_ereport_post_checksum(zio->io_spa, vd, zio, + rc->rc_offset, rc->rc_size, rc->rc_data, bad_data, + &zbc); + } +} + +/* + * We keep track of whether or not there were any injected errors, so that + * any ereports we generate can note it. + */ +static int +raidz_checksum_verify(zio_t *zio) +{ + zio_bad_cksum_t zbc; + raidz_map_t *rm = zio->io_vsd; + int ret; + + bzero(&zbc, sizeof (zio_bad_cksum_t)); + + ret = zio_checksum_error(zio, &zbc); + if (ret != 0 && zbc.zbc_injected != 0) + rm->rm_ecksuminjected = 1; + + return (ret); +} + +/* + * Generate the parity from the data columns. If we tried and were able to + * read the parity without error, verify that the generated parity matches the + * data we read. If it doesn't, we fire off a checksum error. Return the + * number such failures. + */ +static int +raidz_parity_verify(zio_t *zio, raidz_map_t *rm) +{ + void *orig[VDEV_RAIDZ_MAXPARITY]; + int c, ret = 0; + raidz_col_t *rc; + + for (c = 0; c < rm->rm_firstdatacol; c++) { + rc = &rm->rm_col[c]; + if (!rc->rc_tried || rc->rc_error != 0) + continue; + orig[c] = zio_buf_alloc(rc->rc_size); + bcopy(rc->rc_data, orig[c], rc->rc_size); + } + + vdev_raidz_generate_parity(rm); + + for (c = 0; c < rm->rm_firstdatacol; c++) { + rc = &rm->rm_col[c]; + if (!rc->rc_tried || rc->rc_error != 0) + continue; + if (bcmp(orig[c], rc->rc_data, rc->rc_size) != 0) { + raidz_checksum_error(zio, rc, orig[c]); + rc->rc_error = SET_ERROR(ECKSUM); + ret++; + } + zio_buf_free(orig[c], rc->rc_size); + } + + return (ret); +} + +/* + * Keep statistics on all the ways that we used parity to correct data. + */ +static uint64_t raidz_corrected[1 << VDEV_RAIDZ_MAXPARITY]; + +static int +vdev_raidz_worst_error(raidz_map_t *rm) +{ + int c, error = 0; + + for (c = 0; c < rm->rm_cols; c++) + error = zio_worst_error(error, rm->rm_col[c].rc_error); + + return (error); +} + +/* + * Iterate over all combinations of bad data and attempt a reconstruction. + * Note that the algorithm below is non-optimal because it doesn't take into + * account how reconstruction is actually performed. For example, with + * triple-parity RAID-Z the reconstruction procedure is the same if column 4 + * is targeted as invalid as if columns 1 and 4 are targeted since in both + * cases we'd only use parity information in column 0. + */ +static int +vdev_raidz_combrec(zio_t *zio, int total_errors, int data_errors) +{ + raidz_map_t *rm = zio->io_vsd; + raidz_col_t *rc; + void *orig[VDEV_RAIDZ_MAXPARITY]; + int tstore[VDEV_RAIDZ_MAXPARITY + 2]; + int *tgts = &tstore[1]; + int curr, next, i, c, n; + int code, ret = 0; + + ASSERT(total_errors < rm->rm_firstdatacol); + + /* + * This simplifies one edge condition. + */ + tgts[-1] = -1; + + for (n = 1; n <= rm->rm_firstdatacol - total_errors; n++) { + /* + * Initialize the targets array by finding the first n columns + * that contain no error. + * + * If there were no data errors, we need to ensure that we're + * always explicitly attempting to reconstruct at least one + * data column. To do this, we simply push the highest target + * up into the data columns. + */ + for (c = 0, i = 0; i < n; i++) { + if (i == n - 1 && data_errors == 0 && + c < rm->rm_firstdatacol) { + c = rm->rm_firstdatacol; + } + + while (rm->rm_col[c].rc_error != 0) { + c++; + ASSERT3S(c, <, rm->rm_cols); + } + + tgts[i] = c++; + } + + /* + * Setting tgts[n] simplifies the other edge condition. + */ + tgts[n] = rm->rm_cols; + + /* + * These buffers were allocated in previous iterations. + */ + for (i = 0; i < n - 1; i++) { + ASSERT(orig[i] != NULL); + } + + orig[n - 1] = zio_buf_alloc(rm->rm_col[0].rc_size); + + curr = 0; + next = tgts[curr]; + + while (curr != n) { + tgts[curr] = next; + curr = 0; + + /* + * Save off the original data that we're going to + * attempt to reconstruct. + */ + for (i = 0; i < n; i++) { + ASSERT(orig[i] != NULL); + c = tgts[i]; + ASSERT3S(c, >=, 0); + ASSERT3S(c, <, rm->rm_cols); + rc = &rm->rm_col[c]; + bcopy(rc->rc_data, orig[i], rc->rc_size); + } + + /* + * Attempt a reconstruction and exit the outer loop on + * success. + */ + code = vdev_raidz_reconstruct(rm, tgts, n); + if (raidz_checksum_verify(zio) == 0) { + atomic_inc_64(&raidz_corrected[code]); + + for (i = 0; i < n; i++) { + c = tgts[i]; + rc = &rm->rm_col[c]; + ASSERT(rc->rc_error == 0); + if (rc->rc_tried) + raidz_checksum_error(zio, rc, + orig[i]); + rc->rc_error = SET_ERROR(ECKSUM); + } + + ret = code; + goto done; + } + + /* + * Restore the original data. + */ + for (i = 0; i < n; i++) { + c = tgts[i]; + rc = &rm->rm_col[c]; + bcopy(orig[i], rc->rc_data, rc->rc_size); + } + + do { + /* + * Find the next valid column after the curr + * position.. + */ + for (next = tgts[curr] + 1; + next < rm->rm_cols && + rm->rm_col[next].rc_error != 0; next++) + continue; + + ASSERT(next <= tgts[curr + 1]); + + /* + * If that spot is available, we're done here. + */ + if (next != tgts[curr + 1]) + break; + + /* + * Otherwise, find the next valid column after + * the previous position. + */ + for (c = tgts[curr - 1] + 1; + rm->rm_col[c].rc_error != 0; c++) + continue; + + tgts[curr] = c; + curr++; + + } while (curr != n); + } + } + n--; +done: + for (i = 0; i < n; i++) { + zio_buf_free(orig[i], rm->rm_col[0].rc_size); + } + + return (ret); +} + +/* + * Complete an IO operation on a RAIDZ VDev + * + * Outline: + * - For write operations: + * 1. Check for errors on the child IOs. + * 2. Return, setting an error code if too few child VDevs were written + * to reconstruct the data later. Note that partial writes are + * considered successful if they can be reconstructed at all. + * - For read operations: + * 1. Check for errors on the child IOs. + * 2. If data errors occurred: + * a. Try to reassemble the data from the parity available. + * b. If we haven't yet read the parity drives, read them now. + * c. If all parity drives have been read but the data still doesn't + * reassemble with a correct checksum, then try combinatorial + * reconstruction. + * d. If that doesn't work, return an error. + * 3. If there were unexpected errors or this is a resilver operation, + * rewrite the vdevs that had errors. + */ +static void +vdev_raidz_io_done(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + vdev_t *cvd; + raidz_map_t *rm = zio->io_vsd; + raidz_col_t *rc = NULL; + int unexpected_errors = 0; + int parity_errors = 0; + int parity_untried = 0; + int data_errors = 0; + int total_errors = 0; + int n, c; + int tgts[VDEV_RAIDZ_MAXPARITY]; + int code; + + ASSERT(zio->io_bp != NULL); /* XXX need to add code to enforce this */ + + ASSERT(rm->rm_missingparity <= rm->rm_firstdatacol); + ASSERT(rm->rm_missingdata <= rm->rm_cols - rm->rm_firstdatacol); + + for (c = 0; c < rm->rm_cols; c++) { + rc = &rm->rm_col[c]; + + if (rc->rc_error) { + ASSERT(rc->rc_error != ECKSUM); /* child has no bp */ + + if (c < rm->rm_firstdatacol) + parity_errors++; + else + data_errors++; + + if (!rc->rc_skipped) + unexpected_errors++; + + total_errors++; + } else if (c < rm->rm_firstdatacol && !rc->rc_tried) { + parity_untried++; + } + } + + if (zio->io_type == ZIO_TYPE_WRITE) { + /* + * XXX -- for now, treat partial writes as a success. + * (If we couldn't write enough columns to reconstruct + * the data, the I/O failed. Otherwise, good enough.) + * + * Now that we support write reallocation, it would be better + * to treat partial failure as real failure unless there are + * no non-degraded top-level vdevs left, and not update DTLs + * if we intend to reallocate. + */ + /* XXPOLICY */ + if (total_errors > rm->rm_firstdatacol) + zio->io_error = vdev_raidz_worst_error(rm); + + return; + } + + ASSERT(zio->io_type == ZIO_TYPE_READ); + /* + * There are three potential phases for a read: + * 1. produce valid data from the columns read + * 2. read all disks and try again + * 3. perform combinatorial reconstruction + * + * Each phase is progressively both more expensive and less likely to + * occur. If we encounter more errors than we can repair or all phases + * fail, we have no choice but to return an error. + */ + + /* + * If the number of errors we saw was correctable -- less than or equal + * to the number of parity disks read -- attempt to produce data that + * has a valid checksum. Naturally, this case applies in the absence of + * any errors. + */ + if (total_errors <= rm->rm_firstdatacol - parity_untried) { + if (data_errors == 0) { + if (raidz_checksum_verify(zio) == 0) { + /* + * If we read parity information (unnecessarily + * as it happens since no reconstruction was + * needed) regenerate and verify the parity. + * We also regenerate parity when resilvering + * so we can write it out to the failed device + * later. + */ + if (parity_errors + parity_untried < + rm->rm_firstdatacol || + (zio->io_flags & ZIO_FLAG_RESILVER)) { + n = raidz_parity_verify(zio, rm); + unexpected_errors += n; + ASSERT(parity_errors + n <= + rm->rm_firstdatacol); + } + goto done; + } + } else { + /* + * We either attempt to read all the parity columns or + * none of them. If we didn't try to read parity, we + * wouldn't be here in the correctable case. There must + * also have been fewer parity errors than parity + * columns or, again, we wouldn't be in this code path. + */ + ASSERT(parity_untried == 0); + ASSERT(parity_errors < rm->rm_firstdatacol); + + /* + * Identify the data columns that reported an error. + */ + n = 0; + for (c = rm->rm_firstdatacol; c < rm->rm_cols; c++) { + rc = &rm->rm_col[c]; + if (rc->rc_error != 0) { + ASSERT(n < VDEV_RAIDZ_MAXPARITY); + tgts[n++] = c; + } + } + + ASSERT(rm->rm_firstdatacol >= n); + + code = vdev_raidz_reconstruct(rm, tgts, n); + + if (raidz_checksum_verify(zio) == 0) { + atomic_inc_64(&raidz_corrected[code]); + + /* + * If we read more parity disks than were used + * for reconstruction, confirm that the other + * parity disks produced correct data. This + * routine is suboptimal in that it regenerates + * the parity that we already used in addition + * to the parity that we're attempting to + * verify, but this should be a relatively + * uncommon case, and can be optimized if it + * becomes a problem. Note that we regenerate + * parity when resilvering so we can write it + * out to failed devices later. + */ + if (parity_errors < rm->rm_firstdatacol - n || + (zio->io_flags & ZIO_FLAG_RESILVER)) { + n = raidz_parity_verify(zio, rm); + unexpected_errors += n; + ASSERT(parity_errors + n <= + rm->rm_firstdatacol); + } + + goto done; + } + } + } + + /* + * This isn't a typical situation -- either we got a read error or + * a child silently returned bad data. Read every block so we can + * try again with as much data and parity as we can track down. If + * we've already been through once before, all children will be marked + * as tried so we'll proceed to combinatorial reconstruction. + */ + unexpected_errors = 1; + rm->rm_missingdata = 0; + rm->rm_missingparity = 0; + + for (c = 0; c < rm->rm_cols; c++) { + if (rm->rm_col[c].rc_tried) + continue; + + zio_vdev_io_redone(zio); + do { + rc = &rm->rm_col[c]; + if (rc->rc_tried) + continue; + zio_nowait(zio_vdev_child_io(zio, NULL, + vd->vdev_child[rc->rc_devidx], + rc->rc_offset, rc->rc_data, rc->rc_size, + zio->io_type, zio->io_priority, 0, + vdev_raidz_child_done, rc)); + } while (++c < rm->rm_cols); + + return; + } + + /* + * At this point we've attempted to reconstruct the data given the + * errors we detected, and we've attempted to read all columns. There + * must, therefore, be one or more additional problems -- silent errors + * resulting in invalid data rather than explicit I/O errors resulting + * in absent data. We check if there is enough additional data to + * possibly reconstruct the data and then perform combinatorial + * reconstruction over all possible combinations. If that fails, + * we're cooked. + */ + if (total_errors > rm->rm_firstdatacol) { + zio->io_error = vdev_raidz_worst_error(rm); + + } else if (total_errors < rm->rm_firstdatacol && + (code = vdev_raidz_combrec(zio, total_errors, data_errors)) != 0) { + /* + * If we didn't use all the available parity for the + * combinatorial reconstruction, verify that the remaining + * parity is correct. + */ + if (code != (1 << rm->rm_firstdatacol) - 1) + (void) raidz_parity_verify(zio, rm); + } else { + /* + * We're here because either: + * + * total_errors == rm_first_datacol, or + * vdev_raidz_combrec() failed + * + * In either case, there is enough bad data to prevent + * reconstruction. + * + * Start checksum ereports for all children which haven't + * failed, and the IO wasn't speculative. + */ + zio->io_error = SET_ERROR(ECKSUM); + + if (!(zio->io_flags & ZIO_FLAG_SPECULATIVE)) { + for (c = 0; c < rm->rm_cols; c++) { + rc = &rm->rm_col[c]; + if (rc->rc_error == 0) { + zio_bad_cksum_t zbc; + zbc.zbc_has_cksum = 0; + zbc.zbc_injected = + rm->rm_ecksuminjected; + + zfs_ereport_start_checksum( + zio->io_spa, + vd->vdev_child[rc->rc_devidx], + zio, rc->rc_offset, rc->rc_size, + (void *)(uintptr_t)c, &zbc); + } + } + } + } + +done: + zio_checksum_verified(zio); + + if (zio->io_error == 0 && spa_writeable(zio->io_spa) && + (unexpected_errors || (zio->io_flags & ZIO_FLAG_RESILVER))) { + /* + * Use the good data we have in hand to repair damaged children. + */ + for (c = 0; c < rm->rm_cols; c++) { + rc = &rm->rm_col[c]; + cvd = vd->vdev_child[rc->rc_devidx]; + + if (rc->rc_error == 0) + continue; + + zio_nowait(zio_vdev_child_io(zio, NULL, cvd, + rc->rc_offset, rc->rc_data, rc->rc_size, + ZIO_TYPE_WRITE, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_IO_REPAIR | (unexpected_errors ? + ZIO_FLAG_SELF_HEAL : 0), NULL, NULL)); + } + } +} + +static void +vdev_raidz_state_change(vdev_t *vd, int faulted, int degraded) +{ + if (faulted > vd->vdev_nparity) + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_NO_REPLICAS); + else if (degraded + faulted != 0) + vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE); + else + vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE); +} + +vdev_ops_t vdev_raidz_ops = { + vdev_raidz_open, + vdev_raidz_close, + vdev_raidz_asize, + vdev_raidz_io_start, + vdev_raidz_io_done, + vdev_raidz_state_change, + NULL, + NULL, + VDEV_TYPE_RAIDZ, /* name of this vdev type */ + B_FALSE /* not a leaf vdev */ +}; --- linux-4.4.0.orig/zfs/module/zfs/vdev_root.c +++ linux-4.4.0/zfs/module/zfs/vdev_root.c @@ -0,0 +1,125 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include + +/* + * Virtual device vector for the pool's root vdev. + */ + +/* + * We should be able to tolerate one failure with absolutely no damage + * to our metadata. Two failures will take out space maps, a bunch of + * indirect block trees, meta dnodes, dnodes, etc. Probably not a happy + * place to live. When we get smarter, we can liberalize this policy. + * e.g. If we haven't lost two consecutive top-level vdevs, then we are + * probably fine. Adding bean counters during alloc/free can make this + * future guesswork more accurate. + */ +static int +too_many_errors(vdev_t *vd, int numerrors) +{ + ASSERT3U(numerrors, <=, vd->vdev_children); + return (numerrors > 0); +} + +static int +vdev_root_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize, + uint64_t *ashift) +{ + int lasterror = 0; + int numerrors = 0; + int c; + + if (vd->vdev_children == 0) { + vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; + return (SET_ERROR(EINVAL)); + } + + vdev_open_children(vd); + + for (c = 0; c < vd->vdev_children; c++) { + vdev_t *cvd = vd->vdev_child[c]; + + if (cvd->vdev_open_error && !cvd->vdev_islog) { + lasterror = cvd->vdev_open_error; + numerrors++; + } + } + + if (too_many_errors(vd, numerrors)) { + vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS; + return (lasterror); + } + + *asize = 0; + *max_asize = 0; + *ashift = 0; + + return (0); +} + +static void +vdev_root_close(vdev_t *vd) +{ + int c; + + for (c = 0; c < vd->vdev_children; c++) + vdev_close(vd->vdev_child[c]); +} + +static void +vdev_root_state_change(vdev_t *vd, int faulted, int degraded) +{ + if (too_many_errors(vd, faulted)) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, + VDEV_AUX_NO_REPLICAS); + } else if (degraded) { + vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE); + } else { + vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE); + } +} + +vdev_ops_t vdev_root_ops = { + vdev_root_open, + vdev_root_close, + vdev_default_asize, + NULL, /* io_start - not applicable to the root */ + NULL, /* io_done - not applicable to the root */ + vdev_root_state_change, + NULL, + NULL, + VDEV_TYPE_ROOT, /* name of this vdev type */ + B_FALSE /* not a leaf vdev */ +}; --- linux-4.4.0.orig/zfs/module/zfs/zap.c +++ linux-4.4.0/zfs/module/zfs/zap.c @@ -0,0 +1,1372 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +/* + * This file contains the top half of the zfs directory structure + * implementation. The bottom half is in zap_leaf.c. + * + * The zdir is an extendable hash data structure. There is a table of + * pointers to buckets (zap_t->zd_data->zd_leafs). The buckets are + * each a constant size and hold a variable number of directory entries. + * The buckets (aka "leaf nodes") are implemented in zap_leaf.c. + * + * The pointer table holds a power of 2 number of pointers. + * (1<zd_data->zd_phys->zd_prefix_len). The bucket pointed to + * by the pointer at index i in the table holds entries whose hash value + * has a zd_prefix_len - bit prefix + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int fzap_default_block_shift = 14; /* 16k blocksize */ + +extern inline zap_phys_t *zap_f_phys(zap_t *zap); + +static uint64_t zap_allocate_blocks(zap_t *zap, int nblocks); + +void +fzap_byteswap(void *vbuf, size_t size) +{ + uint64_t block_type; + + block_type = *(uint64_t *)vbuf; + + if (block_type == ZBT_LEAF || block_type == BSWAP_64(ZBT_LEAF)) + zap_leaf_byteswap(vbuf, size); + else { + /* it's a ptrtbl block */ + byteswap_uint64_array(vbuf, size); + } +} + +void +fzap_upgrade(zap_t *zap, dmu_tx_t *tx, zap_flags_t flags) +{ + dmu_buf_t *db; + zap_leaf_t *l; + int i; + zap_phys_t *zp; + + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + zap->zap_ismicro = FALSE; + + zap->zap_dbu.dbu_evict_func = zap_evict; + + mutex_init(&zap->zap_f.zap_num_entries_mtx, 0, 0, 0); + zap->zap_f.zap_block_shift = highbit64(zap->zap_dbuf->db_size) - 1; + + zp = zap_f_phys(zap); + /* + * explicitly zero it since it might be coming from an + * initialized microzap + */ + bzero(zap->zap_dbuf->db_data, zap->zap_dbuf->db_size); + zp->zap_block_type = ZBT_HEADER; + zp->zap_magic = ZAP_MAGIC; + + zp->zap_ptrtbl.zt_shift = ZAP_EMBEDDED_PTRTBL_SHIFT(zap); + + zp->zap_freeblk = 2; /* block 1 will be the first leaf */ + zp->zap_num_leafs = 1; + zp->zap_num_entries = 0; + zp->zap_salt = zap->zap_salt; + zp->zap_normflags = zap->zap_normflags; + zp->zap_flags = flags; + + /* block 1 will be the first leaf */ + for (i = 0; i < (1<zap_ptrtbl.zt_shift); i++) + ZAP_EMBEDDED_PTRTBL_ENT(zap, i) = 1; + + /* + * set up block 1 - the first leaf + */ + VERIFY(0 == dmu_buf_hold(zap->zap_objset, zap->zap_object, + 1<l_dbuf = db; + + zap_leaf_init(l, zp->zap_normflags != 0); + + kmem_free(l, sizeof (zap_leaf_t)); + dmu_buf_rele(db, FTAG); +} + +static int +zap_tryupgradedir(zap_t *zap, dmu_tx_t *tx) +{ + if (RW_WRITE_HELD(&zap->zap_rwlock)) + return (1); + if (rw_tryupgrade(&zap->zap_rwlock)) { + dmu_buf_will_dirty(zap->zap_dbuf, tx); + return (1); + } + return (0); +} + +/* + * Generic routines for dealing with the pointer & cookie tables. + */ + +static int +zap_table_grow(zap_t *zap, zap_table_phys_t *tbl, + void (*transfer_func)(const uint64_t *src, uint64_t *dst, int n), + dmu_tx_t *tx) +{ + uint64_t b, newblk; + dmu_buf_t *db_old, *db_new; + int err; + int bs = FZAP_BLOCK_SHIFT(zap); + int hepb = 1<<(bs-4); + /* hepb = half the number of entries in a block */ + + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + ASSERT(tbl->zt_blk != 0); + ASSERT(tbl->zt_numblks > 0); + + if (tbl->zt_nextblk != 0) { + newblk = tbl->zt_nextblk; + } else { + newblk = zap_allocate_blocks(zap, tbl->zt_numblks * 2); + tbl->zt_nextblk = newblk; + ASSERT0(tbl->zt_blks_copied); + dmu_prefetch(zap->zap_objset, zap->zap_object, + tbl->zt_blk << bs, tbl->zt_numblks << bs); + } + + /* + * Copy the ptrtbl from the old to new location. + */ + + b = tbl->zt_blks_copied; + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (tbl->zt_blk + b) << bs, FTAG, &db_old, DMU_READ_NO_PREFETCH); + if (err) + return (err); + + /* first half of entries in old[b] go to new[2*b+0] */ + VERIFY(0 == dmu_buf_hold(zap->zap_objset, zap->zap_object, + (newblk + 2*b+0) << bs, FTAG, &db_new, DMU_READ_NO_PREFETCH)); + dmu_buf_will_dirty(db_new, tx); + transfer_func(db_old->db_data, db_new->db_data, hepb); + dmu_buf_rele(db_new, FTAG); + + /* second half of entries in old[b] go to new[2*b+1] */ + VERIFY(0 == dmu_buf_hold(zap->zap_objset, zap->zap_object, + (newblk + 2*b+1) << bs, FTAG, &db_new, DMU_READ_NO_PREFETCH)); + dmu_buf_will_dirty(db_new, tx); + transfer_func((uint64_t *)db_old->db_data + hepb, + db_new->db_data, hepb); + dmu_buf_rele(db_new, FTAG); + + dmu_buf_rele(db_old, FTAG); + + tbl->zt_blks_copied++; + + dprintf("copied block %llu of %llu\n", + tbl->zt_blks_copied, tbl->zt_numblks); + + if (tbl->zt_blks_copied == tbl->zt_numblks) { + (void) dmu_free_range(zap->zap_objset, zap->zap_object, + tbl->zt_blk << bs, tbl->zt_numblks << bs, tx); + + tbl->zt_blk = newblk; + tbl->zt_numblks *= 2; + tbl->zt_shift++; + tbl->zt_nextblk = 0; + tbl->zt_blks_copied = 0; + + dprintf("finished; numblocks now %llu (%uk entries)\n", + tbl->zt_numblks, 1<<(tbl->zt_shift-10)); + } + + return (0); +} + +static int +zap_table_store(zap_t *zap, zap_table_phys_t *tbl, uint64_t idx, uint64_t val, + dmu_tx_t *tx) +{ + int err; + uint64_t blk, off; + int bs = FZAP_BLOCK_SHIFT(zap); + dmu_buf_t *db; + + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + ASSERT(tbl->zt_blk != 0); + + dprintf("storing %llx at index %llx\n", val, idx); + + blk = idx >> (bs-3); + off = idx & ((1<<(bs-3))-1); + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (tbl->zt_blk + blk) << bs, FTAG, &db, DMU_READ_NO_PREFETCH); + if (err) + return (err); + dmu_buf_will_dirty(db, tx); + + if (tbl->zt_nextblk != 0) { + uint64_t idx2 = idx * 2; + uint64_t blk2 = idx2 >> (bs-3); + uint64_t off2 = idx2 & ((1<<(bs-3))-1); + dmu_buf_t *db2; + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (tbl->zt_nextblk + blk2) << bs, FTAG, &db2, + DMU_READ_NO_PREFETCH); + if (err) { + dmu_buf_rele(db, FTAG); + return (err); + } + dmu_buf_will_dirty(db2, tx); + ((uint64_t *)db2->db_data)[off2] = val; + ((uint64_t *)db2->db_data)[off2+1] = val; + dmu_buf_rele(db2, FTAG); + } + + ((uint64_t *)db->db_data)[off] = val; + dmu_buf_rele(db, FTAG); + + return (0); +} + +static int +zap_table_load(zap_t *zap, zap_table_phys_t *tbl, uint64_t idx, uint64_t *valp) +{ + uint64_t blk, off; + int err; + dmu_buf_t *db; + int bs = FZAP_BLOCK_SHIFT(zap); + + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + + blk = idx >> (bs-3); + off = idx & ((1<<(bs-3))-1); + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (tbl->zt_blk + blk) << bs, FTAG, &db, DMU_READ_NO_PREFETCH); + if (err) + return (err); + *valp = ((uint64_t *)db->db_data)[off]; + dmu_buf_rele(db, FTAG); + + if (tbl->zt_nextblk != 0) { + /* + * read the nextblk for the sake of i/o error checking, + * so that zap_table_load() will catch errors for + * zap_table_store. + */ + blk = (idx*2) >> (bs-3); + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (tbl->zt_nextblk + blk) << bs, FTAG, &db, + DMU_READ_NO_PREFETCH); + if (err == 0) + dmu_buf_rele(db, FTAG); + } + return (err); +} + +/* + * Routines for growing the ptrtbl. + */ + +static void +zap_ptrtbl_transfer(const uint64_t *src, uint64_t *dst, int n) +{ + int i; + for (i = 0; i < n; i++) { + uint64_t lb = src[i]; + dst[2*i+0] = lb; + dst[2*i+1] = lb; + } +} + +static int +zap_grow_ptrtbl(zap_t *zap, dmu_tx_t *tx) +{ + /* + * The pointer table should never use more hash bits than we + * have (otherwise we'd be using useless zero bits to index it). + * If we are within 2 bits of running out, stop growing, since + * this is already an aberrant condition. + */ + if (zap_f_phys(zap)->zap_ptrtbl.zt_shift >= zap_hashbits(zap) - 2) + return (SET_ERROR(ENOSPC)); + + if (zap_f_phys(zap)->zap_ptrtbl.zt_numblks == 0) { + /* + * We are outgrowing the "embedded" ptrtbl (the one + * stored in the header block). Give it its own entire + * block, which will double the size of the ptrtbl. + */ + uint64_t newblk; + dmu_buf_t *db_new; + int err; + + ASSERT3U(zap_f_phys(zap)->zap_ptrtbl.zt_shift, ==, + ZAP_EMBEDDED_PTRTBL_SHIFT(zap)); + ASSERT0(zap_f_phys(zap)->zap_ptrtbl.zt_blk); + + newblk = zap_allocate_blocks(zap, 1); + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + newblk << FZAP_BLOCK_SHIFT(zap), FTAG, &db_new, + DMU_READ_NO_PREFETCH); + if (err) + return (err); + dmu_buf_will_dirty(db_new, tx); + zap_ptrtbl_transfer(&ZAP_EMBEDDED_PTRTBL_ENT(zap, 0), + db_new->db_data, 1 << ZAP_EMBEDDED_PTRTBL_SHIFT(zap)); + dmu_buf_rele(db_new, FTAG); + + zap_f_phys(zap)->zap_ptrtbl.zt_blk = newblk; + zap_f_phys(zap)->zap_ptrtbl.zt_numblks = 1; + zap_f_phys(zap)->zap_ptrtbl.zt_shift++; + + ASSERT3U(1ULL << zap_f_phys(zap)->zap_ptrtbl.zt_shift, ==, + zap_f_phys(zap)->zap_ptrtbl.zt_numblks << + (FZAP_BLOCK_SHIFT(zap)-3)); + + return (0); + } else { + return (zap_table_grow(zap, &zap_f_phys(zap)->zap_ptrtbl, + zap_ptrtbl_transfer, tx)); + } +} + +static void +zap_increment_num_entries(zap_t *zap, int delta, dmu_tx_t *tx) +{ + dmu_buf_will_dirty(zap->zap_dbuf, tx); + mutex_enter(&zap->zap_f.zap_num_entries_mtx); + ASSERT(delta > 0 || zap_f_phys(zap)->zap_num_entries >= -delta); + zap_f_phys(zap)->zap_num_entries += delta; + mutex_exit(&zap->zap_f.zap_num_entries_mtx); +} + +static uint64_t +zap_allocate_blocks(zap_t *zap, int nblocks) +{ + uint64_t newblk; + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + newblk = zap_f_phys(zap)->zap_freeblk; + zap_f_phys(zap)->zap_freeblk += nblocks; + return (newblk); +} + +static void +zap_leaf_pageout(void *dbu) +{ + zap_leaf_t *l = dbu; + + rw_destroy(&l->l_rwlock); + kmem_free(l, sizeof (zap_leaf_t)); +} + +static zap_leaf_t * +zap_create_leaf(zap_t *zap, dmu_tx_t *tx) +{ + void *winner; + zap_leaf_t *l = kmem_zalloc(sizeof (zap_leaf_t), KM_SLEEP); + + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + + rw_init(&l->l_rwlock, NULL, RW_DEFAULT, NULL); + rw_enter(&l->l_rwlock, RW_WRITER); + l->l_blkid = zap_allocate_blocks(zap, 1); + l->l_dbuf = NULL; + + VERIFY(0 == dmu_buf_hold(zap->zap_objset, zap->zap_object, + l->l_blkid << FZAP_BLOCK_SHIFT(zap), NULL, &l->l_dbuf, + DMU_READ_NO_PREFETCH)); + dmu_buf_init_user(&l->l_dbu, zap_leaf_pageout, &l->l_dbuf); + winner = dmu_buf_set_user(l->l_dbuf, &l->l_dbu); + ASSERT(winner == NULL); + dmu_buf_will_dirty(l->l_dbuf, tx); + + zap_leaf_init(l, zap->zap_normflags != 0); + + zap_f_phys(zap)->zap_num_leafs++; + + return (l); +} + +int +fzap_count(zap_t *zap, uint64_t *count) +{ + ASSERT(!zap->zap_ismicro); + mutex_enter(&zap->zap_f.zap_num_entries_mtx); /* unnecessary */ + *count = zap_f_phys(zap)->zap_num_entries; + mutex_exit(&zap->zap_f.zap_num_entries_mtx); + return (0); +} + +/* + * Routines for obtaining zap_leaf_t's + */ + +void +zap_put_leaf(zap_leaf_t *l) +{ + rw_exit(&l->l_rwlock); + dmu_buf_rele(l->l_dbuf, NULL); +} + +static zap_leaf_t * +zap_open_leaf(uint64_t blkid, dmu_buf_t *db) +{ + zap_leaf_t *l, *winner; + + ASSERT(blkid != 0); + + l = kmem_zalloc(sizeof (zap_leaf_t), KM_SLEEP); + rw_init(&l->l_rwlock, NULL, RW_DEFAULT, NULL); + rw_enter(&l->l_rwlock, RW_WRITER); + l->l_blkid = blkid; + l->l_bs = highbit64(db->db_size) - 1; + l->l_dbuf = db; + + dmu_buf_init_user(&l->l_dbu, zap_leaf_pageout, &l->l_dbuf); + winner = dmu_buf_set_user(db, &l->l_dbu); + + rw_exit(&l->l_rwlock); + if (winner != NULL) { + /* someone else set it first */ + zap_leaf_pageout(&l->l_dbu); + l = winner; + } + + /* + * lhr_pad was previously used for the next leaf in the leaf + * chain. There should be no chained leafs (as we have removed + * support for them). + */ + ASSERT0(zap_leaf_phys(l)->l_hdr.lh_pad1); + + /* + * There should be more hash entries than there can be + * chunks to put in the hash table + */ + ASSERT3U(ZAP_LEAF_HASH_NUMENTRIES(l), >, ZAP_LEAF_NUMCHUNKS(l) / 3); + + /* The chunks should begin at the end of the hash table */ + ASSERT3P(&ZAP_LEAF_CHUNK(l, 0), ==, (zap_leaf_chunk_t *) + &zap_leaf_phys(l)->l_hash[ZAP_LEAF_HASH_NUMENTRIES(l)]); + + /* The chunks should end at the end of the block */ + ASSERT3U((uintptr_t)&ZAP_LEAF_CHUNK(l, ZAP_LEAF_NUMCHUNKS(l)) - + (uintptr_t)zap_leaf_phys(l), ==, l->l_dbuf->db_size); + + return (l); +} + +static int +zap_get_leaf_byblk(zap_t *zap, uint64_t blkid, dmu_tx_t *tx, krw_t lt, + zap_leaf_t **lp) +{ + dmu_buf_t *db; + zap_leaf_t *l; + int bs = FZAP_BLOCK_SHIFT(zap); + int err; + + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + + /* + * If system crashed just after dmu_free_long_range in zfs_rmnode, we + * would be left with an empty xattr dir in delete queue. blkid=0 + * would be passed in when doing zfs_purgedir. If that's the case we + * should just return immediately. The underlying objects should + * already be freed, so this should be perfectly fine. + */ + if (blkid == 0) + return (ENOENT); + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + blkid << bs, NULL, &db, DMU_READ_NO_PREFETCH); + if (err) + return (err); + + ASSERT3U(db->db_object, ==, zap->zap_object); + ASSERT3U(db->db_offset, ==, blkid << bs); + ASSERT3U(db->db_size, ==, 1 << bs); + ASSERT(blkid != 0); + + l = dmu_buf_get_user(db); + + if (l == NULL) + l = zap_open_leaf(blkid, db); + + rw_enter(&l->l_rwlock, lt); + /* + * Must lock before dirtying, otherwise zap_leaf_phys(l) could change, + * causing ASSERT below to fail. + */ + if (lt == RW_WRITER) + dmu_buf_will_dirty(db, tx); + ASSERT3U(l->l_blkid, ==, blkid); + ASSERT3P(l->l_dbuf, ==, db); + ASSERT3U(zap_leaf_phys(l)->l_hdr.lh_block_type, ==, ZBT_LEAF); + ASSERT3U(zap_leaf_phys(l)->l_hdr.lh_magic, ==, ZAP_LEAF_MAGIC); + + *lp = l; + return (0); +} + +static int +zap_idx_to_blk(zap_t *zap, uint64_t idx, uint64_t *valp) +{ + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + + if (zap_f_phys(zap)->zap_ptrtbl.zt_numblks == 0) { + ASSERT3U(idx, <, + (1ULL << zap_f_phys(zap)->zap_ptrtbl.zt_shift)); + *valp = ZAP_EMBEDDED_PTRTBL_ENT(zap, idx); + return (0); + } else { + return (zap_table_load(zap, &zap_f_phys(zap)->zap_ptrtbl, + idx, valp)); + } +} + +static int +zap_set_idx_to_blk(zap_t *zap, uint64_t idx, uint64_t blk, dmu_tx_t *tx) +{ + ASSERT(tx != NULL); + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + + if (zap_f_phys(zap)->zap_ptrtbl.zt_blk == 0) { + ZAP_EMBEDDED_PTRTBL_ENT(zap, idx) = blk; + return (0); + } else { + return (zap_table_store(zap, &zap_f_phys(zap)->zap_ptrtbl, + idx, blk, tx)); + } +} + +static int +zap_deref_leaf(zap_t *zap, uint64_t h, dmu_tx_t *tx, krw_t lt, zap_leaf_t **lp) +{ + uint64_t idx, blk; + int err; + + ASSERT(zap->zap_dbuf == NULL || + zap_f_phys(zap) == zap->zap_dbuf->db_data); + ASSERT3U(zap_f_phys(zap)->zap_magic, ==, ZAP_MAGIC); + idx = ZAP_HASH_IDX(h, zap_f_phys(zap)->zap_ptrtbl.zt_shift); + err = zap_idx_to_blk(zap, idx, &blk); + if (err != 0) + return (err); + err = zap_get_leaf_byblk(zap, blk, tx, lt, lp); + + ASSERT(err || + ZAP_HASH_IDX(h, zap_leaf_phys(*lp)->l_hdr.lh_prefix_len) == + zap_leaf_phys(*lp)->l_hdr.lh_prefix); + return (err); +} + +static int +zap_expand_leaf(zap_name_t *zn, zap_leaf_t *l, dmu_tx_t *tx, zap_leaf_t **lp) +{ + zap_t *zap = zn->zn_zap; + uint64_t hash = zn->zn_hash; + zap_leaf_t *nl; + int prefix_diff, i, err; + uint64_t sibling; + int old_prefix_len = zap_leaf_phys(l)->l_hdr.lh_prefix_len; + + ASSERT3U(old_prefix_len, <=, zap_f_phys(zap)->zap_ptrtbl.zt_shift); + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + + ASSERT3U(ZAP_HASH_IDX(hash, old_prefix_len), ==, + zap_leaf_phys(l)->l_hdr.lh_prefix); + + if (zap_tryupgradedir(zap, tx) == 0 || + old_prefix_len == zap_f_phys(zap)->zap_ptrtbl.zt_shift) { + /* We failed to upgrade, or need to grow the pointer table */ + objset_t *os = zap->zap_objset; + uint64_t object = zap->zap_object; + + zap_put_leaf(l); + zap_unlockdir(zap); + err = zap_lockdir(os, object, tx, RW_WRITER, + FALSE, FALSE, &zn->zn_zap); + zap = zn->zn_zap; + if (err) + return (err); + ASSERT(!zap->zap_ismicro); + + while (old_prefix_len == + zap_f_phys(zap)->zap_ptrtbl.zt_shift) { + err = zap_grow_ptrtbl(zap, tx); + if (err) + return (err); + } + + err = zap_deref_leaf(zap, hash, tx, RW_WRITER, &l); + if (err) + return (err); + + if (zap_leaf_phys(l)->l_hdr.lh_prefix_len != old_prefix_len) { + /* it split while our locks were down */ + *lp = l; + return (0); + } + } + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + ASSERT3U(old_prefix_len, <, zap_f_phys(zap)->zap_ptrtbl.zt_shift); + ASSERT3U(ZAP_HASH_IDX(hash, old_prefix_len), ==, + zap_leaf_phys(l)->l_hdr.lh_prefix); + + prefix_diff = zap_f_phys(zap)->zap_ptrtbl.zt_shift - + (old_prefix_len + 1); + sibling = (ZAP_HASH_IDX(hash, old_prefix_len + 1) | 1) << prefix_diff; + + /* check for i/o errors before doing zap_leaf_split */ + for (i = 0; i < (1ULL<l_blkid); + } + + nl = zap_create_leaf(zap, tx); + zap_leaf_split(l, nl, zap->zap_normflags != 0); + + /* set sibling pointers */ + for (i = 0; i < (1ULL << prefix_diff); i++) { + err = zap_set_idx_to_blk(zap, sibling+i, nl->l_blkid, tx); + ASSERT0(err); /* we checked for i/o errors above */ + } + + if (hash & (1ULL << (64 - zap_leaf_phys(l)->l_hdr.lh_prefix_len))) { + /* we want the sibling */ + zap_put_leaf(l); + *lp = nl; + } else { + zap_put_leaf(nl); + *lp = l; + } + + return (0); +} + +static void +zap_put_leaf_maybe_grow_ptrtbl(zap_name_t *zn, zap_leaf_t *l, dmu_tx_t *tx) +{ + zap_t *zap = zn->zn_zap; + int shift = zap_f_phys(zap)->zap_ptrtbl.zt_shift; + int leaffull = (zap_leaf_phys(l)->l_hdr.lh_prefix_len == shift && + zap_leaf_phys(l)->l_hdr.lh_nfree < ZAP_LEAF_LOW_WATER); + + zap_put_leaf(l); + + if (leaffull || zap_f_phys(zap)->zap_ptrtbl.zt_nextblk) { + int err; + + /* + * We are in the middle of growing the pointer table, or + * this leaf will soon make us grow it. + */ + if (zap_tryupgradedir(zap, tx) == 0) { + objset_t *os = zap->zap_objset; + uint64_t zapobj = zap->zap_object; + + zap_unlockdir(zap); + err = zap_lockdir(os, zapobj, tx, + RW_WRITER, FALSE, FALSE, &zn->zn_zap); + zap = zn->zn_zap; + if (err) + return; + } + + /* could have finished growing while our locks were down */ + if (zap_f_phys(zap)->zap_ptrtbl.zt_shift == shift) + (void) zap_grow_ptrtbl(zap, tx); + } +} + +static int +fzap_checkname(zap_name_t *zn) +{ + if (zn->zn_key_orig_numints * zn->zn_key_intlen > ZAP_MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + return (0); +} + +static int +fzap_checksize(uint64_t integer_size, uint64_t num_integers) +{ + /* Only integer sizes supported by C */ + switch (integer_size) { + case 1: + case 2: + case 4: + case 8: + break; + default: + return (SET_ERROR(EINVAL)); + } + + if (integer_size * num_integers > ZAP_MAXVALUELEN) + return (E2BIG); + + return (0); +} + +static int +fzap_check(zap_name_t *zn, uint64_t integer_size, uint64_t num_integers) +{ + int err; + + if ((err = fzap_checkname(zn)) != 0) + return (err); + return (fzap_checksize(integer_size, num_integers)); +} + +/* + * Routines for manipulating attributes. + */ +int +fzap_lookup(zap_name_t *zn, + uint64_t integer_size, uint64_t num_integers, void *buf, + char *realname, int rn_len, boolean_t *ncp) +{ + zap_leaf_t *l; + int err; + zap_entry_handle_t zeh; + + if ((err = fzap_checkname(zn)) != 0) + return (err); + + err = zap_deref_leaf(zn->zn_zap, zn->zn_hash, NULL, RW_READER, &l); + if (err != 0) + return (err); + err = zap_leaf_lookup(l, zn, &zeh); + if (err == 0) { + if ((err = fzap_checksize(integer_size, num_integers)) != 0) { + zap_put_leaf(l); + return (err); + } + + err = zap_entry_read(&zeh, integer_size, num_integers, buf); + (void) zap_entry_read_name(zn->zn_zap, &zeh, rn_len, realname); + if (ncp) { + *ncp = zap_entry_normalization_conflict(&zeh, + zn, NULL, zn->zn_zap); + } + } + + zap_put_leaf(l); + return (err); +} + +int +fzap_add_cd(zap_name_t *zn, + uint64_t integer_size, uint64_t num_integers, + const void *val, uint32_t cd, dmu_tx_t *tx) +{ + zap_leaf_t *l; + int err; + zap_entry_handle_t zeh; + zap_t *zap = zn->zn_zap; + + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + ASSERT(!zap->zap_ismicro); + ASSERT(fzap_check(zn, integer_size, num_integers) == 0); + + err = zap_deref_leaf(zap, zn->zn_hash, tx, RW_WRITER, &l); + if (err != 0) + return (err); +retry: + err = zap_leaf_lookup(l, zn, &zeh); + if (err == 0) { + err = SET_ERROR(EEXIST); + goto out; + } + if (err != ENOENT) + goto out; + + err = zap_entry_create(l, zn, cd, + integer_size, num_integers, val, &zeh); + + if (err == 0) { + zap_increment_num_entries(zap, 1, tx); + } else if (err == EAGAIN) { + err = zap_expand_leaf(zn, l, tx, &l); + zap = zn->zn_zap; /* zap_expand_leaf() may change zap */ + if (err == 0) + goto retry; + } + +out: + if (zap != NULL) + zap_put_leaf_maybe_grow_ptrtbl(zn, l, tx); + return (err); +} + +int +fzap_add(zap_name_t *zn, + uint64_t integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx) +{ + int err = fzap_check(zn, integer_size, num_integers); + if (err != 0) + return (err); + + return (fzap_add_cd(zn, integer_size, num_integers, + val, ZAP_NEED_CD, tx)); +} + +int +fzap_update(zap_name_t *zn, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx) +{ + zap_leaf_t *l; + int err, create; + zap_entry_handle_t zeh; + zap_t *zap = zn->zn_zap; + + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + err = fzap_check(zn, integer_size, num_integers); + if (err != 0) + return (err); + + err = zap_deref_leaf(zap, zn->zn_hash, tx, RW_WRITER, &l); + if (err != 0) + return (err); +retry: + err = zap_leaf_lookup(l, zn, &zeh); + create = (err == ENOENT); + ASSERT(err == 0 || err == ENOENT); + + if (create) { + err = zap_entry_create(l, zn, ZAP_NEED_CD, + integer_size, num_integers, val, &zeh); + if (err == 0) + zap_increment_num_entries(zap, 1, tx); + } else { + err = zap_entry_update(&zeh, integer_size, num_integers, val); + } + + if (err == EAGAIN) { + err = zap_expand_leaf(zn, l, tx, &l); + zap = zn->zn_zap; /* zap_expand_leaf() may change zap */ + if (err == 0) + goto retry; + } + + if (zap != NULL) + zap_put_leaf_maybe_grow_ptrtbl(zn, l, tx); + return (err); +} + +int +fzap_length(zap_name_t *zn, + uint64_t *integer_size, uint64_t *num_integers) +{ + zap_leaf_t *l; + int err; + zap_entry_handle_t zeh; + + err = zap_deref_leaf(zn->zn_zap, zn->zn_hash, NULL, RW_READER, &l); + if (err != 0) + return (err); + err = zap_leaf_lookup(l, zn, &zeh); + if (err != 0) + goto out; + + if (integer_size) + *integer_size = zeh.zeh_integer_size; + if (num_integers) + *num_integers = zeh.zeh_num_integers; +out: + zap_put_leaf(l); + return (err); +} + +int +fzap_remove(zap_name_t *zn, dmu_tx_t *tx) +{ + zap_leaf_t *l; + int err; + zap_entry_handle_t zeh; + + err = zap_deref_leaf(zn->zn_zap, zn->zn_hash, tx, RW_WRITER, &l); + if (err != 0) + return (err); + err = zap_leaf_lookup(l, zn, &zeh); + if (err == 0) { + zap_entry_remove(&zeh); + zap_increment_num_entries(zn->zn_zap, -1, tx); + } + zap_put_leaf(l); + return (err); +} + +void +fzap_prefetch(zap_name_t *zn) +{ + uint64_t idx, blk; + zap_t *zap = zn->zn_zap; + int bs; + + idx = ZAP_HASH_IDX(zn->zn_hash, + zap_f_phys(zap)->zap_ptrtbl.zt_shift); + if (zap_idx_to_blk(zap, idx, &blk) != 0) + return; + bs = FZAP_BLOCK_SHIFT(zap); + dmu_prefetch(zap->zap_objset, zap->zap_object, blk << bs, 1 << bs); +} + +/* + * Helper functions for consumers. + */ + +uint64_t +zap_create_link(objset_t *os, dmu_object_type_t ot, uint64_t parent_obj, + const char *name, dmu_tx_t *tx) +{ + uint64_t new_obj; + + VERIFY((new_obj = zap_create(os, ot, DMU_OT_NONE, 0, tx)) > 0); + VERIFY(zap_add(os, parent_obj, name, sizeof (uint64_t), 1, &new_obj, + tx) == 0); + + return (new_obj); +} + +int +zap_value_search(objset_t *os, uint64_t zapobj, uint64_t value, uint64_t mask, + char *name) +{ + zap_cursor_t zc; + zap_attribute_t *za; + int err; + + if (mask == 0) + mask = -1ULL; + + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + for (zap_cursor_init(&zc, os, zapobj); + (err = zap_cursor_retrieve(&zc, za)) == 0; + zap_cursor_advance(&zc)) { + if ((za->za_first_integer & mask) == (value & mask)) { + (void) strcpy(name, za->za_name); + break; + } + } + zap_cursor_fini(&zc); + kmem_free(za, sizeof (zap_attribute_t)); + return (err); +} + +int +zap_join(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx) +{ + zap_cursor_t zc; + zap_attribute_t za; + int err; + + err = 0; + for (zap_cursor_init(&zc, os, fromobj); + zap_cursor_retrieve(&zc, &za) == 0; + (void) zap_cursor_advance(&zc)) { + if (za.za_integer_length != 8 || za.za_num_integers != 1) { + err = SET_ERROR(EINVAL); + break; + } + err = zap_add(os, intoobj, za.za_name, + 8, 1, &za.za_first_integer, tx); + if (err) + break; + } + zap_cursor_fini(&zc); + return (err); +} + +int +zap_join_key(objset_t *os, uint64_t fromobj, uint64_t intoobj, + uint64_t value, dmu_tx_t *tx) +{ + zap_cursor_t zc; + zap_attribute_t za; + int err; + + err = 0; + for (zap_cursor_init(&zc, os, fromobj); + zap_cursor_retrieve(&zc, &za) == 0; + (void) zap_cursor_advance(&zc)) { + if (za.za_integer_length != 8 || za.za_num_integers != 1) { + err = SET_ERROR(EINVAL); + break; + } + err = zap_add(os, intoobj, za.za_name, + 8, 1, &value, tx); + if (err) + break; + } + zap_cursor_fini(&zc); + return (err); +} + +int +zap_join_increment(objset_t *os, uint64_t fromobj, uint64_t intoobj, + dmu_tx_t *tx) +{ + zap_cursor_t zc; + zap_attribute_t za; + int err; + + err = 0; + for (zap_cursor_init(&zc, os, fromobj); + zap_cursor_retrieve(&zc, &za) == 0; + (void) zap_cursor_advance(&zc)) { + uint64_t delta = 0; + + if (za.za_integer_length != 8 || za.za_num_integers != 1) { + err = SET_ERROR(EINVAL); + break; + } + + err = zap_lookup(os, intoobj, za.za_name, 8, 1, &delta); + if (err != 0 && err != ENOENT) + break; + delta += za.za_first_integer; + err = zap_update(os, intoobj, za.za_name, 8, 1, &delta, tx); + if (err) + break; + } + zap_cursor_fini(&zc); + return (err); +} + +int +zap_add_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)value); + return (zap_add(os, obj, name, 8, 1, &value, tx)); +} + +int +zap_remove_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)value); + return (zap_remove(os, obj, name, tx)); +} + +int +zap_lookup_int(objset_t *os, uint64_t obj, uint64_t value) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)value); + return (zap_lookup(os, obj, name, 8, 1, &value)); +} + +int +zap_add_int_key(objset_t *os, uint64_t obj, + uint64_t key, uint64_t value, dmu_tx_t *tx) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)key); + return (zap_add(os, obj, name, 8, 1, &value, tx)); +} + +int +zap_update_int_key(objset_t *os, uint64_t obj, + uint64_t key, uint64_t value, dmu_tx_t *tx) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)key); + return (zap_update(os, obj, name, 8, 1, &value, tx)); +} + +int +zap_lookup_int_key(objset_t *os, uint64_t obj, uint64_t key, uint64_t *valuep) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)key); + return (zap_lookup(os, obj, name, 8, 1, valuep)); +} + +int +zap_increment(objset_t *os, uint64_t obj, const char *name, int64_t delta, + dmu_tx_t *tx) +{ + uint64_t value = 0; + int err; + + if (delta == 0) + return (0); + + err = zap_lookup(os, obj, name, 8, 1, &value); + if (err != 0 && err != ENOENT) + return (err); + value += delta; + if (value == 0) + err = zap_remove(os, obj, name, tx); + else + err = zap_update(os, obj, name, 8, 1, &value, tx); + return (err); +} + +int +zap_increment_int(objset_t *os, uint64_t obj, uint64_t key, int64_t delta, + dmu_tx_t *tx) +{ + char name[20]; + + (void) snprintf(name, sizeof (name), "%llx", (longlong_t)key); + return (zap_increment(os, obj, name, delta, tx)); +} + +/* + * Routines for iterating over the attributes. + */ + +int +fzap_cursor_retrieve(zap_t *zap, zap_cursor_t *zc, zap_attribute_t *za) +{ + int err = ENOENT; + zap_entry_handle_t zeh; + zap_leaf_t *l; + + /* retrieve the next entry at or after zc_hash/zc_cd */ + /* if no entry, return ENOENT */ + + if (zc->zc_leaf && + (ZAP_HASH_IDX(zc->zc_hash, + zap_leaf_phys(zc->zc_leaf)->l_hdr.lh_prefix_len) != + zap_leaf_phys(zc->zc_leaf)->l_hdr.lh_prefix)) { + rw_enter(&zc->zc_leaf->l_rwlock, RW_READER); + zap_put_leaf(zc->zc_leaf); + zc->zc_leaf = NULL; + } + +again: + if (zc->zc_leaf == NULL) { + err = zap_deref_leaf(zap, zc->zc_hash, NULL, RW_READER, + &zc->zc_leaf); + if (err != 0) + return (err); + } else { + rw_enter(&zc->zc_leaf->l_rwlock, RW_READER); + } + l = zc->zc_leaf; + + err = zap_leaf_lookup_closest(l, zc->zc_hash, zc->zc_cd, &zeh); + + if (err == ENOENT) { + uint64_t nocare = + (1ULL << (64 - zap_leaf_phys(l)->l_hdr.lh_prefix_len)) - 1; + zc->zc_hash = (zc->zc_hash & ~nocare) + nocare + 1; + zc->zc_cd = 0; + if (zap_leaf_phys(l)->l_hdr.lh_prefix_len == 0 || + zc->zc_hash == 0) { + zc->zc_hash = -1ULL; + } else { + zap_put_leaf(zc->zc_leaf); + zc->zc_leaf = NULL; + goto again; + } + } + + if (err == 0) { + zc->zc_hash = zeh.zeh_hash; + zc->zc_cd = zeh.zeh_cd; + za->za_integer_length = zeh.zeh_integer_size; + za->za_num_integers = zeh.zeh_num_integers; + if (zeh.zeh_num_integers == 0) { + za->za_first_integer = 0; + } else { + err = zap_entry_read(&zeh, 8, 1, &za->za_first_integer); + ASSERT(err == 0 || err == EOVERFLOW); + } + err = zap_entry_read_name(zap, &zeh, + sizeof (za->za_name), za->za_name); + ASSERT(err == 0); + + za->za_normalization_conflict = + zap_entry_normalization_conflict(&zeh, + NULL, za->za_name, zap); + } + rw_exit(&zc->zc_leaf->l_rwlock); + return (err); +} + +static void +zap_stats_ptrtbl(zap_t *zap, uint64_t *tbl, int len, zap_stats_t *zs) +{ + int i, err; + uint64_t lastblk = 0; + + /* + * NB: if a leaf has more pointers than an entire ptrtbl block + * can hold, then it'll be accounted for more than once, since + * we won't have lastblk. + */ + for (i = 0; i < len; i++) { + zap_leaf_t *l; + + if (tbl[i] == lastblk) + continue; + lastblk = tbl[i]; + + err = zap_get_leaf_byblk(zap, tbl[i], NULL, RW_READER, &l); + if (err == 0) { + zap_leaf_stats(zap, l, zs); + zap_put_leaf(l); + } + } +} + +void +fzap_get_stats(zap_t *zap, zap_stats_t *zs) +{ + int bs = FZAP_BLOCK_SHIFT(zap); + zs->zs_blocksize = 1ULL << bs; + + /* + * Set zap_phys_t fields + */ + zs->zs_num_leafs = zap_f_phys(zap)->zap_num_leafs; + zs->zs_num_entries = zap_f_phys(zap)->zap_num_entries; + zs->zs_num_blocks = zap_f_phys(zap)->zap_freeblk; + zs->zs_block_type = zap_f_phys(zap)->zap_block_type; + zs->zs_magic = zap_f_phys(zap)->zap_magic; + zs->zs_salt = zap_f_phys(zap)->zap_salt; + + /* + * Set zap_ptrtbl fields + */ + zs->zs_ptrtbl_len = 1ULL << zap_f_phys(zap)->zap_ptrtbl.zt_shift; + zs->zs_ptrtbl_nextblk = zap_f_phys(zap)->zap_ptrtbl.zt_nextblk; + zs->zs_ptrtbl_blks_copied = + zap_f_phys(zap)->zap_ptrtbl.zt_blks_copied; + zs->zs_ptrtbl_zt_blk = zap_f_phys(zap)->zap_ptrtbl.zt_blk; + zs->zs_ptrtbl_zt_numblks = zap_f_phys(zap)->zap_ptrtbl.zt_numblks; + zs->zs_ptrtbl_zt_shift = zap_f_phys(zap)->zap_ptrtbl.zt_shift; + + if (zap_f_phys(zap)->zap_ptrtbl.zt_numblks == 0) { + /* the ptrtbl is entirely in the header block. */ + zap_stats_ptrtbl(zap, &ZAP_EMBEDDED_PTRTBL_ENT(zap, 0), + 1 << ZAP_EMBEDDED_PTRTBL_SHIFT(zap), zs); + } else { + int b; + + dmu_prefetch(zap->zap_objset, zap->zap_object, + zap_f_phys(zap)->zap_ptrtbl.zt_blk << bs, + zap_f_phys(zap)->zap_ptrtbl.zt_numblks << bs); + + for (b = 0; b < zap_f_phys(zap)->zap_ptrtbl.zt_numblks; + b++) { + dmu_buf_t *db; + int err; + + err = dmu_buf_hold(zap->zap_objset, zap->zap_object, + (zap_f_phys(zap)->zap_ptrtbl.zt_blk + b) << bs, + FTAG, &db, DMU_READ_NO_PREFETCH); + if (err == 0) { + zap_stats_ptrtbl(zap, db->db_data, + 1<<(bs-3), zs); + dmu_buf_rele(db, FTAG); + } + } + } +} + +int +fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, + uint64_t *tooverwrite) +{ + zap_t *zap = zn->zn_zap; + zap_leaf_t *l; + int err; + + /* + * Account for the header block of the fatzap. + */ + if (!add && dmu_buf_freeable(zap->zap_dbuf)) { + *tooverwrite += zap->zap_dbuf->db_size; + } else { + *towrite += zap->zap_dbuf->db_size; + } + + /* + * Account for the pointer table blocks. + * If we are adding we need to account for the following cases : + * - If the pointer table is embedded, this operation could force an + * external pointer table. + * - If this already has an external pointer table this operation + * could extend the table. + */ + if (add) { + if (zap_f_phys(zap)->zap_ptrtbl.zt_blk == 0) + *towrite += zap->zap_dbuf->db_size; + else + *towrite += (zap->zap_dbuf->db_size * 3); + } + + /* + * Now, check if the block containing leaf is freeable + * and account accordingly. + */ + err = zap_deref_leaf(zap, zn->zn_hash, NULL, RW_READER, &l); + if (err != 0) { + return (err); + } + + if (!add && dmu_buf_freeable(l->l_dbuf)) { + *tooverwrite += l->l_dbuf->db_size; + } else { + /* + * If this an add operation, the leaf block could split. + * Hence, we need to account for an additional leaf block. + */ + *towrite += (add ? 2 : 1) * l->l_dbuf->db_size; + } + + zap_put_leaf(l); + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/zap_leaf.c +++ linux-4.4.0/zfs/module/zfs/zap_leaf.c @@ -0,0 +1,887 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014 by Delphix. All rights reserved. + */ + +/* + * The 512-byte leaf is broken into 32 16-byte chunks. + * chunk number n means l_chunk[n], even though the header precedes it. + * the names are stored null-terminated. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static uint16_t *zap_leaf_rehash_entry(zap_leaf_t *l, uint16_t entry); + +#define CHAIN_END 0xffff /* end of the chunk chain */ + +/* half the (current) minimum block size */ +#define MAX_ARRAY_BYTES (8<<10) + +#define LEAF_HASH(l, h) \ + ((ZAP_LEAF_HASH_NUMENTRIES(l)-1) & \ + ((h) >> \ + (64 - ZAP_LEAF_HASH_SHIFT(l) - zap_leaf_phys(l)->l_hdr.lh_prefix_len))) + +#define LEAF_HASH_ENTPTR(l, h) (&zap_leaf_phys(l)->l_hash[LEAF_HASH(l, h)]) + +extern inline zap_leaf_phys_t *zap_leaf_phys(zap_leaf_t *l); + +static void +zap_memset(void *a, int c, size_t n) +{ + char *cp = a; + char *cpend = cp + n; + + while (cp < cpend) + *cp++ = c; +} + +static void +stv(int len, void *addr, uint64_t value) +{ + switch (len) { + case 1: + *(uint8_t *)addr = value; + return; + case 2: + *(uint16_t *)addr = value; + return; + case 4: + *(uint32_t *)addr = value; + return; + case 8: + *(uint64_t *)addr = value; + return; + default: + cmn_err(CE_PANIC, "bad int len %d", len); + } +} + +static uint64_t +ldv(int len, const void *addr) +{ + switch (len) { + case 1: + return (*(uint8_t *)addr); + case 2: + return (*(uint16_t *)addr); + case 4: + return (*(uint32_t *)addr); + case 8: + return (*(uint64_t *)addr); + default: + cmn_err(CE_PANIC, "bad int len %d", len); + } + return (0xFEEDFACEDEADBEEFULL); +} + +void +zap_leaf_byteswap(zap_leaf_phys_t *buf, int size) +{ + int i; + zap_leaf_t l; + dmu_buf_t l_dbuf; + + l_dbuf.db_data = buf; + l.l_bs = highbit64(size) - 1; + l.l_dbuf = &l_dbuf; + + buf->l_hdr.lh_block_type = BSWAP_64(buf->l_hdr.lh_block_type); + buf->l_hdr.lh_prefix = BSWAP_64(buf->l_hdr.lh_prefix); + buf->l_hdr.lh_magic = BSWAP_32(buf->l_hdr.lh_magic); + buf->l_hdr.lh_nfree = BSWAP_16(buf->l_hdr.lh_nfree); + buf->l_hdr.lh_nentries = BSWAP_16(buf->l_hdr.lh_nentries); + buf->l_hdr.lh_prefix_len = BSWAP_16(buf->l_hdr.lh_prefix_len); + buf->l_hdr.lh_freelist = BSWAP_16(buf->l_hdr.lh_freelist); + + for (i = 0; i < ZAP_LEAF_HASH_NUMENTRIES(&l); i++) + buf->l_hash[i] = BSWAP_16(buf->l_hash[i]); + + for (i = 0; i < ZAP_LEAF_NUMCHUNKS(&l); i++) { + zap_leaf_chunk_t *lc = &ZAP_LEAF_CHUNK(&l, i); + struct zap_leaf_entry *le; + + switch (lc->l_free.lf_type) { + case ZAP_CHUNK_ENTRY: + le = &lc->l_entry; + + le->le_type = BSWAP_8(le->le_type); + le->le_value_intlen = BSWAP_8(le->le_value_intlen); + le->le_next = BSWAP_16(le->le_next); + le->le_name_chunk = BSWAP_16(le->le_name_chunk); + le->le_name_numints = BSWAP_16(le->le_name_numints); + le->le_value_chunk = BSWAP_16(le->le_value_chunk); + le->le_value_numints = BSWAP_16(le->le_value_numints); + le->le_cd = BSWAP_32(le->le_cd); + le->le_hash = BSWAP_64(le->le_hash); + break; + case ZAP_CHUNK_FREE: + lc->l_free.lf_type = BSWAP_8(lc->l_free.lf_type); + lc->l_free.lf_next = BSWAP_16(lc->l_free.lf_next); + break; + case ZAP_CHUNK_ARRAY: + lc->l_array.la_type = BSWAP_8(lc->l_array.la_type); + lc->l_array.la_next = BSWAP_16(lc->l_array.la_next); + /* la_array doesn't need swapping */ + break; + default: + cmn_err(CE_PANIC, "bad leaf type %d", + lc->l_free.lf_type); + } + } +} + +void +zap_leaf_init(zap_leaf_t *l, boolean_t sort) +{ + int i; + + l->l_bs = highbit64(l->l_dbuf->db_size) - 1; + zap_memset(&zap_leaf_phys(l)->l_hdr, 0, + sizeof (struct zap_leaf_header)); + zap_memset(zap_leaf_phys(l)->l_hash, CHAIN_END, + 2*ZAP_LEAF_HASH_NUMENTRIES(l)); + for (i = 0; i < ZAP_LEAF_NUMCHUNKS(l); i++) { + ZAP_LEAF_CHUNK(l, i).l_free.lf_type = ZAP_CHUNK_FREE; + ZAP_LEAF_CHUNK(l, i).l_free.lf_next = i+1; + } + ZAP_LEAF_CHUNK(l, ZAP_LEAF_NUMCHUNKS(l)-1).l_free.lf_next = CHAIN_END; + zap_leaf_phys(l)->l_hdr.lh_block_type = ZBT_LEAF; + zap_leaf_phys(l)->l_hdr.lh_magic = ZAP_LEAF_MAGIC; + zap_leaf_phys(l)->l_hdr.lh_nfree = ZAP_LEAF_NUMCHUNKS(l); + if (sort) + zap_leaf_phys(l)->l_hdr.lh_flags |= ZLF_ENTRIES_CDSORTED; +} + +/* + * Routines which manipulate leaf chunks (l_chunk[]). + */ + +static uint16_t +zap_leaf_chunk_alloc(zap_leaf_t *l) +{ + int chunk; + + ASSERT(zap_leaf_phys(l)->l_hdr.lh_nfree > 0); + + chunk = zap_leaf_phys(l)->l_hdr.lh_freelist; + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT3U(ZAP_LEAF_CHUNK(l, chunk).l_free.lf_type, ==, ZAP_CHUNK_FREE); + + zap_leaf_phys(l)->l_hdr.lh_freelist = + ZAP_LEAF_CHUNK(l, chunk).l_free.lf_next; + + zap_leaf_phys(l)->l_hdr.lh_nfree--; + + return (chunk); +} + +static void +zap_leaf_chunk_free(zap_leaf_t *l, uint16_t chunk) +{ + struct zap_leaf_free *zlf = &ZAP_LEAF_CHUNK(l, chunk).l_free; + ASSERT3U(zap_leaf_phys(l)->l_hdr.lh_nfree, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT(zlf->lf_type != ZAP_CHUNK_FREE); + + zlf->lf_type = ZAP_CHUNK_FREE; + zlf->lf_next = zap_leaf_phys(l)->l_hdr.lh_freelist; + bzero(zlf->lf_pad, sizeof (zlf->lf_pad)); /* help it to compress */ + zap_leaf_phys(l)->l_hdr.lh_freelist = chunk; + + zap_leaf_phys(l)->l_hdr.lh_nfree++; +} + +/* + * Routines which manipulate leaf arrays (zap_leaf_array type chunks). + */ + +static uint16_t +zap_leaf_array_create(zap_leaf_t *l, const char *buf, + int integer_size, int num_integers) +{ + uint16_t chunk_head; + uint16_t *chunkp = &chunk_head; + int byten = 0; + uint64_t value = 0; + int shift = (integer_size-1)*8; + int len = num_integers; + + ASSERT3U(num_integers * integer_size, <, MAX_ARRAY_BYTES); + + while (len > 0) { + uint16_t chunk = zap_leaf_chunk_alloc(l); + struct zap_leaf_array *la = &ZAP_LEAF_CHUNK(l, chunk).l_array; + int i; + + la->la_type = ZAP_CHUNK_ARRAY; + for (i = 0; i < ZAP_LEAF_ARRAY_BYTES; i++) { + if (byten == 0) + value = ldv(integer_size, buf); + la->la_array[i] = value >> shift; + value <<= 8; + if (++byten == integer_size) { + byten = 0; + buf += integer_size; + if (--len == 0) + break; + } + } + + *chunkp = chunk; + chunkp = &la->la_next; + } + *chunkp = CHAIN_END; + + return (chunk_head); +} + +static void +zap_leaf_array_free(zap_leaf_t *l, uint16_t *chunkp) +{ + uint16_t chunk = *chunkp; + + *chunkp = CHAIN_END; + + while (chunk != CHAIN_END) { + int nextchunk = ZAP_LEAF_CHUNK(l, chunk).l_array.la_next; + ASSERT3U(ZAP_LEAF_CHUNK(l, chunk).l_array.la_type, ==, + ZAP_CHUNK_ARRAY); + zap_leaf_chunk_free(l, chunk); + chunk = nextchunk; + } +} + +/* array_len and buf_len are in integers, not bytes */ +static void +zap_leaf_array_read(zap_leaf_t *l, uint16_t chunk, + int array_int_len, int array_len, int buf_int_len, uint64_t buf_len, + void *buf) +{ + int len = MIN(array_len, buf_len); + int byten = 0; + uint64_t value = 0; + char *p = buf; + + ASSERT3U(array_int_len, <=, buf_int_len); + + /* Fast path for one 8-byte integer */ + if (array_int_len == 8 && buf_int_len == 8 && len == 1) { + struct zap_leaf_array *la = &ZAP_LEAF_CHUNK(l, chunk).l_array; + uint8_t *ip = la->la_array; + uint64_t *buf64 = buf; + + *buf64 = (uint64_t)ip[0] << 56 | (uint64_t)ip[1] << 48 | + (uint64_t)ip[2] << 40 | (uint64_t)ip[3] << 32 | + (uint64_t)ip[4] << 24 | (uint64_t)ip[5] << 16 | + (uint64_t)ip[6] << 8 | (uint64_t)ip[7]; + return; + } + + /* Fast path for an array of 1-byte integers (eg. the entry name) */ + if (array_int_len == 1 && buf_int_len == 1 && + buf_len > array_len + ZAP_LEAF_ARRAY_BYTES) { + while (chunk != CHAIN_END) { + struct zap_leaf_array *la = + &ZAP_LEAF_CHUNK(l, chunk).l_array; + bcopy(la->la_array, p, ZAP_LEAF_ARRAY_BYTES); + p += ZAP_LEAF_ARRAY_BYTES; + chunk = la->la_next; + } + return; + } + + while (len > 0) { + struct zap_leaf_array *la = &ZAP_LEAF_CHUNK(l, chunk).l_array; + int i; + + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + for (i = 0; i < ZAP_LEAF_ARRAY_BYTES && len > 0; i++) { + value = (value << 8) | la->la_array[i]; + byten++; + if (byten == array_int_len) { + stv(buf_int_len, p, value); + byten = 0; + len--; + if (len == 0) + return; + p += buf_int_len; + } + } + chunk = la->la_next; + } +} + +static boolean_t +zap_leaf_array_match(zap_leaf_t *l, zap_name_t *zn, + int chunk, int array_numints) +{ + int bseen = 0; + + if (zap_getflags(zn->zn_zap) & ZAP_FLAG_UINT64_KEY) { + uint64_t *thiskey; + boolean_t match; + + ASSERT(zn->zn_key_intlen == sizeof (*thiskey)); + thiskey = kmem_alloc(array_numints * sizeof (*thiskey), + KM_SLEEP); + + zap_leaf_array_read(l, chunk, sizeof (*thiskey), array_numints, + sizeof (*thiskey), array_numints, thiskey); + match = bcmp(thiskey, zn->zn_key_orig, + array_numints * sizeof (*thiskey)) == 0; + kmem_free(thiskey, array_numints * sizeof (*thiskey)); + return (match); + } + + ASSERT(zn->zn_key_intlen == 1); + if (zn->zn_matchtype == MT_FIRST) { + char *thisname = kmem_alloc(array_numints, KM_SLEEP); + boolean_t match; + + zap_leaf_array_read(l, chunk, sizeof (char), array_numints, + sizeof (char), array_numints, thisname); + match = zap_match(zn, thisname); + kmem_free(thisname, array_numints); + return (match); + } + + /* + * Fast path for exact matching. + * First check that the lengths match, so that we don't read + * past the end of the zn_key_orig array. + */ + if (array_numints != zn->zn_key_orig_numints) + return (B_FALSE); + while (bseen < array_numints) { + struct zap_leaf_array *la = &ZAP_LEAF_CHUNK(l, chunk).l_array; + int toread = MIN(array_numints - bseen, ZAP_LEAF_ARRAY_BYTES); + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + if (bcmp(la->la_array, (char *)zn->zn_key_orig + bseen, toread)) + break; + chunk = la->la_next; + bseen += toread; + } + return (bseen == array_numints); +} + +/* + * Routines which manipulate leaf entries. + */ + +int +zap_leaf_lookup(zap_leaf_t *l, zap_name_t *zn, zap_entry_handle_t *zeh) +{ + uint16_t *chunkp; + struct zap_leaf_entry *le; + + ASSERT3U(zap_leaf_phys(l)->l_hdr.lh_magic, ==, ZAP_LEAF_MAGIC); + +again: + for (chunkp = LEAF_HASH_ENTPTR(l, zn->zn_hash); + *chunkp != CHAIN_END; chunkp = &le->le_next) { + uint16_t chunk = *chunkp; + le = ZAP_LEAF_ENTRY(l, chunk); + + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + if (le->le_hash != zn->zn_hash) + continue; + + /* + * NB: the entry chain is always sorted by cd on + * normalized zap objects, so this will find the + * lowest-cd match for MT_FIRST. + */ + ASSERT(zn->zn_matchtype == MT_EXACT || + (zap_leaf_phys(l)->l_hdr.lh_flags & ZLF_ENTRIES_CDSORTED)); + if (zap_leaf_array_match(l, zn, le->le_name_chunk, + le->le_name_numints)) { + zeh->zeh_num_integers = le->le_value_numints; + zeh->zeh_integer_size = le->le_value_intlen; + zeh->zeh_cd = le->le_cd; + zeh->zeh_hash = le->le_hash; + zeh->zeh_chunkp = chunkp; + zeh->zeh_leaf = l; + return (0); + } + } + + /* + * NB: we could of course do this in one pass, but that would be + * a pain. We'll see if MT_BEST is even used much. + */ + if (zn->zn_matchtype == MT_BEST) { + zn->zn_matchtype = MT_FIRST; + goto again; + } + + return (SET_ERROR(ENOENT)); +} + +/* Return (h1,cd1 >= h2,cd2) */ +#define HCD_GTEQ(h1, cd1, h2, cd2) \ + ((h1 > h2) ? TRUE : ((h1 == h2 && cd1 >= cd2) ? TRUE : FALSE)) + +int +zap_leaf_lookup_closest(zap_leaf_t *l, + uint64_t h, uint32_t cd, zap_entry_handle_t *zeh) +{ + uint16_t chunk; + uint64_t besth = -1ULL; + uint32_t bestcd = -1U; + uint16_t bestlh = ZAP_LEAF_HASH_NUMENTRIES(l)-1; + uint16_t lh; + struct zap_leaf_entry *le; + + ASSERT3U(zap_leaf_phys(l)->l_hdr.lh_magic, ==, ZAP_LEAF_MAGIC); + + for (lh = LEAF_HASH(l, h); lh <= bestlh; lh++) { + for (chunk = zap_leaf_phys(l)->l_hash[lh]; + chunk != CHAIN_END; chunk = le->le_next) { + le = ZAP_LEAF_ENTRY(l, chunk); + + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + if (HCD_GTEQ(le->le_hash, le->le_cd, h, cd) && + HCD_GTEQ(besth, bestcd, le->le_hash, le->le_cd)) { + ASSERT3U(bestlh, >=, lh); + bestlh = lh; + besth = le->le_hash; + bestcd = le->le_cd; + + zeh->zeh_num_integers = le->le_value_numints; + zeh->zeh_integer_size = le->le_value_intlen; + zeh->zeh_cd = le->le_cd; + zeh->zeh_hash = le->le_hash; + zeh->zeh_fakechunk = chunk; + zeh->zeh_chunkp = &zeh->zeh_fakechunk; + zeh->zeh_leaf = l; + } + } + } + + return (bestcd == -1U ? ENOENT : 0); +} + +int +zap_entry_read(const zap_entry_handle_t *zeh, + uint8_t integer_size, uint64_t num_integers, void *buf) +{ + struct zap_leaf_entry *le = + ZAP_LEAF_ENTRY(zeh->zeh_leaf, *zeh->zeh_chunkp); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + if (le->le_value_intlen > integer_size) + return (SET_ERROR(EINVAL)); + + zap_leaf_array_read(zeh->zeh_leaf, le->le_value_chunk, + le->le_value_intlen, le->le_value_numints, + integer_size, num_integers, buf); + + if (zeh->zeh_num_integers > num_integers) + return (SET_ERROR(EOVERFLOW)); + return (0); + +} + +int +zap_entry_read_name(zap_t *zap, const zap_entry_handle_t *zeh, uint16_t buflen, + char *buf) +{ + struct zap_leaf_entry *le = + ZAP_LEAF_ENTRY(zeh->zeh_leaf, *zeh->zeh_chunkp); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + if (zap_getflags(zap) & ZAP_FLAG_UINT64_KEY) { + zap_leaf_array_read(zeh->zeh_leaf, le->le_name_chunk, 8, + le->le_name_numints, 8, buflen / 8, buf); + } else { + zap_leaf_array_read(zeh->zeh_leaf, le->le_name_chunk, 1, + le->le_name_numints, 1, buflen, buf); + } + if (le->le_name_numints > buflen) + return (SET_ERROR(EOVERFLOW)); + return (0); +} + +int +zap_entry_update(zap_entry_handle_t *zeh, + uint8_t integer_size, uint64_t num_integers, const void *buf) +{ + int delta_chunks; + zap_leaf_t *l = zeh->zeh_leaf; + struct zap_leaf_entry *le = ZAP_LEAF_ENTRY(l, *zeh->zeh_chunkp); + + delta_chunks = ZAP_LEAF_ARRAY_NCHUNKS(num_integers * integer_size) - + ZAP_LEAF_ARRAY_NCHUNKS(le->le_value_numints * le->le_value_intlen); + + if ((int)zap_leaf_phys(l)->l_hdr.lh_nfree < delta_chunks) + return (SET_ERROR(EAGAIN)); + + zap_leaf_array_free(l, &le->le_value_chunk); + le->le_value_chunk = + zap_leaf_array_create(l, buf, integer_size, num_integers); + le->le_value_numints = num_integers; + le->le_value_intlen = integer_size; + return (0); +} + +void +zap_entry_remove(zap_entry_handle_t *zeh) +{ + uint16_t entry_chunk; + struct zap_leaf_entry *le; + zap_leaf_t *l = zeh->zeh_leaf; + + ASSERT3P(zeh->zeh_chunkp, !=, &zeh->zeh_fakechunk); + + entry_chunk = *zeh->zeh_chunkp; + le = ZAP_LEAF_ENTRY(l, entry_chunk); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + zap_leaf_array_free(l, &le->le_name_chunk); + zap_leaf_array_free(l, &le->le_value_chunk); + + *zeh->zeh_chunkp = le->le_next; + zap_leaf_chunk_free(l, entry_chunk); + + zap_leaf_phys(l)->l_hdr.lh_nentries--; +} + +int +zap_entry_create(zap_leaf_t *l, zap_name_t *zn, uint32_t cd, + uint8_t integer_size, uint64_t num_integers, const void *buf, + zap_entry_handle_t *zeh) +{ + uint16_t chunk; + uint16_t *chunkp; + struct zap_leaf_entry *le; + uint64_t valuelen; + int numchunks; + uint64_t h = zn->zn_hash; + + valuelen = integer_size * num_integers; + + numchunks = 1 + ZAP_LEAF_ARRAY_NCHUNKS(zn->zn_key_orig_numints * + zn->zn_key_intlen) + ZAP_LEAF_ARRAY_NCHUNKS(valuelen); + if (numchunks > ZAP_LEAF_NUMCHUNKS(l)) + return (E2BIG); + + if (cd == ZAP_NEED_CD) { + /* find the lowest unused cd */ + if (zap_leaf_phys(l)->l_hdr.lh_flags & ZLF_ENTRIES_CDSORTED) { + cd = 0; + + for (chunk = *LEAF_HASH_ENTPTR(l, h); + chunk != CHAIN_END; chunk = le->le_next) { + le = ZAP_LEAF_ENTRY(l, chunk); + if (le->le_cd > cd) + break; + if (le->le_hash == h) { + ASSERT3U(cd, ==, le->le_cd); + cd++; + } + } + } else { + /* old unsorted format; do it the O(n^2) way */ + for (cd = 0; ; cd++) { + for (chunk = *LEAF_HASH_ENTPTR(l, h); + chunk != CHAIN_END; chunk = le->le_next) { + le = ZAP_LEAF_ENTRY(l, chunk); + if (le->le_hash == h && + le->le_cd == cd) { + break; + } + } + /* If this cd is not in use, we are good. */ + if (chunk == CHAIN_END) + break; + } + } + /* + * We would run out of space in a block before we could + * store enough entries to run out of CD values. + */ + ASSERT3U(cd, <, zap_maxcd(zn->zn_zap)); + } + + if (zap_leaf_phys(l)->l_hdr.lh_nfree < numchunks) + return (SET_ERROR(EAGAIN)); + + /* make the entry */ + chunk = zap_leaf_chunk_alloc(l); + le = ZAP_LEAF_ENTRY(l, chunk); + le->le_type = ZAP_CHUNK_ENTRY; + le->le_name_chunk = zap_leaf_array_create(l, zn->zn_key_orig, + zn->zn_key_intlen, zn->zn_key_orig_numints); + le->le_name_numints = zn->zn_key_orig_numints; + le->le_value_chunk = + zap_leaf_array_create(l, buf, integer_size, num_integers); + le->le_value_numints = num_integers; + le->le_value_intlen = integer_size; + le->le_hash = h; + le->le_cd = cd; + + /* link it into the hash chain */ + /* XXX if we did the search above, we could just use that */ + chunkp = zap_leaf_rehash_entry(l, chunk); + + zap_leaf_phys(l)->l_hdr.lh_nentries++; + + zeh->zeh_leaf = l; + zeh->zeh_num_integers = num_integers; + zeh->zeh_integer_size = le->le_value_intlen; + zeh->zeh_cd = le->le_cd; + zeh->zeh_hash = le->le_hash; + zeh->zeh_chunkp = chunkp; + + return (0); +} + +/* + * Determine if there is another entry with the same normalized form. + * For performance purposes, either zn or name must be provided (the + * other can be NULL). Note, there usually won't be any hash + * conflicts, in which case we don't need the concatenated/normalized + * form of the name. But all callers have one of these on hand anyway, + * so might as well take advantage. A cleaner but slower interface + * would accept neither argument, and compute the normalized name as + * needed (using zap_name_alloc(zap_entry_read_name(zeh))). + */ +boolean_t +zap_entry_normalization_conflict(zap_entry_handle_t *zeh, zap_name_t *zn, + const char *name, zap_t *zap) +{ + uint64_t chunk; + struct zap_leaf_entry *le; + boolean_t allocdzn = B_FALSE; + + if (zap->zap_normflags == 0) + return (B_FALSE); + + for (chunk = *LEAF_HASH_ENTPTR(zeh->zeh_leaf, zeh->zeh_hash); + chunk != CHAIN_END; chunk = le->le_next) { + le = ZAP_LEAF_ENTRY(zeh->zeh_leaf, chunk); + if (le->le_hash != zeh->zeh_hash) + continue; + if (le->le_cd == zeh->zeh_cd) + continue; + + if (zn == NULL) { + zn = zap_name_alloc(zap, name, MT_FIRST); + allocdzn = B_TRUE; + } + if (zap_leaf_array_match(zeh->zeh_leaf, zn, + le->le_name_chunk, le->le_name_numints)) { + if (allocdzn) + zap_name_free(zn); + return (B_TRUE); + } + } + if (allocdzn) + zap_name_free(zn); + return (B_FALSE); +} + +/* + * Routines for transferring entries between leafs. + */ + +static uint16_t * +zap_leaf_rehash_entry(zap_leaf_t *l, uint16_t entry) +{ + struct zap_leaf_entry *le = ZAP_LEAF_ENTRY(l, entry); + struct zap_leaf_entry *le2; + uint16_t *chunkp; + + /* + * keep the entry chain sorted by cd + * NB: this will not cause problems for unsorted leafs, though + * it is unnecessary there. + */ + for (chunkp = LEAF_HASH_ENTPTR(l, le->le_hash); + *chunkp != CHAIN_END; chunkp = &le2->le_next) { + le2 = ZAP_LEAF_ENTRY(l, *chunkp); + if (le2->le_cd > le->le_cd) + break; + } + + le->le_next = *chunkp; + *chunkp = entry; + return (chunkp); +} + +static uint16_t +zap_leaf_transfer_array(zap_leaf_t *l, uint16_t chunk, zap_leaf_t *nl) +{ + uint16_t new_chunk; + uint16_t *nchunkp = &new_chunk; + + while (chunk != CHAIN_END) { + uint16_t nchunk = zap_leaf_chunk_alloc(nl); + struct zap_leaf_array *nla = + &ZAP_LEAF_CHUNK(nl, nchunk).l_array; + struct zap_leaf_array *la = + &ZAP_LEAF_CHUNK(l, chunk).l_array; + int nextchunk = la->la_next; + + ASSERT3U(chunk, <, ZAP_LEAF_NUMCHUNKS(l)); + ASSERT3U(nchunk, <, ZAP_LEAF_NUMCHUNKS(l)); + + *nla = *la; /* structure assignment */ + + zap_leaf_chunk_free(l, chunk); + chunk = nextchunk; + *nchunkp = nchunk; + nchunkp = &nla->la_next; + } + *nchunkp = CHAIN_END; + return (new_chunk); +} + +static void +zap_leaf_transfer_entry(zap_leaf_t *l, int entry, zap_leaf_t *nl) +{ + struct zap_leaf_entry *le, *nle; + uint16_t chunk; + + le = ZAP_LEAF_ENTRY(l, entry); + ASSERT3U(le->le_type, ==, ZAP_CHUNK_ENTRY); + + chunk = zap_leaf_chunk_alloc(nl); + nle = ZAP_LEAF_ENTRY(nl, chunk); + *nle = *le; /* structure assignment */ + + (void) zap_leaf_rehash_entry(nl, chunk); + + nle->le_name_chunk = zap_leaf_transfer_array(l, le->le_name_chunk, nl); + nle->le_value_chunk = + zap_leaf_transfer_array(l, le->le_value_chunk, nl); + + zap_leaf_chunk_free(l, entry); + + zap_leaf_phys(l)->l_hdr.lh_nentries--; + zap_leaf_phys(nl)->l_hdr.lh_nentries++; +} + +/* + * Transfer the entries whose hash prefix ends in 1 to the new leaf. + */ +void +zap_leaf_split(zap_leaf_t *l, zap_leaf_t *nl, boolean_t sort) +{ + int i; + int bit = 64 - 1 - zap_leaf_phys(l)->l_hdr.lh_prefix_len; + + /* set new prefix and prefix_len */ + zap_leaf_phys(l)->l_hdr.lh_prefix <<= 1; + zap_leaf_phys(l)->l_hdr.lh_prefix_len++; + zap_leaf_phys(nl)->l_hdr.lh_prefix = + zap_leaf_phys(l)->l_hdr.lh_prefix | 1; + zap_leaf_phys(nl)->l_hdr.lh_prefix_len = + zap_leaf_phys(l)->l_hdr.lh_prefix_len; + + /* break existing hash chains */ + zap_memset(zap_leaf_phys(l)->l_hash, CHAIN_END, + 2*ZAP_LEAF_HASH_NUMENTRIES(l)); + + if (sort) + zap_leaf_phys(l)->l_hdr.lh_flags |= ZLF_ENTRIES_CDSORTED; + + /* + * Transfer entries whose hash bit 'bit' is set to nl; rehash + * the remaining entries + * + * NB: We could find entries via the hashtable instead. That + * would be O(hashents+numents) rather than O(numblks+numents), + * but this accesses memory more sequentially, and when we're + * called, the block is usually pretty full. + */ + for (i = 0; i < ZAP_LEAF_NUMCHUNKS(l); i++) { + struct zap_leaf_entry *le = ZAP_LEAF_ENTRY(l, i); + if (le->le_type != ZAP_CHUNK_ENTRY) + continue; + + if (le->le_hash & (1ULL << bit)) + zap_leaf_transfer_entry(l, i, nl); + else + (void) zap_leaf_rehash_entry(l, i); + } +} + +void +zap_leaf_stats(zap_t *zap, zap_leaf_t *l, zap_stats_t *zs) +{ + int i, n; + + n = zap_f_phys(zap)->zap_ptrtbl.zt_shift - + zap_leaf_phys(l)->l_hdr.lh_prefix_len; + n = MIN(n, ZAP_HISTOGRAM_SIZE-1); + zs->zs_leafs_with_2n_pointers[n]++; + + + n = zap_leaf_phys(l)->l_hdr.lh_nentries/5; + n = MIN(n, ZAP_HISTOGRAM_SIZE-1); + zs->zs_blocks_with_n5_entries[n]++; + + n = ((1<l_hdr.lh_nfree * (ZAP_LEAF_ARRAY_BYTES+1))*10 / + (1<zs_blocks_n_tenths_full[n]++; + + for (i = 0; i < ZAP_LEAF_HASH_NUMENTRIES(l); i++) { + int nentries = 0; + int chunk = zap_leaf_phys(l)->l_hash[i]; + + while (chunk != CHAIN_END) { + struct zap_leaf_entry *le = + ZAP_LEAF_ENTRY(l, chunk); + + n = 1 + ZAP_LEAF_ARRAY_NCHUNKS(le->le_name_numints) + + ZAP_LEAF_ARRAY_NCHUNKS(le->le_value_numints * + le->le_value_intlen); + n = MIN(n, ZAP_HISTOGRAM_SIZE-1); + zs->zs_entries_using_n_chunks[n]++; + + chunk = le->le_next; + nentries++; + } + + n = nentries; + n = MIN(n, ZAP_HISTOGRAM_SIZE-1); + zs->zs_buckets_with_n_entries[n]++; + } +} --- linux-4.4.0.orig/zfs/module/zfs/zap_micro.c +++ linux-4.4.0/zfs/module/zfs/zap_micro.c @@ -0,0 +1,1482 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _KERNEL +#include +#endif + +extern inline mzap_phys_t *zap_m_phys(zap_t *zap); + +static int mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags); + +uint64_t +zap_getflags(zap_t *zap) +{ + if (zap->zap_ismicro) + return (0); + return (zap_f_phys(zap)->zap_flags); +} + +int +zap_hashbits(zap_t *zap) +{ + if (zap_getflags(zap) & ZAP_FLAG_HASH64) + return (48); + else + return (28); +} + +uint32_t +zap_maxcd(zap_t *zap) +{ + if (zap_getflags(zap) & ZAP_FLAG_HASH64) + return ((1<<16)-1); + else + return (-1U); +} + +static uint64_t +zap_hash(zap_name_t *zn) +{ + zap_t *zap = zn->zn_zap; + uint64_t h = 0; + + if (zap_getflags(zap) & ZAP_FLAG_PRE_HASHED_KEY) { + ASSERT(zap_getflags(zap) & ZAP_FLAG_UINT64_KEY); + h = *(uint64_t *)zn->zn_key_orig; + } else { + h = zap->zap_salt; + ASSERT(h != 0); + ASSERT(zfs_crc64_table[128] == ZFS_CRC64_POLY); + + if (zap_getflags(zap) & ZAP_FLAG_UINT64_KEY) { + int i; + const uint64_t *wp = zn->zn_key_norm; + + ASSERT(zn->zn_key_intlen == 8); + for (i = 0; i < zn->zn_key_norm_numints; wp++, i++) { + int j; + uint64_t word = *wp; + + for (j = 0; j < zn->zn_key_intlen; j++) { + h = (h >> 8) ^ + zfs_crc64_table[(h ^ word) & 0xFF]; + word >>= NBBY; + } + } + } else { + int i, len; + const uint8_t *cp = zn->zn_key_norm; + + /* + * We previously stored the terminating null on + * disk, but didn't hash it, so we need to + * continue to not hash it. (The + * zn_key_*_numints includes the terminating + * null for non-binary keys.) + */ + len = zn->zn_key_norm_numints - 1; + + ASSERT(zn->zn_key_intlen == 1); + for (i = 0; i < len; cp++, i++) { + h = (h >> 8) ^ + zfs_crc64_table[(h ^ *cp) & 0xFF]; + } + } + } + /* + * Don't use all 64 bits, since we need some in the cookie for + * the collision differentiator. We MUST use the high bits, + * since those are the ones that we first pay attention to when + * chosing the bucket. + */ + h &= ~((1ULL << (64 - zap_hashbits(zap))) - 1); + + return (h); +} + +static int +zap_normalize(zap_t *zap, const char *name, char *namenorm) +{ + size_t inlen, outlen; + int err; + + ASSERT(!(zap_getflags(zap) & ZAP_FLAG_UINT64_KEY)); + + inlen = strlen(name) + 1; + outlen = ZAP_MAXNAMELEN; + + err = 0; + (void) u8_textprep_str((char *)name, &inlen, namenorm, &outlen, + zap->zap_normflags | U8_TEXTPREP_IGNORE_NULL | + U8_TEXTPREP_IGNORE_INVALID, U8_UNICODE_LATEST, &err); + + return (err); +} + +boolean_t +zap_match(zap_name_t *zn, const char *matchname) +{ + ASSERT(!(zap_getflags(zn->zn_zap) & ZAP_FLAG_UINT64_KEY)); + + if (zn->zn_matchtype == MT_FIRST) { + char norm[ZAP_MAXNAMELEN]; + + if (zap_normalize(zn->zn_zap, matchname, norm) != 0) + return (B_FALSE); + + return (strcmp(zn->zn_key_norm, norm) == 0); + } else { + /* MT_BEST or MT_EXACT */ + return (strcmp(zn->zn_key_orig, matchname) == 0); + } +} + +void +zap_name_free(zap_name_t *zn) +{ + kmem_free(zn, sizeof (zap_name_t)); +} + +zap_name_t * +zap_name_alloc(zap_t *zap, const char *key, matchtype_t mt) +{ + zap_name_t *zn = kmem_alloc(sizeof (zap_name_t), KM_SLEEP); + + zn->zn_zap = zap; + zn->zn_key_intlen = sizeof (*key); + zn->zn_key_orig = key; + zn->zn_key_orig_numints = strlen(zn->zn_key_orig) + 1; + zn->zn_matchtype = mt; + if (zap->zap_normflags) { + if (zap_normalize(zap, key, zn->zn_normbuf) != 0) { + zap_name_free(zn); + return (NULL); + } + zn->zn_key_norm = zn->zn_normbuf; + zn->zn_key_norm_numints = strlen(zn->zn_key_norm) + 1; + } else { + if (mt != MT_EXACT) { + zap_name_free(zn); + return (NULL); + } + zn->zn_key_norm = zn->zn_key_orig; + zn->zn_key_norm_numints = zn->zn_key_orig_numints; + } + + zn->zn_hash = zap_hash(zn); + return (zn); +} + +zap_name_t * +zap_name_alloc_uint64(zap_t *zap, const uint64_t *key, int numints) +{ + zap_name_t *zn = kmem_alloc(sizeof (zap_name_t), KM_SLEEP); + + ASSERT(zap->zap_normflags == 0); + zn->zn_zap = zap; + zn->zn_key_intlen = sizeof (*key); + zn->zn_key_orig = zn->zn_key_norm = key; + zn->zn_key_orig_numints = zn->zn_key_norm_numints = numints; + zn->zn_matchtype = MT_EXACT; + + zn->zn_hash = zap_hash(zn); + return (zn); +} + +static void +mzap_byteswap(mzap_phys_t *buf, size_t size) +{ + int i, max; + buf->mz_block_type = BSWAP_64(buf->mz_block_type); + buf->mz_salt = BSWAP_64(buf->mz_salt); + buf->mz_normflags = BSWAP_64(buf->mz_normflags); + max = (size / MZAP_ENT_LEN) - 1; + for (i = 0; i < max; i++) { + buf->mz_chunk[i].mze_value = + BSWAP_64(buf->mz_chunk[i].mze_value); + buf->mz_chunk[i].mze_cd = + BSWAP_32(buf->mz_chunk[i].mze_cd); + } +} + +void +zap_byteswap(void *buf, size_t size) +{ + uint64_t block_type; + + block_type = *(uint64_t *)buf; + + if (block_type == ZBT_MICRO || block_type == BSWAP_64(ZBT_MICRO)) { + /* ASSERT(magic == ZAP_LEAF_MAGIC); */ + mzap_byteswap(buf, size); + } else { + fzap_byteswap(buf, size); + } +} + +static int +mze_compare(const void *arg1, const void *arg2) +{ + const mzap_ent_t *mze1 = arg1; + const mzap_ent_t *mze2 = arg2; + + if (mze1->mze_hash > mze2->mze_hash) + return (+1); + if (mze1->mze_hash < mze2->mze_hash) + return (-1); + if (mze1->mze_cd > mze2->mze_cd) + return (+1); + if (mze1->mze_cd < mze2->mze_cd) + return (-1); + return (0); +} + +static void +mze_insert(zap_t *zap, int chunkid, uint64_t hash) +{ + mzap_ent_t *mze; + + ASSERT(zap->zap_ismicro); + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + + mze = kmem_alloc(sizeof (mzap_ent_t), KM_SLEEP); + mze->mze_chunkid = chunkid; + mze->mze_hash = hash; + mze->mze_cd = MZE_PHYS(zap, mze)->mze_cd; + ASSERT(MZE_PHYS(zap, mze)->mze_name[0] != 0); + avl_add(&zap->zap_m.zap_avl, mze); +} + +static mzap_ent_t * +mze_find(zap_name_t *zn) +{ + mzap_ent_t mze_tofind; + mzap_ent_t *mze; + avl_index_t idx; + avl_tree_t *avl = &zn->zn_zap->zap_m.zap_avl; + + ASSERT(zn->zn_zap->zap_ismicro); + ASSERT(RW_LOCK_HELD(&zn->zn_zap->zap_rwlock)); + + mze_tofind.mze_hash = zn->zn_hash; + mze_tofind.mze_cd = 0; + +again: + mze = avl_find(avl, &mze_tofind, &idx); + if (mze == NULL) + mze = avl_nearest(avl, idx, AVL_AFTER); + for (; mze && mze->mze_hash == zn->zn_hash; mze = AVL_NEXT(avl, mze)) { + ASSERT3U(mze->mze_cd, ==, MZE_PHYS(zn->zn_zap, mze)->mze_cd); + if (zap_match(zn, MZE_PHYS(zn->zn_zap, mze)->mze_name)) + return (mze); + } + if (zn->zn_matchtype == MT_BEST) { + zn->zn_matchtype = MT_FIRST; + goto again; + } + return (NULL); +} + +static uint32_t +mze_find_unused_cd(zap_t *zap, uint64_t hash) +{ + mzap_ent_t mze_tofind; + mzap_ent_t *mze; + avl_index_t idx; + avl_tree_t *avl = &zap->zap_m.zap_avl; + uint32_t cd; + + ASSERT(zap->zap_ismicro); + ASSERT(RW_LOCK_HELD(&zap->zap_rwlock)); + + mze_tofind.mze_hash = hash; + mze_tofind.mze_cd = 0; + + cd = 0; + for (mze = avl_find(avl, &mze_tofind, &idx); + mze && mze->mze_hash == hash; mze = AVL_NEXT(avl, mze)) { + if (mze->mze_cd != cd) + break; + cd++; + } + + return (cd); +} + +static void +mze_remove(zap_t *zap, mzap_ent_t *mze) +{ + ASSERT(zap->zap_ismicro); + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + + avl_remove(&zap->zap_m.zap_avl, mze); + kmem_free(mze, sizeof (mzap_ent_t)); +} + +static void +mze_destroy(zap_t *zap) +{ + mzap_ent_t *mze; + void *avlcookie = NULL; + + while ((mze = avl_destroy_nodes(&zap->zap_m.zap_avl, &avlcookie))) + kmem_free(mze, sizeof (mzap_ent_t)); + avl_destroy(&zap->zap_m.zap_avl); +} + +static zap_t * +mzap_open(objset_t *os, uint64_t obj, dmu_buf_t *db) +{ + zap_t *winner; + zap_t *zap; + int i; + + ASSERT3U(MZAP_ENT_LEN, ==, sizeof (mzap_ent_phys_t)); + + zap = kmem_zalloc(sizeof (zap_t), KM_SLEEP); + rw_init(&zap->zap_rwlock, NULL, RW_DEFAULT, NULL); + rw_enter(&zap->zap_rwlock, RW_WRITER); + zap->zap_objset = os; + zap->zap_object = obj; + zap->zap_dbuf = db; + + if (*(uint64_t *)db->db_data != ZBT_MICRO) { + mutex_init(&zap->zap_f.zap_num_entries_mtx, 0, 0, 0); + zap->zap_f.zap_block_shift = highbit64(db->db_size) - 1; + } else { + zap->zap_ismicro = TRUE; + } + + /* + * Make sure that zap_ismicro is set before we let others see + * it, because zap_lockdir() checks zap_ismicro without the lock + * held. + */ + dmu_buf_init_user(&zap->zap_dbu, zap_evict, &zap->zap_dbuf); + winner = dmu_buf_set_user(db, &zap->zap_dbu); + + if (winner != NULL) { + rw_exit(&zap->zap_rwlock); + rw_destroy(&zap->zap_rwlock); + if (!zap->zap_ismicro) + mutex_destroy(&zap->zap_f.zap_num_entries_mtx); + kmem_free(zap, sizeof (zap_t)); + return (winner); + } + + if (zap->zap_ismicro) { + zap->zap_salt = zap_m_phys(zap)->mz_salt; + zap->zap_normflags = zap_m_phys(zap)->mz_normflags; + zap->zap_m.zap_num_chunks = db->db_size / MZAP_ENT_LEN - 1; + avl_create(&zap->zap_m.zap_avl, mze_compare, + sizeof (mzap_ent_t), offsetof(mzap_ent_t, mze_node)); + + for (i = 0; i < zap->zap_m.zap_num_chunks; i++) { + mzap_ent_phys_t *mze = + &zap_m_phys(zap)->mz_chunk[i]; + if (mze->mze_name[0]) { + zap_name_t *zn; + + zap->zap_m.zap_num_entries++; + zn = zap_name_alloc(zap, mze->mze_name, + MT_EXACT); + mze_insert(zap, i, zn->zn_hash); + zap_name_free(zn); + } + } + } else { + zap->zap_salt = zap_f_phys(zap)->zap_salt; + zap->zap_normflags = zap_f_phys(zap)->zap_normflags; + + ASSERT3U(sizeof (struct zap_leaf_header), ==, + 2*ZAP_LEAF_CHUNKSIZE); + + /* + * The embedded pointer table should not overlap the + * other members. + */ + ASSERT3P(&ZAP_EMBEDDED_PTRTBL_ENT(zap, 0), >, + &zap_f_phys(zap)->zap_salt); + + /* + * The embedded pointer table should end at the end of + * the block + */ + ASSERT3U((uintptr_t)&ZAP_EMBEDDED_PTRTBL_ENT(zap, + 1<zap_dbuf->db_size); + } + rw_exit(&zap->zap_rwlock); + return (zap); +} + +int +zap_lockdir(objset_t *os, uint64_t obj, dmu_tx_t *tx, + krw_t lti, boolean_t fatreader, boolean_t adding, zap_t **zapp) +{ + dmu_object_info_t doi; + zap_t *zap; + dmu_buf_t *db; + krw_t lt; + int err; + + *zapp = NULL; + + err = dmu_buf_hold(os, obj, 0, NULL, &db, DMU_READ_NO_PREFETCH); + if (err) + return (err); + + dmu_object_info_from_db(db, &doi); + if (DMU_OT_BYTESWAP(doi.doi_type) != DMU_BSWAP_ZAP) + return (SET_ERROR(EINVAL)); + + zap = dmu_buf_get_user(db); + if (zap == NULL) + zap = mzap_open(os, obj, db); + + /* + * We're checking zap_ismicro without the lock held, in order to + * tell what type of lock we want. Once we have some sort of + * lock, see if it really is the right type. In practice this + * can only be different if it was upgraded from micro to fat, + * and micro wanted WRITER but fat only needs READER. + */ + lt = (!zap->zap_ismicro && fatreader) ? RW_READER : lti; + rw_enter(&zap->zap_rwlock, lt); + if (lt != ((!zap->zap_ismicro && fatreader) ? RW_READER : lti)) { + /* it was upgraded, now we only need reader */ + ASSERT(lt == RW_WRITER); + ASSERT(RW_READER == + ((!zap->zap_ismicro && fatreader) ? RW_READER : lti)); + rw_downgrade(&zap->zap_rwlock); + lt = RW_READER; + } + + zap->zap_objset = os; + + if (lt == RW_WRITER) + dmu_buf_will_dirty(db, tx); + + ASSERT3P(zap->zap_dbuf, ==, db); + + ASSERT(!zap->zap_ismicro || + zap->zap_m.zap_num_entries <= zap->zap_m.zap_num_chunks); + if (zap->zap_ismicro && tx && adding && + zap->zap_m.zap_num_entries == zap->zap_m.zap_num_chunks) { + uint64_t newsz = db->db_size + SPA_MINBLOCKSIZE; + if (newsz > MZAP_MAX_BLKSZ) { + dprintf("upgrading obj %llu: num_entries=%u\n", + obj, zap->zap_m.zap_num_entries); + *zapp = zap; + return (mzap_upgrade(zapp, tx, 0)); + } + err = dmu_object_set_blocksize(os, obj, newsz, 0, tx); + ASSERT0(err); + zap->zap_m.zap_num_chunks = + db->db_size / MZAP_ENT_LEN - 1; + } + + *zapp = zap; + return (0); +} + +void +zap_unlockdir(zap_t *zap) +{ + rw_exit(&zap->zap_rwlock); + dmu_buf_rele(zap->zap_dbuf, NULL); +} + +static int +mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags) +{ + mzap_phys_t *mzp; + int i, sz, nchunks; + int err = 0; + zap_t *zap = *zapp; + + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + + sz = zap->zap_dbuf->db_size; + mzp = zio_buf_alloc(sz); + bcopy(zap->zap_dbuf->db_data, mzp, sz); + nchunks = zap->zap_m.zap_num_chunks; + + if (!flags) { + err = dmu_object_set_blocksize(zap->zap_objset, zap->zap_object, + 1ULL << fzap_default_block_shift, 0, tx); + if (err) { + zio_buf_free(mzp, sz); + return (err); + } + } + + dprintf("upgrading obj=%llu with %u chunks\n", + zap->zap_object, nchunks); + /* XXX destroy the avl later, so we can use the stored hash value */ + mze_destroy(zap); + + fzap_upgrade(zap, tx, flags); + + for (i = 0; i < nchunks; i++) { + mzap_ent_phys_t *mze = &mzp->mz_chunk[i]; + zap_name_t *zn; + if (mze->mze_name[0] == 0) + continue; + dprintf("adding %s=%llu\n", + mze->mze_name, mze->mze_value); + zn = zap_name_alloc(zap, mze->mze_name, MT_EXACT); + err = fzap_add_cd(zn, 8, 1, &mze->mze_value, mze->mze_cd, tx); + zap = zn->zn_zap; /* fzap_add_cd() may change zap */ + zap_name_free(zn); + if (err) + break; + } + zio_buf_free(mzp, sz); + *zapp = zap; + return (err); +} + +void +mzap_create_impl(objset_t *os, uint64_t obj, int normflags, zap_flags_t flags, + dmu_tx_t *tx) +{ + dmu_buf_t *db; + mzap_phys_t *zp; + + VERIFY(0 == dmu_buf_hold(os, obj, 0, FTAG, &db, DMU_READ_NO_PREFETCH)); + +#ifdef ZFS_DEBUG + { + dmu_object_info_t doi; + dmu_object_info_from_db(db, &doi); + ASSERT3U(DMU_OT_BYTESWAP(doi.doi_type), ==, DMU_BSWAP_ZAP); + } +#endif + + dmu_buf_will_dirty(db, tx); + zp = db->db_data; + zp->mz_block_type = ZBT_MICRO; + zp->mz_salt = ((uintptr_t)db ^ (uintptr_t)tx ^ (obj << 1)) | 1ULL; + zp->mz_normflags = normflags; + dmu_buf_rele(db, FTAG); + + if (flags != 0) { + zap_t *zap; + /* Only fat zap supports flags; upgrade immediately. */ + VERIFY(0 == zap_lockdir(os, obj, tx, RW_WRITER, + B_FALSE, B_FALSE, &zap)); + VERIFY3U(0, ==, mzap_upgrade(&zap, tx, flags)); + zap_unlockdir(zap); + } +} + +int +zap_create_claim(objset_t *os, uint64_t obj, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + return (zap_create_claim_norm(os, obj, + 0, ot, bonustype, bonuslen, tx)); +} + +int +zap_create_claim_norm(objset_t *os, uint64_t obj, int normflags, + dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + int err; + + err = dmu_object_claim(os, obj, ot, 0, bonustype, bonuslen, tx); + if (err != 0) + return (err); + mzap_create_impl(os, obj, normflags, 0, tx); + return (0); +} + +uint64_t +zap_create(objset_t *os, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + return (zap_create_norm(os, 0, ot, bonustype, bonuslen, tx)); +} + +uint64_t +zap_create_norm(objset_t *os, int normflags, dmu_object_type_t ot, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + uint64_t obj = dmu_object_alloc(os, ot, 0, bonustype, bonuslen, tx); + + mzap_create_impl(os, obj, normflags, 0, tx); + return (obj); +} + +uint64_t +zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, + dmu_object_type_t ot, int leaf_blockshift, int indirect_blockshift, + dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) +{ + uint64_t obj = dmu_object_alloc(os, ot, 0, bonustype, bonuslen, tx); + + ASSERT(leaf_blockshift >= SPA_MINBLOCKSHIFT && + leaf_blockshift <= SPA_OLD_MAXBLOCKSHIFT && + indirect_blockshift >= SPA_MINBLOCKSHIFT && + indirect_blockshift <= SPA_OLD_MAXBLOCKSHIFT); + + VERIFY(dmu_object_set_blocksize(os, obj, + 1ULL << leaf_blockshift, indirect_blockshift, tx) == 0); + + mzap_create_impl(os, obj, normflags, flags, tx); + return (obj); +} + +int +zap_destroy(objset_t *os, uint64_t zapobj, dmu_tx_t *tx) +{ + /* + * dmu_object_free will free the object number and free the + * data. Freeing the data will cause our pageout function to be + * called, which will destroy our data (zap_leaf_t's and zap_t). + */ + + return (dmu_object_free(os, zapobj, tx)); +} + +void +zap_evict(void *dbu) +{ + zap_t *zap = dbu; + + rw_destroy(&zap->zap_rwlock); + + if (zap->zap_ismicro) + mze_destroy(zap); + else + mutex_destroy(&zap->zap_f.zap_num_entries_mtx); + + kmem_free(zap, sizeof (zap_t)); +} + +int +zap_count(objset_t *os, uint64_t zapobj, uint64_t *count) +{ + zap_t *zap; + int err; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + if (!zap->zap_ismicro) { + err = fzap_count(zap, count); + } else { + *count = zap->zap_m.zap_num_entries; + } + zap_unlockdir(zap); + return (err); +} + +/* + * zn may be NULL; if not specified, it will be computed if needed. + * See also the comment above zap_entry_normalization_conflict(). + */ +static boolean_t +mzap_normalization_conflict(zap_t *zap, zap_name_t *zn, mzap_ent_t *mze) +{ + mzap_ent_t *other; + int direction = AVL_BEFORE; + boolean_t allocdzn = B_FALSE; + + if (zap->zap_normflags == 0) + return (B_FALSE); + +again: + for (other = avl_walk(&zap->zap_m.zap_avl, mze, direction); + other && other->mze_hash == mze->mze_hash; + other = avl_walk(&zap->zap_m.zap_avl, other, direction)) { + + if (zn == NULL) { + zn = zap_name_alloc(zap, MZE_PHYS(zap, mze)->mze_name, + MT_FIRST); + allocdzn = B_TRUE; + } + if (zap_match(zn, MZE_PHYS(zap, other)->mze_name)) { + if (allocdzn) + zap_name_free(zn); + return (B_TRUE); + } + } + + if (direction == AVL_BEFORE) { + direction = AVL_AFTER; + goto again; + } + + if (allocdzn) + zap_name_free(zn); + return (B_FALSE); +} + +/* + * Routines for manipulating attributes. + */ + +int +zap_lookup(objset_t *os, uint64_t zapobj, const char *name, + uint64_t integer_size, uint64_t num_integers, void *buf) +{ + return (zap_lookup_norm(os, zapobj, name, integer_size, + num_integers, buf, MT_EXACT, NULL, 0, NULL)); +} + +int +zap_lookup_norm(objset_t *os, uint64_t zapobj, const char *name, + uint64_t integer_size, uint64_t num_integers, void *buf, + matchtype_t mt, char *realname, int rn_len, + boolean_t *ncp) +{ + zap_t *zap; + int err; + mzap_ent_t *mze; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, name, mt); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + + if (!zap->zap_ismicro) { + err = fzap_lookup(zn, integer_size, num_integers, buf, + realname, rn_len, ncp); + } else { + mze = mze_find(zn); + if (mze == NULL) { + err = SET_ERROR(ENOENT); + } else { + if (num_integers < 1) { + err = SET_ERROR(EOVERFLOW); + } else if (integer_size != 8) { + err = SET_ERROR(EINVAL); + } else { + *(uint64_t *)buf = + MZE_PHYS(zap, mze)->mze_value; + (void) strlcpy(realname, + MZE_PHYS(zap, mze)->mze_name, rn_len); + if (ncp) { + *ncp = mzap_normalization_conflict(zap, + zn, mze); + } + } + } + } + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_prefetch(objset_t *os, uint64_t zapobj, const char *name) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, name, MT_EXACT); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + + fzap_prefetch(zn); + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + + fzap_prefetch(zn); + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_lookup_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, uint64_t integer_size, uint64_t num_integers, void *buf) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + + err = fzap_lookup(zn, integer_size, num_integers, buf, + NULL, 0, NULL); + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_contains(objset_t *os, uint64_t zapobj, const char *name) +{ + int err = zap_lookup_norm(os, zapobj, name, 0, + 0, NULL, MT_EXACT, NULL, 0, NULL); + if (err == EOVERFLOW || err == EINVAL) + err = 0; /* found, but skipped reading the value */ + return (err); +} + +int +zap_length(objset_t *os, uint64_t zapobj, const char *name, + uint64_t *integer_size, uint64_t *num_integers) +{ + zap_t *zap; + int err; + mzap_ent_t *mze; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, name, MT_EXACT); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + if (!zap->zap_ismicro) { + err = fzap_length(zn, integer_size, num_integers); + } else { + mze = mze_find(zn); + if (mze == NULL) { + err = SET_ERROR(ENOENT); + } else { + if (integer_size) + *integer_size = 8; + if (num_integers) + *num_integers = 1; + } + } + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_length_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, uint64_t *integer_size, uint64_t *num_integers) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + err = fzap_length(zn, integer_size, num_integers); + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +static void +mzap_addent(zap_name_t *zn, uint64_t value) +{ + int i; + zap_t *zap = zn->zn_zap; + int start = zap->zap_m.zap_alloc_next; + uint32_t cd; + + ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); + +#ifdef ZFS_DEBUG + for (i = 0; i < zap->zap_m.zap_num_chunks; i++) { + ASSERTV(mzap_ent_phys_t *mze); + ASSERT(mze = &zap_m_phys(zap)->mz_chunk[i]); + ASSERT(strcmp(zn->zn_key_orig, mze->mze_name) != 0); + } +#endif + + cd = mze_find_unused_cd(zap, zn->zn_hash); + /* given the limited size of the microzap, this can't happen */ + ASSERT(cd < zap_maxcd(zap)); + +again: + for (i = start; i < zap->zap_m.zap_num_chunks; i++) { + mzap_ent_phys_t *mze = &zap_m_phys(zap)->mz_chunk[i]; + if (mze->mze_name[0] == 0) { + mze->mze_value = value; + mze->mze_cd = cd; + (void) strcpy(mze->mze_name, zn->zn_key_orig); + zap->zap_m.zap_num_entries++; + zap->zap_m.zap_alloc_next = i+1; + if (zap->zap_m.zap_alloc_next == + zap->zap_m.zap_num_chunks) + zap->zap_m.zap_alloc_next = 0; + mze_insert(zap, i, zn->zn_hash); + return; + } + } + if (start != 0) { + start = 0; + goto again; + } + cmn_err(CE_PANIC, "out of entries!"); +} + +int +zap_add(objset_t *os, uint64_t zapobj, const char *key, + int integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx) +{ + zap_t *zap; + int err; + mzap_ent_t *mze; + const uint64_t *intval = val; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, TRUE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, key, MT_EXACT); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + if (!zap->zap_ismicro) { + err = fzap_add(zn, integer_size, num_integers, val, tx); + zap = zn->zn_zap; /* fzap_add() may change zap */ + } else if (integer_size != 8 || num_integers != 1 || + strlen(key) >= MZAP_NAME_LEN) { + err = mzap_upgrade(&zn->zn_zap, tx, 0); + if (err == 0) + err = fzap_add(zn, integer_size, num_integers, val, tx); + zap = zn->zn_zap; /* fzap_add() may change zap */ + } else { + mze = mze_find(zn); + if (mze != NULL) { + err = SET_ERROR(EEXIST); + } else { + mzap_addent(zn, *intval); + } + } + ASSERT(zap == zn->zn_zap); + zap_name_free(zn); + if (zap != NULL) /* may be NULL if fzap_add() failed */ + zap_unlockdir(zap); + return (err); +} + +int +zap_add_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, int integer_size, uint64_t num_integers, + const void *val, dmu_tx_t *tx) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, TRUE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + err = fzap_add(zn, integer_size, num_integers, val, tx); + zap = zn->zn_zap; /* fzap_add() may change zap */ + zap_name_free(zn); + if (zap != NULL) /* may be NULL if fzap_add() failed */ + zap_unlockdir(zap); + return (err); +} + +int +zap_update(objset_t *os, uint64_t zapobj, const char *name, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx) +{ + zap_t *zap; + mzap_ent_t *mze; + const uint64_t *intval = val; + zap_name_t *zn; + int err; + +#ifdef ZFS_DEBUG + uint64_t oldval; + + /* + * If there is an old value, it shouldn't change across the + * lockdir (eg, due to bprewrite's xlation). + */ + if (integer_size == 8 && num_integers == 1) + (void) zap_lookup(os, zapobj, name, 8, 1, &oldval); +#endif + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, TRUE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, name, MT_EXACT); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + if (!zap->zap_ismicro) { + err = fzap_update(zn, integer_size, num_integers, val, tx); + zap = zn->zn_zap; /* fzap_update() may change zap */ + } else if (integer_size != 8 || num_integers != 1 || + strlen(name) >= MZAP_NAME_LEN) { + dprintf("upgrading obj %llu: intsz=%u numint=%llu name=%s\n", + zapobj, integer_size, num_integers, name); + err = mzap_upgrade(&zn->zn_zap, tx, 0); + if (err == 0) + err = fzap_update(zn, integer_size, num_integers, + val, tx); + zap = zn->zn_zap; /* fzap_update() may change zap */ + } else { + mze = mze_find(zn); + if (mze != NULL) { + ASSERT3U(MZE_PHYS(zap, mze)->mze_value, ==, oldval); + MZE_PHYS(zap, mze)->mze_value = *intval; + } else { + mzap_addent(zn, *intval); + } + } + ASSERT(zap == zn->zn_zap); + zap_name_free(zn); + if (zap != NULL) /* may be NULL if fzap_upgrade() failed */ + zap_unlockdir(zap); + return (err); +} + +int +zap_update_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, + int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx) +{ + zap_t *zap; + zap_name_t *zn; + int err; + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, TRUE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + err = fzap_update(zn, integer_size, num_integers, val, tx); + zap = zn->zn_zap; /* fzap_update() may change zap */ + zap_name_free(zn); + if (zap != NULL) /* may be NULL if fzap_upgrade() failed */ + zap_unlockdir(zap); + return (err); +} + +int +zap_remove(objset_t *os, uint64_t zapobj, const char *name, dmu_tx_t *tx) +{ + return (zap_remove_norm(os, zapobj, name, MT_EXACT, tx)); +} + +int +zap_remove_norm(objset_t *os, uint64_t zapobj, const char *name, + matchtype_t mt, dmu_tx_t *tx) +{ + zap_t *zap; + int err; + mzap_ent_t *mze; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc(zap, name, mt); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + if (!zap->zap_ismicro) { + err = fzap_remove(zn, tx); + } else { + mze = mze_find(zn); + if (mze == NULL) { + err = SET_ERROR(ENOENT); + } else { + zap->zap_m.zap_num_entries--; + bzero(&zap_m_phys(zap)->mz_chunk[mze->mze_chunkid], + sizeof (mzap_ent_phys_t)); + mze_remove(zap, mze); + } + } + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +int +zap_remove_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, + int key_numints, dmu_tx_t *tx) +{ + zap_t *zap; + int err; + zap_name_t *zn; + + err = zap_lockdir(os, zapobj, tx, RW_WRITER, TRUE, FALSE, &zap); + if (err) + return (err); + zn = zap_name_alloc_uint64(zap, key, key_numints); + if (zn == NULL) { + zap_unlockdir(zap); + return (SET_ERROR(ENOTSUP)); + } + err = fzap_remove(zn, tx); + zap_name_free(zn); + zap_unlockdir(zap); + return (err); +} + +/* + * Routines for iterating over the attributes. + */ + +void +zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *os, uint64_t zapobj, + uint64_t serialized) +{ + zc->zc_objset = os; + zc->zc_zap = NULL; + zc->zc_leaf = NULL; + zc->zc_zapobj = zapobj; + zc->zc_serialized = serialized; + zc->zc_hash = 0; + zc->zc_cd = 0; +} + +void +zap_cursor_init(zap_cursor_t *zc, objset_t *os, uint64_t zapobj) +{ + zap_cursor_init_serialized(zc, os, zapobj, 0); +} + +void +zap_cursor_fini(zap_cursor_t *zc) +{ + if (zc->zc_zap) { + rw_enter(&zc->zc_zap->zap_rwlock, RW_READER); + zap_unlockdir(zc->zc_zap); + zc->zc_zap = NULL; + } + if (zc->zc_leaf) { + rw_enter(&zc->zc_leaf->l_rwlock, RW_READER); + zap_put_leaf(zc->zc_leaf); + zc->zc_leaf = NULL; + } + zc->zc_objset = NULL; +} + +uint64_t +zap_cursor_serialize(zap_cursor_t *zc) +{ + if (zc->zc_hash == -1ULL) + return (-1ULL); + if (zc->zc_zap == NULL) + return (zc->zc_serialized); + ASSERT((zc->zc_hash & zap_maxcd(zc->zc_zap)) == 0); + ASSERT(zc->zc_cd < zap_maxcd(zc->zc_zap)); + + /* + * We want to keep the high 32 bits of the cursor zero if we can, so + * that 32-bit programs can access this. So usually use a small + * (28-bit) hash value so we can fit 4 bits of cd into the low 32-bits + * of the cursor. + * + * [ collision differentiator | zap_hashbits()-bit hash value ] + */ + return ((zc->zc_hash >> (64 - zap_hashbits(zc->zc_zap))) | + ((uint64_t)zc->zc_cd << zap_hashbits(zc->zc_zap))); +} + +int +zap_cursor_retrieve(zap_cursor_t *zc, zap_attribute_t *za) +{ + int err; + avl_index_t idx; + mzap_ent_t mze_tofind; + mzap_ent_t *mze; + + if (zc->zc_hash == -1ULL) + return (SET_ERROR(ENOENT)); + + if (zc->zc_zap == NULL) { + int hb; + err = zap_lockdir(zc->zc_objset, zc->zc_zapobj, NULL, + RW_READER, TRUE, FALSE, &zc->zc_zap); + if (err) + return (err); + + /* + * To support zap_cursor_init_serialized, advance, retrieve, + * we must add to the existing zc_cd, which may already + * be 1 due to the zap_cursor_advance. + */ + ASSERT(zc->zc_hash == 0); + hb = zap_hashbits(zc->zc_zap); + zc->zc_hash = zc->zc_serialized << (64 - hb); + zc->zc_cd += zc->zc_serialized >> hb; + if (zc->zc_cd >= zap_maxcd(zc->zc_zap)) /* corrupt serialized */ + zc->zc_cd = 0; + } else { + rw_enter(&zc->zc_zap->zap_rwlock, RW_READER); + } + if (!zc->zc_zap->zap_ismicro) { + err = fzap_cursor_retrieve(zc->zc_zap, zc, za); + } else { + mze_tofind.mze_hash = zc->zc_hash; + mze_tofind.mze_cd = zc->zc_cd; + + mze = avl_find(&zc->zc_zap->zap_m.zap_avl, &mze_tofind, &idx); + if (mze == NULL) { + mze = avl_nearest(&zc->zc_zap->zap_m.zap_avl, + idx, AVL_AFTER); + } + if (mze) { + mzap_ent_phys_t *mzep = MZE_PHYS(zc->zc_zap, mze); + ASSERT3U(mze->mze_cd, ==, mzep->mze_cd); + za->za_normalization_conflict = + mzap_normalization_conflict(zc->zc_zap, NULL, mze); + za->za_integer_length = 8; + za->za_num_integers = 1; + za->za_first_integer = mzep->mze_value; + (void) strcpy(za->za_name, mzep->mze_name); + zc->zc_hash = mze->mze_hash; + zc->zc_cd = mze->mze_cd; + err = 0; + } else { + zc->zc_hash = -1ULL; + err = SET_ERROR(ENOENT); + } + } + rw_exit(&zc->zc_zap->zap_rwlock); + return (err); +} + +void +zap_cursor_advance(zap_cursor_t *zc) +{ + if (zc->zc_hash == -1ULL) + return; + zc->zc_cd++; +} + +int +zap_get_stats(objset_t *os, uint64_t zapobj, zap_stats_t *zs) +{ + int err; + zap_t *zap; + + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + + bzero(zs, sizeof (zap_stats_t)); + + if (zap->zap_ismicro) { + zs->zs_blocksize = zap->zap_dbuf->db_size; + zs->zs_num_entries = zap->zap_m.zap_num_entries; + zs->zs_num_blocks = 1; + } else { + fzap_get_stats(zap, zs); + } + zap_unlockdir(zap); + return (0); +} + +int +zap_count_write(objset_t *os, uint64_t zapobj, const char *name, int add, + uint64_t *towrite, uint64_t *tooverwrite) +{ + zap_t *zap; + int err = 0; + + /* + * Since, we don't have a name, we cannot figure out which blocks will + * be affected in this operation. So, account for the worst case : + * - 3 blocks overwritten: target leaf, ptrtbl block, header block + * - 4 new blocks written if adding: + * - 2 blocks for possibly split leaves, + * - 2 grown ptrtbl blocks + * + * This also accomodates the case where an add operation to a fairly + * large microzap results in a promotion to fatzap. + */ + if (name == NULL) { + *towrite += (3 + (add ? 4 : 0)) * SPA_OLD_MAXBLOCKSIZE; + return (err); + } + + /* + * We lock the zap with adding == FALSE. Because, if we pass + * the actual value of add, it could trigger a mzap_upgrade(). + * At present we are just evaluating the possibility of this operation + * and hence we donot want to trigger an upgrade. + */ + err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap); + if (err) + return (err); + + if (!zap->zap_ismicro) { + zap_name_t *zn = zap_name_alloc(zap, name, MT_EXACT); + if (zn) { + err = fzap_count_write(zn, add, towrite, + tooverwrite); + zap_name_free(zn); + } else { + /* + * We treat this case as similar to (name == NULL) + */ + *towrite += (3 + (add ? 4 : 0)) * SPA_OLD_MAXBLOCKSIZE; + } + } else { + /* + * We are here if (name != NULL) and this is a micro-zap. + * We account for the header block depending on whether it + * is freeable. + * + * Incase of an add-operation it is hard to find out + * if this add will promote this microzap to fatzap. + * Hence, we consider the worst case and account for the + * blocks assuming this microzap would be promoted to a + * fatzap. + * + * 1 block overwritten : header block + * 4 new blocks written : 2 new split leaf, 2 grown + * ptrtbl blocks + */ + if (dmu_buf_freeable(zap->zap_dbuf)) + *tooverwrite += MZAP_MAX_BLKSZ; + else + *towrite += MZAP_MAX_BLKSZ; + + if (add) { + *towrite += 4 * MZAP_MAX_BLKSZ; + } + } + + zap_unlockdir(zap); + return (err); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zap_create); +EXPORT_SYMBOL(zap_create_norm); +EXPORT_SYMBOL(zap_create_flags); +EXPORT_SYMBOL(zap_create_claim); +EXPORT_SYMBOL(zap_create_claim_norm); +EXPORT_SYMBOL(zap_destroy); +EXPORT_SYMBOL(zap_lookup); +EXPORT_SYMBOL(zap_lookup_norm); +EXPORT_SYMBOL(zap_lookup_uint64); +EXPORT_SYMBOL(zap_contains); +EXPORT_SYMBOL(zap_prefetch); +EXPORT_SYMBOL(zap_prefetch_uint64); +EXPORT_SYMBOL(zap_count_write); +EXPORT_SYMBOL(zap_add); +EXPORT_SYMBOL(zap_add_uint64); +EXPORT_SYMBOL(zap_update); +EXPORT_SYMBOL(zap_update_uint64); +EXPORT_SYMBOL(zap_length); +EXPORT_SYMBOL(zap_length_uint64); +EXPORT_SYMBOL(zap_remove); +EXPORT_SYMBOL(zap_remove_norm); +EXPORT_SYMBOL(zap_remove_uint64); +EXPORT_SYMBOL(zap_count); +EXPORT_SYMBOL(zap_value_search); +EXPORT_SYMBOL(zap_join); +EXPORT_SYMBOL(zap_join_increment); +EXPORT_SYMBOL(zap_add_int); +EXPORT_SYMBOL(zap_remove_int); +EXPORT_SYMBOL(zap_lookup_int); +EXPORT_SYMBOL(zap_increment_int); +EXPORT_SYMBOL(zap_add_int_key); +EXPORT_SYMBOL(zap_lookup_int_key); +EXPORT_SYMBOL(zap_increment); +EXPORT_SYMBOL(zap_cursor_init); +EXPORT_SYMBOL(zap_cursor_fini); +EXPORT_SYMBOL(zap_cursor_retrieve); +EXPORT_SYMBOL(zap_cursor_advance); +EXPORT_SYMBOL(zap_cursor_serialize); +EXPORT_SYMBOL(zap_cursor_init_serialized); +EXPORT_SYMBOL(zap_get_stats); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfeature.c +++ linux-4.4.0/zfs/module/zfs/zfeature.c @@ -0,0 +1,512 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include "zfeature_common.h" +#include + +/* + * ZFS Feature Flags + * ----------------- + * + * ZFS feature flags are used to provide fine-grained versioning to the ZFS + * on-disk format. Once enabled on a pool feature flags replace the old + * spa_version() number. + * + * Each new on-disk format change will be given a uniquely identifying string + * guid rather than a version number. This avoids the problem of different + * organizations creating new on-disk formats with the same version number. To + * keep feature guids unique they should consist of the reverse dns name of the + * organization which implemented the feature and a short name for the feature, + * separated by a colon (e.g. com.delphix:async_destroy). + * + * Reference Counts + * ---------------- + * + * Within each pool features can be in one of three states: disabled, enabled, + * or active. These states are differentiated by a reference count stored on + * disk for each feature: + * + * 1) If there is no reference count stored on disk the feature is disabled. + * 2) If the reference count is 0 a system administrator has enabled the + * feature, but the feature has not been used yet, so no on-disk + * format changes have been made. + * 3) If the reference count is greater than 0 the feature is active. + * The format changes required by the feature are currently on disk. + * Note that if the feature's format changes are reversed the feature + * may choose to set its reference count back to 0. + * + * Feature flags makes no differentiation between non-zero reference counts + * for an active feature (e.g. a reference count of 1 means the same thing as a + * reference count of 27834721), but feature implementations may choose to use + * the reference count to store meaningful information. For example, a new RAID + * implementation might set the reference count to the number of vdevs using + * it. If all those disks are removed from the pool the feature goes back to + * having a reference count of 0. + * + * It is the responsibility of the individual features to maintain a non-zero + * reference count as long as the feature's format changes are present on disk. + * + * Dependencies + * ------------ + * + * Each feature may depend on other features. The only effect of this + * relationship is that when a feature is enabled all of its dependencies are + * automatically enabled as well. Any future work to support disabling of + * features would need to ensure that features cannot be disabled if other + * enabled features depend on them. + * + * On-disk Format + * -------------- + * + * When feature flags are enabled spa_version() is set to SPA_VERSION_FEATURES + * (5000). In order for this to work the pool is automatically upgraded to + * SPA_VERSION_BEFORE_FEATURES (28) first, so all pre-feature flags on disk + * format changes will be in use. + * + * Information about features is stored in 3 ZAP objects in the pool's MOS. + * These objects are linked to by the following names in the pool directory + * object: + * + * 1) features_for_read: feature guid -> reference count + * Features needed to open the pool for reading. + * 2) features_for_write: feature guid -> reference count + * Features needed to open the pool for writing. + * 3) feature_descriptions: feature guid -> descriptive string + * A human readable string. + * + * All enabled features appear in either features_for_read or + * features_for_write, but not both. + * + * To open a pool in read-only mode only the features listed in + * features_for_read need to be supported. + * + * To open the pool in read-write mode features in both features_for_read and + * features_for_write need to be supported. + * + * Some features may be required to read the ZAP objects containing feature + * information. To allow software to check for compatibility with these features + * before the pool is opened their names must be stored in the label in a + * new "features_for_read" entry (note that features that are only required + * to write to a pool never need to be stored in the label since the + * features_for_write ZAP object can be read before the pool is written to). + * To save space in the label features must be explicitly marked as needing to + * be written to the label. Also, reference counts are not stored in the label, + * instead any feature whose reference count drops to 0 is removed from the + * label. + * + * Adding New Features + * ------------------- + * + * Features must be registered in zpool_feature_init() function in + * zfeature_common.c using the zfeature_register() function. This function + * has arguments to specify if the feature should be stored in the + * features_for_read or features_for_write ZAP object and if it needs to be + * written to the label when active. + * + * Once a feature is registered it will appear as a "feature@" + * property which can be set by an administrator. Feature implementors should + * use the spa_feature_is_enabled() and spa_feature_is_active() functions to + * query the state of a feature and the spa_feature_incr() and + * spa_feature_decr() functions to change an enabled feature's reference count. + * Reference counts may only be updated in the syncing context. + * + * Features may not perform enable-time initialization. Instead, any such + * initialization should occur when the feature is first used. This design + * enforces that on-disk changes be made only when features are used. Code + * should only check if a feature is enabled using spa_feature_is_enabled(), + * not by relying on any feature specific metadata existing. If a feature is + * enabled, but the feature's metadata is not on disk yet then it should be + * created as needed. + * + * As an example, consider the com.delphix:async_destroy feature. This feature + * relies on the existence of a bptree in the MOS that store blocks for + * asynchronous freeing. This bptree is not created when async_destroy is + * enabled. Instead, when a dataset is destroyed spa_feature_is_enabled() is + * called to check if async_destroy is enabled. If it is and the bptree object + * does not exist yet, the bptree object is created as part of the dataset + * destroy and async_destroy's reference count is incremented to indicate it + * has made an on-disk format change. Later, after the destroyed dataset's + * blocks have all been asynchronously freed there is no longer any use for the + * bptree object, so it is destroyed and async_destroy's reference count is + * decremented back to 0 to indicate that it has undone its on-disk format + * changes. + */ + +typedef enum { + FEATURE_ACTION_INCR, + FEATURE_ACTION_DECR, +} feature_action_t; + +/* + * Checks that the active features in the pool are supported by + * this software. Adds each unsupported feature (name -> description) to + * the supplied nvlist. + */ +boolean_t +spa_features_check(spa_t *spa, boolean_t for_write, + nvlist_t *unsup_feat, nvlist_t *enabled_feat) +{ + objset_t *os = spa->spa_meta_objset; + boolean_t supported; + zap_cursor_t *zc; + zap_attribute_t *za; + uint64_t obj = for_write ? + spa->spa_feat_for_write_obj : spa->spa_feat_for_read_obj; + char *buf; + + zc = kmem_alloc(sizeof (zap_cursor_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + buf = kmem_alloc(MAXPATHLEN, KM_SLEEP); + + supported = B_TRUE; + for (zap_cursor_init(zc, os, obj); + zap_cursor_retrieve(zc, za) == 0; + zap_cursor_advance(zc)) { + ASSERT(za->za_integer_length == sizeof (uint64_t) && + za->za_num_integers == 1); + + if (NULL != enabled_feat) { + fnvlist_add_uint64(enabled_feat, za->za_name, + za->za_first_integer); + } + + if (za->za_first_integer != 0 && + !zfeature_is_supported(za->za_name)) { + supported = B_FALSE; + + if (NULL != unsup_feat) { + char *desc = ""; + + if (zap_lookup(os, spa->spa_feat_desc_obj, + za->za_name, 1, MAXPATHLEN, buf) == 0) + desc = buf; + + VERIFY(nvlist_add_string(unsup_feat, + za->za_name, desc) == 0); + } + } + } + zap_cursor_fini(zc); + + kmem_free(buf, MAXPATHLEN); + kmem_free(za, sizeof (zap_attribute_t)); + kmem_free(zc, sizeof (zap_cursor_t)); + + return (supported); +} + +/* + * Use an in-memory cache of feature refcounts for quick retrieval. + * + * Note: well-designed features will not need to use this; they should + * use spa_feature_is_enabled() and spa_feature_is_active() instead. + * However, this is non-static for zdb, zhack, and spa_add_feature_stats(). + */ +int +feature_get_refcount(spa_t *spa, zfeature_info_t *feature, uint64_t *res) +{ + ASSERT(VALID_FEATURE_FID(feature->fi_feature)); + if (spa->spa_feat_refcount_cache[feature->fi_feature] == + SPA_FEATURE_DISABLED) { + return (SET_ERROR(ENOTSUP)); + } + *res = spa->spa_feat_refcount_cache[feature->fi_feature]; + return (0); +} + +/* + * Note: well-designed features will not need to use this; they should + * use spa_feature_is_enabled() and spa_feature_is_active() instead. + * However, this is non-static for zdb and zhack. + */ +int +feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature, + uint64_t *res) +{ + int err; + uint64_t refcount; + uint64_t zapobj = feature->fi_can_readonly ? + spa->spa_feat_for_write_obj : spa->spa_feat_for_read_obj; + + /* + * If the pool is currently being created, the feature objects may not + * have been allocated yet. Act as though all features are disabled. + */ + if (zapobj == 0) + return (SET_ERROR(ENOTSUP)); + + err = zap_lookup(spa->spa_meta_objset, zapobj, + feature->fi_guid, sizeof (uint64_t), 1, &refcount); + if (err != 0) { + if (err == ENOENT) + return (SET_ERROR(ENOTSUP)); + else + return (err); + } + *res = refcount; + return (0); +} + + +static int +feature_get_enabled_txg(spa_t *spa, zfeature_info_t *feature, uint64_t *res) { + ASSERTV(uint64_t enabled_txg_obj = spa->spa_feat_enabled_txg_obj); + + ASSERT(zfeature_depends_on(feature->fi_feature, + SPA_FEATURE_ENABLED_TXG)); + + if (!spa_feature_is_enabled(spa, feature->fi_feature)) { + return (SET_ERROR(ENOTSUP)); + } + + ASSERT(enabled_txg_obj != 0); + + VERIFY0(zap_lookup(spa->spa_meta_objset, spa->spa_feat_enabled_txg_obj, + feature->fi_guid, sizeof (uint64_t), 1, res)); + + return (0); +} + +/* + * This function is non-static for zhack; it should otherwise not be used + * outside this file. + */ +void +feature_sync(spa_t *spa, zfeature_info_t *feature, uint64_t refcount, + dmu_tx_t *tx) +{ + uint64_t zapobj; + + ASSERT(VALID_FEATURE_OR_NONE(feature->fi_feature)); + zapobj = feature->fi_can_readonly ? + spa->spa_feat_for_write_obj : spa->spa_feat_for_read_obj; + VERIFY0(zap_update(spa->spa_meta_objset, zapobj, feature->fi_guid, + sizeof (uint64_t), 1, &refcount, tx)); + + /* + * feature_sync is called directly from zhack, allowing the + * creation of arbitrary features whose fi_feature field may + * be greater than SPA_FEATURES. When called from zhack, the + * zfeature_info_t object's fi_feature field will be set to + * SPA_FEATURE_NONE. + */ + if (feature->fi_feature != SPA_FEATURE_NONE) { + uint64_t *refcount_cache = + &spa->spa_feat_refcount_cache[feature->fi_feature]; + VERIFY3U(*refcount_cache, ==, + atomic_swap_64(refcount_cache, refcount)); + } + + if (refcount == 0) + spa_deactivate_mos_feature(spa, feature->fi_guid); + else if (feature->fi_mos) + spa_activate_mos_feature(spa, feature->fi_guid, tx); +} + +/* + * This function is non-static for zhack; it should otherwise not be used + * outside this file. + */ +void +feature_enable_sync(spa_t *spa, zfeature_info_t *feature, dmu_tx_t *tx) +{ + uint64_t initial_refcount = feature->fi_activate_on_enable ? 1 : 0; + uint64_t zapobj = feature->fi_can_readonly ? + spa->spa_feat_for_write_obj : spa->spa_feat_for_read_obj; + int i; + + ASSERT(0 != zapobj); + ASSERT(zfeature_is_valid_guid(feature->fi_guid)); + ASSERT3U(spa_version(spa), >=, SPA_VERSION_FEATURES); + + /* + * If the feature is already enabled, ignore the request. + */ + if (zap_contains(spa->spa_meta_objset, zapobj, feature->fi_guid) == 0) + return; + + for (i = 0; feature->fi_depends[i] != SPA_FEATURE_NONE; i++) + spa_feature_enable(spa, feature->fi_depends[i], tx); + + VERIFY0(zap_update(spa->spa_meta_objset, spa->spa_feat_desc_obj, + feature->fi_guid, 1, strlen(feature->fi_desc) + 1, + feature->fi_desc, tx)); + + feature_sync(spa, feature, initial_refcount, tx); + + if (spa_feature_is_enabled(spa, SPA_FEATURE_ENABLED_TXG)) { + uint64_t enabling_txg = dmu_tx_get_txg(tx); + + if (spa->spa_feat_enabled_txg_obj == 0ULL) { + spa->spa_feat_enabled_txg_obj = + zap_create_link(spa->spa_meta_objset, + DMU_OTN_ZAP_METADATA, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FEATURE_ENABLED_TXG, tx); + } + spa_feature_incr(spa, SPA_FEATURE_ENABLED_TXG, tx); + + VERIFY0(zap_add(spa->spa_meta_objset, + spa->spa_feat_enabled_txg_obj, feature->fi_guid, + sizeof (uint64_t), 1, &enabling_txg, tx)); + } +} + +static void +feature_do_action(spa_t *spa, spa_feature_t fid, feature_action_t action, + dmu_tx_t *tx) +{ + uint64_t refcount = 0; + zfeature_info_t *feature = &spa_feature_table[fid]; + ASSERTV(uint64_t zapobj = feature->fi_can_readonly ? + spa->spa_feat_for_write_obj : spa->spa_feat_for_read_obj); + + ASSERT(VALID_FEATURE_FID(fid)); + ASSERT(0 != zapobj); + ASSERT(zfeature_is_valid_guid(feature->fi_guid)); + + ASSERT(dmu_tx_is_syncing(tx)); + ASSERT3U(spa_version(spa), >=, SPA_VERSION_FEATURES); + + VERIFY3U(feature_get_refcount(spa, feature, &refcount), !=, ENOTSUP); + + switch (action) { + case FEATURE_ACTION_INCR: + VERIFY3U(refcount, !=, UINT64_MAX); + refcount++; + break; + case FEATURE_ACTION_DECR: + VERIFY3U(refcount, !=, 0); + refcount--; + break; + default: + ASSERT(0); + break; + } + + feature_sync(spa, feature, refcount, tx); +} + +void +spa_feature_create_zap_objects(spa_t *spa, dmu_tx_t *tx) +{ + /* + * We create feature flags ZAP objects in two instances: during pool + * creation and during pool upgrade. + */ + ASSERT(dsl_pool_sync_context(spa_get_dsl(spa)) || (!spa->spa_sync_on && + tx->tx_txg == TXG_INITIAL)); + + spa->spa_feat_for_read_obj = zap_create_link(spa->spa_meta_objset, + DMU_OTN_ZAP_METADATA, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FEATURES_FOR_READ, tx); + spa->spa_feat_for_write_obj = zap_create_link(spa->spa_meta_objset, + DMU_OTN_ZAP_METADATA, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FEATURES_FOR_WRITE, tx); + spa->spa_feat_desc_obj = zap_create_link(spa->spa_meta_objset, + DMU_OTN_ZAP_METADATA, DMU_POOL_DIRECTORY_OBJECT, + DMU_POOL_FEATURE_DESCRIPTIONS, tx); +} + +/* + * Enable any required dependencies, then enable the requested feature. + */ +void +spa_feature_enable(spa_t *spa, spa_feature_t fid, dmu_tx_t *tx) +{ + ASSERT3U(spa_version(spa), >=, SPA_VERSION_FEATURES); + ASSERT(VALID_FEATURE_FID(fid)); + feature_enable_sync(spa, &spa_feature_table[fid], tx); +} + +void +spa_feature_incr(spa_t *spa, spa_feature_t fid, dmu_tx_t *tx) +{ + feature_do_action(spa, fid, FEATURE_ACTION_INCR, tx); +} + +void +spa_feature_decr(spa_t *spa, spa_feature_t fid, dmu_tx_t *tx) +{ + feature_do_action(spa, fid, FEATURE_ACTION_DECR, tx); +} + +boolean_t +spa_feature_is_enabled(spa_t *spa, spa_feature_t fid) +{ + int err; + uint64_t refcount = 0; + + ASSERT(VALID_FEATURE_FID(fid)); + if (spa_version(spa) < SPA_VERSION_FEATURES) + return (B_FALSE); + + err = feature_get_refcount(spa, &spa_feature_table[fid], &refcount); + ASSERT(err == 0 || err == ENOTSUP); + return (err == 0); +} + +boolean_t +spa_feature_is_active(spa_t *spa, spa_feature_t fid) +{ + int err; + uint64_t refcount = 0; + + ASSERT(VALID_FEATURE_FID(fid)); + if (spa_version(spa) < SPA_VERSION_FEATURES) + return (B_FALSE); + + err = feature_get_refcount(spa, &spa_feature_table[fid], &refcount); + ASSERT(err == 0 || err == ENOTSUP); + return (err == 0 && refcount > 0); +} + +/* + * For the feature specified by fid (which must depend on + * SPA_FEATURE_ENABLED_TXG), return the TXG at which it was enabled in the + * OUT txg argument. + * + * Returns B_TRUE if the feature is enabled, in which case txg will be filled + * with the transaction group in which the specified feature was enabled. + * Returns B_FALSE otherwise (i.e. if the feature is not enabled). + */ +boolean_t +spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid, uint64_t *txg) { + int err; + + ASSERT(VALID_FEATURE_FID(fid)); + if (spa_version(spa) < SPA_VERSION_FEATURES) + return (B_FALSE); + + err = feature_get_enabled_txg(spa, &spa_feature_table[fid], txg); + ASSERT(err == 0 || err == ENOTSUP); + + return (err == 0); +} --- linux-4.4.0.orig/zfs/module/zfs/zfeature_common.c +++ linux-4.4.0/zfs/module/zfs/zfeature_common.c @@ -0,0 +1,245 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved. + */ + +#ifdef _KERNEL +#include +#else +#include +#include +#endif +#include +#include +#include +#include +#include "zfeature_common.h" + +/* + * Set to disable all feature checks while opening pools, allowing pools with + * unsupported features to be opened. Set for testing only. + */ +boolean_t zfeature_checks_disable = B_FALSE; + +zfeature_info_t spa_feature_table[SPA_FEATURES]; + +/* + * Valid characters for feature guids. This list is mainly for aesthetic + * purposes and could be expanded in the future. There are different allowed + * characters in the guids reverse dns portion (before the colon) and its + * short name (after the colon). + */ +static int +valid_char(char c, boolean_t after_colon) +{ + return ((c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || + (after_colon && c == '_') || + (!after_colon && (c == '.' || c == '-'))); +} + +/* + * Every feature guid must contain exactly one colon which separates a reverse + * dns organization name from the feature's "short" name (e.g. + * "com.company:feature_name"). + */ +boolean_t +zfeature_is_valid_guid(const char *name) +{ + int i; + boolean_t has_colon = B_FALSE; + + i = 0; + while (name[i] != '\0') { + char c = name[i++]; + if (c == ':') { + if (has_colon) + return (B_FALSE); + has_colon = B_TRUE; + continue; + } + if (!valid_char(c, has_colon)) + return (B_FALSE); + } + + return (has_colon); +} + +boolean_t +zfeature_is_supported(const char *guid) +{ + spa_feature_t i; + + if (zfeature_checks_disable) + return (B_TRUE); + + for (i = 0; i < SPA_FEATURES; i++) { + zfeature_info_t *feature = &spa_feature_table[i]; + if (strcmp(guid, feature->fi_guid) == 0) + return (B_TRUE); + } + + return (B_FALSE); +} + +int +zfeature_lookup_name(const char *name, spa_feature_t *res) +{ + spa_feature_t i; + + for (i = 0; i < SPA_FEATURES; i++) { + zfeature_info_t *feature = &spa_feature_table[i]; + if (strcmp(name, feature->fi_uname) == 0) { + if (res != NULL) + *res = i; + return (0); + } + } + + return (ENOENT); +} + +boolean_t +zfeature_depends_on(spa_feature_t fid, spa_feature_t check) { + zfeature_info_t *feature = &spa_feature_table[fid]; + int i; + + for (i = 0; feature->fi_depends[i] != SPA_FEATURE_NONE; i++) { + if (feature->fi_depends[i] == check) + return (B_TRUE); + } + return (B_FALSE); +} + +static void +zfeature_register(spa_feature_t fid, const char *guid, const char *name, + const char *desc, boolean_t readonly, boolean_t mos, + boolean_t activate_on_enable, const spa_feature_t *deps) +{ + zfeature_info_t *feature = &spa_feature_table[fid]; + static spa_feature_t nodeps[] = { SPA_FEATURE_NONE }; + + ASSERT(name != NULL); + ASSERT(desc != NULL); + ASSERT(!readonly || !mos); + ASSERT3U(fid, <, SPA_FEATURES); + ASSERT(zfeature_is_valid_guid(guid)); + + if (deps == NULL) + deps = nodeps; + + feature->fi_feature = fid; + feature->fi_guid = guid; + feature->fi_uname = name; + feature->fi_desc = desc; + feature->fi_can_readonly = readonly; + feature->fi_mos = mos; + feature->fi_activate_on_enable = activate_on_enable; + feature->fi_depends = deps; +} + +void +zpool_feature_init(void) +{ + zfeature_register(SPA_FEATURE_ASYNC_DESTROY, + "com.delphix:async_destroy", "async_destroy", + "Destroy filesystems asynchronously.", B_TRUE, B_FALSE, + B_FALSE, NULL); + + zfeature_register(SPA_FEATURE_EMPTY_BPOBJ, + "com.delphix:empty_bpobj", "empty_bpobj", + "Snapshots use less space.", B_TRUE, B_FALSE, + B_FALSE, NULL); + + zfeature_register(SPA_FEATURE_LZ4_COMPRESS, + "org.illumos:lz4_compress", "lz4_compress", + "LZ4 compression algorithm support.", B_FALSE, B_FALSE, + B_TRUE, NULL); + + zfeature_register(SPA_FEATURE_SPACEMAP_HISTOGRAM, + "com.delphix:spacemap_histogram", "spacemap_histogram", + "Spacemaps maintain space histograms.", B_TRUE, B_FALSE, + B_FALSE, NULL); + + zfeature_register(SPA_FEATURE_ENABLED_TXG, + "com.delphix:enabled_txg", "enabled_txg", + "Record txg at which a feature is enabled", B_TRUE, B_FALSE, + B_FALSE, NULL); + + { + static const spa_feature_t hole_birth_deps[] = { + SPA_FEATURE_ENABLED_TXG, + SPA_FEATURE_NONE + }; + zfeature_register(SPA_FEATURE_HOLE_BIRTH, + "com.delphix:hole_birth", "hole_birth", + "Retain hole birth txg for more precise zfs send", + B_FALSE, B_TRUE, B_TRUE, hole_birth_deps); + } + + zfeature_register(SPA_FEATURE_EXTENSIBLE_DATASET, + "com.delphix:extensible_dataset", "extensible_dataset", + "Enhanced dataset functionality, used by other features.", + B_FALSE, B_FALSE, B_FALSE, NULL); + + { + static const spa_feature_t bookmarks_deps[] = { + SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_NONE + }; + + zfeature_register(SPA_FEATURE_BOOKMARKS, + "com.delphix:bookmarks", "bookmarks", + "\"zfs bookmark\" command", + B_TRUE, B_FALSE, B_FALSE, bookmarks_deps); + } + + { + static const spa_feature_t filesystem_limits_deps[] = { + SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_NONE + }; + zfeature_register(SPA_FEATURE_FS_SS_LIMIT, + "com.joyent:filesystem_limits", "filesystem_limits", + "Filesystem and snapshot limits.", B_TRUE, B_FALSE, B_FALSE, + filesystem_limits_deps); + } + + zfeature_register(SPA_FEATURE_EMBEDDED_DATA, + "com.delphix:embedded_data", "embedded_data", + "Blocks which compress very well use even less space.", + B_FALSE, B_TRUE, B_TRUE, NULL); + + { + static const spa_feature_t large_blocks_deps[] = { + SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_NONE + }; + zfeature_register(SPA_FEATURE_LARGE_BLOCKS, + "org.open-zfs:large_blocks", "large_blocks", + "Support for blocks larger than 128KB.", B_FALSE, B_FALSE, B_FALSE, + large_blocks_deps); + } +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_acl.c +++ linux-4.4.0/zfs/module/zfs/zfs_acl.c @@ -0,0 +1,2830 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fs/fs_subr.h" + +#define ALLOW ACE_ACCESS_ALLOWED_ACE_TYPE +#define DENY ACE_ACCESS_DENIED_ACE_TYPE +#define MAX_ACE_TYPE ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE +#define MIN_ACE_TYPE ALLOW + +#define OWNING_GROUP (ACE_GROUP|ACE_IDENTIFIER_GROUP) +#define EVERYONE_ALLOW_MASK (ACE_READ_ACL|ACE_READ_ATTRIBUTES | \ + ACE_READ_NAMED_ATTRS|ACE_SYNCHRONIZE) +#define EVERYONE_DENY_MASK (ACE_WRITE_ACL|ACE_WRITE_OWNER | \ + ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS) +#define OWNER_ALLOW_MASK (ACE_WRITE_ACL | ACE_WRITE_OWNER | \ + ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS) + +#define ZFS_CHECKED_MASKS (ACE_READ_ACL|ACE_READ_ATTRIBUTES|ACE_READ_DATA| \ + ACE_READ_NAMED_ATTRS|ACE_WRITE_DATA|ACE_WRITE_ATTRIBUTES| \ + ACE_WRITE_NAMED_ATTRS|ACE_APPEND_DATA|ACE_EXECUTE|ACE_WRITE_OWNER| \ + ACE_WRITE_ACL|ACE_DELETE|ACE_DELETE_CHILD|ACE_SYNCHRONIZE) + +#define WRITE_MASK_DATA (ACE_WRITE_DATA|ACE_APPEND_DATA|ACE_WRITE_NAMED_ATTRS) +#define WRITE_MASK_ATTRS (ACE_WRITE_ACL|ACE_WRITE_OWNER|ACE_WRITE_ATTRIBUTES| \ + ACE_DELETE|ACE_DELETE_CHILD) +#define WRITE_MASK (WRITE_MASK_DATA|WRITE_MASK_ATTRS) + +#define OGE_CLEAR (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \ + ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_EXECUTE) + +#define OKAY_MASK_BITS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \ + ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_EXECUTE) + +#define ALL_INHERIT (ACE_FILE_INHERIT_ACE|ACE_DIRECTORY_INHERIT_ACE | \ + ACE_NO_PROPAGATE_INHERIT_ACE|ACE_INHERIT_ONLY_ACE|ACE_INHERITED_ACE) + +#define RESTRICTED_CLEAR (ACE_WRITE_ACL|ACE_WRITE_OWNER) + +#define V4_ACL_WIDE_FLAGS (ZFS_ACL_AUTO_INHERIT|ZFS_ACL_DEFAULTED|\ + ZFS_ACL_PROTECTED) + +#define ZFS_ACL_WIDE_FLAGS (V4_ACL_WIDE_FLAGS|ZFS_ACL_TRIVIAL|ZFS_INHERIT_ACE|\ + ZFS_ACL_OBJ_ACE) + +#define ALL_MODE_EXECS (S_IXUSR | S_IXGRP | S_IXOTH) + +static uint16_t +zfs_ace_v0_get_type(void *acep) +{ + return (((zfs_oldace_t *)acep)->z_type); +} + +static uint16_t +zfs_ace_v0_get_flags(void *acep) +{ + return (((zfs_oldace_t *)acep)->z_flags); +} + +static uint32_t +zfs_ace_v0_get_mask(void *acep) +{ + return (((zfs_oldace_t *)acep)->z_access_mask); +} + +static uint64_t +zfs_ace_v0_get_who(void *acep) +{ + return (((zfs_oldace_t *)acep)->z_fuid); +} + +static void +zfs_ace_v0_set_type(void *acep, uint16_t type) +{ + ((zfs_oldace_t *)acep)->z_type = type; +} + +static void +zfs_ace_v0_set_flags(void *acep, uint16_t flags) +{ + ((zfs_oldace_t *)acep)->z_flags = flags; +} + +static void +zfs_ace_v0_set_mask(void *acep, uint32_t mask) +{ + ((zfs_oldace_t *)acep)->z_access_mask = mask; +} + +static void +zfs_ace_v0_set_who(void *acep, uint64_t who) +{ + ((zfs_oldace_t *)acep)->z_fuid = who; +} + +/*ARGSUSED*/ +static size_t +zfs_ace_v0_size(void *acep) +{ + return (sizeof (zfs_oldace_t)); +} + +static size_t +zfs_ace_v0_abstract_size(void) +{ + return (sizeof (zfs_oldace_t)); +} + +static int +zfs_ace_v0_mask_off(void) +{ + return (offsetof(zfs_oldace_t, z_access_mask)); +} + +/*ARGSUSED*/ +static int +zfs_ace_v0_data(void *acep, void **datap) +{ + *datap = NULL; + return (0); +} + +static acl_ops_t zfs_acl_v0_ops = { + zfs_ace_v0_get_mask, + zfs_ace_v0_set_mask, + zfs_ace_v0_get_flags, + zfs_ace_v0_set_flags, + zfs_ace_v0_get_type, + zfs_ace_v0_set_type, + zfs_ace_v0_get_who, + zfs_ace_v0_set_who, + zfs_ace_v0_size, + zfs_ace_v0_abstract_size, + zfs_ace_v0_mask_off, + zfs_ace_v0_data +}; + +static uint16_t +zfs_ace_fuid_get_type(void *acep) +{ + return (((zfs_ace_hdr_t *)acep)->z_type); +} + +static uint16_t +zfs_ace_fuid_get_flags(void *acep) +{ + return (((zfs_ace_hdr_t *)acep)->z_flags); +} + +static uint32_t +zfs_ace_fuid_get_mask(void *acep) +{ + return (((zfs_ace_hdr_t *)acep)->z_access_mask); +} + +static uint64_t +zfs_ace_fuid_get_who(void *args) +{ + uint16_t entry_type; + zfs_ace_t *acep = args; + + entry_type = acep->z_hdr.z_flags & ACE_TYPE_FLAGS; + + if (entry_type == ACE_OWNER || entry_type == OWNING_GROUP || + entry_type == ACE_EVERYONE) + return (-1); + return (((zfs_ace_t *)acep)->z_fuid); +} + +static void +zfs_ace_fuid_set_type(void *acep, uint16_t type) +{ + ((zfs_ace_hdr_t *)acep)->z_type = type; +} + +static void +zfs_ace_fuid_set_flags(void *acep, uint16_t flags) +{ + ((zfs_ace_hdr_t *)acep)->z_flags = flags; +} + +static void +zfs_ace_fuid_set_mask(void *acep, uint32_t mask) +{ + ((zfs_ace_hdr_t *)acep)->z_access_mask = mask; +} + +static void +zfs_ace_fuid_set_who(void *arg, uint64_t who) +{ + zfs_ace_t *acep = arg; + + uint16_t entry_type = acep->z_hdr.z_flags & ACE_TYPE_FLAGS; + + if (entry_type == ACE_OWNER || entry_type == OWNING_GROUP || + entry_type == ACE_EVERYONE) + return; + acep->z_fuid = who; +} + +static size_t +zfs_ace_fuid_size(void *acep) +{ + zfs_ace_hdr_t *zacep = acep; + uint16_t entry_type; + + switch (zacep->z_type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + return (sizeof (zfs_object_ace_t)); + case ALLOW: + case DENY: + entry_type = + (((zfs_ace_hdr_t *)acep)->z_flags & ACE_TYPE_FLAGS); + if (entry_type == ACE_OWNER || + entry_type == OWNING_GROUP || + entry_type == ACE_EVERYONE) + return (sizeof (zfs_ace_hdr_t)); + /*FALLTHROUGH*/ + default: + return (sizeof (zfs_ace_t)); + } +} + +static size_t +zfs_ace_fuid_abstract_size(void) +{ + return (sizeof (zfs_ace_hdr_t)); +} + +static int +zfs_ace_fuid_mask_off(void) +{ + return (offsetof(zfs_ace_hdr_t, z_access_mask)); +} + +static int +zfs_ace_fuid_data(void *acep, void **datap) +{ + zfs_ace_t *zacep = acep; + zfs_object_ace_t *zobjp; + + switch (zacep->z_hdr.z_type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + zobjp = acep; + *datap = (caddr_t)zobjp + sizeof (zfs_ace_t); + return (sizeof (zfs_object_ace_t) - sizeof (zfs_ace_t)); + default: + *datap = NULL; + return (0); + } +} + +static acl_ops_t zfs_acl_fuid_ops = { + zfs_ace_fuid_get_mask, + zfs_ace_fuid_set_mask, + zfs_ace_fuid_get_flags, + zfs_ace_fuid_set_flags, + zfs_ace_fuid_get_type, + zfs_ace_fuid_set_type, + zfs_ace_fuid_get_who, + zfs_ace_fuid_set_who, + zfs_ace_fuid_size, + zfs_ace_fuid_abstract_size, + zfs_ace_fuid_mask_off, + zfs_ace_fuid_data +}; + +/* + * The following three functions are provided for compatibility with + * older ZPL version in order to determine if the file use to have + * an external ACL and what version of ACL previously existed on the + * file. Would really be nice to not need this, sigh. + */ +uint64_t +zfs_external_acl(znode_t *zp) +{ + zfs_acl_phys_t acl_phys; + int error; + + if (zp->z_is_sa) + return (0); + + /* + * Need to deal with a potential + * race where zfs_sa_upgrade could cause + * z_isa_sa to change. + * + * If the lookup fails then the state of z_is_sa should have + * changed. + */ + + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(ZTOZSB(zp)), + &acl_phys, sizeof (acl_phys))) == 0) + return (acl_phys.z_acl_extern_obj); + else { + /* + * after upgrade the SA_ZPL_ZNODE_ACL should have been + * removed + */ + VERIFY(zp->z_is_sa && error == ENOENT); + return (0); + } +} + +/* + * Determine size of ACL in bytes + * + * This is more complicated than it should be since we have to deal + * with old external ACLs. + */ +static int +zfs_acl_znode_info(znode_t *zp, int *aclsize, int *aclcount, + zfs_acl_phys_t *aclphys) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + uint64_t acl_count; + int size; + int error; + + ASSERT(MUTEX_HELD(&zp->z_acl_lock)); + if (zp->z_is_sa) { + if ((error = sa_size(zp->z_sa_hdl, SA_ZPL_DACL_ACES(zsb), + &size)) != 0) + return (error); + *aclsize = size; + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DACL_COUNT(zsb), + &acl_count, sizeof (acl_count))) != 0) + return (error); + *aclcount = acl_count; + } else { + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zsb), + aclphys, sizeof (*aclphys))) != 0) + return (error); + + if (aclphys->z_acl_version == ZFS_ACL_VERSION_INITIAL) { + *aclsize = ZFS_ACL_SIZE(aclphys->z_acl_size); + *aclcount = aclphys->z_acl_size; + } else { + *aclsize = aclphys->z_acl_size; + *aclcount = aclphys->z_acl_count; + } + } + return (0); +} + +int +zfs_znode_acl_version(znode_t *zp) +{ + zfs_acl_phys_t acl_phys; + + if (zp->z_is_sa) + return (ZFS_ACL_VERSION_FUID); + else { + int error; + + /* + * Need to deal with a potential + * race where zfs_sa_upgrade could cause + * z_isa_sa to change. + * + * If the lookup fails then the state of z_is_sa should have + * changed. + */ + if ((error = sa_lookup(zp->z_sa_hdl, + SA_ZPL_ZNODE_ACL(ZTOZSB(zp)), + &acl_phys, sizeof (acl_phys))) == 0) + return (acl_phys.z_acl_version); + else { + /* + * After upgrade SA_ZPL_ZNODE_ACL should have + * been removed. + */ + VERIFY(zp->z_is_sa && error == ENOENT); + return (ZFS_ACL_VERSION_FUID); + } + } +} + +static int +zfs_acl_version(int version) +{ + if (version < ZPL_VERSION_FUID) + return (ZFS_ACL_VERSION_INITIAL); + else + return (ZFS_ACL_VERSION_FUID); +} + +static int +zfs_acl_version_zp(znode_t *zp) +{ + return (zfs_acl_version(ZTOZSB(zp)->z_version)); +} + +zfs_acl_t * +zfs_acl_alloc(int vers) +{ + zfs_acl_t *aclp; + + aclp = kmem_zalloc(sizeof (zfs_acl_t), KM_SLEEP); + list_create(&aclp->z_acl, sizeof (zfs_acl_node_t), + offsetof(zfs_acl_node_t, z_next)); + aclp->z_version = vers; + if (vers == ZFS_ACL_VERSION_FUID) + aclp->z_ops = &zfs_acl_fuid_ops; + else + aclp->z_ops = &zfs_acl_v0_ops; + return (aclp); +} + +zfs_acl_node_t * +zfs_acl_node_alloc(size_t bytes) +{ + zfs_acl_node_t *aclnode; + + aclnode = kmem_zalloc(sizeof (zfs_acl_node_t), KM_SLEEP); + if (bytes) { + aclnode->z_acldata = kmem_alloc(bytes, KM_SLEEP); + aclnode->z_allocdata = aclnode->z_acldata; + aclnode->z_allocsize = bytes; + aclnode->z_size = bytes; + } + + return (aclnode); +} + +static void +zfs_acl_node_free(zfs_acl_node_t *aclnode) +{ + if (aclnode->z_allocsize) + kmem_free(aclnode->z_allocdata, aclnode->z_allocsize); + kmem_free(aclnode, sizeof (zfs_acl_node_t)); +} + +static void +zfs_acl_release_nodes(zfs_acl_t *aclp) +{ + zfs_acl_node_t *aclnode; + + while ((aclnode = list_head(&aclp->z_acl))) { + list_remove(&aclp->z_acl, aclnode); + zfs_acl_node_free(aclnode); + } + aclp->z_acl_count = 0; + aclp->z_acl_bytes = 0; +} + +void +zfs_acl_free(zfs_acl_t *aclp) +{ + zfs_acl_release_nodes(aclp); + list_destroy(&aclp->z_acl); + kmem_free(aclp, sizeof (zfs_acl_t)); +} + +static boolean_t +zfs_acl_valid_ace_type(uint_t type, uint_t flags) +{ + uint16_t entry_type; + + switch (type) { + case ALLOW: + case DENY: + case ACE_SYSTEM_AUDIT_ACE_TYPE: + case ACE_SYSTEM_ALARM_ACE_TYPE: + entry_type = flags & ACE_TYPE_FLAGS; + return (entry_type == ACE_OWNER || + entry_type == OWNING_GROUP || + entry_type == ACE_EVERYONE || entry_type == 0 || + entry_type == ACE_IDENTIFIER_GROUP); + default: + if (type >= MIN_ACE_TYPE && type <= MAX_ACE_TYPE) + return (B_TRUE); + } + return (B_FALSE); +} + +static boolean_t +zfs_ace_valid(umode_t obj_mode, zfs_acl_t *aclp, uint16_t type, uint16_t iflags) +{ + /* + * first check type of entry + */ + + if (!zfs_acl_valid_ace_type(type, iflags)) + return (B_FALSE); + + switch (type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + if (aclp->z_version < ZFS_ACL_VERSION_FUID) + return (B_FALSE); + aclp->z_hints |= ZFS_ACL_OBJ_ACE; + } + + /* + * next check inheritance level flags + */ + + if (S_ISDIR(obj_mode) && + (iflags & (ACE_FILE_INHERIT_ACE|ACE_DIRECTORY_INHERIT_ACE))) + aclp->z_hints |= ZFS_INHERIT_ACE; + + if (iflags & (ACE_INHERIT_ONLY_ACE|ACE_NO_PROPAGATE_INHERIT_ACE)) { + if ((iflags & (ACE_FILE_INHERIT_ACE| + ACE_DIRECTORY_INHERIT_ACE)) == 0) { + return (B_FALSE); + } + } + + return (B_TRUE); +} + +static void * +zfs_acl_next_ace(zfs_acl_t *aclp, void *start, uint64_t *who, + uint32_t *access_mask, uint16_t *iflags, uint16_t *type) +{ + zfs_acl_node_t *aclnode; + + ASSERT(aclp); + + if (start == NULL) { + aclnode = list_head(&aclp->z_acl); + if (aclnode == NULL) + return (NULL); + + aclp->z_next_ace = aclnode->z_acldata; + aclp->z_curr_node = aclnode; + aclnode->z_ace_idx = 0; + } + + aclnode = aclp->z_curr_node; + + if (aclnode == NULL) + return (NULL); + + if (aclnode->z_ace_idx >= aclnode->z_ace_count) { + aclnode = list_next(&aclp->z_acl, aclnode); + if (aclnode == NULL) + return (NULL); + else { + aclp->z_curr_node = aclnode; + aclnode->z_ace_idx = 0; + aclp->z_next_ace = aclnode->z_acldata; + } + } + + if (aclnode->z_ace_idx < aclnode->z_ace_count) { + void *acep = aclp->z_next_ace; + size_t ace_size; + + /* + * Make sure we don't overstep our bounds + */ + ace_size = aclp->z_ops->ace_size(acep); + + if (((caddr_t)acep + ace_size) > + ((caddr_t)aclnode->z_acldata + aclnode->z_size)) { + return (NULL); + } + + *iflags = aclp->z_ops->ace_flags_get(acep); + *type = aclp->z_ops->ace_type_get(acep); + *access_mask = aclp->z_ops->ace_mask_get(acep); + *who = aclp->z_ops->ace_who_get(acep); + aclp->z_next_ace = (caddr_t)aclp->z_next_ace + ace_size; + aclnode->z_ace_idx++; + + return ((void *)acep); + } + return (NULL); +} + +/*ARGSUSED*/ +static uint64_t +zfs_ace_walk(void *datap, uint64_t cookie, int aclcnt, + uint16_t *flags, uint16_t *type, uint32_t *mask) +{ + zfs_acl_t *aclp = datap; + zfs_ace_hdr_t *acep = (zfs_ace_hdr_t *)(uintptr_t)cookie; + uint64_t who; + + acep = zfs_acl_next_ace(aclp, acep, &who, mask, + flags, type); + return ((uint64_t)(uintptr_t)acep); +} + +/* + * Copy ACE to internal ZFS format. + * While processing the ACL each ACE will be validated for correctness. + * ACE FUIDs will be created later. + */ +int +zfs_copy_ace_2_fuid(zfs_sb_t *zsb, umode_t obj_mode, zfs_acl_t *aclp, + void *datap, zfs_ace_t *z_acl, uint64_t aclcnt, size_t *size, + zfs_fuid_info_t **fuidp, cred_t *cr) +{ + int i; + uint16_t entry_type; + zfs_ace_t *aceptr = z_acl; + ace_t *acep = datap; + zfs_object_ace_t *zobjacep; + ace_object_t *aceobjp; + + for (i = 0; i != aclcnt; i++) { + aceptr->z_hdr.z_access_mask = acep->a_access_mask; + aceptr->z_hdr.z_flags = acep->a_flags; + aceptr->z_hdr.z_type = acep->a_type; + entry_type = aceptr->z_hdr.z_flags & ACE_TYPE_FLAGS; + if (entry_type != ACE_OWNER && entry_type != OWNING_GROUP && + entry_type != ACE_EVERYONE) { + aceptr->z_fuid = zfs_fuid_create(zsb, acep->a_who, + cr, (entry_type == 0) ? + ZFS_ACE_USER : ZFS_ACE_GROUP, fuidp); + } + + /* + * Make sure ACE is valid + */ + if (zfs_ace_valid(obj_mode, aclp, aceptr->z_hdr.z_type, + aceptr->z_hdr.z_flags) != B_TRUE) + return (SET_ERROR(EINVAL)); + + switch (acep->a_type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + zobjacep = (zfs_object_ace_t *)aceptr; + aceobjp = (ace_object_t *)acep; + + bcopy(aceobjp->a_obj_type, zobjacep->z_object_type, + sizeof (aceobjp->a_obj_type)); + bcopy(aceobjp->a_inherit_obj_type, + zobjacep->z_inherit_type, + sizeof (aceobjp->a_inherit_obj_type)); + acep = (ace_t *)((caddr_t)acep + sizeof (ace_object_t)); + break; + default: + acep = (ace_t *)((caddr_t)acep + sizeof (ace_t)); + } + + aceptr = (zfs_ace_t *)((caddr_t)aceptr + + aclp->z_ops->ace_size(aceptr)); + } + + *size = (caddr_t)aceptr - (caddr_t)z_acl; + + return (0); +} + +/* + * Copy ZFS ACEs to fixed size ace_t layout + */ +static void +zfs_copy_fuid_2_ace(zfs_sb_t *zsb, zfs_acl_t *aclp, cred_t *cr, + void *datap, int filter) +{ + uint64_t who; + uint32_t access_mask; + uint16_t iflags, type; + zfs_ace_hdr_t *zacep = NULL; + ace_t *acep = datap; + ace_object_t *objacep; + zfs_object_ace_t *zobjacep; + size_t ace_size; + uint16_t entry_type; + + while ((zacep = zfs_acl_next_ace(aclp, zacep, + &who, &access_mask, &iflags, &type))) { + + switch (type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + if (filter) { + continue; + } + zobjacep = (zfs_object_ace_t *)zacep; + objacep = (ace_object_t *)acep; + bcopy(zobjacep->z_object_type, + objacep->a_obj_type, + sizeof (zobjacep->z_object_type)); + bcopy(zobjacep->z_inherit_type, + objacep->a_inherit_obj_type, + sizeof (zobjacep->z_inherit_type)); + ace_size = sizeof (ace_object_t); + break; + default: + ace_size = sizeof (ace_t); + break; + } + + entry_type = (iflags & ACE_TYPE_FLAGS); + if ((entry_type != ACE_OWNER && + entry_type != OWNING_GROUP && + entry_type != ACE_EVERYONE)) { + acep->a_who = zfs_fuid_map_id(zsb, who, + cr, (entry_type & ACE_IDENTIFIER_GROUP) ? + ZFS_ACE_GROUP : ZFS_ACE_USER); + } else { + acep->a_who = (uid_t)(int64_t)who; + } + acep->a_access_mask = access_mask; + acep->a_flags = iflags; + acep->a_type = type; + acep = (ace_t *)((caddr_t)acep + ace_size); + } +} + +static int +zfs_copy_ace_2_oldace(umode_t obj_mode, zfs_acl_t *aclp, ace_t *acep, + zfs_oldace_t *z_acl, int aclcnt, size_t *size) +{ + int i; + zfs_oldace_t *aceptr = z_acl; + + for (i = 0; i != aclcnt; i++, aceptr++) { + aceptr->z_access_mask = acep[i].a_access_mask; + aceptr->z_type = acep[i].a_type; + aceptr->z_flags = acep[i].a_flags; + aceptr->z_fuid = acep[i].a_who; + /* + * Make sure ACE is valid + */ + if (zfs_ace_valid(obj_mode, aclp, aceptr->z_type, + aceptr->z_flags) != B_TRUE) + return (SET_ERROR(EINVAL)); + } + *size = (caddr_t)aceptr - (caddr_t)z_acl; + return (0); +} + +/* + * convert old ACL format to new + */ +void +zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr) +{ + zfs_oldace_t *oldaclp; + int i; + uint16_t type, iflags; + uint32_t access_mask; + uint64_t who; + void *cookie = NULL; + zfs_acl_node_t *newaclnode; + + ASSERT(aclp->z_version == ZFS_ACL_VERSION_INITIAL); + /* + * First create the ACE in a contiguous piece of memory + * for zfs_copy_ace_2_fuid(). + * + * We only convert an ACL once, so this won't happen + * everytime. + */ + oldaclp = kmem_alloc(sizeof (zfs_oldace_t) * aclp->z_acl_count, + KM_SLEEP); + i = 0; + while ((cookie = zfs_acl_next_ace(aclp, cookie, &who, + &access_mask, &iflags, &type))) { + oldaclp[i].z_flags = iflags; + oldaclp[i].z_type = type; + oldaclp[i].z_fuid = who; + oldaclp[i++].z_access_mask = access_mask; + } + + newaclnode = zfs_acl_node_alloc(aclp->z_acl_count * + sizeof (zfs_object_ace_t)); + aclp->z_ops = &zfs_acl_fuid_ops; + VERIFY(zfs_copy_ace_2_fuid(ZTOZSB(zp), ZTOI(zp)->i_mode, + aclp, oldaclp, newaclnode->z_acldata, aclp->z_acl_count, + &newaclnode->z_size, NULL, cr) == 0); + newaclnode->z_ace_count = aclp->z_acl_count; + aclp->z_version = ZFS_ACL_VERSION; + kmem_free(oldaclp, aclp->z_acl_count * sizeof (zfs_oldace_t)); + + /* + * Release all previous ACL nodes + */ + + zfs_acl_release_nodes(aclp); + + list_insert_head(&aclp->z_acl, newaclnode); + + aclp->z_acl_bytes = newaclnode->z_size; + aclp->z_acl_count = newaclnode->z_ace_count; + +} + +/* + * Convert unix access mask to v4 access mask + */ +static uint32_t +zfs_unix_to_v4(uint32_t access_mask) +{ + uint32_t new_mask = 0; + + if (access_mask & S_IXOTH) + new_mask |= ACE_EXECUTE; + if (access_mask & S_IWOTH) + new_mask |= ACE_WRITE_DATA; + if (access_mask & S_IROTH) + new_mask |= ACE_READ_DATA; + return (new_mask); +} + +static void +zfs_set_ace(zfs_acl_t *aclp, void *acep, uint32_t access_mask, + uint16_t access_type, uint64_t fuid, uint16_t entry_type) +{ + uint16_t type = entry_type & ACE_TYPE_FLAGS; + + aclp->z_ops->ace_mask_set(acep, access_mask); + aclp->z_ops->ace_type_set(acep, access_type); + aclp->z_ops->ace_flags_set(acep, entry_type); + if ((type != ACE_OWNER && type != OWNING_GROUP && + type != ACE_EVERYONE)) + aclp->z_ops->ace_who_set(acep, fuid); +} + +/* + * Determine mode of file based on ACL. + * Also, create FUIDs for any User/Group ACEs + */ +uint64_t +zfs_mode_compute(uint64_t fmode, zfs_acl_t *aclp, + uint64_t *pflags, uint64_t fuid, uint64_t fgid) +{ + int entry_type; + mode_t mode; + mode_t seen = 0; + zfs_ace_hdr_t *acep = NULL; + uint64_t who; + uint16_t iflags, type; + uint32_t access_mask; + boolean_t an_exec_denied = B_FALSE; + + mode = (fmode & (S_IFMT | S_ISUID | S_ISGID | S_ISVTX)); + + while ((acep = zfs_acl_next_ace(aclp, acep, &who, + &access_mask, &iflags, &type))) { + + if (!zfs_acl_valid_ace_type(type, iflags)) + continue; + + entry_type = (iflags & ACE_TYPE_FLAGS); + + /* + * Skip over owner@, group@ or everyone@ inherit only ACEs + */ + if ((iflags & ACE_INHERIT_ONLY_ACE) && + (entry_type == ACE_OWNER || entry_type == ACE_EVERYONE || + entry_type == OWNING_GROUP)) + continue; + + if (entry_type == ACE_OWNER || (entry_type == 0 && + who == fuid)) { + if ((access_mask & ACE_READ_DATA) && + (!(seen & S_IRUSR))) { + seen |= S_IRUSR; + if (type == ALLOW) { + mode |= S_IRUSR; + } + } + if ((access_mask & ACE_WRITE_DATA) && + (!(seen & S_IWUSR))) { + seen |= S_IWUSR; + if (type == ALLOW) { + mode |= S_IWUSR; + } + } + if ((access_mask & ACE_EXECUTE) && + (!(seen & S_IXUSR))) { + seen |= S_IXUSR; + if (type == ALLOW) { + mode |= S_IXUSR; + } + } + } else if (entry_type == OWNING_GROUP || + (entry_type == ACE_IDENTIFIER_GROUP && who == fgid)) { + if ((access_mask & ACE_READ_DATA) && + (!(seen & S_IRGRP))) { + seen |= S_IRGRP; + if (type == ALLOW) { + mode |= S_IRGRP; + } + } + if ((access_mask & ACE_WRITE_DATA) && + (!(seen & S_IWGRP))) { + seen |= S_IWGRP; + if (type == ALLOW) { + mode |= S_IWGRP; + } + } + if ((access_mask & ACE_EXECUTE) && + (!(seen & S_IXGRP))) { + seen |= S_IXGRP; + if (type == ALLOW) { + mode |= S_IXGRP; + } + } + } else if (entry_type == ACE_EVERYONE) { + if ((access_mask & ACE_READ_DATA)) { + if (!(seen & S_IRUSR)) { + seen |= S_IRUSR; + if (type == ALLOW) { + mode |= S_IRUSR; + } + } + if (!(seen & S_IRGRP)) { + seen |= S_IRGRP; + if (type == ALLOW) { + mode |= S_IRGRP; + } + } + if (!(seen & S_IROTH)) { + seen |= S_IROTH; + if (type == ALLOW) { + mode |= S_IROTH; + } + } + } + if ((access_mask & ACE_WRITE_DATA)) { + if (!(seen & S_IWUSR)) { + seen |= S_IWUSR; + if (type == ALLOW) { + mode |= S_IWUSR; + } + } + if (!(seen & S_IWGRP)) { + seen |= S_IWGRP; + if (type == ALLOW) { + mode |= S_IWGRP; + } + } + if (!(seen & S_IWOTH)) { + seen |= S_IWOTH; + if (type == ALLOW) { + mode |= S_IWOTH; + } + } + } + if ((access_mask & ACE_EXECUTE)) { + if (!(seen & S_IXUSR)) { + seen |= S_IXUSR; + if (type == ALLOW) { + mode |= S_IXUSR; + } + } + if (!(seen & S_IXGRP)) { + seen |= S_IXGRP; + if (type == ALLOW) { + mode |= S_IXGRP; + } + } + if (!(seen & S_IXOTH)) { + seen |= S_IXOTH; + if (type == ALLOW) { + mode |= S_IXOTH; + } + } + } + } else { + /* + * Only care if this IDENTIFIER_GROUP or + * USER ACE denies execute access to someone, + * mode is not affected + */ + if ((access_mask & ACE_EXECUTE) && type == DENY) + an_exec_denied = B_TRUE; + } + } + + /* + * Failure to allow is effectively a deny, so execute permission + * is denied if it was never mentioned or if we explicitly + * weren't allowed it. + */ + if (!an_exec_denied && + ((seen & ALL_MODE_EXECS) != ALL_MODE_EXECS || + (mode & ALL_MODE_EXECS) != ALL_MODE_EXECS)) + an_exec_denied = B_TRUE; + + if (an_exec_denied) + *pflags &= ~ZFS_NO_EXECS_DENIED; + else + *pflags |= ZFS_NO_EXECS_DENIED; + + return (mode); +} + +/* + * Read an external acl object. If the intent is to modify, always + * create a new acl and leave any cached acl in place. + */ +static int +zfs_acl_node_read(znode_t *zp, boolean_t have_lock, zfs_acl_t **aclpp, + boolean_t will_modify) +{ + zfs_acl_t *aclp; + int aclsize = 0; + int acl_count = 0; + zfs_acl_node_t *aclnode; + zfs_acl_phys_t znode_acl; + int version; + int error; + boolean_t drop_lock = B_FALSE; + + ASSERT(MUTEX_HELD(&zp->z_acl_lock)); + + if (zp->z_acl_cached && !will_modify) { + *aclpp = zp->z_acl_cached; + return (0); + } + + /* + * close race where znode could be upgrade while trying to + * read the znode attributes. + * + * But this could only happen if the file isn't already an SA + * znode + */ + if (!zp->z_is_sa && !have_lock) { + mutex_enter(&zp->z_lock); + drop_lock = B_TRUE; + } + version = zfs_znode_acl_version(zp); + + if ((error = zfs_acl_znode_info(zp, &aclsize, + &acl_count, &znode_acl)) != 0) { + goto done; + } + + aclp = zfs_acl_alloc(version); + + aclp->z_acl_count = acl_count; + aclp->z_acl_bytes = aclsize; + + aclnode = zfs_acl_node_alloc(aclsize); + aclnode->z_ace_count = aclp->z_acl_count; + aclnode->z_size = aclsize; + + if (!zp->z_is_sa) { + if (znode_acl.z_acl_extern_obj) { + error = dmu_read(ZTOZSB(zp)->z_os, + znode_acl.z_acl_extern_obj, 0, aclnode->z_size, + aclnode->z_acldata, DMU_READ_PREFETCH); + } else { + bcopy(znode_acl.z_ace_data, aclnode->z_acldata, + aclnode->z_size); + } + } else { + error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DACL_ACES(ZTOZSB(zp)), + aclnode->z_acldata, aclnode->z_size); + } + + if (error != 0) { + zfs_acl_free(aclp); + zfs_acl_node_free(aclnode); + /* convert checksum errors into IO errors */ + if (error == ECKSUM) + error = SET_ERROR(EIO); + goto done; + } + + list_insert_head(&aclp->z_acl, aclnode); + + *aclpp = aclp; + if (!will_modify) + zp->z_acl_cached = aclp; +done: + if (drop_lock) + mutex_exit(&zp->z_lock); + return (error); +} + +/*ARGSUSED*/ +void +zfs_acl_data_locator(void **dataptr, uint32_t *length, uint32_t buflen, + boolean_t start, void *userdata) +{ + zfs_acl_locator_cb_t *cb = (zfs_acl_locator_cb_t *)userdata; + + if (start) { + cb->cb_acl_node = list_head(&cb->cb_aclp->z_acl); + } else { + cb->cb_acl_node = list_next(&cb->cb_aclp->z_acl, + cb->cb_acl_node); + } + *dataptr = cb->cb_acl_node->z_acldata; + *length = cb->cb_acl_node->z_size; +} + +int +zfs_acl_chown_setattr(znode_t *zp) +{ + int error; + zfs_acl_t *aclp; + + if (ZTOZSB(zp)->z_acl_type == ZFS_ACLTYPE_POSIXACL) + return (0); + + ASSERT(MUTEX_HELD(&zp->z_lock)); + ASSERT(MUTEX_HELD(&zp->z_acl_lock)); + + error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE); + if (error == 0 && aclp->z_acl_count > 0) + zp->z_mode = zfs_mode_compute(zp->z_mode, aclp, + &zp->z_pflags, zp->z_uid, zp->z_gid); + + /* + * Some ZFS implementations (ZEVO) create neither a ZNODE_ACL + * nor a DACL_ACES SA in which case ENOENT is returned from + * zfs_acl_node_read() when the SA can't be located. + * Allow chown/chgrp to succeed in these cases rather than + * returning an error that makes no sense in the context of + * the caller. + */ + if (error == ENOENT) + return (0); + + return (error); +} + +static void +acl_trivial_access_masks(mode_t mode, uint32_t *allow0, uint32_t *deny1, + uint32_t *deny2, uint32_t *owner, uint32_t *group, uint32_t *everyone) +{ + *deny1 = *deny2 = *allow0 = *group = 0; + + if (!(mode & S_IRUSR) && (mode & (S_IRGRP|S_IROTH))) + *deny1 |= ACE_READ_DATA; + if (!(mode & S_IWUSR) && (mode & (S_IWGRP|S_IWOTH))) + *deny1 |= ACE_WRITE_DATA; + if (!(mode & S_IXUSR) && (mode & (S_IXGRP|S_IXOTH))) + *deny1 |= ACE_EXECUTE; + + if (!(mode & S_IRGRP) && (mode & S_IROTH)) + *deny2 = ACE_READ_DATA; + if (!(mode & S_IWGRP) && (mode & S_IWOTH)) + *deny2 |= ACE_WRITE_DATA; + if (!(mode & S_IXGRP) && (mode & S_IXOTH)) + *deny2 |= ACE_EXECUTE; + + if ((mode & S_IRUSR) && (!(mode & S_IRGRP) && (mode & S_IROTH))) + *allow0 |= ACE_READ_DATA; + if ((mode & S_IWUSR) && (!(mode & S_IWGRP) && (mode & S_IWOTH))) + *allow0 |= ACE_WRITE_DATA; + if ((mode & S_IXUSR) && (!(mode & S_IXGRP) && (mode & S_IXOTH))) + *allow0 |= ACE_EXECUTE; + + *owner = ACE_WRITE_ATTRIBUTES|ACE_WRITE_OWNER|ACE_WRITE_ACL| + ACE_WRITE_NAMED_ATTRS|ACE_READ_ACL|ACE_READ_ATTRIBUTES| + ACE_READ_NAMED_ATTRS|ACE_SYNCHRONIZE; + if (mode & S_IRUSR) + *owner |= ACE_READ_DATA; + if (mode & S_IWUSR) + *owner |= ACE_WRITE_DATA|ACE_APPEND_DATA; + if (mode & S_IXUSR) + *owner |= ACE_EXECUTE; + + *group = ACE_READ_ACL|ACE_READ_ATTRIBUTES| ACE_READ_NAMED_ATTRS| + ACE_SYNCHRONIZE; + if (mode & S_IRGRP) + *group |= ACE_READ_DATA; + if (mode & S_IWGRP) + *group |= ACE_WRITE_DATA|ACE_APPEND_DATA; + if (mode & S_IXGRP) + *group |= ACE_EXECUTE; + + *everyone = ACE_READ_ACL|ACE_READ_ATTRIBUTES| ACE_READ_NAMED_ATTRS| + ACE_SYNCHRONIZE; + if (mode & S_IROTH) + *everyone |= ACE_READ_DATA; + if (mode & S_IWOTH) + *everyone |= ACE_WRITE_DATA|ACE_APPEND_DATA; + if (mode & S_IXOTH) + *everyone |= ACE_EXECUTE; +} + +/* + * ace_trivial: + * determine whether an ace_t acl is trivial + * + * Trivialness implies that the acl is composed of only + * owner, group, everyone entries. ACL can't + * have read_acl denied, and write_owner/write_acl/write_attributes + * can only be owner@ entry. + */ +static int +ace_trivial_common(void *acep, int aclcnt, + uint64_t (*walk)(void *, uint64_t, int aclcnt, + uint16_t *, uint16_t *, uint32_t *)) +{ + uint16_t flags; + uint32_t mask; + uint16_t type; + uint64_t cookie = 0; + + while ((cookie = walk(acep, cookie, aclcnt, &flags, &type, &mask))) { + switch (flags & ACE_TYPE_FLAGS) { + case ACE_OWNER: + case ACE_GROUP|ACE_IDENTIFIER_GROUP: + case ACE_EVERYONE: + break; + default: + return (1); + } + + if (flags & (ACE_FILE_INHERIT_ACE| + ACE_DIRECTORY_INHERIT_ACE|ACE_NO_PROPAGATE_INHERIT_ACE| + ACE_INHERIT_ONLY_ACE)) + return (1); + + /* + * Special check for some special bits + * + * Don't allow anybody to deny reading basic + * attributes or a files ACL. + */ + if ((mask & (ACE_READ_ACL|ACE_READ_ATTRIBUTES)) && + (type == ACE_ACCESS_DENIED_ACE_TYPE)) + return (1); + + /* + * Delete permissions are never set by default + */ + if (mask & (ACE_DELETE|ACE_DELETE_CHILD)) + return (1); + /* + * only allow owner@ to have + * write_acl/write_owner/write_attributes/write_xattr/ + */ + if (type == ACE_ACCESS_ALLOWED_ACE_TYPE && + (!(flags & ACE_OWNER) && (mask & + (ACE_WRITE_OWNER|ACE_WRITE_ACL| ACE_WRITE_ATTRIBUTES| + ACE_WRITE_NAMED_ATTRS)))) + return (1); + + } + + return (0); +} + +/* + * common code for setting ACLs. + * + * This function is called from zfs_mode_update, zfs_perm_init, and zfs_setacl. + * zfs_setacl passes a non-NULL inherit pointer (ihp) to indicate that it's + * already checked the acl and knows whether to inherit. + */ +int +zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx) +{ + int error; + zfs_sb_t *zsb = ZTOZSB(zp); + dmu_object_type_t otype; + zfs_acl_locator_cb_t locate = { 0 }; + uint64_t mode; + sa_bulk_attr_t bulk[5]; + uint64_t ctime[2]; + int count = 0; + + mode = zp->z_mode; + + mode = zfs_mode_compute(mode, aclp, &zp->z_pflags, + zp->z_uid, zp->z_gid); + + zp->z_mode = mode; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), NULL, + &mode, sizeof (mode)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, sizeof (zp->z_pflags)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, + &ctime, sizeof (ctime)); + + if (zp->z_acl_cached) { + zfs_acl_free(zp->z_acl_cached); + zp->z_acl_cached = NULL; + } + + /* + * Upgrade needed? + */ + if (!zsb->z_use_fuids) { + otype = DMU_OT_OLDACL; + } else { + if ((aclp->z_version == ZFS_ACL_VERSION_INITIAL) && + (zsb->z_version >= ZPL_VERSION_FUID)) + zfs_acl_xform(zp, aclp, cr); + ASSERT(aclp->z_version >= ZFS_ACL_VERSION_FUID); + otype = DMU_OT_ACL; + } + + /* + * Arrgh, we have to handle old on disk format + * as well as newer (preferred) SA format. + */ + + if (zp->z_is_sa) { /* the easy case, just update the ACL attribute */ + locate.cb_aclp = aclp; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_DACL_ACES(zsb), + zfs_acl_data_locator, &locate, aclp->z_acl_bytes); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_DACL_COUNT(zsb), + NULL, &aclp->z_acl_count, sizeof (uint64_t)); + } else { /* Painful legacy way */ + zfs_acl_node_t *aclnode; + uint64_t off = 0; + zfs_acl_phys_t acl_phys; + uint64_t aoid; + + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zsb), + &acl_phys, sizeof (acl_phys))) != 0) + return (error); + + aoid = acl_phys.z_acl_extern_obj; + + if (aclp->z_acl_bytes > ZFS_ACE_SPACE) { + /* + * If ACL was previously external and we are now + * converting to new ACL format then release old + * ACL object and create a new one. + */ + if (aoid && + aclp->z_version != acl_phys.z_acl_version) { + error = dmu_object_free(zsb->z_os, aoid, tx); + if (error) + return (error); + aoid = 0; + } + if (aoid == 0) { + aoid = dmu_object_alloc(zsb->z_os, + otype, aclp->z_acl_bytes, + otype == DMU_OT_ACL ? + DMU_OT_SYSACL : DMU_OT_NONE, + otype == DMU_OT_ACL ? + DN_MAX_BONUSLEN : 0, tx); + } else { + (void) dmu_object_set_blocksize(zsb->z_os, + aoid, aclp->z_acl_bytes, 0, tx); + } + acl_phys.z_acl_extern_obj = aoid; + for (aclnode = list_head(&aclp->z_acl); aclnode; + aclnode = list_next(&aclp->z_acl, aclnode)) { + if (aclnode->z_ace_count == 0) + continue; + dmu_write(zsb->z_os, aoid, off, + aclnode->z_size, aclnode->z_acldata, tx); + off += aclnode->z_size; + } + } else { + void *start = acl_phys.z_ace_data; + /* + * Migrating back embedded? + */ + if (acl_phys.z_acl_extern_obj) { + error = dmu_object_free(zsb->z_os, + acl_phys.z_acl_extern_obj, tx); + if (error) + return (error); + acl_phys.z_acl_extern_obj = 0; + } + + for (aclnode = list_head(&aclp->z_acl); aclnode; + aclnode = list_next(&aclp->z_acl, aclnode)) { + if (aclnode->z_ace_count == 0) + continue; + bcopy(aclnode->z_acldata, start, + aclnode->z_size); + start = (caddr_t)start + aclnode->z_size; + } + } + /* + * If Old version then swap count/bytes to match old + * layout of znode_acl_phys_t. + */ + if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) { + acl_phys.z_acl_size = aclp->z_acl_count; + acl_phys.z_acl_count = aclp->z_acl_bytes; + } else { + acl_phys.z_acl_size = aclp->z_acl_bytes; + acl_phys.z_acl_count = aclp->z_acl_count; + } + acl_phys.z_acl_version = aclp->z_version; + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ZNODE_ACL(zsb), NULL, + &acl_phys, sizeof (acl_phys)); + } + + /* + * Replace ACL wide bits, but first clear them. + */ + zp->z_pflags &= ~ZFS_ACL_WIDE_FLAGS; + + zp->z_pflags |= aclp->z_hints; + + if (ace_trivial_common(aclp, 0, zfs_ace_walk) == 0) + zp->z_pflags |= ZFS_ACL_TRIVIAL; + + zfs_tstamp_update_setup(zp, STATE_CHANGED, NULL, ctime, B_TRUE); + return (sa_bulk_update(zp->z_sa_hdl, bulk, count, tx)); +} + +static void +zfs_acl_chmod(zfs_sb_t *zsb, uint64_t mode, zfs_acl_t *aclp) +{ + void *acep = NULL; + uint64_t who; + int new_count, new_bytes; + int ace_size; + int entry_type; + uint16_t iflags, type; + uint32_t access_mask; + zfs_acl_node_t *newnode; + size_t abstract_size = aclp->z_ops->ace_abstract_size(); + void *zacep; + uint32_t owner, group, everyone; + uint32_t deny1, deny2, allow0; + + new_count = new_bytes = 0; + + acl_trivial_access_masks((mode_t)mode, &allow0, &deny1, &deny2, + &owner, &group, &everyone); + + newnode = zfs_acl_node_alloc((abstract_size * 6) + aclp->z_acl_bytes); + + zacep = newnode->z_acldata; + if (allow0) { + zfs_set_ace(aclp, zacep, allow0, ALLOW, -1, ACE_OWNER); + zacep = (void *)((uintptr_t)zacep + abstract_size); + new_count++; + new_bytes += abstract_size; + } + if (deny1) { + zfs_set_ace(aclp, zacep, deny1, DENY, -1, ACE_OWNER); + zacep = (void *)((uintptr_t)zacep + abstract_size); + new_count++; + new_bytes += abstract_size; + } + if (deny2) { + zfs_set_ace(aclp, zacep, deny2, DENY, -1, OWNING_GROUP); + zacep = (void *)((uintptr_t)zacep + abstract_size); + new_count++; + new_bytes += abstract_size; + } + + while ((acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask, + &iflags, &type))) { + uint16_t inherit_flags; + + entry_type = (iflags & ACE_TYPE_FLAGS); + inherit_flags = (iflags & ALL_INHERIT); + + if ((entry_type == ACE_OWNER || entry_type == ACE_EVERYONE || + (entry_type == OWNING_GROUP)) && + ((inherit_flags & ACE_INHERIT_ONLY_ACE) == 0)) { + continue; + } + + if ((type != ALLOW && type != DENY) || + (inherit_flags & ACE_INHERIT_ONLY_ACE)) { + if (inherit_flags) + aclp->z_hints |= ZFS_INHERIT_ACE; + switch (type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + aclp->z_hints |= ZFS_ACL_OBJ_ACE; + break; + } + } else { + + /* + * Limit permissions to be no greater than + * group permissions + */ + if (zsb->z_acl_inherit == ZFS_ACL_RESTRICTED) { + if (!(mode & S_IRGRP)) + access_mask &= ~ACE_READ_DATA; + if (!(mode & S_IWGRP)) + access_mask &= + ~(ACE_WRITE_DATA|ACE_APPEND_DATA); + if (!(mode & S_IXGRP)) + access_mask &= ~ACE_EXECUTE; + access_mask &= + ~(ACE_WRITE_OWNER|ACE_WRITE_ACL| + ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS); + } + } + zfs_set_ace(aclp, zacep, access_mask, type, who, iflags); + ace_size = aclp->z_ops->ace_size(acep); + zacep = (void *)((uintptr_t)zacep + ace_size); + new_count++; + new_bytes += ace_size; + } + zfs_set_ace(aclp, zacep, owner, 0, -1, ACE_OWNER); + zacep = (void *)((uintptr_t)zacep + abstract_size); + zfs_set_ace(aclp, zacep, group, 0, -1, OWNING_GROUP); + zacep = (void *)((uintptr_t)zacep + abstract_size); + zfs_set_ace(aclp, zacep, everyone, 0, -1, ACE_EVERYONE); + + new_count += 3; + new_bytes += abstract_size * 3; + zfs_acl_release_nodes(aclp); + aclp->z_acl_count = new_count; + aclp->z_acl_bytes = new_bytes; + newnode->z_ace_count = new_count; + newnode->z_size = new_bytes; + list_insert_tail(&aclp->z_acl, newnode); +} + +void +zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode) +{ + mutex_enter(&zp->z_acl_lock); + mutex_enter(&zp->z_lock); + *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp)); + (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS; + zfs_acl_chmod(ZTOZSB(zp), mode, *aclp); + mutex_exit(&zp->z_lock); + mutex_exit(&zp->z_acl_lock); + ASSERT(*aclp); +} + +/* + * strip off write_owner and write_acl + */ +static void +zfs_restricted_update(zfs_sb_t *zsb, zfs_acl_t *aclp, void *acep) +{ + uint32_t mask = aclp->z_ops->ace_mask_get(acep); + + if ((zsb->z_acl_inherit == ZFS_ACL_RESTRICTED) && + (aclp->z_ops->ace_type_get(acep) == ALLOW)) { + mask &= ~RESTRICTED_CLEAR; + aclp->z_ops->ace_mask_set(acep, mask); + } +} + +/* + * Should ACE be inherited? + */ +static int +zfs_ace_can_use(umode_t obj_mode, uint16_t acep_flags) +{ + int iflags = (acep_flags & 0xf); + + if (S_ISDIR(obj_mode) && (iflags & ACE_DIRECTORY_INHERIT_ACE)) + return (1); + else if (iflags & ACE_FILE_INHERIT_ACE) + return (!(S_ISDIR(obj_mode) && + (iflags & ACE_NO_PROPAGATE_INHERIT_ACE))); + return (0); +} + +/* + * inherit inheritable ACEs from parent + */ +static zfs_acl_t * +zfs_acl_inherit(zfs_sb_t *zsb, umode_t obj_mode, zfs_acl_t *paclp, + uint64_t mode, boolean_t *need_chmod) +{ + void *pacep; + void *acep; + zfs_acl_node_t *aclnode; + zfs_acl_t *aclp = NULL; + uint64_t who; + uint32_t access_mask; + uint16_t iflags, newflags, type; + size_t ace_size; + void *data1, *data2; + size_t data1sz, data2sz; + boolean_t vdir = S_ISDIR(obj_mode); + boolean_t vreg = S_ISREG(obj_mode); + boolean_t passthrough, passthrough_x, noallow; + + passthrough_x = + zsb->z_acl_inherit == ZFS_ACL_PASSTHROUGH_X; + passthrough = passthrough_x || + zsb->z_acl_inherit == ZFS_ACL_PASSTHROUGH; + noallow = + zsb->z_acl_inherit == ZFS_ACL_NOALLOW; + + *need_chmod = B_TRUE; + pacep = NULL; + aclp = zfs_acl_alloc(paclp->z_version); + if (zsb->z_acl_inherit == ZFS_ACL_DISCARD || S_ISLNK(obj_mode)) + return (aclp); + while ((pacep = zfs_acl_next_ace(paclp, pacep, &who, + &access_mask, &iflags, &type))) { + + /* + * don't inherit bogus ACEs + */ + if (!zfs_acl_valid_ace_type(type, iflags)) + continue; + + if (noallow && type == ALLOW) + continue; + + ace_size = aclp->z_ops->ace_size(pacep); + + if (!zfs_ace_can_use(obj_mode, iflags)) + continue; + + /* + * If owner@, group@, or everyone@ inheritable + * then zfs_acl_chmod() isn't needed. + */ + if (passthrough && + ((iflags & (ACE_OWNER|ACE_EVERYONE)) || + ((iflags & OWNING_GROUP) == + OWNING_GROUP)) && (vreg || (vdir && (iflags & + ACE_DIRECTORY_INHERIT_ACE)))) { + *need_chmod = B_FALSE; + } + + if (!vdir && passthrough_x && + ((mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0)) { + access_mask &= ~ACE_EXECUTE; + } + + aclnode = zfs_acl_node_alloc(ace_size); + list_insert_tail(&aclp->z_acl, aclnode); + acep = aclnode->z_acldata; + + zfs_set_ace(aclp, acep, access_mask, type, + who, iflags|ACE_INHERITED_ACE); + + /* + * Copy special opaque data if any + */ + if ((data1sz = paclp->z_ops->ace_data(pacep, &data1)) != 0) { + VERIFY((data2sz = aclp->z_ops->ace_data(acep, + &data2)) == data1sz); + bcopy(data1, data2, data2sz); + } + + aclp->z_acl_count++; + aclnode->z_ace_count++; + aclp->z_acl_bytes += aclnode->z_size; + newflags = aclp->z_ops->ace_flags_get(acep); + + if (vdir) + aclp->z_hints |= ZFS_INHERIT_ACE; + + if ((iflags & ACE_NO_PROPAGATE_INHERIT_ACE) || !vdir) { + newflags &= ~ALL_INHERIT; + aclp->z_ops->ace_flags_set(acep, + newflags|ACE_INHERITED_ACE); + zfs_restricted_update(zsb, aclp, acep); + continue; + } + + ASSERT(vdir); + + /* + * If only FILE_INHERIT is set then turn on + * inherit_only + */ + if ((iflags & (ACE_FILE_INHERIT_ACE | + ACE_DIRECTORY_INHERIT_ACE)) == ACE_FILE_INHERIT_ACE) { + newflags |= ACE_INHERIT_ONLY_ACE; + aclp->z_ops->ace_flags_set(acep, + newflags|ACE_INHERITED_ACE); + } else { + newflags &= ~ACE_INHERIT_ONLY_ACE; + aclp->z_ops->ace_flags_set(acep, + newflags|ACE_INHERITED_ACE); + } + } + return (aclp); +} + +/* + * Create file system object initial permissions + * including inheritable ACEs. + */ +int +zfs_acl_ids_create(znode_t *dzp, int flag, vattr_t *vap, cred_t *cr, + vsecattr_t *vsecp, zfs_acl_ids_t *acl_ids) +{ + int error; + zfs_sb_t *zsb = ZTOZSB(dzp); + zfs_acl_t *paclp; +#ifdef HAVE_KSID + gid_t gid; +#endif /* HAVE_KSID */ + boolean_t need_chmod = B_TRUE; + boolean_t inherited = B_FALSE; + + bzero(acl_ids, sizeof (zfs_acl_ids_t)); + acl_ids->z_mode = vap->va_mode; + + if (vsecp) + if ((error = zfs_vsec_2_aclp(zsb, vap->va_mode, vsecp, + cr, &acl_ids->z_fuidp, &acl_ids->z_aclp)) != 0) + return (error); + + acl_ids->z_fuid = vap->va_uid; + acl_ids->z_fgid = vap->va_gid; +#ifdef HAVE_KSID + /* + * Determine uid and gid. + */ + if ((flag & IS_ROOT_NODE) || zsb->z_replay || + ((flag & IS_XATTR) && (S_ISDIR(vap->va_mode)))) { + acl_ids->z_fuid = zfs_fuid_create(zsb, (uint64_t)vap->va_uid, + cr, ZFS_OWNER, &acl_ids->z_fuidp); + acl_ids->z_fgid = zfs_fuid_create(zsb, (uint64_t)vap->va_gid, + cr, ZFS_GROUP, &acl_ids->z_fuidp); + gid = vap->va_gid; + } else { + acl_ids->z_fuid = zfs_fuid_create_cred(zsb, ZFS_OWNER, + cr, &acl_ids->z_fuidp); + acl_ids->z_fgid = 0; + if (vap->va_mask & AT_GID) { + acl_ids->z_fgid = zfs_fuid_create(zsb, + (uint64_t)vap->va_gid, + cr, ZFS_GROUP, &acl_ids->z_fuidp); + gid = vap->va_gid; + if (acl_ids->z_fgid != dzp->z_gid && + !groupmember(vap->va_gid, cr) && + secpolicy_vnode_create_gid(cr) != 0) + acl_ids->z_fgid = 0; + } + if (acl_ids->z_fgid == 0) { + if (dzp->z_mode & S_ISGID) { + char *domain; + uint32_t rid; + + acl_ids->z_fgid = dzp->z_gid; + gid = zfs_fuid_map_id(zsb, acl_ids->z_fgid, + cr, ZFS_GROUP); + + if (zsb->z_use_fuids && + IS_EPHEMERAL(acl_ids->z_fgid)) { + domain = zfs_fuid_idx_domain( + &zsb->z_fuid_idx, + FUID_INDEX(acl_ids->z_fgid)); + rid = FUID_RID(acl_ids->z_fgid); + zfs_fuid_node_add(&acl_ids->z_fuidp, + domain, rid, + FUID_INDEX(acl_ids->z_fgid), + acl_ids->z_fgid, ZFS_GROUP); + } + } else { + acl_ids->z_fgid = zfs_fuid_create_cred(zsb, + ZFS_GROUP, cr, &acl_ids->z_fuidp); + gid = crgetgid(cr); + } + } + } +#endif /* HAVE_KSID */ + + /* + * If we're creating a directory, and the parent directory has the + * set-GID bit set, set in on the new directory. + * Otherwise, if the user is neither privileged nor a member of the + * file's new group, clear the file's set-GID bit. + */ + + if (!(flag & IS_ROOT_NODE) && (dzp->z_mode & S_ISGID) && + (S_ISDIR(vap->va_mode))) { + acl_ids->z_mode |= S_ISGID; + } else { + if ((acl_ids->z_mode & S_ISGID) && + secpolicy_vnode_setids_setgids(cr, gid) != 0) + acl_ids->z_mode &= ~S_ISGID; + } + + if (acl_ids->z_aclp == NULL) { + mutex_enter(&dzp->z_acl_lock); + mutex_enter(&dzp->z_lock); + if (!(flag & IS_ROOT_NODE) && (S_ISDIR(ZTOI(dzp)->i_mode) && + (dzp->z_pflags & ZFS_INHERIT_ACE)) && + !(dzp->z_pflags & ZFS_XATTR)) { + VERIFY(0 == zfs_acl_node_read(dzp, B_TRUE, + &paclp, B_FALSE)); + acl_ids->z_aclp = zfs_acl_inherit(zsb, + vap->va_mode, paclp, acl_ids->z_mode, &need_chmod); + inherited = B_TRUE; + } else { + acl_ids->z_aclp = + zfs_acl_alloc(zfs_acl_version_zp(dzp)); + acl_ids->z_aclp->z_hints |= ZFS_ACL_TRIVIAL; + } + mutex_exit(&dzp->z_lock); + mutex_exit(&dzp->z_acl_lock); + if (need_chmod) { + acl_ids->z_aclp->z_hints |= S_ISDIR(vap->va_mode) ? + ZFS_ACL_AUTO_INHERIT : 0; + zfs_acl_chmod(zsb, acl_ids->z_mode, acl_ids->z_aclp); + } + } + + if (inherited || vsecp) { + acl_ids->z_mode = zfs_mode_compute(acl_ids->z_mode, + acl_ids->z_aclp, &acl_ids->z_aclp->z_hints, + acl_ids->z_fuid, acl_ids->z_fgid); + if (ace_trivial_common(acl_ids->z_aclp, 0, zfs_ace_walk) == 0) + acl_ids->z_aclp->z_hints |= ZFS_ACL_TRIVIAL; + } + + return (0); +} + +/* + * Free ACL and fuid_infop, but not the acl_ids structure + */ +void +zfs_acl_ids_free(zfs_acl_ids_t *acl_ids) +{ + if (acl_ids->z_aclp) + zfs_acl_free(acl_ids->z_aclp); + if (acl_ids->z_fuidp) + zfs_fuid_info_free(acl_ids->z_fuidp); + acl_ids->z_aclp = NULL; + acl_ids->z_fuidp = NULL; +} + +boolean_t +zfs_acl_ids_overquota(zfs_sb_t *zsb, zfs_acl_ids_t *acl_ids) +{ + return (zfs_fuid_overquota(zsb, B_FALSE, acl_ids->z_fuid) || + zfs_fuid_overquota(zsb, B_TRUE, acl_ids->z_fgid)); +} + +/* + * Retrieve a file's ACL + */ +int +zfs_getacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr) +{ + zfs_acl_t *aclp; + ulong_t mask; + int error; + int count = 0; + int largeace = 0; + + mask = vsecp->vsa_mask & (VSA_ACE | VSA_ACECNT | + VSA_ACE_ACLFLAGS | VSA_ACE_ALLTYPES); + + if (mask == 0) + return (SET_ERROR(ENOSYS)); + + if ((error = zfs_zaccess(zp, ACE_READ_ACL, 0, skipaclchk, cr))) + return (error); + + mutex_enter(&zp->z_acl_lock); + + error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE); + if (error != 0) { + mutex_exit(&zp->z_acl_lock); + return (error); + } + + /* + * Scan ACL to determine number of ACEs + */ + if ((zp->z_pflags & ZFS_ACL_OBJ_ACE) && !(mask & VSA_ACE_ALLTYPES)) { + void *zacep = NULL; + uint64_t who; + uint32_t access_mask; + uint16_t type, iflags; + + while ((zacep = zfs_acl_next_ace(aclp, zacep, + &who, &access_mask, &iflags, &type))) { + switch (type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + largeace++; + continue; + default: + count++; + } + } + vsecp->vsa_aclcnt = count; + } else + count = (int)aclp->z_acl_count; + + if (mask & VSA_ACECNT) { + vsecp->vsa_aclcnt = count; + } + + if (mask & VSA_ACE) { + size_t aclsz; + + aclsz = count * sizeof (ace_t) + + sizeof (ace_object_t) * largeace; + + vsecp->vsa_aclentp = kmem_alloc(aclsz, KM_SLEEP); + vsecp->vsa_aclentsz = aclsz; + + if (aclp->z_version == ZFS_ACL_VERSION_FUID) + zfs_copy_fuid_2_ace(ZTOZSB(zp), aclp, cr, + vsecp->vsa_aclentp, !(mask & VSA_ACE_ALLTYPES)); + else { + zfs_acl_node_t *aclnode; + void *start = vsecp->vsa_aclentp; + + for (aclnode = list_head(&aclp->z_acl); aclnode; + aclnode = list_next(&aclp->z_acl, aclnode)) { + bcopy(aclnode->z_acldata, start, + aclnode->z_size); + start = (caddr_t)start + aclnode->z_size; + } + ASSERT((caddr_t)start - (caddr_t)vsecp->vsa_aclentp == + aclp->z_acl_bytes); + } + } + if (mask & VSA_ACE_ACLFLAGS) { + vsecp->vsa_aclflags = 0; + if (zp->z_pflags & ZFS_ACL_DEFAULTED) + vsecp->vsa_aclflags |= ACL_DEFAULTED; + if (zp->z_pflags & ZFS_ACL_PROTECTED) + vsecp->vsa_aclflags |= ACL_PROTECTED; + if (zp->z_pflags & ZFS_ACL_AUTO_INHERIT) + vsecp->vsa_aclflags |= ACL_AUTO_INHERIT; + } + + mutex_exit(&zp->z_acl_lock); + + return (0); +} + +int +zfs_vsec_2_aclp(zfs_sb_t *zsb, umode_t obj_mode, + vsecattr_t *vsecp, cred_t *cr, zfs_fuid_info_t **fuidp, zfs_acl_t **zaclp) +{ + zfs_acl_t *aclp; + zfs_acl_node_t *aclnode; + int aclcnt = vsecp->vsa_aclcnt; + int error; + + if (vsecp->vsa_aclcnt > MAX_ACL_ENTRIES || vsecp->vsa_aclcnt <= 0) + return (SET_ERROR(EINVAL)); + + aclp = zfs_acl_alloc(zfs_acl_version(zsb->z_version)); + + aclp->z_hints = 0; + aclnode = zfs_acl_node_alloc(aclcnt * sizeof (zfs_object_ace_t)); + if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) { + if ((error = zfs_copy_ace_2_oldace(obj_mode, aclp, + (ace_t *)vsecp->vsa_aclentp, aclnode->z_acldata, + aclcnt, &aclnode->z_size)) != 0) { + zfs_acl_free(aclp); + zfs_acl_node_free(aclnode); + return (error); + } + } else { + if ((error = zfs_copy_ace_2_fuid(zsb, obj_mode, aclp, + vsecp->vsa_aclentp, aclnode->z_acldata, aclcnt, + &aclnode->z_size, fuidp, cr)) != 0) { + zfs_acl_free(aclp); + zfs_acl_node_free(aclnode); + return (error); + } + } + aclp->z_acl_bytes = aclnode->z_size; + aclnode->z_ace_count = aclcnt; + aclp->z_acl_count = aclcnt; + list_insert_head(&aclp->z_acl, aclnode); + + /* + * If flags are being set then add them to z_hints + */ + if (vsecp->vsa_mask & VSA_ACE_ACLFLAGS) { + if (vsecp->vsa_aclflags & ACL_PROTECTED) + aclp->z_hints |= ZFS_ACL_PROTECTED; + if (vsecp->vsa_aclflags & ACL_DEFAULTED) + aclp->z_hints |= ZFS_ACL_DEFAULTED; + if (vsecp->vsa_aclflags & ACL_AUTO_INHERIT) + aclp->z_hints |= ZFS_ACL_AUTO_INHERIT; + } + + *zaclp = aclp; + + return (0); +} + +/* + * Set a file's ACL + */ +int +zfs_setacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + zilog_t *zilog = zsb->z_log; + ulong_t mask = vsecp->vsa_mask & (VSA_ACE | VSA_ACECNT); + dmu_tx_t *tx; + int error; + zfs_acl_t *aclp; + zfs_fuid_info_t *fuidp = NULL; + boolean_t fuid_dirtied; + uint64_t acl_obj; + + if (mask == 0) + return (SET_ERROR(ENOSYS)); + + if (zp->z_pflags & ZFS_IMMUTABLE) + return (SET_ERROR(EPERM)); + + if ((error = zfs_zaccess(zp, ACE_WRITE_ACL, 0, skipaclchk, cr))) + return (error); + + error = zfs_vsec_2_aclp(zsb, ZTOI(zp)->i_mode, vsecp, cr, &fuidp, + &aclp); + if (error) + return (error); + + /* + * If ACL wide flags aren't being set then preserve any + * existing flags. + */ + if (!(vsecp->vsa_mask & VSA_ACE_ACLFLAGS)) { + aclp->z_hints |= + (zp->z_pflags & V4_ACL_WIDE_FLAGS); + } +top: + mutex_enter(&zp->z_acl_lock); + mutex_enter(&zp->z_lock); + + tx = dmu_tx_create(zsb->z_os); + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + + fuid_dirtied = zsb->z_fuid_dirty; + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + + /* + * If old version and ACL won't fit in bonus and we aren't + * upgrading then take out necessary DMU holds + */ + + if ((acl_obj = zfs_external_acl(zp)) != 0) { + if (zsb->z_version >= ZPL_VERSION_FUID && + zfs_znode_acl_version(zp) <= ZFS_ACL_VERSION_INITIAL) { + dmu_tx_hold_free(tx, acl_obj, 0, + DMU_OBJECT_END); + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, + aclp->z_acl_bytes); + } else { + dmu_tx_hold_write(tx, acl_obj, 0, aclp->z_acl_bytes); + } + } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) { + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, aclp->z_acl_bytes); + } + + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_NOWAIT); + if (error) { + mutex_exit(&zp->z_acl_lock); + mutex_exit(&zp->z_lock); + + if (error == ERESTART) { + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + zfs_acl_free(aclp); + return (error); + } + + error = zfs_aclset_common(zp, aclp, cr, tx); + ASSERT(error == 0); + ASSERT(zp->z_acl_cached == NULL); + zp->z_acl_cached = aclp; + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + + zfs_log_acl(zilog, tx, zp, vsecp, fuidp); + + if (fuidp) + zfs_fuid_info_free(fuidp); + dmu_tx_commit(tx); + + mutex_exit(&zp->z_lock); + mutex_exit(&zp->z_acl_lock); + + return (error); +} + +/* + * Check accesses of interest (AoI) against attributes of the dataset + * such as read-only. Returns zero if no AoI conflict with dataset + * attributes, otherwise an appropriate errno is returned. + */ +static int +zfs_zaccess_dataset_check(znode_t *zp, uint32_t v4_mode) +{ + if ((v4_mode & WRITE_MASK) && (zfs_is_readonly(ZTOZSB(zp))) && + (!S_ISDEV(ZTOI(zp)->i_mode) || + (S_ISDEV(ZTOI(zp)->i_mode) && (v4_mode & WRITE_MASK_ATTRS)))) { + return (SET_ERROR(EROFS)); + } + + /* + * Only check for READONLY on non-directories. + */ + if ((v4_mode & WRITE_MASK_DATA) && + ((!S_ISDIR(ZTOI(zp)->i_mode) && + (zp->z_pflags & (ZFS_READONLY | ZFS_IMMUTABLE))) || + (S_ISDIR(ZTOI(zp)->i_mode) && + (zp->z_pflags & ZFS_IMMUTABLE)))) { + return (SET_ERROR(EPERM)); + } + + if ((v4_mode & (ACE_DELETE | ACE_DELETE_CHILD)) && + (zp->z_pflags & ZFS_NOUNLINK)) { + return (SET_ERROR(EPERM)); + } + + if (((v4_mode & (ACE_READ_DATA|ACE_EXECUTE)) && + (zp->z_pflags & ZFS_AV_QUARANTINED))) { + return (SET_ERROR(EACCES)); + } + + return (0); +} + +/* + * The primary usage of this function is to loop through all of the + * ACEs in the znode, determining what accesses of interest (AoI) to + * the caller are allowed or denied. The AoI are expressed as bits in + * the working_mode parameter. As each ACE is processed, bits covered + * by that ACE are removed from the working_mode. This removal + * facilitates two things. The first is that when the working mode is + * empty (= 0), we know we've looked at all the AoI. The second is + * that the ACE interpretation rules don't allow a later ACE to undo + * something granted or denied by an earlier ACE. Removing the + * discovered access or denial enforces this rule. At the end of + * processing the ACEs, all AoI that were found to be denied are + * placed into the working_mode, giving the caller a mask of denied + * accesses. Returns: + * 0 if all AoI granted + * EACCESS if the denied mask is non-zero + * other error if abnormal failure (e.g., IO error) + * + * A secondary usage of the function is to determine if any of the + * AoI are granted. If an ACE grants any access in + * the working_mode, we immediately short circuit out of the function. + * This mode is chosen by setting anyaccess to B_TRUE. The + * working_mode is not a denied access mask upon exit if the function + * is used in this manner. + */ +static int +zfs_zaccess_aces_check(znode_t *zp, uint32_t *working_mode, + boolean_t anyaccess, cred_t *cr) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + zfs_acl_t *aclp; + int error; + uid_t uid = crgetuid(cr); + uint64_t who; + uint16_t type, iflags; + uint16_t entry_type; + uint32_t access_mask; + uint32_t deny_mask = 0; + zfs_ace_hdr_t *acep = NULL; + boolean_t checkit; + uid_t gowner; + uid_t fowner; + + zfs_fuid_map_ids(zp, cr, &fowner, &gowner); + + mutex_enter(&zp->z_acl_lock); + + error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE); + if (error != 0) { + mutex_exit(&zp->z_acl_lock); + return (error); + } + + ASSERT(zp->z_acl_cached); + + while ((acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask, + &iflags, &type))) { + uint32_t mask_matched; + + if (!zfs_acl_valid_ace_type(type, iflags)) + continue; + + if (S_ISDIR(ZTOI(zp)->i_mode) && + (iflags & ACE_INHERIT_ONLY_ACE)) + continue; + + /* Skip ACE if it does not affect any AoI */ + mask_matched = (access_mask & *working_mode); + if (!mask_matched) + continue; + + entry_type = (iflags & ACE_TYPE_FLAGS); + + checkit = B_FALSE; + + switch (entry_type) { + case ACE_OWNER: + if (uid == fowner) + checkit = B_TRUE; + break; + case OWNING_GROUP: + who = gowner; + /*FALLTHROUGH*/ + case ACE_IDENTIFIER_GROUP: + checkit = zfs_groupmember(zsb, who, cr); + break; + case ACE_EVERYONE: + checkit = B_TRUE; + break; + + /* USER Entry */ + default: + if (entry_type == 0) { + uid_t newid; + + newid = zfs_fuid_map_id(zsb, who, cr, + ZFS_ACE_USER); + if (newid != IDMAP_WK_CREATOR_OWNER_UID && + uid == newid) + checkit = B_TRUE; + break; + } else { + mutex_exit(&zp->z_acl_lock); + return (SET_ERROR(EIO)); + } + } + + if (checkit) { + if (type == DENY) { + DTRACE_PROBE3(zfs__ace__denies, + znode_t *, zp, + zfs_ace_hdr_t *, acep, + uint32_t, mask_matched); + deny_mask |= mask_matched; + } else { + DTRACE_PROBE3(zfs__ace__allows, + znode_t *, zp, + zfs_ace_hdr_t *, acep, + uint32_t, mask_matched); + if (anyaccess) { + mutex_exit(&zp->z_acl_lock); + return (0); + } + } + *working_mode &= ~mask_matched; + } + + /* Are we done? */ + if (*working_mode == 0) + break; + } + + mutex_exit(&zp->z_acl_lock); + + /* Put the found 'denies' back on the working mode */ + if (deny_mask) { + *working_mode |= deny_mask; + return (SET_ERROR(EACCES)); + } else if (*working_mode) { + return (-1); + } + + return (0); +} + +/* + * Return true if any access whatsoever granted, we don't actually + * care what access is granted. + */ +boolean_t +zfs_has_access(znode_t *zp, cred_t *cr) +{ + uint32_t have = ACE_ALL_PERMS; + + if (zfs_zaccess_aces_check(zp, &have, B_TRUE, cr) != 0) { + uid_t owner; + + owner = zfs_fuid_map_id(ZTOZSB(zp), zp->z_uid, cr, ZFS_OWNER); + return (secpolicy_vnode_any_access(cr, ZTOI(zp), owner) == 0); + } + return (B_TRUE); +} + +static int +zfs_zaccess_common(znode_t *zp, uint32_t v4_mode, uint32_t *working_mode, + boolean_t *check_privs, boolean_t skipaclchk, cred_t *cr) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + int err; + + *working_mode = v4_mode; + *check_privs = B_TRUE; + + /* + * Short circuit empty requests + */ + if (v4_mode == 0 || zsb->z_replay) { + *working_mode = 0; + return (0); + } + + if ((err = zfs_zaccess_dataset_check(zp, v4_mode)) != 0) { + *check_privs = B_FALSE; + return (err); + } + + /* + * The caller requested that the ACL check be skipped. This + * would only happen if the caller checked VOP_ACCESS() with a + * 32 bit ACE mask and already had the appropriate permissions. + */ + if (skipaclchk) { + *working_mode = 0; + return (0); + } + + return (zfs_zaccess_aces_check(zp, working_mode, B_FALSE, cr)); +} + +static int +zfs_zaccess_append(znode_t *zp, uint32_t *working_mode, boolean_t *check_privs, + cred_t *cr) +{ + if (*working_mode != ACE_WRITE_DATA) + return (SET_ERROR(EACCES)); + + return (zfs_zaccess_common(zp, ACE_APPEND_DATA, working_mode, + check_privs, B_FALSE, cr)); +} + +int +zfs_fastaccesschk_execute(znode_t *zdp, cred_t *cr) +{ + boolean_t owner = B_FALSE; + boolean_t groupmbr = B_FALSE; + boolean_t is_attr; + uid_t uid = crgetuid(cr); + int error; + + if (zdp->z_pflags & ZFS_AV_QUARANTINED) + return (SET_ERROR(EACCES)); + + is_attr = ((zdp->z_pflags & ZFS_XATTR) && + (S_ISDIR(ZTOI(zdp)->i_mode))); + if (is_attr) + goto slow; + + + mutex_enter(&zdp->z_acl_lock); + + if (zdp->z_pflags & ZFS_NO_EXECS_DENIED) { + mutex_exit(&zdp->z_acl_lock); + return (0); + } + + if (FUID_INDEX(zdp->z_uid) != 0 || FUID_INDEX(zdp->z_gid) != 0) { + mutex_exit(&zdp->z_acl_lock); + goto slow; + } + + if (uid == zdp->z_uid) { + owner = B_TRUE; + if (zdp->z_mode & S_IXUSR) { + mutex_exit(&zdp->z_acl_lock); + return (0); + } else { + mutex_exit(&zdp->z_acl_lock); + goto slow; + } + } + if (groupmember(zdp->z_gid, cr)) { + groupmbr = B_TRUE; + if (zdp->z_mode & S_IXGRP) { + mutex_exit(&zdp->z_acl_lock); + return (0); + } else { + mutex_exit(&zdp->z_acl_lock); + goto slow; + } + } + if (!owner && !groupmbr) { + if (zdp->z_mode & S_IXOTH) { + mutex_exit(&zdp->z_acl_lock); + return (0); + } + } + + mutex_exit(&zdp->z_acl_lock); + +slow: + DTRACE_PROBE(zfs__fastpath__execute__access__miss); + ZFS_ENTER(ZTOZSB(zdp)); + error = zfs_zaccess(zdp, ACE_EXECUTE, 0, B_FALSE, cr); + ZFS_EXIT(ZTOZSB(zdp)); + return (error); +} + +/* + * Determine whether Access should be granted/denied. + * + * The least priv subsytem is always consulted as a basic privilege + * can define any form of access. + */ +int +zfs_zaccess(znode_t *zp, int mode, int flags, boolean_t skipaclchk, cred_t *cr) +{ + uint32_t working_mode; + int error; + boolean_t check_privs; + znode_t *check_zp = zp; + mode_t needed_bits; + uid_t owner; + + /* + * If attribute then validate against base file + */ + if ((zp->z_pflags & ZFS_XATTR) && S_ISDIR(ZTOI(zp)->i_mode)) { + uint64_t parent; + + rw_enter(&zp->z_xattr_lock, RW_READER); + if (zp->z_xattr_parent) { + check_zp = zp->z_xattr_parent; + rw_exit(&zp->z_xattr_lock); + + /* + * Verify a lookup yields the same znode. + */ + ASSERT3S(sa_lookup(zp->z_sa_hdl, SA_ZPL_PARENT( + ZTOZSB(zp)), &parent, sizeof (parent)), ==, 0); + ASSERT3U(check_zp->z_id, ==, parent); + } else { + rw_exit(&zp->z_xattr_lock); + + error = sa_lookup(zp->z_sa_hdl, SA_ZPL_PARENT( + ZTOZSB(zp)), &parent, sizeof (parent)); + if (error) + return (error); + + /* + * Cache the lookup on the parent file znode as + * zp->z_xattr_parent and hold a reference. This + * effectively pins the parent in memory until all + * child xattr znodes have been destroyed and + * release their references in zfs_inode_destroy(). + */ + error = zfs_zget(ZTOZSB(zp), parent, &check_zp); + if (error) + return (error); + + rw_enter(&zp->z_xattr_lock, RW_WRITER); + if (zp->z_xattr_parent == NULL) + zp->z_xattr_parent = check_zp; + rw_exit(&zp->z_xattr_lock); + } + + /* + * fixup mode to map to xattr perms + */ + + if (mode & (ACE_WRITE_DATA|ACE_APPEND_DATA)) { + mode &= ~(ACE_WRITE_DATA|ACE_APPEND_DATA); + mode |= ACE_WRITE_NAMED_ATTRS; + } + + if (mode & (ACE_READ_DATA|ACE_EXECUTE)) { + mode &= ~(ACE_READ_DATA|ACE_EXECUTE); + mode |= ACE_READ_NAMED_ATTRS; + } + } + + owner = zfs_fuid_map_id(ZTOZSB(zp), zp->z_uid, cr, ZFS_OWNER); + /* + * Map the bits required to the standard inode flags + * S_IRUSR|S_IWUSR|S_IXUSR in the needed_bits. Map the bits + * mapped by working_mode (currently missing) in missing_bits. + * Call secpolicy_vnode_access2() with (needed_bits & ~checkmode), + * needed_bits. + */ + needed_bits = 0; + + working_mode = mode; + if ((working_mode & (ACE_READ_ACL|ACE_READ_ATTRIBUTES)) && + owner == crgetuid(cr)) + working_mode &= ~(ACE_READ_ACL|ACE_READ_ATTRIBUTES); + + if (working_mode & (ACE_READ_DATA|ACE_READ_NAMED_ATTRS| + ACE_READ_ACL|ACE_READ_ATTRIBUTES|ACE_SYNCHRONIZE)) + needed_bits |= S_IRUSR; + if (working_mode & (ACE_WRITE_DATA|ACE_WRITE_NAMED_ATTRS| + ACE_APPEND_DATA|ACE_WRITE_ATTRIBUTES|ACE_SYNCHRONIZE)) + needed_bits |= S_IWUSR; + if (working_mode & ACE_EXECUTE) + needed_bits |= S_IXUSR; + + if ((error = zfs_zaccess_common(check_zp, mode, &working_mode, + &check_privs, skipaclchk, cr)) == 0) { + return (secpolicy_vnode_access2(cr, ZTOI(zp), owner, + needed_bits, needed_bits)); + } + + if (error && !check_privs) { + return (error); + } + + if (error && (flags & V_APPEND)) { + error = zfs_zaccess_append(zp, &working_mode, &check_privs, cr); + } + + if (error && check_privs) { + mode_t checkmode = 0; + + /* + * First check for implicit owner permission on + * read_acl/read_attributes + */ + + error = 0; + ASSERT(working_mode != 0); + + if ((working_mode & (ACE_READ_ACL|ACE_READ_ATTRIBUTES) && + owner == crgetuid(cr))) + working_mode &= ~(ACE_READ_ACL|ACE_READ_ATTRIBUTES); + + if (working_mode & (ACE_READ_DATA|ACE_READ_NAMED_ATTRS| + ACE_READ_ACL|ACE_READ_ATTRIBUTES|ACE_SYNCHRONIZE)) + checkmode |= S_IRUSR; + if (working_mode & (ACE_WRITE_DATA|ACE_WRITE_NAMED_ATTRS| + ACE_APPEND_DATA|ACE_WRITE_ATTRIBUTES|ACE_SYNCHRONIZE)) + checkmode |= S_IWUSR; + if (working_mode & ACE_EXECUTE) + checkmode |= S_IXUSR; + + error = secpolicy_vnode_access2(cr, ZTOI(check_zp), owner, + needed_bits & ~checkmode, needed_bits); + + if (error == 0 && (working_mode & ACE_WRITE_OWNER)) + error = secpolicy_vnode_chown(cr, owner); + if (error == 0 && (working_mode & ACE_WRITE_ACL)) + error = secpolicy_vnode_setdac(cr, owner); + + if (error == 0 && (working_mode & + (ACE_DELETE|ACE_DELETE_CHILD))) + error = secpolicy_vnode_remove(cr); + + if (error == 0 && (working_mode & ACE_SYNCHRONIZE)) { + error = secpolicy_vnode_chown(cr, owner); + } + if (error == 0) { + /* + * See if any bits other than those already checked + * for are still present. If so then return EACCES + */ + if (working_mode & ~(ZFS_CHECKED_MASKS)) { + error = SET_ERROR(EACCES); + } + } + } else if (error == 0) { + error = secpolicy_vnode_access2(cr, ZTOI(zp), owner, + needed_bits, needed_bits); + } + + return (error); +} + +/* + * Translate traditional unix S_IRUSR/S_IWUSR/S_IXUSR mode into + * native ACL format and call zfs_zaccess() + */ +int +zfs_zaccess_rwx(znode_t *zp, mode_t mode, int flags, cred_t *cr) +{ + return (zfs_zaccess(zp, zfs_unix_to_v4(mode >> 6), flags, B_FALSE, cr)); +} + +/* + * Access function for secpolicy_vnode_setattr + */ +int +zfs_zaccess_unix(znode_t *zp, mode_t mode, cred_t *cr) +{ + int v4_mode = zfs_unix_to_v4(mode >> 6); + + return (zfs_zaccess(zp, v4_mode, 0, B_FALSE, cr)); +} + +static int +zfs_delete_final_check(znode_t *zp, znode_t *dzp, + mode_t available_perms, cred_t *cr) +{ + int error; + uid_t downer; + + downer = zfs_fuid_map_id(ZTOZSB(dzp), dzp->z_uid, cr, ZFS_OWNER); + + error = secpolicy_vnode_access2(cr, ZTOI(dzp), + downer, available_perms, S_IWUSR|S_IXUSR); + + if (error == 0) + error = zfs_sticky_remove_access(dzp, zp, cr); + + return (error); +} + +/* + * Determine whether Access should be granted/deny, without + * consulting least priv subsystem. + * + * The following chart is the recommended NFSv4 enforcement for + * ability to delete an object. + * + * ------------------------------------------------------- + * | Parent Dir | Target Object Permissions | + * | permissions | | + * ------------------------------------------------------- + * | | ACL Allows | ACL Denies| Delete | + * | | Delete | Delete | unspecified| + * ------------------------------------------------------- + * | ACL Allows | Permit | Permit | Permit | + * | DELETE_CHILD | | + * ------------------------------------------------------- + * | ACL Denies | Permit | Deny | Deny | + * | DELETE_CHILD | | | | + * ------------------------------------------------------- + * | ACL specifies | | | | + * | only allow | Permit | Permit | Permit | + * | write and | | | | + * | execute | | | | + * ------------------------------------------------------- + * | ACL denies | | | | + * | write and | Permit | Deny | Deny | + * | execute | | | | + * ------------------------------------------------------- + * ^ + * | + * No search privilege, can't even look up file? + * + */ +int +zfs_zaccess_delete(znode_t *dzp, znode_t *zp, cred_t *cr) +{ + uint32_t dzp_working_mode = 0; + uint32_t zp_working_mode = 0; + int dzp_error, zp_error; + mode_t available_perms; + boolean_t dzpcheck_privs = B_TRUE; + boolean_t zpcheck_privs = B_TRUE; + + /* + * We want specific DELETE permissions to + * take precedence over WRITE/EXECUTE. We don't + * want an ACL such as this to mess us up. + * user:joe:write_data:deny,user:joe:delete:allow + * + * However, deny permissions may ultimately be overridden + * by secpolicy_vnode_access(). + * + * We will ask for all of the necessary permissions and then + * look at the working modes from the directory and target object + * to determine what was found. + */ + + if (zp->z_pflags & (ZFS_IMMUTABLE | ZFS_NOUNLINK)) + return (SET_ERROR(EPERM)); + + /* + * First row + * If the directory permissions allow the delete, we are done. + */ + if ((dzp_error = zfs_zaccess_common(dzp, ACE_DELETE_CHILD, + &dzp_working_mode, &dzpcheck_privs, B_FALSE, cr)) == 0) + return (0); + + /* + * If target object has delete permission then we are done + */ + if ((zp_error = zfs_zaccess_common(zp, ACE_DELETE, &zp_working_mode, + &zpcheck_privs, B_FALSE, cr)) == 0) + return (0); + + ASSERT(dzp_error && zp_error); + + if (!dzpcheck_privs) + return (dzp_error); + if (!zpcheck_privs) + return (zp_error); + + /* + * Second row + * + * If directory returns EACCES then delete_child was denied + * due to deny delete_child. In this case send the request through + * secpolicy_vnode_remove(). We don't use zfs_delete_final_check() + * since that *could* allow the delete based on write/execute permission + * and we want delete permissions to override write/execute. + */ + + if (dzp_error == EACCES) + return (secpolicy_vnode_remove(cr)); + + /* + * Third Row + * only need to see if we have write/execute on directory. + */ + + dzp_error = zfs_zaccess_common(dzp, ACE_EXECUTE|ACE_WRITE_DATA, + &dzp_working_mode, &dzpcheck_privs, B_FALSE, cr); + + if (dzp_error != 0 && !dzpcheck_privs) + return (dzp_error); + + /* + * Fourth row + */ + + available_perms = (dzp_working_mode & ACE_WRITE_DATA) ? 0 : S_IWUSR; + available_perms |= (dzp_working_mode & ACE_EXECUTE) ? 0 : S_IXUSR; + + return (zfs_delete_final_check(zp, dzp, available_perms, cr)); + +} + +int +zfs_zaccess_rename(znode_t *sdzp, znode_t *szp, znode_t *tdzp, + znode_t *tzp, cred_t *cr) +{ + int add_perm; + int error; + + if (szp->z_pflags & ZFS_AV_QUARANTINED) + return (SET_ERROR(EACCES)); + + add_perm = S_ISDIR(ZTOI(szp)->i_mode) ? + ACE_ADD_SUBDIRECTORY : ACE_ADD_FILE; + + /* + * Rename permissions are combination of delete permission + + * add file/subdir permission. + */ + + /* + * first make sure we do the delete portion. + * + * If that succeeds then check for add_file/add_subdir permissions + */ + + if ((error = zfs_zaccess_delete(sdzp, szp, cr))) + return (error); + + /* + * If we have a tzp, see if we can delete it? + */ + if (tzp) { + if ((error = zfs_zaccess_delete(tdzp, tzp, cr))) + return (error); + } + + /* + * Now check for add permissions + */ + error = zfs_zaccess(tdzp, add_perm, 0, B_FALSE, cr); + + return (error); +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_byteswap.c +++ linux-4.4.0/zfs/module/zfs/zfs_byteswap.c @@ -0,0 +1,205 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#include +#include +#include +#include +#include +#include + +void +zfs_oldace_byteswap(ace_t *ace, int ace_cnt) +{ + int i; + + for (i = 0; i != ace_cnt; i++, ace++) { + ace->a_who = BSWAP_32(ace->a_who); + ace->a_access_mask = BSWAP_32(ace->a_access_mask); + ace->a_flags = BSWAP_16(ace->a_flags); + ace->a_type = BSWAP_16(ace->a_type); + } +} + +/* + * swap ace_t and ace_oject_t + */ +void +zfs_ace_byteswap(void *buf, size_t size, boolean_t zfs_layout) +{ + caddr_t end; + caddr_t ptr; + zfs_ace_t *zacep = NULL; + ace_t *acep; + uint16_t entry_type; + size_t entry_size; + int ace_type; + + end = (caddr_t)buf + size; + ptr = buf; + + while (ptr < end) { + if (zfs_layout) { + /* + * Avoid overrun. Embedded aces can have one + * of several sizes. We don't know exactly + * how many our present, only the size of the + * buffer containing them. That size may be + * larger than needed to hold the aces + * present. As long as we do not do any + * swapping beyond the end of our block we are + * okay. It it safe to swap any non-ace data + * within the block since it is just zeros. + */ + if (ptr + sizeof (zfs_ace_hdr_t) > end) { + break; + } + zacep = (zfs_ace_t *)ptr; + zacep->z_hdr.z_access_mask = + BSWAP_32(zacep->z_hdr.z_access_mask); + zacep->z_hdr.z_flags = BSWAP_16(zacep->z_hdr.z_flags); + ace_type = zacep->z_hdr.z_type = + BSWAP_16(zacep->z_hdr.z_type); + entry_type = zacep->z_hdr.z_flags & ACE_TYPE_FLAGS; + } else { + /* Overrun avoidance */ + if (ptr + sizeof (ace_t) > end) { + break; + } + acep = (ace_t *)ptr; + acep->a_access_mask = BSWAP_32(acep->a_access_mask); + acep->a_flags = BSWAP_16(acep->a_flags); + ace_type = acep->a_type = BSWAP_16(acep->a_type); + acep->a_who = BSWAP_32(acep->a_who); + entry_type = acep->a_flags & ACE_TYPE_FLAGS; + } + switch (entry_type) { + case ACE_OWNER: + case ACE_EVERYONE: + case (ACE_IDENTIFIER_GROUP | ACE_GROUP): + entry_size = zfs_layout ? + sizeof (zfs_ace_hdr_t) : sizeof (ace_t); + break; + case ACE_IDENTIFIER_GROUP: + default: + /* Overrun avoidance */ + if (zfs_layout) { + if (ptr + sizeof (zfs_ace_t) <= end) { + zacep->z_fuid = BSWAP_64(zacep->z_fuid); + } else { + entry_size = sizeof (zfs_ace_t); + break; + } + } + switch (ace_type) { + case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: + case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: + case ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE: + case ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE: + entry_size = zfs_layout ? + sizeof (zfs_object_ace_t) : + sizeof (ace_object_t); + break; + default: + entry_size = zfs_layout ? sizeof (zfs_ace_t) : + sizeof (ace_t); + break; + } + } + ptr = ptr + entry_size; + } +} + +/* ARGSUSED */ +void +zfs_oldacl_byteswap(void *buf, size_t size) +{ + int cnt; + + /* + * Arggh, since we don't know how many ACEs are in + * the array, we have to swap the entire block + */ + + cnt = size / sizeof (ace_t); + + zfs_oldace_byteswap((ace_t *)buf, cnt); +} + +/* ARGSUSED */ +void +zfs_acl_byteswap(void *buf, size_t size) +{ + zfs_ace_byteswap(buf, size, B_TRUE); +} + +void +zfs_znode_byteswap(void *buf, size_t size) +{ + znode_phys_t *zp = buf; + + ASSERT(size >= sizeof (znode_phys_t)); + + zp->zp_crtime[0] = BSWAP_64(zp->zp_crtime[0]); + zp->zp_crtime[1] = BSWAP_64(zp->zp_crtime[1]); + zp->zp_atime[0] = BSWAP_64(zp->zp_atime[0]); + zp->zp_atime[1] = BSWAP_64(zp->zp_atime[1]); + zp->zp_mtime[0] = BSWAP_64(zp->zp_mtime[0]); + zp->zp_mtime[1] = BSWAP_64(zp->zp_mtime[1]); + zp->zp_ctime[0] = BSWAP_64(zp->zp_ctime[0]); + zp->zp_ctime[1] = BSWAP_64(zp->zp_ctime[1]); + zp->zp_gen = BSWAP_64(zp->zp_gen); + zp->zp_mode = BSWAP_64(zp->zp_mode); + zp->zp_size = BSWAP_64(zp->zp_size); + zp->zp_parent = BSWAP_64(zp->zp_parent); + zp->zp_links = BSWAP_64(zp->zp_links); + zp->zp_xattr = BSWAP_64(zp->zp_xattr); + zp->zp_rdev = BSWAP_64(zp->zp_rdev); + zp->zp_flags = BSWAP_64(zp->zp_flags); + zp->zp_uid = BSWAP_64(zp->zp_uid); + zp->zp_gid = BSWAP_64(zp->zp_gid); + zp->zp_zap = BSWAP_64(zp->zp_zap); + zp->zp_pad[0] = BSWAP_64(zp->zp_pad[0]); + zp->zp_pad[1] = BSWAP_64(zp->zp_pad[1]); + zp->zp_pad[2] = BSWAP_64(zp->zp_pad[2]); + + zp->zp_acl.z_acl_extern_obj = BSWAP_64(zp->zp_acl.z_acl_extern_obj); + zp->zp_acl.z_acl_size = BSWAP_32(zp->zp_acl.z_acl_size); + zp->zp_acl.z_acl_version = BSWAP_16(zp->zp_acl.z_acl_version); + zp->zp_acl.z_acl_count = BSWAP_16(zp->zp_acl.z_acl_count); + if (zp->zp_acl.z_acl_version == ZFS_ACL_VERSION) { + zfs_acl_byteswap((void *)&zp->zp_acl.z_ace_data[0], + ZFS_ACE_SPACE); + } else { + zfs_oldace_byteswap((ace_t *)&zp->zp_acl.z_ace_data[0], + ACE_SLOT_CNT); + } +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zfs_oldacl_byteswap); +EXPORT_SYMBOL(zfs_acl_byteswap); +EXPORT_SYMBOL(zfs_znode_byteswap); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_ctldir.c +++ linux-4.4.0/zfs/module/zfs/zfs_ctldir.c @@ -0,0 +1,1302 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * LLNL-CODE-403049. + * Rewritten for Linux by: + * Rohan Puri + * Brian Behlendorf + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +/* + * ZFS control directory (a.k.a. ".zfs") + * + * This directory provides a common location for all ZFS meta-objects. + * Currently, this is only the 'snapshot' and 'shares' directory, but this may + * expand in the future. The elements are built dynamically, as the hierarchy + * does not actually exist on disk. + * + * For 'snapshot', we don't want to have all snapshots always mounted, because + * this would take up a huge amount of space in /etc/mnttab. We have three + * types of objects: + * + * ctldir ------> snapshotdir -------> snapshot + * | + * | + * V + * mounted fs + * + * The 'snapshot' node contains just enough information to lookup '..' and act + * as a mountpoint for the snapshot. Whenever we lookup a specific snapshot, we + * perform an automount of the underlying filesystem and return the + * corresponding inode. + * + * All mounts are handled automatically by an user mode helper which invokes + * the mount mount procedure. Unmounts are handled by allowing the mount + * point to expire so the kernel may automatically unmount it. + * + * The '.zfs', '.zfs/snapshot', and all directories created under + * '.zfs/snapshot' (ie: '.zfs/snapshot/') all share the same + * share the same zfs_sb_t as the head filesystem (what '.zfs' lives under). + * + * File systems mounted on top of the '.zfs/snapshot/' paths + * (ie: snapshots) are complete ZFS filesystems and have their own unique + * zfs_sb_t. However, the fsid reported by these mounts will be the same + * as that used by the parent zfs_sb_t to make NFS happy. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "zfs_namecheck.h" + +/* + * Two AVL trees are maintained which contain all currently automounted + * snapshots. Every automounted snapshots maps to a single zfs_snapentry_t + * entry which MUST: + * + * - be attached to both trees, and + * - be unique, no duplicate entries are allowed. + * + * The zfs_snapshots_by_name tree is indexed by the full dataset name + * while the zfs_snapshots_by_objsetid tree is indexed by the unique + * objsetid. This allows for fast lookups either by name or objsetid. + */ +static avl_tree_t zfs_snapshots_by_name; +static avl_tree_t zfs_snapshots_by_objsetid; +static krwlock_t zfs_snapshot_lock; + +/* + * Control Directory Tunables (.zfs) + */ +int zfs_expire_snapshot = ZFSCTL_EXPIRE_SNAPSHOT; +int zfs_admin_snapshot = 0; + +/* + * Dedicated task queue for unmounting snapshots. + */ +static taskq_t *zfs_expire_taskq; + +typedef struct { + char *se_name; /* full snapshot name */ + char *se_path; /* full mount path */ + spa_t *se_spa; /* pool spa */ + uint64_t se_objsetid; /* snapshot objset id */ + struct dentry *se_root_dentry; /* snapshot root dentry */ + taskqid_t se_taskqid; /* scheduled unmount taskqid */ + avl_node_t se_node_name; /* zfs_snapshots_by_name link */ + avl_node_t se_node_objsetid; /* zfs_snapshots_by_objsetid link */ + refcount_t se_refcount; /* reference count */ +} zfs_snapentry_t; + +static void zfsctl_snapshot_unmount_delay_impl(zfs_snapentry_t *se, int delay); + +/* + * Allocate a new zfs_snapentry_t being careful to make a copy of the + * the snapshot name and provided mount point. No reference is taken. + */ +static zfs_snapentry_t * +zfsctl_snapshot_alloc(char *full_name, char *full_path, spa_t *spa, + uint64_t objsetid, struct dentry *root_dentry) +{ + zfs_snapentry_t *se; + + se = kmem_zalloc(sizeof (zfs_snapentry_t), KM_SLEEP); + + se->se_name = strdup(full_name); + se->se_path = strdup(full_path); + se->se_spa = spa; + se->se_objsetid = objsetid; + se->se_root_dentry = root_dentry; + se->se_taskqid = -1; + + refcount_create(&se->se_refcount); + + return (se); +} + +/* + * Free a zfs_snapentry_t the called must ensure there are no active + * references. + */ +static void +zfsctl_snapshot_free(zfs_snapentry_t *se) +{ + refcount_destroy(&se->se_refcount); + strfree(se->se_name); + strfree(se->se_path); + + kmem_free(se, sizeof (zfs_snapentry_t)); +} + +/* + * Hold a reference on the zfs_snapentry_t. + */ +static void +zfsctl_snapshot_hold(zfs_snapentry_t *se) +{ + refcount_add(&se->se_refcount, NULL); +} + +/* + * Release a reference on the zfs_snapentry_t. When the number of + * references drops to zero the structure will be freed. + */ +static void +zfsctl_snapshot_rele(zfs_snapentry_t *se) +{ + if (refcount_remove(&se->se_refcount, NULL) == 0) + zfsctl_snapshot_free(se); +} + +/* + * Add a zfs_snapentry_t to both the zfs_snapshots_by_name and + * zfs_snapshots_by_objsetid trees. While the zfs_snapentry_t is part + * of the trees a reference is held. + */ +static void +zfsctl_snapshot_add(zfs_snapentry_t *se) +{ + ASSERT(RW_WRITE_HELD(&zfs_snapshot_lock)); + refcount_add(&se->se_refcount, NULL); + avl_add(&zfs_snapshots_by_name, se); + avl_add(&zfs_snapshots_by_objsetid, se); +} + +/* + * Remove a zfs_snapentry_t from both the zfs_snapshots_by_name and + * zfs_snapshots_by_objsetid trees. Upon removal a reference is dropped, + * this can result in the structure being freed if that was the last + * remaining reference. + */ +static void +zfsctl_snapshot_remove(zfs_snapentry_t *se) +{ + ASSERT(RW_WRITE_HELD(&zfs_snapshot_lock)); + avl_remove(&zfs_snapshots_by_name, se); + avl_remove(&zfs_snapshots_by_objsetid, se); + zfsctl_snapshot_rele(se); +} + +/* + * Snapshot name comparison function for the zfs_snapshots_by_name. + */ +static int +snapentry_compare_by_name(const void *a, const void *b) +{ + const zfs_snapentry_t *se_a = a; + const zfs_snapentry_t *se_b = b; + int ret; + + ret = strcmp(se_a->se_name, se_b->se_name); + + if (ret < 0) + return (-1); + else if (ret > 0) + return (1); + else + return (0); +} + +/* + * Snapshot name comparison function for the zfs_snapshots_by_objsetid. + */ +static int +snapentry_compare_by_objsetid(const void *a, const void *b) +{ + const zfs_snapentry_t *se_a = a; + const zfs_snapentry_t *se_b = b; + + if (se_a->se_spa != se_b->se_spa) + return ((ulong_t)se_a->se_spa < (ulong_t)se_b->se_spa ? -1 : 1); + + if (se_a->se_objsetid < se_b->se_objsetid) + return (-1); + else if (se_a->se_objsetid > se_b->se_objsetid) + return (1); + else + return (0); +} + +/* + * Find a zfs_snapentry_t in zfs_snapshots_by_name. If the snapname + * is found a pointer to the zfs_snapentry_t is returned and a reference + * taken on the structure. The caller is responsible for dropping the + * reference with zfsctl_snapshot_rele(). If the snapname is not found + * NULL will be returned. + */ +static zfs_snapentry_t * +zfsctl_snapshot_find_by_name(char *snapname) +{ + zfs_snapentry_t *se, search; + + ASSERT(RW_LOCK_HELD(&zfs_snapshot_lock)); + + search.se_name = snapname; + se = avl_find(&zfs_snapshots_by_name, &search, NULL); + if (se) + refcount_add(&se->se_refcount, NULL); + + return (se); +} + +/* + * Find a zfs_snapentry_t in zfs_snapshots_by_objsetid given the objset id + * rather than the snapname. In all other respects it behaves the same + * as zfsctl_snapshot_find_by_name(). + */ +static zfs_snapentry_t * +zfsctl_snapshot_find_by_objsetid(spa_t *spa, uint64_t objsetid) +{ + zfs_snapentry_t *se, search; + + ASSERT(RW_LOCK_HELD(&zfs_snapshot_lock)); + + search.se_spa = spa; + search.se_objsetid = objsetid; + se = avl_find(&zfs_snapshots_by_objsetid, &search, NULL); + if (se) + refcount_add(&se->se_refcount, NULL); + + return (se); +} + +/* + * Rename a zfs_snapentry_t in the zfs_snapshots_by_name. The structure is + * removed, renamed, and added back to the new correct location in the tree. + */ +static int +zfsctl_snapshot_rename(char *old_snapname, char *new_snapname) +{ + zfs_snapentry_t *se; + + ASSERT(RW_WRITE_HELD(&zfs_snapshot_lock)); + + se = zfsctl_snapshot_find_by_name(old_snapname); + if (se == NULL) + return (ENOENT); + + zfsctl_snapshot_remove(se); + strfree(se->se_name); + se->se_name = strdup(new_snapname); + zfsctl_snapshot_add(se); + zfsctl_snapshot_rele(se); + + return (0); +} + +/* + * Delayed task responsible for unmounting an expired automounted snapshot. + */ +static void +snapentry_expire(void *data) +{ + zfs_snapentry_t *se = (zfs_snapentry_t *)data; + spa_t *spa = se->se_spa; + uint64_t objsetid = se->se_objsetid; + + if (zfs_expire_snapshot <= 0) { + zfsctl_snapshot_rele(se); + return; + } + + se->se_taskqid = -1; + (void) zfsctl_snapshot_unmount(se->se_name, MNT_EXPIRE); + zfsctl_snapshot_rele(se); + + /* + * Reschedule the unmount if the zfs_snapentry_t wasn't removed. + * This can occur when the snapshot is busy. + */ + rw_enter(&zfs_snapshot_lock, RW_READER); + if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) != NULL) { + zfsctl_snapshot_unmount_delay_impl(se, zfs_expire_snapshot); + zfsctl_snapshot_rele(se); + } + rw_exit(&zfs_snapshot_lock); +} + +/* + * Cancel an automatic unmount of a snapname. This callback is responsible + * for dropping the reference on the zfs_snapentry_t which was taken when + * during dispatch. + */ +static void +zfsctl_snapshot_unmount_cancel(zfs_snapentry_t *se) +{ + ASSERT(RW_LOCK_HELD(&zfs_snapshot_lock)); + + if (taskq_cancel_id(zfs_expire_taskq, se->se_taskqid) == 0) { + se->se_taskqid = -1; + zfsctl_snapshot_rele(se); + } +} + +/* + * Dispatch the unmount task for delayed handling with a hold protecting it. + */ +static void +zfsctl_snapshot_unmount_delay_impl(zfs_snapentry_t *se, int delay) +{ + ASSERT3S(se->se_taskqid, ==, -1); + + if (delay <= 0) + return; + + zfsctl_snapshot_hold(se); + se->se_taskqid = taskq_dispatch_delay(zfs_expire_taskq, + snapentry_expire, se, TQ_SLEEP, ddi_get_lbolt() + delay * HZ); +} + +/* + * Schedule an automatic unmount of objset id to occur in delay seconds from + * now. Any previous delayed unmount will be cancelled in favor of the + * updated deadline. A reference is taken by zfsctl_snapshot_find_by_name() + * and held until the outstanding task is handled or cancelled. + */ +int +zfsctl_snapshot_unmount_delay(spa_t *spa, uint64_t objsetid, int delay) +{ + zfs_snapentry_t *se; + int error = ENOENT; + + rw_enter(&zfs_snapshot_lock, RW_READER); + if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) != NULL) { + zfsctl_snapshot_unmount_cancel(se); + zfsctl_snapshot_unmount_delay_impl(se, delay); + zfsctl_snapshot_rele(se); + error = 0; + } + rw_exit(&zfs_snapshot_lock); + + return (error); +} + +/* + * Check if snapname is currently mounted. Returned non-zero when mounted + * and zero when unmounted. + */ +static boolean_t +zfsctl_snapshot_ismounted(char *snapname) +{ + zfs_snapentry_t *se; + boolean_t ismounted = B_FALSE; + + rw_enter(&zfs_snapshot_lock, RW_READER); + if ((se = zfsctl_snapshot_find_by_name(snapname)) != NULL) { + zfsctl_snapshot_rele(se); + ismounted = B_TRUE; + } + rw_exit(&zfs_snapshot_lock); + + return (ismounted); +} + +/* + * Check if the given inode is a part of the virtual .zfs directory. + */ +boolean_t +zfsctl_is_node(struct inode *ip) +{ + return (ITOZ(ip)->z_is_ctldir); +} + +/* + * Check if the given inode is a .zfs/snapshots/snapname directory. + */ +boolean_t +zfsctl_is_snapdir(struct inode *ip) +{ + return (zfsctl_is_node(ip) && (ip->i_ino <= ZFSCTL_INO_SNAPDIRS)); +} + +/* + * Allocate a new inode with the passed id and ops. + */ +static struct inode * +zfsctl_inode_alloc(zfs_sb_t *zsb, uint64_t id, + const struct file_operations *fops, const struct inode_operations *ops) +{ + struct timespec now = current_fs_time(zsb->z_sb); + struct inode *ip; + znode_t *zp; + + ip = new_inode(zsb->z_sb); + if (ip == NULL) + return (NULL); + + zp = ITOZ(ip); + ASSERT3P(zp->z_dirlocks, ==, NULL); + ASSERT3P(zp->z_acl_cached, ==, NULL); + ASSERT3P(zp->z_xattr_cached, ==, NULL); + zp->z_id = id; + zp->z_unlinked = 0; + zp->z_atime_dirty = 0; + zp->z_zn_prefetch = 0; + zp->z_moved = 0; + zp->z_sa_hdl = NULL; + zp->z_blksz = 0; + zp->z_seq = 0; + zp->z_mapcnt = 0; + zp->z_gen = 0; + zp->z_size = 0; + zp->z_atime[0] = 0; + zp->z_atime[1] = 0; + zp->z_links = 0; + zp->z_pflags = 0; + zp->z_uid = 0; + zp->z_gid = 0; + zp->z_mode = 0; + zp->z_sync_cnt = 0; + zp->z_is_zvol = B_FALSE; + zp->z_is_mapped = B_FALSE; + zp->z_is_ctldir = B_TRUE; + zp->z_is_sa = B_FALSE; + zp->z_is_stale = B_FALSE; + ip->i_ino = id; + ip->i_mode = (S_IFDIR | S_IRUGO | S_IXUGO); + ip->i_uid = SUID_TO_KUID(0); + ip->i_gid = SGID_TO_KGID(0); + ip->i_blkbits = SPA_MINBLOCKSHIFT; + ip->i_atime = now; + ip->i_mtime = now; + ip->i_ctime = now; + ip->i_fop = fops; + ip->i_op = ops; + + if (insert_inode_locked(ip)) { + unlock_new_inode(ip); + iput(ip); + return (NULL); + } + + mutex_enter(&zsb->z_znodes_lock); + list_insert_tail(&zsb->z_all_znodes, zp); + zsb->z_nr_znodes++; + membar_producer(); + mutex_exit(&zsb->z_znodes_lock); + + unlock_new_inode(ip); + + return (ip); +} + +/* + * Lookup the inode with given id, it will be allocated if needed. + */ +static struct inode * +zfsctl_inode_lookup(zfs_sb_t *zsb, uint64_t id, + const struct file_operations *fops, const struct inode_operations *ops) +{ + struct inode *ip = NULL; + + while (ip == NULL) { + ip = ilookup(zsb->z_sb, (unsigned long)id); + if (ip) + break; + + /* May fail due to concurrent zfsctl_inode_alloc() */ + ip = zfsctl_inode_alloc(zsb, id, fops, ops); + } + + return (ip); +} + +/* + * Create the '.zfs' directory. This directory is cached as part of the VFS + * structure. This results in a hold on the zfs_sb_t. The code in zfs_umount() + * therefore checks against a vfs_count of 2 instead of 1. This reference + * is removed when the ctldir is destroyed in the unmount. All other entities + * under the '.zfs' directory are created dynamically as needed. + * + * Because the dynamically created '.zfs' directory entries assume the use + * of 64-bit inode numbers this support must be disabled on 32-bit systems. + */ +int +zfsctl_create(zfs_sb_t *zsb) +{ +#if defined(CONFIG_64BIT) + ASSERT(zsb->z_ctldir == NULL); + + zsb->z_ctldir = zfsctl_inode_alloc(zsb, ZFSCTL_INO_ROOT, + &zpl_fops_root, &zpl_ops_root); + if (zsb->z_ctldir == NULL) + return (SET_ERROR(ENOENT)); + + return (0); +#else + return (SET_ERROR(EOPNOTSUPP)); +#endif /* CONFIG_64BIT */ +} + +/* + * Destroy the '.zfs' directory or remove a snapshot from zfs_snapshots_by_name. + * Only called when the filesystem is unmounted. + */ +void +zfsctl_destroy(zfs_sb_t *zsb) +{ + if (zsb->z_issnap) { + zfs_snapentry_t *se; + spa_t *spa = zsb->z_os->os_spa; + uint64_t objsetid = dmu_objset_id(zsb->z_os); + + rw_enter(&zfs_snapshot_lock, RW_WRITER); + if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) + != NULL) { + zfsctl_snapshot_unmount_cancel(se); + zfsctl_snapshot_remove(se); + zfsctl_snapshot_rele(se); + } + rw_exit(&zfs_snapshot_lock); + } else if (zsb->z_ctldir) { + iput(zsb->z_ctldir); + zsb->z_ctldir = NULL; + } +} + +/* + * Given a root znode, retrieve the associated .zfs directory. + * Add a hold to the vnode and return it. + */ +struct inode * +zfsctl_root(znode_t *zp) +{ + ASSERT(zfs_has_ctldir(zp)); + igrab(ZTOZSB(zp)->z_ctldir); + return (ZTOZSB(zp)->z_ctldir); +} +/* + * Generate a long fid which includes the root object and objset of a + * snapshot but not the generation number. For the root object the + * generation number is ignored when zero to avoid needing to open + * the dataset when generating fids for the snapshot names. + */ +static int +zfsctl_snapdir_fid(struct inode *ip, fid_t *fidp) +{ + zfs_sb_t *zsb = ITOZSB(ip); + zfid_short_t *zfid = (zfid_short_t *)fidp; + zfid_long_t *zlfid = (zfid_long_t *)fidp; + uint32_t gen = 0; + uint64_t object; + uint64_t objsetid; + int i; + + object = zsb->z_root; + objsetid = ZFSCTL_INO_SNAPDIRS - ip->i_ino; + zfid->zf_len = LONG_FID_LEN; + + for (i = 0; i < sizeof (zfid->zf_object); i++) + zfid->zf_object[i] = (uint8_t)(object >> (8 * i)); + + for (i = 0; i < sizeof (zfid->zf_gen); i++) + zfid->zf_gen[i] = (uint8_t)(gen >> (8 * i)); + + for (i = 0; i < sizeof (zlfid->zf_setid); i++) + zlfid->zf_setid[i] = (uint8_t)(objsetid >> (8 * i)); + + for (i = 0; i < sizeof (zlfid->zf_setgen); i++) + zlfid->zf_setgen[i] = 0; + + return (0); +} + +/* + * Generate an appropriate fid for an entry in the .zfs directory. + */ +int +zfsctl_fid(struct inode *ip, fid_t *fidp) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + uint64_t object = zp->z_id; + zfid_short_t *zfid; + int i; + + ZFS_ENTER(zsb); + + if (fidp->fid_len < SHORT_FID_LEN) { + fidp->fid_len = SHORT_FID_LEN; + ZFS_EXIT(zsb); + return (SET_ERROR(ENOSPC)); + } + + if (zfsctl_is_snapdir(ip)) { + ZFS_EXIT(zsb); + return (zfsctl_snapdir_fid(ip, fidp)); + } + + zfid = (zfid_short_t *)fidp; + + zfid->zf_len = SHORT_FID_LEN; + + for (i = 0; i < sizeof (zfid->zf_object); i++) + zfid->zf_object[i] = (uint8_t)(object >> (8 * i)); + + /* .zfs znodes always have a generation number of 0 */ + for (i = 0; i < sizeof (zfid->zf_gen); i++) + zfid->zf_gen[i] = 0; + + ZFS_EXIT(zsb); + return (0); +} + +/* + * Construct a full dataset name in full_name: "pool/dataset@snap_name" + */ +static int +zfsctl_snapshot_name(zfs_sb_t *zsb, const char *snap_name, int len, + char *full_name) +{ + objset_t *os = zsb->z_os; + + if (zfs_component_namecheck(snap_name, NULL, NULL) != 0) + return (SET_ERROR(EILSEQ)); + + dmu_objset_name(os, full_name); + if ((strlen(full_name) + 1 + strlen(snap_name)) >= len) + return (SET_ERROR(ENAMETOOLONG)); + + (void) strcat(full_name, "@"); + (void) strcat(full_name, snap_name); + + return (0); +} + +/* + * Returns full path in full_path: "/pool/dataset/.zfs/snapshot/snap_name/" + */ +static int +zfsctl_snapshot_path(struct path *path, int len, char *full_path) +{ + char *path_buffer, *path_ptr; + int path_len, error = 0; + + path_buffer = kmem_alloc(len, KM_SLEEP); + + path_ptr = d_path(path, path_buffer, len); + if (IS_ERR(path_ptr)) { + error = -PTR_ERR(path_ptr); + goto out; + } + + path_len = path_buffer + len - 1 - path_ptr; + if (path_len > len) { + error = SET_ERROR(EFAULT); + goto out; + } + + memcpy(full_path, path_ptr, path_len); + full_path[path_len] = '\0'; +out: + kmem_free(path_buffer, len); + + return (error); +} + +/* + * Returns full path in full_path: "/pool/dataset/.zfs/snapshot/snap_name/" + */ +static int +zfsctl_snapshot_path_objset(zfs_sb_t *zsb, uint64_t objsetid, + int path_len, char *full_path) +{ + objset_t *os = zsb->z_os; + fstrans_cookie_t cookie; + char *snapname; + boolean_t case_conflict; + uint64_t id, pos = 0; + int error = 0; + + if (zsb->z_mntopts->z_mntpoint == NULL) + return (ENOENT); + + cookie = spl_fstrans_mark(); + snapname = kmem_alloc(MAXNAMELEN, KM_SLEEP); + + while (error == 0) { + dsl_pool_config_enter(dmu_objset_pool(os), FTAG); + error = dmu_snapshot_list_next(zsb->z_os, MAXNAMELEN, + snapname, &id, &pos, &case_conflict); + dsl_pool_config_exit(dmu_objset_pool(os), FTAG); + if (error) + goto out; + + if (id == objsetid) + break; + } + + memset(full_path, 0, path_len); + snprintf(full_path, path_len - 1, "%s/.zfs/snapshot/%s", + zsb->z_mntopts->z_mntpoint, snapname); +out: + kmem_free(snapname, MAXNAMELEN); + spl_fstrans_unmark(cookie); + + return (error); +} + +/* + * Special case the handling of "..". + */ +int +zfsctl_root_lookup(struct inode *dip, char *name, struct inode **ipp, + int flags, cred_t *cr, int *direntflags, pathname_t *realpnp) +{ + zfs_sb_t *zsb = ITOZSB(dip); + int error = 0; + + ZFS_ENTER(zsb); + + if (strcmp(name, "..") == 0) { + *ipp = dip->i_sb->s_root->d_inode; + } else if (strcmp(name, ZFS_SNAPDIR_NAME) == 0) { + *ipp = zfsctl_inode_lookup(zsb, ZFSCTL_INO_SNAPDIR, + &zpl_fops_snapdir, &zpl_ops_snapdir); + } else if (strcmp(name, ZFS_SHAREDIR_NAME) == 0) { + *ipp = zfsctl_inode_lookup(zsb, ZFSCTL_INO_SHARES, + &zpl_fops_shares, &zpl_ops_shares); + } else { + *ipp = NULL; + } + + if (*ipp == NULL) + error = SET_ERROR(ENOENT); + + ZFS_EXIT(zsb); + + return (error); +} + +/* + * Lookup entry point for the 'snapshot' directory. Try to open the + * snapshot if it exist, creating the pseudo filesystem inode as necessary. + * Perform a mount of the associated dataset on top of the inode. + */ +int +zfsctl_snapdir_lookup(struct inode *dip, char *name, struct inode **ipp, + int flags, cred_t *cr, int *direntflags, pathname_t *realpnp) +{ + zfs_sb_t *zsb = ITOZSB(dip); + uint64_t id; + int error; + + ZFS_ENTER(zsb); + + error = dmu_snapshot_lookup(zsb->z_os, name, &id); + if (error) { + ZFS_EXIT(zsb); + return (error); + } + + *ipp = zfsctl_inode_lookup(zsb, ZFSCTL_INO_SNAPDIRS - id, + &simple_dir_operations, &simple_dir_inode_operations); + if (*ipp == NULL) + error = SET_ERROR(ENOENT); + + ZFS_EXIT(zsb); + + return (error); +} + +/* + * Renaming a directory under '.zfs/snapshot' will automatically trigger + * a rename of the snapshot to the new given name. The rename is confined + * to the '.zfs/snapshot' directory snapshots cannot be moved elsewhere. + */ +int +zfsctl_snapdir_rename(struct inode *sdip, char *snm, + struct inode *tdip, char *tnm, cred_t *cr, int flags) +{ + zfs_sb_t *zsb = ITOZSB(sdip); + char *to, *from, *real, *fsname; + int error; + + if (!zfs_admin_snapshot) + return (EACCES); + + ZFS_ENTER(zsb); + + to = kmem_alloc(MAXNAMELEN, KM_SLEEP); + from = kmem_alloc(MAXNAMELEN, KM_SLEEP); + real = kmem_alloc(MAXNAMELEN, KM_SLEEP); + fsname = kmem_alloc(MAXNAMELEN, KM_SLEEP); + + if (zsb->z_case == ZFS_CASE_INSENSITIVE) { + error = dmu_snapshot_realname(zsb->z_os, snm, real, + MAXNAMELEN, NULL); + if (error == 0) { + snm = real; + } else if (error != ENOTSUP) { + goto out; + } + } + + dmu_objset_name(zsb->z_os, fsname); + + error = zfsctl_snapshot_name(ITOZSB(sdip), snm, MAXNAMELEN, from); + if (error == 0) + error = zfsctl_snapshot_name(ITOZSB(tdip), tnm, MAXNAMELEN, to); + if (error == 0) + error = zfs_secpolicy_rename_perms(from, to, cr); + if (error != 0) + goto out; + + /* + * Cannot move snapshots out of the snapdir. + */ + if (sdip != tdip) { + error = SET_ERROR(EINVAL); + goto out; + } + + /* + * No-op when names are identical. + */ + if (strcmp(snm, tnm) == 0) { + error = 0; + goto out; + } + + rw_enter(&zfs_snapshot_lock, RW_WRITER); + + error = dsl_dataset_rename_snapshot(fsname, snm, tnm, B_FALSE); + if (error == 0) + (void) zfsctl_snapshot_rename(snm, tnm); + + rw_exit(&zfs_snapshot_lock); +out: + kmem_free(from, MAXNAMELEN); + kmem_free(to, MAXNAMELEN); + kmem_free(real, MAXNAMELEN); + kmem_free(fsname, MAXNAMELEN); + + ZFS_EXIT(zsb); + + return (error); +} + +/* + * Removing a directory under '.zfs/snapshot' will automatically trigger + * the removal of the snapshot with the given name. + */ +int +zfsctl_snapdir_remove(struct inode *dip, char *name, cred_t *cr, int flags) +{ + zfs_sb_t *zsb = ITOZSB(dip); + char *snapname, *real; + int error; + + if (!zfs_admin_snapshot) + return (EACCES); + + ZFS_ENTER(zsb); + + snapname = kmem_alloc(MAXNAMELEN, KM_SLEEP); + real = kmem_alloc(MAXNAMELEN, KM_SLEEP); + + if (zsb->z_case == ZFS_CASE_INSENSITIVE) { + error = dmu_snapshot_realname(zsb->z_os, name, real, + MAXNAMELEN, NULL); + if (error == 0) { + name = real; + } else if (error != ENOTSUP) { + goto out; + } + } + + error = zfsctl_snapshot_name(ITOZSB(dip), name, MAXNAMELEN, snapname); + if (error == 0) + error = zfs_secpolicy_destroy_perms(snapname, cr); + if (error != 0) + goto out; + + error = zfsctl_snapshot_unmount(snapname, MNT_FORCE); + if ((error == 0) || (error == ENOENT)) + error = dsl_destroy_snapshot(snapname, B_FALSE); +out: + kmem_free(snapname, MAXNAMELEN); + kmem_free(real, MAXNAMELEN); + + ZFS_EXIT(zsb); + + return (error); +} + +/* + * Creating a directory under '.zfs/snapshot' will automatically trigger + * the creation of a new snapshot with the given name. + */ +int +zfsctl_snapdir_mkdir(struct inode *dip, char *dirname, vattr_t *vap, + struct inode **ipp, cred_t *cr, int flags) +{ + zfs_sb_t *zsb = ITOZSB(dip); + char *dsname; + int error; + + if (!zfs_admin_snapshot) + return (EACCES); + + dsname = kmem_alloc(MAXNAMELEN, KM_SLEEP); + + if (zfs_component_namecheck(dirname, NULL, NULL) != 0) { + error = SET_ERROR(EILSEQ); + goto out; + } + + dmu_objset_name(zsb->z_os, dsname); + + error = zfs_secpolicy_snapshot_perms(dsname, cr); + if (error != 0) + goto out; + + if (error == 0) { + error = dmu_objset_snapshot_one(dsname, dirname); + if (error != 0) + goto out; + + error = zfsctl_snapdir_lookup(dip, dirname, ipp, + 0, cr, NULL, NULL); + } +out: + kmem_free(dsname, MAXNAMELEN); + + return (error); +} + +/* + * Attempt to unmount a snapshot by making a call to user space. + * There is no assurance that this can or will succeed, is just a + * best effort. In the case where it does fail, perhaps because + * it's in use, the unmount will fail harmlessly. + */ +#define SET_UNMOUNT_CMD \ + "exec 0/dev/null " \ + " 2>/dev/null; " \ + "umount -t zfs -n %s'%s'" + +int +zfsctl_snapshot_unmount(char *snapname, int flags) +{ + char *argv[] = { "/bin/sh", "-c", NULL, NULL }; + char *envp[] = { NULL }; + zfs_snapentry_t *se; + int error; + + rw_enter(&zfs_snapshot_lock, RW_READER); + if ((se = zfsctl_snapshot_find_by_name(snapname)) == NULL) { + rw_exit(&zfs_snapshot_lock); + return (ENOENT); + } + rw_exit(&zfs_snapshot_lock); + + argv[2] = kmem_asprintf(SET_UNMOUNT_CMD, + flags & MNT_FORCE ? "-f " : "", se->se_path); + zfsctl_snapshot_rele(se); + dprintf("unmount; path=%s\n", se->se_path); + error = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); + strfree(argv[2]); + + + /* + * The umount system utility will return 256 on error. We must + * assume this error is because the file system is busy so it is + * converted to the more sensible EBUSY. + */ + if (error) + error = SET_ERROR(EBUSY); + + return (error); +} + +#define MOUNT_BUSY 0x80 /* Mount failed due to EBUSY (from mntent.h) */ +#define SET_MOUNT_CMD \ + "exec 0/dev/null " \ + " 2>/dev/null; " \ + "mount -t zfs -n '%s' '%s'" + +int +zfsctl_snapshot_mount(struct path *path, int flags) +{ + struct dentry *dentry = path->dentry; + struct inode *ip = dentry->d_inode; + zfs_sb_t *zsb; + zfs_sb_t *snap_zsb; + zfs_snapentry_t *se; + char *full_name, *full_path; + char *argv[] = { "/bin/sh", "-c", NULL, NULL }; + char *envp[] = { NULL }; + int error; + struct path spath; + + if (ip == NULL) + return (EISDIR); + + zsb = ITOZSB(ip); + ZFS_ENTER(zsb); + + full_name = kmem_zalloc(MAXNAMELEN, KM_SLEEP); + full_path = kmem_zalloc(MAXPATHLEN, KM_SLEEP); + + error = zfsctl_snapshot_name(zsb, dname(dentry), + MAXNAMELEN, full_name); + if (error) + goto error; + + error = zfsctl_snapshot_path(path, MAXPATHLEN, full_path); + if (error) + goto error; + + /* + * Multiple concurrent automounts of a snapshot are never allowed. + * The snapshot may be manually mounted as many times as desired. + */ + if (zfsctl_snapshot_ismounted(full_name)) { + error = 0; + goto error; + } + + /* + * Attempt to mount the snapshot from user space. Normally this + * would be done using the vfs_kern_mount() function, however that + * function is marked GPL-only and cannot be used. On error we + * careful to log the real error to the console and return EISDIR + * to safely abort the automount. This should be very rare. + * + * If the user mode helper happens to return EBUSY, a concurrent + * mount is already in progress in which case the error is ignored. + * Take note that if the program was executed successfully the return + * value from call_usermodehelper() will be (exitcode << 8 + signal). + */ + dprintf("mount; name=%s path=%s\n", full_name, full_path); + argv[2] = kmem_asprintf(SET_MOUNT_CMD, full_name, full_path); + error = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); + strfree(argv[2]); + if (error) { + if (!(error & MOUNT_BUSY << 8)) { + cmn_err(CE_WARN, "Unable to automount %s/%s: %d", + full_path, full_name, error); + error = SET_ERROR(EISDIR); + } else { + /* + * EBUSY, this could mean a concurrent mount, or the + * snapshot has already been mounted at completely + * different place. We return 0 so VFS will retry. For + * the latter case the VFS will retry several times + * and return ELOOP, which is probably not a very good + * behavior. + */ + error = 0; + } + goto error; + } + + /* + * Follow down in to the mounted snapshot and set MNT_SHRINKABLE + * to identify this as an automounted filesystem. + */ + spath = *path; + path_get(&spath); + if (zpl_follow_down_one(&spath)) { + snap_zsb = ITOZSB(spath.dentry->d_inode); + snap_zsb->z_parent = zsb; + dentry = spath.dentry; + spath.mnt->mnt_flags |= MNT_SHRINKABLE; + + rw_enter(&zfs_snapshot_lock, RW_WRITER); + se = zfsctl_snapshot_alloc(full_name, full_path, + snap_zsb->z_os->os_spa, dmu_objset_id(snap_zsb->z_os), + dentry); + zfsctl_snapshot_add(se); + zfsctl_snapshot_unmount_delay_impl(se, zfs_expire_snapshot); + rw_exit(&zfs_snapshot_lock); + } + path_put(&spath); +error: + kmem_free(full_name, MAXNAMELEN); + kmem_free(full_path, MAXPATHLEN); + + ZFS_EXIT(zsb); + + return (error); +} + +/* + * Given the objset id of the snapshot return its zfs_sb_t as zsbp. + */ +int +zfsctl_lookup_objset(struct super_block *sb, uint64_t objsetid, zfs_sb_t **zsbp) +{ + zfs_snapentry_t *se; + int error; + spa_t *spa = ((zfs_sb_t *)(sb->s_fs_info))->z_os->os_spa; + + /* + * Verify that the snapshot is mounted then lookup the mounted root + * rather than the covered mount point. This may fail if the + * snapshot has just been unmounted by an unrelated user space + * process. This race cannot occur to an expired mount point + * because we hold the zfs_snapshot_lock to prevent the race. + */ + rw_enter(&zfs_snapshot_lock, RW_READER); + if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) != NULL) { + zfs_sb_t *zsb; + + zsb = ITOZSB(se->se_root_dentry->d_inode); + ASSERT3U(dmu_objset_id(zsb->z_os), ==, objsetid); + + if (time_after(jiffies, zsb->z_snap_defer_time + + MAX(zfs_expire_snapshot * HZ / 2, HZ))) { + zsb->z_snap_defer_time = jiffies; + zfsctl_snapshot_unmount_cancel(se); + zfsctl_snapshot_unmount_delay_impl(se, + zfs_expire_snapshot); + } + + *zsbp = zsb; + zfsctl_snapshot_rele(se); + error = SET_ERROR(0); + } else { + error = SET_ERROR(ENOENT); + } + rw_exit(&zfs_snapshot_lock); + + /* + * Automount the snapshot given the objset id by constructing the + * full mount point and performing a traversal. + */ + if (error == ENOENT) { + struct path path; + char *mnt; + + mnt = kmem_alloc(MAXPATHLEN, KM_SLEEP); + error = zfsctl_snapshot_path_objset(sb->s_fs_info, objsetid, + MAXPATHLEN, mnt); + if (error) { + kmem_free(mnt, MAXPATHLEN); + return (SET_ERROR(error)); + } + + error = kern_path(mnt, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &path); + if (error == 0) { + *zsbp = ITOZSB(path.dentry->d_inode); + path_put(&path); + } + + kmem_free(mnt, MAXPATHLEN); + } + + return (error); +} + +int +zfsctl_shares_lookup(struct inode *dip, char *name, struct inode **ipp, + int flags, cred_t *cr, int *direntflags, pathname_t *realpnp) +{ + zfs_sb_t *zsb = ITOZSB(dip); + struct inode *ip; + znode_t *dzp; + int error; + + ZFS_ENTER(zsb); + + if (zsb->z_shares_dir == 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(ENOTSUP)); + } + + error = zfs_zget(zsb, zsb->z_shares_dir, &dzp); + if (error) { + ZFS_EXIT(zsb); + return (error); + } + + error = zfs_lookup(ZTOI(dzp), name, &ip, 0, cr, NULL, NULL); + + iput(ZTOI(dzp)); + ZFS_EXIT(zsb); + + return (error); +} + + +/* + * Initialize the various pieces we'll need to create and manipulate .zfs + * directories. Currently this is unused but available. + */ +void +zfsctl_init(void) +{ + avl_create(&zfs_snapshots_by_name, snapentry_compare_by_name, + sizeof (zfs_snapentry_t), offsetof(zfs_snapentry_t, + se_node_name)); + avl_create(&zfs_snapshots_by_objsetid, snapentry_compare_by_objsetid, + sizeof (zfs_snapentry_t), offsetof(zfs_snapentry_t, + se_node_objsetid)); + rw_init(&zfs_snapshot_lock, NULL, RW_DEFAULT, NULL); + + zfs_expire_taskq = taskq_create("z_unmount", 1, defclsyspri, + 1, 8, TASKQ_PREPOPULATE); +} + +/* + * Cleanup the various pieces we needed for .zfs directories. In particular + * ensure the expiry timer is canceled safely. + */ +void +zfsctl_fini(void) +{ + taskq_destroy(zfs_expire_taskq); + + avl_destroy(&zfs_snapshots_by_name); + avl_destroy(&zfs_snapshots_by_objsetid); + rw_destroy(&zfs_snapshot_lock); +} + +module_param(zfs_admin_snapshot, int, 0644); +MODULE_PARM_DESC(zfs_admin_snapshot, "Enable mkdir/rmdir/mv in .zfs/snapshot"); + +module_param(zfs_expire_snapshot, int, 0644); +MODULE_PARM_DESC(zfs_expire_snapshot, "Seconds to expire .zfs/snapshot"); --- linux-4.4.0.orig/zfs/module/zfs/zfs_debug.c +++ linux-4.4.0/zfs/module/zfs/zfs_debug.c @@ -0,0 +1,239 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +#include +#include + +list_t zfs_dbgmsgs; +int zfs_dbgmsg_size = 0; +kmutex_t zfs_dbgmsgs_lock; +int zfs_dbgmsg_maxsize = 4<<20; /* 4MB */ +kstat_t *zfs_dbgmsg_kstat; + +/* + * By default only enable the internal ZFS debug messages when running + * in userspace (ztest). The kernel log must be manually enabled. + * + * # Enable the kernel debug message log. + * echo 1 > /sys/module/zfs/parameters/zfs_dbgmsg_enable + * + * # Clear the kernel debug message log. + * echo 0 >/proc/spl/kstat/zfs/dbgmsg + */ +#if defined(_KERNEL) +int zfs_dbgmsg_enable = 0; +#else +int zfs_dbgmsg_enable = 1; +#endif + +static int +zfs_dbgmsg_headers(char *buf, size_t size) +{ + (void) snprintf(buf, size, "%-12s %-8s\n", "timestamp", "message"); + + return (0); +} + +static int +zfs_dbgmsg_data(char *buf, size_t size, void *data) +{ + zfs_dbgmsg_t *zdm = (zfs_dbgmsg_t *)data; + + (void) snprintf(buf, size, "%-12llu %-s\n", + (u_longlong_t) zdm->zdm_timestamp, zdm->zdm_msg); + + return (0); +} + +static void * +zfs_dbgmsg_addr(kstat_t *ksp, loff_t n) +{ + zfs_dbgmsg_t *zdm = (zfs_dbgmsg_t *)ksp->ks_private; + + ASSERT(MUTEX_HELD(&zfs_dbgmsgs_lock)); + + if (n == 0) + ksp->ks_private = list_head(&zfs_dbgmsgs); + else if (zdm) + ksp->ks_private = list_next(&zfs_dbgmsgs, zdm); + + return (ksp->ks_private); +} + +static void +zfs_dbgmsg_purge(int max_size) +{ + zfs_dbgmsg_t *zdm; + int size; + + ASSERT(MUTEX_HELD(&zfs_dbgmsgs_lock)); + + while (zfs_dbgmsg_size > max_size) { + zdm = list_remove_head(&zfs_dbgmsgs); + if (zdm == NULL) + return; + + size = zdm->zdm_size; + kmem_free(zdm, size); + zfs_dbgmsg_size -= size; + } +} + +static int +zfs_dbgmsg_update(kstat_t *ksp, int rw) +{ + if (rw == KSTAT_WRITE) + zfs_dbgmsg_purge(0); + + return (0); +} + +void +zfs_dbgmsg_init(void) +{ + list_create(&zfs_dbgmsgs, sizeof (zfs_dbgmsg_t), + offsetof(zfs_dbgmsg_t, zdm_node)); + mutex_init(&zfs_dbgmsgs_lock, NULL, MUTEX_DEFAULT, NULL); + + zfs_dbgmsg_kstat = kstat_create("zfs", 0, "dbgmsg", "misc", + KSTAT_TYPE_RAW, 0, KSTAT_FLAG_VIRTUAL); + if (zfs_dbgmsg_kstat) { + zfs_dbgmsg_kstat->ks_lock = &zfs_dbgmsgs_lock; + zfs_dbgmsg_kstat->ks_ndata = UINT32_MAX; + zfs_dbgmsg_kstat->ks_private = NULL; + zfs_dbgmsg_kstat->ks_update = zfs_dbgmsg_update; + kstat_set_raw_ops(zfs_dbgmsg_kstat, zfs_dbgmsg_headers, + zfs_dbgmsg_data, zfs_dbgmsg_addr); + kstat_install(zfs_dbgmsg_kstat); + } +} + +void +zfs_dbgmsg_fini(void) +{ + if (zfs_dbgmsg_kstat) + kstat_delete(zfs_dbgmsg_kstat); + + mutex_enter(&zfs_dbgmsgs_lock); + zfs_dbgmsg_purge(0); + mutex_exit(&zfs_dbgmsgs_lock); + mutex_destroy(&zfs_dbgmsgs_lock); +} + +void +__zfs_dbgmsg(char *buf) +{ + zfs_dbgmsg_t *zdm; + int size; + + size = sizeof (zfs_dbgmsg_t) + strlen(buf); + zdm = kmem_zalloc(size, KM_SLEEP); + zdm->zdm_size = size; + zdm->zdm_timestamp = gethrestime_sec(); + strcpy(zdm->zdm_msg, buf); + + mutex_enter(&zfs_dbgmsgs_lock); + list_insert_tail(&zfs_dbgmsgs, zdm); + zfs_dbgmsg_size += size; + zfs_dbgmsg_purge(MAX(zfs_dbgmsg_maxsize, 0)); + mutex_exit(&zfs_dbgmsgs_lock); +} + +#ifdef _KERNEL +void +__dprintf(const char *file, const char *func, int line, const char *fmt, ...) +{ + const char *newfile; + va_list adx; + size_t size; + char *buf; + char *nl; + + if (!zfs_dbgmsg_enable && !(zfs_flags & ZFS_DEBUG_DPRINTF)) + return; + + size = 1024; + buf = kmem_alloc(size, KM_SLEEP); + + /* + * Get rid of annoying prefix to filename. + */ + newfile = strrchr(file, '/'); + if (newfile != NULL) { + newfile = newfile + 1; /* Get rid of leading / */ + } else { + newfile = file; + } + + va_start(adx, fmt); + (void) vsnprintf(buf, size, fmt, adx); + va_end(adx); + + /* + * Get rid of trailing newline. + */ + nl = strrchr(buf, '\n'); + if (nl != NULL) + *nl = '\0'; + + /* + * To get this data enable the zfs__dprintf trace point as shown: + * + * # Enable zfs__dprintf tracepoint, clear the tracepoint ring buffer + * $ echo 1 > /sys/module/zfs/parameters/zfs_flags + * $ echo 1 > /sys/kernel/debug/tracing/events/zfs/enable + * $ echo 0 > /sys/kernel/debug/tracing/trace + * + * # Dump the ring buffer. + * $ cat /sys/kernel/debug/tracing/trace + */ + if (zfs_flags & ZFS_DEBUG_DPRINTF) + DTRACE_PROBE4(zfs__dprintf, + char *, newfile, char *, func, int, line, char *, buf); + + /* + * To get this data enable the zfs debug log as shown: + * + * # Set zfs_dbgmsg enable, clear the log buffer + * $ echo 1 > /sys/module/zfs/parameters/zfs_dbgmsg_enable + * $ echo 0 > /proc/spl/kstat/zfs/dbgmsg + * + * # Dump the log buffer. + * $ cat /proc/spl/kstat/zfs/dbgmsg + */ + if (zfs_dbgmsg_enable) + __zfs_dbgmsg(buf); + + kmem_free(buf, size); +} +#endif /* _KERNEL */ + +#ifdef _KERNEL +module_param(zfs_dbgmsg_enable, int, 0644); +MODULE_PARM_DESC(zfs_dbgmsg_enable, "Enable ZFS debug message log"); + +module_param(zfs_dbgmsg_maxsize, int, 0644); +MODULE_PARM_DESC(zfs_dbgmsg_maxsize, "Maximum ZFS debug log size"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_dir.c +++ linux-4.4.0/zfs/module/zfs/zfs_dir.c @@ -0,0 +1,1099 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fs/fs_subr.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * zfs_match_find() is used by zfs_dirent_lock() to peform zap lookups + * of names after deciding which is the appropriate lookup interface. + */ +static int +zfs_match_find(zfs_sb_t *zsb, znode_t *dzp, char *name, boolean_t exact, + boolean_t update, int *deflags, pathname_t *rpnp, uint64_t *zoid) +{ + boolean_t conflict = B_FALSE; + int error; + + if (zsb->z_norm) { + matchtype_t mt = MT_FIRST; + size_t bufsz = 0; + char *buf = NULL; + + if (rpnp) { + buf = rpnp->pn_buf; + bufsz = rpnp->pn_bufsize; + } + if (exact) + mt = MT_EXACT; + /* + * In the non-mixed case we only expect there would ever + * be one match, but we need to use the normalizing lookup. + */ + error = zap_lookup_norm(zsb->z_os, dzp->z_id, name, 8, 1, + zoid, mt, buf, bufsz, &conflict); + } else { + error = zap_lookup(zsb->z_os, dzp->z_id, name, 8, 1, zoid); + } + + /* + * Allow multiple entries provided the first entry is + * the object id. Non-zpl consumers may safely make + * use of the additional space. + * + * XXX: This should be a feature flag for compatibility + */ + if (error == EOVERFLOW) + error = 0; + + if (zsb->z_norm && !error && deflags) + *deflags = conflict ? ED_CASE_CONFLICT : 0; + + *zoid = ZFS_DIRENT_OBJ(*zoid); + +#ifdef HAVE_DNLC + if (error == ENOENT && update) + dnlc_update(ZTOI(dzp), name, DNLC_NO_VNODE); +#endif /* HAVE_DNLC */ + + return (error); +} + +/* + * Lock a directory entry. A dirlock on protects that name + * in dzp's directory zap object. As long as you hold a dirlock, you can + * assume two things: (1) dzp cannot be reaped, and (2) no other thread + * can change the zap entry for (i.e. link or unlink) this name. + * + * Input arguments: + * dzp - znode for directory + * name - name of entry to lock + * flag - ZNEW: if the entry already exists, fail with EEXIST. + * ZEXISTS: if the entry does not exist, fail with ENOENT. + * ZSHARED: allow concurrent access with other ZSHARED callers. + * ZXATTR: we want dzp's xattr directory + * ZCILOOK: On a mixed sensitivity file system, + * this lookup should be case-insensitive. + * ZCIEXACT: On a purely case-insensitive file system, + * this lookup should be case-sensitive. + * ZRENAMING: we are locking for renaming, force narrow locks + * ZHAVELOCK: Don't grab the z_name_lock for this call. The + * current thread already holds it. + * + * Output arguments: + * zpp - pointer to the znode for the entry (NULL if there isn't one) + * dlpp - pointer to the dirlock for this entry (NULL on error) + * direntflags - (case-insensitive lookup only) + * flags if multiple case-sensitive matches exist in directory + * realpnp - (case-insensitive lookup only) + * actual name matched within the directory + * + * Return value: 0 on success or errno on failure. + * + * NOTE: Always checks for, and rejects, '.' and '..'. + * NOTE: For case-insensitive file systems we take wide locks (see below), + * but return znode pointers to a single match. + */ +int +zfs_dirent_lock(zfs_dirlock_t **dlpp, znode_t *dzp, char *name, znode_t **zpp, + int flag, int *direntflags, pathname_t *realpnp) +{ + zfs_sb_t *zsb = ZTOZSB(dzp); + zfs_dirlock_t *dl; + boolean_t update; + boolean_t exact; + uint64_t zoid; +#ifdef HAVE_DNLC + vnode_t *vp = NULL; +#endif /* HAVE_DNLC */ + int error = 0; + int cmpflags; + + *zpp = NULL; + *dlpp = NULL; + + /* + * Verify that we are not trying to lock '.', '..', or '.zfs' + */ + if ((name[0] == '.' && + (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) || + (zfs_has_ctldir(dzp) && strcmp(name, ZFS_CTLDIR_NAME) == 0)) + return (SET_ERROR(EEXIST)); + + /* + * Case sensitivity and normalization preferences are set when + * the file system is created. These are stored in the + * zsb->z_case and zsb->z_norm fields. These choices + * affect what vnodes can be cached in the DNLC, how we + * perform zap lookups, and the "width" of our dirlocks. + * + * A normal dirlock locks a single name. Note that with + * normalization a name can be composed multiple ways, but + * when normalized, these names all compare equal. A wide + * dirlock locks multiple names. We need these when the file + * system is supporting mixed-mode access. It is sometimes + * necessary to lock all case permutations of file name at + * once so that simultaneous case-insensitive/case-sensitive + * behaves as rationally as possible. + */ + + /* + * Decide if exact matches should be requested when performing + * a zap lookup on file systems supporting case-insensitive + * access. + */ + exact = + ((zsb->z_case == ZFS_CASE_INSENSITIVE) && (flag & ZCIEXACT)) || + ((zsb->z_case == ZFS_CASE_MIXED) && !(flag & ZCILOOK)); + + /* + * Only look in or update the DNLC if we are looking for the + * name on a file system that does not require normalization + * or case folding. We can also look there if we happen to be + * on a non-normalizing, mixed sensitivity file system IF we + * are looking for the exact name. + * + * Maybe can add TO-UPPERed version of name to dnlc in ci-only + * case for performance improvement? + */ + update = !zsb->z_norm || + ((zsb->z_case == ZFS_CASE_MIXED) && + !(zsb->z_norm & ~U8_TEXTPREP_TOUPPER) && !(flag & ZCILOOK)); + + /* + * ZRENAMING indicates we are in a situation where we should + * take narrow locks regardless of the file system's + * preferences for normalizing and case folding. This will + * prevent us deadlocking trying to grab the same wide lock + * twice if the two names happen to be case-insensitive + * matches. + */ + if (flag & ZRENAMING) + cmpflags = 0; + else + cmpflags = zsb->z_norm; + + /* + * Wait until there are no locks on this name. + * + * Don't grab the the lock if it is already held. However, cannot + * have both ZSHARED and ZHAVELOCK together. + */ + ASSERT(!(flag & ZSHARED) || !(flag & ZHAVELOCK)); + if (!(flag & ZHAVELOCK)) + rw_enter(&dzp->z_name_lock, RW_READER); + + mutex_enter(&dzp->z_lock); + for (;;) { + if (dzp->z_unlinked) { + mutex_exit(&dzp->z_lock); + if (!(flag & ZHAVELOCK)) + rw_exit(&dzp->z_name_lock); + return (SET_ERROR(ENOENT)); + } + for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) { + if ((u8_strcmp(name, dl->dl_name, 0, cmpflags, + U8_UNICODE_LATEST, &error) == 0) || error != 0) + break; + } + if (error != 0) { + mutex_exit(&dzp->z_lock); + if (!(flag & ZHAVELOCK)) + rw_exit(&dzp->z_name_lock); + return (SET_ERROR(ENOENT)); + } + if (dl == NULL) { + /* + * Allocate a new dirlock and add it to the list. + */ + dl = kmem_alloc(sizeof (zfs_dirlock_t), KM_SLEEP); + cv_init(&dl->dl_cv, NULL, CV_DEFAULT, NULL); + dl->dl_name = name; + dl->dl_sharecnt = 0; + dl->dl_namelock = 0; + dl->dl_namesize = 0; + dl->dl_dzp = dzp; + dl->dl_next = dzp->z_dirlocks; + dzp->z_dirlocks = dl; + break; + } + if ((flag & ZSHARED) && dl->dl_sharecnt != 0) + break; + cv_wait(&dl->dl_cv, &dzp->z_lock); + } + + /* + * If the z_name_lock was NOT held for this dirlock record it. + */ + if (flag & ZHAVELOCK) + dl->dl_namelock = 1; + + if ((flag & ZSHARED) && ++dl->dl_sharecnt > 1 && dl->dl_namesize == 0) { + /* + * We're the second shared reference to dl. Make a copy of + * dl_name in case the first thread goes away before we do. + * Note that we initialize the new name before storing its + * pointer into dl_name, because the first thread may load + * dl->dl_name at any time. He'll either see the old value, + * which is his, or the new shared copy; either is OK. + */ + dl->dl_namesize = strlen(dl->dl_name) + 1; + name = kmem_alloc(dl->dl_namesize, KM_SLEEP); + bcopy(dl->dl_name, name, dl->dl_namesize); + dl->dl_name = name; + } + + mutex_exit(&dzp->z_lock); + + /* + * We have a dirlock on the name. (Note that it is the dirlock, + * not the dzp's z_lock, that protects the name in the zap object.) + * See if there's an object by this name; if so, put a hold on it. + */ + if (flag & ZXATTR) { + error = sa_lookup(dzp->z_sa_hdl, SA_ZPL_XATTR(zsb), &zoid, + sizeof (zoid)); + if (error == 0) + error = (zoid == 0 ? SET_ERROR(ENOENT) : 0); + } else { +#ifdef HAVE_DNLC + if (update) + vp = dnlc_lookup(ZTOI(dzp), name); + if (vp == DNLC_NO_VNODE) { + iput(vp); + error = SET_ERROR(ENOENT); + } else if (vp) { + if (flag & ZNEW) { + zfs_dirent_unlock(dl); + iput(vp); + return (SET_ERROR(EEXIST)); + } + *dlpp = dl; + *zpp = VTOZ(vp); + return (0); + } else { + error = zfs_match_find(zsb, dzp, name, exact, + update, direntflags, realpnp, &zoid); + } +#else + error = zfs_match_find(zsb, dzp, name, exact, + update, direntflags, realpnp, &zoid); +#endif /* HAVE_DNLC */ + } + if (error) { + if (error != ENOENT || (flag & ZEXISTS)) { + zfs_dirent_unlock(dl); + return (error); + } + } else { + if (flag & ZNEW) { + zfs_dirent_unlock(dl); + return (SET_ERROR(EEXIST)); + } + error = zfs_zget(zsb, zoid, zpp); + if (error) { + zfs_dirent_unlock(dl); + return (error); + } +#ifdef HAVE_DNLC + if (!(flag & ZXATTR) && update) + dnlc_update(ZTOI(dzp), name, ZTOI(*zpp)); +#endif /* HAVE_DNLC */ + } + + *dlpp = dl; + + return (0); +} + +/* + * Unlock this directory entry and wake anyone who was waiting for it. + */ +void +zfs_dirent_unlock(zfs_dirlock_t *dl) +{ + znode_t *dzp = dl->dl_dzp; + zfs_dirlock_t **prev_dl, *cur_dl; + + mutex_enter(&dzp->z_lock); + + if (!dl->dl_namelock) + rw_exit(&dzp->z_name_lock); + + if (dl->dl_sharecnt > 1) { + dl->dl_sharecnt--; + mutex_exit(&dzp->z_lock); + return; + } + prev_dl = &dzp->z_dirlocks; + while ((cur_dl = *prev_dl) != dl) + prev_dl = &cur_dl->dl_next; + *prev_dl = dl->dl_next; + cv_broadcast(&dl->dl_cv); + mutex_exit(&dzp->z_lock); + + if (dl->dl_namesize != 0) + kmem_free(dl->dl_name, dl->dl_namesize); + cv_destroy(&dl->dl_cv); + kmem_free(dl, sizeof (*dl)); +} + +/* + * Look up an entry in a directory. + * + * NOTE: '.' and '..' are handled as special cases because + * no directory entries are actually stored for them. If this is + * the root of a filesystem, then '.zfs' is also treated as a + * special pseudo-directory. + */ +int +zfs_dirlook(znode_t *dzp, char *name, struct inode **ipp, int flags, + int *deflg, pathname_t *rpnp) +{ + zfs_dirlock_t *dl; + znode_t *zp; + int error = 0; + uint64_t parent; + + if (name[0] == 0 || (name[0] == '.' && name[1] == 0)) { + *ipp = ZTOI(dzp); + igrab(*ipp); + } else if (name[0] == '.' && name[1] == '.' && name[2] == 0) { + zfs_sb_t *zsb = ZTOZSB(dzp); + + /* + * If we are a snapshot mounted under .zfs, return + * the inode pointer for the snapshot directory. + */ + if ((error = sa_lookup(dzp->z_sa_hdl, + SA_ZPL_PARENT(zsb), &parent, sizeof (parent))) != 0) + return (error); + + if (parent == dzp->z_id && zsb->z_parent != zsb) { + error = zfsctl_root_lookup(zsb->z_parent->z_ctldir, + "snapshot", ipp, 0, kcred, NULL, NULL); + return (error); + } + rw_enter(&dzp->z_parent_lock, RW_READER); + error = zfs_zget(zsb, parent, &zp); + if (error == 0) + *ipp = ZTOI(zp); + rw_exit(&dzp->z_parent_lock); + } else if (zfs_has_ctldir(dzp) && strcmp(name, ZFS_CTLDIR_NAME) == 0) { + *ipp = zfsctl_root(dzp); + } else { + int zf; + + zf = ZEXISTS | ZSHARED; + if (flags & FIGNORECASE) + zf |= ZCILOOK; + + error = zfs_dirent_lock(&dl, dzp, name, &zp, zf, deflg, rpnp); + if (error == 0) { + *ipp = ZTOI(zp); + zfs_dirent_unlock(dl); + dzp->z_zn_prefetch = B_TRUE; /* enable prefetching */ + } + rpnp = NULL; + } + + if ((flags & FIGNORECASE) && rpnp && !error) + (void) strlcpy(rpnp->pn_buf, name, rpnp->pn_bufsize); + + return (error); +} + +/* + * unlinked Set (formerly known as the "delete queue") Error Handling + * + * When dealing with the unlinked set, we dmu_tx_hold_zap(), but we + * don't specify the name of the entry that we will be manipulating. We + * also fib and say that we won't be adding any new entries to the + * unlinked set, even though we might (this is to lower the minimum file + * size that can be deleted in a full filesystem). So on the small + * chance that the nlink list is using a fat zap (ie. has more than + * 2000 entries), we *may* not pre-read a block that's needed. + * Therefore it is remotely possible for some of the assertions + * regarding the unlinked set below to fail due to i/o error. On a + * nondebug system, this will result in the space being leaked. + */ +void +zfs_unlinked_add(znode_t *zp, dmu_tx_t *tx) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + + ASSERT(zp->z_unlinked); + ASSERT(zp->z_links == 0); + + VERIFY3U(0, ==, + zap_add_int(zsb->z_os, zsb->z_unlinkedobj, zp->z_id, tx)); +} + +/* + * Clean up any znodes that had no links when we either crashed or + * (force) umounted the file system. + */ +void +zfs_unlinked_drain(zfs_sb_t *zsb) +{ + zap_cursor_t zc; + zap_attribute_t zap; + dmu_object_info_t doi; + znode_t *zp; + int error; + + /* + * Iterate over the contents of the unlinked set. + */ + for (zap_cursor_init(&zc, zsb->z_os, zsb->z_unlinkedobj); + zap_cursor_retrieve(&zc, &zap) == 0; + zap_cursor_advance(&zc)) { + + /* + * See what kind of object we have in list + */ + + error = dmu_object_info(zsb->z_os, zap.za_first_integer, &doi); + if (error != 0) + continue; + + ASSERT((doi.doi_type == DMU_OT_PLAIN_FILE_CONTENTS) || + (doi.doi_type == DMU_OT_DIRECTORY_CONTENTS)); + /* + * We need to re-mark these list entries for deletion, + * so we pull them back into core and set zp->z_unlinked. + */ + error = zfs_zget(zsb, zap.za_first_integer, &zp); + + /* + * We may pick up znodes that are already marked for deletion. + * This could happen during the purge of an extended attribute + * directory. All we need to do is skip over them, since they + * are already in the system marked z_unlinked. + */ + if (error != 0) + continue; + + zp->z_unlinked = B_TRUE; + iput(ZTOI(zp)); + } + zap_cursor_fini(&zc); +} + +/* + * Delete the entire contents of a directory. Return a count + * of the number of entries that could not be deleted. If we encounter + * an error, return a count of at least one so that the directory stays + * in the unlinked set. + * + * NOTE: this function assumes that the directory is inactive, + * so there is no need to lock its entries before deletion. + * Also, it assumes the directory contents is *only* regular + * files. + */ +static int +zfs_purgedir(znode_t *dzp) +{ + zap_cursor_t zc; + zap_attribute_t zap; + znode_t *xzp; + dmu_tx_t *tx; + zfs_sb_t *zsb = ZTOZSB(dzp); + zfs_dirlock_t dl; + int skipped = 0; + int error; + + for (zap_cursor_init(&zc, zsb->z_os, dzp->z_id); + (error = zap_cursor_retrieve(&zc, &zap)) == 0; + zap_cursor_advance(&zc)) { + error = zfs_zget(zsb, + ZFS_DIRENT_OBJ(zap.za_first_integer), &xzp); + if (error) { + skipped += 1; + continue; + } + + ASSERT(S_ISREG(ZTOI(xzp)->i_mode) || + S_ISLNK(ZTOI(xzp)->i_mode)); + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, dzp->z_sa_hdl, B_FALSE); + dmu_tx_hold_zap(tx, dzp->z_id, FALSE, zap.za_name); + dmu_tx_hold_sa(tx, xzp->z_sa_hdl, B_FALSE); + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, FALSE, NULL); + /* Is this really needed ? */ + zfs_sa_upgrade_txholds(tx, xzp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + zfs_iput_async(ZTOI(xzp)); + skipped += 1; + continue; + } + bzero(&dl, sizeof (dl)); + dl.dl_dzp = dzp; + dl.dl_name = zap.za_name; + + error = zfs_link_destroy(&dl, xzp, tx, 0, NULL); + if (error) + skipped += 1; + dmu_tx_commit(tx); + + zfs_iput_async(ZTOI(xzp)); + } + zap_cursor_fini(&zc); + if (error != ENOENT) + skipped += 1; + return (skipped); +} + +void +zfs_rmnode(znode_t *zp) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + objset_t *os = zsb->z_os; + znode_t *xzp = NULL; + dmu_tx_t *tx; + uint64_t acl_obj; + uint64_t xattr_obj; + int error; + + ASSERT(zp->z_links == 0); + ASSERT(atomic_read(&ZTOI(zp)->i_count) == 0); + + /* + * If this is an attribute directory, purge its contents. + */ + if (S_ISDIR(ZTOI(zp)->i_mode) && (zp->z_pflags & ZFS_XATTR)) { + if (zfs_purgedir(zp) != 0) { + /* + * Not enough space to delete some xattrs. + * Leave it in the unlinked set. + */ + zfs_znode_dmu_fini(zp); + + return; + } + } + + /* + * Free up all the data in the file. We don't do this for directories + * because we need truncate and remove to be in the same tx, like in + * zfs_znode_delete(). Otherwise, if we crash here we'll end up with + * an inconsistent truncated zap object in the delete queue. Note a + * truncated file is harmless since it only contains user data. + */ + if (S_ISREG(ZTOI(zp)->i_mode)) { + error = dmu_free_long_range(os, zp->z_id, 0, DMU_OBJECT_END); + if (error) { + /* + * Not enough space. Leave the file in the unlinked + * set. + */ + zfs_znode_dmu_fini(zp); + return; + } + } + + /* + * If the file has extended attributes, we're going to unlink + * the xattr dir. + */ + error = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zsb), + &xattr_obj, sizeof (xattr_obj)); + if (error == 0 && xattr_obj) { + error = zfs_zget(zsb, xattr_obj, &xzp); + ASSERT(error == 0); + } + + acl_obj = zfs_external_acl(zp); + + /* + * Set up the final transaction. + */ + tx = dmu_tx_create(os); + dmu_tx_hold_free(tx, zp->z_id, 0, DMU_OBJECT_END); + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, FALSE, NULL); + if (xzp) { + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, TRUE, NULL); + dmu_tx_hold_sa(tx, xzp->z_sa_hdl, B_FALSE); + } + if (acl_obj) + dmu_tx_hold_free(tx, acl_obj, 0, DMU_OBJECT_END); + + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + /* + * Not enough space to delete the file. Leave it in the + * unlinked set, leaking it until the fs is remounted (at + * which point we'll call zfs_unlinked_drain() to process it). + */ + dmu_tx_abort(tx); + zfs_znode_dmu_fini(zp); + goto out; + } + + if (xzp) { + ASSERT(error == 0); + mutex_enter(&xzp->z_lock); + xzp->z_unlinked = B_TRUE; /* mark xzp for deletion */ + xzp->z_links = 0; /* no more links to it */ + VERIFY(0 == sa_update(xzp->z_sa_hdl, SA_ZPL_LINKS(zsb), + &xzp->z_links, sizeof (xzp->z_links), tx)); + mutex_exit(&xzp->z_lock); + zfs_unlinked_add(xzp, tx); + } + + /* Remove this znode from the unlinked set */ + VERIFY3U(0, ==, + zap_remove_int(zsb->z_os, zsb->z_unlinkedobj, zp->z_id, tx)); + + zfs_znode_delete(zp, tx); + + dmu_tx_commit(tx); +out: + if (xzp) + zfs_iput_async(ZTOI(xzp)); +} + +static uint64_t +zfs_dirent(znode_t *zp, uint64_t mode) +{ + uint64_t de = zp->z_id; + + if (ZTOZSB(zp)->z_version >= ZPL_VERSION_DIRENT_TYPE) + de |= IFTODT(mode) << 60; + return (de); +} + +/* + * Link zp into dl. Can only fail if zp has been unlinked. + */ +int +zfs_link_create(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag) +{ + znode_t *dzp = dl->dl_dzp; + zfs_sb_t *zsb = ZTOZSB(zp); + uint64_t value; + int zp_is_dir = S_ISDIR(ZTOI(zp)->i_mode); + sa_bulk_attr_t bulk[5]; + uint64_t mtime[2], ctime[2]; + int count = 0; + int error; + + mutex_enter(&zp->z_lock); + + if (!(flag & ZRENAMING)) { + if (zp->z_unlinked) { /* no new links to unlinked zp */ + ASSERT(!(flag & (ZNEW | ZEXISTS))); + mutex_exit(&zp->z_lock); + return (SET_ERROR(ENOENT)); + } + zp->z_links++; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), NULL, + &zp->z_links, sizeof (zp->z_links)); + + } + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_PARENT(zsb), NULL, + &dzp->z_id, sizeof (dzp->z_id)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, sizeof (zp->z_pflags)); + + if (!(flag & ZNEW)) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, + ctime, sizeof (ctime)); + zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime, + ctime, B_TRUE); + } + error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); + ASSERT(error == 0); + + mutex_exit(&zp->z_lock); + + mutex_enter(&dzp->z_lock); + dzp->z_size++; + dzp->z_links += zp_is_dir; + count = 0; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), NULL, + &dzp->z_size, sizeof (dzp->z_size)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), NULL, + &dzp->z_links, sizeof (dzp->z_links)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, + mtime, sizeof (mtime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, + ctime, sizeof (ctime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &dzp->z_pflags, sizeof (dzp->z_pflags)); + zfs_tstamp_update_setup(dzp, CONTENT_MODIFIED, mtime, ctime, B_TRUE); + error = sa_bulk_update(dzp->z_sa_hdl, bulk, count, tx); + ASSERT(error == 0); + mutex_exit(&dzp->z_lock); + + value = zfs_dirent(zp, zp->z_mode); + error = zap_add(ZTOZSB(zp)->z_os, dzp->z_id, dl->dl_name, + 8, 1, &value, tx); + ASSERT(error == 0); + + return (0); +} + +static int +zfs_dropname(zfs_dirlock_t *dl, znode_t *zp, znode_t *dzp, dmu_tx_t *tx, + int flag) +{ + int error; + + if (ZTOZSB(zp)->z_norm) { + if (((ZTOZSB(zp)->z_case == ZFS_CASE_INSENSITIVE) && + (flag & ZCIEXACT)) || + ((ZTOZSB(zp)->z_case == ZFS_CASE_MIXED) && + !(flag & ZCILOOK))) + error = zap_remove_norm(ZTOZSB(zp)->z_os, + dzp->z_id, dl->dl_name, MT_EXACT, tx); + else + error = zap_remove_norm(ZTOZSB(zp)->z_os, + dzp->z_id, dl->dl_name, MT_FIRST, tx); + } else { + error = zap_remove(ZTOZSB(zp)->z_os, + dzp->z_id, dl->dl_name, tx); + } + + return (error); +} + +/* + * Unlink zp from dl, and mark zp for deletion if this was the last link. Can + * fail if zp is a mount point (EBUSY) or a non-empty directory (ENOTEMPTY). + * If 'unlinkedp' is NULL, we put unlinked znodes on the unlinked list. + * If it's non-NULL, we use it to indicate whether the znode needs deletion, + * and it's the caller's job to do it. + */ +int +zfs_link_destroy(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag, + boolean_t *unlinkedp) +{ + znode_t *dzp = dl->dl_dzp; + zfs_sb_t *zsb = ZTOZSB(dzp); + int zp_is_dir = S_ISDIR(ZTOI(zp)->i_mode); + boolean_t unlinked = B_FALSE; + sa_bulk_attr_t bulk[5]; + uint64_t mtime[2], ctime[2]; + int count = 0; + int error; + +#ifdef HAVE_DNLC + dnlc_remove(ZTOI(dzp), dl->dl_name); +#endif /* HAVE_DNLC */ + + if (!(flag & ZRENAMING)) { + mutex_enter(&zp->z_lock); + + if (zp_is_dir && !zfs_dirempty(zp)) { + mutex_exit(&zp->z_lock); + return (SET_ERROR(ENOTEMPTY)); + } + + /* + * If we get here, we are going to try to remove the object. + * First try removing the name from the directory; if that + * fails, return the error. + */ + error = zfs_dropname(dl, zp, dzp, tx, flag); + if (error != 0) { + mutex_exit(&zp->z_lock); + return (error); + } + + if (zp->z_links <= zp_is_dir) { + zfs_panic_recover("zfs: link count on %lu is %u, " + "should be at least %u", zp->z_id, + (int)zp->z_links, zp_is_dir + 1); + zp->z_links = zp_is_dir + 1; + } + if (--zp->z_links == zp_is_dir) { + zp->z_unlinked = B_TRUE; + zp->z_links = 0; + unlinked = B_TRUE; + } else { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), + NULL, &ctime, sizeof (ctime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), + NULL, &zp->z_pflags, sizeof (zp->z_pflags)); + zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime, ctime, + B_TRUE); + } + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), + NULL, &zp->z_links, sizeof (zp->z_links)); + error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); + count = 0; + ASSERT(error == 0); + mutex_exit(&zp->z_lock); + } else { + error = zfs_dropname(dl, zp, dzp, tx, flag); + if (error != 0) + return (error); + } + + mutex_enter(&dzp->z_lock); + dzp->z_size--; /* one dirent removed */ + dzp->z_links -= zp_is_dir; /* ".." link from zp */ + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), + NULL, &dzp->z_links, sizeof (dzp->z_links)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), + NULL, &dzp->z_size, sizeof (dzp->z_size)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), + NULL, ctime, sizeof (ctime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), + NULL, mtime, sizeof (mtime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), + NULL, &dzp->z_pflags, sizeof (dzp->z_pflags)); + zfs_tstamp_update_setup(dzp, CONTENT_MODIFIED, mtime, ctime, B_TRUE); + error = sa_bulk_update(dzp->z_sa_hdl, bulk, count, tx); + ASSERT(error == 0); + mutex_exit(&dzp->z_lock); + + if (unlinkedp != NULL) + *unlinkedp = unlinked; + else if (unlinked) + zfs_unlinked_add(zp, tx); + + return (0); +} + +/* + * Indicate whether the directory is empty. Works with or without z_lock + * held, but can only be consider a hint in the latter case. Returns true + * if only "." and ".." remain and there's no work in progress. + */ +boolean_t +zfs_dirempty(znode_t *dzp) +{ + return (dzp->z_size == 2 && dzp->z_dirlocks == 0); +} + +int +zfs_make_xattrdir(znode_t *zp, vattr_t *vap, struct inode **xipp, cred_t *cr) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + znode_t *xzp; + dmu_tx_t *tx; + int error; + zfs_acl_ids_t acl_ids; + boolean_t fuid_dirtied; +#ifdef DEBUG + uint64_t parent; +#endif + + *xipp = NULL; + + if ((error = zfs_zaccess(zp, ACE_WRITE_NAMED_ATTRS, 0, B_FALSE, cr))) + return (error); + + if ((error = zfs_acl_ids_create(zp, IS_XATTR, vap, cr, NULL, + &acl_ids)) != 0) + return (error); + if (zfs_acl_ids_overquota(zsb, &acl_ids)) { + zfs_acl_ids_free(&acl_ids); + return (SET_ERROR(EDQUOT)); + } + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + + ZFS_SA_BASE_ATTR_SIZE); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL); + fuid_dirtied = zsb->z_fuid_dirty; + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + zfs_acl_ids_free(&acl_ids); + dmu_tx_abort(tx); + return (error); + } + zfs_mknode(zp, vap, tx, cr, IS_XATTR, &xzp, &acl_ids); + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + +#ifdef DEBUG + error = sa_lookup(xzp->z_sa_hdl, SA_ZPL_PARENT(zsb), + &parent, sizeof (parent)); + ASSERT(error == 0 && parent == zp->z_id); +#endif + + VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_XATTR(zsb), &xzp->z_id, + sizeof (xzp->z_id), tx)); + + (void) zfs_log_create(zsb->z_log, tx, TX_MKXATTR, zp, + xzp, "", NULL, acl_ids.z_fuidp, vap); + + zfs_acl_ids_free(&acl_ids); + dmu_tx_commit(tx); + + *xipp = ZTOI(xzp); + + return (0); +} + +/* + * Return a znode for the extended attribute directory for zp. + * ** If the directory does not already exist, it is created ** + * + * IN: zp - znode to obtain attribute directory from + * cr - credentials of caller + * flags - flags from the VOP_LOOKUP call + * + * OUT: xipp - pointer to extended attribute znode + * + * RETURN: 0 on success + * error number on failure + */ +int +zfs_get_xattrdir(znode_t *zp, struct inode **xipp, cred_t *cr, int flags) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + znode_t *xzp; + zfs_dirlock_t *dl; + vattr_t va; + int error; +top: + error = zfs_dirent_lock(&dl, zp, "", &xzp, ZXATTR, NULL, NULL); + if (error) + return (error); + + if (xzp != NULL) { + *xipp = ZTOI(xzp); + zfs_dirent_unlock(dl); + return (0); + } + + if (!(flags & CREATE_XATTR_DIR)) { + zfs_dirent_unlock(dl); + return (SET_ERROR(ENOENT)); + } + + if (zfs_is_readonly(zsb)) { + zfs_dirent_unlock(dl); + return (SET_ERROR(EROFS)); + } + + /* + * The ability to 'create' files in an attribute + * directory comes from the write_xattr permission on the base file. + * + * The ability to 'search' an attribute directory requires + * read_xattr permission on the base file. + * + * Once in a directory the ability to read/write attributes + * is controlled by the permissions on the attribute file. + */ + va.va_mask = ATTR_MODE | ATTR_UID | ATTR_GID; + va.va_mode = S_IFDIR | S_ISVTX | 0777; + zfs_fuid_map_ids(zp, cr, &va.va_uid, &va.va_gid); + + va.va_dentry = NULL; + error = zfs_make_xattrdir(zp, &va, xipp, cr); + zfs_dirent_unlock(dl); + + if (error == ERESTART) { + /* NB: we already did dmu_tx_wait() if necessary */ + goto top; + } + + return (error); +} + +/* + * Decide whether it is okay to remove within a sticky directory. + * + * In sticky directories, write access is not sufficient; + * you can remove entries from a directory only if: + * + * you own the directory, + * you own the entry, + * the entry is a plain file and you have write access, + * or you are privileged (checked in secpolicy...). + * + * The function returns 0 if remove access is granted. + */ +int +zfs_sticky_remove_access(znode_t *zdp, znode_t *zp, cred_t *cr) +{ + uid_t uid; + uid_t downer; + uid_t fowner; + zfs_sb_t *zsb = ZTOZSB(zdp); + + if (zsb->z_replay) + return (0); + + if ((zdp->z_mode & S_ISVTX) == 0) + return (0); + + downer = zfs_fuid_map_id(zsb, zdp->z_uid, cr, ZFS_OWNER); + fowner = zfs_fuid_map_id(zsb, zp->z_uid, cr, ZFS_OWNER); + + if ((uid = crgetuid(cr)) == downer || uid == fowner || + (S_ISDIR(ZTOI(zp)->i_mode) && + zfs_zaccess(zp, ACE_WRITE_DATA, 0, B_FALSE, cr) == 0)) + return (0); + else + return (secpolicy_vnode_remove(cr)); +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_fm.c +++ linux-4.4.0/zfs/module/zfs/zfs_fm.c @@ -0,0 +1,936 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/* + * This general routine is responsible for generating all the different ZFS + * ereports. The payload is dependent on the class, and which arguments are + * supplied to the function: + * + * EREPORT POOL VDEV IO + * block X X X + * data X X + * device X X + * pool X + * + * If we are in a loading state, all errors are chained together by the same + * SPA-wide ENA (Error Numeric Association). + * + * For isolated I/O requests, we get the ENA from the zio_t. The propagation + * gets very complicated due to RAID-Z, gang blocks, and vdev caching. We want + * to chain together all ereports associated with a logical piece of data. For + * read I/Os, there are basically three 'types' of I/O, which form a roughly + * layered diagram: + * + * +---------------+ + * | Aggregate I/O | No associated logical data or device + * +---------------+ + * | + * V + * +---------------+ Reads associated with a piece of logical data. + * | Read I/O | This includes reads on behalf of RAID-Z, + * +---------------+ mirrors, gang blocks, retries, etc. + * | + * V + * +---------------+ Reads associated with a particular device, but + * | Physical I/O | no logical data. Issued as part of vdev caching + * +---------------+ and I/O aggregation. + * + * Note that 'physical I/O' here is not the same terminology as used in the rest + * of ZIO. Typically, 'physical I/O' simply means that there is no attached + * blockpointer. But I/O with no associated block pointer can still be related + * to a logical piece of data (i.e. RAID-Z requests). + * + * Purely physical I/O always have unique ENAs. They are not related to a + * particular piece of logical data, and therefore cannot be chained together. + * We still generate an ereport, but the DE doesn't correlate it with any + * logical piece of data. When such an I/O fails, the delegated I/O requests + * will issue a retry, which will trigger the 'real' ereport with the correct + * ENA. + * + * We keep track of the ENA for a ZIO chain through the 'io_logical' member. + * When a new logical I/O is issued, we set this to point to itself. Child I/Os + * then inherit this pointer, so that when it is first set subsequent failures + * will use the same ENA. For vdev cache fill and queue aggregation I/O, + * this pointer is set to NULL, and no ereport will be generated (since it + * doesn't actually correspond to any particular device or piece of data, + * and the caller will always retry without caching or queueing anyway). + * + * For checksum errors, we want to include more information about the actual + * error which occurs. Accordingly, we build an ereport when the error is + * noticed, but instead of sending it in immediately, we hang it off of the + * io_cksum_report field of the logical IO. When the logical IO completes + * (successfully or not), zfs_ereport_finish_checksum() is called with the + * good and bad versions of the buffer (if available), and we annotate the + * ereport with information about the differences. + */ +#ifdef _KERNEL +static void +zfs_zevent_post_cb(nvlist_t *nvl, nvlist_t *detector) +{ + if (nvl) + fm_nvlist_destroy(nvl, FM_NVA_FREE); + + if (detector) + fm_nvlist_destroy(detector, FM_NVA_FREE); +} + +static void +zfs_zevent_post_cb_noop(nvlist_t *nvl, nvlist_t *detector) +{ +} + +static void +zfs_ereport_start(nvlist_t **ereport_out, nvlist_t **detector_out, + const char *subclass, spa_t *spa, vdev_t *vd, zio_t *zio, + uint64_t stateoroffset, uint64_t size) +{ + nvlist_t *ereport, *detector; + + uint64_t ena; + char class[64]; + + /* + * If we are doing a spa_tryimport() or in recovery mode, + * ignore errors. + */ + if (spa_load_state(spa) == SPA_LOAD_TRYIMPORT || + spa_load_state(spa) == SPA_LOAD_RECOVER) + return; + + /* + * If we are in the middle of opening a pool, and the previous attempt + * failed, don't bother logging any new ereports - we're just going to + * get the same diagnosis anyway. + */ + if (spa_load_state(spa) != SPA_LOAD_NONE && + spa->spa_last_open_failed) + return; + + if (zio != NULL) { + /* + * If this is not a read or write zio, ignore the error. This + * can occur if the DKIOCFLUSHWRITECACHE ioctl fails. + */ + if (zio->io_type != ZIO_TYPE_READ && + zio->io_type != ZIO_TYPE_WRITE) + return; + + if (vd != NULL) { + /* + * If the vdev has already been marked as failing due + * to a failed probe, then ignore any subsequent I/O + * errors, as the DE will automatically fault the vdev + * on the first such failure. This also catches cases + * where vdev_remove_wanted is set and the device has + * not yet been asynchronously placed into the REMOVED + * state. + */ + if (zio->io_vd == vd && !vdev_accessible(vd, zio)) + return; + + /* + * Ignore checksum errors for reads from DTL regions of + * leaf vdevs. + */ + if (zio->io_type == ZIO_TYPE_READ && + zio->io_error == ECKSUM && + vd->vdev_ops->vdev_op_leaf && + vdev_dtl_contains(vd, DTL_MISSING, zio->io_txg, 1)) + return; + } + } + + /* + * For probe failure, we want to avoid posting ereports if we've + * already removed the device in the meantime. + */ + if (vd != NULL && + strcmp(subclass, FM_EREPORT_ZFS_PROBE_FAILURE) == 0 && + (vd->vdev_remove_wanted || vd->vdev_state == VDEV_STATE_REMOVED)) + return; + + if ((ereport = fm_nvlist_create(NULL)) == NULL) + return; + + if ((detector = fm_nvlist_create(NULL)) == NULL) { + fm_nvlist_destroy(ereport, FM_NVA_FREE); + return; + } + + /* + * Serialize ereport generation + */ + mutex_enter(&spa->spa_errlist_lock); + + /* + * Determine the ENA to use for this event. If we are in a loading + * state, use a SPA-wide ENA. Otherwise, if we are in an I/O state, use + * a root zio-wide ENA. Otherwise, simply use a unique ENA. + */ + if (spa_load_state(spa) != SPA_LOAD_NONE) { + if (spa->spa_ena == 0) + spa->spa_ena = fm_ena_generate(0, FM_ENA_FMT1); + ena = spa->spa_ena; + } else if (zio != NULL && zio->io_logical != NULL) { + if (zio->io_logical->io_ena == 0) + zio->io_logical->io_ena = + fm_ena_generate(0, FM_ENA_FMT1); + ena = zio->io_logical->io_ena; + } else { + ena = fm_ena_generate(0, FM_ENA_FMT1); + } + + /* + * Construct the full class, detector, and other standard FMA fields. + */ + (void) snprintf(class, sizeof (class), "%s.%s", + ZFS_ERROR_CLASS, subclass); + + fm_fmri_zfs_set(detector, FM_ZFS_SCHEME_VERSION, spa_guid(spa), + vd != NULL ? vd->vdev_guid : 0); + + fm_ereport_set(ereport, FM_EREPORT_VERSION, class, ena, detector, NULL); + + /* + * Construct the per-ereport payload, depending on which parameters are + * passed in. + */ + + /* + * Generic payload members common to all ereports. + */ + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_POOL, + DATA_TYPE_STRING, spa_name(spa), FM_EREPORT_PAYLOAD_ZFS_POOL_GUID, + DATA_TYPE_UINT64, spa_guid(spa), + FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT, DATA_TYPE_INT32, + spa_load_state(spa), NULL); + + if (spa != NULL) { + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE, + DATA_TYPE_STRING, + spa_get_failmode(spa) == ZIO_FAILURE_MODE_WAIT ? + FM_EREPORT_FAILMODE_WAIT : + spa_get_failmode(spa) == ZIO_FAILURE_MODE_CONTINUE ? + FM_EREPORT_FAILMODE_CONTINUE : FM_EREPORT_FAILMODE_PANIC, + NULL); + } + + if (vd != NULL) { + vdev_t *pvd = vd->vdev_parent; + vdev_queue_t *vq = &vd->vdev_queue; + vdev_stat_t *vs = &vd->vdev_stat; + vdev_t *spare_vd; + uint64_t *spare_guids; + char **spare_paths; + int i, spare_count; + + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_VDEV_GUID, + DATA_TYPE_UINT64, vd->vdev_guid, + FM_EREPORT_PAYLOAD_ZFS_VDEV_TYPE, + DATA_TYPE_STRING, vd->vdev_ops->vdev_op_type, NULL); + if (vd->vdev_path != NULL) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_PATH, + DATA_TYPE_STRING, vd->vdev_path, NULL); + if (vd->vdev_devid != NULL) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_DEVID, + DATA_TYPE_STRING, vd->vdev_devid, NULL); + if (vd->vdev_fru != NULL) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_FRU, + DATA_TYPE_STRING, vd->vdev_fru, NULL); + if (vd->vdev_ashift) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_ASHIFT, + DATA_TYPE_UINT64, vd->vdev_ashift, NULL); + + if (vq != NULL) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_COMP_TS, + DATA_TYPE_UINT64, vq->vq_io_complete_ts, NULL); + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_DELTA_TS, + DATA_TYPE_UINT64, vq->vq_io_delta_ts, NULL); + } + + if (vs != NULL) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_VDEV_READ_ERRORS, + DATA_TYPE_UINT64, vs->vs_read_errors, + FM_EREPORT_PAYLOAD_ZFS_VDEV_WRITE_ERRORS, + DATA_TYPE_UINT64, vs->vs_write_errors, + FM_EREPORT_PAYLOAD_ZFS_VDEV_CKSUM_ERRORS, + DATA_TYPE_UINT64, vs->vs_checksum_errors, NULL); + } + + if (pvd != NULL) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_PARENT_GUID, + DATA_TYPE_UINT64, pvd->vdev_guid, + FM_EREPORT_PAYLOAD_ZFS_PARENT_TYPE, + DATA_TYPE_STRING, pvd->vdev_ops->vdev_op_type, + NULL); + if (pvd->vdev_path) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_PARENT_PATH, + DATA_TYPE_STRING, pvd->vdev_path, NULL); + if (pvd->vdev_devid) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_PARENT_DEVID, + DATA_TYPE_STRING, pvd->vdev_devid, NULL); + } + + spare_count = spa->spa_spares.sav_count; + spare_paths = kmem_zalloc(sizeof (char *) * spare_count, + KM_SLEEP); + spare_guids = kmem_zalloc(sizeof (uint64_t) * spare_count, + KM_SLEEP); + + for (i = 0; i < spare_count; i++) { + spare_vd = spa->spa_spares.sav_vdevs[i]; + if (spare_vd) { + spare_paths[i] = spare_vd->vdev_path; + spare_guids[i] = spare_vd->vdev_guid; + } + } + + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_PATHS, + DATA_TYPE_STRING_ARRAY, spare_count, spare_paths, + FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_GUIDS, + DATA_TYPE_UINT64_ARRAY, spare_count, spare_guids, NULL); + + kmem_free(spare_guids, sizeof (uint64_t) * spare_count); + kmem_free(spare_paths, sizeof (char *) * spare_count); + } + + if (zio != NULL) { + /* + * Payload common to all I/Os. + */ + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_ERR, + DATA_TYPE_INT32, zio->io_error, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_FLAGS, + DATA_TYPE_INT32, zio->io_flags, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_STAGE, + DATA_TYPE_UINT32, zio->io_stage, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_PIPELINE, + DATA_TYPE_UINT32, zio->io_pipeline, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_DELAY, + DATA_TYPE_UINT64, zio->io_delay, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_TIMESTAMP, + DATA_TYPE_UINT64, zio->io_timestamp, NULL); + fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_DELTA, + DATA_TYPE_UINT64, zio->io_delta, NULL); + + /* + * If the 'size' parameter is non-zero, it indicates this is a + * RAID-Z or other I/O where the physical offset and length are + * provided for us, instead of within the zio_t. + */ + if (vd != NULL) { + if (size) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_ZIO_OFFSET, + DATA_TYPE_UINT64, stateoroffset, + FM_EREPORT_PAYLOAD_ZFS_ZIO_SIZE, + DATA_TYPE_UINT64, size, NULL); + else + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_ZIO_OFFSET, + DATA_TYPE_UINT64, zio->io_offset, + FM_EREPORT_PAYLOAD_ZFS_ZIO_SIZE, + DATA_TYPE_UINT64, zio->io_size, NULL); + } + + /* + * Payload for I/Os with corresponding logical information. + */ + if (zio->io_logical != NULL) + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJSET, + DATA_TYPE_UINT64, + zio->io_logical->io_bookmark.zb_objset, + FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJECT, + DATA_TYPE_UINT64, + zio->io_logical->io_bookmark.zb_object, + FM_EREPORT_PAYLOAD_ZFS_ZIO_LEVEL, + DATA_TYPE_INT64, + zio->io_logical->io_bookmark.zb_level, + FM_EREPORT_PAYLOAD_ZFS_ZIO_BLKID, + DATA_TYPE_UINT64, + zio->io_logical->io_bookmark.zb_blkid, NULL); + } else if (vd != NULL) { + /* + * If we have a vdev but no zio, this is a device fault, and the + * 'stateoroffset' parameter indicates the previous state of the + * vdev. + */ + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_PREV_STATE, + DATA_TYPE_UINT64, stateoroffset, NULL); + } + + mutex_exit(&spa->spa_errlist_lock); + + *ereport_out = ereport; + *detector_out = detector; +} + +/* if it's <= 128 bytes, save the corruption directly */ +#define ZFM_MAX_INLINE (128 / sizeof (uint64_t)) + +#define MAX_RANGES 16 + +typedef struct zfs_ecksum_info { + /* histograms of set and cleared bits by bit number in a 64-bit word */ + uint16_t zei_histogram_set[sizeof (uint64_t) * NBBY]; + uint16_t zei_histogram_cleared[sizeof (uint64_t) * NBBY]; + + /* inline arrays of bits set and cleared. */ + uint64_t zei_bits_set[ZFM_MAX_INLINE]; + uint64_t zei_bits_cleared[ZFM_MAX_INLINE]; + + /* + * for each range, the number of bits set and cleared. The Hamming + * distance between the good and bad buffers is the sum of them all. + */ + uint32_t zei_range_sets[MAX_RANGES]; + uint32_t zei_range_clears[MAX_RANGES]; + + struct zei_ranges { + uint32_t zr_start; + uint32_t zr_end; + } zei_ranges[MAX_RANGES]; + + size_t zei_range_count; + uint32_t zei_mingap; + uint32_t zei_allowed_mingap; + +} zfs_ecksum_info_t; + +static void +update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) +{ + size_t i; + size_t bits = 0; + uint64_t value = BE_64(value_arg); + + /* We store the bits in big-endian (largest-first) order */ + for (i = 0; i < 64; i++) { + if (value & (1ull << i)) { + hist[63 - i]++; + ++bits; + } + } + /* update the count of bits changed */ + *count += bits; +} + +/* + * We've now filled up the range array, and need to increase "mingap" and + * shrink the range list accordingly. zei_mingap is always the smallest + * distance between array entries, so we set the new_allowed_gap to be + * one greater than that. We then go through the list, joining together + * any ranges which are closer than the new_allowed_gap. + * + * By construction, there will be at least one. We also update zei_mingap + * to the new smallest gap, to prepare for our next invocation. + */ +static void +zei_shrink_ranges(zfs_ecksum_info_t *eip) +{ + uint32_t mingap = UINT32_MAX; + uint32_t new_allowed_gap = eip->zei_mingap + 1; + + size_t idx, output; + size_t max = eip->zei_range_count; + + struct zei_ranges *r = eip->zei_ranges; + + ASSERT3U(eip->zei_range_count, >, 0); + ASSERT3U(eip->zei_range_count, <=, MAX_RANGES); + + output = idx = 0; + while (idx < max - 1) { + uint32_t start = r[idx].zr_start; + uint32_t end = r[idx].zr_end; + + while (idx < max - 1) { + uint32_t nstart, nend, gap; + + idx++; + nstart = r[idx].zr_start; + nend = r[idx].zr_end; + + gap = nstart - end; + if (gap < new_allowed_gap) { + end = nend; + continue; + } + if (gap < mingap) + mingap = gap; + break; + } + r[output].zr_start = start; + r[output].zr_end = end; + output++; + } + ASSERT3U(output, <, eip->zei_range_count); + eip->zei_range_count = output; + eip->zei_mingap = mingap; + eip->zei_allowed_mingap = new_allowed_gap; +} + +static void +zei_add_range(zfs_ecksum_info_t *eip, int start, int end) +{ + struct zei_ranges *r = eip->zei_ranges; + size_t count = eip->zei_range_count; + + if (count >= MAX_RANGES) { + zei_shrink_ranges(eip); + count = eip->zei_range_count; + } + if (count == 0) { + eip->zei_mingap = UINT32_MAX; + eip->zei_allowed_mingap = 1; + } else { + int gap = start - r[count - 1].zr_end; + + if (gap < eip->zei_allowed_mingap) { + r[count - 1].zr_end = end; + return; + } + if (gap < eip->zei_mingap) + eip->zei_mingap = gap; + } + r[count].zr_start = start; + r[count].zr_end = end; + eip->zei_range_count++; +} + +static size_t +zei_range_total_size(zfs_ecksum_info_t *eip) +{ + struct zei_ranges *r = eip->zei_ranges; + size_t count = eip->zei_range_count; + size_t result = 0; + size_t idx; + + for (idx = 0; idx < count; idx++) + result += (r[idx].zr_end - r[idx].zr_start); + + return (result); +} + +static zfs_ecksum_info_t * +annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, + const uint8_t *goodbuf, const uint8_t *badbuf, size_t size, + boolean_t drop_if_identical) +{ + const uint64_t *good = (const uint64_t *)goodbuf; + const uint64_t *bad = (const uint64_t *)badbuf; + + uint64_t allset = 0; + uint64_t allcleared = 0; + + size_t nui64s = size / sizeof (uint64_t); + + size_t inline_size; + int no_inline = 0; + size_t idx; + size_t range; + + size_t offset = 0; + ssize_t start = -1; + + zfs_ecksum_info_t *eip = kmem_zalloc(sizeof (*eip), KM_SLEEP); + + /* don't do any annotation for injected checksum errors */ + if (info != NULL && info->zbc_injected) + return (eip); + + if (info != NULL && info->zbc_has_cksum) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_CKSUM_EXPECTED, + DATA_TYPE_UINT64_ARRAY, + sizeof (info->zbc_expected) / sizeof (uint64_t), + (uint64_t *)&info->zbc_expected, + FM_EREPORT_PAYLOAD_ZFS_CKSUM_ACTUAL, + DATA_TYPE_UINT64_ARRAY, + sizeof (info->zbc_actual) / sizeof (uint64_t), + (uint64_t *)&info->zbc_actual, + FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO, + DATA_TYPE_STRING, + info->zbc_checksum_name, + NULL); + + if (info->zbc_byteswapped) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_CKSUM_BYTESWAP, + DATA_TYPE_BOOLEAN, 1, + NULL); + } + } + + if (badbuf == NULL || goodbuf == NULL) + return (eip); + + ASSERT3U(nui64s, <=, UINT16_MAX); + ASSERT3U(size, ==, nui64s * sizeof (uint64_t)); + ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); + ASSERT3U(size, <=, UINT32_MAX); + + /* build up the range list by comparing the two buffers. */ + for (idx = 0; idx < nui64s; idx++) { + if (good[idx] == bad[idx]) { + if (start == -1) + continue; + + zei_add_range(eip, start, idx); + start = -1; + } else { + if (start != -1) + continue; + + start = idx; + } + } + if (start != -1) + zei_add_range(eip, start, idx); + + /* See if it will fit in our inline buffers */ + inline_size = zei_range_total_size(eip); + if (inline_size > ZFM_MAX_INLINE) + no_inline = 1; + + /* + * If there is no change and we want to drop if the buffers are + * identical, do so. + */ + if (inline_size == 0 && drop_if_identical) { + kmem_free(eip, sizeof (*eip)); + return (NULL); + } + + /* + * Now walk through the ranges, filling in the details of the + * differences. Also convert our uint64_t-array offsets to byte + * offsets. + */ + for (range = 0; range < eip->zei_range_count; range++) { + size_t start = eip->zei_ranges[range].zr_start; + size_t end = eip->zei_ranges[range].zr_end; + + for (idx = start; idx < end; idx++) { + uint64_t set, cleared; + + // bits set in bad, but not in good + set = ((~good[idx]) & bad[idx]); + // bits set in good, but not in bad + cleared = (good[idx] & (~bad[idx])); + + allset |= set; + allcleared |= cleared; + + if (!no_inline) { + ASSERT3U(offset, <, inline_size); + eip->zei_bits_set[offset] = set; + eip->zei_bits_cleared[offset] = cleared; + offset++; + } + + update_histogram(set, eip->zei_histogram_set, + &eip->zei_range_sets[range]); + update_histogram(cleared, eip->zei_histogram_cleared, + &eip->zei_range_clears[range]); + } + + /* convert to byte offsets */ + eip->zei_ranges[range].zr_start *= sizeof (uint64_t); + eip->zei_ranges[range].zr_end *= sizeof (uint64_t); + } + eip->zei_allowed_mingap *= sizeof (uint64_t); + inline_size *= sizeof (uint64_t); + + /* fill in ereport */ + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_BAD_OFFSET_RANGES, + DATA_TYPE_UINT32_ARRAY, 2 * eip->zei_range_count, + (uint32_t *)eip->zei_ranges, + FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_MIN_GAP, + DATA_TYPE_UINT32, eip->zei_allowed_mingap, + FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_SETS, + DATA_TYPE_UINT32_ARRAY, eip->zei_range_count, eip->zei_range_sets, + FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_CLEARS, + DATA_TYPE_UINT32_ARRAY, eip->zei_range_count, eip->zei_range_clears, + NULL); + + if (!no_inline) { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_BAD_SET_BITS, + DATA_TYPE_UINT8_ARRAY, + inline_size, (uint8_t *)eip->zei_bits_set, + FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_BITS, + DATA_TYPE_UINT8_ARRAY, + inline_size, (uint8_t *)eip->zei_bits_cleared, + NULL); + } else { + fm_payload_set(ereport, + FM_EREPORT_PAYLOAD_ZFS_BAD_SET_HISTOGRAM, + DATA_TYPE_UINT16_ARRAY, + NBBY * sizeof (uint64_t), eip->zei_histogram_set, + FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_HISTOGRAM, + DATA_TYPE_UINT16_ARRAY, + NBBY * sizeof (uint64_t), eip->zei_histogram_cleared, + NULL); + } + return (eip); +} +#endif + +void +zfs_ereport_post(const char *subclass, spa_t *spa, vdev_t *vd, zio_t *zio, + uint64_t stateoroffset, uint64_t size) +{ +#ifdef _KERNEL + nvlist_t *ereport = NULL; + nvlist_t *detector = NULL; + + zfs_ereport_start(&ereport, &detector, + subclass, spa, vd, zio, stateoroffset, size); + + if (ereport == NULL) + return; + + /* Cleanup is handled by the callback function */ + zfs_zevent_post(ereport, detector, zfs_zevent_post_cb); +#endif +} + +void +zfs_ereport_start_checksum(spa_t *spa, vdev_t *vd, + struct zio *zio, uint64_t offset, uint64_t length, void *arg, + zio_bad_cksum_t *info) +{ + zio_cksum_report_t *report = kmem_zalloc(sizeof (*report), KM_SLEEP); + + if (zio->io_vsd != NULL) + zio->io_vsd_ops->vsd_cksum_report(zio, report, arg); + else + zio_vsd_default_cksum_report(zio, report, arg); + + /* copy the checksum failure information if it was provided */ + if (info != NULL) { + report->zcr_ckinfo = kmem_zalloc(sizeof (*info), KM_SLEEP); + bcopy(info, report->zcr_ckinfo, sizeof (*info)); + } + + report->zcr_align = 1ULL << vd->vdev_top->vdev_ashift; + report->zcr_length = length; + +#ifdef _KERNEL + zfs_ereport_start(&report->zcr_ereport, &report->zcr_detector, + FM_EREPORT_ZFS_CHECKSUM, spa, vd, zio, offset, length); + + if (report->zcr_ereport == NULL) { + zfs_ereport_free_checksum(report); + return; + } +#endif + + mutex_enter(&spa->spa_errlist_lock); + report->zcr_next = zio->io_logical->io_cksum_report; + zio->io_logical->io_cksum_report = report; + mutex_exit(&spa->spa_errlist_lock); +} + +void +zfs_ereport_finish_checksum(zio_cksum_report_t *report, + const void *good_data, const void *bad_data, boolean_t drop_if_identical) +{ +#ifdef _KERNEL + zfs_ecksum_info_t *info; + + info = annotate_ecksum(report->zcr_ereport, report->zcr_ckinfo, + good_data, bad_data, report->zcr_length, drop_if_identical); + if (info != NULL) + zfs_zevent_post(report->zcr_ereport, + report->zcr_detector, zfs_zevent_post_cb); + else + zfs_zevent_post_cb(report->zcr_ereport, report->zcr_detector); + + report->zcr_ereport = report->zcr_detector = NULL; + if (info != NULL) + kmem_free(info, sizeof (*info)); +#endif +} + +void +zfs_ereport_free_checksum(zio_cksum_report_t *rpt) +{ +#ifdef _KERNEL + if (rpt->zcr_ereport != NULL) { + fm_nvlist_destroy(rpt->zcr_ereport, + FM_NVA_FREE); + fm_nvlist_destroy(rpt->zcr_detector, + FM_NVA_FREE); + } +#endif + rpt->zcr_free(rpt->zcr_cbdata, rpt->zcr_cbinfo); + + if (rpt->zcr_ckinfo != NULL) + kmem_free(rpt->zcr_ckinfo, sizeof (*rpt->zcr_ckinfo)); + + kmem_free(rpt, sizeof (*rpt)); +} + +void +zfs_ereport_send_interim_checksum(zio_cksum_report_t *report) +{ +#ifdef _KERNEL + zfs_zevent_post(report->zcr_ereport, report->zcr_detector, + zfs_zevent_post_cb_noop); +#endif +} + +void +zfs_ereport_post_checksum(spa_t *spa, vdev_t *vd, + struct zio *zio, uint64_t offset, uint64_t length, + const void *good_data, const void *bad_data, zio_bad_cksum_t *zbc) +{ +#ifdef _KERNEL + nvlist_t *ereport = NULL; + nvlist_t *detector = NULL; + zfs_ecksum_info_t *info; + + zfs_ereport_start(&ereport, &detector, + FM_EREPORT_ZFS_CHECKSUM, spa, vd, zio, offset, length); + + if (ereport == NULL) + return; + + info = annotate_ecksum(ereport, zbc, good_data, bad_data, length, + B_FALSE); + + if (info != NULL) { + zfs_zevent_post(ereport, detector, zfs_zevent_post_cb); + kmem_free(info, sizeof (*info)); + } +#endif +} + +static void +zfs_post_common(spa_t *spa, vdev_t *vd, const char *name) +{ +#ifdef _KERNEL + nvlist_t *resource; + char class[64]; + + if (spa_load_state(spa) == SPA_LOAD_TRYIMPORT) + return; + + if ((resource = fm_nvlist_create(NULL)) == NULL) + return; + + (void) snprintf(class, sizeof (class), "%s.%s.%s", FM_RSRC_RESOURCE, + ZFS_ERROR_CLASS, name); + VERIFY0(nvlist_add_uint8(resource, FM_VERSION, FM_RSRC_VERSION)); + VERIFY0(nvlist_add_string(resource, FM_CLASS, class)); + VERIFY0(nvlist_add_uint64(resource, + FM_EREPORT_PAYLOAD_ZFS_POOL_GUID, spa_guid(spa))); + VERIFY0(nvlist_add_int32(resource, + FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT, spa_load_state(spa))); + + if (vd) { + VERIFY0(nvlist_add_uint64(resource, + FM_EREPORT_PAYLOAD_ZFS_VDEV_GUID, vd->vdev_guid)); + VERIFY0(nvlist_add_uint64(resource, + FM_EREPORT_PAYLOAD_ZFS_VDEV_STATE, vd->vdev_state)); + } + + zfs_zevent_post(resource, NULL, zfs_zevent_post_cb); +#endif +} + +/* + * The 'resource.fs.zfs.removed' event is an internal signal that the given vdev + * has been removed from the system. This will cause the DE to ignore any + * recent I/O errors, inferring that they are due to the asynchronous device + * removal. + */ +void +zfs_post_remove(spa_t *spa, vdev_t *vd) +{ + zfs_post_common(spa, vd, FM_EREPORT_RESOURCE_REMOVED); +} + +/* + * The 'resource.fs.zfs.autoreplace' event is an internal signal that the pool + * has the 'autoreplace' property set, and therefore any broken vdevs will be + * handled by higher level logic, and no vdev fault should be generated. + */ +void +zfs_post_autoreplace(spa_t *spa, vdev_t *vd) +{ + zfs_post_common(spa, vd, FM_EREPORT_RESOURCE_AUTOREPLACE); +} + +/* + * The 'resource.fs.zfs.statechange' event is an internal signal that the + * given vdev has transitioned its state to DEGRADED or HEALTHY. This will + * cause the retire agent to repair any outstanding fault management cases + * open because the device was not found (fault.fs.zfs.device). + */ +void +zfs_post_state_change(spa_t *spa, vdev_t *vd) +{ + zfs_post_common(spa, vd, FM_EREPORT_RESOURCE_STATECHANGE); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zfs_ereport_post); +EXPORT_SYMBOL(zfs_ereport_post_checksum); +EXPORT_SYMBOL(zfs_post_remove); +EXPORT_SYMBOL(zfs_post_autoreplace); +EXPORT_SYMBOL(zfs_post_state_change); +#endif /* _KERNEL */ --- linux-4.4.0.orig/zfs/module/zfs/zfs_fuid.c +++ linux-4.4.0/zfs/module/zfs/zfs_fuid.c @@ -0,0 +1,778 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#ifdef _KERNEL +#include +#include +#include +#include +#endif +#include + +/* + * FUID Domain table(s). + * + * The FUID table is stored as a packed nvlist of an array + * of nvlists which contain an index, domain string and offset + * + * During file system initialization the nvlist(s) are read and + * two AVL trees are created. One tree is keyed by the index number + * and the other by the domain string. Nodes are never removed from + * trees, but new entries may be added. If a new entry is added then + * the zsb->z_fuid_dirty flag is set to true and the caller will then + * be responsible for calling zfs_fuid_sync() to sync the changes to disk. + * + */ + +#define FUID_IDX "fuid_idx" +#define FUID_DOMAIN "fuid_domain" +#define FUID_OFFSET "fuid_offset" +#define FUID_NVP_ARRAY "fuid_nvlist" + +typedef struct fuid_domain { + avl_node_t f_domnode; + avl_node_t f_idxnode; + ksiddomain_t *f_ksid; + uint64_t f_idx; +} fuid_domain_t; + +static char *nulldomain = ""; + +/* + * Compare two indexes. + */ +static int +idx_compare(const void *arg1, const void *arg2) +{ + const fuid_domain_t *node1 = arg1; + const fuid_domain_t *node2 = arg2; + + if (node1->f_idx < node2->f_idx) + return (-1); + else if (node1->f_idx > node2->f_idx) + return (1); + return (0); +} + +/* + * Compare two domain strings. + */ +static int +domain_compare(const void *arg1, const void *arg2) +{ + const fuid_domain_t *node1 = arg1; + const fuid_domain_t *node2 = arg2; + int val; + + val = strcmp(node1->f_ksid->kd_name, node2->f_ksid->kd_name); + if (val == 0) + return (0); + return (val > 0 ? 1 : -1); +} + +void +zfs_fuid_avl_tree_create(avl_tree_t *idx_tree, avl_tree_t *domain_tree) +{ + avl_create(idx_tree, idx_compare, + sizeof (fuid_domain_t), offsetof(fuid_domain_t, f_idxnode)); + avl_create(domain_tree, domain_compare, + sizeof (fuid_domain_t), offsetof(fuid_domain_t, f_domnode)); +} + +/* + * load initial fuid domain and idx trees. This function is used by + * both the kernel and zdb. + */ +uint64_t +zfs_fuid_table_load(objset_t *os, uint64_t fuid_obj, avl_tree_t *idx_tree, + avl_tree_t *domain_tree) +{ + dmu_buf_t *db; + uint64_t fuid_size; + + ASSERT(fuid_obj != 0); + VERIFY(0 == dmu_bonus_hold(os, fuid_obj, + FTAG, &db)); + fuid_size = *(uint64_t *)db->db_data; + dmu_buf_rele(db, FTAG); + + if (fuid_size) { + nvlist_t **fuidnvp; + nvlist_t *nvp = NULL; + uint_t count; + char *packed; + int i; + + packed = kmem_alloc(fuid_size, KM_SLEEP); + VERIFY(dmu_read(os, fuid_obj, 0, + fuid_size, packed, DMU_READ_PREFETCH) == 0); + VERIFY(nvlist_unpack(packed, fuid_size, + &nvp, 0) == 0); + VERIFY(nvlist_lookup_nvlist_array(nvp, FUID_NVP_ARRAY, + &fuidnvp, &count) == 0); + + for (i = 0; i != count; i++) { + fuid_domain_t *domnode; + char *domain; + uint64_t idx; + + VERIFY(nvlist_lookup_string(fuidnvp[i], FUID_DOMAIN, + &domain) == 0); + VERIFY(nvlist_lookup_uint64(fuidnvp[i], FUID_IDX, + &idx) == 0); + + domnode = kmem_alloc(sizeof (fuid_domain_t), KM_SLEEP); + + domnode->f_idx = idx; + domnode->f_ksid = ksid_lookupdomain(domain); + avl_add(idx_tree, domnode); + avl_add(domain_tree, domnode); + } + nvlist_free(nvp); + kmem_free(packed, fuid_size); + } + return (fuid_size); +} + +void +zfs_fuid_table_destroy(avl_tree_t *idx_tree, avl_tree_t *domain_tree) +{ + fuid_domain_t *domnode; + void *cookie; + + cookie = NULL; + while ((domnode = avl_destroy_nodes(domain_tree, &cookie))) + ksiddomain_rele(domnode->f_ksid); + + avl_destroy(domain_tree); + cookie = NULL; + while ((domnode = avl_destroy_nodes(idx_tree, &cookie))) + kmem_free(domnode, sizeof (fuid_domain_t)); + avl_destroy(idx_tree); +} + +char * +zfs_fuid_idx_domain(avl_tree_t *idx_tree, uint32_t idx) +{ + fuid_domain_t searchnode, *findnode; + avl_index_t loc; + + searchnode.f_idx = idx; + + findnode = avl_find(idx_tree, &searchnode, &loc); + + return (findnode ? findnode->f_ksid->kd_name : nulldomain); +} + +#ifdef _KERNEL +/* + * Load the fuid table(s) into memory. + */ +static void +zfs_fuid_init(zfs_sb_t *zsb) +{ + rw_enter(&zsb->z_fuid_lock, RW_WRITER); + + if (zsb->z_fuid_loaded) { + rw_exit(&zsb->z_fuid_lock); + return; + } + + zfs_fuid_avl_tree_create(&zsb->z_fuid_idx, &zsb->z_fuid_domain); + + (void) zap_lookup(zsb->z_os, MASTER_NODE_OBJ, + ZFS_FUID_TABLES, 8, 1, &zsb->z_fuid_obj); + if (zsb->z_fuid_obj != 0) { + zsb->z_fuid_size = zfs_fuid_table_load(zsb->z_os, + zsb->z_fuid_obj, &zsb->z_fuid_idx, + &zsb->z_fuid_domain); + } + + zsb->z_fuid_loaded = B_TRUE; + rw_exit(&zsb->z_fuid_lock); +} + +/* + * sync out AVL trees to persistent storage. + */ +void +zfs_fuid_sync(zfs_sb_t *zsb, dmu_tx_t *tx) +{ + nvlist_t *nvp; + nvlist_t **fuids; + size_t nvsize = 0; + char *packed; + dmu_buf_t *db; + fuid_domain_t *domnode; + int numnodes; + int i; + + if (!zsb->z_fuid_dirty) { + return; + } + + rw_enter(&zsb->z_fuid_lock, RW_WRITER); + + /* + * First see if table needs to be created? + */ + if (zsb->z_fuid_obj == 0) { + zsb->z_fuid_obj = dmu_object_alloc(zsb->z_os, + DMU_OT_FUID, 1 << 14, DMU_OT_FUID_SIZE, + sizeof (uint64_t), tx); + VERIFY(zap_add(zsb->z_os, MASTER_NODE_OBJ, + ZFS_FUID_TABLES, sizeof (uint64_t), 1, + &zsb->z_fuid_obj, tx) == 0); + } + + VERIFY(nvlist_alloc(&nvp, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + numnodes = avl_numnodes(&zsb->z_fuid_idx); + fuids = kmem_alloc(numnodes * sizeof (void *), KM_SLEEP); + for (i = 0, domnode = avl_first(&zsb->z_fuid_domain); domnode; i++, + domnode = AVL_NEXT(&zsb->z_fuid_domain, domnode)) { + VERIFY(nvlist_alloc(&fuids[i], NV_UNIQUE_NAME, KM_SLEEP) == 0); + VERIFY(nvlist_add_uint64(fuids[i], FUID_IDX, + domnode->f_idx) == 0); + VERIFY(nvlist_add_uint64(fuids[i], FUID_OFFSET, 0) == 0); + VERIFY(nvlist_add_string(fuids[i], FUID_DOMAIN, + domnode->f_ksid->kd_name) == 0); + } + VERIFY(nvlist_add_nvlist_array(nvp, FUID_NVP_ARRAY, + fuids, numnodes) == 0); + for (i = 0; i != numnodes; i++) + nvlist_free(fuids[i]); + kmem_free(fuids, numnodes * sizeof (void *)); + VERIFY(nvlist_size(nvp, &nvsize, NV_ENCODE_XDR) == 0); + packed = kmem_alloc(nvsize, KM_SLEEP); + VERIFY(nvlist_pack(nvp, &packed, &nvsize, + NV_ENCODE_XDR, KM_SLEEP) == 0); + nvlist_free(nvp); + zsb->z_fuid_size = nvsize; + dmu_write(zsb->z_os, zsb->z_fuid_obj, 0, zsb->z_fuid_size, packed, tx); + kmem_free(packed, zsb->z_fuid_size); + VERIFY(0 == dmu_bonus_hold(zsb->z_os, zsb->z_fuid_obj, + FTAG, &db)); + dmu_buf_will_dirty(db, tx); + *(uint64_t *)db->db_data = zsb->z_fuid_size; + dmu_buf_rele(db, FTAG); + + zsb->z_fuid_dirty = B_FALSE; + rw_exit(&zsb->z_fuid_lock); +} + +/* + * Query domain table for a given domain. + * + * If domain isn't found and addok is set, it is added to AVL trees and + * the zsb->z_fuid_dirty flag will be set to TRUE. It will then be + * necessary for the caller or another thread to detect the dirty table + * and sync out the changes. + */ +int +zfs_fuid_find_by_domain(zfs_sb_t *zsb, const char *domain, + char **retdomain, boolean_t addok) +{ + fuid_domain_t searchnode, *findnode; + avl_index_t loc; + krw_t rw = RW_READER; + + /* + * If the dummy "nobody" domain then return an index of 0 + * to cause the created FUID to be a standard POSIX id + * for the user nobody. + */ + if (domain[0] == '\0') { + if (retdomain) + *retdomain = nulldomain; + return (0); + } + + searchnode.f_ksid = ksid_lookupdomain(domain); + if (retdomain) + *retdomain = searchnode.f_ksid->kd_name; + if (!zsb->z_fuid_loaded) + zfs_fuid_init(zsb); + +retry: + rw_enter(&zsb->z_fuid_lock, rw); + findnode = avl_find(&zsb->z_fuid_domain, &searchnode, &loc); + + if (findnode) { + rw_exit(&zsb->z_fuid_lock); + ksiddomain_rele(searchnode.f_ksid); + return (findnode->f_idx); + } else if (addok) { + fuid_domain_t *domnode; + uint64_t retidx; + + if (rw == RW_READER && !rw_tryupgrade(&zsb->z_fuid_lock)) { + rw_exit(&zsb->z_fuid_lock); + rw = RW_WRITER; + goto retry; + } + + domnode = kmem_alloc(sizeof (fuid_domain_t), KM_SLEEP); + domnode->f_ksid = searchnode.f_ksid; + + retidx = domnode->f_idx = avl_numnodes(&zsb->z_fuid_idx) + 1; + + avl_add(&zsb->z_fuid_domain, domnode); + avl_add(&zsb->z_fuid_idx, domnode); + zsb->z_fuid_dirty = B_TRUE; + rw_exit(&zsb->z_fuid_lock); + return (retidx); + } else { + rw_exit(&zsb->z_fuid_lock); + return (-1); + } +} + +/* + * Query domain table by index, returning domain string + * + * Returns a pointer from an avl node of the domain string. + * + */ +const char * +zfs_fuid_find_by_idx(zfs_sb_t *zsb, uint32_t idx) +{ + char *domain; + + if (idx == 0 || !zsb->z_use_fuids) + return (NULL); + + if (!zsb->z_fuid_loaded) + zfs_fuid_init(zsb); + + rw_enter(&zsb->z_fuid_lock, RW_READER); + + if (zsb->z_fuid_obj || zsb->z_fuid_dirty) + domain = zfs_fuid_idx_domain(&zsb->z_fuid_idx, idx); + else + domain = nulldomain; + rw_exit(&zsb->z_fuid_lock); + + ASSERT(domain); + return (domain); +} + +void +zfs_fuid_map_ids(znode_t *zp, cred_t *cr, uid_t *uidp, uid_t *gidp) +{ + *uidp = zfs_fuid_map_id(ZTOZSB(zp), zp->z_uid, cr, ZFS_OWNER); + *gidp = zfs_fuid_map_id(ZTOZSB(zp), zp->z_gid, cr, ZFS_GROUP); +} + +uid_t +zfs_fuid_map_id(zfs_sb_t *zsb, uint64_t fuid, + cred_t *cr, zfs_fuid_type_t type) +{ +#ifdef HAVE_KSID + uint32_t index = FUID_INDEX(fuid); + const char *domain; + uid_t id; + + if (index == 0) + return (fuid); + + domain = zfs_fuid_find_by_idx(zsb, index); + ASSERT(domain != NULL); + + if (type == ZFS_OWNER || type == ZFS_ACE_USER) { + (void) kidmap_getuidbysid(crgetzone(cr), domain, + FUID_RID(fuid), &id); + } else { + (void) kidmap_getgidbysid(crgetzone(cr), domain, + FUID_RID(fuid), &id); + } + return (id); +#else + /* + * The Linux port only supports POSIX IDs, use the passed id. + */ + return (fuid); +#endif /* HAVE_KSID */ +} + +/* + * Add a FUID node to the list of fuid's being created for this + * ACL + * + * If ACL has multiple domains, then keep only one copy of each unique + * domain. + */ +void +zfs_fuid_node_add(zfs_fuid_info_t **fuidpp, const char *domain, uint32_t rid, + uint64_t idx, uint64_t id, zfs_fuid_type_t type) +{ + zfs_fuid_t *fuid; + zfs_fuid_domain_t *fuid_domain; + zfs_fuid_info_t *fuidp; + uint64_t fuididx; + boolean_t found = B_FALSE; + + if (*fuidpp == NULL) + *fuidpp = zfs_fuid_info_alloc(); + + fuidp = *fuidpp; + /* + * First find fuid domain index in linked list + * + * If one isn't found then create an entry. + */ + + for (fuididx = 1, fuid_domain = list_head(&fuidp->z_domains); + fuid_domain; fuid_domain = list_next(&fuidp->z_domains, + fuid_domain), fuididx++) { + if (idx == fuid_domain->z_domidx) { + found = B_TRUE; + break; + } + } + + if (!found) { + fuid_domain = kmem_alloc(sizeof (zfs_fuid_domain_t), KM_SLEEP); + fuid_domain->z_domain = domain; + fuid_domain->z_domidx = idx; + list_insert_tail(&fuidp->z_domains, fuid_domain); + fuidp->z_domain_str_sz += strlen(domain) + 1; + fuidp->z_domain_cnt++; + } + + if (type == ZFS_ACE_USER || type == ZFS_ACE_GROUP) { + + /* + * Now allocate fuid entry and add it on the end of the list + */ + + fuid = kmem_alloc(sizeof (zfs_fuid_t), KM_SLEEP); + fuid->z_id = id; + fuid->z_domidx = idx; + fuid->z_logfuid = FUID_ENCODE(fuididx, rid); + + list_insert_tail(&fuidp->z_fuids, fuid); + fuidp->z_fuid_cnt++; + } else { + if (type == ZFS_OWNER) + fuidp->z_fuid_owner = FUID_ENCODE(fuididx, rid); + else + fuidp->z_fuid_group = FUID_ENCODE(fuididx, rid); + } +} + +#ifdef HAVE_KSID +/* + * Create a file system FUID, based on information in the users cred + * + * If cred contains KSID_OWNER then it should be used to determine + * the uid otherwise cred's uid will be used. By default cred's gid + * is used unless it's an ephemeral ID in which case KSID_GROUP will + * be used if it exists. + */ +uint64_t +zfs_fuid_create_cred(zfs_sb_t *zsb, zfs_fuid_type_t type, + cred_t *cr, zfs_fuid_info_t **fuidp) +{ + uint64_t idx; + ksid_t *ksid; + uint32_t rid; + char *kdomain; + const char *domain; + uid_t id; + + VERIFY(type == ZFS_OWNER || type == ZFS_GROUP); + + ksid = crgetsid(cr, (type == ZFS_OWNER) ? KSID_OWNER : KSID_GROUP); + + if (!zsb->z_use_fuids || (ksid == NULL)) { + id = (type == ZFS_OWNER) ? crgetuid(cr) : crgetgid(cr); + + if (IS_EPHEMERAL(id)) + return ((type == ZFS_OWNER) ? UID_NOBODY : GID_NOBODY); + + return ((uint64_t)id); + } + + /* + * ksid is present and FUID is supported + */ + id = (type == ZFS_OWNER) ? ksid_getid(ksid) : crgetgid(cr); + + if (!IS_EPHEMERAL(id)) + return ((uint64_t)id); + + if (type == ZFS_GROUP) + id = ksid_getid(ksid); + + rid = ksid_getrid(ksid); + domain = ksid_getdomain(ksid); + + idx = zfs_fuid_find_by_domain(zsb, domain, &kdomain, B_TRUE); + + zfs_fuid_node_add(fuidp, kdomain, rid, idx, id, type); + + return (FUID_ENCODE(idx, rid)); +} +#endif /* HAVE_KSID */ + +/* + * Create a file system FUID for an ACL ace + * or a chown/chgrp of the file. + * This is similar to zfs_fuid_create_cred, except that + * we can't find the domain + rid information in the + * cred. Instead we have to query Winchester for the + * domain and rid. + * + * During replay operations the domain+rid information is + * found in the zfs_fuid_info_t that the replay code has + * attached to the zsb of the file system. + */ +uint64_t +zfs_fuid_create(zfs_sb_t *zsb, uint64_t id, cred_t *cr, + zfs_fuid_type_t type, zfs_fuid_info_t **fuidpp) +{ +#ifdef HAVE_KSID + const char *domain; + char *kdomain; + uint32_t fuid_idx = FUID_INDEX(id); + uint32_t rid; + idmap_stat status; + uint64_t idx = 0; + zfs_fuid_t *zfuid = NULL; + zfs_fuid_info_t *fuidp = NULL; + + /* + * If POSIX ID, or entry is already a FUID then + * just return the id + * + * We may also be handed an already FUID'ized id via + * chmod. + */ + + if (!zsb->z_use_fuids || !IS_EPHEMERAL(id) || fuid_idx != 0) + return (id); + + if (zsb->z_replay) { + fuidp = zsb->z_fuid_replay; + + /* + * If we are passed an ephemeral id, but no + * fuid_info was logged then return NOBODY. + * This is most likely a result of idmap service + * not being available. + */ + if (fuidp == NULL) + return (UID_NOBODY); + + VERIFY3U(type, >=, ZFS_OWNER); + VERIFY3U(type, <=, ZFS_ACE_GROUP); + + switch (type) { + case ZFS_ACE_USER: + case ZFS_ACE_GROUP: + zfuid = list_head(&fuidp->z_fuids); + rid = FUID_RID(zfuid->z_logfuid); + idx = FUID_INDEX(zfuid->z_logfuid); + break; + case ZFS_OWNER: + rid = FUID_RID(fuidp->z_fuid_owner); + idx = FUID_INDEX(fuidp->z_fuid_owner); + break; + case ZFS_GROUP: + rid = FUID_RID(fuidp->z_fuid_group); + idx = FUID_INDEX(fuidp->z_fuid_group); + break; + }; + domain = fuidp->z_domain_table[idx - 1]; + } else { + if (type == ZFS_OWNER || type == ZFS_ACE_USER) + status = kidmap_getsidbyuid(crgetzone(cr), id, + &domain, &rid); + else + status = kidmap_getsidbygid(crgetzone(cr), id, + &domain, &rid); + + if (status != 0) { + /* + * When returning nobody we will need to + * make a dummy fuid table entry for logging + * purposes. + */ + rid = UID_NOBODY; + domain = nulldomain; + } + } + + idx = zfs_fuid_find_by_domain(zsb, domain, &kdomain, B_TRUE); + + if (!zsb->z_replay) + zfs_fuid_node_add(fuidpp, kdomain, + rid, idx, id, type); + else if (zfuid != NULL) { + list_remove(&fuidp->z_fuids, zfuid); + kmem_free(zfuid, sizeof (zfs_fuid_t)); + } + return (FUID_ENCODE(idx, rid)); +#else + /* + * The Linux port only supports POSIX IDs, use the passed id. + */ + return (id); +#endif +} + +void +zfs_fuid_destroy(zfs_sb_t *zsb) +{ + rw_enter(&zsb->z_fuid_lock, RW_WRITER); + if (!zsb->z_fuid_loaded) { + rw_exit(&zsb->z_fuid_lock); + return; + } + zfs_fuid_table_destroy(&zsb->z_fuid_idx, &zsb->z_fuid_domain); + rw_exit(&zsb->z_fuid_lock); +} + +/* + * Allocate zfs_fuid_info for tracking FUIDs created during + * zfs_mknode, VOP_SETATTR() or VOP_SETSECATTR() + */ +zfs_fuid_info_t * +zfs_fuid_info_alloc(void) +{ + zfs_fuid_info_t *fuidp; + + fuidp = kmem_zalloc(sizeof (zfs_fuid_info_t), KM_SLEEP); + list_create(&fuidp->z_domains, sizeof (zfs_fuid_domain_t), + offsetof(zfs_fuid_domain_t, z_next)); + list_create(&fuidp->z_fuids, sizeof (zfs_fuid_t), + offsetof(zfs_fuid_t, z_next)); + return (fuidp); +} + +/* + * Release all memory associated with zfs_fuid_info_t + */ +void +zfs_fuid_info_free(zfs_fuid_info_t *fuidp) +{ + zfs_fuid_t *zfuid; + zfs_fuid_domain_t *zdomain; + + while ((zfuid = list_head(&fuidp->z_fuids)) != NULL) { + list_remove(&fuidp->z_fuids, zfuid); + kmem_free(zfuid, sizeof (zfs_fuid_t)); + } + + if (fuidp->z_domain_table != NULL) + kmem_free(fuidp->z_domain_table, + (sizeof (char **)) * fuidp->z_domain_cnt); + + while ((zdomain = list_head(&fuidp->z_domains)) != NULL) { + list_remove(&fuidp->z_domains, zdomain); + kmem_free(zdomain, sizeof (zfs_fuid_domain_t)); + } + + kmem_free(fuidp, sizeof (zfs_fuid_info_t)); +} + +/* + * Check to see if id is a groupmember. If cred + * has ksid info then sidlist is checked first + * and if still not found then POSIX groups are checked + * + * Will use a straight FUID compare when possible. + */ +boolean_t +zfs_groupmember(zfs_sb_t *zsb, uint64_t id, cred_t *cr) +{ +#ifdef HAVE_KSID + ksid_t *ksid = crgetsid(cr, KSID_GROUP); + ksidlist_t *ksidlist = crgetsidlist(cr); + uid_t gid; + + if (ksid && ksidlist) { + int i; + ksid_t *ksid_groups; + uint32_t idx = FUID_INDEX(id); + uint32_t rid = FUID_RID(id); + + ksid_groups = ksidlist->ksl_sids; + + for (i = 0; i != ksidlist->ksl_nsid; i++) { + if (idx == 0) { + if (id != IDMAP_WK_CREATOR_GROUP_GID && + id == ksid_groups[i].ks_id) { + return (B_TRUE); + } + } else { + const char *domain; + + domain = zfs_fuid_find_by_idx(zsb, idx); + ASSERT(domain != NULL); + + if (strcmp(domain, + IDMAP_WK_CREATOR_SID_AUTHORITY) == 0) + return (B_FALSE); + + if ((strcmp(domain, + ksid_groups[i].ks_domain->kd_name) == 0) && + rid == ksid_groups[i].ks_rid) + return (B_TRUE); + } + } + } + + /* + * Not found in ksidlist, check posix groups + */ + gid = zfs_fuid_map_id(zsb, id, cr, ZFS_GROUP); + return (groupmember(gid, cr)); +#else + return (B_TRUE); +#endif +} + +void +zfs_fuid_txhold(zfs_sb_t *zsb, dmu_tx_t *tx) +{ + if (zsb->z_fuid_obj == 0) { + dmu_tx_hold_bonus(tx, DMU_NEW_OBJECT); + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, + FUID_SIZE_ESTIMATE(zsb)); + dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, FALSE, NULL); + } else { + dmu_tx_hold_bonus(tx, zsb->z_fuid_obj); + dmu_tx_hold_write(tx, zsb->z_fuid_obj, 0, + FUID_SIZE_ESTIMATE(zsb)); + } +} +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_ioctl.c +++ linux-4.4.0/zfs/module/zfs/zfs_ioctl.c @@ -0,0 +1,6082 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Portions Copyright 2011 Martin Matuska + * Portions Copyright 2012 Pawel Jakub Dawidek + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2013 Steven Hartland. All rights reserved. + * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved. + */ + +/* + * ZFS ioctls. + * + * This file handles the ioctls to /dev/zfs, used for configuring ZFS storage + * pools and filesystems, e.g. with /sbin/zfs and /sbin/zpool. + * + * There are two ways that we handle ioctls: the legacy way where almost + * all of the logic is in the ioctl callback, and the new way where most + * of the marshalling is handled in the common entry point, zfsdev_ioctl(). + * + * Non-legacy ioctls should be registered by calling + * zfs_ioctl_register() from zfs_ioctl_init(). The ioctl is invoked + * from userland by lzc_ioctl(). + * + * The registration arguments are as follows: + * + * const char *name + * The name of the ioctl. This is used for history logging. If the + * ioctl returns successfully (the callback returns 0), and allow_log + * is true, then a history log entry will be recorded with the input & + * output nvlists. The log entry can be printed with "zpool history -i". + * + * zfs_ioc_t ioc + * The ioctl request number, which userland will pass to ioctl(2). + * The ioctl numbers can change from release to release, because + * the caller (libzfs) must be matched to the kernel. + * + * zfs_secpolicy_func_t *secpolicy + * This function will be called before the zfs_ioc_func_t, to + * determine if this operation is permitted. It should return EPERM + * on failure, and 0 on success. Checks include determining if the + * dataset is visible in this zone, and if the user has either all + * zfs privileges in the zone (SYS_MOUNT), or has been granted permission + * to do this operation on this dataset with "zfs allow". + * + * zfs_ioc_namecheck_t namecheck + * This specifies what to expect in the zfs_cmd_t:zc_name -- a pool + * name, a dataset name, or nothing. If the name is not well-formed, + * the ioctl will fail and the callback will not be called. + * Therefore, the callback can assume that the name is well-formed + * (e.g. is null-terminated, doesn't have more than one '@' character, + * doesn't have invalid characters). + * + * zfs_ioc_poolcheck_t pool_check + * This specifies requirements on the pool state. If the pool does + * not meet them (is suspended or is readonly), the ioctl will fail + * and the callback will not be called. If any checks are specified + * (i.e. it is not POOL_CHECK_NONE), namecheck must not be NO_NAME. + * Multiple checks can be or-ed together (e.g. POOL_CHECK_SUSPENDED | + * POOL_CHECK_READONLY). + * + * boolean_t smush_outnvlist + * If smush_outnvlist is true, then the output is presumed to be a + * list of errors, and it will be "smushed" down to fit into the + * caller's buffer, by removing some entries and replacing them with a + * single "N_MORE_ERRORS" entry indicating how many were removed. See + * nvlist_smush() for details. If smush_outnvlist is false, and the + * outnvlist does not fit into the userland-provided buffer, then the + * ioctl will fail with ENOMEM. + * + * zfs_ioc_func_t *func + * The callback function that will perform the operation. + * + * The callback should return 0 on success, or an error number on + * failure. If the function fails, the userland ioctl will return -1, + * and errno will be set to the callback's return value. The callback + * will be called with the following arguments: + * + * const char *name + * The name of the pool or dataset to operate on, from + * zfs_cmd_t:zc_name. The 'namecheck' argument specifies the + * expected type (pool, dataset, or none). + * + * nvlist_t *innvl + * The input nvlist, deserialized from zfs_cmd_t:zc_nvlist_src. Or + * NULL if no input nvlist was provided. Changes to this nvlist are + * ignored. If the input nvlist could not be deserialized, the + * ioctl will fail and the callback will not be called. + * + * nvlist_t *outnvl + * The output nvlist, initially empty. The callback can fill it in, + * and it will be returned to userland by serializing it into + * zfs_cmd_t:zc_nvlist_dst. If it is non-empty, and serialization + * fails (e.g. because the caller didn't supply a large enough + * buffer), then the overall ioctl will fail. See the + * 'smush_nvlist' argument above for additional behaviors. + * + * There are two typical uses of the output nvlist: + * - To return state, e.g. property values. In this case, + * smush_outnvlist should be false. If the buffer was not large + * enough, the caller will reallocate a larger buffer and try + * the ioctl again. + * + * - To return multiple errors from an ioctl which makes on-disk + * changes. In this case, smush_outnvlist should be true. + * Ioctls which make on-disk modifications should generally not + * use the outnvl if they succeed, because the caller can not + * distinguish between the operation failing, and + * deserialization failing. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include "zfs_namecheck.h" +#include "zfs_prop.h" +#include "zfs_deleg.h" +#include "zfs_comutil.h" + +kmutex_t zfsdev_state_lock; +zfsdev_state_t *zfsdev_state_list; + +extern void zfs_init(void); +extern void zfs_fini(void); + +uint_t zfs_fsyncer_key; +extern uint_t rrw_tsd_key; +static uint_t zfs_allow_log_key; + +typedef int zfs_ioc_legacy_func_t(zfs_cmd_t *); +typedef int zfs_ioc_func_t(const char *, nvlist_t *, nvlist_t *); +typedef int zfs_secpolicy_func_t(zfs_cmd_t *, nvlist_t *, cred_t *); + +typedef enum { + NO_NAME, + POOL_NAME, + DATASET_NAME +} zfs_ioc_namecheck_t; + +typedef enum { + POOL_CHECK_NONE = 1 << 0, + POOL_CHECK_SUSPENDED = 1 << 1, + POOL_CHECK_READONLY = 1 << 2, +} zfs_ioc_poolcheck_t; + +typedef struct zfs_ioc_vec { + zfs_ioc_legacy_func_t *zvec_legacy_func; + zfs_ioc_func_t *zvec_func; + zfs_secpolicy_func_t *zvec_secpolicy; + zfs_ioc_namecheck_t zvec_namecheck; + boolean_t zvec_allow_log; + zfs_ioc_poolcheck_t zvec_pool_check; + boolean_t zvec_smush_outnvlist; + const char *zvec_name; +} zfs_ioc_vec_t; + +/* This array is indexed by zfs_userquota_prop_t */ +static const char *userquota_perms[] = { + ZFS_DELEG_PERM_USERUSED, + ZFS_DELEG_PERM_USERQUOTA, + ZFS_DELEG_PERM_GROUPUSED, + ZFS_DELEG_PERM_GROUPQUOTA, +}; + +static int zfs_ioc_userspace_upgrade(zfs_cmd_t *zc); +static int zfs_check_settable(const char *name, nvpair_t *property, + cred_t *cr); +static int zfs_check_clearable(char *dataset, nvlist_t *props, + nvlist_t **errors); +static int zfs_fill_zplprops_root(uint64_t, nvlist_t *, nvlist_t *, + boolean_t *); +int zfs_set_prop_nvlist(const char *, zprop_source_t, nvlist_t *, nvlist_t *); +static int get_nvlist(uint64_t nvl, uint64_t size, int iflag, nvlist_t **nvp); + +static void +history_str_free(char *buf) +{ + kmem_free(buf, HIS_MAX_RECORD_LEN); +} + +static char * +history_str_get(zfs_cmd_t *zc) +{ + char *buf; + + if (zc->zc_history == 0) + return (NULL); + + buf = kmem_alloc(HIS_MAX_RECORD_LEN, KM_SLEEP); + if (copyinstr((void *)(uintptr_t)zc->zc_history, + buf, HIS_MAX_RECORD_LEN, NULL) != 0) { + history_str_free(buf); + return (NULL); + } + + buf[HIS_MAX_RECORD_LEN -1] = '\0'; + + return (buf); +} + +/* + * Check to see if the named dataset is currently defined as bootable + */ +static boolean_t +zfs_is_bootfs(const char *name) +{ + objset_t *os; + + if (dmu_objset_hold(name, FTAG, &os) == 0) { + boolean_t ret; + ret = (dmu_objset_id(os) == spa_bootfs(dmu_objset_spa(os))); + dmu_objset_rele(os, FTAG); + return (ret); + } + return (B_FALSE); +} + +/* + * Return non-zero if the spa version is less than requested version. + */ +static int +zfs_earlier_version(const char *name, int version) +{ + spa_t *spa; + + if (spa_open(name, &spa, FTAG) == 0) { + if (spa_version(spa) < version) { + spa_close(spa, FTAG); + return (1); + } + spa_close(spa, FTAG); + } + return (0); +} + +/* + * Return TRUE if the ZPL version is less than requested version. + */ +static boolean_t +zpl_earlier_version(const char *name, int version) +{ + objset_t *os; + boolean_t rc = B_TRUE; + + if (dmu_objset_hold(name, FTAG, &os) == 0) { + uint64_t zplversion; + + if (dmu_objset_type(os) != DMU_OST_ZFS) { + dmu_objset_rele(os, FTAG); + return (B_TRUE); + } + /* XXX reading from non-owned objset */ + if (zfs_get_zplprop(os, ZFS_PROP_VERSION, &zplversion) == 0) + rc = zplversion < version; + dmu_objset_rele(os, FTAG); + } + return (rc); +} + +static void +zfs_log_history(zfs_cmd_t *zc) +{ + spa_t *spa; + char *buf; + + if ((buf = history_str_get(zc)) == NULL) + return; + + if (spa_open(zc->zc_name, &spa, FTAG) == 0) { + if (spa_version(spa) >= SPA_VERSION_ZPOOL_HISTORY) + (void) spa_history_log(spa, buf); + spa_close(spa, FTAG); + } + history_str_free(buf); +} + +/* + * Policy for top-level read operations (list pools). Requires no privileges, + * and can be used in the local zone, as there is no associated dataset. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_none(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (0); +} + +/* + * Policy for dataset read operations (list children, get statistics). Requires + * no privileges, but must be visible in the local zone. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_read(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + if (INGLOBALZONE(curproc) || + zone_dataset_visible(zc->zc_name, NULL)) + return (0); + + return (SET_ERROR(ENOENT)); +} + +static int +zfs_dozonecheck_impl(const char *dataset, uint64_t zoned, cred_t *cr) +{ + int writable = 1; + + /* + * The dataset must be visible by this zone -- check this first + * so they don't see EPERM on something they shouldn't know about. + */ + if (!INGLOBALZONE(curproc) && + !zone_dataset_visible(dataset, &writable)) + return (SET_ERROR(ENOENT)); + + if (INGLOBALZONE(curproc)) { + /* + * If the fs is zoned, only root can access it from the + * global zone. + */ + if (secpolicy_zfs(cr) && zoned) + return (SET_ERROR(EPERM)); + } else { + /* + * If we are in a local zone, the 'zoned' property must be set. + */ + if (!zoned) + return (SET_ERROR(EPERM)); + + /* must be writable by this zone */ + if (!writable) + return (SET_ERROR(EPERM)); + } + return (0); +} + +static int +zfs_dozonecheck(const char *dataset, cred_t *cr) +{ + uint64_t zoned; + + if (dsl_prop_get_integer(dataset, "zoned", &zoned, NULL)) + return (SET_ERROR(ENOENT)); + + return (zfs_dozonecheck_impl(dataset, zoned, cr)); +} + +static int +zfs_dozonecheck_ds(const char *dataset, dsl_dataset_t *ds, cred_t *cr) +{ + uint64_t zoned; + + if (dsl_prop_get_int_ds(ds, "zoned", &zoned)) + return (SET_ERROR(ENOENT)); + + return (zfs_dozonecheck_impl(dataset, zoned, cr)); +} + +static int +zfs_secpolicy_write_perms_ds(const char *name, dsl_dataset_t *ds, + const char *perm, cred_t *cr) +{ + int error; + + error = zfs_dozonecheck_ds(name, ds, cr); + if (error == 0) { + error = secpolicy_zfs(cr); + if (error != 0) + error = dsl_deleg_access_impl(ds, perm, cr); + } + return (error); +} + +static int +zfs_secpolicy_write_perms(const char *name, const char *perm, cred_t *cr) +{ + int error; + dsl_dataset_t *ds; + dsl_pool_t *dp; + + error = dsl_pool_hold(name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, name, FTAG, &ds); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = zfs_secpolicy_write_perms_ds(name, ds, perm, cr); + + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); +} + +/* + * Policy for setting the security label property. + * + * Returns 0 for success, non-zero for access and other errors. + */ +static int +zfs_set_slabel_policy(const char *name, char *strval, cred_t *cr) +{ +#ifdef HAVE_MLSLABEL + char ds_hexsl[MAXNAMELEN]; + bslabel_t ds_sl, new_sl; + boolean_t new_default = FALSE; + uint64_t zoned; + int needed_priv = -1; + int error; + + /* First get the existing dataset label. */ + error = dsl_prop_get(name, zfs_prop_to_name(ZFS_PROP_MLSLABEL), + 1, sizeof (ds_hexsl), &ds_hexsl, NULL); + if (error != 0) + return (SET_ERROR(EPERM)); + + if (strcasecmp(strval, ZFS_MLSLABEL_DEFAULT) == 0) + new_default = TRUE; + + /* The label must be translatable */ + if (!new_default && (hexstr_to_label(strval, &new_sl) != 0)) + return (SET_ERROR(EINVAL)); + + /* + * In a non-global zone, disallow attempts to set a label that + * doesn't match that of the zone; otherwise no other checks + * are needed. + */ + if (!INGLOBALZONE(curproc)) { + if (new_default || !blequal(&new_sl, CR_SL(CRED()))) + return (SET_ERROR(EPERM)); + return (0); + } + + /* + * For global-zone datasets (i.e., those whose zoned property is + * "off", verify that the specified new label is valid for the + * global zone. + */ + if (dsl_prop_get_integer(name, + zfs_prop_to_name(ZFS_PROP_ZONED), &zoned, NULL)) + return (SET_ERROR(EPERM)); + if (!zoned) { + if (zfs_check_global_label(name, strval) != 0) + return (SET_ERROR(EPERM)); + } + + /* + * If the existing dataset label is nondefault, check if the + * dataset is mounted (label cannot be changed while mounted). + * Get the zfs_sb_t; if there isn't one, then the dataset isn't + * mounted (or isn't a dataset, doesn't exist, ...). + */ + if (strcasecmp(ds_hexsl, ZFS_MLSLABEL_DEFAULT) != 0) { + objset_t *os; + static char *setsl_tag = "setsl_tag"; + + /* + * Try to own the dataset; abort if there is any error, + * (e.g., already mounted, in use, or other error). + */ + error = dmu_objset_own(name, DMU_OST_ZFS, B_TRUE, + setsl_tag, &os); + if (error != 0) + return (SET_ERROR(EPERM)); + + dmu_objset_disown(os, setsl_tag); + + if (new_default) { + needed_priv = PRIV_FILE_DOWNGRADE_SL; + goto out_check; + } + + if (hexstr_to_label(strval, &new_sl) != 0) + return (SET_ERROR(EPERM)); + + if (blstrictdom(&ds_sl, &new_sl)) + needed_priv = PRIV_FILE_DOWNGRADE_SL; + else if (blstrictdom(&new_sl, &ds_sl)) + needed_priv = PRIV_FILE_UPGRADE_SL; + } else { + /* dataset currently has a default label */ + if (!new_default) + needed_priv = PRIV_FILE_UPGRADE_SL; + } + +out_check: + if (needed_priv != -1) + return (PRIV_POLICY(cr, needed_priv, B_FALSE, EPERM, NULL)); + return (0); +#else + return (ENOTSUP); +#endif /* HAVE_MLSLABEL */ +} + +static int +zfs_secpolicy_setprop(const char *dsname, zfs_prop_t prop, nvpair_t *propval, + cred_t *cr) +{ + char *strval; + + /* + * Check permissions for special properties. + */ + switch (prop) { + default: + break; + case ZFS_PROP_ZONED: + /* + * Disallow setting of 'zoned' from within a local zone. + */ + if (!INGLOBALZONE(curproc)) + return (SET_ERROR(EPERM)); + break; + + case ZFS_PROP_QUOTA: + case ZFS_PROP_FILESYSTEM_LIMIT: + case ZFS_PROP_SNAPSHOT_LIMIT: + if (!INGLOBALZONE(curproc)) { + uint64_t zoned; + char setpoint[MAXNAMELEN]; + /* + * Unprivileged users are allowed to modify the + * limit on things *under* (ie. contained by) + * the thing they own. + */ + if (dsl_prop_get_integer(dsname, "zoned", &zoned, + setpoint)) + return (SET_ERROR(EPERM)); + if (!zoned || strlen(dsname) <= strlen(setpoint)) + return (SET_ERROR(EPERM)); + } + break; + + case ZFS_PROP_MLSLABEL: + if (!is_system_labeled()) + return (SET_ERROR(EPERM)); + + if (nvpair_value_string(propval, &strval) == 0) { + int err; + + err = zfs_set_slabel_policy(dsname, strval, CRED()); + if (err != 0) + return (err); + } + break; + } + + return (zfs_secpolicy_write_perms(dsname, zfs_prop_to_name(prop), cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_set_fsacl(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int error; + + error = zfs_dozonecheck(zc->zc_name, cr); + if (error != 0) + return (error); + + /* + * permission to set permissions will be evaluated later in + * dsl_deleg_can_allow() + */ + return (0); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_rollback(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_ROLLBACK, cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_send(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + char *cp; + int error; + + /* + * Generate the current snapshot name from the given objsetid, then + * use that name for the secpolicy/zone checks. + */ + cp = strchr(zc->zc_name, '@'); + if (cp == NULL) + return (SET_ERROR(EINVAL)); + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, FTAG, &ds); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + dsl_dataset_name(ds, zc->zc_name); + + error = zfs_secpolicy_write_perms_ds(zc->zc_name, ds, + ZFS_DELEG_PERM_SEND, cr); + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + + return (error); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_send_new(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_SEND, cr)); +} + +#ifdef HAVE_SMB_SHARE +/* ARGSUSED */ +static int +zfs_secpolicy_deleg_share(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + vnode_t *vp; + int error; + + if ((error = lookupname(zc->zc_value, UIO_SYSSPACE, + NO_FOLLOW, NULL, &vp)) != 0) + return (error); + + /* Now make sure mntpnt and dataset are ZFS */ + + if (vp->v_vfsp->vfs_fstype != zfsfstype || + (strcmp((char *)refstr_value(vp->v_vfsp->vfs_resource), + zc->zc_name) != 0)) { + VN_RELE(vp); + return (SET_ERROR(EPERM)); + } + + VN_RELE(vp); + return (dsl_deleg_access(zc->zc_name, + ZFS_DELEG_PERM_SHARE, cr)); +} +#endif /* HAVE_SMB_SHARE */ + +int +zfs_secpolicy_share(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ +#ifdef HAVE_SMB_SHARE + if (!INGLOBALZONE(curproc)) + return (SET_ERROR(EPERM)); + + if (secpolicy_nfs(cr) == 0) { + return (0); + } else { + return (zfs_secpolicy_deleg_share(zc, innvl, cr)); + } +#else + return (SET_ERROR(ENOTSUP)); +#endif /* HAVE_SMB_SHARE */ +} + +int +zfs_secpolicy_smb_acl(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ +#ifdef HAVE_SMB_SHARE + if (!INGLOBALZONE(curproc)) + return (SET_ERROR(EPERM)); + + if (secpolicy_smb(cr) == 0) { + return (0); + } else { + return (zfs_secpolicy_deleg_share(zc, innvl, cr)); + } +#else + return (SET_ERROR(ENOTSUP)); +#endif /* HAVE_SMB_SHARE */ +} + +static int +zfs_get_parent(const char *datasetname, char *parent, int parentsize) +{ + char *cp; + + /* + * Remove the @bla or /bla from the end of the name to get the parent. + */ + (void) strncpy(parent, datasetname, parentsize); + cp = strrchr(parent, '@'); + if (cp != NULL) { + cp[0] = '\0'; + } else { + cp = strrchr(parent, '/'); + if (cp == NULL) + return (SET_ERROR(ENOENT)); + cp[0] = '\0'; + } + + return (0); +} + +int +zfs_secpolicy_destroy_perms(const char *name, cred_t *cr) +{ + int error; + + if ((error = zfs_secpolicy_write_perms(name, + ZFS_DELEG_PERM_MOUNT, cr)) != 0) + return (error); + + return (zfs_secpolicy_write_perms(name, ZFS_DELEG_PERM_DESTROY, cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_destroy(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (zfs_secpolicy_destroy_perms(zc->zc_name, cr)); +} + +/* + * Destroying snapshots with delegated permissions requires + * descendant mount and destroy permissions. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + nvlist_t *snaps; + nvpair_t *pair, *nextpair; + int error = 0; + + if (nvlist_lookup_nvlist(innvl, "snaps", &snaps) != 0) + return (SET_ERROR(EINVAL)); + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nextpair) { + nextpair = nvlist_next_nvpair(snaps, pair); + error = zfs_secpolicy_destroy_perms(nvpair_name(pair), cr); + if (error == ENOENT) { + /* + * Ignore any snapshots that don't exist (we consider + * them "already destroyed"). Remove the name from the + * nvl here in case the snapshot is created between + * now and when we try to destroy it (in which case + * we don't want to destroy it since we haven't + * checked for permission). + */ + fnvlist_remove_nvpair(snaps, pair); + error = 0; + } + if (error != 0) + break; + } + + return (error); +} + +int +zfs_secpolicy_rename_perms(const char *from, const char *to, cred_t *cr) +{ + char parentname[MAXNAMELEN]; + int error; + + if ((error = zfs_secpolicy_write_perms(from, + ZFS_DELEG_PERM_RENAME, cr)) != 0) + return (error); + + if ((error = zfs_secpolicy_write_perms(from, + ZFS_DELEG_PERM_MOUNT, cr)) != 0) + return (error); + + if ((error = zfs_get_parent(to, parentname, + sizeof (parentname))) != 0) + return (error); + + if ((error = zfs_secpolicy_write_perms(parentname, + ZFS_DELEG_PERM_CREATE, cr)) != 0) + return (error); + + if ((error = zfs_secpolicy_write_perms(parentname, + ZFS_DELEG_PERM_MOUNT, cr)) != 0) + return (error); + + return (error); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_rename(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (zfs_secpolicy_rename_perms(zc->zc_name, zc->zc_value, cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_promote(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + dsl_pool_t *dp; + dsl_dataset_t *clone; + int error; + + error = zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_PROMOTE, cr); + if (error != 0) + return (error); + + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &clone); + + if (error == 0) { + char parentname[MAXNAMELEN]; + dsl_dataset_t *origin = NULL; + dsl_dir_t *dd; + dd = clone->ds_dir; + + error = dsl_dataset_hold_obj(dd->dd_pool, + dsl_dir_phys(dd)->dd_origin_obj, FTAG, &origin); + if (error != 0) { + dsl_dataset_rele(clone, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = zfs_secpolicy_write_perms_ds(zc->zc_name, clone, + ZFS_DELEG_PERM_MOUNT, cr); + + dsl_dataset_name(origin, parentname); + if (error == 0) { + error = zfs_secpolicy_write_perms_ds(parentname, origin, + ZFS_DELEG_PERM_PROMOTE, cr); + } + dsl_dataset_rele(clone, FTAG); + dsl_dataset_rele(origin, FTAG); + } + dsl_pool_rele(dp, FTAG); + return (error); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_recv(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int error; + + if ((error = zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_RECEIVE, cr)) != 0) + return (error); + + if ((error = zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_MOUNT, cr)) != 0) + return (error); + + return (zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_CREATE, cr)); +} + +int +zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr) +{ + return (zfs_secpolicy_write_perms(name, + ZFS_DELEG_PERM_SNAPSHOT, cr)); +} + +/* + * Check for permission to create each snapshot in the nvlist. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_snapshot(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + nvlist_t *snaps; + int error = 0; + nvpair_t *pair; + + if (nvlist_lookup_nvlist(innvl, "snaps", &snaps) != 0) + return (SET_ERROR(EINVAL)); + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nvlist_next_nvpair(snaps, pair)) { + char *name = nvpair_name(pair); + char *atp = strchr(name, '@'); + + if (atp == NULL) { + error = SET_ERROR(EINVAL); + break; + } + *atp = '\0'; + error = zfs_secpolicy_snapshot_perms(name, cr); + *atp = '@'; + if (error != 0) + break; + } + return (error); +} + +/* + * Check for permission to create each snapshot in the nvlist. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_bookmark(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int error = 0; + nvpair_t *pair; + + for (pair = nvlist_next_nvpair(innvl, NULL); + pair != NULL; pair = nvlist_next_nvpair(innvl, pair)) { + char *name = nvpair_name(pair); + char *hashp = strchr(name, '#'); + + if (hashp == NULL) { + error = SET_ERROR(EINVAL); + break; + } + *hashp = '\0'; + error = zfs_secpolicy_write_perms(name, + ZFS_DELEG_PERM_BOOKMARK, cr); + *hashp = '#'; + if (error != 0) + break; + } + return (error); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_destroy_bookmarks(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + nvpair_t *pair, *nextpair; + int error = 0; + + for (pair = nvlist_next_nvpair(innvl, NULL); pair != NULL; + pair = nextpair) { + char *name = nvpair_name(pair); + char *hashp = strchr(name, '#'); + nextpair = nvlist_next_nvpair(innvl, pair); + + if (hashp == NULL) { + error = SET_ERROR(EINVAL); + break; + } + + *hashp = '\0'; + error = zfs_secpolicy_write_perms(name, + ZFS_DELEG_PERM_DESTROY, cr); + *hashp = '#'; + if (error == ENOENT) { + /* + * Ignore any filesystems that don't exist (we consider + * their bookmarks "already destroyed"). Remove + * the name from the nvl here in case the filesystem + * is created between now and when we try to destroy + * the bookmark (in which case we don't want to + * destroy it since we haven't checked for permission). + */ + fnvlist_remove_nvpair(innvl, pair); + error = 0; + } + if (error != 0) + break; + } + + return (error); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_log_history(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + /* + * Even root must have a proper TSD so that we know what pool + * to log to. + */ + if (tsd_get(zfs_allow_log_key) == NULL) + return (SET_ERROR(EPERM)); + return (0); +} + +static int +zfs_secpolicy_create_clone(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + char parentname[MAXNAMELEN]; + int error; + char *origin; + + if ((error = zfs_get_parent(zc->zc_name, parentname, + sizeof (parentname))) != 0) + return (error); + + if (nvlist_lookup_string(innvl, "origin", &origin) == 0 && + (error = zfs_secpolicy_write_perms(origin, + ZFS_DELEG_PERM_CLONE, cr)) != 0) + return (error); + + if ((error = zfs_secpolicy_write_perms(parentname, + ZFS_DELEG_PERM_CREATE, cr)) != 0) + return (error); + + return (zfs_secpolicy_write_perms(parentname, + ZFS_DELEG_PERM_MOUNT, cr)); +} + +/* + * Policy for pool operations - create/destroy pools, add vdevs, etc. Requires + * SYS_CONFIG privilege, which is not available in a local zone. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_config(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + if (secpolicy_sys_config(cr, B_FALSE) != 0) + return (SET_ERROR(EPERM)); + + return (0); +} + +/* + * Policy for object to name lookups. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_diff(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int error; + + if ((error = secpolicy_sys_config(cr, B_FALSE)) == 0) + return (0); + + error = zfs_secpolicy_write_perms(zc->zc_name, ZFS_DELEG_PERM_DIFF, cr); + return (error); +} + +/* + * Policy for fault injection. Requires all privileges. + */ +/* ARGSUSED */ +static int +zfs_secpolicy_inject(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (secpolicy_zinject(cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_inherit_prop(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + zfs_prop_t prop = zfs_name_to_prop(zc->zc_value); + + if (prop == ZPROP_INVAL) { + if (!zfs_prop_user(zc->zc_value)) + return (SET_ERROR(EINVAL)); + return (zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_USERPROP, cr)); + } else { + return (zfs_secpolicy_setprop(zc->zc_name, prop, + NULL, cr)); + } +} + +static int +zfs_secpolicy_userspace_one(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int err = zfs_secpolicy_read(zc, innvl, cr); + if (err) + return (err); + + if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) + return (SET_ERROR(EINVAL)); + + if (zc->zc_value[0] == 0) { + /* + * They are asking about a posix uid/gid. If it's + * themself, allow it. + */ + if (zc->zc_objset_type == ZFS_PROP_USERUSED || + zc->zc_objset_type == ZFS_PROP_USERQUOTA) { + if (zc->zc_guid == crgetuid(cr)) + return (0); + } else { + if (groupmember(zc->zc_guid, cr)) + return (0); + } + } + + return (zfs_secpolicy_write_perms(zc->zc_name, + userquota_perms[zc->zc_objset_type], cr)); +} + +static int +zfs_secpolicy_userspace_many(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + int err = zfs_secpolicy_read(zc, innvl, cr); + if (err) + return (err); + + if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) + return (SET_ERROR(EINVAL)); + + return (zfs_secpolicy_write_perms(zc->zc_name, + userquota_perms[zc->zc_objset_type], cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_userspace_upgrade(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + return (zfs_secpolicy_setprop(zc->zc_name, ZFS_PROP_VERSION, + NULL, cr)); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_hold(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + nvpair_t *pair; + nvlist_t *holds; + int error; + + error = nvlist_lookup_nvlist(innvl, "holds", &holds); + if (error != 0) + return (SET_ERROR(EINVAL)); + + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + char fsname[MAXNAMELEN]; + error = dmu_fsname(nvpair_name(pair), fsname); + if (error != 0) + return (error); + error = zfs_secpolicy_write_perms(fsname, + ZFS_DELEG_PERM_HOLD, cr); + if (error != 0) + return (error); + } + return (0); +} + +/* ARGSUSED */ +static int +zfs_secpolicy_release(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + nvpair_t *pair; + int error; + + for (pair = nvlist_next_nvpair(innvl, NULL); pair != NULL; + pair = nvlist_next_nvpair(innvl, pair)) { + char fsname[MAXNAMELEN]; + error = dmu_fsname(nvpair_name(pair), fsname); + if (error != 0) + return (error); + error = zfs_secpolicy_write_perms(fsname, + ZFS_DELEG_PERM_RELEASE, cr); + if (error != 0) + return (error); + } + return (0); +} + +/* + * Policy for allowing temporary snapshots to be taken or released + */ +static int +zfs_secpolicy_tmp_snapshot(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) +{ + /* + * A temporary snapshot is the same as a snapshot, + * hold, destroy and release all rolled into one. + * Delegated diff alone is sufficient that we allow this. + */ + int error; + + if ((error = zfs_secpolicy_write_perms(zc->zc_name, + ZFS_DELEG_PERM_DIFF, cr)) == 0) + return (0); + + error = zfs_secpolicy_snapshot_perms(zc->zc_name, cr); + if (error == 0) + error = zfs_secpolicy_hold(zc, innvl, cr); + if (error == 0) + error = zfs_secpolicy_release(zc, innvl, cr); + if (error == 0) + error = zfs_secpolicy_destroy(zc, innvl, cr); + return (error); +} + +/* + * Returns the nvlist as specified by the user in the zfs_cmd_t. + */ +static int +get_nvlist(uint64_t nvl, uint64_t size, int iflag, nvlist_t **nvp) +{ + char *packed; + int error; + nvlist_t *list = NULL; + + /* + * Read in and unpack the user-supplied nvlist. + */ + if (size == 0) + return (SET_ERROR(EINVAL)); + + packed = vmem_alloc(size, KM_SLEEP); + + if ((error = ddi_copyin((void *)(uintptr_t)nvl, packed, size, + iflag)) != 0) { + vmem_free(packed, size); + return (SET_ERROR(EFAULT)); + } + + if ((error = nvlist_unpack(packed, size, &list, 0)) != 0) { + vmem_free(packed, size); + return (error); + } + + vmem_free(packed, size); + + *nvp = list; + return (0); +} + +/* + * Reduce the size of this nvlist until it can be serialized in 'max' bytes. + * Entries will be removed from the end of the nvlist, and one int32 entry + * named "N_MORE_ERRORS" will be added indicating how many entries were + * removed. + */ +static int +nvlist_smush(nvlist_t *errors, size_t max) +{ + size_t size; + + size = fnvlist_size(errors); + + if (size > max) { + nvpair_t *more_errors; + int n = 0; + + if (max < 1024) + return (SET_ERROR(ENOMEM)); + + fnvlist_add_int32(errors, ZPROP_N_MORE_ERRORS, 0); + more_errors = nvlist_prev_nvpair(errors, NULL); + + do { + nvpair_t *pair = nvlist_prev_nvpair(errors, + more_errors); + fnvlist_remove_nvpair(errors, pair); + n++; + size = fnvlist_size(errors); + } while (size > max); + + fnvlist_remove_nvpair(errors, more_errors); + fnvlist_add_int32(errors, ZPROP_N_MORE_ERRORS, n); + ASSERT3U(fnvlist_size(errors), <=, max); + } + + return (0); +} + +static int +put_nvlist(zfs_cmd_t *zc, nvlist_t *nvl) +{ + char *packed = NULL; + int error = 0; + size_t size; + + size = fnvlist_size(nvl); + + if (size > zc->zc_nvlist_dst_size) { + error = SET_ERROR(ENOMEM); + } else { + packed = fnvlist_pack(nvl, &size); + if (ddi_copyout(packed, (void *)(uintptr_t)zc->zc_nvlist_dst, + size, zc->zc_iflags) != 0) + error = SET_ERROR(EFAULT); + fnvlist_pack_free(packed, size); + } + + zc->zc_nvlist_dst_size = size; + zc->zc_nvlist_dst_filled = B_TRUE; + return (error); +} + +static int +get_zfs_sb(const char *dsname, zfs_sb_t **zsbp) +{ + objset_t *os; + int error; + + error = dmu_objset_hold(dsname, FTAG, &os); + if (error != 0) + return (error); + if (dmu_objset_type(os) != DMU_OST_ZFS) { + dmu_objset_rele(os, FTAG); + return (SET_ERROR(EINVAL)); + } + + mutex_enter(&os->os_user_ptr_lock); + *zsbp = dmu_objset_get_user(os); + if (*zsbp && (*zsbp)->z_sb) { + atomic_inc(&((*zsbp)->z_sb->s_active)); + } else { + error = SET_ERROR(ESRCH); + } + mutex_exit(&os->os_user_ptr_lock); + dmu_objset_rele(os, FTAG); + return (error); +} + +/* + * Find a zfs_sb_t for a mounted filesystem, or create our own, in which + * case its z_sb will be NULL, and it will be opened as the owner. + * If 'writer' is set, the z_teardown_lock will be held for RW_WRITER, + * which prevents all inode ops from running. + */ +static int +zfs_sb_hold(const char *name, void *tag, zfs_sb_t **zsbp, boolean_t writer) +{ + int error = 0; + + if (get_zfs_sb(name, zsbp) != 0) + error = zfs_sb_create(name, NULL, zsbp); + if (error == 0) { + rrm_enter(&(*zsbp)->z_teardown_lock, (writer) ? RW_WRITER : + RW_READER, tag); + if ((*zsbp)->z_unmounted) { + /* + * XXX we could probably try again, since the unmounting + * thread should be just about to disassociate the + * objset from the zsb. + */ + rrm_exit(&(*zsbp)->z_teardown_lock, tag); + return (SET_ERROR(EBUSY)); + } + } + return (error); +} + +static void +zfs_sb_rele(zfs_sb_t *zsb, void *tag) +{ + rrm_exit(&zsb->z_teardown_lock, tag); + + if (zsb->z_sb) { + deactivate_super(zsb->z_sb); + } else { + dmu_objset_disown(zsb->z_os, zsb); + zfs_sb_free(zsb); + } +} + +static int +zfs_ioc_pool_create(zfs_cmd_t *zc) +{ + int error; + nvlist_t *config, *props = NULL; + nvlist_t *rootprops = NULL; + nvlist_t *zplprops = NULL; + + if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &config))) + return (error); + + if (zc->zc_nvlist_src_size != 0 && (error = + get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &props))) { + nvlist_free(config); + return (error); + } + + if (props) { + nvlist_t *nvl = NULL; + uint64_t version = SPA_VERSION; + + (void) nvlist_lookup_uint64(props, + zpool_prop_to_name(ZPOOL_PROP_VERSION), &version); + if (!SPA_VERSION_IS_SUPPORTED(version)) { + error = SET_ERROR(EINVAL); + goto pool_props_bad; + } + (void) nvlist_lookup_nvlist(props, ZPOOL_ROOTFS_PROPS, &nvl); + if (nvl) { + error = nvlist_dup(nvl, &rootprops, KM_SLEEP); + if (error != 0) { + nvlist_free(config); + nvlist_free(props); + return (error); + } + (void) nvlist_remove_all(props, ZPOOL_ROOTFS_PROPS); + } + VERIFY(nvlist_alloc(&zplprops, NV_UNIQUE_NAME, KM_SLEEP) == 0); + error = zfs_fill_zplprops_root(version, rootprops, + zplprops, NULL); + if (error != 0) + goto pool_props_bad; + } + + error = spa_create(zc->zc_name, config, props, zplprops); + + /* + * Set the remaining root properties + */ + if (!error && (error = zfs_set_prop_nvlist(zc->zc_name, + ZPROP_SRC_LOCAL, rootprops, NULL)) != 0) + (void) spa_destroy(zc->zc_name); + +pool_props_bad: + nvlist_free(rootprops); + nvlist_free(zplprops); + nvlist_free(config); + nvlist_free(props); + + return (error); +} + +static int +zfs_ioc_pool_destroy(zfs_cmd_t *zc) +{ + int error; + zfs_log_history(zc); + error = spa_destroy(zc->zc_name); + if (error == 0) + zvol_remove_minors(zc->zc_name); + return (error); +} + +static int +zfs_ioc_pool_import(zfs_cmd_t *zc) +{ + nvlist_t *config, *props = NULL; + uint64_t guid; + int error; + + if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &config)) != 0) + return (error); + + if (zc->zc_nvlist_src_size != 0 && (error = + get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &props))) { + nvlist_free(config); + return (error); + } + + if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &guid) != 0 || + guid != zc->zc_guid) + error = SET_ERROR(EINVAL); + else + error = spa_import(zc->zc_name, config, props, zc->zc_cookie); + + if (zc->zc_nvlist_dst != 0) { + int err; + + if ((err = put_nvlist(zc, config)) != 0) + error = err; + } + + nvlist_free(config); + + if (props) + nvlist_free(props); + + return (error); +} + +static int +zfs_ioc_pool_export(zfs_cmd_t *zc) +{ + int error; + boolean_t force = (boolean_t)zc->zc_cookie; + boolean_t hardforce = (boolean_t)zc->zc_guid; + + zfs_log_history(zc); + error = spa_export(zc->zc_name, NULL, force, hardforce); + if (error == 0) + zvol_remove_minors(zc->zc_name); + return (error); +} + +static int +zfs_ioc_pool_configs(zfs_cmd_t *zc) +{ + nvlist_t *configs; + int error; + + if ((configs = spa_all_configs(&zc->zc_cookie)) == NULL) + return (SET_ERROR(EEXIST)); + + error = put_nvlist(zc, configs); + + nvlist_free(configs); + + return (error); +} + +/* + * inputs: + * zc_name name of the pool + * + * outputs: + * zc_cookie real errno + * zc_nvlist_dst config nvlist + * zc_nvlist_dst_size size of config nvlist + */ +static int +zfs_ioc_pool_stats(zfs_cmd_t *zc) +{ + nvlist_t *config; + int error; + int ret = 0; + + error = spa_get_stats(zc->zc_name, &config, zc->zc_value, + sizeof (zc->zc_value)); + + if (config != NULL) { + ret = put_nvlist(zc, config); + nvlist_free(config); + + /* + * The config may be present even if 'error' is non-zero. + * In this case we return success, and preserve the real errno + * in 'zc_cookie'. + */ + zc->zc_cookie = error; + } else { + ret = error; + } + + return (ret); +} + +/* + * Try to import the given pool, returning pool stats as appropriate so that + * user land knows which devices are available and overall pool health. + */ +static int +zfs_ioc_pool_tryimport(zfs_cmd_t *zc) +{ + nvlist_t *tryconfig, *config; + int error; + + if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &tryconfig)) != 0) + return (error); + + config = spa_tryimport(tryconfig); + + nvlist_free(tryconfig); + + if (config == NULL) + return (SET_ERROR(EINVAL)); + + error = put_nvlist(zc, config); + nvlist_free(config); + + return (error); +} + +/* + * inputs: + * zc_name name of the pool + * zc_cookie scan func (pool_scan_func_t) + */ +static int +zfs_ioc_pool_scan(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + if (zc->zc_cookie == POOL_SCAN_NONE) + error = spa_scan_stop(spa); + else + error = spa_scan(spa, zc->zc_cookie); + + spa_close(spa, FTAG); + + return (error); +} + +static int +zfs_ioc_pool_freeze(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error == 0) { + spa_freeze(spa); + spa_close(spa, FTAG); + } + return (error); +} + +static int +zfs_ioc_pool_upgrade(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + if (zc->zc_cookie < spa_version(spa) || + !SPA_VERSION_IS_SUPPORTED(zc->zc_cookie)) { + spa_close(spa, FTAG); + return (SET_ERROR(EINVAL)); + } + + spa_upgrade(spa, zc->zc_cookie); + spa_close(spa, FTAG); + + return (error); +} + +static int +zfs_ioc_pool_get_history(zfs_cmd_t *zc) +{ + spa_t *spa; + char *hist_buf; + uint64_t size; + int error; + + if ((size = zc->zc_history_len) == 0) + return (SET_ERROR(EINVAL)); + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + if (spa_version(spa) < SPA_VERSION_ZPOOL_HISTORY) { + spa_close(spa, FTAG); + return (SET_ERROR(ENOTSUP)); + } + + hist_buf = vmem_alloc(size, KM_SLEEP); + if ((error = spa_history_get(spa, &zc->zc_history_offset, + &zc->zc_history_len, hist_buf)) == 0) { + error = ddi_copyout(hist_buf, + (void *)(uintptr_t)zc->zc_history, + zc->zc_history_len, zc->zc_iflags); + } + + spa_close(spa, FTAG); + vmem_free(hist_buf, size); + return (error); +} + +static int +zfs_ioc_pool_reguid(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error == 0) { + error = spa_change_guid(spa); + spa_close(spa, FTAG); + } + return (error); +} + +static int +zfs_ioc_dsobj_to_dsname(zfs_cmd_t *zc) +{ + return (dsl_dsobj_to_dsname(zc->zc_name, zc->zc_obj, zc->zc_value)); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_obj object to find + * + * outputs: + * zc_value name of object + */ +static int +zfs_ioc_obj_to_path(zfs_cmd_t *zc) +{ + objset_t *os; + int error; + + /* XXX reading from objset not owned */ + if ((error = dmu_objset_hold(zc->zc_name, FTAG, &os)) != 0) + return (error); + if (dmu_objset_type(os) != DMU_OST_ZFS) { + dmu_objset_rele(os, FTAG); + return (SET_ERROR(EINVAL)); + } + error = zfs_obj_to_path(os, zc->zc_obj, zc->zc_value, + sizeof (zc->zc_value)); + dmu_objset_rele(os, FTAG); + + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_obj object to find + * + * outputs: + * zc_stat stats on object + * zc_value path to object + */ +static int +zfs_ioc_obj_to_stats(zfs_cmd_t *zc) +{ + objset_t *os; + int error; + + /* XXX reading from objset not owned */ + if ((error = dmu_objset_hold(zc->zc_name, FTAG, &os)) != 0) + return (error); + if (dmu_objset_type(os) != DMU_OST_ZFS) { + dmu_objset_rele(os, FTAG); + return (SET_ERROR(EINVAL)); + } + error = zfs_obj_to_stats(os, zc->zc_obj, &zc->zc_stat, zc->zc_value, + sizeof (zc->zc_value)); + dmu_objset_rele(os, FTAG); + + return (error); +} + +static int +zfs_ioc_vdev_add(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + nvlist_t *config; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error != 0) + return (error); + + error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &config); + if (error == 0) { + error = spa_vdev_add(spa, config); + nvlist_free(config); + } + spa_close(spa, FTAG); + return (error); +} + +/* + * inputs: + * zc_name name of the pool + * zc_nvlist_conf nvlist of devices to remove + * zc_cookie to stop the remove? + */ +static int +zfs_ioc_vdev_remove(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error != 0) + return (error); + error = spa_vdev_remove(spa, zc->zc_guid, B_FALSE); + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_vdev_set_state(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + vdev_state_t newstate = VDEV_STATE_UNKNOWN; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + switch (zc->zc_cookie) { + case VDEV_STATE_ONLINE: + error = vdev_online(spa, zc->zc_guid, zc->zc_obj, &newstate); + break; + + case VDEV_STATE_OFFLINE: + error = vdev_offline(spa, zc->zc_guid, zc->zc_obj); + break; + + case VDEV_STATE_FAULTED: + if (zc->zc_obj != VDEV_AUX_ERR_EXCEEDED && + zc->zc_obj != VDEV_AUX_EXTERNAL) + zc->zc_obj = VDEV_AUX_ERR_EXCEEDED; + + error = vdev_fault(spa, zc->zc_guid, zc->zc_obj); + break; + + case VDEV_STATE_DEGRADED: + if (zc->zc_obj != VDEV_AUX_ERR_EXCEEDED && + zc->zc_obj != VDEV_AUX_EXTERNAL) + zc->zc_obj = VDEV_AUX_ERR_EXCEEDED; + + error = vdev_degrade(spa, zc->zc_guid, zc->zc_obj); + break; + + default: + error = SET_ERROR(EINVAL); + } + zc->zc_cookie = newstate; + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_vdev_attach(zfs_cmd_t *zc) +{ + spa_t *spa; + int replacing = zc->zc_cookie; + nvlist_t *config; + int error; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &config)) == 0) { + error = spa_vdev_attach(spa, zc->zc_guid, config, replacing); + nvlist_free(config); + } + + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_vdev_detach(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + error = spa_vdev_detach(spa, zc->zc_guid, 0, B_FALSE); + + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_vdev_split(zfs_cmd_t *zc) +{ + spa_t *spa; + nvlist_t *config, *props = NULL; + int error; + boolean_t exp = !!(zc->zc_cookie & ZPOOL_EXPORT_AFTER_SPLIT); + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, + zc->zc_iflags, &config))) { + spa_close(spa, FTAG); + return (error); + } + + if (zc->zc_nvlist_src_size != 0 && (error = + get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &props))) { + spa_close(spa, FTAG); + nvlist_free(config); + return (error); + } + + error = spa_vdev_split_mirror(spa, zc->zc_string, config, props, exp); + + spa_close(spa, FTAG); + + nvlist_free(config); + nvlist_free(props); + + return (error); +} + +static int +zfs_ioc_vdev_setpath(zfs_cmd_t *zc) +{ + spa_t *spa; + char *path = zc->zc_value; + uint64_t guid = zc->zc_guid; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error != 0) + return (error); + + error = spa_vdev_setpath(spa, guid, path); + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_vdev_setfru(zfs_cmd_t *zc) +{ + spa_t *spa; + char *fru = zc->zc_value; + uint64_t guid = zc->zc_guid; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error != 0) + return (error); + + error = spa_vdev_setfru(spa, guid, fru); + spa_close(spa, FTAG); + return (error); +} + +static int +zfs_ioc_objset_stats_impl(zfs_cmd_t *zc, objset_t *os) +{ + int error = 0; + nvlist_t *nv; + + dmu_objset_fast_stat(os, &zc->zc_objset_stats); + + if (zc->zc_nvlist_dst != 0 && + (error = dsl_prop_get_all(os, &nv)) == 0) { + dmu_objset_stats(os, nv); + /* + * NB: zvol_get_stats() will read the objset contents, + * which we aren't supposed to do with a + * DS_MODE_USER hold, because it could be + * inconsistent. So this is a bit of a workaround... + * XXX reading with out owning + */ + if (!zc->zc_objset_stats.dds_inconsistent && + dmu_objset_type(os) == DMU_OST_ZVOL) { + error = zvol_get_stats(os, nv); + if (error == EIO) + return (error); + VERIFY0(error); + } + if (error == 0) + error = put_nvlist(zc, nv); + nvlist_free(nv); + } + + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_nvlist_dst_size size of buffer for property nvlist + * + * outputs: + * zc_objset_stats stats + * zc_nvlist_dst property nvlist + * zc_nvlist_dst_size size of property nvlist + */ +static int +zfs_ioc_objset_stats(zfs_cmd_t *zc) +{ + objset_t *os; + int error; + + error = dmu_objset_hold(zc->zc_name, FTAG, &os); + if (error == 0) { + error = zfs_ioc_objset_stats_impl(zc, os); + dmu_objset_rele(os, FTAG); + } + + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_nvlist_dst_size size of buffer for property nvlist + * + * outputs: + * zc_nvlist_dst received property nvlist + * zc_nvlist_dst_size size of received property nvlist + * + * Gets received properties (distinct from local properties on or after + * SPA_VERSION_RECVD_PROPS) for callers who want to differentiate received from + * local property values. + */ +static int +zfs_ioc_objset_recvd_props(zfs_cmd_t *zc) +{ + int error = 0; + nvlist_t *nv; + + /* + * Without this check, we would return local property values if the + * caller has not already received properties on or after + * SPA_VERSION_RECVD_PROPS. + */ + if (!dsl_prop_get_hasrecvd(zc->zc_name)) + return (SET_ERROR(ENOTSUP)); + + if (zc->zc_nvlist_dst != 0 && + (error = dsl_prop_get_received(zc->zc_name, &nv)) == 0) { + error = put_nvlist(zc, nv); + nvlist_free(nv); + } + + return (error); +} + +static int +nvl_add_zplprop(objset_t *os, nvlist_t *props, zfs_prop_t prop) +{ + uint64_t value; + int error; + + /* + * zfs_get_zplprop() will either find a value or give us + * the default value (if there is one). + */ + if ((error = zfs_get_zplprop(os, prop, &value)) != 0) + return (error); + VERIFY(nvlist_add_uint64(props, zfs_prop_to_name(prop), value) == 0); + return (0); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_nvlist_dst_size size of buffer for zpl property nvlist + * + * outputs: + * zc_nvlist_dst zpl property nvlist + * zc_nvlist_dst_size size of zpl property nvlist + */ +static int +zfs_ioc_objset_zplprops(zfs_cmd_t *zc) +{ + objset_t *os; + int err; + + /* XXX reading without owning */ + if ((err = dmu_objset_hold(zc->zc_name, FTAG, &os))) + return (err); + + dmu_objset_fast_stat(os, &zc->zc_objset_stats); + + /* + * NB: nvl_add_zplprop() will read the objset contents, + * which we aren't supposed to do with a DS_MODE_USER + * hold, because it could be inconsistent. + */ + if (zc->zc_nvlist_dst != 0 && + !zc->zc_objset_stats.dds_inconsistent && + dmu_objset_type(os) == DMU_OST_ZFS) { + nvlist_t *nv; + + VERIFY(nvlist_alloc(&nv, NV_UNIQUE_NAME, KM_SLEEP) == 0); + if ((err = nvl_add_zplprop(os, nv, ZFS_PROP_VERSION)) == 0 && + (err = nvl_add_zplprop(os, nv, ZFS_PROP_NORMALIZE)) == 0 && + (err = nvl_add_zplprop(os, nv, ZFS_PROP_UTF8ONLY)) == 0 && + (err = nvl_add_zplprop(os, nv, ZFS_PROP_CASE)) == 0) + err = put_nvlist(zc, nv); + nvlist_free(nv); + } else { + err = SET_ERROR(ENOENT); + } + dmu_objset_rele(os, FTAG); + return (err); +} + +boolean_t +dataset_name_hidden(const char *name) +{ + /* + * Skip over datasets that are not visible in this zone, + * internal datasets (which have a $ in their name), and + * temporary datasets (which have a % in their name). + */ + if (strchr(name, '$') != NULL) + return (B_TRUE); + if (strchr(name, '%') != NULL) + return (B_TRUE); + if (!INGLOBALZONE(curproc) && !zone_dataset_visible(name, NULL)) + return (B_TRUE); + return (B_FALSE); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_cookie zap cursor + * zc_nvlist_dst_size size of buffer for property nvlist + * + * outputs: + * zc_name name of next filesystem + * zc_cookie zap cursor + * zc_objset_stats stats + * zc_nvlist_dst property nvlist + * zc_nvlist_dst_size size of property nvlist + */ +static int +zfs_ioc_dataset_list_next(zfs_cmd_t *zc) +{ + objset_t *os; + int error; + char *p; + size_t orig_len = strlen(zc->zc_name); + +top: + if ((error = dmu_objset_hold(zc->zc_name, FTAG, &os))) { + if (error == ENOENT) + error = SET_ERROR(ESRCH); + return (error); + } + + p = strrchr(zc->zc_name, '/'); + if (p == NULL || p[1] != '\0') + (void) strlcat(zc->zc_name, "/", sizeof (zc->zc_name)); + p = zc->zc_name + strlen(zc->zc_name); + + do { + error = dmu_dir_list_next(os, + sizeof (zc->zc_name) - (p - zc->zc_name), p, + NULL, &zc->zc_cookie); + if (error == ENOENT) + error = SET_ERROR(ESRCH); + } while (error == 0 && dataset_name_hidden(zc->zc_name)); + dmu_objset_rele(os, FTAG); + + /* + * If it's an internal dataset (ie. with a '$' in its name), + * don't try to get stats for it, otherwise we'll return ENOENT. + */ + if (error == 0 && strchr(zc->zc_name, '$') == NULL) { + error = zfs_ioc_objset_stats(zc); /* fill in the stats */ + if (error == ENOENT) { + /* We lost a race with destroy, get the next one. */ + zc->zc_name[orig_len] = '\0'; + goto top; + } + } + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_cookie zap cursor + * zc_nvlist_dst_size size of buffer for property nvlist + * + * outputs: + * zc_name name of next snapshot + * zc_objset_stats stats + * zc_nvlist_dst property nvlist + * zc_nvlist_dst_size size of property nvlist + */ +static int +zfs_ioc_snapshot_list_next(zfs_cmd_t *zc) +{ + objset_t *os; + int error; + + error = dmu_objset_hold(zc->zc_name, FTAG, &os); + if (error != 0) { + return (error == ENOENT ? ESRCH : error); + } + + /* + * A dataset name of maximum length cannot have any snapshots, + * so exit immediately. + */ + if (strlcat(zc->zc_name, "@", sizeof (zc->zc_name)) >= MAXNAMELEN) { + dmu_objset_rele(os, FTAG); + return (SET_ERROR(ESRCH)); + } + + error = dmu_snapshot_list_next(os, + sizeof (zc->zc_name) - strlen(zc->zc_name), + zc->zc_name + strlen(zc->zc_name), &zc->zc_obj, &zc->zc_cookie, + NULL); + + if (error == 0 && !zc->zc_simple) { + dsl_dataset_t *ds; + dsl_pool_t *dp = os->os_dsl_dataset->ds_dir->dd_pool; + + error = dsl_dataset_hold_obj(dp, zc->zc_obj, FTAG, &ds); + if (error == 0) { + objset_t *ossnap; + + error = dmu_objset_from_ds(ds, &ossnap); + if (error == 0) + error = zfs_ioc_objset_stats_impl(zc, ossnap); + dsl_dataset_rele(ds, FTAG); + } + } else if (error == ENOENT) { + error = SET_ERROR(ESRCH); + } + + dmu_objset_rele(os, FTAG); + /* if we failed, undo the @ that we tacked on to zc_name */ + if (error != 0) + *strchr(zc->zc_name, '@') = '\0'; + return (error); +} + +static int +zfs_prop_set_userquota(const char *dsname, nvpair_t *pair) +{ + const char *propname = nvpair_name(pair); + uint64_t *valary; + unsigned int vallen; + const char *domain; + char *dash; + zfs_userquota_prop_t type; + uint64_t rid; + uint64_t quota; + zfs_sb_t *zsb; + int err; + + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + nvlist_t *attrs; + VERIFY(nvpair_value_nvlist(pair, &attrs) == 0); + if (nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &pair) != 0) + return (SET_ERROR(EINVAL)); + } + + /* + * A correctly constructed propname is encoded as + * userquota@-. + */ + if ((dash = strchr(propname, '-')) == NULL || + nvpair_value_uint64_array(pair, &valary, &vallen) != 0 || + vallen != 3) + return (SET_ERROR(EINVAL)); + + domain = dash + 1; + type = valary[0]; + rid = valary[1]; + quota = valary[2]; + + err = zfs_sb_hold(dsname, FTAG, &zsb, B_FALSE); + if (err == 0) { + err = zfs_set_userquota(zsb, type, domain, rid, quota); + zfs_sb_rele(zsb, FTAG); + } + + return (err); +} + +/* + * If the named property is one that has a special function to set its value, + * return 0 on success and a positive error code on failure; otherwise if it is + * not one of the special properties handled by this function, return -1. + * + * XXX: It would be better for callers of the property interface if we handled + * these special cases in dsl_prop.c (in the dsl layer). + */ +static int +zfs_prop_set_special(const char *dsname, zprop_source_t source, + nvpair_t *pair) +{ + const char *propname = nvpair_name(pair); + zfs_prop_t prop = zfs_name_to_prop(propname); + uint64_t intval; + int err = -1; + + if (prop == ZPROP_INVAL) { + if (zfs_prop_userquota(propname)) + return (zfs_prop_set_userquota(dsname, pair)); + return (-1); + } + + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + nvlist_t *attrs; + VERIFY(nvpair_value_nvlist(pair, &attrs) == 0); + VERIFY(nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &pair) == 0); + } + + if (zfs_prop_get_type(prop) == PROP_TYPE_STRING) + return (-1); + + VERIFY(0 == nvpair_value_uint64(pair, &intval)); + + switch (prop) { + case ZFS_PROP_QUOTA: + err = dsl_dir_set_quota(dsname, source, intval); + break; + case ZFS_PROP_REFQUOTA: + err = dsl_dataset_set_refquota(dsname, source, intval); + break; + case ZFS_PROP_FILESYSTEM_LIMIT: + case ZFS_PROP_SNAPSHOT_LIMIT: + if (intval == UINT64_MAX) { + /* clearing the limit, just do it */ + err = 0; + } else { + err = dsl_dir_activate_fs_ss_limit(dsname); + } + /* + * Set err to -1 to force the zfs_set_prop_nvlist code down the + * default path to set the value in the nvlist. + */ + if (err == 0) + err = -1; + break; + case ZFS_PROP_RESERVATION: + err = dsl_dir_set_reservation(dsname, source, intval); + break; + case ZFS_PROP_REFRESERVATION: + err = dsl_dataset_set_refreservation(dsname, source, intval); + break; + case ZFS_PROP_VOLSIZE: + err = zvol_set_volsize(dsname, intval); + break; + case ZFS_PROP_SNAPDEV: + err = zvol_set_snapdev(dsname, intval); + break; + case ZFS_PROP_VERSION: + { + zfs_sb_t *zsb; + + if ((err = zfs_sb_hold(dsname, FTAG, &zsb, B_TRUE)) != 0) + break; + + err = zfs_set_version(zsb, intval); + zfs_sb_rele(zsb, FTAG); + + if (err == 0 && intval >= ZPL_VERSION_USERSPACE) { + zfs_cmd_t *zc; + + zc = kmem_zalloc(sizeof (zfs_cmd_t), KM_SLEEP); + (void) strcpy(zc->zc_name, dsname); + (void) zfs_ioc_userspace_upgrade(zc); + kmem_free(zc, sizeof (zfs_cmd_t)); + } + break; + } + default: + err = -1; + } + + return (err); +} + +/* + * This function is best effort. If it fails to set any of the given properties, + * it continues to set as many as it can and returns the last error + * encountered. If the caller provides a non-NULL errlist, it will be filled in + * with the list of names of all the properties that failed along with the + * corresponding error numbers. + * + * If every property is set successfully, zero is returned and errlist is not + * modified. + */ +int +zfs_set_prop_nvlist(const char *dsname, zprop_source_t source, nvlist_t *nvl, + nvlist_t *errlist) +{ + nvpair_t *pair; + nvpair_t *propval; + int rv = 0; + uint64_t intval; + char *strval; + + nvlist_t *genericnvl = fnvlist_alloc(); + nvlist_t *retrynvl = fnvlist_alloc(); +retry: + pair = NULL; + while ((pair = nvlist_next_nvpair(nvl, pair)) != NULL) { + const char *propname = nvpair_name(pair); + zfs_prop_t prop = zfs_name_to_prop(propname); + int err = 0; + + /* decode the property value */ + propval = pair; + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + nvlist_t *attrs; + attrs = fnvpair_value_nvlist(pair); + if (nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &propval) != 0) + err = SET_ERROR(EINVAL); + } + + /* Validate value type */ + if (err == 0 && prop == ZPROP_INVAL) { + if (zfs_prop_user(propname)) { + if (nvpair_type(propval) != DATA_TYPE_STRING) + err = SET_ERROR(EINVAL); + } else if (zfs_prop_userquota(propname)) { + if (nvpair_type(propval) != + DATA_TYPE_UINT64_ARRAY) + err = SET_ERROR(EINVAL); + } else { + err = SET_ERROR(EINVAL); + } + } else if (err == 0) { + if (nvpair_type(propval) == DATA_TYPE_STRING) { + if (zfs_prop_get_type(prop) != PROP_TYPE_STRING) + err = SET_ERROR(EINVAL); + } else if (nvpair_type(propval) == DATA_TYPE_UINT64) { + const char *unused; + + intval = fnvpair_value_uint64(propval); + + switch (zfs_prop_get_type(prop)) { + case PROP_TYPE_NUMBER: + break; + case PROP_TYPE_STRING: + err = SET_ERROR(EINVAL); + break; + case PROP_TYPE_INDEX: + if (zfs_prop_index_to_string(prop, + intval, &unused) != 0) + err = SET_ERROR(EINVAL); + break; + default: + cmn_err(CE_PANIC, + "unknown property type"); + } + } else { + err = SET_ERROR(EINVAL); + } + } + + /* Validate permissions */ + if (err == 0) + err = zfs_check_settable(dsname, pair, CRED()); + + if (err == 0) { + err = zfs_prop_set_special(dsname, source, pair); + if (err == -1) { + /* + * For better performance we build up a list of + * properties to set in a single transaction. + */ + err = nvlist_add_nvpair(genericnvl, pair); + } else if (err != 0 && nvl != retrynvl) { + /* + * This may be a spurious error caused by + * receiving quota and reservation out of order. + * Try again in a second pass. + */ + err = nvlist_add_nvpair(retrynvl, pair); + } + } + + if (err != 0) { + if (errlist != NULL) + fnvlist_add_int32(errlist, propname, err); + rv = err; + } + } + + if (nvl != retrynvl && !nvlist_empty(retrynvl)) { + nvl = retrynvl; + goto retry; + } + + if (!nvlist_empty(genericnvl) && + dsl_props_set(dsname, source, genericnvl) != 0) { + /* + * If this fails, we still want to set as many properties as we + * can, so try setting them individually. + */ + pair = NULL; + while ((pair = nvlist_next_nvpair(genericnvl, pair)) != NULL) { + const char *propname = nvpair_name(pair); + int err = 0; + + propval = pair; + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + nvlist_t *attrs; + attrs = fnvpair_value_nvlist(pair); + propval = fnvlist_lookup_nvpair(attrs, + ZPROP_VALUE); + } + + if (nvpair_type(propval) == DATA_TYPE_STRING) { + strval = fnvpair_value_string(propval); + err = dsl_prop_set_string(dsname, propname, + source, strval); + } else { + intval = fnvpair_value_uint64(propval); + err = dsl_prop_set_int(dsname, propname, source, + intval); + } + + if (err != 0) { + if (errlist != NULL) { + fnvlist_add_int32(errlist, propname, + err); + } + rv = err; + } + } + } + nvlist_free(genericnvl); + nvlist_free(retrynvl); + + return (rv); +} + +/* + * Check that all the properties are valid user properties. + */ +static int +zfs_check_userprops(const char *fsname, nvlist_t *nvl) +{ + nvpair_t *pair = NULL; + int error = 0; + + while ((pair = nvlist_next_nvpair(nvl, pair)) != NULL) { + const char *propname = nvpair_name(pair); + + if (!zfs_prop_user(propname) || + nvpair_type(pair) != DATA_TYPE_STRING) + return (SET_ERROR(EINVAL)); + + if ((error = zfs_secpolicy_write_perms(fsname, + ZFS_DELEG_PERM_USERPROP, CRED()))) + return (error); + + if (strlen(propname) >= ZAP_MAXNAMELEN) + return (SET_ERROR(ENAMETOOLONG)); + + if (strlen(fnvpair_value_string(pair)) >= ZAP_MAXVALUELEN) + return (SET_ERROR(E2BIG)); + } + return (0); +} + +static void +props_skip(nvlist_t *props, nvlist_t *skipped, nvlist_t **newprops) +{ + nvpair_t *pair; + + VERIFY(nvlist_alloc(newprops, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + pair = NULL; + while ((pair = nvlist_next_nvpair(props, pair)) != NULL) { + if (nvlist_exists(skipped, nvpair_name(pair))) + continue; + + VERIFY(nvlist_add_nvpair(*newprops, pair) == 0); + } +} + +static int +clear_received_props(const char *dsname, nvlist_t *props, + nvlist_t *skipped) +{ + int err = 0; + nvlist_t *cleared_props = NULL; + props_skip(props, skipped, &cleared_props); + if (!nvlist_empty(cleared_props)) { + /* + * Acts on local properties until the dataset has received + * properties at least once on or after SPA_VERSION_RECVD_PROPS. + */ + zprop_source_t flags = (ZPROP_SRC_NONE | + (dsl_prop_get_hasrecvd(dsname) ? ZPROP_SRC_RECEIVED : 0)); + err = zfs_set_prop_nvlist(dsname, flags, cleared_props, NULL); + } + nvlist_free(cleared_props); + return (err); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_value name of property to set + * zc_nvlist_src{_size} nvlist of properties to apply + * zc_cookie received properties flag + * + * outputs: + * zc_nvlist_dst{_size} error for each unapplied received property + */ +static int +zfs_ioc_set_prop(zfs_cmd_t *zc) +{ + nvlist_t *nvl; + boolean_t received = zc->zc_cookie; + zprop_source_t source = (received ? ZPROP_SRC_RECEIVED : + ZPROP_SRC_LOCAL); + nvlist_t *errors; + int error; + + if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &nvl)) != 0) + return (error); + + if (received) { + nvlist_t *origprops; + + if (dsl_prop_get_received(zc->zc_name, &origprops) == 0) { + (void) clear_received_props(zc->zc_name, + origprops, nvl); + nvlist_free(origprops); + } + + error = dsl_prop_set_hasrecvd(zc->zc_name); + } + + errors = fnvlist_alloc(); + if (error == 0) + error = zfs_set_prop_nvlist(zc->zc_name, source, nvl, errors); + + if (zc->zc_nvlist_dst != 0 && errors != NULL) { + (void) put_nvlist(zc, errors); + } + + nvlist_free(errors); + nvlist_free(nvl); + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_value name of property to inherit + * zc_cookie revert to received value if TRUE + * + * outputs: none + */ +static int +zfs_ioc_inherit_prop(zfs_cmd_t *zc) +{ + const char *propname = zc->zc_value; + zfs_prop_t prop = zfs_name_to_prop(propname); + boolean_t received = zc->zc_cookie; + zprop_source_t source = (received + ? ZPROP_SRC_NONE /* revert to received value, if any */ + : ZPROP_SRC_INHERITED); /* explicitly inherit */ + + if (received) { + nvlist_t *dummy; + nvpair_t *pair; + zprop_type_t type; + int err; + + /* + * zfs_prop_set_special() expects properties in the form of an + * nvpair with type info. + */ + if (prop == ZPROP_INVAL) { + if (!zfs_prop_user(propname)) + return (SET_ERROR(EINVAL)); + + type = PROP_TYPE_STRING; + } else if (prop == ZFS_PROP_VOLSIZE || + prop == ZFS_PROP_VERSION) { + return (SET_ERROR(EINVAL)); + } else { + type = zfs_prop_get_type(prop); + } + + VERIFY(nvlist_alloc(&dummy, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + switch (type) { + case PROP_TYPE_STRING: + VERIFY(0 == nvlist_add_string(dummy, propname, "")); + break; + case PROP_TYPE_NUMBER: + case PROP_TYPE_INDEX: + VERIFY(0 == nvlist_add_uint64(dummy, propname, 0)); + break; + default: + nvlist_free(dummy); + return (SET_ERROR(EINVAL)); + } + + pair = nvlist_next_nvpair(dummy, NULL); + err = zfs_prop_set_special(zc->zc_name, source, pair); + nvlist_free(dummy); + if (err != -1) + return (err); /* special property already handled */ + } else { + /* + * Only check this in the non-received case. We want to allow + * 'inherit -S' to revert non-inheritable properties like quota + * and reservation to the received or default values even though + * they are not considered inheritable. + */ + if (prop != ZPROP_INVAL && !zfs_prop_inheritable(prop)) + return (SET_ERROR(EINVAL)); + } + + /* property name has been validated by zfs_secpolicy_inherit_prop() */ + return (dsl_prop_inherit(zc->zc_name, zc->zc_value, source)); +} + +static int +zfs_ioc_pool_set_props(zfs_cmd_t *zc) +{ + nvlist_t *props; + spa_t *spa; + int error; + nvpair_t *pair; + + if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &props))) + return (error); + + /* + * If the only property is the configfile, then just do a spa_lookup() + * to handle the faulted case. + */ + pair = nvlist_next_nvpair(props, NULL); + if (pair != NULL && strcmp(nvpair_name(pair), + zpool_prop_to_name(ZPOOL_PROP_CACHEFILE)) == 0 && + nvlist_next_nvpair(props, pair) == NULL) { + mutex_enter(&spa_namespace_lock); + if ((spa = spa_lookup(zc->zc_name)) != NULL) { + spa_configfile_set(spa, props, B_FALSE); + spa_config_sync(spa, B_FALSE, B_TRUE); + } + mutex_exit(&spa_namespace_lock); + if (spa != NULL) { + nvlist_free(props); + return (0); + } + } + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) { + nvlist_free(props); + return (error); + } + + error = spa_prop_set(spa, props); + + nvlist_free(props); + spa_close(spa, FTAG); + + return (error); +} + +static int +zfs_ioc_pool_get_props(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + nvlist_t *nvp = NULL; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) { + /* + * If the pool is faulted, there may be properties we can still + * get (such as altroot and cachefile), so attempt to get them + * anyway. + */ + mutex_enter(&spa_namespace_lock); + if ((spa = spa_lookup(zc->zc_name)) != NULL) + error = spa_prop_get(spa, &nvp); + mutex_exit(&spa_namespace_lock); + } else { + error = spa_prop_get(spa, &nvp); + spa_close(spa, FTAG); + } + + if (error == 0 && zc->zc_nvlist_dst != 0) + error = put_nvlist(zc, nvp); + else + error = SET_ERROR(EFAULT); + + nvlist_free(nvp); + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_nvlist_src{_size} nvlist of delegated permissions + * zc_perm_action allow/unallow flag + * + * outputs: none + */ +static int +zfs_ioc_set_fsacl(zfs_cmd_t *zc) +{ + int error; + nvlist_t *fsaclnv = NULL; + + if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &fsaclnv)) != 0) + return (error); + + /* + * Verify nvlist is constructed correctly + */ + if ((error = zfs_deleg_verify_nvlist(fsaclnv)) != 0) { + nvlist_free(fsaclnv); + return (SET_ERROR(EINVAL)); + } + + /* + * If we don't have PRIV_SYS_MOUNT, then validate + * that user is allowed to hand out each permission in + * the nvlist(s) + */ + + error = secpolicy_zfs(CRED()); + if (error != 0) { + if (zc->zc_perm_action == B_FALSE) { + error = dsl_deleg_can_allow(zc->zc_name, + fsaclnv, CRED()); + } else { + error = dsl_deleg_can_unallow(zc->zc_name, + fsaclnv, CRED()); + } + } + + if (error == 0) + error = dsl_deleg_set(zc->zc_name, fsaclnv, zc->zc_perm_action); + + nvlist_free(fsaclnv); + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * + * outputs: + * zc_nvlist_src{_size} nvlist of delegated permissions + */ +static int +zfs_ioc_get_fsacl(zfs_cmd_t *zc) +{ + nvlist_t *nvp; + int error; + + if ((error = dsl_deleg_get(zc->zc_name, &nvp)) == 0) { + error = put_nvlist(zc, nvp); + nvlist_free(nvp); + } + + return (error); +} + +/* ARGSUSED */ +static void +zfs_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx) +{ + zfs_creat_t *zct = arg; + + zfs_create_fs(os, cr, zct->zct_zplprops, tx); +} + +#define ZFS_PROP_UNDEFINED ((uint64_t)-1) + +/* + * inputs: + * os parent objset pointer (NULL if root fs) + * fuids_ok fuids allowed in this version of the spa? + * sa_ok SAs allowed in this version of the spa? + * createprops list of properties requested by creator + * + * outputs: + * zplprops values for the zplprops we attach to the master node object + * is_ci true if requested file system will be purely case-insensitive + * + * Determine the settings for utf8only, normalization and + * casesensitivity. Specific values may have been requested by the + * creator and/or we can inherit values from the parent dataset. If + * the file system is of too early a vintage, a creator can not + * request settings for these properties, even if the requested + * setting is the default value. We don't actually want to create dsl + * properties for these, so remove them from the source nvlist after + * processing. + */ +static int +zfs_fill_zplprops_impl(objset_t *os, uint64_t zplver, + boolean_t fuids_ok, boolean_t sa_ok, nvlist_t *createprops, + nvlist_t *zplprops, boolean_t *is_ci) +{ + uint64_t sense = ZFS_PROP_UNDEFINED; + uint64_t norm = ZFS_PROP_UNDEFINED; + uint64_t u8 = ZFS_PROP_UNDEFINED; + int error; + + ASSERT(zplprops != NULL); + + /* + * Pull out creator prop choices, if any. + */ + if (createprops) { + (void) nvlist_lookup_uint64(createprops, + zfs_prop_to_name(ZFS_PROP_VERSION), &zplver); + (void) nvlist_lookup_uint64(createprops, + zfs_prop_to_name(ZFS_PROP_NORMALIZE), &norm); + (void) nvlist_remove_all(createprops, + zfs_prop_to_name(ZFS_PROP_NORMALIZE)); + (void) nvlist_lookup_uint64(createprops, + zfs_prop_to_name(ZFS_PROP_UTF8ONLY), &u8); + (void) nvlist_remove_all(createprops, + zfs_prop_to_name(ZFS_PROP_UTF8ONLY)); + (void) nvlist_lookup_uint64(createprops, + zfs_prop_to_name(ZFS_PROP_CASE), &sense); + (void) nvlist_remove_all(createprops, + zfs_prop_to_name(ZFS_PROP_CASE)); + } + + /* + * If the zpl version requested is whacky or the file system + * or pool is version is too "young" to support normalization + * and the creator tried to set a value for one of the props, + * error out. + */ + if ((zplver < ZPL_VERSION_INITIAL || zplver > ZPL_VERSION) || + (zplver >= ZPL_VERSION_FUID && !fuids_ok) || + (zplver >= ZPL_VERSION_SA && !sa_ok) || + (zplver < ZPL_VERSION_NORMALIZATION && + (norm != ZFS_PROP_UNDEFINED || u8 != ZFS_PROP_UNDEFINED || + sense != ZFS_PROP_UNDEFINED))) + return (SET_ERROR(ENOTSUP)); + + /* + * Put the version in the zplprops + */ + VERIFY(nvlist_add_uint64(zplprops, + zfs_prop_to_name(ZFS_PROP_VERSION), zplver) == 0); + + if (norm == ZFS_PROP_UNDEFINED && + (error = zfs_get_zplprop(os, ZFS_PROP_NORMALIZE, &norm)) != 0) + return (error); + VERIFY(nvlist_add_uint64(zplprops, + zfs_prop_to_name(ZFS_PROP_NORMALIZE), norm) == 0); + + /* + * If we're normalizing, names must always be valid UTF-8 strings. + */ + if (norm) + u8 = 1; + if (u8 == ZFS_PROP_UNDEFINED && + (error = zfs_get_zplprop(os, ZFS_PROP_UTF8ONLY, &u8)) != 0) + return (error); + VERIFY(nvlist_add_uint64(zplprops, + zfs_prop_to_name(ZFS_PROP_UTF8ONLY), u8) == 0); + + if (sense == ZFS_PROP_UNDEFINED && + (error = zfs_get_zplprop(os, ZFS_PROP_CASE, &sense)) != 0) + return (error); + VERIFY(nvlist_add_uint64(zplprops, + zfs_prop_to_name(ZFS_PROP_CASE), sense) == 0); + + if (is_ci) + *is_ci = (sense == ZFS_CASE_INSENSITIVE); + + return (0); +} + +static int +zfs_fill_zplprops(const char *dataset, nvlist_t *createprops, + nvlist_t *zplprops, boolean_t *is_ci) +{ + boolean_t fuids_ok, sa_ok; + uint64_t zplver = ZPL_VERSION; + objset_t *os = NULL; + char parentname[MAXNAMELEN]; + char *cp; + spa_t *spa; + uint64_t spa_vers; + int error; + + (void) strlcpy(parentname, dataset, sizeof (parentname)); + cp = strrchr(parentname, '/'); + ASSERT(cp != NULL); + cp[0] = '\0'; + + if ((error = spa_open(dataset, &spa, FTAG)) != 0) + return (error); + + spa_vers = spa_version(spa); + spa_close(spa, FTAG); + + zplver = zfs_zpl_version_map(spa_vers); + fuids_ok = (zplver >= ZPL_VERSION_FUID); + sa_ok = (zplver >= ZPL_VERSION_SA); + + /* + * Open parent object set so we can inherit zplprop values. + */ + if ((error = dmu_objset_hold(parentname, FTAG, &os)) != 0) + return (error); + + error = zfs_fill_zplprops_impl(os, zplver, fuids_ok, sa_ok, createprops, + zplprops, is_ci); + dmu_objset_rele(os, FTAG); + return (error); +} + +static int +zfs_fill_zplprops_root(uint64_t spa_vers, nvlist_t *createprops, + nvlist_t *zplprops, boolean_t *is_ci) +{ + boolean_t fuids_ok; + boolean_t sa_ok; + uint64_t zplver = ZPL_VERSION; + int error; + + zplver = zfs_zpl_version_map(spa_vers); + fuids_ok = (zplver >= ZPL_VERSION_FUID); + sa_ok = (zplver >= ZPL_VERSION_SA); + + error = zfs_fill_zplprops_impl(NULL, zplver, fuids_ok, sa_ok, + createprops, zplprops, is_ci); + return (error); +} + +/* + * innvl: { + * "type" -> dmu_objset_type_t (int32) + * (optional) "props" -> { prop -> value } + * } + * + * outnvl: propname -> error code (int32) + */ +static int +zfs_ioc_create(const char *fsname, nvlist_t *innvl, nvlist_t *outnvl) +{ + int error = 0; + zfs_creat_t zct = { 0 }; + nvlist_t *nvprops = NULL; + void (*cbfunc)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx); + int32_t type32; + dmu_objset_type_t type; + boolean_t is_insensitive = B_FALSE; + + if (nvlist_lookup_int32(innvl, "type", &type32) != 0) + return (SET_ERROR(EINVAL)); + type = type32; + (void) nvlist_lookup_nvlist(innvl, "props", &nvprops); + + switch (type) { + case DMU_OST_ZFS: + cbfunc = zfs_create_cb; + break; + + case DMU_OST_ZVOL: + cbfunc = zvol_create_cb; + break; + + default: + cbfunc = NULL; + break; + } + if (strchr(fsname, '@') || + strchr(fsname, '%')) + return (SET_ERROR(EINVAL)); + + zct.zct_props = nvprops; + + if (cbfunc == NULL) + return (SET_ERROR(EINVAL)); + + if (type == DMU_OST_ZVOL) { + uint64_t volsize, volblocksize; + + if (nvprops == NULL) + return (SET_ERROR(EINVAL)); + if (nvlist_lookup_uint64(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLSIZE), &volsize) != 0) + return (SET_ERROR(EINVAL)); + + if ((error = nvlist_lookup_uint64(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), + &volblocksize)) != 0 && error != ENOENT) + return (SET_ERROR(EINVAL)); + + if (error != 0) + volblocksize = zfs_prop_default_numeric( + ZFS_PROP_VOLBLOCKSIZE); + + if ((error = zvol_check_volblocksize(fsname, + volblocksize)) != 0 || + (error = zvol_check_volsize(volsize, + volblocksize)) != 0) + return (error); + } else if (type == DMU_OST_ZFS) { + int error; + + /* + * We have to have normalization and + * case-folding flags correct when we do the + * file system creation, so go figure them out + * now. + */ + VERIFY(nvlist_alloc(&zct.zct_zplprops, + NV_UNIQUE_NAME, KM_SLEEP) == 0); + error = zfs_fill_zplprops(fsname, nvprops, + zct.zct_zplprops, &is_insensitive); + if (error != 0) { + nvlist_free(zct.zct_zplprops); + return (error); + } + } + + error = dmu_objset_create(fsname, type, + is_insensitive ? DS_FLAG_CI_DATASET : 0, cbfunc, &zct); + nvlist_free(zct.zct_zplprops); + + /* + * It would be nice to do this atomically. + */ + if (error == 0) { + error = zfs_set_prop_nvlist(fsname, ZPROP_SRC_LOCAL, + nvprops, outnvl); + if (error != 0) + (void) dsl_destroy_head(fsname); + } + +#ifdef _KERNEL + if (error == 0 && type == DMU_OST_ZVOL) + zvol_create_minors(fsname); +#endif + + return (error); +} + +/* + * innvl: { + * "origin" -> name of origin snapshot + * (optional) "props" -> { prop -> value } + * } + * + * outputs: + * outnvl: propname -> error code (int32) + */ +static int +zfs_ioc_clone(const char *fsname, nvlist_t *innvl, nvlist_t *outnvl) +{ + int error = 0; + nvlist_t *nvprops = NULL; + char *origin_name; + + if (nvlist_lookup_string(innvl, "origin", &origin_name) != 0) + return (SET_ERROR(EINVAL)); + (void) nvlist_lookup_nvlist(innvl, "props", &nvprops); + + if (strchr(fsname, '@') || + strchr(fsname, '%')) + return (SET_ERROR(EINVAL)); + + if (dataset_namecheck(origin_name, NULL, NULL) != 0) + return (SET_ERROR(EINVAL)); + error = dmu_objset_clone(fsname, origin_name); + if (error != 0) + return (error); + + /* + * It would be nice to do this atomically. + */ + if (error == 0) { + error = zfs_set_prop_nvlist(fsname, ZPROP_SRC_LOCAL, + nvprops, outnvl); + if (error != 0) + (void) dsl_destroy_head(fsname); + } + +#ifdef _KERNEL + if (error == 0) + zvol_create_minors(fsname); +#endif + + return (error); +} + +/* + * innvl: { + * "snaps" -> { snapshot1, snapshot2 } + * (optional) "props" -> { prop -> value (string) } + * } + * + * outnvl: snapshot -> error code (int32) + */ +static int +zfs_ioc_snapshot(const char *poolname, nvlist_t *innvl, nvlist_t *outnvl) +{ + nvlist_t *snaps; + nvlist_t *props = NULL; + int error, poollen; + nvpair_t *pair, *pair2; + + (void) nvlist_lookup_nvlist(innvl, "props", &props); + if ((error = zfs_check_userprops(poolname, props)) != 0) + return (error); + + if (!nvlist_empty(props) && + zfs_earlier_version(poolname, SPA_VERSION_SNAP_PROPS)) + return (SET_ERROR(ENOTSUP)); + + if (nvlist_lookup_nvlist(innvl, "snaps", &snaps) != 0) + return (SET_ERROR(EINVAL)); + poollen = strlen(poolname); + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nvlist_next_nvpair(snaps, pair)) { + const char *name = nvpair_name(pair); + const char *cp = strchr(name, '@'); + + /* + * The snap name must contain an @, and the part after it must + * contain only valid characters. + */ + if (cp == NULL || + zfs_component_namecheck(cp + 1, NULL, NULL) != 0) + return (SET_ERROR(EINVAL)); + + /* + * The snap must be in the specified pool. + */ + if (strncmp(name, poolname, poollen) != 0 || + (name[poollen] != '/' && name[poollen] != '@')) + return (SET_ERROR(EXDEV)); + + /* This must be the only snap of this fs. */ + for (pair2 = nvlist_next_nvpair(snaps, pair); + pair2 != NULL; pair2 = nvlist_next_nvpair(snaps, pair2)) { + if (strncmp(name, nvpair_name(pair2), cp - name + 1) + == 0) { + return (SET_ERROR(EXDEV)); + } + } + } + + error = dsl_dataset_snapshot(snaps, props, outnvl); + +#ifdef _KERNEL + if (error == 0) + zvol_create_minors(poolname); +#endif + + return (error); +} + +/* + * innvl: "message" -> string + */ +/* ARGSUSED */ +static int +zfs_ioc_log_history(const char *unused, nvlist_t *innvl, nvlist_t *outnvl) +{ + char *message; + spa_t *spa; + int error; + char *poolname; + + /* + * The poolname in the ioctl is not set, we get it from the TSD, + * which was set at the end of the last successful ioctl that allows + * logging. The secpolicy func already checked that it is set. + * Only one log ioctl is allowed after each successful ioctl, so + * we clear the TSD here. + */ + poolname = tsd_get(zfs_allow_log_key); + (void) tsd_set(zfs_allow_log_key, NULL); + error = spa_open(poolname, &spa, FTAG); + strfree(poolname); + if (error != 0) + return (error); + + if (nvlist_lookup_string(innvl, "message", &message) != 0) { + spa_close(spa, FTAG); + return (SET_ERROR(EINVAL)); + } + + if (spa_version(spa) < SPA_VERSION_ZPOOL_HISTORY) { + spa_close(spa, FTAG); + return (SET_ERROR(ENOTSUP)); + } + + error = spa_history_log(spa, message); + spa_close(spa, FTAG); + return (error); +} + +/* + * The dp_config_rwlock must not be held when calling this, because the + * unmount may need to write out data. + * + * This function is best-effort. Callers must deal gracefully if it + * remains mounted (or is remounted after this call). + * + * Returns 0 if the argument is not a snapshot, or it is not currently a + * filesystem, or we were able to unmount it. Returns error code otherwise. + */ +int +zfs_unmount_snap(const char *snapname) +{ + int err; + + if (strchr(snapname, '@') == NULL) + return (0); + + err = zfsctl_snapshot_unmount((char *)snapname, MNT_FORCE); + if (err != 0 && err != ENOENT) + return (SET_ERROR(err)); + + return (0); +} + +/* ARGSUSED */ +static int +zfs_unmount_snap_cb(const char *snapname, void *arg) +{ + return (zfs_unmount_snap(snapname)); +} + +/* + * When a clone is destroyed, its origin may also need to be destroyed, + * in which case it must be unmounted. This routine will do that unmount + * if necessary. + */ +void +zfs_destroy_unmount_origin(const char *fsname) +{ + int error; + objset_t *os; + dsl_dataset_t *ds; + + error = dmu_objset_hold(fsname, FTAG, &os); + if (error != 0) + return; + ds = dmu_objset_ds(os); + if (dsl_dir_is_clone(ds->ds_dir) && DS_IS_DEFER_DESTROY(ds->ds_prev)) { + char originname[MAXNAMELEN]; + dsl_dataset_name(ds->ds_prev, originname); + dmu_objset_rele(os, FTAG); + (void) zfs_unmount_snap(originname); + } else { + dmu_objset_rele(os, FTAG); + } +} + +/* + * innvl: { + * "snaps" -> { snapshot1, snapshot2 } + * (optional boolean) "defer" + * } + * + * outnvl: snapshot -> error code (int32) + */ +/* ARGSUSED */ +static int +zfs_ioc_destroy_snaps(const char *poolname, nvlist_t *innvl, nvlist_t *outnvl) +{ + nvlist_t *snaps; + nvpair_t *pair; + boolean_t defer; + + if (nvlist_lookup_nvlist(innvl, "snaps", &snaps) != 0) + return (SET_ERROR(EINVAL)); + defer = nvlist_exists(innvl, "defer"); + + for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL; + pair = nvlist_next_nvpair(snaps, pair)) { + (void) zfs_unmount_snap(nvpair_name(pair)); + (void) zvol_remove_minor(nvpair_name(pair)); + } + + return (dsl_destroy_snapshots_nvl(snaps, defer, outnvl)); +} + +/* + * Create bookmarks. Bookmark names are of the form #. + * All bookmarks must be in the same pool. + * + * innvl: { + * bookmark1 -> snapshot1, bookmark2 -> snapshot2 + * } + * + * outnvl: bookmark -> error code (int32) + * + */ +/* ARGSUSED */ +static int +zfs_ioc_bookmark(const char *poolname, nvlist_t *innvl, nvlist_t *outnvl) +{ + nvpair_t *pair, *pair2; + + for (pair = nvlist_next_nvpair(innvl, NULL); + pair != NULL; pair = nvlist_next_nvpair(innvl, pair)) { + char *snap_name; + + /* + * Verify the snapshot argument. + */ + if (nvpair_value_string(pair, &snap_name) != 0) + return (SET_ERROR(EINVAL)); + + + /* Verify that the keys (bookmarks) are unique */ + for (pair2 = nvlist_next_nvpair(innvl, pair); + pair2 != NULL; pair2 = nvlist_next_nvpair(innvl, pair2)) { + if (strcmp(nvpair_name(pair), nvpair_name(pair2)) == 0) + return (SET_ERROR(EINVAL)); + } + } + + return (dsl_bookmark_create(innvl, outnvl)); +} + +/* + * innvl: { + * property 1, property 2, ... + * } + * + * outnvl: { + * bookmark name 1 -> { property 1, property 2, ... }, + * bookmark name 2 -> { property 1, property 2, ... } + * } + * + */ +static int +zfs_ioc_get_bookmarks(const char *fsname, nvlist_t *innvl, nvlist_t *outnvl) +{ + return (dsl_get_bookmarks(fsname, innvl, outnvl)); +} + +/* + * innvl: { + * bookmark name 1, bookmark name 2 + * } + * + * outnvl: bookmark -> error code (int32) + * + */ +static int +zfs_ioc_destroy_bookmarks(const char *poolname, nvlist_t *innvl, + nvlist_t *outnvl) +{ + int error, poollen; + nvpair_t *pair; + + poollen = strlen(poolname); + for (pair = nvlist_next_nvpair(innvl, NULL); + pair != NULL; pair = nvlist_next_nvpair(innvl, pair)) { + const char *name = nvpair_name(pair); + const char *cp = strchr(name, '#'); + + /* + * The bookmark name must contain an #, and the part after it + * must contain only valid characters. + */ + if (cp == NULL || + zfs_component_namecheck(cp + 1, NULL, NULL) != 0) + return (SET_ERROR(EINVAL)); + + /* + * The bookmark must be in the specified pool. + */ + if (strncmp(name, poolname, poollen) != 0 || + (name[poollen] != '/' && name[poollen] != '#')) + return (SET_ERROR(EXDEV)); + } + + error = dsl_bookmark_destroy(innvl, outnvl); + return (error); +} + +/* + * inputs: + * zc_name name of dataset to destroy + * zc_objset_type type of objset + * zc_defer_destroy mark for deferred destroy + * + * outputs: none + */ +static int +zfs_ioc_destroy(zfs_cmd_t *zc) +{ + int err; + + if (zc->zc_objset_type == DMU_OST_ZFS) { + err = zfs_unmount_snap(zc->zc_name); + if (err != 0) + return (err); + } + + if (strchr(zc->zc_name, '@')) + err = dsl_destroy_snapshot(zc->zc_name, zc->zc_defer_destroy); + else + err = dsl_destroy_head(zc->zc_name); + if (zc->zc_objset_type == DMU_OST_ZVOL && err == 0) + (void) zvol_remove_minor(zc->zc_name); + return (err); +} + +/* + * fsname is name of dataset to rollback (to most recent snapshot) + * + * innvl is not used. + * + * outnvl: "target" -> name of most recent snapshot + * } + */ +/* ARGSUSED */ +static int +zfs_ioc_rollback(const char *fsname, nvlist_t *args, nvlist_t *outnvl) +{ + zfs_sb_t *zsb; + int error; + + if (get_zfs_sb(fsname, &zsb) == 0) { + error = zfs_suspend_fs(zsb); + if (error == 0) { + int resume_err; + + error = dsl_dataset_rollback(fsname, zsb, outnvl); + resume_err = zfs_resume_fs(zsb, fsname); + error = error ? error : resume_err; + } + deactivate_super(zsb->z_sb); + } else { + error = dsl_dataset_rollback(fsname, NULL, outnvl); + } + return (error); +} + +static int +recursive_unmount(const char *fsname, void *arg) +{ + const char *snapname = arg; + char *fullname; + int error; + + fullname = kmem_asprintf("%s@%s", fsname, snapname); + error = zfs_unmount_snap(fullname); + strfree(fullname); + + return (error); +} + +/* + * inputs: + * zc_name old name of dataset + * zc_value new name of dataset + * zc_cookie recursive flag (only valid for snapshots) + * + * outputs: none + */ +static int +zfs_ioc_rename(zfs_cmd_t *zc) +{ + boolean_t recursive = zc->zc_cookie & 1; + char *at; + + zc->zc_value[sizeof (zc->zc_value) - 1] = '\0'; + if (dataset_namecheck(zc->zc_value, NULL, NULL) != 0 || + strchr(zc->zc_value, '%')) + return (SET_ERROR(EINVAL)); + + at = strchr(zc->zc_name, '@'); + if (at != NULL) { + /* snaps must be in same fs */ + int error; + + if (strncmp(zc->zc_name, zc->zc_value, at - zc->zc_name + 1)) + return (SET_ERROR(EXDEV)); + *at = '\0'; + if (zc->zc_objset_type == DMU_OST_ZFS) { + error = dmu_objset_find(zc->zc_name, + recursive_unmount, at + 1, + recursive ? DS_FIND_CHILDREN : 0); + if (error != 0) { + *at = '@'; + return (error); + } + } + error = dsl_dataset_rename_snapshot(zc->zc_name, + at + 1, strchr(zc->zc_value, '@') + 1, recursive); + *at = '@'; + + return (error); + } else { + return (dsl_dir_rename(zc->zc_name, zc->zc_value)); + } +} + +static int +zfs_check_settable(const char *dsname, nvpair_t *pair, cred_t *cr) +{ + const char *propname = nvpair_name(pair); + boolean_t issnap = (strchr(dsname, '@') != NULL); + zfs_prop_t prop = zfs_name_to_prop(propname); + uint64_t intval; + int err; + + if (prop == ZPROP_INVAL) { + if (zfs_prop_user(propname)) { + if ((err = zfs_secpolicy_write_perms(dsname, + ZFS_DELEG_PERM_USERPROP, cr))) + return (err); + return (0); + } + + if (!issnap && zfs_prop_userquota(propname)) { + const char *perm = NULL; + const char *uq_prefix = + zfs_userquota_prop_prefixes[ZFS_PROP_USERQUOTA]; + const char *gq_prefix = + zfs_userquota_prop_prefixes[ZFS_PROP_GROUPQUOTA]; + + if (strncmp(propname, uq_prefix, + strlen(uq_prefix)) == 0) { + perm = ZFS_DELEG_PERM_USERQUOTA; + } else if (strncmp(propname, gq_prefix, + strlen(gq_prefix)) == 0) { + perm = ZFS_DELEG_PERM_GROUPQUOTA; + } else { + /* USERUSED and GROUPUSED are read-only */ + return (SET_ERROR(EINVAL)); + } + + if ((err = zfs_secpolicy_write_perms(dsname, perm, cr))) + return (err); + return (0); + } + + return (SET_ERROR(EINVAL)); + } + + if (issnap) + return (SET_ERROR(EINVAL)); + + if (nvpair_type(pair) == DATA_TYPE_NVLIST) { + /* + * dsl_prop_get_all_impl() returns properties in this + * format. + */ + nvlist_t *attrs; + VERIFY(nvpair_value_nvlist(pair, &attrs) == 0); + VERIFY(nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &pair) == 0); + } + + /* + * Check that this value is valid for this pool version + */ + switch (prop) { + case ZFS_PROP_COMPRESSION: + /* + * If the user specified gzip compression, make sure + * the SPA supports it. We ignore any errors here since + * we'll catch them later. + */ + if (nvpair_value_uint64(pair, &intval) == 0) { + if (intval >= ZIO_COMPRESS_GZIP_1 && + intval <= ZIO_COMPRESS_GZIP_9 && + zfs_earlier_version(dsname, + SPA_VERSION_GZIP_COMPRESSION)) { + return (SET_ERROR(ENOTSUP)); + } + + if (intval == ZIO_COMPRESS_ZLE && + zfs_earlier_version(dsname, + SPA_VERSION_ZLE_COMPRESSION)) + return (SET_ERROR(ENOTSUP)); + + if (intval == ZIO_COMPRESS_LZ4) { + spa_t *spa; + + if ((err = spa_open(dsname, &spa, FTAG)) != 0) + return (err); + + if (!spa_feature_is_enabled(spa, + SPA_FEATURE_LZ4_COMPRESS)) { + spa_close(spa, FTAG); + return (SET_ERROR(ENOTSUP)); + } + spa_close(spa, FTAG); + } + + /* + * If this is a bootable dataset then + * verify that the compression algorithm + * is supported for booting. We must return + * something other than ENOTSUP since it + * implies a downrev pool version. + */ + if (zfs_is_bootfs(dsname) && + !BOOTFS_COMPRESS_VALID(intval)) { + return (SET_ERROR(ERANGE)); + } + } + break; + + case ZFS_PROP_COPIES: + if (zfs_earlier_version(dsname, SPA_VERSION_DITTO_BLOCKS)) + return (SET_ERROR(ENOTSUP)); + break; + + case ZFS_PROP_DEDUP: + if (zfs_earlier_version(dsname, SPA_VERSION_DEDUP)) + return (SET_ERROR(ENOTSUP)); + break; + + case ZFS_PROP_VOLBLOCKSIZE: + case ZFS_PROP_RECORDSIZE: + /* Record sizes above 128k need the feature to be enabled */ + if (nvpair_value_uint64(pair, &intval) == 0 && + intval > SPA_OLD_MAXBLOCKSIZE) { + spa_t *spa; + + /* + * If this is a bootable dataset then + * the we don't allow large (>128K) blocks, + * because GRUB doesn't support them. + */ + if (zfs_is_bootfs(dsname) && + intval > SPA_OLD_MAXBLOCKSIZE) { + return (SET_ERROR(EDOM)); + } + + /* + * We don't allow setting the property above 1MB, + * unless the tunable has been changed. + */ + if (intval > zfs_max_recordsize || + intval > SPA_MAXBLOCKSIZE) + return (SET_ERROR(EDOM)); + + if ((err = spa_open(dsname, &spa, FTAG)) != 0) + return (err); + + if (!spa_feature_is_enabled(spa, + SPA_FEATURE_LARGE_BLOCKS)) { + spa_close(spa, FTAG); + return (SET_ERROR(ENOTSUP)); + } + spa_close(spa, FTAG); + } + break; + + case ZFS_PROP_SHARESMB: + if (zpl_earlier_version(dsname, ZPL_VERSION_FUID)) + return (SET_ERROR(ENOTSUP)); + break; + + case ZFS_PROP_ACLINHERIT: + if (nvpair_type(pair) == DATA_TYPE_UINT64 && + nvpair_value_uint64(pair, &intval) == 0) { + if (intval == ZFS_ACL_PASSTHROUGH_X && + zfs_earlier_version(dsname, + SPA_VERSION_PASSTHROUGH_X)) + return (SET_ERROR(ENOTSUP)); + } + break; + default: + break; + } + + return (zfs_secpolicy_setprop(dsname, prop, pair, CRED())); +} + +/* + * Removes properties from the given props list that fail permission checks + * needed to clear them and to restore them in case of a receive error. For each + * property, make sure we have both set and inherit permissions. + * + * Returns the first error encountered if any permission checks fail. If the + * caller provides a non-NULL errlist, it also gives the complete list of names + * of all the properties that failed a permission check along with the + * corresponding error numbers. The caller is responsible for freeing the + * returned errlist. + * + * If every property checks out successfully, zero is returned and the list + * pointed at by errlist is NULL. + */ +static int +zfs_check_clearable(char *dataset, nvlist_t *props, nvlist_t **errlist) +{ + zfs_cmd_t *zc; + nvpair_t *pair, *next_pair; + nvlist_t *errors; + int err, rv = 0; + + if (props == NULL) + return (0); + + VERIFY(nvlist_alloc(&errors, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + zc = kmem_alloc(sizeof (zfs_cmd_t), KM_SLEEP); + (void) strcpy(zc->zc_name, dataset); + pair = nvlist_next_nvpair(props, NULL); + while (pair != NULL) { + next_pair = nvlist_next_nvpair(props, pair); + + (void) strcpy(zc->zc_value, nvpair_name(pair)); + if ((err = zfs_check_settable(dataset, pair, CRED())) != 0 || + (err = zfs_secpolicy_inherit_prop(zc, NULL, CRED())) != 0) { + VERIFY(nvlist_remove_nvpair(props, pair) == 0); + VERIFY(nvlist_add_int32(errors, + zc->zc_value, err) == 0); + } + pair = next_pair; + } + kmem_free(zc, sizeof (zfs_cmd_t)); + + if ((pair = nvlist_next_nvpair(errors, NULL)) == NULL) { + nvlist_free(errors); + errors = NULL; + } else { + VERIFY(nvpair_value_int32(pair, &rv) == 0); + } + + if (errlist == NULL) + nvlist_free(errors); + else + *errlist = errors; + + return (rv); +} + +static boolean_t +propval_equals(nvpair_t *p1, nvpair_t *p2) +{ + if (nvpair_type(p1) == DATA_TYPE_NVLIST) { + /* dsl_prop_get_all_impl() format */ + nvlist_t *attrs; + VERIFY(nvpair_value_nvlist(p1, &attrs) == 0); + VERIFY(nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &p1) == 0); + } + + if (nvpair_type(p2) == DATA_TYPE_NVLIST) { + nvlist_t *attrs; + VERIFY(nvpair_value_nvlist(p2, &attrs) == 0); + VERIFY(nvlist_lookup_nvpair(attrs, ZPROP_VALUE, + &p2) == 0); + } + + if (nvpair_type(p1) != nvpair_type(p2)) + return (B_FALSE); + + if (nvpair_type(p1) == DATA_TYPE_STRING) { + char *valstr1, *valstr2; + + VERIFY(nvpair_value_string(p1, (char **)&valstr1) == 0); + VERIFY(nvpair_value_string(p2, (char **)&valstr2) == 0); + return (strcmp(valstr1, valstr2) == 0); + } else { + uint64_t intval1, intval2; + + VERIFY(nvpair_value_uint64(p1, &intval1) == 0); + VERIFY(nvpair_value_uint64(p2, &intval2) == 0); + return (intval1 == intval2); + } +} + +/* + * Remove properties from props if they are not going to change (as determined + * by comparison with origprops). Remove them from origprops as well, since we + * do not need to clear or restore properties that won't change. + */ +static void +props_reduce(nvlist_t *props, nvlist_t *origprops) +{ + nvpair_t *pair, *next_pair; + + if (origprops == NULL) + return; /* all props need to be received */ + + pair = nvlist_next_nvpair(props, NULL); + while (pair != NULL) { + const char *propname = nvpair_name(pair); + nvpair_t *match; + + next_pair = nvlist_next_nvpair(props, pair); + + if ((nvlist_lookup_nvpair(origprops, propname, + &match) != 0) || !propval_equals(pair, match)) + goto next; /* need to set received value */ + + /* don't clear the existing received value */ + (void) nvlist_remove_nvpair(origprops, match); + /* don't bother receiving the property */ + (void) nvlist_remove_nvpair(props, pair); +next: + pair = next_pair; + } +} + +#ifdef DEBUG +static boolean_t zfs_ioc_recv_inject_err; +#endif + +/* + * inputs: + * zc_name name of containing filesystem + * zc_nvlist_src{_size} nvlist of properties to apply + * zc_value name of snapshot to create + * zc_string name of clone origin (if DRR_FLAG_CLONE) + * zc_cookie file descriptor to recv from + * zc_begin_record the BEGIN record of the stream (not byteswapped) + * zc_guid force flag + * zc_cleanup_fd cleanup-on-exit file descriptor + * zc_action_handle handle for this guid/ds mapping (or zero on first call) + * + * outputs: + * zc_cookie number of bytes read + * zc_nvlist_dst{_size} error for each unapplied received property + * zc_obj zprop_errflags_t + * zc_action_handle handle for this guid/ds mapping + */ +static int +zfs_ioc_recv(zfs_cmd_t *zc) +{ + file_t *fp; + dmu_recv_cookie_t drc; + boolean_t force = (boolean_t)zc->zc_guid; + int fd; + int error = 0; + int props_error = 0; + nvlist_t *errors; + offset_t off; + nvlist_t *props = NULL; /* sent properties */ + nvlist_t *origprops = NULL; /* existing properties */ + char *origin = NULL; + char *tosnap; + char tofs[ZFS_MAXNAMELEN]; + boolean_t first_recvd_props = B_FALSE; + + if (dataset_namecheck(zc->zc_value, NULL, NULL) != 0 || + strchr(zc->zc_value, '@') == NULL || + strchr(zc->zc_value, '%')) + return (SET_ERROR(EINVAL)); + + (void) strcpy(tofs, zc->zc_value); + tosnap = strchr(tofs, '@'); + *tosnap++ = '\0'; + + if (zc->zc_nvlist_src != 0 && + (error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &props)) != 0) + return (error); + + fd = zc->zc_cookie; + fp = getf(fd); + if (fp == NULL) { + nvlist_free(props); + return (SET_ERROR(EBADF)); + } + + VERIFY(nvlist_alloc(&errors, NV_UNIQUE_NAME, KM_SLEEP) == 0); + + if (zc->zc_string[0]) + origin = zc->zc_string; + + error = dmu_recv_begin(tofs, tosnap, + &zc->zc_begin_record, force, origin, &drc); + if (error != 0) + goto out; + + /* + * Set properties before we receive the stream so that they are applied + * to the new data. Note that we must call dmu_recv_stream() if + * dmu_recv_begin() succeeds. + */ + if (props != NULL && !drc.drc_newfs) { + if (spa_version(dsl_dataset_get_spa(drc.drc_ds)) >= + SPA_VERSION_RECVD_PROPS && + !dsl_prop_get_hasrecvd(tofs)) + first_recvd_props = B_TRUE; + + /* + * If new received properties are supplied, they are to + * completely replace the existing received properties, so stash + * away the existing ones. + */ + if (dsl_prop_get_received(tofs, &origprops) == 0) { + nvlist_t *errlist = NULL; + /* + * Don't bother writing a property if its value won't + * change (and avoid the unnecessary security checks). + * + * The first receive after SPA_VERSION_RECVD_PROPS is a + * special case where we blow away all local properties + * regardless. + */ + if (!first_recvd_props) + props_reduce(props, origprops); + if (zfs_check_clearable(tofs, origprops, &errlist) != 0) + (void) nvlist_merge(errors, errlist, 0); + nvlist_free(errlist); + + if (clear_received_props(tofs, origprops, + first_recvd_props ? NULL : props) != 0) + zc->zc_obj |= ZPROP_ERR_NOCLEAR; + } else { + zc->zc_obj |= ZPROP_ERR_NOCLEAR; + } + } + + if (props != NULL) { + props_error = dsl_prop_set_hasrecvd(tofs); + + if (props_error == 0) { + (void) zfs_set_prop_nvlist(tofs, ZPROP_SRC_RECEIVED, + props, errors); + } + } + + if (zc->zc_nvlist_dst_size != 0 && + (nvlist_smush(errors, zc->zc_nvlist_dst_size) != 0 || + put_nvlist(zc, errors) != 0)) { + /* + * Caller made zc->zc_nvlist_dst less than the minimum expected + * size or supplied an invalid address. + */ + props_error = SET_ERROR(EINVAL); + } + + off = fp->f_offset; + error = dmu_recv_stream(&drc, fp->f_vnode, &off, zc->zc_cleanup_fd, + &zc->zc_action_handle); + + if (error == 0) { + zfs_sb_t *zsb = NULL; + + if (get_zfs_sb(tofs, &zsb) == 0) { + /* online recv */ + int end_err; + + error = zfs_suspend_fs(zsb); + /* + * If the suspend fails, then the recv_end will + * likely also fail, and clean up after itself. + */ + end_err = dmu_recv_end(&drc, zsb); + if (error == 0) + error = zfs_resume_fs(zsb, tofs); + error = error ? error : end_err; + deactivate_super(zsb->z_sb); + } else { + error = dmu_recv_end(&drc, NULL); + } + } + + zc->zc_cookie = off - fp->f_offset; + if (VOP_SEEK(fp->f_vnode, fp->f_offset, &off, NULL) == 0) + fp->f_offset = off; + +#ifdef DEBUG + if (zfs_ioc_recv_inject_err) { + zfs_ioc_recv_inject_err = B_FALSE; + error = 1; + } +#endif + +#ifdef _KERNEL + if (error == 0) + zvol_create_minors(tofs); +#endif + + /* + * On error, restore the original props. + */ + if (error != 0 && props != NULL && !drc.drc_newfs) { + if (clear_received_props(tofs, props, NULL) != 0) { + /* + * We failed to clear the received properties. + * Since we may have left a $recvd value on the + * system, we can't clear the $hasrecvd flag. + */ + zc->zc_obj |= ZPROP_ERR_NORESTORE; + } else if (first_recvd_props) { + dsl_prop_unset_hasrecvd(tofs); + } + + if (origprops == NULL && !drc.drc_newfs) { + /* We failed to stash the original properties. */ + zc->zc_obj |= ZPROP_ERR_NORESTORE; + } + + /* + * dsl_props_set() will not convert RECEIVED to LOCAL on or + * after SPA_VERSION_RECVD_PROPS, so we need to specify LOCAL + * explictly if we're restoring local properties cleared in the + * first new-style receive. + */ + if (origprops != NULL && + zfs_set_prop_nvlist(tofs, (first_recvd_props ? + ZPROP_SRC_LOCAL : ZPROP_SRC_RECEIVED), + origprops, NULL) != 0) { + /* + * We stashed the original properties but failed to + * restore them. + */ + zc->zc_obj |= ZPROP_ERR_NORESTORE; + } + } +out: + nvlist_free(props); + nvlist_free(origprops); + nvlist_free(errors); + releasef(fd); + + if (error == 0) + error = props_error; + + return (error); +} + +/* + * inputs: + * zc_name name of snapshot to send + * zc_cookie file descriptor to send stream to + * zc_obj fromorigin flag (mutually exclusive with zc_fromobj) + * zc_sendobj objsetid of snapshot to send + * zc_fromobj objsetid of incremental fromsnap (may be zero) + * zc_guid if set, estimate size of stream only. zc_cookie is ignored. + * output size in zc_objset_type. + * zc_flags lzc_send_flags + * + * outputs: + * zc_objset_type estimated size, if zc_guid is set + */ +static int +zfs_ioc_send(zfs_cmd_t *zc) +{ + int error; + offset_t off; + boolean_t estimate = (zc->zc_guid != 0); + boolean_t embedok = (zc->zc_flags & 0x1); + boolean_t large_block_ok = (zc->zc_flags & 0x2); + + if (zc->zc_obj != 0) { + dsl_pool_t *dp; + dsl_dataset_t *tosnap; + + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, FTAG, &tosnap); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + if (dsl_dir_is_clone(tosnap->ds_dir)) + zc->zc_fromobj = + dsl_dir_phys(tosnap->ds_dir)->dd_origin_obj; + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + } + + if (estimate) { + dsl_pool_t *dp; + dsl_dataset_t *tosnap; + dsl_dataset_t *fromsnap = NULL; + + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, FTAG, &tosnap); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + if (zc->zc_fromobj != 0) { + error = dsl_dataset_hold_obj(dp, zc->zc_fromobj, + FTAG, &fromsnap); + if (error != 0) { + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); + } + } + + error = dmu_send_estimate(tosnap, fromsnap, + &zc->zc_objset_type); + + if (fromsnap != NULL) + dsl_dataset_rele(fromsnap, FTAG); + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + } else { + file_t *fp = getf(zc->zc_cookie); + if (fp == NULL) + return (SET_ERROR(EBADF)); + + off = fp->f_offset; + error = dmu_send_obj(zc->zc_name, zc->zc_sendobj, + zc->zc_fromobj, embedok, large_block_ok, + zc->zc_cookie, fp->f_vnode, &off); + + if (VOP_SEEK(fp->f_vnode, fp->f_offset, &off, NULL) == 0) + fp->f_offset = off; + releasef(zc->zc_cookie); + } + return (error); +} + +/* + * inputs: + * zc_name name of snapshot on which to report progress + * zc_cookie file descriptor of send stream + * + * outputs: + * zc_cookie number of bytes written in send stream thus far + */ +static int +zfs_ioc_send_progress(zfs_cmd_t *zc) +{ + dsl_pool_t *dp; + dsl_dataset_t *ds; + dmu_sendarg_t *dsp = NULL; + int error; + + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &ds); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + mutex_enter(&ds->ds_sendstream_lock); + + /* + * Iterate over all the send streams currently active on this dataset. + * If there's one which matches the specified file descriptor _and_ the + * stream was started by the current process, return the progress of + * that stream. + */ + + for (dsp = list_head(&ds->ds_sendstreams); dsp != NULL; + dsp = list_next(&ds->ds_sendstreams, dsp)) { + if (dsp->dsa_outfd == zc->zc_cookie && + dsp->dsa_proc->group_leader == curproc->group_leader) + break; + } + + if (dsp != NULL) + zc->zc_cookie = *(dsp->dsa_off); + else + error = SET_ERROR(ENOENT); + + mutex_exit(&ds->ds_sendstream_lock); + dsl_dataset_rele(ds, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); +} + +static int +zfs_ioc_inject_fault(zfs_cmd_t *zc) +{ + int id, error; + + error = zio_inject_fault(zc->zc_name, (int)zc->zc_guid, &id, + &zc->zc_inject_record); + + if (error == 0) + zc->zc_guid = (uint64_t)id; + + return (error); +} + +static int +zfs_ioc_clear_fault(zfs_cmd_t *zc) +{ + return (zio_clear_fault((int)zc->zc_guid)); +} + +static int +zfs_ioc_inject_list_next(zfs_cmd_t *zc) +{ + int id = (int)zc->zc_guid; + int error; + + error = zio_inject_list_next(&id, zc->zc_name, sizeof (zc->zc_name), + &zc->zc_inject_record); + + zc->zc_guid = id; + + return (error); +} + +static int +zfs_ioc_error_log(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + size_t count = (size_t)zc->zc_nvlist_dst_size; + + if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) + return (error); + + error = spa_get_errlog(spa, (void *)(uintptr_t)zc->zc_nvlist_dst, + &count); + if (error == 0) + zc->zc_nvlist_dst_size = count; + else + zc->zc_nvlist_dst_size = spa_get_errlog_size(spa); + + spa_close(spa, FTAG); + + return (error); +} + +static int +zfs_ioc_clear(zfs_cmd_t *zc) +{ + spa_t *spa; + vdev_t *vd; + int error; + + /* + * On zpool clear we also fix up missing slogs + */ + mutex_enter(&spa_namespace_lock); + spa = spa_lookup(zc->zc_name); + if (spa == NULL) { + mutex_exit(&spa_namespace_lock); + return (SET_ERROR(EIO)); + } + if (spa_get_log_state(spa) == SPA_LOG_MISSING) { + /* we need to let spa_open/spa_load clear the chains */ + spa_set_log_state(spa, SPA_LOG_CLEAR); + } + spa->spa_last_open_failed = 0; + mutex_exit(&spa_namespace_lock); + + if (zc->zc_cookie & ZPOOL_NO_REWIND) { + error = spa_open(zc->zc_name, &spa, FTAG); + } else { + nvlist_t *policy; + nvlist_t *config = NULL; + + if (zc->zc_nvlist_src == 0) + return (SET_ERROR(EINVAL)); + + if ((error = get_nvlist(zc->zc_nvlist_src, + zc->zc_nvlist_src_size, zc->zc_iflags, &policy)) == 0) { + error = spa_open_rewind(zc->zc_name, &spa, FTAG, + policy, &config); + if (config != NULL) { + int err; + + if ((err = put_nvlist(zc, config)) != 0) + error = err; + nvlist_free(config); + } + nvlist_free(policy); + } + } + + if (error != 0) + return (error); + + spa_vdev_state_enter(spa, SCL_NONE); + + if (zc->zc_guid == 0) { + vd = NULL; + } else { + vd = spa_lookup_by_guid(spa, zc->zc_guid, B_TRUE); + if (vd == NULL) { + (void) spa_vdev_state_exit(spa, NULL, ENODEV); + spa_close(spa, FTAG); + return (SET_ERROR(ENODEV)); + } + } + + vdev_clear(spa, vd); + + (void) spa_vdev_state_exit(spa, NULL, 0); + + /* + * Resume any suspended I/Os. + */ + if (zio_resume(spa) != 0) + error = SET_ERROR(EIO); + + spa_close(spa, FTAG); + + return (error); +} + +static int +zfs_ioc_pool_reopen(zfs_cmd_t *zc) +{ + spa_t *spa; + int error; + + error = spa_open(zc->zc_name, &spa, FTAG); + if (error != 0) + return (error); + + spa_vdev_state_enter(spa, SCL_NONE); + + /* + * If a resilver is already in progress then set the + * spa_scrub_reopen flag to B_TRUE so that we don't restart + * the scan as a side effect of the reopen. Otherwise, let + * vdev_open() decided if a resilver is required. + */ + spa->spa_scrub_reopen = dsl_scan_resilvering(spa->spa_dsl_pool); + vdev_reopen(spa->spa_root_vdev); + spa->spa_scrub_reopen = B_FALSE; + + (void) spa_vdev_state_exit(spa, NULL, 0); + spa_close(spa, FTAG); + return (0); +} +/* + * inputs: + * zc_name name of filesystem + * zc_value name of origin snapshot + * + * outputs: + * zc_string name of conflicting snapshot, if there is one + */ +static int +zfs_ioc_promote(zfs_cmd_t *zc) +{ + char *cp; + + /* + * We don't need to unmount *all* the origin fs's snapshots, but + * it's easier. + */ + cp = strchr(zc->zc_value, '@'); + if (cp) + *cp = '\0'; + (void) dmu_objset_find(zc->zc_value, + zfs_unmount_snap_cb, NULL, DS_FIND_SNAPSHOTS); + return (dsl_dataset_promote(zc->zc_name, zc->zc_string)); +} + +/* + * Retrieve a single {user|group}{used|quota}@... property. + * + * inputs: + * zc_name name of filesystem + * zc_objset_type zfs_userquota_prop_t + * zc_value domain name (eg. "S-1-234-567-89") + * zc_guid RID/UID/GID + * + * outputs: + * zc_cookie property value + */ +static int +zfs_ioc_userspace_one(zfs_cmd_t *zc) +{ + zfs_sb_t *zsb; + int error; + + if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) + return (SET_ERROR(EINVAL)); + + error = zfs_sb_hold(zc->zc_name, FTAG, &zsb, B_FALSE); + if (error != 0) + return (error); + + error = zfs_userspace_one(zsb, + zc->zc_objset_type, zc->zc_value, zc->zc_guid, &zc->zc_cookie); + zfs_sb_rele(zsb, FTAG); + + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_cookie zap cursor + * zc_objset_type zfs_userquota_prop_t + * zc_nvlist_dst[_size] buffer to fill (not really an nvlist) + * + * outputs: + * zc_nvlist_dst[_size] data buffer (array of zfs_useracct_t) + * zc_cookie zap cursor + */ +static int +zfs_ioc_userspace_many(zfs_cmd_t *zc) +{ + zfs_sb_t *zsb; + int bufsize = zc->zc_nvlist_dst_size; + int error; + void *buf; + + if (bufsize <= 0) + return (SET_ERROR(ENOMEM)); + + error = zfs_sb_hold(zc->zc_name, FTAG, &zsb, B_FALSE); + if (error != 0) + return (error); + + buf = vmem_alloc(bufsize, KM_SLEEP); + + error = zfs_userspace_many(zsb, zc->zc_objset_type, &zc->zc_cookie, + buf, &zc->zc_nvlist_dst_size); + + if (error == 0) { + error = xcopyout(buf, + (void *)(uintptr_t)zc->zc_nvlist_dst, + zc->zc_nvlist_dst_size); + } + vmem_free(buf, bufsize); + zfs_sb_rele(zsb, FTAG); + + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * + * outputs: + * none + */ +static int +zfs_ioc_userspace_upgrade(zfs_cmd_t *zc) +{ + objset_t *os; + int error = 0; + zfs_sb_t *zsb; + + if (get_zfs_sb(zc->zc_name, &zsb) == 0) { + if (!dmu_objset_userused_enabled(zsb->z_os)) { + /* + * If userused is not enabled, it may be because the + * objset needs to be closed & reopened (to grow the + * objset_phys_t). Suspend/resume the fs will do that. + */ + error = zfs_suspend_fs(zsb); + if (error == 0) { + dmu_objset_refresh_ownership(zsb->z_os, + zsb); + error = zfs_resume_fs(zsb, zc->zc_name); + } + } + if (error == 0) + error = dmu_objset_userspace_upgrade(zsb->z_os); + deactivate_super(zsb->z_sb); + } else { + /* XXX kind of reading contents without owning */ + error = dmu_objset_hold(zc->zc_name, FTAG, &os); + if (error != 0) + return (error); + + error = dmu_objset_userspace_upgrade(os); + dmu_objset_rele(os, FTAG); + } + + return (error); +} + +static int +zfs_ioc_share(zfs_cmd_t *zc) +{ + return (SET_ERROR(ENOSYS)); +} + +ace_t full_access[] = { + {(uid_t)-1, ACE_ALL_PERMS, ACE_EVERYONE, 0} +}; + +/* + * inputs: + * zc_name name of containing filesystem + * zc_obj object # beyond which we want next in-use object # + * + * outputs: + * zc_obj next in-use object # + */ +static int +zfs_ioc_next_obj(zfs_cmd_t *zc) +{ + objset_t *os = NULL; + int error; + + error = dmu_objset_hold(zc->zc_name, FTAG, &os); + if (error != 0) + return (error); + + error = dmu_object_next(os, &zc->zc_obj, B_FALSE, 0); + + dmu_objset_rele(os, FTAG); + return (error); +} + +/* + * inputs: + * zc_name name of filesystem + * zc_value prefix name for snapshot + * zc_cleanup_fd cleanup-on-exit file descriptor for calling process + * + * outputs: + * zc_value short name of new snapshot + */ +static int +zfs_ioc_tmp_snapshot(zfs_cmd_t *zc) +{ + char *snap_name; + char *hold_name; + int error; + minor_t minor; + + error = zfs_onexit_fd_hold(zc->zc_cleanup_fd, &minor); + if (error != 0) + return (error); + + snap_name = kmem_asprintf("%s-%016llx", zc->zc_value, + (u_longlong_t)ddi_get_lbolt64()); + hold_name = kmem_asprintf("%%%s", zc->zc_value); + + error = dsl_dataset_snapshot_tmp(zc->zc_name, snap_name, minor, + hold_name); + if (error == 0) + (void) strcpy(zc->zc_value, snap_name); + strfree(snap_name); + strfree(hold_name); + zfs_onexit_fd_rele(zc->zc_cleanup_fd); + return (error); +} + +/* + * inputs: + * zc_name name of "to" snapshot + * zc_value name of "from" snapshot + * zc_cookie file descriptor to write diff data on + * + * outputs: + * dmu_diff_record_t's to the file descriptor + */ +static int +zfs_ioc_diff(zfs_cmd_t *zc) +{ + file_t *fp; + offset_t off; + int error; + + fp = getf(zc->zc_cookie); + if (fp == NULL) + return (SET_ERROR(EBADF)); + + off = fp->f_offset; + + error = dmu_diff(zc->zc_name, zc->zc_value, fp->f_vnode, &off); + + if (VOP_SEEK(fp->f_vnode, fp->f_offset, &off, NULL) == 0) + fp->f_offset = off; + releasef(zc->zc_cookie); + + return (error); +} + +/* + * Remove all ACL files in shares dir + */ +#ifdef HAVE_SMB_SHARE +static int +zfs_smb_acl_purge(znode_t *dzp) +{ + zap_cursor_t zc; + zap_attribute_t zap; + zfs_sb_t *zsb = ZTOZSB(dzp); + int error; + + for (zap_cursor_init(&zc, zsb->z_os, dzp->z_id); + (error = zap_cursor_retrieve(&zc, &zap)) == 0; + zap_cursor_advance(&zc)) { + if ((error = VOP_REMOVE(ZTOV(dzp), zap.za_name, kcred, + NULL, 0)) != 0) + break; + } + zap_cursor_fini(&zc); + return (error); +} +#endif /* HAVE_SMB_SHARE */ + +static int +zfs_ioc_smb_acl(zfs_cmd_t *zc) +{ +#ifdef HAVE_SMB_SHARE + vnode_t *vp; + znode_t *dzp; + vnode_t *resourcevp = NULL; + znode_t *sharedir; + zfs_sb_t *zsb; + nvlist_t *nvlist; + char *src, *target; + vattr_t vattr; + vsecattr_t vsec; + int error = 0; + + if ((error = lookupname(zc->zc_value, UIO_SYSSPACE, + NO_FOLLOW, NULL, &vp)) != 0) + return (error); + + /* Now make sure mntpnt and dataset are ZFS */ + + if (vp->v_vfsp->vfs_fstype != zfsfstype || + (strcmp((char *)refstr_value(vp->v_vfsp->vfs_resource), + zc->zc_name) != 0)) { + VN_RELE(vp); + return (SET_ERROR(EINVAL)); + } + + dzp = VTOZ(vp); + zsb = ZTOZSB(dzp); + ZFS_ENTER(zsb); + + /* + * Create share dir if its missing. + */ + mutex_enter(&zsb->z_lock); + if (zsb->z_shares_dir == 0) { + dmu_tx_t *tx; + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, TRUE, + ZFS_SHARES_DIR); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error != 0) { + dmu_tx_abort(tx); + } else { + error = zfs_create_share_dir(zsb, tx); + dmu_tx_commit(tx); + } + if (error != 0) { + mutex_exit(&zsb->z_lock); + VN_RELE(vp); + ZFS_EXIT(zsb); + return (error); + } + } + mutex_exit(&zsb->z_lock); + + ASSERT(zsb->z_shares_dir); + if ((error = zfs_zget(zsb, zsb->z_shares_dir, &sharedir)) != 0) { + VN_RELE(vp); + ZFS_EXIT(zsb); + return (error); + } + + switch (zc->zc_cookie) { + case ZFS_SMB_ACL_ADD: + vattr.va_mask = AT_MODE|AT_UID|AT_GID|AT_TYPE; + vattr.va_mode = S_IFREG|0777; + vattr.va_uid = 0; + vattr.va_gid = 0; + + vsec.vsa_mask = VSA_ACE; + vsec.vsa_aclentp = &full_access; + vsec.vsa_aclentsz = sizeof (full_access); + vsec.vsa_aclcnt = 1; + + error = VOP_CREATE(ZTOV(sharedir), zc->zc_string, + &vattr, EXCL, 0, &resourcevp, kcred, 0, NULL, &vsec); + if (resourcevp) + VN_RELE(resourcevp); + break; + + case ZFS_SMB_ACL_REMOVE: + error = VOP_REMOVE(ZTOV(sharedir), zc->zc_string, kcred, + NULL, 0); + break; + + case ZFS_SMB_ACL_RENAME: + if ((error = get_nvlist(zc->zc_nvlist_src, + zc->zc_nvlist_src_size, zc->zc_iflags, &nvlist)) != 0) { + VN_RELE(vp); + ZFS_EXIT(zsb); + return (error); + } + if (nvlist_lookup_string(nvlist, ZFS_SMB_ACL_SRC, &src) || + nvlist_lookup_string(nvlist, ZFS_SMB_ACL_TARGET, + &target)) { + VN_RELE(vp); + VN_RELE(ZTOV(sharedir)); + ZFS_EXIT(zsb); + nvlist_free(nvlist); + return (error); + } + error = VOP_RENAME(ZTOV(sharedir), src, ZTOV(sharedir), target, + kcred, NULL, 0); + nvlist_free(nvlist); + break; + + case ZFS_SMB_ACL_PURGE: + error = zfs_smb_acl_purge(sharedir); + break; + + default: + error = SET_ERROR(EINVAL); + break; + } + + VN_RELE(vp); + VN_RELE(ZTOV(sharedir)); + + ZFS_EXIT(zsb); + + return (error); +#else + return (SET_ERROR(ENOTSUP)); +#endif /* HAVE_SMB_SHARE */ +} + +/* + * innvl: { + * "holds" -> { snapname -> holdname (string), ... } + * (optional) "cleanup_fd" -> fd (int32) + * } + * + * outnvl: { + * snapname -> error value (int32) + * ... + * } + */ +/* ARGSUSED */ +static int +zfs_ioc_hold(const char *pool, nvlist_t *args, nvlist_t *errlist) +{ + nvlist_t *holds; + int cleanup_fd = -1; + int error; + minor_t minor = 0; + + error = nvlist_lookup_nvlist(args, "holds", &holds); + if (error != 0) + return (SET_ERROR(EINVAL)); + + if (nvlist_lookup_int32(args, "cleanup_fd", &cleanup_fd) == 0) { + error = zfs_onexit_fd_hold(cleanup_fd, &minor); + if (error != 0) + return (error); + } + + error = dsl_dataset_user_hold(holds, minor, errlist); + if (minor != 0) + zfs_onexit_fd_rele(cleanup_fd); + return (error); +} + +/* + * innvl is not used. + * + * outnvl: { + * holdname -> time added (uint64 seconds since epoch) + * ... + * } + */ +/* ARGSUSED */ +static int +zfs_ioc_get_holds(const char *snapname, nvlist_t *args, nvlist_t *outnvl) +{ + return (dsl_dataset_get_holds(snapname, outnvl)); +} + +/* + * innvl: { + * snapname -> { holdname, ... } + * ... + * } + * + * outnvl: { + * snapname -> error value (int32) + * ... + * } + */ +/* ARGSUSED */ +static int +zfs_ioc_release(const char *pool, nvlist_t *holds, nvlist_t *errlist) +{ + return (dsl_dataset_user_release(holds, errlist)); +} + +/* + * inputs: + * zc_guid flags (ZEVENT_NONBLOCK) + * zc_cleanup_fd zevent file descriptor + * + * outputs: + * zc_nvlist_dst next nvlist event + * zc_cookie dropped events since last get + */ +static int +zfs_ioc_events_next(zfs_cmd_t *zc) +{ + zfs_zevent_t *ze; + nvlist_t *event = NULL; + minor_t minor; + uint64_t dropped = 0; + int error; + + error = zfs_zevent_fd_hold(zc->zc_cleanup_fd, &minor, &ze); + if (error != 0) + return (error); + + do { + error = zfs_zevent_next(ze, &event, + &zc->zc_nvlist_dst_size, &dropped); + if (event != NULL) { + zc->zc_cookie = dropped; + error = put_nvlist(zc, event); + nvlist_free(event); + } + + if (zc->zc_guid & ZEVENT_NONBLOCK) + break; + + if ((error == 0) || (error != ENOENT)) + break; + + error = zfs_zevent_wait(ze); + if (error != 0) + break; + } while (1); + + zfs_zevent_fd_rele(zc->zc_cleanup_fd); + + return (error); +} + +/* + * outputs: + * zc_cookie cleared events count + */ +static int +zfs_ioc_events_clear(zfs_cmd_t *zc) +{ + int count; + + zfs_zevent_drain_all(&count); + zc->zc_cookie = count; + + return (0); +} + +/* + * inputs: + * zc_guid eid | ZEVENT_SEEK_START | ZEVENT_SEEK_END + * zc_cleanup zevent file descriptor + */ +static int +zfs_ioc_events_seek(zfs_cmd_t *zc) +{ + zfs_zevent_t *ze; + minor_t minor; + int error; + + error = zfs_zevent_fd_hold(zc->zc_cleanup_fd, &minor, &ze); + if (error != 0) + return (error); + + error = zfs_zevent_seek(ze, zc->zc_guid); + zfs_zevent_fd_rele(zc->zc_cleanup_fd); + + return (error); +} + +/* + * inputs: + * zc_name name of new filesystem or snapshot + * zc_value full name of old snapshot + * + * outputs: + * zc_cookie space in bytes + * zc_objset_type compressed space in bytes + * zc_perm_action uncompressed space in bytes + */ +static int +zfs_ioc_space_written(zfs_cmd_t *zc) +{ + int error; + dsl_pool_t *dp; + dsl_dataset_t *new, *old; + + error = dsl_pool_hold(zc->zc_name, FTAG, &dp); + if (error != 0) + return (error); + error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &new); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + error = dsl_dataset_hold(dp, zc->zc_value, FTAG, &old); + if (error != 0) { + dsl_dataset_rele(new, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = dsl_dataset_space_written(old, new, &zc->zc_cookie, + &zc->zc_objset_type, &zc->zc_perm_action); + dsl_dataset_rele(old, FTAG); + dsl_dataset_rele(new, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); +} + +/* + * innvl: { + * "firstsnap" -> snapshot name + * } + * + * outnvl: { + * "used" -> space in bytes + * "compressed" -> compressed space in bytes + * "uncompressed" -> uncompressed space in bytes + * } + */ +static int +zfs_ioc_space_snaps(const char *lastsnap, nvlist_t *innvl, nvlist_t *outnvl) +{ + int error; + dsl_pool_t *dp; + dsl_dataset_t *new, *old; + char *firstsnap; + uint64_t used, comp, uncomp; + + if (nvlist_lookup_string(innvl, "firstsnap", &firstsnap) != 0) + return (SET_ERROR(EINVAL)); + + error = dsl_pool_hold(lastsnap, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, lastsnap, FTAG, &new); + if (error == 0 && !new->ds_is_snapshot) { + dsl_dataset_rele(new, FTAG); + error = SET_ERROR(EINVAL); + } + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + error = dsl_dataset_hold(dp, firstsnap, FTAG, &old); + if (error == 0 && !old->ds_is_snapshot) { + dsl_dataset_rele(old, FTAG); + error = SET_ERROR(EINVAL); + } + if (error != 0) { + dsl_dataset_rele(new, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = dsl_dataset_space_wouldfree(old, new, &used, &comp, &uncomp); + dsl_dataset_rele(old, FTAG); + dsl_dataset_rele(new, FTAG); + dsl_pool_rele(dp, FTAG); + fnvlist_add_uint64(outnvl, "used", used); + fnvlist_add_uint64(outnvl, "compressed", comp); + fnvlist_add_uint64(outnvl, "uncompressed", uncomp); + return (error); +} + +/* + * innvl: { + * "fd" -> file descriptor to write stream to (int32) + * (optional) "fromsnap" -> full snap name to send an incremental from + * (optional) "largeblockok" -> (value ignored) + * indicates that blocks > 128KB are permitted + * (optional) "embedok" -> (value ignored) + * presence indicates DRR_WRITE_EMBEDDED records are permitted + * } + * + * outnvl is unused + */ +/* ARGSUSED */ +static int +zfs_ioc_send_new(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) +{ + int error; + offset_t off; + char *fromname = NULL; + int fd; + file_t *fp; + boolean_t largeblockok; + boolean_t embedok; + + error = nvlist_lookup_int32(innvl, "fd", &fd); + if (error != 0) + return (SET_ERROR(EINVAL)); + + (void) nvlist_lookup_string(innvl, "fromsnap", &fromname); + + largeblockok = nvlist_exists(innvl, "largeblockok"); + embedok = nvlist_exists(innvl, "embedok"); + + if ((fp = getf(fd)) == NULL) + return (SET_ERROR(EBADF)); + + off = fp->f_offset; + error = dmu_send(snapname, fromname, embedok, largeblockok, + fd, fp->f_vnode, &off); + + if (VOP_SEEK(fp->f_vnode, fp->f_offset, &off, NULL) == 0) + fp->f_offset = off; + + releasef(fd); + return (error); +} + +/* + * Determine approximately how large a zfs send stream will be -- the number + * of bytes that will be written to the fd supplied to zfs_ioc_send_new(). + * + * innvl: { + * (optional) "from" -> full snap or bookmark name to send an incremental + * from + * } + * + * outnvl: { + * "space" -> bytes of space (uint64) + * } + */ +static int +zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) +{ + dsl_pool_t *dp; + dsl_dataset_t *tosnap; + int error; + char *fromname; + uint64_t space; + + error = dsl_pool_hold(snapname, FTAG, &dp); + if (error != 0) + return (error); + + error = dsl_dataset_hold(dp, snapname, FTAG, &tosnap); + if (error != 0) { + dsl_pool_rele(dp, FTAG); + return (error); + } + + error = nvlist_lookup_string(innvl, "from", &fromname); + if (error == 0) { + if (strchr(fromname, '@') != NULL) { + /* + * If from is a snapshot, hold it and use the more + * efficient dmu_send_estimate to estimate send space + * size using deadlists. + */ + dsl_dataset_t *fromsnap; + error = dsl_dataset_hold(dp, fromname, FTAG, &fromsnap); + if (error != 0) + goto out; + error = dmu_send_estimate(tosnap, fromsnap, &space); + dsl_dataset_rele(fromsnap, FTAG); + } else if (strchr(fromname, '#') != NULL) { + /* + * If from is a bookmark, fetch the creation TXG of the + * snapshot it was created from and use that to find + * blocks that were born after it. + */ + zfs_bookmark_phys_t frombm; + + error = dsl_bookmark_lookup(dp, fromname, tosnap, + &frombm); + if (error != 0) + goto out; + error = dmu_send_estimate_from_txg(tosnap, + frombm.zbm_creation_txg, &space); + } else { + /* + * from is not properly formatted as a snapshot or + * bookmark + */ + error = SET_ERROR(EINVAL); + goto out; + } + } else { + // If estimating the size of a full send, use dmu_send_estimate + error = dmu_send_estimate(tosnap, NULL, &space); + } + + fnvlist_add_uint64(outnvl, "space", space); + +out: + dsl_dataset_rele(tosnap, FTAG); + dsl_pool_rele(dp, FTAG); + return (error); +} + +static zfs_ioc_vec_t zfs_ioc_vec[ZFS_IOC_LAST - ZFS_IOC_FIRST]; + +static void +zfs_ioctl_register_legacy(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func, + zfs_secpolicy_func_t *secpolicy, zfs_ioc_namecheck_t namecheck, + boolean_t log_history, zfs_ioc_poolcheck_t pool_check) +{ + zfs_ioc_vec_t *vec = &zfs_ioc_vec[ioc - ZFS_IOC_FIRST]; + + ASSERT3U(ioc, >=, ZFS_IOC_FIRST); + ASSERT3U(ioc, <, ZFS_IOC_LAST); + ASSERT3P(vec->zvec_legacy_func, ==, NULL); + ASSERT3P(vec->zvec_func, ==, NULL); + + vec->zvec_legacy_func = func; + vec->zvec_secpolicy = secpolicy; + vec->zvec_namecheck = namecheck; + vec->zvec_allow_log = log_history; + vec->zvec_pool_check = pool_check; +} + +/* + * See the block comment at the beginning of this file for details on + * each argument to this function. + */ +static void +zfs_ioctl_register(const char *name, zfs_ioc_t ioc, zfs_ioc_func_t *func, + zfs_secpolicy_func_t *secpolicy, zfs_ioc_namecheck_t namecheck, + zfs_ioc_poolcheck_t pool_check, boolean_t smush_outnvlist, + boolean_t allow_log) +{ + zfs_ioc_vec_t *vec = &zfs_ioc_vec[ioc - ZFS_IOC_FIRST]; + + ASSERT3U(ioc, >=, ZFS_IOC_FIRST); + ASSERT3U(ioc, <, ZFS_IOC_LAST); + ASSERT3P(vec->zvec_legacy_func, ==, NULL); + ASSERT3P(vec->zvec_func, ==, NULL); + + /* if we are logging, the name must be valid */ + ASSERT(!allow_log || namecheck != NO_NAME); + + vec->zvec_name = name; + vec->zvec_func = func; + vec->zvec_secpolicy = secpolicy; + vec->zvec_namecheck = namecheck; + vec->zvec_pool_check = pool_check; + vec->zvec_smush_outnvlist = smush_outnvlist; + vec->zvec_allow_log = allow_log; +} + +static void +zfs_ioctl_register_pool(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func, + zfs_secpolicy_func_t *secpolicy, boolean_t log_history, + zfs_ioc_poolcheck_t pool_check) +{ + zfs_ioctl_register_legacy(ioc, func, secpolicy, + POOL_NAME, log_history, pool_check); +} + +static void +zfs_ioctl_register_dataset_nolog(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func, + zfs_secpolicy_func_t *secpolicy, zfs_ioc_poolcheck_t pool_check) +{ + zfs_ioctl_register_legacy(ioc, func, secpolicy, + DATASET_NAME, B_FALSE, pool_check); +} + +static void +zfs_ioctl_register_pool_modify(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func) +{ + zfs_ioctl_register_legacy(ioc, func, zfs_secpolicy_config, + POOL_NAME, B_TRUE, POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY); +} + +static void +zfs_ioctl_register_pool_meta(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func, + zfs_secpolicy_func_t *secpolicy) +{ + zfs_ioctl_register_legacy(ioc, func, secpolicy, + NO_NAME, B_FALSE, POOL_CHECK_NONE); +} + +static void +zfs_ioctl_register_dataset_read_secpolicy(zfs_ioc_t ioc, + zfs_ioc_legacy_func_t *func, zfs_secpolicy_func_t *secpolicy) +{ + zfs_ioctl_register_legacy(ioc, func, secpolicy, + DATASET_NAME, B_FALSE, POOL_CHECK_SUSPENDED); +} + +static void +zfs_ioctl_register_dataset_read(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func) +{ + zfs_ioctl_register_dataset_read_secpolicy(ioc, func, + zfs_secpolicy_read); +} + +static void +zfs_ioctl_register_dataset_modify(zfs_ioc_t ioc, zfs_ioc_legacy_func_t *func, + zfs_secpolicy_func_t *secpolicy) +{ + zfs_ioctl_register_legacy(ioc, func, secpolicy, + DATASET_NAME, B_TRUE, POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY); +} + +static void +zfs_ioctl_init(void) +{ + zfs_ioctl_register("snapshot", ZFS_IOC_SNAPSHOT, + zfs_ioc_snapshot, zfs_secpolicy_snapshot, POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("log_history", ZFS_IOC_LOG_HISTORY, + zfs_ioc_log_history, zfs_secpolicy_log_history, NO_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_FALSE, B_FALSE); + + zfs_ioctl_register("space_snaps", ZFS_IOC_SPACE_SNAPS, + zfs_ioc_space_snaps, zfs_secpolicy_read, DATASET_NAME, + POOL_CHECK_SUSPENDED, B_FALSE, B_FALSE); + + zfs_ioctl_register("send", ZFS_IOC_SEND_NEW, + zfs_ioc_send_new, zfs_secpolicy_send_new, DATASET_NAME, + POOL_CHECK_SUSPENDED, B_FALSE, B_FALSE); + + zfs_ioctl_register("send_space", ZFS_IOC_SEND_SPACE, + zfs_ioc_send_space, zfs_secpolicy_read, DATASET_NAME, + POOL_CHECK_SUSPENDED, B_FALSE, B_FALSE); + + zfs_ioctl_register("create", ZFS_IOC_CREATE, + zfs_ioc_create, zfs_secpolicy_create_clone, DATASET_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("clone", ZFS_IOC_CLONE, + zfs_ioc_clone, zfs_secpolicy_create_clone, DATASET_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("destroy_snaps", ZFS_IOC_DESTROY_SNAPS, + zfs_ioc_destroy_snaps, zfs_secpolicy_destroy_snaps, POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("hold", ZFS_IOC_HOLD, + zfs_ioc_hold, zfs_secpolicy_hold, POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + zfs_ioctl_register("release", ZFS_IOC_RELEASE, + zfs_ioc_release, zfs_secpolicy_release, POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("get_holds", ZFS_IOC_GET_HOLDS, + zfs_ioc_get_holds, zfs_secpolicy_read, DATASET_NAME, + POOL_CHECK_SUSPENDED, B_FALSE, B_FALSE); + + zfs_ioctl_register("rollback", ZFS_IOC_ROLLBACK, + zfs_ioc_rollback, zfs_secpolicy_rollback, DATASET_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_FALSE, B_TRUE); + + zfs_ioctl_register("bookmark", ZFS_IOC_BOOKMARK, + zfs_ioc_bookmark, zfs_secpolicy_bookmark, POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + zfs_ioctl_register("get_bookmarks", ZFS_IOC_GET_BOOKMARKS, + zfs_ioc_get_bookmarks, zfs_secpolicy_read, DATASET_NAME, + POOL_CHECK_SUSPENDED, B_FALSE, B_FALSE); + + zfs_ioctl_register("destroy_bookmarks", ZFS_IOC_DESTROY_BOOKMARKS, + zfs_ioc_destroy_bookmarks, zfs_secpolicy_destroy_bookmarks, + POOL_NAME, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY, B_TRUE, B_TRUE); + + /* IOCTLS that use the legacy function signature */ + + zfs_ioctl_register_legacy(ZFS_IOC_POOL_FREEZE, zfs_ioc_pool_freeze, + zfs_secpolicy_config, NO_NAME, B_FALSE, POOL_CHECK_READONLY); + + zfs_ioctl_register_pool(ZFS_IOC_POOL_CREATE, zfs_ioc_pool_create, + zfs_secpolicy_config, B_TRUE, POOL_CHECK_NONE); + zfs_ioctl_register_pool_modify(ZFS_IOC_POOL_SCAN, + zfs_ioc_pool_scan); + zfs_ioctl_register_pool_modify(ZFS_IOC_POOL_UPGRADE, + zfs_ioc_pool_upgrade); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_ADD, + zfs_ioc_vdev_add); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_REMOVE, + zfs_ioc_vdev_remove); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_SET_STATE, + zfs_ioc_vdev_set_state); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_ATTACH, + zfs_ioc_vdev_attach); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_DETACH, + zfs_ioc_vdev_detach); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_SETPATH, + zfs_ioc_vdev_setpath); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_SETFRU, + zfs_ioc_vdev_setfru); + zfs_ioctl_register_pool_modify(ZFS_IOC_POOL_SET_PROPS, + zfs_ioc_pool_set_props); + zfs_ioctl_register_pool_modify(ZFS_IOC_VDEV_SPLIT, + zfs_ioc_vdev_split); + zfs_ioctl_register_pool_modify(ZFS_IOC_POOL_REGUID, + zfs_ioc_pool_reguid); + + zfs_ioctl_register_pool_meta(ZFS_IOC_POOL_CONFIGS, + zfs_ioc_pool_configs, zfs_secpolicy_none); + zfs_ioctl_register_pool_meta(ZFS_IOC_POOL_TRYIMPORT, + zfs_ioc_pool_tryimport, zfs_secpolicy_config); + zfs_ioctl_register_pool_meta(ZFS_IOC_INJECT_FAULT, + zfs_ioc_inject_fault, zfs_secpolicy_inject); + zfs_ioctl_register_pool_meta(ZFS_IOC_CLEAR_FAULT, + zfs_ioc_clear_fault, zfs_secpolicy_inject); + zfs_ioctl_register_pool_meta(ZFS_IOC_INJECT_LIST_NEXT, + zfs_ioc_inject_list_next, zfs_secpolicy_inject); + + /* + * pool destroy, and export don't log the history as part of + * zfsdev_ioctl, but rather zfs_ioc_pool_export + * does the logging of those commands. + */ + zfs_ioctl_register_pool(ZFS_IOC_POOL_DESTROY, zfs_ioc_pool_destroy, + zfs_secpolicy_config, B_FALSE, POOL_CHECK_SUSPENDED); + zfs_ioctl_register_pool(ZFS_IOC_POOL_EXPORT, zfs_ioc_pool_export, + zfs_secpolicy_config, B_FALSE, POOL_CHECK_SUSPENDED); + + zfs_ioctl_register_pool(ZFS_IOC_POOL_STATS, zfs_ioc_pool_stats, + zfs_secpolicy_read, B_FALSE, POOL_CHECK_NONE); + zfs_ioctl_register_pool(ZFS_IOC_POOL_GET_PROPS, zfs_ioc_pool_get_props, + zfs_secpolicy_read, B_FALSE, POOL_CHECK_NONE); + + zfs_ioctl_register_pool(ZFS_IOC_ERROR_LOG, zfs_ioc_error_log, + zfs_secpolicy_inject, B_FALSE, POOL_CHECK_SUSPENDED); + zfs_ioctl_register_pool(ZFS_IOC_DSOBJ_TO_DSNAME, + zfs_ioc_dsobj_to_dsname, + zfs_secpolicy_diff, B_FALSE, POOL_CHECK_SUSPENDED); + zfs_ioctl_register_pool(ZFS_IOC_POOL_GET_HISTORY, + zfs_ioc_pool_get_history, + zfs_secpolicy_config, B_FALSE, POOL_CHECK_SUSPENDED); + + zfs_ioctl_register_pool(ZFS_IOC_POOL_IMPORT, zfs_ioc_pool_import, + zfs_secpolicy_config, B_TRUE, POOL_CHECK_NONE); + + zfs_ioctl_register_pool(ZFS_IOC_CLEAR, zfs_ioc_clear, + zfs_secpolicy_config, B_TRUE, POOL_CHECK_NONE); + zfs_ioctl_register_pool(ZFS_IOC_POOL_REOPEN, zfs_ioc_pool_reopen, + zfs_secpolicy_config, B_TRUE, POOL_CHECK_SUSPENDED); + + zfs_ioctl_register_dataset_read(ZFS_IOC_SPACE_WRITTEN, + zfs_ioc_space_written); + zfs_ioctl_register_dataset_read(ZFS_IOC_OBJSET_RECVD_PROPS, + zfs_ioc_objset_recvd_props); + zfs_ioctl_register_dataset_read(ZFS_IOC_NEXT_OBJ, + zfs_ioc_next_obj); + zfs_ioctl_register_dataset_read(ZFS_IOC_GET_FSACL, + zfs_ioc_get_fsacl); + zfs_ioctl_register_dataset_read(ZFS_IOC_OBJSET_STATS, + zfs_ioc_objset_stats); + zfs_ioctl_register_dataset_read(ZFS_IOC_OBJSET_ZPLPROPS, + zfs_ioc_objset_zplprops); + zfs_ioctl_register_dataset_read(ZFS_IOC_DATASET_LIST_NEXT, + zfs_ioc_dataset_list_next); + zfs_ioctl_register_dataset_read(ZFS_IOC_SNAPSHOT_LIST_NEXT, + zfs_ioc_snapshot_list_next); + zfs_ioctl_register_dataset_read(ZFS_IOC_SEND_PROGRESS, + zfs_ioc_send_progress); + + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_DIFF, + zfs_ioc_diff, zfs_secpolicy_diff); + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_OBJ_TO_STATS, + zfs_ioc_obj_to_stats, zfs_secpolicy_diff); + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_OBJ_TO_PATH, + zfs_ioc_obj_to_path, zfs_secpolicy_diff); + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_USERSPACE_ONE, + zfs_ioc_userspace_one, zfs_secpolicy_userspace_one); + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_USERSPACE_MANY, + zfs_ioc_userspace_many, zfs_secpolicy_userspace_many); + zfs_ioctl_register_dataset_read_secpolicy(ZFS_IOC_SEND, + zfs_ioc_send, zfs_secpolicy_send); + + zfs_ioctl_register_dataset_modify(ZFS_IOC_SET_PROP, zfs_ioc_set_prop, + zfs_secpolicy_none); + zfs_ioctl_register_dataset_modify(ZFS_IOC_DESTROY, zfs_ioc_destroy, + zfs_secpolicy_destroy); + zfs_ioctl_register_dataset_modify(ZFS_IOC_RENAME, zfs_ioc_rename, + zfs_secpolicy_rename); + zfs_ioctl_register_dataset_modify(ZFS_IOC_RECV, zfs_ioc_recv, + zfs_secpolicy_recv); + zfs_ioctl_register_dataset_modify(ZFS_IOC_PROMOTE, zfs_ioc_promote, + zfs_secpolicy_promote); + zfs_ioctl_register_dataset_modify(ZFS_IOC_INHERIT_PROP, + zfs_ioc_inherit_prop, zfs_secpolicy_inherit_prop); + zfs_ioctl_register_dataset_modify(ZFS_IOC_SET_FSACL, zfs_ioc_set_fsacl, + zfs_secpolicy_set_fsacl); + + zfs_ioctl_register_dataset_nolog(ZFS_IOC_SHARE, zfs_ioc_share, + zfs_secpolicy_share, POOL_CHECK_NONE); + zfs_ioctl_register_dataset_nolog(ZFS_IOC_SMB_ACL, zfs_ioc_smb_acl, + zfs_secpolicy_smb_acl, POOL_CHECK_NONE); + zfs_ioctl_register_dataset_nolog(ZFS_IOC_USERSPACE_UPGRADE, + zfs_ioc_userspace_upgrade, zfs_secpolicy_userspace_upgrade, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY); + zfs_ioctl_register_dataset_nolog(ZFS_IOC_TMP_SNAPSHOT, + zfs_ioc_tmp_snapshot, zfs_secpolicy_tmp_snapshot, + POOL_CHECK_SUSPENDED | POOL_CHECK_READONLY); + + /* + * ZoL functions + */ + zfs_ioctl_register_legacy(ZFS_IOC_EVENTS_NEXT, zfs_ioc_events_next, + zfs_secpolicy_config, NO_NAME, B_FALSE, POOL_CHECK_NONE); + zfs_ioctl_register_legacy(ZFS_IOC_EVENTS_CLEAR, zfs_ioc_events_clear, + zfs_secpolicy_config, NO_NAME, B_FALSE, POOL_CHECK_NONE); + zfs_ioctl_register_legacy(ZFS_IOC_EVENTS_SEEK, zfs_ioc_events_seek, + zfs_secpolicy_config, NO_NAME, B_FALSE, POOL_CHECK_NONE); +} + +int +pool_status_check(const char *name, zfs_ioc_namecheck_t type, + zfs_ioc_poolcheck_t check) +{ + spa_t *spa; + int error; + + ASSERT(type == POOL_NAME || type == DATASET_NAME); + + if (check & POOL_CHECK_NONE) + return (0); + + error = spa_open(name, &spa, FTAG); + if (error == 0) { + if ((check & POOL_CHECK_SUSPENDED) && spa_suspended(spa)) + error = SET_ERROR(EAGAIN); + else if ((check & POOL_CHECK_READONLY) && !spa_writeable(spa)) + error = SET_ERROR(EROFS); + spa_close(spa, FTAG); + } + return (error); +} + +static void * +zfsdev_get_state_impl(minor_t minor, enum zfsdev_state_type which) +{ + zfsdev_state_t *zs; + + for (zs = zfsdev_state_list; zs != NULL; zs = zs->zs_next) { + if (zs->zs_minor == minor) { + smp_rmb(); + switch (which) { + case ZST_ONEXIT: + return (zs->zs_onexit); + case ZST_ZEVENT: + return (zs->zs_zevent); + case ZST_ALL: + return (zs); + } + } + } + + return (NULL); +} + +void * +zfsdev_get_state(minor_t minor, enum zfsdev_state_type which) +{ + void *ptr; + + ptr = zfsdev_get_state_impl(minor, which); + + return (ptr); +} + +int +zfsdev_getminor(struct file *filp, minor_t *minorp) +{ + zfsdev_state_t *zs, *fpd; + + ASSERT(filp != NULL); + ASSERT(!MUTEX_HELD(&zfsdev_state_lock)); + + fpd = filp->private_data; + if (fpd == NULL) + return (EBADF); + + mutex_enter(&zfsdev_state_lock); + + for (zs = zfsdev_state_list; zs != NULL; zs = zs->zs_next) { + + if (zs->zs_minor == -1) + continue; + + if (fpd == zs) { + *minorp = fpd->zs_minor; + mutex_exit(&zfsdev_state_lock); + return (0); + } + } + + mutex_exit(&zfsdev_state_lock); + + return (EBADF); +} + +/* + * Find a free minor number. The zfsdev_state_list is expected to + * be short since it is only a list of currently open file handles. + */ +minor_t +zfsdev_minor_alloc(void) +{ + static minor_t last_minor = 0; + minor_t m; + + ASSERT(MUTEX_HELD(&zfsdev_state_lock)); + + for (m = last_minor + 1; m != last_minor; m++) { + if (m > ZFSDEV_MAX_MINOR) + m = 1; + if (zfsdev_get_state_impl(m, ZST_ALL) == NULL) { + last_minor = m; + return (m); + } + } + + return (0); +} + +static int +zfsdev_state_init(struct file *filp) +{ + zfsdev_state_t *zs, *zsprev = NULL; + minor_t minor; + boolean_t newzs = B_FALSE; + + ASSERT(MUTEX_HELD(&zfsdev_state_lock)); + + minor = zfsdev_minor_alloc(); + if (minor == 0) + return (SET_ERROR(ENXIO)); + + for (zs = zfsdev_state_list; zs != NULL; zs = zs->zs_next) { + if (zs->zs_minor == -1) + break; + zsprev = zs; + } + + if (!zs) { + zs = kmem_zalloc(sizeof (zfsdev_state_t), KM_SLEEP); + newzs = B_TRUE; + } + + zs->zs_file = filp; + filp->private_data = zs; + + zfs_onexit_init((zfs_onexit_t **)&zs->zs_onexit); + zfs_zevent_init((zfs_zevent_t **)&zs->zs_zevent); + + + /* + * In order to provide for lock-free concurrent read access + * to the minor list in zfsdev_get_state_impl(), new entries + * must be completely written before linking them into the + * list whereas existing entries are already linked; the last + * operation must be updating zs_minor (from -1 to the new + * value). + */ + if (newzs) { + zs->zs_minor = minor; + smp_wmb(); + zsprev->zs_next = zs; + } else { + smp_wmb(); + zs->zs_minor = minor; + } + + return (0); +} + +static int +zfsdev_state_destroy(struct file *filp) +{ + zfsdev_state_t *zs; + + ASSERT(MUTEX_HELD(&zfsdev_state_lock)); + ASSERT(filp->private_data != NULL); + + zs = filp->private_data; + zs->zs_minor = -1; + zfs_onexit_destroy(zs->zs_onexit); + zfs_zevent_destroy(zs->zs_zevent); + + return (0); +} + +static int +zfsdev_open(struct inode *ino, struct file *filp) +{ + int error; + + mutex_enter(&zfsdev_state_lock); + error = zfsdev_state_init(filp); + mutex_exit(&zfsdev_state_lock); + + return (-error); +} + +static int +zfsdev_release(struct inode *ino, struct file *filp) +{ + int error; + + mutex_enter(&zfsdev_state_lock); + error = zfsdev_state_destroy(filp); + mutex_exit(&zfsdev_state_lock); + + return (-error); +} + +static long +zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) +{ + zfs_cmd_t *zc; + uint_t vecnum; + int error, rc, flag = 0; + const zfs_ioc_vec_t *vec; + char *saved_poolname = NULL; + nvlist_t *innvl = NULL; + fstrans_cookie_t cookie; + + vecnum = cmd - ZFS_IOC_FIRST; + if (vecnum >= sizeof (zfs_ioc_vec) / sizeof (zfs_ioc_vec[0])) + return (-SET_ERROR(EINVAL)); + vec = &zfs_ioc_vec[vecnum]; + + /* + * The registered ioctl list may be sparse, verify that either + * a normal or legacy handler are registered. + */ + if (vec->zvec_func == NULL && vec->zvec_legacy_func == NULL) + return (-SET_ERROR(EINVAL)); + + zc = kmem_zalloc(sizeof (zfs_cmd_t), KM_SLEEP); + + error = ddi_copyin((void *)arg, zc, sizeof (zfs_cmd_t), flag); + if (error != 0) { + error = SET_ERROR(EFAULT); + goto out; + } + + zc->zc_iflags = flag & FKIOCTL; + if (zc->zc_nvlist_src_size != 0) { + error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, + zc->zc_iflags, &innvl); + if (error != 0) + goto out; + } + + /* + * Ensure that all pool/dataset names are valid before we pass down to + * the lower layers. + */ + zc->zc_name[sizeof (zc->zc_name) - 1] = '\0'; + switch (vec->zvec_namecheck) { + case POOL_NAME: + if (pool_namecheck(zc->zc_name, NULL, NULL) != 0) + error = SET_ERROR(EINVAL); + else + error = pool_status_check(zc->zc_name, + vec->zvec_namecheck, vec->zvec_pool_check); + break; + + case DATASET_NAME: + if (dataset_namecheck(zc->zc_name, NULL, NULL) != 0) + error = SET_ERROR(EINVAL); + else + error = pool_status_check(zc->zc_name, + vec->zvec_namecheck, vec->zvec_pool_check); + break; + + case NO_NAME: + break; + } + + + if (error == 0 && !(flag & FKIOCTL)) + error = vec->zvec_secpolicy(zc, innvl, CRED()); + + if (error != 0) + goto out; + + /* legacy ioctls can modify zc_name */ + saved_poolname = strdup(zc->zc_name); + if (saved_poolname == NULL) { + error = SET_ERROR(ENOMEM); + goto out; + } else { + saved_poolname[strcspn(saved_poolname, "/@#")] = '\0'; + } + + if (vec->zvec_func != NULL) { + nvlist_t *outnvl; + int puterror = 0; + spa_t *spa; + nvlist_t *lognv = NULL; + + ASSERT(vec->zvec_legacy_func == NULL); + + /* + * Add the innvl to the lognv before calling the func, + * in case the func changes the innvl. + */ + if (vec->zvec_allow_log) { + lognv = fnvlist_alloc(); + fnvlist_add_string(lognv, ZPOOL_HIST_IOCTL, + vec->zvec_name); + if (!nvlist_empty(innvl)) { + fnvlist_add_nvlist(lognv, ZPOOL_HIST_INPUT_NVL, + innvl); + } + } + + outnvl = fnvlist_alloc(); + cookie = spl_fstrans_mark(); + error = vec->zvec_func(zc->zc_name, innvl, outnvl); + spl_fstrans_unmark(cookie); + + if (error == 0 && vec->zvec_allow_log && + spa_open(zc->zc_name, &spa, FTAG) == 0) { + if (!nvlist_empty(outnvl)) { + fnvlist_add_nvlist(lognv, ZPOOL_HIST_OUTPUT_NVL, + outnvl); + } + (void) spa_history_log_nvl(spa, lognv); + spa_close(spa, FTAG); + } + fnvlist_free(lognv); + + if (!nvlist_empty(outnvl) || zc->zc_nvlist_dst_size != 0) { + int smusherror = 0; + if (vec->zvec_smush_outnvlist) { + smusherror = nvlist_smush(outnvl, + zc->zc_nvlist_dst_size); + } + if (smusherror == 0) + puterror = put_nvlist(zc, outnvl); + } + + if (puterror != 0) + error = puterror; + + nvlist_free(outnvl); + } else { + cookie = spl_fstrans_mark(); + error = vec->zvec_legacy_func(zc); + spl_fstrans_unmark(cookie); + } + +out: + nvlist_free(innvl); + rc = ddi_copyout(zc, (void *)arg, sizeof (zfs_cmd_t), flag); + if (error == 0 && rc != 0) + error = SET_ERROR(EFAULT); + if (error == 0 && vec->zvec_allow_log) { + char *s = tsd_get(zfs_allow_log_key); + if (s != NULL) + strfree(s); + (void) tsd_set(zfs_allow_log_key, saved_poolname); + } else { + if (saved_poolname != NULL) + strfree(saved_poolname); + } + + kmem_free(zc, sizeof (zfs_cmd_t)); + return (-error); +} + +#ifdef CONFIG_COMPAT +static long +zfsdev_compat_ioctl(struct file *filp, unsigned cmd, unsigned long arg) +{ + return (zfsdev_ioctl(filp, cmd, arg)); +} +#else +#define zfsdev_compat_ioctl NULL +#endif + +static const struct file_operations zfsdev_fops = { + .open = zfsdev_open, + .release = zfsdev_release, + .unlocked_ioctl = zfsdev_ioctl, + .compat_ioctl = zfsdev_compat_ioctl, + .owner = THIS_MODULE, +}; + +static struct miscdevice zfs_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = ZFS_DRIVER, + .fops = &zfsdev_fops, +}; + +static int +zfs_attach(void) +{ + int error; + + mutex_init(&zfsdev_state_lock, NULL, MUTEX_DEFAULT, NULL); + zfsdev_state_list = kmem_zalloc(sizeof (zfsdev_state_t), KM_SLEEP); + zfsdev_state_list->zs_minor = -1; + + error = misc_register(&zfs_misc); + if (error != 0) { + printk(KERN_INFO "ZFS: misc_register() failed %d\n", error); + return (error); + } + + return (0); +} + +static void +zfs_detach(void) +{ + zfsdev_state_t *zs, *zsprev = NULL; + + misc_deregister(&zfs_misc); + mutex_destroy(&zfsdev_state_lock); + + for (zs = zfsdev_state_list; zs != NULL; zs = zs->zs_next) { + if (zsprev) + kmem_free(zsprev, sizeof (zfsdev_state_t)); + zsprev = zs; + } + if (zsprev) + kmem_free(zsprev, sizeof (zfsdev_state_t)); +} + +static void +zfs_allow_log_destroy(void *arg) +{ + char *poolname = arg; + strfree(poolname); +} + +#ifdef DEBUG +#define ZFS_DEBUG_STR " (DEBUG mode)" +#else +#define ZFS_DEBUG_STR "" +#endif + +static int __init +_init(void) +{ + int error; + + error = -vn_set_pwd("/"); + if (error) { + printk(KERN_NOTICE + "ZFS: Warning unable to set pwd to '/': %d\n", error); + return (error); + } + + spa_init(FREAD | FWRITE); + zfs_init(); + + if ((error = -zvol_init()) != 0) + goto out1; + + zfs_ioctl_init(); + + if ((error = zfs_attach()) != 0) + goto out2; + + tsd_create(&zfs_fsyncer_key, NULL); + tsd_create(&rrw_tsd_key, rrw_tsd_destroy); + tsd_create(&zfs_allow_log_key, zfs_allow_log_destroy); + + printk(KERN_NOTICE "ZFS: Loaded module v%s-%s%s, " + "ZFS pool version %s, ZFS filesystem version %s\n", + ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR, + SPA_VERSION_STRING, ZPL_VERSION_STRING); +#ifndef CONFIG_FS_POSIX_ACL + printk(KERN_NOTICE "ZFS: Posix ACLs disabled by kernel\n"); +#endif /* CONFIG_FS_POSIX_ACL */ + + return (0); + +out2: + (void) zvol_fini(); +out1: + zfs_fini(); + spa_fini(); + printk(KERN_NOTICE "ZFS: Failed to Load ZFS Filesystem v%s-%s%s" + ", rc = %d\n", ZFS_META_VERSION, ZFS_META_RELEASE, + ZFS_DEBUG_STR, error); + + return (error); +} + +static void __exit +_fini(void) +{ + zfs_detach(); + zvol_fini(); + zfs_fini(); + spa_fini(); + + tsd_destroy(&zfs_fsyncer_key); + tsd_destroy(&rrw_tsd_key); + tsd_destroy(&zfs_allow_log_key); + + printk(KERN_NOTICE "ZFS: Unloaded module v%s-%s%s\n", + ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR); +} + +#ifdef HAVE_SPL +module_init(_init); +module_exit(_fini); + +MODULE_DESCRIPTION("ZFS"); +MODULE_AUTHOR(ZFS_META_AUTHOR); +MODULE_LICENSE(ZFS_META_LICENSE); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); +#endif /* HAVE_SPL */ --- linux-4.4.0.orig/zfs/module/zfs/zfs_log.c +++ linux-4.4.0/zfs/module/zfs/zfs_log.c @@ -0,0 +1,688 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * These zfs_log_* functions must be called within a dmu tx, in one + * of 2 contexts depending on zilog->z_replay: + * + * Non replay mode + * --------------- + * We need to record the transaction so that if it is committed to + * the Intent Log then it can be replayed. An intent log transaction + * structure (itx_t) is allocated and all the information necessary to + * possibly replay the transaction is saved in it. The itx is then assigned + * a sequence number and inserted in the in-memory list anchored in the zilog. + * + * Replay mode + * ----------- + * We need to mark the intent log record as replayed in the log header. + * This is done in the same transaction as the replay so that they + * commit atomically. + */ + +int +zfs_log_create_txtype(zil_create_t type, vsecattr_t *vsecp, vattr_t *vap) +{ + int isxvattr = (vap->va_mask & ATTR_XVATTR); + switch (type) { + case Z_FILE: + if (vsecp == NULL && !isxvattr) + return (TX_CREATE); + if (vsecp && isxvattr) + return (TX_CREATE_ACL_ATTR); + if (vsecp) + return (TX_CREATE_ACL); + else + return (TX_CREATE_ATTR); + /*NOTREACHED*/ + case Z_DIR: + if (vsecp == NULL && !isxvattr) + return (TX_MKDIR); + if (vsecp && isxvattr) + return (TX_MKDIR_ACL_ATTR); + if (vsecp) + return (TX_MKDIR_ACL); + else + return (TX_MKDIR_ATTR); + case Z_XATTRDIR: + return (TX_MKXATTR); + } + ASSERT(0); + return (TX_MAX_TYPE); +} + +/* + * build up the log data necessary for logging xvattr_t + * First lr_attr_t is initialized. following the lr_attr_t + * is the mapsize and attribute bitmap copied from the xvattr_t. + * Following the bitmap and bitmapsize two 64 bit words are reserved + * for the create time which may be set. Following the create time + * records a single 64 bit integer which has the bits to set on + * replay for the xvattr. + */ +static void +zfs_log_xvattr(lr_attr_t *lrattr, xvattr_t *xvap) +{ + uint32_t *bitmap; + uint64_t *attrs; + uint64_t *crtime; + xoptattr_t *xoap; + void *scanstamp; + int i; + + xoap = xva_getxoptattr(xvap); + ASSERT(xoap); + + lrattr->lr_attr_masksize = xvap->xva_mapsize; + bitmap = &lrattr->lr_attr_bitmap; + for (i = 0; i != xvap->xva_mapsize; i++, bitmap++) { + *bitmap = xvap->xva_reqattrmap[i]; + } + + /* Now pack the attributes up in a single uint64_t */ + attrs = (uint64_t *)bitmap; + crtime = attrs + 1; + scanstamp = (caddr_t)(crtime + 2); + *attrs = 0; + if (XVA_ISSET_REQ(xvap, XAT_READONLY)) + *attrs |= (xoap->xoa_readonly == 0) ? 0 : + XAT0_READONLY; + if (XVA_ISSET_REQ(xvap, XAT_HIDDEN)) + *attrs |= (xoap->xoa_hidden == 0) ? 0 : + XAT0_HIDDEN; + if (XVA_ISSET_REQ(xvap, XAT_SYSTEM)) + *attrs |= (xoap->xoa_system == 0) ? 0 : + XAT0_SYSTEM; + if (XVA_ISSET_REQ(xvap, XAT_ARCHIVE)) + *attrs |= (xoap->xoa_archive == 0) ? 0 : + XAT0_ARCHIVE; + if (XVA_ISSET_REQ(xvap, XAT_IMMUTABLE)) + *attrs |= (xoap->xoa_immutable == 0) ? 0 : + XAT0_IMMUTABLE; + if (XVA_ISSET_REQ(xvap, XAT_NOUNLINK)) + *attrs |= (xoap->xoa_nounlink == 0) ? 0 : + XAT0_NOUNLINK; + if (XVA_ISSET_REQ(xvap, XAT_APPENDONLY)) + *attrs |= (xoap->xoa_appendonly == 0) ? 0 : + XAT0_APPENDONLY; + if (XVA_ISSET_REQ(xvap, XAT_OPAQUE)) + *attrs |= (xoap->xoa_opaque == 0) ? 0 : + XAT0_APPENDONLY; + if (XVA_ISSET_REQ(xvap, XAT_NODUMP)) + *attrs |= (xoap->xoa_nodump == 0) ? 0 : + XAT0_NODUMP; + if (XVA_ISSET_REQ(xvap, XAT_AV_QUARANTINED)) + *attrs |= (xoap->xoa_av_quarantined == 0) ? 0 : + XAT0_AV_QUARANTINED; + if (XVA_ISSET_REQ(xvap, XAT_AV_MODIFIED)) + *attrs |= (xoap->xoa_av_modified == 0) ? 0 : + XAT0_AV_MODIFIED; + if (XVA_ISSET_REQ(xvap, XAT_CREATETIME)) + ZFS_TIME_ENCODE(&xoap->xoa_createtime, crtime); + if (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP)) + bcopy(xoap->xoa_av_scanstamp, scanstamp, AV_SCANSTAMP_SZ); + if (XVA_ISSET_REQ(xvap, XAT_REPARSE)) + *attrs |= (xoap->xoa_reparse == 0) ? 0 : + XAT0_REPARSE; + if (XVA_ISSET_REQ(xvap, XAT_OFFLINE)) + *attrs |= (xoap->xoa_offline == 0) ? 0 : + XAT0_OFFLINE; + if (XVA_ISSET_REQ(xvap, XAT_SPARSE)) + *attrs |= (xoap->xoa_sparse == 0) ? 0 : + XAT0_SPARSE; +} + +static void * +zfs_log_fuid_ids(zfs_fuid_info_t *fuidp, void *start) +{ + zfs_fuid_t *zfuid; + uint64_t *fuidloc = start; + + /* First copy in the ACE FUIDs */ + for (zfuid = list_head(&fuidp->z_fuids); zfuid; + zfuid = list_next(&fuidp->z_fuids, zfuid)) { + *fuidloc++ = zfuid->z_logfuid; + } + return (fuidloc); +} + + +static void * +zfs_log_fuid_domains(zfs_fuid_info_t *fuidp, void *start) +{ + zfs_fuid_domain_t *zdomain; + + /* now copy in the domain info, if any */ + if (fuidp->z_domain_str_sz != 0) { + for (zdomain = list_head(&fuidp->z_domains); zdomain; + zdomain = list_next(&fuidp->z_domains, zdomain)) { + bcopy((void *)zdomain->z_domain, start, + strlen(zdomain->z_domain) + 1); + start = (caddr_t)start + + strlen(zdomain->z_domain) + 1; + } + } + return (start); +} + +/* + * Handles TX_CREATE, TX_CREATE_ATTR, TX_MKDIR, TX_MKDIR_ATTR and + * TK_MKXATTR transactions. + * + * TX_CREATE and TX_MKDIR are standard creates, but they may have FUID + * domain information appended prior to the name. In this case the + * uid/gid in the log record will be a log centric FUID. + * + * TX_CREATE_ACL_ATTR and TX_MKDIR_ACL_ATTR handle special creates that + * may contain attributes, ACL and optional fuid information. + * + * TX_CREATE_ACL and TX_MKDIR_ACL handle special creates that specify + * and ACL and normal users/groups in the ACEs. + * + * There may be an optional xvattr attribute information similar + * to zfs_log_setattr. + * + * Also, after the file name "domain" strings may be appended. + */ +void +zfs_log_create(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name, vsecattr_t *vsecp, + zfs_fuid_info_t *fuidp, vattr_t *vap) +{ + itx_t *itx; + lr_create_t *lr; + lr_acl_create_t *lracl; + size_t aclsize = 0; + size_t xvatsize = 0; + size_t txsize; + xvattr_t *xvap = (xvattr_t *)vap; + void *end; + size_t lrsize; + size_t namesize = strlen(name) + 1; + size_t fuidsz = 0; + + if (zil_replaying(zilog, tx)) + return; + + /* + * If we have FUIDs present then add in space for + * domains and ACE fuid's if any. + */ + if (fuidp) { + fuidsz += fuidp->z_domain_str_sz; + fuidsz += fuidp->z_fuid_cnt * sizeof (uint64_t); + } + + if (vap->va_mask & ATTR_XVATTR) + xvatsize = ZIL_XVAT_SIZE(xvap->xva_mapsize); + + if ((int)txtype == TX_CREATE_ATTR || (int)txtype == TX_MKDIR_ATTR || + (int)txtype == TX_CREATE || (int)txtype == TX_MKDIR || + (int)txtype == TX_MKXATTR) { + txsize = sizeof (*lr) + namesize + fuidsz + xvatsize; + lrsize = sizeof (*lr); + } else { + txsize = + sizeof (lr_acl_create_t) + namesize + fuidsz + + ZIL_ACE_LENGTH(aclsize) + xvatsize; + lrsize = sizeof (lr_acl_create_t); + } + + itx = zil_itx_create(txtype, txsize); + + lr = (lr_create_t *)&itx->itx_lr; + lr->lr_doid = dzp->z_id; + lr->lr_foid = zp->z_id; + lr->lr_mode = zp->z_mode; + if (!IS_EPHEMERAL(zp->z_uid)) { + lr->lr_uid = (uint64_t)zp->z_uid; + } else { + lr->lr_uid = fuidp->z_fuid_owner; + } + if (!IS_EPHEMERAL(zp->z_gid)) { + lr->lr_gid = (uint64_t)zp->z_gid; + } else { + lr->lr_gid = fuidp->z_fuid_group; + } + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen, + sizeof (uint64_t)); + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)), + lr->lr_crtime, sizeof (uint64_t) * 2); + + if (sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(ZTOZSB(zp)), &lr->lr_rdev, + sizeof (lr->lr_rdev)) != 0) + lr->lr_rdev = 0; + + /* + * Fill in xvattr info if any + */ + if (vap->va_mask & ATTR_XVATTR) { + zfs_log_xvattr((lr_attr_t *)((caddr_t)lr + lrsize), xvap); + end = (caddr_t)lr + lrsize + xvatsize; + } else { + end = (caddr_t)lr + lrsize; + } + + /* Now fill in any ACL info */ + + if (vsecp) { + lracl = (lr_acl_create_t *)&itx->itx_lr; + lracl->lr_aclcnt = vsecp->vsa_aclcnt; + lracl->lr_acl_bytes = aclsize; + lracl->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0; + lracl->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0; + if (vsecp->vsa_aclflags & VSA_ACE_ACLFLAGS) + lracl->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags; + else + lracl->lr_acl_flags = 0; + + bcopy(vsecp->vsa_aclentp, end, aclsize); + end = (caddr_t)end + ZIL_ACE_LENGTH(aclsize); + } + + /* drop in FUID info */ + if (fuidp) { + end = zfs_log_fuid_ids(fuidp, end); + end = zfs_log_fuid_domains(fuidp, end); + } + /* + * Now place file name in log record + */ + bcopy(name, end, namesize); + + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles both TX_REMOVE and TX_RMDIR transactions. + */ +void +zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, char *name, uint64_t foid) +{ + itx_t *itx; + lr_remove_t *lr; + size_t namesize = strlen(name) + 1; + + if (zil_replaying(zilog, tx)) + return; + + itx = zil_itx_create(txtype, sizeof (*lr) + namesize); + lr = (lr_remove_t *)&itx->itx_lr; + lr->lr_doid = dzp->z_id; + bcopy(name, (char *)(lr + 1), namesize); + + itx->itx_oid = foid; + + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles TX_LINK transactions. + */ +void +zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name) +{ + itx_t *itx; + lr_link_t *lr; + size_t namesize = strlen(name) + 1; + + if (zil_replaying(zilog, tx)) + return; + + itx = zil_itx_create(txtype, sizeof (*lr) + namesize); + lr = (lr_link_t *)&itx->itx_lr; + lr->lr_doid = dzp->z_id; + lr->lr_link_obj = zp->z_id; + bcopy(name, (char *)(lr + 1), namesize); + + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles TX_SYMLINK transactions. + */ +void +zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *dzp, znode_t *zp, char *name, char *link) +{ + itx_t *itx; + lr_create_t *lr; + size_t namesize = strlen(name) + 1; + size_t linksize = strlen(link) + 1; + + if (zil_replaying(zilog, tx)) + return; + + itx = zil_itx_create(txtype, sizeof (*lr) + namesize + linksize); + lr = (lr_create_t *)&itx->itx_lr; + lr->lr_doid = dzp->z_id; + lr->lr_foid = zp->z_id; + lr->lr_uid = zp->z_uid; + lr->lr_gid = zp->z_gid; + lr->lr_mode = zp->z_mode; + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen, + sizeof (uint64_t)); + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)), + lr->lr_crtime, sizeof (uint64_t) * 2); + bcopy(name, (char *)(lr + 1), namesize); + bcopy(link, (char *)(lr + 1) + namesize, linksize); + + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles TX_RENAME transactions. + */ +void +zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, + znode_t *sdzp, char *sname, znode_t *tdzp, char *dname, znode_t *szp) +{ + itx_t *itx; + lr_rename_t *lr; + size_t snamesize = strlen(sname) + 1; + size_t dnamesize = strlen(dname) + 1; + + if (zil_replaying(zilog, tx)) + return; + + itx = zil_itx_create(txtype, sizeof (*lr) + snamesize + dnamesize); + lr = (lr_rename_t *)&itx->itx_lr; + lr->lr_sdoid = sdzp->z_id; + lr->lr_tdoid = tdzp->z_id; + bcopy(sname, (char *)(lr + 1), snamesize); + bcopy(dname, (char *)(lr + 1) + snamesize, dnamesize); + itx->itx_oid = szp->z_id; + + zil_itx_assign(zilog, itx, tx); +} + +/* + * zfs_log_write() handles TX_WRITE transactions. The specified callback is + * called as soon as the write is on stable storage (be it via a DMU sync or a + * ZIL commit). + */ +long zfs_immediate_write_sz = 32768; + +void +zfs_log_write(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, offset_t off, ssize_t resid, int ioflag, + zil_callback_t callback, void *callback_data) +{ + itx_wr_state_t write_state; + boolean_t slogging; + uintptr_t fsync_cnt; + ssize_t immediate_write_sz; + + if (zil_replaying(zilog, tx) || zp->z_unlinked) { + if (callback != NULL) + callback(callback_data); + return; + } + + immediate_write_sz = (zilog->zl_logbias == ZFS_LOGBIAS_THROUGHPUT) + ? 0 : (ssize_t)zfs_immediate_write_sz; + + slogging = spa_has_slogs(zilog->zl_spa) && + (zilog->zl_logbias == ZFS_LOGBIAS_LATENCY); + if (resid > immediate_write_sz && !slogging && resid <= zp->z_blksz) + write_state = WR_INDIRECT; + else if (ioflag & (FSYNC | FDSYNC)) + write_state = WR_COPIED; + else + write_state = WR_NEED_COPY; + + if ((fsync_cnt = (uintptr_t)tsd_get(zfs_fsyncer_key)) != 0) { + (void) tsd_set(zfs_fsyncer_key, (void *)(fsync_cnt - 1)); + } + + while (resid) { + itx_t *itx; + lr_write_t *lr; + ssize_t len; + + /* + * If the write would overflow the largest block then split it. + */ + if (write_state != WR_INDIRECT && resid > ZIL_MAX_LOG_DATA) + len = SPA_OLD_MAXBLOCKSIZE >> 1; + else + len = resid; + + itx = zil_itx_create(txtype, sizeof (*lr) + + (write_state == WR_COPIED ? len : 0)); + lr = (lr_write_t *)&itx->itx_lr; + if (write_state == WR_COPIED && dmu_read(ZTOZSB(zp)->z_os, + zp->z_id, off, len, lr + 1, DMU_READ_NO_PREFETCH) != 0) { + zil_itx_destroy(itx); + itx = zil_itx_create(txtype, sizeof (*lr)); + lr = (lr_write_t *)&itx->itx_lr; + write_state = WR_NEED_COPY; + } + + itx->itx_wr_state = write_state; + if (write_state == WR_NEED_COPY) + itx->itx_sod += len; + lr->lr_foid = zp->z_id; + lr->lr_offset = off; + lr->lr_length = len; + lr->lr_blkoff = 0; + BP_ZERO(&lr->lr_blkptr); + + itx->itx_private = ZTOZSB(zp); + + if (!(ioflag & (FSYNC | FDSYNC)) && (zp->z_sync_cnt == 0) && + (fsync_cnt == 0)) + itx->itx_sync = B_FALSE; + + itx->itx_callback = callback; + itx->itx_callback_data = callback_data; + zil_itx_assign(zilog, itx, tx); + + off += len; + resid -= len; + } +} + +/* + * Handles TX_TRUNCATE transactions. + */ +void +zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, uint64_t off, uint64_t len) +{ + itx_t *itx; + lr_truncate_t *lr; + + if (zil_replaying(zilog, tx) || zp->z_unlinked) + return; + + itx = zil_itx_create(txtype, sizeof (*lr)); + lr = (lr_truncate_t *)&itx->itx_lr; + lr->lr_foid = zp->z_id; + lr->lr_offset = off; + lr->lr_length = len; + + itx->itx_sync = (zp->z_sync_cnt != 0); + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles TX_SETATTR transactions. + */ +void +zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype, + znode_t *zp, vattr_t *vap, uint_t mask_applied, zfs_fuid_info_t *fuidp) +{ + itx_t *itx; + lr_setattr_t *lr; + xvattr_t *xvap = (xvattr_t *)vap; + size_t recsize = sizeof (lr_setattr_t); + void *start; + + if (zil_replaying(zilog, tx) || zp->z_unlinked) + return; + + /* + * If XVATTR set, then log record size needs to allow + * for lr_attr_t + xvattr mask, mapsize and create time + * plus actual attribute values + */ + if (vap->va_mask & ATTR_XVATTR) + recsize = sizeof (*lr) + ZIL_XVAT_SIZE(xvap->xva_mapsize); + + if (fuidp) + recsize += fuidp->z_domain_str_sz; + + itx = zil_itx_create(txtype, recsize); + lr = (lr_setattr_t *)&itx->itx_lr; + lr->lr_foid = zp->z_id; + lr->lr_mask = (uint64_t)mask_applied; + lr->lr_mode = (uint64_t)vap->va_mode; + if ((mask_applied & ATTR_UID) && IS_EPHEMERAL(vap->va_uid)) + lr->lr_uid = fuidp->z_fuid_owner; + else + lr->lr_uid = (uint64_t)vap->va_uid; + + if ((mask_applied & ATTR_GID) && IS_EPHEMERAL(vap->va_gid)) + lr->lr_gid = fuidp->z_fuid_group; + else + lr->lr_gid = (uint64_t)vap->va_gid; + + lr->lr_size = (uint64_t)vap->va_size; + ZFS_TIME_ENCODE(&vap->va_atime, lr->lr_atime); + ZFS_TIME_ENCODE(&vap->va_mtime, lr->lr_mtime); + start = (lr_setattr_t *)(lr + 1); + if (vap->va_mask & ATTR_XVATTR) { + zfs_log_xvattr((lr_attr_t *)start, xvap); + start = (caddr_t)start + ZIL_XVAT_SIZE(xvap->xva_mapsize); + } + + /* + * Now stick on domain information if any on end + */ + + if (fuidp) + (void) zfs_log_fuid_domains(fuidp, start); + + itx->itx_sync = (zp->z_sync_cnt != 0); + zil_itx_assign(zilog, itx, tx); +} + +/* + * Handles TX_ACL transactions. + */ +void +zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp, + vsecattr_t *vsecp, zfs_fuid_info_t *fuidp) +{ + itx_t *itx; + lr_acl_v0_t *lrv0; + lr_acl_t *lr; + int txtype; + int lrsize; + size_t txsize; + size_t aclbytes = vsecp->vsa_aclentsz; + + if (zil_replaying(zilog, tx) || zp->z_unlinked) + return; + + txtype = (ZTOZSB(zp)->z_version < ZPL_VERSION_FUID) ? + TX_ACL_V0 : TX_ACL; + + if (txtype == TX_ACL) + lrsize = sizeof (*lr); + else + lrsize = sizeof (*lrv0); + + txsize = lrsize + + ((txtype == TX_ACL) ? ZIL_ACE_LENGTH(aclbytes) : aclbytes) + + (fuidp ? fuidp->z_domain_str_sz : 0) + + sizeof (uint64_t) * (fuidp ? fuidp->z_fuid_cnt : 0); + + itx = zil_itx_create(txtype, txsize); + + lr = (lr_acl_t *)&itx->itx_lr; + lr->lr_foid = zp->z_id; + if (txtype == TX_ACL) { + lr->lr_acl_bytes = aclbytes; + lr->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0; + lr->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0; + if (vsecp->vsa_mask & VSA_ACE_ACLFLAGS) + lr->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags; + else + lr->lr_acl_flags = 0; + } + lr->lr_aclcnt = (uint64_t)vsecp->vsa_aclcnt; + + if (txtype == TX_ACL_V0) { + lrv0 = (lr_acl_v0_t *)lr; + bcopy(vsecp->vsa_aclentp, (ace_t *)(lrv0 + 1), aclbytes); + } else { + void *start = (ace_t *)(lr + 1); + + bcopy(vsecp->vsa_aclentp, start, aclbytes); + + start = (caddr_t)start + ZIL_ACE_LENGTH(aclbytes); + + if (fuidp) { + start = zfs_log_fuid_ids(fuidp, start); + (void) zfs_log_fuid_domains(fuidp, start); + } + } + + itx->itx_sync = (zp->z_sync_cnt != 0); + zil_itx_assign(zilog, itx, tx); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_immediate_write_sz, long, 0644); +MODULE_PARM_DESC(zfs_immediate_write_sz, "Largest data block to write to zil"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_onexit.c +++ linux-4.4.0/zfs/module/zfs/zfs_onexit.c @@ -0,0 +1,255 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ZFS kernel routines may add/delete callback routines to be invoked + * upon process exit (triggered via the close operation from the /dev/zfs + * driver). + * + * These cleanup callbacks are intended to allow for the accumulation + * of kernel state across multiple ioctls. User processes participate + * simply by opening ZFS_DEV. This causes the ZFS driver to do create + * some private data for the file descriptor and generating a unique + * minor number. The process then passes along that file descriptor to + * each ioctl that might have a cleanup operation. + * + * Consumers of the onexit routines should call zfs_onexit_fd_hold() early + * on to validate the given fd and add a reference to its file table entry. + * This allows the consumer to do its work and then add a callback, knowing + * that zfs_onexit_add_cb() won't fail with EBADF. When finished, consumers + * should call zfs_onexit_fd_rele(). + * + * A simple example is zfs_ioc_recv(), where we might create an AVL tree + * with dataset/GUID mappings and then reuse that tree on subsequent + * zfs_ioc_recv() calls. + * + * On the first zfs_ioc_recv() call, dmu_recv_stream() will kmem_alloc() + * the AVL tree and pass it along with a callback function to + * zfs_onexit_add_cb(). The zfs_onexit_add_cb() routine will register the + * callback and return an action handle. + * + * The action handle is then passed from user space to subsequent + * zfs_ioc_recv() calls, so that dmu_recv_stream() can fetch its AVL tree + * by calling zfs_onexit_cb_data() with the device minor number and + * action handle. + * + * If the user process exits abnormally, the callback is invoked implicitly + * as part of the driver close operation. Once the user space process is + * finished with the accumulated kernel state, it can also just call close(2) + * on the cleanup fd to trigger the cleanup callback. + */ + +void +zfs_onexit_init(zfs_onexit_t **zop) +{ + zfs_onexit_t *zo; + + zo = *zop = kmem_zalloc(sizeof (zfs_onexit_t), KM_SLEEP); + mutex_init(&zo->zo_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&zo->zo_actions, sizeof (zfs_onexit_action_node_t), + offsetof(zfs_onexit_action_node_t, za_link)); +} + +void +zfs_onexit_destroy(zfs_onexit_t *zo) +{ + zfs_onexit_action_node_t *ap; + + mutex_enter(&zo->zo_lock); + while ((ap = list_head(&zo->zo_actions)) != NULL) { + list_remove(&zo->zo_actions, ap); + mutex_exit(&zo->zo_lock); + ap->za_func(ap->za_data); + kmem_free(ap, sizeof (zfs_onexit_action_node_t)); + mutex_enter(&zo->zo_lock); + } + mutex_exit(&zo->zo_lock); + + list_destroy(&zo->zo_actions); + mutex_destroy(&zo->zo_lock); + kmem_free(zo, sizeof (zfs_onexit_t)); +} + +static int +zfs_onexit_minor_to_state(minor_t minor, zfs_onexit_t **zo) +{ + *zo = zfsdev_get_state(minor, ZST_ONEXIT); + if (*zo == NULL) + return (SET_ERROR(EBADF)); + + return (0); +} + +/* + * Consumers might need to operate by minor number instead of fd, since + * they might be running in another thread (e.g. txg_sync_thread). Callers + * of this function must call zfs_onexit_fd_rele() when they're finished + * using the minor number. + */ +int +zfs_onexit_fd_hold(int fd, minor_t *minorp) +{ + file_t *fp; + zfs_onexit_t *zo; + int error; + + fp = getf(fd); + if (fp == NULL) + return (SET_ERROR(EBADF)); + + error = zfsdev_getminor(fp->f_file, minorp); + if (error == 0) + error = zfs_onexit_minor_to_state(*minorp, &zo); + + if (error) + zfs_onexit_fd_rele(fd); + + return (error); +} + +void +zfs_onexit_fd_rele(int fd) +{ + releasef(fd); +} + +/* + * Add a callback to be invoked when the calling process exits. + */ +int +zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, + uint64_t *action_handle) +{ + zfs_onexit_t *zo; + zfs_onexit_action_node_t *ap; + int error; + + error = zfs_onexit_minor_to_state(minor, &zo); + if (error) + return (error); + + ap = kmem_alloc(sizeof (zfs_onexit_action_node_t), KM_SLEEP); + list_link_init(&ap->za_link); + ap->za_func = func; + ap->za_data = data; + + mutex_enter(&zo->zo_lock); + list_insert_tail(&zo->zo_actions, ap); + mutex_exit(&zo->zo_lock); + if (action_handle) + *action_handle = (uint64_t)(uintptr_t)ap; + + return (0); +} + +static zfs_onexit_action_node_t * +zfs_onexit_find_cb(zfs_onexit_t *zo, uint64_t action_handle) +{ + zfs_onexit_action_node_t *match; + zfs_onexit_action_node_t *ap; + list_t *l; + + ASSERT(MUTEX_HELD(&zo->zo_lock)); + + match = (zfs_onexit_action_node_t *)(uintptr_t)action_handle; + l = &zo->zo_actions; + for (ap = list_head(l); ap != NULL; ap = list_next(l, ap)) { + if (match == ap) + break; + } + return (ap); +} + +/* + * Delete the callback, triggering it first if 'fire' is set. + */ +int +zfs_onexit_del_cb(minor_t minor, uint64_t action_handle, boolean_t fire) +{ + zfs_onexit_t *zo; + zfs_onexit_action_node_t *ap; + int error; + + error = zfs_onexit_minor_to_state(minor, &zo); + if (error) + return (error); + + mutex_enter(&zo->zo_lock); + ap = zfs_onexit_find_cb(zo, action_handle); + if (ap != NULL) { + list_remove(&zo->zo_actions, ap); + mutex_exit(&zo->zo_lock); + if (fire) + ap->za_func(ap->za_data); + kmem_free(ap, sizeof (zfs_onexit_action_node_t)); + } else { + mutex_exit(&zo->zo_lock); + error = SET_ERROR(ENOENT); + } + + return (error); +} + +/* + * Return the data associated with this callback. This allows consumers + * of the cleanup-on-exit interfaces to stash kernel data across system + * calls, knowing that it will be cleaned up if the calling process exits. + */ +int +zfs_onexit_cb_data(minor_t minor, uint64_t action_handle, void **data) +{ + zfs_onexit_t *zo; + zfs_onexit_action_node_t *ap; + int error; + + *data = NULL; + + error = zfs_onexit_minor_to_state(minor, &zo); + if (error) + return (error); + + mutex_enter(&zo->zo_lock); + ap = zfs_onexit_find_cb(zo, action_handle); + if (ap != NULL) + *data = ap->za_data; + else + error = SET_ERROR(ENOENT); + mutex_exit(&zo->zo_lock); + + return (error); +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_replay.c +++ linux-4.4.0/zfs/module/zfs/zfs_replay.c @@ -0,0 +1,936 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 Cyril Plisko. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Functions to replay ZFS intent log (ZIL) records + * The functions are called through a function vector (zfs_replay_vector) + * which is indexed by the transaction type. + */ + +static void +zfs_init_vattr(vattr_t *vap, uint64_t mask, uint64_t mode, + uint64_t uid, uint64_t gid, uint64_t rdev, uint64_t nodeid) +{ + bzero(vap, sizeof (*vap)); + vap->va_mask = (uint_t)mask; + vap->va_type = IFTOVT(mode); + vap->va_mode = mode; + vap->va_uid = (uid_t)(IS_EPHEMERAL(uid)) ? -1 : uid; + vap->va_gid = (gid_t)(IS_EPHEMERAL(gid)) ? -1 : gid; + vap->va_rdev = rdev; + vap->va_nodeid = nodeid; +} + +/* ARGSUSED */ +static int +zfs_replay_error(zfs_sb_t *zsb, lr_t *lr, boolean_t byteswap) +{ + return (SET_ERROR(ENOTSUP)); +} + +static void +zfs_replay_xvattr(lr_attr_t *lrattr, xvattr_t *xvap) +{ + xoptattr_t *xoap = NULL; + uint64_t *attrs; + uint64_t *crtime; + uint32_t *bitmap; + void *scanstamp; + int i; + + xvap->xva_vattr.va_mask |= ATTR_XVATTR; + if ((xoap = xva_getxoptattr(xvap)) == NULL) { + xvap->xva_vattr.va_mask &= ~ATTR_XVATTR; /* shouldn't happen */ + return; + } + + ASSERT(lrattr->lr_attr_masksize == xvap->xva_mapsize); + + bitmap = &lrattr->lr_attr_bitmap; + for (i = 0; i != lrattr->lr_attr_masksize; i++, bitmap++) + xvap->xva_reqattrmap[i] = *bitmap; + + attrs = (uint64_t *)(lrattr + lrattr->lr_attr_masksize - 1); + crtime = attrs + 1; + scanstamp = (caddr_t)(crtime + 2); + + if (XVA_ISSET_REQ(xvap, XAT_HIDDEN)) + xoap->xoa_hidden = ((*attrs & XAT0_HIDDEN) != 0); + if (XVA_ISSET_REQ(xvap, XAT_SYSTEM)) + xoap->xoa_system = ((*attrs & XAT0_SYSTEM) != 0); + if (XVA_ISSET_REQ(xvap, XAT_ARCHIVE)) + xoap->xoa_archive = ((*attrs & XAT0_ARCHIVE) != 0); + if (XVA_ISSET_REQ(xvap, XAT_READONLY)) + xoap->xoa_readonly = ((*attrs & XAT0_READONLY) != 0); + if (XVA_ISSET_REQ(xvap, XAT_IMMUTABLE)) + xoap->xoa_immutable = ((*attrs & XAT0_IMMUTABLE) != 0); + if (XVA_ISSET_REQ(xvap, XAT_NOUNLINK)) + xoap->xoa_nounlink = ((*attrs & XAT0_NOUNLINK) != 0); + if (XVA_ISSET_REQ(xvap, XAT_APPENDONLY)) + xoap->xoa_appendonly = ((*attrs & XAT0_APPENDONLY) != 0); + if (XVA_ISSET_REQ(xvap, XAT_NODUMP)) + xoap->xoa_nodump = ((*attrs & XAT0_NODUMP) != 0); + if (XVA_ISSET_REQ(xvap, XAT_OPAQUE)) + xoap->xoa_opaque = ((*attrs & XAT0_OPAQUE) != 0); + if (XVA_ISSET_REQ(xvap, XAT_AV_MODIFIED)) + xoap->xoa_av_modified = ((*attrs & XAT0_AV_MODIFIED) != 0); + if (XVA_ISSET_REQ(xvap, XAT_AV_QUARANTINED)) + xoap->xoa_av_quarantined = + ((*attrs & XAT0_AV_QUARANTINED) != 0); + if (XVA_ISSET_REQ(xvap, XAT_CREATETIME)) + ZFS_TIME_DECODE(&xoap->xoa_createtime, crtime); + if (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP)) + bcopy(scanstamp, xoap->xoa_av_scanstamp, AV_SCANSTAMP_SZ); + if (XVA_ISSET_REQ(xvap, XAT_REPARSE)) + xoap->xoa_reparse = ((*attrs & XAT0_REPARSE) != 0); + if (XVA_ISSET_REQ(xvap, XAT_OFFLINE)) + xoap->xoa_offline = ((*attrs & XAT0_OFFLINE) != 0); + if (XVA_ISSET_REQ(xvap, XAT_SPARSE)) + xoap->xoa_sparse = ((*attrs & XAT0_SPARSE) != 0); +} + +static int +zfs_replay_domain_cnt(uint64_t uid, uint64_t gid) +{ + uint64_t uid_idx; + uint64_t gid_idx; + int domcnt = 0; + + uid_idx = FUID_INDEX(uid); + gid_idx = FUID_INDEX(gid); + if (uid_idx) + domcnt++; + if (gid_idx > 0 && gid_idx != uid_idx) + domcnt++; + + return (domcnt); +} + +static void * +zfs_replay_fuid_domain_common(zfs_fuid_info_t *fuid_infop, void *start, + int domcnt) +{ + int i; + + for (i = 0; i != domcnt; i++) { + fuid_infop->z_domain_table[i] = start; + start = (caddr_t)start + strlen(start) + 1; + } + + return (start); +} + +/* + * Set the uid/gid in the fuid_info structure. + */ +static void +zfs_replay_fuid_ugid(zfs_fuid_info_t *fuid_infop, uint64_t uid, uint64_t gid) +{ + /* + * If owner or group are log specific FUIDs then slurp up + * domain information and build zfs_fuid_info_t + */ + if (IS_EPHEMERAL(uid)) + fuid_infop->z_fuid_owner = uid; + + if (IS_EPHEMERAL(gid)) + fuid_infop->z_fuid_group = gid; +} + +/* + * Load fuid domains into fuid_info_t + */ +static zfs_fuid_info_t * +zfs_replay_fuid_domain(void *buf, void **end, uint64_t uid, uint64_t gid) +{ + int domcnt; + + zfs_fuid_info_t *fuid_infop; + + fuid_infop = zfs_fuid_info_alloc(); + + domcnt = zfs_replay_domain_cnt(uid, gid); + + if (domcnt == 0) + return (fuid_infop); + + fuid_infop->z_domain_table = + kmem_zalloc(domcnt * sizeof (char **), KM_SLEEP); + + zfs_replay_fuid_ugid(fuid_infop, uid, gid); + + fuid_infop->z_domain_cnt = domcnt; + *end = zfs_replay_fuid_domain_common(fuid_infop, buf, domcnt); + return (fuid_infop); +} + +/* + * load zfs_fuid_t's and fuid_domains into fuid_info_t + */ +static zfs_fuid_info_t * +zfs_replay_fuids(void *start, void **end, int idcnt, int domcnt, uint64_t uid, + uint64_t gid) +{ + uint64_t *log_fuid = (uint64_t *)start; + zfs_fuid_info_t *fuid_infop; + int i; + + fuid_infop = zfs_fuid_info_alloc(); + fuid_infop->z_domain_cnt = domcnt; + + fuid_infop->z_domain_table = + kmem_zalloc(domcnt * sizeof (char **), KM_SLEEP); + + for (i = 0; i != idcnt; i++) { + zfs_fuid_t *zfuid; + + zfuid = kmem_alloc(sizeof (zfs_fuid_t), KM_SLEEP); + zfuid->z_logfuid = *log_fuid; + zfuid->z_id = -1; + zfuid->z_domidx = 0; + list_insert_tail(&fuid_infop->z_fuids, zfuid); + log_fuid++; + } + + zfs_replay_fuid_ugid(fuid_infop, uid, gid); + + *end = zfs_replay_fuid_domain_common(fuid_infop, log_fuid, domcnt); + return (fuid_infop); +} + +static void +zfs_replay_swap_attrs(lr_attr_t *lrattr) +{ + /* swap the lr_attr structure */ + byteswap_uint32_array(lrattr, sizeof (*lrattr)); + /* swap the bitmap */ + byteswap_uint32_array(lrattr + 1, (lrattr->lr_attr_masksize - 1) * + sizeof (uint32_t)); + /* swap the attributes, create time + 64 bit word for attributes */ + byteswap_uint64_array((caddr_t)(lrattr + 1) + (sizeof (uint32_t) * + (lrattr->lr_attr_masksize - 1)), 3 * sizeof (uint64_t)); +} + +/* + * Replay file create with optional ACL, xvattr information as well + * as option FUID information. + */ +static int +zfs_replay_create_acl(zfs_sb_t *zsb, lr_acl_create_t *lracl, boolean_t byteswap) +{ + char *name = NULL; /* location determined later */ + lr_create_t *lr = (lr_create_t *)lracl; + znode_t *dzp; + struct inode *ip = NULL; + xvattr_t xva; + int vflg = 0; + vsecattr_t vsec = { 0 }; + lr_attr_t *lrattr; + void *aclstart; + void *fuidstart; + size_t xvatlen = 0; + uint64_t txtype; + int error; + + txtype = (lr->lr_common.lrc_txtype & ~TX_CI); + if (byteswap) { + byteswap_uint64_array(lracl, sizeof (*lracl)); + if (txtype == TX_CREATE_ACL_ATTR || + txtype == TX_MKDIR_ACL_ATTR) { + lrattr = (lr_attr_t *)(caddr_t)(lracl + 1); + zfs_replay_swap_attrs(lrattr); + xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize); + } + + aclstart = (caddr_t)(lracl + 1) + xvatlen; + zfs_ace_byteswap(aclstart, lracl->lr_acl_bytes, B_FALSE); + /* swap fuids */ + if (lracl->lr_fuidcnt) { + byteswap_uint64_array((caddr_t)aclstart + + ZIL_ACE_LENGTH(lracl->lr_acl_bytes), + lracl->lr_fuidcnt * sizeof (uint64_t)); + } + } + + if ((error = zfs_zget(zsb, lr->lr_doid, &dzp)) != 0) + return (error); + + xva_init(&xva); + zfs_init_vattr(&xva.xva_vattr, ATTR_MODE | ATTR_UID | ATTR_GID, + lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid); + + /* + * All forms of zfs create (create, mkdir, mkxattrdir, symlink) + * eventually end up in zfs_mknode(), which assigns the object's + * creation time and generation number. The generic zfs_create() + * doesn't have either concept, so we smuggle the values inside + * the vattr's otherwise unused va_ctime and va_nblocks fields. + */ + ZFS_TIME_DECODE(&xva.xva_vattr.va_ctime, lr->lr_crtime); + xva.xva_vattr.va_nblocks = lr->lr_gen; + + error = dmu_object_info(zsb->z_os, lr->lr_foid, NULL); + if (error != ENOENT) + goto bail; + + if (lr->lr_common.lrc_txtype & TX_CI) + vflg |= FIGNORECASE; + switch (txtype) { + case TX_CREATE_ACL: + aclstart = (caddr_t)(lracl + 1); + fuidstart = (caddr_t)aclstart + + ZIL_ACE_LENGTH(lracl->lr_acl_bytes); + zsb->z_fuid_replay = zfs_replay_fuids(fuidstart, + (void *)&name, lracl->lr_fuidcnt, lracl->lr_domcnt, + lr->lr_uid, lr->lr_gid); + /*FALLTHROUGH*/ + case TX_CREATE_ACL_ATTR: + if (name == NULL) { + lrattr = (lr_attr_t *)(caddr_t)(lracl + 1); + xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize); + xva.xva_vattr.va_mask |= ATTR_XVATTR; + zfs_replay_xvattr(lrattr, &xva); + } + vsec.vsa_mask = VSA_ACE | VSA_ACE_ACLFLAGS; + vsec.vsa_aclentp = (caddr_t)(lracl + 1) + xvatlen; + vsec.vsa_aclcnt = lracl->lr_aclcnt; + vsec.vsa_aclentsz = lracl->lr_acl_bytes; + vsec.vsa_aclflags = lracl->lr_acl_flags; + if (zsb->z_fuid_replay == NULL) { + fuidstart = (caddr_t)(lracl + 1) + xvatlen + + ZIL_ACE_LENGTH(lracl->lr_acl_bytes); + zsb->z_fuid_replay = + zfs_replay_fuids(fuidstart, + (void *)&name, lracl->lr_fuidcnt, lracl->lr_domcnt, + lr->lr_uid, lr->lr_gid); + } + + error = zfs_create(ZTOI(dzp), name, &xva.xva_vattr, + 0, 0, &ip, kcred, vflg, &vsec); + break; + case TX_MKDIR_ACL: + aclstart = (caddr_t)(lracl + 1); + fuidstart = (caddr_t)aclstart + + ZIL_ACE_LENGTH(lracl->lr_acl_bytes); + zsb->z_fuid_replay = zfs_replay_fuids(fuidstart, + (void *)&name, lracl->lr_fuidcnt, lracl->lr_domcnt, + lr->lr_uid, lr->lr_gid); + /*FALLTHROUGH*/ + case TX_MKDIR_ACL_ATTR: + if (name == NULL) { + lrattr = (lr_attr_t *)(caddr_t)(lracl + 1); + xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize); + zfs_replay_xvattr(lrattr, &xva); + } + vsec.vsa_mask = VSA_ACE | VSA_ACE_ACLFLAGS; + vsec.vsa_aclentp = (caddr_t)(lracl + 1) + xvatlen; + vsec.vsa_aclcnt = lracl->lr_aclcnt; + vsec.vsa_aclentsz = lracl->lr_acl_bytes; + vsec.vsa_aclflags = lracl->lr_acl_flags; + if (zsb->z_fuid_replay == NULL) { + fuidstart = (caddr_t)(lracl + 1) + xvatlen + + ZIL_ACE_LENGTH(lracl->lr_acl_bytes); + zsb->z_fuid_replay = + zfs_replay_fuids(fuidstart, + (void *)&name, lracl->lr_fuidcnt, lracl->lr_domcnt, + lr->lr_uid, lr->lr_gid); + } + error = zfs_mkdir(ZTOI(dzp), name, &xva.xva_vattr, + &ip, kcred, vflg, &vsec); + break; + default: + error = SET_ERROR(ENOTSUP); + } + +bail: + if (error == 0 && ip != NULL) + iput(ip); + + iput(ZTOI(dzp)); + + if (zsb->z_fuid_replay) + zfs_fuid_info_free(zsb->z_fuid_replay); + zsb->z_fuid_replay = NULL; + + return (error); +} + +static int +zfs_replay_create(zfs_sb_t *zsb, lr_create_t *lr, boolean_t byteswap) +{ + char *name = NULL; /* location determined later */ + char *link; /* symlink content follows name */ + znode_t *dzp; + struct inode *ip = NULL; + xvattr_t xva; + int vflg = 0; + size_t lrsize = sizeof (lr_create_t); + lr_attr_t *lrattr; + void *start; + size_t xvatlen; + uint64_t txtype; + int error; + + txtype = (lr->lr_common.lrc_txtype & ~TX_CI); + if (byteswap) { + byteswap_uint64_array(lr, sizeof (*lr)); + if (txtype == TX_CREATE_ATTR || txtype == TX_MKDIR_ATTR) + zfs_replay_swap_attrs((lr_attr_t *)(lr + 1)); + } + + + if ((error = zfs_zget(zsb, lr->lr_doid, &dzp)) != 0) + return (error); + + xva_init(&xva); + zfs_init_vattr(&xva.xva_vattr, ATTR_MODE | ATTR_UID | ATTR_GID, + lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid); + + /* + * All forms of zfs create (create, mkdir, mkxattrdir, symlink) + * eventually end up in zfs_mknode(), which assigns the object's + * creation time and generation number. The generic zfs_create() + * doesn't have either concept, so we smuggle the values inside + * the vattr's otherwise unused va_ctime and va_nblocks fields. + */ + ZFS_TIME_DECODE(&xva.xva_vattr.va_ctime, lr->lr_crtime); + xva.xva_vattr.va_nblocks = lr->lr_gen; + + error = dmu_object_info(zsb->z_os, lr->lr_foid, NULL); + if (error != ENOENT) + goto out; + + if (lr->lr_common.lrc_txtype & TX_CI) + vflg |= FIGNORECASE; + + /* + * Symlinks don't have fuid info, and CIFS never creates + * symlinks. + * + * The _ATTR versions will grab the fuid info in their subcases. + */ + if ((int)lr->lr_common.lrc_txtype != TX_SYMLINK && + (int)lr->lr_common.lrc_txtype != TX_MKDIR_ATTR && + (int)lr->lr_common.lrc_txtype != TX_CREATE_ATTR) { + start = (lr + 1); + zsb->z_fuid_replay = + zfs_replay_fuid_domain(start, &start, + lr->lr_uid, lr->lr_gid); + } + + switch (txtype) { + case TX_CREATE_ATTR: + lrattr = (lr_attr_t *)(caddr_t)(lr + 1); + xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize); + zfs_replay_xvattr((lr_attr_t *)((caddr_t)lr + lrsize), &xva); + start = (caddr_t)(lr + 1) + xvatlen; + zsb->z_fuid_replay = + zfs_replay_fuid_domain(start, &start, + lr->lr_uid, lr->lr_gid); + name = (char *)start; + + /*FALLTHROUGH*/ + case TX_CREATE: + if (name == NULL) + name = (char *)start; + + error = zfs_create(ZTOI(dzp), name, &xva.xva_vattr, + 0, 0, &ip, kcred, vflg, NULL); + break; + case TX_MKDIR_ATTR: + lrattr = (lr_attr_t *)(caddr_t)(lr + 1); + xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize); + zfs_replay_xvattr((lr_attr_t *)((caddr_t)lr + lrsize), &xva); + start = (caddr_t)(lr + 1) + xvatlen; + zsb->z_fuid_replay = + zfs_replay_fuid_domain(start, &start, + lr->lr_uid, lr->lr_gid); + name = (char *)start; + + /*FALLTHROUGH*/ + case TX_MKDIR: + if (name == NULL) + name = (char *)(lr + 1); + + error = zfs_mkdir(ZTOI(dzp), name, &xva.xva_vattr, + &ip, kcred, vflg, NULL); + break; + case TX_MKXATTR: + error = zfs_make_xattrdir(dzp, &xva.xva_vattr, &ip, kcred); + break; + case TX_SYMLINK: + name = (char *)(lr + 1); + link = name + strlen(name) + 1; + error = zfs_symlink(ZTOI(dzp), name, &xva.xva_vattr, + link, &ip, kcred, vflg); + break; + default: + error = SET_ERROR(ENOTSUP); + } + +out: + if (error == 0 && ip != NULL) + iput(ip); + + iput(ZTOI(dzp)); + + if (zsb->z_fuid_replay) + zfs_fuid_info_free(zsb->z_fuid_replay); + zsb->z_fuid_replay = NULL; + return (error); +} + +static int +zfs_replay_remove(zfs_sb_t *zsb, lr_remove_t *lr, boolean_t byteswap) +{ + char *name = (char *)(lr + 1); /* name follows lr_remove_t */ + znode_t *dzp; + int error; + int vflg = 0; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_doid, &dzp)) != 0) + return (error); + + if (lr->lr_common.lrc_txtype & TX_CI) + vflg |= FIGNORECASE; + + switch ((int)lr->lr_common.lrc_txtype) { + case TX_REMOVE: + error = zfs_remove(ZTOI(dzp), name, kcred); + break; + case TX_RMDIR: + error = zfs_rmdir(ZTOI(dzp), name, NULL, kcred, vflg); + break; + default: + error = SET_ERROR(ENOTSUP); + } + + iput(ZTOI(dzp)); + + return (error); +} + +static int +zfs_replay_link(zfs_sb_t *zsb, lr_link_t *lr, boolean_t byteswap) +{ + char *name = (char *)(lr + 1); /* name follows lr_link_t */ + znode_t *dzp, *zp; + int error; + int vflg = 0; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_doid, &dzp)) != 0) + return (error); + + if ((error = zfs_zget(zsb, lr->lr_link_obj, &zp)) != 0) { + iput(ZTOI(dzp)); + return (error); + } + + if (lr->lr_common.lrc_txtype & TX_CI) + vflg |= FIGNORECASE; + + error = zfs_link(ZTOI(dzp), ZTOI(zp), name, kcred); + + iput(ZTOI(zp)); + iput(ZTOI(dzp)); + + return (error); +} + +static int +zfs_replay_rename(zfs_sb_t *zsb, lr_rename_t *lr, boolean_t byteswap) +{ + char *sname = (char *)(lr + 1); /* sname and tname follow lr_rename_t */ + char *tname = sname + strlen(sname) + 1; + znode_t *sdzp, *tdzp; + int error; + int vflg = 0; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_sdoid, &sdzp)) != 0) + return (error); + + if ((error = zfs_zget(zsb, lr->lr_tdoid, &tdzp)) != 0) { + iput(ZTOI(sdzp)); + return (error); + } + + if (lr->lr_common.lrc_txtype & TX_CI) + vflg |= FIGNORECASE; + + error = zfs_rename(ZTOI(sdzp), sname, ZTOI(tdzp), tname, kcred, vflg); + + iput(ZTOI(tdzp)); + iput(ZTOI(sdzp)); + + return (error); +} + +static int +zfs_replay_write(zfs_sb_t *zsb, lr_write_t *lr, boolean_t byteswap) +{ + char *data = (char *)(lr + 1); /* data follows lr_write_t */ + znode_t *zp; + int error, written; + uint64_t eod, offset, length; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) { + /* + * As we can log writes out of order, it's possible the + * file has been removed. In this case just drop the write + * and return success. + */ + if (error == ENOENT) + error = 0; + return (error); + } + + offset = lr->lr_offset; + length = lr->lr_length; + eod = offset + length; /* end of data for this write */ + + /* + * This may be a write from a dmu_sync() for a whole block, + * and may extend beyond the current end of the file. + * We can't just replay what was written for this TX_WRITE as + * a future TX_WRITE2 may extend the eof and the data for that + * write needs to be there. So we write the whole block and + * reduce the eof. This needs to be done within the single dmu + * transaction created within vn_rdwr -> zfs_write. So a possible + * new end of file is passed through in zsb->z_replay_eof + */ + + zsb->z_replay_eof = 0; /* 0 means don't change end of file */ + + /* If it's a dmu_sync() block, write the whole block */ + if (lr->lr_common.lrc_reclen == sizeof (lr_write_t)) { + uint64_t blocksize = BP_GET_LSIZE(&lr->lr_blkptr); + if (length < blocksize) { + offset -= offset % blocksize; + length = blocksize; + } + if (zp->z_size < eod) + zsb->z_replay_eof = eod; + } + + written = zpl_write_common(ZTOI(zp), data, length, &offset, + UIO_SYSSPACE, 0, kcred); + if (written < 0) + error = -written; + else if (written < length) + error = SET_ERROR(EIO); /* short write */ + + iput(ZTOI(zp)); + zsb->z_replay_eof = 0; /* safety */ + + return (error); +} + +/* + * TX_WRITE2 are only generated when dmu_sync() returns EALREADY + * meaning the pool block is already being synced. So now that we always write + * out full blocks, all we have to do is expand the eof if + * the file is grown. + */ +static int +zfs_replay_write2(zfs_sb_t *zsb, lr_write_t *lr, boolean_t byteswap) +{ + znode_t *zp; + int error; + uint64_t end; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) + return (error); + +top: + end = lr->lr_offset + lr->lr_length; + if (end > zp->z_size) { + dmu_tx_t *tx = dmu_tx_create(zsb->z_os); + + zp->z_size = end; + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + iput(ZTOI(zp)); + if (error == ERESTART) { + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + return (error); + } + (void) sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(zsb), + (void *)&zp->z_size, sizeof (uint64_t), tx); + + /* Ensure the replayed seq is updated */ + (void) zil_replaying(zsb->z_log, tx); + + dmu_tx_commit(tx); + } + + iput(ZTOI(zp)); + + return (error); +} + +static int +zfs_replay_truncate(zfs_sb_t *zsb, lr_truncate_t *lr, boolean_t byteswap) +{ + znode_t *zp; + flock64_t fl; + int error; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) + return (error); + + bzero(&fl, sizeof (fl)); + fl.l_type = F_WRLCK; + fl.l_whence = 0; + fl.l_start = lr->lr_offset; + fl.l_len = lr->lr_length; + + error = zfs_space(ZTOI(zp), F_FREESP, &fl, FWRITE | FOFFMAX, + lr->lr_offset, kcred); + + iput(ZTOI(zp)); + + return (error); +} + +static int +zfs_replay_setattr(zfs_sb_t *zsb, lr_setattr_t *lr, boolean_t byteswap) +{ + znode_t *zp; + xvattr_t xva; + vattr_t *vap = &xva.xva_vattr; + int error; + void *start; + + xva_init(&xva); + if (byteswap) { + byteswap_uint64_array(lr, sizeof (*lr)); + + if ((lr->lr_mask & ATTR_XVATTR) && + zsb->z_version >= ZPL_VERSION_INITIAL) + zfs_replay_swap_attrs((lr_attr_t *)(lr + 1)); + } + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) + return (error); + + zfs_init_vattr(vap, lr->lr_mask, lr->lr_mode, + lr->lr_uid, lr->lr_gid, 0, lr->lr_foid); + + vap->va_size = lr->lr_size; + ZFS_TIME_DECODE(&vap->va_atime, lr->lr_atime); + ZFS_TIME_DECODE(&vap->va_mtime, lr->lr_mtime); + + /* + * Fill in xvattr_t portions if necessary. + */ + + start = (lr_setattr_t *)(lr + 1); + if (vap->va_mask & ATTR_XVATTR) { + zfs_replay_xvattr((lr_attr_t *)start, &xva); + start = (caddr_t)start + + ZIL_XVAT_SIZE(((lr_attr_t *)start)->lr_attr_masksize); + } else + xva.xva_vattr.va_mask &= ~ATTR_XVATTR; + + zsb->z_fuid_replay = zfs_replay_fuid_domain(start, &start, + lr->lr_uid, lr->lr_gid); + + error = zfs_setattr(ZTOI(zp), vap, 0, kcred); + + zfs_fuid_info_free(zsb->z_fuid_replay); + zsb->z_fuid_replay = NULL; + iput(ZTOI(zp)); + + return (error); +} + +static int +zfs_replay_acl_v0(zfs_sb_t *zsb, lr_acl_v0_t *lr, boolean_t byteswap) +{ + ace_t *ace = (ace_t *)(lr + 1); /* ace array follows lr_acl_t */ + vsecattr_t vsa; + znode_t *zp; + int error; + + if (byteswap) { + byteswap_uint64_array(lr, sizeof (*lr)); + zfs_oldace_byteswap(ace, lr->lr_aclcnt); + } + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) + return (error); + + bzero(&vsa, sizeof (vsa)); + vsa.vsa_mask = VSA_ACE | VSA_ACECNT; + vsa.vsa_aclcnt = lr->lr_aclcnt; + vsa.vsa_aclentsz = sizeof (ace_t) * vsa.vsa_aclcnt; + vsa.vsa_aclflags = 0; + vsa.vsa_aclentp = ace; + + error = zfs_setsecattr(ZTOI(zp), &vsa, 0, kcred); + + iput(ZTOI(zp)); + + return (error); +} + +/* + * Replaying ACLs is complicated by FUID support. + * The log record may contain some optional data + * to be used for replaying FUID's. These pieces + * are the actual FUIDs that were created initially. + * The FUID table index may no longer be valid and + * during zfs_create() a new index may be assigned. + * Because of this the log will contain the original + * doman+rid in order to create a new FUID. + * + * The individual ACEs may contain an ephemeral uid/gid which is no + * longer valid and will need to be replaced with an actual FUID. + * + */ +static int +zfs_replay_acl(zfs_sb_t *zsb, lr_acl_t *lr, boolean_t byteswap) +{ + ace_t *ace = (ace_t *)(lr + 1); + vsecattr_t vsa; + znode_t *zp; + int error; + + if (byteswap) { + byteswap_uint64_array(lr, sizeof (*lr)); + zfs_ace_byteswap(ace, lr->lr_acl_bytes, B_FALSE); + if (lr->lr_fuidcnt) { + byteswap_uint64_array((caddr_t)ace + + ZIL_ACE_LENGTH(lr->lr_acl_bytes), + lr->lr_fuidcnt * sizeof (uint64_t)); + } + } + + if ((error = zfs_zget(zsb, lr->lr_foid, &zp)) != 0) + return (error); + + bzero(&vsa, sizeof (vsa)); + vsa.vsa_mask = VSA_ACE | VSA_ACECNT | VSA_ACE_ACLFLAGS; + vsa.vsa_aclcnt = lr->lr_aclcnt; + vsa.vsa_aclentp = ace; + vsa.vsa_aclentsz = lr->lr_acl_bytes; + vsa.vsa_aclflags = lr->lr_acl_flags; + + if (lr->lr_fuidcnt) { + void *fuidstart = (caddr_t)ace + + ZIL_ACE_LENGTH(lr->lr_acl_bytes); + + zsb->z_fuid_replay = + zfs_replay_fuids(fuidstart, &fuidstart, + lr->lr_fuidcnt, lr->lr_domcnt, 0, 0); + } + + error = zfs_setsecattr(ZTOI(zp), &vsa, 0, kcred); + + if (zsb->z_fuid_replay) + zfs_fuid_info_free(zsb->z_fuid_replay); + + zsb->z_fuid_replay = NULL; + iput(ZTOI(zp)); + + return (error); +} + +/* + * Callback vectors for replaying records + */ +zil_replay_func_t zfs_replay_vector[TX_MAX_TYPE] = { + (zil_replay_func_t)zfs_replay_error, /* no such type */ + (zil_replay_func_t)zfs_replay_create, /* TX_CREATE */ + (zil_replay_func_t)zfs_replay_create, /* TX_MKDIR */ + (zil_replay_func_t)zfs_replay_create, /* TX_MKXATTR */ + (zil_replay_func_t)zfs_replay_create, /* TX_SYMLINK */ + (zil_replay_func_t)zfs_replay_remove, /* TX_REMOVE */ + (zil_replay_func_t)zfs_replay_remove, /* TX_RMDIR */ + (zil_replay_func_t)zfs_replay_link, /* TX_LINK */ + (zil_replay_func_t)zfs_replay_rename, /* TX_RENAME */ + (zil_replay_func_t)zfs_replay_write, /* TX_WRITE */ + (zil_replay_func_t)zfs_replay_truncate, /* TX_TRUNCATE */ + (zil_replay_func_t)zfs_replay_setattr, /* TX_SETATTR */ + (zil_replay_func_t)zfs_replay_acl_v0, /* TX_ACL_V0 */ + (zil_replay_func_t)zfs_replay_acl, /* TX_ACL */ + (zil_replay_func_t)zfs_replay_create_acl, /* TX_CREATE_ACL */ + (zil_replay_func_t)zfs_replay_create, /* TX_CREATE_ATTR */ + (zil_replay_func_t)zfs_replay_create_acl, /* TX_CREATE_ACL_ATTR */ + (zil_replay_func_t)zfs_replay_create_acl, /* TX_MKDIR_ACL */ + (zil_replay_func_t)zfs_replay_create, /* TX_MKDIR_ATTR */ + (zil_replay_func_t)zfs_replay_create_acl, /* TX_MKDIR_ACL_ATTR */ + (zil_replay_func_t)zfs_replay_write2, /* TX_WRITE2 */ +}; --- linux-4.4.0.orig/zfs/module/zfs/zfs_rlock.c +++ linux-4.4.0/zfs/module/zfs/zfs_rlock.c @@ -0,0 +1,628 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +/* + * This file contains the code to implement file range locking in + * ZFS, although there isn't much specific to ZFS (all that comes to mind is + * support for growing the blocksize). + * + * Interface + * --------- + * Defined in zfs_rlock.h but essentially: + * rl = zfs_range_lock(zp, off, len, lock_type); + * zfs_range_unlock(rl); + * zfs_range_reduce(rl, off, len); + * + * AVL tree + * -------- + * An AVL tree is used to maintain the state of the existing ranges + * that are locked for exclusive (writer) or shared (reader) use. + * The starting range offset is used for searching and sorting the tree. + * + * Common case + * ----------- + * The (hopefully) usual case is of no overlaps or contention for + * locks. On entry to zfs_lock_range() a rl_t is allocated; the tree + * searched that finds no overlap, and *this* rl_t is placed in the tree. + * + * Overlaps/Reference counting/Proxy locks + * --------------------------------------- + * The avl code only allows one node at a particular offset. Also it's very + * inefficient to search through all previous entries looking for overlaps + * (because the very 1st in the ordered list might be at offset 0 but + * cover the whole file). + * So this implementation uses reference counts and proxy range locks. + * Firstly, only reader locks use reference counts and proxy locks, + * because writer locks are exclusive. + * When a reader lock overlaps with another then a proxy lock is created + * for that range and replaces the original lock. If the overlap + * is exact then the reference count of the proxy is simply incremented. + * Otherwise, the proxy lock is split into smaller lock ranges and + * new proxy locks created for non overlapping ranges. + * The reference counts are adjusted accordingly. + * Meanwhile, the orginal lock is kept around (this is the callers handle) + * and its offset and length are used when releasing the lock. + * + * Thread coordination + * ------------------- + * In order to make wakeups efficient and to ensure multiple continuous + * readers on a range don't starve a writer for the same range lock, + * two condition variables are allocated in each rl_t. + * If a writer (or reader) can't get a range it initialises the writer + * (or reader) cv; sets a flag saying there's a writer (or reader) waiting; + * and waits on that cv. When a thread unlocks that range it wakes up all + * writers then all readers before destroying the lock. + * + * Append mode writes + * ------------------ + * Append mode writes need to lock a range at the end of a file. + * The offset of the end of the file is determined under the + * range locking mutex, and the lock type converted from RL_APPEND to + * RL_WRITER and the range locked. + * + * Grow block handling + * ------------------- + * ZFS supports multiple block sizes currently upto 128K. The smallest + * block size is used for the file which is grown as needed. During this + * growth all other writers and readers must be excluded. + * So if the block size needs to be grown then the whole file is + * exclusively locked, then later the caller will reduce the lock + * range to just the range to be written using zfs_reduce_range. + */ + +#include + +/* + * Check if a write lock can be grabbed, or wait and recheck until available. + */ +static void +zfs_range_lock_writer(znode_t *zp, rl_t *new) +{ + avl_tree_t *tree = &zp->z_range_avl; + rl_t *rl; + avl_index_t where; + uint64_t end_size; + uint64_t off = new->r_off; + uint64_t len = new->r_len; + + for (;;) { + /* + * Range locking is also used by zvol and uses a + * dummied up znode. However, for zvol, we don't need to + * append or grow blocksize, and besides we don't have + * a "sa" data or zfs_sb_t - so skip that processing. + * + * Yes, this is ugly, and would be solved by not handling + * grow or append in range lock code. If that was done then + * we could make the range locking code generically available + * to other non-zfs consumers. + */ + if (!zp->z_is_zvol) { /* caller is ZPL */ + /* + * If in append mode pick up the current end of file. + * This is done under z_range_lock to avoid races. + */ + if (new->r_type == RL_APPEND) + new->r_off = zp->z_size; + + /* + * If we need to grow the block size then grab the whole + * file range. This is also done under z_range_lock to + * avoid races. + */ + end_size = MAX(zp->z_size, new->r_off + len); + if (end_size > zp->z_blksz && (!ISP2(zp->z_blksz) || + zp->z_blksz < ZTOZSB(zp)->z_max_blksz)) { + new->r_off = 0; + new->r_len = UINT64_MAX; + } + } + + /* + * First check for the usual case of no locks + */ + if (avl_numnodes(tree) == 0) { + new->r_type = RL_WRITER; /* convert to writer */ + avl_add(tree, new); + return; + } + + /* + * Look for any locks in the range. + */ + rl = avl_find(tree, new, &where); + if (rl) + goto wait; /* already locked at same offset */ + + rl = (rl_t *)avl_nearest(tree, where, AVL_AFTER); + if (rl && (rl->r_off < new->r_off + new->r_len)) + goto wait; + + rl = (rl_t *)avl_nearest(tree, where, AVL_BEFORE); + if (rl && rl->r_off + rl->r_len > new->r_off) + goto wait; + + new->r_type = RL_WRITER; /* convert possible RL_APPEND */ + avl_insert(tree, new, where); + return; +wait: + if (!rl->r_write_wanted) { + cv_init(&rl->r_wr_cv, NULL, CV_DEFAULT, NULL); + rl->r_write_wanted = B_TRUE; + } + cv_wait(&rl->r_wr_cv, &zp->z_range_lock); + + /* reset to original */ + new->r_off = off; + new->r_len = len; + } +} + +/* + * If this is an original (non-proxy) lock then replace it by + * a proxy and return the proxy. + */ +static rl_t * +zfs_range_proxify(avl_tree_t *tree, rl_t *rl) +{ + rl_t *proxy; + + if (rl->r_proxy) + return (rl); /* already a proxy */ + + ASSERT3U(rl->r_cnt, ==, 1); + ASSERT(rl->r_write_wanted == B_FALSE); + ASSERT(rl->r_read_wanted == B_FALSE); + avl_remove(tree, rl); + rl->r_cnt = 0; + + /* create a proxy range lock */ + proxy = kmem_alloc(sizeof (rl_t), KM_SLEEP); + proxy->r_off = rl->r_off; + proxy->r_len = rl->r_len; + proxy->r_cnt = 1; + proxy->r_type = RL_READER; + proxy->r_proxy = B_TRUE; + proxy->r_write_wanted = B_FALSE; + proxy->r_read_wanted = B_FALSE; + avl_add(tree, proxy); + + return (proxy); +} + +/* + * Split the range lock at the supplied offset + * returning the *front* proxy. + */ +static rl_t * +zfs_range_split(avl_tree_t *tree, rl_t *rl, uint64_t off) +{ + rl_t *front, *rear; + + ASSERT3U(rl->r_len, >, 1); + ASSERT3U(off, >, rl->r_off); + ASSERT3U(off, <, rl->r_off + rl->r_len); + ASSERT(rl->r_write_wanted == B_FALSE); + ASSERT(rl->r_read_wanted == B_FALSE); + + /* create the rear proxy range lock */ + rear = kmem_alloc(sizeof (rl_t), KM_SLEEP); + rear->r_off = off; + rear->r_len = rl->r_off + rl->r_len - off; + rear->r_cnt = rl->r_cnt; + rear->r_type = RL_READER; + rear->r_proxy = B_TRUE; + rear->r_write_wanted = B_FALSE; + rear->r_read_wanted = B_FALSE; + + front = zfs_range_proxify(tree, rl); + front->r_len = off - rl->r_off; + + avl_insert_here(tree, rear, front, AVL_AFTER); + return (front); +} + +/* + * Create and add a new proxy range lock for the supplied range. + */ +static void +zfs_range_new_proxy(avl_tree_t *tree, uint64_t off, uint64_t len) +{ + rl_t *rl; + + ASSERT(len); + rl = kmem_alloc(sizeof (rl_t), KM_SLEEP); + rl->r_off = off; + rl->r_len = len; + rl->r_cnt = 1; + rl->r_type = RL_READER; + rl->r_proxy = B_TRUE; + rl->r_write_wanted = B_FALSE; + rl->r_read_wanted = B_FALSE; + avl_add(tree, rl); +} + +static void +zfs_range_add_reader(avl_tree_t *tree, rl_t *new, rl_t *prev, avl_index_t where) +{ + rl_t *next; + uint64_t off = new->r_off; + uint64_t len = new->r_len; + + /* + * prev arrives either: + * - pointing to an entry at the same offset + * - pointing to the entry with the closest previous offset whose + * range may overlap with the new range + * - null, if there were no ranges starting before the new one + */ + if (prev) { + if (prev->r_off + prev->r_len <= off) { + prev = NULL; + } else if (prev->r_off != off) { + /* + * convert to proxy if needed then + * split this entry and bump ref count + */ + prev = zfs_range_split(tree, prev, off); + prev = AVL_NEXT(tree, prev); /* move to rear range */ + } + } + ASSERT((prev == NULL) || (prev->r_off == off)); + + if (prev) + next = prev; + else + next = (rl_t *)avl_nearest(tree, where, AVL_AFTER); + + if (next == NULL || off + len <= next->r_off) { + /* no overlaps, use the original new rl_t in the tree */ + avl_insert(tree, new, where); + return; + } + + if (off < next->r_off) { + /* Add a proxy for initial range before the overlap */ + zfs_range_new_proxy(tree, off, next->r_off - off); + } + + new->r_cnt = 0; /* will use proxies in tree */ + /* + * We now search forward through the ranges, until we go past the end + * of the new range. For each entry we make it a proxy if it + * isn't already, then bump its reference count. If there's any + * gaps between the ranges then we create a new proxy range. + */ + for (prev = NULL; next; prev = next, next = AVL_NEXT(tree, next)) { + if (off + len <= next->r_off) + break; + if (prev && prev->r_off + prev->r_len < next->r_off) { + /* there's a gap */ + ASSERT3U(next->r_off, >, prev->r_off + prev->r_len); + zfs_range_new_proxy(tree, prev->r_off + prev->r_len, + next->r_off - (prev->r_off + prev->r_len)); + } + if (off + len == next->r_off + next->r_len) { + /* exact overlap with end */ + next = zfs_range_proxify(tree, next); + next->r_cnt++; + return; + } + if (off + len < next->r_off + next->r_len) { + /* new range ends in the middle of this block */ + next = zfs_range_split(tree, next, off + len); + next->r_cnt++; + return; + } + ASSERT3U(off + len, >, next->r_off + next->r_len); + next = zfs_range_proxify(tree, next); + next->r_cnt++; + } + + /* Add the remaining end range. */ + zfs_range_new_proxy(tree, prev->r_off + prev->r_len, + (off + len) - (prev->r_off + prev->r_len)); +} + +/* + * Check if a reader lock can be grabbed, or wait and recheck until available. + */ +static void +zfs_range_lock_reader(znode_t *zp, rl_t *new) +{ + avl_tree_t *tree = &zp->z_range_avl; + rl_t *prev, *next; + avl_index_t where; + uint64_t off = new->r_off; + uint64_t len = new->r_len; + + /* + * Look for any writer locks in the range. + */ +retry: + prev = avl_find(tree, new, &where); + if (prev == NULL) + prev = (rl_t *)avl_nearest(tree, where, AVL_BEFORE); + + /* + * Check the previous range for a writer lock overlap. + */ + if (prev && (off < prev->r_off + prev->r_len)) { + if ((prev->r_type == RL_WRITER) || (prev->r_write_wanted)) { + if (!prev->r_read_wanted) { + cv_init(&prev->r_rd_cv, NULL, CV_DEFAULT, NULL); + prev->r_read_wanted = B_TRUE; + } + cv_wait(&prev->r_rd_cv, &zp->z_range_lock); + goto retry; + } + if (off + len < prev->r_off + prev->r_len) + goto got_lock; + } + + /* + * Search through the following ranges to see if there's + * write lock any overlap. + */ + if (prev) + next = AVL_NEXT(tree, prev); + else + next = (rl_t *)avl_nearest(tree, where, AVL_AFTER); + for (; next; next = AVL_NEXT(tree, next)) { + if (off + len <= next->r_off) + goto got_lock; + if ((next->r_type == RL_WRITER) || (next->r_write_wanted)) { + if (!next->r_read_wanted) { + cv_init(&next->r_rd_cv, NULL, CV_DEFAULT, NULL); + next->r_read_wanted = B_TRUE; + } + cv_wait(&next->r_rd_cv, &zp->z_range_lock); + goto retry; + } + if (off + len <= next->r_off + next->r_len) + goto got_lock; + } + +got_lock: + /* + * Add the read lock, which may involve splitting existing + * locks and bumping ref counts (r_cnt). + */ + zfs_range_add_reader(tree, new, prev, where); +} + +/* + * Lock a range (offset, length) as either shared (RL_READER) + * or exclusive (RL_WRITER). Returns the range lock structure + * for later unlocking or reduce range (if entire file + * previously locked as RL_WRITER). + */ +rl_t * +zfs_range_lock(znode_t *zp, uint64_t off, uint64_t len, rl_type_t type) +{ + rl_t *new; + + ASSERT(type == RL_READER || type == RL_WRITER || type == RL_APPEND); + + new = kmem_alloc(sizeof (rl_t), KM_SLEEP); + new->r_zp = zp; + new->r_off = off; + if (len + off < off) /* overflow */ + len = UINT64_MAX - off; + new->r_len = len; + new->r_cnt = 1; /* assume it's going to be in the tree */ + new->r_type = type; + new->r_proxy = B_FALSE; + new->r_write_wanted = B_FALSE; + new->r_read_wanted = B_FALSE; + + mutex_enter(&zp->z_range_lock); + if (type == RL_READER) { + /* + * First check for the usual case of no locks + */ + if (avl_numnodes(&zp->z_range_avl) == 0) + avl_add(&zp->z_range_avl, new); + else + zfs_range_lock_reader(zp, new); + } else + zfs_range_lock_writer(zp, new); /* RL_WRITER or RL_APPEND */ + mutex_exit(&zp->z_range_lock); + return (new); +} + +static void +zfs_range_free(void *arg) +{ + rl_t *rl = arg; + + if (rl->r_write_wanted) + cv_destroy(&rl->r_wr_cv); + + if (rl->r_read_wanted) + cv_destroy(&rl->r_rd_cv); + + kmem_free(rl, sizeof (rl_t)); +} + +/* + * Unlock a reader lock + */ +static void +zfs_range_unlock_reader(znode_t *zp, rl_t *remove, list_t *free_list) +{ + avl_tree_t *tree = &zp->z_range_avl; + rl_t *rl, *next = NULL; + uint64_t len; + + /* + * The common case is when the remove entry is in the tree + * (cnt == 1) meaning there's been no other reader locks overlapping + * with this one. Otherwise the remove entry will have been + * removed from the tree and replaced by proxies (one or + * more ranges mapping to the entire range). + */ + if (remove->r_cnt == 1) { + avl_remove(tree, remove); + + if (remove->r_write_wanted) + cv_broadcast(&remove->r_wr_cv); + + if (remove->r_read_wanted) + cv_broadcast(&remove->r_rd_cv); + + list_insert_tail(free_list, remove); + } else { + ASSERT0(remove->r_cnt); + ASSERT0(remove->r_write_wanted); + ASSERT0(remove->r_read_wanted); + /* + * Find start proxy representing this reader lock, + * then decrement ref count on all proxies + * that make up this range, freeing them as needed. + */ + rl = avl_find(tree, remove, NULL); + ASSERT(rl); + ASSERT(rl->r_cnt); + ASSERT(rl->r_type == RL_READER); + for (len = remove->r_len; len != 0; rl = next) { + len -= rl->r_len; + if (len) { + next = AVL_NEXT(tree, rl); + ASSERT(next); + ASSERT(rl->r_off + rl->r_len == next->r_off); + ASSERT(next->r_cnt); + ASSERT(next->r_type == RL_READER); + } + rl->r_cnt--; + if (rl->r_cnt == 0) { + avl_remove(tree, rl); + + if (rl->r_write_wanted) + cv_broadcast(&rl->r_wr_cv); + + if (rl->r_read_wanted) + cv_broadcast(&rl->r_rd_cv); + + list_insert_tail(free_list, rl); + } + } + + kmem_free(remove, sizeof (rl_t)); + } +} + +/* + * Unlock range and destroy range lock structure. + */ +void +zfs_range_unlock(rl_t *rl) +{ + znode_t *zp = rl->r_zp; + list_t free_list; + rl_t *free_rl; + + ASSERT(rl->r_type == RL_WRITER || rl->r_type == RL_READER); + ASSERT(rl->r_cnt == 1 || rl->r_cnt == 0); + ASSERT(!rl->r_proxy); + list_create(&free_list, sizeof (rl_t), offsetof(rl_t, rl_node)); + + mutex_enter(&zp->z_range_lock); + if (rl->r_type == RL_WRITER) { + /* writer locks can't be shared or split */ + avl_remove(&zp->z_range_avl, rl); + if (rl->r_write_wanted) + cv_broadcast(&rl->r_wr_cv); + + if (rl->r_read_wanted) + cv_broadcast(&rl->r_rd_cv); + + list_insert_tail(&free_list, rl); + } else { + /* + * lock may be shared, let zfs_range_unlock_reader() + * release the zp->z_range_lock lock and free the rl_t + */ + zfs_range_unlock_reader(zp, rl, &free_list); + } + mutex_exit(&zp->z_range_lock); + + while ((free_rl = list_head(&free_list)) != NULL) { + list_remove(&free_list, free_rl); + zfs_range_free(free_rl); + } + + list_destroy(&free_list); +} + +/* + * Reduce range locked as RL_WRITER from whole file to specified range. + * Asserts the whole file is exclusivly locked and so there's only one + * entry in the tree. + */ +void +zfs_range_reduce(rl_t *rl, uint64_t off, uint64_t len) +{ + znode_t *zp = rl->r_zp; + + /* Ensure there are no other locks */ + ASSERT(avl_numnodes(&zp->z_range_avl) == 1); + ASSERT(rl->r_off == 0); + ASSERT(rl->r_type == RL_WRITER); + ASSERT(!rl->r_proxy); + ASSERT3U(rl->r_len, ==, UINT64_MAX); + ASSERT3U(rl->r_cnt, ==, 1); + + mutex_enter(&zp->z_range_lock); + rl->r_off = off; + rl->r_len = len; + + if (rl->r_write_wanted) + cv_broadcast(&rl->r_wr_cv); + if (rl->r_read_wanted) + cv_broadcast(&rl->r_rd_cv); + + mutex_exit(&zp->z_range_lock); +} + +/* + * AVL comparison function used to order range locks + * Locks are ordered on the start offset of the range. + */ +int +zfs_range_compare(const void *arg1, const void *arg2) +{ + const rl_t *rl1 = arg1; + const rl_t *rl2 = arg2; + + if (rl1->r_off > rl2->r_off) + return (1); + if (rl1->r_off < rl2->r_off) + return (-1); + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_sa.c +++ linux-4.4.0/zfs/module/zfs/zfs_sa.c @@ -0,0 +1,424 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include +#include +#include +#include +#include + +/* + * ZPL attribute registration table. + * Order of attributes doesn't matter + * a unique value will be assigned for each + * attribute that is file system specific + * + * This is just the set of ZPL attributes that this + * version of ZFS deals with natively. The file system + * could have other attributes stored in files, but they will be + * ignored. The SA framework will preserve them, just that + * this version of ZFS won't change or delete them. + */ + +sa_attr_reg_t zfs_attr_table[ZPL_END+1] = { + {"ZPL_ATIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 0}, + {"ZPL_MTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 1}, + {"ZPL_CTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 2}, + {"ZPL_CRTIME", sizeof (uint64_t) * 2, SA_UINT64_ARRAY, 3}, + {"ZPL_GEN", sizeof (uint64_t), SA_UINT64_ARRAY, 4}, + {"ZPL_MODE", sizeof (uint64_t), SA_UINT64_ARRAY, 5}, + {"ZPL_SIZE", sizeof (uint64_t), SA_UINT64_ARRAY, 6}, + {"ZPL_PARENT", sizeof (uint64_t), SA_UINT64_ARRAY, 7}, + {"ZPL_LINKS", sizeof (uint64_t), SA_UINT64_ARRAY, 8}, + {"ZPL_XATTR", sizeof (uint64_t), SA_UINT64_ARRAY, 9}, + {"ZPL_RDEV", sizeof (uint64_t), SA_UINT64_ARRAY, 10}, + {"ZPL_FLAGS", sizeof (uint64_t), SA_UINT64_ARRAY, 11}, + {"ZPL_UID", sizeof (uint64_t), SA_UINT64_ARRAY, 12}, + {"ZPL_GID", sizeof (uint64_t), SA_UINT64_ARRAY, 13}, + {"ZPL_PAD", sizeof (uint64_t) * 4, SA_UINT64_ARRAY, 14}, + {"ZPL_ZNODE_ACL", 88, SA_UINT8_ARRAY, 15}, + {"ZPL_DACL_COUNT", sizeof (uint64_t), SA_UINT64_ARRAY, 0}, + {"ZPL_SYMLINK", 0, SA_UINT8_ARRAY, 0}, + {"ZPL_SCANSTAMP", 32, SA_UINT8_ARRAY, 0}, + {"ZPL_DACL_ACES", 0, SA_ACL, 0}, + {"ZPL_DXATTR", 0, SA_UINT8_ARRAY, 0}, + {NULL, 0, 0, 0} +}; + +#ifdef _KERNEL +int +zfs_sa_readlink(znode_t *zp, uio_t *uio) +{ + dmu_buf_t *db = sa_get_db(zp->z_sa_hdl); + size_t bufsz; + int error; + + bufsz = zp->z_size; + if (bufsz + ZFS_OLD_ZNODE_PHYS_SIZE <= db->db_size) { + error = uiomove((caddr_t)db->db_data + + ZFS_OLD_ZNODE_PHYS_SIZE, + MIN((size_t)bufsz, uio->uio_resid), UIO_READ, uio); + } else { + dmu_buf_t *dbp; + if ((error = dmu_buf_hold(ZTOZSB(zp)->z_os, zp->z_id, + 0, FTAG, &dbp, DMU_READ_NO_PREFETCH)) == 0) { + error = uiomove(dbp->db_data, + MIN((size_t)bufsz, uio->uio_resid), UIO_READ, uio); + dmu_buf_rele(dbp, FTAG); + } + } + return (error); +} + +void +zfs_sa_symlink(znode_t *zp, char *link, int len, dmu_tx_t *tx) +{ + dmu_buf_t *db = sa_get_db(zp->z_sa_hdl); + + if (ZFS_OLD_ZNODE_PHYS_SIZE + len <= dmu_bonus_max()) { + VERIFY(dmu_set_bonus(db, + len + ZFS_OLD_ZNODE_PHYS_SIZE, tx) == 0); + if (len) { + bcopy(link, (caddr_t)db->db_data + + ZFS_OLD_ZNODE_PHYS_SIZE, len); + } + } else { + dmu_buf_t *dbp; + + zfs_grow_blocksize(zp, len, tx); + VERIFY(0 == dmu_buf_hold(ZTOZSB(zp)->z_os, + zp->z_id, 0, FTAG, &dbp, DMU_READ_NO_PREFETCH)); + + dmu_buf_will_dirty(dbp, tx); + + ASSERT3U(len, <=, dbp->db_size); + bcopy(link, dbp->db_data, len); + dmu_buf_rele(dbp, FTAG); + } +} + +void +zfs_sa_get_scanstamp(znode_t *zp, xvattr_t *xvap) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + xoptattr_t *xoap; + + ASSERT(MUTEX_HELD(&zp->z_lock)); + VERIFY((xoap = xva_getxoptattr(xvap)) != NULL); + if (zp->z_is_sa) { + if (sa_lookup(zp->z_sa_hdl, SA_ZPL_SCANSTAMP(zsb), + &xoap->xoa_av_scanstamp, + sizeof (xoap->xoa_av_scanstamp)) != 0) + return; + } else { + dmu_object_info_t doi; + dmu_buf_t *db = sa_get_db(zp->z_sa_hdl); + int len; + + if (!(zp->z_pflags & ZFS_BONUS_SCANSTAMP)) + return; + + sa_object_info(zp->z_sa_hdl, &doi); + len = sizeof (xoap->xoa_av_scanstamp) + + ZFS_OLD_ZNODE_PHYS_SIZE; + + if (len <= doi.doi_bonus_size) { + (void) memcpy(xoap->xoa_av_scanstamp, + (caddr_t)db->db_data + ZFS_OLD_ZNODE_PHYS_SIZE, + sizeof (xoap->xoa_av_scanstamp)); + } + } + XVA_SET_RTN(xvap, XAT_AV_SCANSTAMP); +} + +void +zfs_sa_set_scanstamp(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + xoptattr_t *xoap; + + ASSERT(MUTEX_HELD(&zp->z_lock)); + VERIFY((xoap = xva_getxoptattr(xvap)) != NULL); + if (zp->z_is_sa) + VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_SCANSTAMP(zsb), + &xoap->xoa_av_scanstamp, + sizeof (xoap->xoa_av_scanstamp), tx)); + else { + dmu_object_info_t doi; + dmu_buf_t *db = sa_get_db(zp->z_sa_hdl); + int len; + + sa_object_info(zp->z_sa_hdl, &doi); + len = sizeof (xoap->xoa_av_scanstamp) + + ZFS_OLD_ZNODE_PHYS_SIZE; + if (len > doi.doi_bonus_size) + VERIFY(dmu_set_bonus(db, len, tx) == 0); + (void) memcpy((caddr_t)db->db_data + ZFS_OLD_ZNODE_PHYS_SIZE, + xoap->xoa_av_scanstamp, sizeof (xoap->xoa_av_scanstamp)); + + zp->z_pflags |= ZFS_BONUS_SCANSTAMP; + VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_FLAGS(zsb), + &zp->z_pflags, sizeof (uint64_t), tx)); + } +} + +int +zfs_sa_get_xattr(znode_t *zp) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + char *obj; + int size; + int error; + + ASSERT(RW_LOCK_HELD(&zp->z_xattr_lock)); + ASSERT(!zp->z_xattr_cached); + ASSERT(zp->z_is_sa); + + error = sa_size(zp->z_sa_hdl, SA_ZPL_DXATTR(zsb), &size); + if (error) { + if (error == ENOENT) + return nvlist_alloc(&zp->z_xattr_cached, + NV_UNIQUE_NAME, KM_SLEEP); + else + return (error); + } + + obj = zio_buf_alloc(size); + + error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DXATTR(zsb), obj, size); + if (error == 0) + error = nvlist_unpack(obj, size, &zp->z_xattr_cached, KM_SLEEP); + + zio_buf_free(obj, size); + + return (error); +} + +int +zfs_sa_set_xattr(znode_t *zp) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + dmu_tx_t *tx; + char *obj; + size_t size; + int error; + + ASSERT(RW_WRITE_HELD(&zp->z_xattr_lock)); + ASSERT(zp->z_xattr_cached); + ASSERT(zp->z_is_sa); + + error = nvlist_size(zp->z_xattr_cached, &size, NV_ENCODE_XDR); + if (error) + goto out; + + obj = zio_buf_alloc(size); + + error = nvlist_pack(zp->z_xattr_cached, &obj, &size, + NV_ENCODE_XDR, KM_SLEEP); + if (error) + goto out_free; + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa_create(tx, size); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + } else { + error = sa_update(zp->z_sa_hdl, SA_ZPL_DXATTR(zsb), + obj, size, tx); + if (error) + dmu_tx_abort(tx); + else + dmu_tx_commit(tx); + } +out_free: + zio_buf_free(obj, size); +out: + return (error); +} + +/* + * I'm not convinced we should do any of this upgrade. + * since the SA code can read both old/new znode formats + * with probably little to no performance difference. + * + * All new files will be created with the new format. + */ + +void +zfs_sa_upgrade(sa_handle_t *hdl, dmu_tx_t *tx) +{ + dmu_buf_t *db = sa_get_db(hdl); + znode_t *zp = sa_get_userdata(hdl); + zfs_sb_t *zsb = ZTOZSB(zp); + int count = 0; + sa_bulk_attr_t *bulk, *sa_attrs; + zfs_acl_locator_cb_t locate = { 0 }; + uint64_t uid, gid, mode, rdev, xattr, parent; + uint64_t crtime[2], mtime[2], ctime[2]; + zfs_acl_phys_t znode_acl; + char scanstamp[AV_SCANSTAMP_SZ]; + boolean_t drop_lock = B_FALSE; + + /* + * No upgrade if ACL isn't cached + * since we won't know which locks are held + * and ready the ACL would require special "locked" + * interfaces that would be messy + */ + if (zp->z_acl_cached == NULL || S_ISLNK(ZTOI(zp)->i_mode)) + return; + + /* + * If the z_lock is held and we aren't the owner + * the just return since we don't want to deadlock + * trying to update the status of z_is_sa. This + * file can then be upgraded at a later time. + * + * Otherwise, we know we are doing the + * sa_update() that caused us to enter this function. + */ + if (mutex_owner(&zp->z_lock) != curthread) { + if (mutex_tryenter(&zp->z_lock) == 0) + return; + else + drop_lock = B_TRUE; + } + + /* First do a bulk query of the attributes that aren't cached */ + bulk = kmem_alloc(sizeof (sa_bulk_attr_t) * 20, KM_SLEEP); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, &mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, &ctime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CRTIME(zsb), NULL, &crtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), NULL, &mode, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_PARENT(zsb), NULL, &parent, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_XATTR(zsb), NULL, &xattr, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_RDEV(zsb), NULL, &rdev, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_UID(zsb), NULL, &uid, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GID(zsb), NULL, &gid, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ZNODE_ACL(zsb), NULL, + &znode_acl, 88); + + if (sa_bulk_lookup_locked(hdl, bulk, count) != 0) { + kmem_free(bulk, sizeof (sa_bulk_attr_t) * 20); + goto done; + } + + /* + * While the order here doesn't matter its best to try and organize + * it is such a way to pick up an already existing layout number + */ + count = 0; + sa_attrs = kmem_zalloc(sizeof (sa_bulk_attr_t) * 20, KM_SLEEP); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_MODE(zsb), NULL, &mode, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_SIZE(zsb), NULL, + &zp->z_size, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_GEN(zsb), + NULL, &zp->z_gen, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_UID(zsb), NULL, &uid, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_GID(zsb), NULL, &gid, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_PARENT(zsb), + NULL, &parent, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_ATIME(zsb), NULL, + zp->z_atime, 16); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_MTIME(zsb), NULL, + &mtime, 16); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_CTIME(zsb), NULL, + &ctime, 16); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_CRTIME(zsb), NULL, + &crtime, 16); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_LINKS(zsb), NULL, + &zp->z_links, 8); + if (S_ISBLK(ZTOI(zp)->i_mode) || S_ISCHR(ZTOI(zp)->i_mode)) + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_RDEV(zsb), NULL, + &rdev, 8); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_DACL_COUNT(zsb), NULL, + &zp->z_acl_cached->z_acl_count, 8); + + if (zp->z_acl_cached->z_version < ZFS_ACL_VERSION_FUID) + zfs_acl_xform(zp, zp->z_acl_cached, CRED()); + + locate.cb_aclp = zp->z_acl_cached; + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_DACL_ACES(zsb), + zfs_acl_data_locator, &locate, zp->z_acl_cached->z_acl_bytes); + + if (xattr) + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_XATTR(zsb), + NULL, &xattr, 8); + + /* if scanstamp then add scanstamp */ + + if (zp->z_pflags & ZFS_BONUS_SCANSTAMP) { + bcopy((caddr_t)db->db_data + ZFS_OLD_ZNODE_PHYS_SIZE, + scanstamp, AV_SCANSTAMP_SZ); + SA_ADD_BULK_ATTR(sa_attrs, count, SA_ZPL_SCANSTAMP(zsb), + NULL, scanstamp, AV_SCANSTAMP_SZ); + zp->z_pflags &= ~ZFS_BONUS_SCANSTAMP; + } + + VERIFY(dmu_set_bonustype(db, DMU_OT_SA, tx) == 0); + VERIFY(sa_replace_all_by_template_locked(hdl, sa_attrs, + count, tx) == 0); + if (znode_acl.z_acl_extern_obj) + VERIFY(0 == dmu_object_free(zsb->z_os, + znode_acl.z_acl_extern_obj, tx)); + + zp->z_is_sa = B_TRUE; + kmem_free(sa_attrs, sizeof (sa_bulk_attr_t) * 20); + kmem_free(bulk, sizeof (sa_bulk_attr_t) * 20); +done: + if (drop_lock) + mutex_exit(&zp->z_lock); +} + +void +zfs_sa_upgrade_txholds(dmu_tx_t *tx, znode_t *zp) +{ + if (!ZTOZSB(zp)->z_use_sa || zp->z_is_sa) + return; + + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + + if (zfs_external_acl(zp)) { + dmu_tx_hold_free(tx, zfs_external_acl(zp), 0, + DMU_OBJECT_END); + } +} + +EXPORT_SYMBOL(zfs_attr_table); +EXPORT_SYMBOL(zfs_sa_readlink); +EXPORT_SYMBOL(zfs_sa_symlink); +EXPORT_SYMBOL(zfs_sa_get_scanstamp); +EXPORT_SYMBOL(zfs_sa_set_scanstamp); +EXPORT_SYMBOL(zfs_sa_get_xattr); +EXPORT_SYMBOL(zfs_sa_set_xattr); +EXPORT_SYMBOL(zfs_sa_upgrade); +EXPORT_SYMBOL(zfs_sa_upgrade_txholds); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_vfsops.c +++ linux-4.4.0/zfs/module/zfs/zfs_vfsops.c @@ -0,0 +1,1859 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fs/fs_subr.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "zfs_comutil.h" + +/*ARGSUSED*/ +int +zfs_sync(struct super_block *sb, int wait, cred_t *cr) +{ + zfs_sb_t *zsb = sb->s_fs_info; + + /* + * Data integrity is job one. We don't want a compromised kernel + * writing to the storage pool, so we never sync during panic. + */ + if (unlikely(oops_in_progress)) + return (0); + + /* + * Semantically, the only requirement is that the sync be initiated. + * The DMU syncs out txgs frequently, so there's nothing to do. + */ + if (!wait) + return (0); + + if (zsb != NULL) { + /* + * Sync a specific filesystem. + */ + dsl_pool_t *dp; + + ZFS_ENTER(zsb); + dp = dmu_objset_pool(zsb->z_os); + + /* + * If the system is shutting down, then skip any + * filesystems which may exist on a suspended pool. + */ + if (spa_suspended(dp->dp_spa)) { + ZFS_EXIT(zsb); + return (0); + } + + if (zsb->z_log != NULL) + zil_commit(zsb->z_log, 0); + + ZFS_EXIT(zsb); + } else { + /* + * Sync all ZFS filesystems. This is what happens when you + * run sync(1M). Unlike other filesystems, ZFS honors the + * request by waiting for all pools to commit all dirty data. + */ + spa_sync_allpools(); + } + + return (0); +} +EXPORT_SYMBOL(zfs_sync); + +boolean_t +zfs_is_readonly(zfs_sb_t *zsb) +{ + return (!!(zsb->z_sb->s_flags & MS_RDONLY)); +} +EXPORT_SYMBOL(zfs_is_readonly); + +static void +atime_changed_cb(void *arg, uint64_t newval) +{ + ((zfs_sb_t *)arg)->z_atime = newval; +} + +static void +relatime_changed_cb(void *arg, uint64_t newval) +{ + ((zfs_sb_t *)arg)->z_relatime = newval; +} + +static void +xattr_changed_cb(void *arg, uint64_t newval) +{ + zfs_sb_t *zsb = arg; + + if (newval == ZFS_XATTR_OFF) { + zsb->z_flags &= ~ZSB_XATTR; + } else { + zsb->z_flags |= ZSB_XATTR; + + if (newval == ZFS_XATTR_SA) + zsb->z_xattr_sa = B_TRUE; + else + zsb->z_xattr_sa = B_FALSE; + } +} + +static void +acltype_changed_cb(void *arg, uint64_t newval) +{ + zfs_sb_t *zsb = arg; + + switch (newval) { + case ZFS_ACLTYPE_OFF: + zsb->z_acl_type = ZFS_ACLTYPE_OFF; + zsb->z_sb->s_flags &= ~MS_POSIXACL; + break; + case ZFS_ACLTYPE_POSIXACL: +#ifdef CONFIG_FS_POSIX_ACL + zsb->z_acl_type = ZFS_ACLTYPE_POSIXACL; + zsb->z_sb->s_flags |= MS_POSIXACL; +#else + zsb->z_acl_type = ZFS_ACLTYPE_OFF; + zsb->z_sb->s_flags &= ~MS_POSIXACL; +#endif /* CONFIG_FS_POSIX_ACL */ + break; + default: + break; + } +} + +static void +blksz_changed_cb(void *arg, uint64_t newval) +{ + zfs_sb_t *zsb = arg; + ASSERT3U(newval, <=, spa_maxblocksize(dmu_objset_spa(zsb->z_os))); + ASSERT3U(newval, >=, SPA_MINBLOCKSIZE); + ASSERT(ISP2(newval)); + + zsb->z_max_blksz = newval; +} + +static void +readonly_changed_cb(void *arg, uint64_t newval) +{ + zfs_sb_t *zsb = arg; + struct super_block *sb = zsb->z_sb; + + if (sb == NULL) + return; + + if (newval) + sb->s_flags |= MS_RDONLY; + else + sb->s_flags &= ~MS_RDONLY; +} + +static void +devices_changed_cb(void *arg, uint64_t newval) +{ +} + +static void +setuid_changed_cb(void *arg, uint64_t newval) +{ +} + +static void +exec_changed_cb(void *arg, uint64_t newval) +{ +} + +static void +nbmand_changed_cb(void *arg, uint64_t newval) +{ + zfs_sb_t *zsb = arg; + struct super_block *sb = zsb->z_sb; + + if (sb == NULL) + return; + + if (newval == TRUE) + sb->s_flags |= MS_MANDLOCK; + else + sb->s_flags &= ~MS_MANDLOCK; +} + +static void +snapdir_changed_cb(void *arg, uint64_t newval) +{ + ((zfs_sb_t *)arg)->z_show_ctldir = newval; +} + +static void +vscan_changed_cb(void *arg, uint64_t newval) +{ + ((zfs_sb_t *)arg)->z_vscan = newval; +} + +static void +acl_inherit_changed_cb(void *arg, uint64_t newval) +{ + ((zfs_sb_t *)arg)->z_acl_inherit = newval; +} + +int +zfs_register_callbacks(zfs_sb_t *zsb) +{ + struct dsl_dataset *ds = NULL; + objset_t *os = zsb->z_os; + zfs_mntopts_t *zmo = zsb->z_mntopts; + int error = 0; + + ASSERT(zsb); + ASSERT(zmo); + + /* + * The act of registering our callbacks will destroy any mount + * options we may have. In order to enable temporary overrides + * of mount options, we stash away the current values and + * restore them after we register the callbacks. + */ + if (zfs_is_readonly(zsb) || !spa_writeable(dmu_objset_spa(os))) { + zmo->z_do_readonly = B_TRUE; + zmo->z_readonly = B_TRUE; + } + + /* + * Register property callbacks. + * + * It would probably be fine to just check for i/o error from + * the first prop_register(), but I guess I like to go + * overboard... + */ + ds = dmu_objset_ds(os); + dsl_pool_config_enter(dmu_objset_pool(os), FTAG); + error = dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_ATIME), atime_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_RELATIME), relatime_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_XATTR), xattr_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_RECORDSIZE), blksz_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_READONLY), readonly_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_DEVICES), devices_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_SETUID), setuid_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_EXEC), exec_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_SNAPDIR), snapdir_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_ACLTYPE), acltype_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_ACLINHERIT), acl_inherit_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_VSCAN), vscan_changed_cb, zsb); + error = error ? error : dsl_prop_register(ds, + zfs_prop_to_name(ZFS_PROP_NBMAND), nbmand_changed_cb, zsb); + dsl_pool_config_exit(dmu_objset_pool(os), FTAG); + if (error) + goto unregister; + + /* + * Invoke our callbacks to restore temporary mount options. + */ + if (zmo->z_do_readonly) + readonly_changed_cb(zsb, zmo->z_readonly); + if (zmo->z_do_setuid) + setuid_changed_cb(zsb, zmo->z_setuid); + if (zmo->z_do_exec) + exec_changed_cb(zsb, zmo->z_exec); + if (zmo->z_do_devices) + devices_changed_cb(zsb, zmo->z_devices); + if (zmo->z_do_xattr) + xattr_changed_cb(zsb, zmo->z_xattr); + if (zmo->z_do_atime) + atime_changed_cb(zsb, zmo->z_atime); + if (zmo->z_do_relatime) + relatime_changed_cb(zsb, zmo->z_relatime); + if (zmo->z_do_nbmand) + nbmand_changed_cb(zsb, zmo->z_nbmand); + + return (0); + +unregister: + /* + * We may attempt to unregister some callbacks that are not + * registered, but this is OK; it will simply return ENOMSG, + * which we will ignore. + */ + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_ATIME), + atime_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_RELATIME), + relatime_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_XATTR), + xattr_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_RECORDSIZE), + blksz_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_READONLY), + readonly_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_DEVICES), + devices_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_SETUID), + setuid_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_EXEC), + exec_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_SNAPDIR), + snapdir_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_ACLTYPE), + acltype_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_ACLINHERIT), + acl_inherit_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_VSCAN), + vscan_changed_cb, zsb); + (void) dsl_prop_unregister(ds, zfs_prop_to_name(ZFS_PROP_NBMAND), + nbmand_changed_cb, zsb); + + return (error); +} +EXPORT_SYMBOL(zfs_register_callbacks); + +static int +zfs_space_delta_cb(dmu_object_type_t bonustype, void *data, + uint64_t *userp, uint64_t *groupp) +{ + /* + * Is it a valid type of object to track? + */ + if (bonustype != DMU_OT_ZNODE && bonustype != DMU_OT_SA) + return (SET_ERROR(ENOENT)); + + /* + * If we have a NULL data pointer + * then assume the id's aren't changing and + * return EEXIST to the dmu to let it know to + * use the same ids + */ + if (data == NULL) + return (SET_ERROR(EEXIST)); + + if (bonustype == DMU_OT_ZNODE) { + znode_phys_t *znp = data; + *userp = znp->zp_uid; + *groupp = znp->zp_gid; + } else { + int hdrsize; + sa_hdr_phys_t *sap = data; + sa_hdr_phys_t sa = *sap; + boolean_t swap = B_FALSE; + + ASSERT(bonustype == DMU_OT_SA); + + if (sa.sa_magic == 0) { + /* + * This should only happen for newly created + * files that haven't had the znode data filled + * in yet. + */ + *userp = 0; + *groupp = 0; + return (0); + } + if (sa.sa_magic == BSWAP_32(SA_MAGIC)) { + sa.sa_magic = SA_MAGIC; + sa.sa_layout_info = BSWAP_16(sa.sa_layout_info); + swap = B_TRUE; + } else { + VERIFY3U(sa.sa_magic, ==, SA_MAGIC); + } + + hdrsize = sa_hdrsize(&sa); + VERIFY3U(hdrsize, >=, sizeof (sa_hdr_phys_t)); + *userp = *((uint64_t *)((uintptr_t)data + hdrsize + + SA_UID_OFFSET)); + *groupp = *((uint64_t *)((uintptr_t)data + hdrsize + + SA_GID_OFFSET)); + if (swap) { + *userp = BSWAP_64(*userp); + *groupp = BSWAP_64(*groupp); + } + } + return (0); +} + +static void +fuidstr_to_sid(zfs_sb_t *zsb, const char *fuidstr, + char *domainbuf, int buflen, uid_t *ridp) +{ + uint64_t fuid; + const char *domain; + + fuid = strtonum(fuidstr, NULL); + + domain = zfs_fuid_find_by_idx(zsb, FUID_INDEX(fuid)); + if (domain) + (void) strlcpy(domainbuf, domain, buflen); + else + domainbuf[0] = '\0'; + *ridp = FUID_RID(fuid); +} + +static uint64_t +zfs_userquota_prop_to_obj(zfs_sb_t *zsb, zfs_userquota_prop_t type) +{ + switch (type) { + case ZFS_PROP_USERUSED: + return (DMU_USERUSED_OBJECT); + case ZFS_PROP_GROUPUSED: + return (DMU_GROUPUSED_OBJECT); + case ZFS_PROP_USERQUOTA: + return (zsb->z_userquota_obj); + case ZFS_PROP_GROUPQUOTA: + return (zsb->z_groupquota_obj); + default: + return (SET_ERROR(ENOTSUP)); + } + return (0); +} + +int +zfs_userspace_many(zfs_sb_t *zsb, zfs_userquota_prop_t type, + uint64_t *cookiep, void *vbuf, uint64_t *bufsizep) +{ + int error; + zap_cursor_t zc; + zap_attribute_t za; + zfs_useracct_t *buf = vbuf; + uint64_t obj; + + if (!dmu_objset_userspace_present(zsb->z_os)) + return (SET_ERROR(ENOTSUP)); + + obj = zfs_userquota_prop_to_obj(zsb, type); + if (obj == 0) { + *bufsizep = 0; + return (0); + } + + for (zap_cursor_init_serialized(&zc, zsb->z_os, obj, *cookiep); + (error = zap_cursor_retrieve(&zc, &za)) == 0; + zap_cursor_advance(&zc)) { + if ((uintptr_t)buf - (uintptr_t)vbuf + sizeof (zfs_useracct_t) > + *bufsizep) + break; + + fuidstr_to_sid(zsb, za.za_name, + buf->zu_domain, sizeof (buf->zu_domain), &buf->zu_rid); + + buf->zu_space = za.za_first_integer; + buf++; + } + if (error == ENOENT) + error = 0; + + ASSERT3U((uintptr_t)buf - (uintptr_t)vbuf, <=, *bufsizep); + *bufsizep = (uintptr_t)buf - (uintptr_t)vbuf; + *cookiep = zap_cursor_serialize(&zc); + zap_cursor_fini(&zc); + return (error); +} +EXPORT_SYMBOL(zfs_userspace_many); + +/* + * buf must be big enough (eg, 32 bytes) + */ +static int +id_to_fuidstr(zfs_sb_t *zsb, const char *domain, uid_t rid, + char *buf, boolean_t addok) +{ + uint64_t fuid; + int domainid = 0; + + if (domain && domain[0]) { + domainid = zfs_fuid_find_by_domain(zsb, domain, NULL, addok); + if (domainid == -1) + return (SET_ERROR(ENOENT)); + } + fuid = FUID_ENCODE(domainid, rid); + (void) sprintf(buf, "%llx", (longlong_t)fuid); + return (0); +} + +int +zfs_userspace_one(zfs_sb_t *zsb, zfs_userquota_prop_t type, + const char *domain, uint64_t rid, uint64_t *valp) +{ + char buf[32]; + int err; + uint64_t obj; + + *valp = 0; + + if (!dmu_objset_userspace_present(zsb->z_os)) + return (SET_ERROR(ENOTSUP)); + + obj = zfs_userquota_prop_to_obj(zsb, type); + if (obj == 0) + return (0); + + err = id_to_fuidstr(zsb, domain, rid, buf, B_FALSE); + if (err) + return (err); + + err = zap_lookup(zsb->z_os, obj, buf, 8, 1, valp); + if (err == ENOENT) + err = 0; + return (err); +} +EXPORT_SYMBOL(zfs_userspace_one); + +int +zfs_set_userquota(zfs_sb_t *zsb, zfs_userquota_prop_t type, + const char *domain, uint64_t rid, uint64_t quota) +{ + char buf[32]; + int err; + dmu_tx_t *tx; + uint64_t *objp; + boolean_t fuid_dirtied; + + if (type != ZFS_PROP_USERQUOTA && type != ZFS_PROP_GROUPQUOTA) + return (SET_ERROR(EINVAL)); + + if (zsb->z_version < ZPL_VERSION_USERSPACE) + return (SET_ERROR(ENOTSUP)); + + objp = (type == ZFS_PROP_USERQUOTA) ? &zsb->z_userquota_obj : + &zsb->z_groupquota_obj; + + err = id_to_fuidstr(zsb, domain, rid, buf, B_TRUE); + if (err) + return (err); + fuid_dirtied = zsb->z_fuid_dirty; + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_zap(tx, *objp ? *objp : DMU_NEW_OBJECT, B_TRUE, NULL); + if (*objp == 0) { + dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, B_TRUE, + zfs_userquota_prop_prefixes[type]); + } + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) { + dmu_tx_abort(tx); + return (err); + } + + mutex_enter(&zsb->z_lock); + if (*objp == 0) { + *objp = zap_create(zsb->z_os, DMU_OT_USERGROUP_QUOTA, + DMU_OT_NONE, 0, tx); + VERIFY(0 == zap_add(zsb->z_os, MASTER_NODE_OBJ, + zfs_userquota_prop_prefixes[type], 8, 1, objp, tx)); + } + mutex_exit(&zsb->z_lock); + + if (quota == 0) { + err = zap_remove(zsb->z_os, *objp, buf, tx); + if (err == ENOENT) + err = 0; + } else { + err = zap_update(zsb->z_os, *objp, buf, 8, 1, "a, tx); + } + ASSERT(err == 0); + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + dmu_tx_commit(tx); + return (err); +} +EXPORT_SYMBOL(zfs_set_userquota); + +boolean_t +zfs_fuid_overquota(zfs_sb_t *zsb, boolean_t isgroup, uint64_t fuid) +{ + char buf[32]; + uint64_t used, quota, usedobj, quotaobj; + int err; + + usedobj = isgroup ? DMU_GROUPUSED_OBJECT : DMU_USERUSED_OBJECT; + quotaobj = isgroup ? zsb->z_groupquota_obj : zsb->z_userquota_obj; + + if (quotaobj == 0 || zsb->z_replay) + return (B_FALSE); + + (void) sprintf(buf, "%llx", (longlong_t)fuid); + err = zap_lookup(zsb->z_os, quotaobj, buf, 8, 1, "a); + if (err != 0) + return (B_FALSE); + + err = zap_lookup(zsb->z_os, usedobj, buf, 8, 1, &used); + if (err != 0) + return (B_FALSE); + return (used >= quota); +} +EXPORT_SYMBOL(zfs_fuid_overquota); + +boolean_t +zfs_owner_overquota(zfs_sb_t *zsb, znode_t *zp, boolean_t isgroup) +{ + uint64_t fuid; + uint64_t quotaobj; + + quotaobj = isgroup ? zsb->z_groupquota_obj : zsb->z_userquota_obj; + + fuid = isgroup ? zp->z_gid : zp->z_uid; + + if (quotaobj == 0 || zsb->z_replay) + return (B_FALSE); + + return (zfs_fuid_overquota(zsb, isgroup, fuid)); +} +EXPORT_SYMBOL(zfs_owner_overquota); + +zfs_mntopts_t * +zfs_mntopts_alloc(void) +{ + return (kmem_zalloc(sizeof (zfs_mntopts_t), KM_SLEEP)); +} + +void +zfs_mntopts_free(zfs_mntopts_t *zmo) +{ + if (zmo->z_osname) + strfree(zmo->z_osname); + + if (zmo->z_mntpoint) + strfree(zmo->z_mntpoint); + + kmem_free(zmo, sizeof (zfs_mntopts_t)); +} + +int +zfs_sb_create(const char *osname, zfs_mntopts_t *zmo, zfs_sb_t **zsbp) +{ + objset_t *os; + zfs_sb_t *zsb; + uint64_t zval; + int i, error; + uint64_t sa_obj; + + zsb = kmem_zalloc(sizeof (zfs_sb_t), KM_SLEEP); + + /* + * We claim to always be readonly so we can open snapshots; + * other ZPL code will prevent us from writing to snapshots. + */ + error = dmu_objset_own(osname, DMU_OST_ZFS, B_TRUE, zsb, &os); + if (error) { + kmem_free(zsb, sizeof (zfs_sb_t)); + return (error); + } + + /* + * Optional temporary mount options, free'd in zfs_sb_free(). + */ + zsb->z_mntopts = (zmo ? zmo : zfs_mntopts_alloc()); + + /* + * Initialize the zfs-specific filesystem structure. + * Should probably make this a kmem cache, shuffle fields, + * and just bzero up to z_hold_mtx[]. + */ + zsb->z_sb = NULL; + zsb->z_parent = zsb; + zsb->z_max_blksz = SPA_OLD_MAXBLOCKSIZE; + zsb->z_show_ctldir = ZFS_SNAPDIR_VISIBLE; + zsb->z_os = os; + + error = zfs_get_zplprop(os, ZFS_PROP_VERSION, &zsb->z_version); + if (error) { + goto out; + } else if (zsb->z_version > ZPL_VERSION) { + error = SET_ERROR(ENOTSUP); + goto out; + } + if ((error = zfs_get_zplprop(os, ZFS_PROP_NORMALIZE, &zval)) != 0) + goto out; + zsb->z_norm = (int)zval; + + if ((error = zfs_get_zplprop(os, ZFS_PROP_UTF8ONLY, &zval)) != 0) + goto out; + zsb->z_utf8 = (zval != 0); + + if ((error = zfs_get_zplprop(os, ZFS_PROP_CASE, &zval)) != 0) + goto out; + zsb->z_case = (uint_t)zval; + + if ((error = zfs_get_zplprop(os, ZFS_PROP_ACLTYPE, &zval)) != 0) + goto out; + zsb->z_acl_type = (uint_t)zval; + + /* + * Fold case on file systems that are always or sometimes case + * insensitive. + */ + if (zsb->z_case == ZFS_CASE_INSENSITIVE || + zsb->z_case == ZFS_CASE_MIXED) + zsb->z_norm |= U8_TEXTPREP_TOUPPER; + + zsb->z_use_fuids = USE_FUIDS(zsb->z_version, zsb->z_os); + zsb->z_use_sa = USE_SA(zsb->z_version, zsb->z_os); + + if (zsb->z_use_sa) { + /* should either have both of these objects or none */ + error = zap_lookup(os, MASTER_NODE_OBJ, ZFS_SA_ATTRS, 8, 1, + &sa_obj); + if (error) + goto out; + + error = zfs_get_zplprop(os, ZFS_PROP_XATTR, &zval); + if ((error == 0) && (zval == ZFS_XATTR_SA)) + zsb->z_xattr_sa = B_TRUE; + } else { + /* + * Pre SA versions file systems should never touch + * either the attribute registration or layout objects. + */ + sa_obj = 0; + } + + error = sa_setup(os, sa_obj, zfs_attr_table, ZPL_END, + &zsb->z_attr_table); + if (error) + goto out; + + if (zsb->z_version >= ZPL_VERSION_SA) + sa_register_update_callback(os, zfs_sa_upgrade); + + error = zap_lookup(os, MASTER_NODE_OBJ, ZFS_ROOT_OBJ, 8, 1, + &zsb->z_root); + if (error) + goto out; + ASSERT(zsb->z_root != 0); + + error = zap_lookup(os, MASTER_NODE_OBJ, ZFS_UNLINKED_SET, 8, 1, + &zsb->z_unlinkedobj); + if (error) + goto out; + + error = zap_lookup(os, MASTER_NODE_OBJ, + zfs_userquota_prop_prefixes[ZFS_PROP_USERQUOTA], + 8, 1, &zsb->z_userquota_obj); + if (error && error != ENOENT) + goto out; + + error = zap_lookup(os, MASTER_NODE_OBJ, + zfs_userquota_prop_prefixes[ZFS_PROP_GROUPQUOTA], + 8, 1, &zsb->z_groupquota_obj); + if (error && error != ENOENT) + goto out; + + error = zap_lookup(os, MASTER_NODE_OBJ, ZFS_FUID_TABLES, 8, 1, + &zsb->z_fuid_obj); + if (error && error != ENOENT) + goto out; + + error = zap_lookup(os, MASTER_NODE_OBJ, ZFS_SHARES_DIR, 8, 1, + &zsb->z_shares_dir); + if (error && error != ENOENT) + goto out; + + mutex_init(&zsb->z_znodes_lock, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&zsb->z_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&zsb->z_all_znodes, sizeof (znode_t), + offsetof(znode_t, z_link_node)); + rrm_init(&zsb->z_teardown_lock, B_FALSE); + rw_init(&zsb->z_teardown_inactive_lock, NULL, RW_DEFAULT, NULL); + rw_init(&zsb->z_fuid_lock, NULL, RW_DEFAULT, NULL); + + zsb->z_hold_mtx = vmem_zalloc(sizeof (kmutex_t) * ZFS_OBJ_MTX_SZ, + KM_SLEEP); + for (i = 0; i != ZFS_OBJ_MTX_SZ; i++) + mutex_init(&zsb->z_hold_mtx[i], NULL, MUTEX_DEFAULT, NULL); + + *zsbp = zsb; + return (0); + +out: + dmu_objset_disown(os, zsb); + *zsbp = NULL; + + vmem_free(zsb->z_hold_mtx, sizeof (kmutex_t) * ZFS_OBJ_MTX_SZ); + kmem_free(zsb, sizeof (zfs_sb_t)); + return (error); +} +EXPORT_SYMBOL(zfs_sb_create); + +int +zfs_sb_setup(zfs_sb_t *zsb, boolean_t mounting) +{ + int error; + + error = zfs_register_callbacks(zsb); + if (error) + return (error); + + /* + * Set the objset user_ptr to track its zsb. + */ + mutex_enter(&zsb->z_os->os_user_ptr_lock); + dmu_objset_set_user(zsb->z_os, zsb); + mutex_exit(&zsb->z_os->os_user_ptr_lock); + + zsb->z_log = zil_open(zsb->z_os, zfs_get_data); + + /* + * If we are not mounting (ie: online recv), then we don't + * have to worry about replaying the log as we blocked all + * operations out since we closed the ZIL. + */ + if (mounting) { + boolean_t readonly; + + /* + * During replay we remove the read only flag to + * allow replays to succeed. + */ + readonly = zfs_is_readonly(zsb); + if (readonly != 0) + readonly_changed_cb(zsb, B_FALSE); + else + zfs_unlinked_drain(zsb); + + /* + * Parse and replay the intent log. + * + * Because of ziltest, this must be done after + * zfs_unlinked_drain(). (Further note: ziltest + * doesn't use readonly mounts, where + * zfs_unlinked_drain() isn't called.) This is because + * ziltest causes spa_sync() to think it's committed, + * but actually it is not, so the intent log contains + * many txg's worth of changes. + * + * In particular, if object N is in the unlinked set in + * the last txg to actually sync, then it could be + * actually freed in a later txg and then reallocated + * in a yet later txg. This would write a "create + * object N" record to the intent log. Normally, this + * would be fine because the spa_sync() would have + * written out the fact that object N is free, before + * we could write the "create object N" intent log + * record. + * + * But when we are in ziltest mode, we advance the "open + * txg" without actually spa_sync()-ing the changes to + * disk. So we would see that object N is still + * allocated and in the unlinked set, and there is an + * intent log record saying to allocate it. + */ + if (spa_writeable(dmu_objset_spa(zsb->z_os))) { + if (zil_replay_disable) { + zil_destroy(zsb->z_log, B_FALSE); + } else { + zsb->z_replay = B_TRUE; + zil_replay(zsb->z_os, zsb, + zfs_replay_vector); + zsb->z_replay = B_FALSE; + } + } + + /* restore readonly bit */ + if (readonly != 0) + readonly_changed_cb(zsb, B_TRUE); + } + + return (0); +} +EXPORT_SYMBOL(zfs_sb_setup); + +void +zfs_sb_free(zfs_sb_t *zsb) +{ + int i; + + zfs_fuid_destroy(zsb); + + mutex_destroy(&zsb->z_znodes_lock); + mutex_destroy(&zsb->z_lock); + list_destroy(&zsb->z_all_znodes); + rrm_destroy(&zsb->z_teardown_lock); + rw_destroy(&zsb->z_teardown_inactive_lock); + rw_destroy(&zsb->z_fuid_lock); + for (i = 0; i != ZFS_OBJ_MTX_SZ; i++) + mutex_destroy(&zsb->z_hold_mtx[i]); + vmem_free(zsb->z_hold_mtx, sizeof (kmutex_t) * ZFS_OBJ_MTX_SZ); + zfs_mntopts_free(zsb->z_mntopts); + kmem_free(zsb, sizeof (zfs_sb_t)); +} +EXPORT_SYMBOL(zfs_sb_free); + +static void +zfs_set_fuid_feature(zfs_sb_t *zsb) +{ + zsb->z_use_fuids = USE_FUIDS(zsb->z_version, zsb->z_os); + zsb->z_use_sa = USE_SA(zsb->z_version, zsb->z_os); +} + +void +zfs_unregister_callbacks(zfs_sb_t *zsb) +{ + objset_t *os = zsb->z_os; + struct dsl_dataset *ds; + + /* + * Unregister properties. + */ + if (!dmu_objset_is_snapshot(os)) { + ds = dmu_objset_ds(os); + VERIFY(dsl_prop_unregister(ds, "atime", atime_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "relatime", relatime_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "xattr", xattr_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "recordsize", blksz_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "readonly", readonly_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "devices", devices_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "setuid", setuid_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "exec", exec_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "snapdir", snapdir_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "acltype", acltype_changed_cb, + zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "aclinherit", + acl_inherit_changed_cb, zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "vscan", + vscan_changed_cb, zsb) == 0); + + VERIFY(dsl_prop_unregister(ds, "nbmand", + nbmand_changed_cb, zsb) == 0); + } +} +EXPORT_SYMBOL(zfs_unregister_callbacks); + +#ifdef HAVE_MLSLABEL +/* + * Check that the hex label string is appropriate for the dataset being + * mounted into the global_zone proper. + * + * Return an error if the hex label string is not default or + * admin_low/admin_high. For admin_low labels, the corresponding + * dataset must be readonly. + */ +int +zfs_check_global_label(const char *dsname, const char *hexsl) +{ + if (strcasecmp(hexsl, ZFS_MLSLABEL_DEFAULT) == 0) + return (0); + if (strcasecmp(hexsl, ADMIN_HIGH) == 0) + return (0); + if (strcasecmp(hexsl, ADMIN_LOW) == 0) { + /* must be readonly */ + uint64_t rdonly; + + if (dsl_prop_get_integer(dsname, + zfs_prop_to_name(ZFS_PROP_READONLY), &rdonly, NULL)) + return (SET_ERROR(EACCES)); + return (rdonly ? 0 : EACCES); + } + return (SET_ERROR(EACCES)); +} +EXPORT_SYMBOL(zfs_check_global_label); +#endif /* HAVE_MLSLABEL */ + +int +zfs_statvfs(struct dentry *dentry, struct kstatfs *statp) +{ + zfs_sb_t *zsb = dentry->d_sb->s_fs_info; + uint64_t refdbytes, availbytes, usedobjs, availobjs; + uint64_t fsid; + uint32_t bshift; + + ZFS_ENTER(zsb); + + dmu_objset_space(zsb->z_os, + &refdbytes, &availbytes, &usedobjs, &availobjs); + + fsid = dmu_objset_fsid_guid(zsb->z_os); + /* + * The underlying storage pool actually uses multiple block + * size. Under Solaris frsize (fragment size) is reported as + * the smallest block size we support, and bsize (block size) + * as the filesystem's maximum block size. Unfortunately, + * under Linux the fragment size and block size are often used + * interchangeably. Thus we are forced to report both of them + * as the filesystem's maximum block size. + */ + statp->f_frsize = zsb->z_max_blksz; + statp->f_bsize = zsb->z_max_blksz; + bshift = fls(statp->f_bsize) - 1; + + /* + * The following report "total" blocks of various kinds in + * the file system, but reported in terms of f_bsize - the + * "preferred" size. + */ + + statp->f_blocks = (refdbytes + availbytes) >> bshift; + statp->f_bfree = availbytes >> bshift; + statp->f_bavail = statp->f_bfree; /* no root reservation */ + + /* + * statvfs() should really be called statufs(), because it assumes + * static metadata. ZFS doesn't preallocate files, so the best + * we can do is report the max that could possibly fit in f_files, + * and that minus the number actually used in f_ffree. + * For f_ffree, report the smaller of the number of object available + * and the number of blocks (each object will take at least a block). + */ + statp->f_ffree = MIN(availobjs, availbytes >> DNODE_SHIFT); + statp->f_files = statp->f_ffree + usedobjs; + statp->f_fsid.val[0] = (uint32_t)fsid; + statp->f_fsid.val[1] = (uint32_t)(fsid >> 32); + statp->f_type = ZFS_SUPER_MAGIC; + statp->f_namelen = ZFS_MAXNAMELEN; + + /* + * We have all of 40 characters to stuff a string here. + * Is there anything useful we could/should provide? + */ + bzero(statp->f_spare, sizeof (statp->f_spare)); + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_statvfs); + +int +zfs_root(zfs_sb_t *zsb, struct inode **ipp) +{ + znode_t *rootzp; + int error; + + ZFS_ENTER(zsb); + + error = zfs_zget(zsb, zsb->z_root, &rootzp); + if (error == 0) + *ipp = ZTOI(rootzp); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_root); + +#if !defined(HAVE_SPLIT_SHRINKER_CALLBACK) && !defined(HAVE_SHRINK) && \ + defined(HAVE_D_PRUNE_ALIASES) +/* + * Linux kernels older than 3.1 do not support a per-filesystem shrinker. + * To accommodate this we must improvise and manually walk the list of znodes + * attempting to prune dentries in order to be able to drop the inodes. + * + * To avoid scanning the same znodes multiple times they are always rotated + * to the end of the z_all_znodes list. New znodes are inserted at the + * end of the list so we're always scanning the oldest znodes first. + */ +static int +zfs_sb_prune_aliases(zfs_sb_t *zsb, unsigned long nr_to_scan) +{ + znode_t **zp_array, *zp; + int max_array = MIN(nr_to_scan, PAGE_SIZE * 8 / sizeof (znode_t *)); + int objects = 0; + int i = 0, j = 0; + + zp_array = kmem_zalloc(max_array * sizeof (znode_t *), KM_SLEEP); + + mutex_enter(&zsb->z_znodes_lock); + while ((zp = list_head(&zsb->z_all_znodes)) != NULL) { + + if ((i++ > nr_to_scan) || (j >= max_array)) + break; + + ASSERT(list_link_active(&zp->z_link_node)); + list_remove(&zsb->z_all_znodes, zp); + list_insert_tail(&zsb->z_all_znodes, zp); + + /* Skip active znodes and .zfs entries */ + if (MUTEX_HELD(&zp->z_lock) || zp->z_is_ctldir) + continue; + + if (igrab(ZTOI(zp)) == NULL) + continue; + + zp_array[j] = zp; + j++; + } + mutex_exit(&zsb->z_znodes_lock); + + for (i = 0; i < j; i++) { + zp = zp_array[i]; + + ASSERT3P(zp, !=, NULL); + d_prune_aliases(ZTOI(zp)); + + if (atomic_read(&ZTOI(zp)->i_count) == 1) + objects++; + + iput(ZTOI(zp)); + } + + kmem_free(zp_array, max_array * sizeof (znode_t *)); + + return (objects); +} +#endif /* HAVE_D_PRUNE_ALIASES */ + +/* + * The ARC has requested that the filesystem drop entries from the dentry + * and inode caches. This can occur when the ARC needs to free meta data + * blocks but can't because they are all pinned by entries in these caches. + */ +int +zfs_sb_prune(struct super_block *sb, unsigned long nr_to_scan, int *objects) +{ + zfs_sb_t *zsb = sb->s_fs_info; + int error = 0; +#if defined(HAVE_SHRINK) || defined(HAVE_SPLIT_SHRINKER_CALLBACK) + struct shrinker *shrinker = &sb->s_shrink; + struct shrink_control sc = { + .nr_to_scan = nr_to_scan, + .gfp_mask = GFP_KERNEL, + }; +#endif + + ZFS_ENTER(zsb); + +#if defined(HAVE_SPLIT_SHRINKER_CALLBACK) && \ + defined(SHRINK_CONTROL_HAS_NID) && \ + defined(SHRINKER_NUMA_AWARE) + if (sb->s_shrink.flags & SHRINKER_NUMA_AWARE) { + *objects = 0; + for_each_online_node(sc.nid) + *objects += (*shrinker->scan_objects)(shrinker, &sc); + } else { + *objects = (*shrinker->scan_objects)(shrinker, &sc); + } +#elif defined(HAVE_SPLIT_SHRINKER_CALLBACK) + *objects = (*shrinker->scan_objects)(shrinker, &sc); +#elif defined(HAVE_SHRINK) + *objects = (*shrinker->shrink)(shrinker, &sc); +#elif defined(HAVE_D_PRUNE_ALIASES) + *objects = zfs_sb_prune_aliases(zsb, nr_to_scan); +#else +#error "No available dentry and inode cache pruning mechanism." +#endif + ZFS_EXIT(zsb); + + dprintf_ds(zsb->z_os->os_dsl_dataset, + "pruning, nr_to_scan=%lu objects=%d error=%d\n", + nr_to_scan, *objects, error); + + return (error); +} +EXPORT_SYMBOL(zfs_sb_prune); + +/* + * Teardown the zfs_sb_t. + * + * Note, if 'unmounting' if FALSE, we return with the 'z_teardown_lock' + * and 'z_teardown_inactive_lock' held. + */ +int +zfs_sb_teardown(zfs_sb_t *zsb, boolean_t unmounting) +{ + znode_t *zp; + + /* + * If someone has not already unmounted this file system, + * drain the iput_taskq to ensure all active references to the + * zfs_sb_t have been handled only then can it be safely destroyed. + */ + if (zsb->z_os) { + /* + * If we're unmounting we have to wait for the list to + * drain completely. + * + * If we're not unmounting there's no guarantee the list + * will drain completely, but iputs run from the taskq + * may add the parents of dir-based xattrs to the taskq + * so we want to wait for these. + * + * We can safely read z_nr_znodes without locking because the + * VFS has already blocked operations which add to the + * z_all_znodes list and thus increment z_nr_znodes. + */ + int round = 0; + while (zsb->z_nr_znodes > 0) { + taskq_wait_outstanding(dsl_pool_iput_taskq( + dmu_objset_pool(zsb->z_os)), 0); + if (++round > 1 && !unmounting) + break; + } + } + + rrm_enter(&zsb->z_teardown_lock, RW_WRITER, FTAG); + + if (!unmounting) { + /* + * We purge the parent filesystem's super block as the + * parent filesystem and all of its snapshots have their + * inode's super block set to the parent's filesystem's + * super block. Note, 'z_parent' is self referential + * for non-snapshots. + */ + shrink_dcache_sb(zsb->z_parent->z_sb); + } + + /* + * Close the zil. NB: Can't close the zil while zfs_inactive + * threads are blocked as zil_close can call zfs_inactive. + */ + if (zsb->z_log) { + zil_close(zsb->z_log); + zsb->z_log = NULL; + } + + rw_enter(&zsb->z_teardown_inactive_lock, RW_WRITER); + + /* + * If we are not unmounting (ie: online recv) and someone already + * unmounted this file system while we were doing the switcheroo, + * or a reopen of z_os failed then just bail out now. + */ + if (!unmounting && (zsb->z_unmounted || zsb->z_os == NULL)) { + rw_exit(&zsb->z_teardown_inactive_lock); + rrm_exit(&zsb->z_teardown_lock, FTAG); + return (SET_ERROR(EIO)); + } + + /* + * At this point there are no VFS ops active, and any new VFS ops + * will fail with EIO since we have z_teardown_lock for writer (only + * relevant for forced unmount). + * + * Release all holds on dbufs. + */ + if (!unmounting) { + mutex_enter(&zsb->z_znodes_lock); + for (zp = list_head(&zsb->z_all_znodes); zp != NULL; + zp = list_next(&zsb->z_all_znodes, zp)) { + if (zp->z_sa_hdl) + zfs_znode_dmu_fini(zp); + } + mutex_exit(&zsb->z_znodes_lock); + } + + /* + * If we are unmounting, set the unmounted flag and let new VFS ops + * unblock. zfs_inactive will have the unmounted behavior, and all + * other VFS ops will fail with EIO. + */ + if (unmounting) { + zsb->z_unmounted = B_TRUE; + rrm_exit(&zsb->z_teardown_lock, FTAG); + rw_exit(&zsb->z_teardown_inactive_lock); + } + + /* + * z_os will be NULL if there was an error in attempting to reopen + * zsb, so just return as the properties had already been + * + * unregistered and cached data had been evicted before. + */ + if (zsb->z_os == NULL) + return (0); + + /* + * Unregister properties. + */ + zfs_unregister_callbacks(zsb); + + /* + * Evict cached data + */ + if (dsl_dataset_is_dirty(dmu_objset_ds(zsb->z_os)) && + !zfs_is_readonly(zsb)) + txg_wait_synced(dmu_objset_pool(zsb->z_os), 0); + dmu_objset_evict_dbufs(zsb->z_os); + + return (0); +} +EXPORT_SYMBOL(zfs_sb_teardown); + +#if !defined(HAVE_2ARGS_BDI_SETUP_AND_REGISTER) && \ + !defined(HAVE_3ARGS_BDI_SETUP_AND_REGISTER) +atomic_long_t zfs_bdi_seq = ATOMIC_LONG_INIT(0); +#endif + +int +zfs_domount(struct super_block *sb, zfs_mntopts_t *zmo, int silent) +{ + const char *osname = zmo->z_osname; + zfs_sb_t *zsb; + struct inode *root_inode; + uint64_t recordsize; + int error; + + error = zfs_sb_create(osname, zmo, &zsb); + if (error) + return (error); + + if ((error = dsl_prop_get_integer(osname, "recordsize", + &recordsize, NULL))) + goto out; + + zsb->z_sb = sb; + sb->s_fs_info = zsb; + sb->s_magic = ZFS_SUPER_MAGIC; + sb->s_maxbytes = MAX_LFS_FILESIZE; + sb->s_time_gran = 1; + sb->s_blocksize = recordsize; + sb->s_blocksize_bits = ilog2(recordsize); + zsb->z_bdi.ra_pages = 0; + sb->s_bdi = &zsb->z_bdi; + + error = -zpl_bdi_setup_and_register(&zsb->z_bdi, "zfs"); + if (error) + goto out; + + /* Set callback operations for the file system. */ + sb->s_op = &zpl_super_operations; + sb->s_xattr = zpl_xattr_handlers; + sb->s_export_op = &zpl_export_operations; +#ifdef HAVE_S_D_OP + sb->s_d_op = &zpl_dentry_operations; +#endif /* HAVE_S_D_OP */ + + /* Set features for file system. */ + zfs_set_fuid_feature(zsb); + + if (dmu_objset_is_snapshot(zsb->z_os)) { + uint64_t pval; + + atime_changed_cb(zsb, B_FALSE); + readonly_changed_cb(zsb, B_TRUE); + if ((error = dsl_prop_get_integer(osname, + "xattr", &pval, NULL))) + goto out; + xattr_changed_cb(zsb, pval); + if ((error = dsl_prop_get_integer(osname, + "acltype", &pval, NULL))) + goto out; + acltype_changed_cb(zsb, pval); + zsb->z_issnap = B_TRUE; + zsb->z_os->os_sync = ZFS_SYNC_DISABLED; + zsb->z_snap_defer_time = jiffies; + + mutex_enter(&zsb->z_os->os_user_ptr_lock); + dmu_objset_set_user(zsb->z_os, zsb); + mutex_exit(&zsb->z_os->os_user_ptr_lock); + } else { + error = zfs_sb_setup(zsb, B_TRUE); + } + + /* Allocate a root inode for the filesystem. */ + error = zfs_root(zsb, &root_inode); + if (error) { + (void) zfs_umount(sb); + goto out; + } + + /* Allocate a root dentry for the filesystem */ + sb->s_root = d_make_root(root_inode); + if (sb->s_root == NULL) { + (void) zfs_umount(sb); + error = SET_ERROR(ENOMEM); + goto out; + } + + if (!zsb->z_issnap) + zfsctl_create(zsb); + + zsb->z_arc_prune = arc_add_prune_callback(zpl_prune_sb, sb); +out: + if (error) { + dmu_objset_disown(zsb->z_os, zsb); + zfs_sb_free(zsb); + } + + return (error); +} +EXPORT_SYMBOL(zfs_domount); + +/* + * Called when an unmount is requested and certain sanity checks have + * already passed. At this point no dentries or inodes have been reclaimed + * from their respective caches. We drop the extra reference on the .zfs + * control directory to allow everything to be reclaimed. All snapshots + * must already have been unmounted to reach this point. + */ +void +zfs_preumount(struct super_block *sb) +{ + zfs_sb_t *zsb = sb->s_fs_info; + + if (zsb) + zfsctl_destroy(sb->s_fs_info); +} +EXPORT_SYMBOL(zfs_preumount); + +/* + * Called once all other unmount released tear down has occurred. + * It is our responsibility to release any remaining infrastructure. + */ +/*ARGSUSED*/ +int +zfs_umount(struct super_block *sb) +{ + zfs_sb_t *zsb = sb->s_fs_info; + objset_t *os; + + arc_remove_prune_callback(zsb->z_arc_prune); + VERIFY(zfs_sb_teardown(zsb, B_TRUE) == 0); + os = zsb->z_os; + bdi_destroy(sb->s_bdi); + + /* + * z_os will be NULL if there was an error in + * attempting to reopen zsb. + */ + if (os != NULL) { + /* + * Unset the objset user_ptr. + */ + mutex_enter(&os->os_user_ptr_lock); + dmu_objset_set_user(os, NULL); + mutex_exit(&os->os_user_ptr_lock); + + /* + * Finally release the objset + */ + dmu_objset_disown(os, zsb); + } + + zfs_sb_free(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_umount); + +int +zfs_remount(struct super_block *sb, int *flags, zfs_mntopts_t *zmo) +{ + zfs_sb_t *zsb = sb->s_fs_info; + int error; + + zfs_unregister_callbacks(zsb); + error = zfs_register_callbacks(zsb); + + return (error); +} +EXPORT_SYMBOL(zfs_remount); + +int +zfs_vget(struct super_block *sb, struct inode **ipp, fid_t *fidp) +{ + zfs_sb_t *zsb = sb->s_fs_info; + znode_t *zp; + uint64_t object = 0; + uint64_t fid_gen = 0; + uint64_t gen_mask; + uint64_t zp_gen; + int i, err; + + *ipp = NULL; + + ZFS_ENTER(zsb); + + if (fidp->fid_len == LONG_FID_LEN) { + zfid_long_t *zlfid = (zfid_long_t *)fidp; + uint64_t objsetid = 0; + uint64_t setgen = 0; + + for (i = 0; i < sizeof (zlfid->zf_setid); i++) + objsetid |= ((uint64_t)zlfid->zf_setid[i]) << (8 * i); + + for (i = 0; i < sizeof (zlfid->zf_setgen); i++) + setgen |= ((uint64_t)zlfid->zf_setgen[i]) << (8 * i); + + ZFS_EXIT(zsb); + + err = zfsctl_lookup_objset(sb, objsetid, &zsb); + if (err) + return (SET_ERROR(EINVAL)); + + ZFS_ENTER(zsb); + } + + if (fidp->fid_len == SHORT_FID_LEN || fidp->fid_len == LONG_FID_LEN) { + zfid_short_t *zfid = (zfid_short_t *)fidp; + + for (i = 0; i < sizeof (zfid->zf_object); i++) + object |= ((uint64_t)zfid->zf_object[i]) << (8 * i); + + for (i = 0; i < sizeof (zfid->zf_gen); i++) + fid_gen |= ((uint64_t)zfid->zf_gen[i]) << (8 * i); + } else { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* A zero fid_gen means we are in the .zfs control directories */ + if (fid_gen == 0 && + (object == ZFSCTL_INO_ROOT || object == ZFSCTL_INO_SNAPDIR)) { + *ipp = zsb->z_ctldir; + ASSERT(*ipp != NULL); + if (object == ZFSCTL_INO_SNAPDIR) { + VERIFY(zfsctl_root_lookup(*ipp, "snapshot", ipp, + 0, kcred, NULL, NULL) == 0); + } else { + igrab(*ipp); + } + ZFS_EXIT(zsb); + return (0); + } + + gen_mask = -1ULL >> (64 - 8 * i); + + dprintf("getting %llu [%llu mask %llx]\n", object, fid_gen, gen_mask); + if ((err = zfs_zget(zsb, object, &zp))) { + ZFS_EXIT(zsb); + return (err); + } + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(zsb), &zp_gen, + sizeof (uint64_t)); + zp_gen = zp_gen & gen_mask; + if (zp_gen == 0) + zp_gen = 1; + if ((fid_gen == 0) && (zsb->z_root == object)) + fid_gen = zp_gen; + if (zp->z_unlinked || zp_gen != fid_gen) { + dprintf("znode gen (%llu) != fid gen (%llu)\n", zp_gen, + fid_gen); + iput(ZTOI(zp)); + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + *ipp = ZTOI(zp); + if (*ipp) + zfs_inode_update(ITOZ(*ipp)); + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_vget); + +/* + * Block out VFS ops and close zfs_sb_t + * + * Note, if successful, then we return with the 'z_teardown_lock' and + * 'z_teardown_inactive_lock' write held. We leave ownership of the underlying + * dataset and objset intact so that they can be atomically handed off during + * a subsequent rollback or recv operation and the resume thereafter. + */ +int +zfs_suspend_fs(zfs_sb_t *zsb) +{ + int error; + + if ((error = zfs_sb_teardown(zsb, B_FALSE)) != 0) + return (error); + + return (0); +} +EXPORT_SYMBOL(zfs_suspend_fs); + +/* + * Reopen zfs_sb_t and release VFS ops. + */ +int +zfs_resume_fs(zfs_sb_t *zsb, const char *osname) +{ + int err, err2; + znode_t *zp; + uint64_t sa_obj = 0; + + ASSERT(RRM_WRITE_HELD(&zsb->z_teardown_lock)); + ASSERT(RW_WRITE_HELD(&zsb->z_teardown_inactive_lock)); + + /* + * We already own this, so just hold and rele it to update the + * objset_t, as the one we had before may have been evicted. + */ + VERIFY0(dmu_objset_hold(osname, zsb, &zsb->z_os)); + VERIFY3P(zsb->z_os->os_dsl_dataset->ds_owner, ==, zsb); + VERIFY(dsl_dataset_long_held(zsb->z_os->os_dsl_dataset)); + dmu_objset_rele(zsb->z_os, zsb); + + /* + * Make sure version hasn't changed + */ + + err = zfs_get_zplprop(zsb->z_os, ZFS_PROP_VERSION, + &zsb->z_version); + + if (err) + goto bail; + + err = zap_lookup(zsb->z_os, MASTER_NODE_OBJ, + ZFS_SA_ATTRS, 8, 1, &sa_obj); + + if (err && zsb->z_version >= ZPL_VERSION_SA) + goto bail; + + if ((err = sa_setup(zsb->z_os, sa_obj, + zfs_attr_table, ZPL_END, &zsb->z_attr_table)) != 0) + goto bail; + + if (zsb->z_version >= ZPL_VERSION_SA) + sa_register_update_callback(zsb->z_os, + zfs_sa_upgrade); + + VERIFY(zfs_sb_setup(zsb, B_FALSE) == 0); + + zfs_set_fuid_feature(zsb); + zsb->z_rollback_time = jiffies; + + /* + * Attempt to re-establish all the active inodes with their + * dbufs. If a zfs_rezget() fails, then we unhash the inode + * and mark it stale. This prevents a collision if a new + * inode/object is created which must use the same inode + * number. The stale inode will be be released when the + * VFS prunes the dentry holding the remaining references + * on the stale inode. + */ + mutex_enter(&zsb->z_znodes_lock); + for (zp = list_head(&zsb->z_all_znodes); zp; + zp = list_next(&zsb->z_all_znodes, zp)) { + err2 = zfs_rezget(zp); + if (err2) { + remove_inode_hash(ZTOI(zp)); + zp->z_is_stale = B_TRUE; + } + } + mutex_exit(&zsb->z_znodes_lock); + +bail: + /* release the VFS ops */ + rw_exit(&zsb->z_teardown_inactive_lock); + rrm_exit(&zsb->z_teardown_lock, FTAG); + + if (err) { + /* + * Since we couldn't setup the sa framework, try to force + * unmount this file system. + */ + if (zsb->z_os) + (void) zfs_umount(zsb->z_sb); + } + return (err); +} +EXPORT_SYMBOL(zfs_resume_fs); + +int +zfs_set_version(zfs_sb_t *zsb, uint64_t newvers) +{ + int error; + objset_t *os = zsb->z_os; + dmu_tx_t *tx; + + if (newvers < ZPL_VERSION_INITIAL || newvers > ZPL_VERSION) + return (SET_ERROR(EINVAL)); + + if (newvers < zsb->z_version) + return (SET_ERROR(EINVAL)); + + if (zfs_spa_version_map(newvers) > + spa_version(dmu_objset_spa(zsb->z_os))) + return (SET_ERROR(ENOTSUP)); + + tx = dmu_tx_create(os); + dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, B_FALSE, ZPL_VERSION_STR); + if (newvers >= ZPL_VERSION_SA && !zsb->z_use_sa) { + dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, B_TRUE, + ZFS_SA_ATTRS); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL); + } + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + return (error); + } + + error = zap_update(os, MASTER_NODE_OBJ, ZPL_VERSION_STR, + 8, 1, &newvers, tx); + + if (error) { + dmu_tx_commit(tx); + return (error); + } + + if (newvers >= ZPL_VERSION_SA && !zsb->z_use_sa) { + uint64_t sa_obj; + + ASSERT3U(spa_version(dmu_objset_spa(zsb->z_os)), >=, + SPA_VERSION_SA); + sa_obj = zap_create(os, DMU_OT_SA_MASTER_NODE, + DMU_OT_NONE, 0, tx); + + error = zap_add(os, MASTER_NODE_OBJ, + ZFS_SA_ATTRS, 8, 1, &sa_obj, tx); + ASSERT0(error); + + VERIFY(0 == sa_set_sa_object(os, sa_obj)); + sa_register_update_callback(os, zfs_sa_upgrade); + } + + spa_history_log_internal_ds(dmu_objset_ds(os), "upgrade", tx, + "from %llu to %llu", zsb->z_version, newvers); + + dmu_tx_commit(tx); + + zsb->z_version = newvers; + + zfs_set_fuid_feature(zsb); + + return (0); +} +EXPORT_SYMBOL(zfs_set_version); + +/* + * Read a property stored within the master node. + */ +int +zfs_get_zplprop(objset_t *os, zfs_prop_t prop, uint64_t *value) +{ + const char *pname; + int error = SET_ERROR(ENOENT); + + /* + * Look up the file system's value for the property. For the + * version property, we look up a slightly different string. + */ + if (prop == ZFS_PROP_VERSION) + pname = ZPL_VERSION_STR; + else + pname = zfs_prop_to_name(prop); + + if (os != NULL) + error = zap_lookup(os, MASTER_NODE_OBJ, pname, 8, 1, value); + + if (error == ENOENT) { + /* No value set, use the default value */ + switch (prop) { + case ZFS_PROP_VERSION: + *value = ZPL_VERSION; + break; + case ZFS_PROP_NORMALIZE: + case ZFS_PROP_UTF8ONLY: + *value = 0; + break; + case ZFS_PROP_CASE: + *value = ZFS_CASE_SENSITIVE; + break; + case ZFS_PROP_ACLTYPE: + *value = ZFS_ACLTYPE_OFF; + break; + default: + return (error); + } + error = 0; + } + return (error); +} +EXPORT_SYMBOL(zfs_get_zplprop); + +void +zfs_init(void) +{ + zfsctl_init(); + zfs_znode_init(); + dmu_objset_register_type(DMU_OST_ZFS, zfs_space_delta_cb); + register_filesystem(&zpl_fs_type); +} + +void +zfs_fini(void) +{ + taskq_wait_outstanding(system_taskq, 0); + unregister_filesystem(&zpl_fs_type); + zfs_znode_fini(); + zfsctl_fini(); +} --- linux-4.4.0.orig/zfs/module/zfs/zfs_vnops.c +++ linux-4.4.0/zfs/module/zfs/zfs_vnops.c @@ -0,0 +1,4673 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + +/* Portions Copyright 2007 Jeremy Teo */ +/* Portions Copyright 2010 Robert Milkowski */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fs/fs_subr.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Programming rules. + * + * Each vnode op performs some logical unit of work. To do this, the ZPL must + * properly lock its in-core state, create a DMU transaction, do the work, + * record this work in the intent log (ZIL), commit the DMU transaction, + * and wait for the intent log to commit if it is a synchronous operation. + * Moreover, the vnode ops must work in both normal and log replay context. + * The ordering of events is important to avoid deadlocks and references + * to freed memory. The example below illustrates the following Big Rules: + * + * (1) A check must be made in each zfs thread for a mounted file system. + * This is done avoiding races using ZFS_ENTER(zsb). + * A ZFS_EXIT(zsb) is needed before all returns. Any znodes + * must be checked with ZFS_VERIFY_ZP(zp). Both of these macros + * can return EIO from the calling function. + * + * (2) iput() should always be the last thing except for zil_commit() + * (if necessary) and ZFS_EXIT(). This is for 3 reasons: + * First, if it's the last reference, the vnode/znode + * can be freed, so the zp may point to freed memory. Second, the last + * reference will call zfs_zinactive(), which may induce a lot of work -- + * pushing cached pages (which acquires range locks) and syncing out + * cached atime changes. Third, zfs_zinactive() may require a new tx, + * which could deadlock the system if you were already holding one. + * If you must call iput() within a tx then use zfs_iput_async(). + * + * (3) All range locks must be grabbed before calling dmu_tx_assign(), + * as they can span dmu_tx_assign() calls. + * + * (4) If ZPL locks are held, pass TXG_NOWAIT as the second argument to + * dmu_tx_assign(). This is critical because we don't want to block + * while holding locks. + * + * If no ZPL locks are held (aside from ZFS_ENTER()), use TXG_WAIT. This + * reduces lock contention and CPU usage when we must wait (note that if + * throughput is constrained by the storage, nearly every transaction + * must wait). + * + * Note, in particular, that if a lock is sometimes acquired before + * the tx assigns, and sometimes after (e.g. z_lock), then failing + * to use a non-blocking assign can deadlock the system. The scenario: + * + * Thread A has grabbed a lock before calling dmu_tx_assign(). + * Thread B is in an already-assigned tx, and blocks for this lock. + * Thread A calls dmu_tx_assign(TXG_WAIT) and blocks in txg_wait_open() + * forever, because the previous txg can't quiesce until B's tx commits. + * + * If dmu_tx_assign() returns ERESTART and zsb->z_assign is TXG_NOWAIT, + * then drop all locks, call dmu_tx_wait(), and try again. On subsequent + * calls to dmu_tx_assign(), pass TXG_WAITED rather than TXG_NOWAIT, + * to indicate that this operation has already called dmu_tx_wait(). + * This will ensure that we don't retry forever, waiting a short bit + * each time. + * + * (5) If the operation succeeded, generate the intent log entry for it + * before dropping locks. This ensures that the ordering of events + * in the intent log matches the order in which they actually occurred. + * During ZIL replay the zfs_log_* functions will update the sequence + * number to indicate the zil transaction has replayed. + * + * (6) At the end of each vnode op, the DMU tx must always commit, + * regardless of whether there were any errors. + * + * (7) After dropping all locks, invoke zil_commit(zilog, foid) + * to ensure that synchronous semantics are provided when necessary. + * + * In general, this is how things should be ordered in each vnode op: + * + * ZFS_ENTER(zsb); // exit if unmounted + * top: + * zfs_dirent_lock(&dl, ...) // lock directory entry (may igrab()) + * rw_enter(...); // grab any other locks you need + * tx = dmu_tx_create(...); // get DMU tx + * dmu_tx_hold_*(); // hold each object you might modify + * error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + * if (error) { + * rw_exit(...); // drop locks + * zfs_dirent_unlock(dl); // unlock directory entry + * iput(...); // release held vnodes + * if (error == ERESTART) { + * waited = B_TRUE; + * dmu_tx_wait(tx); + * dmu_tx_abort(tx); + * goto top; + * } + * dmu_tx_abort(tx); // abort DMU tx + * ZFS_EXIT(zsb); // finished in zfs + * return (error); // really out of space + * } + * error = do_real_work(); // do whatever this VOP does + * if (error == 0) + * zfs_log_*(...); // on success, make ZIL entry + * dmu_tx_commit(tx); // commit DMU tx -- error or not + * rw_exit(...); // drop locks + * zfs_dirent_unlock(dl); // unlock directory entry + * iput(...); // release held vnodes + * zil_commit(zilog, foid); // synchronous when necessary + * ZFS_EXIT(zsb); // finished in zfs + * return (error); // done, report error + */ + +/* + * Virus scanning is unsupported. It would be possible to add a hook + * here to performance the required virus scan. This could be done + * entirely in the kernel or potentially as an update to invoke a + * scanning utility. + */ +static int +zfs_vscan(struct inode *ip, cred_t *cr, int async) +{ + return (0); +} + +/* ARGSUSED */ +int +zfs_open(struct inode *ip, int mode, int flag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + /* Honor ZFS_APPENDONLY file attribute */ + if ((mode & FMODE_WRITE) && (zp->z_pflags & ZFS_APPENDONLY) && + ((flag & O_APPEND) == 0)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + /* Virus scan eligible files on open */ + if (!zfs_has_ctldir(zp) && zsb->z_vscan && S_ISREG(ip->i_mode) && + !(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0) { + if (zfs_vscan(ip, cr, 0) != 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EACCES)); + } + } + + /* Keep a count of the synchronous opens in the znode */ + if (flag & O_SYNC) + atomic_inc_32(&zp->z_sync_cnt); + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_open); + +/* ARGSUSED */ +int +zfs_close(struct inode *ip, int flag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + /* Decrement the synchronous opens in the znode */ + if (flag & O_SYNC) + atomic_dec_32(&zp->z_sync_cnt); + + if (!zfs_has_ctldir(zp) && zsb->z_vscan && S_ISREG(ip->i_mode) && + !(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0) + VERIFY(zfs_vscan(ip, cr, 1) == 0); + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_close); + +#if defined(SEEK_HOLE) && defined(SEEK_DATA) +/* + * Lseek support for finding holes (cmd == SEEK_HOLE) and + * data (cmd == SEEK_DATA). "off" is an in/out parameter. + */ +static int +zfs_holey_common(struct inode *ip, int cmd, loff_t *off) +{ + znode_t *zp = ITOZ(ip); + uint64_t noff = (uint64_t)*off; /* new offset */ + uint64_t file_sz; + int error; + boolean_t hole; + + file_sz = zp->z_size; + if (noff >= file_sz) { + return (SET_ERROR(ENXIO)); + } + + if (cmd == SEEK_HOLE) + hole = B_TRUE; + else + hole = B_FALSE; + + error = dmu_offset_next(ZTOZSB(zp)->z_os, zp->z_id, hole, &noff); + + if (error == ESRCH) + return (SET_ERROR(ENXIO)); + + /* + * We could find a hole that begins after the logical end-of-file, + * because dmu_offset_next() only works on whole blocks. If the + * EOF falls mid-block, then indicate that the "virtual hole" + * at the end of the file begins at the logical EOF, rather than + * at the end of the last block. + */ + if (noff > file_sz) { + ASSERT(hole); + noff = file_sz; + } + + if (noff < *off) + return (error); + *off = noff; + return (error); +} + +int +zfs_holey(struct inode *ip, int cmd, loff_t *off) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + error = zfs_holey_common(ip, cmd, off); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_holey); +#endif /* SEEK_HOLE && SEEK_DATA */ + +#if defined(_KERNEL) +/* + * When a file is memory mapped, we must keep the IO data synchronized + * between the DMU cache and the memory mapped pages. What this means: + * + * On Write: If we find a memory mapped page, we write to *both* + * the page and the dmu buffer. + */ +static void +update_pages(struct inode *ip, int64_t start, int len, + objset_t *os, uint64_t oid) +{ + struct address_space *mp = ip->i_mapping; + struct page *pp; + uint64_t nbytes; + int64_t off; + void *pb; + + off = start & (PAGE_CACHE_SIZE-1); + for (start &= PAGE_CACHE_MASK; len > 0; start += PAGE_CACHE_SIZE) { + nbytes = MIN(PAGE_CACHE_SIZE - off, len); + + pp = find_lock_page(mp, start >> PAGE_CACHE_SHIFT); + if (pp) { + if (mapping_writably_mapped(mp)) + flush_dcache_page(pp); + + pb = kmap(pp); + (void) dmu_read(os, oid, start+off, nbytes, pb+off, + DMU_READ_PREFETCH); + kunmap(pp); + + if (mapping_writably_mapped(mp)) + flush_dcache_page(pp); + + mark_page_accessed(pp); + SetPageUptodate(pp); + ClearPageError(pp); + unlock_page(pp); + page_cache_release(pp); + } + + len -= nbytes; + off = 0; + } +} + +/* + * When a file is memory mapped, we must keep the IO data synchronized + * between the DMU cache and the memory mapped pages. What this means: + * + * On Read: We "read" preferentially from memory mapped pages, + * else we default from the dmu buffer. + * + * NOTE: We will always "break up" the IO into PAGESIZE uiomoves when + * the file is memory mapped. + */ +static int +mappedread(struct inode *ip, int nbytes, uio_t *uio) +{ + struct address_space *mp = ip->i_mapping; + struct page *pp; + znode_t *zp = ITOZ(ip); + int64_t start, off; + uint64_t bytes; + int len = nbytes; + int error = 0; + void *pb; + + start = uio->uio_loffset; + off = start & (PAGE_CACHE_SIZE-1); + for (start &= PAGE_CACHE_MASK; len > 0; start += PAGE_CACHE_SIZE) { + bytes = MIN(PAGE_CACHE_SIZE - off, len); + + pp = find_lock_page(mp, start >> PAGE_CACHE_SHIFT); + if (pp) { + ASSERT(PageUptodate(pp)); + + pb = kmap(pp); + error = uiomove(pb + off, bytes, UIO_READ, uio); + kunmap(pp); + + if (mapping_writably_mapped(mp)) + flush_dcache_page(pp); + + mark_page_accessed(pp); + unlock_page(pp); + page_cache_release(pp); + } else { + error = dmu_read_uio_dbuf(sa_get_db(zp->z_sa_hdl), + uio, bytes); + } + + len -= bytes; + off = 0; + if (error) + break; + } + return (error); +} +#endif /* _KERNEL */ + +unsigned long zfs_read_chunk_size = 1024 * 1024; /* Tunable */ + +/* + * Read bytes from specified file into supplied buffer. + * + * IN: ip - inode of file to be read from. + * uio - structure supplying read location, range info, + * and return buffer. + * ioflag - FSYNC flags; used to provide FRSYNC semantics. + * O_DIRECT flag; used to bypass page cache. + * cr - credentials of caller. + * + * OUT: uio - updated offset and range, buffer filled. + * + * RETURN: 0 on success, error code on failure. + * + * Side Effects: + * inode - atime updated if byte count > 0 + */ +/* ARGSUSED */ +int +zfs_read(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + ssize_t n, nbytes; + int error = 0; + rl_t *rl; +#ifdef HAVE_UIO_ZEROCOPY + xuio_t *xuio = NULL; +#endif /* HAVE_UIO_ZEROCOPY */ + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if (zp->z_pflags & ZFS_AV_QUARANTINED) { + ZFS_EXIT(zsb); + return (SET_ERROR(EACCES)); + } + + /* + * Validate file offset + */ + if (uio->uio_loffset < (offset_t)0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* + * Fasttrack empty reads + */ + if (uio->uio_resid == 0) { + ZFS_EXIT(zsb); + return (0); + } + + /* + * If we're in FRSYNC mode, sync out this znode before reading it. + */ + if (ioflag & FRSYNC || zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zsb->z_log, zp->z_id); + + /* + * Lock the range against changes. + */ + rl = zfs_range_lock(zp, uio->uio_loffset, uio->uio_resid, RL_READER); + + /* + * If we are reading past end-of-file we can skip + * to the end; but we might still need to set atime. + */ + if (uio->uio_loffset >= zp->z_size) { + error = 0; + goto out; + } + + ASSERT(uio->uio_loffset < zp->z_size); + n = MIN(uio->uio_resid, zp->z_size - uio->uio_loffset); + +#ifdef HAVE_UIO_ZEROCOPY + if ((uio->uio_extflg == UIO_XUIO) && + (((xuio_t *)uio)->xu_type == UIOTYPE_ZEROCOPY)) { + int nblk; + int blksz = zp->z_blksz; + uint64_t offset = uio->uio_loffset; + + xuio = (xuio_t *)uio; + if ((ISP2(blksz))) { + nblk = (P2ROUNDUP(offset + n, blksz) - P2ALIGN(offset, + blksz)) / blksz; + } else { + ASSERT(offset + n <= blksz); + nblk = 1; + } + (void) dmu_xuio_init(xuio, nblk); + + if (vn_has_cached_data(ip)) { + /* + * For simplicity, we always allocate a full buffer + * even if we only expect to read a portion of a block. + */ + while (--nblk >= 0) { + (void) dmu_xuio_add(xuio, + dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl), + blksz), 0, blksz); + } + } + } +#endif /* HAVE_UIO_ZEROCOPY */ + + while (n > 0) { + nbytes = MIN(n, zfs_read_chunk_size - + P2PHASE(uio->uio_loffset, zfs_read_chunk_size)); + + if (zp->z_is_mapped && !(ioflag & O_DIRECT)) { + error = mappedread(ip, nbytes, uio); + } else { + error = dmu_read_uio_dbuf(sa_get_db(zp->z_sa_hdl), + uio, nbytes); + } + + if (error) { + /* convert checksum errors into IO errors */ + if (error == ECKSUM) + error = SET_ERROR(EIO); + break; + } + + n -= nbytes; + } +out: + zfs_range_unlock(rl); + + ZFS_ACCESSTIME_STAMP(zsb, zp); + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_read); + +/* + * Write the bytes to a file. + * + * IN: ip - inode of file to be written to. + * uio - structure supplying write location, range info, + * and data buffer. + * ioflag - FAPPEND flag set if in append mode. + * O_DIRECT flag; used to bypass page cache. + * cr - credentials of caller. + * + * OUT: uio - updated offset and range. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * ip - ctime|mtime updated if byte count > 0 + */ + +/* ARGSUSED */ +int +zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + rlim64_t limit = uio->uio_limit; + ssize_t start_resid = uio->uio_resid; + ssize_t tx_bytes; + uint64_t end_size; + dmu_tx_t *tx; + zfs_sb_t *zsb = ZTOZSB(zp); + zilog_t *zilog; + offset_t woff; + ssize_t n, nbytes; + rl_t *rl; + int max_blksz = zsb->z_max_blksz; + int error = 0; + arc_buf_t *abuf; + const iovec_t *aiov = NULL; + xuio_t *xuio = NULL; + int i_iov = 0; + const iovec_t *iovp = uio->uio_iov; + int write_eof; + int count = 0; + sa_bulk_attr_t bulk[4]; + uint64_t mtime[2], ctime[2]; + ASSERTV(int iovcnt = uio->uio_iovcnt); + + /* + * Fasttrack empty write + */ + n = start_resid; + if (n == 0) + return (0); + + if (limit == RLIM64_INFINITY || limit > MAXOFFSET_T) + limit = MAXOFFSET_T; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, &mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, &ctime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), NULL, &zp->z_size, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, 8); + + /* + * If immutable or not appending then return EPERM + */ + if ((zp->z_pflags & (ZFS_IMMUTABLE | ZFS_READONLY)) || + ((zp->z_pflags & ZFS_APPENDONLY) && !(ioflag & FAPPEND) && + (uio->uio_loffset < zp->z_size))) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + zilog = zsb->z_log; + + /* + * Validate file offset + */ + woff = ioflag & FAPPEND ? zp->z_size : uio->uio_loffset; + if (woff < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* + * Pre-fault the pages to ensure slow (eg NFS) pages + * don't hold up txg. + * Skip this if uio contains loaned arc_buf. + */ +#ifdef HAVE_UIO_ZEROCOPY + if ((uio->uio_extflg == UIO_XUIO) && + (((xuio_t *)uio)->xu_type == UIOTYPE_ZEROCOPY)) + xuio = (xuio_t *)uio; + else +#endif + uio_prefaultpages(MIN(n, max_blksz), uio); + + /* + * If in append mode, set the io offset pointer to eof. + */ + if (ioflag & FAPPEND) { + /* + * Obtain an appending range lock to guarantee file append + * semantics. We reset the write offset once we have the lock. + */ + rl = zfs_range_lock(zp, 0, n, RL_APPEND); + woff = rl->r_off; + if (rl->r_len == UINT64_MAX) { + /* + * We overlocked the file because this write will cause + * the file block size to increase. + * Note that zp_size cannot change with this lock held. + */ + woff = zp->z_size; + } + uio->uio_loffset = woff; + } else { + /* + * Note that if the file block size will change as a result of + * this write, then this range lock will lock the entire file + * so that we can re-write the block safely. + */ + rl = zfs_range_lock(zp, woff, n, RL_WRITER); + } + + if (woff >= limit) { + zfs_range_unlock(rl); + ZFS_EXIT(zsb); + return (SET_ERROR(EFBIG)); + } + + if ((woff + n) > limit || woff > (limit - n)) + n = limit - woff; + + /* Will this write extend the file length? */ + write_eof = (woff + n > zp->z_size); + + end_size = MAX(zp->z_size, woff + n); + + /* + * Write the file in reasonable size chunks. Each chunk is written + * in a separate transaction; this keeps the intent log records small + * and allows us to do more fine-grained space accounting. + */ + while (n > 0) { + abuf = NULL; + woff = uio->uio_loffset; + if (zfs_owner_overquota(zsb, zp, B_FALSE) || + zfs_owner_overquota(zsb, zp, B_TRUE)) { + if (abuf != NULL) + dmu_return_arcbuf(abuf); + error = SET_ERROR(EDQUOT); + break; + } + + if (xuio && abuf == NULL) { + ASSERT(i_iov < iovcnt); + ASSERT3U(uio->uio_segflg, !=, UIO_BVEC); + aiov = &iovp[i_iov]; + abuf = dmu_xuio_arcbuf(xuio, i_iov); + dmu_xuio_clear(xuio, i_iov); + ASSERT((aiov->iov_base == abuf->b_data) || + ((char *)aiov->iov_base - (char *)abuf->b_data + + aiov->iov_len == arc_buf_size(abuf))); + i_iov++; + } else if (abuf == NULL && n >= max_blksz && + woff >= zp->z_size && + P2PHASE(woff, max_blksz) == 0 && + zp->z_blksz == max_blksz) { + /* + * This write covers a full block. "Borrow" a buffer + * from the dmu so that we can fill it before we enter + * a transaction. This avoids the possibility of + * holding up the transaction if the data copy hangs + * up on a pagefault (e.g., from an NFS server mapping). + */ + size_t cbytes; + + abuf = dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl), + max_blksz); + ASSERT(abuf != NULL); + ASSERT(arc_buf_size(abuf) == max_blksz); + if ((error = uiocopy(abuf->b_data, max_blksz, + UIO_WRITE, uio, &cbytes))) { + dmu_return_arcbuf(abuf); + break; + } + ASSERT(cbytes == max_blksz); + } + + /* + * Start a transaction. + */ + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + dmu_tx_hold_write(tx, zp->z_id, woff, MIN(n, max_blksz)); + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + if (abuf != NULL) + dmu_return_arcbuf(abuf); + break; + } + + /* + * If zfs_range_lock() over-locked we grow the blocksize + * and then reduce the lock range. This will only happen + * on the first iteration since zfs_range_reduce() will + * shrink down r_len to the appropriate size. + */ + if (rl->r_len == UINT64_MAX) { + uint64_t new_blksz; + + if (zp->z_blksz > max_blksz) { + /* + * File's blocksize is already larger than the + * "recordsize" property. Only let it grow to + * the next power of 2. + */ + ASSERT(!ISP2(zp->z_blksz)); + new_blksz = MIN(end_size, + 1 << highbit64(zp->z_blksz)); + } else { + new_blksz = MIN(end_size, max_blksz); + } + zfs_grow_blocksize(zp, new_blksz, tx); + zfs_range_reduce(rl, woff, n); + } + + /* + * XXX - should we really limit each write to z_max_blksz? + * Perhaps we should use SPA_MAXBLOCKSIZE chunks? + */ + nbytes = MIN(n, max_blksz - P2PHASE(woff, max_blksz)); + + if (abuf == NULL) { + tx_bytes = uio->uio_resid; + error = dmu_write_uio_dbuf(sa_get_db(zp->z_sa_hdl), + uio, nbytes, tx); + tx_bytes -= uio->uio_resid; + } else { + tx_bytes = nbytes; + ASSERT(xuio == NULL || tx_bytes == aiov->iov_len); + /* + * If this is not a full block write, but we are + * extending the file past EOF and this data starts + * block-aligned, use assign_arcbuf(). Otherwise, + * write via dmu_write(). + */ + if (tx_bytes < max_blksz && (!write_eof || + aiov->iov_base != abuf->b_data)) { + ASSERT(xuio); + dmu_write(zsb->z_os, zp->z_id, woff, + aiov->iov_len, aiov->iov_base, tx); + dmu_return_arcbuf(abuf); + xuio_stat_wbuf_copied(); + } else { + ASSERT(xuio || tx_bytes == max_blksz); + dmu_assign_arcbuf(sa_get_db(zp->z_sa_hdl), + woff, abuf, tx); + } + ASSERT(tx_bytes <= uio->uio_resid); + uioskip(uio, tx_bytes); + } + + if (tx_bytes && zp->z_is_mapped && !(ioflag & O_DIRECT)) + update_pages(ip, woff, tx_bytes, zsb->z_os, zp->z_id); + + /* + * If we made no progress, we're done. If we made even + * partial progress, update the znode and ZIL accordingly. + */ + if (tx_bytes == 0) { + (void) sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(zsb), + (void *)&zp->z_size, sizeof (uint64_t), tx); + dmu_tx_commit(tx); + ASSERT(error != 0); + break; + } + + /* + * Clear Set-UID/Set-GID bits on successful write if not + * privileged and at least one of the excute bits is set. + * + * It would be nice to to this after all writes have + * been done, but that would still expose the ISUID/ISGID + * to another app after the partial write is committed. + * + * Note: we don't call zfs_fuid_map_id() here because + * user 0 is not an ephemeral uid. + */ + mutex_enter(&zp->z_acl_lock); + if ((zp->z_mode & (S_IXUSR | (S_IXUSR >> 3) | + (S_IXUSR >> 6))) != 0 && + (zp->z_mode & (S_ISUID | S_ISGID)) != 0 && + secpolicy_vnode_setid_retain(cr, + (zp->z_mode & S_ISUID) != 0 && zp->z_uid == 0) != 0) { + uint64_t newmode; + zp->z_mode &= ~(S_ISUID | S_ISGID); + newmode = zp->z_mode; + (void) sa_update(zp->z_sa_hdl, SA_ZPL_MODE(zsb), + (void *)&newmode, sizeof (uint64_t), tx); + } + mutex_exit(&zp->z_acl_lock); + + zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, + B_TRUE); + + /* + * Update the file size (zp_size) if it has changed; + * account for possible concurrent updates. + */ + while ((end_size = zp->z_size) < uio->uio_loffset) { + (void) atomic_cas_64(&zp->z_size, end_size, + uio->uio_loffset); + ASSERT(error == 0); + } + /* + * If we are replaying and eof is non zero then force + * the file size to the specified eof. Note, there's no + * concurrency during replay. + */ + if (zsb->z_replay && zsb->z_replay_eof != 0) + zp->z_size = zsb->z_replay_eof; + + error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); + + zfs_log_write(zilog, tx, TX_WRITE, zp, woff, tx_bytes, ioflag, + NULL, NULL); + dmu_tx_commit(tx); + + if (error != 0) + break; + ASSERT(tx_bytes == nbytes); + n -= nbytes; + + if (!xuio && n > 0) + uio_prefaultpages(MIN(n, max_blksz), uio); + } + + zfs_inode_update(zp); + zfs_range_unlock(rl); + + /* + * If we're in replay mode, or we made no progress, return error. + * Otherwise, it's at least a partial write, so it's successful. + */ + if (zsb->z_replay || uio->uio_resid == start_resid) { + ZFS_EXIT(zsb); + return (error); + } + + if (ioflag & (FSYNC | FDSYNC) || + zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, zp->z_id); + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_write); + +void +zfs_iput_async(struct inode *ip) +{ + objset_t *os = ITOZSB(ip)->z_os; + + ASSERT(atomic_read(&ip->i_count) > 0); + ASSERT(os != NULL); + + if (atomic_read(&ip->i_count) == 1) + taskq_dispatch(dsl_pool_iput_taskq(dmu_objset_pool(os)), + (task_func_t *)iput, ip, TQ_SLEEP); + else + iput(ip); +} + +void +zfs_get_done(zgd_t *zgd, int error) +{ + znode_t *zp = zgd->zgd_private; + + if (zgd->zgd_db) + dmu_buf_rele(zgd->zgd_db, zgd); + + zfs_range_unlock(zgd->zgd_rl); + + /* + * Release the vnode asynchronously as we currently have the + * txg stopped from syncing. + */ + zfs_iput_async(ZTOI(zp)); + + if (error == 0 && zgd->zgd_bp) + zil_add_block(zgd->zgd_zilog, zgd->zgd_bp); + + kmem_free(zgd, sizeof (zgd_t)); +} + +#ifdef DEBUG +static int zil_fault_io = 0; +#endif + +/* + * Get data to generate a TX_WRITE intent log record. + */ +int +zfs_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio) +{ + zfs_sb_t *zsb = arg; + objset_t *os = zsb->z_os; + znode_t *zp; + uint64_t object = lr->lr_foid; + uint64_t offset = lr->lr_offset; + uint64_t size = lr->lr_length; + blkptr_t *bp = &lr->lr_blkptr; + dmu_buf_t *db; + zgd_t *zgd; + int error = 0; + + ASSERT(zio != NULL); + ASSERT(size != 0); + + /* + * Nothing to do if the file has been removed + */ + if (zfs_zget(zsb, object, &zp) != 0) + return (SET_ERROR(ENOENT)); + if (zp->z_unlinked) { + /* + * Release the vnode asynchronously as we currently have the + * txg stopped from syncing. + */ + zfs_iput_async(ZTOI(zp)); + return (SET_ERROR(ENOENT)); + } + + zgd = (zgd_t *)kmem_zalloc(sizeof (zgd_t), KM_SLEEP); + zgd->zgd_zilog = zsb->z_log; + zgd->zgd_private = zp; + + /* + * Write records come in two flavors: immediate and indirect. + * For small writes it's cheaper to store the data with the + * log record (immediate); for large writes it's cheaper to + * sync the data and get a pointer to it (indirect) so that + * we don't have to write the data twice. + */ + if (buf != NULL) { /* immediate write */ + zgd->zgd_rl = zfs_range_lock(zp, offset, size, RL_READER); + /* test for truncation needs to be done while range locked */ + if (offset >= zp->z_size) { + error = SET_ERROR(ENOENT); + } else { + error = dmu_read(os, object, offset, size, buf, + DMU_READ_NO_PREFETCH); + } + ASSERT(error == 0 || error == ENOENT); + } else { /* indirect write */ + /* + * Have to lock the whole block to ensure when it's + * written out and it's checksum is being calculated + * that no one can change the data. We need to re-check + * blocksize after we get the lock in case it's changed! + */ + for (;;) { + uint64_t blkoff; + size = zp->z_blksz; + blkoff = ISP2(size) ? P2PHASE(offset, size) : offset; + offset -= blkoff; + zgd->zgd_rl = zfs_range_lock(zp, offset, size, + RL_READER); + if (zp->z_blksz == size) + break; + offset += blkoff; + zfs_range_unlock(zgd->zgd_rl); + } + /* test for truncation needs to be done while range locked */ + if (lr->lr_offset >= zp->z_size) + error = SET_ERROR(ENOENT); +#ifdef DEBUG + if (zil_fault_io) { + error = SET_ERROR(EIO); + zil_fault_io = 0; + } +#endif + if (error == 0) + error = dmu_buf_hold(os, object, offset, zgd, &db, + DMU_READ_NO_PREFETCH); + + if (error == 0) { + blkptr_t *obp = dmu_buf_get_blkptr(db); + if (obp) { + ASSERT(BP_IS_HOLE(bp)); + *bp = *obp; + } + + zgd->zgd_db = db; + zgd->zgd_bp = bp; + + ASSERT(db->db_offset == offset); + ASSERT(db->db_size == size); + + error = dmu_sync(zio, lr->lr_common.lrc_txg, + zfs_get_done, zgd); + ASSERT(error || lr->lr_length <= zp->z_blksz); + + /* + * On success, we need to wait for the write I/O + * initiated by dmu_sync() to complete before we can + * release this dbuf. We will finish everything up + * in the zfs_get_done() callback. + */ + if (error == 0) + return (0); + + if (error == EALREADY) { + lr->lr_common.lrc_txtype = TX_WRITE2; + error = 0; + } + } + } + + zfs_get_done(zgd, error); + + return (error); +} + +/*ARGSUSED*/ +int +zfs_access(struct inode *ip, int mode, int flag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if (flag & V_ACE_MASK) + error = zfs_zaccess(zp, mode, flag, B_FALSE, cr); + else + error = zfs_zaccess_rwx(zp, mode, flag, cr); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_access); + +/* + * Lookup an entry in a directory, or an extended attribute directory. + * If it exists, return a held inode reference for it. + * + * IN: dip - inode of directory to search. + * nm - name of entry to lookup. + * flags - LOOKUP_XATTR set if looking for an attribute. + * cr - credentials of caller. + * direntflags - directory lookup flags + * realpnp - returned pathname. + * + * OUT: ipp - inode of located entry, NULL if not found. + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * NA + */ +/* ARGSUSED */ +int +zfs_lookup(struct inode *dip, char *nm, struct inode **ipp, int flags, + cred_t *cr, int *direntflags, pathname_t *realpnp) +{ + znode_t *zdp = ITOZ(dip); + zfs_sb_t *zsb = ITOZSB(dip); + int error = 0; + + /* fast path */ + if (!(flags & (LOOKUP_XATTR | FIGNORECASE))) { + + if (!S_ISDIR(dip->i_mode)) { + return (SET_ERROR(ENOTDIR)); + } else if (zdp->z_sa_hdl == NULL) { + return (SET_ERROR(EIO)); + } + + if (nm[0] == 0 || (nm[0] == '.' && nm[1] == '\0')) { + error = zfs_fastaccesschk_execute(zdp, cr); + if (!error) { + *ipp = dip; + igrab(*ipp); + return (0); + } + return (error); +#ifdef HAVE_DNLC + } else { + vnode_t *tvp = dnlc_lookup(dvp, nm); + + if (tvp) { + error = zfs_fastaccesschk_execute(zdp, cr); + if (error) { + iput(tvp); + return (error); + } + if (tvp == DNLC_NO_VNODE) { + iput(tvp); + return (SET_ERROR(ENOENT)); + } else { + *vpp = tvp; + return (specvp_check(vpp, cr)); + } + } +#endif /* HAVE_DNLC */ + } + } + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zdp); + + *ipp = NULL; + + if (flags & LOOKUP_XATTR) { + /* + * We don't allow recursive attributes.. + * Maybe someday we will. + */ + if (zdp->z_pflags & ZFS_XATTR) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + if ((error = zfs_get_xattrdir(zdp, ipp, cr, flags))) { + ZFS_EXIT(zsb); + return (error); + } + + /* + * Do we have permission to get into attribute directory? + */ + + if ((error = zfs_zaccess(ITOZ(*ipp), ACE_EXECUTE, 0, + B_FALSE, cr))) { + iput(*ipp); + *ipp = NULL; + } + + ZFS_EXIT(zsb); + return (error); + } + + if (!S_ISDIR(dip->i_mode)) { + ZFS_EXIT(zsb); + return (SET_ERROR(ENOTDIR)); + } + + /* + * Check accessibility of directory. + */ + + if ((error = zfs_zaccess(zdp, ACE_EXECUTE, 0, B_FALSE, cr))) { + ZFS_EXIT(zsb); + return (error); + } + + if (zsb->z_utf8 && u8_validate(nm, strlen(nm), + NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } + + error = zfs_dirlook(zdp, nm, ipp, flags, direntflags, realpnp); + if ((error == 0) && (*ipp)) + zfs_inode_update(ITOZ(*ipp)); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_lookup); + +/* + * Attempt to create a new entry in a directory. If the entry + * already exists, truncate the file if permissible, else return + * an error. Return the ip of the created or trunc'd file. + * + * IN: dip - inode of directory to put new file entry in. + * name - name of new file entry. + * vap - attributes of new file. + * excl - flag indicating exclusive or non-exclusive mode. + * mode - mode to open file with. + * cr - credentials of caller. + * flag - large file flag [UNUSED]. + * vsecp - ACL to be set + * + * OUT: ipp - inode of created or trunc'd entry. + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * dip - ctime|mtime updated if new entry created + * ip - ctime|mtime always, atime if new + */ + +/* ARGSUSED */ +int +zfs_create(struct inode *dip, char *name, vattr_t *vap, int excl, + int mode, struct inode **ipp, cred_t *cr, int flag, vsecattr_t *vsecp) +{ + znode_t *zp, *dzp = ITOZ(dip); + zfs_sb_t *zsb = ITOZSB(dip); + zilog_t *zilog; + objset_t *os; + zfs_dirlock_t *dl; + dmu_tx_t *tx; + int error; + uid_t uid; + gid_t gid; + zfs_acl_ids_t acl_ids; + boolean_t fuid_dirtied; + boolean_t have_acl = B_FALSE; + boolean_t waited = B_FALSE; + + /* + * If we have an ephemeral id, ACL, or XVATTR then + * make sure file system is at proper version + */ + + gid = crgetgid(cr); + uid = crgetuid(cr); + + if (zsb->z_use_fuids == B_FALSE && + (vsecp || IS_EPHEMERAL(uid) || IS_EPHEMERAL(gid))) + return (SET_ERROR(EINVAL)); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + os = zsb->z_os; + zilog = zsb->z_log; + + if (zsb->z_utf8 && u8_validate(name, strlen(name), + NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } + + if (vap->va_mask & ATTR_XVATTR) { + if ((error = secpolicy_xvattr((xvattr_t *)vap, + crgetuid(cr), cr, vap->va_mode)) != 0) { + ZFS_EXIT(zsb); + return (error); + } + } + +top: + *ipp = NULL; + if (*name == '\0') { + /* + * Null component name refers to the directory itself. + */ + igrab(dip); + zp = dzp; + dl = NULL; + error = 0; + } else { + /* possible igrab(zp) */ + int zflg = 0; + + if (flag & FIGNORECASE) + zflg |= ZCILOOK; + + error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg, + NULL, NULL); + if (error) { + if (have_acl) + zfs_acl_ids_free(&acl_ids); + if (strcmp(name, "..") == 0) + error = SET_ERROR(EISDIR); + ZFS_EXIT(zsb); + return (error); + } + } + + if (zp == NULL) { + uint64_t txtype; + + /* + * Create a new file object and update the directory + * to reference it. + */ + if ((error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, B_FALSE, cr))) { + if (have_acl) + zfs_acl_ids_free(&acl_ids); + goto out; + } + + /* + * We only support the creation of regular files in + * extended attribute directories. + */ + + if ((dzp->z_pflags & ZFS_XATTR) && !S_ISREG(vap->va_mode)) { + if (have_acl) + zfs_acl_ids_free(&acl_ids); + error = SET_ERROR(EINVAL); + goto out; + } + + if (!have_acl && (error = zfs_acl_ids_create(dzp, 0, vap, + cr, vsecp, &acl_ids)) != 0) + goto out; + have_acl = B_TRUE; + + if (zfs_acl_ids_overquota(zsb, &acl_ids)) { + zfs_acl_ids_free(&acl_ids); + error = SET_ERROR(EDQUOT); + goto out; + } + + tx = dmu_tx_create(os); + + dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + + ZFS_SA_BASE_ATTR_SIZE); + + fuid_dirtied = zsb->z_fuid_dirty; + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + dmu_tx_hold_zap(tx, dzp->z_id, TRUE, name); + dmu_tx_hold_sa(tx, dzp->z_sa_hdl, B_FALSE); + if (!zsb->z_use_sa && + acl_ids.z_aclp->z_acl_bytes > ZFS_ACE_SPACE) { + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, + 0, acl_ids.z_aclp->z_acl_bytes); + } + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + zfs_dirent_unlock(dl); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + zfs_acl_ids_free(&acl_ids); + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + zfs_mknode(dzp, vap, tx, cr, 0, &zp, &acl_ids); + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + + (void) zfs_link_create(dl, zp, tx, ZNEW); + txtype = zfs_log_create_txtype(Z_FILE, vsecp, vap); + if (flag & FIGNORECASE) + txtype |= TX_CI; + zfs_log_create(zilog, tx, txtype, dzp, zp, name, + vsecp, acl_ids.z_fuidp, vap); + zfs_acl_ids_free(&acl_ids); + dmu_tx_commit(tx); + } else { + int aflags = (flag & FAPPEND) ? V_APPEND : 0; + + if (have_acl) + zfs_acl_ids_free(&acl_ids); + have_acl = B_FALSE; + + /* + * A directory entry already exists for this name. + */ + /* + * Can't truncate an existing file if in exclusive mode. + */ + if (excl) { + error = SET_ERROR(EEXIST); + goto out; + } + /* + * Can't open a directory for writing. + */ + if (S_ISDIR(ZTOI(zp)->i_mode)) { + error = SET_ERROR(EISDIR); + goto out; + } + /* + * Verify requested access to file. + */ + if (mode && (error = zfs_zaccess_rwx(zp, mode, aflags, cr))) { + goto out; + } + + mutex_enter(&dzp->z_lock); + dzp->z_seq++; + mutex_exit(&dzp->z_lock); + + /* + * Truncate regular files if requested. + */ + if (S_ISREG(ZTOI(zp)->i_mode) && + (vap->va_mask & ATTR_SIZE) && (vap->va_size == 0)) { + /* we can't hold any locks when calling zfs_freesp() */ + zfs_dirent_unlock(dl); + dl = NULL; + error = zfs_freesp(zp, 0, 0, mode, TRUE); + } + } +out: + + if (dl) + zfs_dirent_unlock(dl); + + if (error) { + if (zp) + iput(ZTOI(zp)); + } else { + zfs_inode_update(dzp); + zfs_inode_update(zp); + *ipp = ZTOI(zp); + } + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_create); + +/* + * Remove an entry from a directory. + * + * IN: dip - inode of directory to remove entry from. + * name - name of entry to remove. + * cr - credentials of caller. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * dip - ctime|mtime + * ip - ctime (if nlink > 0) + */ + +uint64_t null_xattr = 0; + +/*ARGSUSED*/ +int +zfs_remove(struct inode *dip, char *name, cred_t *cr) +{ + znode_t *zp, *dzp = ITOZ(dip); + znode_t *xzp; + struct inode *ip; + zfs_sb_t *zsb = ITOZSB(dip); + zilog_t *zilog; + uint64_t xattr_obj; + uint64_t xattr_obj_unlinked = 0; + uint64_t obj = 0; + zfs_dirlock_t *dl; + dmu_tx_t *tx; + boolean_t unlinked; + uint64_t txtype; + pathname_t *realnmp = NULL; +#ifdef HAVE_PN_UTILS + pathname_t realnm; +#endif /* HAVE_PN_UTILS */ + int error; + int zflg = ZEXISTS; + boolean_t waited = B_FALSE; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + zilog = zsb->z_log; + +#ifdef HAVE_PN_UTILS + if (flags & FIGNORECASE) { + zflg |= ZCILOOK; + pn_alloc(&realnm); + realnmp = &realnm; + } +#endif /* HAVE_PN_UTILS */ + +top: + xattr_obj = 0; + xzp = NULL; + /* + * Attempt to lock directory; fail if entry doesn't exist. + */ + if ((error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg, + NULL, realnmp))) { +#ifdef HAVE_PN_UTILS + if (realnmp) + pn_free(realnmp); +#endif /* HAVE_PN_UTILS */ + ZFS_EXIT(zsb); + return (error); + } + + ip = ZTOI(zp); + + if ((error = zfs_zaccess_delete(dzp, zp, cr))) { + goto out; + } + + /* + * Need to use rmdir for removing directories. + */ + if (S_ISDIR(ip->i_mode)) { + error = SET_ERROR(EPERM); + goto out; + } + +#ifdef HAVE_DNLC + if (realnmp) + dnlc_remove(dvp, realnmp->pn_buf); + else + dnlc_remove(dvp, name); +#endif /* HAVE_DNLC */ + + /* + * We never delete the znode and always place it in the unlinked + * set. The dentry cache will always hold the last reference and + * is responsible for safely freeing the znode. + */ + obj = zp->z_id; + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_zap(tx, dzp->z_id, FALSE, name); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + zfs_sa_upgrade_txholds(tx, dzp); + + /* are there any extended attributes? */ + error = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zsb), + &xattr_obj, sizeof (xattr_obj)); + if (error == 0 && xattr_obj) { + error = zfs_zget(zsb, xattr_obj, &xzp); + ASSERT0(error); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + dmu_tx_hold_sa(tx, xzp->z_sa_hdl, B_FALSE); + } + + /* charge as an update -- would be nice not to charge at all */ + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, FALSE, NULL); + + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + zfs_dirent_unlock(dl); + iput(ip); + if (xzp) + iput(ZTOI(xzp)); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } +#ifdef HAVE_PN_UTILS + if (realnmp) + pn_free(realnmp); +#endif /* HAVE_PN_UTILS */ + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + /* + * Remove the directory entry. + */ + error = zfs_link_destroy(dl, zp, tx, zflg, &unlinked); + + if (error) { + dmu_tx_commit(tx); + goto out; + } + + if (unlinked) { + /* + * Hold z_lock so that we can make sure that the ACL obj + * hasn't changed. Could have been deleted due to + * zfs_sa_upgrade(). + */ + mutex_enter(&zp->z_lock); + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zsb), + &xattr_obj_unlinked, sizeof (xattr_obj_unlinked)); + mutex_exit(&zp->z_lock); + zfs_unlinked_add(zp, tx); + } + + txtype = TX_REMOVE; +#ifdef HAVE_PN_UTILS + if (flags & FIGNORECASE) + txtype |= TX_CI; +#endif /* HAVE_PN_UTILS */ + zfs_log_remove(zilog, tx, txtype, dzp, name, obj); + + dmu_tx_commit(tx); +out: +#ifdef HAVE_PN_UTILS + if (realnmp) + pn_free(realnmp); +#endif /* HAVE_PN_UTILS */ + + zfs_dirent_unlock(dl); + zfs_inode_update(dzp); + zfs_inode_update(zp); + if (xzp) + zfs_inode_update(xzp); + + iput(ip); + if (xzp) + iput(ZTOI(xzp)); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_remove); + +/* + * Create a new directory and insert it into dip using the name + * provided. Return a pointer to the inserted directory. + * + * IN: dip - inode of directory to add subdir to. + * dirname - name of new directory. + * vap - attributes of new directory. + * cr - credentials of caller. + * vsecp - ACL to be set + * + * OUT: ipp - inode of created directory. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * dip - ctime|mtime updated + * ipp - ctime|mtime|atime updated + */ +/*ARGSUSED*/ +int +zfs_mkdir(struct inode *dip, char *dirname, vattr_t *vap, struct inode **ipp, + cred_t *cr, int flags, vsecattr_t *vsecp) +{ + znode_t *zp, *dzp = ITOZ(dip); + zfs_sb_t *zsb = ITOZSB(dip); + zilog_t *zilog; + zfs_dirlock_t *dl; + uint64_t txtype; + dmu_tx_t *tx; + int error; + int zf = ZNEW; + uid_t uid; + gid_t gid = crgetgid(cr); + zfs_acl_ids_t acl_ids; + boolean_t fuid_dirtied; + boolean_t waited = B_FALSE; + + ASSERT(S_ISDIR(vap->va_mode)); + + /* + * If we have an ephemeral id, ACL, or XVATTR then + * make sure file system is at proper version + */ + + uid = crgetuid(cr); + if (zsb->z_use_fuids == B_FALSE && + (vsecp || IS_EPHEMERAL(uid) || IS_EPHEMERAL(gid))) + return (SET_ERROR(EINVAL)); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + zilog = zsb->z_log; + + if (dzp->z_pflags & ZFS_XATTR) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + if (zsb->z_utf8 && u8_validate(dirname, + strlen(dirname), NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } + if (flags & FIGNORECASE) + zf |= ZCILOOK; + + if (vap->va_mask & ATTR_XVATTR) { + if ((error = secpolicy_xvattr((xvattr_t *)vap, + crgetuid(cr), cr, vap->va_mode)) != 0) { + ZFS_EXIT(zsb); + return (error); + } + } + + if ((error = zfs_acl_ids_create(dzp, 0, vap, cr, + vsecp, &acl_ids)) != 0) { + ZFS_EXIT(zsb); + return (error); + } + /* + * First make sure the new directory doesn't exist. + * + * Existence is checked first to make sure we don't return + * EACCES instead of EEXIST which can cause some applications + * to fail. + */ +top: + *ipp = NULL; + + if ((error = zfs_dirent_lock(&dl, dzp, dirname, &zp, zf, + NULL, NULL))) { + zfs_acl_ids_free(&acl_ids); + ZFS_EXIT(zsb); + return (error); + } + + if ((error = zfs_zaccess(dzp, ACE_ADD_SUBDIRECTORY, 0, B_FALSE, cr))) { + zfs_acl_ids_free(&acl_ids); + zfs_dirent_unlock(dl); + ZFS_EXIT(zsb); + return (error); + } + + if (zfs_acl_ids_overquota(zsb, &acl_ids)) { + zfs_acl_ids_free(&acl_ids); + zfs_dirent_unlock(dl); + ZFS_EXIT(zsb); + return (SET_ERROR(EDQUOT)); + } + + /* + * Add a new entry to the directory. + */ + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_zap(tx, dzp->z_id, TRUE, dirname); + dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL); + fuid_dirtied = zsb->z_fuid_dirty; + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + if (!zsb->z_use_sa && acl_ids.z_aclp->z_acl_bytes > ZFS_ACE_SPACE) { + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, + acl_ids.z_aclp->z_acl_bytes); + } + + dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + + ZFS_SA_BASE_ATTR_SIZE); + + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + zfs_dirent_unlock(dl); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + zfs_acl_ids_free(&acl_ids); + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + /* + * Create new node. + */ + zfs_mknode(dzp, vap, tx, cr, 0, &zp, &acl_ids); + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + + /* + * Now put new name in parent dir. + */ + (void) zfs_link_create(dl, zp, tx, ZNEW); + + *ipp = ZTOI(zp); + + txtype = zfs_log_create_txtype(Z_DIR, vsecp, vap); + if (flags & FIGNORECASE) + txtype |= TX_CI; + zfs_log_create(zilog, tx, txtype, dzp, zp, dirname, vsecp, + acl_ids.z_fuidp, vap); + + zfs_acl_ids_free(&acl_ids); + + dmu_tx_commit(tx); + + zfs_dirent_unlock(dl); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + zfs_inode_update(dzp); + zfs_inode_update(zp); + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_mkdir); + +/* + * Remove a directory subdir entry. If the current working + * directory is the same as the subdir to be removed, the + * remove will fail. + * + * IN: dip - inode of directory to remove from. + * name - name of directory to be removed. + * cwd - inode of current working directory. + * cr - credentials of caller. + * flags - case flags + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * dip - ctime|mtime updated + */ +/*ARGSUSED*/ +int +zfs_rmdir(struct inode *dip, char *name, struct inode *cwd, cred_t *cr, + int flags) +{ + znode_t *dzp = ITOZ(dip); + znode_t *zp; + struct inode *ip; + zfs_sb_t *zsb = ITOZSB(dip); + zilog_t *zilog; + zfs_dirlock_t *dl; + dmu_tx_t *tx; + int error; + int zflg = ZEXISTS; + boolean_t waited = B_FALSE; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + zilog = zsb->z_log; + + if (flags & FIGNORECASE) + zflg |= ZCILOOK; +top: + zp = NULL; + + /* + * Attempt to lock directory; fail if entry doesn't exist. + */ + if ((error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg, + NULL, NULL))) { + ZFS_EXIT(zsb); + return (error); + } + + ip = ZTOI(zp); + + if ((error = zfs_zaccess_delete(dzp, zp, cr))) { + goto out; + } + + if (!S_ISDIR(ip->i_mode)) { + error = SET_ERROR(ENOTDIR); + goto out; + } + + if (ip == cwd) { + error = SET_ERROR(EINVAL); + goto out; + } + + /* + * Grab a lock on the directory to make sure that noone is + * trying to add (or lookup) entries while we are removing it. + */ + rw_enter(&zp->z_name_lock, RW_WRITER); + + /* + * Grab a lock on the parent pointer to make sure we play well + * with the treewalk and directory rename code. + */ + rw_enter(&zp->z_parent_lock, RW_WRITER); + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_zap(tx, dzp->z_id, FALSE, name); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, FALSE, NULL); + zfs_sa_upgrade_txholds(tx, zp); + zfs_sa_upgrade_txholds(tx, dzp); + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + rw_exit(&zp->z_parent_lock); + rw_exit(&zp->z_name_lock); + zfs_dirent_unlock(dl); + iput(ip); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + error = zfs_link_destroy(dl, zp, tx, zflg, NULL); + + if (error == 0) { + uint64_t txtype = TX_RMDIR; + if (flags & FIGNORECASE) + txtype |= TX_CI; + zfs_log_remove(zilog, tx, txtype, dzp, name, ZFS_NO_OBJECT); + } + + dmu_tx_commit(tx); + + rw_exit(&zp->z_parent_lock); + rw_exit(&zp->z_name_lock); +out: + zfs_dirent_unlock(dl); + + zfs_inode_update(dzp); + zfs_inode_update(zp); + iput(ip); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_rmdir); + +/* + * Read as many directory entries as will fit into the provided + * dirent buffer from the given directory cursor position. + * + * IN: ip - inode of directory to read. + * dirent - buffer for directory entries. + * + * OUT: dirent - filler buffer of directory entries. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * ip - atime updated + * + * Note that the low 4 bits of the cookie returned by zap is always zero. + * This allows us to use the low range for "special" directory entries: + * We use 0 for '.', and 1 for '..'. If this is the root of the filesystem, + * we use the offset 2 for the '.zfs' directory. + */ +/* ARGSUSED */ +int +zfs_readdir(struct inode *ip, struct dir_context *ctx, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + objset_t *os; + zap_cursor_t zc; + zap_attribute_t zap; + int error; + uint8_t prefetch; + uint8_t type; + int done = 0; + uint64_t parent; + uint64_t offset; /* must be unsigned; checks for < 1 */ + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_PARENT(zsb), + &parent, sizeof (parent))) != 0) + goto out; + + /* + * Quit if directory has been removed (posix) + */ + if (zp->z_unlinked) + goto out; + + error = 0; + os = zsb->z_os; + offset = ctx->pos; + prefetch = zp->z_zn_prefetch; + + /* + * Initialize the iterator cursor. + */ + if (offset <= 3) { + /* + * Start iteration from the beginning of the directory. + */ + zap_cursor_init(&zc, os, zp->z_id); + } else { + /* + * The offset is a serialized cursor. + */ + zap_cursor_init_serialized(&zc, os, zp->z_id, offset); + } + + /* + * Transform to file-system independent format + */ + while (!done) { + uint64_t objnum; + /* + * Special case `.', `..', and `.zfs'. + */ + if (offset == 0) { + (void) strcpy(zap.za_name, "."); + zap.za_normalization_conflict = 0; + objnum = zp->z_id; + type = DT_DIR; + } else if (offset == 1) { + (void) strcpy(zap.za_name, ".."); + zap.za_normalization_conflict = 0; + objnum = parent; + type = DT_DIR; + } else if (offset == 2 && zfs_show_ctldir(zp)) { + (void) strcpy(zap.za_name, ZFS_CTLDIR_NAME); + zap.za_normalization_conflict = 0; + objnum = ZFSCTL_INO_ROOT; + type = DT_DIR; + } else { + /* + * Grab next entry. + */ + if ((error = zap_cursor_retrieve(&zc, &zap))) { + if (error == ENOENT) + break; + else + goto update; + } + + /* + * Allow multiple entries provided the first entry is + * the object id. Non-zpl consumers may safely make + * use of the additional space. + * + * XXX: This should be a feature flag for compatibility + */ + if (zap.za_integer_length != 8 || + zap.za_num_integers == 0) { + cmn_err(CE_WARN, "zap_readdir: bad directory " + "entry, obj = %lld, offset = %lld, " + "length = %d, num = %lld\n", + (u_longlong_t)zp->z_id, + (u_longlong_t)offset, + zap.za_integer_length, + (u_longlong_t)zap.za_num_integers); + error = SET_ERROR(ENXIO); + goto update; + } + + objnum = ZFS_DIRENT_OBJ(zap.za_first_integer); + type = ZFS_DIRENT_TYPE(zap.za_first_integer); + } + + done = !dir_emit(ctx, zap.za_name, strlen(zap.za_name), + objnum, type); + if (done) + break; + + /* Prefetch znode */ + if (prefetch) { + dmu_prefetch(os, objnum, 0, 0); + } + + /* + * Move to the next entry, fill in the previous offset. + */ + if (offset > 2 || (offset == 2 && !zfs_show_ctldir(zp))) { + zap_cursor_advance(&zc); + offset = zap_cursor_serialize(&zc); + } else { + offset += 1; + } + ctx->pos = offset; + } + zp->z_zn_prefetch = B_FALSE; /* a lookup will re-enable pre-fetching */ + +update: + zap_cursor_fini(&zc); + if (error == ENOENT) + error = 0; + + ZFS_ACCESSTIME_STAMP(zsb, zp); + +out: + ZFS_EXIT(zsb); + + return (error); +} +EXPORT_SYMBOL(zfs_readdir); + +ulong_t zfs_fsync_sync_cnt = 4; + +int +zfs_fsync(struct inode *ip, int syncflag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + + (void) tsd_set(zfs_fsyncer_key, (void *)zfs_fsync_sync_cnt); + + if (zsb->z_os->os_sync != ZFS_SYNC_DISABLED) { + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + zil_commit(zsb->z_log, zp->z_id); + ZFS_EXIT(zsb); + } + tsd_set(zfs_fsyncer_key, NULL); + + return (0); +} +EXPORT_SYMBOL(zfs_fsync); + + +/* + * Get the requested file attributes and place them in the provided + * vattr structure. + * + * IN: ip - inode of file. + * vap - va_mask identifies requested attributes. + * If ATTR_XVATTR set, then optional attrs are requested + * flags - ATTR_NOACLCHECK (CIFS server context) + * cr - credentials of caller. + * + * OUT: vap - attribute values. + * + * RETURN: 0 (always succeeds) + */ +/* ARGSUSED */ +int +zfs_getattr(struct inode *ip, vattr_t *vap, int flags, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error = 0; + uint64_t links; + uint64_t mtime[2], ctime[2]; + xvattr_t *xvap = (xvattr_t *)vap; /* vap may be an xvattr_t * */ + xoptattr_t *xoap = NULL; + boolean_t skipaclchk = (flags & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE; + sa_bulk_attr_t bulk[2]; + int count = 0; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + zfs_fuid_map_ids(zp, cr, &vap->va_uid, &vap->va_gid); + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, &mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, &ctime, 16); + + if ((error = sa_bulk_lookup(zp->z_sa_hdl, bulk, count)) != 0) { + ZFS_EXIT(zsb); + return (error); + } + + /* + * If ACL is trivial don't bother looking for ACE_READ_ATTRIBUTES. + * Also, if we are the owner don't bother, since owner should + * always be allowed to read basic attributes of file. + */ + if (!(zp->z_pflags & ZFS_ACL_TRIVIAL) && + (vap->va_uid != crgetuid(cr))) { + if ((error = zfs_zaccess(zp, ACE_READ_ATTRIBUTES, 0, + skipaclchk, cr))) { + ZFS_EXIT(zsb); + return (error); + } + } + + /* + * Return all attributes. It's cheaper to provide the answer + * than to determine whether we were asked the question. + */ + + mutex_enter(&zp->z_lock); + vap->va_type = vn_mode_to_vtype(zp->z_mode); + vap->va_mode = zp->z_mode; + vap->va_fsid = ZTOI(zp)->i_sb->s_dev; + vap->va_nodeid = zp->z_id; + if ((zp->z_id == zsb->z_root) && zfs_show_ctldir(zp)) + links = zp->z_links + 1; + else + links = zp->z_links; + vap->va_nlink = MIN(links, ZFS_LINK_MAX); + vap->va_size = i_size_read(ip); + vap->va_rdev = ip->i_rdev; + vap->va_seq = ip->i_generation; + + /* + * Add in any requested optional attributes and the create time. + * Also set the corresponding bits in the returned attribute bitmap. + */ + if ((xoap = xva_getxoptattr(xvap)) != NULL && zsb->z_use_fuids) { + if (XVA_ISSET_REQ(xvap, XAT_ARCHIVE)) { + xoap->xoa_archive = + ((zp->z_pflags & ZFS_ARCHIVE) != 0); + XVA_SET_RTN(xvap, XAT_ARCHIVE); + } + + if (XVA_ISSET_REQ(xvap, XAT_READONLY)) { + xoap->xoa_readonly = + ((zp->z_pflags & ZFS_READONLY) != 0); + XVA_SET_RTN(xvap, XAT_READONLY); + } + + if (XVA_ISSET_REQ(xvap, XAT_SYSTEM)) { + xoap->xoa_system = + ((zp->z_pflags & ZFS_SYSTEM) != 0); + XVA_SET_RTN(xvap, XAT_SYSTEM); + } + + if (XVA_ISSET_REQ(xvap, XAT_HIDDEN)) { + xoap->xoa_hidden = + ((zp->z_pflags & ZFS_HIDDEN) != 0); + XVA_SET_RTN(xvap, XAT_HIDDEN); + } + + if (XVA_ISSET_REQ(xvap, XAT_NOUNLINK)) { + xoap->xoa_nounlink = + ((zp->z_pflags & ZFS_NOUNLINK) != 0); + XVA_SET_RTN(xvap, XAT_NOUNLINK); + } + + if (XVA_ISSET_REQ(xvap, XAT_IMMUTABLE)) { + xoap->xoa_immutable = + ((zp->z_pflags & ZFS_IMMUTABLE) != 0); + XVA_SET_RTN(xvap, XAT_IMMUTABLE); + } + + if (XVA_ISSET_REQ(xvap, XAT_APPENDONLY)) { + xoap->xoa_appendonly = + ((zp->z_pflags & ZFS_APPENDONLY) != 0); + XVA_SET_RTN(xvap, XAT_APPENDONLY); + } + + if (XVA_ISSET_REQ(xvap, XAT_NODUMP)) { + xoap->xoa_nodump = + ((zp->z_pflags & ZFS_NODUMP) != 0); + XVA_SET_RTN(xvap, XAT_NODUMP); + } + + if (XVA_ISSET_REQ(xvap, XAT_OPAQUE)) { + xoap->xoa_opaque = + ((zp->z_pflags & ZFS_OPAQUE) != 0); + XVA_SET_RTN(xvap, XAT_OPAQUE); + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_QUARANTINED)) { + xoap->xoa_av_quarantined = + ((zp->z_pflags & ZFS_AV_QUARANTINED) != 0); + XVA_SET_RTN(xvap, XAT_AV_QUARANTINED); + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_MODIFIED)) { + xoap->xoa_av_modified = + ((zp->z_pflags & ZFS_AV_MODIFIED) != 0); + XVA_SET_RTN(xvap, XAT_AV_MODIFIED); + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP) && + S_ISREG(ip->i_mode)) { + zfs_sa_get_scanstamp(zp, xvap); + } + + if (XVA_ISSET_REQ(xvap, XAT_CREATETIME)) { + uint64_t times[2]; + + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(zsb), + times, sizeof (times)); + ZFS_TIME_DECODE(&xoap->xoa_createtime, times); + XVA_SET_RTN(xvap, XAT_CREATETIME); + } + + if (XVA_ISSET_REQ(xvap, XAT_REPARSE)) { + xoap->xoa_reparse = ((zp->z_pflags & ZFS_REPARSE) != 0); + XVA_SET_RTN(xvap, XAT_REPARSE); + } + if (XVA_ISSET_REQ(xvap, XAT_GEN)) { + xoap->xoa_generation = zp->z_gen; + XVA_SET_RTN(xvap, XAT_GEN); + } + + if (XVA_ISSET_REQ(xvap, XAT_OFFLINE)) { + xoap->xoa_offline = + ((zp->z_pflags & ZFS_OFFLINE) != 0); + XVA_SET_RTN(xvap, XAT_OFFLINE); + } + + if (XVA_ISSET_REQ(xvap, XAT_SPARSE)) { + xoap->xoa_sparse = + ((zp->z_pflags & ZFS_SPARSE) != 0); + XVA_SET_RTN(xvap, XAT_SPARSE); + } + } + + ZFS_TIME_DECODE(&vap->va_atime, zp->z_atime); + ZFS_TIME_DECODE(&vap->va_mtime, mtime); + ZFS_TIME_DECODE(&vap->va_ctime, ctime); + + mutex_exit(&zp->z_lock); + + sa_object_size(zp->z_sa_hdl, &vap->va_blksize, &vap->va_nblocks); + + if (zp->z_blksz == 0) { + /* + * Block size hasn't been set; suggest maximal I/O transfers. + */ + vap->va_blksize = zsb->z_max_blksz; + } + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_getattr); + +/* + * Get the basic file attributes and place them in the provided kstat + * structure. The inode is assumed to be the authoritative source + * for most of the attributes. However, the znode currently has the + * authoritative atime, blksize, and block count. + * + * IN: ip - inode of file. + * + * OUT: sp - kstat values. + * + * RETURN: 0 (always succeeds) + */ +/* ARGSUSED */ +int +zfs_getattr_fast(struct inode *ip, struct kstat *sp) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + uint32_t blksize; + u_longlong_t nblocks; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + mutex_enter(&zp->z_lock); + + generic_fillattr(ip, sp); + ZFS_TIME_DECODE(&sp->atime, zp->z_atime); + + sa_object_size(zp->z_sa_hdl, &blksize, &nblocks); + sp->blksize = blksize; + sp->blocks = nblocks; + + if (unlikely(zp->z_blksz == 0)) { + /* + * Block size hasn't been set; suggest maximal I/O transfers. + */ + sp->blksize = zsb->z_max_blksz; + } + + mutex_exit(&zp->z_lock); + + /* + * Required to prevent NFS client from detecting different inode + * numbers of snapshot root dentry before and after snapshot mount. + */ + if (zsb->z_issnap) { + if (ip->i_sb->s_root->d_inode == ip) + sp->ino = ZFSCTL_INO_SNAPDIRS - + dmu_objset_id(zsb->z_os); + } + + ZFS_EXIT(zsb); + + return (0); +} +EXPORT_SYMBOL(zfs_getattr_fast); + +/* + * Set the file attributes to the values contained in the + * vattr structure. + * + * IN: ip - inode of file to be modified. + * vap - new attribute values. + * If ATTR_XVATTR set, then optional attrs are being set + * flags - ATTR_UTIME set if non-default time values provided. + * - ATTR_NOACLCHECK (CIFS context only). + * cr - credentials of caller. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * ip - ctime updated, mtime updated if size changed. + */ +/* ARGSUSED */ +int +zfs_setattr(struct inode *ip, vattr_t *vap, int flags, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + zilog_t *zilog; + dmu_tx_t *tx; + vattr_t oldva; + xvattr_t *tmpxvattr; + uint_t mask = vap->va_mask; + uint_t saved_mask = 0; + int trim_mask = 0; + uint64_t new_mode; + uint64_t new_uid, new_gid; + uint64_t xattr_obj; + uint64_t mtime[2], ctime[2]; + znode_t *attrzp; + int need_policy = FALSE; + int err, err2; + zfs_fuid_info_t *fuidp = NULL; + xvattr_t *xvap = (xvattr_t *)vap; /* vap may be an xvattr_t * */ + xoptattr_t *xoap; + zfs_acl_t *aclp; + boolean_t skipaclchk = (flags & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE; + boolean_t fuid_dirtied = B_FALSE; + sa_bulk_attr_t *bulk, *xattr_bulk; + int count = 0, xattr_count = 0; + + if (mask == 0) + return (0); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + zilog = zsb->z_log; + + /* + * Make sure that if we have ephemeral uid/gid or xvattr specified + * that file system is at proper version level + */ + + if (zsb->z_use_fuids == B_FALSE && + (((mask & ATTR_UID) && IS_EPHEMERAL(vap->va_uid)) || + ((mask & ATTR_GID) && IS_EPHEMERAL(vap->va_gid)) || + (mask & ATTR_XVATTR))) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + if (mask & ATTR_SIZE && S_ISDIR(ip->i_mode)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EISDIR)); + } + + if (mask & ATTR_SIZE && !S_ISREG(ip->i_mode) && !S_ISFIFO(ip->i_mode)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* + * If this is an xvattr_t, then get a pointer to the structure of + * optional attributes. If this is NULL, then we have a vattr_t. + */ + xoap = xva_getxoptattr(xvap); + + tmpxvattr = kmem_alloc(sizeof (xvattr_t), KM_SLEEP); + xva_init(tmpxvattr); + + bulk = kmem_alloc(sizeof (sa_bulk_attr_t) * 7, KM_SLEEP); + xattr_bulk = kmem_alloc(sizeof (sa_bulk_attr_t) * 7, KM_SLEEP); + + /* + * Immutable files can only alter immutable bit and atime + */ + if ((zp->z_pflags & ZFS_IMMUTABLE) && + ((mask & (ATTR_SIZE|ATTR_UID|ATTR_GID|ATTR_MTIME|ATTR_MODE)) || + ((mask & ATTR_XVATTR) && XVA_ISSET_REQ(xvap, XAT_CREATETIME)))) { + err = EPERM; + goto out3; + } + + if ((mask & ATTR_SIZE) && (zp->z_pflags & ZFS_READONLY)) { + err = EPERM; + goto out3; + } + + /* + * Verify timestamps doesn't overflow 32 bits. + * ZFS can handle large timestamps, but 32bit syscalls can't + * handle times greater than 2039. This check should be removed + * once large timestamps are fully supported. + */ + if (mask & (ATTR_ATIME | ATTR_MTIME)) { + if (((mask & ATTR_ATIME) && + TIMESPEC_OVERFLOW(&vap->va_atime)) || + ((mask & ATTR_MTIME) && + TIMESPEC_OVERFLOW(&vap->va_mtime))) { + err = EOVERFLOW; + goto out3; + } + } + +top: + attrzp = NULL; + aclp = NULL; + + /* Can this be moved to before the top label? */ + if (zfs_is_readonly(zsb)) { + err = EROFS; + goto out3; + } + + /* + * First validate permissions + */ + + if (mask & ATTR_SIZE) { + err = zfs_zaccess(zp, ACE_WRITE_DATA, 0, skipaclchk, cr); + if (err) + goto out3; + + /* + * XXX - Note, we are not providing any open + * mode flags here (like FNDELAY), so we may + * block if there are locks present... this + * should be addressed in openat(). + */ + /* XXX - would it be OK to generate a log record here? */ + err = zfs_freesp(zp, vap->va_size, 0, 0, FALSE); + if (err) + goto out3; + } + + if (mask & (ATTR_ATIME|ATTR_MTIME) || + ((mask & ATTR_XVATTR) && (XVA_ISSET_REQ(xvap, XAT_HIDDEN) || + XVA_ISSET_REQ(xvap, XAT_READONLY) || + XVA_ISSET_REQ(xvap, XAT_ARCHIVE) || + XVA_ISSET_REQ(xvap, XAT_OFFLINE) || + XVA_ISSET_REQ(xvap, XAT_SPARSE) || + XVA_ISSET_REQ(xvap, XAT_CREATETIME) || + XVA_ISSET_REQ(xvap, XAT_SYSTEM)))) { + need_policy = zfs_zaccess(zp, ACE_WRITE_ATTRIBUTES, 0, + skipaclchk, cr); + } + + if (mask & (ATTR_UID|ATTR_GID)) { + int idmask = (mask & (ATTR_UID|ATTR_GID)); + int take_owner; + int take_group; + + /* + * NOTE: even if a new mode is being set, + * we may clear S_ISUID/S_ISGID bits. + */ + + if (!(mask & ATTR_MODE)) + vap->va_mode = zp->z_mode; + + /* + * Take ownership or chgrp to group we are a member of + */ + + take_owner = (mask & ATTR_UID) && (vap->va_uid == crgetuid(cr)); + take_group = (mask & ATTR_GID) && + zfs_groupmember(zsb, vap->va_gid, cr); + + /* + * If both ATTR_UID and ATTR_GID are set then take_owner and + * take_group must both be set in order to allow taking + * ownership. + * + * Otherwise, send the check through secpolicy_vnode_setattr() + * + */ + + if (((idmask == (ATTR_UID|ATTR_GID)) && + take_owner && take_group) || + ((idmask == ATTR_UID) && take_owner) || + ((idmask == ATTR_GID) && take_group)) { + if (zfs_zaccess(zp, ACE_WRITE_OWNER, 0, + skipaclchk, cr) == 0) { + /* + * Remove setuid/setgid for non-privileged users + */ + (void) secpolicy_setid_clear(vap, cr); + trim_mask = (mask & (ATTR_UID|ATTR_GID)); + } else { + need_policy = TRUE; + } + } else { + need_policy = TRUE; + } + } + + mutex_enter(&zp->z_lock); + oldva.va_mode = zp->z_mode; + zfs_fuid_map_ids(zp, cr, &oldva.va_uid, &oldva.va_gid); + if (mask & ATTR_XVATTR) { + /* + * Update xvattr mask to include only those attributes + * that are actually changing. + * + * the bits will be restored prior to actually setting + * the attributes so the caller thinks they were set. + */ + if (XVA_ISSET_REQ(xvap, XAT_APPENDONLY)) { + if (xoap->xoa_appendonly != + ((zp->z_pflags & ZFS_APPENDONLY) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_APPENDONLY); + XVA_SET_REQ(tmpxvattr, XAT_APPENDONLY); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_NOUNLINK)) { + if (xoap->xoa_nounlink != + ((zp->z_pflags & ZFS_NOUNLINK) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_NOUNLINK); + XVA_SET_REQ(tmpxvattr, XAT_NOUNLINK); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_IMMUTABLE)) { + if (xoap->xoa_immutable != + ((zp->z_pflags & ZFS_IMMUTABLE) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_IMMUTABLE); + XVA_SET_REQ(tmpxvattr, XAT_IMMUTABLE); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_NODUMP)) { + if (xoap->xoa_nodump != + ((zp->z_pflags & ZFS_NODUMP) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_NODUMP); + XVA_SET_REQ(tmpxvattr, XAT_NODUMP); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_MODIFIED)) { + if (xoap->xoa_av_modified != + ((zp->z_pflags & ZFS_AV_MODIFIED) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_AV_MODIFIED); + XVA_SET_REQ(tmpxvattr, XAT_AV_MODIFIED); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_QUARANTINED)) { + if ((!S_ISREG(ip->i_mode) && + xoap->xoa_av_quarantined) || + xoap->xoa_av_quarantined != + ((zp->z_pflags & ZFS_AV_QUARANTINED) != 0)) { + need_policy = TRUE; + } else { + XVA_CLR_REQ(xvap, XAT_AV_QUARANTINED); + XVA_SET_REQ(tmpxvattr, XAT_AV_QUARANTINED); + } + } + + if (XVA_ISSET_REQ(xvap, XAT_REPARSE)) { + mutex_exit(&zp->z_lock); + err = EPERM; + goto out3; + } + + if (need_policy == FALSE && + (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP) || + XVA_ISSET_REQ(xvap, XAT_OPAQUE))) { + need_policy = TRUE; + } + } + + mutex_exit(&zp->z_lock); + + if (mask & ATTR_MODE) { + if (zfs_zaccess(zp, ACE_WRITE_ACL, 0, skipaclchk, cr) == 0) { + err = secpolicy_setid_setsticky_clear(ip, vap, + &oldva, cr); + if (err) + goto out3; + + trim_mask |= ATTR_MODE; + } else { + need_policy = TRUE; + } + } + + if (need_policy) { + /* + * If trim_mask is set then take ownership + * has been granted or write_acl is present and user + * has the ability to modify mode. In that case remove + * UID|GID and or MODE from mask so that + * secpolicy_vnode_setattr() doesn't revoke it. + */ + + if (trim_mask) { + saved_mask = vap->va_mask; + vap->va_mask &= ~trim_mask; + } + err = secpolicy_vnode_setattr(cr, ip, vap, &oldva, flags, + (int (*)(void *, int, cred_t *))zfs_zaccess_unix, zp); + if (err) + goto out3; + + if (trim_mask) + vap->va_mask |= saved_mask; + } + + /* + * secpolicy_vnode_setattr, or take ownership may have + * changed va_mask + */ + mask = vap->va_mask; + + if ((mask & (ATTR_UID | ATTR_GID))) { + err = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zsb), + &xattr_obj, sizeof (xattr_obj)); + + if (err == 0 && xattr_obj) { + err = zfs_zget(ZTOZSB(zp), xattr_obj, &attrzp); + if (err) + goto out2; + } + if (mask & ATTR_UID) { + new_uid = zfs_fuid_create(zsb, + (uint64_t)vap->va_uid, cr, ZFS_OWNER, &fuidp); + if (new_uid != zp->z_uid && + zfs_fuid_overquota(zsb, B_FALSE, new_uid)) { + if (attrzp) + iput(ZTOI(attrzp)); + err = EDQUOT; + goto out2; + } + } + + if (mask & ATTR_GID) { + new_gid = zfs_fuid_create(zsb, (uint64_t)vap->va_gid, + cr, ZFS_GROUP, &fuidp); + if (new_gid != zp->z_gid && + zfs_fuid_overquota(zsb, B_TRUE, new_gid)) { + if (attrzp) + iput(ZTOI(attrzp)); + err = EDQUOT; + goto out2; + } + } + } + tx = dmu_tx_create(zsb->z_os); + + if (mask & ATTR_MODE) { + uint64_t pmode = zp->z_mode; + uint64_t acl_obj; + new_mode = (pmode & S_IFMT) | (vap->va_mode & ~S_IFMT); + + zfs_acl_chmod_setattr(zp, &aclp, new_mode); + + mutex_enter(&zp->z_lock); + if (!zp->z_is_sa && ((acl_obj = zfs_external_acl(zp)) != 0)) { + /* + * Are we upgrading ACL from old V0 format + * to V1 format? + */ + if (zsb->z_version >= ZPL_VERSION_FUID && + zfs_znode_acl_version(zp) == + ZFS_ACL_VERSION_INITIAL) { + dmu_tx_hold_free(tx, acl_obj, 0, + DMU_OBJECT_END); + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, + 0, aclp->z_acl_bytes); + } else { + dmu_tx_hold_write(tx, acl_obj, 0, + aclp->z_acl_bytes); + } + } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) { + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, + 0, aclp->z_acl_bytes); + } + mutex_exit(&zp->z_lock); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + } else { + if ((mask & ATTR_XVATTR) && + XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP)) + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE); + else + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + } + + if (attrzp) { + dmu_tx_hold_sa(tx, attrzp->z_sa_hdl, B_FALSE); + } + + fuid_dirtied = zsb->z_fuid_dirty; + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + + zfs_sa_upgrade_txholds(tx, zp); + + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) + goto out; + + count = 0; + /* + * Set each attribute requested. + * We group settings according to the locks they need to acquire. + * + * Note: you cannot set ctime directly, although it will be + * updated as a side-effect of calling this function. + */ + + + if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE)) + mutex_enter(&zp->z_acl_lock); + mutex_enter(&zp->z_lock); + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, sizeof (zp->z_pflags)); + + if (attrzp) { + if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE)) + mutex_enter(&attrzp->z_acl_lock); + mutex_enter(&attrzp->z_lock); + SA_ADD_BULK_ATTR(xattr_bulk, xattr_count, + SA_ZPL_FLAGS(zsb), NULL, &attrzp->z_pflags, + sizeof (attrzp->z_pflags)); + } + + if (mask & (ATTR_UID|ATTR_GID)) { + + if (mask & ATTR_UID) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_UID(zsb), NULL, + &new_uid, sizeof (new_uid)); + zp->z_uid = new_uid; + if (attrzp) { + SA_ADD_BULK_ATTR(xattr_bulk, xattr_count, + SA_ZPL_UID(zsb), NULL, &new_uid, + sizeof (new_uid)); + attrzp->z_uid = new_uid; + } + } + + if (mask & ATTR_GID) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GID(zsb), + NULL, &new_gid, sizeof (new_gid)); + zp->z_gid = new_gid; + if (attrzp) { + SA_ADD_BULK_ATTR(xattr_bulk, xattr_count, + SA_ZPL_GID(zsb), NULL, &new_gid, + sizeof (new_gid)); + attrzp->z_gid = new_gid; + } + } + if (!(mask & ATTR_MODE)) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), + NULL, &new_mode, sizeof (new_mode)); + new_mode = zp->z_mode; + } + err = zfs_acl_chown_setattr(zp); + ASSERT(err == 0); + if (attrzp) { + err = zfs_acl_chown_setattr(attrzp); + ASSERT(err == 0); + } + } + + if (mask & ATTR_MODE) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), NULL, + &new_mode, sizeof (new_mode)); + zp->z_mode = new_mode; + ASSERT3P(aclp, !=, NULL); + err = zfs_aclset_common(zp, aclp, cr, tx); + ASSERT0(err); + if (zp->z_acl_cached) + zfs_acl_free(zp->z_acl_cached); + zp->z_acl_cached = aclp; + aclp = NULL; + } + + + if (mask & ATTR_ATIME) { + ZFS_TIME_ENCODE(&vap->va_atime, zp->z_atime); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ATIME(zsb), NULL, + &zp->z_atime, sizeof (zp->z_atime)); + } + + if (mask & ATTR_MTIME) { + ZFS_TIME_ENCODE(&vap->va_mtime, mtime); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, + mtime, sizeof (mtime)); + } + + /* XXX - shouldn't this be done *before* the ATIME/MTIME checks? */ + if (mask & ATTR_SIZE && !(mask & ATTR_MTIME)) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), + NULL, mtime, sizeof (mtime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, + &ctime, sizeof (ctime)); + zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, + B_TRUE); + } else if (mask != 0) { + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, + &ctime, sizeof (ctime)); + zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime, ctime, + B_TRUE); + if (attrzp) { + SA_ADD_BULK_ATTR(xattr_bulk, xattr_count, + SA_ZPL_CTIME(zsb), NULL, + &ctime, sizeof (ctime)); + zfs_tstamp_update_setup(attrzp, STATE_CHANGED, + mtime, ctime, B_TRUE); + } + } + /* + * Do this after setting timestamps to prevent timestamp + * update from toggling bit + */ + + if (xoap && (mask & ATTR_XVATTR)) { + + /* + * restore trimmed off masks + * so that return masks can be set for caller. + */ + + if (XVA_ISSET_REQ(tmpxvattr, XAT_APPENDONLY)) { + XVA_SET_REQ(xvap, XAT_APPENDONLY); + } + if (XVA_ISSET_REQ(tmpxvattr, XAT_NOUNLINK)) { + XVA_SET_REQ(xvap, XAT_NOUNLINK); + } + if (XVA_ISSET_REQ(tmpxvattr, XAT_IMMUTABLE)) { + XVA_SET_REQ(xvap, XAT_IMMUTABLE); + } + if (XVA_ISSET_REQ(tmpxvattr, XAT_NODUMP)) { + XVA_SET_REQ(xvap, XAT_NODUMP); + } + if (XVA_ISSET_REQ(tmpxvattr, XAT_AV_MODIFIED)) { + XVA_SET_REQ(xvap, XAT_AV_MODIFIED); + } + if (XVA_ISSET_REQ(tmpxvattr, XAT_AV_QUARANTINED)) { + XVA_SET_REQ(xvap, XAT_AV_QUARANTINED); + } + + if (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP)) + ASSERT(S_ISREG(ip->i_mode)); + + zfs_xvattr_set(zp, xvap, tx); + } + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + + if (mask != 0) + zfs_log_setattr(zilog, tx, TX_SETATTR, zp, vap, mask, fuidp); + + mutex_exit(&zp->z_lock); + if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE)) + mutex_exit(&zp->z_acl_lock); + + if (attrzp) { + if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE)) + mutex_exit(&attrzp->z_acl_lock); + mutex_exit(&attrzp->z_lock); + } +out: + if (err == 0 && attrzp) { + err2 = sa_bulk_update(attrzp->z_sa_hdl, xattr_bulk, + xattr_count, tx); + ASSERT(err2 == 0); + } + + if (attrzp) + iput(ZTOI(attrzp)); + if (aclp) + zfs_acl_free(aclp); + + if (fuidp) { + zfs_fuid_info_free(fuidp); + fuidp = NULL; + } + + if (err) { + dmu_tx_abort(tx); + if (err == ERESTART) + goto top; + } else { + err2 = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); + dmu_tx_commit(tx); + zfs_inode_update(zp); + } + +out2: + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + +out3: + kmem_free(xattr_bulk, sizeof (sa_bulk_attr_t) * 7); + kmem_free(bulk, sizeof (sa_bulk_attr_t) * 7); + kmem_free(tmpxvattr, sizeof (xvattr_t)); + ZFS_EXIT(zsb); + return (err); +} +EXPORT_SYMBOL(zfs_setattr); + +typedef struct zfs_zlock { + krwlock_t *zl_rwlock; /* lock we acquired */ + znode_t *zl_znode; /* znode we held */ + struct zfs_zlock *zl_next; /* next in list */ +} zfs_zlock_t; + +/* + * Drop locks and release vnodes that were held by zfs_rename_lock(). + */ +static void +zfs_rename_unlock(zfs_zlock_t **zlpp) +{ + zfs_zlock_t *zl; + + while ((zl = *zlpp) != NULL) { + if (zl->zl_znode != NULL) + iput(ZTOI(zl->zl_znode)); + rw_exit(zl->zl_rwlock); + *zlpp = zl->zl_next; + kmem_free(zl, sizeof (*zl)); + } +} + +/* + * Search back through the directory tree, using the ".." entries. + * Lock each directory in the chain to prevent concurrent renames. + * Fail any attempt to move a directory into one of its own descendants. + * XXX - z_parent_lock can overlap with map or grow locks + */ +static int +zfs_rename_lock(znode_t *szp, znode_t *tdzp, znode_t *sdzp, zfs_zlock_t **zlpp) +{ + zfs_zlock_t *zl; + znode_t *zp = tdzp; + uint64_t rootid = ZTOZSB(zp)->z_root; + uint64_t oidp = zp->z_id; + krwlock_t *rwlp = &szp->z_parent_lock; + krw_t rw = RW_WRITER; + + /* + * First pass write-locks szp and compares to zp->z_id. + * Later passes read-lock zp and compare to zp->z_parent. + */ + do { + if (!rw_tryenter(rwlp, rw)) { + /* + * Another thread is renaming in this path. + * Note that if we are a WRITER, we don't have any + * parent_locks held yet. + */ + if (rw == RW_READER && zp->z_id > szp->z_id) { + /* + * Drop our locks and restart + */ + zfs_rename_unlock(&zl); + *zlpp = NULL; + zp = tdzp; + oidp = zp->z_id; + rwlp = &szp->z_parent_lock; + rw = RW_WRITER; + continue; + } else { + /* + * Wait for other thread to drop its locks + */ + rw_enter(rwlp, rw); + } + } + + zl = kmem_alloc(sizeof (*zl), KM_SLEEP); + zl->zl_rwlock = rwlp; + zl->zl_znode = NULL; + zl->zl_next = *zlpp; + *zlpp = zl; + + if (oidp == szp->z_id) /* We're a descendant of szp */ + return (SET_ERROR(EINVAL)); + + if (oidp == rootid) /* We've hit the top */ + return (0); + + if (rw == RW_READER) { /* i.e. not the first pass */ + int error = zfs_zget(ZTOZSB(zp), oidp, &zp); + if (error) + return (error); + zl->zl_znode = zp; + } + (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_PARENT(ZTOZSB(zp)), + &oidp, sizeof (oidp)); + rwlp = &zp->z_parent_lock; + rw = RW_READER; + + } while (zp->z_id != sdzp->z_id); + + return (0); +} + +/* + * Move an entry from the provided source directory to the target + * directory. Change the entry name as indicated. + * + * IN: sdip - Source directory containing the "old entry". + * snm - Old entry name. + * tdip - Target directory to contain the "new entry". + * tnm - New entry name. + * cr - credentials of caller. + * flags - case flags + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * sdip,tdip - ctime|mtime updated + */ +/*ARGSUSED*/ +int +zfs_rename(struct inode *sdip, char *snm, struct inode *tdip, char *tnm, + cred_t *cr, int flags) +{ + znode_t *tdzp, *szp, *tzp; + znode_t *sdzp = ITOZ(sdip); + zfs_sb_t *zsb = ITOZSB(sdip); + zilog_t *zilog; + zfs_dirlock_t *sdl, *tdl; + dmu_tx_t *tx; + zfs_zlock_t *zl; + int cmp, serr, terr; + int error = 0; + int zflg = 0; + boolean_t waited = B_FALSE; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(sdzp); + zilog = zsb->z_log; + + if (tdip->i_sb != sdip->i_sb || zfsctl_is_node(tdip)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EXDEV)); + } + + tdzp = ITOZ(tdip); + ZFS_VERIFY_ZP(tdzp); + if (zsb->z_utf8 && u8_validate(tnm, + strlen(tnm), NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } + + if (flags & FIGNORECASE) + zflg |= ZCILOOK; + +top: + szp = NULL; + tzp = NULL; + zl = NULL; + + /* + * This is to prevent the creation of links into attribute space + * by renaming a linked file into/outof an attribute directory. + * See the comment in zfs_link() for why this is considered bad. + */ + if ((tdzp->z_pflags & ZFS_XATTR) != (sdzp->z_pflags & ZFS_XATTR)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* + * Lock source and target directory entries. To prevent deadlock, + * a lock ordering must be defined. We lock the directory with + * the smallest object id first, or if it's a tie, the one with + * the lexically first name. + */ + if (sdzp->z_id < tdzp->z_id) { + cmp = -1; + } else if (sdzp->z_id > tdzp->z_id) { + cmp = 1; + } else { + /* + * First compare the two name arguments without + * considering any case folding. + */ + int nofold = (zsb->z_norm & ~U8_TEXTPREP_TOUPPER); + + cmp = u8_strcmp(snm, tnm, 0, nofold, U8_UNICODE_LATEST, &error); + ASSERT(error == 0 || !zsb->z_utf8); + if (cmp == 0) { + /* + * POSIX: "If the old argument and the new argument + * both refer to links to the same existing file, + * the rename() function shall return successfully + * and perform no other action." + */ + ZFS_EXIT(zsb); + return (0); + } + /* + * If the file system is case-folding, then we may + * have some more checking to do. A case-folding file + * system is either supporting mixed case sensitivity + * access or is completely case-insensitive. Note + * that the file system is always case preserving. + * + * In mixed sensitivity mode case sensitive behavior + * is the default. FIGNORECASE must be used to + * explicitly request case insensitive behavior. + * + * If the source and target names provided differ only + * by case (e.g., a request to rename 'tim' to 'Tim'), + * we will treat this as a special case in the + * case-insensitive mode: as long as the source name + * is an exact match, we will allow this to proceed as + * a name-change request. + */ + if ((zsb->z_case == ZFS_CASE_INSENSITIVE || + (zsb->z_case == ZFS_CASE_MIXED && + flags & FIGNORECASE)) && + u8_strcmp(snm, tnm, 0, zsb->z_norm, U8_UNICODE_LATEST, + &error) == 0) { + /* + * case preserving rename request, require exact + * name matches + */ + zflg |= ZCIEXACT; + zflg &= ~ZCILOOK; + } + } + + /* + * If the source and destination directories are the same, we should + * grab the z_name_lock of that directory only once. + */ + if (sdzp == tdzp) { + zflg |= ZHAVELOCK; + rw_enter(&sdzp->z_name_lock, RW_READER); + } + + if (cmp < 0) { + serr = zfs_dirent_lock(&sdl, sdzp, snm, &szp, + ZEXISTS | zflg, NULL, NULL); + terr = zfs_dirent_lock(&tdl, + tdzp, tnm, &tzp, ZRENAMING | zflg, NULL, NULL); + } else { + terr = zfs_dirent_lock(&tdl, + tdzp, tnm, &tzp, zflg, NULL, NULL); + serr = zfs_dirent_lock(&sdl, + sdzp, snm, &szp, ZEXISTS | ZRENAMING | zflg, + NULL, NULL); + } + + if (serr) { + /* + * Source entry invalid or not there. + */ + if (!terr) { + zfs_dirent_unlock(tdl); + if (tzp) + iput(ZTOI(tzp)); + } + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + + if (strcmp(snm, "..") == 0) + serr = EINVAL; + ZFS_EXIT(zsb); + return (serr); + } + if (terr) { + zfs_dirent_unlock(sdl); + iput(ZTOI(szp)); + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + + if (strcmp(tnm, "..") == 0) + terr = EINVAL; + ZFS_EXIT(zsb); + return (terr); + } + + /* + * Must have write access at the source to remove the old entry + * and write access at the target to create the new entry. + * Note that if target and source are the same, this can be + * done in a single check. + */ + + if ((error = zfs_zaccess_rename(sdzp, szp, tdzp, tzp, cr))) + goto out; + + if (S_ISDIR(ZTOI(szp)->i_mode)) { + /* + * Check to make sure rename is valid. + * Can't do a move like this: /usr/a/b to /usr/a/b/c/d + */ + if ((error = zfs_rename_lock(szp, tdzp, sdzp, &zl))) + goto out; + } + + /* + * Does target exist? + */ + if (tzp) { + /* + * Source and target must be the same type. + */ + if (S_ISDIR(ZTOI(szp)->i_mode)) { + if (!S_ISDIR(ZTOI(tzp)->i_mode)) { + error = SET_ERROR(ENOTDIR); + goto out; + } + } else { + if (S_ISDIR(ZTOI(tzp)->i_mode)) { + error = SET_ERROR(EISDIR); + goto out; + } + } + /* + * POSIX dictates that when the source and target + * entries refer to the same file object, rename + * must do nothing and exit without error. + */ + if (szp->z_id == tzp->z_id) { + error = 0; + goto out; + } + } + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, szp->z_sa_hdl, B_FALSE); + dmu_tx_hold_sa(tx, sdzp->z_sa_hdl, B_FALSE); + dmu_tx_hold_zap(tx, sdzp->z_id, FALSE, snm); + dmu_tx_hold_zap(tx, tdzp->z_id, TRUE, tnm); + if (sdzp != tdzp) { + dmu_tx_hold_sa(tx, tdzp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, tdzp); + } + if (tzp) { + dmu_tx_hold_sa(tx, tzp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, tzp); + } + + zfs_sa_upgrade_txholds(tx, szp); + dmu_tx_hold_zap(tx, zsb->z_unlinkedobj, FALSE, NULL); + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + if (zl != NULL) + zfs_rename_unlock(&zl); + zfs_dirent_unlock(sdl); + zfs_dirent_unlock(tdl); + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + + iput(ZTOI(szp)); + if (tzp) + iput(ZTOI(tzp)); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + if (tzp) /* Attempt to remove the existing target */ + error = zfs_link_destroy(tdl, tzp, tx, zflg, NULL); + + if (error == 0) { + error = zfs_link_create(tdl, szp, tx, ZRENAMING); + if (error == 0) { + szp->z_pflags |= ZFS_AV_MODIFIED; + + error = sa_update(szp->z_sa_hdl, SA_ZPL_FLAGS(zsb), + (void *)&szp->z_pflags, sizeof (uint64_t), tx); + ASSERT0(error); + + error = zfs_link_destroy(sdl, szp, tx, ZRENAMING, NULL); + if (error == 0) { + zfs_log_rename(zilog, tx, TX_RENAME | + (flags & FIGNORECASE ? TX_CI : 0), sdzp, + sdl->dl_name, tdzp, tdl->dl_name, szp); + } else { + /* + * At this point, we have successfully created + * the target name, but have failed to remove + * the source name. Since the create was done + * with the ZRENAMING flag, there are + * complications; for one, the link count is + * wrong. The easiest way to deal with this + * is to remove the newly created target, and + * return the original error. This must + * succeed; fortunately, it is very unlikely to + * fail, since we just created it. + */ + VERIFY3U(zfs_link_destroy(tdl, szp, tx, + ZRENAMING, NULL), ==, 0); + } + } + } + + dmu_tx_commit(tx); +out: + if (zl != NULL) + zfs_rename_unlock(&zl); + + zfs_dirent_unlock(sdl); + zfs_dirent_unlock(tdl); + + zfs_inode_update(sdzp); + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + + if (sdzp != tdzp) + zfs_inode_update(tdzp); + + zfs_inode_update(szp); + iput(ZTOI(szp)); + if (tzp) { + zfs_inode_update(tzp); + iput(ZTOI(tzp)); + } + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_rename); + +/* + * Insert the indicated symbolic reference entry into the directory. + * + * IN: dip - Directory to contain new symbolic link. + * link - Name for new symlink entry. + * vap - Attributes of new entry. + * target - Target path of new symlink. + * + * cr - credentials of caller. + * flags - case flags + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * dip - ctime|mtime updated + */ +/*ARGSUSED*/ +int +zfs_symlink(struct inode *dip, char *name, vattr_t *vap, char *link, + struct inode **ipp, cred_t *cr, int flags) +{ + znode_t *zp, *dzp = ITOZ(dip); + zfs_dirlock_t *dl; + dmu_tx_t *tx; + zfs_sb_t *zsb = ITOZSB(dip); + zilog_t *zilog; + uint64_t len = strlen(link); + int error; + int zflg = ZNEW; + zfs_acl_ids_t acl_ids; + boolean_t fuid_dirtied; + uint64_t txtype = TX_SYMLINK; + boolean_t waited = B_FALSE; + + ASSERT(S_ISLNK(vap->va_mode)); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + zilog = zsb->z_log; + + if (zsb->z_utf8 && u8_validate(name, strlen(name), + NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } + if (flags & FIGNORECASE) + zflg |= ZCILOOK; + + if (len > MAXPATHLEN) { + ZFS_EXIT(zsb); + return (SET_ERROR(ENAMETOOLONG)); + } + + if ((error = zfs_acl_ids_create(dzp, 0, + vap, cr, NULL, &acl_ids)) != 0) { + ZFS_EXIT(zsb); + return (error); + } +top: + *ipp = NULL; + + /* + * Attempt to lock directory; fail if entry already exists. + */ + error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg, NULL, NULL); + if (error) { + zfs_acl_ids_free(&acl_ids); + ZFS_EXIT(zsb); + return (error); + } + + if ((error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, B_FALSE, cr))) { + zfs_acl_ids_free(&acl_ids); + zfs_dirent_unlock(dl); + ZFS_EXIT(zsb); + return (error); + } + + if (zfs_acl_ids_overquota(zsb, &acl_ids)) { + zfs_acl_ids_free(&acl_ids); + zfs_dirent_unlock(dl); + ZFS_EXIT(zsb); + return (SET_ERROR(EDQUOT)); + } + tx = dmu_tx_create(zsb->z_os); + fuid_dirtied = zsb->z_fuid_dirty; + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, MAX(1, len)); + dmu_tx_hold_zap(tx, dzp->z_id, TRUE, name); + dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + + ZFS_SA_BASE_ATTR_SIZE + len); + dmu_tx_hold_sa(tx, dzp->z_sa_hdl, B_FALSE); + if (!zsb->z_use_sa && acl_ids.z_aclp->z_acl_bytes > ZFS_ACE_SPACE) { + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, + acl_ids.z_aclp->z_acl_bytes); + } + if (fuid_dirtied) + zfs_fuid_txhold(zsb, tx); + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + zfs_dirent_unlock(dl); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + zfs_acl_ids_free(&acl_ids); + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + /* + * Create a new object for the symlink. + * for version 4 ZPL datsets the symlink will be an SA attribute + */ + zfs_mknode(dzp, vap, tx, cr, 0, &zp, &acl_ids); + + if (fuid_dirtied) + zfs_fuid_sync(zsb, tx); + + mutex_enter(&zp->z_lock); + if (zp->z_is_sa) + error = sa_update(zp->z_sa_hdl, SA_ZPL_SYMLINK(zsb), + link, len, tx); + else + zfs_sa_symlink(zp, link, len, tx); + mutex_exit(&zp->z_lock); + + zp->z_size = len; + (void) sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(zsb), + &zp->z_size, sizeof (zp->z_size), tx); + /* + * Insert the new object into the directory. + */ + (void) zfs_link_create(dl, zp, tx, ZNEW); + + if (flags & FIGNORECASE) + txtype |= TX_CI; + zfs_log_symlink(zilog, tx, txtype, dzp, zp, name, link); + + zfs_inode_update(dzp); + zfs_inode_update(zp); + + zfs_acl_ids_free(&acl_ids); + + dmu_tx_commit(tx); + + zfs_dirent_unlock(dl); + + *ipp = ZTOI(zp); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_symlink); + +/* + * Return, in the buffer contained in the provided uio structure, + * the symbolic path referred to by ip. + * + * IN: ip - inode of symbolic link + * uio - structure to contain the link path. + * cr - credentials of caller. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * ip - atime updated + */ +/* ARGSUSED */ +int +zfs_readlink(struct inode *ip, uio_t *uio, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + mutex_enter(&zp->z_lock); + if (zp->z_is_sa) + error = sa_lookup_uio(zp->z_sa_hdl, + SA_ZPL_SYMLINK(zsb), uio); + else + error = zfs_sa_readlink(zp, uio); + mutex_exit(&zp->z_lock); + + ZFS_ACCESSTIME_STAMP(zsb, zp); + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_readlink); + +/* + * Insert a new entry into directory tdip referencing sip. + * + * IN: tdip - Directory to contain new entry. + * sip - inode of new entry. + * name - name of new entry. + * cr - credentials of caller. + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * tdip - ctime|mtime updated + * sip - ctime updated + */ +/* ARGSUSED */ +int +zfs_link(struct inode *tdip, struct inode *sip, char *name, cred_t *cr) +{ + znode_t *dzp = ITOZ(tdip); + znode_t *tzp, *szp; + zfs_sb_t *zsb = ITOZSB(tdip); + zilog_t *zilog; + zfs_dirlock_t *dl; + dmu_tx_t *tx; + int error; + int zf = ZNEW; + uint64_t parent; + uid_t owner; + boolean_t waited = B_FALSE; + + ASSERT(S_ISDIR(tdip->i_mode)); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(dzp); + zilog = zsb->z_log; + + /* + * POSIX dictates that we return EPERM here. + * Better choices include ENOTSUP or EISDIR. + */ + if (S_ISDIR(sip->i_mode)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + if (sip->i_sb != tdip->i_sb || zfsctl_is_node(sip)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EXDEV)); + } + + szp = ITOZ(sip); + ZFS_VERIFY_ZP(szp); + + /* Prevent links to .zfs/shares files */ + + if ((error = sa_lookup(szp->z_sa_hdl, SA_ZPL_PARENT(zsb), + &parent, sizeof (uint64_t))) != 0) { + ZFS_EXIT(zsb); + return (error); + } + if (parent == zsb->z_shares_dir) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + if (zsb->z_utf8 && u8_validate(name, + strlen(name), NULL, U8_VALIDATE_ENTIRE, &error) < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EILSEQ)); + } +#ifdef HAVE_PN_UTILS + if (flags & FIGNORECASE) + zf |= ZCILOOK; +#endif /* HAVE_PN_UTILS */ + + /* + * We do not support links between attributes and non-attributes + * because of the potential security risk of creating links + * into "normal" file space in order to circumvent restrictions + * imposed in attribute space. + */ + if ((szp->z_pflags & ZFS_XATTR) != (dzp->z_pflags & ZFS_XATTR)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + owner = zfs_fuid_map_id(zsb, szp->z_uid, cr, ZFS_OWNER); + if (owner != crgetuid(cr) && secpolicy_basic_link(cr) != 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + if ((error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, B_FALSE, cr))) { + ZFS_EXIT(zsb); + return (error); + } + +top: + /* + * Attempt to lock directory; fail if entry already exists. + */ + error = zfs_dirent_lock(&dl, dzp, name, &tzp, zf, NULL, NULL); + if (error) { + ZFS_EXIT(zsb); + return (error); + } + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, szp->z_sa_hdl, B_FALSE); + dmu_tx_hold_zap(tx, dzp->z_id, TRUE, name); + zfs_sa_upgrade_txholds(tx, szp); + zfs_sa_upgrade_txholds(tx, dzp); + error = dmu_tx_assign(tx, waited ? TXG_WAITED : TXG_NOWAIT); + if (error) { + zfs_dirent_unlock(dl); + if (error == ERESTART) { + waited = B_TRUE; + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + ZFS_EXIT(zsb); + return (error); + } + + error = zfs_link_create(dl, szp, tx, 0); + + if (error == 0) { + uint64_t txtype = TX_LINK; +#ifdef HAVE_PN_UTILS + if (flags & FIGNORECASE) + txtype |= TX_CI; +#endif /* HAVE_PN_UTILS */ + zfs_log_link(zilog, tx, txtype, dzp, szp, name); + } + + dmu_tx_commit(tx); + + zfs_dirent_unlock(dl); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + zfs_inode_update(dzp); + zfs_inode_update(szp); + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_link); + +static void +zfs_putpage_commit_cb(void *arg) +{ + struct page *pp = arg; + + ClearPageError(pp); + end_page_writeback(pp); +} + +/* + * Push a page out to disk, once the page is on stable storage the + * registered commit callback will be run as notification of completion. + * + * IN: ip - page mapped for inode. + * pp - page to push (page is locked) + * wbc - writeback control data + * + * RETURN: 0 if success + * error code if failure + * + * Timestamps: + * ip - ctime|mtime updated + */ +/* ARGSUSED */ +int +zfs_putpage(struct inode *ip, struct page *pp, struct writeback_control *wbc) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + loff_t offset; + loff_t pgoff; + unsigned int pglen; + rl_t *rl; + dmu_tx_t *tx; + caddr_t va; + int err = 0; + uint64_t mtime[2], ctime[2]; + sa_bulk_attr_t bulk[3]; + int cnt = 0; + struct address_space *mapping; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + ASSERT(PageLocked(pp)); + + pgoff = page_offset(pp); /* Page byte-offset in file */ + offset = i_size_read(ip); /* File length in bytes */ + pglen = MIN(PAGE_CACHE_SIZE, /* Page length in bytes */ + P2ROUNDUP(offset, PAGE_CACHE_SIZE)-pgoff); + + /* Page is beyond end of file */ + if (pgoff >= offset) { + unlock_page(pp); + ZFS_EXIT(zsb); + return (0); + } + + /* Truncate page length to end of file */ + if (pgoff + pglen > offset) + pglen = offset - pgoff; + +#if 0 + /* + * FIXME: Allow mmap writes past its quota. The correct fix + * is to register a page_mkwrite() handler to count the page + * against its quota when it is about to be dirtied. + */ + if (zfs_owner_overquota(zsb, zp, B_FALSE) || + zfs_owner_overquota(zsb, zp, B_TRUE)) { + err = EDQUOT; + } +#endif + + /* + * The ordering here is critical and must adhere to the following + * rules in order to avoid deadlocking in either zfs_read() or + * zfs_free_range() due to a lock inversion. + * + * 1) The page must be unlocked prior to acquiring the range lock. + * This is critical because zfs_read() calls find_lock_page() + * which may block on the page lock while holding the range lock. + * + * 2) Before setting or clearing write back on a page the range lock + * must be held in order to prevent a lock inversion with the + * zfs_free_range() function. + * + * This presents a problem because upon entering this function the + * page lock is already held. To safely acquire the range lock the + * page lock must be dropped. This creates a window where another + * process could truncate, invalidate, dirty, or write out the page. + * + * Therefore, after successfully reacquiring the range and page locks + * the current page state is checked. In the common case everything + * will be as is expected and it can be written out. However, if + * the page state has changed it must be handled accordingly. + */ + mapping = pp->mapping; + redirty_page_for_writepage(wbc, pp); + unlock_page(pp); + + rl = zfs_range_lock(zp, pgoff, pglen, RL_WRITER); + lock_page(pp); + + /* Page mapping changed or it was no longer dirty, we're done */ + if (unlikely((mapping != pp->mapping) || !PageDirty(pp))) { + unlock_page(pp); + zfs_range_unlock(rl); + ZFS_EXIT(zsb); + return (0); + } + + /* Another process started write block if required */ + if (PageWriteback(pp)) { + unlock_page(pp); + zfs_range_unlock(rl); + + if (wbc->sync_mode != WB_SYNC_NONE) + wait_on_page_writeback(pp); + + ZFS_EXIT(zsb); + return (0); + } + + /* Clear the dirty flag the required locks are held */ + if (!clear_page_dirty_for_io(pp)) { + unlock_page(pp); + zfs_range_unlock(rl); + ZFS_EXIT(zsb); + return (0); + } + + /* + * Counterpart for redirty_page_for_writepage() above. This page + * was in fact not skipped and should not be counted as if it were. + */ + wbc->pages_skipped--; + set_page_writeback(pp); + unlock_page(pp); + + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_write(tx, zp->z_id, pgoff, pglen); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + + err = dmu_tx_assign(tx, TXG_NOWAIT); + if (err != 0) { + if (err == ERESTART) + dmu_tx_wait(tx); + + dmu_tx_abort(tx); + __set_page_dirty_nobuffers(pp); + ClearPageError(pp); + end_page_writeback(pp); + zfs_range_unlock(rl); + ZFS_EXIT(zsb); + return (err); + } + + va = kmap(pp); + ASSERT3U(pglen, <=, PAGE_CACHE_SIZE); + dmu_write(zsb->z_os, zp->z_id, pgoff, pglen, va, tx); + kunmap(pp); + + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MTIME(zsb), NULL, &mtime, 16); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_CTIME(zsb), NULL, &ctime, 16); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_FLAGS(zsb), NULL, &zp->z_pflags, 8); + + /* Preserve the mtime and ctime provided by the inode */ + ZFS_TIME_ENCODE(&ip->i_mtime, mtime); + ZFS_TIME_ENCODE(&ip->i_ctime, ctime); + zp->z_atime_dirty = 0; + zp->z_seq++; + + err = sa_bulk_update(zp->z_sa_hdl, bulk, cnt, tx); + + zfs_log_write(zsb->z_log, tx, TX_WRITE, zp, pgoff, pglen, 0, + zfs_putpage_commit_cb, pp); + dmu_tx_commit(tx); + + zfs_range_unlock(rl); + + if (wbc->sync_mode != WB_SYNC_NONE) { + /* + * Note that this is rarely called under writepages(), because + * writepages() normally handles the entire commit for + * performance reasons. + */ + if (zsb->z_log != NULL) + zil_commit(zsb->z_log, zp->z_id); + } + + ZFS_EXIT(zsb); + return (err); +} + +/* + * Update the system attributes when the inode has been dirtied. For the + * moment we only update the mode, atime, mtime, and ctime. + */ +int +zfs_dirty_inode(struct inode *ip, int flags) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + dmu_tx_t *tx; + uint64_t mode, atime[2], mtime[2], ctime[2]; + sa_bulk_attr_t bulk[4]; + int error; + int cnt = 0; + + if (zfs_is_readonly(zsb) || dmu_objset_is_snapshot(zsb->z_os)) + return (0); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + tx = dmu_tx_create(zsb->z_os); + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + goto out; + } + + mutex_enter(&zp->z_lock); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MODE(zsb), NULL, &mode, 8); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_ATIME(zsb), NULL, &atime, 16); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MTIME(zsb), NULL, &mtime, 16); + SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_CTIME(zsb), NULL, &ctime, 16); + + /* Preserve the mode, mtime and ctime provided by the inode */ + ZFS_TIME_ENCODE(&ip->i_atime, atime); + ZFS_TIME_ENCODE(&ip->i_mtime, mtime); + ZFS_TIME_ENCODE(&ip->i_ctime, ctime); + mode = ip->i_mode; + + zp->z_mode = mode; + zp->z_atime_dirty = 0; + + error = sa_bulk_update(zp->z_sa_hdl, bulk, cnt, tx); + mutex_exit(&zp->z_lock); + + dmu_tx_commit(tx); +out: + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_dirty_inode); + +/*ARGSUSED*/ +void +zfs_inactive(struct inode *ip) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + int need_unlock = 0; + + /* Only read lock if we haven't already write locked, e.g. rollback */ + if (!RW_WRITE_HELD(&zsb->z_teardown_inactive_lock)) { + need_unlock = 1; + rw_enter(&zsb->z_teardown_inactive_lock, RW_READER); + } + if (zp->z_sa_hdl == NULL) { + if (need_unlock) + rw_exit(&zsb->z_teardown_inactive_lock); + return; + } + + if (zp->z_atime_dirty && zp->z_unlinked == 0) { + dmu_tx_t *tx = dmu_tx_create(zsb->z_os); + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + } else { + mutex_enter(&zp->z_lock); + (void) sa_update(zp->z_sa_hdl, SA_ZPL_ATIME(zsb), + (void *)&zp->z_atime, sizeof (zp->z_atime), tx); + zp->z_atime_dirty = 0; + mutex_exit(&zp->z_lock); + dmu_tx_commit(tx); + } + } + + zfs_zinactive(zp); + if (need_unlock) + rw_exit(&zsb->z_teardown_inactive_lock); +} +EXPORT_SYMBOL(zfs_inactive); + +/* + * Bounds-check the seek operation. + * + * IN: ip - inode seeking within + * ooff - old file offset + * noffp - pointer to new file offset + * ct - caller context + * + * RETURN: 0 if success + * EINVAL if new offset invalid + */ +/* ARGSUSED */ +int +zfs_seek(struct inode *ip, offset_t ooff, offset_t *noffp) +{ + if (S_ISDIR(ip->i_mode)) + return (0); + return ((*noffp < 0 || *noffp > MAXOFFSET_T) ? EINVAL : 0); +} +EXPORT_SYMBOL(zfs_seek); + +/* + * Fill pages with data from the disk. + */ +static int +zfs_fillpage(struct inode *ip, struct page *pl[], int nr_pages) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + objset_t *os; + struct page *cur_pp; + u_offset_t io_off, total; + size_t io_len; + loff_t i_size; + unsigned page_idx; + int err; + + os = zsb->z_os; + io_len = nr_pages << PAGE_CACHE_SHIFT; + i_size = i_size_read(ip); + io_off = page_offset(pl[0]); + + if (io_off + io_len > i_size) + io_len = i_size - io_off; + + /* + * Iterate over list of pages and read each page individually. + */ + page_idx = 0; + cur_pp = pl[0]; + for (total = io_off + io_len; io_off < total; io_off += PAGESIZE) { + caddr_t va; + + va = kmap(cur_pp); + err = dmu_read(os, zp->z_id, io_off, PAGESIZE, va, + DMU_READ_PREFETCH); + kunmap(cur_pp); + if (err) { + /* convert checksum errors into IO errors */ + if (err == ECKSUM) + err = SET_ERROR(EIO); + return (err); + } + cur_pp = pl[++page_idx]; + } + + return (0); +} + +/* + * Uses zfs_fillpage to read data from the file and fill the pages. + * + * IN: ip - inode of file to get data from. + * pl - list of pages to read + * nr_pages - number of pages to read + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * vp - atime updated + */ +/* ARGSUSED */ +int +zfs_getpage(struct inode *ip, struct page *pl[], int nr_pages) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int err; + + if (pl == NULL) + return (0); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + err = zfs_fillpage(ip, pl, nr_pages); + + if (!err) + ZFS_ACCESSTIME_STAMP(zsb, zp); + + ZFS_EXIT(zsb); + return (err); +} +EXPORT_SYMBOL(zfs_getpage); + +/* + * Check ZFS specific permissions to memory map a section of a file. + * + * IN: ip - inode of the file to mmap + * off - file offset + * addrp - start address in memory region + * len - length of memory region + * vm_flags- address flags + * + * RETURN: 0 if success + * error code if failure + */ +/*ARGSUSED*/ +int +zfs_map(struct inode *ip, offset_t off, caddr_t *addrp, size_t len, + unsigned long vm_flags) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if ((vm_flags & VM_WRITE) && (zp->z_pflags & + (ZFS_IMMUTABLE | ZFS_READONLY | ZFS_APPENDONLY))) { + ZFS_EXIT(zsb); + return (SET_ERROR(EPERM)); + } + + if ((vm_flags & (VM_READ | VM_EXEC)) && + (zp->z_pflags & ZFS_AV_QUARANTINED)) { + ZFS_EXIT(zsb); + return (SET_ERROR(EACCES)); + } + + if (off < 0 || len > MAXOFFSET_T - off) { + ZFS_EXIT(zsb); + return (SET_ERROR(ENXIO)); + } + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_map); + +/* + * convoff - converts the given data (start, whence) to the + * given whence. + */ +int +convoff(struct inode *ip, flock64_t *lckdat, int whence, offset_t offset) +{ + vattr_t vap; + int error; + + if ((lckdat->l_whence == 2) || (whence == 2)) { + if ((error = zfs_getattr(ip, &vap, 0, CRED()) != 0)) + return (error); + } + + switch (lckdat->l_whence) { + case 1: + lckdat->l_start += offset; + break; + case 2: + lckdat->l_start += vap.va_size; + /* FALLTHRU */ + case 0: + break; + default: + return (SET_ERROR(EINVAL)); + } + + if (lckdat->l_start < 0) + return (SET_ERROR(EINVAL)); + + switch (whence) { + case 1: + lckdat->l_start -= offset; + break; + case 2: + lckdat->l_start -= vap.va_size; + /* FALLTHRU */ + case 0: + break; + default: + return (SET_ERROR(EINVAL)); + } + + lckdat->l_whence = (short)whence; + return (0); +} + +/* + * Free or allocate space in a file. Currently, this function only + * supports the `F_FREESP' command. However, this command is somewhat + * misnamed, as its functionality includes the ability to allocate as + * well as free space. + * + * IN: ip - inode of file to free data in. + * cmd - action to take (only F_FREESP supported). + * bfp - section of file to free/alloc. + * flag - current file open mode flags. + * offset - current file offset. + * cr - credentials of caller [UNUSED]. + * + * RETURN: 0 on success, error code on failure. + * + * Timestamps: + * ip - ctime|mtime updated + */ +/* ARGSUSED */ +int +zfs_space(struct inode *ip, int cmd, flock64_t *bfp, int flag, + offset_t offset, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + uint64_t off, len; + int error; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if (cmd != F_FREESP) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + if ((error = convoff(ip, bfp, 0, offset))) { + ZFS_EXIT(zsb); + return (error); + } + + if (bfp->l_len < 0) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + /* + * Permissions aren't checked on Solaris because on this OS + * zfs_space() can only be called with an opened file handle. + * On Linux we can get here through truncate_range() which + * operates directly on inodes, so we need to check access rights. + */ + if ((error = zfs_zaccess(zp, ACE_WRITE_DATA, 0, B_FALSE, cr))) { + ZFS_EXIT(zsb); + return (error); + } + + off = bfp->l_start; + len = bfp->l_len; /* 0 means from off to end of file */ + + error = zfs_freesp(zp, off, len, flag, TRUE); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_space); + +/*ARGSUSED*/ +int +zfs_fid(struct inode *ip, fid_t *fidp) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + uint32_t gen; + uint64_t gen64; + uint64_t object = zp->z_id; + zfid_short_t *zfid; + int size, i, error; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(zsb), + &gen64, sizeof (uint64_t))) != 0) { + ZFS_EXIT(zsb); + return (error); + } + + gen = (uint32_t)gen64; + + size = (zsb->z_parent != zsb) ? LONG_FID_LEN : SHORT_FID_LEN; + if (fidp->fid_len < size) { + fidp->fid_len = size; + ZFS_EXIT(zsb); + return (SET_ERROR(ENOSPC)); + } + + zfid = (zfid_short_t *)fidp; + + zfid->zf_len = size; + + for (i = 0; i < sizeof (zfid->zf_object); i++) + zfid->zf_object[i] = (uint8_t)(object >> (8 * i)); + + /* Must have a non-zero generation number to distinguish from .zfs */ + if (gen == 0) + gen = 1; + for (i = 0; i < sizeof (zfid->zf_gen); i++) + zfid->zf_gen[i] = (uint8_t)(gen >> (8 * i)); + + if (size == LONG_FID_LEN) { + uint64_t objsetid = dmu_objset_id(zsb->z_os); + zfid_long_t *zlfid; + + zlfid = (zfid_long_t *)fidp; + + for (i = 0; i < sizeof (zlfid->zf_setid); i++) + zlfid->zf_setid[i] = (uint8_t)(objsetid >> (8 * i)); + + /* XXX - this should be the generation number for the objset */ + for (i = 0; i < sizeof (zlfid->zf_setgen); i++) + zlfid->zf_setgen[i] = 0; + } + + ZFS_EXIT(zsb); + return (0); +} +EXPORT_SYMBOL(zfs_fid); + +/*ARGSUSED*/ +int +zfs_getsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + boolean_t skipaclchk = (flag & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + error = zfs_getacl(zp, vsecp, skipaclchk, cr); + ZFS_EXIT(zsb); + + return (error); +} +EXPORT_SYMBOL(zfs_getsecattr); + +/*ARGSUSED*/ +int +zfs_setsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int error; + boolean_t skipaclchk = (flag & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE; + zilog_t *zilog = zsb->z_log; + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + + error = zfs_setacl(zp, vsecp, skipaclchk, cr); + + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zilog, 0); + + ZFS_EXIT(zsb); + return (error); +} +EXPORT_SYMBOL(zfs_setsecattr); + +#ifdef HAVE_UIO_ZEROCOPY +/* + * Tunable, both must be a power of 2. + * + * zcr_blksz_min: the smallest read we may consider to loan out an arcbuf + * zcr_blksz_max: if set to less than the file block size, allow loaning out of + * an arcbuf for a partial block read + */ +int zcr_blksz_min = (1 << 10); /* 1K */ +int zcr_blksz_max = (1 << 17); /* 128K */ + +/*ARGSUSED*/ +static int +zfs_reqzcbuf(struct inode *ip, enum uio_rw ioflag, xuio_t *xuio, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ITOZSB(ip); + int max_blksz = zsb->z_max_blksz; + uio_t *uio = &xuio->xu_uio; + ssize_t size = uio->uio_resid; + offset_t offset = uio->uio_loffset; + int blksz; + int fullblk, i; + arc_buf_t *abuf; + ssize_t maxsize; + int preamble, postamble; + + if (xuio->xu_type != UIOTYPE_ZEROCOPY) + return (SET_ERROR(EINVAL)); + + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + switch (ioflag) { + case UIO_WRITE: + /* + * Loan out an arc_buf for write if write size is bigger than + * max_blksz, and the file's block size is also max_blksz. + */ + blksz = max_blksz; + if (size < blksz || zp->z_blksz != blksz) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + /* + * Caller requests buffers for write before knowing where the + * write offset might be (e.g. NFS TCP write). + */ + if (offset == -1) { + preamble = 0; + } else { + preamble = P2PHASE(offset, blksz); + if (preamble) { + preamble = blksz - preamble; + size -= preamble; + } + } + + postamble = P2PHASE(size, blksz); + size -= postamble; + + fullblk = size / blksz; + (void) dmu_xuio_init(xuio, + (preamble != 0) + fullblk + (postamble != 0)); + + /* + * Have to fix iov base/len for partial buffers. They + * currently represent full arc_buf's. + */ + if (preamble) { + /* data begins in the middle of the arc_buf */ + abuf = dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl), + blksz); + ASSERT(abuf); + (void) dmu_xuio_add(xuio, abuf, + blksz - preamble, preamble); + } + + for (i = 0; i < fullblk; i++) { + abuf = dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl), + blksz); + ASSERT(abuf); + (void) dmu_xuio_add(xuio, abuf, 0, blksz); + } + + if (postamble) { + /* data ends in the middle of the arc_buf */ + abuf = dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl), + blksz); + ASSERT(abuf); + (void) dmu_xuio_add(xuio, abuf, 0, postamble); + } + break; + case UIO_READ: + /* + * Loan out an arc_buf for read if the read size is larger than + * the current file block size. Block alignment is not + * considered. Partial arc_buf will be loaned out for read. + */ + blksz = zp->z_blksz; + if (blksz < zcr_blksz_min) + blksz = zcr_blksz_min; + if (blksz > zcr_blksz_max) + blksz = zcr_blksz_max; + /* avoid potential complexity of dealing with it */ + if (blksz > max_blksz) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + maxsize = zp->z_size - uio->uio_loffset; + if (size > maxsize) + size = maxsize; + + if (size < blksz) { + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + break; + default: + ZFS_EXIT(zsb); + return (SET_ERROR(EINVAL)); + } + + uio->uio_extflg = UIO_XUIO; + XUIO_XUZC_RW(xuio) = ioflag; + ZFS_EXIT(zsb); + return (0); +} + +/*ARGSUSED*/ +static int +zfs_retzcbuf(struct inode *ip, xuio_t *xuio, cred_t *cr) +{ + int i; + arc_buf_t *abuf; + int ioflag = XUIO_XUZC_RW(xuio); + + ASSERT(xuio->xu_type == UIOTYPE_ZEROCOPY); + + i = dmu_xuio_cnt(xuio); + while (i-- > 0) { + abuf = dmu_xuio_arcbuf(xuio, i); + /* + * if abuf == NULL, it must be a write buffer + * that has been returned in zfs_write(). + */ + if (abuf) + dmu_return_arcbuf(abuf); + ASSERT(abuf || ioflag == UIO_WRITE); + } + + dmu_xuio_fini(xuio); + return (0); +} +#endif /* HAVE_UIO_ZEROCOPY */ + +#if defined(_KERNEL) && defined(HAVE_SPL) +module_param(zfs_read_chunk_size, long, 0644); +MODULE_PARM_DESC(zfs_read_chunk_size, "Bytes to read per chunk"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zfs_znode.c +++ linux-4.4.0/zfs/module/zfs/zfs_znode.c @@ -0,0 +1,1998 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +/* Portions Copyright 2007 Jeremy Teo */ + +#ifdef _KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fs/fs_subr.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif /* _KERNEL */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "zfs_prop.h" +#include "zfs_comutil.h" + +/* + * Define ZNODE_STATS to turn on statistic gathering. By default, it is only + * turned on when DEBUG is also defined. + */ +#ifdef DEBUG +#define ZNODE_STATS +#endif /* DEBUG */ + +#ifdef ZNODE_STATS +#define ZNODE_STAT_ADD(stat) ((stat)++) +#else +#define ZNODE_STAT_ADD(stat) /* nothing */ +#endif /* ZNODE_STATS */ + +/* + * Functions needed for userland (ie: libzpool) are not put under + * #ifdef_KERNEL; the rest of the functions have dependencies + * (such as VFS logic) that will not compile easily in userland. + */ +#ifdef _KERNEL + +static kmem_cache_t *znode_cache = NULL; + +/*ARGSUSED*/ +static int +zfs_znode_cache_constructor(void *buf, void *arg, int kmflags) +{ + znode_t *zp = buf; + + inode_init_once(ZTOI(zp)); + list_link_init(&zp->z_link_node); + + mutex_init(&zp->z_lock, NULL, MUTEX_DEFAULT, NULL); + rw_init(&zp->z_parent_lock, NULL, RW_DEFAULT, NULL); + rw_init(&zp->z_name_lock, NULL, RW_DEFAULT, NULL); + mutex_init(&zp->z_acl_lock, NULL, MUTEX_DEFAULT, NULL); + rw_init(&zp->z_xattr_lock, NULL, RW_DEFAULT, NULL); + + mutex_init(&zp->z_range_lock, NULL, MUTEX_DEFAULT, NULL); + avl_create(&zp->z_range_avl, zfs_range_compare, + sizeof (rl_t), offsetof(rl_t, r_node)); + + zp->z_dirlocks = NULL; + zp->z_acl_cached = NULL; + zp->z_xattr_cached = NULL; + zp->z_xattr_parent = NULL; + zp->z_moved = 0; + return (0); +} + +/*ARGSUSED*/ +static void +zfs_znode_cache_destructor(void *buf, void *arg) +{ + znode_t *zp = buf; + + ASSERT(!list_link_active(&zp->z_link_node)); + mutex_destroy(&zp->z_lock); + rw_destroy(&zp->z_parent_lock); + rw_destroy(&zp->z_name_lock); + mutex_destroy(&zp->z_acl_lock); + rw_destroy(&zp->z_xattr_lock); + avl_destroy(&zp->z_range_avl); + mutex_destroy(&zp->z_range_lock); + + ASSERT(zp->z_dirlocks == NULL); + ASSERT(zp->z_acl_cached == NULL); + ASSERT(zp->z_xattr_cached == NULL); + ASSERT(zp->z_xattr_parent == NULL); +} + +void +zfs_znode_init(void) +{ + /* + * Initialize zcache. The KMC_SLAB hint is used in order that it be + * backed by kmalloc() when on the Linux slab in order that any + * wait_on_bit() operations on the related inode operate properly. + */ + ASSERT(znode_cache == NULL); + znode_cache = kmem_cache_create("zfs_znode_cache", + sizeof (znode_t), 0, zfs_znode_cache_constructor, + zfs_znode_cache_destructor, NULL, NULL, NULL, KMC_SLAB); +} + +void +zfs_znode_fini(void) +{ + /* + * Cleanup zcache + */ + if (znode_cache) + kmem_cache_destroy(znode_cache); + znode_cache = NULL; +} + +int +zfs_create_share_dir(zfs_sb_t *zsb, dmu_tx_t *tx) +{ +#ifdef HAVE_SMB_SHARE + zfs_acl_ids_t acl_ids; + vattr_t vattr; + znode_t *sharezp; + vnode_t *vp; + znode_t *zp; + int error; + + vattr.va_mask = AT_MODE|AT_UID|AT_GID|AT_TYPE; + vattr.va_mode = S_IFDIR | 0555; + vattr.va_uid = crgetuid(kcred); + vattr.va_gid = crgetgid(kcred); + + sharezp = kmem_cache_alloc(znode_cache, KM_SLEEP); + sharezp->z_moved = 0; + sharezp->z_unlinked = 0; + sharezp->z_atime_dirty = 0; + sharezp->z_zfsvfs = zfsvfs; + sharezp->z_is_sa = zfsvfs->z_use_sa; + + vp = ZTOV(sharezp); + vn_reinit(vp); + vp->v_type = VDIR; + + VERIFY(0 == zfs_acl_ids_create(sharezp, IS_ROOT_NODE, &vattr, + kcred, NULL, &acl_ids)); + zfs_mknode(sharezp, &vattr, tx, kcred, IS_ROOT_NODE, &zp, &acl_ids); + ASSERT3P(zp, ==, sharezp); + ASSERT(!vn_in_dnlc(ZTOV(sharezp))); /* not valid to move */ + POINTER_INVALIDATE(&sharezp->z_zfsvfs); + error = zap_add(zfsvfs->z_os, MASTER_NODE_OBJ, + ZFS_SHARES_DIR, 8, 1, &sharezp->z_id, tx); + zfsvfs->z_shares_dir = sharezp->z_id; + + zfs_acl_ids_free(&acl_ids); + // ZTOV(sharezp)->v_count = 0; + sa_handle_destroy(sharezp->z_sa_hdl); + kmem_cache_free(znode_cache, sharezp); + + return (error); +#else + return (0); +#endif /* HAVE_SMB_SHARE */ +} + +static void +zfs_znode_sa_init(zfs_sb_t *zsb, znode_t *zp, + dmu_buf_t *db, dmu_object_type_t obj_type, sa_handle_t *sa_hdl) +{ + ASSERT(MUTEX_HELD(ZFS_OBJ_MUTEX(zsb, zp->z_id))); + + mutex_enter(&zp->z_lock); + + ASSERT(zp->z_sa_hdl == NULL); + ASSERT(zp->z_acl_cached == NULL); + if (sa_hdl == NULL) { + VERIFY(0 == sa_handle_get_from_db(zsb->z_os, db, zp, + SA_HDL_SHARED, &zp->z_sa_hdl)); + } else { + zp->z_sa_hdl = sa_hdl; + sa_set_userp(sa_hdl, zp); + } + + zp->z_is_sa = (obj_type == DMU_OT_SA) ? B_TRUE : B_FALSE; + + mutex_exit(&zp->z_lock); +} + +void +zfs_znode_dmu_fini(znode_t *zp) +{ + ASSERT(MUTEX_HELD(ZFS_OBJ_MUTEX(ZTOZSB(zp), zp->z_id)) || + zp->z_unlinked || + RW_WRITE_HELD(&ZTOZSB(zp)->z_teardown_inactive_lock)); + + sa_handle_destroy(zp->z_sa_hdl); + zp->z_sa_hdl = NULL; +} + +/* + * Called by new_inode() to allocate a new inode. + */ +int +zfs_inode_alloc(struct super_block *sb, struct inode **ip) +{ + znode_t *zp; + + zp = kmem_cache_alloc(znode_cache, KM_SLEEP); + *ip = ZTOI(zp); + + return (0); +} + +/* + * Called in multiple places when an inode should be destroyed. + */ +void +zfs_inode_destroy(struct inode *ip) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ZTOZSB(zp); + + mutex_enter(&zsb->z_znodes_lock); + if (list_link_active(&zp->z_link_node)) { + list_remove(&zsb->z_all_znodes, zp); + zsb->z_nr_znodes--; + } + mutex_exit(&zsb->z_znodes_lock); + + if (zp->z_acl_cached) { + zfs_acl_free(zp->z_acl_cached); + zp->z_acl_cached = NULL; + } + + if (zp->z_xattr_cached) { + nvlist_free(zp->z_xattr_cached); + zp->z_xattr_cached = NULL; + } + + if (zp->z_xattr_parent) { + zfs_iput_async(ZTOI(zp->z_xattr_parent)); + zp->z_xattr_parent = NULL; + } + + kmem_cache_free(znode_cache, zp); +} + +static void +zfs_inode_set_ops(zfs_sb_t *zsb, struct inode *ip) +{ + uint64_t rdev = 0; + + switch (ip->i_mode & S_IFMT) { + case S_IFREG: + ip->i_op = &zpl_inode_operations; + ip->i_fop = &zpl_file_operations; + ip->i_mapping->a_ops = &zpl_address_space_operations; + break; + + case S_IFDIR: + ip->i_op = &zpl_dir_inode_operations; + ip->i_fop = &zpl_dir_file_operations; + ITOZ(ip)->z_zn_prefetch = B_TRUE; + break; + + case S_IFLNK: + ip->i_op = &zpl_symlink_inode_operations; + break; + + /* + * rdev is only stored in a SA only for device files. + */ + case S_IFCHR: + case S_IFBLK: + sa_lookup(ITOZ(ip)->z_sa_hdl, SA_ZPL_RDEV(zsb), &rdev, + sizeof (rdev)); + /*FALLTHROUGH*/ + case S_IFIFO: + case S_IFSOCK: + init_special_inode(ip, ip->i_mode, rdev); + ip->i_op = &zpl_special_inode_operations; + break; + + default: + zfs_panic_recover("inode %llu has invalid mode: 0x%x\n", + (u_longlong_t)ip->i_ino, ip->i_mode); + + /* Assume the inode is a file and attempt to continue */ + ip->i_mode = S_IFREG | 0644; + ip->i_op = &zpl_inode_operations; + ip->i_fop = &zpl_file_operations; + ip->i_mapping->a_ops = &zpl_address_space_operations; + break; + } +} + +/* + * Construct a znode+inode and initialize. + * + * This does not do a call to dmu_set_user() that is + * up to the caller to do, in case you don't want to + * return the znode + */ +static znode_t * +zfs_znode_alloc(zfs_sb_t *zsb, dmu_buf_t *db, int blksz, + dmu_object_type_t obj_type, uint64_t obj, sa_handle_t *hdl, + struct inode *dip) +{ + znode_t *zp; + struct inode *ip; + uint64_t mode; + uint64_t parent; + sa_bulk_attr_t bulk[9]; + int count = 0; + + ASSERT(zsb != NULL); + + ip = new_inode(zsb->z_sb); + if (ip == NULL) + return (NULL); + + zp = ITOZ(ip); + ASSERT(zp->z_dirlocks == NULL); + ASSERT3P(zp->z_acl_cached, ==, NULL); + ASSERT3P(zp->z_xattr_cached, ==, NULL); + ASSERT3P(zp->z_xattr_parent, ==, NULL); + zp->z_moved = 0; + zp->z_sa_hdl = NULL; + zp->z_unlinked = 0; + zp->z_atime_dirty = 0; + zp->z_mapcnt = 0; + zp->z_id = db->db_object; + zp->z_blksz = blksz; + zp->z_seq = 0x7A4653; + zp->z_sync_cnt = 0; + zp->z_is_zvol = B_FALSE; + zp->z_is_mapped = B_FALSE; + zp->z_is_ctldir = B_FALSE; + zp->z_is_stale = B_FALSE; + + zfs_znode_sa_init(zsb, zp, db, obj_type, hdl); + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), NULL, &mode, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GEN(zsb), NULL, &zp->z_gen, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), NULL, &zp->z_size, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), NULL, &zp->z_links, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_PARENT(zsb), NULL, + &parent, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ATIME(zsb), NULL, + &zp->z_atime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_UID(zsb), NULL, &zp->z_uid, 8); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GID(zsb), NULL, &zp->z_gid, 8); + + if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count) != 0 || zp->z_gen == 0) { + if (hdl == NULL) + sa_handle_destroy(zp->z_sa_hdl); + zp->z_sa_hdl = NULL; + goto error; + } + + zp->z_mode = mode; + + /* + * xattr znodes hold a reference on their unique parent + */ + if (dip && zp->z_pflags & ZFS_XATTR) { + igrab(dip); + zp->z_xattr_parent = ITOZ(dip); + } + + ip->i_ino = obj; + zfs_inode_update(zp); + zfs_inode_set_ops(zsb, ip); + + /* + * The only way insert_inode_locked() can fail is if the ip->i_ino + * number is already hashed for this super block. This can never + * happen because the inode numbers map 1:1 with the object numbers. + * + * The one exception is rolling back a mounted file system, but in + * this case all the active inode are unhashed during the rollback. + */ + VERIFY3S(insert_inode_locked(ip), ==, 0); + + mutex_enter(&zsb->z_znodes_lock); + list_insert_tail(&zsb->z_all_znodes, zp); + zsb->z_nr_znodes++; + membar_producer(); + mutex_exit(&zsb->z_znodes_lock); + + unlock_new_inode(ip); + return (zp); + +error: + iput(ip); + return (NULL); +} + +void +zfs_set_inode_flags(znode_t *zp, struct inode *ip) +{ + /* + * Linux and Solaris have different sets of file attributes, so we + * restrict this conversion to the intersection of the two. + */ + + if (zp->z_pflags & ZFS_IMMUTABLE) + ip->i_flags |= S_IMMUTABLE; + else + ip->i_flags &= ~S_IMMUTABLE; + + if (zp->z_pflags & ZFS_APPENDONLY) + ip->i_flags |= S_APPEND; + else + ip->i_flags &= ~S_APPEND; +} + +/* + * Update the embedded inode given the znode. We should work toward + * eliminating this function as soon as possible by removing values + * which are duplicated between the znode and inode. If the generic + * inode has the correct field it should be used, and the ZFS code + * updated to access the inode. This can be done incrementally. + */ +void +zfs_inode_update(znode_t *zp) +{ + zfs_sb_t *zsb; + struct inode *ip; + uint32_t blksize; + uint64_t atime[2], mtime[2], ctime[2]; + + ASSERT(zp != NULL); + zsb = ZTOZSB(zp); + ip = ZTOI(zp); + + /* Skip .zfs control nodes which do not exist on disk. */ + if (zfsctl_is_node(ip)) + return; + + sa_lookup(zp->z_sa_hdl, SA_ZPL_ATIME(zsb), &atime, 16); + sa_lookup(zp->z_sa_hdl, SA_ZPL_MTIME(zsb), &mtime, 16); + sa_lookup(zp->z_sa_hdl, SA_ZPL_CTIME(zsb), &ctime, 16); + + spin_lock(&ip->i_lock); + ip->i_generation = zp->z_gen; + ip->i_uid = SUID_TO_KUID(zp->z_uid); + ip->i_gid = SGID_TO_KGID(zp->z_gid); + set_nlink(ip, zp->z_links); + ip->i_mode = zp->z_mode; + zfs_set_inode_flags(zp, ip); + ip->i_blkbits = SPA_MINBLOCKSHIFT; + dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &blksize, + (u_longlong_t *)&ip->i_blocks); + + ZFS_TIME_DECODE(&ip->i_atime, atime); + ZFS_TIME_DECODE(&ip->i_mtime, mtime); + ZFS_TIME_DECODE(&ip->i_ctime, ctime); + + i_size_write(ip, zp->z_size); + spin_unlock(&ip->i_lock); +} + +/* + * Safely mark an inode dirty. Inodes which are part of a read-only + * file system or snapshot may not be dirtied. + */ +void +zfs_mark_inode_dirty(struct inode *ip) +{ + zfs_sb_t *zsb = ITOZSB(ip); + + if (zfs_is_readonly(zsb) || dmu_objset_is_snapshot(zsb->z_os)) + return; + + mark_inode_dirty(ip); +} + +static uint64_t empty_xattr; +static uint64_t pad[4]; +static zfs_acl_phys_t acl_phys; +/* + * Create a new DMU object to hold a zfs znode. + * + * IN: dzp - parent directory for new znode + * vap - file attributes for new znode + * tx - dmu transaction id for zap operations + * cr - credentials of caller + * flag - flags: + * IS_ROOT_NODE - new object will be root + * IS_XATTR - new object is an attribute + * bonuslen - length of bonus buffer + * setaclp - File/Dir initial ACL + * fuidp - Tracks fuid allocation. + * + * OUT: zpp - allocated znode + * + */ +void +zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr, + uint_t flag, znode_t **zpp, zfs_acl_ids_t *acl_ids) +{ + uint64_t crtime[2], atime[2], mtime[2], ctime[2]; + uint64_t mode, size, links, parent, pflags; + uint64_t dzp_pflags = 0; + uint64_t rdev = 0; + zfs_sb_t *zsb = ZTOZSB(dzp); + dmu_buf_t *db; + timestruc_t now; + uint64_t gen, obj; + int bonuslen; + sa_handle_t *sa_hdl; + dmu_object_type_t obj_type; + sa_bulk_attr_t *sa_attrs; + int cnt = 0; + zfs_acl_locator_cb_t locate = { 0 }; + + if (zsb->z_replay) { + obj = vap->va_nodeid; + now = vap->va_ctime; /* see zfs_replay_create() */ + gen = vap->va_nblocks; /* ditto */ + } else { + obj = 0; + gethrestime(&now); + gen = dmu_tx_get_txg(tx); + } + + obj_type = zsb->z_use_sa ? DMU_OT_SA : DMU_OT_ZNODE; + bonuslen = (obj_type == DMU_OT_SA) ? + DN_MAX_BONUSLEN : ZFS_OLD_ZNODE_PHYS_SIZE; + + /* + * Create a new DMU object. + */ + /* + * There's currently no mechanism for pre-reading the blocks that will + * be needed to allocate a new object, so we accept the small chance + * that there will be an i/o error and we will fail one of the + * assertions below. + */ + if (S_ISDIR(vap->va_mode)) { + if (zsb->z_replay) { + VERIFY0(zap_create_claim_norm(zsb->z_os, obj, + zsb->z_norm, DMU_OT_DIRECTORY_CONTENTS, + obj_type, bonuslen, tx)); + } else { + obj = zap_create_norm(zsb->z_os, + zsb->z_norm, DMU_OT_DIRECTORY_CONTENTS, + obj_type, bonuslen, tx); + } + } else { + if (zsb->z_replay) { + VERIFY0(dmu_object_claim(zsb->z_os, obj, + DMU_OT_PLAIN_FILE_CONTENTS, 0, + obj_type, bonuslen, tx)); + } else { + obj = dmu_object_alloc(zsb->z_os, + DMU_OT_PLAIN_FILE_CONTENTS, 0, + obj_type, bonuslen, tx); + } + } + + ZFS_OBJ_HOLD_ENTER(zsb, obj); + VERIFY(0 == sa_buf_hold(zsb->z_os, obj, NULL, &db)); + + /* + * If this is the root, fix up the half-initialized parent pointer + * to reference the just-allocated physical data area. + */ + if (flag & IS_ROOT_NODE) { + dzp->z_id = obj; + } else { + dzp_pflags = dzp->z_pflags; + } + + /* + * If parent is an xattr, so am I. + */ + if (dzp_pflags & ZFS_XATTR) { + flag |= IS_XATTR; + } + + if (zsb->z_use_fuids) + pflags = ZFS_ARCHIVE | ZFS_AV_MODIFIED; + else + pflags = 0; + + if (S_ISDIR(vap->va_mode)) { + size = 2; /* contents ("." and "..") */ + links = (flag & (IS_ROOT_NODE | IS_XATTR)) ? 2 : 1; + } else { + size = links = 0; + } + + if (S_ISBLK(vap->va_mode) || S_ISCHR(vap->va_mode)) + rdev = vap->va_rdev; + + parent = dzp->z_id; + mode = acl_ids->z_mode; + if (flag & IS_XATTR) + pflags |= ZFS_XATTR; + + /* + * No execs denied will be deterimed when zfs_mode_compute() is called. + */ + pflags |= acl_ids->z_aclp->z_hints & + (ZFS_ACL_TRIVIAL|ZFS_INHERIT_ACE|ZFS_ACL_AUTO_INHERIT| + ZFS_ACL_DEFAULTED|ZFS_ACL_PROTECTED); + + ZFS_TIME_ENCODE(&now, crtime); + ZFS_TIME_ENCODE(&now, ctime); + + if (vap->va_mask & ATTR_ATIME) { + ZFS_TIME_ENCODE(&vap->va_atime, atime); + } else { + ZFS_TIME_ENCODE(&now, atime); + } + + if (vap->va_mask & ATTR_MTIME) { + ZFS_TIME_ENCODE(&vap->va_mtime, mtime); + } else { + ZFS_TIME_ENCODE(&now, mtime); + } + + /* Now add in all of the "SA" attributes */ + VERIFY(0 == sa_handle_get_from_db(zsb->z_os, db, NULL, SA_HDL_SHARED, + &sa_hdl)); + + /* + * Setup the array of attributes to be replaced/set on the new file + * + * order for DMU_OT_ZNODE is critical since it needs to be constructed + * in the old znode_phys_t format. Don't change this ordering + */ + sa_attrs = kmem_alloc(sizeof (sa_bulk_attr_t) * ZPL_END, KM_SLEEP); + + if (obj_type == DMU_OT_ZNODE) { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_ATIME(zsb), + NULL, &atime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_MTIME(zsb), + NULL, &mtime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_CTIME(zsb), + NULL, &ctime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_CRTIME(zsb), + NULL, &crtime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_GEN(zsb), + NULL, &gen, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_MODE(zsb), + NULL, &mode, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_SIZE(zsb), + NULL, &size, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_PARENT(zsb), + NULL, &parent, 8); + } else { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_MODE(zsb), + NULL, &mode, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_SIZE(zsb), + NULL, &size, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_GEN(zsb), + NULL, &gen, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_UID(zsb), + NULL, &acl_ids->z_fuid, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_GID(zsb), + NULL, &acl_ids->z_fgid, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_PARENT(zsb), + NULL, &parent, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_FLAGS(zsb), + NULL, &pflags, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_ATIME(zsb), + NULL, &atime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_MTIME(zsb), + NULL, &mtime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_CTIME(zsb), + NULL, &ctime, 16); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_CRTIME(zsb), + NULL, &crtime, 16); + } + + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_LINKS(zsb), NULL, &links, 8); + + if (obj_type == DMU_OT_ZNODE) { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_XATTR(zsb), NULL, + &empty_xattr, 8); + } + if (obj_type == DMU_OT_ZNODE || + (S_ISBLK(vap->va_mode) || S_ISCHR(vap->va_mode))) { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_RDEV(zsb), + NULL, &rdev, 8); + } + if (obj_type == DMU_OT_ZNODE) { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_FLAGS(zsb), + NULL, &pflags, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_UID(zsb), NULL, + &acl_ids->z_fuid, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_GID(zsb), NULL, + &acl_ids->z_fgid, 8); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_PAD(zsb), NULL, pad, + sizeof (uint64_t) * 4); + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_ZNODE_ACL(zsb), NULL, + &acl_phys, sizeof (zfs_acl_phys_t)); + } else if (acl_ids->z_aclp->z_version >= ZFS_ACL_VERSION_FUID) { + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_DACL_COUNT(zsb), NULL, + &acl_ids->z_aclp->z_acl_count, 8); + locate.cb_aclp = acl_ids->z_aclp; + SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_DACL_ACES(zsb), + zfs_acl_data_locator, &locate, + acl_ids->z_aclp->z_acl_bytes); + mode = zfs_mode_compute(mode, acl_ids->z_aclp, &pflags, + acl_ids->z_fuid, acl_ids->z_fgid); + } + + VERIFY(sa_replace_all_by_template(sa_hdl, sa_attrs, cnt, tx) == 0); + + if (!(flag & IS_ROOT_NODE)) { + *zpp = zfs_znode_alloc(zsb, db, 0, obj_type, obj, sa_hdl, + ZTOI(dzp)); + VERIFY(*zpp != NULL); + VERIFY(dzp != NULL); + } else { + /* + * If we are creating the root node, the "parent" we + * passed in is the znode for the root. + */ + *zpp = dzp; + + (*zpp)->z_sa_hdl = sa_hdl; + } + + (*zpp)->z_pflags = pflags; + (*zpp)->z_mode = mode; + + if (obj_type == DMU_OT_ZNODE || + acl_ids->z_aclp->z_version < ZFS_ACL_VERSION_FUID) { + VERIFY0(zfs_aclset_common(*zpp, acl_ids->z_aclp, cr, tx)); + } + kmem_free(sa_attrs, sizeof (sa_bulk_attr_t) * ZPL_END); + ZFS_OBJ_HOLD_EXIT(zsb, obj); +} + +/* + * Update in-core attributes. It is assumed the caller will be doing an + * sa_bulk_update to push the changes out. + */ +void +zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx) +{ + xoptattr_t *xoap; + + xoap = xva_getxoptattr(xvap); + ASSERT(xoap); + + if (XVA_ISSET_REQ(xvap, XAT_CREATETIME)) { + uint64_t times[2]; + ZFS_TIME_ENCODE(&xoap->xoa_createtime, times); + (void) sa_update(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)), + ×, sizeof (times), tx); + XVA_SET_RTN(xvap, XAT_CREATETIME); + } + if (XVA_ISSET_REQ(xvap, XAT_READONLY)) { + ZFS_ATTR_SET(zp, ZFS_READONLY, xoap->xoa_readonly, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_READONLY); + } + if (XVA_ISSET_REQ(xvap, XAT_HIDDEN)) { + ZFS_ATTR_SET(zp, ZFS_HIDDEN, xoap->xoa_hidden, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_HIDDEN); + } + if (XVA_ISSET_REQ(xvap, XAT_SYSTEM)) { + ZFS_ATTR_SET(zp, ZFS_SYSTEM, xoap->xoa_system, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_SYSTEM); + } + if (XVA_ISSET_REQ(xvap, XAT_ARCHIVE)) { + ZFS_ATTR_SET(zp, ZFS_ARCHIVE, xoap->xoa_archive, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_ARCHIVE); + } + if (XVA_ISSET_REQ(xvap, XAT_IMMUTABLE)) { + ZFS_ATTR_SET(zp, ZFS_IMMUTABLE, xoap->xoa_immutable, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_IMMUTABLE); + } + if (XVA_ISSET_REQ(xvap, XAT_NOUNLINK)) { + ZFS_ATTR_SET(zp, ZFS_NOUNLINK, xoap->xoa_nounlink, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_NOUNLINK); + } + if (XVA_ISSET_REQ(xvap, XAT_APPENDONLY)) { + ZFS_ATTR_SET(zp, ZFS_APPENDONLY, xoap->xoa_appendonly, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_APPENDONLY); + } + if (XVA_ISSET_REQ(xvap, XAT_NODUMP)) { + ZFS_ATTR_SET(zp, ZFS_NODUMP, xoap->xoa_nodump, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_NODUMP); + } + if (XVA_ISSET_REQ(xvap, XAT_OPAQUE)) { + ZFS_ATTR_SET(zp, ZFS_OPAQUE, xoap->xoa_opaque, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_OPAQUE); + } + if (XVA_ISSET_REQ(xvap, XAT_AV_QUARANTINED)) { + ZFS_ATTR_SET(zp, ZFS_AV_QUARANTINED, + xoap->xoa_av_quarantined, zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_AV_QUARANTINED); + } + if (XVA_ISSET_REQ(xvap, XAT_AV_MODIFIED)) { + ZFS_ATTR_SET(zp, ZFS_AV_MODIFIED, xoap->xoa_av_modified, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_AV_MODIFIED); + } + if (XVA_ISSET_REQ(xvap, XAT_AV_SCANSTAMP)) { + zfs_sa_set_scanstamp(zp, xvap, tx); + XVA_SET_RTN(xvap, XAT_AV_SCANSTAMP); + } + if (XVA_ISSET_REQ(xvap, XAT_REPARSE)) { + ZFS_ATTR_SET(zp, ZFS_REPARSE, xoap->xoa_reparse, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_REPARSE); + } + if (XVA_ISSET_REQ(xvap, XAT_OFFLINE)) { + ZFS_ATTR_SET(zp, ZFS_OFFLINE, xoap->xoa_offline, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_OFFLINE); + } + if (XVA_ISSET_REQ(xvap, XAT_SPARSE)) { + ZFS_ATTR_SET(zp, ZFS_SPARSE, xoap->xoa_sparse, + zp->z_pflags, tx); + XVA_SET_RTN(xvap, XAT_SPARSE); + } +} + +int +zfs_zget(zfs_sb_t *zsb, uint64_t obj_num, znode_t **zpp) +{ + dmu_object_info_t doi; + dmu_buf_t *db; + znode_t *zp; + int err; + sa_handle_t *hdl; + + *zpp = NULL; + +again: + ZFS_OBJ_HOLD_ENTER(zsb, obj_num); + + err = sa_buf_hold(zsb->z_os, obj_num, NULL, &db); + if (err) { + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (err); + } + + dmu_object_info_from_db(db, &doi); + if (doi.doi_bonus_type != DMU_OT_SA && + (doi.doi_bonus_type != DMU_OT_ZNODE || + (doi.doi_bonus_type == DMU_OT_ZNODE && + doi.doi_bonus_size < sizeof (znode_phys_t)))) { + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (SET_ERROR(EINVAL)); + } + + hdl = dmu_buf_get_user(db); + if (hdl != NULL) { + zp = sa_get_userdata(hdl); + + + /* + * Since "SA" does immediate eviction we + * should never find a sa handle that doesn't + * know about the znode. + */ + + ASSERT3P(zp, !=, NULL); + + mutex_enter(&zp->z_lock); + ASSERT3U(zp->z_id, ==, obj_num); + if (zp->z_unlinked) { + err = SET_ERROR(ENOENT); + } else { + /* + * If igrab() returns NULL the VFS has independently + * determined the inode should be evicted and has + * called iput_final() to start the eviction process. + * The SA handle is still valid but because the VFS + * requires that the eviction succeed we must drop + * our locks and references to allow the eviction to + * complete. The zfs_zget() may then be retried. + * + * This unlikely case could be optimized by registering + * a sops->drop_inode() callback. The callback would + * need to detect the active SA hold thereby informing + * the VFS that this inode should not be evicted. + */ + if (igrab(ZTOI(zp)) == NULL) { + mutex_exit(&zp->z_lock); + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + /* inode might need this to finish evict */ + cond_resched(); + goto again; + } + *zpp = zp; + err = 0; + } + mutex_exit(&zp->z_lock); + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (err); + } + + /* + * Not found create new znode/vnode but only if file exists. + * + * There is a small window where zfs_vget() could + * find this object while a file create is still in + * progress. This is checked for in zfs_znode_alloc() + * + * if zfs_znode_alloc() fails it will drop the hold on the + * bonus buffer. + */ + zp = zfs_znode_alloc(zsb, db, doi.doi_data_block_size, + doi.doi_bonus_type, obj_num, NULL, NULL); + if (zp == NULL) { + err = SET_ERROR(ENOENT); + } else { + *zpp = zp; + } + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (err); +} + +int +zfs_rezget(znode_t *zp) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + dmu_object_info_t doi; + dmu_buf_t *db; + uint64_t obj_num = zp->z_id; + uint64_t mode; + sa_bulk_attr_t bulk[8]; + int err; + int count = 0; + uint64_t gen; + + ZFS_OBJ_HOLD_ENTER(zsb, obj_num); + + mutex_enter(&zp->z_acl_lock); + if (zp->z_acl_cached) { + zfs_acl_free(zp->z_acl_cached); + zp->z_acl_cached = NULL; + } + mutex_exit(&zp->z_acl_lock); + + rw_enter(&zp->z_xattr_lock, RW_WRITER); + if (zp->z_xattr_cached) { + nvlist_free(zp->z_xattr_cached); + zp->z_xattr_cached = NULL; + } + + if (zp->z_xattr_parent) { + zfs_iput_async(ZTOI(zp->z_xattr_parent)); + zp->z_xattr_parent = NULL; + } + rw_exit(&zp->z_xattr_lock); + + ASSERT(zp->z_sa_hdl == NULL); + err = sa_buf_hold(zsb->z_os, obj_num, NULL, &db); + if (err) { + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (err); + } + + dmu_object_info_from_db(db, &doi); + if (doi.doi_bonus_type != DMU_OT_SA && + (doi.doi_bonus_type != DMU_OT_ZNODE || + (doi.doi_bonus_type == DMU_OT_ZNODE && + doi.doi_bonus_size < sizeof (znode_phys_t)))) { + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (SET_ERROR(EINVAL)); + } + + zfs_znode_sa_init(zsb, zp, db, doi.doi_bonus_type, NULL); + + /* reload cached values */ + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GEN(zsb), NULL, + &gen, sizeof (gen)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), NULL, + &zp->z_size, sizeof (zp->z_size)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_LINKS(zsb), NULL, + &zp->z_links, sizeof (zp->z_links)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL, + &zp->z_pflags, sizeof (zp->z_pflags)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ATIME(zsb), NULL, + &zp->z_atime, sizeof (zp->z_atime)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_UID(zsb), NULL, + &zp->z_uid, sizeof (zp->z_uid)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GID(zsb), NULL, + &zp->z_gid, sizeof (zp->z_gid)); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MODE(zsb), NULL, + &mode, sizeof (mode)); + + if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count)) { + zfs_znode_dmu_fini(zp); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (SET_ERROR(EIO)); + } + + zp->z_mode = mode; + + if (gen != zp->z_gen) { + zfs_znode_dmu_fini(zp); + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + return (SET_ERROR(EIO)); + } + + zp->z_unlinked = (zp->z_links == 0); + zp->z_blksz = doi.doi_data_block_size; + zfs_inode_update(zp); + + ZFS_OBJ_HOLD_EXIT(zsb, obj_num); + + return (0); +} + +void +zfs_znode_delete(znode_t *zp, dmu_tx_t *tx) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + objset_t *os = zsb->z_os; + uint64_t obj = zp->z_id; + uint64_t acl_obj = zfs_external_acl(zp); + + ZFS_OBJ_HOLD_ENTER(zsb, obj); + if (acl_obj) { + VERIFY(!zp->z_is_sa); + VERIFY(0 == dmu_object_free(os, acl_obj, tx)); + } + VERIFY(0 == dmu_object_free(os, obj, tx)); + zfs_znode_dmu_fini(zp); + ZFS_OBJ_HOLD_EXIT(zsb, obj); +} + +void +zfs_zinactive(znode_t *zp) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + uint64_t z_id = zp->z_id; + + ASSERT(zp->z_sa_hdl); + + /* + * Don't allow a zfs_zget() while were trying to release this znode. + */ + ZFS_OBJ_HOLD_ENTER(zsb, z_id); + + mutex_enter(&zp->z_lock); + + /* + * If this was the last reference to a file with no links, + * remove the file from the file system. + */ + if (zp->z_unlinked) { + mutex_exit(&zp->z_lock); + + ZFS_OBJ_HOLD_EXIT(zsb, z_id); + + zfs_rmnode(zp); + return; + } + + mutex_exit(&zp->z_lock); + zfs_znode_dmu_fini(zp); + + ZFS_OBJ_HOLD_EXIT(zsb, z_id); +} + +static inline int +zfs_compare_timespec(struct timespec *t1, struct timespec *t2) +{ + if (t1->tv_sec < t2->tv_sec) + return (-1); + + if (t1->tv_sec > t2->tv_sec) + return (1); + + return (t1->tv_nsec - t2->tv_nsec); +} + +/* + * Determine whether the znode's atime must be updated. The logic mostly + * duplicates the Linux kernel's relatime_need_update() functionality. + * This function is only called if the underlying filesystem actually has + * atime updates enabled. + */ +static inline boolean_t +zfs_atime_need_update(znode_t *zp, timestruc_t *now) +{ + if (!ZTOZSB(zp)->z_relatime) + return (B_TRUE); + + /* + * In relatime mode, only update the atime if the previous atime + * is earlier than either the ctime or mtime or if at least a day + * has passed since the last update of atime. + */ + if (zfs_compare_timespec(&ZTOI(zp)->i_mtime, &ZTOI(zp)->i_atime) >= 0) + return (B_TRUE); + + if (zfs_compare_timespec(&ZTOI(zp)->i_ctime, &ZTOI(zp)->i_atime) >= 0) + return (B_TRUE); + + if ((long)now->tv_sec - ZTOI(zp)->i_atime.tv_sec >= 24*60*60) + return (B_TRUE); + + return (B_FALSE); +} + +/* + * Prepare to update znode time stamps. + * + * IN: zp - znode requiring timestamp update + * flag - ATTR_MTIME, ATTR_CTIME, ATTR_ATIME flags + * have_tx - true of caller is creating a new txg + * + * OUT: zp - new atime (via underlying inode's i_atime) + * mtime - new mtime + * ctime - new ctime + * + * NOTE: The arguments are somewhat redundant. The following condition + * is always true: + * + * have_tx == !(flag & ATTR_ATIME) + */ +void +zfs_tstamp_update_setup(znode_t *zp, uint_t flag, uint64_t mtime[2], + uint64_t ctime[2], boolean_t have_tx) +{ + timestruc_t now; + + ASSERT(have_tx == !(flag & ATTR_ATIME)); + gethrestime(&now); + + /* + * NOTE: The following test intentionally does not update z_atime_dirty + * in the case where an ATIME update has been requested but for which + * the update is omitted due to relatime logic. The rationale being + * that if the flag was set somewhere else, we should leave it alone + * here. + */ + if (flag & ATTR_ATIME) { + if (zfs_atime_need_update(zp, &now)) { + ZFS_TIME_ENCODE(&now, zp->z_atime); + ZTOI(zp)->i_atime.tv_sec = zp->z_atime[0]; + ZTOI(zp)->i_atime.tv_nsec = zp->z_atime[1]; + zp->z_atime_dirty = 1; + } + } else { + zp->z_atime_dirty = 0; + zp->z_seq++; + } + + if (flag & ATTR_MTIME) { + ZFS_TIME_ENCODE(&now, mtime); + if (ZTOZSB(zp)->z_use_fuids) { + zp->z_pflags |= (ZFS_ARCHIVE | + ZFS_AV_MODIFIED); + } + } + + if (flag & ATTR_CTIME) { + ZFS_TIME_ENCODE(&now, ctime); + if (ZTOZSB(zp)->z_use_fuids) + zp->z_pflags |= ZFS_ARCHIVE; + } +} + +/* + * Grow the block size for a file. + * + * IN: zp - znode of file to free data in. + * size - requested block size + * tx - open transaction. + * + * NOTE: this function assumes that the znode is write locked. + */ +void +zfs_grow_blocksize(znode_t *zp, uint64_t size, dmu_tx_t *tx) +{ + int error; + u_longlong_t dummy; + + if (size <= zp->z_blksz) + return; + /* + * If the file size is already greater than the current blocksize, + * we will not grow. If there is more than one block in a file, + * the blocksize cannot change. + */ + if (zp->z_blksz && zp->z_size > zp->z_blksz) + return; + + error = dmu_object_set_blocksize(ZTOZSB(zp)->z_os, zp->z_id, + size, 0, tx); + + if (error == ENOTSUP) + return; + ASSERT0(error); + + /* What blocksize did we actually get? */ + dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &zp->z_blksz, &dummy); +} + +/* + * Increase the file length + * + * IN: zp - znode of file to free data in. + * end - new end-of-file + * + * RETURN: 0 on success, error code on failure + */ +static int +zfs_extend(znode_t *zp, uint64_t end) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + dmu_tx_t *tx; + rl_t *rl; + uint64_t newblksz; + int error; + + /* + * We will change zp_size, lock the whole file. + */ + rl = zfs_range_lock(zp, 0, UINT64_MAX, RL_WRITER); + + /* + * Nothing to do if file already at desired length. + */ + if (end <= zp->z_size) { + zfs_range_unlock(rl); + return (0); + } + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + if (end > zp->z_blksz && + (!ISP2(zp->z_blksz) || zp->z_blksz < zsb->z_max_blksz)) { + /* + * We are growing the file past the current block size. + */ + if (zp->z_blksz > ZTOZSB(zp)->z_max_blksz) { + /* + * File's blocksize is already larger than the + * "recordsize" property. Only let it grow to + * the next power of 2. + */ + ASSERT(!ISP2(zp->z_blksz)); + newblksz = MIN(end, 1 << highbit64(zp->z_blksz)); + } else { + newblksz = MIN(end, ZTOZSB(zp)->z_max_blksz); + } + dmu_tx_hold_write(tx, zp->z_id, 0, newblksz); + } else { + newblksz = 0; + } + + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + zfs_range_unlock(rl); + return (error); + } + + if (newblksz) + zfs_grow_blocksize(zp, newblksz, tx); + + zp->z_size = end; + + VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(ZTOZSB(zp)), + &zp->z_size, sizeof (zp->z_size), tx)); + + zfs_range_unlock(rl); + + dmu_tx_commit(tx); + + return (0); +} + +/* + * zfs_zero_partial_page - Modeled after update_pages() but + * with different arguments and semantics for use by zfs_freesp(). + * + * Zeroes a piece of a single page cache entry for zp at offset + * start and length len. + * + * Caller must acquire a range lock on the file for the region + * being zeroed in order that the ARC and page cache stay in sync. + */ +static void +zfs_zero_partial_page(znode_t *zp, uint64_t start, uint64_t len) +{ + struct address_space *mp = ZTOI(zp)->i_mapping; + struct page *pp; + int64_t off; + void *pb; + + ASSERT((start & PAGE_CACHE_MASK) == + ((start + len - 1) & PAGE_CACHE_MASK)); + + off = start & (PAGE_CACHE_SIZE - 1); + start &= PAGE_CACHE_MASK; + + pp = find_lock_page(mp, start >> PAGE_CACHE_SHIFT); + if (pp) { + if (mapping_writably_mapped(mp)) + flush_dcache_page(pp); + + pb = kmap(pp); + bzero(pb + off, len); + kunmap(pp); + + if (mapping_writably_mapped(mp)) + flush_dcache_page(pp); + + mark_page_accessed(pp); + SetPageUptodate(pp); + ClearPageError(pp); + unlock_page(pp); + page_cache_release(pp); + } +} + +/* + * Free space in a file. + * + * IN: zp - znode of file to free data in. + * off - start of section to free. + * len - length of section to free. + * + * RETURN: 0 on success, error code on failure + */ +static int +zfs_free_range(znode_t *zp, uint64_t off, uint64_t len) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + rl_t *rl; + int error; + + /* + * Lock the range being freed. + */ + rl = zfs_range_lock(zp, off, len, RL_WRITER); + + /* + * Nothing to do if file already at desired length. + */ + if (off >= zp->z_size) { + zfs_range_unlock(rl); + return (0); + } + + if (off + len > zp->z_size) + len = zp->z_size - off; + + error = dmu_free_long_range(zsb->z_os, zp->z_id, off, len); + + /* + * Zero partial page cache entries. This must be done under a + * range lock in order to keep the ARC and page cache in sync. + */ + if (zp->z_is_mapped) { + loff_t first_page, last_page, page_len; + loff_t first_page_offset, last_page_offset; + + /* first possible full page in hole */ + first_page = (off + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; + /* last page of hole */ + last_page = (off + len) >> PAGE_CACHE_SHIFT; + + /* offset of first_page */ + first_page_offset = first_page << PAGE_CACHE_SHIFT; + /* offset of last_page */ + last_page_offset = last_page << PAGE_CACHE_SHIFT; + + /* truncate whole pages */ + if (last_page_offset > first_page_offset) { + truncate_inode_pages_range(ZTOI(zp)->i_mapping, + first_page_offset, last_page_offset - 1); + } + + /* truncate sub-page ranges */ + if (first_page > last_page) { + /* entire punched area within a single page */ + zfs_zero_partial_page(zp, off, len); + } else { + /* beginning of punched area at the end of a page */ + page_len = first_page_offset - off; + if (page_len > 0) + zfs_zero_partial_page(zp, off, page_len); + + /* end of punched area at the beginning of a page */ + page_len = off + len - last_page_offset; + if (page_len > 0) + zfs_zero_partial_page(zp, last_page_offset, + page_len); + } + } + zfs_range_unlock(rl); + + return (error); +} + +/* + * Truncate a file + * + * IN: zp - znode of file to free data in. + * end - new end-of-file. + * + * RETURN: 0 on success, error code on failure + */ +static int +zfs_trunc(znode_t *zp, uint64_t end) +{ + zfs_sb_t *zsb = ZTOZSB(zp); + dmu_tx_t *tx; + rl_t *rl; + int error; + sa_bulk_attr_t bulk[2]; + int count = 0; + + /* + * We will change zp_size, lock the whole file. + */ + rl = zfs_range_lock(zp, 0, UINT64_MAX, RL_WRITER); + + /* + * Nothing to do if file already at desired length. + */ + if (end >= zp->z_size) { + zfs_range_unlock(rl); + return (0); + } + + error = dmu_free_long_range(zsb->z_os, zp->z_id, end, -1); + if (error) { + zfs_range_unlock(rl); + return (error); + } + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + zfs_range_unlock(rl); + return (error); + } + + zp->z_size = end; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_SIZE(zsb), + NULL, &zp->z_size, sizeof (zp->z_size)); + + if (end == 0) { + zp->z_pflags &= ~ZFS_SPARSE; + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), + NULL, &zp->z_pflags, 8); + } + VERIFY(sa_bulk_update(zp->z_sa_hdl, bulk, count, tx) == 0); + + dmu_tx_commit(tx); + + zfs_range_unlock(rl); + + return (0); +} + +/* + * Free space in a file + * + * IN: zp - znode of file to free data in. + * off - start of range + * len - end of range (0 => EOF) + * flag - current file open mode flags. + * log - TRUE if this action should be logged + * + * RETURN: 0 on success, error code on failure + */ +int +zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log) +{ + dmu_tx_t *tx; + zfs_sb_t *zsb = ZTOZSB(zp); + zilog_t *zilog = zsb->z_log; + uint64_t mode; + uint64_t mtime[2], ctime[2]; + sa_bulk_attr_t bulk[3]; + int count = 0; + int error; + + if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_MODE(zsb), &mode, + sizeof (mode))) != 0) + return (error); + + if (off > zp->z_size) { + error = zfs_extend(zp, off+len); + if (error == 0 && log) + goto log; + goto out; + } + + if (len == 0) { + error = zfs_trunc(zp, off); + } else { + if ((error = zfs_free_range(zp, off, len)) == 0 && + off + len > zp->z_size) + error = zfs_extend(zp, off+len); + } + if (error || !log) + goto out; +log: + tx = dmu_tx_create(zsb->z_os); + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + goto out; + } + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL, mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL, ctime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), + NULL, &zp->z_pflags, 8); + zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, B_TRUE); + error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); + ASSERT(error == 0); + + zfs_log_truncate(zilog, tx, TX_TRUNCATE, zp, off, len); + + dmu_tx_commit(tx); + + zfs_inode_update(zp); + error = 0; + +out: + /* + * Truncate the page cache - for file truncate operations, use + * the purpose-built API for truncations. For punching operations, + * the truncation is handled under a range lock in zfs_free_range. + */ + if (len == 0) + truncate_setsize(ZTOI(zp), off); + return (error); +} + +void +zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx) +{ + struct super_block *sb; + zfs_sb_t *zsb; + uint64_t moid, obj, sa_obj, version; + uint64_t sense = ZFS_CASE_SENSITIVE; + uint64_t norm = 0; + nvpair_t *elem; + int error; + int i; + znode_t *rootzp = NULL; + vattr_t vattr; + znode_t *zp; + zfs_acl_ids_t acl_ids; + + /* + * First attempt to create master node. + */ + /* + * In an empty objset, there are no blocks to read and thus + * there can be no i/o errors (which we assert below). + */ + moid = MASTER_NODE_OBJ; + error = zap_create_claim(os, moid, DMU_OT_MASTER_NODE, + DMU_OT_NONE, 0, tx); + ASSERT(error == 0); + + /* + * Set starting attributes. + */ + version = zfs_zpl_version_map(spa_version(dmu_objset_spa(os))); + elem = NULL; + while ((elem = nvlist_next_nvpair(zplprops, elem)) != NULL) { + /* For the moment we expect all zpl props to be uint64_ts */ + uint64_t val; + char *name; + + ASSERT(nvpair_type(elem) == DATA_TYPE_UINT64); + VERIFY(nvpair_value_uint64(elem, &val) == 0); + name = nvpair_name(elem); + if (strcmp(name, zfs_prop_to_name(ZFS_PROP_VERSION)) == 0) { + if (val < version) + version = val; + } else { + error = zap_update(os, moid, name, 8, 1, &val, tx); + } + ASSERT(error == 0); + if (strcmp(name, zfs_prop_to_name(ZFS_PROP_NORMALIZE)) == 0) + norm = val; + else if (strcmp(name, zfs_prop_to_name(ZFS_PROP_CASE)) == 0) + sense = val; + } + ASSERT(version != 0); + error = zap_update(os, moid, ZPL_VERSION_STR, 8, 1, &version, tx); + + /* + * Create zap object used for SA attribute registration + */ + + if (version >= ZPL_VERSION_SA) { + sa_obj = zap_create(os, DMU_OT_SA_MASTER_NODE, + DMU_OT_NONE, 0, tx); + error = zap_add(os, moid, ZFS_SA_ATTRS, 8, 1, &sa_obj, tx); + ASSERT(error == 0); + } else { + sa_obj = 0; + } + /* + * Create a delete queue. + */ + obj = zap_create(os, DMU_OT_UNLINKED_SET, DMU_OT_NONE, 0, tx); + + error = zap_add(os, moid, ZFS_UNLINKED_SET, 8, 1, &obj, tx); + ASSERT(error == 0); + + /* + * Create root znode. Create minimal znode/inode/zsb/sb + * to allow zfs_mknode to work. + */ + vattr.va_mask = ATTR_MODE|ATTR_UID|ATTR_GID; + vattr.va_mode = S_IFDIR|0755; + vattr.va_uid = crgetuid(cr); + vattr.va_gid = crgetgid(cr); + + rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP); + rootzp->z_moved = 0; + rootzp->z_unlinked = 0; + rootzp->z_atime_dirty = 0; + rootzp->z_is_sa = USE_SA(version, os); + + zsb = kmem_zalloc(sizeof (zfs_sb_t), KM_SLEEP); + zsb->z_os = os; + zsb->z_parent = zsb; + zsb->z_version = version; + zsb->z_use_fuids = USE_FUIDS(version, os); + zsb->z_use_sa = USE_SA(version, os); + zsb->z_norm = norm; + + sb = kmem_zalloc(sizeof (struct super_block), KM_SLEEP); + sb->s_fs_info = zsb; + + ZTOI(rootzp)->i_sb = sb; + + error = sa_setup(os, sa_obj, zfs_attr_table, ZPL_END, + &zsb->z_attr_table); + + ASSERT(error == 0); + + /* + * Fold case on file systems that are always or sometimes case + * insensitive. + */ + if (sense == ZFS_CASE_INSENSITIVE || sense == ZFS_CASE_MIXED) + zsb->z_norm |= U8_TEXTPREP_TOUPPER; + + mutex_init(&zsb->z_znodes_lock, NULL, MUTEX_DEFAULT, NULL); + list_create(&zsb->z_all_znodes, sizeof (znode_t), + offsetof(znode_t, z_link_node)); + + zsb->z_hold_mtx = vmem_zalloc(sizeof (kmutex_t) * ZFS_OBJ_MTX_SZ, + KM_SLEEP); + for (i = 0; i != ZFS_OBJ_MTX_SZ; i++) + mutex_init(&zsb->z_hold_mtx[i], NULL, MUTEX_DEFAULT, NULL); + + VERIFY(0 == zfs_acl_ids_create(rootzp, IS_ROOT_NODE, &vattr, + cr, NULL, &acl_ids)); + zfs_mknode(rootzp, &vattr, tx, cr, IS_ROOT_NODE, &zp, &acl_ids); + ASSERT3P(zp, ==, rootzp); + error = zap_add(os, moid, ZFS_ROOT_OBJ, 8, 1, &rootzp->z_id, tx); + ASSERT(error == 0); + zfs_acl_ids_free(&acl_ids); + + atomic_set(&ZTOI(rootzp)->i_count, 0); + sa_handle_destroy(rootzp->z_sa_hdl); + kmem_cache_free(znode_cache, rootzp); + + /* + * Create shares directory + */ + error = zfs_create_share_dir(zsb, tx); + ASSERT(error == 0); + + for (i = 0; i != ZFS_OBJ_MTX_SZ; i++) + mutex_destroy(&zsb->z_hold_mtx[i]); + + vmem_free(zsb->z_hold_mtx, sizeof (kmutex_t) * ZFS_OBJ_MTX_SZ); + kmem_free(sb, sizeof (struct super_block)); + kmem_free(zsb, sizeof (zfs_sb_t)); +} +#endif /* _KERNEL */ + +static int +zfs_sa_setup(objset_t *osp, sa_attr_type_t **sa_table) +{ + uint64_t sa_obj = 0; + int error; + + error = zap_lookup(osp, MASTER_NODE_OBJ, ZFS_SA_ATTRS, 8, 1, &sa_obj); + if (error != 0 && error != ENOENT) + return (error); + + error = sa_setup(osp, sa_obj, zfs_attr_table, ZPL_END, sa_table); + return (error); +} + +static int +zfs_grab_sa_handle(objset_t *osp, uint64_t obj, sa_handle_t **hdlp, + dmu_buf_t **db, void *tag) +{ + dmu_object_info_t doi; + int error; + + if ((error = sa_buf_hold(osp, obj, tag, db)) != 0) + return (error); + + dmu_object_info_from_db(*db, &doi); + if ((doi.doi_bonus_type != DMU_OT_SA && + doi.doi_bonus_type != DMU_OT_ZNODE) || + (doi.doi_bonus_type == DMU_OT_ZNODE && + doi.doi_bonus_size < sizeof (znode_phys_t))) { + sa_buf_rele(*db, tag); + return (SET_ERROR(ENOTSUP)); + } + + error = sa_handle_get(osp, obj, NULL, SA_HDL_PRIVATE, hdlp); + if (error != 0) { + sa_buf_rele(*db, tag); + return (error); + } + + return (0); +} + +void +zfs_release_sa_handle(sa_handle_t *hdl, dmu_buf_t *db, void *tag) +{ + sa_handle_destroy(hdl); + sa_buf_rele(db, tag); +} + +/* + * Given an object number, return its parent object number and whether + * or not the object is an extended attribute directory. + */ +static int +zfs_obj_to_pobj(sa_handle_t *hdl, sa_attr_type_t *sa_table, uint64_t *pobjp, + int *is_xattrdir) +{ + uint64_t parent; + uint64_t pflags; + uint64_t mode; + sa_bulk_attr_t bulk[3]; + int count = 0; + int error; + + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_PARENT], NULL, + &parent, sizeof (parent)); + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_FLAGS], NULL, + &pflags, sizeof (pflags)); + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_MODE], NULL, + &mode, sizeof (mode)); + + if ((error = sa_bulk_lookup(hdl, bulk, count)) != 0) + return (error); + + *pobjp = parent; + *is_xattrdir = ((pflags & ZFS_XATTR) != 0) && S_ISDIR(mode); + + return (0); +} + +/* + * Given an object number, return some zpl level statistics + */ +static int +zfs_obj_to_stats_impl(sa_handle_t *hdl, sa_attr_type_t *sa_table, + zfs_stat_t *sb) +{ + sa_bulk_attr_t bulk[4]; + int count = 0; + + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_MODE], NULL, + &sb->zs_mode, sizeof (sb->zs_mode)); + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_GEN], NULL, + &sb->zs_gen, sizeof (sb->zs_gen)); + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_LINKS], NULL, + &sb->zs_links, sizeof (sb->zs_links)); + SA_ADD_BULK_ATTR(bulk, count, sa_table[ZPL_CTIME], NULL, + &sb->zs_ctime, sizeof (sb->zs_ctime)); + + return (sa_bulk_lookup(hdl, bulk, count)); +} + +static int +zfs_obj_to_path_impl(objset_t *osp, uint64_t obj, sa_handle_t *hdl, + sa_attr_type_t *sa_table, char *buf, int len) +{ + sa_handle_t *sa_hdl; + sa_handle_t *prevhdl = NULL; + dmu_buf_t *prevdb = NULL; + dmu_buf_t *sa_db = NULL; + char *path = buf + len - 1; + int error; + + *path = '\0'; + sa_hdl = hdl; + + for (;;) { + uint64_t pobj = 0; + char component[MAXNAMELEN + 2]; + size_t complen; + int is_xattrdir = 0; + + if (prevdb) + zfs_release_sa_handle(prevhdl, prevdb, FTAG); + + if ((error = zfs_obj_to_pobj(sa_hdl, sa_table, &pobj, + &is_xattrdir)) != 0) + break; + + if (pobj == obj) { + if (path[0] != '/') + *--path = '/'; + break; + } + + component[0] = '/'; + if (is_xattrdir) { + (void) sprintf(component + 1, ""); + } else { + error = zap_value_search(osp, pobj, obj, + ZFS_DIRENT_OBJ(-1ULL), component + 1); + if (error != 0) + break; + } + + complen = strlen(component); + path -= complen; + ASSERT(path >= buf); + bcopy(component, path, complen); + obj = pobj; + + if (sa_hdl != hdl) { + prevhdl = sa_hdl; + prevdb = sa_db; + } + error = zfs_grab_sa_handle(osp, obj, &sa_hdl, &sa_db, FTAG); + if (error != 0) { + sa_hdl = prevhdl; + sa_db = prevdb; + break; + } + } + + if (sa_hdl != NULL && sa_hdl != hdl) { + ASSERT(sa_db != NULL); + zfs_release_sa_handle(sa_hdl, sa_db, FTAG); + } + + if (error == 0) + (void) memmove(buf, path, buf + len - path); + + return (error); +} + +int +zfs_obj_to_path(objset_t *osp, uint64_t obj, char *buf, int len) +{ + sa_attr_type_t *sa_table; + sa_handle_t *hdl; + dmu_buf_t *db; + int error; + + error = zfs_sa_setup(osp, &sa_table); + if (error != 0) + return (error); + + error = zfs_grab_sa_handle(osp, obj, &hdl, &db, FTAG); + if (error != 0) + return (error); + + error = zfs_obj_to_path_impl(osp, obj, hdl, sa_table, buf, len); + + zfs_release_sa_handle(hdl, db, FTAG); + return (error); +} + +int +zfs_obj_to_stats(objset_t *osp, uint64_t obj, zfs_stat_t *sb, + char *buf, int len) +{ + char *path = buf + len - 1; + sa_attr_type_t *sa_table; + sa_handle_t *hdl; + dmu_buf_t *db; + int error; + + *path = '\0'; + + error = zfs_sa_setup(osp, &sa_table); + if (error != 0) + return (error); + + error = zfs_grab_sa_handle(osp, obj, &hdl, &db, FTAG); + if (error != 0) + return (error); + + error = zfs_obj_to_stats_impl(hdl, sa_table, sb); + if (error != 0) { + zfs_release_sa_handle(hdl, db, FTAG); + return (error); + } + + error = zfs_obj_to_path_impl(osp, obj, hdl, sa_table, buf, len); + + zfs_release_sa_handle(hdl, db, FTAG); + return (error); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zfs_create_fs); +EXPORT_SYMBOL(zfs_obj_to_path); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zil.c +++ linux-4.4.0/zfs/module/zfs/zil.c @@ -0,0 +1,2285 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. + */ + +/* Portions Copyright 2010 Robert Milkowski */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * The zfs intent log (ZIL) saves transaction records of system calls + * that change the file system in memory with enough information + * to be able to replay them. These are stored in memory until + * either the DMU transaction group (txg) commits them to the stable pool + * and they can be discarded, or they are flushed to the stable log + * (also in the pool) due to a fsync, O_DSYNC or other synchronous + * requirement. In the event of a panic or power fail then those log + * records (transactions) are replayed. + * + * There is one ZIL per file system. Its on-disk (pool) format consists + * of 3 parts: + * + * - ZIL header + * - ZIL blocks + * - ZIL records + * + * A log record holds a system call transaction. Log blocks can + * hold many log records and the blocks are chained together. + * Each ZIL block contains a block pointer (blkptr_t) to the next + * ZIL block in the chain. The ZIL header points to the first + * block in the chain. Note there is not a fixed place in the pool + * to hold blocks. They are dynamically allocated and freed as + * needed from the blocks available. Figure X shows the ZIL structure: + */ + +/* + * See zil.h for more information about these fields. + */ +zil_stats_t zil_stats = { + { "zil_commit_count", KSTAT_DATA_UINT64 }, + { "zil_commit_writer_count", KSTAT_DATA_UINT64 }, + { "zil_itx_count", KSTAT_DATA_UINT64 }, + { "zil_itx_indirect_count", KSTAT_DATA_UINT64 }, + { "zil_itx_indirect_bytes", KSTAT_DATA_UINT64 }, + { "zil_itx_copied_count", KSTAT_DATA_UINT64 }, + { "zil_itx_copied_bytes", KSTAT_DATA_UINT64 }, + { "zil_itx_needcopy_count", KSTAT_DATA_UINT64 }, + { "zil_itx_needcopy_bytes", KSTAT_DATA_UINT64 }, + { "zil_itx_metaslab_normal_count", KSTAT_DATA_UINT64 }, + { "zil_itx_metaslab_normal_bytes", KSTAT_DATA_UINT64 }, + { "zil_itx_metaslab_slog_count", KSTAT_DATA_UINT64 }, + { "zil_itx_metaslab_slog_bytes", KSTAT_DATA_UINT64 }, +}; + +static kstat_t *zil_ksp; + +/* + * Disable intent logging replay. This global ZIL switch affects all pools. + */ +int zil_replay_disable = 0; + +/* + * Tunable parameter for debugging or performance analysis. Setting + * zfs_nocacheflush will cause corruption on power loss if a volatile + * out-of-order write cache is enabled. + */ +int zfs_nocacheflush = 0; + +static kmem_cache_t *zil_lwb_cache; + +static void zil_async_to_sync(zilog_t *zilog, uint64_t foid); + +#define LWB_EMPTY(lwb) ((BP_GET_LSIZE(&lwb->lwb_blk) - \ + sizeof (zil_chain_t)) == (lwb->lwb_sz - lwb->lwb_nused)) + + +/* + * ziltest is by and large an ugly hack, but very useful in + * checking replay without tedious work. + * When running ziltest we want to keep all itx's and so maintain + * a single list in the zl_itxg[] that uses a high txg: ZILTEST_TXG + * We subtract TXG_CONCURRENT_STATES to allow for common code. + */ +#define ZILTEST_TXG (UINT64_MAX - TXG_CONCURRENT_STATES) + +static int +zil_bp_compare(const void *x1, const void *x2) +{ + const dva_t *dva1 = &((zil_bp_node_t *)x1)->zn_dva; + const dva_t *dva2 = &((zil_bp_node_t *)x2)->zn_dva; + + if (DVA_GET_VDEV(dva1) < DVA_GET_VDEV(dva2)) + return (-1); + if (DVA_GET_VDEV(dva1) > DVA_GET_VDEV(dva2)) + return (1); + + if (DVA_GET_OFFSET(dva1) < DVA_GET_OFFSET(dva2)) + return (-1); + if (DVA_GET_OFFSET(dva1) > DVA_GET_OFFSET(dva2)) + return (1); + + return (0); +} + +static void +zil_bp_tree_init(zilog_t *zilog) +{ + avl_create(&zilog->zl_bp_tree, zil_bp_compare, + sizeof (zil_bp_node_t), offsetof(zil_bp_node_t, zn_node)); +} + +static void +zil_bp_tree_fini(zilog_t *zilog) +{ + avl_tree_t *t = &zilog->zl_bp_tree; + zil_bp_node_t *zn; + void *cookie = NULL; + + while ((zn = avl_destroy_nodes(t, &cookie)) != NULL) + kmem_free(zn, sizeof (zil_bp_node_t)); + + avl_destroy(t); +} + +int +zil_bp_tree_add(zilog_t *zilog, const blkptr_t *bp) +{ + avl_tree_t *t = &zilog->zl_bp_tree; + const dva_t *dva; + zil_bp_node_t *zn; + avl_index_t where; + + if (BP_IS_EMBEDDED(bp)) + return (0); + + dva = BP_IDENTITY(bp); + + if (avl_find(t, dva, &where) != NULL) + return (SET_ERROR(EEXIST)); + + zn = kmem_alloc(sizeof (zil_bp_node_t), KM_SLEEP); + zn->zn_dva = *dva; + avl_insert(t, zn, where); + + return (0); +} + +static zil_header_t * +zil_header_in_syncing_context(zilog_t *zilog) +{ + return ((zil_header_t *)zilog->zl_header); +} + +static void +zil_init_log_chain(zilog_t *zilog, blkptr_t *bp) +{ + zio_cksum_t *zc = &bp->blk_cksum; + + zc->zc_word[ZIL_ZC_GUID_0] = spa_get_random(-1ULL); + zc->zc_word[ZIL_ZC_GUID_1] = spa_get_random(-1ULL); + zc->zc_word[ZIL_ZC_OBJSET] = dmu_objset_id(zilog->zl_os); + zc->zc_word[ZIL_ZC_SEQ] = 1ULL; +} + +/* + * Read a log block and make sure it's valid. + */ +static int +zil_read_log_block(zilog_t *zilog, const blkptr_t *bp, blkptr_t *nbp, void *dst, + char **end) +{ + enum zio_flag zio_flags = ZIO_FLAG_CANFAIL; + arc_flags_t aflags = ARC_FLAG_WAIT; + arc_buf_t *abuf = NULL; + zbookmark_phys_t zb; + int error; + + if (zilog->zl_header->zh_claim_txg == 0) + zio_flags |= ZIO_FLAG_SPECULATIVE | ZIO_FLAG_SCRUB; + + if (!(zilog->zl_header->zh_flags & ZIL_CLAIM_LR_SEQ_VALID)) + zio_flags |= ZIO_FLAG_SPECULATIVE; + + SET_BOOKMARK(&zb, bp->blk_cksum.zc_word[ZIL_ZC_OBJSET], + ZB_ZIL_OBJECT, ZB_ZIL_LEVEL, bp->blk_cksum.zc_word[ZIL_ZC_SEQ]); + + error = arc_read(NULL, zilog->zl_spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_SYNC_READ, zio_flags, &aflags, &zb); + + if (error == 0) { + zio_cksum_t cksum = bp->blk_cksum; + + /* + * Validate the checksummed log block. + * + * Sequence numbers should be... sequential. The checksum + * verifier for the next block should be bp's checksum plus 1. + * + * Also check the log chain linkage and size used. + */ + cksum.zc_word[ZIL_ZC_SEQ]++; + + if (BP_GET_CHECKSUM(bp) == ZIO_CHECKSUM_ZILOG2) { + zil_chain_t *zilc = abuf->b_data; + char *lr = (char *)(zilc + 1); + uint64_t len = zilc->zc_nused - sizeof (zil_chain_t); + + if (bcmp(&cksum, &zilc->zc_next_blk.blk_cksum, + sizeof (cksum)) || BP_IS_HOLE(&zilc->zc_next_blk)) { + error = SET_ERROR(ECKSUM); + } else { + ASSERT3U(len, <=, SPA_OLD_MAXBLOCKSIZE); + bcopy(lr, dst, len); + *end = (char *)dst + len; + *nbp = zilc->zc_next_blk; + } + } else { + char *lr = abuf->b_data; + uint64_t size = BP_GET_LSIZE(bp); + zil_chain_t *zilc = (zil_chain_t *)(lr + size) - 1; + + if (bcmp(&cksum, &zilc->zc_next_blk.blk_cksum, + sizeof (cksum)) || BP_IS_HOLE(&zilc->zc_next_blk) || + (zilc->zc_nused > (size - sizeof (*zilc)))) { + error = SET_ERROR(ECKSUM); + } else { + ASSERT3U(zilc->zc_nused, <=, + SPA_OLD_MAXBLOCKSIZE); + bcopy(lr, dst, zilc->zc_nused); + *end = (char *)dst + zilc->zc_nused; + *nbp = zilc->zc_next_blk; + } + } + + VERIFY(arc_buf_remove_ref(abuf, &abuf)); + } + + return (error); +} + +/* + * Read a TX_WRITE log data block. + */ +static int +zil_read_log_data(zilog_t *zilog, const lr_write_t *lr, void *wbuf) +{ + enum zio_flag zio_flags = ZIO_FLAG_CANFAIL; + const blkptr_t *bp = &lr->lr_blkptr; + arc_flags_t aflags = ARC_FLAG_WAIT; + arc_buf_t *abuf = NULL; + zbookmark_phys_t zb; + int error; + + if (BP_IS_HOLE(bp)) { + if (wbuf != NULL) + bzero(wbuf, MAX(BP_GET_LSIZE(bp), lr->lr_length)); + return (0); + } + + if (zilog->zl_header->zh_claim_txg == 0) + zio_flags |= ZIO_FLAG_SPECULATIVE | ZIO_FLAG_SCRUB; + + SET_BOOKMARK(&zb, dmu_objset_id(zilog->zl_os), lr->lr_foid, + ZB_ZIL_LEVEL, lr->lr_offset / BP_GET_LSIZE(bp)); + + error = arc_read(NULL, zilog->zl_spa, bp, arc_getbuf_func, &abuf, + ZIO_PRIORITY_SYNC_READ, zio_flags, &aflags, &zb); + + if (error == 0) { + if (wbuf != NULL) + bcopy(abuf->b_data, wbuf, arc_buf_size(abuf)); + (void) arc_buf_remove_ref(abuf, &abuf); + } + + return (error); +} + +/* + * Parse the intent log, and call parse_func for each valid record within. + */ +int +zil_parse(zilog_t *zilog, zil_parse_blk_func_t *parse_blk_func, + zil_parse_lr_func_t *parse_lr_func, void *arg, uint64_t txg) +{ + const zil_header_t *zh = zilog->zl_header; + boolean_t claimed = !!zh->zh_claim_txg; + uint64_t claim_blk_seq = claimed ? zh->zh_claim_blk_seq : UINT64_MAX; + uint64_t claim_lr_seq = claimed ? zh->zh_claim_lr_seq : UINT64_MAX; + uint64_t max_blk_seq = 0; + uint64_t max_lr_seq = 0; + uint64_t blk_count = 0; + uint64_t lr_count = 0; + blkptr_t blk, next_blk; + char *lrbuf, *lrp; + int error = 0; + + bzero(&next_blk, sizeof (blkptr_t)); + + /* + * Old logs didn't record the maximum zh_claim_lr_seq. + */ + if (!(zh->zh_flags & ZIL_CLAIM_LR_SEQ_VALID)) + claim_lr_seq = UINT64_MAX; + + /* + * Starting at the block pointed to by zh_log we read the log chain. + * For each block in the chain we strongly check that block to + * ensure its validity. We stop when an invalid block is found. + * For each block pointer in the chain we call parse_blk_func(). + * For each record in each valid block we call parse_lr_func(). + * If the log has been claimed, stop if we encounter a sequence + * number greater than the highest claimed sequence number. + */ + lrbuf = zio_buf_alloc(SPA_OLD_MAXBLOCKSIZE); + zil_bp_tree_init(zilog); + + for (blk = zh->zh_log; !BP_IS_HOLE(&blk); blk = next_blk) { + uint64_t blk_seq = blk.blk_cksum.zc_word[ZIL_ZC_SEQ]; + int reclen; + char *end = NULL; + + if (blk_seq > claim_blk_seq) + break; + if ((error = parse_blk_func(zilog, &blk, arg, txg)) != 0) + break; + ASSERT3U(max_blk_seq, <, blk_seq); + max_blk_seq = blk_seq; + blk_count++; + + if (max_lr_seq == claim_lr_seq && max_blk_seq == claim_blk_seq) + break; + + error = zil_read_log_block(zilog, &blk, &next_blk, lrbuf, &end); + if (error != 0) + break; + + for (lrp = lrbuf; lrp < end; lrp += reclen) { + lr_t *lr = (lr_t *)lrp; + reclen = lr->lrc_reclen; + ASSERT3U(reclen, >=, sizeof (lr_t)); + if (lr->lrc_seq > claim_lr_seq) + goto done; + if ((error = parse_lr_func(zilog, lr, arg, txg)) != 0) + goto done; + ASSERT3U(max_lr_seq, <, lr->lrc_seq); + max_lr_seq = lr->lrc_seq; + lr_count++; + } + } +done: + zilog->zl_parse_error = error; + zilog->zl_parse_blk_seq = max_blk_seq; + zilog->zl_parse_lr_seq = max_lr_seq; + zilog->zl_parse_blk_count = blk_count; + zilog->zl_parse_lr_count = lr_count; + + ASSERT(!claimed || !(zh->zh_flags & ZIL_CLAIM_LR_SEQ_VALID) || + (max_blk_seq == claim_blk_seq && max_lr_seq == claim_lr_seq)); + + zil_bp_tree_fini(zilog); + zio_buf_free(lrbuf, SPA_OLD_MAXBLOCKSIZE); + + return (error); +} + +static int +zil_claim_log_block(zilog_t *zilog, blkptr_t *bp, void *tx, uint64_t first_txg) +{ + /* + * Claim log block if not already committed and not already claimed. + * If tx == NULL, just verify that the block is claimable. + */ + if (BP_IS_HOLE(bp) || bp->blk_birth < first_txg || + zil_bp_tree_add(zilog, bp) != 0) + return (0); + + return (zio_wait(zio_claim(NULL, zilog->zl_spa, + tx == NULL ? 0 : first_txg, bp, spa_claim_notify, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE | ZIO_FLAG_SCRUB))); +} + +static int +zil_claim_log_record(zilog_t *zilog, lr_t *lrc, void *tx, uint64_t first_txg) +{ + lr_write_t *lr = (lr_write_t *)lrc; + int error; + + if (lrc->lrc_txtype != TX_WRITE) + return (0); + + /* + * If the block is not readable, don't claim it. This can happen + * in normal operation when a log block is written to disk before + * some of the dmu_sync() blocks it points to. In this case, the + * transaction cannot have been committed to anyone (we would have + * waited for all writes to be stable first), so it is semantically + * correct to declare this the end of the log. + */ + if (lr->lr_blkptr.blk_birth >= first_txg && + (error = zil_read_log_data(zilog, lr, NULL)) != 0) + return (error); + return (zil_claim_log_block(zilog, &lr->lr_blkptr, tx, first_txg)); +} + +/* ARGSUSED */ +static int +zil_free_log_block(zilog_t *zilog, blkptr_t *bp, void *tx, uint64_t claim_txg) +{ + zio_free_zil(zilog->zl_spa, dmu_tx_get_txg(tx), bp); + + return (0); +} + +static int +zil_free_log_record(zilog_t *zilog, lr_t *lrc, void *tx, uint64_t claim_txg) +{ + lr_write_t *lr = (lr_write_t *)lrc; + blkptr_t *bp = &lr->lr_blkptr; + + /* + * If we previously claimed it, we need to free it. + */ + if (claim_txg != 0 && lrc->lrc_txtype == TX_WRITE && + bp->blk_birth >= claim_txg && zil_bp_tree_add(zilog, bp) == 0 && + !BP_IS_HOLE(bp)) + zio_free(zilog->zl_spa, dmu_tx_get_txg(tx), bp); + + return (0); +} + +static lwb_t * +zil_alloc_lwb(zilog_t *zilog, blkptr_t *bp, uint64_t txg, boolean_t fastwrite) +{ + lwb_t *lwb; + + lwb = kmem_cache_alloc(zil_lwb_cache, KM_SLEEP); + lwb->lwb_zilog = zilog; + lwb->lwb_blk = *bp; + lwb->lwb_fastwrite = fastwrite; + lwb->lwb_buf = zio_buf_alloc(BP_GET_LSIZE(bp)); + lwb->lwb_max_txg = txg; + lwb->lwb_zio = NULL; + lwb->lwb_tx = NULL; + if (BP_GET_CHECKSUM(bp) == ZIO_CHECKSUM_ZILOG2) { + lwb->lwb_nused = sizeof (zil_chain_t); + lwb->lwb_sz = BP_GET_LSIZE(bp); + } else { + lwb->lwb_nused = 0; + lwb->lwb_sz = BP_GET_LSIZE(bp) - sizeof (zil_chain_t); + } + + mutex_enter(&zilog->zl_lock); + list_insert_tail(&zilog->zl_lwb_list, lwb); + mutex_exit(&zilog->zl_lock); + + return (lwb); +} + +/* + * Called when we create in-memory log transactions so that we know + * to cleanup the itxs at the end of spa_sync(). + */ +void +zilog_dirty(zilog_t *zilog, uint64_t txg) +{ + dsl_pool_t *dp = zilog->zl_dmu_pool; + dsl_dataset_t *ds = dmu_objset_ds(zilog->zl_os); + + if (ds->ds_is_snapshot) + panic("dirtying snapshot!"); + + if (txg_list_add(&dp->dp_dirty_zilogs, zilog, txg)) { + /* up the hold count until we can be written out */ + dmu_buf_add_ref(ds->ds_dbuf, zilog); + } +} + +boolean_t +zilog_is_dirty(zilog_t *zilog) +{ + dsl_pool_t *dp = zilog->zl_dmu_pool; + int t; + + for (t = 0; t < TXG_SIZE; t++) { + if (txg_list_member(&dp->dp_dirty_zilogs, zilog, t)) + return (B_TRUE); + } + return (B_FALSE); +} + +/* + * Create an on-disk intent log. + */ +static lwb_t * +zil_create(zilog_t *zilog) +{ + const zil_header_t *zh = zilog->zl_header; + lwb_t *lwb = NULL; + uint64_t txg = 0; + dmu_tx_t *tx = NULL; + blkptr_t blk; + int error = 0; + boolean_t fastwrite = FALSE; + + /* + * Wait for any previous destroy to complete. + */ + txg_wait_synced(zilog->zl_dmu_pool, zilog->zl_destroy_txg); + + ASSERT(zh->zh_claim_txg == 0); + ASSERT(zh->zh_replay_seq == 0); + + blk = zh->zh_log; + + /* + * Allocate an initial log block if: + * - there isn't one already + * - the existing block is the wrong endianess + */ + if (BP_IS_HOLE(&blk) || BP_SHOULD_BYTESWAP(&blk)) { + tx = dmu_tx_create(zilog->zl_os); + VERIFY(dmu_tx_assign(tx, TXG_WAIT) == 0); + dsl_dataset_dirty(dmu_objset_ds(zilog->zl_os), tx); + txg = dmu_tx_get_txg(tx); + + if (!BP_IS_HOLE(&blk)) { + zio_free_zil(zilog->zl_spa, txg, &blk); + BP_ZERO(&blk); + } + + error = zio_alloc_zil(zilog->zl_spa, txg, &blk, + ZIL_MIN_BLKSZ, B_TRUE); + fastwrite = TRUE; + + if (error == 0) + zil_init_log_chain(zilog, &blk); + } + + /* + * Allocate a log write buffer (lwb) for the first log block. + */ + if (error == 0) + lwb = zil_alloc_lwb(zilog, &blk, txg, fastwrite); + + /* + * If we just allocated the first log block, commit our transaction + * and wait for zil_sync() to stuff the block poiner into zh_log. + * (zh is part of the MOS, so we cannot modify it in open context.) + */ + if (tx != NULL) { + dmu_tx_commit(tx); + txg_wait_synced(zilog->zl_dmu_pool, txg); + } + + ASSERT(bcmp(&blk, &zh->zh_log, sizeof (blk)) == 0); + + return (lwb); +} + +/* + * In one tx, free all log blocks and clear the log header. + * If keep_first is set, then we're replaying a log with no content. + * We want to keep the first block, however, so that the first + * synchronous transaction doesn't require a txg_wait_synced() + * in zil_create(). We don't need to txg_wait_synced() here either + * when keep_first is set, because both zil_create() and zil_destroy() + * will wait for any in-progress destroys to complete. + */ +void +zil_destroy(zilog_t *zilog, boolean_t keep_first) +{ + const zil_header_t *zh = zilog->zl_header; + lwb_t *lwb; + dmu_tx_t *tx; + uint64_t txg; + + /* + * Wait for any previous destroy to complete. + */ + txg_wait_synced(zilog->zl_dmu_pool, zilog->zl_destroy_txg); + + zilog->zl_old_header = *zh; /* debugging aid */ + + if (BP_IS_HOLE(&zh->zh_log)) + return; + + tx = dmu_tx_create(zilog->zl_os); + VERIFY(dmu_tx_assign(tx, TXG_WAIT) == 0); + dsl_dataset_dirty(dmu_objset_ds(zilog->zl_os), tx); + txg = dmu_tx_get_txg(tx); + + mutex_enter(&zilog->zl_lock); + + ASSERT3U(zilog->zl_destroy_txg, <, txg); + zilog->zl_destroy_txg = txg; + zilog->zl_keep_first = keep_first; + + if (!list_is_empty(&zilog->zl_lwb_list)) { + ASSERT(zh->zh_claim_txg == 0); + VERIFY(!keep_first); + while ((lwb = list_head(&zilog->zl_lwb_list)) != NULL) { + ASSERT(lwb->lwb_zio == NULL); + if (lwb->lwb_fastwrite) + metaslab_fastwrite_unmark(zilog->zl_spa, + &lwb->lwb_blk); + list_remove(&zilog->zl_lwb_list, lwb); + if (lwb->lwb_buf != NULL) + zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); + zio_free_zil(zilog->zl_spa, txg, &lwb->lwb_blk); + kmem_cache_free(zil_lwb_cache, lwb); + } + } else if (!keep_first) { + zil_destroy_sync(zilog, tx); + } + mutex_exit(&zilog->zl_lock); + + dmu_tx_commit(tx); +} + +void +zil_destroy_sync(zilog_t *zilog, dmu_tx_t *tx) +{ + ASSERT(list_is_empty(&zilog->zl_lwb_list)); + (void) zil_parse(zilog, zil_free_log_block, + zil_free_log_record, tx, zilog->zl_header->zh_claim_txg); +} + +int +zil_claim(dsl_pool_t *dp, dsl_dataset_t *ds, void *txarg) +{ + dmu_tx_t *tx = txarg; + uint64_t first_txg = dmu_tx_get_txg(tx); + zilog_t *zilog; + zil_header_t *zh; + objset_t *os; + int error; + + error = dmu_objset_own_obj(dp, ds->ds_object, + DMU_OST_ANY, B_FALSE, FTAG, &os); + if (error != 0) { + /* + * EBUSY indicates that the objset is inconsistent, in which + * case it can not have a ZIL. + */ + if (error != EBUSY) { + cmn_err(CE_WARN, "can't open objset for %llu, error %u", + (unsigned long long)ds->ds_object, error); + } + + return (0); + } + + zilog = dmu_objset_zil(os); + zh = zil_header_in_syncing_context(zilog); + + if (spa_get_log_state(zilog->zl_spa) == SPA_LOG_CLEAR) { + if (!BP_IS_HOLE(&zh->zh_log)) + zio_free_zil(zilog->zl_spa, first_txg, &zh->zh_log); + BP_ZERO(&zh->zh_log); + dsl_dataset_dirty(dmu_objset_ds(os), tx); + dmu_objset_disown(os, FTAG); + return (0); + } + + /* + * Claim all log blocks if we haven't already done so, and remember + * the highest claimed sequence number. This ensures that if we can + * read only part of the log now (e.g. due to a missing device), + * but we can read the entire log later, we will not try to replay + * or destroy beyond the last block we successfully claimed. + */ + ASSERT3U(zh->zh_claim_txg, <=, first_txg); + if (zh->zh_claim_txg == 0 && !BP_IS_HOLE(&zh->zh_log)) { + (void) zil_parse(zilog, zil_claim_log_block, + zil_claim_log_record, tx, first_txg); + zh->zh_claim_txg = first_txg; + zh->zh_claim_blk_seq = zilog->zl_parse_blk_seq; + zh->zh_claim_lr_seq = zilog->zl_parse_lr_seq; + if (zilog->zl_parse_lr_count || zilog->zl_parse_blk_count > 1) + zh->zh_flags |= ZIL_REPLAY_NEEDED; + zh->zh_flags |= ZIL_CLAIM_LR_SEQ_VALID; + dsl_dataset_dirty(dmu_objset_ds(os), tx); + } + + ASSERT3U(first_txg, ==, (spa_last_synced_txg(zilog->zl_spa) + 1)); + dmu_objset_disown(os, FTAG); + return (0); +} + +/* + * Check the log by walking the log chain. + * Checksum errors are ok as they indicate the end of the chain. + * Any other error (no device or read failure) returns an error. + */ +/* ARGSUSED */ +int +zil_check_log_chain(dsl_pool_t *dp, dsl_dataset_t *ds, void *tx) +{ + zilog_t *zilog; + objset_t *os; + blkptr_t *bp; + int error; + + ASSERT(tx == NULL); + + error = dmu_objset_from_ds(ds, &os); + if (error != 0) { + cmn_err(CE_WARN, "can't open objset %llu, error %d", + (unsigned long long)ds->ds_object, error); + return (0); + } + + zilog = dmu_objset_zil(os); + bp = (blkptr_t *)&zilog->zl_header->zh_log; + + /* + * Check the first block and determine if it's on a log device + * which may have been removed or faulted prior to loading this + * pool. If so, there's no point in checking the rest of the log + * as its content should have already been synced to the pool. + */ + if (!BP_IS_HOLE(bp)) { + vdev_t *vd; + boolean_t valid = B_TRUE; + + spa_config_enter(os->os_spa, SCL_STATE, FTAG, RW_READER); + vd = vdev_lookup_top(os->os_spa, DVA_GET_VDEV(&bp->blk_dva[0])); + if (vd->vdev_islog && vdev_is_dead(vd)) + valid = vdev_log_state_valid(vd); + spa_config_exit(os->os_spa, SCL_STATE, FTAG); + + if (!valid) + return (0); + } + + /* + * Because tx == NULL, zil_claim_log_block() will not actually claim + * any blocks, but just determine whether it is possible to do so. + * In addition to checking the log chain, zil_claim_log_block() + * will invoke zio_claim() with a done func of spa_claim_notify(), + * which will update spa_max_claim_txg. See spa_load() for details. + */ + error = zil_parse(zilog, zil_claim_log_block, zil_claim_log_record, tx, + zilog->zl_header->zh_claim_txg ? -1ULL : spa_first_txg(os->os_spa)); + + return ((error == ECKSUM || error == ENOENT) ? 0 : error); +} + +static int +zil_vdev_compare(const void *x1, const void *x2) +{ + const uint64_t v1 = ((zil_vdev_node_t *)x1)->zv_vdev; + const uint64_t v2 = ((zil_vdev_node_t *)x2)->zv_vdev; + + if (v1 < v2) + return (-1); + if (v1 > v2) + return (1); + + return (0); +} + +void +zil_add_block(zilog_t *zilog, const blkptr_t *bp) +{ + avl_tree_t *t = &zilog->zl_vdev_tree; + avl_index_t where; + zil_vdev_node_t *zv, zvsearch; + int ndvas = BP_GET_NDVAS(bp); + int i; + + if (zfs_nocacheflush) + return; + + ASSERT(zilog->zl_writer); + + /* + * Even though we're zl_writer, we still need a lock because the + * zl_get_data() callbacks may have dmu_sync() done callbacks + * that will run concurrently. + */ + mutex_enter(&zilog->zl_vdev_lock); + for (i = 0; i < ndvas; i++) { + zvsearch.zv_vdev = DVA_GET_VDEV(&bp->blk_dva[i]); + if (avl_find(t, &zvsearch, &where) == NULL) { + zv = kmem_alloc(sizeof (*zv), KM_SLEEP); + zv->zv_vdev = zvsearch.zv_vdev; + avl_insert(t, zv, where); + } + } + mutex_exit(&zilog->zl_vdev_lock); +} + +static void +zil_flush_vdevs(zilog_t *zilog) +{ + spa_t *spa = zilog->zl_spa; + avl_tree_t *t = &zilog->zl_vdev_tree; + void *cookie = NULL; + zil_vdev_node_t *zv; + zio_t *zio; + + ASSERT(zilog->zl_writer); + + /* + * We don't need zl_vdev_lock here because we're the zl_writer, + * and all zl_get_data() callbacks are done. + */ + if (avl_numnodes(t) == 0) + return; + + spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); + + zio = zio_root(spa, NULL, NULL, ZIO_FLAG_CANFAIL); + + while ((zv = avl_destroy_nodes(t, &cookie)) != NULL) { + vdev_t *vd = vdev_lookup_top(spa, zv->zv_vdev); + if (vd != NULL) + zio_flush(zio, vd); + kmem_free(zv, sizeof (*zv)); + } + + /* + * Wait for all the flushes to complete. Not all devices actually + * support the DKIOCFLUSHWRITECACHE ioctl, so it's OK if it fails. + */ + (void) zio_wait(zio); + + spa_config_exit(spa, SCL_STATE, FTAG); +} + +/* + * Function called when a log block write completes + */ +static void +zil_lwb_write_done(zio_t *zio) +{ + lwb_t *lwb = zio->io_private; + zilog_t *zilog = lwb->lwb_zilog; + dmu_tx_t *tx = lwb->lwb_tx; + + ASSERT(BP_GET_COMPRESS(zio->io_bp) == ZIO_COMPRESS_OFF); + ASSERT(BP_GET_TYPE(zio->io_bp) == DMU_OT_INTENT_LOG); + ASSERT(BP_GET_LEVEL(zio->io_bp) == 0); + ASSERT(BP_GET_BYTEORDER(zio->io_bp) == ZFS_HOST_BYTEORDER); + ASSERT(!BP_IS_GANG(zio->io_bp)); + ASSERT(!BP_IS_HOLE(zio->io_bp)); + ASSERT(BP_GET_FILL(zio->io_bp) == 0); + + /* + * Ensure the lwb buffer pointer is cleared before releasing + * the txg. If we have had an allocation failure and + * the txg is waiting to sync then we want want zil_sync() + * to remove the lwb so that it's not picked up as the next new + * one in zil_commit_writer(). zil_sync() will only remove + * the lwb if lwb_buf is null. + */ + zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); + mutex_enter(&zilog->zl_lock); + lwb->lwb_zio = NULL; + lwb->lwb_fastwrite = FALSE; + lwb->lwb_buf = NULL; + lwb->lwb_tx = NULL; + mutex_exit(&zilog->zl_lock); + + /* + * Now that we've written this log block, we have a stable pointer + * to the next block in the chain, so it's OK to let the txg in + * which we allocated the next block sync. + */ + dmu_tx_commit(tx); +} + +/* + * Initialize the io for a log block. + */ +static void +zil_lwb_write_init(zilog_t *zilog, lwb_t *lwb) +{ + zbookmark_phys_t zb; + + SET_BOOKMARK(&zb, lwb->lwb_blk.blk_cksum.zc_word[ZIL_ZC_OBJSET], + ZB_ZIL_OBJECT, ZB_ZIL_LEVEL, + lwb->lwb_blk.blk_cksum.zc_word[ZIL_ZC_SEQ]); + + if (zilog->zl_root_zio == NULL) { + zilog->zl_root_zio = zio_root(zilog->zl_spa, NULL, NULL, + ZIO_FLAG_CANFAIL); + } + + /* Lock so zil_sync() doesn't fastwrite_unmark after zio is created */ + mutex_enter(&zilog->zl_lock); + if (lwb->lwb_zio == NULL) { + if (!lwb->lwb_fastwrite) { + metaslab_fastwrite_mark(zilog->zl_spa, &lwb->lwb_blk); + lwb->lwb_fastwrite = 1; + } + lwb->lwb_zio = zio_rewrite(zilog->zl_root_zio, zilog->zl_spa, + 0, &lwb->lwb_blk, lwb->lwb_buf, BP_GET_LSIZE(&lwb->lwb_blk), + zil_lwb_write_done, lwb, ZIO_PRIORITY_SYNC_WRITE, + ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE | + ZIO_FLAG_FASTWRITE, &zb); + } + mutex_exit(&zilog->zl_lock); +} + +/* + * Define a limited set of intent log block sizes. + * + * These must be a multiple of 4KB. Note only the amount used (again + * aligned to 4KB) actually gets written. However, we can't always just + * allocate SPA_OLD_MAXBLOCKSIZE as the slog space could be exhausted. + */ +uint64_t zil_block_buckets[] = { + 4096, /* non TX_WRITE */ + 8192+4096, /* data base */ + 32*1024 + 4096, /* NFS writes */ + UINT64_MAX +}; + +/* + * Use the slog as long as the current commit size is less than the + * limit or the total list size is less than 2X the limit. Limit + * checking is disabled by setting zil_slog_limit to UINT64_MAX. + */ +unsigned long zil_slog_limit = 1024 * 1024; +#define USE_SLOG(zilog) (((zilog)->zl_cur_used < zil_slog_limit) || \ + ((zilog)->zl_itx_list_sz < (zil_slog_limit << 1))) + +/* + * Start a log block write and advance to the next log block. + * Calls are serialized. + */ +static lwb_t * +zil_lwb_write_start(zilog_t *zilog, lwb_t *lwb) +{ + lwb_t *nlwb = NULL; + zil_chain_t *zilc; + spa_t *spa = zilog->zl_spa; + blkptr_t *bp; + dmu_tx_t *tx; + uint64_t txg; + uint64_t zil_blksz, wsz; + int i, error; + boolean_t use_slog; + + if (BP_GET_CHECKSUM(&lwb->lwb_blk) == ZIO_CHECKSUM_ZILOG2) { + zilc = (zil_chain_t *)lwb->lwb_buf; + bp = &zilc->zc_next_blk; + } else { + zilc = (zil_chain_t *)(lwb->lwb_buf + lwb->lwb_sz); + bp = &zilc->zc_next_blk; + } + + ASSERT(lwb->lwb_nused <= lwb->lwb_sz); + + /* + * Allocate the next block and save its address in this block + * before writing it in order to establish the log chain. + * Note that if the allocation of nlwb synced before we wrote + * the block that points at it (lwb), we'd leak it if we crashed. + * Therefore, we don't do dmu_tx_commit() until zil_lwb_write_done(). + * We dirty the dataset to ensure that zil_sync() will be called + * to clean up in the event of allocation failure or I/O failure. + */ + tx = dmu_tx_create(zilog->zl_os); + VERIFY(dmu_tx_assign(tx, TXG_WAIT) == 0); + dsl_dataset_dirty(dmu_objset_ds(zilog->zl_os), tx); + txg = dmu_tx_get_txg(tx); + + lwb->lwb_tx = tx; + + /* + * Log blocks are pre-allocated. Here we select the size of the next + * block, based on size used in the last block. + * - first find the smallest bucket that will fit the block from a + * limited set of block sizes. This is because it's faster to write + * blocks allocated from the same metaslab as they are adjacent or + * close. + * - next find the maximum from the new suggested size and an array of + * previous sizes. This lessens a picket fence effect of wrongly + * guesssing the size if we have a stream of say 2k, 64k, 2k, 64k + * requests. + * + * Note we only write what is used, but we can't just allocate + * the maximum block size because we can exhaust the available + * pool log space. + */ + zil_blksz = zilog->zl_cur_used + sizeof (zil_chain_t); + for (i = 0; zil_blksz > zil_block_buckets[i]; i++) + continue; + zil_blksz = zil_block_buckets[i]; + if (zil_blksz == UINT64_MAX) + zil_blksz = SPA_OLD_MAXBLOCKSIZE; + zilog->zl_prev_blks[zilog->zl_prev_rotor] = zil_blksz; + for (i = 0; i < ZIL_PREV_BLKS; i++) + zil_blksz = MAX(zil_blksz, zilog->zl_prev_blks[i]); + zilog->zl_prev_rotor = (zilog->zl_prev_rotor + 1) & (ZIL_PREV_BLKS - 1); + + BP_ZERO(bp); + use_slog = USE_SLOG(zilog); + error = zio_alloc_zil(spa, txg, bp, zil_blksz, + USE_SLOG(zilog)); + if (use_slog) { + ZIL_STAT_BUMP(zil_itx_metaslab_slog_count); + ZIL_STAT_INCR(zil_itx_metaslab_slog_bytes, lwb->lwb_nused); + } else { + ZIL_STAT_BUMP(zil_itx_metaslab_normal_count); + ZIL_STAT_INCR(zil_itx_metaslab_normal_bytes, lwb->lwb_nused); + } + if (error == 0) { + ASSERT3U(bp->blk_birth, ==, txg); + bp->blk_cksum = lwb->lwb_blk.blk_cksum; + bp->blk_cksum.zc_word[ZIL_ZC_SEQ]++; + + /* + * Allocate a new log write buffer (lwb). + */ + nlwb = zil_alloc_lwb(zilog, bp, txg, TRUE); + + /* Record the block for later vdev flushing */ + zil_add_block(zilog, &lwb->lwb_blk); + } + + if (BP_GET_CHECKSUM(&lwb->lwb_blk) == ZIO_CHECKSUM_ZILOG2) { + /* For Slim ZIL only write what is used. */ + wsz = P2ROUNDUP_TYPED(lwb->lwb_nused, ZIL_MIN_BLKSZ, uint64_t); + ASSERT3U(wsz, <=, lwb->lwb_sz); + zio_shrink(lwb->lwb_zio, wsz); + + } else { + wsz = lwb->lwb_sz; + } + + zilc->zc_pad = 0; + zilc->zc_nused = lwb->lwb_nused; + zilc->zc_eck.zec_cksum = lwb->lwb_blk.blk_cksum; + + /* + * clear unused data for security + */ + bzero(lwb->lwb_buf + lwb->lwb_nused, wsz - lwb->lwb_nused); + + zio_nowait(lwb->lwb_zio); /* Kick off the write for the old log block */ + + /* + * If there was an allocation failure then nlwb will be null which + * forces a txg_wait_synced(). + */ + return (nlwb); +} + +static lwb_t * +zil_lwb_commit(zilog_t *zilog, itx_t *itx, lwb_t *lwb) +{ + lr_t *lrc = &itx->itx_lr; /* common log record */ + lr_write_t *lrw = (lr_write_t *)lrc; + char *lr_buf; + uint64_t txg = lrc->lrc_txg; + uint64_t reclen = lrc->lrc_reclen; + uint64_t dlen = 0; + + if (lwb == NULL) + return (NULL); + + ASSERT(lwb->lwb_buf != NULL); + ASSERT(zilog_is_dirty(zilog) || + spa_freeze_txg(zilog->zl_spa) != UINT64_MAX); + + if (lrc->lrc_txtype == TX_WRITE && itx->itx_wr_state == WR_NEED_COPY) + dlen = P2ROUNDUP_TYPED( + lrw->lr_length, sizeof (uint64_t), uint64_t); + + zilog->zl_cur_used += (reclen + dlen); + + zil_lwb_write_init(zilog, lwb); + + /* + * If this record won't fit in the current log block, start a new one. + */ + if (lwb->lwb_nused + reclen + dlen > lwb->lwb_sz) { + lwb = zil_lwb_write_start(zilog, lwb); + if (lwb == NULL) + return (NULL); + zil_lwb_write_init(zilog, lwb); + ASSERT(LWB_EMPTY(lwb)); + if (lwb->lwb_nused + reclen + dlen > lwb->lwb_sz) { + txg_wait_synced(zilog->zl_dmu_pool, txg); + return (lwb); + } + } + + lr_buf = lwb->lwb_buf + lwb->lwb_nused; + bcopy(lrc, lr_buf, reclen); + lrc = (lr_t *)lr_buf; + lrw = (lr_write_t *)lrc; + + ZIL_STAT_BUMP(zil_itx_count); + + /* + * If it's a write, fetch the data or get its blkptr as appropriate. + */ + if (lrc->lrc_txtype == TX_WRITE) { + if (txg > spa_freeze_txg(zilog->zl_spa)) + txg_wait_synced(zilog->zl_dmu_pool, txg); + if (itx->itx_wr_state == WR_COPIED) { + ZIL_STAT_BUMP(zil_itx_copied_count); + ZIL_STAT_INCR(zil_itx_copied_bytes, lrw->lr_length); + } else { + char *dbuf; + int error; + + if (dlen) { + ASSERT(itx->itx_wr_state == WR_NEED_COPY); + dbuf = lr_buf + reclen; + lrw->lr_common.lrc_reclen += dlen; + ZIL_STAT_BUMP(zil_itx_needcopy_count); + ZIL_STAT_INCR(zil_itx_needcopy_bytes, + lrw->lr_length); + } else { + ASSERT(itx->itx_wr_state == WR_INDIRECT); + dbuf = NULL; + ZIL_STAT_BUMP(zil_itx_indirect_count); + ZIL_STAT_INCR(zil_itx_indirect_bytes, + lrw->lr_length); + } + error = zilog->zl_get_data( + itx->itx_private, lrw, dbuf, lwb->lwb_zio); + if (error == EIO) { + txg_wait_synced(zilog->zl_dmu_pool, txg); + return (lwb); + } + if (error != 0) { + ASSERT(error == ENOENT || error == EEXIST || + error == EALREADY); + return (lwb); + } + } + } + + /* + * We're actually making an entry, so update lrc_seq to be the + * log record sequence number. Note that this is generally not + * equal to the itx sequence number because not all transactions + * are synchronous, and sometimes spa_sync() gets there first. + */ + lrc->lrc_seq = ++zilog->zl_lr_seq; /* we are single threaded */ + lwb->lwb_nused += reclen + dlen; + lwb->lwb_max_txg = MAX(lwb->lwb_max_txg, txg); + ASSERT3U(lwb->lwb_nused, <=, lwb->lwb_sz); + ASSERT0(P2PHASE(lwb->lwb_nused, sizeof (uint64_t))); + + return (lwb); +} + +itx_t * +zil_itx_create(uint64_t txtype, size_t lrsize) +{ + itx_t *itx; + + lrsize = P2ROUNDUP_TYPED(lrsize, sizeof (uint64_t), size_t); + + itx = zio_data_buf_alloc(offsetof(itx_t, itx_lr) + lrsize); + itx->itx_lr.lrc_txtype = txtype; + itx->itx_lr.lrc_reclen = lrsize; + itx->itx_sod = lrsize; /* if write & WR_NEED_COPY will be increased */ + itx->itx_lr.lrc_seq = 0; /* defensive */ + itx->itx_sync = B_TRUE; /* default is synchronous */ + itx->itx_callback = NULL; + itx->itx_callback_data = NULL; + + return (itx); +} + +void +zil_itx_destroy(itx_t *itx) +{ + zio_data_buf_free(itx, offsetof(itx_t, itx_lr)+itx->itx_lr.lrc_reclen); +} + +/* + * Free up the sync and async itxs. The itxs_t has already been detached + * so no locks are needed. + */ +static void +zil_itxg_clean(itxs_t *itxs) +{ + itx_t *itx; + list_t *list; + avl_tree_t *t; + void *cookie; + itx_async_node_t *ian; + + list = &itxs->i_sync_list; + while ((itx = list_head(list)) != NULL) { + if (itx->itx_callback != NULL) + itx->itx_callback(itx->itx_callback_data); + list_remove(list, itx); + zil_itx_destroy(itx); + } + + cookie = NULL; + t = &itxs->i_async_tree; + while ((ian = avl_destroy_nodes(t, &cookie)) != NULL) { + list = &ian->ia_list; + while ((itx = list_head(list)) != NULL) { + if (itx->itx_callback != NULL) + itx->itx_callback(itx->itx_callback_data); + list_remove(list, itx); + zil_itx_destroy(itx); + } + list_destroy(list); + kmem_free(ian, sizeof (itx_async_node_t)); + } + avl_destroy(t); + + kmem_free(itxs, sizeof (itxs_t)); +} + +static int +zil_aitx_compare(const void *x1, const void *x2) +{ + const uint64_t o1 = ((itx_async_node_t *)x1)->ia_foid; + const uint64_t o2 = ((itx_async_node_t *)x2)->ia_foid; + + if (o1 < o2) + return (-1); + if (o1 > o2) + return (1); + + return (0); +} + +/* + * Remove all async itx with the given oid. + */ +static void +zil_remove_async(zilog_t *zilog, uint64_t oid) +{ + uint64_t otxg, txg; + itx_async_node_t *ian; + avl_tree_t *t; + avl_index_t where; + list_t clean_list; + itx_t *itx; + + ASSERT(oid != 0); + list_create(&clean_list, sizeof (itx_t), offsetof(itx_t, itx_node)); + + if (spa_freeze_txg(zilog->zl_spa) != UINT64_MAX) /* ziltest support */ + otxg = ZILTEST_TXG; + else + otxg = spa_last_synced_txg(zilog->zl_spa) + 1; + + for (txg = otxg; txg < (otxg + TXG_CONCURRENT_STATES); txg++) { + itxg_t *itxg = &zilog->zl_itxg[txg & TXG_MASK]; + + mutex_enter(&itxg->itxg_lock); + if (itxg->itxg_txg != txg) { + mutex_exit(&itxg->itxg_lock); + continue; + } + + /* + * Locate the object node and append its list. + */ + t = &itxg->itxg_itxs->i_async_tree; + ian = avl_find(t, &oid, &where); + if (ian != NULL) + list_move_tail(&clean_list, &ian->ia_list); + mutex_exit(&itxg->itxg_lock); + } + while ((itx = list_head(&clean_list)) != NULL) { + if (itx->itx_callback != NULL) + itx->itx_callback(itx->itx_callback_data); + list_remove(&clean_list, itx); + zil_itx_destroy(itx); + } + list_destroy(&clean_list); +} + +void +zil_itx_assign(zilog_t *zilog, itx_t *itx, dmu_tx_t *tx) +{ + uint64_t txg; + itxg_t *itxg; + itxs_t *itxs, *clean = NULL; + + /* + * Object ids can be re-instantiated in the next txg so + * remove any async transactions to avoid future leaks. + * This can happen if a fsync occurs on the re-instantiated + * object for a WR_INDIRECT or WR_NEED_COPY write, which gets + * the new file data and flushes a write record for the old object. + */ + if ((itx->itx_lr.lrc_txtype & ~TX_CI) == TX_REMOVE) + zil_remove_async(zilog, itx->itx_oid); + + /* + * Ensure the data of a renamed file is committed before the rename. + */ + if ((itx->itx_lr.lrc_txtype & ~TX_CI) == TX_RENAME) + zil_async_to_sync(zilog, itx->itx_oid); + + if (spa_freeze_txg(zilog->zl_spa) != UINT64_MAX) + txg = ZILTEST_TXG; + else + txg = dmu_tx_get_txg(tx); + + itxg = &zilog->zl_itxg[txg & TXG_MASK]; + mutex_enter(&itxg->itxg_lock); + itxs = itxg->itxg_itxs; + if (itxg->itxg_txg != txg) { + if (itxs != NULL) { + /* + * The zil_clean callback hasn't got around to cleaning + * this itxg. Save the itxs for release below. + * This should be rare. + */ + atomic_add_64(&zilog->zl_itx_list_sz, -itxg->itxg_sod); + itxg->itxg_sod = 0; + clean = itxg->itxg_itxs; + } + ASSERT(itxg->itxg_sod == 0); + itxg->itxg_txg = txg; + itxs = itxg->itxg_itxs = kmem_zalloc(sizeof (itxs_t), + KM_SLEEP); + + list_create(&itxs->i_sync_list, sizeof (itx_t), + offsetof(itx_t, itx_node)); + avl_create(&itxs->i_async_tree, zil_aitx_compare, + sizeof (itx_async_node_t), + offsetof(itx_async_node_t, ia_node)); + } + if (itx->itx_sync) { + list_insert_tail(&itxs->i_sync_list, itx); + atomic_add_64(&zilog->zl_itx_list_sz, itx->itx_sod); + itxg->itxg_sod += itx->itx_sod; + } else { + avl_tree_t *t = &itxs->i_async_tree; + uint64_t foid = ((lr_ooo_t *)&itx->itx_lr)->lr_foid; + itx_async_node_t *ian; + avl_index_t where; + + ian = avl_find(t, &foid, &where); + if (ian == NULL) { + ian = kmem_alloc(sizeof (itx_async_node_t), + KM_SLEEP); + list_create(&ian->ia_list, sizeof (itx_t), + offsetof(itx_t, itx_node)); + ian->ia_foid = foid; + avl_insert(t, ian, where); + } + list_insert_tail(&ian->ia_list, itx); + } + + itx->itx_lr.lrc_txg = dmu_tx_get_txg(tx); + zilog_dirty(zilog, txg); + mutex_exit(&itxg->itxg_lock); + + /* Release the old itxs now we've dropped the lock */ + if (clean != NULL) + zil_itxg_clean(clean); +} + +/* + * If there are any in-memory intent log transactions which have now been + * synced then start up a taskq to free them. We should only do this after we + * have written out the uberblocks (i.e. txg has been comitted) so that + * don't inadvertently clean out in-memory log records that would be required + * by zil_commit(). + */ +void +zil_clean(zilog_t *zilog, uint64_t synced_txg) +{ + itxg_t *itxg = &zilog->zl_itxg[synced_txg & TXG_MASK]; + itxs_t *clean_me; + + mutex_enter(&itxg->itxg_lock); + if (itxg->itxg_itxs == NULL || itxg->itxg_txg == ZILTEST_TXG) { + mutex_exit(&itxg->itxg_lock); + return; + } + ASSERT3U(itxg->itxg_txg, <=, synced_txg); + ASSERT(itxg->itxg_txg != 0); + ASSERT(zilog->zl_clean_taskq != NULL); + atomic_add_64(&zilog->zl_itx_list_sz, -itxg->itxg_sod); + itxg->itxg_sod = 0; + clean_me = itxg->itxg_itxs; + itxg->itxg_itxs = NULL; + itxg->itxg_txg = 0; + mutex_exit(&itxg->itxg_lock); + /* + * Preferably start a task queue to free up the old itxs but + * if taskq_dispatch can't allocate resources to do that then + * free it in-line. This should be rare. Note, using TQ_SLEEP + * created a bad performance problem. + */ + if (taskq_dispatch(zilog->zl_clean_taskq, + (void (*)(void *))zil_itxg_clean, clean_me, TQ_NOSLEEP) == 0) + zil_itxg_clean(clean_me); +} + +/* + * Get the list of itxs to commit into zl_itx_commit_list. + */ +static void +zil_get_commit_list(zilog_t *zilog) +{ + uint64_t otxg, txg; + list_t *commit_list = &zilog->zl_itx_commit_list; + uint64_t push_sod = 0; + + if (spa_freeze_txg(zilog->zl_spa) != UINT64_MAX) /* ziltest support */ + otxg = ZILTEST_TXG; + else + otxg = spa_last_synced_txg(zilog->zl_spa) + 1; + + for (txg = otxg; txg < (otxg + TXG_CONCURRENT_STATES); txg++) { + itxg_t *itxg = &zilog->zl_itxg[txg & TXG_MASK]; + + mutex_enter(&itxg->itxg_lock); + if (itxg->itxg_txg != txg) { + mutex_exit(&itxg->itxg_lock); + continue; + } + + list_move_tail(commit_list, &itxg->itxg_itxs->i_sync_list); + push_sod += itxg->itxg_sod; + itxg->itxg_sod = 0; + + mutex_exit(&itxg->itxg_lock); + } + atomic_add_64(&zilog->zl_itx_list_sz, -push_sod); +} + +/* + * Move the async itxs for a specified object to commit into sync lists. + */ +static void +zil_async_to_sync(zilog_t *zilog, uint64_t foid) +{ + uint64_t otxg, txg; + itx_async_node_t *ian; + avl_tree_t *t; + avl_index_t where; + + if (spa_freeze_txg(zilog->zl_spa) != UINT64_MAX) /* ziltest support */ + otxg = ZILTEST_TXG; + else + otxg = spa_last_synced_txg(zilog->zl_spa) + 1; + + for (txg = otxg; txg < (otxg + TXG_CONCURRENT_STATES); txg++) { + itxg_t *itxg = &zilog->zl_itxg[txg & TXG_MASK]; + + mutex_enter(&itxg->itxg_lock); + if (itxg->itxg_txg != txg) { + mutex_exit(&itxg->itxg_lock); + continue; + } + + /* + * If a foid is specified then find that node and append its + * list. Otherwise walk the tree appending all the lists + * to the sync list. We add to the end rather than the + * beginning to ensure the create has happened. + */ + t = &itxg->itxg_itxs->i_async_tree; + if (foid != 0) { + ian = avl_find(t, &foid, &where); + if (ian != NULL) { + list_move_tail(&itxg->itxg_itxs->i_sync_list, + &ian->ia_list); + } + } else { + void *cookie = NULL; + + while ((ian = avl_destroy_nodes(t, &cookie)) != NULL) { + list_move_tail(&itxg->itxg_itxs->i_sync_list, + &ian->ia_list); + list_destroy(&ian->ia_list); + kmem_free(ian, sizeof (itx_async_node_t)); + } + } + mutex_exit(&itxg->itxg_lock); + } +} + +static void +zil_commit_writer(zilog_t *zilog) +{ + uint64_t txg; + itx_t *itx; + lwb_t *lwb; + spa_t *spa = zilog->zl_spa; + int error = 0; + + ASSERT(zilog->zl_root_zio == NULL); + + mutex_exit(&zilog->zl_lock); + + zil_get_commit_list(zilog); + + /* + * Return if there's nothing to commit before we dirty the fs by + * calling zil_create(). + */ + if (list_head(&zilog->zl_itx_commit_list) == NULL) { + mutex_enter(&zilog->zl_lock); + return; + } + + if (zilog->zl_suspend) { + lwb = NULL; + } else { + lwb = list_tail(&zilog->zl_lwb_list); + if (lwb == NULL) + lwb = zil_create(zilog); + } + + DTRACE_PROBE1(zil__cw1, zilog_t *, zilog); + for (itx = list_head(&zilog->zl_itx_commit_list); itx != NULL; + itx = list_next(&zilog->zl_itx_commit_list, itx)) { + txg = itx->itx_lr.lrc_txg; + ASSERT(txg); + + if (txg > spa_last_synced_txg(spa) || txg > spa_freeze_txg(spa)) + lwb = zil_lwb_commit(zilog, itx, lwb); + } + DTRACE_PROBE1(zil__cw2, zilog_t *, zilog); + + /* write the last block out */ + if (lwb != NULL && lwb->lwb_zio != NULL) + lwb = zil_lwb_write_start(zilog, lwb); + + zilog->zl_cur_used = 0; + + /* + * Wait if necessary for the log blocks to be on stable storage. + */ + if (zilog->zl_root_zio) { + error = zio_wait(zilog->zl_root_zio); + zilog->zl_root_zio = NULL; + zil_flush_vdevs(zilog); + } + + if (error || lwb == NULL) + txg_wait_synced(zilog->zl_dmu_pool, 0); + + while ((itx = list_head(&zilog->zl_itx_commit_list))) { + txg = itx->itx_lr.lrc_txg; + ASSERT(txg); + + if (itx->itx_callback != NULL) + itx->itx_callback(itx->itx_callback_data); + list_remove(&zilog->zl_itx_commit_list, itx); + zil_itx_destroy(itx); + } + + mutex_enter(&zilog->zl_lock); + + /* + * Remember the highest committed log sequence number for ztest. + * We only update this value when all the log writes succeeded, + * because ztest wants to ASSERT that it got the whole log chain. + */ + if (error == 0 && lwb != NULL) + zilog->zl_commit_lr_seq = zilog->zl_lr_seq; +} + +/* + * Commit zfs transactions to stable storage. + * If foid is 0 push out all transactions, otherwise push only those + * for that object or might reference that object. + * + * itxs are committed in batches. In a heavily stressed zil there will be + * a commit writer thread who is writing out a bunch of itxs to the log + * for a set of committing threads (cthreads) in the same batch as the writer. + * Those cthreads are all waiting on the same cv for that batch. + * + * There will also be a different and growing batch of threads that are + * waiting to commit (qthreads). When the committing batch completes + * a transition occurs such that the cthreads exit and the qthreads become + * cthreads. One of the new cthreads becomes the writer thread for the + * batch. Any new threads arriving become new qthreads. + * + * Only 2 condition variables are needed and there's no transition + * between the two cvs needed. They just flip-flop between qthreads + * and cthreads. + * + * Using this scheme we can efficiently wakeup up only those threads + * that have been committed. + */ +void +zil_commit(zilog_t *zilog, uint64_t foid) +{ + uint64_t mybatch; + + if (zilog->zl_sync == ZFS_SYNC_DISABLED) + return; + + ZIL_STAT_BUMP(zil_commit_count); + + /* move the async itxs for the foid to the sync queues */ + zil_async_to_sync(zilog, foid); + + mutex_enter(&zilog->zl_lock); + mybatch = zilog->zl_next_batch; + while (zilog->zl_writer) { + cv_wait(&zilog->zl_cv_batch[mybatch & 1], &zilog->zl_lock); + if (mybatch <= zilog->zl_com_batch) { + mutex_exit(&zilog->zl_lock); + return; + } + } + + zilog->zl_next_batch++; + zilog->zl_writer = B_TRUE; + ZIL_STAT_BUMP(zil_commit_writer_count); + zil_commit_writer(zilog); + zilog->zl_com_batch = mybatch; + zilog->zl_writer = B_FALSE; + + /* wake up one thread to become the next writer */ + cv_signal(&zilog->zl_cv_batch[(mybatch+1) & 1]); + + /* wake up all threads waiting for this batch to be committed */ + cv_broadcast(&zilog->zl_cv_batch[mybatch & 1]); + + mutex_exit(&zilog->zl_lock); +} + +/* + * Called in syncing context to free committed log blocks and update log header. + */ +void +zil_sync(zilog_t *zilog, dmu_tx_t *tx) +{ + zil_header_t *zh = zil_header_in_syncing_context(zilog); + uint64_t txg = dmu_tx_get_txg(tx); + spa_t *spa = zilog->zl_spa; + uint64_t *replayed_seq = &zilog->zl_replayed_seq[txg & TXG_MASK]; + lwb_t *lwb; + + /* + * We don't zero out zl_destroy_txg, so make sure we don't try + * to destroy it twice. + */ + if (spa_sync_pass(spa) != 1) + return; + + mutex_enter(&zilog->zl_lock); + + ASSERT(zilog->zl_stop_sync == 0); + + if (*replayed_seq != 0) { + ASSERT(zh->zh_replay_seq < *replayed_seq); + zh->zh_replay_seq = *replayed_seq; + *replayed_seq = 0; + } + + if (zilog->zl_destroy_txg == txg) { + blkptr_t blk = zh->zh_log; + + ASSERT(list_head(&zilog->zl_lwb_list) == NULL); + + bzero(zh, sizeof (zil_header_t)); + bzero(zilog->zl_replayed_seq, sizeof (zilog->zl_replayed_seq)); + + if (zilog->zl_keep_first) { + /* + * If this block was part of log chain that couldn't + * be claimed because a device was missing during + * zil_claim(), but that device later returns, + * then this block could erroneously appear valid. + * To guard against this, assign a new GUID to the new + * log chain so it doesn't matter what blk points to. + */ + zil_init_log_chain(zilog, &blk); + zh->zh_log = blk; + } + } + + while ((lwb = list_head(&zilog->zl_lwb_list)) != NULL) { + zh->zh_log = lwb->lwb_blk; + if (lwb->lwb_buf != NULL || lwb->lwb_max_txg > txg) + break; + + ASSERT(lwb->lwb_zio == NULL); + + list_remove(&zilog->zl_lwb_list, lwb); + zio_free_zil(spa, txg, &lwb->lwb_blk); + kmem_cache_free(zil_lwb_cache, lwb); + + /* + * If we don't have anything left in the lwb list then + * we've had an allocation failure and we need to zero + * out the zil_header blkptr so that we don't end + * up freeing the same block twice. + */ + if (list_head(&zilog->zl_lwb_list) == NULL) + BP_ZERO(&zh->zh_log); + } + + /* + * Remove fastwrite on any blocks that have been pre-allocated for + * the next commit. This prevents fastwrite counter pollution by + * unused, long-lived LWBs. + */ + for (; lwb != NULL; lwb = list_next(&zilog->zl_lwb_list, lwb)) { + if (lwb->lwb_fastwrite && !lwb->lwb_zio) { + metaslab_fastwrite_unmark(zilog->zl_spa, &lwb->lwb_blk); + lwb->lwb_fastwrite = 0; + } + } + + mutex_exit(&zilog->zl_lock); +} + +void +zil_init(void) +{ + zil_lwb_cache = kmem_cache_create("zil_lwb_cache", + sizeof (struct lwb), 0, NULL, NULL, NULL, NULL, NULL, 0); + + zil_ksp = kstat_create("zfs", 0, "zil", "misc", + KSTAT_TYPE_NAMED, sizeof (zil_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + + if (zil_ksp != NULL) { + zil_ksp->ks_data = &zil_stats; + kstat_install(zil_ksp); + } +} + +void +zil_fini(void) +{ + kmem_cache_destroy(zil_lwb_cache); + + if (zil_ksp != NULL) { + kstat_delete(zil_ksp); + zil_ksp = NULL; + } +} + +void +zil_set_sync(zilog_t *zilog, uint64_t sync) +{ + zilog->zl_sync = sync; +} + +void +zil_set_logbias(zilog_t *zilog, uint64_t logbias) +{ + zilog->zl_logbias = logbias; +} + +zilog_t * +zil_alloc(objset_t *os, zil_header_t *zh_phys) +{ + zilog_t *zilog; + int i; + + zilog = kmem_zalloc(sizeof (zilog_t), KM_SLEEP); + + zilog->zl_header = zh_phys; + zilog->zl_os = os; + zilog->zl_spa = dmu_objset_spa(os); + zilog->zl_dmu_pool = dmu_objset_pool(os); + zilog->zl_destroy_txg = TXG_INITIAL - 1; + zilog->zl_logbias = dmu_objset_logbias(os); + zilog->zl_sync = dmu_objset_syncprop(os); + zilog->zl_next_batch = 1; + + mutex_init(&zilog->zl_lock, NULL, MUTEX_DEFAULT, NULL); + + for (i = 0; i < TXG_SIZE; i++) { + mutex_init(&zilog->zl_itxg[i].itxg_lock, NULL, + MUTEX_DEFAULT, NULL); + } + + list_create(&zilog->zl_lwb_list, sizeof (lwb_t), + offsetof(lwb_t, lwb_node)); + + list_create(&zilog->zl_itx_commit_list, sizeof (itx_t), + offsetof(itx_t, itx_node)); + + mutex_init(&zilog->zl_vdev_lock, NULL, MUTEX_DEFAULT, NULL); + + avl_create(&zilog->zl_vdev_tree, zil_vdev_compare, + sizeof (zil_vdev_node_t), offsetof(zil_vdev_node_t, zv_node)); + + cv_init(&zilog->zl_cv_writer, NULL, CV_DEFAULT, NULL); + cv_init(&zilog->zl_cv_suspend, NULL, CV_DEFAULT, NULL); + cv_init(&zilog->zl_cv_batch[0], NULL, CV_DEFAULT, NULL); + cv_init(&zilog->zl_cv_batch[1], NULL, CV_DEFAULT, NULL); + + return (zilog); +} + +void +zil_free(zilog_t *zilog) +{ + int i; + + zilog->zl_stop_sync = 1; + + ASSERT0(zilog->zl_suspend); + ASSERT0(zilog->zl_suspending); + + ASSERT(list_is_empty(&zilog->zl_lwb_list)); + list_destroy(&zilog->zl_lwb_list); + + avl_destroy(&zilog->zl_vdev_tree); + mutex_destroy(&zilog->zl_vdev_lock); + + ASSERT(list_is_empty(&zilog->zl_itx_commit_list)); + list_destroy(&zilog->zl_itx_commit_list); + + for (i = 0; i < TXG_SIZE; i++) { + /* + * It's possible for an itx to be generated that doesn't dirty + * a txg (e.g. ztest TX_TRUNCATE). So there's no zil_clean() + * callback to remove the entry. We remove those here. + * + * Also free up the ziltest itxs. + */ + if (zilog->zl_itxg[i].itxg_itxs) + zil_itxg_clean(zilog->zl_itxg[i].itxg_itxs); + mutex_destroy(&zilog->zl_itxg[i].itxg_lock); + } + + mutex_destroy(&zilog->zl_lock); + + cv_destroy(&zilog->zl_cv_writer); + cv_destroy(&zilog->zl_cv_suspend); + cv_destroy(&zilog->zl_cv_batch[0]); + cv_destroy(&zilog->zl_cv_batch[1]); + + kmem_free(zilog, sizeof (zilog_t)); +} + +/* + * Open an intent log. + */ +zilog_t * +zil_open(objset_t *os, zil_get_data_t *get_data) +{ + zilog_t *zilog = dmu_objset_zil(os); + + ASSERT(zilog->zl_clean_taskq == NULL); + ASSERT(zilog->zl_get_data == NULL); + ASSERT(list_is_empty(&zilog->zl_lwb_list)); + + zilog->zl_get_data = get_data; + zilog->zl_clean_taskq = taskq_create("zil_clean", 1, defclsyspri, + 2, 2, TASKQ_PREPOPULATE); + + return (zilog); +} + +/* + * Close an intent log. + */ +void +zil_close(zilog_t *zilog) +{ + lwb_t *lwb; + uint64_t txg = 0; + + zil_commit(zilog, 0); /* commit all itx */ + + /* + * The lwb_max_txg for the stubby lwb will reflect the last activity + * for the zil. After a txg_wait_synced() on the txg we know all the + * callbacks have occurred that may clean the zil. Only then can we + * destroy the zl_clean_taskq. + */ + mutex_enter(&zilog->zl_lock); + lwb = list_tail(&zilog->zl_lwb_list); + if (lwb != NULL) + txg = lwb->lwb_max_txg; + mutex_exit(&zilog->zl_lock); + if (txg) + txg_wait_synced(zilog->zl_dmu_pool, txg); + ASSERT(!zilog_is_dirty(zilog)); + + taskq_destroy(zilog->zl_clean_taskq); + zilog->zl_clean_taskq = NULL; + zilog->zl_get_data = NULL; + + /* + * We should have only one LWB left on the list; remove it now. + */ + mutex_enter(&zilog->zl_lock); + lwb = list_head(&zilog->zl_lwb_list); + if (lwb != NULL) { + ASSERT(lwb == list_tail(&zilog->zl_lwb_list)); + ASSERT(lwb->lwb_zio == NULL); + if (lwb->lwb_fastwrite) + metaslab_fastwrite_unmark(zilog->zl_spa, &lwb->lwb_blk); + list_remove(&zilog->zl_lwb_list, lwb); + zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); + kmem_cache_free(zil_lwb_cache, lwb); + } + mutex_exit(&zilog->zl_lock); +} + +static char *suspend_tag = "zil suspending"; + +/* + * Suspend an intent log. While in suspended mode, we still honor + * synchronous semantics, but we rely on txg_wait_synced() to do it. + * On old version pools, we suspend the log briefly when taking a + * snapshot so that it will have an empty intent log. + * + * Long holds are not really intended to be used the way we do here -- + * held for such a short time. A concurrent caller of dsl_dataset_long_held() + * could fail. Therefore we take pains to only put a long hold if it is + * actually necessary. Fortunately, it will only be necessary if the + * objset is currently mounted (or the ZVOL equivalent). In that case it + * will already have a long hold, so we are not really making things any worse. + * + * Ideally, we would locate the existing long-holder (i.e. the zfsvfs_t or + * zvol_state_t), and use their mechanism to prevent their hold from being + * dropped (e.g. VFS_HOLD()). However, that would be even more pain for + * very little gain. + * + * if cookiep == NULL, this does both the suspend & resume. + * Otherwise, it returns with the dataset "long held", and the cookie + * should be passed into zil_resume(). + */ +int +zil_suspend(const char *osname, void **cookiep) +{ + objset_t *os; + zilog_t *zilog; + const zil_header_t *zh; + int error; + + error = dmu_objset_hold(osname, suspend_tag, &os); + if (error != 0) + return (error); + zilog = dmu_objset_zil(os); + + mutex_enter(&zilog->zl_lock); + zh = zilog->zl_header; + + if (zh->zh_flags & ZIL_REPLAY_NEEDED) { /* unplayed log */ + mutex_exit(&zilog->zl_lock); + dmu_objset_rele(os, suspend_tag); + return (SET_ERROR(EBUSY)); + } + + /* + * Don't put a long hold in the cases where we can avoid it. This + * is when there is no cookie so we are doing a suspend & resume + * (i.e. called from zil_vdev_offline()), and there's nothing to do + * for the suspend because it's already suspended, or there's no ZIL. + */ + if (cookiep == NULL && !zilog->zl_suspending && + (zilog->zl_suspend > 0 || BP_IS_HOLE(&zh->zh_log))) { + mutex_exit(&zilog->zl_lock); + dmu_objset_rele(os, suspend_tag); + return (0); + } + + dsl_dataset_long_hold(dmu_objset_ds(os), suspend_tag); + dsl_pool_rele(dmu_objset_pool(os), suspend_tag); + + zilog->zl_suspend++; + + if (zilog->zl_suspend > 1) { + /* + * Someone else is already suspending it. + * Just wait for them to finish. + */ + + while (zilog->zl_suspending) + cv_wait(&zilog->zl_cv_suspend, &zilog->zl_lock); + mutex_exit(&zilog->zl_lock); + + if (cookiep == NULL) + zil_resume(os); + else + *cookiep = os; + return (0); + } + + /* + * If there is no pointer to an on-disk block, this ZIL must not + * be active (e.g. filesystem not mounted), so there's nothing + * to clean up. + */ + if (BP_IS_HOLE(&zh->zh_log)) { + ASSERT(cookiep != NULL); /* fast path already handled */ + + *cookiep = os; + mutex_exit(&zilog->zl_lock); + return (0); + } + + zilog->zl_suspending = B_TRUE; + mutex_exit(&zilog->zl_lock); + + zil_commit(zilog, 0); + + zil_destroy(zilog, B_FALSE); + + mutex_enter(&zilog->zl_lock); + zilog->zl_suspending = B_FALSE; + cv_broadcast(&zilog->zl_cv_suspend); + mutex_exit(&zilog->zl_lock); + + if (cookiep == NULL) + zil_resume(os); + else + *cookiep = os; + return (0); +} + +void +zil_resume(void *cookie) +{ + objset_t *os = cookie; + zilog_t *zilog = dmu_objset_zil(os); + + mutex_enter(&zilog->zl_lock); + ASSERT(zilog->zl_suspend != 0); + zilog->zl_suspend--; + mutex_exit(&zilog->zl_lock); + dsl_dataset_long_rele(dmu_objset_ds(os), suspend_tag); + dsl_dataset_rele(dmu_objset_ds(os), suspend_tag); +} + +typedef struct zil_replay_arg { + zil_replay_func_t *zr_replay; + void *zr_arg; + boolean_t zr_byteswap; + char *zr_lr; +} zil_replay_arg_t; + +static int +zil_replay_error(zilog_t *zilog, lr_t *lr, int error) +{ + char name[MAXNAMELEN]; + + zilog->zl_replaying_seq--; /* didn't actually replay this one */ + + dmu_objset_name(zilog->zl_os, name); + + cmn_err(CE_WARN, "ZFS replay transaction error %d, " + "dataset %s, seq 0x%llx, txtype %llu %s\n", error, name, + (u_longlong_t)lr->lrc_seq, + (u_longlong_t)(lr->lrc_txtype & ~TX_CI), + (lr->lrc_txtype & TX_CI) ? "CI" : ""); + + return (error); +} + +static int +zil_replay_log_record(zilog_t *zilog, lr_t *lr, void *zra, uint64_t claim_txg) +{ + zil_replay_arg_t *zr = zra; + const zil_header_t *zh = zilog->zl_header; + uint64_t reclen = lr->lrc_reclen; + uint64_t txtype = lr->lrc_txtype; + int error = 0; + + zilog->zl_replaying_seq = lr->lrc_seq; + + if (lr->lrc_seq <= zh->zh_replay_seq) /* already replayed */ + return (0); + + if (lr->lrc_txg < claim_txg) /* already committed */ + return (0); + + /* Strip case-insensitive bit, still present in log record */ + txtype &= ~TX_CI; + + if (txtype == 0 || txtype >= TX_MAX_TYPE) + return (zil_replay_error(zilog, lr, EINVAL)); + + /* + * If this record type can be logged out of order, the object + * (lr_foid) may no longer exist. That's legitimate, not an error. + */ + if (TX_OOO(txtype)) { + error = dmu_object_info(zilog->zl_os, + ((lr_ooo_t *)lr)->lr_foid, NULL); + if (error == ENOENT || error == EEXIST) + return (0); + } + + /* + * Make a copy of the data so we can revise and extend it. + */ + bcopy(lr, zr->zr_lr, reclen); + + /* + * If this is a TX_WRITE with a blkptr, suck in the data. + */ + if (txtype == TX_WRITE && reclen == sizeof (lr_write_t)) { + error = zil_read_log_data(zilog, (lr_write_t *)lr, + zr->zr_lr + reclen); + if (error != 0) + return (zil_replay_error(zilog, lr, error)); + } + + /* + * The log block containing this lr may have been byteswapped + * so that we can easily examine common fields like lrc_txtype. + * However, the log is a mix of different record types, and only the + * replay vectors know how to byteswap their records. Therefore, if + * the lr was byteswapped, undo it before invoking the replay vector. + */ + if (zr->zr_byteswap) + byteswap_uint64_array(zr->zr_lr, reclen); + + /* + * We must now do two things atomically: replay this log record, + * and update the log header sequence number to reflect the fact that + * we did so. At the end of each replay function the sequence number + * is updated if we are in replay mode. + */ + error = zr->zr_replay[txtype](zr->zr_arg, zr->zr_lr, zr->zr_byteswap); + if (error != 0) { + /* + * The DMU's dnode layer doesn't see removes until the txg + * commits, so a subsequent claim can spuriously fail with + * EEXIST. So if we receive any error we try syncing out + * any removes then retry the transaction. Note that we + * specify B_FALSE for byteswap now, so we don't do it twice. + */ + txg_wait_synced(spa_get_dsl(zilog->zl_spa), 0); + error = zr->zr_replay[txtype](zr->zr_arg, zr->zr_lr, B_FALSE); + if (error != 0) + return (zil_replay_error(zilog, lr, error)); + } + return (0); +} + +/* ARGSUSED */ +static int +zil_incr_blks(zilog_t *zilog, blkptr_t *bp, void *arg, uint64_t claim_txg) +{ + zilog->zl_replay_blks++; + + return (0); +} + +/* + * If this dataset has a non-empty intent log, replay it and destroy it. + */ +void +zil_replay(objset_t *os, void *arg, zil_replay_func_t replay_func[TX_MAX_TYPE]) +{ + zilog_t *zilog = dmu_objset_zil(os); + const zil_header_t *zh = zilog->zl_header; + zil_replay_arg_t zr; + + if ((zh->zh_flags & ZIL_REPLAY_NEEDED) == 0) { + zil_destroy(zilog, B_TRUE); + return; + } + + zr.zr_replay = replay_func; + zr.zr_arg = arg; + zr.zr_byteswap = BP_SHOULD_BYTESWAP(&zh->zh_log); + zr.zr_lr = vmem_alloc(2 * SPA_MAXBLOCKSIZE, KM_SLEEP); + + /* + * Wait for in-progress removes to sync before starting replay. + */ + txg_wait_synced(zilog->zl_dmu_pool, 0); + + zilog->zl_replay = B_TRUE; + zilog->zl_replay_time = ddi_get_lbolt(); + ASSERT(zilog->zl_replay_blks == 0); + (void) zil_parse(zilog, zil_incr_blks, zil_replay_log_record, &zr, + zh->zh_claim_txg); + vmem_free(zr.zr_lr, 2 * SPA_MAXBLOCKSIZE); + + zil_destroy(zilog, B_FALSE); + txg_wait_synced(zilog->zl_dmu_pool, zilog->zl_destroy_txg); + zilog->zl_replay = B_FALSE; +} + +boolean_t +zil_replaying(zilog_t *zilog, dmu_tx_t *tx) +{ + if (zilog->zl_sync == ZFS_SYNC_DISABLED) + return (B_TRUE); + + if (zilog->zl_replay) { + dsl_dataset_dirty(dmu_objset_ds(zilog->zl_os), tx); + zilog->zl_replayed_seq[dmu_tx_get_txg(tx) & TXG_MASK] = + zilog->zl_replaying_seq; + return (B_TRUE); + } + + return (B_FALSE); +} + +/* ARGSUSED */ +int +zil_vdev_offline(const char *osname, void *arg) +{ + int error; + + error = zil_suspend(osname, NULL); + if (error != 0) + return (SET_ERROR(EEXIST)); + return (0); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zil_alloc); +EXPORT_SYMBOL(zil_free); +EXPORT_SYMBOL(zil_open); +EXPORT_SYMBOL(zil_close); +EXPORT_SYMBOL(zil_replay); +EXPORT_SYMBOL(zil_replaying); +EXPORT_SYMBOL(zil_destroy); +EXPORT_SYMBOL(zil_destroy_sync); +EXPORT_SYMBOL(zil_itx_create); +EXPORT_SYMBOL(zil_itx_destroy); +EXPORT_SYMBOL(zil_itx_assign); +EXPORT_SYMBOL(zil_commit); +EXPORT_SYMBOL(zil_vdev_offline); +EXPORT_SYMBOL(zil_claim); +EXPORT_SYMBOL(zil_check_log_chain); +EXPORT_SYMBOL(zil_sync); +EXPORT_SYMBOL(zil_clean); +EXPORT_SYMBOL(zil_suspend); +EXPORT_SYMBOL(zil_resume); +EXPORT_SYMBOL(zil_add_block); +EXPORT_SYMBOL(zil_bp_tree_add); +EXPORT_SYMBOL(zil_set_sync); +EXPORT_SYMBOL(zil_set_logbias); + +module_param(zil_replay_disable, int, 0644); +MODULE_PARM_DESC(zil_replay_disable, "Disable intent logging replay"); + +module_param(zfs_nocacheflush, int, 0644); +MODULE_PARM_DESC(zfs_nocacheflush, "Disable cache flushes"); + +module_param(zil_slog_limit, ulong, 0644); +MODULE_PARM_DESC(zil_slog_limit, "Max commit bytes to separate log device"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zio.c +++ linux-4.4.0/zfs/module/zfs/zio.c @@ -0,0 +1,3496 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * ========================================================================== + * I/O type descriptions + * ========================================================================== + */ +const char *zio_type_name[ZIO_TYPES] = { + "z_null", "z_rd", "z_wr", "z_fr", "z_cl", "z_ioctl" +}; + +/* + * ========================================================================== + * I/O kmem caches + * ========================================================================== + */ +kmem_cache_t *zio_cache; +kmem_cache_t *zio_link_cache; +kmem_cache_t *zio_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; +kmem_cache_t *zio_data_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; +int zio_delay_max = ZIO_DELAY_MAX; + +#define ZIO_PIPELINE_CONTINUE 0x100 +#define ZIO_PIPELINE_STOP 0x101 + +/* + * The following actions directly effect the spa's sync-to-convergence logic. + * The values below define the sync pass when we start performing the action. + * Care should be taken when changing these values as they directly impact + * spa_sync() performance. Tuning these values may introduce subtle performance + * pathologies and should only be done in the context of performance analysis. + * These tunables will eventually be removed and replaced with #defines once + * enough analysis has been done to determine optimal values. + * + * The 'zfs_sync_pass_deferred_free' pass must be greater than 1 to ensure that + * regular blocks are not deferred. + */ +int zfs_sync_pass_deferred_free = 2; /* defer frees starting in this pass */ +int zfs_sync_pass_dont_compress = 5; /* don't compress starting in this pass */ +int zfs_sync_pass_rewrite = 2; /* rewrite new bps starting in this pass */ + +/* + * An allocating zio is one that either currently has the DVA allocate + * stage set or will have it later in its lifetime. + */ +#define IO_IS_ALLOCATING(zio) ((zio)->io_orig_pipeline & ZIO_STAGE_DVA_ALLOCATE) + +int zio_requeue_io_start_cut_in_line = 1; + +#ifdef ZFS_DEBUG +int zio_buf_debug_limit = 16384; +#else +int zio_buf_debug_limit = 0; +#endif + +static inline void __zio_execute(zio_t *zio); + +void +zio_init(void) +{ + size_t c; + vmem_t *data_alloc_arena = NULL; + + zio_cache = kmem_cache_create("zio_cache", + sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0); + zio_link_cache = kmem_cache_create("zio_link_cache", + sizeof (zio_link_t), 0, NULL, NULL, NULL, NULL, NULL, 0); + + /* + * For small buffers, we want a cache for each multiple of + * SPA_MINBLOCKSIZE. For larger buffers, we want a cache + * for each quarter-power of 2. + */ + for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) { + size_t size = (c + 1) << SPA_MINBLOCKSHIFT; + size_t p2 = size; + size_t align = 0; + size_t cflags = (size > zio_buf_debug_limit) ? KMC_NODEBUG : 0; + +#ifdef _ILP32 + /* + * Cache size limited to 1M on 32-bit platforms until ARC + * buffers no longer require virtual address space. + */ + if (size > zfs_max_recordsize) + break; +#endif + + while (!ISP2(p2)) + p2 &= p2 - 1; + +#ifndef _KERNEL + /* + * If we are using watchpoints, put each buffer on its own page, + * to eliminate the performance overhead of trapping to the + * kernel when modifying a non-watched buffer that shares the + * page with a watched buffer. + */ + if (arc_watch && !IS_P2ALIGNED(size, PAGESIZE)) + continue; +#endif + if (size <= 4 * SPA_MINBLOCKSIZE) { + align = SPA_MINBLOCKSIZE; + } else if (IS_P2ALIGNED(size, p2 >> 2)) { + align = MIN(p2 >> 2, PAGESIZE); + } + + if (align != 0) { + char name[36]; + (void) sprintf(name, "zio_buf_%lu", (ulong_t)size); + zio_buf_cache[c] = kmem_cache_create(name, size, + align, NULL, NULL, NULL, NULL, NULL, cflags); + + (void) sprintf(name, "zio_data_buf_%lu", (ulong_t)size); + zio_data_buf_cache[c] = kmem_cache_create(name, size, + align, NULL, NULL, NULL, NULL, + data_alloc_arena, cflags); + } + } + + while (--c != 0) { + ASSERT(zio_buf_cache[c] != NULL); + if (zio_buf_cache[c - 1] == NULL) + zio_buf_cache[c - 1] = zio_buf_cache[c]; + + ASSERT(zio_data_buf_cache[c] != NULL); + if (zio_data_buf_cache[c - 1] == NULL) + zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; + } + + zio_inject_init(); + + lz4_init(); +} + +void +zio_fini(void) +{ + size_t c; + kmem_cache_t *last_cache = NULL; + kmem_cache_t *last_data_cache = NULL; + + for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) { +#ifdef _ILP32 + /* + * Cache size limited to 1M on 32-bit platforms until ARC + * buffers no longer require virtual address space. + */ + if (((c + 1) << SPA_MINBLOCKSHIFT) > zfs_max_recordsize) + break; +#endif + if (zio_buf_cache[c] != last_cache) { + last_cache = zio_buf_cache[c]; + kmem_cache_destroy(zio_buf_cache[c]); + } + zio_buf_cache[c] = NULL; + + if (zio_data_buf_cache[c] != last_data_cache) { + last_data_cache = zio_data_buf_cache[c]; + kmem_cache_destroy(zio_data_buf_cache[c]); + } + zio_data_buf_cache[c] = NULL; + } + + kmem_cache_destroy(zio_link_cache); + kmem_cache_destroy(zio_cache); + + zio_inject_fini(); + + lz4_fini(); +} + +/* + * ========================================================================== + * Allocate and free I/O buffers + * ========================================================================== + */ + +/* + * Use zio_buf_alloc to allocate ZFS metadata. This data will appear in a + * crashdump if the kernel panics, so use it judiciously. Obviously, it's + * useful to inspect ZFS metadata, but if possible, we should avoid keeping + * excess / transient data in-core during a crashdump. + */ +void * +zio_buf_alloc(size_t size) +{ + size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; + + VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); + + return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE)); +} + +/* + * Use zio_data_buf_alloc to allocate data. The data will not appear in a + * crashdump if the kernel panics. This exists so that we will limit the amount + * of ZFS data that shows up in a kernel crashdump. (Thus reducing the amount + * of kernel heap dumped to disk when the kernel panics) + */ +void * +zio_data_buf_alloc(size_t size) +{ + size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; + + VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); + + return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE)); +} + +/* + * Use zio_buf_alloc_flags when specific allocation flags are needed. e.g. + * passing KM_NOSLEEP when it is acceptable for an allocation to fail. + */ +void * +zio_buf_alloc_flags(size_t size, int flags) +{ + size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; + + VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); + + return (kmem_cache_alloc(zio_buf_cache[c], flags)); +} + +void +zio_buf_free(void *buf, size_t size) +{ + size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; + + VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); + + kmem_cache_free(zio_buf_cache[c], buf); +} + +void +zio_data_buf_free(void *buf, size_t size) +{ + size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; + + VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); + + kmem_cache_free(zio_data_buf_cache[c], buf); +} + +/* + * ========================================================================== + * Push and pop I/O transform buffers + * ========================================================================== + */ +static void +zio_push_transform(zio_t *zio, void *data, uint64_t size, uint64_t bufsize, + zio_transform_func_t *transform) +{ + zio_transform_t *zt = kmem_alloc(sizeof (zio_transform_t), KM_SLEEP); + + zt->zt_orig_data = zio->io_data; + zt->zt_orig_size = zio->io_size; + zt->zt_bufsize = bufsize; + zt->zt_transform = transform; + + zt->zt_next = zio->io_transform_stack; + zio->io_transform_stack = zt; + + zio->io_data = data; + zio->io_size = size; +} + +static void +zio_pop_transforms(zio_t *zio) +{ + zio_transform_t *zt; + + while ((zt = zio->io_transform_stack) != NULL) { + if (zt->zt_transform != NULL) + zt->zt_transform(zio, + zt->zt_orig_data, zt->zt_orig_size); + + if (zt->zt_bufsize != 0) + zio_buf_free(zio->io_data, zt->zt_bufsize); + + zio->io_data = zt->zt_orig_data; + zio->io_size = zt->zt_orig_size; + zio->io_transform_stack = zt->zt_next; + + kmem_free(zt, sizeof (zio_transform_t)); + } +} + +/* + * ========================================================================== + * I/O transform callbacks for subblocks and decompression + * ========================================================================== + */ +static void +zio_subblock(zio_t *zio, void *data, uint64_t size) +{ + ASSERT(zio->io_size > size); + + if (zio->io_type == ZIO_TYPE_READ) + bcopy(zio->io_data, data, size); +} + +static void +zio_decompress(zio_t *zio, void *data, uint64_t size) +{ + if (zio->io_error == 0 && + zio_decompress_data(BP_GET_COMPRESS(zio->io_bp), + zio->io_data, data, zio->io_size, size) != 0) + zio->io_error = SET_ERROR(EIO); +} + +/* + * ========================================================================== + * I/O parent/child relationships and pipeline interlocks + * ========================================================================== + */ +/* + * NOTE - Callers to zio_walk_parents() and zio_walk_children must + * continue calling these functions until they return NULL. + * Otherwise, the next caller will pick up the list walk in + * some indeterminate state. (Otherwise every caller would + * have to pass in a cookie to keep the state represented by + * io_walk_link, which gets annoying.) + */ +zio_t * +zio_walk_parents(zio_t *cio) +{ + zio_link_t *zl = cio->io_walk_link; + list_t *pl = &cio->io_parent_list; + + zl = (zl == NULL) ? list_head(pl) : list_next(pl, zl); + cio->io_walk_link = zl; + + if (zl == NULL) + return (NULL); + + ASSERT(zl->zl_child == cio); + return (zl->zl_parent); +} + +zio_t * +zio_walk_children(zio_t *pio) +{ + zio_link_t *zl = pio->io_walk_link; + list_t *cl = &pio->io_child_list; + + zl = (zl == NULL) ? list_head(cl) : list_next(cl, zl); + pio->io_walk_link = zl; + + if (zl == NULL) + return (NULL); + + ASSERT(zl->zl_parent == pio); + return (zl->zl_child); +} + +zio_t * +zio_unique_parent(zio_t *cio) +{ + zio_t *pio = zio_walk_parents(cio); + + VERIFY(zio_walk_parents(cio) == NULL); + return (pio); +} + +void +zio_add_child(zio_t *pio, zio_t *cio) +{ + zio_link_t *zl = kmem_cache_alloc(zio_link_cache, KM_SLEEP); + int w; + + /* + * Logical I/Os can have logical, gang, or vdev children. + * Gang I/Os can have gang or vdev children. + * Vdev I/Os can only have vdev children. + * The following ASSERT captures all of these constraints. + */ + ASSERT(cio->io_child_type <= pio->io_child_type); + + zl->zl_parent = pio; + zl->zl_child = cio; + + mutex_enter(&cio->io_lock); + mutex_enter(&pio->io_lock); + + ASSERT(pio->io_state[ZIO_WAIT_DONE] == 0); + + for (w = 0; w < ZIO_WAIT_TYPES; w++) + pio->io_children[cio->io_child_type][w] += !cio->io_state[w]; + + list_insert_head(&pio->io_child_list, zl); + list_insert_head(&cio->io_parent_list, zl); + + pio->io_child_count++; + cio->io_parent_count++; + + mutex_exit(&pio->io_lock); + mutex_exit(&cio->io_lock); +} + +static void +zio_remove_child(zio_t *pio, zio_t *cio, zio_link_t *zl) +{ + ASSERT(zl->zl_parent == pio); + ASSERT(zl->zl_child == cio); + + mutex_enter(&cio->io_lock); + mutex_enter(&pio->io_lock); + + list_remove(&pio->io_child_list, zl); + list_remove(&cio->io_parent_list, zl); + + pio->io_child_count--; + cio->io_parent_count--; + + mutex_exit(&pio->io_lock); + mutex_exit(&cio->io_lock); + + kmem_cache_free(zio_link_cache, zl); +} + +static boolean_t +zio_wait_for_children(zio_t *zio, enum zio_child child, enum zio_wait_type wait) +{ + uint64_t *countp = &zio->io_children[child][wait]; + boolean_t waiting = B_FALSE; + + mutex_enter(&zio->io_lock); + ASSERT(zio->io_stall == NULL); + if (*countp != 0) { + zio->io_stage >>= 1; + zio->io_stall = countp; + waiting = B_TRUE; + } + mutex_exit(&zio->io_lock); + + return (waiting); +} + +__attribute__((always_inline)) +static inline void +zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait) +{ + uint64_t *countp = &pio->io_children[zio->io_child_type][wait]; + int *errorp = &pio->io_child_error[zio->io_child_type]; + + mutex_enter(&pio->io_lock); + if (zio->io_error && !(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE)) + *errorp = zio_worst_error(*errorp, zio->io_error); + pio->io_reexecute |= zio->io_reexecute; + ASSERT3U(*countp, >, 0); + + (*countp)--; + + if (*countp == 0 && pio->io_stall == countp) { + pio->io_stall = NULL; + mutex_exit(&pio->io_lock); + __zio_execute(pio); + } else { + mutex_exit(&pio->io_lock); + } +} + +static void +zio_inherit_child_errors(zio_t *zio, enum zio_child c) +{ + if (zio->io_child_error[c] != 0 && zio->io_error == 0) + zio->io_error = zio->io_child_error[c]; +} + +/* + * ========================================================================== + * Create the various types of I/O (read, write, free, etc) + * ========================================================================== + */ +static zio_t * +zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, + void *data, uint64_t size, zio_done_func_t *done, void *private, + zio_type_t type, zio_priority_t priority, enum zio_flag flags, + vdev_t *vd, uint64_t offset, const zbookmark_phys_t *zb, + enum zio_stage stage, enum zio_stage pipeline) +{ + zio_t *zio; + + ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); + ASSERT(P2PHASE(size, SPA_MINBLOCKSIZE) == 0); + ASSERT(P2PHASE(offset, SPA_MINBLOCKSIZE) == 0); + + ASSERT(!vd || spa_config_held(spa, SCL_STATE_ALL, RW_READER)); + ASSERT(!bp || !(flags & ZIO_FLAG_CONFIG_WRITER)); + ASSERT(vd || stage == ZIO_STAGE_OPEN); + + zio = kmem_cache_alloc(zio_cache, KM_SLEEP); + bzero(zio, sizeof (zio_t)); + + mutex_init(&zio->io_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&zio->io_cv, NULL, CV_DEFAULT, NULL); + + list_create(&zio->io_parent_list, sizeof (zio_link_t), + offsetof(zio_link_t, zl_parent_node)); + list_create(&zio->io_child_list, sizeof (zio_link_t), + offsetof(zio_link_t, zl_child_node)); + + if (vd != NULL) + zio->io_child_type = ZIO_CHILD_VDEV; + else if (flags & ZIO_FLAG_GANG_CHILD) + zio->io_child_type = ZIO_CHILD_GANG; + else if (flags & ZIO_FLAG_DDT_CHILD) + zio->io_child_type = ZIO_CHILD_DDT; + else + zio->io_child_type = ZIO_CHILD_LOGICAL; + + if (bp != NULL) { + zio->io_bp = (blkptr_t *)bp; + zio->io_bp_copy = *bp; + zio->io_bp_orig = *bp; + if (type != ZIO_TYPE_WRITE || + zio->io_child_type == ZIO_CHILD_DDT) + zio->io_bp = &zio->io_bp_copy; /* so caller can free */ + if (zio->io_child_type == ZIO_CHILD_LOGICAL) + zio->io_logical = zio; + if (zio->io_child_type > ZIO_CHILD_GANG && BP_IS_GANG(bp)) + pipeline |= ZIO_GANG_STAGES; + } + + zio->io_spa = spa; + zio->io_txg = txg; + zio->io_done = done; + zio->io_private = private; + zio->io_type = type; + zio->io_priority = priority; + zio->io_vd = vd; + zio->io_offset = offset; + zio->io_orig_data = zio->io_data = data; + zio->io_orig_size = zio->io_size = size; + zio->io_orig_flags = zio->io_flags = flags; + zio->io_orig_stage = zio->io_stage = stage; + zio->io_orig_pipeline = zio->io_pipeline = pipeline; + + zio->io_state[ZIO_WAIT_READY] = (stage >= ZIO_STAGE_READY); + zio->io_state[ZIO_WAIT_DONE] = (stage >= ZIO_STAGE_DONE); + + if (zb != NULL) + zio->io_bookmark = *zb; + + if (pio != NULL) { + if (zio->io_logical == NULL) + zio->io_logical = pio->io_logical; + if (zio->io_child_type == ZIO_CHILD_GANG) + zio->io_gang_leader = pio->io_gang_leader; + zio_add_child(pio, zio); + } + + taskq_init_ent(&zio->io_tqent); + + return (zio); +} + +static void +zio_destroy(zio_t *zio) +{ + list_destroy(&zio->io_parent_list); + list_destroy(&zio->io_child_list); + mutex_destroy(&zio->io_lock); + cv_destroy(&zio->io_cv); + kmem_cache_free(zio_cache, zio); +} + +zio_t * +zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done, + void *private, enum zio_flag flags) +{ + zio_t *zio; + + zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, + ZIO_TYPE_NULL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL, + ZIO_STAGE_OPEN, ZIO_INTERLOCK_PIPELINE); + + return (zio); +} + +zio_t * +zio_root(spa_t *spa, zio_done_func_t *done, void *private, enum zio_flag flags) +{ + return (zio_null(NULL, spa, NULL, done, private, flags)); +} + +void +zfs_blkptr_verify(spa_t *spa, const blkptr_t *bp) +{ + int i; + + if (!DMU_OT_IS_VALID(BP_GET_TYPE(bp))) { + zfs_panic_recover("blkptr at %p has invalid TYPE %llu", + bp, (longlong_t)BP_GET_TYPE(bp)); + } + if (BP_GET_CHECKSUM(bp) >= ZIO_CHECKSUM_FUNCTIONS || + BP_GET_CHECKSUM(bp) <= ZIO_CHECKSUM_ON) { + zfs_panic_recover("blkptr at %p has invalid CHECKSUM %llu", + bp, (longlong_t)BP_GET_CHECKSUM(bp)); + } + if (BP_GET_COMPRESS(bp) >= ZIO_COMPRESS_FUNCTIONS || + BP_GET_COMPRESS(bp) <= ZIO_COMPRESS_ON) { + zfs_panic_recover("blkptr at %p has invalid COMPRESS %llu", + bp, (longlong_t)BP_GET_COMPRESS(bp)); + } + if (BP_GET_LSIZE(bp) > SPA_MAXBLOCKSIZE) { + zfs_panic_recover("blkptr at %p has invalid LSIZE %llu", + bp, (longlong_t)BP_GET_LSIZE(bp)); + } + if (BP_GET_PSIZE(bp) > SPA_MAXBLOCKSIZE) { + zfs_panic_recover("blkptr at %p has invalid PSIZE %llu", + bp, (longlong_t)BP_GET_PSIZE(bp)); + } + + if (BP_IS_EMBEDDED(bp)) { + if (BPE_GET_ETYPE(bp) > NUM_BP_EMBEDDED_TYPES) { + zfs_panic_recover("blkptr at %p has invalid ETYPE %llu", + bp, (longlong_t)BPE_GET_ETYPE(bp)); + } + } + + /* + * Pool-specific checks. + * + * Note: it would be nice to verify that the blk_birth and + * BP_PHYSICAL_BIRTH() are not too large. However, spa_freeze() + * allows the birth time of log blocks (and dmu_sync()-ed blocks + * that are in the log) to be arbitrarily large. + */ + for (i = 0; i < BP_GET_NDVAS(bp); i++) { + uint64_t vdevid = DVA_GET_VDEV(&bp->blk_dva[i]); + vdev_t *vd; + uint64_t offset, asize; + if (vdevid >= spa->spa_root_vdev->vdev_children) { + zfs_panic_recover("blkptr at %p DVA %u has invalid " + "VDEV %llu", + bp, i, (longlong_t)vdevid); + } + vd = spa->spa_root_vdev->vdev_child[vdevid]; + if (vd == NULL) { + zfs_panic_recover("blkptr at %p DVA %u has invalid " + "VDEV %llu", + bp, i, (longlong_t)vdevid); + } + if (vd->vdev_ops == &vdev_hole_ops) { + zfs_panic_recover("blkptr at %p DVA %u has hole " + "VDEV %llu", + bp, i, (longlong_t)vdevid); + + } + if (vd->vdev_ops == &vdev_missing_ops) { + /* + * "missing" vdevs are valid during import, but we + * don't have their detailed info (e.g. asize), so + * we can't perform any more checks on them. + */ + continue; + } + offset = DVA_GET_OFFSET(&bp->blk_dva[i]); + asize = DVA_GET_ASIZE(&bp->blk_dva[i]); + if (BP_IS_GANG(bp)) + asize = vdev_psize_to_asize(vd, SPA_GANGBLOCKSIZE); + if (offset + asize > vd->vdev_asize) { + zfs_panic_recover("blkptr at %p DVA %u has invalid " + "OFFSET %llu", + bp, i, (longlong_t)offset); + } + } +} + +zio_t * +zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, + void *data, uint64_t size, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb) +{ + zio_t *zio; + + zfs_blkptr_verify(spa, bp); + + zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp, + data, size, done, private, + ZIO_TYPE_READ, priority, flags, NULL, 0, zb, + ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ? + ZIO_DDT_CHILD_READ_PIPELINE : ZIO_READ_PIPELINE); + + return (zio); +} + +zio_t * +zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, + void *data, uint64_t size, const zio_prop_t *zp, + zio_done_func_t *ready, zio_done_func_t *physdone, zio_done_func_t *done, + void *private, + zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb) +{ + zio_t *zio; + + ASSERT(zp->zp_checksum >= ZIO_CHECKSUM_OFF && + zp->zp_checksum < ZIO_CHECKSUM_FUNCTIONS && + zp->zp_compress >= ZIO_COMPRESS_OFF && + zp->zp_compress < ZIO_COMPRESS_FUNCTIONS && + DMU_OT_IS_VALID(zp->zp_type) && + zp->zp_level < 32 && + zp->zp_copies > 0 && + zp->zp_copies <= spa_max_replication(spa)); + + zio = zio_create(pio, spa, txg, bp, data, size, done, private, + ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb, + ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ? + ZIO_DDT_CHILD_WRITE_PIPELINE : ZIO_WRITE_PIPELINE); + + zio->io_ready = ready; + zio->io_physdone = physdone; + zio->io_prop = *zp; + + /* + * Data can be NULL if we are going to call zio_write_override() to + * provide the already-allocated BP. But we may need the data to + * verify a dedup hit (if requested). In this case, don't try to + * dedup (just take the already-allocated BP verbatim). + */ + if (data == NULL && zio->io_prop.zp_dedup_verify) { + zio->io_prop.zp_dedup = zio->io_prop.zp_dedup_verify = B_FALSE; + } + + return (zio); +} + +zio_t * +zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, void *data, + uint64_t size, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, zbookmark_phys_t *zb) +{ + zio_t *zio; + + zio = zio_create(pio, spa, txg, bp, data, size, done, private, + ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb, + ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE); + + return (zio); +} + +void +zio_write_override(zio_t *zio, blkptr_t *bp, int copies, boolean_t nopwrite) +{ + ASSERT(zio->io_type == ZIO_TYPE_WRITE); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(zio->io_stage == ZIO_STAGE_OPEN); + ASSERT(zio->io_txg == spa_syncing_txg(zio->io_spa)); + + /* + * We must reset the io_prop to match the values that existed + * when the bp was first written by dmu_sync() keeping in mind + * that nopwrite and dedup are mutually exclusive. + */ + zio->io_prop.zp_dedup = nopwrite ? B_FALSE : zio->io_prop.zp_dedup; + zio->io_prop.zp_nopwrite = nopwrite; + zio->io_prop.zp_copies = copies; + zio->io_bp_override = bp; +} + +void +zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp) +{ + + /* + * The check for EMBEDDED is a performance optimization. We + * process the free here (by ignoring it) rather than + * putting it on the list and then processing it in zio_free_sync(). + */ + if (BP_IS_EMBEDDED(bp)) + return; + metaslab_check_free(spa, bp); + + /* + * Frees that are for the currently-syncing txg, are not going to be + * deferred, and which will not need to do a read (i.e. not GANG or + * DEDUP), can be processed immediately. Otherwise, put them on the + * in-memory list for later processing. + */ + if (BP_IS_GANG(bp) || BP_GET_DEDUP(bp) || + txg != spa->spa_syncing_txg || + spa_sync_pass(spa) >= zfs_sync_pass_deferred_free) { + bplist_append(&spa->spa_free_bplist[txg & TXG_MASK], bp); + } else { + VERIFY0(zio_wait(zio_free_sync(NULL, spa, txg, bp, 0))); + } +} + +zio_t * +zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, + enum zio_flag flags) +{ + zio_t *zio; + enum zio_stage stage = ZIO_FREE_PIPELINE; + + ASSERT(!BP_IS_HOLE(bp)); + ASSERT(spa_syncing_txg(spa) == txg); + ASSERT(spa_sync_pass(spa) < zfs_sync_pass_deferred_free); + + if (BP_IS_EMBEDDED(bp)) + return (zio_null(pio, spa, NULL, NULL, NULL, 0)); + + metaslab_check_free(spa, bp); + arc_freed(spa, bp); + + /* + * GANG and DEDUP blocks can induce a read (for the gang block header, + * or the DDT), so issue them asynchronously so that this thread is + * not tied up. + */ + if (BP_IS_GANG(bp) || BP_GET_DEDUP(bp)) + stage |= ZIO_STAGE_ISSUE_ASYNC; + + zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), + NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_NOW, flags, + NULL, 0, NULL, ZIO_STAGE_OPEN, stage); + + return (zio); +} + +zio_t * +zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, + zio_done_func_t *done, void *private, enum zio_flag flags) +{ + zio_t *zio; + + dprintf_bp(bp, "claiming in txg %llu", txg); + + if (BP_IS_EMBEDDED(bp)) + return (zio_null(pio, spa, NULL, NULL, NULL, 0)); + + /* + * A claim is an allocation of a specific block. Claims are needed + * to support immediate writes in the intent log. The issue is that + * immediate writes contain committed data, but in a txg that was + * *not* committed. Upon opening the pool after an unclean shutdown, + * the intent log claims all blocks that contain immediate write data + * so that the SPA knows they're in use. + * + * All claims *must* be resolved in the first txg -- before the SPA + * starts allocating blocks -- so that nothing is allocated twice. + * If txg == 0 we just verify that the block is claimable. + */ + ASSERT3U(spa->spa_uberblock.ub_rootbp.blk_birth, <, spa_first_txg(spa)); + ASSERT(txg == spa_first_txg(spa) || txg == 0); + ASSERT(!BP_GET_DEDUP(bp) || !spa_writeable(spa)); /* zdb(1M) */ + + zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), + done, private, ZIO_TYPE_CLAIM, ZIO_PRIORITY_NOW, flags, + NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_CLAIM_PIPELINE); + + return (zio); +} + +zio_t * +zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, + zio_done_func_t *done, void *private, enum zio_flag flags) +{ + zio_t *zio; + int c; + + if (vd->vdev_children == 0) { + zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, + ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL, + ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE); + + zio->io_cmd = cmd; + } else { + zio = zio_null(pio, spa, NULL, NULL, NULL, flags); + + for (c = 0; c < vd->vdev_children; c++) + zio_nowait(zio_ioctl(zio, spa, vd->vdev_child[c], cmd, + done, private, flags)); + } + + return (zio); +} + +zio_t * +zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, + void *data, int checksum, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, boolean_t labels) +{ + zio_t *zio; + + ASSERT(vd->vdev_children == 0); + ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE || + offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE); + ASSERT3U(offset + size, <=, vd->vdev_psize); + + zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, + ZIO_TYPE_READ, priority, flags | ZIO_FLAG_PHYSICAL, vd, offset, + NULL, ZIO_STAGE_OPEN, ZIO_READ_PHYS_PIPELINE); + + zio->io_prop.zp_checksum = checksum; + + return (zio); +} + +zio_t * +zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, + void *data, int checksum, zio_done_func_t *done, void *private, + zio_priority_t priority, enum zio_flag flags, boolean_t labels) +{ + zio_t *zio; + + ASSERT(vd->vdev_children == 0); + ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE || + offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE); + ASSERT3U(offset + size, <=, vd->vdev_psize); + + zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, + ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_PHYSICAL, vd, offset, + NULL, ZIO_STAGE_OPEN, ZIO_WRITE_PHYS_PIPELINE); + + zio->io_prop.zp_checksum = checksum; + + if (zio_checksum_table[checksum].ci_eck) { + /* + * zec checksums are necessarily destructive -- they modify + * the end of the write buffer to hold the verifier/checksum. + * Therefore, we must make a local copy in case the data is + * being written to multiple places in parallel. + */ + void *wbuf = zio_buf_alloc(size); + bcopy(data, wbuf, size); + zio_push_transform(zio, wbuf, size, size, NULL); + } + + return (zio); +} + +/* + * Create a child I/O to do some work for us. + */ +zio_t * +zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset, + void *data, uint64_t size, int type, zio_priority_t priority, + enum zio_flag flags, zio_done_func_t *done, void *private) +{ + enum zio_stage pipeline = ZIO_VDEV_CHILD_PIPELINE; + zio_t *zio; + + ASSERT(vd->vdev_parent == + (pio->io_vd ? pio->io_vd : pio->io_spa->spa_root_vdev)); + + if (type == ZIO_TYPE_READ && bp != NULL) { + /* + * If we have the bp, then the child should perform the + * checksum and the parent need not. This pushes error + * detection as close to the leaves as possible and + * eliminates redundant checksums in the interior nodes. + */ + pipeline |= ZIO_STAGE_CHECKSUM_VERIFY; + pio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY; + } + + if (vd->vdev_children == 0) + offset += VDEV_LABEL_START_SIZE; + + flags |= ZIO_VDEV_CHILD_FLAGS(pio) | ZIO_FLAG_DONT_PROPAGATE; + + /* + * If we've decided to do a repair, the write is not speculative -- + * even if the original read was. + */ + if (flags & ZIO_FLAG_IO_REPAIR) + flags &= ~ZIO_FLAG_SPECULATIVE; + + zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, + done, private, type, priority, flags, vd, offset, &pio->io_bookmark, + ZIO_STAGE_VDEV_IO_START >> 1, pipeline); + + zio->io_physdone = pio->io_physdone; + if (vd->vdev_ops->vdev_op_leaf && zio->io_logical != NULL) + zio->io_logical->io_phys_children++; + + return (zio); +} + +zio_t * +zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, void *data, uint64_t size, + int type, zio_priority_t priority, enum zio_flag flags, + zio_done_func_t *done, void *private) +{ + zio_t *zio; + + ASSERT(vd->vdev_ops->vdev_op_leaf); + + zio = zio_create(NULL, vd->vdev_spa, 0, NULL, + data, size, done, private, type, priority, + flags | ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_RETRY | ZIO_FLAG_DELEGATED, + vd, offset, NULL, + ZIO_STAGE_VDEV_IO_START >> 1, ZIO_VDEV_CHILD_PIPELINE); + + return (zio); +} + +void +zio_flush(zio_t *zio, vdev_t *vd) +{ + zio_nowait(zio_ioctl(zio, zio->io_spa, vd, DKIOCFLUSHWRITECACHE, + NULL, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_DONT_RETRY)); +} + +void +zio_shrink(zio_t *zio, uint64_t size) +{ + ASSERT(zio->io_executor == NULL); + ASSERT(zio->io_orig_size == zio->io_size); + ASSERT(size <= zio->io_size); + + /* + * We don't shrink for raidz because of problems with the + * reconstruction when reading back less than the block size. + * Note, BP_IS_RAIDZ() assumes no compression. + */ + ASSERT(BP_GET_COMPRESS(zio->io_bp) == ZIO_COMPRESS_OFF); + if (!BP_IS_RAIDZ(zio->io_bp)) + zio->io_orig_size = zio->io_size = size; +} + +/* + * ========================================================================== + * Prepare to read and write logical blocks + * ========================================================================== + */ + +static int +zio_read_bp_init(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + + if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF && + zio->io_child_type == ZIO_CHILD_LOGICAL && + !(zio->io_flags & ZIO_FLAG_RAW)) { + uint64_t psize = + BP_IS_EMBEDDED(bp) ? BPE_GET_PSIZE(bp) : BP_GET_PSIZE(bp); + void *cbuf = zio_buf_alloc(psize); + + zio_push_transform(zio, cbuf, psize, psize, zio_decompress); + } + + if (BP_IS_EMBEDDED(bp) && BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA) { + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + decode_embedded_bp_compressed(bp, zio->io_data); + } else { + ASSERT(!BP_IS_EMBEDDED(bp)); + } + + if (!DMU_OT_IS_METADATA(BP_GET_TYPE(bp)) && BP_GET_LEVEL(bp) == 0) + zio->io_flags |= ZIO_FLAG_DONT_CACHE; + + if (BP_GET_TYPE(bp) == DMU_OT_DDT_ZAP) + zio->io_flags |= ZIO_FLAG_DONT_CACHE; + + if (BP_GET_DEDUP(bp) && zio->io_child_type == ZIO_CHILD_LOGICAL) + zio->io_pipeline = ZIO_DDT_READ_PIPELINE; + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_write_bp_init(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + zio_prop_t *zp = &zio->io_prop; + enum zio_compress compress = zp->zp_compress; + blkptr_t *bp = zio->io_bp; + uint64_t lsize = zio->io_size; + uint64_t psize = lsize; + int pass = 1; + + /* + * If our children haven't all reached the ready stage, + * wait for them and then repeat this pipeline stage. + */ + if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_READY) || + zio_wait_for_children(zio, ZIO_CHILD_LOGICAL, ZIO_WAIT_READY)) + return (ZIO_PIPELINE_STOP); + + if (!IO_IS_ALLOCATING(zio)) + return (ZIO_PIPELINE_CONTINUE); + + ASSERT(zio->io_child_type != ZIO_CHILD_DDT); + + if (zio->io_bp_override) { + ASSERT(bp->blk_birth != zio->io_txg); + ASSERT(BP_GET_DEDUP(zio->io_bp_override) == 0); + + *bp = *zio->io_bp_override; + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + + if (BP_IS_EMBEDDED(bp)) + return (ZIO_PIPELINE_CONTINUE); + + /* + * If we've been overridden and nopwrite is set then + * set the flag accordingly to indicate that a nopwrite + * has already occurred. + */ + if (!BP_IS_HOLE(bp) && zp->zp_nopwrite) { + ASSERT(!zp->zp_dedup); + zio->io_flags |= ZIO_FLAG_NOPWRITE; + return (ZIO_PIPELINE_CONTINUE); + } + + ASSERT(!zp->zp_nopwrite); + + if (BP_IS_HOLE(bp) || !zp->zp_dedup) + return (ZIO_PIPELINE_CONTINUE); + + ASSERT(zio_checksum_table[zp->zp_checksum].ci_dedup || + zp->zp_dedup_verify); + + if (BP_GET_CHECKSUM(bp) == zp->zp_checksum) { + BP_SET_DEDUP(bp, 1); + zio->io_pipeline |= ZIO_STAGE_DDT_WRITE; + return (ZIO_PIPELINE_CONTINUE); + } + } + + if (!BP_IS_HOLE(bp) && bp->blk_birth == zio->io_txg) { + /* + * We're rewriting an existing block, which means we're + * working on behalf of spa_sync(). For spa_sync() to + * converge, it must eventually be the case that we don't + * have to allocate new blocks. But compression changes + * the blocksize, which forces a reallocate, and makes + * convergence take longer. Therefore, after the first + * few passes, stop compressing to ensure convergence. + */ + pass = spa_sync_pass(spa); + + ASSERT(zio->io_txg == spa_syncing_txg(spa)); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(!BP_GET_DEDUP(bp)); + + if (pass >= zfs_sync_pass_dont_compress) + compress = ZIO_COMPRESS_OFF; + + /* Make sure someone doesn't change their mind on overwrites */ + ASSERT(BP_IS_EMBEDDED(bp) || MIN(zp->zp_copies + BP_IS_GANG(bp), + spa_max_replication(spa)) == BP_GET_NDVAS(bp)); + } + + if (compress != ZIO_COMPRESS_OFF) { + void *cbuf = zio_buf_alloc(lsize); + psize = zio_compress_data(compress, zio->io_data, cbuf, lsize); + if (psize == 0 || psize == lsize) { + compress = ZIO_COMPRESS_OFF; + zio_buf_free(cbuf, lsize); + } else if (!zp->zp_dedup && psize <= BPE_PAYLOAD_SIZE && + zp->zp_level == 0 && !DMU_OT_HAS_FILL(zp->zp_type) && + spa_feature_is_enabled(spa, SPA_FEATURE_EMBEDDED_DATA)) { + encode_embedded_bp_compressed(bp, + cbuf, compress, lsize, psize); + BPE_SET_ETYPE(bp, BP_EMBEDDED_TYPE_DATA); + BP_SET_TYPE(bp, zio->io_prop.zp_type); + BP_SET_LEVEL(bp, zio->io_prop.zp_level); + zio_buf_free(cbuf, lsize); + bp->blk_birth = zio->io_txg; + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + ASSERT(spa_feature_is_active(spa, + SPA_FEATURE_EMBEDDED_DATA)); + return (ZIO_PIPELINE_CONTINUE); + } else { + /* + * Round up compressed size up to the ashift + * of the smallest-ashift device, and zero the tail. + * This ensures that the compressed size of the BP + * (and thus compressratio property) are correct, + * in that we charge for the padding used to fill out + * the last sector. + */ + size_t rounded; + + ASSERT3U(spa->spa_min_ashift, >=, SPA_MINBLOCKSHIFT); + + rounded = (size_t)P2ROUNDUP(psize, + 1ULL << spa->spa_min_ashift); + if (rounded >= lsize) { + compress = ZIO_COMPRESS_OFF; + zio_buf_free(cbuf, lsize); + psize = lsize; + } else { + bzero((char *)cbuf + psize, rounded - psize); + psize = rounded; + zio_push_transform(zio, cbuf, + psize, lsize, NULL); + } + } + } + + /* + * The final pass of spa_sync() must be all rewrites, but the first + * few passes offer a trade-off: allocating blocks defers convergence, + * but newly allocated blocks are sequential, so they can be written + * to disk faster. Therefore, we allow the first few passes of + * spa_sync() to allocate new blocks, but force rewrites after that. + * There should only be a handful of blocks after pass 1 in any case. + */ + if (!BP_IS_HOLE(bp) && bp->blk_birth == zio->io_txg && + BP_GET_PSIZE(bp) == psize && + pass >= zfs_sync_pass_rewrite) { + enum zio_stage gang_stages = zio->io_pipeline & ZIO_GANG_STAGES; + ASSERT(psize != 0); + zio->io_pipeline = ZIO_REWRITE_PIPELINE | gang_stages; + zio->io_flags |= ZIO_FLAG_IO_REWRITE; + } else { + BP_ZERO(bp); + zio->io_pipeline = ZIO_WRITE_PIPELINE; + } + + if (psize == 0) { + if (zio->io_bp_orig.blk_birth != 0 && + spa_feature_is_active(spa, SPA_FEATURE_HOLE_BIRTH)) { + BP_SET_LSIZE(bp, lsize); + BP_SET_TYPE(bp, zp->zp_type); + BP_SET_LEVEL(bp, zp->zp_level); + BP_SET_BIRTH(bp, zio->io_txg, 0); + } + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + } else { + ASSERT(zp->zp_checksum != ZIO_CHECKSUM_GANG_HEADER); + BP_SET_LSIZE(bp, lsize); + BP_SET_TYPE(bp, zp->zp_type); + BP_SET_LEVEL(bp, zp->zp_level); + BP_SET_PSIZE(bp, psize); + BP_SET_COMPRESS(bp, compress); + BP_SET_CHECKSUM(bp, zp->zp_checksum); + BP_SET_DEDUP(bp, zp->zp_dedup); + BP_SET_BYTEORDER(bp, ZFS_HOST_BYTEORDER); + if (zp->zp_dedup) { + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE)); + zio->io_pipeline = ZIO_DDT_WRITE_PIPELINE; + } + if (zp->zp_nopwrite) { + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE)); + zio->io_pipeline |= ZIO_STAGE_NOP_WRITE; + } + } + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_free_bp_init(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + + if (zio->io_child_type == ZIO_CHILD_LOGICAL) { + if (BP_GET_DEDUP(bp)) + zio->io_pipeline = ZIO_DDT_FREE_PIPELINE; + } + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * ========================================================================== + * Execute the I/O pipeline + * ========================================================================== + */ + +static void +zio_taskq_dispatch(zio_t *zio, zio_taskq_type_t q, boolean_t cutinline) +{ + spa_t *spa = zio->io_spa; + zio_type_t t = zio->io_type; + int flags = (cutinline ? TQ_FRONT : 0); + + /* + * If we're a config writer or a probe, the normal issue and + * interrupt threads may all be blocked waiting for the config lock. + * In this case, select the otherwise-unused taskq for ZIO_TYPE_NULL. + */ + if (zio->io_flags & (ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_PROBE)) + t = ZIO_TYPE_NULL; + + /* + * A similar issue exists for the L2ARC write thread until L2ARC 2.0. + */ + if (t == ZIO_TYPE_WRITE && zio->io_vd && zio->io_vd->vdev_aux) + t = ZIO_TYPE_NULL; + + /* + * If this is a high priority I/O, then use the high priority taskq if + * available. + */ + if (zio->io_priority == ZIO_PRIORITY_NOW && + spa->spa_zio_taskq[t][q + 1].stqs_count != 0) + q++; + + ASSERT3U(q, <, ZIO_TASKQ_TYPES); + + /* + * NB: We are assuming that the zio can only be dispatched + * to a single taskq at a time. It would be a grievous error + * to dispatch the zio to another taskq at the same time. + */ + ASSERT(taskq_empty_ent(&zio->io_tqent)); + spa_taskq_dispatch_ent(spa, t, q, (task_func_t *)zio_execute, zio, + flags, &zio->io_tqent); +} + +static boolean_t +zio_taskq_member(zio_t *zio, zio_taskq_type_t q) +{ + kthread_t *executor = zio->io_executor; + spa_t *spa = zio->io_spa; + zio_type_t t; + + for (t = 0; t < ZIO_TYPES; t++) { + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + uint_t i; + for (i = 0; i < tqs->stqs_count; i++) { + if (taskq_member(tqs->stqs_taskq[i], executor)) + return (B_TRUE); + } + } + + return (B_FALSE); +} + +static int +zio_issue_async(zio_t *zio) +{ + zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE); + + return (ZIO_PIPELINE_STOP); +} + +void +zio_interrupt(zio_t *zio) +{ + zio_taskq_dispatch(zio, ZIO_TASKQ_INTERRUPT, B_FALSE); +} + +/* + * Execute the I/O pipeline until one of the following occurs: + * (1) the I/O completes; (2) the pipeline stalls waiting for + * dependent child I/Os; (3) the I/O issues, so we're waiting + * for an I/O completion interrupt; (4) the I/O is delegated by + * vdev-level caching or aggregation; (5) the I/O is deferred + * due to vdev-level queueing; (6) the I/O is handed off to + * another thread. In all cases, the pipeline stops whenever + * there's no CPU work; it never burns a thread in cv_wait_io(). + * + * There's no locking on io_stage because there's no legitimate way + * for multiple threads to be attempting to process the same I/O. + */ +static zio_pipe_stage_t *zio_pipeline[]; + +/* + * zio_execute() is a wrapper around the static function + * __zio_execute() so that we can force __zio_execute() to be + * inlined. This reduces stack overhead which is important + * because __zio_execute() is called recursively in several zio + * code paths. zio_execute() itself cannot be inlined because + * it is externally visible. + */ +void +zio_execute(zio_t *zio) +{ + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + __zio_execute(zio); + spl_fstrans_unmark(cookie); +} + +__attribute__((always_inline)) +static inline void +__zio_execute(zio_t *zio) +{ + zio->io_executor = curthread; + + while (zio->io_stage < ZIO_STAGE_DONE) { + enum zio_stage pipeline = zio->io_pipeline; + enum zio_stage stage = zio->io_stage; + dsl_pool_t *dp; + boolean_t cut; + int rv; + + ASSERT(!MUTEX_HELD(&zio->io_lock)); + ASSERT(ISP2(stage)); + ASSERT(zio->io_stall == NULL); + + do { + stage <<= 1; + } while ((stage & pipeline) == 0); + + ASSERT(stage <= ZIO_STAGE_DONE); + + dp = spa_get_dsl(zio->io_spa); + cut = (stage == ZIO_STAGE_VDEV_IO_START) ? + zio_requeue_io_start_cut_in_line : B_FALSE; + + /* + * If we are in interrupt context and this pipeline stage + * will grab a config lock that is held across I/O, + * or may wait for an I/O that needs an interrupt thread + * to complete, issue async to avoid deadlock. + * + * For VDEV_IO_START, we cut in line so that the io will + * be sent to disk promptly. + */ + if ((stage & ZIO_BLOCKING_STAGES) && zio->io_vd == NULL && + zio_taskq_member(zio, ZIO_TASKQ_INTERRUPT)) { + zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, cut); + return; + } + + /* + * If we executing in the context of the tx_sync_thread, + * or we are performing pool initialization outside of a + * zio_taskq[ZIO_TASKQ_ISSUE|ZIO_TASKQ_ISSUE_HIGH] context. + * Then issue the zio asynchronously to minimize stack usage + * for these deep call paths. + */ + if ((dp && curthread == dp->dp_tx.tx_sync_thread) || + (dp && spa_is_initializing(dp->dp_spa) && + !zio_taskq_member(zio, ZIO_TASKQ_ISSUE) && + !zio_taskq_member(zio, ZIO_TASKQ_ISSUE_HIGH))) { + zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, cut); + return; + } + + zio->io_stage = stage; + rv = zio_pipeline[highbit64(stage) - 1](zio); + + if (rv == ZIO_PIPELINE_STOP) + return; + + ASSERT(rv == ZIO_PIPELINE_CONTINUE); + } +} + + +/* + * ========================================================================== + * Initiate I/O, either sync or async + * ========================================================================== + */ +int +zio_wait(zio_t *zio) +{ + int error; + + ASSERT(zio->io_stage == ZIO_STAGE_OPEN); + ASSERT(zio->io_executor == NULL); + + zio->io_waiter = curthread; + + __zio_execute(zio); + + mutex_enter(&zio->io_lock); + while (zio->io_executor != NULL) + cv_wait_io(&zio->io_cv, &zio->io_lock); + mutex_exit(&zio->io_lock); + + error = zio->io_error; + zio_destroy(zio); + + return (error); +} + +void +zio_nowait(zio_t *zio) +{ + ASSERT(zio->io_executor == NULL); + + if (zio->io_child_type == ZIO_CHILD_LOGICAL && + zio_unique_parent(zio) == NULL) { + zio_t *pio; + + /* + * This is a logical async I/O with no parent to wait for it. + * We add it to the spa_async_root_zio "Godfather" I/O which + * will ensure they complete prior to unloading the pool. + */ + spa_t *spa = zio->io_spa; + kpreempt_disable(); + pio = spa->spa_async_zio_root[CPU_SEQID]; + kpreempt_enable(); + + zio_add_child(pio, zio); + } + + __zio_execute(zio); +} + +/* + * ========================================================================== + * Reexecute or suspend/resume failed I/O + * ========================================================================== + */ + +static void +zio_reexecute(zio_t *pio) +{ + zio_t *cio, *cio_next; + int c, w; + + ASSERT(pio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(pio->io_orig_stage == ZIO_STAGE_OPEN); + ASSERT(pio->io_gang_leader == NULL); + ASSERT(pio->io_gang_tree == NULL); + + pio->io_flags = pio->io_orig_flags; + pio->io_stage = pio->io_orig_stage; + pio->io_pipeline = pio->io_orig_pipeline; + pio->io_reexecute = 0; + pio->io_flags |= ZIO_FLAG_REEXECUTED; + pio->io_error = 0; + for (w = 0; w < ZIO_WAIT_TYPES; w++) + pio->io_state[w] = 0; + for (c = 0; c < ZIO_CHILD_TYPES; c++) + pio->io_child_error[c] = 0; + + if (IO_IS_ALLOCATING(pio)) + BP_ZERO(pio->io_bp); + + /* + * As we reexecute pio's children, new children could be created. + * New children go to the head of pio's io_child_list, however, + * so we will (correctly) not reexecute them. The key is that + * the remainder of pio's io_child_list, from 'cio_next' onward, + * cannot be affected by any side effects of reexecuting 'cio'. + */ + for (cio = zio_walk_children(pio); cio != NULL; cio = cio_next) { + cio_next = zio_walk_children(pio); + mutex_enter(&pio->io_lock); + for (w = 0; w < ZIO_WAIT_TYPES; w++) + pio->io_children[cio->io_child_type][w]++; + mutex_exit(&pio->io_lock); + zio_reexecute(cio); + } + + /* + * Now that all children have been reexecuted, execute the parent. + * We don't reexecute "The Godfather" I/O here as it's the + * responsibility of the caller to wait on him. + */ + if (!(pio->io_flags & ZIO_FLAG_GODFATHER)) + __zio_execute(pio); +} + +void +zio_suspend(spa_t *spa, zio_t *zio) +{ + if (spa_get_failmode(spa) == ZIO_FAILURE_MODE_PANIC) + fm_panic("Pool '%s' has encountered an uncorrectable I/O " + "failure and the failure mode property for this pool " + "is set to panic.", spa_name(spa)); + + cmn_err(CE_WARN, "Pool '%s' has encountered an uncorrectable I/O " + "failure and has been suspended.\n", spa_name(spa)); + + zfs_ereport_post(FM_EREPORT_ZFS_IO_FAILURE, spa, NULL, NULL, 0, 0); + + mutex_enter(&spa->spa_suspend_lock); + + if (spa->spa_suspend_zio_root == NULL) + spa->spa_suspend_zio_root = zio_root(spa, NULL, NULL, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE | + ZIO_FLAG_GODFATHER); + + spa->spa_suspended = B_TRUE; + + if (zio != NULL) { + ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER)); + ASSERT(zio != spa->spa_suspend_zio_root); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + ASSERT(zio_unique_parent(zio) == NULL); + ASSERT(zio->io_stage == ZIO_STAGE_DONE); + zio_add_child(spa->spa_suspend_zio_root, zio); + } + + mutex_exit(&spa->spa_suspend_lock); +} + +int +zio_resume(spa_t *spa) +{ + zio_t *pio; + + /* + * Reexecute all previously suspended i/o. + */ + mutex_enter(&spa->spa_suspend_lock); + spa->spa_suspended = B_FALSE; + cv_broadcast(&spa->spa_suspend_cv); + pio = spa->spa_suspend_zio_root; + spa->spa_suspend_zio_root = NULL; + mutex_exit(&spa->spa_suspend_lock); + + if (pio == NULL) + return (0); + + zio_reexecute(pio); + return (zio_wait(pio)); +} + +void +zio_resume_wait(spa_t *spa) +{ + mutex_enter(&spa->spa_suspend_lock); + while (spa_suspended(spa)) + cv_wait(&spa->spa_suspend_cv, &spa->spa_suspend_lock); + mutex_exit(&spa->spa_suspend_lock); +} + +/* + * ========================================================================== + * Gang blocks. + * + * A gang block is a collection of small blocks that looks to the DMU + * like one large block. When zio_dva_allocate() cannot find a block + * of the requested size, due to either severe fragmentation or the pool + * being nearly full, it calls zio_write_gang_block() to construct the + * block from smaller fragments. + * + * A gang block consists of a gang header (zio_gbh_phys_t) and up to + * three (SPA_GBH_NBLKPTRS) gang members. The gang header is just like + * an indirect block: it's an array of block pointers. It consumes + * only one sector and hence is allocatable regardless of fragmentation. + * The gang header's bps point to its gang members, which hold the data. + * + * Gang blocks are self-checksumming, using the bp's + * as the verifier to ensure uniqueness of the SHA256 checksum. + * Critically, the gang block bp's blk_cksum is the checksum of the data, + * not the gang header. This ensures that data block signatures (needed for + * deduplication) are independent of how the block is physically stored. + * + * Gang blocks can be nested: a gang member may itself be a gang block. + * Thus every gang block is a tree in which root and all interior nodes are + * gang headers, and the leaves are normal blocks that contain user data. + * The root of the gang tree is called the gang leader. + * + * To perform any operation (read, rewrite, free, claim) on a gang block, + * zio_gang_assemble() first assembles the gang tree (minus data leaves) + * in the io_gang_tree field of the original logical i/o by recursively + * reading the gang leader and all gang headers below it. This yields + * an in-core tree containing the contents of every gang header and the + * bps for every constituent of the gang block. + * + * With the gang tree now assembled, zio_gang_issue() just walks the gang tree + * and invokes a callback on each bp. To free a gang block, zio_gang_issue() + * calls zio_free_gang() -- a trivial wrapper around zio_free() -- for each bp. + * zio_claim_gang() provides a similarly trivial wrapper for zio_claim(). + * zio_read_gang() is a wrapper around zio_read() that omits reading gang + * headers, since we already have those in io_gang_tree. zio_rewrite_gang() + * performs a zio_rewrite() of the data or, for gang headers, a zio_rewrite() + * of the gang header plus zio_checksum_compute() of the data to update the + * gang header's blk_cksum as described above. + * + * The two-phase assemble/issue model solves the problem of partial failure -- + * what if you'd freed part of a gang block but then couldn't read the + * gang header for another part? Assembling the entire gang tree first + * ensures that all the necessary gang header I/O has succeeded before + * starting the actual work of free, claim, or write. Once the gang tree + * is assembled, free and claim are in-memory operations that cannot fail. + * + * In the event that a gang write fails, zio_dva_unallocate() walks the + * gang tree to immediately free (i.e. insert back into the space map) + * everything we've allocated. This ensures that we don't get ENOSPC + * errors during repeated suspend/resume cycles due to a flaky device. + * + * Gang rewrites only happen during sync-to-convergence. If we can't assemble + * the gang tree, we won't modify the block, so we can safely defer the free + * (knowing that the block is still intact). If we *can* assemble the gang + * tree, then even if some of the rewrites fail, zio_dva_unallocate() will free + * each constituent bp and we can allocate a new block on the next sync pass. + * + * In all cases, the gang tree allows complete recovery from partial failure. + * ========================================================================== + */ + +static zio_t * +zio_read_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) +{ + if (gn != NULL) + return (pio); + + return (zio_read(pio, pio->io_spa, bp, data, BP_GET_PSIZE(bp), + NULL, NULL, pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), + &pio->io_bookmark)); +} + +zio_t * +zio_rewrite_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) +{ + zio_t *zio; + + if (gn != NULL) { + zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, + gn->gn_gbh, SPA_GANGBLOCKSIZE, NULL, NULL, pio->io_priority, + ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); + /* + * As we rewrite each gang header, the pipeline will compute + * a new gang block header checksum for it; but no one will + * compute a new data checksum, so we do that here. The one + * exception is the gang leader: the pipeline already computed + * its data checksum because that stage precedes gang assembly. + * (Presently, nothing actually uses interior data checksums; + * this is just good hygiene.) + */ + if (gn != pio->io_gang_leader->io_gang_tree) { + zio_checksum_compute(zio, BP_GET_CHECKSUM(bp), + data, BP_GET_PSIZE(bp)); + } + /* + * If we are here to damage data for testing purposes, + * leave the GBH alone so that we can detect the damage. + */ + if (pio->io_gang_leader->io_flags & ZIO_FLAG_INDUCE_DAMAGE) + zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES; + } else { + zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, + data, BP_GET_PSIZE(bp), NULL, NULL, pio->io_priority, + ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); + } + + return (zio); +} + +/* ARGSUSED */ +zio_t * +zio_free_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) +{ + return (zio_free_sync(pio, pio->io_spa, pio->io_txg, bp, + ZIO_GANG_CHILD_FLAGS(pio))); +} + +/* ARGSUSED */ +zio_t * +zio_claim_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) +{ + return (zio_claim(pio, pio->io_spa, pio->io_txg, bp, + NULL, NULL, ZIO_GANG_CHILD_FLAGS(pio))); +} + +static zio_gang_issue_func_t *zio_gang_issue_func[ZIO_TYPES] = { + NULL, + zio_read_gang, + zio_rewrite_gang, + zio_free_gang, + zio_claim_gang, + NULL +}; + +static void zio_gang_tree_assemble_done(zio_t *zio); + +static zio_gang_node_t * +zio_gang_node_alloc(zio_gang_node_t **gnpp) +{ + zio_gang_node_t *gn; + + ASSERT(*gnpp == NULL); + + gn = kmem_zalloc(sizeof (*gn), KM_SLEEP); + gn->gn_gbh = zio_buf_alloc(SPA_GANGBLOCKSIZE); + *gnpp = gn; + + return (gn); +} + +static void +zio_gang_node_free(zio_gang_node_t **gnpp) +{ + zio_gang_node_t *gn = *gnpp; + int g; + + for (g = 0; g < SPA_GBH_NBLKPTRS; g++) + ASSERT(gn->gn_child[g] == NULL); + + zio_buf_free(gn->gn_gbh, SPA_GANGBLOCKSIZE); + kmem_free(gn, sizeof (*gn)); + *gnpp = NULL; +} + +static void +zio_gang_tree_free(zio_gang_node_t **gnpp) +{ + zio_gang_node_t *gn = *gnpp; + int g; + + if (gn == NULL) + return; + + for (g = 0; g < SPA_GBH_NBLKPTRS; g++) + zio_gang_tree_free(&gn->gn_child[g]); + + zio_gang_node_free(gnpp); +} + +static void +zio_gang_tree_assemble(zio_t *gio, blkptr_t *bp, zio_gang_node_t **gnpp) +{ + zio_gang_node_t *gn = zio_gang_node_alloc(gnpp); + + ASSERT(gio->io_gang_leader == gio); + ASSERT(BP_IS_GANG(bp)); + + zio_nowait(zio_read(gio, gio->io_spa, bp, gn->gn_gbh, + SPA_GANGBLOCKSIZE, zio_gang_tree_assemble_done, gn, + gio->io_priority, ZIO_GANG_CHILD_FLAGS(gio), &gio->io_bookmark)); +} + +static void +zio_gang_tree_assemble_done(zio_t *zio) +{ + zio_t *gio = zio->io_gang_leader; + zio_gang_node_t *gn = zio->io_private; + blkptr_t *bp = zio->io_bp; + int g; + + ASSERT(gio == zio_unique_parent(zio)); + ASSERT(zio->io_child_count == 0); + + if (zio->io_error) + return; + + if (BP_SHOULD_BYTESWAP(bp)) + byteswap_uint64_array(zio->io_data, zio->io_size); + + ASSERT(zio->io_data == gn->gn_gbh); + ASSERT(zio->io_size == SPA_GANGBLOCKSIZE); + ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC); + + for (g = 0; g < SPA_GBH_NBLKPTRS; g++) { + blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g]; + if (!BP_IS_GANG(gbp)) + continue; + zio_gang_tree_assemble(gio, gbp, &gn->gn_child[g]); + } +} + +static void +zio_gang_tree_issue(zio_t *pio, zio_gang_node_t *gn, blkptr_t *bp, void *data) +{ + zio_t *gio = pio->io_gang_leader; + zio_t *zio; + int g; + + ASSERT(BP_IS_GANG(bp) == !!gn); + ASSERT(BP_GET_CHECKSUM(bp) == BP_GET_CHECKSUM(gio->io_bp)); + ASSERT(BP_GET_LSIZE(bp) == BP_GET_PSIZE(bp) || gn == gio->io_gang_tree); + + /* + * If you're a gang header, your data is in gn->gn_gbh. + * If you're a gang member, your data is in 'data' and gn == NULL. + */ + zio = zio_gang_issue_func[gio->io_type](pio, bp, gn, data); + + if (gn != NULL) { + ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC); + + for (g = 0; g < SPA_GBH_NBLKPTRS; g++) { + blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g]; + if (BP_IS_HOLE(gbp)) + continue; + zio_gang_tree_issue(zio, gn->gn_child[g], gbp, data); + data = (char *)data + BP_GET_PSIZE(gbp); + } + } + + if (gn == gio->io_gang_tree) + ASSERT3P((char *)gio->io_data + gio->io_size, ==, data); + + if (zio != pio) + zio_nowait(zio); +} + +static int +zio_gang_assemble(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + + ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == NULL); + ASSERT(zio->io_child_type > ZIO_CHILD_GANG); + + zio->io_gang_leader = zio; + + zio_gang_tree_assemble(zio, bp, &zio->io_gang_tree); + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_gang_issue(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + + if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_DONE)) + return (ZIO_PIPELINE_STOP); + + ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == zio); + ASSERT(zio->io_child_type > ZIO_CHILD_GANG); + + if (zio->io_child_error[ZIO_CHILD_GANG] == 0) + zio_gang_tree_issue(zio, zio->io_gang_tree, bp, zio->io_data); + else + zio_gang_tree_free(&zio->io_gang_tree); + + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + + return (ZIO_PIPELINE_CONTINUE); +} + +static void +zio_write_gang_member_ready(zio_t *zio) +{ + zio_t *pio = zio_unique_parent(zio); + dva_t *cdva = zio->io_bp->blk_dva; + dva_t *pdva = pio->io_bp->blk_dva; + uint64_t asize; + int d; + ASSERTV(zio_t *gio = zio->io_gang_leader); + + if (BP_IS_HOLE(zio->io_bp)) + return; + + ASSERT(BP_IS_HOLE(&zio->io_bp_orig)); + + ASSERT(zio->io_child_type == ZIO_CHILD_GANG); + ASSERT3U(zio->io_prop.zp_copies, ==, gio->io_prop.zp_copies); + ASSERT3U(zio->io_prop.zp_copies, <=, BP_GET_NDVAS(zio->io_bp)); + ASSERT3U(pio->io_prop.zp_copies, <=, BP_GET_NDVAS(pio->io_bp)); + ASSERT3U(BP_GET_NDVAS(zio->io_bp), <=, BP_GET_NDVAS(pio->io_bp)); + + mutex_enter(&pio->io_lock); + for (d = 0; d < BP_GET_NDVAS(zio->io_bp); d++) { + ASSERT(DVA_GET_GANG(&pdva[d])); + asize = DVA_GET_ASIZE(&pdva[d]); + asize += DVA_GET_ASIZE(&cdva[d]); + DVA_SET_ASIZE(&pdva[d], asize); + } + mutex_exit(&pio->io_lock); +} + +static int +zio_write_gang_block(zio_t *pio) +{ + spa_t *spa = pio->io_spa; + blkptr_t *bp = pio->io_bp; + zio_t *gio = pio->io_gang_leader; + zio_t *zio; + zio_gang_node_t *gn, **gnpp; + zio_gbh_phys_t *gbh; + uint64_t txg = pio->io_txg; + uint64_t resid = pio->io_size; + uint64_t lsize; + int copies = gio->io_prop.zp_copies; + int gbh_copies = MIN(copies + 1, spa_max_replication(spa)); + zio_prop_t zp; + int g, error; + + error = metaslab_alloc(spa, spa_normal_class(spa), SPA_GANGBLOCKSIZE, + bp, gbh_copies, txg, pio == gio ? NULL : gio->io_bp, + METASLAB_HINTBP_FAVOR | METASLAB_GANG_HEADER); + if (error) { + pio->io_error = error; + return (ZIO_PIPELINE_CONTINUE); + } + + if (pio == gio) { + gnpp = &gio->io_gang_tree; + } else { + gnpp = pio->io_private; + ASSERT(pio->io_ready == zio_write_gang_member_ready); + } + + gn = zio_gang_node_alloc(gnpp); + gbh = gn->gn_gbh; + bzero(gbh, SPA_GANGBLOCKSIZE); + + /* + * Create the gang header. + */ + zio = zio_rewrite(pio, spa, txg, bp, gbh, SPA_GANGBLOCKSIZE, NULL, NULL, + pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); + + /* + * Create and nowait the gang children. + */ + for (g = 0; resid != 0; resid -= lsize, g++) { + lsize = P2ROUNDUP(resid / (SPA_GBH_NBLKPTRS - g), + SPA_MINBLOCKSIZE); + ASSERT(lsize >= SPA_MINBLOCKSIZE && lsize <= resid); + + zp.zp_checksum = gio->io_prop.zp_checksum; + zp.zp_compress = ZIO_COMPRESS_OFF; + zp.zp_type = DMU_OT_NONE; + zp.zp_level = 0; + zp.zp_copies = gio->io_prop.zp_copies; + zp.zp_dedup = B_FALSE; + zp.zp_dedup_verify = B_FALSE; + zp.zp_nopwrite = B_FALSE; + + zio_nowait(zio_write(zio, spa, txg, &gbh->zg_blkptr[g], + (char *)pio->io_data + (pio->io_size - resid), lsize, &zp, + zio_write_gang_member_ready, NULL, NULL, &gn->gn_child[g], + pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), + &pio->io_bookmark)); + } + + /* + * Set pio's pipeline to just wait for zio to finish. + */ + pio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + + /* + * We didn't allocate this bp, so make sure it doesn't get unmarked. + */ + pio->io_flags &= ~ZIO_FLAG_FASTWRITE; + + zio_nowait(zio); + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * The zio_nop_write stage in the pipeline determines if allocating + * a new bp is necessary. By leveraging a cryptographically secure checksum, + * such as SHA256, we can compare the checksums of the new data and the old + * to determine if allocating a new block is required. The nopwrite + * feature can handle writes in either syncing or open context (i.e. zil + * writes) and as a result is mutually exclusive with dedup. + */ +static int +zio_nop_write(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + blkptr_t *bp_orig = &zio->io_bp_orig; + zio_prop_t *zp = &zio->io_prop; + + ASSERT(BP_GET_LEVEL(bp) == 0); + ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE)); + ASSERT(zp->zp_nopwrite); + ASSERT(!zp->zp_dedup); + ASSERT(zio->io_bp_override == NULL); + ASSERT(IO_IS_ALLOCATING(zio)); + + /* + * Check to see if the original bp and the new bp have matching + * characteristics (i.e. same checksum, compression algorithms, etc). + * If they don't then just continue with the pipeline which will + * allocate a new bp. + */ + if (BP_IS_HOLE(bp_orig) || + !zio_checksum_table[BP_GET_CHECKSUM(bp)].ci_dedup || + BP_GET_CHECKSUM(bp) != BP_GET_CHECKSUM(bp_orig) || + BP_GET_COMPRESS(bp) != BP_GET_COMPRESS(bp_orig) || + BP_GET_DEDUP(bp) != BP_GET_DEDUP(bp_orig) || + zp->zp_copies != BP_GET_NDVAS(bp_orig)) + return (ZIO_PIPELINE_CONTINUE); + + /* + * If the checksums match then reset the pipeline so that we + * avoid allocating a new bp and issuing any I/O. + */ + if (ZIO_CHECKSUM_EQUAL(bp->blk_cksum, bp_orig->blk_cksum)) { + ASSERT(zio_checksum_table[zp->zp_checksum].ci_dedup); + ASSERT3U(BP_GET_PSIZE(bp), ==, BP_GET_PSIZE(bp_orig)); + ASSERT3U(BP_GET_LSIZE(bp), ==, BP_GET_LSIZE(bp_orig)); + ASSERT(zp->zp_compress != ZIO_COMPRESS_OFF); + ASSERT(bcmp(&bp->blk_prop, &bp_orig->blk_prop, + sizeof (uint64_t)) == 0); + + *bp = *bp_orig; + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + zio->io_flags |= ZIO_FLAG_NOPWRITE; + } + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * ========================================================================== + * Dedup + * ========================================================================== + */ +static void +zio_ddt_child_read_done(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + ddt_entry_t *dde = zio->io_private; + ddt_phys_t *ddp; + zio_t *pio = zio_unique_parent(zio); + + mutex_enter(&pio->io_lock); + ddp = ddt_phys_select(dde, bp); + if (zio->io_error == 0) + ddt_phys_clear(ddp); /* this ddp doesn't need repair */ + if (zio->io_error == 0 && dde->dde_repair_data == NULL) + dde->dde_repair_data = zio->io_data; + else + zio_buf_free(zio->io_data, zio->io_size); + mutex_exit(&pio->io_lock); +} + +static int +zio_ddt_read_start(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + int p; + + ASSERT(BP_GET_DEDUP(bp)); + ASSERT(BP_GET_PSIZE(bp) == zio->io_size); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + + if (zio->io_child_error[ZIO_CHILD_DDT]) { + ddt_t *ddt = ddt_select(zio->io_spa, bp); + ddt_entry_t *dde = ddt_repair_start(ddt, bp); + ddt_phys_t *ddp = dde->dde_phys; + ddt_phys_t *ddp_self = ddt_phys_select(dde, bp); + blkptr_t blk; + + ASSERT(zio->io_vsd == NULL); + zio->io_vsd = dde; + + if (ddp_self == NULL) + return (ZIO_PIPELINE_CONTINUE); + + for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) { + if (ddp->ddp_phys_birth == 0 || ddp == ddp_self) + continue; + ddt_bp_create(ddt->ddt_checksum, &dde->dde_key, ddp, + &blk); + zio_nowait(zio_read(zio, zio->io_spa, &blk, + zio_buf_alloc(zio->io_size), zio->io_size, + zio_ddt_child_read_done, dde, zio->io_priority, + ZIO_DDT_CHILD_FLAGS(zio) | ZIO_FLAG_DONT_PROPAGATE, + &zio->io_bookmark)); + } + return (ZIO_PIPELINE_CONTINUE); + } + + zio_nowait(zio_read(zio, zio->io_spa, bp, + zio->io_data, zio->io_size, NULL, NULL, zio->io_priority, + ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark)); + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_ddt_read_done(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + + if (zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_DONE)) + return (ZIO_PIPELINE_STOP); + + ASSERT(BP_GET_DEDUP(bp)); + ASSERT(BP_GET_PSIZE(bp) == zio->io_size); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + + if (zio->io_child_error[ZIO_CHILD_DDT]) { + ddt_t *ddt = ddt_select(zio->io_spa, bp); + ddt_entry_t *dde = zio->io_vsd; + if (ddt == NULL) { + ASSERT(spa_load_state(zio->io_spa) != SPA_LOAD_NONE); + return (ZIO_PIPELINE_CONTINUE); + } + if (dde == NULL) { + zio->io_stage = ZIO_STAGE_DDT_READ_START >> 1; + zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE); + return (ZIO_PIPELINE_STOP); + } + if (dde->dde_repair_data != NULL) { + bcopy(dde->dde_repair_data, zio->io_data, zio->io_size); + zio->io_child_error[ZIO_CHILD_DDT] = 0; + } + ddt_repair_done(ddt, dde); + zio->io_vsd = NULL; + } + + ASSERT(zio->io_vsd == NULL); + + return (ZIO_PIPELINE_CONTINUE); +} + +static boolean_t +zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde) +{ + spa_t *spa = zio->io_spa; + int p; + + /* + * Note: we compare the original data, not the transformed data, + * because when zio->io_bp is an override bp, we will not have + * pushed the I/O transforms. That's an important optimization + * because otherwise we'd compress/encrypt all dmu_sync() data twice. + */ + for (p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) { + zio_t *lio = dde->dde_lead_zio[p]; + + if (lio != NULL) { + return (lio->io_orig_size != zio->io_orig_size || + bcmp(zio->io_orig_data, lio->io_orig_data, + zio->io_orig_size) != 0); + } + } + + for (p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) { + ddt_phys_t *ddp = &dde->dde_phys[p]; + + if (ddp->ddp_phys_birth != 0) { + arc_buf_t *abuf = NULL; + arc_flags_t aflags = ARC_FLAG_WAIT; + blkptr_t blk = *zio->io_bp; + int error; + + ddt_bp_fill(ddp, &blk, ddp->ddp_phys_birth); + + ddt_exit(ddt); + + error = arc_read(NULL, spa, &blk, + arc_getbuf_func, &abuf, ZIO_PRIORITY_SYNC_READ, + ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, + &aflags, &zio->io_bookmark); + + if (error == 0) { + if (arc_buf_size(abuf) != zio->io_orig_size || + bcmp(abuf->b_data, zio->io_orig_data, + zio->io_orig_size) != 0) + error = SET_ERROR(EEXIST); + VERIFY(arc_buf_remove_ref(abuf, &abuf)); + } + + ddt_enter(ddt); + return (error != 0); + } + } + + return (B_FALSE); +} + +static void +zio_ddt_child_write_ready(zio_t *zio) +{ + int p = zio->io_prop.zp_copies; + ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp); + ddt_entry_t *dde = zio->io_private; + ddt_phys_t *ddp = &dde->dde_phys[p]; + zio_t *pio; + + if (zio->io_error) + return; + + ddt_enter(ddt); + + ASSERT(dde->dde_lead_zio[p] == zio); + + ddt_phys_fill(ddp, zio->io_bp); + + while ((pio = zio_walk_parents(zio)) != NULL) + ddt_bp_fill(ddp, pio->io_bp, zio->io_txg); + + ddt_exit(ddt); +} + +static void +zio_ddt_child_write_done(zio_t *zio) +{ + int p = zio->io_prop.zp_copies; + ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp); + ddt_entry_t *dde = zio->io_private; + ddt_phys_t *ddp = &dde->dde_phys[p]; + + ddt_enter(ddt); + + ASSERT(ddp->ddp_refcnt == 0); + ASSERT(dde->dde_lead_zio[p] == zio); + dde->dde_lead_zio[p] = NULL; + + if (zio->io_error == 0) { + while (zio_walk_parents(zio) != NULL) + ddt_phys_addref(ddp); + } else { + ddt_phys_clear(ddp); + } + + ddt_exit(ddt); +} + +static void +zio_ddt_ditto_write_done(zio_t *zio) +{ + int p = DDT_PHYS_DITTO; + blkptr_t *bp = zio->io_bp; + ddt_t *ddt = ddt_select(zio->io_spa, bp); + ddt_entry_t *dde = zio->io_private; + ddt_phys_t *ddp = &dde->dde_phys[p]; + ddt_key_t *ddk = &dde->dde_key; + ASSERTV(zio_prop_t *zp = &zio->io_prop); + + ddt_enter(ddt); + + ASSERT(ddp->ddp_refcnt == 0); + ASSERT(dde->dde_lead_zio[p] == zio); + dde->dde_lead_zio[p] = NULL; + + if (zio->io_error == 0) { + ASSERT(ZIO_CHECKSUM_EQUAL(bp->blk_cksum, ddk->ddk_cksum)); + ASSERT(zp->zp_copies < SPA_DVAS_PER_BP); + ASSERT(zp->zp_copies == BP_GET_NDVAS(bp) - BP_IS_GANG(bp)); + if (ddp->ddp_phys_birth != 0) + ddt_phys_free(ddt, ddk, ddp, zio->io_txg); + ddt_phys_fill(ddp, bp); + } + + ddt_exit(ddt); +} + +static int +zio_ddt_write(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + blkptr_t *bp = zio->io_bp; + uint64_t txg = zio->io_txg; + zio_prop_t *zp = &zio->io_prop; + int p = zp->zp_copies; + int ditto_copies; + zio_t *cio = NULL; + zio_t *dio = NULL; + ddt_t *ddt = ddt_select(spa, bp); + ddt_entry_t *dde; + ddt_phys_t *ddp; + + ASSERT(BP_GET_DEDUP(bp)); + ASSERT(BP_GET_CHECKSUM(bp) == zp->zp_checksum); + ASSERT(BP_IS_HOLE(bp) || zio->io_bp_override); + + ddt_enter(ddt); + dde = ddt_lookup(ddt, bp, B_TRUE); + ddp = &dde->dde_phys[p]; + + if (zp->zp_dedup_verify && zio_ddt_collision(zio, ddt, dde)) { + /* + * If we're using a weak checksum, upgrade to a strong checksum + * and try again. If we're already using a strong checksum, + * we can't resolve it, so just convert to an ordinary write. + * (And automatically e-mail a paper to Nature?) + */ + if (!zio_checksum_table[zp->zp_checksum].ci_dedup) { + zp->zp_checksum = spa_dedup_checksum(spa); + zio_pop_transforms(zio); + zio->io_stage = ZIO_STAGE_OPEN; + BP_ZERO(bp); + } else { + zp->zp_dedup = B_FALSE; + } + zio->io_pipeline = ZIO_WRITE_PIPELINE; + ddt_exit(ddt); + return (ZIO_PIPELINE_CONTINUE); + } + + ditto_copies = ddt_ditto_copies_needed(ddt, dde, ddp); + ASSERT(ditto_copies < SPA_DVAS_PER_BP); + + if (ditto_copies > ddt_ditto_copies_present(dde) && + dde->dde_lead_zio[DDT_PHYS_DITTO] == NULL) { + zio_prop_t czp = *zp; + + czp.zp_copies = ditto_copies; + + /* + * If we arrived here with an override bp, we won't have run + * the transform stack, so we won't have the data we need to + * generate a child i/o. So, toss the override bp and restart. + * This is safe, because using the override bp is just an + * optimization; and it's rare, so the cost doesn't matter. + */ + if (zio->io_bp_override) { + zio_pop_transforms(zio); + zio->io_stage = ZIO_STAGE_OPEN; + zio->io_pipeline = ZIO_WRITE_PIPELINE; + zio->io_bp_override = NULL; + BP_ZERO(bp); + ddt_exit(ddt); + return (ZIO_PIPELINE_CONTINUE); + } + + dio = zio_write(zio, spa, txg, bp, zio->io_orig_data, + zio->io_orig_size, &czp, NULL, NULL, + zio_ddt_ditto_write_done, dde, zio->io_priority, + ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark); + + zio_push_transform(dio, zio->io_data, zio->io_size, 0, NULL); + dde->dde_lead_zio[DDT_PHYS_DITTO] = dio; + } + + if (ddp->ddp_phys_birth != 0 || dde->dde_lead_zio[p] != NULL) { + if (ddp->ddp_phys_birth != 0) + ddt_bp_fill(ddp, bp, txg); + if (dde->dde_lead_zio[p] != NULL) + zio_add_child(zio, dde->dde_lead_zio[p]); + else + ddt_phys_addref(ddp); + } else if (zio->io_bp_override) { + ASSERT(bp->blk_birth == txg); + ASSERT(BP_EQUAL(bp, zio->io_bp_override)); + ddt_phys_fill(ddp, bp); + ddt_phys_addref(ddp); + } else { + cio = zio_write(zio, spa, txg, bp, zio->io_orig_data, + zio->io_orig_size, zp, zio_ddt_child_write_ready, NULL, + zio_ddt_child_write_done, dde, zio->io_priority, + ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark); + + zio_push_transform(cio, zio->io_data, zio->io_size, 0, NULL); + dde->dde_lead_zio[p] = cio; + } + + ddt_exit(ddt); + + if (cio) + zio_nowait(cio); + if (dio) + zio_nowait(dio); + + return (ZIO_PIPELINE_CONTINUE); +} + +ddt_entry_t *freedde; /* for debugging */ + +static int +zio_ddt_free(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + blkptr_t *bp = zio->io_bp; + ddt_t *ddt = ddt_select(spa, bp); + ddt_entry_t *dde; + ddt_phys_t *ddp; + + ASSERT(BP_GET_DEDUP(bp)); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + + ddt_enter(ddt); + freedde = dde = ddt_lookup(ddt, bp, B_TRUE); + if (dde) { + ddp = ddt_phys_select(dde, bp); + if (ddp) + ddt_phys_decref(ddp); + } + ddt_exit(ddt); + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * ========================================================================== + * Allocate and free blocks + * ========================================================================== + */ +static int +zio_dva_allocate(zio_t *zio) +{ + spa_t *spa = zio->io_spa; + metaslab_class_t *mc = spa_normal_class(spa); + blkptr_t *bp = zio->io_bp; + int error; + int flags = 0; + + if (zio->io_gang_leader == NULL) { + ASSERT(zio->io_child_type > ZIO_CHILD_GANG); + zio->io_gang_leader = zio; + } + + ASSERT(BP_IS_HOLE(bp)); + ASSERT0(BP_GET_NDVAS(bp)); + ASSERT3U(zio->io_prop.zp_copies, >, 0); + ASSERT3U(zio->io_prop.zp_copies, <=, spa_max_replication(spa)); + ASSERT3U(zio->io_size, ==, BP_GET_PSIZE(bp)); + + /* + * The dump device does not support gang blocks so allocation on + * behalf of the dump device (i.e. ZIO_FLAG_NODATA) must avoid + * the "fast" gang feature. + */ + flags |= (zio->io_flags & ZIO_FLAG_NODATA) ? METASLAB_GANG_AVOID : 0; + flags |= (zio->io_flags & ZIO_FLAG_GANG_CHILD) ? + METASLAB_GANG_CHILD : 0; + flags |= (zio->io_flags & ZIO_FLAG_FASTWRITE) ? METASLAB_FASTWRITE : 0; + error = metaslab_alloc(spa, mc, zio->io_size, bp, + zio->io_prop.zp_copies, zio->io_txg, NULL, flags); + + if (error) { + spa_dbgmsg(spa, "%s: metaslab allocation failure: zio %p, " + "size %llu, error %d", spa_name(spa), zio, zio->io_size, + error); + if (error == ENOSPC && zio->io_size > SPA_MINBLOCKSIZE) + return (zio_write_gang_block(zio)); + zio->io_error = error; + } + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_dva_free(zio_t *zio) +{ + metaslab_free(zio->io_spa, zio->io_bp, zio->io_txg, B_FALSE); + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_dva_claim(zio_t *zio) +{ + int error; + + error = metaslab_claim(zio->io_spa, zio->io_bp, zio->io_txg); + if (error) + zio->io_error = error; + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * Undo an allocation. This is used by zio_done() when an I/O fails + * and we want to give back the block we just allocated. + * This handles both normal blocks and gang blocks. + */ +static void +zio_dva_unallocate(zio_t *zio, zio_gang_node_t *gn, blkptr_t *bp) +{ + int g; + + ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp)); + ASSERT(zio->io_bp_override == NULL); + + if (!BP_IS_HOLE(bp)) + metaslab_free(zio->io_spa, bp, bp->blk_birth, B_TRUE); + + if (gn != NULL) { + for (g = 0; g < SPA_GBH_NBLKPTRS; g++) { + zio_dva_unallocate(zio, gn->gn_child[g], + &gn->gn_gbh->zg_blkptr[g]); + } + } +} + +/* + * Try to allocate an intent log block. Return 0 on success, errno on failure. + */ +int +zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp, uint64_t size, + boolean_t use_slog) +{ + int error = 1; + + ASSERT(txg > spa_syncing_txg(spa)); + + /* + * ZIL blocks are always contiguous (i.e. not gang blocks) so we + * set the METASLAB_GANG_AVOID flag so that they don't "fast gang" + * when allocating them. + */ + if (use_slog) { + error = metaslab_alloc(spa, spa_log_class(spa), size, + new_bp, 1, txg, NULL, + METASLAB_FASTWRITE | METASLAB_GANG_AVOID); + } + + if (error) { + error = metaslab_alloc(spa, spa_normal_class(spa), size, + new_bp, 1, txg, NULL, + METASLAB_FASTWRITE); + } + + if (error == 0) { + BP_SET_LSIZE(new_bp, size); + BP_SET_PSIZE(new_bp, size); + BP_SET_COMPRESS(new_bp, ZIO_COMPRESS_OFF); + BP_SET_CHECKSUM(new_bp, + spa_version(spa) >= SPA_VERSION_SLIM_ZIL + ? ZIO_CHECKSUM_ZILOG2 : ZIO_CHECKSUM_ZILOG); + BP_SET_TYPE(new_bp, DMU_OT_INTENT_LOG); + BP_SET_LEVEL(new_bp, 0); + BP_SET_DEDUP(new_bp, 0); + BP_SET_BYTEORDER(new_bp, ZFS_HOST_BYTEORDER); + } + + return (error); +} + +/* + * Free an intent log block. + */ +void +zio_free_zil(spa_t *spa, uint64_t txg, blkptr_t *bp) +{ + ASSERT(BP_GET_TYPE(bp) == DMU_OT_INTENT_LOG); + ASSERT(!BP_IS_GANG(bp)); + + zio_free(spa, txg, bp); +} + +/* + * ========================================================================== + * Read and write to physical devices + * ========================================================================== + */ + + +/* + * Issue an I/O to the underlying vdev. Typically the issue pipeline + * stops after this stage and will resume upon I/O completion. + * However, there are instances where the vdev layer may need to + * continue the pipeline when an I/O was not issued. Since the I/O + * that was sent to the vdev layer might be different than the one + * currently active in the pipeline (see vdev_queue_io()), we explicitly + * force the underlying vdev layers to call either zio_execute() or + * zio_interrupt() to ensure that the pipeline continues with the correct I/O. + */ +static int +zio_vdev_io_start(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + uint64_t align; + spa_t *spa = zio->io_spa; + + ASSERT(zio->io_error == 0); + ASSERT(zio->io_child_error[ZIO_CHILD_VDEV] == 0); + + if (vd == NULL) { + if (!(zio->io_flags & ZIO_FLAG_CONFIG_WRITER)) + spa_config_enter(spa, SCL_ZIO, zio, RW_READER); + + /* + * The mirror_ops handle multiple DVAs in a single BP. + */ + vdev_mirror_ops.vdev_op_io_start(zio); + return (ZIO_PIPELINE_STOP); + } + + /* + * We keep track of time-sensitive I/Os so that the scan thread + * can quickly react to certain workloads. In particular, we care + * about non-scrubbing, top-level reads and writes with the following + * characteristics: + * - synchronous writes of user data to non-slog devices + * - any reads of user data + * When these conditions are met, adjust the timestamp of spa_last_io + * which allows the scan thread to adjust its workload accordingly. + */ + if (!(zio->io_flags & ZIO_FLAG_SCAN_THREAD) && zio->io_bp != NULL && + vd == vd->vdev_top && !vd->vdev_islog && + zio->io_bookmark.zb_objset != DMU_META_OBJSET && + zio->io_txg != spa_syncing_txg(spa)) { + uint64_t old = spa->spa_last_io; + uint64_t new = ddi_get_lbolt64(); + if (old != new) + (void) atomic_cas_64(&spa->spa_last_io, old, new); + } + + align = 1ULL << vd->vdev_top->vdev_ashift; + + if (!(zio->io_flags & ZIO_FLAG_PHYSICAL) && + P2PHASE(zio->io_size, align) != 0) { + /* Transform logical writes to be a full physical block size. */ + uint64_t asize = P2ROUNDUP(zio->io_size, align); + char *abuf = zio_buf_alloc(asize); + ASSERT(vd == vd->vdev_top); + if (zio->io_type == ZIO_TYPE_WRITE) { + bcopy(zio->io_data, abuf, zio->io_size); + bzero(abuf + zio->io_size, asize - zio->io_size); + } + zio_push_transform(zio, abuf, asize, asize, zio_subblock); + } + + /* + * If this is not a physical io, make sure that it is properly aligned + * before proceeding. + */ + if (!(zio->io_flags & ZIO_FLAG_PHYSICAL)) { + ASSERT0(P2PHASE(zio->io_offset, align)); + ASSERT0(P2PHASE(zio->io_size, align)); + } else { + /* + * For physical writes, we allow 512b aligned writes and assume + * the device will perform a read-modify-write as necessary. + */ + ASSERT0(P2PHASE(zio->io_offset, SPA_MINBLOCKSIZE)); + ASSERT0(P2PHASE(zio->io_size, SPA_MINBLOCKSIZE)); + } + + VERIFY(zio->io_type != ZIO_TYPE_WRITE || spa_writeable(spa)); + + /* + * If this is a repair I/O, and there's no self-healing involved -- + * that is, we're just resilvering what we expect to resilver -- + * then don't do the I/O unless zio's txg is actually in vd's DTL. + * This prevents spurious resilvering with nested replication. + * For example, given a mirror of mirrors, (A+B)+(C+D), if only + * A is out of date, we'll read from C+D, then use the data to + * resilver A+B -- but we don't actually want to resilver B, just A. + * The top-level mirror has no way to know this, so instead we just + * discard unnecessary repairs as we work our way down the vdev tree. + * The same logic applies to any form of nested replication: + * ditto + mirror, RAID-Z + replacing, etc. This covers them all. + */ + if ((zio->io_flags & ZIO_FLAG_IO_REPAIR) && + !(zio->io_flags & ZIO_FLAG_SELF_HEAL) && + zio->io_txg != 0 && /* not a delegated i/o */ + !vdev_dtl_contains(vd, DTL_PARTIAL, zio->io_txg, 1)) { + ASSERT(zio->io_type == ZIO_TYPE_WRITE); + zio_vdev_io_bypass(zio); + return (ZIO_PIPELINE_CONTINUE); + } + + if (vd->vdev_ops->vdev_op_leaf && + (zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE)) { + + if (zio->io_type == ZIO_TYPE_READ && vdev_cache_read(zio)) + return (ZIO_PIPELINE_CONTINUE); + + if ((zio = vdev_queue_io(zio)) == NULL) + return (ZIO_PIPELINE_STOP); + + if (!vdev_accessible(vd, zio)) { + zio->io_error = SET_ERROR(ENXIO); + zio_interrupt(zio); + return (ZIO_PIPELINE_STOP); + } + } + + vd->vdev_ops->vdev_op_io_start(zio); + return (ZIO_PIPELINE_STOP); +} + +static int +zio_vdev_io_done(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + vdev_ops_t *ops = vd ? vd->vdev_ops : &vdev_mirror_ops; + boolean_t unexpected_error = B_FALSE; + + if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE)) + return (ZIO_PIPELINE_STOP); + + ASSERT(zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE); + + if (vd != NULL && vd->vdev_ops->vdev_op_leaf) { + + vdev_queue_io_done(zio); + + if (zio->io_type == ZIO_TYPE_WRITE) + vdev_cache_write(zio); + + if (zio_injection_enabled && zio->io_error == 0) + zio->io_error = zio_handle_device_injection(vd, + zio, EIO); + + if (zio_injection_enabled && zio->io_error == 0) + zio->io_error = zio_handle_label_injection(zio, EIO); + + if (zio->io_error) { + if (!vdev_accessible(vd, zio)) { + zio->io_error = SET_ERROR(ENXIO); + } else { + unexpected_error = B_TRUE; + } + } + } + + ops->vdev_op_io_done(zio); + + if (unexpected_error) + VERIFY(vdev_probe(vd, zio) == NULL); + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * For non-raidz ZIOs, we can just copy aside the bad data read from the + * disk, and use that to finish the checksum ereport later. + */ +static void +zio_vsd_default_cksum_finish(zio_cksum_report_t *zcr, + const void *good_buf) +{ + /* no processing needed */ + zfs_ereport_finish_checksum(zcr, good_buf, zcr->zcr_cbdata, B_FALSE); +} + +/*ARGSUSED*/ +void +zio_vsd_default_cksum_report(zio_t *zio, zio_cksum_report_t *zcr, void *ignored) +{ + void *buf = zio_buf_alloc(zio->io_size); + + bcopy(zio->io_data, buf, zio->io_size); + + zcr->zcr_cbinfo = zio->io_size; + zcr->zcr_cbdata = buf; + zcr->zcr_finish = zio_vsd_default_cksum_finish; + zcr->zcr_free = zio_buf_free; +} + +static int +zio_vdev_io_assess(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + + if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE)) + return (ZIO_PIPELINE_STOP); + + if (vd == NULL && !(zio->io_flags & ZIO_FLAG_CONFIG_WRITER)) + spa_config_exit(zio->io_spa, SCL_ZIO, zio); + + if (zio->io_vsd != NULL) { + zio->io_vsd_ops->vsd_free(zio); + zio->io_vsd = NULL; + } + + if (zio_injection_enabled && zio->io_error == 0) + zio->io_error = zio_handle_fault_injection(zio, EIO); + + /* + * If the I/O failed, determine whether we should attempt to retry it. + * + * On retry, we cut in line in the issue queue, since we don't want + * compression/checksumming/etc. work to prevent our (cheap) IO reissue. + */ + if (zio->io_error && vd == NULL && + !(zio->io_flags & (ZIO_FLAG_DONT_RETRY | ZIO_FLAG_IO_RETRY))) { + ASSERT(!(zio->io_flags & ZIO_FLAG_DONT_QUEUE)); /* not a leaf */ + ASSERT(!(zio->io_flags & ZIO_FLAG_IO_BYPASS)); /* not a leaf */ + zio->io_error = 0; + zio->io_flags |= ZIO_FLAG_IO_RETRY | + ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_AGGREGATE; + zio->io_stage = ZIO_STAGE_VDEV_IO_START >> 1; + zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, + zio_requeue_io_start_cut_in_line); + return (ZIO_PIPELINE_STOP); + } + + /* + * If we got an error on a leaf device, convert it to ENXIO + * if the device is not accessible at all. + */ + if (zio->io_error && vd != NULL && vd->vdev_ops->vdev_op_leaf && + !vdev_accessible(vd, zio)) + zio->io_error = SET_ERROR(ENXIO); + + /* + * If we can't write to an interior vdev (mirror or RAID-Z), + * set vdev_cant_write so that we stop trying to allocate from it. + */ + if (zio->io_error == ENXIO && zio->io_type == ZIO_TYPE_WRITE && + vd != NULL && !vd->vdev_ops->vdev_op_leaf) { + vd->vdev_cant_write = B_TRUE; + } + + if (zio->io_error) + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + + if (vd != NULL && vd->vdev_ops->vdev_op_leaf && + zio->io_physdone != NULL) { + ASSERT(!(zio->io_flags & ZIO_FLAG_DELEGATED)); + ASSERT(zio->io_child_type == ZIO_CHILD_VDEV); + zio->io_physdone(zio->io_logical); + } + + return (ZIO_PIPELINE_CONTINUE); +} + +void +zio_vdev_io_reissue(zio_t *zio) +{ + ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START); + ASSERT(zio->io_error == 0); + + zio->io_stage >>= 1; +} + +void +zio_vdev_io_redone(zio_t *zio) +{ + ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_DONE); + + zio->io_stage >>= 1; +} + +void +zio_vdev_io_bypass(zio_t *zio) +{ + ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START); + ASSERT(zio->io_error == 0); + + zio->io_flags |= ZIO_FLAG_IO_BYPASS; + zio->io_stage = ZIO_STAGE_VDEV_IO_ASSESS >> 1; +} + +/* + * ========================================================================== + * Generate and verify checksums + * ========================================================================== + */ +static int +zio_checksum_generate(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + enum zio_checksum checksum; + + if (bp == NULL) { + /* + * This is zio_write_phys(). + * We're either generating a label checksum, or none at all. + */ + checksum = zio->io_prop.zp_checksum; + + if (checksum == ZIO_CHECKSUM_OFF) + return (ZIO_PIPELINE_CONTINUE); + + ASSERT(checksum == ZIO_CHECKSUM_LABEL); + } else { + if (BP_IS_GANG(bp) && zio->io_child_type == ZIO_CHILD_GANG) { + ASSERT(!IO_IS_ALLOCATING(zio)); + checksum = ZIO_CHECKSUM_GANG_HEADER; + } else { + checksum = BP_GET_CHECKSUM(bp); + } + } + + zio_checksum_compute(zio, checksum, zio->io_data, zio->io_size); + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_checksum_verify(zio_t *zio) +{ + zio_bad_cksum_t info; + blkptr_t *bp = zio->io_bp; + int error; + + ASSERT(zio->io_vd != NULL); + + if (bp == NULL) { + /* + * This is zio_read_phys(). + * We're either verifying a label checksum, or nothing at all. + */ + if (zio->io_prop.zp_checksum == ZIO_CHECKSUM_OFF) + return (ZIO_PIPELINE_CONTINUE); + + ASSERT(zio->io_prop.zp_checksum == ZIO_CHECKSUM_LABEL); + } + + if ((error = zio_checksum_error(zio, &info)) != 0) { + zio->io_error = error; + if (error == ECKSUM && + !(zio->io_flags & ZIO_FLAG_SPECULATIVE)) { + zfs_ereport_start_checksum(zio->io_spa, + zio->io_vd, zio, zio->io_offset, + zio->io_size, NULL, &info); + } + } + + return (ZIO_PIPELINE_CONTINUE); +} + +/* + * Called by RAID-Z to ensure we don't compute the checksum twice. + */ +void +zio_checksum_verified(zio_t *zio) +{ + zio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY; +} + +/* + * ========================================================================== + * Error rank. Error are ranked in the order 0, ENXIO, ECKSUM, EIO, other. + * An error of 0 indicates success. ENXIO indicates whole-device failure, + * which may be transient (e.g. unplugged) or permament. ECKSUM and EIO + * indicate errors that are specific to one I/O, and most likely permanent. + * Any other error is presumed to be worse because we weren't expecting it. + * ========================================================================== + */ +int +zio_worst_error(int e1, int e2) +{ + static int zio_error_rank[] = { 0, ENXIO, ECKSUM, EIO }; + int r1, r2; + + for (r1 = 0; r1 < sizeof (zio_error_rank) / sizeof (int); r1++) + if (e1 == zio_error_rank[r1]) + break; + + for (r2 = 0; r2 < sizeof (zio_error_rank) / sizeof (int); r2++) + if (e2 == zio_error_rank[r2]) + break; + + return (r1 > r2 ? e1 : e2); +} + +/* + * ========================================================================== + * I/O completion + * ========================================================================== + */ +static int +zio_ready(zio_t *zio) +{ + blkptr_t *bp = zio->io_bp; + zio_t *pio, *pio_next; + + if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_READY) || + zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_READY)) + return (ZIO_PIPELINE_STOP); + + if (zio->io_ready) { + ASSERT(IO_IS_ALLOCATING(zio)); + ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp) || + (zio->io_flags & ZIO_FLAG_NOPWRITE)); + ASSERT(zio->io_children[ZIO_CHILD_GANG][ZIO_WAIT_READY] == 0); + + zio->io_ready(zio); + } + + if (bp != NULL && bp != &zio->io_bp_copy) + zio->io_bp_copy = *bp; + + if (zio->io_error) + zio->io_pipeline = ZIO_INTERLOCK_PIPELINE; + + mutex_enter(&zio->io_lock); + zio->io_state[ZIO_WAIT_READY] = 1; + pio = zio_walk_parents(zio); + mutex_exit(&zio->io_lock); + + /* + * As we notify zio's parents, new parents could be added. + * New parents go to the head of zio's io_parent_list, however, + * so we will (correctly) not notify them. The remainder of zio's + * io_parent_list, from 'pio_next' onward, cannot change because + * all parents must wait for us to be done before they can be done. + */ + for (; pio != NULL; pio = pio_next) { + pio_next = zio_walk_parents(zio); + zio_notify_parent(pio, zio, ZIO_WAIT_READY); + } + + if (zio->io_flags & ZIO_FLAG_NODATA) { + if (BP_IS_GANG(bp)) { + zio->io_flags &= ~ZIO_FLAG_NODATA; + } else { + ASSERT((uintptr_t)zio->io_data < SPA_MAXBLOCKSIZE); + zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES; + } + } + + if (zio_injection_enabled && + zio->io_spa->spa_syncing_txg == zio->io_txg) + zio_handle_ignored_writes(zio); + + return (ZIO_PIPELINE_CONTINUE); +} + +static int +zio_done(zio_t *zio) +{ + zio_t *pio, *pio_next; + int c, w; + + /* + * If our children haven't all completed, + * wait for them and then repeat this pipeline stage. + */ + if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE) || + zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_DONE) || + zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_DONE) || + zio_wait_for_children(zio, ZIO_CHILD_LOGICAL, ZIO_WAIT_DONE)) + return (ZIO_PIPELINE_STOP); + + for (c = 0; c < ZIO_CHILD_TYPES; c++) + for (w = 0; w < ZIO_WAIT_TYPES; w++) + ASSERT(zio->io_children[c][w] == 0); + + if (zio->io_bp != NULL && !BP_IS_EMBEDDED(zio->io_bp)) { + ASSERT(zio->io_bp->blk_pad[0] == 0); + ASSERT(zio->io_bp->blk_pad[1] == 0); + ASSERT(bcmp(zio->io_bp, &zio->io_bp_copy, + sizeof (blkptr_t)) == 0 || + (zio->io_bp == zio_unique_parent(zio)->io_bp)); + if (zio->io_type == ZIO_TYPE_WRITE && !BP_IS_HOLE(zio->io_bp) && + zio->io_bp_override == NULL && + !(zio->io_flags & ZIO_FLAG_IO_REPAIR)) { + ASSERT(!BP_SHOULD_BYTESWAP(zio->io_bp)); + ASSERT3U(zio->io_prop.zp_copies, <=, + BP_GET_NDVAS(zio->io_bp)); + ASSERT(BP_COUNT_GANG(zio->io_bp) == 0 || + (BP_COUNT_GANG(zio->io_bp) == + BP_GET_NDVAS(zio->io_bp))); + } + if (zio->io_flags & ZIO_FLAG_NOPWRITE) + VERIFY(BP_EQUAL(zio->io_bp, &zio->io_bp_orig)); + } + + /* + * If there were child vdev/gang/ddt errors, they apply to us now. + */ + zio_inherit_child_errors(zio, ZIO_CHILD_VDEV); + zio_inherit_child_errors(zio, ZIO_CHILD_GANG); + zio_inherit_child_errors(zio, ZIO_CHILD_DDT); + + /* + * If the I/O on the transformed data was successful, generate any + * checksum reports now while we still have the transformed data. + */ + if (zio->io_error == 0) { + while (zio->io_cksum_report != NULL) { + zio_cksum_report_t *zcr = zio->io_cksum_report; + uint64_t align = zcr->zcr_align; + uint64_t asize = P2ROUNDUP(zio->io_size, align); + char *abuf = zio->io_data; + + if (asize != zio->io_size) { + abuf = zio_buf_alloc(asize); + bcopy(zio->io_data, abuf, zio->io_size); + bzero(abuf+zio->io_size, asize-zio->io_size); + } + + zio->io_cksum_report = zcr->zcr_next; + zcr->zcr_next = NULL; + zcr->zcr_finish(zcr, abuf); + zfs_ereport_free_checksum(zcr); + + if (asize != zio->io_size) + zio_buf_free(abuf, asize); + } + } + + zio_pop_transforms(zio); /* note: may set zio->io_error */ + + vdev_stat_update(zio, zio->io_size); + + /* + * If this I/O is attached to a particular vdev is slow, exceeding + * 30 seconds to complete, post an error described the I/O delay. + * We ignore these errors if the device is currently unavailable. + */ + if (zio->io_delay >= MSEC_TO_TICK(zio_delay_max)) { + if (zio->io_vd != NULL && !vdev_is_dead(zio->io_vd)) + zfs_ereport_post(FM_EREPORT_ZFS_DELAY, zio->io_spa, + zio->io_vd, zio, 0, 0); + } + + if (zio->io_error) { + /* + * If this I/O is attached to a particular vdev, + * generate an error message describing the I/O failure + * at the block level. We ignore these errors if the + * device is currently unavailable. + */ + if (zio->io_error != ECKSUM && zio->io_vd != NULL && + !vdev_is_dead(zio->io_vd)) + zfs_ereport_post(FM_EREPORT_ZFS_IO, zio->io_spa, + zio->io_vd, zio, 0, 0); + + if ((zio->io_error == EIO || !(zio->io_flags & + (ZIO_FLAG_SPECULATIVE | ZIO_FLAG_DONT_PROPAGATE))) && + zio == zio->io_logical) { + /* + * For logical I/O requests, tell the SPA to log the + * error and generate a logical data ereport. + */ + spa_log_error(zio->io_spa, zio); + zfs_ereport_post(FM_EREPORT_ZFS_DATA, zio->io_spa, + NULL, zio, 0, 0); + } + } + + if (zio->io_error && zio == zio->io_logical) { + /* + * Determine whether zio should be reexecuted. This will + * propagate all the way to the root via zio_notify_parent(). + */ + ASSERT(zio->io_vd == NULL && zio->io_bp != NULL); + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + + if (IO_IS_ALLOCATING(zio) && + !(zio->io_flags & ZIO_FLAG_CANFAIL)) { + if (zio->io_error != ENOSPC) + zio->io_reexecute |= ZIO_REEXECUTE_NOW; + else + zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND; + } + + if ((zio->io_type == ZIO_TYPE_READ || + zio->io_type == ZIO_TYPE_FREE) && + !(zio->io_flags & ZIO_FLAG_SCAN_THREAD) && + zio->io_error == ENXIO && + spa_load_state(zio->io_spa) == SPA_LOAD_NONE && + spa_get_failmode(zio->io_spa) != ZIO_FAILURE_MODE_CONTINUE) + zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND; + + if (!(zio->io_flags & ZIO_FLAG_CANFAIL) && !zio->io_reexecute) + zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND; + + /* + * Here is a possibly good place to attempt to do + * either combinatorial reconstruction or error correction + * based on checksums. It also might be a good place + * to send out preliminary ereports before we suspend + * processing. + */ + } + + /* + * If there were logical child errors, they apply to us now. + * We defer this until now to avoid conflating logical child + * errors with errors that happened to the zio itself when + * updating vdev stats and reporting FMA events above. + */ + zio_inherit_child_errors(zio, ZIO_CHILD_LOGICAL); + + if ((zio->io_error || zio->io_reexecute) && + IO_IS_ALLOCATING(zio) && zio->io_gang_leader == zio && + !(zio->io_flags & (ZIO_FLAG_IO_REWRITE | ZIO_FLAG_NOPWRITE))) + zio_dva_unallocate(zio, zio->io_gang_tree, zio->io_bp); + + zio_gang_tree_free(&zio->io_gang_tree); + + /* + * Godfather I/Os should never suspend. + */ + if ((zio->io_flags & ZIO_FLAG_GODFATHER) && + (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND)) + zio->io_reexecute = 0; + + if (zio->io_reexecute) { + /* + * This is a logical I/O that wants to reexecute. + * + * Reexecute is top-down. When an i/o fails, if it's not + * the root, it simply notifies its parent and sticks around. + * The parent, seeing that it still has children in zio_done(), + * does the same. This percolates all the way up to the root. + * The root i/o will reexecute or suspend the entire tree. + * + * This approach ensures that zio_reexecute() honors + * all the original i/o dependency relationships, e.g. + * parents not executing until children are ready. + */ + ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL); + + zio->io_gang_leader = NULL; + + mutex_enter(&zio->io_lock); + zio->io_state[ZIO_WAIT_DONE] = 1; + mutex_exit(&zio->io_lock); + + /* + * "The Godfather" I/O monitors its children but is + * not a true parent to them. It will track them through + * the pipeline but severs its ties whenever they get into + * trouble (e.g. suspended). This allows "The Godfather" + * I/O to return status without blocking. + */ + for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { + zio_link_t *zl = zio->io_walk_link; + pio_next = zio_walk_parents(zio); + + if ((pio->io_flags & ZIO_FLAG_GODFATHER) && + (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND)) { + zio_remove_child(pio, zio, zl); + zio_notify_parent(pio, zio, ZIO_WAIT_DONE); + } + } + + if ((pio = zio_unique_parent(zio)) != NULL) { + /* + * We're not a root i/o, so there's nothing to do + * but notify our parent. Don't propagate errors + * upward since we haven't permanently failed yet. + */ + ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER)); + zio->io_flags |= ZIO_FLAG_DONT_PROPAGATE; + zio_notify_parent(pio, zio, ZIO_WAIT_DONE); + } else if (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND) { + /* + * We'd fail again if we reexecuted now, so suspend + * until conditions improve (e.g. device comes online). + */ + zio_suspend(zio->io_spa, zio); + } else { + /* + * Reexecution is potentially a huge amount of work. + * Hand it off to the otherwise-unused claim taskq. + */ + ASSERT(taskq_empty_ent(&zio->io_tqent)); + spa_taskq_dispatch_ent(zio->io_spa, + ZIO_TYPE_CLAIM, ZIO_TASKQ_ISSUE, + (task_func_t *)zio_reexecute, zio, 0, + &zio->io_tqent); + } + return (ZIO_PIPELINE_STOP); + } + + ASSERT(zio->io_child_count == 0); + ASSERT(zio->io_reexecute == 0); + ASSERT(zio->io_error == 0 || (zio->io_flags & ZIO_FLAG_CANFAIL)); + + /* + * Report any checksum errors, since the I/O is complete. + */ + while (zio->io_cksum_report != NULL) { + zio_cksum_report_t *zcr = zio->io_cksum_report; + zio->io_cksum_report = zcr->zcr_next; + zcr->zcr_next = NULL; + zcr->zcr_finish(zcr, NULL); + zfs_ereport_free_checksum(zcr); + } + + if (zio->io_flags & ZIO_FLAG_FASTWRITE && zio->io_bp && + !BP_IS_HOLE(zio->io_bp) && !BP_IS_EMBEDDED(zio->io_bp) && + !(zio->io_flags & ZIO_FLAG_NOPWRITE)) { + metaslab_fastwrite_unmark(zio->io_spa, zio->io_bp); + } + + /* + * It is the responsibility of the done callback to ensure that this + * particular zio is no longer discoverable for adoption, and as + * such, cannot acquire any new parents. + */ + if (zio->io_done) + zio->io_done(zio); + + mutex_enter(&zio->io_lock); + zio->io_state[ZIO_WAIT_DONE] = 1; + mutex_exit(&zio->io_lock); + + for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { + zio_link_t *zl = zio->io_walk_link; + pio_next = zio_walk_parents(zio); + zio_remove_child(pio, zio, zl); + zio_notify_parent(pio, zio, ZIO_WAIT_DONE); + } + + if (zio->io_waiter != NULL) { + mutex_enter(&zio->io_lock); + zio->io_executor = NULL; + cv_broadcast(&zio->io_cv); + mutex_exit(&zio->io_lock); + } else { + zio_destroy(zio); + } + + return (ZIO_PIPELINE_STOP); +} + +/* + * ========================================================================== + * I/O pipeline definition + * ========================================================================== + */ +static zio_pipe_stage_t *zio_pipeline[] = { + NULL, + zio_read_bp_init, + zio_free_bp_init, + zio_issue_async, + zio_write_bp_init, + zio_checksum_generate, + zio_nop_write, + zio_ddt_read_start, + zio_ddt_read_done, + zio_ddt_write, + zio_ddt_free, + zio_gang_assemble, + zio_gang_issue, + zio_dva_allocate, + zio_dva_free, + zio_dva_claim, + zio_ready, + zio_vdev_io_start, + zio_vdev_io_done, + zio_vdev_io_assess, + zio_checksum_verify, + zio_done +}; + +/* dnp is the dnode for zb1->zb_object */ +boolean_t +zbookmark_is_before(const dnode_phys_t *dnp, const zbookmark_phys_t *zb1, + const zbookmark_phys_t *zb2) +{ + uint64_t zb1nextL0, zb2thisobj; + + ASSERT(zb1->zb_objset == zb2->zb_objset); + ASSERT(zb2->zb_level == 0); + + /* The objset_phys_t isn't before anything. */ + if (dnp == NULL) + return (B_FALSE); + + zb1nextL0 = (zb1->zb_blkid + 1) << + ((zb1->zb_level) * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT)); + + zb2thisobj = zb2->zb_object ? zb2->zb_object : + zb2->zb_blkid << (DNODE_BLOCK_SHIFT - DNODE_SHIFT); + + if (zb1->zb_object == DMU_META_DNODE_OBJECT) { + uint64_t nextobj = zb1nextL0 * + (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT) >> DNODE_SHIFT; + return (nextobj <= zb2thisobj); + } + + if (zb1->zb_object < zb2thisobj) + return (B_TRUE); + if (zb1->zb_object > zb2thisobj) + return (B_FALSE); + if (zb2->zb_object == DMU_META_DNODE_OBJECT) + return (B_FALSE); + return (zb1nextL0 <= zb2->zb_blkid); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zio_type_name); +EXPORT_SYMBOL(zio_buf_alloc); +EXPORT_SYMBOL(zio_data_buf_alloc); +EXPORT_SYMBOL(zio_buf_alloc_flags); +EXPORT_SYMBOL(zio_buf_free); +EXPORT_SYMBOL(zio_data_buf_free); + +module_param(zio_delay_max, int, 0644); +MODULE_PARM_DESC(zio_delay_max, "Max zio millisec delay before posting event"); + +module_param(zio_requeue_io_start_cut_in_line, int, 0644); +MODULE_PARM_DESC(zio_requeue_io_start_cut_in_line, "Prioritize requeued I/O"); + +module_param(zfs_sync_pass_deferred_free, int, 0644); +MODULE_PARM_DESC(zfs_sync_pass_deferred_free, + "Defer frees starting in this pass"); + +module_param(zfs_sync_pass_dont_compress, int, 0644); +MODULE_PARM_DESC(zfs_sync_pass_dont_compress, + "Don't compress starting in this pass"); + +module_param(zfs_sync_pass_rewrite, int, 0644); +MODULE_PARM_DESC(zfs_sync_pass_rewrite, + "Rewrite new bps starting in this pass"); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zio_checksum.c +++ linux-4.4.0/zfs/module/zfs/zio_checksum.c @@ -0,0 +1,275 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +/* + * Checksum vectors. + * + * In the SPA, everything is checksummed. We support checksum vectors + * for three distinct reasons: + * + * 1. Different kinds of data need different levels of protection. + * For SPA metadata, we always want a very strong checksum. + * For user data, we let users make the trade-off between speed + * and checksum strength. + * + * 2. Cryptographic hash and MAC algorithms are an area of active research. + * It is likely that in future hash functions will be at least as strong + * as current best-of-breed, and may be substantially faster as well. + * We want the ability to take advantage of these new hashes as soon as + * they become available. + * + * 3. If someone develops hardware that can compute a strong hash quickly, + * we want the ability to take advantage of that hardware. + * + * Of course, we don't want a checksum upgrade to invalidate existing + * data, so we store the checksum *function* in eight bits of the bp. + * This gives us room for up to 256 different checksum functions. + * + * When writing a block, we always checksum it with the latest-and-greatest + * checksum function of the appropriate strength. When reading a block, + * we compare the expected checksum against the actual checksum, which we + * compute via the checksum function specified by BP_GET_CHECKSUM(bp). + */ + +/*ARGSUSED*/ +static void +zio_checksum_off(const void *buf, uint64_t size, zio_cksum_t *zcp) +{ + ZIO_SET_CHECKSUM(zcp, 0, 0, 0, 0); +} + +zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS] = { + {{NULL, NULL}, 0, 0, 0, "inherit"}, + {{NULL, NULL}, 0, 0, 0, "on"}, + {{zio_checksum_off, zio_checksum_off}, 0, 0, 0, "off"}, + {{zio_checksum_SHA256, zio_checksum_SHA256}, 1, 1, 0, "label"}, + {{zio_checksum_SHA256, zio_checksum_SHA256}, 1, 1, 0, "gang_header"}, + {{fletcher_2_native, fletcher_2_byteswap}, 0, 1, 0, "zilog"}, + {{fletcher_2_native, fletcher_2_byteswap}, 0, 0, 0, "fletcher2"}, + {{fletcher_4_native, fletcher_4_byteswap}, 1, 0, 0, "fletcher4"}, + {{zio_checksum_SHA256, zio_checksum_SHA256}, 1, 0, 1, "sha256"}, + {{fletcher_4_native, fletcher_4_byteswap}, 0, 1, 0, "zilog2"}, +}; + +enum zio_checksum +zio_checksum_select(enum zio_checksum child, enum zio_checksum parent) +{ + ASSERT(child < ZIO_CHECKSUM_FUNCTIONS); + ASSERT(parent < ZIO_CHECKSUM_FUNCTIONS); + ASSERT(parent != ZIO_CHECKSUM_INHERIT && parent != ZIO_CHECKSUM_ON); + + if (child == ZIO_CHECKSUM_INHERIT) + return (parent); + + if (child == ZIO_CHECKSUM_ON) + return (ZIO_CHECKSUM_ON_VALUE); + + return (child); +} + +enum zio_checksum +zio_checksum_dedup_select(spa_t *spa, enum zio_checksum child, + enum zio_checksum parent) +{ + ASSERT((child & ZIO_CHECKSUM_MASK) < ZIO_CHECKSUM_FUNCTIONS); + ASSERT((parent & ZIO_CHECKSUM_MASK) < ZIO_CHECKSUM_FUNCTIONS); + ASSERT(parent != ZIO_CHECKSUM_INHERIT && parent != ZIO_CHECKSUM_ON); + + if (child == ZIO_CHECKSUM_INHERIT) + return (parent); + + if (child == ZIO_CHECKSUM_ON) + return (spa_dedup_checksum(spa)); + + if (child == (ZIO_CHECKSUM_ON | ZIO_CHECKSUM_VERIFY)) + return (spa_dedup_checksum(spa) | ZIO_CHECKSUM_VERIFY); + + ASSERT(zio_checksum_table[child & ZIO_CHECKSUM_MASK].ci_dedup || + (child & ZIO_CHECKSUM_VERIFY) || child == ZIO_CHECKSUM_OFF); + + return (child); +} + +/* + * Set the external verifier for a gang block based on , + * a tuple which is guaranteed to be unique for the life of the pool. + */ +static void +zio_checksum_gang_verifier(zio_cksum_t *zcp, blkptr_t *bp) +{ + const dva_t *dva = BP_IDENTITY(bp); + uint64_t txg = BP_PHYSICAL_BIRTH(bp); + + ASSERT(BP_IS_GANG(bp)); + + ZIO_SET_CHECKSUM(zcp, DVA_GET_VDEV(dva), DVA_GET_OFFSET(dva), txg, 0); +} + +/* + * Set the external verifier for a label block based on its offset. + * The vdev is implicit, and the txg is unknowable at pool open time -- + * hence the logic in vdev_uberblock_load() to find the most recent copy. + */ +static void +zio_checksum_label_verifier(zio_cksum_t *zcp, uint64_t offset) +{ + ZIO_SET_CHECKSUM(zcp, offset, 0, 0, 0); +} + +/* + * Generate the checksum. + */ +void +zio_checksum_compute(zio_t *zio, enum zio_checksum checksum, + void *data, uint64_t size) +{ + blkptr_t *bp = zio->io_bp; + uint64_t offset = zio->io_offset; + zio_checksum_info_t *ci = &zio_checksum_table[checksum]; + zio_cksum_t cksum; + + ASSERT((uint_t)checksum < ZIO_CHECKSUM_FUNCTIONS); + ASSERT(ci->ci_func[0] != NULL); + + if (ci->ci_eck) { + zio_eck_t *eck; + + if (checksum == ZIO_CHECKSUM_ZILOG2) { + zil_chain_t *zilc = data; + + size = P2ROUNDUP_TYPED(zilc->zc_nused, ZIL_MIN_BLKSZ, + uint64_t); + eck = &zilc->zc_eck; + } else { + eck = (zio_eck_t *)((char *)data + size) - 1; + } + if (checksum == ZIO_CHECKSUM_GANG_HEADER) + zio_checksum_gang_verifier(&eck->zec_cksum, bp); + else if (checksum == ZIO_CHECKSUM_LABEL) + zio_checksum_label_verifier(&eck->zec_cksum, offset); + else + bp->blk_cksum = eck->zec_cksum; + eck->zec_magic = ZEC_MAGIC; + ci->ci_func[0](data, size, &cksum); + eck->zec_cksum = cksum; + } else { + ci->ci_func[0](data, size, &bp->blk_cksum); + } +} + +int +zio_checksum_error(zio_t *zio, zio_bad_cksum_t *info) +{ + blkptr_t *bp = zio->io_bp; + uint_t checksum = (bp == NULL ? zio->io_prop.zp_checksum : + (BP_IS_GANG(bp) ? ZIO_CHECKSUM_GANG_HEADER : BP_GET_CHECKSUM(bp))); + int byteswap; + int error; + uint64_t size = (bp == NULL ? zio->io_size : + (BP_IS_GANG(bp) ? SPA_GANGBLOCKSIZE : BP_GET_PSIZE(bp))); + uint64_t offset = zio->io_offset; + void *data = zio->io_data; + zio_checksum_info_t *ci = &zio_checksum_table[checksum]; + zio_cksum_t actual_cksum, expected_cksum, verifier; + + if (checksum >= ZIO_CHECKSUM_FUNCTIONS || ci->ci_func[0] == NULL) + return (SET_ERROR(EINVAL)); + + if (ci->ci_eck) { + zio_eck_t *eck; + + if (checksum == ZIO_CHECKSUM_ZILOG2) { + zil_chain_t *zilc = data; + uint64_t nused; + + eck = &zilc->zc_eck; + if (eck->zec_magic == ZEC_MAGIC) + nused = zilc->zc_nused; + else if (eck->zec_magic == BSWAP_64(ZEC_MAGIC)) + nused = BSWAP_64(zilc->zc_nused); + else + return (SET_ERROR(ECKSUM)); + + if (nused > size) + return (SET_ERROR(ECKSUM)); + + size = P2ROUNDUP_TYPED(nused, ZIL_MIN_BLKSZ, uint64_t); + } else { + eck = (zio_eck_t *)((char *)data + size) - 1; + } + + if (checksum == ZIO_CHECKSUM_GANG_HEADER) + zio_checksum_gang_verifier(&verifier, bp); + else if (checksum == ZIO_CHECKSUM_LABEL) + zio_checksum_label_verifier(&verifier, offset); + else + verifier = bp->blk_cksum; + + byteswap = (eck->zec_magic == BSWAP_64(ZEC_MAGIC)); + + if (byteswap) + byteswap_uint64_array(&verifier, sizeof (zio_cksum_t)); + + expected_cksum = eck->zec_cksum; + eck->zec_cksum = verifier; + ci->ci_func[byteswap](data, size, &actual_cksum); + eck->zec_cksum = expected_cksum; + + if (byteswap) + byteswap_uint64_array(&expected_cksum, + sizeof (zio_cksum_t)); + } else { + ASSERT(!BP_IS_GANG(bp)); + byteswap = BP_SHOULD_BYTESWAP(bp); + expected_cksum = bp->blk_cksum; + ci->ci_func[byteswap](data, size, &actual_cksum); + } + + info->zbc_expected = expected_cksum; + info->zbc_actual = actual_cksum; + info->zbc_checksum_name = ci->ci_name; + info->zbc_byteswapped = byteswap; + info->zbc_injected = 0; + info->zbc_has_cksum = 1; + + if (!ZIO_CHECKSUM_EQUAL(actual_cksum, expected_cksum)) + return (SET_ERROR(ECKSUM)); + + if (zio_injection_enabled && !zio->io_error && + (error = zio_handle_fault_injection(zio, ECKSUM)) != 0) { + + info->zbc_injected = 1; + return (error); + } + + return (0); +} --- linux-4.4.0.orig/zfs/module/zfs/zio_compress.c +++ linux-4.4.0/zfs/module/zfs/zio_compress.c @@ -0,0 +1,134 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +/* + * Compression vectors. + */ + +zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS] = { + {NULL, NULL, 0, "inherit"}, + {NULL, NULL, 0, "on"}, + {NULL, NULL, 0, "uncompressed"}, + {lzjb_compress, lzjb_decompress, 0, "lzjb"}, + {NULL, NULL, 0, "empty"}, + {gzip_compress, gzip_decompress, 1, "gzip-1"}, + {gzip_compress, gzip_decompress, 2, "gzip-2"}, + {gzip_compress, gzip_decompress, 3, "gzip-3"}, + {gzip_compress, gzip_decompress, 4, "gzip-4"}, + {gzip_compress, gzip_decompress, 5, "gzip-5"}, + {gzip_compress, gzip_decompress, 6, "gzip-6"}, + {gzip_compress, gzip_decompress, 7, "gzip-7"}, + {gzip_compress, gzip_decompress, 8, "gzip-8"}, + {gzip_compress, gzip_decompress, 9, "gzip-9"}, + {zle_compress, zle_decompress, 64, "zle"}, + {lz4_compress_zfs, lz4_decompress_zfs, 0, "lz4"}, +}; + +enum zio_compress +zio_compress_select(spa_t *spa, enum zio_compress child, + enum zio_compress parent) +{ + enum zio_compress result; + + ASSERT(child < ZIO_COMPRESS_FUNCTIONS); + ASSERT(parent < ZIO_COMPRESS_FUNCTIONS); + ASSERT(parent != ZIO_COMPRESS_INHERIT); + + result = child; + if (result == ZIO_COMPRESS_INHERIT) + result = parent; + + if (result == ZIO_COMPRESS_ON) { + if (spa_feature_is_active(spa, SPA_FEATURE_LZ4_COMPRESS)) + result = ZIO_COMPRESS_LZ4_ON_VALUE; + else + result = ZIO_COMPRESS_LEGACY_ON_VALUE; + } + + return (result); +} + +size_t +zio_compress_data(enum zio_compress c, void *src, void *dst, size_t s_len) +{ + uint64_t *word, *word_end; + size_t c_len, d_len; + zio_compress_info_t *ci = &zio_compress_table[c]; + + ASSERT((uint_t)c < ZIO_COMPRESS_FUNCTIONS); + ASSERT((uint_t)c == ZIO_COMPRESS_EMPTY || ci->ci_compress != NULL); + + /* + * If the data is all zeroes, we don't even need to allocate + * a block for it. We indicate this by returning zero size. + */ + word_end = (uint64_t *)((char *)src + s_len); + for (word = src; word < word_end; word++) + if (*word != 0) + break; + + if (word == word_end) + return (0); + + if (c == ZIO_COMPRESS_EMPTY) + return (s_len); + + /* Compress at least 12.5% */ + d_len = s_len - (s_len >> 3); + c_len = ci->ci_compress(src, dst, s_len, d_len, ci->ci_level); + + if (c_len > d_len) + return (s_len); + + ASSERT3U(c_len, <=, d_len); + return (c_len); +} + +int +zio_decompress_data(enum zio_compress c, void *src, void *dst, + size_t s_len, size_t d_len) +{ + zio_compress_info_t *ci = &zio_compress_table[c]; + + if ((uint_t)c >= ZIO_COMPRESS_FUNCTIONS || ci->ci_decompress == NULL) + return (SET_ERROR(EINVAL)); + + return (ci->ci_decompress(src, dst, s_len, d_len, ci->ci_level)); +} --- linux-4.4.0.orig/zfs/module/zfs/zio_inject.c +++ linux-4.4.0/zfs/module/zfs/zio_inject.c @@ -0,0 +1,539 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 by Delphix. All rights reserved. + */ + +/* + * ZFS fault injection + * + * To handle fault injection, we keep track of a series of zinject_record_t + * structures which describe which logical block(s) should be injected with a + * fault. These are kept in a global list. Each record corresponds to a given + * spa_t and maintains a special hold on the spa_t so that it cannot be deleted + * or exported while the injection record exists. + * + * Device level injection is done using the 'zi_guid' field. If this is set, it + * means that the error is destined for a particular device, not a piece of + * data. + * + * This is a rather poor data structure and algorithm, but we don't expect more + * than a few faults at any one time, so it should be sufficient for our needs. + */ + +#include +#include +#include +#include +#include +#include + +uint32_t zio_injection_enabled = 0; + +typedef struct inject_handler { + int zi_id; + spa_t *zi_spa; + zinject_record_t zi_record; + list_node_t zi_link; +} inject_handler_t; + +static list_t inject_handlers; +static krwlock_t inject_lock; +static int inject_next_id = 1; + +/* + * Returns true if the given record matches the I/O in progress. + */ +static boolean_t +zio_match_handler(zbookmark_phys_t *zb, uint64_t type, + zinject_record_t *record, int error) +{ + /* + * Check for a match against the MOS, which is based on type + */ + if (zb->zb_objset == DMU_META_OBJSET && + record->zi_objset == DMU_META_OBJSET && + record->zi_object == DMU_META_DNODE_OBJECT) { + if (record->zi_type == DMU_OT_NONE || + type == record->zi_type) + return (record->zi_freq == 0 || + spa_get_random(100) < record->zi_freq); + else + return (B_FALSE); + } + + /* + * Check for an exact match. + */ + if (zb->zb_objset == record->zi_objset && + zb->zb_object == record->zi_object && + zb->zb_level == record->zi_level && + zb->zb_blkid >= record->zi_start && + zb->zb_blkid <= record->zi_end && + error == record->zi_error) + return (record->zi_freq == 0 || + spa_get_random(100) < record->zi_freq); + + return (B_FALSE); +} + +/* + * Panic the system when a config change happens in the function + * specified by tag. + */ +void +zio_handle_panic_injection(spa_t *spa, char *tag, uint64_t type) +{ + inject_handler_t *handler; + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + if (spa != handler->zi_spa) + continue; + + if (handler->zi_record.zi_type == type && + strcmp(tag, handler->zi_record.zi_func) == 0) + panic("Panic requested in function %s\n", tag); + } + + rw_exit(&inject_lock); +} + +/* + * Determine if the I/O in question should return failure. Returns the errno + * to be returned to the caller. + */ +int +zio_handle_fault_injection(zio_t *zio, int error) +{ + int ret = 0; + inject_handler_t *handler; + + /* + * Ignore I/O not associated with any logical data. + */ + if (zio->io_logical == NULL) + return (0); + + /* + * Currently, we only support fault injection on reads. + */ + if (zio->io_type != ZIO_TYPE_READ) + return (0); + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + if (zio->io_spa != handler->zi_spa || + handler->zi_record.zi_cmd != ZINJECT_DATA_FAULT) + continue; + + /* If this handler matches, return EIO */ + if (zio_match_handler(&zio->io_logical->io_bookmark, + zio->io_bp ? BP_GET_TYPE(zio->io_bp) : DMU_OT_NONE, + &handler->zi_record, error)) { + ret = error; + break; + } + } + + rw_exit(&inject_lock); + + return (ret); +} + +/* + * Determine if the zio is part of a label update and has an injection + * handler associated with that portion of the label. Currently, we + * allow error injection in either the nvlist or the uberblock region of + * of the vdev label. + */ +int +zio_handle_label_injection(zio_t *zio, int error) +{ + inject_handler_t *handler; + vdev_t *vd = zio->io_vd; + uint64_t offset = zio->io_offset; + int label; + int ret = 0; + + if (offset >= VDEV_LABEL_START_SIZE && + offset < vd->vdev_psize - VDEV_LABEL_END_SIZE) + return (0); + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + uint64_t start = handler->zi_record.zi_start; + uint64_t end = handler->zi_record.zi_end; + + if (handler->zi_record.zi_cmd != ZINJECT_LABEL_FAULT) + continue; + + /* + * The injection region is the relative offsets within a + * vdev label. We must determine the label which is being + * updated and adjust our region accordingly. + */ + label = vdev_label_number(vd->vdev_psize, offset); + start = vdev_label_offset(vd->vdev_psize, label, start); + end = vdev_label_offset(vd->vdev_psize, label, end); + + if (zio->io_vd->vdev_guid == handler->zi_record.zi_guid && + (offset >= start && offset <= end)) { + ret = error; + break; + } + } + rw_exit(&inject_lock); + return (ret); +} + + +int +zio_handle_device_injection(vdev_t *vd, zio_t *zio, int error) +{ + inject_handler_t *handler; + int ret = 0; + + /* + * We skip over faults in the labels unless it's during + * device open (i.e. zio == NULL). + */ + if (zio != NULL) { + uint64_t offset = zio->io_offset; + + if (offset < VDEV_LABEL_START_SIZE || + offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE) + return (0); + } + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + if (handler->zi_record.zi_cmd != ZINJECT_DEVICE_FAULT) + continue; + + if (vd->vdev_guid == handler->zi_record.zi_guid) { + if (handler->zi_record.zi_failfast && + (zio == NULL || (zio->io_flags & + (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD)))) { + continue; + } + + /* Handle type specific I/O failures */ + if (zio != NULL && + handler->zi_record.zi_iotype != ZIO_TYPES && + handler->zi_record.zi_iotype != zio->io_type) + continue; + + if (handler->zi_record.zi_error == error) { + /* + * For a failed open, pretend like the device + * has gone away. + */ + if (error == ENXIO) + vd->vdev_stat.vs_aux = + VDEV_AUX_OPEN_FAILED; + + /* + * Treat these errors as if they had been + * retried so that all the appropriate stats + * and FMA events are generated. + */ + if (!handler->zi_record.zi_failfast && + zio != NULL) + zio->io_flags |= ZIO_FLAG_IO_RETRY; + + ret = error; + break; + } + if (handler->zi_record.zi_error == ENXIO) { + ret = SET_ERROR(EIO); + break; + } + } + } + + rw_exit(&inject_lock); + + return (ret); +} + +/* + * Simulate hardware that ignores cache flushes. For requested number + * of seconds nix the actual writing to disk. + */ +void +zio_handle_ignored_writes(zio_t *zio) +{ + inject_handler_t *handler; + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + /* Ignore errors not destined for this pool */ + if (zio->io_spa != handler->zi_spa || + handler->zi_record.zi_cmd != ZINJECT_IGNORED_WRITES) + continue; + + /* + * Positive duration implies # of seconds, negative + * a number of txgs + */ + if (handler->zi_record.zi_timer == 0) { + if (handler->zi_record.zi_duration > 0) + handler->zi_record.zi_timer = ddi_get_lbolt64(); + else + handler->zi_record.zi_timer = zio->io_txg; + } + + /* Have a "problem" writing 60% of the time */ + if (spa_get_random(100) < 60) + zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES; + break; + } + + rw_exit(&inject_lock); +} + +void +spa_handle_ignored_writes(spa_t *spa) +{ + inject_handler_t *handler; + + if (zio_injection_enabled == 0) + return; + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + if (spa != handler->zi_spa || + handler->zi_record.zi_cmd != ZINJECT_IGNORED_WRITES) + continue; + + if (handler->zi_record.zi_duration > 0) { + VERIFY(handler->zi_record.zi_timer == 0 || + ddi_time_after64( + (int64_t)handler->zi_record.zi_timer + + handler->zi_record.zi_duration * hz, + ddi_get_lbolt64())); + } else { + /* duration is negative so the subtraction here adds */ + VERIFY(handler->zi_record.zi_timer == 0 || + handler->zi_record.zi_timer - + handler->zi_record.zi_duration >= + spa_syncing_txg(spa)); + } + } + + rw_exit(&inject_lock); +} + +uint64_t +zio_handle_io_delay(zio_t *zio) +{ + vdev_t *vd = zio->io_vd; + inject_handler_t *handler; + uint64_t seconds = 0; + + if (zio_injection_enabled == 0) + return (0); + + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) { + + if (handler->zi_record.zi_cmd != ZINJECT_DELAY_IO) + continue; + + if (vd->vdev_guid == handler->zi_record.zi_guid) { + seconds = handler->zi_record.zi_timer; + break; + } + + } + rw_exit(&inject_lock); + return (seconds); +} + +/* + * Create a new handler for the given record. We add it to the list, adding + * a reference to the spa_t in the process. We increment zio_injection_enabled, + * which is the switch to trigger all fault injection. + */ +int +zio_inject_fault(char *name, int flags, int *id, zinject_record_t *record) +{ + inject_handler_t *handler; + int error; + spa_t *spa; + + /* + * If this is pool-wide metadata, make sure we unload the corresponding + * spa_t, so that the next attempt to load it will trigger the fault. + * We call spa_reset() to unload the pool appropriately. + */ + if (flags & ZINJECT_UNLOAD_SPA) + if ((error = spa_reset(name)) != 0) + return (error); + + if (!(flags & ZINJECT_NULL)) { + /* + * spa_inject_ref() will add an injection reference, which will + * prevent the pool from being removed from the namespace while + * still allowing it to be unloaded. + */ + if ((spa = spa_inject_addref(name)) == NULL) + return (SET_ERROR(ENOENT)); + + handler = kmem_alloc(sizeof (inject_handler_t), KM_SLEEP); + + rw_enter(&inject_lock, RW_WRITER); + + *id = handler->zi_id = inject_next_id++; + handler->zi_spa = spa; + handler->zi_record = *record; + list_insert_tail(&inject_handlers, handler); + atomic_add_32(&zio_injection_enabled, 1); + + rw_exit(&inject_lock); + } + + /* + * Flush the ARC, so that any attempts to read this data will end up + * going to the ZIO layer. Note that this is a little overkill, but + * we don't have the necessary ARC interfaces to do anything else, and + * fault injection isn't a performance critical path. + */ + if (flags & ZINJECT_FLUSH_ARC) + /* + * We must use FALSE to ensure arc_flush returns, since + * we're not preventing concurrent ARC insertions. + */ + arc_flush(NULL, FALSE); + + return (0); +} + +/* + * Returns the next record with an ID greater than that supplied to the + * function. Used to iterate over all handlers in the system. + */ +int +zio_inject_list_next(int *id, char *name, size_t buflen, + zinject_record_t *record) +{ + inject_handler_t *handler; + int ret; + + mutex_enter(&spa_namespace_lock); + rw_enter(&inject_lock, RW_READER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) + if (handler->zi_id > *id) + break; + + if (handler) { + *record = handler->zi_record; + *id = handler->zi_id; + (void) strncpy(name, spa_name(handler->zi_spa), buflen); + ret = 0; + } else { + ret = SET_ERROR(ENOENT); + } + + rw_exit(&inject_lock); + mutex_exit(&spa_namespace_lock); + + return (ret); +} + +/* + * Clear the fault handler with the given identifier, or return ENOENT if none + * exists. + */ +int +zio_clear_fault(int id) +{ + inject_handler_t *handler; + + rw_enter(&inject_lock, RW_WRITER); + + for (handler = list_head(&inject_handlers); handler != NULL; + handler = list_next(&inject_handlers, handler)) + if (handler->zi_id == id) + break; + + if (handler == NULL) { + rw_exit(&inject_lock); + return (SET_ERROR(ENOENT)); + } + + list_remove(&inject_handlers, handler); + rw_exit(&inject_lock); + + spa_inject_delref(handler->zi_spa); + kmem_free(handler, sizeof (inject_handler_t)); + atomic_add_32(&zio_injection_enabled, -1); + + return (0); +} + +void +zio_inject_init(void) +{ + rw_init(&inject_lock, NULL, RW_DEFAULT, NULL); + list_create(&inject_handlers, sizeof (inject_handler_t), + offsetof(inject_handler_t, zi_link)); +} + +void +zio_inject_fini(void) +{ + list_destroy(&inject_handlers); + rw_destroy(&inject_lock); +} + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(zio_injection_enabled); +EXPORT_SYMBOL(zio_inject_fault); +EXPORT_SYMBOL(zio_inject_list_next); +EXPORT_SYMBOL(zio_clear_fault); +EXPORT_SYMBOL(zio_handle_fault_injection); +EXPORT_SYMBOL(zio_handle_device_injection); +EXPORT_SYMBOL(zio_handle_label_injection); +#endif --- linux-4.4.0.orig/zfs/module/zfs/zle.c +++ linux-4.4.0/zfs/module/zfs/zle.c @@ -0,0 +1,86 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Zero-length encoding. This is a fast and simple algorithm to eliminate + * runs of zeroes. Each chunk of compressed data begins with a length byte, b. + * If b < n (where n is the compression parameter) then the next b + 1 bytes + * are literal values. If b >= n then the next (256 - b + 1) bytes are zero. + */ +#include +#include + +size_t +zle_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + uchar_t *src = s_start; + uchar_t *dst = d_start; + uchar_t *s_end = src + s_len; + uchar_t *d_end = dst + d_len; + + while (src < s_end && dst < d_end - 1) { + uchar_t *first = src; + uchar_t *len = dst++; + if (src[0] == 0) { + uchar_t *last = src + (256 - n); + while (src < MIN(last, s_end) && src[0] == 0) + src++; + *len = src - first - 1 + n; + } else { + uchar_t *last = src + n; + if (d_end - dst < n) + break; + while (src < MIN(last, s_end) - 1 && (src[0] | src[1])) + *dst++ = *src++; + if (src[0]) + *dst++ = *src++; + *len = src - first - 1; + } + } + return (src == s_end ? dst - (uchar_t *)d_start : s_len); +} + +int +zle_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) +{ + uchar_t *src = s_start; + uchar_t *dst = d_start; + uchar_t *s_end = src + s_len; + uchar_t *d_end = dst + d_len; + + while (src < s_end && dst < d_end) { + int len = 1 + *src++; + if (len <= n) { + while (len-- != 0) + *dst++ = *src++; + } else { + len -= n; + while (len-- != 0) + *dst++ = 0; + } + } + return (dst == d_end ? 0 : -1); +} --- linux-4.4.0.orig/zfs/module/zfs/zpl_ctldir.c +++ linux-4.4.0/zfs/module/zfs/zpl_ctldir.c @@ -0,0 +1,542 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (C) 2011 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * LLNL-CODE-403049. + * Rewritten for Linux by: + * Rohan Puri + * Brian Behlendorf + */ + +#include +#include +#include +#include +#include + +/* + * Common open routine. Disallow any write access. + */ +/* ARGSUSED */ +static int +zpl_common_open(struct inode *ip, struct file *filp) +{ + if (filp->f_mode & FMODE_WRITE) + return (-EACCES); + + return (generic_file_open(ip, filp)); +} + +/* + * Get root directory contents. + */ +static int +zpl_root_iterate(struct file *filp, struct dir_context *ctx) +{ + zfs_sb_t *zsb = ITOZSB(filp->f_path.dentry->d_inode); + int error = 0; + + ZFS_ENTER(zsb); + + if (!dir_emit_dots(filp, ctx)) + goto out; + + if (ctx->pos == 2) { + if (!dir_emit(ctx, ZFS_SNAPDIR_NAME, strlen(ZFS_SNAPDIR_NAME), + ZFSCTL_INO_SNAPDIR, DT_DIR)) + goto out; + + ctx->pos++; + } + + if (ctx->pos == 3) { + if (!dir_emit(ctx, ZFS_SHAREDIR_NAME, strlen(ZFS_SHAREDIR_NAME), + ZFSCTL_INO_SHARES, DT_DIR)) + goto out; + + ctx->pos++; + } +out: + ZFS_EXIT(zsb); + + return (error); +} + +#if !defined(HAVE_VFS_ITERATE) +static int +zpl_root_readdir(struct file *filp, void *dirent, filldir_t filldir) +{ + struct dir_context ctx = DIR_CONTEXT_INIT(dirent, filldir, filp->f_pos); + int error; + + error = zpl_root_iterate(filp, &ctx); + filp->f_pos = ctx.pos; + + return (error); +} +#endif /* HAVE_VFS_ITERATE */ + +/* + * Get root directory attributes. + */ +/* ARGSUSED */ +static int +zpl_root_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + int error; + + error = simple_getattr(mnt, dentry, stat); + stat->atime = CURRENT_TIME; + + return (error); +} + +static struct dentry * +#ifdef HAVE_LOOKUP_NAMEIDATA +zpl_root_lookup(struct inode *dip, struct dentry *dentry, struct nameidata *nd) +#else +zpl_root_lookup(struct inode *dip, struct dentry *dentry, unsigned int flags) +#endif +{ + cred_t *cr = CRED(); + struct inode *ip; + int error; + + crhold(cr); + error = -zfsctl_root_lookup(dip, dname(dentry), &ip, 0, cr, NULL, NULL); + ASSERT3S(error, <=, 0); + crfree(cr); + + if (error) { + if (error == -ENOENT) + return (d_splice_alias(NULL, dentry)); + else + return (ERR_PTR(error)); + } + + return (d_splice_alias(ip, dentry)); +} + +/* + * The '.zfs' control directory file and inode operations. + */ +const struct file_operations zpl_fops_root = { + .open = zpl_common_open, + .llseek = generic_file_llseek, + .read = generic_read_dir, +#ifdef HAVE_VFS_ITERATE + .iterate = zpl_root_iterate, +#else + .readdir = zpl_root_readdir, +#endif +}; + +const struct inode_operations zpl_ops_root = { + .lookup = zpl_root_lookup, + .getattr = zpl_root_getattr, +}; + +#ifdef HAVE_AUTOMOUNT +static struct vfsmount * +zpl_snapdir_automount(struct path *path) +{ + int error; + + error = -zfsctl_snapshot_mount(path, 0); + if (error) + return (ERR_PTR(error)); + + /* + * Rather than returning the new vfsmount for the snapshot we must + * return NULL to indicate a mount collision. This is done because + * the user space mount calls do_add_mount() which adds the vfsmount + * to the name space. If we returned the new mount here it would be + * added again to the vfsmount list resulting in list corruption. + */ + return (NULL); +} +#endif /* HAVE_AUTOMOUNT */ + +/* + * Negative dentries must always be revalidated so newly created snapshots + * can be detected and automounted. Normal dentries should be kept because + * as of the 3.18 kernel revaliding the mountpoint dentry will result in + * the snapshot being immediately unmounted. + */ +static int +#ifdef HAVE_D_REVALIDATE_NAMEIDATA +zpl_snapdir_revalidate(struct dentry *dentry, struct nameidata *i) +#else +zpl_snapdir_revalidate(struct dentry *dentry, unsigned int flags) +#endif +{ + return (!!dentry->d_inode); +} + +dentry_operations_t zpl_dops_snapdirs = { +/* + * Auto mounting of snapshots is only supported for 2.6.37 and + * newer kernels. Prior to this kernel the ops->follow_link() + * callback was used as a hack to trigger the mount. The + * resulting vfsmount was then explicitly grafted in to the + * name space. While it might be possible to add compatibility + * code to accomplish this it would require considerable care. + */ +#ifdef HAVE_AUTOMOUNT + .d_automount = zpl_snapdir_automount, +#endif /* HAVE_AUTOMOUNT */ + .d_revalidate = zpl_snapdir_revalidate, +}; + +static struct dentry * +#ifdef HAVE_LOOKUP_NAMEIDATA +zpl_snapdir_lookup(struct inode *dip, struct dentry *dentry, + struct nameidata *nd) +#else +zpl_snapdir_lookup(struct inode *dip, struct dentry *dentry, + unsigned int flags) +#endif + +{ + fstrans_cookie_t cookie; + cred_t *cr = CRED(); + struct inode *ip = NULL; + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfsctl_snapdir_lookup(dip, dname(dentry), &ip, + 0, cr, NULL, NULL); + ASSERT3S(error, <=, 0); + spl_fstrans_unmark(cookie); + crfree(cr); + + if (error && error != -ENOENT) + return (ERR_PTR(error)); + + ASSERT(error == 0 || ip == NULL); + d_clear_d_op(dentry); + d_set_d_op(dentry, &zpl_dops_snapdirs); +#ifdef HAVE_AUTOMOUNT + dentry->d_flags |= DCACHE_NEED_AUTOMOUNT; +#endif + + return (d_splice_alias(ip, dentry)); +} + +static int +zpl_snapdir_iterate(struct file *filp, struct dir_context *ctx) +{ + zfs_sb_t *zsb = ITOZSB(filp->f_path.dentry->d_inode); + fstrans_cookie_t cookie; + char snapname[MAXNAMELEN]; + boolean_t case_conflict; + uint64_t id, pos; + int error = 0; + + ZFS_ENTER(zsb); + cookie = spl_fstrans_mark(); + + if (!dir_emit_dots(filp, ctx)) + goto out; + + pos = ctx->pos; + while (error == 0) { + dsl_pool_config_enter(dmu_objset_pool(zsb->z_os), FTAG); + error = -dmu_snapshot_list_next(zsb->z_os, MAXNAMELEN, + snapname, &id, &pos, &case_conflict); + dsl_pool_config_exit(dmu_objset_pool(zsb->z_os), FTAG); + if (error) + goto out; + + if (!dir_emit(ctx, snapname, strlen(snapname), + ZFSCTL_INO_SHARES - id, DT_DIR)) + goto out; + + ctx->pos = pos; + } +out: + spl_fstrans_unmark(cookie); + ZFS_EXIT(zsb); + + if (error == -ENOENT) + return (0); + + return (error); +} + +#if !defined(HAVE_VFS_ITERATE) +static int +zpl_snapdir_readdir(struct file *filp, void *dirent, filldir_t filldir) +{ + struct dir_context ctx = DIR_CONTEXT_INIT(dirent, filldir, filp->f_pos); + int error; + + error = zpl_snapdir_iterate(filp, &ctx); + filp->f_pos = ctx.pos; + + return (error); +} +#endif /* HAVE_VFS_ITERATE */ + +int +zpl_snapdir_rename(struct inode *sdip, struct dentry *sdentry, + struct inode *tdip, struct dentry *tdentry) +{ + cred_t *cr = CRED(); + int error; + + crhold(cr); + error = -zfsctl_snapdir_rename(sdip, dname(sdentry), + tdip, dname(tdentry), cr, 0); + ASSERT3S(error, <=, 0); + crfree(cr); + + return (error); +} + +static int +zpl_snapdir_rmdir(struct inode *dip, struct dentry *dentry) +{ + cred_t *cr = CRED(); + int error; + + crhold(cr); + error = -zfsctl_snapdir_remove(dip, dname(dentry), cr, 0); + ASSERT3S(error, <=, 0); + crfree(cr); + + return (error); +} + +static int +zpl_snapdir_mkdir(struct inode *dip, struct dentry *dentry, zpl_umode_t mode) +{ + cred_t *cr = CRED(); + vattr_t *vap; + struct inode *ip; + int error; + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + zpl_vap_init(vap, dip, mode | S_IFDIR, cr); + + error = -zfsctl_snapdir_mkdir(dip, dname(dentry), vap, &ip, cr, 0); + if (error == 0) { + d_clear_d_op(dentry); + d_set_d_op(dentry, &zpl_dops_snapdirs); + d_instantiate(dentry, ip); + } + + kmem_free(vap, sizeof (vattr_t)); + ASSERT3S(error, <=, 0); + crfree(cr); + + return (error); +} + +/* + * Get snapshot directory attributes. + */ +/* ARGSUSED */ +static int +zpl_snapdir_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + zfs_sb_t *zsb = ITOZSB(dentry->d_inode); + int error; + + ZFS_ENTER(zsb); + error = simple_getattr(mnt, dentry, stat); + stat->nlink = stat->size = 2; + stat->ctime = stat->mtime = dmu_objset_snap_cmtime(zsb->z_os); + stat->atime = CURRENT_TIME; + ZFS_EXIT(zsb); + + return (error); +} + +/* + * The '.zfs/snapshot' directory file operations. These mainly control + * generating the list of available snapshots when doing an 'ls' in the + * directory. See zpl_snapdir_readdir(). + */ +const struct file_operations zpl_fops_snapdir = { + .open = zpl_common_open, + .llseek = generic_file_llseek, + .read = generic_read_dir, +#ifdef HAVE_VFS_ITERATE + .iterate = zpl_snapdir_iterate, +#else + .readdir = zpl_snapdir_readdir, +#endif + +}; + +/* + * The '.zfs/snapshot' directory inode operations. These mainly control + * creating an inode for a snapshot directory and initializing the needed + * infrastructure to automount the snapshot. See zpl_snapdir_lookup(). + */ +const struct inode_operations zpl_ops_snapdir = { + .lookup = zpl_snapdir_lookup, + .getattr = zpl_snapdir_getattr, + .rename = zpl_snapdir_rename, + .rmdir = zpl_snapdir_rmdir, + .mkdir = zpl_snapdir_mkdir, +}; + +static struct dentry * +#ifdef HAVE_LOOKUP_NAMEIDATA +zpl_shares_lookup(struct inode *dip, struct dentry *dentry, + struct nameidata *nd) +#else +zpl_shares_lookup(struct inode *dip, struct dentry *dentry, + unsigned int flags) +#endif +{ + fstrans_cookie_t cookie; + cred_t *cr = CRED(); + struct inode *ip = NULL; + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfsctl_shares_lookup(dip, dname(dentry), &ip, + 0, cr, NULL, NULL); + ASSERT3S(error, <=, 0); + spl_fstrans_unmark(cookie); + crfree(cr); + + if (error) { + if (error == -ENOENT) + return (d_splice_alias(NULL, dentry)); + else + return (ERR_PTR(error)); + } + + return (d_splice_alias(ip, dentry)); +} + +static int +zpl_shares_iterate(struct file *filp, struct dir_context *ctx) +{ + fstrans_cookie_t cookie; + cred_t *cr = CRED(); + zfs_sb_t *zsb = ITOZSB(filp->f_path.dentry->d_inode); + znode_t *dzp; + int error = 0; + + ZFS_ENTER(zsb); + cookie = spl_fstrans_mark(); + + if (zsb->z_shares_dir == 0) { + dir_emit_dots(filp, ctx); + goto out; + } + + error = -zfs_zget(zsb, zsb->z_shares_dir, &dzp); + if (error) + goto out; + + crhold(cr); + error = -zfs_readdir(ZTOI(dzp), ctx, cr); + crfree(cr); + + iput(ZTOI(dzp)); +out: + spl_fstrans_unmark(cookie); + ZFS_EXIT(zsb); + ASSERT3S(error, <=, 0); + + return (error); +} + +#if !defined(HAVE_VFS_ITERATE) +static int +zpl_shares_readdir(struct file *filp, void *dirent, filldir_t filldir) +{ + struct dir_context ctx = DIR_CONTEXT_INIT(dirent, filldir, filp->f_pos); + int error; + + error = zpl_shares_iterate(filp, &ctx); + filp->f_pos = ctx.pos; + + return (error); +} +#endif /* HAVE_VFS_ITERATE */ + +/* ARGSUSED */ +static int +zpl_shares_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + struct inode *ip = dentry->d_inode; + zfs_sb_t *zsb = ITOZSB(ip); + znode_t *dzp; + int error; + + ZFS_ENTER(zsb); + + if (zsb->z_shares_dir == 0) { + error = simple_getattr(mnt, dentry, stat); + stat->nlink = stat->size = 2; + stat->atime = CURRENT_TIME; + ZFS_EXIT(zsb); + return (error); + } + + error = -zfs_zget(zsb, zsb->z_shares_dir, &dzp); + if (error == 0) { + error = -zfs_getattr_fast(ZTOI(dzp), stat); + iput(ZTOI(dzp)); + } + + ZFS_EXIT(zsb); + ASSERT3S(error, <=, 0); + + return (error); +} + +/* + * The '.zfs/shares' directory file operations. + */ +const struct file_operations zpl_fops_shares = { + .open = zpl_common_open, + .llseek = generic_file_llseek, + .read = generic_read_dir, +#ifdef HAVE_VFS_ITERATE + .iterate = zpl_shares_iterate, +#else + .readdir = zpl_shares_readdir, +#endif + +}; + +/* + * The '.zfs/shares' directory inode operations. + */ +const struct inode_operations zpl_ops_shares = { + .lookup = zpl_shares_lookup, + .getattr = zpl_shares_getattr, +}; --- linux-4.4.0.orig/zfs/module/zfs/zpl_export.c +++ linux-4.4.0/zfs/module/zfs/zpl_export.c @@ -0,0 +1,176 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011 Gunnar Beutner + * Copyright (c) 2012 Cyril Plisko. All rights reserved. + */ + + +#include +#include +#include +#include + + +static int +#ifdef HAVE_ENCODE_FH_WITH_INODE +zpl_encode_fh(struct inode *ip, __u32 *fh, int *max_len, struct inode *parent) +{ +#else +zpl_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len, int connectable) +{ + struct inode *ip = dentry->d_inode; +#endif /* HAVE_ENCODE_FH_WITH_INODE */ + fstrans_cookie_t cookie; + fid_t *fid = (fid_t *)fh; + int len_bytes, rc; + + len_bytes = *max_len * sizeof (__u32); + + if (len_bytes < offsetof(fid_t, fid_data)) + return (255); + + fid->fid_len = len_bytes - offsetof(fid_t, fid_data); + cookie = spl_fstrans_mark(); + + if (zfsctl_is_node(ip)) + rc = zfsctl_fid(ip, fid); + else + rc = zfs_fid(ip, fid); + + spl_fstrans_unmark(cookie); + len_bytes = offsetof(fid_t, fid_data) + fid->fid_len; + *max_len = roundup(len_bytes, sizeof (__u32)) / sizeof (__u32); + + return (rc == 0 ? FILEID_INO32_GEN : 255); +} + +static struct dentry * +zpl_dentry_obtain_alias(struct inode *ip) +{ + struct dentry *result; + +#ifdef HAVE_D_OBTAIN_ALIAS + result = d_obtain_alias(ip); +#else + result = d_alloc_anon(ip); + + if (result == NULL) { + iput(ip); + result = ERR_PTR(-ENOMEM); + } +#endif /* HAVE_D_OBTAIN_ALIAS */ + + return (result); +} + +static struct dentry * +zpl_fh_to_dentry(struct super_block *sb, struct fid *fh, + int fh_len, int fh_type) +{ + fid_t *fid = (fid_t *)fh; + fstrans_cookie_t cookie; + struct inode *ip; + int len_bytes, rc; + + len_bytes = fh_len * sizeof (__u32); + + if (fh_type != FILEID_INO32_GEN || + len_bytes < offsetof(fid_t, fid_data) || + len_bytes < offsetof(fid_t, fid_data) + fid->fid_len) + return (ERR_PTR(-EINVAL)); + + cookie = spl_fstrans_mark(); + rc = zfs_vget(sb, &ip, fid); + spl_fstrans_unmark(cookie); + + if (rc) { + /* + * If we see ENOENT it might mean that an NFSv4 * client + * is using a cached inode value in a file handle and + * that the sought after file has had its inode changed + * by a third party. So change the error to ESTALE + * which will trigger a full lookup by the client and + * will find the new filename/inode pair if it still + * exists. + */ + if (rc == ENOENT) + rc = ESTALE; + + return (ERR_PTR(-rc)); + } + + ASSERT((ip != NULL) && !IS_ERR(ip)); + + return (zpl_dentry_obtain_alias(ip)); +} + +static struct dentry * +zpl_get_parent(struct dentry *child) +{ + cred_t *cr = CRED(); + fstrans_cookie_t cookie; + struct inode *ip; + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_lookup(child->d_inode, "..", &ip, 0, cr, NULL, NULL); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + if (error) + return (ERR_PTR(error)); + + return (zpl_dentry_obtain_alias(ip)); +} + +#ifdef HAVE_COMMIT_METADATA +static int +zpl_commit_metadata(struct inode *inode) +{ + cred_t *cr = CRED(); + fstrans_cookie_t cookie; + int error; + + if (zfsctl_is_node(inode)) + return (0); + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_fsync(inode, 0, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} +#endif /* HAVE_COMMIT_METADATA */ + +const struct export_operations zpl_export_operations = { + .encode_fh = zpl_encode_fh, + .fh_to_dentry = zpl_fh_to_dentry, + .get_parent = zpl_get_parent, +#ifdef HAVE_COMMIT_METADATA + .commit_metadata = zpl_commit_metadata, +#endif /* HAVE_COMMIT_METADATA */ +}; --- linux-4.4.0.orig/zfs/module/zfs/zpl_file.c +++ linux-4.4.0/zfs/module/zfs/zpl_file.c @@ -0,0 +1,851 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011, Lawrence Livermore National Security, LLC. + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + + +#include +#include +#include +#include +#include + + +static int +zpl_open(struct inode *ip, struct file *filp) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + error = generic_file_open(ip, filp); + if (error) + return (error); + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_open(ip, filp->f_mode, filp->f_flags, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_release(struct inode *ip, struct file *filp) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + if (ITOZ(ip)->z_atime_dirty) + zfs_mark_inode_dirty(ip); + + crhold(cr); + error = -zfs_close(ip, filp->f_flags, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_iterate(struct file *filp, struct dir_context *ctx) +{ + struct dentry *dentry = filp->f_path.dentry; + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_readdir(dentry->d_inode, ctx, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +#if !defined(HAVE_VFS_ITERATE) +static int +zpl_readdir(struct file *filp, void *dirent, filldir_t filldir) +{ + struct dir_context ctx = DIR_CONTEXT_INIT(dirent, filldir, filp->f_pos); + int error; + + error = zpl_iterate(filp, &ctx); + filp->f_pos = ctx.pos; + + return (error); +} +#endif /* HAVE_VFS_ITERATE */ + +#if defined(HAVE_FSYNC_WITH_DENTRY) +/* + * Linux 2.6.x - 2.6.34 API, + * Through 2.6.34 the nfsd kernel server would pass a NULL 'file struct *' + * to the fops->fsync() hook. For this reason, we must be careful not to + * use filp unconditionally. + */ +static int +zpl_fsync(struct file *filp, struct dentry *dentry, int datasync) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_fsync(dentry->d_inode, datasync, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_aio_fsync(struct kiocb *kiocb, int datasync) +{ + struct file *filp = kiocb->ki_filp; + return (zpl_fsync(filp, filp->f_path.dentry, datasync)); +} +#elif defined(HAVE_FSYNC_WITHOUT_DENTRY) +/* + * Linux 2.6.35 - 3.0 API, + * As of 2.6.35 the dentry argument to the fops->fsync() hook was deemed + * redundant. The dentry is still accessible via filp->f_path.dentry, + * and we are guaranteed that filp will never be NULL. + */ +static int +zpl_fsync(struct file *filp, int datasync) +{ + struct inode *inode = filp->f_mapping->host; + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_fsync(inode, datasync, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_aio_fsync(struct kiocb *kiocb, int datasync) +{ + return (zpl_fsync(kiocb->ki_filp, datasync)); +} +#elif defined(HAVE_FSYNC_RANGE) +/* + * Linux 3.1 - 3.x API, + * As of 3.1 the responsibility to call filemap_write_and_wait_range() has + * been pushed down in to the .fsync() vfs hook. Additionally, the i_mutex + * lock is no longer held by the caller, for zfs we don't require the lock + * to be held so we don't acquire it. + */ +static int +zpl_fsync(struct file *filp, loff_t start, loff_t end, int datasync) +{ + struct inode *inode = filp->f_mapping->host; + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + error = filemap_write_and_wait_range(inode->i_mapping, start, end); + if (error) + return (error); + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_fsync(inode, datasync, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_aio_fsync(struct kiocb *kiocb, int datasync) +{ + return (zpl_fsync(kiocb->ki_filp, kiocb->ki_pos, -1, datasync)); +} +#else +#error "Unsupported fops->fsync() implementation" +#endif + +static ssize_t +zpl_read_common_iovec(struct inode *ip, const struct iovec *iovp, size_t count, + unsigned long nr_segs, loff_t *ppos, uio_seg_t segment, int flags, + cred_t *cr, size_t skip) +{ + ssize_t read; + uio_t uio; + int error; + fstrans_cookie_t cookie; + + uio.uio_iov = iovp; + uio.uio_skip = skip; + uio.uio_resid = count; + uio.uio_iovcnt = nr_segs; + uio.uio_loffset = *ppos; + uio.uio_limit = MAXOFFSET_T; + uio.uio_segflg = segment; + + cookie = spl_fstrans_mark(); + error = -zfs_read(ip, &uio, flags, cr); + spl_fstrans_unmark(cookie); + if (error < 0) + return (error); + + read = count - uio.uio_resid; + *ppos += read; + task_io_account_read(read); + + return (read); +} + +inline ssize_t +zpl_read_common(struct inode *ip, const char *buf, size_t len, loff_t *ppos, + uio_seg_t segment, int flags, cred_t *cr) +{ + struct iovec iov; + + iov.iov_base = (void *)buf; + iov.iov_len = len; + + return (zpl_read_common_iovec(ip, &iov, len, 1, ppos, segment, + flags, cr, 0)); +} + +static ssize_t +zpl_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) +{ + cred_t *cr = CRED(); + ssize_t read; + + crhold(cr); + read = zpl_read_common(filp->f_mapping->host, buf, len, ppos, + UIO_USERSPACE, filp->f_flags, cr); + crfree(cr); + + return (read); +} + +static ssize_t +zpl_iter_read_common(struct kiocb *kiocb, const struct iovec *iovp, + unsigned long nr_segs, size_t count, uio_seg_t seg, size_t skip) +{ + cred_t *cr = CRED(); + struct file *filp = kiocb->ki_filp; + ssize_t read; + + crhold(cr); + read = zpl_read_common_iovec(filp->f_mapping->host, iovp, count, + nr_segs, &kiocb->ki_pos, seg, filp->f_flags, cr, skip); + crfree(cr); + + return (read); +} + +#if defined(HAVE_VFS_RW_ITERATE) +static ssize_t +zpl_iter_read(struct kiocb *kiocb, struct iov_iter *to) +{ + ssize_t ret; + uio_seg_t seg = UIO_USERSPACE; + if (to->type & ITER_KVEC) + seg = UIO_SYSSPACE; + if (to->type & ITER_BVEC) + seg = UIO_BVEC; + ret = zpl_iter_read_common(kiocb, to->iov, to->nr_segs, + iov_iter_count(to), seg, to->iov_offset); + if (ret > 0) + iov_iter_advance(to, ret); + return (ret); +} +#else +static ssize_t +zpl_aio_read(struct kiocb *kiocb, const struct iovec *iovp, + unsigned long nr_segs, loff_t pos) +{ + return (zpl_iter_read_common(kiocb, iovp, nr_segs, kiocb->ki_nbytes, + UIO_USERSPACE, 0)); +} +#endif /* HAVE_VFS_RW_ITERATE */ + +static ssize_t +zpl_write_common_iovec(struct inode *ip, const struct iovec *iovp, size_t count, + unsigned long nr_segs, loff_t *ppos, uio_seg_t segment, int flags, + cred_t *cr, size_t skip) +{ + ssize_t wrote; + uio_t uio; + int error; + fstrans_cookie_t cookie; + + if (flags & O_APPEND) + *ppos = i_size_read(ip); + + uio.uio_iov = iovp; + uio.uio_skip = skip; + uio.uio_resid = count; + uio.uio_iovcnt = nr_segs; + uio.uio_loffset = *ppos; + uio.uio_limit = MAXOFFSET_T; + uio.uio_segflg = segment; + + cookie = spl_fstrans_mark(); + error = -zfs_write(ip, &uio, flags, cr); + spl_fstrans_unmark(cookie); + if (error < 0) + return (error); + + wrote = count - uio.uio_resid; + *ppos += wrote; + task_io_account_write(wrote); + + return (wrote); +} +inline ssize_t +zpl_write_common(struct inode *ip, const char *buf, size_t len, loff_t *ppos, + uio_seg_t segment, int flags, cred_t *cr) +{ + struct iovec iov; + + iov.iov_base = (void *)buf; + iov.iov_len = len; + + return (zpl_write_common_iovec(ip, &iov, len, 1, ppos, segment, + flags, cr, 0)); +} + +static ssize_t +zpl_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) +{ + cred_t *cr = CRED(); + ssize_t wrote; + + crhold(cr); + wrote = zpl_write_common(filp->f_mapping->host, buf, len, ppos, + UIO_USERSPACE, filp->f_flags, cr); + crfree(cr); + + return (wrote); +} + +static ssize_t +zpl_iter_write_common(struct kiocb *kiocb, const struct iovec *iovp, + unsigned long nr_segs, size_t count, uio_seg_t seg, size_t skip) +{ + cred_t *cr = CRED(); + struct file *filp = kiocb->ki_filp; + ssize_t wrote; + + crhold(cr); + wrote = zpl_write_common_iovec(filp->f_mapping->host, iovp, count, + nr_segs, &kiocb->ki_pos, seg, filp->f_flags, cr, skip); + crfree(cr); + + return (wrote); +} + +#if defined(HAVE_VFS_RW_ITERATE) +static ssize_t +zpl_iter_write(struct kiocb *kiocb, struct iov_iter *from) +{ + ssize_t ret; + uio_seg_t seg = UIO_USERSPACE; + if (from->type & ITER_KVEC) + seg = UIO_SYSSPACE; + if (from->type & ITER_BVEC) + seg = UIO_BVEC; + ret = zpl_iter_write_common(kiocb, from->iov, from->nr_segs, + iov_iter_count(from), seg, from->iov_offset); + if (ret > 0) + iov_iter_advance(from, ret); + return (ret); +} +#else +static ssize_t +zpl_aio_write(struct kiocb *kiocb, const struct iovec *iovp, + unsigned long nr_segs, loff_t pos) +{ + return (zpl_iter_write_common(kiocb, iovp, nr_segs, kiocb->ki_nbytes, + UIO_USERSPACE, 0)); +} +#endif /* HAVE_VFS_RW_ITERATE */ + +static loff_t +zpl_llseek(struct file *filp, loff_t offset, int whence) +{ +#if defined(SEEK_HOLE) && defined(SEEK_DATA) + fstrans_cookie_t cookie; + + if (whence == SEEK_DATA || whence == SEEK_HOLE) { + struct inode *ip = filp->f_mapping->host; + loff_t maxbytes = ip->i_sb->s_maxbytes; + loff_t error; + + spl_inode_lock(ip); + cookie = spl_fstrans_mark(); + error = -zfs_holey(ip, whence, &offset); + spl_fstrans_unmark(cookie); + if (error == 0) + error = lseek_execute(filp, ip, offset, maxbytes); + spl_inode_unlock(ip); + + return (error); + } +#endif /* SEEK_HOLE && SEEK_DATA */ + + return (generic_file_llseek(filp, offset, whence)); +} + +/* + * It's worth taking a moment to describe how mmap is implemented + * for zfs because it differs considerably from other Linux filesystems. + * However, this issue is handled the same way under OpenSolaris. + * + * The issue is that by design zfs bypasses the Linux page cache and + * leaves all caching up to the ARC. This has been shown to work + * well for the common read(2)/write(2) case. However, mmap(2) + * is problem because it relies on being tightly integrated with the + * page cache. To handle this we cache mmap'ed files twice, once in + * the ARC and a second time in the page cache. The code is careful + * to keep both copies synchronized. + * + * When a file with an mmap'ed region is written to using write(2) + * both the data in the ARC and existing pages in the page cache + * are updated. For a read(2) data will be read first from the page + * cache then the ARC if needed. Neither a write(2) or read(2) will + * will ever result in new pages being added to the page cache. + * + * New pages are added to the page cache only via .readpage() which + * is called when the vfs needs to read a page off disk to back the + * virtual memory region. These pages may be modified without + * notifying the ARC and will be written out periodically via + * .writepage(). This will occur due to either a sync or the usual + * page aging behavior. Note because a read(2) of a mmap'ed file + * will always check the page cache first even when the ARC is out + * of date correct data will still be returned. + * + * While this implementation ensures correct behavior it does have + * have some drawbacks. The most obvious of which is that it + * increases the required memory footprint when access mmap'ed + * files. It also adds additional complexity to the code keeping + * both caches synchronized. + * + * Longer term it may be possible to cleanly resolve this wart by + * mapping page cache pages directly on to the ARC buffers. The + * Linux address space operations are flexible enough to allow + * selection of which pages back a particular index. The trick + * would be working out the details of which subsystem is in + * charge, the ARC, the page cache, or both. It may also prove + * helpful to move the ARC buffers to a scatter-gather lists + * rather than a vmalloc'ed region. + */ +static int +zpl_mmap(struct file *filp, struct vm_area_struct *vma) +{ + struct inode *ip = filp->f_mapping->host; + znode_t *zp = ITOZ(ip); + int error; + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + error = -zfs_map(ip, vma->vm_pgoff, (caddr_t *)vma->vm_start, + (size_t)(vma->vm_end - vma->vm_start), vma->vm_flags); + spl_fstrans_unmark(cookie); + if (error) + return (error); + + error = generic_file_mmap(filp, vma); + if (error) + return (error); + + mutex_enter(&zp->z_lock); + zp->z_is_mapped = 1; + mutex_exit(&zp->z_lock); + + return (error); +} + +/* + * Populate a page with data for the Linux page cache. This function is + * only used to support mmap(2). There will be an identical copy of the + * data in the ARC which is kept up to date via .write() and .writepage(). + * + * Current this function relies on zpl_read_common() and the O_DIRECT + * flag to read in a page. This works but the more correct way is to + * update zfs_fillpage() to be Linux friendly and use that interface. + */ +static int +zpl_readpage(struct file *filp, struct page *pp) +{ + struct inode *ip; + struct page *pl[1]; + int error = 0; + fstrans_cookie_t cookie; + + ASSERT(PageLocked(pp)); + ip = pp->mapping->host; + pl[0] = pp; + + cookie = spl_fstrans_mark(); + error = -zfs_getpage(ip, pl, 1); + spl_fstrans_unmark(cookie); + + if (error) { + SetPageError(pp); + ClearPageUptodate(pp); + } else { + ClearPageError(pp); + SetPageUptodate(pp); + flush_dcache_page(pp); + } + + unlock_page(pp); + return (error); +} + +/* + * Populate a set of pages with data for the Linux page cache. This + * function will only be called for read ahead and never for demand + * paging. For simplicity, the code relies on read_cache_pages() to + * correctly lock each page for IO and call zpl_readpage(). + */ +static int +zpl_readpages(struct file *filp, struct address_space *mapping, + struct list_head *pages, unsigned nr_pages) +{ + return (read_cache_pages(mapping, pages, + (filler_t *)zpl_readpage, filp)); +} + +int +zpl_putpage(struct page *pp, struct writeback_control *wbc, void *data) +{ + struct address_space *mapping = data; + fstrans_cookie_t cookie; + + ASSERT(PageLocked(pp)); + ASSERT(!PageWriteback(pp)); + + cookie = spl_fstrans_mark(); + (void) zfs_putpage(mapping->host, pp, wbc); + spl_fstrans_unmark(cookie); + + return (0); +} + +static int +zpl_writepages(struct address_space *mapping, struct writeback_control *wbc) +{ + znode_t *zp = ITOZ(mapping->host); + zfs_sb_t *zsb = ITOZSB(mapping->host); + enum writeback_sync_modes sync_mode; + int result; + + ZFS_ENTER(zsb); + if (zsb->z_os->os_sync == ZFS_SYNC_ALWAYS) + wbc->sync_mode = WB_SYNC_ALL; + ZFS_EXIT(zsb); + sync_mode = wbc->sync_mode; + + /* + * We don't want to run write_cache_pages() in SYNC mode here, because + * that would make putpage() wait for a single page to be committed to + * disk every single time, resulting in atrocious performance. Instead + * we run it once in non-SYNC mode so that the ZIL gets all the data, + * and then we commit it all in one go. + */ + wbc->sync_mode = WB_SYNC_NONE; + result = write_cache_pages(mapping, wbc, zpl_putpage, mapping); + if (sync_mode != wbc->sync_mode) { + ZFS_ENTER(zsb); + ZFS_VERIFY_ZP(zp); + if (zsb->z_log != NULL) + zil_commit(zsb->z_log, zp->z_id); + ZFS_EXIT(zsb); + + /* + * We need to call write_cache_pages() again (we can't just + * return after the commit) because the previous call in + * non-SYNC mode does not guarantee that we got all the dirty + * pages (see the implementation of write_cache_pages() for + * details). That being said, this is a no-op in most cases. + */ + wbc->sync_mode = sync_mode; + result = write_cache_pages(mapping, wbc, zpl_putpage, mapping); + } + return (result); +} + +/* + * Write out dirty pages to the ARC, this function is only required to + * support mmap(2). Mapped pages may be dirtied by memory operations + * which never call .write(). These dirty pages are kept in sync with + * the ARC buffers via this hook. + */ +static int +zpl_writepage(struct page *pp, struct writeback_control *wbc) +{ + if (ITOZSB(pp->mapping->host)->z_os->os_sync == ZFS_SYNC_ALWAYS) + wbc->sync_mode = WB_SYNC_ALL; + + return (zpl_putpage(pp, wbc, pp->mapping)); +} + +/* + * The only flag combination which matches the behavior of zfs_space() + * is FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE. The FALLOC_FL_PUNCH_HOLE + * flag was introduced in the 2.6.38 kernel. + */ +#if defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) +long +zpl_fallocate_common(struct inode *ip, int mode, loff_t offset, loff_t len) +{ + int error = -EOPNOTSUPP; + +#if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) + cred_t *cr = CRED(); + flock64_t bf; + loff_t olen; + fstrans_cookie_t cookie; + + if (mode != (FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + return (error); + + crhold(cr); + + if (offset < 0 || len <= 0) + return (-EINVAL); + + spl_inode_lock(ip); + olen = i_size_read(ip); + + if (offset > olen) { + spl_inode_unlock(ip); + return (0); + } + if (offset + len > olen) + len = olen - offset; + bf.l_type = F_WRLCK; + bf.l_whence = 0; + bf.l_start = offset; + bf.l_len = len; + bf.l_pid = 0; + + cookie = spl_fstrans_mark(); + error = -zfs_space(ip, F_FREESP, &bf, FWRITE, offset, cr); + spl_fstrans_unmark(cookie); + spl_inode_unlock(ip); + + crfree(cr); +#endif /* defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) */ + + ASSERT3S(error, <=, 0); + return (error); +} +#endif /* defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) */ + +#ifdef HAVE_FILE_FALLOCATE +static long +zpl_fallocate(struct file *filp, int mode, loff_t offset, loff_t len) +{ + return zpl_fallocate_common(filp->f_path.dentry->d_inode, + mode, offset, len); +} +#endif /* HAVE_FILE_FALLOCATE */ + +/* + * Map zfs file z_pflags (xvattr_t) to linux file attributes. Only file + * attributes common to both Linux and Solaris are mapped. + */ +static int +zpl_ioctl_getflags(struct file *filp, void __user *arg) +{ + struct inode *ip = file_inode(filp); + unsigned int ioctl_flags = 0; + uint64_t zfs_flags = ITOZ(ip)->z_pflags; + int error; + + if (zfs_flags & ZFS_IMMUTABLE) + ioctl_flags |= FS_IMMUTABLE_FL; + + if (zfs_flags & ZFS_APPENDONLY) + ioctl_flags |= FS_APPEND_FL; + + if (zfs_flags & ZFS_NODUMP) + ioctl_flags |= FS_NODUMP_FL; + + ioctl_flags &= FS_FL_USER_VISIBLE; + + error = copy_to_user(arg, &ioctl_flags, sizeof (ioctl_flags)); + + return (error); +} + +/* + * fchange() is a helper macro to detect if we have been asked to change a + * flag. This is ugly, but the requirement that we do this is a consequence of + * how the Linux file attribute interface was designed. Another consequence is + * that concurrent modification of files suffers from a TOCTOU race. Neither + * are things we can fix without modifying the kernel-userland interface, which + * is outside of our jurisdiction. + */ + +#define fchange(f0, f1, b0, b1) ((((f0) & (b0)) == (b0)) != \ + (((b1) & (f1)) == (f1))) + +static int +zpl_ioctl_setflags(struct file *filp, void __user *arg) +{ + struct inode *ip = file_inode(filp); + uint64_t zfs_flags = ITOZ(ip)->z_pflags; + unsigned int ioctl_flags; + cred_t *cr = CRED(); + xvattr_t xva; + xoptattr_t *xoap; + int error; + fstrans_cookie_t cookie; + + if (copy_from_user(&ioctl_flags, arg, sizeof (ioctl_flags))) + return (-EFAULT); + + if ((ioctl_flags & ~(FS_IMMUTABLE_FL | FS_APPEND_FL | FS_NODUMP_FL))) + return (-EOPNOTSUPP); + + if ((ioctl_flags & ~(FS_FL_USER_MODIFIABLE))) + return (-EACCES); + + if ((fchange(ioctl_flags, zfs_flags, FS_IMMUTABLE_FL, ZFS_IMMUTABLE) || + fchange(ioctl_flags, zfs_flags, FS_APPEND_FL, ZFS_APPENDONLY)) && + !capable(CAP_LINUX_IMMUTABLE)) + return (-EACCES); + + if (!zpl_inode_owner_or_capable(ip)) + return (-EACCES); + + xva_init(&xva); + xoap = xva_getxoptattr(&xva); + + XVA_SET_REQ(&xva, XAT_IMMUTABLE); + if (ioctl_flags & FS_IMMUTABLE_FL) + xoap->xoa_immutable = B_TRUE; + + XVA_SET_REQ(&xva, XAT_APPENDONLY); + if (ioctl_flags & FS_APPEND_FL) + xoap->xoa_appendonly = B_TRUE; + + XVA_SET_REQ(&xva, XAT_NODUMP); + if (ioctl_flags & FS_NODUMP_FL) + xoap->xoa_nodump = B_TRUE; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_setattr(ip, (vattr_t *)&xva, 0, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + + return (error); +} + +static long +zpl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case FS_IOC_GETFLAGS: + return (zpl_ioctl_getflags(filp, (void *)arg)); + case FS_IOC_SETFLAGS: + return (zpl_ioctl_setflags(filp, (void *)arg)); + default: + return (-ENOTTY); + } +} + +#ifdef CONFIG_COMPAT +static long +zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + return (zpl_ioctl(filp, cmd, arg)); +} +#endif /* CONFIG_COMPAT */ + + +const struct address_space_operations zpl_address_space_operations = { + .readpages = zpl_readpages, + .readpage = zpl_readpage, + .writepage = zpl_writepage, + .writepages = zpl_writepages, +}; + +const struct file_operations zpl_file_operations = { + .open = zpl_open, + .release = zpl_release, + .llseek = zpl_llseek, + .read = zpl_read, + .write = zpl_write, +#ifdef HAVE_VFS_RW_ITERATE + .read_iter = zpl_iter_read, + .write_iter = zpl_iter_write, +#else + .aio_read = zpl_aio_read, + .aio_write = zpl_aio_write, +#endif + .mmap = zpl_mmap, + .fsync = zpl_fsync, + .aio_fsync = zpl_aio_fsync, +#ifdef HAVE_FILE_FALLOCATE + .fallocate = zpl_fallocate, +#endif /* HAVE_FILE_FALLOCATE */ + .unlocked_ioctl = zpl_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = zpl_compat_ioctl, +#endif +}; + +const struct file_operations zpl_dir_file_operations = { + .llseek = generic_file_llseek, + .read = generic_read_dir, +#ifdef HAVE_VFS_ITERATE + .iterate = zpl_iterate, +#else + .readdir = zpl_readdir, +#endif + .fsync = zpl_fsync, + .unlocked_ioctl = zpl_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = zpl_compat_ioctl, +#endif +}; --- linux-4.4.0.orig/zfs/module/zfs/zpl_inode.c +++ linux-4.4.0/zfs/module/zfs/zpl_inode.c @@ -0,0 +1,624 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011, Lawrence Livermore National Security, LLC. + * Copyright (c) 2015 by Chunwei Chen. All rights reserved. + */ + + +#include +#include +#include +#include +#include +#include +#include + + +static struct dentry * +#ifdef HAVE_LOOKUP_NAMEIDATA +zpl_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) +#else +zpl_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags) +#endif +{ + cred_t *cr = CRED(); + struct inode *ip; + int error; + fstrans_cookie_t cookie; + + if (dlen(dentry) > ZFS_MAXNAMELEN) + return (ERR_PTR(-ENAMETOOLONG)); + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_lookup(dir, dname(dentry), &ip, 0, cr, NULL, NULL); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); + crfree(cr); + + spin_lock(&dentry->d_lock); + dentry->d_time = jiffies; +#ifndef HAVE_S_D_OP + d_set_d_op(dentry, &zpl_dentry_operations); +#endif /* HAVE_S_D_OP */ + spin_unlock(&dentry->d_lock); + + if (error) { + if (error == -ENOENT) + return (d_splice_alias(NULL, dentry)); + else + return (ERR_PTR(error)); + } + + return (d_splice_alias(ip, dentry)); +} + +void +zpl_vap_init(vattr_t *vap, struct inode *dir, zpl_umode_t mode, cred_t *cr) +{ + vap->va_mask = ATTR_MODE; + vap->va_mode = mode; + vap->va_uid = crgetfsuid(cr); + + if (dir && dir->i_mode & S_ISGID) { + vap->va_gid = KGID_TO_SGID(dir->i_gid); + if (S_ISDIR(mode)) + vap->va_mode |= S_ISGID; + } else { + vap->va_gid = crgetfsgid(cr); + } +} + +static int +#ifdef HAVE_CREATE_NAMEIDATA +zpl_create(struct inode *dir, struct dentry *dentry, zpl_umode_t mode, + struct nameidata *nd) +#else +zpl_create(struct inode *dir, struct dentry *dentry, zpl_umode_t mode, + bool flag) +#endif +{ + cred_t *cr = CRED(); + struct inode *ip; + vattr_t *vap; + int error; + fstrans_cookie_t cookie; + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + zpl_vap_init(vap, dir, mode, cr); + + cookie = spl_fstrans_mark(); + error = -zfs_create(dir, dname(dentry), vap, 0, mode, &ip, cr, 0, NULL); + if (error == 0) { + d_instantiate(dentry, ip); + + error = zpl_xattr_security_init(ip, dir, &dentry->d_name); + if (error == 0) + error = zpl_init_acl(ip, dir); + + if (error) + (void) zfs_remove(dir, dname(dentry), cr); + } + + spl_fstrans_unmark(cookie); + kmem_free(vap, sizeof (vattr_t)); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_mknod(struct inode *dir, struct dentry *dentry, zpl_umode_t mode, + dev_t rdev) +{ + cred_t *cr = CRED(); + struct inode *ip; + vattr_t *vap; + int error; + fstrans_cookie_t cookie; + + /* + * We currently expect Linux to supply rdev=0 for all sockets + * and fifos, but we want to know if this behavior ever changes. + */ + if (S_ISSOCK(mode) || S_ISFIFO(mode)) + ASSERT(rdev == 0); + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + zpl_vap_init(vap, dir, mode, cr); + vap->va_rdev = rdev; + + cookie = spl_fstrans_mark(); + error = -zfs_create(dir, dname(dentry), vap, 0, mode, &ip, cr, 0, NULL); + if (error == 0) { + d_instantiate(dentry, ip); + + error = zpl_xattr_security_init(ip, dir, &dentry->d_name); + if (error == 0) + error = zpl_init_acl(ip, dir); + + if (error) + (void) zfs_remove(dir, dname(dentry), cr); + } + + spl_fstrans_unmark(cookie); + kmem_free(vap, sizeof (vattr_t)); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_unlink(struct inode *dir, struct dentry *dentry) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_remove(dir, dname(dentry), cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_mkdir(struct inode *dir, struct dentry *dentry, zpl_umode_t mode) +{ + cred_t *cr = CRED(); + vattr_t *vap; + struct inode *ip; + int error; + fstrans_cookie_t cookie; + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + zpl_vap_init(vap, dir, mode | S_IFDIR, cr); + + cookie = spl_fstrans_mark(); + error = -zfs_mkdir(dir, dname(dentry), vap, &ip, cr, 0, NULL); + if (error == 0) { + d_instantiate(dentry, ip); + + error = zpl_xattr_security_init(ip, dir, &dentry->d_name); + if (error == 0) + error = zpl_init_acl(ip, dir); + + if (error) + (void) zfs_rmdir(dir, dname(dentry), NULL, cr, 0); + } + + spl_fstrans_unmark(cookie); + kmem_free(vap, sizeof (vattr_t)); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_rmdir(struct inode * dir, struct dentry *dentry) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_rmdir(dir, dname(dentry), NULL, cr, 0); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) +{ + int error; + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + error = -zfs_getattr_fast(dentry->d_inode, stat); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_setattr(struct dentry *dentry, struct iattr *ia) +{ + struct inode *ip = dentry->d_inode; + cred_t *cr = CRED(); + vattr_t *vap; + int error; + fstrans_cookie_t cookie; + + error = inode_change_ok(ip, ia); + if (error) + return (error); + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + vap->va_mask = ia->ia_valid & ATTR_IATTR_MASK; + vap->va_mode = ia->ia_mode; + vap->va_uid = KUID_TO_SUID(ia->ia_uid); + vap->va_gid = KGID_TO_SGID(ia->ia_gid); + vap->va_size = ia->ia_size; + vap->va_atime = ia->ia_atime; + vap->va_mtime = ia->ia_mtime; + vap->va_ctime = ia->ia_ctime; + + cookie = spl_fstrans_mark(); + error = -zfs_setattr(ip, vap, 0, cr); + if (!error && (ia->ia_valid & ATTR_MODE)) + error = zpl_chmod_acl(ip); + + spl_fstrans_unmark(cookie); + kmem_free(vap, sizeof (vattr_t)); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_rename(struct inode *sdip, struct dentry *sdentry, + struct inode *tdip, struct dentry *tdentry) +{ + cred_t *cr = CRED(); + int error; + fstrans_cookie_t cookie; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_rename(sdip, dname(sdentry), tdip, dname(tdentry), cr, 0); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_symlink(struct inode *dir, struct dentry *dentry, const char *name) +{ + cred_t *cr = CRED(); + vattr_t *vap; + struct inode *ip; + int error; + fstrans_cookie_t cookie; + + crhold(cr); + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + zpl_vap_init(vap, dir, S_IFLNK | S_IRWXUGO, cr); + + cookie = spl_fstrans_mark(); + error = -zfs_symlink(dir, dname(dentry), vap, (char *)name, &ip, cr, 0); + if (error == 0) { + d_instantiate(dentry, ip); + + error = zpl_xattr_security_init(ip, dir, &dentry->d_name); + if (error) + (void) zfs_remove(dir, dname(dentry), cr); + } + + spl_fstrans_unmark(cookie); + kmem_free(vap, sizeof (vattr_t)); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +#ifdef HAVE_FOLLOW_LINK_NAMEIDATA +static void * +zpl_follow_link(struct dentry *dentry, struct nameidata *nd) +#else +const char * +zpl_follow_link(struct dentry *dentry, void **symlink_cookie) +#endif +{ + cred_t *cr = CRED(); + struct inode *ip = dentry->d_inode; + struct iovec iov; + uio_t uio; + char *link; + int error; + fstrans_cookie_t cookie; + + crhold(cr); + + iov.iov_len = MAXPATHLEN; + iov.iov_base = link = kmem_zalloc(MAXPATHLEN, KM_SLEEP); + + uio.uio_iov = &iov; + uio.uio_iovcnt = 1; + uio.uio_skip = 0; + uio.uio_resid = (MAXPATHLEN - 1); + uio.uio_segflg = UIO_SYSSPACE; + + cookie = spl_fstrans_mark(); + error = -zfs_readlink(ip, &uio, cr); + spl_fstrans_unmark(cookie); + + if (error) + kmem_free(link, MAXPATHLEN); + + crfree(cr); + +#ifdef HAVE_FOLLOW_LINK_NAMEIDATA + if (error) + nd_set_link(nd, ERR_PTR(error)); + else + nd_set_link(nd, link); + + return (NULL); +#else + if (error) + return (ERR_PTR(error)); + else + return (*symlink_cookie = link); +#endif +} + +#ifdef HAVE_PUT_LINK_NAMEIDATA +static void +zpl_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) +{ + const char *link = nd_get_link(nd); + + if (!IS_ERR(link)) + kmem_free(link, MAXPATHLEN); +} +#else +static void +zpl_put_link(struct inode *unused, void *symlink_cookie) +{ + kmem_free(symlink_cookie, MAXPATHLEN); +} +#endif + +static int +zpl_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) +{ + cred_t *cr = CRED(); + struct inode *ip = old_dentry->d_inode; + int error; + fstrans_cookie_t cookie; + + if (ip->i_nlink >= ZFS_LINK_MAX) + return (-EMLINK); + + crhold(cr); + ip->i_ctime = CURRENT_TIME_SEC; + igrab(ip); /* Use ihold() if available */ + + cookie = spl_fstrans_mark(); + error = -zfs_link(dir, ip, dname(dentry), cr); + if (error) { + iput(ip); + goto out; + } + + d_instantiate(dentry, ip); +out: + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +#ifdef HAVE_INODE_TRUNCATE_RANGE +static void +zpl_truncate_range(struct inode *ip, loff_t start, loff_t end) +{ + cred_t *cr = CRED(); + flock64_t bf; + fstrans_cookie_t cookie; + + ASSERT3S(start, <=, end); + + /* + * zfs_freesp() will interpret (len == 0) as meaning "truncate until + * the end of the file". We don't want that. + */ + if (start == end) + return; + + crhold(cr); + + bf.l_type = F_WRLCK; + bf.l_whence = 0; + bf.l_start = start; + bf.l_len = end - start; + bf.l_pid = 0; + cookie = spl_fstrans_mark(); + zfs_space(ip, F_FREESP, &bf, FWRITE, start, cr); + spl_fstrans_unmark(cookie); + + crfree(cr); +} +#endif /* HAVE_INODE_TRUNCATE_RANGE */ + +#ifdef HAVE_INODE_FALLOCATE +static long +zpl_fallocate(struct inode *ip, int mode, loff_t offset, loff_t len) +{ + return (zpl_fallocate_common(ip, mode, offset, len)); +} +#endif /* HAVE_INODE_FALLOCATE */ + +static int +#ifdef HAVE_D_REVALIDATE_NAMEIDATA +zpl_revalidate(struct dentry *dentry, struct nameidata *nd) +{ + unsigned int flags = (nd ? nd->flags : 0); +#else +zpl_revalidate(struct dentry *dentry, unsigned int flags) +{ +#endif /* HAVE_D_REVALIDATE_NAMEIDATA */ + zfs_sb_t *zsb = dentry->d_sb->s_fs_info; + int error; + + if (flags & LOOKUP_RCU) + return (-ECHILD); + + /* + * Automounted snapshots rely on periodic dentry revalidation + * to defer snapshots from being automatically unmounted. + */ + if (zsb->z_issnap) { + if (time_after(jiffies, zsb->z_snap_defer_time + + MAX(zfs_expire_snapshot * HZ / 2, HZ))) { + zsb->z_snap_defer_time = jiffies; + zfsctl_snapshot_unmount_delay(zsb->z_os->os_spa, + dmu_objset_id(zsb->z_os), zfs_expire_snapshot); + } + } + + /* + * After a rollback negative dentries created before the rollback + * time must be invalidated. Otherwise they can obscure files which + * are only present in the rolled back dataset. + */ + if (dentry->d_inode == NULL) { + spin_lock(&dentry->d_lock); + error = time_before(dentry->d_time, zsb->z_rollback_time); + spin_unlock(&dentry->d_lock); + + if (error) + return (0); + } + + /* + * The dentry may reference a stale inode if a mounted file system + * was rolled back to a point in time where the object didn't exist. + */ + if (dentry->d_inode && ITOZ(dentry->d_inode)->z_is_stale) + return (0); + + return (1); +} + +const struct inode_operations zpl_inode_operations = { + .create = zpl_create, + .link = zpl_link, + .unlink = zpl_unlink, + .symlink = zpl_symlink, + .mkdir = zpl_mkdir, + .rmdir = zpl_rmdir, + .mknod = zpl_mknod, + .rename = zpl_rename, + .setattr = zpl_setattr, + .getattr = zpl_getattr, + .setxattr = generic_setxattr, + .getxattr = generic_getxattr, + .removexattr = generic_removexattr, + .listxattr = zpl_xattr_list, +#ifdef HAVE_INODE_TRUNCATE_RANGE + .truncate_range = zpl_truncate_range, +#endif /* HAVE_INODE_TRUNCATE_RANGE */ +#ifdef HAVE_INODE_FALLOCATE + .fallocate = zpl_fallocate, +#endif /* HAVE_INODE_FALLOCATE */ +#if defined(CONFIG_FS_POSIX_ACL) +#if defined(HAVE_GET_ACL) + .get_acl = zpl_get_acl, +#elif defined(HAVE_CHECK_ACL) + .check_acl = zpl_check_acl, +#elif defined(HAVE_PERMISSION) + .permission = zpl_permission, +#endif /* HAVE_GET_ACL | HAVE_CHECK_ACL | HAVE_PERMISSION */ +#endif /* CONFIG_FS_POSIX_ACL */ +}; + +const struct inode_operations zpl_dir_inode_operations = { + .create = zpl_create, + .lookup = zpl_lookup, + .link = zpl_link, + .unlink = zpl_unlink, + .symlink = zpl_symlink, + .mkdir = zpl_mkdir, + .rmdir = zpl_rmdir, + .mknod = zpl_mknod, + .rename = zpl_rename, + .setattr = zpl_setattr, + .getattr = zpl_getattr, + .setxattr = generic_setxattr, + .getxattr = generic_getxattr, + .removexattr = generic_removexattr, + .listxattr = zpl_xattr_list, +#if defined(CONFIG_FS_POSIX_ACL) +#if defined(HAVE_GET_ACL) + .get_acl = zpl_get_acl, +#elif defined(HAVE_CHECK_ACL) + .check_acl = zpl_check_acl, +#elif defined(HAVE_PERMISSION) + .permission = zpl_permission, +#endif /* HAVE_GET_ACL | HAVE_CHECK_ACL | HAVE_PERMISSION */ +#endif /* CONFIG_FS_POSIX_ACL */ +}; + +const struct inode_operations zpl_symlink_inode_operations = { + .readlink = generic_readlink, + .follow_link = zpl_follow_link, + .put_link = zpl_put_link, + .setattr = zpl_setattr, + .getattr = zpl_getattr, + .setxattr = generic_setxattr, + .getxattr = generic_getxattr, + .removexattr = generic_removexattr, + .listxattr = zpl_xattr_list, +}; + +const struct inode_operations zpl_special_inode_operations = { + .setattr = zpl_setattr, + .getattr = zpl_getattr, + .setxattr = generic_setxattr, + .getxattr = generic_getxattr, + .removexattr = generic_removexattr, + .listxattr = zpl_xattr_list, +#if defined(CONFIG_FS_POSIX_ACL) +#if defined(HAVE_GET_ACL) + .get_acl = zpl_get_acl, +#elif defined(HAVE_CHECK_ACL) + .check_acl = zpl_check_acl, +#elif defined(HAVE_PERMISSION) + .permission = zpl_permission, +#endif /* HAVE_GET_ACL | HAVE_CHECK_ACL | HAVE_PERMISSION */ +#endif /* CONFIG_FS_POSIX_ACL */ +}; + +dentry_operations_t zpl_dentry_operations = { + .d_revalidate = zpl_revalidate, +}; --- linux-4.4.0.orig/zfs/module/zfs/zpl_super.c +++ linux-4.4.0/zfs/module/zfs/zpl_super.c @@ -0,0 +1,551 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011, Lawrence Livermore National Security, LLC. + */ + + +#include +#include +#include +#include +#include + + +static struct inode * +zpl_inode_alloc(struct super_block *sb) +{ + struct inode *ip; + + VERIFY3S(zfs_inode_alloc(sb, &ip), ==, 0); + ip->i_version = 1; + + return (ip); +} + +static void +zpl_inode_destroy(struct inode *ip) +{ + ASSERT(atomic_read(&ip->i_count) == 0); + zfs_inode_destroy(ip); +} + +/* + * Called from __mark_inode_dirty() to reflect that something in the + * inode has changed. We use it to ensure the znode system attributes + * are always strictly update to date with respect to the inode. + */ +#ifdef HAVE_DIRTY_INODE_WITH_FLAGS +static void +zpl_dirty_inode(struct inode *ip, int flags) +{ + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + zfs_dirty_inode(ip, flags); + spl_fstrans_unmark(cookie); +} +#else +static void +zpl_dirty_inode(struct inode *ip) +{ + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + zfs_dirty_inode(ip, 0); + spl_fstrans_unmark(cookie); +} +#endif /* HAVE_DIRTY_INODE_WITH_FLAGS */ + +/* + * When ->drop_inode() is called its return value indicates if the + * inode should be evicted from the inode cache. If the inode is + * unhashed and has no links the default policy is to evict it + * immediately. + * + * Prior to 2.6.36 this eviction was accomplished by the vfs calling + * ->delete_inode(). It was ->delete_inode()'s responsibility to + * truncate the inode pages and call clear_inode(). The call to + * clear_inode() synchronously invalidates all the buffers and + * calls ->clear_inode(). It was ->clear_inode()'s responsibility + * to cleanup and filesystem specific data before freeing the inode. + * + * This elaborate mechanism was replaced by ->evict_inode() which + * does the job of both ->delete_inode() and ->clear_inode(). It + * will be called exactly once, and when it returns the inode must + * be in a state where it can simply be freed.i + * + * The ->evict_inode() callback must minimally truncate the inode pages, + * and call clear_inode(). For 2.6.35 and later kernels this will + * simply update the inode state, with the sync occurring before the + * truncate in evict(). For earlier kernels clear_inode() maps to + * end_writeback() which is responsible for completing all outstanding + * write back. In either case, once this is done it is safe to cleanup + * any remaining inode specific data via zfs_inactive(). + * remaining filesystem specific data. + */ +#ifdef HAVE_EVICT_INODE +static void +zpl_evict_inode(struct inode *ip) +{ + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + truncate_setsize(ip, 0); + clear_inode(ip); + zfs_inactive(ip); + spl_fstrans_unmark(cookie); +} + +#else + +static void +zpl_drop_inode(struct inode *ip) +{ + generic_delete_inode(ip); +} + +static void +zpl_clear_inode(struct inode *ip) +{ + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); + zfs_inactive(ip); + spl_fstrans_unmark(cookie); +} + +static void +zpl_inode_delete(struct inode *ip) +{ + truncate_setsize(ip, 0); + clear_inode(ip); +} +#endif /* HAVE_EVICT_INODE */ + +static void +zpl_put_super(struct super_block *sb) +{ + fstrans_cookie_t cookie; + int error; + + cookie = spl_fstrans_mark(); + error = -zfs_umount(sb); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); +} + +static int +zpl_sync_fs(struct super_block *sb, int wait) +{ + fstrans_cookie_t cookie; + cred_t *cr = CRED(); + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + error = -zfs_sync(sb, wait, cr); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_statfs(struct dentry *dentry, struct kstatfs *statp) +{ + fstrans_cookie_t cookie; + int error; + + cookie = spl_fstrans_mark(); + error = -zfs_statvfs(dentry, statp); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); + + return (error); +} + +enum { + TOKEN_RO, + TOKEN_RW, + TOKEN_SETUID, + TOKEN_NOSETUID, + TOKEN_EXEC, + TOKEN_NOEXEC, + TOKEN_DEVICES, + TOKEN_NODEVICES, + TOKEN_DIRXATTR, + TOKEN_SAXATTR, + TOKEN_XATTR, + TOKEN_NOXATTR, + TOKEN_ATIME, + TOKEN_NOATIME, + TOKEN_RELATIME, + TOKEN_NORELATIME, + TOKEN_NBMAND, + TOKEN_NONBMAND, + TOKEN_MNTPOINT, + TOKEN_LAST, +}; + +static const match_table_t zpl_tokens = { + { TOKEN_RO, MNTOPT_RO }, + { TOKEN_RW, MNTOPT_RW }, + { TOKEN_SETUID, MNTOPT_SETUID }, + { TOKEN_NOSETUID, MNTOPT_NOSETUID }, + { TOKEN_EXEC, MNTOPT_EXEC }, + { TOKEN_NOEXEC, MNTOPT_NOEXEC }, + { TOKEN_DEVICES, MNTOPT_DEVICES }, + { TOKEN_NODEVICES, MNTOPT_NODEVICES }, + { TOKEN_DIRXATTR, MNTOPT_DIRXATTR }, + { TOKEN_SAXATTR, MNTOPT_SAXATTR }, + { TOKEN_XATTR, MNTOPT_XATTR }, + { TOKEN_NOXATTR, MNTOPT_NOXATTR }, + { TOKEN_ATIME, MNTOPT_ATIME }, + { TOKEN_NOATIME, MNTOPT_NOATIME }, + { TOKEN_RELATIME, MNTOPT_RELATIME }, + { TOKEN_NORELATIME, MNTOPT_NORELATIME }, + { TOKEN_NBMAND, MNTOPT_NBMAND }, + { TOKEN_NONBMAND, MNTOPT_NONBMAND }, + { TOKEN_MNTPOINT, MNTOPT_MNTPOINT "=%s" }, + { TOKEN_LAST, NULL }, +}; + +static int +zpl_parse_option(char *option, int token, substring_t *args, zfs_mntopts_t *zmo) +{ + switch (token) { + case TOKEN_RO: + zmo->z_readonly = B_TRUE; + zmo->z_do_readonly = B_TRUE; + break; + case TOKEN_RW: + zmo->z_readonly = B_FALSE; + zmo->z_do_readonly = B_TRUE; + break; + case TOKEN_SETUID: + zmo->z_setuid = B_TRUE; + zmo->z_do_setuid = B_TRUE; + break; + case TOKEN_NOSETUID: + zmo->z_setuid = B_FALSE; + zmo->z_do_setuid = B_TRUE; + break; + case TOKEN_EXEC: + zmo->z_exec = B_TRUE; + zmo->z_do_exec = B_TRUE; + break; + case TOKEN_NOEXEC: + zmo->z_exec = B_FALSE; + zmo->z_do_exec = B_TRUE; + break; + case TOKEN_DEVICES: + zmo->z_devices = B_TRUE; + zmo->z_do_devices = B_TRUE; + break; + case TOKEN_NODEVICES: + zmo->z_devices = B_FALSE; + zmo->z_do_devices = B_TRUE; + break; + case TOKEN_DIRXATTR: + zmo->z_xattr = ZFS_XATTR_DIR; + zmo->z_do_xattr = B_TRUE; + break; + case TOKEN_SAXATTR: + zmo->z_xattr = ZFS_XATTR_SA; + zmo->z_do_xattr = B_TRUE; + break; + case TOKEN_XATTR: + zmo->z_xattr = ZFS_XATTR_DIR; + zmo->z_do_xattr = B_TRUE; + break; + case TOKEN_NOXATTR: + zmo->z_xattr = ZFS_XATTR_OFF; + zmo->z_do_xattr = B_TRUE; + break; + case TOKEN_ATIME: + zmo->z_atime = B_TRUE; + zmo->z_do_atime = B_TRUE; + break; + case TOKEN_NOATIME: + zmo->z_atime = B_FALSE; + zmo->z_do_atime = B_TRUE; + break; + case TOKEN_RELATIME: + zmo->z_relatime = B_TRUE; + zmo->z_do_relatime = B_TRUE; + break; + case TOKEN_NORELATIME: + zmo->z_relatime = B_FALSE; + zmo->z_do_relatime = B_TRUE; + break; + case TOKEN_NBMAND: + zmo->z_nbmand = B_TRUE; + zmo->z_do_nbmand = B_TRUE; + break; + case TOKEN_NONBMAND: + zmo->z_nbmand = B_FALSE; + zmo->z_do_nbmand = B_TRUE; + break; + case TOKEN_MNTPOINT: + zmo->z_mntpoint = match_strdup(&args[0]); + if (zmo->z_mntpoint == NULL) + return (-ENOMEM); + + break; + default: + break; + } + + return (0); +} + +/* + * Parse the mntopts string storing the results in provided zmo argument. + * If an error occurs the zmo argument will not be modified. The caller + * needs to set isremount when recycling an existing zfs_mntopts_t. + */ +static int +zpl_parse_options(char *osname, char *mntopts, zfs_mntopts_t *zmo, + boolean_t isremount) +{ + zfs_mntopts_t *tmp_zmo; + int error; + + tmp_zmo = zfs_mntopts_alloc(); + tmp_zmo->z_osname = strdup(osname); + + if (mntopts) { + substring_t args[MAX_OPT_ARGS]; + char *tmp_mntopts, *p; + int token; + + tmp_mntopts = strdup(mntopts); + + while ((p = strsep(&tmp_mntopts, ",")) != NULL) { + if (!*p) + continue; + + args[0].to = args[0].from = NULL; + token = match_token(p, zpl_tokens, args); + error = zpl_parse_option(p, token, args, tmp_zmo); + if (error) { + zfs_mntopts_free(tmp_zmo); + strfree(tmp_mntopts); + return (error); + } + } + + strfree(tmp_mntopts); + } + + if (isremount == B_TRUE) { + if (zmo->z_osname) + strfree(zmo->z_osname); + + if (zmo->z_mntpoint) + strfree(zmo->z_mntpoint); + } else { + ASSERT3P(zmo->z_osname, ==, NULL); + ASSERT3P(zmo->z_mntpoint, ==, NULL); + } + + memcpy(zmo, tmp_zmo, sizeof (zfs_mntopts_t)); + kmem_free(tmp_zmo, sizeof (zfs_mntopts_t)); + + return (0); +} + +static int +zpl_remount_fs(struct super_block *sb, int *flags, char *data) +{ + zfs_sb_t *zsb = sb->s_fs_info; + fstrans_cookie_t cookie; + int error; + + error = zpl_parse_options(zsb->z_mntopts->z_osname, data, + zsb->z_mntopts, B_TRUE); + if (error) + return (error); + + cookie = spl_fstrans_mark(); + error = -zfs_remount(sb, flags, zsb->z_mntopts); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +__zpl_show_options(struct seq_file *seq, zfs_sb_t *zsb) +{ + seq_printf(seq, ",%s", zsb->z_flags & ZSB_XATTR ? "xattr" : "noxattr"); + +#ifdef CONFIG_FS_POSIX_ACL + switch (zsb->z_acl_type) { + case ZFS_ACLTYPE_POSIXACL: + seq_puts(seq, ",posixacl"); + break; + default: + seq_puts(seq, ",noacl"); + break; + } +#endif /* CONFIG_FS_POSIX_ACL */ + + return (0); +} + +#ifdef HAVE_SHOW_OPTIONS_WITH_DENTRY +static int +zpl_show_options(struct seq_file *seq, struct dentry *root) +{ + return (__zpl_show_options(seq, root->d_sb->s_fs_info)); +} +#else +static int +zpl_show_options(struct seq_file *seq, struct vfsmount *vfsp) +{ + return (__zpl_show_options(seq, vfsp->mnt_sb->s_fs_info)); +} +#endif /* HAVE_SHOW_OPTIONS_WITH_DENTRY */ + +static int +zpl_fill_super(struct super_block *sb, void *data, int silent) +{ + zfs_mntopts_t *zmo = (zfs_mntopts_t *)data; + fstrans_cookie_t cookie; + int error; + + cookie = spl_fstrans_mark(); + error = -zfs_domount(sb, zmo, silent); + spl_fstrans_unmark(cookie); + ASSERT3S(error, <=, 0); + + return (error); +} + +#ifdef HAVE_MOUNT_NODEV +static struct dentry * +zpl_mount(struct file_system_type *fs_type, int flags, + const char *osname, void *data) +{ + zfs_mntopts_t *zmo = zfs_mntopts_alloc(); + int error; + + error = zpl_parse_options((char *)osname, (char *)data, zmo, B_FALSE); + if (error) { + zfs_mntopts_free(zmo); + return (ERR_PTR(error)); + } + + return (mount_nodev(fs_type, flags, zmo, zpl_fill_super)); +} +#else +static int +zpl_get_sb(struct file_system_type *fs_type, int flags, + const char *osname, void *data, struct vfsmount *mnt) +{ + zfs_mntopts_t *zmo = zfs_mntopts_alloc(); + int error; + + error = zpl_parse_options((char *)osname, (char *)data, zmo, B_FALSE); + if (error) { + zfs_mntopts_free(zmo); + return (error); + } + + return (get_sb_nodev(fs_type, flags, zmo, zpl_fill_super, mnt)); +} +#endif /* HAVE_MOUNT_NODEV */ + +static void +zpl_kill_sb(struct super_block *sb) +{ + zfs_preumount(sb); + kill_anon_super(sb); + +#ifdef HAVE_S_INSTANCES_LIST_HEAD + sb->s_instances.next = &(zpl_fs_type.fs_supers); +#endif /* HAVE_S_INSTANCES_LIST_HEAD */ +} + +void +zpl_prune_sb(int64_t nr_to_scan, void *arg) +{ + struct super_block *sb = (struct super_block *)arg; + int objects = 0; + + (void) -zfs_sb_prune(sb, nr_to_scan, &objects); +} + +#ifdef HAVE_NR_CACHED_OBJECTS +static int +zpl_nr_cached_objects(struct super_block *sb) +{ + return (0); +} +#endif /* HAVE_NR_CACHED_OBJECTS */ + +#ifdef HAVE_FREE_CACHED_OBJECTS +static void +zpl_free_cached_objects(struct super_block *sb, int nr_to_scan) +{ + /* noop */ +} +#endif /* HAVE_FREE_CACHED_OBJECTS */ + +const struct super_operations zpl_super_operations = { + .alloc_inode = zpl_inode_alloc, + .destroy_inode = zpl_inode_destroy, + .dirty_inode = zpl_dirty_inode, + .write_inode = NULL, +#ifdef HAVE_EVICT_INODE + .evict_inode = zpl_evict_inode, +#else + .drop_inode = zpl_drop_inode, + .clear_inode = zpl_clear_inode, + .delete_inode = zpl_inode_delete, +#endif /* HAVE_EVICT_INODE */ + .put_super = zpl_put_super, + .sync_fs = zpl_sync_fs, + .statfs = zpl_statfs, + .remount_fs = zpl_remount_fs, + .show_options = zpl_show_options, + .show_stats = NULL, +#ifdef HAVE_NR_CACHED_OBJECTS + .nr_cached_objects = zpl_nr_cached_objects, +#endif /* HAVE_NR_CACHED_OBJECTS */ +#ifdef HAVE_FREE_CACHED_OBJECTS + .free_cached_objects = zpl_free_cached_objects, +#endif /* HAVE_FREE_CACHED_OBJECTS */ +}; + +struct file_system_type zpl_fs_type = { + .owner = THIS_MODULE, + .name = ZFS_DRIVER, +#ifdef HAVE_MOUNT_NODEV + .mount = zpl_mount, +#else + .get_sb = zpl_get_sb, +#endif /* HAVE_MOUNT_NODEV */ + .kill_sb = zpl_kill_sb, +}; --- linux-4.4.0.orig/zfs/module/zfs/zpl_xattr.c +++ linux-4.4.0/zfs/module/zfs/zpl_xattr.c @@ -0,0 +1,1283 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2011, Lawrence Livermore National Security, LLC. + * + * Extended attributes (xattr) on Solaris are implemented as files + * which exist in a hidden xattr directory. These extended attributes + * can be accessed using the attropen() system call which opens + * the extended attribute. It can then be manipulated just like + * a standard file descriptor. This has a couple advantages such + * as practically no size limit on the file, and the extended + * attributes permissions may differ from those of the parent file. + * This interface is really quite clever, but it's also completely + * different than what is supported on Linux. It also comes with a + * steep performance penalty when accessing small xattrs because they + * are not stored with the parent file. + * + * Under Linux extended attributes are manipulated by the system + * calls getxattr(2), setxattr(2), and listxattr(2). They consider + * extended attributes to be name/value pairs where the name is a + * NULL terminated string. The name must also include one of the + * following namespace prefixes: + * + * user - No restrictions and is available to user applications. + * trusted - Restricted to kernel and root (CAP_SYS_ADMIN) use. + * system - Used for access control lists (system.nfs4_acl, etc). + * security - Used by SELinux to store a files security context. + * + * The value under Linux to limited to 65536 bytes of binary data. + * In practice, individual xattrs tend to be much smaller than this + * and are typically less than 100 bytes. A good example of this + * are the security.selinux xattrs which are less than 100 bytes and + * exist for every file when xattr labeling is enabled. + * + * The Linux xattr implemenation has been written to take advantage of + * this typical usage. When the dataset property 'xattr=sa' is set, + * then xattrs will be preferentially stored as System Attributes (SA). + * This allows tiny xattrs (~100 bytes) to be stored with the dnode and + * up to 64k of xattrs to be stored in the spill block. If additional + * xattr space is required, which is unlikely under Linux, they will + * be stored using the traditional directory approach. + * + * This optimization results in roughly a 3x performance improvement + * when accessing xattrs because it avoids the need to perform a seek + * for every xattr value. When multiple xattrs are stored per-file + * the performance improvements are even greater because all of the + * xattrs stored in the spill block will be cached. + * + * However, by default SA based xattrs are disabled in the Linux port + * to maximize compatibility with other implementations. If you do + * enable SA based xattrs then they will not be visible on platforms + * which do not support this feature. + * + * NOTE: One additional consequence of the xattr directory implementation + * is that when an extended attribute is manipulated an inode is created. + * This inode will exist in the Linux inode cache but there will be no + * associated entry in the dentry cache which references it. This is + * safe but it may result in some confusion. Enabling SA based xattrs + * largely avoids the issue except in the overflow case. + */ + +#include +#include +#include +#include +#include +#include + +typedef struct xattr_filldir { + size_t size; + size_t offset; + char *buf; + struct inode *inode; +} xattr_filldir_t; + +static int +zpl_xattr_filldir(xattr_filldir_t *xf, const char *name, int name_len) +{ + if (strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN) == 0) + if (!(ITOZSB(xf->inode)->z_flags & ZSB_XATTR)) + return (0); + + if (strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) == 0) + if (!capable(CAP_SYS_ADMIN)) + return (0); + + /* When xf->buf is NULL only calculate the required size. */ + if (xf->buf) { + if (xf->offset + name_len + 1 > xf->size) + return (-ERANGE); + + memcpy(xf->buf + xf->offset, name, name_len); + xf->buf[xf->offset + name_len] = '\0'; + } + + xf->offset += (name_len + 1); + + return (0); +} + +/* + * Read as many directory entry names as will fit in to the provided buffer, + * or when no buffer is provided calculate the required buffer size. + */ +int +zpl_xattr_readdir(struct inode *dxip, xattr_filldir_t *xf) +{ + zap_cursor_t zc; + zap_attribute_t zap; + int error; + + zap_cursor_init(&zc, ITOZSB(dxip)->z_os, ITOZ(dxip)->z_id); + + while ((error = -zap_cursor_retrieve(&zc, &zap)) == 0) { + + if (zap.za_integer_length != 8 || zap.za_num_integers != 1) { + error = -ENXIO; + break; + } + + error = zpl_xattr_filldir(xf, zap.za_name, strlen(zap.za_name)); + if (error) + break; + + zap_cursor_advance(&zc); + } + + zap_cursor_fini(&zc); + + if (error == -ENOENT) + error = 0; + + return (error); +} + +static ssize_t +zpl_xattr_list_dir(xattr_filldir_t *xf, cred_t *cr) +{ + struct inode *ip = xf->inode; + struct inode *dxip = NULL; + int error; + + /* Lookup the xattr directory */ + error = -zfs_lookup(ip, NULL, &dxip, LOOKUP_XATTR, cr, NULL, NULL); + if (error) { + if (error == -ENOENT) + error = 0; + + return (error); + } + + error = zpl_xattr_readdir(dxip, xf); + iput(dxip); + + return (error); +} + +static ssize_t +zpl_xattr_list_sa(xattr_filldir_t *xf) +{ + znode_t *zp = ITOZ(xf->inode); + nvpair_t *nvp = NULL; + int error = 0; + + mutex_enter(&zp->z_lock); + if (zp->z_xattr_cached == NULL) + error = -zfs_sa_get_xattr(zp); + mutex_exit(&zp->z_lock); + + if (error) + return (error); + + ASSERT(zp->z_xattr_cached); + + while ((nvp = nvlist_next_nvpair(zp->z_xattr_cached, nvp)) != NULL) { + ASSERT3U(nvpair_type(nvp), ==, DATA_TYPE_BYTE_ARRAY); + + error = zpl_xattr_filldir(xf, nvpair_name(nvp), + strlen(nvpair_name(nvp))); + if (error) + return (error); + } + + return (0); +} + +ssize_t +zpl_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size) +{ + znode_t *zp = ITOZ(dentry->d_inode); + zfs_sb_t *zsb = ZTOZSB(zp); + xattr_filldir_t xf = { buffer_size, 0, buffer, dentry->d_inode }; + cred_t *cr = CRED(); + fstrans_cookie_t cookie; + int error = 0; + + crhold(cr); + cookie = spl_fstrans_mark(); + rrm_enter_read(&(zsb)->z_teardown_lock, FTAG); + rw_enter(&zp->z_xattr_lock, RW_READER); + + if (zsb->z_use_sa && zp->z_is_sa) { + error = zpl_xattr_list_sa(&xf); + if (error) + goto out; + } + + error = zpl_xattr_list_dir(&xf, cr); + if (error) + goto out; + + error = xf.offset; +out: + + rw_exit(&zp->z_xattr_lock); + rrm_exit(&(zsb)->z_teardown_lock, FTAG); + spl_fstrans_unmark(cookie); + crfree(cr); + + return (error); +} + +static int +zpl_xattr_get_dir(struct inode *ip, const char *name, void *value, + size_t size, cred_t *cr) +{ + struct inode *dxip = NULL; + struct inode *xip = NULL; + loff_t pos = 0; + int error; + + /* Lookup the xattr directory */ + error = -zfs_lookup(ip, NULL, &dxip, LOOKUP_XATTR, cr, NULL, NULL); + if (error) + goto out; + + /* Lookup a specific xattr name in the directory */ + error = -zfs_lookup(dxip, (char *)name, &xip, 0, cr, NULL, NULL); + if (error) + goto out; + + if (!size) { + error = i_size_read(xip); + goto out; + } + + if (size < i_size_read(xip)) { + error = -ERANGE; + goto out; + } + + error = zpl_read_common(xip, value, size, &pos, UIO_SYSSPACE, 0, cr); +out: + if (xip) + iput(xip); + + if (dxip) + iput(dxip); + + return (error); +} + +static int +zpl_xattr_get_sa(struct inode *ip, const char *name, void *value, size_t size) +{ + znode_t *zp = ITOZ(ip); + uchar_t *nv_value; + uint_t nv_size; + int error = 0; + + ASSERT(RW_LOCK_HELD(&zp->z_xattr_lock)); + + mutex_enter(&zp->z_lock); + if (zp->z_xattr_cached == NULL) + error = -zfs_sa_get_xattr(zp); + mutex_exit(&zp->z_lock); + + if (error) + return (error); + + ASSERT(zp->z_xattr_cached); + error = -nvlist_lookup_byte_array(zp->z_xattr_cached, name, + &nv_value, &nv_size); + if (error) + return (error); + + if (!size) + return (nv_size); + + if (size < nv_size) + return (-ERANGE); + + memcpy(value, nv_value, nv_size); + + return (nv_size); +} + +static int +__zpl_xattr_get(struct inode *ip, const char *name, void *value, size_t size, + cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ZTOZSB(zp); + int error; + + ASSERT(RW_LOCK_HELD(&zp->z_xattr_lock)); + + if (zsb->z_use_sa && zp->z_is_sa) { + error = zpl_xattr_get_sa(ip, name, value, size); + if (error != -ENOENT) + goto out; + } + + error = zpl_xattr_get_dir(ip, name, value, size, cr); +out: + if (error == -ENOENT) + error = -ENODATA; + + return (error); +} + +static int +zpl_xattr_get(struct inode *ip, const char *name, void *value, size_t size) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ZTOZSB(zp); + cred_t *cr = CRED(); + fstrans_cookie_t cookie; + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + rrm_enter_read(&(zsb)->z_teardown_lock, FTAG); + rw_enter(&zp->z_xattr_lock, RW_READER); + error = __zpl_xattr_get(ip, name, value, size, cr); + rw_exit(&zp->z_xattr_lock); + rrm_exit(&(zsb)->z_teardown_lock, FTAG); + spl_fstrans_unmark(cookie); + crfree(cr); + + return (error); +} + +static int +zpl_xattr_set_dir(struct inode *ip, const char *name, const void *value, + size_t size, int flags, cred_t *cr) +{ + struct inode *dxip = NULL; + struct inode *xip = NULL; + vattr_t *vap = NULL; + ssize_t wrote; + int lookup_flags, error; + const int xattr_mode = S_IFREG | 0644; + loff_t pos = 0; + + /* + * Lookup the xattr directory. When we're adding an entry pass + * CREATE_XATTR_DIR to ensure the xattr directory is created. + * When removing an entry this flag is not passed to avoid + * unnecessarily creating a new xattr directory. + */ + lookup_flags = LOOKUP_XATTR; + if (value != NULL) + lookup_flags |= CREATE_XATTR_DIR; + + error = -zfs_lookup(ip, NULL, &dxip, lookup_flags, cr, NULL, NULL); + if (error) + goto out; + + /* Lookup a specific xattr name in the directory */ + error = -zfs_lookup(dxip, (char *)name, &xip, 0, cr, NULL, NULL); + if (error && (error != -ENOENT)) + goto out; + + error = 0; + + /* Remove a specific name xattr when value is set to NULL. */ + if (value == NULL) { + if (xip) + error = -zfs_remove(dxip, (char *)name, cr); + + goto out; + } + + /* Lookup failed create a new xattr. */ + if (xip == NULL) { + vap = kmem_zalloc(sizeof (vattr_t), KM_SLEEP); + vap->va_mode = xattr_mode; + vap->va_mask = ATTR_MODE; + vap->va_uid = crgetfsuid(cr); + vap->va_gid = crgetfsgid(cr); + + error = -zfs_create(dxip, (char *)name, vap, 0, 0644, &xip, + cr, 0, NULL); + if (error) + goto out; + } + + ASSERT(xip != NULL); + + error = -zfs_freesp(ITOZ(xip), 0, 0, xattr_mode, TRUE); + if (error) + goto out; + + wrote = zpl_write_common(xip, value, size, &pos, UIO_SYSSPACE, 0, cr); + if (wrote < 0) + error = wrote; + +out: + if (vap) + kmem_free(vap, sizeof (vattr_t)); + + if (xip) + iput(xip); + + if (dxip) + iput(dxip); + + if (error == -ENOENT) + error = -ENODATA; + + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_xattr_set_sa(struct inode *ip, const char *name, const void *value, + size_t size, int flags, cred_t *cr) +{ + znode_t *zp = ITOZ(ip); + nvlist_t *nvl; + size_t sa_size; + int error; + + ASSERT(zp->z_xattr_cached); + nvl = zp->z_xattr_cached; + + if (value == NULL) { + error = -nvlist_remove(nvl, name, DATA_TYPE_BYTE_ARRAY); + if (error == -ENOENT) + error = zpl_xattr_set_dir(ip, name, NULL, 0, flags, cr); + } else { + /* Limited to 32k to keep nvpair memory allocations small */ + if (size > DXATTR_MAX_ENTRY_SIZE) + return (-EFBIG); + + /* Prevent the DXATTR SA from consuming the entire SA region */ + error = -nvlist_size(nvl, &sa_size, NV_ENCODE_XDR); + if (error) + return (error); + + if (sa_size > DXATTR_MAX_SA_SIZE) + return (-EFBIG); + + error = -nvlist_add_byte_array(nvl, name, + (uchar_t *)value, size); + if (error) + return (error); + } + + /* Update the SA for additions, modifications, and removals. */ + if (!error) + error = -zfs_sa_set_xattr(zp); + + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +zpl_xattr_set(struct inode *ip, const char *name, const void *value, + size_t size, int flags) +{ + znode_t *zp = ITOZ(ip); + zfs_sb_t *zsb = ZTOZSB(zp); + cred_t *cr = CRED(); + fstrans_cookie_t cookie; + int error; + + crhold(cr); + cookie = spl_fstrans_mark(); + rrm_enter_read(&(zsb)->z_teardown_lock, FTAG); + rw_enter(&ITOZ(ip)->z_xattr_lock, RW_WRITER); + + /* + * Before setting the xattr check to see if it already exists. + * This is done to ensure the following optional flags are honored. + * + * XATTR_CREATE: fail if xattr already exists + * XATTR_REPLACE: fail if xattr does not exist + */ + error = __zpl_xattr_get(ip, name, NULL, 0, cr); + if (error < 0) { + if (error != -ENODATA) + goto out; + + if (flags & XATTR_REPLACE) + goto out; + + /* The xattr to be removed already doesn't exist */ + error = 0; + if (value == NULL) + goto out; + } else { + error = -EEXIST; + if (flags & XATTR_CREATE) + goto out; + } + + /* Preferentially store the xattr as a SA for better performance */ + if (zsb->z_use_sa && zsb->z_xattr_sa && zp->z_is_sa) { + error = zpl_xattr_set_sa(ip, name, value, size, flags, cr); + if (error == 0) + goto out; + } + + error = zpl_xattr_set_dir(ip, name, value, size, flags, cr); +out: + rw_exit(&ITOZ(ip)->z_xattr_lock); + rrm_exit(&(zsb)->z_teardown_lock, FTAG); + spl_fstrans_unmark(cookie); + crfree(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int +__zpl_xattr_user_get(struct inode *ip, const char *name, + void *value, size_t size) +{ + char *xattr_name; + int error; + + if (strcmp(name, "") == 0) + return (-EINVAL); + + if (!(ITOZSB(ip)->z_flags & ZSB_XATTR)) + return (-EOPNOTSUPP); + + xattr_name = kmem_asprintf("%s%s", XATTR_USER_PREFIX, name); + error = zpl_xattr_get(ip, xattr_name, value, size); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_GET_WRAPPER(zpl_xattr_user_get); + +static int +__zpl_xattr_user_set(struct inode *ip, const char *name, + const void *value, size_t size, int flags) +{ + char *xattr_name; + int error; + + if (strcmp(name, "") == 0) + return (-EINVAL); + + if (!(ITOZSB(ip)->z_flags & ZSB_XATTR)) + return (-EOPNOTSUPP); + + xattr_name = kmem_asprintf("%s%s", XATTR_USER_PREFIX, name); + error = zpl_xattr_set(ip, xattr_name, value, size, flags); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_SET_WRAPPER(zpl_xattr_user_set); + +xattr_handler_t zpl_xattr_user_handler = { + .prefix = XATTR_USER_PREFIX, + .get = zpl_xattr_user_get, + .set = zpl_xattr_user_set, +}; + +static int +__zpl_xattr_trusted_get(struct inode *ip, const char *name, + void *value, size_t size) +{ + char *xattr_name; + int error; + + if (!capable(CAP_SYS_ADMIN)) + return (-EACCES); + + if (strcmp(name, "") == 0) + return (-EINVAL); + + xattr_name = kmem_asprintf("%s%s", XATTR_TRUSTED_PREFIX, name); + error = zpl_xattr_get(ip, xattr_name, value, size); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_GET_WRAPPER(zpl_xattr_trusted_get); + +static int +__zpl_xattr_trusted_set(struct inode *ip, const char *name, + const void *value, size_t size, int flags) +{ + char *xattr_name; + int error; + + if (!capable(CAP_SYS_ADMIN)) + return (-EACCES); + + if (strcmp(name, "") == 0) + return (-EINVAL); + + xattr_name = kmem_asprintf("%s%s", XATTR_TRUSTED_PREFIX, name); + error = zpl_xattr_set(ip, xattr_name, value, size, flags); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_SET_WRAPPER(zpl_xattr_trusted_set); + +xattr_handler_t zpl_xattr_trusted_handler = { + .prefix = XATTR_TRUSTED_PREFIX, + .get = zpl_xattr_trusted_get, + .set = zpl_xattr_trusted_set, +}; + +static int +__zpl_xattr_security_get(struct inode *ip, const char *name, + void *value, size_t size) +{ + char *xattr_name; + int error; + + if (strcmp(name, "") == 0) + return (-EINVAL); + + xattr_name = kmem_asprintf("%s%s", XATTR_SECURITY_PREFIX, name); + error = zpl_xattr_get(ip, xattr_name, value, size); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_GET_WRAPPER(zpl_xattr_security_get); + +static int +__zpl_xattr_security_set(struct inode *ip, const char *name, + const void *value, size_t size, int flags) +{ + char *xattr_name; + int error; + + if (strcmp(name, "") == 0) + return (-EINVAL); + + xattr_name = kmem_asprintf("%s%s", XATTR_SECURITY_PREFIX, name); + error = zpl_xattr_set(ip, xattr_name, value, size, flags); + strfree(xattr_name); + + return (error); +} +ZPL_XATTR_SET_WRAPPER(zpl_xattr_security_set); + +#ifdef HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY +static int +__zpl_xattr_security_init(struct inode *ip, const struct xattr *xattrs, + void *fs_info) +{ + const struct xattr *xattr; + int error = 0; + + for (xattr = xattrs; xattr->name != NULL; xattr++) { + error = __zpl_xattr_security_set(ip, + xattr->name, xattr->value, xattr->value_len, 0); + + if (error < 0) + break; + } + + return (error); +} + +int +zpl_xattr_security_init(struct inode *ip, struct inode *dip, + const struct qstr *qstr) +{ + return security_inode_init_security(ip, dip, qstr, + &__zpl_xattr_security_init, NULL); +} + +#else +int +zpl_xattr_security_init(struct inode *ip, struct inode *dip, + const struct qstr *qstr) +{ + int error; + size_t len; + void *value; + char *name; + + error = zpl_security_inode_init_security(ip, dip, qstr, + &name, &value, &len); + if (error) { + if (error == -EOPNOTSUPP) + return (0); + + return (error); + } + + error = __zpl_xattr_security_set(ip, name, value, len, 0); + + kfree(name); + kfree(value); + + return (error); +} +#endif /* HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY */ + +xattr_handler_t zpl_xattr_security_handler = { + .prefix = XATTR_SECURITY_PREFIX, + .get = zpl_xattr_security_get, + .set = zpl_xattr_security_set, +}; + +#ifdef CONFIG_FS_POSIX_ACL + +int +zpl_set_acl(struct inode *ip, int type, struct posix_acl *acl) +{ + struct super_block *sb = ITOZSB(ip)->z_sb; + char *name, *value = NULL; + int error = 0; + size_t size = 0; + + if (S_ISLNK(ip->i_mode)) + return (-EOPNOTSUPP); + + switch (type) { + case ACL_TYPE_ACCESS: + name = POSIX_ACL_XATTR_ACCESS; + if (acl) { + zpl_equivmode_t mode = ip->i_mode; + error = posix_acl_equiv_mode(acl, &mode); + if (error < 0) { + return (error); + } else { + /* + * The mode bits will have been set by + * ->zfs_setattr()->zfs_acl_chmod_setattr() + * using the ZFS ACL conversion. If they + * differ from the Posix ACL conversion dirty + * the inode to write the Posix mode bits. + */ + if (ip->i_mode != mode) { + ip->i_mode = mode; + ip->i_ctime = current_fs_time(sb); + zfs_mark_inode_dirty(ip); + } + + if (error == 0) + acl = NULL; + } + } + break; + + case ACL_TYPE_DEFAULT: + name = POSIX_ACL_XATTR_DEFAULT; + if (!S_ISDIR(ip->i_mode)) + return (acl ? -EACCES : 0); + break; + + default: + return (-EINVAL); + } + + if (acl) { + size = posix_acl_xattr_size(acl->a_count); + value = kmem_alloc(size, KM_SLEEP); + + error = zpl_acl_to_xattr(acl, value, size); + if (error < 0) { + kmem_free(value, size); + return (error); + } + } + + error = zpl_xattr_set(ip, name, value, size, 0); + if (value) + kmem_free(value, size); + + if (!error) { + if (acl) + zpl_set_cached_acl(ip, type, acl); + else + zpl_forget_cached_acl(ip, type); + } + + return (error); +} + +struct posix_acl * +zpl_get_acl(struct inode *ip, int type) +{ + struct posix_acl *acl; + void *value = NULL; + char *name; + int size; + +#ifdef HAVE_POSIX_ACL_CACHING + acl = get_cached_acl(ip, type); + if (acl != ACL_NOT_CACHED) + return (acl); +#endif /* HAVE_POSIX_ACL_CACHING */ + + switch (type) { + case ACL_TYPE_ACCESS: + name = POSIX_ACL_XATTR_ACCESS; + break; + case ACL_TYPE_DEFAULT: + name = POSIX_ACL_XATTR_DEFAULT; + break; + default: + return (ERR_PTR(-EINVAL)); + } + + size = zpl_xattr_get(ip, name, NULL, 0); + if (size > 0) { + value = kmem_alloc(size, KM_SLEEP); + size = zpl_xattr_get(ip, name, value, size); + } + + if (size > 0) { + acl = zpl_acl_from_xattr(value, size); + } else if (size == -ENODATA || size == -ENOSYS) { + acl = NULL; + } else { + acl = ERR_PTR(-EIO); + } + + if (size > 0) + kmem_free(value, size); + + if (!IS_ERR(acl)) + zpl_set_cached_acl(ip, type, acl); + + return (acl); +} + +#if !defined(HAVE_GET_ACL) +static int +__zpl_check_acl(struct inode *ip, int mask) +{ + struct posix_acl *acl; + int error; + + acl = zpl_get_acl(ip, ACL_TYPE_ACCESS); + if (IS_ERR(acl)) + return (PTR_ERR(acl)); + + if (acl) { + error = posix_acl_permission(ip, acl, mask); + zpl_posix_acl_release(acl); + return (error); + } + + return (-EAGAIN); +} + +#if defined(HAVE_CHECK_ACL_WITH_FLAGS) +int +zpl_check_acl(struct inode *ip, int mask, unsigned int flags) +{ + return (__zpl_check_acl(ip, mask)); +} +#elif defined(HAVE_CHECK_ACL) +int +zpl_check_acl(struct inode *ip, int mask) +{ + return (__zpl_check_acl(ip, mask)); +} +#elif defined(HAVE_PERMISSION_WITH_NAMEIDATA) +int +zpl_permission(struct inode *ip, int mask, struct nameidata *nd) +{ + return (generic_permission(ip, mask, __zpl_check_acl)); +} +#elif defined(HAVE_PERMISSION) +int +zpl_permission(struct inode *ip, int mask) +{ + return (generic_permission(ip, mask, __zpl_check_acl)); +} +#endif /* HAVE_CHECK_ACL | HAVE_PERMISSION */ +#endif /* !HAVE_GET_ACL */ + +int +zpl_init_acl(struct inode *ip, struct inode *dir) +{ + struct posix_acl *acl = NULL; + int error = 0; + + if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIXACL) + return (0); + + if (!S_ISLNK(ip->i_mode)) { + if (ITOZSB(ip)->z_acl_type == ZFS_ACLTYPE_POSIXACL) { + acl = zpl_get_acl(dir, ACL_TYPE_DEFAULT); + if (IS_ERR(acl)) + return (PTR_ERR(acl)); + } + + if (!acl) { + ip->i_mode &= ~current_umask(); + ip->i_ctime = current_fs_time(ITOZSB(ip)->z_sb); + zfs_mark_inode_dirty(ip); + return (0); + } + } + + if ((ITOZSB(ip)->z_acl_type == ZFS_ACLTYPE_POSIXACL) && acl) { + umode_t mode; + + if (S_ISDIR(ip->i_mode)) { + error = zpl_set_acl(ip, ACL_TYPE_DEFAULT, acl); + if (error) + goto out; + } + + mode = ip->i_mode; + error = __posix_acl_create(&acl, GFP_KERNEL, &mode); + if (error >= 0) { + ip->i_mode = mode; + zfs_mark_inode_dirty(ip); + if (error > 0) + error = zpl_set_acl(ip, ACL_TYPE_ACCESS, acl); + } + } +out: + zpl_posix_acl_release(acl); + + return (error); +} + +int +zpl_chmod_acl(struct inode *ip) +{ + struct posix_acl *acl; + int error; + + if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIXACL) + return (0); + + if (S_ISLNK(ip->i_mode)) + return (-EOPNOTSUPP); + + acl = zpl_get_acl(ip, ACL_TYPE_ACCESS); + if (IS_ERR(acl) || !acl) + return (PTR_ERR(acl)); + + error = __posix_acl_chmod(&acl, GFP_KERNEL, ip->i_mode); + if (!error) + error = zpl_set_acl(ip, ACL_TYPE_ACCESS, acl); + + zpl_posix_acl_release(acl); + + return (error); +} + +static size_t +zpl_xattr_acl_list(struct inode *ip, char *list, size_t list_size, + const char *name, size_t name_len, int type) +{ + char *xattr_name; + size_t xattr_size; + + if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIXACL) + return (0); + + switch (type) { + case ACL_TYPE_ACCESS: + xattr_name = POSIX_ACL_XATTR_ACCESS; + xattr_size = sizeof (xattr_name); + break; + case ACL_TYPE_DEFAULT: + xattr_name = POSIX_ACL_XATTR_DEFAULT; + xattr_size = sizeof (xattr_name); + break; + default: + return (0); + } + + if (list && xattr_size <= list_size) + memcpy(list, xattr_name, xattr_size); + + return (xattr_size); +} + +#ifdef HAVE_DENTRY_XATTR_LIST +static size_t +zpl_xattr_acl_list_access(struct dentry *dentry, char *list, + size_t list_size, const char *name, size_t name_len, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return zpl_xattr_acl_list(dentry->d_inode, + list, list_size, name, name_len, type); +} + +static size_t +zpl_xattr_acl_list_default(struct dentry *dentry, char *list, + size_t list_size, const char *name, size_t name_len, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return zpl_xattr_acl_list(dentry->d_inode, + list, list_size, name, name_len, type); +} + +#elif defined(HAVE_HANDLER_XATTR_LIST) +static size_t +zpl_xattr_acl_list_access(const struct xattr_handler *handler, + struct dentry *dentry, char *list, size_t list_size, const char *name, + size_t name_len) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return zpl_xattr_acl_list(dentry->d_inode, + list, list_size, name, name_len, type); +} + +static size_t +zpl_xattr_acl_list_default(const struct xattr_handler *handler, + struct dentry *dentry, char *list, size_t list_size, const char *name, + size_t name_len) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return zpl_xattr_acl_list(dentry->d_inode, + list, list_size, name, name_len, type); +} + +#else + +static size_t +zpl_xattr_acl_list_access(struct inode *ip, char *list, size_t list_size, + const char *name, size_t name_len) +{ + return zpl_xattr_acl_list(ip, + list, list_size, name, name_len, ACL_TYPE_ACCESS); +} + +static size_t +zpl_xattr_acl_list_default(struct inode *ip, char *list, size_t list_size, + const char *name, size_t name_len) +{ + return zpl_xattr_acl_list(ip, + list, list_size, name, name_len, ACL_TYPE_DEFAULT); +} +#endif /* HAVE_DENTRY_XATTR_LIST */ + +static int +zpl_xattr_acl_get(struct inode *ip, const char *name, + void *buffer, size_t size, int type) +{ + struct posix_acl *acl; + int error; + + if (strcmp(name, "") != 0) + return (-EINVAL); + + if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIXACL) + return (-EOPNOTSUPP); + + acl = zpl_get_acl(ip, type); + if (IS_ERR(acl)) + return (PTR_ERR(acl)); + if (acl == NULL) + return (-ENODATA); + + error = zpl_acl_to_xattr(acl, buffer, size); + zpl_posix_acl_release(acl); + + return (error); +} + +#ifdef HAVE_DENTRY_XATTR_GET +static int +zpl_xattr_acl_get_access(struct dentry *dentry, const char *name, + void *buffer, size_t size, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return (zpl_xattr_acl_get(dentry->d_inode, name, buffer, size, type)); +} + +static int +zpl_xattr_acl_get_default(struct dentry *dentry, const char *name, + void *buffer, size_t size, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return (zpl_xattr_acl_get(dentry->d_inode, name, buffer, size, type)); +} + +#elif defined(HAVE_HANDLER_XATTR_GET) +static int +zpl_xattr_acl_get_access(const struct xattr_handler *handler, + struct dentry *dentry, const char *name, void *buffer, size_t size) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return (zpl_xattr_acl_get(dentry->d_inode, name, buffer, size, type)); +} + +static int +zpl_xattr_acl_get_default(const struct xattr_handler *handler, + struct dentry *dentry, const char *name, void *buffer, size_t size) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return (zpl_xattr_acl_get(dentry->d_inode, name, buffer, size, type)); +} + +#else + +static int +zpl_xattr_acl_get_access(struct inode *ip, const char *name, + void *buffer, size_t size) +{ + return (zpl_xattr_acl_get(ip, name, buffer, size, ACL_TYPE_ACCESS)); +} + +static int +zpl_xattr_acl_get_default(struct inode *ip, const char *name, + void *buffer, size_t size) +{ + return (zpl_xattr_acl_get(ip, name, buffer, size, ACL_TYPE_DEFAULT)); +} +#endif /* HAVE_DENTRY_XATTR_GET */ + +static int +zpl_xattr_acl_set(struct inode *ip, const char *name, + const void *value, size_t size, int flags, int type) +{ + struct posix_acl *acl; + int error = 0; + + if (strcmp(name, "") != 0) + return (-EINVAL); + + if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIXACL) + return (-EOPNOTSUPP); + + if (!zpl_inode_owner_or_capable(ip)) + return (-EPERM); + + if (value) { + acl = zpl_acl_from_xattr(value, size); + if (IS_ERR(acl)) + return (PTR_ERR(acl)); + else if (acl) { + error = posix_acl_valid(acl); + if (error) { + zpl_posix_acl_release(acl); + return (error); + } + } + } else { + acl = NULL; + } + + error = zpl_set_acl(ip, type, acl); + zpl_posix_acl_release(acl); + + return (error); +} + +#ifdef HAVE_DENTRY_XATTR_SET +static int +zpl_xattr_acl_set_access(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return (zpl_xattr_acl_set(dentry->d_inode, + name, value, size, flags, type)); +} + +static int +zpl_xattr_acl_set_default(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags, int type) +{ + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return zpl_xattr_acl_set(dentry->d_inode, + name, value, size, flags, type); +} + +#elif defined(HAVE_HANDLER_XATTR_SET) +static int +zpl_xattr_acl_set_access(const struct xattr_handler *handler, + struct dentry *dentry, const char *name, const void *value, size_t size, + int flags) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_ACCESS); + return (zpl_xattr_acl_set(dentry->d_inode, + name, value, size, flags, type)); +} + +static int +zpl_xattr_acl_set_default(const struct xattr_handler *handler, + struct dentry *dentry, const char *name, const void *value, size_t size, + int flags) +{ + int type = handler->flags; + ASSERT3S(type, ==, ACL_TYPE_DEFAULT); + return zpl_xattr_acl_set(dentry->d_inode, + name, value, size, flags, type); +} + +#else + +static int +zpl_xattr_acl_set_access(struct inode *ip, const char *name, + const void *value, size_t size, int flags) +{ + return zpl_xattr_acl_set(ip, + name, value, size, flags, ACL_TYPE_ACCESS); +} + +static int +zpl_xattr_acl_set_default(struct inode *ip, const char *name, + const void *value, size_t size, int flags) +{ + return zpl_xattr_acl_set(ip, + name, value, size, flags, ACL_TYPE_DEFAULT); +} +#endif /* HAVE_DENTRY_XATTR_SET */ + +struct xattr_handler zpl_xattr_acl_access_handler = +{ + .prefix = POSIX_ACL_XATTR_ACCESS, + .list = zpl_xattr_acl_list_access, + .get = zpl_xattr_acl_get_access, + .set = zpl_xattr_acl_set_access, +#if defined(HAVE_DENTRY_XATTR_LIST) || defined(HAVE_HANDLER_XATTR_LIST) + .flags = ACL_TYPE_ACCESS, +#endif /* HAVE_DENTRY_XATTR_LIST */ +}; + +struct xattr_handler zpl_xattr_acl_default_handler = +{ + .prefix = POSIX_ACL_XATTR_DEFAULT, + .list = zpl_xattr_acl_list_default, + .get = zpl_xattr_acl_get_default, + .set = zpl_xattr_acl_set_default, +#if defined(HAVE_DENTRY_XATTR_LIST) || defined(HAVE_HANDLER_XATTR_LIST) + .flags = ACL_TYPE_DEFAULT, +#endif /* HAVE_DENTRY_XATTR_LIST */ +}; + +#endif /* CONFIG_FS_POSIX_ACL */ + +xattr_handler_t *zpl_xattr_handlers[] = { + &zpl_xattr_security_handler, + &zpl_xattr_trusted_handler, + &zpl_xattr_user_handler, +#ifdef CONFIG_FS_POSIX_ACL + &zpl_xattr_acl_access_handler, + &zpl_xattr_acl_default_handler, +#endif /* CONFIG_FS_POSIX_ACL */ + NULL +}; --- linux-4.4.0.orig/zfs/module/zfs/zrlock.c +++ linux-4.4.0/zfs/module/zfs/zrlock.c @@ -0,0 +1,209 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014 by Delphix. All rights reserved. + */ + +/* + * A Zero Reference Lock (ZRL) is a reference count that can lock out new + * references only when the count is zero and only without waiting if the count + * is not already zero. It is similar to a read-write lock in that it allows + * multiple readers and only a single writer, but it does not allow a writer to + * block while waiting for readers to exit, and therefore the question of + * reader/writer priority is moot (no WRWANT bit). Since the equivalent of + * rw_enter(&lock, RW_WRITER) is disallowed and only tryenter() is allowed, it + * is perfectly safe for the same reader to acquire the same lock multiple + * times. The fact that a ZRL is reentrant for readers (through multiple calls + * to zrl_add()) makes it convenient for determining whether something is + * actively referenced without the fuss of flagging lock ownership across + * function calls. + */ +#include +#include + +/* + * A ZRL can be locked only while there are zero references, so ZRL_LOCKED is + * treated as zero references. + */ +#define ZRL_LOCKED -1 +#define ZRL_DESTROYED -2 + +void +zrl_init(zrlock_t *zrl) +{ + mutex_init(&zrl->zr_mtx, NULL, MUTEX_DEFAULT, NULL); + zrl->zr_refcount = 0; + cv_init(&zrl->zr_cv, NULL, CV_DEFAULT, NULL); +#ifdef ZFS_DEBUG + zrl->zr_owner = NULL; + zrl->zr_caller = NULL; +#endif +} + +void +zrl_destroy(zrlock_t *zrl) +{ + ASSERT0(zrl->zr_refcount); + + mutex_destroy(&zrl->zr_mtx); + zrl->zr_refcount = ZRL_DESTROYED; + cv_destroy(&zrl->zr_cv); +} + +void +#ifdef ZFS_DEBUG +zrl_add_debug(zrlock_t *zrl, const char *zc) +#else +zrl_add(zrlock_t *zrl) +#endif +{ + uint32_t n = (uint32_t)zrl->zr_refcount; + + while (n != ZRL_LOCKED) { + uint32_t cas = atomic_cas_32( + (uint32_t *)&zrl->zr_refcount, n, n + 1); + if (cas == n) { + ASSERT3S((int32_t)n, >=, 0); +#ifdef ZFS_DEBUG + if (zrl->zr_owner == curthread) { + DTRACE_PROBE2(zrlock__reentry, + zrlock_t *, zrl, uint32_t, n); + } + zrl->zr_owner = curthread; + zrl->zr_caller = zc; +#endif + return; + } + n = cas; + } + + mutex_enter(&zrl->zr_mtx); + while (zrl->zr_refcount == ZRL_LOCKED) { + cv_wait(&zrl->zr_cv, &zrl->zr_mtx); + } + ASSERT3S(zrl->zr_refcount, >=, 0); + zrl->zr_refcount++; +#ifdef ZFS_DEBUG + zrl->zr_owner = curthread; + zrl->zr_caller = zc; +#endif + mutex_exit(&zrl->zr_mtx); +} + +void +zrl_remove(zrlock_t *zrl) +{ + uint32_t n; + +#ifdef ZFS_DEBUG + if (zrl->zr_owner == curthread) { + zrl->zr_owner = NULL; + zrl->zr_caller = NULL; + } +#endif + n = atomic_dec_32_nv((uint32_t *)&zrl->zr_refcount); + ASSERT3S((int32_t)n, >=, 0); +} + +int +zrl_tryenter(zrlock_t *zrl) +{ + uint32_t n = (uint32_t)zrl->zr_refcount; + + if (n == 0) { + uint32_t cas = atomic_cas_32( + (uint32_t *)&zrl->zr_refcount, 0, ZRL_LOCKED); + if (cas == 0) { +#ifdef ZFS_DEBUG + ASSERT3P(zrl->zr_owner, ==, NULL); + zrl->zr_owner = curthread; +#endif + return (1); + } + } + + ASSERT3S((int32_t)n, >, ZRL_DESTROYED); + + return (0); +} + +void +zrl_exit(zrlock_t *zrl) +{ + ASSERT3S(zrl->zr_refcount, ==, ZRL_LOCKED); + + mutex_enter(&zrl->zr_mtx); +#ifdef ZFS_DEBUG + ASSERT3P(zrl->zr_owner, ==, curthread); + zrl->zr_owner = NULL; + membar_producer(); /* make sure the owner store happens first */ +#endif + zrl->zr_refcount = 0; + cv_broadcast(&zrl->zr_cv); + mutex_exit(&zrl->zr_mtx); +} + +int +zrl_refcount(zrlock_t *zrl) +{ + int n; + + ASSERT3S(zrl->zr_refcount, >, ZRL_DESTROYED); + + n = (int)zrl->zr_refcount; + return (n <= 0 ? 0 : n); +} + +int +zrl_is_zero(zrlock_t *zrl) +{ + ASSERT3S(zrl->zr_refcount, >, ZRL_DESTROYED); + + return (zrl->zr_refcount <= 0); +} + +int +zrl_is_locked(zrlock_t *zrl) +{ + ASSERT3S(zrl->zr_refcount, >, ZRL_DESTROYED); + + return (zrl->zr_refcount == ZRL_LOCKED); +} + +#ifdef ZFS_DEBUG +kthread_t * +zrl_owner(zrlock_t *zrl) +{ + return (zrl->zr_owner); +} +#endif + +#if defined(_KERNEL) && defined(HAVE_SPL) + +#ifdef ZFS_DEBUG +EXPORT_SYMBOL(zrl_add_debug); +#else +EXPORT_SYMBOL(zrl_add); +#endif +EXPORT_SYMBOL(zrl_remove); + +#endif --- linux-4.4.0.orig/zfs/module/zfs/zvol.c +++ linux-4.4.0/zfs/module/zfs/zvol.c @@ -0,0 +1,1647 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Rewritten for Linux by Brian Behlendorf . + * LLNL-CODE-403049. + * + * ZFS volume emulation driver. + * + * Makes a DMU object look like a volume of arbitrary size, up to 2^64 bytes. + * Volumes are accessed through the symbolic links named: + * + * /dev// + * + * Volumes are persistent through reboot and module load. No user command + * needs to be run before opening and using a device. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +unsigned int zvol_inhibit_dev = 0; +unsigned int zvol_major = ZVOL_MAJOR; +unsigned int zvol_prefetch_bytes = (128 * 1024); +unsigned long zvol_max_discard_blocks = 16384; + +static kmutex_t zvol_state_lock; +static list_t zvol_state_list; +static char *zvol_tag = "zvol_tag"; + +/* + * The in-core state of each volume. + */ +typedef struct zvol_state { + char zv_name[MAXNAMELEN]; /* name */ + uint64_t zv_volsize; /* advertised space */ + uint64_t zv_volblocksize; /* volume block size */ + objset_t *zv_objset; /* objset handle */ + uint32_t zv_flags; /* ZVOL_* flags */ + uint32_t zv_open_count; /* open counts */ + uint32_t zv_changed; /* disk changed */ + zilog_t *zv_zilog; /* ZIL handle */ + znode_t zv_znode; /* for range locking */ + dmu_buf_t *zv_dbuf; /* bonus handle */ + dev_t zv_dev; /* device id */ + struct gendisk *zv_disk; /* generic disk */ + struct request_queue *zv_queue; /* request queue */ + spinlock_t zv_lock; /* request queue lock */ + list_node_t zv_next; /* next zvol_state_t linkage */ +} zvol_state_t; + +#define ZVOL_RDONLY 0x1 + +/* + * Find the next available range of ZVOL_MINORS minor numbers. The + * zvol_state_list is kept in ascending minor order so we simply need + * to scan the list for the first gap in the sequence. This allows us + * to recycle minor number as devices are created and removed. + */ +static int +zvol_find_minor(unsigned *minor) +{ + zvol_state_t *zv; + + *minor = 0; + ASSERT(MUTEX_HELD(&zvol_state_lock)); + for (zv = list_head(&zvol_state_list); zv != NULL; + zv = list_next(&zvol_state_list, zv), *minor += ZVOL_MINORS) { + if (MINOR(zv->zv_dev) != MINOR(*minor)) + break; + } + + /* All minors are in use */ + if (*minor >= (1 << MINORBITS)) + return (SET_ERROR(ENXIO)); + + return (0); +} + +/* + * Find a zvol_state_t given the full major+minor dev_t. + */ +static zvol_state_t * +zvol_find_by_dev(dev_t dev) +{ + zvol_state_t *zv; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + for (zv = list_head(&zvol_state_list); zv != NULL; + zv = list_next(&zvol_state_list, zv)) { + if (zv->zv_dev == dev) + return (zv); + } + + return (NULL); +} + +/* + * Find a zvol_state_t given the name provided at zvol_alloc() time. + */ +static zvol_state_t * +zvol_find_by_name(const char *name) +{ + zvol_state_t *zv; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + for (zv = list_head(&zvol_state_list); zv != NULL; + zv = list_next(&zvol_state_list, zv)) { + if (strncmp(zv->zv_name, name, MAXNAMELEN) == 0) + return (zv); + } + + return (NULL); +} + + +/* + * Given a path, return TRUE if path is a ZVOL. + */ +boolean_t +zvol_is_zvol(const char *device) +{ + struct block_device *bdev; + unsigned int major; + + bdev = lookup_bdev(device); + if (IS_ERR(bdev)) + return (B_FALSE); + + major = MAJOR(bdev->bd_dev); + bdput(bdev); + + if (major == zvol_major) + return (B_TRUE); + + return (B_FALSE); +} + +/* + * ZFS_IOC_CREATE callback handles dmu zvol and zap object creation. + */ +void +zvol_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx) +{ + zfs_creat_t *zct = arg; + nvlist_t *nvprops = zct->zct_props; + int error; + uint64_t volblocksize, volsize; + + VERIFY(nvlist_lookup_uint64(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLSIZE), &volsize) == 0); + if (nvlist_lookup_uint64(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), &volblocksize) != 0) + volblocksize = zfs_prop_default_numeric(ZFS_PROP_VOLBLOCKSIZE); + + /* + * These properties must be removed from the list so the generic + * property setting step won't apply to them. + */ + VERIFY(nvlist_remove_all(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLSIZE)) == 0); + (void) nvlist_remove_all(nvprops, + zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE)); + + error = dmu_object_claim(os, ZVOL_OBJ, DMU_OT_ZVOL, volblocksize, + DMU_OT_NONE, 0, tx); + ASSERT(error == 0); + + error = zap_create_claim(os, ZVOL_ZAP_OBJ, DMU_OT_ZVOL_PROP, + DMU_OT_NONE, 0, tx); + ASSERT(error == 0); + + error = zap_update(os, ZVOL_ZAP_OBJ, "size", 8, 1, &volsize, tx); + ASSERT(error == 0); +} + +/* + * ZFS_IOC_OBJSET_STATS entry point. + */ +int +zvol_get_stats(objset_t *os, nvlist_t *nv) +{ + int error; + dmu_object_info_t *doi; + uint64_t val; + + error = zap_lookup(os, ZVOL_ZAP_OBJ, "size", 8, 1, &val); + if (error) + return (SET_ERROR(error)); + + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_VOLSIZE, val); + doi = kmem_alloc(sizeof (dmu_object_info_t), KM_SLEEP); + error = dmu_object_info(os, ZVOL_OBJ, doi); + + if (error == 0) { + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_VOLBLOCKSIZE, + doi->doi_data_block_size); + } + + kmem_free(doi, sizeof (dmu_object_info_t)); + + return (SET_ERROR(error)); +} + +static void +zvol_size_changed(zvol_state_t *zv, uint64_t volsize) +{ + struct block_device *bdev; + + bdev = bdget_disk(zv->zv_disk, 0); + if (bdev == NULL) + return; +/* + * 2.6.28 API change + * Added check_disk_size_change() helper function. + */ +#ifdef HAVE_CHECK_DISK_SIZE_CHANGE + set_capacity(zv->zv_disk, volsize >> 9); + zv->zv_volsize = volsize; + check_disk_size_change(zv->zv_disk, bdev); +#else + zv->zv_volsize = volsize; + zv->zv_changed = 1; + (void) check_disk_change(bdev); +#endif /* HAVE_CHECK_DISK_SIZE_CHANGE */ + + bdput(bdev); +} + +/* + * Sanity check volume size. + */ +int +zvol_check_volsize(uint64_t volsize, uint64_t blocksize) +{ + if (volsize == 0) + return (SET_ERROR(EINVAL)); + + if (volsize % blocksize != 0) + return (SET_ERROR(EINVAL)); + +#ifdef _ILP32 + if (volsize - 1 > MAXOFFSET_T) + return (SET_ERROR(EOVERFLOW)); +#endif + return (0); +} + +/* + * Ensure the zap is flushed then inform the VFS of the capacity change. + */ +static int +zvol_update_volsize(uint64_t volsize, objset_t *os) +{ + dmu_tx_t *tx; + int error; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + + tx = dmu_tx_create(os); + dmu_tx_hold_zap(tx, ZVOL_ZAP_OBJ, TRUE, NULL); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + return (SET_ERROR(error)); + } + + error = zap_update(os, ZVOL_ZAP_OBJ, "size", 8, 1, + &volsize, tx); + dmu_tx_commit(tx); + + if (error == 0) + error = dmu_free_long_range(os, + ZVOL_OBJ, volsize, DMU_OBJECT_END); + + return (error); +} + +static int +zvol_update_live_volsize(zvol_state_t *zv, uint64_t volsize) +{ + zvol_size_changed(zv, volsize); + + /* + * We should post a event here describing the expansion. However, + * the zfs_ereport_post() interface doesn't nicely support posting + * events for zvols, it assumes events relate to vdevs or zios. + */ + + return (0); +} + +/* + * Set ZFS_PROP_VOLSIZE set entry point. + */ +int +zvol_set_volsize(const char *name, uint64_t volsize) +{ + zvol_state_t *zv = NULL; + objset_t *os = NULL; + int error; + dmu_object_info_t *doi; + uint64_t readonly; + boolean_t owned = B_FALSE; + + error = dsl_prop_get_integer(name, + zfs_prop_to_name(ZFS_PROP_READONLY), &readonly, NULL); + if (error != 0) + return (SET_ERROR(error)); + if (readonly) + return (SET_ERROR(EROFS)); + + mutex_enter(&zvol_state_lock); + zv = zvol_find_by_name(name); + + if (zv == NULL || zv->zv_objset == NULL) { + if ((error = dmu_objset_own(name, DMU_OST_ZVOL, B_FALSE, + FTAG, &os)) != 0) { + mutex_exit(&zvol_state_lock); + return (SET_ERROR(error)); + } + owned = B_TRUE; + if (zv != NULL) + zv->zv_objset = os; + } else { + os = zv->zv_objset; + } + + doi = kmem_alloc(sizeof (dmu_object_info_t), KM_SLEEP); + + if ((error = dmu_object_info(os, ZVOL_OBJ, doi)) || + (error = zvol_check_volsize(volsize, doi->doi_data_block_size))) + goto out; + + error = zvol_update_volsize(volsize, os); + kmem_free(doi, sizeof (dmu_object_info_t)); + + if (error == 0 && zv != NULL) + error = zvol_update_live_volsize(zv, volsize); +out: + if (owned) { + dmu_objset_disown(os, FTAG); + if (zv != NULL) + zv->zv_objset = NULL; + } + mutex_exit(&zvol_state_lock); + return (error); +} + +/* + * Sanity check volume block size. + */ +int +zvol_check_volblocksize(const char *name, uint64_t volblocksize) +{ + /* Record sizes above 128k need the feature to be enabled */ + if (volblocksize > SPA_OLD_MAXBLOCKSIZE) { + spa_t *spa; + int error; + + if ((error = spa_open(name, &spa, FTAG)) != 0) + return (error); + + if (!spa_feature_is_enabled(spa, SPA_FEATURE_LARGE_BLOCKS)) { + spa_close(spa, FTAG); + return (SET_ERROR(ENOTSUP)); + } + + /* + * We don't allow setting the property above 1MB, + * unless the tunable has been changed. + */ + if (volblocksize > zfs_max_recordsize) + return (SET_ERROR(EDOM)); + + spa_close(spa, FTAG); + } + + if (volblocksize < SPA_MINBLOCKSIZE || + volblocksize > SPA_MAXBLOCKSIZE || + !ISP2(volblocksize)) + return (SET_ERROR(EDOM)); + + return (0); +} + +/* + * Set ZFS_PROP_VOLBLOCKSIZE set entry point. + */ +int +zvol_set_volblocksize(const char *name, uint64_t volblocksize) +{ + zvol_state_t *zv; + dmu_tx_t *tx; + int error; + + mutex_enter(&zvol_state_lock); + + zv = zvol_find_by_name(name); + if (zv == NULL) { + error = SET_ERROR(ENXIO); + goto out; + } + + if (zv->zv_flags & ZVOL_RDONLY) { + error = SET_ERROR(EROFS); + goto out; + } + + tx = dmu_tx_create(zv->zv_objset); + dmu_tx_hold_bonus(tx, ZVOL_OBJ); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + } else { + error = dmu_object_set_blocksize(zv->zv_objset, ZVOL_OBJ, + volblocksize, 0, tx); + if (error == ENOTSUP) + error = SET_ERROR(EBUSY); + dmu_tx_commit(tx); + if (error == 0) + zv->zv_volblocksize = volblocksize; + } +out: + mutex_exit(&zvol_state_lock); + + return (SET_ERROR(error)); +} + +/* + * Replay a TX_WRITE ZIL transaction that didn't get committed + * after a system failure + */ +static int +zvol_replay_write(zvol_state_t *zv, lr_write_t *lr, boolean_t byteswap) +{ + objset_t *os = zv->zv_objset; + char *data = (char *)(lr + 1); /* data follows lr_write_t */ + uint64_t off = lr->lr_offset; + uint64_t len = lr->lr_length; + dmu_tx_t *tx; + int error; + + if (byteswap) + byteswap_uint64_array(lr, sizeof (*lr)); + + tx = dmu_tx_create(os); + dmu_tx_hold_write(tx, ZVOL_OBJ, off, len); + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + } else { + dmu_write(os, ZVOL_OBJ, off, len, data, tx); + dmu_tx_commit(tx); + } + + return (SET_ERROR(error)); +} + +static int +zvol_replay_err(zvol_state_t *zv, lr_t *lr, boolean_t byteswap) +{ + return (SET_ERROR(ENOTSUP)); +} + +/* + * Callback vectors for replaying records. + * Only TX_WRITE is needed for zvol. + */ +zil_replay_func_t zvol_replay_vector[TX_MAX_TYPE] = { + (zil_replay_func_t)zvol_replay_err, /* no such transaction type */ + (zil_replay_func_t)zvol_replay_err, /* TX_CREATE */ + (zil_replay_func_t)zvol_replay_err, /* TX_MKDIR */ + (zil_replay_func_t)zvol_replay_err, /* TX_MKXATTR */ + (zil_replay_func_t)zvol_replay_err, /* TX_SYMLINK */ + (zil_replay_func_t)zvol_replay_err, /* TX_REMOVE */ + (zil_replay_func_t)zvol_replay_err, /* TX_RMDIR */ + (zil_replay_func_t)zvol_replay_err, /* TX_LINK */ + (zil_replay_func_t)zvol_replay_err, /* TX_RENAME */ + (zil_replay_func_t)zvol_replay_write, /* TX_WRITE */ + (zil_replay_func_t)zvol_replay_err, /* TX_TRUNCATE */ + (zil_replay_func_t)zvol_replay_err, /* TX_SETATTR */ + (zil_replay_func_t)zvol_replay_err, /* TX_ACL */ +}; + +/* + * zvol_log_write() handles synchronous writes using TX_WRITE ZIL transactions. + * + * We store data in the log buffers if it's small enough. + * Otherwise we will later flush the data out via dmu_sync(). + */ +ssize_t zvol_immediate_write_sz = 32768; + +static void +zvol_log_write(zvol_state_t *zv, dmu_tx_t *tx, uint64_t offset, + uint64_t size, int sync) +{ + uint32_t blocksize = zv->zv_volblocksize; + zilog_t *zilog = zv->zv_zilog; + boolean_t slogging; + ssize_t immediate_write_sz; + + if (zil_replaying(zilog, tx)) + return; + + immediate_write_sz = (zilog->zl_logbias == ZFS_LOGBIAS_THROUGHPUT) + ? 0 : zvol_immediate_write_sz; + slogging = spa_has_slogs(zilog->zl_spa) && + (zilog->zl_logbias == ZFS_LOGBIAS_LATENCY); + + while (size) { + itx_t *itx; + lr_write_t *lr; + ssize_t len; + itx_wr_state_t write_state; + + /* + * Unlike zfs_log_write() we can be called with + * up to DMU_MAX_ACCESS/2 (5MB) writes. + */ + if (blocksize > immediate_write_sz && !slogging && + size >= blocksize && offset % blocksize == 0) { + write_state = WR_INDIRECT; /* uses dmu_sync */ + len = blocksize; + } else if (sync) { + write_state = WR_COPIED; + len = MIN(ZIL_MAX_LOG_DATA, size); + } else { + write_state = WR_NEED_COPY; + len = MIN(ZIL_MAX_LOG_DATA, size); + } + + itx = zil_itx_create(TX_WRITE, sizeof (*lr) + + (write_state == WR_COPIED ? len : 0)); + lr = (lr_write_t *)&itx->itx_lr; + if (write_state == WR_COPIED && dmu_read(zv->zv_objset, + ZVOL_OBJ, offset, len, lr+1, DMU_READ_NO_PREFETCH) != 0) { + zil_itx_destroy(itx); + itx = zil_itx_create(TX_WRITE, sizeof (*lr)); + lr = (lr_write_t *)&itx->itx_lr; + write_state = WR_NEED_COPY; + } + + itx->itx_wr_state = write_state; + if (write_state == WR_NEED_COPY) + itx->itx_sod += len; + lr->lr_foid = ZVOL_OBJ; + lr->lr_offset = offset; + lr->lr_length = len; + lr->lr_blkoff = 0; + BP_ZERO(&lr->lr_blkptr); + + itx->itx_private = zv; + itx->itx_sync = sync; + + (void) zil_itx_assign(zilog, itx, tx); + + offset += len; + size -= len; + } +} + +static int +zvol_write(struct bio *bio) +{ + zvol_state_t *zv = bio->bi_bdev->bd_disk->private_data; + uint64_t offset = BIO_BI_SECTOR(bio) << 9; + uint64_t size = BIO_BI_SIZE(bio); + int error = 0; + dmu_tx_t *tx; + rl_t *rl; + + if (bio->bi_rw & VDEV_REQ_FLUSH) + zil_commit(zv->zv_zilog, ZVOL_OBJ); + + /* + * Some requests are just for flush and nothing else. + */ + if (size == 0) + goto out; + + rl = zfs_range_lock(&zv->zv_znode, offset, size, RL_WRITER); + + tx = dmu_tx_create(zv->zv_objset); + dmu_tx_hold_write(tx, ZVOL_OBJ, offset, size); + + /* This will only fail for ENOSPC */ + error = dmu_tx_assign(tx, TXG_WAIT); + if (error) { + dmu_tx_abort(tx); + zfs_range_unlock(rl); + goto out; + } + + error = dmu_write_bio(zv->zv_objset, ZVOL_OBJ, bio, tx); + if (error == 0) + zvol_log_write(zv, tx, offset, size, + !!(bio->bi_rw & VDEV_REQ_FUA)); + + dmu_tx_commit(tx); + zfs_range_unlock(rl); + + if ((bio->bi_rw & VDEV_REQ_FUA) || + zv->zv_objset->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zv->zv_zilog, ZVOL_OBJ); + +out: + return (error); +} + +static int +zvol_discard(struct bio *bio) +{ + zvol_state_t *zv = bio->bi_bdev->bd_disk->private_data; + uint64_t start = BIO_BI_SECTOR(bio) << 9; + uint64_t size = BIO_BI_SIZE(bio); + uint64_t end = start + size; + int error; + rl_t *rl; + + if (end > zv->zv_volsize) + return (SET_ERROR(EIO)); + + /* + * Align the request to volume block boundaries when REQ_SECURE is + * available, but not requested. If we don't, then this will force + * dnode_free_range() to zero out the unaligned parts, which is slow + * (read-modify-write) and useless since we are not freeing any space + * by doing so. Kernels that do not support REQ_SECURE (2.6.32 through + * 2.6.35) will not receive this optimization. + */ +#ifdef REQ_SECURE + if (!(bio->bi_rw & REQ_SECURE)) { + start = P2ROUNDUP(start, zv->zv_volblocksize); + end = P2ALIGN(end, zv->zv_volblocksize); + size = end - start; + } +#endif + + if (start >= end) + return (0); + + rl = zfs_range_lock(&zv->zv_znode, start, size, RL_WRITER); + + error = dmu_free_long_range(zv->zv_objset, ZVOL_OBJ, start, size); + + /* + * TODO: maybe we should add the operation to the log. + */ + + zfs_range_unlock(rl); + + return (error); +} + +static int +zvol_read(struct bio *bio) +{ + zvol_state_t *zv = bio->bi_bdev->bd_disk->private_data; + uint64_t offset = BIO_BI_SECTOR(bio) << 9; + uint64_t len = BIO_BI_SIZE(bio); + int error; + rl_t *rl; + + if (len == 0) + return (0); + + + rl = zfs_range_lock(&zv->zv_znode, offset, len, RL_READER); + + error = dmu_read_bio(zv->zv_objset, ZVOL_OBJ, bio); + + zfs_range_unlock(rl); + + /* convert checksum errors into IO errors */ + if (error == ECKSUM) + error = SET_ERROR(EIO); + + return (error); +} + +static MAKE_REQUEST_FN_RET +zvol_request(struct request_queue *q, struct bio *bio) +{ + zvol_state_t *zv = q->queuedata; + fstrans_cookie_t cookie = spl_fstrans_mark(); + uint64_t offset = BIO_BI_SECTOR(bio); + unsigned int sectors = bio_sectors(bio); + int rw = bio_data_dir(bio); +#ifdef HAVE_GENERIC_IO_ACCT + unsigned long start = jiffies; +#endif + int error = 0; + + if (bio_has_data(bio) && offset + sectors > + get_capacity(zv->zv_disk)) { + printk(KERN_INFO + "%s: bad access: block=%llu, count=%lu\n", + zv->zv_disk->disk_name, + (long long unsigned)offset, + (long unsigned)sectors); + error = SET_ERROR(EIO); + goto out1; + } + + generic_start_io_acct(rw, sectors, &zv->zv_disk->part0); + + if (rw == WRITE) { + if (unlikely(zv->zv_flags & ZVOL_RDONLY)) { + error = SET_ERROR(EROFS); + goto out2; + } + + if (bio->bi_rw & VDEV_REQ_DISCARD) { + error = zvol_discard(bio); + goto out2; + } + + error = zvol_write(bio); + } else + error = zvol_read(bio); + +out2: + generic_end_io_acct(rw, &zv->zv_disk->part0, start); +out1: + BIO_END_IO(bio, -error); + spl_fstrans_unmark(cookie); +#ifdef HAVE_MAKE_REQUEST_FN_RET_INT + return (0); +#elif defined(HAVE_MAKE_REQUEST_FN_RET_QC) + return (BLK_QC_T_NONE); +#endif +} + +static void +zvol_get_done(zgd_t *zgd, int error) +{ + if (zgd->zgd_db) + dmu_buf_rele(zgd->zgd_db, zgd); + + zfs_range_unlock(zgd->zgd_rl); + + if (error == 0 && zgd->zgd_bp) + zil_add_block(zgd->zgd_zilog, zgd->zgd_bp); + + kmem_free(zgd, sizeof (zgd_t)); +} + +/* + * Get data to generate a TX_WRITE intent log record. + */ +static int +zvol_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio) +{ + zvol_state_t *zv = arg; + objset_t *os = zv->zv_objset; + uint64_t object = ZVOL_OBJ; + uint64_t offset = lr->lr_offset; + uint64_t size = lr->lr_length; + blkptr_t *bp = &lr->lr_blkptr; + dmu_buf_t *db; + zgd_t *zgd; + int error; + + ASSERT(zio != NULL); + ASSERT(size != 0); + + zgd = (zgd_t *)kmem_zalloc(sizeof (zgd_t), KM_SLEEP); + zgd->zgd_zilog = zv->zv_zilog; + zgd->zgd_rl = zfs_range_lock(&zv->zv_znode, offset, size, RL_READER); + + /* + * Write records come in two flavors: immediate and indirect. + * For small writes it's cheaper to store the data with the + * log record (immediate); for large writes it's cheaper to + * sync the data and get a pointer to it (indirect) so that + * we don't have to write the data twice. + */ + if (buf != NULL) { /* immediate write */ + error = dmu_read(os, object, offset, size, buf, + DMU_READ_NO_PREFETCH); + } else { + size = zv->zv_volblocksize; + offset = P2ALIGN_TYPED(offset, size, uint64_t); + error = dmu_buf_hold(os, object, offset, zgd, &db, + DMU_READ_NO_PREFETCH); + if (error == 0) { + blkptr_t *obp = dmu_buf_get_blkptr(db); + if (obp) { + ASSERT(BP_IS_HOLE(bp)); + *bp = *obp; + } + + zgd->zgd_db = db; + zgd->zgd_bp = &lr->lr_blkptr; + + ASSERT(db != NULL); + ASSERT(db->db_offset == offset); + ASSERT(db->db_size == size); + + error = dmu_sync(zio, lr->lr_common.lrc_txg, + zvol_get_done, zgd); + + if (error == 0) + return (0); + } + } + + zvol_get_done(zgd, error); + + return (SET_ERROR(error)); +} + +/* + * The zvol_state_t's are inserted in increasing MINOR(dev_t) order. + */ +static void +zvol_insert(zvol_state_t *zv_insert) +{ + zvol_state_t *zv = NULL; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + ASSERT3U(MINOR(zv_insert->zv_dev) & ZVOL_MINOR_MASK, ==, 0); + for (zv = list_head(&zvol_state_list); zv != NULL; + zv = list_next(&zvol_state_list, zv)) { + if (MINOR(zv->zv_dev) > MINOR(zv_insert->zv_dev)) + break; + } + + list_insert_before(&zvol_state_list, zv, zv_insert); +} + +/* + * Simply remove the zvol from to list of zvols. + */ +static void +zvol_remove(zvol_state_t *zv_remove) +{ + ASSERT(MUTEX_HELD(&zvol_state_lock)); + list_remove(&zvol_state_list, zv_remove); +} + +static int +zvol_first_open(zvol_state_t *zv) +{ + objset_t *os; + uint64_t volsize; + int locked = 0; + int error; + uint64_t ro; + + /* + * In all other cases the spa_namespace_lock is taken before the + * bdev->bd_mutex lock. But in this case the Linux __blkdev_get() + * function calls fops->open() with the bdev->bd_mutex lock held. + * + * To avoid a potential lock inversion deadlock we preemptively + * try to take the spa_namespace_lock(). Normally it will not + * be contended and this is safe because spa_open_common() handles + * the case where the caller already holds the spa_namespace_lock. + * + * When it is contended we risk a lock inversion if we were to + * block waiting for the lock. Luckily, the __blkdev_get() + * function allows us to return -ERESTARTSYS which will result in + * bdev->bd_mutex being dropped, reacquired, and fops->open() being + * called again. This process can be repeated safely until both + * locks are acquired. + */ + if (!mutex_owned(&spa_namespace_lock)) { + locked = mutex_tryenter(&spa_namespace_lock); + if (!locked) + return (-SET_ERROR(ERESTARTSYS)); + } + + error = dsl_prop_get_integer(zv->zv_name, "readonly", &ro, NULL); + if (error) + goto out_mutex; + + /* lie and say we're read-only */ + error = dmu_objset_own(zv->zv_name, DMU_OST_ZVOL, 1, zvol_tag, &os); + if (error) + goto out_mutex; + + error = zap_lookup(os, ZVOL_ZAP_OBJ, "size", 8, 1, &volsize); + if (error) { + dmu_objset_disown(os, zvol_tag); + goto out_mutex; + } + + zv->zv_objset = os; + error = dmu_bonus_hold(os, ZVOL_OBJ, zvol_tag, &zv->zv_dbuf); + if (error) { + dmu_objset_disown(os, zvol_tag); + goto out_mutex; + } + + set_capacity(zv->zv_disk, volsize >> 9); + zv->zv_volsize = volsize; + zv->zv_zilog = zil_open(os, zvol_get_data); + + if (ro || dmu_objset_is_snapshot(os) || + !spa_writeable(dmu_objset_spa(os))) { + set_disk_ro(zv->zv_disk, 1); + zv->zv_flags |= ZVOL_RDONLY; + } else { + set_disk_ro(zv->zv_disk, 0); + zv->zv_flags &= ~ZVOL_RDONLY; + } + +out_mutex: + if (locked) + mutex_exit(&spa_namespace_lock); + + return (SET_ERROR(-error)); +} + +static void +zvol_last_close(zvol_state_t *zv) +{ + zil_close(zv->zv_zilog); + zv->zv_zilog = NULL; + + dmu_buf_rele(zv->zv_dbuf, zvol_tag); + zv->zv_dbuf = NULL; + + /* + * Evict cached data + */ + if (dsl_dataset_is_dirty(dmu_objset_ds(zv->zv_objset)) && + !(zv->zv_flags & ZVOL_RDONLY)) + txg_wait_synced(dmu_objset_pool(zv->zv_objset), 0); + (void) dmu_objset_evict_dbufs(zv->zv_objset); + + dmu_objset_disown(zv->zv_objset, zvol_tag); + zv->zv_objset = NULL; +} + +static int +zvol_open(struct block_device *bdev, fmode_t flag) +{ + zvol_state_t *zv = bdev->bd_disk->private_data; + int error = 0, drop_mutex = 0; + + /* + * If the caller is already holding the mutex do not take it + * again, this will happen as part of zvol_create_minor(). + * Once add_disk() is called the device is live and the kernel + * will attempt to open it to read the partition information. + */ + if (!mutex_owned(&zvol_state_lock)) { + mutex_enter(&zvol_state_lock); + drop_mutex = 1; + } + + ASSERT3P(zv, !=, NULL); + + if (zv->zv_open_count == 0) { + error = zvol_first_open(zv); + if (error) + goto out_mutex; + } + + if ((flag & FMODE_WRITE) && (zv->zv_flags & ZVOL_RDONLY)) { + error = -EROFS; + goto out_open_count; + } + + zv->zv_open_count++; + +out_open_count: + if (zv->zv_open_count == 0) + zvol_last_close(zv); + +out_mutex: + if (drop_mutex) + mutex_exit(&zvol_state_lock); + + check_disk_change(bdev); + + return (SET_ERROR(error)); +} + +#ifdef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID +static void +#else +static int +#endif +zvol_release(struct gendisk *disk, fmode_t mode) +{ + zvol_state_t *zv = disk->private_data; + int drop_mutex = 0; + + if (!mutex_owned(&zvol_state_lock)) { + mutex_enter(&zvol_state_lock); + drop_mutex = 1; + } + + if (zv->zv_open_count > 0) { + zv->zv_open_count--; + if (zv->zv_open_count == 0) + zvol_last_close(zv); + } + + if (drop_mutex) + mutex_exit(&zvol_state_lock); + +#ifndef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID + return (0); +#endif +} + +static int +zvol_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + zvol_state_t *zv = bdev->bd_disk->private_data; + int error = 0; + + if (zv == NULL) + return (SET_ERROR(-ENXIO)); + + switch (cmd) { + case BLKFLSBUF: + zil_commit(zv->zv_zilog, ZVOL_OBJ); + break; + case BLKZNAME: + error = copy_to_user((void *)arg, zv->zv_name, MAXNAMELEN); + break; + + default: + error = -ENOTTY; + break; + + } + + return (SET_ERROR(error)); +} + +#ifdef CONFIG_COMPAT +static int +zvol_compat_ioctl(struct block_device *bdev, fmode_t mode, + unsigned cmd, unsigned long arg) +{ + return (zvol_ioctl(bdev, mode, cmd, arg)); +} +#else +#define zvol_compat_ioctl NULL +#endif + +static int zvol_media_changed(struct gendisk *disk) +{ + zvol_state_t *zv = disk->private_data; + + return (zv->zv_changed); +} + +static int zvol_revalidate_disk(struct gendisk *disk) +{ + zvol_state_t *zv = disk->private_data; + + zv->zv_changed = 0; + set_capacity(zv->zv_disk, zv->zv_volsize >> 9); + + return (0); +} + +/* + * Provide a simple virtual geometry for legacy compatibility. For devices + * smaller than 1 MiB a small head and sector count is used to allow very + * tiny devices. For devices over 1 Mib a standard head and sector count + * is used to keep the cylinders count reasonable. + */ +static int +zvol_getgeo(struct block_device *bdev, struct hd_geometry *geo) +{ + zvol_state_t *zv = bdev->bd_disk->private_data; + sector_t sectors = get_capacity(zv->zv_disk); + + if (sectors > 2048) { + geo->heads = 16; + geo->sectors = 63; + } else { + geo->heads = 2; + geo->sectors = 4; + } + + geo->start = 0; + geo->cylinders = sectors / (geo->heads * geo->sectors); + + return (0); +} + +static struct kobject * +zvol_probe(dev_t dev, int *part, void *arg) +{ + zvol_state_t *zv; + struct kobject *kobj; + + mutex_enter(&zvol_state_lock); + zv = zvol_find_by_dev(dev); + kobj = zv ? get_disk(zv->zv_disk) : NULL; + mutex_exit(&zvol_state_lock); + + return (kobj); +} + +#ifdef HAVE_BDEV_BLOCK_DEVICE_OPERATIONS +static struct block_device_operations zvol_ops = { + .open = zvol_open, + .release = zvol_release, + .ioctl = zvol_ioctl, + .compat_ioctl = zvol_compat_ioctl, + .media_changed = zvol_media_changed, + .revalidate_disk = zvol_revalidate_disk, + .getgeo = zvol_getgeo, + .owner = THIS_MODULE, +}; + +#else /* HAVE_BDEV_BLOCK_DEVICE_OPERATIONS */ + +static int +zvol_open_by_inode(struct inode *inode, struct file *file) +{ + return (zvol_open(inode->i_bdev, file->f_mode)); +} + +static int +zvol_release_by_inode(struct inode *inode, struct file *file) +{ + return (zvol_release(inode->i_bdev->bd_disk, file->f_mode)); +} + +static int +zvol_ioctl_by_inode(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + if (file == NULL || inode == NULL) + return (SET_ERROR(-EINVAL)); + + return (zvol_ioctl(inode->i_bdev, file->f_mode, cmd, arg)); +} + +#ifdef CONFIG_COMPAT +static long +zvol_compat_ioctl_by_inode(struct file *file, + unsigned int cmd, unsigned long arg) +{ + if (file == NULL) + return (SET_ERROR(-EINVAL)); + + return (zvol_compat_ioctl(file->f_dentry->d_inode->i_bdev, + file->f_mode, cmd, arg)); +} +#else +#define zvol_compat_ioctl_by_inode NULL +#endif + +static struct block_device_operations zvol_ops = { + .open = zvol_open_by_inode, + .release = zvol_release_by_inode, + .ioctl = zvol_ioctl_by_inode, + .compat_ioctl = zvol_compat_ioctl_by_inode, + .media_changed = zvol_media_changed, + .revalidate_disk = zvol_revalidate_disk, + .getgeo = zvol_getgeo, + .owner = THIS_MODULE, +}; +#endif /* HAVE_BDEV_BLOCK_DEVICE_OPERATIONS */ + +/* + * Allocate memory for a new zvol_state_t and setup the required + * request queue and generic disk structures for the block device. + */ +static zvol_state_t * +zvol_alloc(dev_t dev, const char *name) +{ + zvol_state_t *zv; + + zv = kmem_zalloc(sizeof (zvol_state_t), KM_SLEEP); + + spin_lock_init(&zv->zv_lock); + list_link_init(&zv->zv_next); + + zv->zv_queue = blk_alloc_queue(GFP_ATOMIC); + if (zv->zv_queue == NULL) + goto out_kmem; + + blk_queue_make_request(zv->zv_queue, zvol_request); + +#ifdef HAVE_BLK_QUEUE_FLUSH + blk_queue_flush(zv->zv_queue, VDEV_REQ_FLUSH | VDEV_REQ_FUA); +#else + blk_queue_ordered(zv->zv_queue, QUEUE_ORDERED_DRAIN, NULL); +#endif /* HAVE_BLK_QUEUE_FLUSH */ + + zv->zv_disk = alloc_disk(ZVOL_MINORS); + if (zv->zv_disk == NULL) + goto out_queue; + + zv->zv_queue->queuedata = zv; + zv->zv_dev = dev; + zv->zv_open_count = 0; + strlcpy(zv->zv_name, name, MAXNAMELEN); + + mutex_init(&zv->zv_znode.z_range_lock, NULL, MUTEX_DEFAULT, NULL); + avl_create(&zv->zv_znode.z_range_avl, zfs_range_compare, + sizeof (rl_t), offsetof(rl_t, r_node)); + zv->zv_znode.z_is_zvol = TRUE; + + zv->zv_disk->major = zvol_major; + zv->zv_disk->first_minor = (dev & MINORMASK); + zv->zv_disk->fops = &zvol_ops; + zv->zv_disk->private_data = zv; + zv->zv_disk->queue = zv->zv_queue; + snprintf(zv->zv_disk->disk_name, DISK_NAME_LEN, "%s%d", + ZVOL_DEV_NAME, (dev & MINORMASK)); + + return (zv); + +out_queue: + blk_cleanup_queue(zv->zv_queue); +out_kmem: + kmem_free(zv, sizeof (zvol_state_t)); + + return (NULL); +} + +/* + * Cleanup then free a zvol_state_t which was created by zvol_alloc(). + */ +static void +zvol_free(zvol_state_t *zv) +{ + avl_destroy(&zv->zv_znode.z_range_avl); + mutex_destroy(&zv->zv_znode.z_range_lock); + + del_gendisk(zv->zv_disk); + blk_cleanup_queue(zv->zv_queue); + put_disk(zv->zv_disk); + + kmem_free(zv, sizeof (zvol_state_t)); +} + +static int +__zvol_snapdev_hidden(const char *name) +{ + uint64_t snapdev; + char *parent; + char *atp; + int error = 0; + + parent = kmem_alloc(MAXPATHLEN, KM_SLEEP); + (void) strlcpy(parent, name, MAXPATHLEN); + + if ((atp = strrchr(parent, '@')) != NULL) { + *atp = '\0'; + error = dsl_prop_get_integer(parent, "snapdev", &snapdev, NULL); + if ((error == 0) && (snapdev == ZFS_SNAPDEV_HIDDEN)) + error = SET_ERROR(ENODEV); + } + + kmem_free(parent, MAXPATHLEN); + + return (SET_ERROR(error)); +} + +static int +__zvol_create_minor(const char *name, boolean_t ignore_snapdev) +{ + zvol_state_t *zv; + objset_t *os; + dmu_object_info_t *doi; + uint64_t volsize; + uint64_t len; + unsigned minor = 0; + int error = 0; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + + zv = zvol_find_by_name(name); + if (zv) { + error = SET_ERROR(EEXIST); + goto out; + } + + if (ignore_snapdev == B_FALSE) { + error = __zvol_snapdev_hidden(name); + if (error) + goto out; + } + + doi = kmem_alloc(sizeof (dmu_object_info_t), KM_SLEEP); + + error = dmu_objset_own(name, DMU_OST_ZVOL, B_TRUE, zvol_tag, &os); + if (error) + goto out_doi; + + error = dmu_object_info(os, ZVOL_OBJ, doi); + if (error) + goto out_dmu_objset_disown; + + error = zap_lookup(os, ZVOL_ZAP_OBJ, "size", 8, 1, &volsize); + if (error) + goto out_dmu_objset_disown; + + error = zvol_find_minor(&minor); + if (error) + goto out_dmu_objset_disown; + + zv = zvol_alloc(MKDEV(zvol_major, minor), name); + if (zv == NULL) { + error = SET_ERROR(EAGAIN); + goto out_dmu_objset_disown; + } + + if (dmu_objset_is_snapshot(os)) + zv->zv_flags |= ZVOL_RDONLY; + + zv->zv_volblocksize = doi->doi_data_block_size; + zv->zv_volsize = volsize; + zv->zv_objset = os; + + set_capacity(zv->zv_disk, zv->zv_volsize >> 9); + + blk_queue_max_hw_sectors(zv->zv_queue, (DMU_MAX_ACCESS / 4) >> 9); + blk_queue_max_segments(zv->zv_queue, UINT16_MAX); + blk_queue_max_segment_size(zv->zv_queue, UINT_MAX); + blk_queue_physical_block_size(zv->zv_queue, zv->zv_volblocksize); + blk_queue_io_opt(zv->zv_queue, zv->zv_volblocksize); + blk_queue_max_discard_sectors(zv->zv_queue, + (zvol_max_discard_blocks * zv->zv_volblocksize) >> 9); + blk_queue_discard_granularity(zv->zv_queue, zv->zv_volblocksize); + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, zv->zv_queue); +#ifdef QUEUE_FLAG_NONROT + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zv->zv_queue); +#endif +#ifdef QUEUE_FLAG_ADD_RANDOM + queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, zv->zv_queue); +#endif + + if (spa_writeable(dmu_objset_spa(os))) { + if (zil_replay_disable) + zil_destroy(dmu_objset_zil(os), B_FALSE); + else + zil_replay(os, zv, zvol_replay_vector); + } + + /* + * When udev detects the addition of the device it will immediately + * invoke blkid(8) to determine the type of content on the device. + * Prefetching the blocks commonly scanned by blkid(8) will speed + * up this process. + */ + len = MIN(MAX(zvol_prefetch_bytes, 0), SPA_MAXBLOCKSIZE); + if (len > 0) { + dmu_prefetch(os, ZVOL_OBJ, 0, len); + dmu_prefetch(os, ZVOL_OBJ, volsize - len, len); + } + + zv->zv_objset = NULL; +out_dmu_objset_disown: + dmu_objset_disown(os, zvol_tag); +out_doi: + kmem_free(doi, sizeof (dmu_object_info_t)); +out: + + if (error == 0) { + zvol_insert(zv); + add_disk(zv->zv_disk); + } + + return (SET_ERROR(error)); +} + +/* + * Create a block device minor node and setup the linkage between it + * and the specified volume. Once this function returns the block + * device is live and ready for use. + */ +int +zvol_create_minor(const char *name) +{ + int error; + + mutex_enter(&zvol_state_lock); + error = __zvol_create_minor(name, B_FALSE); + mutex_exit(&zvol_state_lock); + + return (SET_ERROR(error)); +} + +static int +__zvol_remove_minor(const char *name) +{ + zvol_state_t *zv; + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + + zv = zvol_find_by_name(name); + if (zv == NULL) + return (SET_ERROR(ENXIO)); + + if (zv->zv_open_count > 0) + return (SET_ERROR(EBUSY)); + + zvol_remove(zv); + zvol_free(zv); + + return (0); +} + +/* + * Remove a block device minor node for the specified volume. + */ +int +zvol_remove_minor(const char *name) +{ + int error; + + mutex_enter(&zvol_state_lock); + error = __zvol_remove_minor(name); + mutex_exit(&zvol_state_lock); + + return (SET_ERROR(error)); +} + +/* + * Rename a block device minor mode for the specified volume. + */ +static void +__zvol_rename_minor(zvol_state_t *zv, const char *newname) +{ + int readonly = get_disk_ro(zv->zv_disk); + + ASSERT(MUTEX_HELD(&zvol_state_lock)); + + strlcpy(zv->zv_name, newname, sizeof (zv->zv_name)); + + /* + * The block device's read-only state is briefly changed causing + * a KOBJ_CHANGE uevent to be issued. This ensures udev detects + * the name change and fixes the symlinks. This does not change + * ZVOL_RDONLY in zv->zv_flags so the actual read-only state never + * changes. This would normally be done using kobject_uevent() but + * that is a GPL-only symbol which is why we need this workaround. + */ + set_disk_ro(zv->zv_disk, !readonly); + set_disk_ro(zv->zv_disk, readonly); +} + +static int +zvol_create_minors_cb(const char *dsname, void *arg) +{ + (void) zvol_create_minor(dsname); + + return (0); +} + +/* + * Create minors for specified dataset including children and snapshots. + */ +int +zvol_create_minors(const char *name) +{ + int error = 0; + + if (!zvol_inhibit_dev) + error = dmu_objset_find((char *)name, zvol_create_minors_cb, + NULL, DS_FIND_CHILDREN | DS_FIND_SNAPSHOTS); + + return (SET_ERROR(error)); +} + +/* + * Remove minors for specified dataset including children and snapshots. + */ +void +zvol_remove_minors(const char *name) +{ + zvol_state_t *zv, *zv_next; + int namelen = ((name) ? strlen(name) : 0); + + if (zvol_inhibit_dev) + return; + + mutex_enter(&zvol_state_lock); + + for (zv = list_head(&zvol_state_list); zv != NULL; zv = zv_next) { + zv_next = list_next(&zvol_state_list, zv); + + if (name == NULL || strcmp(zv->zv_name, name) == 0 || + (strncmp(zv->zv_name, name, namelen) == 0 && + zv->zv_name[namelen] == '/')) { + zvol_remove(zv); + zvol_free(zv); + } + } + + mutex_exit(&zvol_state_lock); +} + +/* + * Rename minors for specified dataset including children and snapshots. + */ +void +zvol_rename_minors(const char *oldname, const char *newname) +{ + zvol_state_t *zv, *zv_next; + int oldnamelen, newnamelen; + char *name; + + if (zvol_inhibit_dev) + return; + + oldnamelen = strlen(oldname); + newnamelen = strlen(newname); + name = kmem_alloc(MAXNAMELEN, KM_SLEEP); + + mutex_enter(&zvol_state_lock); + + for (zv = list_head(&zvol_state_list); zv != NULL; zv = zv_next) { + zv_next = list_next(&zvol_state_list, zv); + + if (strcmp(zv->zv_name, oldname) == 0) { + __zvol_rename_minor(zv, newname); + } else if (strncmp(zv->zv_name, oldname, oldnamelen) == 0 && + (zv->zv_name[oldnamelen] == '/' || + zv->zv_name[oldnamelen] == '@')) { + snprintf(name, MAXNAMELEN, "%s%c%s", newname, + zv->zv_name[oldnamelen], + zv->zv_name + oldnamelen + 1); + __zvol_rename_minor(zv, name); + } + } + + mutex_exit(&zvol_state_lock); + + kmem_free(name, MAXNAMELEN); +} + +static int +snapdev_snapshot_changed_cb(const char *dsname, void *arg) { + uint64_t snapdev = *(uint64_t *) arg; + + if (strchr(dsname, '@') == NULL) + return (0); + + switch (snapdev) { + case ZFS_SNAPDEV_VISIBLE: + mutex_enter(&zvol_state_lock); + (void) __zvol_create_minor(dsname, B_TRUE); + mutex_exit(&zvol_state_lock); + break; + case ZFS_SNAPDEV_HIDDEN: + (void) zvol_remove_minor(dsname); + break; + } + + return (0); +} + +int +zvol_set_snapdev(const char *dsname, uint64_t snapdev) { + (void) dmu_objset_find((char *) dsname, snapdev_snapshot_changed_cb, + &snapdev, DS_FIND_SNAPSHOTS | DS_FIND_CHILDREN); + /* caller should continue to modify snapdev property */ + return (-1); +} + +int +zvol_init(void) +{ + int error; + + list_create(&zvol_state_list, sizeof (zvol_state_t), + offsetof(zvol_state_t, zv_next)); + + mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); + + error = register_blkdev(zvol_major, ZVOL_DRIVER); + if (error) { + printk(KERN_INFO "ZFS: register_blkdev() failed %d\n", error); + goto out; + } + + blk_register_region(MKDEV(zvol_major, 0), 1UL << MINORBITS, + THIS_MODULE, zvol_probe, NULL, NULL); + + return (0); + +out: + mutex_destroy(&zvol_state_lock); + list_destroy(&zvol_state_list); + + return (SET_ERROR(error)); +} + +void +zvol_fini(void) +{ + zvol_remove_minors(NULL); + blk_unregister_region(MKDEV(zvol_major, 0), 1UL << MINORBITS); + unregister_blkdev(zvol_major, ZVOL_DRIVER); + mutex_destroy(&zvol_state_lock); + list_destroy(&zvol_state_list); +} + +module_param(zvol_inhibit_dev, uint, 0644); +MODULE_PARM_DESC(zvol_inhibit_dev, "Do not create zvol device nodes"); + +module_param(zvol_major, uint, 0444); +MODULE_PARM_DESC(zvol_major, "Major number for zvol device"); + +module_param(zvol_max_discard_blocks, ulong, 0444); +MODULE_PARM_DESC(zvol_max_discard_blocks, "Max number of blocks to discard"); + +module_param(zvol_prefetch_bytes, uint, 0644); +MODULE_PARM_DESC(zvol_prefetch_bytes, "Prefetch N bytes at zvol start+end"); --- linux-4.4.0.orig/zfs/module/zpios/Makefile.in +++ linux-4.4.0/zfs/module/zpios/Makefile.in @@ -0,0 +1,10 @@ +src = @abs_top_srcdir@/module/zpios +obj = @abs_builddir@ + +MODULE := zpios + +EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ + +obj-$(CONFIG_ZFS) := $(MODULE).o + +$(MODULE)-objs += pios.o --- linux-4.4.0.orig/zfs/module/zpios/pios.c +++ linux-4.4.0/zfs/module/zpios/pios.c @@ -0,0 +1,1325 @@ +/* + * ZPIOS is a heavily modified version of the original PIOS test code. + * It is designed to have the test code running in the Linux kernel + * against ZFS while still being flexibly controled from user space. + * + * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * LLNL-CODE-403049 + * + * Original PIOS Test Code + * Copyright (C) 2004 Cluster File Systems, Inc. + * Written by Peter Braam + * Atul Vidwansa + * Milind Dumbare + * + * This file is part of ZFS on Linux. + * For details, see . + * + * ZPIOS is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * ZPIOS is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with ZPIOS. If not, see . + */ + +#include +#include +#include +#include +#include +#include "zpios-internal.h" + + +static char *zpios_tag = "zpios_tag"; + +static int +zpios_upcall(char *path, char *phase, run_args_t *run_args, int rc) +{ + /* + * This is stack heavy but it should be OK since we are only + * making the upcall between tests when the stack is shallow. + */ + char id[16], chunk_size[16], region_size[16], thread_count[16]; + char region_count[16], offset[16], region_noise[16], chunk_noise[16]; + char thread_delay[16], flags[16], result[8]; + char *argv[16], *envp[4]; + + if ((path == NULL) || (strlen(path) == 0)) + return (-ENOENT); + + snprintf(id, 15, "%d", run_args->id); + snprintf(chunk_size, 15, "%lu", (long unsigned)run_args->chunk_size); + snprintf(region_size, 15, "%lu", (long unsigned) run_args->region_size); + snprintf(thread_count, 15, "%u", run_args->thread_count); + snprintf(region_count, 15, "%u", run_args->region_count); + snprintf(offset, 15, "%lu", (long unsigned)run_args->offset); + snprintf(region_noise, 15, "%u", run_args->region_noise); + snprintf(chunk_noise, 15, "%u", run_args->chunk_noise); + snprintf(thread_delay, 15, "%u", run_args->thread_delay); + snprintf(flags, 15, "0x%x", run_args->flags); + snprintf(result, 7, "%d", rc); + + /* Passing 15 args to registered pre/post upcall */ + argv[0] = path; + argv[1] = phase; + argv[2] = strlen(run_args->log) ? run_args->log : ""; + argv[3] = id; + argv[4] = run_args->pool; + argv[5] = chunk_size; + argv[6] = region_size; + argv[7] = thread_count; + argv[8] = region_count; + argv[9] = offset; + argv[10] = region_noise; + argv[11] = chunk_noise; + argv[12] = thread_delay; + argv[13] = flags; + argv[14] = result; + argv[15] = NULL; + + /* Passing environment for user space upcall */ + envp[0] = "HOME=/"; + envp[1] = "TERM=linux"; + envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin"; + envp[3] = NULL; + + return (call_usermodehelper(path, argv, envp, UMH_WAIT_PROC)); +} + +static int +zpios_print(struct file *file, const char *format, ...) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + va_list adx; + int rc; + + ASSERT(info); + ASSERT(info->info_buffer); + + va_start(adx, format); + spin_lock(&info->info_lock); + + /* Don't allow the kernel to start a write in the red zone */ + if ((int)(info->info_head - info->info_buffer) > + (info->info_size - ZPIOS_INFO_BUFFER_REDZONE)) { + rc = -EOVERFLOW; + } else { + rc = vsprintf(info->info_head, format, adx); + if (rc >= 0) + info->info_head += rc; + } + + spin_unlock(&info->info_lock); + va_end(adx); + + return (rc); +} + +static uint64_t +zpios_dmu_object_create(run_args_t *run_args, objset_t *os) +{ + struct dmu_tx *tx; + uint64_t obj = 0ULL; + int rc; + + tx = dmu_tx_create(os); + dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, OBJ_SIZE); + rc = dmu_tx_assign(tx, TXG_WAIT); + if (rc) { + zpios_print(run_args->file, + "dmu_tx_assign() failed: %d\n", rc); + dmu_tx_abort(tx); + return (obj); + } + + obj = dmu_object_alloc(os, DMU_OT_UINT64_OTHER, 0, DMU_OT_NONE, 0, tx); + rc = dmu_object_set_blocksize(os, obj, 128ULL << 10, 0, tx); + if (rc) { + zpios_print(run_args->file, + "dmu_object_set_blocksize() failed: %d\n", rc); + dmu_tx_abort(tx); + return (obj); + } + + dmu_tx_commit(tx); + + return (obj); +} + +static int +zpios_dmu_object_free(run_args_t *run_args, objset_t *os, uint64_t obj) +{ + struct dmu_tx *tx; + int rc; + + tx = dmu_tx_create(os); + dmu_tx_hold_free(tx, obj, 0, DMU_OBJECT_END); + rc = dmu_tx_assign(tx, TXG_WAIT); + if (rc) { + zpios_print(run_args->file, + "dmu_tx_assign() failed: %d\n", rc); + dmu_tx_abort(tx); + return (rc); + } + + rc = dmu_object_free(os, obj, tx); + if (rc) { + zpios_print(run_args->file, + "dmu_object_free() failed: %d\n", rc); + dmu_tx_abort(tx); + return (rc); + } + + dmu_tx_commit(tx); + + return (0); +} + +static int +zpios_dmu_setup(run_args_t *run_args) +{ + zpios_time_t *t = &(run_args->stats.cr_time); + objset_t *os; + char name[32]; + uint64_t obj = 0ULL; + int i, rc = 0, rc2; + + (void) zpios_upcall(run_args->pre, PHASE_PRE_CREATE, run_args, 0); + t->start = zpios_timespec_now(); + + (void) snprintf(name, 32, "%s/id_%d", run_args->pool, run_args->id); + rc = dmu_objset_create(name, DMU_OST_OTHER, 0, NULL, NULL); + if (rc) { + zpios_print(run_args->file, "Error dmu_objset_create(%s, ...) " + "failed: %d\n", name, rc); + goto out; + } + + rc = dmu_objset_own(name, DMU_OST_OTHER, 0, zpios_tag, &os); + if (rc) { + zpios_print(run_args->file, "Error dmu_objset_own(%s, ...) " + "failed: %d\n", name, rc); + goto out_destroy; + } + + if (!(run_args->flags & DMU_FPP)) { + obj = zpios_dmu_object_create(run_args, os); + if (obj == 0) { + rc = -EBADF; + zpios_print(run_args->file, "Error zpios_dmu_" + "object_create() failed, %d\n", rc); + goto out_destroy; + } + } + + for (i = 0; i < run_args->region_count; i++) { + zpios_region_t *region; + + region = &run_args->regions[i]; + mutex_init(®ion->lock, NULL, MUTEX_DEFAULT, NULL); + + if (run_args->flags & DMU_FPP) { + /* File per process */ + region->obj.os = os; + region->obj.obj = zpios_dmu_object_create(run_args, os); + ASSERT(region->obj.obj > 0); /* XXX - Handle this */ + region->wr_offset = run_args->offset; + region->rd_offset = run_args->offset; + region->init_offset = run_args->offset; + region->max_offset = run_args->offset + + run_args->region_size; + } else { + /* Single shared file */ + region->obj.os = os; + region->obj.obj = obj; + region->wr_offset = run_args->offset * i; + region->rd_offset = run_args->offset * i; + region->init_offset = run_args->offset * i; + region->max_offset = run_args->offset * + i + run_args->region_size; + } + } + + run_args->os = os; +out_destroy: + if (rc) { + rc2 = dsl_destroy_head(name); + if (rc2) + zpios_print(run_args->file, "Error dsl_destroy_head" + "(%s, ...) failed: %d\n", name, rc2); + } +out: + t->stop = zpios_timespec_now(); + t->delta = zpios_timespec_sub(t->stop, t->start); + (void) zpios_upcall(run_args->post, PHASE_POST_CREATE, run_args, rc); + + return (rc); +} + +static int +zpios_setup_run(run_args_t **run_args, zpios_cmd_t *kcmd, struct file *file) +{ + run_args_t *ra; + int rc, size; + + size = sizeof (*ra) + kcmd->cmd_region_count * sizeof (zpios_region_t); + + ra = vmem_zalloc(size, KM_SLEEP); + if (ra == NULL) { + zpios_print(file, "Unable to vmem_zalloc() %d bytes " + "for regions\n", size); + return (-ENOMEM); + } + + *run_args = ra; + strncpy(ra->pool, kcmd->cmd_pool, ZPIOS_NAME_SIZE - 1); + strncpy(ra->pre, kcmd->cmd_pre, ZPIOS_PATH_SIZE - 1); + strncpy(ra->post, kcmd->cmd_post, ZPIOS_PATH_SIZE - 1); + strncpy(ra->log, kcmd->cmd_log, ZPIOS_PATH_SIZE - 1); + ra->id = kcmd->cmd_id; + ra->chunk_size = kcmd->cmd_chunk_size; + ra->thread_count = kcmd->cmd_thread_count; + ra->region_count = kcmd->cmd_region_count; + ra->region_size = kcmd->cmd_region_size; + ra->offset = kcmd->cmd_offset; + ra->region_noise = kcmd->cmd_region_noise; + ra->chunk_noise = kcmd->cmd_chunk_noise; + ra->thread_delay = kcmd->cmd_thread_delay; + ra->flags = kcmd->cmd_flags; + ra->stats.wr_data = 0; + ra->stats.wr_chunks = 0; + ra->stats.rd_data = 0; + ra->stats.rd_chunks = 0; + ra->region_next = 0; + ra->file = file; + mutex_init(&ra->lock_work, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&ra->lock_ctl, NULL, MUTEX_DEFAULT, NULL); + + (void) zpios_upcall(ra->pre, PHASE_PRE_RUN, ra, 0); + + rc = zpios_dmu_setup(ra); + if (rc) { + mutex_destroy(&ra->lock_ctl); + mutex_destroy(&ra->lock_work); + vmem_free(ra, size); + *run_args = NULL; + } + + return (rc); +} + +static int +zpios_get_work_item(run_args_t *run_args, dmu_obj_t *obj, __u64 *offset, + __u32 *chunk_size, zpios_region_t **region, __u32 flags) +{ + int i, j, count = 0; + unsigned int random_int; + + get_random_bytes(&random_int, sizeof (unsigned int)); + + mutex_enter(&run_args->lock_work); + i = run_args->region_next; + + /* + * XXX: I don't much care for this chunk selection mechansim + * there's the potential to burn a lot of time here doing nothing + * useful while holding the global lock. This could give some + * misleading performance results. I'll fix it latter. + */ + while (count < run_args->region_count) { + __u64 *rw_offset; + zpios_time_t *rw_time; + + j = i % run_args->region_count; + *region = &(run_args->regions[j]); + + if (flags & DMU_WRITE) { + rw_offset = &((*region)->wr_offset); + rw_time = &((*region)->stats.wr_time); + } else { + rw_offset = &((*region)->rd_offset); + rw_time = &((*region)->stats.rd_time); + } + + /* test if region is fully written */ + if (*rw_offset + *chunk_size > (*region)->max_offset) { + i++; + count++; + + if (unlikely(rw_time->stop.ts_sec == 0) && + unlikely(rw_time->stop.ts_nsec == 0)) + rw_time->stop = zpios_timespec_now(); + + continue; + } + + *offset = *rw_offset; + *obj = (*region)->obj; + *rw_offset += *chunk_size; + + /* update ctl structure */ + if (run_args->region_noise) { + get_random_bytes(&random_int, sizeof (unsigned int)); + run_args->region_next += + random_int % run_args->region_noise; + } else { + run_args->region_next++; + } + + mutex_exit(&run_args->lock_work); + return (1); + } + + /* nothing left to do */ + mutex_exit(&run_args->lock_work); + + return (0); +} + +static void +zpios_remove_objset(run_args_t *run_args) +{ + zpios_time_t *t = &(run_args->stats.rm_time); + zpios_region_t *region; + char name[32]; + int rc = 0, i; + + (void) zpios_upcall(run_args->pre, PHASE_PRE_REMOVE, run_args, 0); + t->start = zpios_timespec_now(); + + (void) snprintf(name, 32, "%s/id_%d", run_args->pool, run_args->id); + + if (run_args->flags & DMU_REMOVE) { + if (run_args->flags & DMU_FPP) { + for (i = 0; i < run_args->region_count; i++) { + region = &run_args->regions[i]; + rc = zpios_dmu_object_free(run_args, + region->obj.os, region->obj.obj); + if (rc) + zpios_print(run_args->file, + "Error removing object %d, %d\n", + (int)region->obj.obj, rc); + } + } else { + region = &run_args->regions[0]; + rc = zpios_dmu_object_free(run_args, + region->obj.os, region->obj.obj); + if (rc) + zpios_print(run_args->file, + "Error removing object %d, %d\n", + (int)region->obj.obj, rc); + } + } + + dmu_objset_disown(run_args->os, zpios_tag); + + if (run_args->flags & DMU_REMOVE) { + rc = dsl_destroy_head(name); + if (rc) + zpios_print(run_args->file, "Error dsl_destroy_head" + "(%s, ...) failed: %d\n", name, rc); + } + + t->stop = zpios_timespec_now(); + t->delta = zpios_timespec_sub(t->stop, t->start); + (void) zpios_upcall(run_args->post, PHASE_POST_REMOVE, run_args, rc); +} + +static void +zpios_cleanup_run(run_args_t *run_args) +{ + int i, size = 0; + + if (run_args == NULL) + return; + + if (run_args->threads != NULL) { + for (i = 0; i < run_args->thread_count; i++) { + if (run_args->threads[i]) { + mutex_destroy(&run_args->threads[i]->lock); + kmem_free(run_args->threads[i], + sizeof (thread_data_t)); + } + } + + kmem_free(run_args->threads, + sizeof (thread_data_t *) * run_args->thread_count); + } + + for (i = 0; i < run_args->region_count; i++) + mutex_destroy(&run_args->regions[i].lock); + + mutex_destroy(&run_args->lock_work); + mutex_destroy(&run_args->lock_ctl); + size = run_args->region_count * sizeof (zpios_region_t); + + vmem_free(run_args, sizeof (*run_args) + size); +} + +static int +zpios_dmu_write(run_args_t *run_args, objset_t *os, uint64_t object, + uint64_t offset, uint64_t size, const void *buf) +{ + struct dmu_tx *tx; + int rc, how = TXG_WAIT; +// int flags = 0; + + if (run_args->flags & DMU_WRITE_NOWAIT) + how = TXG_NOWAIT; + + while (1) { + tx = dmu_tx_create(os); + dmu_tx_hold_write(tx, object, offset, size); + rc = dmu_tx_assign(tx, how); + + if (rc) { + if (rc == ERESTART && how == TXG_NOWAIT) { + dmu_tx_wait(tx); + dmu_tx_abort(tx); + continue; + } + zpios_print(run_args->file, + "Error in dmu_tx_assign(), %d", rc); + dmu_tx_abort(tx); + return (rc); + } + break; + } + +// if (run_args->flags & DMU_WRITE_ZC) +// flags |= DMU_WRITE_ZEROCOPY; + + dmu_write(os, object, offset, size, buf, tx); + dmu_tx_commit(tx); + + return (0); +} + +static int +zpios_dmu_read(run_args_t *run_args, objset_t *os, uint64_t object, + uint64_t offset, uint64_t size, void *buf) +{ + int flags = 0; + +// if (run_args->flags & DMU_READ_ZC) +// flags |= DMU_READ_ZEROCOPY; + + if (run_args->flags & DMU_READ_NOPF) + flags |= DMU_READ_NO_PREFETCH; + + return (dmu_read(os, object, offset, size, buf, flags)); +} + +static int +zpios_thread_main(void *data) +{ + thread_data_t *thr = (thread_data_t *)data; + run_args_t *run_args = thr->run_args; + zpios_time_t t; + dmu_obj_t obj; + __u64 offset; + __u32 chunk_size; + zpios_region_t *region; + char *buf; + unsigned int random_int; + int chunk_noise = run_args->chunk_noise; + int chunk_noise_tmp = 0; + int thread_delay = run_args->thread_delay; + int thread_delay_tmp = 0; + int i, rc = 0; + + if (chunk_noise) { + get_random_bytes(&random_int, sizeof (unsigned int)); + chunk_noise_tmp = (random_int % (chunk_noise * 2))-chunk_noise; + } + + /* + * It's OK to vmem_alloc() this memory because it will be copied + * in to the slab and pointers to the slab copy will be setup in + * the bio when the IO is submitted. This of course is not ideal + * since we want a zero-copy IO path if possible. It would be nice + * to have direct access to those slab entries. + */ + chunk_size = run_args->chunk_size + chunk_noise_tmp; + buf = (char *)vmem_alloc(chunk_size, KM_SLEEP); + ASSERT(buf); + + /* Trivial data verification pattern for now. */ + if (run_args->flags & DMU_VERIFY) + memset(buf, 'z', chunk_size); + + /* Write phase */ + mutex_enter(&thr->lock); + thr->stats.wr_time.start = zpios_timespec_now(); + mutex_exit(&thr->lock); + + while (zpios_get_work_item(run_args, &obj, &offset, + &chunk_size, ®ion, DMU_WRITE)) { + if (thread_delay) { + get_random_bytes(&random_int, sizeof (unsigned int)); + thread_delay_tmp = random_int % thread_delay; + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(thread_delay_tmp); /* In jiffies */ + } + + t.start = zpios_timespec_now(); + rc = zpios_dmu_write(run_args, obj.os, obj.obj, + offset, chunk_size, buf); + t.stop = zpios_timespec_now(); + t.delta = zpios_timespec_sub(t.stop, t.start); + + if (rc) { + zpios_print(run_args->file, "IO error while doing " + "dmu_write(): %d\n", rc); + break; + } + + mutex_enter(&thr->lock); + thr->stats.wr_data += chunk_size; + thr->stats.wr_chunks++; + thr->stats.wr_time.delta = zpios_timespec_add( + thr->stats.wr_time.delta, t.delta); + mutex_exit(&thr->lock); + + mutex_enter(®ion->lock); + region->stats.wr_data += chunk_size; + region->stats.wr_chunks++; + region->stats.wr_time.delta = zpios_timespec_add( + region->stats.wr_time.delta, t.delta); + + /* First time region was accessed */ + if (region->init_offset == offset) + region->stats.wr_time.start = t.start; + + mutex_exit(®ion->lock); + } + + mutex_enter(&run_args->lock_ctl); + run_args->threads_done++; + mutex_exit(&run_args->lock_ctl); + + mutex_enter(&thr->lock); + thr->rc = rc; + thr->stats.wr_time.stop = zpios_timespec_now(); + mutex_exit(&thr->lock); + wake_up(&run_args->waitq); + + set_current_state(TASK_UNINTERRUPTIBLE); + schedule(); + + /* Check if we should exit */ + mutex_enter(&thr->lock); + rc = thr->rc; + mutex_exit(&thr->lock); + if (rc) + goto out; + + /* Read phase */ + mutex_enter(&thr->lock); + thr->stats.rd_time.start = zpios_timespec_now(); + mutex_exit(&thr->lock); + + while (zpios_get_work_item(run_args, &obj, &offset, + &chunk_size, ®ion, DMU_READ)) { + if (thread_delay) { + get_random_bytes(&random_int, sizeof (unsigned int)); + thread_delay_tmp = random_int % thread_delay; + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(thread_delay_tmp); /* In jiffies */ + } + + if (run_args->flags & DMU_VERIFY) + memset(buf, 0, chunk_size); + + t.start = zpios_timespec_now(); + rc = zpios_dmu_read(run_args, obj.os, obj.obj, + offset, chunk_size, buf); + t.stop = zpios_timespec_now(); + t.delta = zpios_timespec_sub(t.stop, t.start); + + if (rc) { + zpios_print(run_args->file, "IO error while doing " + "dmu_read(): %d\n", rc); + break; + } + + /* Trivial data verification, expensive! */ + if (run_args->flags & DMU_VERIFY) { + for (i = 0; i < chunk_size; i++) { + if (buf[i] != 'z') { + zpios_print(run_args->file, + "IO verify error: %d/%d/%d\n", + (int)obj.obj, (int)offset, + (int)chunk_size); + break; + } + } + } + + mutex_enter(&thr->lock); + thr->stats.rd_data += chunk_size; + thr->stats.rd_chunks++; + thr->stats.rd_time.delta = zpios_timespec_add( + thr->stats.rd_time.delta, t.delta); + mutex_exit(&thr->lock); + + mutex_enter(®ion->lock); + region->stats.rd_data += chunk_size; + region->stats.rd_chunks++; + region->stats.rd_time.delta = zpios_timespec_add( + region->stats.rd_time.delta, t.delta); + + /* First time region was accessed */ + if (region->init_offset == offset) + region->stats.rd_time.start = t.start; + + mutex_exit(®ion->lock); + } + + mutex_enter(&run_args->lock_ctl); + run_args->threads_done++; + mutex_exit(&run_args->lock_ctl); + + mutex_enter(&thr->lock); + thr->rc = rc; + thr->stats.rd_time.stop = zpios_timespec_now(); + mutex_exit(&thr->lock); + wake_up(&run_args->waitq); + +out: + vmem_free(buf, chunk_size); + do_exit(0); + + return (rc); /* Unreachable, due to do_exit() */ +} + +static int +zpios_thread_done(run_args_t *run_args) +{ + ASSERT(run_args->threads_done <= run_args->thread_count); + return (run_args->threads_done == run_args->thread_count); +} + +static int +zpios_threads_run(run_args_t *run_args) +{ + struct task_struct *tsk, **tsks; + thread_data_t *thr = NULL; + zpios_time_t *tt = &(run_args->stats.total_time); + zpios_time_t *tw = &(run_args->stats.wr_time); + zpios_time_t *tr = &(run_args->stats.rd_time); + int i, rc = 0, tc = run_args->thread_count; + + tsks = kmem_zalloc(sizeof (struct task_struct *) * tc, KM_SLEEP); + if (tsks == NULL) { + rc = -ENOMEM; + goto cleanup2; + } + + run_args->threads = kmem_zalloc(sizeof (thread_data_t *)*tc, KM_SLEEP); + if (run_args->threads == NULL) { + rc = -ENOMEM; + goto cleanup; + } + + init_waitqueue_head(&run_args->waitq); + run_args->threads_done = 0; + + /* Create all the needed threads which will sleep until awoken */ + for (i = 0; i < tc; i++) { + thr = kmem_zalloc(sizeof (thread_data_t), KM_SLEEP); + if (thr == NULL) { + rc = -ENOMEM; + goto taskerr; + } + + thr->thread_no = i; + thr->run_args = run_args; + thr->rc = 0; + mutex_init(&thr->lock, NULL, MUTEX_DEFAULT, NULL); + run_args->threads[i] = thr; + + tsk = kthread_create(zpios_thread_main, (void *)thr, + "%s/%d", "zpios_io", i); + if (IS_ERR(tsk)) { + rc = -EINVAL; + goto taskerr; + } + + tsks[i] = tsk; + } + + tt->start = zpios_timespec_now(); + + /* Wake up all threads for write phase */ + (void) zpios_upcall(run_args->pre, PHASE_PRE_WRITE, run_args, 0); + for (i = 0; i < tc; i++) + wake_up_process(tsks[i]); + + /* Wait for write phase to complete */ + tw->start = zpios_timespec_now(); + wait_event(run_args->waitq, zpios_thread_done(run_args)); + tw->stop = zpios_timespec_now(); + (void) zpios_upcall(run_args->post, PHASE_POST_WRITE, run_args, rc); + + for (i = 0; i < tc; i++) { + thr = run_args->threads[i]; + + mutex_enter(&thr->lock); + + if (!rc && thr->rc) + rc = thr->rc; + + run_args->stats.wr_data += thr->stats.wr_data; + run_args->stats.wr_chunks += thr->stats.wr_chunks; + mutex_exit(&thr->lock); + } + + if (rc) { + /* Wake up all threads and tell them to exit */ + for (i = 0; i < tc; i++) { + mutex_enter(&thr->lock); + thr->rc = rc; + mutex_exit(&thr->lock); + + wake_up_process(tsks[i]); + } + goto out; + } + + mutex_enter(&run_args->lock_ctl); + ASSERT(run_args->threads_done == run_args->thread_count); + run_args->threads_done = 0; + mutex_exit(&run_args->lock_ctl); + + /* Wake up all threads for read phase */ + (void) zpios_upcall(run_args->pre, PHASE_PRE_READ, run_args, 0); + for (i = 0; i < tc; i++) + wake_up_process(tsks[i]); + + /* Wait for read phase to complete */ + tr->start = zpios_timespec_now(); + wait_event(run_args->waitq, zpios_thread_done(run_args)); + tr->stop = zpios_timespec_now(); + (void) zpios_upcall(run_args->post, PHASE_POST_READ, run_args, rc); + + for (i = 0; i < tc; i++) { + thr = run_args->threads[i]; + + mutex_enter(&thr->lock); + + if (!rc && thr->rc) + rc = thr->rc; + + run_args->stats.rd_data += thr->stats.rd_data; + run_args->stats.rd_chunks += thr->stats.rd_chunks; + mutex_exit(&thr->lock); + } +out: + tt->stop = zpios_timespec_now(); + tt->delta = zpios_timespec_sub(tt->stop, tt->start); + tw->delta = zpios_timespec_sub(tw->stop, tw->start); + tr->delta = zpios_timespec_sub(tr->stop, tr->start); + +cleanup: + kmem_free(tsks, sizeof (struct task_struct *) * tc); +cleanup2: + /* Returns first encountered thread error (if any) */ + return (rc); + +taskerr: + /* Destroy all threads that were created successfully */ + for (i = 0; i < tc; i++) + if (tsks[i] != NULL) + (void) kthread_stop(tsks[i]); + + goto cleanup; +} + +static int +zpios_do_one_run(struct file *file, zpios_cmd_t *kcmd, + int data_size, void *data) +{ + run_args_t *run_args = { 0 }; + zpios_stats_t *stats = (zpios_stats_t *)data; + int i, n, m, size, rc; + + if ((!kcmd->cmd_chunk_size) || (!kcmd->cmd_region_size) || + (!kcmd->cmd_thread_count) || (!kcmd->cmd_region_count)) { + zpios_print(file, "Invalid chunk_size, region_size, " + "thread_count, or region_count, %d\n", -EINVAL); + return (-EINVAL); + } + + if (!(kcmd->cmd_flags & DMU_WRITE) || + !(kcmd->cmd_flags & DMU_READ)) { + zpios_print(file, "Invalid flags, minimally DMU_WRITE " + "and DMU_READ must be set, %d\n", -EINVAL); + return (-EINVAL); + } + + if ((kcmd->cmd_flags & (DMU_WRITE_ZC | DMU_READ_ZC)) && + (kcmd->cmd_flags & DMU_VERIFY)) { + zpios_print(file, "Invalid flags, DMU_*_ZC incompatible " + "with DMU_VERIFY, used for performance analysis " + "only, %d\n", -EINVAL); + return (-EINVAL); + } + + /* + * Opaque data on return contains structs of the following form: + * + * zpios_stat_t stats[]; + * stats[0] = run_args->stats; + * stats[1-N] = threads[N]->stats; + * stats[N+1-M] = regions[M]->stats; + * + * Where N is the number of threads, and M is the number of regions. + */ + size = (sizeof (zpios_stats_t) + + (kcmd->cmd_thread_count * sizeof (zpios_stats_t)) + + (kcmd->cmd_region_count * sizeof (zpios_stats_t))); + if (data_size < size) { + zpios_print(file, "Invalid size, command data buffer " + "size too small, (%d < %d)\n", data_size, size); + return (-ENOSPC); + } + + rc = zpios_setup_run(&run_args, kcmd, file); + if (rc) + return (rc); + + rc = zpios_threads_run(run_args); + zpios_remove_objset(run_args); + if (rc) + goto cleanup; + + if (stats) { + n = 1; + m = 1 + kcmd->cmd_thread_count; + stats[0] = run_args->stats; + + for (i = 0; i < kcmd->cmd_thread_count; i++) + stats[n+i] = run_args->threads[i]->stats; + + for (i = 0; i < kcmd->cmd_region_count; i++) + stats[m+i] = run_args->regions[i].stats; + } + +cleanup: + zpios_cleanup_run(run_args); + + (void) zpios_upcall(kcmd->cmd_post, PHASE_POST_RUN, run_args, 0); + + return (rc); +} + +static int +zpios_open(struct inode *inode, struct file *file) +{ + zpios_info_t *info; + + info = (zpios_info_t *)kmem_alloc(sizeof (*info), KM_SLEEP); + if (info == NULL) + return (-ENOMEM); + + spin_lock_init(&info->info_lock); + info->info_size = ZPIOS_INFO_BUFFER_SIZE; + info->info_buffer = + (char *) vmem_alloc(ZPIOS_INFO_BUFFER_SIZE, KM_SLEEP); + if (info->info_buffer == NULL) { + kmem_free(info, sizeof (*info)); + return (-ENOMEM); + } + + info->info_head = info->info_buffer; + file->private_data = (void *)info; + + return (0); +} + +static int +zpios_release(struct inode *inode, struct file *file) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + + ASSERT(info); + ASSERT(info->info_buffer); + + vmem_free(info->info_buffer, ZPIOS_INFO_BUFFER_SIZE); + kmem_free(info, sizeof (*info)); + + return (0); +} + +static int +zpios_buffer_clear(struct file *file, zpios_cfg_t *kcfg, unsigned long arg) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + + ASSERT(info); + ASSERT(info->info_buffer); + + spin_lock(&info->info_lock); + memset(info->info_buffer, 0, info->info_size); + info->info_head = info->info_buffer; + spin_unlock(&info->info_lock); + + return (0); +} + +static int +zpios_buffer_size(struct file *file, zpios_cfg_t *kcfg, unsigned long arg) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + char *buf; + int min, size, rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + spin_lock(&info->info_lock); + if (kcfg->cfg_arg1 > 0) { + + size = kcfg->cfg_arg1; + buf = (char *)vmem_alloc(size, KM_SLEEP); + if (buf == NULL) { + rc = -ENOMEM; + goto out; + } + + /* Zero fill and truncate contents when coping buffer */ + min = ((size < info->info_size) ? size : info->info_size); + memset(buf, 0, size); + memcpy(buf, info->info_buffer, min); + vmem_free(info->info_buffer, info->info_size); + info->info_size = size; + info->info_buffer = buf; + info->info_head = info->info_buffer; + } + + kcfg->cfg_rc1 = info->info_size; + + if (copy_to_user((struct zpios_cfg_t __user *)arg, + kcfg, sizeof (*kcfg))) + rc = -EFAULT; +out: + spin_unlock(&info->info_lock); + + return (rc); +} + +static int +zpios_ioctl_cfg(struct file *file, unsigned long arg) +{ + zpios_cfg_t kcfg; + int rc = 0; + + if (copy_from_user(&kcfg, (zpios_cfg_t *)arg, sizeof (kcfg))) + return (-EFAULT); + + if (kcfg.cfg_magic != ZPIOS_CFG_MAGIC) { + zpios_print(file, "Bad config magic 0x%x != 0x%x\n", + kcfg.cfg_magic, ZPIOS_CFG_MAGIC); + return (-EINVAL); + } + + switch (kcfg.cfg_cmd) { + case ZPIOS_CFG_BUFFER_CLEAR: + /* + * cfg_arg1 - Unused + * cfg_rc1 - Unused + */ + rc = zpios_buffer_clear(file, &kcfg, arg); + break; + case ZPIOS_CFG_BUFFER_SIZE: + /* + * cfg_arg1 - 0 - query size; >0 resize + * cfg_rc1 - Set to current buffer size + */ + rc = zpios_buffer_size(file, &kcfg, arg); + break; + default: + zpios_print(file, "Bad config command %d\n", + kcfg.cfg_cmd); + rc = -EINVAL; + break; + } + + return (rc); +} + +static int +zpios_ioctl_cmd(struct file *file, unsigned long arg) +{ + zpios_cmd_t *kcmd; + void *data = NULL; + int rc = -EINVAL; + + kcmd = kmem_alloc(sizeof (zpios_cmd_t), KM_SLEEP); + if (kcmd == NULL) { + zpios_print(file, "Unable to kmem_alloc() %ld byte for " + "zpios_cmd_t\n", (long int)sizeof (zpios_cmd_t)); + return (-ENOMEM); + } + + rc = copy_from_user(kcmd, (zpios_cfg_t *)arg, sizeof (zpios_cmd_t)); + if (rc) { + zpios_print(file, "Unable to copy command structure " + "from user to kernel memory, %d\n", rc); + goto out_cmd; + } + + if (kcmd->cmd_magic != ZPIOS_CMD_MAGIC) { + zpios_print(file, "Bad command magic 0x%x != 0x%x\n", + kcmd->cmd_magic, ZPIOS_CFG_MAGIC); + rc = (-EINVAL); + goto out_cmd; + } + + /* Allocate memory for any opaque data the caller needed to pass on */ + if (kcmd->cmd_data_size > 0) { + data = (void *)vmem_alloc(kcmd->cmd_data_size, KM_SLEEP); + if (data == NULL) { + zpios_print(file, "Unable to vmem_alloc() %ld " + "bytes for data buffer\n", + (long)kcmd->cmd_data_size); + rc = -ENOMEM; + goto out_cmd; + } + + rc = copy_from_user(data, (void *)(arg + offsetof(zpios_cmd_t, + cmd_data_str)), kcmd->cmd_data_size); + if (rc) { + zpios_print(file, "Unable to copy data buffer " + "from user to kernel memory, %d\n", rc); + goto out_data; + } + } + + rc = zpios_do_one_run(file, kcmd, kcmd->cmd_data_size, data); + + if (data != NULL) { + /* If the test failed do not print out the stats */ + if (rc) + goto out_data; + + rc = copy_to_user((void *)(arg + offsetof(zpios_cmd_t, + cmd_data_str)), data, kcmd->cmd_data_size); + if (rc) { + zpios_print(file, "Unable to copy data buffer " + "from kernel to user memory, %d\n", rc); + rc = -EFAULT; + } + +out_data: + vmem_free(data, kcmd->cmd_data_size); + } +out_cmd: + kmem_free(kcmd, sizeof (zpios_cmd_t)); + + return (rc); +} + +static long +zpios_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int rc = 0; + + /* Ignore tty ioctls */ + if ((cmd & 0xffffff00) == ((int)'T') << 8) + return (-ENOTTY); + + switch (cmd) { + case ZPIOS_CFG: + rc = zpios_ioctl_cfg(file, arg); + break; + case ZPIOS_CMD: + rc = zpios_ioctl_cmd(file, arg); + break; + default: + zpios_print(file, "Bad ioctl command %d\n", cmd); + rc = -EINVAL; + break; + } + + return (rc); +} + +#ifdef CONFIG_COMPAT +/* Compatibility handler for ioctls from 32-bit ELF binaries */ +static long +zpios_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + return (zpios_unlocked_ioctl(file, cmd, arg)); +} +#endif /* CONFIG_COMPAT */ + +/* + * I'm not sure why you would want to write in to this buffer from + * user space since its principle use is to pass test status info + * back to the user space, but I don't see any reason to prevent it. + */ +static ssize_t +zpios_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + int rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + spin_lock(&info->info_lock); + + /* Write beyond EOF */ + if (*ppos >= info->info_size) { + rc = -EFBIG; + goto out; + } + + /* Resize count if beyond EOF */ + if (*ppos + count > info->info_size) + count = info->info_size - *ppos; + + if (copy_from_user(info->info_buffer, buf, count)) { + rc = -EFAULT; + goto out; + } + + *ppos += count; + rc = count; +out: + spin_unlock(&info->info_lock); + return (rc); +} + +static ssize_t +zpios_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + int rc = 0; + + ASSERT(info); + ASSERT(info->info_buffer); + + spin_lock(&info->info_lock); + + /* Read beyond EOF */ + if (*ppos >= info->info_size) + goto out; + + /* Resize count if beyond EOF */ + if (*ppos + count > info->info_size) + count = info->info_size - *ppos; + + if (copy_to_user(buf, info->info_buffer + *ppos, count)) { + rc = -EFAULT; + goto out; + } + + *ppos += count; + rc = count; +out: + spin_unlock(&info->info_lock); + return (rc); +} + +static loff_t zpios_seek(struct file *file, loff_t offset, int origin) +{ + zpios_info_t *info = (zpios_info_t *)file->private_data; + int rc = -EINVAL; + + ASSERT(info); + ASSERT(info->info_buffer); + + spin_lock(&info->info_lock); + + switch (origin) { + case 0: /* SEEK_SET - No-op just do it */ + break; + case 1: /* SEEK_CUR - Seek from current */ + offset = file->f_pos + offset; + break; + case 2: /* SEEK_END - Seek from end */ + offset = info->info_size + offset; + break; + } + + if (offset >= 0) { + file->f_pos = offset; + file->f_version = 0; + rc = offset; + } + + spin_unlock(&info->info_lock); + + return (rc); +} + +static struct file_operations zpios_fops = { + .owner = THIS_MODULE, + .open = zpios_open, + .release = zpios_release, + .unlocked_ioctl = zpios_unlocked_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = zpios_compat_ioctl, +#endif + .read = zpios_read, + .write = zpios_write, + .llseek = zpios_seek, +}; + +static struct miscdevice zpios_misc = { + .minor = MISC_DYNAMIC_MINOR, + .name = ZPIOS_NAME, + .fops = &zpios_fops, +}; + +#ifdef DEBUG +#define ZFS_DEBUG_STR " (DEBUG mode)" +#else +#define ZFS_DEBUG_STR "" +#endif + +static int __init +zpios_init(void) +{ + int error; + + error = misc_register(&zpios_misc); + if (error) { + printk(KERN_INFO "ZPIOS: misc_register() failed %d\n", error); + } else { + printk(KERN_INFO "ZPIOS: Loaded module v%s-%s%s\n", + ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR); + } + + return (error); +} + +static void __exit +zpios_fini(void) +{ + misc_deregister(&zpios_misc); + + printk(KERN_INFO "ZPIOS: Unloaded module v%s-%s%s\n", + ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR); +} + +module_init(zpios_init); +module_exit(zpios_fini); + +MODULE_AUTHOR("LLNL / Sun"); +MODULE_DESCRIPTION("Kernel PIOS implementation"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE); --- linux-4.4.0.orig/zfs/rpm/Makefile.in +++ linux-4.4.0/zfs/rpm/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/generic/Makefile.in +++ linux-4.4.0/zfs/rpm/generic/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/generic/zfs-dkms.spec.in +++ linux-4.4.0/zfs/rpm/generic/zfs-dkms.spec.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/generic/zfs-kmod.spec.in +++ linux-4.4.0/zfs/rpm/generic/zfs-kmod.spec.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/generic/zfs.spec.in +++ linux-4.4.0/zfs/rpm/generic/zfs.spec.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/redhat/Makefile.in +++ linux-4.4.0/zfs/rpm/redhat/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/rpm/redhat/zfs-kmod.spec.in +++ linux-4.4.0/zfs/rpm/redhat/zfs-kmod.spec.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/scripts/Makefile.in +++ linux-4.4.0/zfs/scripts/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/scripts/common.sh.in +++ linux-4.4.0/zfs/scripts/common.sh.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/scripts/zpios-profile/Makefile.in +++ linux-4.4.0/zfs/scripts/zpios-profile/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/scripts/zpios-test/Makefile.in +++ linux-4.4.0/zfs/scripts/zpios-test/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/scripts/zpool-config/Makefile.in +++ linux-4.4.0/zfs/scripts/zpool-config/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/udev/Makefile.in +++ linux-4.4.0/zfs/udev/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/udev/rules.d/60-zvol.rules.in +++ linux-4.4.0/zfs/udev/rules.d/60-zvol.rules.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/udev/rules.d/69-vdev.rules.in +++ linux-4.4.0/zfs/udev/rules.d/69-vdev.rules.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/udev/rules.d/90-zfs.rules.in +++ linux-4.4.0/zfs/udev/rules.d/90-zfs.rules.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/udev/rules.d/Makefile.in +++ linux-4.4.0/zfs/udev/rules.d/Makefile.in @@ -0,0 +1,2 @@ +%: + # --- linux-4.4.0.orig/zfs/zfs-script-config.sh.in +++ linux-4.4.0/zfs/zfs-script-config.sh.in @@ -0,0 +1,66 @@ +#!/bin/bash + +KERNELSRC=@LINUX@ +KERNELBUILD=@LINUX_OBJ@ +KERNELSRCVER=@LINUX_VERSION@ +KERNELMOD=/lib/modules/${KERNELSRCVER}/kernel + +SPLSRC=@SPL@ +SPLBUILD=@SPL_OBJ@ +SPLSRCVER=@SPL_VERSION@ + +SRCDIR=@abs_top_srcdir@ +BUILDDIR=@abs_top_builddir@ +LIBDIR=${BUILDDIR}/lib +CMDDIR=${BUILDDIR}/cmd +MODDIR=${BUILDDIR}/module +SCRIPTDIR=${BUILDDIR}/scripts +ZPOOLDIR=${BUILDDIR}/scripts/zpool-config +ZPIOSDIR=${BUILDDIR}/scripts/zpios-test +ZPIOSPROFILEDIR=${BUILDDIR}/scripts/zpios-profile +ETCDIR=${SRCDIR}/etc + +ZDB=${CMDDIR}/zdb/zdb +ZFS=${CMDDIR}/zfs/zfs +ZINJECT=${CMDDIR}/zinject/zinject +ZPOOL=${CMDDIR}/zpool/zpool +ZTEST=${CMDDIR}/ztest/ztest +ZPIOS=${CMDDIR}/zpios/zpios + +COMMON_SH=${SCRIPTDIR}/common.sh +ZFS_SH=${SCRIPTDIR}/zfs.sh +ZPOOL_CREATE_SH=${SCRIPTDIR}/zpool-create.sh +ZPIOS_SH=${SCRIPTDIR}/zpios.sh +ZPIOS_SURVEY_SH=${SCRIPTDIR}/zpios-survey.sh + +INTREE=1 +LDMOD=/sbin/insmod + +ZED_PIDFILE=@runstatedir@/zed.pid + +KERNEL_MODULES=( \ + ${KERNELMOD}/lib/zlib_deflate/zlib_deflate.ko \ + ${KERNELMOD}/lib/zlib_inflate/zlib_inflate.ko \ +) + +SPL_MODULES=( \ + ${SPLBUILD}/module/spl/spl.ko \ + ${SPLBUILD}/module/splat/splat.ko \ +) + +ZFS_MODULES=( \ + ${MODDIR}/avl/zavl.ko \ + ${MODDIR}/nvpair/znvpair.ko \ + ${MODDIR}/unicode/zunicode.ko \ + ${MODDIR}/zcommon/zcommon.ko \ + ${MODDIR}/zfs/zfs.ko \ +) + +ZPIOS_MODULES=( \ + ${MODDIR}/zpios/zpios.ko \ +) + +MODULES=( \ + ${SPL_MODULES[*]} \ + ${ZFS_MODULES[*]} \ +) --- linux-4.4.0.orig/zfs/zfs.release.in +++ linux-4.4.0/zfs/zfs.release.in @@ -0,0 +1 @@ +@ZFS_META_VERSION@-@ZFS_META_RELEASE@ --- linux-4.4.0.orig/zfs/zfs_config.h.in +++ linux-4.4.0/zfs/zfs_config.h.in @@ -0,0 +1,428 @@ +/* zfs_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 to enabled dmu tx validation */ +#undef DEBUG_DMU_TX + +/* bio_end_io_t wants 1 arg */ +#undef HAVE_1ARG_BIO_END_IO_T + +/* invalidate_bdev() wants 1 arg */ +#undef HAVE_1ARG_INVALIDATE_BDEV + +/* kmap_atomic wants 1 args */ +#undef HAVE_1ARG_KMAP_ATOMIC + +/* bdi_setup_and_register() wants 2 args */ +#undef HAVE_2ARGS_BDI_SETUP_AND_REGISTER + +/* bdi_setup_and_register() wants 3 args */ +#undef HAVE_3ARGS_BDI_SETUP_AND_REGISTER + +/* blkdev_get() wants 3 args */ +#undef HAVE_3ARG_BLKDEV_GET + +/* sget() wants 5 args */ +#undef HAVE_5ARG_SGET + +/* security_inode_init_security wants 6 args */ +#undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY + +/* dops->automount() exists */ +#undef HAVE_AUTOMOUNT + +/* struct block_device_operations use bdevs */ +#undef HAVE_BDEV_BLOCK_DEVICE_OPERATIONS + +/* bdev_logical_block_size() is available */ +#undef HAVE_BDEV_LOGICAL_BLOCK_SIZE + +/* bdev_physical_block_size() is available */ +#undef HAVE_BDEV_PHYSICAL_BLOCK_SIZE + +/* bio has bi_iter */ +#undef HAVE_BIO_BVEC_ITER + +/* BIO_RW_BARRIER is defined */ +#undef HAVE_BIO_RW_BARRIER + +/* BIO_RW_DISCARD is defined */ +#undef HAVE_BIO_RW_DISCARD + +/* BIO_RW_FAILFAST_* are defined */ +#undef HAVE_BIO_RW_FAILFAST_DTD + +/* blkdev_get_by_path() is available */ +#undef HAVE_BLKDEV_GET_BY_PATH + +/* blk_queue_flush() is available */ +#undef HAVE_BLK_QUEUE_FLUSH + +/* blk_queue_flush() is GPL-only */ +#undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY + +/* blk_queue_max_hw_sectors() is available */ +#undef HAVE_BLK_QUEUE_MAX_HW_SECTORS + +/* blk_queue_max_segments() is available */ +#undef HAVE_BLK_QUEUE_MAX_SEGMENTS + +/* struct block_device_operations.release returns void */ +#undef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID + +/* security_inode_init_security wants callback */ +#undef HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY + +/* iops->check_acl() exists */ +#undef HAVE_CHECK_ACL + +/* iops->check_acl() wants flags */ +#undef HAVE_CHECK_ACL_WITH_FLAGS + +/* check_disk_size_change() is available */ +#undef HAVE_CHECK_DISK_SIZE_CHANGE + +/* clear_inode() is available */ +#undef HAVE_CLEAR_INODE + +/* eops->commit_metadata() exists */ +#undef HAVE_COMMIT_METADATA + +/* dentry uses const struct dentry_operations */ +#undef HAVE_CONST_DENTRY_OPERATIONS + +/* super_block uses const struct xattr_hander */ +#undef HAVE_CONST_XATTR_HANDLER + +/* iops->create() passes nameidata */ +#undef HAVE_CREATE_NAMEIDATA + +/* current->bio_list exists */ +#undef HAVE_CURRENT_BIO_LIST + +/* current->bio_tail exists */ +#undef HAVE_CURRENT_BIO_TAIL + +/* current_umask() exists */ +#undef HAVE_CURRENT_UMASK + +/* DECLARE_EVENT_CLASS() is available */ +#undef HAVE_DECLARE_EVENT_CLASS + +/* xattr_handler->get() wants dentry */ +#undef HAVE_DENTRY_XATTR_GET + +/* xattr_handler->list() wants dentry */ +#undef HAVE_DENTRY_XATTR_LIST + +/* xattr_handler->set() wants dentry */ +#undef HAVE_DENTRY_XATTR_SET + +/* sops->dirty_inode() wants flags */ +#undef HAVE_DIRTY_INODE_WITH_FLAGS + +/* ql->discard_granularity is available */ +#undef HAVE_DISCARD_GRANULARITY + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* d_make_root() is available */ +#undef HAVE_D_MAKE_ROOT + +/* d_obtain_alias() is available */ +#undef HAVE_D_OBTAIN_ALIAS + +/* d_prune_aliases() is available */ +#undef HAVE_D_PRUNE_ALIASES + +/* dops->d_revalidate() operation takes nameidata */ +#undef HAVE_D_REVALIDATE_NAMEIDATA + +/* d_set_d_op() is available */ +#undef HAVE_D_SET_D_OP + +/* elevator_change() is available */ +#undef HAVE_ELEVATOR_CHANGE + +/* eops->encode_fh() wants child and parent inodes */ +#undef HAVE_ENCODE_FH_WITH_INODE + +/* sops->evict_inode() exists */ +#undef HAVE_EVICT_INODE + +/* fops->fallocate() exists */ +#undef HAVE_FILE_FALLOCATE + +/* file_inode() is available */ +#undef HAVE_FILE_INODE + +/* kernel defines fmode_t */ +#undef HAVE_FMODE_T + +/* follow_down_one() is available */ +#undef HAVE_FOLLOW_DOWN_ONE + +/* iops->follow_link() nameidata */ +#undef HAVE_FOLLOW_LINK_NAMEIDATA + +/* sops->free_cached_objects() exists */ +#undef HAVE_FREE_CACHED_OBJECTS + +/* fops->fsync() with range */ +#undef HAVE_FSYNC_RANGE + +/* fops->fsync() without dentry */ +#undef HAVE_FSYNC_WITHOUT_DENTRY + +/* fops->fsync() with dentry */ +#undef HAVE_FSYNC_WITH_DENTRY + +/* generic_start_io_acct()/generic_end_io_acct() avaliable */ +#undef HAVE_GENERIC_IO_ACCT + +/* iops->get_acl() exists */ +#undef HAVE_GET_ACL + +/* blk_disk_ro() is available */ +#undef HAVE_GET_DISK_RO + +/* get_gendisk() is available */ +#undef HAVE_GET_GENDISK + +/* xattr_handler->get() wants xattr_handler */ +#undef HAVE_HANDLER_XATTR_GET + +/* xattr_handler->list() wants xattr_handler */ +#undef HAVE_HANDLER_XATTR_LIST + +/* xattr_handler->set() wants xattr_handler */ +#undef HAVE_HANDLER_XATTR_SET + +/* fops->fallocate() exists */ +#undef HAVE_INODE_FALLOCATE + +/* inode_owner_or_capable() exists */ +#undef HAVE_INODE_OWNER_OR_CAPABLE + +/* iops->truncate_range() exists */ +#undef HAVE_INODE_TRUNCATE_RANGE + +/* insert_inode_locked() is available */ +#undef HAVE_INSERT_INODE_LOCKED + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* is_owner_or_cap() exists */ +#undef HAVE_IS_OWNER_OR_CAP + +/* kernel defines KOBJ_NAME_LEN */ +#undef HAVE_KOBJ_NAME_LEN + +/* Define if you have libblkid */ +#undef HAVE_LIBBLKID + +/* Define if you have libuuid */ +#undef HAVE_LIBUUID + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* lookup_bdev() is available */ +#undef HAVE_LOOKUP_BDEV + +/* iops->lookup() passes nameidata */ +#undef HAVE_LOOKUP_NAMEIDATA + +/* lseek_execute() is available */ +#undef HAVE_LSEEK_EXECUTE + +/* Noting that make_request_fn() returns int */ +#undef HAVE_MAKE_REQUEST_FN_RET_INT + +/* Noting that make_request_fn() returns blk_qc_t */ +#undef HAVE_MAKE_REQUEST_FN_RET_QC + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* iops->create()/mkdir()/mknod() take umode_t */ +#undef HAVE_MKDIR_UMODE_T + +/* Define to 1 if you have the `mlockall' function. */ +#undef HAVE_MLOCKALL + +/* mount_nodev() is available */ +#undef HAVE_MOUNT_NODEV + +/* sops->nr_cached_objects() exists */ +#undef HAVE_NR_CACHED_OBJECTS + +/* open_bdev_exclusive() is available */ +#undef HAVE_OPEN_BDEV_EXCLUSIVE + +/* iops->permission() exists */ +#undef HAVE_PERMISSION + +/* iops->permission() with nameidata exists */ +#undef HAVE_PERMISSION_WITH_NAMEIDATA + +/* inode contains i_acl and i_default_acl */ +#undef HAVE_POSIX_ACL_CACHING + +/* posix_acl_chmod() exists */ +#undef HAVE_POSIX_ACL_CHMOD + +/* posix_acl_equiv_mode wants umode_t* */ +#undef HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T + +/* posix_acl_from_xattr() needs user_ns */ +#undef HAVE_POSIX_ACL_FROM_XATTR_USERNS + +/* posix_acl_release() is available */ +#undef HAVE_POSIX_ACL_RELEASE + +/* posix_acl_release() is GPL-only */ +#undef HAVE_POSIX_ACL_RELEASE_GPL_ONLY + +/* iops->put_link() nameidata */ +#undef HAVE_PUT_LINK_NAMEIDATA + +/* REQ_FAILFAST_MASK is defined */ +#undef HAVE_REQ_FAILFAST_MASK + +/* set_nlink() is available */ +#undef HAVE_SET_NLINK + +/* sops->show_options() with dentry */ +#undef HAVE_SHOW_OPTIONS_WITH_DENTRY + +/* struct super_block has s_shrink */ +#undef HAVE_SHRINK + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* struct super_block has s_d_op */ +#undef HAVE_S_D_OP + +/* struct super_block has s_instances list_head */ +#undef HAVE_S_INSTANCES_LIST_HEAD + +/* truncate_setsize() is available */ +#undef HAVE_TRUNCATE_SETSIZE + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* fops->iterate() is available */ +#undef HAVE_VFS_ITERATE + +/* fops->readdir() is available */ +#undef HAVE_VFS_READDIR + +/* fops->read/write_iter() are available */ +#undef HAVE_VFS_RW_ITERATE + +/* Define if you have zlib */ +#undef HAVE_ZLIB + +/* __posix_acl_chmod() exists */ +#undef HAVE___POSIX_ACL_CHMOD + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* make_request_fn() returns blk_qc_t */ +#undef MAKE_REQUEST_FN_RET + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* struct shrink_control has nid */ +#undef SHRINK_CONTROL_HAS_NID + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* zfs debugging enabled */ +#undef ZFS_DEBUG + +/* Define to 1 if GPL-only symbols can be used */ +#undef ZFS_IS_GPL_COMPATIBLE + +/* Define the project alias string. */ +#undef ZFS_META_ALIAS + +/* Define the project author. */ +#undef ZFS_META_AUTHOR + +/* Define the project release date. */ +#undef ZFS_META_DATA + +/* Define the project license. */ +#undef ZFS_META_LICENSE + +/* Define the libtool library 'age' version information. */ +#undef ZFS_META_LT_AGE + +/* Define the libtool library 'current' version information. */ +#undef ZFS_META_LT_CURRENT + +/* Define the libtool library 'revision' version information. */ +#undef ZFS_META_LT_REVISION + +/* Define the project name. */ +#undef ZFS_META_NAME + +/* Define the project release. */ +#undef ZFS_META_RELEASE + +/* Define the project version. */ +#undef ZFS_META_VERSION + + +#undef PACKAGE +#undef PACKAGE_BUGREPORT +#undef PACKAGE_NAME +#undef PACKAGE_STRING +#undef PACKAGE_TARNAME +#undef PACKAGE_VERSION +#undef STDC_HEADERS +#undef VERSION